diff --git a/.vs/launch.vs.json b/.vs/launch.vs.json index e884e07347..be17fb24ee 100644 --- a/.vs/launch.vs.json +++ b/.vs/launch.vs.json @@ -7,42 +7,58 @@ "project": "CMakeLists.txt", "projectTarget": "goalc-test.exe (bin\\goalc-test.exe)", "name": "Tests - Unit-Tests - Summary", - "args": ["--gtest_brief=1"] + "args": [ + "--gtest_brief=1" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "goalc-test.exe (bin\\goalc-test.exe)", "name": "Tests - Unit-Tests - Verbose", - "args": ["--gtest_brief=0"] + "args": [ + "--gtest_brief=0" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "goalc-test.exe (bin\\goalc-test.exe)", "name": "Tests - Draft Tests - Verbose", - "args": ["--gtest_brief=0", "--gtest_filter=\"*Draft*\""] + "args": [ + "--gtest_brief=0", + "--gtest_filter=\"*Draft*\"" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "goalc-test.exe (bin\\goalc-test.exe)", "name": "Tests - TypeConsistency - Verbose", - "args": ["--gtest_brief=0", "--gtest_filter=\"*TypeConsistency*\""] + "args": [ + "--gtest_brief=0", + "--gtest_filter=\"*TypeConsistency*\"" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "goalc-test.exe (bin\\goalc-test.exe)", "name": "Tests - TypeConsistency - Jak 2 - Verbose", - "args": ["--gtest_brief=0", "--gtest_filter=\"*Jak2TypeConsistency*\""] + "args": [ + "--gtest_brief=0", + "--gtest_filter=\"*Jak2TypeConsistency*\"" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "goalc-test.exe (bin\\goalc-test.exe)", "name": "Tests - WithGameTests - Verbose", - "args": ["--gtest_brief=0", "--gtest_filter=\"*WithGameTests*\""] + "args": [ + "--gtest_brief=0", + "--gtest_filter=\"*WithGameTests*\"" + ] }, { "type": "default", @@ -113,56 +129,110 @@ "project": "CMakeLists.txt", "projectTarget": "gk.exe (bin\\gk.exe)", "name": "Game - Jak 1 - Runtime", - "args": ["-v", "--game", "jak1", "--", "-fakeiso", "-debug"] + "args": [ + "-v", + "--game", + "jak1", + "--", + "-fakeiso", + "-debug" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "gk.exe (bin\\gk.exe)", "name": "Game - Jak 1 - Runtime (boot)", - "args": ["-v", "--game", "jak1", "--", "-boot", "-fakeiso", "-debug"] + "args": [ + "-v", + "--portable", + "--game", + "jak1", + "--", + "-boot", + "-fakeiso", + "-debug" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "gk.exe (bin\\gk.exe)", "name": "Game - Jak 2 - Runtime (no boot)", - "args": ["-v", "--game", "jak2", "--", "-fakeiso", "-debug"] + "args": [ + "-v", + "--game", + "jak2", + "--", + "-fakeiso", + "-debug" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "gk.exe (bin\\gk.exe)", "name": "Game - Jak 2 - Runtime (boot)", - "args": ["-v", "--game", "jak2", "--", "-boot", "-fakeiso", "-debug"] + "args": [ + "-v", + "--game", + "jak2", + "--", + "-boot", + "-fakeiso", + "-debug" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "gk.exe (bin\\gk.exe)", "name": "Game - Jak 2 - Runtime (release)", - "args": ["-v", "--game", "jak2", "--", "-boot", "-fakeiso"] + "args": [ + "-v", + "--game", + "jak2", + "--", + "-boot", + "-fakeiso" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "gk.exe (bin\\gk.exe)", "name": "Game - Jak 3 - Runtime (boot)", - "args": ["-v", "--game", "jak3", "--", "-boot", "-fakeiso", "-debug"] + "args": [ + "-v", + "--game", + "jak3", + "--", + "-boot", + "-fakeiso", + "-debug" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "goalc.exe (bin\\goalc.exe)", "name": "REPL - Jak 1", - "args": ["--user-auto", "--game", "jak1"] + "args": [ + "--user-auto", + "--game", + "jak1" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "goalc.exe (bin\\goalc.exe)", "name": "REPL - Jak 2", - "args": ["--user-auto", "--game", "jak2"] + "args": [ + "--user-auto", + "--game", + "jak2" + ] }, { "type": "default", @@ -262,14 +332,26 @@ "project": "CMakeLists.txt", "projectTarget": "memory_dump_tool.exe (bin\\memory_dump_tool.exe)", "name": "Tools - EE Memory Analyze - Jak 1", - "args": ["\"${workspaceRoot}/eeMemory.bin\"", "--output-path", "\"${workspaceRoot}\"", "--game", "jak1"] + "args": [ + "\"${workspaceRoot}/eeMemory.bin\"", + "--output-path", + "\"${workspaceRoot}\"", + "--game", + "jak1" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "memory_dump_tool.exe (bin\\memory_dump_tool.exe)", "name": "Tools - EE Memory Analyze - Jak 2", - "args": ["\"${workspaceRoot}/eeMemory.bin\"", "--output-path", "\"${workspaceRoot}\"", "--game", "jak2"] + "args": [ + "\"${workspaceRoot}/eeMemory.bin\"", + "--output-path", + "\"${workspaceRoot}\"", + "--game", + "jak2" + ] }, { "type": "default", @@ -286,35 +368,53 @@ "project": "CMakeLists.txt", "projectTarget": "extractor.exe (bin\\extractor.exe)", "name": "Tools - Extractor - Full", - "args": ["\"E:\\ISOs\\Jak\\Jak 1.iso\""] + "args": [ + "\"E:\\ISOs\\Jak\\Jak 1.iso\"" + ] }, { - "type" : "default", - "project" : "CMakeLists.txt", - "projectTarget" : "lsp.exe (bin\\lsp.exe)", - "name" : "Tools - LSP", - "args" : [] + "type": "default", + "project": "CMakeLists.txt", + "projectTarget": "lsp.exe (bin\\lsp.exe)", + "name": "Tools - LSP", + "args": [] }, { - "type" : "default", - "project" : "CMakeLists.txt", - "projectTarget" : "type_searcher.exe (bin\\type_searcher.exe)", - "name" : "Tools - Type Searcher", - "args" : ["--game", "jak2", "--output-path", "./search-results.json", "--size", 255, "--fields", "[{\\\"type\\\":\\\"quaternion\\\",\\\"offset\\\":48}]"] + "type": "default", + "project": "CMakeLists.txt", + "projectTarget": "type_searcher.exe (bin\\type_searcher.exe)", + "name": "Tools - Type Searcher", + "args": [ + "--game", + "jak2", + "--output-path", + "./search-results.json", + "--size", + 255, + "--fields", + "[{\\\"type\\\":\\\"quaternion\\\",\\\"offset\\\":48}]" + ] }, { - "type" : "default", - "project" : "CMakeLists.txt", - "projectTarget" : "formatter.exe (bin\\formatter.exe)", - "name" : "Tools - Formatter - Inplace", - "args" : ["--write", "--file", "C:\\Users\\xtvas\\Repos\\opengoal\\jak-project\\decompiler_out\\jak3\\mood-h_disasm.gc"] + "type": "default", + "project": "CMakeLists.txt", + "projectTarget": "formatter.exe (bin\\formatter.exe)", + "name": "Tools - Formatter - Inplace", + "args": [ + "--write", + "--file", + "C:\\Users\\xtvas\\Repositories\\opengoal\\jak-project\\goal_src\\jak1\\engine\\camera\\cam-states.gc" + ] }, { "type": "default", "project": "CMakeLists.txt", "projectTarget": "goalc-test.exe (bin\\goalc-test.exe)", "name": "Tests - Formatter", - "args": ["--gtest_brief=0", "--gtest_filter=\"*FormatterTests*\""] + "args": [ + "--gtest_brief=0", + "--gtest_filter=\"*FormatterTests*\"" + ] } ] -} +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index e493f71666..a5b8280bfc 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,10 +8,10 @@ "name": "run python script", "type": "python", "request": "launch", - "program": "${workspaceFolder}/scripts/gsrc/copy-common-naming.py", + "program": "${workspaceFolder}/scripts/gsrc/compare-compilation-outputs.py", "console": "integratedTerminal", "cwd": "${workspaceFolder}", - "args": ["--update-names-from-refs", "--decompiler", "./out/build/Release/bin/decompiler"] + "args": [] }, ] } diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index caba17a241..69c86b5216 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -51,7 +51,7 @@ add_library(common repl/config.cpp repl/nrepl/ReplClient.cpp repl/nrepl/ReplServer.cpp - repl/util.cpp + repl/repl_wrapper.cpp serialization/subtitles/subtitles_v1.cpp serialization/subtitles/subtitles_v2.cpp serialization/subtitles/subtitles.cpp diff --git a/common/cross_sockets/XSocketClient.cpp b/common/cross_sockets/XSocketClient.cpp index 0c6c791e0b..57d01eeffa 100644 --- a/common/cross_sockets/XSocketClient.cpp +++ b/common/cross_sockets/XSocketClient.cpp @@ -5,6 +5,8 @@ #include "common/cross_sockets/XSocket.h" #include "common/log/log.h" +#include "fmt/core.h" + // clang-format off #ifdef _WIN32 #define NOMINMAX @@ -13,9 +15,7 @@ #include #include #endif -#include "common/repl/nrepl/ReplServer.h" -#include "fmt/core.h" // clang-format on XSocketClient::XSocketClient(int _tcp_port) { diff --git a/common/cross_sockets/XSocketServer.cpp b/common/cross_sockets/XSocketServer.cpp index 8c83ca2b47..bd563b91d1 100644 --- a/common/cross_sockets/XSocketServer.cpp +++ b/common/cross_sockets/XSocketServer.cpp @@ -35,7 +35,7 @@ void XSocketServer::shutdown_server() { close_server_socket(); } -bool XSocketServer::init_server() { +bool XSocketServer::init_server(bool failure_may_occur) { listening_socket = open_socket(AF_INET, SOCK_STREAM, 0); if (listening_socket < 0) { listening_socket = -1; @@ -76,19 +76,27 @@ bool XSocketServer::init_server() { addr.sin_port = htons(tcp_port); if (bind(listening_socket, (sockaddr*)&addr, sizeof(addr)) < 0) { - lg::error("[XSocketServer:{}] failed to bind", tcp_port); + if (failure_may_occur) { + lg::debug("[XSocketServer:{}] failed to bind", tcp_port); + } else { + lg::error("[XSocketServer:{}] failed to bind", tcp_port); + } close_server_socket(); return false; } if (listen(listening_socket, 0) < 0) { - lg::error("[XSocketServer:{}] failed to listen", tcp_port); + if (failure_may_occur) { + lg::debug("[XSocketServer:{}] failed to listen", tcp_port); + } else { + lg::error("[XSocketServer:{}] failed to listen", tcp_port); + } close_server_socket(); return false; } server_initialized = true; - lg::info("[XSocketServer:{}] initialized", tcp_port); + lg::debug("[XSocketServer:{}] initialized", tcp_port); post_init(); return true; } diff --git a/common/cross_sockets/XSocketServer.h b/common/cross_sockets/XSocketServer.h index 495868c3c9..bcb1660b53 100644 --- a/common/cross_sockets/XSocketServer.h +++ b/common/cross_sockets/XSocketServer.h @@ -20,7 +20,7 @@ class XSocketServer { XSocketServer(const XSocketServer&) = delete; XSocketServer& operator=(const XSocketServer&) = delete; - bool init_server(); + bool init_server(bool failure_may_occur = false); void shutdown_server(); void close_server_socket(); diff --git a/common/custom_data/TFrag3Data.cpp b/common/custom_data/TFrag3Data.cpp index c42003e3f4..e50365ad30 100644 --- a/common/custom_data/TFrag3Data.cpp +++ b/common/custom_data/TFrag3Data.cpp @@ -492,6 +492,7 @@ void MercDraw::serialize(Serializer& ser) { ser.from_ptr(&first_index); ser.from_ptr(&index_count); ser.from_ptr(&num_triangles); + ser.from_ptr(&no_strip); } void Blerc::serialize(Serializer& ser) { diff --git a/common/custom_data/Tfrag3Data.h b/common/custom_data/Tfrag3Data.h index bd951e7e88..35d27f01a1 100644 --- a/common/custom_data/Tfrag3Data.h +++ b/common/custom_data/Tfrag3Data.h @@ -18,7 +18,7 @@ namespace tfrag3 { // - if changing any large things (vertices, vis, bvh, colors, textures) update get_memory_usage // - if adding a new category to the memory usage, update extract_level to print it. -constexpr int TFRAG3_VERSION = 40; +constexpr int TFRAG3_VERSION = 41; enum MemoryUsageCategory { TEXTURE, @@ -530,6 +530,8 @@ struct MercDraw { u32 first_index; u32 index_count; u32 num_triangles; + // no strip hack for custom models + bool no_strip = false; void serialize(Serializer& ser); }; diff --git a/common/formatter/README.md b/common/formatter/README.md index 3664753d52..ddbd862daf 100644 --- a/common/formatter/README.md +++ b/common/formatter/README.md @@ -12,7 +12,6 @@ Also in general I found it _really_ hard to find modern and easy to understand a Atleast for me, it helps to understand the path code takes as it flows through the formatting process. Originally I tried to do as much at once for sake of efficiency but this just makes things incredibly hard to reason about and fix bugs. So like any problem that is complex, break it down, the formatter goes through many distinct phases chipping away at the problem: ```mermaid -%%{init: {'theme': 'dark', "flowchart" : { "curve" : "basis" } } }%% flowchart TB subgraph top1 [Build a Formatting Tree] direction TB diff --git a/common/formatter/formatter.cpp b/common/formatter/formatter.cpp index 5aa0205b7e..30353ff597 100644 --- a/common/formatter/formatter.cpp +++ b/common/formatter/formatter.cpp @@ -33,14 +33,16 @@ int hang_indentation_width(const FormatterTreeNode& curr_node) { return 1 + hang_indentation_width(first_elt); } -// TODO - this doesn't account for paren's width contribution! int get_total_form_inlined_width(const FormatterTreeNode& curr_node) { if (curr_node.token) { return curr_node.token->length(); } int width = 1; - for (const auto& ref : curr_node.refs) { - width += get_total_form_inlined_width(ref); + for (int i = 0; i < curr_node.refs.size(); i++) { + width += get_total_form_inlined_width(curr_node.refs.at(i)); + if (i != curr_node.refs.size() - 1) { + width += 1; // add the space between elements + } } return width + 1; } @@ -49,7 +51,9 @@ int get_total_form_inlined_width(const FormatterTreeNode& curr_node) { void apply_formatting_config( FormatterTreeNode& curr_node, std::optional> - config_from_parent = {}) { + config_from_parent = {}, + std::optional> + config_merge_from_parent = {}) { using namespace formatter_rules; // node is empty, base-case if (curr_node.token || curr_node.refs.empty()) { @@ -65,6 +69,13 @@ void apply_formatting_config( predefined_config = config::opengoal_form_config.at(form_head.value()); curr_node.formatting_config = predefined_config.value(); } + + if (config_merge_from_parent) { + const auto& merge_config = *config_merge_from_parent.value(); + curr_node.formatting_config.parent_mutable_extra_indent += + merge_config.parent_mutable_extra_indent; + curr_node.formatting_config.prevent_inlining = merge_config.prevent_inlining; + } } else if (config_from_parent) { // TODO - doesn't merge just replaces, a bit inflexible predefined_config = *config_from_parent.value(); @@ -104,7 +115,7 @@ void apply_formatting_config( if (curr_node.formatting_config.has_constant_pairs) { for (int i = 0; i < (int)curr_node.refs.size(); i++) { auto& child_ref = curr_node.refs.at(i); - const auto type = child_ref.metadata.node_type; + const auto& type = child_ref.metadata.node_type; if (constant_types.find(type) == constant_types.end() && constant_pairs::is_element_second_in_constant_pair(curr_node, child_ref, i)) { child_ref.formatting_config.parent_mutable_extra_indent = 2; @@ -129,13 +140,16 @@ void apply_formatting_config( auto& ref = curr_node.refs.at(i); if (!ref.token) { // If the child has a pre-defined configuration at that index, we pass it along - if (predefined_config && - predefined_config->index_configs.find(i) != predefined_config->index_configs.end()) { - apply_formatting_config(ref, predefined_config->index_configs.at(i)); + if (predefined_config && predefined_config->index_config_override.find(i) != + predefined_config->index_config_override.end()) { + apply_formatting_config(ref, {}, predefined_config->index_config_override.at(i)); + } else if (predefined_config && predefined_config->index_configs.find(i) != + predefined_config->index_configs.end()) { + apply_formatting_config(ref, predefined_config->index_configs.at(i), {}); } else if (predefined_config && predefined_config->default_index_config) { - apply_formatting_config(ref, predefined_config->default_index_config); + apply_formatting_config(ref, predefined_config->default_index_config, {}); } else { - apply_formatting_config(ref); + apply_formatting_config(ref, {}, {}); } } } @@ -151,10 +165,27 @@ void apply_formatting_config( max_columns = field.refs.size(); } } + // if only one field has a value in the max col position, it looks weird for it to be indented + bool ignore_final_column_width = true; + int fields_with_atleast_max_col = 0; + for (const auto& field : curr_node.refs) { + if ((int)field.refs.size() == max_columns) { + fields_with_atleast_max_col++; + if (fields_with_atleast_max_col > 1) { + ignore_final_column_width = false; + break; + } + } + } // Now find the column max widths std::vector column_max_widths = {}; for (int col = 0; col < max_columns; col++) { column_max_widths.push_back(0); + // -2 because its the indentation before the final column that we want to skip + if (col >= curr_node.formatting_config.num_columns_to_compute_widths || + (ignore_final_column_width && col == max_columns - 2)) { + continue; + } for (const auto& field : curr_node.refs) { if ((int)field.refs.size() > col) { const auto width = get_total_form_inlined_width(field.refs.at(col)); @@ -202,6 +233,10 @@ bool form_contains_node_that_prevents_inlining(const FormatterTreeNode& curr_nod bool can_node_be_inlined(const FormatterTreeNode& curr_node, int cursor_pos) { using namespace formatter_rules; if (curr_node.formatting_config.force_inline) { + // Ensure there are no comments, this still trumps this + if (form_contains_comment(curr_node)) { + return false; + } return true; } // First off, we cannot inline the top level @@ -264,13 +299,15 @@ std::vector apply_formatting(const FormatterTreeNode& curr_node, // Add new line entry if (ref.token) { // Cleanup block-comments - std::string val = ref.token_str(); if (ref.metadata.node_type == "block_comment") { - // TODO - change this sanitization to return a list of lines instead of a single new-lined - // line - val = comments::format_block_comment(ref.token_str()); + const auto comment_lines = comments::format_block_comment(ref.token_str()); + for (const auto& line : comment_lines) { + form_lines.push_back(line); + } + } else { + form_lines.push_back(ref.token_str()); } - form_lines.push_back(val); + if (!curr_node.metadata.is_top_level && i == (int)curr_node.refs.size() - 1 && (ref.metadata.is_comment)) { // if there's an inline comment at the end of a form, we have to force the paren to the next @@ -292,26 +329,41 @@ std::vector apply_formatting(const FormatterTreeNode& curr_node, if (i == (int)curr_node.refs.size() - 1 && form_lines.size() > 1 && (curr_node.formatting_config.hang_forms || curr_node.formatting_config.combine_first_two_lines)) { - form_lines.at(0) += fmt::format(" {}", form_lines.at(1)); + form_lines.at(0) += fmt::format(" {}", str_util::ltrim(form_lines.at(1))); form_lines.erase(form_lines.begin() + 1); } else if ((i + 1) < (int)curr_node.refs.size()) { const auto& next_ref = curr_node.refs.at(i + 1); // combine the next inline comment or constant pair if ((next_ref.metadata.node_type == "comment" && next_ref.metadata.is_inline) || (curr_node.formatting_config.has_constant_pairs && - constant_pairs::is_element_second_in_constant_pair(curr_node, next_ref, i + 1))) { + constant_pairs::is_element_second_in_constant_pair(curr_node, next_ref, i + 1)) || + constant_pairs::is_element_second_in_constant_pair_new(curr_node.refs.at(i), next_ref)) { // TODO // has issues with not consolidating first lines, this should probably just be moved to // outside this loop for simplicity, do it later if (next_ref.token) { - form_lines.at(form_lines.size() - 1) += fmt::format(" {}", next_ref.token.value()); + form_lines.at(form_lines.size() - 1) += fmt::format(" {}", next_ref.token_str()); i++; + // We have to handle hang-consolidation here or else it will never be reached above! + if (i == (int)curr_node.refs.size() - 1 && form_lines.size() > 1 && + (curr_node.formatting_config.hang_forms || + curr_node.formatting_config.combine_first_two_lines)) { + form_lines.at(0) += fmt::format(" {}", form_lines.at(1)); + form_lines.erase(form_lines.begin() + 1); + } } else if (can_node_be_inlined(next_ref, cursor_pos)) { const auto& lines = apply_formatting(next_ref, {}, cursor_pos); // TODO - cursor pos for (const auto& line : lines) { form_lines.at(form_lines.size() - 1) += fmt::format(" {}", line); } i++; + // We have to handle hang-consolidation here or else it will never be reached above! + if (i == (int)curr_node.refs.size() - 1 && form_lines.size() > 1 && + (curr_node.formatting_config.hang_forms || + curr_node.formatting_config.combine_first_two_lines)) { + form_lines.at(0) += fmt::format(" {}", form_lines.at(1)); + form_lines.erase(form_lines.begin() + 1); + } } if (!curr_node.metadata.is_top_level && next_ref.metadata.node_type == "comment" && (i + 1) == (int)curr_node.refs.size()) { @@ -328,7 +380,9 @@ std::vector apply_formatting(const FormatterTreeNode& curr_node, // Consolidate any lines if the configuration requires it // TODO there is a hack here so that multi-line forms that are consolidated still line up properly // i have to make consolidate a more first-class feature of the config - if (curr_node.formatting_config.inline_until_index(form_lines)) { + // TODO - hacky, but prevents a bad situation, clean up + if (curr_node.formatting_config.inline_until_index(form_lines) && + !str_util::contains(form_lines.at(0), ";")) { std::vector new_form_lines = {}; const auto original_form_head_width = str_util::split(form_lines.at(0), '\n').at(0).length(); bool consolidating_lines = true; @@ -374,22 +428,32 @@ std::vector apply_formatting(const FormatterTreeNode& curr_node, form_lines[form_lines.size() - 1] = fmt::format("{}{}", form_lines[form_lines.size() - 1], form_surround_end); } - std::string curr_form = ""; - if (curr_node.formatting_config.parent_mutable_extra_indent > 0) { - curr_form += str_util::repeat(curr_node.formatting_config.parent_mutable_extra_indent, " "); - } if (inline_form) { - form_lines = {fmt::format("{}", fmt::join(form_lines, " "))}; + // NOTE - not sure about this, if we are inlining a form, it always makes sense to eliminate + // trailing whitespace the only issue i can foresee is related to strings that span multiple + // lines. + std::vector new_form_lines = {}; + for (const auto& form_line : form_lines) { + new_form_lines.push_back(str_util::ltrim(form_line)); + } + form_lines = {fmt::format("{}", fmt::join(new_form_lines, " "))}; } else { + bool currently_in_block_comment = false; for (int i = 0; i < (int)form_lines.size(); i++) { - if (i > 0) { - auto& line = form_lines.at(i); + auto& line = form_lines.at(i); + if (str_util::contains(line, "|#")) { + currently_in_block_comment = false; + } + if (i > 0 && !currently_in_block_comment) { line = fmt::format("{}{}", str_util::repeat(curr_node.formatting_config.indentation_width_for_index( curr_node.formatting_config, i), " "), line); } + if (str_util::contains(line, "#|") && !str_util::contains(line, "|#")) { + currently_in_block_comment = true; + } } } return form_lines; diff --git a/common/formatter/formatter_tree.cpp b/common/formatter/formatter_tree.cpp index 64e0795f85..b03f7c3e66 100644 --- a/common/formatter/formatter_tree.cpp +++ b/common/formatter/formatter_tree.cpp @@ -79,18 +79,18 @@ FormatterTree::FormatterTree(const std::string& source, const TSNode& root_node) } const std::unordered_map> node_type_ignorable_contents = { - {"list_lit", {"(", ")"}}, - {"quoting_lit", {"'"}}, - {"unquoting_lit", {","}}, - {"quasi_quoting_lit", {"`"}}}; + {"list_lit", {"(", ")"}}}; // TODO make an imperative version eventually +// TODO - cleanup duplication void FormatterTree::construct_formatter_tree_recursive(const std::string& source, TSNode curr_node, FormatterTreeNode& tree_node, std::optional node_prefix) { if (ts_node_child_count(curr_node) == 0) { - tree_node.refs.push_back(FormatterTreeNode(source, curr_node)); + auto new_node = FormatterTreeNode(source, curr_node); + new_node.node_prefix = node_prefix; + tree_node.refs.push_back(new_node); return; } const std::string curr_node_type = ts_node_type(curr_node); @@ -105,11 +105,37 @@ void FormatterTree::construct_formatter_tree_recursive(const std::string& source tree_node.refs.push_back(FormatterTreeNode(source, curr_node)); return; } else if (curr_node_type == "quoting_lit") { - next_node_prefix = "'"; + if (node_prefix) { + node_prefix.value() += "'"; + } else { + node_prefix = "'"; + } + construct_formatter_tree_recursive(source, ts_node_child(curr_node, 1), tree_node, node_prefix); + return; } else if (curr_node_type == "unquoting_lit") { - next_node_prefix = ","; + if (node_prefix) { + node_prefix.value() += ","; + } else { + node_prefix = ","; + } + construct_formatter_tree_recursive(source, ts_node_child(curr_node, 1), tree_node, node_prefix); + return; } else if (curr_node_type == "quasi_quoting_lit") { - next_node_prefix = "`"; + if (node_prefix) { + node_prefix.value() += "`"; + } else { + node_prefix = "`"; + } + construct_formatter_tree_recursive(source, ts_node_child(curr_node, 1), tree_node, node_prefix); + return; + } else if (curr_node_type == "unquote_splicing_lit") { + if (node_prefix) { + node_prefix.value() += ",@"; + } else { + node_prefix = ",@"; + } + construct_formatter_tree_recursive(source, ts_node_child(curr_node, 1), tree_node, node_prefix); + return; } std::vector skippable_nodes = {}; if (node_type_ignorable_contents.find(curr_node_type) != node_type_ignorable_contents.end()) { @@ -117,6 +143,7 @@ void FormatterTree::construct_formatter_tree_recursive(const std::string& source } for (size_t i = 0; i < ts_node_child_count(curr_node); i++) { const auto child_node = ts_node_child(curr_node, i); + auto debug_child = ts_node_string(child_node); const auto contents = get_source_code(source, child_node); bool skip_node = false; for (const auto& skippable_content : skippable_nodes) { @@ -129,19 +156,22 @@ void FormatterTree::construct_formatter_tree_recursive(const std::string& source continue; } if (curr_node_type == "list_lit") { - construct_formatter_tree_recursive(source, child_node, list_node, next_node_prefix); + construct_formatter_tree_recursive(source, child_node, list_node, {}); if (node_prefix) { list_node.node_prefix = node_prefix; } } else { - construct_formatter_tree_recursive(source, child_node, tree_node, next_node_prefix); - // TODO - im not sure if this is correct + construct_formatter_tree_recursive(source, child_node, tree_node, node_prefix); if (node_prefix && !tree_node.refs.empty()) { tree_node.refs.at(tree_node.refs.size() - 1).node_prefix = node_prefix; } } } if (curr_node_type == "list_lit") { + // special case for empty lists + if (node_prefix && !list_node.node_prefix) { + list_node.node_prefix = node_prefix; + } tree_node.refs.push_back(list_node); } } diff --git a/common/formatter/rules/formatting_rules.cpp b/common/formatter/rules/formatting_rules.cpp index b999fe16fe..ea8fc52b03 100644 --- a/common/formatter/rules/formatting_rules.cpp +++ b/common/formatter/rules/formatting_rules.cpp @@ -12,12 +12,16 @@ namespace formatter_rules { // differentiate between a quoted symbol and a quoted form const std::set constant_types = {"kwd_lit", "num_lit", "str_lit", "char_lit", "null_lit", "bool_lit"}; +const std::set constant_type_forms = {"meters", "seconds", "degrees"}; namespace constant_list { bool is_constant_list(const FormatterTreeNode& node) { if (!node.is_list() || node.refs.empty()) { return false; } + if (!node.refs.at(0).token) { + return true; + } const auto& type = node.refs.at(0).metadata.node_type; return constant_types.find(type) != constant_types.end(); } @@ -36,21 +40,28 @@ bool should_insert_blank_line(const FormatterTreeNode& containing_node, if (node.metadata.is_comment && node.metadata.num_blank_lines_following == 0) { return false; } - // If the next form is a comment and is inline, don't insert a comment + // If the next form is a comment and is inline, don't insert a new line if ((index + 1) < (int)containing_node.refs.size() && containing_node.refs.at(index + 1).metadata.is_comment && containing_node.refs.at(index + 1).metadata.is_inline) { return false; } - // TODO - only if the form doesn't fit on a single line + if (node.formatting_config.elide_top_level_newline) { + if ((index + 1) < (int)containing_node.refs.size() && + containing_node.refs.at(index + 1).metadata.is_comment) { + return true; + } + return false; + } + return true; } } // namespace blank_lines namespace comments { -std::string format_block_comment(const std::string& comment) { +std::vector format_block_comment(const std::string& comment) { // Normalize block comments, remove any trailing or leading whitespace // Only allow annotations on the first line, like #|@file // Don't mess with internal indentation as the user might intend it to be a certain way. @@ -71,12 +82,22 @@ std::string format_block_comment(const std::string& comment) { // Remove trailing whitespace comment_contents = str_util::rtrim(comment_contents); // remove |# - // TODO - check suffix - comment_contents.pop_back(); - comment_contents.pop_back(); + if (str_util::ends_with(comment_contents, "|#")) { + comment_contents.pop_back(); + comment_contents.pop_back(); + } comment_contents = str_util::rtrim(comment_contents); - new_comment += fmt::format("\n{}\n|#", comment_contents); - return new_comment; + std::vector lines = {new_comment}; + const auto contents_as_lines = str_util::split_string(comment_contents, "\n"); + if (contents_as_lines.size() > 1) { + for (const auto& line : contents_as_lines) { + lines.push_back(line); + } + lines.push_back("|#"); + } else { + lines.at(0) = fmt::format("{} {} |#", new_comment, str_util::trim(contents_as_lines.at(0))); + } + return lines; } } // namespace comments @@ -101,6 +122,46 @@ bool is_element_second_in_constant_pair(const FormatterTreeNode& containing_node return true; } +// TODO - potentially remove the above +bool is_element_second_in_constant_pair_new(const FormatterTreeNode& prev_node, + const FormatterTreeNode& curr_node) { + if (prev_node.metadata.node_type == "kwd_lit") { + // Handle standard constant types + // TODO - pair up sym_names as well + if (constant_types.find(curr_node.metadata.node_type) != constant_types.end()) { + if (curr_node.metadata.node_type != "kwd_lit") { + // NOTE - there is ambiugity here which cannot be totally solved (i think?) + // if the element itself is also a keyword, assume this is two adjacent keywords and they + // should not be paired + return true; + } + } + // Quoted symbols + if (curr_node.metadata.node_type == "sym_name" && curr_node.node_prefix && + (curr_node.node_prefix.value() == "'" || curr_node.node_prefix.value() == ",")) { + return true; + } + if (!curr_node.refs.empty()) { + // Constant forms special cases (ie. meters) + if (constant_type_forms.find(curr_node.refs.at(0).token_str()) != constant_type_forms.end()) { + return true; + } + // If they are just a list of symbol names (enum or simple method call) + bool all_symbols = true; + for (const auto& ref : curr_node.refs) { + if (ref.metadata.node_type != "sym_name") { + all_symbols = false; + break; + } + } + if (all_symbols) { + return true; + } + } + } + return false; +} + bool form_should_be_constant_paired(const FormatterTreeNode& node) { // Criteria for a list to be constant paired: // - needs to start with a non-symbol diff --git a/common/formatter/rules/formatting_rules.h b/common/formatter/rules/formatting_rules.h index 248f74e688..75ffcd7784 100644 --- a/common/formatter/rules/formatting_rules.h +++ b/common/formatter/rules/formatting_rules.h @@ -36,7 +36,7 @@ bool should_insert_blank_line(const FormatterTreeNode& containing_node, // // Reference - https://github.com/kkinnear/zprint/blob/main/doc/options/comments.md namespace comments { -std::string format_block_comment(const std::string& comment); +std::vector format_block_comment(const std::string& comment); } // Paired elements in a list will be kept in-line rather than the default new-line indentation @@ -72,6 +72,8 @@ const static int min_pair_amount = 4; bool is_element_second_in_constant_pair(const FormatterTreeNode& containing_node, const FormatterTreeNode& node, const int index); +bool is_element_second_in_constant_pair_new(const FormatterTreeNode& prev_node, + const FormatterTreeNode& curr_node); bool form_should_be_constant_paired(const FormatterTreeNode& node); } // namespace constant_pairs diff --git a/common/formatter/rules/rule_config.cpp b/common/formatter/rules/rule_config.cpp index 9fff2f5c0f..bab83cf2bf 100644 --- a/common/formatter/rules/rule_config.cpp +++ b/common/formatter/rules/rule_config.cpp @@ -1,24 +1,146 @@ #include "rule_config.h" +#include "common/util/string_util.h" + namespace formatter_rules { namespace config { +static FormFormattingConfig new_inlinable_simple_flow_rule() { + return {.config_set = true, .hang_forms = false}; +} + static FormFormattingConfig new_permissive_flow_rule() { return {.config_set = true, .hang_forms = false, .combine_first_two_lines = true}; } -static FormFormattingConfig new_flow_rule(int start_index) { +static FormFormattingConfig new_flow_rule(int start_index, bool has_constant_pairs = false) { return {.config_set = true, .hang_forms = false, - .inline_until_index = [start_index](const std::vector& /*curr_lines*/) { - return start_index; - }}; + .inline_until_index = + [start_index](const std::vector& /*curr_lines*/) { return start_index; }, + .has_constant_pairs = has_constant_pairs}; +} + +static FormFormattingConfig new_function_rule(int start_index, bool has_constant_pairs = false) { + FormFormattingConfig cfg = { + .config_set = true, + .hang_forms = false, + .inline_until_index = + [start_index](const std::vector& /*curr_lines*/) { return start_index; }, + .has_constant_pairs = has_constant_pairs}; + auto arg_list_config = std::make_shared(); + arg_list_config->force_inline = true; + arg_list_config->hang_forms = false; + cfg.index_configs.emplace(2, arg_list_config); + return cfg; +} + +static FormFormattingConfig new_inlineable_flow_rule(int start_index, + bool has_constant_pairs = false) { + return {.config_set = true, + .hang_forms = false, + .inline_until_index = + [start_index](const std::vector& curr_lines) { + int total_width = 0; + for (const auto& line : curr_lines) { + // Check for comments + // TODO - this shows how this isn't really the best strategy but it holds up + if (str_util::contains(line, ";")) { + // Can't inline, there's a comment! + return start_index; + } + total_width += line.length(); + // an empty line implies a new-line was forced, this is bleeding implementation + // details, but fine for now + if (line.empty()) { + return start_index; + } + } + if (total_width <= 120) { + return (int)curr_lines.size(); + } + return start_index; + }, + .has_constant_pairs = has_constant_pairs}; +} + +static FormFormattingConfig new_defstate_rule(int start_index, bool has_constant_pairs = false) { + FormFormattingConfig cfg = { + .config_set = true, + .hang_forms = false, + .inline_until_index = + [start_index](const std::vector& /*curr_lines*/) { return start_index; }, + .has_constant_pairs = has_constant_pairs}; + std::vector state_handler_indexes = {4, 6, 8, 10, + 12, 14}; // NOTE - not all of these have to be defined + for (const auto& index : state_handler_indexes) { + auto temp_config = std::make_shared(); + temp_config->prevent_inlining = true; + temp_config->parent_mutable_extra_indent = 2; + cfg.index_config_override.emplace(index, temp_config); + } + return cfg; +} + +static FormFormattingConfig new_defmethod_rule(int start_index, bool has_constant_pairs = false) { + // TODO - might be nice to have a function that returns a config based on a given index, instead + // of hardcoding them! + // Right now this only works for non-`new` methods (else we may bleed into the body of a normal + // method) + auto arg_list_config = std::make_shared(); + arg_list_config->force_inline = true; + arg_list_config->hang_forms = false; + FormFormattingConfig cfg = {.config_set = true, + .hang_forms = false, + .inline_until_index = + [start_index](const std::vector& curr_lines) { + if (curr_lines.size() >= 2 && curr_lines.at(1) == "new") { + // defmethod was changed to omit the type name for everything + // except the `new` method, so special case. + return start_index + 1; + } + return start_index; + }, + .has_constant_pairs = has_constant_pairs}; + cfg.index_configs.emplace(2, arg_list_config); + return cfg; +} + +static FormFormattingConfig new_lambda_rule(int start_index, bool has_constant_pairs = false) { + FormFormattingConfig cfg = {.config_set = true, + .hang_forms = false, + .inline_until_index = + [start_index](const std::vector& curr_lines) { + if (curr_lines.size() >= 2 && curr_lines.at(1) == ":behavior") { + // defmethod was changed to omit the type name for everything + // except the `new` method, so special case. + return start_index + 2; + } + return start_index; + }, + .has_constant_pairs = has_constant_pairs}; + return cfg; +} + +static FormFormattingConfig new_defenum_rule() { + auto temp_list_config = std::make_shared(); + temp_list_config->force_inline = true; + temp_list_config->hang_forms = false; + return { + .config_set = true, + .hang_forms = false, + .inline_until_index = [](const std::vector& /*curr_lines*/) { return 2; }, + .has_constant_pairs = true, + .default_index_config = temp_list_config, + }; } static FormFormattingConfig new_deftype_rule( int start_index, + int num_columns_to_compute_widths, const std::vector& inlining_preventation_indices) { FormFormattingConfig cfg; + cfg.has_constant_pairs = true; cfg.config_set = true; cfg.hang_forms = false; cfg.inline_until_index = [start_index](std::vector curr_lines) { @@ -39,6 +161,7 @@ static FormFormattingConfig new_deftype_rule( temp_config->default_index_config = temp_list_config; if (index == 3) { temp_config->determine_column_widths_for_list_elements = true; + temp_config->num_columns_to_compute_widths = num_columns_to_compute_widths; } cfg.index_configs.emplace(index, temp_config); } @@ -74,6 +197,29 @@ static FormFormattingConfig new_binding_rule(int form_head_width) { return cfg; } +static FormFormattingConfig new_inline_binding_rule(int form_head_width) { + FormFormattingConfig cfg; + cfg.config_set = true; + cfg.hang_forms = false; + cfg.combine_first_two_lines = true; + auto binding_list_config = std::make_shared(); + binding_list_config->config_set = true; + binding_list_config->hang_forms = false; + binding_list_config->indentation_width = 1; + binding_list_config->indentation_width_for_index = [form_head_width](FormFormattingConfig /*cfg*/, + int index) { + if (index == 0) { + return 0; + } + return form_head_width; + }; + binding_list_config->should_prevent_inlining = [](FormFormattingConfig /*config*/, int num_refs) { + return false; + }; + cfg.index_configs.emplace(1, binding_list_config); + return cfg; +} + static FormFormattingConfig new_pair_rule(bool combine_first_two_expr) { FormFormattingConfig cfg; cfg.config_set = true; @@ -88,23 +234,70 @@ static FormFormattingConfig new_pair_rule(bool combine_first_two_expr) { return cfg; } +static FormFormattingConfig new_top_level_inline_form(bool elide_new_line) { + return {.force_inline = true, .elide_top_level_newline = elide_new_line}; +} + const std::unordered_map opengoal_form_config = { {"case", new_pair_rule(true)}, {"cond", new_pair_rule(false)}, - {"defmethod", new_flow_rule(3)}, - {"deftype", new_deftype_rule(3, {3, 4, 5, 6})}, + {"#cond", new_pair_rule(false)}, + {"in-package", new_top_level_inline_form(true)}, + {"bundles", new_top_level_inline_form(true)}, + {"require", new_top_level_inline_form(true)}, + {"def-art-elt", new_top_level_inline_form(true)}, + {"def-joint-node", new_top_level_inline_form(true)}, + {"declare-file", new_top_level_inline_form(false)}, + {"defenum", new_defenum_rule()}, + {"defmethod", new_defmethod_rule(3)}, + {"lambda", new_lambda_rule(2)}, + {"deftype", new_deftype_rule(3, 1, {3, 4, 5, 6})}, {"defun", new_flow_rule(3)}, + {"defun-recursive", new_flow_rule(4)}, + {"defun-debug-recursive", new_flow_rule(4)}, {"defun-debug", new_flow_rule(3)}, {"defbehavior", new_flow_rule(4)}, - {"if", new_permissive_flow_rule()}, + {"if", new_inlineable_flow_rule(2)}, + {"#if", new_inlineable_flow_rule(2)}, {"define", new_permissive_flow_rule()}, + {"def-mips2c", new_permissive_flow_rule()}, + {"defconstant", new_permissive_flow_rule()}, + {"defglobalconstant", new_permissive_flow_rule()}, + {"defmethod-mips2c", new_permissive_flow_rule()}, {"define-extern", new_permissive_flow_rule()}, - {"defmacro", new_flow_rule(3)}, + {"declare-type", new_permissive_flow_rule()}, + {"defmacro", new_function_rule(3)}, + {"desfun", new_function_rule(3)}, + {"defskelgroup", new_flow_rule(2, true)}, + {"defpartgroup", new_flow_rule(2, true)}, + {"defpart", new_flow_rule(2, true)}, + {"defstate", new_defstate_rule(3, true)}, + {"behavior", new_flow_rule(2)}, {"dotimes", new_flow_rule(2)}, + {"dolist", new_flow_rule(2)}, + {"process-spawn-function", new_flow_rule(2)}, {"let", new_binding_rule(4)}, + {"protect", new_binding_rule(4)}, + {"let*", new_binding_rule(5)}, {"rlet", new_binding_rule(5)}, {"when", new_flow_rule(2)}, + {"unless", new_flow_rule(2)}, + {"with-profiler", new_flow_rule(2)}, + {"with-pc", new_flow_rule(0)}, + {"#unless", new_flow_rule(2)}, + {"#when", new_flow_rule(2)}, + {"countdown", new_flow_rule(2)}, + {"until", new_flow_rule(2)}, + {"loop", new_flow_rule(0)}, + {"while", new_flow_rule(2)}, {"begin", new_flow_rule(0)}, + {"seval", new_flow_rule(0)}, + {"with-pp", new_flow_rule(0)}, + {"with-gensyms", new_flow_rule(2)}, + {"with-vf0", new_flow_rule(0)}, + {"with-vf", new_inline_binding_rule(8)}, + {"with-cnt-vif-block", new_inline_binding_rule(19)}, + {"local-vars", new_inlinable_simple_flow_rule()}, {"with-dma-buffer-add-bucket", new_flow_rule(2)}}; } // namespace config } // namespace formatter_rules diff --git a/common/formatter/rules/rule_config.h b/common/formatter/rules/rule_config.h index 0bea72d81c..8cb0a0c776 100644 --- a/common/formatter/rules/rule_config.h +++ b/common/formatter/rules/rule_config.h @@ -7,7 +7,6 @@ #include #include -// TODO - some way to apply a config to all list elements (index configs with -1?) namespace formatter_rules { namespace config { struct FormFormattingConfig { @@ -33,9 +32,14 @@ struct FormFormattingConfig { int parent_mutable_extra_indent = 0; std::optional> default_index_config; std::unordered_map> index_configs = {}; + // TODO / NOTe - not fully implemented, only doing `parent_mutable_extra_indent` right now + std::unordered_map> index_config_override = {}; bool determine_column_widths_for_list_elements = false; + int num_columns_to_compute_widths = 0; std::vector list_element_column_widths = {}; + + bool elide_top_level_newline = false; }; extern const std::unordered_map opengoal_form_config; diff --git a/common/goos/Reader.cpp b/common/goos/Reader.cpp index 3c5d666d1a..f438a410d0 100644 --- a/common/goos/Reader.cpp +++ b/common/goos/Reader.cpp @@ -12,7 +12,6 @@ #include "Reader.h" #include "common/log/log.h" -#include "common/repl/util.h" #include "common/util/FileUtil.h" #include "common/util/FontUtils.h" diff --git a/common/goos/Reader.h b/common/goos/Reader.h index 32b51f075b..c20071e1a3 100644 --- a/common/goos/Reader.h +++ b/common/goos/Reader.h @@ -18,7 +18,7 @@ #include "common/goos/Object.h" #include "common/goos/TextDB.h" -#include "common/repl/util.h" +#include "common/repl/repl_wrapper.h" #include "common/util/Assert.h" namespace goos { diff --git a/common/log/log.cpp b/common/log/log.cpp index bce3d2e597..dfe623b0bc 100644 --- a/common/log/log.cpp +++ b/common/log/log.cpp @@ -163,7 +163,7 @@ void set_file(const std::string& filename, file_util::find_files_in_dir(fs::path(complete_filename).parent_path(), std::regex(fmt::format("{}\\.(\\d\\.)?log", filename))); for (const auto& file : old_log_files) { - lg::info("removing {}", file.string()); + lg::debug("removing {}", file.string()); fs::remove(file); } // remove the oldest log file if there are more than LOG_ROTATE_MAX @@ -172,9 +172,9 @@ void set_file(const std::string& filename, // sort the names and remove them existing_log_files = file_util::sort_filepaths(existing_log_files, true); if (existing_log_files.size() > (LOG_ROTATE_MAX - 1)) { - lg::info("removing {} log files", existing_log_files.size() - (LOG_ROTATE_MAX - 1)); + lg::debug("removing {} log files", existing_log_files.size() - (LOG_ROTATE_MAX - 1)); for (int i = 0; i < (int)existing_log_files.size() - (LOG_ROTATE_MAX - 1); i++) { - lg::info("removing {}", existing_log_files.at(i).string()); + lg::debug("removing {}", existing_log_files.at(i).string()); fs::remove(existing_log_files.at(i)); } } diff --git a/common/repl/config.cpp b/common/repl/config.cpp index aaf311c831..57274ef96e 100644 --- a/common/repl/config.cpp +++ b/common/repl/config.cpp @@ -7,15 +7,21 @@ namespace REPL { void to_json(json& j, const Config& obj) { j = json{ + {"nreplPort", obj.nrepl_port}, {"gameVersionFolder", obj.game_version_folder}, {"numConnectToTargetAttempts", obj.target_connect_attempts}, {"asmFileSearchDirs", obj.asm_file_search_dirs}, {"keybinds", obj.keybinds}, {"perGameHistory", obj.per_game_history}, + {"permissiveRedefinitions", obj.permissive_redefinitions}, }; } void from_json(const json& j, Config& obj) { + // TODO - make a camelCase variant of json_serialize/deserialize macros + if (j.contains("nreplPort")) { + j.at("nreplPort").get_to(obj.nrepl_port); + } if (j.contains("gameVersionFolder")) { j.at("gameVersionFolder").get_to(obj.game_version_folder); } @@ -55,6 +61,9 @@ void from_json(const json& j, Config& obj) { if (j.contains("perGameHistory")) { j.at("perGameHistory").get_to(obj.per_game_history); } + if (j.contains("permissiveRedefinitions")) { + j.at("permissiveRedefinitions").get_to(obj.permissive_redefinitions); + } // if there is game specific configuration, override any values we just set if (j.contains(version_to_game_name(obj.game_version))) { from_json(j.at(version_to_game_name(obj.game_version)), obj); diff --git a/common/repl/config.h b/common/repl/config.h index 96b0247efc..ff1857be72 100644 --- a/common/repl/config.h +++ b/common/repl/config.h @@ -26,11 +26,14 @@ struct KeyBind { void to_json(json& j, const KeyBind& obj); void from_json(const json& j, KeyBind& obj); +// TODO - per-game config struct Config { GameVersion game_version; Config(GameVersion _game_version) : game_version(_game_version){}; // this is the default REPL configuration + int nrepl_port = 8181; + int temp_nrepl_port = -1; std::string game_version_folder; int target_connect_attempts = 30; std::vector asm_file_search_dirs = {}; @@ -45,6 +48,14 @@ struct Config { {KeyBind::Modifier::CTRL, "B", "Displays the most recently caught backtrace", "(:di)"}, {KeyBind::Modifier::CTRL, "N", "Full build of the game", "(mi)"}}; bool per_game_history = true; + bool permissive_redefinitions = false; + + int get_nrepl_port() { + if (temp_nrepl_port != -1) { + return temp_nrepl_port; + } + return nrepl_port; + } }; void to_json(json& j, const Config& obj); void from_json(const json& j, Config& obj); diff --git a/common/repl/nrepl/ReplServer.cpp b/common/repl/nrepl/ReplServer.cpp index 267d5fa872..b2274a4f5f 100644 --- a/common/repl/nrepl/ReplServer.cpp +++ b/common/repl/nrepl/ReplServer.cpp @@ -27,7 +27,18 @@ ReplServer::~ReplServer() { void ReplServer::post_init() { // Add the listening socket to our set of sockets - lg::info("[nREPL:{}:{}] awaiting connections", tcp_port, listening_socket); + lg::debug("[nREPL:{}:{}] awaiting connections", tcp_port, listening_socket); +} + +void ReplServer::error_response(int socket, const std::string& error) { + std::string msg = fmt::format("[ERROR]: {}", error); + auto resp = write_to_socket(socket, msg.c_str(), msg.size()); + if (resp == -1) { + lg::warn("[nREPL:{}] Client Disconnected: {}", tcp_port, address_to_string(addr), + ntohs(addr.sin_port), socket); + close_socket(socket); + client_sockets.erase(socket); + } } void ReplServer::ping_response(int socket) { @@ -48,7 +59,6 @@ std::optional ReplServer::get_msg() { // Add the server's main listening socket (where we accept clients from) FD_SET(listening_socket, &read_sockets); - int max_sd = listening_socket; for (const int& sock : client_sockets) { if (sock > max_sd) { @@ -60,12 +70,11 @@ std::optional ReplServer::get_msg() { } // Wait for activity on _something_, with a timeout so we don't get stuck here on exit. - struct timeval timeout; - timeout.tv_sec = 0; - timeout.tv_usec = 100000; + struct timeval timeout = {0, 100000}; auto activity = select(max_sd + 1, &read_sockets, NULL, NULL, &timeout); - - if (activity < 0) { // TODO - || error! + if (activity < 0 && errno != EINTR) { + lg::error("[nREPL:{}] select error, returned: {}, errno: {}", tcp_port, activity, + strerror(errno)); return std::nullopt; } @@ -74,44 +83,46 @@ std::optional ReplServer::get_msg() { socklen_t addr_len = sizeof(addr); auto new_socket = accept_socket(listening_socket, (sockaddr*)&addr, &addr_len); if (new_socket < 0) { - // TODO - handle error + if (new_socket != -1) { + lg::error("[nREPL:{}] accept error, returned: {}, errono: {}", tcp_port, new_socket, + strerror(errno)); + } } else { lg::info("[nREPL:{}]: New socket connection: {}:{}:{}", tcp_port, address_to_string(addr), ntohs(addr.sin_port), new_socket); - // Say hello ping_response(new_socket); // Track the new socket if ((int)client_sockets.size() < max_clients) { client_sockets.insert(new_socket); } else { - // TODO - Respond with NO + // Respond with NO and close the socket + lg::warn("[nREPL:{}]: Maximum clients reached. Rejecting connection.", tcp_port); + error_response(new_socket, "Maximum clients reached. Rejecting connection."); + close_socket(new_socket); } } } - // otherwise (and no matter what) check all the clients to see if they have sent us anything - // else its some IO operation on some other socket - // - // RACE - the first client wins - - // TODO - there are ways to do this with iterators but, couldn't figure it out! - std::vector sockets_to_scan(client_sockets.begin(), client_sockets.end()); - for (const int& sock : sockets_to_scan) { + // Check all clients for activity + for (auto it = client_sockets.begin(); it != client_sockets.end();) { + int sock = *it; if (FD_ISSET(sock, &read_sockets)) { // Attempt to read a header - // TODO - should this be in a loop? auto req_bytes = read_from_socket(sock, header_buffer.data(), header_buffer.size()); - if (req_bytes == 0) { - // Socket disconnected + if (req_bytes <= 0) { // TODO - add a queue of messages in the REPL::Wrapper so we can print _BEFORE_ the prompt // is output - lg::warn("[nREPL:{}] Client Disconnected: {}", tcp_port, address_to_string(addr), - ntohs(addr.sin_port), sock); - + if (req_bytes == 0) { + lg::warn("[nREPL:{}] Client Disconnected: {}", tcp_port, address_to_string(addr)); + } else { + lg::warn("[nREPL:{}] Error reading from socket on {}: {}", tcp_port, + address_to_string(addr), strerror(errno)); + } // Cleanup the socket and remove it from our set close_socket(sock); - client_sockets.erase(sock); + it = client_sockets.erase(it); // Erase and move to the next element + continue; } else { // Otherwise, process the message auto* header = (ReplServerHeader*)(header_buffer.data()); @@ -119,7 +130,12 @@ std::optional ReplServer::get_msg() { int expected_size = header->length; int got = 0; int tries = 0; + bool skip_to_next_socket = false; while (got < expected_size) { + if (want_exit_callback()) { + lg::warn("[nREPL:{}] Terminating nREPL early", tcp_port); + return std::nullopt; + } tries++; if (tries > 100) { break; @@ -131,11 +147,25 @@ std::optional ReplServer::get_msg() { tcp_port, got, expected_size, buffer.size()); return std::nullopt; } - auto x = read_from_socket(sock, buffer.data() + got, expected_size - got); - if (want_exit_callback()) { - return std::nullopt; + auto bytes_read = read_from_socket(sock, buffer.data() + got, expected_size - got); + if (bytes_read <= 0) { + if (bytes_read == 0) { + lg::warn("[nREPL:{}] Client Disconnected: {}", tcp_port, address_to_string(addr)); + } else { + lg::warn("[nREPL:{}] Error reading from socket on {}: {}", tcp_port, + address_to_string(addr), strerror(errno)); + } + close_socket(sock); + it = client_sockets.erase(it); // Erase and move to the next element + skip_to_next_socket = true; + break; } - got += x > 0 ? x : 0; + got += bytes_read; + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + + if (skip_to_next_socket) { + continue; } switch (header->type) { @@ -149,6 +179,7 @@ std::optional ReplServer::get_msg() { } } } + ++it; } return std::nullopt; } diff --git a/common/repl/nrepl/ReplServer.h b/common/repl/nrepl/ReplServer.h index 4cd5e09ba0..9372d5f22f 100644 --- a/common/repl/nrepl/ReplServer.h +++ b/common/repl/nrepl/ReplServer.h @@ -27,5 +27,6 @@ class ReplServer : public XSocketServer { fd_set read_sockets; std::set client_sockets = {}; + void error_response(int socket, const std::string& error); void ping_response(int socket); }; diff --git a/common/repl/util.cpp b/common/repl/repl_wrapper.cpp similarity index 67% rename from common/repl/util.cpp rename to common/repl/repl_wrapper.cpp index 7484e074a5..fd2b517dec 100644 --- a/common/repl/util.cpp +++ b/common/repl/repl_wrapper.cpp @@ -1,4 +1,4 @@ -#include "util.h" +#include "repl_wrapper.h" #include "common/util/FileUtil.h" #include "common/util/json_util.h" @@ -8,36 +8,66 @@ #include "fmt/color.h" #include "fmt/core.h" #include "third-party/replxx/include/replxx.hxx" -// TODO - expand a list of hints (ie. a hint for defun to show at a glance how to write a function, -// or perhaps, show the docstring for the current function being used?) namespace REPL { void Wrapper::clear_screen() { repl.clear_screen(); } -void Wrapper::print_welcome_message() { - // TODO - dont print on std-out - // Welcome message / brief intro for documentation - std::string ascii; - ascii += " _____ _____ _____ _____ __ \n"; - ascii += "| |___ ___ ___| __| | _ | | \n"; - ascii += "| | | . | -_| | | | | | | |__ \n"; - ascii += "|_____| _|___|_|_|_____|_____|__|__|_____|\n"; - ascii += " |_| \n"; - fmt::print(fmt::emphasis::bold | fg(fmt::color::orange), ascii); - - fmt::print("Welcome to OpenGOAL {}.{}!\n", versions::GOAL_VERSION_MAJOR, - versions::GOAL_VERSION_MINOR); - fmt::print("Run {} or {} for help with common commands and REPL usage.\n", - fmt::styled("(repl-help)", fmt::emphasis::bold | fg(fmt::color::cyan)), - fmt::styled("(repl-keybinds)", fmt::emphasis::bold | fg(fmt::color::cyan))); - fmt::print("Run "); - fmt::print(fmt::emphasis::bold | fg(fmt::color::cyan), "(lt)"); - fmt::print(" to connect to the local target.\n"); - fmt::print("Run "); - fmt::print(fmt::emphasis::bold | fg(fmt::color::cyan), "(mi)"); - fmt::print(" to rebuild the entire game.\n\n"); +void Wrapper::print_welcome_message(const std::vector& loaded_projects) { + std::string message; + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " ..:::::..\n"); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " .:-----------:.\n"); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " .-----."); + message += fmt::format(fmt::emphasis::bold, " Welcome to OpenGOAL {}.{} [{}]", + versions::GOAL_VERSION_MAJOR, versions::GOAL_VERSION_MINOR, + fmt::format(fg(fmt::color::gray), "{}", build_revision())); + if (!username.empty() && username != "#f" && username != "unknown") { + message += fmt::format(fg(fmt::color::light_green), " {}", username); + } + message += "!\n"; + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " .---."); + if (repl_config.game_version == GameVersion::Jak1) { + message += fmt::format(" [{}]: ", fmt::format(fg(fmt::color::orange), "jak1")); + } else if (repl_config.game_version == GameVersion::Jak2) { + message += fmt::format(" [{}]: ", fmt::format(fg(fmt::color::purple), "jak2")); + } else if (repl_config.game_version == GameVersion::Jak3) { + message += fmt::format(" [{}]: ", fmt::format(fg(fmt::color::gold), "jak3")); + } else { + message += fmt::format(" [{}]: ", fmt::format(fg(fmt::color::magenta), "jakx")); + } + const auto loaded_projects_str = fmt::format("{}", fmt::join(loaded_projects, ",")); + message += fmt::format(fg(fmt::color::gray), "{}\n", loaded_projects_str); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " . --- ."); + message += + fmt::format(" Project Path: {}\n", + fmt::format(fg(fmt::color::gray), file_util::get_jak_project_dir().string())); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " - :===: -"); + message += " nREPL:"; + if (!nrepl_alive) { + message += fmt::format(fg(fmt::color::red), "DISABLED\n"); + } else { + message += fmt::format(fg(fmt::color::light_green), " Listening on {}\n", + repl_config.get_nrepl_port()); + } + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " --. .--: :--. .--"); + message += " Source File Search Dirs: "; + const auto search_dir_string = + fmt::format("{}", fmt::join(repl_config.asm_file_search_dirs, ",")); + message += fmt::format("[{}]\n", fmt::format(fg(fmt::color::gray), search_dir_string)); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " .=======. =======."); + message += fmt::format(" {} or {} for basic help and usage\n", + fmt::format(fg(fmt::color::cyan), "(repl-help)"), + fmt::format(fg(fmt::color::cyan), "(repl-keybinds)")); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " .-=====-. .-=====-"); + message += + fmt::format(" {} to connect to the game\n", fmt::format(fg(fmt::color::cyan), "(lt)")); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " .-===========-."); + message += fmt::format(" {} to recompile the active project.\n", + fmt::format(fg(fmt::color::cyan), "(mi)")); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " .-===-.\n"); + message += fmt::format(fmt::emphasis::bold | fg(fmt::color::orange), " .\n"); + fmt::print("{}", message); } void Wrapper::print_to_repl(const std::string& str) { @@ -242,20 +272,24 @@ StartupFile load_user_startup_file(const std::string& username, const GameVersio return startup_file; } -REPL::Config load_repl_config(const std::string& username, const GameVersion game_version) { +REPL::Config load_repl_config(const std::string& username, + const GameVersion game_version, + const int nrepl_port) { auto repl_config_path = file_util::get_jak_project_dir() / "goal_src" / "user" / username / "repl-config.json"; + REPL::Config loaded_config(game_version); if (file_util::file_exists(repl_config_path.string())) { try { - REPL::Config config(game_version); auto repl_config_data = parse_commented_json(file_util::read_text_file(repl_config_path), "repl-config.json"); - from_json(repl_config_data, config); - return config; + from_json(repl_config_data, loaded_config); + loaded_config.temp_nrepl_port = nrepl_port; + return loaded_config; } catch (std::exception& e) { - REPL::Config config(game_version); + // do nothing } } - return REPL::Config(game_version); + loaded_config.temp_nrepl_port = nrepl_port; + return loaded_config; } } // namespace REPL diff --git a/common/repl/util.h b/common/repl/repl_wrapper.h similarity index 76% rename from common/repl/util.h rename to common/repl/repl_wrapper.h index 0f2510466a..6ba81ad87a 100644 --- a/common/repl/util.h +++ b/common/repl/repl_wrapper.h @@ -17,18 +17,20 @@ struct StartupFile { }; class Wrapper { - replxx::Replxx repl; - public: std::string username; Config repl_config; StartupFile startup_file; + bool nrepl_alive = false; std::vector examples{}; std::vector> regex_colors{}; Wrapper(GameVersion version) : repl_config(version) {} - Wrapper(const std::string& _username, const Config& config, const StartupFile& startup) - : username(_username), repl_config(config), startup_file(startup) {} + Wrapper(const std::string& _username, + const Config& config, + const StartupFile& startup, + bool nrepl_alive) + : username(_username), repl_config(config), startup_file(startup), nrepl_alive(nrepl_alive) {} replxx::Replxx& get_repl() { return repl; } void init_settings(); void reload_startup_file(); @@ -36,7 +38,7 @@ class Wrapper { // Functionality / Commands void clear_screen(); void print_to_repl(const std::string& str); - void print_welcome_message(); + void print_welcome_message(const std::vector& loaded_projects); void set_history_max_size(size_t len); const char* readline(const std::string& prompt); void add_to_history(const std::string& line); @@ -47,11 +49,14 @@ class Wrapper { std::pair get_current_repl_token(std::string const& context); private: + replxx::Replxx repl; replxx::Replxx::key_press_handler_t commit_text_action(std::string text_to_commit); std::vector keybindings = {}; }; std::string find_repl_username(); StartupFile load_user_startup_file(const std::string& username, const GameVersion game_version); -REPL::Config load_repl_config(const std::string& username, const GameVersion game_version); +REPL::Config load_repl_config(const std::string& username, + const GameVersion game_version, + const int nrepl_port); } // namespace REPL diff --git a/common/serialization/subtitles/subtitles_v2.cpp b/common/serialization/subtitles/subtitles_v2.cpp index f337a3b47d..afc920c30a 100644 --- a/common/serialization/subtitles/subtitles_v2.cpp +++ b/common/serialization/subtitles/subtitles_v2.cpp @@ -89,7 +89,9 @@ const std::unordered_map jak2_speaker_name_to_enum_val = { {"citizen-male", 31}, {"citizen-female", 32}, {"oracle", 33}, - {"precursor", 34}}; + {"precursor", 34}, + {"metalkor-before-consite", 35}, + {"metalkor-intro", 36}}; GameSubtitlePackage read_json_files_v2(const GameSubtitleDefinitionFile& file_info) { GameSubtitlePackage package; diff --git a/common/util/FileUtil.cpp b/common/util/FileUtil.cpp index 94b2e7aad4..b61d355850 100644 --- a/common/util/FileUtil.cpp +++ b/common/util/FileUtil.cpp @@ -215,9 +215,11 @@ std::optional try_get_jak_project_path() { return try_get_project_path_from_path(get_current_executable_path()); } -std::optional try_get_data_dir() { +std::optional try_get_data_dir(bool skip_logs) { fs::path my_path = get_current_executable_path(); - lg::info("Current executable directory - {}", my_path.string()); + if (!skip_logs) { + lg::debug("Current executable directory - {}", my_path.string()); + } auto data_dir = my_path.parent_path() / "data"; if (fs::exists(data_dir) && fs::is_directory(data_dir)) { return std::make_optional(data_dir); @@ -226,7 +228,7 @@ std::optional try_get_data_dir() { } } -bool setup_project_path(std::optional project_path_override) { +bool setup_project_path(std::optional project_path_override, bool skip_logs) { if (g_file_path_info.initialized) { return true; } @@ -234,16 +236,20 @@ bool setup_project_path(std::optional project_path_override) { if (project_path_override) { g_file_path_info.path_to_data_folder = fs::absolute(project_path_override.value()); g_file_path_info.initialized = true; - lg::info("Using explicitly set project path: {}", - g_file_path_info.path_to_data_folder.string()); + if (!skip_logs) { + lg::debug("Using explicitly set project path: {}", + g_file_path_info.path_to_data_folder.string()); + } return true; } - auto data_path = try_get_data_dir(); + auto data_path = try_get_data_dir(skip_logs); if (data_path) { g_file_path_info.path_to_data_folder = *data_path; g_file_path_info.initialized = true; - lg::info("Using data path: {}", data_path->string()); + if (!skip_logs) { + lg::debug("Using data path: {}", data_path->string()); + } return true; } @@ -251,7 +257,9 @@ bool setup_project_path(std::optional project_path_override) { if (development_repo_path) { g_file_path_info.path_to_data_folder = *development_repo_path; g_file_path_info.initialized = true; - lg::info("Using development repo path: {}", *development_repo_path); + if (!skip_logs) { + lg::debug("Using development repo path: {}", *development_repo_path); + } return true; } diff --git a/common/util/FileUtil.h b/common/util/FileUtil.h index d5fa35113a..72d5daf2bd 100644 --- a/common/util/FileUtil.h +++ b/common/util/FileUtil.h @@ -43,7 +43,7 @@ bool create_dir_if_needed_for_file(const std::string& path); bool create_dir_if_needed_for_file(const fs::path& path); std::string get_current_executable_path(); std::optional try_get_project_path_from_path(const std::string& path); -bool setup_project_path(std::optional project_path_override); +bool setup_project_path(std::optional project_path_override, bool skip_logs = false); void override_user_config_dir(fs::path user_config_dir_override, bool use_overridden_config_dir_for_saves); std::string get_file_path(const std::vector& path); diff --git a/common/util/FontUtils.cpp b/common/util/FontUtils.cpp index c6294175d5..d8af149f3f 100644 --- a/common/util/FontUtils.cpp +++ b/common/util/FontUtils.cpp @@ -985,6 +985,8 @@ static std::vector s_replace_info_jak2 = { {"o~Y~-26H~-4V'~Z", "ó"}, {"U~Y~-24H~-3V'~Z", "Ú"}, {"u~Y~-24H~-3V'~Z", "ú"}, + {"Z~Y~-24H~-3V'~Z", "Ź"}, + {"z~Y~-24H~-3V'~Z", "ź"}, // circumflex {"A~Y~-20H~-4V^~Z", "Â"}, @@ -1015,6 +1017,7 @@ static std::vector s_replace_info_jak2 = { {"a~Y~-25H~-5V¨~Z", "ä"}, {"E~Y~-20H~-5V¨~Z", "Ë"}, {"I~Y~-19H~-5V¨~Z", "Ï"}, + {"i~Y~-26H~-4V¨~Z", "ï"}, {"O~Y~-26H~-8V¨~Z", "Ö"}, {"o~Y~-26H~-4V¨~Z", "ö"}, {"U~Y~-25H~-8V¨~Z", "Ü"}, diff --git a/custom_assets/jak1/models/test-actor.glb b/custom_assets/jak1/models/test-actor.glb index 49bac261e1..7b69a61534 100644 Binary files a/custom_assets/jak1/models/test-actor.glb and b/custom_assets/jak1/models/test-actor.glb differ diff --git a/decompiler/ObjectFile/ObjectFileDB_IR2.cpp b/decompiler/ObjectFile/ObjectFileDB_IR2.cpp index 8aed2f23a7..abef0ff791 100644 --- a/decompiler/ObjectFile/ObjectFileDB_IR2.cpp +++ b/decompiler/ObjectFile/ObjectFileDB_IR2.cpp @@ -11,6 +11,7 @@ #include "common/util/FileUtil.h" #include "common/util/Timer.h" #include "common/util/string_util.h" +#include #include "decompiler/IR2/Form.h" #include "decompiler/analysis/analyze_inspect_method.h" @@ -872,9 +873,22 @@ void ObjectFileDB::ir2_write_results(const fs::path& output_dir, auto file_name = output_dir / (obj.to_unique_name() + "_ir2.asm"); file_util::write_text_file(file_name, file_text); - auto final = ir2_final_out(obj, imports, {}); + auto unformatted_code = ir2_final_out(obj, imports, {}); auto final_name = output_dir / (obj.to_unique_name() + "_disasm.gc"); - file_util::write_text_file(final_name, final); + if (config.format_code) { + const auto formatted_code = formatter::format_code(unformatted_code); + if (!formatted_code) { + lg::error( + "Was unable to format the decompiled result of {}, make a github issue. Writing " + "unformatted code", + obj.to_unique_name()); + file_util::write_text_file(final_name, unformatted_code); + } else { + file_util::write_text_file(final_name, formatted_code.value()); + } + } else { + file_util::write_text_file(final_name, unformatted_code); + } } } diff --git a/decompiler/config.cpp b/decompiler/config.cpp index 984b1f564a..d0d7d91275 100644 --- a/decompiler/config.cpp +++ b/decompiler/config.cpp @@ -96,6 +96,9 @@ Config make_config_via_json(nlohmann::json& json) { } config.disassemble_code = json.at("disassemble_code").get(); config.decompile_code = json.at("decompile_code").get(); + if (json.contains("format_code")) { + config.format_code = json.at("format_code").get(); + } config.write_hex_near_instructions = json.at("write_hex_near_instructions").get(); config.write_scripts = json.at("write_scripts").get(); config.disassemble_data = json.at("disassemble_data").get(); diff --git a/decompiler/config.h b/decompiler/config.h index 01ddca559a..9516a212ad 100644 --- a/decompiler/config.h +++ b/decompiler/config.h @@ -111,6 +111,7 @@ struct Config { bool disassemble_code = false; bool decompile_code = false; + bool format_code = false; bool write_scripts = false; bool disassemble_data = false; bool process_tpages = false; diff --git a/decompiler/config/jak1/all-types.gc b/decompiler/config/jak1/all-types.gc index 8667f7a575..8aa53eedb0 100644 --- a/decompiler/config/jak1/all-types.gc +++ b/decompiler/config/jak1/all-types.gc @@ -22305,20 +22305,20 @@ ;; - Functions -(define-extern calculate-rotation-and-color-for-slice (function int float int int int hud-particle none)) -(define-extern part-hud-health-01-func (function basic basic hud-particle none)) ;; TODO - i figured this out on another branch...all these particle functions get called by the particle system with the same beginning types iirc -(define-extern part-hud-health-02-func (function basic basic hud-particle none)) -(define-extern part-hud-health-03-func (function basic basic hud-particle none)) +(define-extern calculate-rotation-and-color-for-slice (function int float int int int matrix none)) +(define-extern part-hud-health-01-func (function sparticle-system sparticle-cpuinfo matrix none)) +(define-extern part-hud-health-02-func (function sparticle-system sparticle-cpuinfo matrix none)) +(define-extern part-hud-health-03-func (function sparticle-system sparticle-cpuinfo matrix none)) (define-extern fuel-cell-hud-orbit-callback (function sparticle-system sparticle-cpuinfo matrix none)) (define-extern fuel-cell-hud-starburst-3-callback (function sparticle-system sparticle-cpuinfo matrix none)) (define-extern fuel-cell-hud-starburst-4-callback (function sparticle-system sparticle-cpuinfo matrix none)) (define-extern fuel-cell-hud-center-callback (function sparticle-system sparticle-cpuinfo matrix none)) -(define-extern part-hud-buzzer-func (function basic basic hud-particle none)) -(define-extern part-hud-eco-timer-01-func (function basic basic hud-particle none)) -(define-extern part-hud-eco-timer-02-func (function basic basic hud-particle none)) -(define-extern part-hud-eco-timer-03-func (function basic basic hud-particle none)) -(define-extern part-hud-eco-timer-backing-func (function basic basic hud-particle none)) -(define-extern part-hud-eco-timer-func (function basic basic hud-particle none)) +(define-extern part-hud-buzzer-func (function sparticle-system sparticle-cpuinfo matrix none)) +(define-extern part-hud-eco-timer-01-func (function sparticle-system sparticle-cpuinfo matrix none)) +(define-extern part-hud-eco-timer-02-func (function sparticle-system sparticle-cpuinfo matrix none)) +(define-extern part-hud-eco-timer-03-func (function sparticle-system sparticle-cpuinfo matrix none)) +(define-extern part-hud-eco-timer-backing-func (function sparticle-system sparticle-cpuinfo matrix none)) +(define-extern part-hud-eco-timer-func (function sparticle-system sparticle-cpuinfo matrix none)) (define-extern show-hud (function none)) ;; - Unknowns diff --git a/decompiler/config/jak1/jak1_config.jsonc b/decompiler/config/jak1/jak1_config.jsonc index b8d20a4310..85e7c3edfd 100644 --- a/decompiler/config/jak1/jak1_config.jsonc +++ b/decompiler/config/jak1/jak1_config.jsonc @@ -23,6 +23,10 @@ // run the first pass of the decompiler "find_functions": true, + // will attempt to run the decompiled output through the OpenGOAL formatter + // this will be skipped in offline tests + "format_code": true, + //////////////////////////// // DATA ANALYSIS OPTIONS //////////////////////////// diff --git a/decompiler/config/jak3/all-types.gc b/decompiler/config/jak3/all-types.gc index 9d5bb6fa9a..ce4e7fbd97 100644 --- a/decompiler/config/jak3/all-types.gc +++ b/decompiler/config/jak3/all-types.gc @@ -7555,37 +7555,27 @@ :type uint32 :bitfield #t (lf0 0) - (lf1 1) - (lf2 2) - (lf3 3) - (lf4 4) - (lf5 5) - (lf6 6) - (lf7 7) - (lf8 8) - (lf9 9) + (not-physical 1) + (ctycar 2) + (ctypes 3) + (external 4) + (title 5) + (borrow-load 6) + (end-mode 7) + (flut 8) + (sky 9) (use-camera-other 10) - (lf11 11) - (lf12 12) - (lf13 13) + (display-wait 11) + (ocean-near-translucent 12) + (ocean-far 13) (low-res-hfrag 14) - (lf15 15) - (lf16 16) - (lf17 17) - (lf18 18) - (lf19 19) - (lf20 20) + (city-borrow-available 15) + (mech 16) + (allow-unloaded 17) + (check-taskname-for-continue 18) + (city-borrow-high-priority 19) + (ocean-all 20) (desert 21) - (lf22 22) - (lf23 23) - (lf24 24) - (lf25 25) - (lf26 26) - (lf27 27) - (lf28 28) - (lf29 29) - (lf30 30) - (lf31 31) ) ;; ---level-h:level-flags @@ -9115,18 +9105,18 @@ (credits-03a1 #x03a1) (credits-03b5 #x03b5) (credits-03be #x03be) - (text-03bf #x03bf) - (text-03c0 #x03c0) - (text-03c1 #x03c1) - (text-03c2 #x03c2) - (text-03c3 #x03c3) - (text-03c4 #x03c4) - (text-03c5 #x03c5) - (text-03c6 #x03c6) - (text-03c7 #x03c7) + (scatter-gun #x03bf) + (blaster #x03c0) + (vulcan-fury #x03c1) + (peace-maker #x03c2) + (stadium #x03c3) + (class-1-reverse #x03c4) + (class-2-reverse #x03c5) + (class-3-reverse #x03c6) + (peace-maker-gun-course #x03c7) (progress-missions-todo-icon #x03c8) (progress-missions-complete-icon #x03c9) - (text-03d1 #x03d1) + (blaster-training-peace-maker-training #x03d1) (credits-03e4 #x03e4) (credits-03e5 #x03e5) (credits-03e7 #x03e7) @@ -9144,13 +9134,13 @@ (credits-0401 #x0401) (credits-0403 #x0403) (credits-0404 #x0404) - (text-0408 #x0408) - (text-0409 #x0409) - (text-040a #x040a) - (text-040b #x040b) - (text-040c #x040c) - (text-040d #x040d) - (text-040e #x040e) + (press-to-jump #x0408) + (roll-how-to #x0409) + (double-jump-how-to #x040a) + (press-or-to-attack #x040b) + (roll-jump-how-to #x040c) + (ground-pound-how-to #x040d) + (high-jump-how-to #x040e) (credits-040f #x040f) (progress-missions-mine-explore #x0443) (progress-missions-mine-blow #x0444) @@ -9560,12 +9550,12 @@ (progress-controls-lightjak-wings #x06ba) (empty-string #x06bb) (progress-demo-return-to-title #x06bc) - (text-06bd #x06bd) + (text-06bd #x06bd) ;; "::" ? (meet-old-friends #x06be) (talk-to-torn-hq #x06bf) (wascity-defend-return-to-spargus #x06c0) (progress-audio-language #x06c1) - (text-06c2 #x06c2) + (text-06c2 #x06c2) ;; empty-string-2 (progress-inventory-v-turtle #x06c3) (progress-inventory-v-snake #x06c4) (progress-inventory-v-scorpion #x06c5) @@ -9593,8 +9583,8 @@ (credits-06db #x06db) (credits-06dc #x06dc) (credits-06dd #x06dd) - (text-06de #x06de) - (text-06df #x06df) + (protect-civilians #x06de) + (activate-statue-by-punching-kicking-nose #x06df) (progress-inventory-gun-red-1 #x06e0) (progress-inventory-gun-red-2 #x06e1) (progress-inventory-gun-red-3 #x06e2) @@ -9611,14 +9601,14 @@ (progress-inventory-armor1 #x06ed) (progress-inventory-armor2 #x06ee) (progress-inventory-armor3 #x06ef) - (text-06f0 #x06f0) - (text-06f1 #x06f1) - (text-06f2 #x06f2) - (text-06f3 #x06f3) - (text-06f4 #x06f4) - (text-06f5 #x06f5) - (text-06f6 #x06f6) - (text-06f7 #x06f7) + (progress-inventory-tough-puppy #x06f0) + (progress-inventory-sand-shark #x06f1) + (progress-inventory-gila-stomper #x06f2) + (progress-inventory-dune-hopper #x06f3) + (progress-inventory-heat-seeker #x06f4) + (progress-inventory-slam-dozer #x06f5) + (progress-inventory-dust-demon #x06f6) + (progress-inventory-desert-screamer #x06f7) (progress-inventory-board #x06f8) (progress-inventory-artifact-invis #x06f9) (progress-inventory-dark-strike #x06fa) @@ -9626,9 +9616,9 @@ (progress-inventory-lightjak-freeze #x06fc) (progress-inventory-lightjak-shield #x06fd) (progress-inventory-lightjak-swoop #x06fe) - (text-06ff #x06ff) - (text-0700 #x0700) - (text-0701 #x0701) + (progress-inventory-first-war-amulet #x06ff) + (progress-inventory-second-war-amulet #x0700) + (progress-inventory-complete-war-amulet #x0701) (progress-inventory-pass-wascity #x0702) (progress-inventory-seal-of-mar #x0703) (progress-inventory-pass-factory #x0704) @@ -9640,9 +9630,9 @@ (progress-inventory-light-eco-crystal #x070a) (progress-inventory-dark-eco-crystal #x070b) (progress-inventory-eco-sphere #x070c) - (text-070d #x070d) - (text-070e #x070e) - (text-070f #x070f) + (progress-inventory-scatter-gun #x070d) + (progress-inventory-wave-concussor #x070e) + (progress-inventory-plasmite-rpg #x070f) (credits-0710 #x0710) (credits-0711 #x0711) (credits-0712 #x0712) @@ -9740,13 +9730,13 @@ (credits-0772 #x0772) (credits-0773 #x0773) (credits-0774 #x0774) - (text-0775 #x0775) - (text-0776 #x0776) + (map-data-unavailable #x0775) + (light-jak-shield-how-to #x0776) (scene-catacomb-get-shield #x0778) - (text-0779 #x0779) + (press-to-use #x0779) (mission-fail-marauders-escaped #x077a) - (text-077b #x077b) - (text-077c #x077c) + (press-to-grab-objects #x077b) + (press-to-throw-held-objects #x077c) (credits-077d #x077d) (credits-077e #x077e) (credits-077f #x077f) @@ -9792,22 +9782,22 @@ (credits-07b1 #x07b1) (credits-07b2 #x07b2) (progress-secrets-unlimited-turbos #x07b3) - (text-07b4 #x07b4) - (text-07b5 #x07b5) + (dark-strike-how-to #x07b4) + (vehicle-destroyed #x07b5) (credits-07b6 #x07b6) (progress-language-portuguese #x07b8) - (text-07b9 #x07b9) - (text-07ba #x07ba) - (text-07bb #x07bb) - (text-07bc #x07bc) - (text-07bd #x07bd) - (text-07be #x07be) - (text-07bf #x07bf) - (text-07c0 #x07c0) - (text-07c1 #x07c1) - (text-07c2 #x07c2) - (text-07c3 #x07c3) - (text-07c4 #x07c4) + (hold-to-increase-speed #x07b9) + (you-can-now-afford-to-purchase-new-secrets #x07ba) + (museum-jak-one #x07bb) + (museum-jak #x07bc) + (museum-jakc #x07bd) + (museum-daxter #x07be) + (museum-pecker #x07bf) + (museum-torn #x07c0) + (museum-ashelin #x07c1) + (museum-tess #x07c2) + (use-the-wave-concussor #x07c3) + (hold-to-charge-and-then-release-to-fire-bigger-blast #x07c4) (credits-07c5 #x07c5) (credits-07c6 #x07c6) (progress-language-commentary #x07c7) @@ -9815,36 +9805,36 @@ (credits-07c9 #x07c9) (credits-07ca #x07ca) (progress-inventory #x07cb) - (text-07cc #x07cc) - (text-07cd #x07cd) - (text-07ce #x07ce) - (text-07cf #x07cf) + (out-of-time #x07cc) + (total-rolls #x07cd) + (total-distance #x07ce) + (best-distance #x07cf) (progress-footer-next-r1 #x07d0) (progress-footer-prev-l1 #x07d1) (progress-title-commentary #x07d2) - (text-07d3 #x07d3) - (text-07d4 #x07d4) + (progress-title-animator-commentary #x07d3) + (progress-title-creative-director-commentary #x07d4) (progress-secrets-fast-movie #x07d5) (progress-secrets-slow-movie #x07d6) - (text-07d7 #x07d7) - (text-07d8 #x07d8) + (progress-secrets-game-statistics #x07d7) + (progress-secrets-kleivers-diaper #x07d8) (progress-secrets-red-ammo-capacity #x07d9) (progress-secrets-yellow-ammo-capacity #x07da) (progress-secrets-blue-ammo-capacity #x07db) (progress-secrets-dark-ammo-capacity #x07dc) - (text-07dd #x07dd) + (progress-secrets-gravity-well-mod #x07dd) (progress-secrets-gungame-ratchet #x07de) (progress-secrets-endless-light #x07df) (progress-secrets-bad-weather #x07e0) - (text-07e1 #x07e1) - (text-07e2 #x07e2) + (progress-secrets-fast-time-of-day #x07e1) + (progress-secrets-play-as-jak-ii #x07e2) (progress-title-jak3-mdl-viewer #x07e3) (progress-title-jak2-mdl-viewer #x07e4) (progress-title-jak1-mdl-viewer #x07e5) - (text-07e6 #x07e6) - (text-07e7 #x07e7) - (text-07e8 #x07e8) - (text-07e9 #x07e9) + (press-to-play-wave-concussor-training #x07e6) + (press-to-play-beam-reflexor-training #x07e7) + (wave-concussor-training-ratchet-gun-course #x07e8) + (beam-reflexor-training-clank-gun-course #x07e9) (progress-secrets-kleever-diaper #x07ea) (credits-07eb #x07eb) (credits-07ec #x07ec) @@ -9857,24 +9847,24 @@ (credits-07f3 #x07f3) (credits-07f4 #x07f4) (credits-07f5 #x07f5) - (text-07f6 #x07f6) - (text-07f7 #x07f7) - (text-07f8 #x07f8) - (text-07f9 #x07f9) - (text-07fa #x07fa) - (text-07fb #x07fb) - (text-07fc #x07fc) - (text-07fd #x07fd) - (text-07fe #x07fe) - (text-07ff #x07ff) - (text-0800 #x0800) - (text-0801 #x0801) - (text-0802 #x0802) - (text-0803 #x0803) - (text-0804 #x0804) - (text-0805 #x0805) - (text-0806 #x0806) - (text-0807 #x0807) + (kills #x07f6) + (museum-kleever #x07f7) + (museum-samos #x07f8) + (museum-seem #x07f9) + (museum-keira #x07fa) + (museum-ottsel-dummy #x07fb) + (museum-ottsel-tess #x07fc) + (museum-sig #x07fd) + (museum-ottsel-leader #x07fe) + (museum-ottsel-surfer #x07ff) + (museum-ottsel-veger #x0800) + (museum-onin #x0801) + (museum-damus #x0802) + (museum-jinx #x0803) + (museum-cyber-errol #x0804) + (museum-veger #x0805) + (credits-starring #x0806) + (press-to-place-held-objects #x0807) (progress-controls-pad-cross-square-cross #x0808) (progress-controls-pad-l1-square #x0809) (progress-controls-super-flop #x080a) @@ -9889,43 +9879,43 @@ (credits-0813 #x0813) (credits-0814 #x0814) (credits-0815 #x0815) - (text-0816 #x0816) - (text-0817 #x0817) - (text-0818 #x0818) - (text-0819 #x0819) - (text-081a #x081a) - (text-081b #x081b) - (text-081c #x081c) - (text-081d #x081d) - (text-081e #x081e) - (text-081f #x081f) - (text-0820 #x0820) - (text-0821 #x0821) - (text-0822 #x0822) - (text-0823 #x0823) - (text-0824 #x0824) - (text-0825 #x0825) - (text-0826 #x0826) - (text-0827 #x0827) - (text-0828 #x0828) - (text-0829 #x0829) - (text-082a #x082a) - (text-082b #x082b) - (text-082c #x082c) - (text-082d #x082d) - (text-082e #x082e) - (text-082f #x082f) - (text-0830 #x0830) - (text-0831 #x0831) - (text-0832 #x0832) - (text-0833 #x0833) + (museum-baron #x0816) + (museum-youngsamos #x0817) + (museum-brutter #x0818) + (museum-red-crimson-guard #x0819) + (museum-flutflut #x081a) + (museum-mayor #x081b) + (museum-redsage #x081c) + (museum-sculptor #x081d) + (museum-sidekick-human #x081e) + (museum-yellowsage #x081f) + (museum-warrior #x0820) + (museum-geologist #x0821) + (museum-gambler #x0822) + (museum-minershort #x0823) + (museum-minertall #x0824) + (museum-ogreboss #x0825) + (museum-bird-lady #x0826) + (museum-bluesage #x0827) + (museum-evilbro #x0828) + (museum-evilsis #x0829) + (museum-explorer #x082a) + (museum-farmer #x082b) + (museum-fisher #x082c) + (museum-crocadog #x082d) + (museum-kid #x082e) + (museum-kor #x082f) + (museum-errol #x0830) + (museum-babak #x0831) + (museum-billy #x0832) + (your-distance #x0833) (progress-secrets-weapon-upgrades #x0834) (progress-secrets-cheats #x0835) (progress-secrets-vehicle-upgrades #x0836) (progress-secrets-crazy-stuff #x0837) (progress-secrets-art-gallery #x0838) (progress-secrets-expert-options #x0839) - (text-083a #x083a) + (unavailable #x083a) (progress-secrets-gun-upgrade-red-1 #x083b) (progress-secrets-gun-upgrade-red-2 #x083c) (progress-secrets-gun-upgrade-red-3 #x083d) @@ -9954,20 +9944,20 @@ (credits-0854 #x0854) (credits-0855 #x0855) (progress-secrets-price #x0856) - (text-0857 #x0857) - (text-0858 #x0858) - (text-085a #x085a) + (new-secrets-available #x0857) + (secrets-still-available #x0858) + (dark-bomb-how-to #x085a) (credits-085b #x085b) (credits-085c #x085c) (credits-085d #x085d) (credits-085e #x085e) - (text-085f #x085f) - (text-0860 #x0860) - (text-0861 #x0861) - (text-0862 #x0862) - (text-0863 #x0863) - (text-0864 #x0864) - (text-0866 #x0866) + (bring-sand-shark #x085f) + (bring-sand-shark-heat-seeker-dust-demon-desert-screamer #x0860) + (extra-time #x0861) + (hold-to-auto-fire #x0862) + (used-precursor-artifacts #x0863) + (hold-to-use-shield #x0864) + (score #x0866) (progress-inventory-vehicles #x0867) (progress-inventory-armor #x0868) (progress-inventory-darkjak #x0869) @@ -9997,10 +9987,10 @@ (credits-0882 #x0882) (progress-controls-pad-l2-lanalog #x0883) (progress-controls-board-grab #x0884) - (text-0885 #x0885) - (text-0886 #x0886) - (text-0887 #x0887) - (text-0888 #x0888) + (hold-to-charge-and-then-release-to-fire-blast #x0885) + (press-again-to-make-gyro-burster-hover-in-place #x0886) + (locked #x0887) + (use-turbo-to-break-obstacles #x0888) (credits-0889 #x0889) (progress-controls-pad-360-spin #x088a) (progress-controls-pad-triangle-2 #x088b) @@ -10009,14 +9999,14 @@ (commentary-intro-palace #x088e) (commentary-intro-rescue #x088f) (commentary-intro-training #x0891) - (text-0892 #x0892) - (text-0893 #x0893) - (text-0894 #x0894) - (text-0895 #x0895) - (text-0896 #x0896) - (text-0897 #x0897) + (congrats-600-orbs-new-duds #x0892) + (museum-krew #x0893) + (museum-vin #x0894) + (you-finished #x0895) + (save-hero-mode-file #x0896) + (hero-mode-how-to #x0897) (talk-to-ashelin #x0898) - (text-0899 #x0899) + (press-to-accept #x0899) (credits-089c #x089c) (credits-089d #x089d) (credits-089e #x089e) diff --git a/decompiler/config/jak3/ntsc_v1/inputs.jsonc b/decompiler/config/jak3/ntsc_v1/inputs.jsonc index bcd9083872..fa1f689157 100644 --- a/decompiler/config/jak3/ntsc_v1/inputs.jsonc +++ b/decompiler/config/jak3/ntsc_v1/inputs.jsonc @@ -349,9 +349,21 @@ "animated_textures": [ // dark jak - "jakc-arm", "jakc-eyebrow", "jakc-face", "jakc-finger", "jakc-hair", - "jakc-arm-norm", "jakc-eyebrow-norm", "jakc-face-norm", "jakc-finger-norm", "jakc-hair-norm", - "jakc-arm-dark", "jakc-eyebrow-dark", "jakc-face-dark", "jakc-finger-dark", "jakc-hair-dark", + "jakc-arm", + "jakc-eyebrow", + "jakc-face", + "jakc-finger", + "jakc-hair", + "jakc-arm-norm", + "jakc-eyebrow-norm", + "jakc-face-norm", + "jakc-finger-norm", + "jakc-hair-norm", + "jakc-arm-dark", + "jakc-eyebrow-dark", + "jakc-face-dark", + "jakc-finger-dark", + "jakc-hair-dark", // Skull Gem "skull-gem-dest", diff --git a/decompiler/config/jak3/ntsc_v1/stack_structures.jsonc b/decompiler/config/jak3/ntsc_v1/stack_structures.jsonc index af6026b5b1..154795ade5 100644 --- a/decompiler/config/jak3/ntsc_v1/stack_structures.jsonc +++ b/decompiler/config/jak3/ntsc_v1/stack_structures.jsonc @@ -2508,5 +2508,10 @@ [16, "vector"], [32, "vector"] ], - "texture-anim-layer-draw": [[16, "matrix"], [80, "matrix"], [144, "matrix"], [208, "matrix"]] + "texture-anim-layer-draw": [ + [16, "matrix"], + [80, "matrix"], + [144, "matrix"], + [208, "matrix"] + ] } diff --git a/decompiler/config/jak3/ntsc_v1/type_casts.jsonc b/decompiler/config/jak3/ntsc_v1/type_casts.jsonc index 9a65fdbee6..a82a18d848 100644 --- a/decompiler/config/jak3/ntsc_v1/type_casts.jsonc +++ b/decompiler/config/jak3/ntsc_v1/type_casts.jsonc @@ -10851,9 +10851,7 @@ ["_stack_", 76, "float"], ["_stack_", 100, "float"] ], - "real-wang-texture-anim-func": [ - [[3, 31], "v1", "mood-context"] - ], + "real-wang-texture-anim-func": [[[3, 31], "v1", "mood-context"]], "(method 24 sky-work)": [ [256, "s4", "(pointer int32)"], [261, "s4", "(pointer int32)"] @@ -11120,9 +11118,7 @@ [64, "a1", "(pointer gs-alpha)"], [66, "a1", "(pointer gs-reg64)"] ], - "texture-anim-layer-draw": [ - [[24, 182], "s4", "(pointer uint128)"] - ], + "texture-anim-layer-draw": [[[24, 182], "s4", "(pointer uint128)"]], "update-texture-anim": [ [213, "v1", "(pointer uint128)"], [[214, 230], "t0", "vector4w"], @@ -11264,7 +11260,5 @@ [[191, 249], "gp", "shadow-dcache"], [96, "v1", "shadow-dcache"] ], - "real-fog-texture-anim-func": [ - [[6, 160], "s2", "(pointer uint32)"] - ] + "real-fog-texture-anim-func": [[[6, 160], "s2", "(pointer uint32)"]] } diff --git a/docs/progress-notes/jak1/code_status.md b/docs/progress-notes/jak1/code_status.md index 44b912a012..c4ee9a18a2 100644 --- a/docs/progress-notes/jak1/code_status.md +++ b/docs/progress-notes/jak1/code_status.md @@ -11,7 +11,7 @@ - This file generates no code. ## `gkernel-h`: **Done** -- The types `cpu-thread` and `catch-frame` have a slightly different layout in OpenGOAL to back up x86-64 registers +- The types `cpu-thread` and `catch-frame` have a slightly different layout in OpenGOAL to back up x86-64 registers. ## `gkernel`: - Many changes for x86-64/OpenGOAL @@ -57,7 +57,7 @@ - No comments ## `euler-h`: **Done** -- Uses boxed arrays +- Uses boxed arrays. ## `transform-h`: **Done** - No comments @@ -69,7 +69,7 @@ - Empty ## `transformq-h`: waiting on stack stuff -- Needs stack stuff +- Needs stack stuff. ## `bounding-box`: asm @@ -84,7 +84,7 @@ ## `geometry`: asm ## `trigonometry`: **Done** -- `sincos!` and `sincos-rad!` have a bug where cosine is slightly off +- `sincos!` and `sincos-rad!` have a bug where cosine is slightly off. ## `gsound-h`: **Done** @@ -116,19 +116,19 @@ ## `dma-disasm`: In progress - Unused, but possibly useful debugging utilities for printing DMA chains. -- Needs stack stuff to do the last two functions +- Needs stack stuff to do the last two functions. - Needs static data disassembler for a lookup table. ## `pad`: **Done** ## `gs`: **Done** -- Missing bitfields +- Missing bitfields. ## `display-h`: **Done** ## `vector`: asm - Largely decompiled successfully and compiles! - - Functions are currently undocumented and still with rough variable names + - Functions are currently undocumented and still with rough variable names. - Some functions are currently failing to decompile: - `rand-vu-sphere-point!` - `vector-deg-lerp-clamp!` @@ -158,4 +158,4 @@ ## `fileio`: **Done** ## `loader-h`: **Done** -- Good one for playing with inlined basics. \ No newline at end of file +- Good one for playing with inlined basics. diff --git a/game/assets/jak1/subtitle/subtitle_lines_ca-ES.json b/game/assets/jak1/subtitle/subtitle_lines_ca-ES.json index e003aab677..c0a7b43aa8 100644 --- a/game/assets/jak1/subtitle/subtitle_lines_ca-ES.json +++ b/game/assets/jak1/subtitle/subtitle_lines_ca-ES.json @@ -1,1057 +1,1057 @@ { "cutscenes": { "assistant-firecanyon-resolution": [ - "GREAT! YOU HAVE THE 20 CELLS NEEDED TO POWER MY HEAT SHIELD!", - "NOW BE CAREFUL, THE SHIELD WILL ONLY PROTECT YOUR ZOOMER", - "TILL IT REACHES 500 DEGREES, SO TRY TO KEEP HER COOL.", - "FLYING OVER OPEN LAVA WILL DEFINITELY HEAT YOU UP FAST.", - "HIT 500 DEGREES, AND IT'S OVER.", - "OVER?! LIKE BURNING MOLTEN METAL OVER?!", - "THE FIRE CANYON GETS PRETTY HOT, SO KEEP A LOOK OUT FOR JUMPS", - "TO KEEP YOU OFF THE HOT GROUND.", - "I'VE ALSO RELEASED SEVERAL BLUE COOLING BALLOONS YOU CAN USE TO DROP", - "THE SHIELD'S TEMPERATURE QUICKLY.", - "OH! AND WHEN YOU GET ACROSS, DON'T FORGET TO ACTIVATE", - "THE TELEPORT GATE IN THE BLUE SAGE'S LAB.", - "THEN WE'LL BE ABLE TO TELEPORT OVER AND MEET YOU!", - "GOOD LUCK!" + "GRAN! TENIU LES 20 CÈL-LULES NECESSARIES PER ALIMENTAR EL MEU ESCUT DE CALOR!", + "ARA ATENCIÓ, L'ESCUT NOMÉS PROTEGIRÀ EL VOSTRE ZOOMER", + "FINS QUE ARRIBA ALS 500 GRAUS, AIXÍ QUE INTENTA DE MANTENIR-LA FRESCA.", + "VOLAR SOBRE LA LAVA OBERTA T'ESCALFARÀ DEFINITIVAMENT RÀPID.", + "ACONSEGUIX ELS 500 GRAUS, I S'HA ACABAT.", + "ACABAT?! COM CREM EL METAL FOS?!", + "EL CANÓ DE FOC ES FA BASTANT CALOR, AIXÍ QUE ESTIGUEU ALS SANTS", + "PER MANTENIR-TE DEL TERRA CALOR.", + "TAMBÉ HEM LLANÇAT DIVERSOS GLOBUS DE REFREDERACIÓ BLAU QUE PODEU UTILITZAR PER DEIXAR", + "LA TEMPERATURA DE L'ESCUT RÀPIDAMENT.", + "OH! I QUAN TROBEU, NO OBLIDES ACTIVAR-TE", + "LA PORTA DEL TELEPORT AL LABORATORI DEL SALVI BLAU.", + "DESPRÉS PODREM TELEPORTAR-NOS I CONEIXR-TE!", + "BONA SORT!" ], "assistant-introduction-blue-eco-switch": [ - "HEY BABY. WHAT DO YOU SAY YOU AND I GO CRUISIN' ON THIS A-GRAV ZOOMER?", - "RULE NUMBER ONE: I DON'T DATE ANIMALS.", - "OH YOU DON'T KNOW WHAT YOU'RE MISSING, HE HEH.", - "LISTEN, IF YOU NEED SOMETHING TO KEEP YOU BUSY, MY FATHER ALWAYS TALKED", - "ABOUT AN ANCIENT PRECURSOR PIPELINE HIDDEN DEEP UNDERGROUND.", - "SOME OF THESE PIPES END IN VENTS FROM WHICH ECO FLOWS FREELY,", - "AND SOME HAVE BEEN CAPPED OFF SO THAT THE ECO IS SEALED BACK.", - "THERE MUST BE A WAY TO TURN THE CAPPED VENTS ON.", - "I TRACED PART OF THE PIPELINE BACK TO THE FORBIDDEN TEMPLE.", - "MAYBE YOU SHOULD LOOK THERE FOR SOME TYPE OF SWITCH." + "HOLA CARINYO. QUÈ DIUS TU I JO ANEM A CREUER EN AQUEST ZOOM A-GRAV?", + "REGLA NÚMERO U: NO TENC CITES AMB ANIMALS.", + "OH, NO SAPS QUÈ ET PERDS, HE HEH.", + "ESCOLTA, SI NECESSITES ALGUNA COSA QUE ET TINDI OCUPATS, EL MEU PARE SEMPRE PARLA", + "SOBRE UNA CONDUCTA PRECURSOR ANTIGA AMAGA A LA PROFUNDACIÓ SOTATERRA.", + "ALGUNES D'AQUESTES TUBACIONS ACABEN EN VENTS DES DE QUÈ ECO FLUIX LLIURE,", + "I ALGUNES S'HAN TANCAT PER QUE L'ECO ES SEGELLAT.", + "HI HA D'HAVER UNA MANERA D'ACTIVAR LES VENTES TAPETS.", + "VAIG RESSENYAR PART DE LA CONDUCCIÓ AL TEMPLE PROHIBIT.", + "POTSER HEU DE BUSCAR ALGUN TIPUS D'INTERRUPTOR." ], "assistant-introduction-race-bike": [ - "HEY BABY, WHAT'CHA WORKIN' ON?", - "BE CAREFUL WITH THAT! I'M TRYING TO FIGURE HOW TO TRANSPORT THE ZOOMER", - "USING THE TRANS-PADS THE PRECURSORS LEFT ALL OVER THE WORLD.", - "IF YOU COME ACROSS ONE OF THESE PADS I CAN LOCK ON TO YOUR COMMUNICATOR'S LOCATION", - "AND SEND YOU THE ZOOMER!", - "KEEP AN EYE OUT FOR A TRANS-PAD WHEN YOU EXPLORE MISTY ISLAND, AND WHEREVER ELSE YOU GO!" + "BEBÉ, EN QUÈ FUNCIONA?", + "ATENCIÓ AMB AIXÒ! ESTIC INTENT DE FIGURAR COM TRANSPORTAR EL ZOOM", + "UTILITZANT LES TRANS-PADS ELS PRECURSORS HAN SORTIT A TOT EL MÓN.", + "SI TROBEU UNA D'AQUESTS COIXINS, PUC BLOQUEAR-SE A LA UBICACIÓ DEL VOSTRE COMUNICADOR", + "I US ENVIA EL ZOOM!", + "ESTIGUEU UN TRANS-PAD QUAN EXPLOREU MITY ISLAND, I ON MÉS VAIG!" ], "assistant-lavatube-end-resolution": [ - "HEY! WHERE'S OL' SHORT, GREEN AND WRINKLY?", - "THIS IS TERRIBLE! FATHER IS MISSING!", - "I THINK GOL AND MAIA MAY HAVE KIDNAPPED HIM AS WELL!", - "RELAX, SWEETHEART. I GOT EVERYTHING UNDER CONTROL.", - "UNDER CONTROL?!", - "LURKER ARMIES CONTINUE TO GROW ACROSS THE LAND,", - "THE SAGES HAVE BEEN KIDNAPPED,", - "GOL AND MAIA HAVE GATHERED ENOUGH ECO", - "TO COMPLETE THEIR TERRIBLE PLAN,", - "AND TO STOP THEM, YOU'RE GOING TO HAVE TO", - "FIGHT YOUR WAY THROUGH THEIR CITADEL!", - "UH... YEAH. THAT ABOUT, UH... SUMS IT UP.", - "YOU'VE GOT TO RESCUE MY FATHER BEFORE IT'S TOO LATE!", - "AND JAK...", - "BE CAREFUL.", - "YEAH. WE WILL BE!" + "HEI! ON ÉS OL' CURT, VERD I ARRUGAT?", + "AIXÒ ÉS TERRIBLE! FALTA EL PARE!", + "CREO QUE EL GOL I LA MAIA TAMBÉ EL POTS HAGUIR SEGUESTRAT!", + "RELAXA'T, CARA. HO HO TENIU TOT BAIX CONTROL.", + "SOTA CONTROL?!", + "ELS EXÈRCITS LURKER CONTINUEN CREIXENT A LA TERRA,", + "ELS SABIS HAN SEGUTAT,", + "EL GOL I LA MAIA HAN RECOLLIT PROU ECO", + "PER COMPLETAR EL SEU TERRIBLE PLA,", + "I PER ATURAR-LOS, HAURÀS DE FER", + "LLUITA EL TEU CAMÍ PER LA SEVA CIUTADELLA!", + "UH... SÍ. AIXÒ, UH... RESUMIR.", + "HAS DE RESCATAR EL MEU PARE ANTES QUE SIGUI MASSA TARDA!", + "I COM...", + "VES AMB COMPTE.", + "SÍ. SEREM!" ], "assistant-lavatube-start-resolution": [ - "HA HA! ALL RIGHT!", - "WITH THESE ADDITIONAL POWER CELLS, I SHOULD BE ABLE TO SUPPLY THE HEAT SHIELD", - "WITH ENOUGH POWER TO STAND UP TO THIS LAVA.", - "BUT THE SHIELD STILL HAS A LIMIT.", - "IT WILL NOW WITHSTAND TEMPERATURES UP TO 800 DEGREES, BUT NO MORE.", - "SO KEEP AN EYE ON YOUR GAUGE.", - "I DON'T WANNA THINK ABOUT WHAT THOSE TEMPERATURES WOULD DO TO YOUR ZOOMER", - "IF THE SHIELD GIVES OUT.", - "YEAH, THE HEAT...", - "WHAT? THE ZOOMER? HEY! WHAT ABOUT US?!", - "DON'T YOU THINK WE COULD LOOK FOR A SAFER ROUTE TO GOL'S CITADEL?", - "LOOK, I'VE RELEASED MORE COOLING BALLOONS INTO THE TUBE.", - "SO YOU CAN USE THEM TO KEEP THE TEMPERATURE DOWN.", - "AND DON'T FORGET TO ACTIVATE THE TELEPORT GATE IN THE YELLOW SAGE'S LAB.", - "WE'RE COUNTING ON YOU." + "HA HA! TOT BÉ!", + "AMB AQUESTES CÈL-LULES DE POTÈNCIA ADDICIONALS, HAURI DE PODER SUMINISTRAR L'ESCUT TÈRMIC", + "AMB PROU POTÈNCIA PER FER AQUESTA LAVA.", + "PERÒ L'ESCUT ENCARA TÉ UN LÍMIT.", + "ARA RESISTIRA A TEMPERATURES DE FINS A 800 GRAUS, PERÒ NO MÉS.", + "AIXÍ DONCS, VISUALITZA EL TEU INDICAT.", + "NO VULL PENSAR EN QUÈ FARIEN AQUESTES TEMPERATURES AL TEU ZOOM", + "SI L'ESCUT CEDEIX.", + "SÍ, LA CALOR...", + "QUÈ? EL ZOOM? HEI! QUÈ PASSA AMB NOSALTRES?!", + "NO CREUS QUE PODRIEM BUSCAR UNA RUTA MÉS SEGURA A LA CIUTADELLA DE GOL?", + "MIREU, HE LLANÇAT MÉS GLOBOS DE REFREDERACIÓ AL TUBO.", + "PERQUÈ PODEU UTILITZAR-LES PER MANTENIR LA TEMPERATURA BAIXA.", + "I NO OBLIDES ACTIVAR LA PORTA DEL TELEPORT AL LABORATORI DEL SALVI GROC.", + "COMPTEM AMB TU." ], "assistant-reminder-1-blue-eco-switch": [ - "I'M SURE IF YOU LOOKED INSIDE THE PRECURSOR FORBIDDEN TEMPLE", - "YOU'LL FIND A WAY TO TURN ON THAT CAPPED BLUE ECO VENT ON SENTINEL BEACH." + "ESTIC SEGUR SI HEU MIRAT A DINS DEL TEMPLE PROHIBIT DEL PRECURSOR", + "TROBARÀS UNA MANERA D'ACTIVAR AQUEST VENT ECO BLAU TAPAT A LA PLATJA SENTINEL." ], "assistant-reminder-1-generic": [ - "HEY GUYS! KEEP COLLECTING POWER CELLS", - "THEY'RE THE KEY TO CONTINUING OUR JOURNEY NORTH." + "HOLA NOIS! SEGUIR RECOLLANT CÈL-LULES D'ENERGIA", + "SÓN LA CLAU PER CONTINUAR EL NOSTRE VIATGE AL NORD." ], "assistant-reminder-1-race-bike": [ - "I'VE DEFINITELY FIGURED OUT HOW TO USE THE TRANS-PADS.", - "NOW GO TO MISTY ISLAND AND I'LL SEND THE ZOOMER OVER TO YOU." + "DEFINITIVAMENT HE DESCOBRIT COM UTILITZAR ELS TRANS-PADS.", + "ARA VES A MITY ISLAND I T'ENVIARÉ EL ZOOMMER." ], "assistant-village2-introduction": [ "WHOA!", - "I DON'T THINK I'LL EVER GET USED TO THAT TELEPORTER TINGLING SENSATION.", - "HEY!", - "IT LOOKS LIKE THE BLUE SAGE THREW A PARTY.", - "OH MY! ROCK VILLAGE IS ON FIRE!", - "ONE HECK OF A PARTY.", - "NO, NO! I MEAN ROCK VILLAGE IS BEING BOMBARDED WITH FLAMING BOULDERS!", - "OH! AND IT LOOKS LIKE THE BLUE SAGE IS WORKING ON A LEVITATION MACHINE TO MOVE THEM.", - "ASSUMING IT'S OPERATIONAL, WE'RE GONNA NEED POWER CELLS TO FUEL IT.", - "I GUESS YOU TWO ARE GOING TO HAVE TO FIND SOME MORE.", - "WE'D BETTER TAKE A LOOK AT HIS NOTES.", - "JAK, GO CHECK ON THE VILLAGERS, THEN COME BACK AND GIVE US AN UPDATE.", - "AND TAKE THE FURBALL WITH YOU!" + "NO CREO QUE M'ACONSEGUIRÉ MAI A AQUESTA SENSACIÓ DE POLIGUILLOSO DEL TELEPORTADOR.", + "HEI!", + "SEMBLA QUE EL SAVI BLAU HA FET UNA FESTA.", + "OH EL MEU! ROCK VILLAGE ESTÀ EN FOC!", + "UNA FESTA D'UNA FESTA.", + "NO, NO! VULL DIR QUE EL POBLE DE LA ROCA ESTÀ SENT BOMBARDEJAT AMB PEDRES EN FLAMES!", + "OH! I SEMBLA QUE EL SAVI BLAU ESTÀ TREBALLANT EN UNA MÀQUINA DE LEVITACIÓ PER MOURE-LOS.", + "SUPOSANT QUE ÉS OPERACIONAL, NECESSITAREM CÈL-LES ELÈCTRICS PER ALIMENTAR-LO.", + "SUPUESTO QUE VOUS DOS HAUREU DE TROBAR UN MÉS.", + "MILLOR FER UN ULL A LES SEVES NOTES.", + "JAK, VES A CONSULTAR ELS VABLANTS, DESPRÉS TORNA I DONAR-NOS UNA ACTUALITZACIÓ.", + "I EMPORTA'T EL FURBALL AMB TU!" ], "assistant-village2-introduction-flutflut": [ - "BACK AGAIN, BOYS?", - "\"BOY\"?", - "HEY BABE, I'M A FULL-GROWN...", + "TORNAR, NOIS?", + "\"NOI\"?", + "ELI BABE, SÓC UNA MAJOR...", "AH...", - "SOMETHIN'... SOMETHIN' FUZZY.", - "OH, GUESS WHAT? WITH PERMISSION FROM OUR VILLAGE BIRDWATCHER,", - "I'VE OUTFITTED THE BABY FLUT-FLUT WITH A RIDING SADDLE.", - "IT APPEARS THERE'S A PRECURSOR TRANS-PAD IN THE BOGGY SWAMP.", - "IF YOU CAN FIND IT, I'LL SEND YOU THE FLUT-FLUT IN FULL RIDING REGALIA.", - "HER LONG JUMP MIGHT COME IN HANDY WHEN YOU'RE CROSSING THE TAR." + "ALGUNA COSA... ALGUNA COSA NO FUZZ.", + "OH, ENDEVINEU QUÈ? AMB EL PERMIS DEL NOSTRE OBSERVADOR D'OCELLS,", + "HE EQUIPAT EL BABY FLUT-FLUT AMB UNA SILLA D'EQUITAT.", + "SEMBLA QUE HI HA UN TRANS-PAD PRECURSOR AL PANTÀS BOGGY.", + "SI EL PODEU TROBAR, T'ENVIÉ LA FLAUT-FLUT A FULL RIDING REGALIA.", + "EL SEU SALT DE LLARGADA POT SER ÚTIL QUAN ESTÀS TRAVERSANT EL QUITRAT." ], "assistant-village2-introduction-robbers": [ - "HEY, YOU TWO!", - "I KNOW WHERE YOU CAN FIND ANOTHER POWER CELL!", - "ACCORDING TO HIS NOTES,", - "A COUPLE OF DAYS AGO FLYING LURKERS STOLE ONE FROM THE BLUE SAGE,", - "AND FLEW OFF INTO THE PRECURSOR BASIN.", - "I'LL BET YOU COULD RUN THOSE LURKERS DOWN WITH YOUR ZOOMER", - "UNTIL YOU FIND THE ONE WITH THE POWER CELL.", - "YOU'LL FIND THE ZOOMER ON THE TRANS-PAD NEAR THE ENTRANCE TO THE PRECURSOR BASIN." + "ELI, VOUS DOS!", + "SÉ ON PODEU TROBAR UNA ALTRA CÈL-LA D'ENERGIA!", + "D'ACORD AMB LES SEVES NOTES,", + "FA UN PARELL DE DIES, ELS FLYING LURKERS VAN ROBAR UN A LA SÀVIA BLAU,", + "I VA VOLAR A LA CONCA DEL PRECURSOR.", + "APOSTO A QUE PODRÍEU CÓRRER AQUESTS LURKERS AMB EL VOSTRE ZOOM", + "FINS QUE TROBES EL DE LA CÈL-LA D'ALIMENTACIÓ.", + "TROBAREU EL ZOOMMER AL TRANS-PAD A PROP DE L'ENTRADA A LA CONCA DEL PRECURSOR." ], "assistant-village2-introduction-room": [ - "APPARENTLY THE PRECURSOR STRUCTURE JUST OFF THE COAST", - "LEADS TO AN UNDERWATER LOST CITY.", - "THE BLUE SAGE HAS BEEN TRYING TO FIGURE OUT", - "HOW HE CAN BRING ONE OF THE CHAMBERS TO THE SURFACE.", - "BUT HE WAS NEVER SUCCESSFUL.", - "YOU SHOULD CHECK IT OUT!", - "UH... AREN'T THERE A LOT OF, UM...", - "LURKER SHARKS IN THAT WATER?", - "WHY? ARE YOU SCARED?", - "ME? OF COURSE NOT!", - "JUST LOOKIN' OUT FOR JAK HERE!", - "YOU, UH, HEH...", - "YOU KNOW WHAT A CHICKEN HE CAN BE.", - "WELL, IF YOU SWIM OUT OVER THE CORAL REEF, I DOUBT THE LURKER SHARKS WILL BOTHER YOU.", - "THEY DON'T LIKE SHALLOW WATER." + "SEMBLA SER QUE L'ESTRUCTURA PRECURSORA ÉS A TOCAR DE LA COSTA", + "PORTA A UNA CIUTAT PERDUDA SUBMARINA.", + "EL SÀLVI BLAU HA INTENT DE DESCOBRIR", + "COM POT FER UNA DE LES CAMBRES A LA SUPERFICIE.", + "PERÒ MAI VA TENIR ÉXIT.", + "HEU DE CONSULTAR-HO!", + "UH... NO HI HA MOLTES, UM...", + "ELS TAURONS EN AQUELLA AIGUA?", + "PER QUÈ? TENS POR?", + "JO? ÉS CLAR QUE NO!", + "NOMÉS BUSQUEU JAK AQUÍ!", + "TU, UH, HEH...", + "SABEU QUIN POLLATRE POT SER.", + "BÉ, SI NEDES PER L'ESCELL DE CORALL, DUBTO QUE ELS TAURONS AMB TAMBÉ ET MOLESTEN.", + "NO ELS AGRADA L'AIGUA POCA PROFUNDA." ], "assistant-village2-reminder-1-flutflut": [ - "I'M SURE THE FLUT-FLUT COULD BE OF USE TO YOU IN THE SWAMP.", - "FIND THE TRANS-PAD AND I'LL TELEPORT HER TO YOU." + "SEGUR QUE EL FLUT-FLUT ET PODRÀ SER ÚTIL AL PANTÀ.", + "TROBA EL TRANS-PAD I TE LA TELEPORTAREM." ], "assistant-village2-reminder-1-robbers": [ - "I'LL TELEPORT YOUR ZOOMER TO YOU BY THE PRECURSOR BASIN,", - "SO YOU CAN CHASE DOWN THOSE FLYING LURKERS WE WERE TALKING ABOUT." + "TELEPORTAREM EL TEU ZOOMER PER LA CONCA DEL PRECURSOR,", + "PERQUÈ POGUEU PERSEGUIR AQUESTS AGUIDORS VOLANTS DELS QUE ESTÀVEM PARLANT." ], "assistant-village2-reminder-1-room": [ - "DID YOU SWIM OUT TO THE LOST PRECURSOR CITY YET?", - "YOU SHOULD REALLY TRY AND RAISE THE ROOM THE BLUE SAGE WAS AFTER." + "JA HAS NADAT A LA CIUTAT PRECURSORA PERDUDA?", + "DE VERITAT HAURÀS D'INTENTAR I APUJAR L'HABITACIÓ QUE LA SAVIA BLAU ERA DESPRÉS." ], "assistant-village2-resolution": [ - "GREAT, YOU HAVE THE CELLS FOR THE MACHINE!", - "THEY OUGHT TO PROVIDE ENOUGH POWER TO LIFT THAT BOULDER.", - "THERE WE GO!", - "NOW, BE CAREFUL FACING THAT MONSTER LURKER AT THE TOP.", - "WAIT! UH...", - "I'LL STAY HERE AND PROTECT KEIRA!", - "JAK, I THINK YOU'RE READY TO HANDLE THAT MONSTER WITHOUT ME.", - "OH, REALLY HEROIC OF YOU." + "GENIAL, TENIU LES CÈL-LULES PER A LA MÀQUINA!", + "HAN DE PROPORCIONAR SUFICIENT POTÈNCIA PER AIXAR AQUEST RODÓ.", + "ALLÀ ANEM!", + "ARA, TENIU CUENTA D'ENFRONTAR-SE A AQUEST MONSTER LURKER A LA CIMA.", + "ESPERA! UH...", + "EM QUEDARÉ AQUÍ I PROTEGERÉ A KIRA!", + "JAK, CREC QUE ESTÀS PREPARAT PER MANEJAR AQUEST MONTRE SENSE MI.", + "OH, REALMENT HEROIC PER PART TEVA." ], "assistant-village3-reminder": [ - "HEY GUYS! KEEP COLLECTING POWER CELLS.", - "THEY'RE THE KEY TO CONTINUING OUR JOURNEY NORTH." + "HOLA NOIS! SEGUIR RECOLLANT CÈL-LULES D'ENERGIA.", + "SÓN LA CLAU PER CONTINUAR EL NOSTRE VIATGE AL NORD." ], "billy-accept": [ - "GOOD! THOSE RATS WILL BE BACK ANYTIME.", - "SHOOT ALL THEM RATS, AND KEEP 'EM", - "FROM EATING AT LEAST ONE OF THEM SNACKS." + "BÉ! AQUESTES RATES TORNARAN EN QUALSEVOL MOMENT.", + "DISPARA A TOTES ELS RATES I GUARDEU-LES", + "DE MENJAR COMMENÇAMENT UN D'ELLS SNACKS." ], "billy-introduction": [ - "HOWDY, FRIENDS! ENJOYIN' MY BEAUTIFUL SWAMP?", - "I OWN THESE HERE PARTS.", - "EVERYTHING THAT DOESN'T SINK INTO THE MUD, THAT IS! HA HA HA...", - "JUDGING BY THE SMELL, I'D WAGER YOUR", - "BATHTUB SANK IN THE MUD LONG AGO.", - "WHAT'S A BATHTUB?", - "ANYWAY I GOT BIGGER PROBLEMS NOW...", - "SEEMS SOME NASTY LURKER VARMINTS ARE GROUSIN' ABOUTS,", - "SNATCHIN' EVERYTHING THEY CAN GET THEIR GRUBBY LITTLE PAWS ON.", - "AND SCARIN' AWAY MY PET HIPHOG, FARTHY.", - "HE'S BEEN MISSIN' FOR NIGH ON TO A COON'S AGE.", - "I'VE BEEN PUTTIN' OUT HIS FAVORITE SNACK,", - "BUT THOSE ORNERY SWAMP RATS KEEP STEALIN' EM!", - "IF YOU COULD KEEP THOSE PESKY CRITTERS AWAY LONG ENOUGH,", - "I JUST KNOW FARTHY WOULD SMELL THEM VITTLES AND COME BACK!", - "WILL YA HELP ME OUT?" + "BON DIA, AMICS! GAUDIS DEL MEU PRECIOS PANTÀ?", + "SOC AQUESTES PARTS AQUÍ.", + "TOT EL QUE NO S'ENFONSA AL FANG, ÉS! HA HA HA...", + "A JUTJAR PER L'OLOR, APOSTARIA PER LA TEVA", + "LA BANYERA S'ENFANSA EN EL FANG FA MOLT.", + "QUÈ ÉS UNA BANYERA?", + "DE TOTS ARA TENIU PROBLEMES MÉS GRANS...", + "SEMBLA QUE ALGUNES VARMINTS LURKER DESPERTS ESTÀ RECORDANT,", + "ARRABAR TOT EL QUE PODEN POSAR-SE A LES SEVES PETITES PUTES.", + "I ESPANTAR EL MEU HIFOG MASCOTA, FARTHY.", + "HA PERDIT DES DE FA NIT A L'EDAT D'UN COON.", + "HE ESTUT FER EL SEU PRINCIPAL PREFERIT,", + "PERÒ AQUESTES RATES DEL PANTÀ SEGUEN ROBANT-LES!", + "SI PODEU GUARDAR AQUESTS CRÍTOLS INFANTILS PROU TEMPS,", + "NOMÉS SÉ QUE EN FARTHY LES OLORARIA VITTLES I TORNARÀ!", + "M'AJUDARÀS?" ], "billy-reject": [ - "WELL, IF YOU CHANGE YOUR MIND, YOU KNOW WHERE TO FIND ME!", - "HE HE HE HE HEH..." + "BÉ, SI CANVIES D'OPINIÓ, SABES ON TROBAR-ME!", + "HE HE HE HE HE HE..." ], "billy-reminder-1": [ - "AHH, Y'ALL BACK TO HELP STOP THEM RATS?" + "AHH, TORNAREU PER AJUDAR A PARAR LES RATES?" ], "billy-resolution": [ - "WELL FRY MY HIDE! YOU SURE KNOW HOW TO SHOOT!", - "THANKS A HEAP FOR THE HELP." + "BÉ FREGIR LA MEVA PEL! SEGUR QUE SABES DISPARAR!", + "MOLTES GRÀCIES PER L'AJUDA." ], "bird-lady-beach-resolution": [ - "OH MY, I HOPE THE POOR DEAR'S OKAY.", - "HERE'S A POWER CELL FOR YOUR VALOR.", + "OH, ESPERO QUE LA POBRE ESTIMADA ESTIGUI BÉ.", + "AQUÍ TENIU UNA CÈL-LA DE POTÈNCIA PER AL TEU VALOR.", "MAMA!", "MAMA!", "OH NO! NO, NO, NO, NO!", - "LOOK... ISN'T THAT CUTE? IT THINKS YOU'RE ITS MAMA.", - "EH? I'M NOT YOUR MOM! YOU SEE ANY FEATHERS HERE?", - "OH, LOVE AT FIRST SIGHT! AH...", - "LISTEN, BOYS, I'LL TAKE THIS LITTLE CHICK BACK TO THE VILLAGE WITH ME", - "AND WORK WITH THE SAGE TO TAKE CARE OF HER." + "MIRA... NO ÉS BONÍ? PENSA QUE TU ÉS LA SEVA MAMA.", + "EH? NO SÓC LA TEVA MARE! VEU ALGUNA PLOMES AQUÍ?", + "OH, AMOR A PRIMERA VISTA! AH...", + "ESCOLTA, NOIS, EMPORTARÉ AQUEST POLLET AL POBLE AMB MI", + "I TREBALLAR AMB EL SAVI PER CUIDAR-LA." ], "bird-lady-introduction": [ - "OH MY, WHAT A HORRIBLY SICK LITTLE BIRD.", - "HUH! YOU DON'T LOOK SO GOOD YOURSELF, LADY!", - "OH, SORRY. I THOUGHT YOU WERE A SPOTTED", - "ORANGE-BELLIED RAIN FRAY.", - "YOU KNOW, YESTERDAY I SAW SOME", - "TERRIBLY VICIOUS CREATURES CAPTURE", - "A MOTHER FLUT-FLUT NEAR THE BEACH.", - "NOW THERE'S THIS POOR LITTLE ORPHAN EGG", - "SITTING IN A NEST AT THE TOP OF THE CLIFF", - "AND I CAN'T GET TO IT.", - "IF YOU COULD CLIMB UP THERE AND PUSH IT OFF, I'VE PILED", - "SOME HAY DOWN AT THE BASE TO CATCH IT SAFELY.", - "DO AN OLD LADY A FAVOR, AND I'LL GIVE YOU A POWER CELL." + "AI, QUIN OCELET HORRORMENT MALAT.", + "HUH! TU NO FEU TAN BÉ, SENYA!", + "OH, HO SENTO. VA PENSAR QUE ERES UNA TACATADA", + "PLUJA DE PANTA TARONJA.", + "SABEU, AHIR VA VEURE ALGUNES", + "CAPTURA DE CRIATURES TERRIBILMENT VICIOSES", + "UNA MARE FLUT-FLUT A PROP DE LA PLATJA.", + "ARA HI HA AQUEST PETIT OU ORFE", + "ASSEGUT EN UN NIU AL CIM DEL PENYA-SEGAT", + "I NO HI PUC ARRIBAR.", + "SI PODEU PUJAR-HI AQUÍ I EMPUJAR-LO FORT, JO HE PILAR", + "ALGUNES PUNTEN A LA BASE PER ATRAPAR-HO SEGUR.", + "FES UN FAVOR A UNA VELLA SENYA I ET DONARÉ UNA CÈLULA DE POTÈNCIA." ], "bird-lady-reminder-1": [ - "OH, HELLO AGAIN. DID YOU BOYS FIND THAT BLUE EGG ON THE CLIFF?", - "PUSH IT OFF THE EDGE AND I'LL GIVE YOU A POWER CELL!" + "OH, HOLA DE NOU. NOIS HEU TROBAT AQUELL OU BLAU AL CINGALL?", + "EMPENTEU-LO PER LA BORDA I ET DONARÉ UNA CÈL-LA DE POTÈNCIA!" ], "bird-lady-reminder-2": [ - "ARE YOU BOYS STILL PICKING AROUND HERE? HO HO HO.", - "I'LL BET THAT POOR LITTLE BLUE EGG ON THE CLIFF", - "IS GETTING AWFULLY COLD BY NOW.", - "GO SAVE IT BY PUSHING IT OFF THE EDGE OF THE CLIFF,", - "AND I'LL GIVE YOU A POWER CELL." + "NOIS ESTEU ESCOLTANT PER AQUÍ? HO HO HO.", + "APOTARÉ AQUELL POBRET OU BLAU AL CINGALL", + "A HORES D'ARA ESTÀ FREDANT MOLT.", + "VES A SALVAR-LO EMPUJANT-LO PER LA VOSTA DEL CINGALL,", + "I ET DONARÉ UNA CÈL-LA DE POTÈNCIA." ], "bluesage-resolution": [ - "GOOD WORK, FELLOWS! OLD SAMOS WAS RIGHT ABOUT YOU!", - "GREAT PILES OF PRECURSOR METAL!", - "THAT INSIDIOUS MECHANICAL CREATION", - "MUST NOT BE ALLOWED TO WREAK ITS TERRIBLE HAVOC!", - "I WILL TRY TO ACTUATE THE SHIELD DOOR", - "BY ELICITING A CONDUIT OF ENERGY", - "BETWEEN MYSELF AND THE VAST PORTAL BELOW!", - "UH... YEAH. YOU DO THAT. WE'LL UH... JUST GO FIND MORE HELP.", - "WEIRDO!" + "BONA FEINA, COMPANYS! EL VELL SAMOS TENIA RAÇA SOBRE TU!", + "GRAN PILOTES DE METALLS PRECURSORS!", + "AQUELLA CREACIÓ MECÀNICA INSIDIOSA", + "NO S'HA DE PERMETR QUE FER EL SEU TERRIBLE DESTR!", + "INTENTARÉ ACTIVAR LA PORTA DE L'ESCUT", + "EN OBTENIR UN CONDUCT D'ENERGIA", + "ENTRE JO MES I EL GAST PORTAL DE SEGÜENT!", + "UH... SÍ. TU FAS AIXÒ. ANAREM... NOMÉS VA A TROBAR MÉS AJUDA.", + "BRANY!" ], "death-0181": [ - "DON'T STEP INTO THE LIGHT, JAK! DON'T STEP INTO THE LIGHT!" + "NO ENTRES A LA LLUM, JAK! NO ENTREIXIS A LA LLUM!" ], "death-0182": [ - "HEY, JAK! CAN I...", - "HAVE YOUR INSECT COLLECTION?" + "ELI, JAK! PUC...", + "TENIU LA TEVA COL-LECCIÓ D'INSECTES?" ], "death-0184": [ - "WHILE YOU'RE DOWN THERE, EHM...", - "COULD YA RUB MY FEET?" + "MENTRE ÉS AQUÍ BAIX, EHM...", + "PODEU FREGAR-ME ELS PEUS?" ], "death-0186": [ - "DON'T WORRY! I'LL AVENGE YOU!", - "...NOT." + "NO ET PREOCUPIS! ET VENJARÉ!", + "...NO." ], "death-0187": [ - "WELL, UH...", - "BETTER YOU THAN ME." + "BÉ, UH...", + "MILLOR TU QUE JO." ], "death-0191": [ - "THAT LOOKS LIKE IT HURT.", - "SHOULD I CALL FOR BACKUP?" + "SEMBLA QUE DOL.", + "HE DE TRUCAR PER FER UNA CÒPIA DE SEGURETAT?" ], "death-0193": [ - "STEP ONE: STAY ALIVE!", - "STEP TWO...", - "THINK ABOUT NOT DOING SOMETHING LIKE THAT AGAIN!" + "PRIMER PAS: SEGUIR VIU!", + "DOS PAS...", + "PENSEU EN NO FER UNA COSA COM AIXÒ MOLTA!" ], "death-0195": [ - "I WAS RIGHT BEHIND YA, JAK!", - "...REALLY. I WAS." + "ESTAVA JUST DARRERE TEU, JAK!", + "...DE VERITAT. JO ERA." ], "death-0197": [ - "HEIMLICH! UH... STRETCHER!", - "YUCK... BREATH MINT?" + "SECRETAMENT! UH... CAMINA!", + "JAJA... MENTA ALÈ?" ], "death-0199": [ - "I'LL SAY SOMETHING REALLY TEARY AT THE FUNERAL, LIKE...", - "...\"HOW AM I GONNA GET CHANGED BACK NOW?!\"" + "DIRÉ ALGUNA COSA REALMENTE PLORANT AL FUNERAL, COM...", + "...\"COM TORNARÉ A CANVIAR ARA?!\"" ], "death-0202": [ - "SAY GOODNIGHT, JAK!" + "DIU BONA NIT COM!" ], "evilbro-misty-end": [ - "THOSE TWO COULD PROVE TO BE TROUBLE.", - "DON'T WORRY DEAR BROTHER, I'LL DISPATCH MY LURKER ARMY TO DEAL WITH THEM.", - "JUST MAKE SURE THEY DON'T GET TOO CLOSE TO OUR NORTHERN OPERATIONS.", - "I DOUBT THEY'LL GET THAT FAR...", - "BUT IF THEY DO, A SURPRISE WILL BE WAITING FOR THEM IN ROCK VILLAGE.", - "SO...YOU'RE GOING TO LET...KLAWW OUT OF HIS CAGE?", - "I THINK IT'S WORTH THE RISK.", - "INDEED..." + "AQUESTS DOS POGUEN PROVAR SER PROBLEMES.", + "NO ET PREOCUPIS BENVOLGUT GERMÀ, ENVIARÉ EL MEU EXÈRCIT DE LURKER PER FER AMB ELLS.", + "NOMÉS ASSEGUIR-SE QUE NO S'APROPIN MASSA A LES NOSTRES OPERACIONS AL NORD.", + "DUBTE QUE ARRIBIN TAN LLUNY...", + "PERÒ SI HO FAN, UNA SORPRESA ELS ESPERAR A ROCK VILLAGE.", + "LLAVORS... DEIXARÀS... KLAWW FORA DE LA SEVA GÀBIA?", + "CREC QUE VAL LA PENA ARRISCAR-SE.", + "EN EFECTE..." ], "explorer-introduction": [ - "WELL, HELLO THERE MY DEAR BOY.", - "YOU'VE CAUGHT AT A MOST INOPPORTUNE MOMENT.", - "I WAS TO SET OFF ON MY JOURNEYS YESTERDAY", - "BUT I SEEM TO BE A SPOT SHORT ON THE OLD PRECURSOR ORBS.", - "I WOULD'VE PLEDGED MY WORD THAT I HAD 90 OF THEM,", - "BUT I GATHER THAT YOUR YOUNG FRIEND, YOU KNOW, THE", - "LITTLE ANNOYING MISERABLY UGLY ONE", - "MIGHT HAVE JUST PILFERED THEM AS A SORT OF A SPOT OF FUN.", - "ANYWAY, WOULD YOU BE KIND ENOUGH TO LOAN YOUR DEAR OLD UNCLE", - "90 PRECURSOR ORBS SO HE CAN GET UNDERWAY?", - "I WOULD OFFER YOU A POWER CELL IN RETURN." + "BÉ, HOLA MEU ESTIMAT NOI.", + "HAS PASSAT EN UN MOMENT MÉS INOPPORTUN.", + "JA HAVIA DE PARTICIPAR EN ELS MEUS VIATGES AHIR", + "PERÒ SEMBLÒ SER UN PUNT CURT A LES VELLS ORBS PRECURSORS.", + "HAURÍA COMPROMAT LA MEVA PARAULA QUE TENIA 90 D'ELLS,", + "PERÒ SOM QUE EL TEU AMIC JOVE, JA SABEU, EL", + "PETIT MOLT MOLT MISSERABLEMENT LLETY", + "POSSIBLE QUE ELS HAGUEU ROBAT COM UNA MENA DE LLOC DE DIVERSIÓ.", + "DE TOTS IGUES, SERÀS PROU AMABLE DE PRESTAR EL TEU VELL VELL TIÓ", + "90 ORBS PRECURSORS PER PODER POSAR EN MARCHA?", + "T'OFERIARIA UNA CÈL-LA DE POTÈNCIA A COMPARTIR." ], "explorer-reminder-1": [ - "WHAT? YOU DON'T HAVE THE FULL STASH? HARRUMPH!", - "WELL, ANY LESS THAN 90 PRECURSOR ORBS", - "AND I SHAN'T HAVE A CHANCE TO GET UNDERWAY, DEAR BOY." + "QUÈ? NO TENIU L'ASCOLTA COMPLETA? HARRUMPH!", + "BÉ, MENYS DE 90 ORBS PRECURSORS", + "I NO TINDRÉ OPORTUNITAT DE POSAR EN MARCHA, ESTIMAT NOI." ], "explorer-reminder-2": [ - "OH SEE HERE, THE DEAL IS FOR 90 PRECURSOR ORBS FOR A POWER CELL.", - "A DOWNRIGHT EVEN TRADE." + "OH MIREU AQUÍ, L'OFERTA ÉS DE 90 ORBS PRECURSORS PER A UNA CÈL-LA DE POTÈNCIA.", + "UN COMERÇ PARÍS AL DIGIT." ], "explorer-resolution": [ - "I SEE YOU TWO ARE BACK TO MAKE THE TRADE. GOOD, GOOD, JOLLY GOOD!", - "EH, YOU HAVE THE UH, PRECURSOR ORBS THAT WE AGREED ON?", - "I HOPE YOU PUT THIS HARD-EARNED POWER CELL TO GOOD USE.", - "CHEERIO, TA TA, BYE BYE!" + "VEGEU QUE DOS HEU TORNAT A FER EL COMERÇ. BÉ, BÉ, BÉ BÉ!", + "EH, TENIU EL UH, ORBS PRECURSORS QUE HEM ACCORDAT?", + "ESPERO QUE POSEU BON ÚS AQUESTA CÈL-LA D'ENERGIA GUANYADA.", + "CHEERIO, TA TA, ADÉU!" ], "farmer-introduction": [ - "GOTTA MILK THOSE YAKOWS, GOTTA MILK THOSE YAKOWS...", - "OH! IT'S YOU... JUST RESTIN' MY TIRED BONES.", - "I'VE BEEN TRYING TO GET THOSE ORNERY YAKOWS", - "BACK INTO THE PEN ALL DAY!", - "SOME STRANGE CREATURES TRIED TO STEAL 'EM EARLIER.", - "YOU THINK YOU CAN HELP AN OLD MAN TRY TO GET 'EM BACK INTO THE CORRAL?" + "HAIG DE MLEIR AQUESTS IACUS, HAGO LLLET AQUELS IACUS...", + "OH! ETS TU... NOMÉS REPOSA ELS MEUS OSSOS CANSATS.", + "HE INTENT D'ACONSEGUIR AQUESTS YAKOWS ORNERY", + "TORNAR A LA PENSA TOT EL DIA!", + "ALGUNES CRIATURES ESTRANYES VAN INTENTAR DE ROBAR-LES ANTERIOR.", + "CREUS QUE PODEU AJUDAR A UN VELL A INTENTAR-LOS TORNAR AL CORRAL?" ], "farmer-reminder-1": [ - "HEY! MY YAKOWS ARE STILL ON THE LOOSE!", - "EH, COULD YOU BRING 'EM BACK FOR ME ALREADY?" + "HEI! ELS MEUS YAKOWS ENCARA ESTAN FALTS!", + "EH, JA ELS PODRIES TORNAR PER A MI?" ], "farmer-reminder-2": [ - "THOSE DARN YAKOWS ARE STILL ROAMIN' FREE.", - "AIN'T YOU GONNA CHASE 'EM INTO THE CORRAL ALREADY?" + "AQUELS DARN YAKOWS ENCARA ESTAN LLIURES.", + "NO JA ELS PERSEGUIRÀS AL CORRAL?" ], "farmer-resolution": [ - "AH, WELL DONE MY BOY. YOU ACTUALLY GOT THOSE FLEABAGS PACK INTO THE PEN.", - "NOW I CAN SLEEP IN PEACE. TAKE THIS POWER CELL FOR YOUR TROUBLE." + "AH, BEN FEIT EL MEU NEN. EN REALITAT TENIU AQUESTS PAQUETS DE FLEABAGS A LA BOPLINA.", + "ARA PUC DORMIR EN PAU. PRENEU AQUESTA CÈL-LA D'ENERGIA PER AL SEU PROBLEMA." ], "finalbosscam-white-eco": [ - "LIGHT ECO! IT DOES EXIST!", - "THEY MUST NOT BE ALLOWED TO GET IT!" + "ECO LLUM! SÍ EXISTEIX!", + "NO S'HA DE PERMITIR ACONSEGUIR-HO!" ], "fisher-accept": [ - "THERE ARE TWO TYPES OF GOOD FISH TO CATCH:", - "ONE-POUND FISHIES, AND FIVE-POUND FISHIES.", - "HEH. IF YOU MISS 20 POUNDS OF GOOD FISH", - "THEN I'M GONNA TAKE ME NET BACK FROM YA!", - "THERE ARE POISONOUS EELS IN THIS RIVER.", - "CATCH EVEN ONE OF THEM BOOGERS", - "AND YOU'LL POISON THE WHOLE DARN CATCH!" + "HI HA DOS TIPUS DE BONS PEIXOS PER PASSAR:", + "PEIXOS D'UNA LLURA, I PEIXOS DE CINQUE LLURES.", + "HEH. SI ET PERDIS 20 LLIURES DE BON PEIX", + "LLAVORS EM TORNARÉ A LA NETA!", + "EN AQUEST RIU HI HA ANGULES VERINOSES.", + "ATRAPEU FINS I TOT UN D'ELLS BOOGERS", + "I ENVERINARÀS TOTA LA MALTA PIRAGA!" ], "fisher-introduction": [ - "WHAT DO YOU HAVE IN THE BASKET?", - "NOTHING TO TALK ABOUT.", - "THEM MONSTERS PATROLIN' THE OCEAN", - "TOOK A BITE OUT OF ME FISHIN' RIG.", - "AND NOW THEY'RE GOBLIN' UP ME CATCH!", - "NO MATTER WHAT I TRY, I CAN'T SEEM TO CATCH A SINGLE FISH IN THIS RIVER.", - "WHOO! MAYBE... IT'S YOUR BREATH.", - "YOU THINK YOU CAN DO BETTER?", - "TRY SCOOPIN' UP RIVER FISH WITH A TINY NET!", - "I'LL GIVE YOU A POWER CELL", - "IF YOU CAN CATCH 200 POUNDS OF THEM CRITTERS!", - "AND I'LL LET YOU AND SHRIMP HERE", - "USE MY SPEEDBOAT TO GET TO MISTY ISLAND.", - "YOU'S WANT TO TRY THE CHALLENGE?" + "QUÈ TENIU A LA CISTELLA?", + "RES DE QUÈ PARLAR.", + "ELS MONSTERS PATRULLEN L'OCEÀ", + "M'HA PASSAT UNA MOSQUETA DE PESCA.", + "I ARA M'AGARAN EN GOBLIN'!", + "PER QUÈ INVESTI, SEMBLA QUE NO PUC AGAFAR UN SOL PEIX EN AQUEST RIU.", + "WHOO! POTSER... ÉS LA TEVA RESPIRACIÓ.", + "CREUS QUE PODEU FER MILLOR?", + "PROVUEU A PASSAR EL PEIX DE RIU AMB UNA XARXA PEQUETA!", + "ET DONARÉ UNA CÈL-LA DE POTÈNCIA", + "SI PODEU ATRAPAR 200 LLIURES D'ELLS CRÍTRES!", + "I ET DEIXAREM AQUÍ I GAMBATES", + "UTILITZA LA MEVA LLANXA PER ARRIBAR A MITY ISLAND.", + "VOLS PROVAR EL REPTE?" ], "fisher-reject": [ - "WELL, IF YOU WANT TO TRY FOR THE POWER CELL SOMETIME", - "YOU KNOW WHERE TO FIND ME." + "BÉ, SI VOLS PROVAR LA CEL-LULA POTÈNCIA ALGUNA VEGADA", + "SABES ON TROBAR-ME." ], "fisher-reminder-1": [ - "WANT TO TRY AND BEAT THE RIVER, DO YA?" + "VOLS INTENTAR VENCER EL RIU, OI?" ], "fisher-resolution": [ - "YOU DID IT! YOU CAUGHT 200 POUNDS OF FISH!", - "NOT BAD FOR A COUPLE OF LAND LUBBERS!", - "HERE'S THE POWER CELL I PROMISED", - "AND YOU CAN USE MY BOAT IN THE VILLAGE DOCK", - "WHENEVER YOU LIKE!" + "HO VAS FER! HAS PASSAT 200 QUILOS DE PEIX!", + "NO MAL PER A UN PARELL DE LUBBERS DE TERRA!", + "AQUÍ TENIU LA CÈL-LA DE POTÈNCIA QUE VAIG PROMET", + "I PODEU UTILITZAR LA MEVA BARCA AL MOLL DEL POBLE", + "QUAN VOLGUEU!" ], "fishermans-boat-ride-to-village1-alt": [ - "THOSE TWO COULD PROVE TO BE TROUBLE.", - "DON'T WORRY, DEAR BROTHER. I'LL DISPATCH MY LURKER ARMY TO DEAL WITH THEM.", - "JUST MAKE SURE THEY DON'T GET TOO CLOSE TO OUR NORTHERN OPERATIONS.", - "I DOUBT THEY'LL GET THAT FAR.", - "BUT IF THEY DO, A SURPRISE WILL BE WAITING FOR THEM IN ROCK VILLAGE.", - "SO... YOU'RE GOING TO LET KLAWW OUT OF HIS CAGE?", - "I THINK IT'S WORTH THE RISK.", - "INDEED." + "AQUESTS DOS POGUEN PROVAR SER PROBLEMES.", + "NO ET PREOCUPIS, ESTIMAT GERMÀ. ENVIARÉ EL MEU EXÈRCIT DE LURKER PER FER AMB ELLS.", + "NOMÉS ASSEGUIR-SE QUE NO S'APROPIN MASSA A LES NOSTRES OPERACIONS AL NORD.", + "DUBTE QUE ARRIBIN TAN LLUNY.", + "PERÒ SI HO FAN, UNA SORPRESA ELS ESPERAR A ROCK VILLAGE.", + "LLAVORS... DEIXARÀS A KLAWW SORTIR DE LA SEVA GÀBIA?", + "CREC QUE VAL LA PENA ARRISCAR-SE.", + "EN EFECTE." ], "gambler-introduction-1": [ - "AW, NO. NOT ANOTHER \"HERO\".", - "I LOST MY SHORTS ON THIS SO-CALLED HERO'S BIG FIGHT", - "AGAINST THE MONSTER UP THERE.", - "TRUST ME, THE SMART MONEY'S ON THE MONSTER.", - "THAT WAGER PRETTY MUCH TAPPED ME OUT!", - "SO'S, I GOT A PROPOSAL.", - "BRING ME 90 ORBS TO GET ME BACK ON MY FEET AND OUT OF THIS BARREL,", - "AND I'LL GIVE YOU A POWER CELL IN RETURN.", - "AND IF YOU'RE GAME, I DO HAVE ONE MORE BET ONLINE.", - "MY BIG COMEBACK!", - "BEAT THE RECORD TIME RACING DEAD MAN'S GORGE IN THE PRECURSOR BASIN,", - "AND I'LL GET A PRETTY PAYOFF!", - "FOR THAT, I'LL GIVE YOU ANOTHER POWER CELL." + "AW, NO. NO UN ALTRE \"HEROI\".", + "VAIG PERDIR ELS CURTETS EN LA GRAN LLUITA D'AQUEST HEROI", + "CONTRA EL MONSTRE D'ALLALT.", + "CONFIEU EN MI, ELS DINERS INTELLIGENTS ESTÀ AL MONSTRE.", + "AQUESTA APOSTA M'HA PASSAT MOLTA!", + "SÍ, TENIU UNA PROPOSTA.", + "PORTEU-ME 90 ORBS PER FER-ME TORNAR A PUNTAR-ME I SORTIR D'AQUEST BARRI,", + "I ET DONARÉ UNA CÈL-LULA DE POTÈNCIA A COMUNICACIÓ.", + "I SI JOGUES, TINC UNA APOSTA MÉS EN LÍNIA.", + "LA MEVA GRAN REVISTA!", + "BATEU EL RÈCORD DE TEMPS RACING DEAD MAN'S GORGE A LA CONCA DEL PRECURSOR,", + "I OBTENIRÉ UNA BONA RESPONSABILITAT!", + "PER AIXÒ, ET DONARÉ UNA ALTRA CÈL-LA DE POTÈNCIA." ], "gambler-reminder-money": [ - "HEY. DON'T FORGET ABOUT THOSE ORBS I NEED.", - "90'LL GET YOU ONE. ONE POWER CELL, THAT IS!" + "HEY. NO OBLIDI AQUELS ORBS QUE NECESSITO.", + "90 TE OBTENIRÀ UNA. UNA CÈL-LA DE POTÈNCIA, AIXÒ ÉS!" ], "gambler-reminder-race": [ - "WELL, WHAT ARE YOU WAITIN' FOR?", - "THIS BARREL'S GETTIN' ITCHY!", - "BEAT THE BEST TIME DOWN DEAD MAN'S GORGE,", - "AND WE'LL BOTH BE WINNERS!" + "BÉ, A QUÈ ESPEREU?", + "AQUEST BARRIL ESTÀ PICAR!", + "GAIXEU EL MILLOR TEMPS A LA GORGA DE DEAD MAN'S,", + "I DOS SEREM GUANYADORS!" ], "gambler-resolution-money": [ - "HEH HEH HEH! OH, YEAH!", - "THESE ORBS'LL HELP ME WIN MY WAY BACK OUTTA THIS BARREL!", - "HERE'S THE POWER CELL I PROMISED!" + "HEH HEH HEH! OH, SÍ!", + "AQUESTES ORBS M'AJUDARAN A GUANYAR EL MEU CAMÍ DE TORNADA D'AQUEST BARRIL!", + "AQUÍ TENIU LA CÈL-LULA DE POTÈNCIA QUE HEM PROMET!" ], "gambler-resolution-race": [ - "OH, GREAT MOVES, KID! I KNEW THAT TIME RECORD WOULD FALL.", - "NOW HERE'S YOUR POWER CELL, AND I CAN GO COLLECT MY BIG PAYOFF!" + "OH, GRAN MOVIMENT, NEN! JA SABIA QUE EL RECORD DE TEMPS CAIRIA.", + "ARA AQUÍ TENIU LA TEVA CÈL-LULA DE POTÈNCIA, I PUC ANAR A RECOLLIR LA MEVA GRAN RECOMPENSA!" ], "geologist-introduction": [ - "YOU TWO LOOK LIKE A COUPLE OF CAPABLE FELLOWS.", - "I'VE GOT A RESEARCH PROJECT GOING,", - "AND MAYBE YOU COULD HELP ME OUT.", - "HEY, WE'RE THE ONES ON A BIG QUEST HERE.", - "WE ASK YOU FOR HELP.", - "WELL, PERHAPS WE CAN HELP EACH OTHER.", - "I'VE BEEN STUDYING THE BURROWING HABITS OF LIGHTING MOLES", - "IN THE PRECURSOR BASIN NEXT TO OUR VILLAGE FOR YEARS.", - "BUT NOW THOSE AWFUL LURKERS HAVE SCARED THE MOLES TO THE SURFACE!", - "AND SINCE THEY'RE BLIND AS BATS, THEY CAN'T FIND THEIR WAY BACK UNDERGROUND.", - "IF YOU COULD HERD THEM BACK INTO THEIR BURROWING TUNNELS,", - "YOU MIGHT JUST SAVE THEIR LIVES.", - "I'VE GOT A POWER CELL THAT SAYS YOU CAN DO IT.", - "YEAH, LIGHTNING MOLES... WE CARE.", - "MAYBE FOR TWO POWER CELLS!", - "NICE TRY. BUT I WOULD BE WILLING TO PART WITH ANOTHER POWER CELL", - "IF YOU TWO FIND ME 90 PRECURSOR ORBS FOR MY RESEARCH EQUIPMENT.", - "FAIR ENOUGH?" + "ELS DOS SEMEU UN PARELL DE BEQUES CAPACITS.", + "TINC UN PROJECTE DE RECERCA EN MARCHA,", + "I POTSER PODRIES AJUDAR-ME.", + "ELI, SOM ELS QUE FEM UNA GRAN MISIÓ AQUÍ.", + "US DEMANEM AJUDA.", + "BÉ, POTSER ENS PODEM AJUDAR MÚS A L'ALTRE.", + "HE ESTAT ESTUDIANT ELS HÀBITS D'EXTERIORS D'ENCENDER MOLS", + "A LA CONCA DEL PRECURSOR AL VANT DEL NOSTRE POBLE DES DE FA ANYS.", + "PERÒ ARA AQUESTS AGUIDORS HORRORUS HAN ESPANTAT ELS MOLS A LA SUPERFICIE!", + "I COM QUE SÓN CECS COM LES RICAPICATS, NO PODEN TROBAR EL CAMÍ DE TORNADA A LA SUBTERRÀNIA.", + "SI PODEU GUARDAR-LOS TORNAR ALS SEULS TÚNELS D'ESCORT,", + "PODREU SALVAR LES VIDES.", + "TINC UNA CÈL-LA D'ENERGIA QUE DIU QUE HO PODEU FER.", + "SÍ, MOLES DE LLAMPS... ENS IMPORTA.", + "POTSER PER DOS CÈL-LULES DE POTÈNCIA!", + "BON INTENT. PERÒ ESTARIA DISPOSTAT A PARTIR-ME D'UNA ALTRA CÈL-LA DE POTÈNCIA", + "SI DOS EM TROBEU 90 ORBS PRECURSORS PER AL MEU EQUIP D'INVESTIGACIÓ.", + "PROU JUST?" ], "geologist-reminder-moles": [ - "DID YOU HERD THOSE LIGHTNING MOLES BACK UNDERGROUND?", - "YOU SHOULD HURRY - THE DIRECT SUNLIGHT ISN'T GOOD FOR THEM!" + "VA FER AQUELS LLAMPS AQUELS LLAMPS SUBTERRÀNIS?", + "HAURÀS D'AFURTAR: LA LLUM DIRECTA DEL SOL NO ÉS BONA PER A ELLS!" ], "geologist-reminder-money": [ - "I NEED THOSE ORBS IF I'M GOING TO CONTINUE MY RESEARCH!" + "NECESSITO AQUESTS ORBS SI VAGO CONTINUAR LA MEVA RECERCA!" ], "geologist-resolution-moles": [ - "THANK YOU FOR SAVING THOSE MOLES, THAT'S AWFULLY GOOD OF YOU.", - "HERE'S A POWER CELL TO HELP YOU OUT.", - "NOW I CAN GET BACK TO MY RESEARCH!" + "GRÀCIES PER SALVAR AQUESTS MOLS, ÉS MOLT BÉ.", + "AQUÍ TENIU UNA CÈL-LA DE POTÈNCIA PER AJUDAR-TE.", + "ARA PUC TORNAR A LA MEVA RECERCA!" ], "geologist-resolution-money": [ - "OH, YOU HAVE THE ORBS!", - "HERE'S A POWER CELL WE AGREED UPON." + "OH, TENIU ELS ORBS!", + "AQUÍ TENIU UNA CÈL-LULA DE POTÈNCIA QUE HEM ACCORDAT." ], "green-sagecage-daxter-sacrifice": [ - "LIGHT ECO! THAT COULD BE THE STUFF TO CHANGE ME BACK!", - "OR... IT MIGHT STOP THAT ROBOT.", - "STAY FUZZY, SAVE THE WORLD... CHOICES...", - "OKAY, FINE, WE'LL SAVE THE WORLD.", - "BUT DO IT QUICKLY BEFORE I CHANGE MY MIND!" + "ECO LLUM! AQUESTA PODRÍA SER EL COSES PER TORNAR-ME A CANVI!", + "O... POTS ATURAR AQUEST ROBOT.", + "ESTIGUEU-VOS, SALVEM EL MÓN... OPCIONS...", + "D'ACORD, D'ACORD, SALVAREM EL MÓN.", + "PERÒ FES-HO RÀPID ABANS DE CAMBIAR D'OPINIÓ!" ], "green-sagecage-introduction": [ - "IT'S ABOUT TIME YOU TWO DECIDED TO SHOW UP!", - "NICE TO SEE YOU TOO!", - "DO THEY HAVE YOU MOPPING THE FLOORS NOW?", - "THERE'S NO TIME FOR JOKES, DAXTER. GOL AND MAIA KIDNAPPED US", - "TO SAP OUR ENERGIES TO POWER THEIR ABOMINABLE MACHINE.", - "IT APPEARS THEY HAVE COMBINED THE FUNCTIONAL REMAINS OF A PRECURSOR ROBOT", - "WITH SCAVENGED ARTIFACTS FROM ACROSS THE LAND.", - "THEN THEY ADDED A FEW DIABOLICAL ADDITIONS OF THEIR OWN,", - "CREATING THE ONE THING CAPABLE OF OPENING THE DARK ECO SILOS.", - "IF YOU CAN FREE THE FOUR OF US, WE CAN USE OUR COMBINED POWERS", - "TO BREAK THE FORCE SHIELD SURROUNDING THE ROBOT", - "BEFORE THEY USE IT TO DESTROY THE WORLD." + "JA ÉS L'ORA QUE DOS DECIDEIXEU PRESENTAR-SE!", + "MAL VEURE TAMBÉ!", + "ELS TENEN ARA REPARANT ELS PISOS?", + "NO HI HA TEMPS PER A BROMES, DAXTER. EL GOL I LA MAIA ENS VAN SEGUESTR", + "PER SABER LES NOSTRES ENERGIES PER ACTIVAR LA SEVA ABOMINABLE MÀQUINA.", + "SEMBLA QUE HAN COMBINAT LES RESTES FUNCIONALS D'UN ROBOT PRECURSOR", + "AMB ARTEFACTES ESCOLTATS DE LA TERRA.", + "DESPRÉS VAN AFEGIR UNS AFEGIS DIABÒLICS PROPIS,", + "CREANT LA ÚNICA COSA CAPAÇ D'OBRIR LES SILLOS ECO FOSC.", + "SI PODEU ALLIBERAR ELS QUATRE, PODEM UTILITZAR ELS NOSTRES PODERS COMBINATS", + "TRENCAR L'ESCUT DE LA FORÇA QUE ENVOLTA EL ROBOT", + "ABANS QUE L'UTILITZIN PER DESTRUIR EL MÓN." ], "green-sagecage-outro-beat-boss-a": [ - "DO SOMETHING!", + "FER QUELCOM!", "NOOO!" ], "green-sagecage-outro-beat-boss-b": [ - "WELL, IT LOOKS LIKE I MAY HAVE BEEN TOO HARD ON YOU BOYS!", - "YOU DO HAVE WHAT IT TAKES TO BE HEROES!", - "BUT, DAXTER, NOW WE CAN'T CHANGE YOU BACK.", - "DON'T WORRY ABOUT ME, BABY.", - "YOU KNOW WHAT THEY SAY: BIG THINGS COME IN SMALL PACKAGES.", - "JAK, YOU HAVE AN INCREDIBLE TALENT FOR CHANNELLING ECO!", - "SAMOS, YOU MAY HAVE BEEN RIGHT ABOUT THIS ONE AFTER ALL!", - "AND KEIRA, WITHOUT YOUR HELP AND INGENUITY", - "NONE OF THIS WOULD HAVE BEEN POSSIBLE.", - "HM-HM-HM. PERHAPS WE FOUND ANOTHER SAGE", - "NOW THAT GOL AND MAIA ARE LOST...", - "YES, GOL AND MAIA... THE DARK ECO PROBABLY DESTROYED THEM.", - "EH, PROBABLY...", - "AH WHO CARES? BRING 'EM ON, WE CAN TAKE 'EM AGAIN! RIGHT JAK?", - "I SAID, RIGHT, JAK?", - "WHOA! PUT IT ON ICE, BIG GUY!" + "BÉ, SEMBLA QUE POTSER HE ESTAT MASSA DUR AMB VOSALTRES, NOIS!", + "TENIU EL QUE ES FA PER SER HEROIS!", + "PERÒ, DAXTER, ARA NO ET PODEM CANVIAR.", + "NO ET PREOCUPIS PER MI, NENA.", + "SABEU EL QUE DIUEN: LES COSES GRANS VENEN EN PAQUETS PETITS.", + "JAK, TENS UN TALENT INCREÏBLE PER CANALITZAR ECO!", + "SAMOS, POSSIBLE QUE HAGUEU TENUT EN AQUEST MOLT!", + "I KIRA, SENSE LA TEVA AJUDA I ENGINYÒ", + "RES D'AQUEST HAURÀ SER POSSIBLE.", + "HM-HM-HM. POTSER HEM TROBAT UN ALTRE SAVI", + "ARA QUE EL GOL I LA MAIA ESTAN PERDUTS...", + "SÍ, GOL I MAIA... L'ECO FOSC PROBABLEMENT LES VA DESTRUIR.", + "EH, PROBABLEMENT...", + "AH A QUI IMPORTA? PORTEU-LES, ELS PODEM TORNAR A EMPORTAR! OI JAK?", + "VAIG DIR, OI, JAK?", + "WHOA! POSA-HO SOBRE GEL, GRAN!" ], "green-sagecage-outro-beat-boss-enough-cells": [ - "HOLY YAKOW! WHAT COULD THAT BE?", - "WOW, IT'S AN ANCIENT PRECURSOR DOOR!", - "IT LOOKS LIKE IT WILL ONLY OPEN IF WE FILL ALL 100 HOLES WITH POWER CELLS!", - "UH, WE'RE HEROES, REMEMBER? WE HAVE 100 POWER CELLS!" + "SANT YAKOW! QUÈ PODRIA SER AIXÒ?", + "UAU, ÉS UNA ANTIGA PORTA PRECURSOR!", + "SEMBLA QUE NOMÉS S'OBRIRÀ SI OMPLIM ELS 100 FORATS AMB CÈL-LULES D'ENERGIA!", + "UH, SOM HEROIS, RECORDEU? TENIM 100 CÈL-LULES DE POTÈNCIA!" ], "green-sagecage-outro-beat-boss-need-cells": [ - "HOLY YAKOW! WHAT COULD THAT BE?", - "WOW, IT'S AN ANCIENT PRECURSOR DOOR!", - "IT LOOKS LIKE IT WILL ONLY OPEN IF WE FILL ALL 100 HOLES WITH POWER CELLS!", - "OH BOY... HERE WE GO AGAIN!" + "SANT YAKOW! QUÈ PODRIA SER AIXÒ?", + "UAU, ÉS UNA ANTIGA PORTA PRECURSOR!", + "SEMBLA QUE NOMÉS S'OBRIRÀ SI OMPLIM ELS 100 FORATS AMB CÈL-LULES D'ENERGIA!", + "OH NOI... AQUÍ TORNEM!" ], "green-sagecage-outro-big-finish": [ - "WOW! WHAT IS IT?", - "IT'S SO BEAUTIFUL...", - "BY THE PRECURSORS..." + "UAU! QUÈ ES?", + "ÉS TAN BONIC...", + "A CÀRREC DELS PRECURSORS..." ], "green-sagecage-outro-preboss": [ - "YOU'RE TOO LATE, SAMOS.", - "ONCE I POSSESS LIMITLESS DARK ECO", - "I WILL HAVE THE KEY TO CREATION ITSELF!", - "THIS IS MADNESS!", - "RELEASING THAT MUCH DARK ECO WILL DESTROY EVERYTHING WE KNOW!", - "JUST LOOK WHAT IT'S DONE TO YOU!", - "IT HAS GIVEN US A BEAUTY BEYOND ANYTHING YOU COULD UNDERSTAND.", - "BEAUTY? HAVE YOU TWO LOOKED IN THE MIRROR LATELY?", - "JUST WAIT UNTIL WE OPEN THE SILOS, LITTLE ONE.", - "YOU THINK SHORT AND FUZZY IS BAD?", - "AND TO THINK, YOU TWO TRAVELLED ALL THIS WAY FOR MY HELP.", - "FOOLS! ENJOY YOUR FRONT ROW SEATS TO THE RECREATION OF THE WORLD!", - "JAK! TAKE THE ELEVATOR UP AND STOP THAT ROBOT!" + "HAS TARDE, SAMOS.", + "UNA VEGADA POSSIÓ ECO FOSC IL-LÍMIT", + "TINDRÉ LA CLAU PER A CREAR-SE!", + "AIXÒ ÉS UNA BOGERIA!", + "ALLIBERAR AQUESTA MOLT ECO FOSC DESTRUIRÀ TOT EL QUE SABEM!", + "NOMÉS MIRA EL QUE T'HA FET!", + "ENS HA DONAT UNA BELLESA MÉS ENLLÀ DE QUALSEVOL COS QUE POGUEU ENTENDRE.", + "BELLESA? ÚLTIMAMENT VOSALTRES DOS HAN MIRAT AL MIRALL?", + "NOMÉS ESPEREM FINS OBRIM LES SITIOS, PETIT.", + "CREUS QUE CURT I BORROSA ÉS DOENTA?", + "I PER PENSAR, VOSTÈ DOS HEU VIATJAT TOT AQUEST CAMÍ PER LA MEVA AJUDA.", + "XULLS! GAUDIU DELS VOSTRES SEIENTS DE PRIMERA FILA PER A L'OCUPACIÓ DEL MÓN!", + "JAK! APUJA L'ASCENSOR I ATURA AQUEST ROBOT!" ], "green-sagecage-resolution": [ - "GOOD WORK, BOYS! YOU'RE REAL HEROES NOW.", - "I'LL COMBINE MY GREEN ECO POWER WITH THE OTHER THREE SAGES", - "AND TOGETHER WE'LL OPEN THE SHIELD DOOR SURROUNDING THE PRECURSOR ROBOT.", - "YEAH YEAH THAT SOUNDS LIKE A GOOD START.", - "AND THEN AFTER YOU GUYS OPEN THAT SHIELD", - "WHAT ARE YOU GONNA DO ABOUT THE ROBOT?", - "NOTHING, DAXTER. WE HAVE TO KEEP THE SHIELD OPEN.", - "IT'S UP TO YOU TWO TO FIGURE OUT HOW TO DESTROY THE ROBOT.", - "OH, GREAT. I GET TO HELP THE GUY THAT TURNED ME INTO A FURBALL", - "DESTROY THE ONLY PERSON WHO CAN TURN ME BACK!", - "FIRST, SAVE THE WORLD!", - "THEN WE'LL TRY TO CONVINCE GOL TO HELP DAXTER." + "BONA FEINA, NOIS! ARA SOU UNS HEROIS DE VERITAT.", + "COMBINARÉ EL MEU PODER ECOLÒGIC VERD AMB ELS ALTRES TRES SAVIES", + "I JUNTS OBRIREM LA PORTA DE L'ESCUT QUE ENVOLTA EL ROBOT PRECURSOR.", + "SÍ SÍ, SEMBLA UN BON COMENÇAMENT.", + "I DESPRÉS DESPRÉS QUE OBRIEU AQUEST ESCUT", + "QUÈ FARÀS AMB EL ROBOT?", + "RES, DAXTER. HEM DE MANTENIR L'ESCUT OBERT.", + "DEPENS DE VOSTRE DOS ESCOBRIR COM DESTRUIR EL ROBOT.", + "OH, MOLT BÉ. AJUDO A L'HOME QUE EM VA CONVERTIR EN UN FURBALL", + "DESTRUIR A L'ÚNICA PERSONA QUE EM POT RETORN!", + "PRIMERA, SALVEM EL MÓN!", + "DESPRÉS INTENTAREM CONVÈNCER GOL PER AJUDAR A DAXTER." ], "mayor-introduction": [ - "NO... (MUTTERS) DON'T TELL ME THAT YOU TWO HAVE PROBLEMS AS WELL!", - "FIRST I HEAR OF MONSTER SIGHTINGS NEAR THE VILLAGE, AND NOW THIS.", - "SEE THOSE GEARS UP THERE, BOYS? SEE THEM? SEE HOW THEY'RE NOT MOVING?", - "THAT MEANS OUR VILLAGE HAS NO POWER!", - "THE ECO BEAM COMING FROM THE JUNGLE TEMPLE HAS BEEN INTERRUPTED!", - "AND BOYS, EVERYONE'S TOO FRIGHTENED TO GO OUT AND FIND OUT WHAT'S HAPPENED.", - "DID YOU PAY THE BILL?", - "YEAH-HMM? OH-HUH-OH, YOU'RE FUNNY.", - "NOW LOOK, IF YOU TWO FIX THE ECO BEAM, I'LL GIVE YOU A POWER CELL.", - "OH OOH OOH AND-AND ANOTHER THING, UH...", - "IF BY ANY CHANCE YOU'RE INTERESTED IN MAKING A CONTRIBUTION TO MY RE-ELECTION CAMPAIGN,", - "I-I MIGHT BE WILLING TO PART WITH YET ANOTHER POWER CELL!", - "THE MINIMUM CONTRIBUTION IS, OH, A VERY MODEST...", - "90 PRECURSOR ORBS." + "NO... (MULLERES) NO M'DIGUIS QUE TU TAMBÉ TENIU PROBLEMES!", + "PRIMER SENTO D'ALVIRMENTS DE MONSTROS A PROP DEL POBLE, I ARA AIXÒ.", + "VEU AQUESTS ENGRANATS ALLÀ DALT, NOIS? VEURE'LS? VEU COM NO ES MOVEN?", + "AIXÒ SIGNIFICA QUE LA NOSTRA POBLA NO TÉ PODER!", + "EL FIX ECO QUE PROVEN DEL TEMPLE DE LA SELVA S'HA INTERRUMPT!", + "I NOIS, TOTS TENEN MOLT POR PER SORTIR A ESCOBRIR QUÈ HA PASSAT.", + "HEU PAGAT LA FACTURA?", + "SÍ-HMM? OH-HH-OH, ETS DIVERTIT.", + "ARA MIREU, SI DOS ARREGUEU EL FIX ECO, ET DONARÉ UNA CÈL-LA D'ENERGIA.", + "OH OOH OOH I-I UNA ALTRA COSA, UH...", + "SI PER CAS ESTEU INTERESSAT A FER UNA CONTRIBUCIÓ A LA MEVA CAMPANYA DE REELECCIÓ,", + "PODER ESTIGUI DISPOSAT DE SEPARAR-ME D'UNA ALTRA CÈL-LA DE POTÈNCIA!", + "LA CONTRIBUCIÓ MÍNIMA ÉS, OH, MOLT MODESTA...", + "90 ORBS PRECURSORS." ], "mayor-reminder-beams": [ - "BACK ALREADY? AND WITHOUT FIXING THE ECO BEAMS?", - "(SOBS) YOUR VILLAGE NEEDS YOU, BOYS!" + "TORNAR JA? I SENSE FIXAR LES ECO FIXES?", + "(SOLS) EL VOSTRE POBLE ET NECESSITA, NOIS!" ], "mayor-reminder-donation": [ - "AH, HERE TO MAKE A DONATION TO MY CAMPAIGN, OH HO HO HO.", - "90 PRECURSOR ORBS BUYS YOU A POWER CELL, THANK YOU." + "AH, AQUÍ PER FER UNA DONACIÓ A LA MEVA CAMPANYA, OH HO HO HO.", + "90 PRECURSOR ORBS ET COMPRA UNA CÈL-LA DE POTÈNCIA, GRÀCIES." ], "mayor-resolution-beams": [ - "OH HO HO, WHAT A WONDERFUL SIGHT! I THANK YOU!", - "AND THE ENTIRE VILLAGE WILL THANK ME -", - "UH, BOYS, YOU HAVE RESTORED POWER TO THE VILLAGE AND GUARANTEED MY RE-ELECTION!", - "AND FOR THAT, MY BOY, YOU'VE EARNED A POWER CELL." + "OH HO HO, QUINA VISTA MAS MARAVILLOSA! US DONO LES GRÀCIES!", + "I TOT EL POBLE M'AGRÀCARÀ -", + "NOIS, HEU RESTAURAT EL PODER AL POBLE I HEU GARANTIT LA MEVA REELECCIÓ!", + "I PER AIXÒ, NEN MEU, T'HAS GUANYAT UNA CÈL-LA DE POTÈNCIA." ], "mayor-resolution-donation": [ - "SO EH, YOU UH, WANNA MAKE A CONTRIBUTION? GOOD... A-A-A SIZABLE ONE I HOPE.", - "YOOH! EH HE HE, IT'S A, OH, THIS IS A SIZABLE CONTRIBUTION!", - "I, WH-WH-WH-WHY I JUST HOPE THIS POWER CELL ADEQUATELY REPRESENTS MY GRATITUDE." + "LLAVORS, EH, TU UH, VOLS FER UNA CONTRIBUCIÓ? BÉ... A-A-A GRAN ESPERO.", + "YOO! EH HE HE, ÉS UNA, OH, ÉS UNA APORTACIÓ GRANDE!", + "JO, WH-WH-WH-PERQUÈ ESPERO QUE AQUESTA CÈL-LA DE PODER REPRESENTA ADEQUATAMENT LA MEVA GRÀCITUD." ], "minershort-introduction-gnawers": [ - "WHY DON'T YOU TWO MAKE YOURSELVES USEFUL?", - "LURKERS HAVE BEEN EXCAVATIN' THE DARK CAVES OVER THERE.", - "SEEMS THEY'RE LOOKIN' FOR PRECURSOR ARTIFACTS.", - "THEY CAN HAVE THE ARTIFACTS, FOR ALL I CARE.", - "FOR ALL WE CARE!", - "WILLARD, FEED YOUR BIRD.", - "ALL I CARE ABOUT ARE GEMS!", - "BUT I AIN'T GONNA BE ABLE TO GET THE CAVE'S GEMS", - "BECAUSE WHEN THEY'RE THROUGH, THEY'RE GONNA COLLAPSE THE PLACE!", - "IF YOU TAKE OUT THE LURKERS CHEWIN' AT THE SUPPORT BEAMS,", - "YOU COULD SAVE THE CAVE FOR ME.", - "NOW BEAT IT!" + "PER QUÈ NO US FER ÚTIL?", + "ELS LURKERS HAN ESTAT EXCAVANT LES COVES FOSCES D'ALLÀ.", + "SEMBLA QUE BUSQUEN ARTEFACTES PRECURSORS.", + "PODEN TENIR ELS ARTEFACTES, PER TOT EL QUE M'IMPORTA.", + "PER TOTS ENS IMPORTA!", + "WILLARD, ALIMENTA EL TEU OCELL.", + "L'ÚNIC QUE M'IMPORTEN SÓN JOIES!", + "PERÒ NO PODRÉ OBTENIR LES GEMES DE LA COVA", + "PERQUÈ QUAN HI HAGA FINALMENT, ES PASSARÀ EL LLOC!", + "SI TREUS ELS LURKERS MASTICANT A LES BIGES DE SUPORT,", + "PODREU SALVAR LA COVA PER MI.", + "ARA VENGA-HO!" ], "minershort-introduction-orbs": [ - "HEY GORDY, DUH, I THINK WE GOT VISITORS.", - "YA THINK, WILLARD? HOWDY, STRANGERS, UH, PASSING THROUGH?", - "UH, US, TOO. WELL, WE GOTTA BE MOVIN' ON, NOTHIN' TO SEE HERE.", - "DUH, I THOUGHT YOU SAID THIS WAS A PRICELESS GEM WORTH-", + "HEY GORDY, DUH, CREO QUE HEM ARRIBAT VISITANTS.", + "HO PENSES, WILLARD? BON, ESTRANGERS, UH, DE PAS?", + "UH, EUA, TAMBÉ. BÉ, ENS HEM DE MOVIR, RES A VEURE AQUÍ.", + "DUH, EM PENSAVA QUE VAS DIR QUE AIXÒ ERA UNA JOIA INESTIMABLE QUE VAL LA PENA...", "WILLARD!", - "ACTUALLY, WE WANT POWER CELLS. NOT GEMS.", - "WE GOT FOUR OF 'EM. DUH, YOU WANT 'EM?", - "WHAT BIRD-BRAIN HERE IS TRYING TO SAY IS,", - "WE MAY HAVE A FEW POWER CELLS LAYING AROUND,", - "AND WE MIGHT BE WILLING TO PART WITH THEM FOR...", - "90 ORBS EACH.", - "WHERE HAVE I HEARD THAT BEFORE?", - "HEY, HOW DO YOU TWO GENIUSES EXPECT TO GET THAT BIG GEM OUTTA HERE ANYWAY?", - "WELL, SMARTYPANTS, WE GOT TWELVE MORE YEARS OF DIGGIN' TO FIGURE THAT OUT.", - "UHH... GORDY, WOULDN'T IT TAKE LESS TIME IF YOU DUG, TOO?" + "EN REALITAT, VOLEM CÈL-LULES DE POTÈNCIA. NO GEMES.", + "ENS TENIM QUATRE. DUH, LES VOLS?", + "EL QUE AQUÍ INTENTA DE DIR EL CEREBRO D'OCELL ÉS:", + "PODEREM TENIR ALGUNES CÈL-LULES DE POTÈNCIA AL VOLTANT,", + "I POTS SEREM DISPOSATS DE PARTICIPAR AMB ELLS PER...", + "90 ORBS CADA UN.", + "ON HEM SENTIT AIXÒ ABANS?", + "ELI, COM ESPEREU ELS DOS GENIS TREURE AQUESTA GRAN JOIA D'AQUÍ?", + "BÉ, SMARTYPANTS, TENIM DOTZ ANYS MÉS D'EXCAVAR PER DESCLARAR-HO.", + "UHH... GORDY, NO TRIGARIA MENYS TEMPS SI TU TAMBÉ CAVÀS?" ], "minershort-introduction-switch": [ - "PSST, GUYS. DUH...", - "BIRDIE AND I WAS EXPLORING A CAVE YOU'D LIKE!", - "IT WAS FILLED WITH PRETTY ORANGE METAL,", - "AND HIDDEN REAL GOOD BEHIND SOME TREES IN THE SNOWY MOUNTAINS!", - "I TOLD GORDY, BUT HE JUST YELLED AT ME FOR NOT DIGGING!", - "WHY AREN'T YOU DIGGING?!", - "I'M SORRY!" + "PSST, NOIS. DUH...", + "BIRDIE I JO ESTÀVEM EXPLORANT UNA COVA QUE T'AGRADARIA!", + "ESTAVA EMPLIT DE METAL BONA TARONJA,", + "I EL BÉ VERDIAL AMAGA DARRERE UNS ARBRES A LES MUNTANYES NEVADES!", + "HO DIU EN GORDY, PERÒ EM HA CRIDAT PER NO CAVAR!", + "PER QUÈ NO EXCAVES?!", + "HO SENTO!" ], "minershort-reminder-1-gnawers": [ - "WOULD YOU TAKE CARE OF THOSE LURKERS", - "CHEWIN' AT THE DARK CAVE SUPPORT BEAMS ALREADY!", - "THOSE BEAMS CAN'T TAKE THAT KIND OF ABUSE FOREVER!" + "T'OCUDARÀS D'AQUESTS LURKERS", + "MASTIC A LES BIGES DE SUPORT DE LA COVA FOSC JA!", + "AQUESTES BIGUES NO PODEN EMPORTAR AQUEST TIPUS D'ABÚS PER SEMPRE!" ], "minershort-reminder-1-orbs": [ - "DON'T FORGET OUR DEAL. BRING US 100 ORBS.", - "DUH... YOU SAID 90.", + "NO OBLIDI LA NOSTRA OFERTA. PORTEU-NOS 100 ORBS.", + "DUH... VA DIR 90.", "WILLARD!", - "FINE. 90 ORBS A POWER CELL." + "BÉ. 90 ORBS UNA CÈL-LA DE POTÈNCIA." ], "minershort-reminder-1-switch": [ - "DID YOU FIND THE CAVE BEHIND THEM TREES IN THE SNOWY MOUNTAINS?", - "I'M GONNA GO THERE SOON, TO HIDE FROM GORDY, 'CAUSE HE'S YELLING AT ME AGAIN!", + "HAS TROBAT LA COVA DARRERE ELS ARBRES A LES MUNTANYES NEVADES?", + "HI ANARÉ AVIAT, PER AMAGAR-ME DE GORDY, PERQUÈ EM TORNA A CRIDAR!", "WILLARD!!" ], "minershort-reminder-2-orbs": [ "DUH, GORDY?", - "90 ORBS A POWER CELL, WILLARD! URGH!" + "90 ORBS UNA CÈL-LA DE POTÈNCIA, WILLARD! URGH!" ], "minershort-resolution-1-orbs": [ - "OH, ALRIGHT ALREADY.", - "HERE'S A POWER CELL FOR THOSE ORBS OF YOURS." + "OH, BÉ JA.", + "AQUÍ TENIU UNA CÈL-LA DE POTÈNCIA PER A AQUELS ORBS SEU." ], "minershort-resolution-2-orbs": [ - "OOH! OH, I GOT IT THIS TIME! UH...", - "HERE'S A...", - "DUHH.. HERE'S A...!", - "A POWER CELL!", - "YEAH, YEAH... WHAT HE SAID.", - "THAT'S IT. YOU'VE CLEANED US OUT.", - "NO! MORE! POWER! CELLS!" + "OH! OH, AQUESTA VEGADA HO HO TENIU! UH...", + "AQUÍ TENIU UN...", + "DUHH.. AQUÍ TENIU UN...!", + "UNA CÈL-LULA DE POTÈNCIA!", + "SÍ, SÍ... QUÈ VA DIR.", + "AIXÒ ÉS. ENS HAS NETEJAT.", + "NO! MÉS! PODER! CÈL - LULES!" ], "oracle-intro-1": [ - "WHO AWAKENS THE ORACLE?", - "WAIT, ONE OF YOU HAS THE LIGHT WITHIN.", - "FROM BEFORE TIME, I HAVE WATCHED AND WAITED", - "FOR THE TRUE HERO TO RETURN.", - "PRESENT TO ME 120 PRECURSOR ORBS", - "FOR EACH POWER CELL I CONTAIN." + "QUI DESPERTA L'ORACLE?", + "ESPEREU, UN DE VOSTRE TÉ LA LLUM A DINS.", + "DES D'AVANT TEMPS, HE MIRAT I ESPERAT", + "PER QUE EL VERITABLE HEROI TORNI.", + "PRESENTA'M 120 ORBS PRECURSORS", + "PER CADA CÈL-LA DE POTÈNCIA QUE CONTÉ." ], "oracle-intro-2": [ - "BEWARE OF THE DARK LIGHT,", - "FOR IT HAS TWISTED THE FATE OF ONE OF YOU.", - "BRING ME 120 PRECURSOR ORBS", - "FOR EACH POWER CELL I CONTAIN." + "ATENCIÓ A LA LLUM FOSC,", + "PERQUÈ HA TORÇAT EL DEST D'UN DE VOSTRES.", + "PORTA'M 120 ORBS PRECURSORS", + "PER CADA CÈL-LA DE POTÈNCIA QUE CONTÉ." ], "oracle-intro-3": [ - "SEEK THE PURE LIGHT, FOR WITHIN ITS FLAME THE ANSWERS RESIDE.", - "YOU CAN GAIN MY POWER CELLS", - "BY BRINGING 120 PRECURSOR ORBS FOR EACH." + "BUSCAR LA LLUM PURA, PERQUÈ DINS DE LA SEVA FLAMA RESUEIXEN LES RESPOSTES.", + "PODEU GUANYAR LES MEVES CÈL-LULES DE PODER", + "PORTANT 120 ORBS PRECURSORS PER CADASCUN." ], "oracle-left-eye-1": [ - "YOU HAVE PROVEN YOURSELF WORTHY. HERE IS A POWER CELL." + "TU HAS DEMOSTRAR QUE ETS DIGNA. AQUÍ ÉS UNA CÈL-LA DE POTÈNCIA." ], "oracle-left-eye-2": [ - "FOR YOUR SACRIFICE, I OFFER YOU A POWER CELL." + "PER AL TEU SACRIFICIO, US OFERO UNA CÈL-LA DE PODER." ], "oracle-left-eye-3": [ - "FOR YOUR EFFORT, A POWER CELL IS THE REWARD." + "PER AL TEU ESFORÇ, UNA CÈL-LA DE POTÈNCIA ÉS LA RECOMPENSA." ], "oracle-reminder-1": [ - "BRING TO ME 120 PRECURSOR ORBS", - "AND I WILL AWARD YOU A POWER CELL." + "PORTEU-ME 120 ORBS PRECURSORS", + "I T'ADJUDICARÉ UNA CÈL-LA DE POTÈNCIA." ], "oracle-reminder-2": [ - "PRESENT 120 PRECURSOR ORBS", - "AND A POWER CELL WILL BE YOUR REWARD." + "PRESENTA 120 ORBS PRECURSORS", + "I UNA CÈL-LA DE POTÈNCIA SERÀ LA TEVA RECOMPENSA." ], "oracle-reminder-3": [ - "YOU MUST BRING 120 PRECURSOR ORBS", - "TO ME FOR EACH POWER CELL I CONTAIN." + "HEU DE PORTAR 120 ORBS PRECURSORS", + "A MI PER CADA CÈL-LA DE POTÈNCIA QUE CONTINT." ], "oracle-right-eye-1": [ - "FOR YOUR GIFT, ANOTHER POWER CELL IS YOURS." + "PER AL TEU REGAL, UNA ALTRA CÈL-LA DE POTÈNCIA ÉS TEVA." ], "oracle-right-eye-2": [ - "HERE IS ANOTHER POWER CELL FOR YOUR QUEST." + "AQUÍ TENIU UNA ALTRA CÈL-LA DE POTÈNCIA PER A LA SEVA MISMA." ], "oracle-right-eye-3": [ - "YOU HAVE OBTAINED ANOTHER POWER CELL." + "HAS OBTENUT UNA ALTRA CÈL-LA DE POTÈNCIA." ], "redsage-resolution": [ - "HE-HE-HEH... YOU'VE FINALLY COME TO RESCUE ME.", - "DO YOU KNOW HOW LONG I'VE BEEN IN HERE?", - "WHAT TOOK YOU SO LONG? AND UH, HE-HE-HEH...", - "WHAT ARE YOUR NAMES?", - "I'M DAXTER! HE'S JAK, HE'S WITH ME.", - "GOOD JOB, DAXTER. YOU'RE A REAL HERO.", - "YOU'VE GOT TO STOP GOL FROM LAUNCHING THE ROBOT.", - "I'LL USE MY ECO POWER TO HELP OPEN THE SHIELD DOOR." + "HE-HE-HEH... PER FIN HAS VENIT A RESCATAR-ME.", + "SABEU QUANT DE TEMPS HEM ESTAT AQUÍ?", + "QUÈ T'HA TRIGUAT TANTA? I UH, HE-HE-HEH...", + "QUINS SON ELS TEUS NOMS?", + "SÓC DAXTER! ÉS JAK, ÉS AMB MI.", + "BONA FEINA, DAXTER. ETS UN VERDIAL HEROI.", + "HEU D'ATURAR QUE GOL LLANCE EL ROBOT.", + "UTILITZARÉ EL MEU PODER ECO PER AJUDAR A OBRIR LA PORTA DE L'ESCUT." ], "sage-bluehut-introduction-crop-dusting": [ - "WELL, THE SITUATION HERE STINKS WORSE THAN A LURKER'S ARMPIT.", - "BEFORE BLUE SAGE'S DISAPPEARANCE,", - "HE JOURNALED SIGNIFICANT TROUBLE IN ALL OF THE SURROUNDING AREAS.", - "OF PARTICULAR INTEREST TO ME IS THE DARK ECO INFECTION", - "OF SOME INNOCENT PLANTS IN THE PRECURSOR BASIN.", - "KEIRA WILL TELEPORT YOUR A-GRAV ZOOMER TO THE NEAREST TRANS-PAD.", - "RIDE THE ZOOMER TO A GREEN ECO VENT,", - "AND THEN CARRY THE GREEN ECO TO THE CORRUPTED PLANTS.", - "THAT SHOULD HEAL THEM.", - "DON'T MISS A SINGLE PLANT, OR THE INFECTED ONES WILL SLOWLY RE-INFECT THE HEALTHY ONES.", - "AND, DAXTER...", - "START CLEANING UP IN HERE!", - "AND DON'T FORGET THE CORNERS!" + "BÉ, LA SITUACIÓ AQUÍ FET PITJOR QUE L'AIXELLA D'UN LURKER.", + "ABANS DE LA DESAPARICIÓ DE BLUE SAGE,", + "VA VA HACER PROBLEMES SIGNIFICATIUS A TOTES LES ZONES DEL VORANT.", + "D'PARTICULAR INTERÉS PER A MI ÉS LA INFECCIÓ ECO FOSC", + "D'ALGUNES PLANTES INNOCENTS A LA CONCA DEL PRECURSOR.", + "KEIRA TELEPORTARÀ EL TEU ZOOM A-GRAV AL TRANS-PAD MÉS PROPER.", + "PUNT EL ZOOM A UNA VENTILADORA ECOLÒGICA VERDA,", + "I DESPRÉS PORTAR L'ECO VERD A LES PLANTES CORRUPTES.", + "AIXÒ ELS HA DE GUAR.", + "NO ET PERDI UNA ÚNICA PLANTA, O LES INFECTADAS REINFECTARÀ LENTAMENT A LA SANA.", + "I, DAXTER...", + "COMENÇA A NETEJA AQUÍ!", + "I NO OBLIDI ELS RACÓS!" ], "sage-bluehut-introduction-prec-arm": [ - "WELL, I HOPE YOU'VE PACKED A LUNCH. 'CAUSE WE'RE JUST GETTING STARTED.", - "ACCORDING TO THE BLUE SAGE'S NOTES,", - "LURKERS HAVE INFESTED THE SWAMP ACROSS THE BAY.", - "APPARENTLY, THEY'RE PLANNING TO USE A DIRIGIBLE", - "TO LIFT AN IMPORTANT PRECURSOR ARTIFACT FROM THE MUCK.", - "YOU'RE GOING TO HAVE TO GET OVER THERE TO DISLODGE THEIR TETHERS.", - "WHO KNOWS WHAT THEY MIGHT WANT WITH THE ARTIFACT,", - "BUT LIKE ORANGE STUFF HERE'S BREATH, IT JUST CAN'T BE GOOD." + "BÉ, ESPERO QUE HEU PANAT EL DINAR. PERQUÈ NOMBRES ESTEM COMENÇANT.", + "D'ACORD AMB LES NOTES DEL SÀLVIA BLAU,", + "ELS LURKERS HAN INFESTAT EL PANTÀ A TRAVÉS DE LA BADIA.", + "SEMBLA SER QUE ESTAN PLANEJANT FER SERVIR UN DIRIGIBLE", + "PER ALLEVAR UN ARTEFACTE PRECURSOR IMPORTANT DEL FANT.", + "HAURÀS D'ARRIBAR-HI PER LLEVAR LES LLIGADES.", + "QUI SAP QUÈ PODEN VOLER AMB L'ARTEFACTE,", + "PERÒ COM LES COSES TARONJAS AQUÍ HI HA ALÈ, NO POT SER BÉ." ], "sage-bluehut-reminder-1-crop-dusting": [ - "MY EYES MUST BE DECEIVING ME!", - "BECAUSE I KNOW THAT THE TWO OF YOU ARE DEEP IN THE PRECURSOR BASIN,", - "SAVING THE DARK ECO-INFECTED PLANTS." + "ELS MEUS ULLS M'HAN D'ENGANYAR!", + "PERQUÈ SÉ QUE ELS DOS ESTEU FONS A LA CONCA DEL PRECURSOR,", + "SALVANT LES PLANTES ECO-INFECTADES FOSC." ], "sage-bluehut-reminder-1-prec-arm": [ - "WHAT ARE YOU DOING BACK HERE ALREADY?", - "I CAN SEE FROM THE BALCONY", - "THAT THE LURKER DIRIGIBLE IS STILL FLOATING ABOVE THE SWAMP.", - "YOU OBVIOUSLY HAVEN'T COMPLETED YOUR TASK.", - "GET MOVING!" + "QUÈ FES AQUÍ JA?", + "PUC VEURE DES DEL BALCÓ", + "QUE EL LURKER DIRIGIBLE ENCARA FLOTA PER SOBRE EL PANTÀ.", + "OBVIAMENT NO HAS COMPLET LA TEVA TASCA.", + "MOVEU-VOS!" ], "sage-intro-sequence-a": [ - "I HAVE SPENT MY LIFE SEARCHING FOR THE ANSWERS THAT MY FATHER,", - "AND MY FATHER'S FATHERS FAILED TO FIND.", - "WHO WERE THE PRECURSORS?", - "WHY DID THEY CREATE THE VAST MONOLITHS THAT LITTER OUR PLANET?", - "HOW DID THEY HARNESS ECO, THE LIFE ENERGY OF THE WORLD?", - "WHAT WAS THEIR PURPOSE? AND WHY DID THEY VANISH?", - "I HAVE ASKED THE PLANTS, BUT THEY DO NOT REMEMBER.", - "THE PLANTS HAVE ASKED THE ROCKS, BUT THE ROCKS DO NOT RECALL.", - "EVEN THE ROCKS DO NOT RECALL...", - "EVERY BONE IN MY BODY TELLS ME THAT THE ANSWERS REST", - "ON THE SHOULDERS OF A YOUNG BOY", - "OBLIVIOUS TO HIS DESTINY, UNINTERESTED IN THE SEARCH FOR TRUTH", - "AND REJECTING OF MY GUIDANCE!", - "AND WHY WOULD HE WANT TO LISTEN TO OLD SAMOS THE SAGE ANYWAY?", - "I'M ONLY THE MASTER OF GREEN ECO, ONE OF THE WISEST MEN ON THE PLANET!", - "SO IT SEEMS THE ANSWER BEGINS NOT WITH CAREFUL RESEARCH", - "OR SENSIBLE THINKING.", - "NAY! AS WITH MANY OF FATE'S MYSTERIES", - "IT BEGINS WITH BUT A SMALL ACT OF DISOBEDIENCE.", - "HEY! UH, JAK? OL' GREEN STUFF TOLD US NOT TO COME HERE!" + "M'HE PASSAT LA MEVA VIDA BUSCANT LES RESPOSTES QUE EL MEU PARE,", + "I ELS PARES DEL MEU PARE NO HO POGUEN TROBAR.", + "QUI EREN ELS PRECURSORS?", + "PER QUÈ VAN CREAR ELS VASTS MONÒLITS QUE ENSEMBOLEN EL NOSTRE PLANETA?", + "COM HAN APROFITAT L'ECO, L'ENERGIA VITAL DEL MÓN?", + "QUINA ERA LA SEVA FINALITAT? I PER QUÈ HAN DESAPARAT?", + "HE PREGUNTAT A LES PLANTES, PERÒ NO SE RECORDEN.", + "LES PLANTES HAN PREGUNTAT A LES ROQUES, PERÒ LES ROQUES NO RECORDEN.", + "FINS I TOT LES ROQUES NO RECORDEN...", + "CADA OS DEL MEU COS EM DIU QUE LES RESPOSTES DESCANSEN", + "A LES ESPATLES D'UN NEN JOVE", + "OBLIVI DEL SEU DESTIN, NO INTERESSAT EN LA CERCADORA DE LA VERITAT", + "I EL REBUT DE LA MEVA ORIENTACIÓ!", + "I PER QUÈ VOLDRIA ESCOLTAR EL VELL SAMOS EL SAVI?", + "NOMÉS SÓC EL MESTRE DEL GREEN ECO, UN DELS HOMES MÉS SABIS DEL PLANETA!", + "SEMBLA QUE LA RESPOSTA NO COMENÇA AMB UNA INVESTIGACIÓ ACURADA", + "O PENSAMENT SENSIBLE.", + "NO! COM AMB MOLTS MISTERIS DEL DEST", + "COMENÇA AMB UN PETIT ACTE DE DESOBEDIÈNCIA.", + "HEI! UH, JAK? OL' GREEN STUFF ENS HA DIT QUE NO VENGUEM AQUÍ!" ], "sage-intro-sequence-d1": [ - "WHAT IN GREEN TARNATION DO YOU TWO WANT?", - "WE- WE- WE WAS- THEY WAS- I'M- I WAS-", - "DON'T TELL ME! INSTEAD OF HEEDING MY WISDOM", - "THE TWO OF YOU WENT MUCKING AROUND", - "IN THE ONLY PLACE THAT I TOLD YOU NOT TO GO: MISTY ISLAND!", - "THAT'S RIGHT! AND THEN-", - "AND, DAXTER, YOU FINALLY TOOK A MUCH-NEEDED BATH", - "BUT IN A BATHTUB FILLED WITH DARK ECO.", - "LOOK, OLD MAN, ARE YOU GONNA KEEP YAPPIN'", - "OR YOU GONNA HELP ME OUTTA THIS MESS!?", - "I'M GONNA KEEP YAPPIN'! BECAUSE IN MY PROFESSIONAL OPINION", - "THE CHANGE IS AN IMPROVEMENT.", - "AND BESIDES... I COULDN'T HELP YOU IF I WANTED TO.", - "WHAT!?", - "THERE'S ONLY ONE PERSON WHO HAS STUDIED DARK ECO LONG ENOUGH", - "TO HAVE A CHANCE AT RETURNING YOU TO YOUR PREVIOUS FORM:", - "GOL ACHERON, THE SAGE.", - "BUT HE LIVES FAR TO THE NORTH. FAR, FAR TO THE NORTH.", - "NOBODY HAS SPOKEN TO HIM IN AGES.", - "I WOULD TELEPORT YOU THERE, BUT I CAN'T DO THAT EITHER.", - "NONE OF THE THREE SAGES THAT MAINTAIN THE OTHER TELEPORTER GATES", - "HAVE SEEN FIT TO TURN THEIR ENDS ON FOR QUITE A WHILE!" + "QUÈ VOLEU EN TARNATION VERDA?", + "NOSALTRES- NOSALTRES- ESTÀVEM- ELLS EREN- JO SÓC- JO ERA-", + "NO ME DIGUIS! EN COMPTES DE FER CAS A LA MEVA SAVIESA", + "ELS DOS HEU ANAT BUCKINGER", + "A L'ÚNIC LLOC AL QUE ET DIG QUE NO ANIS: ILLA BOIRA!", + "AIXÒ ESTÀ BÉ! I LLAVORS-", + "I, DAXTER, PER FIN VA FER UN BANY MOLT NECESSAIT", + "PERÒ EN UNA BANYERA PLENA D'ECO FOSC.", + "MIRA, VELL, SEGUIRÀS PALLANT", + "O M'AJUDARÀS D'AQUEST EMBOLIC!?", + "SEGUIRÉ PALLANT! PERQUÈ EN LA MEVA OPINIÓ PROFESSIONAL", + "EL CANVI ÉS UNA MILLORA.", + "I A MÉS... NO ET PODRIA AJUDAR SI VOLS FER.", + "QUÈ!?", + "NOMÉS HI HA UNA PERSONA QUE HA ESTUDIAT PROU L'ECO FOSC", + "PER TENIR L'OPORTUNITAT DE TORNAR-TE AL TEU FORMULARI ANTERIOR:", + "GOL ACHERON, EL SAVI.", + "PERÒ VIU LLUNY AL NORD. LLUNY, LLUNY AL NORD.", + "NINGÚ LI HA PARLAT EN SÈCLES.", + "JO ET TELEPORTARIA ALLÀ, PERÒ NO PUC FER AIXÒ.", + "CAP DELS TRES SAVIES QUE MANTENEN LES ALTRES PORTES DEL TELEPORTADOR", + "S'HAN VEURE POSSIBLE DE DONAR-SE ELS PARTS DES DE FA MOLT TEMPS!" ], "sage-intro-sequence-d2": [ - "THE ONLY OTHER WAY NORTH IS BY FOOT THROUGH THE FIRE CANYON", - "BUT ITS VOLCANIC SOIL IS HOT ENOUGH TO MELT PRECURSOR METAL.", - "YOU CAN'T JUST WALK THROUGH IT.", - "BUT YOU COULD FLY OVER IT", - "IF YOU HAD A ZOOMER EQUIPPED WITH A HEAT SHIELD.", - "I JUST HAPPEN TO BE WORKING ON SUCH A THING AT THIS VERY MOMENT.", - "ALL I WOULD NEED IS TWENTY POWER CELLS TO GIVE IT ENOUGH ENERGY", - "TO WITHSTAND THE CANYON'S HEAT. ISN'T THAT RIGHT, DADDY?", - "YES, KEIRA, THAT MIGHT WORK. BUT WHERE ARE A BOY", - "AND A HALF!", - "GOING TO GET TWENTY POWER CELLS?", - "FROM THE VILLAGERS! MOST OF THEM HAVE A POWER CELL OR TWO", - "STASHED AWAY SOMEWHERE.", - "AND EVEN IF THEY AREN'T WILLING TO JUST GIVE THEM AWAY", - "GREASING THEIR PALMS WITH A FEW PRECURSOR ORBS SHOULD DO THE TRICK.", - "AND I BET THERE ARE EVEN MORE OF THEM OUT IN THE WILDS JUST WAITING FOR SOME", - "BRAVE ADVENTURER TO FIND.", - "WELL WE'VE GOT THE BRAVE ADVENTURER, AT LEAST.", - "BRAVE ADVENTURER?", - "YOU TWO COULDN'T FIND YOUR WAY OUT OF THE VILLAGE WITHOUT TRAINING!", - "BEFORE YOU DO ANYTHING ELSE, YOU BETTER GO THROUGH THE WARP GATE AND GET", - "SOME PRACTICE ON GEYSER ROCK.", - "UH, WE WON'T FIND ANY MORE OF THAT DARK GOOEY ECO STUFF, WILL WE?", - "'CAUSE I'D HATE TO FALL IN AGAIN AND TURN INTO YOU!", - "GET IN THERE! BEFORE I TURN YOU BOTH INTO FERNS!" + "L'ÚNIC AL NORD ÉS A PEU A TRAVÉS DEL CANÓ DE FOC", + "PERÒ EL SEU SÒL VOLCÀNIC ÉS PROU CALOR PER FONDRE EL METAL PRECURSOR.", + "NO PODEU PASSEJAR-HI.", + "PERÒ PODRIES VOLAR PER SOBRE", + "SI TENIU UN ZOOMER EQUIPAT AMB UN ESCUT TÈRMIC.", + "ESTÀ TREBALLANT EN AQUEST COSA EN AQUEST MOMENT.", + "L'ÚNIC QUE NECESSITARIA ÉS VINT CÈL-LULES D'ENERGIA PER DONAR-LI PROU ENERGIA", + "PER RESISTIR LA CALOR DEL CANÓ. NO ÉS BÉ, PAPA?", + "SÍ, KEIRA, AIXÒ PODRIA FUNCIONAR. PERÒ ON ÉS UN NEN", + "I MITJÀ!", + "VAS A OBTENIR VINT CÈL-LULES DE POTÈNCIA?", + "DES DELS VIBLES! LA MOLTA D'ELLS TENEN UNA O DOS CÈL-LULES DE POTÈNCIA", + "GUARDAT A ALGUN LLOC.", + "I INCLUS QUE NO ESTIGUIN DISPOSATS NOMÉS A REGALA-LOS", + "ENGRAIXAR-SE LES PALMES AMB UNS ORBS PRECURSORS HA DE FER EL TRUCO.", + "I APOSTO QUE ENCARA N'HI HA MÉS A LA NATURA QUE N'ESPEREN.", + "AVENTURER VALENT DE TROBAR.", + "BÉ, TENIM EL VALENT AVENTURER, COMO MÉS.", + "AVENTURER VALENT?", + "VOTREU DOS NO PODEU TROBAR LA VOSTRA SALIDA DEL POBLE SENSE FORMACIÓ!", + "ABANS DE FER QUALSEVOL ALTRE COSA, MILLOR QUE PASIS PER LA PORTA DE L'ORDR I ARRIBES", + "ALGUNES PRÀCTIQUES SOBRE GEYSER ROCK.", + "UH, NO TROBAREM MÉS D'AQUESTE COSA ECO GOOEY FOSC, OI?", + "PERQUÈ ODIARIA TORNAR A CAURE I CONVERTIR-ME EN TU!", + "ENTREU-HI! ABANS DE CONVERTIR-VOS A TOTS DOS EN FALGUERES!" ], "sage-intro-sequence-e": [ - "GOOD TRAINING, BOYS, BUT THAT'S NOTHING COMPARED TO THE CHALLENGES THAT LIE AHEAD.", - "AH, THEY'RE NO PROBLEM. WE GOT THE MOVES, EH JAK?", - "WE'D LOVE TO STAY AND CHAT, BIG GREEN, BUT WE'RE UH...", - "ITCHING TO GET ON WITH OUR ADVENTURES.", - "FINE, FINE, \"ADVENTURE\" AWAY THEN.", - "AND WHILE YOU'RE OUT \"ADVENTURING,\" WHY DON'T YOU MAKE YOURSELF USEFUL?", - "MY DARN GREEN ECO COLLECTORS ARE CLOGGED UP AGAIN.", - "HEAD OUT TO THE FAR SIDE OF THE BEACH AND CLEAR THEM OUT WHY DON'T YOU.", - "FOLLOW THE LAMPS, THEY'LL TAKE YOU RIGHT THERE.", - "NOW, ALL OF YOU...", - "GET OUT OF HERE!" + "BON ENTRENAMENT, NOIS, PERÒ AIXÒ NO ÉS RES EN COMPARACIÓ AMB ELS REPTES QUE TENEN PER AQUEST.", + "AH, NO TENEN PROBLEMES. TENIM ELS MOVIMENTS, EH JAK?", + "ENS ENCANTARÀ QUEDAR-ME I XAT, GRAN VERD, PERÒ ESTEM UH...", + "GANES DE PASSAR AMB LES NOSTRES AVENTURES.", + "BÉ, BÉ, \"AVENTURA\" LLAVORS.", + "I MENTRE ESTÀS \"AVENTURANT\", PER QUÈ NO ET FAS ÚTIL?", + "ELS MEUS COL-LECCIONADORS ECO DARN GREEN ESTAN OBTURATS DE NOU.", + "CAP A L'ALLUNÇ DE LA PLATJA I BORREU-LOS PER QUÈ NO HO FES.", + "SEGUEIX ELS LAMPS, ELS ET PORTAN ALLÀ MATEIX.", + "ARA, TOTS VOSTRES...", + "SURT D'AQUÍ!" ], "sage-introduction-misty-cannon": [ - "OH, IT'S THE CONQUERING HEROES.", - "GOOD, I WANTED TO TALK WITH YOU TWO ABOUT SOMETHING SERIOUS.", - "THERE APPEARS TO BE QUITE A BIT OF LURKER ACTIVITY ON MISTY ISLAND.", - "I CAN SEE THEM BOMBARDING THE PRECURSOR SILO FROM MY LOOKOUT TOWER.", - "IF THE LURKERS OPEN IT UP AND RELEASE THE DARK ECO, WE COULD ALL END UP", - "RUNNING AROUND LOOKING AS RIDICULOUS AS THIS ANNOYING LITTLE SPECIMEN.", - "JAK, IT'S TIME FOR YOU TO PROVE YOUR WORTH.", - "GET THE FISHERMAN TO LET YOU TAKE HIS BOAT BACK TO MISTY ISLAND", - "GET TO THE TOP OF THE PRECURSOR SILO AND TAKE OUT THAT CANNON.", - "AND... WHAT ABOUT ME?", - "YOU? WHY DON'T YOU MOP MY FLOORS? THEY SEEM TO HAVE LOST THEIR SHINE LATELY." + "OH, SÓN ELS HEROIS CONQUERITORIS.", + "BÉ, VOLS PARLAR AMB VOSTRES DOS D'ALGUNA COSA SERIOSA.", + "SEMBLA QUE HI HA UNA MICA D'ACTIVITAT DE LURKER A MISTY ISLAND.", + "ELS PUC VEURE BOMBARDAR LA SILLA DEL PRECURSOR DES DE LA MEVA TORRE GUIA.", + "SI ELS LURKERS HO OBREN I LLENÇAN EL DARK ECO, TOTS PODREM ACABAR", + "CÓRRER SEMBRANT TAN RIDICUL COM AQUEST MOLT MOLT PETIT EXEMPLICITAT.", + "JAK, JA ÉS HORA QUE DEMOSTREU LA VOSTRA VALOR.", + "ACONSEGUIR AL PESCADOR QUE ET DEIXI PORTAR LA SEVA BARCA A L'ILLA BOIRA", + "PUJA AL CIUM DE LA SILLA DEL PRECURSOR I TREURE AQUEST CANÓ.", + "I... QUÈ M'HI PARE?", + "VOSTÈ? PER QUÈ NO EM FREGEU ELS PISOS? SEMBLA QUE DARRERAMENT HAN PERDUT LA BRILLANTOR." ], "sage-reminder-1-ecorocks": [ - "SOME \"BRAVE ADVENTURERS\" YOU TWO ARE.", - "BACK ALREADY AND WITHOUT CLEARING MY BLOCKED ECO HARVESTERS!", - "THEY'RE ON THE FAR SIDE OF THE BEACH, BOYS.", - "NOW...", - "GET MOVING!" + "ALGUNS \"VALENTS AVENTURERS\" SOU VOUS DOS.", + "TORNAR JA I SENSE BORDAR LES MEVES ECO COLECTORS BLOQUEADAS!", + "ESTAN AL LUNÇÀ DE LA PLATJA, NOIS.", + "ARA...", + "MOVEU-VOS!" ], "sage-reminder-1-generic": [ - "WHAT ARE YOU TWO DOING HERE? YOU HAVE POWER CELLS TO COLLECT!", - "LEAVE ME ALONE... UNTIL YOU HAVE THEM!" + "QUÈ FEU AQUÍ ELS DOS? TENIU CÈL-LULES DE POTÈNCIA PER RECOLLIR!", + "DEIXEU-ME SOL... FINS QUE LES TENIU!" ], "sage-reminder-1-misty-cannon": [ - "THE BOMBARDMENT IS GETTING WORSE!", - "FIND THE FISHERMAN IN THE JUNGLE, GET PERMISSION TO USE HIS BOAT", - "AND GET OVER TO MISTY ISLAND TO STOP THE CANNON.", - "AND YOU DAXTER, YOU NEED TO GET MOPPING. THIS PLACE IS A MESS!" + "EL BOMBARDAMENT ESTÀ PITJOR!", + "TROBAR EL PESCADOR A LA SELVA, OBTENIR PERMIS PER UTILITZAR LA SEVA BARCA", + "I ARRIBA A MITY ISLAND PER PARAR EL CANON.", + "I TU DAXTER, NECESSITES PUNTAR-TE A LA FREGADA. AQUEST LLOC ÉS UN EMBOLL!" ], "sage-reminder-2-generic": [ - "YOU TWO JUST DON'T UNDERSTAND THE GRAVITY OF THE SITUATION.", - "THIS IS ABOUT MORE THAN A SINGLE BOY GONE FUZZY. THIS IS ABOUT LIFE AS WE KNOW IT.", - "NOW, GET OUT THERE AND FULFILL YOUR DESTINY." + "ELS DOS NO COMPRENEU LA GRAVITAT DE LA SITUACIÓ.", + "AIXÒ ÉS DE MÉS QUE UN NEN SOLO QUE S'HA QUEDAT BORS. AIXÒ ES LA VIDA TAL COM LA CONEIXEM.", + "ARA, SORTIU I COMPLEIX EL TEU DESTIN." ], "sage-village3-introduction": [ - "OW! I ALWAYS WONDER IF I'M LOSING BODY PARTS IN THOSE THINGS!", - "HOLY YAKOW! THE RED SAGE'S LAB LOOKS WORSE THAN THE BLUE'S!", - "WELL, IT DEFINITELY LOOKS AS THOUGH THERE'S BEEN A STRUGGLE HERE.", + "AU! SEMPRE EM PREGUNTO SI PERDO PARTS DEL COS EN AQUESTES COSES!", + "SANT YAKOW! EL LABORATORI DE LA SALVIA VERMELLA SEMBLA PITJOR QUE EL BLAU!", + "BÉ, DEFINITIVAMENT SEMBLA QUE TOT I QUE AQUÍ HA HAGUT UNA LLUITA.", "HA HA HA HA HA!", - "I'D HARDLY CALL IT \"STRUGGLE.\"", - "WOULD YOU, DEAR SISTER?", - "CERTAINLY NOT. THE RED SAGE GAVE UP WITH SO LITTLE EFFORT.", - "NO FUN AT ALL.", - "GOL? IS THAT YOU?", - "YOU'VE FINALLY GONE OFF THE DEEP END, EH?", - "AND, MAIA! I TOLD YOU THE DARK ECO WOULD AFFECT YOU BOTH!", - "HNG, NOBODY EVER LISTENS TO OLD SAMOS...", - "WHAT HAVE YOU TWO DONE WITH THE BLUE AND RED SAGES?", - "DON'T WORRY ABOUT YOUR COLORFUL FRIENDS, YOU OLD FOOL.", - "THEY'RE PERFECTLY SAFE IN OUR CITADEL. OUR SPECIAL GUESTS.", - "THEY HAVE GRACIOUSLY AGREED TO HELP US ON A LITTLE PROJECT.", - "YOU WERE WRONG, SAMOS. DARK ECO CAN BE CONTROLLED!", - "WE'VE LEARNED ITS SECRETS, AND NOW WE CAN RESHAPE THE WORLD TO OUR LIKING.", - "YOU CAN'T CONTROL DARK ECO BY ITSELF! EVEN THE PRECURSORS COULDN'T-", - "UNTIL NOW, WE'VE HAD TO SCRAPE BY WITH WHAT LITTLE DARK ECO", - "WE COULD FIND NEAR THE SURFACE.", - "BUT SOON, WE WILL HAVE ACCESS TO THE VAST STORES", - "OF DARK ECO HIDDEN DEEP UNDERGROUND.", - "NOT THE SILOS!", - "YES, THE SILOS!", - "THEY WILL BE OPENED, AND ALL THE DARK ECO IN THE WORLD WILL BE OURS!", - "BUT THAT'S IMPOSSIBLE! ONLY A PRECURSOR ROBOT-", - "OH, DON'T LOOK SO UPSET, SAMOS.", - "WE'VE GOT BIG PLANS FOR YOU.", + "DIFÍCIL EN DIRIA \"LLUITA\".", + "VOLS, ESTIMADA GERMANA?", + "CERTAMENT NO. EL SALVI VERMELL VA RENUNCIAR AMB TAN POC ESFORÇ.", + "CAP DIVERTIMENT.", + "GOL? ETS TU?", + "FINALMENT HAS ANAT DE L'EXTREM PROFUND, EH?", + "I, MAIA! T'HE DIT QUE L'ECO FOSC ENS AFECTARÀ A DOS!", + "HNG, NINGÚ MAI ESCOLTA EL VELL SAMOS...", + "QUÈ HEU FET VOSTRE DOS AMB ELS SAVIS BLAU I VERMELL?", + "NO ET PREOCUPIS PELS TEUS AMICS DE COLORS, VELL XIMPLE.", + "ESTAN PERFECTAMENT SEGURES A LA NOSTRA CIUTADELLA. ELS NOSTRES CONVIDATS ESPECIALS.", + "HAN ACORDAT AMABLEMENT AJUDAR-NOS EN UN PETIT PROJECTE.", + "T'EQUIVES, SAMOS. L'ECO FOSC ES POT CONTROLAR!", + "HEM APRÈS ELS SEUS SECRETS, I ARA PODEM REFORMAR EL MÓN AL NOSTRE AGREG.", + "NO PODEU CONTROLAR EL ECO FOSC PER SI SOL! NI TAN SOLS ELS PRECURSORS NO PODIEN...", + "FINS ARA, HEM HAGUIT DE PASAR AMB QUIN PETIT ECO FOSC", + "ENS PODREM TROBAR A PROP DE LA SUPERFÍCIE.", + "PERÒ AVIAT, TIREM ACCÉS A LES GRANDES BOTIGUES", + "D'ECO FOSC OCULAT SUBTERRÀNIA PROFUNDA.", + "NO LES SILLOS!", + "SÍ, LES SILLOS!", + "S'OBRIRAN, I TOT L'ECO FOSC DEL MÓN SERÀ NOSTRE!", + "PERÒ AIXÒ ÉS IMPOSSIBLE! NOMÉS UN ROBOT PRECURSOR-", + "OH, NO SEMBLI TAN MOLEST, SAMOS.", + "TENIM GRANS PLANS PER A TU.", "AH HA HA HA HA HA HA! AHH...", - "WAIT A MINUTE!", - "THAT WAS GOL?", - "THE SAME GOL WHO'S SUPPOSED TO CHANGE ME BACK?", - "GOL IS THE GUY TRYING TO KILL US?!", - "I'M DOOMED.", - "WE MAY ALL BE DOOMED.", - "IF THEY OPEN THE SILOS, THE DARK ECO WILL", - "TWIST AND DESTROY EVERYTHING IT TOUCHES!", - "WE SIMPLY MUST GET TO THEIR CITADEL, TO STOP THEM!", - "THE FASTEST WAY THERE IS THROUGH THE LAVA TUBE", - "AT THE BOTTOM OF THIS CRATER.", - "A FEW MORE POWER CELLS, AND YOUR ZOOMER'S HEAT SHIELD", - "SHOULD GET YOU ACROSS THE LAVA SAFELY.", - "ALL RIGHT, MY BOY. YOU KNOW WHAT TO DO.", - "TAKE THE FLEABAG AND GO ROUND UP MORE POWER CELLS." + "ESPERA UN MINUT!", + "ALLÒ ERA GOL?", + "EL MATEIX GOL QUI M'HA DE TORNAR A CANVIAR?", + "GOL ÉS EL TIPO INTENANT DE MATAR-NOS?!", + "ESTIC CONDENAT.", + "TOTS ESTEM CONDENATS.", + "SI OBREN LES SILLOS, L'ECO FOSC HO FA", + "TORÇA I DESTRUIR TOT EL QUE TOCA!", + "SEMPLICAMENT HEM D'ARRIBAR A LA SEVA CIUTADELLA, PER ATURAR-LOS!", + "LA MANERA MÉS RÀPID QUE HI HA A TRAVÉS DEL TUBO DE LAVA", + "AL FON D'AQUEST CÀTER.", + "ALGUNES CÈL-LULES D'ENERGIA MÉS, I L'ESCUT TÈRMIC DEL VOSTRE ZOOMER", + "HAUR DE FER-TE A TRAVÉS DE LA LAVA DE MANERA SEGURA.", + "D'ACORD, NEN MEU. SAPS QUE HAS DE FER.", + "AGAFA EL FLEABAG I VA ARROLLIR MÉS CÈL-LULES DE POTÈNCIA." ], "sage-village3-introduction-dark-eco": [ - "GREAT BALLS OF ECO!", - "THERE SEEMS TO BE A LARGE LURKER PRESENCE IN THE SPIDER CAVES!", - "GREAT. SOUNDS LIKE A REAL CHEERY PLACE.", - "LET ME GUESS. THERE ARE SPIDERS IN THE SPIDER CAVES, RIGHT?", - "OF COURSE THERE ARE SPIDERS IN SPIDER CAVES!", - "BUT THAT'S THE LEAST OF YOUR PROBLEMS!", - "THE LURKERS ARE AFTER CRYSTALS OF CONCENTRATED DARK ECO.", - "YOU'VE GOT TO DESTROY THE CRYSTALS BEFORE THOSE MONSTERS", - "GET THEIR HANDS ON THEM!", - "HOP TO IT!" + "GRAN BOLES D'ECO!", + "SEMBLA QUE HI HA UNA GRAN PRESÈNCIA DE LURKER A LES COVES DE L'ARANYA!", + "GRAN. SONA A UN LLOC VERDIAL ALEGRE.", + "DEIXA'M ENDEVINAR. HI HA ARANYES A LES COVES DE L'ARANYA, OI?", + "PER ÉS QUE HI HA ARANYES A LES COVES DE L'ARANYA!", + "PERÒ AQUEST ÉS EL MENYOR DELS TEUS PROBLEMES!", + "ELS LURKERS SON DESPRÉS DE CRISTALLS D'ECO FOSC CONCENTRAT.", + "HAS DE DESTRUIR ELS CRISTALLS DAVANT AQUESTS MONSTERS", + "POSEU-LES MANS!", + "HOP-HI!" ], "sage-village3-introduction-rams": [ - "I'M GLAD YOU TWO ARE HERE. THERE'S LURKER MOVEMENT IN THE MOUNTAINS.", - "APPARENTLY THEY'VE DISCOVERED, AND ARE NOW TRYING TO REMOVE,", - "SOME DARK ECO STORES FROZEN IN THE GLACIERS.", - "WHILE YOU'RE UP THERE POKING AROUND FOR POWER CELLS", - "STOP THOSE LURKERS, AND KEEP A LITTLE MORE DARK ECO OUT OF GOL'S HANDS." + "M'ALEGRADA QUE SEU AQUÍ DOS DOS. HI HA MOVIMENT DE LURKER A LA MUNTANYA.", + "SEMBLA SER QUE HAN DESCOBRIT I ARA ENS INTENTEN ELIMINAR,", + "ALGUNES BOTIGUES ECO FOSCES CONGELADES A LES GLACIARS.", + "MENTRE ESTEU ALLÀ DALT, BUSCANT CÈL-LULES D'ENERGIA", + "ATURA AQUESTS LURKERS I MANTENIU UNA MICA MÉS FOSC DE LES MANS DE GOL." ], "sage-village3-reminder-1-dark-eco": [ - "YOU HAVE TO DESTROY THE DARK ECO CRYSTALS IN SPIDER CAVES!" + "HAS DE DESTRUIR ELS CRISTALLS ECO FOSC A LES COVES DE L'ARANYA!" ], "sage-village3-reminder-1-rams": [ - "WE CAN'T LET THE LURKERS GET THEIR HANDS ON THE DARK ECO CANISTERS.", - "GET UP TO THOSE SNOWY PEAKS AND STOP THEM!" + "NO PODEM DEIXAR QUE ELS LURKERS POSIN LES MANS ALS BONS ECO FOSC.", + "APUJA A AQUESTS CIMS NEVATS I ATURA'LS!" ], "sculptor-introduction": [ - "HEY... LITTLE FURRY DUDE!", - "AWW... I THOUGHT FOR A MOMENT YOU WERE MY MUSE.", - "YOUR WHAT?", - "HAVEN'T YOU EVER SEEN A MUSE BEFORE?", - "IT'S A LITTLE GLOWIN' SQUIRREL ABOUT YOUR SIZE, FULL OF SPUNK, AND CRAZY AS A LARK!", - "OH, I GET IT! LIKE A SIDEKICK.", - "AS A MATTER OF FACT, WITHOUT MY MUSE, I JUST CAN'T SCULPT.", - "BUT WITH HER AROUND... I SEE BEAUTY IN EVERYTHING, YOU KNOW?", - "RIGHT NOW I COULDN'T CHISEL MY WAY OUT OF A BOX.", - "I THINK SHE RAN AWAY TO THAT MISTY ISLAND.", - "AWW, I JUST HOPE SHE'S ALL RIGHT.", - "IT'S WORTH A POWER CELL IF YOU BRING HER BACK TO ME!", - "WAIT A MINUTE! WE ARE NOT GOING BACK TO MISTY ISLAND!", - "ARE WE?" + "ELI... PETIT PELUT!", + "AWW... PER UN MOMENT VAIG PENSAR QUE ERES LA MEVA MUSA.", + "EL TEU QUÈ?", + "NO HAVEU VIST MAI UNA MUSA?", + "ÉS UN ESQUIROL PETIT BRILLANT DE LA TEVA MIDA, PLENA DE PUNTA I BOJA COM UNA ALOSA!", + "OH, HO ENTENC! COM UN CAMIONAL.", + "DE FET, SENSE LA MEVA MUSA, NO PUC ESCULTAR.", + "PERÒ AMB ELLA AL VOLTA... VEIG BELLESA EN TOT, SABEU?", + "ARA MÉS NO HE PODUT ESCOLAR LA MEVA FORMA DE SORTIR D'UNA CAPSA.", + "CREC QUE VA FUGIR CAP A AQUESTA ILLA BOIRA.", + "AWW, ESPERO QUE ESTIGUI BÉ.", + "VAL LA PENA UNA CÈLULA DE POTÈNCIA SI EM LA TORNEU!", + "ESPERA UN MINUT! NO TORNEM A L'ILLA BOIRA!", + "SOM?" ], "sculptor-reminder-1": [ - "AW HEY DUDES! DID YOU FIND MY MUSE YET?" + "OH HOLA TIGUES! JA HAS TROBAT LA MEVA MUSA?" ], "sculptor-resolution": [ - "OH, MY MUSE! YOU SAVED HER! AW, YOU REALLY ARE THE BEST!", - "HERE, TAKE THIS POWER CELL. I WON'T NEED IT NOW THAT I HAVE MY INSPIRATION BACK!" + "OH, MEVA MUSA! L'HAS SALVAT! AW, REALMENT ETS EL MILLOR!", + "AQUÍ, PRENEU AQUESTA CÈL-LA DE POTÈNCIA. NO EL NECESSITARÉ ARA QUE TINC LA MEVA INSPIRACIÓ!" ], "sidekick-human-intro-sequence-b": [ - "CONTINUE YOUR SEARCH FOR ARTIFACTS AND ECO.", - "IF THE LOCALS POSSESS PRECURSOR ITEMS, YOU KNOW WHAT TO DO.", - "DEAL HARSHLY WITH ANYBODY WHO STRAYS FROM THE VILLAGE.", - "WE WILL ATTACK IT IN DUE TIME." + "CONTINUA LA TEVA CERCADORA D'ARTEFACTES I ECO.", + "SI ELS LOCALS TENEN ARTICLES PRECURSORS, SABES QUÈ FER.", + "TRATA CURSAMENT AMB QUALSEVOL ALLÒ DEL POBLE.", + "L'ATACAREM AMB EL TEMPS DEBUT." ], "sidekick-human-intro-sequence-c": [ - "WHAT ARE WE DOING HERE ANYWAY, JAK? THIS PLACE GIVES ME THE CREEPS!", - "HUH?", - "(GROAN) STUPID PRECURSOR JUNK!", - "EEK! WHAT IS THAT DARK OOZE? IT SURE DON'T LOOK FRIENDLY.", - "THE SAGE YAPS ON ABOUT THE PRECURSORS THAT BUILT THIS PLACE ALL THE TIME.", - "\"WHERE DID THEY GO? WHY DID THEY BUILD THIS CRAP?\"", - "NOW I LIKE PRECURSOR ORBS AND POWER CELLS AS MUCH AS THE NEXT GUY", - "BUT IF YOU ASK ME, THEY MUST HAVE BEEN REAL LOSERS.", - "WHOA! HOW DID YOU DO THAT?", - "JAK, I THINK WE'RE IN TROUBLE!", - "MAN, THAT STUNG.", - "I TOLD YOU WE SHOULDN'T HAVE COME HERE, AND YOU LISTENED?", - "WHAAAT?", - "WAAAAAAAAHHHHHHHH!!", - "OKAY, OKAY. I'M FINE, I'M FINE...", - "WAAAAAAAAHHHHHHHH!!" + "QUÈ FEM AQUÍ, JAK? AQUEST LLOC EM DONA LES FALTES!", + "OI?", + "(GEM) ESTÚPID RUTA DE PRECURSORS!", + "EEK! QUÈ ÉS AQUELLA LLUME FOSC? SEGUR QUE NO SEMBLA AMIGABLE.", + "EL SAVI VA PARLAR SOBRE ELS PRECURSORS QUE VAN CONSTRUIR AQUEST LLOC TOT EL TEMPS.", + "\"ON HAN ANAT? PER QUÈ HAN CONSTRUIT AQUESTA MERDA?\"", + "ARA M'AGRADA LES ORBS PRECURSORS I LES CÈL-LULES DE POTÈNCIA TANTO COM EL PROPER NOI", + "PERÒ SI M'HO PREGUNTES, HAN D'HAVER SER VERTS PERDEDORS.", + "WHOA! COM HO HAS FET?", + "JAK, CREC QUE ESTEM EN PROBLEMES!", + "HOME, QUE VA PICAR.", + "T'HE DIT QUE NO HÀRVIEM DE VENIR AQUÍ, I HAS ESCOLTAT?", + "QUÈ?", + "WAAAAAAAAHHHHHHH!!", + "D'ACORD D'ACORD. ESTIC BÉ, ESTIC BÉ...", + "WAAAAAAAAHHHHHHH!!" ], "warrior-introduction": [ - "OHH... MY ACHING HEAD.", - "I DOUBT THAT'S ONE OF YOUR VITAL ORGANS!", - "WALK IT OFF, TOUGH GUY!", - "OH, SURE, I WAS TOUGH ONCE.", - "MAYBE EVEN THE TOUGHEST OF THEM ALL.", - "I SINGLE-HANDEDLY DEFENDED THIS VILLAGE FROM THOSE HORRID CREATURES FOR ALMOST A YEAR!", - "THEN THAT HORRIBLE MONSTER ARRIVED AND COMMENCED THE BOULDER BOMBARDMENT.", - "SO, FULL OF VALOR, ARMOR SHINING IN THE SUN...", - "I CLIMBED THE HILL TO TAKE HIM ON...!", - "BUT HE POUNDED ME LIKE ONE TENDERIZES A YAKOW STEAK.", - "HAVE YOU TRIED ATTACKING HIM WITH YOUR MELODRAMA?", - "'CAUSE IT'S KILLIN' ME!", - "AFTER MY LAST STUNNING FAILURE,", - "HE SEALED THE PASSAGEWAY TO HIS ROOST WITH A 30-TON BOULDER,", - "LEAVING NO WAY FOR ANYONE TO CHALLENGE HIM AGAIN.", - "SO, OUR SAGE, A MASTER OF BLUE ECO AND A MECHANICAL GENIUS, DEVISED A MACHINE", - "CAPABLE OF LIFTING THE BOULDER OUT OF THE WAY...!", - "BUT ALAS, HE DISAPPEARED BEFORE WE HAD A CHANCE TO TURN IT ON.", - "AND HE TOOK ALL OF HIS POWER CELLS WITH HIM.", - "AT LEAST I WAS ABLE TO PULL ENOUGH PONTOONS OUT OF OUR BRIDGE TO PREVENT", - "THAT MONSTER FROM COMING DOWN HERE TO DO ME HARM.", - "YEAH, GOOD, GOOD JOB, TOUGH GUY. BUT, UM...", - "WE'RE GONNA NEED YOU TO, UH... PUT 'EM BACK, AND STUFF.", - "OH, SURE! AND SEAL MY DOOM?", - "(SIGHS)", - "ALRIGHT. FINE.", - "BRING ME 90 PRECURSOR ORBS AND I'LL LET THE PONTOONS LOOSE.", - "BUT I'M NOT GOING TO FIGHT THAT MONSTER AGAIN!" + "OHH... EL MEU CAP DOLOR.", + "DUBTO QUE ÉS UN DELS VOSTRE ÒRGANS VITALS!", + "AVANÇA-HO, NOI DUR!", + "OH, SEGUR, VAIG SER DUR UNA VEGADA.", + "POTSER ELS MÉS DURS DE TOTS.", + "VAIG DEFENSAR AQUEST POBLE D'AQUESTES HORRIDES CRITURES DURANT GAURESI UN ANY!", + "LLAVORS VA ARRIBAR AQUEST MONSTRE HORRIBLE I VA COMENÇAR EL BOULDER BOULDER.", + "AIXÍ, PLENA DE VALOR, ARMADURA BRILLANT AL SOL...", + "HE PUJAT AL TURÓ PER EMPORTAR-LO...!", + "PERÒ EM VA PASSAT COM UNA TENDERITZA UN BIS DE IAC.", + "HAS PROVAT D'ATACAR-LO AMB EL TEU MELODRAMA?", + "PERQUÈ M'ESTÀ MATANT!", + "DESPRÉS DEL MEU ÚLTIM FRACÀS IMPRESCINDIBLE,", + "VA SEGELLAR EL PASSEIG AL SEU GOLLAR AMB UN BÒLDER DE 30 TONES,", + "NO DEIXAR MANERA PER QUE NINGÚ EL TORNEM A REPTAR.", + "AIXÒ, EL NOSTRE SAVI, UN MESTRE DEL BLUE ECO I UN GENI MECÀNIC, VA IDEAR UNA MÀQUINA", + "CAPAÇOS D'ALLULAR EL BÒLDER DEL CAMÍ...!", + "PERÒ PER AIG, VA DESAPARECER ABANS QUE TENIM OPORTUNITAT D'ACTIVAR-HO.", + "I VA EMPORTAR TOTES LES CÈL-LULES DE PODER AMB ELL.", + "COMMENÇAMENT VAIG PODER TREURE PROU PONTONS DEL NOSTRE PONT PER PREVENIR", + "AQUELL MONSTRE DE BAIXAR AQUÍ PER FER-ME MAL.", + "SÍ, BONA, BONA FEINA, NOI DUR. PERÒ, UM...", + "NECESSITAREM QUE, UH... TORNAR-LOS, I COSES.", + "ÉS CLAR! I SEGELAR LA MEVA CONDICIÓ?", + "(SOSPIRS)", + "BÉ. BÉ.", + "PORTEU-ME 90 ORBS PRECURSORS I DEIXARÉ ELS PONTONS.", + "PERÒ NO TORNAREM A LLUTAR AQUELL MONSTRE!" ], "warrior-reminder-1": [ - "TAKE ALL THE TIME YOU WANT BRINGING ME THE PRECURSOR ORBS", - "I'M NOT LOOKING TO FIX THE PONTOON BRIDGE ANY TIME SOON." + "PRENEU-TE TOT EL TEMPS QUE VULGUEU PER PORTAR-ME ELS ORBS PRECURSORS", + "NO BUSCO ARRANJAR EL PONT DEL PONTOON EN CAP MOMENT." ], "warrior-resolution": [ "OH.", - "WONDERFUL.", - "YA BROUGHT ME THE PRECURSOR ORBS.", - "ALL RIGHT.", - "I'LL FIX THE BRIDGE.", - "BUT DON'T ASK ME TO GET INVOLVED WITH THAT CREATURE AGAIN!" + "MERAVELLÓS.", + "M'HAS PORTAT ELS ORBS PRECURSORS.", + "TOT BÉ.", + "ARREGLARÉ EL PONT.", + "PERÒ NO EM DEMANEU QUE M'INVOLUCI DE NOSA AMB AQUELLA CRIA!" ], "yellowsage-resolution": [ - "WHO WOULDA THOUGHT I'D LIVE TO SEE THE DAY", - "WHEN I NEEDED TO BE RESCUED BY A BOY AND HIS MUSKRAT!", - "AHH... I'M GONNA GIVE GOL AND MAIA", - "A LITTLE PAYBACK FOR THIS EMBARRASSMENT!", - "THEN WE'LL SEE ABOUT COOKING UP SOME MUSKRAT STEW...", + "QUI PENSARIA QUE VIU PER VEURE EL DIA", + "QUAN HAGA NECESSITAT QUE UN NEN I LA SEVA RAT ALMEDRADA M'ENS RESCAT!", + "AHH... DONARÉ GOL I MAIA", + "UNA MICA DE RECOMPENSA PER AQUESTA VERGNYA!", + "DESPRÉS VEUREM COM CUINA UN GUIT DE RATES ALMERES...", "(GULPS)" ] }, @@ -1060,81 +1060,81 @@ "HMM..." ], "ASSTLP02": [ - "GOTTA GET THIS HEAT SHIELD WORKING..." + "HE DE FUNCIONAR AQUEST ESCUT TÈRMIC..." ], "ASSTLP03": [ - "WE NEED POWER CELLS TO FUEL THE HEAT SHIELD..." + "NECESSITEM CÈLLES ELÈCTIQUES PER ALIMENTAR L'ESCUT TÈRMIC..." ], "ASSTLP04": [ - "WHERE'S MY SPANNER?" + "ON ÉS LA MEVA CLAVE?" ], "ASSTLP05": [ - "FIRE CANYON IS SO HOT..." + "EL CANYON DE FOC ÉS TAN CALOR..." ], "ASSTLP23": [ - "NOW, HOW DID HE GET THAT LEVITATOR TO WORK?" + "ARA, COM VA FER TREBALLAR AQUEST LEVITATOR?" ], "ASSTLP24": [ - "NOW, EVEN WITH POWER CELLS,", - "WILL WE HAVE ENOUGH POWER?" + "ARA, FINS I TOT AMB CÈL-LULES DE POTÈNCIA,", + "TINDREM PROU PODER?" ], "ASSTLP30": [ - "HM, LET'S SEE..." + "HM, A VEURE..." ], "ASSTLP31": [ "HM." ], "ASSTLP32": [ - "OH, MY..." + "OH EL MEU..." ], "ASSTLP33": [ "AH-HA!" ], "ASSTLP34": [ - "HUH... WHAT ARE GOL AND MAIA UP TO?" + "EH... QUÈ PRESENTEN EL GOL I LA MAIA?" ], "ASSTLP35": [ - "HMM... WE'VE GOTTA GET TO PRECURSOR CITY." + "HMM... HEM D'ARRIBAR A LA CIUTAT PRECURSOR." ], "ASSTLP36": [ - "HUH. THE HEAT SHIELD'S GOING TO NEED EVEN MORE POWER", - "TO WITHSTAND THE LAVA." + "HUH. L'ESCUT TÈRMIC NECESSITARÀ ENCARA MÉS POTÈNCIA", + "PER RESISTIR A LA LAVA." ], "ASSTLP37": [ - "AW... WE'VE GOT TO SAVE THE OTHER SAGES..." + "AW... HEM DE SALVAR ELS ALTRES SAVIS..." ], "BIL-AM01": [ - "I JUST LOVE THE MUD." + "M'ENCANTA EL FANG." ], "BIL-AM02": [ - "DARN SWAMP RATS." + "DARN RATES DEL PANTÀ." ], "BIL-AM03": [ - "I NEED A GOOD DRAUGHT OF MAMA'S MEDICINE." + "NECESSITO UN BON ESBORRADOR DE MEDICINA DE MAMA." ], "BIL-AM04": [ "GLADIOLA." ], "BIL-AM05": [ - "I NEED ME SOME BROWN MEDICINE." + "EM NECESSITO UN MEDICAMENT MARRON." ], "BIL-AM06": [ - "I NEED ME SOME SUMMER COOLANT." + "EM NECESSITO UN REFRIGERANT D'ESTIU." ], "BIL-AM07": [ - "DARN, THIS HEAT'S GIVIN' ME THE PRICKLIES." + "DARN, AQUESTA CALOR EM ESTÀ DONANT LES PIXOS." ], "BIL-AM08": [ - "DARN... THIS HEAT'S GIVIN' ME A RASH." + "DARN... AQUESTA CALOR M'ESTÀ DONANT UNA ERUPCIÓ." ], "BIL-AM1A": [ - "MM-MM! I JUST LOVE THE MUD!" + "MM-MM! M'ENCANTA EL FANG!" ], "BIL-AM2A": [ - "DARN SWAMP RATS!" + "DARN RATES DEL PANTAT!" ], "BIL-AM2B": [ - "DARN SWAMP RATS!" + "DARN RATES DEL PANTAT!" ], "BIL-LO01": [ "FARTHY!" @@ -1152,43 +1152,43 @@ "SOIEE-SOIEE-SOIEE!" ], "BIL-LO2B": [ - "SOIEE! SOIEE!" + "SOIA! SOIA!" ], "BIL-TA01": [ - "GET 'EM!" + "ACONSEGUEIX-LOS!" ], "BIL-TA02": [ - "NICE SHOT!" + "BONA XAT!" ], "BIL-TA03": [ - "OVER THAR!" + "A MÉS DE TAR!" ], "BIL-TA04": [ "AW, DANG." ], "BIL-TA05": [ - "RAT GOT A SNACK." + "LA RATA VA PASSAR UN BENARI." ], "BIL-TA06": [ - "AND ANOTHER..." + "I UN ALTRE..." ], "BIL-TA07": [ - "THERE'S ONLY ONE LEFT..." + "NOMÉS EN QUEDA UNA..." ], "BIL-TA08": [ - "GOT 'EM." + "ELS TENIU." ], "BIL-TA09": [ "YEEHAW!" ], "BIL-TA1A": [ - "GET 'EM!" + "ACONSEGUEIX-LOS!" ], "BIL-TA2A": [ - "NICE SHOT!" + "BONA XAT!" ], "BIL-TA3A": [ - "OVER THAR." + "SOBRE THAR." ], "BIL-TA4A": [ "DANG!" @@ -1197,163 +1197,163 @@ "DANG!" ], "BIL-TA5A": [ - "RAT GOT A SNACK!" + "LA RATA S'HA PASSAT UN BENARI!" ], "BIR-AM01": [ - "ARE YOU NEAR THE EGG YET?" + "JA ESTÀS A PROP DE L'OU?" ], "BIR-AM02": [ - "THAT'S IT, JUST A LITTLE FURTHER!" + "AIXÒ, UNA MICA MÉS!" ], "BIR-AM03": [ - "OH, GOOD, NOW PUSH IT. OH, GENTLY NOW!" + "OH, BÉ, ARA EMPENYEU-LO. OH, SUAUMENT ARA!" ], "BIR-AM04": [ - "OH, MY, THAT WASN'T GENTLE!" + "OH, MEU, AIXÒ NO VA SER SUAU!" ], "BIR-AM05": [ - "COME ON, PUSH THE EGG OFF THE CLIFF!" + "VINGA, EMPENTEU L'OU DEL CINGALL!" ], "BIR-AM06": [ "OHH!" ], "BIR-AM07": [ - "OH, HERE, BIRDIE BIRDIE. HERE, BIRDIE BIRDIE." + "OH, AQUÍ, BIRDIE BIRDIE. AQUÍ, BIRDIE BIRDIE." ], "BIR-AM08": [ - "HERE, BIRDIE BIRDIE." + "AQUÍ, BIRDIE BIRDIE." ], "BIR-AM09": [ - "BE CAREFUL, IT DOESN'T LOOK SAFE UP THERE!" + "ATENCIÓ, NO SEMBLA SEGUR ALLÀ DALT!" ], "BIR-AM10": [ - "CAREFUL, EASY DOES IT!" + "ATENCIÓ, HO FA FÀCIL!" ], "BIR-AM11": [ - "GOOD JOB! NOW MEET ME DOWN HERE BY THE EGG." + "BONA FEINA! ARA CONEIXEM AQUÍ BAIX AL VANT DE L'OU." ], "BIR-AM12": [ - "YOU MUST BE A TRUE ANIMAL LOVER!" + "HEU DE SER UN VERDADER AMANT DELS ANIMALS!" ], "BIR-AM13": [ - "DO YOU SEE ANY OTHER BIRDS UP THERE?" + "VEU ALGUN ALT OCELL ALLÀ DALT?" ], "BIR-LO01": [ - "(KISS) (WHISTLE)" + "(PETON) (XIULAR)" ], "BIR-LO02": [ - "OH MY, THAT'S A PRETTY ONE." + "MAI, ÉS UNA BONA." ], "BIR-LO03": [ - "OH LOOK, A MUCKY-MUCK." + "OH MIRA, UN MUCK-MUCK." ], "BIR-am08": [ - "HERE, BIRDIE BIRDIE..." + "AQUÍ, BIRDIE BIRDIE..." ], "BLU-AM01": [ - "A LITTLE BIT OF HELP WOULD BE GOOD!" + "UNA MICA D'AJUDA SERÀ BÉ!" ], "BLU-AM02": [ - "OH, THIS IS A FINE MESS." + "OH, AQUEST ÉS UN BON EMBOLIC." ], "BLU-AM03": [ - "HMM, QUITE AN ENIGMA WE'RE FACING." + "HMM, TOT UN ENIGMA AL QUE ENS ENFRENTEM." ], "CHI-AM01": [ - "THIS IS A CATASTROPHE. A CATASTROPHE I SAY!" + "AIXÒ ÉS UNA CATÀSTROFE. UNA CATASTROFE DIC!" ], "CHI-AM02": [ - "THEY WANT ME TO GO INTO THE JUNGLE - ME! HO HO OH...", - "I'D SOONER WRESTLE AN ENRAGED FLUT-FLUT." + "VOLEN QUE VAIG A LA SELVA - JO! HO HO OH...", + "MÉS PREVÉS LLUTAR UNA FLUT-FLUT ENRABIDA." ], "CHI-AM03": [ - "F-FIRST THE FISHERMAN'S BOAT IS...", - "IT'S ATTACKED BY A MONSTER...", - "AND NOW, NOW THIS...", - "WHAT ELSE COULD GO WRONG?" + "F-PRIMER LA BARCA DEL PESCADOR ÉS...", + "HA ATACAT PER UN MONSTE...", + "I ARA, ARA AQUEST...", + "QUÈ MÉS PODRIA ANAR MALLAT?" ], "CHI-AM04": [ - "I DON'T... I'D, I'D... OOH, MAYBE I SHOULD RAISE TAXES...", - "TO PAY FOR THIS MESS." + "JO NO... JO, JO... OOH, POTSER HAURÀ D'APUJAR ELS IMPOSTOS...", + "PER PAGAR AQUEST EMBOLIC." ], "CHI-AM05": [ - "PROBLEMS... PROBLEMS... PROBLEMS!" + "PROBLEMES... PROBLEMES... PROBLEMES!" ], "CHI-AM06": [ - "(SOBS) I'LL NEVER GET RE-ELECTED NOW..." + "(SOLS) ARA MAI SERÉ REELECTAT..." ], "CHI-AM07": [ - "(MOANS) WHAT'S HAPPENED TO THE VILLAGE'S ENERGY BEAM?" + "(GEMES) QUÈ HA PASSAT AMB EL FIX D'ENERGIA DEL POBLE?" ], "CHI-AM08": [ - "I... THEY, I DON'T... (MUTTERS)" + "JO... ELLS, JO NO... (MULLEJA)" ], "CHI-LO01": [ - "...WINDMILL, MONSTERS, POWER, RE-ELECTION..." + "...MOLÍ DE VENT, MONSTERS, PODER, REELECCIÓ..." ], "CHI-LO02": [ - "...THE POLLS, I... MONSTERS, HM... RE-ELECTION, OH..." + "...LES URNES, JO... MONSTERS, HM... REELECCIÓ, OH..." ], "EXP-AM01": [ - "I NEED TO SET OFF ON MY JOURNEY SOON.", - "I NEED PRECURSOR ORBS!" + "NECESSITO PARTICIPAR EN EL MEU VIATGE AVIAT.", + "NECESSITO ORBS PRECURSORS!" ], "EXP-AM02": [ - "LET'S SEE, NOW WHERE SHALL I GO FIRST? EH..." + "A VEURE, ARA ON ANIREM PRIMER? EH..." ], "EXP-AM03": [ - "OH I DO MISS THE OPEN ROAD." + "OH, TROBO A FALTAR EL CAMÍ OBERT." ], "EXP-AM04": [ - "SO MANY PLACES TO SEE, AND SO LITTLE TIME." + "MOLTS LLOCS PER VEURE, I TAN POC DE TEMPS." ], "EXP-AM05": [ - "WELL IN MY DAY, YOU COULD WALK THE LANDS", - "WITHOUT BEING ASSAULTED BY MONSTERS!" + "BÉ EN EL MEU DIA, PODEU PASSEJAR LES TERRES", + "SENSE SER ASSALTAT PER MONSTERS!" ], "EXP-LO02": [ - "I NEED MORE PRECURSOR ORBS." + "NECESSITO MÉS ORBS PRECURSORS." ], "EXP-LO1A": [ - "(MUTTERS)" + "(MUNTERS)" ], "FAR-AM01": [ - "(SNORES) HERE, BESSIE... HERE, BESSIE BESSIE...", - "THAT'S A GOOD GIRL..." + "(RONC) AQUÍ, BESSIE... AQUÍ, BESSIE BESSIE...", + "ÉS UNA BONA NOIA..." ], "FAR-AM02": [ - "GOTTA BRING IN THE CROPS 'FORE THE JUNE BUGS..." + "HEM DE PORTAR ELS CULTIUS PER A LES INSECTES DE JUNY..." ], "FAR-AM2A": [ - "GOTTA BRING IN THE CROPS 'FORE THE JUNE BUGS GET..." + "HEM DE PORTAR ELS CULTIUS PER QUE ARRIBIN LES INSECTES DE JUNY..." ], "FAR-LO01": [ - "(SNORES)" + "(RONC)" ], "FAR-LO1A": [ - "(SNORES)" + "(RONC)" ], "FIS-AM01": [ - "GRR, THESE DARN FISH...", - "I NEVER CATCH ME A SINGLE ONE." + "GRR, AQUESTS DARN PEIXOS...", + "MAI M'ENGAMPO UNA SOLA." ], "FIS-AM02": [ - "THEM MONSTERS THAT DONE BIT ME SHIP", - "WILL DRIVE ME BROKE." + "ELS MONSTERS QUE EM VAN MOSTRAR EL NAU", + "EM HA RALLAT." ], "FIS-AM03": [ - "DRAT, THESE BLIGHTERS!", - "IN ME BASKET, DARN FISHIES, COME ON YEAH...", - "HEH HE HE HE HE..." + "DRAT, AQUESTS BLIGTERS!", + "A MI CISTELLA, MORTS PEIXOS, VINGA, SÍ...", + "HE HE HE HE HE HE..." ], "FIS-AM04": [ - "OH I LOVE THE SMELL OF FISH IN THE MORNIN'." + "OH, M'ENCANTA L'OLOR DEL PEIX AL MATÍ." ], "FIS-AM05": [ - "OOH I COULD USE ME A SALTED FISH LIPS ON RYE." + "OOH, PODRIA UTILITZAR-ME UNS LLAVIS DE PEIX SALAT SOBRE SEGOL." ], "FIS-AM06": [ - "I 'MEMBER THE BIG ONE THAT GOT AWAY..." + "SÓC LA GRAN QUE SE'N VA FUTAR..." ], "FIS-LO01": [ "GRR!" @@ -1362,163 +1362,163 @@ "HA HA HA HA HA HAH!" ], "FIS-LO04": [ - "DARN FISH... THEY NEVER GET IN ME NET!" + "DARN PEIXOS... MAI M'ENTREN A LA XARXA!" ], "FIS-LO05": [ - "HA HA HA AH HA HA HA HAH!" + "HA HA HA HA HA HA HAH!" ], "FIS-TA01": [ - "TO THE LEFT!" + "A L'ESQUERRA!" ], "FIS-TA02": [ - "RIGHT WITH YA!" + "DRET AMB TU!" ], "FIS-TA03": [ - "HERE COMES A BIG ONE!" + "AQUÍ VEN UN GRAN!" ], "FIS-TA04": [ - "YE MISSED A JUMBO, LADDIE!" + "T'HAS PERDUT UN JUMBO, LADDIE!" ], "FIS-TA05": [ - "DON'T MISS ONE LIKE THAT AGAIN!" + "NO ET PERDIS UN COM AQUEST DE NOSA!" ], "FIS-TA06": [ - "STEADY BOY." + "NEN CONSTANT." ], "FIS-TA07": [ - "YOUR SAILS ARE SAGGING IN THE WIND, BOY." + "LES TEVES VELES S'ENFONSEN AL VENT, NOI." ], "FIS-TA08": [ - "MISSED." + "PERDUDA." ], "FIS-TA09": [ - "LOOKS LIKE YOU COULD USE A BIGGER NET..." + "SEMBLA QUE PODRÍEU FER SERVIR UNA XARXA MÉS GRAN..." ], "FIS-TA10": [ - "MISSED AGAIN!" + "TROBADA A PERDRE!" ], "FIS-TA11": [ - "HOLD STEADY! YOU'RE ALMOST THERE..." + "MANTENIU FER! QUAI ESTEU ALLÀ..." ], "FIS-TA1A": [ - "LEFT!" + "ESQUERRA!" ], "FIS-TA2A": [ - "RIGHT!" + "DRET!" ], "GAM-AM01": [ - "HEY, TWENTY-TO-ONE ODDS AIN'T SO BAD!" + "ELI, LES PROBABILITATS DE VINTI A UNA NO ESTÀ TAN DOBLE!" ], "GAM-AM02": [ - "NO, IT WAS A SURE THING!" + "NO, ERA UNA COSA SEGURT!" ], "GAM-AM03": [ - "HEH HEH HEH... I'M GONNA HIT THE JACKPOT NEXT TIME!" + "HEH HEH HEH... LA PRÒXIMA VEGADA VA A FER AL JACKPOT!" ], "GAM-AM04": [ - "HEH! IF I HAD AN ORB FOR EVERY MISSED OPPORTUNITY...!" + "HEH! SI TINGUÉS UN ORBE PER CADA OPORTUNITAT PERDIDA...!" ], "GAM-AM05": [ - "HEY! BARRELS COULD COME BACK IN STYLE!" + "HEI! ELS BARRILS PODEN TORNAR A L'ESTIL!" ], "GAM-AM06": [ - "OH... I NEED A LUCKY BREAK." + "OH... NECESSITO UNA DESCANSA DE SORT." ], "GAM-AM07": [ - "AW, WHAT ARE THE ODDS OF MOVIN' TO A TOWN UNDER ATTACK?" + "AW, QUINES PROBABILITATS HI HA DE MUDAR-SE A UNA CIUTAT ATACADA?" ], "GAM-AM08": [ - "I THOUGHT I HAD A GOOD TIP!" + "PENSAVA QUE TENIA UN BON CONSELL!" ], "GAM-AM09": [ - "ANOTHER DAY, ANOTHER WAGER." + "UN ALTRE DIA, UNA ALTRA APOSTA." ], "GAM-AM10": [ - "I BET NO ONE CAN TAKE ON THAT MONSTER." + "APOSTO QUE NINGÚ POT FER AQUEST MONSTER." ], "GAM-AM11": [ - "HUH-HUH... I SHOULD CASH OUT AND MOVE ON." + "HUH-HUH... HAURÍ DE ENTRAR I SEGUIR." ], "GAM-AM12": [ - "EH, SOMETIMES YOU JUST CAN'T WIN." + "EH, DE VEGADES NO ES POT GUANYAR." ], "GAM-AM13": [ - "HEY, WHAT ARE YOU LAUGHIN' AT? DO I AMUSE YOU?" + "ELI, DE QUÈ ET RIU? ET FEC GUST?" ], "GEO-AM01": [ - "MM, INTERESTING STRATA..." + "MM, ESTRATS INTERESSANTS..." ], "GEO-AM02": [ - "POOR LITTLE MOLES..." + "POBRETS MOLS..." ], "GEO-AM03": [ - "INTERESTING..." + "INTERESSANT..." ], "GEO-AM04": [ - "GOOD LUCK, BOYS!" + "MOLTA SORT, NOIS!" ], "GEO-AM05": [ - "NASTY LURKERS..." + "MASTS LURKERS..." ], "GEO-AM06": [ - "ROCKS HAVE FEELINGS, TOO..." + "LES ROQUES TAMBÉ TENEN SENTIMENTS..." ], "GEO-AM07": [ - "HANG IN THERE, LITTLE ONES..." + "AIXÍ, PEQUETS..." ], "GEO-AM08": [ - "NOW I CAN GET BACK TO MY RESEARCH!" + "ARA PUC TORNAR A LA MEVA RECERCA!" ], "GEO-LO01": [ - "I'VE GOT TO GET BACK TO MY RESEARCH." + "HE DE TORNAR A LA MEVA RECERCA." ], "GEO-LO02": [ - "HM, THIS STONE IS VERY OLD..." + "HM, AQUESTA PEDRA ÉS MOLT ANTIGA..." ], "GOL-AM01": [ - "YOU JUST WON'T GIVE UP, WILL YOU?" + "NO ET RENUNCIARÀS, OI?" ], "GOL-AM02": [ - "SOON, THE DARK ECO WILL BE OURS!" + "AVIAT, L'ECO FOSC SERÀ NOSTRE!" ], "GOL-AM03": [ - "FINISH THEM!" + "ACABA-LES!" ], "GOL-AM04": [ - "FIRE!" + "FOC!" ], "GOL-AM05": [ - "BLAST THEM!" + "FALLEU-LOS!" ], "GOL-AM06": [ - "WHAT? THEM AGAIN!" + "QUÈ? ELLS DE NOU!" ], "GOL-AM07": [ - "IT'S TOO LATE!" + "ÉS MASSA TARD!" ], "GOL-AM08": [ - "YOU ARE MINE!" + "ETS MEU!" ], "GOL-AM09": [ - "I HAVE YOU NOW!" + "JA ET TENC!" ], "GOL-AM10": [ - "AH HA HA HA HA!" + "HA HA HA HA HA!" ], "GOL-AM11": [ - "NO MERCY!" + "SENSE PIETAT!" ], "GOL-AM12": [ - "TAKE THAT!" + "AGAFA AIXÒ!" ], "GOL-AM13": [ - "NICE TRY!" + "BON INTENT!" ], "GOL-AM14": [ - "STAND STILL!" + "ESTAR QUIET!" ], "GOL-AM15": [ - "PATHETIC!" + "PATÈTIC!" ], "GOL-AM16": [ "NOOO!" @@ -1527,28 +1527,28 @@ "AHHH!" ], "GOL-AM18": [ - "WE'LL OPEN THE SILO ALL THE WAY AND DESTROY YOU TWO!" + "OBRIREM LA SITJA TOT EL CAMÍ I US DESTRUIREM A DOS!" ], "GOL-AM19": [ - "LIGHT ECO! IT DOES EXIST!" + "ECO LLUM! SÍ EXISTEIX!" ], "GOL-AM20": [ - "WE'RE NOT GONNA TAKE IT!" + "NO L'AGAFAREM!" ], "MAI-AM01": [ - "FINISH THEM BOTH OFF ONCE AND FOR ALL!" + "ACABAU-LES D'UNA VEGADA PER TOTES!" ], "MAI-AM02": [ - "TAKE THEM OUT!" + "TREU-LES!" ], "MAI-AM03": [ "HA HA HA!" ], "MAI-AM04": [ - "ECO WON'T PROTECT YOU NOW!" + "ECO NO ET PROTEGEIX ARA!" ], "MAI-AM05": [ - "DO SOMETHING!" + "FER QUELCOM!" ], "MAI-AM06": [ "AGH!" @@ -1557,1312 +1557,1312 @@ "NOOOOO!" ], "MAI-AM08": [ - "WE'LL OPEN THE SILO ALL THE WAY AND DESTROY YOU TWO!" + "OBRIREM LA SITJA TOT EL CAMÍ I US DESTRUIREM A DOS!" ], "MAI-AM09": [ - "THEY MUST NOT BE ALLOWED TO GET IT!" + "NO S'HA DE PERMITIR ACONSEGUIR-HO!" ], "MIN-LO01": [ - "ONE OF THESE DAYS I'LL BE RICH...", - "YOU MEAN WE'LL BE RICH!", - "YEAH. WHATEVER." + "UN D'AQUESTS DIES SERÉ RIC...", + "VOLS VOLEU DIR QUE SEREM RICS!", + "SÍ. EL QUE SIGUI." ], "MIN-LO03": [ - "DIG, WILLARD! DIG!", - "YEAH, BUT YOU'RE NOT DIGGING!", - "THAT'S 'CAUSE I'M DOIN' THE THINKIN'!" + "CEVA, WILLARD! EXCAVAR!", + "SÍ, PERÒ NO ESTÀS EXCAVANT!", + "AIXÒ ÉS PERQUÈ ESTIC FENT EL PENSAMENT!" ], "MIN-LO04": [ - "DUH, GORDY? CAN I TAKE A BREAK?", - "OH, I'LL BREAK SOMETHIN' ALRIGHT. NOW DIG!" + "DUH, GORDY? PUC FER UN DESCANS?", + "OH, TRANQUERÉ ALGUNA COSA BÉ. ARA EXCAVEU!" ], "MIN-LO05": [ - "I'M STARVING, GORDY!", - "EAT YOUR BIRD!" + "ESTIC MORANT DE FA, GORDY!", + "MENJA EL TEU OCELL!" ], "MIN-LO06": [ - "DUH, GORDY? I NEED A SHARPER PICK.", - "WHAT YOU NEED IS A SHARPER WIT!" + "DUH, GORDY? NECESSITO UNA ESCOLLA MÉS AGUDA.", + "EL QUE NECESSITEU ÉS UN ENGINYS MÉS AGUTIS!" ], "MSH-AM01": [ - "WAH-HA-HA-HA-HA! I'M GONNA BE RICH!" + "WAH-HA-HA-HA-HA! SERÉ RIC!" ], "MSH-AM02": [ - "DIG, DIG, DIG!" + "TU, TU, TU!" ], "MSH-AM03": [ - "WILLARD! WORK HARDER, NOT SMARTER!" + "WILLARD! TREBALLA MÉS, NO MÉS INTEL-LIGENT!" ], "MSH-AM04": [ - "AH-HAH, I'LL BE THE RICHEST MAN IN THE WORLD! AH HA HA..." + "AH-HAH, SERÉ L'HOME MÉS RIC DEL MÓN! AH HA HA..." ], "MSH-AM05": [ - "OH HO HO! NOBODY'S EVEN SEEN A GEM THIS SIZE! AH HA HA!" + "OH HO HO! NINGÚ HA VIST UNA JOIA D'AQUESTA MIDA! AH HA HA!" ], "MSH-AM06": [ - "EASY STREET, HERE I COME!" + "CARRER FÀCIL, AQUÍ VENGO!" ], "MSH-AM07": [ - "MY GEMS! ALL MY GEMS!" + "LES MEVES GEMIES! TOTES LES MEVES JOIES!" ], "MSH-AM08": [], "MSH-AM09": [ - "(CHUCKLING) I CAN'T WAIT TO CASH THIS BABY IN!" + "(RIURE) NO PUC ESPERAR PER ENTRAR AQUEST NEB!" ], "MSH-AM10": [ - "THIS LOOKS LIKE A RARE CRYSTITE ZLARCONIA! OH-HO-HO!" + "AIXÒ SEMBLA UNA ZLARCONIA DE CRISTITA RAR! OH-HO-HO!" ], "MSH-AM11": [ - "NOW WAIT A MINUTE! THEY'RE ALL MINE! MINE, I TELL YA!" + "ARA ESPEREU UN MIUT! TOTS SÓN MEUS! EL MEU, T'HO DIC!" ], "MSH-AM12": [ - "SO, WILLARD. WHAT ARE YOU GONNA DO WITH", - "YOUR QUARTER, OF YOUR HALF?" + "AIXÍ, WILLARD. AMB QUÈ FARÀS", + "EL TEU TRIMESTRE, DE LA TEVA MITJÀ?" ], "MSH-AM1A": [ - "I'M GONNA BE RICH!" + "SERÉ RIC!" ], "MSH-AM2A": [ - "DIG, DIG, DIG!" + "TU, TU, TU!" ], "MSH-AM3A": [ - "WORK HARDER, NOT SMARTER!" + "TREBALLA MÉS, NO MÉS INTEL-LIGENT!" ], "MTA-AM01": [ - "DUH, ARE WE ALMOST DONE?" + "DUH, GAUREIX QUE HEM FET?" ], "MTA-AM02": [ - "GEE, CAN WE TAKE A BREAK?" + "GEE, PODEM FER UN DESCANS?" ], "MTA-AM03": [ - "AWW, I'M HUNGRY..." + "AWW, TINC GANA..." ], "MTA-AM04": [ - "DUH... I THINK BIRDIE'S CAGE NEEDS CLEANING..." + "DUH... CREO QUE LA GÀBIA DE BIRDIE NECESITA NETEJA..." ], "MTA-AM05": [ - "GEE, THAT'S AN AWFULLY BIG GEM!" + "GEE, ÉS UNA JOIA FOMENTALMENT GRAN!" ], "MTA-AM06": [ - "DUH... I ALWAYS WANTED TO BE A LUMBERJACK..." + "DUH... SEMPRE VAIG SER LLEÑADOR..." ], "MTA-AM07": [ - "DUH, GORDY PROMISED TO GIVE ME HALF OF WHATEVER I COULD CARRY!" + "DUH, GORDY EM PROMETÀ DONAR-ME LA METITAT DEL QUÈ PODRIA PORTAR!" ], "MTA-AM08": [ - "EH HEH... BIRDIE IS MY BEST FRIEND..." + "EH HEH... BIRDIE ÉS EL MEU MILLOR AMIC..." ], "MTA-AM09": [ - "I LOVE MY LITTLE BIRDIE..." + "M'ENCANTA EL MEU OCELET..." ], "RED-AM01": [ - "IS ANYBODY THERE?" + "HI HA ALGÚ?" ], "RED-AM02": [ - "WELL..." + "BÉ..." ], "RED-AM03": [ - "WHAT KEPT YOU?" + "QUÈ ET TENIA?" ], "SAGELP03": [ - "THESE TWO COULDN'T UNBLOCK THEIR EARS..." + "AQUESTS DOS NO POGUEN DESBLOQUEAR-SE LES ORELLES..." ], "SAGELP04": [ - "HE'LL JUST NEVER BE LIKE HIS UNCLE...", - "I DON'T CARE WHAT THE OTHERS SAY." + "NO SERÀ MAI COM EL SEU ONCL...", + "NO M'IMPORTA EL QUE DIGUIN ELS ALTRES." ], "SAGELP05": [ - "HELLO, BLUE SAGE? HELLO?", - "WHERE IN THE BLUE BLAZES COULD HE BE..." + "HOLA, BLUE SAGE? HOLA?", + "ON PODRÀ SER EL BLAU BLAZES..." ], "SAGELP06": [ - "MY, MY, MY..." + "MEU, MEU, MEU..." ], "SAGELP11": [ - "ANYONE? ANYONE AT ALL? COME IN?" + "NINGÚ? ALGÚ? ENDAVANT?" ], "SAGELP20": [ "HMM..." ], "SAGELP21": [ - "THE LURKERS MUST BE STOPPED." + "ELS LURKERS S'HAN DE PARAR." ], "SAGELP22": [ - "I SEE..." + "VEIG..." ], "SAGELP23": [ "NO..." ], "SAGELP24": [ - "WHAT COULD HAVE HAPPENED TO THEM?" + "QUÈ LES PODIA PASSAR?" ], "SAGELP31": [ - "THIS ISN'T GOOD." + "AIXÒ NO ÉS BÉ." ], "SAGELP32": [ - "DARK ECO CRYSTALS?" + "CRISTALLS ECO FOSC?" ], "SAGELP33": [ - "MAIA AND GOL HAVE GOTTEN IN OVER THEIR HEADS!" + "LA MAIA I EL GOL S'HAN PASSAT PER ELS CAPS!" ], "SAGELP34": [ - "HNG, DARK ECO'S POWERS CANNOT BE CONTROLLED!" + "HNG, ELS PODERS DE DARK ECO NO ES PODEN CONTROLAR!" ], "SAGELP35": [ - "DARK ECO IN THE GLACIERS?" + "ECO FOSC A LES GLACIARS?" ], "SAGELP36": [ - "AH! THERE'S LURKER TROOPS IN THE MOUNTAINS!" + "AH! HI HA TROPES LURKER A LA MUNTANYA!" ], "SAGELP37": [ - "WHAT IS GOL PLANNING..." + "QUÈ ÉS LA PLANIFICACIÓ DEL GOL..." ], "SAGELP38": [ - "COULD HE ACTUALLY HAVE...?" + "VERITAT PODIA TENIR...?" ], "SCU-AM01": [ - "AW... I JUST CAN'T DO IT ANYMORE." + "AW... JA NO PUC FER-HO." ], "SCU-AM02": [ - "AW, I WISH I HAD SOME INSPIRATION." + "AW, M'AGRADARIA TENIR UNA MICA D'INSPIRACIÓ." ], "SCU-AM03": [ - "I'M AS INSPIRED AS... THIS ROCK." + "ESTIC TAN INSPIRAT COM... AQUESTA ROCA." ], "SCU-AM04": [ - "AW... WHERE IS MY MUSE?" + "AW... ON ÉS LA MEVA MUSA?" ], "SCU-AM05": [ - "I CAN'T WORK LIKE THIS!" + "NO PUC TREBALLAR AIXÍ!" ], "SCU-AM06": [ - "AW MAN... WILL SHE EVER COME BACK TO ME?" + "AW HOME... TORNARÀ MAI ELLA?" ], "SCU-LO01": [ - "AW MAN..." + "AW HOME..." ], "SKSP009F": [ - "GET SOME! GET SOME! HA HA HA!" + "ACONSEGUIR UNA MICA! ACONSEGUIR UNA MICA! HA HA HA!" ], "WAR-LO1A": [ - "(SOBBING)" + "(PLOTANT)" ], "WAR-LO1B": [ "(SOBS)" ], "WAR-LO1C": [ - "(BLOWS NOSE AND SPUTTERS)", - "(CONTINUES SOBBING)" + "(BUFA EL NAS I BUFA)", + "(CONTINUA PANTALLANT)" ], "YEL-AM01": [ - "TIME IS RUNNIN' OUT!" + "EL TEMPS JA S'ESCABA!" ], "YEL-AM02": [ - "HEY! GET ME OUTTA HERE!" + "HEI! EXTREU-ME D'AQUÍ!" ], "YEL-AM03": [ - "WHEN I GET OUTTA HERE, SOME SHOOTIN'S GONNA START!" + "QUAN SITI D'AQUÍ, COMENÇARÀ ALGUN SHOOTIN!" ], "asstv100": [ - "OKAY, YOU HAVE ENOUGH CELLS TO INCREASE THE POWER ON THE HEAT SHIELD.", - "RIDE THE WOODEN MINECART DOWN THE SHAFT BY THE LAVA GEYSER.", - "I'LL MEET YOU BY THE ENTRANCE TO THE LAVA TUBE,", - "SO I CAN MODIFY THE ZOOMER. HURRY!" + "D'ACORD, TENS PROU CÈL-LULES PER AUGMENTAR LA POTÈNCIA DE L'ESCUT TÈRMIC.", + "PASSEU EL MINECART DE FUSTA PER L'EIX PEL GUÈISER DE LAVA.", + "ET VÉ A L'ENTRADA DEL TUBO DE LAVA,", + "PERQUÈ PUC MODIFICAR EL ZOOM. APURA!" ], "asstv101": [ - "HAHA, OKAY! YOU HAVE ENOUGH CELLS TO INCREASE", - "THE POWER ON THE HEAT SHIELD.", - "MEET ME BACK IN THE VOLCANIC CRATER.", - "I'LL BE WAITING BY THE LAVA TUBE DOWN THE SHAFT BY THE LAVA GEYSER.", - "BRING ME THE POWER CELLS!" + "HAHA, D'ACORD! TENIU PROU CÈL-LULES PER AUMENTAR", + "L'ALIMENTACIÓ DE L'ESCUT TÈRMIC.", + "TROBEM AL CRÀTER VOLCÀNIC.", + "ESTARÉ ESPERANT AL TUBO DE LAVA QUE BAIXA L'AIX DEL GUÈSER DE LAVA.", + "PORTEU-ME LES CÈL-LULES DE POTÈNCIA!" ], "asstv102": [ - "HURRY UP WITH THOSE POWER CELLS!", - "I'M WAITING BY THE WOODEN MINECART SHAFT NEAR THE LAVA GEYSER." + "APURA AMB AQUESTES CÈL-LULES DE POTÈNCIA!", + "ESTIC ESPERANT AL PUNT DE L'AIX DEL MINECART DE FUSTA A PROP DEL GUÈSER DE LAVA." ], "asstv103": [ - "DON'T FORGET TO TURN ON THE TELEPORT GATE TO LET US THROUGH.", - "YOU'VE GOT TO GO INTO THE RED SAGE'S LAB", - "IN THE CENTER OF THE VOLCANIC CRATER TO TURN IT ON.", - "WE CAN'T COME THROUGH UNTIL IT'S BACK ONLINE." + "NO OBLIDIS ENCENDER LA PORTA DEL TELEPORT PER DEIXAR-NOS PASSAR.", + "HAS D'ENTRAR AL LABORATORI DEL SAVIER VERMELL", + "AL CENTRE DEL CRÀTER VOLCÀNIC PER ENCENDER-LO.", + "NO PODEM ENTRAR FINS QUE TORNAR A EN LÍNEA." ], "asstv104": [ - "HEY, WE'RE STILL BACK IN ROCK VILLAGE!", - "TURN ON THE TELEPORT GATE!" + "ELI, ENCARA TORNEM AL ROCK VILLAGE!", + "ACTIVA LA PORTA DEL TELEPORT!" ], "asstv105": [ - "WE WANNA JOIN YOU IN THE VOLCANIC CRATER!", - "GO INTO THE RED SAGE'S LAB AND TURN ON THE GATE." + "VOLEM UNIR-TE AL CRÀTER VOLCÀNIC!", + "ENTREU AL LABORATORI DEL SAVIE VERMELL I ENCEN LA PORTAL." ], "asstva73": [ - "HEY GUYS! BY MY CALCULATIONS, IT'S GOING TO TAKE", - "72 POWER CELLS TO FUEL THE HEAT SHIELD", - "AGAINST THE LAVA ON THE WAY TO GOL AND MAIA'S CITADEL." + "HOLA NOIS! AMB ELS MEUS CÀLCULS, VA A PRESENTAR", + "72 CÈLLES DE POTÈNCIA PER ALIMENTAR L'ESCUT TÈRMIC", + "CONTRA LA LAVA EN EL CAMI DEL GOL I LA CIUTADELLA DE MAIA." ], "asstva74": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO GET THROUGH THIS LAVA!", - "YOU CAN'T GET THROUGH TO GOL AND MAIA'S CITADEL", - "UNTIL YOU'VE COLLECTED 72 POWER CELLS!" + "NO TENIU PROU CÈL-LULES DE POTÈNCIA PER A TRAVÉS D'AQUESTA LAVA!", + "NO PODEU PASSAR A GOL I A LA CIUTADELLA DE LA MAIA", + "FINS QUE HEU RECOLLIT 72 CÈL-LULES D'ENERGIA!" ], "asstvb02": [ - "WOW, DID YOU SEE THAT?", - "BLUE ECO VENTS HAVE BEEN ACTIVATED ALL OVER THE WORLD!", - "I KNEW THERE WAS A WAY TO TURN THEM ON.", - "THERE MUST BE PLACES TO TURN ON THE OTHER ECO VENTS AS WELL." + "WOW, HEU VEURE AIXÒ?", + "LES VENTS ECO BLAU S'HAN ACTIVAT A TOT EL MÓN!", + "SABIA QUE HAVIA UNA MANERA D'ACTIVAR-LES.", + "HI HA D'HAVER LLOCS PER ENCENDER ELS ALTRES VENTILLES ECO TAMBÉ." ], "asstvb03": [ - "GOOD! YOU STOPPED ALL THE MINE-DROPPING LURKERS!", - "THEY'VE BEEN THREATENING THE WATERS AROUND OUR VILLAGE FOR WEEKS.", - "BRING YOUR ZOOMER BACK TO THE TRANS-PAD AND I'LL TELEPORT IT BACK!" + "BÉ! HAS ATURAT A TOTS ELS LURKERS QUE CAIXEN MINES!", + "PORTEN SETMANES AMENAÇANT LES AIGÜES DEL NOSTRE POBLE.", + "PORTA EL TEU ZOOMER AL TRANS-PAD I EL TELEPORTARÉ!" ], "asstvb04": [ - "GOOD, YOU'VE COLLECTED ENOUGH POWER CELLS TO FUEL MY HEAT SHIELD!", - "MEET ME BY THE ENTRANCE TO THE FIRE CANYON", - "BY CLIMBING THE CLIFF BEHIND THE FARMER'S HOUSE.", - "BRING THE POWER CELLS, AND HURRY!", - "MY FATHER SAYS HE'S SEEN MORE LURKERS AROUND!" + "BÉ, HEU RECOLLIT PROU CÈL-LULES DE POTÈNCIA PER ALIMENTAR EL MEU ESCUT DE CALOR!", + "TROBEM A L'ENTRADA DEL CANÓ DEL FOC", + "PUJANT AL CINGALL DARRERE LA CASA DEL GRANGER.", + "PORTA LES CÈL-LULES DE POTÈNCIA, I APURA'S!", + "EL MEU PARE DIU QUE HA VIST MÉS AGUIDERS AL VOLTANT!" ], "asstvb08": [ - "HURRY UP WITH THOSE POWER CELLS.", - "I'M WAITING AT THE HEAD OF FIRE CANYON", - "AT THE TOP OF THE CLIFF BEHIND THE FARMER'S HOUSE!" + "APURA AMB AQUESTES CÈL-LULES DE POTÈNCIA.", + "ESTIC ESPERANT AL CAP DEL CANÓ DE FOC", + "AL CIM DEL CINGALL DARRERE LA CASA DEL PAGERO!" ], "asstvb09": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO FUEL MY HEAT SHIELD.", - "YOU CAN'T CROSS FIRE CANYON UNTIL YOU COLLECT ENOUGH POWER CELLS." + "NO TENIU PROU CÈLLES DE POTÈNCIA PER ALIMENTAR EL MEU ESCUT DE CALOR.", + "NO PODEU CREUAR EL CANÓ DE FOC FINS QUE RECOLLEU PROU CÈL-LULES D'ENERGIA." ], "asstvb20": [ - "GOOD FLYING! THOSE LURKERS WERE NO MATCH FOR YOUR ZOOMER!", - "THAT'S ONE MORE POWER CELL!" + "BON VOL! AQUESTS LURKERS NO EREN PARTICIPAMENT PER AL VOSTRE ZOOMER!", + "ÉS UNA CÈL-LA DE POTÈNCIA MÉS!" ], "asstvb21": [ - "GOOD WORK! AREN'T YOU GUYS HAPPY", - "YOU SAVED OUR LITTLE FLUT-FLUT FRIEND?", - "SHE MAY COME IN HANDY AGAIN SOMETIME.", - "NOW, GO BACK TO THE TRANS-PAD, AND I'LL BRING HER HOME." + "BON TREBALL! NO SOU FELIÇOS", + "HAS SALVAT LA NOSTRA PETITA AMIGA FLUT-FLUT?", + "ELLA POT SER ÚNICA ALGUNA VEGADA.", + "ARA, TORNA AL TRANS-PAD, I LA PORTARÉ A CASA." ], "asstvb22": [ - "WOW! YOU RAISED A PIECE OF THE UNDERWATER RUINS TO THE SURFACE!", - "IT SEEMS YOU CAN USE ECO IN WAYS WE'VE NEVER SEEN BEFORE!", - "A POWER CELL SURFACED WITH THE ROOM. CLIMB UP THERE AND GET IT." + "UAU! HAS AIXAT UN TROÇ DE LES RUÍNES SUBMARINAS A LA SUPERFÍCIE!", + "SEMBLA QUE POTS FER SERVIR L'ECO D'UNA MANERA QUE MAI NO HEM VIST!", + "UNA CÈL-LULA DE POTÈNCIA AMB LA SUPERFICIE DE L'HABITACIÓ. PUJA-HI I ACONSEGUEIX-HO." ], "asstvb23": [ - "GREAT WORK! THE PEOPLE OF ROCK VILLAGE ARE BREATHING", - "A COLLECTIVE SIGH OF RELIEF!", - "BUT THERE'S NO TIME TO CELEBRATE! USE YOUR ZOOMER", - "TO NAVIGATE THE MOUNTAIN PASS UP AHEAD.", - "BE CAREFUL, IT LOOKS LIKE THE LURKERS HAVE RIGGED", - "THE WHOLE PASS WITH EXPLOSIVES!", - "WHEN YOU REACH THE VOLCANIC CRATER,", - "BE SURE TO VISIT THE RED SAGE'S LAB", - "AND ACTIVATE THE TELEPORT GATE SO THAT FATHER AND I CAN JOIN YOU." + "GRAN OBRA! LA GENT DE ROCK VILLAGE RESPIRA", + "UN SOSPIR COL-LECTIU D'ALLEU!", + "PERÒ NO HI HA TEMPS PER CELEBRAR! UTILITZA EL TEU ZOOMER", + "PER A NAVEGAR PER LA MUNTANYA PASSA AMUNT.", + "ATENCIÓ, SEMBLA QUE ELS LURKERS HAN AMPARAT", + "TOT EL PAS AMB EXPLOSIUS!", + "QUAN ARRIBEU AL CRÀTER VOLCÀNIC,", + "VISITA EL LABORATORI DEL SALVI VERMELL", + "I ACTIVA LA PORTA DEL TELEPORT PERQUÈ EL PARE I JO ENS POGUEM UNIR." ], "asstvb24": [ - "OH MY! THOSE LURKERS MUST BE HEADED", - "FOR A DETONATOR AT THE END OF THE CANYON!", - "IF THEY REACH IT BEFORE YOU DO,", - "THEY'LL BLOW UP THE ENTIRE PASS!", - "YOU'VE GOTTA BEAT THEM THERE AND DESTROY THE DETONATOR,", - "OR IT'S ALL OVER!" + "OH EL MEU! AQUESTS LURKERS HAN DE SER ENCABATS", + "PER UN DETONADOR AL FINAL DEL CANÓ!", + "SI HI ARRIBEN ABANS DE FER TU,", + "EXPLOTARAN TOT EL PASSAT!", + "ALLÀ HAS DE VENCER-LOS I DESTRUIR EL DETONADOR,", + "O S'HA ACABAT TOT!" ], "asstvb25": [ - "GOOD WORK! YOU BEAT THEM TO THE DETONATOR!", - "THE RED SAGE'S LAB IS JUST AHEAD.", - "GO TURN ON THE TELEPORT GATE SO WE CAN JOIN YOU." + "BON TREBALL! ELS VA GANÇAR AL DETONADOR!", + "EL LABORATORI DEL SÀVII VERMELL JA VA AL DANT.", + "ANEU A ENCENDER LA PORTA DEL TELEPORT PER QUE POGUEM UNIR-VOS." ], "asstvb28": [ - "HEY! DON'T FORGET ABOUT THE SAGE AND ME!", - "YOU HAVE TO TURN ON THE TELEPORT GATE TO LET US THROUGH!", - "IT'S IN THE BLUE SAGE'S LAB, BY THE END OF FIRE CANYON.", - "IF YOU DON'T LET US THROUGH, THEN WE CAN'T HELP YOU!" + "HEI! NO OBLIDIS EL SAVI I JO!", + "HEU DE ENCENDER LA PORTA DEL TELEPORT PER DEIXAR-NOS PASSAR!", + "ÉS AL LABORATORI DEL SALVI BLAU, AL FINAL DEL CANÓ DE FOC.", + "SI NO ENS DEIXEU PASSAR, NO ET PODEM AJUDAR!" ], "asstvb29": [ - "HEY! WE'RE STILL WAITING!", - "TURN ON THE TELEPORT GATE!" + "HEI! ENCARA ESTEM ESPERANT!", + "ACTIVA LA PORTA DEL TELEPORT!" ], "asstvb30": [ - "HEY! WE CAN'T COME THROUGH UNTIL THE TELEPORT GATE'S ON!" + "HEI! NO PODEM ENTRAR FINS QUE ENS ACTIVA LA PORTA DEL TELEPORT!" ], "asstvb40": [ - "THIS DEVICE IS A COMMUNICATOR. WITH IT, MY FATHER AND I", - "CAN GIVE YOU ADVICE AT ANY TIME DURING YOUR QUEST." + "AQUEST DISPOSITIU ÉS UN COMUNICADOR. AMB EL MEU PARE I JO", + "POT DONAR-TE CONSELLS EN QUALSEVOL MOMENT DURANT LA TEVA MISMA." ], "asstvb41": [ - "THESE FLOATING EGG-SHAPED THINGS ARE PRECURSOR ORBS.", - "COLLECT ENOUGH OF THEM, AND SOME OF THE VILLAGERS WILL GIVE YOU", - "A POWER CELL IN EXCHANGE." + "AQUESTES COSES FLOTANTS EN FORMA D'OU SÓN ORBS PRECURSORS.", + "RECOLLEU PROU D'ELLS, I ALGUNS DELS PUBLANTS ET DONARÀ", + "UNA CÈL-LA DE POTÈNCIA A CANVI." ], "asstvb42": [ - "THIS IS A POWER CELL, THE MOST IMPORTANT PRECURSOR ARTIFACT YOU CAN FIND!", - "YOU NEED TO COLLECT 20 OF THESE SO I CAN POWER THE HEAT SHIELD", - "FOR YOUR A-GRAV ZOOMER." + "AQUEST ÉS UNA CÈL-LA DE POTÈNCIA, L'ARTEFECTE PRECURSOR MÉS IMPORTANT QUE PODEU TROBAR!", + "NECESSITAR RECOLLIR 20 D'AQUESTS PER QUE PUGU ACTIVAR L'ESCUT TÈRMIC", + "PER A LA TEVA A-GRAV ZOOM." ], "asstvb44": [ - "HEY, YOU FOUND ONE OF MY SCOUT FLIES!", - "I SENT 7 OF THEM TO EACH AREA TO LOOK FOR POWER CELLS", - "BUT THE LURKERS MUST HAVE CAPTURED THEM ALL!" + "ELI, HAS TROBAT UNA DE LES MOVES MOSQUES SCOUT!", + "N'HE ENVIAT 7 A CADA ZONA PER BUSCAR CÈL-LULES D'ENERGIA", + "PERÒ ELS LURKERS DEU D'HAVER-LOS CAPTURAT A TOTS!" ], "asstvb45": [ - "WOW! THAT LAST SCOUT FLY HAD A POWER CELL!", - "I'LL BET IF YOU COLLECT ALL 7 IN EACH AREA", - "YOU CAN FIND EVEN MORE POWER CELLS." + "UAU! AQUESTA ÚLTIMA MOSCA SCOUT TENIA UNA CÈL-LA DE POTÈNCIA!", + "APOTARÉ SI RECOLLEU TOTS 7 A CADA ZONA", + "PODEU TROBAR ENCANT MÉS CÈL-LULES DE POTÈNCIA." ], "asstvb46": [ - "BE CAREFUL IN THE OCEAN, THE WATERS ARE CHOCK-FULL OF", - "LURKER SHARKS AND I'VE NEVER SEEN ANYONE DEFEAT ONE.", - "STAY CLEAR OF THEM IF YOU KNOW WHAT'S GOOD FOR YOU!" + "ATENCIÓ A L'OCEÀ, LES AIGÜES ESTAN PLINES", + "LURKER SHARKS I MAI HEM VIST A NINGÚ DERROTAR-NE UN.", + "ESTIGUEU-NE'LS SI SABES QUÈ ÉS BÉ PER A TU!" ], "asstvb47": [ - "REMEMBER, THAT'S A POWER CELL.", - "YOU NEED TO COLLECT AS MANY OF THOSE AS YOU CAN." + "RECORDA, ÉS UNA CÈL-LA DE POTÈNCIA.", + "HEU DE RECOLLIR TANTS COM POGUU." ], "asstvb48": [ - "THAT'S A BLUE ECO VENT! MORE CONCENTRATED THAN THE FLOATING CLUSTERS,", - "THIS VENT WILL GIVE YOU A FULL CHARGE OF BLUE ECO,", - "LETTING YOU USE IT FOR THE MAXIMUM TIME." + "AIXÒ ÉS UN ECO VENT BLAU! MÉS CONCENTRAT QUE ELS CLÚSTERS FLOTANTS,", + "AQUEST VENT ET DONARÀ UNA CÀRREGA COMPLETA DE BLUE ECO,", + "DEIXANT-LO UTILITZAR EL TEMPS MÀXIM." ], "asstvb71": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO POWER THE BLUE SAGE'S MACHINE.", - "WE CAN'T LIFT THAT BOULDER UNTIL YOU COLLECT 45 POWER CELLS." + "NO TENIU PROU CÈL-LULES DE POTÈNCIA PER ACTIVAR LA MÀQUINA DE LA SALVIA BLAU.", + "NO PODEM AIXAR AQUEST PEDRO FINS QUE RECOLLEU 45 CÈL-LULES D'ENERGIA." ], "asstvb72": [ - "UNTIL WE FIND OUT WHY THE BLUE SAGE DISAPPEARED,", - "YOU'RE GOING TO NEED TO COLLECT 45 POWER CELLS TO FUEL HIS MACHINE.", - "GO GET 'EM!" + "FINS QUE DESCOBRIM PER QUÈ VA DESAPAREÏR EL SALVI BLAU,", + "NECESSITARÀS RECOLLIR 45 CÈLLES DE POTÈNCIA PER ALIMENTAR LA SEVA MÀQUINA.", + "VES A PORTAR-LES!" ], "asstvb75": [ - "THIS GONDOLA SEEMS TO BE MALFUNCTIONING.", - "I'LL TRY TO WORK ON IT AND GET IT RUNNING AGAIN." + "AQUESTA GONDOLA SEMBLA QUE FUNCIONA MAL.", + "INTENTARÉ TREBALLAR-HI I PONER-HO EN FER." ], "asstvb76": [ - "I'VE REACTIVATED THE GONDOLA. IT CAN TAKE YOU TO SNOWY MOUNTAIN!", - "USE IT WHENEVER YOU WANT." + "HE REACTIVAT LA GONDOLA. ET POT PORTAR A LA MUNTANYA NEVADA!", + "UTILITZA-LO QUAN VOLGU." ], "sagevb01": [ - "WELL, I SEE THAT YOU TWO HAVE FINALLY", - "DECIDED TO UNBLOCK MY COLLECTORS.", - "I WOULD OFFER MY CONGRATULATIONS", - "BUT YOU HAVE SO MUCH TO DO I WON'T WASTE YOUR TIME.", - "BY THE WAY, IF THINGS DON'T WORK OUT,", - "DAXTER COULD ALWAYS GET A JOB CONTROLLING THE VILLAGE RAT PROBLEM.", - "NYEH HA HA HA HA HA." + "BÉ, VEGEU QUE PER FIN HO TENIU", + "VA DECIDIR DESBLOQUEAR ELS MEUS COL-LECCIONISTAS.", + "OFERIARIA LA MEVA FELICITAT", + "PERÒ TENIU MOLT A FER QUE NO PERDÉ EL TEMPS.", + "PER CERT, SI LES COSES NO FUNCIONEN,", + "DAXTER SEMPRE PODRIA OBTENIR UNA FEINA CONTROLANT EL PROBLEMA DE LES RATES DEL POBLE.", + "JA HA HA HA HA HA." ], "sagevb02": [ - "I HAVE TO ADMIT, I'M IMPRESSED. YOU TWO DIDN'T SCREW UP!", - "NOW THAT THE LURKERS CAN'T OPEN THAT SILO", - "THEY CAN'T FLOOD THE WORLD WITH DARK ECO", - "AND CAUSE UNTOLD DESTRUCTION.", - "WIPE THAT RIDICULOUS GRIN OFF YOUR FACE, DAXTER!", - "THE TWO OF YOU HAVE PLENTY TO DO.", - "GET ON WITH IT!" + "HE DE RECONÈIXER, ESTIC IMPRESSIONAT. VOUS DOS NO HEU ENFALLAT!", + "ARA QUE ELS LURKERS NO PODEN OBRIR AQUESTA SITJA", + "NO PODEN INUNDAR EL MÓN AMB ECO FOSC", + "I CAUSAR DESTRUCCIÓ INDUSTRIA.", + "ESBORRA AQUESTA RIDICULA RIDICULA DE LA TEVA CARA, DAXTER!", + "ELS DOS TENIU MOLT PER FER.", + "AVANÇA-HI!" ], "sagevb03": [ - "YOU KEEP ON IMPRESSING ME. BUT THEN MAYBE IT'S JUST BECAUSE", - "I'VE GOT LOW EXPECTATIONS.", - "OKAY, YOUR MOMENT OF GLOATING IS OVER.", - "GET ON WITH IT!" + "SEGUES IMPRESIONANT-ME. PERÒ POTSER ÉS PERQUÈ", + "TINC BAIXES EXPECTATIVAS.", + "D'ACORD, HA ACABAT EL TEU MOMENT DE GLOTACIÓ.", + "AVANÇA-HI!" ], "sagevb04": [ - "GOOD WORK, JAK! YOUR UNCLE WOULD BE PROUD.", - "THAT WAS A GIANT ARM FROM A PRECURSOR ROBOT.", - "I'VE NEVER SEEN ONE IN SUCH GOOD CONDITION!", - "I CAN'T IMAGINE WHAT THE LURKERS WANTED WITH IT,", - "BUT WE SURE DIDN'T WANT THEM TO GET IT.", - "IF YOU KEEP THIS SUCCESS UP...", - "NAH, YOU'LL STILL FALL SHORT OF HERO.", - "BUT KEEP TRYING. IT'S ENDEARING." + "BONA FEINA, JAK! EL TEU TIÓ ESTÀ ORGULLOSA.", + "AIXÒ ERA UN BRACÇ GEGANT D'UN ROBOT PRECURSOR.", + "NO N'HE VIST MAI UNA EN TAN BON ESTAT!", + "NO EM PUC IMAGINAR AMB EL QUE VOLIEN ELS LURKERS,", + "PERÒ SEGUR QUE NO VOLEM QUE HO ACONSEGUENS.", + "SI CONTINUEU AQUEST ÈXIT...", + "NAH, ENCARA ET QUEDARÀS A L'HEROI.", + "PERÒ SEGUIA INTENANT. ÉS AGRADABLE." ], "sagevb21": [ - "THOSE LITTLE GREEN BALLS OF ENERGY ON THE GROUND ARE A TYPE OF ECO.", - "PICK UP 50 SMALL GREEN ECOES, OR ONE BIG GREEN ONE TO INCREASE YOUR HEALTH." + "AQUESTES BOLETTES VERDES D'ENERGIA A TERRA SÓN UN TIPUS D'ECO.", + "RECOLLEU 50 PETITS ECOES VERDS, O UNA GRAN VERDA PER AUMENTAR LA SEVA SALUT." ], "sagevb22": [ - "THAT'S BLUE ECO, WHICH CONTAINS THE ENERGY OF MOTION.", - "BLUE ECO ALLOWS YOU TO RUN FAST, BREAK BOXES, AND EVEN ACTIVATE SOME PRECURSOR", - "ARTIFACTS WHEN YOU GET NEAR THEM." + "AIXÒ ÉS BLAU ECO, QUE CONTÉ L'ENERGIA DEL MOVIMENT.", + "BLUE ECO ET PERMET CÓRRIR RÀPID, TRENCAR CAIXES I FINS I TOT ACTIVAR ALGUN PRECURSOR", + "ARTEFACTES QUAN T'APROXES." ], "sagevb23": [ - "NOTICE HOW EACH BLUE ECO CLUSTER YOU PICK UP", - "INCREASES THE TIME YOU CAN USE ITS POWER." + "AVIS DE QUÈ RECOLLEU CADA CLUSTER ECO BLAU", + "AUGMENTA EL TEMPS QUE POTS UTILITZAR EL SEU PODER." ], "sagevb24": [ - "THIS IS A PRECURSOR DOOR.", - "IT CAN ONLY BE OPENED BY APPROACHING THE DOOR", - "WHILE CHANNELLING BLUE ECO THROUGH YOUR BODY." + "ÉS UNA PORTA PRECURSOR.", + "NOMÉS ES POT OBRIR APROXANT-SE A LA PORTA", + "MENTRE CANALITZA EL BLUE ECO A TRAVÉS DEL TEU COS." ], "sagevb25": [ - "GOOD WORK, THE BLUE ECO CAUSED THE DOOR TO OPEN.", - "WITH BLUE ECO, YOU CAN BREATHE ENERGY INTO ALL KINDS", - "OF PRECURSOR ARTIFACTS THAT HAVE LAIN DORMANT FOR YEARS." + "BONA FEINA, L'ECO BLAU VA FACER OBRIR LA PORTA.", + "AMB BLUE ECO, POTS RESPIRAR ENERGIA EN TOT TIPUS", + "D'ARTEFACTES PRECURSORS QUE HAN LATIMENT DURANT ANYS." ], "sagevb26": [ - "USE YOUR GOGGLES TO VIEW YOUR PROGRESS DURING THE ADVENTURE." + "UTILITZA LES TEVES UGELLES PER VEURE EL TEU PROGRÉS DURANT L'AVENTURA." ], "sagevb27": [ - "YOU CAN JUMP ONCE, THEN JUMP AGAIN IN THE AIR TO REACH EVEN HIGHER LEDGES." + "PODEU SALTAR UNA VEGADA, I DESPRÉS TORNAR A SALTAR A L'AIRE PER ARRIBAR A LLES MÉS ALTES." ], "sagevb28": [ - "WHEN YOU'RE SURROUNDED BY ENEMIES, USE YOUR SPIN KICK." + "QUAN ESTEU ENVOLTAT D'ENEMICS, UTILITZA LA TEVA PATADA DE GIRO." ], "sagevb29": [ - "THAT'S NOT A SPIN KICK! TRY AGAIN." + "AIXÒ NO ÉS UNA PATADA DE GIRO! TORNA A INTENTAR." ], "sagevb30": [ - "COME ON, JAK! DO A SPIN KICK." + "VINGA, JAK! FER UNA PATADA DE GIRO." ], "sagevb31": [ - "GOOD WORK. USE THE SPIN KICK WHEN YOU WANT A GOOD ALL-ROUND ATTACK." + "BON TREBALL. UTILITZA LA PATADA DE GIRO QUAN VOLS UN BON ATAQUE TOTAL." ], "sagevb32": [ - "FOR A STRAIGHT LINE, MOVING ATTACK, USE YOUR FIST TO PUNCH." + "PER A UN ATAQUE EN LÍNIA RECTA, EN MOVIMENT, UTILITZA EL PUNY PER PUNTAR." ], "sagevb33": [ - "THAT'S NOT A PUNCH ATTACK! LET'S SEE YOU PUNCH ALREADY." + "AIXÒ NO ÉS UN ATAC DE PUNT! JA ENS VEUREM PUNT." ], "sagevb34": [ - "JAK! USE A PUNCH." + "COM! ÚS I PUNXÓ." ], "sagevb35": [ - "GREAT JOB. USE THE PUNCH TO CLOSE DISTANCE QUICKLY IN A TOUGH SPOT." + "BONA FEINA. UTILITZA EL PUNT PER TANCAR LA DISTANCIA RÀPIDAMENT EN UN LLOC DIFÍCIL." ], "sagevb36": [ - "SOMETIMES YOU'LL WANT TO HIT THINGS WITH A GREATER FORCE.", - "TO BREAK ONE OF THESE BOXES, YOU SHOULD JUMP IN THE AIR", - "AND THEN DIVE DOWN ONTO IT, HANDS FIRST." + "DE VEGADES VOLDREU FER LES COSES AMB MÉS FORÇA.", + "PER TRENCAR UNA D'AQUESTES CAIXES, HEU DE SALTAR A L'AIRE", + "I DESPRÉS BAIXEU-S'HI, LES MANS PRIMERA." ], "sagevb37": [ - "WHEN YOU GET SOME CONFIDENCE, TRY USING SOME OF YOUR MOVES IN COMBINATIONS." + "QUAN ACONSEGUIS ALGUNA CONFIANÇA, INTENTA UTILITZAR ALGUNS DELS TEUS MOVIMENTS EN COMBINACIONS." ], "sagevb38": [ - "YOU CAN'T COME BACK THROUGH THE WARP GATE", - "UNTIL YOU FIND ALL 4 POWER CELLS ON THIS ISLAND." + "NO PODEU TORNAR PER LA PORTA DE L'ORDRE", + "FINS QUE TROBES LES 4 CÈL-LULES D'ENERGIA D'AQUESTA ILLA." ], "sagevb39": [ - "GREAT! YOU FOUND ALL OF THE POWER CELLS ON THE ISLAND.", - "COME BACK TO THE WARP GATE SO I CAN BRING YOU BACK TO THE LAB. HURRY UP!" + "GRAN! HEU TROBAT TOTES LES CÈL-LULES D'ENERGIA A L'ILLA.", + "TORNA A LA PORTA DE L'ORDRE PER QUE ET POGU PORTAR AL LABORATORI. DONAT PRESSA!" ], "sksp0001": [ - "HEY! THAT SWEET-LOOKING BABE KEIRA WAS RIGHT! THERE ARE TRANS-PADS OUT HERE." + "HEI! AQUELLA NENA DOLÇA KIRA TENIA RAÇA! HI HA TRANS-PADS AQUÍ." ], "sksp0002": [ - "TRUST ME, THOSE DARK ECO BOXES ARE BAD NEWS!" + "CONFIEU EN MI, AQUESTES CAIXES ECO FOSCES SÓN MALES NOTÍCIES!" ], "sksp0003": [ - "I BET IF WE FOUND ALL OF THOSE SICKLY CUTE SCOUT FLIES ON EACH LEVEL", - "AT LEAST ONE WILL HAVE A POWER CELL!" + "APOSTO SI HEM TROBAT TOTES AQUESTES MOSQUES SCOUT BOLSOS A CADA NIVELL", + "COMMENÇAMENT UNA TINDRÀ UNA CÈL-LA DE POTÈNCIA!" ], "sksp0004": [ - "ALL RIGHT, TREASURE!" + "D'ACORD, TRESOR!" ], "sksp0005": [ - "THESE WOOD AND METAL BOXES DON'T LOOK THAT TOUGH!", - "I'LL BET THEY'LL BREAK IF YOU JUMP DIVE ONTO THEM." + "AQUESTES CAIXES DE FUSTA I METALL NO SEMBLAN TAN DURES!", + "APOSTARÀ QUE ES TRANDARÀ SI SALTES I SUBMERGEIX-HI." ], "sksp0006": [ - "THOSE ALL-METAL BOXES ARE THICKER THAN A YAKOW SKULL!", - "BUT THERE MUST BE SOMETHING THAT CAN BUST 'EM OPEN." + "AQUESTES CAIXES TOTES METÀLIQUES SÓN MÉS GROSSES QUE UN CRANI DE IAC!", + "PERÒ HA D'HAVER ALGUNA COSA QUE POT OBRIR-LOS." ], "sksp0007": [ - "TWO WORDS: POWER CELLS. WE NEED TO FIND 'EM AND WE AREN'T LOOKIN' SO GOOD RIGHT NOW." + "DUES PARAULES: CÈL-LULES DE POTÈNCIA. ENS NECESSITEM TROBAR-LOS I ARA ARA NO ENS VEM TAN BÉ." ], "sksp0008": [ - "WE NEED ORBS. ORBS, JAK! HOW ARE EVER GONNA BUY POWER CELLS IF WE DON'T COLLECT ORBS!" + "NECESSITEM ORBS. ORBS, JAK! COM COMPRAREM MAI CÈL-LULES DE POTÈNCIA SI NO RECOLLEM ORBS!" ], "sksp0009": [ - "WHAT A WEIRD-LOOKING THING! I'LL BET WE CAN GET THIS OPEN", - "IF YOU'RE POWERED UP WITH THAT ZAPPY BLUE ECO STUFF." + "QUINA COSA MÉS ESTRANYA! APOSTAREM QUE PODEM OBRIR AQUEST", + "SI TENIU ENERGIA AMB AQUESTE COSA ECO ZAPPY BLUE." ], "sksp0010": [ - "HEY! LET'S GO CHECK OUT OL' FISH BREATH'S SPEED-BOAT AT THE DOCK!" + "HEI! ANEM A CONSULTAR LA LLANXA RÀPIDA DE L'ALÈNCIA DE PEIXES AL MOLT!" ], "sksp0011": [ - "WE SHOULD ASK THE FISHERMAN DOWN BY THE JUNGLE RIVER", - "IF WE CAN BORROW HIS SPEEDBOAT TO ZOOM ON OVER TO MISTY ISLAND!" + "L'HEM DE PREGUNTAR AL PESCADOR QUE BAIXA EL RIU DE LA SELVA", + "SI PODEM PRELLEVAR LA SEVA LLANXA MOTOR PER AMPLIAR A MITY ISLAND!" ], "sksp0013": [ - "DID YOU SEE THE SIZE OF THE BITE", - "THAT LURKER SHARK TOOK OUT OF THE FISHERMAN'S BOAT?", - "WE BEST STAY WAY CLEAR OF THEM!", - "I DON'T THINK WE CAN TACKLE A CREATURE THAT DAG NASTY." + "HEU VEURE LA MIDA DE LA MOSQUETA", + "AQUEST TAURÓ AGUIDOR VA TREU DEL BARCA DEL PESCADOR?", + "MILLOR QUE ESTIGUEM MES LLUS D'ELLS!", + "NO CREO QUE POGUEM AFECTAR UNA CRIATURA QUE FAG MAL." ], "sksp0014": [ - "WE SCROUNGED ENOUGH ORBS TO TRADE FOR A POWER CELL.", - "LET'S GET BACK AND MAKE THE SWITCH ALREADY!" + "HEM RECOLLIT PROU ORBS PER COMERCIALITZAR PER UNA CÈL-LA DE POTÈNCIA.", + "TORNEM I FEM L'INTERRUPTOR JA!" ], "sksp0015": [ - "THIS MUST BE A PRECURSOR ORACLE LIKE THE SAGE ALWAYS GOES ON ABOUT.", - "I HOPE THEY WEREN'T AS UGLY IN PERSON!" + "AQUEST HA DE SER UN ORACLE PRECURSOR COM EL SAVI SEMPRE PASSA.", + "ESPERO QUE NO HAGUESSIN ESTAT TAN LLETYS EN PERSONA!" ], "sksp0017": [ - "WHOA! CHECK OUT THAT FUNKY SCULPTURE", - "SITTIN' ON THE ROCKS OVER THERE!" + "WHOA! CONSULTA AQUELLA ESCULTURA FUNKY", + "SEU A LES ROQUES D'ALLÀ!" ], "sksp0018": [ - "WE SHOULD GO TELL THAT WINDBAG OF A MAYOR THAT HE OWES US BIG TIME", - "FOR CONNECTING THE VILLAGE ENERGY BEAM!" + "HAURIEM D'ANAR A CONTAR A AQUELLA BOSSA DE VENT D'UN ALCALDE QUE ENS DEU MOLT TEMPS", + "PER CONNECTAR EL FIX D'ENERGIA DEL POBLE!" ], "sksp0019": [ - "HEY, SEAGULLS! LET'S BUZZ 'EM FOR KICKS." + "ELI, GAVITES! ANEM BUZZ 'EM PER PATADES." ], "sksp0020": [ - "YEAH HA HA! LET'S DO THAT AGAIN!" + "SÍ HA HA! TORNEM A FER-HO!" ], "sksp0021": [ - "THERE'RE THOSE SEAGULLS AGAIN. LET'S GET 'EM!!" + "AQUESTES GAVITES TORNA A SER. ANEM-LOS!!" ], "sksp0022": [ "YEAH HA HA HA HA HA!! WOO HO HO HO!" ], "sksp0023": [ - "WOOHOO!" + "GUAU!" ], "sksp0024": [ - "YEAH HA HA! YEAH!" + "SÍ HA HA! SÍ!" ], "sksp0025": [ - "WHOA! THEY CAUSED AN AVALANCHE! LET'S CHECK IT OUT." + "WHOA! HAN PROVOCAT UNA ALLUA! CONSULTEM-HO." ], "sksp0026": [ - "HEY! THAT PELICAN JUST SNAGGED A POWER CELL!", - "LET'S GO KICK SOME BIG BIRD BUTT!" + "HEI! AQUELL PELICÀ ACABA DE FER UNA CÈL-LA DE POTÈNCIA!", + "ANEM A PATAR UN CUL GRAN D'OCELL!" ], "sksp0027": [ - "QUICK! WE HAVE TO GET TO THE POWER CELL BEFORE THE PELICAN SCOOPS IT UP AGAIN." + "RÀPID! HEM D'ARRIBAR A LA CÈL-LULA D'ENERGIA ABANS QUE EL PELICÀ LA TORNI A PUNTAR." ], "sksp0028": [ - "KICK THE EGG! HEE-HEE! KICK IT! KICK IT!" + "PETA L'OU! HEE-HEE! DÓNA-LI UNA PUNTADA DE PEU! DÓNA-LI UNA PUNTADA DE PEU!" ], "sksp0029": [ - "EH, WE MIGHT WANNA TALK TO THE BIRDWATCHER", - "AND SEE IF WE SCRAMBLED THAT FLUT-FLUT EGG." + "EH, POTS VOLEM PARLAR AMB L'OBSERVADOR D'OCELLS", + "I A MIREU SI HEM REVOLUTAT AQUEST OU DE FLUT-FLUT." ], "sksp0030": [ - "HEY, TRY PUNCHING THE ROCKS TO GET 'EM OUT OF THE WAY!" + "ELI, INTENTA DE PANXAR LES ROQUES PER TREU-LES DEL CAMÍ!" ], "sksp0031": [ - "OOH! LET'S USE THE CANNON TO BLOW THINGS UP!" + "OH! UTILITZAM EL CANÓ PER EXPLOTAR COSES!" ], "sksp0034": [ - "AWOOGA! AWOOGA! DIVE FOR THOSE ORBS, JAK, DIVE!" + "AWOOGA! AWOOGA! BUSSEU PER AQUESTS ORBS, JAK, BUSSEU!" ], "sksp0035": [ - "YEAH, SO WE GOT A PRECURSOR LAUNCHER HERE", - "BUT YOU AREN'T POWERED UP WITH THE BLUE STUFF. SO IT AIN'T GONNA HELP US!" + "SÍ, TENIM AQUÍ UN LLANÇADOR DE PRECURSORS", + "PERÒ NO ESTÀS ACTIVAT AMB LES COSES BLAU. AIXÒ NO ENS AJUDARÀ!" ], "sksp0037": [ - "THOSE TOWER DOOHICKEYS SCATTERED ALL OVER THE JUNGLE MUST REDIRECT THE ECO BEAM.", - "LET'S GO FIDDLE WITH THEM!" + "AQUELS DOOHICKEYS DE LA TOR ESSENYS PER TOTA LA SELVA HAN DE REDIRECIR EL FIX ECO.", + "ANEM AMB ELLS!" ], "sksp0038": [ - "HMM, IF BLUE ECO CAN BUILD A BRIDGE, THEN I BET IT'LL OPEN A DOOR!", - "LET'S GO BACK AND GET YOU JUICED UP AGAIN." + "HMM, SI BLUE ECO POT CONSTRUIR UN PONT, APOSTO QUE OBRIRÀ UNA PORTA!", + "TORNEM I T'ENGRENEM DE NOU." ], "sksp0039": [ - "HEY, THERE'S LITTLE LIGHTNING MARKS ON THOSE POSTS", - "AND THERE'S LIGHTNING COMING OUT OF THAT VENT OVER THERE.", - "ARE YOU THINKING WHAT I'M THINKING?" + "ELI, HI HA POTES MARQUES DE LLAMPS EN AQUESTS POSTS", + "I D'AQUELLA VENTACIÓ D'ALLÀ SORTEN LLAMPS.", + "ESTÀS PENSANT EL QUE PENSO JO?" ], "sksp0040": [ - "LET'S GET UP ON THAT MACHINE AND BREAK THE MIRROR DIVERTING THE PRECURSOR BEAM!" + "PUJEM A AQUELLA MÀQUINA I TRANQUEM EL MIROL DESVIANT EL FIX PRECURSOR!" ], "sksp0041": [ - "WE NEED TO GET TO THE TOP OF THAT TOWER!" + "NECESSITEM ARRIBAR AL CIUM D'AQUESTA TORRE!" ], "sksp0043": [ - "MAYBE WE SHOULD GO ROOT OUT THE FISHERMAN.", - "I HEARD HE WAS IN THE JUNGLE FISHING BY THE LOWER RIVER!" + "POTSER HÀRIEM D'ARREL AL PESCADOR.", + "HE SENTIT QUE ESTAVA A LA SELVA PESQUANT AL RIU BAIX!" ], "sksp0049": [ - "LINE UP THE BEAM BY POINTING IT AT THE NEXT TOWER!" + "ALINEA LA FIXA ASENTANANT-LA A LA TORRE PROPERA!" ], "sksp0050": [ - "BREAK THE MIRROR, JAK!" + "TRENCA EL MIRALL, JAK!" ], "sksp0051": [ - "GET THE BUGS, JAK! GET THE BUGS!" + "OBTEN ELS ERRORS, JAK! OBTEN ELS ERRORS!" ], "sksp0052": [ - "LET'S GO TO THE NEXT TOWER AND RECONNECT THE BEAM THERE!" + "ANEM A LA SEGÜENT TORRE I RECONNECTEM EL FIX ALLÍ!" ], "sksp0053": [ - "HEY! WE CAN FOLLOW THE BEAM TO FIND THE NEXT TOWER." + "HEI! PODEM SEGUIR LA FIXA PER TROBAR LA PROPERA TORRE." ], "sksp0054": [ - "WE NEED TO CHARGE YOU UP WITH THAT BLUE STUFF TO GET THIS OPEN!" + "NECESSITEM CARREGAR-TE AMB AQUESTA COSA BLAU PER OBRIR AQUEST!" ], "sksp0056": [ - "HEY! I SEE THE SCULPTOR'S MUSE!" + "HEI! VEU LA MUSA DE L'ESCULTOR!" ], "sksp0059": [ - "THIS PLACE GIVES ME THE WILLIES!", - "LET'S KEEP YOU OUT OF THE OOZE, OKAY?" + "AQUEST LLOC EM DONA ELS WILLIES!", + "MANTENIM-TE DE L'OZE, D'ACORD?" ], "sksp0060": [ - "(WHIMPERS) THIS PLACE GIVES ME THE CREEPS!", - "AND TRUST ME, IT'S A WHOLE NEW EXPERIENCE", - "WHEN YOU'RE COVERED IN FUZZ!" + "(XIXEIXES) AQUEST LLOC EM DONA LES FANTALES!", + "I CONFIEU EN MI, ÉS UNA NOVA EXPERIÈNCIA", + "QUAN ESTEU COBERT DE FUZZ!" ], "sksp0062": [ - "LET'S PLOW INTO THOSE BALLOON LURKERS AND SHRED 'EM!" + "ANEM A LLAURAR A AQUESTS GLOBOS I ESTRIUEM-LOS!" ], "sksp0063": [ - "I SAID \"SHRED THE LURKERS,\" JAK. NOT THE MINES!", - "RULE NUMBER ONE: ALWAYS AVOID THE MINES!" + "VAIG DIR \"SHRED THE LURKERS\", JAK. NO LES MINES!", + "REGLA NÚMERO U: EVITAR SEMPRE LES MINES!" ], "sksp0064": [ - "WATCH YOUR BACK! YOU REMEMBER WHAT HAPPENED THE LAST TIME WE WERE HERE." + "CUIDAT L'ESQUENA! RECORDEU QUÈ VA PASSAR L'ÚLTIMA VEGADA QUE VA SER AQUÍ." ], "sksp0067": [ - "DON'T FALL INTO THE MIST BELOW US!", - "'CAUSE I DON'T THINK WE'LL MAKE IT BACK." + "NO CAIGUS A LA BOIRA QUE NOSALTRES!", + "PERQUÈ NO CREO QUE HO TORNAREM." ], "sksp0069": [ - "IT'S AN AMBUSH, JAK! IT'S AN AMBUSH!" + "ÉS UNA EMBOSCADA, JAK! ÉS UNA EMBOSCADA!" ], "sksp0070": [ - "JUMP, THEN DIVE ONTO THE TEETER-TOTTER." + "SALTA, DESPRÉS SUBMERGEIX-SE AL TEETER-TOTTER." ], "sksp0071": [ - "GET THE RED ECO!" + "ACONSEGUEIX EL VERMELL ECO!" ], "sksp0072": [ - "RED ECO MAKES YOUR ATTACKS STRONGER." + "RED ECO FA MÉS FORTS ELS TEUS ATACS." ], "sksp0073": [ - "WE NEED BLUE ECO TO CHARGE THIS PLATFORM UP!" + "NECESSITEM BLUE ECO PER CARREGAR AQUESTA PLATAFORMA!" ], "sksp0076": [ - "JAK! HIT SOME JUMPS TO KEEP US OFF THE HOT GROUND." + "JAK! FER ALGUNS SALTS PER MANTENIR-NOS ALLÀ DELS TERRES CALORS." ], "sksp0077": [ - "BALLOONS GOOD, BURNING HOT MAGMA BAD!" + "GLOBUS BON, MAGMA CALIENT CREMA MAL!" ], "sksp0078": [ - "RIDE ON THE RAISED PRECURSOR STUFF TO KEEP US COOL." + "PUNTEU AMB ELS PRECURSORS LEVATS PER MANTENIR-NOS FRESCOS." ], "sksp0079": [ - "AHH! I'M GONNA DIE! I'M A COMING, GRANDPAP!", - "YOU HAVE TO GET THIS THING TO THE OTHER SIDE BEFORE IT OVERHEATS!" + "AHH! MORIRÉ! JA VENGO, AVI!", + "HEU DE PORTAR AQUESTA COSA A L'ALTRE CANT ABANS QUE S'ESCALFIN!" ], "sksp0080": [ - "USE THE HOP-TURN TO STEER HARDER!" + "UTILITZA EL GIRO D'HOP PER DIRIGER MÉS DUR!" ], "sksp0081": [ - "AHH! MAYBE I SHOULD DRIVE!" + "AHH! POTSER HAURI DE CONDUIR!" ], "sksp0082": [ - "YOU ARE TRYING TO AVOID THOSE DARK ECO BOXES, RIGHT?" + "ESTÀS INTENANT EVITAR AQUESTES CAIXES ECO FOSQUES, OI?" ], "sksp0083": [ - "OOH! SEE IF WE CAN CATCH AIR OFF THOSE LURKERS!" + "OH! A MIREU SI PODEM AGRADAR AQUESTS AGUIDORS!" ], "sksp0084": [ - "TOO CLOSE, TOO CLOSE!" + "MOLT APROP, MOLT APROP!" ], "sksp0085": [ - "WHOA! THIS BABY'S GETTING WAY TOO HOT!" + "WHOA! AQUEST BEBÉ ESTÀ POSENT MASSA CALOR!" ], "sksp0086": [ - "A FEW MORE SECONDS AND WE'RE FRIED FLUT-FLUT!" + "UNS SECONDS MÉS I SOM FREGUT FLUT-FLUT!" ], "sksp0087": [ - "HIT THOSE BALLOONS TO COOL OFF!" + "PEGEU AQUESTS GLOBUS PER REFRESAR-SE!" ], "sksp0088": [ - "HERE COMES ANOTHER BALLOON!" + "AQUÍ ARRIBA UN ALTRE GLOBUS!" ], "sksp0089": [ - "I WISH I SLEPT IN THIS MORNING!" + "M'AGRADARIA HAVER DORMIT AQUEST MATÍ!" ], "sksp0090": [ - "YOU MISSED A BALLOON! WE NEED THOSE OR WE'RE COOKED!" + "T'HAS PERDUT UN GLOBUS! ENS NECESSITEM O ESTEM CUINATS!" ], "sksp0091": [ - "THIS PUPPY'S GETTING TOO HOT!" + "AQUEST GOSSELL ESTÀ CALENTANT!" ], "sksp0092": [ - "DO YOU SMELL SOMETHING BURNING?!" + "FENS OLOR QUE ES CREMA?!" ], "sksp0093": [ - "I THINK MY TAIL'S ON FIRE!" + "CREC QUE LA MEVA CUA S'ENCÉN!" ], "sksp0094": [ - "SHE'S GONNA BLOW!" + "VA A BUFLAR!" ], "sksp0095": [ - "WAHOO! WE MADE IT!" + "WAHO! HO HEM ACONSEGUIT!" ], "sksp0096": [ - "THERE'S SCOUT FLIES OUT HERE, TOO!" + "HI HA SCOUT VOLS PER AQUÍ, TAMBÉ!" ], "sksp009a": [ - "HA HA! WE SHOWED HIM A THING OR TWO." + "HA HA! LI HEM MOSTRAT UNA COSA O DOS." ], "sksp009b": [ - "ALL RIGHT, MORE ORBS!" + "D'ACORD, MÉS ORBS!" ], "sksp009c": [ - "DO ME A FAVOR AND KEEP AWAY FROM THOSE DARK ECO BOXES!" + "FES-ME UN FAVOR I ALLUNYA'T D'AQUESTES CAIXES ECO FOSCES!" ], "sksp009d": [ - "YEAH-HA-HA-HA!" + "SÍ-HA-HA-HA!" ], "sksp009e": [ "WA-HOO!" ], "sksp009f": [ - "GET SOME, GET SOME! HA HA HA!" + "ACONSEGUIR-NE, ACONSEGUEIX-SE! HA HA HA!" ], "sksp009g": [ - "RIGHT BEHIND YA, JAK!" + "DRERE TEU, JAK!" ], "sksp009i": [ - "DID WE FIND ALL THE SCOUT FLIES IN THIS AREA?" + "HEM TROBAT TOTES LES MOSQUES SCOUT EN AQUESTA ZONA?" ], "sksp009j": [ - "HEY! IT LOOKS LIKE SCOUT FLIES ARE ALWAYS IN RED BOXES." + "HEI! SEMBLA QUE LES MOSQUES SCOUT SEMPRE ESTAN A LES CAIXES VERMELLES." ], "sksp009k": [ - "ALRIGHT! YOU FOUND ALL THE SCOUT FLIES IN THIS AREA!" + "BÉ! HAS TROBAT TOTES LES MOSQUES SCOUT EN AQUESTA ZONA!" ], "sksp0109": [ - "WOO! WE BEAT THE RECORD TIME!" + "WOO! HEM BAT EL TEMPS RECORD!" ], "sksp0110": [ - "I'VE SAID IT BEFORE, I'LL SAY IT AGAIN...", - "AVOID THE DARK ECO BOXES!" + "HO HE DIT ABANS, HO TORNARÉ A DIR...", + "EVITAR LES CAIXES ECO FOQUES!" ], "sksp0111": [ - "LET'S CHASE THOSE MOLES BACK UNDERGROUND." + "PERSEGUEM AQUESTS MOLS DE TORNAR A LA SOCIETAT." ], "sksp0112": [ - "LET'S GO GET OUR POWER CELL FROM THE GEOLOGIST." + "ANEM A OBTENIR LA NOSTRA CÈL-LULA DE POTÈNCIA AL GEÒLOG." ], "sksp0113": [ - "THOSE MUST BE THE INFESTED PLANTS OL' LOG-NOGGIN WAS TALKIN' ABOUT." + "HAN DE SER LES PLANTES INFESTADES DE LES QUE ESTAVA PARLANT LOG-NOGGIN." ], "sksp0114": [ - "WE HAVE TO USE GREEN ECO TO CURE THOSE PLANTS." + "HEM D'UTILITZAR EL VERD ECO PER CURAR AQUESTES PLANTES." ], "sksp0115": [ - "JAK, DRIVE THROUGH THE GREEN ECO VENT." + "JAK, CONDUCE A TRAVÉS DEL VERD ECO VENT." ], "sksp0116": [ - "THAT'S ONE OF THOSE FLYING LURKERS!", - "HE MIGHT HAVE A POWER CELL!" + "AQUEST ÉS UN D'AQUELS LURKERS VOLANTS!", + "POTS TENIR UNA CÈL-LA DE POTÈNCIA!" ], "sksp0117": [ - "THERE'S THE MOLE HOLE!" + "HI HA EL FORAT DEL MOLE!" ], "sksp0118": [ - "NOW, LET'S FLY OVER THE INFECTED PLANTS!" + "ARA, VOLEM PER SOBRE LES PLANTES INFECTADES!" ], "sksp0119": [ - "ONE RING DOWN, A BUNCH TO GO!" + "UN ANELL ABAIX, UNA MASSA PER FER!" ], "sksp0120": [ - "HURRY! THERE'S THE NEXT RING!" + "APURA! HI HA EL PROPER ANEL!" ], "sksp0121": [ - "QUICK! YOU'VE GOTTA FLY THROUGH EACH RING BEFORE THEY TURN OFF!" + "RÀPID! HAS DE VOLAR PER CADA ANELL ABANS QUE S'APAGUIN!" ], "sksp0122": [ - "HEY! THAT GRASS SLOWS US DOWN..." + "HEI! AQUESTA HERBA ENS ALENTA..." ], "sksp0123": [ - "QUICK! FOLLOW THAT PIPE!" + "RÀPID! SEGUIU AQUELLA PIPA!" ], "sksp0124": [ - "I GOT A BAD FEELING ABOUT THIS." + "AIXÒ TENIU UNA MALA SENSACIÓ." ], "sksp0125": [ - "IT LOOKS LIKE THOSE THINGS NEED A BLUE ECO CHARGE." + "SEMBLA QUE AQUESTES COSES NECESSITEN UNA CÀRREGA ECO BLAU." ], "sksp0126": [ - "LET'S GET THE POWER CELL ON THE ROOF OF THIS THING!" + "POSEM LA CÈL-LULA D'ENERGIA AL TORE D'AQUESTA COSA!" ], "sksp0127": [ - "KICK THE LITTLE GUY ON THE TOP!" + "POTADA AL PETIT A LA CIUTAT!" ], "sksp0128": [ - "JAK! RUN! THE DARK ECO IS RISING!" + "JAK! CORRER! L'ECO FOSC S'AUGMENTA!" ], "sksp0129": [ - "AHH! THAT DARK ECO'S GETTING CLOSE" + "AHH! AQUELL ECO FOSC S'APROPA" ], "sksp0130": [ - "UH, I THINK WE HAVE TO SWITCH ON ALL THOSE PLATFORMS OR SOMETHIN'." + "UH, CREO QUE HEM D'ACTIVAR TOTES AQUESTES PLATAFORMES O ALGUNA COSA." ], "sksp0131": [ - "HEY! IT LOOKS LIKE YOU COULD JUMP-DIVE ONTO THOSE GUYS!" + "HEI! SEMBLA QUE PODRÍEU SALTAR I SUBMERGIR-VOS SOBRE AQUESTS NOIS!" ], "sksp0132": [ - "EE-EE! WHOA! WHO-AH! WHO-AHH!" + "EE-EE! WHOA! QUI-AH! QUI-AHH!" ], "sksp0133": [ - "I'LL BET WE CAN GET ALL OF THOSE THINGS CHARGED AT ONCE!" + "APOSTAREM QUE PODEM RECARGAR TOTES AQUESTES COSES A LA PARTIDA!" ], "sksp0134": [ - "HOW 'BOUT WE TAKE IT EASY ON THOSE HOT PIPES?!" + "QUÈ TENIM QUE HO PAREM FÀCIL EN AQUESTES TUBES CALENTS?!" ], "sksp0135": [ - "THAT WATER LOOKS DANGEROUS WHEN IT CHANGES COLOR!" + "AQUELLA AIGUA SEMBLA PERILLOSA QUAN CANVIA DE COLOR!" ], "sksp0136": [ - "YOU GOTTA GET OUT OF THE WATER BEFORE IT CHANGES COLOR!" + "HAS DE SORTIR DE L'AIGUA ABANS QUE CANVII DE COLOR!" ], "sksp0137": [ - "I BET WE COULD SHOOT THOSE BOULDERS IF WE'RE CHARGED UP WITH YELLOW ECO." + "APOSTO QUE PODRIEM DISPARAR AQUESTS BOULDERS SI ESTEM CARREGATS D'ECO GROC." ], "sksp0138": [ - "WE SHOULD SHOOT THOSE BIG BOULDERS HOLDING THE TETHER." + "HAURIEM DE DISPARAR AQUELS GRANS BULDERS QUE SOSTENEN LA LLIGACIÓ." ], "sksp0139": [ - "MAYBE WE SHOULD HELP THAT WEIRDO FIND HIS PET." + "POTSER HEM D'AJUDAR A AQUEST RACINO A TROBAR LA SEVA MASCOTA." ], "sksp0140": [ - "THE FLUT-FLUT CAN GLIDE FARTHER IF SHE JUMPS AGAIN IN THE AIR!" + "LA FLAUT-FLUT POT LLIMINAR MÉS ENLLUNY SI ELLA TORNA A SALTAR A L'ARE!" ], "sksp0141": [ - "DON'T TOUCH THAT BLACK HOT TAR, OR YOU'LL GET HURT!" + "NO TOQUES AQUEST QUITRAT CALENT NEGRE O T'ARÀS FER!" ], "sksp0142": [ - "THE WATER'S SAFE TO WAIT IN." + "L'AIGUA ÉS SEGURA PER ESPERAR." ], "sksp0143": [ - "WAAH! BREAK THE TONGUE'S GRIP!" + "WAAH! TRENCAR LA LLENGUA!" ], "sksp0144": [ - "SHOOT THOSE RAT NESTS TO STOP THE RATS FROM COMING OUT." + "DISPARA A AQUESTS NUS DE RATES PER A EVITAR LES RATES." ], "sksp0145": [ - "WOW! YOU CAN SHOOT FIREBALLS", - "WHEN YOU'RE POWERED UP WITH YELLOW ECO." + "UAU! POTS DISPARAR PILOTES DE FOC", + "QUAN TENIU ENERGIA AMB EL GROC ECO." ], "sksp0146": [ - "HEY! THAT'S YELLOW ECO!" + "HEI! AIXÒ ÉS GROC ECO!" ], "sksp0147": [ - "YOU CAN SWING ON THAT POLE OVER THERE!" + "POTS BANDAR-SE PER AQUELL PASTELL D'ALLÀ!" ], "sksp0148": [ - "WATCH OUT, THAT BRAMBLE IS PRICKLY!" + "VISUALITZACIÓ, AQUESTA BRAÇA ÉS ESPIGANT!" ], "sksp0149": [ - "HEY, THAT LOOKS LIKE A TETHER HOLDING THE DIRIGIBLE IN PLACE!" + "ELI, SEMBLA UNA LLIGADA QUE SOSTENGE EL DIRIGIBLE AL SLOC!" ], "sksp0150": [ - "WATCH OUT WHEN THAT FROG IS CHARGED UP!" + "ATENCIÓ QUAN AQUELLA GRANOTA ESTÀ CARREGADA!" ], "sksp0151": [ - "RUN AWAY, JAK!" + "FUGA, JAK!" ], "sksp0152": [ - "LOOK OUT, JAK! IT'S AN AMBUSH!" + "COMPTE, JAK! ÉS UNA EMBOSCADA!" ], "sksp0153": [ - "HEY, THAT MUST BE THE PRECURSOR ARTIFACT THE LURKERS ARE AFTER!", - "IT LOOKS LIKE A GIANT ROBOT ARM!" + "ELI, AQUEST HA DE SER L'ARTEFACTE PRECURSOR QUE PERTENEN ELS LURKERS!", + "SEMBLA UN BRAÇ DE ROBOT GEGANT!" ], "sksp0154": [ - "THAT BLACK TAR LOOKS HOT AND DANGEROUS!" + "AQUEST QUITRAT NEGRE SEMBLA CALOR I PERILLOSS!" ], "sksp0155": [ - "SHOOT THE BATS WITH THAT YELLOW ECO STUFF!" + "DISPARA ELS RATAPANS AMB AQUESTA COSA ECO GROC!" ], "sksp0156": [ - "MAYBE WE CAN DUCK THE BATS!" + "POTSER PODEM AGANEAR ELS RATATANS!" ], "sksp0157": [ - "DID YOU SEE THAT? ONLY THREE MORE TETHERS TO GO!" + "HAS VIST AIXÒ? NOMÉS TRES LLIGACIONS MÉS PER FER!" ], "sksp0158": [ - "WOW! ONLY TWO MORE TETHERS." + "UAU! NOMÉS DOS LLEGATS MÉS." ], "sksp0159": [ - "THAT DIRIGIBLE'S BARELY HANGIN' ON! LET'S FIND THE LAST TETHER!" + "AQUEST DIRIGIBLE PENSA PENSA! TROBEM L'ÚLTIMA LLIGACIÓ!" ], "sksp0160": [ - "HEY! THERE'S THE FLUT-FLUT!" + "HEI! HI HA EL FLUT-FLUT!" ], "sksp0161": [ - "I HATE RATS! AND I'M ALMOST ONE OF THEM." + "ODIO LES RATES! I GAI SÓC UN D'ELLS." ], "sksp018a": [ - "THAT LAZY FARMER OWES US A POWER CELL!", - "LET'S GO TALK TO HIM!" + "AQUEST GRANGERO MANDRA ENS DEU UNA CÈL-LULA DE POTÈNCIA!", + "ANEM A PARLAR AMB ELL!" ], "sksp0300": [ - "WE HAVE TO BEAT THOSE LURKERS TO THE END OF THE PASS!" + "HEM DE GUANTAR AQUESTS AGUIDATS FINS AL FINAL DEL PAS!" ], "sksp0301": [ - "DON'T HIT THOSE EXPLOSIVES!" + "NO COLGEU AQUESTS EXPLOSIUS!" ], "sksp0302": [ - "STAY AHEAD OF THEM AND WE GOT IT MADE!" + "AVANÇA-LOS I HO HEM FET!" ], "sksp0303": [ - "HIT THE BLUE ECO TO GET SPEED BOOSTS!" + "PEU EL BLUE ECO PER OBTENIR AUMENTS DE VELOCITAT!" ], "sksp0304": [ - "AVOID THE TREES, JAK! THEY SLOW US DOWN!" + "EVITAR ELS ARBRES, JAK! ENS ALLENTEN!" ], "sksp0305": [ - "THE MORE BLUE ECO WE HIT, THE FASTER WE GO!" + "COM MÉS ECO BLAU ENS PEGEM, MÉS RÀPID ANEM!" ], "sksp0306": [ - "WATCH OUT FOR THOSE EXPLOSIVES!" + "ATENCIÓ A AQUELS EXPLOSIUS!" ], "sksp0307": [ - "STAY CLEAR OF THE PITS!" + "ESTIGUEU LLIURE DE LES FORES!" ], "sksp0308": [ - "MAYBE I SHOULD DRIVE!" + "POTSER HAURI DE CONDUIR!" ], "sksp0309": [ - "THERE'S ONE OF THE LURKERS!" + "HI HA UN DELS LURKERS!" ], "sksp0310": [ - "CATCH 'EM, JAK!" + "ATRAPA'LS COM!" ], "sksp0311": [ - "WE PASSED ONE!" + "N'HEM PASSAT UNA!" ], "sksp0312": [ - "WAH, ONE OF THE LURKERS PASSED US!" + "WAH, ENS VA PASSAR UN DELS LURKERS!" ], "sksp0313": [ - "THEY'RE WAY AHEAD!" + "TENEN MOLT AVANT!" ], "sksp0314": [ - "YEAH, WE'RE IN THE LEAD!" + "SÍ, ESTEM AL PRIMER!" ], "sksp0315": [ - "FASTER, JAK, FASTER!" + "MÉS RÀPID, COM, MÉS RÀPID!" ], "sksp0316": [ - "BIG JUMP, BIG JUMP!" + "GRAN SALT, GRAN SALT!" ], "sksp0317": [ - "HANG ON!" + "ESPERA!" ], "sksp0318": [ - "YAAHH!" + "SÍ!" ], "sksp0319": [ - "IT'S GONNA BE CLOSE!" + "ESTÀ A PROP!" ], "sksp0320": [ - "THEY'RE GONNA BEAT US TO THE DETONATOR!" + "ENS VAN GANTAR AL DETONADOR!" ], "sksp0321": [ - "WE DID IT! WE STOPPED THEM FROM BLOWIN' UP THE PASS!" + "HO HEM FET! ELS HEM DETIRAT DE VOLAR EL PAS!" ], "sksp0327": [ - "I THINK THAT WAS THE LAST DARK ECO CRYSTAL!" + "CREC QUE VA SER L'ÚLTIM CRISTALL ECOLÒGIC FOSC!" ], "sksp0328": [ - "MAYBE YOU CAN SHOOT BETTER IF YOU AIM THROUGH YOUR GOGGLES." + "POTSER PODREU DISPARAR MILLOR SI APUNTEU A TRAVÉS DE LES ULLERES." ], "sksp0329": [ - "OH, NO! MORE DARK ECO!" + "OH, NO! MÉS ECO FOSC!" ], "sksp0330": [ - "I DON'T THINK WE GOT ALL OF THOSE DARK ECO CRYSTALS." + "NO CREO QUE TENIM TOTS AQUESTS CRISTALLS ECO FOSC." ], "sksp0331": [ - "SHOOT THE LURKERS EATING THE POLES!" + "DISPARA AL LURKERS MENJANT-SE ELS POLS!" ], "sksp0332": [ - "DON'T LET THE LIGHTS GO OUT!" + "NO DEIXIS QUE LES LLUMS S'APAGUIN!" ], "sksp0333": [ - "HIT A CRYSTAL TO GET SOME LIGHT." + "PEGEU UN CRISTAL PER OBTENIR UNA LLUM." ], "sksp0334": [ - "RUN AWAY! THAT CRYSTAL'S GONNA BLOW!" + "FUGA! AQUEST CRISTAL BUFARÀ!" ], "sksp0335": [ - "EWH, THEY FOUND A PRECURSOR ROBOT!" + "EWH, HAN TROBAT UN ROBOT PRECURSOR!" ], "sksp0336": [ - "POP THE EGGS, BEFORE THEY HATCH!" + "FALLEU ELS OUS, ABANS DE QUE NOUSI!" ], "sksp0337": [ - "IT'S SPOOKY IN HERE..." + "AQUÍ ÉS ESPERANT..." ], "sksp0338": [ - "LOOKS LIKE SPIDER WEBS BREAK AFTER TWO BOUNCES." + "SEMBLA QUE LES ARANYES ES TRENEN DESPRÉS DE DOS REBOTS." ], "sksp0339": [ - "I. HATE. SPIDERS..." + "I. ODI. ARANYES..." ], "sksp0340": [ - "BABY SPIDERS ARE COMING!" + "ARRIBEN LES BEBES ARANYES!" ], "sksp0341": [ - "I THINK WE'RE IN A SPIDER'S NEST HERE!" + "CREC QUE ESTEM EN UN NIU D'ARANYA!" ], "sksp0342": [ - "LOOK OUT, MORE SPIDERS!" + "ATENCIÓ, MÉS ARANYES!" ], "sksp0343": [ - "LET'S GET OUTTA HERE!" + "SORTEM D'AQUÍ!" ], "sksp0345": [ - "HOW DO WE GET INSIDE THIS FORT?" + "COM ENTREM A DINS D'AQUEST FORT?" ], "sksp0346": [ - "MAYBE RED ECO CAN DEFEAT THIS GUY!" + "POTSER VERMELL ECO POT VENCER A AQUEST NOI!" ], "sksp0347": [ - "WE NEED TO DO A ROLL JUMP!" + "HEM DE FER UN SALT DE ROLL!" ], "sksp0348": [ - "WE NEED TO FIND A WAY TO OPEN THIS VENT!" + "HEM DE TROBAR UNA MANERA D'OBRIR AQUEST VENT!" ], "sksp0349": [ - "THAT LOOKS LIKE AN ECO SWITCH DOWN THERE!" + "QUE SEMBLA UN INTERRUPTOR ECO AQUÍ BAIX!" ], "sksp0350": [ - "HIT HIM WHEN THE SPIKES ARE IN!" + "PEGEU-LO QUAN HI HAGA LES PUTES!" ], "sksp0351": [ - "PUSH THE BUTTON!" + "PREM EL BOTÓ!" ], "sksp0352": [ - "QUICK! BEFORE THEY DROP BACK DOWN!" + "RÀPID! ABANS DE TORNAR A BAIXAR!" ], "sksp0359": [ - "YOU GOTTA USE RED ECO!" + "HAS UTILITZAR VERMELL ECO!" ], "sksp0360": [ - "ALL RIGHT! WE TURNED ON THE CAPPED YELLOW ECO VENTS!" + "TOT BÉ! HEM ACTIVAT LES VENTILLES ECO GROGES TAPATADAS!" ], "sksp0362": [ - "LOOK! A FROZEN POWER CELL!" + "MIRA! UNA CÈL-LULA D'ENERGIA CONGELADA!" ], "sksp0363": [ - "ONLY A FLUT-FLUT CAN JUMP THAT FAR!" + "NOMÉS UN FLUT-FLUT POT SALTAR TAN LLUNY!" ], "sksp0364": [ - "WE GOTTA HURRY, OR WE'RE TOAST!" + "ENS TENIM APURA, O ESTEM TORRADES!" ], "sksp0365": [ - "PICK A PATH, ANY PATH!" + "TRIA UN CAMÍ, QUALSEVOL CAMÍ!" ], "sksp0366": [ - "AVOID, OR SHOOT THE MINES, JAK!" + "EVITAR, O DISPARAR LES MINES, JAK!" ], "sksp0367": [ - "FIND A WAY THROUGH THOSE DARK ECO BARRELS!" + "TROBA UN CAMÍ A TRAVÉS D'AQUELS BARRILS ECO FOSC!" ], "sksp0368": [ - "KEEP HITTING THOSE COOLING BALLOONS!" + "SEGUEU PEGANT AQUESTS GLOBUS REFREDANTS!" ], "sksp0369": [ - "WE'RE GETTING TOO HOT!" + "ENS ESTEM CALENTANT!" ], "sksp0370": [ - "SHE'S GONNA BLOW!" + "VA A BUFLAR!" ], "sksp0371": [ - "GO FOR THE BLUE ECO, JAK!" + "VÉS A L'ECO BLAU, JAK!" ], "sksp0372": [ - "SHOOT YOUR WAY THROUGH!" + "DISPARA EL TEU CAMÍ!" ], "sksp0373": [ - "WAHOO! WHAT A RIDE!" + "WAHO! QUIN PASSEIG!" ], "sksp0374": [ - "YES! TURN AND BURN, BABY!" + "SÍ! GIRA I CREMA, BEBÉ!" ], "sksp0375": [ - "SHOOT THE POWER SPHERES TO OPEN THE DOOR!" + "DISPARA A LES ESFERES DE PODER PER OBRIR LA PORTA!" ], "sksp0376": [ - "SHOOT THE POWER SPHERES BEFORE WE BURN UP!" + "DISPARA LES ESFERES DE POTÈNCIA ABANS QUE CREMEM!" ], "sksp0378": [ - "THE DOOR'S OPEN, LET'S GET GOING!" + "LA PORTA ÉS OBERTA, ANEM!" ], "sksp0379": [ - "ZOOMING!" + "ZOOM!" ], "sksp0380": [ - "WE MADE IT THROUGH!" + "HO HEM FET A TRAVÉS!" ], "sksp0381": [ - "BREAK THE GENERATOR TO FREE THE SAGE!" + "TRENCAR EL GENERADOR PER ALLIBERAR EL SAVI!" ], "sksp0382": [ - "JUST HANG ON TO THE EDGE!" + "NOMÉS PENSA A LA BORDA!" ], "sksp0383": [ - "WE GOT COMPANY, JAK. LOOOTS OF LURKERS!" + "TENIM EMPRESA, JAK. POTELLS DE LURKERS!" ], "sksp0384": [ - "DESTROY THOSE GENERATORS!" + "DESTRUIR AQUESTS GENERADORS!" ], "sksp0385": [ - "PUSH THE BUTTON!" + "PREM EL BOTÓ!" ], "sksp0386": [ - "THAT ROBOT DOESN'T SCARE ME!" + "AQUEST ROBOT NO M'ESPANTA!" ], "sksp0387": [ - "LET'S GO CLIMB UP THOSE PLATFORMS!" + "ANEM A PUJAR AQUESTES PLATAFORMES!" ], "sksp0388": [ - "DON'T MISS THE NEXT LAUNCHER!" + "NO ET PERDIS EL PROPER LLANÇADOR!" ], "sksp0389": [ - "WATCH IT!" + "MIRA-HO!" ], "sksp0390": [ - "WE HAVE TO RESCUE ALL THE SAGES!" + "HEM DE RESCATAR A TOTS ELS SABIS!" ], "sksp0391": [ - "DO YOU THINK GOL WILL STILL CHANGE ME BACK?" + "CREUS QUE EL GOL ENCARA EM CANVIARÀ?" ], "sksp0392": [ - "SO THIS IS GOL AND MAIA'S CITADEL. NICE AND COZY." + "AIXÒ ÉS LA CIUTADELLA DE GOL I MAIA. BONIC I ACOLLIDOR." ], "sksp0393": [ - "LAND ON THE NEXT LAUNCHER!" + "ATERRÀ AL PROPER LLANÇADOR!" ], "sksp0394": [ - "GRAB THE YELLOW ECO!" + "AGAFA EL GROC ECO!" ], "sksp0395": [ - "SHOOT THE ROBOT, JAK!" + "DISPARA AL ROBOT, JAK!" ], "sksp0396": [ - "SHOOT HIS ARM!" + "DISPARA EL BRAÇ!" ], "sksp0397": [ - "SHOOT HIS GUN!" + "DISPARA LA SEVA PISTOLA!" ], "sksp0398": [ - "SHOOT HIS HEAD!" + "DISPARA EL CAP!" ], "sksp0399": [ - "WATCH OUT FOR THE BLAST!" + "ATENCIÓ A L'EXPLOSA!" ], "sksp0400": [ - "HE'S CHARGING UP!" + "ESTÀ CARREGANT!" ], "sksp0401": [ - "GET THE BLUE ECO!" + "ACONSEGUEIX EL BLAU ECO!" ], "sksp0402": [ - "GET THE RED ECO!" + "ACONSEGUEIX EL VERMELL ECO!" ], "sksp0403": [ - "I HAVE A BAD FEELING ABOUT THIS!" + "TINC AIXÒ UNA MALA SENSACIÓ!" ], "sksp0404": [ - "USE THE LAUNCHER, QUICK!" + "UTILITZA EL LLANÇADOR, RÀPID!" ], "sksp0405": [ - "NOW YOU'VE MADE THE ANIMAL MAD!" + "ARA HAS FET EL ANIMAL BOGE!" ], "sksp0406": [ - "WE CAN'T TOUCH THESE GUYS!" + "NO PODEM TOQUER A AQUESTS NOIS!" ], "sksp0407": [ - "USE THE YELLOW ECO!" + "UTILITZA L'ECO GROC!" ], "sksp0408": [ - "SHOOT THOSE GUYS!" + "DISPARA A AQUESTS NOIS!" ], "sksp0409": [ - "GET THE LIGHT ECO, JAK!" + "OBTÉ LA LLUM ECO, JAK!" ], "sksp0410": [ - "HE LOOKS ANGRY!" + "SEMBLA ENFADAT!" ], "sksp0411": [ - "JUMP TO AVOID THE EXPLOSIONS!" + "SALTA PER EVITAR LES EXPLOSIONS!" ], "sksp0412": [ - "NOW WE TAKE CARE OF BUSINESS!" + "ARA ENS OCUPAM DEL NEGOCI!" ], "sksp0413": [ - "GOOD SHOOTING, PARTNER!" + "BON TIRO, SOCI!" ], "sksp0414": [ - "THAT HURT HIM!" + "AIXÒ EL FER!" ], "sksp0415": [ - "HERE HE COMES!" + "AQUÍ VEN!" ], "sksp0416": [ - "YEAH! YOU DID IT!" + "SÍ! HO VAS FER!" ], "sksp0417": [ - "SAY \"GOOD NIGHT,\" GOL AND MAIA!" + "DIU \"BONA NIT\", GOL I MAIA!" ], "sksp0435": [ - "KNOCK OVER THOSE BONES!" + "TAMBÉ AQUELS OSSOS!" ], "sksp0443": [ - "PUNCH THOSE POLES UP FROM BELOW!" + "PUNTEU AQUESTS POLS DES DE BAIX!" ], "sksp0444": [ - "WE'RE WAITING. HELLO?" + "ESTEM ESPERANT. HOLA?" ], "sksp0449": [ - "PRESS START TO PLAY." + "PREMEU INICI PER JUGAR." ], "sksp0450": [ - "YOU WANNA STOP PLAYING?" + "VOLS DEIXAR DE JUGAR?" ], "sksp0451": [ - "I DIDN'T THINK SO." + "NO HO PENSA." ], "sksp0452": [ - "OKAY, SEE YA LATER." + "D'ACORD, ENS VEIEM DESPRÉS." ], "sksp0455": [ - "MAN, WHO ARE ALL THESE PEOPLE?" + "HOME, QUI SÓN TOTA AQUESTA PERSONA?" ], "sksp0466": [ - "I WAS GOOD. WASN'T I, GIRLS?" + "JO ERA BÉ. NO JO, NOIES?" ], "sksp0b42": [ - "STOP MISSING THE YELLOW FISH, THEY WEIGH FIVE POUNDS EACH!", - "AND THAT'S A LOTTA FISH, JAK." + "DEIXA DE FALTAR ELS PEIXOS GROCS, PESEN CINQUE QUILS CADAUN!", + "I AIXÒ ÉS MOLT PEIX, JAK." ] }, "speakers": { "???": "???", "BILLY": "BILLY", - "BIRDWATCHER": "BIRDWATCHER", - "BLUE SAGE": "BLUE SAGE", + "BIRDWATCHER": "OBSERVADOR D'OCELLS", + "BLUE SAGE": "SALVIA BLAU", "DAXTER": "DAXTER", - "FARMER": "FARMER", - "FISHERMAN": "FISHERMAN", - "FLUT-FLUT": "FLUT-FLUT", - "GAMBLER": "GAMBLER", - "GEOLOGIST": "GEOLOGIST", + "FARMER": "GRANGER", + "FISHERMAN": "PESCADOR", + "FLUT-FLUT": "INUNDACIÓ-INUNDACIÓ", + "GAMBLER": "JUGADOR", + "GEOLOGIST": "GEÒLOGA", "GOL": "GOL", "GORDY": "GORDY", - "JAK": "JAK", - "JAK'S UNCLE": "JAK'S UNCLE", - "KEIRA": "KEIRA", + "JAK": "COM", + "JAK'S UNCLE": "L'ONLE DE JAK", + "KEIRA": "KIRA", "MAIA": "MAIA", - "MAYOR": "MAYOR", + "MAYOR": "ALCALDE", "MINER": "MINER", - "OLD MAN": "OLD MAN", + "OLD MAN": "VELL", "ORACLE": "ORACLE", - "RED SAGE": "RED SAGE", + "RED SAGE": "SALVIA VERMELLA", "SAMOS": "SAMOS", - "SCULPTOR": "SCULPTOR", - "WARRIOR": "WARRIOR", + "SCULPTOR": "ESCULTOR", + "WARRIOR": "GUERRER", "WILLARD": "WILLARD", - "WOMAN": "WOMAN", - "YELLOW SAGE": "YELLOW SAGE" + "WOMAN": "DONA", + "YELLOW SAGE": "SALVIA GROC" } } diff --git a/game/assets/jak1/subtitle/subtitle_lines_da-DK.json b/game/assets/jak1/subtitle/subtitle_lines_da-DK.json index a111cb8ed1..d31723e128 100644 --- a/game/assets/jak1/subtitle/subtitle_lines_da-DK.json +++ b/game/assets/jak1/subtitle/subtitle_lines_da-DK.json @@ -39,12 +39,12 @@ "assistant-lavatube-end-resolution": [ "HEY! HVOR ER DEN KORTE GAMLE GRØNNE OG RYNKEDE?", "DET ER FORFÆRDELIGT! FADER ER FORSVUNDET!", - "JEG TROR GOL OG MAIA NOK OGSÅ HAR KIDNAPPET HAM!", + "JEG TROR, GOL OG MAIA OGSÅ HAR KIDNAPPET HAM!", "ROLIG, ELSKEDE. JEG HAR ALT UNDER KONTROL.", "UNDER KONTROL?!", "LURER HÆRENE GROR TVÆRS OVER LANDET,", "VISMÆNDENE ER BLEVET BORTFØRT,", - "GOL OG MAIA HAR SAMLET NOK ECO", + "GOL OG MAIA HAR SAMLET NOK ØKO", "TIL AT FULDFØRE DERES FORFÆRDELIGE PLAN,", "OG FOR AT STOPPE DEM, VIL I VÆRE NØDT TIL AT", "KÆMPE JERES VEJ GENNEM DERES FÆSTNING!", @@ -52,10 +52,10 @@ "I ER NØDT TIL AT REDDE MIN FADER FØR DET ER FORSENT!", "OG JAK...", "VÆR FORSIGTIG.", - "JA. DET VIL VI!" + "JA. VI VIL DET!" ], "assistant-lavatube-start-resolution": [ - "HA HA! JAVEL JA!", + "HA HA! JA JA!", "MED DISSE YDERLIGERE KRAFTCELLER, BURDE JEG KUNNE FORSYNE VARMESKJOLDET", "MED NOK STYRKE TIL AT KUNNE HOLDE MOD DENNE LAVA.", "MEN SKJOLDET HAR STADIG EN BEGRÆNSNING", @@ -63,7 +63,7 @@ "SÅ HOLD ØJE MED JERES MÅLER.", "JEG VIL IKKE TÆNKE PÅ HVAD DE TEMPERATURER VILLE GØRE VED JERES ZOOMER", "HVIS SKJOLDET SVIGTER.", - "JA, VARMEN...", + "OG SELVFØLGELIG...", "HVAD? ZOOMEREN? HEY! HVAD MED OS?!", "TROR DU IKKE VI KUNNE LEDE EFTER EN MERE SIKKER RUTE TIL GOLS FÆSTNING?", "SE, JEG HAR UDSENDT FLERE KØLENDE BALLONER IND I RØRET.", @@ -84,9 +84,9 @@ "TAG NU TIL DEN DISEDE Ø OG JEG VIL SENDE ZOOMEREN OVER TIL JER." ], "assistant-village2-introduction": [ - "WOAH!", + "WOW!", "JEG TROR ALDRIG JEG VIL VENDE MIG TIL TELEPORTERENS KILDRENDE FORNÆMMELSE.", - "HEY!", + "HEJ!", "DET LIGNER AT DEN BLÅ VISMAND HOLDT EN FEST.", "ÅH DOG! KLIPPE BYEN STÅR I FLAMMER! ", "EN POKKERS FEST.", @@ -122,7 +122,7 @@ ], "assistant-village2-introduction-room": [ "ÅBENBART LEDER FORGÆNGERSTRUKTUREN UD FOR KYSTEN", - "TIL EN SUNKEN GLEMT BY.", + "TIL EN SUNKET GLEMT BY.", "DEN BLÅ VISMAND HAR PRØVET PÅ AT FINDE UD AF", "HVORDAN HAN KAN BRINGE EN AF KAMRENE TIL OVERFLADEN.", "MEN HAN HAVDE ALDRIG SUCCES.", @@ -154,7 +154,7 @@ "DE BURDE GIVE NOK KRAFT TIL AT LØFTE STENEN.", "SÅDAN SKAL DET TIL!", "VÆR NU FORSIGTIGE MED AT UDFORDRE MONSTERLUREREN VED TOPPEN.", - "VENT! UH...", + "AFTRÆK! ØH...", "JEG BLIVER HER OG BESKYTTER KEIRA!", "JAK, JEG TROR DU ER KLAR TIL AT HÅNDTERE MONSTERET UDEN MIG.", "OH, MEGET HEROISK AF DIG." @@ -176,19 +176,19 @@ "BADEKAR SANK I MUDDERET FOR LÆNGE SIDEN", "HVAD ER ET BADEKAR?", "NÅ MEN JEG HAR STØRRE PROBLEMER NU...", - "SEEMS SOME NASTY LURKER VARMINTS ARE GROUSIN' ABOUTS,", - "SNATCHIN' EVERYTHING THEY CAN GET THEIR GRUBBY LITTLE PAWS ON.", - "AND SCARIN' AWAY MY PET HIPHOG, FARTHY.", - "HE'S BEEN MISSIN' FOR NIGH ON TO A COON'S AGE.", - "I'VE BEEN PUTTIN' OUT HIS FAVORITE SNACK,", - "BUT THOSE ORNERY SWAMP RATS KEEP STEALIN' EM!", - "IF YOU COULD KEEP THOSE PESKY CRITTERS AWAY LONG ENOUGH,", - "I JUST KNOW FARTHY WOULD SMELL THEM VITTLES AND COME BACK!", + "SYNES AT NOGLE SMYKKE LURKER VARMINTER GIVER OM,", + "SNITTER ALT, DE KAN FÅ DERES GRUBBY SMÅ PATSER PÅ.", + "OG SKÆRER VÆK MIT KÆLEDYR HIPHOG, FARTHY.", + "HAN HAR BLEVET SAVNET I NÆSTEN TIL EN CON'S ALDER.", + "JEG HAR LÆGGET HANS FAVORIT SNACK UD,", + "MEN DISSE ORNERY MORSOTTER BLIV VED MED AT STJÆLE DEM!", + "HVIS DU KUNNE HOLDE DISSE PESKY CRITTERS VÆK LÆNGE NOG,", + "JEG VED BARE, FARTHY VILLE LUFTE DEM VITTLES OG KOMME TILBAGE!", "VIL I HJÆLPE MIG?" ], "billy-reject": [ "JAMEN, HVIS I FOR LYST IGEN, SÅ VED I HVOR JEG ER!", - "HE HE HE HE HEH..." + "HE HE HE HE HE..." ], "billy-reminder-1": [ "AHH, ER I TILBAGE FOR AT HJÆLPE MED AT STOPPE DE ROTTER?" @@ -202,7 +202,7 @@ "HER ER EN KRAFTCELLE FOR JERES MOD.", "MOR!", "MOR!", - "ÅH NEJ! NEJ, NEJ, NEJ, NEJ!", + "ÅH NEJ! NEJ NEJ NEJ NEJ!", "SE... ER DET IKKE NUTTET? DEN TROR I ER DENS MOR.", "EH? JEG ER IKKE DIN MOR! KAN DU SE NOGEN FJER HER?", "ÅH, KÆRLIGHED VED FØRSTE BLIK! AH... ", @@ -213,7 +213,7 @@ "ÅH DOG, SIKKEN GRUFULDT SYG LILLE FUGL.", "HUH! DU SER IKKE ALT FOR GODT UD SELV, DAME!", "ÅH, UNDSKYLD. JEG TROEDE DU VAR EN PLETTET", - "ORANGE-MAVET REGNFLOSS.", + "ORANGE-MAVET REGNFLOS.", "I VED, I GÅR SÅ JEG NOGLE", "FORFÆRDELIGT BIDSKE SKABNINGER FANGE", "EN FLUT-FLUT MOR NÆR STRANDEN.", @@ -271,7 +271,7 @@ ], "death-0193": [ "TRIN ET: FORBLIV I LIVE!", - "TRIN TO...", + "TRIN TIL...", "OVERVEJ IKKE AT GØRE SÅDAN NOGET IGEN!" ], "death-0195": [ @@ -325,7 +325,7 @@ "JEG SER I TO ER TILBAGE FOR AT LAVE HANDLEN. GODT, GODT, VÆLDIG GODT!", "EH, HAR DU ØH, DE FORGÆNGERGLOBER VI AFTALTE?", "JEG HÅBER DU GØR GOD BRUG AF DENNE KRAFTCELLE.", - "FARVELLER, TA TA, VI SES!" + "FARVEL, TA TA, SE DIG!" ], "farmer-introduction": [ "SKAL MALKE DE YAKOWER, SKAL MALKE DE YAKOWER...", @@ -348,7 +348,7 @@ "NU KAN JEG SOVE I FRED. TAG DEN HER KRAFTCELLE FOR JERES ARBEJDE." ], "finalbosscam-white-eco": [ - "LYS ECO! DET EKSISTERER!", + "LET ØKO! DET FINDER!", "DE MÅ IKKE FÅ LOV TIL AT FÅ DET!" ], "fisher-accept": [ @@ -406,7 +406,7 @@ "MOD MONSTERET DEROPPE.", "TRO MIG, DE SMARTE HAR DERES PENGE PÅ MONSTERET.", "DET VÆDDEMÅL HAR SÅMÆND TØMT MIG!", - "SÅ ALTSÅ, JEG HAR ET FORSLAG.", + "SÅ JEG HAR ET FORSLAG.", "BRING MIG 90 GLOBER SÅ JEG KAN KOMME PÅ BENENE IGEN OG UD AF DEN HER TØNDE,", "OG JEG VIL GIVE JER EN KRAFTCELLE TIL GENGÆLD.", "OG HVIS I ER PÅ, SÅ HAR JEG ENDNU ET VÆDDEMÅL I GANG.", @@ -426,7 +426,7 @@ "OG VI VIL BEGGE VÆRE VINDERE!" ], "gambler-resolution-money": [ - "HEH HEH HEH! OH, YEAH!", + "HEH HEH HEH! OH YEAH!", "DE HER GLOBER VIL HJÆLPE MIG VINDE MIN VEJ UD AF TØNDEN!", "HER ER DEN KRAFTCELLE JEG LOVEDE!" ], @@ -493,7 +493,7 @@ ], "green-sagecage-outro-beat-boss-a": [ "GØR NOGET!", - "NEEJJ!" + "INGEN!" ], "green-sagecage-outro-beat-boss-b": [ "NÅ, DET SER UD TIL AT JEG HAR VÆRET FOR HÅRD VED JER DRENGE!", @@ -531,7 +531,7 @@ "VED FORGÆNGERNE..." ], "green-sagecage-outro-preboss": [ - "DU ER FOR SENT PÅ DEN, SAMOS.", + "DET ER DU FOR SENT TIL, SAMOS.", "NÅR JEG BESIDDER UENDELIGT MØRK ECO", "VIL JEG HAVE NØGLEN TIL SELVE SKABELSEN!", "DET HER ER GALSKAB!", @@ -620,7 +620,7 @@ "VI HAR MÅSKE NOGLE KRAFTCELLER LIGGENDE OMKRING,", "OG VI VILLE MÅSKE VÆRE VILLIGE TIL AT GIVE DEM VÆK FOR...", "90 GLOBER HVER.", - "HVOR HAR JEG HØRT DEN FØR?", + "HVOR HAR JEG HØRT DET FØR?", "HEY, HVORDAN FORVENTER I TO GENIER AT FÅ DEN STORE ÆDELSTEN UD HERFRA, ALLIGEVEL?", "TJA, SMARTE, VI HAR TOLV ÅR MERE AT GRAVE TIL AT FINDE UD AF DET.", "ØHM... GORDY, VILLE DET IKKE TAGE KORTERE TID HVIS DU OGSÅ GRAVEDE?" @@ -652,7 +652,7 @@ ], "minershort-reminder-2-orbs": [ "ØHM, GORDY?", - "90 GLOBER PER KRAFCELLE, WILLARD! ARGH!" + "90 GLOBER PR. KRAFCELLE, WILLARD! ARGH!" ], "minershort-resolution-1-orbs": [ "ÅH, OKAY SÅ.", @@ -735,7 +735,7 @@ "KEIRA VIL TELEPORTERE JERES ANTI-TYNGDEKRAFT ZOOMER TIL DEN NÆRMESTE TRANSPLADE.", "STYR ZOOMEREN TIL EN GRØN ECO VENTIL,", "OG BÆR SÅ DEN GRØNNE ECO TIL DE FORDÆRVEDE PLANTER.", - "DET BURDE KURERE DEM.", + "DET SKAL KURE DEM.", "GLEM IKKE EN ENESTE PLANTE, ELLER DE INFICEREDE LANGSOMT VIL SMITTE DE RASKE IGEN.", "OG, DAXTER...", "BEGYND MED AT RYDDE OP HERINDE!", @@ -772,7 +772,7 @@ "HVAD VAR DERES FORMÅL? OG HVORFOR FORSVANDT DE?", "JEG HAR SPURGT PLANTERNE, MEN DE HUSKER DET IKKE.", "PLANTERNE HAR SPURGT STENENE, MEN STENENE ERINDRER DET IKKE.", - "SELV IKKE STENENE ERINDRER DET IKKE...", + "SELV STENEENE HUSKER DET...", "HVER KNOGLE I MIN KROP SIGER AT SVARENE HVILER", "PÅ SKULDRENE AF EN UNG DRENG", "UBEVIDST OM SIN SKÆBNE, UINTERESSERET I SØGEN EFTER SANDHED", @@ -787,7 +787,7 @@ ], "sage-intro-sequence-d1": [ "HVAD I DEN GRØNNE FORTABELSE VIL I TO?", - "VI- VI- VI- VAR- DE VAR- JEG'- JEG VAR-", + "VI- VI- VI- VAR- DE VAR- JEG- JEG VAR-", "FORTÆL MIG DET IKKE! I STEDET FOR AT LYTTE TIL MIN VISDOM", "TOG I TO UD FOR AT RODE RUNDT", "DET ENE STED JEG FORTALTE JER IKKE AT TAGE HEN: DEN DISEDE Ø!", @@ -866,7 +866,7 @@ "HVILKE \"MODIGE EVENTYRERE\" I TO ER.", "ALLEREDE TILBAGE OG UDEN AT HAVE RYDDET MINE BLOKEREDE ECOHØSTERE!", "DE ER I DEN ANDEN ENDE AF STRANDEN, DRENGE.", - "NU...", + "IKKE...", "KOM AFSTED!" ], "sage-reminder-1-generic": [ @@ -894,7 +894,7 @@ "BESTEMT IKKE. DEN RØDE VISMAND GAV OP MED SÅ LILLE ANSTRENGELSE.", "IKKE SJOVT OVERHOVEDET.", "GOL? ER DET DIG?", - "DU HAR ENDELIG MISTET FORSTANDEN, HVA?", + "DU HAR ENDELIG MISTET FORSIDEN, HAR DU?", "OG, MAIA! JEG FORTALTE DIG AT MØRK ECO VILLE PÅVIRKE JER BEGGE!", "ARG, INGEN LYTTER NOGENSINDE TIL GAMLE SAMOS...", "HVAD HAR I TO GJORT VED DEN BLÅ OG DEN RØDE VISMAND?", @@ -916,7 +916,7 @@ "VI HAR STORE PLANER FOR DIG.", "AH HA HA HA HA HA HA! AHH...", "VENT NU LIGE!", - "VAR DET GOL?", + "VAR DET GULT?", "DEN SAMME GOL SOM SKULLE FORVANDLE MIG TILBAGE?", "GOL ER FYREN SOM PRØVER AT DRÆBE OS?!", "JEG ER FORTABT.", @@ -927,24 +927,24 @@ "DEN HURTIGSTE VEJ DERHEN ER GENNEM LAVARØRET", "I BUNDEN AF DET HER KRATER.", "NOGLE FÅ KRAFTCELLER MERE, OG JERES ZOOMER'S VARMESKJOLD", - "SHOULD GET YOU ACROSS THE LAVA SAFELY.", - "ALL RIGHT, MY BOY. YOU KNOW WHAT TO DO.", + "BØR FÅ DIG OVER LAVAEN SIKKERT.", + "OK, MIN DRENGT. DU VED HVAD DU SKAL GØRE.", "TAG LUSEPOSEN OG FÅ SAMLET NOGLE FLERE KRAFTCELLER." ], "sage-village3-introduction-dark-eco": [ "DU STORE KUGLER AF ECO!", "DER SER UD TIL AT VÆRE EN STOR LURERTILSTÆDEVÆRELSE I EDERKOPPEHULERNE!", - "GREAT. SOUNDS LIKE A REAL CHEERY PLACE.", - "LET ME GUESS. THERE ARE SPIDERS IN THE SPIDER CAVES, RIGHT?", - "OF COURSE THERE ARE SPIDERS IN SPIDER CAVES!", - "BUT THAT'S THE LEAST OF YOUR PROBLEMS!", - "THE LURKERS ARE AFTER CRYSTALS OF CONCENTRATED DARK ECO.", - "YOU'VE GOT TO DESTROY THE CRYSTALS BEFORE THOSE MONSTERS", - "GET THEIR HANDS ON THEM!", + "STORE. LYDER SOM ET RIGTIG MUNT STED.", + "LAD MIG GÆTTE. DER ER EDDERDERKE I EDDERKOPPEHULERNE, IKKE?", + "SELVFØLGELIG ER DER EDDERKOPPER I EDDERKOPPEHULER!", + "MEN DET ER DET MINDSTE AF DINE PROBLEMER!", + "LURKERNE ER EFTER KRYSTALER AF KONCENTRERET MØRK ØKO.", + "DU MÅ ØDELEGGE KRYSTALERNE FØR DISSE MONSTERNE", + "FÅ DERES HÆNDER PÅ DEM!", "AF STED SÅ!" ], "sage-village3-introduction-rams": [ - "I'M GLAD YOU TWO ARE HERE. THERE'S LURKER MOVEMENT IN THE MOUNTAINS.", + "JEG ER GLAD FOR, I TO ER HER. DER ER LURKERBEVÆGELSE I BJERGET.", "DE HAR ÅBENBART OPDAGET, OG ER NU VED AT FRIGØRE,", "NOGLE MÆNGDER MØRK ECO SOM ER FROSSET FAST I GLETSJERENE.", "MENS I ER DEROPPE I SØGEN EFTER KRAFTCELLER", @@ -965,8 +965,8 @@ "DET ER ET LILLE LYSENDE EGERN NÆRMEST DIN STØRRELSE, FULD AF ENERGI, OG SUPER SKØR!", "ÅH, JEG FORSTÅR! SOM EN MAKKER.", "FOR AT SIGE DET LIGE UD, UDEN MIN MUSE KAN JEG IKKE UDHUGGE.", - "BUT WITH HER AROUND... I SEE BEAUTY IN EVERYTHING, YOU KNOW?", - "RIGHT NOW I COULDN'T CHISEL MY WAY OUT OF A BOX.", + "MEN MED HENDE RUNDT... JEG SER SKØNHED I ALT, VED I?", + "LIGE NU KUNNE JEG IKKE MEJSLE MIG UD AF EN KASSE.", "JEG TROR HUN LØB VÆK TIL DEN DISEDE Ø.", "ÅHH, JEG HÅBER BARE HUN HAR DET FINT.", "DET ER VÆRD EN KRAFTCELLE HVIS I BRINGER HENDE TILBAGE TIL MIG!", @@ -988,7 +988,7 @@ ], "sidekick-human-intro-sequence-c": [ "HVAD LAVER VI ALLIGEVEL HER, JAK? DET HER STED GIVER MIG KULDEGYSNINGER!", - "HVA?", + "HVAD?", "(STØN) DUMME FORGÆNGERBRAS!", "AD! HVAD ER DET DER MØRKE STADS? DET SER VIRKELIG IKKE VENLIGT UD.", "VISMANDEN KÆFTER OP OM FORGÆNGERNE SOM LAVEDE DET HER STED HELE TIDEN.", @@ -996,13 +996,13 @@ "SÅ JEG ELSKER FORGÆNGERGLOBER OG KRAFTCELLER SÅ MEGET SOM ENHVER ANDEN", "MEN HVIS DU SPØRGER MIG, SÅ MÅ DE HAVE VÆRET TABERE.", "WOW! HVORDAN GJORDE DU DET?", - "JAK, JEG TROR VI ER I PROBLEMER!", + "JA, JEG TROR, VI ER I FEJL!", "MAND, DET STAK.", "JEG FORTALTE DIG VI IKKE BURDE VÆRE HER, OG DU LYTTEDE?", "HVAAAD?", - "AAAAAAAAHHHHHHHH!!", + "AAAAAAAAHHHHHHH!!", "OKAY, OKAY. JEG HAR DET FINT, JEG HAR DET FINT...", - "AAAAAAAAHHHHHHHH!!" + "AAAAAAAAHHHHHHH!!" ], "warrior-introduction": [ "AV... MIT BANKENDE HOVED.", @@ -1030,7 +1030,7 @@ "VI FÅR BRUG FOR AT DU, ØH... SÆTTER DEM TILBAGE, ELLER NOGET.", "NÅH, VIRKELIG! OG FORSEGLE MIN UNDERGANG?", "(SUKKER)", - "JAVEL. FINT.", + "ÅH GODT. BØDE.", "BRING MIG 90 FORGÆNGERGLOBER OG JEG SÆTTER PONTONERNE FRI.", "MEN JEG KÆMPER IKKE IMOD DET MONSTER IGEN!" ], @@ -1042,17 +1042,17 @@ "ÅH.", "VIDUNDERLIGT.", "I HAR BRAGT MIG FORGÆNGERGLOBERNE.", - "FINT SÅ.", + "SÅ GODT.", "JEG VIL FIKSE BROEN.", "MEN BED MIG IKKE OM AT INVOLVERE MIG MED DET VÆSEN IGEN!" ], "yellowsage-resolution": [ "HVEM SKULLE TRO JEG VILLE LEVE TIL AT SE DAGEN", - "WHEN I NEEDED TO BE RESCUED BY A BOY AND HIS MUSKRAT!", - "AHH... I'M GONNA GIVE GOL AND MAIA", - "A LITTLE PAYBACK FOR THIS EMBARRASSMENT!", - "THEN WE'LL SEE ABOUT COOKING UP SOME MUSKRAT STEW...", - "(SYNK)" + "NÅR JEG SKAL BLI REDDE AF EN DRENG OG HANS MOSKRATE!", + "AHH... JEG VIL GIVE GOL OG MAIA", + "EN LIDT TILBAGEBETALING FOR DENNE FORLEVELSE!", + "SÅ FÅR VI SE OM AT TILBEREDE NOGET BUSKRATSGRYDVERK...", + "(HÅNDVASK)" ] }, "hints": { @@ -1101,7 +1101,7 @@ "FOR AT KUNNE MODSTÅ LAVAEN." ], "ASSTLP37": [ - "AW... WE'VE GOT TO SAVE THE OTHER SAGES..." + "AW... VI MÅ REDDE DE ANDRE SAGES..." ], "BIL-AM01": [ "JEG ELSKER BARE MUDDERET." @@ -1110,25 +1110,25 @@ "FORBANDEDE SUMPROTTER." ], "BIL-AM03": [ - "I NEED A GOOD DRAUGHT OF MAMA'S MEDICINE." + "JEG HAR BRUG FOR ET GODT UDSLAG TIL MAMAS MEDICIN." ], "BIL-AM04": [ "GLADIOLA." ], "BIL-AM05": [ - "I NEED ME SOME BROWN MEDICINE." + "JEG HAR BRUG FOR MIG NOGET BRUN MEDICIN." ], "BIL-AM06": [ - "I NEED ME SOME SUMMER COOLANT." + "JEG HAR BRUG FOR MIG SOMMER KØLEVÆSKE." ], "BIL-AM07": [ - "DARN, THIS HEAT'S GIVIN' ME THE PRICKLIES." + "FOTO, DEN HEAT GIVER MIG STIKLERNE." ], "BIL-AM08": [ - "DARN... THIS HEAT'S GIVIN' ME A RASH." + "DET... DEN HEDEN GIVER MIG UDSLAG." ], "BIL-AM1A": [ - "MM-MM! I JUST LOVE THE MUD!" + "MM-MM! JEG ELSKER BARE MUDDERET!" ], "BIL-AM2A": [ "FORDØMTE SUMPROTTER!" @@ -1152,7 +1152,7 @@ "SOIEE-SOIEE-SOIEE!" ], "BIL-LO2B": [ - "SOIEE! SOIEE!" + "SOJA! SOJA!" ], "BIL-TA01": [ "FÅ DEM!" @@ -1191,7 +1191,7 @@ "DEROVRE!" ], "BIL-TA4A": [ - "FORDØMT!" + "FORFANGET!" ], "BIL-TA4B": [ "POKKERS!" @@ -1233,7 +1233,7 @@ "GODT ARBEJDE! MØD MIG NU HER VED ÆGGET." ], "BIR-AM12": [ - "DU MÅ VÆRE EN SAND DYREELSKER!" + "DU SKAL VÆRE EN RIGTIG DYREELSKER!" ], "BIR-AM13": [ "KAN I SE NOGEN ANDRE FUGLE DEROPPE?" @@ -1245,10 +1245,10 @@ "ÅH DOG, DET ER EN FLOT EN." ], "BIR-LO03": [ - "OH LOOK, A MUCKY-MUCK." + "ÅH SE, EN MUCKY-MUCK." ], "BIR-am08": [ - "HERE, BIRDIE BIRDIE..." + "HER, BIRDIE BIRDIE..." ], "BLU-AM01": [ "EN SMULE HJÆLP VILLE VÆRE GODT!" @@ -1257,14 +1257,14 @@ "ÅH, DETTE ER NOGET AF ET ROD." ], "BLU-AM03": [ - "HMM, QUITE AN ENIGMA WE'RE FACING." + "HMM, EN ENIGMA VI STÅR PÅ." ], "CHI-AM01": [ "DET ER EN KATASTROFE. EN KATASTROFE, SIGER JEG!" ], "CHI-AM02": [ - "THEY WANT ME TO GO INTO THE JUNGLE - ME! HO HO OH...", - "I'D SOONER WRESTLE AN ENRAGED FLUT-FLUT." + "DE VIL, JEG GÅR IND I JUNGLEN - MIG! HO HO OH...", + "JEG VILLE FØRE VREDE MED EN VRED FLUTTE-FLUTTE." ], "CHI-AM03": [ "FIRST BLIVER FISKERMANDENS BÅD...", @@ -1286,7 +1286,7 @@ "(STØNNER) HVAD ER DER SKET MED LANDSBYENS ENERGISTRÅLE?" ], "CHI-AM08": [ - "I... THEY, I DON'T... (MUTTERS)" + "JEG... DE, JEG GØR IKKE... (MUNKER)" ], "CHI-LO01": [ "...VINDMØLLE, MONSTRE, KRAFT, GENVALG..." @@ -1295,11 +1295,11 @@ "... MENINGSMÅLINGERNE, JEG... MONSTRE, HM... GENVALG, ÅH..." ], "EXP-AM01": [ - "I NEED TO SET OFF ON MY JOURNEY SOON.", + "JEG SKAL SNART AFGIVE PÅ MIN REJSE.", "JEG HAR BRUG FOR FORGÆNGERGLOBER!" ], "EXP-AM02": [ - "LET'S SEE, NOW WHERE SHALL I GO FIRST? EH..." + "LAD OS SE, NU HVOR SKAL JEG GÅ FØRST? EH..." ], "EXP-AM03": [ "ÅH JEG SAVNER DEN ÅBNE VEJ." @@ -1308,24 +1308,24 @@ "SÅ MANGE STEDER AT SE, OG SÅ KORT EN TID." ], "EXP-AM05": [ - "WELL IN MY DAY, YOU COULD WALK THE LANDS", - "WITHOUT BEING ASSAULTED BY MONSTERS!" + "GODT I MIN DAG KUNNE DU VANDRE LANDENE", + "UDEN AT BLIVE OVERRAGET AF MONSTERNE!" ], "EXP-LO02": [ "JEG HAR BRUG FOR FLERE FORGÆNGERGLOBER." ], "EXP-LO1A": [ - "(MUTTERS)" + "(MUKLER)" ], "FAR-AM01": [ "(SNORKER) HER, BERTA... HER, BERTA BERTA...", "DET ER EN GOD PIGE..." ], "FAR-AM02": [ - "GOTTA BRING IN THE CROPS 'FORE THE JUNE BUGS..." + "SKAL BRINGE AFGRØDERNE TIL JUNI BUGS..." ], "FAR-AM2A": [ - "GOTTA BRING IN THE CROPS 'FORE THE JUNE BUGS GET..." + "SKAL BRINGE AFGRØDERNE, FOR JUNI BUGS FÅR..." ], "FAR-LO01": [ "(SNORKER)" @@ -1342,30 +1342,30 @@ "VIL RUINERE MIG." ], "FIS-AM03": [ - "DRAT, THESE BLIGHTERS!", - "IN ME BASKET, DARN FISHIES, COME ON YEAH...", + "DRAT, DISSE BLIGHTERS!", + "I MIG KURV, FOLK FISKE, KOM SÅ JA...", "HEH HE HE HE HE..." ], "FIS-AM04": [ "ÅH HVOR JEG ELSKER LUGTEN AF FISK OM MORGENEN." ], "FIS-AM05": [ - "OOH I COULD USE ME A SALTED FISH LIPS ON RYE." + "ÅH JEG KUNNE BRUGE MIG EN SALTET FISK LÆBER PÅ RUG." ], "FIS-AM06": [ - "I 'MEMBER THE BIG ONE THAT GOT AWAY..." + "JEG ER MEDLEM DEN STORE, DER BLEV VÆK..." ], "FIS-LO01": [ "GRR!" ], "FIS-LO03": [ - "HA HA HA HA HA HAH!" + "HA HA HA HA HA HA!" ], "FIS-LO04": [ "FORBANDEDE FISK... DE ENDER ALDRIG I MIT NET!" ], "FIS-LO05": [ - "HA HA HA AH HA HA HA HAH!" + "HA HA HA HA HA HA HA!" ], "FIS-TA01": [ "TIL VENSTRE!" @@ -1386,7 +1386,7 @@ "ROLIGT MIN DRENG." ], "FIS-TA07": [ - "YOUR SAILS ARE SAGGING IN THE WIND, BOY." + "DINE SEJ SIGER I VINDEN, DENG." ], "FIS-TA08": [ "MISSEDE." @@ -1425,10 +1425,10 @@ "ÅH... JEG HAR BRUG FOR HELDET MED MIG." ], "GAM-AM07": [ - "AW, WHAT ARE THE ODDS OF MOVIN' TO A TOWN UNDER ATTACK?" + "AW, HVAD ER MULIGHEDEN FOR AT BEVÆRE TIL EN BY UNDER ANGREB?" ], "GAM-AM08": [ - "I THOUGHT I HAD A GOOD TIP!" + "JEG TRODE, JEG HAVDE ET GODT TIP!" ], "GAM-AM09": [ "ENDNU EN DAG, ENDNU ET VÆDDEMÅL." @@ -1446,7 +1446,7 @@ "HEY, HVAD GRINER DU AF? SYNES DU AT JEG ER MORSOM?" ], "GEO-AM01": [ - "MMM, INTERESSANTE STRATA..." + "MMM, INTERESSANT STRATE..." ], "GEO-AM02": [ "STAKKELS SMÅ MULDVARPER..." @@ -1458,7 +1458,7 @@ "HELD OG LYKKE, DRENGE!" ], "GEO-AM05": [ - "KLAMME LURERE..." + "KRAM NAR..." ], "GEO-AM06": [ "STEN HAR OGSÅ FØLELSER..." @@ -1470,16 +1470,16 @@ "NU KAN JEG KOMME TILBAGE TIL MIN FORSKNING!" ], "GEO-LO01": [ - "I'VE GOT TO GET BACK TO MY RESEARCH." + "JEG MÅ TILBAGE TIL MIN FORSKNING." ], "GEO-LO02": [ - "HM, THIS STONE IS VERY OLD..." + "HM, DENNE STEN ER MEGET GAMMEL..." ], "GOL-AM01": [ - "YOU JUST WON'T GIVE UP, WILL YOU?" + "DU VIL BARE IKKE GIVE OP, VIL DU?" ], "GOL-AM02": [ - "SOON, THE DARK ECO WILL BE OURS!" + "SNART BLIR DET MØRKE ØKO VORES!" ], "GOL-AM03": [ "FÆRDIGGØR DEM!" @@ -1503,13 +1503,13 @@ "JEG HAR DIG NU!" ], "GOL-AM10": [ - "AH HA HA HA HA!" + "HA HA HA HA HA!" ], "GOL-AM11": [ "INGEN NÅDE!" ], "GOL-AM12": [ - "TAG DEN!" + "DAG DEN!" ], "GOL-AM13": [ "GODT FORSØGT!" @@ -1521,22 +1521,22 @@ "YNKELIGT!" ], "GOL-AM16": [ - "NEEJJ!" + "INGEN!" ], "GOL-AM17": [ - "AHHH!" + "ÅHHH!" ], "GOL-AM18": [ - "WE'LL OPEN THE SILO ALL THE WAY AND DESTROY YOU TWO!" + "VI ÅBNER SILOEN HELE VEJEN OG ØDELEGGE JER TO!" ], "GOL-AM19": [ - "LYS ECO! DET EKSISTERER!" + "LET ØKO! DET FINDER!" ], "GOL-AM20": [ - "WE'RE NOT GONNA TAKE IT!" + "VI TAGER DEN IKKE!" ], "MAI-AM01": [ - "FINISH THEM BOTH OFF ONCE AND FOR ALL!" + "SLUT DEM BÅDE AF EN GANG OG FOR ALLE!" ], "MAI-AM02": [ "SLÅ DEM UD!" @@ -1554,13 +1554,13 @@ "ARGH!" ], "MAI-AM07": [ - "NEEEEJJ!" + "NEJ!" ], "MAI-AM08": [ "VI VIL ÅBNE SILOEN FULDSTÆNDIGT OG DESTRUERE JER TO!" ], "MAI-AM09": [ - "DE MÅ IKKE FÅ FAT PÅ DET!" + "DE MÅ IKKE FÅ DET!" ], "MIN-LO01": [ "EN AF DE HER DAGE BLIVER JEG RIG...", @@ -1569,7 +1569,7 @@ ], "MIN-LO03": [ "GRAV, WILLARD, GRAV!", - "JA, MEN DU GRAVER JO IKKE!", + "JA, MEN DU GRAVER IKKE!", "DET' FORDI JEG GØR ALT TÆNKNINGEN!" ], "MIN-LO04": [ @@ -1685,13 +1685,13 @@ "HMM..." ], "SAGELP21": [ - "LURERNE MÅ STOPPES." + "SVINDELIGHEDERNE SKAL STOPRES." ], "SAGELP22": [ "JEG SER..." ], "SAGELP23": [ - "NEJ..." + "IKKE..." ], "SAGELP24": [ "HVAD KUNNE DER HAVE VÆRET SKET DEM?" @@ -1703,7 +1703,7 @@ "MØRKE ECO KRYSTALLER?" ], "SAGELP33": [ - "MAIA AND GOL HAVE GOTTEN IN OVER THEIR HEADS!" + "MAIA OG GOL ER KOMMET IND OVER HOVEDET!" ], "SAGELP34": [ "HMM, KRAFTEN AF MØRK ECO KAN IKKE STYRES!" @@ -1712,7 +1712,7 @@ "MØRK ECO I GLETSJERNE?" ], "SAGELP36": [ - "AH! THERE'S LURKER TROOPS IN THE MOUNTAINS!" + "AH! DER ER LURKERTROPPER I BJERGENE!" ], "SAGELP37": [ "HVAD PLANLÆGGER GOL..." @@ -1721,10 +1721,10 @@ "KUNNE HAN FAKTISK HAVE...?" ], "SCU-AM01": [ - "AW... I JUST CAN'T DO IT ANYMORE." + "AW... JEG KAN BARE DET IKKE LÆRE." ], "SCU-AM02": [ - "AW, I WISH I HAD SOME INSPIRATION." + "AW, JEG ØNSKE JEG HAVDE NOGET INSPIRATION." ], "SCU-AM03": [ "JEG ER LIGESÅ INSPIRERET SOM EN STEN." @@ -1742,7 +1742,7 @@ "ÅH, MAND..." ], "SKSP009F": [ - "TAG DEN! TAG DEN! HA HA HA!" + "DAG DEN! DAG DEN! HA HA HA!" ], "WAR-LO1A": [ "(HULK)" @@ -1751,7 +1751,7 @@ "(HULKER)" ], "WAR-LO1C": [ - "(BLOWS NOSE AND SPUTTERS)", + "(PUSER NÆSE OG SPUTTER)", "(FORTSÆTTER MED AT GRÆDE)" ], "YEL-AM01": [ @@ -1761,38 +1761,38 @@ "HEY! FÅ MIG UD HERFRA!" ], "YEL-AM03": [ - "WHEN I GET OUTTA HERE, SOME SHOOTIN'S GONNA START!" + "NÅR JEG KOMMER UD HER, SKAL NOGLE SHOOTIN STARTE!" ], "asstv100": [ - "OKAY, YOU HAVE ENOUGH CELLS TO INCREASE THE POWER ON THE HEAT SHIELD.", - "RIDE THE WOODEN MINECART DOWN THE SHAFT BY THE LAVA GEYSER.", - "I'LL MEET YOU BY THE ENTRANCE TO THE LAVA TUBE,", - "SO I CAN MODIFY THE ZOOMER. HURRY!" + "OKAY, DU HAR CELLER NOG TIL AT ØGE EFFEKTET PÅ VARMESKJÆLDET.", + "KØR MED TRÆMINECARTEN NED SKAKTEN VED LAVA GEYSEREN.", + "JEG MØDER DIG VED INDGANGEN TIL LAVA RØRET,", + "SÅ JEG KAN MODIFICERE ZOOMEREN. SKYNDE SIG!" ], "asstv101": [ - "HAHA, OKAY! YOU HAVE ENOUGH CELLS TO INCREASE", - "THE POWER ON THE HEAT SHIELD.", - "MEET ME BACK IN THE VOLCANIC CRATER.", - "I'LL BE WAITING BY THE LAVA TUBE DOWN THE SHAFT BY THE LAVA GEYSER.", + "HAHA, OK! DU HAR CELLER NOG TIL AT STØGE", + "STYRKEN PÅ VARMESKJÆLDET.", + "MØD MIG TILBAGE I VULKANISK KRATER.", + "JEG VENTER VED LAVA RØRET NED SKAKTEN VED LAVA GEYSER.", "BRING MIG DE KRAFTCELLER!" ], "asstv102": [ "SKYND DIG MED DE KRAFTCELLER!", - "I'M WAITING BY THE WOODEN MINECART SHAFT NEAR THE LAVA GEYSER." + "JEG VENTER VED MINECART-SKAKTEN AF TRÆ NÆR LAVA-GEYSEREN." ], "asstv103": [ - "DON'T FORGET TO TURN ON THE TELEPORT GATE TO LET US THROUGH.", - "YOU'VE GOT TO GO INTO THE RED SAGE'S LAB", - "IN THE CENTER OF THE VOLCANIC CRATER TO TURN IT ON.", - "WE CAN'T COME THROUGH UNTIL IT'S BACK ONLINE." + "GLEM IKKE AT TÆNDE FOR TELEPORTPORTEN FOR AT SLIPPE OS IGEN.", + "DU MÅ GÅ IND I DEN RØDE SVISES LAB", + "I CENTRUM AF VULKANISK KRATER FOR AT TÆNDE DET.", + "VI KAN IKKE KOMME IGEN FØR DEN ER ONLINE TILBAGE." ], "asstv104": [ - "HEY, WE'RE STILL BACK IN ROCK VILLAGE!", + "HEJ, VI ER STADIG TILBAGE I ROCK VILLAGE!", "TÆND FOR TRANSITPORTEN!" ], "asstv105": [ - "WE WANNA JOIN YOU IN THE VOLCANIC CRATER!", - "GO INTO THE RED SAGE'S LAB AND TURN ON THE GATE." + "VI VIL MED DIG I DET VULKANISKE KRATER!", + "GÅ IND I DEN RØDE SAGES LAB OG SLÆND PÅ LÅGEN." ], "asstva73": [ "HEY DRENGE! IFØLGE MINE UDREGNINGER, KOMMER DET TIL AT TAGE", @@ -1800,209 +1800,209 @@ "MOD LAVAEN PÅ VEJEN MOD GOL OG MAIAS FÆSTNING." ], "asstva74": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO GET THROUGH THIS LAVA!", - "YOU CAN'T GET THROUGH TO GOL AND MAIA'S CITADEL", - "UNTIL YOU'VE COLLECTED 72 POWER CELLS!" + "DU HAR IKKE KRAFTCELLER NOK TIL AT KOMME GENNEMGANG DEN LAVA!", + "DU KAN IKKE KOMME IGEN TIL GOL OG MAIAS CITADEL", + "INDTIL DU HAR SAMLET 72 KRAFTCELLER!" ], "asstvb02": [ - "WOW, DID YOU SEE THAT?", - "BLUE ECO VENTS HAVE BEEN ACTIVATED ALL OVER THE WORLD!", - "I KNEW THERE WAS A WAY TO TURN THEM ON.", - "THERE MUST BE PLACES TO TURN ON THE OTHER ECO VENTS AS WELL." + "WOW, SER DU DET?", + "BLÅ ØKOVENTILER ER BLEVET AKTIVERET OVER HELE VERDEN!", + "JEG VIDSTE, DER VAR EN MÅDE AT TÆNDE DEM PÅ.", + "DER SKAL OGSÅ VÆRE STEDER AT TÆNKE DE ANDRE ØKOVENTILATIONER TIL." ], "asstvb03": [ - "GOOD! YOU STOPPED ALL THE MINE-DROPPING LURKERS!", - "THEY'VE BEEN THREATENING THE WATERS AROUND OUR VILLAGE FOR WEEKS.", - "BRING YOUR ZOOMER BACK TO THE TRANS-PAD AND I'LL TELEPORT IT BACK!" + "GODT! DU STOPPEDE ALLE DE MINEDRIPPENDE LURKERE!", + "DE HAR TRUET VANDET RUNDT VORES LANDSBY I UGER.", + "BRING DIN ZOOMER TILBAGE TIL TRANS-PAD, OG JEG TELEPORTERER DEN TILBAGE!" ], "asstvb04": [ - "GOOD, YOU'VE COLLECTED ENOUGH POWER CELLS TO FUEL MY HEAT SHIELD!", - "MEET ME BY THE ENTRANCE TO THE FIRE CANYON", - "BY CLIMBING THE CLIFF BEHIND THE FARMER'S HOUSE.", - "BRING THE POWER CELLS, AND HURRY!", - "MY FATHER SAYS HE'S SEEN MORE LURKERS AROUND!" + "GODT, DU HAR SAMLET NOG KRAFTCELLER TIL AT BÆNDE MIN VARMESKJÆLD!", + "MØD MIG VED INDGANGEN TIL ILDKANYON", + "VED AT KLATRE PÅ KLITEN BAG LANDMANDSHUSET.", + "BRING KRAFTCELLERNE, OG SKYND DIG!", + "MIN FAR SIGER, HAN HAR SETT FLERE LURKERE RUNDT!" ], "asstvb08": [ "SKYND DIG MED DE KRAFTCELLER.", - "I'M WAITING AT THE HEAD OF FIRE CANYON", - "AT THE TOP OF THE CLIFF BEHIND THE FARMER'S HOUSE!" + "JEG VENTER PÅ HOVEDET AF ILDCANYON", + "PÅ TOPPEN AF KLINTEN BAG LANDMANDENS HUS!" ], "asstvb09": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO FUEL MY HEAT SHIELD.", - "YOU CAN'T CROSS FIRE CANYON UNTIL YOU COLLECT ENOUGH POWER CELLS." + "DU HAR IKKE STRØMCELLER NOG TIL AT BÆNDE MIN VARMESKJÆRM.", + "DU KAN IKKE KRYSE ILDCANYON, FØR DU SAMLER NOG KRAFTCELLER." ], "asstvb20": [ - "GOOD FLYING! THOSE LURKERS WERE NO MATCH FOR YOUR ZOOMER!", + "GODT FLYVNING! DISSE LURKERE VAR IKKE MATCH FOR DIN ZOOMER!", "DET ER EN MERE KRAFTCELLE!" ], "asstvb21": [ "GODT ARBEJDE! ER I FYRE IKKE STOLTE", "AT I REDDEDE VORES LILLE FLUT-FLUT VEN?", "HUN BLIVER SIKKERT NYTTIG EN ANDEN GANG.", - "NOW, GO BACK TO THE TRANS-PAD, AND I'LL BRING HER HOME." + "GÅ NU TILBAGE TIL TRANS-PAD, SÅ BRINGER JEG HENDE HJEM." ], "asstvb22": [ - "WOW! YOU RAISED A PIECE OF THE UNDERWATER RUINS TO THE SURFACE!", - "IT SEEMS YOU CAN USE ECO IN WAYS WE'VE NEVER SEEN BEFORE!", - "A POWER CELL SURFACED WITH THE ROOM. CLIMB UP THERE AND GET IT." + "WOW! DU HØJTE ET STUK AF DE UNDERVANDSRUINER TIL OVERFLADEN!", + "DET SYNES, DU KAN BRUGE ECO PÅ MÅDER, VI ALDRIG HAR SETT FØR!", + "EN POWERCELLE OVERFLADE MED RUMMET. KRAV OP DER OG FÅ DEN." ], "asstvb23": [ - "GREAT WORK! THE PEOPLE OF ROCK VILLAGE ARE BREATHING", - "A COLLECTIVE SIGH OF RELIEF!", - "BUT THERE'S NO TIME TO CELEBRATE! USE YOUR ZOOMER", - "TO NAVIGATE THE MOUNTAIN PASS UP AHEAD.", - "BE CAREFUL, IT LOOKS LIKE THE LURKERS HAVE RIGGED", - "THE WHOLE PASS WITH EXPLOSIVES!", - "WHEN YOU REACH THE VOLCANIC CRATER,", - "BE SURE TO VISIT THE RED SAGE'S LAB", - "AND ACTIVATE THE TELEPORT GATE SO THAT FATHER AND I CAN JOIN YOU." + "FLOT ARBEJDE! FOLKET I ROCK VILLAGE TRÆKKER VEJRET", + "ET KOLLEKTIV LATTENS SUK!", + "MEN DER ER IKKE TID TIL AT FEJRE! BRUG DIN ZOOMER", + "FOR AT NAVIGERE FJERGET PASS OP FORUD.", + "VÆR FORSIGTIG, DET SER UD TIL, AT LURKERNE HAR RIGTET", + "HELE PASSET MED SPRÆNGSTOFFER!", + "NÅR DU NÅR DET VOLKANISKE KRATER,", + "HUSK AT BESØGE DEN RØDE SAGES LAB", + "OG AKTIVER TELEPORTPORTEN, SÅ FAR OG JEG KAN VÆRE MED DIG." ], "asstvb24": [ - "OH MY! THOSE LURKERS MUST BE HEADED", - "FOR A DETONATOR AT THE END OF THE CANYON!", - "IF THEY REACH IT BEFORE YOU DO,", - "THEY'LL BLOW UP THE ENTIRE PASS!", - "YOU'VE GOTTA BEAT THEM THERE AND DESTROY THE DETONATOR,", - "OR IT'S ALL OVER!" + "ÅH MIN! DISSE LURKERE SKAL LEDES", + "TIL EN DETONATOR FOR ENDDEN AF KANIONEN!", + "HVIS DE NÅR DET FØR DU GØR,", + "DE BLÆSER HELE PASSET OP!", + "DU MÅ SLÅ DEM DER OG ØDELEGGE DETONATOREN,", + "ELLER DET ER OVER!" ], "asstvb25": [ - "GOOD WORK! YOU BEAT THEM TO THE DETONATOR!", - "THE RED SAGE'S LAB IS JUST AHEAD.", - "GO TURN ON THE TELEPORT GATE SO WE CAN JOIN YOU." + "GODT ARBEJDE! DU SLÅR DEM TIL DETONATOREN!", + "DEN RØDE VIVISES LAB ER LIGE FORAN.", + "GÅ TÆND TELEPORTPORTEN, SÅ VI KAN VÆRE MED DIG." ], "asstvb28": [ - "HEY! DON'T FORGET ABOUT THE SAGE AND ME!", - "YOU HAVE TO TURN ON THE TELEPORT GATE TO LET US THROUGH!", - "IT'S IN THE BLUE SAGE'S LAB, BY THE END OF FIRE CANYON.", - "IF YOU DON'T LET US THROUGH, THEN WE CAN'T HELP YOU!" + "HEJ! GLEM IKKE VISMANNEN OG MIG!", + "DU SKAL TÆNKE FOR TELEPORTPORTEN FOR AT SLIPPE OS IGEN!", + "DET ER I DEN BLÅ SAGES LABORATORIUM, VED ENDEN AF ILDCANYON.", + "HVIS DU IKKE SLIPPER OS IGEN, SÅ KAN VI IKKE HJÆLPE DIG!" ], "asstvb29": [ - "HEY! WE'RE STILL WAITING!", - "TURN ON THE TELEPORT GATE!" + "HEJ! VI VENTER STADIG!", + "TÆND TELEPORTPORTEN!" ], "asstvb30": [ - "HEY! WE CAN'T COME THROUGH UNTIL THE TELEPORT GATE'S ON!" + "HEJ! VI KAN IKKE KOMME GENNEM FØR TELEPORTPORTEN ER TÆNDT!" ], "asstvb40": [ - "THIS DEVICE IS A COMMUNICATOR. WITH IT, MY FATHER AND I", - "CAN GIVE YOU ADVICE AT ANY TIME DURING YOUR QUEST." + "DENNE ENHED ER EN KOMMUNIKATØR. MED DET, MIN FAR OG JEG", + "KAN GI DIG RÅD TIL HVER TID UNDER DIN SØGGE." ], "asstvb41": [ - "THESE FLOATING EGG-SHAPED THINGS ARE PRECURSOR ORBS.", - "COLLECT ENOUGH OF THEM, AND SOME OF THE VILLAGERS WILL GIVE YOU", - "A POWER CELL IN EXCHANGE." + "DISSE FLØDENDE ÆGFORMEDE TING ER FORGÅENDE KUNDER.", + "SAMLE NOG AF DEM, OG NOGLE AF LANDSBYBEBOENE VIL GI DIG", + "EN KRAFTCELLE I BYTTE." ], "asstvb42": [ - "THIS IS A POWER CELL, THE MOST IMPORTANT PRECURSOR ARTIFACT YOU CAN FIND!", - "YOU NEED TO COLLECT 20 OF THESE SO I CAN POWER THE HEAT SHIELD", - "FOR YOUR A-GRAV ZOOMER." + "DETTE ER EN KRAFTCELLE, DEN VIGTIGSTE PRECURSOR-ARTEFAKT, DU KAN FINDE!", + "DU SKAL SAMLE 20 AF DISSE, SÅ JEG KAN KAN FORSÆTTE VARMESKÆRMET", + "TIL DIN A-GRAV ZOOMER." ], "asstvb44": [ - "HEY, YOU FOUND ONE OF MY SCOUT FLIES!", - "I SENT 7 OF THEM TO EACH AREA TO LOOK FOR POWER CELLS", - "BUT THE LURKERS MUST HAVE CAPTURED THEM ALL!" + "HEJ, DU FANDT EN AF MINE SPEJDERFLUER!", + "JEG SENDTE 7 AF DEM TIL HVERT OMRÅDE FOR AT SE EFTER KRAFTCELLER", + "MEN DE LURKERE SKAL HA FAGET DEM ALLE!" ], "asstvb45": [ - "WOW! THAT LAST SCOUT FLY HAD A POWER CELL!", - "I'LL BET IF YOU COLLECT ALL 7 IN EACH AREA", - "YOU CAN FIND EVEN MORE POWER CELLS." + "WOW! DEN SIDSTE SPEJDERFLØE HAVDE EN KRAFTCELLE!", + "JEG VÆDDER, HVIS DU SAMLER ALLE 7 I HVER OMRÅDE", + "DU KAN FINDE ENDNU FLERE KRAFTCELLER." ], "asstvb46": [ - "BE CAREFUL IN THE OCEAN, THE WATERS ARE CHOCK-FULL OF", - "LURKER SHARKS AND I'VE NEVER SEEN ANYONE DEFEAT ONE.", - "STAY CLEAR OF THEM IF YOU KNOW WHAT'S GOOD FOR YOU!" + "VÆR FORSIGTIG I HAVET, VANDET ER FULLT AF", + "LURKER SHARKS OG JEG HAR ALDRIG SEET NOGEN BESEJRE EN.", + "HOLD AF DEM, HVIS DU VED HVAD DER ER GODT FOR DIG!" ], "asstvb47": [ - "REMEMBER, THAT'S A POWER CELL.", - "YOU NEED TO COLLECT AS MANY OF THOSE AS YOU CAN." + "HUSK, DET ER EN KRAFTCELLE.", + "DU SKAL SAMLE SÅ MANGE AF DEM, SOM DU KAN." ], "asstvb48": [ - "THAT'S A BLUE ECO VENT! MORE CONCENTRATED THAN THE FLOATING CLUSTERS,", - "THIS VENT WILL GIVE YOU A FULL CHARGE OF BLUE ECO,", - "LETTING YOU USE IT FOR THE MAXIMUM TIME." + "DET ER EN BLÅ ØKOVENT! MERE KONCENTRERET END DE FLYDENDE KLYNGER,", + "DENNE VENT GIVER DIG EN FULD OPLADNING AF BLÅ ØKO,", + "LADER DIG BRUGE DEN I MAKSIMAL TID." ], "asstvb71": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO POWER THE BLUE SAGE'S MACHINE.", - "WE CAN'T LIFT THAT BOULDER UNTIL YOU COLLECT 45 POWER CELLS." + "DU HAR IKKE STRØMCELLER NOK TIL AT DRIVE DEN BLÅ SAGES MASKINE.", + "VI KAN IKKE LØFTE DEN KENT, FØR DU SAMLER 45 STRØMCELLER." ], "asstvb72": [ - "UNTIL WE FIND OUT WHY THE BLUE SAGE DISAPPEARED,", - "YOU'RE GOING TO NEED TO COLLECT 45 POWER CELLS TO FUEL HIS MACHINE.", + "INDTIL VI FINDER UD AF HVORFOR DEN BLÅ SVIS FORSVINDE,", + "DU SKAL SAMLE 45 STRØMCELLER FOR AT FÅ BÆNDSTOF PÅ HANS MASKIN.", "FÅ FAT PÅ DEM!" ], "asstvb75": [ - "THIS GONDOLA SEEMS TO BE MALFUNCTIONING.", - "I'LL TRY TO WORK ON IT AND GET IT RUNNING AGAIN." + "DENNE GONDOL SER TIL AT VÆRE FEJLFUNKTIONER.", + "JEG VIL PRØVE AT ARBEJDE PÅ DET OG FÅ DET TIL AT KØRE IGEN." ], "asstvb76": [ - "I'VE REACTIVATED THE GONDOLA. IT CAN TAKE YOU TO SNOWY MOUNTAIN!", - "USE IT WHENEVER YOU WANT." + "JEG HAR GENAKTIVET GONDOLEN. DET KAN TA DIG TIL SNEET BJERG!", + "BRUG DET NÅR DU VIL." ], "sagevb01": [ - "WELL, I SEE THAT YOU TWO HAVE FINALLY", - "DECIDED TO UNBLOCK MY COLLECTORS.", - "I WOULD OFFER MY CONGRATULATIONS", - "BUT YOU HAVE SO MUCH TO DO I WON'T WASTE YOUR TIME.", - "BY THE WAY, IF THINGS DON'T WORK OUT,", - "DAXTER COULD ALWAYS GET A JOB CONTROLLING THE VILLAGE RAT PROBLEM.", - "NYEH HA HA HA HA HA." + "NÅ, JEG SER, AT I TO ENDELIG HAR", + "BESLUTTEDE AT FÅ BLOKERING AF MINE SAMLER.", + "JEG VIL TILLYKKE", + "MEN DU HAR SÅ MEGET AT GØRE, JEG VIL IKKE SPILDE DIN TID.", + "HVIS TING IKKE VIRKER,", + "DAXTER KUNNE ALTID FÅ ET JOB MED AT KONTROLLER LANDSBYROTTEPROBLEMET.", + "YEH HA HA HA HA HA." ], "sagevb02": [ - "I HAVE TO ADMIT, I'M IMPRESSED. YOU TWO DIDN'T SCREW UP!", - "NOW THAT THE LURKERS CAN'T OPEN THAT SILO", - "THEY CAN'T FLOOD THE WORLD WITH DARK ECO", - "AND CAUSE UNTOLD DESTRUCTION.", - "WIPE THAT RIDICULOUS GRIN OFF YOUR FACE, DAXTER!", + "JEG MÅ INDRØMME, JEG ER IMPONERET. I TO SKREV DET IKKE!", + "NU, HVOR LURKERNE IKKE KAN ÅBNE DEN SILO", + "DE KAN IKKE OVERVINDE VERDEN MED MØRK ØKO", + "OG FORÅRSAGER UTALT ØDELAG.", + "TØR DET LØJLIGE GLIN AF DIT ANSIGT, DAXTER!", "I TO HAR MEGET AT GØRE.", "KOM I GANG!" ], "sagevb03": [ - "YOU KEEP ON IMPRESSING ME. BUT THEN MAYBE IT'S JUST BECAUSE", - "I'VE GOT LOW EXPECTATIONS.", - "OKAY, YOUR MOMENT OF GLOATING IS OVER.", - "KOM SÅ I GANG!" + "DU BLIVE VIDERE MED PÅ MIG. MEN SÅ ER DET MÅSKE BARE FORDI", + "JEG HAR LAVE FORVENTNINGER.", + "OKAY, DIT ØJEBLIKKE AF GLOATING ER SLUT.", + "SÅ KOM I GANG!" ], "sagevb04": [ - "GOOD WORK, JAK! YOUR UNCLE WOULD BE PROUD.", - "THAT WAS A GIANT ARM FROM A PRECURSOR ROBOT.", - "I'VE NEVER SEEN ONE IN SUCH GOOD CONDITION!", - "I CAN'T IMAGINE WHAT THE LURKERS WANTED WITH IT,", - "BUT WE SURE DIDN'T WANT THEM TO GET IT.", - "IF YOU KEEP THIS SUCCESS UP...", - "NAH, YOU'LL STILL FALL SHORT OF HERO.", - "BUT KEEP TRYING. IT'S ENDEARING." + "GODT ARBEJDE, JAK! DIN ONKEL VILLE VÆRE STOLT.", + "DET VAR EN KÆMPE ARM FRA EN PRECURSOR ROBOT.", + "JEG HAR ALDRIG SEET EN I SÅ GOD STAND!", + "JEG KAN IKKE FORESTILLE HVAD LURKERNE VILDE MED DET,", + "MEN VI VILLE SIKKER IKKE, AT DE FÅR DET.", + "HVIS DU BLIVER DEN SUCCES OP...", + "NEJ, DU VIL STADIG MAN MANGE HELTEN.", + "MEN BLIV VED MED AT PRØVE. DET ER INDTAGENDE." ], "sagevb21": [ - "THOSE LITTLE GREEN BALLS OF ENERGY ON THE GROUND ARE A TYPE OF ECO.", - "PICK UP 50 SMALL GREEN ECOES, OR ONE BIG GREEN ONE TO INCREASE YOUR HEALTH." + "DISSE SMÅ GRØNNE ENERGIKUGLER PÅ JORDEN ER EN TYPE ØKO.", + "HENT 50 SMÅ GRØNNE ØKOER, ELLER EN STOR GRØN FOR AT ØGE DIT SUNDHED." ], "sagevb22": [ - "THAT'S BLUE ECO, WHICH CONTAINS THE ENERGY OF MOTION.", - "BLUE ECO ALLOWS YOU TO RUN FAST, BREAK BOXES, AND EVEN ACTIVATE SOME PRECURSOR", - "ARTIFACTS WHEN YOU GET NEAR THEM." + "DET ER BLÅ ØKO, SOM INDEHOLDER BEVÆGELSENS ENERGI.", + "BLUE ECO GÅR DIG TIL AT LØBE HURTIG, KNÆKKE BOKS OG SELV AKTIVERE NOGET FORFØJELSER", + "ARTEFAKTER, NÅR DU KOMMER NÆR DEM." ], "sagevb23": [ - "NOTICE HOW EACH BLUE ECO CLUSTER YOU PICK UP", - "INCREASES THE TIME YOU CAN USE ITS POWER." + "BEMÆRK, HVORDAN HVER BLÅ ØKOKLYNGE DU AFHENTER", + "ØGER DEN TID, DU KAN BRUGE DENS KRAFT." ], "sagevb24": [ - "THIS IS A PRECURSOR DOOR.", - "IT CAN ONLY BE OPENED BY APPROACHING THE DOOR", - "WHILE CHANNELLING BLUE ECO THROUGH YOUR BODY." + "DETTE ER EN PRECURSOR DØR.", + "DEN KAN KUN ÅBNES VED AT NÆRDE DU DØREN", + "MENS DU KANALERER BLUE ECO GENNEM DIN KROP." ], "sagevb25": [ - "GOOD WORK, THE BLUE ECO CAUSED THE DOOR TO OPEN.", - "WITH BLUE ECO, YOU CAN BREATHE ENERGY INTO ALL KINDS", - "OF PRECURSOR ARTIFACTS THAT HAVE LAIN DORMANT FOR YEARS." + "GODT ARBEJDE, DEN BLÅ ØKO FIK DØREN TIL ÅBNE.", + "MED BLUE ECO KAN DU INDÅSTE ENERGI I ALLE SLAGS", + "AF PRECURSOR-ARTEFAKTER, DER HAR LÅBET I DØMENDE I ÅR." ], "sagevb26": [ - "USE YOUR GOGGLES TO VIEW YOUR PROGRESS DURING THE ADVENTURE." + "BRUG DINE BRILLE TIL AT SE DINE FREMSKRIDT UNDER EVENTYRET." ], "sagevb27": [ - "YOU CAN JUMP ONCE, THEN JUMP AGAIN IN THE AIR TO REACH EVEN HIGHER LEDGES." + "DU KAN HOPPE EN GANG, OG SÅ HOPPE IGEN I LUFTEN FOR AT NÅ ENDNU HØJERE VIDGER." ], "sagevb28": [ - "WHEN YOU'RE SURROUNDED BY ENEMIES, USE YOUR SPIN KICK." + "NÅR DU ER OMRINGET AF FJENDER, SÅ BRUG DIT SPIN-KIK." ], "sagevb29": [ "DET VAR IKKE ET RUNDSPARK! PRØV IGEN." @@ -2045,79 +2045,79 @@ "HEY! DEN LÆKKERT UDSEENDE TØS KEIRA HAVDE RET! DER ER TRANSPLADER HERUDE." ], "sksp0002": [ - "TRUST ME, THOSE DARK ECO BOXES ARE BAD NEWS!" + "TRO MIG, DISSE MØRKE ØKOBOKS ER DÅRLIGE NYHEDER!" ], "sksp0003": [ - "I BET IF WE FOUND ALL OF THOSE SICKLY CUTE SCOUT FLIES ON EACH LEVEL", - "AT LEAST ONE WILL HAVE A POWER CELL!" + "JEG VÆDDER, HVIS VI FANDT ALLE DISSE SYGT SØDE SPEJDERFLUER PÅ HVERT NIVEAU", + "MINDST ÉN VIL HAVE EN KRAFTCELLE!" ], "sksp0004": [ "SÅDAN, KOSTBARHEDER!" ], "sksp0005": [ - "THESE WOOD AND METAL BOXES DON'T LOOK THAT TOUGH!", - "I'LL BET THEY'LL BREAK IF YOU JUMP DIVE ONTO THEM." + "DISSE TRÆ- OG METALÆSKER SER IKKE SÅ HÅRDE UD!", + "JEG VÆDER AT DE BRUKER, HVIS DU HOPPER DYKKER PÅ DEM." ], "sksp0006": [ - "THOSE ALL-METAL BOXES ARE THICKER THAN A YAKOW SKULL!", - "BUT THERE MUST BE SOMETHING THAT CAN BUST 'EM OPEN." + "DISSE HELT METALÆSKER ER TYKKERE END ET YAKOW-KRANIE!", + "MEN DER MÅ VÆRE NOGET, DER KAN BRUGE DEM ÅBNE." ], "sksp0007": [ - "TWO WORDS: POWER CELLS. WE NEED TO FIND 'EM AND WE AREN'T LOOKIN' SO GOOD RIGHT NOW." + "TO ORD: KRAFTCELLER. VI SKAL FINDE DEM, OG VI SER IKKE SÅ GODT NU." ], "sksp0008": [ - "WE NEED ORBS. ORBS, JAK! HOW ARE EVER GONNA BUY POWER CELLS IF WE DON'T COLLECT ORBS!" + "VI HAR BRUG FOR ORBS. ORBS, JAK! HVORDAN SKAL VI NOGENSINDE KØBE POWERCELLER, HVIS VI IKKE SAMLER KULLER!" ], "sksp0009": [ - "WHAT A WEIRD-LOOKING THING! I'LL BET WE CAN GET THIS OPEN", - "IF YOU'RE POWERED UP WITH THAT ZAPPY BLUE ECO STUFF." + "HVAD SER TING UNDERLIGT UD! JEG VÆDER AT VI KAN ÅBNE DET", + "HVIS DU ER STRØMMET MED DEN ZAPPY BLÅ ØKO-STYKKE." ], "sksp0010": [ - "HEY! LET'S GO CHECK OUT OL' FISH BREATH'S SPEED-BOAT AT THE DOCK!" + "HEJ! LAD OS GÅ TJEK OL' FISH BREATH'S SPEED-BÅD VED DOCK!" ], "sksp0011": [ - "WE SHOULD ASK THE FISHERMAN DOWN BY THE JUNGLE RIVER", - "IF WE CAN BORROW HIS SPEEDBOAT TO ZOOM ON OVER TO MISTY ISLAND!" + "VI SKAL SPØRGE FISKEREN NEDE VED JUNGLEELVEN", + "HVIS VI KAN LÅNE HANS SPEEDBÅD FOR AT ZOOME OVER TIL MISTY ISLAND!" ], "sksp0013": [ - "DID YOU SEE THE SIZE OF THE BITE", - "THAT LURKER SHARK TOOK OUT OF THE FISHERMAN'S BOAT?", - "WE BEST STAY WAY CLEAR OF THEM!", - "I DON'T THINK WE CAN TACKLE A CREATURE THAT DAG NASTY." + "SER DU STØRRELSEN PÅ BIDDEN", + "DEN LURKERHAJ TAGEDE UD AF FISKERBÅDEN?", + "DEM HOLDER VI BEDST FREM!", + "JEG TROR IKKE, VI KAN TACKLE ET VÆSNING, DER DAG UD." ], "sksp0014": [ - "WE SCROUNGED ENOUGH ORBS TO TRADE FOR A POWER CELL.", - "LET'S GET BACK AND MAKE THE SWITCH ALREADY!" + "VI SCROUDEDE NOG KUNDER TIL AT BYTTE FOR EN KRAFTCELLE.", + "LAD OS KOMME TILBAGE OG GØR ALLEREDE KONTAKTET!" ], "sksp0015": [ - "THIS MUST BE A PRECURSOR ORACLE LIKE THE SAGE ALWAYS GOES ON ABOUT.", - "I HOPE THEY WEREN'T AS UGLY IN PERSON!" + "DETTE SKAL VÆRE ET FORGÅENDE ORAKEL, SOM VISMANN ALTID GÅR OM.", + "JEG HÅBER, DE IKKE VAR SÅ GRIMME PERSONLIGT!" ], "sksp0017": [ - "WHOA! CHECK OUT THAT FUNKY SCULPTURE", - "SITTIN' ON THE ROCKS OVER THERE!" + "WHOA! SE DEN FUNKY SKULPTUR", + "SIDDER PÅ KLIPPENE DEROVER!" ], "sksp0018": [ - "WE SHOULD GO TELL THAT WINDBAG OF A MAYOR THAT HE OWES US BIG TIME", - "FOR CONNECTING THE VILLAGE ENERGY BEAM!" + "VI SKAL GÅ FORTÆLLE DEN VINDTASKE AF EN BORGMEST, AT HAN SKULLER OS BIG TIME", + "TIL FORBINDELSE AF LANDSBYENS ENERGISTRALLE!" ], "sksp0019": [ - "HEY, SEAGULLS! LET'S BUZZ 'EM FOR KICKS." + "HEJ, MÅGER! LAD OS BUZZ 'EM TIL KICKS." ], "sksp0020": [ - "YEAH HA HA! LET'S DO THAT AGAIN!" + "JA HA HA! LAD OS GØR DET IGEN!" ], "sksp0021": [ - "THERE'RE THOSE SEAGULLS AGAIN. LET'S GET 'EM!!" + "DER ER DE MÅGER IGEN. LAD OS FÅ DEM!!" ], "sksp0022": [ - "YEAH HA HA HA HA HA!! WOO HO HO HO!" + "JA HA HA HA HA HA!! WOO HO HO HO!" ], "sksp0023": [ "WOOHOO!" ], "sksp0024": [ - "JA HA HA! JA!" + "OG HA HA! OG!" ], "sksp0025": [ "WOW! DE FORÅRSAGEDE EN LAVINE! LAD OS TAGE ET KIG." @@ -2130,97 +2130,97 @@ "HURTIGT! VI SKAL NÅ TIL KRAFTCELLEN FØR PELIKANEN SAMLER DEN OP IGEN." ], "sksp0028": [ - "KICK THE EGG! HEE-HEE! KICK IT! KICK IT!" + "SPAR ÆGGET! HEJ-HEE! SPARK DEN! SPARK DEN!" ], "sksp0029": [ - "EH, WE MIGHT WANNA TALK TO THE BIRDWATCHER", - "AND SEE IF WE SCRAMBLED THAT FLUT-FLUT EGG." + "ØH, VI VIL MÅSKE TALE MED FUGLEKIGEREN", + "OG SE OM VI SCRAMBELDE DET FLUT-FLUT-ÆG." ], "sksp0030": [ - "HEY, TRY PUNCHING THE ROCKS TO GET 'EM OUT OF THE WAY!" + "HEJ, PRØV AT PUNKE KLIPPENE FOR AT FÅ DEM AF VEJEN!" ], "sksp0031": [ - "OOH! LET'S USE THE CANNON TO BLOW THINGS UP!" + "ÅH! LAD OS BRUGE KANONEN TIL AT BRUGE TING!" ], "sksp0034": [ - "AWOOGA! AWOOGA! DIVE FOR THOSE ORBS, JAK, DIVE!" + "AWOOGA! AWOOGA! DYK EFTER DISSE ORBS, JAK, DYK!" ], "sksp0035": [ - "YEAH, SO WE GOT A PRECURSOR LAUNCHER HERE", - "BUT YOU AREN'T POWERED UP WITH THE BLUE STUFF. SO IT AIN'T GONNA HELP US!" + "JA, SÅ FÅR VI EN PRECURSOR LAUNCHE HER", + "MEN DU ER IKKE STYRET MED DE BLÅ TING. SÅ DET HJÆLPER OS IKKE!" ], "sksp0037": [ - "THOSE TOWER DOOHICKEYS SCATTERED ALL OVER THE JUNGLE MUST REDIRECT THE ECO BEAM.", - "LET'S GO FIDDLE WITH THEM!" + "DISSE TOWER DOOHICKEYS, DER ER SPREDT UD OVER HELE JUNGLEN, SKAL OMDIDIREGERE ECO BEAM.", + "LAD OS FILE MED DEM!" ], "sksp0038": [ - "HMM, IF BLUE ECO CAN BUILD A BRIDGE, THEN I BET IT'LL OPEN A DOOR!", - "LET'S GO BACK AND GET YOU JUICED UP AGAIN." + "HMM, HVIS BLUE ECO KAN BYGGE EN BRO, SÅ VÆDER JEG AT DET ÅBNER EN DØR!", + "LAD OS GÅ TILBAGE OG FÅ DIG OPP IGEN." ], "sksp0039": [ - "HEY, THERE'S LITTLE LIGHTNING MARKS ON THOSE POSTS", - "AND THERE'S LIGHTNING COMING OUT OF THAT VENT OVER THERE.", - "ARE YOU THINKING WHAT I'M THINKING?" + "HEJ, DER ER SMÅ LYN MÆRKER PÅ DISSE PLADER", + "OG DER KOMMER LYN UD AF DEN UDLUFTNING DER.", + "TÆNKER DU, HVAD JEG TÆNKER?" ], "sksp0040": [ - "LET'S GET UP ON THAT MACHINE AND BREAK THE MIRROR DIVERTING THE PRECURSOR BEAM!" + "LAD OS STÅ OP PÅ DEN MASKINE OG BRYDKE SPEJLET SOM AFLEDNING AF PRECURSOR-STRALLEN!" ], "sksp0041": [ - "WE NEED TO GET TO THE TOP OF THAT TOWER!" + "VI SKAL KOMME TIL TOPPEN AF DET TÅRNET!" ], "sksp0043": [ - "MAYBE WE SHOULD GO ROOT OUT THE FISHERMAN.", - "I HEARD HE WAS IN THE JUNGLE FISHING BY THE LOWER RIVER!" + "MÅSKE SKAL VI GÅ ROD UD FISKEREN.", + "JEG HØRTE HAN VAR I JUNGLEN OG FISKEDE VED DEN NEDRE EL!" ], "sksp0049": [ - "LINE UP THE BEAM BY POINTING IT AT THE NEXT TOWER!" + "RET BJÅLEN OP VED AT PEGE DEN MOD DET NÆSTE TÅRN!" ], "sksp0050": [ - "BREAK THE MIRROR, JAK!" + "KNÆK SPEJLET, JAK!" ], "sksp0051": [ - "GET THE BUGS, JAK! GET THE BUGS!" + "FÅ BUGS, JAK! FÅ BUGS!" ], "sksp0052": [ - "LET'S GO TO THE NEXT TOWER AND RECONNECT THE BEAM THERE!" + "LAD OS GÅ TIL DET NÆSTE TÅRN OG FORBIND BJÆLLEN DER GENOM!" ], "sksp0053": [ - "HEY! WE CAN FOLLOW THE BEAM TO FIND THE NEXT TOWER." + "HEJ! VI KAN FØLGE BJÅLEN FOR AT FINDE DET NÆSTE TÅRN." ], "sksp0054": [ - "WE NEED TO CHARGE YOU UP WITH THAT BLUE STUFF TO GET THIS OPEN!" + "VI SKAL LADE DIG OP MED DET BLÅ TING FOR AT FÅ DETTE ÅBNET!" ], "sksp0056": [ - "HEY! I SEE THE SCULPTOR'S MUSE!" + "HEJ! JEG SER SKULPTØRENS MUSE!" ], "sksp0059": [ - "THIS PLACE GIVES ME THE WILLIES!", - "LET'S KEEP YOU OUT OF THE OOZE, OKAY?" + "DETTE STED GIVER MIG WILLIES!", + "LAD OS HOLDE DIG UD AF OVET, OK?" ], "sksp0060": [ - "(WHIMPERS) THIS PLACE GIVES ME THE CREEPS!", - "AND TRUST ME, IT'S A WHOLE NEW EXPERIENCE", - "WHEN YOU'RE COVERED IN FUZZ!" + "(KLYNKER) DETTE STED GIVER MIG KRIM!", + "OG TRO MIG, DET ER EN HELT NY OPLEVELSE", + "NÅR DU ER DÆKKET I FUZZ!" ], "sksp0062": [ - "LET'S PLOW INTO THOSE BALLOON LURKERS AND SHRED 'EM!" + "LAD OS PLØE IND I DISSE BALLONLURKERE OG MASKEL DEM!" ], "sksp0063": [ - "I SAID \"SHRED THE LURKERS,\" JAK. NOT THE MINES!", - "RULE NUMBER ONE: ALWAYS AVOID THE MINES!" + "JEG SAGDE \"STRILL LURKERE,\" JAK. IKKE MINERNE!", + "REGEL NUMMER ET: UNDGÅ ALTID MINERNE!" ], "sksp0064": [ - "WATCH YOUR BACK! YOU REMEMBER WHAT HAPPENED THE LAST TIME WE WERE HERE." + "PAS PÅ! DU HUSKER HVAD SEG DER SIDSTE GANG VI VAR HER." ], "sksp0067": [ - "DON'T FALL INTO THE MIST BELOW US!", - "'CAUSE I DON'T THINK WE'LL MAKE IT BACK." + "FALD IKKE I TÅGEN UNDER OS!", + "FORDI JEG TROR IKKE, VI GJØR DET TILBAGE." ], "sksp0069": [ - "IT'S AN AMBUSH, JAK! IT'S AN AMBUSH!" + "DET ER ET BAGHOLDSANGREB, JAK! DET ER ET BAGHOLDSANGREB!" ], "sksp0070": [ - "JUMP, THEN DIVE ONTO THE TEETER-TOTTER." + "HOPP, DYK SÅ PÅ RYPEN." ], "sksp0071": [ "TAG DEN RØDE ECO!" @@ -2229,74 +2229,74 @@ "RØD ECO GØR DINE ANGREB STÆRKERE." ], "sksp0073": [ - "WE NEED BLUE ECO TO CHARGE THIS PLATFORM UP!" + "VI HAR BRUG FOR BLÅ ØKO FOR AT LADDE DENNE PLATFORM OP!" ], "sksp0076": [ - "JAK! HIT SOME JUMPS TO KEEP US OFF THE HOT GROUND." + "JAK! SLÅ NOGLE HOP FOR AT HOLDE OS FRA DEN VARME GRUND." ], "sksp0077": [ - "BALLOONS GOOD, BURNING HOT MAGMA BAD!" + "BALLONER GODE, BÆRENDE VARM MAGMA DÅRLIG!" ], "sksp0078": [ - "RIDE ON THE RAISED PRECURSOR STUFF TO KEEP US COOL." + "KØR PÅ DET HØJTE FORFØJENDE TING FOR AT HOLDE OS KØLE." ], "sksp0079": [ - "AHH! I'M GONNA DIE! I'M A COMING, GRANDPAP!", - "YOU HAVE TO GET THIS THING TO THE OTHER SIDE BEFORE IT OVERHEATS!" + "AHH! JEG SKAL DØ! JEG KOMMER, BEDSTEFAR!", + "DU SKAL FÅ DEN DENNE TING TIL DEN ANDEN SIDE, FØR DEN OVEROPHEDS!" ], "sksp0080": [ - "USE THE HOP-TURN TO STEER HARDER!" + "BRUG HUMLESVENDINGEN TIL AT STYRE HÅRDERE!" ], "sksp0081": [ "AHH! MÅSKE BURDE JEG STYRE!" ], "sksp0082": [ - "YOU ARE TRYING TO AVOID THOSE DARK ECO BOXES, RIGHT?" + "DU FORSØGER AT UNDGÅ DISSE MØRKE ØKOBOKSER, IKKE?" ], "sksp0083": [ - "OOH! SEE IF WE CAN CATCH AIR OFF THOSE LURKERS!" + "ÅH! SE OM VI KAN FÅ LUFT FRA DE LURKERE!" ], "sksp0084": [ "FOR TÆT, FOR TÆT!" ], "sksp0085": [ - "WHOA! THIS BABY'S GETTING WAY TOO HOT!" + "WHOA! DENNE BABY BLIR ALT FOR VARMT!" ], "sksp0086": [ - "A FEW MORE SECONDS AND WE'RE FRIED FLUT-FLUT!" + "ET PAR SEKUNDER MERE OG VI ER STEGT FLUT-FLUT!" ], "sksp0087": [ - "HIT THOSE BALLOONS TO COOL OFF!" + "SLAGT DISSE BALLONER FOR AT KØLE AF!" ], "sksp0088": [ - "HERE COMES ANOTHER BALLOON!" + "HER KOMMER EN ANDEN BALLON!" ], "sksp0089": [ "JEG VILLE ØNSKE JEG SOV OVER MIG I MORGES!" ], "sksp0090": [ - "YOU MISSED A BALLOON! WE NEED THOSE OR WE'RE COOKED!" + "DU GAVNDE EN BALLON! VI HAR BRUG FOR DEM, ELLER ER VI TILBEREDTE!" ], "sksp0091": [ - "THIS PUPPY'S GETTING TOO HOT!" + "DEN HVALP BLIR FOR VARM!" ], "sksp0092": [ - "DO YOU SMELL SOMETHING BURNING?!" + "LUGTER DU NOGET BÆNDER?!" ], "sksp0093": [ - "I THINK MY TAIL'S ON FIRE!" + "JEG TROR, MIN HALE BÆRKER!" ], "sksp0094": [ - "SHE'S GONNA BLOW!" + "HUN BLÆSER!" ], "sksp0095": [ - "WAHOO! WE MADE IT!" + "WAHOO! VI KLAREDE DET!" ], "sksp0096": [ - "THERE'S SCOUT FLIES OUT HERE, TOO!" + "DER ER OGSÅ SPEJDERFLUER UDE!" ], "sksp009a": [ - "HA HA! WE SHOWED HIM A THING OR TWO." + "HA HA! VI VISTE HAM EN TING ELLER TO." ], "sksp009b": [ "SÅDAN, FLERE GLOBER!" @@ -2311,22 +2311,22 @@ "WA-HOO!" ], "sksp009f": [ - "TAG DEN, TAG DEN! HA HA HA!" + "DAG DEN, DAG DEN! HA HA HA!" ], "sksp009g": [ "LIGE BAG DIG, JAK!" ], "sksp009i": [ - "DID WE FIND ALL THE SCOUT FLIES IN THIS AREA?" + "FANDT VI ALLE SPEJDERFLUER I DETTE OMRÅDE?" ], "sksp009j": [ - "HEY! IT LOOKS LIKE SCOUT FLIES ARE ALWAYS IN RED BOXES." + "HEJ! DET SER UD TIL AT SPEJDERFLUER ALTID ER I RØDE ÆSKER." ], "sksp009k": [ - "ALRIGHT! YOU FOUND ALL THE SCOUT FLIES IN THIS AREA!" + "I ORDEN! DU FANDT ALLE SPEJDERFLUER I DETTE OMRÅDE!" ], "sksp0109": [ - "WOO! WE BEAT THE RECORD TIME!" + "WOO! VI SLÅR REKORDTID!" ], "sksp0110": [ "JEG HAR SAGT DET FØR, JEG SIGER DET IGEN...", @@ -2339,17 +2339,17 @@ "LAD OS FÅ VORES KRAFTCELLE FRA GEOLOGEN." ], "sksp0113": [ - "THOSE MUST BE THE INFESTED PLANTS OL' LOG-NOGGIN WAS TALKIN' ABOUT." + "DET MÅ VÆRE DE ANGREBNE PLANTER, OL' LOG-NOGGIN TALTE OM." ], "sksp0114": [ - "WE HAVE TO USE GREEN ECO TO CURE THOSE PLANTS." + "VI SKAL BRUGE GRØN ØKO FOR AT KURE DISSE PLANTER." ], "sksp0115": [ - "JAK, DRIVE THROUGH THE GREEN ECO VENT." + "JAK, KØR GENNEM DEN GRØNNE ECO VENT." ], "sksp0116": [ - "THAT'S ONE OF THOSE FLYING LURKERS!", - "HE MIGHT HAVE A POWER CELL!" + "DET ER EN AF DISSE FLYVENDE LURKERE!", + "HAN HAR MÅSKE EN KRAFTCELLE!" ], "sksp0117": [ "DER ER MULDVARPESKUDDET!" @@ -2364,7 +2364,7 @@ "HURTIGT! DER ER DEN NÆSTE RING!" ], "sksp0121": [ - "QUICK! YOU'VE GOTTA FLY THROUGH EACH RING BEFORE THEY TURN OFF!" + "HURTIG! DU SKAL FLYGE GJENNOM HVER RING, FØR DE SLUKKER!" ], "sksp0122": [ "HEY! DET GRÆS SAGTNER OS..." @@ -2397,34 +2397,34 @@ "HEY! DET LIGNER AT DU KUNNE STYRTDYKKE NED PÅ DE FYRE!" ], "sksp0132": [ - "EE-EE! WHOA! WHO-AH! WHO-AHH!" + "EE-EE! WHOA! HVEM-AH! HVEM-AHH!" ], "sksp0133": [ - "I'LL BET WE CAN GET ALL OF THOSE THINGS CHARGED AT ONCE!" + "JEG VÆDER AT VI KAN FÅ ALLE DISSE TING OPPLADT PÅ EN GANG!" ], "sksp0134": [ - "HOW 'BOUT WE TAKE IT EASY ON THOSE HOT PIPES?!" + "HVORDAN TAGER VI DET ROLIGT PÅ DE VARME RØR?!" ], "sksp0135": [ - "THAT WATER LOOKS DANGEROUS WHEN IT CHANGES COLOR!" + "AT VAND SER FARLIGT UD, NÅR DET SKIFTER FARVE!" ], "sksp0136": [ - "YOU GOTTA GET OUT OF THE WATER BEFORE IT CHANGES COLOR!" + "DU SKAL KOMME UD AF VANDET, FØR DET SKIFTER FARVE!" ], "sksp0137": [ - "I BET WE COULD SHOOT THOSE BOULDERS IF WE'RE CHARGED UP WITH YELLOW ECO." + "JEG VÆDDER PÅ, AT VI KAN SKYDE DISSE BOLDERS, HVIS VI ER OPLADET MED GUL ØKO." ], "sksp0138": [ - "WE SHOULD SHOOT THOSE BIG BOULDERS HOLDING THE TETHER." + "VI BØR SKYDE DE STORE KÆNSTER, SOM HOLDER SAMMEN." ], "sksp0139": [ - "MAYBE WE SHOULD HELP THAT WEIRDO FIND HIS PET." + "MÅSKE SKAL VI HJÆLPE AT WEIRDO FINDER SIT KÆRET." ], "sksp0140": [ - "THE FLUT-FLUT CAN GLIDE FARTHER IF SHE JUMPS AGAIN IN THE AIR!" + "FLUT-FLUTTEN KAN GLIDE LÆNGERE, HVIS HUN HOPPER IGEN I LUFTEN!" ], "sksp0141": [ - "DON'T TOUCH THAT BLACK HOT TAR, OR YOU'LL GET HURT!" + "RØR IKKE DEN SORT VARME TJÆRE, ELLER BLIVER DU SÅDET!" ], "sksp0142": [ "VANDET ER SIKKERT AT VENTE I." @@ -2483,7 +2483,7 @@ "DET LUFTSKIB SIDDER KNAP NOK FAST! LAD OS FINDE DEN SIDSTE FORTØJRING!" ], "sksp0160": [ - "HEY! DER ER EN FLUT-FLUT!" + "HEJ! HAN EN FLØDSMIDDEL!" ], "sksp0161": [ "JEG HADER ROTTER! OG JEG ER NÆRMEST EN SELV." @@ -2523,7 +2523,7 @@ "DER ER EN AF LURERNE!" ], "sksp0310": [ - "FANG DEM, JAK!" + "FANG DEN, JAK!" ], "sksp0311": [ "VI PASSEREDE EN!" @@ -2532,10 +2532,10 @@ "AH, EN AF LURERNE PASSEREDE OS!" ], "sksp0313": [ - "DE ER LANGT FORAN!" + "DE ER LANGT FORUD!" ], "sksp0314": [ - "JA! VI ER FORREST!" + "JA! VI ER FORAN!" ], "sksp0315": [ "HURTIGERE, JAK, HURTIGERE!" @@ -2547,7 +2547,7 @@ "HÆNG PÅ!" ], "sksp0318": [ - "JAAHH!!" + "YAHHH!!" ], "sksp0319": [ "DET BLIVER TÆT!" @@ -2727,7 +2727,7 @@ "TROR DU STADIG GOL VIL SKIFTE MIG TILBAGE?" ], "sksp0392": [ - "SÅ DETTE ER GOL OG MAIAS FØSTNING. FIN OG HYGGELIG." + "SÅ DETTE ER BØRNNE AF GOL OG MAIA. DEJLIGT OG BEHAGELIGT." ], "sksp0393": [ "LAND PÅ DEN NÆSTE AFSKYDER!" @@ -2811,7 +2811,7 @@ "SLÅ DE PÆLE OP NEDEFRA!" ], "sksp0444": [ - "VI VENTER. HALLO?" + "VI VENTER. HEJ?" ], "sksp0449": [ "TRYK START FOR AT SPILLE." @@ -2826,7 +2826,7 @@ "OKAY, SES SENERE." ], "sksp0455": [ - "DOG, HVEM ER ALLE DE FOLK? " + "HVEM ER MEN ALLE DISSE MENNESKER?" ], "sksp0466": [ "JEG VAR GOD. IKKE SANDT, TØSER?" @@ -2843,14 +2843,14 @@ "BLUE SAGE": "BLÅ VISMAND", "DAXTER": "DAXTER", "FARMER": "LANDMAND", - "FISHERMAN": "FISKER", - "FLUT-FLUT": "FLUT-FLUT", - "GAMBLER": "GAMBLER", + "FISHERMAN": "FIKER", + "FLUT-FLUT": "FLODFLØDELSE", + "GAMBLER": "SPILLER", "GEOLOGIST": "GEOLOG", "GOL": "GOL", "GORDY": "GORDY", - "JAK": "JAK", - "JAK'S UNCLE": "JAKS ONKEL", + "JAK": "HVORDAN", + "JAK'S UNCLE": "ONKEL JAKS", "KEIRA": "KEIRA", "MAIA": "MAIA", "MAYOR": "BORGMESTER", diff --git a/game/assets/jak1/subtitle/subtitle_lines_hu-HU.json b/game/assets/jak1/subtitle/subtitle_lines_hu-HU.json index e003aab677..757bb72bf7 100644 --- a/game/assets/jak1/subtitle/subtitle_lines_hu-HU.json +++ b/game/assets/jak1/subtitle/subtitle_lines_hu-HU.json @@ -1,1057 +1,1057 @@ { "cutscenes": { "assistant-firecanyon-resolution": [ - "GREAT! YOU HAVE THE 20 CELLS NEEDED TO POWER MY HEAT SHIELD!", - "NOW BE CAREFUL, THE SHIELD WILL ONLY PROTECT YOUR ZOOMER", - "TILL IT REACHES 500 DEGREES, SO TRY TO KEEP HER COOL.", - "FLYING OVER OPEN LAVA WILL DEFINITELY HEAT YOU UP FAST.", - "HIT 500 DEGREES, AND IT'S OVER.", - "OVER?! LIKE BURNING MOLTEN METAL OVER?!", - "THE FIRE CANYON GETS PRETTY HOT, SO KEEP A LOOK OUT FOR JUMPS", - "TO KEEP YOU OFF THE HOT GROUND.", - "I'VE ALSO RELEASED SEVERAL BLUE COOLING BALLOONS YOU CAN USE TO DROP", - "THE SHIELD'S TEMPERATURE QUICKLY.", - "OH! AND WHEN YOU GET ACROSS, DON'T FORGET TO ACTIVATE", - "THE TELEPORT GATE IN THE BLUE SAGE'S LAB.", - "THEN WE'LL BE ABLE TO TELEPORT OVER AND MEET YOU!", - "GOOD LUCK!" + "NAGY! MEGVAN AZ A 20 CELLÉ, HOGY A HŐPAJZSOM MŰKÖDTETÉSÉHEZ SZÜKSÉGES!", + "MOST LEGYEN VIGYÁZAT, A PAJZS CSAK A ZOOMERÉT VÉDI", + "AMÍG EL NEM ÉRI AZ 500 FOKOT, ÍGY PRÓBÁLJON HÍVET TARTNI.", + "A NYITOTT LÁVA FELÉ REPÜLÉS BIZTOSAN GYORSAN FEL FELEL.", + "ELÜLT 500 FOKOT, ÉS VÉGE.", + "FELETT?! MINT ELÉGETNI OLVADT FÉMET?!", + "A TŰZKANYON ELÉG FORRÓSÍT, ÍGY VIGYÁZZON AZ UGRÁSOKRA", + "HOGY TARTSON KI A FORRÓ FÖLDTŐL.", + "KIADTAM TÖBB KÉK HŰTŐLÉFÉT IS, AMI HASZNÁLATA LEHETSZ", + "A PAJZS HŐMÉRSÉKLETE GYORSAN.", + "Ó! ÉS AMIKOR ÁTVÉSZ, NE FELEJTSÜK EL AKTIVÁLNI", + "A TELEPORT KAPU A KÉK BÍLYA LABORÁBAN.", + "AKKOR TUDUNK OTTELEPORTÁLNI ÉS TALÁLKOZNI!", + "SOK SZERENCSÉT!" ], "assistant-introduction-blue-eco-switch": [ - "HEY BABY. WHAT DO YOU SAY YOU AND I GO CRUISIN' ON THIS A-GRAV ZOOMER?", - "RULE NUMBER ONE: I DON'T DATE ANIMALS.", - "OH YOU DON'T KNOW WHAT YOU'RE MISSING, HE HEH.", - "LISTEN, IF YOU NEED SOMETHING TO KEEP YOU BUSY, MY FATHER ALWAYS TALKED", - "ABOUT AN ANCIENT PRECURSOR PIPELINE HIDDEN DEEP UNDERGROUND.", - "SOME OF THESE PIPES END IN VENTS FROM WHICH ECO FLOWS FREELY,", - "AND SOME HAVE BEEN CAPPED OFF SO THAT THE ECO IS SEALED BACK.", - "THERE MUST BE A WAY TO TURN THE CAPPED VENTS ON.", - "I TRACED PART OF THE PIPELINE BACK TO THE FORBIDDEN TEMPLE.", - "MAYBE YOU SHOULD LOOK THERE FOR SOME TYPE OF SWITCH." + "HÉ BÉBI. MIT MONDSZ ÖN ÉS ÉN AZ A-GRAV ZOOMEREN KURIZÁLJUK?", + "ELSŐ SZABÁLY: NEM RAJZOK ÁLLATOKKAL.", + "Ó, TE NEM TUDOD, MI HIÁNYZOTT, HE HH.", + "FIGYELJ, HA VALAMI KELL, HOGY ELFOGLALJA, APÁM MINDIG BESZÉLTE", + "A FÖLD MÉLYEN REJTETT ŐSI ELŐZŐCSŐVEZETŐRŐL.", + "E CSÖVEK NÉMELYIKE OLYAN SZELLŐZŐNYÍLÁSOKBAN VÉGZŐDIK, AMELYEKBŐL SZABADON ÁRAMLIK ECO,", + "ÉS NÉHÁNY LETÖLTEK, HOGY AZ ÖKO VISSZA PLOMÍTJA.", + "MÓDSZERT KELL BIZTOSÍTNI A SUPLA SZELLŐZŐKÉPEKET.", + "A CSŐVEZET RÉSZÉT VISSZA NYOMTAM A TILTOTT TEMPLOMBA.", + "TALÁN OTT KELL KERESNI VALAMILYEN TÍPUSÚ KAPCSOLÓT." ], "assistant-introduction-race-bike": [ - "HEY BABY, WHAT'CHA WORKIN' ON?", - "BE CAREFUL WITH THAT! I'M TRYING TO FIGURE HOW TO TRANSPORT THE ZOOMER", - "USING THE TRANS-PADS THE PRECURSORS LEFT ALL OVER THE WORLD.", - "IF YOU COME ACROSS ONE OF THESE PADS I CAN LOCK ON TO YOUR COMMUNICATOR'S LOCATION", - "AND SEND YOU THE ZOOMER!", - "KEEP AN EYE OUT FOR A TRANS-PAD WHEN YOU EXPLORE MISTY ISLAND, AND WHEREVER ELSE YOU GO!" + "HÉ BÉBI, MI VAN?", + "EZZEL VIGYÁZZ! PRÓBÁLOM KITALÁLNI, HOGYAN KELL SZÁLLÍTNI A ZOOMERT", + "A TRANS-PADS HASZNÁLATÁVAL AZ ELŐZETŐK AZ EGÉSZ VILÁGBAN ELHAGYTAK.", + "HA AZ EGYIK PÁRNÁT KERÜL EL, BIZTOSÍTHATOK A KOMMUNIKÁTOR HELYÉRE", + "ÉS KÜLDJÖN A ZOOMERT!", + "HAGYJON SZEMET A TRANS-PAD-RE, AMIKOR FEDEZD FEL A MISTY-SZIGETET, ÉS HOGY MÁS HOGY MÉR!" ], "assistant-lavatube-end-resolution": [ - "HEY! WHERE'S OL' SHORT, GREEN AND WRINKLY?", - "THIS IS TERRIBLE! FATHER IS MISSING!", - "I THINK GOL AND MAIA MAY HAVE KIDNAPPED HIM AS WELL!", - "RELAX, SWEETHEART. I GOT EVERYTHING UNDER CONTROL.", - "UNDER CONTROL?!", - "LURKER ARMIES CONTINUE TO GROW ACROSS THE LAND,", - "THE SAGES HAVE BEEN KIDNAPPED,", - "GOL AND MAIA HAVE GATHERED ENOUGH ECO", - "TO COMPLETE THEIR TERRIBLE PLAN,", - "AND TO STOP THEM, YOU'RE GOING TO HAVE TO", - "FIGHT YOUR WAY THROUGH THEIR CITADEL!", - "UH... YEAH. THAT ABOUT, UH... SUMS IT UP.", - "YOU'VE GOT TO RESCUE MY FATHER BEFORE IT'S TOO LATE!", - "AND JAK...", - "BE CAREFUL.", - "YEAH. WE WILL BE!" + "HÉ! HOL VAN RÖVID, ZÖLD ÉS RÁNCOS?", + "EZ SZÖRNYŰ! APA HIÁNYZIK!", + "SZERINTEM LEHET GOL ÉS MAIA ŐT IS ELRABOLHATTA!", + "NYUGULJ, ÉDES. MINDENT IRÁNYÍTÁS ALATT VETTEM.", + "KORDÁBAN TARTVA?!", + "A LURKER-SEREGEK TOVÁBBI GYŰJTENEK A FÖLDÖN,", + "ELRABOLTÁK A BöLCSEKET,", + "GOL ÉS MAIA ELÉG ÖKOZOTT", + "HOGY VÉGREHAJTJÁK SZÖRNYES TERVÜKET,", + "ÉS HOGY MEGÁLLÍTSA ŐKET, MEG KELL", + "KÍVÜLJÜK MEG AZ ÚTJÁT CITADELLUKON!", + "UH... IGEN. AZT, HOGY... ÖSSZEFOGLALJA.", + "MEG KELL MENNI APÁMAT, MIELŐTT TÚL KÉSŐ LESZ!", + "ÉS HOGYAN...", + "LÉGY ÓVATOS.", + "IGEN. MI LESZÜNK!" ], "assistant-lavatube-start-resolution": [ - "HA HA! ALL RIGHT!", - "WITH THESE ADDITIONAL POWER CELLS, I SHOULD BE ABLE TO SUPPLY THE HEAT SHIELD", - "WITH ENOUGH POWER TO STAND UP TO THIS LAVA.", - "BUT THE SHIELD STILL HAS A LIMIT.", - "IT WILL NOW WITHSTAND TEMPERATURES UP TO 800 DEGREES, BUT NO MORE.", - "SO KEEP AN EYE ON YOUR GAUGE.", - "I DON'T WANNA THINK ABOUT WHAT THOSE TEMPERATURES WOULD DO TO YOUR ZOOMER", - "IF THE SHIELD GIVES OUT.", - "YEAH, THE HEAT...", - "WHAT? THE ZOOMER? HEY! WHAT ABOUT US?!", - "DON'T YOU THINK WE COULD LOOK FOR A SAFER ROUTE TO GOL'S CITADEL?", - "LOOK, I'VE RELEASED MORE COOLING BALLOONS INTO THE TUBE.", - "SO YOU CAN USE THEM TO KEEP THE TEMPERATURE DOWN.", - "AND DON'T FORGET TO ACTIVATE THE TELEPORT GATE IN THE YELLOW SAGE'S LAB.", - "WE'RE COUNTING ON YOU." + "HA HA! RENDBEN!", + "EZEKKEL A KIEGÉSZÍTŐ TELJESÍTMÉNYELEMEKKEL KÉPEN KÉPESEN ELLÁTANI A HŐPAJZSOT", + "ELÉG ERŐVEL, HOGY ELÁLLJA EZT A LÁVÁT.", + "DE A PAJZSNAK MÉG VAN HATÁR.", + "MOST 800 FOKIG TARTJA EL, DE TÖBBET NEM.", + "TARTSA SZEMET A MÉRŐJÉN.", + "NEM AKAROK ARRA GONDOLNI, MIT TENNEK EZEK A HŐMÉRSÉKLETEK A ZOOMERÉVEL", + "HA A PAJZS KIADJA.", + "IGEN, A HŐ...", + "MIT? A ZOOMER? HÉ! MI LESZ VELÜNK?!", + "NEM GONDOLJA, HOGY KERESÜNK BIZTONSÁGOSABB ÚTVONALT GOL CITADELLÁBA?", + "NÉZD, TÖBB HŰTŐ LÉGGöMBöT ENGEDTEM A CSŐBE.", + "ÍGY HASZNÁLHATJA A HŐMÉRSÉKLET ALACSONY MENTESÍTÉSÉHEZ.", + "ÉS NE FELEJTSE EL AKTIVÁLNI A TELEPORT KAPUT A SÁRGA BÍLYA LABORÁN.", + "SZÁMÍTUNK RÁD." ], "assistant-reminder-1-blue-eco-switch": [ - "I'M SURE IF YOU LOOKED INSIDE THE PRECURSOR FORBIDDEN TEMPLE", - "YOU'LL FIND A WAY TO TURN ON THAT CAPPED BLUE ECO VENT ON SENTINEL BEACH." + "BIZTOS, HA AZ ELŐZŐ TILTOTT TEMPLOMBA BEJELENZETT", + "MÓDSZERT MEGTALÁLHAT, HOGY BEKAPCSOLHATJA AZT A FELVÉTELES KÉK ÖKOSZELLŐZŐT A SENTINEL STRANDON." ], "assistant-reminder-1-generic": [ - "HEY GUYS! KEEP COLLECTING POWER CELLS", - "THEY'RE THE KEY TO CONTINUING OUR JOURNEY NORTH." + "HÉ SRÁCOK! TOVÁBBRA GYŰJJÜK AZ ERŐCELLÁKAT", + "ŐK A KULCSA AZ ÉSZAKI UTÁNK FOLYTATÁSÁHOZ." ], "assistant-reminder-1-race-bike": [ - "I'VE DEFINITELY FIGURED OUT HOW TO USE THE TRANS-PADS.", - "NOW GO TO MISTY ISLAND AND I'LL SEND THE ZOOMER OVER TO YOU." + "BIZTOSAN KITALÁLTAM, HOGYAN HASZNÁLJUK A TRANS-PADS-EKET.", + "MOST MENJEN A MISTY SZIGETRE, ÉS ELKÜLDÖM A ZOOMERT NEKED." ], "assistant-village2-introduction": [ - "WHOA!", - "I DON'T THINK I'LL EVER GET USED TO THAT TELEPORTER TINGLING SENSATION.", - "HEY!", - "IT LOOKS LIKE THE BLUE SAGE THREW A PARTY.", - "OH MY! ROCK VILLAGE IS ON FIRE!", - "ONE HECK OF A PARTY.", - "NO, NO! I MEAN ROCK VILLAGE IS BEING BOMBARDED WITH FLAMING BOULDERS!", - "OH! AND IT LOOKS LIKE THE BLUE SAGE IS WORKING ON A LEVITATION MACHINE TO MOVE THEM.", - "ASSUMING IT'S OPERATIONAL, WE'RE GONNA NEED POWER CELLS TO FUEL IT.", - "I GUESS YOU TWO ARE GOING TO HAVE TO FIND SOME MORE.", - "WE'D BETTER TAKE A LOOK AT HIS NOTES.", - "JAK, GO CHECK ON THE VILLAGERS, THEN COME BACK AND GIVE US AN UPDATE.", - "AND TAKE THE FURBALL WITH YOU!" + "HÚ!", + "SZERINTEM SOHA NEM SZOKTAK MEG AZT A TELEPORTÁLÓS BIZSERŐ ÉRZÉST.", + "HÉ!", + "ÚGY ÚGY KÜLÖN, HOGY A KÉK ZSÁLYA BULT RENDELT.", + "JAJ NEKEM! A ROCK FALU ÉG!", + "EGY SZÉP BULI.", + "NEM NEM! ÚGY ÚGY ÉRTEM, LÁNGÓ KÖVEKKEL BOMBÁZÁLJÁK A ROCK VILLAGE-T!", + "Ó! ÉS ÚGY ÚGY ÚGY KÜLÖN, HOGY A KÉK ZSÁLYA EGY LEVITÁCIÓS GÉPEN MŰKÖDIK, HOGY MOZGATJA ŐKET.", + "FELTÉTELEZVE, HOGY MŰKÖDIK, TELJESÍTMÉNYELEMEKRE KELL SZÜKSÉGÜNK A TÜZELŐHOZ.", + "SZERINTEM KETTŐTöKNEK TÖBBET KELL TALÁLNI.", + "JOBBAN NÉZÜNK A JEGYZETEIBA.", + "JAK, MENJ EL, NÉZZE MEG A FALUKKAT, AZTÁN GYERJ VISSZA, ÉS ADJ FRISSÍTÉST.", + "ÉS VIDD MEG A FURBALLT!" ], "assistant-village2-introduction-flutflut": [ - "BACK AGAIN, BOYS?", - "\"BOY\"?", - "HEY BABE, I'M A FULL-GROWN...", + "ÚJRA, FIÚK?", + "\"FIÚ\"?", + "HÉ KICSIM, KIFEJTETT VAGYOK...", "AH...", - "SOMETHIN'... SOMETHIN' FUZZY.", - "OH, GUESS WHAT? WITH PERMISSION FROM OUR VILLAGE BIRDWATCHER,", - "I'VE OUTFITTED THE BABY FLUT-FLUT WITH A RIDING SADDLE.", - "IT APPEARS THERE'S A PRECURSOR TRANS-PAD IN THE BOGGY SWAMP.", - "IF YOU CAN FIND IT, I'LL SEND YOU THE FLUT-FLUT IN FULL RIDING REGALIA.", - "HER LONG JUMP MIGHT COME IN HANDY WHEN YOU'RE CROSSING THE TAR." + "VALAMI... VALAMI FUZZY.", + "Ó, TALÁLD MIT? FALU MADÁRVIZSGÁNK ENGEDÉLYÉVEL,", + "A BABA FLUT-FLUTOT LOVAGLÓNYEREGVEL SZERELTEM.", + "LÁTSZIK, VAN EGY ELŐZETES TRANSZ-PAD A LÁCSOS MOCSÁRBAN.", + "HA MEGTALÁLJA, ELKÜLDÖM A FLUT-FLUT TELJES REGALIA-BAN.", + "TÁSZUGRÁSA HASZNOS LEHET, AMIKOR ÁTLÉSZ A KÁTRÁN." ], "assistant-village2-introduction-robbers": [ - "HEY, YOU TWO!", - "I KNOW WHERE YOU CAN FIND ANOTHER POWER CELL!", - "ACCORDING TO HIS NOTES,", - "A COUPLE OF DAYS AGO FLYING LURKERS STOLE ONE FROM THE BLUE SAGE,", - "AND FLEW OFF INTO THE PRECURSOR BASIN.", - "I'LL BET YOU COULD RUN THOSE LURKERS DOWN WITH YOUR ZOOMER", - "UNTIL YOU FIND THE ONE WITH THE POWER CELL.", - "YOU'LL FIND THE ZOOMER ON THE TRANS-PAD NEAR THE ENTRANCE TO THE PRECURSOR BASIN." + "HÉ, TI KETTŐK!", + "TUDOM, HOL TALÁLHATSZ EGY MÁSIK TELJESÍTMÉNYCELT!", + "JEGYZETE SZERINT", + "PÁR NAPJA A FLYING LURKERS ELLOPTAK EGYET A KÉK ZSÁLYÁBÓL,", + "ÉS ELREPÜLT AZ ELŐADÓBA.", + "FOGADNI MERNÉK, HOGY AZOKAT AZOKAT A BURKOLÓK LEHETSÉGESEK A ZOOMERÉVEL", + "AMÍG MEGTALÁLJA A TELJESÍTMÉNYCELLÁT.", + "A ZOOMERT AZ ELŐZETES MEDENCE BEJÁTÁSA KÖZELÉBEN TALÁLHATJA A TRANSZ-PADON." ], "assistant-village2-introduction-room": [ - "APPARENTLY THE PRECURSOR STRUCTURE JUST OFF THE COAST", - "LEADS TO AN UNDERWATER LOST CITY.", - "THE BLUE SAGE HAS BEEN TRYING TO FIGURE OUT", - "HOW HE CAN BRING ONE OF THE CHAMBERS TO THE SURFACE.", - "BUT HE WAS NEVER SUCCESSFUL.", - "YOU SHOULD CHECK IT OUT!", - "UH... AREN'T THERE A LOT OF, UM...", - "LURKER SHARKS IN THAT WATER?", - "WHY? ARE YOU SCARED?", - "ME? OF COURSE NOT!", - "JUST LOOKIN' OUT FOR JAK HERE!", - "YOU, UH, HEH...", - "YOU KNOW WHAT A CHICKEN HE CAN BE.", - "WELL, IF YOU SWIM OUT OVER THE CORAL REEF, I DOUBT THE LURKER SHARKS WILL BOTHER YOU.", - "THEY DON'T LIKE SHALLOW WATER." + "ÚTMUTATÓAN AZ ELŐZETES SZERKEZETE KÖZVETLENÜL A PART KÍVÜL", + "EGY VÍZALATI ELVESZTETT VÁROSBA VEZET.", + "A KÉK ZSÁLYA MEGPRÓBÁLT KITALÁLNI", + "HOGYAN HOGY FELÜLETRE HOZHATJA AZ EGYIK KAMÁRÁT.", + "DE SOSEM VOLT SIKERES.", + "MEG KELL NÉZNI!", + "UH... NINCS SOK, UM...", + "LURKER CÁPÁK A VÍZBEN?", + "MIÉRT? FÉLSZ?", + "NEKEM? TERMÉSZETESEN NEM!", + "CSAK VIGYÁZZ ITT JAK-RA!", + "TE, UH, HH...", + "TUDOD, MILYEN CSIRKE LEHET.", + "NOS, HA KIÚSZOD A KORALLZATOTON, KÉTLENEM AZT, HOGY ZAVARNÁLNAK TÉGED.", + "NEM SZERETIK A SEKÉK VÍZET." ], "assistant-village2-reminder-1-flutflut": [ - "I'M SURE THE FLUT-FLUT COULD BE OF USE TO YOU IN THE SWAMP.", - "FIND THE TRANS-PAD AND I'LL TELEPORT HER TO YOU." + "BIZTOS, A FLUT-FLUT HASZNOD LEHET A MOCSÁRBAN.", + "KERESSE MEG A TRANS-PAD-T, ÉS TELEPORTÁLOM HOZZÁAD." ], "assistant-village2-reminder-1-robbers": [ - "I'LL TELEPORT YOUR ZOOMER TO YOU BY THE PRECURSOR BASIN,", - "SO YOU CAN CHASE DOWN THOSE FLYING LURKERS WE WERE TALKING ABOUT." + "TELEPORTÁLOM AZ ÖN ZOOMERÉT AZ ELŐZETES MEDEZŐBEN,", + "ÍGY LEHAJTHATJA AZOKAT A REPÜLŐ LURKOLÓKAT, AKIRŐL BESZÉLTÜNK." ], "assistant-village2-reminder-1-room": [ - "DID YOU SWIM OUT TO THE LOST PRECURSOR CITY YET?", - "YOU SHOULD REALLY TRY AND RAISE THE ROOM THE BLUE SAGE WAS AFTER." + "KIÚSZTOTT MÉG AZ ELVEZETT ELŐVÁROSBA?", + "TÉNYLEG PRÓBÁLNI KELL, ÉS MEGEMELNI A SZOBÁT, MI UTÁNA A KÉK ZSÁLYA VOLT." ], "assistant-village2-resolution": [ - "GREAT, YOU HAVE THE CELLS FOR THE MACHINE!", - "THEY OUGHT TO PROVIDE ENOUGH POWER TO LIFT THAT BOULDER.", - "THERE WE GO!", - "NOW, BE CAREFUL FACING THAT MONSTER LURKER AT THE TOP.", - "WAIT! UH...", - "I'LL STAY HERE AND PROTECT KEIRA!", - "JAK, I THINK YOU'RE READY TO HANDLE THAT MONSTER WITHOUT ME.", - "OH, REALLY HEROIC OF YOU." + "NAGYON, MEGVAN A CELLÁK A GÉPHEZ!", + "ELÉG ERŐT KELL BIZTOSÍTANI A SZIKLA MEGEMELÉHEZ.", + "ITT HAJTUNK!", + "MOST LEGYEN FIGYELMEZTETÉS A TETEJÉN SZÁRMAZÓ SZÖRNYELVEL.", + "VÁRJON! UH...", + "ITT MARADOK ÉS VÉDEM KEIRA!", + "JAK, SZERINTEM KÉSZEN VAGY KEZELNI EZT A SZÖRNYET NÉLKÜLEM.", + "Ó, IGAZÁN HŐSSÉGES TŐLED." ], "assistant-village3-reminder": [ - "HEY GUYS! KEEP COLLECTING POWER CELLS.", - "THEY'RE THE KEY TO CONTINUING OUR JOURNEY NORTH." + "HÉ SRÁCOK! TOVÁBBRA GYŰJJÜK AZ ERŐCELLÁKAT.", + "ŐK A KULCSA AZ ÉSZAKI UTÁNK FOLYTATÁSÁHOZ." ], "billy-accept": [ - "GOOD! THOSE RATS WILL BE BACK ANYTIME.", - "SHOOT ALL THEM RATS, AND KEEP 'EM", - "FROM EATING AT LEAST ONE OF THEM SNACKS." + "JÓ! AZOK A PATKÁNYOK BÁRMIKOR VISSZAJÖNEK.", + "LŐJD MEG MINDEN PATKÁNYOT, ÉS TARTSA MEG ŐKET", + "AZTÓL, HOGY LEGALÁBB EGY NAGYON EGYÜK." ], "billy-introduction": [ - "HOWDY, FRIENDS! ENJOYIN' MY BEAUTIFUL SWAMP?", - "I OWN THESE HERE PARTS.", - "EVERYTHING THAT DOESN'T SINK INTO THE MUD, THAT IS! HA HA HA...", - "JUDGING BY THE SMELL, I'D WAGER YOUR", - "BATHTUB SANK IN THE MUD LONG AGO.", - "WHAT'S A BATHTUB?", - "ANYWAY I GOT BIGGER PROBLEMS NOW...", - "SEEMS SOME NASTY LURKER VARMINTS ARE GROUSIN' ABOUTS,", - "SNATCHIN' EVERYTHING THEY CAN GET THEIR GRUBBY LITTLE PAWS ON.", - "AND SCARIN' AWAY MY PET HIPHOG, FARTHY.", - "HE'S BEEN MISSIN' FOR NIGH ON TO A COON'S AGE.", - "I'VE BEEN PUTTIN' OUT HIS FAVORITE SNACK,", - "BUT THOSE ORNERY SWAMP RATS KEEP STEALIN' EM!", - "IF YOU COULD KEEP THOSE PESKY CRITTERS AWAY LONG ENOUGH,", - "I JUST KNOW FARTHY WOULD SMELL THEM VITTLES AND COME BACK!", - "WILL YA HELP ME OUT?" + "ÜDV, BARÁTOK! ÉLVEZD A GYÖNYÖRŰ MOCSÁROMAT?", + "EZEKET AZ ITT ALKALMAZOTT ALKATRÉSZEK EZEK.", + "MINDEN, AMI NEM SZÜLYIK BE A SÁRBA, AZ! HA HA HA...", + "A SZAGÁBÓL ÍTÉLVE, TÉGET TENNÉK", + "A KÁD RÉG ELSÜLLYEDT A SÁRBAN.", + "MI AZ A KÁD?", + "AMÚGY MOST NAGYOBB PROBLÉMÁK VANAK...", + "ÚGY TŰNIK, HOGY NÉHÁNY CSÚSZÓ LURKER SZÜKSÉGEK TÖRTÉNIK,", + "MINDENT KAPCSOLNAK, AMIRE FELTÉTHETŐK SZÁROS KIS MANCSUKAT.", + "ÉS IJESZETEK EL KEDVEZMÉNYEMET, HIPHOGOT, FARTHY.", + "KÖZEL HIÁNYZOTT EGY KUDÓS KORÁHOZ.", + "KIADTAM KEDVENC NAGYON,", + "DE AZOK AZ ORNERY MOCSÁRI PATKÁNYOK MEGLOPJÁK EM!", + "HA EL KELL TARTANI AZOKAT A BOSSZANTÓ LÉNYEKET,", + "CSAK TUDOM, HOGY FARTY VITTLÉS SZAGOZTANA ŐKET, ÉS VISSZAJÖN!", + "SEGÍTESZ NEKEM?" ], "billy-reject": [ - "WELL, IF YOU CHANGE YOUR MIND, YOU KNOW WHERE TO FIND ME!", - "HE HE HE HE HEH..." + "HÁT, HA MEGVÁLTOZTATOD MEGÁLLAPÍTÁSA, TUDJA HOL TALÁLJON MEG!", + "HE HE HE HE H..." ], "billy-reminder-1": [ - "AHH, Y'ALL BACK TO HELP STOP THEM RATS?" + "AHH, VISSZA VISSZA, HOGY SEGÍTSÜK MEGÁLLÍTNI A PATKÁNYOKAT?" ], "billy-resolution": [ - "WELL FRY MY HIDE! YOU SURE KNOW HOW TO SHOOT!", - "THANKS A HEAP FOR THE HELP." + "JÓL SÜTJÜK MEG A BREJEM! BIZTOSAN TUDOD LŐNI!", + "KÖSZÖNÖM A SEGÍTSÉGET." ], "bird-lady-beach-resolution": [ - "OH MY, I HOPE THE POOR DEAR'S OKAY.", - "HERE'S A POWER CELL FOR YOUR VALOR.", + "Ó, REMÉLEM, SZEGÉNY DRÁGA JÓBAN.", + "ÍME EGY TELJESÍTMÉNY CELL AZ ÖN BIZTONSÁGÁBÓL.", "MAMA!", "MAMA!", - "OH NO! NO, NO, NO, NO!", - "LOOK... ISN'T THAT CUTE? IT THINKS YOU'RE ITS MAMA.", - "EH? I'M NOT YOUR MOM! YOU SEE ANY FEATHERS HERE?", - "OH, LOVE AT FIRST SIGHT! AH...", - "LISTEN, BOYS, I'LL TAKE THIS LITTLE CHICK BACK TO THE VILLAGE WITH ME", - "AND WORK WITH THE SAGE TO TAKE CARE OF HER." + "ÓH NE! NEM NEM NEM NEM!", + "NÉZD... NEM ARNYI? AZT HISZI, TE VAGY AZ ANYA.", + "EH? NEM VAGYOK AZ ÉDESANYÁD! LÁSZ ITT TOLLAT?", + "Ó, SZERETET ELSŐ LÁTÁSRA! AH...", + "FIGYELJ, FIÚK, VISSZA VISZM EZT A KISCSÁBÓT A FALUBA", + "ÉS DOLGOZZ A BÖLCSÉVEL, HOGY GONDOZZ RÁ." ], "bird-lady-introduction": [ - "OH MY, WHAT A HORRIBLY SICK LITTLE BIRD.", - "HUH! YOU DON'T LOOK SO GOOD YOURSELF, LADY!", - "OH, SORRY. I THOUGHT YOU WERE A SPOTTED", - "ORANGE-BELLIED RAIN FRAY.", - "YOU KNOW, YESTERDAY I SAW SOME", - "TERRIBLY VICIOUS CREATURES CAPTURE", - "A MOTHER FLUT-FLUT NEAR THE BEACH.", - "NOW THERE'S THIS POOR LITTLE ORPHAN EGG", - "SITTING IN A NEST AT THE TOP OF THE CLIFF", - "AND I CAN'T GET TO IT.", - "IF YOU COULD CLIMB UP THERE AND PUSH IT OFF, I'VE PILED", - "SOME HAY DOWN AT THE BASE TO CATCH IT SAFELY.", - "DO AN OLD LADY A FAVOR, AND I'LL GIVE YOU A POWER CELL." + "Ó, Ó, MI SZORÚ BETEG KIS MADÁR.", + "HUH! TE NEM NÉZ KI OLYAN JÓL, HöLGYEM!", + "OH BOCSÁNAT. AZT HITTEM, FOLTOS VAGY", + "NARANCSHASÚ ESŐFAY.", + "TUDOD, TEGNAP LÁTTAM NÉHÁT", + "RÖGZETLENEN GONDOZATOS LÉNYEK ELFOGADJÁK", + "A STRAND KÖZELÉBEN ANYA FLUT-FLUT.", + "MOST VAN EZ A SZEGÉNY KIS ÁRVA TOJÁS", + "ÜLÉS EGY FÉSZEKBEN A SZIRTA TETEJÉN", + "ÉS NEM TUDOK ELÉRNI.", + "HA ODA FELMÁSZNÁL ÉS LETÖLHETSZ,", + "NÉHÁNY SZÉNÁT AZ ALJON, HOGY BIZTONSÁGOSAN ELFOGADJA.", + "TÉGY SZÖVESSÉGET EGY ÖREG HÖLGYNEK, ÉS ADOK NEKED EGY ERŐSELTÁT." ], "bird-lady-reminder-1": [ - "OH, HELLO AGAIN. DID YOU BOYS FIND THAT BLUE EGG ON THE CLIFF?", - "PUSH IT OFF THE EDGE AND I'LL GIVE YOU A POWER CELL!" + "Ó, HELLO ÚJRA. MEGTALÁLTÁK AZT A KÉK TOJÁST A SZIRTEN?", + "NYOMJA LE A SZÉLÉRŐL, ÉS ADOK NEKED EGY ERŐCELLÁT!" ], "bird-lady-reminder-2": [ - "ARE YOU BOYS STILL PICKING AROUND HERE? HO HO HO.", - "I'LL BET THAT POOR LITTLE BLUE EGG ON THE CLIFF", - "IS GETTING AWFULLY COLD BY NOW.", - "GO SAVE IT BY PUSHING IT OFF THE EDGE OF THE CLIFF,", - "AND I'LL GIVE YOU A POWER CELL." + "TI, FIÚK, MÉG ITT VÁLASZTOK? HO HO HÓ.", + "FOGADOM, HOGY SZEGÉNY KÉK TOJÁS A SZIRTEN", + "MÁR RETŐEN HIDEG.", + "MENJEN MEG A SZIRTA SZÉLÉRŐL TÖLTVE,", + "ÉS ADOK NEKED EGY ERŐSELTÁT." ], "bluesage-resolution": [ - "GOOD WORK, FELLOWS! OLD SAMOS WAS RIGHT ABOUT YOU!", - "GREAT PILES OF PRECURSOR METAL!", - "THAT INSIDIOUS MECHANICAL CREATION", - "MUST NOT BE ALLOWED TO WREAK ITS TERRIBLE HAVOC!", - "I WILL TRY TO ACTUATE THE SHIELD DOOR", - "BY ELICITING A CONDUIT OF ENERGY", - "BETWEEN MYSELF AND THE VAST PORTAL BELOW!", - "UH... YEAH. YOU DO THAT. WE'LL UH... JUST GO FIND MORE HELP.", - "WEIRDO!" + "JÓ MUNKÁT, SZÁMÁRA! RÉGI SAMOS-NAK IGAZA VOLT RÁD!", + "NAGY HALOM ELŐFÉM!", + "AZ ÁLLATOS MECHANIKAI TEREMTÉS", + "NEM SZABAD SZÖRNYELMES PUSZTÍTÁSÁT ELKÖVETNI!", + "MEGPRÓBÁLJAM MEGOLDNI A PAJZS AJTÓT", + "ENERGIAVEZETÉS ELŐKIVÁLÁSÁVAL", + "MAGAM ÉS AZ ALÁBBI HATALMAS PORTÁL KÖZÖTT!", + "UH... IGEN. TE CSINÁLOD AZT. UH... CSAK KERESS TÖBB SEGÍTSÉGET.", + "KÜLÖNC!" ], "death-0181": [ - "DON'T STEP INTO THE LIGHT, JAK! DON'T STEP INTO THE LIGHT!" + "NE LÉPJ A FÉNYBE, JAK! NE LÉPJEN A FÉNYBE!" ], "death-0182": [ - "HEY, JAK! CAN I...", - "HAVE YOUR INSECT COLLECTION?" + "HÉ, JAK! TUDOK...", + "VAN A ROVARGYŰJTEMÉNYE?" ], "death-0184": [ - "WHILE YOU'RE DOWN THERE, EHM...", - "COULD YA RUB MY FEET?" + "MIKöZBEN OTT VAGY, EHM...", + "LEHET DÖZLÖLNI A LÁBAMAT?" ], "death-0186": [ - "DON'T WORRY! I'LL AVENGE YOU!", - "...NOT." + "NE AGGÓDJON! BOSSZÚ FOGOK!", + "...NEM." ], "death-0187": [ - "WELL, UH...", - "BETTER YOU THAN ME." + "NOS, UH...", + "JOBBAN TE NÉM." ], "death-0191": [ - "THAT LOOKS LIKE IT HURT.", - "SHOULD I CALL FOR BACKUP?" + "ÚGY ÚGY FÁJT.", + "HÍVJON MINTÁKAT?" ], "death-0193": [ - "STEP ONE: STAY ALIVE!", - "STEP TWO...", - "THINK ABOUT NOT DOING SOMETHING LIKE THAT AGAIN!" + "ELSŐ LÉPÉS: MARADJ ÉLETBEN!", + "MÁSODIK LÉPÉS...", + "GONDOLJON ARRA, HOGY NE CSINÁLJON ÚJRA ILYENT!" ], "death-0195": [ - "I WAS RIGHT BEHIND YA, JAK!", - "...REALLY. I WAS." + "KÖZVETLENÜL MÖGÖTT VOLTAM, JAK!", + "...IGAZÁN. ÉN VOLTAM." ], "death-0197": [ - "HEIMLICH! UH... STRETCHER!", - "YUCK... BREATH MINT?" + "TITKOSAN! UH... HORDOZÓ!", + "BUSZ... LÉLEGZŐMENTA?" ], "death-0199": [ - "I'LL SAY SOMETHING REALLY TEARY AT THE FUNERAL, LIKE...", - "...\"HOW AM I GONNA GET CHANGED BACK NOW?!\"" + "A TEMETJÉN MONDOK VALAMI IGAZÁN KÖNYÖST, PL.", + "...\"HOGY FOGOK VISSZAÁLTOZNI?!\"" ], "death-0202": [ - "SAY GOODNIGHT, JAK!" + "HOGYAN KELL JÓÉJJÁT!" ], "evilbro-misty-end": [ - "THOSE TWO COULD PROVE TO BE TROUBLE.", - "DON'T WORRY DEAR BROTHER, I'LL DISPATCH MY LURKER ARMY TO DEAL WITH THEM.", - "JUST MAKE SURE THEY DON'T GET TOO CLOSE TO OUR NORTHERN OPERATIONS.", - "I DOUBT THEY'LL GET THAT FAR...", - "BUT IF THEY DO, A SURPRISE WILL BE WAITING FOR THEM IN ROCK VILLAGE.", - "SO...YOU'RE GOING TO LET...KLAWW OUT OF HIS CAGE?", - "I THINK IT'S WORTH THE RISK.", - "INDEED..." + "AZ A KETTŐ BAJNAK BIZONYULHAT.", + "NE AGGODALMASKODJ, KEDVES BÁTYÁM, ELKÜLDÖM A LURKER SEREEMET, HOGY BEZZELÜK VELÜK.", + "CSAK GYŐZŐDJÖN MEG, HOGY NE KERÜLJENEK TÚL KÖZELÉBEN ÉSZAKI ÜZEMELTETÉSÜNKHEZ.", + "KÉTLEM, HOGY ODÁIG ELJUTNAK...", + "DE HA TESZI, MEGLEPETÉS VÁRJA RÁJUK A ROCK FALUTT.", + "SZÓVAL... KI KEDVESZED...KLAWW-T A KITCÉBŐL?", + "SZERINTEM MEGÉRI A KOCKÁZATOT.", + "VALÓBAN..." ], "explorer-introduction": [ - "WELL, HELLO THERE MY DEAR BOY.", - "YOU'VE CAUGHT AT A MOST INOPPORTUNE MOMENT.", - "I WAS TO SET OFF ON MY JOURNEYS YESTERDAY", - "BUT I SEEM TO BE A SPOT SHORT ON THE OLD PRECURSOR ORBS.", - "I WOULD'VE PLEDGED MY WORD THAT I HAD 90 OF THEM,", - "BUT I GATHER THAT YOUR YOUNG FRIEND, YOU KNOW, THE", - "LITTLE ANNOYING MISERABLY UGLY ONE", - "MIGHT HAVE JUST PILFERED THEM AS A SORT OF A SPOT OF FUN.", - "ANYWAY, WOULD YOU BE KIND ENOUGH TO LOAN YOUR DEAR OLD UNCLE", - "90 PRECURSOR ORBS SO HE CAN GET UNDERWAY?", - "I WOULD OFFER YOU A POWER CELL IN RETURN." + "NOS, SZIASZTOK DRÁGA FIÚM.", + "EGY LEGFONTOSABB LEHETŐSÉGETLEN PILLANATBAN ELFOPTA.", + "TEGNAP KELLETT INDULNI UTAZÁSAIRA", + "DE ÚGY TŰNIK, FONTOS RÖVID VAGYOK A RÉGI ELŐFORGALOMBAN.", + "A SZAVAM ÍGY ÍGY VAN 90,", + "DE GYŰJTEM, HOGY AZ IFJÚ BARÁTOD, TUDOD, A", + "KIS BOSZSZANTÍTÓ NYOMORULT CSÚNYA", + "TALÁN CSAK A SZÓRAKOZÁS HELYÉNEK FELVÉTELTE ŐKET.", + "AMÚGY LENNE LEGYEN KEDVES VÉG BÁCSÁTÁT HITELNI", + "90 ELŐFORMÁZÓ GOMB, HOGY BE KEZDHETŐ?", + "VISSZA KÍNÁLNAK EGY TELJESÍTMÉNY CELLET." ], "explorer-reminder-1": [ - "WHAT? YOU DON'T HAVE THE FULL STASH? HARRUMPH!", - "WELL, ANY LESS THAN 90 PRECURSOR ORBS", - "AND I SHAN'T HAVE A CHANCE TO GET UNDERWAY, DEAR BOY." + "MIT? NEM VAN MEG A TELJES TÁROLÁST? HARRUMPH!", + "NOS, 90-NÉL KEVESEBB ELŐFORMÁT", + "ÉS NINCS ESÉLYEM AZ ELJÁRÁSRA, KEDVES FIÚ." ], "explorer-reminder-2": [ - "OH SEE HERE, THE DEAL IS FOR 90 PRECURSOR ORBS FOR A POWER CELL.", - "A DOWNRIGHT EVEN TRADE." + "Ó, NÉZD MEG ITT, AZ AKCIÓ 90 ELŐFORMÁJÁRA VONATKOZIK EGY TELJESELLÉKHEZ.", + "EGY NYILVÁNOS KERESKEDELEM." ], "explorer-resolution": [ - "I SEE YOU TWO ARE BACK TO MAKE THE TRADE. GOOD, GOOD, JOLLY GOOD!", - "EH, YOU HAVE THE UH, PRECURSOR ORBS THAT WE AGREED ON?", - "I HOPE YOU PUT THIS HARD-EARNED POWER CELL TO GOOD USE.", + "LÁTOM, TI KETTŐK VISSZA KÉSZÜLTETTEK. JÓ, JÓ, VIDÁM JÓ!", + "EH, MEGVAN AZ UH, ELŐFORMÁNYOK, AMELYEKBEN MEGÁLLAPODTUNK?", + "REMÉLEM, JÓL HASZNÁLJA EZT A KERESZTÜL MEGSZERETETT TELJESÍTMÉNYCELTET.", "CHEERIO, TA TA, BYE BYE!" ], "farmer-introduction": [ - "GOTTA MILK THOSE YAKOWS, GOTTA MILK THOSE YAKOWS...", - "OH! IT'S YOU... JUST RESTIN' MY TIRED BONES.", - "I'VE BEEN TRYING TO GET THOSE ORNERY YAKOWS", - "BACK INTO THE PEN ALL DAY!", - "SOME STRANGE CREATURES TRIED TO STEAL 'EM EARLIER.", - "YOU THINK YOU CAN HELP AN OLD MAN TRY TO GET 'EM BACK INTO THE CORRAL?" + "FEJNI AZOKAT A JAKÓKAT, TEJNI AZOKAT A JAKÓKAT...", + "Ó! TE VAGY... CSAK PISZTÍTSD FÁRADT CSONTOMAT.", + "MEGPRÓBÁLTAM MEGSZERETNI AZOKAT AZ ORNERY YAKOWOKAT", + "VISSZA A TOLLBA EGÉSZ NAP!", + "NÉHÁNY FURCSA LÉNY KORÁBBAN PRÓBÁLTA ELLOPNI.", + "SZERINTED TUDSZ SEGÍTENI EGY ÖREGEMBERNEK MEGPRÓBÁLNI VISSZA KERÜLNI A KARÁLBA?" ], "farmer-reminder-1": [ - "HEY! MY YAKOWS ARE STILL ON THE LOOSE!", - "EH, COULD YOU BRING 'EM BACK FOR ME ALREADY?" + "HÉ! A YAKOWJAIM MÉG MÉG SZABADON VAN!", + "EH, MÁR VISSZAHOZD EZEKET NEKEM?" ], "farmer-reminder-2": [ - "THOSE DARN YAKOWS ARE STILL ROAMIN' FREE.", - "AIN'T YOU GONNA CHASE 'EM INTO THE CORRAL ALREADY?" + "AZOK A POTA YAKOWOK MÉG MENTESEK BARANGOLÁSSAL.", + "NEM KERÜLJED MÁR MÁR A KARÁLBA ŐKET?" ], "farmer-resolution": [ - "AH, WELL DONE MY BOY. YOU ACTUALLY GOT THOSE FLEABAGS PACK INTO THE PEN.", - "NOW I CAN SLEEP IN PEACE. TAKE THIS POWER CELL FOR YOUR TROUBLE." + "AH, SZÉP FIÚM. TÉNYLEG AZOKAT AZOKAT A BOSZÁKCSOMAGOKAT A TOLLBA VETTE.", + "MOST BÉKÉBEN ALHATOK. HASZNÁLJA EZT AZ ERŐCELLÁT BAJJÁRA." ], "finalbosscam-white-eco": [ - "LIGHT ECO! IT DOES EXIST!", - "THEY MUST NOT BE ALLOWED TO GET IT!" + "LIGHT ECO! LÉTEZIK!", + "NEM SZABAD MEGSZEREZNI!" ], "fisher-accept": [ - "THERE ARE TWO TYPES OF GOOD FISH TO CATCH:", - "ONE-POUND FISHIES, AND FIVE-POUND FISHIES.", - "HEH. IF YOU MISS 20 POUNDS OF GOOD FISH", - "THEN I'M GONNA TAKE ME NET BACK FROM YA!", - "THERE ARE POISONOUS EELS IN THIS RIVER.", - "CATCH EVEN ONE OF THEM BOOGERS", - "AND YOU'LL POISON THE WHOLE DARN CATCH!" + "KÉT TÍPUSÚ FOGÁSHAL VAN:", + "EGY KIBONTÓS HALATOK ÉS ÖTFONTOS HALATOK.", + "HEH. HA HIÁNYZOD 20 KIÓ JÓ HALAT", + "AKKOR VISSZAVESZEM TŐLEM A NETT!", + "EBBEN A FOLYÓBAN MÉRGEZŐ BANOK VANAK.", + "FOGJ EL AKÁR EGYET A BOOGERS-T", + "ÉS MÉRGEZD AZ EGÉSZ FOGÁST!" ], "fisher-introduction": [ - "WHAT DO YOU HAVE IN THE BASKET?", - "NOTHING TO TALK ABOUT.", - "THEM MONSTERS PATROLIN' THE OCEAN", - "TOOK A BITE OUT OF ME FISHIN' RIG.", - "AND NOW THEY'RE GOBLIN' UP ME CATCH!", - "NO MATTER WHAT I TRY, I CAN'T SEEM TO CATCH A SINGLE FISH IN THIS RIVER.", - "WHOO! MAYBE... IT'S YOUR BREATH.", - "YOU THINK YOU CAN DO BETTER?", - "TRY SCOOPIN' UP RIVER FISH WITH A TINY NET!", - "I'LL GIVE YOU A POWER CELL", - "IF YOU CAN CATCH 200 POUNDS OF THEM CRITTERS!", - "AND I'LL LET YOU AND SHRIMP HERE", - "USE MY SPEEDBOAT TO GET TO MISTY ISLAND.", - "YOU'S WANT TO TRY THE CHALLENGE?" + "MI VAN A KOSÁRBAN?", + "NINCS MI BESZÉLNI.", + "ŐK SZÖRNYEZETEK AZ ÓCEÁNON PATROLLÁK", + "KIHARPOTT EGYET A HORGÁSZBÓL.", + "ÉS MOST GOBLINÁLNAK FEL KAPJ!", + "AKÁR MIÉRT PRÓBÁLOM, EBBEN A FOLYÓBAN NEM TUDOK FOGNI EGY HALT SEM.", + "HOÓ! TALÁN... A TE LÉLEGZETED.", + "SZERINTED TUDOD JOBBAN?", + "PRÓBÁLJA KI A FOLYÓI HALOK FELVÉTELÉT EGY APRÓ HÁLÓVAL!", + "ADOK NEKED EGY ERŐSELTÁT", + "HA ELKAPOD 200 KIÓT AZOKBÓL!", + "ÉS ITT HAGYOM NEKED ÉS RÁKLASZTANI", + "HASZNÁLJA A GIBORCSÓNAMAT, HOGY ELJUSZ A MISTY SZIGETRE.", + "SZERETNÉD KIPRÓBÁLNI A KIHÍVÁST?" ], "fisher-reject": [ - "WELL, IF YOU WANT TO TRY FOR THE POWER CELL SOMETIME", - "YOU KNOW WHERE TO FIND ME." + "HÁT, HA KI SZERETNÉD KIPRÓBÁLNI A TELJESÍTMÉNY CELLÁT VALAMIKOR", + "TUDOD, HOL TALÁLHATSZ MEG." ], "fisher-reminder-1": [ - "WANT TO TRY AND BEAT THE RIVER, DO YA?" + "SZERETNÉL MEGPRÓBÁLNI A FOLYÓT, UGYE?" ], "fisher-resolution": [ - "YOU DID IT! YOU CAUGHT 200 POUNDS OF FISH!", - "NOT BAD FOR A COUPLE OF LAND LUBBERS!", - "HERE'S THE POWER CELL I PROMISED", - "AND YOU CAN USE MY BOAT IN THE VILLAGE DOCK", - "WHENEVER YOU LIKE!" + "MEGCSINÁLTAD! 200 KIÓ HALAT FOGTATT!", + "NEM ROSSZ PÁR FÖLDFÖLDFÖLDFÖLDI KENCSÉRE!", + "ITT AZ ERŐCELLÁM, AMIT ÍGÉRTEM", + "ÉS HASZNÁLHATJA A HAJÓMAT A FALU DOKKÁBAN", + "AMIKOR SZERETNÉD!" ], "fishermans-boat-ride-to-village1-alt": [ - "THOSE TWO COULD PROVE TO BE TROUBLE.", - "DON'T WORRY, DEAR BROTHER. I'LL DISPATCH MY LURKER ARMY TO DEAL WITH THEM.", - "JUST MAKE SURE THEY DON'T GET TOO CLOSE TO OUR NORTHERN OPERATIONS.", - "I DOUBT THEY'LL GET THAT FAR.", - "BUT IF THEY DO, A SURPRISE WILL BE WAITING FOR THEM IN ROCK VILLAGE.", - "SO... YOU'RE GOING TO LET KLAWW OUT OF HIS CAGE?", - "I THINK IT'S WORTH THE RISK.", - "INDEED." + "AZ A KETTŐ BAJNAK BIZONYULHAT.", + "NE AGGÓDJON, DRÁGA BÁTYÁM. ELKÜLDÖM A LURKER SEREEMET, HOGY BEZZELÜK VELÜK.", + "CSAK GYŐZŐDJÖN MEG, HOGY NE KERÜLJENEK TÚL KÖZELÉBEN ÉSZAKI ÜZEMELTETÉSÜNKHEZ.", + "KÉTLEM, HOGY ODÁIG ELJUTNAK.", + "DE HA TESZI, MEGLEPETÉS VÁRJA RÁJUK A ROCK FALUTT.", + "SZÓVAL... KI KEDVESZED KLAWW-T A KITCÉBŐL?", + "SZERINTEM MEGÉRI A KOCKÁZATOT.", + "VALÓBAN." ], "gambler-introduction-1": [ - "AW, NO. NOT ANOTHER \"HERO\".", - "I LOST MY SHORTS ON THIS SO-CALLED HERO'S BIG FIGHT", - "AGAINST THE MONSTER UP THERE.", - "TRUST ME, THE SMART MONEY'S ON THE MONSTER.", - "THAT WAGER PRETTY MUCH TAPPED ME OUT!", - "SO'S, I GOT A PROPOSAL.", - "BRING ME 90 ORBS TO GET ME BACK ON MY FEET AND OUT OF THIS BARREL,", - "AND I'LL GIVE YOU A POWER CELL IN RETURN.", - "AND IF YOU'RE GAME, I DO HAVE ONE MORE BET ONLINE.", - "MY BIG COMEBACK!", - "BEAT THE RECORD TIME RACING DEAD MAN'S GORGE IN THE PRECURSOR BASIN,", - "AND I'LL GET A PRETTY PAYOFF!", - "FOR THAT, I'LL GIVE YOU ANOTHER POWER CELL." + "Ó, NEM. NEM EGY MÁSIK \"HŐS\".", + "ELVESZTEM AZ ÚGY NEVEZETT HŐSöK NAGY HARCÁN", + "A SZÖRNYEZET ELLEN OTT.", + "BIZTOSÍTS BE, AZ OKOS PÉNZ A SZÖRNYEN VAN.", + "EZ A TÉM NAGYON KIÉPÍTETT!", + "VAN, VAN EGY JAVASLAT.", + "HOZZ EL 90 ORBOT, HOGY VISSZATALÁLJON A LÁBAMRA ÉS KI EBBEN A HORDÓBÓL,", + "ÉS VISSZA ADOK NEKED EGY ERŐCELLÁT.", + "ÉS HA JÁTÉK, VAN MÉG EGY ONLINE FOGADÁSOM.", + "NAGY VISSZATÉRÉSEM!", + "DÖLD MEG A REKORDIDŐT, VERSENYEZÉS HALT EMBER-SZURDOKÁT AZ ELŐFUTÁRBAN,", + "ÉS SZÉP KIFIZETÉST KAPOK!", + "ERRE ADOK MÁSIK ERŐCELLÁT." ], "gambler-reminder-money": [ - "HEY. DON'T FORGET ABOUT THOSE ORBS I NEED.", - "90'LL GET YOU ONE. ONE POWER CELL, THAT IS!" + "HÉ. NE FELEJDJ MEG AZOKAT A ORBUSOKAT, AMELYEKRE KELL.", + "90 SZEREZNEK EGYET. EGY TELJESELLEMZŐ, AZ!" ], "gambler-reminder-race": [ - "WELL, WHAT ARE YOU WAITIN' FOR?", - "THIS BARREL'S GETTIN' ITCHY!", - "BEAT THE BEST TIME DOWN DEAD MAN'S GORGE,", - "AND WE'LL BOTH BE WINNERS!" + "NOS, MIRE VÁRSZ?", + "EZ A HORDÓ VISZETETT!", + "GYŐZD MEG A LEGJOBB IDŐT A HOLT EMBER-SZURKOT,", + "ÉS MI LEGYÜNK NYERTESEK!" ], "gambler-resolution-money": [ - "HEH HEH HEH! OH, YEAH!", - "THESE ORBS'LL HELP ME WIN MY WAY BACK OUTTA THIS BARREL!", - "HERE'S THE POWER CELL I PROMISED!" + "HÉ HÉ HÉ! Ó IGEN!", + "EZEK A GOMBOK SEGÍTENEK NEKEM NYERNI VISSZAUTAT EBBŐL A HORDÓBÓL!", + "ITT AZ ERŐCELLÁM, AMIT ÍGÉREM!" ], "gambler-resolution-race": [ - "OH, GREAT MOVES, KID! I KNEW THAT TIME RECORD WOULD FALL.", - "NOW HERE'S YOUR POWER CELL, AND I CAN GO COLLECT MY BIG PAYOFF!" + "Ó, NAGY LÉPÉSEK, GYEREK! TUDTAM, HOGY IDŐREKORD DŐL.", + "MOST ITT A TE TELJESELLÉKED, ÉS MEHETEK BESZEDNI A NAGY KIFIZETÉSEMET!" ], "geologist-introduction": [ - "YOU TWO LOOK LIKE A COUPLE OF CAPABLE FELLOWS.", - "I'VE GOT A RESEARCH PROJECT GOING,", - "AND MAYBE YOU COULD HELP ME OUT.", - "HEY, WE'RE THE ONES ON A BIG QUEST HERE.", - "WE ASK YOU FOR HELP.", - "WELL, PERHAPS WE CAN HELP EACH OTHER.", - "I'VE BEEN STUDYING THE BURROWING HABITS OF LIGHTING MOLES", - "IN THE PRECURSOR BASIN NEXT TO OUR VILLAGE FOR YEARS.", - "BUT NOW THOSE AWFUL LURKERS HAVE SCARED THE MOLES TO THE SURFACE!", - "AND SINCE THEY'RE BLIND AS BATS, THEY CAN'T FIND THEIR WAY BACK UNDERGROUND.", - "IF YOU COULD HERD THEM BACK INTO THEIR BURROWING TUNNELS,", - "YOU MIGHT JUST SAVE THEIR LIVES.", - "I'VE GOT A POWER CELL THAT SAYS YOU CAN DO IT.", - "YEAH, LIGHTNING MOLES... WE CARE.", - "MAYBE FOR TWO POWER CELLS!", - "NICE TRY. BUT I WOULD BE WILLING TO PART WITH ANOTHER POWER CELL", - "IF YOU TWO FIND ME 90 PRECURSOR ORBS FOR MY RESEARCH EQUIPMENT.", - "FAIR ENOUGH?" + "TI KETTEN ÚGY NÉSZEK, HOGY EGY KÉPES TÁRSAS PÁR.", + "VAN EGY KUTATÁSI PROJEKTEM,", + "ÉS TALÁN SEGÍTHETNEK NEKEM.", + "HÉ, MI VAGYUNK AZ EGY NAGY KÜLDETÉSEN ITT.", + "SEGÍTSÉGET KÉRÜNK.", + "HÁT, TALÁN SEGÍTHETÜNK EGYMÁST.", + "TANULMÁNYOZTAM AZ VAKONOK GYÚJTÁSÁNAK HAJTÁSI SZOKÁSAIT", + "A FALUNK MELLETT ELŐADÓ-MEDENCEBEN ÉVEK ÓTA.", + "DE MOST AZOK A SZETSZETES LURKOLÓK FELSZÍNRE RÍJTÉK A VAKONOKAT!", + "ÉS MIVEL VAKOK, MINT A DENEVÉREK, NEM TALÁLHATNAK VISSZA A FÖLD ALATT.", + "HA VISSZA TERELHETNÉ ŐKET AZ ÖRÖZŐ ALAGÚTJUKBA,", + "LEHET, CSAK MEGMENTED AZ ÉLETÜKET.", + "VAN EGY TELJESÍTMÉNY CELLEM, AMELY AZZÁT, HOGY MEGTEHETED.", + "IGEN, VILLÁM VAKONYOK... MINKET GONDOLJUK.", + "TALÁN KÉT TELJESÍTMÉNYELEMÉRE!", + "SZÉP PRÓBÁLKOZÁS. DE HAJNÁL LENNE VÁLNI MÁS TELJESÍTMÉNYCELTŐL", + "HA KETTEN TALÁLTOK NEKEM A KUTATÓ BERENDEZÉSEMHEZ 90 ELŐFORMÁT.", + "ELFOGADHATÓ?" ], "geologist-reminder-moles": [ - "DID YOU HERD THOSE LIGHTNING MOLES BACK UNDERGROUND?", - "YOU SHOULD HURRY - THE DIRECT SUNLIGHT ISN'T GOOD FOR THEM!" + "VISSZA TERELTE A FÖLD ALATT AZOKAT A VILLÁMVAONDOKAT?", + "SIEGYEN KELL - A KÖZVETLEN NAPFÉNY NEM JÓ NEKIK!" ], "geologist-reminder-money": [ - "I NEED THOSE ORBS IF I'M GOING TO CONTINUE MY RESEARCH!" + "KELL AZOKRA A GöMBöKRE, HA FOLYTATOM A KUTATÁSOMAT!" ], "geologist-resolution-moles": [ - "THANK YOU FOR SAVING THOSE MOLES, THAT'S AWFULLY GOOD OF YOU.", - "HERE'S A POWER CELL TO HELP YOU OUT.", - "NOW I CAN GET BACK TO MY RESEARCH!" + "KÖSZÖNÖM, HOGY MEGMENTETTE AZOKAT A VAKONOKAT, EZ RÖGZETLENEN JÓ TŐLED.", + "ITT VAN EGY TELJESÍTMÉNY CELLA, HOGY SEGÍTÜNK.", + "MOST VISSZA TÉRHETEK A KUTATÁSHOZ!" ], "geologist-resolution-money": [ - "OH, YOU HAVE THE ORBS!", - "HERE'S A POWER CELL WE AGREED UPON." + "Ó, MEGVAN AZ ORBS!", + "ITT VAN EGY TELJESÍTMÉNY CELLE, AMELYBEN MEGÁLLAPODTUNK." ], "green-sagecage-daxter-sacrifice": [ - "LIGHT ECO! THAT COULD BE THE STUFF TO CHANGE ME BACK!", - "OR... IT MIGHT STOP THAT ROBOT.", - "STAY FUZZY, SAVE THE WORLD... CHOICES...", - "OKAY, FINE, WE'LL SAVE THE WORLD.", - "BUT DO IT QUICKLY BEFORE I CHANGE MY MIND!" + "LIGHT ECO! EZ LEHET AZ, AMI VISSZAVÁLTOZTAT!", + "VAGY... LEHET MEGÁLLÍTANI AZT A ROBOTOT.", + "MARADJ FUZZY, MENTSD MEG A VILÁGOT... VÁLASZTÁSOK...", + "OKÉ, RENDBEN, MEGMENTÜNK A VILÁGOT.", + "DE GYORSAN CSINÁLJA MEG, MIELŐTT MEGÉSZMÉLEM!" ], "green-sagecage-introduction": [ - "IT'S ABOUT TIME YOU TWO DECIDED TO SHOW UP!", - "NICE TO SEE YOU TOO!", - "DO THEY HAVE YOU MOPPING THE FLOORS NOW?", - "THERE'S NO TIME FOR JOKES, DAXTER. GOL AND MAIA KIDNAPPED US", - "TO SAP OUR ENERGIES TO POWER THEIR ABOMINABLE MACHINE.", - "IT APPEARS THEY HAVE COMBINED THE FUNCTIONAL REMAINS OF A PRECURSOR ROBOT", - "WITH SCAVENGED ARTIFACTS FROM ACROSS THE LAND.", - "THEN THEY ADDED A FEW DIABOLICAL ADDITIONS OF THEIR OWN,", - "CREATING THE ONE THING CAPABLE OF OPENING THE DARK ECO SILOS.", - "IF YOU CAN FREE THE FOUR OF US, WE CAN USE OUR COMBINED POWERS", - "TO BREAK THE FORCE SHIELD SURROUNDING THE ROBOT", - "BEFORE THEY USE IT TO DESTROY THE WORLD." + "ELÉPTETT AZ IDŐ, HOGY TI KETTŐTTEK ÚGY DÖNTÖTTÜK, HOGY MEGJELENJEK!", + "ÉN IS ÖRÜLÖK, HOGY LÁTLAK!", + "MOST MÁR MEGTÖRÍTI A PADLÓT?", + "NINCS IDŐ VICCRE, DAXTER. GOL ÉS MAIA ELRABOLT MINKET", + "AZ ENERGIÁINK SZAPÍTÁSÁHOZ, HOGY MEGHAJTOSÍTSA FÖRZETLEN GÉPÜKET.", + "ÚGY ÚGY TŰNIK, EGY PREKUSZORROBOT FUNKCIÓS MARADÉKAIT ÖSSZESÍTETEK", + "SZÖRÜLŐLŐL KIKERETTETT MŰKÉSZÜLETEKKEL.", + "AZTÁN HOZZÁADTAK NÉHÁNY SAJÁT DIABOLIKUS KIEGÉSZÍTÉST,", + "AZ EGY DOLOG LÉTREHOZÁSA, AMI A SÖTÉT ÖKOSILÓK NYITÁSÁRA KÉPES.", + "HA FELSZABADÍTHATJA NÉGYÜNKET, HASZNÁLHATJUK EGYESÜLT ERŐNKET", + "A ROBOTOT KÖRNYEZŐ ERŐPAJZS TÖRÉSÉRE", + "MIELŐTT A VILÁG ELPUSZTÍTÁSÁRA HASZNÁLJÁK." ], "green-sagecage-outro-beat-boss-a": [ - "DO SOMETHING!", - "NOOO!" + "CSINÁLJ VALAMIT!", + "NEM!" ], "green-sagecage-outro-beat-boss-b": [ - "WELL, IT LOOKS LIKE I MAY HAVE BEEN TOO HARD ON YOU BOYS!", - "YOU DO HAVE WHAT IT TAKES TO BE HEROES!", - "BUT, DAXTER, NOW WE CAN'T CHANGE YOU BACK.", - "DON'T WORRY ABOUT ME, BABY.", - "YOU KNOW WHAT THEY SAY: BIG THINGS COME IN SMALL PACKAGES.", - "JAK, YOU HAVE AN INCREDIBLE TALENT FOR CHANNELLING ECO!", - "SAMOS, YOU MAY HAVE BEEN RIGHT ABOUT THIS ONE AFTER ALL!", - "AND KEIRA, WITHOUT YOUR HELP AND INGENUITY", - "NONE OF THIS WOULD HAVE BEEN POSSIBLE.", - "HM-HM-HM. PERHAPS WE FOUND ANOTHER SAGE", - "NOW THAT GOL AND MAIA ARE LOST...", - "YES, GOL AND MAIA... THE DARK ECO PROBABLY DESTROYED THEM.", - "EH, PROBABLY...", - "AH WHO CARES? BRING 'EM ON, WE CAN TAKE 'EM AGAIN! RIGHT JAK?", - "I SAID, RIGHT, JAK?", - "WHOA! PUT IT ON ICE, BIG GUY!" + "NOS, ÚGY NÉZ KI, TALÁN TÚL KEMÉNY VOLTAM VELETEK FIÚK!", + "MEGVAN MI AHOZ HŐSÖK LEGYEN!", + "DE, DAXTER, MOST NEM VÁLTOZTATHATJUK VISSZA.", + "NE AGÓDJON MÉRTAM, BÉBI.", + "TUDJA, HOGY MONDJÁK: A NAGY DOLGOK KIS CSOMAGOKBAN ÉRKEZNEK.", + "JAK, HIHETETLEN TEHETSÉGED VAN AZ ÖKOCSATOLÁSHOZ!", + "SAMOS, VÉGRE IS IGAZAD LEHET!", + "ÉS KEIRA, AZ ÖN SEGÍTSÉGE ÉS LELEMESSÉGE NÉLKÜL", + "EBBŐL SEM LENNE LEHETSÉGES.", + "HM-HM-HM. TALÁN TALÁLTUNK MÁS BÖLCSÉT", + "MOST, HOGY GOL ÉS MAIA ELVESZETT...", + "IGEN, GOL ÉS MAIA... A SÖTÉT ÖKO VALÓSZÍNŰL ELPÁROLTA ŐKET.", + "Ó, VALÓSZÍNŰLEG...", + "AH, KI TÖRTÉNIK? HOZZÁ BE, ÚJRA ELVEHETJÜK ŐKET! IGAZ JAK?", + "MONDTAM, IGAZ, JAK?", + "HÚ! TEDD JÉGRE, NAGY SZÁM!" ], "green-sagecage-outro-beat-boss-enough-cells": [ - "HOLY YAKOW! WHAT COULD THAT BE?", - "WOW, IT'S AN ANCIENT PRECURSOR DOOR!", - "IT LOOKS LIKE IT WILL ONLY OPEN IF WE FILL ALL 100 HOLES WITH POWER CELLS!", - "UH, WE'RE HEROES, REMEMBER? WE HAVE 100 POWER CELLS!" + "SZENT YAKOW! MI LEHET EZ?", + "WOW, EZ EGY ŐSI ELŐADÓ AJTÓ!", + "ÚGY ÚGY ÚGY CSAK HA NYÍLJA MEG, HA MINDEN 100 LYUKAT KITÖLTÜNK TELJESÍTMÉNYCELLÁVAL!", + "HŐSÖK VAGYUNK, EMLÉKSZEL? 100 TELJESÍTMÉNYCELLÁNK VAN!" ], "green-sagecage-outro-beat-boss-need-cells": [ - "HOLY YAKOW! WHAT COULD THAT BE?", - "WOW, IT'S AN ANCIENT PRECURSOR DOOR!", - "IT LOOKS LIKE IT WILL ONLY OPEN IF WE FILL ALL 100 HOLES WITH POWER CELLS!", - "OH BOY... HERE WE GO AGAIN!" + "SZENT YAKOW! MI LEHET EZ?", + "WOW, EZ EGY ŐSI ELŐADÓ AJTÓ!", + "ÚGY ÚGY ÚGY CSAK HA NYÍLJA MEG, HA MINDEN 100 LYUKAT KITÖLTÜNK TELJESÍTMÉNYCELLÁVAL!", + "Ó FIÚ... ÚJRA INDULJUNK!" ], "green-sagecage-outro-big-finish": [ - "WOW! WHAT IS IT?", - "IT'S SO BEAUTIFUL...", - "BY THE PRECURSORS..." + "AZTA! MI AZ?", + "EZ OLYAN SZÉP...", + "AZ ELŐADÓK ÁLTAL..." ], "green-sagecage-outro-preboss": [ - "YOU'RE TOO LATE, SAMOS.", - "ONCE I POSSESS LIMITLESS DARK ECO", - "I WILL HAVE THE KEY TO CREATION ITSELF!", - "THIS IS MADNESS!", - "RELEASING THAT MUCH DARK ECO WILL DESTROY EVERYTHING WE KNOW!", - "JUST LOOK WHAT IT'S DONE TO YOU!", - "IT HAS GIVEN US A BEAUTY BEYOND ANYTHING YOU COULD UNDERSTAND.", - "BEAUTY? HAVE YOU TWO LOOKED IN THE MIRROR LATELY?", - "JUST WAIT UNTIL WE OPEN THE SILOS, LITTLE ONE.", - "YOU THINK SHORT AND FUZZY IS BAD?", - "AND TO THINK, YOU TWO TRAVELLED ALL THIS WAY FOR MY HELP.", - "FOOLS! ENJOY YOUR FRONT ROW SEATS TO THE RECREATION OF THE WORLD!", - "JAK! TAKE THE ELEVATOR UP AND STOP THAT ROBOT!" + "TÚL KÉSÉSZ, SAMOS.", + "EGYSZER VIZSGÁLATOMBAN KORLÁTOZTALAN SÖTÉT ECO", + "AZ ÖN MAGÁNAK ALKALMAZÁSÁNAK KULCSJA LESZ!", + "EZ ŐRÜLTSÉG!", + "AZ A SOK SÖTÉT ÖKO KIBOCSÁTÁSA MINDENT TÖRÖL, AMIT TUDUNK!", + "CSAK NÉZD MEG, MIT TESZT VELED!", + "SZÉPSÉGET ADOTT NEKÜNK MINDEN MINT MEGÉRTEN.", + "SZÉPSÉG? KETTŐNEK NÉZTÉK A TÜKRÖBE AZ ÚJABBAN?", + "CSAK VÁRJON MEG, MÉG KINYITJUK A SILÓT, KICSI.", + "SZERINTED A RÖVID ÉS A FUZZY ROSSZ?", + "ÉS HOGY GONDOLKODJUK, TI KETTŐK AZ ÉN SEGÍTSÉGEMÉRT UTAZTÁTOK EZT AZ UTAT.", + "BOLTOK! ÉLVEZZE AZ ELSŐ SORI ÜLÉSEKET A VILÁG KIADÁSÁHOZ!", + "JAK! SZÜLJ FEL A LIFTBŐL, ÉS MEGÁLLÍTSA A ROBOTOT!" ], "green-sagecage-resolution": [ - "GOOD WORK, BOYS! YOU'RE REAL HEROES NOW.", - "I'LL COMBINE MY GREEN ECO POWER WITH THE OTHER THREE SAGES", - "AND TOGETHER WE'LL OPEN THE SHIELD DOOR SURROUNDING THE PRECURSOR ROBOT.", - "YEAH YEAH THAT SOUNDS LIKE A GOOD START.", - "AND THEN AFTER YOU GUYS OPEN THAT SHIELD", - "WHAT ARE YOU GONNA DO ABOUT THE ROBOT?", - "NOTHING, DAXTER. WE HAVE TO KEEP THE SHIELD OPEN.", - "IT'S UP TO YOU TWO TO FIGURE OUT HOW TO DESTROY THE ROBOT.", - "OH, GREAT. I GET TO HELP THE GUY THAT TURNED ME INTO A FURBALL", - "DESTROY THE ONLY PERSON WHO CAN TURN ME BACK!", - "FIRST, SAVE THE WORLD!", - "THEN WE'LL TRY TO CONVINCE GOL TO HELP DAXTER." + "JÓ MUNKÁT FIÚK! MOST IGAZI HŐSÖK VAGYTOK.", + "EGYESÍTEM A ZÖLD ÖKOERŐM A MÁS HÁROM BÖLCSÉVEL", + "ÉS EGYÜTT KINYITJUK AZ ELŐZŐROBOTOT KÖRÜLŐ PAJZS AJTÓT.", + "IGEN IGEN, EZ JÓL KEZDÉSÉNEK HANGZIK.", + "ÉS MAJD MIUTÁN KINYITOTTOK AZT A PAJZSOT", + "MIT CSINÁL A ROBOTTAL?", + "SEMMIT, DAXTER. A PAJZSOT NYITVA KELL TARTANUNK.", + "KETTŐTöKöN MÚLIK, HOGY HOGYAN MEGTÖRÍTJÜK A ROBOTOT.", + "REMEK. SEGÍTENEM A SZÁMNOKNAK, AKI FÉRBOLLÁ VÁLT", + "PUSZTÍTSD BE AZ EGYETLEN EMBERT, AKI VISSZA FORMÁLHAT!", + "ELŐSZÖR MENTSD MEG A VILÁGOT!", + "AZTÁN MEGPRÓBÁJUK MEGGYŐZNI GOL-T, HOGY SEGÍTSEN DAXTER-T." ], "mayor-introduction": [ - "NO... (MUTTERS) DON'T TELL ME THAT YOU TWO HAVE PROBLEMS AS WELL!", - "FIRST I HEAR OF MONSTER SIGHTINGS NEAR THE VILLAGE, AND NOW THIS.", - "SEE THOSE GEARS UP THERE, BOYS? SEE THEM? SEE HOW THEY'RE NOT MOVING?", - "THAT MEANS OUR VILLAGE HAS NO POWER!", - "THE ECO BEAM COMING FROM THE JUNGLE TEMPLE HAS BEEN INTERRUPTED!", - "AND BOYS, EVERYONE'S TOO FRIGHTENED TO GO OUT AND FIND OUT WHAT'S HAPPENED.", - "DID YOU PAY THE BILL?", - "YEAH-HMM? OH-HUH-OH, YOU'RE FUNNY.", - "NOW LOOK, IF YOU TWO FIX THE ECO BEAM, I'LL GIVE YOU A POWER CELL.", - "OH OOH OOH AND-AND ANOTHER THING, UH...", - "IF BY ANY CHANCE YOU'RE INTERESTED IN MAKING A CONTRIBUTION TO MY RE-ELECTION CAMPAIGN,", - "I-I MIGHT BE WILLING TO PART WITH YET ANOTHER POWER CELL!", - "THE MINIMUM CONTRIBUTION IS, OH, A VERY MODEST...", - "90 PRECURSOR ORBS." + "NEM... (MOTOG) NE MONDJA MEG, HOGY NEKTEK IS PROBLÉMÁID VAN!", + "ELŐSZÖR SZÖRNYETÉRŐL HALLOK A FALU KÖZELBEN, ÉS MOST EZT.", + "LÁTJÁK AZOKAT OTT FEL, FIÚK? NÉZD ŐKET? LÁTOD, HOGY NEM MOZNAK?", + "EZ AZT JELENTI, HOGY FALUNKNAK NINCS ERŐ!", + "A DZSUNGLE TEMPLOMBÓL JÖVŐ ÖKOSUGÁR MEGSZAKADT!", + "ÉS FIÚK, MINDENKI TÚL RÉJT AZHOZ, HOGY KIMENJÜK, ÉS MEGTALÁLJÁK, MI TÖRTÉNT.", + "KIFIZETE A SZÁMLÁT?", + "IGEN-HMM? Ó-HU-Ó, VICCES VAGY.", + "MOST NÉZZE MEG, HA KETTŐK MEGJAVÍTOTÁK AZ ECO GERENDÁT, ADOK NEKED EGY TELJESÍTMÉNYCELTÁT.", + "Ó, Ó, Ó, ÉS MÉG EGY DOLOG, Ó...", + "HA BÁRMILYEN VÉLETLENÜL ÉRDEKLŐDNEK AZ ÚJRAVÁLASZTÁSI KAMPÁNYOMHOZ HOZZÁJÁRULÁSHOZ,", + "TALÁN HAJNÁL VÁLASZOK MÉG MÉG EGY MÁSIK ERŐSELTŐL!", + "A MINIMÁLIS HOZZÁJÁRULÁS Ó, NAGYON SZERÉNY...", + "90 ELŐZŐ GOMB." ], "mayor-reminder-beams": [ - "BACK ALREADY? AND WITHOUT FIXING THE ECO BEAMS?", - "(SOBS) YOUR VILLAGE NEEDS YOU, BOYS!" + "MÁR VISSZA? ÉS AZ ECO GERENDÁK RÖGZÍTÉSE NÉLKÜL?", + "(ZOKO) SZÜKSÉGE VAN RÁTOK FALUTOK, FIÚK!" ], "mayor-reminder-donation": [ - "AH, HERE TO MAKE A DONATION TO MY CAMPAIGN, OH HO HO HO.", - "90 PRECURSOR ORBS BUYS YOU A POWER CELL, THANK YOU." + "AH, HOGY ADOMÁNYOZHATOK KAMPÁNYOMNAK, OH HO HO HO.", + "90 PRECURSOR ORBS VÁSÁROL NEKED EGY TELJESELLEGET, KÖSZÖNJÜK." ], "mayor-resolution-beams": [ - "OH HO HO, WHAT A WONDERFUL SIGHT! I THANK YOU!", - "AND THE ENTIRE VILLAGE WILL THANK ME -", - "UH, BOYS, YOU HAVE RESTORED POWER TO THE VILLAGE AND GUARANTEED MY RE-ELECTION!", - "AND FOR THAT, MY BOY, YOU'VE EARNED A POWER CELL." + "Ó HO HO, MILYEN CSODÁLATOS LÁTVA! KÖSZÖNÖM!", + "ÉS AZ EGÉSZ FALU KÖSZÖNNI FOG NEKEM -", + "UH, FIÚK, VISSZAÁLLÍTOTOK A FALU HATALMÁT, ÉS GARANTÁLTÁTOK AZ ÚJRAVÁLASZTÁSOMAT!", + "ÉS EZÉRT, FIÚM, EGY ERŐSELTÁT KERETTED." ], "mayor-resolution-donation": [ - "SO EH, YOU UH, WANNA MAKE A CONTRIBUTION? GOOD... A-A-A SIZABLE ONE I HOPE.", - "YOOH! EH HE HE, IT'S A, OH, THIS IS A SIZABLE CONTRIBUTION!", - "I, WH-WH-WH-WHY I JUST HOPE THIS POWER CELL ADEQUATELY REPRESENTS MY GRATITUDE." + "HOGY HA, ÖN, SZERETNÉL HOZZÁJÁRULNI? JÓ... A-A-EGY MÉRETE REMÉLEM.", + "YOOH! EH HE HE, EZ A, Ó, EZ MÉRETES HOZZÁJÁRULÁS!", + "ÉN, MI-MI-MIÉRT CSAK REMÉLEM, EZ AZ ERŐSEJT MEGFELELŐEN KÉPVISELI HÁLAMAT." ], "minershort-introduction-gnawers": [ - "WHY DON'T YOU TWO MAKE YOURSELVES USEFUL?", - "LURKERS HAVE BEEN EXCAVATIN' THE DARK CAVES OVER THERE.", - "SEEMS THEY'RE LOOKIN' FOR PRECURSOR ARTIFACTS.", - "THEY CAN HAVE THE ARTIFACTS, FOR ALL I CARE.", - "FOR ALL WE CARE!", - "WILLARD, FEED YOUR BIRD.", - "ALL I CARE ABOUT ARE GEMS!", - "BUT I AIN'T GONNA BE ABLE TO GET THE CAVE'S GEMS", - "BECAUSE WHEN THEY'RE THROUGH, THEY'RE GONNA COLLAPSE THE PLACE!", - "IF YOU TAKE OUT THE LURKERS CHEWIN' AT THE SUPPORT BEAMS,", - "YOU COULD SAVE THE CAVE FOR ME.", - "NOW BEAT IT!" + "MIÉRT NEM HASZNOSÍTJÁTOK MAGAD KETTÉN?", + "A LURKOK AZ OTTAN SÖTÉT BARLANGOKAT KÁTÁSTÁK.", + "ÚGY TŰNIK, ELŐZŐ MŰTERMÉKEKET KERESEK.", + "LEHET NEKÜK A MŰKÉSZÉKEK, MINDEN ÉRDEKEL.", + "MINDENKINEK MINDENKÉNT!", + "WILLARD, EGESSZ A MADARAD!", + "CSAK AZ ÉRDEKEL CSAK A KÖRNYÉKEK!", + "DE NEM FOGOM MEGSZEREZNI A BARLANG KÖNYVEIT", + "MERT AMIKOR ÁTVÉNEK, ÖSSZEFOGYIK A HELYET!", + "HA KIVESZI A TARTÓGENDÁKAT RÁGÓ LURKEREKET,", + "MEGMENTHETNÉD NEKEM A BARLANGOT.", + "MOST GYŐZD MEG!" ], "minershort-introduction-orbs": [ - "HEY GORDY, DUH, I THINK WE GOT VISITORS.", - "YA THINK, WILLARD? HOWDY, STRANGERS, UH, PASSING THROUGH?", - "UH, US, TOO. WELL, WE GOTTA BE MOVIN' ON, NOTHIN' TO SEE HERE.", - "DUH, I THOUGHT YOU SAID THIS WAS A PRICELESS GEM WORTH-", + "HÉ, GORDY, DUH, SZERINTEM LÁTOGATÓK VAN.", + "SZERINTED, WILLARD? ÜDVöZLET, IDEGENEK, ÁTHATÓ?", + "UH, USA IS. NOS, TOVÁBB KELL LÉPNÜNK, ITT NINCS LÁTNI.", + "DUH, AZT HITTEM, AZT MONDTAD, HOGY EZ EGY FELÉRTÉKELÉS, MEGÉR", "WILLARD!", - "ACTUALLY, WE WANT POWER CELLS. NOT GEMS.", - "WE GOT FOUR OF 'EM. DUH, YOU WANT 'EM?", - "WHAT BIRD-BRAIN HERE IS TRYING TO SAY IS,", - "WE MAY HAVE A FEW POWER CELLS LAYING AROUND,", - "AND WE MIGHT BE WILLING TO PART WITH THEM FOR...", - "90 ORBS EACH.", - "WHERE HAVE I HEARD THAT BEFORE?", - "HEY, HOW DO YOU TWO GENIUSES EXPECT TO GET THAT BIG GEM OUTTA HERE ANYWAY?", - "WELL, SMARTYPANTS, WE GOT TWELVE MORE YEARS OF DIGGIN' TO FIGURE THAT OUT.", - "UHH... GORDY, WOULDN'T IT TAKE LESS TIME IF YOU DUG, TOO?" + "TÉNYLEG KERÜLÜNK ERŐCELLÁKAT. NEM KÖRNYÉKEK.", + "NÉGY KAPTUNK. DUH, AKAROD ŐKET?", + "AMIT ITT MADÁR-AGY PRÓBÁL MONDNI,", + "LEHET NÉHÁNY TELJESÍTMÉNYCELLÁNK,", + "ÉS LEHET, HOGY HAJLANDÓAK LENNÉNK MEGVÁLNI TŐLÜK, MERT...", + "MINDENKÉNT 90 ORBS.", + "HOL HALLOTTAM EZT MÉG?", + "HÉ, HOGY KÉT ZSENI HOGY VÁRJA KI INNEN EZT A NAGY KÖRNYÉKET?", + "NOS, SMARTYPANTS, MÉG TIZENKÉT ÉV KERÜLÜNK, HOGY MEGÁLLAPÍTSUK EZT.", + "UHH... GORDY, NEM VESZE KEVESEBB IDŐT, HA TE IS ÁSNÁL?" ], "minershort-introduction-switch": [ - "PSST, GUYS. DUH...", - "BIRDIE AND I WAS EXPLORING A CAVE YOU'D LIKE!", - "IT WAS FILLED WITH PRETTY ORANGE METAL,", - "AND HIDDEN REAL GOOD BEHIND SOME TREES IN THE SNOWY MOUNTAINS!", - "I TOLD GORDY, BUT HE JUST YELLED AT ME FOR NOT DIGGING!", - "WHY AREN'T YOU DIGGING?!", - "I'M SORRY!" + "PSST, SRÁCOK. DUH...", + "BIRDIE ÉS ÉN EGY BARLANGOT KUTATUNK FEL!", + "CSINOS NARANCS FÉMMEL TÖLTVE,", + "ÉS NÉHÁNY FA MÖGÖTT IGAZI JÓT ELREJTETT A HAVAS HEGYEKEN!", + "MEGMONDTAM GORDY-T, DE Ő CSAK KIBONTOTTA RÁM, HOGY NE ÁSSAM!", + "MIÉRT NEM ÁSSZ?!", + "SAJNÁLOM!" ], "minershort-reminder-1-gnawers": [ - "WOULD YOU TAKE CARE OF THOSE LURKERS", - "CHEWIN' AT THE DARK CAVE SUPPORT BEAMS ALREADY!", - "THOSE BEAMS CAN'T TAKE THAT KIND OF ABUSE FOREVER!" + "VIGYÁZNÁLNA AZOKRA A LURKOLÓKRA", + "MÁR RÁGJA A SÖTÉT BARLANG TARTÓGENDÁJÁT!", + "AZOK A GERENDÁK NEM TUDJÁK EL ÖRÖKRE AZ ILYEN SZÉNZÉSEKET!" ], "minershort-reminder-1-orbs": [ - "DON'T FORGET OUR DEAL. BRING US 100 ORBS.", - "DUH... YOU SAID 90.", + "NE FELEJTSÜK EL AZ AKCIÓNKAT. HOZZ EL 100 ORBS-T.", + "DUH... 90-ET MONDTAD.", "WILLARD!", - "FINE. 90 ORBS A POWER CELL." + "BÍRSÁG. 90 ORBS EGY ERŐSEJTA." ], "minershort-reminder-1-switch": [ - "DID YOU FIND THE CAVE BEHIND THEM TREES IN THE SNOWY MOUNTAINS?", - "I'M GONNA GO THERE SOON, TO HIDE FROM GORDY, 'CAUSE HE'S YELLING AT ME AGAIN!", + "MEGTALÁLTÁL A HAVAS HEGYEKBEN A FÁK MÖGÖTT A BARLANGOT?", + "HAMAROSAN ODA MEGYEK, HOGY BÚJTEK GORDY ELŐL, MERT MEGÚJRA KIABÁL VELEM!", "WILLARD!!" ], "minershort-reminder-2-orbs": [ "DUH, GORDY?", - "90 ORBS A POWER CELL, WILLARD! URGH!" + "90 ORBS EGY ERŐSEJTE, WILLARD! URGH!" ], "minershort-resolution-1-orbs": [ - "OH, ALRIGHT ALREADY.", - "HERE'S A POWER CELL FOR THOSE ORBS OF YOURS." + "Ó, RENDBEN MÁR.", + "ITT VAN EGY ERŐCELLÁT AZOKHOZ AZ ÖN GOMBAIHOZ." ], "minershort-resolution-2-orbs": [ - "OOH! OH, I GOT IT THIS TIME! UH...", - "HERE'S A...", - "DUHH.. HERE'S A...!", - "A POWER CELL!", - "YEAH, YEAH... WHAT HE SAID.", - "THAT'S IT. YOU'VE CLEANED US OUT.", - "NO! MORE! POWER! CELLS!" + "OOH! Ó, EZÚTTAL MEGÉRTEM! UH...", + "ITT EGY...", + "DUHH.. ITT A...!", + "EGY ERŐCELLÁT!", + "IGEN, IGEN... AMIT MONDOTT.", + "EZ AZ. TISZTÍTOTTÁK KI MINKET.", + "NEM! TÖBB! ERŐ! CELLS!" ], "oracle-intro-1": [ - "WHO AWAKENS THE ORACLE?", - "WAIT, ONE OF YOU HAS THE LIGHT WITHIN.", - "FROM BEFORE TIME, I HAVE WATCHED AND WAITED", - "FOR THE TRUE HERO TO RETURN.", - "PRESENT TO ME 120 PRECURSOR ORBS", - "FOR EACH POWER CELL I CONTAIN." + "KI ÉBRESZTI FEL AZ ORÁKULUMOT?", + "VÁRJON, EGYIKÜK BELÜL VAN A FÉNY.", + "AZ IDŐTŐL NÉZTEM ÉS VÁRTAM", + "HOGY AZ IGAZI HŐS VISSZATÉRJEN.", + "AJÁNDÉK MEG 120 ELŐZŐ GOMBOT", + "MINDEN TARTALOM TELJESÍTMÉNYELEMÉRE." ], "oracle-intro-2": [ - "BEWARE OF THE DARK LIGHT,", - "FOR IT HAS TWISTED THE FATE OF ONE OF YOU.", - "BRING ME 120 PRECURSOR ORBS", - "FOR EACH POWER CELL I CONTAIN." + "VIGYÁZAT A SÖTÉT FÉNYTŐL,", + "MERT AZ EGYIKÜTEK SORSÁT MEGOSZTTA.", + "HOZZ EL 120 ELŐFORMÁT GOMBOT", + "MINDEN TARTALOM TELJESÍTMÉNYELEMÉRE." ], "oracle-intro-3": [ - "SEEK THE PURE LIGHT, FOR WITHIN ITS FLAME THE ANSWERS RESIDE.", - "YOU CAN GAIN MY POWER CELLS", - "BY BRINGING 120 PRECURSOR ORBS FOR EACH." + "KERESSE A TISZTA FÉNYT, MERT LÁNGÁN BELÜL A VÁLASZOK LÉZNEK.", + "MEGNYERHETSZ AZ ERŐSEJTEIMET", + "MINDENKÉNT 120 ELŐZŐGORBA HOZÁSÁVAL." ], "oracle-left-eye-1": [ - "YOU HAVE PROVEN YOURSELF WORTHY. HERE IS A POWER CELL." + "MÉRLEGESEN BIZONYÍTOD MAGAD. ITT VAN EGY TELJESÍTMÉNYCELLA." ], "oracle-left-eye-2": [ - "FOR YOUR SACRIFICE, I OFFER YOU A POWER CELL." + "ÁLDOZATÁÉRT EGY ERŐSELTÁT AJÁNLOM." ], "oracle-left-eye-3": [ - "FOR YOUR EFFORT, A POWER CELL IS THE REWARD." + "AZ ÖN ERŐKÉSZÍTÉSÉÉRT EGY TELJESÍTMÉNY CELL A JUTALMA." ], "oracle-reminder-1": [ - "BRING TO ME 120 PRECURSOR ORBS", - "AND I WILL AWARD YOU A POWER CELL." + "HOZZ HOZZÁM 120 ELŐZŐGOMBOT", + "ÉS KIADOM NEKED EGY ERŐSEJTET." ], "oracle-reminder-2": [ - "PRESENT 120 PRECURSOR ORBS", - "AND A POWER CELL WILL BE YOUR REWARD." + "JELEN 120 ELŐZETŐ GOMB", + "ÉS EGY TELJESELLEMZŐ LESZ A JUTALMA." ], "oracle-reminder-3": [ - "YOU MUST BRING 120 PRECURSOR ORBS", - "TO ME FOR EACH POWER CELL I CONTAIN." + "HOZZAN KELL 120 ELŐFORMÁT", + "NEKEM MINDEN TARTALOM TELJESÍTMÉNYCEJÉÉRT." ], "oracle-right-eye-1": [ - "FOR YOUR GIFT, ANOTHER POWER CELL IS YOURS." + "AZ ÖN AJÁNDÉKÉÉRT EGY MÁSIK TELJESÍTMÉNY CELLE A TIÉD." ], "oracle-right-eye-2": [ - "HERE IS ANOTHER POWER CELL FOR YOUR QUEST." + "ITT VAN EGY MÁSIK TELJESÍTMÉNY CELL A KÜLDETÉSÉHEZ." ], "oracle-right-eye-3": [ - "YOU HAVE OBTAINED ANOTHER POWER CELL." + "MÁSIK ERŐCELLÁT SZEREZETT." ], "redsage-resolution": [ - "HE-HE-HEH... YOU'VE FINALLY COME TO RESCUE ME.", - "DO YOU KNOW HOW LONG I'VE BEEN IN HERE?", - "WHAT TOOK YOU SO LONG? AND UH, HE-HE-HEH...", - "WHAT ARE YOUR NAMES?", - "I'M DAXTER! HE'S JAK, HE'S WITH ME.", - "GOOD JOB, DAXTER. YOU'RE A REAL HERO.", - "YOU'VE GOT TO STOP GOL FROM LAUNCHING THE ROBOT.", - "I'LL USE MY ECO POWER TO HELP OPEN THE SHIELD DOOR." + "HE-HE-HH... VÉGRE ELJÖTTÉL MEGMENTESEN.", + "TUDJA, MIÓTA VÁROK ITT?", + "MI TARTOTT ILYEN SOKÁIG? ÉS UH, HE-HE-HH...", + "MIK A NEVEID?", + "DAXTER VAGYOK! Ő JAK, VELEM VAN.", + "JÓ MUNKÁT, DAXTER. IGAZI HŐS VAGY.", + "MEG KELL MEGÁLLÍTANI A GOL-T A ROBOT ELINDÍTÁSÁBAN.", + "AZ ÖKO-ERŐM HASZNÁLATÁVAL SEGÍTEM KINYITNI A PAJZS AJTÓJÁT." ], "sage-bluehut-introduction-crop-dusting": [ - "WELL, THE SITUATION HERE STINKS WORSE THAN A LURKER'S ARMPIT.", - "BEFORE BLUE SAGE'S DISAPPEARANCE,", - "HE JOURNALED SIGNIFICANT TROUBLE IN ALL OF THE SURROUNDING AREAS.", - "OF PARTICULAR INTEREST TO ME IS THE DARK ECO INFECTION", - "OF SOME INNOCENT PLANTS IN THE PRECURSOR BASIN.", - "KEIRA WILL TELEPORT YOUR A-GRAV ZOOMER TO THE NEAREST TRANS-PAD.", - "RIDE THE ZOOMER TO A GREEN ECO VENT,", - "AND THEN CARRY THE GREEN ECO TO THE CORRUPTED PLANTS.", - "THAT SHOULD HEAL THEM.", - "DON'T MISS A SINGLE PLANT, OR THE INFECTED ONES WILL SLOWLY RE-INFECT THE HEALTHY ONES.", - "AND, DAXTER...", - "START CLEANING UP IN HERE!", - "AND DON'T FORGET THE CORNERS!" + "HÁT, ITT ROBBAN BÜZD A HELYZET, MINT EGY LUKKOZÓ HÓNAJA.", + "A KÉK ZSÁLYA ELTŰNÉSE ELŐTT,", + "AZ ÖSSZES KÖRNYEZETT TERÜLETÉN JELENTŐS BAJOKAT KÖRNYEZETT.", + "KÜLÖNÖSEN ÉRDEKELŐ SZÁMRA A SÖTÉT ÖKO-FERTŐZÉS", + "NÉHÁNY ÁRTATLAN NÖVÉNYRŐL AZ ELŐADÓ-MEDENCIÁBAN.", + "A KEIRA TELEPORTÁLJA A-GRAV ZOOMERÉT A LEGKÖZELBBI TRANS-PAD-RE.", + "A ZOOMER CSALÁD A ZÖLD ÖKOSZELLŐZŐHEZ,", + "ÉS AZTÁN VIGYE A ZÖLD ÖKO-T A RÖVÜLT NÖVÉNYEKRE.", + "EZ KELL GYÓGYÍTNI ŐKET.", + "NE HAGYJ EL EGY NÖVÉNYT, MELLETT A FERTŐZŐDŐK LASSAN ÚJRA FERTŐZIK AZ EGÉSZSÉGESEKET.", + "ÉS DAXTER...", + "A TAKARÍTÁST KEZDJ EL ITT!", + "ÉS NE FELEJTSÜK EL A SAROKOKAT!" ], "sage-bluehut-introduction-prec-arm": [ - "WELL, I HOPE YOU'VE PACKED A LUNCH. 'CAUSE WE'RE JUST GETTING STARTED.", - "ACCORDING TO THE BLUE SAGE'S NOTES,", - "LURKERS HAVE INFESTED THE SWAMP ACROSS THE BAY.", - "APPARENTLY, THEY'RE PLANNING TO USE A DIRIGIBLE", - "TO LIFT AN IMPORTANT PRECURSOR ARTIFACT FROM THE MUCK.", - "YOU'RE GOING TO HAVE TO GET OVER THERE TO DISLODGE THEIR TETHERS.", - "WHO KNOWS WHAT THEY MIGHT WANT WITH THE ARTIFACT,", - "BUT LIKE ORANGE STUFF HERE'S BREATH, IT JUST CAN'T BE GOOD." + "REMÉLEM, ELCSOMAGOLTAD EGY EBÉDET. MERT MEG KEZDJÜK.", + "A KÉK ZSÍLÁS JEGYZETE SZERINT,", + "A LURKÓK AZ ÖBÖL TÚL SZÁRMAZÓ MOCSÁRT MEGÁLLÍTOTTÁK.", + "ÚTMUTATÓ, IRÁNYÍTÓ HASZNÁLATÁT TERVEZIK", + "EGY FONTOS ELŐADÓ MŰTERMÉKET EMELNI A SZÁRBÓL.", + "ODA KELL ÁT KÉSZÜLNI, HOGY KISZORÍTSA A KIKÖTŐKET.", + "KI TUDJA, MIT AKARHATNAK A MŰTERMÉKNEL,", + "DE MINT A NARANCS CUKK A LÉLEGZET, NEM LEHET JÓ." ], "sage-bluehut-reminder-1-crop-dusting": [ - "MY EYES MUST BE DECEIVING ME!", - "BECAUSE I KNOW THAT THE TWO OF YOU ARE DEEP IN THE PRECURSOR BASIN,", - "SAVING THE DARK ECO-INFECTED PLANTS." + "A SZEMEM BIZTOSAN MEGCSALJ!", + "MERT TUDOM, HOGY KETTŐTEK MÉLYEN VAGYOK AZ ELŐADÓ-MEDENCIÁBAN,", + "A SÖTÉT ÖKO-FERTŐZTETT NÖVÉNYEK MEGMENTÉSE." ], "sage-bluehut-reminder-1-prec-arm": [ - "WHAT ARE YOU DOING BACK HERE ALREADY?", - "I CAN SEE FROM THE BALCONY", - "THAT THE LURKER DIRIGIBLE IS STILL FLOATING ABOVE THE SWAMP.", - "YOU OBVIOUSLY HAVEN'T COMPLETED YOUR TASK.", - "GET MOVING!" + "MIT KERESSZ MÁR ITT VISSZA?", + "AZ ERKÉLYRŐL LÁTOM", + "HOGY A LURKER IRÁNYÍTHATÓ MÉG MÉG A LÁCS FÖTT LEBESZIK.", + "NYILVÁN NEM VÉGEZTE VÉGRE A FELADATÁT.", + "MOZGÁS!" ], "sage-intro-sequence-a": [ - "I HAVE SPENT MY LIFE SEARCHING FOR THE ANSWERS THAT MY FATHER,", - "AND MY FATHER'S FATHERS FAILED TO FIND.", - "WHO WERE THE PRECURSORS?", - "WHY DID THEY CREATE THE VAST MONOLITHS THAT LITTER OUR PLANET?", - "HOW DID THEY HARNESS ECO, THE LIFE ENERGY OF THE WORLD?", - "WHAT WAS THEIR PURPOSE? AND WHY DID THEY VANISH?", - "I HAVE ASKED THE PLANTS, BUT THEY DO NOT REMEMBER.", - "THE PLANTS HAVE ASKED THE ROCKS, BUT THE ROCKS DO NOT RECALL.", - "EVEN THE ROCKS DO NOT RECALL...", - "EVERY BONE IN MY BODY TELLS ME THAT THE ANSWERS REST", - "ON THE SHOULDERS OF A YOUNG BOY", - "OBLIVIOUS TO HIS DESTINY, UNINTERESTED IN THE SEARCH FOR TRUTH", - "AND REJECTING OF MY GUIDANCE!", - "AND WHY WOULD HE WANT TO LISTEN TO OLD SAMOS THE SAGE ANYWAY?", - "I'M ONLY THE MASTER OF GREEN ECO, ONE OF THE WISEST MEN ON THE PLANET!", - "SO IT SEEMS THE ANSWER BEGINS NOT WITH CAREFUL RESEARCH", - "OR SENSIBLE THINKING.", - "NAY! AS WITH MANY OF FATE'S MYSTERIES", - "IT BEGINS WITH BUT A SMALL ACT OF DISOBEDIENCE.", - "HEY! UH, JAK? OL' GREEN STUFF TOLD US NOT TO COME HERE!" + "AZ ÉLETEMET AZOKAT KERESTEM, HOGY AZ APÁM,", + "ÉS APÁM APÁJAIT NEM TALÁLHATTA MEG.", + "KI VOLT AZ ELŐZETŐK?", + "MIÉRT LÉTREHOZTAK AZOKAT A HATALMAS MONOLITOKAT, AMELYEK SZEMETTEK BOLYGÓNKAT?", + "HOGYAN HASZNÁLHATTÁK FEL AZ ECO-T, A VILÁG ÉLETENERGIÁJÁT?", + "MI VOLT A CÉLUK? ÉS MIÉRT TÖNTEK EL?", + "KÉRDEZTEM A NÖVÉNYEKET, DE NEM EMLÉKSZIK.", + "A NÖVÉNYEK KÉRDEZTÉK A SZIKLÁKAT, DE A SZIKLÁK NEM EMLÉKEZIK.", + "MÉG A SZIKLÁK NEM EMLÉKEZNEK...", + "MINDEN CSONT A TESTEMBEN AZT MONDJA, HOGY A VÁLASZOK MEGHAJNÁK", + "FIATALFIÚ VÁLLARA", + "FONTOS A SORSZÁT, AZ IGAZSÁG KERESÉSE NEM ÉRDEKLŐDIK", + "ÉS ELUTASÍTÁSA AZ ÚTMUTATÁSOMAT!", + "ÉS MIÉRT AKARNA HALLGATNI AZ ÖREG SAMOS BÖLCSÉT?", + "CSAK ÉN VAGYOK A GREEN ECO MESTERE, A BOLYGÓ EGYIK LEGFONTOSABB BÖLCSÉSE!", + "ÍGY ÚGY TŰNIK, A VÁLASZ NEM GONDOS KUTATÁSSAL KEZDŐDIK", + "VAGY ÉRTELMES GONDOLKODÁS.", + "NEM! MINT A SOR SOK REJTÉMÉNEK", + "AZ ALKALMAZÁSSAL KEZDŐDIK.", + "HÉ! UH, JAK? AZ OL' GREEN STUFF AZT MONDTA NEKÜNK, HOGY NE GYERJÜNK IDE!" ], "sage-intro-sequence-d1": [ - "WHAT IN GREEN TARNATION DO YOU TWO WANT?", - "WE- WE- WE WAS- THEY WAS- I'M- I WAS-", - "DON'T TELL ME! INSTEAD OF HEEDING MY WISDOM", - "THE TWO OF YOU WENT MUCKING AROUND", - "IN THE ONLY PLACE THAT I TOLD YOU NOT TO GO: MISTY ISLAND!", - "THAT'S RIGHT! AND THEN-", - "AND, DAXTER, YOU FINALLY TOOK A MUCH-NEEDED BATH", - "BUT IN A BATHTUB FILLED WITH DARK ECO.", - "LOOK, OLD MAN, ARE YOU GONNA KEEP YAPPIN'", - "OR YOU GONNA HELP ME OUTTA THIS MESS!?", - "I'M GONNA KEEP YAPPIN'! BECAUSE IN MY PROFESSIONAL OPINION", - "THE CHANGE IS AN IMPROVEMENT.", - "AND BESIDES... I COULDN'T HELP YOU IF I WANTED TO.", - "WHAT!?", - "THERE'S ONLY ONE PERSON WHO HAS STUDIED DARK ECO LONG ENOUGH", - "TO HAVE A CHANCE AT RETURNING YOU TO YOUR PREVIOUS FORM:", - "GOL ACHERON, THE SAGE.", - "BUT HE LIVES FAR TO THE NORTH. FAR, FAR TO THE NORTH.", - "NOBODY HAS SPOKEN TO HIM IN AGES.", - "I WOULD TELEPORT YOU THERE, BUT I CAN'T DO THAT EITHER.", - "NONE OF THE THREE SAGES THAT MAINTAIN THE OTHER TELEPORTER GATES", - "HAVE SEEN FIT TO TURN THEIR ENDS ON FOR QUITE A WHILE!" + "MIT AKARSZ TI KETTŐ A ZÖLD TARNÁCIÓBAN?", + "MI- MI- VOLTUNK- ŐK VOLT- ÉN- VAGYUNK-", + "NE MONDD MEG! AHELYETT, HOGY FIGYELMEZTETNE A BÖLCSESSÉGEMRE", + "KETTŐTŐK SZEMÉLYEZTETTEK", + "AZ EGYETLEN HELYEN, AHOVA MONDTAM, HOGY NE MENJ: KÖDSZIGET!", + "ÚGY VAN! ÉS AKKOR-", + "ÉS, DAXTER, VÉGRE VETTED EGY NAGYON SZÜKSÉGES FÜRDŐT", + "DE SÖTÉT ÖKOVAL TELT KÜRDŐBEN.", + "NÉZD, ÖREGEM, MEGFOGADTAD YAPPIN?", + "VAGY TE SEGÍTESZ KI EZBŐL A SZÁMÁRA!?", + "TARTOM YAPPIN! MERT SZAKMAI VÉLEMÉNYEM SZERINT", + "A VÁLTOZÁS FEJLESZTÉS.", + "ÉS EMELLETT... HA AKARTAM NEM TUDOK SEGÍTENI.", + "MIT!?", + "CSAK EGY EMBER VAN, AKI ELÉG SOKÁT TANULJA A SÖTÉT ÖKOZAT", + "HOGY LEHET LEHETŐSÉGE VISSZA VISSZÁLLÍTANI AZ ELŐZŐ ŰRLAPJÁHOZ:", + "GOL ACHERON, A BÖLCS.", + "DE TOSSZON ÉSZAKON ÉL. TOSSZON, TOVÁBB ÉSZAKRA.", + "SENKI NEM BESZÉLT VELE RÉSZAK ÓTA.", + "ODA TELEPORTÁLNAK, DE EZT SEM TUDOM.", + "EGYIK A HÁROM BÖLCS ABBAN, AMELY A TÁBBI TELEPORTER KAPUT FENNTARTJA", + "ALKALMAZOTTÁK, HOGY RÉGRE BEKAPCSOLJUK A VÉGÜKET!" ], "sage-intro-sequence-d2": [ - "THE ONLY OTHER WAY NORTH IS BY FOOT THROUGH THE FIRE CANYON", - "BUT ITS VOLCANIC SOIL IS HOT ENOUGH TO MELT PRECURSOR METAL.", - "YOU CAN'T JUST WALK THROUGH IT.", - "BUT YOU COULD FLY OVER IT", - "IF YOU HAD A ZOOMER EQUIPPED WITH A HEAT SHIELD.", - "I JUST HAPPEN TO BE WORKING ON SUCH A THING AT THIS VERY MOMENT.", - "ALL I WOULD NEED IS TWENTY POWER CELLS TO GIVE IT ENOUGH ENERGY", - "TO WITHSTAND THE CANYON'S HEAT. ISN'T THAT RIGHT, DADDY?", - "YES, KEIRA, THAT MIGHT WORK. BUT WHERE ARE A BOY", - "AND A HALF!", - "GOING TO GET TWENTY POWER CELLS?", - "FROM THE VILLAGERS! MOST OF THEM HAVE A POWER CELL OR TWO", - "STASHED AWAY SOMEWHERE.", - "AND EVEN IF THEY AREN'T WILLING TO JUST GIVE THEM AWAY", - "GREASING THEIR PALMS WITH A FEW PRECURSOR ORBS SHOULD DO THE TRICK.", - "AND I BET THERE ARE EVEN MORE OF THEM OUT IN THE WILDS JUST WAITING FOR SOME", - "BRAVE ADVENTURER TO FIND.", - "WELL WE'VE GOT THE BRAVE ADVENTURER, AT LEAST.", - "BRAVE ADVENTURER?", - "YOU TWO COULDN'T FIND YOUR WAY OUT OF THE VILLAGE WITHOUT TRAINING!", - "BEFORE YOU DO ANYTHING ELSE, YOU BETTER GO THROUGH THE WARP GATE AND GET", - "SOME PRACTICE ON GEYSER ROCK.", - "UH, WE WON'T FIND ANY MORE OF THAT DARK GOOEY ECO STUFF, WILL WE?", - "'CAUSE I'D HATE TO FALL IN AGAIN AND TURN INTO YOU!", - "GET IN THERE! BEFORE I TURN YOU BOTH INTO FERNS!" + "AZ EGYETLEN MÁS ÚT ÉSZAKRA VAN GYALBAN A TŰZKANYONON KERESZTÜL", + "DE VULKÁNI TALAJJA ELÉG MELEG AZ ELŐFÉM MEGOLVASZTÁSÁHOZ.", + "NEM LEHET CSAK ÁT SÉTÁLNI.", + "DE FELETTE REPÜLHETSZ", + "HA VOLT HŐPAJZSAL FELSZERELT ZOOMER.", + "VÉLETLENÜL, HOGY EBBEN A PILLANATBAN ILYEN DOLGON DOLGOZOK.", + "CSAK HÚSZ TELJESÍTMÉNYELEMRE KELL SZÜKSÉGEM HOGY ELÉG ENERGIÁT VEGYEK", + "ELLENI A KANYON HŐÉT. NEM IGAZ, APA?", + "IGEN, KEIRA, EZ MŰKÖDHET. DE HOL VAN EGY FIÚ", + "ÉS EGY FÉL!", + "HÚSZ TELJESÍTMÉNYCELTÁT SZEREZSZ?", + "A FALUKBÓL! A LEGTÖBBSÉGÜK VAN EGY VAGY KÉT TELJESÍTMÉNYCELLA", + "VALAHOL TARTOTT.", + "ÉS MÉG HA NEM HAJTAK CSAK ELADNI ŐKET", + "NÉHÁNY ELŐGÖMBVEL MEGKENZENI KELL TENNÉRÜKET.", + "ÉS LEFOGADOM, HOGY MÉG TÖBB VAN BŐLÜK KI A VADON CSAK VÁRVA NÉHÁNYRA", + "BÁTOR KALANDOR TALÁLHATÓ.", + "NÓL, LEGALÁBB MEGVAN A BÁTOR KALANDOR.", + "BÁTOR KALANDOR?", + "KÉPZÉS NÉLKÜL NEM TALÁLJÁTOK KI A FALUBÓL KETTŐKET!", + "MIELŐTT BÁRMI MÁST CSINÁL, JOBBAN MENJ ÁT A WARP KAPUN", + "NÉHÁNY GYAKORLAT A GEYSER ROCK-N.", + "UH, NEM TALÁLJUK TÖBBET AZOKBÓL AZOKBÓL AZOKBÓL TÖBBET AZOKBÓL AZOKBÓL AZOKBÓL SÖTÉT RAJTAS ÖKO CUKKOK, UGYE?", + "MERT ÚTÁLNÉK ÚJRA BELÉPNI ÉS BEÉD BEÁLLNI!", + "GYERE BE! MIELŐTT PÁFÁVÁBA VÁLTOM MINDETTŐT!" ], "sage-intro-sequence-e": [ - "GOOD TRAINING, BOYS, BUT THAT'S NOTHING COMPARED TO THE CHALLENGES THAT LIE AHEAD.", - "AH, THEY'RE NO PROBLEM. WE GOT THE MOVES, EH JAK?", - "WE'D LOVE TO STAY AND CHAT, BIG GREEN, BUT WE'RE UH...", - "ITCHING TO GET ON WITH OUR ADVENTURES.", - "FINE, FINE, \"ADVENTURE\" AWAY THEN.", - "AND WHILE YOU'RE OUT \"ADVENTURING,\" WHY DON'T YOU MAKE YOURSELF USEFUL?", - "MY DARN GREEN ECO COLLECTORS ARE CLOGGED UP AGAIN.", - "HEAD OUT TO THE FAR SIDE OF THE BEACH AND CLEAR THEM OUT WHY DON'T YOU.", - "FOLLOW THE LAMPS, THEY'LL TAKE YOU RIGHT THERE.", - "NOW, ALL OF YOU...", - "GET OUT OF HERE!" + "JÓ EDZÉS FIÚK, DE EZ SEMMI AZ ELŐTT KIHÍVÓ KIHÍVÁSOKHOZ ÖSSZEHASONLÍTVA.", + "AH, NINCS BAJ. MEGVANÍTOTTUK A LÉPÉSEKET, EH JAK?", + "SZÉVESÜNK MARADNI CSEVEGELNI, NAGY ZÖLD, DE MI VAGYUNK...", + "VISSZETETT, HOGY HA TOVÁBBÍTJUK KALANDJAINKAT.", + "FINOM, NAGYON, AKKOR \"KALANDOZZ\".", + "ÉS MIKöZBEN ,,KALANDOZZ\", MIÉRT NEM HASZNOSÍTJA MAGÁT?", + "A DARN GREEN ECO GYŰJTŐJEIM ISMÉT ELDULLADTAK.", + "MENJEN KI A STRAND TÚLSÓ OLDALÁRA, ÉS TISZTÍTSA KI ŐKET, MIÉRT NE TEGYE.", + "KÖVESE A LÁMPÁKAT, AZONNAL ODA VISZNEK.", + "MOST, MINDENKINEK...", + "MENJ KI INNEN!" ], "sage-introduction-misty-cannon": [ - "OH, IT'S THE CONQUERING HEROES.", - "GOOD, I WANTED TO TALK WITH YOU TWO ABOUT SOMETHING SERIOUS.", - "THERE APPEARS TO BE QUITE A BIT OF LURKER ACTIVITY ON MISTY ISLAND.", - "I CAN SEE THEM BOMBARDING THE PRECURSOR SILO FROM MY LOOKOUT TOWER.", - "IF THE LURKERS OPEN IT UP AND RELEASE THE DARK ECO, WE COULD ALL END UP", - "RUNNING AROUND LOOKING AS RIDICULOUS AS THIS ANNOYING LITTLE SPECIMEN.", - "JAK, IT'S TIME FOR YOU TO PROVE YOUR WORTH.", - "GET THE FISHERMAN TO LET YOU TAKE HIS BOAT BACK TO MISTY ISLAND", - "GET TO THE TOP OF THE PRECURSOR SILO AND TAKE OUT THAT CANNON.", - "AND... WHAT ABOUT ME?", - "YOU? WHY DON'T YOU MOP MY FLOORS? THEY SEEM TO HAVE LOST THEIR SHINE LATELY." + "Ó, EZ A HÓDÍTÓ HŐSÖK.", + "JÓ, BESZÉLNI SZERETTEM VELED VALAMI KOMOLYRÓL.", + "A MISTY SZIGETEN ÚGY ÚGY ÚGY VAN EGY CSAK LURKER TEVÉKENYSÉG.", + "LÁTOM, AHOGY BOMBÁZIÁK A KILÁTÓTORONYOMBÓL AZ ELŐSZILÓT.", + "HA A LURKEREK KINYITÍTJÁK ÉS KIADJÁK A SÖTÉT ÖKO-T, MINDEN VÉGRE LEHET", + "OLYAN NEVESESÉGESNEK KÖRÜL SOROLNI, MINT EZ A BOSZANTATÓ KIS PÉLDÁNY.", + "JAK, IDEJE BIZONYÍTSA AZ ÉRDEKED.", + "VEGYE KI A HORGÁSZT, HOGY VISSZA HAJÓJÁT A MISTY-SZIGETRE", + "ÁLLJ AZ ELŐZETES SILO TETEJÉRE, ÉS VEDD KI AZ ÁGYÚT.", + "ÉS MI VAN VELEM?", + "TE? MIÉRT NEM TÖRÖLD MEG A PADLÓMAT? ÚGY TŰNIK, AZ ÚJABBAN ELVESZTETTÉK FÉNYÜKET." ], "sage-reminder-1-ecorocks": [ - "SOME \"BRAVE ADVENTURERS\" YOU TWO ARE.", - "BACK ALREADY AND WITHOUT CLEARING MY BLOCKED ECO HARVESTERS!", - "THEY'RE ON THE FAR SIDE OF THE BEACH, BOYS.", - "NOW...", - "GET MOVING!" + "NÉHÁNY \"BÁT KALANDOR\" VAGYTOK TI KETTEN.", + "VISSZA MÁR ÉS A BLAKKOZOTT ÖKO ARAKÁTOROK TISZTÍTÁSA NÉLKÜL!", + "A STRAND TÁSOL VAN, FIÚK.", + "MOST...", + "MOZGÁS!" ], "sage-reminder-1-generic": [ - "WHAT ARE YOU TWO DOING HERE? YOU HAVE POWER CELLS TO COLLECT!", - "LEAVE ME ALONE... UNTIL YOU HAVE THEM!" + "MIT KERÜLTEK ITT TI KETTŐK? VAN BEGYŰJTENDŐ ERŐSEJTE!", + "HAGYJ BÉKÉRE... ADDIG NEKED!" ], "sage-reminder-1-misty-cannon": [ - "THE BOMBARDMENT IS GETTING WORSE!", - "FIND THE FISHERMAN IN THE JUNGLE, GET PERMISSION TO USE HIS BOAT", - "AND GET OVER TO MISTY ISLAND TO STOP THE CANNON.", - "AND YOU DAXTER, YOU NEED TO GET MOPPING. THIS PLACE IS A MESS!" + "A BOMBÁZÁS EGYRE ROBBAN!", + "KERESSE MEG A HORGÁSZT A DZSUNGLEBEN, KÉRJEN ENGEDÉLYT HAJÓJA HASZNÁLATÁRA", + "ÉS ÁTÉPJEN A MISTY SZIGETRE, HOGY MEGÁLLÍTSA AZ ÁGYÚT.", + "ÉS TE DAXTER, MEG KELL SZABADULNI. EZ A HELY EGY RENDETLENSÉG!" ], "sage-reminder-2-generic": [ - "YOU TWO JUST DON'T UNDERSTAND THE GRAVITY OF THE SITUATION.", - "THIS IS ABOUT MORE THAN A SINGLE BOY GONE FUZZY. THIS IS ABOUT LIFE AS WE KNOW IT.", - "NOW, GET OUT THERE AND FULFILL YOUR DESTINY." + "TI KETTŐK CSAK NEM ÉRTITEK A HELYZET SÚLYOSSÁGÁT.", + "EZ TÖBBRE SZÓL, MINT EGY FIÚRÓL, HOGY ELFOGYOTT. EZ AZ ÉLETRŐL SZÓL, AHOGY ISMERJÜNK.", + "MOST, MENJEN KI ODA, ÉS VALÓSÍTSA VÉGRE A SORSZÁT." ], "sage-village3-introduction": [ - "OW! I ALWAYS WONDER IF I'M LOSING BODY PARTS IN THOSE THINGS!", - "HOLY YAKOW! THE RED SAGE'S LAB LOOKS WORSE THAN THE BLUE'S!", - "WELL, IT DEFINITELY LOOKS AS THOUGH THERE'S BEEN A STRUGGLE HERE.", + "Ó! MINDIG CSODÁLOK, HOGY ELVESZTEM-E TESTRÉSZEKET EZEKBEN!", + "SZENT YAKOW! A VÖRÖS ZSÁLYA LABORJA ROSSZABBAN NÉZ KI, MINT A KÉK!", + "NOS, MINDENKINEK ÚGY KÜZDELEM VOLT ITT.", "HA HA HA HA HA!", - "I'D HARDLY CALL IT \"STRUGGLE.\"", - "WOULD YOU, DEAR SISTER?", - "CERTAINLY NOT. THE RED SAGE GAVE UP WITH SO LITTLE EFFORT.", - "NO FUN AT ALL.", - "GOL? IS THAT YOU?", - "YOU'VE FINALLY GONE OFF THE DEEP END, EH?", - "AND, MAIA! I TOLD YOU THE DARK ECO WOULD AFFECT YOU BOTH!", - "HNG, NOBODY EVER LISTENS TO OLD SAMOS...", - "WHAT HAVE YOU TWO DONE WITH THE BLUE AND RED SAGES?", - "DON'T WORRY ABOUT YOUR COLORFUL FRIENDS, YOU OLD FOOL.", - "THEY'RE PERFECTLY SAFE IN OUR CITADEL. OUR SPECIAL GUESTS.", - "THEY HAVE GRACIOUSLY AGREED TO HELP US ON A LITTLE PROJECT.", - "YOU WERE WRONG, SAMOS. DARK ECO CAN BE CONTROLLED!", - "WE'VE LEARNED ITS SECRETS, AND NOW WE CAN RESHAPE THE WORLD TO OUR LIKING.", - "YOU CAN'T CONTROL DARK ECO BY ITSELF! EVEN THE PRECURSORS COULDN'T-", - "UNTIL NOW, WE'VE HAD TO SCRAPE BY WITH WHAT LITTLE DARK ECO", - "WE COULD FIND NEAR THE SURFACE.", - "BUT SOON, WE WILL HAVE ACCESS TO THE VAST STORES", - "OF DARK ECO HIDDEN DEEP UNDERGROUND.", - "NOT THE SILOS!", - "YES, THE SILOS!", - "THEY WILL BE OPENED, AND ALL THE DARK ECO IN THE WORLD WILL BE OURS!", - "BUT THAT'S IMPOSSIBLE! ONLY A PRECURSOR ROBOT-", - "OH, DON'T LOOK SO UPSET, SAMOS.", - "WE'VE GOT BIG PLANS FOR YOU.", + "ALIGHA NEVEZNÉM \"KÜZDELEM\"-NEK.", + "LENNE, KEDVES NŐVÉG?", + "BIZTOSAN NEM. A VÖRÖS ZSÁLYA OLYAN KEVÉS ERŐFORRÁSSAL FELADTA.", + "SEMMILYEN SZÓRAKOZÁS.", + "GOL? TE VAGY AZ?", + "VÉGRE LÉPTETTED A MÉLYVÉGRE, MI?", + "ÉS MAIA! MONDTAM NEKED, A SÖTÉT ÖKO MINDENKEDŐRE HATÁST VAN!", + "HNG, SOHA SENKI NEM HALLGAT RÉGI SAMOST...", + "MIT CSINÁLTOK TI KETTEN A KÉK ÉS VÖRÖS BÖLCSÖKKEL?", + "NE AGGÓDJON A SZÍNES BARÁTAIDRA, TE ÖREG BOLONDA.", + "TÖKÉLETESEN BIZTONSÁGBAN VANAK CITADELLUNKBAN. KÜLÖNLEGES VENDÉGEINK.", + "KEGYELMESEN MEGÁLLAPODTAK, HOGY SEGÍTENEK MINKET EGY KIS PROJEKTBEN.", + "TÉVEDTESZ, SAMOS. A SÖTÉT ÖKO IRÁNYÍTHATÓ!", + "MEGTANULJUK A TITKOKAT, ÉS MOST SZERETNÉNKRE FORMÁLHATJUK A VILÁGOT.", + "A SÖTÉT ÖKO-OT NEM IRÁNYÍTHATJA MEG MAGÁTÓL! MÉG AZ ELŐZMÉNYEK NEM TUDTÁK...", + "EDDIG MEG KELLETT KARTANUNK A MILYEN KIS SÖTÉT ÖKOVAL", + "A FELÜLET KÖZELÉBEN MEGTALÁLHATTUNK.", + "DE HAMAROSAN ELÉRHETÜNK A HATALMAS ÁRUHÁZHOZ", + "OF SÖTÉT ÖKO, REJTETT MÉLY A FÖLD ALATT.", + "NEM A SILÓK!", + "IGEN, A SILÓK!", + "MEGNYITÁSOK LESZEK, ÉS A VILÁG ÖSSZES SÖTÉT ÖKÓJA A MIÉNK LESZ!", + "DE EZ LEHETETLEN! CSAK EGY ELŐADÓ ROBOT-", + "Ó, NE NÉZZEN NÉZZEL OLYAN FELDÚLTNAK, SAMOS.", + "NAGY TERVEINK VAN SZÁMÁRA.", "AH HA HA HA HA HA HA! AHH...", - "WAIT A MINUTE!", - "THAT WAS GOL?", - "THE SAME GOL WHO'S SUPPOSED TO CHANGE ME BACK?", - "GOL IS THE GUY TRYING TO KILL US?!", - "I'M DOOMED.", - "WE MAY ALL BE DOOMED.", - "IF THEY OPEN THE SILOS, THE DARK ECO WILL", - "TWIST AND DESTROY EVERYTHING IT TOUCHES!", - "WE SIMPLY MUST GET TO THEIR CITADEL, TO STOP THEM!", - "THE FASTEST WAY THERE IS THROUGH THE LAVA TUBE", - "AT THE BOTTOM OF THIS CRATER.", - "A FEW MORE POWER CELLS, AND YOUR ZOOMER'S HEAT SHIELD", - "SHOULD GET YOU ACROSS THE LAVA SAFELY.", - "ALL RIGHT, MY BOY. YOU KNOW WHAT TO DO.", - "TAKE THE FLEABAG AND GO ROUND UP MORE POWER CELLS." + "VÁRJ EGY PERCET!", + "EZ GOL VOLT?", + "UGYANAZ A GOL, AKINEK VISSZA VÁLTOZTATNI KELL?", + "GOL A SZÁF MEGPRÓBÁL MEGÖLNI MINKET?!", + "VÉGEM VAN.", + "LEHET, HOGY MINDANNYIAN KÖSZÖNTÜNK.", + "HA KINYITÍTJÁK A SILÓKAT, A SÖTÉT ÖKO FOGJA", + "FORGÍTS MEG ÉS TÖRÖLJEN MEG MINDENT, AMIT ÉRINT!", + "EGYSZERŰEN EL KELL KERÜLJÜNK A CITADELLUUKHOZ, HOGY MEGÁLLÍTJUK ŐKET!", + "A LÁVACSÖVEN KERESZTÜL VAN A LEGGYORSBB ÚT", + "A KRÁTER ALJÁN.", + "NÉHÁNY MÉG TELJESÍTMÉNYCELLA ÉS A ZOOMER HŐPAJZSJA", + "BIZTONSÁGOSAN ÁT KELL KÉPNI A LÁVÁN.", + "RENDBEN, FIÚM. TUDOD MIT KELL TENNED.", + "VEGYE EL A FLEABAG-T, ÉS KERÜLJ FEL TÖBB TELJESÍTMÉNYCELLÁT." ], "sage-village3-introduction-dark-eco": [ - "GREAT BALLS OF ECO!", - "THERE SEEMS TO BE A LARGE LURKER PRESENCE IN THE SPIDER CAVES!", - "GREAT. SOUNDS LIKE A REAL CHEERY PLACE.", - "LET ME GUESS. THERE ARE SPIDERS IN THE SPIDER CAVES, RIGHT?", - "OF COURSE THERE ARE SPIDERS IN SPIDER CAVES!", - "BUT THAT'S THE LEAST OF YOUR PROBLEMS!", - "THE LURKERS ARE AFTER CRYSTALS OF CONCENTRATED DARK ECO.", - "YOU'VE GOT TO DESTROY THE CRYSTALS BEFORE THOSE MONSTERS", - "GET THEIR HANDS ON THEM!", - "HOP TO IT!" + "NAGY ÖKO-GOLYÓK!", + "ÚGY TŰNIK, NAGY LURKER JELENLÉT A PÓK-BARLANGKBAN!", + "NAGY. IGAZI VIDÁM HELYNEK HASZNIK.", + "HADD TALÁLGASSAK. PÓK VANNAK A PÓK-BARLANGOKBAN, IGAZ?", + "TERMÉSZETESEN VAN PÓK A PÓK-BARLANGKBAN!", + "DE EZ A LEGKEBBSÉGI PROBLÉMÁJA!", + "A LURKEREK A KONCENTRÁLT SÖTÉT ÖKO KRISTÁLYAI UTÁN.", + "A KRISTÁLYOKAT EL KELL TÖMÖLNI A SZÖRNYEK ELŐTT", + "TEGYE RÁJUK KEZÜKET!", + "UGRÁS RÁ!" ], "sage-village3-introduction-rams": [ - "I'M GLAD YOU TWO ARE HERE. THERE'S LURKER MOVEMENT IN THE MOUNTAINS.", - "APPARENTLY THEY'VE DISCOVERED, AND ARE NOW TRYING TO REMOVE,", - "SOME DARK ECO STORES FROZEN IN THE GLACIERS.", - "WHILE YOU'RE UP THERE POKING AROUND FOR POWER CELLS", - "STOP THOSE LURKERS, AND KEEP A LITTLE MORE DARK ECO OUT OF GOL'S HANDS." + "ÖRÜLöK, HOGY KETTŐK ITT VAGYTOK. LURKER MOZGÁS VAN A HEGYEKBEN.", + "ÚGY FELFEDEZETTÉK, ÉS MOST MEGPRÓBÁLJÁK ELTÁVOLÍTANI,", + "NÉHÁNY SÖTÉT ÖKO-ÜZLET A GLECCSEREKBEN MEGFAGYOTT.", + "MIKöZBEN OTT FENT KERÜL KERÜL TELJESÍTMÉNYCELLÁK KERETÉBEN", + "ÁLLÍTSA MEG AZOKAT AZOKAT A LURKOLÓKAT, ÉS TARTSA KI EGY KIS SÖTÉTSÉGET GOL KEZÉBŐL." ], "sage-village3-reminder-1-dark-eco": [ - "YOU HAVE TO DESTROY THE DARK ECO CRYSTALS IN SPIDER CAVES!" + "A SÖTÉT ÖKOKRISTÁLYOKAT EL KELL PUSZTÍTANI A PÓK-BARLANGOKBAN!" ], "sage-village3-reminder-1-rams": [ - "WE CAN'T LET THE LURKERS GET THEIR HANDS ON THE DARK ECO CANISTERS.", - "GET UP TO THOSE SNOWY PEAKS AND STOP THEM!" + "NEM HAGYHATJUK A LURKOLÓK KEZÜKET A SÖTÉT ÖKO KANSZTEREKRE.", + "ÉN FEL AZOKRA A HAVAS CSÚCSOKRA ÉS MEGÁLLÍTSA ŐKET!" ], "sculptor-introduction": [ - "HEY... LITTLE FURRY DUDE!", - "AWW... I THOUGHT FOR A MOMENT YOU WERE MY MUSE.", - "YOUR WHAT?", - "HAVEN'T YOU EVER SEEN A MUSE BEFORE?", - "IT'S A LITTLE GLOWIN' SQUIRREL ABOUT YOUR SIZE, FULL OF SPUNK, AND CRAZY AS A LARK!", - "OH, I GET IT! LIKE A SIDEKICK.", - "AS A MATTER OF FACT, WITHOUT MY MUSE, I JUST CAN'T SCULPT.", - "BUT WITH HER AROUND... I SEE BEAUTY IN EVERYTHING, YOU KNOW?", - "RIGHT NOW I COULDN'T CHISEL MY WAY OUT OF A BOX.", - "I THINK SHE RAN AWAY TO THAT MISTY ISLAND.", - "AWW, I JUST HOPE SHE'S ALL RIGHT.", - "IT'S WORTH A POWER CELL IF YOU BRING HER BACK TO ME!", - "WAIT A MINUTE! WE ARE NOT GOING BACK TO MISTY ISLAND!", - "ARE WE?" + "HÉ... KIS SZÖRŐS HAVER!", + "AWW... EGY PILLANATRA AZT HITTEM, TE VAGY A MÚZSAM.", + "TE MI?", + "NEM LÁTTÁL MÚZSÁT MÉG?", + "A TE MÉRETEDRE VONATKOZÓ EGY KIS RAGYOGÓ MÓKUS, TELJE SZÜKSÉGES ÉS ŐRÜLT, MINT A LÁRKA!", + "Ó, MEGÉRTEM! MINT A SIDEKICK.", + "AMI AZT ILLETI, A MÚZÁM NÉLKÜL CSAK NEM TUDOK SZOBRAZNI.", + "DE AKKOR A VELE... MINDENBEN A SZÉPSÉGET LÁTOM, TUDOD?", + "JELENLEG NEM TUDTAM KI VÉSÜLNI EGY DOBOZBÓL.", + "AZT HISZEM, ELSZöKöTT ARRA A KÖDES SZIGETRE.", + "AWW, CSAK REMÉLEM, MINDEN RENDBEN VAN.", + "MEGÉRI EGY ERŐSELT, HA VISSZAHOZD HOZZÁM!", + "VÁRJ EGY PERCET! NEM MÉRÜNK VISSZA A MISTY SZIGETRE!", + "VAGYUNK?" ], "sculptor-reminder-1": [ - "AW HEY DUDES! DID YOU FIND MY MUSE YET?" + "Ó HÉ HAJÓK! MÉG MEGTALÁLTÁD A MÚZÁM?" ], "sculptor-resolution": [ - "OH, MY MUSE! YOU SAVED HER! AW, YOU REALLY ARE THE BEST!", - "HERE, TAKE THIS POWER CELL. I WON'T NEED IT NOW THAT I HAVE MY INSPIRATION BACK!" + "Ó, MÚZSÁM! MEGMENTETTE ŐT! Ó, TÉNYLEG TE VAGY A LEGJOBB!", + "ITT, VEGYE EZT AZ ERŐCELLÁT. MOST NEM LESZ SZÜKSÉGEM, HOGY VISSZA VÉTTEM AZ INSPIRÁCIÓM!" ], "sidekick-human-intro-sequence-b": [ - "CONTINUE YOUR SEARCH FOR ARTIFACTS AND ECO.", - "IF THE LOCALS POSSESS PRECURSOR ITEMS, YOU KNOW WHAT TO DO.", - "DEAL HARSHLY WITH ANYBODY WHO STRAYS FROM THE VILLAGE.", - "WE WILL ATTACK IT IN DUE TIME." + "FOLYTASD KERESÉSÉT MŰKÉSZÜLETEK ÉS ECO KERESÉSÉBEN.", + "HA A HELYIEK ELŐZMÉNYEKET RENDELKEZNEK, TUDJA MIT TENNI.", + "AZ AKCIÓS SZEMÉLYEZET AZZAL, AKI A FALUBÓL KÉSZÜLT.", + "MEGFELELŐ IDŐBEN TÁMADJUK." ], "sidekick-human-intro-sequence-c": [ - "WHAT ARE WE DOING HERE ANYWAY, JAK? THIS PLACE GIVES ME THE CREEPS!", + "MIT KERESÜNK ITT, JAK? EZ A HELY MEGADJA MEG A CSÚSZTÁST!", "HUH?", - "(GROAN) STUPID PRECURSOR JUNK!", - "EEK! WHAT IS THAT DARK OOZE? IT SURE DON'T LOOK FRIENDLY.", - "THE SAGE YAPS ON ABOUT THE PRECURSORS THAT BUILT THIS PLACE ALL THE TIME.", - "\"WHERE DID THEY GO? WHY DID THEY BUILD THIS CRAP?\"", - "NOW I LIKE PRECURSOR ORBS AND POWER CELLS AS MUCH AS THE NEXT GUY", - "BUT IF YOU ASK ME, THEY MUST HAVE BEEN REAL LOSERS.", - "WHOA! HOW DID YOU DO THAT?", - "JAK, I THINK WE'RE IN TROUBLE!", - "MAN, THAT STUNG.", - "I TOLD YOU WE SHOULDN'T HAVE COME HERE, AND YOU LISTENED?", - "WHAAAT?", - "WAAAAAAAAHHHHHHHH!!", - "OKAY, OKAY. I'M FINE, I'M FINE...", - "WAAAAAAAAHHHHHHHH!!" + "(NÖGÉS) HÜLYE ELŐADÓ SZEMÉNY!", + "EEK! MI AZ A SÖTÉT SZÍRÁS? BIZTOS, HOGY NEM NÉZ BARÁTSÁGOSAN.", + "A BÖLCS AZ ELŐZMÉNYEKRŐL, AMELYEK EZT A HELYET MINDIG ÉPÍTETTÉK.", + "\"HOVA MENTEK? MIÉRT ÉPÍTETTEK MEG EZT A SZAROKAT?\"", + "MOST ÚGY SZERETEM AZ ELŐFORMÁKAT ÉS A ERŐSEJTEKET, MINT A KÖVETKEZŐ SZÁM", + "DE HA KÉRDEZSZ, BIZTOSAN IGAZI VÉSZESEK VOLTAK.", + "HÚ! HOGYAN CSINÁLTAD, HOGY?", + "JAK, SZERINTEM BAJBAN VAGYUNK!", + "FÉRFI, EZ MEGSZÁLT.", + "MONDTAM, HOGY NEM KELLETT IDE GYÖNNÜNK, ÉS TE FIGYELT?", + "MI?", + "WAAAAAAAAHHHHHHH!!", + "RENDBEN RENDBEN. JÓL VAGYOK, JÓL VAGYOK...", + "WAAAAAAAAHHHHHHH!!" ], "warrior-introduction": [ - "OHH... MY ACHING HEAD.", - "I DOUBT THAT'S ONE OF YOUR VITAL ORGANS!", - "WALK IT OFF, TOUGH GUY!", - "OH, SURE, I WAS TOUGH ONCE.", - "MAYBE EVEN THE TOUGHEST OF THEM ALL.", - "I SINGLE-HANDEDLY DEFENDED THIS VILLAGE FROM THOSE HORRID CREATURES FOR ALMOST A YEAR!", - "THEN THAT HORRIBLE MONSTER ARRIVED AND COMMENCED THE BOULDER BOMBARDMENT.", - "SO, FULL OF VALOR, ARMOR SHINING IN THE SUN...", - "I CLIMBED THE HILL TO TAKE HIM ON...!", - "BUT HE POUNDED ME LIKE ONE TENDERIZES A YAKOW STEAK.", - "HAVE YOU TRIED ATTACKING HIM WITH YOUR MELODRAMA?", - "'CAUSE IT'S KILLIN' ME!", - "AFTER MY LAST STUNNING FAILURE,", - "HE SEALED THE PASSAGEWAY TO HIS ROOST WITH A 30-TON BOULDER,", - "LEAVING NO WAY FOR ANYONE TO CHALLENGE HIM AGAIN.", - "SO, OUR SAGE, A MASTER OF BLUE ECO AND A MECHANICAL GENIUS, DEVISED A MACHINE", - "CAPABLE OF LIFTING THE BOULDER OUT OF THE WAY...!", - "BUT ALAS, HE DISAPPEARED BEFORE WE HAD A CHANCE TO TURN IT ON.", - "AND HE TOOK ALL OF HIS POWER CELLS WITH HIM.", - "AT LEAST I WAS ABLE TO PULL ENOUGH PONTOONS OUT OF OUR BRIDGE TO PREVENT", - "THAT MONSTER FROM COMING DOWN HERE TO DO ME HARM.", - "YEAH, GOOD, GOOD JOB, TOUGH GUY. BUT, UM...", - "WE'RE GONNA NEED YOU TO, UH... PUT 'EM BACK, AND STUFF.", - "OH, SURE! AND SEAL MY DOOM?", - "(SIGHS)", - "ALRIGHT. FINE.", - "BRING ME 90 PRECURSOR ORBS AND I'LL LET THE PONTOONS LOOSE.", - "BUT I'M NOT GOING TO FIGHT THAT MONSTER AGAIN!" + "ÓÓÓ... FÁJÓ FEJEM.", + "KÉTLEM, HOGY EZ AZ EGYIK LÉPTETÉSŰ SZERVED!", + "HAGYJ MEG, KEMÉNY SZÁM!", + "Ó, BIZTOS, EGYSZER KEMÉNY VOLTAM.", + "TALÁN MÉG A LEGSZEMÉLYEBB.", + "EGYEDÜL VÉDTEM EZT A FALUT AZTÓL A SZORSZORÚ LÉNYEKTŐL SZINTE EGY ÉVÉN ÁT!", + "AZTÁN MEGÉRKEZETT AZ A SZORÚSÁGOS SZÖRNYETEM, ÉS MEGKEZDTE A SZIKLABOMBÁZÁST.", + "ÍGY, TELJES VÉTSÉGGEL, A NAPBAN RAGYOGÓ PÁNCÉL...", + "FELMÁSZAM A DOMBRA, HOGY FELVEGYEM ŐT...!", + "DE ÚGY DÜBöRGöTT, MINT EGY YAKOW STEAKET.", + "PRÓBÁLT TÁMADNI A MELODRÁMÁDDAL?", + "MERT MEGÖL!", + "UTOLSÓ KÉPESÍTETT KUDARCOM UTÁN,", + "EGY 30 TONNÁS SZÖVÉVEL LEPLÉTELTE AZ UTASÍTÓJÁT,", + "ÚJRA SENKI NEM HAGYJA MEG A KIHÍVÁST ÚJRA.", + "ÍGY BÖLCSÜNK, A KÉK ÖKO MESTERE ÉS EGY MECHANIKAI ZSENI EGY GÉPET FELVONOTT", + "KÉPES AZ ÚTBÓL EMELNI A SZÖVET...!", + "DE SAJON, ELTŰNT, MIELŐTT LEHETŐSÉGÜNK VOLT VOLNA BEKAPCSOLNI.", + "ÉS AZ ÖSSZES ERŐSEJTÉT MEGVITTE.", + "LEGALÁBB ELÉG PONTONOT KI VOLTAM KI HÚZNI A HÍDUNKBÓL", + "AZ A SZÖRNYETET, HOGY LEJÖN INNEN, HOGY KÁRT TEGYEN NEKEM.", + "IGEN, JÓ, JÓ MUNKÁT, KEMÉNY SZÁM. DE UM...", + "SZÜKSÉGÜNK KELL RÁD, ÖÖ... TEDD VISSZA, ÉS MEGTÖBBEN.", + "OH BIZTOS! ÉS PECESELTEM A VÉGEM?", + "(SÓHAJT)", + "RENDBEN. BÍRSÁG.", + "HOZZ EL 90 ELŐFORMÁT, ÉS EL EGYEZTEM A PONTONOKAT.", + "DE ÚJRA NEM HARCOLOK AZZAL A SZÖRNYETEMEL!" ], "warrior-reminder-1": [ - "TAKE ALL THE TIME YOU WANT BRINGING ME THE PRECURSOR ORBS", - "I'M NOT LOOKING TO FIX THE PONTOON BRIDGE ANY TIME SOON." + "SZÁNJON MINDEN IDŐT, HOGY AZ ELŐZŐ GOBÁKAT SZERETNÉ HOZNI", + "A PONTOON HÍDOT NEM IS HAJBOR IS ISMERTEM MEG." ], "warrior-resolution": [ - "OH.", - "WONDERFUL.", - "YA BROUGHT ME THE PRECURSOR ORBS.", - "ALL RIGHT.", - "I'LL FIX THE BRIDGE.", - "BUT DON'T ASK ME TO GET INVOLVED WITH THAT CREATURE AGAIN!" + "Ó.", + "CSODÁLATOS.", + "YA HOZTA NEKEM AZ ELŐFORMÁNYOKAT.", + "RENDBEN.", + "MEGJAVÍTOM A HIDAT.", + "DE NE KÉRED, HOGY ÚJRA VEGYEK BE AZZAL A LÉNYEZETBE!" ], "yellowsage-resolution": [ - "WHO WOULDA THOUGHT I'D LIVE TO SEE THE DAY", - "WHEN I NEEDED TO BE RESCUED BY A BOY AND HIS MUSKRAT!", - "AHH... I'M GONNA GIVE GOL AND MAIA", - "A LITTLE PAYBACK FOR THIS EMBARRASSMENT!", - "THEN WE'LL SEE ABOUT COOKING UP SOME MUSKRAT STEW...", + "KI HOGY HOGY MEGÉLEM A NAPOT", + "AMIKOR EGY FIÚNEK ÉS A PÉSZKARÁTÁNAK KELLETT MENTENEM!", + "AHH... ADOM GOL-T ÉS MAIÁT", + "EGY KIS VISSZAFIZETÉS EZÉRT EZÉRT!", + "UTÁNA MEGLÁTJUK, HOGY FŐZSÜNK PÉSÉKPÁRCSOT...", "(GULPS)" ] }, @@ -1060,300 +1060,300 @@ "HMM..." ], "ASSTLP02": [ - "GOTTA GET THIS HEAT SHIELD WORKING..." + "MŰKÖDNI KELL EZT A HŐPAJZSOT..." ], "ASSTLP03": [ - "WE NEED POWER CELLS TO FUEL THE HEAT SHIELD..." + "TÁJÉKOZTATÓ CELLÁKRA VAN SZÜKSÉGÜNK A HŐPAJZS TÜZELÉSÉHEZ..." ], "ASSTLP04": [ - "WHERE'S MY SPANNER?" + "HOL VAN AZ ÉN CSAPÁM?" ], "ASSTLP05": [ - "FIRE CANYON IS SO HOT..." + "A FIRE CANYON OLYAN FORRÓ..." ], "ASSTLP23": [ - "NOW, HOW DID HE GET THAT LEVITATOR TO WORK?" + "MOST, HOGYAN VETTE MŰKÖDÉSRE AZT A LEVITATORT?" ], "ASSTLP24": [ - "NOW, EVEN WITH POWER CELLS,", - "WILL WE HAVE ENOUGH POWER?" + "MOST, AKÁR TELJESÍTMÉNYELEMÉKEKKEL,", + "LESZ ELÉG ERŐNK?" ], "ASSTLP30": [ - "HM, LET'S SEE..." + "HM, LÁSSUK..." ], "ASSTLP31": [ "HM." ], "ASSTLP32": [ - "OH, MY..." + "JAJ NEKEM..." ], "ASSTLP33": [ "AH-HA!" ], "ASSTLP34": [ - "HUH... WHAT ARE GOL AND MAIA UP TO?" + "HÁ... MIRE KÉSZÜL GOL ÉS MAIA?" ], "ASSTLP35": [ - "HMM... WE'VE GOTTA GET TO PRECURSOR CITY." + "HMM... EL KELL KERÜLJÜNK ELŐVÁROSBA." ], "ASSTLP36": [ - "HUH. THE HEAT SHIELD'S GOING TO NEED EVEN MORE POWER", - "TO WITHSTAND THE LAVA." + "HUH. A HŐPAJZSNAK MÉG TÖBB ERŐRE VAN SZÜKSÉGE", + "ELLENNI A LÁVÁT." ], "ASSTLP37": [ - "AW... WE'VE GOT TO SAVE THE OTHER SAGES..." + "Ó... MEG KELL MENTENÜNK A TOVÁBBI BÖLCSEKET..." ], "BIL-AM01": [ - "I JUST LOVE THE MUD." + "CSAK IMÁDOM A SARAT." ], "BIL-AM02": [ - "DARN SWAMP RATS." + "ROTT MOCSÁRI PATKÁNYOK." ], "BIL-AM03": [ - "I NEED A GOOD DRAUGHT OF MAMA'S MEDICINE." + "KELL EGY JÓ VÁZLAT A MAMA GYÓGYSZERÉBŐL." ], "BIL-AM04": [ "GLADIOLA." ], "BIL-AM05": [ - "I NEED ME SOME BROWN MEDICINE." + "VAN SZÜKSÉGEM NEM BARNA GYÓGYSZERRE." ], "BIL-AM06": [ - "I NEED ME SOME SUMMER COOLANT." + "KELL NEM NYÁRI HŰTŐFOLYADÉK." ], "BIL-AM07": [ - "DARN, THIS HEAT'S GIVIN' ME THE PRICKLIES." + "A BABA, EZ A HŐSÉG SZÜKSÉGET SZABAD." ], "BIL-AM08": [ - "DARN... THIS HEAT'S GIVIN' ME A RASH." + "A BABA... EZ A HŐSÉG KIÖLT." ], "BIL-AM1A": [ - "MM-MM! I JUST LOVE THE MUD!" + "MM-MM! CSAK IMÁDOM A SARAT!" ], "BIL-AM2A": [ - "DARN SWAMP RATS!" + "ROTT MOCSÁRI PATKÁNYOK!" ], "BIL-AM2B": [ - "DARN SWAMP RATS!" + "ROTT MOCSÁRI PATKÁNYOK!" ], "BIL-LO01": [ - "FARTHY!" + "FARTY!" ], "BIL-LO02": [ - "SOIEE-SOIEE-SOIEE-SOIEE-SOIEE!" + "SOIEE-SOIEE-SOIEE-SOIEEE-SOIEE!" ], "BIL-LO03": [ - "SOIEE-SOIEE-SOIEE!" + "SOIEE-SOIEE-SOIEEE!" ], "BIL-LO1A": [ - "FARTHY!" + "FARTY!" ], "BIL-LO2A": [ - "SOIEE-SOIEE-SOIEE!" + "SOIEE-SOIEE-SOIEEE!" ], "BIL-LO2B": [ - "SOIEE! SOIEE!" + "SOYEE! SOYEE!" ], "BIL-TA01": [ - "GET 'EM!" + "SZEREZD MEG!" ], "BIL-TA02": [ - "NICE SHOT!" + "SZÉP LÖVÉS!" ], "BIL-TA03": [ - "OVER THAR!" + "TÚL THAR!" ], "BIL-TA04": [ - "AW, DANG." + "AW, VESZÉLY." ], "BIL-TA05": [ - "RAT GOT A SNACK." + "A PATKÁNY NAGYON KAPOTT." ], "BIL-TA06": [ - "AND ANOTHER..." + "ÉS EGY MÁSIK..." ], "BIL-TA07": [ - "THERE'S ONLY ONE LEFT..." + "CSAK EGY MÁR..." ], "BIL-TA08": [ - "GOT 'EM." + "MEGVANNAK." ], "BIL-TA09": [ "YEEHAW!" ], "BIL-TA1A": [ - "GET 'EM!" + "SZEREZD MEG!" ], "BIL-TA2A": [ - "NICE SHOT!" + "SZÉP LÖVÉS!" ], "BIL-TA3A": [ - "OVER THAR." + "THAR TÚL." ], "BIL-TA4A": [ - "DANG!" + "VESZÉLY!" ], "BIL-TA4B": [ - "DANG!" + "VESZÉLY!" ], "BIL-TA5A": [ - "RAT GOT A SNACK!" + "PATKÁNY NAGYON KAP!" ], "BIR-AM01": [ - "ARE YOU NEAR THE EGG YET?" + "KÖZEL VAGY MÉG A TOJÁSHOZ?" ], "BIR-AM02": [ - "THAT'S IT, JUST A LITTLE FURTHER!" + "EZ, CSAK EGY KICSIT TOVÁBB!" ], "BIR-AM03": [ - "OH, GOOD, NOW PUSH IT. OH, GENTLY NOW!" + "Ó, JÓ, MOST NYOMJA MEG. Ó, MOST SZÍNEN!" ], "BIR-AM04": [ - "OH, MY, THAT WASN'T GENTLE!" + "Ó, Ó, EZ NEM VOLT GYENDÉS!" ], "BIR-AM05": [ - "COME ON, PUSH THE EGG OFF THE CLIFF!" + "GYERJ, NYOMJA LE A TOJÁST A SZIRTRŐL!" ], "BIR-AM06": [ "OHH!" ], "BIR-AM07": [ - "OH, HERE, BIRDIE BIRDIE. HERE, BIRDIE BIRDIE." + "Ó, ITT, BIRDIE BIRDIE. ITT, BIRDIE BIRDIE." ], "BIR-AM08": [ - "HERE, BIRDIE BIRDIE." + "ITT, BIRDIE BIRDIE." ], "BIR-AM09": [ - "BE CAREFUL, IT DOESN'T LOOK SAFE UP THERE!" + "VIGYÁZAT, OTT NEM NEM NEM BIZTONSÁGOSAN!" ], "BIR-AM10": [ - "CAREFUL, EASY DOES IT!" + "VIGYÁZAT, KÖNNYEN MEGCSINÁLJA!" ], "BIR-AM11": [ - "GOOD JOB! NOW MEET ME DOWN HERE BY THE EGG." + "SZÉP MUNKA! MOST TALÁLKOZZON ITT A TOJÁS MELLETT." ], "BIR-AM12": [ - "YOU MUST BE A TRUE ANIMAL LOVER!" + "IGAZI ÁLLATSZERETŐNEK KELL LENNI!" ], "BIR-AM13": [ - "DO YOU SEE ANY OTHER BIRDS UP THERE?" + "LÁSZ MÁS MADARAT OTT?" ], "BIR-LO01": [ - "(KISS) (WHISTLE)" + "(CSÓK) (SÍP)" ], "BIR-LO02": [ - "OH MY, THAT'S A PRETTY ONE." + "Ó, SZÉP." ], "BIR-LO03": [ - "OH LOOK, A MUCKY-MUCK." + "Ó, NÉZD, EGY SZÁMÁR." ], "BIR-am08": [ - "HERE, BIRDIE BIRDIE..." + "ITT, BIRDIE BIRDIE..." ], "BLU-AM01": [ - "A LITTLE BIT OF HELP WOULD BE GOOD!" + "EGY KIS SEGÍTSÉG JÓL LENNE!" ], "BLU-AM02": [ - "OH, THIS IS A FINE MESS." + "Ó, EZ SZÉP SZABADSÁG." ], "BLU-AM03": [ - "HMM, QUITE AN ENIGMA WE'RE FACING." + "HMM, EGY REJTSÉGGEL SZÁMÁRUNK." ], "CHI-AM01": [ - "THIS IS A CATASTROPHE. A CATASTROPHE I SAY!" + "EZ KATASZTRÓFA. KATASZTRÓFA MONDOM!" ], "CHI-AM02": [ - "THEY WANT ME TO GO INTO THE JUNGLE - ME! HO HO OH...", - "I'D SOONER WRESTLE AN ENRAGED FLUT-FLUT." + "AZT AKARJÁK, HOGY BEMENJÜK A DZSUNGLEBA - ÉN! HO HO OH...", + "HABBAN BÍRKOZTAK EGY FEJEZETT FLUT-FUTÓL." ], "CHI-AM03": [ - "F-FIRST THE FISHERMAN'S BOAT IS...", - "IT'S ATTACKED BY A MONSTER...", - "AND NOW, NOW THIS...", - "WHAT ELSE COULD GO WRONG?" + "F-ELŐSZÖR A HALÁSZ HAJÓJA...", + "EGY SZöRNYETEG MEGTÁMADTA...", + "ÉS MOST, MOST EZT...", + "MI LEHET MÉG ELROSSZULNI?" ], "CHI-AM04": [ - "I DON'T... I'D, I'D... OOH, MAYBE I SHOULD RAISE TAXES...", - "TO PAY FOR THIS MESS." + "NEM... LENNE, ÉN... Ó, TALÁN ADÓT KELLEMELNEM...", + "FIZETNI EZÉRT A SZÁMÁRA." ], "CHI-AM05": [ - "PROBLEMS... PROBLEMS... PROBLEMS!" + "PROBLÉMÁK... PROBLÉMÁK... PROBLÉMÁK!" ], "CHI-AM06": [ - "(SOBS) I'LL NEVER GET RE-ELECTED NOW..." + "MOST SOHA ÚJRA VÁLASZTOTTAK..." ], "CHI-AM07": [ - "(MOANS) WHAT'S HAPPENED TO THE VILLAGE'S ENERGY BEAM?" + "(NÖNYÖG) MI TÖRTÉNT A FALU ENERGIASUGÁRJÁVAL?" ], "CHI-AM08": [ - "I... THEY, I DON'T... (MUTTERS)" + "ÉN... ŐK, ÉN NEM... (MOTOG)" ], "CHI-LO01": [ - "...WINDMILL, MONSTERS, POWER, RE-ELECTION..." + "...SZÉLMALOM, SZÖRNYEK, HATALOM, ÚJRAVÁLASZTÁS..." ], "CHI-LO02": [ - "...THE POLLS, I... MONSTERS, HM... RE-ELECTION, OH..." + "...A SZAVAZÁSOK, ÉN... SZÖRNYEK, HM... ÚJRAVÁLASZTÁS, Ó..." ], "EXP-AM01": [ - "I NEED TO SET OFF ON MY JOURNEY SOON.", - "I NEED PRECURSOR ORBS!" + "HAMAROSAN EL KELL INDULNI UTAZÁSRA.", + "PRECURZOR GOMBOK KELL!" ], "EXP-AM02": [ - "LET'S SEE, NOW WHERE SHALL I GO FIRST? EH..." + "NÉZD MEG, MOST HOVA MENJEK ELŐSZÖR? EH..." ], "EXP-AM03": [ - "OH I DO MISS THE OPEN ROAD." + "Ó, HIÁNYZIK A NYÍLT ÚT." ], "EXP-AM04": [ - "SO MANY PLACES TO SEE, AND SO LITTLE TIME." + "OLY SOK HELYET LÁTNI, ÉS OLYAN KEVES IDŐ." ], "EXP-AM05": [ - "WELL IN MY DAY, YOU COULD WALK THE LANDS", - "WITHOUT BEING ASSAULTED BY MONSTERS!" + "JÓL AZ ÉN NAPOMBAN, BEJÁRHATNA A FÖLDET", + "NÉLKÜL, HOGY SZÖRNYETETT MEGÁLLAPÍTANAK!" ], "EXP-LO02": [ - "I NEED MORE PRECURSOR ORBS." + "TÖBB ELŐFORMÁT KELL." ], "EXP-LO1A": [ - "(MUTTERS)" + "(MOTOG)" ], "FAR-AM01": [ - "(SNORES) HERE, BESSIE... HERE, BESSIE BESSIE...", - "THAT'S A GOOD GIRL..." + "(HOROL) ITT, BESSIE... ITT, BESSIE BESSIE...", + "EZ EGY JÓ LÁNY..." ], "FAR-AM02": [ - "GOTTA BRING IN THE CROPS 'FORE THE JUNE BUGS..." + "BE KELL HOZNI A TERMÉNYEKET A JÚNIUSI POLGÁROK ELŐTT..." ], "FAR-AM2A": [ - "GOTTA BRING IN THE CROPS 'FORE THE JUNE BUGS GET..." + "BE KELL HOZNI A TERMÉNYEKET, MIELŐTT A JÚNIUSI POLGÁROK ELÉRHETNEK..." ], "FAR-LO01": [ - "(SNORES)" + "(HORKOL)" ], "FAR-LO1A": [ - "(SNORES)" + "(HORKOL)" ], "FIS-AM01": [ - "GRR, THESE DARN FISH...", - "I NEVER CATCH ME A SINGLE ONE." + "GRR, EZEK A ROHADT HALAK...", + "SOHA EGYET SEM FOGOK EL." ], "FIS-AM02": [ - "THEM MONSTERS THAT DONE BIT ME SHIP", - "WILL DRIVE ME BROKE." + "AZOK A SZÖRNYEK, AMELYEK MEGHAJTAK HAJÓM", + "WILL DRIVE ME BOKE." ], "FIS-AM03": [ - "DRAT, THESE BLIGHTERS!", - "IN ME BASKET, DARN FISHIES, COME ON YEAH...", - "HEH HE HE HE HE..." + "DRAT, EZEK A BLIGHTEREK!", + "AZ ÉN KOSÁRBAN, FENNE FISHIES, GYERÜNK, IGEN...", + "HÉ HE HE HE..." ], "FIS-AM04": [ - "OH I LOVE THE SMELL OF FISH IN THE MORNIN'." + "Ó, IMÁDOM A HALSZAGÁT REGGEL." ], "FIS-AM05": [ - "OOH I COULD USE ME A SALTED FISH LIPS ON RYE." + "ÓÓÓ, HASZNÁLHATNAM EGY SÓZOTT HALAJKAT ROSSRA." ], "FIS-AM06": [ - "I 'MEMBER THE BIG ONE THAT GOT AWAY..." + "ÉN TAGOK A NAGYNAK, AKI MEGSZÜLT..." ], "FIS-LO01": [ "GRR!" @@ -1362,947 +1362,947 @@ "HA HA HA HA HA HAH!" ], "FIS-LO04": [ - "DARN FISH... THEY NEVER GET IN ME NET!" + "RONYA HAL... SOHA NEM KERÜL BENNEM HÁLÓ!" ], "FIS-LO05": [ - "HA HA HA AH HA HA HA HAH!" + "HA HA HA HA HA HA HAH!" ], "FIS-TA01": [ - "TO THE LEFT!" + "BALRA!" ], "FIS-TA02": [ - "RIGHT WITH YA!" + "AZONNAL VELÜNK!" ], "FIS-TA03": [ - "HERE COMES A BIG ONE!" + "ITT JÖN EGY NAGY!" ], "FIS-TA04": [ - "YE MISSED A JUMBO, LADDIE!" + "HIÁNYZOTT EGY JUMBO-T, LADDIE!" ], "FIS-TA05": [ - "DON'T MISS ONE LIKE THAT AGAIN!" + "NE HAGYJA KI ÚJRA ILYET!" ], "FIS-TA06": [ - "STEADY BOY." + "STEADY FIÚ." ], "FIS-TA07": [ - "YOUR SAILS ARE SAGGING IN THE WIND, BOY." + "A SZÉLBEN RÜGGNEK A VITORLÁID, FIÚ." ], "FIS-TA08": [ - "MISSED." + "NEM FOGADOTT." ], "FIS-TA09": [ - "LOOKS LIKE YOU COULD USE A BIGGER NET..." + "ÚGY ÚGY HASZNÁLHATNA NAGYOBB HÁLÓT..." ], "FIS-TA10": [ - "MISSED AGAIN!" + "ISMÉT ELMARADT!" ], "FIS-TA11": [ - "HOLD STEADY! YOU'RE ALMOST THERE..." + "ÁLLJ KÉSZEN! MAJDNEM OTT VAGY..." ], "FIS-TA1A": [ - "LEFT!" + "BAL!" ], "FIS-TA2A": [ - "RIGHT!" + "JOBB!" ], "GAM-AM01": [ - "HEY, TWENTY-TO-ONE ODDS AIN'T SO BAD!" + "HÉ, A HUSZON-EGY SZÉNY NEM OLYAN ROSSZ!" ], "GAM-AM02": [ - "NO, IT WAS A SURE THING!" + "NEM, BIZTOS VOLT!" ], "GAM-AM03": [ - "HEH HEH HEH... I'M GONNA HIT THE JACKPOT NEXT TIME!" + "HÉ HÉ HÉ... KÖVETKEZŐRE ELÉPEM A JACKPOT!" ], "GAM-AM04": [ - "HEH! IF I HAD AN ORB FOR EVERY MISSED OPPORTUNITY...!" + "HÉ! HA MINDEN ELMARADT LEHETŐSÉGRE VONATKOZNAK ORBAM...!" ], "GAM-AM05": [ - "HEY! BARRELS COULD COME BACK IN STYLE!" + "HÉ! A HODRÓK VISSZAJÖNTEK STÍLUSBAN!" ], "GAM-AM06": [ - "OH... I NEED A LUCKY BREAK." + "Ó... SZERENCSÉS SZÜNET KELL." ], "GAM-AM07": [ - "AW, WHAT ARE THE ODDS OF MOVIN' TO A TOWN UNDER ATTACK?" + "Ó, MI AZ ESÉLYE, HOGY EGY TÁMADÁS ALATT ÁLLÓ VÁROSBA KöLTöZZöN?" ], "GAM-AM08": [ - "I THOUGHT I HAD A GOOD TIP!" + "ÚGY HISZTEM VAN EGY JÓ TIPP!" ], "GAM-AM09": [ - "ANOTHER DAY, ANOTHER WAGER." + "EGY MÁSIK NAP, MÁSIK TÉC." ], "GAM-AM10": [ - "I BET NO ONE CAN TAKE ON THAT MONSTER." + "FOGADOK, HOGY SENKI NEM TUDJA BE VÁLLALNI EZT A SZÖRNYET." ], "GAM-AM11": [ - "HUH-HUH... I SHOULD CASH OUT AND MOVE ON." + "HUH-HUH... KÉSZÜLNI KELL, ÉS TOVÁBB LÉPNI." ], "GAM-AM12": [ - "EH, SOMETIMES YOU JUST CAN'T WIN." + "EH, NÉHA CSAK NEM NYERHETSZ." ], "GAM-AM13": [ - "HEY, WHAT ARE YOU LAUGHIN' AT? DO I AMUSE YOU?" + "HÉ, MIN NEVETSZ? SZÓRAKOZTAK?" ], "GEO-AM01": [ - "MM, INTERESTING STRATA..." + "MM, ÉRDEKES RÉTEG..." ], "GEO-AM02": [ - "POOR LITTLE MOLES..." + "SZEGÉNY KIS VAKONOK..." ], "GEO-AM03": [ - "INTERESTING..." + "ÉRDEKES..." ], "GEO-AM04": [ - "GOOD LUCK, BOYS!" + "SOK SZERENCSÉT FIÚK!" ], "GEO-AM05": [ - "NASTY LURKERS..." + "CSÚSZÓ LURKOK..." ], "GEO-AM06": [ - "ROCKS HAVE FEELINGS, TOO..." + "A SZIKLÁKNAK IS VAN ÉRZÉSEIK..." ], "GEO-AM07": [ - "HANG IN THERE, LITTLE ONES..." + "KICSIK!" ], "GEO-AM08": [ - "NOW I CAN GET BACK TO MY RESEARCH!" + "MOST VISSZA TÉRHETEK A KUTATÁSHOZ!" ], "GEO-LO01": [ - "I'VE GOT TO GET BACK TO MY RESEARCH." + "VISSZA KELL KERÜLNI A KUTATÁSHOZ." ], "GEO-LO02": [ - "HM, THIS STONE IS VERY OLD..." + "HM, EZ A KŐ NAGYON RÉGI..." ], "GOL-AM01": [ - "YOU JUST WON'T GIVE UP, WILL YOU?" + "CSAK NEM ADJA FEL, UGYE?" ], "GOL-AM02": [ - "SOON, THE DARK ECO WILL BE OURS!" + "HAMAROSAN MIÉNK LESZ A SÖTÉT ÖKO!" ], "GOL-AM03": [ - "FINISH THEM!" + "VÉGEZD BE ŐKET!" ], "GOL-AM04": [ - "FIRE!" + "TŰZ!" ], "GOL-AM05": [ - "BLAST THEM!" + "ROBBANTÁS ŐKET!" ], "GOL-AM06": [ - "WHAT? THEM AGAIN!" + "MIT? ÚJRA ŐK!" ], "GOL-AM07": [ - "IT'S TOO LATE!" + "TÚL KÉSŐ!" ], "GOL-AM08": [ - "YOU ARE MINE!" + "TE AZ ENYÉM VAGY!" ], "GOL-AM09": [ - "I HAVE YOU NOW!" + "NEKEM MOST VAN!" ], "GOL-AM10": [ - "AH HA HA HA HA!" + "HA HA HA HA HA!" ], "GOL-AM11": [ - "NO MERCY!" + "NINCS KEGYELEM!" ], "GOL-AM12": [ - "TAKE THAT!" + "VEDD EL!" ], "GOL-AM13": [ - "NICE TRY!" + "SZÉP PRÓBÁLKOZÁS!" ], "GOL-AM14": [ - "STAND STILL!" + "ÁLLJ MEG!" ], "GOL-AM15": [ - "PATHETIC!" + "SZÁNALMAS!" ], "GOL-AM16": [ - "NOOO!" + "NEM!" ], "GOL-AM17": [ "AHHH!" ], "GOL-AM18": [ - "WE'LL OPEN THE SILO ALL THE WAY AND DESTROY YOU TWO!" + "MEGNYITJUK A SILÓT, ÉS MINDENKETŐTEKET TÖMÖLJÜK!" ], "GOL-AM19": [ - "LIGHT ECO! IT DOES EXIST!" + "LIGHT ECO! LÉTEZIK!" ], "GOL-AM20": [ - "WE'RE NOT GONNA TAKE IT!" + "NEM VISSZÜK EL!" ], "MAI-AM01": [ - "FINISH THEM BOTH OFF ONCE AND FOR ALL!" + "FEJEZZE MEG EGYSZER MINDENKINEK MINDENKÉPPEN!" ], "MAI-AM02": [ - "TAKE THEM OUT!" + "VEDD KI ŐKET!" ], "MAI-AM03": [ "HA HA HA!" ], "MAI-AM04": [ - "ECO WON'T PROTECT YOU NOW!" + "AZ ECO MOST NEM VÉD MEG!" ], "MAI-AM05": [ - "DO SOMETHING!" + "CSINÁLJ VALAMIT!" ], "MAI-AM06": [ "AGH!" ], "MAI-AM07": [ - "NOOOOO!" + "NEEEE!" ], "MAI-AM08": [ - "WE'LL OPEN THE SILO ALL THE WAY AND DESTROY YOU TWO!" + "MEGNYITJUK A SILÓT, ÉS MINDENKETŐTEKET TÖMÖLJÜK!" ], "MAI-AM09": [ - "THEY MUST NOT BE ALLOWED TO GET IT!" + "NEM SZABAD MEGSZEREZNI!" ], "MIN-LO01": [ - "ONE OF THESE DAYS I'LL BE RICH...", - "YOU MEAN WE'LL BE RICH!", - "YEAH. WHATEVER." + "E NAP EGYIKÉN GAZDAG LESZEK...", + "ÚGY ÉRTED, GAZDAG LESZÜNK!", + "IGEN. TÖK MINDEGY." ], "MIN-LO03": [ "DIG, WILLARD! DIG!", - "YEAH, BUT YOU'RE NOT DIGGING!", - "THAT'S 'CAUSE I'M DOIN' THE THINKIN'!" + "IGEN, DE TE NEM ÁSOL!", + "AZÉRT, MERT ÉN GONDOLOM!" ], "MIN-LO04": [ - "DUH, GORDY? CAN I TAKE A BREAK?", - "OH, I'LL BREAK SOMETHIN' ALRIGHT. NOW DIG!" + "DUH, GORDY? TEHETEK SZÜNETET?", + "Ó, TÖRÖK VALAMIT RENDBEN. MOST ÁRU!" ], "MIN-LO05": [ - "I'M STARVING, GORDY!", - "EAT YOUR BIRD!" + "ÉHEZEK, GORDY!", + "EDD MADARAD!" ], "MIN-LO06": [ - "DUH, GORDY? I NEED A SHARPER PICK.", - "WHAT YOU NEED IS A SHARPER WIT!" + "DUH, GORDY? ÉLESEBB VÁLASZTÁS KELL.", + "MIRE VAN SZÜKSÉGE, AZ ÉLESEBB ÉRSÉGRE!" ], "MSH-AM01": [ - "WAH-HA-HA-HA-HA! I'M GONNA BE RICH!" + "WAH-HA-HA-HA-HA! GAZDAG LESZEK!" ], "MSH-AM02": [ - "DIG, DIG, DIG!" + "TE, TE, TE!" ], "MSH-AM03": [ - "WILLARD! WORK HARDER, NOT SMARTER!" + "WILLARD! MUNKÁLJ KEMÉNYEBBEN, NE OKOSABBAN!" ], "MSH-AM04": [ - "AH-HAH, I'LL BE THE RICHEST MAN IN THE WORLD! AH HA HA..." + "AH-HAH, ÉN LESZEK A VILÁG LEGGAZDAGABB EMBERE! AH HA HA..." ], "MSH-AM05": [ - "OH HO HO! NOBODY'S EVEN SEEN A GEM THIS SIZE! AH HA HA!" + "Ó HO HO! SENKI MÉG NEM LÁTT MÉRETET! AH HA HA!" ], "MSH-AM06": [ - "EASY STREET, HERE I COME!" + "EASY STREET, ITT JÖVEK!" ], "MSH-AM07": [ - "MY GEMS! ALL MY GEMS!" + "KÖNYVEM! ÖSSZES KÖNYVEM!" ], "MSH-AM08": [], "MSH-AM09": [ - "(CHUCKLING) I CAN'T WAIT TO CASH THIS BABY IN!" + "(KUNCOGVA) ALIG VÁROM, HOGY BEVEZETHSSAM EZT A BABÁT!" ], "MSH-AM10": [ - "THIS LOOKS LIKE A RARE CRYSTITE ZLARCONIA! OH-HO-HO!" + "RITKA CRYSTITE ZLARCONIANAK NÉZ KI! Ó-HO-HO!" ], "MSH-AM11": [ - "NOW WAIT A MINUTE! THEY'RE ALL MINE! MINE, I TELL YA!" + "MOST VÁRJ EGY PERCET! MINDEN ENYÉM! ENYÉM, MONDOM!" ], "MSH-AM12": [ - "SO, WILLARD. WHAT ARE YOU GONNA DO WITH", - "YOUR QUARTER, OF YOUR HALF?" + "SZÓVAL, WILLARD. MIT CSINÁLSZ", + "A NEGYEDED, A FELED?" ], "MSH-AM1A": [ - "I'M GONNA BE RICH!" + "GAZDAG LESZEK!" ], "MSH-AM2A": [ - "DIG, DIG, DIG!" + "TE, TE, TE!" ], "MSH-AM3A": [ - "WORK HARDER, NOT SMARTER!" + "MUNKÁLJ KEMÉNYEBBEN, NE OKOSABBAN!" ], "MTA-AM01": [ - "DUH, ARE WE ALMOST DONE?" + "DUH, MÁR KÉZÜNK?" ], "MTA-AM02": [ - "GEE, CAN WE TAKE A BREAK?" + "SZÜNETET TEHETÜNK?" ], "MTA-AM03": [ - "AWW, I'M HUNGRY..." + "AWW, ÉHES VAGYOK..." ], "MTA-AM04": [ - "DUH... I THINK BIRDIE'S CAGE NEEDS CLEANING..." + "DUH... SZERINTEM TISZTÍTÁSRA KELL A BIRDIE'S KITREKE..." ], "MTA-AM05": [ - "GEE, THAT'S AN AWFULLY BIG GEM!" + "JÁ, EZ EGY RÖGETLENEN NAGY KÖRNYÉK!" ], "MTA-AM06": [ - "DUH... I ALWAYS WANTED TO BE A LUMBERJACK..." + "DUH... MINDIG FAJTA SZERETNÉM LENNI..." ], "MTA-AM07": [ - "DUH, GORDY PROMISED TO GIVE ME HALF OF WHATEVER I COULD CARRY!" + "DUH, GORDY MEGÍGÉRTETT, HOGY ADJA MEG A FÉLÉT, HOGY HOGY HOGY HASZNÁLHATOK!" ], "MTA-AM08": [ - "EH HEH... BIRDIE IS MY BEST FRIEND..." + "EH HÉ... MADÁR A LEGJOBB BARÁTOM..." ], "MTA-AM09": [ - "I LOVE MY LITTLE BIRDIE..." + "IMÁDOM A KIS MADÁRAM..." ], "RED-AM01": [ - "IS ANYBODY THERE?" + "VAN OTT VALAKI?" ], "RED-AM02": [ - "WELL..." + "JÓL..." ], "RED-AM03": [ - "WHAT KEPT YOU?" + "MI TARTOTT MEG?" ], "SAGELP03": [ - "THESE TWO COULDN'T UNBLOCK THEIR EARS..." + "EZEK KETTŐNEK NEM TUDTA FELOLDNI A FÜLÜKET..." ], "SAGELP04": [ - "HE'LL JUST NEVER BE LIKE HIS UNCLE...", - "I DON'T CARE WHAT THE OTHERS SAY." + "SOHA NEM LESZ OLYAN, MINT A NAGYBÁTYJA...", + "NEM ÉRDEKEL MIT MONDNAK A MÁSOK." ], "SAGELP05": [ - "HELLO, BLUE SAGE? HELLO?", - "WHERE IN THE BLUE BLAZES COULD HE BE..." + "HELLO, KÉK ZSÁLYA? HELLÓ?", + "HOL LEHET A KÉK LÁGOKBAN..." ], "SAGELP06": [ - "MY, MY, MY..." + "ÉN, ÉN, ÉN..." ], "SAGELP11": [ - "ANYONE? ANYONE AT ALL? COME IN?" + "BÁRKI? EGYÁLTALÁN BÁRKI? BEJÖN?" ], "SAGELP20": [ "HMM..." ], "SAGELP21": [ - "THE LURKERS MUST BE STOPPED." + "MEG KELL MEGÁLLÍTANI A LURKOKAT." ], "SAGELP22": [ - "I SEE..." + "LÁTOM..." ], "SAGELP23": [ - "NO..." + "NEM..." ], "SAGELP24": [ - "WHAT COULD HAVE HAPPENED TO THEM?" + "MI TÖRTÉTHETTE VELÜK?" ], "SAGELP31": [ - "THIS ISN'T GOOD." + "EZ NEM JÓ." ], "SAGELP32": [ - "DARK ECO CRYSTALS?" + "SÖTÉT ÖKOKRISTÁLYOK?" ], "SAGELP33": [ - "MAIA AND GOL HAVE GOTTEN IN OVER THEIR HEADS!" + "MAIA ÉS GOL BEKERÜLT A FEJÜK FELÜL!" ], "SAGELP34": [ - "HNG, DARK ECO'S POWERS CANNOT BE CONTROLLED!" + "HNG, A DARK ECO EREJE NEM SZABÁLYOZHATÓ!" ], "SAGELP35": [ - "DARK ECO IN THE GLACIERS?" + "SÖTÉT ÖKO A GLECCSEREKBEN?" ], "SAGELP36": [ - "AH! THERE'S LURKER TROOPS IN THE MOUNTAINS!" + "AH! VAN LURKER CSAPATOK A HEGYEKEN!" ], "SAGELP37": [ - "WHAT IS GOL PLANNING..." + "MI A GOL TERVEZÉSE..." ], "SAGELP38": [ - "COULD HE ACTUALLY HAVE...?" + "LEHET TÉNYLEG...?" ], "SCU-AM01": [ - "AW... I JUST CAN'T DO IT ANYMORE." + "AW... CSAK NEM TUDOM MÁR." ], "SCU-AM02": [ - "AW, I WISH I HAD SOME INSPIRATION." + "Ó, BÁRCSAK VAN EGY INSPIRÁCIÓ." ], "SCU-AM03": [ - "I'M AS INSPIRED AS... THIS ROCK." + "OLYAN INFORMÁCIÓ VAGYOK, MINT... EZ A SIKLA." ], "SCU-AM04": [ - "AW... WHERE IS MY MUSE?" + "AW... HOL VAN A MÚZSÁM?" ], "SCU-AM05": [ - "I CAN'T WORK LIKE THIS!" + "NEM TUDOK ÍGY DOLGOZNI!" ], "SCU-AM06": [ - "AW MAN... WILL SHE EVER COME BACK TO ME?" + "Ó, EMBER... VISSZAJÖN VALAHA HOZZÁM?" ], "SCU-LO01": [ - "AW MAN..." + "Ó EMBER..." ], "SKSP009F": [ - "GET SOME! GET SOME! HA HA HA!" + "SZEREZZ! SZEREZZ! HA HA HA!" ], "WAR-LO1A": [ - "(SOBBING)" + "(ZOKOGÁS)" ], "WAR-LO1B": [ "(SOBS)" ], "WAR-LO1C": [ - "(BLOWS NOSE AND SPUTTERS)", - "(CONTINUES SOBBING)" + "(ORROLT FÚJ ÉS FÖLÖBÖL)", + "(ZOKOGVA TOVÁBB FOLYTATJA)" ], "YEL-AM01": [ - "TIME IS RUNNIN' OUT!" + "AZ IDŐ TELJES!" ], "YEL-AM02": [ - "HEY! GET ME OUTTA HERE!" + "HÉ! VIGYÁL KI INNEN!" ], "YEL-AM03": [ - "WHEN I GET OUTTA HERE, SOME SHOOTIN'S GONNA START!" + "AMIKOR KIJUTOK INNEN, KEZDŐDIK EGYES LÖVÉS!" ], "asstv100": [ - "OKAY, YOU HAVE ENOUGH CELLS TO INCREASE THE POWER ON THE HEAT SHIELD.", - "RIDE THE WOODEN MINECART DOWN THE SHAFT BY THE LAVA GEYSER.", - "I'LL MEET YOU BY THE ENTRANCE TO THE LAVA TUBE,", - "SO I CAN MODIFY THE ZOOMER. HURRY!" + "OKÉ, VAN ELÉG CEMJE A HŐPAJZS TELJESÍTMÉNYÉNEK NÖVELÉSÉHEZ.", + "A LÁVA GEJZER MELLETT HAJTJA LE A FA MINECARTOT.", + "A LÁVA CSŐ BEJÁTÁSÁNÁL TALÁLKOZUNK,", + "ÍGY MÓDOSÍTHATOM A ZOOMERT. SIET!" ], "asstv101": [ - "HAHA, OKAY! YOU HAVE ENOUGH CELLS TO INCREASE", - "THE POWER ON THE HEAT SHIELD.", - "MEET ME BACK IN THE VOLCANIC CRATER.", - "I'LL BE WAITING BY THE LAVA TUBE DOWN THE SHAFT BY THE LAVA GEYSER.", - "BRING ME THE POWER CELLS!" + "HAHA, OKÉ! ELÉG SEJTE VAN A NÖVELETHEZ", + "A HŐPAJZS ERŐJE.", + "TALÁLKOZZUNK VISSZA A VULKÁNI KRÁTERBEN.", + "A LÁVACSŐ MELLETT VÁROK A TENGELYNÉL A LÁVAGEJZER MELLETT.", + "HOZD MEG AZ ERŐSEJTEKET!" ], "asstv102": [ - "HURRY UP WITH THOSE POWER CELLS!", - "I'M WAITING BY THE WOODEN MINECART SHAFT NEAR THE LAVA GEYSER." + "SIESS AZOKKAL AZ ERŐCELLÁKKAL!", + "A LÁVA GEJZER KÖZELÉBEN A FA MINECART AKNA MELLETT VÁROK." ], "asstv103": [ - "DON'T FORGET TO TURN ON THE TELEPORT GATE TO LET US THROUGH.", - "YOU'VE GOT TO GO INTO THE RED SAGE'S LAB", - "IN THE CENTER OF THE VOLCANIC CRATER TO TURN IT ON.", - "WE CAN'T COME THROUGH UNTIL IT'S BACK ONLINE." + "NE FELEJTSÜNK BEKAPCSOLNI A TELEPORT KAPUT, HOGY ÁT HASZNÁLHATJON MINKET.", + "BE KELL MENNI A VÖRÖS ZSÁLYA LABORÁBA", + "A VULKÁNI KRÁTER KÖZÉPÉBEN, HOGY BEKAPCSOLJUK.", + "AMÍG VISSZA KERÜL AZ ONLINE." ], "asstv104": [ - "HEY, WE'RE STILL BACK IN ROCK VILLAGE!", - "TURN ON THE TELEPORT GATE!" + "HÉ, MÉG VISSZA VAGYUNK A ROCK FALUBAN!", + "BEKAPCSOLJUK A TELEPORT KAPUT!" ], "asstv105": [ - "WE WANNA JOIN YOU IN THE VOLCANIC CRATER!", - "GO INTO THE RED SAGE'S LAB AND TURN ON THE GATE." + "CSATLAKOZNI SZERETNÉNK A VULKÁNI KRÁTERBEN!", + "MENJ BE A VÖRÖS ZSÍLÁS LABORÁBA, ÉS KAPCSOLATOS A KAPUT." ], "asstva73": [ - "HEY GUYS! BY MY CALCULATIONS, IT'S GOING TO TAKE", - "72 POWER CELLS TO FUEL THE HEAT SHIELD", - "AGAINST THE LAVA ON THE WAY TO GOL AND MAIA'S CITADEL." + "HÉ SRÁCOK! SZÁMÍTÁSAIM SZÁMÍTÁSA SZERINT ELFOGADNI", + "72 TELJESÍTMÉNYCELLA A HŐPAJZS FELÜZETETÉSÉHEZ", + "A LÁVA ELLEN ÚTON GOL ÉS MAIA CITADELLÁJA FELÉ." ], "asstva74": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO GET THROUGH THIS LAVA!", - "YOU CAN'T GET THROUGH TO GOL AND MAIA'S CITADEL", - "UNTIL YOU'VE COLLECTED 72 POWER CELLS!" + "NINCS ELÉG TELJESÍTMÉNY CELLÉKED, HOGY ÁT KERÜLJÜK EZEN A LÁVÁN!", + "NEM LEHET ÁT GOL ÉS MAIA CITADELLÁJÁBAN", + "AMÍG 72 TELJESÍTMÉNYCELT GYŰJTÖTT EL!" ], "asstvb02": [ - "WOW, DID YOU SEE THAT?", - "BLUE ECO VENTS HAVE BEEN ACTIVATED ALL OVER THE WORLD!", - "I KNEW THERE WAS A WAY TO TURN THEM ON.", - "THERE MUST BE PLACES TO TURN ON THE OTHER ECO VENTS AS WELL." + "WOW, LÁTAD EZT?", + "A KÉK ECO VENTS-EK AZ EGÉSZ VILÁGON AKTIVÁLJUK!", + "TUDTAM, HOGY LEHET MÓD BEKAPCSOLNI ŐKET.", + "KELL HELYEN BEKAPCSOLNI A TÖBBI ECO SZELLŐZŐKET IS." ], "asstvb03": [ - "GOOD! YOU STOPPED ALL THE MINE-DROPPING LURKERS!", - "THEY'VE BEEN THREATENING THE WATERS AROUND OUR VILLAGE FOR WEEKS.", - "BRING YOUR ZOOMER BACK TO THE TRANS-PAD AND I'LL TELEPORT IT BACK!" + "JÓ! MEGÁLLÍTOD AZ ÖSSZES AKNAVESZETŐ LUNKÓT!", + "HÉTEKEN VESZÉLYEZTÉK FALUNK KÖRNYÉKÉT A VIZET.", + "HOZD VISSZA A ZOOMERÉT A TRANS-PAD-HEZ, ÉS VISSZA TELEPORTÁLOM!" ], "asstvb04": [ - "GOOD, YOU'VE COLLECTED ENOUGH POWER CELLS TO FUEL MY HEAT SHIELD!", - "MEET ME BY THE ENTRANCE TO THE FIRE CANYON", - "BY CLIMBING THE CLIFF BEHIND THE FARMER'S HOUSE.", - "BRING THE POWER CELLS, AND HURRY!", - "MY FATHER SAYS HE'S SEEN MORE LURKERS AROUND!" + "NAGYON, ELÉG TELJESÍTMÉNYCELTÁT GYŰJTETT MEG A HŐPAJZSOM MŰKÖDÉSÉHEZ!", + "TALÁLKOZZUNK A TŰZ KANYON BEJÁRATÁVAL", + "A PARASZT HÁZA MÖGÖTT A SZIRTRE MÁSSZAL.", + "HOZZÁ EL AZ ERŐCELLÁKAT, ÉS SIESS!", + "APÁM AZT MONDJA, HOGY TÖBB LESZNŐT LÁTT KÖRÜL!" ], "asstvb08": [ - "HURRY UP WITH THOSE POWER CELLS.", - "I'M WAITING AT THE HEAD OF FIRE CANYON", - "AT THE TOP OF THE CLIFF BEHIND THE FARMER'S HOUSE!" + "SIESS AZOKKAL AZ ENERGIAELLÁTÁSOKKAL.", + "A TŰZ KANYON FEJÉN VÁROK", + "A PARASZHÁZ MÖGÖTT A SZIRTA TETEJÉN!" ], "asstvb09": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO FUEL MY HEAT SHIELD.", - "YOU CAN'T CROSS FIRE CANYON UNTIL YOU COLLECT ENOUGH POWER CELLS." + "NINCS ELÉG TELJESÍTMÉNYELEMJE, HOGY A HŐPAJZSOM MEGÜZEMELÉSE.", + "A TŰZ KANJONON NEM KELÉSZHETSZ ÁT, AMEDDIG ELEGENDŐ ENERGIACELLÁT NEM GYŰJT öSSZE." ], "asstvb20": [ - "GOOD FLYING! THOSE LURKERS WERE NO MATCH FOR YOUR ZOOMER!", - "THAT'S ONE MORE POWER CELL!" + "JÓ REPÜLÉST! AZOK A LURKOLÓK NEM ISMERTETEK AZ ÖN ZOOMERÁT!", + "EZ MÉG EGY TELJESÍTMÉNYCELLA!" ], "asstvb21": [ - "GOOD WORK! AREN'T YOU GUYS HAPPY", - "YOU SAVED OUR LITTLE FLUT-FLUT FRIEND?", - "SHE MAY COME IN HANDY AGAIN SOMETIME.", - "NOW, GO BACK TO THE TRANS-PAD, AND I'LL BRING HER HOME." + "JÓ MUNKA! NEM VAGYTOK BOLDOG SZÁMOK", + "MEGMENTETTE KIS FLUT-FLUT BARÁTUNKAT?", + "ÚJRA IS HASZNOS LEHET.", + "MOST, MENJ VISSZA A TRANS-PAD-HOZ, ÉS HAZAHOZOM." ], "asstvb22": [ - "WOW! YOU RAISED A PIECE OF THE UNDERWATER RUINS TO THE SURFACE!", - "IT SEEMS YOU CAN USE ECO IN WAYS WE'VE NEVER SEEN BEFORE!", - "A POWER CELL SURFACED WITH THE ROOM. CLIMB UP THERE AND GET IT." + "AZTA! A VÍZALATI ROMOK EGY DARABÁBÓL FELSZÍNRE EMELTE!", + "ÚGY ÚGY ÚGY HASZNÁLHATJA AZ ECO-T OLYAN MÓDON, AMELYEKET MÉG SOSEM LÁTTUNK!", + "EGY TELJESÍTMÉNY CELLE A SZOBÁBAN. MÁSSZ FEL ODA, ÉS VEDD EL." ], "asstvb23": [ - "GREAT WORK! THE PEOPLE OF ROCK VILLAGE ARE BREATHING", - "A COLLECTIVE SIGH OF RELIEF!", - "BUT THERE'S NO TIME TO CELEBRATE! USE YOUR ZOOMER", - "TO NAVIGATE THE MOUNTAIN PASS UP AHEAD.", - "BE CAREFUL, IT LOOKS LIKE THE LURKERS HAVE RIGGED", - "THE WHOLE PASS WITH EXPLOSIVES!", - "WHEN YOU REACH THE VOLCANIC CRATER,", - "BE SURE TO VISIT THE RED SAGE'S LAB", - "AND ACTIVATE THE TELEPORT GATE SO THAT FATHER AND I CAN JOIN YOU." + "NAGYSZERŰ MUNKA! LÉLEGZIK A ROCK FALU NÉPE", + "A MEGKÖNYÖBBSÉG KOLLEKTÍV SÓHAJÁT!", + "DE NINCS IDŐ ÜNNEPELNI! HASZNÁLJA A ZOOMERÉT", + "A HEGYBEN NAVIGOZÁSHOZ HAGYJ EL ELŐRE.", + "VIGYÁZAT, LÁTSZIK, HOGY A LURKÓK MEGSZABADULTAK", + "AZ EGÉSZ ROBBANÓANYAGOKKAL!", + "AMIKOR ELÉR A VULKÁNI KRÁTERT,", + "MINDENKI LÁTOGATJON MEG A VÖRÖS ZSÁLYA LABORÁBA", + "ÉS AKTIVÁLJA A TELEPORT KAPUT, HOGY APA ÉS ÉN CSATLAKOZHATUNK." ], "asstvb24": [ - "OH MY! THOSE LURKERS MUST BE HEADED", - "FOR A DETONATOR AT THE END OF THE CANYON!", - "IF THEY REACH IT BEFORE YOU DO,", - "THEY'LL BLOW UP THE ENTIRE PASS!", - "YOU'VE GOTTA BEAT THEM THERE AND DESTROY THE DETONATOR,", - "OR IT'S ALL OVER!" + "JAJ NEKEM! AZOKAT A LURKOLÓKAT FEJEZNI KELL", + "GYÚTÓRA A KANYON VÉGÉN!", + "HA AZ ELŐTT ELÉRJÉK,", + "FELBONTATJÁK AZ EGÉSZ HÉPŐT!", + "OTT MEG KELL MEGÜZNI ŐKET, ÉS MEG KELL SEMMISÍTENI A DETONÁTORT,", + "VAGY MINDEN VÉGE!" ], "asstvb25": [ - "GOOD WORK! YOU BEAT THEM TO THE DETONATOR!", - "THE RED SAGE'S LAB IS JUST AHEAD.", - "GO TURN ON THE TELEPORT GATE SO WE CAN JOIN YOU." + "JÓ MUNKA! A GYÚJTÓRA VERD ŐKET!", + "A VÖRÖS ZSÁLYA LABORJA VÉG ELŐTT.", + "MENJ BE A TELEPORT KAPUT, HOGY CSATLAKOZHATUNK." ], "asstvb28": [ - "HEY! DON'T FORGET ABOUT THE SAGE AND ME!", - "YOU HAVE TO TURN ON THE TELEPORT GATE TO LET US THROUGH!", - "IT'S IN THE BLUE SAGE'S LAB, BY THE END OF FIRE CANYON.", - "IF YOU DON'T LET US THROUGH, THEN WE CAN'T HELP YOU!" + "HÉ! NE FELEJTSÜK EL A BÍRÓRÓL ÉS RÓLAM!", + "BE KELL BEKAPCSOLNI A TELEPORT KAPUT, HOGY KERESZTÜNK!", + "A KÉK ZSÁLYA LABORÁBAN VAN, A TŰZKANYON VÉGÉN.", + "HA NEM VESZ ÁT MINKET, AKKOR NEM TUDUNK SEGÍTENI!" ], "asstvb29": [ - "HEY! WE'RE STILL WAITING!", - "TURN ON THE TELEPORT GATE!" + "HÉ! MÉG VÁRUNK!", + "BEKAPCSOLJUK A TELEPORT KAPUT!" ], "asstvb30": [ - "HEY! WE CAN'T COME THROUGH UNTIL THE TELEPORT GATE'S ON!" + "HÉ! AMÍG A TELEPORT KAPU NEM BE JÖNÜNK!" ], "asstvb40": [ - "THIS DEVICE IS A COMMUNICATOR. WITH IT, MY FATHER AND I", - "CAN GIVE YOU ADVICE AT ANY TIME DURING YOUR QUEST." + "EZ A KÉSZÜLÉK EGY KOMMUNIKÁTOR. VELE, APÁM ÉS ÉN", + "BÁRMIKOR TANÁCSADHAT A KÜLDÉS ALATT." ], "asstvb41": [ - "THESE FLOATING EGG-SHAPED THINGS ARE PRECURSOR ORBS.", - "COLLECT ENOUGH OF THEM, AND SOME OF THE VILLAGERS WILL GIVE YOU", - "A POWER CELL IN EXCHANGE." + "EZEK A LEBEBE TOJÁS ALAKÚ DOLOGOK ELŐFORMÁNYOK.", + "GYŰJJEN EL ELEGET BELŐLÜK, ÉS NÉHÁNY FALUSI", + "CSERE TELJESÍTMÉNYCELLA." ], "asstvb42": [ - "THIS IS A POWER CELL, THE MOST IMPORTANT PRECURSOR ARTIFACT YOU CAN FIND!", - "YOU NEED TO COLLECT 20 OF THESE SO I CAN POWER THE HEAT SHIELD", - "FOR YOUR A-GRAV ZOOMER." + "EZ EGY TELJESÍTMÉNY CELL, A LEGFONTOSABB ELŐZETES MŰTERMÉK, AMIT TALÁLHAT!", + "EBBŐL 20-AT KELL GYŰJTENI, HOGY MEGÁLLAPÍTAM A HŐPAJZSOT", + "AZ A-GRAV ZOOMERÉHEZ." ], "asstvb44": [ - "HEY, YOU FOUND ONE OF MY SCOUT FLIES!", - "I SENT 7 OF THEM TO EACH AREA TO LOOK FOR POWER CELLS", - "BUT THE LURKERS MUST HAVE CAPTURED THEM ALL!" + "HÉ, MEGTALÁLTÁD AZ EGYIK CSERKÉSZLEGYEM!", + "7-ET KÜLDTEM MINDEN TERÜLETRE, HOGY KERESSÜK TELJESÍTMÉNY CELLÁT", + "DE A LURKÓK BIZTOSAN ELFOGADJÁTOK AZOKAT!" ], "asstvb45": [ - "WOW! THAT LAST SCOUT FLY HAD A POWER CELL!", - "I'LL BET IF YOU COLLECT ALL 7 IN EACH AREA", - "YOU CAN FIND EVEN MORE POWER CELLS." + "AZTA! AZ UTOLSÓ CSERÉRLEGYÉBEN VOLT ERŐSEME!", + "MEGFOGADOM, HA MINDEN TERÜLETBEN BEGYŰJTED MINDEN 7-ET", + "MÉG TÖBB TELJESÍTMÉNYCELLÁT TALÁLHATSZ." ], "asstvb46": [ - "BE CAREFUL IN THE OCEAN, THE WATERS ARE CHOCK-FULL OF", - "LURKER SHARKS AND I'VE NEVER SEEN ANYONE DEFEAT ONE.", - "STAY CLEAR OF THEM IF YOU KNOW WHAT'S GOOD FOR YOU!" + "VIGYÁZAT AZ ÓCEÁNBAN, A VIZEK TELJESEK", + "LURKER SHARKS ÉS SOHA LÁTTAM SENKET LEGYŐZNI EGYET.", + "HA TUDJA MI A JÓ NEKED!" ], "asstvb47": [ - "REMEMBER, THAT'S A POWER CELL.", - "YOU NEED TO COLLECT AS MANY OF THOSE AS YOU CAN." + "NE FELEJTSD EL, EZ EGY ERŐCELLÁT.", + "MINÉL TÖBBET KELL GYŰJTENI AZOKBÓL." ], "asstvb48": [ - "THAT'S A BLUE ECO VENT! MORE CONCENTRATED THAN THE FLOATING CLUSTERS,", - "THIS VENT WILL GIVE YOU A FULL CHARGE OF BLUE ECO,", - "LETTING YOU USE IT FOR THE MAXIMUM TIME." + "EZ EGY KÉK ÖKO VENT! TÖRTÉNÍTETTEBB, MINT A LEBEGŐ FÜRTöK,", + "EZ A SZELLŐZŐ TELJES FELTÉTELT BLUE ECO,", + "A MAXIMÁLIS IDŐIG HASZNÁLHATJA." ], "asstvb71": [ - "YOU DON'T HAVE ENOUGH POWER CELLS TO POWER THE BLUE SAGE'S MACHINE.", - "WE CAN'T LIFT THAT BOULDER UNTIL YOU COLLECT 45 POWER CELLS." + "NINCS ELÉG TELJESÍTMÉNYELEMJE A BLUE SAGE GÉPÉNEK MEGÁLLÍTÁSÁHOZ.", + "AZT A SZÖVET NEM EMELHETÜK MEG, AMEDDIG ÖN NEM GYŰJT öSSZE 45 TELJESÍTMÉNYCELTÁT." ], "asstvb72": [ - "UNTIL WE FIND OUT WHY THE BLUE SAGE DISAPPEARED,", - "YOU'RE GOING TO NEED TO COLLECT 45 POWER CELLS TO FUEL HIS MACHINE.", - "GO GET 'EM!" + "AMÍG MEG NEM TALÁLJUK, MIÉRT ELTÜNT A KÉK ZSÁLYA,", + "45 TÁJÉKOZTATÓ CELLÁT KELL GYŰJTENI A GÉPÉNEK ÜZEMELTETÉSÉHEZ.", + "MENJ EL VÉD MEG!" ], "asstvb75": [ - "THIS GONDOLA SEEMS TO BE MALFUNCTIONING.", - "I'LL TRY TO WORK ON IT AND GET IT RUNNING AGAIN." + "EZ A GONDOLA RENDKÍVÜL MŰKÖDIK.", + "MEGPRÓBÁLOK DOLGOZNI, ÉS ÚJRA INDULNI." ], "asstvb76": [ - "I'VE REACTIVATED THE GONDOLA. IT CAN TAKE YOU TO SNOWY MOUNTAIN!", - "USE IT WHENEVER YOU WANT." + "ÚJRAAKTIVÁLTAM A GONDOLÁT. HAVAS HEGYRE VISZI!", + "HASZNÁLJA, AMIKOR AKARJA." ], "sagevb01": [ - "WELL, I SEE THAT YOU TWO HAVE FINALLY", - "DECIDED TO UNBLOCK MY COLLECTORS.", - "I WOULD OFFER MY CONGRATULATIONS", - "BUT YOU HAVE SO MUCH TO DO I WON'T WASTE YOUR TIME.", - "BY THE WAY, IF THINGS DON'T WORK OUT,", - "DAXTER COULD ALWAYS GET A JOB CONTROLLING THE VILLAGE RAT PROBLEM.", - "NYEH HA HA HA HA HA." + "NOS, LÁTOM, VÉGRE MEGVAN TI KETTEN", + "ÚGY HATÁROZOTT, HOGY FELOLDOM GYŰJTŐEIM BIZTOSÍTÁSÁT.", + "GRATULÁLUNK", + "DE ANNYIRA TENNIVALÓK VAN, HOGY NEM VESZEREM AZ IDŐD.", + "MELLESLEG, HA A DOLOG NEM ISMERIK,", + "DAXTER MINDIG SZEREZHET A FALU PATKÁNY PROBLÉMÁJÁNAK MUNKA ÁLLÁST.", + "YEH HA HA HA HA HA." ], "sagevb02": [ - "I HAVE TO ADMIT, I'M IMPRESSED. YOU TWO DIDN'T SCREW UP!", - "NOW THAT THE LURKERS CAN'T OPEN THAT SILO", - "THEY CAN'T FLOOD THE WORLD WITH DARK ECO", - "AND CAUSE UNTOLD DESTRUCTION.", - "WIPE THAT RIDICULOUS GRIN OFF YOUR FACE, DAXTER!", - "THE TWO OF YOU HAVE PLENTY TO DO.", - "GET ON WITH IT!" + "BE KELL VALLANOM, LENYÚJTOTT VAGYOK. TI KETTŐK NEM CSAZTÁTOK EL!", + "MOST, HOGY A LURKÓK NEM TUDJÁK KINYITNI AZT A SILÓT", + "SÖTÉT ECO-VAL NEM TÖRTÉNIK EL A VILÁGOT", + "ÉS MEGÍRHATATLAN PUSZTÍTÁST OKOZNAK.", + "TÖRLÖLD TÖRLÖL AZ ARCODRA EZT A NEVETÉSES VIGYOROT, DAXTER!", + "KETTŐTEKNEK VAN TENNIVALÓK.", + "TOVÁBBRA!" ], "sagevb03": [ - "YOU KEEP ON IMPRESSING ME. BUT THEN MAYBE IT'S JUST BECAUSE", - "I'VE GOT LOW EXPECTATIONS.", - "OKAY, YOUR MOMENT OF GLOATING IS OVER.", - "GET ON WITH IT!" + "FOLYAMATRA NYÚJT MEG. DE AZTÁN CSAK AZÉRT, MERT", + "ALACSONY ELVÁRÁSAIM VAN.", + "OKÉ, VÉGE VÉGE VÉGEDETT PILLANATÁNAK.", + "TOVÁBBRA!" ], "sagevb04": [ - "GOOD WORK, JAK! YOUR UNCLE WOULD BE PROUD.", - "THAT WAS A GIANT ARM FROM A PRECURSOR ROBOT.", - "I'VE NEVER SEEN ONE IN SUCH GOOD CONDITION!", - "I CAN'T IMAGINE WHAT THE LURKERS WANTED WITH IT,", - "BUT WE SURE DIDN'T WANT THEM TO GET IT.", - "IF YOU KEEP THIS SUCCESS UP...", - "NAH, YOU'LL STILL FALL SHORT OF HERO.", - "BUT KEEP TRYING. IT'S ENDEARING." + "SZÉP MUNKÁT JAK! BÁCSÁJA BÜSZKE LENE.", + "AZ EGY ÓRIÁSI KAR VOLT EGY ELŐZŐROBOTTÓL.", + "ILYEN JÓ ÁLLAPOTBAN SOSEM LÁTTAM!", + "EL NEM TUDOM KÉPZELNI, MIT AKARTAK VELE A LURKÓK,", + "DE BIZTOS, HOGY NEM AKARTÁK, HOGY MEGKAPJÁK.", + "HA TARTOZIK EZT A SIKERET...", + "NAH, MÉG MÉG ELMARAD A HŐS.", + "DE PRÓBÁLJON TOVÁBB. SZERETETES." ], "sagevb21": [ - "THOSE LITTLE GREEN BALLS OF ENERGY ON THE GROUND ARE A TYPE OF ECO.", - "PICK UP 50 SMALL GREEN ECOES, OR ONE BIG GREEN ONE TO INCREASE YOUR HEALTH." + "AZOK A KIS ZÖLD ENERGIAGOLYÓK A FÖLDÖN EGY TÍPUSÚ ECO.", + "VÉGY FEL 50 KIS ZÖLD ECOTET, VAGY EGY NAGY ZÖLDET, HOGY NÖVELJI EGÉSZSÉGÉT." ], "sagevb22": [ - "THAT'S BLUE ECO, WHICH CONTAINS THE ENERGY OF MOTION.", - "BLUE ECO ALLOWS YOU TO RUN FAST, BREAK BOXES, AND EVEN ACTIVATE SOME PRECURSOR", - "ARTIFACTS WHEN YOU GET NEAR THEM." + "EZ A KÉK ÖKO, AMELY TARTALMAZZA A MOZGÁS ENERGIÁJÁT.", + "A KÉK ECO GYORS FUTÁST, BOXOK TÖRÉSÉT, ÉS AZ ELŐZMÉNYEK AKTIVÁLÁSÁT LEHETŐVÉ TESZI", + "MŰKÉSZEK, AMIKOR KÖZELÜL KERÜL." ], "sagevb23": [ - "NOTICE HOW EACH BLUE ECO CLUSTER YOU PICK UP", - "INCREASES THE TIME YOU CAN USE ITS POWER." + "FIGYELMEZTETÉSE HOGYAN VESZ FEL AZ EGYES KÉK ECO KLUSTERET", + "NÖVELI AZ IDŐT, HOGY HASZNÁLHATJA AZ ERŐJÁT." ], "sagevb24": [ - "THIS IS A PRECURSOR DOOR.", - "IT CAN ONLY BE OPENED BY APPROACHING THE DOOR", - "WHILE CHANNELLING BLUE ECO THROUGH YOUR BODY." + "EZ EGY ELŐADÓ AJTÓ.", + "CSAK AZ AJTÓ KÖZELÍTÉSÉVEL NYITHATÓ", + "MIKöZBEN A KÉK ÖKOT CSERÉLTE A TESTÉN." ], "sagevb25": [ - "GOOD WORK, THE BLUE ECO CAUSED THE DOOR TO OPEN.", - "WITH BLUE ECO, YOU CAN BREATHE ENERGY INTO ALL KINDS", - "OF PRECURSOR ARTIFACTS THAT HAVE LAIN DORMANT FOR YEARS." + "JÓ MUNKÁT, A KÉK ECO KINYÍLTA AZ AJTÓT.", + "A BLUE ECO-VAL MINDEN FÉLÚ ENERGIÁBA LEHET", + "ÉVEK ALAKÍTÓ ELŐTERMÉKEKBŐL." ], "sagevb26": [ - "USE YOUR GOGGLES TO VIEW YOUR PROGRESS DURING THE ADVENTURE." + "A KALAND ALATT HASZNÁLJA A SZEMVEZETET, HOGY MEGTEKINJE FEJLESZTÉSÉT." ], "sagevb27": [ - "YOU CAN JUMP ONCE, THEN JUMP AGAIN IN THE AIR TO REACH EVEN HIGHER LEDGES." + "EGYSZER UGRÁLHAT, AZTÁN ÚJRA UGRÁS A LEVEGŐBEN, HOGY MÉG MEGMAGASABB LED-EKET ELÉRJ." ], "sagevb28": [ - "WHEN YOU'RE SURROUNDED BY ENEMIES, USE YOUR SPIN KICK." + "AMIKOR ELLENSÉGEK VETTEK KöRVÉ, HASZNÁLJA A PÖRGŐ RÖGTÉSÉT." ], "sagevb29": [ - "THAT'S NOT A SPIN KICK! TRY AGAIN." + "EZ NEM PÖRGÉS! PRÓBÁLD ÚJRA." ], "sagevb30": [ - "COME ON, JAK! DO A SPIN KICK." + "GYERÜNK, JAK! CSINÁLJ EGY PÖRGŐ RÚGÁST." ], "sagevb31": [ - "GOOD WORK. USE THE SPIN KICK WHEN YOU WANT A GOOD ALL-ROUND ATTACK." + "JÓ MUNKA. HASZNÁLJA A PÖRGŐ LÖGTÉST, AMIKOR SZERETNÉL EGY JÓ TELJES TÁMADÁST." ], "sagevb32": [ - "FOR A STRAIGHT LINE, MOVING ATTACK, USE YOUR FIST TO PUNCH." + "EGYENES VONAL, MOZGÓ TÁMADÁSHOZ, HASZNÁLJA AZ ÖKEL ÜTÉSÉHEZ." ], "sagevb33": [ - "THAT'S NOT A PUNCH ATTACK! LET'S SEE YOU PUNCH ALREADY." + "EZ NEM ÜTKEZÉS! LÁTSZÁK MÁR, HOGY PONTSZ." ], "sagevb34": [ - "JAK! USE A PUNCH." + "HOGYAN! HASZNÁLAT ÉS LYUKÁS." ], "sagevb35": [ - "GREAT JOB. USE THE PUNCH TO CLOSE DISTANCE QUICKLY IN A TOUGH SPOT." + "NAGYSZERŰ MUNKA. HASZNÁLJA A LYUKÁST A TÁVOLSÁG GYORS LEÁLLÍTÁSÁHOZ SZEMÉLYES HELYEN." ], "sagevb36": [ - "SOMETIMES YOU'LL WANT TO HIT THINGS WITH A GREATER FORCE.", - "TO BREAK ONE OF THESE BOXES, YOU SHOULD JUMP IN THE AIR", - "AND THEN DIVE DOWN ONTO IT, HANDS FIRST." + "NÉHÁ NAGYOBB ERŐVEL AKARSZ A DOLGOKRA ÜTNI.", + "AZ EGYIK DOBOZ TÖRÉHEZ A LEVEGŐBE KELL UGRANI", + "ÉS AZTÁN MERÜLJ LE RÁ, ELŐSZÖR KEZEL." ], "sagevb37": [ - "WHEN YOU GET SOME CONFIDENCE, TRY USING SOME OF YOUR MOVES IN COMBINATIONS." + "AMIKOR KIÉPÍTETT BIZALMÁT, PRÓBÁLJON MEG NÉHÁNY MOZZÁSAIT KOMBINÁCIÓBAN." ], "sagevb38": [ - "YOU CAN'T COME BACK THROUGH THE WARP GATE", - "UNTIL YOU FIND ALL 4 POWER CELLS ON THIS ISLAND." + "NEM LEHET VISSZAJÖNNI A HAJÓKAPUN", + "AMÍG MEG NEM TALÁLJA MIND A 4 TELJESÍTMÉNYCELT EZEN A SZIGETEN." ], "sagevb39": [ - "GREAT! YOU FOUND ALL OF THE POWER CELLS ON THE ISLAND.", - "COME BACK TO THE WARP GATE SO I CAN BRING YOU BACK TO THE LAB. HURRY UP!" + "NAGY! MEGTALÁLTAD A SZIGETEN AZ ÖSSZES ERŐCELLÁT.", + "GYERE VISSZA A WARP GAPUHOZ, HOGY VISSZA VIGYAM A LABORBA. SIESS!" ], "sksp0001": [ - "HEY! THAT SWEET-LOOKING BABE KEIRA WAS RIGHT! THERE ARE TRANS-PADS OUT HERE." + "HÉ! IGAZA AZ ÉDES KÉPŰ KEIRA CSÚCSÁNAK! VAN IDE KÍNÜL TRANS-PAD." ], "sksp0002": [ - "TRUST ME, THOSE DARK ECO BOXES ARE BAD NEWS!" + "HIGYJE MEG, AZOK A SÖTÉT ÖKO DOBOZOK ROSSZ HÍREK!" ], "sksp0003": [ - "I BET IF WE FOUND ALL OF THOSE SICKLY CUTE SCOUT FLIES ON EACH LEVEL", - "AT LEAST ONE WILL HAVE A POWER CELL!" + "FOGADOK, HA MINDEN SZINTEN MEGTALÁLJUK AZOKAT A BETEGEN ARNYOS CSERKÉSZLEGYEKET", + "LEGALÁBB EGYEN LESZ TELJESÍTMÉNYCELLA!" ], "sksp0004": [ - "ALL RIGHT, TREASURE!" + "RENDBEN, KINCS!" ], "sksp0005": [ - "THESE WOOD AND METAL BOXES DON'T LOOK THAT TOUGH!", - "I'LL BET THEY'LL BREAK IF YOU JUMP DIVE ONTO THEM." + "EZEK A FA- ÉS FÉM DOBOZOK NEM NÉZNEK KEMÉNYESEN!", + "FOGADOK, HOGY TÖRÖK, HA VEGYÜK RÁJUK." ], "sksp0006": [ - "THOSE ALL-METAL BOXES ARE THICKER THAN A YAKOW SKULL!", - "BUT THERE MUST BE SOMETHING THAT CAN BUST 'EM OPEN." + "AZOK CSAK FÉM DOBOZOK VASTAGABBAK, MINT EGY YAKOW KOPONYA!", + "DE KELL VAN VALAMI, AMI KI NYITHAT." ], "sksp0007": [ - "TWO WORDS: POWER CELLS. WE NEED TO FIND 'EM AND WE AREN'T LOOKIN' SO GOOD RIGHT NOW." + "KÉT SZÓ: ERŐCELLÁK. MEG KELL TALÁLJUK ŐKET, ÉS MOST NEM KISZÜNK OLYAN JÓL." ], "sksp0008": [ - "WE NEED ORBS. ORBS, JAK! HOW ARE EVER GONNA BUY POWER CELLS IF WE DON'T COLLECT ORBS!" + "ORBÁK KELL. ORBS, JAK! HOGYAN VÁSÁROLJUK VONATKOZÓAN TELJESÍTMÉNYCELTÁKAT, HA NEM GYŰJÜNK ORBÁKAT!" ], "sksp0009": [ - "WHAT A WEIRD-LOOKING THING! I'LL BET WE CAN GET THIS OPEN", - "IF YOU'RE POWERED UP WITH THAT ZAPPY BLUE ECO STUFF." + "MILYEN FURCSÁNAK TŰNŐ! FOGADOK, HOGY EZT MEGNYITHATJUK", + "HA EZZEL A ZAPPY BLUE ECO CUKUKKAL FELVESZTETTE." ], "sksp0010": [ - "HEY! LET'S GO CHECK OUT OL' FISH BREATH'S SPEED-BOAT AT THE DOCK!" + "HÉ! NÉZZÜK MEG OL' FISH BREATH'S GYORSHAJÓT A DOKKHOZ!" ], "sksp0011": [ - "WE SHOULD ASK THE FISHERMAN DOWN BY THE JUNGLE RIVER", - "IF WE CAN BORROW HIS SPEEDBOAT TO ZOOM ON OVER TO MISTY ISLAND!" + "LE KÉRJÜNK A HORGÁSZT A DZSUNGLE FOLYÓNÉL", + "HA KÖLCSÖNBE LEHETÜNK A GIBORCSÓNAJÁT, HOGY KINAGYÍTSUK A MISTY SZIGETRE!" ], "sksp0013": [ - "DID YOU SEE THE SIZE OF THE BITE", - "THAT LURKER SHARK TOOK OUT OF THE FISHERMAN'S BOAT?", - "WE BEST STAY WAY CLEAR OF THEM!", - "I DON'T THINK WE CAN TACKLE A CREATURE THAT DAG NASTY." + "LÁTTA-E A FARAPÁS MÉRETET", + "AZ A LURKER CÁPA KISZÁMULT A HALÁSZ CSÓNAJÁBÓL?", + "MI A LEGJOBBAN TISZTÁT MARADJUK TŐLÜK!", + "NEM HINNÉM, HOGY MEGKÜZDHETÜNK EGY OLYAN LÉNNYEL, AMELYIK CSÚNYA." ], "sksp0014": [ - "WE SCROUNGED ENOUGH ORBS TO TRADE FOR A POWER CELL.", - "LET'S GET BACK AND MAKE THE SWITCH ALREADY!" + "ELÉG GOMBOT KERÜLTÜNK EL, HOGY EGY TELJESELLÉKRE KERÜLJÜNK.", + "TÉRJÜNK VISSZA, ÉS KÉSZÍTSÜK MÁR A KAPCSOLÁST!" ], "sksp0015": [ - "THIS MUST BE A PRECURSOR ORACLE LIKE THE SAGE ALWAYS GOES ON ABOUT.", - "I HOPE THEY WEREN'T AS UGLY IN PERSON!" + "EZ KELL EGY ELŐADÓ ORÁKULUM, AHOGY A BÖLCS MINDIG TÖRTÉNIK.", + "REMÉLEM SZEMÉLYBEN NEM VOLTAK OLYAN CSÚNYÁK!" ], "sksp0017": [ - "WHOA! CHECK OUT THAT FUNKY SCULPTURE", - "SITTIN' ON THE ROCKS OVER THERE!" + "HÚ! NÉZD MEG AZT A FUNKY SZOBORT", + "ÜLJ A SZIKLÁKRA OTT!" ], "sksp0018": [ - "WE SHOULD GO TELL THAT WINDBAG OF A MAYOR THAT HE OWES US BIG TIME", - "FOR CONNECTING THE VILLAGE ENERGY BEAM!" + "MENNYÜNK KELL MONDJUK EGY POLGÁRMESTER SZÉLTÁKÁJÁNAK, HOGY NAGYON KÖZÖTT NEKÜNK", + "A FALU ENERGIASUGÁRA CSATLAKOZTATÁSÁHOZ!" ], "sksp0019": [ - "HEY, SEAGULLS! LET'S BUZZ 'EM FOR KICKS." + "HÉ, SIRÁLYOK! BUZZZUNK AZOKAT A RÖGZÉSEKÉRT." ], "sksp0020": [ - "YEAH HA HA! LET'S DO THAT AGAIN!" + "IGEN HA HA! CSINÁLJUK EZT ÚJRA!" ], "sksp0021": [ - "THERE'RE THOSE SEAGULLS AGAIN. LET'S GET 'EM!!" + "MEGINT VAN AZOK A SIRÁLYOK. SZEREZZÜK MEG!!" ], "sksp0022": [ - "YEAH HA HA HA HA HA!! WOO HO HO HO!" + "IGEN HA HA HA HA HA!! WOO HO HO HO!" ], "sksp0023": [ - "WOOHOO!" + "JU HÚ!" ], "sksp0024": [ - "YEAH HA HA! YEAH!" + "IGEN HA HA! IGEN!" ], "sksp0025": [ - "WHOA! THEY CAUSED AN AVALANCHE! LET'S CHECK IT OUT." + "HÚ! LAVINNÁT OKOZTAK! NÉZZÜK MEG." ], "sksp0026": [ - "HEY! THAT PELICAN JUST SNAGGED A POWER CELL!", - "LET'S GO KICK SOME BIG BIRD BUTT!" + "HÉ! AZ A PELIKÁN CSAK ELFOGADOTT EGY TELJESÍTMÉNYCELT!", + "MENJÜNK RÚGNI EGY NAGY MADÁR FEKKÉT!" ], "sksp0027": [ - "QUICK! WE HAVE TO GET TO THE POWER CELL BEFORE THE PELICAN SCOOPS IT UP AGAIN." + "GYORS! AZ ERŐCELLÁHOZ KELL ELÉRNÜNK, MIELŐTT A PELICAN ÚJRA KAPCSOLJA." ], "sksp0028": [ - "KICK THE EGG! HEE-HEE! KICK IT! KICK IT!" + "RÚGJ A TOJÁSBA! HEE-HEE! RÚGJ MEG! RÚGJ MEG!" ], "sksp0029": [ - "EH, WE MIGHT WANNA TALK TO THE BIRDWATCHER", - "AND SEE IF WE SCRAMBLED THAT FLUT-FLUT EGG." + "EH, BESZÉLHETNÜNK A MADÁRVIZSGÁLÓVAL", + "ÉS NÉZD MEG, HOGY MEGHAJTJUK AZT A FLUT-FLUT TOJÁST." ], "sksp0030": [ - "HEY, TRY PUNCHING THE ROCKS TO GET 'EM OUT OF THE WAY!" + "HÉ, PRÓBÁLJON MEG A SZIKLÁKAT LÁTOGATNI, HOGY TÚLJON AZOKAT AZ ÚTBÓL!" ], "sksp0031": [ - "OOH! LET'S USE THE CANNON TO BLOW THINGS UP!" + "OOH! HASZNÁLJUK AZ ÁGYÚT A DOLGOK FELFÚJTÁSÁRA!" ], "sksp0034": [ - "AWOOGA! AWOOGA! DIVE FOR THOSE ORBS, JAK, DIVE!" + "AWOOGA! AWOOGA! MERÜLJ AZOKRA ORBOKÉRT, JAK, MERÜLÉS!" ], "sksp0035": [ - "YEAH, SO WE GOT A PRECURSOR LAUNCHER HERE", - "BUT YOU AREN'T POWERED UP WITH THE BLUE STUFF. SO IT AIN'T GONNA HELP US!" + "IGEN, EZÉRT VAN ITT EGY PRECUROR INDÍTÓ", + "DE NEM VAGY FELELŐSÍTETT A KÉK CUKKAL. ÍGY NEM SEGÍT NEKI!" ], "sksp0037": [ - "THOSE TOWER DOOHICKEYS SCATTERED ALL OVER THE JUNGLE MUST REDIRECT THE ECO BEAM.", - "LET'S GO FIDDLE WITH THEM!" + "AZOKNAK, AZOKNAK A DZSUNGLEBEN SZERTE SZÓRVA TORONY DOOHICKEYEK ÚJRA KELL IRÁNYÍTANI AZ ÖKOSUGÁRAT.", + "HAJTJUK MEG VELÜK!" ], "sksp0038": [ - "HMM, IF BLUE ECO CAN BUILD A BRIDGE, THEN I BET IT'LL OPEN A DOOR!", - "LET'S GO BACK AND GET YOU JUICED UP AGAIN." + "HMM, HA A KÉK ECO HÍDAT TUD ÉPÍTENI, AKKOR FOGADOM, AJTÓT NYIT!", + "MÉRJÜNK VISSZA, ÉS ÚJRA SZÍVÜNK." ], "sksp0039": [ - "HEY, THERE'S LITTLE LIGHTNING MARKS ON THOSE POSTS", - "AND THERE'S LIGHTNING COMING OUT OF THAT VENT OVER THERE.", - "ARE YOU THINKING WHAT I'M THINKING?" + "HÉ, KIS VILLÁLMÁNYOK VAN AZOKON A POSZTOKON", + "ÉS VILLÁLMÁNY KI JÖVŐ AZ OTTAN A SZELLŐZŐNYÍLÁSBÓL.", + "ARRA GONDOLOD, HOGY ÉN?" ], "sksp0040": [ - "LET'S GET UP ON THAT MACHINE AND BREAK THE MIRROR DIVERTING THE PRECURSOR BEAM!" + "FELÁLLJUK AZRA A GÉPRE, ÉS TÖRJÜK BE A TÜKRÖT, KI TERELJÜK AZ ELŐFOGATOT!" ], "sksp0041": [ - "WE NEED TO GET TO THE TOP OF THAT TOWER!" + "AZNAK A TORONYNEK TETEJÉRE KELL FELÁLLNI!" ], "sksp0043": [ - "MAYBE WE SHOULD GO ROOT OUT THE FISHERMAN.", - "I HEARD HE WAS IN THE JUNGLE FISHING BY THE LOWER RIVER!" + "TALÁN KI KÉNE GYÖKÉRTETTÜNK A HORGÁSZT.", + "HALLOTTAM, HOGY A DZSUNGELBEN HORGÁSZAT AZ ALSÓ FOLYÓNÉL!" ], "sksp0049": [ - "LINE UP THE BEAM BY POINTING IT AT THE NEXT TOWER!" + "A KÖVETKEZŐ TORONYRA IRÁNYÍTSA SORBA A GERENDÁT!" ], "sksp0050": [ - "BREAK THE MIRROR, JAK!" + "TÖRJÖK BE A TÜKRÖT, JAK!" ], "sksp0051": [ - "GET THE BUGS, JAK! GET THE BUGS!" + "SZEREZD MEG A HIBÁT, JAK! SZEREZD MEG A HIBÁKAT!" ], "sksp0052": [ - "LET'S GO TO THE NEXT TOWER AND RECONNECT THE BEAM THERE!" + "MENJÜNK A KÖVETKEZŐ TORONYBA, ÉS OTT KAPCSOLJUK ÚJRA A GERENDÁT!" ], "sksp0053": [ - "HEY! WE CAN FOLLOW THE BEAM TO FIND THE NEXT TOWER." + "HÉ! KÖVETHETJÜK A GERENDÁT, HOGY MEGTALÁLJUK A KÖVETKEZŐ TORNYOT." ], "sksp0054": [ - "WE NEED TO CHARGE YOU UP WITH THAT BLUE STUFF TO GET THIS OPEN!" + "FEL KELL FELTÖLTENI ÖNEK AZZAL A KÉK SZÁMÁRA, HOGY MEGNYITHATJA EZT!" ], "sksp0056": [ - "HEY! I SEE THE SCULPTOR'S MUSE!" + "HÉ! LÁTOM A SZOBRÁSZ MÚZSÁT!" ], "sksp0059": [ - "THIS PLACE GIVES ME THE WILLIES!", - "LET'S KEEP YOU OUT OF THE OOZE, OKAY?" + "EZ A HELY MEGADJA AZ AKARATOT!", + "KI KERÜLJÜNK A SZÁRADÁSBÓL, OK?" ], "sksp0060": [ - "(WHIMPERS) THIS PLACE GIVES ME THE CREEPS!", - "AND TRUST ME, IT'S A WHOLE NEW EXPERIENCE", - "WHEN YOU'RE COVERED IN FUZZ!" + "(NÖNYÖR) EZEN A HELYEN MEGSZAKÍTOK!", + "ÉS HIGYJE MEG, EZ EGY ÚJ ÉLMÉNY", + "AMIKOR A FUZZBAN BÁROL!" ], "sksp0062": [ - "LET'S PLOW INTO THOSE BALLOON LURKERS AND SHRED 'EM!" + "SZÁNTJUK BE AZOKBA AZOKOKBA A LÉFÖLŐKET, ÉS APRÓLJUK BE!" ], "sksp0063": [ - "I SAID \"SHRED THE LURKERS,\" JAK. NOT THE MINES!", - "RULE NUMBER ONE: ALWAYS AVOID THE MINES!" + "AZT MONDTAM, \"SZORÍTSA FEL A LURKEREKET\", JAK. NEM A BÁNYÁK!", + "ELSŐ SZÁMÚ SZABÁLY: MINDIG KERÜLJÜK AZ AKÁNYÁKAT!" ], "sksp0064": [ - "WATCH YOUR BACK! YOU REMEMBER WHAT HAPPENED THE LAST TIME WE WERE HERE." + "VIGYÁZZ MAGADRA! EMLÉKEZSZ, MI TÖRTÉNT AZ UTOLSÓ AKKOR, HOGY ITT VOLTUNK." ], "sksp0067": [ - "DON'T FALL INTO THE MIST BELOW US!", - "'CAUSE I DON'T THINK WE'LL MAKE IT BACK." + "NE ESESSEN ALÁTUNK A KÖDBE!", + "MERT NEM HINNÉM, HOGY VISSZA KERÜLJÜK." ], "sksp0069": [ - "IT'S AN AMBUSH, JAK! IT'S AN AMBUSH!" + "EZ EGY LES, JAK! EZ CSERE!" ], "sksp0070": [ - "JUMP, THEN DIVE ONTO THE TEETER-TOTTER." + "UGRÁS, MAJD MERÜLÉS A TEETER-TOTTERRE." ], "sksp0071": [ - "GET THE RED ECO!" + "SZEREZD MEG A VÖRÖS ÖKO-T!" ], "sksp0072": [ - "RED ECO MAKES YOUR ATTACKS STRONGER." + "A RED ECO ERŐSÍTETI A TÁMADÁSAIT." ], "sksp0073": [ - "WE NEED BLUE ECO TO CHARGE THIS PLATFORM UP!" + "BLUE ECO-RA VAN SZÜKSÉGÜNK A PLATFORM FELTÖLTÉSÉHEZ!" ], "sksp0076": [ - "JAK! HIT SOME JUMPS TO KEEP US OFF THE HOT GROUND." + "JAK! ÜTJ MEG NÉHÁNY UGRÁST, HOGY TOVÁBB TARTSON MINKET A FORRÓ FÖLDTŐL." ], "sksp0077": [ - "BALLOONS GOOD, BURNING HOT MAGMA BAD!" + "LÉGGöMBöK JÓ, ÉGŐ FORRÓ MAGMA ROSSZ!" ], "sksp0078": [ - "RIDE ON THE RAISED PRECURSOR STUFF TO KEEP US COOL." + "AZ ELEMELTETT ELŐADÁSOKRA UTAZJON, HOGY HŰVÜNK TARTSON." ], "sksp0079": [ - "AHH! I'M GONNA DIE! I'M A COMING, GRANDPAP!", - "YOU HAVE TO GET THIS THING TO THE OTHER SIDE BEFORE IT OVERHEATS!" + "AHH! MEG FOGOK HALNI! JÖVÖK, NAGYAPÁM!", + "EZT A DOLOGAT A MÁSIK OLDALRA KELL ÁTVINTENED, MIELŐTT TÚLÉPÜL!" ], "sksp0080": [ - "USE THE HOP-TURN TO STEER HARDER!" + "HASZNÁLJA A HOP-FORDULAT HASZNÁLATÁBÓL ERŐSEBB KORMÁNYZÁSHOZ!" ], "sksp0081": [ - "AHH! MAYBE I SHOULD DRIVE!" + "AHH! TALÁN VEZETNEM KELL!" ], "sksp0082": [ - "YOU ARE TRYING TO AVOID THOSE DARK ECO BOXES, RIGHT?" + "MEGPRÓBÁLJA ELKERÜLNI AZOKAT A SÖTÉT ÖKO DOBOZOKAT, IGAZ?" ], "sksp0083": [ - "OOH! SEE IF WE CAN CATCH AIR OFF THOSE LURKERS!" + "OOH! NÉZD MEG, HOGY ELKAPJUK AZOKAT AZOKAT A LURKOLÓKAT!" ], "sksp0084": [ - "TOO CLOSE, TOO CLOSE!" + "TÚL KÖZEL, TÚL KÖZEL!" ], "sksp0085": [ - "WHOA! THIS BABY'S GETTING WAY TOO HOT!" + "HÚ! TÚL MELEG A BABA!" ], "sksp0086": [ - "A FEW MORE SECONDS AND WE'RE FRIED FLUT-FLUT!" + "MÉG NÉHÁNY MÁSODPERC, ÉS MEGSZÜLTÜNK FLUT-FLUT!" ], "sksp0087": [ - "HIT THOSE BALLOONS TO COOL OFF!" + "ÜSD EL AZOKAT A LÉGGöMBöKET, HOGY LEHŰLJöN!" ], "sksp0088": [ - "HERE COMES ANOTHER BALLOON!" + "ITT JÖN ÚJABB LÉFI!" ], "sksp0089": [ - "I WISH I SLEPT IN THIS MORNING!" + "BÁRCSAK ALUDNÉK MA REGGEL!" ], "sksp0090": [ - "YOU MISSED A BALLOON! WE NEED THOSE OR WE'RE COOKED!" + "HIÁNYZOTT EGY LÉGGöMBöT! SZÜKSÉGÜNK VAN AZOKRA VAGY FŐZÜNK!" ], "sksp0091": [ - "THIS PUPPY'S GETTING TOO HOT!" + "EZ A KUTAT TÚL MELEG LESZ!" ], "sksp0092": [ - "DO YOU SMELL SOMETHING BURNING?!" + "ÉGET VALAMI SZAGOT?!" ], "sksp0093": [ - "I THINK MY TAIL'S ON FIRE!" + "SZERINTEM ÉG A FARKOM!" ], "sksp0094": [ - "SHE'S GONNA BLOW!" + "FÚJNI FOG!" ], "sksp0095": [ - "WAHOO! WE MADE IT!" + "WAHOOO! MEGCSINÁLTUK!" ], "sksp0096": [ - "THERE'S SCOUT FLIES OUT HERE, TOO!" + "ITT IS VAN CSERÉRREGYEK!" ], "sksp009a": [ - "HA HA! WE SHOWED HIM A THING OR TWO." + "HA HA! MUTATTUNK NEKI EGY VAGY KÉT." ], "sksp009b": [ - "ALL RIGHT, MORE ORBS!" + "RENDBEN, TÖBB ORBS!" ], "sksp009c": [ - "DO ME A FAVOR AND KEEP AWAY FROM THOSE DARK ECO BOXES!" + "TÉGY SZÖVESSÉGET NEKEM, ÉS TARTSA TÁVOL A SÖTÉT ÖKO DOBOZOKTÓL!" ], "sksp009d": [ "YEAH-HA-HA-HA!" @@ -2311,558 +2311,558 @@ "WA-HOO!" ], "sksp009f": [ - "GET SOME, GET SOME! HA HA HA!" + "VÉGY KI, VÉGY KI! HA HA HA!" ], "sksp009g": [ - "RIGHT BEHIND YA, JAK!" + "MÖGÖTT, JAK!" ], "sksp009i": [ - "DID WE FIND ALL THE SCOUT FLIES IN THIS AREA?" + "MEGTALÁLTUK AZ ÖSSZES CSERKÉSZLEGYET EZEN A TERÜLETEN?" ], "sksp009j": [ - "HEY! IT LOOKS LIKE SCOUT FLIES ARE ALWAYS IN RED BOXES." + "HÉ! ÚGY KÜLÖN, HOGY A CSERKÉSZLEGYEK MINDIG PIROS DOBOZBAN VANAK." ], "sksp009k": [ - "ALRIGHT! YOU FOUND ALL THE SCOUT FLIES IN THIS AREA!" + "RENDBEN! AZ ÖSSZES CSERKÉSZLEGYET MEGTALÁLT EZEN A TERÜLETEN!" ], "sksp0109": [ - "WOO! WE BEAT THE RECORD TIME!" + "UDVAROL! MEGTÖLTÜNK A REKORDIDŐT!" ], "sksp0110": [ - "I'VE SAID IT BEFORE, I'LL SAY IT AGAIN...", - "AVOID THE DARK ECO BOXES!" + "MÉG MONDTAM, ÚJRA MONDOM...", + "KERÜLJÜK A SÖTÉT ÖKO DOBOZOKAT!" ], "sksp0111": [ - "LET'S CHASE THOSE MOLES BACK UNDERGROUND." + "KERÜLJÜK VISSZA AZOKAT A VAKONOKAT A FÖLD ALATT." ], "sksp0112": [ - "LET'S GO GET OUR POWER CELL FROM THE GEOLOGIST." + "MENJÜNK EL AZ ERŐCELLÁNKAT A GEOLÓGUSTÓL." ], "sksp0113": [ - "THOSE MUST BE THE INFESTED PLANTS OL' LOG-NOGGIN WAS TALKIN' ABOUT." + "AZOKBAN AZOKBAN AZOK A FERTŐZETT NÖVÉNYEK, AMELYEKRŐL LOG-NOGGIN BESZÉLT." ], "sksp0114": [ - "WE HAVE TO USE GREEN ECO TO CURE THOSE PLANTS." + "A GREEN ECO-T KELL ALKALMAZNI A NÖVÉNYEK KÍVÁSÁHOZ." ], "sksp0115": [ - "JAK, DRIVE THROUGH THE GREEN ECO VENT." + "JAK, VEDD ÁT A ZÖLD ÖKOSZELLŐZŐEN." ], "sksp0116": [ - "THAT'S ONE OF THOSE FLYING LURKERS!", - "HE MIGHT HAVE A POWER CELL!" + "EZ AZ EGYIK A REPÜLŐ LURKÓK KÖZÜL!", + "LEHET NEKI ERŐSEJTE!" ], "sksp0117": [ - "THERE'S THE MOLE HOLE!" + "OTT A VAGYONLYUK!" ], "sksp0118": [ - "NOW, LET'S FLY OVER THE INFECTED PLANTS!" + "MOST REPÜLJÜNK A FERTŐZETT NÖVÉNYEK FELÉ!" ], "sksp0119": [ - "ONE RING DOWN, A BUNCH TO GO!" + "EGY CSENGÉS LE, EGY CSOPORT MÉG!" ], "sksp0120": [ - "HURRY! THERE'S THE NEXT RING!" + "SIET! MEGVAN A KÖVETKEZŐ GYENGE!" ], "sksp0121": [ - "QUICK! YOU'VE GOTTA FLY THROUGH EACH RING BEFORE THEY TURN OFF!" + "GYORS! MINDEN GYŰRŰN ÁT KELL REPÜLNI, MIELŐTT KIKAPCSOLNAK!" ], "sksp0122": [ - "HEY! THAT GRASS SLOWS US DOWN..." + "HÉ! AZ A FŰ LASSÍT MINKET..." ], "sksp0123": [ - "QUICK! FOLLOW THAT PIPE!" + "GYORS! KÖVESSE AZT A CSÖVET!" ], "sksp0124": [ - "I GOT A BAD FEELING ABOUT THIS." + "ROSSZ ÉRZEM VÁLT ERŐL." ], "sksp0125": [ - "IT LOOKS LIKE THOSE THINGS NEED A BLUE ECO CHARGE." + "ÚGY KÜLÖN AZOKHOZ, HOGY AZOKHOZ KÉK ECO TÖLTÉS KELL." ], "sksp0126": [ - "LET'S GET THE POWER CELL ON THE ROOF OF THIS THING!" + "VEGYÜK EZNEK A DOLOG TETŐJÉRE AZ ERŐCELLÁT!" ], "sksp0127": [ - "KICK THE LITTLE GUY ON THE TOP!" + "RÚGJÁTOK BE A KISSÁFOT A TETEJÉRE!" ], "sksp0128": [ - "JAK! RUN! THE DARK ECO IS RISING!" + "JAK! FUSS! A SÖTÉT ÖKO FELMÉRŐDIK!" ], "sksp0129": [ - "AHH! THAT DARK ECO'S GETTING CLOSE" + "AHH! AZ A SÖTÉT ÖKO KEZELÉS" ], "sksp0130": [ - "UH, I THINK WE HAVE TO SWITCH ON ALL THOSE PLATFORMS OR SOMETHIN'." + "UH, SZERINTEM VÁLTAN KELL AZ ÖSSZES PLATFORMOT VAGY VALAMIT." ], "sksp0131": [ - "HEY! IT LOOKS LIKE YOU COULD JUMP-DIVE ONTO THOSE GUYS!" + "HÉ! ÚGY ÚGY ÚGY ÚGY, HOGY AZOKRA SZÁMOKRA LEHET UGRÁS!" ], "sksp0132": [ - "EE-EE! WHOA! WHO-AH! WHO-AHH!" + "EE-EE! HÚ! KI-AH! KI-AHH!" ], "sksp0133": [ - "I'LL BET WE CAN GET ALL OF THOSE THINGS CHARGED AT ONCE!" + "FOGADOK, HOGY EZEKET AZ ÖSSZES DOLGOT EGYSZERRE FELTÖLTÜNK!" ], "sksp0134": [ - "HOW 'BOUT WE TAKE IT EASY ON THOSE HOT PIPES?!" + "HOGY HOGY KÖNNYEN VESZÜK AZOKAN A FORRÓ CSÖVEKEN?!" ], "sksp0135": [ - "THAT WATER LOOKS DANGEROUS WHEN IT CHANGES COLOR!" + "AZ A VÍZ VESZÉLYESEN NÉZ, AMIKOR SZÍNE VÁLTOZTAT!" ], "sksp0136": [ - "YOU GOTTA GET OUT OF THE WATER BEFORE IT CHANGES COLOR!" + "KI KELL KIÁLLNI A VÍZBŐL, MIELŐTT SZÍNE VÁLTOZNA!" ], "sksp0137": [ - "I BET WE COULD SHOOT THOSE BOULDERS IF WE'RE CHARGED UP WITH YELLOW ECO." + "FOGADOK, HOGY AZOKAT AZOKAT A SZÖVÉKEKET LETÖLHETÜK, HA FELTÖLTÜNK SÁRGA ECO-VAL." ], "sksp0138": [ - "WE SHOULD SHOOT THOSE BIG BOULDERS HOLDING THE TETHER." + "LÖVÜNK AZOKAT A NAGY KÖVEKET, AMELYEK A KÖNYVT TARTOZIK." ], "sksp0139": [ - "MAYBE WE SHOULD HELP THAT WEIRDO FIND HIS PET." + "TALÁN SEGÍTENÜNK KELL AZNAK A SZÜLÉNEK MEGTALÁLNI KEDVEZETÉT." ], "sksp0140": [ - "THE FLUT-FLUT CAN GLIDE FARTHER IF SHE JUMPS AGAIN IN THE AIR!" + "A FLUT-FLUT TOVÁBB TOVÁBB SULHAT, HA ÚJRA UGRÁS A LEVEGŐBEN!" ], "sksp0141": [ - "DON'T TOUCH THAT BLACK HOT TAR, OR YOU'LL GET HURT!" + "NE ÉRINTSE MEG AZHOZ A FEKETE FORRÓ KÁTÁRHOZ, EGYÉB SÉRÜL!" ], "sksp0142": [ - "THE WATER'S SAFE TO WAIT IN." + "A VÍZBEN BIZTONSÁGOS VÁRHATÓ." ], "sksp0143": [ - "WAAH! BREAK THE TONGUE'S GRIP!" + "WAAH! TÖRJÖK MEG A NYELV KOROLÁSÁT!" ], "sksp0144": [ - "SHOOT THOSE RAT NESTS TO STOP THE RATS FROM COMING OUT." + "LŐJD MEG AZOKAT A PATKÁNYFÉSZKEKET, HOGY MEGÁLLÍTSA A PATKÁNYOK KIJÖRÉSÉT." ], "sksp0145": [ - "WOW! YOU CAN SHOOT FIREBALLS", - "WHEN YOU'RE POWERED UP WITH YELLOW ECO." + "AZTA! LEHET TŰZGODÁKAT LŐNI", + "AMIKOR A SÁRGA ECO-VAL FELÜLT." ], "sksp0146": [ - "HEY! THAT'S YELLOW ECO!" + "HÉ! EZ SÁRGA ÖKO!" ], "sksp0147": [ - "YOU CAN SWING ON THAT POLE OVER THERE!" + "OTT ARRA AZ OTT RÚSZON LENYGÍTHETSZ!" ], "sksp0148": [ - "WATCH OUT, THAT BRAMBLE IS PRICKLY!" + "FIGYELMEZTETÉS, AZ A SZÜRETES!" ], "sksp0149": [ - "HEY, THAT LOOKS LIKE A TETHER HOLDING THE DIRIGIBLE IN PLACE!" + "HÉ, EZ ÚGY NÉZ KI, MINT EGY KöTÉL, AMELY HELYEN TARTJA A IRÁNYÍTÓT!" ], "sksp0150": [ - "WATCH OUT WHEN THAT FROG IS CHARGED UP!" + "VIGYÁZZ, AMIKOR AZ A BÉKA FELTÖLTVE!" ], "sksp0151": [ - "RUN AWAY, JAK!" + "MENEKÜLJ, JAK!" ], "sksp0152": [ - "LOOK OUT, JAK! IT'S AN AMBUSH!" + "VIGYÁZZ, JAK! EZ CSERE!" ], "sksp0153": [ - "HEY, THAT MUST BE THE PRECURSOR ARTIFACT THE LURKERS ARE AFTER!", - "IT LOOKS LIKE A GIANT ROBOT ARM!" + "HÉ, EZ BIZTOSAN AZ ELŐZŐ MŰTERMÉK, AMIT A LURKERS UTÁN KERES!", + "ÓRIÁSI ROBOTKARNAK NÉZ!" ], "sksp0154": [ - "THAT BLACK TAR LOOKS HOT AND DANGEROUS!" + "AZ A FEKETE KÁTÁR FORRÓNAK ÉS VESZÉLYESNEK NÉZ!" ], "sksp0155": [ - "SHOOT THE BATS WITH THAT YELLOW ECO STUFF!" + "LŐJD MEG A DENEVEREKET AZZAL A SÁRGA ÖKOCSUMOKBAN!" ], "sksp0156": [ - "MAYBE WE CAN DUCK THE BATS!" + "TALÁN LEHAJTJUK A DENEVEREKET!" ], "sksp0157": [ - "DID YOU SEE THAT? ONLY THREE MORE TETHERS TO GO!" + "LÁTTAD AZT? MÉG CSAK HÁROM KÖTELEZŐ VÉGRE!" ], "sksp0158": [ - "WOW! ONLY TWO MORE TETHERS." + "AZTA! MÉG CSAK KÉT KÖTELEZŐ." ], "sksp0159": [ - "THAT DIRIGIBLE'S BARELY HANGIN' ON! LET'S FIND THE LAST TETHER!" + "AZ A IRÁNYÍTHATÓ CSAK CSAK ALKALMAZ! TALÁLJUK AZ UTOLSÓ KÖZVETÍTŐT!" ], "sksp0160": [ - "HEY! THERE'S THE FLUT-FLUT!" + "HÉ! OTT A FLUT-FLUT!" ], "sksp0161": [ - "I HATE RATS! AND I'M ALMOST ONE OF THEM." + "UTÁLOM A PATKÁNYOKAT! ÉS SZINTE KÖZÜLÜK VAGYOK." ], "sksp018a": [ - "THAT LAZY FARMER OWES US A POWER CELL!", - "LET'S GO TALK TO HIM!" + "AZ A LUSTA GASZT EGY ERŐSELTÁVAL TARTOZIK NEKÜNK!", + "BESZÉLJÜNK VELE!" ], "sksp0300": [ - "WE HAVE TO BEAT THOSE LURKERS TO THE END OF THE PASS!" + "AZOKAT A LURKOLÓKAT A HÁTRA VÉGÉIG KELL GYŐZNÜNK!" ], "sksp0301": [ - "DON'T HIT THOSE EXPLOSIVES!" + "NE ÜTSE AZOKAT AZOKAT ROBBANÓSZEREKET!" ], "sksp0302": [ - "STAY AHEAD OF THEM AND WE GOT IT MADE!" + "MARADJ ELŐZÜK ÉS MEGKÉSZÜLTÜNK!" ], "sksp0303": [ - "HIT THE BLUE ECO TO GET SPEED BOOSTS!" + "NYOMJON MEG A KÉK ECO-T, HOGY NÖVELJÜK SEBESSÉGET!" ], "sksp0304": [ - "AVOID THE TREES, JAK! THEY SLOW US DOWN!" + "KERÜLJÜK A FÁKAT, JAK! LELASSZAK MINKET!" ], "sksp0305": [ - "THE MORE BLUE ECO WE HIT, THE FASTER WE GO!" + "MINÉL TÖBB KÉK ÖKO-T TALÁLJUK, ANÉL GYORSABBAN MEGYÜNK!" ], "sksp0306": [ - "WATCH OUT FOR THOSE EXPLOSIVES!" + "VIGYÁZAT A ROBBANÓANYAGOKRA!" ], "sksp0307": [ - "STAY CLEAR OF THE PITS!" + "MARADJ TISZTÁL A GÖDÖRŰL!" ], "sksp0308": [ - "MAYBE I SHOULD DRIVE!" + "TALÁN VEZETNEM KELL!" ], "sksp0309": [ - "THERE'S ONE OF THE LURKERS!" + "VAN AZ EGY LUKER!" ], "sksp0310": [ - "CATCH 'EM, JAK!" + "HOGYAN KAPJA EL ŐKET!" ], "sksp0311": [ - "WE PASSED ONE!" + "ELUTULTUNK EGYEN!" ], "sksp0312": [ - "WAH, ONE OF THE LURKERS PASSED US!" + "WAH, AZ EGYIK LURKER ELMÚLT BENNÜNK!" ], "sksp0313": [ - "THEY'RE WAY AHEAD!" + "SOK ELŐRE JÁRNAK!" ], "sksp0314": [ - "YEAH, WE'RE IN THE LEAD!" + "IGEN, MI VAGYUNK AZ ÉLEN!" ], "sksp0315": [ - "FASTER, JAK, FASTER!" + "GYORSABB, LIKE, GYORSABB!" ], "sksp0316": [ - "BIG JUMP, BIG JUMP!" + "NAGY UGRÁS, NAGY UGRÁS!" ], "sksp0317": [ - "HANG ON!" + "VÁRJ CSAK!" ], "sksp0318": [ - "YAAHH!" + "IGEN!" ], "sksp0319": [ - "IT'S GONNA BE CLOSE!" + "KÖZEL LESZ!" ], "sksp0320": [ - "THEY'RE GONNA BEAT US TO THE DETONATOR!" + "A DETONÁTORRA FOGNAK VERNI MINKET!" ], "sksp0321": [ - "WE DID IT! WE STOPPED THEM FROM BLOWIN' UP THE PASS!" + "MEGCSINÁLTUK! MEGÁLLÍTOTTUK AZOKAT, HOGY FELFÚJJÁK A HÁTRA!" ], "sksp0327": [ - "I THINK THAT WAS THE LAST DARK ECO CRYSTAL!" + "SZERINTEM EZ VOLT AZ UTOLSÓ SÖTÉT ÖKOKRISTÁLY!" ], "sksp0328": [ - "MAYBE YOU CAN SHOOT BETTER IF YOU AIM THROUGH YOUR GOGGLES." + "TALÁN JOBBAN LEHET LŐNI, HA A SZEMVEZŐEN KERESZTÜL CÉL." ], "sksp0329": [ - "OH, NO! MORE DARK ECO!" + "ÓH NE! TÖBB SÖTÉT ÖKO!" ], "sksp0330": [ - "I DON'T THINK WE GOT ALL OF THOSE DARK ECO CRYSTALS." + "NEM HINNÉM, HOGY MINDEN SÖTÉT ÖKOKRISTÁLYOKAT MEGVAN." ], "sksp0331": [ - "SHOOT THE LURKERS EATING THE POLES!" + "LŐJD MEG A LENSZEKET ESZTŐ LURKÓKAT!" ], "sksp0332": [ - "DON'T LET THE LIGHTS GO OUT!" + "NE HAGYJA KI A FÉNYT!" ], "sksp0333": [ - "HIT A CRYSTAL TO GET SOME LIGHT." + "ÜTJ MEG EGY KRISTÁLYT, HOGY FÉNY SZEREZZ." ], "sksp0334": [ - "RUN AWAY! THAT CRYSTAL'S GONNA BLOW!" + "ELFUTNI! AZ A KRISTÁLY FÚVON FOG!" ], "sksp0335": [ - "EWH, THEY FOUND A PRECURSOR ROBOT!" + "EWH, TALÁLTAK EGY ELŐZŐROBOTOT!" ], "sksp0336": [ - "POP THE EGGS, BEFORE THEY HATCH!" + "DÖGÍTSÜK KI A TOJÁSOKAT, MIELŐTT KELTEK!" ], "sksp0337": [ - "IT'S SPOOKY IN HERE..." + "KÍSÉRTETTSÉG VAN ITT..." ], "sksp0338": [ - "LOOKS LIKE SPIDER WEBS BREAK AFTER TWO BOUNCES." + "ÚGY KÉT VISSZAPATLANÁS UTÁN A PÓKSZÁLÓK KISZAKADÁSA." ], "sksp0339": [ - "I. HATE. SPIDERS..." + "UTÁLOM. PÓKOK..." ], "sksp0340": [ - "BABY SPIDERS ARE COMING!" + "JÖNEK A BEBAPÓK!" ], "sksp0341": [ - "I THINK WE'RE IN A SPIDER'S NEST HERE!" + "SZERINTEM ITT EGY PÓKFÉSZEKBEN VAGYUNK!" ], "sksp0342": [ - "LOOK OUT, MORE SPIDERS!" + "VIGYÁZAT, TÖBB PÓK!" ], "sksp0343": [ - "LET'S GET OUTTA HERE!" + "MENJÜNK KI INNEN!" ], "sksp0345": [ - "HOW DO WE GET INSIDE THIS FORT?" + "HOGYAN KERÜLJÜNK BE AZ ERŐDBE?" ], "sksp0346": [ - "MAYBE RED ECO CAN DEFEAT THIS GUY!" + "TALÁN RED ECO LEHET LEGYŐZNI EZT A SZÁFOT!" ], "sksp0347": [ - "WE NEED TO DO A ROLL JUMP!" + "EGY ROLL-UGRÁST KELL CSINÁLNI!" ], "sksp0348": [ - "WE NEED TO FIND A WAY TO OPEN THIS VENT!" + "MÓDSZERT KELL TALÁLNI EZT A SZELLŐZŐNYÍLÁSRA!" ], "sksp0349": [ - "THAT LOOKS LIKE AN ECO SWITCH DOWN THERE!" + "EZ OTT EGY ECO KAPCSOLÓNAK NÉZ KI!" ], "sksp0350": [ - "HIT HIM WHEN THE SPIKES ARE IN!" + "ÜSD EL, AMIKOR A TÜSKÉK BE VAN!" ], "sksp0351": [ - "PUSH THE BUTTON!" + "NYOMJA MEG A GOMBOT!" ], "sksp0352": [ - "QUICK! BEFORE THEY DROP BACK DOWN!" + "GYORS! MIELŐTT VISSZA HASZNÁLNAK!" ], "sksp0359": [ - "YOU GOTTA USE RED ECO!" + "A RED ECO-T HASZNÁLNI KELL!" ], "sksp0360": [ - "ALL RIGHT! WE TURNED ON THE CAPPED YELLOW ECO VENTS!" + "RENDBEN! BEKAPCSOLJUK A FEDELES SÁRGA ECO SZELLŐZŐKET!" ], "sksp0362": [ - "LOOK! A FROZEN POWER CELL!" + "NÉZ! EGY MEGFAGYOTT ERŐCELLA!" ], "sksp0363": [ - "ONLY A FLUT-FLUT CAN JUMP THAT FAR!" + "CSAK A FLUT-FLUT TUD ODA MESZRE UGRNI!" ], "sksp0364": [ - "WE GOTTA HURRY, OR WE'RE TOAST!" + "SIETNÜNK KELL, VAGY KOCCINTSUNK!" ], "sksp0365": [ - "PICK A PATH, ANY PATH!" + "VÁLASSZ ÚTVÁNYT, BÁRMILYEN UTAT!" ], "sksp0366": [ - "AVOID, OR SHOOT THE MINES, JAK!" + "KERÜLJÜK, VAGY LÖVJÜK AZ AKÁNYÁKAT, JAK!" ], "sksp0367": [ - "FIND A WAY THROUGH THOSE DARK ECO BARRELS!" + "KERESS UTAT AZOKAN A SÖTÉT ÖKOHODÓKON!" ], "sksp0368": [ - "KEEP HITTING THOSE COOLING BALLOONS!" + "TOVÁBBRA ÜSÍTSD AZOKAT A HŰTŐLÉFÖKET!" ], "sksp0369": [ - "WE'RE GETTING TOO HOT!" + "TÚL MELEGÜNK!" ], "sksp0370": [ - "SHE'S GONNA BLOW!" + "FÚJNI FOG!" ], "sksp0371": [ - "GO FOR THE BLUE ECO, JAK!" + "A KÉK ÖKO, JAK!" ], "sksp0372": [ - "SHOOT YOUR WAY THROUGH!" + "LŐVÉS ÁT!" ], "sksp0373": [ - "WAHOO! WHAT A RIDE!" + "WAHOOO! MILYEN ÚT!" ], "sksp0374": [ - "YES! TURN AND BURN, BABY!" + "IGEN! FORDULJ ÉS ÉGEDJ EL, BÉBI!" ], "sksp0375": [ - "SHOOT THE POWER SPHERES TO OPEN THE DOOR!" + "LÖVED KI AZ ERŐSZÖVÉNYEKET, HOGY NYISSÁ KI AZ AJTÓT!" ], "sksp0376": [ - "SHOOT THE POWER SPHERES BEFORE WE BURN UP!" + "LÖVED KI AZ ERŐSZÖFÉNYEKET, MIELŐTT BEÉGÜNK!" ], "sksp0378": [ - "THE DOOR'S OPEN, LET'S GET GOING!" + "NYITOTT AZ AJTÓ, INDULJUK!" ], "sksp0379": [ - "ZOOMING!" + "NAGYÍTÁS!" ], "sksp0380": [ - "WE MADE IT THROUGH!" + "TÉRÜLTÜNK!" ], "sksp0381": [ - "BREAK THE GENERATOR TO FREE THE SAGE!" + "TÖRJI BE A GENERÁTORT, HOGY SZABADÍTSA KI A BÖLCSÉT!" ], "sksp0382": [ - "JUST HANG ON TO THE EDGE!" + "CSAK AKASZ A SZÉLYÉRE!" ], "sksp0383": [ - "WE GOT COMPANY, JAK. LOOOTS OF LURKERS!" + "TÁRSASÁGUNK, JAK. SZÁRMAZÓK!" ], "sksp0384": [ - "DESTROY THOSE GENERATORS!" + "PUSZTÍTSD EL AZOKAT A GENERÁTOROKAT!" ], "sksp0385": [ - "PUSH THE BUTTON!" + "NYOMJA MEG A GOMBOT!" ], "sksp0386": [ - "THAT ROBOT DOESN'T SCARE ME!" + "AZ A ROBOT NEM RÉSZT MEG!" ], "sksp0387": [ - "LET'S GO CLIMB UP THOSE PLATFORMS!" + "MÁSSZUNK FEL AZOKRA A PLATFORMOKRA!" ], "sksp0388": [ - "DON'T MISS THE NEXT LAUNCHER!" + "NE HAGYJA KI A KÖVETKEZŐ INDÍTÓT!" ], "sksp0389": [ - "WATCH IT!" + "NÉZD!" ], "sksp0390": [ - "WE HAVE TO RESCUE ALL THE SAGES!" + "MINDEN BÖLTET KELL MENTÉSÜNK!" ], "sksp0391": [ - "DO YOU THINK GOL WILL STILL CHANGE ME BACK?" + "SZERINTED MÉG A GOL VISSZA VÁLTOZTAT?" ], "sksp0392": [ - "SO THIS IS GOL AND MAIA'S CITADEL. NICE AND COZY." + "ÍGY EZ GOL ÉS MAIA CITADELLÁJA. SZÉP ÉS KÉPES." ], "sksp0393": [ - "LAND ON THE NEXT LAUNCHER!" + "FÖLD A KÖVETKEZŐ INDÍTÓRA!" ], "sksp0394": [ - "GRAB THE YELLOW ECO!" + "RAJD MEG A SÁRGA ÖKO-T!" ], "sksp0395": [ - "SHOOT THE ROBOT, JAK!" + "LŐJD MEG A ROBOTÁT, JAK!" ], "sksp0396": [ - "SHOOT HIS ARM!" + "LŐJD MEG A KARJÁT!" ], "sksp0397": [ - "SHOOT HIS GUN!" + "LŐVÉS A FÜGYÉRE!" ], "sksp0398": [ - "SHOOT HIS HEAD!" + "LÖVED A FEJÉT!" ], "sksp0399": [ - "WATCH OUT FOR THE BLAST!" + "VIGYÁZZ A ROBBANÁSRA!" ], "sksp0400": [ - "HE'S CHARGING UP!" + "FELTÖLTŐDIK!" ], "sksp0401": [ - "GET THE BLUE ECO!" + "SZEREZD MEG A KÉK ÖKO-T!" ], "sksp0402": [ - "GET THE RED ECO!" + "SZEREZD MEG A VÖRÖS ÖKO-T!" ], "sksp0403": [ - "I HAVE A BAD FEELING ABOUT THIS!" + "ROSSZ ÉRZEM VAN ERŐL!" ], "sksp0404": [ - "USE THE LAUNCHER, QUICK!" + "HASZNÁLJA AZ INDÍTÓT, GYORSAN!" ], "sksp0405": [ - "NOW YOU'VE MADE THE ANIMAL MAD!" + "MOST MEGŐRÜLTETTE AZ ÁLLATOT!" ], "sksp0406": [ - "WE CAN'T TOUCH THESE GUYS!" + "NEM ÉRINTHETÜK MEG EZEKET A SZÁFOKAT!" ], "sksp0407": [ - "USE THE YELLOW ECO!" + "HASZNÁLJON A SÁRGA ÖKO-T!" ], "sksp0408": [ - "SHOOT THOSE GUYS!" + "LŐJD MEG AZOKAT AZOKAT!" ], "sksp0409": [ - "GET THE LIGHT ECO, JAK!" + "SZEREZD MEG A KÖNNYŰ ÖKO-T, JAK!" ], "sksp0410": [ - "HE LOOKS ANGRY!" + "DÜHöSNEK NÉZ KI!" ], "sksp0411": [ - "JUMP TO AVOID THE EXPLOSIONS!" + "UGRÁS, HOGY ELKERÜLJÜK A ROBBANÁSOKAT!" ], "sksp0412": [ - "NOW WE TAKE CARE OF BUSINESS!" + "MOST MI GONDOZZUNK AZ ÜZLETI RENDELKEZÉSRE!" ], "sksp0413": [ - "GOOD SHOOTING, PARTNER!" + "JÓ LÖVÉST, PARTNER!" ], "sksp0414": [ - "THAT HURT HIM!" + "EZ FÁJT NEKI!" ], "sksp0415": [ - "HERE HE COMES!" + "ITT JÖN Ő!" ], "sksp0416": [ - "YEAH! YOU DID IT!" + "IGEN! MEGCSINÁLTAD!" ], "sksp0417": [ - "SAY \"GOOD NIGHT,\" GOL AND MAIA!" + "MONDJ \"JÓ ÉJJÁT\", GOL ÉS MAIA!" ], "sksp0435": [ - "KNOCK OVER THOSE BONES!" + "DÖGÍTSÜK FEL AZOKAT A CSONTOKAT!" ], "sksp0443": [ - "PUNCH THOSE POLES UP FROM BELOW!" + "AZOKAT AZOKAT AZOKAT A RÓDOKAT ALULJÓL TÖRÍTSD FEL!" ], "sksp0444": [ - "WE'RE WAITING. HELLO?" + "VÁRTAK. HELLÓ?" ], "sksp0449": [ - "PRESS START TO PLAY." + "A LEJÁTSZÁSHOZ NYOMJON MEG." ], "sksp0450": [ - "YOU WANNA STOP PLAYING?" + "SZERETNÉD HAGYNI A JÁTÉKOT?" ], "sksp0451": [ - "I DIDN'T THINK SO." + "NEM SZERINTEM." ], "sksp0452": [ - "OKAY, SEE YA LATER." + "OKÉ, VISZTÁL KÉSŐBB." ], "sksp0455": [ - "MAN, WHO ARE ALL THESE PEOPLE?" + "EMBER, KIK EZEK AZ EMBEREK?" ], "sksp0466": [ - "I WAS GOOD. WASN'T I, GIRLS?" + "JÓ VOLTAM. NEM VOLTAM, LÁNYOK?" ], "sksp0b42": [ - "STOP MISSING THE YELLOW FISH, THEY WEIGH FIVE POUNDS EACH!", - "AND THAT'S A LOTTA FISH, JAK." + "NE HIÁNYOZZÁK A SÁRGA HALAKAT, MINDENKINEK ÖT KILT!", + "ÉS EZ SOK HAL, JAK." ] }, "speakers": { "???": "???", - "BILLY": "BILLY", - "BIRDWATCHER": "BIRDWATCHER", - "BLUE SAGE": "BLUE SAGE", + "BILLY": "FÜTYKÖSBOT", + "BIRDWATCHER": "MADÁRVIZSGÁLÓ", + "BLUE SAGE": "KÉK ZSÁLYA", "DAXTER": "DAXTER", - "FARMER": "FARMER", - "FISHERMAN": "FISHERMAN", - "FLUT-FLUT": "FLUT-FLUT", - "GAMBLER": "GAMBLER", - "GEOLOGIST": "GEOLOGIST", + "FARMER": "GAZDA", + "FISHERMAN": "HALÁSZ", + "FLUT-FLUT": "ÁRVÍZ-ÁZÁR", + "GAMBLER": "SZERENCÉS", + "GEOLOGIST": "GEOLÓGUS", "GOL": "GOL", "GORDY": "GORDY", - "JAK": "JAK", - "JAK'S UNCLE": "JAK'S UNCLE", + "JAK": "HOGYAN", + "JAK'S UNCLE": "JAK BÁTYJA", "KEIRA": "KEIRA", "MAIA": "MAIA", - "MAYOR": "MAYOR", - "MINER": "MINER", - "OLD MAN": "OLD MAN", - "ORACLE": "ORACLE", - "RED SAGE": "RED SAGE", + "MAYOR": "POLGÁRMESTER", + "MINER": "BÁNYÁSZ", + "OLD MAN": "IDŐS EMBER", + "ORACLE": "JÓSLAT", + "RED SAGE": "VÖRÖS ZSÁLYA", "SAMOS": "SAMOS", - "SCULPTOR": "SCULPTOR", - "WARRIOR": "WARRIOR", + "SCULPTOR": "SZOBRÁSZ", + "WARRIOR": "HARCOS", "WILLARD": "WILLARD", - "WOMAN": "WOMAN", - "YELLOW SAGE": "YELLOW SAGE" + "WOMAN": "NŐ", + "YELLOW SAGE": "SÁRGA ZSÁLYA" } } diff --git a/game/assets/jak1/subtitle/subtitle_lines_nl-NL.json b/game/assets/jak1/subtitle/subtitle_lines_nl-NL.json index 11c518cbc2..65f7314b38 100644 --- a/game/assets/jak1/subtitle/subtitle_lines_nl-NL.json +++ b/game/assets/jak1/subtitle/subtitle_lines_nl-NL.json @@ -50,7 +50,7 @@ "JE WEG MOETEN VECHTEN DOOR HUN CITADEL!", "UH, JA. DAT VAT HET ONGEVEER SAMEN.", "JE MOET MIJN VADER REDDEN VOORDAT HET TE LAAT IS!", - "EN JAK...", + "NL HOE...", "WEES VOORZICHTIG.", "JA. DAT ZULLEN WE ZIJN!" ], @@ -84,9 +84,9 @@ "GA NU NAAR MISTY EILAND EN IK STUUR DE ZOOMER NAAR JE" ], "assistant-village2-introduction": [ - "WHOA!", + "WAUW!", "IK DENK NIET DAT IK OOIT ZAL WENNEN AAN DAT TINTELENDE GEVOEL VAN EEN TELEPORTER.", - "HEY!", + "HOI!", "HET LIJKT EROP DAT DE BLAUWE WIJZE EEN FEESTJE GEGEVEN HEEFT.", "OH NEE! ROCK VILLAGE STAAT IN BRAND!", "EEN GEWELDIG FEEST.", @@ -155,85 +155,85 @@ "DAAR GAAN WE!", "WEES NU VOORZICHTIG MET DAT LURKERMONSTER BOVENAAN.", "WACHT! UH...", - "I'LL STAY HERE AND PROTECT KEIRA!", - "JAK, I THINK YOU'RE READY TO HANDLE THAT MONSTER WITHOUT ME.", - "OH, REALLY HEROIC OF YOU." + "IK BLIJF HIER EN BESCHERM KEIRA!", + "JAK, IK DENK DAT JE KLAAR BENT OM DAT MONSTER ZONDER MIJ AAN TE PAKKEN.", + "OH, ECHT HEROÏSCH VAN JOU." ], "assistant-village3-reminder": [ "HEY GASTEN, BLIJF ENERGIECELLEN VERZAMELEN!", - "THEY'RE THE KEY TO CONTINUING OUR JOURNEY NORTH." + "ZIJ ZIJN DE SLEUTEL OM ONZE REIS NAAR HET NOORDEN VOOR TE ZETTEN." ], "billy-accept": [ - "GOOD! THOSE RATS WILL BE BACK ANYTIME.", - "SHOOT ALL THEM RATS, AND KEEP 'EM", - "FROM EATING AT LEAST ONE OF THEM SNACKS." + "GOED! DIE RATTEN KOMEN ELK MOMENT TERUG.", + "SCHIET AL DIE RATTEN NEER, EN BEWAAR ZE", + "DOOR TEN MINSTE ÉÉN VAN HEN SNACKS TE ETEN." ], "billy-introduction": [ - "HOWDY, FRIENDS! ENJOYIN' MY BEAUTIFUL SWAMP?", - "I OWN THESE HERE PARTS.", - "EVERYTHING THAT DOESN'T SINK INTO THE MUD, THAT IS! HA HA HA...", - "JUDGING BY THE SMELL, I'D WAGER YOUR", - "BATHTUB SANK IN THE MUD LONG AGO.", - "WHAT'S A BATHTUB?", + "HOE, VRIENDEN! GENIET VAN MIJN PRACHTIGE MOERAS?", + "IK BEZIT DEZE HIER ONDERDELEN.", + "ALLES DAT NIET IN DE MODDER DANKZINKT, DAT IS HET! HA HA HA...", + "AFGAANDE OP DE GEUR, DURF IK TE WEDDEN", + "HET BAD ZONK LANG GELEDEN IN DE MODDER.", + "WAT IS EEN BAD?", "HOE DAN OOK, IK HEB NU EEN GROTER PROBLEEM...", - "SEEMS SOME NASTY LURKER VARMINTS ARE GROUSIN' ABOUTS,", - "SNATCHIN' EVERYTHING THEY CAN GET THEIR GRUBBY LITTLE PAWS ON.", - "AND SCARIN' AWAY MY PET HIPHOG, FARTHY.", - "HE'S BEEN MISSIN' FOR NIGH ON TO A COON'S AGE.", - "I'VE BEEN PUTTIN' OUT HIS FAVORITE SNACK,", - "BUT THOSE ORNERY SWAMP RATS KEEP STEALIN' EM!", - "IF YOU COULD KEEP THOSE PESKY CRITTERS AWAY LONG ENOUGH,", - "I JUST KNOW FARTHY WOULD SMELL THEM VITTLES AND COME BACK!", - "WILL YA HELP ME OUT?" + "HET LIJKT EROP DAT ER EEN PAAR VERVELENDE LURKER-VARMINTS GROUSIN 'OVER ZIJN,", + "ALLES AFPAKKEN WAAR ZE HUN GROEZELIGE KLEINE POOTJES OP KUNNEN KRIJGEN.", + "EN MIJN HUISDIER HIPHOG, FARTHY, VERWIJDEREN.", + "HIJ WORDT AL BIJNA EEN WASBEERLEEFTIJD VERMIST.", + "IK HEB ZIJN FAVORIETE SNACK KLAARGEMAAKT,", + "MAAR DIE ONBESCHADIGDE MOERASRATEN BLIJVEN ZE STELEN!", + "ALS JE DIE VERVELENDE BEESTJES LANG GENOEG OP AFSTAND ZOU KUNNEN HOUDEN,", + "IK WEET DAT FARTHY DE VOEDSELSOORTEN ZOU RUIKEN EN TERUG ZOU KOMEN!", + "WIL JE MIJ HELPEN?" ], "billy-reject": [ - "WELL, IF YOU CHANGE YOUR MIND, YOU KNOW WHERE TO FIND ME!", - "HE HE HE HE HEH..." + "NOU, ALS JE VAN GEDACHTEN VERANDERT, WEET JE WAAR JE MIJ KUNT VINDEN!", + "HIJ HIJ HIJ HEE..." ], "billy-reminder-1": [ - "AHH, Y'ALL BACK TO HELP STOP THEM RATS?" + "AHH, GAAN JULLIE ALLEMAAL TERUG OM DIE RATTEN TE HELPEN STOPPEN?" ], "billy-resolution": [ - "WELL FRY MY HIDE! YOU SURE KNOW HOW TO SHOOT!", - "THANKS A HEAP FOR THE HELP." + "GOED BAK MIJN HUID! JE WEET ZEKER HOE TE SCHIETEN!", + "BEDANKT EEN HOOP VOOR DE HULP." ], "bird-lady-beach-resolution": [ - "OH MY, I HOPE THE POOR DEAR'S OKAY.", - "HERE'S A POWER CELL FOR YOUR VALOR.", + "OH MIJN, IK HOOP DAT HET GOED GAAT MET DE ARME SCHAT.", + "HIER IS EEN KRACHTCEL VOOR JE MOED.", "MAMA!", "MAMA!", - "OH NO! NO, NO, NO, NO!", - "LOOK... ISN'T THAT CUTE? IT THINKS YOU'RE ITS MAMA.", - "EH? I'M NOT YOUR MOM! YOU SEE ANY FEATHERS HERE?", - "OH, LOVE AT FIRST SIGHT! AH...", - "LISTEN, BOYS, I'LL TAKE THIS LITTLE CHICK BACK TO THE VILLAGE WITH ME", + "OH NEE! NEE NEE NEE NEE!", + "KIJK... IS DAT NIET LEUK? HET DENKT DAT JE ZIJN MAMA BENT.", + "EH? IK BEN JE MOEDER NIET! ZIE JE HIER VEREN?", + "O, LIEFDE OP HET EERSTE GEZICHT! AH...", + "LUISTER, JONGENS, IK NEEM DIT KLEINE MEID MEE TERUG NAAR HET DORP", "EN WERK SAMEN MET DE WIJZE OM VOOR HAAR TE ZORGEN." ], "bird-lady-introduction": [ - "OH MY, WHAT A HORRIBLY SICK LITTLE BIRD.", - "HUH! YOU DON'T LOOK SO GOOD YOURSELF, LADY!", - "OH, SORRY. I THOUGHT YOU WERE A SPOTTED", - "ORANGE-BELLIED RAIN FRAY.", - "YOU KNOW, YESTERDAY I SAW SOME", - "TERRIBLY VICIOUS CREATURES CAPTURE", - "A MOTHER FLUT-FLUT NEAR THE BEACH.", - "NOW THERE'S THIS POOR LITTLE ORPHAN EGG", - "SITTING IN A NEST AT THE TOP OF THE CLIFF", - "AND I CAN'T GET TO IT.", - "IF YOU COULD CLIMB UP THERE AND PUSH IT OFF, I'VE PILED", - "SOME HAY DOWN AT THE BASE TO CATCH IT SAFELY.", - "DO AN OLD LADY A FAVOR, AND I'LL GIVE YOU A POWER CELL." + "O MIJN, WAT EEN VERSCHRIKKELIJK ZIEK VOGELTJE.", + "HAU! U ZIET ER ZELF NIET ZO GOED UIT, DAME!", + "OH SORRY. IK DACHT DAT JE EEN GEVLEKT WAS", + "ORANJE-BELLIED REGENFRAY.", + "WEET JE, GISTEREN HEB IK ER EEN PAAR GEZIEN", + "VRESELIJK WREDE WEZENS VANGEN", + "EEN MOEDER FLUT-FLUT DICHTBIJ HET STRAND.", + "NU IS ER DIT ARME KLEINE WEESEI", + "ZITTEN IN EEN NEST BOVEN OP DE KLIF", + "EN IK KAN ER NIET BIJ.", + "ALS JE DAAR OMHOOG ZOU KUNNEN KLIMMEN EN HET ERAF ZOU KUNNEN DUWEN, DAN HEB IK HET OPGESTAPELD", + "WAT HOOI NEER AAN DE BASIS OM HET VEILIG TE VANGEN.", + "DOE EEN OUDE DAME EEN PLEZIER, EN IK GEEF JE EEN KRACHTCEL." ], "bird-lady-reminder-1": [ - "OH, HELLO AGAIN. DID YOU BOYS FIND THAT BLUE EGG ON THE CLIFF?", - "PUSH IT OFF THE EDGE AND I'LL GIVE YOU A POWER CELL!" + "O, HALLO OPNIEUW. HEBBEN JULLIE DAT BLAUWE EI OP DE KLIF GEVONDEN?", + "DUW HET VAN DE RAND EN IK GEEF JE EEN KRACHTCEL!" ], "bird-lady-reminder-2": [ - "ARE YOU BOYS STILL PICKING AROUND HERE? HO HO HO.", - "I'LL BET THAT POOR LITTLE BLUE EGG ON THE CLIFF", - "IS GETTING AWFULLY COLD BY NOW.", - "GO SAVE IT BY PUSHING IT OFF THE EDGE OF THE CLIFF,", - "AND I'LL GIVE YOU A POWER CELL." + "KIEZEN JULLIE HIER NOG STEEDS? HO HO HO.", + "IK WED DAT DAT ARME KLEINE BLAUWE EI OP DE KLIF LIGT", + "HET WORDT INMIDDELS VERSCHRIKKELIJK KOUD.", + "RED HET DOOR HET VAN DE RAND VAN DE KLIP TE DUWEN,", + "EN IK GEEF JE EEN KRACHTCEL." ], "bluesage-resolution": [ "GOED WERK, JONGENS! DE OUDE SAMOS HAD GELIJK OVER JULLIE!", @@ -244,231 +244,231 @@ "DOOR EEN KANAAL VAN ENERGIE OP TE WEKKEN", "TUSSEN MIJ EN HET GROTE PORTAAL BENEDEN!", "UH... JA, DOE DAT MAAR. WE GAAN, UH... HULP ZOEKEN.", - "WEIRDO!" + "RAAR!" ], "death-0181": [ - "DON'T STEP INTO THE LIGHT, JAK! DON'T STEP INTO THE LIGHT!" + "STAP NIET IN HET LICHT, JAK! STAP NIET IN HET LICHT!" ], "death-0182": [ - "HEY, JAK! CAN I...", - "HAVE YOUR INSECT COLLECTION?" + "HÉ, JAK! KAN IK...", + "HEBT U UW INSECTENVERZAMELING?" ], "death-0184": [ - "WHILE YOU'RE DOWN THERE, EHM...", - "COULD YA RUB MY FEET?" + "TERWIJL JE DAAR BENT, EHM...", + "KAN JE MIJN VOETEN WRIJVEN?" ], "death-0186": [ - "DON'T WORRY! I'LL AVENGE YOU!", - "...NOT." + "MAAK JE GEEN ZORGEN! IK ZAL JE WREKEN!", + "...NIET." ], "death-0187": [ - "WELL, UH...", - "BETTER YOU THAN ME." + "NOU, EUH...", + "BETER JIJ DAN IK." ], "death-0191": [ - "THAT LOOKS LIKE IT HURT.", - "SHOULD I CALL FOR BACKUP?" + "HET LIJKT EROP DAT HET PIJN DOET.", + "MOET IK BELLEN VOOR VERVANGING?" ], "death-0193": [ - "STEP ONE: STAY ALIVE!", - "STEP TWO...", - "THINK ABOUT NOT DOING SOMETHING LIKE THAT AGAIN!" + "STAP EEN: BLIJF IN LEVEN!", + "STAP TWEE...", + "DENK ER EENS OVER NA OM ZOIETS NIET MEER TE DOEN!" ], "death-0195": [ - "I WAS RIGHT BEHIND YA, JAK!", - "...REALLY. I WAS." + "IK STOND VLAK ACHTER JE, JAK!", + "...ECHT. IK WAS." ], "death-0197": [ - "HEIMLICH! UH... STRETCHER!", - "YUCK... BREATH MINT?" + "HEIMELIJK! EH... BRANCARD!", + "BAUW... ADEMMUNT?" ], "death-0199": [ - "I'LL SAY SOMETHING REALLY TEARY AT THE FUNERAL, LIKE...", - "...\"HOW AM I GONNA GET CHANGED BACK NOW?!\"" + "IK ZAL OP DE BEGRAFENIS IETS HEEL TRAANIGS ZEGGEN, ZOALS...", + "...\"HOE WORD IK NU TERUG VERANDERD?!\"" ], "death-0202": [ - "SAY GOODNIGHT, JAK!" + "ZEG GOEDE NACHT HOE!" ], "evilbro-misty-end": [ - "THOSE TWO COULD PROVE TO BE TROUBLE.", - "DON'T WORRY DEAR BROTHER, I'LL DISPATCH MY LURKER ARMY TO DEAL WITH THEM.", - "JUST MAKE SURE THEY DON'T GET TOO CLOSE TO OUR NORTHERN OPERATIONS.", - "I DOUBT THEY'LL GET THAT FAR...", - "BUT IF THEY DO, A SURPRISE WILL BE WAITING FOR THEM IN ROCK VILLAGE.", - "SO...YOU'RE GOING TO LET...KLAWW OUT OF HIS CAGE?", - "I THINK IT'S WORTH THE RISK.", - "INDEED..." + "DIE TWEE KUNNEN PROBLEMEN BLIJKEN TE ZIJN.", + "MAAK JE GEEN ZORGEN LIEVE BROER, IK ZAL MIJN LURKER-LEGER STUREN OM ZE AF TE HANDELEN.", + "ZORG ER MAAR VOOR DAT ZE NIET TE DICHT BIJ ONZE NOORDELIJKE ACTIVITEITEN KOMEN.", + "IK BETWIJFEL OF ZE ZO VER ZULLEN KOMEN...", + "MAAR ALS ZE DAT DOEN, WACHT ER EEN VERRASSING IN ROCK VILLAGE.", + "DUS...JIJ GAAT...KLAWW UIT ZIJN KOOI LATEN?", + "IK DENK DAT HET HET RISICO WAARD IS.", + "INDERDAAD..." ], "explorer-introduction": [ - "WELL, HELLO THERE MY DEAR BOY.", - "YOU'VE CAUGHT AT A MOST INOPPORTUNE MOMENT.", - "I WAS TO SET OFF ON MY JOURNEYS YESTERDAY", - "BUT I SEEM TO BE A SPOT SHORT ON THE OLD PRECURSOR ORBS.", - "I WOULD'VE PLEDGED MY WORD THAT I HAD 90 OF THEM,", - "BUT I GATHER THAT YOUR YOUNG FRIEND, YOU KNOW, THE", - "LITTLE ANNOYING MISERABLY UGLY ONE", - "MIGHT HAVE JUST PILFERED THEM AS A SORT OF A SPOT OF FUN.", - "ANYWAY, WOULD YOU BE KIND ENOUGH TO LOAN YOUR DEAR OLD UNCLE", - "90 PRECURSOR ORBS SO HE CAN GET UNDERWAY?", - "I WOULD OFFER YOU A POWER CELL IN RETURN." + "NOU, HALLO DAAR, MIJN LIEVE JONGEN.", + "JE HEBT GEVANGEN OP EEN MEEST ONGESCHIKT MOMENT.", + "IK ZOU GISTEREN OP REIS GAAN", + "MAAR IK BEN ZO GESCHIKT VOOR DE OUDE VOORGANGERS.", + "IK ZOU MIJN WOORD HEBBEN BELOOFD DAT IK ER 90 HAD,", + "MAAR IK BEGRIJP DAT JE JONGE VRIEND, JE WEET WEL, DE", + "WEINIG VERVELEND, ELLENDIG LELIJK", + "MISSCHIEN HEB IK ZE GEWOON GESTOLEN ALS EEN SOORT PLEZIERTJE.", + "HOE DAN OOK, ZOU JE ZO VRIENDELIJK WILLEN ZIJN OM JE LIEVE OUDE OOM TE LENEN?", + "90 VOORLOPIGE ORBS ZODAT HIJ OP START KAN GAAN?", + "IN RUIL DAARVOOR ZOU IK JE EEN KRACHTCEL AANBIEDEN." ], "explorer-reminder-1": [ - "WHAT? YOU DON'T HAVE THE FULL STASH? HARRUMPH!", - "WELL, ANY LESS THAN 90 PRECURSOR ORBS", - "AND I SHAN'T HAVE A CHANCE TO GET UNDERWAY, DEAR BOY." + "WAT? HEBT U NIET DE VOLLEDIGE STASH? HARRUMP!", + "NOU JA, MINDER DAN 90 VOORLOPIGE ORBS", + "EN IK KRIJG GEEN KANS OM OP PAD TE GAAN, LIEVE JONGEN." ], "explorer-reminder-2": [ - "OH SEE HERE, THE DEAL IS FOR 90 PRECURSOR ORBS FOR A POWER CELL.", - "A DOWNRIGHT EVEN TRADE." + "OH ZIE HIER, DE DEAL IS VOOR 90 PRECURSOR-ORBS VOOR EEN KRACHTCEL.", + "EEN RECHTE ZELFS HANDEL." ], "explorer-resolution": [ - "I SEE YOU TWO ARE BACK TO MAKE THE TRADE. GOOD, GOOD, JOLLY GOOD!", - "EH, YOU HAVE THE UH, PRECURSOR ORBS THAT WE AGREED ON?", - "I HOPE YOU PUT THIS HARD-EARNED POWER CELL TO GOOD USE.", - "CHEERIO, TA TA, BYE BYE!" + "IK ZIE DAT JULLIE TWEE TERUG ZIJN OM DE RUIL TE DOEN. GOED, GOED, HEEL GOED!", + "EH, JE HEBT DE VOORLOPIGE ORBS WAAR WE HET OVER EENS ZIJN?", + "IK HOOP DAT JE DEZE MET ZWARE KRACHT VERDIENDE POWER CELL GOED GEBRUIKT.", + "CHEERIO, TA TA, DAAAAAAAA!" ], "farmer-introduction": [ - "GOTTA MILK THOSE YAKOWS, GOTTA MILK THOSE YAKOWS...", - "OH! IT'S YOU... JUST RESTIN' MY TIRED BONES.", - "I'VE BEEN TRYING TO GET THOSE ORNERY YAKOWS", - "BACK INTO THE PEN ALL DAY!", - "SOME STRANGE CREATURES TRIED TO STEAL 'EM EARLIER.", - "YOU THINK YOU CAN HELP AN OLD MAN TRY TO GET 'EM BACK INTO THE CORRAL?" + "IK MOET DIE YAKOWS MELKEN, IK MOET DIE YAKOWS MELKEN...", + "OH! JIJ BENT HET... GEWOON MIJN VERMOEIDE BOTEN RUSTEN.", + "IK HEB GEPROBEERD DIE ORNERY YAKOWS TE KRIJGEN", + "TERUG IN DE PEN DE HELE DAG!", + "SOMMIGE VREEMDE WEZENS PROBEERDEN ZE EERDER TE STELEN.", + "DENK JE DAT JE EEN OUDE MAN KUNT HELPEN OM ZE TERUG IN DE CORRAL TE KRIJGEN?" ], "farmer-reminder-1": [ - "HEY! MY YAKOWS ARE STILL ON THE LOOSE!", - "EH, COULD YOU BRING 'EM BACK FOR ME ALREADY?" + "HOI! MIJN YAKOWS ZIJN NOG STEEDS LOS!", + "EH, KUN JE ZE AL VOOR MIJ TERUGBRENGEN?" ], "farmer-reminder-2": [ - "THOSE DARN YAKOWS ARE STILL ROAMIN' FREE.", - "AIN'T YOU GONNA CHASE 'EM INTO THE CORRAL ALREADY?" + "DIE VERDOMDE YAKOWS ZIJN NOG STEEDS VRIJ.", + "GA JE ZE NIET AL DE KRAAL IN JAGEN?" ], "farmer-resolution": [ - "AH, WELL DONE MY BOY. YOU ACTUALLY GOT THOSE FLEABAGS PACK INTO THE PEN.", - "NOW I CAN SLEEP IN PEACE. TAKE THIS POWER CELL FOR YOUR TROUBLE." + "AH, GOED GEDAAN MIJN JONGEN. JE HEBT DIE VLOOIENZAKKEN DAADWERKELIJK IN DE PEN GESTOPT.", + "NU KAN IK VREDE SLAPEN. NEEM DEZE KRACHTCEL VOOR UW PROBLEMEN." ], "finalbosscam-white-eco": [ - "LIGHT ECO! IT DOES EXIST!", - "THEY MUST NOT BE ALLOWED TO GET IT!" + "LICHT ECO! HET BESTAAT WEL!", + "ZE MOGEN HET NIET KRIJGEN!" ], "fisher-accept": [ - "THERE ARE TWO TYPES OF GOOD FISH TO CATCH:", - "ONE-POUND FISHIES, AND FIVE-POUND FISHIES.", - "HEH. IF YOU MISS 20 POUNDS OF GOOD FISH", - "THEN I'M GONNA TAKE ME NET BACK FROM YA!", - "THERE ARE POISONOUS EELS IN THIS RIVER.", - "CATCH EVEN ONE OF THEM BOOGERS", - "AND YOU'LL POISON THE WHOLE DARN CATCH!" + "ER ZIJN TWEE SOORTEN GOEDE VIS OM TE VANGEN:", + "FISHIES VAN ÉÉN POND EN FISHIES VAN VIJF POND.", + "HEE. ALS JE 20 PONDEN GOEDE VIS MIST", + "DAN NEEM IK ME NET TERUG VAN YA!", + "ER ZIJN GIFTIGE PALINGEN IN DEZE RIVIER.", + "VANG ZELFS EEN VAN HEN BOOGERS", + "EN JE ZULT DE HELE VERDOMDE VANGST VERGIFTIGEN!" ], "fisher-introduction": [ - "WHAT DO YOU HAVE IN THE BASKET?", - "NOTHING TO TALK ABOUT.", - "THEM MONSTERS PATROLIN' THE OCEAN", - "TOOK A BITE OUT OF ME FISHIN' RIG.", - "AND NOW THEY'RE GOBLIN' UP ME CATCH!", - "NO MATTER WHAT I TRY, I CAN'T SEEM TO CATCH A SINGLE FISH IN THIS RIVER.", - "WHOO! MAYBE... IT'S YOUR BREATH.", - "YOU THINK YOU CAN DO BETTER?", - "TRY SCOOPIN' UP RIVER FISH WITH A TINY NET!", - "I'LL GIVE YOU A POWER CELL", - "IF YOU CAN CATCH 200 POUNDS OF THEM CRITTERS!", - "AND I'LL LET YOU AND SHRIMP HERE", + "WAT HEB JE IN DE MAND?", + "NIETS OM OVER TE PRATEN.", + "DIE MONSTERS PATROUILLEREN OP DE OCEAAN", + "NAM EEN HAAT UIT MIJ FISHIN' RIG.", + "EN NU SCHROBBEN ZE MIJ OP!", + "WAT IK OOK PROBEER, HET LIJKT EROP DAT IK IN DEZE RIVIER GEEN ENKELE VIS KAN VANGEN.", + "WHOO! MISSCHIEN... IS HET JE ADEM.", + "DENKT U DAT U HET BETER KAN DOEN?", + "PROBEER RIVIERVIS OP TE SCHEPPEN MET EEN KLEIN NET!", + "IK GEEF JE EEN KRACHTCEL", + "ALS JE 200 POND VAN DIE BEESTJES KUNT VANGEN!", + "EN IK LAAT JOU EN GARNALEN HIER", "GEBRUIK MIJN SPEEDBOOT OM NAAR MISTY EILAND TE GAAN.", - "YOU'S WANT TO TRY THE CHALLENGE?" + "WILT U DE UITDAGING PROBEREN?" ], "fisher-reject": [ - "WELL, IF YOU WANT TO TRY FOR THE POWER CELL SOMETIME", - "YOU KNOW WHERE TO FIND ME." + "NOU JA, ALS JE EEN KEER DE POWER CELL WILT PROBEREN", + "JE WEET WAAR JE ME KUNT VINDEN." ], "fisher-reminder-1": [ - "WANT TO TRY AND BEAT THE RIVER, DO YA?" + "WIL JE PROBEREN DE RIVIER TE VERSLAAN?" ], "fisher-resolution": [ - "YOU DID IT! YOU CAUGHT 200 POUNDS OF FISH!", - "NOT BAD FOR A COUPLE OF LAND LUBBERS!", - "HERE'S THE POWER CELL I PROMISED", - "AND YOU CAN USE MY BOAT IN THE VILLAGE DOCK", - "WHENEVER YOU LIKE!" + "JE HEBT HET GEDAAN! JE HEBT 200 PONDEN VIS GEVANGEN!", + "NIET SLECHT VOOR EEN PAAR LANDLUBBERS!", + "HIER IS DE KRACHTCEL DIE IK BELOOFDE", + "EN JE KUNT MIJN BOOT IN HET DORPSDOK GEBRUIKEN", + "WANNEER JE MAAR WILT!" ], "fishermans-boat-ride-to-village1-alt": [ - "THOSE TWO COULD PROVE TO BE TROUBLE.", - "DON'T WORRY, DEAR BROTHER. I'LL DISPATCH MY LURKER ARMY TO DEAL WITH THEM.", - "JUST MAKE SURE THEY DON'T GET TOO CLOSE TO OUR NORTHERN OPERATIONS.", - "I DOUBT THEY'LL GET THAT FAR.", - "BUT IF THEY DO, A SURPRISE WILL BE WAITING FOR THEM IN ROCK VILLAGE.", - "SO... YOU'RE GOING TO LET KLAWW OUT OF HIS CAGE?", - "I THINK IT'S WORTH THE RISK.", - "INDEED." + "DIE TWEE KUNNEN PROBLEMEN BLIJKEN TE ZIJN.", + "MAAK JE GEEN ZORGEN, LIEVE BROER. IK STUUR MIJN LURKER-LEGER OM ZE AF TE HANDELEN.", + "ZORG ER WEL VOOR DAT ZE NIET TE DICHT BIJ ONZE NOORDELIJKE ACTIVITEITEN KOMEN.", + "IK BETWIJFEL OF ZE ZO VER ZULLEN KOMEN.", + "MAAR ALS ZE DAT DOEN, WACHT ER EEN VERRASSING IN ROCK VILLAGE.", + "DUS... GA JE KLAWW UIT ZIJN KOOI LATEN?", + "IK DENK DAT HET HET RISICO WAARD IS.", + "INDERDAAD." ], "gambler-introduction-1": [ - "AW, NO. NOT ANOTHER \"HERO\".", - "I LOST MY SHORTS ON THIS SO-CALLED HERO'S BIG FIGHT", - "AGAINST THE MONSTER UP THERE.", - "TRUST ME, THE SMART MONEY'S ON THE MONSTER.", - "THAT WAGER PRETTY MUCH TAPPED ME OUT!", - "SO'S, I GOT A PROPOSAL.", - "BRING ME 90 ORBS TO GET ME BACK ON MY FEET AND OUT OF THIS BARREL,", - "AND I'LL GIVE YOU A POWER CELL IN RETURN.", - "AND IF YOU'RE GAME, I DO HAVE ONE MORE BET ONLINE.", - "MY BIG COMEBACK!", - "BEAT THE RECORD TIME RACING DEAD MAN'S GORGE IN THE PRECURSOR BASIN,", - "AND I'LL GET A PRETTY PAYOFF!", - "FOR THAT, I'LL GIVE YOU ANOTHER POWER CELL." + "AW, NEE. NIET EEN ANDERE \"HELD\".", + "IK VERLOOR MIJN KORTE BROEK TIJDENS HET GROTE GEVECHT VAN DEZE ZOGENAAMDE HELD", + "TEGEN HET MONSTER DAAR BOVEN.", + "VERTROUW ME, HET SLIMME GELD IS OP HET MONSTER.", + "DIE WEDDENSCHAP HEEFT MIJ BEHOORLIJK UITGELACHEN!", + "DUS, IK HEB EEN VOORSTEL.", + "BRENG ME 90 ORBS OM ME WEER OP MIJN VOET EN UIT DIT VAT TE KRIJGEN,", + "EN IK GEEF JE IN RUIL DAARVOOR EEN ENERGIECEL.", + "EN ALS JE EEN SPEL BENT, HEB IK NOG EEN WEDDENSCHAP ONLINE.", + "MIJN GROTE COMEBACK!", + "VERSLA DE RECORDTIJD RACING DEAD MAN'S GORGE IN HET PRECURSOR BASIN,", + "EN IK KRIJG EEN MOOIE UITBETALING!", + "DAARVOOR GEEF IK JE NOG EEN POWER CELL." ], "gambler-reminder-money": [ - "HEY. DON'T FORGET ABOUT THOSE ORBS I NEED.", - "90'LL GET YOU ONE. ONE POWER CELL, THAT IS!" + "HOI. VERGEET DE ORBS NIET DIE IK NODIG HEB.", + "90 KRIJG ER EEN. ÉÉN KRACHTCEL, DAT IS!" ], "gambler-reminder-race": [ - "WELL, WHAT ARE YOU WAITIN' FOR?", - "THIS BARREL'S GETTIN' ITCHY!", - "BEAT THE BEST TIME DOWN DEAD MAN'S GORGE,", - "AND WE'LL BOTH BE WINNERS!" + "WEL, WAAR WACHT JE OP?", + "DIT VAT JEUKT!", + "VERSLA DE BESTE TIJD IN DEAD MAN'S GORGE,", + "EN WIJ ZULLEN BEIDE WINNAARS ZIJN!" ], "gambler-resolution-money": [ - "HEH HEH HEH! OH, YEAH!", - "THESE ORBS'LL HELP ME WIN MY WAY BACK OUTTA THIS BARREL!", - "HERE'S THE POWER CELL I PROMISED!" + "HEE HEE HEE! O JA!", + "DEZE ORBS ZULLEN ME HELPEN DE WEG TERUG UIT DIT VAT TE WINNEN!", + "HIER IS DE KRACHTCEL DIE IK BELOOFDE!" ], "gambler-resolution-race": [ - "OH, GREAT MOVES, KID! I KNEW THAT TIME RECORD WOULD FALL.", - "NOW HERE'S YOUR POWER CELL, AND I CAN GO COLLECT MY BIG PAYOFF!" + "OH, GEWELDIGE BEWEGINGEN, JONGEN! IK WIST DAT HET TIJDSRECORD ZOU VALLEN.", + "NU IS HIER JE KRACHTCEL, EN IK KAN MIJN GROTE UITBETALING GAAN OPHALEN!" ], "geologist-introduction": [ - "YOU TWO LOOK LIKE A COUPLE OF CAPABLE FELLOWS.", - "I'VE GOT A RESEARCH PROJECT GOING,", - "AND MAYBE YOU COULD HELP ME OUT.", - "HEY, WE'RE THE ONES ON A BIG QUEST HERE.", - "WE ASK YOU FOR HELP.", - "WELL, PERHAPS WE CAN HELP EACH OTHER.", - "I'VE BEEN STUDYING THE BURROWING HABITS OF LIGHTING MOLES", - "IN THE PRECURSOR BASIN NEXT TO OUR VILLAGE FOR YEARS.", - "BUT NOW THOSE AWFUL LURKERS HAVE SCARED THE MOLES TO THE SURFACE!", - "AND SINCE THEY'RE BLIND AS BATS, THEY CAN'T FIND THEIR WAY BACK UNDERGROUND.", - "IF YOU COULD HERD THEM BACK INTO THEIR BURROWING TUNNELS,", - "YOU MIGHT JUST SAVE THEIR LIVES.", - "I'VE GOT A POWER CELL THAT SAYS YOU CAN DO IT.", - "YEAH, LIGHTNING MOLES... WE CARE.", + "JULLIE TWEE ZIEN ERUIT ALS EEN PAAR CAPABELE KERELS.", + "IK HEB EEN ONDERZOEKSPROJECT AAN DE GANG,", + "EN MISSCHIEN KUN JIJ MIJ HELPEN.", + "HÉ, WIJ ZIJN HIER OP EEN GROTE ZOEKTOCHT.", + "WIJ VRAGEN U OM HULP.", + "NOU JA, MISSCHIEN KUNNEN WE ELKAAR HELPEN.", + "IK HEB DE GRAAFGEWOONTEN VAN HET AANSTEKEN VAN MOEDERVLEKKEN BESTUDEERD", + "JARENLANG IN HET VOORLOPERBEKKEN NAAST ONS DORP.", + "MAAR NU HEBBEN DIE AFGRIJSELIJKE LOERKUNDIGEN DE MOLLEN NAAR DE OPPERVLAKTE GEKREGEN!", + "EN OMDAT ZE ZO BLIND ZIJN ALS VLEERMUIZEN, KUNNEN ZE DE WEG TERUG ONDER DE GROND NIET VINDEN.", + "ALS JE ZE TERUG ZOU KUNNEN DRIJVEN NAAR HUN GRAVENDE TUNNELS,", + "U KUNT HUN LEVEN REDDEN.", + "IK HEB EEN KRACHTCEL DIE ZEGT DAT JE HET KUNT.", + "JA, BLIKSEMMOLES... WIJ ZORGEN DAAR VOOR.", "MISSCHIEN VOOR TWEE ENERGIECELLEN!", - "NICE TRY. BUT I WOULD BE WILLING TO PART WITH ANOTHER POWER CELL", - "IF YOU TWO FIND ME 90 PRECURSOR ORBS FOR MY RESEARCH EQUIPMENT.", - "FAIR ENOUGH?" + "GOED GEPROBEERD. MAAR IK ZOU BEREID ZIJN DEEL TE NEMEN VAN EEN ANDERE KRACHTCEL", + "ALS JULLIE TWEE MIJ 90 VOORLOPER-ORBS VINDEN VOOR MIJN ONDERZOEKSAPPARATUUR.", + "REDELIJK?" ], "geologist-reminder-moles": [ - "DID YOU HERD THOSE LIGHTNING MOLES BACK UNDERGROUND?", - "YOU SHOULD HURRY - THE DIRECT SUNLIGHT ISN'T GOOD FOR THEM!" + "HEB JE DIE BLIKSEMMOLEN TERUG ONDER DE GROND GEDWONGEN?", + "JE MOET HAAST HEBBEN - HET DIRECTE ZONLICHT IS NIET GOED VOOR HEN!" ], "geologist-reminder-money": [ - "I NEED THOSE ORBS IF I'M GOING TO CONTINUE MY RESEARCH!" + "IK HEB DIE ORBS NODIG ALS IK MIJN ONDERZOEK GA VERDER GAAN!" ], "geologist-resolution-moles": [ - "THANK YOU FOR SAVING THOSE MOLES, THAT'S AWFULLY GOOD OF YOU.", - "HERE'S A POWER CELL TO HELP YOU OUT.", - "NOW I CAN GET BACK TO MY RESEARCH!" + "BEDANKT VOOR HET BEHOUDEN VAN DIE MOLES, DAT IS HEEL GOED VAN JE.", + "HIER IS EEN KRACHTCEL OM U TE HELPEN.", + "NU KAN IK TERUG NAAR MIJN ONDERZOEK!" ], "geologist-resolution-money": [ - "OH, YOU HAVE THE ORBS!", - "HERE'S A POWER CELL WE AGREED UPON." + "OH, JE HEBT DE ORBS!", + "HIER IS EEN KRACHTCEL WAAR WE HET OVER EENS ZIJN." ], "green-sagecage-daxter-sacrifice": [ "LICHTE ECO! DAT ZOU HET SPUL KUNNEN ZIJN OM ME TERUG TE VERANDEREN!", @@ -520,26 +520,26 @@ "UH, WE ZIJN HELDEN, WEET JE NOG? WE HEBBEN 100 ENERGIECELLEN!" ], "green-sagecage-outro-beat-boss-need-cells": [ - "HOLY YAKOW! WHAT COULD THAT BE?", - "WOW, IT'S AN ANCIENT PRECURSOR DOOR!", + "HEILIGE YAKOW! WAT KAN DAT ZIJN?", + "WOW, HET IS EEN OUDE VOORLOPDEUR!", "HET ZIET ER NAAR UIT DAT HET ALLEEN OPENGAAT ALS WE ALLE 100 GATEN VULLEN MET ENERGIECELLEN!", - "OH BOY... HERE WE GO AGAIN!" + "OH JONGEN... HIER GAAN WE WEER!" ], "green-sagecage-outro-big-finish": [ - "WOW! WHAT IS IT?", - "IT'S SO BEAUTIFUL...", - "BY THE PRECURSORS..." + "WAUW! WAT IS HET?", + "HET IS ZO MOOI...", + "DOOR DE VOORLOPERS..." ], "green-sagecage-outro-preboss": [ - "YOU'RE TOO LATE, SAMOS.", - "ONCE I POSSESS LIMITLESS DARK ECO", - "I WILL HAVE THE KEY TO CREATION ITSELF!", - "THIS IS MADNESS!", - "RELEASING THAT MUCH DARK ECO WILL DESTROY EVERYTHING WE KNOW!", - "JUST LOOK WHAT IT'S DONE TO YOU!", - "IT HAS GIVEN US A BEAUTY BEYOND ANYTHING YOU COULD UNDERSTAND.", - "BEAUTY? HAVE YOU TWO LOOKED IN THE MIRROR LATELY?", - "JUST WAIT UNTIL WE OPEN THE SILOS, LITTLE ONE.", + "JE BENT TE LAAT, SAMOS.", + "EENS BEZIT IK ONBEPERKTE DARK ECO", + "IK ZAL DE SLEUTEL HEBBEN TOT DE CREATIE ZELF!", + "DIT IS WAANZIN!", + "HET VRIJGEVEN VAN DAT VEEL DONKERE ECO ZAL ALLES WAT WE WETEN VERNIETIGEN!", + "KIJK EENS WAT HET MET JE HEBT GEDAAN!", + "HET HEEFT ONS EEN SCHOONHEID GEGEVEN DIE ALLES WAT U KUNT BEGRIJPEN.", + "SCHOONHEID? HEBBEN JULLIE DE LAATSTE TIJD IN DE SPIEGEL GEKEKEN?", + "WACHT NOG TOT WE DE SILO'S OPENEN, KLEINTJE.", "DENK JE DAT KLEIN EN DONZIG SLECHT IS?", "EN DAN TE BEDENKEN DAT JULLIE HELEMAAL HIERHEEN ZIJN GEREISD VOOR MIJN HULP.", "DWAZEN! GENIET VAN JULLIE PLEK OP DE EERSTE RIJ VOOR DE RECREATIE VAN DE WERELD!", @@ -549,510 +549,510 @@ "GOED WERK, JONGENS! JULLIE ZIJN NU ECHTE HELDEN.", "IK ZAL MIJN GROENE ECO COMBINEREN MET DE ANDERE DRIE WIJZEN", "EN SAMEN OPENEN WE DE SCHILDDEUR ROND DE PRECURSORROBOT.", - "YEAH YEAH THAT SOUNDS LIKE A GOOD START.", - "AND THEN AFTER YOU GUYS OPEN THAT SHIELD", - "WHAT ARE YOU GONNA DO ABOUT THE ROBOT?", - "NOTHING, DAXTER. WE HAVE TO KEEP THE SHIELD OPEN.", - "IT'S UP TO YOU TWO TO FIGURE OUT HOW TO DESTROY THE ROBOT.", - "OH, GREAT. I GET TO HELP THE GUY THAT TURNED ME INTO A FURBALL", - "DESTROY THE ONLY PERSON WHO CAN TURN ME BACK!", - "FIRST, SAVE THE WORLD!", - "THEN WE'LL TRY TO CONVINCE GOL TO HELP DAXTER." + "JA JA DAT KLINKT ALS EEN GOED BEGIN.", + "EN DAN NADAT JULLIE DAT SCHILD HEBBEN GEOPEND", + "WAT GAAT U DOEN AAN DE ROBOT?", + "NIETS, DAXTER. WE MOETEN HET SCHILD OPEN HOUDEN.", + "HET IS AAN JULLIE TWEE OM UIT TE ZOEKEN HOE JE DE ROBOT VERNIETIGT.", + "OH GEWELDIG. IK MAG DE MAN HELPEN DIE MIJ IN EEN FURBALL HEEFT VERANDERD", + "VERNIETIG DE ENIGE PERSOON DIE ME TERUGKEERT!", + "EERST: RED DE WERELD!", + "DAN PROBEREN WE GOL ERVAN TE OVERTUIGEN DAXTER TE HELPEN." ], "mayor-introduction": [ - "NO... (MUTTERS) DON'T TELL ME THAT YOU TWO HAVE PROBLEMS AS WELL!", - "FIRST I HEAR OF MONSTER SIGHTINGS NEAR THE VILLAGE, AND NOW THIS.", - "SEE THOSE GEARS UP THERE, BOYS? SEE THEM? SEE HOW THEY'RE NOT MOVING?", - "THAT MEANS OUR VILLAGE HAS NO POWER!", - "THE ECO BEAM COMING FROM THE JUNGLE TEMPLE HAS BEEN INTERRUPTED!", - "AND BOYS, EVERYONE'S TOO FRIGHTENED TO GO OUT AND FIND OUT WHAT'S HAPPENED.", - "DID YOU PAY THE BILL?", - "YEAH-HMM? OH-HUH-OH, YOU'RE FUNNY.", - "NOW LOOK, IF YOU TWO FIX THE ECO BEAM, I'LL GIVE YOU A POWER CELL.", - "OH OOH OOH AND-AND ANOTHER THING, UH...", - "IF BY ANY CHANCE YOU'RE INTERESTED IN MAKING A CONTRIBUTION TO MY RE-ELECTION CAMPAIGN,", - "I-I MIGHT BE WILLING TO PART WITH YET ANOTHER POWER CELL!", - "THE MINIMUM CONTRIBUTION IS, OH, A VERY MODEST...", - "90 PRECURSOR ORBS." + "NEE... (MOMTERT) VERTEL ME NIET DAT JULLIE OOK PROBLEMEN HEBBEN!", + "EERST HOOR IK VAN MONSTERWAARNEMINGEN IN DE BUURT VAN HET DORP, EN NU DIT.", + "ZIE JE DIE UITRUSTING DAARBOVEN, JONGENS? ZIE ZE? ZIE HOE ZE NIET BEWEGEN?", + "DAT BETEKENT DAT ONS DORP GEEN KRACHT HEEFT!", + "DE ECO-STRAL DIE UIT DE JUNGLE-TEMPEL KOMT, IS ONDERBROKEN!", + "EN JONGENS, IEDEREEN IS TE BANG OM UIT TE GAAN EN TE ONTDEKKEN WAT ER IS GEBEURD.", + "HEBT U DE REKENING BETAALD?", + "JA-HMM? OH-HUH-OH, JE BENT GRAPPIG.", + "KIJK NU, ALS JULLIE TWEE DE ECO BEAM REPAREREN, GEEF IK JE EEN KRACHTCEL.", + "OH OOH OOH EN-EN NOG ANDERS, UH...", + "ALS U EVENTUEEL GEÏNTERESSEERD BENT IN EEN BIJDRAGE AAN MIJN HERVERKIEZINGSCAMPAGNE,", + "IK BEN MISSCHIEN BEREID AFSTAND TE DOEN VAN NOG EEN KRACHTCEL!", + "DE MINIMUMBIJDRAGE IS, OH, EEN ZEER BESCHEIDEN...", + "90 VOORLOPIGE ORBS." ], "mayor-reminder-beams": [ - "BACK ALREADY? AND WITHOUT FIXING THE ECO BEAMS?", - "(SOBS) YOUR VILLAGE NEEDS YOU, BOYS!" + "AL TERUG? EN ZONDER DE ECO BALKEN TE BEVESTIGEN?", + "(SOBS) UW DORP HEEFT JULLIE NODIG, JONGENS!" ], "mayor-reminder-donation": [ - "AH, HERE TO MAKE A DONATION TO MY CAMPAIGN, OH HO HO HO.", - "90 PRECURSOR ORBS BUYS YOU A POWER CELL, THANK YOU." + "AH, HIER OM EEN DONATIE TE DOEN AAN MIJN CAMPAGNE, OH HO HO HO.", + "90 PRECURSOR ORBS KOOPT EEN KRACHTCEL VOOR JE, DANK JE WEL." ], "mayor-resolution-beams": [ - "OH HO HO, WHAT A WONDERFUL SIGHT! I THANK YOU!", - "AND THE ENTIRE VILLAGE WILL THANK ME -", - "UH, BOYS, YOU HAVE RESTORED POWER TO THE VILLAGE AND GUARANTEED MY RE-ELECTION!", - "AND FOR THAT, MY BOY, YOU'VE EARNED A POWER CELL." + "OH HO HO, WAT EEN PRACHTIG GEZICHT! IK BEDANK JE!", + "EN HET HELE DORP ZAL ME DANKEN -", + "UH, JONGENS, JULLIE HEBBEN DE MACHT IN HET DORP HERSTELD EN MIJN HERVERKIEZING GEGARANDEERD!", + "EN DAARVOOR, MIJN JONGEN, HEB JE EEN KRACHTCEL VERDIEND." ], "mayor-resolution-donation": [ - "SO EH, YOU UH, WANNA MAKE A CONTRIBUTION? GOOD... A-A-A SIZABLE ONE I HOPE.", - "YOOH! EH HE HE, IT'S A, OH, THIS IS A SIZABLE CONTRIBUTION!", - "I, WH-WH-WH-WHY I JUST HOPE THIS POWER CELL ADEQUATELY REPRESENTS MY GRATITUDE." + "DUS EH, U UH, WIL U EEN BIJDRAGE DOEN? GOED... EEN GROTE, HOOP IK.", + "YOOH! EH HIJ HIJ, HET IS EEN, OH, DIT IS EEN GROTE BIJDRAGE!", + "IK, WH-WH-WH-WAAROM IK HOOP ENKEL DAT DEZE KRACHTCEL VOLDOENDE MIJN DANKBAARHEID VERTEGENWOORDIGT." ], "minershort-introduction-gnawers": [ - "WHY DON'T YOU TWO MAKE YOURSELVES USEFUL?", - "LURKERS HAVE BEEN EXCAVATIN' THE DARK CAVES OVER THERE.", - "SEEMS THEY'RE LOOKIN' FOR PRECURSOR ARTIFACTS.", - "THEY CAN HAVE THE ARTIFACTS, FOR ALL I CARE.", - "FOR ALL WE CARE!", - "WILLARD, FEED YOUR BIRD.", - "ALL I CARE ABOUT ARE GEMS!", - "BUT I AIN'T GONNA BE ABLE TO GET THE CAVE'S GEMS", - "BECAUSE WHEN THEY'RE THROUGH, THEY'RE GONNA COLLAPSE THE PLACE!", - "IF YOU TAKE OUT THE LURKERS CHEWIN' AT THE SUPPORT BEAMS,", - "YOU COULD SAVE THE CAVE FOR ME.", - "NOW BEAT IT!" + "WAAROM MAKEN JULLIE JEZELF NIET NUTTIG?", + "LUIKERAARS HEBBEN DAAR DE DONKERE GROTTEN OPGEGRAVEN.", + "HET LIJKT EROP DAT ZE OP ZOEK ZIJN NAAR VOORLOPERARTEFACTEN.", + "ZE MOGEN DE ARTEFACTEN HEBBEN, WAT MIJ BETREFT.", + "VOOR ALLES WAAR WIJ VOOR ZORGEN!", + "WILLARD, VOER JE VOGEL.", + "HET ENIGE WAAR IK OM GEEF ZIJN EDELSTENEN!", + "MAAR IK KAN DE EDELSTENEN VAN DE GROT NIET KRIJGEN", + "WANT ALS ZE KLAAR ZIJN, GAAN ZE DE BOEL LATEN INSTORTEN!", + "ALS JE DE LURKERS UITSCHAKELT DIE OP DE STEUNBALKEN KAUWEN,", + "JE KUNT DE GROT VOOR MIJ BEWAREN.", + "NU VERSLAAT HET!" ], "minershort-introduction-orbs": [ - "HEY GORDY, DUH, I THINK WE GOT VISITORS.", - "YA THINK, WILLARD? HOWDY, STRANGERS, UH, PASSING THROUGH?", - "UH, US, TOO. WELL, WE GOTTA BE MOVIN' ON, NOTHIN' TO SEE HERE.", - "DUH, I THOUGHT YOU SAID THIS WAS A PRICELESS GEM WORTH-", + "HEY GORDY, DUH, IK DENK DAT WE BEZOEKERS HEBBEN.", + "DENK JE, WILLARD? HOE, VREEMDELINGEN, OP DOORTOCHT?", + "UH, VS, OOK. NOU, WE MOETEN VERDER, ER IS HIER NIETS TE ZIEN.", + "DUH, IK DACHT DAT JE ZEI DAT DIT EEN ONBETAALBAAR JUWEEL WAS DAT DE MOEITE WAARD WAS-", "WILLARD!", "EIGENLIJK WILLEN WE ENERGIECELLEN, GEEN EDELSTENEN.", - "WE GOT FOUR OF 'EM. DUH, YOU WANT 'EM?", - "WHAT BIRD-BRAIN HERE IS TRYING TO SAY IS,", + "WIJ HEBBEN VIER VAN ZE. DUH, WIL JE ZE?", + "WAT VOGELBRAIN HIER PROBEERT TE ZEGGEN IS:", "WE HEBBEN MISSCHIEN WEL WAT ENERGIECELLEN RONDLIGGEN...", - "AND WE MIGHT BE WILLING TO PART WITH THEM FOR...", - "90 ORBS EACH.", - "WHERE HAVE I HEARD THAT BEFORE?", - "HEY, HOW DO YOU TWO GENIUSES EXPECT TO GET THAT BIG GEM OUTTA HERE ANYWAY?", - "WELL, SMARTYPANTS, WE GOT TWELVE MORE YEARS OF DIGGIN' TO FIGURE THAT OUT.", - "UHH... GORDY, WOULDN'T IT TAKE LESS TIME IF YOU DUG, TOO?" + "EN WE ZIJN MISSCHIEN BEREID AFSTAND VAN HEN TE DOEN VOOR...", + "90 ORBS ELK.", + "WAAR HEB IK DAT EERDER GEHOORD?", + "HÉ, HOE VERWACHTEN JULLIE TWEE GENIEËN DAT GROTE JUWEELTJE HIER ÜBERHAUPT WEG TE KRIJGEN?", + "NOU, SMARTYPANTS, WE HEBBEN NOG TWAALF JAAR OM DAT UIT TE ZOEKEN.", + "EHH... GORDY, ZOU HET NIET MINDER TIJD KUNNEN DURVEN ALS JE OOK GROEFT?" ], "minershort-introduction-switch": [ - "PSST, GUYS. DUH...", - "BIRDIE AND I WAS EXPLORING A CAVE YOU'D LIKE!", - "IT WAS FILLED WITH PRETTY ORANGE METAL,", - "AND HIDDEN REAL GOOD BEHIND SOME TREES IN THE SNOWY MOUNTAINS!", - "I TOLD GORDY, BUT HE JUST YELLED AT ME FOR NOT DIGGING!", - "WHY AREN'T YOU DIGGING?!", - "I'M SORRY!" + "PSST, JONGENS. DUH...", + "BIRDIE EN IK VERKENNEN EEN GROT DIE JIJ WILT!", + "HET WERD GEVULD MET MOOI ORANJE METAAL,", + "EN HEEL GOED VERBORGEN ACHTER SOMMIGE BOMEN IN DE BESNEEUWDE BERGEN!", + "IK VERTELDE HET AAN GORDY, MAAR HIJ SCHREEUWDE ALLEEN MAAR TEGEN MIJ OMDAT IK NIET GRAAFDE!", + "WAAROM GRAAF JE NIET?!", + "HET SPIJT ME!" ], "minershort-reminder-1-gnawers": [ - "WOULD YOU TAKE CARE OF THOSE LURKERS", - "CHEWIN' AT THE DARK CAVE SUPPORT BEAMS ALREADY!", - "THOSE BEAMS CAN'T TAKE THAT KIND OF ABUSE FOREVER!" + "ZOU JIJ VOOR DIE LURKERS ZORGEN", + "CHEWIN BIJ DE DONKERE GROT STEUNBALKEN REEDS!", + "DIE BALKEN KUNNEN DAT SOORT MISBRUIK NIET VOOR ALTIJD AANHOUDEN!" ], "minershort-reminder-1-orbs": [ - "DON'T FORGET OUR DEAL. BRING US 100 ORBS.", - "DUH... YOU SAID 90.", + "VERGEET ONZE DEAL NIET. BRENG ONS 100 ORBS.", + "DUH... JE ZEI 90.", "WILLARD!", - "FINE. 90 ORBS A POWER CELL." + "PRIMA. 90 ORBS EEN KRACHTCEL." ], "minershort-reminder-1-switch": [ - "DID YOU FIND THE CAVE BEHIND THEM TREES IN THE SNOWY MOUNTAINS?", - "I'M GONNA GO THERE SOON, TO HIDE FROM GORDY, 'CAUSE HE'S YELLING AT ME AGAIN!", + "HEB JE DE GROT ACHTER DE BOMEN IN DE BESNEEUWDE BERGEN GEVONDEN?", + "IK GA ER BINNENKORT HEEN, OM MIJ VOOR GORDY TE VERSTOPPEN, WANT HIJ ROEPT WEER TEGEN MIJ!", "WILLARD!!" ], "minershort-reminder-2-orbs": [ "DUH, GORDY?", - "90 ORBS A POWER CELL, WILLARD! URGH!" + "90 ORBS EEN KRACHTCEL, WILLARD! URGH!" ], "minershort-resolution-1-orbs": [ - "OH, ALRIGHT ALREADY.", - "HERE'S A POWER CELL FOR THOSE ORBS OF YOURS." + "O, AL GOED.", + "HIER IS EEN POWERCELL VOOR JULLIE BOLLEN." ], "minershort-resolution-2-orbs": [ - "OOH! OH, I GOT IT THIS TIME! UH...", - "HERE'S A...", - "DUHH.. HERE'S A...!", - "A POWER CELL!", - "YEAH, YEAH... WHAT HE SAID.", - "THAT'S IT. YOU'VE CLEANED US OUT.", + "OOO! OH, IK HEB HET DEZE KEER! UH...", + "HIER IS EEN...", + "DUHH.. HIER IS EEN...!", + "EEN KRACHTCEL!", + "JA, JA... WAT HIJ ZEI.", + "DAT IS HET. JE HEBT ONS OPGERUIMD.", "GEEN! ENERGIECELLEN! MEER!" ], "oracle-intro-1": [ - "WHO AWAKENS THE ORACLE?", - "WAIT, ONE OF YOU HAS THE LIGHT WITHIN.", - "FROM BEFORE TIME, I HAVE WATCHED AND WAITED", - "FOR THE TRUE HERO TO RETURN.", - "PRESENT TO ME 120 PRECURSOR ORBS", - "FOR EACH POWER CELL I CONTAIN." + "WIE MAAKT HET ORACEL WAKKER?", + "WACHT, EEN VAN JULLIE HEEFT HET LICHT BINNEN.", + "VAN VÓÓR TIJD HEB IK KIJKEN EN GEWACHT", + "VOOR DE WARE HELD DIE TERUGKEERT.", + "PRESENTEER MIJ 120 VOORLOPIGE ORBS", + "VOOR ELKE KRACHTCEL DIE IK BEVAT." ], "oracle-intro-2": [ - "BEWARE OF THE DARK LIGHT,", - "FOR IT HAS TWISTED THE FATE OF ONE OF YOU.", - "BRING ME 120 PRECURSOR ORBS", - "FOR EACH POWER CELL I CONTAIN." + "PAS OP VOOR HET DONKERE LICHT,", + "WANT HET HEEFT HET LOT VAN EEN VAN JULLIE VERDRAAID.", + "BRENG ME 120 VOORLOPIGE ORBS", + "VOOR ELKE KRACHTCEL DIE IK BEVAT." ], "oracle-intro-3": [ - "SEEK THE PURE LIGHT, FOR WITHIN ITS FLAME THE ANSWERS RESIDE.", + "ZOEK HET PURE LICHT, WANT IN HAAR VLAM ZITTEN DE ANTWOORDEN.", "JE KAN MIJN ENERGIECELLEN VERDIENEN", - "BY BRINGING 120 PRECURSOR ORBS FOR EACH." + "DOOR VOOR IEDEREEN 120 VOORLOPIGE ORBS TE BRENGEN." ], "oracle-left-eye-1": [ - "YOU HAVE PROVEN YOURSELF WORTHY. HERE IS A POWER CELL." + "JE HEBT BEWEZEN DAT JE HET WAARD BENT. HIER IS EEN POWER CELL." ], "oracle-left-eye-2": [ - "FOR YOUR SACRIFICE, I OFFER YOU A POWER CELL." + "VOOR JE OFFER BIE IK JE EEN KRACHTCEL AAN." ], "oracle-left-eye-3": [ - "FOR YOUR EFFORT, A POWER CELL IS THE REWARD." + "VOOR UW INSPANNING IS EEN KRACHTCEL DE BELONING." ], "oracle-reminder-1": [ - "BRING TO ME 120 PRECURSOR ORBS", - "AND I WILL AWARD YOU A POWER CELL." + "BRENG MIJ 120 VOORLOPER-ORBS", + "EN IK ZAL JE EEN KRACHTCEL TONEN." ], "oracle-reminder-2": [ - "PRESENT 120 PRECURSOR ORBS", - "AND A POWER CELL WILL BE YOUR REWARD." + "AANWEZIG 120 VOORLOPIGE ORBS", + "EN EEN POWER CELL ZAL UW BELONING ZIJN." ], "oracle-reminder-3": [ - "YOU MUST BRING 120 PRECURSOR ORBS", - "TO ME FOR EACH POWER CELL I CONTAIN." + "JE MOET 120 PRECURSOR ORBS MEENEMEN", + "AAN MIJ VOOR ELKE KRACHTCEL DIE IK BEVAT." ], "oracle-right-eye-1": [ - "FOR YOUR GIFT, ANOTHER POWER CELL IS YOURS." + "VOOR UW GESCHENK, KRIJGT U NOG EEN POWER CELL." ], "oracle-right-eye-2": [ - "HERE IS ANOTHER POWER CELL FOR YOUR QUEST." + "HIER IS NOG EEN POWERCEL VOOR UW ZOEKTOCHT." ], "oracle-right-eye-3": [ - "YOU HAVE OBTAINED ANOTHER POWER CELL." + "U HEBT EEN ANDERE POWER CEL VERKREGEN." ], "redsage-resolution": [ - "HE-HE-HEH... YOU'VE FINALLY COME TO RESCUE ME.", - "DO YOU KNOW HOW LONG I'VE BEEN IN HERE?", - "WHAT TOOK YOU SO LONG? AND UH, HE-HE-HEH...", - "WHAT ARE YOUR NAMES?", - "I'M DAXTER! HE'S JAK, HE'S WITH ME.", - "GOOD JOB, DAXTER. YOU'RE A REAL HERO.", - "YOU'VE GOT TO STOP GOL FROM LAUNCHING THE ROBOT.", - "I'LL USE MY ECO POWER TO HELP OPEN THE SHIELD DOOR." + "HEE-HE-HEH... JE BENT EINDELIJK KOMEN OM ME TE REDDEN.", + "WEET JE HOE LANG IK HIER AL BEN?", + "WAAROM DUURDE HET ZOLANG? EN UH, HIJ-HEH...", + "WAT ZIJN JOUW NAMEN?", + "IK BEN DAXTER! HIJ IS JAK, HIJ IS BIJ MIJ.", + "GOED GEDAAN, DAXTER. JE BENT EEN ECHTE HELD.", + "JE MOET GOL ERVAN WEERHOUDEN DE ROBOT TE LANCEREN.", + "IK GEBRUIK MIJN ECO-KRACHT OM DE SCHILDTEUR TE HELPEN OPENEN." ], "sage-bluehut-introduction-crop-dusting": [ - "WELL, THE SITUATION HERE STINKS WORSE THAN A LURKER'S ARMPIT.", + "NOU, DE SITUATIE HIER STINKT ERGER DAN DE OKSEL VAN EEN LURKER.", "VOORDAT DE BLAUWE SALIE VERDWEEN,", - "HE JOURNALED SIGNIFICANT TROUBLE IN ALL OF THE SURROUNDING AREAS.", - "OF PARTICULAR INTEREST TO ME IS THE DARK ECO INFECTION", - "OF SOME INNOCENT PLANTS IN THE PRECURSOR BASIN.", - "KEIRA WILL TELEPORT YOUR A-GRAV ZOOMER TO THE NEAREST TRANS-PAD.", - "RIDE THE ZOOMER TO A GREEN ECO VENT,", - "AND THEN CARRY THE GREEN ECO TO THE CORRUPTED PLANTS.", - "THAT SHOULD HEAL THEM.", - "DON'T MISS A SINGLE PLANT, OR THE INFECTED ONES WILL SLOWLY RE-INFECT THE HEALTHY ONES.", - "AND, DAXTER...", - "START CLEANING UP IN HERE!", - "AND DON'T FORGET THE CORNERS!" + "HIJ REGISTREERDE AANZIENLIJKE PROBLEMEN IN ALLE OMLIGGENDE GEBIEDEN.", + "VAN BIJZONDER BELANG VOOR MIJ IS DE DONKERE ECO-INFECTIE", + "OVER ENKELE ONSCHULDIGE PLANTEN IN HET VOORLOPIGE BEKKEN.", + "KEIRA TELEPORTEERT UW A-GRAV ZOOMER NAAR DE DICHTSTBIJZIJNDE TRANS-PAD.", + "RIJD MET DE ZOOMER NAAR EEN GROENE ECO-VENT,", + "EN DRAAG DAN DE GROENE ECO NAAR DE CORRUPTE PLANTEN.", + "DAT MOET ZE GENEZEN.", + "ZORG ERVOOR DAT U GEEN ENKELE PLANT MIS, ANDERS ZULLEN DE GEÏNFECTEERDE PLANT DE GEZONDE PLANT LANGZAAM OPNIEUW INFECTEREN.", + "EN DAXTER...", + "BEGIN HIER MET OPRUIMEN!", + "EN VERGEET DE HOEKEN NIET!" ], "sage-bluehut-introduction-prec-arm": [ - "WELL, I HOPE YOU'VE PACKED A LUNCH. 'CAUSE WE'RE JUST GETTING STARTED.", + "IK HOOP DAT JE EEN LUNCHPAKKET HEBT MEEGENOMEN. WANT WE ZIJN NOG MAAR NET BEGONNEN.", "VOLGENS DE AANTEKENINGEN VAN DE BLAUWE WIJZE,", - "LURKERS HAVE INFESTED THE SWAMP ACROSS THE BAY.", - "APPARENTLY, THEY'RE PLANNING TO USE A DIRIGIBLE", - "TO LIFT AN IMPORTANT PRECURSOR ARTIFACT FROM THE MUCK.", - "YOU'RE GOING TO HAVE TO GET OVER THERE TO DISLODGE THEIR TETHERS.", - "WHO KNOWS WHAT THEY MIGHT WANT WITH THE ARTIFACT,", - "BUT LIKE ORANGE STUFF HERE'S BREATH, IT JUST CAN'T BE GOOD." + "LUIKERAARS HEBBEN HET MOERAS AAN DE BAAI BESMET.", + "BLIJKBAAR ZIJN ZE VAN PLAN EEN DIRIGIBLE TE GEBRUIKEN", + "OM EEN BELANGRIJK VOORLOPERARTEFACT UIT DE SLECHTHEID TE HALEN.", + "JE ZULT DAARHEEN MOETEN GAAN OM HUN BANDEN LOS TE MAKEN.", + "WIE WEET WAT ZE WILLEN MET HET ARTEFACT,", + "MAAR ZOALS ORANJE STUFF HIER IS ADEM, KAN HET GEWOON NIET GOED ZIJN." ], "sage-bluehut-reminder-1-crop-dusting": [ - "MY EYES MUST BE DECEIVING ME!", - "BECAUSE I KNOW THAT THE TWO OF YOU ARE DEEP IN THE PRECURSOR BASIN,", - "SAVING THE DARK ECO-INFECTED PLANTS." + "MIJN OGEN MOETEN ME BEDRIEGEN!", + "OMDAT IK WEET DAT JULLIE TWEEËN DIEP IN HET VOORLOPERBEKKEN ZITTEN,", + "REDDEN VAN DE DONKERE, ECO-GEÏNFECTEERDE PLANTEN." ], "sage-bluehut-reminder-1-prec-arm": [ - "WHAT ARE YOU DOING BACK HERE ALREADY?", - "I CAN SEE FROM THE BALCONY", - "THAT THE LURKER DIRIGIBLE IS STILL FLOATING ABOVE THE SWAMP.", - "YOU OBVIOUSLY HAVEN'T COMPLETED YOUR TASK.", - "GET MOVING!" + "WAT DOET JIJ HIER AL?", + "IK KAN ZIEN VANAF HET BALKON", + "DAT DE LURKER DIRIGIBLE NOG STEEDS BOVEN HET MOERAS DRIJFT.", + "U HEEFT DUIDELIJK UW TAAK NIET VOLTOOID.", + "KOM IN BEWEGING!" ], "sage-intro-sequence-a": [ - "I HAVE SPENT MY LIFE SEARCHING FOR THE ANSWERS THAT MY FATHER,", - "AND MY FATHER'S FATHERS FAILED TO FIND.", - "WHO WERE THE PRECURSORS?", - "WHY DID THEY CREATE THE VAST MONOLITHS THAT LITTER OUR PLANET?", - "HOW DID THEY HARNESS ECO, THE LIFE ENERGY OF THE WORLD?", - "WHAT WAS THEIR PURPOSE? AND WHY DID THEY VANISH?", - "I HAVE ASKED THE PLANTS, BUT THEY DO NOT REMEMBER.", - "THE PLANTS HAVE ASKED THE ROCKS, BUT THE ROCKS DO NOT RECALL.", - "EVEN THE ROCKS DO NOT RECALL...", - "EVERY BONE IN MY BODY TELLS ME THAT THE ANSWERS REST", - "ON THE SHOULDERS OF A YOUNG BOY", - "OBLIVIOUS TO HIS DESTINY, UNINTERESTED IN THE SEARCH FOR TRUTH", - "AND REJECTING OF MY GUIDANCE!", + "IK HEB MIJN HELE LEVEN GEZOCHT NAAR DE ANTWOORDEN DIE MIJN VADER,", + "EN DE VADERS VAN MIJN VADER KONDEN HET NIET VINDEN.", + "WIE WAREN DE VOORLOPERS?", + "WAAROM HEBBEN ZIJ DE ENORME MONOLITEN GEMAAKT DIE ONZE PLANEET VERVUILEN?", + "HOE HEBBEN ZE ECO, DE LEVENSENERGIE VAN DE WERELD, GEBRUIKT?", + "WAT WAS HUN DOEL? EN WAAROM ZIJN ZE VERDWENEN?", + "IK HEB DE PLANTEN GEVRAAGD, MAAR ZE HERINNEREN HET NIET.", + "DE PLANTEN HEBBEN HET AAN DE ROTSEN GEVRAAGD, MAAR DE ROTSEN HERINNEREN ZICH NIET.", + "ZELFS DE ROTSEN HERINNEREN NIET...", + "ELK BOT IN MIJN LICHAAM VERTELT ME DAT DE ANTWOORDEN RUSTEN", + "OP DE SCHOUDERS VAN EEN JONGE JONGEN", + "ZICH NIET BEWUST VAN ZIJN LOT, ONGEÏNTERESSEERD IN DE ZOEKTOCHT NAAR WAARHEID", + "EN HET VERWERPEN VAN MIJN BEGELEIDING!", "EN WAAROM ZOU HIJ EIGENLIJK WILLEN LUISTEREN NAAR OUDE SAMOS DE WIJZE?", - "I'M ONLY THE MASTER OF GREEN ECO, ONE OF THE WISEST MEN ON THE PLANET!", - "SO IT SEEMS THE ANSWER BEGINS NOT WITH CAREFUL RESEARCH", - "OR SENSIBLE THINKING.", - "NAY! AS WITH MANY OF FATE'S MYSTERIES", - "IT BEGINS WITH BUT A SMALL ACT OF DISOBEDIENCE.", - "HEY! UH, JAK? OL' GREEN STUFF TOLD US NOT TO COME HERE!" + "IK BEN SLECHTS DE MEESTER VAN GROENE ECO, EEN VAN DE WIJSTE MANNEN OP DE PLANEET!", + "HET LIJKT DUS DAT HET ANTWOORD NIET BEGINT MET ZORGVULDIG ONDERZOEK", + "OF VERSTANDIG DENKEN.", + "NEEN! ZOALS BIJ VEEL MYSTERIES VAN HET LOT", + "HET BEGINT MET SLECHTS EEN KLEINE DAAD VAN ONGEHOORZAAMHEID.", + "HOI! EH, JAK? OL' GREEN STUFF VERTELDE ONS HIER NIET TE KOMEN!" ], "sage-intro-sequence-d1": [ - "WHAT IN GREEN TARNATION DO YOU TWO WANT?", - "WE- WE- WE WAS- THEY WAS- I'M- I WAS-", - "DON'T TELL ME! INSTEAD OF HEEDING MY WISDOM", - "THE TWO OF YOU WENT MUCKING AROUND", + "WAT WILLEN JULLIE IN GROENE TARNATION?", + "WIJ- WIJ- WIJ WAS- ZIJ WAS- IK BEN- IK WAS-", + "VERTEL ME NIET! IN PLAATS VAN NAAR MIJN WIJSHEID", + "JULLIE TWEEËN GINGEN RONDSNUFFELEN", "OP DE ENIGE PLEK WAARVAN IK ZEI DAT JE ER NIET HEEN MOEST GAAN: MISTY EILAND!", - "THAT'S RIGHT! AND THEN-", - "AND, DAXTER, YOU FINALLY TOOK A MUCH-NEEDED BATH", - "BUT IN A BATHTUB FILLED WITH DARK ECO.", - "LOOK, OLD MAN, ARE YOU GONNA KEEP YAPPIN'", - "OR YOU GONNA HELP ME OUTTA THIS MESS!?", - "I'M GONNA KEEP YAPPIN'! BECAUSE IN MY PROFESSIONAL OPINION", - "THE CHANGE IS AN IMPROVEMENT.", - "AND BESIDES... I COULDN'T HELP YOU IF I WANTED TO.", - "WHAT!?", - "THERE'S ONLY ONE PERSON WHO HAS STUDIED DARK ECO LONG ENOUGH", - "TO HAVE A CHANCE AT RETURNING YOU TO YOUR PREVIOUS FORM:", + "DAT IS JUIST! EN DAN-", + "EN DAXTER, JE HEBT EINDELIJK EEN HOOGNODIG BAD GENOMEN", + "MAAR IN EEN BAD GEVULD MET DARK ECO.", + "KIJK, OUDE MAN, GA JE YAPPIN HOUDEN?", + "OF JE HELPT ME UIT DEZE PUBLIEK!?", + "IK BLIJF YAPPIN'! OMDAT NAAR MIJN PROFESSIONELE MENING", + "DE VERANDERING IS EEN VERBETERING.", + "EN BOVENDIEN... IK ZOU JE NIET KUNNEN HELPEN ALS IK DAT WILDE.", + "WAT!?", + "ER IS SLECHTS ÉÉN PERSOON DIE DARK ECO LANG GENOEG STUDEERT", + "OM EEN KANS TE HEBBEN OM TERUG TE KOMEN NAAR UW VORIGE FORMULIER:", "GOL ACHERON, DE WIJZE.", - "BUT HE LIVES FAR TO THE NORTH. FAR, FAR TO THE NORTH.", - "NOBODY HAS SPOKEN TO HIM IN AGES.", - "I WOULD TELEPORT YOU THERE, BUT I CAN'T DO THAT EITHER.", + "MAAR HIJ WOONT VER NAAR HET NOORDEN. VER, VER NAAR HET NOORDEN.", + "NIEMAND HEEFT AL EEUWEN MET HEM GESPROKEN.", + "IK ZOU JE DAARHEEN WILLEN TELEPORTEREN, MAAR DAT KAN IK OOK NIET.", "GEEN VAN DE DRIE WIJZEN DIE DE ANDERE TELEPORTEERPOORTEN ONDERHOUDEN", - "HAVE SEEN FIT TO TURN THEIR ENDS ON FOR QUITE A WHILE!" + "HEBBEN HET GESCHIKT GEZIEN OM HUN EINDE AL EEN TIJD AAN TE ZETTEN!" ], "sage-intro-sequence-d2": [ - "THE ONLY OTHER WAY NORTH IS BY FOOT THROUGH THE FIRE CANYON", - "BUT ITS VOLCANIC SOIL IS HOT ENOUGH TO MELT PRECURSOR METAL.", - "YOU CAN'T JUST WALK THROUGH IT.", - "BUT YOU COULD FLY OVER IT", - "IF YOU HAD A ZOOMER EQUIPPED WITH A HEAT SHIELD.", - "I JUST HAPPEN TO BE WORKING ON SUCH A THING AT THIS VERY MOMENT.", + "DE ENIGE ANDERE WEG NAAR HET NOORDEN IS TE VOET DOOR DE FIRE CANYON", + "MAAR DE VULKANISCHE BODEM IS HEET GENOEG OM HET VOORLOPERMETAAL TE LATEN SMELTEN.", + "JE KUNT ER NIET ZOMAAR DOORHEEN LOPEN.", + "MAAR JE KAN ER OVERVLIEGEN", + "ALS JE EEN ZOOMER HEEFT UITGERUST MET EEN HITTESCHILD.", + "IK BEN TOEVALIG OP DIT MOMENT AAN IETS ZO'N WERK AAN.", "ALLES WAT IK NODIG HEB ZIJN TWINTIG ENERGIECELLEN OM HET GENOEG ENERGIE TE GEVEN", - "TO WITHSTAND THE CANYON'S HEAT. ISN'T THAT RIGHT, DADDY?", - "YES, KEIRA, THAT MIGHT WORK. BUT WHERE ARE A BOY", - "AND A HALF!", + "OM DE HITTE VAN DE CANYON TE WEERSTAAN. IS DAT NIET JUIST, PAPA?", + "JA, KEIRA, DAT ZOU KUNNEN WERKEN. MAAR WAAR IS EEN JONGEN?", + "EN EEN HALF!", "TWINTIG ENERGIECELLEN HALEN?", - "FROM THE VILLAGERS! MOST OF THEM HAVE A POWER CELL OR TWO", - "STASHED AWAY SOMEWHERE.", - "AND EVEN IF THEY AREN'T WILLING TO JUST GIVE THEM AWAY", - "GREASING THEIR PALMS WITH A FEW PRECURSOR ORBS SHOULD DO THE TRICK.", - "AND I BET THERE ARE EVEN MORE OF THEM OUT IN THE WILDS JUST WAITING FOR SOME", - "BRAVE ADVENTURER TO FIND.", - "WELL WE'VE GOT THE BRAVE ADVENTURER, AT LEAST.", - "BRAVE ADVENTURER?", - "YOU TWO COULDN'T FIND YOUR WAY OUT OF THE VILLAGE WITHOUT TRAINING!", - "BEFORE YOU DO ANYTHING ELSE, YOU BETTER GO THROUGH THE WARP GATE AND GET", - "SOME PRACTICE ON GEYSER ROCK.", - "UH, WE WON'T FIND ANY MORE OF THAT DARK GOOEY ECO STUFF, WILL WE?", - "'CAUSE I'D HATE TO FALL IN AGAIN AND TURN INTO YOU!", - "GET IN THERE! BEFORE I TURN YOU BOTH INTO FERNS!" + "VAN DE DORPEN! DE MEESTE VAN HEN HEBBEN EEN POWERCEL OF TWEE", + "ERGENS VERSTOPT.", + "EN ZELFS ALS ZE NIET BEREID ZIJN OM ZE GEWOON WEG TE GEVEN", + "HUN PALMEN INVETEN MET EEN PAAR VOORLOPIGE ORBS ZOU DE TRUC KUNNEN DOEN.", + "EN IK WED DAT ER NOG MEER VAN HEN IN DE WILDERNIS ZIJN, GEWOON OP SOMMIGEN WACHTEN", + "MOEDIGE AVONTURIER OM TE VINDEN.", + "NOU, WE HEBBEN TENMINSTE DE DAPPERE AVONTURIER.", + "DAPPERE AVONTURIER?", + "ZONDER TRAINING KUNNEN JULLIE TWEE DE WEG UIT HET DORP NIET VINDEN!", + "VOORDAT JE IETS ANDERS DOET, KUN JE BETER DOOR DE WARPPOORT GAAN EN", + "ENKELE OEFENINGEN OP DE GEISERROTS.", + "UH, WE ZULLEN NIET MEER VAN DAT DONKERE KLEVERIGE ECO-STUFF VINDEN, WEL?", + "OMDAT IK HET NIET LEUK ZOU VINDEN OM ER WEER IN TE VALLEN EN IN JOU TE VERANDEREN!", + "GA ERIN! VOORDAT IK JULLIE ALLEBEI IN VARENS VERANDER!" ], "sage-intro-sequence-e": [ - "GOOD TRAINING, BOYS, BUT THAT'S NOTHING COMPARED TO THE CHALLENGES THAT LIE AHEAD.", - "AH, THEY'RE NO PROBLEM. WE GOT THE MOVES, EH JAK?", - "WE'D LOVE TO STAY AND CHAT, BIG GREEN, BUT WE'RE UH...", - "ITCHING TO GET ON WITH OUR ADVENTURES.", - "FINE, FINE, \"ADVENTURE\" AWAY THEN.", - "AND WHILE YOU'RE OUT \"ADVENTURING,\" WHY DON'T YOU MAKE YOURSELF USEFUL?", - "MY DARN GREEN ECO COLLECTORS ARE CLOGGED UP AGAIN.", - "HEAD OUT TO THE FAR SIDE OF THE BEACH AND CLEAR THEM OUT WHY DON'T YOU.", - "FOLLOW THE LAMPS, THEY'LL TAKE YOU RIGHT THERE.", - "NOW, ALL OF YOU...", - "GET OUT OF HERE!" + "GOEDE TRAINING, JONGENS, MAAR DAT IS NIETS VERGELEKEN MET DE UITDAGINGEN DIE VOOR ONS LIGGEN.", + "AH, DAT IS GEEN PROBLEEM. WE HEBBEN DE BEWEGINGEN, EH JAK?", + "WE WILLEN GRAAG BLIJVEN EN CHATTEN, GROOT GROEN, MAAR WIJ ZIJN UH...", + "JEUK OM DOOR TE GAAN MET ONZE AVONTUREN.", + "FIJN, FIJN, \"AVONTUUR\" WEG DAN.", + "EN WAAROM MAAK JE JEZELF NIET NUTTIG TERWIJL JE OP AVONTUUR BENT?", + "MIJN DARN GROENE ECO-VERZAMELAARS ZIJN WEER VERSTOPT.", + "GA NAAR DE VERSTE KANT VAN HET STRAND EN MAAK ZE UIT, WAAROM NIET.", + "VOLG DE LAMPEN, ZE BRENGEN JE DAAR DAAR.", + "NU, JULLIE ALLEMAAL...", + "GA WEG!" ], "sage-introduction-misty-cannon": [ - "OH, IT'S THE CONQUERING HEROES.", - "GOOD, I WANTED TO TALK WITH YOU TWO ABOUT SOMETHING SERIOUS.", + "OH, HET ZIJN DE VEROVERENDE HELDEN.", + "GOED, IK WILDE MET JULLIE TWEE PRATEN OVER IETS ERNSTIGS.", "ER LIJKT NOGAL WAT LURKER ACTIVITEIT TE ZIJN OP MISTY ISLAND.", - "I CAN SEE THEM BOMBARDING THE PRECURSOR SILO FROM MY LOOKOUT TOWER.", - "IF THE LURKERS OPEN IT UP AND RELEASE THE DARK ECO, WE COULD ALL END UP", - "RUNNING AROUND LOOKING AS RIDICULOUS AS THIS ANNOYING LITTLE SPECIMEN.", - "JAK, IT'S TIME FOR YOU TO PROVE YOUR WORTH.", + "IK ZIE ZE DE VOORLOPER-SILO BOMBARDEREN VANUIT MIJN UITKIJKTOREN.", + "ALS DE LURKERS HET OPENMAKEN EN DE DARK ECO VRIJLATEN, KUNNEN WE ALLEMAAL EINDIGEN", + "ROND RENNEN EN ER ZO BELACHELIJK UITZIEN ALS DIT VERVELENDE KLEINE SPECIMEN.", + "JAK, HET IS TIJD DAT JE JE WAARDE MOET BEWEZEN.", "ZORG DAT DE VISSER JE ZIJN BOOT TERUG NAAR MISTY ISLAND LAAT NEMEN", - "GET TO THE TOP OF THE PRECURSOR SILO AND TAKE OUT THAT CANNON.", - "AND... WHAT ABOUT ME?", - "YOU? WHY DON'T YOU MOP MY FLOORS? THEY SEEM TO HAVE LOST THEIR SHINE LATELY." + "GA NAAR DE TOP VAN DE VOORLOPIGE SILO EN HAAL DAT KANON UIT.", + "EN IK DAN?", + "JIJ? WAAROM MOP JE MIJN VLOEREN NIET? ZE LIJKEN DE LAATSTE TIJD HUN GLANS TE HEBBEN VERLOREN." ], "sage-reminder-1-ecorocks": [ - "SOME \"BRAVE ADVENTURERS\" YOU TWO ARE.", - "BACK ALREADY AND WITHOUT CLEARING MY BLOCKED ECO HARVESTERS!", - "THEY'RE ON THE FAR SIDE OF THE BEACH, BOYS.", - "NOW...", - "GET MOVING!" + "SOMMIGE \"MOEDIGE AVONTURIERS\" ZIJN JULLIE TWEE.", + "REEDS TERUG EN ZONDER MIJN GEBLOKKEERDE ECO-OOGSTEN OP TE RUIMEN!", + "ZE ZIJN AAN DE ANDERE KANT VAN HET STRAND, JONGENS.", + "NU...", + "KOM IN BEWEGING!" ], "sage-reminder-1-generic": [ "WAT DOEN JULLIE TWEE HIER? JULLIE MOETEN ENERGIECELLEN VERZAMELEN!", - "LEAVE ME ALONE... UNTIL YOU HAVE THEM!" + "LAAT ME MET RUST... TOTDAT JE ZE HEBT!" ], "sage-reminder-1-misty-cannon": [ - "THE BOMBARDMENT IS GETTING WORSE!", - "FIND THE FISHERMAN IN THE JUNGLE, GET PERMISSION TO USE HIS BOAT", + "HET BOMBARDMENT WORDT ERGER!", + "VIND DE VISSER IN DE JUNGLE, KRIJG TOESTEMMING OM ZIJN BOOT TE GEBRUIKEN", "EN GA NAAR MISTY EILAND OM HET KANON TE STOPPEN", - "AND YOU DAXTER, YOU NEED TO GET MOPPING. THIS PLACE IS A MESS!" + "EN JIJ DAXTER, JIJ MOET GAAN DWEILEN. DEZE PLAATS IS EEN PUINHOOP!" ], "sage-reminder-2-generic": [ - "YOU TWO JUST DON'T UNDERSTAND THE GRAVITY OF THE SITUATION.", - "THIS IS ABOUT MORE THAN A SINGLE BOY GONE FUZZY. THIS IS ABOUT LIFE AS WE KNOW IT.", - "NOW, GET OUT THERE AND FULFILL YOUR DESTINY." + "JULLIE TWEE BEGRIJPEN DE ERNST VAN DE SITUATIE GEWOON NIET.", + "DIT GAAT OVER MEER DAN EEN ENKELE JONGEN DIE WAUW IS. DIT GAAT OVER HET LEVEN ZOALS WIJ HET KENNEN.", + "GA NU OP ONTDEKKING EN VERVUL JE LOT." ], "sage-village3-introduction": [ - "OW! I ALWAYS WONDER IF I'M LOSING BODY PARTS IN THOSE THINGS!", + "OW! IK VRAAG ME ALTIJD AF OF IK LICHAAMSDELEN VERLIES IN DIE DINGEN!", "HEILIGE JAKOW! HET LAB VAN DE RODE WIJZE ZIET ER SLECHTER UIT DAN DAT VAN DE BLAUWE!", - "WELL, IT DEFINITELY LOOKS AS THOUGH THERE'S BEEN A STRUGGLE HERE.", + "NOU, HET ZIET ER ZEKER NAAR UIT ALSOF ER HIER EEN STRIJD IS GEWEEST.", "HA HA HA HA HA!", - "I'D HARDLY CALL IT \"STRUGGLE.\"", - "WOULD YOU, DEAR SISTER?", + "IK ZOU HET NAUWELIJKS 'STRIJD' NOEMEN.", + "ZOU U, BESTE ZUSTER?", "ZEKER NIET. DE RODE SALIE GAF HET OP MET ZO WEINIG MOEITE.", - "NO FUN AT ALL.", - "GOL? IS THAT YOU?", - "YOU'VE FINALLY GONE OFF THE DEEP END, EH?", - "AND, MAIA! I TOLD YOU THE DARK ECO WOULD AFFECT YOU BOTH!", - "HNG, NOBODY EVER LISTENS TO OLD SAMOS...", + "HELEMAAL GEEN PLEZIER.", + "GOL? BEN JIJ DAT?", + "JE BENT EINDELIJK UIT HET DIEPE GEGAAN, HÈ?", + "EN, MAIA! IK VERTELDE JE DAT DE DONKERE ECO JULLIE ALLEBEI ZOU BEÏNVLOEDEN!", + "HNG, NIEMAND LUISTERT OOIT NAAR OUDE SAMOS...", "WAT HEBBEN JULLIE GEDAAN MET DE BLAUWE EN RODE WIJZE?", - "DON'T WORRY ABOUT YOUR COLORFUL FRIENDS, YOU OLD FOOL.", - "THEY'RE PERFECTLY SAFE IN OUR CITADEL. OUR SPECIAL GUESTS.", - "THEY HAVE GRACIOUSLY AGREED TO HELP US ON A LITTLE PROJECT.", - "YOU WERE WRONG, SAMOS. DARK ECO CAN BE CONTROLLED!", - "WE'VE LEARNED ITS SECRETS, AND NOW WE CAN RESHAPE THE WORLD TO OUR LIKING.", - "YOU CAN'T CONTROL DARK ECO BY ITSELF! EVEN THE PRECURSORS COULDN'T-", - "UNTIL NOW, WE'VE HAD TO SCRAPE BY WITH WHAT LITTLE DARK ECO", - "WE COULD FIND NEAR THE SURFACE.", - "BUT SOON, WE WILL HAVE ACCESS TO THE VAST STORES", - "OF DARK ECO HIDDEN DEEP UNDERGROUND.", - "NOT THE SILOS!", - "YES, THE SILOS!", - "THEY WILL BE OPENED, AND ALL THE DARK ECO IN THE WORLD WILL BE OURS!", - "BUT THAT'S IMPOSSIBLE! ONLY A PRECURSOR ROBOT-", - "OH, DON'T LOOK SO UPSET, SAMOS.", - "WE'VE GOT BIG PLANS FOR YOU.", + "MAAK JE GEEN ZORGEN OVER JE KLEURRIJKE VRIENDEN, OUWE DWAAS.", + "ZE ZIJN PERFECT VEILIG IN ONZE CITADEL. ONZE SPECIALE GASTEN.", + "ZE HEBBEN ER VRIENDELIJK MEE INGESTEMD OM ONS TE HELPEN BIJ EEN KLEIN PROJECT.", + "JE HAD HET MIS, SAMOS. DARK ECO KAN WORDEN GECONTROLEERD!", + "WE HEBBEN DE GEHEIMEN HAAR GELEERD, EN NU KUNNEN WE DE WERELD NAAR ONS WIL WERDEN.", + "U KUNT DARK ECO NIET ZICHZELF BESTUREN! ZELFS DE VOORLOPERS KUNNEN NIET-", + "TOT NU MOESTEN WE VERDER GAAN MET WAT WEINIG DONKERE ECO", + "WE KUNNEN DICHTBIJ HET OPPERVLAK VINDEN.", + "MAAR BINNENKORT HEBBEN WE TOEGANG TOT DE ENORME WINKELS", + "VAN DONKER ECO VERBORGEN DIEP ONDERGRONDS.", + "NIET DE SILO'S!", + "JA, DE SILO'S!", + "ZE ZULLEN GEOPEND WORDEN, EN ALLE DONKERE ECO IN DE WERELD ZAL VAN ONS ZIJN!", + "MAAR DAT IS ONMOGELIJK! SLECHTS EEN VOORLOPIGE ROBOT-", + "O, KIJK NIET ZO BOOS, SAMOS.", + "WIJ HEBBEN GROTE PLANNEN VOOR U.", "AH HA HA HA HA HA HA! AHH...", - "WAIT A MINUTE!", - "THAT WAS GOL?", - "THE SAME GOL WHO'S SUPPOSED TO CHANGE ME BACK?", - "GOL IS THE GUY TRYING TO KILL US?!", - "I'M DOOMED.", - "WE MAY ALL BE DOOMED.", - "IF THEY OPEN THE SILOS, THE DARK ECO WILL", - "TWIST AND DESTROY EVERYTHING IT TOUCHES!", - "WE SIMPLY MUST GET TO THEIR CITADEL, TO STOP THEM!", - "THE FASTEST WAY THERE IS THROUGH THE LAVA TUBE", - "AT THE BOTTOM OF THIS CRATER.", + "WACHT EVEN!", + "DAT WAS GOL?", + "DEZELFDE GOL DIE MIJ TERUG MOET VERANDEREN?", + "GOL IS DE KEREL DIE ONS PROBEERT TE DODEN?!", + "IK BEN GEDOEMD.", + "WE KUNNEN ALLEMAAL VERDOEMD ZIJN.", + "ALS ZE DE SILO'S OPENEN, ZAL DE DARK ECO DAT WEL DOEN", + "DRAAI EN VERNIETIG ALLES WAT HET AANRAKT!", + "WE MOETEN GEWOON NAAR HUN CITADEL GAAN, OM ZE TEGENHOUDEN!", + "DE SNELSTE WEG ER IS VIA DE LAVABUIS", + "AAN DE BODEM VAN DEZE KRATER.", "NOG EEN PAAR ENERGIECELLEN, EN HET HITTESCHILD VAN DE ZOOMER", - "SHOULD GET YOU ACROSS THE LAVA SAFELY.", - "ALL RIGHT, MY BOY. YOU KNOW WHAT TO DO.", + "ZOU JE VEILIG OVER DE LAVA KUNNEN KRIJGEN.", + "OKÉ, MIJN JONGEN. JE WEET WAT JE MOET DOEN.", "NEEM DIE VLOOIENBAAL MEE EN GA MEER ENERGIECELLEN HALEN." ], "sage-village3-introduction-dark-eco": [ - "GREAT BALLS OF ECO!", - "THERE SEEMS TO BE A LARGE LURKER PRESENCE IN THE SPIDER CAVES!", - "GREAT. SOUNDS LIKE A REAL CHEERY PLACE.", - "LET ME GUESS. THERE ARE SPIDERS IN THE SPIDER CAVES, RIGHT?", - "OF COURSE THERE ARE SPIDERS IN SPIDER CAVES!", - "BUT THAT'S THE LEAST OF YOUR PROBLEMS!", - "THE LURKERS ARE AFTER CRYSTALS OF CONCENTRATED DARK ECO.", - "YOU'VE GOT TO DESTROY THE CRYSTALS BEFORE THOSE MONSTERS", - "GET THEIR HANDS ON THEM!", - "HOP TO IT!" + "GEWELDIGE BALLEN VAN ECO!", + "ER LIJKT EEN GROTE LURKER AANWEZIG TE ZIJN IN DE SPINNENGROTEN!", + "GEWELDIG. KLINKT ALS EEN ECHTE VROLIJKE PLEK.", + "LAAT ME RADEN. ER ZIJN SPINNEN IN DE SPINNENGROTTEN, TOCH?", + "NATUURLIJK ZIJN ER SPINNEN IN SPINNENGROTTEN!", + "MAAR DAT IS HET MINSTE VAN UW PROBLEMEN!", + "DE LURKERS ZIJN NA KRISTALLEN VAN GECONCENTREERDE DARK ECO.", + "JE MOET DE KRISTALLEN VERNIETIGEN VOOR DIE MONSTERS", + "KRIJG HUN HANDEN OP ZE!", + "HOP NAAR HET!" ], "sage-village3-introduction-rams": [ - "I'M GLAD YOU TWO ARE HERE. THERE'S LURKER MOVEMENT IN THE MOUNTAINS.", - "APPARENTLY THEY'VE DISCOVERED, AND ARE NOW TRYING TO REMOVE,", - "SOME DARK ECO STORES FROZEN IN THE GLACIERS.", + "IK BEN BLIJ DAT JULLIE TWEE HIER ZIJN. ER IS EEN LURKERBEWEGING IN DE BERGEN.", + "BLIJKBAAR HEBBEN ZE ONTDEKT, EN PROBEREN ZE NU TE VERWIJDEREN,", + "ENKELE DONKERE ECO-WINKELS BEVROREN IN DE GLETSJERS.", "TERWIJL JULLIE HIER RONDHANGEN VOOR ENERGIECELLEN", - "STOP THOSE LURKERS, AND KEEP A LITTLE MORE DARK ECO OUT OF GOL'S HANDS." + "STOP DIE LURKERS EN HOUD EEN WEINIG MEER DONKERE ECO UIT GOL'S HANDEN." ], "sage-village3-reminder-1-dark-eco": [ - "YOU HAVE TO DESTROY THE DARK ECO CRYSTALS IN SPIDER CAVES!" + "JE MOET DE DONKERE ECO-KRISTALLEN IN SPIDERGROTTEN VERNIETIGEN!" ], "sage-village3-reminder-1-rams": [ - "WE CAN'T LET THE LURKERS GET THEIR HANDS ON THE DARK ECO CANISTERS.", - "GET UP TO THOSE SNOWY PEAKS AND STOP THEM!" + "WE MOGEN NIET TOELATEN DAT DE LURKERS DE DONKERE ECO-BUSSEN IN HANDEN KRIJGEN.", + "KOM NAAR DIE BESNEEUWDE PIEKEN EN STOP ZE!" ], "sculptor-introduction": [ - "HEY... LITTLE FURRY DUDE!", - "AWW... I THOUGHT FOR A MOMENT YOU WERE MY MUSE.", - "YOUR WHAT?", - "HAVEN'T YOU EVER SEEN A MUSE BEFORE?", - "IT'S A LITTLE GLOWIN' SQUIRREL ABOUT YOUR SIZE, FULL OF SPUNK, AND CRAZY AS A LARK!", - "OH, I GET IT! LIKE A SIDEKICK.", - "AS A MATTER OF FACT, WITHOUT MY MUSE, I JUST CAN'T SCULPT.", - "BUT WITH HER AROUND... I SEE BEAUTY IN EVERYTHING, YOU KNOW?", - "RIGHT NOW I COULDN'T CHISEL MY WAY OUT OF A BOX.", + "HÉ... KLEINE BONTE KEREL!", + "AWW... IK DACHT EVEN DAT JIJ MIJN MUZE WAS.", + "JOUW WAT?", + "HEB JE NOG NOOIT EEN MUSE GEZIEN?", + "HET IS EEN KLEINE GLOEIENDE EEKHOORN ZO GROOT ALS JIJ, VOL PIT EN GEK ALS EEN LEEUW!", + "OH, IK SNAP HET! ALS EEN SIDEKICK.", + "EIGENSCHAP KAN IK ZONDER MIJN MUSE GEWOON NIET BEELDHOUWEN.", + "MAAR MET HAAR IN DE BUURT... ZIE IK SCHOONHEID IN ALLES, WEET JE?", + "OP DIT MOMENT KON IK MIJN WEG UIT EEN DOOS NIET BEITELEN.", "IK DENK DAT ZE IS WEGGELOPEN NAAR DAT MISTIGE EILAND.", - "AWW, I JUST HOPE SHE'S ALL RIGHT.", - "IT'S WORTH A POWER CELL IF YOU BRING HER BACK TO ME!", + "AWW, IK HOOP MAAR DAT HET GOED MET HAAR GAAT.", + "HET IS EEN POWERCEL WAARD ALS JE HAAR BIJ MIJ TERUG BRENGT!", "WACHT EVEN! WE GAAN NIET TERUG NAAR MISTY EILAND!", - "ARE WE?" + "ZIJN WE?" ], "sculptor-reminder-1": [ - "AW HEY DUDES! DID YOU FIND MY MUSE YET?" + "AW HEY DUDES! HEB JE MIJN MUSE NOG GEVONDEN?" ], "sculptor-resolution": [ - "OH, MY MUSE! YOU SAVED HER! AW, YOU REALLY ARE THE BEST!", - "HERE, TAKE THIS POWER CELL. I WON'T NEED IT NOW THAT I HAVE MY INSPIRATION BACK!" + "OH, MIJN MUZE! JE HEBT HAAR GERED! AW, JIJ BENT ECHT DE BESTE!", + "HIER, NEEM DEZE KRACHTCEL. IK HEB HET NIET NODIG NU IK MIJN INSPIRATIE TERUG HEB!" ], "sidekick-human-intro-sequence-b": [ - "CONTINUE YOUR SEARCH FOR ARTIFACTS AND ECO.", - "IF THE LOCALS POSSESS PRECURSOR ITEMS, YOU KNOW WHAT TO DO.", - "DEAL HARSHLY WITH ANYBODY WHO STRAYS FROM THE VILLAGE.", - "WE WILL ATTACK IT IN DUE TIME." + "VERDER JE ZOEKTOCHT NAAR ARTEFACTEN EN ECO.", + "ALS DE LOCALS VOORLOPIGE ITEMS BEZITTEN, WEET U WAT U MOET DOEN.", + "GA HARD OM MET IEDEREEN DIE HET DORP VERLAAT.", + "WIJ ZULLEN HET TE TIJDE AANVALLEN." ], "sidekick-human-intro-sequence-c": [ - "WHAT ARE WE DOING HERE ANYWAY, JAK? THIS PLACE GIVES ME THE CREEPS!", + "WAT DOEN WE HIER ÜBERHAUPT, JAK? DEZE PLAATS GEEFT ME DE CREEPS!", "HUH?", - "(GROAN) STUPID PRECURSOR JUNK!", - "EEK! WHAT IS THAT DARK OOZE? IT SURE DON'T LOOK FRIENDLY.", + "(GROEN) STOMME VOORLOPIGE JUNK!", + "EK! WAT IS DAT DONKERE SLIJK? HET ZIET ER ZEKER NIET VRIENDELIJK UIT.", "DE WIJZE ZEURT DE HELE TIJD OVER DE PRECURSORS DIE DEZE PLEK GEBOUWD HEBBEN.", - "\"WHERE DID THEY GO? WHY DID THEY BUILD THIS CRAP?\"", + "\"WAAR ZIJN ZE GAAN? WAAROM HEBBEN ZE DEZE CRAP BOUWEN?\"", "IK HOU EVENVEEL VAN PRECURSOR ORBS EN ENERGIECELLEN ALS EENDER WIE.", - "BUT IF YOU ASK ME, THEY MUST HAVE BEEN REAL LOSERS.", - "WHOA! HOW DID YOU DO THAT?", - "JAK, I THINK WE'RE IN TROUBLE!", - "MAN, THAT STUNG.", - "I TOLD YOU WE SHOULDN'T HAVE COME HERE, AND YOU LISTENED?", - "WHAAAT?", - "WAAAAAAAAHHHHHHHH!!", - "OKAY, OKAY. I'M FINE, I'M FINE...", - "WAAAAAAAAHHHHHHHH!!" + "MAAR ALS JE HET MIJ VRAAGT, MOETEN HET ECHTE VERLIEZERS ZIJN GEWEEST.", + "WAUW! HOE HEB JE DAT GEDAAN?", + "JAK, IK DENK DAT WE IN DE PROBLEMEN ZITTEN!", + "MAN, DAT SCHREEUWT.", + "IK ZEI TOCH DAT WE HIER NIET HADDEN MOETEN KOMEN, EN JE HEBT GELUISTERD?", + "WAT?", + "WAAAAAAAAAHHHHHH!!", + "OKE OKE. MET MIJ GAAT HET GOED, MET MIJ GAAT HET...", + "WAAAAAAAAAHHHHHH!!" ], "warrior-introduction": [ - "OHH... MY ACHING HEAD.", - "I DOUBT THAT'S ONE OF YOUR VITAL ORGANS!", - "WALK IT OFF, TOUGH GUY!", - "OH, SURE, I WAS TOUGH ONCE.", - "MAYBE EVEN THE TOUGHEST OF THEM ALL.", - "I SINGLE-HANDEDLY DEFENDED THIS VILLAGE FROM THOSE HORRID CREATURES FOR ALMOST A YEAR!", - "THEN THAT HORRIBLE MONSTER ARRIVED AND COMMENCED THE BOULDER BOMBARDMENT.", - "SO, FULL OF VALOR, ARMOR SHINING IN THE SUN...", - "I CLIMBED THE HILL TO TAKE HIM ON...!", - "BUT HE POUNDED ME LIKE ONE TENDERIZES A YAKOW STEAK.", - "HAVE YOU TRIED ATTACKING HIM WITH YOUR MELODRAMA?", - "'CAUSE IT'S KILLIN' ME!", - "AFTER MY LAST STUNNING FAILURE,", + "OHH... MIJN PIJNE HOOFD.", + "IK BETWIJFEL OF DAT EEN VAN JE BELANGRIJKSTE ORGANEN IS!", + "LOOP HET UIT, STOERE KEREL!", + "OH, NATUURLIJK, IK WAS EEN KEER STOER.", + "MISSCHIEN ZELFS DE STERKSTE VAN ALLEN.", + "IK HEB IN MIJN EIGEN HAND DIT DORP BIJNA EEN JAAR GEDURENDE HET VEILIGE TIJDPERK VERDEDIGEN TEGEN DIE AFGRIJSELIJKE WEZENS!", + "TOEN ARRIVEERDE DAT VERSCHRIKKELIJKE MONSTER EN BEGON MET HET BOMBARDEMENT VAN DE ROTSBLOKKEN.", + "DUS VOL MOED, PANTSER SCHIJNEND IN DE ZON...", + "IK BEKLIMDE DE HEUVEL OM HET OP TE NEMEN MET HEM...!", + "MAAR HIJ SLOEG ME ALSOF IEMAND EEN YAKOW-BIEFSTUK MALS MAAKT.", + "HEB JE GEPROBEERD HEM AAN TE VALLEN MET JE MELODRAMA?", + "OMDAT HET MIJ DOODT!", + "NA MIJN LAATSTE VERBLUFFENDE MISLUKKING,", "HIJ SLOOT DE DOORGANG NAAR ZIJN SLAAPPLAATS AF MET EEN ROTSBLOK VAN 30 TON,", - "LEAVING NO WAY FOR ANYONE TO CHALLENGE HIM AGAIN.", + "ZODAT NIEMAND HEM NOG EEN KANS KON UITDAGEN.", "DUS BEDACHT ONZE WIJZE, EEN MEESTER IN BLAUWE ECO EN EEN MECHANISCH GENIE, EEN MACHINE", - "CAPABLE OF LIFTING THE BOULDER OUT OF THE WAY...!", - "BUT ALAS, HE DISAPPEARED BEFORE WE HAD A CHANCE TO TURN IT ON.", + "KAN HET STEEN UIT DE WEG OPHEFFEN...!", + "MAAR HELAAS, HIJ VERDWEEN VOORDAT WE DE KANS HADDEN OM HEM AAN TE ZETTEN.", "EN HIJ NAM AL ZIJN ENERGIECELLEN MEE.", - "AT LEAST I WAS ABLE TO PULL ENOUGH PONTOONS OUT OF OUR BRIDGE TO PREVENT", - "THAT MONSTER FROM COMING DOWN HERE TO DO ME HARM.", - "YEAH, GOOD, GOOD JOB, TOUGH GUY. BUT, UM...", - "WE'RE GONNA NEED YOU TO, UH... PUT 'EM BACK, AND STUFF.", - "OH, SURE! AND SEAL MY DOOM?", - "(SIGHS)", - "ALRIGHT. FINE.", - "BRING ME 90 PRECURSOR ORBS AND I'LL LET THE PONTOONS LOOSE.", - "BUT I'M NOT GOING TO FIGHT THAT MONSTER AGAIN!" + "IK KON TENMINSTE GENOEG PONTONS UIT ONZE BRUG TREKKEN OM TE VOORKOMEN", + "DAT MONSTER HIER NAAR BENEDEN KOMT OM MIJ KWETSEN TE DOEN.", + "JA, GOED, GOEDE BAAN, STOERE KEREL. MAAR, EHM...", + "WE HEBBEN JE NODIG OM, UH... ZE TERUG TE PLAATSEN, EN ZO.", + "OH ZEKER! EN MIJN DOOM VERZEGELEN?", + "(ZUCHT)", + "AKKOORD. PRIMA.", + "BRENG ME 90 VOORLOPIGE ORBS EN IK LAAT DE PONTONNEN LOS.", + "MAAR IK GA NIET NOG EEN KEER TEGEN DAT MONSTER VECHTEN!" ], "warrior-reminder-1": [ - "TAKE ALL THE TIME YOU WANT BRINGING ME THE PRECURSOR ORBS", - "I'M NOT LOOKING TO FIX THE PONTOON BRIDGE ANY TIME SOON." + "NEEM ALLE TIJD DIE JE WILT OM MIJ DE VOORLOPER-ORBS TE BRENGEN", + "IK BEN NIET VAN PLAN DE PONTONBRUG BINNENKORT TE REPAREREN." ], "warrior-resolution": [ "OH.", - "WONDERFUL.", - "YA BROUGHT ME THE PRECURSOR ORBS.", - "ALL RIGHT.", - "I'LL FIX THE BRIDGE.", - "BUT DON'T ASK ME TO GET INVOLVED WITH THAT CREATURE AGAIN!" + "PRACHTIG.", + "JE HEBT ME DE VOORLOPER-ORBS GEBRACHT.", + "OKE.", + "IK REPAREER DE BRUG.", + "MAAR VRAAG MIJ NIET OM WEER BETROKKEN TE RAKEN BIJ DAT WEZEN!" ], "yellowsage-resolution": [ - "WHO WOULDA THOUGHT I'D LIVE TO SEE THE DAY", - "WHEN I NEEDED TO BE RESCUED BY A BOY AND HIS MUSKRAT!", - "AHH... I'M GONNA GIVE GOL AND MAIA", - "A LITTLE PAYBACK FOR THIS EMBARRASSMENT!", - "THEN WE'LL SEE ABOUT COOKING UP SOME MUSKRAT STEW...", - "(GULPS)" + "WIE DACHT DAT IK DE DAG ZOU LEVEN", + "TOEN IK GERED MOEST WORDEN DOOR EEN JONGEN EN ZIJN MUSKRAAT!", + "AHH... IK GAAT GOL EN MAIA", + "EEN KLEINE TERUGBETALING VOOR DEZE VERGELIJKING!", + "DAN ZULLEN WE ZIEN OVER HET KOKEN VAN MUSKRAT STOOFHOOFD...", + "(GULPEN)" ] }, "hints": { @@ -1066,78 +1066,78 @@ "WE HEBBEN ENERGIECELLEN NODIG VOOR HET HITTESCHILD..." ], "ASSTLP04": [ - "WHERE'S MY SPANNER?" + "WAAR IS MIJN SPANNER?" ], "ASSTLP05": [ - "FIRE CANYON IS SO HOT..." + "BRAND CANYON IS ZO HEET..." ], "ASSTLP23": [ - "NOW, HOW DID HE GET THAT LEVITATOR TO WORK?" + "HOE HEEFT HIJ DIE LEVITATOR AAN DE WERKING GEKREGEN?" ], "ASSTLP24": [ "NU, ZELFS MET ENERGIECELLEN,", - "WILL WE HAVE ENOUGH POWER?" + "ZULLEN WE GENOEG KRACHT HEBBEN?" ], "ASSTLP30": [ - "HM, LET'S SEE..." + "HM, LATEN WE EENS KIJKEN..." ], "ASSTLP31": [ "HM." ], "ASSTLP32": [ - "OH, MY..." + "OH MIJN..." ], "ASSTLP33": [ "AH-HA!" ], "ASSTLP34": [ - "HUH... WHAT ARE GOL AND MAIA UP TO?" + "HUH... WAT ZIJN GOL EN MAIA VAN PLAN?" ], "ASSTLP35": [ - "HMM... WE'VE GOTTA GET TO PRECURSOR CITY." + "HMM... WE MOETEN NAAR PRECURSOR CITY GAAN." ], "ASSTLP36": [ - "HUH. THE HEAT SHIELD'S GOING TO NEED EVEN MORE POWER", - "TO WITHSTAND THE LAVA." + "HUH. HET HITTESCHILD HEEFT NOG MEER KRACHT NODIG", + "OM DE LAVA TE WEERSTAAN." ], "ASSTLP37": [ "AW... WE MOETEN DE ANDERE WIJZEN REDDEN..." ], "BIL-AM01": [ - "I JUST LOVE THE MUD." + "IK HOU GEWOON VAN DE MODDER." ], "BIL-AM02": [ - "DARN SWAMP RATS." + "VERDOMME MOERARATEN." ], "BIL-AM03": [ - "I NEED A GOOD DRAUGHT OF MAMA'S MEDICINE." + "IK HEB EEN GOED ONTWERP VAN MAMA'S MEDICIJN NODIG." ], "BIL-AM04": [ "GLADIOLA." ], "BIL-AM05": [ - "I NEED ME SOME BROWN MEDICINE." + "IK HEB EEN BRUINE MEDICIJN NODIG." ], "BIL-AM06": [ - "I NEED ME SOME SUMMER COOLANT." + "IK HEB WAT ZOMERKOELVLOEISTOF NODIG." ], "BIL-AM07": [ - "DARN, THIS HEAT'S GIVIN' ME THE PRICKLIES." + "VERDOMME, VAN DEZE HITTE WORD IK HELEMAAL STEKELIG." ], "BIL-AM08": [ - "DARN... THIS HEAT'S GIVIN' ME A RASH." + "DARN... DEZE HITTE GEEFT ME RASH." ], "BIL-AM1A": [ - "MM-MM! I JUST LOVE THE MUD!" + "MM-MM! IK HOU VAN DE MODDER!" ], "BIL-AM2A": [ - "DARN SWAMP RATS!" + "DARN MOERARATEN!" ], "BIL-AM2B": [ - "DARN SWAMP RATS!" + "DARN MOERARATEN!" ], "BIL-LO01": [ - "FARTHY!" + "FARTHIJ!" ], "BIL-LO02": [ "SOIEE-SOIEE-SOIEE-SOIEE-SOIEE!" @@ -1146,780 +1146,780 @@ "SOIEE-SOIEE-SOIEE!" ], "BIL-LO1A": [ - "FARTHY!" + "FARTHIJ!" ], "BIL-LO2A": [ "SOIEE-SOIEE-SOIEE!" ], "BIL-LO2B": [ - "SOIEE! SOIEE!" + "SOJA! SOJA!" ], "BIL-TA01": [ - "GET 'EM!" + "PAK ZE!" ], "BIL-TA02": [ - "NICE SHOT!" + "MOOI SCHOT!" ], "BIL-TA03": [ - "OVER THAR!" + "OVER DAAR!" ], "BIL-TA04": [ "AW, DANG." ], "BIL-TA05": [ - "RAT GOT A SNACK." + "RAT HEEFT EEN SNACK." ], "BIL-TA06": [ - "AND ANOTHER..." + "EN EEN ANDER..." ], "BIL-TA07": [ - "THERE'S ONLY ONE LEFT..." + "ER IS ER NOG MAAR ÉÉN..." ], "BIL-TA08": [ - "GOT 'EM." + "HEBBES." ], "BIL-TA09": [ - "YEEHAW!" + "JAAAAA!" ], "BIL-TA1A": [ - "GET 'EM!" + "PAK ZE!" ], "BIL-TA2A": [ - "NICE SHOT!" + "MOOI SCHOT!" ], "BIL-TA3A": [ - "OVER THAR." + "OVER DAAR." ], "BIL-TA4A": [ "DANG!" ], "BIL-TA4B": [ - "DANG!" + "VERDOMME!" ], "BIL-TA5A": [ - "RAT GOT A SNACK!" + "RAT HEEFT EEN SNACK!" ], "BIR-AM01": [ - "ARE YOU NEAR THE EGG YET?" + "BEN JIJ NOG IN DE BUURT VAN HET EI?" ], "BIR-AM02": [ - "THAT'S IT, JUST A LITTLE FURTHER!" + "DAT IS HET, NOG EEN KLEIN VERDER!" ], "BIR-AM03": [ - "OH, GOOD, NOW PUSH IT. OH, GENTLY NOW!" + "OH, GOED, DRUK HET NU. OH, NU VOORZICHTIG!" ], "BIR-AM04": [ - "OH, MY, THAT WASN'T GENTLE!" + "OH, MIJN, DAT WAS NIET ZACHTAARDIG!" ], "BIR-AM05": [ - "COME ON, PUSH THE EGG OFF THE CLIFF!" + "KOM OP, DUW HET EI VAN DE KLIP!" ], "BIR-AM06": [ "OHH!" ], "BIR-AM07": [ - "OH, HERE, BIRDIE BIRDIE. HERE, BIRDIE BIRDIE." + "OH, HIER, VOGEL VOGEL. HIER, VOGELVOGEL." ], "BIR-AM08": [ - "HERE, BIRDIE BIRDIE." + "HIER, VOGELVOGEL." ], "BIR-AM09": [ - "BE CAREFUL, IT DOESN'T LOOK SAFE UP THERE!" + "WEES VOORZICHTIG, HET ZIET DAAR BOVEN NIET VEILIG UIT!" ], "BIR-AM10": [ - "CAREFUL, EASY DOES IT!" + "VOORZICHTIG, GEMAKKELIJK DOET HET!" ], "BIR-AM11": [ - "GOOD JOB! NOW MEET ME DOWN HERE BY THE EGG." + "GOED GEDAAN! ONTMOET ME NU HIER BIJ HET EI." ], "BIR-AM12": [ - "YOU MUST BE A TRUE ANIMAL LOVER!" + "JE MOET EEN ECHTE DIERENLOVER ZIJN!" ], "BIR-AM13": [ - "DO YOU SEE ANY OTHER BIRDS UP THERE?" + "ZIE JE DAAR NOG ANDERE VOGELS?" ], "BIR-LO01": [ - "(KISS) (WHISTLE)" + "(KUS) (FLUIT)" ], "BIR-LO02": [ - "OH MY, THAT'S A PRETTY ONE." + "OH MIJN, DAT IS EEN MOOIE." ], "BIR-LO03": [ - "OH LOOK, A MUCKY-MUCK." + "OH KIJK, EEN MUCKY-MUCK." ], "BIR-am08": [ - "HERE, BIRDIE BIRDIE..." + "HIER, VOGEL VOGEL..." ], "BLU-AM01": [ - "A LITTLE BIT OF HELP WOULD BE GOOD!" + "EEN KLEIN BEETJE HULP ZOU GOED ZIJN!" ], "BLU-AM02": [ - "OH, THIS IS A FINE MESS." + "O, DIT IS EEN FIJNE PUINHOOP." ], "BLU-AM03": [ - "HMM, QUITE AN ENIGMA WE'RE FACING." + "HMM, HET IS EEN ENIG ENIGMA WAAR WE VOOR ZIJN." ], "CHI-AM01": [ - "THIS IS A CATASTROPHE. A CATASTROPHE I SAY!" + "DIT IS EEN CATASTROF. EEN CATASTROF ZEG IK!" ], "CHI-AM02": [ - "THEY WANT ME TO GO INTO THE JUNGLE - ME! HO HO OH...", - "I'D SOONER WRESTLE AN ENRAGED FLUT-FLUT." + "ZE WILLEN DAT IK DE JUNGLE IN GA - IK! HO HO OH...", + "IK ZOU EERDER EEN WOEDENDE FLUIT-FLUT WORSTELEN." ], "CHI-AM03": [ - "F-FIRST THE FISHERMAN'S BOAT IS...", - "IT'S ATTACKED BY A MONSTER...", - "AND NOW, NOW THIS...", - "WHAT ELSE COULD GO WRONG?" + "F-EERST IS DE VISSERSBOOT...", + "HET WORDT AANGEVAL DOOR EEN MONSTER...", + "EN NU, NU DIT...", + "WAT KAN ER NOG MEER MISGAAN?" ], "CHI-AM04": [ - "I DON'T... I'D, I'D... OOH, MAYBE I SHOULD RAISE TAXES...", - "TO PAY FOR THIS MESS." + "IK NIET... IK WIL, IK WIL... OOH, MISSCHIEN MOET IK DE BELASTINGEN VERHOGEN...", + "OM VOOR DEZE PUINHOOP TE BETALEN." ], "CHI-AM05": [ - "PROBLEMS... PROBLEMS... PROBLEMS!" + "PROBLEMEN... PROBLEMEN... PROBLEMEN!" ], "CHI-AM06": [ - "(SOBS) I'LL NEVER GET RE-ELECTED NOW..." + "(SOBS) IK ZAL NU NOOIT HERKOZEN WORDEN..." ], "CHI-AM07": [ - "(MOANS) WHAT'S HAPPENED TO THE VILLAGE'S ENERGY BEAM?" + "(KREUNT) WAT IS ER GEBEURD MET DE ENERGIESTRAAL VAN HET DORP?" ], "CHI-AM08": [ - "I... THEY, I DON'T... (MUTTERS)" + "IK... ZIJ, IK NIET... (MOMPELT)" ], "CHI-LO01": [ - "...WINDMILL, MONSTERS, POWER, RE-ELECTION..." + "...WINDMOLEN, MONSTERS, KRACHT, HERVERKIEZING..." ], "CHI-LO02": [ - "...THE POLLS, I... MONSTERS, HM... RE-ELECTION, OH..." + "...DE POLLS, IK... MONSTERS, HM... HERVERKIEZING, OH..." ], "EXP-AM01": [ - "I NEED TO SET OFF ON MY JOURNEY SOON.", - "I NEED PRECURSOR ORBS!" + "IK MOET BINNENKORT OP REIS VERTREKKEN.", + "IK HEB VOORLOPER-ORBS NODIG!" ], "EXP-AM02": [ - "LET'S SEE, NOW WHERE SHALL I GO FIRST? EH..." + "EENS EENS ZIEN, WAAR MOET IK NU EERST GAAN? EH..." ], "EXP-AM03": [ - "OH I DO MISS THE OPEN ROAD." + "OH IK MIS DE OPEN WEG." ], "EXP-AM04": [ - "SO MANY PLACES TO SEE, AND SO LITTLE TIME." + "ZO VEEL PLAATSEN OM TE ZIEN, EN ZO WEINIG TIJD." ], "EXP-AM05": [ - "WELL IN MY DAY, YOU COULD WALK THE LANDS", - "WITHOUT BEING ASSAULTED BY MONSTERS!" + "IN MIJN TIJD KON JE DOOR DE LANDEN LOPEN", + "ZONDER TE WORDEN AANGEVAL DOOR MONSTERS!" ], "EXP-LO02": [ - "I NEED MORE PRECURSOR ORBS." + "IK HEB MEER VOORLOPER-ORBS NODIG." ], "EXP-LO1A": [ - "(MUTTERS)" + "(MOMMEL)" ], "FAR-AM01": [ - "(SNORES) HERE, BESSIE... HERE, BESSIE BESSIE...", - "THAT'S A GOOD GIRL..." + "(SNURKT) HIER, BESSIE... HIER, BESSIE BESSIE...", + "DAT IS EEN GOED MEISJE..." ], "FAR-AM02": [ - "GOTTA BRING IN THE CROPS 'FORE THE JUNE BUGS..." + "IK MOET DE GEWASSEN BINNENBRENGEN VÓÓR DE JUNI-INSECTEN..." ], "FAR-AM2A": [ - "GOTTA BRING IN THE CROPS 'FORE THE JUNE BUGS GET..." + "IK MOET DE GEWASSEN BINNENBRENGEN VOORDAT DE INSECTEN IN JUNI KOMEN..." ], "FAR-LO01": [ - "(SNORES)" + "(SNURT)" ], "FAR-LO1A": [ - "(SNORES)" + "(SNURT)" ], "FIS-AM01": [ - "GRR, THESE DARN FISH...", - "I NEVER CATCH ME A SINGLE ONE." + "GRR, DEZE VERDOMDE VISSEN...", + "IK VANG ER NOOIT ÉÉN." ], "FIS-AM02": [ - "THEM MONSTERS THAT DONE BIT ME SHIP", - "WILL DRIVE ME BROKE." + "DIE MONSTERS DIE ME SCHIP BETEN", + "ZAL ME BRAK MAKEN." ], "FIS-AM03": [ - "DRAT, THESE BLIGHTERS!", - "IN ME BASKET, DARN FISHIES, COME ON YEAH...", - "HEH HE HE HE HE..." + "DRAT, DEZE BLIGHTERS!", + "IN MIJ MAND, DARN FISHIES, KOM OP JA...", + "HEE HIJ HIJ HIJ..." ], "FIS-AM04": [ - "OH I LOVE THE SMELL OF FISH IN THE MORNIN'." + "OH, IK HOU VAN DE GEUR VAN VIS IN DE OCHTEND." ], "FIS-AM05": [ - "OOH I COULD USE ME A SALTED FISH LIPS ON RYE." + "OOH IK ZOU WEL EEN GEZOUTEN VISLIP OP ROGGE KUNNEN GEBRUIKEN." ], "FIS-AM06": [ - "I 'MEMBER THE BIG ONE THAT GOT AWAY..." + "IK BEN LID VAN DE GROTE DIE WEGKWAM..." ], "FIS-LO01": [ "GRR!" ], "FIS-LO03": [ - "HA HA HA HA HA HAH!" + "HA HA HA HA HA HA!" ], "FIS-LO04": [ - "DARN FISH... THEY NEVER GET IN ME NET!" + "DARN VIS... ZE KOMEN NOOIT IN MIJ NET!" ], "FIS-LO05": [ - "HA HA HA AH HA HA HA HAH!" + "HA HA HA HA HA HA HA!" ], "FIS-TA01": [ - "TO THE LEFT!" + "NAAR LINKS!" ], "FIS-TA02": [ - "RIGHT WITH YA!" + "JUIST MET JE!" ], "FIS-TA03": [ - "HERE COMES A BIG ONE!" + "HIER KOMT EEN GROTE!" ], "FIS-TA04": [ - "YE MISSED A JUMBO, LADDIE!" + "JE HEBT EEN JUMBO GEMIST, LADDIE!" ], "FIS-TA05": [ - "DON'T MISS ONE LIKE THAT AGAIN!" + "MIS ZO ZO NIET MEER!" ], "FIS-TA06": [ - "STEADY BOY." + "STABIELE JONGEN." ], "FIS-TA07": [ - "YOUR SAILS ARE SAGGING IN THE WIND, BOY." + "JE ZEILEN ZWAGEN DOOR DE WIND, JONGEN." ], "FIS-TA08": [ - "MISSED." + "GEMIST." ], "FIS-TA09": [ - "LOOKS LIKE YOU COULD USE A BIGGER NET..." + "HET LIJKT EROP DAT JE EEN GROTER NET KUNT GEBRUIKEN..." ], "FIS-TA10": [ - "MISSED AGAIN!" + "WEER GEMIST!" ], "FIS-TA11": [ - "HOLD STEADY! YOU'RE ALMOST THERE..." + "BLIJF RUSTIG! JE BENT ER BIJNA..." ], "FIS-TA1A": [ - "LEFT!" + "LINKS!" ], "FIS-TA2A": [ - "RIGHT!" + "RECHTS!" ], "GAM-AM01": [ - "HEY, TWENTY-TO-ONE ODDS AIN'T SO BAD!" + "HÉ, EEN KANS VAN TWINTIG OP ÉÉN IS NIET ZO SLECHT!" ], "GAM-AM02": [ - "NO, IT WAS A SURE THING!" + "NEE, HET WAS ZEKER!" ], "GAM-AM03": [ - "HEH HEH HEH... I'M GONNA HIT THE JACKPOT NEXT TIME!" + "HEH HEH HEH... IK GA DE VOLGENDE KEER DE JACKPOT!" ], "GAM-AM04": [ - "HEH! IF I HAD AN ORB FOR EVERY MISSED OPPORTUNITY...!" + "HÉ! ALS IK EEN ORB HAD VOOR ELKE GEMIST KANS...!" ], "GAM-AM05": [ - "HEY! BARRELS COULD COME BACK IN STYLE!" + "HOI! VATTEN KUNNEN TERUGKOMEN IN STIJL!" ], "GAM-AM06": [ - "OH... I NEED A LUCKY BREAK." + "OH... IK HEB EEN GELUKSPAAR NODIG." ], "GAM-AM07": [ - "AW, WHAT ARE THE ODDS OF MOVIN' TO A TOWN UNDER ATTACK?" + "AW, WAT ZIJN DE KANSEN OM NAAR EEN STAD TE VERHUIZEN DIE WORDT AANGEVALLEN?" ], "GAM-AM08": [ - "I THOUGHT I HAD A GOOD TIP!" + "IK DACHT DAT IK EEN GOEDE TIP HAD!" ], "GAM-AM09": [ - "ANOTHER DAY, ANOTHER WAGER." + "NOG EEN DAG, NOG EEN WEDDING." ], "GAM-AM10": [ - "I BET NO ONE CAN TAKE ON THAT MONSTER." + "IK WED DAT NIEMAND DAT MONSTER AANKAN." ], "GAM-AM11": [ - "HUH-HUH... I SHOULD CASH OUT AND MOVE ON." + "HUH-HUH... IK MOET UITBETALEN EN VERDER GAAN." ], "GAM-AM12": [ - "EH, SOMETIMES YOU JUST CAN'T WIN." + "EH, SOMS KUN JE GEWOON NIET WINNEN." ], "GAM-AM13": [ - "HEY, WHAT ARE YOU LAUGHIN' AT? DO I AMUSE YOU?" + "HÉ, WAAR LACH JE OM? AMUSE IK U?" ], "GEO-AM01": [ - "MM, INTERESTING STRATA..." + "MM, INTERESSANTE STRATA..." ], "GEO-AM02": [ - "POOR LITTLE MOLES..." + "ARME MOLLETJES..." ], "GEO-AM03": [ - "INTERESTING..." + "INTERESSANT..." ], "GEO-AM04": [ - "GOOD LUCK, BOYS!" + "VEEL SUCCES, JONGENS!" ], "GEO-AM05": [ - "NASTY LURKERS..." + "SLECHTE LUIKERAARS..." ], "GEO-AM06": [ - "ROCKS HAVE FEELINGS, TOO..." + "ROTSEN HEBBEN OOK GEVOELENS..." ], "GEO-AM07": [ - "HANG IN THERE, LITTLE ONES..." + "HOUD VOL, KLEINTJES..." ], "GEO-AM08": [ - "NOW I CAN GET BACK TO MY RESEARCH!" + "NU KAN IK TERUG NAAR MIJN ONDERZOEK!" ], "GEO-LO01": [ - "I'VE GOT TO GET BACK TO MY RESEARCH." + "IK MOET TERUGGAAN NAAR MIJN ONDERZOEK." ], "GEO-LO02": [ - "HM, THIS STONE IS VERY OLD..." + "HM, DEZE STEEN IS HEEL OUD..." ], "GOL-AM01": [ - "YOU JUST WON'T GIVE UP, WILL YOU?" + "JE GEEFT GEWOON NIET OP, TOCH?" ], "GOL-AM02": [ - "SOON, THE DARK ECO WILL BE OURS!" + "BINNENKORT ZAL DE DONKERE ECO VAN ONS ZIJN!" ], "GOL-AM03": [ - "FINISH THEM!" + "MAAK ZE AF!" ], "GOL-AM04": [ - "FIRE!" + "VUUR!" ], "GOL-AM05": [ - "BLAST THEM!" + "BLAST ZE!" ], "GOL-AM06": [ - "WHAT? THEM AGAIN!" + "WAT? ZIJ WEER!" ], "GOL-AM07": [ - "IT'S TOO LATE!" + "HET IS TE LAAT!" ], "GOL-AM08": [ - "YOU ARE MINE!" + "JIJ BENT VAN MIJ!" ], "GOL-AM09": [ - "I HAVE YOU NOW!" + "IK HEB JE NU!" ], "GOL-AM10": [ - "AH HA HA HA HA!" + "HA HA HA HA HA!" ], "GOL-AM11": [ - "NO MERCY!" + "GEEN GENADE!" ], "GOL-AM12": [ - "TAKE THAT!" + "NEEM DAT!" ], "GOL-AM13": [ - "NICE TRY!" + "GOED GEPROBEERD!" ], "GOL-AM14": [ - "STAND STILL!" + "BLIJF STAAN!" ], "GOL-AM15": [ - "PATHETIC!" + "ELLENDIG!" ], "GOL-AM16": [ - "NOOO!" + "NEE!" ], "GOL-AM17": [ "AHHH!" ], "GOL-AM18": [ - "WE'LL OPEN THE SILO ALL THE WAY AND DESTROY YOU TWO!" + "WIJ GAAN DE SILO HELEMAAL OPENEN EN JULLIE TWEE VERNIETIGEN!" ], "GOL-AM19": [ - "LIGHT ECO! IT DOES EXIST!" + "LICHT ECO! HET BESTAAT WEL!" ], "GOL-AM20": [ - "WE'RE NOT GONNA TAKE IT!" + "WIJ GAAN HET NIET AANNEMEN!" ], "MAI-AM01": [ - "FINISH THEM BOTH OFF ONCE AND FOR ALL!" + "MAAK ZE BEIDE VOOR EENS EN VOOR ALTIJD AF!" ], "MAI-AM02": [ - "TAKE THEM OUT!" + "HAAL ZE ERUIT!" ], "MAI-AM03": [ "HA HA HA!" ], "MAI-AM04": [ - "ECO WON'T PROTECT YOU NOW!" + "ECO BESCHERMT U NU NIET!" ], "MAI-AM05": [ - "DO SOMETHING!" + "DOE IETS!" ], "MAI-AM06": [ "AGH!" ], "MAI-AM07": [ - "NOOOOO!" + "NEEOOOO!" ], "MAI-AM08": [ - "WE'LL OPEN THE SILO ALL THE WAY AND DESTROY YOU TWO!" + "WIJ OPENEN DE SILO HELEMAAL EN VERNIETIGEN JULLIE TWEE!" ], "MAI-AM09": [ - "THEY MUST NOT BE ALLOWED TO GET IT!" + "ZE MOGEN HET NIET KRIJGEN!" ], "MIN-LO01": [ - "ONE OF THESE DAYS I'LL BE RICH...", - "YOU MEAN WE'LL BE RICH!", - "YEAH. WHATEVER." + "EEN VAN DEZE DAGEN ZAL IK RIJK ZIJN...", + "JE BEDOELT DAT WE RIJK ZULLEN ZIJN!", + "JA. WAT DAN OOK." ], "MIN-LO03": [ - "DIG, WILLARD! DIG!", - "YEAH, BUT YOU'RE NOT DIGGING!", - "THAT'S 'CAUSE I'M DOIN' THE THINKIN'!" + "GRAF, WILLARD! GRAVEN!", + "JA, MAAR JE GRAAFT NIET!", + "DAT IS OMDAT IK AAN HET DENKEN BEN!" ], "MIN-LO04": [ - "DUH, GORDY? CAN I TAKE A BREAK?", - "OH, I'LL BREAK SOMETHIN' ALRIGHT. NOW DIG!" + "DUH, GORDY? KAN IK EEN PAUZE NEMEN?", + "OH, IK ZAL IETS BREKEN. GRAAG NU!" ], "MIN-LO05": [ - "I'M STARVING, GORDY!", - "EAT YOUR BIRD!" + "IK HEB HONGER, GORDY!", + "EET JE VOGEL!" ], "MIN-LO06": [ - "DUH, GORDY? I NEED A SHARPER PICK.", - "WHAT YOU NEED IS A SHARPER WIT!" + "DUH, GORDY? IK HEB EEN SCHERPERE KEUZE NODIG.", + "WAT JE NODIG HEBT IS EEN SCHERPER VERSTAND!" ], "MSH-AM01": [ - "WAH-HA-HA-HA-HA! I'M GONNA BE RICH!" + "WAH-HA-HA-HA-HA! IK GA RIJK WORDEN!" ], "MSH-AM02": [ - "DIG, DIG, DIG!" + "JIJ JIJ JIJ!" ], "MSH-AM03": [ - "WILLARD! WORK HARDER, NOT SMARTER!" + "WILLARD! WERK HARDER, NIET SLIMMER!" ], "MSH-AM04": [ - "AH-HAH, I'LL BE THE RICHEST MAN IN THE WORLD! AH HA HA..." + "AH-HAH, IK WORD DE RIJKSTE MAN TER WERELD! AH HA HA..." ], "MSH-AM05": [ - "OH HO HO! NOBODY'S EVEN SEEN A GEM THIS SIZE! AH HA HA!" + "OH HO HO! NIEMAND HEEFT ZELFS EEN GEM VAN DEZE GROOT GEZIEN! AH HA HA!" ], "MSH-AM06": [ - "EASY STREET, HERE I COME!" + "GEMAKKELIJKE STRAAT, HIER KOM IK!" ], "MSH-AM07": [ - "MY GEMS! ALL MY GEMS!" + "MIJN GEMEN! AL MIJN GEMEN!" ], "MSH-AM08": [], "MSH-AM09": [ - "(CHUCKLING) I CAN'T WAIT TO CASH THIS BABY IN!" + "(CHUCKLEND) IK KAN NIET WACHTEN OM DEZE BABY TE VERZILVEREN!" ], "MSH-AM10": [ - "THIS LOOKS LIKE A RARE CRYSTITE ZLARCONIA! OH-HO-HO!" + "DIT LIJKT OP EEN ZELDZAME KRISTIET ZLARCONIA! OH-HO-HO!" ], "MSH-AM11": [ - "NOW WAIT A MINUTE! THEY'RE ALL MINE! MINE, I TELL YA!" + "WACHT NU EEN MINUUT! ZE ZIJN ALLEMAAL VAN MIJ! DE MIJNE, IK VERTEL HET JE!" ], "MSH-AM12": [ - "SO, WILLARD. WHAT ARE YOU GONNA DO WITH", - "YOUR QUARTER, OF YOUR HALF?" + "DUS WILLARD. WAT GA JE ERMEE DOEN", + "UW KWARTAAL, VAN UW HELFT?" ], "MSH-AM1A": [ - "I'M GONNA BE RICH!" + "IK GA RIJK WORDEN!" ], "MSH-AM2A": [ - "DIG, DIG, DIG!" + "JIJ JIJ JIJ!" ], "MSH-AM3A": [ - "WORK HARDER, NOT SMARTER!" + "WERK HARDER, NIET SLIMMER!" ], "MTA-AM01": [ - "DUH, ARE WE ALMOST DONE?" + "DUH, ZIJN WE BIJNA KLAAR?" ], "MTA-AM02": [ - "GEE, CAN WE TAKE A BREAK?" + "GEE, KUNNEN WE EEN PAUZE NEMEN?" ], "MTA-AM03": [ - "AWW, I'M HUNGRY..." + "AWW, IK HEB HONGER..." ], "MTA-AM04": [ - "DUH... I THINK BIRDIE'S CAGE NEEDS CLEANING..." + "DUH... IK DENK DAT DE VOGELKOOI SCHOONGEMAAKT MOET WORDEN..." ], "MTA-AM05": [ - "GEE, THAT'S AN AWFULLY BIG GEM!" + "GOH, DAT IS EEN VRESELIJK GROOT JUWEELTJE!" ], "MTA-AM06": [ - "DUH... I ALWAYS WANTED TO BE A LUMBERJACK..." + "DUH... IK WIL ALTIJD HOUTHAAK WORDEN..." ], "MTA-AM07": [ - "DUH, GORDY PROMISED TO GIVE ME HALF OF WHATEVER I COULD CARRY!" + "DUH, GORDY BELOOFDE MIJ DE HELFT TE GEVEN VAN WAT IK KON DRAGEN!" ], "MTA-AM08": [ - "EH HEH... BIRDIE IS MY BEST FRIEND..." + "EH HEH... BIRDIE IS MIJN BESTE VRIEND..." ], "MTA-AM09": [ - "I LOVE MY LITTLE BIRDIE..." + "IK HOU VAN MIJN KLEINE VOGELTJE..." ], "RED-AM01": [ - "IS ANYBODY THERE?" + "IS DAAR IEMAND?" ], "RED-AM02": [ - "WELL..." + "GOED..." ], "RED-AM03": [ - "WHAT KEPT YOU?" + "WAT HIELD JE OP?" ], "SAGELP03": [ - "THESE TWO COULDN'T UNBLOCK THEIR EARS..." + "DEZE TWEE KONDEN HUN OREN NIET DEBLOKKEREN..." ], "SAGELP04": [ - "HE'LL JUST NEVER BE LIKE HIS UNCLE...", - "I DON'T CARE WHAT THE OTHERS SAY." + "HIJ ZAL NOOIT ZO ZIJN ALS ZIJN OOM...", + "HET MAAKT MIJ NIET UIT WAT DE ANDEREN ZEGGEN." ], "SAGELP05": [ "HALLO, BLAUWE WIJZE? HALLO?", - "WHERE IN THE BLUE BLAZES COULD HE BE..." + "WAAR IN GODSNAAM ZOU HIJ ZIJN..." ], "SAGELP06": [ - "MY, MY, MY..." + "MIJN MIJN MIJN..." ], "SAGELP11": [ - "ANYONE? ANYONE AT ALL? COME IN?" + "IEDEREEN? HELEMAAL IEDEREEN? KOM BINNEN?" ], "SAGELP20": [ "HMM..." ], "SAGELP21": [ - "THE LURKERS MUST BE STOPPED." + "DE LURKERS MOETEN WORDEN GESTOPT." ], "SAGELP22": [ - "I SEE..." + "IK ZIE..." ], "SAGELP23": [ - "NO..." + "NEE..." ], "SAGELP24": [ - "WHAT COULD HAVE HAPPENED TO THEM?" + "WAT KAN ER MET HEN GEBEUREN?" ], "SAGELP31": [ - "THIS ISN'T GOOD." + "DIT IS NIET GOED." ], "SAGELP32": [ - "DARK ECO CRYSTALS?" + "DONKERE ECOKRISTALLEN?" ], "SAGELP33": [ - "MAIA AND GOL HAVE GOTTEN IN OVER THEIR HEADS!" + "MAIA EN GOL ZIJN ER NIET OVER UITGEKOMEN!" ], "SAGELP34": [ - "HNG, DARK ECO'S POWERS CANNOT BE CONTROLLED!" + "HNG, DE KRACHTEN VAN DARK ECO KUNNEN NIET WORDEN GECONTROLEERD!" ], "SAGELP35": [ - "DARK ECO IN THE GLACIERS?" + "DONKER ECO IN DE GLETSJERS?" ], "SAGELP36": [ - "AH! THERE'S LURKER TROOPS IN THE MOUNTAINS!" + "AH! ER ZIJN LURKER TROEPEN IN DE BERGEN!" ], "SAGELP37": [ - "WHAT IS GOL PLANNING..." + "WAT IS GOL-PLANNING..." ], "SAGELP38": [ - "COULD HE ACTUALLY HAVE...?" + "KAN HIJ ECHT...?" ], "SCU-AM01": [ - "AW... I JUST CAN'T DO IT ANYMORE." + "AW... IK KAN HET GEWOON NIET MEER." ], "SCU-AM02": [ - "AW, I WISH I HAD SOME INSPIRATION." + "AW, IK WENS DAT IK WAT INSPIRATIE HAD." ], "SCU-AM03": [ - "I'M AS INSPIRED AS... THIS ROCK." + "IK BEN ZO GEÏNSPIREERD ALS... DEZE ROTS." ], "SCU-AM04": [ - "AW... WHERE IS MY MUSE?" + "AW... WAAR IS MIJN MUSE?" ], "SCU-AM05": [ - "I CAN'T WORK LIKE THIS!" + "IK KAN ZO NIET WERKEN!" ], "SCU-AM06": [ - "AW MAN... WILL SHE EVER COME BACK TO ME?" + "AW MAN... ZAL ZE OOIT BIJ MIJ TERUGKOMEN?" ], "SCU-LO01": [ - "AW MAN..." + "VERDORIE..." ], "SKSP009F": [ - "GET SOME! GET SOME! HA HA HA!" + "KRIJG IETS! KRIJG IETS! HA HA HA!" ], "WAR-LO1A": [ - "(SOBBING)" + "(SNIKKEN)" ], "WAR-LO1B": [ "(SOBS)" ], "WAR-LO1C": [ - "(BLOWS NOSE AND SPUTTERS)", - "(CONTINUES SOBBING)" + "(BLAAST NEUS EN SPUTTERT)", + "(GAAT DOOR MET SNIKKEN)" ], "YEL-AM01": [ - "TIME IS RUNNIN' OUT!" + "DE TIJD IS OP!" ], "YEL-AM02": [ - "HEY! GET ME OUTTA HERE!" + "HOI! HAAL ME HIER WEG!" ], "YEL-AM03": [ - "WHEN I GET OUTTA HERE, SOME SHOOTIN'S GONNA START!" + "ALS IK HIER WEG BEGIN, BEGINNEN ER SCHIETEN!" ], "asstv100": [ "OK, JULLIE HEBBEN GENOEG CELLEN OM DE KRACHT VAN HET HITTESCHILD TE VERHOGEN.", - "RIDE THE WOODEN MINECART DOWN THE SHAFT BY THE LAVA GEYSER.", - "I'LL MEET YOU BY THE ENTRANCE TO THE LAVA TUBE,", - "SO I CAN MODIFY THE ZOOMER. HURRY!" + "RIJD MET DE HOUTEN MIJNKART NAAR DE SCHACHT BIJ DE LAVA-GEISER.", + "IK ONTMOET JE BIJ DE INGANG VAN DE LAVA-BUIS,", + "ZODAT IK DE ZOOMER KAN WIJZIGEN. HAAST JE!" ], "asstv101": [ - "HAHA, OKAY! YOU HAVE ENOUGH CELLS TO INCREASE", - "THE POWER ON THE HEAT SHIELD.", - "MEET ME BACK IN THE VOLCANIC CRATER.", - "I'LL BE WAITING BY THE LAVA TUBE DOWN THE SHAFT BY THE LAVA GEYSER.", + "HAHA, OKÉ! JE HEBT GENOEG CELLEN OM TE VERHOGEN", + "DE STROOM OP HET HITTESCHILD.", + "ONTMOET ME TERUG IN DE VULKANISCHE KRATER.", + "IK WACHT BIJ DE LAVABUIS LANGS DE SCHACHT BIJ DE LAVAGEISER.", "BRENG ME DE ENERGIECELLEN!" ], "asstv102": [ "HAAST JE MET DIE ENERGIECELLEN!", - "I'M WAITING BY THE WOODEN MINECART SHAFT NEAR THE LAVA GEYSER." + "IK WACHT BIJ DE HOUTEN MIJNKARSCHACHT, VLAKBIJ DE LAVAGEISER." ], "asstv103": [ - "DON'T FORGET TO TURN ON THE TELEPORT GATE TO LET US THROUGH.", + "VERGEET NIET DE TELEPORTPOORT AAN TE ZETTEN, ZODAT WIJ DOORKUNNEN.", "JE MOET NAAR HET LAB VAN DE RODE WIJZE", - "IN THE CENTER OF THE VOLCANIC CRATER TO TURN IT ON.", - "WE CAN'T COME THROUGH UNTIL IT'S BACK ONLINE." + "IN HET CENTRUM VAN DE VULKANISCHE KRATER OM HET AAN TE ZETTEN.", + "WIJ KUNNEN NIET DOORKOMEN TOTDAT HET WEER ONLINE IS." ], "asstv104": [ - "HEY, WE'RE STILL BACK IN ROCK VILLAGE!", - "TURN ON THE TELEPORT GATE!" + "HEY, WE ZIJN NOG STEEDS TERUG IN ROCK VILLAGE!", + "ZET DE TELEPORTPOORT AAN!" ], "asstv105": [ - "WE WANNA JOIN YOU IN THE VOLCANIC CRATER!", + "WIJ WILLEN MET JE MEE NAAR DE VULKAANSE KRATER!", "GA NAAR HET LAB VAN DE RODE WIJZE EN ZET DE POORT AAN." ], "asstva73": [ - "HEY GUYS! BY MY CALCULATIONS, IT'S GOING TO TAKE", + "HALLO JONGENS! VOLGENS MIJN BEREKENINGEN GAAT HET DUREN", "72 ENERGIECELLEN OM HET HITTESCHILD TE DOEN WERKEN.", - "AGAINST THE LAVA ON THE WAY TO GOL AND MAIA'S CITADEL." + "TEGEN DE LAVA OP WEG NAAR GOL EN MAIA'S CITADEL." ], "asstva74": [ "JULLIE HEBBEN NIET GENOEG ENERGIECELLEN OM DOOR DEZE LAVA TE GERAKEN!", - "YOU CAN'T GET THROUGH TO GOL AND MAIA'S CITADEL", + "JE KUNT NIET DOOR NAAR GOL EN MAIA'S CITADEL", "TOT JULLIE 72 ENERGIECELLEN HEBBEN VERZAMELD!" ], "asstvb02": [ - "WOW, DID YOU SEE THAT?", - "BLUE ECO VENTS HAVE BEEN ACTIVATED ALL OVER THE WORLD!", - "I KNEW THERE WAS A WAY TO TURN THEM ON.", - "THERE MUST BE PLACES TO TURN ON THE OTHER ECO VENTS AS WELL." + "WAUW, HEB JE DAT GEZIEN?", + "BLUE ECO VENTS ZIJN OVER DE HELE WERELD GEACTIVEERD!", + "IK WIST DAT ER EEN MANIER WAS OM ZE AAN TE ZETTEN.", + "ER MOETEN OOK PLAATSEN ZIJN OM DE ANDERE ECO-VENTILATOREN AAN TE ZETTEN." ], "asstvb03": [ - "GOOD! YOU STOPPED ALL THE MINE-DROPPING LURKERS!", - "THEY'VE BEEN THREATENING THE WATERS AROUND OUR VILLAGE FOR WEEKS.", - "BRING YOUR ZOOMER BACK TO THE TRANS-PAD AND I'LL TELEPORT IT BACK!" + "GOED! JE HEBT ALLE MIJNEN-LUIKERAARS GESTOPT!", + "ZE BEDREIGEN AL WEKEN DE WATEREN ROND ONS DORP.", + "BRENG JE ZOOMER TERUG NAAR DE TRANS-PAD EN IK TELEPORTEER HEM TERUG!" ], "asstvb04": [ "GOED, JULLIE HEBBEN GENOEG ENERGIECELLEN VERZAMELD OM MIJN HITTESCHILD VAN BRANDSTOF TE VOORZIEN!", - "MEET ME BY THE ENTRANCE TO THE FIRE CANYON", - "BY CLIMBING THE CLIFF BEHIND THE FARMER'S HOUSE.", + "ONTMOET MIJ BIJ DE INGANG VAN DE FIRE CANYON", + "DOOR DE KLIP ACHTER HET BOERENHUIS TE BEKLIMMEN.", "BRENG ME DE ENERGIECELLEN EN HAAST JE!", - "MY FATHER SAYS HE'S SEEN MORE LURKERS AROUND!" + "MIJN VADER ZEGT DAT HIJ MEER LURKERS HEEFT GEZIEN!" ], "asstvb08": [ "HAAST JULLIE MET DIE ENERGIECELLEN!", - "I'M WAITING AT THE HEAD OF FIRE CANYON", - "AT THE TOP OF THE CLIFF BEHIND THE FARMER'S HOUSE!" + "IK WACHT AAN HET HOOFD VAN FIRE CANYON", + "OP DE TOP VAN DE KLIP ACHTER HET BOERENHUIS!" ], "asstvb09": [ "JULLIE HEBBEN NIET GENOEG ENERGIECELLEN OM MIJN HITTESCHILD VAN BRANDSTOF TE VOORZIEN.", "JE KAN NIET DOOR DE VUURVALLEI TOT JE GENOEG ENERGIECELLEN HEBT VERZAMELD." ], "asstvb20": [ - "GOOD FLYING! THOSE LURKERS WERE NO MATCH FOR YOUR ZOOMER!", - "THAT'S ONE MORE POWER CELL!" + "GOED VLIEGEN! DIE LURKERS WAREN GEEN MATCH VOOR JE ZOOMER!", + "DAT IS NOG EEN POWERCEL!" ], "asstvb21": [ - "GOOD WORK! AREN'T YOU GUYS HAPPY", - "YOU SAVED OUR LITTLE FLUT-FLUT FRIEND?", - "SHE MAY COME IN HANDY AGAIN SOMETIME.", - "NOW, GO BACK TO THE TRANS-PAD, AND I'LL BRING HER HOME." + "GOED WERK! BEN JULLIE NIET GELUKKIG", + "HEB JE ONZE KLEINE FLUT-FLUT VRIEND GERED?", + "ZIJ KAN ER EENS WEER VAN HANDIGE KOMEN.", + "GA NU TERUG NAAR HET TRANS-PAD, EN IK BEN HAAR NAAR HUIS." ], "asstvb22": [ - "WOW! YOU RAISED A PIECE OF THE UNDERWATER RUINS TO THE SURFACE!", - "IT SEEMS YOU CAN USE ECO IN WAYS WE'VE NEVER SEEN BEFORE!", - "A POWER CELL SURFACED WITH THE ROOM. CLIMB UP THERE AND GET IT." + "WAUW! JE HEBT EEN STUK VAN DE ONDERWATERRUÏNES NAAR DE OPPERVLAKTE GEHOOGD!", + "HET LIJKT DAT JE ECO KUNT GEBRUIKEN OP MANIEREN DIE WE NOG NOOIT EERDER HEBBEN GEZIEN!", + "ER VERSCHEEN EEN KRACHTCEL IN DE KAMER. KLIM DAAR BOVEN EN KRIJG HET." ], "asstvb23": [ - "GREAT WORK! THE PEOPLE OF ROCK VILLAGE ARE BREATHING", - "A COLLECTIVE SIGH OF RELIEF!", - "BUT THERE'S NO TIME TO CELEBRATE! USE YOUR ZOOMER", - "TO NAVIGATE THE MOUNTAIN PASS UP AHEAD.", - "BE CAREFUL, IT LOOKS LIKE THE LURKERS HAVE RIGGED", - "THE WHOLE PASS WITH EXPLOSIVES!", - "WHEN YOU REACH THE VOLCANIC CRATER,", + "GOED GEDAAN! DE MENSEN VAN ROCK VILLAGE ADEMEN", + "EEN COLLECTIEVE ZUCHT VAN OPLICHTING!", + "MAAR ER IS GEEN TIJD OM TE VIEREN! GEBRUIK UW ZOOMER", + "OM DE BERGPAS VOORUIT TE NAVIGEREN.", + "WEES VOORZICHTIG, HET LIJKT DAT DE LURKERS HEBBEN GEZET", + "DE HELE PAS MET EXPLOSIEVEN!", + "WANNEER JE DE VULKANISCHE KRATER BEREIKT,", "ZORG ERVOOR DAT JE HET LAB VAN DE RODE WIJZE BEZOEKT", - "AND ACTIVATE THE TELEPORT GATE SO THAT FATHER AND I CAN JOIN YOU." + "EN ACTIVEER DE TELEPORTPOORT ZODAT VADER EN IK BIJ JOU KUNNEN KOMEN." ], "asstvb24": [ - "OH MY! THOSE LURKERS MUST BE HEADED", - "FOR A DETONATOR AT THE END OF THE CANYON!", - "IF THEY REACH IT BEFORE YOU DO,", - "THEY'LL BLOW UP THE ENTIRE PASS!", - "YOU'VE GOTTA BEAT THEM THERE AND DESTROY THE DETONATOR,", - "OR IT'S ALL OVER!" + "OH MIJN! DIE LURKERS MOETEN WEG GAAN", + "VOOR EEN DETONATOR AAN HET EINDE VAN DE CANYON!", + "ALS ZE HET BEREIKEN VOORDAT JIJ DAT DOET,", + "ZE GAAN DE HELE PAS OPBLAZEN!", + "JE MOET ZE DAAR VERSLAAN EN DE ONTSTEKER VERNIETIGEN,", + "OF HET IS ALLES VOORBIJ!" ], "asstvb25": [ - "GOOD WORK! YOU BEAT THEM TO THE DETONATOR!", + "GOED WERK! JE VERSLAAT ZE MET DE ONTSTEKER!", "HET LAB VAN DE RODE WIJZE LIGT VERDEROP.", - "GO TURN ON THE TELEPORT GATE SO WE CAN JOIN YOU." + "GA DE TELEPORTPOORT AAN ZODAT WIJ MET U KUNNEN KOMEN." ], "asstvb28": [ "HEY! VERGEET DE WIJZE EN MIJ NIET!", - "YOU HAVE TO TURN ON THE TELEPORT GATE TO LET US THROUGH!", + "JE MOET DE TELEPORTPOORT AANZETTEN OM ONS DOOR TE LATEN!", "HET IS IN HET LAB VAN DE BLAUWE WIJZE, AAN HET EINDE VAN DE VUURVALLEI.", - "IF YOU DON'T LET US THROUGH, THEN WE CAN'T HELP YOU!" + "ALS U ONS NIET DOORLAAT, DAN KUNNEN WIJ U NIET HELPEN!" ], "asstvb29": [ - "HEY! WE'RE STILL WAITING!", - "TURN ON THE TELEPORT GATE!" + "HOI! WIJ WACHTEN NOG STEEDS!", + "ZET DE TELEPORTPOORT AAN!" ], "asstvb30": [ - "HEY! WE CAN'T COME THROUGH UNTIL THE TELEPORT GATE'S ON!" + "HOI! WE KUNNEN NIET DOORKOMEN TOT DE TELEPORTPOORT AAN IS!" ], "asstvb40": [ - "THIS DEVICE IS A COMMUNICATOR. WITH IT, MY FATHER AND I", - "CAN GIVE YOU ADVICE AT ANY TIME DURING YOUR QUEST." + "DIT APPARAAT IS EEN COMMUNICATOR. MET HET, MIJN VADER EN IK", + "KAN U OP ELK MOMENT ADVIES GEVEN TIJDENS UW ZOEKTOCHT." ], "asstvb41": [ - "THESE FLOATING EGG-SHAPED THINGS ARE PRECURSOR ORBS.", - "COLLECT ENOUGH OF THEM, AND SOME OF THE VILLAGERS WILL GIVE YOU", - "A POWER CELL IN EXCHANGE." + "DEZE DRIJVENDE EIVORMIGE DINGEN ZIJN VOORLOPIGE ORBS.", + "VERZAMEL ER GENOEG VAN, EN SOMMIGE DORPEN ZULLEN JE GEVEN", + "EEN KRACHTCEL IN UITWISSELING." ], "asstvb42": [ - "THIS IS A POWER CELL, THE MOST IMPORTANT PRECURSOR ARTIFACT YOU CAN FIND!", - "YOU NEED TO COLLECT 20 OF THESE SO I CAN POWER THE HEAT SHIELD", - "FOR YOUR A-GRAV ZOOMER." + "DIT IS EEN KRACHTCEL, HET BELANGRIJKSTE VOORLOPIGE ARTIFACT DAT U KUNT VINDEN!", + "JE MOET 20 HIERVAN VERZAMELEN ZODAT IK HET HITTESCHILD KAN AANZETTEN", + "VOOR UW A-GRAV ZOOMER." ], "asstvb44": [ - "HEY, YOU FOUND ONE OF MY SCOUT FLIES!", + "HÉ, JE HEBT EEN VAN MIJN VERKENNINGSVLIEGEN GEVONDEN!", "IK HAD ER ZEVEN NAAR ELK GEBIED GESTUURD OM ENERGIECELLEN TE ZOEKEN.", - "BUT THE LURKERS MUST HAVE CAPTURED THEM ALL!" + "MAAR DE LURKERS MOETEN ZE ALLEMAAL HEBBEN GEVANGEN!" ], "asstvb45": [ - "WOW! THAT LAST SCOUT FLY HAD A POWER CELL!", - "I'LL BET IF YOU COLLECT ALL 7 IN EACH AREA", + "WAUW! DIE LAATSTE VERKENNINGSVLIEG HAD EEN KRACHTCEL!", + "IK WED DAT ALS JE ALLE 7 IN ELK GEBIED VERZAMELT", "JE KAN NOG MEER ENERGIECELLEN VINDEN." ], "asstvb46": [ - "BE CAREFUL IN THE OCEAN, THE WATERS ARE CHOCK-FULL OF", - "LURKER SHARKS AND I'VE NEVER SEEN ANYONE DEFEAT ONE.", - "STAY CLEAR OF THEM IF YOU KNOW WHAT'S GOOD FOR YOU!" + "WEES VOORZICHTIG IN DE OCEAAN, HET WATER ZIT VOL MET", + "LURKER SHARKS EN IK HEB NOG NOOIT IEMAND EEN VERSLAG GEZIEN.", + "BLIJF ER UIT DE BUURT ALS JE WEET WAT GOED VOOR JE IS!" ], "asstvb47": [ - "REMEMBER, THAT'S A POWER CELL.", - "YOU NEED TO COLLECT AS MANY OF THOSE AS YOU CAN." + "ONTHOUD, DAT IS EEN POWERCELL.", + "JE MOET ZO VEEL DAARVAN VERZAMELEN ALS JE KAN." ], "asstvb48": [ - "THAT'S A BLUE ECO VENT! MORE CONCENTRATED THAN THE FLOATING CLUSTERS,", - "THIS VENT WILL GIVE YOU A FULL CHARGE OF BLUE ECO,", - "LETTING YOU USE IT FOR THE MAXIMUM TIME." + "DAT IS EEN BLAUWE ECO-VENT! MEER GECONCENTREERD DAN DE ZWEVENDE CLUSTERS,", + "DEZE VENTILATIE GEEFT U EEN VOLLEDIGE LADING VAN BLUE ECO,", + "ZODAT U HET VOOR DE MAXIMALE TIJD KUNT GEBRUIKEN." ], "asstvb71": [ "JE HEBT NIET GENOEG ENERGIECELLEN OM DE MACHINE VAN DE BLAUWE WIJZE VAN ENERGIE TE VOORZIEN.", @@ -1928,941 +1928,941 @@ "asstvb72": [ "TOTDAT WE WETEN WAAROM DE BLAUWE SALIE VERDWENEN IS,", "JULLIE MOETEN 45 ENERGIECELLEN VERZAMELEN OM ZIJN MACHINE VAN BRANDSTOF TE VOORZIEN.", - "GO GET 'EM!" + "PAK ZE!" ], "asstvb75": [ - "THIS GONDOLA SEEMS TO BE MALFUNCTIONING.", - "I'LL TRY TO WORK ON IT AND GET IT RUNNING AGAIN." + "DEZE GONDEL LIJKT STOREND TE ZIJN.", + "IK ZAL PROBEREN ERAAN TE WERKEN EN HET WEER AAN DE PRAAT TE KRIJGEN." ], "asstvb76": [ - "I'VE REACTIVATED THE GONDOLA. IT CAN TAKE YOU TO SNOWY MOUNTAIN!", - "USE IT WHENEVER YOU WANT." + "IK HEB DE GONDEL GEREACTIVEERD. HET KAN JE NAAR SNEEUWBERG BRENGEN!", + "GEBRUIK HET WANNEER U WILT." ], "sagevb01": [ - "WELL, I SEE THAT YOU TWO HAVE FINALLY", - "DECIDED TO UNBLOCK MY COLLECTORS.", - "I WOULD OFFER MY CONGRATULATIONS", - "BUT YOU HAVE SO MUCH TO DO I WON'T WASTE YOUR TIME.", - "BY THE WAY, IF THINGS DON'T WORK OUT,", - "DAXTER COULD ALWAYS GET A JOB CONTROLLING THE VILLAGE RAT PROBLEM.", - "NYEH HA HA HA HA HA." + "NOU, IK ZIE DAT JULLIE HET EINDELIJK HEBBEN GEDAAN", + "BESLIST OM MIJN VERZAMELAARS TE DEBLOKKEREN.", + "IK ZOU MIJN FELICITATIES AANBIEDEN", + "MAAR JE HEBT ZOVEEL TE DOEN. IK ZAL JE TIJD NIET VERSPILLEN.", + "TROUWENS, ALS HET NIET LUKT,", + "DAXTER KAN ALTIJD EEN BAAN KRIJGEN OM HET DORPRATENPROBLEEM TE CONTROLEREN.", + "JA HA HA HA HA HA." ], "sagevb02": [ - "I HAVE TO ADMIT, I'M IMPRESSED. YOU TWO DIDN'T SCREW UP!", - "NOW THAT THE LURKERS CAN'T OPEN THAT SILO", - "THEY CAN'T FLOOD THE WORLD WITH DARK ECO", - "AND CAUSE UNTOLD DESTRUCTION.", - "WIPE THAT RIDICULOUS GRIN OFF YOUR FACE, DAXTER!", - "THE TWO OF YOU HAVE PLENTY TO DO.", - "GET ON WITH IT!" + "IK MOET TOEGEVEN, IK BEN ONDER DE INDRUK. JULLIE TWEE HEBBEN HET NIET VERPEST!", + "NU DE LURKERS DIE SILO NIET KUNNEN OPENEN", + "ZE KUNNEN DE WERELD NIET OVERSPOELEN MET DONKERE ECO", + "EN VEROORZAKEN ONVERMELDE VERNIETIGING.", + "VEEG DIE BELACHELIJKE GRIJNS VAN JE GEZICHT, DAXTER!", + "JULLIE TWEE HEBBEN GENOEG TE DOEN.", + "GA ERVOOR!" ], "sagevb03": [ - "YOU KEEP ON IMPRESSING ME. BUT THEN MAYBE IT'S JUST BECAUSE", - "I'VE GOT LOW EXPECTATIONS.", - "OKAY, YOUR MOMENT OF GLOATING IS OVER.", - "GET ON WITH IT!" + "JE BLIJFT INDRUK OP MIJ MAKEN. MAAR DAN IS HET MISSCHIEN GEWOON OMDAT", + "IK HEB LAGE VERWACHTINGEN.", + "OKÉ, JE MOMENT VAN GLUNDEREN IS VOORBIJ.", + "GA ERMEE DOOR!" ], "sagevb04": [ - "GOOD WORK, JAK! YOUR UNCLE WOULD BE PROUD.", - "THAT WAS A GIANT ARM FROM A PRECURSOR ROBOT.", - "I'VE NEVER SEEN ONE IN SUCH GOOD CONDITION!", - "I CAN'T IMAGINE WHAT THE LURKERS WANTED WITH IT,", - "BUT WE SURE DIDN'T WANT THEM TO GET IT.", - "IF YOU KEEP THIS SUCCESS UP...", - "NAH, YOU'LL STILL FALL SHORT OF HERO.", - "BUT KEEP TRYING. IT'S ENDEARING." + "GOED WERK, JAK! JE OOM ZOU TROTS ZIJN.", + "DAT WAS EEN REUZEARM VAN EEN VOORLOPIGE ROBOT.", + "IK HEB NOG NOOIT ER EEN IN ZO'N GOEDE STAAT GEZIEN!", + "IK KAN ME NIET VOORSTELLEN WAT DE LURKERS ERMEE WILDEN,", + "MAAR WE WILDEN ZEKER NIET DAT ZE HET KREGEN.", + "ALS JE DIT SUCCES VOLHOUDT...", + "NEE, JE ZULT NOG STEEDS EEN HELD TEKORTSCHIETEN.", + "MAAR BLIJF PROBEREN. HET IS VERTEDEREND." ], "sagevb21": [ - "THOSE LITTLE GREEN BALLS OF ENERGY ON THE GROUND ARE A TYPE OF ECO.", - "PICK UP 50 SMALL GREEN ECOES, OR ONE BIG GREEN ONE TO INCREASE YOUR HEALTH." + "DIE KLEINE GROENE ENERGIEBALLEN OP DE GROND ZIJN EEN SOORT ECO.", + "PAK 50 KLEINE GROENE ECO'S OP, OF ÉÉN GROTE GROENE OM JE GEZONDHEID TE VERHOGEN." ], "sagevb22": [ - "THAT'S BLUE ECO, WHICH CONTAINS THE ENERGY OF MOTION.", - "BLUE ECO ALLOWS YOU TO RUN FAST, BREAK BOXES, AND EVEN ACTIVATE SOME PRECURSOR", - "ARTIFACTS WHEN YOU GET NEAR THEM." + "DAT IS BLUE ECO, DAT DE ENERGIE VAN BEWEGING BEVAT.", + "MET BLUE ECO KUNT U SNEL RENNEN, BREAKBOXEN EN ZELFS SOMMIGE PRECURSOR ACTIVEREN", + "ARTEFACTEN ALS JE IN DE BUURT VAN HEN KOMT." ], "sagevb23": [ - "NOTICE HOW EACH BLUE ECO CLUSTER YOU PICK UP", - "INCREASES THE TIME YOU CAN USE ITS POWER." + "LET OP HOE U ELK BLAUW ECO-CLUSTER OPHAALT", + "VERGROOT DE TIJD DAT U DE KRACHT KUNT GEBRUIKEN." ], "sagevb24": [ - "THIS IS A PRECURSOR DOOR.", - "IT CAN ONLY BE OPENED BY APPROACHING THE DOOR", - "WHILE CHANNELLING BLUE ECO THROUGH YOUR BODY." + "DIT IS EEN VOORLOPIGE DEUR.", + "HET KAN ALLEEN WORDEN GEOPEND DOOR DE DEUR TE BENADEREN", + "TERWIJL BLAUWE ECO DOOR JE LICHAAM KANALEN." ], "sagevb25": [ - "GOOD WORK, THE BLUE ECO CAUSED THE DOOR TO OPEN.", - "WITH BLUE ECO, YOU CAN BREATHE ENERGY INTO ALL KINDS", - "OF PRECURSOR ARTIFACTS THAT HAVE LAIN DORMANT FOR YEARS." + "GOED WERK, DE BLAUWE ECO ZORGDE ERVOOR DAT DE DEUR OPENGING.", + "MET BLUE ECO KUNT U ALLE SOORTEN ENERGIE ADEMEN", + "VAN VOORLOPIGE ARTEFACTEN DIE JAREN IN SLAPEN HEBBEN GELAAGD." ], "sagevb26": [ - "USE YOUR GOGGLES TO VIEW YOUR PROGRESS DURING THE ADVENTURE." + "GEBRUIK JE BRIL OM JE VOORUITGANG TE BEKIJKEN TIJDENS HET AVONTUUR." ], "sagevb27": [ - "YOU CAN JUMP ONCE, THEN JUMP AGAIN IN THE AIR TO REACH EVEN HIGHER LEDGES." + "JE KUNT ÉÉN ÉÉN SPRINGEN, DAARNA OPNIEUW IN DE LUCHT SPRINGEN OM NOG HOGERE RANDEN TE BEREIKEN." ], "sagevb28": [ - "WHEN YOU'RE SURROUNDED BY ENEMIES, USE YOUR SPIN KICK." + "WANNEER JE OMRINGD WORDT DOOR VIJANDEN, GEBRUIK JE SPIN KICK." ], "sagevb29": [ - "THAT'S NOT A SPIN KICK! TRY AGAIN." + "DAT IS GEEN SPIN-KICK! PROBEER HET NOG EENS." ], "sagevb30": [ - "COME ON, JAK! DO A SPIN KICK." + "KOM OP, JAK! DOE EEN SPINKICK." ], "sagevb31": [ - "GOOD WORK. USE THE SPIN KICK WHEN YOU WANT A GOOD ALL-ROUND ATTACK." + "GOED WERK. GEBRUIK DE SPIN KICK WANNEER JE EEN GOEDE ALLROUND AANVAL WILT." ], "sagevb32": [ - "FOR A STRAIGHT LINE, MOVING ATTACK, USE YOUR FIST TO PUNCH." + "VOOR EEN RECHTE LIJN, BEWEGENDE AANVAL, GEBRUIK JE VUIST OM TE SLAGEN." ], "sagevb33": [ - "THAT'S NOT A PUNCH ATTACK! LET'S SEE YOU PUNCH ALREADY." + "DAT IS GEEN PUNCH-AANVAL! LATEN WE JE AL ZIEN PUNCH." ], "sagevb34": [ - "JAK! USE A PUNCH." + "HOE! GEBRUIK EN PONS." ], "sagevb35": [ - "GREAT JOB. USE THE PUNCH TO CLOSE DISTANCE QUICKLY IN A TOUGH SPOT." + "GOED WERK. GEBRUIK DE PUNCH OM AFSTAND SNEL TE SLUITEN OP EEN MOEILIJKE PLEK." ], "sagevb36": [ - "SOMETIMES YOU'LL WANT TO HIT THINGS WITH A GREATER FORCE.", - "TO BREAK ONE OF THESE BOXES, YOU SHOULD JUMP IN THE AIR", - "AND THEN DIVE DOWN ONTO IT, HANDS FIRST." + "SOMS WIL JE DINGEN MET EEN GROTERE KRACHT AANRAKEN.", + "OM EEN VAN DEZE DOZEN TE BREKEN, MOET JE IN DE LUCHT SPRINGEN", + "EN DUIK ER DAN IN, MET JE HANDEN EERST." ], "sagevb37": [ - "WHEN YOU GET SOME CONFIDENCE, TRY USING SOME OF YOUR MOVES IN COMBINATIONS." + "ALS JE ENIG VERTROUWEN KRIJGT, PROBEER DAN ENKELE VAN JE MOVES IN COMBINATIES TE GEBRUIKEN." ], "sagevb38": [ - "YOU CAN'T COME BACK THROUGH THE WARP GATE", + "JE KUNT NIET TERUG KOMEN DOOR DE WARPPOORT", "TOT JE DE VIER ENERGIECELLEN OP DIT EILAND VINDT." ], "sagevb39": [ "FANTASTISCH! JE HEBT ALLE ENERGIECELLEN OP HET EILAND GEVONDEN!", - "COME BACK TO THE WARP GATE SO I CAN BRING YOU BACK TO THE LAB. HURRY UP!" + "KOM TERUG NAAR DE WARPPOORT, ZODAT IK JE TERUG KAN BRENGEN NAAR HET LAB. HAAST JE!" ], "sksp0001": [ - "HEY! THAT SWEET-LOOKING BABE KEIRA WAS RIGHT! THERE ARE TRANS-PADS OUT HERE." + "HOI! DIE LIEF UITZIENDE BABE KEIRA HAD GELIJK! ER ZIJN HIER TRANS-PADS." ], "sksp0002": [ - "TRUST ME, THOSE DARK ECO BOXES ARE BAD NEWS!" + "VERTROUW ME, DIE DONKERE ECO-DOZEN ZIJN SLECHT NIEUWS!" ], "sksp0003": [ - "I BET IF WE FOUND ALL OF THOSE SICKLY CUTE SCOUT FLIES ON EACH LEVEL", - "AT LEAST ONE WILL HAVE A POWER CELL!" + "IK WED DAT ALS WE AL DIE ZIEKELIJKE, SCHATTIGE VERKENNINGSVLIEGEN OP ELK NIVEAU VINDEN", + "MINSTENS ÉÉN HEEFT EEN POWERCEL!" ], "sksp0004": [ - "ALL RIGHT, TREASURE!" + "OKÉ, SCHAT!" ], "sksp0005": [ - "THESE WOOD AND METAL BOXES DON'T LOOK THAT TOUGH!", - "I'LL BET THEY'LL BREAK IF YOU JUMP DIVE ONTO THEM." + "DEZE HOUTEN EN METALEN DOZEN ZIEN ER NIET STOER UIT!", + "IK WED DAT ZE BREKEN ALS JE ER OP SPRINGT." ], "sksp0006": [ - "THOSE ALL-METAL BOXES ARE THICKER THAN A YAKOW SKULL!", - "BUT THERE MUST BE SOMETHING THAT CAN BUST 'EM OPEN." + "DIE VOLLEDIG METALEN DOZEN ZIJN DIKKER DAN EEN YAKOW-SCHEDEL!", + "MAAR ER MOET IETS ZIJN DAT ZE OPEN KAN BRENGEN." ], "sksp0007": [ "EEN WOORD: ENERGIECELLEN. WE MOETEN ZE VINDEN EN VOORLOPIG ZIJN WE NIET GOED BEZIG." ], "sksp0008": [ - "WE NEED ORBS. ORBS, JAK! HOW ARE EVER GONNA BUY POWER CELLS IF WE DON'T COLLECT ORBS!" + "WIJ HEBBEN ORBS NODIG. ORBS, JAK! HOE GAAN OOIT KRACHTCELLEN KOPEN ALS WE GEEN ORBS VERZAMELEN!" ], "sksp0009": [ - "WHAT A WEIRD-LOOKING THING! I'LL BET WE CAN GET THIS OPEN", - "IF YOU'RE POWERED UP WITH THAT ZAPPY BLUE ECO STUFF." + "WAT EEN VREEMD DING! IK WED DAT WE DIT OPEN KUNNEN KRIJGEN", + "ALS JE KRACHTIG BENT MET DAT ZAPPY BLAUWE ECO-STUFF." ], "sksp0010": [ - "HEY! LET'S GO CHECK OUT OL' FISH BREATH'S SPEED-BOAT AT THE DOCK!" + "HOI! LATEN WE DE SPEEDBOOT VAN OL' FISH BREATH GAAN BEKIJKEN AAN DE KADE!" ], "sksp0011": [ - "WE SHOULD ASK THE FISHERMAN DOWN BY THE JUNGLE RIVER", + "WE MOETEN DE VISSER BIJ DE JUNGLE RIVIER VRAGEN", "OF WE ZIJN SPEEDBOOT KUNNEN LENEN OM NAAR MISTY EILAND TE VAREN!" ], "sksp0013": [ - "DID YOU SEE THE SIZE OF THE BITE", - "THAT LURKER SHARK TOOK OUT OF THE FISHERMAN'S BOAT?", - "WE BEST STAY WAY CLEAR OF THEM!", - "I DON'T THINK WE CAN TACKLE A CREATURE THAT DAG NASTY." + "HEB JE DE GROOTTE VAN DE BEET GEZIEN", + "DIE LURKER-HAAI UIT DE BOOT VAN DE VISSER HEEFT GEHAALD?", + "WIJ BLIJVEN HET BESTE UIT DE BUURT VAN HEN!", + "IK DENK NIET DAT WE EEN WEZEN KUNNEN AANPAKKEN DAT SMERIG IS." ], "sksp0014": [ - "WE SCROUNGED ENOUGH ORBS TO TRADE FOR A POWER CELL.", - "LET'S GET BACK AND MAKE THE SWITCH ALREADY!" + "WE HEBBEN GENOEG LICHTBOLLEN VERZAMELD OM TE RUILEN VOOR EEN ENERGIECEL.", + "LATEN WE TERUGGAAN EN DE OVERSTAP AL MAKEN!" ], "sksp0015": [ "DIT MOET ZO'N PRECURSORORAKEL ZIJN WAAR DE WIJZE HET ALTIJD OVER HEEFT.", - "I HOPE THEY WEREN'T AS UGLY IN PERSON!" + "IK HOOP DAT ZE PERSOONLIJK NIET ZO LELIJK WAREN!" ], "sksp0017": [ - "WHOA! CHECK OUT THAT FUNKY SCULPTURE", - "SITTIN' ON THE ROCKS OVER THERE!" + "WOW! KIJK EENS NAAR DAT FUNKY BEELDHOUWWERK", + "ZIT DAAR OP DE ROTSEN!" ], "sksp0018": [ - "WE SHOULD GO TELL THAT WINDBAG OF A MAYOR THAT HE OWES US BIG TIME", - "FOR CONNECTING THE VILLAGE ENERGY BEAM!" + "WE MOETEN DIE WINDZAK VAN EEN BURGEMEESTER GAAN VERTELLEN DAT HIJ ONS GROTE SCHULDEN HEEFT", + "VOOR HET AANSLUITEN VAN DE DORPSENERGIESTRAAL!" ], "sksp0019": [ - "HEY, SEAGULLS! LET'S BUZZ 'EM FOR KICKS." + "HÉ, ZEEMEEUWEN! LATEN WE ZE ZOEMEN VOOR SCHOPPEN." ], "sksp0020": [ - "YEAH HA HA! LET'S DO THAT AGAIN!" + "JA HAHA! LATEN WE DAT OPNIEUW DOEN!" ], "sksp0021": [ - "THERE'RE THOSE SEAGULLS AGAIN. LET'S GET 'EM!!" + "DAAR ZIJN DIE MEEUWEN WEER. LATEN WE ZE PAKKEN!!" ], "sksp0022": [ - "YEAH HA HA HA HA HA!! WOO HO HO HO!" + "JA HA HA HA HA HA!! WOO HO HO HO!" ], "sksp0023": [ - "WOOHOO!" + "WOEHOOO!" ], "sksp0024": [ - "YEAH HA HA! YEAH!" + "JA HA HA! JA!" ], "sksp0025": [ - "WHOA! THEY CAUSED AN AVALANCHE! LET'S CHECK IT OUT." + "WAUW! ZE HEBBEN EEN LAWINE VEROORZAAKT! LATEN WE HET BEKIJKEN." ], "sksp0026": [ - "HEY! THAT PELICAN JUST SNAGGED A POWER CELL!", - "LET'S GO KICK SOME BIG BIRD BUTT!" + "HOI! DIE PELIKAAN HEEFT NET EEN KRACHTCEL GEGREPEN!", + "LATEN WE EEN GROTE VOGELKONT GAAN SCHOPPEN!" ], "sksp0027": [ - "QUICK! WE HAVE TO GET TO THE POWER CELL BEFORE THE PELICAN SCOOPS IT UP AGAIN." + "SNEL! WE MOETEN BIJ DE ENERGIECELLEN ZIJN VOORDAT DE PELIKAAN HEM WEER OPPAKT." ], "sksp0028": [ - "KICK THE EGG! HEE-HEE! KICK IT! KICK IT!" + "SCHOP HET EI! HEE HEE! SCHOP HET! SCHOP HET!" ], "sksp0029": [ - "EH, WE MIGHT WANNA TALK TO THE BIRDWATCHER", - "AND SEE IF WE SCRAMBLED THAT FLUT-FLUT EGG." + "EH, WE WILLEN MISSCHIEN MET DE VOGELWATCHER PRATEN", + "EN KIJKEN OF WE DAT FLUT-FLUT EI HEBBEN GEKRUIST." ], "sksp0030": [ - "HEY, TRY PUNCHING THE ROCKS TO GET 'EM OUT OF THE WAY!" + "HÉ, PROBEER TEGEN DE ROTSEN TE SLAAN OM ZE UIT DE WEG TE RUIMEN!" ], "sksp0031": [ - "OOH! LET'S USE THE CANNON TO BLOW THINGS UP!" + "OOO! LATEN WE HET KANON GEBRUIKEN OM DINGEN OP TE BLAZEN!" ], "sksp0034": [ - "AWOOGA! AWOOGA! DIVE FOR THOSE ORBS, JAK, DIVE!" + "AWOOGA! AWOOGA! DUIK VOOR DIE ORBS, JAK, DUIK!" ], "sksp0035": [ - "YEAH, SO WE GOT A PRECURSOR LAUNCHER HERE", - "BUT YOU AREN'T POWERED UP WITH THE BLUE STUFF. SO IT AIN'T GONNA HELP US!" + "JA, DUS WE HEBBEN HIER EEN PRECURSOR LAUNCHER", + "MAAR JE BENT NIET KRACHTIG MET HET BLAUWE STUFF. DUS HET GAAT ONS NIET HELPEN!" ], "sksp0037": [ - "THOSE TOWER DOOHICKEYS SCATTERED ALL OVER THE JUNGLE MUST REDIRECT THE ECO BEAM.", - "LET'S GO FIDDLE WITH THEM!" + "DIE TOREN DOOHICKEYS DIE OVER DE JUNGLE VERSPREID ZIJN, MOETEN DE ECO-STRAL OMLEIDEN.", + "LATEN WE MET ZE GAAN SPELEN!" ], "sksp0038": [ - "HMM, IF BLUE ECO CAN BUILD A BRIDGE, THEN I BET IT'LL OPEN A DOOR!", - "LET'S GO BACK AND GET YOU JUICED UP AGAIN." + "HMM, ALS BLUE ECO EEN BRUG KAN BOUWEN, DAN WEDDEN DAT HET EEN DEUR OPENT!", + "LATEN WE TERUGGAAN EN JE WEER SAP LATEN MAKEN." ], "sksp0039": [ - "HEY, THERE'S LITTLE LIGHTNING MARKS ON THOSE POSTS", - "AND THERE'S LIGHTNING COMING OUT OF THAT VENT OVER THERE.", - "ARE YOU THINKING WHAT I'M THINKING?" + "HEY, ER ZIJN KLEINE BLIKSEMSCHEUREN OP DIE PALEN", + "EN ER KOMT BLIKSEM UIT DIE VENTILATIEOPENING DAAR.", + "DENK JIJ WAT IK DENK?" ], "sksp0040": [ - "LET'S GET UP ON THAT MACHINE AND BREAK THE MIRROR DIVERTING THE PRECURSOR BEAM!" + "LATEN WE OP DIE MACHINE GAAN STAAN EN DE SPIEGEL BREKEN DIE DE VOORLOPERSTRAAL OMLEIDT!" ], "sksp0041": [ - "WE NEED TO GET TO THE TOP OF THAT TOWER!" + "WE MOETEN NAAR DE TOP VAN DIE TOREN KOMEN!" ], "sksp0043": [ - "MAYBE WE SHOULD GO ROOT OUT THE FISHERMAN.", - "I HEARD HE WAS IN THE JUNGLE FISHING BY THE LOWER RIVER!" + "MISSCHIEN MOETEN WE DIE VISSER EENS UITROEIEN.", + "IK HOORDE DAT HIJ IN DE JUNGLE AAN HET VISSEN WAS BIJ DE LOWER RIVER!" ], "sksp0049": [ - "LINE UP THE BEAM BY POINTING IT AT THE NEXT TOWER!" + "LIJN DE STRAAL OP EEN LIJN DOOR HEM OP DE VOLGENDE TOREN TE RICHTEN!" ], "sksp0050": [ - "BREAK THE MIRROR, JAK!" + "BREEK DE SPIEGEL, JAK!" ], "sksp0051": [ - "GET THE BUGS, JAK! GET THE BUGS!" + "KRIJG DE INSECTEN, JAK! KRIJG DE INSECTEN!" ], "sksp0052": [ - "LET'S GO TO THE NEXT TOWER AND RECONNECT THE BEAM THERE!" + "LATEN WE NAAR DE VOLGENDE TOREN GAAN EN DE STRAAL DAAR OPNIEUW AANSLUITEN!" ], "sksp0053": [ - "HEY! WE CAN FOLLOW THE BEAM TO FIND THE NEXT TOWER." + "HOI! WE KUNNEN DE STRAAL VOLGEN OM DE VOLGENDE TOREN TE VINDEN." ], "sksp0054": [ - "WE NEED TO CHARGE YOU UP WITH THAT BLUE STUFF TO GET THIS OPEN!" + "WE MOETEN JE OPLADEN MET DAT BLAUWE DINGEN OM DIT OPEN TE KRIJGEN!" ], "sksp0056": [ - "HEY! I SEE THE SCULPTOR'S MUSE!" + "HOI! IK ZIE DE MUZE VAN DE BEELDHOUWER!" ], "sksp0059": [ - "THIS PLACE GIVES ME THE WILLIES!", - "LET'S KEEP YOU OUT OF THE OOZE, OKAY?" + "DEZE PLAATS GEEFT ME DE WILLIES!", + "LATEN WE JE UIT DE SLIJK HOUDEN, OKÉ?" ], "sksp0060": [ - "(WHIMPERS) THIS PLACE GIVES ME THE CREEPS!", - "AND TRUST ME, IT'S A WHOLE NEW EXPERIENCE", - "WHEN YOU'RE COVERED IN FUZZ!" + "(WHIMPERS) DEZE PLEK GEEFT MIJ DE KRIEBELS!", + "EN VERTROUW ME, HET IS EEN HELE NIEUWE ERVARING", + "WANNEER JE BEDEKT BENT MET FUZZ!" ], "sksp0062": [ - "LET'S PLOW INTO THOSE BALLOON LURKERS AND SHRED 'EM!" + "LATEN WE IN DIE BALLONLOERDERS PLOGEN EN ZE VERSNIJDEN!" ], "sksp0063": [ - "I SAID \"SHRED THE LURKERS,\" JAK. NOT THE MINES!", - "RULE NUMBER ONE: ALWAYS AVOID THE MINES!" + "IK ZEI: \"VERSNIPPER DE LOERKERS\", JAK. NIET DE MIJNEN!", + "REGEL NUMMER EEN: VERMIJD ALTIJD DE MIJNEN!" ], "sksp0064": [ - "WATCH YOUR BACK! YOU REMEMBER WHAT HAPPENED THE LAST TIME WE WERE HERE." + "KIJK UIT! JE HERINNERT WAT ER DE LAATSTE KEER IS GEBEURD DAT WE HIER WAREN." ], "sksp0067": [ - "DON'T FALL INTO THE MIST BELOW US!", - "'CAUSE I DON'T THINK WE'LL MAKE IT BACK." + "VAL NIET IN DE MIST BENEDEN ONS!", + "WANT IK DENK NIET DAT WE HET TERUGKRIJGEN." ], "sksp0069": [ - "IT'S AN AMBUSH, JAK! IT'S AN AMBUSH!" + "HET IS EEN HINDERLAAG, JAK! HET IS EEN HINDERLAAG!" ], "sksp0070": [ - "JUMP, THEN DIVE ONTO THE TEETER-TOTTER." + "SPRING, DAN DUIK OP DE WIMPELT." ], "sksp0071": [ - "GET THE RED ECO!" + "KRIJG DE RODE ECO!" ], "sksp0072": [ - "RED ECO MAKES YOUR ATTACKS STRONGER." + "RED ECO MAAKT JE AANVALLEN KRACHTIGER." ], "sksp0073": [ - "WE NEED BLUE ECO TO CHARGE THIS PLATFORM UP!" + "WE HEBBEN BLUE ECO NODIG OM DIT PLATFORM OP TE LADEN!" ], "sksp0076": [ - "JAK! HIT SOME JUMPS TO KEEP US OFF THE HOT GROUND." + "JAK! MAAK ENKELE SPRONGEN OM ONS VAN DE HETE GROND TE HOUDEN." ], "sksp0077": [ - "BALLOONS GOOD, BURNING HOT MAGMA BAD!" + "BALLONNEN GOED, BRANDENDE HETE MAGMA SLECHT!" ], "sksp0078": [ - "RIDE ON THE RAISED PRECURSOR STUFF TO KEEP US COOL." + "RIJD OP DE VERHOOGDE VOORLOPIGE STUFF OM ONS KOEL TE HOUDEN." ], "sksp0079": [ - "AHH! I'M GONNA DIE! I'M A COMING, GRANDPAP!", - "YOU HAVE TO GET THIS THING TO THE OTHER SIDE BEFORE IT OVERHEATS!" + "AHH! IK GA DOOD! IK KOM ERAAN, OPA!", + "JE MOET DIT DING NAAR DE ANDERE KANT KRIJGEN VOORDAT HET OVERVERHITT!" ], "sksp0080": [ - "USE THE HOP-TURN TO STEER HARDER!" + "GEBRUIK DE HOP-TURN OM HARDER TE STUUREN!" ], "sksp0081": [ - "AHH! MAYBE I SHOULD DRIVE!" + "AHH! MISSCHIEN MOET IK RIJDEN!" ], "sksp0082": [ - "YOU ARE TRYING TO AVOID THOSE DARK ECO BOXES, RIGHT?" + "JE PROBEERT DIE DONKERE ECOBOXEN TE VERMIJDEN, TOCH?" ], "sksp0083": [ - "OOH! SEE IF WE CAN CATCH AIR OFF THOSE LURKERS!" + "OOO! KIJKEN OF WE DE LUCHT VAN DIE LURKERS KUNNEN OPVANGEN!" ], "sksp0084": [ - "TOO CLOSE, TOO CLOSE!" + "TE DICHT, TE DICHT!" ], "sksp0085": [ - "WHOA! THIS BABY'S GETTING WAY TOO HOT!" + "WAUW! DEZE BABY WORDT VEEL TE WARM!" ], "sksp0086": [ - "A FEW MORE SECONDS AND WE'RE FRIED FLUT-FLUT!" + "NOG EEN PAAR SECONDEN EN WE ZIJN GEBRADEN FLUT-FLUT!" ], "sksp0087": [ - "HIT THOSE BALLOONS TO COOL OFF!" + "SLAAT DIE BALLONNEN OM AF TE KOELEN!" ], "sksp0088": [ - "HERE COMES ANOTHER BALLOON!" + "HIER KOMT NOG EEN BALLON!" ], "sksp0089": [ - "I WISH I SLEPT IN THIS MORNING!" + "IK WOU DAT IK VANOCHTEND HAD GESLAPEN!" ], "sksp0090": [ - "YOU MISSED A BALLOON! WE NEED THOSE OR WE'RE COOKED!" + "JE HEBT EEN BALLON GEMIST! WIJ HEBBEN DIE NODIG OF WE ZIJN GEKOOKT!" ], "sksp0091": [ - "THIS PUPPY'S GETTING TOO HOT!" + "DEZE PUPPY WORDT TE HEET!" ], "sksp0092": [ - "DO YOU SMELL SOMETHING BURNING?!" + "RUIK JIJ IETS DAT BRANDT?!" ], "sksp0093": [ - "I THINK MY TAIL'S ON FIRE!" + "IK DENK DAT MIJN STAART IN BRAND STAAT!" ], "sksp0094": [ - "SHE'S GONNA BLOW!" + "ZE GAAT ONTPLOFFEN!" ], "sksp0095": [ - "WAHOO! WE MADE IT!" + "WAUW! WE MAAKTEN HET!" ], "sksp0096": [ - "THERE'S SCOUT FLIES OUT HERE, TOO!" + "ER ZIJN HIER OOK SCOUTVLIEGEN!" ], "sksp009a": [ - "HA HA! WE SHOWED HIM A THING OR TWO." + "HA HA! WE LIETEN HEM EEN PAAR DINGEN ZIEN." ], "sksp009b": [ - "ALL RIGHT, MORE ORBS!" + "OKÉ, MEER ORBS!" ], "sksp009c": [ - "DO ME A FAVOR AND KEEP AWAY FROM THOSE DARK ECO BOXES!" + "DOE MIJ EEN PLEZIER EN BLIJF UIT DE BUURT VAN DIE DONKERE ECODOZEN!" ], "sksp009d": [ - "YEAH-HA-HA-HA!" + "JA-HA-HA-HA!" ], "sksp009e": [ - "WA-HOO!" + "WA-HOE!" ], "sksp009f": [ - "GET SOME, GET SOME! HA HA HA!" + "KRIJG WAT, KRIJG WAT! HA HA HA!" ], "sksp009g": [ - "RIGHT BEHIND YA, JAK!" + "RECHTS ACHTER JE, JAK!" ], "sksp009i": [ - "DID WE FIND ALL THE SCOUT FLIES IN THIS AREA?" + "HEBBEN WE ALLE VERKENNINGSVLIEGEN IN DIT GEBIED GEVONDEN?" ], "sksp009j": [ - "HEY! IT LOOKS LIKE SCOUT FLIES ARE ALWAYS IN RED BOXES." + "HOI! HET LIJKT DAT VERKENNINGSVLIEGEN ALTIJD IN RODE DOZEN ZIJN." ], "sksp009k": [ - "ALRIGHT! YOU FOUND ALL THE SCOUT FLIES IN THIS AREA!" + "AKKOORD! JE HEBT ALLE VERKENNINGSVLIEGEN IN DIT GEBIED GEVONDEN!" ], "sksp0109": [ - "WOO! WE BEAT THE RECORD TIME!" + "WOO! WIJ VERSLAAN DE RECORDTIJD!" ], "sksp0110": [ - "I'VE SAID IT BEFORE, I'LL SAY IT AGAIN...", - "AVOID THE DARK ECO BOXES!" + "IK HEB HET AL EERDER GEZEGD, IK ZEG HET NOG EEN KEER...", + "VERMIJD DE DONKERE ECO DOZEN!" ], "sksp0111": [ - "LET'S CHASE THOSE MOLES BACK UNDERGROUND." + "LATEN WE DIE MOLLEN TERUG ONDERGRONDS ACHTERVOLGEN." ], "sksp0112": [ - "LET'S GO GET OUR POWER CELL FROM THE GEOLOGIST." + "LATEN WE ONZE ENERGIECEL BIJ DE GEOLOOG HALEN." ], "sksp0113": [ - "THOSE MUST BE THE INFESTED PLANTS OL' LOG-NOGGIN WAS TALKIN' ABOUT." + "DAT MOETEN DE BESMETTE PLANTEN ZIJN WAAR DE LOG-NOGGIN HET OVER HAD." ], "sksp0114": [ - "WE HAVE TO USE GREEN ECO TO CURE THOSE PLANTS." + "WE MOETEN GROENE ECO GEBRUIKEN OM DIE PLANTEN TE GENEZEN." ], "sksp0115": [ - "JAK, DRIVE THROUGH THE GREEN ECO VENT." + "JAK, RIJD DOOR DE GROENE ECO-VENT." ], "sksp0116": [ - "THAT'S ONE OF THOSE FLYING LURKERS!", - "HE MIGHT HAVE A POWER CELL!" + "DAT IS EEN VAN DIE VLIEGENDE LURKERS!", + "HIJ KAN EEN KRACHTCEL HEBBEN!" ], "sksp0117": [ - "THERE'S THE MOLE HOLE!" + "DAAR IS HET MOLGAT!" ], "sksp0118": [ - "NOW, LET'S FLY OVER THE INFECTED PLANTS!" + "LATEN WE NU OVER DE BESMETTE PLANTEN VLIEGEN!" ], "sksp0119": [ - "ONE RING DOWN, A BUNCH TO GO!" + "ÉÉN RING OMLAAG, NOG EEN BOSJE TE GAAN!" ], "sksp0120": [ - "HURRY! THERE'S THE NEXT RING!" + "HAAST JE! ER IS DE VOLGENDE RING!" ], "sksp0121": [ - "QUICK! YOU'VE GOTTA FLY THROUGH EACH RING BEFORE THEY TURN OFF!" + "SNEL! JE MOET DOOR ELKE RING VLIEGEN VOORDAT ZE UITSCHAKELEN!" ], "sksp0122": [ - "HEY! THAT GRASS SLOWS US DOWN..." + "HOI! DAT GRAS VERTRAAGT ONS..." ], "sksp0123": [ - "QUICK! FOLLOW THAT PIPE!" + "SNEL! VOLG DIE PIJP!" ], "sksp0124": [ - "I GOT A BAD FEELING ABOUT THIS." + "IK HEB HIER EEN SLECHT GEVOEL OVER." ], "sksp0125": [ - "IT LOOKS LIKE THOSE THINGS NEED A BLUE ECO CHARGE." + "HET LIJKT DAT DIE DINGEN EEN BLAUWE ECO-LADING NODIG HEBBEN." ], "sksp0126": [ - "LET'S GET THE POWER CELL ON THE ROOF OF THIS THING!" + "LATEN WE DE KRACHTCEL OP HET DAK VAN DIT DING PLAATSEN!" ], "sksp0127": [ - "KICK THE LITTLE GUY ON THE TOP!" + "SCHOP DE KLEINE MAN OP DE BOVENKANT!" ], "sksp0128": [ - "JAK! RUN! THE DARK ECO IS RISING!" + "JAK! LOOP! DE DONKERE ECO STIJGT!" ], "sksp0129": [ - "AHH! THAT DARK ECO'S GETTING CLOSE" + "AHH! DIE DONKERE ECO KOMT DICHTBIJ" ], "sksp0130": [ - "UH, I THINK WE HAVE TO SWITCH ON ALL THOSE PLATFORMS OR SOMETHIN'." + "UH, IK DENK DAT WE AL DIE PLATFORMS OF IETS ANDERS MOETEN INSCHAKELEN." ], "sksp0131": [ - "HEY! IT LOOKS LIKE YOU COULD JUMP-DIVE ONTO THOSE GUYS!" + "HEY! HET LIJKT EROP DAT JE OP DIE KERELS KUNT SPRINGEN!" ], "sksp0132": [ - "EE-EE! WHOA! WHO-AH! WHO-AHH!" + "EE-EE! WAUW! WIE-AH! WIE-AHH!" ], "sksp0133": [ - "I'LL BET WE CAN GET ALL OF THOSE THINGS CHARGED AT ONCE!" + "IK WED DAT WE AL DIE DINGEN IN ÉÉN KEER IN REKENING KUNNEN KRIJGEN!" ], "sksp0134": [ - "HOW 'BOUT WE TAKE IT EASY ON THOSE HOT PIPES?!" + "ZULLEN WE HET RUSTIG AAN DOEN MET DIE HETE PIJPEN?!" ], "sksp0135": [ - "THAT WATER LOOKS DANGEROUS WHEN IT CHANGES COLOR!" + "DAT WATER ZIET GEVAARLIJK UIT ALS HET VAN KLEUR VERANDERT!" ], "sksp0136": [ - "YOU GOTTA GET OUT OF THE WATER BEFORE IT CHANGES COLOR!" + "JE MOET UIT HET WATER KOMEN VOORDAT HET VAN KLEUR VERANDERT!" ], "sksp0137": [ - "I BET WE COULD SHOOT THOSE BOULDERS IF WE'RE CHARGED UP WITH YELLOW ECO." + "IK WED DAT WE DIE ROTSBLOKKEN KUNNEN NEERSCHIETEN ALS WE ZIJN OPGELADEN MET EEN GELE ECO." ], "sksp0138": [ - "WE SHOULD SHOOT THOSE BIG BOULDERS HOLDING THE TETHER." + "WE MOETEN DIE GROTE KETTINGEN SCHIETEN DIE DE TAND HOUDEN." ], "sksp0139": [ - "MAYBE WE SHOULD HELP THAT WEIRDO FIND HIS PET." + "MISSCHIEN MOETEN WE DIE GEK HELPEN ZIJN HUISDIER TE VINDEN." ], "sksp0140": [ - "THE FLUT-FLUT CAN GLIDE FARTHER IF SHE JUMPS AGAIN IN THE AIR!" + "DE FLUT-FLUT KAN VERDER GLIJDEN ALS ZE WEER IN DE LUCHT SPRINGT!" ], "sksp0141": [ - "DON'T TOUCH THAT BLACK HOT TAR, OR YOU'LL GET HURT!" + "RAAK DIE ZWARTE HETE TEER NIET AAN, ANDERS KRIJG JE PERSOONLIJK!" ], "sksp0142": [ - "THE WATER'S SAFE TO WAIT IN." + "HET WATER IS VEILIG OM IN TE WACHTEN." ], "sksp0143": [ - "WAAH! BREAK THE TONGUE'S GRIP!" + "WAAH! BREEK DE GREEP VAN DE TONG!" ], "sksp0144": [ - "SHOOT THOSE RAT NESTS TO STOP THE RATS FROM COMING OUT." + "SCHIET DIE RATTENNESTEN NEER OM TE VOORKOMEN DAT DE RATTEN NAAR BUITEN KOMEN." ], "sksp0145": [ - "WOW! YOU CAN SHOOT FIREBALLS", - "WHEN YOU'RE POWERED UP WITH YELLOW ECO." + "WAUW! JE KUNT VUURBALLEN SCHIETEN", + "WANNEER JE KRACHTIG BENT MET GELE ECO." ], "sksp0146": [ - "HEY! THAT'S YELLOW ECO!" + "HOI! DAT IS GELE ECO!" ], "sksp0147": [ - "YOU CAN SWING ON THAT POLE OVER THERE!" + "JE KUNT DAAR AAN DIE PAL SLAPEN!" ], "sksp0148": [ - "WATCH OUT, THAT BRAMBLE IS PRICKLY!" + "PAS OP, DIE BRUSSEL IS STEKELIG!" ], "sksp0149": [ - "HEY, THAT LOOKS LIKE A TETHER HOLDING THE DIRIGIBLE IN PLACE!" + "HÉ, DAT ZIET ERUIT ALS EEN KETTING DIE DE DIRIGIBLE OP ZIJN PLAATS HOUDT!" ], "sksp0150": [ - "WATCH OUT WHEN THAT FROG IS CHARGED UP!" + "KIJK UIT WANNEER DIE KIKKER IS OPGELADEN!" ], "sksp0151": [ - "RUN AWAY, JAK!" + "REN WEG, JAK!" ], "sksp0152": [ - "LOOK OUT, JAK! IT'S AN AMBUSH!" + "KIJK UIT, JAK! HET IS EEN HINDERLAAG!" ], "sksp0153": [ - "HEY, THAT MUST BE THE PRECURSOR ARTIFACT THE LURKERS ARE AFTER!", - "IT LOOKS LIKE A GIANT ROBOT ARM!" + "HÉ, DAT MOET HET VOORLOPERARTEFACT ZIJN WAAR DE LOERKERS NAAR OP ZOEK ZIJN!", + "HET LIJKT ALS EEN REUZE ROBOTARM!" ], "sksp0154": [ - "THAT BLACK TAR LOOKS HOT AND DANGEROUS!" + "DIE ZWARTE TEER ZIET HEET EN GEVAARLIJK UIT!" ], "sksp0155": [ - "SHOOT THE BATS WITH THAT YELLOW ECO STUFF!" + "SCHIET DE VLEERMUIZEN MET DAT GELE ECO STUFF!" ], "sksp0156": [ - "MAYBE WE CAN DUCK THE BATS!" + "MISSCHIEN KUNNEN WE DE VLEERMUIZEN ONTWIJKEN!" ], "sksp0157": [ - "DID YOU SEE THAT? ONLY THREE MORE TETHERS TO GO!" + "HEB JE DAT GEZIEN? NOG NOG DRIE TETHERS TE GAAN!" ], "sksp0158": [ - "WOW! ONLY TWO MORE TETHERS." + "WAUW! NOG SLECHTS TWEE TETHERS." ], "sksp0159": [ - "THAT DIRIGIBLE'S BARELY HANGIN' ON! LET'S FIND THE LAST TETHER!" + "DAT DRIGIBLE KAN NOG MAAR OVERHANGEN! LAAT ONS DE LAATSTE KABEL VINDEN!" ], "sksp0160": [ - "HEY! THERE'S THE FLUT-FLUT!" + "HOI! ER IS DE FLUT-FLUT!" ], "sksp0161": [ - "I HATE RATS! AND I'M ALMOST ONE OF THEM." + "IK HAAT RATTEN! EN IK BEN BIJNA EEN VAN HEN." ], "sksp018a": [ - "THAT LAZY FARMER OWES US A POWER CELL!", - "LET'S GO TALK TO HIM!" + "DIE LUIE BOER IS ONS EEN ENERGIECEL SCHULDIG!", + "LATEN WE MET HEM GAAN PRATEN!" ], "sksp0300": [ - "WE HAVE TO BEAT THOSE LURKERS TO THE END OF THE PASS!" + "WE MOETEN DIE LURKERS VERSLAAN TOT HET EINDE VAN DE PAS!" ], "sksp0301": [ - "DON'T HIT THOSE EXPLOSIVES!" + "RAAK DEZE EXPLOSIEVEN NIET!" ], "sksp0302": [ - "STAY AHEAD OF THEM AND WE GOT IT MADE!" + "BLIJF HEN VOOR EN WE HEBBEN HET GEMAAKT!" ], "sksp0303": [ - "HIT THE BLUE ECO TO GET SPEED BOOSTS!" + "GEBRUIK DE BLAUWE ECO OM SNELHEIDSVERHOGINGEN TE KRIJGEN!" ], "sksp0304": [ - "AVOID THE TREES, JAK! THEY SLOW US DOWN!" + "BLIJF JE BEWEGEN DOOR DE BOMEN, JAK! ZE MAKEN ONS TRAGER!" ], "sksp0305": [ - "THE MORE BLUE ECO WE HIT, THE FASTER WE GO!" + "HOE MEER BLAUWE ECO WE RAKEN, HOE SNELLER WE GAAN!" ], "sksp0306": [ - "WATCH OUT FOR THOSE EXPLOSIVES!" + "PAS OP VOOR DEZE EXPLOSIEVEN!" ], "sksp0307": [ - "STAY CLEAR OF THE PITS!" + "BLIJF UIT DE BUURT VAN DE PITS!" ], "sksp0308": [ - "MAYBE I SHOULD DRIVE!" + "MISSCHIEN MOET IK RIJDEN!" ], "sksp0309": [ - "THERE'S ONE OF THE LURKERS!" + "ER IS EEN VAN DE LURKERS!" ], "sksp0310": [ - "CATCH 'EM, JAK!" + "VANG ZE HOE!" ], "sksp0311": [ - "WE PASSED ONE!" + "WIJ ZIJN ER ÉÉN GEPASSEERD!" ], "sksp0312": [ - "WAH, ONE OF THE LURKERS PASSED US!" + "WAH, EEN VAN DE LURKERS GAAT ONS VOOR!" ], "sksp0313": [ - "THEY'RE WAY AHEAD!" + "ZE ZIJN VER VOORUIT!" ], "sksp0314": [ - "YEAH, WE'RE IN THE LEAD!" + "JA, WIJ STAAN AAN DE LEIDING!" ], "sksp0315": [ - "FASTER, JAK, FASTER!" + "SNELLER, ZOALS, SNELLER!" ], "sksp0316": [ - "BIG JUMP, BIG JUMP!" + "GROTE SPRING, GROTE SPRING!" ], "sksp0317": [ - "HANG ON!" + "WACHT EVEN!" ], "sksp0318": [ - "YAAHH!" + "JA!" ], "sksp0319": [ - "IT'S GONNA BE CLOSE!" + "HET IS DICHT!" ], "sksp0320": [ - "THEY'RE GONNA BEAT US TO THE DETONATOR!" + "ZE GAAN ONS VERSLAAN MET DE ONTSTEKER!" ], "sksp0321": [ - "WE DID IT! WE STOPPED THEM FROM BLOWIN' UP THE PASS!" + "WE HEBBEN HET GEDAAN! WIJ HEBBEN HEN ERVAN WEERHOUDEN DE PAS OP TE BLAZEN!" ], "sksp0327": [ - "I THINK THAT WAS THE LAST DARK ECO CRYSTAL!" + "IK DENK DAT DAT HET LAATSTE DONKERE ECO-KRISTAL WAS!" ], "sksp0328": [ - "MAYBE YOU CAN SHOOT BETTER IF YOU AIM THROUGH YOUR GOGGLES." + "MISSCHIEN KUN JE BETER SCHIETEN ALS JE DOOR JE BRIL RICHT." ], "sksp0329": [ - "OH, NO! MORE DARK ECO!" + "O, NEE! NOG MEER DONKER ECO!" ], "sksp0330": [ - "I DON'T THINK WE GOT ALL OF THOSE DARK ECO CRYSTALS." + "IK DENK NIET DAT WE AL DIE DONKERE ECOKRISTALLEN HEBBEN." ], "sksp0331": [ - "SHOOT THE LURKERS EATING THE POLES!" + "SCHIET DE LUIKERAARS DIE DE PALEN ETEN!" ], "sksp0332": [ - "DON'T LET THE LIGHTS GO OUT!" + "LAAT DE LICHTEN NIET UITDOEN!" ], "sksp0333": [ - "HIT A CRYSTAL TO GET SOME LIGHT." + "RAAK EEN KRISTAL OM WAT LICHT TE KRIJGEN." ], "sksp0334": [ - "RUN AWAY! THAT CRYSTAL'S GONNA BLOW!" + "REN WEG! DAT KRISTAL GAAT BLAZEN!" ], "sksp0335": [ - "EWH, THEY FOUND A PRECURSOR ROBOT!" + "EWH, ZE HEBBEN EEN VOORLOPIGE ROBOT GEVONDEN!" ], "sksp0336": [ - "POP THE EGGS, BEFORE THEY HATCH!" + "POP DE EIEREN, VOORDAT ZE UITKOMEN!" ], "sksp0337": [ - "IT'S SPOOKY IN HERE..." + "HET IS HIER GRIEZELIG..." ], "sksp0338": [ - "LOOKS LIKE SPIDER WEBS BREAK AFTER TWO BOUNCES." + "HET LIJKT EROP DAT SPINNENWEBEN GEBROKEN NA TWEE STUITERS." ], "sksp0339": [ - "I. HATE. SPIDERS..." + "IK HAAT. SPINNEN..." ], "sksp0340": [ - "BABY SPIDERS ARE COMING!" + "BABY SPINNEN KOMEN ERAAN!" ], "sksp0341": [ - "I THINK WE'RE IN A SPIDER'S NEST HERE!" + "IK DENK DAT WE HIER IN EEN SPINNENNEST ZITTEN!" ], "sksp0342": [ - "LOOK OUT, MORE SPIDERS!" + "KIJK UIT, MEER SPINNEN!" ], "sksp0343": [ - "LET'S GET OUTTA HERE!" + "LATEN WE HIER WEGGAAN!" ], "sksp0345": [ - "HOW DO WE GET INSIDE THIS FORT?" + "HOE KOMEN WE DIT FORT BINNEN?" ], "sksp0346": [ - "MAYBE RED ECO CAN DEFEAT THIS GUY!" + "MISSCHIEN KAN RODE ECO DEZE KEREL VERSLAAN!" ], "sksp0347": [ - "WE NEED TO DO A ROLL JUMP!" + "WIJ MOETEN EEN ROLL-SPRONG DOEN!" ], "sksp0348": [ - "WE NEED TO FIND A WAY TO OPEN THIS VENT!" + "WE MOETEN EEN MANIER VINDEN OM DEZE OPENING TE OPENEN!" ], "sksp0349": [ - "THAT LOOKS LIKE AN ECO SWITCH DOWN THERE!" + "DAT LIJKT DAAR ALS EEN ECO-SCHAKELAAR!" ], "sksp0350": [ - "HIT HIM WHEN THE SPIKES ARE IN!" + "SLAAT HEM ALS DE SPIKES BINNEN ZIJN!" ], "sksp0351": [ - "PUSH THE BUTTON!" + "DRUK OP DE KNOP!" ], "sksp0352": [ - "QUICK! BEFORE THEY DROP BACK DOWN!" + "SNEL! VOORDAT ZE TERUG NALEREN!" ], "sksp0359": [ - "YOU GOTTA USE RED ECO!" + "JE MOET RODE ECO GEBRUIKEN!" ], "sksp0360": [ - "ALL RIGHT! WE TURNED ON THE CAPPED YELLOW ECO VENTS!" + "OKE! WIJ HEBBEN DE GELE ECO-VENTILATOREN MET AFDEKSEL AANGEBRACHT!" ], "sksp0362": [ - "LOOK! A FROZEN POWER CELL!" + "KIJK! EEN BEVROREN KRACHTCEL!" ], "sksp0363": [ - "ONLY A FLUT-FLUT CAN JUMP THAT FAR!" + "ALLEEN EEN FLUITFLUIT KAN ZO VER SPRINGEN!" ], "sksp0364": [ - "WE GOTTA HURRY, OR WE'RE TOAST!" + "WE MOET HAAST, OF WE TOASTEN!" ], "sksp0365": [ - "PICK A PATH, ANY PATH!" + "KIES EEN PAD, ELK PAD!" ], "sksp0366": [ - "AVOID, OR SHOOT THE MINES, JAK!" + "VERMIJD OF BOOT DE MIJNEN, JAK!" ], "sksp0367": [ - "FIND A WAY THROUGH THOSE DARK ECO BARRELS!" + "VIND EEN WEG DOOR DIE DONKERE ECO-VATTEN!" ], "sksp0368": [ - "KEEP HITTING THOSE COOLING BALLOONS!" + "BLIJF DIE KOELBALLONNEN SLAAN!" ], "sksp0369": [ - "WE'RE GETTING TOO HOT!" + "HET WORDT TE WARM!" ], "sksp0370": [ - "SHE'S GONNA BLOW!" + "ZE GAAT ONTPLOFFEN!" ], "sksp0371": [ - "GO FOR THE BLUE ECO, JAK!" + "GA VOOR DE BLAUWE ECO, JAK!" ], "sksp0372": [ - "SHOOT YOUR WAY THROUGH!" + "SCHIET JE EEN WEG DOOR!" ], "sksp0373": [ - "WAHOO! WHAT A RIDE!" + "WAUW! WAT EEN RIT!" ], "sksp0374": [ - "YES! TURN AND BURN, BABY!" + "JA! DRAAIEN EN BRANDEN, SCHAT!" ], "sksp0375": [ - "SHOOT THE POWER SPHERES TO OPEN THE DOOR!" + "SCHIET MET DE POWER BOLLETJES OM DE DEUR TE OPENEN!" ], "sksp0376": [ - "SHOOT THE POWER SPHERES BEFORE WE BURN UP!" + "SCHIET DE KRACHTGEBIEDEN VOORDAT WE VERBRANDEN!" ], "sksp0378": [ - "THE DOOR'S OPEN, LET'S GET GOING!" + "DE DEUR IS OPEN, LATEN WE GAAN!" ], "sksp0379": [ - "ZOOMING!" + "ZOOMEN!" ], "sksp0380": [ - "WE MADE IT THROUGH!" + "WIJ HEBBEN HET DOORGEBRACHT!" ], "sksp0381": [ "BREEK DE GENERATOR OM DE WIJZE TE BEVRIJDEN!" ], "sksp0382": [ - "JUST HANG ON TO THE EDGE!" + "HOUD GEWOON AAN DE RAND!" ], "sksp0383": [ - "WE GOT COMPANY, JAK. LOOOTS OF LURKERS!" + "WE HEBBEN GEZELSCHAP, JAK. LURKERS VAN LURKERS!" ], "sksp0384": [ - "DESTROY THOSE GENERATORS!" + "VERNIETIG DIE GENERATOREN!" ], "sksp0385": [ - "PUSH THE BUTTON!" + "DRUK OP DE KNOP!" ], "sksp0386": [ - "THAT ROBOT DOESN'T SCARE ME!" + "DIE ROBOT MAAKT MIJ NIET BANG!" ], "sksp0387": [ - "LET'S GO CLIMB UP THOSE PLATFORMS!" + "LATEN WE DIE PLATFORMEN BEKLIMMEN!" ], "sksp0388": [ - "DON'T MISS THE NEXT LAUNCHER!" + "MIS DE VOLGENDE LANCERING NIET!" ], "sksp0389": [ - "WATCH IT!" + "BEKIJK HET!" ], "sksp0390": [ "WE MOETEN ALLE WIJZEN REDDEN!" ], "sksp0391": [ - "DO YOU THINK GOL WILL STILL CHANGE ME BACK?" + "DENK JE DAT GOL ME NOG STEEDS TERUG ZAL VERANDEREN?" ], "sksp0392": [ - "SO THIS IS GOL AND MAIA'S CITADEL. NICE AND COZY." + "DUS DIT IS GOL EN MAIA'S CITADEL. LEUK EN GEZELLIG." ], "sksp0393": [ - "LAND ON THE NEXT LAUNCHER!" + "LAND OP DE VOLGENDE LAUNCHER!" ], "sksp0394": [ - "GRAB THE YELLOW ECO!" + "PAK DE GELE ECO!" ], "sksp0395": [ - "SHOOT THE ROBOT, JAK!" + "SCHIET DE ROBOT, JAK!" ], "sksp0396": [ - "SHOOT HIS ARM!" + "SCHIET ZIJN ARM!" ], "sksp0397": [ - "SHOOT HIS GUN!" + "SCHIET ZIJN PISTOOL!" ], "sksp0398": [ - "SHOOT HIS HEAD!" + "SCHIET ZIJN HOOFD!" ], "sksp0399": [ - "WATCH OUT FOR THE BLAST!" + "KIJK UIT VOOR DE BLAST!" ], "sksp0400": [ - "HE'S CHARGING UP!" + "HIJ IS AAN HET OPLADEN!" ], "sksp0401": [ - "GET THE BLUE ECO!" + "KRIJG DE BLAUWE ECO!" ], "sksp0402": [ - "GET THE RED ECO!" + "KRIJG DE RODE ECO!" ], "sksp0403": [ - "I HAVE A BAD FEELING ABOUT THIS!" + "IK HEB EEN SLECHT GEVOEL HIEROVER!" ], "sksp0404": [ - "USE THE LAUNCHER, QUICK!" + "GEBRUIK DE LAUNCHER, SNEL!" ], "sksp0405": [ - "NOW YOU'VE MADE THE ANIMAL MAD!" + "NU HEB JE HET DIER GEK GEMAAKT!" ], "sksp0406": [ - "WE CAN'T TOUCH THESE GUYS!" + "WIJ KUNNEN DEZE JONGENS NIET AANRAKEN!" ], "sksp0407": [ - "USE THE YELLOW ECO!" + "GEBRUIK DE GELE ECO!" ], "sksp0408": [ - "SHOOT THOSE GUYS!" + "SCHIET DIE JONGENS!" ], "sksp0409": [ - "GET THE LIGHT ECO, JAK!" + "KRIJG HET LICHT ECO, JAK!" ], "sksp0410": [ - "HE LOOKS ANGRY!" + "HIJ KIJKT BOOS!" ], "sksp0411": [ - "JUMP TO AVOID THE EXPLOSIONS!" + "SPRING OM DE EXPLOSIES TE VOORKOMEN!" ], "sksp0412": [ - "NOW WE TAKE CARE OF BUSINESS!" + "NU ZORGEN WIJ VOOR ZAKEN!" ], "sksp0413": [ - "GOOD SHOOTING, PARTNER!" + "GOED GESCHIET, PARTNER!" ], "sksp0414": [ - "THAT HURT HIM!" + "DAT DEED HEM PIJN!" ], "sksp0415": [ - "HERE HE COMES!" + "HIER KOMT HIJ!" ], "sksp0416": [ - "YEAH! YOU DID IT!" + "JA! JE HEBT HET GEDAAN!" ], "sksp0417": [ - "SAY \"GOOD NIGHT,\" GOL AND MAIA!" + "ZEG \"GOEDE NACHT\", GOL EN MAIA!" ], "sksp0435": [ - "KNOCK OVER THOSE BONES!" + "KLOP OM DIE BOTTEN!" ], "sksp0443": [ - "PUNCH THOSE POLES UP FROM BELOW!" + "SLA DIE PALEN VAN ONDERAAN OMHOOG!" ], "sksp0444": [ - "WE'RE WAITING. HELLO?" + "WE ZIJN AAN HET WACHTEN. HALLO?" ], "sksp0449": [ - "PRESS START TO PLAY." + "DRUK OP START OM TE SPELEN." ], "sksp0450": [ - "YOU WANNA STOP PLAYING?" + "WILT U STOPPEN MET SPELEN?" ], "sksp0451": [ - "I DIDN'T THINK SO." + "DAT DACHT IK NIET." ], "sksp0452": [ - "OKAY, SEE YA LATER." + "OKÉ, TOT ZIENS." ], "sksp0455": [ - "MAN, WHO ARE ALL THESE PEOPLE?" + "MAN, WIE ZIJN AL DEZE MENSEN?" ], "sksp0466": [ - "I WAS GOOD. WASN'T I, GIRLS?" + "IK WAS GOED. WAS IK DAT NIET, MEISJES?" ], "sksp0b42": [ - "STOP MISSING THE YELLOW FISH, THEY WEIGH FIVE POUNDS EACH!", - "AND THAT'S A LOTTA FISH, JAK." + "MIS NIETS DE GELE VISSEN, ZE WEGEN ELK VIJF PONDEN!", + "EN DAT IS VEEL VIS, JAK." ] }, "speakers": { "???": "???", "BILLY": "BILLY", - "BIRDWATCHER": "BIRDWATCHER", + "BIRDWATCHER": "VOGELAAR", "BLUE SAGE": "BLAUWE WIJZE", "DAXTER": "DAXTER", - "FARMER": "FARMER", - "FISHERMAN": "FISHERMAN", - "FLUT-FLUT": "FLUT-FLUT", - "GAMBLER": "GAMBLER", - "GEOLOGIST": "GEOLOGIST", + "FARMER": "BOER", + "FISHERMAN": "VISSER", + "FLUT-FLUT": "OVERSTROMING-OVERSTROMING", + "GAMBLER": "GOKKER", + "GEOLOGIST": "GEOLOOG", "GOL": "GOL", - "GORDY": "GORDY", - "JAK": "JAK", - "JAK'S UNCLE": "JAK'S UNCLE", + "GORDY": "GORDIE", + "JAK": "HOE", + "JAK'S UNCLE": "JAK'S OOM", "KEIRA": "KEIRA", "MAIA": "MAIA", - "MAYOR": "MAYOR", - "MINER": "MINER", - "OLD MAN": "OLD MAN", - "ORACLE": "ORACLE", + "MAYOR": "BURGEMEESTER", + "MINER": "MIJNWERKER", + "OLD MAN": "OUDE MAN", + "ORACLE": "ORAKEL", "RED SAGE": "RODE WIJZE", "SAMOS": "SAMOS", - "SCULPTOR": "SCULPTOR", - "WARRIOR": "WARRIOR", + "SCULPTOR": "BEELDHOUWER", + "WARRIOR": "STRIJDER", "WILLARD": "WILLARD", - "WOMAN": "WOMAN", + "WOMAN": "VROUW", "YELLOW SAGE": "GELE WIJZE" } } diff --git a/game/assets/jak1/subtitle/subtitle_lines_pt-BR.json b/game/assets/jak1/subtitle/subtitle_lines_pt-BR.json index 05780987ab..47e1486d5b 100644 --- a/game/assets/jak1/subtitle/subtitle_lines_pt-BR.json +++ b/game/assets/jak1/subtitle/subtitle_lines_pt-BR.json @@ -84,9 +84,9 @@ "AGORA VÃO PARA A ILHA DAS NÉVOAS, EU VOU ENVIAR O ZOOMER PARA LÁ." ], "assistant-village2-introduction": [ - "WHOA!", + "UAU!", "ACHO QUE NUNCA VOU ME ACOSTUMAR COM ESSE FORMIGAMENTO DO TELEPORTE.", - "HEY!", + "EI!", "PARECE QUE O SÁBIO AZUL DEU UMA FESTA.", "MINHA NOSSA! VILA DA PEDRA ESTÁ EM CHAMAS!", "UMA BELA FESTA.", @@ -200,8 +200,8 @@ "bird-lady-beach-resolution": [ "NOSSA!, EU ESPERO QUE O COITADINHO ESTEJA BEM,", "TOMA, UMA POWER CELL PELA SUA CORAGEM.", - "MAMA!", - "MAMA!", + "MAMÃE!", + "MAMÃE!", "OH NÃO! NÃO, NÃO, NÃO, NÃO!", "OLHA SÓ... NÃO É FOFO? ELE ACHA QUE VOCÊ É A MÃE DELE.", "EH? EU NÃO SOU TUA MÃE! TÁ VENDO ALGUMA PENA AQUI?", @@ -290,14 +290,14 @@ "BONS SONHOS, JAK!" ], "evilbro-misty-end": [ - "THOSE TWO COULD PROVE TO BE TROUBLE.", - "DON'T WORRY DEAR BROTHER, I'LL DISPATCH MY LURKER ARMY TO DEAL WITH THEM.", - "JUST MAKE SURE THEY DON'T GET TOO CLOSE TO OUR NORTHERN OPERATIONS.", - "I DOUBT THEY'LL GET THAT FAR...", - "BUT IF THEY DO, A SURPRISE WILL BE WAITING FOR THEM IN ROCK VILLAGE.", - "SO...YOU'RE GOING TO LET...KLAWW OUT OF HIS CAGE?", - "I THINK IT'S WORTH THE RISK.", - "INDEED..." + "ESSES DOIS PODEM SE TORNAR UM PROBLEMA.", + "NÃO SE PREOCUPE, QUERIDO IRMÃO, ENVIAREI MINHA TROPA DE LURKERS PARA LIDAR COM ELES.", + "SÓ GARANTA QUE ELES NÃO VÃO CHEGAR PERTO DEMAIS DAS OPERAÇÕES AO NORTE.", + "EU DUVIDO QUE ELES CHEGUEM TÃO LONGE...", + "MAS SE CHEGAREM, TERÃO UMA SURPRESA NA VILA DA PEDRA.", + "ENTÃO... VOCÊ VAI DEIXAR... O KLAWW SAIR DA GAIOLA?", + "ACHO QUE VALE O RISCO.", + "DE FATO..." ], "explorer-introduction": [ "OLÁ MEU QUERIDO MENINO.", @@ -486,7 +486,7 @@ "PARECE QUE ELES COMBINARAM PARTES FUNCIONAIS DO ROBÔ PRECURSOR", "COM ARTEFATOS RECOLHIDOS PELO MUNDO.", "E ELES ADICIONARAM MECANISMOS DIABÓLICOS PRÓPRIOS,", - "CRIANDO ALGO CAPAZ DE ABRIR OS RESERVATÓRIOS DE ECO NEGRO.", + "CRIANDO ALGO CAPAZ DE ABRIR OS RESERVATÓRIOS DE ECO SOMBRIO.", "SE VOCÊS PUDEREM LIBERTAR NÓS 4, PODEMOS USAR NOSSOS PODERES COMBINADOS", "PARA QUEBRAR O CAMPO DE FORÇA EM VOLTA DO ROBÔ,", "ANTES QUE ELES O USEM PARA DESTRUIR O MUNDO." @@ -507,7 +507,7 @@ "NADA DISSO SERIA POSSÍVEL.", "HM-HM-HM. TALVEZ TENHAMOS ACHADO UMA NOVA SÁBIA AGORA", "QUE GOL E MAIA SE FORAM...", - "SIM, GOL E MAIA... O ECO NEGRO PROVAVELMENTE DESTRUIU ELES.", + "SIM, GOL E MAIA... O ECO SOMBRIO PROVAVELMENTE DESTRUIU ELES.", "EH, PROVAVELMENTE...", "QUEM LIGA? DEIXA VIR, A GENTE APAGA ELES DE NOVO NÉ, JAK?", "EU DISSE, NÉ, JAK?", @@ -532,10 +532,10 @@ ], "green-sagecage-outro-preboss": [ "TARDE DEMAIS, SAMOS.", - "ASSIM QUE EU TIVER ECO NEGRO ILIMITADO,", + "ASSIM QUE EU TIVER ECO SOMBRIO ILIMITADO,", "EU TEREI A CHAVE PARA A PRÓPRIA CRIAÇÃO!", "ISSO É LOUCURA!", - "LIBERAR AQUELE TANTO DE ECO NEGRO IRÁ DESTRUIR TUDO QUE CONHECEMOS!", + "LIBERAR AQUELE TANTO DE ECO SOMBRIO IRÁ DESTRUIR TUDO QUE CONHECEMOS!", "OLHE O QUE ELE FEZ COM VOCÊ!", "NOS TROUXE BELEZA ALÉM DA SUA COMPREENSÃO.", "BELEZA? VOCÊS SE OLHARAM NO ESPELHO RECENTEMENTE?", @@ -651,7 +651,7 @@ "WILLARD!!" ], "minershort-reminder-2-orbs": [ - "DUH, GORDY?", + "UÉ, GORDY?", "90 ORBES POR UMA POWER CELL, WILLARD! URGH!" ], "minershort-resolution-1-orbs": [ @@ -730,7 +730,7 @@ "BEM, A SITUAÇÃO AQUI TÁ FEDENDO MAIS QUE SOVACO DE LURKER.", "ANTES DO SUMIÇO DO SÁBIO AZUL,", "ELE REGISTROU PROBLEMAS SIGNIFICATIVOS EM TODA REGIÃO EM VOLTA.", - "DE INTERESSE PARTICULAR MEU, ESTÁ A INFESTAÇÃO DE ECO NEGRO", + "DE INTERESSE PARTICULAR MEU, ESTÁ A INFECÇÃO DE ECO SOMBRIO", "EM PLANTAS INOCENTES NA BACIA PRECURSOR.", "KEIRA IRÁ TELEPORTAR O ZOOMER PARA O TRANS-PAD MAIS PRÓXIMO.", "LEVE O ZOOMER PARA UMA FONTE DE ECO VERDE,", @@ -754,7 +754,7 @@ "sage-bluehut-reminder-1-crop-dusting": [ "MEUS OLHOS DEVEM ESTAR ME ENGANANDO!", "PORQUE VOCÊS DOIS COM CERTEZA ESTÃO NA BACIA PRECURSOR,", - "SALVANDO AS PLANTAS INFECTADAS COM ECO NEGRO." + "SALVANDO AS PLANTAS INFECTADAS COM ECO SOMBRIO." ], "sage-bluehut-reminder-1-prec-arm": [ "O QUE VOCÊS ESTÃO FAZENDO VOLTANDO AQUI?", @@ -793,14 +793,14 @@ "NO ÚNICO LUGAR QUE EU DISSE PARA NÃO IREM: ILHA DAS NÉVOAS!", "FOI ISSO MESMO! E ENTÃ-", "E ENTÃO, DAXTER, VOCÊ FINALMENTE TOMOU UM BANHO,", - "MAS FOI EM UM POÇO DE ECO NEGRO.", + "MAS FOI EM UM POÇO DE ECO SOMBRIO.", "ESCUTA AQUI, COROA, VOCÊ VAI FICAR DANDO ESPORRO,", "OU VOCÊ VAI ME AJUDAR A SAIR DESSA?", "VOU FICAR DANDO ESPORRO! PORQUE NA MINHA OPINIÃO PROFISSIONAL,", "A MUDANÇA FOI UMA MELHORIA.", "E ALÉM DISSO... EU NÃO PODERIA TE AJUDAR MESMO SE QUISESSE", "QUÊ!?", - "SÓ EXISTE UMA PESSOA QUE ESTUDOU O ECO NEGRO POR TEMPO O BASTANTE", + "SÓ EXISTE UMA PESSOA QUE ESTUDOU O ECO SOMBRIO POR TEMPO O BASTANTE", "PARA TER UMA CHANCE DE TE TRAZER A SUA FORMA ANTIGA:", "GOL ACHERON, O SÁBIO.", "MAS ELE VIVE AO NORTE. LONGE, BEM LONGE AO NORTE.", @@ -832,7 +832,7 @@ "VOCÊS DOIS NÃO CONSEGUIRIAM NEM SAIR DA VILA SEM TREINAMENTO", "ANTES DE QUALQUER COISA, VOCÊS VÃO ENTRAR NO TELEPORTADOR", "E TREINAR NA GEYSER ROCK .", - "UH, NÃO VAI TER NENHUM ECO NEGRO GOSMENTO LÁ NÉ?", + "UH, NÃO VAI TER NENHUM ECO SOMBRIO GOSMENTO LÁ NÉ?", "PORQUE EU ODIARIA CAIR NELE DE NOVO E TRANSFORMAR EM VOCÊ!", "VÃO LÁ AGORA! ANTES QUE EU TRANSFORME VOCÊS DOIS EM SAMAMBAIAS" ], @@ -854,7 +854,7 @@ "ÓTIMO, EU QUERIA FALAR COM VOCÊS SOBRE ALGO SÉRIO.", "PARECE HAVER BASTANTE CIRCULAÇÃO DE LURKERS NA ILHA DAS NÉVOAS.", "EU CONSIGO VÊ-LOS BOMBARDEANDO O ARMAZÉM PRECURSOR PELA MINHA TORRE DE VIGIA.", - "SE OS LURKERS CONSEGUIREM ABRIR E LIBERAR O ECO NEGRO, NÓS PODEMOS", + "SE OS LURKERS CONSEGUIREM ABRIR E LIBERAR O ECO SOMBRIO, NÓS PODEMOS", "ACABAR TENDO QUE ANDAR POR AÍ IGUAL A ESSE PEQUENO ESPÉCIME.", "JAK, É HORA DE VOCÊ PROVAR O SEU VALOR.", "PEÇA EMPRESTADO O BARCO DO PESCADOR PARA IR À ILHA DAS NÉVOAS", @@ -895,22 +895,22 @@ "NÃO FOI NEM UM POUCO DIVERTIDO.", "GOL? É VOCÊ?", "VOCÊ FINALMENTE CHEGOU NO FUNDO DO POÇO, EH?", - "E, MAIA! EU DISSE QUE O ECO NEGRO IRIA AFETAR VOCÊS DOIS!", + "E, MAIA! EU DISSE QUE O ECO SOMBRIO AFETARIA VOCÊS DOIS!", "HNG, NINGUÉM DÁ OUVIDOS AO VELHO SAMOS...", "O QUE VOCÊS FIZERAM COM OS SÁBIOS AZUL E VERMELHO?", "NÃO SE PREOCUPE COM SEUS AMIGOS COLORIDOS, SEU VELHO TOLO.", "ELES ESTÃO PERFEITAMENTE SEGUROS NA NOSSA CIDADELA. SÃO NOSSOS CONVIDADOS ESPECIAIS.", "ELES GRACIOSAMENTE CONCORDARAM EM NOS AJUDAR EM NOSSO PEQUENO PROJETO.", - "VOCÊ ESTAVA ERRADO, SAMOS. O ECO NEGRO PODE SER CONTROLADO!", + "VOCÊ ESTAVA ERRADO, SAMOS. O ECO SOMBRIO PODE SER CONTROLADO!", "NÓS DESCOBRIMOS SEUS SEGREDOS, E AGORA PODEMOS REFAZER O MUNDO AO NOSSO GOSTO.", - "NÃO SE PODE CONTROLAR O ECO NEGRO POR CONTA PRÓPRIA, NEM OS PRECURSORES CONSEGUIAM", + "NÃO SE PODE CONTROLAR O ECO SOMBRIO POR CONTA PRÓPRIA, NEM OS PRECURSORES CONSEGUIAM", "ATÉ AGORA, TIVEMOS QUE NOS VIRAR COM O", "POUCO QUE ACHÁVAMOS NA SUPERFÍCIE.", "MAS EM BREVE, TEREMOS ACESSO AS VASTAS RESERVAS", - "DE ECO NEGRO ESCONDIDA NO FUNDO DO SUBSOLO.", + "DE ECO SOMBRIO ESCONDIDA NO FUNDO DO SUBSOLO.", "NÃO OS RESERVATÓRIOS!", "SIM, OS RESERVATÓRIOS!", - "ELES SERÃO ABERTOS, E TODO ECO NEGRO DO MUNDO SERÁ NOSSO!", + "ELES SERÃO ABERTOS, E TODO ECO SOMBRIO DO MUNDO SERÁ NOSSO!", "MAS ISSO É IMPOSSÍVEL! APENAS UM ROBÔ PRECURSOR PODERIA-", "OH, NÃO FIQUE TÃO CHATEADO, SAMOS.", "TEMOS GRANDES PLANOS PARA VOCÊ.", @@ -921,7 +921,7 @@ "GOL É O CARA QUE TÁ TENTANDO NOS MATAR?!", "TÔ PERDIDO.", "TALVEZ ESTEJAMOS TODOS PERDIDOS.", - "SE ELES ABRIREM OS RESERVATÓRIOS, O ECO NEGRO IRÁ", + "SE ELES ABRIREM OS RESERVATÓRIOS, O ECO SOMBRIO IRÁ", "CORROMPER E DESTRUIR TUDO QUE TOCAR!", "NÓS PRECISAMOS IR À CIDADELA E IMPEDI-LOS!", "O CAMINHO MAIS RÁPIDO ATÉ LÁ É PELO TÚNEL DE LAVA", @@ -938,7 +938,7 @@ "DEIXA EU ADIVINHAR. TEM ARANHAS NA CAVERNA DAS ARANHAS, NÉ?", "É CLARO QUE TEM ARANHAS NA CAVERNA DAS ARANHAS!", "MAS ESSE É O MENOR DOS PROBLEMAS!", - "OS LURKERS ESTÃO ATRÁS DE CRISTAIS DE ECO NEGRO CONCENTRADO.", + "OS LURKERS ESTÃO ATRÁS DE CRISTAIS DE ECO SOMBRIO CONCENTRADO.", "VOCÊS PRECISAM DESTRUIR OS CRISTAIS ANTES QUE", "OS MONSTROS CONSIGAM LEVÁ-LOS!", "É PRA ONTEM!" @@ -946,12 +946,12 @@ "sage-village3-introduction-rams": [ "QUE BOM QUE VOCÊS DOIS ESTÃO AQUI, HÁ UMA MOVIMENTAÇÃO LURKER NAS MONTANHAS.", "PARECE QUE ELES ACHARAM E AGORA ESTÃO TENTANDO LEVAR,", - "ALGUMS TANQUES DE ECO NEGRO CONGELADOS NAS GELEIRAS.", + "ALGUMS TANQUES DE ECO SOMBRIO CONGELADOS NAS GELEIRAS.", "QUANDO ESTIVEREM LÁ RODANDO ATRÁS DE POWER CELLS, IMPEÇAM OS LURKERS,", - "E TIREM MAIS UM POUCO DE ECO NEGRO DA MÃO DO GOL." + "E TIREM MAIS UM POUCO DE ECO SOMBRIO DA MÃO DO GOL." ], "sage-village3-reminder-1-dark-eco": [ - "VOCÊ PRECISA DESTRUIR OS CRISTAIS DE ECO NEGRO NA CAVERNA DAS ARANHAS!" + "VOCÊ PRECISA DESTRUIR OS CRISTAIS DE ECO SOMBRIO NA CAVERNA DAS ARANHAS!" ], "sage-village3-reminder-1-rams": [ "NÃO PODEMOS DEIXAR OS LURKERS BOTAREM AS MÃOS NOS TANQUES DE ECO.", @@ -988,7 +988,7 @@ ], "sidekick-human-intro-sequence-c": [ "O QUE ESTAMOS FAZENDO AQUI, JAK? ESSE LUGAR DÁ MO MEDO!", - "HUH?", + "HÃ?", "PORCARIA PRECURSOR IDIOTA!", "EEK! QUE LAMA NEGRA É ESSA? NÃO PARECE MUITO AMIGÁVEL.", "O SÁBIO FALA TODA HORA SOBRE OS PRECURSORES QUE CONSTRUÍRAM ESSE LUGAR.", @@ -1039,7 +1039,7 @@ "EU NÃO QUERO ALINHAR ESSAS PONTES TÃO CEDO." ], "warrior-resolution": [ - "OH.", + "AH.", "MARAVILHA.", "VOCÊS ME TROUXERAM AS ORBES PRECURSORAS. (CHORA)", "TÁ CERTO.", @@ -1179,7 +1179,7 @@ "PEGOU ELE." ], "BIL-TA09": [ - "YEEHAW!" + "UHUU!" ], "BIL-TA1A": [ "PEGA ELES!" @@ -1215,7 +1215,7 @@ "VAMOS LÁ, EMPURRE O OVO DO PENHASCO!" ], "BIR-AM06": [ - "OHH!" + "AHH!" ], "BIR-AM07": [ "OH, AQUI, PASSARIN PASSARIN. AQUI, PASSARIN PASSARIN." @@ -1479,7 +1479,7 @@ "VOCÊ SÓ NÃO DESISTE, NÃO É?" ], "GOL-AM02": [ - "EM BREVE, O ECO NEGRO SERÁ NOSSO!" + "EM BREVE, O ECO SOMBRIO SERÁ NOSSO!" ], "GOL-AM03": [ "ACABE COM ELES!" @@ -1700,16 +1700,16 @@ "ISSO NÃO É BOM." ], "SAGELP32": [ - "CRISTAIS DE ECO NEGRO?" + "CRISTAIS DE ECO SOMBRIO?" ], "SAGELP33": [ "MAIA E GOL PERDERAM A CABEÇA!" ], "SAGELP34": [ - "HNG, O PODER DO ECO NEGRO NÃO PODE SER CONTROLADO!" + "HNG, O PODER DO ECO SOMBRIO NÃO PODE SER CONTROLADO!" ], "SAGELP35": [ - "ECO NEGRO NAS GELEIRAS?" + "ECO SOMBRIO NAS GELEIRAS?" ], "SAGELP36": [ "AH! TEM TROPAS LURKERS NAS MONTANHAS!" @@ -1951,7 +1951,7 @@ "EU TENHO QUE ADMITIR, ESTOU SURPRESO. VOCÊS DOIS NÃO ESTRAGARAM TUDO!", "AGORA QUE OS LURKERS NÃO CONSEGUEM ABRIR O ARMAZÉM,", "ELES NÃO PODEM INUNDAR O MUNDO", - "EM ECO NEGRO E CAUSAR UMA DESTRUIÇÃO INIMAGINÁVEL.", + "EM ECO SOMBRIO E CAUSAR UMA DESTRUIÇÃO INIMAGINÁVEL.", "TIRA ESSE SORRISO RIDÍCULO DA CARA, DAXTER,", "VOCÊS DOIS TEM MUITO O QUE FAZER.", "AGORA MÃOS À OBRA!" @@ -2045,7 +2045,7 @@ "HEY! AQUELA DELÍCINHA DA KEIRA TINHA RAZÃO, TEM TRANS-PADS AQUI." ], "sksp0002": [ - "CONFIA EM MIM, ESSAS CAIXAS DE ECO NEGRO SÃO PROBLEMA!" + "CONFIA EM MIM, ESSAS CAIXAS DE ECO SOMBRIO SÃO PROBLEMA!" ], "sksp0003": [ "APOSTO QUE SE ACHARMOS TODAS ESSAS MOSCAS DE BUSCA FOFINHAS EM CADA ÁREA", @@ -2114,7 +2114,7 @@ "YEAH HA HA HA HA HA!! WOO HO HO HO!" ], "sksp0023": [ - "WOOHOO!" + "UUUHUU!" ], "sksp0024": [ "YEAH HA HA! YEAH!" @@ -2232,7 +2232,7 @@ "NÓS PRECISAMOS DE ECO AZUL PRA ENERGIZAR ESSA PLATAFORMA!" ], "sksp0076": [ - "JAK! HIT SOME JUMPS TO KEEP US OFF THE HOT GROUND." + "JAK! DÊ ALGUNS SALTOS PARA NOS MANTER LONGE DO SOLO QUENTE." ], "sksp0077": [ "BALÕES BOM, MAGMA QUENTE FLAMEJANTE RUIM!" @@ -2251,7 +2251,7 @@ "AHH! TALVEZ EU DEVESSE PILOTAR!" ], "sksp0082": [ - "VOCÊ TÁ TENTANDO EVITAR AS CAIXAS DE ECO NEGRO, NÉ?!" + "VOCÊ TÁ TENTANDO EVITAR AS CAIXAS DE ECO SOMBRIO, NÉ?!" ], "sksp0083": [ "OOH! VÊ SE DÁ PRA PEGAR IMPULSO BATENDO NOS LURKERS!" @@ -2302,7 +2302,7 @@ "AEEE, MAIS ORBES!" ], "sksp009c": [ - "FAZ FAVOR E FICA LONGE DAS CAIXAS DE ECO NEGRO" + "FAZ FAVOR E FICA LONGE DAS CAIXAS DE ECO SOMBRIO" ], "sksp009d": [ "YEAH-HA-HA-HA!" @@ -2330,7 +2330,7 @@ ], "sksp0110": [ "EU JÁ FALEI ANTES, VOU FALAR DE NOVO...", - "EVITE AS CAIXAS DE ECO NEGRO!" + "EVITE AS CAIXAS DE ECO SOMBRIO!" ], "sksp0111": [ "VAMOS LEVAR ESSAS TOUPEIRAS DE VOLTA AO SUBSOLO." @@ -2385,10 +2385,10 @@ "CHUTA O CARINHA NO TOPO!" ], "sksp0128": [ - "JAK! CORRE! O ECO NEGRO ESTÁ SUBINDO!" + "JAK! CORRE! O ECO SOMBRIO ESTÁ SUBINDO!" ], "sksp0129": [ - "AHH! O ECO NEGRO TÁ CHEGANDO PERTO" + "AHH! O ECO SOMBRIO TÁ CHEGANDO PERTO" ], "sksp0130": [ "UH, ACHO QUE TEMOS QUE ATIVAR TODAS AS PLATAFORMAS." @@ -2559,16 +2559,16 @@ "CONSEGUIMOS! IMPEDIMOS ELES DE DETONAR A PASSAGEM!" ], "sksp0327": [ - "ACHO QUE ESSE FOI O ÚLTIMO CRISTAL DE ECO NEGRO!" + "ACHO QUE ESSE FOI O ÚLTIMO CRISTAL DE ECO SOMBRIO!" ], "sksp0328": [ "TALVEZ A GENTE ATIRE MELHOR SE VOCÊ MIRAR COM A SUA LENTE." ], "sksp0329": [ - "OH, NÃO! MAIS ECO NEGRO!" + "OH, NÃO! MAIS ECO SOMBRIO!" ], "sksp0330": [ - "NÃO ACHO QUE PEGAMOS TODOS OS CRISTAIS DE ECO NEGRO." + "NÃO ACHO QUE PEGAMOS TODOS OS CRISTAIS DE ECO SOMBRIO." ], "sksp0331": [ "ATIRE NOS LURKERS COMENDO AS PILARES!" @@ -2655,7 +2655,7 @@ "DESVIE OU ATIRE NAS MINAS, JAK!" ], "sksp0367": [ - "ACHE UM CAMINHO ENTRE OS BARRIS DE ECO NEGRO!" + "ACHE UM CAMINHO ENTRE OS BARRIS DE ECO SOMBRIO!" ], "sksp0368": [ "CONTINUE ACERTANDO ESSES BALÕES DE RESFRIAMENTO!" @@ -2854,7 +2854,7 @@ "KEIRA": "KEIRA", "MAIA": "MAIA", "MAYOR": "PREFEITO", - "MINER": "MINER", + "MINER": "MINEIRO", "OLD MAN": "VELHO", "ORACLE": "ORÁCULO", "RED SAGE": "SÁBIO VERMELHO", diff --git a/game/assets/jak1/subtitle/subtitle_lines_pt-PT.json b/game/assets/jak1/subtitle/subtitle_lines_pt-PT.json index 7e83eced39..ff9ec4ca9b 100644 --- a/game/assets/jak1/subtitle/subtitle_lines_pt-PT.json +++ b/game/assets/jak1/subtitle/subtitle_lines_pt-PT.json @@ -41,7 +41,7 @@ "THIS IS TERRIBLE! FATHER IS MISSING!", "I THINK GOL AND MAIA MAY HAVE KIDNAPPED HIM AS WELL!", "RELAX, SWEETHEART. I GOT EVERYTHING UNDER CONTROL.", - "UNDER CONTROL?!", + "SOBRE CONTROLO?!", "LURKER ARMIES CONTINUE TO GROW ACROSS THE LAND,", "THE SAGES HAVE BEEN KIDNAPPED,", "GOL AND MAIA HAVE GATHERED ENOUGH ECO", diff --git a/game/assets/jak1/text/game_custom_text_ca-ES.json b/game/assets/jak1/text/game_custom_text_ca-ES.json index 35679ec784..ccf4075892 100644 --- a/game/assets/jak1/text/game_custom_text_ca-ES.json +++ b/game/assets/jak1/text/game_custom_text_ca-ES.json @@ -1,85 +1,85 @@ { - "1000": "KAMERAN ASETUKSET", + "1000": "CONFIGURACIÓ DE LA CÀMERA", "1001": "NORMAL", - "1002": "INVERTED", - "1003": "1ST-PERSON HORIZONTAL CAMERA", - "1004": "1ST-PERSON VERTICAL CAMERA", - "1005": "3RD-PERSON HORIZONTAL CAMERA", - "1006": "3RD-PERSON VERTICAL CAMERA", - "1007": "RESTORE DEFAULTS", - "1010": "ACCESSIBILITY", - "1011": "PRECURSOR ORB GLOW", - "1020": "PS2 OPTIONS", - "1021": "PS2 LOAD SPEED", - "1022": "PARTICLE CULLING", - "1023": "MUSIC FADE-OUT", - "1024": "MUSIC FADE-IN", + "1002": "INVERTIDA", + "1003": "CÀMARA HORIZONTAL EN 1º PERSONA", + "1004": "CÀMARA VERTICAL 1º PERSONA", + "1005": "CÀMERA HORIZONTAL EN 3º PERSONA", + "1006": "CÀMERA VERTICAL EN 3º PERSONA", + "1007": "RESTAURAR ELS VALORS PREDETERMINATS", + "1010": "ACCESSIBILITAT", + "1011": "ORBE PRECURSOR BRILLANT", + "1020": "OPCIONS PS2", + "1021": "VELOCITAT DE CÀRREGA PS2", + "1022": "COLLANT DE PARTÍCULES", + "1023": "FADE-OUT DE LA MÚSICA", + "1024": "FADE-IN DE LA MÚSICA", "1025": "ACTOR CULLING", - "1026": "BACKGROUND CULLING", - "1027": "FORCE ENVIRONMENT MAPPING", - "1030": "DISCORD RICH-PRESENCE", - "1031": "DISPLAY MODE", - "1032": "WINDOWED", - "1033": "BORDERLESS", - "1034": "FULLSCREEN", - "1035": "GAME RESOLUTION", + "1026": "CULLING DE FONAMENTS", + "1027": "CARTOGRAFIA DE L'AMBIENT DE FORÇA", + "1030": "DISCORD RICA-PRESÈNCIA", + "1031": "MODE DE PANTALLA", + "1032": "FINESTRES", + "1033": "SENSE BORDES", + "1034": "PANTALLA COMPLETA", + "1035": "RESOLUCIÓ DEL JOC", "1036": "~D X ~D", - "1037": "PS2 ASPECT RATIO", - "1038": "WHEN PS2 ASPECT RATIO IS ENABLED, ONLY 4X3 AND 16X9 ASPECT RATIO CAN BE SELECTED. CONTINUE?", - "1039": "ASPECT RATIO (PS2)", - "1040": "SUBTITLES ENABLED", - "1041": "SUBTITLES DISABLED", - "1042": "TEXT LANGUAGE", - "1043": "DISPLAY", - "1044": "DISPLAY ~D", + "1037": "RELACIÓ D'ASPECTES PS2", + "1038": "QUAN ESTÀ HABILITAT LA RELACIÓ D'ASPECTES PS2, NOMÉS ES POT SELECCIONAR LA RELACIÓ D'ASPECTES 4X3 I 16X9. CONTINUAR?", + "1039": "RELACIÓ D'ASPECT (PS2)", + "1040": "SUBTÍTOLS ACTIVATS", + "1041": "SUBTÍTOLS DISCAPACITATS", + "1042": "LLENGUATGE DE TEXT", + "1043": "VISUALITZACIÓ", + "1044": "PANTALLA ~D", "1050": "MSAA", "1051": "~DX", "1052": "2X", "1053": "4X", "1054": "8X", "1055": "16X", - "1060": "FRAME RATE (EXPERIMENTAL)", + "1060": "VELOCITAT DE FRAMES (EXPERIMENTAL)", "1061": "60", "1062": "100", "1063": "150", - "1070": "LEVEL OF DETAIL (BACKGROUND)", - "1071": "LEVEL OF DETAIL (FOREGROUND)", - "1072": "MAXIMUM", - "1073": "HIGH", - "1074": "MEDIUM", - "1075": "LOW", - "1076": "MINIMUM", + "1070": "NIVELL DE DETALLS (FONDS)", + "1071": "NIVELL DE DETALL (PRIMER PLA)", + "1072": "MÀXIM", + "1073": "ALTA", + "1074": "MITJÀ", + "1075": "BAIX", + "1076": "MINIM", "1077": "PS2", - "1078": "SUBTITLES", - "1079": "HINT SUBTITLES", - "1080": "CHEATS", + "1078": "SUBTÍTOLS", + "1079": "SUBTÍTOLS CONSELLS", + "1080": "TRAMPES", "1081": "SECRETS", - "1082": "SELECT TRACK", - "1083": "SELECT FLAVOR", - "1084": "FINAL BOSS", - "1085": "CREDITS", + "1082": "SELECCIONA LA PISTA", + "1083": "SELECCIONA EL SABOR", + "1084": "CAP FINAL", + "1085": "CRÈDITS", "1086": "?????", "1087": "KLAWW", - "1088": "FISHING MINI-GAME", - "1089": "CHALLENGE THEME", - "1090": "INFINITE BLUE ECO", - "1091": "INFINITE RED ECO", - "1092": "INFINITE GREEN ECO", - "1093": "INFINITE YELLOW ECO", - "1094": "ALTERNATE DAXTER", - "1095": "INVINCIBILITY", - "1096": "ALL MUSIC TRACKS", - "1097": "REAL TIME OF DAY", - "1098": "REACH 100% COMPLETION", - "1099": "BEAT THE GAME", - "1100": "YELLOW SAGE", - "1101": "RED SAGE", - "1102": "BLUE SAGE", - "1103": "CITADEL HUB", - "1104": "MIDDLE OF THE BOSS", - "1105": "END OF THE BOSS", - "1106": "FLAVOR 1", - "1107": "FLAVOR 2", + "1088": "MINI-JOC DE PESCA", + "1089": "TEMA REPTE", + "1090": "ECO BLAU INFINIT", + "1091": "VERMELL INFINIT ECO", + "1092": "ECO VERD INFINIT", + "1093": "GROC INFINIT ECO", + "1094": "DAXTER ALTERN", + "1095": "INVENCIBILITAT", + "1096": "TOTES LES PETS DE MÚSICA", + "1097": "HORA REAL DEL DIA", + "1098": "ACONSEGUIR EL 100% COMPLET", + "1099": "GANA EL JOC", + "1100": "SALVIA GROC", + "1101": "SALVIA VERMELLA", + "1102": "SALVIA BLAU", + "1103": "CENTRE CIUTADELLA", + "1104": "MITJÀ DEL CAP", + "1105": "FINAL DEL CAP", + "1106": "SABOR 1", + "1107": "SABOR 2", "1110": "ENGLISH (UK)", "1111": "PORTUGUÊS", "1112": "PORTUGUÊS (BRASIL)", @@ -93,135 +93,135 @@ "111a": "ÍSLANDSKA", "111b": "POLSKI", "111c": "LIETUVIŲ KALBA", - "1500": "SPEEDRUNNER MODE", - "138": "PLEASE DO NOT REMOVE OR INSERT ANY PERIPHERALS, TURN OFF YOUR SYSTEM OR SHUT DOWN THE GAME", - "161": "WHILE THIS ICON IS ON SCREEN, DO NOT REMOVE OR INSERT ANY PERIPHERALS, TURN OFF YOUR SYSTEM OR SHUT DOWN THE GAME", - "100c": "AUTO-SAVE DISABLED", - "100d": "ARE YOU SURE YOU WANT TO DISABLE AUTO-SAVE?", - "100e": "DISABLE AUTO-SAVE", - "100f": "MISCELLANEOUS", - "103a": "FIT TO SCREEN", + "1500": "MODE SPEEDRUNNER", + "138": "SI US PLAU, NO TREURES NI INSERIS CAP PERIFÈRIC, NO APAGIS EL SISTEMA NI TANGAS EL JOC", + "161": "MENTRE AQUESTA ICONA ESTÀ A LA PANTALLA, NO TREURES NI INSEIXIS CAP PERIFÈRIC, NO APAGIS EL SISTEMA NI TANGAS EL JOC", + "100c": "DESA AUTOMÀTIC DESACTIVAT", + "100d": "ESTEU SEGUR QUE VOLEU DESACTIVAR EL DESA AUTOMÀTIC?", + "100e": "DESACTIVAR DESA AUTOMÀTIC", + "100f": "DIVERS", + "103a": "AJUSTE A LA PANTALLA", "103b": "V-SYNC", "103c": "4X3 (PS2)", "103d": "16X9 (PS2)", "103e": "~DX~D", - "103f": "PRESS TO TOGGLE SUBTITLES", - "107a": "SUBTITLE LANGUAGE", - "107b": "SHOW SPEAKER IN SUBTITLE", - "107c": "ALWAYS", - "107d": "NEVER", - "107e": "OFF-SCREEN", - "107f": "HINT LOG", - "109a": "BIG HEAD JAK", - "109b": "SMALL HEAD JAK", - "109c": "BIG FIST JAK", - "109d": "BIG HEAD CHARACTERS", - "109e": "NO TEXTURES MODE", - "109f": "MIRRORED WORLD", - "10a0": "HUGE HEAD JAK", - "10c0": "MUSIC PLAYER", - "10c1": "SCENE PLAYER", - "10c2": "PLAY CREDITS", - "10c3": "SCRAPBOOK", - "10d0": "DEFAULT", - "10d1": "UNUSED", - "10d2": "SAGE", - "10d3": "SAGE'S HUT", - "10d4": "BIRDWATCHER", - "10d5": "FARMER", + "103f": "PREMEU PER CANVIAR SUBTÍTOLS", + "107a": "LLENGUA DEL SUBTÍTOL", + "107b": "MOSTRA L'ORADOR EN EL SUBTÍTOL", + "107c": "SEMPRE", + "107d": "MAI", + "107e": "FORA DE PANTALLA", + "107f": "REGISTRE DE CONSELLS", + "109a": "CAP GRAN JAK", + "109b": "CAP PETIT JAK", + "109c": "GRAN PUNT COM", + "109d": "PERSONATGES DE CAP GRAN", + "109e": "MODE SENSE TEXTURES", + "109f": "MÓN ESPIRAL", + "10a0": "CAP ENORME JAK", + "10c0": "REPRODUCTOR DE MÚSICA", + "10c1": "REPRODUCTOR D'ESCENA", + "10c2": "CRÈDITS DE JOC", + "10c3": "LLIBRE DE RECORDS", + "10d0": "PER DEFECTE", + "10d1": "NO UTILITZAT", + "10d2": "SALVI", + "10d3": "CABANA DEL SAVI", + "10d4": "OBSERVADOR D'OCELLS", + "10d5": "GRANGER", "10d6": "KEIRA", - "10d7": "MAYOR", - "10d8": "SCULPTOR", - "10d9": "JAK'S UNCLE", + "10d7": "ALCALDE", + "10d8": "ESCULTOR", + "10d9": "L'ONLE DE JAK", "10da": "DOCK", - "10db": "FORBIDDEN TEMPLE EXIT", - "10dc": "LURKER MACHINE", - "10dd": "TOP OF THE TOWER", - "10de": "BLUE VENT SWITCH", - "10df": "UNUSED", - "10e0": "SENTINELS", - "10e1": "LURKER CANNON", - "10e2": "GROTTO", - "10e3": "UNUSED 1", - "10e4": "LURKER BOAT", - "10e5": "UNUSED 2", - "10e6": "ZOOMER", - "10e7": "FLUT FLUT", - "10e8": "UNUSED", - "10e9": "WARRIOR", - "10ea": "GEOLOGIST", - "10eb": "GAMBLER", - "10ec": "LEVITATOR MACHINE", - "10ed": "UNUSED 1", - "10ee": "LAUNCHER TRAPS", - "10ef": "UNUSED 2", - "10f0": "DEAD MAN'S GORGE", - "10f1": "MIDDLE OF THE PASS", - "10f2": "END OF THE PASS", - "10f3": "TO SPIDER CAVE", - "10f4": "TO SNOWY MOUNTAIN", + "10db": "SORTIDA PROHIBIDA DEL TEMPLE", + "10dc": "MÀQUINA LURKER", + "10dd": "TOP DE LA TORRE", + "10de": "INTERRUPTOR BLAU DE VENT", + "10df": "NO UTILITZAT", + "10e0": "SENTINELLES", + "10e1": "CANON LURKER", + "10e2": "GROTTA", + "10e3": "NO UTILITZAT 1", + "10e4": "BARCA LURKER", + "10e5": "NO UTILITZAT 2", + "10e6": "ZOOM", + "10e7": "INUNDACIÓ", + "10e8": "NO UTILITZAT", + "10e9": "GUERRER", + "10ea": "GEÒLOGA", + "10eb": "JUGADOR", + "10ec": "MÀQUINA LEVITADORA", + "10ed": "NO UTILITZAT 1", + "10ee": "TRAMPES DE LLANÇADOR", + "10ef": "NO UTILITZAT 2", + "10f0": "GORGA DEL MORTE", + "10f1": "MITJÀ DEL PAS", + "10f2": "FI DEL PAS", + "10f3": "A LA COVA DE L'ARANYA", + "10f4": "A LA MUNTANYA NEVADA", "10f5": "MINERS", - "10f6": "ROBOT CAVE SCAFFOLDING", - "10f7": "PRECURSOR ROBOT TOP", - "10f8": "MAIN CAVE", - "10f9": "DARK CAVE", - "10fa": "UNUSED", - "10fb": "HIDDEN CAVE", + "10f6": "BASTIDIA DE LA COVA DEL ROBOT", + "10f7": "TOP ROBOT PRECURSOR", + "10f8": "COVA PRINCIPAL", + "10f9": "COVA FOSC", + "10fa": "NO UTILITZAT", + "10fb": "COVA OCULTA", "10fc": "LURKER FORT", - "10fd": "SNOWBALLS", - "10fe": "MIDDLE OF THE TUBE", - "10ff": "END OF THE TUBE", - "1501": "CUTSCENE SKIPS", - "1502": "CHECKPOINT SELECT", - "1503": "SPEEDRUN OPTIONS", - "1504": "CAUTION: THESE OPTIONS WILL AUTO SAVE IN YOUR FIRST SAVE SLOT!", - "1505": "RESET CURRENT SPEEDRUN", - "1506": "NEW FULL GAME RUN", - "150e": "NEW INDIVIDUAL LEVEL RUN", + "10fd": "BOLES DE NEU", + "10fe": "MITJÀ DEL TUBO", + "10ff": "EXTREM DEL TUBO", + "1501": "SALTS DE CORTE", + "1502": "SELECCIONAR PUNT DE CONTROL", + "1503": "OPCIONS DE VELOCITAT", + "1504": "ATENCIÓ: AQUESTES OPCIONS ES DESARAN AUTOMÀTICAMENT A LA VOSTRA PRIMER RANURA DE DESA.", + "1505": "RESTABLEIX LA VELOCITAT ACTUAL", + "1506": "NOVA JORNADA COMPLETA", + "150e": "NOU CURSA DE NIVELL INDIVIDUAL", "150f": "GEYSER ROCK IL", "1510": "SANDOVER VILLAGE IL", - "1511": "SENTINEL BEACH IL", - "1512": "FORBIDDEN JUNGLE IL", - "1513": "MISTY ISLAND IL", - "1514": "FIRE CANYON IL", - "1515": "ROCK VILLAGE IL", - "1516": "LOST PRECURSOR CITY IL", - "1517": "BOGGY SWAMP IL", - "1518": "PRECURSOR BASIN IL", - "1519": "MOUNTAIN PASS IL", - "151a": "VOLCANIC CRATER IL", - "151b": "SNOWY MOUNTAIN IL", - "151c": "SPIDER CAVE IL", - "151d": "LAVA TUBE IL", - "151e": "GOL AND MAIA'S CITADEL IL", - "151f": "NEW CATEGORY EXTENSION RUN", + "1511": "PLATJA SENTINELLA IL", + "1512": "SELVA PROHIBIDA IL", + "1513": "ILLA BOIRA IL", + "1514": "CANÓ DE FOC IL", + "1515": "ROCK VILLAGE IT", + "1516": "CIUTAT PIONERA PERDUDA IL", + "1517": "BOGGY SAMP IL", + "1518": "CONCA DEL PRECURSOR IL", + "1519": "COLL DE MUNTANYA IL", + "151a": "CRÀTER VOLCÀNIC IL", + "151b": "MUNTANYA NEVADA IL", + "151c": "COVA DE L'ARANYA IL", + "151d": "LAVA TUBE IT", + "151e": "GOL I CIUTADELLA DE MAIA IL", + "151f": "NOVA EXTENSIÓ DE CATEGORIA", "1520": "NG+", "1521": "HUB 1 100%", "1522": "HUB 2 100%", "1523": "HUB 3 100%", - "1524": "ALL CUTSCENES", - "1600": "INPUT OPTIONS", - "1601": "SELECT CONTROLLER", - "1602": "ANALOG DEADZONE", - "1603": "IGNORE IF WINDOW UNFOCUSED", - "1604": "CONTROLLER LED FOR HP", - "1605": "CONTROLLER LED FOR ECO", - "1606": "TRACK CAMERA", - "1607": "HORIZONTAL SENSITIVITY", - "1608": "VERTICAL SENSITIVITY", - "1609": "PLAYER MOVEMENT", - "160a": "CONTROLLER BINDS", - "160b": "KEYBOARD BINDS", - "160c": "MOUSE BINDS", - "160d": "CONTROLLER OPTIONS", - "160e": "ENABLE KEYBOARD", - "160f": "ENABLE MOUSE", - "1610": "MOUSE OPTIONS", - "1611": "REASSIGN BINDS", - "1612": "CONTROLLER ~D", - "1613": "AUTO HIDE CURSOR", + "1524": "TOTES LES ESCENES DE CORTE", + "1600": "OPCIONS D'ENTRADA", + "1601": "SELECCIONA EL CONTROLADOR", + "1602": "ZONA MORTA ANALÒGICA", + "1603": "IGNOREU SI LA FINESTRA ESTÀ DESENFOCADA", + "1604": "LED CONTROLADOR PER HP", + "1605": "CONTROLADOR LED PER ECO", + "1606": "CÀMARA DE PISTA", + "1607": "SENSIBILITAT HORIZONTAL", + "1608": "SENSIBILITAT VERTICAL", + "1609": "MOVIMENT DEL JUGADOR", + "160a": "EL CONTROLADOR VINCULA", + "160b": "ENLLAÇOS DE TECLAT", + "160c": "ENLLAÇOS DEL RATOLÍ", + "160d": "OPCIONS DEL CONTROLADOR", + "160e": "HABILITA EL TECLAT", + "160f": "HABILITA EL RATOLÍ", + "1610": "OPCIONS DEL RATOLÍ", + "1611": "REASSIGNAR VINCULATS", + "1612": "CONTROLADOR ~D", + "1613": "AMAGA EL CURSOR AUTOMÀTIC", "1614": "UNSET", - "1615": "UNKNOWN", - "1616": "NO OTHER OPTIONS FOR ASPECT RATIO", - "1617": "CONTROLLER LED FOR HEAT" + "1615": "DESCONEGUT", + "1616": "CAP ALTRES OPCIONS PER A LA RELACIÓ D'ASPECT", + "1617": "LED CONTROLADOR DE CALOR" } diff --git a/game/assets/jak1/text/game_custom_text_de-DE.json b/game/assets/jak1/text/game_custom_text_de-DE.json index 5cf23e26ea..8c2e7ee330 100644 --- a/game/assets/jak1/text/game_custom_text_de-DE.json +++ b/game/assets/jak1/text/game_custom_text_de-DE.json @@ -219,7 +219,7 @@ "1610": "MAUS OPTIONEN", "1611": "TASTENBELEGUNG ÄNDERN", "1612": "CONTROLLER ~D", - "1613": "CURSOR VERSTECKEN", + "1613": "CURSOR AUTOMATISCH VERSTECKEN", "1614": "UNBELEGT", "1615": "UNBEKANNT", "1616": "KEINE WEITEREN OPTIONEN FÜR SEITENVERHÄLTNIS", diff --git a/game/assets/jak2/subtitle/subtitle_lines_ca-ES.json b/game/assets/jak2/subtitle/subtitle_lines_ca-ES.json index 1eedfcf5e8..dd4972fa6d 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_ca-ES.json +++ b/game/assets/jak2/subtitle/subtitle_lines_ca-ES.json @@ -2,213 +2,213 @@ "cutscenes": {}, "other": { "DSbop001": [ - "You sure seem angry, Jak." + "Segur que sembla enfadat, Jak." ], "DSbop002": [ - "Do you remember how to jump?" + "Recordes com saltar?" ], "DSbop003": [ - "Jump onto that crate to get over the barricade." + "Salta sobre aquesta caixa per superar la barricada." ], "DSbop004": [ - "Ooh, that's a high ledge!", - "Try jumping once, then jump again while in the air", - "to reach that one." + "Oh, això és una cornisa alta!", + "Intenta saltar una vegada i després torna a saltar mentre estàs a l'aire", + "per arribar a aquell." ], "DSbop005": [ - "Good job, see? You still got it!" + "Bona feina, veus? Encara ho tens!" ], "DSbop006": [ - "I never found hide nor hair of Keira or Samos.", - "I don't know where they went." + "Mai vaig trobar pell ni cabell de Keira o Samos.", + "No sé on van anar." ], "DSbop007": [ - "I don't know where that crazy rift vehicle took us, but...", - "It's some kind of big city!" + "No sé on ens va portar aquell boig vehicle del rift, però...", + "És una mena de ciutat gran!" ], "DSbop008": [ - "It's a tough place, Jak. You DO remember", - "how to fight, right? Try breaking that crate with a kick." + "És un lloc difícil, Jak. T'en recordes", + "com lluitar, oi? Intenta trencar aquesta caixa amb una puntada de peu." ], "DSbop009": [ - "Looking good, partner! Nice spin kick!", - "Works out some of that anger, eh?" + "Es veu bé, company! Bona puntada de gir!", + "Funciona una mica d'aquesta ira, eh?" ], "DSbop010": [ - "There are lots of Krimzon Guard crates lying around", - "for the taking. Break that crate!" + "Hi ha moltes caixes de la Guàrdia Krimzon al voltant", + "per a la presa. Trenca aquesta caixa!" ], "DSbop011": [ - "Good job! That crate had a health pack inside.", - "Pick it up, you'll wanna keep healthy, Jak, or uh heh...", - "who'll do the fighting?" + "Bona feina! Aquella caixa tenia un paquet de salut a dins.", + "Agafa-ho, voldràs mantenir-te sa, Jak, o eh, eh...", + "qui farà la lluita?" ], "DSbop016": [ - "If you jump then dive, you'll crash down to the ground", - "hard enough to break lots of things.", - "Breaking stuff's fun, right?" + "Si saltes i et submergeixes, t'estavellaràs a terra", + "prou difícil per trencar moltes coses.", + "Trencar coses és divertit, oi?" ], "DSbop017": [ - "Guards, Jak! Do your, uh... stuff." + "Guàrdies, Jak! Fes les teves, eh... coses." ], "agnt001": [ - "Hey hey, drive carefully!" + "Ei, ei, condueix amb compte!" ], "agnt002": [ - "Look out!" + "Estar atent!" ], "agnt003": [ - "Watch it!" + "Mireu-ho!" ], "agnt004": [ - "Whoa whoa whoa whoa!" + "Whoa whoa whoa!" ], "agnt005": [ - "Whoa!" + "Vaja!" ], "agnt006": [ - "You're crazy!" + "Estas boig!" ], "agnt007": [ - "Are you out of your mind!?" + "Estàs boig!?" ], "agnt008": [ - "Watch out!" + "Ves amb compte!" ], "agnt009": [ - "That one hurt!" + "Aquell va fer mal!" ], "agnt010": [ - "Stay sharp, we've got a tough part of town coming up." + "Estigueu atents, tenim una part difícil de la ciutat." ], "agnt011": [ - "Now we're in for it!" + "Ara estem a punt!" ], "agnt012": [ - "You're wasting citizens!" + "Esteu malgastant ciutadans!" ], "agnt013": [ - "Don't hit the civvies, man!" + "No pegueu als civils, home!" ], "agnt014": [ - "Man, you are hitting people!" + "Home, estàs pegant gent!" ], "agnt015": [ - "Look where you're going!" + "Mira on vas!" ], "agnt016": [ - "Go man!" + "Va home!" ], "agnt017": [ - "Keep your head down!" + "Mantingueu el cap avall!" ], "agnt018": [ - "They're shooting at us!" + "Ens estan disparant!" ], "agnt019": [ - "We are dead if you don't drive faster!" + "Estem morts si no condueixes més ràpid!" ], "agnt020": [ - "Keep going!" + "Segueix així!" ], "agnt021": [ - "Do it, man, do it!" + "Fes-ho, home, fes-ho!" ], "agnt022": [ - "Hurry up, man!" + "Afanya't, home!" ], "agnt023": [ - "I ain't riding on the back, pick up a two-seater!" + "No vaig a l'esquena, agafa un biplaça!" ], "agnt024": [ - "Get a bigger car!" + "Aconsegueix un cotxe més gran!" ], "agnt025": [ - "Get a bigger vehicle." + "Aconsegueix un vehicle més gran." ], "agnt026": [ - "Get one with two seats, will ya?" + "Aconsegueix-ne un amb dos seients, oi?" ], "agnt027": [ - "Get another vehicle." + "Aconsegueix un altre vehicle." ], "agnt028": [ - "They're onto us." + "Ens apunten." ], "agnt029": [ - "We're being followed." + "Ens segueixen." ], "agnt030": [ - "We're taking a beating!" + "Estem donant una pallissa!" ], "agnt031": [ - "We can't take much more of that!" + "No en podem aguantar gaire més!" ], "agnt032": [ - "Are you trying to die!?" + "Estàs intentant morir!?" ], "agnt033": [ - "Where did Torn find you?" + "On et va trobar en Torn?" ], "agnt034": [ - "You sure you're on our side?" + "Segur que estàs al nostre costat?" ], "agnt035": [ - "Turn, TURN!" + "Gira, GIRA!" ], "agnt036": [ - "Good move." + "Bona jugada." ], "agnt037": [ - "Death to the Baron!" + "Mort al baró!" ], "agnt038": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Gràcies Mar, estàs aquí, els guàrdies de Krimzon són a tot arreu!" ], "agnt039": [ - "It's about time, let's get out of here!" + "Ja era hora, sortim d'aquí!" ], "agnt040": [ - "Good, good, just in time. GO, GO, GO!" + "Bé, bé, just a temps. ANEM ANEM ANEM!" ], "agnt041": [ - "Finally, we need to move!" + "Per fi, ens hem de moure!" ], "agnt042": [ - "Man, I was beginning to think you wouldn't show up." + "Home, començava a pensar que no apareixerias." ], "agnt043": [ - "Not a moment too soon, let's fly!" + "Ni un moment massa aviat, anem a volar!" ], "agnt044": [ - "Get me to my new safehouse, quickly!" + "Porta'm al meu nou refugi, ràpidament!" ], "agnt045": [ - "Thanks, good luck!" + "Gràcies, molta sort!" ], "agnt046": [ - "Good driving, go save the rest of our guys." + "Bona conducció, ves a salvar la resta dels nostres nois." ], "agnt047": [ - "OK, I'm out of here!" + "D'acord, estic fora d'aquí!" ], "agnt048": [ - "See you at the next meeting." + "Ens veiem a la propera reunió." ], "agnt049": [ - "Thanks, you're a life saver." + "Gràcies, ets un salvavides." ], "agnt050": [ - "This is where I get off." + "Aquí és on baixo." ], "agnt051": [ - "I'm glad you're on our side." + "M'alegro que estiguis al nostre costat." ], "agnt052": [ - "Ugh!" + "Uf!" ], "agnt053": [ - "Ugh!" + "Uf!" ], "agnt054": [ "Hah!" @@ -217,172 +217,172 @@ "Ahhh!" ], "agnt056": [ - "Drive carefully!" + "Condueix amb compte!" ], "agnt057": [ - "Look out!" + "Estar atent!" ], "agnt058": [ - "Watch it!" + "Mireu-ho!" ], "agnt059": [ "WHOA!" ], "agnt060": [ - "You're crazy!" + "Estas boig!" ], "agnt061": [ - "Are you out of your mind?!" + "Estàs boig?!" ], "agnt062": [ - "Watch out!" + "Ves amb compte!" ], "agnt063": [ - "That one hurt." + "Aquell va fer mal." ], "agnt064": [ - "Stay sharp, we got a tough part of our town coming up." + "Estigueu atents, tenim una part difícil de la nostra ciutat." ], "agnt065": [ - "Now we're in for it." + "Ara estem a punt." ], "agnt066": [ - "You're wasting citizens!" + "Esteu malgastant ciutadans!" ], "agnt067": [ - "Don't hit the civvies, man!" + "No pegueu als civils, home!" ], "agnt068": [ - "Man, you're hitting the people!" + "Home, estàs colpejant la gent!" ], "agnt069": [ - "Look where you're going!" + "Mira on vas!" ], "agnt070": [ - "Go man, GO!" + "Va home, vés!" ], "agnt071": [ - "Keep your head down!" + "Mantingueu el cap avall!" ], "agnt072": [ - "They're shooting at us!" + "Ens estan disparant!" ], "agnt073": [ - "We're dead if you don't drive faster!" + "Estem morts si no condueixes més ràpid!" ], "agnt074": [ - "Keep going!" + "Segueix així!" ], "agnt075": [ - "Do it, man, do it!" + "Fes-ho, home, fes-ho!" ], "agnt076": [ - "Hurry up, man!" + "Afanya't, home!" ], "agnt077": [ - "I ain't riding on the back, pick up a two-seater!" + "No vaig a l'esquena, agafa un biplaça!" ], "agnt078": [ - "Get a bigger vehicle." + "Aconsegueix un vehicle més gran." ], "agnt079": [ - "They're onto us!" + "Ens apunten!" ], "agnt080": [ - "We're being followed!" + "Ens segueixen!" ], "agnt081": [ - "We're taking a beating!" + "Estem donant una pallissa!" ], "agnt082": [ - "We can't take much more of that." + "No podem suportar gaire més d'això." ], "agnt083": [ - "You trying to die?" + "Estàs intentant morir?" ], "agnt084": [ - "Where'd Torn find you?" + "On t'ha trobat Torn?" ], "agnt085": [ - "You sure you're on our side?" + "Segur que estàs al nostre costat?" ], "agnt086": [ - "Turn, TURN!" + "Gira, GIRA!" ], "agnt087": [ - "Good move!" + "Bona jugada!" ], "agnt088": [ - "Death to the Baron!" + "Mort al baró!" ], "agnt089": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Gràcies Mar, estàs aquí, els guàrdies de Krimzon són a tot arreu!" ], "agnt090": [ - "It's about time, let's get out of here!" + "Ja era hora, sortim d'aquí!" ], "agnt091": [ - "Good, just in time, GO, GO, GO!" + "Bé, just a temps, GO, GO, GO!" ], "agnt092": [ - "Finally, we need to move!" + "Per fi, ens hem de moure!" ], "agnt093": [ - "Man, I was beginning to think you wouldn't show up." + "Home, començava a pensar que no apareixerias." ], "agnt094": [ - "Not a moment too soon, let's fly!" + "Ni un moment massa aviat, anem a volar!" ], "agnt095": [ - "Get me to my new safehouse, quickly!" + "Porta'm al meu nou refugi, ràpidament!" ], "agnt096": [ - "Thanks, good luck!" + "Gràcies, molta sort!" ], "agnt097": [ - "Good driving, go save the rest of our guys." + "Bona conducció, ves a salvar la resta dels nostres nois." ], "agnt098": [ - "OK, I'm out of here!" + "D'acord, estic fora d'aquí!" ], "agnt099": [ - "See ya at the next meeting!" + "Ens veiem a la propera reunió!" ], "agnt100": [ - "Thanks, you're a life-saver." + "Gràcies, ets un salvavides." ], "agnt101": [ - "This is where I get off." + "Aquí és on baixo." ], "agnt102": [ - "I'm glad you're on our side." + "M'alegro que estiguis al nostre costat." ], "agnt103": [ - "Look out!" + "Estar atent!" ], "agnt104": [ - "Hey!" + "Ei!" ], "agnt105": [ - "Augh!" + "Ai!" ], "agnt106": [ - "Come on man, you trying to kill me!?" + "Va, home, estàs intentant matar-me!?" ], "agnt107": [ - "Take it easy!" + "Pren-t'ho amb calma!" ], "agnt108": [ - "Ughh!" + "Uf!" ], "agnt109": [ - "Ughh!" + "Uf!" ], "agnt110": [ "Ahhh!" ], "agnt111": [ - "Oof!" + "Uf!" ], "agnt112": [ "Ah!" @@ -391,116 +391,116 @@ "Ahh!" ], "agnt114": [ - "Oof!" + "Uf!" ], "agnt115": [ - "Okay, buddy, move!" + "D'acord, company, mou!" ], "agnt116": [ - "Look out!" + "Estar atent!" ], "agnt117": [ - "Keep your eyes on the road!" + "Mantingueu els ulls a la carretera!" ], "agnt118": [ - "Watch it!" + "Mireu-ho!" ], "agnt119": [ - "Thanks for the lift." + "Gràcies per l'ascens." ], "agnt120": [ - "See ya at the next meeting." + "Ens veiem a la propera reunió." ], "agnt121": [ - "Right, let's go!" + "Bé, anem!" ], "agnt122": [ - "Drive, man, drive!" + "Condueix, home, condueix!" ], "agnt123": [ - "That was close!" + "Això estava a prop!" ], "agnt124": [ - "You sure you know what you're doing?" + "Segur que saps què estàs fent?" ], "agnt125": [ - "Ok, thanks, good luck." + "D'acord, gràcies, molta sort." ], "agnt126": [ - "Great, let's go." + "Genial, anem." ], "agnt127": [ - "Drive, man, drive!" + "Condueix, home, condueix!" ], "agnt128": [ - "That was close!" + "Això estava a prop!" ], "agnt129": [ - "You sure you know what you're doing?" + "Segur que saps què estàs fent?" ], "agnt130": [ - "OK, thanks, good luck!" + "D'acord, gràcies, molta sort!" ], "agnt131": [ - "What took you so long?" + "Què t'ha trigat tant?" ], "agnt132": [ - "Move like you got a purpose, man!" + "Mou-te com si tinguessis un propòsit, home!" ], "agnt133": [ - "GO, GO, the KG are onto us!" + "GO, GO, els KG ens apunten!" ], "agnt134": [ - "Stay sharp, we're almost there!" + "Estigueu atents, ja gairebé hi som!" ], "agnt135": [ - "Good, you did well, I'll tell the Shadow we're safe!" + "Bé, ho has fet bé, li diré a l'Ombra que estem segurs!" ], "asha001": [ - "Payback's a bitch, and I'm it." + "La recuperació és una puta, i ho sóc." ], "asha002": [ - "Watch your ass, I'm only woman on the outside." + "Vigileu el cul, només sóc dona per fora." ], "asha003": [ - "Let me knock you down to size...", - "Not that you have any." + "Deixa'm que et baixi a la mida...", + "No és que en tinguis cap." ], "asha004": [ - "Small guns don't get me going." + "Les armes petites no em fan marxar." ], "asha005": [ - "That's a tiny gun..." + "És una pistola petita..." ], "asha006": [ - "You don't know who you're dealing with." + "No saps amb qui estàs tractant." ], "asha007": [ - "I never said you could touch me there." + "Mai vaig dir que em podies tocar allà." ], "asha008": [ - "Take that!" + "Agafa això!" ], "asha009": [ - "Here's some." + "Aquí n'hi ha alguns." ], "asha010": [ - "Ready for another?" + "Preparat per a un altre?" ], "asha011": [ - "How's that feel?" + "Com és això?" ], "asha012": [ - "Seems like it hurts." + "Sembla que fa mal." ], "asha013": [ - "Oh, that hurt." + "Oh, això va fer mal." ], "asha014": [ - "Ugh!" + "Uf!" ], "asha015": [ - "Ough!" + "Ai!" ], "asha016": [ "Ah!" @@ -509,534 +509,534 @@ "Agh!" ], "asha018": [ - "Hit me again and you'll lose something really valuable!" + "Torna'm a colpejar i perdràs alguna cosa realment valuosa!" ], "asha019": [ - "Not smart!" + "No intel·ligent!" ], "asha020": [ - "Listen, buddy, whose side are you on?" + "Escolta, amic, de quin costat estàs?" ], "asha021": [ - "Don't make me hurt you." + "No em facis fer-te mal." ], "asha022": [ - "Do that again and I'll put you down." + "Fes-ho de nou i et deixaré caure." ], "asha023": [ - "Learn to control your gun, buddy." + "Aprèn a controlar la teva arma, company." ], "asha024": [ - "Where'd you learn to fight?" + "On vas aprendre a lluitar?" ], "asha025": [ - "Check your targets, mister." + "Comproveu els vostres objectius, senyor." ], "asha026": [ - "Don't do that again." + "No ho tornis a fer." ], "asha027": [ - "Maybe I should be behind you." + "Potser hauria d'estar darrere teu." ], "asha028": [ - "I won't take that!" + "Això no ho agafaré!" ], "asha029": [ - "Another one like that and you'll be singing soprano." + "Un altre així i cantaràs una soprano." ], "asha030": [ - "Have some back." + "Recupera una mica." ], "asha031": [ - "Don't do that again!" + "No ho tornis a fer!" ], "asha032": [ - "Nice shooting." + "Bonic tiroteig." ], "asha033": [ - "Good shooting, blue boy." + "Bon tir, noi blau." ], "asha034": [ - "Good work." + "Bon treball." ], "asha035": [ - "Take 'em all down!" + "Baixa'ls a tots!" ], "asha036": [ - "Let's get 'em!" + "Agafem-los!" ], "asha037": [ - "Here they come!" + "Aquí vénen!" ], "asha038": [ - "I need some help!" + "Necessito una mica d'ajuda!" ], "asha039": [ - "Man, there are a lot of 'em!" + "Home, n'hi ha molts!" ], "asha040": [ - "More coming." + "En vindran més." ], "asha041": [ - "I got him." + "El vaig aconseguir." ], "asha042": [ - "More firepower!" + "Més potència de foc!" ], "asha043": [ - "One more down!" + "Un més a baix!" ], "asha044": [ - "Help me out!" + "Ajuda'm!" ], "asha045": [ - "They're out-flanking us!" + "Ens estan flanquejant!" ], "asha046": [ - "We're surrounded!" + "Estem envoltats!" ], "asha047": [ - "Shoot! Shoot!" + "Dispara! Dispara!" ], "asha048": [ - "It's not looking good." + "No té bona pinta." ], "asha049": [ - "Help me!" + "Ajuda'm!" ], "asha050": [ - "Here's one for my father!" + "Aquí en teniu un per al meu pare!" ], "asha051": [ - "Damn Metal Heads..." + "Maleïts caps de metall..." ], "asha052": [ "Bullseye." ], "asha053": [ - "There's some more of those things!" + "N'hi ha més d'aquestes coses!" ], "asha054": [ - "Get 'em all!" + "Aconsegueix-los tots!" ], "asha055": [ - "Ugh..." + "Uf..." ], "asha056": [ "Hm-agh..." ], "asha057": [ - "Hah...agh..." + "Ha... agh..." ], "asht002": [ - "You were right, Jak. What my father's doing is wrong.", - "I need to help fix this. If you get to the Weapons Factory,", - "maybe we can stop him. I'll meet you there." + "Tenia raó, Jak. El que fa el meu pare està malament.", + "Necessito ajudar a solucionar això. Si arribes a la fàbrica d'armes,", + "potser el podrem aturar. Et trobaré allà." ], "asht006": [ - "I think now's the time to act.", - "The Metal Heads are so focused on attacking the city,", - "they may have left their nest vulnerable.", - "Jak, you've got to get out to the Wasteland", - "and breach the Nest barrier any way you can.", - "Maybe if you get inside and take out the Metal Head leader", - "the army will collapse. It's a long shot,", - "but it might be our only chance." + "Crec que ara és el moment d'actuar.", + "Els Metal Heads estan tan centrats a atacar la ciutat,", + "poden haver deixat el seu niu vulnerable.", + "Jak, has de sortir al Wasteland", + "i trenca la barrera de Nest de la manera que puguis.", + "Potser si entres i treus el líder Metal Head", + "l'exèrcit s'ensorrarà. És un tir llarg,", + "però potser és la nostra única oportunitat." ], "bar001": [ - "Pay no attention to the groundless rumors about", - "low eco supplies. As your Baron, I assure you,", - "the city has an endless supply of eco stores.", - "Those who would say we are running out,", - "are only trying to frighten and subvert!", - "I have everything in control, I command you", - "to have no fear." + "No presteu atenció als rumors infundats sobre", + "subministraments ecològics baixos. Com el teu baró, t'ho asseguro,", + "la ciutat té una oferta infinita de botigues ecològiques.", + "Els que dirien que ens estem acabant,", + "només intenten espantar i subvertir!", + "Ho tinc tot controlat, t'ho ordeno", + "no tenir por." ], "bar004": [ - "Go!" + "Va!" ], "bb01fail": [ - "I think you should practice more." + "Crec que hauries de practicar més." ], "bb01int": [ - "Jak, this is Torn. The Underground needs good drivers", - "for our vehicle missions. Prove your skills on the", - "Ring Challenge and maybe we'll let you in on the action." + "Jak, aquest és Torn. El metro necessita bons conductors", + "per a les nostres missions de vehicles. Demostra les teves habilitats al", + "Ring Challenge i potser et deixarem participar en l'acció." ], "bb01win": [ - "Not bad, I think we can use ya.", - "Here's a little reward for your effort." + "No està malament, crec que et podem utilitzar.", + "Aquí teniu una petita recompensa pel vostre esforç." ], "bb02fail": [ - "You're still a little timid. Try again." + "Encara ets una mica tímid. Torna-ho a provar." ], "bb02int": [ - "We'd like to see you prove your driving skills. Take on", - "another Ring Challenge, let's see what you've got." + "Ens agradaria que demostres les teves habilitats de conducció. Assumir", + "un altre Ring Challenge, a veure què tens." ], "bb02win": [ - "Not bad. You could be my getaway driver any time." + "No està malament. Podríeu ser el meu conductor d'escapada en qualsevol moment." ], "bb03fail": [ - "I knew this one would prove too much for ya. Keep practicing." + "Sabia que aquest seria massa per a tu. Segueix practicant." ], "bb03int": [ - "The next Ring Challenge will separate the men from the boys.", - "Let's see if you can handle it." + "El proper Ring Challenge separarà els homes dels nois.", + "A veure si ho saps." ], "bb03win": [ - "Very nice driving. I'm starting to think you could really", - "help us, Jak." + "Conducció molt agradable. Estic començant a pensar que realment podria", + "Ajuda'ns, Jak." ], "bb04fail": [ - "Too bad, I kinda hoped you could do this. Keep trying." + "Llàstima, esperava que poguéssiu fer això. Continua intentant-ho." ], "bb04int": [ - "Torn here. I don't even know why I'm lettin' you try this", - "Ring Challenge, never beat it myself. I guess I'm morbidly", - "curious. Beat this one and you'll be the best driver", - "the Underground's ever had." + "Esquinçat aquí. Ni tan sols sé per què et deixo provar això", + "Ring Challenge, mai no el vaig superar jo mateix. Suposo que sóc morbosa", + "curiós. Supera aquest i seràs el millor conductor", + "l'Underground ha tingut mai." ], "bb04win": [ - "Very nice, Jak! You're the best driver we've ever had." + "Molt bonic, Jak! Ets el millor conductor que hem tingut mai." ], "bb05fail": [ - "You didn't get all the Bomb Bots, Jak!" + "No has aconseguit tots els Bomb Bots, Jak!" ], "bb05int": [ - "Jak, reports say more bomb bots are roaming the city.", - "They're a dangerous menace, and I need you to locate", - "and destroy each one before they hurt our interests." + "Ja, els informes diuen que més robots de bombes deambulen per la ciutat.", + "Són una amenaça perillosa i necessito que els localitzis", + "i destruïm cadascun abans que perjudiquin els nostres interessos." ], "bb05win": [ - "Good work! That oughta put a dent in the Baron's war budget." + "Bon treball! Això hauria de fer mal al pressupost de guerra del baró." ], "bb06int": [ - "Jak, we need you to take out another group of Bomb Bots.", - "These mobile weapons keep showing up in the city, we gotta take them out as soon as possible." + "Jak, necessitem que treus un altre grup de Bomb Bots.", + "Aquestes armes mòbils continuen apareixent a la ciutat, les hem de treure el més aviat possible." ], "bb06win": [ - "Another pile of bomb bot scrap metal for the KG", - "trash compactors. Mission accomplished, the Underground's", - "most grateful for your service." + "Un altre munt de ferralla de bombes per al KG", + "compactadors d'escombraries. Missió complerta, la del metro", + "molt agraït pel vostre servei." ], "bb07fail": [ - "You lost an agent! NOT good at all, Jak! Mission failed!" + "Has perdut un agent! No és gens bo, Jak! Missió fallida!" ], "bb07int": [ - "Torn here, I need you to go out and move more of our Agents to new locations in the city.", - "KG spies are watching our every move, so look out for trouble. Good luck." + "Esquinçat aquí, necessito que surtis i traslladis més dels nostres agents a nous llocs de la ciutat.", + "Els espies de KG estan vigilant tots els nostres moviments, així que vigileu els problemes. Bona sort." ], "bb07win": [ - "Nice shuttle work! You're keepin' people alive out there." + "Bona feina de llançadora! Estàs mantenint la gent viva allà fora." ], "bb08fail": [ - "One of our best agents was arrested. The Shadow will NOT be", - "pleased! You failed." + "Un dels nostres millors agents va ser detingut. L'Ombra NO serà", + "content! Has fallat." ], "bb08int": [ - "Jak, some of our Agents have been compromised again.", - "Find each one and take them to special hideouts in the city.", - "The guard patrols are on high alert, so this is going to be a tough one. Keep your head down!" + "Jak, alguns dels nostres agents s'han vist compromesos de nou.", + "Trobeu-los i porteu-los a amagatalls especials de la ciutat.", + "Les patrulles de guàrdia estan en alerta màxima, així que serà difícil. Mantingueu el cap avall!" ], "bb08win": [ - "That was good driving, Jak.", - "The Underground can breathe a little easier now." + "Va ser una bona conducció, Jak.", + "El metro pot respirar una mica més fàcil ara." ], "bb09fail": [ - "You took too long, Jak. We're calling off the meeting." + "Has trigat massa, Jak. Convoquem la reunió." ], "bb09int": [ - "Jak, we're having an Underground meeting", - "with some special Agents. Pick up each Agent", - "and bring them to the meeting place quickly." + "Jak, estem tenint una reunió clandestina", + "amb alguns agents especials. Recolliu cada agent", + "i portar-los ràpidament al lloc de reunió." ], "bb09win": [ - "Fast work, Jak! Some day, we might even", - "invite you to these meetings." + "Treball ràpid, Jak! Algun dia, fins i tot podríem", + "us conviden a aquestes reunions." ], "bb10fail": [ - "Not fast enough, buddy! You've gotta be quick", - "with those deliveries." + "No prou ràpid, company! Has de ser ràpid", + "amb aquests lliuraments." ], "bb10int": [ - "Jak, you've got to prove your driving skills once again.", - "One of our Agents dropped off a package,", - "I need it delivered to the Hideout. Immediately." + "Jak, has de demostrar les teves habilitats de conducció una vegada més.", + "Un dels nostres agents va deixar un paquet,", + "Necessito que l'entreguin a l'amagatall. Immediatament." ], "bb10win": [ - "Good work, Jak!" + "Bona feina, Jak!" ], "bb11fail": [ - "The package contents didn't make it. Go faster next time!" + "El contingut del paquet no va arribar. Aneu més ràpid la propera vegada!" ], "bb11int": [ - "Jak, I need you to take a package of eco", - "over to the power station. Get there quickly or the contents", - "will be useless to Vin." + "Jak, necessito que portis un paquet d'eco", + "cap a la central elèctrica. Arribar-hi ràpidament o el contingut", + "serà inútil per a Vin." ], "bb11win": [ - "Nice driving, Jak." + "Bona conducció, Jak." ], "bb12fail": [ - "You didn't push it hard enough, newbie. Try again." + "No l'has empès prou, novell. Torna-ho a provar." ], "bb12int": [ - "This is Torn, we've got another package delivery", - "for the Stadium. Make it quick!" + "Això és Torn, tenim un altre lliurament de paquets", + "per l'Estadi. Fes-ho ràpid!" ], "bb12win": [ - "Not bad driving. You really oughta race", - "in the city championship." + "No està malament conduir. Realment hauries de fer una carrera", + "al campionat de ciutat." ], "bb13fail": [ - "You gotta work on your speed, man." + "Has de treballar en la teva velocitat, home." ], "bb13int": [ - "I need you to take a valuable item over to Onin.", - "You won't be able to drive the whole way,", - "but you still have to move fast. Good luck." + "Necessito que porteu un article valuós a Onin.", + "No podràs conduir tot el camí,", + "però encara has de moure't ràpid. Bona sort." ], "bb13win": [ - "That's the way to get it done, good work." + "Aquesta és la manera de fer-ho, bona feina." ], "bb14fail": [ - "Too late, Jak! The agent is calling it off.", - "You need to reach it faster!" + "Massa tard, Jak! L'agent ho cancel·la.", + "Has d'arribar-hi més ràpid!" ], "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." + "Jak, tenim un agent esperant el lliurament del paquet.", + "Els espies de la guàrdia estan mirant aquest tipus,", + "així que si no l'arribes ràpidament, serà detingut.", + "Porta-li el paquet abans que sigui massa tard." ], "bb14win": [ - "Nice work, the delivery was a success. I like your style, Jak." + "Bona feina, el lliurament va ser un èxit. M'agrada el teu estil, Jak." ], "bb15fail": [ - "You screwed up, Jak! You didn't get it to the safe zone", - "as we asked." + "T'has fotut, Jak! No l'has arribat a la zona segura", + "com vam demanar." ], "bb15farr": [ - "Get off the bike and get clear, Jak!!" + "Baixa de la bicicleta i deixa't clar, Jak!!" ], "bb15int": [ - "Jak, we found a bomb in the Slums", - "that was meant for the Shadow.", - "I need you to pick it up and take it out to the Farm Area", - "where we've marked a safe zone where it can explode.", - "Go quickly." + "Jak, hem trobat una bomba als barris marginals", + "que estava pensat per a l'Ombra.", + "Necessito que el recolliu i el porteu a la Granja", + "on hem marcat una zona segura on pot explotar.", + "Aneu ràpidament." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "Va ser un treball increïble, Jak! Gràcies, realment ho vull dir." ], "bb16fail": [ - "You didn't take out enough guards!", - "We need to hit them harder!" + "No has tret prou guàrdies!", + "Els hem de colpejar més fort!" ], "bb16int": [ - "Jak, this is Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "inflict real damage on our enemies." + "Jak, aquest és Torn.", + "La guàrdia personal d'elit d'Erol es mou per la ciutat.", + "Hem de colpejar-los i colpejar-los fort! Treu prou", + "guàrdies abans que hagi de cancel·lar la missió.", + "Teniu massa pocs guàrdies i haurem perdut una oportunitat", + "causar danys reals als nostres enemics." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Gran cop i córrer, Jak! Això enviarà un missatge a l'Erol." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Sembla que aquesta cosa és massa difícil d'utilitzar. Passarem de moment." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "Estem avaluant la nova JET-Board per utilitzar-la al metro", + "missions. Hem sentit que ets molt bé amb aquesta cosa,", + "mostra'ns què pot fer. Aconsegueix prou punts amb el", + "judge-bot i considerarem afegir-lo al nostre arsenal." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", - "Good work." + "Vaja! Realment pots trencar el formigó amb aquest nadó!", + "Bon treball." ], "bb18fail": [ - "I'm still not sure the JET-Board's that useful." + "Encara no estic segur que el JET-Board sigui tan útil." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Aquí hi ha un altre lloc fantàstic per avaluar el rendiment", + "del JET-Board. Intenta aconseguir prou punts també aquí." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", - "catching us on those babies." + "Moviments dolços, Jak. El KG ho tindria difícil", + "agafant-nos amb aquells nadons." ], "bb19fail": [ - "You didn't get them all. Try again." + "No els has entès tots. Torna-ho a provar." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "Estem avaluant l'ús de balises d'homing a les missions.", + "Aconsegueix totes les balises tan ràpid com puguis.", + "Has de moure't ràpidament en aquest cas." ], "bb19win": [ - "Excellent work. You're a great asset", - "to the Underground, Jak." + "Excel·lent treball. Ets un gran actiu", + "al metro, Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "Massa lent, Jak! Quan l'Ombra ho demana, has de lliurar." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "L'Ombra necessita que recolliu una mica d'eco verd per a la seva", + "experiments. Aconsegueix-ho tot abans que l'eco desaparegui." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "No està malament. Diré una bona paraula amb l'Ombra." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Segueix intentant. Aquí heu de desenvolupar les vostres habilitats." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "De vegades ens agrada \"manllevar\" Krimzon Guard", + "equipament. Agafeu aquesta bicicleta de patrulla KG a fer una volta", + "i colpejar tots els objectius dins del límit de temps." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Bonic tiroteig. La Guàrdia t'estimaria com a recluta.", + "Aquí tens una petita recompensa per quedar-te amb nosaltres." ], "bb22fail": [ - "You didn't get the booths fast enough, Jak." + "No has aconseguit les cabines prou ràpid, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "Part de la propaganda del baró és inquietant", + "els civils. Treu aquestes cabines i aturarem Praxis", + "de difondre les seves mentides." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Bon treball! Això hauria de callar una mica el baró." ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Has perdut, Jak. Si vols guanyar,", + "millor que treballis les teves habilitats de velocitat." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "El millor corredor de l'Underground vol desafiar-te", + "a una cursa al Ring Course One.", + "Creus que pots suportar una mica de competència?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Felicitats! Vas vèncer el desafiador!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "El nostre noi t'ha portat en aquest. Que tingueu més sort la propera vegada." ], "bb24int": [ - "Up for a little race, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "A punt per a una petita cursa, Jak?", + "El nostre millor pilot vol enfrontar-se a tu al Ring Course Two.", + "Aquest nadó és una mica més difícil.", + "A veure si aconsegueixes el repte." ], "bb24win": [ - "You beat him, Jak. Nice driving." + "El vas vèncer, Jak. Bona conducció." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", - "You lost!" + "Sembla que no ets el millor corredor d'aquesta ciutat, Jak.", + "Has perdut!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", - "This one's gonna get hairy." + "El campió de carreres de l'Underground vol tornar a tu,", + "aquesta vegada al difícil Ring Course Three.", + "Aquest es posarà pelut." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Enhorabona, has guanyat el nostre millor corredor. Ben fet." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "Aquest és Torn, un bon agent del metro coneix la ciutat", + "per dins i per fora, per la vista. A veure com t'apiles,", + "arribar a aquest lloc en el termini establert", + "i rebràs una recompensa. VAS!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Aquí teniu una altra oportunitat de demostrar el vostre coneixement de la ciutat." ], "bb28int": [ - "Find this place before time runs out." + "Troba aquest lloc abans que s'acabi el temps." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Aquí n'hi ha una de difícil, supera el rellotge fins aquí." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Reconeixes aquest lloc? Trobeu-lo ràpidament i una recompensa serà vostra." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Aquí teniu un lloc poc conegut, trobeu-lo ràpidament i em quedaré impressionat." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "M'agradaria que trobis aquest lloc. Impressiona'm, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Arriba ràpid i sorprèn-me." ], "bb34int": [ - "Here's another destination, get here quickly." + "Aquí hi ha un altre destí, arriba ràpidament." ], "bb35int": [ - "Find this spot, fast!" + "Troba aquest lloc, ràpid!" ], "bb36int": [ - "Reach this area and be rewarded." + "Arribeu a aquesta zona i sereu recompensats." ], "bb37int": [ - "Think you can find this place?" + "Creus que pots trobar aquest lloc?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "No tan bo, Jak! Potser hauríeu de calibrar aquesta placa." ], "bb38int": [ - "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", - "in the time limit allotted." + "Encara estem avaluant el JET-Board.", + "A veure si pots recollir tots els impulsos d'energia", + "en el termini assignat." ], "bb38win": [ - "Nice moves, fly-boy." + "Bons moviments, mosca." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "Tan a prop, però en aquest negoci això significa mort." ], "bb39int": [ - "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Agafeu aquest JET-Board a través dels seus ritmes en un Ring Course.", + "Passa el temps i et faré tatuar la cara com la meva." ], "bb39win": [ - "Good speed through the course, Jak!", - "That one looked too easy." + "Bona velocitat al llarg del curs, Jak!", + "Aquell semblava massa fàcil." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "You were too slow on that course." + "Sembla que has conegut el teu partit, Jak!", + "Vas ser massa lent en aquest curs." ], "bb40int": [ - "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "let's see if you can complete it in time." + "M'agradaria veure't portar el JET-Board per un altre", + "Curs d'anell. Ho farem una mica més interessant,", + "a veure si el pots completar a temps." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Vaja! Fins i tot jo tindria problemes amb això, bona feina!" ], "bf001": [ - "My shield is impervious to your attacks!" + "El meu escut és impermeable als teus atacs!" ], "bf002": [ - "You cannot hurt me!" + "No em pots fer mal!" ], "bf003": [ - "Fool! Nothing can touch me!" + "ximple! Res em pot tocar!" ], "bf004": [ - "You're powerless!" + "Ets impotent!" ], "bf005": [ - "There is nothing you can do!" + "No hi ha res que puguis fer!" ], "bf006": [ "HAHAHAHAHAHA!" @@ -1045,154 +1045,154 @@ "HAHAHAHA!" ], "bf008": [ - "Come get me!" + "Vine a buscar-me!" ], "bf009": [ - "Come closer!" + "Acosta't!" ], "bf010": [ - "Try me now!" + "Prova'm ara!" ], "bf011": [ - "Let's make this personal!" + "Fem-ho personal!" ], "bf012": [ - "Surprise!" + "Sorpresa!" ], "bf013": [ - "Don't fall!" + "No caiguis!" ], "bf014": [ - "I will crush you!" + "T'aixafaré!" ], "bf015": [ - "Take this!" + "Agafa això!" ], "bf016": [ - "Here I come!" + "Aquí vinc!" ], "bf017": [ - "Why won't you die?!" + "Per què no moriràs?!" ], "bf018": [ - "Your Dark Eco powers surprise me!" + "Els teus poders Dark Eco em sorprenen!" ], "bf019": [ - "Your arrogance will be your downfall!" + "La teva arrogància serà la teva caiguda!" ], "bf020": [ - "The Stone is mine!" + "La pedra és meva!" ], "bf021": [ - "Give me the Stone!" + "Dóna'm la pedra!" ], "bf022": [ - "Release it!" + "Allibera'l!" ], "bf023": [ - "I want the Stone!" + "Vull la pedra!" ], "bf024": [ - "Argh, let go!" + "Argh, deixa anar!" ], "bf025": [ - "It's mine!" + "És meu!" ], "bf026": [ - "Try these on for size!" + "Prova-les per la mida!" ], "bf027": [ - "Here's a little present!" + "Aquí teniu un petit regal!" ], "bf028": [ - "Want some more?" + "Vols una mica més?" ], "bf029": [ - "I grow tired of this, now you die!" + "Estic cansat d'això, ara et mors!" ], "bf030": [ - "You cannot run away from these!" + "No pots fugir d'aquests!" ], "bf031": [ - "Allow me to share the pain!" + "Permeteu-me compartir el dolor!" ], "bf032": [ - "Now you're mine!" + "Ara ets meu!" ], "bf033": [ - "Here's some hell!" + "Aquí hi ha una mica d'infern!" ], "bf034": [ - "Say good night!" + "Digues bona nit!" ], "bf035": [ - "Enjoy your next life!" + "Gaudeix de la teva propera vida!" ], "bf036": [ - "It's over!" + "S'ha acabat!" ], "bf037": [ - "Burn in hell!" + "Crema a l'infern!" ], "bf038": [ - "The Stone is mine! Let me show you what it can do!" + "La pedra és meva! Deixa'm mostrar-te què pot fer!" ], "bf039": [ - "Now you see the Stone's power in capable hands!" + "Ara veus el poder de la Pedra en mans capaços!" ], "bf040": [ - "How's that for power?" + "Com és això pel poder?" ], "bf041": [ - "Now you see!" + "Ara ho veus!" ], "bf042": [ - "I am invincible now!" + "Ara sóc invencible!" ], "bf043": [ - "You cannot run forever!" + "No pots córrer per sempre!" ], "bf044": [ - "I have all the power I need!" + "Tinc tot el poder que necessito!" ], "bf045": [ - "You can't avoid this!" + "Això no ho pots evitar!" ], "bf046": [ - "Here's a little something special!" + "Aquí teniu una mica d'especial!" ], "bf047": [ - "Come to me!" + "Vine a mi!" ], "bf048": [ - "Come here!" + "Vine aquí!" ], "bf049": [ - "Let's get closer!" + "Apropem-nos!" ], "bf050": [ - "Nothing can save you now!" + "Ara res et pot salvar!" ], "bf051": [ - "You're history!" + "Ets història!" ], "bf052": [ - "I am the city's savior, not you!" + "Jo sóc el salvador de la ciutat, no tu!" ], "bf053": [ - "Die!" + "Morir!" ], "bf054": [ - "It's over!" + "S'ha acabat!" ], "bf055": [ - "I've got you!" + "Et tinc!" ], "bf056": [ - "Now you die!" + "Ara et mors!" ], "bf057": [ - "NOOOOOO!" + "NOOOOO!" ], "bf058": [ "No!" @@ -1201,7 +1201,7 @@ "NO!" ], "bf060": [ - "Uorghh!" + "Urghh!" ], "bf061": [ "Ahh!" @@ -1210,28 +1210,28 @@ "Ungh!" ], "bf063": [ - "Raghh!" + "Raghhh!" ], "bf064": [ - "We finish this now!" + "Ho acabem ara!" ], "bf065": [ - "Eat this!" + "Menja això!" ], "bf066": [ - "Stop!" + "Atura!" ], "bf067": [ - "You idiot, you're no match for me!" + "Idiota, no ets rival per a mi!" ], "bf068": [ - "Why don't you die!?" + "Per què no mors!?" ], "bf069": [ - "Give up and I'll make it painless!" + "Renuncieu i ho faré indolor!" ], "bf070": [ - "You cannot win!" + "No pots guanyar!" ], "bf071": [ "Aha!" @@ -1246,73 +1246,73 @@ "Urgh!" ], "bf075": [ - "You can do better than that!" + "Pots fer-ho millor que això!" ], "bf076": [ - "You're mine!" + "Ets meu!" ], "bf077": [ - "Why won't you die!?" + "Per què no moriràs!?" ], "bf078": [ - "I have the ultimate power!" + "Tinc el poder suprem!" ], "bf079": [ - "Die!" + "Morir!" ], "bf080": [ - "Is that your best shot?" + "És la teva millor oportunitat?" ], "bf081": [ - "Now you die!" + "Ara et mors!" ], "bf082": [ - "Get off my tower!" + "Baixa't de la meva torre!" ], "bf083": [ - "We'll see about that!" + "Ja ho veurem!" ], "bf084": [ - "You really think you have a chance?" + "De veritat creus que tens una oportunitat?" ], "bf085": [ - "Fear me!" + "Tingues por de mi!" ], "bf086": [ - "You're nothing!" + "No ets res!" ], "bf087": [ - "My shield is now recharged!" + "El meu escut ja està recarregat!" ], "bf088": [ - "Try these on for size!" + "Prova-les per la mida!" ], "bf089": [ - "I should have killed you long ago!" + "T'hauria d'haver matat fa temps!" ], "bf090": [ - "Never a dull moment, eh?" + "Mai un moment avorrit, eh?" ], "bf091": [ - "Stand still!" + "Queda't quiet!" ], "bf092": [ - "Go back to wherever you came from!" + "Torna a on vinguis!" ], "bf093": [ - "You're both going to die by my hand!" + "Tots dos morireu de la meva mà!" ], "bf094": [ - "Come closer!" + "Acosta't!" ], "bf095": [ - "To the end!" + "Fins al final!" ], "bf096": [ - "You cannot win!" + "No pots guanyar!" ], "bf097": [ - "Come here!" + "Vine aquí!" ], "bf098": [ "ARGHHH!" @@ -1324,7 +1324,7 @@ "Urgh!" ], "bf101": [ - "Oof!" + "Uf!" ], "bf102": [ "Noooo!" @@ -1333,127 +1333,127 @@ "No!" ], "bf104": [ - "Not again!" + "No un altre cop!" ], "bf105": [ - "It can't be!" + "No pot ser!" ], "bf106": [ - "Not this time!" + "Aquesta vegada no!" ], "bf107": [ - "Stop!" + "Atura!" ], "bf108": [ - "Damn!" + "Maleïda!" ], "bf109": [ - "Why, you little...!" + "Per què, petit...!" ], "bf110": [ - "Now you've made me angry!" + "Ara m'has fet enfadar!" ], "bf111": [ - "Impressive, but let's try that again!" + "Impressionant, però tornem-ho a provar!" ], "bf112": [ - "The stronger man always wins!" + "L'home més fort sempre guanya!" ], "bf113": [ - "Your loss was inevitable, Jak!" + "La teva pèrdua era inevitable, Jak!" ], "bf114": [ - "You could never be a baron!" + "Mai no podríeu ser un baró!" ], "bf115": [ - "I knew you were weak!" + "Sabia que eres feble!" ], "bf116": [ - "Hm, I expected more from you!" + "Hm, esperava més de tu!" ], "bf117": [ - "Losing is for the weak!" + "Perdre és per als febles!" ], "bf118": [ - "How pathetic!" + "Que patètic!" ], "bf119": [ - "That was too easy!" + "Això era massa fàcil!" ], "bf120": [ - "Sorry, old boy, it's just war!" + "Ho sento, vell, només és guerra!" ], "bf121": [ - "Too bad you don't have what it takes!" + "Llàstima que no tinguis el que cal!" ], "bf122": [ - "The better man won!" + "Va guanyar el millor home!" ], "bf123": [ - "We're similar, Jak... oh, except you're dead!" + "Som semblants, Jak... oh, excepte que estàs mort!" ], "bf124": [ - "Feel the fury of the Precursor Stone!" + "Sent la fúria de la Pedra Precursora!" ], "bf125": [ - "With the Stone's power, I am invincible!" + "Amb el poder de la Pedra, sóc invencible!" ], "bf126": [ - "All will fear me now!" + "Ara tots em tindran por!" ], "bf127": [ - "Time to die!" + "Hora de morir!" ], "bf128": [ - "My little friends will take care of you!" + "Els meus amics et cuidaran!" ], "bf129": [ - "You can't run forever, Jak!" + "No pots córrer per sempre, Jak!" ], "bf130": [ - "Now I've got you!" + "Ara et tinc!" ], "bf131": [ - "Surprise!" + "Sorpresa!" ], "bf132": [ - "I have better things to do than waste my time with you!" + "Tinc millors coses a fer que perdre el temps amb tu!" ], "bf133": [ - "You are nothing!" + "No ets res!" ], "bf134": [ - "Annoying insect, die!" + "Insecte molest, mor!" ], "bf135": [ - "Not bad, but let me show you what real power is!" + "No està malament, però deixa'm mostrar-te què és el poder real!" ], "bf136": [ - "Feel this!" + "Sent això!" ], "bru001": [ - "Great smelly breath of a goosesnake!", - "Heroes to Lurker people you be!", - "By now just see much happy thanks! Ruhuhuh.", - "You honorary members of Lurker tribe now.", - "We no forget - if ever you need us, we help you!" + "Gran alè pudent d'una serp de gallina!", + "Sigueu herois per a la gent de l'Acusador!", + "A hores d'ara només veureu moltes gràcies! Ruhuhuh.", + "Ara sou membres honoraris de la tribu Lurker.", + "No ho oblidem: si mai ens necessites, t'ajudem!" ], "bru002": [ - "I hears you two look for a piece of Mar's shiny Seal.", - "Brutter loves shiny bright things too.", - "I have piece I thinks. It in Water Slums,", - "hanging over me hut and you free to have.", - "Gift from Brutter!" + "Us sento que busqueu un tros del segell brillant de Mar.", + "A Brutter també li agraden les coses brillants i brillants.", + "Tinc una peça que penso. És als barris marginals d'aigua,", + "que penja sobre la meva cabana i ets lliure de tenir.", + "Regal de Brutter!" ], "bru004": [ - "You two good! No better warrior in all Lurker tribes!", - "You keep Seal. You love shiny things just like Brutter." + "Sou dos bons! No hi ha millor guerrer a totes les tribus Lurker!", + "Guardeu Seal. T'encanten les coses brillants com Brutter." ], "cit001": [ - "Hey!" + "Ei!" ], "cit004": [ - "Watch it!" + "Mireu-ho!" ], "cit008": [ "No!" @@ -1462,46 +1462,46 @@ "Argh!" ], "cit016": [ - "Stay away!" + "Allunya't!" ], "cit033": [ - "Hey!" + "Ei!" ], "cit034": [ - "Look out!" + "Estar atent!" ], "cit035": [ - "Watch out!" + "Ves amb compte!" ], "cit046": [ - "Go away!" + "Marxa!" ], "cit047": [ - "Leave me alone!" + "Deixa'm sol!" ], "cit051": [ - "Are you crazy?" + "Estàs boig?" ], "cit053": [ - "Are you insane?!" + "Estàs boig?!" ], "cit055": [ - "Hey, that's my vehicle!" + "Ei, aquest és el meu vehicle!" ], "cit056": [ - "Gimme back my vehicle!" + "Torna'm el meu vehicle!" ], "cit057": [ - "What are you doing?" + "Què estàs fent?" ], "cit058": [ - "Please, don't take it!" + "Si us plau, no ho prenguis!" ], "cit097": [ - "Ugh!" + "Uf!" ], "cit097a": [ - "Aahh!" + "Ahhh!" ], "cit097b": [ "Aaghhh!" @@ -1519,10 +1519,10 @@ "Urgh!" ], "cit098b": [ - "Ugh!" + "Uf!" ], "cit098c": [ - "Ugh!" + "Uf!" ], "cit098d": [ "Ahh!" @@ -1543,820 +1543,820 @@ "Nooo!" ], "cit100": [ - "Please!" + "Si us plau!" ], "cit100a": [ - "Please!" + "Si us plau!" ], "cit100b": [ - "Please!" + "Si us plau!" ], "cit100c": [ - "Please!" + "Si us plau!" ], "cit101": [ - "Stop!" + "Atura!" ], "cit101a": [ - "Stop!" + "Atura!" ], "cit101b": [ - "Stop!" + "Atura!" ], "cit101c": [ - "Stop!" + "Atura!" ], "cit103": [ - "Sound the alarm!" + "Toca l'alarma!" ], "cit103a": [ - "Sound the alarm!" + "Toca l'alarma!" ], "cit104": [ - "Guards!" + "Guàrdies!" ], "cit104a": [ - "Guards! Help us!" + "Guàrdies! Ajuda'ns!" ], "cit105": [ - "Help us!" + "Ajuda'ns!" ], "cit120": [ - "Keep away from me!" + "Allunya't de mi!" ], "cit120a": [ - "Keep away from me!" + "Allunya't de mi!" ], "cit137a": [ - "Wait!" + "Espera!" ], "cityv001": [ - "Leaving city safe zone." + "Sortint de la zona segura de la ciutat." ], "cityv002": [ - "Leaving city at your own risk." + "Sortir de la ciutat sota el teu propi risc." ], "cityv003": [ - "Exiting city." + "Sortida de la ciutat." ], "cityv004": [ - "Opening outer shield." + "Obertura de l'escut exterior." ], "cityv005": [ - "Decontamination complete." + "Descontaminació completa." ], "cityv006": [ - "Entering Haven City." + "Entrant a Haven City." ], "cityv007": [ - "Re-entering city." + "Tornant a entrar a la ciutat." ], "cityv008": [ - "Welcome back." + "Benvingut de nou." ], "cityv009": [ - "It's good to see you still alive." + "És bo veure't encara viu." ], "cityv010": [ - "Security clearance granted." + "Autorització de seguretat concedida." ], "cityv011": [ - "Entrance denied. You do not have proper clearance." + "Entrada denegada. No teniu l'autorització adequada." ], "cityv012": [ - "I am unable to comply." + "Sóc incapaç de complir." ], "cityv013": [ - "Please come back with proper clearance." + "Si us plau, torneu amb l'autorització adequada." ], "cityv014": [ - "Access denied." + "Accés denegat." ], "cityv015": [ - "You need Red Clearance for this gate." + "Necessites l'autorització vermella per a aquesta porta." ], "cityv016": [ - "You need Green Clearance for this gate." + "Necessites l'autorització verda per a aquesta porta." ], "cityv017": [ - "You need Yellow Clearance for this gate." + "Necessites l'autorització groga per a aquesta porta." ], "cityv018": [ - "You need Blue Clearance for this gate." + "Necessites l'autorització blava per a aquesta porta." ], "cityv019": [ - "You need Purple Clearance for this gate." + "Necessites l'autorització violeta per a aquesta porta." ], "cityv020": [ - "You need special Black Clearance for this door." + "Necessites una liquidació negra especial per a aquesta porta." ], "cityv021": [ - "Access granted." + "Accés garantit." ], "cityv022": [ - "Door open." + "Porta oberta." ], "cityv023": [ - "Door closed." + "Porta tancada." ], "cityv024": [ - "Please enter." + "Si us plau, entra." ], "cityv025": [ - "Warp Gate online." + "Warp Gate en línia." ], "cityv026": [ - "Warning: Eco supplies low." + "Avís: els subministraments ecològics són baixos." ], "cityv027": [ - "Backup systems failing." + "Els sistemes de còpia de seguretat fallen." ], "cityv028": [ - "Warning: Eco storage is below safe minimums." + "Avís: l'emmagatzematge ecològic està per sota dels mínims segurs." ], "cityv029": [ - "Eco Grid unstable." + "Eco Grid inestable." ], "cityv030": [ - "Metal Heads detected at Mining Site." + "Caps metàl·lics detectats al jaciment miner." ], "cityv031": [ - "Metal Heads detected at Drilling Site." + "Caps metàl·lics detectats al lloc de perforació." ], "cityv032": [ - "Stand by for clearance." + "Estigueu pendents de l'autorització." ], "cityv033": [ - "Have a nice day." + "Que tinguis un bon dia." ], "cityv034": [ - "Welcome." + "Benvingut." ], "cityv035": [ - "This is a restricted area." + "Aquesta és una zona restringida." ], "cityv036": [ - "You are in violation of Speed Ordinance 51d, pull over." + "Estàs infringint l'Ordenança de velocitat 51d, atura't." ], "cityv037": [ - "I have alerted the authorities." + "He avisat les autoritats." ], "cityv038": [ - "This sector is closed." + "Aquest sector està tancat." ], "cityv039": [ - "Alert: Prison escape in progress." + "Alerta: fuga de la presó en curs." ], "cityv040": [ - "Alert: City under attack." + "Alerta: ciutat sota atac." ], "cityv041": [ - "Metal Head attack in progress." + "Atac de cap de metall en curs." ], "cityv042": [ - "All citizens go to safe shelters." + "Tots els ciutadans van a refugis segurs." ], "cityv043": [ - "Eco Grid growing unstable." + "Eco Grid creixent inestable." ], "cityv044": [ - "The Eco Grid is down. Repeat: The Eco Grid is down." + "L'Eco Grid està caiguda. Repetiu: l'Eco Grid està baixa." ], "cityv045": [ - "Red alert: City shield wall compromised." + "Alerta vermella: mur d'escut de la ciutat compromès." ], "cityv046": [ - "Unauthorized movement in sewer system." + "Moviment no autoritzat a la xarxa de clavegueram." ], "cityv047": [ - "This is a restricted area. Defenses activated." + "Aquesta és una zona restringida. Defenses activades." ], "cityv048": [ - "You are trespassing. Defenses coming online." + "Estàs ingressant. Les defenses estan en línia." ], "cityv049": [ - "I regret use of force. Systems arming." + "Lamento l'ús de la força. Armament de sistemes." ], "cityv050": [ - "Trespasser neutralized." + "Intrus neutralitzat." ], "cityv051": [ - "Suspect destroyed." + "Sospitós destruït." ], "cityv052": [ - "I am authorized to use force." + "Estic autoritzat a utilitzar la força." ], "cityv053": [ - "General alert: Riot in progress. Krimzon Guards en route." + "Alerta general: disturbis en curs. Guàrdies de Krimzon en ruta." ], "cityv054": [ - "Surrender yourself. You are under arrest." + "Renuncia't a tu mateix. Estàs detingut." ], "cityv055": [ - "There is no escape." + "No hi ha escapatòria." ], "cityv056": [ - "You are in a restricted sector. This sector is on high alert." + "Esteu en un sector restringit. Aquest sector està en alerta màxima." ], "cityv057": [ - "You are under arrest. Surrender yourself." + "Estàs detingut. Renuncia't a tu mateix." ], "cityv058": [ - "This sector is off limits." + "Aquest sector està fora dels límits." ], "cityv061": [ - "All systems back online and in the green." + "Tots els sistemes tornen a estar en línia i al verd." ], "cityv062": [ - "The race is about to begin." + "La cursa està a punt de començar." ], "cityv063": [ - "Welcome to the city transportation system." + "Benvingut al sistema de transport de la ciutat." ], "cityv064": [ - "You can thrust in your vehicle at any time." + "Podeu introduir el vostre vehicle en qualsevol moment." ], "cityv065": [ - "Braking will assist in vehicle control." + "La frenada ajudarà al control del vehicle." ], "cityv067": [ - "Backing up is easy." + "Fer una còpia de seguretat és fàcil." ], "cityv068": [ - "You can hover in one of two zones: low and high." + "Podeu passar el cursor en una de les dues zones: baixa i alta." ], "cityv069": [ - "Try switching hover zones." + "Proveu de canviar les zones de flotació." ], "cityv070": [ - "Switching hover zones may help avoid traffic or", - "ground obstacles." + "Canviar de zona de flotació pot ajudar a evitar el trànsit o", + "obstacles terrestres." ], "cityv075": [ - "Alert: Vehicle destruction imminent." + "Alerta: destrucció del vehicle imminent." ], "cityv076": [ - "Please drive more carefully next time." + "Si us plau, condueixi amb més cura la propera vegada." ], "cityv077": [ - "Thank you for using the vehicle." + "Gràcies per utilitzar el vehicle." ], "cityv078": [ - "Have a nice day." + "Que tinguis un bon dia." ], "cityv079": [ - "Warning: Missile cooling systems damaged." + "Avís: sistemes de refrigeració de míssils danyats." ], "cityv080": [ - "Alert: Backup cooling system failure.", - "Emergency overrides initiated." + "Alerta: fallada del sistema de refrigeració de seguretat.", + "S'han iniciat les anul·lacions d'emergència." ], "cityv081": [ - "Missile systems at critical overload.", - "Failsafe not responding." + "Sistemes de míssils amb sobrecàrrega crítica.", + "Failsafe no respon." ], "cityv082": [ - "Danger: Warhead detonation imminent.", - "Evacuate immediately." + "Perill: detonació de l'ogiva imminent.", + "Evacuar immediatament." ], "cityv087": [ - "Arriving at Throne Room floor." + "Arribada al pis de la Sala del Tron." ], "cityv088": [ - "Arriving at ground floor." + "Arribada a la planta baixa." ], "cityv093": [ - "You have been sentenced to termination." + "Has estat condemnat a acomiadament." ], "cityv094": [ - "This area is restricted.", - "Initiating termination with extreme prejudice." + "Aquesta zona està restringida.", + "Iniciar la baixa amb extrems prejudicis." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Aquesta àrea només està oberta al personal de la Guàrdia de Krimzon." ], "cityv096": [ - "The city is on high alert." + "La ciutat està en alerta màxima." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "La ciutat està sota atac.", + "Tots els ciutadans es dirigeixen a refugis segurs." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "La ciutat està sota atac. Si us plau, quedeu-vos a casa vostra." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "Els agressors de Metal Head s'estan infiltrant al sistema." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Enhorabona per rebre un passi de seguretat." ], "cityv107": [ - "Unauthorized use of Fortress door.", - "Activating security tank." + "Ús no autoritzat de la porta de la fortalesa.", + "Activació del dipòsit de seguretat." ], "cityv108": [ - "Gunpod weapons coming online." + "Armes Gunpod en línia." ], "cityv109": [ - "Weapons overheating." + "Sobreescalfament de les armes." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "Armes inoperants. Si us plau, espereu que es refredi." ], "cityv111": [ - "Weapons back online." + "Les armes tornen a estar en línia." ], "cityv112": [ - "The gunpod has taken severe damage." + "La gunpod ha patit greus danys." ], "cityv130": [ - "The city map is displayed in the lower right." + "El mapa de la ciutat es mostra a la part inferior dreta." ], "cityv132": [ - "Follow the icons on the map", - "to reach important destinations." + "Seguiu les icones del mapa", + "per arribar a destinacions importants." ], "cityv134": [ - "Intruder alert." + "Alerta d'intrus." ], "cityv135": [ "Stand by." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Estic experimentant una sobrecàrrega del circuit.", + "Enceneu els meus interruptors de bypass dins del límit de temps", + "i seràs recompensat." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "No heu pogut activar la graella de bypass a temps.", + "Els meus circuits de la Zona C s'han sobrecarregat." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "Heu activat correctament el bypass", + "per als meus circuits a temps.", + "Aquí hi ha una recompensa." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", - "to stabilize the Eco Grid." + "Necessito alimentació d'emergència per als meus Eco Converters.", + "Enceneu tots els circuits disponibles ràpidament", + "per estabilitzar l'Eco Grid." ], "cityv150": [ - "You didn't reach all the switches in time.", - "The Eco Grid is still unstable." + "No heu arribat a tots els interruptors a temps.", + "L'Eco Grid encara és inestable." ], "cityv151": [ - "You successfully switched on the circuits", - "to stabilize the Eco Grid.", - "You have earned a reward." + "Heu engegat correctament els circuits", + "per estabilitzar l'Eco Grid.", + "Has guanyat una recompensa." ], "cityv152": [ - "I have detected a Dark Eco spill.", - "You must remove this hazard quickly", - "before the city is contaminated." + "He detectat un vessament d'Eco fosc.", + "Heu d'eliminar aquest perill ràpidament", + "abans que la ciutat es contamini." ], "cityv153": [ - "You did not remove all the Dark Eco quickly enough." + "No heu eliminat tot el Dark Eco amb prou rapidesa." ], "cityv154": [ - "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "Has eliminat el perill Dark Eco a temps.", + "La ciutat t'està agraïda." ], "cityv155": [ - "Sensors indicate a cluster of Blue Eco in the city.", - "Collect all eco before it dissipates", - "and you will be rewarded." + "Els sensors indiquen un cúmul de Blue Eco a la ciutat.", + "Recull tot l'eco abans que es dissipi", + "i seràs recompensat." ], "cityv156": [ - "You did not retrieve all of the eco." + "No heu recuperat tot l'eco." ], "cityv157": [ - "You successfully retrieved the eco.", - "Here is your reward." + "Heu recuperat correctament l'eco.", + "Aquí teniu la vostra recompensa." ], "cityv158": [ - "Emergency response needed.", - "Runaway bomb bots detected and headed for", - "populated areas. Neutralize all bomb bots", - "before it's too late." + "Necessita resposta d'emergència.", + "Els robots de bombes fugitius van ser detectats i es van dirigir", + "zones poblades. Neutralitzeu tots els robots bomba", + "abans que sigui massa tard." ], "cityv159": [ - "You failed to neutralize the runaway bomb bots." + "No heu pogut neutralitzar els robots de bombes fugitius." ], "cityv160": [ - "You destroyed the runaway bomb bots.", - "The city thanks you." + "Has destruït els robots de bombes fugitius.", + "La ciutat t'ho agraeix." ], "cityv161": [ - "Get to this point in the game quickly", - "and you will receive a prize." + "Arribeu a aquest punt del joc ràpidament", + "i rebràs un premi." ], "cityv162": [ - "Try to find this spot." + "Intenta trobar aquest lloc." ], "cityv163": [ - "Can you identify this place and get there?" + "Pots identificar aquest lloc i arribar-hi?" ], "cityv164": [ - "Make it here in the time allotted and a reward is yours." + "Fes-ho aquí en el temps assignat i una recompensa serà teva." ], "cityv165": [ - "Find this spot for a prize." + "Troba aquest lloc per a un premi." ], "cityv166": [ - "Get to this spot for a prize." + "Arriba a aquest lloc per un premi." ], "cityv167": [ - "Metal Heads have been detected in the gun course.", - "Neutralize them all immediately." + "S'han detectat caps metàl·lics en el curs d'armes.", + "Neutralitzeu-los tots immediatament." ], "cityv168": [ - "You did not kill them all." + "No els vas matar a tots." ], "cityv169": [ - "Excellent shooting. Threat eliminated." + "Excel·lent rodatge. Amenaça eliminada." ], "cityv170": [ - "Get a high score on the JET-Board and receive a prize." + "Aconsegueix una puntuació més alta al JET-Board i rep un premi." ], "cityv171": [ - "Try for a high score and receive a prize." + "Intenta aconseguir una puntuació més alta i rep un premi." ], "cityv172": [ - "You did not achieve a high enough score." + "No has aconseguit una puntuació prou alta." ], "cityv173": [ - "Congratulations, you achieved a high enough score." + "Enhorabona, has aconseguit una puntuació prou alta." ], "cityv174": [ - "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Benvingut a l'ordinador de l'estadi central.", + "Si us plau, selecciona el teu repte." ], "cityv175": [ - "Attention, all citizens:", - "The Class 1 Race is about to begin." + "Atenció, tots els ciutadans:", + "La cursa de la classe 1 està a punt de començar." ], "cityv176": [ - "Attention, all citizens:", - "The Class 2 Race is about to begin." + "Atenció, tots els ciutadans:", + "La cursa de la classe 2 està a punt de començar." ], "cityv177": [ - "Attention, all citizens:", - "The Class 3 Race is about to begin." + "Atenció, tots els ciutadans:", + "La cursa de la classe 3 està a punt de començar." ], "cityv178": [ - "Care to try for the course record?" + "Voleu provar el registre del curs?" ], "cityv179": [ - "Congratulations, you achieved the gold record." + "Enhorabona, has aconseguit el rècord d'or." ], "cityv180": [ - "Congratulations, you achieved the silver record." + "Enhorabona, has aconseguit el rècord de plata." ], "cityv181": [ - "Congratulations, you achieved the bronze record." + "Enhorabona, has aconseguit el rècord de bronze." ], "cityv182": [ - "Care to try for a high score record?" + "Voleu intentar aconseguir un rècord de puntuació més alta?" ], "cityv183": [ - "Would you like to try for a high score?" + "T'agradaria provar una puntuació alta?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Benvinguts a les curses contrarellotge." ], "cityv185": [ - "Would you like to race for a record time?" + "T'agradaria córrer per un temps rècord?" ], "cityv186": [ - "Choose your course." + "Tria el teu curs." ], "cityv187": [ - "Would you like to try for a course record?" + "T'agradaria provar un registre del curs?" ], "cityv188": [ - "Would you like to use Orbs to buy a secret?" + "T'agradaria utilitzar Orbs per comprar un secret?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "No tens prou orbes per a aquest secret." ], "cityv190": [ - "Secret activated." + "Secret activat." ], "cityv191": [ - "All secrets are activated." + "Tots els secrets estan activats." ], "cityv192": [ - "Please exit the Titan Suit." + "Si us plau, surt del Titan Suit." ], "cityv193": [ - "You must exit the Titan Suit." + "Heu de sortir del Titan Suit." ], "cityv194": [ - "Vehicles must remain within city limits." + "Els vehicles han de romandre dins dels límits de la ciutat." ], "cityv195": [ - "Exit denied. Enemy targets still present." + "Sortida denegada. Objectius enemics encara presents." ], "cityv196": [ - "Exit denied. Metal Head eggs still detected." + "Sortida denegada. Encara s'han detectat ous de cap de metall." ], "cityv197": [ - "Scanners show Metal Head eggs still active." + "Els escàners mostren els ous de Metal Head encara actius." ], "daxm001": [ - "Shoot the platform, Jak." + "Dispara a la plataforma, Jak." ], "daxm002": [ - "We need something to get through that gate!" + "Necessitem alguna cosa per passar per aquesta porta!" ], "daxm003": [ - "Shoot the Metal Head when he moves his shield!" + "Dispara al cap metàl·lic quan mou l'escut!" ], "daxm004": [ - "Hit him in his stomach!" + "Pega'l a l'estómac!" ], "daxm005": [ - "Whoa! That path dropped like uh... a rock!" + "Vaja! Aquell camí va caure com una roca!" ], "daxm006": [ - "Smack the box, baby!" + "Fes un cop a la caixa, nena!" ], "daxm007": [ - "That's what I call a rocky road!" + "Això és el que jo anomeno un camí pedregós!" ], "daxm008": [ - "We gotta get to the top!" + "Hem d'arribar al cim!" ], "daxm009": [ - "We made it!!" + "Ho hem aconseguit!!" ], "daxm010": [ - "Rock 'n roll!" + "Rock n roll!" ], "ds001": [ - "We gotta find the Baron, Jak." + "Hem de trobar el baró, Jak." ], "ds005": [ - "Jak, those are Metal Heads!" + "Jak, aquests són Metal Heads!" ], "ds006": [ - "Finally, now we get to see the Shadow!", - "What do ya gotta do around this place to get noticed?" + "Finalment, ara podem veure l'Ombra!", + "Què has de fer per aquest lloc per fer-te notar?" ], "ds012": [ - "That must be the Ruby Key to the city." + "Aquesta deu ser la clau de Rubí de la ciutat." ], "ds013": [ - "Statues are becoming an endangered species around here." + "Les estàtues s'estan convertint en una espècie en perill d'extinció per aquí." ], "ds014": [ - "So this is Mar's scary tomb, eh?", - "Doesn't look so bad." + "Així que aquesta és la tomba espantosa de Mar, eh?", + "No es veu tan malament." ], "ds016": [ - "Let's bring the money back to Krew." + "Tornem els diners a Krew." ], "ds017": [ - "That must be the ammo and missile Torn told us to blow up!" + "Aquesta deu ser la munició i el míssil que en Torn ens va dir que esclatés!" ], "ds018": [ - "Get the tank to shoot the missile!" + "Aconsegueix el tanc per disparar el míssil!" ], "ds019": [ - "Break those tubes in the center." + "Trenqueu aquests tubs al centre." ], "ds020": [ - "Please tell me you remember how to roll..." + "Si us plau, digueu-me que recordeu com fer rodar..." ], "ds023": [ - "Let's rock!" + "Fem-la grossa!" ], "ds024": [ - "Here we go!" + "Aqui venim!" ], "ds025": [ - "All right!" + "Tot bé!" ], "ds026": [ - "Yeah!" + "Sí!" ], "ds028": [ - "Oh yeah!" + "Oh sí!" ], "ds029": [ - "Let's go back to the city." + "Tornem a la ciutat." ], "ds030": [ - "I think we need to go back to the city, Jak." + "Crec que hem de tornar a la ciutat, Jak." ], "ds031": [ - "Let's go talk to Torn." + "Anem a parlar amb el Torn." ], "ds032": [ - "Let's go back to the Underground Hideout." + "Tornem a l'amagatall subterrani." ], "ds043": [ - "You can get a longer jump by rolling into it." + "Podeu obtenir un salt més llarg rodant-hi." ], "ds044": [ - "Use a long jump to get across this gap." + "Utilitzeu un salt llarg per travessar aquest buit." ], "ds045": [ - "Nice form!" + "Bona forma!" ], "ds046": [ - "If you duck before you jump, you'll go higher.", - "You'll need a high jump to reach the top of this ledge, Jak." + "Si t'aixeques abans de saltar, pujaràs més amunt.", + "Necessitaràs un salt alt per arribar al cim d'aquesta cornisa, Jak." ], "ds047": [ - "Ooh, that's a high one.", - "You'll need to jump,", - "then jump again in the air to get up there." + "Oh, això és alt.", + "Haureu de saltar,", + "després torna a saltar a l'aire per pujar-hi." ], "ds048": [ - "Hit 'em again, Jak!" + "Torna'ls a colpejar, Jak!" ], "ds049": [ - "Do a spin kick!" + "Fes una puntada giratòria!" ], "ds050": [ - "Robotank, run!" + "Robotank, corre!" ], "ds051": [ - "Hey, we should stay with Sig." + "Ei, hauríem de quedar-nos amb Sig." ], "ds052": [ - "Hey, big guy, keep close, huh?" + "Ei, noi gran, mantén-te a prop, eh?" ], "ds053": [ - "We're too far away from Sig." + "Estem massa lluny de Sig." ], "ds054": [ - "Stick with the plan, Jak, protect Sig!" + "Seguiu amb el pla, Jak, protegiu Sig!" ], "ds055": [ - "Uh oh, where's Sig?" + "Uh oh, on és Sig?" ], "ds056": [ - "Wow, what a blast!" + "Vaja, quina explosió!" ], "ds057": [ - "Sig's a good shot." + "Sig és un bon tret." ], "ds058": [ - "Go help Sig!" + "Ajuda Sig!" ], "ds059": [ - "Nice shootin', Sig!" + "Bonic tiroteig, Sig!" ], "ds060": [ - "You're my hero!" + "Ets el meu heroi!" ], "ds061": [ - "Uh oh, Sig's in trouble!" + "Uh oh, Sig està en problemes!" ], "ds062": [ - "There's another Metal Head going after our boy!", - "Shoot it, shoot it!" + "Hi ha un altre Metal Head perseguint el nostre noi!", + "Dispara'l, dispara'l!" ], "ds063": [ - "Keep Sig safe, Jak!" + "Manteniu Sig segur, Jak!" ], "ds064": [ - "Whoa, Sig's really getting roughed up!" + "Vaja, en Sig s'està posant molt malament!" ], "ds065": [ - "Shoot 'em, shoot 'em!" + "Dispara'ls, dispara'ls!" ], "ds066": [ - "Sig dies, we die." + "Sig morim, morim." ], "ds067": [ - "Oof, we suck..." + "Uf, fem mal..." ], "ds068": [ - "We have to keep 'em away from Sig." + "Hem de mantenir-los lluny de Sig." ], "ds069": [ - "We need to find the valve to turn the water back on." + "Hem de trobar la vàlvula per tornar a obrir l'aigua." ], "ds094": [ - "Robotank, run!" + "Robotank, corre!" ], "ds095": [ - "Here comes that tank again!" + "Aquí torna aquest tanc!" ], "ds096": [ - "Get the tank to shoot the missile!" + "Aconsegueix el tanc per disparar el míssil!" ], "ds099": [ - "We need to get to the top of that tower!" + "Hem d'arribar al cim d'aquesta torre!" ], "ds100": [ - "Climb the ruined tower, Jak!" + "Puja a la torre en ruïnes, Jak!" ], "ds111": [ - "We should come back with the Titan Suit to do this path." + "Hauríem de tornar amb el Titan Suit per fer aquest camí." ], "ds112": [ - "You've got a mechanical fist, Jak. Use it!" + "Tens un puny mecànic, Jak. Utilitza-ho!" ], "ds113": [ - "Break the door!" + "Trenca la porta!" ], "ds114": [ - "800 pound Tigorilla comin' through!" + "Tigorilla de 800 lliures arriba!" ], "ds115": [ - "Smashing work, Jak! Oh, that was funny." + "Gran feina, Jak! Oh, va ser divertit." ], "ds116": [ - "Shoot the platform, Jak." + "Dispara a la plataforma, Jak." ], "ds117": [ - "We need something to get through that gate." + "Necessitem alguna cosa per passar per aquesta porta." ], "ds118": [ - "Shoot the Metal Head when he moves his shield." + "Dispara al cap metàl·lic quan mou l'escut." ], "ds119": [ - "Hit him in his stomach." + "Li va colpejar a l'estómac." ], "ds120": [ - "Whoa, that path dropped like a... a rock!" + "Va, aquest camí va caure com una... una roca!" ], "ds121": [ - "Smack the box, baby!" + "Fes un cop a la caixa, nena!" ], "ds128": [ - "Good, we're through." + "Bé, hem acabat." ], "ds129": [ - "Shoot the gun, Jak!" + "Dispara la pistola, Jak!" ], "ds143": [ - "We're supposed to keep Krew's guys alive, Jak!" + "Se suposa que hem de mantenir vius els nois de Krew, Jak!" ], "ds144": [ - "Save 'em, Jak!" + "Salva'ls, Jak!" ], "ds145": [ - "Don't like this, Jak..." + "No m'agrada això, Jak..." ], "ds146": [ - "Behind us, Jak!" + "Darrere nostre, Jak!" ], "ds147": [ - "Metal Heads! Everywhere!" + "Caps de metall! A tot arreu!" ], "ds148": [ - "Protect us, Jak! But first me." + "Protegeix-nos, Jak! Però primer jo." ], "ds150": [ - "Take a vehicle, Jak! It's faster." + "Agafa un vehicle, Jak! És més ràpid." ], "ds151": [ - "Use your JET-Board!" + "Utilitzeu el vostre JET-Board!" ], "ds152": [ - "We got company, Jak! Lots of guards!" + "Tenim companyia, Jak! Molts guàrdies!" ], "ds160": [ - "That's right, we're bad! The Precursor Stone is ours!" + "Així és, som dolents! La Pedra Precursora és nostra!" ], "ds161": [ - "There's Mar's gun, Jak! Let's go check it out." + "Hi ha l'arma de la Mar, Jak! Anem a comprovar-ho." ], "ds162": [ - "These Precursor Orbs are worth a lot now.", - "We might find a few hidden around,", - "or get some doing difficult tasks.", - "We'll be able to buy stuff with 'em!" + "Aquests orbes precursors valen molt ara.", + "Podríem trobar-ne uns quants amagats al voltant,", + "o fer-ne algunes tasques difícils.", + "Podrem comprar coses amb ells!" ], "ds163": [ - "Jak, now that we have the Palace Security Pass,", - "let's go have some fun in the big man's crib!" + "Jak, ara que tenim el passi de seguretat del palau,", + "anem a divertir-nos al bressol del gran!" ], "ds164": [ - "Back up to get out of the mech." + "Tornar enrere per sortir del mecànic." ], "ds165": [ - "We're free, Jak! Thanks to me.", - "Nice to breathe some fresh air, huh?", - "We'll get that Baron Praxis guy, alright!" + "Som lliures, Jak! Gràcies a mi.", + "Encantat de respirar una mica d'aire fresc, oi?", + "Aconseguirem aquest noi de Baron Praxis, d'acord!" ], "ds166": [ - "I'm not getting out of this pod", - "'till you kill all those crazy flyin' Metal Heads!" + "No sortiré d'aquesta beina", + "\"fins que mateu tots aquells caps de metall voladors bojos!" ], "ds167": [ - "I wonder why they wanted us to protect Samos' Hut.", - "Maybe now we'll get to meet the Shadow." + "Em pregunto per què volien que protegim la cabana de Samos.", + "Potser ara ens trobarem amb l'Ombra." ], "ds168": [ - "There's the Rift Ring!" + "Allà hi ha l'anell del Rift!" ], "ds173": [ "Ahhh!" @@ -2368,734 +2368,734 @@ "Whoa-whoa-oaa-ah!" ], "ds176": [ - "Whoa!" + "Vaja!" ], "ds177": [ - "Hey!" + "Ei!" ], "ds178": [ - "Hey, watch that!" + "Ei, mira això!" ], "ds179": [ "Ooh!" ], "ds180": [ - "Oh, boy!" + "Oh noi!" ], "ds181": [ - "Uooaaoh!" + "Vaja!" ], "ds182": [ - "Wow, that was close!" + "Vaja, això estava a prop!" ], "ds183": [ - "Oh, boy!" + "Oh noi!" ], "ds184": [ - "Yes!" + "Sí!" ], "ds185": [ - "Yeah!" + "Sí!" ], "ds186": [ - "Hey, watch it!" + "Ei, mira-ho!" ], "ds187": [ - "All right!" + "Tot bé!" ], "ds188": [ - "Move over!" + "Aparta't!" ], "ds189": [ - "Orange Lightning coming through!" + "El llamp taronja arriba!" ], "ds190": [ - "Rollin' with the homies!" + "A rodar amb els companys!" ], "ds191": [ - "You're mine!" + "Ets meu!" ], "ds192": [ - "There they are!" + "Aquí estan!" ], "ds193": [ - "Hey! Watch where you're drivin'!" + "Ei! Vigileu per on conduïu!" ], "ds194": [ - "How do I drive this thing?" + "Com condueixo aquesta cosa?" ], "ds195": [ - "Yeah, that's right! I'm bad!" + "Si, això està bé! Estic malament!" ], "ds196": [ - "Outta my way!" + "Fora del meu camí!" ], "ds197": [ - "Outta my way!" + "Fora del meu camí!" ], "ds198": [ - "Move it or lose it, buddy!" + "Moveu-lo o perdeu-lo, company!" ], "ds199": [ - "Mm... bye-bye!" + "Mm... adéu!" ], "ds200": [ - "Last lap!" + "Última volta!" ], "ds201": [ - "Come on, come on!" + "Vinga, vinga!" ], "ds202": [ - "Come on, come on, come on!" + "Va, va, va!" ], "ds203": [ - "Pedal to the metal!" + "Pedaleu al metall!" ], "ds204": [ - "Ooooah, I gotta catch up!" + "Ooooah, m'he de posar al dia!" ], "ds205": [ - "Turn and burn, baby!" + "Gira i crema, nena!" ], "ds206": [ - "Oooh, it's gonna be close!" + "Oooh, estarà a prop!" ], "ds207": [ - "Eat my dust, buddy!" + "Menja'm la pols, company!" ], "ds208": [ - "Gotcha!" + "Entenc!" ], "ds209": [ - "This is my track, grandma!" + "Aquesta és la meva pista, àvia!" ], "ds210": [ - "Learn to drive!" + "Aprendre a conduir!" ], "ds211": [ - "Turn, turn!" + "Gira, gira!" ], "ds212": [ - "Step on it!" + "Pas-hi!" ], "ds213": [ - "Oooh, I won, I won!" + "Oooh, vaig guanyar, vaig guanyar!" ], "ds214": [ - "Yeee, that's a good lap time." + "Yeee, aquest és un bon temps de volta." ], "ds215": [ - "Oh, yeah! I'm rockin'!" + "Oh, sí! Estic rockejant!" ], "ds216": [ - "Another lap in the record book!" + "Una altra volta al llibre de rècords!" ], "ds217": [ - "Take a good look at my tail!" + "Mireu bé la meva cua!" ], "ds218": [ - "Wahoo!" + "Uau!" ], "ds219": [ - "Hey, fang boy, hurry up and get in,", - "we'll take you to Brutter!" + "Ei, noi fang, afanya't i entra,", + "et portem a Brutter!" ], "ds220": [ - "Here's your boy, Brutter! We're off to get another animal!" + "Aquí tens el teu nen, Brutter! Anem a buscar un altre animal!" ], "ds221": [ - "Yo, animal lover, get your furry butt in the vehicle!" + "Jo, amant dels animals, puja el teu cul pelut al vehicle!" ], "ds222": [ - "Here's another beast of burden!" + "Aquí teniu una altra bèstia de càrrega!" ], "ds223": [ - "In the vehicle, buddy, we can save you!" + "Al vehicle, company, et podem salvar!" ], "ds224": [ - "Another Lurker freed." + "Un altre Lurker alliberat." ], "ds225": [ - "Let's move, eco breath! We gotta get you to Brutter." + "Movem-nos, eco alè! T'hem de portar a Brutter." ], "ds226": [ - "Hey, Brutter! Look what the cat turkey dragged in." + "Ei, Brutter! Mireu què va arrossegar el gat gall dindi." ], "ds227": [ - "Lookie what we found!" + "Mira què hem trobat!" ], "ds228": [ - "You recognize this monster?" + "Reconeixes aquest monstre?" ], "ds229": [ - "We did it! We saved them all!" + "Ho hem fet! Els hem salvat tots!" ], "ds230": [ - "Catch the paddywagon, Jak!" + "Agafa el carro, Jak!" ], "ds231": [ - "Crash the paddywagon!" + "Estavella el carro!" ], "ds232": [ - "A little more damage and we got the sucker!" + "Una mica més de dany i tenim la ventosa!" ], "ds233": [ - "He's smoking, Jak! Hit him again!" + "Està fumant, Jak! Torna'l a colpejar!" ], "ds234": [ - "That caused some damage!" + "Això va causar alguns danys!" ], "ds235": [ - "One more like that and he's through!" + "Un més així i s'ha acabat!" ], "ds236": [ - "Find the next vehicle!" + "Troba el proper vehicle!" ], "ds237": [ - "Yes, we took it out!" + "Sí, l'hem tret!" ], "ds238": [ - "Hunt and destroy, baby!" + "Caça i destrueix, nena!" ], "ds239": [ - "Hit it, hit it!" + "Pega-ho, pega-ho!" ], "ds240": [ - "Take it out!" + "Treu-ho!" ], "ds241": [ - "Pick up the Lurker, Jak!" + "Agafa el Lurker, Jak!" ], "ds242": [ - "Get the Lurker!" + "Aconsegueix el Lurker!" ], "ds243": [ - "We need to pick up that Lurker back there." + "Hem de recollir aquell Lurker allà enrere." ], "ds244": [ - "Usually, I don't like to be this close to Lurkers." + "Normalment, no m'agrada estar tan a prop dels Lurkers." ], "ds245": [ - "Ehehe, you seem like a nice, uh... animal." + "Ehehe, sembla un animal simpàtic, eh..." ], "ds246": [ - "Easy, buddy. Don't bite me!" + "Fàcil, amic. No em mossegueu!" ], "ds247": [ - "Hey, stop slobbering on me!" + "Ei, deixa de bavar-me!" ], "ds248": [ - "He's recharging!" + "S'està recarregant!" ], "ds249": [ - "Ooh, we got him good that time!" + "Oh, el vam tenir bé aquell cop!" ], "ds250": [ - "Yeah, now he's hurtin'!" + "Sí, ara fa mal!" ], "ds251": [ - "Good shot, Jak!" + "Bona presa, Jak!" ], "ds252": [ - "Incoming!" + "Entrant!" ], "ds253": [ - "Yeah, we got him!" + "Sí, el tenim!" ], "ds254": [ - "Jak, hide behind the pillars when he shoots!" + "Jak, amaga't darrere dels pilars quan dispara!" ], "ds255": [ - "He's got the Precursor Stone!" + "Té la pedra precursora!" ], "ds256": [ - "Kick the bomb right at him, Jak!" + "Pateu la bomba directament a ell, Jak!" ], "ds257": [ - "That one hit him!" + "Aquest el va colpejar!" ], "ds258": [ - "Look out!" + "Estar atent!" ], "ds259": [ - "Jump the gap!" + "Salta la bretxa!" ], "ds260": [ - "Yeah, you hit him!" + "Sí, l'has colpejat!" ], "ds261": [ - "As if there wasn't enough of Krew already." + "Com si ja no hi hagués prou de Krew." ], "ds262": [ - "Shoot 'em all, Jak! We'll sort 'em out later..." + "Dispara'ls a tots, Jak! Més tard els arreglarem..." ], "ds263": [ - "There's the real Krew! Shoot him!" + "Aquí està el veritable Krew! Dispara'l!" ], "ds264": [ - "You got him!" + "El tens!" ], "ds265": [ - "Watch your back, Jak!" + "Cuida't d'esquena, Jak!" ], "ds266": [ - "They're comin' again!" + "Ja tornen a venir!" ], "ds267": [ - "Now you've got us mad." + "Ara ens has enfadat." ], "ds268": [ - "Good shot, Jak! The big man is hurtin' now." + "Bona presa, Jak! L'home gran fa mal ara." ], "ds269": [ - "And the challenger is down for the count!" + "I el desafiador està a punt de comptar!" ], "ds270": [ - "Keep movin', baby! He's gonna shoot!" + "Segueix movent, nena! Va a disparar!" ], "ds271": [ - "Wooh, here come some Metal Heads!" + "Wooh, aquí vénen alguns Metal Heads!" ], "ds272": [ - "Protect the kid!" + "Protegiu el nen!" ], "ds273": [ - "Kill all the Metal Heads!" + "Mata tots els caps de metall!" ], "ds274": [ - "More Metal Heads!" + "Més caps metàl·lics!" ], "ds275": [ - "Shoot Kor's legs out, Jak!" + "Dispara les cames de Kor, Jak!" ], "ds276": [ - "He's down, Jak! Hit him in the head!" + "Està abatut, Jak! Pega'l al cap!" ], "ds277": [ - "Boot to the head, boot to the head!" + "Bota al cap, bota al cap!" ], "ds278": [ - "I think we should hide somewhere!" + "Crec que hauríem d'amagar-nos en algun lloc!" ], "ds279": [ - "Take cover before he blows!" + "Protegiu-vos abans que bufi!" ], "ds280": [ - "Yeah, you got him good that time!" + "Sí, el vas fer bé aquella vegada!" ], "ds281": [ - "Oh, man, now he's angry!" + "Ai, home, ara està enfadat!" ], "ds282": [ - "Get him, Jak!" + "Agafa'l, Jak!" ], "ds283": [ - "He's gonna shoot!" + "Va a disparar!" ], "ds284": [ - "Nice hit, partner!" + "Bon èxit, company!" ], "ds285": [ - "That had to hurt him." + "Això li havia de fer mal." ], "ds286": [ - "You messed with the wrong heroes, buddy!" + "T'has ficat amb els herois equivocats, company!" ], "ds287": [ - "Shoot him again, Jak!" + "Torna-li a disparar, Jak!" ], "ds288": [ - "Jak, we're taking a beating!" + "Jak, estem donant una pallissa!" ], "ds289": [ - "Stay away from the Dark Eco!" + "Manteniu-vos lluny de l'Eco fosc!" ], "ds302": [ - "We've almost got him, Jak!" + "Gairebé el tenim, Jak!" ], "ds303": [ - "That's it! You did it!" + "Això és! Ho vas fer!" ], "ds305": [ - "Shoot the switch to change the coveyor belt's", - "direction!" + "Dispara l'interruptor per canviar el cinturó transportador", + "direcció!" ], "ds306": [ - "You gotta shoot the switch, Jak!" + "Has de disparar l'interruptor, Jak!" ], "ds307": [ - "Find the switch to change the conveyor's direction!" + "Trobeu l'interruptor per canviar la direcció de la cinta transportadora!" ], "ds321": [ - "Take out the turrets!" + "Treu les torretes!" ], "ds322": [ - "Hit the turrets, Jak!" + "Colpeja les torretes, Jak!" ], "ds323": [ - "Doin' some damage!" + "Fent algun mal!" ], "ds324": [ - "Get in the Titan Suit!" + "Poseu-vos al vestit Titan!" ], "ds325": [ - "Shoot that ship!" + "Dispara aquest vaixell!" ], "ds326": [ - "Yeah, that ship's feelin' it now!" + "Sí, aquest vaixell ho sent ara!" ], "ds327": [ - "Ooh, direct hits." + "Ooh, encerts directes." ], "ds328": [ - "I think you hurt it that time!" + "Crec que vas fer mal aquell cop!" ], "ds329": [ - "The ship's goin' down! You did it, Jak!" + "El vaixell està baixant! Ho has fet, Jak!" ], "ds353": [ - "That must be the missile Torn wants us to blow up!" + "Aquest deu ser el míssil que Torn vol que explotem!" ], "ds354": [ - "Break those tubes in the center, Jak!" + "Trenca els tubs del centre, Jak!" ], "ds372": [ - "Gotta ride the JET-Board on this one, Jak!" + "He de muntar el JET-Board en aquest, Jak!" ], "ds375": [ - "Look out for the ray!" + "Compte amb el raig!" ], "ds378": [ - "We gotta break all the support cables!" + "Hem de trencar tots els cables de suport!" ], "ds379": [ - "Grind on the support bases to break the cables." + "Triturar les bases de suport per trencar els cables." ], "ds394": [ - "Spider! Spider! Huff... huff... I hate spiders!" + "Aranya! Aranya! Huff... huff... odio les aranyes!" ], "ds395": [ - "Gotta run, gotta run!" + "He de córrer, he de córrer!" ], "ds398": [ - "The first beam!" + "El primer raig!" ], "ds399": [ - "The second beam! The door's opening!" + "El segon raig! La porta s'obre!" ], "ds404": [ - "There's Sig!" + "Hi ha Sig!" ], "ds405": [ - "Get the blocks to go into the slots, Jak!" + "Aconsegueix que els blocs entrin a les ranures, Jak!" ], "ds406": [ - "Shoot or kick the blocks!" + "Dispara o pateja els blocs!" ], "ds407": [ - "You have to get the blocks in the slots faster!" + "Has d'aconseguir els blocs a les ranures més ràpid!" ], "ds408": [ - "Run, Jak!" + "Corre, com!" ], "ds409": [ - "Keep moving!" + "Segueix movent-te!" ], "ds410": [ - "We gotta stay ahead of that thing!" + "Hem d'estar per davant d'això!" ], "ds439": [ - "Shoot all the Metal Head eggs, Jak!" + "Dispara a tots els ous de Metal Head, Jak!" ], "ds440": [ - "We didn't get all those nasty eggs!" + "No hem agafat tots aquests ous desagradables!" ], "ds441": [ - "We missed some Metal Head eggs!" + "Hem perdut uns ous de Metal Head!" ], "ds461": [ - "We gotta jump onto the crate dangling from the crane!" + "Hem de saltar a la caixa que penja de la grua!" ], "ds462": [ - "Use your hoverboard on this path!" + "Utilitzeu el vostre hoverboard en aquest camí!" ], "ds463": [ - "You can grind to cross those pipes using your", + "Podeu moldre per creuar aquestes canonades amb el vostre", "hoverboard!" ], "ds464": [ - "Ride the half-pipe to the end!" + "Munta el halfpipe fins al final!" ], "ds466": [ - "You gotta drop a bomb into each well, Jak!" + "Has de llançar una bomba a cada pou, Jak!" ], "ds467": [ - "Use the ramp to get high enough to drop the bomb in!" + "Utilitzeu la rampa per arribar prou alt com per llançar la bomba!" ], "ds468": [ - "Gotta jump higher!" + "Cal saltar més amunt!" ], "ds469": [ - "Only a minute before we're toast, Jak!" + "Només un minut abans que brindem, Jak!" ], "ds470": [ - "30 seconds left, then we go BOOM!" + "Queden 30 segons, després anem BOOM!" ], "ds471": [ - "Ten seconds left, Jak!" + "Queden deu segons, Jak!" ], "ds472": [ - "That's one well down, five to go!" + "Això és un ben baix, cinc per acabar!" ], "ds473": [ - "Two wells are history, four left!" + "Dos pous són història, quatre en queden!" ], "ds474": [ - "Three wells cut, only three to go!" + "Tres pous tallats, només queden tres!" ], "ds475": [ - "That's the fourth well, two bad boys left!" + "Aquest és el quart pou, queden dos nois dolents!" ], "ds476": [ - "You got the fifth well, only one to go!" + "Has aconseguit el cinquè pou, només queda un!" ], "ds477": [ - "You got 'em all, Jak!" + "Els tens tots, Jak!" ], "ds478": [ - "The last well is up where we rescued Vin!" + "L'últim pou és a dalt on vam rescatar Vin!" ], "ds479": [ - "Now he's vulnerable!" + "Ara és vulnerable!" ], "ds480": [ - "Take him out!" + "Treu-lo fora!" ], "ds481": [ - "Get him while he's vulnerable!" + "Aconsegueix-lo mentre sigui vulnerable!" ], "ds482": [ - "Here he comes..." + "Aquí ve ell..." ], "ds483": [ - "How's it feel to have your pants down, Baron?" + "Com et sents amb els pantalons abaixats, baró?" ], "ds484": [ - "Shoot him, shoot him!" + "Dispara'l, dispara'l!" ], "ds485": [ - "Look out!" + "Estar atent!" ], "ds487": [ - "Easy, Jak, we gotta get this guy to safety!" + "Fàcil, Jak, hem de portar aquest tipus a un lloc segur!" ], "ds488": [ - "We're takin' a lotta damage, buddy!" + "Estem fent molts danys, company!" ], "ds489": [ - "We're gettin' our butts kicked!" + "Ens donen una puntada de cul!" ], "ds490": [ - "Maybe I should drive..." + "Potser hauria de conduir..." ], "ds491": [ - "Let's go, wondergoon,", - "we'll take you to a safe place in the city!" + "Anem, meravellós,", + "et portem a un lloc segur de la ciutat!" ], "ds492": [ - "Okay, ride's over, out you go!" + "D'acord, s'ha acabat el viatge, va!" ], "ds493": [ - "All aboard the Underground railroad!", - "Next stop: Your new safehouse!" + "Tots a bord del ferrocarril subterrani!", + "Propera parada: el teu nou refugi!" ], "ds494": [ - "I believe this is your stop!" + "Crec que aquesta és la teva parada!" ], "ds495": [ - "Daxter's Freedom Fighter Taxi Service!", - "Hurry up, buddy, we ain't got all day." + "Servei de taxis de Daxter Freedom Fighter!", + "Afanya't, company, no tenim tot el dia." ], "ds496": [ - "Home free, baby!", - "Don't forget to tell Torn how well we did!" + "Lliurament de casa, nena!", + "No us oblideu de dir-li a Torn el bé que ho hem fet!" ], "ds497": [ - "You looking for a lift, fighter boy?" + "Busques un ascensor, noi lluitador?" ], "ds498": [ - "Okay, this is where you get off. So... get off." + "D'acord, aquí és on baixes. Així que... baixa." ], "ds499": [ - "We did it, Jak!", - "We got all the fighters to the new safehouses!" + "Ho hem fet, Jak!", + "Hem portat tots els lluitadors als nous refugis!" ], "ds500": [ - "Statues are becoming an endangered species around here." + "Les estàtues s'estan convertint en una espècie en perill d'extinció per aquí." ], "ds501": [ - "I got us a talkbox.", - "The city people use these things to communicate", - "with each other." + "Ens he donat un talkbox.", + "La gent de la ciutat utilitza aquestes coses per comunicar-se", + "amb l'altre." ], "ds502": [ - "Let's go see Onin and her crazy monkey bird." + "Anem a veure l'Onin i el seu ocell mico boig." ], "ds503": [ - "I think we need to go back to the city, Jak." + "Crec que hem de tornar a la ciutat, Jak." ], "dsek001": [ - "Kid! Stay with him, Jak!" + "Nen! Queda't amb ell, Jak!" ], "dsek002": [ - "Catch up to them, Jak!" + "Posa'ls al dia, Jak!" ], "dsek003": [ - "Where'd they go?!" + "On han anat?!" ], "dsek004": [ - "There they go again!" + "Allà tornen!" ], "dsek005": [ - "Uh oh, here comes trouble!" + "Ah, aquí vénen problemes!" ], "dsek006": [ - "More guards!?" + "Més guàrdies!?" ], "dsek007": [ - "Kid, please! You're killin' me!" + "Nen, si us plau! M'estàs matant!" ], "dsek008": [ - "Here, poochie, poochie..." + "Aquí, puta, puta..." ], "dsek009": [ - "There goes that crazy crocadog again...!" + "Allà torna aquell crocadog boig...!" ], "dsek010": [ - "Chase after the Kid!" + "Persegueix el nen!" ], "dsek011": [ - "Keep up with the Kid!" + "Seguiu amb el nen!" ], "dsek012": [ - "Crocadog!" + "Cocodril!" ], "dsek013": [ - "Phew, finally... let's get these two to Kor!" + "Uf, finalment... portem aquests dos a Kor!" ], "ero001": [ - "Out of my way!" + "Fora del meu camí!" ], "ero002": [ - "I own this track!" + "Soc el propietari d'aquesta pista!" ], "ero003": [ - "Give it up, eco freak!" + "Deixa-ho, eco freak!" ], "ero004": [ - "Payback time." + "Temps de recuperació." ], "ero005": [ - "Let's make this interesting!" + "Fem-ho interessant!" ], "ero006": [ - "Eat wall!" + "Menja paret!" ], "ero007": [ - "Time to die!" + "Hora de morir!" ], "ero008": [ - "Move over!" + "Aparta't!" ], "ero009": [ - "Catch me now, loser!" + "Atrapa'm ara, perdedor!" ], "ero010": [ - "I'm too fast for you!" + "Sóc massa ràpid per a tu!" ], "ero011": [ - "Now you're racing with the big boys!" + "Ara estàs competint amb els grans!" ], "ero012": [ - "Here's one for the Baron." + "Aquí en teniu un per al baró." ], "ero013": [ - "Take this!" + "Agafa això!" ], "ero014": [ - "You're making this too easy!" + "Ho estàs posant massa fàcil!" ], "ero015": [ - "Hahaha, bye bye!" + "Hahaha, adéu!" ], "ero016": [ - "You want some?" + "Vols una mica?" ], "ero017": [ - "Now you see why I never lose." + "Ara veus per què no perdo mai." ], "ero018": [ - "The crowd loves me!" + "La gent m'estima!" ], "ero019": [ "Ahh!" ], "ero020": [ - "Here's some pain!" + "Aquí hi ha una mica de dolor!" ], "ero021": [ - "Try to erase these!" + "Intenta esborrar-los!" ], "ero022": [ - "How's your reflexes?" + "Com van els teus reflexos?" ], "ero023": [ - "Too much for you?!" + "Massa per a tu?!" ], "ero024": [ - "Had enough?" + "En tenia prou?" ], "ero025": [ - "Avoid this, smart-ass!" + "Eviteu això, intel·ligent!" ], "ero026": [ - "Say goodnight, eco freak!" + "Digues bona nit, eco freak!" ], "ero027": [ - "You can't beat me!" + "No em pots vèncer!" ], "ero028": [ - "I'd die before I let you win!" + "Moriria abans de deixar-te guanyar!" ], "ero029": [ - "This will be your last lap." + "Aquesta serà la teva última volta." ], "ero030": [ - "Crash and burn!" + "Estavella i crema!" ], "ero031": [ - "To the end!" + "Fins al final!" ], "ero032": [ - "Last lap to live!" + "Última volta per viure!" ], "ero033": [ - "Now we end this!" + "Ara acabem això!" ], "ero034": [ - "You won't see the finish line!" + "No veuràs la meta!" ], "ero035": [ - "DIE!" + "MORIR!" ], "ero036": [ - "Die!" + "Morir!" ], "ero037": [ "Hahahaha!" ], "ero038": [ - "YEAH!" + "SÍ!" ], "ero039": [ "HA!" @@ -3107,103 +3107,103 @@ "NOOOOO!" ], "ero042": [ - "AHHHHHH!" + "AHHHHH!" ], "ero043": [ - "Here we go." + "Aqui venim." ], "ero044": [ - "See you later." + "Et veig després." ], "ero045": [ - "Fool! You cannot defeat me." + "ximple! No em pots derrotar." ], "ero046": [ - "You missed a ring." + "T'has perdut un anell." ], "ero047": [ - "This race is mine!" + "Aquesta carrera és meva!" ], "ero048": [ - "You can never be as fast as me!" + "Mai pots ser tan ràpid com jo!" ], "ero049": [ - "Keira wants a real man." + "Keira vol un home de veritat." ], "ero050": [ - "Bad luck, old chap." + "Mala sort, vell." ], "ero051": [ - "Nice try." + "Bon intent." ], "ero052": [ - "Move over!" + "Aparta't!" ], "ero053": [ - "Out of my way!" + "Fora del meu camí!" ], "ero054": [ - "Coming through!" + "Arribant!" ], "ero055": [ - "Bye bye!" + "Adeu!" ], "ero056": [ - "Here I come!" + "Aquí vinc!" ], "ero057": [ - "Get used to watching my back!" + "Acostumar-me a vigilar-me l'esquena!" ], "ero058": [ - "This is my city, eco freak." + "Aquesta és la meva ciutat, ecologista." ], "ero059": [ - "Looking sloppy, Jak." + "Sembla descuidat, Jak." ], "ero060": [ - "Give it up!" + "Renuncia-ho!" ], "ero061": [ - "Not this time." + "Aquesta vegada no." ], "ero062": [ - "Getting a bit nervous?" + "Estar una mica nerviós?" ], "ero063": [ - "Come back here!" + "Torna aquí!" ], "ero064": [ - "Move over, slowpoke!" + "Mou-te'n, lent!" ], "ero065": [ - "This is where I beat you." + "Aquí és on et vaig guanyar." ], "ero066": [ - "Final stretch!" + "Tram final!" ], "ero067": [ - "It's over!" + "S'ha acabat!" ], "ero068": [ - "I own this city." + "Soc propietari d'aquesta ciutat." ], "ero069": [ - "What? Where'd you come from?" + "Què? D'on venies?" ], "ero070": [ - "You're just lucky." + "Només tens sort." ], "ero071": [ - "You can't handle the speed!" + "No pots suportar la velocitat!" ], "ero072": [ - "Die, freak." + "Morir, monstre." ], "ero073": [ "No!" ], "ero074": [ - "STOP!" + "ATURA!" ], "ero075": [ "Hahahaha!" @@ -3215,404 +3215,404 @@ "Ahhh!" ], "ero078": [ - "Ough!" + "Ai!" ], "ero079": [ - "Oof!" + "Uf!" ], "ero080": [ - "Beat it, freak!" + "Bat-ho, monstre!" ], "ero081": [ - "Care to get back in the chair?" + "Voleu tornar a la cadira?" ], "ero082": [ - "This race was too easy." + "Aquesta cursa va ser massa fàcil." ], "ero083": [ - "It was easier than I thought to beat you." + "Va ser més fàcil del que pensava guanyar-te." ], "ero084": [ - "Not even close, Keira's betting on the wrong man." + "Ni tan sols a prop, la Keira aposta per l'home equivocat." ], "ero085": [ - "Loser! You disgust me!" + "Perdedor! M'has disgustat!" ], "ero086": [ - "You see Jak, I win, and I get what I want.", - "Someday I will be Baron, then the city will really pay!" + "Ja veus, Jak, guanyo i aconsegueixo el que vull.", + "Algun dia seré baró, llavors la ciutat realment pagarà!" ], "ero087": [ - "I should have known you'd be no match." + "Hauria d'haver sabut que no seria igual." ], "ero088": [ - "I win, Keira's going to love me!" + "Guanyo, la Keira m'estimarà!" ], "ero089": [ - "Maybe you should go back to wherever you came from." + "Potser hauríeu de tornar a on veniu." ], "ero090": [ - "I'll get a victory kiss from Keira later." + "Més tard rebré un petó de la victòria de la Keira." ], "ero091": [ - "Again I prove my superiority." + "De nou demostro la meva superioritat." ], "ero092": [ - "You see? You are no match for me." + "Tu veus? No ets rival per a mi." ], "ero093": [ - "Too bad, I win!" + "Llàstima, guanyo!" ], "ero094": [ - "Hahahaha, pathetic insect, I win!" + "Hahahaha, patètic insecte, guanyo!" ], "ero095": [ - "You can never defeat me!" + "Mai em podràs derrotar!" ], "ero096": [ "Ahhh!...ahh." ], "ero097": [ - "Ugh!" + "Uf!" ], "ero098": [ - "Ughhh!" + "Ufhh!" ], "ero099": [ - "Dahh!" + "Sí!" ], "ero100": [ - "Yaughh!" + "Jaja!" ], "ero101": [ "AUGHH!" ], "ero102": [ - "OW!" + "AU!" ], "ero103": [ "DAHHH!" ], "ero104": [ - "DAUGHH!" + "FILLA!" ], "erol001": [ - "I'm looking for you, eco freak,", - "and when I find you, you'll wish you died in prison." + "Et busco, ecologista,", + "i quan et trobi, desitjaràs que moris a la presó." ], "erol002": [ - "This is Erol. Looks like you're running out of friends.", - "We've arrested them all and thrown them into your", - "favorite prison. By the way, that blonde girl Tess", - "screamed so delightfully when she was arrested.", - "I can't wait for her turn in the chair.", + "Aquest és l'Erol. Sembla que t'estàs quedant sense amics.", + "Els hem detingut a tots i els hem llençat al teu", + "presó preferida. Per cert, aquella noia rossa Tess", + "va cridar tan deliciosament quan la van arrestar.", + "No puc esperar que li torni a la cadira.", "Hahahahaha...." ], "erol003": [ - "This is Erol. Just remember, the only reason I'm letting you", - "walk is so I can face you in the championship race!" + "Aquest és l'Erol. Només recorda, l'única raó per la qual t'ho deixo", + "caminar és perquè et pugui enfrontar a la cursa del campionat!" ], "hal001": [ - "Quiet! Here comes pretty boy." + "Tranquil! Aquí ve noi bonic." ], "hal002": [ - "'Bout time you showed up. Okay, let's do this." + "Ja era hora que apareguessis. D'acord, fem això." ], "hal003": [ - "Krew said you'll protect us all the way to the statue." + "En Krew va dir que ens protegiràs fins a l'estàtua." ], "hal004": [ - "We go down!" + "Baixem!" ], "hal006": [ - "This way!" + "Per aquí!" ], "hal007": [ - "AHH! It's a Metal Head! Shoot it, shoot it!" + "AHH! És un cap de metall! Dispara'l, dispara'l!" ], "hal008": [ - "Stay with us!" + "Queda't amb nosaltres!" ], "hal009": [ - "Man, Krew's gonna be pissed if you mess this up." + "Home, en Krew s'enfadarà si ho fas malbé." ], "hal010": [ - "Don't leave us to die!" + "No ens deixeu morir!" ], "hal011": [ - "You ditch us and Krew's gonna mess you up!" + "Ens abandones i en Krew et farà malbé!" ], "hal012": [ - "We need to stay together." + "Hem de seguir junts." ], "hal013": [ - "I thought this guy was supposed to be protecting us!" + "Vaig pensar que aquest tipus ens havia de protegir!" ], "hal014": [ - "That's it! We're calling the mission off,", - "we don't go until you're serious." + "Això és! Convoquem la missió,", + "no hi anem fins que et dius seriosament." ], "hal015": [ - "I'm not getting killed because of this loser,", - "this mission is over." + "No em mataran a causa d'aquest perdedor,", + "aquesta missió s'ha acabat." ], "hal019": [ - "Let's go back before we all get killed." + "Tornem enrere abans que tots ens maten." ], "hal020": [ - "Ugh, this place stinks." + "Uf, aquest lloc fa pudor." ], "hal021": [ - "I got a bad feeling about this place." + "Tinc una mala sensació d'aquest lloc." ], "hal022": [ - "Uh oh, I think I wet myself." + "Uh, crec que m'he mullat." ], "hal023": [ - "No! Please!" + "No! Si us plau!" ], "hal024": [ - "I wanna go home." + "Vull anar a casa." ], "hal025": [ - "Uhh, I'm hearing things." + "Uhh, estic escoltant coses." ], "hal026": [ - "Let's go back." + "Tornem enrere." ], "hal027": [ - "Move your butts, or I'll move 'em for ya!" + "Moveu els culs, o jo els mouré per vosaltres!" ], "hal028": [ - "This job beats being a garbage man." + "Aquesta feina supera ser un home d'escombraries." ], "hal029": [ - "Ain't the smell of sulphur grand?" + "No és genial l'olor de sofre?" ], "hal030": [ - "Cover your ears!" + "Tapa't les orelles!" ], "hal031": [ - "I love this job." + "M'encanta aquesta feina." ], "hal032": [ - "Great, now we're trapped in this slime pit!" + "Genial, ara estem atrapats en aquest pou de llim!" ], "hal033": [ - "Shoot, baby, shoot!" + "Dispara, nena, dispara!" ], "hal034": [ - "Ahh! The ceiling's crawling!" + "Ahh! El sostre s'arrossega!" ], "hal035": [ - "I can't get away!" + "No puc escapar!" ], "hal036": [ - "There's one coming right at me!" + "N'hi ha un que m'acosta!" ], "hal037": [ - "It sees me!" + "Em veu!" ], "hal038": [ - "Ahh! Stay away!" + "Ahh! Allunya't!" ], "hal039": [ - "It's hitting me!" + "M'està colpejant!" ], "hal040": [ - "Gahh, I'm gonna die here!" + "Gahh, em moriré aquí!" ], "hal041": [ - "I'm getting zapped!" + "M'estic fent zap!" ], "hal042": [ - "This'll be the end of me!" + "Aquest serà el meu final!" ], "hal043": [ - "Help me! I've got eight kids to feed!" + "Ajuda'm! Tinc vuit fills per alimentar!" ], "hal044": [ - "Nice work, those were some nasty Metal Heads." + "Bona feina, eren uns caps de metall desagradables." ], "hal045": [ - "There you are, why don't you make yourself useful?" + "Aquí tens, per què no et fas útil?" ], "hal046": [ - "Keep moving!" + "Segueix movent-te!" ], "hal047": [ - "On we go, we're not getting any younger." + "En marxa, no ens fem més joves." ], "hal048": [ - "Ahh! They're crawling down the walls!" + "Ahh! Estan arrossegant per les parets!" ], "hal049": [ - "Way to go, this is where I come in." + "Molt bé, aquí és on entro." ], "hal050": [ - "You mean cover your ass! Fire in the hole!" + "Vols dir tapar-te el cul! Foc al forat!" ], "hal051": [ - "You better keep your head down, sugar." + "Millor que tinguis el cap baix, sucre." ], "hal052": [ - "Your bad breath, let's move." + "El teu mal alè, anem a moure's." ], "hal053": [ - "That straightened your hair, huh?", - "Hehe, next time you'll listen to me. Okay, let's move." + "Això et va allisar els cabells, eh?", + "Hehe, la propera vegada m'escoltaràs. D'acord, anem a moure's." ], "hal054": [ - "Oof, that had to hurt.", - "I told you to keep back, but no one ever listens to Jinx." + "Uf, això havia de fer mal.", + "T'he dit que et quedis enrere, però ningú no escolta mai a Jinx." ], "hal055": [ - "More of those monsters!" + "Més d'aquests monstres!" ], "hal056": [ - "So what, we got a dream team here. Do your stuff, Jak!" + "I què, tenim un equip de somnis aquí. Fes les teves coses, Jak!" ], "hal057": [ - "Jak! Get your butt up here and do your thing." + "Jak! Puja el cul aquí i fes el teu." ], "hal058": [ - "Take 'em out, blue boy." + "Treu-los, noi blau." ], "hal059": [ - "You're pretty handy with that iron, blondie." + "Ets molt útil amb aquest ferro, rossa." ], "hal060": [ - "Shut up, Mog." + "Calla, Mog." ], "hal061": [ - "Here they come again!" + "Aquí tornen a venir!" ], "hal062": [ - "Get up here and earn your keep!" + "Aixeca't aquí i guanya't!" ], "hal063": [ - "Krew was right about you. You got the magic, man." + "Krew tenia raó amb tu. Tens la màgia, home." ], "hal064": [ - "Nice fighting, man, I'm beginning to like you." + "Bona lluita, home, em comença a agradar-te." ], "hal065": [ - "Okay... that doesn't look good. Jak, you're up!" + "D'acord... això no es veu bé. Jak, estàs despert!" ], "hal066": [ - "Wow! Beams of death!", - "I'm staying right here 'til you do something about that." + "Vaja! Raigs de mort!", + "Em quedo aquí fins que facis alguna cosa al respecte." ], "hal067": [ - "Uhhh, Jak. I think you're the man for this job." + "Uhhh, Jak. Crec que ets l'home per a aquesta feina." ], "hal068": [ - "Jump the beams, Jak." + "Salta les bigues, Jak." ], "hal069": [ - "Nice moves." + "Bons moviments." ], "hal070": [ - "Yeah... you wish, tubby." + "Sí... vols, tubby." ], "hal071": [ - "We're staying put 'til you take out those Metal Heads." + "Ens quedem fins que traieu aquests caps de metall." ], "hal072": [ - "Sweet as a ballerina, hehehehe..." + "Dolç com una ballarina, jejejeje..." ], "hal073": [ - "Knock 'em silly, Jak!" + "Fes-los tontos, Jak!" ], "hal074": [ - "This one's gonna be loud!" + "Aquest serà fort!" ], "hal075": [ - "This is too easy." + "Això és massa fàcil." ], "hal080": [ - "We ain't moving, 'til you kill 'em all!" + "No ens mourem fins que els mateu a tots!" ], "hal081": [ - "OK, let's get out of here before more come back." + "D'acord, sortim d'aquí abans que tornin més." ], "hal082": [ - "You're earning your dough today. Let's finish this!" + "Avui t'estàs guanyant la teva massa. Acabem això!" ], "hal083": [ - "I'm impressed, Jak. I'll put in a good word with the boss." + "Estic impressionat, Jak. Parlaré bé amb el cap." ], "hal084": [ - "Yeah, do it, Jinx." + "Sí, fes-ho, Jinx." ], "hal085": [ - "Man, Jinx, what'd you put in those boomsticks?" + "Home, Jinx, què has posat a aquells boomsticks?" ], "hal086": [ - "Look at him go." + "Mireu-lo anar." ], "hal087": [ - "I could jump like that." + "Podria saltar així." ], "hal088": [ - "Get away from me, you crazy monster!" + "Allunya't de mi, monstre boig!" ], "hal090": [ - "This is where I come in, cover your ears." + "Aquí és on entro, tapeu-vos les orelles." ], "hal091": [ - "Fire in the hole!" + "Foc al forat!" ], "hal092": [ - "And on we go." + "I seguim." ], "hal093": [ - "Please, allow me." + "Si us plau, permeteu-me." ], "hal094": [ - "One unclogged sewer, comin' up." + "Una claveguera no obstruïda, arriba." ], "hal095": [ - "This is my boomshtick!" + "Aquest és el meu boomshtick!" ], "hal096": [ - "Boom, baby!" + "Bum, nena!" ], "hal097": [ - "We're clear, let's move." + "Ho tenim clar, anem a moure's." ], "hal101": [ - "Ahh! That's gonna leave a mark." + "Ahh! Això deixarà empremta." ], "hal102": [ - "Die! A little help would be good!" + "Morir! Una mica d'ajuda estaria bé!" ], "hal103": [ - "Watch it, pretty boy, or I'll rearrange your face." + "Mira-ho, noi bonic, o et reorganitzaré la cara." ], "hal104": [ - "You got an itchy trigger finger." + "Tens un dit gatet que picor." ], "hal107": [ - "Piece of cake." + "Tros de pastís." ], "hal108": [ - "Get over here, Jak!" + "Vine per aquí, Jak!" ], "hal109": [ - "Stay close, pretty boy!" + "Estigues a prop, noi bonic!" ], "hal111": [ - "Keep with us, tough guy!" + "Segueix amb nosaltres, noi dur!" ], "hal112": [ - "You're in the way, Jak, move!" + "Estàs en el camí, Jak, mou!" ], "hal113": [ - "I wouldn't stand there if I were you!" + "Jo no estaria allà si fos tu!" ], "hal114": [ - "This is gonna be loud." + "Això serà fort." ], "hal115": [ "Oh!" @@ -3621,101 +3621,101 @@ "Oh!" ], "hal117": [ - "Hey!" + "Ei!" ], "hal118": [ - "It's a trap!" + "És una trampa!" ], "hal119": [ - "Yeah, why did we sign up for this?" + "Sí, per què ens vam apuntar a això?" ], "hal120": [ - "I got 30 keys of high explosives strapped to my back...", - "Great..." + "Tinc 30 claus d'explosius alts lligades a l'esquena...", + "Genial..." ], "hal121": [ - "Just shut your whiny traps and keep moving." + "Tanqueu els vostres paranys per plorar i seguiu movent-vos." ], "hal122": [ - "Uh, do we have to?" + "Eh, hem de fer-ho?" ], "hal123": [ - "Uhh, did you hear that?" + "Uhh, ho has sentit?" ], "hal124": [ - "We are so dead, man." + "Estem molt morts, home." ], "hal125": [ - "Shut up! I'll go ahead and check it out..." + "Calla! Seguiré endavant i ho comprovaré..." ], "hal126": [ - "Man, that thing's ugly." + "Home, aquesta cosa és lletja." ], "hal127": [ - "Get him, man, before he gets us." + "Agafeu-lo, home, abans que ens agafi." ], "hal128": [ - "They're coming up from behind, too!" + "També vénen per darrere!" ], "hal129": [ - "Jak's my hero." + "Com està el meu heroi?" ], "hal130": [ - "Sounds like I got gas." + "Sembla que tinc gasolina." ], "hal131": [ - "I hate Krew." + "Odio a Krew." ], "hal132": [ - "I'm sure not going back that way!" + "Segur que no tornaré per aquí!" ], "hal133": [ - "It's coming for me!" + "Ja ve per mi!" ], "hal134": [ - "I think it wants me!" + "Crec que em vol!" ], "hal135": [ - "Help me, Jak!" + "Ajuda'm, Jak!" ], "hal136": [ - "I'm gonna die!" + "Moriré!" ], "hal137": [ - "It got me!" + "Em va agafar!" ], "hal138": [ - "Jak! Save me!" + "Com! Salva'm!" ], "hal139": [ - "Ughh! It got me!" + "Ufh! Em va agafar!" ], "hal140": [ - "Oughh! That beam smarts." + "Uff! Aquest raig intel·ligent." ], "hal141": [ - "I've been shot!" + "M'han disparat!" ], "hal142": [ - "I'm hit!" + "Estic colpejat!" ], "hal143": [ - "Ughh!" + "Uf!" ], "hal144": [ - "Ughh! Help me!" + "Ufh! Ajuda'm!" ], "hal145": [ - "Hey man, watch it!" + "Ei home, mira-ho!" ], "hal146": [ - "Ohh, hit me again and I'll pound you!" + "Ohh, torna'm a colpejar i et copejaré!" ], "hal147": [ - "Nobody's my friend..." + "Ningú és el meu amic..." ], "hal148": [ - "Oof!" + "Uf!" ], "hal149": [ "Uh!" @@ -3724,34 +3724,34 @@ "Ahh!" ], "hal151": [ - "He's got me!" + "Ell em té!" ], "hal152": [ - "Gahh!! Not again!" + "Gah!! No un altre cop!" ], "hal153": [ - "I'm dying!" + "Estic morint!" ], "hal154": [ - "Any more like that, then I'm history." + "Més així, llavors sóc història." ], "hal155": [ - "I'm getting shot!" + "M'estan disparant!" ], "hal156": [ - "Sure! Why don't you kill me too?" + "Segur! Per què no em mates també?" ], "hal157": [ - "Check your targets, wimp boy!" + "Comproveu els vostres objectius, noi!" ], "hal158": [ - "Shoot the shine-heads, not me!" + "Dispara als caps brillants, no a mi!" ], "hal159": [ "Ahh!" ], "hal161": [ - "Ugh!" + "Uf!" ], "hal162": [ "Oh!" @@ -3763,1506 +3763,1506 @@ "Ah!" ], "hal165": [ - "Look out!" + "Estar atent!" ], "hal166": [ - "We're not doing this with a rookie, I'm calling this off!" + "No ho farem amb un principiant, ho cancel·lo!" ], "hal167": [ - "That's it, we're done! Come back when you're serious." + "Això és tot, hem acabat! Torna quan parles seriosament." ], "hal168": [ - "I'm cornered!" + "Estic arraconat!" ], "hal169": [ - "It's gonna shoot me!" + "Em dispararà!" ], "hal170": [ - "Jak! Do something!" + "Jak! Fer quelcom!" ], "hal171": [ - "Ahh! It got me!" + "Ahh! Em va agafar!" ], "hal172": [ - "No no no! Help!" + "No no No! Ajuda!" ], "hal173": [ - "They're getting too close, Jak!" + "S'estan apropant massa, Jak!" ], "hal174": [ - "It's gonna get me!" + "Em agafarà!" ], "hal175": [ - "I'm getting killed here!" + "M'estan matant aquí!" ], "hal176": [ - "Jak! I'm about to be metal meat!" + "Jak! Estic a punt de ser carn de metall!" ], "hal177": [ - "Aghh! That beam burns!" + "Aghh! Aquesta biga crema!" ], "hal178": [ - "It's shooting me!" + "M'està disparant!" ], "hal179": [ - "Watch out for the beam!" + "Compte amb la biga!" ], "hal180": [ - "I'm shot!" + "Estic disparat!" ], "hal181": [ - "I'm trapped!" + "Estic atrapat!" ], "hal182": [ - "Get back... I'm gonna detonate this one remotely." + "Torna... Vaig a detonar aquest a distància." ], "hal183": [ - "He-hah!" + "He-ha!" ], "hal184": [ - "Alright!" + "Bé!" ], "hal185": [ - "Let's go!" + "Som-hi!" ], "hal186": [ - "Move it!" + "Moure!" ], "hal187": [ - "That's a lot of Metal Heads." + "Això és un munt de Metal Heads." ], "hal188": [ - "Oof!" + "Uf!" ], "hal189": [ "Daghh!" ], "hal190": [ - "Oughh..." + "uf..." ], "hal191": [ - "Krew's dead for getting me into this!" + "En Krew s'ha mort per ficar-me en això!" ], "jak001": [ - "Alright!" + "Bé!" ], "jak002": [ - "Yeah!" + "Sí!" ], "jak003": [ - "Wooo!" + "Vaja!" ], "jak004": [ - "Here we go!" + "Aqui venim!" ], "jak005": [ - "Nice!" + "Bonic!" ], "jak006": [ - "Rock 'n roll!" + "Rock n roll!" ], "jak007": [ - "Right on!" + "Endavant!" ], "jak008": [ - "Cool!" + "Guai!" ], "jak009": [ - "Cool!" + "Guai!" ], "jak010": [ - "Oh, yeah!" + "Oh, sí!" ], "jak011": [ - "Comin' through!" + "Arribant!" ], "jak012": [ - "Look out!" + "Estar atent!" ], "jak013": [ - "Last lap!" + "Última volta!" ], "jak014": [ - "Watch out!" + "Ves amb compte!" ], "jak015": [ - "Whoa!" + "Va!" ], "jak016": [ - "Whoa!" + "Vaja!" ], "jak017": [ - "Hold on, Dax!" + "Espera, Dax!" ], "jak018": [ - "Hang on, Dax!" + "Espera, Dax!" ], "jak020": [ - "Whoa... boy that was close." + "Vaja... noi que estava a prop." ], "jak021": [ "No!" ], "jak022": [ - "Not this time." + "Aquesta vegada no." ], "jak023": [ "Huargh!" ], "jak024": [ - "Lean, baby, lean!" + "Magra, nena, magra!" ], "jak025": [ - "Catch him on the inside!" + "Atrapa'l per dins!" ], "jak026": [ - "This is MY show!" + "Aquest és el MEU espectacle!" ], "jak027": [ - "Haha, we got him!" + "Haha, el tenim!" ], "jak028": [ - "Watch out!" + "Ves amb compte!" ], "jak029": [ - "You're dead, Erol!" + "Estàs mort, Erol!" ], "jak030": [ - "See ya!" + "Ens veiem!" ], "jak031": [ "Haha!" ], "jak032": [ - "Wooo!" + "Vaja!" ], "jak033": [ - "Last lap!" + "Última volta!" ], "jak034": [ - "Later." + "Més tard." ], "jak035": [ - "We gotta catch up!" + "Ens hem de posar al dia!" ], "jak036": [ - "There he is!" + "Aquí està!" ], "jak037": [ - "Come on, baby, show me what you got!" + "Vinga, nena, mostra'm què tens!" ], "jak038": [ - "Here we go!" + "Aqui venim!" ], "jak039": [ "Urgh!" ], "jak040": [ - "I'll take this." + "Agafaré això." ], "jak041": [ - "I need to borrow this." + "Necessito demanar prestat això." ], "jak042": [ - "Move over, buddy!" + "Mou-te'n, amic!" ], "jak044": [ - "Outta the vehicle!" + "Fora del vehicle!" ], "jak045": [ - "Outta my way, buddy!" + "Fora del meu camí, company!" ], "jak046": [ - "Thanks for the lift." + "Gràcies per l'ascens." ], "jak047": [ - "Mind if I drive?" + "Li importa si condueixo?" ], "jak048": [ - "I like the color of this vehicle." + "M'agrada el color d'aquest vehicle." ], "jak049": [ - "Mine now." + "El meu ara." ], "jak050": [ - "'Scuse me, but I need this." + "'Perdoneu-me, però ho necessito." ], "jak051": [ - "Take a hike, buddy!" + "Fes una excursió, company!" ], "jak052": [ - "Try walking." + "Intenta caminar." ], "jak053": [ - "Sorry, but I'm in a hurry!" + "Ho sento, però tinc pressa!" ], "jak054": [ - "Gotta go!" + "He d'anar!" ], "jak055": [ - "Get another vehicle!" + "Aconsegueix un altre vehicle!" ], "jak056": [ - "Road hog!" + "Porc de carretera!" ], "jak057": [ - "Brake yourself!" + "Frena tu mateix!" ], "jak059": [ - "Haha, you want some?" + "Haha, en vols?" ], "jak060": [ - "Get some!" + "Aconseguir una mica!" ], "jak061": [ - "Yeah, feel it!" + "Sí, sent-ho!" ], "jak062": [ - "Die!" + "Morir!" ], "jak063": [ - "Badass comin' through!" + "Que s'acosta!" ], "jak064": [ - "Be afraid. Be very afraid." + "Tenir por. Tingueu molta por." ], "jak065": [ - "Oooh, that's gotta hurt." + "Oooh, això ha de fer mal." ], "jak066": [ - "This is payback." + "Això és el retorn." ], "jak067": [ - "DIE, Praxis!" + "La pràctica!" ], "jak068": [ - "You're finished, Kor!" + "Has acabat, Kor!" ], "jak069": [ - "This is my town, Kor!" + "Aquest és el meu poble, Kor!" ], "jak070": [ - "Surprise... you can't kill me in my dark form." + "Sorpresa... no em pots matar en la meva forma fosca." ], "jak071": [ - "Now you pay!" + "Ara pagues tu!" ], "jak072": [ - "Go back to the past, Kor! 'Cause you're history." + "Torna al passat, Kor! Perquè ets història." ], "jak073": [ - "I win." + "Jo guanyo." ], "jak074": [ - "You should have killed me when you had the chance, Praxis." + "M'hauries d'haver matat quan vas tenir l'oportunitat, Praxis." ], "jak075": [ - "Daxter, just shut up and watch my back." + "Daxter, calla i mira'm l'esquena." ], "jak076": [ - "Whatever, Daxter." + "Sigui com sigui, Daxter." ], "jak077": [ - "Will you stop yappin'?" + "Deixaràs de pillar?" ], "jak078": [ - "When you got smaller, so did your brain." + "Quan et feies més petit, el teu cervell també." ], "jak079": [ - "You're on MY shoulder. YOU'RE the sidekick." + "Estàs a la MEVA espatlla. TU ETS el company." ], "jak080": [ - "As long as you're on MY shoulder, keep your mouth shut." + "Mentre estigueu a la MEVA espatlla, manteniu la boca tancada." ], "jd001": [ - "Hey, kid! Wait! Come back!", - "We gotta protect him!" + "Ei, nen! Espera! Torna!", + "L'hem de protegir!" ], "jk001": [ - "Wait, KID!" + "Espera, nen!" ], "jk002": [ - "There he goes!" + "Allà va!" ], "jk003": [ - "Leave him alone!" + "Deixa'l en pau!" ], "jk004": [ - "KID!" + "NEN!" ], "jk005": [ - "Pick on someone your own size!" + "Tria algú de la teva mida!" ], "jk006": [ - "Kid, look out!" + "Nen, compte!" ], "jk007": [ - "How do YOU like it when somebody fights back?" + "Com t'agrada quan algú contraataca?" ], "jk008": [ - "Leave the kid alone!" + "Deixa el nen en pau!" ], "jk009": [ - "He's just a kid!" + "Només és un nen!" ], "jk010": [ - "Keep away from him!" + "Allunya't d'ell!" ], "jk011": [ - "Now you've pissed me off!" + "Ara m'has enfadat!" ], "jk012": [ - "Eat this!" + "Menja això!" ], "jk013": [ - "Back off!" + "Marxa enrere!" ], "jk014": [ - "We gotta get in the vehicle with the Kid!" + "Hem de pujar al vehicle amb el nen!" ], "jk015": [ - "Hold on!" + "Espera!" ], "jk016": [ - "Keep your head down, Kid!" + "Mantingui el cap baix, nen!" ], "jk017": [ - "Stick with me, Kid, and you'll be safe." + "Queda't amb mi, Kid, i estaràs a salvo." ], "jk018": [ - "Stay with me, Kid!" + "Queda't amb mi, nen!" ], "jk019": [ - "Get in the vehicle, Dax!" + "Puja al vehicle, Dax!" ], "kei001": [ - "You can get on and off the JET-Board at any time." + "Podeu pujar i baixar del JET-Board en qualsevol moment." ], "kei002": [ - "You can jump on your JET-Board!" + "Pots pujar al teu JET-Board!" ], "kei003": [ - "Jump up on that ledge." + "Salta a dalt d'aquesta cornisa." ], "kei004": [ - "Try jumping up on that crate." + "Intenta saltar sobre aquesta caixa." ], "kei005": [ - "Jump over that obstacle." + "Salta per sobre d'aquest obstacle." ], "kei006": [ - "You can get a higher jump by ducking before you jump!" + "Podeu fer un salt més alt ajudant-vos abans de saltar!" ], "kei007": [ - "Try doing a duck jump over that obstacle." + "Intenta fer un salt d'ànec per sobre d'aquest obstacle." ], "kei008": [ - "Jump and jump again a little after you've landed", - "for an even bigger launch!" + "Salta i torna a saltar una mica després d'haver aterrat", + "per a un llançament encara més gran!" ], "kei009": [ - "Try getting up on that higher ledge with a boost jump!" + "Intenta pujar a la cornisa més alta amb un salt d'impuls!" ], "kei010": [ - "You can spin in the air!" + "Pots girar a l'aire!" ], "kei011": [ - "Land a perfect 360 for a speed boost!" + "Aconsegueix un 360 perfecte per augmentar la velocitat!" ], "kei012": [ - "Nice spin!" + "Bon gir!" ], "kei013": [ - "You can land on a rail and grind across it." + "Podeu aterrar sobre un rail i triturar-lo." ], "kei014": [ - "Try grinding on that rail." + "Proveu de moldre aquest rail." ], "kei016": [ - "You can do flips while you jump!" + "Pots fer voltes mentre saltes!" ], "kei017": [ - "You can also do tricks for fun." + "També pots fer trucs per divertir-te." ], "kei018": [ - "Try to put a number of moves together to get points." + "Intenta combinar una sèrie de moviments junts per aconseguir punts." ], "kei019": [ - "Get enough points to win the challenge!" + "Aconsegueix prou punts per guanyar el repte!" ], "kei020": [ - "Not enough points! Work on your moves." + "No hi ha prou punts! Treballa els teus moviments." ], "kei021": [ - "Good job!" + "Bona feina!" ], "kei022": [ - "Close, but not quite there." + "A prop, però no del tot allà." ], "kei023": [ - "Try again." + "Torna-ho a provar." ], "kei024": [ - "A little more work and you just might win!" + "Una mica més de feina i potser guanyareu!" ], "kei025": [ - "No good! Not enough points." + "No és bo! No hi ha prou punts." ], "kei026": [ - "The Underground said you needed some help,", - "you won't be able to catch those Metal Heads in the", - "Forest on foot so I've left my JET-Board at the airlock", - "near the city exit. Since you're helping the Underground,", - "I'll even let you keep it!" + "El metro va dir que necessitaves ajuda,", + "no podreu atrapar aquests caps de metall a la", + "Bosc a peu, així que he deixat el meu JET-Board a l'esclusa", + "prop de la sortida de la ciutat. Com que estàs ajudant l'Underground,", + "Fins i tot et deixaré quedar-te!" ], "kei027": [ - "Jak, this is Keira. Don't forget - I still need two artifacts", - "to make the Rift Rider work! I need the Time Map and the", - "Heart of Mar Energy Gem, or we're not going anywhere!" + "Jak, aquesta és la Keira. No ho oblidis, encara necessito dos artefactes", + "perquè funcioni el Rift Rider! Necessito el mapa del temps i el", + "Heart of Mar Energy Gem, o no anem enlloc!" ], "kei028": [ - "I still need those two artifacts or this pile of junk", - "won't move one city block, much less through the Rift", - "and back to our own time!", - "You've got to find the Heart of Mar and the Time Map", - "or we're stuck!" + "Encara necessito aquests dos artefactes o aquest munt d'escombraries", + "no es mourà ni una illa de la ciutat, ni molt menys a través del Rift", + "i tornem al nostre temps!", + "Has de trobar el cor de Mar i el mapa del temps", + "o estem atrapats!" ], "kei029": [ - "This is Keira. Thanks for getting the artifacts, guys.", - "It's strange... the Time Map had a bunch of old coordinates", - "in it. Come see me at the Stadium." + "Aquesta és la Keira. Gràcies per aconseguir els artefactes, nois.", + "És estrany... el mapa del temps tenia un munt de coordenades antigues", + "en ell. Vine a veure'm a l'Estadi." ], "kg001": [ - "Call for backup!" + "Truqueu per a una còpia de seguretat!" ], "kg001a": [ - "Call for backup!" + "Truqueu per a una còpia de seguretat!" ], "kg002": [ - "Freeze!" + "Congelar!" ], "kg002a": [ - "Freeze!" + "Congelar!" ], "kg004": [ - "Halt!" + "Atura!" ], "kg004a": [ - "Halt!" + "Atura!" ], "kg005": [ - "Get more cruisers in here!" + "Aconsegueix més creuers aquí!" ], "kg005a": [ - "Get more cruisers in here!" + "Aconsegueix més creuers aquí!" ], "kg006": [ - "Surrender!" + "Rendir-se!" ], "kg006a": [ - "Surrender!" + "Rendir-se!" ], "kg007": [ - "This is a no-hover zone!" + "Aquesta és una zona sense parar!" ], "kg007a": [ - "This is a no-hover zone!" + "Aquesta és una zona sense parar!" ], "kg008": [ - "Pull over!" + "Atura't!" ], "kg008a": [ - "Pull over!" + "Atura't!" ], "kg009": [ - "Say good night!" + "Digues bona nit!" ], "kg010": [ - "Seal off the area." + "Segellar la zona." ], "kg011": [ - "Stop the vehicle!" + "Atureu el vehicle!" ], "kg011a": [ - "Stop the vehicle!" + "Atureu el vehicle!" ], "kg012": [ - "You're under arrest!" + "Estàs detingut!" ], "kg012a": [ - "You're under arrest!" + "Estàs detingut!" ], "kg013": [ - "You there!" + "Tu allà!" ], "kg014": [ - "You want some?!" + "Vols una mica?!" ], "kg015": [ - "This area is off-limits." + "Aquesta zona està fora de límits." ], "kg016": [ - "Stop!" + "Atura!" ], "kg018": [ - "Hey!" + "Ei!" ], "kg019": [ - "We do this the easy way, or the hard way." + "Ho fem de la manera fàcil, o de la manera difícil." ], "kg020": [ - "Slow down!" + "Afluixa!" ], "kg020a": [ - "Slow down!" + "Afluixa!" ], "kg021": [ - "Move over!" + "Aparta't!" ], "kg021a": [ - "Move over!" + "Aparta't!" ], "kg022": [ - "Call in more Hellcats!" + "Truca a més Hellcats!" ], "kg023": [ - "Requesting backup!" + "Sol·licitant una còpia de seguretat!" ], "kg023a": [ - "Requesting backup!" + "Sol·licitant una còpia de seguretat!" ], "kg024": [ - "Suspect on foot!" + "Sospitós a peu!" ], "kg024a": [ - "Suspect on foot!" + "Sospitós a peu!" ], "kg025": [ - "Suspect in vehicle!" + "Sospitós al vehicle!" ], "kg025a": [ - "Suspect in vehicle!" + "Sospitós al vehicle!" ], "kg026": [ - "Suspect fleeing into sector five!" + "Sospitós que fuig al sector cinc!" ], "kg026a": [ - "Suspect fleeing into sector five!" + "Sospitós que fuig al sector cinc!" ], "kg027": [ - "Suspect moving to sector six!" + "Sospitós de passar al sector sis!" ], "kg027a": [ - "Suspect moving into sector six!" + "Sospitós de passar al sector sis!" ], "kg028": [ - "High-speed chase in sector four!" + "Caça a gran velocitat al sector quatre!" ], "kg028a": [ - "High-speed chase in sector four!" + "Caça a gran velocitat al sector quatre!" ], "kg029": [ - "Checking sector three." + "Comprovant el sector tres." ], "kg029a": [ - "Checking sector three." + "Comprovant el sector tres." ], "kg030": [ - "Patrolling sector nine." + "Patrulla al sector nou." ], "kg030a": [ - "Patrolling sector nine." + "Patrulla al sector nou." ], "kg031": [ - "Be advised, I'm on foot." + "Avís, sóc a peu." ], "kg031a": [ - "Be advised, I'm on foot." + "Avís, sóc a peu." ], "kg032": [ - "Moving to next sector." + "Passant al següent sector." ], "kg032a": [ - "Moving to next sector." + "Passant al següent sector." ], "kg033": [ - "I've got suspicious activity in this sector." + "Tinc activitat sospitosa en aquest sector." ], "kg033a": [ - "I've got suspicious activity in this sector." + "Tinc activitat sospitosa en aquest sector." ], "kg034": [ - "Sweeping for suspects." + "Escombrant als sospitosos." ], "kg034a": [ - "Sweeping for suspects." + "Escombrant als sospitosos." ], "kg035": [ - "Nothing so far." + "Res fins ara." ], "kg035a": [ - "Nothing so far." + "Res fins ara." ], "kg036": [ - "Roger that, still looking." + "Roger que, encara mirant." ], "kg036a": [ - "Roger that, still looking." + "Roger que, encara mirant." ], "kg037": [ - "Roger, we'll shoot on sight." + "Roger, dispararem a la vista." ], "kg037a": [ - "Roger, we'll shoot on sight." + "Roger, dispararem a la vista." ], "kg038": [ - "Please advise, suspect's description." + "Si us plau, aviseu, la descripció del sospitós." ], "kg039": [ - "Get out of the vehicle!" + "Surt del vehicle!" ], "kg039a": [ - "Get out of the vehicle!" + "Surt del vehicle!" ], "kg040": [ - "Call in more Hellcats!" + "Truca a més Hellcats!" ], "kg040a": [ - "Call in more Hellcats!" + "Truca a més Hellcats!" ], "kg041": [ - "The area is secure." + "La zona és segura." ], "kg041a": [ - "The area is secure." + "La zona és segura." ], "kg042": [ - "Nothing to report." + "Res a informar." ], "kg042a": [ - "Nothing to report." + "Res a informar." ], "kg043": [ - "Proceeding as planned." + "Procediment tal com estava previst." ], "kg043a": [ - "Proceeding as planned." + "Procediment tal com estava previst." ], "kg044": [ - "I lost him." + "el vaig perdre." ], "kg044a": [ - "I lost him." + "el vaig perdre." ], "kg045": [ - "Subject is not in sight." + "El tema no està a la vista." ], "kg045a": [ - "Subject not in sight." + "Tema no a la vista." ], "kg046": [ - "He's gone." + "Ha marxat." ], "kg046a": [ - "He disappeared!" + "Va desaparèixer!" ], "kg047": [ - "Where'd he go?" + "On ha anat?" ], "kg047a": [ - "Where'd he go?" + "On ha anat?" ], "kg048": [ - "Lost visual contact." + "Perd el contacte visual." ], "kg048a": [ - "Lost visual contact." + "Perd el contacte visual." ], "kg049": [ - "He just ducked out." + "S'acaba de sortir." ], "kg049a": [ - "He just ducked out." + "S'acaba de sortir." ], "kg050": [ - "He's out of sight." + "Està fora de vista." ], "kg050a": [ - "He's out of sight." + "Està fora de vista." ], "kg051": [ - "We're losing him!" + "L'estem perdent!" ], "kg051a": [ - "We're losing him!" + "L'estem perdent!" ], "kg052": [ - "Continuing our sweep." + "Continuant amb el nostre escombrat." ], "kg052a": [ - "Continuing our sweep." + "Continuant amb el nostre escombrat." ], "kg053": [ - "Searching sector four." + "Buscant el sector quatre." ], "kg053a": [ - "Searching sector four." + "Buscant el sector quatre." ], "kg054": [ - "Searching sector seven." + "Buscant el sector set." ], "kg054a": [ - "Searching sector seven." + "Buscant el sector set." ], "kg055": [ - "Searching sector three." + "Buscant el sector tres." ], "kg055a": [ - "Searching sector three." + "Buscant el sector tres." ], "kg056": [ - "Keep looking." + "Continua mirant." ], "kg056a": [ - "Keep looking." + "Continua mirant." ], "kg057": [ - "He's got to be here somewhere." + "Ha d'estar aquí en algun lloc." ], "kg057a": [ - "He's got to be here somewhere." + "Ha d'estar aquí en algun lloc." ], "kg058": [ - "I can't find him." + "No el puc trobar." ], "kg058a": [ - "I can't find him." + "No el puc trobar." ], "kg059": [ - "No sign of the subject." + "Cap senyal del tema." ], "kg059a": [ - "No sign of the subject." + "Cap senyal del tema." ], "kg060": [ - "I don't see him anywhere." + "No el veig enlloc." ], "kg060a": [ - "I don't see him anywhere." + "No el veig enlloc." ], "kg061": [ - "Still searching." + "Encara buscant." ], "kg061a": [ - "Still searching." + "Encara buscant." ], "kg062": [ - "Searching for the target." + "Buscant l'objectiu." ], "kg062a": [ - "Searching for the target." + "Buscant l'objectiu." ], "kg063": [ - "He must be here." + "Deu ser aquí." ], "kg063a": [ - "He must be here." + "Ell deu ser aquí." ], "kg064": [ - "He was just here." + "Només estava aquí." ], "kg064a": [ - "He was just here." + "Només estava aquí." ], "kg065": [ - "We lost him." + "El vam perdre." ], "kg065a": [ - "We lost him." + "El vam perdre." ], "kg066": [ - "He got away." + "Se'n va escapar." ], "kg066a": [ - "He got away." + "Se'n va escapar." ], "kg067": [ - "He escaped." + "Es va escapar." ], "kg067a": [ - "He escaped." + "Es va escapar." ], "kg068": [ - "He shook us." + "Ens va sacsejar." ], "kg068a": [ - "He shook us." + "Ens va sacsejar." ], "kg069": [ - "Looks like he's gone." + "Sembla que se n'ha anat." ], "kg069a": [ - "Looks like he's gone." + "Sembla que se n'ha anat." ], "kg070": [ - "I found him!" + "El vaig trobar!" ], "kg070a": [ - "I found him!" + "El vaig trobar!" ], "kg071": [ - "There he is." + "Aquí està." ], "kg071a": [ - "There he is!" + "Aquí està!" ], "kg072": [ - "Be advised, target in sight." + "Avís, apunta a la vista." ], "kg072a": [ - "Be advised, target in sight!" + "Tingueu en compte, objectiu a la vista!" ], "kg073": [ - "We have a positive ID." + "Tenim un DNI positiu." ], "kg073a": [ - "We have a positive ID." + "Tenim un DNI positiu." ], "kg074": [ - "I see him!" + "el veig!" ], "kg074a": [ - "I see him!" + "el veig!" ], "kg075": [ - "He's over there, get him!" + "Ell és allà, agafa'l!" ], "kg075a": [ - "He's over here!" + "Ell és aquí!" ], "kg076": [ - "Get him!" + "Aconsegueix-lo!" ], "kg076a": [ - "Get him!" + "Aconsegueix-lo!" ], "kg077": [ - "I've reacquired the target!" + "He tornat a adquirir l'objectiu!" ], "kg077a": [ - "I've reacquired the target!" + "He tornat a adquirir l'objectiu!" ], "kg078": [ - "I'm closing in." + "M'estic tancant." ], "kg078a": [ - "I'm closing in!" + "M'estic tancant!" ], "kg079": [ - "I'm on him!" + "Estic sobre ell!" ], "kg079a": [ - "I'm on him!" + "Estic sobre ell!" ], "kg080": [ - "I'm in pursuit!" + "Estic perseguint!" ], "kg080a": [ - "I'm in pursuit!" + "Estic perseguint!" ], "kg081": [ - "Pursuing target." + "Perseguint l'objectiu." ], "kg081a": [ - "Pursuing target!" + "Perseguint l'objectiu!" ], "kg082": [ - "Don't let him get away!" + "No el deixis escapar!" ], "kg082a": [ - "Don't let him get away!" + "No el deixis escapar!" ], "kg083": [ - "Get him!" + "Aconsegueix-lo!" ], "kg083a": [ - "Get him!" + "Aconsegueix-lo!" ], "kg084": [ - "After him!" + "Després d'ell!" ], "kg084a": [ - "After him!" + "Després d'ell!" ], "kg085": [ - "I have a visual!" + "Tinc un visual!" ], "kg085a": [ - "I have a visual!" + "Tinc un visual!" ], "kg086": [ - "We see him!" + "El veiem!" ], "kg086a": [ - "We see him!" + "El veiem!" ], "kg087": [ - "Stop right there!" + "Atureu-vos allà mateix!" ], "kg087a": [ - "Stop right there!" + "Atureu-vos allà mateix!" ], "kg088": [ - "I have a bead on him!" + "Tinc una perla a ell!" ], "kg088a": [ - "I have a bead on him!" + "Tinc una perla a ell!" ], "kg089": [ - "I'm hit!" + "Estic colpejat!" ], "kg089a": [ - "I'm hit!" + "Estic colpejat!" ], "kg090": [ - "Man down!" + "Home caigut!" ], "kg090a": [ - "Man down!" + "Home caigut!" ], "kg091": [ - "I need backup!" + "Necessito una còpia de seguretat!" ], "kg091a": [ - "I need backup!" + "Necessito una còpia de seguretat!" ], "kg092": [ - "Stop him!" + "Atureu-lo!" ], "kg092a": [ - "Stop him!" + "Atureu-lo!" ], "kg093": [ - "Look out!" + "Estar atent!" ], "kg093a": [ - "Look out!" + "Estar atent!" ], "kg094": [ - "There he is, shoot him!" + "Aquí està, dispara'l!" ], "kg094a": [ - "There he is, shoot him!" + "Aquí està, dispara'l!" ], "kg095": [ - "Take him out!" + "Treu-lo fora!" ], "kg095a": [ - "Take him out!" + "Treu-lo fora!" ], "kg096": [ - "Prisoner escape in progress, sound the alarm!" + "Escape del presoner en curs, sona l'alarma!" ], "kg096a": [ - "Prison escape in progress, sound the alarm!" + "Escape de la presó en curs, sona l'alarma!" ], "kg097": [ - "Prisoner on level two!" + "Presoner al segon nivell!" ], "kg097a": [ - "Prisoner on level two!" + "Presoner al segon nivell!" ], "kg098": [ - "Prisoner moving to sub-level B!" + "Preso passant al subnivell B!" ], "kg098a": [ - "Prisoner moving to sub-level B!" + "Preso passant al subnivell B!" ], "kg099": [ - "We think he's in the pipes!" + "Creiem que està a les canonades!" ], "kg099a": [ - "We think he's in the pipes!" + "Creiem que està a les canonades!" ], "kg100": [ - "We're beginning our sweep." + "Comencem la nostra escombrada." ], "kg100a": [ - "We're beginning our sweep." + "Comencem la nostra escombrada." ], "kg101": [ - "We have prisoner in sight, move in!" + "Tenim un presoner a la vista, entra!" ], "kg101a": [ - "We have prisoner in sight, move in!" + "Tenim un presoner a la vista, entra!" ], "kg102": [ - "We have movement on level one!" + "Tenim moviment al primer nivell!" ], "kg102a": [ - "We have movement on level one!" + "Tenim moviment al primer nivell!" ], "kg103": [ - "Close in!" + "A prop!" ], "kg103a": [ - "Close in!" + "A prop!" ], "kg104": [ - "We're moving in!" + "Ens hi mudem!" ], "kg104a": [ - "We're moving in!" + "Ens hi mudem!" ], "kg105": [ - "Secure the cell block!" + "Assegureu el bloc cel·lular!" ], "kg105a": [ - "Secure the cell block!" + "Assegureu el bloc cel·lular!" ], "kg106": [ - "Take no prisoners!" + "No feu presoners!" ], "kg106a": [ - "Take no prisoners!" + "No feu presoners!" ], "kg107": [ - "Prisoner sighted, we got him!" + "Presoner vist, el tenim!" ], "kg107a": [ - "Prisoner sighted, we got him!" + "Presoner vist, el tenim!" ], "kg108": [ - "Prisoner is still on the loose!" + "El presoner segueix en llibertat!" ], "kg108a": [ - "Prisoner is still on the loose!" + "El presoner segueix en llibertat!" ], "kg109": [ - "We think he's going for an exit!" + "Creiem que va a sortir!" ], "kg109a": [ - "We think he's going for an exit!" + "Creiem que va a sortir!" ], "kg110": [ - "Searching rooms." + "Buscant habitacions." ], "kg110a": [ - "Searching rooms." + "Buscant habitacions." ], "kg111": [ - "Prisoner loose in complex." + "Preso solt en complex." ], "kg111a": [ - "Prisoner loose in complex." + "Preso solt en complex." ], "kg112": [ - "You are authorized to shoot to kill." + "Estàs autoritzat a disparar per matar." ], "kg112a": [ - "You are authorized to shoot to kill." + "Estàs autoritzat a disparar per matar." ], "kg113": [ - "Go, go, go! Sweep the area!" + "Anem anem anem! Escombra la zona!" ], "kg113a": [ - "Go go go! Sweep the area!" + "Anem anem anem! Escombra la zona!" ], "kg114": [ - "Searching the sub-basements." + "Recerca als subsoterranis." ], "kg114a": [ - "Searching the sub-basements." + "Recerca als subsoterranis." ], "kg115": [ - "Cell block is clear." + "El bloc cel·lular és clar." ], "kg115a": [ - "Cell block is clear." + "El bloc cel·lular és clar." ], "kg116": [ - "Tank room is clear." + "L'habitació del tanc és clara." ], "kg116a": [ - "Tank room is clear." + "L'habitació del tanc és clara." ], "kg117": [ - "Activate riot tanks." + "Activa els tancs antiavalots." ], "kg117a": [ - "Activate riot tanks." + "Activa els tancs antiavalots." ], "kg118": [ - "Riot tank has prisoner in sight." + "El tanc antidisturbis té un presoner a la vista." ], "kg118a": [ - "Riot tank has prisoner in sight." + "El tanc antidisturbis té un presoner a la vista." ], "kg119": [ - "Intruder alert." + "Alerta d'intrus." ], "kg119a": [ - "Intruder alert!" + "Alerta d'intrus!" ], "kg120": [ - "Activating security defenses." + "Activació de defenses de seguretat." ], "kg120a": [ - "Activating security defenses." + "Activació de defenses de seguretat." ], "kg121": [ - "Please advise, subject's description." + "Si us plau, aviseu, descripció del tema." ], "kg121a": [ - "Please advise, subject's description." + "Si us plau, aviseu, descripció del tema." ], "kg122": [ - "I've got civvies in sight." + "Tinc civismes a la vista." ], "kg122a": [ - "I've got civvies in sight." + "Tinc civismes a la vista." ], "kg123": [ - "I've got suspects in sight." + "Tinc sospitosos a la vista." ], "kg123a": [ - "I've got suspects in sight." + "Tinc sospitosos a la vista." ], "kg124": [ - "I hate the smell of this part of the city." + "Odio l'olor d'aquesta part de la ciutat." ], "kg124a": [ - "I hate the smell in this part of the city." + "Odio l'olor d'aquesta part de la ciutat." ], "kg125": [ - "Right, we'll check it out." + "Bé, ho comprovarem." ], "kg125a": [ - "Right, we'll check it out." + "Bé, ho comprovarem." ], "kg126": [ - "Confirmed, Underground suspect neutralized." + "Confirmat, sospitós subterrani neutralitzat." ], "kg126a": [ - "Confirmed, Underground suspect neutralized." + "Confirmat, sospitós subterrani neutralitzat." ], "kg127": [ - "They're all guilty!" + "Tots són culpables!" ], "kg127a": [ - "They're all guilty!" + "Tots són culpables!" ], "kg128": [ - "This is Unit Alpha, we're en route." + "Aquesta és la Unitat Alpha, estem de camí." ], "kg128a": [ - "This is Unit Alpha, we're en route." + "Aquesta és la Unitat Alpha, estem de camí." ], "kg129": [ - "Roger, continuing our sweep." + "Roger, seguint el nostre escombrat." ], "kg129a": [ - "Roger, continuing our sweep." + "Roger, seguint el nostre escombrat." ], "kg130": [ - "Unit Zulu, moving in." + "Unitat Zulu, entrant a viure." ], "kg130a": [ - "Unit Zulu, moving in." + "Unitat Zulu, entrant a viure." ], "kg131": [ - "Roger that, we're making our sweep." + "Roger això, estem fent el nostre escombrat." ], "kg131a": [ - "Roger that, we're making our sweep." + "Roger això, estem fent el nostre escombrat." ], "kg132": [ - "I say shoot 'em all and sort 'em out later." + "Dic que dispareu-los a tots i arregleu-los més tard." ], "kg132a": [ - "I say shoot 'em all and sort 'em out later." + "Dic que dispareu-los a tots i arregleu-los més tard." ], "kg133": [ - "You have the right to die!" + "Tens dret a morir!" ], "kg134": [ - "Lock and load!" + "Tanca i carrega!" ], "kg135": [ - "Open fire!" + "Obrir foc!" ], "kg136": [ - "Alert, alert!" + "Alerta, alerta!" ], "kg137": [ - "Don't move!" + "No et moguis!" ], "kg138": [ - "Do it!" + "Fes-ho!" ], "kg139": [ - "Go, go, go!" + "Anem anem anem!" ], "kg140": [ - "Flank 'em!" + "Flanqueja'ls!" ], "kg141": [ - "Move in!" + "Avançar!" ], "kg142": [ - "Take 'em out!" + "Treu-los!" ], "kg143": [ - "Bust some heads!" + "Rebentar uns caps!" ], "kg144": [ - "Arrest him!" + "Arresta'l!" ], "kg145": [ - "Shoot 'em, shoot 'em!" + "Dispara'ls, dispara'ls!" ], "kg146": [ - "Die, outlaw!" + "Mor, proscrit!" ], "kg147": [ - "You're history!" + "Ets història!" ], "kg148": [ - "Eat this!" + "Menja això!" ], "kg149": [ - "Get some!" + "Aconseguir una mica!" ], "kg150": [ - "Fire, fire!" + "Foc, foc!" ], "kg151": [ - "Here's one for the Guard!" + "Aquí en teniu un per a la Guàrdia!" ], "kg152": [ - "Give it up, outlaw!" + "Deixa-ho, fora de la llei!" ], "kg153": [ - "Here's some pain!" + "Aquí hi ha una mica de dolor!" ], "kg154": [ - "Payback time!" + "Temps de recuperació!" ], "kg155": [ - "Shoulda given up!" + "Hauria de renunciar!" ], "kg156": [ - "I need cover fire!" + "Necessito foc de cobertura!" ], "kg157": [ - "Call in reinforcements!" + "Truqueu reforços!" ], "kg158": [ - "I'll shoot!" + "dispararé!" ], "kg159": [ - "Die!" + "Morir!" ], "kg160": [ - "You're busted!" + "Estàs rebentat!" ], "kg161": [ - "Riot in progress!" + "Motí en curs!" ], "kg162": [ - "Send in the troops!" + "Envieu les tropes!" ], "kg163": [ - "Give it up!" + "Renuncia-ho!" ], "kg164": [ - "Make 'em pay!" + "Fes-los pagar!" ], "kg165": [ - "Tag 'em and bag 'em!" + "Etiqueta'ls i emporta'ls!" ], "kg165a": [ - "Tag 'em and bag 'em!" + "Etiqueta'ls i emporta'ls!" ], "kg165b": [ - "Tag 'em and bag 'em!" + "Etiqueta'ls i emporta'ls!" ], "kg166": [ - "Another notch for my gun." + "Una altra osca per a la meva pistola." ], "kg166a": [ - "Another notch for my gun." + "Una altra osca per a la meva pistola." ], "kg166b": [ - "Another notch for my gun." + "Una altra osca per a la meva pistola." ], "kg167": [ - "This one was easy!" + "Aquest era fàcil!" ], "kg167a": [ - "This one was easy!" + "Aquest era fàcil!" ], "kg167b": [ - "This one was easy!" + "Aquest era fàcil!" ], "kg168": [ - "Suspect neutralized." + "Sospitós neutralitzat." ], "kg168a": [ - "Suspect neutralized." + "Sospitós neutralitzat." ], "kg168b": [ - "Suspect neutralized." + "Sospitós neutralitzat." ], "kg169": [ - "Didn't even work up a sweat." + "Ni tan sols va suar." ], "kg169a": [ - "Didn't even work up a sweat." + "Ni tan sols va suar." ], "kg169b": [ - "Didn't even work up a sweat." + "Ni tan sols va suar." ], "kg170": [ - "Take him in for... questioning, hehehe..." + "Porteu-lo per... interrogar-lo, jejeje..." ], "kg170a": [ - "Take him in for... questioning, hehehe..." + "Porteu-lo per... interrogar-lo, jejeje..." ], "kg170b": [ - "Take him in for... questioning, hehehe..." + "Porteu-lo per... interrogar-lo, jejeje..." ], "kg171": [ - "Another one bites the dust." + "Un altre mossega la pols." ], "kg171a": [ - "Another one bites the dust." + "Un altre mossega la pols." ], "kg171b": [ - "Another one bites the dust." + "Un altre mossega la pols." ], "kg172": [ - "That must have hurt." + "Això deu haver fet mal." ], "kg172a": [ - "That must have hurt." + "Això deu haver fet mal." ], "kg172b": [ - "That must have hurt." + "Això deu haver fet mal." ], "kg173": [ - "There's plenty more where that came from." + "N'hi ha molt més d'on va sortir." ], "kg173a": [ - "There's plenty more where that came from." + "N'hi ha molt més d'on va sortir." ], "kg173b": [ - "There's plenty more where that came from." + "N'hi ha molt més d'on va sortir." ], "kg174": [ - "Citizen scum." + "Escombra ciutadana." ], "kg174a": [ - "Citizen scum." + "Escombra ciutadana." ], "kg174b": [ - "Citizen scum." + "Escombra ciutadana." ], "kg175": [ - "Don't fight the law, son." + "No lluitis contra la llei, fill." ], "kg175a": [ - "Don't fight the law, son." + "No lluitis contra la llei, fill." ], "kg175b": [ - "Don't fight the law, son." + "No lluitis contra la llei, fill." ], "kg176": [ - "You are under arrest!" + "Estàs detingut!" ], "kg177": [ - "Get moving!" + "Mou-te!" ], "kg178a": [ - "He vanished!" + "Va desaparèixer!" ], "kg179": [ - "You guys hear about the latest Metal Head attacks?" + "Heu sentit parlar dels últims atacs de Metal Head?" ], "kg179b": [ - "Oh you guys hear about the latest Metal Head attacks?" + "Oh, heu sentit parlar dels darrers atacs de Metal Head?" ], "kg180": [ - "We lost three squads last week." + "La setmana passada vam perdre tres equips." ], "kg180a": [ - "We lost three squads last week." + "La setmana passada vam perdre tres equips." ], "kg180b": [ - "We lost three squads last week." + "La setmana passada vam perdre tres equips." ], "kg181": [ - "I hear the Underground are getting stronger." + "Sento que l'Underground es fa més fort." ], "kg181a": [ - "I hear the Underground are getting stronger." + "Sento que l'Underground es fa més fort." ], "kg181b": [ - "I hear the Underground are getting stronger." + "Sento que l'Underground es fa més fort." ], "kg182": [ - "Just rumors, private, keep your mouth shut." + "Només rumors, privat, tanqueu la boca." ], "kg182a": [ - "Just rumors, private, keep your mouth shut." + "Només rumors, privat, tanqueu la boca." ], "kg182b": [ - "Just rumors, private, keep your mouth shut." + "Només rumors, privat, tanqueu la boca." ], "kg183": [ - "It's us or them, there's no in-between." + "Som nosaltres o ells, no hi ha entremig." ], "kg183a": [ - "It's us or them, there's no in-between." + "Som nosaltres o ells, no hi ha entremig." ], "kg183b": [ - "It's us or them, there's no in-between." + "Som nosaltres o ells, no hi ha entremig." ], "kg184": [ - "Don't worry, the Baron will save us." + "No et preocupis, el baró ens salvarà." ], "kg184a": [ - "Don't worry, the Baron will save us." + "No et preocupis, el baró ens salvarà." ], "kg184b": [ - "Don't worry, the Baron will save us." + "No et preocupis, el baró ens salvarà." ], "kg185": [ - "I got no faith in nobody." + "No tinc fe en ningú." ], "kg185a": [ - "I ain't got no faith in nobody." + "No tinc fe en ningú." ], "kg185b": [ - "I got no faith in nobody." + "No tinc fe en ningú." ], "kg186": [ - "Seen that new JX-7 racer? Sweet ride." + "Heu vist aquell nou corredor JX-7? Dolç passeig." ], "kg186a": [ - "You seen that new JX-7 racer? Sweet ride." + "Has vist aquell nou corredor JX-7? Dolç passeig." ], "kg186b": [ - "Seen that new JX-7 racer? It's a sweet ride." + "Heu vist aquell nou corredor JX-7? És un viatge dolç." ], "kg187": [ - "You seen anything?" + "Has vist alguna cosa?" ], "kg187a": [ - "You seen anything?" + "Has vist alguna cosa?" ], "kg187b": [ - "You seen anything?" + "Has vist alguna cosa?" ], "kg188": [ "No." @@ -5271,99 +5271,99 @@ "No." ], "kg188b": [ - "Nah." + "No." ], "kg189": [ - "Keep your eyes peeled." + "Mantingueu els ulls ben oberts." ], "kg189a": [ - "Keep your eyes peeled." + "Mantingueu els ulls ben oberts." ], "kg189b": [ - "Keep your eyes peeled." + "Mantingueu els ulls ben oberts." ], "kg190": [ - "I just got a radio alert, stay frosty." + "Acabo de rebre una alerta de ràdio, mantingui gelada." ], "kg190a": [ - "I just got a radio alert, stay frosty." + "Acabo de rebre una alerta de ràdio, mantingui gelada." ], "kg190b": [ - "I just got a radio alert, stay frosty." + "Acabo de rebre una alerta de ràdio, mantingui gelada." ], "kg191": [ - "Never trust a civilian." + "No confieu mai en un civil." ], "kg191a": [ - "Never trust a civilian." + "No confieu mai en un civil." ], "kg191b": [ - "Never trust a civilian." + "No confieu mai en un civil." ], "kg192": [ - "Never trust anyone." + "No confieu mai en ningú." ], "kg192a": [ - "Never trust anyone." + "No confieu mai en ningú." ], "kg192b": [ - "Never trust anyone." + "No confieu mai en ningú." ], "kg193": [ - "Long live the KG!" + "Visca el KG!" ], "kg193a": [ - "Long live the KG!" + "Visca el KG!" ], "kg193b": [ - "Long live the KG!" + "Visca el KG!" ], "kg194": [ - "We ain't had a food riot since we brought in them tanks." + "No hem tingut cap disturbi per menjar des que els vam portar tancs." ], "kg194a": [ - "We ain't had a food riot since we brought in them tanks." + "No hem tingut cap disturbi per menjar des que els vam portar tancs." ], "kg194b": [ - "We ain't had a food riot since we brought in them tanks." + "No hem tingut cap disturbi per menjar des que els vam portar tancs." ], "kg195": [ - "I'm bored, I want to crunch heads." + "Estic avorrit, vull cruixir el cap." ], "kg195a": [ - "I'm bored, I want to crunch heads." + "Estic avorrit, vull cruixir el cap." ], "kg195b": [ - "I'm bored, I want to crunch heads." + "Estic avorrit, vull cruixir el cap." ], "kg196": [ - "I want to kick some ass." + "Vull donar una puntada de cul." ], "kg196a": [ - "Ugh... I want to kick some butt." + "Uf... vull donar una puntada de peu." ], "kg196b": [ - "I want to kick some butt." + "Vull donar una puntada de peu." ], "kg197": [ - "Did you hear the Underground got our ammo at HQ?" + "Heu sentit que el metro té la nostra munició a la seu?" ], "kg197a": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Heu sentit a fer el metro?", + "la nostra munició a la seu?" ], "kg197b": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Heu sentit a fer el metro?", + "la nostra munició a la seu?" ], "kg198": [ - "Payback's a bitch!" + "La recuperació és una puta!" ], "kg198a": [ - "Payback's a bitch!" + "La recuperació és una puta!" ], "kg198b": [ - "Payback's a bitch!" + "La recuperació és una puta!" ], "kg199": [ "Animals!" @@ -5375,79 +5375,79 @@ "Animals!" ], "kg200": [ - "I hear the Shadow's been dead for years." + "He sentit que l'Ombra fa anys que està morta." ], "kg200a": [ - "I hear the Shadow's been dead for years." + "He sentit que l'Ombra fa anys que està morta." ], "kg200b": [ - "I hear the Shadow's been dead for years." + "He sentit que l'Ombra fa anys que està morta." ], "kg201": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Potser, però la resta d'escòria subterrània", + "encara corren." ], "kg201a": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Potser, però la resta d'escòria subterrània", + "encara corren." ], "kg201b": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Potser, però la resta d'escòria subterrània", + "encara corren." ], "kg202": [ - "Can I shoot someone now?" + "Puc disparar a algú ara?" ], "kg202a": [ - "Can I shoot someone now?" + "Puc disparar a algú ara?" ], "kg202b": [ - "Can I shoot someone now?" + "Puc disparar a algú ara?" ], "kg203": [ - "I like the new armor." + "M'agrada la nova armadura." ], "kg203a": [ - "I like the new armor." + "M'agrada la nova armadura." ], "kg203b": [ - "I like the new armor." + "M'agrada la nova armadura." ], "kg204": [ - "Yeah, me too. More comfort in the crotch." + "Si, jo també. Més comoditat a l'entrecuix." ], "kg204a": [ - "Yeah, me too. More comfort in the crotch." + "Si, jo també. Més comoditat a l'entrecuix." ], "kg204b": [ - "Yeah, me too. More comfort in the crotch." + "Si, jo també. Més comoditat a l'entrecuix." ], "kg205": [ - "If something interesting doesn't happen soon,", - "I'm going to start shooting you." + "Si alguna cosa interessant no passa aviat,", + "Vaig a començar a disparar-te." ], "kg205a": [ - "Next time, can I kill a civvy?" + "La propera vegada, puc matar un civil?" ], "kg205b": [ - "Next time, can I kill a civvy?" + "La propera vegada, puc matar un civil?" ], "kg206a": [ - "If something interesting doesn't happen soon,", - "I'm gonna shoot you." + "Si alguna cosa interessant no passa aviat,", + "Et dispararé." ], "kg206b": [ - "If something interesting doesn't happen soon,", - "I'm gonna start shooting you." + "Si alguna cosa interessant no passa aviat,", + "Començaré a disparar-te." ], "kg207": [ - "Did you collect your bribes this week?" + "Has cobrat els teus suborns aquesta setmana?" ], "kg207a": [ - "You collect your bribes this week?" + "Recolliu els vostres suborns aquesta setmana?" ], "kg207b": [ - "You collect your bribes this week?" + "Recolliu els vostres suborns aquesta setmana?" ], "kg208": [ "Shhh..." @@ -5465,250 +5465,250 @@ "Shh." ], "kg210": [ - "I hear someone's been using the old wall airlocks.", - "Pfft, crazy bastard." + "He sentit que algú ha estat utilitzant les antigues rescloses de la paret.", + "Pfft, bastard boig." ], "kg210a": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "He sentit que algú ha estat utilitzant les antigues rescloses de la paret.", + "bastard boig." ], "kg210b": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "He sentit que algú ha estat utilitzant les antigues rescloses de la paret.", + "bastard boig." ], "kg211": [ - "I've been on duty for two days straight." + "He estat de servei durant dos dies seguits." ], "kg211a": [ - "I've been on duty for two days straight." + "He estat de servei durant dos dies seguits." ], "kg211b": [ - "I've been on duty for two days straight." + "He estat de servei durant dos dies seguits." ], "kg212": [ - "Pfft, don't complain. I've got sewer patrol next week." + "Pfft, no et queixes. Tinc patrulla de clavegueram la setmana que ve." ], "kg212a": [ - "Don't complain, I got sewer patrol next week." + "No et queixes, tinc patrulla de clavegueram la setmana que ve." ], "kg212b": [ - "Don't complain. I got sewer patrol next week." + "No et queixes. Tinc patrulla de clavegueram la setmana que ve." ], "kg213": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ah, pobre canalla. A quin comandant vas enfadar?" ], "kg213a": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ah, pobre canalla. A quin comandant vas enfadar?" ], "kg213b": [ - "Hehe, poor bastard. Which commander did you piss off?" + "Hehe, pobre canalla. A quin comandant vas enfadar?" ], "kg214": [ - "I say death to the Underground." + "Dic mort a l'Underground." ], "kg214a": [ - "I say death to the Underground." + "Dic mort a l'Underground." ], "kg214b": [ - "I say death to the Underground." + "Dic mort a l'Underground." ], "kg215": [ - "I wanna so kill that Shadow guy." + "Vull matar aquest tipus de l'Ombra." ], "kg215a": [ - "I want to kill that Shadow guy!" + "Vull matar aquest tipus de l'Ombra!" ], "kg215b": [ - "I want to kill that Shadow guy!" + "Vull matar aquest tipus de l'Ombra!" ], "kg216": [ - "And don't forget that traitor Torn." + "I no oblidis aquell traïdor Torn." ], "kg216a": [ - "And don't forget that traitor Torn." + "I no oblidis aquell traïdor Torn." ], "kg216b": [ - "Don't forget that traitor Torn!" + "No oblidis aquell traïdor Torn!" ], "kg217": [ - "Death's too good for him." + "La mort és massa bona per a ell." ], "kg217a": [ - "Death's too good for him." + "La mort és massa bona per a ell." ], "kg217b": [ - "Death's too good for him." + "La mort és massa bona per a ell." ], "kg218": [ - "Why are we looking for some kid?" + "Per què busquem algun nen?" ], "kg218a": [ - "Why are we looking for some kid?" + "Per què busquem algun nen?" ], "kg218b": [ - "Why are we looking for some kid?" + "Per què busquem algun nen?" ], "kg219": [ - "I don't know, Baron's orders." + "No ho sé, ordres del baró." ], "kg219a": [ - "I dunno, Baron's orders." + "No sé, les ordres del baró." ], "kg219b": [ - "I dunno, Baron's orders." + "No sé, les ordres del baró." ], "kg220": [ - "Hey, have they found Mar's Tomb yet?" + "Ei, ja han trobat la tomba de Mar?" ], "kg220a": [ - "Have they found Mar's Tomb yet?" + "Ja han trobat la tomba de Mar?" ], "kg220b": [ - "Have they found Mar's Tomb yet?" + "Ja han trobat la tomba de Mar?" ], "kg221": [ - "They wouldn't tell us if they did." + "No ens dirien si ho fessin." ], "kg221a": [ - "Nah, they wouldn't tell us if they did." + "No, no ens dirien si ho fessin." ], "kg221b": [ - "Nah, they wouldn't tell us if they did." + "No, no ens dirien si ho fessin." ], "kg222": [ - "I've got a big bet on the next city races." + "Tinc una gran aposta per les properes curses de la ciutat." ], "kg222a": [ - "I got a big bet on the next city races." + "Vaig fer una gran aposta per les properes curses de la ciutat." ], "kg222b": [ - "Got a big bet on the next city races." + "Teniu una gran aposta a les properes curses de la ciutat." ], "kg223": [ - "Erol's my boy. He always wins." + "L'Erol és el meu nen. Ell sempre guanya." ], "kg223a": [ - "Erol's my boy. He always wins." + "L'Erol és el meu nen. Ell sempre guanya." ], "kg223b": [ - "Erol's my boy. He always wins." + "L'Erol és el meu nen. Ell sempre guanya." ], "kg224": [ - "You going to the city races this time?" + "Anireu a les curses de la ciutat aquesta vegada?" ], "kg224a": [ - "You going to the city races this time?" + "Anireu a les curses de la ciutat aquesta vegada?" ], "kg224b": [ - "You going to the city races this time?" + "Anireu a les curses de la ciutat aquesta vegada?" ], "kg225": [ - "I'll be there." + "Jo hi seré." ], "kg225a": [ - "I'll be there." + "Jo hi seré." ], "kg225b": [ - "I'll be there." + "Jo hi seré." ], "kg226": [ - "There've been some serious guard casualties this week." + "Aquesta setmana hi ha hagut algunes baixes de guàrdia greus." ], "kg226a": [ - "There've been some serious guard casualties this week." + "Aquesta setmana hi ha hagut algunes baixes de guàrdia greus." ], "kg226b": [ - "There've been some serious guard casualties this week." + "Aquesta setmana hi ha hagut algunes baixes de guàrdia greus." ], "kg227": [ - "Yeah, some rebel fighter is stirring up the pot good." + "Sí, algun lluitador rebel està remenant bé l'olla." ], "kg227a": [ - "Yeah, some rebel fighter is stirring the pot good." + "Sí, algun lluitador rebel està remenant bé l'olla." ], "kg227b": [ - "Some rebel fighter is stirring the pot good." + "Algun lluitador rebel està remenant bé l'olla." ], "kg228": [ - "I'd love to be the one to take him out." + "M'encantaria ser qui el tragués." ], "kg228a": [ - "I'd love to be the one to take him out." + "M'encantaria ser qui el tragués." ], "kg228b": [ - "Oh I'd love to be the one to take him out." + "Oh, m'encantaria ser qui el tragués." ], "kg229": [ - "Let's get drinks later." + "Anem a beure més tard." ], "kg229a": [ - "Let's get drinks later." + "Anem a beure més tard." ], "kg229b": [ - "Let's get drinks later." + "Anem a beure més tard." ], "kg230": [ - "I got a bad feeling about this war." + "Tinc una mala sensació d'aquesta guerra." ], "kg230a": [ - "I got a bad feeling about this war." + "Tinc una mala sensació d'aquesta guerra." ], "kg230b": [ - "I got a bad feeling about this war." + "Tinc una mala sensació d'aquesta guerra." ], "kg231": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "He sentit que hi ha més atacs de Metal Head", + "del que admet HQ." ], "kg231a": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "He sentit que hi ha més atacs de Metal Head", + "del que admet HQ." ], "kg231b": [ - "Yeah, I hear there are more Metal Head attacks", - "than HQ's admitting." + "Sí, he sentit que hi ha més atacs de Metal Head", + "del que admet HQ." ], "kg232": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "Els informes que he vist no són bons.", + "Crec que la ciutat té problemes." ], "kg232a": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "Els informes que he vist no són bons.", + "Crec que la ciutat té problemes." ], "kg232b": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "Els informes que he vist no són bons.", + "Crec que la ciutat té problemes." ], "kg233": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Estic preocupat per aquest noi", + "lluitant per l'Underground." ], "kg233a": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Estic preocupat per aquest noi", + "lluitant per l'Underground." ], "kg233b": [ - "I'm worried about this new guy fighting for the Underground.", - "fighting for the Underground." + "Estic preocupat perquè aquest nou noi lluita per l'Underground.", + "lluitant per l'Underground." ], "kg234": [ - "Yeah, they say he can change into some kind of... monster." + "Sí, diuen que es pot convertir en una mena de... monstre." ], "kg234a": [ - "Yeah, they say he can change into some kind of monster." + "Sí, diuen que es pot convertir en una mena de monstre." ], "kg234b": [ - "They say he can change into some kind of monster." + "Diuen que es pot convertir en una mena de monstre." ], "kg235": [ - "Don't worry, his head'll be on the tower wall soon enough." + "No et preocupis, el seu cap estarà a la paret de la torre aviat." ], "kg235a": [ - "Don't worry, his head'll be on the tower wall soon enough." + "No et preocupis, el seu cap estarà a la paret de la torre aviat." ], "kg235b": [ - "Don't worry, his head'll be on the tower wall soon enough." + "No et preocupis, el seu cap estarà a la paret de la torre aviat." ], "kg236": [ "Hehehe." @@ -5738,477 +5738,477 @@ "Hehehe..." ], "kg241a": [ - "Suspect in known Underground vehicle!" + "Sospitós en un vehicle subterrani conegut!" ], "kg242a": [ - "He's got a cargo, move in!" + "Té una càrrega, entra!" ], "kg243a": [ - "Stop that vehicle!" + "Atureu aquest vehicle!" ], "kg244a": [ - "You're under arrest, pull over!" + "Estàs detingut, apropa't!" ], "kg245a": [ - "Surrender the vehicle!" + "Entrega el vehicle!" ], "kg246a": [ - "We are in pursuit!" + "Estem perseguint!" ], "kg247a": [ - "He's got a package!" + "Té un paquet!" ], "kg248a": [ - "Suspect has suspicious cargo!" + "El sospitós té una càrrega sospitosa!" ], "kg249a": [ - "We think it's an illegal shipment." + "Creiem que és un enviament il·legal." ], "kg250a": [ - "All units close in on vehicle!" + "Totes les unitats tanquen al vehicle!" ], "kg251a": [ - "Suspect moving at high speed!" + "Sospita que es mou a gran velocitat!" ], "kg252a": [ - "We can't keep up!" + "No podem seguir el ritme!" ], "kg253a": [ - "He's in the port!" + "És al port!" ], "kg254a": [ - "He got away!" + "Se'n va escapar!" ], "kg255a": [ - "Suspect has taken out pursuit!" + "El sospitós ha sortit a la persecució!" ], "kg256a": [ - "Vehicle destroyed, we got him!" + "Vehicle destruït, el tenim!" ], "kg257a": [ - "Nice work boys, he's down." + "Bona feina nois, està abatut." ], "kg258a": [ - "Excellent pursuit." + "Excel·lent persecució." ], "kg259a": [ - "Guard transport under attack, requesting support!" + "Guàrdia de transport sota atac, demanant suport!" ], "kg260a": [ - "We're takin' damage!" + "Estem fent mal!" ], "kg261a": [ - "He's after us!" + "Ell ens persegueix!" ], "kg262a": [ - "He's trying to crash the transport!" + "Està intentant estavellar el transport!" ], "kg263a": [ - "We've had a transport ambush, units respond!" + "Hem tingut una emboscada de transport, les unitats responen!" ], "kg264a": [ - "He's picking up a prisoner!" + "Està agafant un presoner!" ], "kg265a": [ - "We lost a Lurker prisoner." + "Hem perdut un presoner Lurker." ], "kg266a": [ - "He's got a Lurker prisoner with him!" + "Té un presoner Lurker amb ell!" ], "kg267a": [ - "Take 'em all out!" + "Treu-los tots!" ], "kg268a": [ - "We think he's helping the Lurkers escape!" + "Creiem que està ajudant els Lurkers a escapar!" ], "kg269a": [ - "He's taken out two of our transports already!" + "Ja ha tret dos dels nostres transports!" ], "kg270a": [ - "He's alone again." + "Està sol de nou." ], "kg271a": [ - "Where's he heading?!" + "Cap a on va?!" ], "kg272a": [ - "Terminate with extreme prejudice!" + "Acaba amb un prejudici extrem!" ], "kg273a": [ - "He's attacking another transport!" + "Està atacant un altre transport!" ], "kg274a": [ - "We're being chased, send in an escort!" + "Ens persegueixen, envia una escorta!" ], "kg275a": [ - "We lost this passenger." + "Hem perdut aquest passatger." ], "kg276a": [ - "We're losing him!" + "L'estem perdent!" ], "kg277a": [ - "We got 'em!" + "Els tenim!" ], "kg278a": [ - "We got 'em, teach ya to screw with the KG!" + "Els tenim, ensenya-te a cargolar amb el KG!" ], "kg279a": [ - "Pull over, Lurker lover!" + "Apunta't, amant dels lurkers!" ], "kg280a": [ - "There's a kid, check him out." + "Hi ha un nen, mireu-lo." ], "kg281a": [ - "The Baron wants every kid in this city arrested." + "El baró vol arrestar tots els nens d'aquesta ciutat." ], "kg282a": [ - "Surrender the child!" + "Entrega el nen!" ], "kg283a": [ - "Give up the kid!" + "Renuncia al nen!" ], "kg284a": [ - "If they won't surrender, kill them all!" + "Si no es rendeixen, mateu-los a tots!" ], "kg285a": [ - "Don't kill the kid." + "No matis el nen." ], "kg286a": [ - "The Baron wants the kid alive!" + "El baró vol el nen viu!" ], "kg287a": [ - "Find the boy!" + "Troba el noi!" ], "kg288a": [ - "That could be the kid the Baron wants." + "Aquest podria ser el nen que vol el baró." ], "kg289a": [ - "After them!" + "Després d'ells!" ], "kg290a": [ - "Don't move, boy!" + "No et moguis, noi!" ], "kg291a": [ - "Take out that mutt!" + "Treu-te aquest moll!" ], "kg292a": [ - "We should kill 'em all!" + "Els hauríem de matar a tots!" ], "kg293a": [ - "They've taken a vehicle!" + "Han agafat un vehicle!" ], "kg294a": [ - "If you get a clear shot, take it!" + "Si tens un tir clar, fes-ho!" ], "kg295a": [ - "Suspect is fleeing in vehicle!" + "El sospitós fuig en vehicle!" ], "kg296a": [ - "Suspect's vehicle moving through section seven." + "El vehicle del sospitós es mou per la secció set." ], "kg297a": [ - "We think the kid's with that Underground freak." + "Creiem que el nen està amb aquest monstre de l'Underground." ], "kg298a": [ - "Take 'em out, but keep the kid alive!" + "Treu-los, però mantén el nen viu!" ], "kg299a": [ - "They're on foot again!" + "Ja tornen a caminar!" ], "kg300a": [ - "What is that thing?!" + "Què és aquesta cosa?!" ], "kg301a": [ - "Shoot that thing, shoot it!" + "Dispara aquesta cosa, dispara!" ], "kg302a": [ - "What's he doing?!" + "Què està fent?!" ], "kg303a": [ - "It's that monster!" + "És aquell monstre!" ], "kg304a": [ - "The stories are true!" + "Les històries són certes!" ], "kg305a": [ - "It's the dark monster!" + "És el monstre fosc!" ], "kg306a": [ - "It's him!" + "És ell!" ], "kg307a": [ - "It's the dark eco freak!" + "És el monstre ecològic fosc!" ], "kg308a": [ - "Kill it, kill it!" + "Mata'l, mata'l!" ], "kg309a": [ - "Suspect has transformed into", - "a creature of some kind." + "El sospitós s'ha transformat en", + "una criatura d'alguna mena." ], "kg310a": [ - "Sure is ugly." + "Segur que és lleig." ], "kg311a": [ - "That's one ugly creature." + "Aquesta és una criatura lletja." ], "kg312a": [ - "Look out!" + "Estar atent!" ], "kg313a": [ - "Fall back!" + "Retrocedir!" ], "kg314a": [ - "He's wasting everybody!" + "Està malgastant a tothom!" ], "kg315a": [ - "We can't kill it!" + "No el podem matar!" ], "kg316a": [ - "Stand your ground men!" + "Estigueu a terra homes!" ], "kg317a": [ - "The Krimzon Guard do not run!" + "La Guàrdia Krimzon no corre!" ], "kg318a": [ - "Watch out for his claws!" + "Compte amb les seves urpes!" ], "kg319a": [ - "Keep clear of his energy bolts!" + "Mantingueu-vos lluny dels seus parabolts d'energia!" ], "kg320a": [ - "This is a raid, do not resist!" + "Això és un raid, no us resistiu!" ], "kg321a": [ - "Move in!" + "Avançar!" ], "kg322a": [ - "By order of Baron Praxis,", - "everyone here is to be terminated!" + "Per ordre del baró Praxis,", + "tots aquí han de ser acomiadats!" ], "kg323a": [ - "Surrender and you will not suffer much." + "Rendir-se i no patirà gaire." ], "kg324a": [ - "It's that Underground monster freak!" + "És aquell monstre subterrani!" ], "kg325a": [ - "Get him!" + "Aconsegueix-lo!" ], "kg326a": [ - "All units converge on Water Slums!" + "Totes les unitats convergeixen a Water Slums!" ], "kg327a": [ - "We've got an Underground fighter!" + "Tenim un lluitador subterrani!" ], "kg328a": [ - "Burn 'em down!" + "Crema'ls!" ], "kg329a": [ - "Stay together!" + "Estar junts!" ], "kg330a": [ - "We've got 'em cornered!" + "Els tenim acorralats!" ], "kg331a": [ - "Suspect cornered in section two." + "Sospitós acorralat a la secció dos." ], "kg332a": [ - "There is no escape!" + "No hi ha escapatòria!" ], "kg333a": [ - "Resistance is futile!" + "La resistència és inútil!" ], "kg334a": [ - "Give up the artifact, eco freak!" + "Renuncia a l'artefacte, ecologista!" ], "kg335a": [ - "We've cut 'em off!" + "Els hem tallat!" ], "kg336a": [ - "He's trapped!" + "Està atrapat!" ], "kg337a": [ - "We got 'em!" + "Els tenim!" ], "kg338a": [ - "We're taking heavy fire!" + "Estem agafant foc fort!" ], "kg339a": [ - "We're taking heavy casualties, send in backup!" + "Estem patint nombroses baixes, envia una còpia de seguretat!" ], "kg340a": [ - "This guy knows how to fight!" + "Aquest noi sap lluitar!" ], "kg341a": [ - "Hold your ground!" + "Aguanta't!" ], "kg342a": [ - "Do not retreat!" + "No et retiris!" ], "kg343a": [ - "We lost Beta squad!" + "Hem perdut l'equip Beta!" ], "kg344a": [ - "We need more men!" + "Necessitem més homes!" ], "kg345a": [ - "He's on the south path!" + "Està al camí del sud!" ], "kg346a": [ - "He's in the water!" + "Està a l'aigua!" ], "kg347a": [ - "He's near the east hut, all units converge!" + "És a prop de la barraca est, totes les unitats convergeixen!" ], "kg348a": [ - "We're gonna lose him!" + "El perdrem!" ], "kg349a": [ - "Intruder alert, sound the alarm!" + "Alerta d'intrus, sona l'alarma!" ], "kg350a": [ - "The Fortress is under attack!" + "La fortalesa està sota atac!" ], "kg351a": [ - "This is our house, boy!" + "Aquesta és casa nostra, noi!" ], "kg352a": [ - "You've got brass coming into our Fortress!" + "Tens llautó entrant a la nostra fortalesa!" ], "kg353a": [ - "You won't get out of here alive!" + "No en sortiràs viu!" ], "kg354a": [ - "Thanks for making this easy." + "Gràcies per fer-ho fàcil." ], "kg355a": [ - "We're taking heavy casualties." + "Estem patint grans baixes." ], "kg356a": [ - "He's getting in deep, stop him!" + "S'està endinsant, atura-lo!" ], "kg357a": [ - "Take this guy out, that's an order!" + "Treu aquest noi, això és una ordre!" ], "kg358a": [ - "Send in the shock squad!" + "Envia l'equip de xoc!" ], "kg359a": [ - "Bring in the heavy firepower!" + "Porta la gran potència de foc!" ], "kg360a": [ - "Send in the shield guards!" + "Envieu els guàrdies de l'escut!" ], "kg361a": [ - "I'm on him!" + "Estic sobre ell!" ], "kg362a": [ - "Let me at 'em!" + "Deixa'm fer-los!" ], "kg363a": [ - "I got 'em!" + "Els tinc!" ], "kg364a": [ - "Finish him off!" + "Acaba'l!" ], "kg365a": [ - "He's moving toward the ammo room!" + "S'està movent cap a la sala de municions!" ], "kg366a": [ - "Intercept the intruder before he gets in too far!" + "Intercepta l'intrus abans que entri massa lluny!" ], "kg367a": [ - "He's picking up a suspect." + "Està agafant un sospitós." ], "kg368a": [ - "He's got an Underground agent with him!" + "Té un agent subterrani amb ell!" ], "kg369a": [ - "Take 'em both out!" + "Treu-los tots dos!" ], "kg370a": [ - "He's picked up another suspect." + "Ha recollit un altre sospitós." ], "kg371a": [ - "We lost the guy he dropped off!" + "Hem perdut el noi que va deixar!" ], "kg372a": [ - "He's got a passenger." + "Té un passatger." ], "kg373a": [ - "Driver is working with the Underground." + "El conductor està treballant amb el metro." ], "kg374a": [ - "Suspect vehicle taking damage, but still moving." + "Sospita que el vehicle ha patit danys, però encara es mou." ], "kg375a": [ - "We need to cut 'em off!" + "Hem de tallar-los!" ], "kg376a": [ - "He's got another agent!" + "Té un altre agent!" ], "kg377a": [ - "Suspect driving erratically!" + "Sospita de conduir de manera irregular!" ], "kg378a": [ - "Suspect still evading!" + "Sospitós encara evadir!" ], "kg379a": [ - "We got 'em this time!" + "Els tenim aquesta vegada!" ], "kg380a": [ - "Suspect vehicle destroyed!" + "Vehicle sospitós destruït!" ], "kg381a": [ - "He's going for another vehicle!" + "Va a buscar un altre vehicle!" ], "kg382a": [ - "We took 'em out!" + "Els vam treure!" ], "kg383a": [ - "He's toast!" + "Està torrat!" ], "kg384a": [ - "Another win for the KG, good shooting, men." + "Una altra victòria per al KG, bon tir, homes." ], "kg385a": [ - "Suspect has evaded capture." + "El sospitós ha evadit la captura." ], "kg386a": [ - "Ough!" + "Ai!" ], "kg387a": [ - "Huh!" + "eh!" ], "kg388a": [ "Arghh!" ], "kg389a": [ - "Ughh!" + "Uf!" ], "kg390a": [ "Hugh!" ], "kg391a": [ - "Aughh!" + "Ai!" ], "kg392a": [ "Haugh!" ], "kg393a": [ - "Oof!" + "Uf!" ], "kg394a": [ "Hah!" ], "kg395a": [ - "Ugh!" + "Uf!" ], "kg396a": [ "Hah!" ], "kg397a": [ - "Ugh!" + "Uf!" ], "kg398a": [ "Huff!" @@ -6220,13 +6220,13 @@ "Hah!" ], "kg401a": [ - "Huh!" + "eh!" ], "kg402a": [ - "Huuh!" + "eh!" ], "kg403a": [ - "Haah!" + "Haha!" ], "kg404a": [ "Ahh!" @@ -6238,13 +6238,13 @@ "Arrgh!" ], "kg407a": [ - "Uargh!" + "Vaja!" ], "kg408a": [ - "Ugh...!" + "Uf...!" ], "kg409a": [ - "Ugh!" + "Uf!" ], "kg410a": [ "Nargh!" @@ -6253,7 +6253,7 @@ "Hah!" ], "kg412a": [ - "Ugh...!" + "Uf...!" ], "kg413a": [ "Gah...!" @@ -6265,7 +6265,7 @@ "Argh!" ], "kg416a": [ - "Ugh...!" + "Uf...!" ], "kg417a": [ "Uh..." @@ -6274,227 +6274,227 @@ "Ah...!" ], "kg419a": [ - "Uugh!" + "Uf!" ], "kg420a": [ "Ah...!" ], "kg421a": [ - "Huah...!" + "Hua...!" ], "kg422a": [ "Agh!" ], "kg423a": [ - "Hungh...!" + "Hum...!" ], "kg424a": [ "Argh!" ], "kg425a": [ - "Ugh!" + "Uf!" ], "kg426a": [ - "Ugh!" + "Uf!" ], "kg427a": [ - "Ugh!" + "Uf!" ], "kg428a": [ - "Oof!" + "Uf!" ], "kgv001": [ - "Stop!" + "Atura!" ], "kgv002": [ - "Open fire!" + "Obrir foc!" ], "kgv003": [ - "Move in!" + "Avançar!" ], "kgv004": [ - "Take 'em out!" + "Treu-los!" ], "kgv005": [ - "Take him down!" + "Baixa'l!" ], "kgv006": [ - "Shoot 'em, shoot 'em!" + "Dispara'ls, dispara'ls!" ], "kgv007": [ - "Die, outlaw!" + "Mor, proscrit!" ], "kgv008": [ - "Eat this!" + "Menja això!" ], "kgv009": [ - "Fire, fire!" + "Foc, foc!" ], "kgv010": [ - "Give it up, outlaw!" + "Deixa-ho, fora de la llei!" ], "kgv011": [ - "Seal off the area!" + "Segella la zona!" ], "kgv012": [ - "Call in reinforcements!" + "Truqueu reforços!" ], "kgv013": [ - "Riot in progress!" + "Motí en curs!" ], "kgv014": [ - "Call for backup!" + "Truqueu per a una còpia de seguretat!" ], "kgv015": [ - "Stop the vehicle!" + "Atureu el vehicle!" ], "kgv016": [ - "You are under arrest!" + "Estàs detingut!" ], "kgv017": [ - "Pull over!" + "Atura't!" ], "kgv018": [ - "Slow down!" + "Afluixa!" ], "kgv019": [ - "Move over!" + "Aparta't!" ], "kgv020": [ - "Get out of the vehicle!" + "Surt del vehicle!" ], "kgv021": [ - "Call in more Hellcats!" + "Truca a més Hellcats!" ], "kgv022": [ - "Requesting backup!" + "Sol·licitant una còpia de seguretat!" ], "kgv023": [ - "High speed chase in sector four!" + "Caça a gran velocitat al sector quatre!" ], "kgv024": [ - "Suspect in vehicle!" + "Sospitós al vehicle!" ], "kgv025": [ - "Suspect fleeing into sector five." + "Sospitós que fuig al sector cinc." ], "kor001": [ - "I am so proud of you Jak, and you too, Daxter!", - "Together you have done real damage to the Baron.", - "We may win this war yet!" + "Estic molt orgullós de tu Jak, i de tu també, Daxter!", + "Junts heu fet un dany real al Baró.", + "Encara podem guanyar aquesta guerra!" ], "kor002": [ - "Excellent work, you are proving to be quite an asset.", - "Without eco, the Baron will soon topple,", - "and the city's future will be in our hands." + "Excel·lent feina, estàs demostrant que ets un gran actiu.", + "Sense eco, el baró aviat caurà,", + "i el futur de la ciutat estarà a les nostres mans." ], "kor004": [ - "Another blow to the Baron, my good friends!", - "Very soon, our fortunes will change!" + "Un altre cop per al Baró, amics meus!", + "Molt aviat, la nostra sort canviarà!" ], "krew001": [ - "Jak, this is Krew. I just talked to my racing client", - "and she told me you were pretty good with that JET-Board", - "of hers. My sources say a shipment of Krimzon Guard", - "listening equipment just arrived in the Port.", - "None of us, including the Underground, want those devices", - "up and running. It's not good for business.", - "Ride the JET-Board out into the Port", - "and destroy every Krimzon Guard crate you find.", - "There's sure to be a defense perimeter,", - "so watch out, 'ey?" + "Jak, aquest és en Krew. Acabo de parlar amb el meu client de carreres", + "i em va dir que estaves molt bé amb aquell JET-Board", + "de la seva. Les meves fonts diuen que un enviament de Krimzon Guard", + "equips d'escolta acabats d'arribar al Port.", + "Cap de nosaltres, inclòs l'Underground, vol aquests dispositius", + "en funcionament. No és bo per als negocis.", + "Puja el JET-Board cap al port", + "i destrueix totes les caixes de la Guàrdia Krimzon que trobis.", + "Segur que hi haurà un perímetre de defensa,", + "doncs compte, eh?" ], "krew002": [ - "Excellent work, Jak. Even I am impressed.", - "I should keep unscrupulous Krimzon Guards", - "out of our business.", - "What's the world coming to when you can't buy off", - "a few guards with bribes?" + "Excel·lent feina, Jak. Fins i tot jo estic impressionat.", + "Hauria de mantenir els guàrdies Krimzon sense escrúpols", + "fora del nostre negoci.", + "A què ve el món quan no pots comprar", + "uns quants guàrdies amb suborns?" ], "krew003": [ - "Ooooh... the bedtime stories were true!", - "The fabled Heart of Mar was hidden inside that ugly statue", - "of the old boy.", - "Nothing fractured, nothing gained! That's my motto. Hahaha...", - "For your loyalty, you'll find an excellent gun upgrade", - "stashed in a crate in the Port." + "Ooooh... els contes d'anar a dormir eren certs!", + "El llegendari Cor de Mar s'amagava dins d'aquella estàtua lletja", + "del vell.", + "Res fracturat, res guanyat! Aquest és el meu lema. Hahaha...", + "Per la vostra lleialtat, trobareu una excel·lent actualització d'armes", + "amagat en una caixa del Port." ], "krew004": [ - "That's one turret down. Keep looking!" + "Això és una torreta cap avall. Continua mirant!" ], "krew005": [ - "Two turrets. Good work so far!" + "Dues torretes. Bona feina fins ara!" ], "krew006": [ - "Three turrets gone. Nice! Keep it up!" + "Tres torres han desaparegut. Bonic! Segueix així!" ], "krew007": [ - "Four turrets trashed. Haha... Lovely, boys! Go get 'em!" + "Quatre torres arruïnades. Haha... Preciós, nois! Aneu a buscar-los!" ], "krew008": [ - "Five turrets down the drain! Keep going." + "Cinc torretes pel desguàs! Segueix endavant." ], "krew009": [ - "Six turrets out of commission.", - "Hah, I like the way you work." + "Sis torretes fora de servei.", + "Ha, m'agrada com treballes." ], "krew010": [ - "Brass work, boys! You destroyed all the turrets, eh?", - "Now, come back to the Hip Hog." + "Treball de llautó, nois! Has destruït totes les torres, eh?", + "Ara, torna al Hip Hog." ], "kwbf001": [ - "You know I can't play fair!", - "I have a secret weapon: my duplicity field!", - "Say hello to my little friends...", - "Ah, multiple me! Hahahaha... How delightful." + "Ja saps que no puc jugar net!", + "Tinc una arma secreta: el meu camp de duplicitat!", + "Saludeu els meus petits amics...", + "Ah, múltiples jo! Hahahaha... Què encantador." ], "kwbf002": [ - "Let me introduce you to my... \"crew.\"" + "Deixa'm presentar-te a la meva... \"tripulació\"." ], "kwbf003": [ - "Let's dance!" + "Ballem!" ], "kwbf004": [ - "You will die!" + "Moriràs!" ], "kwbf005": [ - "Here we come!" + "Aquí venim!" ], "kwbf006": [ - "My, don't my twins look stunning?" + "Vaja, els meus bessons no tenen un aspecte espectacular?" ], "kwbf007": [ - "You can't stop us all!" + "No ens pots aturar a tots!" ], "kwbf008": [ - "Surprise! More of me than you can handle." + "Sorpresa! Més de mi del que pots suportar." ], "kwbf009": [ - "I've a few good men to help me." + "Tinc uns quants homes bons per ajudar-me." ], "kwbf010": [ - "Get him!" + "Aconsegueix-lo!" ], "kwbf011": [ - "UARGH! Try stopping me now!" + "UARGH! Intenta aturar-me ara!" ], "kwbf012": [ - "You're getting lucky so far, 'ey?" + "Has tingut sort fins ara, eh?" ], "kwbf013": [ - "I grow weary of this. We end it now." + "Em canso d'això. Ho acabem ara." ], "kwbf014": [ - "Hm-hm, I move pretty fast for a big man, 'ey?" + "Hm-hm, em moc bastant ràpid per a un home gran, oi?" ], "kwbf015": [ - "I float like a butterfly and sting like a wumpbee!" + "Floto com una papallona i pico com un wumpbee!" ], "kwbf016": [ "Urghh!" ], "kwbf017": [ - "Aurgh!" + "Argh!" ], "kwbf018": [ "Arghh!" @@ -6503,1353 +6503,1355 @@ "Urrghh!" ], "kwbf020": [ - "Urgh, ow!" + "Urgh, ai!" ], "kwbf021": [ - "Die!" + "Morir!" ], "kwbf022": [ - "Now I have you!" + "Ara et tinc!" ], "kwbf023": [ - "You cannot win, Jak!" + "No pots guanyar, Jak!" ], "kwbf024": [ - "Here's some pain!" + "Aquí hi ha una mica de dolor!" ], "kwbf025": [ "No!" ], "kwbf026": [ - "You're trying my patience!" + "Estàs provant la meva paciència!" ], "kwbf027": [ - "Stand still!" + "Queda't quiet!" ], "kwbf028": [ - "Haha, how did that feel?" + "Haha, com es va sentir això?" ], "kwbf029": [ - "You should have walked away when you had a chance." + "Hauries d'haver marxat quan tinguessis l'oportunitat." ], "kwbf030": [ - "Pop this!" + "Pop això!" ], "kwbf031": [ - "You can't stop the bomb, Jak!" + "No pots aturar la bomba, Jak!" ], "kwbf032": [ - "Hahahaha, that felt good!" + "Hahahaha, em va semblar bé!" ], "kwbf033": [ - "I am the weapon master!" + "Sóc el mestre d'armes!" ], "kwbf034": [ - "Had enough?" + "En tenia prou?" ], "kwbf035": [ - "Here we come!" + "Aquí venim!" ], "kwbf036": [ - "Dance for me, Jak!" + "Balla per mi, Jak!" ], "kwbf037": [ - "You can't get us all!" + "No ens pots agafar a tots!" ], "kwbf038": [ - "Tag! You're it." + "Etiqueta! Tu ho ets." ], "kwbf039": [ - "Phew. This is a bit of a workout..." + "Uf. Això és una mica d'entrenament..." ], "kwbf040": [ - "Which is the real me, Jak?" + "Quin és el jo real, Jak?" ], "kwbf041": [ - "Finally... I get to put you in your place!" + "Per fi... et poso al teu lloc!" ], "kwbf042": [ - "Arghh! You little...!" + "Arghh! Ets petit...!" ], "ora006": [ - "Bring me 200 more Metal Head Skull Gems", - "and I will show you another Dark Power." + "Porta'm 200 gemmes de calavera de cap de metall més", + "i us mostraré un altre poder fosc." ], "ora007": [ - "Bring me 200 more Skull Gems", - "and another power will be yours to control." + "Porta'm 200 gemmes de calavera més", + "i un altre poder serà el teu per controlar." ], "ora008": [ - "Bring me more Skull Gems to receive control", - "over a Dark Power." + "Porta'm més gemmes de calavera per rebre el control", + "sobre un poder fosc." ], "ora009": [ - "You do not have enough Skull Gems.", - "Come back when you have collected more." + "No tens prou gemmes de calavera.", + "Torna quan hagis recollit més." ], "ora010": [ - "I need more Skull Gems." + "Necessito més gemmes de calavera." ], "ora011": [ - "Trust not your reliance on weapons." + "No confieu en la vostra dependència de les armes." ], "ora012": [ - "Use only your body and brain for this challenge." + "Utilitzeu només el vostre cos i cervell per a aquest repte." ], "ora013": [ - "Weapons are for the weak." + "Les armes són per als febles." ], "ora014": [ - "You must not use weapons in this challenge." + "No heu d'utilitzar armes en aquest repte." ], "pek001": [ - "Groark! I can't believe you actually did this thing!", - "Onin says she will search timelines for answers", - "about these sacred relics. I will find you then." + "Groark! No puc creure que hagis fet això!", + "Onin diu que buscarà les cronologies per trobar respostes", + "sobre aquestes relíquies sagrades. Et trobaré aleshores." ], "pek002": [ - "Groark! Whoa... well I'll be a moncaw's uncle, the Light Tower", - "actually does exist! The beam of light is shining somewhere", - "in the city! The Tomb of Mar was right under our noses", - "all along. And thanks to me, you found it!" + "Groark! Vaja... bé, seré l'oncle d'un moncaw, la Torre de la Llum", + "realment existeix! El raig de llum brilla en algun lloc", + "a la ciutat! La Tomba de Mar estava just sota els nostres nassos", + "tot el temps. I gràcies a mi, l'heu trobat!" ], "pek003": [ - "Wow! As I live and molt, one step closer to the Tomb.", - "I never thought we'd get this far!" + "Vaja! Mentre visc i mudo, un pas més a prop de la Tomba.", + "Mai vaig pensar que arribaríem tan lluny!" ], "pek010": [ - "This is Onin's magic bowl.", - "Onin will make symbols appear from her bowl.", - "When the symbols appear, you must pop them before they", - "reach the ground. You must pop them quickly, pop only", - "the symbols you see. If you try to pop a symbol that is", - "not there, Onin will give you a penalty! Miss any symbols", - "and you will penalized! Each round will get faster.", - "Let's see how far you get.", - "You must get a high enough score to win." + "Aquest és el bol màgic d'Onin.", + "Onin farà aparèixer símbols del seu bol.", + "Quan apareguin els símbols, els heu de fer aparèixer abans que ells", + "arribar a terra. Els heu d'explotar ràpidament, només esclatar", + "els símbols que veus. Si intenteu fer aparèixer un símbol que és", + "no allà, Onin et donarà un penal! Perdre qualsevol símbol", + "i et penalitzaràs! Cada ronda serà més ràpida.", + "A veure fins on arribes.", + "Has d'obtenir una puntuació prou alta per guanyar." ], "pek011": [ - "You are doing very well!" + "Ho estàs fent molt bé!" ], "pek012": [ - "Huh, not bad." + "Eh, no està malament." ], "pek013": [ - "Keep going, you can do it!" + "Segueix així, pots fer-ho!" ], "pek014": [ - "Pop any more than the true number of each symbol,", - "and you will be penalized! Groark!" + "Pop més que el nombre real de cada símbol,", + "i seràs penalitzat! Groark!" ], "pek015": [ - "Ready? Go!" + "Preparat? Va!" ], "pek016": [ - "That symbol wasn't there, penalty!" + "Aquell símbol no hi era, penal!" ], "pek017": [ - "Hah, Onin got you! Pop only symbols that you see." + "Ha, Onin t'ha entès! Posa només els símbols que veus." ], "pek018": [ - "Here comes another round!", - "Give him another burst, Onin girl!" + "Aquí ve una altra ronda!", + "Dona-li un altre cop, noia Onin!" ], "pek019": [ - "She got you again! What is your problem?" + "T'ha tornat a aconseguir! Quin es el teu problema?" ], "pek020": [ - "I can't believe you've made it this far!" + "No em puc creure que hagis arribat fins aquí!" ], "pek021": [ - "Quickly! You are missing symbols!" + "Ràpidament! Et falten símbols!" ], "pek022": [ - "You missed some!" + "N'heu trobat a faltar!" ], "pek023": [ - "Faster! Faster!" + "Més ràpid! Més ràpid!" ], "pek024": [ - "Give it to him, Onin! More, Onin, more!", - "You go, girl, shake what your momma gave you!" + "Dóna-li-ho, Onin! Més, Onin, més!", + "Va, nena, sacseja el que et va donar la teva mare!" ], "pek025": [ - "Rockin' in the club." + "Rocking al club." ], "pek026": [ - "He can't do that many!" + "No pot fer tants!" ], "pek027": [ - "What? He's still going?" + "Què? Encara va?" ], "pek028": [ - "Let's see if he can handle it." + "A veure si ho pot fer." ], "pek029": [ - "Go! Come on!" + "Va! Vinga!" ], "pek030": [ - "Okay, so you're good." + "D'acord, doncs estàs bé." ], "pek031": [ - "Wow! Not bad." + "Vaja! No està malament." ], "pek032": [ - "Well, I laid an egg." + "Bé, vaig posar un ou." ], "pek033": [ - "Amazing! You actually won!", - "I am without words, and that is rare." + "Increïble! De fet, has guanyat!", + "Estic sense paraules, i això és rar." ], "pek034": [ - "You got enough points, congratulations!" + "Ja tens prou punts, enhorabona!" ], "pek035": [ - "Last penalty! You lose, loser." + "Últim penal! Perds, perdedor." ], "pek036": [ - "You lost! Why am I not surprised?" + "Has perdut! Per què no em sorprèn?" ], "pek037": [ - "You lose! Would you like to try again?" + "Perds! Vols tornar-ho a provar?" ], "pek038": [ - "Ahh, you laid an egg. Too bad, so sad." + "Ah, vas posar un ou. Llàstima, tan trist." ], "pek039": [ - "Oooh, so close... not! Hehehe..." + "Oooh, tan a prop... no! Hehehe..." ], "pek040": [ - "You made a valiant effort, but you suck!" + "Heu fet un esforç valent, però és una merda!" ], "pek041": [ - "Game over, finito, done, se acabó!" + "Game over, finit, done, es va acabar!" ], "prop002": [ - "As you all know, I was wounded during our last", - "glorious assault against the Metal Head Nest", - "many years ago. I have sacrificed everything", - "for this city and I demand only the same in return!", - "Loyalty will be rewarded,", - "death will await all others." + "Com tots sabeu, vaig ser ferit durant la nostra última", + "gloriós assalt contra el niu del cap metàl·lic", + "Fa molts anys. Ho he sacrificat tot", + "per aquesta ciutat i només demano el mateix a canvi!", + "La lleialtat serà recompensada,", + "la mort esperarà a tots els altres." ], "prop003": [ - "The Dark Eco inside you will eventually kill you, Jak.", - "Its destructive effects cannot be stopped.", - "Once you are in its chaotic grip, it will not let you go", - "until you slide into insanity. Turn yourself in, and I will", - "kill you mercifully and painlessly,", - "it is your only way out." + "L'Eco fosc que hi ha al teu interior finalment et matarà, Jak.", + "Els seus efectes destructius no es poden aturar.", + "Un cop estiguis en la seva presa caòtica, no et deixarà anar", + "fins a caure en la bogeria. Entrega't i ho faré", + "matar-te amb misericòrdia i sense dolor,", + "és la teva única sortida." ], "prop004": [ - "Don't try to make a fool out of me, Jak.", - "Just because I haven't killed you yet doesn't", - "mean I'm not onto you. The citizens of this city", - "worship me because I offer them safety.", - "All I ask in return is for their lives.", - "I'll find you, and when I do, you'll wish", - "you died in prison." + "No intentis fer el ximple de mi, Jak.", + "El fet que encara no t'he matat no ho fa", + "vol dir que no estic cap a tu. Els ciutadans d'aquesta ciutat", + "adora'm perquè els ofereixo seguretat.", + "Tot el que demano a canvi és per les seves vides.", + "Et trobaré, i quan ho faci, ho desitjaràs", + "vas morir a la presó." ], "prop005": [ - "Attention, my loyal citizens! We are looking for a", - "rebel fugitive who has caused the city considerable", - "damage of late. This man is armed and extremely", - "dangerous and can somehow change into a monstrous", - "creature. We have reports he is working with the", - "Metal Heads to subvert your city and your safety.", - "Report all sightings immediately!" + "Atenció, els meus lleials ciutadans! Busquem un", + "fugitiu rebel que ha causat considerables a la ciutat", + "danys de darrerament. Aquest home està armat i molt", + "perillós i d'alguna manera pot convertir-se en un monstruós", + "criatura. Tenim informes que està treballant amb", + "Metal Heads per subvertir la teva ciutat i la teva seguretat.", + "Informa de tots els avistaments immediatament!" ], "prop006": [ - "Brave citizens, today is the anniversary of the great", - "battle that ruined our city section we now call", - "Dead Town. Remember those who died", - "that day and how much we owe the Metal Heads", - "for their treachery! Remember how bravely I fought", - "to save those poor souls of the overrun section", - "and reflect on how grateful you should all be that the", - "Krimzon Guard keeps you safe each day." + "Ciutadans valents, avui és l'aniversari dels grans", + "batalla que va arruïnar la nostra secció de la ciutat que ara anomenem", + "Ciutat Morta. Recordeu els que van morir", + "aquell dia i quant li devem als Metal Heads", + "per la seva traïció! Recorda amb quina valentia vaig lluitar", + "per salvar aquelles pobres ànimes de la secció d'envasament", + "i reflexioneu sobre com haureu d'estar tots agraïts que el", + "Krimzon Guard us manté segur cada dia." ], "prop007": [ - "This is your Baron. The reports of a Metal Head", - "invasion of the city are vastly overblown.", - "I assure you this is but a small incursion and we will", - "defeat it shortly. Stay in your homes, do not panic,", - "or you will be punished!" + "Aquest és el teu baró. Els informes d'un cap de metall", + "la invasió de la ciutat és molt exagerada.", + "Us asseguro que no és més que una petita incursió i ho farem", + "derrotar-lo en breu. Queda't a casa teva, no t'espantis,", + "o seràs castigat!" ], "prop008": [ - "Attention citizens, this is your Baron speaking.", - "There have been several unauthorized uses of the", - "city's old gate locks. Fortunately, these breaches", - "have not resulted in contamination, but we all know", - "how deadly the Wasteland is. No one is allowed", - "outside the city without authorization, let it be", - "known that any violators will be caught", - "and executed." + "Atenció ciutadans, aquest és el vostre baró que parla.", + "Hi ha hagut diversos usos no autoritzats del", + "antigues panys de la ciutat. Afortunadament, aquests incompliments", + "no han provocat contaminació, però tots ho sabem", + "que mortal és el Wasteland. No està permès ningú", + "fora de la ciutat sense autorització, que sigui", + "se sap que qualsevol infractor serà capturat", + "i executat." ], "prop009": [ - "Serve your city." + "Doneu servei a la vostra ciutat." ], "prop010": [ - "Sacrifice for your city, and all will prosper!" + "Sacrifici per la teva ciutat, i tot prosperarà!" ], "prop011": [ - "You are safe, because I care." + "Estàs segur, perquè m'importa." ], "prop012": [ - "All Metal Heads must die!" + "Tots els caps de metall han de morir!" ], "prop013": [ - "Work hard, and be grateful." + "Treballa dur i sigues agraït." ], "prop014": [ - "Report all wrongdoers." + "Denuncia tots els infractors." ], "prop015": [ - "Remember, even your friends could be enemies." + "Recordeu que fins i tot els vostres amics poden ser enemics." ], "prop016": [ - "Turn in all who subvert." + "Entrega a tots els que subverteixen." ], "prop017": [ - "Strength is our only option!" + "La força és la nostra única opció!" ], "prop018": [ - "Obey and be happy." + "Obeir i ser feliç." ], "prop019": [ - "Sacrifice is something you should do", - "for your city." + "El sacrifici és una cosa que hauríeu de fer", + "per la teva ciutat." ], "prop020": [ - "Sacrifice for your city." + "Sacrifici per la teva ciutat." ], "prop021": [ - "Remember, even friends might be enemies." + "Recordeu que fins i tot els amics poden ser enemics." ], "prop022": [ - "The city needs your sacrifice." + "La ciutat necessita el teu sacrifici." ], "prop023": [ - "It is better inside the walls!" + "És millor dins de les parets!" ], "prop024": [ - "The law will show no mercy." + "La llei no mostrarà pietat." ], "prop025": [ - "Justice is swift." + "La justícia és ràpida." ], "prop026": [ - "The Underground movement is dead!" + "El moviment Underground ha mort!" ], "prop027": [ - "Join the Krimzon Guard and your family", - "will be allowed to stay." + "Uneix-te a la Guàrdia Krimzon i a la teva família", + "es permetrà romandre." ], "prop028": [ - "One way: My way." + "Una manera: la meva manera." ], "prop029": [ - "To lead is to control." + "Liderar és controlar." ], "prop030": [ - "Give up your freedom and I will protect you." + "Renuncia a la teva llibertat i et protegiré." ], "prop031": [ - "Have faith in me and the Promised Land is yours." + "Tingueu fe en mi i la Terra Promesa és vostra." ], "prop032": [ - "Your city needs a strong leader, not a childish fool." + "La teva ciutat necessita un líder fort, no un ximple infantil." ], "prop033": [ - "Welcome not the unknown face." + "Benvingut no la cara desconeguda." ], "prop034": [ - "Shun those who would defy me!" + "Fuja aquells que em desafien!" ], "prop035": [ - "I am the face of Haven City." + "Sóc la cara de Haven City." ], "prop036": [ - "Without my strength, there would be no city." + "Sense la meva força, no hi hauria ciutat." ], "prop037": [ - "Follow me to a safer future!" + "Segueix-me cap a un futur més segur!" ], "prop038": [ - "You are safe inside the walls with me." + "Estàs segur dins les parets amb mi." ], "prop039": [ - "Defy... and die." + "Desafia... i mor." ], "prop040": [ - "Welcome to Haven City!", - "All laws are enforced for your safety.", - "Obey me and you will not be punished." + "Benvinguts a Haven City!", + "Totes les lleis s'apliquen per la vostra seguretat.", + "Obeeix-me i no seràs castigat." ], "prop041": [ - "The city is safe. I will not allow harm", - "to befall you, trust me." + "La ciutat és segura. No permetré mal", + "per passar-te, confia en mi." ], "prop042": [ - "Rest assured, I will destroy the Metal Heads.", - "One way or another." + "Estigueu tranquils, destruiré els caps de metall.", + "D'una manera o altra." ], "prop043": [ - "To all citizens, this puny Underground revolt", - "will be dealt with by all aggressive means.", - "We will crush these arrogant upstarts, they will not", - "be allowed to threaten me or this city's order!" + "A tots els ciutadans, aquesta insignificant revolta clandestina", + "serà tractat per tots els mitjans agressius.", + "Aixafarem aquests adveneduts arrogants, no ho faran", + "permeteu-me amenaçar-me o l'ordre d'aquesta ciutat!" ], "prop044": [ - "To all citizens of this great city, there is a monster", - "among you, masquerading as a man!", - "He is dangerous and must be destroyed!", - "I offer a reward of eco for his capture, or, if you", - "have a loved one in prison, I will exchange them for", - "this renegade. I promise." + "Per a tots els ciutadans d'aquesta gran ciutat, hi ha un monstre", + "entre vosaltres, disfressats d'home!", + "És perillós i ha de ser destruït!", + "Ofereixo una recompensa d'eco per la seva captura, o, si tu", + "tenir un ésser estimat a la presó, els canviaré per", + "aquest renegat. Prometo." ], "prop045": [ - "To all who defy me! I am watching you,", - "I am everywhere, I am this city!" + "A tots els que em desafien! T'estic mirant,", + "Estic a tot arreu, sóc aquesta ciutat!" ], "prop046": [ - "This is your Baron. I have been informed by the", - "ministry of extreme labor that worker productivity is", - "down this month! That is unacceptable!", - "I give you safety and this is how you repay me?", - "You must work harder, not smarter!", - "Free the mind and the body will do as it's told,", - "forced labor will set you free!", - "And to help you in your spiritual motivation...", - "quotas are doubled next month!" + "Aquest és el teu baró. M'han informat el", + "ministeri de treball extrem que és la productivitat dels treballadors", + "baix aquest mes! Això és inacceptable!", + "Et dono seguretat i així em pagues?", + "Has de treballar més, no més intel·ligent!", + "Allibera la ment i el cos farà el que se li diu,", + "el treball forçat us farà lliures!", + "I per ajudar-te en la teva motivació espiritual...", + "les quotes es dupliquen el mes vinent!" ], "prop047": [ - "Due to recent, uh... \"attrition\" difficulties,", - "this city needs fresh Krimzon Guard recruits!", - "Everyone is asked to volunteer members of their family!", - "Come down to your friendly Fortress facility.", - "Or else!" + "A causa de recents, eh... dificultats de \"desgast\",", + "aquesta ciutat necessita nous reclutes de la Guàrdia Krimzon!", + "Es demana a tothom que faci voluntaris membres de la seva família!", + "Vine a la teva amigable instal·lació de la fortalesa.", + "O sino!" ], "prop048": [ - "As your Baron, I am instituting a \"no hoverboard\" rule", - "in the city! Young delinquents with nothing better", - "to do than float around and do tricks! Huh!", - "I'll put all violators into the Guard and teach them", - "some discipline. No skating, it's the law!" + "Com a baró, estic instituint una regla de \"no hoverboard\".", + "a la ciutat! Joves delinqüents sense res millor", + "per fer que surar i fer trucs! eh!", + "Posaré tots els infractors a la Guàrdia i els ensenyaré", + "certa disciplina. No patinar, és la llei!" ], "prop049": [ - "I am disappointed with this city's lack of", - "committment and sacrifice. Work harder! Eat less!", - "Drink only when I tell you! Sleep is optional.", - "We are at war with an outside threat,", - "don't make me declare war on you as well!" + "Estic decebut amb la manca d'aquesta ciutat", + "compromís i sacrifici. Treballar més dur! Menja menys!", + "Beu només quan et digui! Dormir és opcional.", + "Estem en guerra amb una amenaça externa,", + "no em feu declarar-vos la guerra també!" ], "prop050": [ - "Greetings, people of this wonderful utopia. This year's", - "championship race will begin shortly. All citizens", - "not under house arrest are invited to come down to", - "the Stadium and watch your favorite son Erol", - "once again show how the Krimzon Guard are the elite", - "warriors of this city. Bring the whole family! The first", - "one thousand children will get a mandatory", - "Krimzon Guard recruitment package and be", - "\"asked\" to join the Guard for life, what a treat!" + "Salutacions, gent d'aquesta meravellosa utopia. La d'enguany", + "la cursa del campionat començarà en breu. Tots els ciutadans", + "no estan sota arrest domiciliari estan convidats a baixar", + "l'Estadi i mira el teu fill preferit Erol", + "mostrar una vegada més com la Guàrdia Krimzon és l'elit", + "guerrers d'aquesta ciutat. Porta tota la família! El primer", + "mil nens tindran una obligatòria", + "Paquet de contractació de Krimzon Guard i be", + "\"demanat\" unir-se a la Guàrdia de per vida, quina delícia!" ], "prop051": [ - "This is your Baron, I am still in control!", - "And I assure you, there's absolutely no Metal Heads", - "in the city. Anyone who contradicts this fact...", - "will be shot! The current situation is merely", - "an elaborate propaganda hoax, perpetrated by", - "the outlawed Underground militia trying to", - "subvert our laws and discredit those who protect you", - "while you sleep! Pay no attention to this foolish hoax,", - "there are no Metal Heads within 100 miles of this city!" + "Aquest és el teu baró, encara tinc el control!", + "I us asseguro que no hi ha cap Metall Heads", + "a la ciutat. Qui contradigui aquest fet...", + "serà afusellat! La situació actual és merament", + "un elaborat engany de propaganda, perpetrat per", + "la milícia clandestina il·legal que ho intenta", + "subverteix les nostres lleis i desacredita els que et protegeixen", + "mentre dorms! No feu cas a aquest engany estúpid,", + "no hi ha caps de metall a 100 milles d'aquesta ciutat!" ], "prop052": [ - "This is Baron Praxis. We have taken back the city", - "and the Metal Heads are now fleeing before us!", - "Victory is at hand! Continue to fight for the freedom", - "I may some day give you. Continue to defy these", - "enemies of my law and order...", - "and continue to die for me." + "Aquest és el baró Praxis. Hem recuperat la ciutat", + "i els caps de metall ara fugen davant nostre!", + "La victòria és a prop! Continuar lluitant per la llibertat", + "Potser algun dia et donaré. Continueu desafiant aquests", + "enemics de la meva llei i ordre...", + "i segueix morint per mi." ], "prop053": [ - "Fear not the men in red. Sure, there are occasional", - "complaints about their over-aggressive policing,", - "wanton destruction of people's property during raids,", - "mass-arrests, misplaced loved ones and whatnot.", - "Hey, we're only human! Running a city can be", - "tougher than it looks, imagine how much worse", - "it would be if the Metal Heads were in charge!" + "No tingueu por dels homes de vermell. Clar, n'hi ha de tant en tant", + "queixes sobre la seva policia excessivament agressiva,", + "destrucció involuntaria de la propietat de la gent durant les batudes,", + "detencions massives, éssers estimats fora de lloc i altres coses.", + "Ei, només som humans! Dirigir una ciutat pot ser", + "més dur del que sembla, imagineu-vos quant pitjor", + "seria si els Metal Heads estiguessin al capdavant!" ], "prop054": [ - "We've had a few incidents with our lower class labor", - "force lately. If your Lurker is acting up, call Krimzon", - "Animal Control. Is your Lurker in a tree? Stuck in a", - "sewer grate? Foaming at the mouth? Call", - "the friendly officers of the K.A.C. and they will deal", - "with your furry slave. with all the love and care it", - "deserves... then haul it away for reconditioning.", - "Remember, Lurkers can be dangerous!" + "Hem tingut alguns incidents amb els nostres treballadors de classe baixa", + "força últimament. Si el vostre Lurker està actuant, truqueu a Krimzon", + "Control d'animals. El teu Lurker està en un arbre? Encallat en un", + "reixa de clavegueram? Escuma a la boca? Anomenada", + "els oficials amics de la K.A.C. i tractaran", + "amb el teu esclau pelut. amb tot l'amor i cura", + "es mereix... després traieu-lo per a un reacondicionament.", + "Recordeu que els lurkers poden ser perillosos!" ], "prop055": [ - "Please give generously to the Baron eco fund.", - "Your munificent donation wil be used for a variety", - "of humanitarian needs: bombs, guns, armor, genetic", - "alteration research, all in the name of preserving this", - "wonderful city of ours. Give often, give freely...", - "or it will be taken from you!" + "Si us plau, doneu generosament al fons ecològic Baron.", + "La teva donació s'utilitzarà per a una varietat", + "de necessitats humanitàries: bombes, pistoles, blindatges, genètica", + "investigació sobre alteracions, tot en nom de preservar-ho", + "meravellosa ciutat nostra. Donar sovint, donar lliurement...", + "o t'ho prendran!" ], "prop056": [ - "It can be so lonely at the top and looking down from", - "up here I can see that this dirty city is in desperate", - "need of revitalization. So, to that end, we", - "will be bulldozing many sections of the city in the", - "coming weeks! All complaints against this", - "construction initiative can be brought,", - "in-person, to the Fortress Prison where they will be", - "\"reviewed.\" Condemned city sections are to", - "be evacuated before razing begins.", - "Anyone still in their homes will be ignored." + "Pot estar tan sol a dalt i mirant cap avall", + "aquí dalt veig que aquesta ciutat bruta està desesperada", + "necessitat de revitalització. Així doncs, amb aquesta finalitat, nosaltres", + "destruirà moltes seccions de la ciutat a la", + "properes setmanes! Totes les queixes contra això", + "es pot portar una iniciativa de construcció,", + "presencialment, a la presó de la fortalesa on seran", + "\"revisat\". Les seccions de la ciutat condemnades estan a", + "ser evacuat abans de començar l'arrasament.", + "Qualsevol persona que encara estigui a casa seva serà ignorada." ], "prop057": [ - "The Metal Head attack will not succeed!", - "Your Baron has taken certain measures", - "to guarantee that the Metal Heads will NEVER hold", - "this city for long. Rest assured, I will snatch victory", - "from the jaws of defeat, whatever the cost!", - "I vowed never to let this city fall, and I intend to keep", - "that promise. What must happen is for the good of all!", - "Remember, to die in victory is a glorious", - "badge of honor!" + "L'atac de Metal Head no tindrà èxit!", + "El vostre baró ha pres certes mesures", + "per garantir que els caps metàl·lics MAI aguantaran", + "aquesta ciutat durant molt de temps. Tranqui la victòria", + "de les mandíbules de la derrota, sigui quin sigui el preu!", + "Vaig jurar que no deixaria mai caure aquesta ciutat i tinc la intenció de mantenir-la", + "aquella promesa. El que ha de passar és pel bé de tots!", + "Recordeu que morir en la victòria és una cosa gloriosa", + "distintiu d'honor!" ], "prop058": [ - "This is Baron Praxis. As our city faces its worst threat", - "in three hundred years, I am faced with serious", - "decisions concerning our future. I regret that I have", - "few choices left. I command you all to return to your", - "homes and say goodbye to your families.", - "Be assured, we will not lose this fight, one way", - "or another! The time has come to show these creatures", - "what we're capable of when all hope is lost!", - "It has been a pleasure ruling over you", - "to the end." + "Aquest és el baró Praxis. Mentre la nostra ciutat s'enfronta a la seva pitjor amenaça", + "d'aquí a tres-cents anys, em trobo seriosament", + "decisions sobre el nostre futur. Em sap greu haver-ho fet", + "poques opcions queden. Us ordeno a tots que torneu al vostre", + "casa i acomiadar-se de les seves famílies.", + "Estigueu segurs, no perdrem aquesta lluita, d'una manera", + "o un altre! Ha arribat el moment de mostrar aquestes criatures", + "del que som capaços quan es perd tota esperança!", + "Ha estat un plaer governar-te", + "fins al final." ], "sam001": [ - "This is Samos. Jak, I need you to go out to the ruins", - "in Dead Town and visit my old hut. It's now time to retrieve", - "something I hid there long ago, good luck! And Daxter...", - "clean up my place while you're out there!" + "Això és Samos. Jak, necessito que vagis a les ruïnes", + "a Dead Town i visitar la meva antiga cabana. Ara és el moment de recuperar", + "una cosa que hi vaig amagar fa temps, molta sort! I Daxter...", + "neteja el meu lloc mentre estàs fora!" ], "sam002": [ - "This is Samos. Now that you boys are here", - "I want you to get up to my old hut. There is something there", - "that we need! Good luck, and watch our for Metal Heads." + "Això és Samos. Ara que esteu aquí, nois", + "Vull que vagis a la meva antiga cabana. Hi ha alguna cosa allà", + "que necessitem! Bona sort i mireu el nostre per Metal Heads." ], "sam003": [ - "This is Samos, Jak. the Metal Heads must have taken", - "the giant gate ring to their Nest in the Wasteland.", - "If they're ever going to use that ring to open a rift back", - "to our old village, we need to get into the Nest and find it." + "Aquest és Samos, Jak. els Caps de metall deuen haver pres", + "la porta gegant sona al seu niu al Wasteland.", + "Si alguna vegada faran servir aquest anell per obrir una escletxa", + "fins al nostre vell poble, hem d'entrar al Niu i trobar-lo." ], "sam004": [ - "You did well, Jak. Luckily, the Precursor Stone wasn't in that", - "bomb when it went off or none of us would be here", - "right now. Come back to the race garage", - "as soon as you can." + "Has fet bé, Jak. Per sort, la Pedra Precursora no hi era", + "bomba quan esclatés o cap de nosaltres estaríem aquí", + "ara mateix. Torna al garatge de la cursa", + "tan aviat com puguis." ], "sam005": [ - "Good work so far, boys!", - "Find Young Samos and give him the Life Seed." + "Bona feina fins ara, nois!", + "Troba el jove Samos i dóna-li la Llavor de Vida." ], "sam006": [ - "Finally, you got here! Find the Lurker Totem", - "and retrieve a piece of the Seal of Mar on its top." + "Per fi, has arribat aquí! Trobeu el tòtem de l'acusador", + "i recupera un tros del Segell de Mar a la seva part superior." ], "sam007": [ - "You've got to get the boy safely to the Power Station, Jak!" + "Has de portar el noi amb seguretat a la central elèctrica, Jak!" ], "sam008": [ - "Thank you for protecting us, Jak.", - "We'll meet you at the Nest." + "Gràcies per protegir-nos, Jak.", + "Ens trobarem al Nest." ], "sigc001": [ - "Hold on there, we need to teach you how to use this baby!" + "Espera't, t'hem d'ensenyar a utilitzar aquest nadó!" ], "sigc002": [ - "The Scatter Gun is a good short-range weapon", - "with a wide field of fire." + "La pistola de dispersió és una bona arma de curt abast", + "amb un ampli camp de foc." ], "sigc003": [ - "To fire the weapon, press the trigger." + "Per disparar l'arma, premeu el gallet." ], "sigc004": [ - "Good! Some kick, huh?" + "Bé! Alguna puntada, eh?" ], "sigc005": [ - "It's not the fastest firing weapon in the world, though." + "Tanmateix, no és l'arma de tret més ràpida del món." ], "sigc006": [ - "You can put your weapon away or pull it out at anytime." + "Pots guardar l'arma o treure-la en qualsevol moment." ], "sigc007": [ - "Try putting the weapon away." + "Intenta guardar l'arma." ], "sigc008": [ - "Easy, huh?" + "Fàcil, eh?" ], "sigc009": [ - "Now take the weapon back out." + "Ara torneu a treure l'arma." ], "sigc010": [ - "Good!" + "Bé!" ], "sigc011": [ - "You can find red ammo inside Krimzon Guard crates." + "Podeu trobar munició vermella dins de les caixes de la Guàrdia Krimzon." ], "sigc012": [ - "Shoot the crates." + "Dispara a les caixes." ], "sigc013": [ - "Great, now you're ready!" + "Genial, ara ja estàs llest!" ], "sigc014": [ - "Want to try the Scatter Gun course?" + "Vols provar el curs Scatter Gun?" ], "sigc015": [ - "The blaster is a good all-around choice", - "with a nice rate of fire." + "El blaster és una bona elecció completa", + "amb un bon ritme de foc." ], "sigc016": [ - "This weapon requires more aiming ability." + "Aquesta arma requereix més habilitat d'apuntar." ], "sigc017": [ - "You can switch weapon modes at anytime." + "Podeu canviar els modes d'armes en qualsevol moment." ], "sigc018": [ - "You can find yellow ammo in crates." + "Podeu trobar munició groga a les caixes." ], "sigc022": [ - "Would you like to test your skills on the gun course?" + "T'agradaria posar a prova les teves habilitats al curs d'armes?" ], "sigc023": [ - "Which course do you want to play?" + "A quin curs vols jugar?" ], "sigc024": [ - "Shoot every target. The faster you shoot each target", - "the more points you'll get." + "Dispara a tots els objectius. Com més ràpid dispara a cada objectiu", + "més punts obtindràs." ], "sigc025": [ - "Hold your fire on civvies.", - "Hit a friendly target and points will be deducted." + "Mantingueu el foc als civils.", + "Aconsegueix un objectiu amigable i es restaran punts." ], "sigc026": [ - "Good luck." + "Bona sort." ], "sigc027": [ - "Lock and load. Ready, go!" + "Bloquejar i carregar. Llestos, ja!" ], "sigc028": [ - "Perfect! You can be my backup any day." + "Perfecte! Pots ser la meva còpia de seguretat qualsevol dia." ], "sigc029": [ - "You did it, excellent shooting!" + "Ho has fet, un rodatge fantàstic!" ], "sigc030": [ - "Nice shooting! You got potential, kid!" + "Bonic tiroteig! Tens potencial, noi!" ], "sigc031": [ - "Not bad, you'll do." + "No està malament, ho faràs." ], "sigc032": [ - "Try again, rookie. You're still a bit rusty with that hardware." + "Torna-ho a provar, principiant. Encara estàs una mica rovellat amb aquest maquinari." ], "sigc033": [ - "Not bad, but not good. Try again?" + "No està malament, però no és bo. Torna-ho a provar?" ], "sigc034": [ - "Close, but in the thick, close won't cut it. Try again?" + "Tancar, però en el gruix, tancar no ho tallarà. Torna-ho a provar?" ], "sigc035": [ - "Care to try again? Or is your momma calling?" + "Vols tornar-ho a provar? O truca la teva mare?" ], "sigc036": [ - "You're not up to speed yet, try again?" + "Encara no estàs al corrent, ho tornes a provar?" ], "sigc037": [ - "You gotta shoot those targets faster!" + "Has de disparar a aquests objectius més ràpid!" ], "sigc038": [ - "Be the gun, baby!" + "Sigues l'arma, nena!" ], "sigc039": [ - "It's all about reaction time." + "Tot és qüestió de temps de reacció." ], "sigc040": [ - "Different gun modes come in handy against different targets." + "Els diferents modes d'armes són útils contra diferents objectius." ], "sigc041": [ - "Be cool and you'll rule." + "Sigues tranquil i tu governaràs." ], "sigc043": [ - "Try switching to the Scatter Gun." + "Proveu de canviar a la pistola de dispersió." ], "sigc053": [ - "Faster on the trigger, cherry." + "Més ràpid al gallet, cirera." ], "sigc054": [ - "That was a civilian!" + "Això era un civil!" ], "sigc055": [ - "I said \"don't shoot civvies,\" itchy finger!" + "Vaig dir \"no dispareu als civils\", picor al dit!" ], "sigc056": [ - "Great job!" + "Bona feina!" ], "sigc057": [ - "Awesome round, I feel sorry for those Metal Heads already." + "Ronda impressionant, ja em sap greu aquests Metal Heads." ], "sigc058": [ - "That was a sweet round, you make it look easy!" + "Va ser una ronda dolça, ho fas semblar fàcil!" ], "sigc059": [ - "You smoked that course!" + "Has fumat aquest curs!" ], "sigc060": [ - "The Metal Heads will eat you alive, rookie! Do it over!" + "Els caps de metall et menjaran viu, novell! Fes-ho!" ], "sigc061": [ - "You need some practice." + "Necessites una mica de pràctica." ], "sigc062": [ - "I remember my rookie days, keep trying." + "Recordo els meus dies de debutant, segueix-ho intentant." ], "sigc063": [ - "Perfect round! You are the man." + "Ronda perfecta! Tu ets l'home." ], "sigc064": [ - "Perfect shooting! I'm impressed." + "Tret perfecte! Estic impressionat." ], "sigc065": [ - "Whoa, rock and roll, baby! That was a perfect round." + "Va, rock and roll, nena! Va ser una ronda perfecta." ], "sigc066": [ - "Nice shot!" + "Bona presa!" ], "sigc067": [ - "Wasted 'em!" + "Els he perdut!" ], "sigc068": [ - "Very nice! Reminds me of me." + "Molt bonic! Em recorda a mi." ], "sigc069": [ - "Make 'em fear you." + "Fes-los temer." ], "sigc070": [ - "Good combo!" + "Bona combinació!" ], "sigc071": [ - "I love seeing you work!" + "M'encanta veure't treballar!" ], "sigc072": [ - "Now switch back to the Blaster." + "Ara torneu al Blaster." ], "sigc073": [ - "You can combo your attacks by kicking,", - "then firing your weapon." + "Pots combinar els teus atacs donant cops de peu,", + "després dispara la teva arma." ], "sigc074": [ - "Try a kick-shot combo." + "Prova una combinació de cops de peu." ], "sigc075": [ - "Kick the first target, then shoot while kicking", - "to automatically hit the second target." + "Pateu el primer objectiu i, a continuació, dispara mentre patades", + "per colpejar automàticament el segon objectiu." ], "sigc076": [ - "Great move!" + "Gran moviment!" ], "sigc077": [ - "Not quite, try again. Kick then shoot, almost at the same time." + "No del tot, torna-ho a provar. Patear i després disparar, gairebé al mateix temps." ], "sigc078": [ - "Make sure you shoot while you're kicking to get the combo." + "Assegura't de disparar mentre estàs fent puntades per aconseguir el combo." ], "sigc079": [ - "Give it another shot." + "Doneu-li un altre cop." ], "sigc080": [ - "Now that's a Wastelander move!", - "They won't know what hit 'em!" + "Ara això és un moviment de Wastelander!", + "No sabran què els va colpejar!" ], "sigc081": [ - "Think you can handle the Blaster course?" + "Creus que pots gestionar el curs Blaster?" ], "sigf001": [ - "You wasted 'em all! I'm still not sure why combat Metal Heads", - "are scouting this close to the city. To be honest,", - "I wasn't sure you could handle this gig, nice work!" + "Els has desaprofitat tots! Encara no estic segur per què combatre Metal Heads", + "estan explorant tan a prop de la ciutat. Per ser sincer,", + "No estava segur que poguéssiu suportar aquest concert, bona feina!" ], "sigt003": [ - "Here we go!" + "Aqui venim!" ], "sigt004": [ - "Follow me!" + "Segueix-me!" ], "sigt005": [ - "Get behind me while I toast that tank." + "Posa't darrere meu mentre brindo aquest tanc." ], "sigt006": [ - "Hurry up kid, I don't have all day!" + "Afanya't nen, no tinc tot el dia!" ], "sigt007": [ - "This way!" + "Per aquí!" ], "sigt008": [ - "Toast those bad boys up ahead." + "Brindis davant aquests nois dolents." ], "sigt009": [ - "Quick! Drop the bridge!" + "Ràpid! Deixeu el pont!" ], "sigt010": [ - "Jump up and grab the bridge to bring it down." + "Salta amunt i agafa el pont per fer-lo caure." ], "sigt011": [ - "Let's get across the bridge before they come back." + "Creuem el pont abans que tornin." ], "sigt012": [ - "There's our first target, keep the other creatures back", - "while I charge up the Peacemaker." + "Aquí tenim el nostre primer objectiu, mantenir les altres criatures enrere", + "mentre carrego el pacificador." ], "sigt013": [ - "That's one fried Metal Head." + "Això és un cap de metall fregit." ], "sigt014": [ - "Let's get to the next target." + "Anem al següent objectiu." ], "sigt015": [ - "With Metal Heads I say shoot first, ask questions later." + "Amb Metal Heads dic primer disparar, després fer preguntes." ], "sigt017": [ - "Stay with me!" + "Queda't amb mi!" ], "sigt019": [ - "Waste the suckers!" + "Desaprofiteu els xucladors!" ], "sigt020": [ - "Great, kid, great! Don't get cocky." + "Genial, nen, genial! No et facis arrogant." ], "sigt021": [ - "There's the second scumbag, sittin' pretty." + "Hi ha el segon canalla, assegut bonic." ], "sigt022": [ - "Cover me!" + "Cobreix-me!" ], "sigt023": [ - "Boom, baby! One less Metal Head to think about." + "Bum, nena! Un cap de metall menys per pensar." ], "sigt024": [ - "Next target." + "Següent objectiu." ], "sigt025": [ - "Watch my six, while I toast this bad boy.", - "The trick is to not hit the pipes." + "Mireu els meus sis, mentre brindo per aquest noi dolent.", + "El truc és no colpejar les canonades." ], "sigt026": [ - "Now that's what I call blowing someone's mind." + "Ara això és el que jo anomeno volar la ment d'algú." ], "sigt027": [ - "Gotta thread the needle this time." + "Cal enfilar l'agulla aquesta vegada." ], "sigt028": [ - "Hahaha, Metal Head flambé." + "Hahaha, Cap de metall flamejat." ], "sigt029": [ - "Look out! We've got company!" + "Estar atent! Tenim companyia!" ], "sigt030": [ - "Damn! My gun's jammed, take over!" + "Maleïda! La meva pistola està bloquejada, agafa el relleu!" ], "sigt031": [ - "Get 'em while I fix my gun!" + "Agafa'ls mentre arreglo la meva pistola!" ], "sigt032": [ - "Okay, the Peacemaker is back online. Let's move!" + "D'acord, el Peacemaker torna a estar en línia. Movem-nos!" ], "sigt033": [ - "Last target, then we go home." + "Últim objectiu, després tornem a casa." ], "sigt036": [ - "Here comes trouble." + "Aquí vénen problemes." ], "sigt037": [ - "Did ya miss me?" + "Em trobaves a faltar?" ], "sigt038": [ - "Say \"good night,\" baby." + "Digues \"bona nit\", bebè." ], "sigt039": [ - "Thanks for covering my butt, that was close!" + "Gràcies per tapar-me el cul, estava a prop!" ], "sigt043": [ - "Stay with me!" + "Queda't amb mi!" ], "sigt044": [ - "Stay close or we'll both be dead!" + "Estigueu a prop o morirem tots dos!" ], "sigt045": [ - "Get over here and stay close!" + "Vine aquí i estigues a prop!" ], "sigt046": [ - "You wanna play, huh?" + "Vols jugar, eh?" ], "sigt047": [ - "Oh, you got games?" + "Oh, tens jocs?" ], "sigt049": [ - "You cherries can't handle this mission, we're through!" + "Les cireres no podeu fer front a aquesta missió, hem acabat!" ], "sigt052": [ - "I don't work with amateurs!" + "No treballo amb aficionats!" ], "sigt053": [ - "You're more trouble than you're worth!" + "Ets més problemes del que vals!" ], "sigt054": [ - "Come back when you're serious!" + "Torna quan parles seriosament!" ], "sigt056": [ - "You want some of this?!" + "Vols una mica d'això?!" ], "sigt057": [ - "Drop that lift-cap while I hold them off." + "Deixeu caure aquest tap mentre els aguanto." ], "sigt058": [ - "Take 'em all out!" + "Treu-los tots!" ], "sigt059": [ - "Great, no time to celebrate." + "Genial, no hi ha temps per celebrar-ho." ], "sigt060": [ - "If I can't shoot it, it's someone else's problem.", - "You do something with those blocks." + "Si no el puc disparar, és un problema d'una altra persona.", + "Feu alguna cosa amb aquests blocs." ], "sigt061": [ - "You gotta figure out the blocks, man." + "Has d'esbrinar els blocs, home." ], "sigt062": [ - "Did you hear something?" + "Has sentit alguna cosa?" ], "sigt063": [ - "That's one big ugly Metal Head." + "Aquest és un gran cap de metall lleig." ], "sigt064": [ - "Shootin' this one's only going to get it mad, run!" + "Disparar a aquest només l'enfadarà, corre!" ], "sigt065": [ - "See ya on the flipside!" + "Ens veiem al revés!" ], "sigt066": [ - "Gone with the wind." + "El vent s'ho ha endut." ], "sigt067": [ - "Later alligator." + "Més tard caiman." ], "sigt068": [ - "I think that's the last we'll see of him." + "Crec que és l'últim que el veurem." ], "sigt069": [ - "You figure this out, I'll cover your butt." + "Entenguis això, et taparé el cul." ], "sigt070": [ - "This is your gig, baby. Solve it, so we can go home." + "Aquest és el teu concert, nena. Solucioneu-ho, així ens tornem a casa." ], "sigt071": [ - "Great, here comes that bad boy again. Move!" + "Genial, aquí torna aquell noi dolent. Mou-te!" ], "sigt072": [ - "Run!" + "Correr!" ], "sigt073": [ - "Go, go, go!" + "Anem anem anem!" ], "sigt074": [ - "He's gaining!" + "Està guanyant!" ], "sigt075": [ - "Keep moving!" + "Segueix movent-te!" ], "sigt076": [ - "Faster!" + "Més ràpid!" ], "sigt077": [ - "It's gonna be close!" + "Estarà a prop!" ], "sigt078": [ - "Move your butts!" + "Mou els culs!" ], "sigt082": [ - "Buddy, you don't wanna piss me off." + "Amic, no em vols enfadar." ], "sigt083": [ - "You got a death wish?!" + "Tens un desig de mort?!" ], "sigt087": [ - "Have a little pain right back!" + "Teniu una mica de dolor a l'esquena!" ], "sigt089": [ - "Never trust a rookie." + "No confieu mai en un principiant." ], "sigt090": [ - "We're finished until you guys get serious." + "Hem acabat fins que us poseu seriosament." ], "sigt091": [ - "This mission is obviously out of your league." + "Òbviament, aquesta missió està fora de la seva lliga." ], "sigt092": [ - "You're wasting my time, this mission is over." + "M'estàs perdent el temps, aquesta missió s'ha acabat." ], "sigt093": [ - "Uhh... ugh...." + "Uhh... uf...." ], "sigt100": [ - "Rage before beauty, buddy." + "La ràbia abans que la bellesa, company." ], "sigt101": [ - "Let's move!" + "Movem-nos!" ], "sigt102": [ - "I love the smell of burning metal!" + "M'encanta l'olor del metall cremat!" ], "sigt103": [ - "Just a walk in the park." + "Només un passeig pel parc." ], "sigt104": [ - "Follow me!" + "Segueix-me!" ], "sigt105": [ - "Let's go!" + "Som-hi!" ], "sigt106": [ - "This way!" + "Per aquí!" ], "sigt107": [ - "Over here!" + "Per aquí!" ], "sigt108": [ - "Rollin' baby!" + "Rolling baby!" ], "sigt109": [ - "Blow 'em a kiss of death." + "Feu-los un petó de la mort." ], "sigt110": [ - "I love dead-heads!" + "M'encanten els caps morts!" ], "sigt111": [ - "Kiss your shiny butt goodbye!" + "Fes un petó al teu cul brillant adéu!" ], "sigt112": [ - "Born to kill baby!" + "Nascut per matar un nadó!" ], "sigt113": [ - "Two to the chest, one to the head." + "Dos al pit, un al cap." ], "spot004": [ - "Come out and cheer for me as I destroy the competition once again on the track.", - "This year's racing final will be to die for, I guarantee more thrills and more spills.", - "This time I want blood!...Bring the kids." + "Veniu a animar-me mentre destrueixo la competició una vegada més a la pista.", + "La final de curses d'enguany serà per morir-se, us garanteixo més emocions i més vessars.", + "Aquesta vegada vull sang!...Porteu els nens." ], "tess001": [ - "Hey, guys! This is Tess. Before Krew left, I saw him hide", - "something in the game machine here. Knowing Krew,", - "it's probably something valuable.", - "You might wanna come check it out." + "Hola nois! Aquesta és la Tess. Abans que en Krew marxés, el vaig veure amagar-se", + "alguna cosa a la màquina de joc aquí. Coneixent a Krew,", + "probablement sigui una cosa valuosa.", + "Potser vols venir a comprovar-ho." ], "tor001": [ - "The operation was a success. All Underground members are safe.", - "Come back to the hideout, I have a new mission for you while we wait for this alert to blow over." + "L'operació va ser un èxit. Tots els membres de Underground estan segurs.", + "Torna a l'amagatall, tinc una nova missió per a tu mentre esperem que passi aquesta alerta." ], "tor002": [ - "That should take some heat off the streets. Good work, I couldn't have done it better myself." + "Això hauria de treure una mica de calor als carrers. Bona feina, jo mateix no ho hauria pogut fer millor." ], "tor003": [ - "That's it, Jak, you're up! Try not to trigger any alarms, the garrison guards will be tough.", - "Get to the prison cell block and find the prisoners. Once there, we'll turn on the Warp Gate inside to get you all back out. Good luck." + "Això és tot, Jak, estàs aixecat! Intenta no activar cap alarma, els guàrdies de la guarnició seran durs.", + "Arriba al bloc de cel·les de la presó i troba els presoners. Un cop allà, encendrem la Warp Gate per dins per tornar-vos a sortir. Bona sort." ], "tor004": [ - "Ok, my old access codes should help Vin turn off the magnetic seal for the Fortress door." + "D'acord, els meus codis d'accés antics haurien d'ajudar a Vin a apagar el segell magnètic de la porta de la fortalesa." ], "tor005": [ - "Jak, this is Torn, the city is under Metal Head attack. There's a large force moving toward the city wall from the ocean.", - "We need people manning the tower gunpods to stop that assault. Meet me at the seaside ocean wall in the Port, hurry!", - "We need every man we can get!" + "Jak, aquest és Torn, la ciutat està sota atac de Metal Head. Hi ha una gran força que es mou cap a la muralla de la ciutat des de l'oceà.", + "Necessitem gent que s'encarrega de les pistoles de la torre per aturar aquest assalt. Trobeu-me a la paret marítima del Port, afanyeu-vos!", + "Necessitem tots els homes que puguem aconseguir!" ], "tor007": [ - "Jak, it's a guard roadblock, get out of there!" + "Jak, és un bloqueig de guàrdia, surt d'allà!" ], "tor008": [ - "They've set up a roadblock, they're onto you!" + "Han establert un bloqueig, us enganyen!" ], "torn024": [ - "More coming in!" + "Arriben més!" ], "tswm001": [ - "You can do it, Daxter!" + "Pots fer-ho, Daxter!" ], "tswm002": [ - "Keep going, Daxter." + "Segueix així, Daxter." ], "tswm003": [ - "Go, go, go!" + "Anem anem anem!" ], "tswm004": [ - "Wow! What an animal!" + "Vaja! Quin animal!" ], "tswm005": [ - "You got it!" + "Ho tens!" ], "tswm006": [ - "Nice slam!" + "Bon slam!" ], "tswm007": [ - "Ooh ho ho, baby!" + "Ooh ho ho, nena!" ], "tswm008": [ - "Great shot, Daxter!" + "Gran tret, Daxter!" ], "tswm009": [ - "You're almost there!" + "Gairebé hi ets!" ], "tswm010": [ - "You can win, baby!" + "Pots guanyar, nena!" ], "tswm011": [ - "My hero!" + "El meu heroi!" ], "tswm012": [ - "Look at him go!" + "Mira'l va!" ], "tswm013": [ - "You ARE Orange Lightning!" + "Ets Orange Lightning!" ], "tswm014": [ - "Just a few more!" + "Només uns quants més!" ], "tswm015": [ - "Hit him again!" + "Torna'l a colpejar!" ], "tswm016": [ - "Yes!" + "Sí!" ], "tswm017": [ - "That's my naughty ottsel!" + "Aquest és el meu ottsel entremaliat!" ], "tswm018": [ "Oh!" ], "tswm019": [ - "That wasn't good." + "Això no va ser bo." ], "tswm020": [ - "Don't hit the red ones!" + "No pegueu als vermells!" ], "tswm021": [ "Ooh!" ], "tswm022": [ - "That took points away!" + "Això va treure punts!" ], "tswm023": [ - "You did it!" + "Ho vas fer!" ], "tswm024": [ - "Daxter, you won!" + "Daxter, has guanyat!" ], "tswm025": [ - "Yes! You're the man! I mean... the animal." + "Sí! Tu ets l'home! Vull dir... l'animal." ], "tswm026": [ - "You beat the game, Daxter!" + "Has superat el joc, Daxter!" ], "tswm027": [ - "Where'd you learn to pound like that?" + "On vas aprendre a colpejar així?" ], "tswm028": [ - "That was amazing!" + "Això va ser increïble!" ], "tswm029": [ - "Pretty good for a little furball." + "Molt bo per a una mica de bola de pell." ], "tswm030": [ - "Ooh... Not enough points!" + "Oh... No hi ha prou punts!" ], "tswm031": [ - "No! You lost..." + "No! Has perdut..." ], "tswm032": [ - "Awww... You lost again!" + "Awww... Has tornat a perdre!" ], "tswm033": [ - "So close!" + "Tan a prop!" ], "tswm034": [ - "One more time." + "Una altra vegada." ], "tswm035": [ - "You can do it!" + "Tu ho pots fer!" ], "tswm036": [ - "You have to try again!" + "Has de tornar-ho a provar!" ], "tswm037": [ - "You have to beat the game, Daxter." + "Has de superar el joc, Daxter." ], "tswm038": [ - "Try again!" + "Torna-ho a provar!" ], "tswm039": [ - "Ah! That was a bad one!" + "Ah! Això va ser dolent!" ], "tswm040": [ - "Don't hit the bad ones, Daxter." + "No pegues als dolents, Daxter." ], "tswm041": [ - "You hit a bad Metal Head." + "Has colpejat un mal cap de metall." ], "tswm042": [ - "Not again!" + "No un altre cop!" ], "tswm043": [ "Oh no!" ], "tswm044": [ - "Daxter..! You need more points!" + "Daxter..! Necessites més punts!" ], "tswm045": [ - "Keep going...!" + "Segueix així...!" ], "tswm046": [ - "Oh, Daxter... did you get your whiskers singed?" + "Oh, Daxter... t'has cantat els bigotis?" ], "tswm047": [ - "You're gonna score!" + "Vas a marcar!" ], "tswm048": [ - "You're almost there...!" + "Gairebé hi ets...!" ], "tswm049": [ - "Just a few more!" + "Només uns quants més!" ], "tswm050": [ - "We have a winner!" + "Tenim un guanyador!" ], "tswm051": [ - "Oh! That was a bad one." + "Oh! Això va ser dolent." ], "tswm052": [ - "Don't hit the bad ones, Daxter." + "No pegues als dolents, Daxter." ], "tswm053": [ - "Daxter, you hit a bad Metal Head!" + "Daxter, has colpejat un mal cap de metall!" ], "tswm054": [ - "Daxter, you won!!" + "Daxter, has guanyat!!" ], "tswm055": [ - "You did it, fur boy!" + "Ho has fet, noi de pell!" ], "tswm056": [ - "Yes!! You beat the game!" + "Sí!! Has guanyat el joc!" ], "tswm057": [ - "I knew you could do it." + "Sabia que ho podries fer." ], "vin002": [ - "Okay, the B-Zone Power Grid is back online.", - "Have fun being killed in the Palace." + "D'acord, la xarxa elèctrica de la zona B torna a estar en línia.", + "Diverteix-te sent assassinat al Palau." ], "vin003": [ - "You destroyed the last of the Metal Head eggs!", - "That should give us a little more eco for the city.", - "Good work!" + "Has destruït l'últim dels ous de Metal Head!", + "Això ens hauria de donar una mica més d'eco per a la ciutat.", + "Bon treball!" ], "vin004": [ - "You still haven't gotten all the Metal Head eggs!", - "Make sure you get 'em all, or I'm gonna have", - "a nervous breakdown!" + "Encara no has aconseguit tots els ous de Metal Head!", + "Assegura't de tenir-los tots, o ho tindré", + "una crisi de nervis!" ], "vin011": [ - "Thank goodness you blew up those wells.", - "I sure don't want any more Metal Heads coming around here.", - "Good work, boys! I owe ya one." + "Gràcies a Déu que has volat aquests pous.", + "Segur que no vull més caps de metall que vinguin per aquí.", + "Bona feina, nois! Et dec una." ], "vin012": [ - "Good work, guys! The fewer Metal Head eggs", - "we allow to hatch, the fewer of those nasty monsters", - "we'll have to fight!" + "Bona feina, nois! Menys ous de Metal Head", + "deixem eclosionar, com menys d'aquests monstres desagradables", + "haurem de lluitar!" ], "vin013": [ - "Jak... Kor...", - "Construction... Site...", - "Ngh..." + "Com... Kor...", + "Lloc de construcció...", + "..." ], "vin014": [ - "Once again you guys have saved my butt!", - "Maybe now I'll get a raise. Or a long vacation.", - "God knows I could use one. Thanks for the help!" + "Un cop més, m'heu salvat el cul!", + "Potser ara obtindré un augment. O unes llargues vacances.", + "Déu sap que en podria fer servir un. Gràcies per l'ajuda!" ], "vin015": [ - "The shield wall is down! I repeat - the shield wall is down!", - "Sabotage! Kor did it!", - "I knew Metal Heads would be the end of me!", - "OH NO! Metal Heads are at the door!!", - "They're breaking through!!", - "Too many of them!! Jak!!! AHHHH!!!" + "La paret de l'escut ha caigut! Repeteixo: la paret de l'escut ha caigut!", + "Sabotatge! Kor ho va fer!", + "Sabia que Metal Heads seria el meu final!", + "OH NO! Els caps de metall són a la porta!!", + "S'estan trencant!!", + "Massa d'ells!! Jak!!! AHHHH!!!" ], "ys001": [ - "Excellent work, boys! Come on back to the Hideout,", - "I have another task for you." + "Excel·lent feina, nois! Torna a l'amagatall,", + "Tinc una altra tasca per a tu." ], "ys002": [ - "Nice shooting, my boy!", - "Good work, Jak!", - "We'll all sleep a little easier tonight." + "Bonic tiroteig, fill meu!", + "Bona feina, Jak!", + "Tots dormirem una mica més fàcil aquesta nit." ] }, "speakers": { "agent": "Agent", "ashelin": "Ashelin", - "baron": "Baron Praxis", - "brutter": "Brutter", - "citizen-female": "Citizen", - "citizen-male": "Citizen", - "computer": "Computer", - "darkjak": "Dark Jak", + "baron": "Baró Praxis", + "brutter": "Trencat", + "citizen-female": "Ciutadà", + "citizen-male": "Ciutadà", + "computer": "Ordinador", + "darkjak": "Jak fosc", "daxter": "Daxter", "errol": "Erol", "grim": "Grim", - "guard": "Krimzon Guard", - "guard-a": "Guard A", - "guard-b": "Guard B", - "jak": "Jak", + "guard": "Guàrdia Krimzon", + "guard-a": "Guàrdia A", + "guard-b": "Guàrdia B", + "jak": "Com", "jinx": "Jinx", "keira": "Keira", - "keira-before-class-3": "Mechanic", - "kid": "Kid", + "keira-before-class-3": "Mecànic", + "kid": "Nen", "kor": "Kor", - "krew": "Krew", + "krew": "Sang", "metalkor": "Metal Kor", + "metalkor-before-consite": "Cap de metall líder", + "metalkor-intro": "???", "mog": "Mog", - "onin": "Onin", + "onin": "Un", "oracle": "Oracle", "pecker": "Pecker", "precursor": "Precursor", "samos": "Samos", - "sig": "Sig", + "sig": "Digues", "tess": "Tess", - "torn": "Torn", + "torn": "Esquinçat", "vin": "Vin", - "youngsamos": "Young Samos", + "youngsamos": "Jove Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_da-DK.json b/game/assets/jak2/subtitle/subtitle_lines_da-DK.json index 3cdb9ca5da..812ea60c33 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_da-DK.json +++ b/game/assets/jak2/subtitle/subtitle_lines_da-DK.json @@ -13,7 +13,7 @@ "DSbop004": [ "Ooh, Det er en høj afsats!", "Prøv at hoppe én gang, og så hop igen mens du er i luften", - "for at nå derop." + "at nå dertil." ], "DSbop005": [ "Godt gået, se? Du har det stadigvæk!" @@ -27,7 +27,7 @@ "Det er en slags stor by!" ], "DSbop008": [ - "Det er et barskt sted, Jak. Du HUSKER vel", + "Det er et barsk sted, Jak. Du husker", "hvordan man slås, ik? Prøv at smadre den kasse med et spark" ], "DSbop009": [ @@ -61,10 +61,10 @@ "Se dig for!" ], "agnt004": [ - "Whoa whoa whoa whoa!" + "hov hov hov!" ], "agnt005": [ - "Whoa!" + "Hov!" ], "agnt006": [ "Du er sindsyg!" @@ -157,13 +157,13 @@ "Drej, DREJ!" ], "agnt036": [ - "God finte." + "Godt trick." ], "agnt037": [ - "Død til Baronen!" + "Død over baronen!" ], "agnt038": [ - "Tak Mar at i er her, Krimzon-gardister er over det hele!" + "Tak Mar for at være her, Krimzon-vagterne er overalt!" ], "agnt039": [ "Det er på tide, lad os komme væk herfra!" @@ -280,109 +280,109 @@ "Skynd dig, mand!" ], "agnt077": [ - "I ain't riding on the back, pick up a two-seater!" + "Jeg kører ikke på ryggen, tag en to-sædet!" ], "agnt078": [ - "Get a bigger vehicle." + "Få et større køretøj." ], "agnt079": [ - "They're onto us!" + "De er på os!" ], "agnt080": [ - "We're being followed!" + "Vi bliver fulgt!" ], "agnt081": [ - "We're taking a beating!" + "Vi får tæsk!" ], "agnt082": [ - "We can't take much more of that." + "Vi kan ikke tage meget mere af det." ], "agnt083": [ - "You trying to die?" + "Prøver du at dø?" ], "agnt084": [ - "Where'd Torn find you?" + "Hvor fandt Torn dig?" ], "agnt085": [ - "You sure you're on our side?" + "Er du sikker på, at du er på vores side?" ], "agnt086": [ - "Turn, TURN!" + "Vend, VEND!" ], "agnt087": [ - "Good move!" + "Godt træk!" ], "agnt088": [ - "Death to the Baron!" + "Død over baronen!" ], "agnt089": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Tak Mar, du er her, Krimzon-vagterne er overalt!" ], "agnt090": [ - "It's about time, let's get out of here!" + "Det er på tide, lad os komme væk herfra!" ], "agnt091": [ - "Good, just in time, GO, GO, GO!" + "Godt, lige i tide, GÅ, GÅ, GÅ!" ], "agnt092": [ - "Finally, we need to move!" + "Endelig skal vi flytte!" ], "agnt093": [ - "Man, I was beginning to think you wouldn't show up." + "Mand, jeg begyndte at tro, at du ikke ville dukke op." ], "agnt094": [ - "Not a moment too soon, let's fly!" + "Ikke et øjeblik for tidligt, lad os flyve!" ], "agnt095": [ - "Get me to my new safehouse, quickly!" + "Få mig til mit nye safehouse, hurtigt!" ], "agnt096": [ - "Thanks, good luck!" + "Tak, held og lykke!" ], "agnt097": [ - "Good driving, go save the rest of our guys." + "Godt kørende, red resten af ​​vores fyre." ], "agnt098": [ - "OK, I'm out of here!" + "OK, jeg er ude herfra!" ], "agnt099": [ - "See ya at the next meeting!" + "Vi ses til næste møde!" ], "agnt100": [ - "Thanks, you're a life-saver." + "Tak, du er en livredder." ], "agnt101": [ - "This is where I get off." + "Det er her jeg står af." ], "agnt102": [ - "I'm glad you're on our side." + "Jeg er glad for, at du er på vores side." ], "agnt103": [ - "Look out!" + "Pas på!" ], "agnt104": [ - "Hey!" + "Hej!" ], "agnt105": [ - "Augh!" + "Av!" ], "agnt106": [ - "Come on man, you trying to kill me!?" + "Kom nu mand, prøver du at dræbe mig!?" ], "agnt107": [ - "Take it easy!" + "Tag det roligt!" ], "agnt108": [ - "Ughh!" + "Åh!" ], "agnt109": [ - "Ughh!" + "Åh!" ], "agnt110": [ "Ahhh!" ], "agnt111": [ - "Oof!" + "Øv!" ], "agnt112": [ "Ah!" @@ -391,197 +391,197 @@ "Ahh!" ], "agnt114": [ - "Oof!" + "Øv!" ], "agnt115": [ - "Okay, buddy, move!" + "Okay, ven, flyt!" ], "agnt116": [ - "Look out!" + "Pas på!" ], "agnt117": [ - "Keep your eyes on the road!" + "Hold øjnene på vejen!" ], "agnt118": [ - "Watch it!" + "Se det!" ], "agnt119": [ - "Thanks for the lift." + "Tak for løftet." ], "agnt120": [ - "See ya at the next meeting." + "Vi ses til næste møde." ], "agnt121": [ - "Right, let's go!" + "Okay, lad os gå!" ], "agnt122": [ - "Drive, man, drive!" + "Kør, mand, kør!" ], "agnt123": [ - "That was close!" + "Det var tæt på!" ], "agnt124": [ - "You sure you know what you're doing?" + "Er du sikker på, at du ved, hvad du laver?" ], "agnt125": [ - "Ok, thanks, good luck." + "Ok, tak, held og lykke." ], "agnt126": [ - "Great, let's go." + "Godt, lad os gå." ], "agnt127": [ - "Drive, man, drive!" + "Kør, mand, kør!" ], "agnt128": [ - "That was close!" + "Det var tæt på!" ], "agnt129": [ - "You sure you know what you're doing?" + "Er du sikker på, at du ved, hvad du laver?" ], "agnt130": [ - "OK, thanks, good luck!" + "OK, tak, held og lykke!" ], "agnt131": [ - "What took you so long?" + "Hvad tog dig så lang tid?" ], "agnt132": [ - "Move like you got a purpose, man!" + "Bevæg dig som om du har et formål, mand!" ], "agnt133": [ - "GO, GO, the KG are onto us!" + "GO, GO, KG er på os!" ], "agnt134": [ - "Stay sharp, we're almost there!" + "Hold dig skarp, vi er der næsten!" ], "agnt135": [ - "Good, you did well, I'll tell the Shadow we're safe!" + "Godt, du gjorde det godt, jeg vil fortælle skyggen, at vi er i sikkerhed!" ], "asha001": [ - "Payback's a bitch, and I'm it." + "Payback er en tæve, og jeg er det." ], "asha002": [ - "Watch your ass, I'm only woman on the outside." + "Pas på din røv, jeg er kun kvinde udenpå." ], "asha003": [ - "Let me knock you down to size...", - "Not that you have any." + "Lad mig slå dig ned i størrelse...", + "Ikke at du har nogen." ], "asha004": [ - "Small guns don't get me going." + "Små våben får mig ikke i gang." ], "asha005": [ - "That's a tiny gun..." + "Det er en lille pistol..." ], "asha006": [ - "You don't know who you're dealing with." + "Du ved ikke, hvem du har med at gøre." ], "asha007": [ - "I never said you could touch me there." + "Jeg har aldrig sagt, du kunne røre mig der." ], "asha008": [ - "Take that!" + "Tag den!" ], "asha009": [ - "Here's some." + "Her er nogle." ], "asha010": [ - "Ready for another?" + "Klar til en anden?" ], "asha011": [ - "How's that feel?" + "Hvordan føles det?" ], "asha012": [ - "Seems like it hurts." + "Det virker som om det gør ondt." ], "asha013": [ - "Oh, that hurt." + "Åh, det gjorde ondt." ], "asha014": [ - "Ugh!" + "Åh!" ], "asha015": [ - "Ough!" + "Dybt!" ], "asha016": [ "Ah!" ], "asha017": [ - "Agh!" + "Åh!" ], "asha018": [ - "Hit me again and you'll lose something really valuable!" + "Slå mig igen, og du vil miste noget virkelig værdifuldt!" ], "asha019": [ - "Not smart!" + "Ikke smart!" ], "asha020": [ - "Listen, buddy, whose side are you on?" + "Hør, kammerat, hvis side er du på?" ], "asha021": [ - "Don't make me hurt you." + "Få mig ikke til at såre dig." ], "asha022": [ - "Do that again and I'll put you down." + "Gør det igen, så slår jeg dig ned." ], "asha023": [ - "Learn to control your gun, buddy." + "Lær at styre din pistol, kammerat." ], "asha024": [ - "Where'd you learn to fight?" + "Hvor lærte du at kæmpe?" ], "asha025": [ - "Check your targets, mister." + "Tjek dine mål, mister." ], "asha026": [ - "Don't do that again." + "Gør det ikke igen." ], "asha027": [ - "Maybe I should be behind you." + "Måske skulle jeg stå bag dig." ], "asha028": [ - "I won't take that!" + "Det vil jeg ikke tage!" ], "asha029": [ - "Another one like that and you'll be singing soprano." + "En anden sådan, og du vil synge sopran." ], "asha030": [ - "Have some back." + "Få noget tilbage." ], "asha031": [ - "Don't do that again!" + "Gør det ikke igen!" ], "asha032": [ - "Nice shooting." + "Flot skydning." ], "asha033": [ - "Good shooting, blue boy." + "Godt skud, blå dreng." ], "asha034": [ - "Good work." + "Godt arbejde." ], "asha035": [ - "Take 'em all down!" + "Tag dem alle ned!" ], "asha036": [ - "Let's get 'em!" + "Lad os få dem!" ], "asha037": [ - "Here they come!" + "Her kommer de!" ], "asha038": [ - "I need some help!" + "Jeg har brug for hjælp!" ], "asha039": [ - "Man, there are a lot of 'em!" + "Mand, dem er der mange af!" ], "asha040": [ - "Flere kommer." + "Mere på vej." ], "asha041": [ "Jeg fik ham." ], "asha042": [ - "Mere ildkraft!" + "Blot billedsprog!" ], "asha043": [ "En mere nede!" @@ -620,13 +620,13 @@ "Få dem alle!" ], "asha055": [ - "Ugh..." + "Øhh..." ], "asha056": [ "Hm-argh..." ], "asha057": [ - "Hah... argh..." + "Hah... Argh..." ], "asht002": [ "Du havde ret, Jak. Det min far gør er forkert.", @@ -671,42 +671,42 @@ "Du er stadig en smule sky. Prøv igen." ], "bb02int": [ - "We'd like to see you prove your driving skills. Take on", - "another Ring Challenge, let's see what you've got." + "Vi vil gerne se dig bevise dine køreevner. Tag på", + "endnu en Ring-udfordring, lad os se, hvad du har." ], "bb02win": [ - "Not bad. You could be my getaway driver any time." + "Ikke dårligt. Du kan være min flugtchauffør når som helst." ], "bb03fail": [ - "I knew this one would prove too much for ya. Keep practicing." + "Jeg vidste, at denne ville vise sig for meget for dig. Fortsæt med at øve dig." ], "bb03int": [ - "The next Ring Challenge will separate the men from the boys.", - "Let's see if you can handle it." + "Den næste Ring Challenge vil adskille mændene fra drengene.", + "Lad os se om du kan klare det." ], "bb03win": [ - "Very nice driving. I'm starting to think you could really", - "help us, Jak." + "Meget flot kørsel. Jeg begynder at tro, at du virkelig kunne", + "hjælp os, Jak." ], "bb04fail": [ - "Too bad, I kinda hoped you could do this. Keep trying." + "Ærgerligt, jeg håbede lidt du kunne gøre dette. Bliv ved med at prøve." ], "bb04int": [ - "Torn here. I don't even know why I'm lettin' you try this", - "Ring Challenge, never beat it myself. I guess I'm morbidly", - "curious. Beat this one and you'll be the best driver", - "the Underground's ever had." + "Revet her. Jeg ved ikke engang hvorfor jeg lader dig prøve det her", + "Ring Challenge, slå den aldrig selv. Jeg er vist sygelig", + "nysgerrig. Slå denne, og du vil være den bedste chauffør", + "Undergrunden nogensinde har haft." ], "bb04win": [ - "Very nice, Jak! You're the best driver we've ever had." + "Meget flot, Jak! Du er den bedste chauffør, vi nogensinde har haft." ], "bb05fail": [ - "You didn't get all the Bomb Bots, Jak!" + "Du fik ikke alle bombebotterne, Jak!" ], "bb05int": [ - "Jak, reports say more bomb bots are roaming the city.", - "They're a dangerous menace, and I need you to locate", - "and destroy each one before they hurt our interests." + "Jak, rapporter siger, at flere bomberobotter strejfer rundt i byen.", + "De er en farlig trussel, og jeg skal have dig til at finde", + "og ødelægge hver enkelt, før de skader vores interesser." ], "bb05win": [ "Godt arbejde! Det burde gøre et hak i Baronens krigsbudget." @@ -772,271 +772,271 @@ ], "bb11int": [ "Jak, jeg har brug for dig til at tage en pakke Eco", - "over to the power station. Get there quickly or the contents", - "will be useless to Vin." + "over til kraftværket. Kom hurtigt dertil eller indholdet", + "vil være ubrugelig for Vin." ], "bb11win": [ - "Nice driving, Jak." + "Godt kørt, Jak." ], "bb12fail": [ - "You didn't push it hard enough, newbie. Try again." + "Du pressede det ikke hårdt nok, nybegynder. Prøv igen." ], "bb12int": [ - "This is Torn, we've got another package delivery", - "for the Stadium. Make it quick!" + "Det her er Torn, vi har endnu en pakkelevering", + "til Stadion. Gør det hurtigt!" ], "bb12win": [ - "Not bad driving. You really oughta race", - "in the city championship." + "Ikke dårlig kørsel. Du burde virkelig race", + "i bymesterskabet." ], "bb13fail": [ - "You gotta work on your speed, man." + "Du skal arbejde på din hastighed, mand." ], "bb13int": [ - "I need you to take a valuable item over to Onin.", - "You won't be able to drive the whole way,", - "but you still have to move fast. Good luck." + "Jeg har brug for, at du tager en værdifuld genstand over til Onin.", + "Du vil ikke være i stand til at køre hele vejen,", + "men du skal stadig bevæge dig hurtigt. Held og lykke." ], "bb13win": [ - "That's the way to get it done, good work." + "Det er måden at få det gjort, godt arbejde." ], "bb14fail": [ - "Too late, Jak! The agent is calling it off.", - "You need to reach it faster!" + "For sent, Jak! Agenten aflyser det.", + "Du skal nå det hurtigere!" ], "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." + "Jak, vi har en agent, der venter på en pakkelevering.", + "Vagtspioner holder øje med denne fyr,", + "så hvis du ikke kommer hurtigt til ham, bliver han arresteret.", + "Tag pakken til ham, før det er for sent." ], "bb14win": [ - "Nice work, the delivery was a success. I like your style, Jak." + "Flot arbejde, leveringen var en succes. Jeg kan godt lide din stil, Jak." ], "bb15fail": [ - "You screwed up, Jak! You didn't get it to the safe zone", - "as we asked." + "Du forkludrede, Jak! Du fik det ikke til den sikre zone", + "som vi spurgte." ], "bb15farr": [ - "Get off the bike and get clear, Jak!!" + "Stå af cyklen og kom fri, Jak!!" ], "bb15int": [ - "Jak, we found a bomb in the Slums", - "that was meant for the Shadow.", - "I need you to pick it up and take it out to the Farm Area", - "where we've marked a safe zone where it can explode.", - "Go quickly." + "Jak, vi fandt en bombe i slumkvarteret", + "det var beregnet til Skyggen.", + "Jeg har brug for, at du samler den op og tager den med ud til gårdområdet", + "hvor vi har markeret en sikker zone, hvor den kan eksplodere.", + "Gå hurtigt." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "Det var fantastisk arbejde, Jak! Tak, det mener jeg virkelig." ], "bb16fail": [ - "You didn't take out enough guards!", - "We need to hit them harder!" + "Du tog ikke nok vagter ud!", + "Vi er nødt til at ramme dem hårdere!" ], "bb16int": [ - "Jak, this is Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "inflict real damage on our enemies." + "Jak, det her er Torn.", + "Erols elite personlige vagt bevæger sig gennem byen.", + "Vi er nødt til at ramme dem og slå dem hårdt! Tag nok ud", + "vagter, før jeg må aflyse missionen.", + "Få for få vagter, så har vi forpasset en mulighed", + "påføre vores fjender reel skade." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Fantastisk hit 'n' run, Jak! Det sender en besked til Erol." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Det ser ud til, at den ting er for svær at bruge. Vi går forbi for nu." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "Vi evaluerer det nye JET-Board til brug i Underground", + "missioner. Vi har hørt, du er ret god til den ting,", + "vis os, hvad den kan. Få nok point med", + "dommer-bot, og vi vil overveje at tilføje det til vores arsenal." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", - "Good work." + "Wow! Du kan virkelig rive betonen op med den baby!", + "Godt arbejde." ], "bb18fail": [ - "I'm still not sure the JET-Board's that useful." + "Jeg er stadig ikke sikker på, at JET-boardet er så nyttigt." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Her er endnu et godt sted at evaluere præstationen", + "af JET-styrelsen. Prøv også at få nok point her." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", - "catching us on those babies." + "Søde træk, Jak. KG ville have det svært", + "fanger os på de babyer." ], "bb19fail": [ - "You didn't get them all. Try again." + "Du fik ikke dem alle. Prøv igen." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "Vi evaluerer brugen af ​​målsøgende pejlemærker i missioner.", + "Få alle beacons så hurtigt som du kan.", + "Du skal komme hurtigt videre med denne." ], "bb19win": [ - "Excellent work. You're a great asset", - "to the Underground, Jak." + "Fremragende arbejde. Du er et stort aktiv", + "til Undergrunden, Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "For langsomt, Jak! Når Skyggen spørger, skal du levere." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "The Shadow har brug for, at du samler noget grønt øko til hans", + "eksperimenter. Få det hele, før økoen forsvinder." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "Ikke dårligt. Jeg vil lægge et godt ord ind med Skyggen." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Bliv ved med at prøve. Du skal udvikle dine færdigheder her." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "Nogle gange kan vi godt lide at \"låne\" Krimzon Guard", + "udstyr. Tag den KG patruljecykel ud på en tur", + "og ramte alle mål inden for tidsfristen." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Flot skydning. Vagten ville elske dig som rekrut.", + "Her er en lille belønning for at blive hos os i stedet." ], "bb22fail": [ - "You didn't get the booths fast enough, Jak." + "Du fik ikke båsene hurtigt nok, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "Noget af baronens propaganda er nervepirrende", + "de civile. Tag de båse ud, og vi stopper Praxis", + "fra at sprede sine løgne." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Godt arbejde! Det burde holde kæften lidt på baronen." ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Du tabte, Jak. Hvis du vil vinde,", + "du må hellere arbejde på dine hurtighedsevner." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "The Undergrounds topracer vil gerne udfordre dig", + "til et løb på Ring Course One.", + "Tror du, at du kan klare lidt konkurrence?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Tillykke! Du slog udfordreren!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "Vores dreng tog dig med på denne. Bedre held næste gang." ], "bb24int": [ - "Up for a little race, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "Er du klar til et lille løb, Jak?", + "Vores topkører vil møde dig på Ring Course Two.", + "Denne baby er lidt sværere.", + "Lad os se, om du kan tage udfordringen op." ], "bb24win": [ - "You beat him, Jak. Nice driving." + "Du slog ham, Jak. Dejlig kørsel." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", - "You lost!" + "Det ser ud til, at du ikke er den bedste racerkører i denne by, Jak.", + "Du tabte!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", - "This one's gonna get hairy." + "Undergrundens løbsmester vil have dig igen,", + "denne gang på den svære Ringbane Tre.", + "Den her bliver behåret." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Tillykke, du slog vores bedste racer. Godt klaret." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "Det her er Torn, en god undergrundsagent kender byen", + "inde og ude, ved synet. Lad os se, hvordan du klarer dig,", + "komme til dette sted inden for den angivne tidsfrist", + "og du får en belønning. GÅ!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Her er endnu en chance for at bevise dit kendskab til byen." ], "bb28int": [ - "Find this place before time runs out." + "Find dette sted før tiden løber ud." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Her er en svær en, slå uret hertil." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Genkender du dette sted? Find det hurtigt, og en belønning er din." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Her er et lidt kendt sted, find det hurtigt, og jeg vil blive imponeret." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "Jeg vil gerne se dig finde dette sted. Imponer mig, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Kom hurtigt og overrask mig." ], "bb34int": [ - "Here's another destination, get here quickly." + "Her er endnu en destination, kom hurtigt hertil." ], "bb35int": [ - "Find this spot, fast!" + "Find dette sted, hurtigt!" ], "bb36int": [ - "Reach this area and be rewarded." + "Nå dette område og blive belønnet." ], "bb37int": [ - "Think you can find this place?" + "Tror du, du kan finde dette sted?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "Ikke så godt, Jak! Måske skulle du kalibrere det bord." ], "bb38int": [ - "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", - "in the time limit allotted." + "Vi evaluerer stadig JET-styrelsen.", + "Lad os se, om du kan samle alle energiforstærkningerne", + "inden for den fastsatte frist." ], "bb38win": [ - "Nice moves, fly-boy." + "Gode ​​træk, flue-dreng." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "Så tæt på, men i denne branche betyder det død." ], "bb39int": [ - "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Tag det JET-board gennem dets hastigheder på en ringbane.", + "Slå tiden, og jeg får dit ansigt tatoveret som mit." ], "bb39win": [ - "Good speed through the course, Jak!", - "That one looked too easy." + "God fart gennem banen, Jak!", + "Den så for nem ud." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "You were too slow on that course." + "Det ser ud til, at du har mødt din match, Jak!", + "Du var for langsom på den kurs." ], "bb40int": [ - "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "let's see if you can complete it in time." + "Jeg vil gerne se dig tage JET-Board gennem en anden", + "Ringkursus. Vi vil gøre denne lidt mere interessant,", + "lad os se, om du kan gennemføre det i tide." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Wow! Selv jeg ville have problemer med det, godt arbejde!" ], "bf001": [ - "My shield is impervious to your attacks!" + "Mit skjold er uigennemtrængeligt for dine angreb!" ], "bf002": [ - "You cannot hurt me!" + "Du kan ikke såre mig!" ], "bf003": [ - "Fool! Nothing can touch me!" + "Narre! Intet kan røre mig!" ], "bf004": [ - "You're powerless!" + "Du er magtesløs!" ], "bf005": [ - "There is nothing you can do!" + "Der er intet du kan gøre!" ], "bf006": [ "HAHAHAHAHAHA!" @@ -1045,163 +1045,163 @@ "HAHAHAHA!" ], "bf008": [ - "Come get me!" + "Kom og tag mig!" ], "bf009": [ - "Come closer!" + "Kom tættere på!" ], "bf010": [ - "Try me now!" + "Prøv mig nu!" ], "bf011": [ - "Let's make this personal!" + "Lad os gøre dette personligt!" ], "bf012": [ - "Surprise!" + "Overraskelse!" ], "bf013": [ - "Don't fall!" + "Fald ikke!" ], "bf014": [ - "I will crush you!" + "Jeg vil knuse dig!" ], "bf015": [ - "Take this!" + "Tag dette!" ], "bf016": [ - "Here I come!" + "Her kommer jeg!" ], "bf017": [ - "Why won't you die?!" + "Hvorfor dør du ikke?!" ], "bf018": [ - "Your Dark Eco powers surprise me!" + "Dine mørke øko-kræfter overrasker mig!" ], "bf019": [ - "Your arrogance will be your downfall!" + "Din arrogance vil være din undergang!" ], "bf020": [ - "The Stone is mine!" + "Stenen er min!" ], "bf021": [ - "Give me the Stone!" + "Giv mig Stenen!" ], "bf022": [ - "Release it!" + "Slip det!" ], "bf023": [ - "I want the Stone!" + "Jeg vil have stenen!" ], "bf024": [ - "Argh, let go!" + "Argh, lad være!" ], "bf025": [ - "It's mine!" + "Det er min!" ], "bf026": [ - "Try these on for size!" + "Prøv disse for størrelse!" ], "bf027": [ - "Here's a little present!" + "Her er en lille gave!" ], "bf028": [ - "Want some more?" + "Vil du have mere?" ], "bf029": [ - "I grow tired of this, now you die!" + "Jeg bliver træt af det her, nu dør du!" ], "bf030": [ - "You cannot run away from these!" + "Du kan ikke løbe væk fra disse!" ], "bf031": [ - "Allow me to share the pain!" + "Tillad mig at dele smerten!" ], "bf032": [ - "Now you're mine!" + "Nu er du min!" ], "bf033": [ - "Here's some hell!" + "Her er noget helvede!" ], "bf034": [ - "Say good night!" + "Sig godnat!" ], "bf035": [ - "Enjoy your next life!" + "Nyd dit næste liv!" ], "bf036": [ - "It's over!" + "Det er overstået!" ], "bf037": [ - "Burn in hell!" + "Brænd i helvede!" ], "bf038": [ - "The Stone is mine! Let me show you what it can do!" + "Stenen er min! Lad mig vise dig, hvad den kan!" ], "bf039": [ - "Now you see the Stone's power in capable hands!" + "Nu ser du Stenens magt i dygtige hænder!" ], "bf040": [ - "How's that for power?" + "Hvordan er det for magten?" ], "bf041": [ - "Now you see!" + "Nu ser du!" ], "bf042": [ - "I am invincible now!" + "Jeg er uovervindelig nu!" ], "bf043": [ - "You cannot run forever!" + "Du kan ikke løbe for evigt!" ], "bf044": [ - "I have all the power I need!" + "Jeg har al den kraft, jeg har brug for!" ], "bf045": [ - "You can't avoid this!" + "Du kan ikke undgå dette!" ], "bf046": [ - "Here's a little something special!" + "Her er lidt noget særligt!" ], "bf047": [ - "Come to me!" + "Kom til mig!" ], "bf048": [ - "Come here!" + "Kom her!" ], "bf049": [ - "Let's get closer!" + "Lad os komme tættere på!" ], "bf050": [ - "Nothing can save you now!" + "Intet kan redde dig nu!" ], "bf051": [ - "You're history!" + "Du er historie!" ], "bf052": [ - "I am the city's savior, not you!" + "Jeg er byens frelser, ikke dig!" ], "bf053": [ - "Die!" + "Dø!" ], "bf054": [ - "It's over!" + "Det er overstået!" ], "bf055": [ - "I've got you!" + "Jeg har dig!" ], "bf056": [ - "Now you die!" + "Nu dør du!" ], "bf057": [ - "NOOOOOO!" + "NEJ!" ], "bf058": [ - "No!" + "Ingen!" ], "bf059": [ - "NO!" + "INGEN!" ], "bf060": [ - "Uorghh!" + "Urghh!" ], "bf061": [ "Ahh!" @@ -1210,28 +1210,28 @@ "Ungh!" ], "bf063": [ - "Raghh!" + "Raghhh!" ], "bf064": [ - "We finish this now!" + "Vi afslutter det nu!" ], "bf065": [ - "Eat this!" + "Spis det her!" ], "bf066": [ - "Stop!" + "Hold op!" ], "bf067": [ - "You idiot, you're no match for me!" + "Din idiot, du er ingen match for mig!" ], "bf068": [ - "Why don't you die!?" + "Hvorfor dør du ikke!?" ], "bf069": [ - "Give up and I'll make it painless!" + "Giv op og jeg gør det smertefrit!" ], "bf070": [ - "You cannot win!" + "Du kan ikke vinde!" ], "bf071": [ "Aha!" @@ -1246,73 +1246,73 @@ "Urgh!" ], "bf075": [ - "You can do better than that!" + "Du kan gøre det bedre end det!" ], "bf076": [ - "You're mine!" + "Du er min!" ], "bf077": [ - "Why won't you die!?" + "Hvorfor dør du ikke!?" ], "bf078": [ - "I have the ultimate power!" + "Jeg har den ultimative magt!" ], "bf079": [ - "Die!" + "Dø!" ], "bf080": [ - "Is that your best shot?" + "Er det dit bedste skud?" ], "bf081": [ - "Now you die!" + "Nu dør du!" ], "bf082": [ - "Get off my tower!" + "Kom væk fra mit tårn!" ], "bf083": [ - "We'll see about that!" + "Det får vi at se!" ], "bf084": [ - "You really think you have a chance?" + "Tror du virkelig, du har en chance?" ], "bf085": [ - "Fear me!" + "Frygt mig!" ], "bf086": [ - "You're nothing!" + "Du er ingenting!" ], "bf087": [ - "My shield is now recharged!" + "Mit skjold er nu genopladet!" ], "bf088": [ - "Try these on for size!" + "Prøv disse for størrelse!" ], "bf089": [ - "I should have killed you long ago!" + "Jeg skulle have dræbt dig for længe siden!" ], "bf090": [ - "Never a dull moment, eh?" + "Aldrig et kedeligt øjeblik, vel?" ], "bf091": [ - "Stand still!" + "Stå stille!" ], "bf092": [ - "Go back to wherever you came from!" + "Gå tilbage til hvor end du kom fra!" ], "bf093": [ - "You're both going to die by my hand!" + "I skal begge dø ved min hånd!" ], "bf094": [ - "Come closer!" + "Kom tættere på!" ], "bf095": [ - "To the end!" + "Til slutningen!" ], "bf096": [ - "You cannot win!" + "Du kan ikke vinde!" ], "bf097": [ - "Come here!" + "Kom her!" ], "bf098": [ "ARGHHH!" @@ -1324,184 +1324,184 @@ "Urgh!" ], "bf101": [ - "Oof!" + "Øv!" ], "bf102": [ - "Noooo!" + "Nej!" ], "bf103": [ - "No!" + "Ingen!" ], "bf104": [ - "Not again!" + "Ikke igen!" ], "bf105": [ - "It can't be!" + "Det kan ikke være!" ], "bf106": [ - "Not this time!" + "Ikke denne gang!" ], "bf107": [ - "Stop!" + "Hold op!" ], "bf108": [ - "Damn!" + "For pokker!" ], "bf109": [ - "Why, you little...!" + "Hvorfor, din lille...!" ], "bf110": [ - "Now you've made me angry!" + "Nu har du gjort mig vred!" ], "bf111": [ - "Impressive, but let's try that again!" + "Imponerende, men lad os prøve det igen!" ], "bf112": [ - "The stronger man always wins!" + "Den stærkere vinder altid!" ], "bf113": [ - "Your loss was inevitable, Jak!" + "Dit tab var uundgåeligt, Jak!" ], "bf114": [ - "You could never be a baron!" + "Du kunne aldrig være en baron!" ], "bf115": [ - "I knew you were weak!" + "Jeg vidste, du var svag!" ], "bf116": [ - "Hm, I expected more from you!" + "Hm, jeg forventede mere af dig!" ], "bf117": [ - "Losing is for the weak!" + "At tabe er for de svage!" ], "bf118": [ - "How pathetic!" + "Hvor patetisk!" ], "bf119": [ - "That was too easy!" + "Det var for nemt!" ], "bf120": [ - "Sorry, old boy, it's just war!" + "Undskyld, gamle dreng, det er bare krig!" ], "bf121": [ - "Too bad you don't have what it takes!" + "Ærgerligt at du ikke har det der skal til!" ], "bf122": [ - "The better man won!" + "Den bedre mand vandt!" ], "bf123": [ - "We're similar, Jak... oh, except you're dead!" + "Vi ligner hinanden, Jak... åh, bortset fra at du er død!" ], "bf124": [ - "Feel the fury of the Precursor Stone!" + "Mærk forløberstenens raseri!" ], "bf125": [ - "With the Stone's power, I am invincible!" + "Med stenens kraft er jeg uovervindelig!" ], "bf126": [ - "All will fear me now!" + "Alle vil frygte mig nu!" ], "bf127": [ - "Time to die!" + "Tid til at dø!" ], "bf128": [ - "My little friends will take care of you!" + "Mine små venner vil tage sig af dig!" ], "bf129": [ - "You can't run forever, Jak!" + "Du kan ikke løbe for evigt, Jak!" ], "bf130": [ - "Now I've got you!" + "Nu har jeg dig!" ], "bf131": [ - "Surprise!" + "Overraskelse!" ], "bf132": [ - "I have better things to do than waste my time with you!" + "Jeg har bedre ting at lave end at spilde min tid med dig!" ], "bf133": [ - "You are nothing!" + "Du er ingenting!" ], "bf134": [ - "Annoying insect, die!" + "Irriterende insekt, dø!" ], "bf135": [ - "Not bad, but let me show you what real power is!" + "Ikke dårligt, men lad mig vise dig, hvad ægte magt er!" ], "bf136": [ - "Feel this!" + "Føl dette!" ], "bru001": [ - "Great smelly breath of a goosesnake!", + "Fantastisk ildelugtende ånde fra en gåseslange!", "Heroes to Lurker people you be!", - "By now just see much happy thanks! Ruhuhuh.", - "You honorary members of Lurker tribe now.", - "We no forget - if ever you need us, we help you!" + "Nu bare se meget glad tak! Ruhuhuh.", + "I æresmedlemmer af Lurker-stammen nu.", + "Vi glemmer det ikke - hvis du nogensinde har brug for os, hjælper vi dig!" ], "bru002": [ - "I hears you two look for a piece of Mar's shiny Seal.", - "Brutter loves shiny bright things too.", - "I have piece I thinks. It in Water Slums,", - "hanging over me hut and you free to have.", - "Gift from Brutter!" + "Jeg hører jer to lede efter et stykke af Mars skinnende segl.", + "Brutter elsker også skinnende lyse ting.", + "Jeg har et stykke tror jeg. Det i Water Slums,", + "hængende over mig hytte og du fri til at have.", + "Gave fra Brutter!" ], "bru004": [ - "You two good! No better warrior in all Lurker tribes!", - "You keep Seal. You love shiny things just like Brutter." + "I to gode! Ingen bedre kriger i alle Lurker-stammer!", + "Du beholder Seal. Du elsker skinnende ting ligesom Brutter." ], "cit001": [ - "Hey!" + "Hej!" ], "cit004": [ - "Watch it!" + "Se det!" ], "cit008": [ - "No!" + "Ingen!" ], "cit010": [ "Argh!" ], "cit016": [ - "Stay away!" + "Bliv væk!" ], "cit033": [ - "Hey!" + "Hej!" ], "cit034": [ - "Look out!" + "Pas på!" ], "cit035": [ - "Watch out!" + "Pas på!" ], "cit046": [ - "Go away!" + "Gå væk!" ], "cit047": [ - "Leave me alone!" + "Lad mig være i fred!" ], "cit051": [ - "Are you crazy?" + "Er du skør?" ], "cit053": [ - "Are you insane?!" + "Er du sindssyg?!" ], "cit055": [ - "Hey, that's my vehicle!" + "Hej, det er mit køretøj!" ], "cit056": [ - "Gimme back my vehicle!" + "Giv mig mit køretøj tilbage!" ], "cit057": [ - "What are you doing?" + "Hvad laver du?" ], "cit058": [ - "Please, don't take it!" + "Vær venlig, tag det ikke!" ], "cit097": [ - "Ugh!" + "Åh!" ], "cit097a": [ - "Aahh!" + "Ahhh!" ], "cit097b": [ "Aaghhh!" @@ -1519,1691 +1519,1691 @@ "Urgh!" ], "cit098b": [ - "Ugh!" + "Åh!" ], "cit098c": [ - "Ugh!" + "Åh!" ], "cit098d": [ "Ahh!" ], "cit099": [ - "No!" + "Ingen!" ], "cit099a": [ - "Noooo!" + "Nej!" ], "cit099b": [ - "No!" + "Ingen!" ], "cit099c": [ - "No!" + "Ingen!" ], "cit099d": [ - "Nooo!" + "Nej!" ], "cit100": [ - "Please!" + "Vær venlig!" ], "cit100a": [ - "Please!" + "Vær venlig!" ], "cit100b": [ - "Please!" + "Vær venlig!" ], "cit100c": [ - "Please!" + "Vær venlig!" ], "cit101": [ - "Stop!" + "Hold op!" ], "cit101a": [ - "Stop!" + "Hold op!" ], "cit101b": [ - "Stop!" + "Hold op!" ], "cit101c": [ - "Stop!" + "Hold op!" ], "cit103": [ - "Sound the alarm!" + "Slå alarm!" ], "cit103a": [ - "Sound the alarm!" + "Slå alarm!" ], "cit104": [ - "Guards!" + "Vagter!" ], "cit104a": [ - "Guards! Help us!" + "Vagter! Hjælp os!" ], "cit105": [ - "Help us!" + "Hjælp os!" ], "cit120": [ - "Keep away from me!" + "Hold dig væk fra mig!" ], "cit120a": [ - "Keep away from me!" + "Hold dig væk fra mig!" ], "cit137a": [ - "Wait!" + "Vente!" ], "cityv001": [ - "Leaving city safe zone." + "Forlader byens sikre zone." ], "cityv002": [ - "Leaving city at your own risk." + "Forlader byen på eget ansvar." ], "cityv003": [ - "Exiting city." + "Forladt by." ], "cityv004": [ - "Opening outer shield." + "Åbnende ydre skjold." ], "cityv005": [ - "Decontamination complete." + "Dekontaminering afsluttet." ], "cityv006": [ - "Entering Haven City." + "Ind i Haven City." ], "cityv007": [ - "Re-entering city." + "Går ind i byen igen." ], "cityv008": [ - "Welcome back." + "Velkommen tilbage." ], "cityv009": [ - "It's good to see you still alive." + "Det er godt at se dig stadig i live." ], "cityv010": [ - "Security clearance granted." + "Sikkerhedsgodkendelse er givet." ], "cityv011": [ - "Entrance denied. You do not have proper clearance." + "Indgang nægtet. Du har ikke den rette tilladelse." ], "cityv012": [ - "I am unable to comply." + "Jeg er ikke i stand til at overholde." ], "cityv013": [ - "Please come back with proper clearance." + "Venligst vend tilbage med ordentlig godkendelse." ], "cityv014": [ - "Access denied." + "Adgang nægtet." ], "cityv015": [ - "You need Red Clearance for this gate." + "Du har brug for rød klaring til denne port." ], "cityv016": [ - "You need Green Clearance for this gate." + "Du har brug for grøn klaring til denne port." ], "cityv017": [ - "You need Yellow Clearance for this gate." + "Du har brug for gul tilladelse til denne port." ], "cityv018": [ - "You need Blue Clearance for this gate." + "Du skal bruge Blue Clearance til denne port." ], "cityv019": [ - "You need Purple Clearance for this gate." + "Du skal bruge Purple Clearance til denne port." ], "cityv020": [ - "You need special Black Clearance for this door." + "Du skal bruge en speciel sort frigang til denne dør." ], "cityv021": [ - "Access granted." + "Adgang givet." ], "cityv022": [ - "Door open." + "Dør åben." ], "cityv023": [ - "Door closed." + "Døren lukket." ], "cityv024": [ - "Please enter." + "Kom ind." ], "cityv025": [ "Warp Gate online." ], "cityv026": [ - "Warning: Eco supplies low." + "Advarsel: Lavt miljøforbrug." ], "cityv027": [ - "Backup systems failing." + "Sikkerhedskopieringssystemer fejler." ], "cityv028": [ - "Warning: Eco storage is below safe minimums." + "Advarsel: Økoopbevaring er under sikre minimumsværdier." ], "cityv029": [ - "Eco Grid unstable." + "Eco Grid ustabilt." ], "cityv030": [ - "Metal Heads detected at Mining Site." + "Metalhoveder opdaget på mineplads." ], "cityv031": [ - "Metal Heads detected at Drilling Site." + "Metalhoveder fundet på borestedet." ], "cityv032": [ "Stand by for clearance." ], "cityv033": [ - "Have a nice day." + "Hav en god dag." ], "cityv034": [ - "Welcome." + "Velkommen." ], "cityv035": [ - "This is a restricted area." + "Dette er et begrænset område." ], "cityv036": [ - "You are in violation of Speed Ordinance 51d, pull over." + "Du er i strid med hastighedsforordningen 51d, træk over." ], "cityv037": [ - "I have alerted the authorities." + "Jeg har advaret myndighederne." ], "cityv038": [ - "This sector is closed." + "Denne sektor er lukket." ], "cityv039": [ - "Alert: Prison escape in progress." + "Advarsel: Fængselsflugt i gang." ], "cityv040": [ - "Alert: City under attack." + "Advarsel: By under angreb." ], "cityv041": [ - "Metal Head attack in progress." + "Metal Head angreb i gang." ], "cityv042": [ - "All citizens go to safe shelters." + "Alle borgere går på sikre krisecentre." ], "cityv043": [ - "Eco Grid growing unstable." + "Eco Grid vokser ustabilt." ], "cityv044": [ - "The Eco Grid is down. Repeat: The Eco Grid is down." + "Eco Grid er nede. Gentag: Eco Grid er nede." ], "cityv045": [ - "Red alert: City shield wall compromised." + "Rød advarsel: Byens skjoldmur kompromitteret." ], "cityv046": [ - "Unauthorized movement in sewer system." + "Uautoriseret bevægelse i kloaksystemet." ], "cityv047": [ - "This is a restricted area. Defenses activated." + "Dette er et begrænset område. Forsvar aktiveret." ], "cityv048": [ - "You are trespassing. Defenses coming online." + "Du overtræder. Forsvar kommer online." ], "cityv049": [ - "I regret use of force. Systems arming." + "Jeg beklager brugen af ​​magt. Systemer armering." ], "cityv050": [ - "Trespasser neutralized." + "Overtræder neutraliseret." ], "cityv051": [ - "Suspect destroyed." + "Mistænkte ødelagt." ], "cityv052": [ - "I am authorized to use force." + "Jeg er autoriseret til at bruge magt." ], "cityv053": [ - "General alert: Riot in progress. Krimzon Guards en route." + "Generel advarsel: Optøjer i gang. Krimzon-vagter på vej." ], "cityv054": [ - "Surrender yourself. You are under arrest." + "Overgiv dig selv. Du er anholdt." ], "cityv055": [ - "There is no escape." + "Der er ingen flugt." ], "cityv056": [ - "You are in a restricted sector. This sector is on high alert." + "Du er i en begrænset sektor. Denne sektor er i høj beredskab." ], "cityv057": [ - "You are under arrest. Surrender yourself." + "Du er anholdt. Overgiv dig selv." ], "cityv058": [ - "This sector is off limits." + "Denne sektor er forbudt." ], "cityv061": [ - "All systems back online and in the green." + "Alle systemer er online igen og i det grønne." ], "cityv062": [ - "The race is about to begin." + "Løbet er ved at begynde." ], "cityv063": [ - "Welcome to the city transportation system." + "Velkommen til byens transportsystem." ], "cityv064": [ - "You can thrust in your vehicle at any time." + "Du kan til enhver tid skubbe dit køretøj ind." ], "cityv065": [ - "Braking will assist in vehicle control." + "Bremsning vil hjælpe med køretøjskontrol." ], "cityv067": [ - "Backing up is easy." + "Sikkerhedskopiering er let." ], "cityv068": [ - "You can hover in one of two zones: low and high." + "Du kan svæve i en af ​​to zoner: lav og høj." ], "cityv069": [ - "Try switching hover zones." + "Prøv at skifte svævezoner." ], "cityv070": [ - "Switching hover zones may help avoid traffic or", - "ground obstacles." + "Skift af svævezoner kan hjælpe med at undgå trafik eller", + "jordforhindringer." ], "cityv075": [ - "Alert: Vehicle destruction imminent." + "Advarsel: Destruktion af køretøjer er forestående." ], "cityv076": [ - "Please drive more carefully next time." + "Kør venligst mere forsigtigt næste gang." ], "cityv077": [ - "Thank you for using the vehicle." + "Tak fordi du brugte køretøjet." ], "cityv078": [ - "Have a nice day." + "Hav en god dag." ], "cityv079": [ - "Warning: Missile cooling systems damaged." + "Advarsel: Missilkølesystemer beskadiget." ], "cityv080": [ - "Alert: Backup cooling system failure.", - "Emergency overrides initiated." + "Advarsel: Backup kølesystem fejl.", + "Nødtilsidesættelser påbegyndt." ], "cityv081": [ - "Missile systems at critical overload.", - "Failsafe not responding." + "Missilsystemer ved kritisk overbelastning.", + "Failsafe svarer ikke." ], "cityv082": [ - "Danger: Warhead detonation imminent.", - "Evacuate immediately." + "Fare: Sprænghoved detonation overhængende.", + "Evakuer straks." ], "cityv087": [ - "Arriving at Throne Room floor." + "Ankommer til Throne Room-etagen." ], "cityv088": [ - "Arriving at ground floor." + "Ankommer til stueetagen." ], "cityv093": [ - "You have been sentenced to termination." + "Du er blevet dømt til opsigelse." ], "cityv094": [ - "This area is restricted.", - "Initiating termination with extreme prejudice." + "Dette område er begrænset.", + "Indleder opsigelse med ekstreme fordomme." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Dette område er kun åbent for Krimzon Guards personale." ], "cityv096": [ - "The city is on high alert." + "Byen er i høj beredskab." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "Byen er under angreb.", + "Alle borgere går videre til sikre krisecentre." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "Byen er under angreb. Bliv venligst i jeres hjem." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "Metal Head aggressorer infiltrerer systemet." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Tillykke med modtagelsen af ​​et sikkerhedspas." ], "cityv107": [ - "Unauthorized use of Fortress door.", - "Activating security tank." + "Uautoriseret brug af fæstningsdør.", + "Aktivering af sikkerhedstank." ], "cityv108": [ - "Gunpod weapons coming online." + "Gunpod-våben kommer online." ], "cityv109": [ - "Weapons overheating." + "Overophedning af våben." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "Våben ude af funktion. Vent venligst på afkøling." ], "cityv111": [ - "Weapons back online." + "Våben online igen." ], "cityv112": [ - "The gunpod has taken severe damage." + "Pistolen har taget alvorlig skade." ], "cityv130": [ - "The city map is displayed in the lower right." + "Bykortet vises nederst til højre." ], "cityv132": [ - "Follow the icons on the map", - "to reach important destinations." + "Følg ikonerne på kortet", + "at nå vigtige destinationer." ], "cityv134": [ - "Intruder alert." + "Indbrudsalarm." ], "cityv135": [ - "Stand by." + "Stå ved." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Jeg oplever en overbelastning af kredsløbet.", + "Tænd for mine bypass-kontakter inden for tidsgrænsen", + "og du vil blive belønnet." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "Du kunne ikke tænde for bypass-gitteret i tide.", + "Mine C-Zone kredsløb er overbelastet." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "Du har slået bypasset til", + "for mine kredsløb i tiden.", + "Her er en belønning." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", - "to stabilize the Eco Grid." + "Jeg har brug for nødstrøm til mine Eco Converters.", + "Tænd hurtigt for alle tilgængelige kredsløb", + "for at stabilisere Eco Grid." ], "cityv150": [ - "You didn't reach all the switches in time.", - "The Eco Grid is still unstable." + "Du nåede ikke alle kontakter i tide.", + "Eco Grid er stadig ustabilt." ], "cityv151": [ - "You successfully switched on the circuits", - "to stabilize the Eco Grid.", - "You have earned a reward." + "Du har tændt for kredsløbene", + "for at stabilisere Eco Grid.", + "Du har optjent en belønning." ], "cityv152": [ - "I have detected a Dark Eco spill.", - "You must remove this hazard quickly", - "before the city is contaminated." + "Jeg har opdaget et Dark Eco-udslip.", + "Du skal fjerne denne fare hurtigt", + "før byen er forurenet." ], "cityv153": [ - "You did not remove all the Dark Eco quickly enough." + "Du fjernede ikke al Dark Eco hurtigt nok." ], "cityv154": [ - "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "Du fjernede Dark Eco-faren i tide.", + "Byen er dig taknemmelig." ], "cityv155": [ - "Sensors indicate a cluster of Blue Eco in the city.", - "Collect all eco before it dissipates", - "and you will be rewarded." + "Sensorer indikerer en klynge af Blue Eco i byen.", + "Saml alt øko inden det forsvinder", + "og du vil blive belønnet." ], "cityv156": [ - "You did not retrieve all of the eco." + "Du har ikke hentet hele økoen." ], "cityv157": [ - "You successfully retrieved the eco.", - "Here is your reward." + "Du har med succes hentet økoen.", + "Her er din belønning." ], "cityv158": [ - "Emergency response needed.", - "Runaway bomb bots detected and headed for", - "populated areas. Neutralize all bomb bots", - "before it's too late." + "Nødberedskab nødvendig.", + "Runaway bombe bots opdaget og satte kursen mod", + "befolkede områder. Neutraliser alle bombebots", + "inden det er for sent." ], "cityv159": [ - "You failed to neutralize the runaway bomb bots." + "Du formåede ikke at neutralisere de løbske bomberobotter." ], "cityv160": [ - "You destroyed the runaway bomb bots.", - "The city thanks you." + "Du ødelagde de løbske bomberobotter.", + "Byen takker dig." ], "cityv161": [ - "Get to this point in the game quickly", - "and you will receive a prize." + "Kom hurtigt til dette punkt i spillet", + "og du vil modtage en præmie." ], "cityv162": [ - "Try to find this spot." + "Prøv at finde dette sted." ], "cityv163": [ - "Can you identify this place and get there?" + "Kan du identificere dette sted og komme derhen?" ], "cityv164": [ - "Make it here in the time allotted and a reward is yours." + "Gør det her inden for den afsatte tid, og en belønning er din." ], "cityv165": [ - "Find this spot for a prize." + "Find denne plads til en præmie." ], "cityv166": [ - "Get to this spot for a prize." + "Kom til dette sted for en præmie." ], "cityv167": [ - "Metal Heads have been detected in the gun course.", - "Neutralize them all immediately." + "Metalhoveder er blevet opdaget i våbenbanen.", + "Neutraliser dem alle med det samme." ], "cityv168": [ - "You did not kill them all." + "Du dræbte dem ikke alle." ], "cityv169": [ - "Excellent shooting. Threat eliminated." + "Fremragende skydning. Truslen elimineret." ], "cityv170": [ - "Get a high score on the JET-Board and receive a prize." + "Få en høj score på JET-Board og modtag en præmie." ], "cityv171": [ - "Try for a high score and receive a prize." + "Prøv at få en høj score og modtag en præmie." ], "cityv172": [ - "You did not achieve a high enough score." + "Du opnåede ikke en høj nok score." ], "cityv173": [ - "Congratulations, you achieved a high enough score." + "Tillykke, du opnåede en tilstrækkelig høj score." ], "cityv174": [ - "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Velkommen til Stadium Central Computer.", + "Vælg venligst din udfordring." ], "cityv175": [ - "Attention, all citizens:", - "The Class 1 Race is about to begin." + "Opmærksomhed alle borgere:", + "Klasse 1-løbet er ved at begynde." ], "cityv176": [ - "Attention, all citizens:", - "The Class 2 Race is about to begin." + "Opmærksomhed alle borgere:", + "Klasse 2-løbet er ved at begynde." ], "cityv177": [ - "Attention, all citizens:", - "The Class 3 Race is about to begin." + "Opmærksomhed alle borgere:", + "Klasse 3-løbet er ved at begynde." ], "cityv178": [ - "Care to try for the course record?" + "Vil du prøve at få banerekorden?" ], "cityv179": [ - "Congratulations, you achieved the gold record." + "Tillykke, du opnåede guldrekorden." ], "cityv180": [ - "Congratulations, you achieved the silver record." + "Tillykke, du opnåede sølvrekorden." ], "cityv181": [ - "Congratulations, you achieved the bronze record." + "Tillykke, du opnåede bronzerekorden." ], "cityv182": [ - "Care to try for a high score record?" + "Vil du prøve en rekord med høj score?" ], "cityv183": [ - "Would you like to try for a high score?" + "Kunne du tænke dig at prøve en høj score?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Velkommen til Racing Time Trials." ], "cityv185": [ - "Would you like to race for a record time?" + "Kunne du tænke dig at køre om rekordtid?" ], "cityv186": [ - "Choose your course." + "Vælg dit kursus." ], "cityv187": [ - "Would you like to try for a course record?" + "Kunne du tænke dig at prøve at få en banerekord?" ], "cityv188": [ - "Would you like to use Orbs to buy a secret?" + "Vil du bruge Orbs til at købe en hemmelighed?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "Du har ikke nok Orbs til denne hemmelighed." ], "cityv190": [ - "Secret activated." + "Hemmelighed aktiveret." ], "cityv191": [ - "All secrets are activated." + "Alle hemmeligheder er aktiveret." ], "cityv192": [ - "Please exit the Titan Suit." + "Forlad venligst Titan Suit." ], "cityv193": [ - "You must exit the Titan Suit." + "Du skal forlade Titan Suit." ], "cityv194": [ - "Vehicles must remain within city limits." + "Køretøjer skal holde sig inden for byens grænser." ], "cityv195": [ - "Exit denied. Enemy targets still present." + "Udgang nægtet. Fjendtlige mål er stadig til stede." ], "cityv196": [ - "Exit denied. Metal Head eggs still detected." + "Udgang nægtet. Metal Head æg stadig fundet." ], "cityv197": [ - "Scanners show Metal Head eggs still active." + "Scannere viser, at Metal Head-æg stadig er aktive." ], "daxm001": [ - "Shoot the platform, Jak." + "Skyd platformen, Jak." ], "daxm002": [ - "We need something to get through that gate!" + "Vi har brug for noget for at komme igennem den port!" ], "daxm003": [ - "Shoot the Metal Head when he moves his shield!" + "Skyd metalhovedet, når han flytter sit skjold!" ], "daxm004": [ - "Hit him in his stomach!" + "Slå ham i maven!" ], "daxm005": [ - "Whoa! That path dropped like uh... a rock!" + "Hov! Den sti faldt som øh... en sten!" ], "daxm006": [ - "Smack the box, baby!" + "Smæk kassen, skat!" ], "daxm007": [ - "That's what I call a rocky road!" + "Det er, hvad jeg kalder en stenet vej!" ], "daxm008": [ - "We gotta get to the top!" + "Vi skal til toppen!" ], "daxm009": [ - "We made it!!" + "Vi klarede det!!" ], "daxm010": [ - "Rock 'n roll!" + "Rock og rul!" ], "ds001": [ - "We gotta find the Baron, Jak." + "Vi skal finde baronen, Jak." ], "ds005": [ - "Jak, those are Metal Heads!" + "Jak, det er Metal Heads!" ], "ds006": [ - "Finally, now we get to see the Shadow!", - "What do ya gotta do around this place to get noticed?" + "Endelig, nu får vi Skyggen at se!", + "Hvad skal du gøre omkring dette sted for at blive bemærket?" ], "ds012": [ - "That must be the Ruby Key to the city." + "Det må være rubinnøglen til byen." ], "ds013": [ - "Statues are becoming an endangered species around here." + "Statuer er ved at blive en truet art her omkring." ], "ds014": [ - "So this is Mar's scary tomb, eh?", - "Doesn't look so bad." + "Så dette er Mars skræmmende grav, ikke?", + "Det ser ikke så slemt ud." ], "ds016": [ - "Let's bring the money back to Krew." + "Lad os bringe pengene tilbage til Krew." ], "ds017": [ - "That must be the ammo and missile Torn told us to blow up!" + "Det må være ammunitionen og missilet Torn sagde til os at sprænge i luften!" ], "ds018": [ - "Get the tank to shoot the missile!" + "Få tanken til at skyde missilet!" ], "ds019": [ - "Break those tubes in the center." + "Bræk disse rør i midten." ], "ds020": [ - "Please tell me you remember how to roll..." + "Fortæl mig venligst, at du husker, hvordan du ruller..." ], "ds023": [ - "Let's rock!" + "Lad os rocke!" ], "ds024": [ - "Here we go!" + "Nu sker det!" ], "ds025": [ - "All right!" + "Okay!" ], "ds026": [ - "Yeah!" + "Ja!" ], "ds028": [ "Oh yeah!" ], "ds029": [ - "Let's go back to the city." + "Lad os gå tilbage til byen." ], "ds030": [ - "I think we need to go back to the city, Jak." + "Jeg tror, ​​vi skal tilbage til byen, Jak." ], "ds031": [ - "Let's go talk to Torn." + "Lad os tale med Torn." ], "ds032": [ - "Let's go back to the Underground Hideout." + "Lad os gå tilbage til Underground Hideout." ], "ds043": [ - "You can get a longer jump by rolling into it." + "Du kan få et længere hop ved at rulle ind i det." ], "ds044": [ - "Use a long jump to get across this gap." + "Brug et langt spring for at komme over dette hul." ], "ds045": [ - "Nice form!" + "Fin form!" ], "ds046": [ - "If you duck before you jump, you'll go higher.", - "You'll need a high jump to reach the top of this ledge, Jak." + "Hvis du dukker dig før du hopper, kommer du højere.", + "Du skal bruge et højdespring for at nå toppen af ​​denne afsats, Jak." ], "ds047": [ - "Ooh, that's a high one.", - "You'll need to jump,", - "then jump again in the air to get up there." + "Åh, det er højt.", + "Du bliver nødt til at hoppe,", + "hop så igen i luften for at komme derop." ], "ds048": [ - "Hit 'em again, Jak!" + "Slå dem igen, Jak!" ], "ds049": [ - "Do a spin kick!" + "Lav et spin kick!" ], "ds050": [ - "Robotank, run!" + "Robotank, løb!" ], "ds051": [ - "Hey, we should stay with Sig." + "Hej, vi burde blive hos Sig." ], "ds052": [ - "Hey, big guy, keep close, huh?" + "Hej, store fyr, hold dig tæt, hva'?" ], "ds053": [ - "We're too far away from Sig." + "Vi er for langt væk fra Sig." ], "ds054": [ - "Stick with the plan, Jak, protect Sig!" + "Hold dig til planen, Jak, beskyt Sig!" ], "ds055": [ - "Uh oh, where's Sig?" + "Åh, hvor er Sig?" ], "ds056": [ - "Wow, what a blast!" + "Wow, hvilket brag!" ], "ds057": [ - "Sig's a good shot." + "Sig er et godt skud." ], "ds058": [ - "Go help Sig!" + "Hjælp Sig!" ], "ds059": [ - "Nice shootin', Sig!" + "Godt at skyde, Sig!" ], "ds060": [ - "You're my hero!" + "Du er min helt!" ], "ds061": [ - "Uh oh, Sig's in trouble!" + "Åh, Sig er i problemer!" ], "ds062": [ - "There's another Metal Head going after our boy!", - "Shoot it, shoot it!" + "Der er endnu et Metal Head, der går efter vores dreng!", + "Skyd den, skyd den!" ], "ds063": [ - "Keep Sig safe, Jak!" + "Hold Sig sikker, Jak!" ], "ds064": [ - "Whoa, Sig's really getting roughed up!" + "Hov, Sig bliver virkelig sur!" ], "ds065": [ - "Shoot 'em, shoot 'em!" + "Skyd dem, skyd dem!" ], "ds066": [ - "Sig dies, we die." + "Sig dø, vi dør." ], "ds067": [ - "Oof, we suck..." + "Øv, vi stinker..." ], "ds068": [ - "We have to keep 'em away from Sig." + "Vi skal holde dem væk fra Sig." ], "ds069": [ - "We need to find the valve to turn the water back on." + "Vi skal finde ventilen til at tænde for vandet igen." ], "ds094": [ - "Robotank, run!" + "Robotank, løb!" ], "ds095": [ - "Here comes that tank again!" + "Her kommer tanken igen!" ], "ds096": [ - "Get the tank to shoot the missile!" + "Få tanken til at skyde missilet!" ], "ds099": [ - "We need to get to the top of that tower!" + "Vi skal til toppen af ​​det tårn!" ], "ds100": [ - "Climb the ruined tower, Jak!" + "Klatre op i det ødelagte tårn, Jak!" ], "ds111": [ - "We should come back with the Titan Suit to do this path." + "Vi burde komme tilbage med Titan Suit for at gøre denne vej." ], "ds112": [ - "You've got a mechanical fist, Jak. Use it!" + "Du har en mekanisk knytnæve, Jak. Brug det!" ], "ds113": [ - "Break the door!" + "Bryd døren!" ], "ds114": [ - "800 pound Tigorilla comin' through!" + "800 pund Tigorilla kommer igennem!" ], "ds115": [ - "Smashing work, Jak! Oh, that was funny." + "Smukt arbejde, Jak! Åh, det var sjovt." ], "ds116": [ - "Shoot the platform, Jak." + "Skyd platformen, Jak." ], "ds117": [ - "We need something to get through that gate." + "Vi har brug for noget for at komme igennem den port." ], "ds118": [ - "Shoot the Metal Head when he moves his shield." + "Skyd metalhovedet, når han flytter sit skjold." ], "ds119": [ - "Hit him in his stomach." + "Slå ham i maven." ], "ds120": [ - "Whoa, that path dropped like a... a rock!" + "Puha, den sti faldt som en... en sten!" ], "ds121": [ - "Smack the box, baby!" + "Smæk kassen, skat!" ], "ds128": [ - "Good, we're through." + "Godt, vi er færdige." ], "ds129": [ - "Shoot the gun, Jak!" + "Skyd pistolen, Jak!" ], "ds143": [ - "We're supposed to keep Krew's guys alive, Jak!" + "Vi skal holde Krews fyre i live, Jak!" ], "ds144": [ - "Save 'em, Jak!" + "Red dem, Jak!" ], "ds145": [ - "Don't like this, Jak..." + "Kan ikke lide det her, Jak..." ], "ds146": [ - "Behind us, Jak!" + "Bag os, Jak!" ], "ds147": [ - "Metal Heads! Everywhere!" + "Metalhoveder! Overalt!" ], "ds148": [ - "Protect us, Jak! But first me." + "Beskyt os, Jak! Men først mig." ], "ds150": [ - "Take a vehicle, Jak! It's faster." + "Tag et køretøj, Jak! Det er hurtigere." ], "ds151": [ - "Use your JET-Board!" + "Brug dit JET-board!" ], "ds152": [ - "We got company, Jak! Lots of guards!" + "Vi har selskab, Jak! Masser af vagter!" ], "ds160": [ - "That's right, we're bad! The Precursor Stone is ours!" + "Det er rigtigt, vi er dårlige! Precursor Stone er vores!" ], "ds161": [ - "There's Mar's gun, Jak! Let's go check it out." + "Der er Mars pistol, Jak! Lad os gå og tjekke det ud." ], "ds162": [ - "These Precursor Orbs are worth a lot now.", - "We might find a few hidden around,", - "or get some doing difficult tasks.", - "We'll be able to buy stuff with 'em!" + "Disse Precursor Orbs er meget værd nu.", + "Vi kan finde et par stykker gemt,", + "eller få nogle til at lave svære opgaver.", + "Vi vil være i stand til at købe ting med dem!" ], "ds163": [ - "Jak, now that we have the Palace Security Pass,", - "let's go have some fun in the big man's crib!" + "Jak, nu hvor vi har Palace Security Pass,", + "lad os have det sjovt i den store mands krybbe!" ], "ds164": [ - "Back up to get out of the mech." + "Ryg op for at komme ud af mekanik." ], "ds165": [ - "We're free, Jak! Thanks to me.", - "Nice to breathe some fresh air, huh?", - "We'll get that Baron Praxis guy, alright!" + "Vi er fri, Jak! Tak til mig.", + "Dejligt at indånde noget frisk luft, ikke?", + "Vi får fat i den Baron Praxis fyr, okay!" ], "ds166": [ - "I'm not getting out of this pod", - "'till you kill all those crazy flyin' Metal Heads!" + "Jeg kommer ikke ud af denne pod", + "indtil du dræber alle de skøre flyvende Metal Heads!" ], "ds167": [ - "I wonder why they wanted us to protect Samos' Hut.", - "Maybe now we'll get to meet the Shadow." + "Jeg undrer mig over, hvorfor de ville have os til at beskytte Samos' Hytte.", + "Måske skal vi nu møde Skyggen." ], "ds168": [ - "There's the Rift Ring!" + "Der er Rift-ringen!" ], "ds173": [ "Ahhh!" ], "ds174": [ - "Ooooh!" + "Åååh!" ], "ds175": [ "Whoa-whoa-oaa-ah!" ], "ds176": [ - "Whoa!" + "Hov!" ], "ds177": [ - "Hey!" + "Hej!" ], "ds178": [ - "Hey, watch that!" + "Hey, pas på det!" ], "ds179": [ - "Ooh!" + "Åh!" ], "ds180": [ - "Oh, boy!" + "Hold da op!" ], "ds181": [ - "Uooaaoh!" + "Wow!" ], "ds182": [ - "Wow, that was close!" + "Wow, det var tæt på!" ], "ds183": [ - "Oh, boy!" + "Hold da op!" ], "ds184": [ - "Yes!" + "Ja!" ], "ds185": [ - "Yeah!" + "Ja!" ], "ds186": [ - "Hey, watch it!" + "Hey, se det!" ], "ds187": [ - "All right!" + "Okay!" ], "ds188": [ - "Move over!" + "Flyt dig!" ], "ds189": [ - "Orange Lightning coming through!" + "Orange lyn kommer igennem!" ], "ds190": [ - "Rollin' with the homies!" + "Ruller med homierne!" ], "ds191": [ - "You're mine!" + "Du er min!" ], "ds192": [ - "There they are!" + "Der er de!" ], "ds193": [ - "Hey! Watch where you're drivin'!" + "Hej! Pas på, hvor du kører!" ], "ds194": [ - "How do I drive this thing?" + "Hvordan kører jeg denne ting?" ], "ds195": [ - "Yeah, that's right! I'm bad!" + "Yeah, det er rigtigt! Jeg er slem!" ], "ds196": [ - "Outta my way!" + "Ud af min vej!" ], "ds197": [ - "Outta my way!" + "Ud af min vej!" ], "ds198": [ - "Move it or lose it, buddy!" + "Flyt den eller tab den, kammerat!" ], "ds199": [ - "Mm... bye-bye!" + "Mm... farvel!" ], "ds200": [ - "Last lap!" + "Sidste omgang!" ], "ds201": [ - "Come on, come on!" + "Kom nu kom nu!" ], "ds202": [ - "Come on, come on, come on!" + "Kom så, kom så, kom så!" ], "ds203": [ - "Pedal to the metal!" + "Pedal til metal!" ], "ds204": [ - "Ooooah, I gotta catch up!" + "Åååh, jeg skal indhente det!" ], "ds205": [ - "Turn and burn, baby!" + "Vend og brænd, skat!" ], "ds206": [ - "Oooh, it's gonna be close!" + "Åh, det bliver tæt på!" ], "ds207": [ - "Eat my dust, buddy!" + "Spis mit støv, ven!" ], "ds208": [ - "Gotcha!" + "Godt!" ], "ds209": [ - "This is my track, grandma!" + "Dette er mit spor, bedstemor!" ], "ds210": [ - "Learn to drive!" + "Lær at køre!" ], "ds211": [ - "Turn, turn!" + "Vend, vend!" ], "ds212": [ - "Step on it!" + "Træd på det!" ], "ds213": [ - "Oooh, I won, I won!" + "Åh, jeg vandt, jeg vandt!" ], "ds214": [ - "Yeee, that's a good lap time." + "Yeee, det er en god omgangstid." ], "ds215": [ - "Oh, yeah! I'm rockin'!" + "Oh yeah! Jeg rocker!" ], "ds216": [ - "Another lap in the record book!" + "Endnu en omgang i rekordbogen!" ], "ds217": [ - "Take a good look at my tail!" + "Se godt på min hale!" ], "ds218": [ "Wahoo!" ], "ds219": [ - "Hey, fang boy, hurry up and get in,", - "we'll take you to Brutter!" + "Hej, fandreng, skynd dig og kom ind,", + "vi tager dig til Brutter!" ], "ds220": [ - "Here's your boy, Brutter! We're off to get another animal!" + "Her er din dreng, Brutter! Vi skal ud og hente et andet dyr!" ], "ds221": [ - "Yo, animal lover, get your furry butt in the vehicle!" + "Yo, dyreven, få din lodne numse i køretøjet!" ], "ds222": [ - "Here's another beast of burden!" + "Her er endnu et lastdyr!" ], "ds223": [ - "In the vehicle, buddy, we can save you!" + "I køretøjet, ven, vi kan redde dig!" ], "ds224": [ - "Another Lurker freed." + "Endnu en Lurker løsladt." ], "ds225": [ - "Let's move, eco breath! We gotta get you to Brutter." + "Lad os bevæge os, øko-ånde! Vi skal have dig til Brutter." ], "ds226": [ - "Hey, Brutter! Look what the cat turkey dragged in." + "Hej, Brutter! Se hvad kattekalkunen slæbte ind." ], "ds227": [ - "Lookie what we found!" + "Se hvad vi fandt!" ], "ds228": [ - "You recognize this monster?" + "Genkender du dette monster?" ], "ds229": [ - "We did it! We saved them all!" + "Vi gjorde det! Vi reddede dem alle!" ], "ds230": [ - "Catch the paddywagon, Jak!" + "Fang vognen, Jak!" ], "ds231": [ - "Crash the paddywagon!" + "Crash paddywagon!" ], "ds232": [ - "A little more damage and we got the sucker!" + "Lidt mere skade, og vi fik suget!" ], "ds233": [ - "He's smoking, Jak! Hit him again!" + "Han ryger, Jak! Slå ham igen!" ], "ds234": [ - "That caused some damage!" + "Det forårsagede en del skade!" ], "ds235": [ - "One more like that and he's through!" + "Sådan en mere, og han er færdig!" ], "ds236": [ - "Find the next vehicle!" + "Find det næste køretøj!" ], "ds237": [ - "Yes, we took it out!" + "Ja, vi tog den ud!" ], "ds238": [ - "Hunt and destroy, baby!" + "Jagt og ødelæg, skat!" ], "ds239": [ - "Hit it, hit it!" + "Slå den, slå den!" ], "ds240": [ - "Take it out!" + "Tag det ud!" ], "ds241": [ - "Pick up the Lurker, Jak!" + "Saml Lurkeren, Jak!" ], "ds242": [ - "Get the Lurker!" + "Hent Lurkeren!" ], "ds243": [ - "We need to pick up that Lurker back there." + "Vi skal hente den Lurker derude." ], "ds244": [ - "Usually, I don't like to be this close to Lurkers." + "Normalt kan jeg ikke lide at være så tæt på Lurkers." ], "ds245": [ - "Ehehe, you seem like a nice, uh... animal." + "Ehehe, du virker som et dejligt, øh... dyr." ], "ds246": [ - "Easy, buddy. Don't bite me!" + "Nemt, kammerat. Bid mig ikke!" ], "ds247": [ - "Hey, stop slobbering on me!" + "Hey, stop med at sladre om mig!" ], "ds248": [ - "He's recharging!" + "Han lader op!" ], "ds249": [ - "Ooh, we got him good that time!" + "Åh, vi fik ham godt den gang!" ], "ds250": [ - "Yeah, now he's hurtin'!" + "Ja, nu har han ondt!" ], "ds251": [ - "Good shot, Jak!" + "Godt skud, Jak!" ], "ds252": [ - "Incoming!" + "Indkommende!" ], "ds253": [ - "Yeah, we got him!" + "Ja, vi har ham!" ], "ds254": [ - "Jak, hide behind the pillars when he shoots!" + "Jak, gem dig bag søjlerne, når han skyder!" ], "ds255": [ - "He's got the Precursor Stone!" + "Han har Precursor Stone!" ], "ds256": [ - "Kick the bomb right at him, Jak!" + "Spark bomben lige mod ham, Jak!" ], "ds257": [ - "That one hit him!" + "Den ramte ham!" ], "ds258": [ - "Look out!" + "Pas på!" ], "ds259": [ - "Jump the gap!" + "Spring hul!" ], "ds260": [ - "Yeah, you hit him!" + "Ja, du slog ham!" ], "ds261": [ - "As if there wasn't enough of Krew already." + "Som om der ikke var nok af Krew allerede." ], "ds262": [ - "Shoot 'em all, Jak! We'll sort 'em out later..." + "Skyd dem alle sammen, Jak! Vi ordner dem senere..." ], "ds263": [ - "There's the real Krew! Shoot him!" + "Der er den rigtige Krew! Skyd ham!" ], "ds264": [ - "You got him!" + "Du har ham!" ], "ds265": [ - "Watch your back, Jak!" + "Pas på din ryg, Jak!" ], "ds266": [ - "They're comin' again!" + "De kommer igen!" ], "ds267": [ - "Now you've got us mad." + "Nu har du gjort os sure." ], "ds268": [ - "Good shot, Jak! The big man is hurtin' now." + "Godt skud, Jak! Den store mand har det ondt nu." ], "ds269": [ - "And the challenger is down for the count!" + "Og udfordreren er nede for optællingen!" ], "ds270": [ - "Keep movin', baby! He's gonna shoot!" + "Bliv ved, skat! Han vil skyde!" ], "ds271": [ - "Wooh, here come some Metal Heads!" + "Wooh, her kommer nogle Metal Heads!" ], "ds272": [ - "Protect the kid!" + "Beskyt barnet!" ], "ds273": [ - "Kill all the Metal Heads!" + "Dræb alle metalhovederne!" ], "ds274": [ - "More Metal Heads!" + "Flere metalhoveder!" ], "ds275": [ - "Shoot Kor's legs out, Jak!" + "Skyd Kors ben ud, Jak!" ], "ds276": [ - "He's down, Jak! Hit him in the head!" + "Han er nede, Jak! Slå ham i hovedet!" ], "ds277": [ - "Boot to the head, boot to the head!" + "Støvle til hovedet, støvle til hovedet!" ], "ds278": [ - "I think we should hide somewhere!" + "Jeg synes, vi skal gemme os et sted!" ], "ds279": [ - "Take cover before he blows!" + "Tag dækning før han blæser!" ], "ds280": [ - "Yeah, you got him good that time!" + "Ja, du fik ham godt den gang!" ], "ds281": [ - "Oh, man, now he's angry!" + "Åh, mand, nu er han vred!" ], "ds282": [ - "Get him, Jak!" + "Få ham, Jak!" ], "ds283": [ - "He's gonna shoot!" + "Han vil skyde!" ], "ds284": [ - "Nice hit, partner!" + "Flot hit, makker!" ], "ds285": [ - "That had to hurt him." + "Det måtte gøre ham ondt." ], "ds286": [ - "You messed with the wrong heroes, buddy!" + "Du rodede med de forkerte helte, kammerat!" ], "ds287": [ - "Shoot him again, Jak!" + "Skyd ham igen, Jak!" ], "ds288": [ - "Jak, we're taking a beating!" + "Jak, vi får tæsk!" ], "ds289": [ - "Stay away from the Dark Eco!" + "Hold dig væk fra Dark Eco!" ], "ds302": [ - "We've almost got him, Jak!" + "Vi har næsten fået ham, Jak!" ], "ds303": [ - "That's it! You did it!" + "Det er det! Du gjorde det!" ], "ds305": [ - "Shoot the switch to change the coveyor belt's", - "direction!" + "Skyd kontakten for at skifte transportbåndets", + "retning!" ], "ds306": [ - "You gotta shoot the switch, Jak!" + "Du skal tage kontakten, Jak!" ], "ds307": [ - "Find the switch to change the conveyor's direction!" + "Find kontakten for at ændre transportørens retning!" ], "ds321": [ - "Take out the turrets!" + "Tag tårnene ud!" ], "ds322": [ - "Hit the turrets, Jak!" + "Ram tårnene, Jak!" ], "ds323": [ - "Doin' some damage!" + "Gør noget skade!" ], "ds324": [ - "Get in the Titan Suit!" + "Kom i Titan-dragten!" ], "ds325": [ - "Shoot that ship!" + "Skyd det skib!" ], "ds326": [ - "Yeah, that ship's feelin' it now!" + "Ja, det skib føler det nu!" ], "ds327": [ - "Ooh, direct hits." + "Åh, direkte hits." ], "ds328": [ - "I think you hurt it that time!" + "Jeg tror, ​​du gjorde ondt den gang!" ], "ds329": [ - "The ship's goin' down! You did it, Jak!" + "Skibet går ned! Du gjorde det, Jak!" ], "ds353": [ - "That must be the missile Torn wants us to blow up!" + "Det må være missilet Torn vil have os til at sprænge i luften!" ], "ds354": [ - "Break those tubes in the center, Jak!" + "Bryd de rør i midten, Jak!" ], "ds372": [ - "Gotta ride the JET-Board on this one, Jak!" + "Jeg skal køre på JET-boardet på denne, Jak!" ], "ds375": [ - "Look out for the ray!" + "Pas på strålen!" ], "ds378": [ - "We gotta break all the support cables!" + "Vi skal bryde alle støttekabler!" ], "ds379": [ - "Grind on the support bases to break the cables." + "Slib på støttebaserne for at bryde kablerne." ], "ds394": [ - "Spider! Spider! Huff... huff... I hate spiders!" + "Edderkop! Edderkop! Huff... huff... Jeg hader edderkopper!" ], "ds395": [ - "Gotta run, gotta run!" + "Må løbe, må løbe!" ], "ds398": [ - "The first beam!" + "Den første stråle!" ], "ds399": [ - "The second beam! The door's opening!" + "Den anden stråle! Døren åbner sig!" ], "ds404": [ - "There's Sig!" + "Der er Sig!" ], "ds405": [ - "Get the blocks to go into the slots, Jak!" + "Få blokkene til at gå ind i hullerne, Jak!" ], "ds406": [ - "Shoot or kick the blocks!" + "Skyd eller spark til blokkene!" ], "ds407": [ - "You have to get the blocks in the slots faster!" + "Du er nødt til at få blokkene i slots hurtigere!" ], "ds408": [ - "Run, Jak!" + "Løb, hvordan!" ], "ds409": [ - "Keep moving!" + "Fortsæt!" ], "ds410": [ - "We gotta stay ahead of that thing!" + "Vi skal være på forkant med den ting!" ], "ds439": [ - "Shoot all the Metal Head eggs, Jak!" + "Skyd alle Metal Head-æggene, Jak!" ], "ds440": [ - "We didn't get all those nasty eggs!" + "Vi fik ikke alle de grimme æg!" ], "ds441": [ - "We missed some Metal Head eggs!" + "Vi savnede nogle Metal Head-æg!" ], "ds461": [ - "We gotta jump onto the crate dangling from the crane!" + "Vi skal hoppe op i kassen, der dingler fra kranen!" ], "ds462": [ - "Use your hoverboard on this path!" + "Brug dit hoverboard på denne vej!" ], "ds463": [ - "You can grind to cross those pipes using your", + "Du kan slibe for at krydse disse rør ved hjælp af din", "hoverboard!" ], "ds464": [ - "Ride the half-pipe to the end!" + "Kør half-pipen til ende!" ], "ds466": [ - "You gotta drop a bomb into each well, Jak!" + "Du skal smide en bombe i hver brønd, Jak!" ], "ds467": [ - "Use the ramp to get high enough to drop the bomb in!" + "Brug rampen til at komme højt nok til at kaste bomben ind!" ], "ds468": [ - "Gotta jump higher!" + "Må hoppe højere!" ], "ds469": [ - "Only a minute before we're toast, Jak!" + "Kun et minut før vi skåler, Jak!" ], "ds470": [ - "30 seconds left, then we go BOOM!" + "30 sekunder tilbage, så går vi BOOM!" ], "ds471": [ - "Ten seconds left, Jak!" + "Ti sekunder tilbage, Jak!" ], "ds472": [ - "That's one well down, five to go!" + "Det er et godt stykke ned, fem tilbage!" ], "ds473": [ - "Two wells are history, four left!" + "To brønde er historie, fire tilbage!" ], "ds474": [ - "Three wells cut, only three to go!" + "Tre brønde skåret, kun tre tilbage!" ], "ds475": [ - "That's the fourth well, two bad boys left!" + "Det er den fjerde godt, to slemme drenge tilbage!" ], "ds476": [ - "You got the fifth well, only one to go!" + "Du fik den femte brønd, kun én tilbage!" ], "ds477": [ - "You got 'em all, Jak!" + "Du har dem alle sammen, Jak!" ], "ds478": [ - "The last well is up where we rescued Vin!" + "Den sidste brønd er oppe, hvor vi reddede Vin!" ], "ds479": [ - "Now he's vulnerable!" + "Nu er han sårbar!" ], "ds480": [ - "Take him out!" + "Tag ham ud!" ], "ds481": [ - "Get him while he's vulnerable!" + "Få ham, mens han er sårbar!" ], "ds482": [ - "Here he comes..." + "Her kommer han..." ], "ds483": [ - "How's it feel to have your pants down, Baron?" + "Hvordan føles det at have bukserne nede, baron?" ], "ds484": [ - "Shoot him, shoot him!" + "Skyd ham, skyd ham!" ], "ds485": [ - "Look out!" + "Pas på!" ], "ds487": [ - "Easy, Jak, we gotta get this guy to safety!" + "Nemt, Jak, vi skal bringe denne fyr i sikkerhed!" ], "ds488": [ - "We're takin' a lotta damage, buddy!" + "Vi tager meget skade, ven!" ], "ds489": [ - "We're gettin' our butts kicked!" + "Vi får sparket i røverne!" ], "ds490": [ - "Maybe I should drive..." + "Måske jeg skulle køre..." ], "ds491": [ - "Let's go, wondergoon,", - "we'll take you to a safe place in the city!" + "Lad os gå, vidundermand,", + "vi tager dig til et sikkert sted i byen!" ], "ds492": [ - "Okay, ride's over, out you go!" + "Okay, turen er slut, så afsted!" ], "ds493": [ - "All aboard the Underground railroad!", - "Next stop: Your new safehouse!" + "Alle ombord på den underjordiske jernbane!", + "Næste stop: Dit nye safehouse!" ], "ds494": [ - "I believe this is your stop!" + "Jeg tror, ​​det er dit stop!" ], "ds495": [ - "Daxter's Freedom Fighter Taxi Service!", - "Hurry up, buddy, we ain't got all day." + "Daxters Freedom Fighter Taxi Service!", + "Skynd dig, ven, vi har ikke hele dagen." ], "ds496": [ - "Home free, baby!", - "Don't forget to tell Torn how well we did!" + "Frit hjem, skat!", + "Glem ikke at fortælle Torn, hvor godt vi klarede det!" ], "ds497": [ - "You looking for a lift, fighter boy?" + "Leder du efter et lift, fighter dreng?" ], "ds498": [ - "Okay, this is where you get off. So... get off." + "Okay, det er her du slipper. Så... stå af." ], "ds499": [ - "We did it, Jak!", - "We got all the fighters to the new safehouses!" + "Vi gjorde det, Jak!", + "Vi fik alle kæmperne til de nye safehouses!" ], "ds500": [ - "Statues are becoming an endangered species around here." + "Statuer er ved at blive en truet art her omkring." ], "ds501": [ - "I got us a talkbox.", - "The city people use these things to communicate", - "with each other." + "Jeg fik os en talkbox.", + "Byens folk bruger disse ting til at kommunikere", + "med hinanden." ], "ds502": [ - "Let's go see Onin and her crazy monkey bird." + "Lad os se Onin og hendes skøre abefugl." ], "ds503": [ - "I think we need to go back to the city, Jak." + "Jeg tror, ​​vi skal tilbage til byen, Jak." ], "dsek001": [ - "Kid! Stay with him, Jak!" + "Barn! Bliv hos ham, Jak!" ], "dsek002": [ - "Catch up to them, Jak!" + "Indhent dem, Jak!" ], "dsek003": [ - "Where'd they go?!" + "Hvor blev de af?!" ], "dsek004": [ - "There they go again!" + "Der går de igen!" ], "dsek005": [ - "Uh oh, here comes trouble!" + "Åh, her kommer problemer!" ], "dsek006": [ - "More guards!?" + "Flere vagter!?" ], "dsek007": [ - "Kid, please! You're killin' me!" + "Knægt, tak! Du dræber mig!" ], "dsek008": [ - "Here, poochie, poochie..." + "Her, poochie, poochie..." ], "dsek009": [ - "There goes that crazy crocadog again...!" + "Der går den skøre krokadog igen...!" ], "dsek010": [ - "Chase after the Kid!" + "Jagt efter barnet!" ], "dsek011": [ - "Keep up with the Kid!" + "Hold op med barnet!" ], "dsek012": [ - "Crocadog!" + "Krokodille!" ], "dsek013": [ - "Phew, finally... let's get these two to Kor!" + "Pyha, endelig... lad os få disse to til Kor!" ], "ero001": [ - "Out of my way!" + "Ud af min vej!" ], "ero002": [ - "I own this track!" + "Jeg ejer dette spor!" ], "ero003": [ - "Give it up, eco freak!" + "Giv op, øko-freak!" ], "ero004": [ - "Payback time." + "Hævnens time." ], "ero005": [ - "Let's make this interesting!" + "Lad os gøre dette interessant!" ], "ero006": [ - "Eat wall!" + "Spis væg!" ], "ero007": [ - "Time to die!" + "Tid til at dø!" ], "ero008": [ - "Move over!" + "Flyt dig!" ], "ero009": [ - "Catch me now, loser!" + "Fang mig nu, taber!" ], "ero010": [ - "I'm too fast for you!" + "Jeg er for hurtig til dig!" ], "ero011": [ - "Now you're racing with the big boys!" + "Nu ræser du med de store drenge!" ], "ero012": [ - "Here's one for the Baron." + "Her er en til baronen." ], "ero013": [ - "Take this!" + "Tag dette!" ], "ero014": [ - "You're making this too easy!" + "Du gør det for nemt!" ], "ero015": [ - "Hahaha, bye bye!" + "Hahaha, farvel!" ], "ero016": [ - "You want some?" + "Vil du have noget?" ], "ero017": [ - "Now you see why I never lose." + "Nu kan du se hvorfor jeg aldrig taber." ], "ero018": [ - "The crowd loves me!" + "Publikum elsker mig!" ], "ero019": [ "Ahh!" ], "ero020": [ - "Here's some pain!" + "Her er noget smerte!" ], "ero021": [ - "Try to erase these!" + "Prøv at slette disse!" ], "ero022": [ - "How's your reflexes?" + "Hvordan er dine reflekser?" ], "ero023": [ - "Too much for you?!" + "For meget for dig?!" ], "ero024": [ - "Had enough?" + "Fik du nok?" ], "ero025": [ - "Avoid this, smart-ass!" + "Undgå dette, smart-ass!" ], "ero026": [ - "Say goodnight, eco freak!" + "Sig godnat, øko-freak!" ], "ero027": [ - "You can't beat me!" + "Du kan ikke slå mig!" ], "ero028": [ - "I'd die before I let you win!" + "Jeg ville dø, før jeg lod dig vinde!" ], "ero029": [ - "This will be your last lap." + "Dette bliver din sidste omgang." ], "ero030": [ - "Crash and burn!" + "Crash og brænd!" ], "ero031": [ - "To the end!" + "Til slutningen!" ], "ero032": [ - "Last lap to live!" + "Sidste omgang at leve!" ], "ero033": [ - "Now we end this!" + "Nu afslutter vi dette!" ], "ero034": [ - "You won't see the finish line!" + "Du vil ikke se målstregen!" ], "ero035": [ - "DIE!" + "DØ!" ], "ero036": [ - "Die!" + "Dø!" ], "ero037": [ "Hahahaha!" ], "ero038": [ - "YEAH!" + "JA!" ], "ero039": [ "HA!" ], "ero040": [ - "NO!" + "INGEN!" ], "ero041": [ - "NOOOOO!" + "NEJ!" ], "ero042": [ - "AHHHHHH!" + "AHHHHH!" ], "ero043": [ - "Here we go." + "Nu sker det." ], "ero044": [ - "See you later." + "Vi ses senere." ], "ero045": [ - "Fool! You cannot defeat me." + "Narre! Du kan ikke besejre mig." ], "ero046": [ - "You missed a ring." + "Du gik glip af en ring." ], "ero047": [ - "This race is mine!" + "Denne race er min!" ], "ero048": [ - "You can never be as fast as me!" + "Du kan aldrig være så hurtig som mig!" ], "ero049": [ - "Keira wants a real man." + "Keira vil have en rigtig mand." ], "ero050": [ - "Bad luck, old chap." + "Uheld, gamle fyr." ], "ero051": [ - "Nice try." + "Godt forsøgt." ], "ero052": [ - "Move over!" + "Flyt dig!" ], "ero053": [ - "Out of my way!" + "Ud af min vej!" ], "ero054": [ - "Coming through!" + "Kommer igennem!" ], "ero055": [ - "Bye bye!" + "Hej hej!" ], "ero056": [ - "Here I come!" + "Her kommer jeg!" ], "ero057": [ - "Get used to watching my back!" + "Væn dig til at passe på min ryg!" ], "ero058": [ - "This is my city, eco freak." + "Det her er min by, øko-freak." ], "ero059": [ - "Looking sloppy, Jak." + "Ser sjusket ud, Jak." ], "ero060": [ - "Give it up!" + "Opgiv det!" ], "ero061": [ - "Not this time." + "Ikke denne gang." ], "ero062": [ - "Getting a bit nervous?" + "Bliver du lidt nervøs?" ], "ero063": [ - "Come back here!" + "Kom tilbage!" ], "ero064": [ - "Move over, slowpoke!" + "Flyt over, slowpoke!" ], "ero065": [ - "This is where I beat you." + "Det er her, jeg slog dig." ], "ero066": [ - "Final stretch!" + "Sidste stræk!" ], "ero067": [ - "It's over!" + "Det er overstået!" ], "ero068": [ - "I own this city." + "Jeg ejer denne by." ], "ero069": [ - "What? Where'd you come from?" + "Hvad? Hvor kom du fra?" ], "ero070": [ - "You're just lucky." + "Du er bare heldig." ], "ero071": [ - "You can't handle the speed!" + "Du kan ikke klare hastigheden!" ], "ero072": [ - "Die, freak." + "Dø, freak." ], "ero073": [ - "No!" + "Ingen!" ], "ero074": [ - "STOP!" + "HOLD OP!" ], "ero075": [ "Hahahaha!" @@ -3215,77 +3215,77 @@ "Ahhh!" ], "ero078": [ - "Ough!" + "Dybt!" ], "ero079": [ - "Oof!" + "Øv!" ], "ero080": [ - "Beat it, freak!" + "Slå det, freak!" ], "ero081": [ - "Care to get back in the chair?" + "Vil du komme tilbage i stolen?" ], "ero082": [ - "This race was too easy." + "Dette løb var for let." ], "ero083": [ - "It was easier than I thought to beat you." + "Det var nemmere end jeg troede at slå dig." ], "ero084": [ - "Not even close, Keira's betting on the wrong man." + "Ikke engang tæt på, Keira satser på den forkerte mand." ], "ero085": [ - "Loser! You disgust me!" + "Taber! Jeg afskyr dig!" ], "ero086": [ - "You see Jak, I win, and I get what I want.", - "Someday I will be Baron, then the city will really pay!" + "Ser du Jak, jeg vinder, og jeg får, hvad jeg vil have.", + "En dag bliver jeg baron, så betaler byen virkelig!" ], "ero087": [ - "I should have known you'd be no match." + "Jeg burde have vidst, at du ikke ville være match." ], "ero088": [ - "I win, Keira's going to love me!" + "Jeg vinder, Keira kommer til at elske mig!" ], "ero089": [ - "Maybe you should go back to wherever you came from." + "Måske skulle du vende tilbage til hvor du end kom fra." ], "ero090": [ - "I'll get a victory kiss from Keira later." + "Jeg får et sejrskys fra Keira senere." ], "ero091": [ - "Again I prove my superiority." + "Igen beviser jeg min overlegenhed." ], "ero092": [ - "You see? You are no match for me." + "Du ser? Du er ingen match for mig." ], "ero093": [ - "Too bad, I win!" + "Ærgerligt, jeg vinder!" ], "ero094": [ - "Hahahaha, pathetic insect, I win!" + "Hahahaha, patetisk insekt, jeg vinder!" ], "ero095": [ - "You can never defeat me!" + "Du kan aldrig besejre mig!" ], "ero096": [ - "Ahhh!...ahh." + "Åhh! ... åhh." ], "ero097": [ - "Ugh!" + "Åh!" ], "ero098": [ "Ughhh!" ], "ero099": [ - "Dahh!" + "Ja!" ], "ero100": [ - "Yaughh!" + "Yaugh!" ], "ero101": [ - "AUGHH!" + "AUGH!" ], "ero102": [ "OW!" @@ -3297,2157 +3297,2157 @@ "DAUGHH!" ], "erol001": [ - "I'm looking for you, eco freak,", - "and when I find you, you'll wish you died in prison." + "Jeg leder efter dig, øko freak,", + "og når jeg finder dig, vil du ønske, at du døde i fængslet." ], "erol002": [ - "This is Erol. Looks like you're running out of friends.", - "We've arrested them all and thrown them into your", - "favorite prison. By the way, that blonde girl Tess", - "screamed so delightfully when she was arrested.", - "I can't wait for her turn in the chair.", + "Det her er Erol. Det ser ud til, at du er ved at løbe tør for venner.", + "Vi har arresteret dem alle og smidt dem ind i din", + "yndlingsfængsel. Forresten, den blonde pige Tess", + "skreg så dejligt, da hun blev anholdt.", + "Jeg kan ikke vente på hendes tur i stolen.", "Hahahahaha...." ], "erol003": [ - "This is Erol. Just remember, the only reason I'm letting you", - "walk is so I can face you in the championship race!" + "Det her er Erol. Bare husk, den eneste grund til, at jeg tillader dig", + "gåtur er, så jeg kan møde dig i mesterskabsløbet!" ], "hal001": [ - "Quiet! Here comes pretty boy." + "Rolige! Her kommer den smukke dreng." ], "hal002": [ - "'Bout time you showed up. Okay, let's do this." + "'Det var på tide, at du dukkede op. Okay, lad os gøre dette." ], "hal003": [ - "Krew said you'll protect us all the way to the statue." + "Krew sagde du vil beskytte os hele vejen til statuen." ], "hal004": [ - "We go down!" + "Vi går ned!" ], "hal006": [ - "This way!" + "Denne måde!" ], "hal007": [ - "AHH! It's a Metal Head! Shoot it, shoot it!" + "AHH! Det er et metalhoved! Skyd den, skyd den!" ], "hal008": [ - "Stay with us!" + "Bliv hos os!" ], "hal009": [ - "Man, Krew's gonna be pissed if you mess this up." + "Mand, Krew bliver sur, hvis du ødelægger det her." ], "hal010": [ - "Don't leave us to die!" + "Lad os ikke dø!" ], "hal011": [ - "You ditch us and Krew's gonna mess you up!" + "Hvis du dropper os, og Krew vil ødelægge dig!" ], "hal012": [ - "We need to stay together." + "Vi er nødt til at blive sammen." ], "hal013": [ - "I thought this guy was supposed to be protecting us!" + "Jeg troede, at denne fyr skulle beskytte os!" ], "hal014": [ - "That's it! We're calling the mission off,", - "we don't go until you're serious." + "Det er det! Vi aflyser missionen,", + "vi går ikke før du er seriøs." ], "hal015": [ - "I'm not getting killed because of this loser,", - "this mission is over." + "Jeg bliver ikke dræbt på grund af denne taber,", + "denne mission er forbi." ], "hal019": [ - "Let's go back before we all get killed." + "Lad os gå tilbage før vi alle bliver dræbt." ], "hal020": [ - "Ugh, this place stinks." + "Uh, dette sted stinker." ], "hal021": [ - "I got a bad feeling about this place." + "Jeg fik en dårlig følelse af dette sted." ], "hal022": [ - "Uh oh, I think I wet myself." + "Åh, jeg tror, ​​jeg vådte mig selv." ], "hal023": [ - "No! Please!" + "Ingen! Vær venlig!" ], "hal024": [ - "I wanna go home." + "Jeg vil gerne hjem." ], "hal025": [ - "Uhh, I'm hearing things." + "Uhh, jeg hører ting." ], "hal026": [ - "Let's go back." + "Lad os gå tilbage." ], "hal027": [ - "Move your butts, or I'll move 'em for ya!" + "Flyt dine numser, eller jeg flytter dem for dig!" ], "hal028": [ - "This job beats being a garbage man." + "Dette job slår at være skraldemand." ], "hal029": [ - "Ain't the smell of sulphur grand?" + "Er duften af ​​svovl ikke stor?" ], "hal030": [ - "Cover your ears!" + "Tildæk dine ører!" ], "hal031": [ - "I love this job." + "Jeg elsker dette job." ], "hal032": [ - "Great, now we're trapped in this slime pit!" + "Fantastisk, nu er vi fanget i denne slimgrav!" ], "hal033": [ - "Shoot, baby, shoot!" + "Skyd, skat, skyd!" ], "hal034": [ - "Ahh! The ceiling's crawling!" + "Ahh! Loftet kravler!" ], "hal035": [ - "I can't get away!" + "Jeg kan ikke komme væk!" ], "hal036": [ - "There's one coming right at me!" + "Der kommer en lige hen til mig!" ], "hal037": [ - "It sees me!" + "Det ser mig!" ], "hal038": [ - "Ahh! Stay away!" + "Ahh! Bliv væk!" ], "hal039": [ - "It's hitting me!" + "Det rammer mig!" ], "hal040": [ - "Gahh, I'm gonna die here!" + "Gahh, jeg skal dø her!" ], "hal041": [ - "I'm getting zapped!" + "Jeg bliver zappet!" ], "hal042": [ - "This'll be the end of me!" + "Det vil være enden på mig!" ], "hal043": [ - "Help me! I've got eight kids to feed!" + "Hjælp mig! Jeg har otte børn at fodre!" ], "hal044": [ - "Nice work, those were some nasty Metal Heads." + "Godt arbejde, det var nogle grimme Metal Heads." ], "hal045": [ - "There you are, why don't you make yourself useful?" + "Der er du, hvorfor gør du dig ikke nyttig?" ], "hal046": [ - "Keep moving!" + "Fortsæt!" ], "hal047": [ - "On we go, we're not getting any younger." + "Når vi går, bliver vi ikke yngre." ], "hal048": [ - "Ahh! They're crawling down the walls!" + "Ahh! De kravler ned ad væggene!" ], "hal049": [ - "Way to go, this is where I come in." + "Godt at gå, det er her jeg kommer ind." ], "hal050": [ - "You mean cover your ass! Fire in the hole!" + "Du mener, dæk din røv! Brand i hullet!" ], "hal051": [ - "You better keep your head down, sugar." + "Du må hellere holde hovedet nede, sukker." ], "hal052": [ - "Your bad breath, let's move." + "Din dårlige ånde, lad os flytte." ], "hal053": [ - "That straightened your hair, huh?", - "Hehe, next time you'll listen to me. Okay, let's move." + "Det glattede dit hår, hva'?", + "Hehe, næste gang skal du høre på mig. Okay, lad os flytte." ], "hal054": [ - "Oof, that had to hurt.", - "I told you to keep back, but no one ever listens to Jinx." + "Øv, det måtte gøre ondt.", + "Jeg bad dig holde tilbage, men ingen lytter nogensinde til Jinx." ], "hal055": [ - "More of those monsters!" + "Flere af de monstre!" ], "hal056": [ - "So what, we got a dream team here. Do your stuff, Jak!" + "Så hvad, vi har et drømmehold her. Gør dine ting, Jak!" ], "hal057": [ - "Jak! Get your butt up here and do your thing." + "Jak! Få din røv op her og gør dine ting." ], "hal058": [ - "Take 'em out, blue boy." + "Tag dem ud, blå dreng." ], "hal059": [ - "You're pretty handy with that iron, blondie." + "Du er ret handy med det jern, blondie." ], "hal060": [ - "Shut up, Mog." + "Hold kæft, Mog." ], "hal061": [ - "Here they come again!" + "Her kommer de igen!" ], "hal062": [ - "Get up here and earn your keep!" + "Kom op her og tjen dit hold!" ], "hal063": [ - "Krew was right about you. You got the magic, man." + "Krew havde ret om dig. Du har magien, mand." ], "hal064": [ - "Nice fighting, man, I'm beginning to like you." + "God kamp, ​​mand, jeg begynder at kunne lide dig." ], "hal065": [ - "Okay... that doesn't look good. Jak, you're up!" + "Okay... det ser ikke godt ud. Jak, du er oppe!" ], "hal066": [ - "Wow! Beams of death!", - "I'm staying right here 'til you do something about that." + "Wow! Dødens stråler!", + "Jeg bliver lige her, indtil du gør noget ved det." ], "hal067": [ - "Uhhh, Jak. I think you're the man for this job." + "Øhh, Jak. Jeg tror, ​​du er manden til dette job." ], "hal068": [ - "Jump the beams, Jak." + "Spring over bjælkerne, Jak." ], "hal069": [ - "Nice moves." + "Flotte træk." ], "hal070": [ - "Yeah... you wish, tubby." + "Ja... ønsker du det, tubby." ], "hal071": [ - "We're staying put 'til you take out those Metal Heads." + "Vi bliver ved, indtil du tager de metalhoveder ud." ], "hal072": [ - "Sweet as a ballerina, hehehehe..." + "Sød som en ballerina, hehehehe..." ], "hal073": [ - "Knock 'em silly, Jak!" + "Slå dem dumme, Jak!" ], "hal074": [ - "This one's gonna be loud!" + "Den her vil være høj!" ], "hal075": [ - "This is too easy." + "Det er for nemt." ], "hal080": [ - "We ain't moving, 'til you kill 'em all!" + "Vi bevæger os ikke, før du dræber dem alle!" ], "hal081": [ - "OK, let's get out of here before more come back." + "Okay, lad os komme væk herfra før flere kommer tilbage." ], "hal082": [ - "You're earning your dough today. Let's finish this!" + "Du tjener din dej i dag. Lad os afslutte dette!" ], "hal083": [ - "I'm impressed, Jak. I'll put in a good word with the boss." + "Jeg er imponeret, Jak. Jeg vil sige et godt ord med chefen." ], "hal084": [ - "Yeah, do it, Jinx." + "Ja, gør det, Jinx." ], "hal085": [ - "Man, Jinx, what'd you put in those boomsticks?" + "Mand, Jinx, hvad puttede du i de boomsticks?" ], "hal086": [ - "Look at him go." + "Se ham gå." ], "hal087": [ - "I could jump like that." + "Sådan kunne jeg hoppe." ], "hal088": [ - "Get away from me, you crazy monster!" + "Væk fra mig, dit skøre monster!" ], "hal090": [ - "This is where I come in, cover your ears." + "Det er her, jeg kommer ind, dæk dine ører." ], "hal091": [ - "Fire in the hole!" + "Brand i hullet!" ], "hal092": [ - "And on we go." + "Og vi går." ], "hal093": [ - "Please, allow me." + "Tillad mig venligst." ], "hal094": [ - "One unclogged sewer, comin' up." + "En ikke-tilstoppet kloak, kommer op." ], "hal095": [ - "This is my boomshtick!" + "Dette er mit boomshick!" ], "hal096": [ - "Boom, baby!" + "Bom, skat!" ], "hal097": [ - "We're clear, let's move." + "Vi er klare, lad os flytte." ], "hal101": [ - "Ahh! That's gonna leave a mark." + "Ahh! Det vil efterlade spor." ], "hal102": [ - "Die! A little help would be good!" + "Dø! Lidt hjælp ville være godt!" ], "hal103": [ - "Watch it, pretty boy, or I'll rearrange your face." + "Se det, smukke dreng, ellers omarrangerer jeg dit ansigt." ], "hal104": [ - "You got an itchy trigger finger." + "Du har en kløende triggerfinger." ], "hal107": [ - "Piece of cake." + "Et stykke kage." ], "hal108": [ - "Get over here, Jak!" + "Kom herover, Jak!" ], "hal109": [ - "Stay close, pretty boy!" + "Hold dig tæt på, smukke dreng!" ], "hal111": [ - "Keep with us, tough guy!" + "Bliv med os, hårde fyr!" ], "hal112": [ - "You're in the way, Jak, move!" + "Du er i vejen, Jak, flyt!" ], "hal113": [ - "I wouldn't stand there if I were you!" + "Jeg ville ikke stå der, hvis jeg var dig!" ], "hal114": [ - "This is gonna be loud." + "Det her vil være højt." ], "hal115": [ - "Oh!" + "Åh!" ], "hal116": [ - "Oh!" + "Åh!" ], "hal117": [ - "Hey!" + "Hej!" ], "hal118": [ - "It's a trap!" + "Det er en fælde!" ], "hal119": [ - "Yeah, why did we sign up for this?" + "Ja, hvorfor tilmeldte vi os dette?" ], "hal120": [ - "I got 30 keys of high explosives strapped to my back...", - "Great..." + "Jeg har 30 nøgler med høje sprængstoffer spændt på ryggen...", + "Store..." ], "hal121": [ - "Just shut your whiny traps and keep moving." + "Bare luk dine klynkende fælder og fortsæt i bevægelse." ], "hal122": [ - "Uh, do we have to?" + "Øh, skal vi det?" ], "hal123": [ - "Uhh, did you hear that?" + "Øhh, hørte du det?" ], "hal124": [ - "We are so dead, man." + "Vi er så døde, mand." ], "hal125": [ - "Shut up! I'll go ahead and check it out..." + "Hold kæft! Jeg går videre og tjekker det ud..." ], "hal126": [ - "Man, that thing's ugly." + "Mand, den ting er grim." ], "hal127": [ - "Get him, man, before he gets us." + "Få ham, mand, før han får fat i os." ], "hal128": [ - "They're coming up from behind, too!" + "De kommer også bagfra!" ], "hal129": [ - "Jak's my hero." + "Hvordan har min helt det?" ], "hal130": [ - "Sounds like I got gas." + "Det lyder som om jeg har fået gas." ], "hal131": [ - "I hate Krew." + "Jeg hader Krew." ], "hal132": [ - "I'm sure not going back that way!" + "Jeg er sikker på ikke at gå tilbage på den måde!" ], "hal133": [ - "It's coming for me!" + "Det kommer til mig!" ], "hal134": [ - "I think it wants me!" + "Jeg tror, ​​den vil have mig!" ], "hal135": [ - "Help me, Jak!" + "Hjælp mig, Jak!" ], "hal136": [ - "I'm gonna die!" + "Jeg skal dø!" ], "hal137": [ - "It got me!" + "Det fik mig!" ], "hal138": [ - "Jak! Save me!" + "Hvordan! Red mig!" ], "hal139": [ - "Ughh! It got me!" + "Åhh! Det fik mig!" ], "hal140": [ - "Oughh! That beam smarts." + "Åhh! Den stråle er smart." ], "hal141": [ - "I've been shot!" + "Jeg er blevet skudt!" ], "hal142": [ - "I'm hit!" + "Jeg er ramt!" ], "hal143": [ - "Ughh!" + "Åh!" ], "hal144": [ - "Ughh! Help me!" + "Åhh! Hjælp mig!" ], "hal145": [ - "Hey man, watch it!" + "Hej mand, hold øje med det!" ], "hal146": [ - "Ohh, hit me again and I'll pound you!" + "Åh, slå mig igen, så slår jeg dig!" ], "hal147": [ - "Nobody's my friend..." + "Ingen er min ven..." ], "hal148": [ - "Oof!" + "Øv!" ], "hal149": [ - "Uh!" + "Øh!" ], "hal150": [ "Ahh!" ], "hal151": [ - "He's got me!" + "Han har mig!" ], "hal152": [ - "Gahh!! Not again!" + "Gah!! Ikke igen!" ], "hal153": [ - "I'm dying!" + "Jeg dør!" ], "hal154": [ - "Any more like that, then I'm history." + "Mere sådan, så er jeg historie." ], "hal155": [ - "I'm getting shot!" + "Jeg bliver skudt!" ], "hal156": [ - "Sure! Why don't you kill me too?" + "Jo da! Hvorfor dræber du mig ikke også?" ], "hal157": [ - "Check your targets, wimp boy!" + "Tjek dine mål, tøs!" ], "hal158": [ - "Shoot the shine-heads, not me!" + "Skyd glanshovederne, ikke mig!" ], "hal159": [ "Ahh!" ], "hal161": [ - "Ugh!" + "Åh!" ], "hal162": [ - "Oh!" + "Åh!" ], "hal163": [ - "Oh!" + "Åh!" ], "hal164": [ "Ah!" ], "hal165": [ - "Look out!" + "Pas på!" ], "hal166": [ - "We're not doing this with a rookie, I'm calling this off!" + "Vi gør ikke det her med en rookie, jeg aflyser det her!" ], "hal167": [ - "That's it, we're done! Come back when you're serious." + "Det er det, vi er færdige! Kom tilbage, når du er seriøs." ], "hal168": [ - "I'm cornered!" + "Jeg er i et hjørne!" ], "hal169": [ - "It's gonna shoot me!" + "Det vil skyde mig!" ], "hal170": [ - "Jak! Do something!" + "Jak! Gør noget!" ], "hal171": [ - "Ahh! It got me!" + "Ahh! Det fik mig!" ], "hal172": [ - "No no no! Help!" + "Nej Nej Nej! Hjælp!" ], "hal173": [ - "They're getting too close, Jak!" + "De kommer for tæt på, Jak!" ], "hal174": [ - "It's gonna get me!" + "Det får mig!" ], "hal175": [ - "I'm getting killed here!" + "Jeg bliver dræbt her!" ], "hal176": [ - "Jak! I'm about to be metal meat!" + "Jak! Jeg er ved at være metalkød!" ], "hal177": [ - "Aghh! That beam burns!" + "Åhh! Den stråle brænder!" ], "hal178": [ - "It's shooting me!" + "Det skyder mig!" ], "hal179": [ - "Watch out for the beam!" + "Pas på strålen!" ], "hal180": [ - "I'm shot!" + "Jeg er skudt!" ], "hal181": [ - "I'm trapped!" + "Jeg er fanget!" ], "hal182": [ - "Get back... I'm gonna detonate this one remotely." + "Vend tilbage... Jeg vil detonere denne på afstand." ], "hal183": [ "He-hah!" ], "hal184": [ - "Alright!" + "I orden!" ], "hal185": [ - "Let's go!" + "Lad os gå!" ], "hal186": [ - "Move it!" + "Flyt det!" ], "hal187": [ - "That's a lot of Metal Heads." + "Det er mange Metal Heads." ], "hal188": [ - "Oof!" + "Øv!" ], "hal189": [ "Daghh!" ], "hal190": [ - "Oughh..." + "Åhh..." ], "hal191": [ - "Krew's dead for getting me into this!" + "Krew er død for at få mig ind i det her!" ], "jak001": [ - "Alright!" + "I orden!" ], "jak002": [ - "Yeah!" + "Ja!" ], "jak003": [ - "Wooo!" + "Hov!" ], "jak004": [ - "Here we go!" + "Nu sker det!" ], "jak005": [ - "Nice!" + "Pæn!" ], "jak006": [ - "Rock 'n roll!" + "Rock og rul!" ], "jak007": [ - "Right on!" + "Lige på!" ], "jak008": [ - "Cool!" + "Fedt nok!" ], "jak009": [ - "Cool!" + "Fedt nok!" ], "jak010": [ - "Oh, yeah!" + "Oh yeah!" ], "jak011": [ - "Comin' through!" + "Kommer igennem!" ], "jak012": [ - "Look out!" + "Pas på!" ], "jak013": [ - "Last lap!" + "Sidste omgang!" ], "jak014": [ - "Watch out!" + "Pas på!" ], "jak015": [ - "Whoa!" + "Hov!" ], "jak016": [ - "Whoa!" + "Hov!" ], "jak017": [ - "Hold on, Dax!" + "Hold da op, Dax!" ], "jak018": [ - "Hang on, Dax!" + "Hold da op, Dax!" ], "jak020": [ - "Whoa... boy that was close." + "Puha... dreng, der var tæt på." ], "jak021": [ - "No!" + "Ingen!" ], "jak022": [ - "Not this time." + "Ikke denne gang." ], "jak023": [ "Huargh!" ], "jak024": [ - "Lean, baby, lean!" + "Lean, baby, mager!" ], "jak025": [ - "Catch him on the inside!" + "Fang ham indeni!" ], "jak026": [ - "This is MY show!" + "Dette er MIT show!" ], "jak027": [ - "Haha, we got him!" + "Haha, vi har ham!" ], "jak028": [ - "Watch out!" + "Pas på!" ], "jak029": [ - "You're dead, Erol!" + "Du er død, Erol!" ], "jak030": [ - "See ya!" + "Vi ses!" ], "jak031": [ "Haha!" ], "jak032": [ - "Wooo!" + "Hov!" ], "jak033": [ - "Last lap!" + "Sidste omgang!" ], "jak034": [ - "Later." + "Senere." ], "jak035": [ - "We gotta catch up!" + "Vi skal indhente det!" ], "jak036": [ - "There he is!" + "Der er han!" ], "jak037": [ - "Come on, baby, show me what you got!" + "Kom så skat, vis mig hvad du har!" ], "jak038": [ - "Here we go!" + "Nu sker det!" ], "jak039": [ "Urgh!" ], "jak040": [ - "I'll take this." + "Jeg tager det her." ], "jak041": [ - "I need to borrow this." + "Jeg er nødt til at låne denne." ], "jak042": [ - "Move over, buddy!" + "Flyt over, kammerat!" ], "jak044": [ - "Outta the vehicle!" + "Ud af køretøjet!" ], "jak045": [ - "Outta my way, buddy!" + "Ud af min vej, kammerat!" ], "jak046": [ - "Thanks for the lift." + "Tak for løftet." ], "jak047": [ - "Mind if I drive?" + "Har du noget imod, hvis jeg kører?" ], "jak048": [ - "I like the color of this vehicle." + "Jeg kan godt lide farven på dette køretøj." ], "jak049": [ - "Mine now." + "Min nu." ], "jak050": [ - "'Scuse me, but I need this." + "'Undskyld mig, men jeg har brug for det her." ], "jak051": [ - "Take a hike, buddy!" + "Tag en vandretur, kammerat!" ], "jak052": [ - "Try walking." + "Prøv at gå." ], "jak053": [ - "Sorry, but I'm in a hurry!" + "Undskyld, men jeg har travlt!" ], "jak054": [ - "Gotta go!" + "Bliver nødt til at smutte!" ], "jak055": [ - "Get another vehicle!" + "Få et andet køretøj!" ], "jak056": [ - "Road hog!" + "Vejsvin!" ], "jak057": [ - "Brake yourself!" + "Brems selv!" ], "jak059": [ - "Haha, you want some?" + "Haha, vil du have nogle?" ], "jak060": [ - "Get some!" + "Få noget!" ], "jak061": [ - "Yeah, feel it!" + "Ja, mærk det!" ], "jak062": [ - "Die!" + "Dø!" ], "jak063": [ - "Badass comin' through!" + "Der kommer skidt igennem!" ], "jak064": [ - "Be afraid. Be very afraid." + "Vær bange. Vær meget bange." ], "jak065": [ - "Oooh, that's gotta hurt." + "Åh, det må gøre ondt." ], "jak066": [ - "This is payback." + "Dette er tilbagebetaling." ], "jak067": [ - "DIE, Praxis!" + "Øvelsen!" ], "jak068": [ - "You're finished, Kor!" + "Du er færdig, Kor!" ], "jak069": [ - "This is my town, Kor!" + "Det er min by, Kor!" ], "jak070": [ - "Surprise... you can't kill me in my dark form." + "Overraskelse... du kan ikke dræbe mig i min mørke skikkelse." ], "jak071": [ - "Now you pay!" + "Nu betaler du!" ], "jak072": [ - "Go back to the past, Kor! 'Cause you're history." + "Gå tilbage til fortiden, Kor! Fordi du er historie." ], "jak073": [ - "I win." + "Jeg vinder." ], "jak074": [ - "You should have killed me when you had the chance, Praxis." + "Du skulle have dræbt mig, da du havde chancen, Praxis." ], "jak075": [ - "Daxter, just shut up and watch my back." + "Daxter, bare hold kæft og pas på min ryg." ], "jak076": [ - "Whatever, Daxter." + "Uanset hvad, Daxter." ], "jak077": [ - "Will you stop yappin'?" + "Vil du stoppe med at yappe?" ], "jak078": [ - "When you got smaller, so did your brain." + "Da du blev mindre, blev din hjerne også det." ], "jak079": [ - "You're on MY shoulder. YOU'RE the sidekick." + "Du er på MIN skulder. DU ER sidemanden." ], "jak080": [ - "As long as you're on MY shoulder, keep your mouth shut." + "Så længe du er på MIN skulder, hold din mund." ], "jd001": [ - "Hey, kid! Wait! Come back!", - "We gotta protect him!" + "Hej, knægt! Vente! Kom tilbage!", + "Vi skal beskytte ham!" ], "jk001": [ - "Wait, KID!" + "Vent, KID!" ], "jk002": [ - "There he goes!" + "Der går han!" ], "jk003": [ - "Leave him alone!" + "Lad ham være!" ], "jk004": [ - "KID!" + "BARN!" ], "jk005": [ - "Pick on someone your own size!" + "Vælg en person i din egen størrelse!" ], "jk006": [ - "Kid, look out!" + "Knægt, pas på!" ], "jk007": [ - "How do YOU like it when somebody fights back?" + "Hvordan kan DU lide det, når nogen kæmper imod?" ], "jk008": [ - "Leave the kid alone!" + "Lad barnet være!" ], "jk009": [ - "He's just a kid!" + "Han er bare et barn!" ], "jk010": [ - "Keep away from him!" + "Hold dig væk fra ham!" ], "jk011": [ - "Now you've pissed me off!" + "Nu har du gjort mig sur!" ], "jk012": [ - "Eat this!" + "Spis det her!" ], "jk013": [ - "Back off!" + "Gå væk!" ], "jk014": [ - "We gotta get in the vehicle with the Kid!" + "Vi skal ind i bilen med Kid!" ], "jk015": [ - "Hold on!" + "Hold fast!" ], "jk016": [ - "Keep your head down, Kid!" + "Hold hovedet nede, knægt!" ], "jk017": [ - "Stick with me, Kid, and you'll be safe." + "Hold dig til mig, Kid, og du er sikker." ], "jk018": [ - "Stay with me, Kid!" + "Bliv hos mig, knægt!" ], "jk019": [ - "Get in the vehicle, Dax!" + "Sæt dig ind i køretøjet, Dax!" ], "kei001": [ - "You can get on and off the JET-Board at any time." + "Du kan stige på og af JET-Board til enhver tid." ], "kei002": [ - "You can jump on your JET-Board!" + "Du kan hoppe på dit JET-board!" ], "kei003": [ - "Jump up on that ledge." + "Hop op på den afsats." ], "kei004": [ - "Try jumping up on that crate." + "Prøv at hoppe op på den kasse." ], "kei005": [ - "Jump over that obstacle." + "Hop over den forhindring." ], "kei006": [ - "You can get a higher jump by ducking before you jump!" + "Du kan få et højere spring ved at dukke dig, før du hopper!" ], "kei007": [ - "Try doing a duck jump over that obstacle." + "Prøv at lave et andespring over den forhindring." ], "kei008": [ - "Jump and jump again a little after you've landed", - "for an even bigger launch!" + "Hop og hop igen lidt efter du er landet", + "for en endnu større lancering!" ], "kei009": [ - "Try getting up on that higher ledge with a boost jump!" + "Prøv at komme op på den højere afsats med et boost-spring!" ], "kei010": [ - "You can spin in the air!" + "Du kan snurre i luften!" ], "kei011": [ - "Land a perfect 360 for a speed boost!" + "Land en perfekt 360 for et hastighedsboost!" ], "kei012": [ - "Nice spin!" + "Dejligt spin!" ], "kei013": [ - "You can land on a rail and grind across it." + "Du kan lande på en skinne og slibe hen over den." ], "kei014": [ - "Try grinding on that rail." + "Prøv at slibe på den skinne." ], "kei016": [ - "You can do flips while you jump!" + "Du kan lave flips, mens du hopper!" ], "kei017": [ - "You can also do tricks for fun." + "Du kan også lave tricks for sjov." ], "kei018": [ - "Try to put a number of moves together to get points." + "Prøv at sætte et antal træk sammen for at få point." ], "kei019": [ - "Get enough points to win the challenge!" + "Få point nok til at vinde udfordringen!" ], "kei020": [ - "Not enough points! Work on your moves." + "Ikke nok point! Arbejd på dine bevægelser." ], "kei021": [ - "Good job!" + "Godt arbejde!" ], "kei022": [ - "Close, but not quite there." + "Tæt på, men ikke helt der." ], "kei023": [ - "Try again." + "Prøv igen." ], "kei024": [ - "A little more work and you just might win!" + "Lidt mere arbejde, og du kan bare vinde!" ], "kei025": [ - "No good! Not enough points." + "Ikke godt! Ikke nok point." ], "kei026": [ - "The Underground said you needed some help,", - "you won't be able to catch those Metal Heads in the", - "Forest on foot so I've left my JET-Board at the airlock", - "near the city exit. Since you're helping the Underground,", - "I'll even let you keep it!" + "Undergrunden sagde du havde brug for hjælp.", + "du vil ikke være i stand til at fange de metalhoveder i", + "Skov til fods, så jeg har efterladt mit JET-Board ved luftslusen", + "nær byens udgang. Siden du hjælper undergrunden,", + "Jeg vil endda lade dig beholde den!" ], "kei027": [ - "Jak, this is Keira. Don't forget - I still need two artifacts", - "to make the Rift Rider work! I need the Time Map and the", - "Heart of Mar Energy Gem, or we're not going anywhere!" + "Jak, det er Keira. Glem ikke - jeg mangler stadig to artefakter", + "for at få Rift Rider til at fungere! Jeg har brug for tidskortet og", + "Heart of Mar Energy Gem, ellers skal vi ingen steder!" ], "kei028": [ - "I still need those two artifacts or this pile of junk", - "won't move one city block, much less through the Rift", - "and back to our own time!", - "You've got to find the Heart of Mar and the Time Map", - "or we're stuck!" + "Jeg har stadig brug for de to artefakter eller denne bunke skrammel", + "vil ikke flytte en byblok, meget mindre gennem Riften", + "og tilbage til vores egen tid!", + "Du er nødt til at finde hjertet af Mar og tidskortet", + "eller vi sidder fast!" ], "kei029": [ - "This is Keira. Thanks for getting the artifacts, guys.", - "It's strange... the Time Map had a bunch of old coordinates", - "in it. Come see me at the Stadium." + "Det her er Keira. Tak fordi du fik artefakterne, gutter.", + "Det er mærkeligt... Tidskortet havde en masse gamle koordinater", + "i det. Kom og se mig på Stadion." ], "kg001": [ - "Call for backup!" + "Ring for backup!" ], "kg001a": [ - "Call for backup!" + "Ring for backup!" ], "kg002": [ - "Freeze!" + "Fryse!" ], "kg002a": [ - "Freeze!" + "Fryse!" ], "kg004": [ - "Halt!" + "Hold op!" ], "kg004a": [ - "Halt!" + "Hold op!" ], "kg005": [ - "Get more cruisers in here!" + "Få flere krydsere her!" ], "kg005a": [ - "Get more cruisers in here!" + "Få flere krydsere her!" ], "kg006": [ - "Surrender!" + "Overgivelse!" ], "kg006a": [ - "Surrender!" + "Overgivelse!" ], "kg007": [ - "This is a no-hover zone!" + "Dette er en ikke-svævende zone!" ], "kg007a": [ - "This is a no-hover zone!" + "Dette er en ikke-svævende zone!" ], "kg008": [ - "Pull over!" + "Bluse!" ], "kg008a": [ - "Pull over!" + "Bluse!" ], "kg009": [ - "Say good night!" + "Sig godnat!" ], "kg010": [ - "Seal off the area." + "Afspær området." ], "kg011": [ - "Stop the vehicle!" + "Stop køretøjet!" ], "kg011a": [ - "Stop the vehicle!" + "Stop køretøjet!" ], "kg012": [ - "You're under arrest!" + "Du er anholdt!" ], "kg012a": [ - "You're under arrest!" + "Du er anholdt!" ], "kg013": [ - "You there!" + "Du der!" ], "kg014": [ - "You want some?!" + "Vil du have noget?!" ], "kg015": [ - "This area is off-limits." + "Dette område er forbudt." ], "kg016": [ - "Stop!" + "Hold op!" ], "kg018": [ - "Hey!" + "Hej!" ], "kg019": [ - "We do this the easy way, or the hard way." + "Vi gør det på den nemme måde eller på den hårde måde." ], "kg020": [ - "Slow down!" + "Sænk farten!" ], "kg020a": [ - "Slow down!" + "Sænk farten!" ], "kg021": [ - "Move over!" + "Flyt dig!" ], "kg021a": [ - "Move over!" + "Flyt dig!" ], "kg022": [ - "Call in more Hellcats!" + "Ring til flere Hellcats!" ], "kg023": [ - "Requesting backup!" + "Anmoder om backup!" ], "kg023a": [ - "Requesting backup!" + "Anmoder om backup!" ], "kg024": [ - "Suspect on foot!" + "Mistænkt til fods!" ], "kg024a": [ - "Suspect on foot!" + "Mistænkt til fods!" ], "kg025": [ - "Suspect in vehicle!" + "Mistænkt i køretøj!" ], "kg025a": [ - "Suspect in vehicle!" + "Mistænkt i køretøj!" ], "kg026": [ - "Suspect fleeing into sector five!" + "Mistænkt flygter ind i sektor fem!" ], "kg026a": [ - "Suspect fleeing into sector five!" + "Mistænkt flygter ind i sektor fem!" ], "kg027": [ - "Suspect moving to sector six!" + "Mistænkt flytte til sektor seks!" ], "kg027a": [ - "Suspect moving into sector six!" + "Mistænkt for at flytte ind i sektor seks!" ], "kg028": [ - "High-speed chase in sector four!" + "Højhastighedsjagt i sektor fire!" ], "kg028a": [ - "High-speed chase in sector four!" + "Højhastighedsjagt i sektor fire!" ], "kg029": [ - "Checking sector three." + "Tjekker sektor tre." ], "kg029a": [ - "Checking sector three." + "Tjekker sektor tre." ], "kg030": [ - "Patrolling sector nine." + "Patruljerer sektor ni." ], "kg030a": [ - "Patrolling sector nine." + "Patruljerer sektor ni." ], "kg031": [ - "Be advised, I'm on foot." + "Vær opmærksom, jeg er til fods." ], "kg031a": [ - "Be advised, I'm on foot." + "Vær opmærksom, jeg er til fods." ], "kg032": [ - "Moving to next sector." + "Flytter til næste sektor." ], "kg032a": [ - "Moving to next sector." + "Flytter til næste sektor." ], "kg033": [ - "I've got suspicious activity in this sector." + "Jeg har mistænkelig aktivitet i denne sektor." ], "kg033a": [ - "I've got suspicious activity in this sector." + "Jeg har mistænkelig aktivitet i denne sektor." ], "kg034": [ - "Sweeping for suspects." + "Fejning efter mistænkte." ], "kg034a": [ - "Sweeping for suspects." + "Fejning efter mistænkte." ], "kg035": [ - "Nothing so far." + "Intet indtil videre." ], "kg035a": [ - "Nothing so far." + "Intet indtil videre." ], "kg036": [ - "Roger that, still looking." + "Roger det, kigger stadig." ], "kg036a": [ - "Roger that, still looking." + "Roger det, kigger stadig." ], "kg037": [ - "Roger, we'll shoot on sight." + "Roger, vi skyder på syne." ], "kg037a": [ - "Roger, we'll shoot on sight." + "Roger, vi skyder på syne." ], "kg038": [ - "Please advise, suspect's description." + "Giv venligst besked, mistænkts beskrivelse." ], "kg039": [ - "Get out of the vehicle!" + "Kom ud af køretøjet!" ], "kg039a": [ - "Get out of the vehicle!" + "Kom ud af køretøjet!" ], "kg040": [ - "Call in more Hellcats!" + "Ring til flere Hellcats!" ], "kg040a": [ - "Call in more Hellcats!" + "Ring til flere Hellcats!" ], "kg041": [ - "The area is secure." + "Området er sikkert." ], "kg041a": [ - "The area is secure." + "Området er sikkert." ], "kg042": [ - "Nothing to report." + "Intet at rapportere." ], "kg042a": [ - "Nothing to report." + "Intet at rapportere." ], "kg043": [ - "Proceeding as planned." + "Fortsætter som planlagt." ], "kg043a": [ - "Proceeding as planned." + "Fortsætter som planlagt." ], "kg044": [ - "I lost him." + "Jeg mistede ham." ], "kg044a": [ - "I lost him." + "Jeg mistede ham." ], "kg045": [ - "Subject is not in sight." + "Emnet er ikke i sigte." ], "kg045a": [ - "Subject not in sight." + "Emne ikke i sigte." ], "kg046": [ - "He's gone." + "Han er væk." ], "kg046a": [ - "He disappeared!" + "Han forsvandt!" ], "kg047": [ - "Where'd he go?" + "Hvor blev han af?" ], "kg047a": [ - "Where'd he go?" + "Hvor blev han af?" ], "kg048": [ - "Lost visual contact." + "Mistet visuel kontakt." ], "kg048a": [ - "Lost visual contact." + "Mistet visuel kontakt." ], "kg049": [ - "He just ducked out." + "Han dukkede bare ud." ], "kg049a": [ - "He just ducked out." + "Han dukkede bare ud." ], "kg050": [ - "He's out of sight." + "Han er ude af syne." ], "kg050a": [ - "He's out of sight." + "Han er ude af syne." ], "kg051": [ - "We're losing him!" + "Vi mister ham!" ], "kg051a": [ - "We're losing him!" + "Vi mister ham!" ], "kg052": [ - "Continuing our sweep." + "Fortsætter vores sweep." ], "kg052a": [ - "Continuing our sweep." + "Fortsætter vores sweep." ], "kg053": [ - "Searching sector four." + "Søger sektor fire." ], "kg053a": [ - "Searching sector four." + "Søger sektor fire." ], "kg054": [ - "Searching sector seven." + "Søger sektor syv." ], "kg054a": [ - "Searching sector seven." + "Søger sektor syv." ], "kg055": [ - "Searching sector three." + "Søger efter sektor tre." ], "kg055a": [ - "Searching sector three." + "Søger efter sektor tre." ], "kg056": [ - "Keep looking." + "Led videre." ], "kg056a": [ - "Keep looking." + "Led videre." ], "kg057": [ - "He's got to be here somewhere." + "Han skal være her et sted." ], "kg057a": [ - "He's got to be here somewhere." + "Han skal være her et sted." ], "kg058": [ - "I can't find him." + "Jeg kan ikke finde ham." ], "kg058a": [ - "I can't find him." + "Jeg kan ikke finde ham." ], "kg059": [ - "No sign of the subject." + "Ingen tegn på emnet." ], "kg059a": [ - "No sign of the subject." + "Ingen tegn på emnet." ], "kg060": [ - "I don't see him anywhere." + "Jeg ser ham ingen steder." ], "kg060a": [ - "I don't see him anywhere." + "Jeg ser ham ingen steder." ], "kg061": [ - "Still searching." + "Søger stadig." ], "kg061a": [ - "Still searching." + "Søger stadig." ], "kg062": [ - "Searching for the target." + "Søger efter målet." ], "kg062a": [ - "Searching for the target." + "Søger efter målet." ], "kg063": [ - "He must be here." + "Han må være her." ], "kg063a": [ - "He must be here." + "Han må være her." ], "kg064": [ - "He was just here." + "Han var her lige." ], "kg064a": [ - "He was just here." + "Han var her lige." ], "kg065": [ - "We lost him." + "Vi mistede ham." ], "kg065a": [ - "We lost him." + "Vi mistede ham." ], "kg066": [ - "He got away." + "Han slap væk." ], "kg066a": [ - "He got away." + "Han slap væk." ], "kg067": [ - "He escaped." + "Han undslap." ], "kg067a": [ - "He escaped." + "Han undslap." ], "kg068": [ - "He shook us." + "Han rystede os." ], "kg068a": [ - "He shook us." + "Han rystede os." ], "kg069": [ - "Looks like he's gone." + "Det ser ud til, at han er væk." ], "kg069a": [ - "Looks like he's gone." + "Det ser ud til, at han er væk." ], "kg070": [ - "I found him!" + "Jeg fandt ham!" ], "kg070a": [ - "I found him!" + "Jeg fandt ham!" ], "kg071": [ - "There he is." + "Der er han." ], "kg071a": [ - "There he is!" + "Der er han!" ], "kg072": [ - "Be advised, target in sight." + "Vær opmærksom, mål i sigte." ], "kg072a": [ - "Be advised, target in sight!" + "Vær opmærksom, mål i sigte!" ], "kg073": [ - "We have a positive ID." + "Vi har et positivt ID." ], "kg073a": [ - "We have a positive ID." + "Vi har et positivt ID." ], "kg074": [ - "I see him!" + "Jeg ser ham!" ], "kg074a": [ - "I see him!" + "Jeg ser ham!" ], "kg075": [ - "He's over there, get him!" + "Han er derovre, tag ham!" ], "kg075a": [ - "He's over here!" + "Han er herovre!" ], "kg076": [ - "Get him!" + "Fang ham!" ], "kg076a": [ - "Get him!" + "Fang ham!" ], "kg077": [ - "I've reacquired the target!" + "Jeg har genvundet målet!" ], "kg077a": [ - "I've reacquired the target!" + "Jeg har genvundet målet!" ], "kg078": [ - "I'm closing in." + "Jeg lukker ind." ], "kg078a": [ - "I'm closing in!" + "Jeg lukker ind!" ], "kg079": [ - "I'm on him!" + "Jeg er på ham!" ], "kg079a": [ - "I'm on him!" + "Jeg er på ham!" ], "kg080": [ - "I'm in pursuit!" + "Jeg er på jagt!" ], "kg080a": [ - "I'm in pursuit!" + "Jeg er på jagt!" ], "kg081": [ - "Pursuing target." + "Forfølger mål." ], "kg081a": [ - "Pursuing target!" + "Forfølger målet!" ], "kg082": [ - "Don't let him get away!" + "Lad ham ikke slippe væk!" ], "kg082a": [ - "Don't let him get away!" + "Lad ham ikke slippe væk!" ], "kg083": [ - "Get him!" + "Fang ham!" ], "kg083a": [ - "Get him!" + "Fang ham!" ], "kg084": [ - "After him!" + "Efter ham!" ], "kg084a": [ - "After him!" + "Efter ham!" ], "kg085": [ - "I have a visual!" + "Jeg har et visuelt!" ], "kg085a": [ - "I have a visual!" + "Jeg har et visuelt!" ], "kg086": [ - "We see him!" + "Vi ser ham!" ], "kg086a": [ - "We see him!" + "Vi ser ham!" ], "kg087": [ - "Stop right there!" + "Stop lige der!" ], "kg087a": [ - "Stop right there!" + "Stop lige der!" ], "kg088": [ - "I have a bead on him!" + "Jeg har en perle på ham!" ], "kg088a": [ - "I have a bead on him!" + "Jeg har en perle på ham!" ], "kg089": [ - "I'm hit!" + "Jeg er ramt!" ], "kg089a": [ - "I'm hit!" + "Jeg er ramt!" ], "kg090": [ - "Man down!" + "Mand ned!" ], "kg090a": [ - "Man down!" + "Mand ned!" ], "kg091": [ - "I need backup!" + "Jeg har brug for backup!" ], "kg091a": [ - "I need backup!" + "Jeg har brug for backup!" ], "kg092": [ - "Stop him!" + "Stop ham!" ], "kg092a": [ - "Stop him!" + "Stop ham!" ], "kg093": [ - "Look out!" + "Pas på!" ], "kg093a": [ - "Look out!" + "Pas på!" ], "kg094": [ - "There he is, shoot him!" + "Der er han, skyd ham!" ], "kg094a": [ - "There he is, shoot him!" + "Der er han, skyd ham!" ], "kg095": [ - "Take him out!" + "Tag ham ud!" ], "kg095a": [ - "Take him out!" + "Tag ham ud!" ], "kg096": [ - "Prisoner escape in progress, sound the alarm!" + "Fangeflugt i gang, slå alarm!" ], "kg096a": [ - "Prison escape in progress, sound the alarm!" + "Fængselsflugt i gang, slå alarm!" ], "kg097": [ - "Prisoner on level two!" + "Fange på niveau to!" ], "kg097a": [ - "Prisoner on level two!" + "Fange på niveau to!" ], "kg098": [ - "Prisoner moving to sub-level B!" + "Fange flytter til underniveau B!" ], "kg098a": [ - "Prisoner moving to sub-level B!" + "Fange flytter til underniveau B!" ], "kg099": [ - "We think he's in the pipes!" + "Vi tror, ​​han er i rørene!" ], "kg099a": [ - "We think he's in the pipes!" + "Vi tror, ​​han er i rørene!" ], "kg100": [ - "We're beginning our sweep." + "Vi begynder vores fejning." ], "kg100a": [ - "We're beginning our sweep." + "Vi begynder vores fejning." ], "kg101": [ - "We have prisoner in sight, move in!" + "Vi har en fange i sigte, flyt ind!" ], "kg101a": [ - "We have prisoner in sight, move in!" + "Vi har en fange i sigte, flyt ind!" ], "kg102": [ - "We have movement on level one!" + "Vi har bevægelse på niveau et!" ], "kg102a": [ - "We have movement on level one!" + "Vi har bevægelse på niveau et!" ], "kg103": [ - "Close in!" + "Nærme sig!" ], "kg103a": [ - "Close in!" + "Nærme sig!" ], "kg104": [ - "We're moving in!" + "Vi flytter ind!" ], "kg104a": [ - "We're moving in!" + "Vi flytter ind!" ], "kg105": [ - "Secure the cell block!" + "Fastgør celleblokken!" ], "kg105a": [ - "Secure the cell block!" + "Fastgør celleblokken!" ], "kg106": [ - "Take no prisoners!" + "Tag ingen fanger!" ], "kg106a": [ - "Take no prisoners!" + "Tag ingen fanger!" ], "kg107": [ - "Prisoner sighted, we got him!" + "Fange set, vi har ham!" ], "kg107a": [ - "Prisoner sighted, we got him!" + "Fange set, vi har ham!" ], "kg108": [ - "Prisoner is still on the loose!" + "Fangen er stadig på fri fod!" ], "kg108a": [ - "Prisoner is still on the loose!" + "Fangen er stadig på fri fod!" ], "kg109": [ - "We think he's going for an exit!" + "Vi tror, ​​han går efter en exit!" ], "kg109a": [ - "We think he's going for an exit!" + "Vi tror, ​​han går efter en exit!" ], "kg110": [ - "Searching rooms." + "Søger værelser." ], "kg110a": [ - "Searching rooms." + "Søger værelser." ], "kg111": [ - "Prisoner loose in complex." + "Fange løs i kompleks." ], "kg111a": [ - "Prisoner loose in complex." + "Fange løs i kompleks." ], "kg112": [ - "You are authorized to shoot to kill." + "Du er autoriseret til at skyde for at dræbe." ], "kg112a": [ - "You are authorized to shoot to kill." + "Du er autoriseret til at skyde for at dræbe." ], "kg113": [ - "Go, go, go! Sweep the area!" + "Go Go go! Fej området!" ], "kg113a": [ - "Go go go! Sweep the area!" + "Go Go go! Fej området!" ], "kg114": [ - "Searching the sub-basements." + "Søgning i underkældrene." ], "kg114a": [ - "Searching the sub-basements." + "Søgning i underkældrene." ], "kg115": [ - "Cell block is clear." + "Celleblokken er klar." ], "kg115a": [ - "Cell block is clear." + "Celleblokken er klar." ], "kg116": [ - "Tank room is clear." + "Tankrummet er klart." ], "kg116a": [ - "Tank room is clear." + "Tankrummet er klart." ], "kg117": [ - "Activate riot tanks." + "Aktiver oprørstanke." ], "kg117a": [ - "Activate riot tanks." + "Aktiver oprørstanke." ], "kg118": [ - "Riot tank has prisoner in sight." + "Riot tank har fange i sigte." ], "kg118a": [ - "Riot tank has prisoner in sight." + "Riot tank har fange i sigte." ], "kg119": [ - "Intruder alert." + "Indbrudsalarm." ], "kg119a": [ - "Intruder alert!" + "Indbrudsalarm!" ], "kg120": [ - "Activating security defenses." + "Aktivering af sikkerhedsforsvar." ], "kg120a": [ - "Activating security defenses." + "Aktivering af sikkerhedsforsvar." ], "kg121": [ - "Please advise, subject's description." + "Giv venligst besked, emnebeskrivelse." ], "kg121a": [ - "Please advise, subject's description." + "Giv venligst besked, emnebeskrivelse." ], "kg122": [ - "I've got civvies in sight." + "Jeg har civvies i sigte." ], "kg122a": [ - "I've got civvies in sight." + "Jeg har civvies i sigte." ], "kg123": [ - "I've got suspects in sight." + "Jeg har mistænkte i sigte." ], "kg123a": [ - "I've got suspects in sight." + "Jeg har mistænkte i sigte." ], "kg124": [ - "I hate the smell of this part of the city." + "Jeg hader lugten af ​​denne del af byen." ], "kg124a": [ - "I hate the smell in this part of the city." + "Jeg hader lugten i denne del af byen." ], "kg125": [ - "Right, we'll check it out." + "Okay, vi tjekker det ud." ], "kg125a": [ - "Right, we'll check it out." + "Okay, vi tjekker det ud." ], "kg126": [ - "Confirmed, Underground suspect neutralized." + "Bekræftet, underjordisk mistænkt neutraliseret." ], "kg126a": [ - "Confirmed, Underground suspect neutralized." + "Bekræftet, underjordisk mistænkt neutraliseret." ], "kg127": [ - "They're all guilty!" + "De er alle skyldige!" ], "kg127a": [ - "They're all guilty!" + "De er alle skyldige!" ], "kg128": [ - "This is Unit Alpha, we're en route." + "Dette er Unit Alpha, vi er på vej." ], "kg128a": [ - "This is Unit Alpha, we're en route." + "Dette er Unit Alpha, vi er på vej." ], "kg129": [ - "Roger, continuing our sweep." + "Roger, fortsætter vores sweep." ], "kg129a": [ - "Roger, continuing our sweep." + "Roger, fortsætter vores sweep." ], "kg130": [ - "Unit Zulu, moving in." + "Enhed Zulu, flytter ind." ], "kg130a": [ - "Unit Zulu, moving in." + "Enhed Zulu, flytter ind." ], "kg131": [ - "Roger that, we're making our sweep." + "Roger det, vi laver vores sweep." ], "kg131a": [ - "Roger that, we're making our sweep." + "Roger det, vi laver vores sweep." ], "kg132": [ - "I say shoot 'em all and sort 'em out later." + "Jeg siger skyd dem alle og ordne dem senere." ], "kg132a": [ - "I say shoot 'em all and sort 'em out later." + "Jeg siger skyd dem alle og ordne dem senere." ], "kg133": [ - "You have the right to die!" + "Du har ret til at dø!" ], "kg134": [ - "Lock and load!" + "Lås og læs!" ], "kg135": [ - "Open fire!" + "Åben ild!" ], "kg136": [ - "Alert, alert!" + "Alarm, alarm!" ], "kg137": [ - "Don't move!" + "Bevæg dig ikke!" ], "kg138": [ - "Do it!" + "Gør det!" ], "kg139": [ - "Go, go, go!" + "Go Go go!" ], "kg140": [ - "Flank 'em!" + "Flanker dem!" ], "kg141": [ - "Move in!" + "Flytte ind!" ], "kg142": [ - "Take 'em out!" + "Tag dem ud!" ], "kg143": [ - "Bust some heads!" + "Buste nogle hoveder!" ], "kg144": [ - "Arrest him!" + "arrester ham!" ], "kg145": [ - "Shoot 'em, shoot 'em!" + "Skyd dem, skyd dem!" ], "kg146": [ - "Die, outlaw!" + "Dø, fredløs!" ], "kg147": [ - "You're history!" + "Du er historie!" ], "kg148": [ - "Eat this!" + "Spis det her!" ], "kg149": [ - "Get some!" + "Få noget!" ], "kg150": [ - "Fire, fire!" + "Ild, ild!" ], "kg151": [ - "Here's one for the Guard!" + "Her er en til vagten!" ], "kg152": [ - "Give it up, outlaw!" + "Giv op, fredløs!" ], "kg153": [ - "Here's some pain!" + "Her er noget smerte!" ], "kg154": [ - "Payback time!" + "Hævnens time!" ], "kg155": [ - "Shoulda given up!" + "Burde opgive!" ], "kg156": [ - "I need cover fire!" + "Jeg har brug for dækild!" ], "kg157": [ - "Call in reinforcements!" + "Tilkald forstærkninger!" ], "kg158": [ - "I'll shoot!" + "Jeg skyder!" ], "kg159": [ - "Die!" + "Dø!" ], "kg160": [ - "You're busted!" + "Du er knust!" ], "kg161": [ - "Riot in progress!" + "Optøjer i gang!" ], "kg162": [ - "Send in the troops!" + "Send tropperne ind!" ], "kg163": [ - "Give it up!" + "Opgiv det!" ], "kg164": [ - "Make 'em pay!" + "Få dem til at betale!" ], "kg165": [ - "Tag 'em and bag 'em!" + "Tag dem og tag dem i tasken!" ], "kg165a": [ - "Tag 'em and bag 'em!" + "Tag dem og tag dem i tasken!" ], "kg165b": [ - "Tag 'em and bag 'em!" + "Tag dem og tag dem i tasken!" ], "kg166": [ - "Another notch for my gun." + "Endnu et hak til min pistol." ], "kg166a": [ - "Another notch for my gun." + "Endnu et hak til min pistol." ], "kg166b": [ - "Another notch for my gun." + "Endnu et hak til min pistol." ], "kg167": [ - "This one was easy!" + "Denne var nem!" ], "kg167a": [ - "This one was easy!" + "Denne var nem!" ], "kg167b": [ - "This one was easy!" + "Denne var nem!" ], "kg168": [ - "Suspect neutralized." + "Mistænkt neutraliseret." ], "kg168a": [ - "Suspect neutralized." + "Mistænkt neutraliseret." ], "kg168b": [ - "Suspect neutralized." + "Mistænkt neutraliseret." ], "kg169": [ - "Didn't even work up a sweat." + "Svede ikke engang." ], "kg169a": [ - "Didn't even work up a sweat." + "Svede ikke engang." ], "kg169b": [ - "Didn't even work up a sweat." + "Svede ikke engang." ], "kg170": [ - "Take him in for... questioning, hehehe..." + "Tag ham ind til... afhøring, hehehe..." ], "kg170a": [ - "Take him in for... questioning, hehehe..." + "Tag ham ind til... afhøring, hehehe..." ], "kg170b": [ - "Take him in for... questioning, hehehe..." + "Tag ham ind til... afhøring, hehehe..." ], "kg171": [ - "Another one bites the dust." + "Endnu en bider i støvet." ], "kg171a": [ - "Another one bites the dust." + "Endnu en bider i støvet." ], "kg171b": [ - "Another one bites the dust." + "Endnu en bider i støvet." ], "kg172": [ - "That must have hurt." + "Det må have gjort ondt." ], "kg172a": [ - "That must have hurt." + "Det må have gjort ondt." ], "kg172b": [ - "That must have hurt." + "Det må have gjort ondt." ], "kg173": [ - "There's plenty more where that came from." + "Der er meget mere, hvor det kom fra." ], "kg173a": [ - "There's plenty more where that came from." + "Der er meget mere, hvor det kom fra." ], "kg173b": [ - "There's plenty more where that came from." + "Der er meget mere, hvor det kom fra." ], "kg174": [ - "Citizen scum." + "Borgerudskud." ], "kg174a": [ - "Citizen scum." + "Borgerudskud." ], "kg174b": [ - "Citizen scum." + "Borgerudskud." ], "kg175": [ - "Don't fight the law, son." + "Bekæmp ikke loven, søn." ], "kg175a": [ - "Don't fight the law, son." + "Bekæmp ikke loven, søn." ], "kg175b": [ - "Don't fight the law, son." + "Bekæmp ikke loven, søn." ], "kg176": [ - "You are under arrest!" + "Du er anholdt!" ], "kg177": [ - "Get moving!" + "Kom i gang!" ], "kg178a": [ - "He vanished!" + "Han forsvandt!" ], "kg179": [ - "You guys hear about the latest Metal Head attacks?" + "Hører I om de seneste Metal Head-angreb?" ], "kg179b": [ - "Oh you guys hear about the latest Metal Head attacks?" + "Hører I om de seneste Metal Head-angreb?" ], "kg180": [ - "We lost three squads last week." + "Vi mistede tre hold i sidste uge." ], "kg180a": [ - "We lost three squads last week." + "Vi mistede tre hold i sidste uge." ], "kg180b": [ - "We lost three squads last week." + "Vi mistede tre hold i sidste uge." ], "kg181": [ - "I hear the Underground are getting stronger." + "Jeg hører, at undergrunden bliver stærkere." ], "kg181a": [ - "I hear the Underground are getting stronger." + "Jeg hører, at undergrunden bliver stærkere." ], "kg181b": [ - "I hear the Underground are getting stronger." + "Jeg hører, at undergrunden bliver stærkere." ], "kg182": [ - "Just rumors, private, keep your mouth shut." + "Bare rygter, privat, hold din mund." ], "kg182a": [ - "Just rumors, private, keep your mouth shut." + "Bare rygter, privat, hold din mund." ], "kg182b": [ - "Just rumors, private, keep your mouth shut." + "Bare rygter, privat, hold din mund." ], "kg183": [ - "It's us or them, there's no in-between." + "Det er os eller dem, der er ingen mellemting." ], "kg183a": [ - "It's us or them, there's no in-between." + "Det er os eller dem, der er ingen mellemting." ], "kg183b": [ - "It's us or them, there's no in-between." + "Det er os eller dem, der er ingen mellemting." ], "kg184": [ - "Don't worry, the Baron will save us." + "Bare rolig, baronen vil redde os." ], "kg184a": [ - "Don't worry, the Baron will save us." + "Bare rolig, baronen vil redde os." ], "kg184b": [ - "Don't worry, the Baron will save us." + "Bare rolig, baronen vil redde os." ], "kg185": [ - "I got no faith in nobody." + "Jeg havde ingen tro på nogen." ], "kg185a": [ - "I ain't got no faith in nobody." + "Jeg har ingen tro på nogen." ], "kg185b": [ - "I got no faith in nobody." + "Jeg havde ingen tro på nogen." ], "kg186": [ - "Seen that new JX-7 racer? Sweet ride." + "Har du set den nye JX-7 racer? Sød tur." ], "kg186a": [ - "You seen that new JX-7 racer? Sweet ride." + "Har du set den nye JX-7 racer? Sød tur." ], "kg186b": [ - "Seen that new JX-7 racer? It's a sweet ride." + "Har du set den nye JX-7 racer? Det er en sød tur." ], "kg187": [ - "You seen anything?" + "Har du set noget?" ], "kg187a": [ - "You seen anything?" + "Har du set noget?" ], "kg187b": [ - "You seen anything?" + "Har du set noget?" ], "kg188": [ - "No." + "Ingen." ], "kg188a": [ - "No." + "Ingen." ], "kg188b": [ - "Nah." + "Næh." ], "kg189": [ - "Keep your eyes peeled." + "Hold øjnene åbne." ], "kg189a": [ - "Keep your eyes peeled." + "Hold øjnene åbne." ], "kg189b": [ - "Keep your eyes peeled." + "Hold øjnene åbne." ], "kg190": [ - "I just got a radio alert, stay frosty." + "Jeg har lige fået en radioadvarsel, hold dig frostig." ], "kg190a": [ - "I just got a radio alert, stay frosty." + "Jeg har lige fået en radioadvarsel, hold dig frostig." ], "kg190b": [ - "I just got a radio alert, stay frosty." + "Jeg har lige fået en radioadvarsel, hold dig frostig." ], "kg191": [ - "Never trust a civilian." + "Stol aldrig på en civil." ], "kg191a": [ - "Never trust a civilian." + "Stol aldrig på en civil." ], "kg191b": [ - "Never trust a civilian." + "Stol aldrig på en civil." ], "kg192": [ - "Never trust anyone." + "Stol aldrig på nogen." ], "kg192a": [ - "Never trust anyone." + "Stol aldrig på nogen." ], "kg192b": [ - "Never trust anyone." + "Stol aldrig på nogen." ], "kg193": [ - "Long live the KG!" + "Længe leve KG!" ], "kg193a": [ - "Long live the KG!" + "Længe leve KG!" ], "kg193b": [ - "Long live the KG!" + "Længe leve KG!" ], "kg194": [ - "We ain't had a food riot since we brought in them tanks." + "Vi har ikke haft et madoptøj siden vi bragte tankene ind." ], "kg194a": [ - "We ain't had a food riot since we brought in them tanks." + "Vi har ikke haft et madoptøj siden vi bragte tankene ind." ], "kg194b": [ - "We ain't had a food riot since we brought in them tanks." + "Vi har ikke haft et madoptøj siden vi bragte tankene ind." ], "kg195": [ - "I'm bored, I want to crunch heads." + "Jeg keder mig, jeg vil knaske hoveder." ], "kg195a": [ - "I'm bored, I want to crunch heads." + "Jeg keder mig, jeg vil knaske hoveder." ], "kg195b": [ - "I'm bored, I want to crunch heads." + "Jeg keder mig, jeg vil knaske hoveder." ], "kg196": [ - "I want to kick some ass." + "Jeg vil gerne sparke noget i røven." ], "kg196a": [ - "Ugh... I want to kick some butt." + "Uh... jeg vil gerne sparke lidt i numsen." ], "kg196b": [ - "I want to kick some butt." + "Jeg vil gerne sparke noget bagdel." ], "kg197": [ - "Did you hear the Underground got our ammo at HQ?" + "Hørte du, at Underground fik vores ammunition i hovedkvarteret?" ], "kg197a": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Hørte du, at undergrunden nåede", + "vores ammunition på hovedkvarteret?" ], "kg197b": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Hørte du, at undergrunden nåede", + "vores ammunition på hovedkvarteret?" ], "kg198": [ - "Payback's a bitch!" + "Tilbagebetaling er en tæve!" ], "kg198a": [ - "Payback's a bitch!" + "Tilbagebetaling er en tæve!" ], "kg198b": [ - "Payback's a bitch!" + "Tilbagebetaling er en tæve!" ], "kg199": [ - "Animals!" + "Dyr!" ], "kg199a": [ - "Animals!" + "Dyr!" ], "kg199b": [ - "Animals!" + "Dyr!" ], "kg200": [ - "I hear the Shadow's been dead for years." + "Jeg hører, at skyggen har været død i årevis." ], "kg200a": [ - "I hear the Shadow's been dead for years." + "Jeg hører, at skyggen har været død i årevis." ], "kg200b": [ - "I hear the Shadow's been dead for years." + "Jeg hører, at skyggen har været død i årevis." ], "kg201": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Måske, men resten af ​​dem underjordisk afskum", + "kører stadig rundt." ], "kg201a": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Måske, men resten af ​​dem underjordisk afskum", + "kører stadig rundt." ], "kg201b": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Måske, men resten af ​​dem underjordisk afskum", + "kører stadig rundt." ], "kg202": [ - "Can I shoot someone now?" + "Må jeg skyde nogen nu?" ], "kg202a": [ - "Can I shoot someone now?" + "Må jeg skyde nogen nu?" ], "kg202b": [ - "Can I shoot someone now?" + "Må jeg skyde nogen nu?" ], "kg203": [ - "I like the new armor." + "Jeg kan godt lide den nye rustning." ], "kg203a": [ - "I like the new armor." + "Jeg kan godt lide den nye rustning." ], "kg203b": [ - "I like the new armor." + "Jeg kan godt lide den nye rustning." ], "kg204": [ - "Yeah, me too. More comfort in the crotch." + "Ja også mig. Mere komfort i skridtet." ], "kg204a": [ - "Yeah, me too. More comfort in the crotch." + "Ja også mig. Mere komfort i skridtet." ], "kg204b": [ - "Yeah, me too. More comfort in the crotch." + "Ja også mig. Mere komfort i skridtet." ], "kg205": [ - "If something interesting doesn't happen soon,", - "I'm going to start shooting you." + "Hvis der ikke snart sker noget interessant,", + "Jeg vil begynde at skyde dig." ], "kg205a": [ - "Next time, can I kill a civvy?" + "Næste gang, kan jeg dræbe en civvy?" ], "kg205b": [ - "Next time, can I kill a civvy?" + "Næste gang, kan jeg dræbe en civvy?" ], "kg206a": [ - "If something interesting doesn't happen soon,", - "I'm gonna shoot you." + "Hvis der ikke snart sker noget interessant,", + "Jeg skyder dig." ], "kg206b": [ - "If something interesting doesn't happen soon,", - "I'm gonna start shooting you." + "Hvis der ikke snart sker noget interessant,", + "Jeg begynder at skyde dig." ], "kg207": [ - "Did you collect your bribes this week?" + "Har du indsamlet dine bestikkelser i denne uge?" ], "kg207a": [ - "You collect your bribes this week?" + "Samler du dine bestikkelser i denne uge?" ], "kg207b": [ - "You collect your bribes this week?" + "Samler du dine bestikkelser i denne uge?" ], "kg208": [ "Shhh..." @@ -5465,250 +5465,250 @@ "Shh." ], "kg210": [ - "I hear someone's been using the old wall airlocks.", - "Pfft, crazy bastard." + "Jeg hører, nogen har brugt de gamle vægluftsluse.", + "Pfft, skøre bastard." ], "kg210a": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Jeg hører, nogen har brugt de gamle vægluftsluse.", + "Skøre bastard." ], "kg210b": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Jeg hører, nogen har brugt de gamle vægluftsluse.", + "Skøre bastard." ], "kg211": [ - "I've been on duty for two days straight." + "Jeg har været på vagt i to dage i træk." ], "kg211a": [ - "I've been on duty for two days straight." + "Jeg har været på vagt i to dage i træk." ], "kg211b": [ - "I've been on duty for two days straight." + "Jeg har været på vagt i to dage i træk." ], "kg212": [ - "Pfft, don't complain. I've got sewer patrol next week." + "Pfft, klage ikke. Jeg har kloakpatrulje i næste uge." ], "kg212a": [ - "Don't complain, I got sewer patrol next week." + "Lad være med at klage, jeg har kloakpatrulje i næste uge." ], "kg212b": [ - "Don't complain. I got sewer patrol next week." + "Lad være med at klage. Jeg fik kloakpatrulje i næste uge." ], "kg213": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ahh, din stakkels svin. Hvilken kommandant gjorde du sur?" ], "kg213a": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ahh, din stakkels svin. Hvilken kommandant gjorde du sur?" ], "kg213b": [ - "Hehe, poor bastard. Which commander did you piss off?" + "Hehe, stakkels svin. Hvilken kommandant gjorde du sur?" ], "kg214": [ - "I say death to the Underground." + "Jeg siger død til undergrunden." ], "kg214a": [ - "I say death to the Underground." + "Jeg siger død til undergrunden." ], "kg214b": [ - "I say death to the Underground." + "Jeg siger død til undergrunden." ], "kg215": [ - "I wanna so kill that Shadow guy." + "Jeg vil så gerne dræbe den skyggefyr." ], "kg215a": [ - "I want to kill that Shadow guy!" + "Jeg vil dræbe den skyggefyr!" ], "kg215b": [ - "I want to kill that Shadow guy!" + "Jeg vil dræbe den skyggefyr!" ], "kg216": [ - "And don't forget that traitor Torn." + "Og glem ikke den forræder Torn." ], "kg216a": [ - "And don't forget that traitor Torn." + "Og glem ikke den forræder Torn." ], "kg216b": [ - "Don't forget that traitor Torn!" + "Glem ikke den forræder Torn!" ], "kg217": [ - "Death's too good for him." + "Døden er for god for ham." ], "kg217a": [ - "Death's too good for him." + "Døden er for god for ham." ], "kg217b": [ - "Death's too good for him." + "Døden er for god for ham." ], "kg218": [ - "Why are we looking for some kid?" + "Hvorfor leder vi efter et barn?" ], "kg218a": [ - "Why are we looking for some kid?" + "Hvorfor leder vi efter et barn?" ], "kg218b": [ - "Why are we looking for some kid?" + "Hvorfor leder vi efter et barn?" ], "kg219": [ - "I don't know, Baron's orders." + "Jeg ved det ikke, barons ordrer." ], "kg219a": [ - "I dunno, Baron's orders." + "Jeg ved det ikke, barons ordrer." ], "kg219b": [ - "I dunno, Baron's orders." + "Jeg ved det ikke, barons ordrer." ], "kg220": [ - "Hey, have they found Mar's Tomb yet?" + "Hej, har de fundet Mars grav endnu?" ], "kg220a": [ - "Have they found Mar's Tomb yet?" + "Har de fundet Mars grav endnu?" ], "kg220b": [ - "Have they found Mar's Tomb yet?" + "Har de fundet Mars grav endnu?" ], "kg221": [ - "They wouldn't tell us if they did." + "De ville ikke fortælle os, hvis de gjorde det." ], "kg221a": [ - "Nah, they wouldn't tell us if they did." + "Næh, de ville ikke fortælle os, hvis de gjorde det." ], "kg221b": [ - "Nah, they wouldn't tell us if they did." + "Næh, de ville ikke fortælle os, hvis de gjorde det." ], "kg222": [ - "I've got a big bet on the next city races." + "Jeg har et stort bud på de næste byløb." ], "kg222a": [ - "I got a big bet on the next city races." + "Jeg fik et stort bud på de næste byløb." ], "kg222b": [ - "Got a big bet on the next city races." + "Fik et stort bud på de næste byløb." ], "kg223": [ - "Erol's my boy. He always wins." + "Erol er min dreng. Han vinder altid." ], "kg223a": [ - "Erol's my boy. He always wins." + "Erol er min dreng. Han vinder altid." ], "kg223b": [ - "Erol's my boy. He always wins." + "Erol er min dreng. Han vinder altid." ], "kg224": [ - "You going to the city races this time?" + "Skal du til byløbene denne gang?" ], "kg224a": [ - "You going to the city races this time?" + "Skal du til byløbene denne gang?" ], "kg224b": [ - "You going to the city races this time?" + "Skal du til byløbene denne gang?" ], "kg225": [ - "I'll be there." + "Jeg vil være der." ], "kg225a": [ - "I'll be there." + "Jeg vil være der." ], "kg225b": [ - "I'll be there." + "Jeg vil være der." ], "kg226": [ - "There've been some serious guard casualties this week." + "Der har været nogle alvorlige vagtofre i denne uge." ], "kg226a": [ - "There've been some serious guard casualties this week." + "Der har været nogle alvorlige vagtofre i denne uge." ], "kg226b": [ - "There've been some serious guard casualties this week." + "Der har været nogle alvorlige vagtofre i denne uge." ], "kg227": [ - "Yeah, some rebel fighter is stirring up the pot good." + "Ja, en eller anden oprørskæmper rører godt i gryden." ], "kg227a": [ - "Yeah, some rebel fighter is stirring the pot good." + "Ja, en eller anden oprørskæmper rører godt i gryden." ], "kg227b": [ - "Some rebel fighter is stirring the pot good." + "En eller anden oprørskæmper rører godt i gryden." ], "kg228": [ - "I'd love to be the one to take him out." + "Jeg ville elske at være den, der tager ham ud." ], "kg228a": [ - "I'd love to be the one to take him out." + "Jeg ville elske at være den, der tager ham ud." ], "kg228b": [ - "Oh I'd love to be the one to take him out." + "Åh, jeg ville elske at være den, der tager ham ud." ], "kg229": [ - "Let's get drinks later." + "Lad os få drinks senere." ], "kg229a": [ - "Let's get drinks later." + "Lad os få drinks senere." ], "kg229b": [ - "Let's get drinks later." + "Lad os få drinks senere." ], "kg230": [ - "I got a bad feeling about this war." + "Jeg fik en dårlig følelse af denne krig." ], "kg230a": [ - "I got a bad feeling about this war." + "Jeg fik en dårlig følelse af denne krig." ], "kg230b": [ - "I got a bad feeling about this war." + "Jeg fik en dårlig følelse af denne krig." ], "kg231": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Jeg hører, at der er flere Metal Head-angreb", + "end HQ's indrømmer." ], "kg231a": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Jeg hører, at der er flere Metal Head-angreb", + "end HQ's indrømmer." ], "kg231b": [ - "Yeah, I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ja, jeg hører, der er flere Metal Head-angreb", + "end HQ's indrømmer." ], "kg232": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "De rapporter, jeg har set, er ikke gode.", + "Jeg tror, ​​byen er i problemer." ], "kg232a": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "De rapporter, jeg har set, er ikke gode.", + "Jeg tror, ​​byen er i problemer." ], "kg232b": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "De rapporter, jeg har set, er ikke gode.", + "Jeg tror, ​​byen er i problemer." ], "kg233": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Jeg er bekymret for denne nye fyr", + "kæmper for undergrunden." ], "kg233a": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Jeg er bekymret for denne nye fyr", + "kæmper for undergrunden." ], "kg233b": [ - "I'm worried about this new guy fighting for the Underground.", - "fighting for the Underground." + "Jeg er bekymret for denne nye fyr, der kæmper for undergrunden.", + "kæmper for undergrunden." ], "kg234": [ - "Yeah, they say he can change into some kind of... monster." + "Ja, de siger, at han kan ændre sig til en slags... monster." ], "kg234a": [ - "Yeah, they say he can change into some kind of monster." + "Ja, de siger, at han kan ændre sig til en slags monster." ], "kg234b": [ - "They say he can change into some kind of monster." + "De siger, at han kan ændre sig til en slags monster." ], "kg235": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Bare rolig, hans hoved vil snart være på tårnmuren." ], "kg235a": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Bare rolig, hans hoved vil snart være på tårnmuren." ], "kg235b": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Bare rolig, hans hoved vil snart være på tårnmuren." ], "kg236": [ "Hehehe." @@ -5738,444 +5738,444 @@ "Hehehe..." ], "kg241a": [ - "Suspect in known Underground vehicle!" + "Mistænkt i kendt underjordisk køretøj!" ], "kg242a": [ - "He's got a cargo, move in!" + "Han har en last, flyt ind!" ], "kg243a": [ - "Stop that vehicle!" + "Stop det køretøj!" ], "kg244a": [ - "You're under arrest, pull over!" + "Du er anholdt, træk!" ], "kg245a": [ - "Surrender the vehicle!" + "Overgiv køretøjet!" ], "kg246a": [ - "We are in pursuit!" + "Vi er på jagt!" ], "kg247a": [ - "He's got a package!" + "Han har en pakke!" ], "kg248a": [ - "Suspect has suspicious cargo!" + "Mistænkt har mistænkelig last!" ], "kg249a": [ - "We think it's an illegal shipment." + "Vi mener, det er en ulovlig forsendelse." ], "kg250a": [ - "All units close in on vehicle!" + "Alle enheder lukker ind på køretøjet!" ], "kg251a": [ - "Suspect moving at high speed!" + "Mistænkt bevæger sig med høj hastighed!" ], "kg252a": [ - "We can't keep up!" + "Vi kan ikke følge med!" ], "kg253a": [ - "He's in the port!" + "Han er i havnen!" ], "kg254a": [ - "He got away!" + "Han slap væk!" ], "kg255a": [ - "Suspect has taken out pursuit!" + "Mistænkt har taget forfølgelse!" ], "kg256a": [ - "Vehicle destroyed, we got him!" + "Køretøj ødelagt, vi har ham!" ], "kg257a": [ - "Nice work boys, he's down." + "Godt arbejde drenge, han er nede." ], "kg258a": [ - "Excellent pursuit." + "Fremragende forfølgelse." ], "kg259a": [ - "Guard transport under attack, requesting support!" + "Vagttransport under angreb, anmoder om støtte!" ], "kg260a": [ - "We're takin' damage!" + "Vi tager skade!" ], "kg261a": [ - "He's after us!" + "Han er efter os!" ], "kg262a": [ - "He's trying to crash the transport!" + "Han prøver at ødelægge transporten!" ], "kg263a": [ - "We've had a transport ambush, units respond!" + "Vi har haft et transportbaghold, enheder reagerer!" ], "kg264a": [ - "He's picking up a prisoner!" + "Han samler en fange op!" ], "kg265a": [ - "We lost a Lurker prisoner." + "Vi mistede en Lurker-fange." ], "kg266a": [ - "He's got a Lurker prisoner with him!" + "Han har en Lurker-fange med sig!" ], "kg267a": [ - "Take 'em all out!" + "Tag dem alle ud!" ], "kg268a": [ - "We think he's helping the Lurkers escape!" + "Vi tror, ​​han hjælper Lurkers med at flygte!" ], "kg269a": [ - "He's taken out two of our transports already!" + "Han har allerede taget to af vores transporter ud!" ], "kg270a": [ - "He's alone again." + "Han er alene igen." ], "kg271a": [ - "Where's he heading?!" + "Hvor er han på vej hen?!" ], "kg272a": [ - "Terminate with extreme prejudice!" + "Slut med ekstreme fordomme!" ], "kg273a": [ - "He's attacking another transport!" + "Han angriber en anden transport!" ], "kg274a": [ - "We're being chased, send in an escort!" + "Vi bliver jagtet, send en eskorte!" ], "kg275a": [ - "We lost this passenger." + "Vi mistede denne passager." ], "kg276a": [ - "We're losing him!" + "Vi mister ham!" ], "kg277a": [ - "We got 'em!" + "Vi har dem!" ], "kg278a": [ - "We got 'em, teach ya to screw with the KG!" + "Vi har dem, lær dig at skrue med KG'en!" ], "kg279a": [ - "Pull over, Lurker lover!" + "Træk af, Lurker-elsker!" ], "kg280a": [ - "There's a kid, check him out." + "Der er et barn, tjek ham ud." ], "kg281a": [ - "The Baron wants every kid in this city arrested." + "Baronen vil have alle børn i denne by arresteret." ], "kg282a": [ - "Surrender the child!" + "Overgiv barnet!" ], "kg283a": [ - "Give up the kid!" + "Opgiv barnet!" ], "kg284a": [ - "If they won't surrender, kill them all!" + "Hvis de ikke vil overgive sig, så dræb dem alle!" ], "kg285a": [ - "Don't kill the kid." + "Dræb ikke barnet." ], "kg286a": [ - "The Baron wants the kid alive!" + "Baronen vil have barnet i live!" ], "kg287a": [ - "Find the boy!" + "Find drengen!" ], "kg288a": [ - "That could be the kid the Baron wants." + "Det kunne være den dreng, baronen vil have." ], "kg289a": [ - "After them!" + "Efter dem!" ], "kg290a": [ - "Don't move, boy!" + "Rør dig ikke, dreng!" ], "kg291a": [ - "Take out that mutt!" + "Tag den lort ud!" ], "kg292a": [ - "We should kill 'em all!" + "Vi burde dræbe dem alle!" ], "kg293a": [ - "They've taken a vehicle!" + "De har taget et køretøj!" ], "kg294a": [ - "If you get a clear shot, take it!" + "Hvis du får et klart billede, så tag det!" ], "kg295a": [ - "Suspect is fleeing in vehicle!" + "Mistænkte flygter i køretøj!" ], "kg296a": [ - "Suspect's vehicle moving through section seven." + "Mistænktes køretøj bevæger sig gennem afsnit syv." ], "kg297a": [ - "We think the kid's with that Underground freak." + "Vi tror, ​​barnet er sammen med den der underjordiske freak." ], "kg298a": [ - "Take 'em out, but keep the kid alive!" + "Tag dem ud, men hold barnet i live!" ], "kg299a": [ - "They're on foot again!" + "De er til fods igen!" ], "kg300a": [ - "What is that thing?!" + "Hvad er det for noget?!" ], "kg301a": [ - "Shoot that thing, shoot it!" + "Skyd den ting, skyd den!" ], "kg302a": [ - "What's he doing?!" + "Hvad laver han?!" ], "kg303a": [ - "It's that monster!" + "Det er det monster!" ], "kg304a": [ - "The stories are true!" + "Historierne er sande!" ], "kg305a": [ - "It's the dark monster!" + "Det er det mørke monster!" ], "kg306a": [ - "It's him!" + "Det er ham!" ], "kg307a": [ - "It's the dark eco freak!" + "Det er den mørke øko-freak!" ], "kg308a": [ - "Kill it, kill it!" + "Dræb det, dræb det!" ], "kg309a": [ - "Suspect has transformed into", - "a creature of some kind." + "Mistænkt har forvandlet sig til", + "et væsen af ​​en art." ], "kg310a": [ - "Sure is ugly." + "Selvfølgelig er det grimt." ], "kg311a": [ - "That's one ugly creature." + "Det er et grimt væsen." ], "kg312a": [ - "Look out!" + "Pas på!" ], "kg313a": [ - "Fall back!" + "Falde tilbage!" ], "kg314a": [ - "He's wasting everybody!" + "Han spilder alle!" ], "kg315a": [ - "We can't kill it!" + "Vi kan ikke dræbe den!" ], "kg316a": [ - "Stand your ground men!" + "Stå på jeres jord mænd!" ], "kg317a": [ - "The Krimzon Guard do not run!" + "Krimzon-vagten løber ikke!" ], "kg318a": [ - "Watch out for his claws!" + "Pas på hans kløer!" ], "kg319a": [ - "Keep clear of his energy bolts!" + "Hold fri af hans energibolte!" ], "kg320a": [ - "This is a raid, do not resist!" + "Dette er et raid, modstå ikke!" ], "kg321a": [ - "Move in!" + "Flytte ind!" ], "kg322a": [ - "By order of Baron Praxis,", - "everyone here is to be terminated!" + "Efter ordre fra Baron Praxis,", + "alle her skal opsiges!" ], "kg323a": [ - "Surrender and you will not suffer much." + "Overgiv dig, og du vil ikke lide meget." ], "kg324a": [ - "It's that Underground monster freak!" + "Det er den der underjordiske monsterfreak!" ], "kg325a": [ - "Get him!" + "Fang ham!" ], "kg326a": [ - "All units converge on Water Slums!" + "Alle enheder konvergerer på Water Slums!" ], "kg327a": [ - "We've got an Underground fighter!" + "Vi har en underjordisk jager!" ], "kg328a": [ - "Burn 'em down!" + "Brænd dem ned!" ], "kg329a": [ - "Stay together!" + "Bliv sammen!" ], "kg330a": [ - "We've got 'em cornered!" + "Vi har fået dem i et hjørne!" ], "kg331a": [ - "Suspect cornered in section two." + "Mistænkt i et hjørne i afsnit to." ], "kg332a": [ - "There is no escape!" + "Der er ingen flugt!" ], "kg333a": [ - "Resistance is futile!" + "Modstand er nyttesløs!" ], "kg334a": [ - "Give up the artifact, eco freak!" + "Opgiv artefakten, øko-freak!" ], "kg335a": [ - "We've cut 'em off!" + "Vi har skåret dem af!" ], "kg336a": [ - "He's trapped!" + "Han er fanget!" ], "kg337a": [ - "We got 'em!" + "Vi har dem!" ], "kg338a": [ - "We're taking heavy fire!" + "Vi tager kraftig ild!" ], "kg339a": [ - "We're taking heavy casualties, send in backup!" + "Vi tager store ofre, send backup!" ], "kg340a": [ - "This guy knows how to fight!" + "Denne fyr ved, hvordan man kæmper!" ], "kg341a": [ - "Hold your ground!" + "Hold fast!" ], "kg342a": [ - "Do not retreat!" + "Træk dig ikke tilbage!" ], "kg343a": [ - "We lost Beta squad!" + "Vi mistede Beta-hold!" ], "kg344a": [ - "We need more men!" + "Vi har brug for flere mænd!" ], "kg345a": [ - "He's on the south path!" + "Han er på sydstien!" ], "kg346a": [ - "He's in the water!" + "Han er i vandet!" ], "kg347a": [ - "He's near the east hut, all units converge!" + "Han er nær østhytten, alle enheder samles!" ], "kg348a": [ - "We're gonna lose him!" + "Vi mister ham!" ], "kg349a": [ - "Intruder alert, sound the alarm!" + "Indbrudsalarm, slå alarm!" ], "kg350a": [ - "The Fortress is under attack!" + "Fæstningen er under angreb!" ], "kg351a": [ - "This is our house, boy!" + "Det her er vores hus, dreng!" ], "kg352a": [ - "You've got brass coming into our Fortress!" + "Du har messing på vej ind i vores fæstning!" ], "kg353a": [ - "You won't get out of here alive!" + "Du kommer ikke herfra i live!" ], "kg354a": [ - "Thanks for making this easy." + "Tak for at gøre dette nemt." ], "kg355a": [ - "We're taking heavy casualties." + "Vi tager store tab." ], "kg356a": [ - "He's getting in deep, stop him!" + "Han kommer dybt, stop ham!" ], "kg357a": [ - "Take this guy out, that's an order!" + "Tag denne fyr ud, det er en ordre!" ], "kg358a": [ - "Send in the shock squad!" + "Send chokholdet ind!" ], "kg359a": [ - "Bring in the heavy firepower!" + "Bring den tunge ildkraft ind!" ], "kg360a": [ - "Send in the shield guards!" + "Send skjoldvagterne ind!" ], "kg361a": [ - "I'm on him!" + "Jeg er på ham!" ], "kg362a": [ - "Let me at 'em!" + "Lad mig komme til dem!" ], "kg363a": [ - "I got 'em!" + "Jeg har dem!" ], "kg364a": [ - "Finish him off!" + "Gør ham færdig!" ], "kg365a": [ - "He's moving toward the ammo room!" + "Han bevæger sig mod ammunitionsrummet!" ], "kg366a": [ - "Intercept the intruder before he gets in too far!" + "Opsnappe den ubudne gæst, før han kommer for langt ind!" ], "kg367a": [ - "He's picking up a suspect." + "Han samler en mistænkt op." ], "kg368a": [ - "He's got an Underground agent with him!" + "Han har en Underground-agent med sig!" ], "kg369a": [ - "Take 'em both out!" + "Tag dem begge ud!" ], "kg370a": [ - "He's picked up another suspect." + "Han har hentet en anden mistænkt." ], "kg371a": [ - "We lost the guy he dropped off!" + "Vi mistede den fyr, han afleverede!" ], "kg372a": [ - "He's got a passenger." + "Han har en passager." ], "kg373a": [ - "Driver is working with the Underground." + "Chaufføren arbejder med undergrunden." ], "kg374a": [ - "Suspect vehicle taking damage, but still moving." + "Mistanke om, at køretøj har taget skade, men stadig bevæger sig." ], "kg375a": [ - "We need to cut 'em off!" + "Vi er nødt til at skære dem af!" ], "kg376a": [ - "He's got another agent!" + "Han har en anden agent!" ], "kg377a": [ - "Suspect driving erratically!" + "Mistænkt kørsel uregelmæssigt!" ], "kg378a": [ - "Suspect still evading!" + "Mistænkt unddrager sig stadig!" ], "kg379a": [ - "We got 'em this time!" + "Vi fik dem denne gang!" ], "kg380a": [ - "Suspect vehicle destroyed!" + "Mistænkt køretøj ødelagt!" ], "kg381a": [ - "He's going for another vehicle!" + "Han går efter et andet køretøj!" ], "kg382a": [ - "We took 'em out!" + "Vi tog dem ud!" ], "kg383a": [ - "He's toast!" + "Han er toast!" ], "kg384a": [ - "Another win for the KG, good shooting, men." + "Endnu en sejr til KG, godt skydning, mænd." ], "kg385a": [ - "Suspect has evaded capture." + "Mistænkt har unddraget sig tilfangetagelse." ], "kg386a": [ - "Ough!" + "Dybt!" ], "kg387a": [ "Huh!" @@ -6184,31 +6184,31 @@ "Arghh!" ], "kg389a": [ - "Ughh!" + "Åh!" ], "kg390a": [ "Hugh!" ], "kg391a": [ - "Aughh!" + "Dybt!" ], "kg392a": [ "Haugh!" ], "kg393a": [ - "Oof!" + "Øv!" ], "kg394a": [ "Hah!" ], "kg395a": [ - "Ugh!" + "Åh!" ], "kg396a": [ "Hah!" ], "kg397a": [ - "Ugh!" + "Åh!" ], "kg398a": [ "Huff!" @@ -6223,10 +6223,10 @@ "Huh!" ], "kg402a": [ - "Huuh!" + "Huh!" ], "kg403a": [ - "Haah!" + "Haha!" ], "kg404a": [ "Ahh!" @@ -6238,13 +6238,13 @@ "Arrgh!" ], "kg407a": [ - "Uargh!" + "Wow!" ], "kg408a": [ - "Ugh...!" + "Øhh...!" ], "kg409a": [ - "Ugh!" + "Åh!" ], "kg410a": [ "Nargh!" @@ -6253,7 +6253,7 @@ "Hah!" ], "kg412a": [ - "Ugh...!" + "Øhh...!" ], "kg413a": [ "Gah...!" @@ -6265,236 +6265,236 @@ "Argh!" ], "kg416a": [ - "Ugh...!" + "Øhh...!" ], "kg417a": [ - "Uh..." + "Øh..." ], "kg418a": [ - "Ah...!" + "Åh...!" ], "kg419a": [ - "Uugh!" + "Åh!" ], "kg420a": [ - "Ah...!" + "Åh...!" ], "kg421a": [ "Huah...!" ], "kg422a": [ - "Agh!" + "Åh!" ], "kg423a": [ - "Hungh...!" + "Hunh...!" ], "kg424a": [ "Argh!" ], "kg425a": [ - "Ugh!" + "Åh!" ], "kg426a": [ - "Ugh!" + "Åh!" ], "kg427a": [ - "Ugh!" + "Åh!" ], "kg428a": [ - "Oof!" + "Øv!" ], "kgv001": [ - "Stop!" + "Hold op!" ], "kgv002": [ - "Open fire!" + "Åben ild!" ], "kgv003": [ - "Move in!" + "Flytte ind!" ], "kgv004": [ - "Take 'em out!" + "Tag dem ud!" ], "kgv005": [ - "Take him down!" + "Tag ham ned!" ], "kgv006": [ - "Shoot 'em, shoot 'em!" + "Skyd dem, skyd dem!" ], "kgv007": [ - "Die, outlaw!" + "Dø, fredløs!" ], "kgv008": [ - "Eat this!" + "Spis det her!" ], "kgv009": [ - "Fire, fire!" + "Ild, ild!" ], "kgv010": [ - "Give it up, outlaw!" + "Giv op, fredløs!" ], "kgv011": [ - "Seal off the area!" + "Afspær området!" ], "kgv012": [ - "Call in reinforcements!" + "Tilkald forstærkninger!" ], "kgv013": [ - "Riot in progress!" + "Optøjer i gang!" ], "kgv014": [ - "Call for backup!" + "Ring for backup!" ], "kgv015": [ - "Stop the vehicle!" + "Stop køretøjet!" ], "kgv016": [ - "You are under arrest!" + "Du er anholdt!" ], "kgv017": [ - "Pull over!" + "Bluse!" ], "kgv018": [ - "Slow down!" + "Sænk farten!" ], "kgv019": [ - "Move over!" + "Flyt dig!" ], "kgv020": [ - "Get out of the vehicle!" + "Kom ud af køretøjet!" ], "kgv021": [ - "Call in more Hellcats!" + "Ring til flere Hellcats!" ], "kgv022": [ - "Requesting backup!" + "Anmoder om backup!" ], "kgv023": [ - "High speed chase in sector four!" + "Højhastighedsjagt i sektor fire!" ], "kgv024": [ - "Suspect in vehicle!" + "Mistænkt i køretøj!" ], "kgv025": [ - "Suspect fleeing into sector five." + "Mistænkt flygter ind i sektor fem." ], "kor001": [ - "I am so proud of you Jak, and you too, Daxter!", - "Together you have done real damage to the Baron.", - "We may win this war yet!" + "Jeg er så stolt af dig Jak, og dig også, Daxter!", + "Sammen har I gjort rigtig skade på baronen.", + "Vi kan vinde denne krig endnu!" ], "kor002": [ - "Excellent work, you are proving to be quite an asset.", - "Without eco, the Baron will soon topple,", - "and the city's future will be in our hands." + "Fremragende arbejde, du viser dig at være et stort aktiv.", + "Uden øko vil baronen snart vælte,", + "og byens fremtid vil være i vores hænder." ], "kor004": [ - "Another blow to the Baron, my good friends!", - "Very soon, our fortunes will change!" + "Endnu et slag til baronen, mine gode venner!", + "Meget snart vil vores formuer ændre sig!" ], "krew001": [ - "Jak, this is Krew. I just talked to my racing client", - "and she told me you were pretty good with that JET-Board", - "of hers. My sources say a shipment of Krimzon Guard", - "listening equipment just arrived in the Port.", - "None of us, including the Underground, want those devices", - "up and running. It's not good for business.", - "Ride the JET-Board out into the Port", - "and destroy every Krimzon Guard crate you find.", - "There's sure to be a defense perimeter,", - "so watch out, 'ey?" + "Jak, det er Krew. Jeg har lige talt med min racerklient", + "og hun fortalte mig, at du var ret god med det JET-board", + "af hendes. Mine kilder siger en forsendelse af Krimzon Guard", + "lytteudstyr lige ankommet til havnen.", + "Ingen af ​​os, inklusive undergrunden, vil have disse enheder", + "oppe at køre. Det er ikke godt for erhvervslivet.", + "Kør JET-boardet ud i havnen", + "og ødelægge alle Krimzon Guard-kasser, du finder.", + "Der er helt sikkert en forsvarsomkreds,", + "så pas på, 'ey?" ], "krew002": [ - "Excellent work, Jak. Even I am impressed.", - "I should keep unscrupulous Krimzon Guards", - "out of our business.", - "What's the world coming to when you can't buy off", - "a few guards with bribes?" + "Fremragende arbejde, Jak. Selv er jeg imponeret.", + "Jeg burde beholde skruppelløse Krimzon-vagter", + "ud af vores forretning.", + "Hvad kommer verden til, når du ikke kan købe ud", + "et par vagter med bestikkelse?" ], "krew003": [ - "Ooooh... the bedtime stories were true!", - "The fabled Heart of Mar was hidden inside that ugly statue", - "of the old boy.", - "Nothing fractured, nothing gained! That's my motto. Hahaha...", - "For your loyalty, you'll find an excellent gun upgrade", - "stashed in a crate in the Port." + "Åååh... godnathistorierne var sande!", + "Det sagnomspundne Mars hjerte var gemt inde i den grimme statue", + "af den gamle dreng.", + "Intet brækket, intet vundet! Det er mit motto. Hahaha...", + "For din loyalitet finder du en fremragende våbenopgradering", + "gemt i en kasse i havnen." ], "krew004": [ - "That's one turret down. Keep looking!" + "Det er et tårn nede. Led videre!" ], "krew005": [ - "Two turrets. Good work so far!" + "To tårne. Godt arbejde indtil videre!" ], "krew006": [ - "Three turrets gone. Nice! Keep it up!" + "Tre tårne ​​er væk. Pæn! Bliv ved!" ], "krew007": [ - "Four turrets trashed. Haha... Lovely, boys! Go get 'em!" + "Fire tårne ​​spoleret. Haha... Dejligt, drenge! Hent dem!" ], "krew008": [ - "Five turrets down the drain! Keep going." + "Fem tårne ​​ned i afløbet! Fortsæt." ], "krew009": [ - "Six turrets out of commission.", - "Hah, I like the way you work." + "Seks tårne ​​ude af drift.", + "Hah, jeg kan godt lide den måde du arbejder på." ], "krew010": [ - "Brass work, boys! You destroyed all the turrets, eh?", - "Now, come back to the Hip Hog." + "Messingarbejde, drenge! Du ødelagde alle tårnene, ikke?", + "Kom nu tilbage til Hip Hog." ], "kwbf001": [ - "You know I can't play fair!", - "I have a secret weapon: my duplicity field!", - "Say hello to my little friends...", - "Ah, multiple me! Hahahaha... How delightful." + "Du ved, jeg ikke kan spille fair!", + "Jeg har et hemmeligt våben: mit dobbelte felt!", + "Sig hej til mine små venner...", + "Ah, flere mig! Hahahaha... Hvor dejligt." ], "kwbf002": [ - "Let me introduce you to my... \"crew.\"" + "Lad mig præsentere dig for mit... \"besætning.\"" ], "kwbf003": [ - "Let's dance!" + "Lad os danse!" ], "kwbf004": [ - "You will die!" + "Du vil dø!" ], "kwbf005": [ - "Here we come!" + "Her kommer vi!" ], "kwbf006": [ - "My, don't my twins look stunning?" + "Min, ser mine tvillinger ikke fantastiske ud?" ], "kwbf007": [ - "You can't stop us all!" + "Du kan ikke stoppe os alle!" ], "kwbf008": [ - "Surprise! More of me than you can handle." + "Overraskelse! Mere af mig end du kan klare." ], "kwbf009": [ - "I've a few good men to help me." + "Jeg har et par gode mænd til at hjælpe mig." ], "kwbf010": [ - "Get him!" + "Fang ham!" ], "kwbf011": [ - "UARGH! Try stopping me now!" + "UARGH! Prøv at stoppe mig nu!" ], "kwbf012": [ - "You're getting lucky so far, 'ey?" + "Du er heldig indtil videre, 'ey?" ], "kwbf013": [ - "I grow weary of this. We end it now." + "Jeg bliver træt af det her. Vi afslutter det nu." ], "kwbf014": [ - "Hm-hm, I move pretty fast for a big man, 'ey?" + "Hm-hm, jeg bevæger mig ret hurtigt for en stor mand, 'ey?" ], "kwbf015": [ - "I float like a butterfly and sting like a wumpbee!" + "Jeg flyder som en sommerfugl og stikker som en wumpbee!" ], "kwbf016": [ "Urghh!" ], "kwbf017": [ - "Aurgh!" + "Argh!" ], "kwbf018": [ "Arghh!" @@ -6503,1295 +6503,1295 @@ "Urrghh!" ], "kwbf020": [ - "Urgh, ow!" + "Urgh, åh!" ], "kwbf021": [ - "Die!" + "Dø!" ], "kwbf022": [ - "Now I have you!" + "Nu har jeg dig!" ], "kwbf023": [ - "You cannot win, Jak!" + "Du kan ikke vinde, Jak!" ], "kwbf024": [ - "Here's some pain!" + "Her er noget smerte!" ], "kwbf025": [ - "No!" + "Ingen!" ], "kwbf026": [ - "You're trying my patience!" + "Du prøver min tålmodighed!" ], "kwbf027": [ - "Stand still!" + "Stå stille!" ], "kwbf028": [ - "Haha, how did that feel?" + "Haha, hvordan føltes det?" ], "kwbf029": [ - "You should have walked away when you had a chance." + "Du skulle være gået væk, når du havde en chance." ], "kwbf030": [ - "Pop this!" + "Pop det her!" ], "kwbf031": [ - "You can't stop the bomb, Jak!" + "Du kan ikke stoppe bomben, Jak!" ], "kwbf032": [ - "Hahahaha, that felt good!" + "Hahahaha, det føltes godt!" ], "kwbf033": [ - "I am the weapon master!" + "Jeg er våbenmesteren!" ], "kwbf034": [ - "Had enough?" + "Fik du nok?" ], "kwbf035": [ - "Here we come!" + "Her kommer vi!" ], "kwbf036": [ - "Dance for me, Jak!" + "Dans for mig, Jak!" ], "kwbf037": [ - "You can't get us all!" + "Du kan ikke få os alle sammen!" ], "kwbf038": [ - "Tag! You're it." + "Tag! Du er det." ], "kwbf039": [ - "Phew. This is a bit of a workout..." + "Pyha. Det her er lidt af en træning..." ], "kwbf040": [ - "Which is the real me, Jak?" + "Hvem er den rigtige mig, Jak?" ], "kwbf041": [ - "Finally... I get to put you in your place!" + "Endelig... må jeg sætte dig i dit sted!" ], "kwbf042": [ - "Arghh! You little...!" + "Arghh! Du lille...!" ], "ora006": [ - "Bring me 200 more Metal Head Skull Gems", - "and I will show you another Dark Power." + "Giv mig 200 flere Metal Head Skull Gems", + "og jeg vil vise dig en anden mørk magt." ], "ora007": [ - "Bring me 200 more Skull Gems", - "and another power will be yours to control." + "Giv mig 200 flere Skull Gems", + "og en anden magt vil være din til at kontrollere." ], "ora008": [ - "Bring me more Skull Gems to receive control", - "over a Dark Power." + "Bring mig flere Skull Gems for at modtage kontrol", + "over en mørk magt." ], "ora009": [ - "You do not have enough Skull Gems.", - "Come back when you have collected more." + "Du har ikke nok Skull Gems.", + "Kom tilbage, når du har samlet mere." ], "ora010": [ - "I need more Skull Gems." + "Jeg har brug for flere Skull Gems." ], "ora011": [ - "Trust not your reliance on weapons." + "Stol ikke på din afhængighed af våben." ], "ora012": [ - "Use only your body and brain for this challenge." + "Brug kun din krop og hjerne til denne udfordring." ], "ora013": [ - "Weapons are for the weak." + "Våben er for de svage." ], "ora014": [ - "You must not use weapons in this challenge." + "Du må ikke bruge våben i denne udfordring." ], "pek001": [ - "Groark! I can't believe you actually did this thing!", - "Onin says she will search timelines for answers", - "about these sacred relics. I will find you then." + "Groark! Jeg kan ikke tro, du rent faktisk gjorde det her!", + "Onin siger, at hun vil søge tidslinjer for svar", + "om disse hellige relikvier. Så finder jeg dig." ], "pek002": [ - "Groark! Whoa... well I'll be a moncaw's uncle, the Light Tower", - "actually does exist! The beam of light is shining somewhere", - "in the city! The Tomb of Mar was right under our noses", - "all along. And thanks to me, you found it!" + "Groark! Hov... ja, jeg bliver en moncaws onkel, Light Tower", + "eksisterer faktisk! Lysstrålen skinner et sted", + "i byen! Mars grav var lige under vores næse", + "hele tiden. Og takket være mig fandt du det!" ], "pek003": [ - "Wow! As I live and molt, one step closer to the Tomb.", - "I never thought we'd get this far!" + "Wow! Mens jeg lever og smelter, et skridt tættere på graven.", + "Jeg troede aldrig, vi ville nå så langt!" ], "pek010": [ - "This is Onin's magic bowl.", - "Onin will make symbols appear from her bowl.", - "When the symbols appear, you must pop them before they", - "reach the ground. You must pop them quickly, pop only", - "the symbols you see. If you try to pop a symbol that is", - "not there, Onin will give you a penalty! Miss any symbols", - "and you will penalized! Each round will get faster.", - "Let's see how far you get.", - "You must get a high enough score to win." + "Dette er Onins magiske skål.", + "Onin vil få symboler til at dukke op fra hendes skål.", + "Når symbolerne dukker op, skal du pop dem før de", + "nå jorden. Du skal pop dem hurtigt, pop kun", + "de symboler du ser. Hvis du prøver at pop et symbol, dvs", + "ikke der, vil Onin give dig en straf! Savner nogen symboler", + "og du vil straffes! Hver runde bliver hurtigere.", + "Lad os se, hvor langt du kommer.", + "Du skal have en høj nok score for at vinde." ], "pek011": [ - "You are doing very well!" + "Du gør det meget godt!" ], "pek012": [ - "Huh, not bad." + "Huh, ikke dårligt." ], "pek013": [ - "Keep going, you can do it!" + "Fortsæt, du kan gøre det!" ], "pek014": [ - "Pop any more than the true number of each symbol,", - "and you will be penalized! Groark!" + "Pop mere end det sande antal af hvert symbol,", + "og du vil blive straffet! Groark!" ], "pek015": [ - "Ready? Go!" + "Parat? Gå!" ], "pek016": [ - "That symbol wasn't there, penalty!" + "Det symbol var der ikke, straf!" ], "pek017": [ - "Hah, Onin got you! Pop only symbols that you see." + "Hah, Onin fik dig! Pop kun symboler, som du ser." ], "pek018": [ - "Here comes another round!", - "Give him another burst, Onin girl!" + "Her kommer endnu en omgang!", + "Giv ham endnu et udbrud, Onin pige!" ], "pek019": [ - "She got you again! What is your problem?" + "Hun fik dig igen! Hvad er dit problem?" ], "pek020": [ - "I can't believe you've made it this far!" + "Jeg kan ikke fatte, at du er nået så langt!" ], "pek021": [ - "Quickly! You are missing symbols!" + "Hurtigt! Du mangler symboler!" ], "pek022": [ - "You missed some!" + "Du gik glip af nogle!" ], "pek023": [ - "Faster! Faster!" + "Hurtigere! Hurtigere!" ], "pek024": [ - "Give it to him, Onin! More, Onin, more!", - "You go, girl, shake what your momma gave you!" + "Giv ham det, Onin! Mere, Onin, mere!", + "Gå, pige, ryst det, din mor gav dig!" ], "pek025": [ - "Rockin' in the club." + "Rocker i klubben." ], "pek026": [ - "He can't do that many!" + "Han kan ikke så mange!" ], "pek027": [ - "What? He's still going?" + "Hvad? Går han stadig?" ], "pek028": [ - "Let's see if he can handle it." + "Lad os se om han kan klare det." ], "pek029": [ - "Go! Come on!" + "Gå! Kom nu!" ], "pek030": [ - "Okay, so you're good." + "Okay, så du er god." ], "pek031": [ - "Wow! Not bad." + "Wow! Ikke dårligt." ], "pek032": [ - "Well, I laid an egg." + "Nå, jeg har lagt et æg." ], "pek033": [ - "Amazing! You actually won!", - "I am without words, and that is rare." + "Fantastiske! Du vandt faktisk!", + "Jeg er uden ord, og det er sjældent." ], "pek034": [ - "You got enough points, congratulations!" + "Du har nok point, tillykke!" ], "pek035": [ - "Last penalty! You lose, loser." + "Sidste straf! Du taber, taber." ], "pek036": [ - "You lost! Why am I not surprised?" + "Du tabte! Hvorfor er jeg ikke overrasket?" ], "pek037": [ - "You lose! Would you like to try again?" + "Du taber! Vil du prøve igen?" ], "pek038": [ - "Ahh, you laid an egg. Too bad, so sad." + "Ahh, du har lagt et æg. Ærgerligt, så trist." ], "pek039": [ - "Oooh, so close... not! Hehehe..." + "Åh, så tæt på... ikke! Hehehe..." ], "pek040": [ - "You made a valiant effort, but you suck!" + "Du gjorde en tapper indsats, men du stinker!" ], "pek041": [ - "Game over, finito, done, se acabó!" + "Game over, finito, færdig, det er slut!" ], "prop002": [ - "As you all know, I was wounded during our last", - "glorious assault against the Metal Head Nest", - "many years ago. I have sacrificed everything", - "for this city and I demand only the same in return!", - "Loyalty will be rewarded,", - "death will await all others." + "Som I alle ved, blev jeg såret under vores sidste", + "glorværdigt angreb mod Metal Head Nest", + "mange år siden. Jeg har ofret alt", + "for denne by og jeg kræver kun det samme til gengæld!", + "Loyalitet vil blive belønnet,", + "døden venter på alle andre." ], "prop003": [ - "The Dark Eco inside you will eventually kill you, Jak.", - "Its destructive effects cannot be stopped.", - "Once you are in its chaotic grip, it will not let you go", - "until you slide into insanity. Turn yourself in, and I will", - "kill you mercifully and painlessly,", - "it is your only way out." + "Den mørke øko indeni dig vil til sidst dræbe dig, Jak.", + "Dens ødelæggende virkninger kan ikke stoppes.", + "Når først du er i dets kaotiske greb, vil den ikke lade dig gå", + "indtil du glider ind i sindssyge. Giv dig selv, og jeg vil", + "dræbe dig barmhjertigt og smertefrit,", + "det er din eneste vej ud." ], "prop004": [ - "Don't try to make a fool out of me, Jak.", - "Just because I haven't killed you yet doesn't", - "mean I'm not onto you. The citizens of this city", - "worship me because I offer them safety.", - "All I ask in return is for their lives.", - "I'll find you, and when I do, you'll wish", - "you died in prison." + "Forsøg ikke at gøre mig til et fjols, Jak.", + "Bare fordi jeg ikke har dræbt dig endnu, gør det ikke", + "mener jeg ikke er på dig. Borgerne i denne by", + "tilbe mig, fordi jeg tilbyder dem sikkerhed.", + "Alt jeg beder om til gengæld er for deres liv.", + "Jeg finder dig, og når jeg gør det, vil du ønske det", + "du døde i fængslet." ], "prop005": [ - "Attention, my loyal citizens! We are looking for a", - "rebel fugitive who has caused the city considerable", - "damage of late. This man is armed and extremely", - "dangerous and can somehow change into a monstrous", - "creature. We have reports he is working with the", - "Metal Heads to subvert your city and your safety.", - "Report all sightings immediately!" + "Opmærksomhed, mine loyale borgere! Vi leder efter en", + "oprørsflygtning, der har forårsaget byen betydeligt", + "skade på det seneste. Denne mand er bevæbnet og ekstremt", + "farlig og kan på en eller anden måde ændre sig til en monstrøs", + "væsen. Vi har rapporter, han arbejder med", + "Metalhoveder til at undergrave din by og din sikkerhed.", + "Rapporter alle observationer med det samme!" ], "prop006": [ - "Brave citizens, today is the anniversary of the great", - "battle that ruined our city section we now call", - "Dead Town. Remember those who died", - "that day and how much we owe the Metal Heads", - "for their treachery! Remember how bravely I fought", - "to save those poor souls of the overrun section", - "and reflect on how grateful you should all be that the", - "Krimzon Guard keeps you safe each day." + "Modige borgere, i dag er det de stores jubilæum", + "kamp, ​​der ødelagde vores bydel, vi nu kalder", + "Død By. Husk dem, der døde", + "den dag, og hvor meget vi skylder Metal Heads", + "for deres forræderi! Husk, hvor tappert jeg kæmpede", + "for at redde de stakkels sjæle fra den overløbne sektion", + "og reflekter over, hvor taknemmelige I alle sammen skal være for at", + "Krimzon Guard holder dig sikker hver dag." ], "prop007": [ - "This is your Baron. The reports of a Metal Head", - "invasion of the city are vastly overblown.", - "I assure you this is but a small incursion and we will", - "defeat it shortly. Stay in your homes, do not panic,", - "or you will be punished!" + "Dette er din baron. Rapporterne om et metalhoved", + "invasion af byen er voldsomt overdrevet.", + "Jeg kan forsikre dig om, at dette kun er et lille indfald, og det vil vi", + "besejre det om lidt. Bliv i dit hjem, gå ikke i panik,", + "ellers bliver du straffet!" ], "prop008": [ - "Attention citizens, this is your Baron speaking.", - "There have been several unauthorized uses of the", - "city's old gate locks. Fortunately, these breaches", - "have not resulted in contamination, but we all know", - "how deadly the Wasteland is. No one is allowed", - "outside the city without authorization, let it be", - "known that any violators will be caught", - "and executed." + "Opmærksomhed borgere, det er jeres baron, der taler.", + "Der har været flere uautoriserede brug af", + "byens gamle portlåse. Heldigvis er disse brud", + "har ikke resulteret i forurening, men vi ved det alle", + "hvor dødbringende ødelandet er. Ingen er tilladt", + "uden for byen uden tilladelse, lad det være", + "vide, at eventuelle krænkere vil blive fanget", + "og henrettet." ], "prop009": [ - "Serve your city." + "Tjen din by." ], "prop010": [ - "Sacrifice for your city, and all will prosper!" + "Offer for din by, og alt vil trives!" ], "prop011": [ - "You are safe, because I care." + "Du er sikker, fordi jeg bekymrer mig." ], "prop012": [ - "All Metal Heads must die!" + "Alle Metal Heads skal dø!" ], "prop013": [ - "Work hard, and be grateful." + "Arbejd hårdt, og vær taknemmelig." ], "prop014": [ - "Report all wrongdoers." + "Anmeld alle forbrydere." ], "prop015": [ - "Remember, even your friends could be enemies." + "Husk, selv dine venner kan være fjender." ], "prop016": [ - "Turn in all who subvert." + "Indlever alle, der undergraver." ], "prop017": [ - "Strength is our only option!" + "Styrke er vores eneste mulighed!" ], "prop018": [ - "Obey and be happy." + "Adlyd og vær glad." ], "prop019": [ - "Sacrifice is something you should do", - "for your city." + "Opofrelse er noget, du bør gøre", + "for din by." ], "prop020": [ - "Sacrifice for your city." + "Ofre for din by." ], "prop021": [ - "Remember, even friends might be enemies." + "Husk, at selv venner kan være fjender." ], "prop022": [ - "The city needs your sacrifice." + "Byen har brug for dit offer." ], "prop023": [ - "It is better inside the walls!" + "Det er bedre inden for væggene!" ], "prop024": [ - "The law will show no mercy." + "Loven vil ikke vise nogen nåde." ], "prop025": [ - "Justice is swift." + "Retfærdigheden er hurtig." ], "prop026": [ - "The Underground movement is dead!" + "Undergrundsbevægelsen er død!" ], "prop027": [ - "Join the Krimzon Guard and your family", - "will be allowed to stay." + "Slut dig til Krimzon Guard og din familie", + "får lov at blive." ], "prop028": [ - "One way: My way." + "En måde: på min måde." ], "prop029": [ - "To lead is to control." + "At lede er at kontrollere." ], "prop030": [ - "Give up your freedom and I will protect you." + "Opgiv din frihed, og jeg vil beskytte dig." ], "prop031": [ - "Have faith in me and the Promised Land is yours." + "Hav tro på mig, og det forjættede land er dit." ], "prop032": [ - "Your city needs a strong leader, not a childish fool." + "Din by har brug for en stærk leder, ikke et barnligt fjols." ], "prop033": [ - "Welcome not the unknown face." + "Velkommen ikke det ukendte ansigt." ], "prop034": [ - "Shun those who would defy me!" + "Undgå dem, der ville trodse mig!" ], "prop035": [ - "I am the face of Haven City." + "Jeg er Haven Citys ansigt." ], "prop036": [ - "Without my strength, there would be no city." + "Uden min styrke ville der ikke være nogen by." ], "prop037": [ - "Follow me to a safer future!" + "Følg mig til en sikrere fremtid!" ], "prop038": [ - "You are safe inside the walls with me." + "Du er tryg indenfor murene hos mig." ], "prop039": [ - "Defy... and die." + "Trods... og dø." ], "prop040": [ - "Welcome to Haven City!", - "All laws are enforced for your safety.", - "Obey me and you will not be punished." + "Velkommen til Haven City!", + "Alle love håndhæves for din sikkerhed.", + "Adlyd mig, og du vil ikke blive straffet." ], "prop041": [ - "The city is safe. I will not allow harm", - "to befall you, trust me." + "Byen er sikker. Jeg vil ikke tillade skade", + "at ramme dig, tro mig." ], "prop042": [ - "Rest assured, I will destroy the Metal Heads.", - "One way or another." + "Vær sikker, jeg vil ødelægge Metal Heads.", + "På den ene eller anden måde." ], "prop043": [ - "To all citizens, this puny Underground revolt", - "will be dealt with by all aggressive means.", - "We will crush these arrogant upstarts, they will not", - "be allowed to threaten me or this city's order!" + "Til alle borgere, dette sølle underjordiske oprør", + "vil blive behandlet med alle aggressive midler.", + "Vi vil knuse disse arrogante opkomlinge, det vil de ikke", + "få lov til at true mig eller denne bys orden!" ], "prop044": [ - "To all citizens of this great city, there is a monster", - "among you, masquerading as a man!", - "He is dangerous and must be destroyed!", - "I offer a reward of eco for his capture, or, if you", - "have a loved one in prison, I will exchange them for", - "this renegade. I promise." + "For alle borgere i denne store by er der et monster", + "blandt jer, forklædt som en mand!", + "Han er farlig og skal destrueres!", + "Jeg tilbyder en øko-belønning for hans fangst, eller hvis du", + "har en elsket i fængslet, vil jeg bytte dem til", + "denne frafalden. Jeg lover." ], "prop045": [ - "To all who defy me! I am watching you,", - "I am everywhere, I am this city!" + "Til alle, der trodser mig! Jeg holder øje med dig,", + "Jeg er overalt, jeg er denne by!" ], "prop046": [ - "This is your Baron. I have been informed by the", - "ministry of extreme labor that worker productivity is", - "down this month! That is unacceptable!", - "I give you safety and this is how you repay me?", - "You must work harder, not smarter!", - "Free the mind and the body will do as it's told,", - "forced labor will set you free!", - "And to help you in your spiritual motivation...", - "quotas are doubled next month!" + "Dette er din baron. Jeg er blevet informeret af", + "ministeriet for ekstrem arbejdskraft, som arbejdernes produktivitet er", + "ned i denne måned! Det er uacceptabelt!", + "Jeg giver dig sikkerhed, og det er sådan, du betaler mig tilbage?", + "Du skal arbejde hårdere, ikke klogere!", + "Frigør sindet og kroppen vil gøre som den bliver fortalt,", + "tvangsarbejde vil sætte dig fri!", + "Og for at hjælpe dig med din spirituelle motivation...", + "kvoterne fordobles næste måned!" ], "prop047": [ - "Due to recent, uh... \"attrition\" difficulties,", - "this city needs fresh Krimzon Guard recruits!", - "Everyone is asked to volunteer members of their family!", - "Come down to your friendly Fortress facility.", - "Or else!" + "På grund af nylige, øh... \"nedslidning\" vanskeligheder,", + "denne by har brug for nye Krimzon Guard rekrutter!", + "Alle bliver bedt om at melde medlemmer af deres familie frivilligt!", + "Kom ned til dit venlige fæstningsanlæg.", + "Ellers!" ], "prop048": [ - "As your Baron, I am instituting a \"no hoverboard\" rule", - "in the city! Young delinquents with nothing better", - "to do than float around and do tricks! Huh!", - "I'll put all violators into the Guard and teach them", - "some discipline. No skating, it's the law!" + "Som din baron indfører jeg en regel om \"ingen hoverboard\".", + "i byen! Unge kriminelle uden noget bedre", + "at gøre end at flyde rundt og lave tricks! Huh!", + "Jeg vil sætte alle krænkere i vagten og undervise dem", + "noget disciplin. Ingen skøjteløb, det er loven!" ], "prop049": [ - "I am disappointed with this city's lack of", - "committment and sacrifice. Work harder! Eat less!", - "Drink only when I tell you! Sleep is optional.", - "We are at war with an outside threat,", - "don't make me declare war on you as well!" + "Jeg er skuffet over denne bys mangel på", + "engagement og opofrelse. Arbejd hårdere! Spis mindre!", + "Drik kun når jeg fortæller dig! Søvn er valgfrit.", + "Vi er i krig med en trussel udefra,", + "lad mig heller ikke erklære krig mod dig!" ], "prop050": [ - "Greetings, people of this wonderful utopia. This year's", - "championship race will begin shortly. All citizens", - "not under house arrest are invited to come down to", - "the Stadium and watch your favorite son Erol", - "once again show how the Krimzon Guard are the elite", - "warriors of this city. Bring the whole family! The first", - "one thousand children will get a mandatory", - "Krimzon Guard recruitment package and be", - "\"asked\" to join the Guard for life, what a treat!" + "Hilsen folk i denne vidunderlige utopi. Årets", + "mesterskabsløbet begynder snart. Alle borgere", + "ikke i husarrest inviteres til at komme ned til", + "Stadion og se din yndlingssøn Erol", + "endnu en gang vise, hvordan Krimzon-garden er eliten", + "krigere i denne by. Tag hele familien med! Den første", + "tusinde børn vil få en obligatorisk", + "Krimzon Guard rekrutteringspakke og være", + "\"bad\" om at slutte sig til vagten for livet, sikke en godbid!" ], "prop051": [ - "This is your Baron, I am still in control!", - "And I assure you, there's absolutely no Metal Heads", - "in the city. Anyone who contradicts this fact...", - "will be shot! The current situation is merely", - "an elaborate propaganda hoax, perpetrated by", - "the outlawed Underground militia trying to", - "subvert our laws and discredit those who protect you", - "while you sleep! Pay no attention to this foolish hoax,", - "there are no Metal Heads within 100 miles of this city!" + "Dette er din baron, jeg har stadig kontrol!", + "Og jeg forsikrer dig, der er absolut ingen Metal Heads", + "i byen. Enhver, der modsiger dette faktum...", + "vil blive skudt! Den nuværende situation er blot", + "en udførlig propagandafup, begået af", + "den forbudte underjordiske milits forsøger at", + "undergrave vores love og miskreditere dem, der beskytter dig", + "mens du sover! Vær ikke opmærksom på denne tåbelige fup,", + "der er ingen Metal Heads inden for 100 miles fra denne by!" ], "prop052": [ - "This is Baron Praxis. We have taken back the city", - "and the Metal Heads are now fleeing before us!", - "Victory is at hand! Continue to fight for the freedom", - "I may some day give you. Continue to defy these", - "enemies of my law and order...", - "and continue to die for me." + "Dette er Baron Praxis. Vi har taget byen tilbage", + "og Metalhovederne flygter nu foran os!", + "Sejren er lige ved hånden! Fortsæt med at kæmpe for friheden", + "Jeg kan måske give dig en dag. Fortsæt med at trodse disse", + "fjender af min lov og orden...", + "og fortsætte med at dø for mig." ], "prop053": [ - "Fear not the men in red. Sure, there are occasional", - "complaints about their over-aggressive policing,", - "wanton destruction of people's property during raids,", - "mass-arrests, misplaced loved ones and whatnot.", - "Hey, we're only human! Running a city can be", - "tougher than it looks, imagine how much worse", - "it would be if the Metal Heads were in charge!" + "Frygt ikke mændene i rødt. Selvfølgelig er der nogle gange", + "klager over deres overaggressive politiarbejde,", + "hensynsløs ødelæggelse af folks ejendom under razziaer,", + "masseanholdelser, malplacerede kære og hvad der ellers.", + "Hej, vi er kun mennesker! At drive en by kan være", + "hårdere end det ser ud, forestil dig hvor meget værre", + "det ville være, hvis Metal Heads havde ansvaret!" ], "prop054": [ - "We've had a few incidents with our lower class labor", - "force lately. If your Lurker is acting up, call Krimzon", - "Animal Control. Is your Lurker in a tree? Stuck in a", - "sewer grate? Foaming at the mouth? Call", - "the friendly officers of the K.A.C. and they will deal", - "with your furry slave. with all the love and care it", - "deserves... then haul it away for reconditioning.", - "Remember, Lurkers can be dangerous!" + "Vi har haft et par hændelser med vores lavere klasses arbejdskraft", + "kraft på det seneste. Hvis din Lurker optræder, så ring til Krimzon", + "Dyrekontrol. Er din Lurker i et træ? Sidder fast i en", + "kloakrist? Skummer om munden? Opkald", + "de venlige officerer i K.A.C. og de vil handle", + "med din lodne slave. med al den kærlighed og omsorg det", + "fortjener... så slæb den væk til renovering.", + "Husk, Lurkers kan være farlige!" ], "prop055": [ - "Please give generously to the Baron eco fund.", - "Your munificent donation wil be used for a variety", - "of humanitarian needs: bombs, guns, armor, genetic", - "alteration research, all in the name of preserving this", - "wonderful city of ours. Give often, give freely...", - "or it will be taken from you!" + "Giv venligst generøst til Baron økofond.", + "Din overdådige donation vil blive brugt til en række forskellige", + "af humanitære behov: bomber, våben, rustninger, genetiske", + "ændringsforskning, alt sammen for at bevare dette", + "vores vidunderlige by. Giv ofte, giv frit...", + "eller det bliver taget fra dig!" ], "prop056": [ - "It can be so lonely at the top and looking down from", - "up here I can see that this dirty city is in desperate", - "need of revitalization. So, to that end, we", - "will be bulldozing many sections of the city in the", - "coming weeks! All complaints against this", - "construction initiative can be brought,", - "in-person, to the Fortress Prison where they will be", - "\"reviewed.\" Condemned city sections are to", - "be evacuated before razing begins.", - "Anyone still in their homes will be ignored." + "Det kan være så ensomt på toppen og kigge ned fra", + "heroppe kan jeg se, at denne beskidte by er desperat", + "behov for revitalisering. Så til det formål har vi", + "vil bulldozere mange dele af byen i", + "kommende uger! Alle klager over dette", + "byggeinitiativ kan bringes,", + "personligt til fæstningsfængslet, hvor de vil være", + "\"anmeldt.\" Kondemnerede bysektioner er til", + "blive evakueret inden rivningen begynder.", + "Enhver, der stadig er i deres hjem, vil blive ignoreret." ], "prop057": [ - "The Metal Head attack will not succeed!", - "Your Baron has taken certain measures", - "to guarantee that the Metal Heads will NEVER hold", - "this city for long. Rest assured, I will snatch victory", - "from the jaws of defeat, whatever the cost!", - "I vowed never to let this city fall, and I intend to keep", - "that promise. What must happen is for the good of all!", - "Remember, to die in victory is a glorious", - "badge of honor!" + "Metal Head-angrebet vil ikke lykkes!", + "Din baron har truffet visse foranstaltninger", + "for at garantere, at metalhovederne ALDRIG holder", + "denne by længe. Vær sikker på, jeg vil snuppe sejren", + "fra nederlagets kæber, uanset hvad det koster!", + "Jeg lovede aldrig at lade denne by falde, og det agter jeg at holde", + "det løfte. Det, der skal ske, er til gavn for alle!", + "Husk, at dø i sejr er en herlig", + "hæderstegn!" ], "prop058": [ - "This is Baron Praxis. As our city faces its worst threat", - "in three hundred years, I am faced with serious", - "decisions concerning our future. I regret that I have", - "few choices left. I command you all to return to your", - "homes and say goodbye to your families.", - "Be assured, we will not lose this fight, one way", - "or another! The time has come to show these creatures", - "what we're capable of when all hope is lost!", - "It has been a pleasure ruling over you", - "to the end." + "Dette er Baron Praxis. Da vores by står over for sin værste trussel", + "om tre hundrede år står jeg over for alvorlige", + "beslutninger om vores fremtid. Det fortryder jeg, at jeg har", + "få valg tilbage. Jeg befaler jer alle at vende tilbage til jeres", + "hjem og sig farvel til jeres familier.", + "Vær sikker på, vi vil ikke tabe denne kamp, ​​én vej", + "eller en anden! Tiden er inde til at vise disse skabninger", + "hvad vi er i stand til, når alt håb er tabt!", + "Det har været en fornøjelse at bestemme over dig", + "til slutningen." ], "sam001": [ - "This is Samos. Jak, I need you to go out to the ruins", - "in Dead Town and visit my old hut. It's now time to retrieve", - "something I hid there long ago, good luck! And Daxter...", - "clean up my place while you're out there!" + "Det her er Samos. Jak, du skal ud til ruinerne", + "i Dead Town og besøge min gamle hytte. Det er nu tid til at hente", + "noget jeg gemte der for længe siden, held og lykke! Og Daxter...", + "rydde op hos mig, mens du er derude!" ], "sam002": [ - "This is Samos. Now that you boys are here", - "I want you to get up to my old hut. There is something there", - "that we need! Good luck, and watch our for Metal Heads." + "Det her er Samos. Nu hvor I drenge er her", + "Jeg vil have dig til at komme op til min gamle hytte. Der er noget der", + "som vi har brug for! Held og lykke, og se vores for Metal Heads." ], "sam003": [ - "This is Samos, Jak. the Metal Heads must have taken", - "the giant gate ring to their Nest in the Wasteland.", - "If they're ever going to use that ring to open a rift back", - "to our old village, we need to get into the Nest and find it." + "Det her er Samos, Jak. Metalhovederne skal have taget", + "den gigantiske portring til deres Rede i Ødelandet.", + "Hvis de nogensinde kommer til at bruge den ring til at åbne en rift tilbage", + "til vores gamle landsby, vi skal ind i Reden og finde den." ], "sam004": [ - "You did well, Jak. Luckily, the Precursor Stone wasn't in that", - "bomb when it went off or none of us would be here", - "right now. Come back to the race garage", - "as soon as you can." + "Du gjorde det godt, Jak. Heldigvis var Precursor Stone ikke med i det", + "bombe, når den gik af, ellers ville ingen af ​​os være her", + "lige nu. Kom tilbage til racergaragen", + "så snart du kan." ], "sam005": [ - "Good work so far, boys!", - "Find Young Samos and give him the Life Seed." + "Godt arbejde indtil videre, drenge!", + "Find Young Samos og giv ham Life Seed." ], "sam006": [ - "Finally, you got here! Find the Lurker Totem", - "and retrieve a piece of the Seal of Mar on its top." + "Endelig er du her! Find Lurker Totem", + "og hent et stykke af Seal of Mar på toppen." ], "sam007": [ - "You've got to get the boy safely to the Power Station, Jak!" + "Du er nødt til at få drengen sikkert til kraftværket, Jak!" ], "sam008": [ - "Thank you for protecting us, Jak.", - "We'll meet you at the Nest." + "Tak for at beskytte os, Jak.", + "Vi mødes på Reden." ], "sigc001": [ - "Hold on there, we need to teach you how to use this baby!" + "Hold da op, vi skal lære dig, hvordan du bruger denne baby!" ], "sigc002": [ - "The Scatter Gun is a good short-range weapon", - "with a wide field of fire." + "Scatter Gun er et godt kortdistancevåben", + "med et bredt ildfelt." ], "sigc003": [ - "To fire the weapon, press the trigger." + "Tryk på aftrækkeren for at affyre våbnet." ], "sigc004": [ - "Good! Some kick, huh?" + "Godt! Noget spark, hva'?" ], "sigc005": [ - "It's not the fastest firing weapon in the world, though." + "Det er dog ikke det hurtigste skydende våben i verden." ], "sigc006": [ - "You can put your weapon away or pull it out at anytime." + "Du kan lægge dit våben væk eller trække det ud når som helst." ], "sigc007": [ - "Try putting the weapon away." + "Prøv at lægge våbnet væk." ], "sigc008": [ - "Easy, huh?" + "Nemt, hva'?" ], "sigc009": [ - "Now take the weapon back out." + "Tag nu våbnet ud igen." ], "sigc010": [ - "Good!" + "Godt!" ], "sigc011": [ - "You can find red ammo inside Krimzon Guard crates." + "Du kan finde rød ammunition inde i Krimzon Guard-kasser." ], "sigc012": [ - "Shoot the crates." + "Skyd kasserne." ], "sigc013": [ - "Great, now you're ready!" + "Super, nu er du klar!" ], "sigc014": [ - "Want to try the Scatter Gun course?" + "Vil du prøve Scatter Gun-kurset?" ], "sigc015": [ - "The blaster is a good all-around choice", - "with a nice rate of fire." + "Blasteren er et godt all-around valg", + "med en pæn ildhastighed." ], "sigc016": [ - "This weapon requires more aiming ability." + "Dette våben kræver mere sigteevne." ], "sigc017": [ - "You can switch weapon modes at anytime." + "Du kan skifte våbentilstand når som helst." ], "sigc018": [ - "You can find yellow ammo in crates." + "Du kan finde gul ammunition i kasser." ], "sigc022": [ - "Would you like to test your skills on the gun course?" + "Kunne du tænke dig at teste dine færdigheder på våbenkurset?" ], "sigc023": [ - "Which course do you want to play?" + "Hvilken bane vil du spille?" ], "sigc024": [ - "Shoot every target. The faster you shoot each target", - "the more points you'll get." + "Skyd hvert mål. Jo hurtigere du skyder hvert mål", + "jo flere point får du." ], "sigc025": [ - "Hold your fire on civvies.", - "Hit a friendly target and points will be deducted." + "Hold ilden på civvies.", + "Ram et venligt mål og point vil blive trukket." ], "sigc026": [ - "Good luck." + "Held og lykke." ], "sigc027": [ - "Lock and load. Ready, go!" + "Lås og læs. Klar, gå!" ], "sigc028": [ - "Perfect! You can be my backup any day." + "Perfekt! Du kan være min backup hver dag." ], "sigc029": [ - "You did it, excellent shooting!" + "Du gjorde det, fremragende skydning!" ], "sigc030": [ - "Nice shooting! You got potential, kid!" + "Dejligt skydning! Du har potentiale, knægt!" ], "sigc031": [ - "Not bad, you'll do." + "Ikke dårligt, det gør du." ], "sigc032": [ - "Try again, rookie. You're still a bit rusty with that hardware." + "Prøv igen, rookie. Du er stadig lidt rusten med den hardware." ], "sigc033": [ - "Not bad, but not good. Try again?" + "Ikke dårligt, men ikke godt. Prøv igen?" ], "sigc034": [ - "Close, but in the thick, close won't cut it. Try again?" + "Tæt, men i det tykke, vil tæt ikke skære det. Prøv igen?" ], "sigc035": [ - "Care to try again? Or is your momma calling?" + "Vil du prøve igen? Eller ringer din mor?" ], "sigc036": [ - "You're not up to speed yet, try again?" + "Du er ikke oppe at køre endnu. Prøv igen?" ], "sigc037": [ - "You gotta shoot those targets faster!" + "Du skal skyde de mål hurtigere!" ], "sigc038": [ - "Be the gun, baby!" + "Vær pistolen, skat!" ], "sigc039": [ - "It's all about reaction time." + "Det hele handler om reaktionstid." ], "sigc040": [ - "Different gun modes come in handy against different targets." + "Forskellige pistoltilstande er nyttige mod forskellige mål." ], "sigc041": [ - "Be cool and you'll rule." + "Vær cool, og du vil regere." ], "sigc043": [ - "Try switching to the Scatter Gun." + "Prøv at skifte til Scatter Gun." ], "sigc053": [ - "Faster on the trigger, cherry." + "Hurtigere på aftrækkeren, cherry." ], "sigc054": [ - "That was a civilian!" + "Det var en civil!" ], "sigc055": [ - "I said \"don't shoot civvies,\" itchy finger!" + "Jeg sagde \"skyd ikke civvies,\" kløende finger!" ], "sigc056": [ - "Great job!" + "Godt arbejde!" ], "sigc057": [ - "Awesome round, I feel sorry for those Metal Heads already." + "Fantastisk runde, jeg har allerede ondt af de Metal Heads." ], "sigc058": [ - "That was a sweet round, you make it look easy!" + "Det var en sød omgang, du får det til at se nemt ud!" ], "sigc059": [ - "You smoked that course!" + "Du røg det kursus!" ], "sigc060": [ - "The Metal Heads will eat you alive, rookie! Do it over!" + "Metal Heads vil æde dig levende, rookie! Gør det over!" ], "sigc061": [ - "You need some practice." + "Du har brug for noget øvelse." ], "sigc062": [ - "I remember my rookie days, keep trying." + "Jeg husker mine rookie-dage, fortsæt med at prøve." ], "sigc063": [ - "Perfect round! You are the man." + "Perfekt runde! Du er manden." ], "sigc064": [ - "Perfect shooting! I'm impressed." + "Perfekt skydning! Jeg er imponeret." ], "sigc065": [ - "Whoa, rock and roll, baby! That was a perfect round." + "Hov, rock and roll, skat! Det var en perfekt runde." ], "sigc066": [ - "Nice shot!" + "Godt skud!" ], "sigc067": [ - "Wasted 'em!" + "Spildte dem!" ], "sigc068": [ - "Very nice! Reminds me of me." + "Meget fint! minder mig om mig." ], "sigc069": [ - "Make 'em fear you." + "Få dem til at frygte dig." ], "sigc070": [ - "Good combo!" + "God combo!" ], "sigc071": [ - "I love seeing you work!" + "Jeg elsker at se dig arbejde!" ], "sigc072": [ - "Now switch back to the Blaster." + "Skift nu tilbage til Blaster." ], "sigc073": [ - "You can combo your attacks by kicking,", - "then firing your weapon." + "Du kan kombinere dine angreb ved at sparke,", + "derefter affyre dit våben." ], "sigc074": [ - "Try a kick-shot combo." + "Prøv en kick-shot combo." ], "sigc075": [ - "Kick the first target, then shoot while kicking", - "to automatically hit the second target." + "Spark det første mål, og skyd derefter, mens du sparker", + "for automatisk at ramme det andet mål." ], "sigc076": [ - "Great move!" + "Fantastisk træk!" ], "sigc077": [ - "Not quite, try again. Kick then shoot, almost at the same time." + "Ikke helt, prøv igen. Spark og skyd, næsten på samme tid." ], "sigc078": [ - "Make sure you shoot while you're kicking to get the combo." + "Sørg for at skyde, mens du sparker for at få comboen." ], "sigc079": [ - "Give it another shot." + "Giv det en chance til." ], "sigc080": [ - "Now that's a Wastelander move!", - "They won't know what hit 'em!" + "Nu er det et Wastelander-træk!", + "De ved ikke, hvad der ramte dem!" ], "sigc081": [ - "Think you can handle the Blaster course?" + "Tror du, at du kan klare Blaster-kurset?" ], "sigf001": [ - "You wasted 'em all! I'm still not sure why combat Metal Heads", - "are scouting this close to the city. To be honest,", - "I wasn't sure you could handle this gig, nice work!" + "Du spildte dem alle sammen! Jeg er stadig ikke sikker på, hvorfor jeg bekæmper Metal Heads", + "spejder så tæt på byen. For at være ærlig,", + "Jeg var ikke sikker på, at du kunne klare denne koncert, flot arbejde!" ], "sigt003": [ - "Here we go!" + "Nu sker det!" ], "sigt004": [ - "Follow me!" + "Følg mig!" ], "sigt005": [ - "Get behind me while I toast that tank." + "Kom bag mig, mens jeg skåler på den tank." ], "sigt006": [ - "Hurry up kid, I don't have all day!" + "Skynd dig knægt, jeg har ikke hele dagen!" ], "sigt007": [ - "This way!" + "Denne måde!" ], "sigt008": [ - "Toast those bad boys up ahead." + "Skål for de slemme drenge forude." ], "sigt009": [ - "Quick! Drop the bridge!" + "Hurtigt! Drop broen!" ], "sigt010": [ - "Jump up and grab the bridge to bring it down." + "Hop op og tag fat i broen for at få den ned." ], "sigt011": [ - "Let's get across the bridge before they come back." + "Lad os komme over broen før de kommer tilbage." ], "sigt012": [ - "There's our first target, keep the other creatures back", - "while I charge up the Peacemaker." + "Der er vores første mål, hold de andre væsner tilbage", + "mens jeg lader Peacemakeren op." ], "sigt013": [ - "That's one fried Metal Head." + "Det er et stegt metalhoved." ], "sigt014": [ - "Let's get to the next target." + "Lad os nå det næste mål." ], "sigt015": [ - "With Metal Heads I say shoot first, ask questions later." + "Med Metal Heads siger jeg skyd først, stil spørgsmål senere." ], "sigt017": [ - "Stay with me!" + "Bliv hos mig!" ], "sigt019": [ - "Waste the suckers!" + "Spild sutterne!" ], "sigt020": [ - "Great, kid, great! Don't get cocky." + "Fantastisk, knægt, fantastisk! Bliv ikke kæphøj." ], "sigt021": [ - "There's the second scumbag, sittin' pretty." + "Der er det andet svineri, der sidder smukt." ], "sigt022": [ - "Cover me!" + "Dæk mig!" ], "sigt023": [ - "Boom, baby! One less Metal Head to think about." + "Bom, skat! Et metalhoved mindre at tænke på." ], "sigt024": [ - "Next target." + "Næste mål." ], "sigt025": [ - "Watch my six, while I toast this bad boy.", - "The trick is to not hit the pipes." + "Hold øje med mine seks, mens jeg skåler for denne slemme dreng.", + "Tricket er ikke at ramme rørene." ], "sigt026": [ - "Now that's what I call blowing someone's mind." + "Nu er det, hvad jeg kalder at blæse nogens sind." ], "sigt027": [ - "Gotta thread the needle this time." + "Må tråde nålen denne gang." ], "sigt028": [ - "Hahaha, Metal Head flambé." + "Hahaha, Metal Head flammede." ], "sigt029": [ - "Look out! We've got company!" + "Pas på! Vi har selskab!" ], "sigt030": [ - "Damn! My gun's jammed, take over!" + "For pokker! Min pistol sidder fast, tag over!" ], "sigt031": [ - "Get 'em while I fix my gun!" + "Få dem, mens jeg fikser min pistol!" ], "sigt032": [ - "Okay, the Peacemaker is back online. Let's move!" + "Okay, Peacemaker er online igen. Lad os flytte!" ], "sigt033": [ - "Last target, then we go home." + "Sidste mål, så går vi hjem." ], "sigt036": [ - "Here comes trouble." + "Her kommer ballade." ], "sigt037": [ - "Did ya miss me?" + "Savnede du mig?" ], "sigt038": [ - "Say \"good night,\" baby." + "Sig \"godnat\", skat." ], "sigt039": [ - "Thanks for covering my butt, that was close!" + "Tak fordi du dækkede min røv, det var tæt på!" ], "sigt043": [ - "Stay with me!" + "Bliv hos mig!" ], "sigt044": [ - "Stay close or we'll both be dead!" + "Hold dig tæt, ellers er vi begge døde!" ], "sigt045": [ - "Get over here and stay close!" + "Kom herover og bliv tæt på!" ], "sigt046": [ - "You wanna play, huh?" + "Vil du lege, hva'?" ], "sigt047": [ - "Oh, you got games?" + "Åh, har du spil?" ], "sigt049": [ - "You cherries can't handle this mission, we're through!" + "I kirsebær kan ikke klare denne mission, vi er færdige!" ], "sigt052": [ - "I don't work with amateurs!" + "Jeg arbejder ikke med amatører!" ], "sigt053": [ - "You're more trouble than you're worth!" + "Du er mere besvær, end du er værd!" ], "sigt054": [ - "Come back when you're serious!" + "Kom tilbage, når du er seriøs!" ], "sigt056": [ - "You want some of this?!" + "Vil du have noget af det her?!" ], "sigt057": [ - "Drop that lift-cap while I hold them off." + "Drop den løftehætte, mens jeg holder dem væk." ], "sigt058": [ - "Take 'em all out!" + "Tag dem alle ud!" ], "sigt059": [ - "Great, no time to celebrate." + "Fantastisk, ingen tid til at fejre." ], "sigt060": [ - "If I can't shoot it, it's someone else's problem.", - "You do something with those blocks." + "Hvis jeg ikke kan skyde det, er det en andens problem.", + "Du gør noget med de blokke." ], "sigt061": [ - "You gotta figure out the blocks, man." + "Du skal finde ud af blokkene, mand." ], "sigt062": [ - "Did you hear something?" + "Hørte du noget?" ], "sigt063": [ - "That's one big ugly Metal Head." + "Det er et stort grimt metalhoved." ], "sigt064": [ - "Shootin' this one's only going to get it mad, run!" + "At skyde den her bliver den kun sur, løb!" ], "sigt065": [ - "See ya on the flipside!" + "Vi ses på bagsiden!" ], "sigt066": [ - "Gone with the wind." + "Borte med blæsten." ], "sigt067": [ - "Later alligator." + "Senere alligator." ], "sigt068": [ - "I think that's the last we'll see of him." + "Jeg tror, ​​det er det sidste, vi ser til ham." ], "sigt069": [ - "You figure this out, I'll cover your butt." + "Finder du ud af det, så dækker jeg din røv." ], "sigt070": [ - "This is your gig, baby. Solve it, so we can go home." + "Dette er din koncert, skat. Løs det, så vi kan tage hjem." ], "sigt071": [ - "Great, here comes that bad boy again. Move!" + "Godt, her kommer den slemme dreng igen. Bevæge sig!" ], "sigt072": [ - "Run!" + "Løb!" ], "sigt073": [ - "Go, go, go!" + "Go Go go!" ], "sigt074": [ - "He's gaining!" + "Han vinder!" ], "sigt075": [ - "Keep moving!" + "Fortsæt!" ], "sigt076": [ - "Faster!" + "Hurtigere!" ], "sigt077": [ - "It's gonna be close!" + "Det bliver tæt på!" ], "sigt078": [ - "Move your butts!" + "Flyt dine numser!" ], "sigt082": [ - "Buddy, you don't wanna piss me off." + "Buddy, du vil ikke gøre mig sur." ], "sigt083": [ - "You got a death wish?!" + "Har du et dødsønske?!" ], "sigt087": [ - "Have a little pain right back!" + "Har lidt ondt med det samme!" ], "sigt089": [ - "Never trust a rookie." + "Stol aldrig på en rookie." ], "sigt090": [ - "We're finished until you guys get serious." + "Vi er færdige, indtil I bliver seriøse." ], "sigt091": [ - "This mission is obviously out of your league." + "Denne mission er åbenbart ude af din liga." ], "sigt092": [ - "You're wasting my time, this mission is over." + "Du spilder min tid, denne mission er forbi." ], "sigt093": [ - "Uhh... ugh...." + "Øh... åh...." ], "sigt100": [ - "Rage before beauty, buddy." + "Vrede før skønhed, kammerat." ], "sigt101": [ - "Let's move!" + "Lad os flytte!" ], "sigt102": [ - "I love the smell of burning metal!" + "Jeg elsker duften af ​​brændende metal!" ], "sigt103": [ - "Just a walk in the park." + "Bare en tur i parken." ], "sigt104": [ - "Follow me!" + "Følg mig!" ], "sigt105": [ - "Let's go!" + "Lad os gå!" ], "sigt106": [ - "This way!" + "Denne måde!" ], "sigt107": [ - "Over here!" + "Her ovre!" ], "sigt108": [ - "Rollin' baby!" + "Ruller baby!" ], "sigt109": [ - "Blow 'em a kiss of death." + "Blæs dem et dødskys." ], "sigt110": [ - "I love dead-heads!" + "Jeg elsker dead-heads!" ], "sigt111": [ - "Kiss your shiny butt goodbye!" + "Kys din skinnende røv farvel!" ], "sigt112": [ - "Born to kill baby!" + "Født til at dræbe baby!" ], "sigt113": [ - "Two to the chest, one to the head." + "To til brystet, en til hovedet." ], "spot004": [ - "Come out and cheer for me as I destroy the competition once again on the track.", - "This year's racing final will be to die for, I guarantee more thrills and more spills.", - "This time I want blood!...Bring the kids." + "Kom ud og hep på mig, mens jeg ødelægger konkurrencen igen på banen.", + "Dette års løbsfinale bliver til at dø for, jeg garanterer mere spænding og mere spild.", + "Denne gang vil jeg have blod!...Tag børnene med." ], "tess001": [ - "Hey, guys! This is Tess. Before Krew left, I saw him hide", - "something in the game machine here. Knowing Krew,", - "it's probably something valuable.", - "You might wanna come check it out." + "Hej gutter! Det her er Tess. Før Krew gik, så jeg ham gemme sig", + "noget i spillemaskinen her. At kende Krew,", + "det er nok noget værdifuldt.", + "Du vil måske komme og tjekke det ud." ], "tor001": [ - "The operation was a success. All Underground members are safe.", - "Come back to the hideout, I have a new mission for you while we wait for this alert to blow over." + "Operationen var en succes. Alle underjordiske medlemmer er i sikkerhed.", + "Kom tilbage til gemmestedet, jeg har en ny mission til dig, mens vi venter på, at denne alarm blæser over." ], "tor002": [ - "That should take some heat off the streets. Good work, I couldn't have done it better myself." + "Det burde tage lidt varme fra gaderne. Godt arbejde, jeg kunne ikke have gjort det bedre selv." ], "tor003": [ - "That's it, Jak, you're up! Try not to trigger any alarms, the garrison guards will be tough.", - "Get to the prison cell block and find the prisoners. Once there, we'll turn on the Warp Gate inside to get you all back out. Good luck." + "Det var det, Jak, du er oppe! Prøv ikke at udløse nogen alarmer, garnisonens vagter vil være hårde.", + "Gå til fængselscelleblokken og find fangerne. Når vi er der, tænder vi Warp Gate inde for at få jer alle ud igen. Held og lykke." ], "tor004": [ - "Ok, my old access codes should help Vin turn off the magnetic seal for the Fortress door." + "Ok, mine gamle adgangskoder skulle hjælpe Vin med at slukke for den magnetiske forsegling til fæstningsdøren." ], "tor005": [ - "Jak, this is Torn, the city is under Metal Head attack. There's a large force moving toward the city wall from the ocean.", - "We need people manning the tower gunpods to stop that assault. Meet me at the seaside ocean wall in the Port, hurry!", - "We need every man we can get!" + "Jak, det er Torn, byen er under Metal Head-angreb. Der er en stor styrke, der bevæger sig mod bymuren fra havet.", + "Vi har brug for folk, der bemander tårnets geværbøjler for at stoppe det overfald. Mød mig ved havets havvæg i havnen, skynd dig!", + "Vi har brug for hver mand, vi kan få!" ], "tor007": [ - "Jak, it's a guard roadblock, get out of there!" + "Jak, det er en vagtspærring, kom ud derfra!" ], "tor008": [ - "They've set up a roadblock, they're onto you!" + "De har oprettet en vejspærring, de er på dig!" ], "torn024": [ - "More coming in!" + "Flere kommer ind!" ], "tswm001": [ - "You can do it, Daxter!" + "Du kan gøre det, Daxter!" ], "tswm002": [ - "Keep going, Daxter." + "Fortsæt, Daxter." ], "tswm003": [ - "Go, go, go!" + "Go Go go!" ], "tswm004": [ - "Wow! What an animal!" + "Wow! Hvilket dyr!" ], "tswm005": [ - "You got it!" + "Du har det!" ], "tswm006": [ - "Nice slam!" + "Fint smæk!" ], "tswm007": [ - "Ooh ho ho, baby!" + "Åh ho ho, skat!" ], "tswm008": [ - "Great shot, Daxter!" + "Fantastisk skud, Daxter!" ], "tswm009": [ - "You're almost there!" + "Du er der næsten!" ], "tswm010": [ - "You can win, baby!" + "Du kan vinde, skat!" ], "tswm011": [ - "My hero!" + "Min helt!" ], "tswm012": [ - "Look at him go!" + "Se ham gå!" ], "tswm013": [ - "You ARE Orange Lightning!" + "Du ER Orange Lyn!" ], "tswm014": [ - "Just a few more!" + "Bare et par stykker mere!" ], "tswm015": [ - "Hit him again!" + "Slå ham igen!" ], "tswm016": [ - "Yes!" + "Ja!" ], "tswm017": [ - "That's my naughty ottsel!" + "Det er min frække otsel!" ], "tswm018": [ - "Oh!" + "Åh!" ], "tswm019": [ - "That wasn't good." + "Det var ikke godt." ], "tswm020": [ - "Don't hit the red ones!" + "Slå ikke de røde!" ], "tswm021": [ - "Ooh!" + "Åh!" ], "tswm022": [ - "That took points away!" + "Det tog point væk!" ], "tswm023": [ - "You did it!" + "Du gjorde det!" ], "tswm024": [ - "Daxter, you won!" + "Daxter, du vandt!" ], "tswm025": [ - "Yes! You're the man! I mean... the animal." + "Ja! Du er manden! Jeg mener... dyret." ], "tswm026": [ - "You beat the game, Daxter!" + "Du slog spillet, Daxter!" ], "tswm027": [ - "Where'd you learn to pound like that?" + "Hvor har du lært at banke sådan?" ], "tswm028": [ - "That was amazing!" + "Det var fantastisk!" ], "tswm029": [ - "Pretty good for a little furball." + "Ganske god til en lille pelsbold." ], "tswm030": [ - "Ooh... Not enough points!" + "Åh... Ikke nok point!" ], "tswm031": [ - "No! You lost..." + "Ingen! Du tabte..." ], "tswm032": [ - "Awww... You lost again!" + "Awww... Du tabte igen!" ], "tswm033": [ - "So close!" + "Så tæt på!" ], "tswm034": [ - "One more time." + "En gang til." ], "tswm035": [ - "You can do it!" + "Du kan gøre det!" ], "tswm036": [ - "You have to try again!" + "Du skal prøve igen!" ], "tswm037": [ - "You have to beat the game, Daxter." + "Du skal slå spillet, Daxter." ], "tswm038": [ - "Try again!" + "Prøv igen!" ], "tswm039": [ - "Ah! That was a bad one!" + "Ah! Det var en dårlig en!" ], "tswm040": [ - "Don't hit the bad ones, Daxter." + "Slå ikke de dårlige, Daxter." ], "tswm041": [ - "You hit a bad Metal Head." + "Du ramte et dårligt metalhoved." ], "tswm042": [ - "Not again!" + "Ikke igen!" ], "tswm043": [ - "Oh no!" + "Åh nej!" ], "tswm044": [ - "Daxter..! You need more points!" + "Daxter..! Du har brug for flere point!" ], "tswm045": [ - "Keep going...!" + "Fortsæt...!" ], "tswm046": [ - "Oh, Daxter... did you get your whiskers singed?" + "Åh, Daxter... fik du sunget dine knurhår?" ], "tswm047": [ - "You're gonna score!" + "Du scorer!" ], "tswm048": [ - "You're almost there...!" + "Du er der næsten...!" ], "tswm049": [ - "Just a few more!" + "Bare et par stykker mere!" ], "tswm050": [ - "We have a winner!" + "Vi har en vinder!" ], "tswm051": [ - "Oh! That was a bad one." + "Åh! Det var en dårlig en." ], "tswm052": [ - "Don't hit the bad ones, Daxter." + "Slå ikke de dårlige, Daxter." ], "tswm053": [ - "Daxter, you hit a bad Metal Head!" + "Daxter, du ramte et dårligt metalhoved!" ], "tswm054": [ - "Daxter, you won!!" + "Daxter, du vandt!!" ], "tswm055": [ - "You did it, fur boy!" + "Du gjorde det, pels dreng!" ], "tswm056": [ - "Yes!! You beat the game!" + "Ja!! Du slog spillet!" ], "tswm057": [ - "I knew you could do it." + "Jeg vidste, du kunne gøre det." ], "vin002": [ - "Okay, the B-Zone Power Grid is back online.", - "Have fun being killed in the Palace." + "Okay, B-Zone Power Grid er online igen.", + "God fornøjelse med at blive dræbt i paladset." ], "vin003": [ - "You destroyed the last of the Metal Head eggs!", - "That should give us a little more eco for the city.", - "Good work!" + "Du ødelagde de sidste Metal Head-æg!", + "Det burde give os lidt mere øko for byen.", + "Godt arbejde!" ], "vin004": [ - "You still haven't gotten all the Metal Head eggs!", - "Make sure you get 'em all, or I'm gonna have", - "a nervous breakdown!" + "Du har stadig ikke fået alle Metal Head-æggene!", + "Sørg for at få dem alle sammen, ellers får jeg det", + "et nervøst sammenbrud!" ], "vin011": [ - "Thank goodness you blew up those wells.", - "I sure don't want any more Metal Heads coming around here.", - "Good work, boys! I owe ya one." + "Gudskelov du sprængte de brønde i luften.", + "Jeg vil bestemt ikke have flere Metal Heads, der kommer rundt her.", + "Godt arbejde, drenge! Jeg skylder dig en." ], "vin012": [ - "Good work, guys! The fewer Metal Head eggs", - "we allow to hatch, the fewer of those nasty monsters", - "we'll have to fight!" + "Godt arbejde, gutter! Jo færre Metal Head-æg", + "vi tillader at klække, jo færre af de grimme monstre", + "vi bliver nødt til at kæmpe!" ], "vin013": [ - "Jak... Kor...", + "Hvordan... Kor...", "Bygge... Plads...", - "Ngh..." + "..." ], "vin014": [ "Igen har i drenge reddet min bagdel!", @@ -7801,9 +7801,9 @@ "vin015": [ "Skjoldmuren er nede! Jeg gentager - Skjoldmuren er nede!", "Sabotage! Kor gjorde det!", - "I knew Metal Heads would be the end of me!", - "OH NO! Metal Heads are at the door!!", - "They're breaking through!!", + "Jeg vidste, at Metal Heads ville være enden på mig!", + "ÅH NEJ! Metalhoveder står for døren!!", + "De bryder igennem!!", "For mange af dem!! Jak!!! ARHHH!!!" ], "ys001": [ @@ -7827,29 +7827,31 @@ "darkjak": "Mørke Jak", "daxter": "Daxter", "errol": "Erol", - "grim": "Grim", - "guard": "Krimzon-gardist", + "grim": "Barsk", + "guard": "Krimzon vagtmand", "guard-a": "Gardist A", "guard-b": "Gardist B", - "jak": "Jak", + "jak": "Hvordan", "jinx": "Jinx", "keira": "Keira", "keira-before-class-3": "Mekaniker", - "kid": "Barn", + "kid": "Lade", "kor": "Kor", - "krew": "Krew", + "krew": "Blod", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal leder", + "metalkor-intro": "???", "mog": "Mog", - "onin": "Onin", - "oracle": "Orakel", - "pecker": "Pikker", + "onin": "En", + "oracle": "orakel", + "pecker": "Pikke", "precursor": "Forgænger", "samos": "Samos", "sig": "Sig", "tess": "Tess", - "torn": "Torn", + "torn": "Revet i stykker", "vin": "Vin", "youngsamos": "Unge Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_de-DE.json b/game/assets/jak2/subtitle/subtitle_lines_de-DE.json index 1eedfcf5e8..7618e3a1eb 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_de-DE.json +++ b/game/assets/jak2/subtitle/subtitle_lines_de-DE.json @@ -2,225 +2,225 @@ "cutscenes": {}, "other": { "DSbop001": [ - "You sure seem angry, Jak." + "Du scheinst sehr wütend zu sein, Jak." ], "DSbop002": [ - "Do you remember how to jump?" + "Weißt du noch, wie man springt?" ], "DSbop003": [ - "Jump onto that crate to get over the barricade." + "Springt auf die Kiste, um über die Barrikade zu kommen." ], "DSbop004": [ - "Ooh, that's a high ledge!", - "Try jumping once, then jump again while in the air", - "to reach that one." + "Oh, das ist ein hoher Vorsprung!", + "Versuchen Sie, einmal zu springen und dann noch einmal zu springen, während Sie in der Luft sind.", + "um diesen zu erreichen." ], "DSbop005": [ - "Good job, see? You still got it!" + "Gut gemacht, siehst du? Du hast es immer noch drauf!" ], "DSbop006": [ "I never found hide nor hair of Keira or Samos.", - "I don't know where they went." + "Ich weiß nicht, wo sie hingegangen sind." ], "DSbop007": [ - "I don't know where that crazy rift vehicle took us, but...", - "It's some kind of big city!" + "Ich weiß nicht, wo dieses verrückte Rissfahrzeug uns hingebracht hat, aber...", + "Es ist eine Art Großstadt!" ], "DSbop008": [ - "It's a tough place, Jak. You DO remember", - "how to fight, right? Try breaking that crate with a kick." + "Es ist ein hartes Pflaster, Jak. Du erinnerst dich doch", + "wie man kämpft, richtig? Versuch, die Kiste mit einem Tritt zu zerbrechen." ], "DSbop009": [ - "Looking good, partner! Nice spin kick!", - "Works out some of that anger, eh?" + "Sieht gut aus, Partner! Schöner Drehkick!", + "So kann man seine Wut abbauen, was?" ], "DSbop010": [ - "There are lots of Krimzon Guard crates lying around", - "for the taking. Break that crate!" + "Es gibt viele Krimzon Guard-Kisten, die herumliegen", + "zum Mitnehmen. Brich die Kiste auf!" ], "DSbop011": [ - "Good job! That crate had a health pack inside.", - "Pick it up, you'll wanna keep healthy, Jak, or uh heh...", - "who'll do the fighting?" + "Gut gemacht! In der Kiste war ein Gesundheitspaket.", + "Heb es auf, du willst doch gesund bleiben, Jak, oder ähh...", + "wer wird sonst den Kampf aufnehmen?" ], "DSbop016": [ - "If you jump then dive, you'll crash down to the ground", - "hard enough to break lots of things.", - "Breaking stuff's fun, right?" + "Wenn du springst und dann tauchst, stürzt du auf den Boden.", + "hart genug, um viele Dinge kaputt zu machen.", + "Sachen kaputtmachen macht Spaß, oder?" ], "DSbop017": [ - "Guards, Jak! Do your, uh... stuff." + "Wachen, Jak! Mach dein, äh... Zeug." ], "agnt001": [ - "Hey hey, drive carefully!" + "Hey hey, fahr vorsichtig!" ], "agnt002": [ - "Look out!" + "Pass auf!" ], "agnt003": [ - "Watch it!" + "Vorsicht!" ], "agnt004": [ - "Whoa whoa whoa whoa!" + "Halt, halt, halt, halt!" ], "agnt005": [ - "Whoa!" + "Wow!" ], "agnt006": [ - "You're crazy!" + "Du bist verrückt!" ], "agnt007": [ - "Are you out of your mind!?" + "Bist du verrückt geworden?" ], "agnt008": [ - "Watch out!" + "Pass auf!" ], "agnt009": [ - "That one hurt!" + "Der tat weh!" ], "agnt010": [ - "Stay sharp, we've got a tough part of town coming up." + "Bleib wachsam, wir haben einen schwierigen Teil der Stadt vor uns." ], "agnt011": [ - "Now we're in for it!" + "Jetzt sind wir dran!" ], "agnt012": [ - "You're wasting citizens!" + "Sie verschwenden Bürger!" ], "agnt013": [ - "Don't hit the civvies, man!" + "Nicht die Zivis treffen, Mann!" ], "agnt014": [ - "Man, you are hitting people!" + "Mann, du triffst die Leute!" ], "agnt015": [ - "Look where you're going!" + "Pass auf, wo du hinfährst!" ], "agnt016": [ - "Go man!" + "Los, Mann!" ], "agnt017": [ - "Keep your head down!" + "Halte dich bedeckt." ], "agnt018": [ - "They're shooting at us!" + "Sie schießen auf uns!" ], "agnt019": [ - "We are dead if you don't drive faster!" + "Wir sind tot, wenn du nicht schneller fährst!" ], "agnt020": [ - "Keep going!" + "Weiter so!" ], "agnt021": [ - "Do it, man, do it!" + "Das bist du, Mann, das bist du!" ], "agnt022": [ - "Hurry up, man!" + "Beeil dich, Mann!" ], "agnt023": [ - "I ain't riding on the back, pick up a two-seater!" + "Ich fahre nicht auf dem Rücksitz mit, nimm einen Zweisitzer!" ], "agnt024": [ - "Get a bigger car!" + "Besorg dir ein größeres Auto!" ], "agnt025": [ - "Get a bigger vehicle." + "Besorg ein größeres Fahrzeug." ], "agnt026": [ - "Get one with two seats, will ya?" + "Besorg uns einen mit zwei Sitzen, klar?" ], "agnt027": [ - "Get another vehicle." + "Besorg ein anderes Fahrzeug." ], "agnt028": [ - "They're onto us." + "Sie sind uns auf den Fersen." ], "agnt029": [ - "We're being followed." + "Wir werden verfolgt." ], "agnt030": [ - "We're taking a beating!" + "Wir bekommen eine Tracht Prügel!" ], "agnt031": [ - "We can't take much more of that!" + "Wir können nicht mehr viel davon ertragen!" ], "agnt032": [ - "Are you trying to die!?" + "Willst du etwa sterben?" ], "agnt033": [ - "Where did Torn find you?" + "Wo hat dich Torn gefunden?" ], "agnt034": [ - "You sure you're on our side?" + "Bist du dir sicher, dass wir auf einer Seite sind?" ], "agnt035": [ - "Turn, TURN!" + "Wenden, WENDEN!" ], "agnt036": [ - "Good move." + "Ein kluger Schachzug." ], "agnt037": [ - "Death to the Baron!" + "Tod dem Baron!" ], "agnt038": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Danke Mar, dass du hier bist. Die Krimzon-Wachen sind überall!" ], "agnt039": [ - "It's about time, let's get out of here!" + "Es wird Zeit, lass uns hier verschwinden!" ], "agnt040": [ - "Good, good, just in time. GO, GO, GO!" + "Gut, gut, gerade noch rechtzeitig. LOS, LOS, LOS!" ], "agnt041": [ - "Finally, we need to move!" + "Wir müssen uns endlich bewegen!" ], "agnt042": [ - "Man, I was beginning to think you wouldn't show up." + "Mann, ich dachte schon, du würdest nicht mehr auftauchen." ], "agnt043": [ - "Not a moment too soon, let's fly!" + "Keinen Moment zu früh, lasst uns fliegen!" ], "agnt044": [ - "Get me to my new safehouse, quickly!" + "Bringt mich zu meinem neuen Unterschlupf, schnell!" ], "agnt045": [ - "Thanks, good luck!" + "Danke, viel Glück!" ], "agnt046": [ - "Good driving, go save the rest of our guys." + "Gute Fahrt, geh und rette den Rest unserer Jungs." ], "agnt047": [ - "OK, I'm out of here!" + "Okay, ich haue ab!" ], "agnt048": [ - "See you at the next meeting." + "Wir sehen uns beim nächsten Treffen." ], "agnt049": [ - "Thanks, you're a life saver." + "Danke, du bist ein Lebensretter." ], "agnt050": [ - "This is where I get off." + "An dieser Stelle steige ich aus." ], "agnt051": [ - "I'm glad you're on our side." + "Ich bin froh, dass du auf unserer Seite bist." ], "agnt052": [ - "Ugh!" + "Pfui!" ], "agnt053": [ - "Ugh!" + "Pfui!" ], "agnt054": [ - "Hah!" + "Haha!" ], "agnt055": [ - "Ahhh!" + "Ähhh!" ], "agnt056": [ - "Drive carefully!" + "Fahr vorsichtig!" ], "agnt057": [ - "Look out!" + "Pass auf!" ], "agnt058": [ "Watch it!" @@ -229,160 +229,160 @@ "WHOA!" ], "agnt060": [ - "You're crazy!" + "Du bist verrückt!" ], "agnt061": [ - "Are you out of your mind?!" + "Du bist von Sinnen?!" ], "agnt062": [ - "Watch out!" + "Pass auf!" ], "agnt063": [ - "That one hurt." + "Das tat weh." ], "agnt064": [ - "Stay sharp, we got a tough part of our town coming up." + "Bleiben Sie wachsam, es steht ein schwieriger Teil unserer Stadt bevor." ], "agnt065": [ - "Now we're in for it." + "Jetzt sind wir dran." ], "agnt066": [ - "You're wasting citizens!" + "Sie verschwenden Bürger!" ], "agnt067": [ - "Don't hit the civvies, man!" + "Schlagen Sie nicht die Zivilisten, Mann!" ], "agnt068": [ - "Man, you're hitting the people!" + "Mensch, du schlägst die Leute!" ], "agnt069": [ - "Look where you're going!" + "Passen Sie auf, wohin Sie gehen!" ], "agnt070": [ - "Go man, GO!" + "Los, Mann, los!" ], "agnt071": [ - "Keep your head down!" + "Kopf unten!" ], "agnt072": [ - "They're shooting at us!" + "Sie schießen auf uns!" ], "agnt073": [ - "We're dead if you don't drive faster!" + "Wir sind tot, wenn Sie nicht schneller fahren!" ], "agnt074": [ - "Keep going!" + "Weitermachen!" ], "agnt075": [ - "Do it, man, do it!" + "Tu es, Mann, tu es!" ], "agnt076": [ - "Hurry up, man!" + "Beeil dich, Mann!" ], "agnt077": [ - "I ain't riding on the back, pick up a two-seater!" + "Ich sitze nicht hinten dran, hol dir einen Zweisitzer!" ], "agnt078": [ - "Get a bigger vehicle." + "Besorg dir ein größeres Fahrzeug." ], "agnt079": [ - "They're onto us!" + "Sie sind uns auf der Spur!" ], "agnt080": [ - "We're being followed!" + "Wir werden verfolgt!" ], "agnt081": [ - "We're taking a beating!" + "Wir bekommen eine Tracht Prügel!" ], "agnt082": [ - "We can't take much more of that." + "Viel mehr können wir davon nicht ertragen." ], "agnt083": [ - "You trying to die?" + "Versuchst du zu sterben?" ], "agnt084": [ - "Where'd Torn find you?" + "Wo hat Torn dich gefunden?" ], "agnt085": [ - "You sure you're on our side?" + "Sind Sie sicher, dass Sie auf unserer Seite sind?" ], "agnt086": [ - "Turn, TURN!" + "Dreh dich, DREHE dich!" ], "agnt087": [ - "Good move!" + "Guter Zug!" ], "agnt088": [ - "Death to the Baron!" + "Tod dem Baron!" ], "agnt089": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Danke, Mar, dass du hier bist, Krimzon-Wächter sind überall!" ], "agnt090": [ - "It's about time, let's get out of here!" + "Es ist an der Zeit, lasst uns hier verschwinden!" ], "agnt091": [ - "Good, just in time, GO, GO, GO!" + "Gut, gerade rechtzeitig, LOS, LOS, LOS!" ], "agnt092": [ - "Finally, we need to move!" + "Endlich müssen wir uns bewegen!" ], "agnt093": [ - "Man, I was beginning to think you wouldn't show up." + "Mann, ich dachte schon, du würdest nicht auftauchen." ], "agnt094": [ - "Not a moment too soon, let's fly!" + "Kein Moment zu früh, lass uns fliegen!" ], "agnt095": [ - "Get me to my new safehouse, quickly!" + "Bring mich schnell zu meinem neuen sicheren Haus!" ], "agnt096": [ - "Thanks, good luck!" + "Danke, viel Glück!" ], "agnt097": [ - "Good driving, go save the rest of our guys." + "Gute Fahrt, geh und rette den Rest unserer Jungs." ], "agnt098": [ - "OK, I'm out of here!" + "Okay, ich haue ab!" ], "agnt099": [ - "See ya at the next meeting!" + "Wir sehen uns bei der nächsten Sitzung!" ], "agnt100": [ - "Thanks, you're a life-saver." + "Danke, Sie sind ein Lebensretter." ], "agnt101": [ - "This is where I get off." + "An dieser Stelle steige ich aus." ], "agnt102": [ - "I'm glad you're on our side." + "Ich bin froh, dass du auf unserer Seite bist." ], "agnt103": [ - "Look out!" + "Aufgepasst!" ], "agnt104": [ "Hey!" ], "agnt105": [ - "Augh!" + "Autsch!" ], "agnt106": [ - "Come on man, you trying to kill me!?" + "Komm schon, Mann, willst du mich umbringen?" ], "agnt107": [ - "Take it easy!" + "Immer mit der Ruhe!" ], "agnt108": [ - "Ughh!" + "Pfui!" ], "agnt109": [ - "Ughh!" + "Pfui!" ], "agnt110": [ - "Ahhh!" + "Ähhh!" ], "agnt111": [ - "Oof!" + "Uff!" ], "agnt112": [ "Ah!" @@ -391,236 +391,236 @@ "Ahh!" ], "agnt114": [ - "Oof!" + "Uff!" ], "agnt115": [ - "Okay, buddy, move!" + "Okay, Kumpel, beweg dich!" ], "agnt116": [ - "Look out!" + "Aufgepasst!" ], "agnt117": [ - "Keep your eyes on the road!" + "Halt deine Augen auf der Straße!" ], "agnt118": [ - "Watch it!" + "Vorsicht!" ], "agnt119": [ - "Thanks for the lift." + "Danke fürs Mitnehmen." ], "agnt120": [ - "See ya at the next meeting." + "Wir sehen uns bei der nächsten Sitzung." ], "agnt121": [ - "Right, let's go!" + "Also los, auf geht's!" ], "agnt122": [ - "Drive, man, drive!" + "Fahr, Mann, fahr!" ], "agnt123": [ - "That was close!" + "Das war knapp!" ], "agnt124": [ - "You sure you know what you're doing?" + "Bist du dir sicher, dass du weißt, was du tust?" ], "agnt125": [ - "Ok, thanks, good luck." + "Okay, danke, viel Glück." ], "agnt126": [ - "Great, let's go." + "Gut, gehen wir." ], "agnt127": [ - "Drive, man, drive!" + "Fahr, Mann, fahr!" ], "agnt128": [ - "That was close!" + "Das war aber knapp!" ], "agnt129": [ - "You sure you know what you're doing?" + "Bist du sicher, dass du weißt, was du tust?" ], "agnt130": [ - "OK, thanks, good luck!" + "OK, danke, viel Glück!" ], "agnt131": [ - "What took you so long?" + "Warum haben Sie so lange gebraucht?" ], "agnt132": [ - "Move like you got a purpose, man!" + "Beweg dich, als hättest du ein Ziel, Mann!" ], "agnt133": [ - "GO, GO, the KG are onto us!" + "GO, GO, die KG ist uns auf den Fersen!" ], "agnt134": [ - "Stay sharp, we're almost there!" + "Bleib dran, wir sind fast da!" ], "agnt135": [ - "Good, you did well, I'll tell the Shadow we're safe!" + "Das hast du gut gemacht, ich werde dem Schatten sagen, dass wir in Sicherheit sind!" ], "asha001": [ - "Payback's a bitch, and I'm it." + "Rache ist 'ne Zicke, und ich bin sie." ], "asha002": [ - "Watch your ass, I'm only woman on the outside." + "Pass auf deinen Arsch auf, ich bin nur äußerlich eine Frau." ], "asha003": [ - "Let me knock you down to size...", - "Not that you have any." + "Lass mich dich auf deine Größe reduzieren...", + "Nicht, dass Sie welche hätten." ], "asha004": [ - "Small guns don't get me going." + "Kleine Waffen bringen mich nicht in Fahrt." ], "asha005": [ - "That's a tiny gun..." + "Das ist eine winzige Waffe..." ], "asha006": [ - "You don't know who you're dealing with." + "Du weißt nicht, mit wem du es zu tun hast." ], "asha007": [ - "I never said you could touch me there." + "Ich habe nie gesagt, dass du mich dort berühren darfst." ], "asha008": [ - "Take that!" + "Nimm das!" ], "asha009": [ - "Here's some." + "Hier sind einige." ], "asha010": [ - "Ready for another?" + "Bereit für einen weiteren?" ], "asha011": [ - "How's that feel?" + "Wie fühlt sich das an?" ], "asha012": [ - "Seems like it hurts." + "Scheint, als ob es weh tut." ], "asha013": [ - "Oh, that hurt." + "Oh, das tat weh." ], "asha014": [ - "Ugh!" + "Pfui!" ], "asha015": [ - "Ough!" + "Autsch!" ], "asha016": [ "Ah!" ], "asha017": [ - "Agh!" + "Ach!" ], "asha018": [ - "Hit me again and you'll lose something really valuable!" + "Wenn Sie mich noch einmal schlagen, verlieren Sie etwas wirklich Wertvolles!" ], "asha019": [ - "Not smart!" + "Nicht klug!" ], "asha020": [ - "Listen, buddy, whose side are you on?" + "Hör zu, Kumpel, auf wessen Seite stehst du?" ], "asha021": [ - "Don't make me hurt you." + "Bring mich nicht dazu, dir wehzutun." ], "asha022": [ - "Do that again and I'll put you down." + "Wenn du das noch einmal machst, mach ich dich fertig." ], "asha023": [ - "Learn to control your gun, buddy." + "Lerne, deine Waffe zu kontrollieren, Kumpel." ], "asha024": [ - "Where'd you learn to fight?" + "Wo hast du kämpfen gelernt?" ], "asha025": [ - "Check your targets, mister." + "Überprüfen Sie Ihre Ziele, Herr." ], "asha026": [ - "Don't do that again." + "Mach das nicht nochmal." ], "asha027": [ - "Maybe I should be behind you." + "Vielleicht sollte ich hinter dir sein." ], "asha028": [ - "I won't take that!" + "Das lasse ich mir nicht gefallen!" ], "asha029": [ - "Another one like that and you'll be singing soprano." + "Noch so eine und Sie singen Sopran." ], "asha030": [ - "Have some back." + "Habe etwas zurück." ], "asha031": [ - "Don't do that again!" + "Mach das nicht noch einmal!" ], "asha032": [ - "Nice shooting." + "Schönes Schießen." ], "asha033": [ - "Good shooting, blue boy." + "Guter Schuss, Blauer." ], "asha034": [ - "Good work." + "Gute Arbeit." ], "asha035": [ - "Take 'em all down!" + "Erledigt sie alle!" ], "asha036": [ - "Let's get 'em!" + "Lasst sie uns holen!" ], "asha037": [ - "Here they come!" + "Hier kommen Sie!" ], "asha038": [ - "I need some help!" + "Ich brauche Hilfe!" ], "asha039": [ - "Man, there are a lot of 'em!" + "Mann, davon gibt es viele!" ], "asha040": [ - "More coming." + "Weitere folgen." ], "asha041": [ - "I got him." + "Ich habe ihn." ], "asha042": [ - "More firepower!" + "Mehr Feuerkraft!" ], "asha043": [ - "One more down!" + "Noch einer weniger!" ], "asha044": [ - "Help me out!" + "Helfen Sie mir!" ], "asha045": [ - "They're out-flanking us!" + "Sie überflügeln uns!" ], "asha046": [ - "We're surrounded!" + "Wir sind umzingelt!" ], "asha047": [ - "Shoot! Shoot!" + "Schießen! Schießen!" ], "asha048": [ - "It's not looking good." + "Es sieht nicht gut aus." ], "asha049": [ - "Help me!" + "Hilf mir!" ], "asha050": [ - "Here's one for my father!" + "Hier ist eines für meinen Vater!" ], "asha051": [ - "Damn Metal Heads..." + "Verdammte Metalheads …" ], "asha052": [ - "Bullseye." + "Volltreffer." ], "asha053": [ - "There's some more of those things!" + "Davon gibt es noch mehr!" ], "asha054": [ - "Get 'em all!" + "Hol sie dir alle!" ], "asha055": [ - "Ugh..." + "Pfui..." ], "asha056": [ "Hm-agh..." @@ -629,414 +629,414 @@ "Hah...agh..." ], "asht002": [ - "You were right, Jak. What my father's doing is wrong.", - "I need to help fix this. If you get to the Weapons Factory,", - "maybe we can stop him. I'll meet you there." + "Du hattest recht, Jak. Was mein Vater tut, ist falsch.", + "Ich muss helfen, das zu beheben. Wenn du zur Waffenfabrik kommst,", + "vielleicht können wir ihn aufhalten. Wir treffen uns dort." ], "asht006": [ - "I think now's the time to act.", - "The Metal Heads are so focused on attacking the city,", - "they may have left their nest vulnerable.", - "Jak, you've got to get out to the Wasteland", - "and breach the Nest barrier any way you can.", - "Maybe if you get inside and take out the Metal Head leader", - "the army will collapse. It's a long shot,", - "but it might be our only chance." + "Ich denke, jetzt ist es an der Zeit, zu handeln.", + "Die Metal Heads sind so darauf konzentriert, die Stadt anzugreifen,", + "Möglicherweise haben sie ihr Nest ungeschützt zurückgelassen.", + "Jak, du musst raus ins Ödland", + "und durchbreche die Nest-Barriere auf jede erdenkliche Weise.", + "Vielleicht, wenn du hineinkommst und den Anführer der Metal Heads ausschaltest", + "die Armee wird zusammenbrechen. Es ist unwahrscheinlich,", + "aber es ist vielleicht unsere einzige Chance." ], "bar001": [ - "Pay no attention to the groundless rumors about", - "low eco supplies. As your Baron, I assure you,", - "the city has an endless supply of eco stores.", - "Those who would say we are running out,", - "are only trying to frighten and subvert!", - "I have everything in control, I command you", - "to have no fear." + "Schenken Sie den unbegründeten Gerüchten keine Beachtung über", + "ökologisch unbedenkliche Vorräte. Als Ihr Baron versichere ich Ihnen,", + "Die Stadt verfügt über ein endloses Angebot an Öko-Läden.", + "Diejenigen, die sagen, dass uns die Mittel ausgehen,", + "versuchen nur, Angst zu machen und zu untergraben!", + "Ich habe alles unter Kontrolle, ich befehle dir", + "keine Angst zu haben." ], "bar004": [ - "Go!" + "Los!" ], "bb01fail": [ - "I think you should practice more." + "Ich denke, du solltest mehr üben." ], "bb01int": [ - "Jak, this is Torn. The Underground needs good drivers", - "for our vehicle missions. Prove your skills on the", - "Ring Challenge and maybe we'll let you in on the action." + "Jak, hier ist Torn. Die U-Bahn braucht gute Fahrer", + "für unsere Fahrzeugmissionen. Beweise dein Können auf dem", + "Ring Challenge und vielleicht lassen wir Sie an der Action teilhaben." ], "bb01win": [ - "Not bad, I think we can use ya.", - "Here's a little reward for your effort." + "Nicht schlecht, ich denke, wir können dich gebrauchen.", + "Hier ist eine kleine Belohnung für Ihre Mühe." ], "bb02fail": [ - "You're still a little timid. Try again." + "Du bist noch etwas schüchtern. Versuch es noch einmal." ], "bb02int": [ - "We'd like to see you prove your driving skills. Take on", - "another Ring Challenge, let's see what you've got." + "Wir möchten, dass Sie Ihr fahrerisches Können unter Beweis stellen.", + "noch eine Ring-Herausforderung, mal sehen, was du drauf hast." ], "bb02win": [ - "Not bad. You could be my getaway driver any time." + "Nicht schlecht. Du könntest jederzeit mein Fluchtfahrer sein." ], "bb03fail": [ - "I knew this one would prove too much for ya. Keep practicing." + "Ich wusste, dass das zu viel für dich sein würde. Übe weiter." ], "bb03int": [ - "The next Ring Challenge will separate the men from the boys.", - "Let's see if you can handle it." + "Bei der nächsten Ring Challenge wird die Spreu vom Weizen getrennt.", + "Mal sehen, ob du damit umgehen kannst." ], "bb03win": [ - "Very nice driving. I'm starting to think you could really", - "help us, Jak." + "Sehr schöne Fahrt. Ich fange an zu denken, dass man wirklich", + "hilf uns, Jak." ], "bb04fail": [ - "Too bad, I kinda hoped you could do this. Keep trying." + "Schade, ich hatte gehofft, dass du das schaffst. Versuch es weiter." ], "bb04int": [ - "Torn here. I don't even know why I'm lettin' you try this", - "Ring Challenge, never beat it myself. I guess I'm morbidly", - "curious. Beat this one and you'll be the best driver", - "the Underground's ever had." + "Ich bin hin- und hergerissen. Ich weiß nicht einmal, warum ich dich das versuchen lasse", + "Ring Challenge, habe es selbst nie geschafft. Ich glaube, ich bin krankhaft", + "neugierig. Besiege dieses Spiel und du wirst der beste Fahrer sein", + "die Underground jemals hatte." ], "bb04win": [ - "Very nice, Jak! You're the best driver we've ever had." + "Sehr nett, Jak! Du bist der beste Fahrer, den wir je hatten." ], "bb05fail": [ - "You didn't get all the Bomb Bots, Jak!" + "Du hast nicht alle Bomb Bots bekommen, Jak!" ], "bb05int": [ - "Jak, reports say more bomb bots are roaming the city.", - "They're a dangerous menace, and I need you to locate", - "and destroy each one before they hurt our interests." + "Jak, Berichten zufolge streifen weitere Bombenroboter durch die Stadt.", + "Sie sind eine gefährliche Bedrohung, und ich brauche Sie, um sie zu finden", + "und zerstören Sie jeden einzelnen, bevor er unseren Interessen schadet." ], "bb05win": [ - "Good work! That oughta put a dent in the Baron's war budget." + "Gute Arbeit! Das dürfte das Kriegsbudget des Barons entlasten." ], "bb06int": [ - "Jak, we need you to take out another group of Bomb Bots.", - "These mobile weapons keep showing up in the city, we gotta take them out as soon as possible." + "Jak, du musst eine weitere Gruppe Bomb Bots ausschalten.", + "Diese mobilen Waffen tauchen immer wieder in der Stadt auf, wir müssen sie so schnell wie möglich ausschalten." ], "bb06win": [ - "Another pile of bomb bot scrap metal for the KG", - "trash compactors. Mission accomplished, the Underground's", - "most grateful for your service." + "Noch ein Haufen Bombenbot-Schrott für die KG", + "Müllverdichter. Mission erfüllt, die Underground", + "äußerst dankbar für Ihren Dienst." ], "bb07fail": [ - "You lost an agent! NOT good at all, Jak! Mission failed!" + "Du hast einen Agenten verloren! Gar nicht gut, Jak! Mission gescheitert!" ], "bb07int": [ - "Torn here, I need you to go out and move more of our Agents to new locations in the city.", - "KG spies are watching our every move, so look out for trouble. Good luck." + "Ich bin hin- und hergerissen und möchte, dass Sie rausgehen und weitere unserer Agenten an neue Standorte in der Stadt verlegen.", + "KG-Spione beobachten jede unserer Bewegungen, also mach dich auf Ärger gefasst. Viel Glück." ], "bb07win": [ - "Nice shuttle work! You're keepin' people alive out there." + "Gute Shuttle-Arbeit! Du hältst da draußen Leute am Leben." ], "bb08fail": [ - "One of our best agents was arrested. The Shadow will NOT be", - "pleased! You failed." + "Einer unserer besten Agenten wurde verhaftet. Der Schatten wird NICHT", + "erfreut! Du hast versagt." ], "bb08int": [ - "Jak, some of our Agents have been compromised again.", - "Find each one and take them to special hideouts in the city.", - "The guard patrols are on high alert, so this is going to be a tough one. Keep your head down!" + "Jak, einige unserer Agenten wurden erneut kompromittiert.", + "Finden Sie sie alle und bringen Sie sie zu besonderen Verstecken in der Stadt.", + "Die Wachpatrouillen sind in höchster Alarmbereitschaft, das wird also hart. Kopf unten halten!" ], "bb08win": [ - "That was good driving, Jak.", - "The Underground can breathe a little easier now." + "Das war eine gute Fahrt, Jak.", + "Die U-Bahn kann jetzt etwas aufatmen." ], "bb09fail": [ - "You took too long, Jak. We're calling off the meeting." + "Du hast zu lange gebraucht, Jak. Wir sagen das Meeting ab." ], "bb09int": [ - "Jak, we're having an Underground meeting", - "with some special Agents. Pick up each Agent", - "and bring them to the meeting place quickly." + "Jak, wir haben ein Untergrundtreffen", + "mit einigen Spezialagenten. Sammle jeden Agenten", + "und bringen Sie sie schnell zum Treffpunkt." ], "bb09win": [ - "Fast work, Jak! Some day, we might even", - "invite you to these meetings." + "Schnelle Arbeit, Jak! Eines Tages könnten wir sogar", + "lade Sie zu diesen Treffen ein." ], "bb10fail": [ - "Not fast enough, buddy! You've gotta be quick", - "with those deliveries." + "Nicht schnell genug, Kumpel! Du musst schnell sein", + "mit diesen Lieferungen." ], "bb10int": [ - "Jak, you've got to prove your driving skills once again.", - "One of our Agents dropped off a package,", - "I need it delivered to the Hideout. Immediately." + "Jak, du musst dein Fahrkönnen noch einmal unter Beweis stellen.", + "Einer unserer Agenten hat ein Paket abgegeben,", + "Ich muss es sofort zum Hideout liefern lassen." ], "bb10win": [ - "Good work, Jak!" + "Gute Arbeit, Jak!" ], "bb11fail": [ - "The package contents didn't make it. Go faster next time!" + "Der Paketinhalt hat es nicht geschafft. Sei das nächste Mal schneller!" ], "bb11int": [ - "Jak, I need you to take a package of eco", - "over to the power station. Get there quickly or the contents", - "will be useless to Vin." + "Jak, du musst mir eine Packung Öko-", + "zum Kraftwerk. Beeil dich, sonst wird der Inhalt", + "wird für Vin nutzlos sein." ], "bb11win": [ - "Nice driving, Jak." + "Gute Fahrt, Jak." ], "bb12fail": [ - "You didn't push it hard enough, newbie. Try again." + "Du hast nicht fest genug gedrückt, Neuling. Versuch es noch einmal." ], "bb12int": [ - "This is Torn, we've got another package delivery", - "for the Stadium. Make it quick!" + "Hier ist Torn, wir haben eine weitere Paketlieferung", + "für das Stadion. Beeil dich!" ], "bb12win": [ - "Not bad driving. You really oughta race", - "in the city championship." + "Nicht schlecht gefahren. Du solltest wirklich Rennen fahren", + "in der Stadtmeisterschaft." ], "bb13fail": [ - "You gotta work on your speed, man." + "Du musst an deiner Geschwindigkeit arbeiten, Mann." ], "bb13int": [ - "I need you to take a valuable item over to Onin.", - "You won't be able to drive the whole way,", - "but you still have to move fast. Good luck." + "Du musst für mich einen wertvollen Gegenstand zu Onin bringen.", + "Du wirst nicht in der Lage sein, die ganze Strecke zu fahren,", + "aber Sie müssen trotzdem schnell sein. Viel Glück." ], "bb13win": [ - "That's the way to get it done, good work." + "So wird es erledigt, gute Arbeit." ], "bb14fail": [ - "Too late, Jak! The agent is calling it off.", - "You need to reach it faster!" + "Zu spät, Jak! Der Agent bricht es ab.", + "Du musst es schneller erreichen!" ], "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." + "Jak, bei uns wartet ein Agent auf die Zustellung eines Pakets.", + "Wachspione beobachten diesen Kerl,", + "Wenn Sie ihn also nicht schnell erreichen, wird er verhaftet.", + "Bringen Sie ihm das Paket, bevor es zu spät ist." ], "bb14win": [ - "Nice work, the delivery was a success. I like your style, Jak." + "Gute Arbeit, die Lieferung war ein Erfolg. Ich mag deinen Stil, Jak." ], "bb15fail": [ - "You screwed up, Jak! You didn't get it to the safe zone", - "as we asked." + "Du hast es vermasselt, Jak! Du hast es nicht in die sichere Zone geschafft", + "wie wir gefragt haben." ], "bb15farr": [ - "Get off the bike and get clear, Jak!!" + "Steig vom Rad und geh weg, Jak!!" ], "bb15int": [ - "Jak, we found a bomb in the Slums", - "that was meant for the Shadow.", - "I need you to pick it up and take it out to the Farm Area", - "where we've marked a safe zone where it can explode.", - "Go quickly." + "Jak, wir haben eine Bombe in den Slums gefunden", + "das war für den Schatten bestimmt.", + "Du musst es abholen und zum Farmbereich bringen.", + "wo wir eine sichere Zone markiert haben, in der es explodieren kann.", + "Geh schnell." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "Das war tolle Arbeit, Jak! Danke, das meine ich wirklich so." ], "bb16fail": [ - "You didn't take out enough guards!", - "We need to hit them harder!" + "Du hast nicht genügend Wachen ausgeschaltet!", + "Wir müssen härter zuschlagen!" ], "bb16int": [ - "Jak, this is Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "inflict real damage on our enemies." + "Jak, das ist Torn.", + "Erols Elite-Leibwache zieht durch die Stadt.", + "Wir müssen sie treffen, und zwar hart! Wir müssen genug", + "Wachen, bevor ich die Mission abbrechen muss.", + "Wenn wir zu wenig Wachen haben, haben wir eine Gelegenheit verpasst,", + "unseren Feinden echten Schaden zufügen." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Toller Fahrerflucht-Vorfall, Jak! Das wird Erol eine Botschaft senden." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Sieht aus, als wäre das Ding zu schwer zu bedienen. Wir lassen es vorerst bleiben." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "Wir evaluieren das neue JET-Board für den Einsatz im Untergrund", + "Missionen. Wir haben gehört, dass du mit dem Ding ziemlich gut klarkommst,", + "zeigen Sie uns, was es kann. Erzielen Sie genügend Punkte mit dem", + "Judge-Bot und wir werden erwägen, es zu unserem Arsenal hinzuzufügen." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", - "Good work." + "Wow! Mit diesem Baby kannst du den Beton wirklich aufreißen!", + "Gute Arbeit." ], "bb18fail": [ - "I'm still not sure the JET-Board's that useful." + "Ich bin immer noch nicht sicher, ob das JET-Board so nützlich ist." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Hier ist ein weiterer großartiger Ort, um die Leistung zu bewerten", + "des JET-Boards. Versuche auch hier genügend Punkte zu bekommen." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", - "catching us on those babies." + "Tolle Moves, Jak. Die KG hätte es schwer", + "uns bei diesen Babys zu erwischen." ], "bb19fail": [ - "You didn't get them all. Try again." + "Du hast sie nicht alle bekommen. Versuche es nochmal." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "Wir prüfen den Einsatz von Zielsuchsendern in Missionen.", + "Holen Sie sich alle Beacons so schnell wie möglich.", + "Sie müssen sich hier beeilen." ], "bb19win": [ - "Excellent work. You're a great asset", - "to the Underground, Jak." + "Ausgezeichnete Arbeit. Sie sind eine große Bereicherung", + "in den Untergrund, Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "Zu langsam, Jak! Wenn der Schatten verlangt, musst du liefern." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "Der Schatten braucht dich, um etwas grünes Öko für seine zu sammeln", + "Experimente. Hol dir alles, bevor das Öko verschwindet." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "Nicht schlecht. Ich werde beim Shadow ein gutes Wort einlegen." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Versuchen Sie es weiter. Sie müssen Ihre Fähigkeiten hier weiterentwickeln." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "Manchmal „leihen“ wir uns gerne Krimzon Guard", + "Ausrüstung. Machen Sie eine Runde mit dem KG-Streifenrad", + "und treffen Sie alle Ziele innerhalb des Zeitlimits." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Guter Schuss. Die Garde würde dich als Rekruten lieben.", + "Hier ist eine kleine Belohnung, wenn Sie stattdessen bei uns bleiben." ], "bb22fail": [ - "You didn't get the booths fast enough, Jak." + "Du hast die Stände nicht schnell genug bekommen, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "Ein Teil der Propaganda des Barons ist beunruhigend", + "die Zivilisten. Nehmen Sie diese Kabinen weg und wir werden Praxis stoppen", + "davon abzuhalten, seine Lügen zu verbreiten." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Gute Arbeit! Das sollte den Baron ein wenig zum Schweigen bringen." ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Du hast verloren, Jak. Wenn du gewinnen willst,", + "Sie sollten besser an Ihren Geschwindigkeitsfähigkeiten arbeiten." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "Der beste Rennfahrer der Underground-Szene will Sie herausfordern", + "zu einem Rennen auf Ring Course One.", + "Denken Sie, dass Sie mit ein wenig Konkurrenz klarkommen?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Herzlichen Glückwunsch! Sie haben den Herausforderer besiegt!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "Unser Junge hat Sie hier mitgenommen. Nächstes Mal mehr Glück." ], "bb24int": [ - "Up for a little race, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "Lust auf ein kleines Rennen, Jak?", + "Unser Top-Fahrer möchte auf Ringkurs Zwei gegen Sie antreten.", + "Dieses Baby ist etwas schwieriger.", + "Mal sehen, ob Sie der Herausforderung gewachsen sind." ], "bb24win": [ - "You beat him, Jak. Nice driving." + "Du hast ihn geschlagen, Jak. Gute Fahrt." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", - "You lost!" + "Sieht aus, als wärst du nicht der beste Rennfahrer in dieser Stadt, Jak.", + "Du hast verloren!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", - "This one's gonna get hairy." + "Der Rennchampion der Underground will dich wieder,", + "diesmal auf dem schwierigen Ringkurs Drei.", + "Das wird haarig." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Herzlichen Glückwunsch, Sie haben unseren besten Rennfahrer geschlagen. Gut gemacht." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "Das ist Torn, ein guter Underground-Agent kennt die Stadt", + "innen und außen, optisch. Mal sehen, wie Sie da abschneiden,", + "erreichen Sie diesen Ort innerhalb der vorgegebenen Zeit", + "und du bekommst eine Belohnung. LOS!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Hier haben Sie eine weitere Chance, Ihr Wissen über die Stadt unter Beweis zu stellen." ], "bb28int": [ - "Find this place before time runs out." + "Finden Sie diesen Ort, bevor die Zeit abläuft." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Das ist eine schwierige Frage: Kommen Sie schneller als die Uhr hierher." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Erkennen Sie diesen Ort? Finden Sie ihn schnell und Sie erhalten eine Belohnung." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Hier ist ein wenig bekannter Ort. Finden Sie ihn schnell und ich werde beeindruckt sein." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "Ich möchte, dass du diesen Ort findest. Beeindrucke mich, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Komm schnell her und überrasche mich." ], "bb34int": [ - "Here's another destination, get here quickly." + "Hier ist ein weiteres Ziel, kommen Sie schnell hierher." ], "bb35int": [ - "Find this spot, fast!" + "Finden Sie diesen Ort schnell!" ], "bb36int": [ - "Reach this area and be rewarded." + "Erreichen Sie diesen Bereich und werden Sie belohnt." ], "bb37int": [ - "Think you can find this place?" + "Denken Sie, dass Sie diesen Ort finden können?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "Nicht so gut, Jak! Vielleicht solltest du das Board kalibrieren." ], "bb38int": [ - "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", - "in the time limit allotted." + "Wir evaluieren das JET-Board noch.", + "Mal sehen, ob du alle Energieschübe einsammeln kannst", + "in der vorgegebenen Zeit." ], "bb38win": [ - "Nice moves, fly-boy." + "Schöne Bewegungen, Fly-Boy." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "So nah dran, aber in diesem Geschäft bedeutet das den Tod." ], "bb39int": [ - "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Testen Sie das JET-Board auf einem Ringkurs auf Herz und Nieren.", + "Besiege die Zeit und ich lasse dir das Gesicht wie meines tätowieren." ], "bb39win": [ - "Good speed through the course, Jak!", - "That one looked too easy." + "Gute Geschwindigkeit durch den Kurs, Jak!", + "Das sah zu einfach aus." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "You were too slow on that course." + "Sieht aus, als hätten Sie Ihren Meister gefunden, Jak!", + "Du warst auf dieser Strecke zu langsam." ], "bb40int": [ - "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "let's see if you can complete it in time." + "Ich würde gerne sehen, wie Sie das JET-Board durch eine andere", + "Ringkurs. Wir machen das hier ein bisschen interessanter,", + "mal sehen, ob du es rechtzeitig fertigstellst." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Wow! Sogar ich hätte damit Probleme, gute Arbeit!" ], "bf001": [ - "My shield is impervious to your attacks!" + "Mein Schild ist unempfindlich gegen deine Angriffe!" ], "bf002": [ - "You cannot hurt me!" + "Du kannst mir nichts antun!" ], "bf003": [ - "Fool! Nothing can touch me!" + "Dummkopf! Nichts kann mich berühren!" ], "bf004": [ - "You're powerless!" + "Du bist machtlos!" ], "bf005": [ - "There is nothing you can do!" + "Sie können nichts tun!" ], "bf006": [ "HAHAHAHAHAHA!" @@ -1045,163 +1045,163 @@ "HAHAHAHA!" ], "bf008": [ - "Come get me!" + "Komm, hole mich!" ], "bf009": [ - "Come closer!" + "Komm näher!" ], "bf010": [ - "Try me now!" + "Testen Sie mich jetzt!" ], "bf011": [ - "Let's make this personal!" + "Lassen Sie uns das persönlich machen!" ], "bf012": [ - "Surprise!" + "Überraschung!" ], "bf013": [ - "Don't fall!" + "Fallen Sie nicht!" ], "bf014": [ - "I will crush you!" + "Ich werde Sie vernichten!" ], "bf015": [ - "Take this!" + "Nimm das!" ], "bf016": [ - "Here I come!" + "Hier komme ich!" ], "bf017": [ - "Why won't you die?!" + "Warum willst du nicht sterben?!" ], "bf018": [ - "Your Dark Eco powers surprise me!" + "Deine Dark Eco-Kräfte überraschen mich!" ], "bf019": [ - "Your arrogance will be your downfall!" + "Deine Arroganz wird dein Untergang sein!" ], "bf020": [ - "The Stone is mine!" + "Der Stein gehört mir!" ], "bf021": [ - "Give me the Stone!" + "Gib mir den Stein!" ], "bf022": [ - "Release it!" + "Lass es los!" ], "bf023": [ - "I want the Stone!" + "Ich will den Stein!" ], "bf024": [ - "Argh, let go!" + "Argh, lass los!" ], "bf025": [ - "It's mine!" + "Es gehört mir!" ], "bf026": [ - "Try these on for size!" + "Probieren Sie diese an!" ], "bf027": [ - "Here's a little present!" + "Hier ist ein kleines Geschenk!" ], "bf028": [ - "Want some more?" + "Etwas mehr wollen?" ], "bf029": [ - "I grow tired of this, now you die!" + "Ich habe es satt, jetzt stirbst du!" ], "bf030": [ - "You cannot run away from these!" + "Davor können Sie nicht davonlaufen!" ], "bf031": [ - "Allow me to share the pain!" + "Erlauben Sie mir, den Schmerz zu teilen!" ], "bf032": [ - "Now you're mine!" + "Jetzt gehörst du mir!" ], "bf033": [ - "Here's some hell!" + "Hier ist die Hölle!" ], "bf034": [ - "Say good night!" + "Sag gute Nacht!" ], "bf035": [ - "Enjoy your next life!" + "Genieße dein nächstes Leben!" ], "bf036": [ - "It's over!" + "Es ist aus!" ], "bf037": [ - "Burn in hell!" + "Brenn in der Hölle!" ], "bf038": [ - "The Stone is mine! Let me show you what it can do!" + "Der Stein gehört mir! Ich zeige dir, was er kann!" ], "bf039": [ - "Now you see the Stone's power in capable hands!" + "Jetzt sehen Sie die Macht des Steins in fähigen Händen!" ], "bf040": [ - "How's that for power?" + "Wie ist das mit der Macht?" ], "bf041": [ - "Now you see!" + "Jetzt siehst du!" ], "bf042": [ - "I am invincible now!" + "Ich bin jetzt unbesiegbar!" ], "bf043": [ - "You cannot run forever!" + "Du kannst nicht ewig davonlaufen!" ], "bf044": [ - "I have all the power I need!" + "Ich habe alle Kraft, die ich brauche!" ], "bf045": [ - "You can't avoid this!" + "Das können Sie nicht vermeiden!" ], "bf046": [ - "Here's a little something special!" + "Hier ist etwas ganz Besonderes!" ], "bf047": [ - "Come to me!" + "Komm zu mir!" ], "bf048": [ - "Come here!" + "Komm her!" ], "bf049": [ - "Let's get closer!" + "Kommen wir näher!" ], "bf050": [ - "Nothing can save you now!" + "Nichts kann dich jetzt retten!" ], "bf051": [ - "You're history!" + "Du bist Geschichte!" ], "bf052": [ - "I am the city's savior, not you!" + "Ich bin der Retter der Stadt, nicht du!" ], "bf053": [ - "Die!" + "Sterben!" ], "bf054": [ - "It's over!" + "Es ist aus!" ], "bf055": [ - "I've got you!" + "Ich habe dich!" ], "bf056": [ - "Now you die!" + "Jetzt stirbst du!" ], "bf057": [ - "NOOOOOO!" + "NEIN!" ], "bf058": [ - "No!" + "Nein!" ], "bf059": [ - "NO!" + "NEIN!" ], "bf060": [ - "Uorghh!" + "Urghh!" ], "bf061": [ "Ahh!" @@ -1210,28 +1210,28 @@ "Ungh!" ], "bf063": [ - "Raghh!" + "Raghhh!" ], "bf064": [ - "We finish this now!" + "Wir machen jetzt Schluss damit!" ], "bf065": [ - "Eat this!" + "ISS das!" ], "bf066": [ - "Stop!" + "Stoppen!" ], "bf067": [ - "You idiot, you're no match for me!" + "Du Idiot, du bist mir nicht gewachsen!" ], "bf068": [ - "Why don't you die!?" + "Warum stirbst du nicht!?" ], "bf069": [ - "Give up and I'll make it painless!" + "Geben Sie auf und ich mache es schmerzlos!" ], "bf070": [ - "You cannot win!" + "Du kannst nicht gewinnen!" ], "bf071": [ "Aha!" @@ -1246,262 +1246,262 @@ "Urgh!" ], "bf075": [ - "You can do better than that!" + "Du kannst es besser machen als das!" ], "bf076": [ - "You're mine!" + "Du gehörst mir!" ], "bf077": [ - "Why won't you die!?" + "Warum willst du nicht sterben!?" ], "bf078": [ - "I have the ultimate power!" + "Ich habe die ultimative Macht!" ], "bf079": [ - "Die!" + "Stirb!" ], "bf080": [ - "Is that your best shot?" + "Ist das Ihr bester Schuss?" ], "bf081": [ - "Now you die!" + "Jetzt stirbst du!" ], "bf082": [ - "Get off my tower!" + "Runter von meinem Turm!" ], "bf083": [ - "We'll see about that!" + "Das werden wir sehen!" ], "bf084": [ - "You really think you have a chance?" + "Glaubst du wirklich, du hast eine Chance?" ], "bf085": [ - "Fear me!" + "Fürchte mich!" ], "bf086": [ - "You're nothing!" + "Du bist nichts!" ], "bf087": [ - "My shield is now recharged!" + "Mein Schild ist jetzt wieder aufgeladen!" ], "bf088": [ - "Try these on for size!" + "Probieren Sie diese an!" ], "bf089": [ - "I should have killed you long ago!" + "Ich hätte dich schon vor langer Zeit töten sollen!" ], "bf090": [ - "Never a dull moment, eh?" + "Es wird nie langweilig, oder?" ], "bf091": [ - "Stand still!" + "Still stehen!" ], "bf092": [ - "Go back to wherever you came from!" + "Gehen Sie dorthin zurück, wo Sie hergekommen sind!" ], "bf093": [ - "You're both going to die by my hand!" + "Ihr werdet beide durch meine Hand sterben!" ], "bf094": [ - "Come closer!" + "Komm näher!" ], "bf095": [ - "To the end!" + "Bis zum Ende!" ], "bf096": [ - "You cannot win!" + "Du kannst nicht gewinnen!" ], "bf097": [ - "Come here!" + "Komm her!" ], "bf098": [ "ARGHHH!" ], "bf099": [ - "URGHH!" + "UGHH!" ], "bf100": [ "Urgh!" ], "bf101": [ - "Oof!" + "Uff!" ], "bf102": [ - "Noooo!" + "Nein!" ], "bf103": [ - "No!" + "NEIN!" ], "bf104": [ - "Not again!" + "Nicht noch einmal!" ], "bf105": [ - "It can't be!" + "Das kann nicht sein!" ], "bf106": [ - "Not this time!" + "Dieses Mal nicht!" ], "bf107": [ - "Stop!" + "Stoppen!" ], "bf108": [ - "Damn!" + "Verdammt!" ], "bf109": [ - "Why, you little...!" + "Aber du kleiner...!" ], "bf110": [ - "Now you've made me angry!" + "Jetzt hast du mich wütend gemacht!" ], "bf111": [ - "Impressive, but let's try that again!" + "Beeindruckend, aber versuchen wir es noch einmal!" ], "bf112": [ - "The stronger man always wins!" + "Der Stärkere gewinnt immer!" ], "bf113": [ - "Your loss was inevitable, Jak!" + "Dein Verlust war unvermeidlich, Jak!" ], "bf114": [ - "You could never be a baron!" + "Du könntest nie ein Baron sein!" ], "bf115": [ - "I knew you were weak!" + "Ich wusste, dass du schwach bist!" ], "bf116": [ - "Hm, I expected more from you!" + "Hm, ich habe mehr von dir erwartet!" ], "bf117": [ - "Losing is for the weak!" + "Verlieren ist etwas für die Schwachen!" ], "bf118": [ - "How pathetic!" + "Wie erbärmlich!" ], "bf119": [ - "That was too easy!" + "Das war zu einfach!" ], "bf120": [ - "Sorry, old boy, it's just war!" + "Tut mir leid, alter Junge, es ist nur Krieg!" ], "bf121": [ - "Too bad you don't have what it takes!" + "Schade, dass Sie nicht das Zeug dazu haben!" ], "bf122": [ - "The better man won!" + "Der Bessere hat gewonnen!" ], "bf123": [ - "We're similar, Jak... oh, except you're dead!" + "Wir sind uns ähnlich, Jak ... oh, außer dass du tot bist!" ], "bf124": [ - "Feel the fury of the Precursor Stone!" + "Spüren Sie die Wut des Vorläufersteins!" ], "bf125": [ - "With the Stone's power, I am invincible!" + "Mit der Kraft des Steins bin ich unbesiegbar!" ], "bf126": [ - "All will fear me now!" + "Alle werden mich jetzt fürchten!" ], "bf127": [ - "Time to die!" + "Zeit zu sterben!" ], "bf128": [ - "My little friends will take care of you!" + "Meine kleinen Freunde werden auf dich aufpassen!" ], "bf129": [ - "You can't run forever, Jak!" + "Du kannst nicht ewig rennen, Jak!" ], "bf130": [ - "Now I've got you!" + "Jetzt habe ich dich!" ], "bf131": [ - "Surprise!" + "Überraschung!" ], "bf132": [ - "I have better things to do than waste my time with you!" + "Ich habe Besseres zu tun, als meine Zeit mit dir zu verschwenden!" ], "bf133": [ - "You are nothing!" + "Du bist nichts!" ], "bf134": [ - "Annoying insect, die!" + "Lästiges Insekt, stirb!" ], "bf135": [ - "Not bad, but let me show you what real power is!" + "Nicht schlecht, aber lassen Sie mich Ihnen zeigen, was wahre Macht ist!" ], "bf136": [ - "Feel this!" + "Fühle das!" ], "bru001": [ - "Great smelly breath of a goosesnake!", - "Heroes to Lurker people you be!", - "By now just see much happy thanks! Ruhuhuh.", - "You honorary members of Lurker tribe now.", - "We no forget - if ever you need us, we help you!" + "Toller stinkender Atem einer Gänseschlange!", + "Ihr seid Helden, Leute, die Lurker sind!", + "Bis dahin einfach nur vielen Dank! Ruhuhuh.", + "Sie sind jetzt Ehrenmitglieder des Lurker-Stammes.", + "Wir vergessen nicht – wenn Sie uns jemals brauchen, helfen wir Ihnen!" ], "bru002": [ - "I hears you two look for a piece of Mar's shiny Seal.", - "Brutter loves shiny bright things too.", - "I have piece I thinks. It in Water Slums,", - "hanging over me hut and you free to have.", - "Gift from Brutter!" + "Ich habe gehört, Sie beide suchen nach einem Stück von Mars glänzendem Siegel.", + "Brutter liebt auch glänzende, helle Dinge.", + "Ich habe ein Stück, denke ich. Es in Wasser Slums,", + "hängt über meiner Hütte und du hast es frei.", + "Geschenk von Brutter!" ], "bru004": [ - "You two good! No better warrior in all Lurker tribes!", - "You keep Seal. You love shiny things just like Brutter." + "Ihr zwei seid gut! In allen Lurker-Stämmen gibt es keinen besseren Krieger!", + "Du behältst Seal. Du liebst glänzende Dinge, genau wie Brutter." ], "cit001": [ "Hey!" ], "cit004": [ - "Watch it!" + "Passen Sie auf!" ], "cit008": [ - "No!" + "NEIN!" ], "cit010": [ "Argh!" ], "cit016": [ - "Stay away!" + "Bleib weg!" ], "cit033": [ "Hey!" ], "cit034": [ - "Look out!" + "Achtung!" ], "cit035": [ - "Watch out!" + "Achtung!" ], "cit046": [ - "Go away!" + "Geh weg!" ], "cit047": [ - "Leave me alone!" + "Lass mich allein!" ], "cit051": [ - "Are you crazy?" + "Bist du verrückt?" ], "cit053": [ - "Are you insane?!" + "Bist du verrückt?!" ], "cit055": [ - "Hey, that's my vehicle!" + "Hey, das ist mein Auto!" ], "cit056": [ - "Gimme back my vehicle!" + "Gib mir mein Auto zurück!" ], "cit057": [ - "What are you doing?" + "Was machst du?" ], "cit058": [ - "Please, don't take it!" + "Bitte nimm es nicht!" ], "cit097": [ - "Ugh!" + "Pfui!" ], "cit097a": [ - "Aahh!" + "Ähhh!" ], "cit097b": [ "Aaghhh!" @@ -1519,847 +1519,847 @@ "Urgh!" ], "cit098b": [ - "Ugh!" + "Pfui!" ], "cit098c": [ - "Ugh!" + "Pfui!" ], "cit098d": [ "Ahh!" ], "cit099": [ - "No!" + "NEIN!" ], "cit099a": [ - "Noooo!" + "Nein!" ], "cit099b": [ - "No!" + "NEIN!" ], "cit099c": [ - "No!" + "NEIN!" ], "cit099d": [ - "Nooo!" + "Nein!" ], "cit100": [ - "Please!" + "Bitte!" ], "cit100a": [ - "Please!" + "Bitte!" ], "cit100b": [ - "Please!" + "Bitte!" ], "cit100c": [ - "Please!" + "Bitte!" ], "cit101": [ - "Stop!" + "Stoppen!" ], "cit101a": [ - "Stop!" + "Stoppen!" ], "cit101b": [ - "Stop!" + "Stoppen!" ], "cit101c": [ - "Stop!" + "Stoppen!" ], "cit103": [ - "Sound the alarm!" + "Schlagen Sie Alarm!" ], "cit103a": [ - "Sound the alarm!" + "Schlagen Sie Alarm!" ], "cit104": [ - "Guards!" + "Wachen!" ], "cit104a": [ - "Guards! Help us!" + "Wachen! Helft uns!" ], "cit105": [ - "Help us!" + "Hilf uns!" ], "cit120": [ - "Keep away from me!" + "Bleib weg von mir!" ], "cit120a": [ - "Keep away from me!" + "Bleib weg von mir!" ], "cit137a": [ - "Wait!" + "Warten!" ], "cityv001": [ - "Leaving city safe zone." + "Verlasse die sichere Zone der Stadt." ], "cityv002": [ - "Leaving city at your own risk." + "Das Verlassen der Stadt erfolgt auf eigene Gefahr." ], "cityv003": [ - "Exiting city." + "Verlassen der Stadt." ], "cityv004": [ - "Opening outer shield." + "Äußeres Schild öffnen." ], "cityv005": [ - "Decontamination complete." + "Dekontamination abgeschlossen." ], "cityv006": [ - "Entering Haven City." + "Betreten von Haven City." ], "cityv007": [ - "Re-entering city." + "Wiedereintritt in die Stadt." ], "cityv008": [ - "Welcome back." + "Willkommen zurück." ], "cityv009": [ - "It's good to see you still alive." + "Es ist schön, dass du noch am Leben bist." ], "cityv010": [ - "Security clearance granted." + "Sicherheitsüberprüfung erteilt." ], "cityv011": [ - "Entrance denied. You do not have proper clearance." + "Zutritt verweigert. Sie verfügen nicht über die erforderliche Berechtigung." ], "cityv012": [ - "I am unable to comply." + "Ich bin nicht in der Lage, dem nachzukommen." ], "cityv013": [ - "Please come back with proper clearance." + "Bitte kommen Sie mit der entsprechenden Freigabe zurück." ], "cityv014": [ - "Access denied." + "Zugriff abgelehnt." ], "cityv015": [ - "You need Red Clearance for this gate." + "Für dieses Tor benötigen Sie eine rote Freigabe." ], "cityv016": [ - "You need Green Clearance for this gate." + "Für dieses Tor benötigen Sie eine Green Clearance." ], "cityv017": [ - "You need Yellow Clearance for this gate." + "Für dieses Tor benötigen Sie eine gelbe Freigabe." ], "cityv018": [ - "You need Blue Clearance for this gate." + "Für dieses Tor benötigen Sie eine Blue Clearance." ], "cityv019": [ - "You need Purple Clearance for this gate." + "Für dieses Tor benötigen Sie Purple Clearance." ], "cityv020": [ - "You need special Black Clearance for this door." + "Für diese Tür benötigen Sie eine spezielle Black Clearance." ], "cityv021": [ - "Access granted." + "Zugriff gewährt." ], "cityv022": [ - "Door open." + "Tür öffen." ], "cityv023": [ - "Door closed." + "Tür geschlossen." ], "cityv024": [ - "Please enter." + "Bitte eingeben." ], "cityv025": [ "Warp Gate online." ], "cityv026": [ - "Warning: Eco supplies low." + "Achtung: Eco-Vorräte gehen zur Neige." ], "cityv027": [ - "Backup systems failing." + "Ausfall der Backup-Systeme." ], "cityv028": [ - "Warning: Eco storage is below safe minimums." + "Achtung: Die Öko-Speicherung liegt unter den sicheren Mindestwerten." ], "cityv029": [ - "Eco Grid unstable." + "Öko-Netz instabil." ], "cityv030": [ - "Metal Heads detected at Mining Site." + "An Bergbaustandort wurden Metallköpfe entdeckt." ], "cityv031": [ - "Metal Heads detected at Drilling Site." + "An der Bohrstelle Metallköpfe entdeckt." ], "cityv032": [ - "Stand by for clearance." + "Bereit für die Freigabe." ], "cityv033": [ - "Have a nice day." + "Einen schönen Tag noch." ], "cityv034": [ - "Welcome." + "Willkommen." ], "cityv035": [ - "This is a restricted area." + "Dies ist ein Sperrgebiet." ], "cityv036": [ - "You are in violation of Speed Ordinance 51d, pull over." + "Sie verstoßen gegen die Geschwindigkeitsverordnung 51d. Fahren Sie rechts ran." ], "cityv037": [ - "I have alerted the authorities." + "Ich habe die Behörden alarmiert." ], "cityv038": [ - "This sector is closed." + "Dieser Sektor ist geschlossen." ], "cityv039": [ - "Alert: Prison escape in progress." + "Alarm: Gefängnisausbruch im Gange." ], "cityv040": [ - "Alert: City under attack." + "Alarm: Stadt wird angegriffen." ], "cityv041": [ - "Metal Head attack in progress." + "Metal-Head-Angriff im Gange." ], "cityv042": [ - "All citizens go to safe shelters." + "Alle Bürger gehen in sichere Unterkünfte." ], "cityv043": [ - "Eco Grid growing unstable." + "Öko-Netz wird instabil." ], "cityv044": [ - "The Eco Grid is down. Repeat: The Eco Grid is down." + "Das Öko-Netz ist ausgefallen. Ich wiederhole: Das Öko-Netz ist ausgefallen." ], "cityv045": [ - "Red alert: City shield wall compromised." + "Roter Alarm: Schildmauer der Stadt gefährdet." ], "cityv046": [ - "Unauthorized movement in sewer system." + "Unbefugte Bewegung im Abwassersystem." ], "cityv047": [ - "This is a restricted area. Defenses activated." + "Dies ist ein Sperrgebiet. Verteidigung aktiviert." ], "cityv048": [ - "You are trespassing. Defenses coming online." + "Sie begehen Hausfriedensbruch. Die Abwehrmaßnahmen werden online gestellt." ], "cityv049": [ - "I regret use of force. Systems arming." + "Ich bereue den Einsatz von Gewalt. Systeme werden scharfgeschaltet." ], "cityv050": [ - "Trespasser neutralized." + "Eindringling neutralisiert." ], "cityv051": [ - "Suspect destroyed." + "Verdächtiger vernichtet." ], "cityv052": [ - "I am authorized to use force." + "Ich bin befugt, Gewalt anzuwenden." ], "cityv053": [ - "General alert: Riot in progress. Krimzon Guards en route." + "Allgemeine Warnung: Aufruhr im Gange. Krimzon-Wachen unterwegs." ], "cityv054": [ - "Surrender yourself. You are under arrest." + "Stellen Sie sich. Sie sind verhaftet." ], "cityv055": [ - "There is no escape." + "Es gibt kein Entkommen." ], "cityv056": [ - "You are in a restricted sector. This sector is on high alert." + "Sie befinden sich in einem Sperrgebiet. In diesem Sektor herrscht höchste Alarmbereitschaft." ], "cityv057": [ - "You are under arrest. Surrender yourself." + "Sie sind verhaftet. Stellen Sie sich." ], "cityv058": [ - "This sector is off limits." + "Dieser Sektor ist gesperrt." ], "cityv061": [ - "All systems back online and in the green." + "Alle Systeme wieder online und im grünen Bereich." ], "cityv062": [ - "The race is about to begin." + "Das Rennen beginnt gleich." ], "cityv063": [ - "Welcome to the city transportation system." + "Willkommen im städtischen Verkehrssystem." ], "cityv064": [ - "You can thrust in your vehicle at any time." + "Sie können Ihr Fahrzeug jederzeit einschieben." ], "cityv065": [ - "Braking will assist in vehicle control." + "Durch das Bremsen wird die Fahrzeugkontrolle verbessert." ], "cityv067": [ - "Backing up is easy." + "Das Sichern ist einfach." ], "cityv068": [ - "You can hover in one of two zones: low and high." + "Sie können in einer von zwei Zonen schweben: niedrig und hoch." ], "cityv069": [ - "Try switching hover zones." + "Versuchen Sie, die Schwebezonen zu wechseln." ], "cityv070": [ - "Switching hover zones may help avoid traffic or", - "ground obstacles." + "Das Wechseln der Schwebezonen kann dabei helfen, Verkehr zu vermeiden oder", + "Bodenhindernisse." ], "cityv075": [ - "Alert: Vehicle destruction imminent." + "Achtung: Fahrzeugzerstörung steht unmittelbar bevor." ], "cityv076": [ - "Please drive more carefully next time." + "Bitte fahren Sie das nächste Mal vorsichtiger." ], "cityv077": [ - "Thank you for using the vehicle." + "Vielen Dank für die Nutzung des Fahrzeugs." ], "cityv078": [ - "Have a nice day." + "Einen schönen Tag noch." ], "cityv079": [ - "Warning: Missile cooling systems damaged." + "Warnung: Raketenkühlsysteme beschädigt." ], "cityv080": [ - "Alert: Backup cooling system failure.", - "Emergency overrides initiated." + "Warnung: Ausfall des Backup-Kühlsystems.", + "Notüberbrückungen eingeleitet." ], "cityv081": [ - "Missile systems at critical overload.", - "Failsafe not responding." + "Raketensysteme kritisch überlastet.", + "Failsafe reagiert nicht." ], "cityv082": [ - "Danger: Warhead detonation imminent.", - "Evacuate immediately." + "Gefahr: Die Detonation des Sprengkopfes steht unmittelbar bevor.", + "Sofort evakuieren." ], "cityv087": [ - "Arriving at Throne Room floor." + "Ankunft im Thronsaal." ], "cityv088": [ - "Arriving at ground floor." + "Ankunft im Erdgeschoss." ], "cityv093": [ - "You have been sentenced to termination." + "Sie wurden zur Kündigung verurteilt." ], "cityv094": [ - "This area is restricted.", - "Initiating termination with extreme prejudice." + "Dieser Bereich ist gesperrt.", + "Einleitung einer Kündigung mit extremer Voreingenommenheit." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Dieser Bereich ist nur für das Personal der Krimzon-Wache zugänglich." ], "cityv096": [ - "The city is on high alert." + "In der Stadt herrscht höchste Alarmbereitschaft." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "Die Stadt wird angegriffen.", + "Alle Bürger begeben sich in sichere Unterkünfte." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "Die Stadt wird angegriffen. Bitte bleiben Sie in Ihren Häusern." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "Metalhead-Aggressoren infiltrieren das System." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Herzlichen Glückwunsch zum Erhalt Ihres Sicherheitspasses." ], "cityv107": [ - "Unauthorized use of Fortress door.", - "Activating security tank." + "Unbefugte Nutzung der Festungstür.", + "Sicherheitstank wird aktiviert." ], "cityv108": [ - "Gunpod weapons coming online." + "Gunpod-Waffen kommen online." ], "cityv109": [ - "Weapons overheating." + "Waffen überhitzen." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "Waffen außer Funktion. Bitte warten, bis sie abgekühlt sind." ], "cityv111": [ - "Weapons back online." + "Waffen wieder online." ], "cityv112": [ - "The gunpod has taken severe damage." + "Die Kanonenkapsel wurde schwer beschädigt." ], "cityv130": [ - "The city map is displayed in the lower right." + "Unten rechts wird der Stadtplan angezeigt." ], "cityv132": [ - "Follow the icons on the map", - "to reach important destinations." + "Folgen Sie den Symbolen auf der Karte", + "um wichtige Ziele zu erreichen." ], "cityv134": [ - "Intruder alert." + "Eindringlingsalarm." ], "cityv135": [ - "Stand by." + "Stehen zu." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Bei mir liegt eine Stromkreisüberlastung vor.", + "Schalte meine Bypass-Schalter innerhalb des Zeitlimits ein", + "und Sie werden belohnt." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "Sie haben es versäumt, das Bypass-Gitter rechtzeitig einzuschalten.", + "Meine C-Zone-Schaltkreise sind überlastet." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "Sie haben den Bypass erfolgreich eingeschaltet", + "für meine Schaltkreise rechtzeitig.", + "Hier ist eine Belohnung." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", - "to stabilize the Eco Grid." + "Ich brauche Notstrom für meine Eco Converter.", + "Alle verfügbaren Stromkreise schnell einschalten", + "um das Ökonetz zu stabilisieren." ], "cityv150": [ - "You didn't reach all the switches in time.", - "The Eco Grid is still unstable." + "Sie haben nicht alle Schalter rechtzeitig erreicht.", + "Das Öko-Netz ist immer noch instabil." ], "cityv151": [ - "You successfully switched on the circuits", - "to stabilize the Eco Grid.", - "You have earned a reward." + "Sie haben die Stromkreise erfolgreich eingeschaltet", + "um das Ökonetz zu stabilisieren.", + "Sie haben eine Belohnung verdient." ], "cityv152": [ - "I have detected a Dark Eco spill.", - "You must remove this hazard quickly", - "before the city is contaminated." + "Ich habe eine Dark Eco-Leckage entdeckt.", + "Sie müssen diese Gefahr schnell beseitigen", + "bevor die Stadt verseucht wird." ], "cityv153": [ - "You did not remove all the Dark Eco quickly enough." + "Sie haben das gesamte Dark Eco nicht schnell genug entfernt." ], "cityv154": [ - "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "Sie haben die Gefahr des dunklen Ökos rechtzeitig beseitigt.", + "Die Stadt ist Ihnen dankbar." ], "cityv155": [ - "Sensors indicate a cluster of Blue Eco in the city.", - "Collect all eco before it dissipates", - "and you will be rewarded." + "Sensoren zeigen eine Ansammlung von Blue Eco in der Stadt an.", + "Sammle alles Öko, bevor es sich auflöst", + "und Sie werden belohnt." ], "cityv156": [ - "You did not retrieve all of the eco." + "Sie haben nicht das gesamte Öko abgerufen." ], "cityv157": [ - "You successfully retrieved the eco.", - "Here is your reward." + "Sie haben das Öko erfolgreich abgerufen.", + "Hier ist Ihre Belohnung." ], "cityv158": [ - "Emergency response needed.", - "Runaway bomb bots detected and headed for", - "populated areas. Neutralize all bomb bots", - "before it's too late." + "Notfallreaktion erforderlich.", + "Außer Kontrolle geratene Bombenroboter entdeckt und auf Kurs", + "besiedelte Gebiete. Neutralisiere alle Bombenbots", + "bevor es zu spät ist." ], "cityv159": [ - "You failed to neutralize the runaway bomb bots." + "Es ist Ihnen nicht gelungen, die außer Kontrolle geratenen Bombenbots zu neutralisieren." ], "cityv160": [ - "You destroyed the runaway bomb bots.", - "The city thanks you." + "Sie haben die außer Kontrolle geratenen Bombenbots zerstört.", + "Die Stadt dankt es Ihnen." ], "cityv161": [ - "Get to this point in the game quickly", - "and you will receive a prize." + "Erreichen Sie diesen Punkt im Spiel schnell", + "und Sie erhalten einen Preis." ], "cityv162": [ - "Try to find this spot." + "Versuchen Sie, diese Stelle zu finden." ], "cityv163": [ - "Can you identify this place and get there?" + "Können Sie diesen Ort identifizieren und dorthin gelangen?" ], "cityv164": [ - "Make it here in the time allotted and a reward is yours." + "Wenn Sie es innerhalb der vorgegebenen Zeit hierher schaffen, erwartet Sie eine Belohnung." ], "cityv165": [ - "Find this spot for a prize." + "Finden Sie diesen Ort für einen Preis." ], "cityv166": [ - "Get to this spot for a prize." + "Kommen Sie zu diesem Ort, um einen Preis zu gewinnen." ], "cityv167": [ - "Metal Heads have been detected in the gun course.", - "Neutralize them all immediately." + "Im Waffengang wurden Metallköpfe entdeckt.", + "Neutralisieren Sie sie alle sofort." ], "cityv168": [ - "You did not kill them all." + "Du hast sie nicht alle getötet." ], "cityv169": [ - "Excellent shooting. Threat eliminated." + "Hervorragendes Schießen. Bedrohung eliminiert." ], "cityv170": [ - "Get a high score on the JET-Board and receive a prize." + "Erreichen Sie einen Highscore auf dem JET-Board und erhalten Sie einen Preis." ], "cityv171": [ - "Try for a high score and receive a prize." + "Versuchen Sie, einen Highscore zu erreichen und gewinnen Sie einen Preis." ], "cityv172": [ - "You did not achieve a high enough score." + "Ihre Punktzahl reicht nicht aus." ], "cityv173": [ - "Congratulations, you achieved a high enough score." + "Herzlichen Glückwunsch, Sie haben eine ausreichend hohe Punktzahl erreicht." ], "cityv174": [ - "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Willkommen beim Zentralcomputer des Stadions.", + "Bitte wählen Sie Ihre Herausforderung." ], "cityv175": [ - "Attention, all citizens:", - "The Class 1 Race is about to begin." + "Achtung, alle Bürger:", + "Das Rennen der Klasse 1 beginnt gleich." ], "cityv176": [ - "Attention, all citizens:", - "The Class 2 Race is about to begin." + "Achtung, alle Bürger:", + "Das Rennen der Klasse 2 beginnt gleich." ], "cityv177": [ - "Attention, all citizens:", - "The Class 3 Race is about to begin." + "Achtung, alle Bürger:", + "Das Rennen der Klasse 3 beginnt gleich." ], "cityv178": [ - "Care to try for the course record?" + "Möchten Sie versuchen, den Streckenrekord aufzustellen?" ], "cityv179": [ - "Congratulations, you achieved the gold record." + "Herzlichen Glückwunsch, Sie haben die Goldene Schallplatte erreicht." ], "cityv180": [ - "Congratulations, you achieved the silver record." + "Herzlichen Glückwunsch, Sie haben den Silbernen Rekord erreicht." ], "cityv181": [ - "Congratulations, you achieved the bronze record." + "Herzlichen Glückwunsch, Sie haben den Bronzerekord erreicht." ], "cityv182": [ - "Care to try for a high score record?" + "Möchten Sie versuchen, einen Highscore-Rekord aufzustellen?" ], "cityv183": [ - "Would you like to try for a high score?" + "Möchten Sie versuchen, einen Highscore zu erzielen?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Willkommen bei den Rennzeitfahren." ], "cityv185": [ - "Would you like to race for a record time?" + "Möchten Sie beim Rennen eine Rekordzeit erzielen?" ], "cityv186": [ - "Choose your course." + "Wählen Sie Ihren Kurs." ], "cityv187": [ - "Would you like to try for a course record?" + "Möchten Sie versuchen, einen Streckenrekord aufzustellen?" ], "cityv188": [ - "Would you like to use Orbs to buy a secret?" + "Möchten Sie Orbs verwenden, um ein Geheimnis zu kaufen?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "Du hast nicht genug Orbs für dieses Geheimnis." ], "cityv190": [ - "Secret activated." + "Geheim aktiviert." ], "cityv191": [ - "All secrets are activated." + "Alle Geheimnisse sind aktiviert." ], "cityv192": [ - "Please exit the Titan Suit." + "Bitte verlassen Sie den Titananzug." ], "cityv193": [ - "You must exit the Titan Suit." + "Sie müssen den Titananzug verlassen." ], "cityv194": [ - "Vehicles must remain within city limits." + "Fahrzeuge müssen innerhalb der Stadtgrenzen bleiben." ], "cityv195": [ - "Exit denied. Enemy targets still present." + "Ausgang verweigert. Feindliche Ziele immer noch anwesend." ], "cityv196": [ - "Exit denied. Metal Head eggs still detected." + "Verlassen verweigert. Metal Head-Eier immer noch erkannt." ], "cityv197": [ - "Scanners show Metal Head eggs still active." + "Scanner zeigen, dass Metal Head-Eier noch aktiv sind." ], "daxm001": [ - "Shoot the platform, Jak." + "Erschieße die Plattform, Jak." ], "daxm002": [ - "We need something to get through that gate!" + "Wir brauchen etwas, um durch dieses Tor zu kommen!" ], "daxm003": [ - "Shoot the Metal Head when he moves his shield!" + "Erschieße den Metal Head, wenn er seinen Schild bewegt!" ], "daxm004": [ - "Hit him in his stomach!" + "Schlag ihm in den Bauch!" ], "daxm005": [ - "Whoa! That path dropped like uh... a rock!" + "Boah! Der Weg war so abschüssig wie, äh... ein Stein!" ], "daxm006": [ - "Smack the box, baby!" + "Schlag auf die Kiste, Baby!" ], "daxm007": [ - "That's what I call a rocky road!" + "Das nenne ich einen steinigen Weg!" ], "daxm008": [ - "We gotta get to the top!" + "Wir müssen an die Spitze gelangen!" ], "daxm009": [ - "We made it!!" + "Wir haben es geschafft!!" ], "daxm010": [ - "Rock 'n roll!" + "Rock 'n' Roll!" ], "ds001": [ - "We gotta find the Baron, Jak." + "Wir müssen den Baron finden, Jak." ], "ds005": [ - "Jak, those are Metal Heads!" + "Jak, das sind Metal Heads!" ], "ds006": [ - "Finally, now we get to see the Shadow!", - "What do ya gotta do around this place to get noticed?" + "Endlich können wir den Schatten sehen!", + "Was muss man hier tun, um aufzufallen?" ], "ds012": [ - "That must be the Ruby Key to the city." + "Das muss der Rubinschlüssel zur Stadt sein." ], "ds013": [ - "Statues are becoming an endangered species around here." + "Statuen sind in unserer Gegend zunehmend vom Aussterben bedroht." ], "ds014": [ - "So this is Mar's scary tomb, eh?", - "Doesn't look so bad." + "Das ist also Mars gruseliges Grab, oder?", + "Sieht nicht so schlimm aus." ], "ds016": [ - "Let's bring the money back to Krew." + "Bringen wir das Geld zu Krew zurück." ], "ds017": [ - "That must be the ammo and missile Torn told us to blow up!" + "Das müssen die Munition und die Raketen sein, die Torn uns aufgetragen hat, in die Luft zu jagen!" ], "ds018": [ - "Get the tank to shoot the missile!" + "Bringen Sie den Panzer dazu, die Rakete abzufeuern!" ], "ds019": [ - "Break those tubes in the center." + "Zerbrechen Sie die Röhren in der Mitte." ], "ds020": [ - "Please tell me you remember how to roll..." + "Bitte sag mir, dass du dich noch daran erinnerst, wie man rollt …" ], "ds023": [ - "Let's rock!" + "Lass uns rocken!" ], "ds024": [ - "Here we go!" + "Auf geht's!" ], "ds025": [ - "All right!" + "In Ordnung!" ], "ds026": [ - "Yeah!" + "Ja!" ], "ds028": [ - "Oh yeah!" + "Oh ja!" ], "ds029": [ - "Let's go back to the city." + "Gehen wir zurück in die Stadt." ], "ds030": [ - "I think we need to go back to the city, Jak." + "Ich glaube, wir müssen in die Stadt zurückkehren, Jak." ], "ds031": [ - "Let's go talk to Torn." + "Lass uns mit Torn reden." ], "ds032": [ - "Let's go back to the Underground Hideout." + "Gehen wir zurück zum unterirdischen Versteck." ], "ds043": [ - "You can get a longer jump by rolling into it." + "Sie können weiter springen, indem Sie hineinrollen." ], "ds044": [ - "Use a long jump to get across this gap." + "Machen Sie einen Weitsprung, um diese Lücke zu überbrücken." ], "ds045": [ - "Nice form!" + "Schöne Form!" ], "ds046": [ - "If you duck before you jump, you'll go higher.", - "You'll need a high jump to reach the top of this ledge, Jak." + "Wenn Sie sich vor dem Sprung ducken, kommen Sie höher.", + "Um die Spitze dieses Felsvorsprungs zu erreichen, Jak, musst du weit springen können." ], "ds047": [ - "Ooh, that's a high one.", - "You'll need to jump,", - "then jump again in the air to get up there." + "Oh, das ist ein hoher Wert.", + "Du musst springen,", + "dann springe noch einmal in die Luft, um dort hinauf zu gelangen." ], "ds048": [ - "Hit 'em again, Jak!" + "Schlag sie noch einmal, Jak!" ], "ds049": [ - "Do a spin kick!" + "Machen Sie einen Drehkick!" ], "ds050": [ - "Robotank, run!" + "Robotank, lauf!" ], "ds051": [ - "Hey, we should stay with Sig." + "Hey, wir sollten bei Sig bleiben." ], "ds052": [ - "Hey, big guy, keep close, huh?" + "Hey, Großer, bleib in deiner Nähe, ja?" ], "ds053": [ - "We're too far away from Sig." + "Wir sind zu weit weg von Sig." ], "ds054": [ - "Stick with the plan, Jak, protect Sig!" + "Bleib beim Plan, Jak, beschütze Sig!" ], "ds055": [ - "Uh oh, where's Sig?" + "Oh oh, wo ist Sig?" ], "ds056": [ - "Wow, what a blast!" + "Wow, was für ein Spaß!" ], "ds057": [ - "Sig's a good shot." + "Sig ist ein guter Schütze." ], "ds058": [ - "Go help Sig!" + "Geh und hilf Sig!" ], "ds059": [ - "Nice shootin', Sig!" + "Guter Schuss, Sig!" ], "ds060": [ - "You're my hero!" + "Du bist mein Held!" ], "ds061": [ - "Uh oh, Sig's in trouble!" + "Oh oh, Sig ist in Schwierigkeiten!" ], "ds062": [ - "There's another Metal Head going after our boy!", - "Shoot it, shoot it!" + "Da ist noch ein anderer Metalhead, der hinter unserem Jungen her ist!", + "Schieß drauf, schieß drauf!" ], "ds063": [ - "Keep Sig safe, Jak!" + "Pass auf Sig auf, Jak!" ], "ds064": [ - "Whoa, Sig's really getting roughed up!" + "Boah, Sig wird echt hart rangenommen!" ], "ds065": [ - "Shoot 'em, shoot 'em!" + "Erschießt sie, erschießt sie!" ], "ds066": [ - "Sig dies, we die." + "Sig stirb, wir sterben." ], "ds067": [ - "Oof, we suck..." + "Uff, wir sind scheiße ..." ], "ds068": [ - "We have to keep 'em away from Sig." + "Wir müssen sie von Sig fernhalten." ], "ds069": [ - "We need to find the valve to turn the water back on." + "Wir müssen das Ventil finden, um das Wasser wieder aufzudrehen." ], "ds094": [ - "Robotank, run!" + "Robotank, lauf!" ], "ds095": [ - "Here comes that tank again!" + "Da kommt der Panzer wieder!" ], "ds096": [ - "Get the tank to shoot the missile!" + "Bringen Sie den Panzer dazu, die Rakete abzufeuern!" ], "ds099": [ - "We need to get to the top of that tower!" + "Wir müssen auf die Spitze dieses Turms gelangen!" ], "ds100": [ - "Climb the ruined tower, Jak!" + "Erklimme den zerstörten Turm, Jak!" ], "ds111": [ - "We should come back with the Titan Suit to do this path." + "Um diesen Weg zu gehen, sollten wir mit dem Titananzug zurückkommen." ], "ds112": [ - "You've got a mechanical fist, Jak. Use it!" + "Du hast eine mechanische Faust, Jak. Benutze sie!" ], "ds113": [ - "Break the door!" + "Mach die Tür auf!" ], "ds114": [ - "800 pound Tigorilla comin' through!" + "800 Pfund schwerer Tigorilla kommt durch!" ], "ds115": [ - "Smashing work, Jak! Oh, that was funny." + "Tolle Arbeit, Jak! Oh, das war lustig." ], "ds116": [ - "Shoot the platform, Jak." + "Erschieße die Plattform, Jak." ], "ds117": [ - "We need something to get through that gate." + "Wir brauchen etwas, um durch dieses Tor zu kommen." ], "ds118": [ - "Shoot the Metal Head when he moves his shield." + "Erschieße den Metal Head, wenn er seinen Schild bewegt." ], "ds119": [ - "Hit him in his stomach." + "Schlagen Sie ihm in den Bauch." ], "ds120": [ - "Whoa, that path dropped like a... a rock!" + "Boah, der Weg ist abgefallen wie ein … Stein!" ], "ds121": [ - "Smack the box, baby!" + "Schlag auf die Kiste, Baby!" ], "ds128": [ - "Good, we're through." + "Gut, wir sind durch." ], "ds129": [ - "Shoot the gun, Jak!" + "Schieß ab, Jak!" ], "ds143": [ - "We're supposed to keep Krew's guys alive, Jak!" + "Wir sollen Krews Jungs am Leben halten, Jak!" ], "ds144": [ - "Save 'em, Jak!" + "Rette sie, Jak!" ], "ds145": [ - "Don't like this, Jak..." + "Das gefällt mir nicht, Jak …" ], "ds146": [ - "Behind us, Jak!" + "Hinter uns, Jak!" ], "ds147": [ - "Metal Heads! Everywhere!" + "Metalheads! Überall!" ], "ds148": [ - "Protect us, Jak! But first me." + "Beschütze uns, Jak! Aber zuerst ich." ], "ds150": [ - "Take a vehicle, Jak! It's faster." + "Nimm ein Auto, Jak! Das ist schneller." ], "ds151": [ - "Use your JET-Board!" + "Nutze dein JET-Board!" ], "ds152": [ - "We got company, Jak! Lots of guards!" + "Wir haben Besuch, Jak! Viele Wachen!" ], "ds160": [ - "That's right, we're bad! The Precursor Stone is ours!" + "Das stimmt, wir sind böse! Der Precursor-Stein gehört uns!" ], "ds161": [ - "There's Mar's gun, Jak! Let's go check it out." + "Da ist Mars Waffe, Jak! Lass uns nachsehen." ], "ds162": [ - "These Precursor Orbs are worth a lot now.", - "We might find a few hidden around,", - "or get some doing difficult tasks.", - "We'll be able to buy stuff with 'em!" + "Diese Vorläuferkugeln sind jetzt viel wert.", + "Wir könnten ein paar hier versteckt finden,", + "oder lassen Sie einige schwierige Aufgaben erledigen.", + "Wir können damit Sachen kaufen!" ], "ds163": [ - "Jak, now that we have the Palace Security Pass,", - "let's go have some fun in the big man's crib!" + "Jak, jetzt, da wir den Sicherheitsausweis des Palastes haben,", + "lasst uns ein bisschen Spaß haben in der Bude des großen Mannes!" ], "ds164": [ - "Back up to get out of the mech." + "Gehen Sie zurück, um aus dem Mech auszusteigen." ], "ds165": [ - "We're free, Jak! Thanks to me.", - "Nice to breathe some fresh air, huh?", - "We'll get that Baron Praxis guy, alright!" + "Wir sind frei, Jak! Dank mir.", + "Schön, etwas frische Luft zu atmen, oder?", + "Wir kriegen diesen Baron Praxis-Typen schon!" ], "ds166": [ - "I'm not getting out of this pod", - "'till you kill all those crazy flyin' Metal Heads!" + "Ich komme nicht aus dieser Kapsel raus", + "bis du all diese verrückten, fliegenden Metal Heads getötet hast!" ], "ds167": [ - "I wonder why they wanted us to protect Samos' Hut.", - "Maybe now we'll get to meet the Shadow." + "Ich frage mich, warum sie wollten, dass wir Samos‘ Hütte beschützen.", + "Vielleicht lernen wir jetzt den Schatten kennen." ], "ds168": [ - "There's the Rift Ring!" + "Da ist der Riftring!" ], "ds173": [ - "Ahhh!" + "Ähhh!" ], "ds174": [ "Ooooh!" @@ -2368,842 +2368,842 @@ "Whoa-whoa-oaa-ah!" ], "ds176": [ - "Whoa!" + "Boah!" ], "ds177": [ "Hey!" ], "ds178": [ - "Hey, watch that!" + "Hey, pass auf!" ], "ds179": [ - "Ooh!" + "Oh!" ], "ds180": [ - "Oh, boy!" + "Oh Junge!" ], "ds181": [ - "Uooaaoh!" + "Wow!" ], "ds182": [ - "Wow, that was close!" + "Wow, das war knapp!" ], "ds183": [ - "Oh, boy!" + "Oh Junge!" ], "ds184": [ - "Yes!" + "Ja!" ], "ds185": [ - "Yeah!" + "Ja!" ], "ds186": [ - "Hey, watch it!" + "Hey, pass auf!" ], "ds187": [ - "All right!" + "In Ordnung!" ], "ds188": [ - "Move over!" + "Aus dem Weg!" ], "ds189": [ - "Orange Lightning coming through!" + "Orangefarbener Blitz kommt durch!" ], "ds190": [ - "Rollin' with the homies!" + "Ab mit den Kumpels!" ], "ds191": [ - "You're mine!" + "Du gehörst mir!" ], "ds192": [ - "There they are!" + "Da sind sie!" ], "ds193": [ - "Hey! Watch where you're drivin'!" + "Hey! Pass auf, wo du hinfährst!" ], "ds194": [ - "How do I drive this thing?" + "Wie fahre ich dieses Ding?" ], "ds195": [ - "Yeah, that's right! I'm bad!" + "Ja, das stimmt! Ich bin böse!" ], "ds196": [ - "Outta my way!" + "Aus dem Weg!" ], "ds197": [ - "Outta my way!" + "Aus dem Weg!" ], "ds198": [ - "Move it or lose it, buddy!" + "Beweg dich oder verliere es, Kumpel!" ], "ds199": [ - "Mm... bye-bye!" + "Mm... tschüss!" ], "ds200": [ - "Last lap!" + "Letzte Runde!" ], "ds201": [ - "Come on, come on!" + "Komm schon, komm schon!" ], "ds202": [ - "Come on, come on, come on!" + "Komm schon Komm schon Komm schon!" ], "ds203": [ - "Pedal to the metal!" + "Vollgas!" ], "ds204": [ - "Ooooah, I gotta catch up!" + "Ooooah, ich muss aufholen!" ], "ds205": [ - "Turn and burn, baby!" + "Dreh dich um und brenne, Baby!" ], "ds206": [ - "Oooh, it's gonna be close!" + "Oooh, das wird knapp!" ], "ds207": [ - "Eat my dust, buddy!" + "Friss meinen Staub, Kumpel!" ], "ds208": [ - "Gotcha!" + "Erwischt!" ], "ds209": [ - "This is my track, grandma!" + "Das ist mein Track, Oma!" ], "ds210": [ - "Learn to drive!" + "Lern zu fahren!" ], "ds211": [ - "Turn, turn!" + "Dreh dich, dreh dich!" ], "ds212": [ - "Step on it!" + "Gib Gas!" ], "ds213": [ - "Oooh, I won, I won!" + "Oooh, ich habe gewonnen, ich habe gewonnen!" ], "ds214": [ - "Yeee, that's a good lap time." + "Jaaa, das ist eine gute Rundenzeit." ], "ds215": [ - "Oh, yeah! I'm rockin'!" + "Ich rocke!" ], "ds216": [ - "Another lap in the record book!" + "Eine weitere Runde im Rekordbuch!" ], "ds217": [ - "Take a good look at my tail!" + "Schau dir meinen Schwanz genau an!" ], "ds218": [ - "Wahoo!" + "Juhuu!" ], "ds219": [ - "Hey, fang boy, hurry up and get in,", - "we'll take you to Brutter!" + "Hey, Fangjunge, beeil dich und steig ein,", + "wir bringen dich zu Brutter!" ], "ds220": [ - "Here's your boy, Brutter! We're off to get another animal!" + "Hier ist dein Junge, Brutter! Wir holen uns ein weiteres Tier!" ], "ds221": [ - "Yo, animal lover, get your furry butt in the vehicle!" + "Yo, Tierfreund, beweg deinen pelzigen Hintern ins Auto!" ], "ds222": [ - "Here's another beast of burden!" + "Hier ist noch ein Lasttier!" ], "ds223": [ - "In the vehicle, buddy, we can save you!" + "Im Auto, Kumpel, wir können dich retten!" ], "ds224": [ - "Another Lurker freed." + "Ein weiterer Lurker freigelassen." ], "ds225": [ - "Let's move, eco breath! We gotta get you to Brutter." + "Auf geht’s, Öko-Atem! Wir müssen dich zu Brutter bringen." ], "ds226": [ - "Hey, Brutter! Look what the cat turkey dragged in." + "Hey, Brutter! Schau mal, was der Katzentruthahn angeschleppt hat." ], "ds227": [ - "Lookie what we found!" + "Schauen Sie, was wir gefunden haben!" ], "ds228": [ - "You recognize this monster?" + "Erkennst du dieses Monster?" ], "ds229": [ - "We did it! We saved them all!" + "Wir haben es geschafft! Wir haben sie alle gerettet!" ], "ds230": [ - "Catch the paddywagon, Jak!" + "Fang den Polizeiwagen, Jak!" ], "ds231": [ - "Crash the paddywagon!" + "Bring den Polizeiwagen zum Absturz!" ], "ds232": [ - "A little more damage and we got the sucker!" + "Noch ein bisschen mehr Schaden und wir haben den Trottel!" ], "ds233": [ - "He's smoking, Jak! Hit him again!" + "Er raucht, Jak! Schlag ihn nochmal!" ], "ds234": [ - "That caused some damage!" + "Das hat einigen Schaden angerichtet!" ], "ds235": [ - "One more like that and he's through!" + "Noch einmal so etwas und er ist durch!" ], "ds236": [ - "Find the next vehicle!" + "Finde das nächste Fahrzeug!" ], "ds237": [ - "Yes, we took it out!" + "Ja, wir haben es rausgenommen!" ], "ds238": [ - "Hunt and destroy, baby!" + "Jagen und zerstören, Baby!" ], "ds239": [ - "Hit it, hit it!" + "Schlag zu, schlag zu!" ], "ds240": [ - "Take it out!" + "Hol es raus!" ], "ds241": [ - "Pick up the Lurker, Jak!" + "Nimm den Lurker, Jak!" ], "ds242": [ - "Get the Lurker!" + "Hol dir den Lurker!" ], "ds243": [ - "We need to pick up that Lurker back there." + "Wir müssen diesen Lurker dort hinten abholen." ], "ds244": [ - "Usually, I don't like to be this close to Lurkers." + "Normalerweise bin ich nicht gern so nah an Lurkern dran." ], "ds245": [ - "Ehehe, you seem like a nice, uh... animal." + "Ehehe, du scheinst ein nettes, äh... Tier zu sein." ], "ds246": [ - "Easy, buddy. Don't bite me!" + "Immer mit der Ruhe, Kumpel. Beiß mich nicht!" ], "ds247": [ - "Hey, stop slobbering on me!" + "Hey, hör auf, mich vollzusabbern!" ], "ds248": [ - "He's recharging!" + "Er lädt neue Energie auf!" ], "ds249": [ - "Ooh, we got him good that time!" + "Oh, diesmal haben wir ihn gut erwischt!" ], "ds250": [ - "Yeah, now he's hurtin'!" + "Ja, jetzt tut er weh!" ], "ds251": [ - "Good shot, Jak!" + "Guter Schuss, Jak!" ], "ds252": [ - "Incoming!" + "Eingehend!" ], "ds253": [ - "Yeah, we got him!" + "Ja, wir haben ihn!" ], "ds254": [ - "Jak, hide behind the pillars when he shoots!" + "Jak, versteck dich hinter den Säulen, wenn er schießt!" ], "ds255": [ - "He's got the Precursor Stone!" + "Er hat den Vorläuferstein!" ], "ds256": [ - "Kick the bomb right at him, Jak!" + "Tritt die Bombe direkt auf ihn, Jak!" ], "ds257": [ - "That one hit him!" + "Das hat ihn getroffen!" ], "ds258": [ - "Look out!" + "Achtung!" ], "ds259": [ - "Jump the gap!" + "Überspringe die Lücke!" ], "ds260": [ - "Yeah, you hit him!" + "Ja, du hast ihn geschlagen!" ], "ds261": [ - "As if there wasn't enough of Krew already." + "Als ob es nicht schon genug von Krew gäbe." ], "ds262": [ - "Shoot 'em all, Jak! We'll sort 'em out later..." + "Erschieß sie alle, Jak! Wir kümmern uns später um sie ..." ], "ds263": [ - "There's the real Krew! Shoot him!" + "Da ist die echte Krew! Erschießt ihn!" ], "ds264": [ - "You got him!" + "Du hast ihn!" ], "ds265": [ - "Watch your back, Jak!" + "Pass auf dich auf, Jak!" ], "ds266": [ - "They're comin' again!" + "Sie kommen wieder!" ], "ds267": [ - "Now you've got us mad." + "Jetzt hast du uns wütend gemacht." ], "ds268": [ - "Good shot, Jak! The big man is hurtin' now." + "Guter Schuss, Jak! Dem großen Mann tut es jetzt weh." ], "ds269": [ - "And the challenger is down for the count!" + "Und der Herausforderer ist k.o.!" ], "ds270": [ - "Keep movin', baby! He's gonna shoot!" + "Bleib in Bewegung, Baby! Er wird schießen!" ], "ds271": [ - "Wooh, here come some Metal Heads!" + "Wooh, hier kommen ein paar Metalheads!" ], "ds272": [ - "Protect the kid!" + "Schützen Sie das Kind!" ], "ds273": [ - "Kill all the Metal Heads!" + "Töte alle Metalheads!" ], "ds274": [ - "More Metal Heads!" + "Mehr Metal-Heads!" ], "ds275": [ - "Shoot Kor's legs out, Jak!" + "Schieß Kor die Beine weg, Jak!" ], "ds276": [ - "He's down, Jak! Hit him in the head!" + "Er liegt am Boden, Jak! Schlag ihm auf den Kopf!" ], "ds277": [ - "Boot to the head, boot to the head!" + "Tritt gegen den Kopf, Tritt gegen den Kopf!" ], "ds278": [ - "I think we should hide somewhere!" + "Ich denke, wir sollten uns irgendwo verstecken!" ], "ds279": [ - "Take cover before he blows!" + "Gehen Sie in Deckung, bevor er explodiert!" ], "ds280": [ - "Yeah, you got him good that time!" + "Ja, dieses Mal hast du ihn gut erwischt!" ], "ds281": [ - "Oh, man, now he's angry!" + "Oh Mann, jetzt ist er sauer!" ], "ds282": [ - "Get him, Jak!" + "Schnapp ihn, Jak!" ], "ds283": [ - "He's gonna shoot!" + "Er wird schießen!" ], "ds284": [ - "Nice hit, partner!" + "Guter Treffer, Partner!" ], "ds285": [ - "That had to hurt him." + "Das musste ihm weh getan haben." ], "ds286": [ - "You messed with the wrong heroes, buddy!" + "Du hast dich mit den falschen Helden angelegt, Kumpel!" ], "ds287": [ - "Shoot him again, Jak!" + "Erschieß ihn noch einmal, Jak!" ], "ds288": [ - "Jak, we're taking a beating!" + "Jak, wir kriegen eine Tracht Prügel!" ], "ds289": [ - "Stay away from the Dark Eco!" + "Finger weg vom Dark Eco!" ], "ds302": [ - "We've almost got him, Jak!" + "Wir haben ihn fast, Jak!" ], "ds303": [ - "That's it! You did it!" + "Das ist es! Du hast es geschafft!" ], "ds305": [ - "Shoot the switch to change the coveyor belt's", - "direction!" + "Betätigen Sie den Schalter, um die Förderbandgröße zu ändern.", + "Richtung!" ], "ds306": [ - "You gotta shoot the switch, Jak!" + "Du musst den Schalter umlegen, Jak!" ], "ds307": [ - "Find the switch to change the conveyor's direction!" + "Finden Sie den Schalter, um die Richtung des Förderbands zu ändern!" ], "ds321": [ - "Take out the turrets!" + "Zerstört die Türme!" ], "ds322": [ - "Hit the turrets, Jak!" + "Triff die Türme, Jak!" ], "ds323": [ - "Doin' some damage!" + "Richte ein bisschen Schaden an!" ], "ds324": [ - "Get in the Titan Suit!" + "Schlüpfen Sie in den Titan-Anzug!" ], "ds325": [ - "Shoot that ship!" + "Erschieße das Schiff!" ], "ds326": [ - "Yeah, that ship's feelin' it now!" + "Ja, das Schiff spürt es jetzt!" ], "ds327": [ - "Ooh, direct hits." + "Oh, Volltreffer." ], "ds328": [ - "I think you hurt it that time!" + "Ich glaube, du hast es dieses Mal verletzt!" ], "ds329": [ - "The ship's goin' down! You did it, Jak!" + "Das Schiff geht unter! Du hast es geschafft, Jak!" ], "ds353": [ - "That must be the missile Torn wants us to blow up!" + "Das muss die Rakete sein, die Torn von uns in die Luft jagen will!" ], "ds354": [ - "Break those tubes in the center, Jak!" + "Zerbrich die Röhren in der Mitte, Jak!" ], "ds372": [ - "Gotta ride the JET-Board on this one, Jak!" + "Diesmal musst du auf dem JET-Board fahren, Jak!" ], "ds375": [ - "Look out for the ray!" + "Pass auf den Rochen auf!" ], "ds378": [ - "We gotta break all the support cables!" + "Wir müssen sämtliche Haltekabel zerreißen!" ], "ds379": [ - "Grind on the support bases to break the cables." + "Schleifen Sie an den Stützbasen, um die Kabel zu zerreißen." ], "ds394": [ - "Spider! Spider! Huff... huff... I hate spiders!" + "Spinne! Spinne! Schnau... schnau... ich hasse Spinnen!" ], "ds395": [ - "Gotta run, gotta run!" + "Ich muss los, ich muss los!" ], "ds398": [ - "The first beam!" + "Der erste Strahl!" ], "ds399": [ - "The second beam! The door's opening!" + "Der zweite Balken! Die Tür öffnet sich!" ], "ds404": [ - "There's Sig!" + "Da ist Sig!" ], "ds405": [ - "Get the blocks to go into the slots, Jak!" + "Bring die Blöcke in die Schlitze, Jak!" ], "ds406": [ - "Shoot or kick the blocks!" + "Schieße oder trete auf die Blöcke!" ], "ds407": [ - "You have to get the blocks in the slots faster!" + "Sie müssen die Blöcke schneller in die Schlitze bekommen!" ], "ds408": [ - "Run, Jak!" + "Lauf, wie!" ], "ds409": [ - "Keep moving!" + "Bleib in Bewegung!" ], "ds410": [ - "We gotta stay ahead of that thing!" + "Wir müssen diesem Ding immer einen Schritt voraus sein!" ], "ds439": [ - "Shoot all the Metal Head eggs, Jak!" + "Schieße auf alle Metalhead-Eier, Jak!" ], "ds440": [ - "We didn't get all those nasty eggs!" + "Wir haben nicht all diese ekligen Eier bekommen!" ], "ds441": [ - "We missed some Metal Head eggs!" + "Wir haben ein paar Metal-Head-Eier verpasst!" ], "ds461": [ - "We gotta jump onto the crate dangling from the crane!" + "Wir müssen auf die Kiste springen, die am Kran baumelt!" ], "ds462": [ - "Use your hoverboard on this path!" + "Benutzen Sie auf diesem Weg Ihr Hoverboard!" ], "ds463": [ - "You can grind to cross those pipes using your", - "hoverboard!" + "Sie können grinden, um diese Rohre zu überqueren, indem Sie Ihre", + "Hoverboard!" ], "ds464": [ - "Ride the half-pipe to the end!" + "Fahre die Halfpipe bis zum Ende!" ], "ds466": [ - "You gotta drop a bomb into each well, Jak!" + "Du musst in jeden Brunnen eine Bombe werfen, Jak!" ], "ds467": [ - "Use the ramp to get high enough to drop the bomb in!" + "Benutzen Sie die Rampe, um hoch genug zu kommen, um die Bombe hineinzuwerfen!" ], "ds468": [ - "Gotta jump higher!" + "Ich muss höher springen!" ], "ds469": [ - "Only a minute before we're toast, Jak!" + "Nur noch eine Minute, bis wir fertig sind, Jak!" ], "ds470": [ - "30 seconds left, then we go BOOM!" + "Noch 30 Sekunden, dann machen es BOOM!" ], "ds471": [ - "Ten seconds left, Jak!" + "Noch zehn Sekunden, Jak!" ], "ds472": [ - "That's one well down, five to go!" + "Einer ist geschafft, noch fünf!" ], "ds473": [ - "Two wells are history, four left!" + "Zwei Brunnen sind Geschichte, vier sind noch übrig!" ], "ds474": [ - "Three wells cut, only three to go!" + "Drei Brunnen gebohrt, nur noch drei übrig!" ], "ds475": [ - "That's the fourth well, two bad boys left!" + "Das ist der vierte Brunnen, noch zwei böse Jungs übrig!" ], "ds476": [ - "You got the fifth well, only one to go!" + "Sie haben den fünften Brunnen, nur noch einer fehlt!" ], "ds477": [ - "You got 'em all, Jak!" + "Du hast sie alle, Jak!" ], "ds478": [ - "The last well is up where we rescued Vin!" + "Der letzte Brunnen ist oben, wo wir Vin gerettet haben!" ], "ds479": [ - "Now he's vulnerable!" + "Jetzt ist er verwundbar!" ], "ds480": [ - "Take him out!" + "Schaltet ihn aus!" ], "ds481": [ - "Get him while he's vulnerable!" + "Schnappt ihn euch, solange er noch verwundbar ist!" ], "ds482": [ - "Here he comes..." + "Da kommt er..." ], "ds483": [ - "How's it feel to have your pants down, Baron?" + "Wie fühlt es sich an, die Hosen herunterzulassen, Baron?" ], "ds484": [ - "Shoot him, shoot him!" + "Erschießt ihn, erschießt ihn!" ], "ds485": [ - "Look out!" + "Achtung!" ], "ds487": [ - "Easy, Jak, we gotta get this guy to safety!" + "Ruhig, Jak, wir müssen den Kerl in Sicherheit bringen!" ], "ds488": [ - "We're takin' a lotta damage, buddy!" + "Wir erleiden eine Menge Schaden, Kumpel!" ], "ds489": [ - "We're gettin' our butts kicked!" + "Wir kriegen den Hintern versohlt!" ], "ds490": [ - "Maybe I should drive..." + "Vielleicht sollte ich fahren ..." ], "ds491": [ - "Let's go, wondergoon,", - "we'll take you to a safe place in the city!" + "Lass uns gehen, Wunderkerl,", + "wir bringen Sie an einen sicheren Ort in der Stadt!" ], "ds492": [ - "Okay, ride's over, out you go!" + "Okay, die Fahrt ist vorbei, raus mit dir!" ], "ds493": [ - "All aboard the Underground railroad!", - "Next stop: Your new safehouse!" + "Alle einsteigen in die Underground Railroad!", + "Nächster Halt: Ihr neues Safehouse!" ], "ds494": [ - "I believe this is your stop!" + "Ich glaube, das ist Ihre Haltestelle!" ], "ds495": [ - "Daxter's Freedom Fighter Taxi Service!", - "Hurry up, buddy, we ain't got all day." + "Daxters Freiheitskämpfer-Taxiservice!", + "Beeil dich, Kumpel, wir haben nicht den ganzen Tag Zeit." ], "ds496": [ - "Home free, baby!", - "Don't forget to tell Torn how well we did!" + "Zu Hause, Baby!", + "Vergiss nicht, Torn zu erzählen, wie gut wir waren!" ], "ds497": [ - "You looking for a lift, fighter boy?" + "Suchst du eine Mitfahrgelegenheit, Kämpferjunge?" ], "ds498": [ - "Okay, this is where you get off. So... get off." + "Okay, hier steigen Sie aus. Also... steigen Sie aus." ], "ds499": [ - "We did it, Jak!", - "We got all the fighters to the new safehouses!" + "Wir haben es geschafft, Jak!", + "Wir haben alle Kämpfer in die neuen Safehouses gebracht!" ], "ds500": [ - "Statues are becoming an endangered species around here." + "Statuen sind in unserer Gegend zunehmend vom Aussterben bedroht." ], "ds501": [ - "I got us a talkbox.", - "The city people use these things to communicate", - "with each other." + "Ich habe uns eine Talkbox besorgt.", + "Die Stadtbewohner nutzen diese Dinge zur Kommunikation", + "miteinander." ], "ds502": [ - "Let's go see Onin and her crazy monkey bird." + "Lass uns Onin und ihren verrückten Affenvogel besuchen." ], "ds503": [ - "I think we need to go back to the city, Jak." + "Ich glaube, wir müssen in die Stadt zurückkehren, Jak." ], "dsek001": [ - "Kid! Stay with him, Jak!" + "Junge! Bleib bei ihm, Jak!" ], "dsek002": [ - "Catch up to them, Jak!" + "Hol sie ein, Jak!" ], "dsek003": [ - "Where'd they go?!" + "Wo sind sie hin?!" ], "dsek004": [ - "There they go again!" + "Da sind sie schon wieder!" ], "dsek005": [ - "Uh oh, here comes trouble!" + "Oh oh, da gibt es Ärger!" ], "dsek006": [ - "More guards!?" + "Mehr Wachen!?" ], "dsek007": [ - "Kid, please! You're killin' me!" + "Junge, bitte! Du bringst mich um!" ], "dsek008": [ - "Here, poochie, poochie..." + "Hier, Hündchen, Hündchen..." ], "dsek009": [ - "There goes that crazy crocadog again...!" + "Da ist dieser verrückte Krokodilhund schon wieder ...!" ], "dsek010": [ - "Chase after the Kid!" + "Jage dem Kind hinterher!" ], "dsek011": [ - "Keep up with the Kid!" + "Bleiben Sie mit dem Kind am Ball!" ], "dsek012": [ - "Crocadog!" + "Krokodil!" ], "dsek013": [ - "Phew, finally... let's get these two to Kor!" + "Puh, endlich ... bringen wir diese beiden zu Kor!" ], "ero001": [ - "Out of my way!" + "Aus meinem Weg!" ], "ero002": [ - "I own this track!" + "Ich besitze diesen Titel!" ], "ero003": [ - "Give it up, eco freak!" + "Gib es auf, Ökofreak!" ], "ero004": [ - "Payback time." + "Zeit der Amortisation." ], "ero005": [ - "Let's make this interesting!" + "Lasst es uns interessant machen!" ], "ero006": [ - "Eat wall!" + "Friss die Wand!" ], "ero007": [ - "Time to die!" + "Zeit zu sterben!" ], "ero008": [ - "Move over!" + "Geh zur Seite!" ], "ero009": [ - "Catch me now, loser!" + "Fang mich jetzt, Verlierer!" ], "ero010": [ - "I'm too fast for you!" + "Ich bin zu schnell für dich!" ], "ero011": [ - "Now you're racing with the big boys!" + "Jetzt fährst du mit den Großen um die Wette!" ], "ero012": [ - "Here's one for the Baron." + "Hier ist eines für den Baron." ], "ero013": [ - "Take this!" + "Nimm das!" ], "ero014": [ - "You're making this too easy!" + "Du machst es dir zu einfach!" ], "ero015": [ - "Hahaha, bye bye!" + "Hahaha, tschüss!" ], "ero016": [ - "You want some?" + "Willst du etwas?" ], "ero017": [ - "Now you see why I never lose." + "Jetzt sehen Sie, warum ich nie verliere." ], "ero018": [ - "The crowd loves me!" + "Die Menge liebt mich!" ], "ero019": [ "Ahh!" ], "ero020": [ - "Here's some pain!" + "Hier ist etwas Schmerz!" ], "ero021": [ - "Try to erase these!" + "Versuchen Sie diese zu löschen!" ], "ero022": [ - "How's your reflexes?" + "Wie sind Ihre Reflexe?" ], "ero023": [ - "Too much for you?!" + "Zu viel für dich?!" ], "ero024": [ - "Had enough?" + "Hatte genug?" ], "ero025": [ - "Avoid this, smart-ass!" + "Lass das sein, du Klugscheißer!" ], "ero026": [ - "Say goodnight, eco freak!" + "Sag gute Nacht, Ökofreak!" ], "ero027": [ - "You can't beat me!" + "Du kannst mich nicht schlagen!" ], "ero028": [ - "I'd die before I let you win!" + "Ich würde sterben, bevor ich dich gewinnen lasse!" ], "ero029": [ - "This will be your last lap." + "Dies wird Ihre letzte Runde sein." ], "ero030": [ - "Crash and burn!" + "Absturz und Verbrennung!" ], "ero031": [ - "To the end!" + "Bis zum Ende!" ], "ero032": [ - "Last lap to live!" + "Letzte Runde zum Leben!" ], "ero033": [ - "Now we end this!" + "Jetzt machen wir dem ein Ende!" ], "ero034": [ - "You won't see the finish line!" + "Du wirst die Ziellinie nicht sehen!" ], "ero035": [ - "DIE!" + "STERBEN!" ], "ero036": [ - "Die!" + "Sterben!" ], "ero037": [ "Hahahaha!" ], "ero038": [ - "YEAH!" + "JA!" ], "ero039": [ "HA!" ], "ero040": [ - "NO!" + "NEIN!" ], "ero041": [ - "NOOOOO!" + "NEIN!" ], "ero042": [ - "AHHHHHH!" + "AHHHHH!" ], "ero043": [ - "Here we go." + "Auf geht's." ], "ero044": [ - "See you later." + "Bis später." ], "ero045": [ - "Fool! You cannot defeat me." + "Dummkopf! Du kannst mich nicht besiegen." ], "ero046": [ - "You missed a ring." + "Sie haben einen Ring verpasst." ], "ero047": [ - "This race is mine!" + "Dieses Rennen gehört mir!" ], "ero048": [ - "You can never be as fast as me!" + "So schnell wie ich kannst du nie sein!" ], "ero049": [ - "Keira wants a real man." + "Keira will einen richtigen Mann." ], "ero050": [ - "Bad luck, old chap." + "Pech gehabt, alter Junge." ], "ero051": [ - "Nice try." + "Netter Versuch." ], "ero052": [ - "Move over!" + "Geh zur Seite!" ], "ero053": [ - "Out of my way!" + "Aus meinem Weg!" ], "ero054": [ - "Coming through!" + "Durchkommen!" ], "ero055": [ - "Bye bye!" + "Tschüss!" ], "ero056": [ - "Here I come!" + "Hier komme ich!" ], "ero057": [ - "Get used to watching my back!" + "Gewöhne dich daran, auf mich aufzupassen!" ], "ero058": [ - "This is my city, eco freak." + "Das ist meine Stadt, Ökofreak." ], "ero059": [ - "Looking sloppy, Jak." + "Du siehst schlampig aus, Jak." ], "ero060": [ - "Give it up!" + "Es aufgeben!" ], "ero061": [ - "Not this time." + "Dieses Mal nicht." ], "ero062": [ - "Getting a bit nervous?" + "Werden Sie etwas nervös?" ], "ero063": [ - "Come back here!" + "Komm zurück!" ], "ero064": [ - "Move over, slowpoke!" + "Geh zur Seite, du Langweiler!" ], "ero065": [ - "This is where I beat you." + "Hier habe ich dich geschlagen." ], "ero066": [ - "Final stretch!" + "Zielgerade!" ], "ero067": [ - "It's over!" + "Es ist aus!" ], "ero068": [ - "I own this city." + "Diese Stadt gehört mir." ], "ero069": [ - "What? Where'd you come from?" + "Was? Wo kommst du her?" ], "ero070": [ - "You're just lucky." + "Du hast einfach Glück." ], "ero071": [ - "You can't handle the speed!" + "Du kommst mit der Geschwindigkeit nicht klar!" ], "ero072": [ - "Die, freak." + "Stirb, du Freak." ], "ero073": [ - "No!" + "NEIN!" ], "ero074": [ - "STOP!" + "STOPPEN!" ], "ero075": [ "Hahahaha!" @@ -3212,407 +3212,407 @@ "HAHA!" ], "ero077": [ - "Ahhh!" + "Ähhh!" ], "ero078": [ - "Ough!" + "Autsch!" ], "ero079": [ - "Oof!" + "Uff!" ], "ero080": [ - "Beat it, freak!" + "Hau ab, du Freak!" ], "ero081": [ - "Care to get back in the chair?" + "Möchten Sie wieder auf den Stuhl zurückkehren?" ], "ero082": [ - "This race was too easy." + "Dieses Rennen war zu einfach." ], "ero083": [ - "It was easier than I thought to beat you." + "Es war einfacher, dich zu besiegen, als ich dachte." ], "ero084": [ - "Not even close, Keira's betting on the wrong man." + "Nicht einmal annähernd, Keira setzt auf den falschen Mann." ], "ero085": [ - "Loser! You disgust me!" + "Verlierer! Du ekelst mich an!" ], "ero086": [ - "You see Jak, I win, and I get what I want.", - "Someday I will be Baron, then the city will really pay!" + "Siehst du, Jak, ich gewinne und bekomme, was ich will.", + "Eines Tages werde ich Baron sein, dann wird die Stadt es wirklich bezahlen!" ], "ero087": [ - "I should have known you'd be no match." + "Ich hätte wissen müssen, dass Sie ihm nicht gewachsen wären." ], "ero088": [ - "I win, Keira's going to love me!" + "Ich gewinne, Keira wird mich lieben!" ], "ero089": [ - "Maybe you should go back to wherever you came from." + "Vielleicht sollten Sie dorthin zurückkehren, wo Sie hergekommen sind." ], "ero090": [ - "I'll get a victory kiss from Keira later." + "Von Keira bekomme ich später einen Siegeskuss." ], "ero091": [ - "Again I prove my superiority." + "Wieder einmal beweise ich meine Überlegenheit." ], "ero092": [ - "You see? You are no match for me." + "Siehst du? Du bist mir nicht gewachsen." ], "ero093": [ - "Too bad, I win!" + "Schade, ich gewinne!" ], "ero094": [ - "Hahahaha, pathetic insect, I win!" + "Hahahaha, erbärmliches Insekt, ich gewinne!" ], "ero095": [ - "You can never defeat me!" + "Du kannst mich niemals besiegen!" ], "ero096": [ "Ahhh!...ahh." ], "ero097": [ - "Ugh!" + "Pfui!" ], "ero098": [ "Ughhh!" ], "ero099": [ - "Dahh!" + "Ja!" ], "ero100": [ - "Yaughh!" + "Ja!" ], "ero101": [ "AUGHH!" ], "ero102": [ - "OW!" + "AUA!" ], "ero103": [ "DAHHH!" ], "ero104": [ - "DAUGHH!" + "TOCHTERH!" ], "erol001": [ - "I'm looking for you, eco freak,", - "and when I find you, you'll wish you died in prison." + "Ich suche dich, Ökofreak,", + "und wenn ich dich finde, wirst du dir wünschen, im Gefängnis gestorben zu sein." ], "erol002": [ - "This is Erol. Looks like you're running out of friends.", - "We've arrested them all and thrown them into your", - "favorite prison. By the way, that blonde girl Tess", - "screamed so delightfully when she was arrested.", - "I can't wait for her turn in the chair.", + "Das ist Erol. Sieht aus, als ob dir die Freunde ausgehen.", + "Wir haben sie alle verhaftet und in eure", + "Lieblingsgefängnis. Übrigens, das blonde Mädchen Tess", + "schrie so entzückend, als sie verhaftet wurde.", + "Ich kann es kaum erwarten, bis sie an der Reihe ist, den Vorsitz zu übernehmen.", "Hahahahaha...." ], "erol003": [ - "This is Erol. Just remember, the only reason I'm letting you", - "walk is so I can face you in the championship race!" + "Das ist Erol. Aber denk daran, der einzige Grund, warum ich dich hier lasse,", + "zu Fuß ist, damit ich im Meisterschaftsrennen gegen Sie antreten kann!" ], "hal001": [ - "Quiet! Here comes pretty boy." + "Ruhe! Hier kommt der Hübsche." ], "hal002": [ - "'Bout time you showed up. Okay, let's do this." + "Es wurde Zeit, dass du auftauchst. Okay, lass es uns tun." ], "hal003": [ - "Krew said you'll protect us all the way to the statue." + "Krew sagte, Sie würden uns den ganzen Weg bis zur Statue beschützen." ], "hal004": [ - "We go down!" + "Wir gehen runter!" ], "hal006": [ - "This way!" + "Hier entlang!" ], "hal007": [ - "AHH! It's a Metal Head! Shoot it, shoot it!" + "AHH! Es ist ein Metalhead! Erschießt ihn, erschießt ihn!" ], "hal008": [ - "Stay with us!" + "Bleib bei uns!" ], "hal009": [ - "Man, Krew's gonna be pissed if you mess this up." + "Mann, die Krew wird sauer sein, wenn ihr das vermasselt." ], "hal010": [ - "Don't leave us to die!" + "Lass uns nicht sterben!" ], "hal011": [ - "You ditch us and Krew's gonna mess you up!" + "Wenn Sie uns im Stich lassen, wird Krew Sie fertigmachen!" ], "hal012": [ - "We need to stay together." + "Wir müssen zusammenbleiben." ], "hal013": [ - "I thought this guy was supposed to be protecting us!" + "Ich dachte, dieser Typ sollte uns beschützen!" ], "hal014": [ - "That's it! We're calling the mission off,", - "we don't go until you're serious." + "Das ist es! Wir brechen die Mission ab,", + "wir gehen erst, wenn du es ernst meinst." ], "hal015": [ - "I'm not getting killed because of this loser,", - "this mission is over." + "Ich werde wegen diesem Verlierer nicht getötet,", + "diese Mission ist vorbei." ], "hal019": [ - "Let's go back before we all get killed." + "Lasst uns zurückgehen, bevor wir alle getötet werden." ], "hal020": [ - "Ugh, this place stinks." + "Pfui, hier stinkt es." ], "hal021": [ - "I got a bad feeling about this place." + "Ich habe ein schlechtes Gefühl bei diesem Ort." ], "hal022": [ - "Uh oh, I think I wet myself." + "Oh oh, ich glaube, ich habe mir eingenässt." ], "hal023": [ - "No! Please!" + "Nein, bitte!" ], "hal024": [ - "I wanna go home." + "Ich möchte nach Hause gehen." ], "hal025": [ - "Uhh, I'm hearing things." + "Ähm, ich höre Dinge." ], "hal026": [ - "Let's go back." + "Lass uns zurück gehen." ], "hal027": [ - "Move your butts, or I'll move 'em for ya!" + "Bewegt euren Hintern, oder ich bewege ihn für euch!" ], "hal028": [ - "This job beats being a garbage man." + "Dieser Job ist besser als Müllmann." ], "hal029": [ - "Ain't the smell of sulphur grand?" + "Ist der Geruch von Schwefel nicht großartig?" ], "hal030": [ - "Cover your ears!" + "Halten Sie sich die Ohren zu!" ], "hal031": [ - "I love this job." + "Ich liebe diesen Job." ], "hal032": [ - "Great, now we're trapped in this slime pit!" + "Großartig, jetzt sind wir in dieser Schleimgrube gefangen!" ], "hal033": [ - "Shoot, baby, shoot!" + "Schieß, Baby, schieß!" ], "hal034": [ - "Ahh! The ceiling's crawling!" + "Ahh! Die Decke kriecht!" ], "hal035": [ - "I can't get away!" + "Ich kann nicht weg!" ], "hal036": [ - "There's one coming right at me!" + "Da kommt einer direkt auf mich zu!" ], "hal037": [ - "It sees me!" + "Es sieht mich!" ], "hal038": [ - "Ahh! Stay away!" + "Ahh! Bleib weg!" ], "hal039": [ - "It's hitting me!" + "Es trifft mich!" ], "hal040": [ - "Gahh, I'm gonna die here!" + "Gahh, ich werde hier sterben!" ], "hal041": [ - "I'm getting zapped!" + "Ich bekomme einen Schlag!" ], "hal042": [ - "This'll be the end of me!" + "Das wird mein Ende sein!" ], "hal043": [ - "Help me! I've got eight kids to feed!" + "Helfen Sie mir! Ich muss acht Kinder ernähren!" ], "hal044": [ - "Nice work, those were some nasty Metal Heads." + "Gute Arbeit, das waren ein paar fiese Metalheads." ], "hal045": [ - "There you are, why don't you make yourself useful?" + "Da bist du ja, warum machst du dich nicht nützlich?" ], "hal046": [ - "Keep moving!" + "Bleib in Bewegung!" ], "hal047": [ - "On we go, we're not getting any younger." + "Weiter geht‘s, wir werden nicht jünger." ], "hal048": [ - "Ahh! They're crawling down the walls!" + "Ahh! Sie krabbeln die Wände runter!" ], "hal049": [ - "Way to go, this is where I come in." + "Gut gemacht, hier komme ich ins Spiel." ], "hal050": [ - "You mean cover your ass! Fire in the hole!" + "Du meinst: Rette deinen Arsch! Feuer ins Loch!" ], "hal051": [ - "You better keep your head down, sugar." + "Behalte lieber den Kopf unten, Süße." ], "hal052": [ - "Your bad breath, let's move." + "Dein Mundgeruch, lass uns gehen." ], "hal053": [ - "That straightened your hair, huh?", - "Hehe, next time you'll listen to me. Okay, let's move." + "Das hat dein Haar geglättet, oder?", + "Hehe, nächstes Mal hörst du auf mich. Okay, los gehts." ], "hal054": [ - "Oof, that had to hurt.", - "I told you to keep back, but no one ever listens to Jinx." + "Uff, das muss wehgetan haben.", + "Ich habe dir gesagt, du sollst dich zurückhalten, aber auf Jinx hört nie jemand." ], "hal055": [ - "More of those monsters!" + "Mehr von diesen Monstern!" ], "hal056": [ - "So what, we got a dream team here. Do your stuff, Jak!" + "Na und, wir haben hier ein Dreamteam. Mach dein Ding, Jak!" ], "hal057": [ - "Jak! Get your butt up here and do your thing." + "Jak! Beweg deinen Hintern hier rauf und mach dein Ding." ], "hal058": [ - "Take 'em out, blue boy." + "Erledige sie, blauer Junge." ], "hal059": [ - "You're pretty handy with that iron, blondie." + "Du bist ziemlich geschickt mit dem Bügeleisen, Blondie." ], "hal060": [ - "Shut up, Mog." + "Halt die Klappe, Mog." ], "hal061": [ - "Here they come again!" + "Da kommen sie wieder!" ], "hal062": [ - "Get up here and earn your keep!" + "Kommen Sie hierher und verdienen Sie Ihren Lebensunterhalt!" ], "hal063": [ - "Krew was right about you. You got the magic, man." + "Krew hatte recht mit dir. Du hast die Magie, Mann." ], "hal064": [ - "Nice fighting, man, I'm beginning to like you." + "Guter Kampf, Mann, ich fange an, dich zu mögen." ], "hal065": [ - "Okay... that doesn't look good. Jak, you're up!" + "Okay... das sieht nicht gut aus. Jak, du bist dran!" ], "hal066": [ - "Wow! Beams of death!", - "I'm staying right here 'til you do something about that." + "Wow! Strahlen des Todes!", + "Ich bleibe hier, bis Sie etwas dagegen unternehmen." ], "hal067": [ - "Uhhh, Jak. I think you're the man for this job." + "Ähhh, Jak. Ich glaube, du bist der richtige Mann für diesen Job." ], "hal068": [ - "Jump the beams, Jak." + "Spring über die Balken, Jak." ], "hal069": [ - "Nice moves." + "Nette Bewegungen." ], "hal070": [ - "Yeah... you wish, tubby." + "Ja, das wünschst du dir, Dickerchen." ], "hal071": [ - "We're staying put 'til you take out those Metal Heads." + "Wir bleiben hier, bis Sie diese Metalheads erledigt haben." ], "hal072": [ - "Sweet as a ballerina, hehehehe..." + "Süß wie eine Ballerina, hehehehe …" ], "hal073": [ - "Knock 'em silly, Jak!" + "Mach sie fertig, Jak!" ], "hal074": [ - "This one's gonna be loud!" + "Das wird laut!" ], "hal075": [ - "This is too easy." + "Das ist zu einfach." ], "hal080": [ - "We ain't moving, 'til you kill 'em all!" + "Wir bewegen uns nicht, bis Sie sie alle getötet haben!" ], "hal081": [ - "OK, let's get out of here before more come back." + "OK, lass uns hier verschwinden, bevor noch mehr zurückkommen." ], "hal082": [ - "You're earning your dough today. Let's finish this!" + "Sie verdienen heute Ihr Geld. Lassen Sie uns das zu Ende bringen!" ], "hal083": [ - "I'm impressed, Jak. I'll put in a good word with the boss." + "Ich bin beeindruckt, Jak. Ich werde beim Chef ein gutes Wort einlegen." ], "hal084": [ - "Yeah, do it, Jinx." + "Ja, tu es, Jinx." ], "hal085": [ - "Man, Jinx, what'd you put in those boomsticks?" + "Mann, Jinx, was hast du in diese Sprengsätze gesteckt?" ], "hal086": [ - "Look at him go." + "Schau ihm beim Gehen zu." ], "hal087": [ - "I could jump like that." + "Ich könnte so springen." ], "hal088": [ - "Get away from me, you crazy monster!" + "Geh weg von mir, du verrücktes Monster!" ], "hal090": [ - "This is where I come in, cover your ears." + "Hier komme ich ins Spiel: Halten Sie sich die Ohren zu." ], "hal091": [ - "Fire in the hole!" + "Feuer im Loch!" ], "hal092": [ - "And on we go." + "Und weiter geht’s." ], "hal093": [ - "Please, allow me." + "Erlauben Sie mir bitte." ], "hal094": [ - "One unclogged sewer, comin' up." + "Ein verstopfter Abwasserkanal ist im Anmarsch." ], "hal095": [ - "This is my boomshtick!" + "Das ist mein Boomshtick!" ], "hal096": [ - "Boom, baby!" + "Boom, Baby!" ], "hal097": [ - "We're clear, let's move." + "Wir sind im Reinen, los geht’s." ], "hal101": [ - "Ahh! That's gonna leave a mark." + "Ahh! Das wird Spuren hinterlassen." ], "hal102": [ - "Die! A little help would be good!" + "Stirb! Ein bisschen Hilfe wäre gut!" ], "hal103": [ - "Watch it, pretty boy, or I'll rearrange your face." + "Pass auf, Hübscher, sonst verändere ich dein Gesicht." ], "hal104": [ - "You got an itchy trigger finger." + "Ihr Abzugsfinger juckt." ], "hal107": [ - "Piece of cake." + "Stück Kuchen." ], "hal108": [ - "Get over here, Jak!" + "Komm her, Jak!" ], "hal109": [ - "Stay close, pretty boy!" + "Bleib in deiner Nähe, hübscher Junge!" ], "hal111": [ - "Keep with us, tough guy!" + "Bleib bei uns, harter Kerl!" ], "hal112": [ - "You're in the way, Jak, move!" + "Du bist im Weg, Jak, beweg dich!" ], "hal113": [ - "I wouldn't stand there if I were you!" + "Ich würde an deiner Stelle nicht da stehen!" ], "hal114": [ - "This is gonna be loud." + "Das wird laut." ], "hal115": [ "Oh!" @@ -3624,134 +3624,134 @@ "Hey!" ], "hal118": [ - "It's a trap!" + "Es ist eine Falle!" ], "hal119": [ - "Yeah, why did we sign up for this?" + "Ja, warum haben wir uns dafür angemeldet?" ], "hal120": [ - "I got 30 keys of high explosives strapped to my back...", - "Great..." + "Ich habe 30 Schlüssel mit hochexplosivem Sprengstoff auf meinem Rücken befestigt ...", + "Großartig..." ], "hal121": [ - "Just shut your whiny traps and keep moving." + "Halt einfach deine Klappe und mach weiter." ], "hal122": [ - "Uh, do we have to?" + "Äh, müssen wir?" ], "hal123": [ - "Uhh, did you hear that?" + "Ähh, hast du das gehört?" ], "hal124": [ - "We are so dead, man." + "Wir sind so tot, Mann." ], "hal125": [ - "Shut up! I'll go ahead and check it out..." + "Halt die Klappe! Ich werde es mir gleich ansehen ..." ], "hal126": [ - "Man, that thing's ugly." + "Mann, das Ding ist hässlich." ], "hal127": [ - "Get him, man, before he gets us." + "Schnapp ihn dir, Mann, bevor er uns erwischt." ], "hal128": [ - "They're coming up from behind, too!" + "Sie kommen auch von hinten!" ], "hal129": [ - "Jak's my hero." + "Wie geht es meinem Helden?" ], "hal130": [ - "Sounds like I got gas." + "Klingt, als hätte ich Blähungen." ], "hal131": [ - "I hate Krew." + "Ich hasse Krew." ], "hal132": [ - "I'm sure not going back that way!" + "Ich werde auf keinen Fall wieder dorthin zurückkehren!" ], "hal133": [ - "It's coming for me!" + "Es kommt auf mich zu!" ], "hal134": [ - "I think it wants me!" + "Ich glaube, es will mich!" ], "hal135": [ - "Help me, Jak!" + "Hilf mir, Jak!" ], "hal136": [ - "I'm gonna die!" + "Ich werde sterben!" ], "hal137": [ - "It got me!" + "Es hat mich erwischt!" ], "hal138": [ - "Jak! Save me!" + "Wie! Rette mich!" ], "hal139": [ - "Ughh! It got me!" + "Pfui! Es hat mich erwischt!" ], "hal140": [ - "Oughh! That beam smarts." + "Ohhh! Dieser Strahl tut weh." ], "hal141": [ - "I've been shot!" + "Auf mich wurde geschossen!" ], "hal142": [ - "I'm hit!" + "Ich bin getroffen!" ], "hal143": [ - "Ughh!" + "Pfui!" ], "hal144": [ - "Ughh! Help me!" + "Pfui! Hilf mir!" ], "hal145": [ - "Hey man, watch it!" + "Hey Mann, pass auf!" ], "hal146": [ - "Ohh, hit me again and I'll pound you!" + "Ohh, schlag mich noch mal und ich werde dich vögeln!" ], "hal147": [ - "Nobody's my friend..." + "Niemand ist mein Freund ..." ], "hal148": [ - "Oof!" + "Uff!" ], "hal149": [ - "Uh!" + "Äh!" ], "hal150": [ "Ahh!" ], "hal151": [ - "He's got me!" + "Er hat mich!" ], "hal152": [ - "Gahh!! Not again!" + "Gah!! Nicht noch einmal!" ], "hal153": [ - "I'm dying!" + "Ich sterbe!" ], "hal154": [ - "Any more like that, then I'm history." + "Wenn das noch öfter passiert, bin ich Geschichte." ], "hal155": [ - "I'm getting shot!" + "Ich werde erschossen!" ], "hal156": [ - "Sure! Why don't you kill me too?" + "Sicher! Warum tötest du mich nicht auch?" ], "hal157": [ - "Check your targets, wimp boy!" + "Überprüfe deine Ziele, du Weichei!" ], "hal158": [ - "Shoot the shine-heads, not me!" + "Erschießt die Blödmänner, nicht mich!" ], "hal159": [ "Ahh!" ], "hal161": [ - "Ugh!" + "Pfui!" ], "hal162": [ "Oh!" @@ -3763,76 +3763,76 @@ "Ah!" ], "hal165": [ - "Look out!" + "Achtung!" ], "hal166": [ - "We're not doing this with a rookie, I'm calling this off!" + "Wir machen das nicht mit einem Anfänger, ich sage ab!" ], "hal167": [ - "That's it, we're done! Come back when you're serious." + "Das war's, wir sind fertig! Komm wieder, wenn du es ernst meinst." ], "hal168": [ - "I'm cornered!" + "Ich bin in die Enge getrieben!" ], "hal169": [ - "It's gonna shoot me!" + "Es wird mich erschießen!" ], "hal170": [ - "Jak! Do something!" + "Jak! Tu etwas!" ], "hal171": [ - "Ahh! It got me!" + "Ahh! Es hat mich erwischt!" ], "hal172": [ - "No no no! Help!" + "Nein, nein, nein! Hilfe!" ], "hal173": [ - "They're getting too close, Jak!" + "Sie kommen zu nahe, Jak!" ], "hal174": [ - "It's gonna get me!" + "Das wird mich kriegen!" ], "hal175": [ - "I'm getting killed here!" + "Ich werde hier getötet!" ], "hal176": [ - "Jak! I'm about to be metal meat!" + "Jak! Ich werde bald zu Metallfleisch!" ], "hal177": [ - "Aghh! That beam burns!" + "Aghh! Dieser Strahl brennt!" ], "hal178": [ - "It's shooting me!" + "Es erschießt mich!" ], "hal179": [ - "Watch out for the beam!" + "Pass auf den Strahl auf!" ], "hal180": [ - "I'm shot!" + "Ich bin erschossen!" ], "hal181": [ - "I'm trapped!" + "Ich bin gefangen!" ], "hal182": [ - "Get back... I'm gonna detonate this one remotely." + "Gehen Sie zurück ... Ich werde dieses Ding per Fernzugriff zünden." ], "hal183": [ - "He-hah!" + "He-ha!" ], "hal184": [ - "Alright!" + "In Ordnung!" ], "hal185": [ - "Let's go!" + "Lass uns gehen!" ], "hal186": [ - "Move it!" + "Bewege es!" ], "hal187": [ - "That's a lot of Metal Heads." + "Das sind eine Menge Metalheads." ], "hal188": [ - "Oof!" + "Uff!" ], "hal189": [ "Daghh!" @@ -3841,28 +3841,28 @@ "Oughh..." ], "hal191": [ - "Krew's dead for getting me into this!" + "Krew ist tot, weil sie mich da reingezogen hat!" ], "jak001": [ - "Alright!" + "In Ordnung!" ], "jak002": [ - "Yeah!" + "Ja!" ], "jak003": [ - "Wooo!" + "Whoo!" ], "jak004": [ - "Here we go!" + "Auf geht's!" ], "jak005": [ - "Nice!" + "Hübsch!" ], "jak006": [ - "Rock 'n roll!" + "Rock 'n' Roll!" ], "jak007": [ - "Right on!" + "Direkt am!" ], "jak008": [ "Cool!" @@ -3871,378 +3871,378 @@ "Cool!" ], "jak010": [ - "Oh, yeah!" + "Oh ja!" ], "jak011": [ - "Comin' through!" + "Komme durch!" ], "jak012": [ - "Look out!" + "Achtung!" ], "jak013": [ - "Last lap!" + "Letzte Runde!" ], "jak014": [ - "Watch out!" + "Achtung!" ], "jak015": [ - "Whoa!" + "Boah!" ], "jak016": [ - "Whoa!" + "Boah!" ], "jak017": [ - "Hold on, Dax!" + "Warte, Dax!" ], "jak018": [ - "Hang on, Dax!" + "Warte, Dax!" ], "jak020": [ - "Whoa... boy that was close." + "Boah... Junge, das war knapp." ], "jak021": [ - "No!" + "NEIN!" ], "jak022": [ - "Not this time." + "Dieses Mal nicht." ], "jak023": [ "Huargh!" ], "jak024": [ - "Lean, baby, lean!" + "Schlank, Baby, schlank!" ], "jak025": [ - "Catch him on the inside!" + "Fang ihn drinnen!" ], "jak026": [ - "This is MY show!" + "Das ist MEINE Show!" ], "jak027": [ - "Haha, we got him!" + "Haha, wir haben ihn!" ], "jak028": [ - "Watch out!" + "Achtung!" ], "jak029": [ - "You're dead, Erol!" + "Du bist tot, Erol!" ], "jak030": [ - "See ya!" + "Tschüss!" ], "jak031": [ "Haha!" ], "jak032": [ - "Wooo!" + "Whoo!" ], "jak033": [ - "Last lap!" + "Letzte Runde!" ], "jak034": [ - "Later." + "Später." ], "jak035": [ - "We gotta catch up!" + "Wir müssen aufholen!" ], "jak036": [ - "There he is!" + "Da ist er!" ], "jak037": [ - "Come on, baby, show me what you got!" + "Komm schon, Baby, zeig mir, was du hast!" ], "jak038": [ - "Here we go!" + "Auf geht's!" ], "jak039": [ "Urgh!" ], "jak040": [ - "I'll take this." + "Ich nehme das." ], "jak041": [ - "I need to borrow this." + "Das muss ich mir ausleihen." ], "jak042": [ - "Move over, buddy!" + "Geh zur Seite, Kumpel!" ], "jak044": [ - "Outta the vehicle!" + "Raus aus dem Auto!" ], "jak045": [ - "Outta my way, buddy!" + "Aus dem Weg, Kumpel!" ], "jak046": [ - "Thanks for the lift." + "Danke für die Mitfahrgelegenheit." ], "jak047": [ - "Mind if I drive?" + "Stört es Sie, wenn ich fahre?" ], "jak048": [ - "I like the color of this vehicle." + "Mir gefällt die Farbe dieses Fahrzeugs." ], "jak049": [ - "Mine now." + "Jetzt meins." ], "jak050": [ - "'Scuse me, but I need this." + "Entschuldigen Sie, aber ich brauche das." ], "jak051": [ - "Take a hike, buddy!" + "Mach dich vom Acker, Kumpel!" ], "jak052": [ - "Try walking." + "Versuchen Sie es mit Gehen." ], "jak053": [ - "Sorry, but I'm in a hurry!" + "Entschuldigen Sie, aber ich bin in Eile!" ], "jak054": [ - "Gotta go!" + "Muss gehen!" ], "jak055": [ - "Get another vehicle!" + "Holen Sie sich ein anderes Fahrzeug!" ], "jak056": [ - "Road hog!" + "Verkehrsrowdy!" ], "jak057": [ - "Brake yourself!" + "Bremse selbst!" ], "jak059": [ - "Haha, you want some?" + "Haha, willst du auch was?" ], "jak060": [ - "Get some!" + "Bekommen!" ], "jak061": [ - "Yeah, feel it!" + "Ja, fühle es!" ], "jak062": [ - "Die!" + "Sterben!" ], "jak063": [ - "Badass comin' through!" + "Der Badass kommt durch!" ], "jak064": [ - "Be afraid. Be very afraid." + "Hab Angst, hab sehr viel Angst." ], "jak065": [ - "Oooh, that's gotta hurt." + "Oooh, das muss weh tun." ], "jak066": [ - "This is payback." + "Das ist Vergeltung." ], "jak067": [ "DIE, Praxis!" ], "jak068": [ - "You're finished, Kor!" + "Du bist erledigt, Kor!" ], "jak069": [ - "This is my town, Kor!" + "Das ist meine Stadt, Kor!" ], "jak070": [ - "Surprise... you can't kill me in my dark form." + "Überraschung ... du kannst mich in meiner dunklen Gestalt nicht töten." ], "jak071": [ - "Now you pay!" + "Jetzt zahlst du!" ], "jak072": [ - "Go back to the past, Kor! 'Cause you're history." + "Geh zurück in die Vergangenheit, Kor! Denn du bist Geschichte." ], "jak073": [ - "I win." + "Ich gewinne." ], "jak074": [ - "You should have killed me when you had the chance, Praxis." + "Sie hätten mich töten sollen, als Sie die Chance dazu hatten, Praxis." ], "jak075": [ - "Daxter, just shut up and watch my back." + "Daxter, halt einfach die Klappe und pass auf mich auf." ], "jak076": [ - "Whatever, Daxter." + "Was auch immer, Daxter." ], "jak077": [ - "Will you stop yappin'?" + "Hörst du auf zu plappern?" ], "jak078": [ - "When you got smaller, so did your brain." + "Als Sie kleiner wurden, wurde auch Ihr Gehirn kleiner." ], "jak079": [ - "You're on MY shoulder. YOU'RE the sidekick." + "Du stehst auf MEINER Schulter. DU bist mein Kumpel." ], "jak080": [ - "As long as you're on MY shoulder, keep your mouth shut." + "Solange du auf MEINER Schulter sitzt, halt den Mund." ], "jd001": [ - "Hey, kid! Wait! Come back!", - "We gotta protect him!" + "Hey, Junge! Warte! Komm zurück!", + "Wir müssen ihn beschützen!" ], "jk001": [ - "Wait, KID!" + "Warte, KIND!" ], "jk002": [ - "There he goes!" + "Da geht er!" ], "jk003": [ - "Leave him alone!" + "Lass ihn in Ruhe!" ], "jk004": [ - "KID!" + "KIND!" ], "jk005": [ - "Pick on someone your own size!" + "Suchen Sie sich jemanden Ihrer Größe aus!" ], "jk006": [ - "Kid, look out!" + "Junge, pass auf!" ], "jk007": [ - "How do YOU like it when somebody fights back?" + "Wie gefällt es IHNEN, wenn sich jemand wehrt?" ], "jk008": [ - "Leave the kid alone!" + "Lass das Kind in Ruhe!" ], "jk009": [ - "He's just a kid!" + "Er ist nur ein Kind!" ], "jk010": [ - "Keep away from him!" + "Halte dich von ihm fern!" ], "jk011": [ - "Now you've pissed me off!" + "Jetzt hast du mich aber wütend gemacht!" ], "jk012": [ - "Eat this!" + "Friss das!" ], "jk013": [ - "Back off!" + "Zurück!" ], "jk014": [ - "We gotta get in the vehicle with the Kid!" + "Wir müssen mit dem Kind ins Auto steigen!" ], "jk015": [ - "Hold on!" + "Festhalten!" ], "jk016": [ - "Keep your head down, Kid!" + "Kopf unten, Junge!" ], "jk017": [ - "Stick with me, Kid, and you'll be safe." + "Bleib bei mir, Junge, und du bist in Sicherheit." ], "jk018": [ - "Stay with me, Kid!" + "Bleib bei mir, Junge!" ], "jk019": [ - "Get in the vehicle, Dax!" + "Steig ins Auto, Dax!" ], "kei001": [ - "You can get on and off the JET-Board at any time." + "Das Auf- und Absteigen auf das JET-Board ist jederzeit möglich." ], "kei002": [ - "You can jump on your JET-Board!" + "Springen Sie auf Ihr JET-Board!" ], "kei003": [ - "Jump up on that ledge." + "Springen Sie auf den Felsvorsprung." ], "kei004": [ - "Try jumping up on that crate." + "Versuchen Sie, auf die Kiste zu springen." ], "kei005": [ - "Jump over that obstacle." + "Springe über das Hindernis." ], "kei006": [ - "You can get a higher jump by ducking before you jump!" + "Sie können höher springen, indem Sie sich vor dem Sprung ducken!" ], "kei007": [ - "Try doing a duck jump over that obstacle." + "Versuchen Sie, mit einem Entensprung über dieses Hindernis zu springen." ], "kei008": [ - "Jump and jump again a little after you've landed", - "for an even bigger launch!" + "Springe und springe noch einmal kurz, nachdem du gelandet bist", + "für einen noch größeren Start!" ], "kei009": [ - "Try getting up on that higher ledge with a boost jump!" + "Versuchen Sie, mit einem Boost-Sprung auf den höheren Felsvorsprung zu gelangen!" ], "kei010": [ - "You can spin in the air!" + "Sie können sich in der Luft drehen!" ], "kei011": [ - "Land a perfect 360 for a speed boost!" + "Landen Sie eine perfekte 360 ​​für einen Geschwindigkeitsschub!" ], "kei012": [ - "Nice spin!" + "Schöner Spin!" ], "kei013": [ - "You can land on a rail and grind across it." + "Sie können auf einer Schiene landen und darüber schleifen." ], "kei014": [ - "Try grinding on that rail." + "Versuchen Sie, auf dieser Schiene zu schleifen." ], "kei016": [ - "You can do flips while you jump!" + "Sie können beim Springen Saltos machen!" ], "kei017": [ - "You can also do tricks for fun." + "Sie können auch zum Spaß Tricks machen." ], "kei018": [ - "Try to put a number of moves together to get points." + "Versuchen Sie, mehrere Züge aneinanderzureihen, um Punkte zu bekommen." ], "kei019": [ - "Get enough points to win the challenge!" + "Sammeln Sie genügend Punkte, um die Herausforderung zu gewinnen!" ], "kei020": [ - "Not enough points! Work on your moves." + "Nicht genug Punkte! Arbeite an deinen Moves." ], "kei021": [ - "Good job!" + "Gute Arbeit!" ], "kei022": [ - "Close, but not quite there." + "Nah dran, aber nicht ganz da." ], "kei023": [ - "Try again." + "Versuchen Sie es erneut." ], "kei024": [ - "A little more work and you just might win!" + "Ein bisschen mehr Arbeit und vielleicht gewinnen Sie!" ], "kei025": [ - "No good! Not enough points." + "Nicht gut! Nicht genug Punkte." ], "kei026": [ - "The Underground said you needed some help,", - "you won't be able to catch those Metal Heads in the", - "Forest on foot so I've left my JET-Board at the airlock", - "near the city exit. Since you're helping the Underground,", - "I'll even let you keep it!" + "Die U-Bahn sagte, du bräuchtest Hilfe,", + "Sie werden diese Metalheads nicht im", + "Wald zu Fuß, also habe ich mein JET-Board an der Luftschleuse gelassen", + "in der Nähe des Stadtausgangs. Da du der U-Bahn hilfst,", + "Du darfst es sogar behalten!" ], "kei027": [ - "Jak, this is Keira. Don't forget - I still need two artifacts", - "to make the Rift Rider work! I need the Time Map and the", - "Heart of Mar Energy Gem, or we're not going anywhere!" + "Jak, hier ist Keira. Vergiss nicht - ich brauche noch zwei Artefakte", + "damit der Rift Rider funktioniert! Ich brauche die Zeitkarte und die", + "Heart of Mar Energy Gem, sonst gehen wir nirgendwo hin!" ], "kei028": [ - "I still need those two artifacts or this pile of junk", - "won't move one city block, much less through the Rift", - "and back to our own time!", - "You've got to find the Heart of Mar and the Time Map", - "or we're stuck!" + "Ich brauche noch diese beiden Artefakte oder diesen Müllhaufen", + "wird sich keinen Häuserblock weit bewegen, geschweige denn durch den Rift", + "und zurück in unsere Zeit!", + "Du musst das Herz von Mar und die Zeitkarte finden", + "oder wir stecken fest!" ], "kei029": [ - "This is Keira. Thanks for getting the artifacts, guys.", - "It's strange... the Time Map had a bunch of old coordinates", - "in it. Come see me at the Stadium." + "Das ist Keira. Danke, dass ihr die Artefakte besorgt habt, Leute.", + "Es ist seltsam... die Zeitkarte hatte eine Menge alter Koordinaten", + "drin. Komm und sieh mich im Stadion an." ], "kg001": [ - "Call for backup!" + "Fordern Sie Verstärkung!" ], "kg001a": [ - "Call for backup!" + "Fordern Sie Verstärkung!" ], "kg002": [ - "Freeze!" + "Einfrieren!" ], "kg002a": [ - "Freeze!" + "Einfrieren!" ], "kg004": [ "Halt!" @@ -4251,1464 +4251,1464 @@ "Halt!" ], "kg005": [ - "Get more cruisers in here!" + "Holen Sie mehr Kreuzer hierher!" ], "kg005a": [ - "Get more cruisers in here!" + "Holen Sie mehr Kreuzer hierher!" ], "kg006": [ - "Surrender!" + "Aufgeben!" ], "kg006a": [ - "Surrender!" + "Aufgeben!" ], "kg007": [ - "This is a no-hover zone!" + "Dies ist eine Schwebeverbotszone!" ], "kg007a": [ - "This is a no-hover zone!" + "Dies ist eine Schwebeverbotszone!" ], "kg008": [ - "Pull over!" + "Zur Seite fahren!" ], "kg008a": [ - "Pull over!" + "Zur Seite fahren!" ], "kg009": [ - "Say good night!" + "Sag gute Nacht!" ], "kg010": [ - "Seal off the area." + "Sperren Sie das Gebiet ab." ], "kg011": [ - "Stop the vehicle!" + "Fahrzeug anhalten!" ], "kg011a": [ - "Stop the vehicle!" + "Fahrzeug anhalten!" ], "kg012": [ - "You're under arrest!" + "Sie sind festgenommen!" ], "kg012a": [ - "You're under arrest!" + "Sie sind festgenommen!" ], "kg013": [ - "You there!" + "Du da drüben!" ], "kg014": [ - "You want some?!" + "Willst du etwas?!" ], "kg015": [ - "This area is off-limits." + "Dieser Bereich ist gesperrt." ], "kg016": [ - "Stop!" + "Stoppen!" ], "kg018": [ "Hey!" ], "kg019": [ - "We do this the easy way, or the hard way." + "Wir machen das entweder auf die einfache oder die harte Tour." ], "kg020": [ - "Slow down!" + "Verlangsamen!" ], "kg020a": [ - "Slow down!" + "Verlangsamen!" ], "kg021": [ - "Move over!" + "Geh zur Seite!" ], "kg021a": [ - "Move over!" + "Geh zur Seite!" ], "kg022": [ - "Call in more Hellcats!" + "Rufen Sie mehr Hellcats!" ], "kg023": [ - "Requesting backup!" + "Verstärkung anfordern!" ], "kg023a": [ - "Requesting backup!" + "Verstärkung anfordern!" ], "kg024": [ - "Suspect on foot!" + "Verdächtiger zu Fuß!" ], "kg024a": [ - "Suspect on foot!" + "Verdächtiger zu Fuß!" ], "kg025": [ - "Suspect in vehicle!" + "Verdächtiger im Fahrzeug!" ], "kg025a": [ - "Suspect in vehicle!" + "Verdächtiger im Fahrzeug!" ], "kg026": [ - "Suspect fleeing into sector five!" + "Verdächtiger flieht in Sektor fünf!" ], "kg026a": [ - "Suspect fleeing into sector five!" + "Verdächtiger flieht in Sektor fünf!" ], "kg027": [ - "Suspect moving to sector six!" + "Verdächtiger bewegt sich in Sektor sechs!" ], "kg027a": [ - "Suspect moving into sector six!" + "Verdächtiger dringt in Sektor sechs ein!" ], "kg028": [ - "High-speed chase in sector four!" + "Hochgeschwindigkeitsjagd im Sektor vier!" ], "kg028a": [ - "High-speed chase in sector four!" + "Hochgeschwindigkeitsjagd im Sektor vier!" ], "kg029": [ - "Checking sector three." + "Überprüfe Sektor drei." ], "kg029a": [ - "Checking sector three." + "Überprüfe Sektor drei." ], "kg030": [ - "Patrolling sector nine." + "Patrouillieren im Sektor neun." ], "kg030a": [ - "Patrolling sector nine." + "Patrouillieren im Sektor neun." ], "kg031": [ - "Be advised, I'm on foot." + "Bitte beachten Sie, ich bin zu Fuß unterwegs." ], "kg031a": [ - "Be advised, I'm on foot." + "Bitte beachten Sie, ich bin zu Fuß unterwegs." ], "kg032": [ - "Moving to next sector." + "Wechsel zum nächsten Sektor." ], "kg032a": [ - "Moving to next sector." + "Wechsel zum nächsten Sektor." ], "kg033": [ - "I've got suspicious activity in this sector." + "Ich habe verdächtige Aktivitäten in diesem Sektor festgestellt." ], "kg033a": [ - "I've got suspicious activity in this sector." + "Ich habe verdächtige Aktivitäten in diesem Sektor festgestellt." ], "kg034": [ - "Sweeping for suspects." + "Suche nach Verdächtigen." ], "kg034a": [ - "Sweeping for suspects." + "Suche nach Verdächtigen." ], "kg035": [ - "Nothing so far." + "Nicht so weit." ], "kg035a": [ - "Nothing so far." + "Nicht so weit." ], "kg036": [ - "Roger that, still looking." + "Verstanden, suche immer noch." ], "kg036a": [ - "Roger that, still looking." + "Verstanden, suche immer noch." ], "kg037": [ - "Roger, we'll shoot on sight." + "Roger, wir schießen auf Sicht." ], "kg037a": [ - "Roger, we'll shoot on sight." + "Roger, wir schießen auf Sicht." ], "kg038": [ - "Please advise, suspect's description." + "Bitte geben Sie eine Beschreibung des Verdächtigen." ], "kg039": [ - "Get out of the vehicle!" + "Steigen Sie aus dem Fahrzeug aus!" ], "kg039a": [ - "Get out of the vehicle!" + "Steigen Sie aus dem Fahrzeug aus!" ], "kg040": [ - "Call in more Hellcats!" + "Rufen Sie mehr Hellcats!" ], "kg040a": [ - "Call in more Hellcats!" + "Rufen Sie mehr Hellcats!" ], "kg041": [ - "The area is secure." + "Die Gegend ist sicher." ], "kg041a": [ - "The area is secure." + "Die Gegend ist sicher." ], "kg042": [ - "Nothing to report." + "Nichts zu berichten." ], "kg042a": [ - "Nothing to report." + "Nichts zu berichten." ], "kg043": [ - "Proceeding as planned." + "Es läuft wie geplant." ], "kg043a": [ - "Proceeding as planned." + "Es läuft wie geplant." ], "kg044": [ - "I lost him." + "Ich habe ihn verloren." ], "kg044a": [ - "I lost him." + "Ich habe ihn verloren." ], "kg045": [ - "Subject is not in sight." + "Das Subjekt ist nicht zu sehen." ], "kg045a": [ - "Subject not in sight." + "Betreff nicht in Sicht." ], "kg046": [ - "He's gone." + "Er ist weg." ], "kg046a": [ - "He disappeared!" + "Er verschwand!" ], "kg047": [ - "Where'd he go?" + "Wo ist er hin?" ], "kg047a": [ - "Where'd he go?" + "Wo ist er hin?" ], "kg048": [ - "Lost visual contact." + "Sichtkontakt verloren." ], "kg048a": [ - "Lost visual contact." + "Sichtkontakt verloren." ], "kg049": [ - "He just ducked out." + "Er ist einfach abgehauen." ], "kg049a": [ - "He just ducked out." + "Er ist einfach abgehauen." ], "kg050": [ - "He's out of sight." + "Er ist außer Sicht." ], "kg050a": [ - "He's out of sight." + "Er ist außer Sicht." ], "kg051": [ - "We're losing him!" + "Wir verlieren ihn!" ], "kg051a": [ - "We're losing him!" + "Wir verlieren ihn!" ], "kg052": [ - "Continuing our sweep." + "Wir setzen unsere Razzia fort." ], "kg052a": [ - "Continuing our sweep." + "Wir setzen unsere Razzia fort." ], "kg053": [ - "Searching sector four." + "Durchsuche Sektor vier." ], "kg053a": [ - "Searching sector four." + "Durchsuche Sektor vier." ], "kg054": [ - "Searching sector seven." + "Durchsuche Sektor sieben." ], "kg054a": [ - "Searching sector seven." + "Durchsuche Sektor sieben." ], "kg055": [ - "Searching sector three." + "Durchsuche Sektor drei." ], "kg055a": [ - "Searching sector three." + "Durchsuche Sektor drei." ], "kg056": [ - "Keep looking." + "Weiter suchen." ], "kg056a": [ - "Keep looking." + "Weiter suchen." ], "kg057": [ - "He's got to be here somewhere." + "Er muss hier irgendwo sein." ], "kg057a": [ - "He's got to be here somewhere." + "Er muss hier irgendwo sein." ], "kg058": [ - "I can't find him." + "Ich kann ihn nicht finden." ], "kg058a": [ - "I can't find him." + "Ich kann ihn nicht finden." ], "kg059": [ - "No sign of the subject." + "Keine Spur vom Subjekt." ], "kg059a": [ - "No sign of the subject." + "Keine Spur vom Subjekt." ], "kg060": [ - "I don't see him anywhere." + "Ich sehe ihn nirgendwo." ], "kg060a": [ - "I don't see him anywhere." + "Ich sehe ihn nirgendwo." ], "kg061": [ - "Still searching." + "Immer noch am suchen." ], "kg061a": [ - "Still searching." + "Immer noch am suchen." ], "kg062": [ - "Searching for the target." + "Auf der Suche nach dem Ziel." ], "kg062a": [ - "Searching for the target." + "Auf der Suche nach dem Ziel." ], "kg063": [ - "He must be here." + "Er muss hier sein." ], "kg063a": [ - "He must be here." + "Er muss hier sein." ], "kg064": [ - "He was just here." + "Er war gerade hier." ], "kg064a": [ - "He was just here." + "Er war gerade hier." ], "kg065": [ - "We lost him." + "Wir haben ihn verloren." ], "kg065a": [ - "We lost him." + "Wir haben ihn verloren." ], "kg066": [ - "He got away." + "Er kam davon." ], "kg066a": [ - "He got away." + "Er kam davon." ], "kg067": [ - "He escaped." + "Er ist entkommen." ], "kg067a": [ - "He escaped." + "Er ist entkommen." ], "kg068": [ - "He shook us." + "Er hat uns erschüttert." ], "kg068a": [ - "He shook us." + "Er hat uns erschüttert." ], "kg069": [ - "Looks like he's gone." + "Sieht aus, als wäre er weg." ], "kg069a": [ - "Looks like he's gone." + "Sieht aus, als wäre er weg." ], "kg070": [ - "I found him!" + "Ich fand ihn!" ], "kg070a": [ - "I found him!" + "Ich fand ihn!" ], "kg071": [ - "There he is." + "Da ist er." ], "kg071a": [ - "There he is!" + "Da ist er!" ], "kg072": [ - "Be advised, target in sight." + "Seien Sie gewarnt, das Ziel ist im Blick." ], "kg072a": [ - "Be advised, target in sight!" + "Achtung, Ziel im Blick!" ], "kg073": [ - "We have a positive ID." + "Wir haben eine eindeutige Identifizierung." ], "kg073a": [ - "We have a positive ID." + "Wir haben eine eindeutige Identifizierung." ], "kg074": [ - "I see him!" + "Ich sehe ihn!" ], "kg074a": [ - "I see him!" + "Ich sehe ihn!" ], "kg075": [ - "He's over there, get him!" + "Er ist da drüben, schnappt ihn euch!" ], "kg075a": [ - "He's over here!" + "Er ist hier drüben!" ], "kg076": [ - "Get him!" + "Holt ihn euch!" ], "kg076a": [ - "Get him!" + "Holt ihn euch!" ], "kg077": [ - "I've reacquired the target!" + "Ich habe das Ziel wiedererlangt!" ], "kg077a": [ - "I've reacquired the target!" + "Ich habe das Ziel wiedererlangt!" ], "kg078": [ - "I'm closing in." + "Ich komme näher." ], "kg078a": [ - "I'm closing in!" + "Ich komme näher!" ], "kg079": [ - "I'm on him!" + "Ich bin hinter ihm her!" ], "kg079a": [ - "I'm on him!" + "Ich bin hinter ihm her!" ], "kg080": [ - "I'm in pursuit!" + "Ich bin auf der Jagd!" ], "kg080a": [ - "I'm in pursuit!" + "Ich bin auf der Jagd!" ], "kg081": [ - "Pursuing target." + "Ziel verfolgen." ], "kg081a": [ - "Pursuing target!" + "Ziel verfolgen!" ], "kg082": [ - "Don't let him get away!" + "Lass ihn nicht entkommen!" ], "kg082a": [ - "Don't let him get away!" + "Lass ihn nicht entkommen!" ], "kg083": [ - "Get him!" + "Holt ihn euch!" ], "kg083a": [ - "Get him!" + "Holt ihn euch!" ], "kg084": [ - "After him!" + "Nach ihm!" ], "kg084a": [ - "After him!" + "Nach ihm!" ], "kg085": [ - "I have a visual!" + "Ich habe eine visuelle Darstellung!" ], "kg085a": [ - "I have a visual!" + "Ich habe eine visuelle Darstellung!" ], "kg086": [ - "We see him!" + "Wir sehen ihn!" ], "kg086a": [ - "We see him!" + "Wir sehen ihn!" ], "kg087": [ - "Stop right there!" + "Bleib sofort stehen!" ], "kg087a": [ - "Stop right there!" + "Bleib sofort stehen!" ], "kg088": [ - "I have a bead on him!" + "Ich habe ihn im Visier!" ], "kg088a": [ - "I have a bead on him!" + "Ich habe ihn im Visier!" ], "kg089": [ - "I'm hit!" + "Ich bin getroffen!" ], "kg089a": [ - "I'm hit!" + "Ich bin getroffen!" ], "kg090": [ - "Man down!" + "Ein Mann weniger!" ], "kg090a": [ - "Man down!" + "Ein Mann weniger!" ], "kg091": [ - "I need backup!" + "Ich brauche Unterstützung!" ], "kg091a": [ - "I need backup!" + "Ich brauche Unterstützung!" ], "kg092": [ - "Stop him!" + "Stopp ihn!" ], "kg092a": [ - "Stop him!" + "Stopp ihn!" ], "kg093": [ - "Look out!" + "Achtung!" ], "kg093a": [ - "Look out!" + "Achtung!" ], "kg094": [ - "There he is, shoot him!" + "Da ist er, erschießt ihn!" ], "kg094a": [ - "There he is, shoot him!" + "Da ist er, erschießt ihn!" ], "kg095": [ - "Take him out!" + "Schaltet ihn aus!" ], "kg095a": [ - "Take him out!" + "Schaltet ihn aus!" ], "kg096": [ - "Prisoner escape in progress, sound the alarm!" + "Gefangenenausbruch im Gange, Alarm schlagen!" ], "kg096a": [ - "Prison escape in progress, sound the alarm!" + "Gefängnisausbruch im Gange, Alarm schlagen!" ], "kg097": [ - "Prisoner on level two!" + "Gefangener auf Ebene zwei!" ], "kg097a": [ - "Prisoner on level two!" + "Gefangener auf Ebene zwei!" ], "kg098": [ - "Prisoner moving to sub-level B!" + "Gefangener wird in Untergeschoss B verlegt!" ], "kg098a": [ - "Prisoner moving to sub-level B!" + "Gefangener wird in Untergeschoss B verlegt!" ], "kg099": [ - "We think he's in the pipes!" + "Wir glauben, er ist in den Rohren!" ], "kg099a": [ - "We think he's in the pipes!" + "Wir glauben, er ist in den Rohren!" ], "kg100": [ - "We're beginning our sweep." + "Wir beginnen mit unserer Razzia." ], "kg100a": [ - "We're beginning our sweep." + "Wir beginnen mit unserer Razzia." ], "kg101": [ - "We have prisoner in sight, move in!" + "Wir haben einen Gefangenen in Sicht, rücken Sie vor!" ], "kg101a": [ - "We have prisoner in sight, move in!" + "Wir haben einen Gefangenen in Sicht, rücken Sie vor!" ], "kg102": [ - "We have movement on level one!" + "Wir haben Bewegung auf Level Eins!" ], "kg102a": [ - "We have movement on level one!" + "Wir haben Bewegung auf Level Eins!" ], "kg103": [ - "Close in!" + "Aufholen!" ], "kg103a": [ - "Close in!" + "Aufholen!" ], "kg104": [ - "We're moving in!" + "Wir ziehen ein!" ], "kg104a": [ - "We're moving in!" + "Wir ziehen ein!" ], "kg105": [ - "Secure the cell block!" + "Sichern Sie den Zellenblock!" ], "kg105a": [ - "Secure the cell block!" + "Sichern Sie den Zellenblock!" ], "kg106": [ - "Take no prisoners!" + "Machen Sie keine Gefangenen!" ], "kg106a": [ - "Take no prisoners!" + "Machen Sie keine Gefangenen!" ], "kg107": [ - "Prisoner sighted, we got him!" + "Gefangener gesichtet, wir haben ihn!" ], "kg107a": [ - "Prisoner sighted, we got him!" + "Gefangener gesichtet, wir haben ihn!" ], "kg108": [ - "Prisoner is still on the loose!" + "Gefangener ist noch immer auf freiem Fuß!" ], "kg108a": [ - "Prisoner is still on the loose!" + "Gefangener ist noch immer auf freiem Fuß!" ], "kg109": [ - "We think he's going for an exit!" + "Wir glauben, er will verschwinden!" ], "kg109a": [ - "We think he's going for an exit!" + "Wir glauben, er will verschwinden!" ], "kg110": [ - "Searching rooms." + "Räume werden gesucht." ], "kg110a": [ - "Searching rooms." + "Räume werden gesucht." ], "kg111": [ - "Prisoner loose in complex." + "Gefangener im Komplex auf freiem Fuß." ], "kg111a": [ - "Prisoner loose in complex." + "Gefangener im Komplex auf freiem Fuß." ], "kg112": [ - "You are authorized to shoot to kill." + "Sie sind befugt, mit Todesfolge zu schießen." ], "kg112a": [ - "You are authorized to shoot to kill." + "Sie sind befugt, mit Todesfolge zu schießen." ], "kg113": [ - "Go, go, go! Sweep the area!" + "Geht, geht, geht! Durchkämmt die Gegend!" ], "kg113a": [ - "Go go go! Sweep the area!" + "Los, los, los! Durchkämme die Gegend!" ], "kg114": [ - "Searching the sub-basements." + "Suche in den Untergeschossen." ], "kg114a": [ - "Searching the sub-basements." + "Suche in den Untergeschossen." ], "kg115": [ - "Cell block is clear." + "Zellenblock ist leer." ], "kg115a": [ - "Cell block is clear." + "Zellenblock ist leer." ], "kg116": [ - "Tank room is clear." + "Tankraum ist frei." ], "kg116a": [ - "Tank room is clear." + "Tankraum ist frei." ], "kg117": [ - "Activate riot tanks." + "Aktivieren Sie Bereitschaftspanzer." ], "kg117a": [ - "Activate riot tanks." + "Aktivieren Sie Bereitschaftspanzer." ], "kg118": [ - "Riot tank has prisoner in sight." + "Gefangener im Schutzpanzer zu sehen." ], "kg118a": [ - "Riot tank has prisoner in sight." + "Gefangener im Schutzpanzer zu sehen." ], "kg119": [ - "Intruder alert." + "Eindringlingsalarm." ], "kg119a": [ - "Intruder alert!" + "Eindringlingsalarm!" ], "kg120": [ - "Activating security defenses." + "Sicherheitsvorkehrungen aktivieren." ], "kg120a": [ - "Activating security defenses." + "Sicherheitsvorkehrungen aktivieren." ], "kg121": [ - "Please advise, subject's description." + "Bitte geben Sie eine Beschreibung des Betreffs an." ], "kg121a": [ - "Please advise, subject's description." + "Bitte geben Sie eine Beschreibung des Betreffs an." ], "kg122": [ - "I've got civvies in sight." + "Ich habe Zivilisten im Blick." ], "kg122a": [ - "I've got civvies in sight." + "Ich habe Zivilisten im Blick." ], "kg123": [ - "I've got suspects in sight." + "Ich habe Verdächtige im Visier." ], "kg123a": [ - "I've got suspects in sight." + "Ich habe Verdächtige im Visier." ], "kg124": [ - "I hate the smell of this part of the city." + "Ich hasse den Geruch dieses Teils der Stadt." ], "kg124a": [ - "I hate the smell in this part of the city." + "Ich hasse den Geruch in diesem Teil der Stadt." ], "kg125": [ - "Right, we'll check it out." + "Gut, wir werden es überprüfen." ], "kg125a": [ - "Right, we'll check it out." + "Gut, wir werden es überprüfen." ], "kg126": [ - "Confirmed, Underground suspect neutralized." + "Bestätigt, Untergrundverdächtiger neutralisiert." ], "kg126a": [ - "Confirmed, Underground suspect neutralized." + "Bestätigt, Untergrundverdächtiger neutralisiert." ], "kg127": [ - "They're all guilty!" + "Sie sind alle schuldig!" ], "kg127a": [ - "They're all guilty!" + "Sie sind alle schuldig!" ], "kg128": [ - "This is Unit Alpha, we're en route." + "Hier ist Einheit Alpha, wir sind unterwegs." ], "kg128a": [ - "This is Unit Alpha, we're en route." + "Hier ist Einheit Alpha, wir sind unterwegs." ], "kg129": [ - "Roger, continuing our sweep." + "Roger, wir setzen unsere Suche fort." ], "kg129a": [ - "Roger, continuing our sweep." + "Roger, wir setzen unsere Suche fort." ], "kg130": [ - "Unit Zulu, moving in." + "Einheit Zulu zieht ein." ], "kg130a": [ - "Unit Zulu, moving in." + "Einheit Zulu zieht ein." ], "kg131": [ - "Roger that, we're making our sweep." + "Verstanden, wir machen unseren Räumungseinsatz." ], "kg131a": [ - "Roger that, we're making our sweep." + "Verstanden, wir machen unseren Räumungseinsatz." ], "kg132": [ - "I say shoot 'em all and sort 'em out later." + "Ich würde sagen, erschießt sie alle und kümmert euch später um sie." ], "kg132a": [ - "I say shoot 'em all and sort 'em out later." + "Ich würde sagen, erschießt sie alle und kümmert euch später um sie." ], "kg133": [ - "You have the right to die!" + "Du hast das Recht zu sterben!" ], "kg134": [ - "Lock and load!" + "Sichern und Laden!" ], "kg135": [ - "Open fire!" + "Offenes Feuer!" ], "kg136": [ - "Alert, alert!" + "Achtung, Achtung!" ], "kg137": [ - "Don't move!" + "Bleib liegen!" ], "kg138": [ - "Do it!" + "Tu es!" ], "kg139": [ - "Go, go, go!" + "Geh! Geh! Geh!" ], "kg140": [ - "Flank 'em!" + "Flankiert sie!" ], "kg141": [ - "Move in!" + "Einziehen!" ], "kg142": [ - "Take 'em out!" + "Erledige sie!" ], "kg143": [ - "Bust some heads!" + "Schlagt ein paar Köpfe ein!" ], "kg144": [ - "Arrest him!" + "Verhafte ihn!" ], "kg145": [ - "Shoot 'em, shoot 'em!" + "Erschießt sie, erschießt sie!" ], "kg146": [ - "Die, outlaw!" + "Stirb, Gesetzloser!" ], "kg147": [ - "You're history!" + "Du bist Geschichte!" ], "kg148": [ - "Eat this!" + "ISS das!" ], "kg149": [ - "Get some!" + "Bekommen!" ], "kg150": [ - "Fire, fire!" + "Feuer Feuer!" ], "kg151": [ - "Here's one for the Guard!" + "Hier ist eines für die Wache!" ], "kg152": [ - "Give it up, outlaw!" + "Gib auf, Gesetzloser!" ], "kg153": [ - "Here's some pain!" + "Hier ist etwas Schmerz!" ], "kg154": [ - "Payback time!" + "Zeit für die Rückzahlung!" ], "kg155": [ - "Shoulda given up!" + "Hätte aufgeben sollen!" ], "kg156": [ - "I need cover fire!" + "Ich brauche Deckungsfeuer!" ], "kg157": [ - "Call in reinforcements!" + "Fordern Sie Verstärkung!" ], "kg158": [ - "I'll shoot!" + "Ich werde schießen!" ], "kg159": [ - "Die!" + "Sterben!" ], "kg160": [ - "You're busted!" + "Du bist erwischt!" ], "kg161": [ - "Riot in progress!" + "Aufruhr im Gange!" ], "kg162": [ - "Send in the troops!" + "Schicken Sie die Truppen!" ], "kg163": [ - "Give it up!" + "Es aufgeben!" ], "kg164": [ - "Make 'em pay!" + "Lass sie dafür bezahlen!" ], "kg165": [ - "Tag 'em and bag 'em!" + "Markiere sie und steck sie ein!" ], "kg165a": [ - "Tag 'em and bag 'em!" + "Markiere sie und steck sie ein!" ], "kg165b": [ - "Tag 'em and bag 'em!" + "Markiere sie und steck sie ein!" ], "kg166": [ - "Another notch for my gun." + "Noch eine Kerbe für meine Waffe." ], "kg166a": [ - "Another notch for my gun." + "Noch eine Kerbe für meine Waffe." ], "kg166b": [ - "Another notch for my gun." + "Noch eine Kerbe für meine Waffe." ], "kg167": [ - "This one was easy!" + "Das war einfach!" ], "kg167a": [ - "This one was easy!" + "Das war einfach!" ], "kg167b": [ - "This one was easy!" + "Das war einfach!" ], "kg168": [ - "Suspect neutralized." + "Verdächtiger neutralisiert." ], "kg168a": [ - "Suspect neutralized." + "Verdächtiger neutralisiert." ], "kg168b": [ - "Suspect neutralized." + "Verdächtiger neutralisiert." ], "kg169": [ - "Didn't even work up a sweat." + "Ich bin nicht einmal ins Schwitzen gekommen." ], "kg169a": [ - "Didn't even work up a sweat." + "Ich bin nicht einmal ins Schwitzen gekommen." ], "kg169b": [ - "Didn't even work up a sweat." + "Ich bin nicht einmal ins Schwitzen gekommen." ], "kg170": [ - "Take him in for... questioning, hehehe..." + "Nehmen Sie ihn mit zum ... Verhör, hehehe ..." ], "kg170a": [ - "Take him in for... questioning, hehehe..." + "Nehmen Sie ihn mit zum ... Verhör, hehehe ..." ], "kg170b": [ - "Take him in for... questioning, hehehe..." + "Nehmen Sie ihn mit zum ... Verhör, hehehe ..." ], "kg171": [ - "Another one bites the dust." + "Noch einer beißt ins Gras." ], "kg171a": [ - "Another one bites the dust." + "Noch einer beißt ins Gras." ], "kg171b": [ - "Another one bites the dust." + "Noch einer beißt ins Gras." ], "kg172": [ - "That must have hurt." + "Das muss wehgetan haben." ], "kg172a": [ - "That must have hurt." + "Das muss wehgetan haben." ], "kg172b": [ - "That must have hurt." + "Das muss wehgetan haben." ], "kg173": [ - "There's plenty more where that came from." + "Und da gibt es noch viel mehr davon." ], "kg173a": [ - "There's plenty more where that came from." + "Und da gibt es noch viel mehr davon." ], "kg173b": [ - "There's plenty more where that came from." + "Und da gibt es noch viel mehr davon." ], "kg174": [ - "Citizen scum." + "Bürgerabschaum." ], "kg174a": [ - "Citizen scum." + "Bürgerabschaum." ], "kg174b": [ - "Citizen scum." + "Bürgerabschaum." ], "kg175": [ - "Don't fight the law, son." + "Kämpfe nicht gegen das Gesetz, mein Sohn." ], "kg175a": [ - "Don't fight the law, son." + "Kämpfe nicht gegen das Gesetz, mein Sohn." ], "kg175b": [ - "Don't fight the law, son." + "Kämpfe nicht gegen das Gesetz, mein Sohn." ], "kg176": [ - "You are under arrest!" + "Du bist verhaftet!" ], "kg177": [ - "Get moving!" + "Beweg dich!" ], "kg178a": [ - "He vanished!" + "Er ist verschwunden!" ], "kg179": [ - "You guys hear about the latest Metal Head attacks?" + "Habt ihr von den jüngsten Angriffen der Metalheads gehört?" ], "kg179b": [ - "Oh you guys hear about the latest Metal Head attacks?" + "Oh, Leute, habt ihr von den jüngsten Angriffen der Metalheads gehört?" ], "kg180": [ - "We lost three squads last week." + "Wir haben letzte Woche drei Mannschaften verloren." ], "kg180a": [ - "We lost three squads last week." + "Wir haben letzte Woche drei Mannschaften verloren." ], "kg180b": [ - "We lost three squads last week." + "Wir haben letzte Woche drei Mannschaften verloren." ], "kg181": [ - "I hear the Underground are getting stronger." + "Ich habe gehört, die Underground-Szene wird stärker." ], "kg181a": [ - "I hear the Underground are getting stronger." + "Ich habe gehört, die Underground-Szene wird stärker." ], "kg181b": [ - "I hear the Underground are getting stronger." + "Ich habe gehört, die Underground-Szene wird stärker." ], "kg182": [ - "Just rumors, private, keep your mouth shut." + "Nur Gerüchte, privat, halt den Mund." ], "kg182a": [ - "Just rumors, private, keep your mouth shut." + "Nur Gerüchte, privat, halt den Mund." ], "kg182b": [ - "Just rumors, private, keep your mouth shut." + "Nur Gerüchte, privat, halt den Mund." ], "kg183": [ - "It's us or them, there's no in-between." + "Entweder wir oder sie, dazwischen gibt es nichts." ], "kg183a": [ - "It's us or them, there's no in-between." + "Entweder wir oder sie, dazwischen gibt es nichts." ], "kg183b": [ - "It's us or them, there's no in-between." + "Entweder wir oder sie, dazwischen gibt es nichts." ], "kg184": [ - "Don't worry, the Baron will save us." + "Keine Sorge, der Baron wird uns retten." ], "kg184a": [ - "Don't worry, the Baron will save us." + "Keine Sorge, der Baron wird uns retten." ], "kg184b": [ - "Don't worry, the Baron will save us." + "Keine Sorge, der Baron wird uns retten." ], "kg185": [ - "I got no faith in nobody." + "Ich habe Vertrauen in niemanden." ], "kg185a": [ - "I ain't got no faith in nobody." + "Ich habe Vertrauen in niemanden." ], "kg185b": [ - "I got no faith in nobody." + "Ich habe Vertrauen in niemanden." ], "kg186": [ - "Seen that new JX-7 racer? Sweet ride." + "Haben Sie den neuen JX-7-Renner gesehen? Tolles Gefährt." ], "kg186a": [ - "You seen that new JX-7 racer? Sweet ride." + "Hast du den neuen JX-7-Renner gesehen? Tolles Gefährt." ], "kg186b": [ - "Seen that new JX-7 racer? It's a sweet ride." + "Haben Sie den neuen JX-7-Renner gesehen? Ein tolles Gefährt." ], "kg187": [ - "You seen anything?" + "Hast du etwas gesehen?" ], "kg187a": [ - "You seen anything?" + "Hast du etwas gesehen?" ], "kg187b": [ - "You seen anything?" + "Hast du etwas gesehen?" ], "kg188": [ - "No." + "NEIN." ], "kg188a": [ - "No." + "NEIN." ], "kg188b": [ - "Nah." + "Nein." ], "kg189": [ - "Keep your eyes peeled." + "Halten Sie die Augen offen." ], "kg189a": [ - "Keep your eyes peeled." + "Halten Sie die Augen offen." ], "kg189b": [ - "Keep your eyes peeled." + "Halten Sie die Augen offen." ], "kg190": [ - "I just got a radio alert, stay frosty." + "Ich habe gerade eine Radiowarnung bekommen: Bleib cool." ], "kg190a": [ - "I just got a radio alert, stay frosty." + "Ich habe gerade eine Radiowarnung bekommen: Bleib cool." ], "kg190b": [ - "I just got a radio alert, stay frosty." + "Ich habe gerade eine Radiowarnung bekommen: Bleib cool." ], "kg191": [ - "Never trust a civilian." + "Traue niemals einem Zivilisten." ], "kg191a": [ - "Never trust a civilian." + "Traue niemals einem Zivilisten." ], "kg191b": [ - "Never trust a civilian." + "Traue niemals einem Zivilisten." ], "kg192": [ - "Never trust anyone." + "Vertraue niemandem." ], "kg192a": [ - "Never trust anyone." + "Vertraue niemandem." ], "kg192b": [ - "Never trust anyone." + "Vertraue niemandem." ], "kg193": [ - "Long live the KG!" + "Es lebe die KG!" ], "kg193a": [ - "Long live the KG!" + "Es lebe die KG!" ], "kg193b": [ - "Long live the KG!" + "Es lebe die KG!" ], "kg194": [ - "We ain't had a food riot since we brought in them tanks." + "Seit wir die Panzer eingesetzt haben, gab es keinen Lebensmittelaufstand mehr." ], "kg194a": [ - "We ain't had a food riot since we brought in them tanks." + "Seit wir die Panzer eingesetzt haben, gab es keinen Lebensmittelaufstand mehr." ], "kg194b": [ - "We ain't had a food riot since we brought in them tanks." + "Seit wir die Panzer eingesetzt haben, gab es keinen Lebensmittelaufstand mehr." ], "kg195": [ - "I'm bored, I want to crunch heads." + "Mir ist langweilig, ich möchte Köpfe einschlagen." ], "kg195a": [ - "I'm bored, I want to crunch heads." + "Mir ist langweilig, ich möchte Köpfe einschlagen." ], "kg195b": [ - "I'm bored, I want to crunch heads." + "Mir ist langweilig, ich möchte Köpfe einschlagen." ], "kg196": [ - "I want to kick some ass." + "Ich will ein paar Leuten in den Hintern treten." ], "kg196a": [ - "Ugh... I want to kick some butt." + "Ugh … ich möchte ein paar Leuten in den Hintern treten." ], "kg196b": [ - "I want to kick some butt." + "Ich möchte ein paar Leuten in den Hintern treten." ], "kg197": [ - "Did you hear the Underground got our ammo at HQ?" + "Hast du gehört, dass die Untergrundbahn unsere Munition im Hauptquartier bekommen hat?" ], "kg197a": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Hast du gehört, dass die U-Bahn", + "unsere Munition im Hauptquartier?" ], "kg197b": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Hast du gehört, dass die U-Bahn", + "unsere Munition im Hauptquartier?" ], "kg198": [ - "Payback's a bitch!" + "Die Rache ist übel!" ], "kg198a": [ - "Payback's a bitch!" + "Die Rache ist übel!" ], "kg198b": [ - "Payback's a bitch!" + "Die Rache ist übel!" ], "kg199": [ - "Animals!" + "Tiere!" ], "kg199a": [ - "Animals!" + "Tiere!" ], "kg199b": [ - "Animals!" + "Tiere!" ], "kg200": [ - "I hear the Shadow's been dead for years." + "Ich habe gehört, der Schatten ist seit Jahren tot." ], "kg200a": [ - "I hear the Shadow's been dead for years." + "Ich habe gehört, der Schatten ist seit Jahren tot." ], "kg200b": [ - "I hear the Shadow's been dead for years." + "Ich habe gehört, der Schatten ist seit Jahren tot." ], "kg201": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Vielleicht, aber der Rest von ihnen ist Underground-Abschaum", + "huschen immer noch umher." ], "kg201a": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Vielleicht, aber der Rest von ihnen ist Underground-Abschaum", + "huschen immer noch umher." ], "kg201b": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Vielleicht, aber der Rest von ihnen ist Underground-Abschaum", + "huschen immer noch umher." ], "kg202": [ - "Can I shoot someone now?" + "Darf ich jetzt jemanden erschießen?" ], "kg202a": [ - "Can I shoot someone now?" + "Darf ich jetzt jemanden erschießen?" ], "kg202b": [ - "Can I shoot someone now?" + "Darf ich jetzt jemanden erschießen?" ], "kg203": [ - "I like the new armor." + "Mir gefällt die neue Rüstung." ], "kg203a": [ - "I like the new armor." + "Mir gefällt die neue Rüstung." ], "kg203b": [ - "I like the new armor." + "Mir gefällt die neue Rüstung." ], "kg204": [ - "Yeah, me too. More comfort in the crotch." + "Ja, ich auch. Mehr Komfort im Schritt." ], "kg204a": [ - "Yeah, me too. More comfort in the crotch." + "Ja, ich auch. Mehr Komfort im Schritt." ], "kg204b": [ - "Yeah, me too. More comfort in the crotch." + "Ja, ich auch. Mehr Komfort im Schritt." ], "kg205": [ - "If something interesting doesn't happen soon,", - "I'm going to start shooting you." + "Wenn nicht bald etwas Interessantes passiert,", + "Ich werde anfangen, auf Sie zu schießen." ], "kg205a": [ - "Next time, can I kill a civvy?" + "Darf ich das nächste Mal einen Zivilisten töten?" ], "kg205b": [ - "Next time, can I kill a civvy?" + "Darf ich das nächste Mal einen Zivilisten töten?" ], "kg206a": [ - "If something interesting doesn't happen soon,", - "I'm gonna shoot you." + "Wenn nicht bald etwas Interessantes passiert,", + "Ich werde dich erschießen." ], "kg206b": [ - "If something interesting doesn't happen soon,", - "I'm gonna start shooting you." + "Wenn nicht bald etwas Interessantes passiert,", + "Ich werde anfangen, auf dich zu schießen." ], "kg207": [ - "Did you collect your bribes this week?" + "Haben Sie diese Woche Ihre Bestechungsgelder eingesammelt?" ], "kg207a": [ - "You collect your bribes this week?" + "Erhalten Sie diese Woche Ihre Bestechungsgelder?" ], "kg207b": [ - "You collect your bribes this week?" + "Erhalten Sie diese Woche Ihre Bestechungsgelder?" ], "kg208": [ - "Shhh..." + "Pssst …" ], "kg208a": [ - "Shhh..." + "Pssst …" ], "kg209": [ - "Shh." + "Psst." ], "kg209a": [ - "Shh." + "Psst." ], "kg209b": [ - "Shh." + "Psst." ], "kg210": [ - "I hear someone's been using the old wall airlocks.", - "Pfft, crazy bastard." + "Ich habe gehört, dass jemand die alten Wandschleusen benutzt hat.", + "Pfft, verrückter Bastard." ], "kg210a": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Ich habe gehört, dass jemand die alten Wandschleusen benutzt hat.", + "Verrückter Bastard." ], "kg210b": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Ich habe gehört, dass jemand die alten Wandschleusen benutzt hat.", + "Verrückter Bastard." ], "kg211": [ - "I've been on duty for two days straight." + "Ich bin seit zwei Tagen am Stück im Dienst." ], "kg211a": [ - "I've been on duty for two days straight." + "Ich bin seit zwei Tagen am Stück im Dienst." ], "kg211b": [ - "I've been on duty for two days straight." + "Ich bin seit zwei Tagen am Stück im Dienst." ], "kg212": [ - "Pfft, don't complain. I've got sewer patrol next week." + "Pfft, beschwer dich nicht. Ich muss nächste Woche zur Kanalwache." ], "kg212a": [ - "Don't complain, I got sewer patrol next week." + "Beschwer dich nicht, ich habe nächste Woche Kanalwache." ], "kg212b": [ - "Don't complain. I got sewer patrol next week." + "Beschwer dich nicht. Nächste Woche habe ich Kanalpatrouille." ], "kg213": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ach, du armer Kerl. Welchen Kommandanten hast du verärgert?" ], "kg213a": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ach, du armer Kerl. Welchen Kommandanten hast du verärgert?" ], "kg213b": [ - "Hehe, poor bastard. Which commander did you piss off?" + "Hehe, armer Kerl. Welchen Kommandanten hast du verärgert?" ], "kg214": [ - "I say death to the Underground." + "Ich sage: Tod der Unterwelt." ], "kg214a": [ - "I say death to the Underground." + "Ich sage: Tod der Unterwelt." ], "kg214b": [ - "I say death to the Underground." + "Ich sage: Tod der Unterwelt." ], "kg215": [ - "I wanna so kill that Shadow guy." + "Ich möchte diesen Shadow-Typen so gerne umbringen." ], "kg215a": [ - "I want to kill that Shadow guy!" + "Ich will diesen Shadow-Typen umbringen!" ], "kg215b": [ - "I want to kill that Shadow guy!" + "Ich will diesen Shadow-Typen umbringen!" ], "kg216": [ - "And don't forget that traitor Torn." + "Und vergiss diesen Verräter Torn nicht." ], "kg216a": [ - "And don't forget that traitor Torn." + "Und vergiss diesen Verräter Torn nicht." ], "kg216b": [ - "Don't forget that traitor Torn!" + "Vergiss diesen Verräter Torn nicht!" ], "kg217": [ - "Death's too good for him." + "Der Tod ist zu gut für ihn." ], "kg217a": [ - "Death's too good for him." + "Der Tod ist zu gut für ihn." ], "kg217b": [ - "Death's too good for him." + "Der Tod ist zu gut für ihn." ], "kg218": [ - "Why are we looking for some kid?" + "Warum suchen wir nach einem Kind?" ], "kg218a": [ - "Why are we looking for some kid?" + "Warum suchen wir nach einem Kind?" ], "kg218b": [ - "Why are we looking for some kid?" + "Warum suchen wir nach einem Kind?" ], "kg219": [ - "I don't know, Baron's orders." + "Ich weiß nicht, Befehl des Barons." ], "kg219a": [ - "I dunno, Baron's orders." + "Ich weiß nicht, Befehl des Barons." ], "kg219b": [ - "I dunno, Baron's orders." + "Ich weiß nicht, Befehl des Barons." ], "kg220": [ - "Hey, have they found Mar's Tomb yet?" + "Hey, haben sie Mars Grab schon gefunden?" ], "kg220a": [ - "Have they found Mar's Tomb yet?" + "Haben sie Mars Grab schon gefunden?" ], "kg220b": [ - "Have they found Mar's Tomb yet?" + "Haben sie Mars Grab schon gefunden?" ], "kg221": [ - "They wouldn't tell us if they did." + "Wenn sie es täten, würden sie es uns nicht sagen." ], "kg221a": [ - "Nah, they wouldn't tell us if they did." + "Nein, sie würden es uns nicht sagen, wenn sie es täten." ], "kg221b": [ - "Nah, they wouldn't tell us if they did." + "Nein, sie würden es uns nicht sagen, wenn sie es täten." ], "kg222": [ - "I've got a big bet on the next city races." + "Ich habe eine große Wette auf die nächsten Stadtrennen abgeschlossen." ], "kg222a": [ - "I got a big bet on the next city races." + "Ich habe eine große Wette auf die nächsten Stadtrennen abgeschlossen." ], "kg222b": [ - "Got a big bet on the next city races." + "Habe eine große Wette auf die nächsten Stadtrennen abgeschlossen." ], "kg223": [ - "Erol's my boy. He always wins." + "Erol ist mein Junge. Er gewinnt immer." ], "kg223a": [ - "Erol's my boy. He always wins." + "Erol ist mein Junge. Er gewinnt immer." ], "kg223b": [ - "Erol's my boy. He always wins." + "Erol ist mein Junge. Er gewinnt immer." ], "kg224": [ - "You going to the city races this time?" + "Gehst du dieses Mal zu den Stadtrennen?" ], "kg224a": [ - "You going to the city races this time?" + "Gehst du dieses Mal zu den Stadtrennen?" ], "kg224b": [ - "You going to the city races this time?" + "Gehst du dieses Mal zu den Stadtrennen?" ], "kg225": [ - "I'll be there." + "Ich werde da sein." ], "kg225a": [ - "I'll be there." + "Ich werde da sein." ], "kg225b": [ - "I'll be there." + "Ich werde da sein." ], "kg226": [ - "There've been some serious guard casualties this week." + "Diese Woche kam es zu einigen schweren Verlusten unter den Wachen." ], "kg226a": [ - "There've been some serious guard casualties this week." + "Diese Woche kam es zu einigen schweren Verlusten unter den Wachen." ], "kg226b": [ - "There've been some serious guard casualties this week." + "Diese Woche kam es zu einigen schweren Verlusten unter den Wachen." ], "kg227": [ - "Yeah, some rebel fighter is stirring up the pot good." + "Ja, ein paar Rebellenkämpfer heizen die Stimmung ordentlich an." ], "kg227a": [ - "Yeah, some rebel fighter is stirring the pot good." + "Ja, ein paar Rebellenkämpfer sorgen kräftig für Unruhe." ], "kg227b": [ - "Some rebel fighter is stirring the pot good." + "Irgendein Rebellenkämpfer stiftet ordentlich Unruhe." ], "kg228": [ - "I'd love to be the one to take him out." + "Ich wäre gern derjenige, der ihn ausführt." ], "kg228a": [ - "I'd love to be the one to take him out." + "Ich wäre gern derjenige, der ihn ausführt." ], "kg228b": [ - "Oh I'd love to be the one to take him out." + "Oh, ich wäre gern derjenige, der ihn ausführt." ], "kg229": [ - "Let's get drinks later." + "Lass uns später etwas trinken gehen." ], "kg229a": [ - "Let's get drinks later." + "Lass uns später etwas trinken gehen." ], "kg229b": [ - "Let's get drinks later." + "Lass uns später etwas trinken gehen." ], "kg230": [ - "I got a bad feeling about this war." + "Ich habe ein schlechtes Gefühl bei diesem Krieg." ], "kg230a": [ - "I got a bad feeling about this war." + "Ich habe ein schlechtes Gefühl bei diesem Krieg." ], "kg230b": [ - "I got a bad feeling about this war." + "Ich habe ein schlechtes Gefühl bei diesem Krieg." ], "kg231": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ich habe gehört, es gibt mehr Angriffe von Metalheads", + "als das Hauptquartier zugibt." ], "kg231a": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ich habe gehört, es gibt mehr Angriffe von Metalheads", + "als das Hauptquartier zugibt." ], "kg231b": [ - "Yeah, I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ja, ich habe gehört, es gibt mehr Angriffe von Metalheads", + "als das Hauptquartier zugibt." ], "kg232": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "Die Berichte, die ich gesehen habe, sind nicht gut.", + "Ich glaube, die Stadt steckt in Schwierigkeiten." ], "kg232a": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "Die Berichte, die ich gesehen habe, sind nicht gut.", + "Ich glaube, die Stadt steckt in Schwierigkeiten." ], "kg232b": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "Die Berichte, die ich gesehen habe, sind nicht gut.", + "Ich glaube, die Stadt steckt in Schwierigkeiten." ], "kg233": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Ich mache mir Sorgen um diesen neuen Typen", + "für den Untergrund kämpfen." ], "kg233a": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Ich mache mir Sorgen um diesen neuen Typen", + "für den Untergrund kämpfen." ], "kg233b": [ - "I'm worried about this new guy fighting for the Underground.", - "fighting for the Underground." + "Ich mache mir Sorgen um diesen neuen Kerl, der für die Underground kämpft.", + "für den Untergrund kämpfen." ], "kg234": [ - "Yeah, they say he can change into some kind of... monster." + "Ja, sie sagen, er kann sich in eine Art ... Monster verwandeln." ], "kg234a": [ - "Yeah, they say he can change into some kind of monster." + "Ja, man sagt, er könne sich in eine Art Monster verwandeln." ], "kg234b": [ - "They say he can change into some kind of monster." + "Sie sagen, er könne sich in eine Art Monster verwandeln." ], "kg235": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Keine Sorge, sein Kopf hängt schon bald an der Turmmauer." ], "kg235a": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Keine Sorge, sein Kopf hängt schon bald an der Turmmauer." ], "kg235b": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Keine Sorge, sein Kopf hängt schon bald an der Turmmauer." ], "kg236": [ "Hehehe." @@ -5720,513 +5720,513 @@ "Hehehe." ], "kg237a": [ - "Hehehe..." + "Hehehe ..." ], "kg237b": [ - "Hehehe..." + "Hehehe ..." ], "kg238a": [ "Hahaha..." ], "kg239a": [ - "Hah!" + "Haha!" ], "kg239b": [ - "Hah!" + "Haha!" ], "kg240a": [ - "Hehehe..." + "Hehehe ..." ], "kg241a": [ - "Suspect in known Underground vehicle!" + "Verdächtiger in bekanntem U-Bahn-Fahrzeug!" ], "kg242a": [ - "He's got a cargo, move in!" + "Er hat eine Ladung, rücken Sie ein!" ], "kg243a": [ - "Stop that vehicle!" + "Stoppen Sie das Fahrzeug!" ], "kg244a": [ - "You're under arrest, pull over!" + "Sie sind verhaftet, fahren Sie rechts ran!" ], "kg245a": [ - "Surrender the vehicle!" + "Geben Sie das Fahrzeug ab!" ], "kg246a": [ - "We are in pursuit!" + "Wir sind in der Verfolgung!" ], "kg247a": [ - "He's got a package!" + "Er hat ein Paket!" ], "kg248a": [ - "Suspect has suspicious cargo!" + "Der Verdächtige hat verdächtige Fracht!" ], "kg249a": [ - "We think it's an illegal shipment." + "Wir gehen davon aus, dass es sich um eine illegale Lieferung handelt." ], "kg250a": [ - "All units close in on vehicle!" + "Alle Einheiten nähern sich dem Fahrzeug!" ], "kg251a": [ - "Suspect moving at high speed!" + "Verdächtiger bewegt sich mit hoher Geschwindigkeit!" ], "kg252a": [ - "We can't keep up!" + "Wir können nicht mithalten!" ], "kg253a": [ - "He's in the port!" + "Er ist im Hafen!" ], "kg254a": [ - "He got away!" + "Er kam davon!" ], "kg255a": [ - "Suspect has taken out pursuit!" + "Verdächtiger hat die Verfolgung aufgenommen!" ], "kg256a": [ - "Vehicle destroyed, we got him!" + "Fahrzeug zerstört, wir haben ihn!" ], "kg257a": [ - "Nice work boys, he's down." + "Gute Arbeit, Jungs, er ist unten." ], "kg258a": [ - "Excellent pursuit." + "Ausgezeichnete Verfolgung." ], "kg259a": [ - "Guard transport under attack, requesting support!" + "Wachtransporter wird angegriffen, bitte um Unterstützung!" ], "kg260a": [ - "We're takin' damage!" + "Wir nehmen Schaden!" ], "kg261a": [ - "He's after us!" + "Er ist hinter uns her!" ], "kg262a": [ - "He's trying to crash the transport!" + "Er versucht, das Transportmittel zum Absturz zu bringen!" ], "kg263a": [ - "We've had a transport ambush, units respond!" + "Wir hatten einen Transportüberfall, Einheiten reagieren!" ], "kg264a": [ - "He's picking up a prisoner!" + "Er nimmt einen Gefangenen auf!" ], "kg265a": [ - "We lost a Lurker prisoner." + "Wir haben einen Lurker-Gefangenen verloren." ], "kg266a": [ - "He's got a Lurker prisoner with him!" + "Er hat einen Lurker gefangen genommen!" ], "kg267a": [ - "Take 'em all out!" + "Schaltet sie alle aus!" ], "kg268a": [ - "We think he's helping the Lurkers escape!" + "Wir glauben, dass er den Lurkern bei der Flucht hilft!" ], "kg269a": [ - "He's taken out two of our transports already!" + "Er hat bereits zwei unserer Transporter ausgeschaltet!" ], "kg270a": [ - "He's alone again." + "Er ist wieder allein." ], "kg271a": [ - "Where's he heading?!" + "Wohin geht er?!" ], "kg272a": [ - "Terminate with extreme prejudice!" + "Mit äußerster Voreingenommenheit kündigen!" ], "kg273a": [ - "He's attacking another transport!" + "Er greift ein anderes Transportmittel an!" ], "kg274a": [ - "We're being chased, send in an escort!" + "Wir werden verfolgt, schicken Sie eine Eskorte!" ], "kg275a": [ - "We lost this passenger." + "Wir haben diesen Passagier verloren." ], "kg276a": [ - "We're losing him!" + "Wir verlieren ihn!" ], "kg277a": [ - "We got 'em!" + "Wir haben sie!" ], "kg278a": [ - "We got 'em, teach ya to screw with the KG!" + "Wir haben sie, also bringen wir dir bei, wie man es mit dem KG krachen lässt!" ], "kg279a": [ - "Pull over, Lurker lover!" + "Fahr rechts ran, Lurker-Liebhaber!" ], "kg280a": [ - "There's a kid, check him out." + "Da ist ein Kind, sieh es dir an." ], "kg281a": [ - "The Baron wants every kid in this city arrested." + "Der Baron will, dass jedes Kind dieser Stadt verhaftet wird." ], "kg282a": [ - "Surrender the child!" + "Gebt das Kind her!" ], "kg283a": [ - "Give up the kid!" + "Gib das Kind auf!" ], "kg284a": [ - "If they won't surrender, kill them all!" + "Wenn sie sich nicht ergeben, töten Sie sie alle!" ], "kg285a": [ - "Don't kill the kid." + "Töte das Kind nicht." ], "kg286a": [ - "The Baron wants the kid alive!" + "Der Baron will das Kind lebend!" ], "kg287a": [ - "Find the boy!" + "Finde den Jungen!" ], "kg288a": [ - "That could be the kid the Baron wants." + "Das könnte das Kind sein, das der Baron will." ], "kg289a": [ - "After them!" + "Nach ihnen!" ], "kg290a": [ - "Don't move, boy!" + "Bleib liegen, Junge!" ], "kg291a": [ - "Take out that mutt!" + "Bringt diesen Köter raus!" ], "kg292a": [ - "We should kill 'em all!" + "Wir sollten sie alle töten!" ], "kg293a": [ - "They've taken a vehicle!" + "Sie haben ein Fahrzeug mitgenommen!" ], "kg294a": [ - "If you get a clear shot, take it!" + "Wenn Sie freie Schussbahn haben, nutzen Sie sie!" ], "kg295a": [ - "Suspect is fleeing in vehicle!" + "Tatverdächtiger flüchtet mit Fahrzeug!" ], "kg296a": [ - "Suspect's vehicle moving through section seven." + "Das Fahrzeug des Verdächtigen fährt durch Abschnitt sieben." ], "kg297a": [ - "We think the kid's with that Underground freak." + "Wir glauben, der Junge ist mit diesem Underground-Freak zusammen." ], "kg298a": [ - "Take 'em out, but keep the kid alive!" + "Erledigen Sie sie, aber lassen Sie das Kind am Leben!" ], "kg299a": [ - "They're on foot again!" + "Sie sind wieder zu Fuß!" ], "kg300a": [ - "What is that thing?!" + "Was ist das Ding?!" ], "kg301a": [ - "Shoot that thing, shoot it!" + "Erschieß das Ding, erschieß es!" ], "kg302a": [ - "What's he doing?!" + "Was macht er?!" ], "kg303a": [ - "It's that monster!" + "Es ist dieses Monster!" ], "kg304a": [ - "The stories are true!" + "Die Geschichten sind wahr!" ], "kg305a": [ - "It's the dark monster!" + "Es ist das dunkle Monster!" ], "kg306a": [ - "It's him!" + "Es ist er!" ], "kg307a": [ - "It's the dark eco freak!" + "Es ist der dunkle Öko-Freak!" ], "kg308a": [ - "Kill it, kill it!" + "Töte es, töte es!" ], "kg309a": [ - "Suspect has transformed into", - "a creature of some kind." + "Der Verdächtige hat sich verwandelt in", + "eine Art Kreatur." ], "kg310a": [ - "Sure is ugly." + "Es ist sicher hässlich." ], "kg311a": [ - "That's one ugly creature." + "Das ist ein hässliches Geschöpf." ], "kg312a": [ - "Look out!" + "Achtung!" ], "kg313a": [ - "Fall back!" + "Zurückgreifen!" ], "kg314a": [ - "He's wasting everybody!" + "Er macht alle fertig!" ], "kg315a": [ - "We can't kill it!" + "Wir können es nicht töten!" ], "kg316a": [ - "Stand your ground men!" + "Steht auf eurer Seite, Männer!" ], "kg317a": [ - "The Krimzon Guard do not run!" + "Die Krimzon-Wache rennt nicht!" ], "kg318a": [ - "Watch out for his claws!" + "Pass auf seine Krallen auf!" ], "kg319a": [ - "Keep clear of his energy bolts!" + "Halten Sie sich von seinen Energieblitzen fern!" ], "kg320a": [ - "This is a raid, do not resist!" + "Dies ist ein Überfall, leisten Sie keinen Widerstand!" ], "kg321a": [ - "Move in!" + "Einziehen!" ], "kg322a": [ - "By order of Baron Praxis,", - "everyone here is to be terminated!" + "Im Auftrag von Baron Praxis,", + "alle hier sind zu kündigen!" ], "kg323a": [ - "Surrender and you will not suffer much." + "Ergeben Sie sich, und Sie werden nicht viel leiden." ], "kg324a": [ - "It's that Underground monster freak!" + "Es ist dieses Monsterfreak aus der Unterwelt!" ], "kg325a": [ - "Get him!" + "Holt ihn euch!" ], "kg326a": [ - "All units converge on Water Slums!" + "Alle Einheiten treffen in den Wasserslums zusammen!" ], "kg327a": [ - "We've got an Underground fighter!" + "Wir haben einen Untergrundkämpfer!" ], "kg328a": [ - "Burn 'em down!" + "Brennt sie nieder!" ], "kg329a": [ - "Stay together!" + "Bleibt zusammen!" ], "kg330a": [ - "We've got 'em cornered!" + "Wir haben sie in die Enge getrieben!" ], "kg331a": [ - "Suspect cornered in section two." + "Verdächtiger in Abschnitt zwei in die Enge getrieben." ], "kg332a": [ - "There is no escape!" + "Es gibt kein entkommen!" ], "kg333a": [ - "Resistance is futile!" + "Widerstand ist zwecklos!" ], "kg334a": [ - "Give up the artifact, eco freak!" + "Gib das Artefakt her, Ökofreak!" ], "kg335a": [ - "We've cut 'em off!" + "Wir haben sie abgeschnitten!" ], "kg336a": [ - "He's trapped!" + "Er ist gefangen!" ], "kg337a": [ - "We got 'em!" + "Wir haben sie!" ], "kg338a": [ - "We're taking heavy fire!" + "Wir stehen unter schwerem Beschuss!" ], "kg339a": [ - "We're taking heavy casualties, send in backup!" + "Wir erleiden schwere Verluste, schicken Sie Verstärkung!" ], "kg340a": [ - "This guy knows how to fight!" + "Dieser Typ weiß, wie man kämpft!" ], "kg341a": [ - "Hold your ground!" + "Standfest sein!" ], "kg342a": [ - "Do not retreat!" + "Keinen Rückzieher machen!" ], "kg343a": [ - "We lost Beta squad!" + "Wir haben das Beta-Team verloren!" ], "kg344a": [ - "We need more men!" + "Wir brauchen mehr Männer!" ], "kg345a": [ - "He's on the south path!" + "Er ist auf dem Südweg!" ], "kg346a": [ - "He's in the water!" + "Er ist im Wasser!" ], "kg347a": [ - "He's near the east hut, all units converge!" + "Er ist in der Nähe der Osthütte, alle Einheiten laufen zusammen!" ], "kg348a": [ - "We're gonna lose him!" + "Wir werden ihn verlieren!" ], "kg349a": [ - "Intruder alert, sound the alarm!" + "Einbruchalarm, Alarm schlagen!" ], "kg350a": [ - "The Fortress is under attack!" + "Die Festung wird angegriffen!" ], "kg351a": [ - "This is our house, boy!" + "Das ist unser Haus, Junge!" ], "kg352a": [ - "You've got brass coming into our Fortress!" + "Sie haben Messing in unsere Festung gebracht!" ], "kg353a": [ - "You won't get out of here alive!" + "Du kommst hier nicht lebend raus!" ], "kg354a": [ - "Thanks for making this easy." + "Vielen Dank für die Vereinfachung." ], "kg355a": [ - "We're taking heavy casualties." + "Wir erleiden schwere Verluste." ], "kg356a": [ - "He's getting in deep, stop him!" + "Er dringt tief ein, halte ihn auf!" ], "kg357a": [ - "Take this guy out, that's an order!" + "Schalten Sie diesen Kerl aus, das ist ein Befehl!" ], "kg358a": [ - "Send in the shock squad!" + "Schicken Sie den Stoßtrupp!" ], "kg359a": [ - "Bring in the heavy firepower!" + "Setzen Sie schwere Feuerkraft ein!" ], "kg360a": [ - "Send in the shield guards!" + "Schickt die Schildwachen rein!" ], "kg361a": [ - "I'm on him!" + "Ich bin hinter ihm her!" ], "kg362a": [ - "Let me at 'em!" + "Lass mich an sie ran!" ], "kg363a": [ - "I got 'em!" + "Ich hab sie!" ], "kg364a": [ - "Finish him off!" + "Mach ihn fertig!" ], "kg365a": [ - "He's moving toward the ammo room!" + "Er bewegt sich auf den Munitionsraum zu!" ], "kg366a": [ - "Intercept the intruder before he gets in too far!" + "Fangen Sie den Eindringling ab, bevor er zu weit eindringt!" ], "kg367a": [ - "He's picking up a suspect." + "Er nimmt einen Verdächtigen fest." ], "kg368a": [ - "He's got an Underground agent with him!" + "Er hat einen Untergrundagenten bei sich!" ], "kg369a": [ - "Take 'em both out!" + "Schaltet sie beide aus!" ], "kg370a": [ - "He's picked up another suspect." + "Er hat einen weiteren Verdächtigen festgenommen." ], "kg371a": [ - "We lost the guy he dropped off!" + "Wir haben den Kerl verloren, den er abgesetzt hat!" ], "kg372a": [ - "He's got a passenger." + "Er hat einen Passagier." ], "kg373a": [ - "Driver is working with the Underground." + "Der Fahrer arbeitet bei der U-Bahn." ], "kg374a": [ - "Suspect vehicle taking damage, but still moving." + "Das verdächtige Fahrzeug wurde beschädigt, ist aber noch in Bewegung." ], "kg375a": [ - "We need to cut 'em off!" + "Wir müssen sie abschneiden!" ], "kg376a": [ - "He's got another agent!" + "Er hat einen anderen Agenten!" ], "kg377a": [ - "Suspect driving erratically!" + "Verdacht auf unregelmäßige Fahrweise!" ], "kg378a": [ - "Suspect still evading!" + "Verdächtiger flüchtet immer noch!" ], "kg379a": [ - "We got 'em this time!" + "Diesmal haben wir sie erwischt!" ], "kg380a": [ - "Suspect vehicle destroyed!" + "Verdächtiges Fahrzeug zerstört!" ], "kg381a": [ - "He's going for another vehicle!" + "Er holt sich ein anderes Fahrzeug!" ], "kg382a": [ - "We took 'em out!" + "Wir haben sie rausgeholt!" ], "kg383a": [ - "He's toast!" + "Er ist erledigt!" ], "kg384a": [ - "Another win for the KG, good shooting, men." + "Ein weiterer Sieg für die KG, gute Schüsse, Männer." ], "kg385a": [ - "Suspect has evaded capture." + "Der Verdächtige konnte sich der Festnahme entziehen." ], "kg386a": [ - "Ough!" + "Autsch!" ], "kg387a": [ - "Huh!" + "Huch!" ], "kg388a": [ "Arghh!" ], "kg389a": [ - "Ughh!" + "Pfui!" ], "kg390a": [ "Hugh!" ], "kg391a": [ - "Aughh!" + "Autsch!" ], "kg392a": [ "Haugh!" ], "kg393a": [ - "Oof!" + "Uff!" ], "kg394a": [ - "Hah!" + "Haha!" ], "kg395a": [ - "Ugh!" + "Pfui!" ], "kg396a": [ - "Hah!" + "Haha!" ], "kg397a": [ - "Ugh!" + "Pfui!" ], "kg398a": [ - "Huff!" + "Schnauben!" ], "kg399a": [ "Argh!" ], "kg400a": [ - "Hah!" + "Haha!" ], "kg401a": [ - "Huh!" + "Huch!" ], "kg402a": [ - "Huuh!" + "Huh!" ], "kg403a": [ - "Haah!" + "Haha!" ], "kg404a": [ "Ahh!" @@ -6238,25 +6238,25 @@ "Arrgh!" ], "kg407a": [ - "Uargh!" + "Wow!" ], "kg408a": [ - "Ugh...!" + "Pfui...!" ], "kg409a": [ - "Ugh!" + "Pfui!" ], "kg410a": [ "Nargh!" ], "kg411a": [ - "Hah!" + "Haha!" ], "kg412a": [ - "Ugh...!" + "Pfui...!" ], "kg413a": [ - "Gah...!" + "Mann...!" ], "kg414a": [ "Ah!" @@ -6265,16 +6265,16 @@ "Argh!" ], "kg416a": [ - "Ugh...!" + "Pfui...!" ], "kg417a": [ - "Uh..." + "Äh..." ], "kg418a": [ "Ah...!" ], "kg419a": [ - "Uugh!" + "Pfui!" ], "kg420a": [ "Ah...!" @@ -6283,218 +6283,218 @@ "Huah...!" ], "kg422a": [ - "Agh!" + "Ach!" ], "kg423a": [ - "Hungh...!" + "Hung...!" ], "kg424a": [ "Argh!" ], "kg425a": [ - "Ugh!" + "Pfui!" ], "kg426a": [ - "Ugh!" + "Pfui!" ], "kg427a": [ - "Ugh!" + "Pfui!" ], "kg428a": [ - "Oof!" + "Uff!" ], "kgv001": [ - "Stop!" + "Stoppen!" ], "kgv002": [ - "Open fire!" + "Offenes Feuer!" ], "kgv003": [ - "Move in!" + "Einziehen!" ], "kgv004": [ - "Take 'em out!" + "Erledige sie!" ], "kgv005": [ - "Take him down!" + "Bringt ihn zur Strecke!" ], "kgv006": [ - "Shoot 'em, shoot 'em!" + "Erschießt sie, erschießt sie!" ], "kgv007": [ - "Die, outlaw!" + "Stirb, Gesetzloser!" ], "kgv008": [ - "Eat this!" + "ISS das!" ], "kgv009": [ - "Fire, fire!" + "Feuer Feuer!" ], "kgv010": [ - "Give it up, outlaw!" + "Gib auf, Gesetzloser!" ], "kgv011": [ - "Seal off the area!" + "Sperren Sie das Gebiet ab!" ], "kgv012": [ - "Call in reinforcements!" + "Fordern Sie Verstärkung!" ], "kgv013": [ - "Riot in progress!" + "Aufruhr im Gange!" ], "kgv014": [ - "Call for backup!" + "Fordern Sie Verstärkung!" ], "kgv015": [ - "Stop the vehicle!" + "Fahrzeug anhalten!" ], "kgv016": [ - "You are under arrest!" + "Du bist verhaftet!" ], "kgv017": [ - "Pull over!" + "Zur Seite fahren!" ], "kgv018": [ - "Slow down!" + "Verlangsamen!" ], "kgv019": [ - "Move over!" + "Geh zur Seite!" ], "kgv020": [ - "Get out of the vehicle!" + "Steigen Sie aus dem Fahrzeug aus!" ], "kgv021": [ - "Call in more Hellcats!" + "Rufen Sie mehr Hellcats!" ], "kgv022": [ - "Requesting backup!" + "Verstärkung anfordern!" ], "kgv023": [ - "High speed chase in sector four!" + "Verfolgungsjagd mit hoher Geschwindigkeit im Sektor vier!" ], "kgv024": [ - "Suspect in vehicle!" + "Verdächtiger im Fahrzeug!" ], "kgv025": [ - "Suspect fleeing into sector five." + "Verdächtiger flieht in Sektor fünf." ], "kor001": [ - "I am so proud of you Jak, and you too, Daxter!", - "Together you have done real damage to the Baron.", - "We may win this war yet!" + "Ich bin so stolz auf dich, Jak, und auf dich auch, Daxter!", + "Gemeinsam haben Sie dem Baron schweren Schaden zugefügt.", + "Wir können diesen Krieg vielleicht noch gewinnen!" ], "kor002": [ - "Excellent work, you are proving to be quite an asset.", - "Without eco, the Baron will soon topple,", - "and the city's future will be in our hands." + "Hervorragende Arbeit, Sie erweisen sich als echte Bereicherung.", + "Ohne Öko wird der Baron bald stürzen,", + "und die Zukunft der Stadt liegt in unseren Händen." ], "kor004": [ - "Another blow to the Baron, my good friends!", - "Very soon, our fortunes will change!" + "Ein weiterer Schlag für den Baron, meine guten Freunde!", + "Sehr bald wird sich unser Schicksal ändern!" ], "krew001": [ - "Jak, this is Krew. I just talked to my racing client", - "and she told me you were pretty good with that JET-Board", - "of hers. My sources say a shipment of Krimzon Guard", - "listening equipment just arrived in the Port.", - "None of us, including the Underground, want those devices", - "up and running. It's not good for business.", - "Ride the JET-Board out into the Port", - "and destroy every Krimzon Guard crate you find.", - "There's sure to be a defense perimeter,", - "so watch out, 'ey?" + "Jak, hier ist Krew. Ich habe gerade mit meinem Rennsportkunden gesprochen", + "und sie sagte mir, du wärst ziemlich gut mit dem JET-Board", + "von ihr. Meine Quellen sagen, eine Lieferung Krimzon Guard", + "Abhörgerät gerade im Hafen angekommen.", + "Keiner von uns, auch nicht die Underground-Leute, will diese Geräte", + "und läuft. Das ist nicht gut fürs Geschäft.", + "Fahren Sie mit dem JET-Board in den Hafen", + "und zerstöre jede Krimzon-Wachkiste, die du findest.", + "Es gibt sicher einen Verteidigungsbereich,", + "also pass auf, was?" ], "krew002": [ - "Excellent work, Jak. Even I am impressed.", - "I should keep unscrupulous Krimzon Guards", - "out of our business.", - "What's the world coming to when you can't buy off", - "a few guards with bribes?" + "Ausgezeichnete Arbeit, Jak. Sogar ich bin beeindruckt.", + "Ich sollte skrupellose Krimzon-Wächter behalten", + "aus unserem Geschäft.", + "Wohin steuert die Welt, wenn man sich nicht kaufen kann", + "ein paar Wachen mit Bestechungsgeldern?" ], "krew003": [ - "Ooooh... the bedtime stories were true!", - "The fabled Heart of Mar was hidden inside that ugly statue", - "of the old boy.", - "Nothing fractured, nothing gained! That's my motto. Hahaha...", - "For your loyalty, you'll find an excellent gun upgrade", - "stashed in a crate in the Port." + "Ooooh … die Gutenachtgeschichten waren wahr!", + "Das sagenumwobene Herz von Mar war in dieser hässlichen Statue versteckt", + "des alten Knaben.", + "Wer nichts bricht, der nichts gewinnt! Das ist mein Motto. Hahaha ...", + "Für Ihre Treue erhalten Sie ein hervorragendes Waffen-Upgrade", + "in einer Kiste im Hafen verstaut." ], "krew004": [ - "That's one turret down. Keep looking!" + "Ein Turm ist weg. Schauen Sie weiter!" ], "krew005": [ - "Two turrets. Good work so far!" + "Zwei Türme. Gute Arbeit bisher!" ], "krew006": [ - "Three turrets gone. Nice! Keep it up!" + "Drei Türme weg. Schön! Weiter so!" ], "krew007": [ - "Four turrets trashed. Haha... Lovely, boys! Go get 'em!" + "Vier Türme zerstört. Haha ... Toll, Jungs! Holt sie euch!" ], "krew008": [ - "Five turrets down the drain! Keep going." + "Fünf Türme im Eimer! Weiter so." ], "krew009": [ - "Six turrets out of commission.", - "Hah, I like the way you work." + "Sechs Türme außer Betrieb.", + "Haha, mir gefällt Ihre Arbeitsweise." ], "krew010": [ - "Brass work, boys! You destroyed all the turrets, eh?", - "Now, come back to the Hip Hog." + "Messingarbeit, Jungs! Ihr habt alle Türme zerstört, was?", + "Kommen Sie jetzt zurück zum Hip Hog." ], "kwbf001": [ - "You know I can't play fair!", - "I have a secret weapon: my duplicity field!", - "Say hello to my little friends...", - "Ah, multiple me! Hahahaha... How delightful." + "Du weißt, dass ich nicht fair spielen kann!", + "Ich habe eine Geheimwaffe: mein Duplizitätsfeld!", + "Sag Hallo zu meinen kleinen Freunden …", + "Ah, mehrere von mir! Hahahaha ... Wie reizend." ], "kwbf002": [ - "Let me introduce you to my... \"crew.\"" + "Lassen Sie mich Ihnen meine ... „Crew“ vorstellen." ], "kwbf003": [ - "Let's dance!" + "Lass uns tanzen!" ], "kwbf004": [ - "You will die!" + "Du wirst sterben!" ], "kwbf005": [ - "Here we come!" + "Hier kommen wir!" ], "kwbf006": [ - "My, don't my twins look stunning?" + "Meine Güte, sehen meine Zwillinge nicht umwerfend aus?" ], "kwbf007": [ - "You can't stop us all!" + "Sie können uns nicht alle aufhalten!" ], "kwbf008": [ - "Surprise! More of me than you can handle." + "Überraschung! Mehr von mir, als du verkraften kannst." ], "kwbf009": [ - "I've a few good men to help me." + "Ich habe ein paar gute Männer, die mir helfen." ], "kwbf010": [ - "Get him!" + "Holt ihn euch!" ], "kwbf011": [ - "UARGH! Try stopping me now!" + "Versuch mich jetzt aufzuhalten!" ], "kwbf012": [ - "You're getting lucky so far, 'ey?" + "Du hast bisher Glück gehabt, oder?" ], "kwbf013": [ - "I grow weary of this. We end it now." + "Ich werde dessen müde. Wir machen jetzt Schluss damit." ], "kwbf014": [ - "Hm-hm, I move pretty fast for a big man, 'ey?" + "Hm-hm, für einen großen Mann bin ich ganz schön schnell, was?" ], "kwbf015": [ - "I float like a butterfly and sting like a wumpbee!" + "Ich schwebe wie ein Schmetterling und steche wie eine Wumpbie!" ], "kwbf016": [ "Urghh!" ], "kwbf017": [ - "Aurgh!" + "Argh!" ], "kwbf018": [ "Arghh!" @@ -6503,1353 +6503,1355 @@ "Urrghh!" ], "kwbf020": [ - "Urgh, ow!" + "Uff, aua!" ], "kwbf021": [ - "Die!" + "Sterben!" ], "kwbf022": [ - "Now I have you!" + "Jetzt habe ich dich!" ], "kwbf023": [ - "You cannot win, Jak!" + "Du kannst nicht gewinnen, Jak!" ], "kwbf024": [ - "Here's some pain!" + "Hier ist etwas Schmerz!" ], "kwbf025": [ - "No!" + "NEIN!" ], "kwbf026": [ - "You're trying my patience!" + "Du strapazierst meine Geduld!" ], "kwbf027": [ - "Stand still!" + "Still stehen!" ], "kwbf028": [ - "Haha, how did that feel?" + "Haha, wie hat sich das angefühlt?" ], "kwbf029": [ - "You should have walked away when you had a chance." + "Sie hätten gehen sollen, als Sie die Chance dazu hatten." ], "kwbf030": [ - "Pop this!" + "Lass das platzen!" ], "kwbf031": [ - "You can't stop the bomb, Jak!" + "Du kannst die Bombe nicht stoppen, Jak!" ], "kwbf032": [ - "Hahahaha, that felt good!" + "Hahahaha, das hat sich gut angefühlt!" ], "kwbf033": [ - "I am the weapon master!" + "Ich bin der Waffenmeister!" ], "kwbf034": [ - "Had enough?" + "Hatte genug?" ], "kwbf035": [ - "Here we come!" + "Hier kommen wir!" ], "kwbf036": [ - "Dance for me, Jak!" + "Tanz für mich, Jak!" ], "kwbf037": [ - "You can't get us all!" + "Ihr könnt uns nicht alle kriegen!" ], "kwbf038": [ - "Tag! You're it." + "Tag! Du bist dran." ], "kwbf039": [ - "Phew. This is a bit of a workout..." + "Puh. Das ist ein ganz schönes Workout …" ], "kwbf040": [ - "Which is the real me, Jak?" + "Wer bin ich wirklich, Jak?" ], "kwbf041": [ - "Finally... I get to put you in your place!" + "Endlich ... kann ich Sie in Ihre Schranken weisen!" ], "kwbf042": [ - "Arghh! You little...!" + "Arghh! Du kleiner...!" ], "ora006": [ - "Bring me 200 more Metal Head Skull Gems", - "and I will show you another Dark Power." + "Bring mir 200 weitere Metal Head Skull Gems", + "und ich werde Ihnen eine andere dunkle Macht zeigen." ], "ora007": [ - "Bring me 200 more Skull Gems", - "and another power will be yours to control." + "Bring mir 200 weitere Totenkopf-Edelsteine", + "und Sie werden die Kontrolle über eine andere Macht haben." ], "ora008": [ - "Bring me more Skull Gems to receive control", - "over a Dark Power." + "Bring mir mehr Totenkopf-Edelsteine, um die Kontrolle zu erhalten", + "über eine dunkle Macht." ], "ora009": [ - "You do not have enough Skull Gems.", - "Come back when you have collected more." + "Sie haben nicht genügend Totenkopf-Edelsteine.", + "Kommen Sie wieder, wenn Sie mehr gesammelt haben." ], "ora010": [ - "I need more Skull Gems." + "Ich brauche mehr Totenkopf-Edelsteine." ], "ora011": [ - "Trust not your reliance on weapons." + "Vertraue nicht auf deine Abhängigkeit von Waffen." ], "ora012": [ - "Use only your body and brain for this challenge." + "Nutzen Sie für diese Herausforderung nur Ihren Körper und Ihr Gehirn." ], "ora013": [ - "Weapons are for the weak." + "Waffen sind für die Schwachen." ], "ora014": [ - "You must not use weapons in this challenge." + "Bei dieser Herausforderung dürfen Sie keine Waffen verwenden." ], "pek001": [ - "Groark! I can't believe you actually did this thing!", - "Onin says she will search timelines for answers", - "about these sacred relics. I will find you then." + "Groark! Ich kann nicht glauben, dass du das tatsächlich gemacht hast!", + "Onin sagt, sie werde die Zeitleisten nach Antworten durchsuchen", + "über diese heiligen Reliquien. Dann werde ich dich finden." ], "pek002": [ - "Groark! Whoa... well I'll be a moncaw's uncle, the Light Tower", - "actually does exist! The beam of light is shining somewhere", - "in the city! The Tomb of Mar was right under our noses", - "all along. And thanks to me, you found it!" + "Groark! Whoa... na ja, ich werde der Onkel eines Moncaw sein, der Light Tower", + "existiert tatsächlich! Der Lichtstrahl scheint irgendwo", + "in der Stadt! Das Grab des Mar lag direkt vor unserer Nase", + "die ganze Zeit. Und dank mir haben Sie es gefunden!" ], "pek003": [ - "Wow! As I live and molt, one step closer to the Tomb.", - "I never thought we'd get this far!" + "Wow! So wahr ich lebe und mich häute, bin ich dem Grab einen Schritt näher.", + "Ich hätte nie gedacht, dass wir so weit kommen würden!" ], "pek010": [ - "This is Onin's magic bowl.", - "Onin will make symbols appear from her bowl.", - "When the symbols appear, you must pop them before they", - "reach the ground. You must pop them quickly, pop only", - "the symbols you see. If you try to pop a symbol that is", - "not there, Onin will give you a penalty! Miss any symbols", - "and you will penalized! Each round will get faster.", - "Let's see how far you get.", - "You must get a high enough score to win." + "Dies ist Onins Zauberschale.", + "Onin lässt Symbole aus ihrer Schale erscheinen.", + "Wenn die Symbole erscheinen, müssen Sie sie platzen lassen, bevor sie", + "den Boden erreichen. Sie müssen sie schnell platzen lassen, nur", + "die Symbole, die Sie sehen. Wenn Sie versuchen, ein Symbol zu platzen, das", + "nicht da, Onin wird dir eine Strafe geben! Verpasse keine Symbole", + "und du wirst bestraft! Jede Runde wird schneller.", + "Mal sehen, wie weit du kommst.", + "Um zu gewinnen, müssen Sie eine ausreichend hohe Punktzahl erreichen." ], "pek011": [ - "You are doing very well!" + "Du machst das sehr gut!" ], "pek012": [ - "Huh, not bad." + "Huh, nicht schlecht." ], "pek013": [ - "Keep going, you can do it!" + "Mach weiter, du schaffst das!" ], "pek014": [ - "Pop any more than the true number of each symbol,", - "and you will be penalized! Groark!" + "Pop mehr als die wahre Zahl jedes Symbols,", + "und du wirst bestraft! Groark!" ], "pek015": [ - "Ready? Go!" + "Bereit? Los!" ], "pek016": [ - "That symbol wasn't there, penalty!" + "Dieses Symbol war nicht da, Strafstoß!" ], "pek017": [ - "Hah, Onin got you! Pop only symbols that you see." + "Hah, Onin hat dich erwischt! Lass nur die Symbole platzen, die du siehst." ], "pek018": [ - "Here comes another round!", - "Give him another burst, Onin girl!" + "Hier kommt eine weitere Runde!", + "Gib ihm noch eine Salve, Onin-Mädchen!" ], "pek019": [ - "She got you again! What is your problem?" + "Sie hat dich schon wieder erwischt! Was ist dein Problem?" ], "pek020": [ - "I can't believe you've made it this far!" + "Ich kann nicht glauben, dass du es so weit geschafft hast!" ], "pek021": [ - "Quickly! You are missing symbols!" + "Schnell! Dir fehlen Symbole!" ], "pek022": [ - "You missed some!" + "Du hast einige verpasst!" ], "pek023": [ - "Faster! Faster!" + "Schneller schneller!" ], "pek024": [ - "Give it to him, Onin! More, Onin, more!", - "You go, girl, shake what your momma gave you!" + "Gib es ihm, Onin! Mehr, Onin, mehr!", + "Los, Mädchen, schüttel, was dir deine Mama gegeben hat!" ], "pek025": [ - "Rockin' in the club." + "Rocken im Club." ], "pek026": [ - "He can't do that many!" + "So viele schafft er nicht!" ], "pek027": [ - "What? He's still going?" + "Was? Er macht immer noch weiter?" ], "pek028": [ - "Let's see if he can handle it." + "Mal sehen, ob er damit klarkommt." ], "pek029": [ - "Go! Come on!" + "Geh! Komm schon!" ], "pek030": [ - "Okay, so you're good." + "Okay, also ist alles gut." ], "pek031": [ - "Wow! Not bad." + "Wow! Nicht schlecht." ], "pek032": [ - "Well, I laid an egg." + "Nun, ich habe ein Ei gelegt." ], "pek033": [ - "Amazing! You actually won!", - "I am without words, and that is rare." + "Unglaublich! Du hast tatsächlich gewonnen!", + "Mir fehlen die Worte, und das kommt selten vor." ], "pek034": [ - "You got enough points, congratulations!" + "Sie haben genügend Punkte, herzlichen Glückwunsch!" ], "pek035": [ - "Last penalty! You lose, loser." + "Letzter Elfmeter! Du verlierst, Verlierer." ], "pek036": [ - "You lost! Why am I not surprised?" + "Du hast verloren! Warum überrascht mich das nicht?" ], "pek037": [ - "You lose! Would you like to try again?" + "Du hast verloren! Möchtest du es noch einmal versuchen?" ], "pek038": [ - "Ahh, you laid an egg. Too bad, so sad." + "Ahh, du hast ein Ei gelegt. Schade, so traurig." ], "pek039": [ - "Oooh, so close... not! Hehehe..." + "Oooh, so nah... nicht! Hehehe..." ], "pek040": [ - "You made a valiant effort, but you suck!" + "Du hast dir tapfer Mühe gegeben, aber du bist ein Versager!" ], "pek041": [ - "Game over, finito, done, se acabó!" + "Game over, finito, fertig, es ist vorbei!" ], "prop002": [ - "As you all know, I was wounded during our last", - "glorious assault against the Metal Head Nest", - "many years ago. I have sacrificed everything", - "for this city and I demand only the same in return!", - "Loyalty will be rewarded,", - "death will await all others." + "Wie Sie alle wissen, wurde ich während unserer letzten", + "glorreicher Angriff auf das Metal Head Nest", + "vor vielen Jahren. Ich habe alles geopfert", + "für diese Stadt und ich verlange nur das Gleiche als Gegenleistung!", + "Treue wird belohnt,", + "Auf alle anderen wartet der Tod." ], "prop003": [ - "The Dark Eco inside you will eventually kill you, Jak.", - "Its destructive effects cannot be stopped.", - "Once you are in its chaotic grip, it will not let you go", - "until you slide into insanity. Turn yourself in, and I will", - "kill you mercifully and painlessly,", - "it is your only way out." + "Das dunkle Öko in dir wird dich letztendlich umbringen, Jak.", + "Seine zerstörerische Wirkung ist nicht mehr aufzuhalten.", + "Wenn du erst einmal in seinem chaotischen Griff bist, lässt es dich nicht mehr los", + "bis du in den Wahnsinn abrutschst. Stell dich und ich werde", + "töte dich gnädig und schmerzlos,", + "es ist Ihr einziger Ausweg." ], "prop004": [ - "Don't try to make a fool out of me, Jak.", - "Just because I haven't killed you yet doesn't", - "mean I'm not onto you. The citizens of this city", - "worship me because I offer them safety.", - "All I ask in return is for their lives.", - "I'll find you, and when I do, you'll wish", - "you died in prison." + "Versuch nicht, mich zum Narren zu halten, Jak.", + "Nur weil ich dich noch nicht getötet habe, heißt das noch lange nicht,", + "Ich meine, ich bin dir nicht auf der Spur. Die Bürger dieser Stadt", + "bete mich an, weil ich ihnen Sicherheit biete.", + "Als Gegenleistung verlange ich lediglich ihr Leben.", + "Ich werde dich finden, und wenn ich das tue, wirst du dir wünschen", + "du bist im Gefängnis gestorben." ], "prop005": [ - "Attention, my loyal citizens! We are looking for a", - "rebel fugitive who has caused the city considerable", - "damage of late. This man is armed and extremely", - "dangerous and can somehow change into a monstrous", - "creature. We have reports he is working with the", - "Metal Heads to subvert your city and your safety.", - "Report all sightings immediately!" + "Achtung, meine treuen Bürger! Wir suchen einen", + "Rebellenflüchtling, der der Stadt erheblichen Schaden zugefügt hat", + "Schaden in letzter Zeit. Dieser Mann ist bewaffnet und extrem", + "gefährlich und kann sich irgendwie in ein monströses verwandeln", + "Kreatur. Wir haben Berichte, dass er mit dem", + "Metal Heads unterwandern Ihre Stadt und Ihre Sicherheit.", + "Alle Sichtungen sofort melden!" ], "prop006": [ - "Brave citizens, today is the anniversary of the great", - "battle that ruined our city section we now call", - "Dead Town. Remember those who died", - "that day and how much we owe the Metal Heads", - "for their treachery! Remember how bravely I fought", - "to save those poor souls of the overrun section", - "and reflect on how grateful you should all be that the", - "Krimzon Guard keeps you safe each day." + "Tapfere Bürger, heute ist der Jahrestag des großen", + "Schlacht, die unseren Stadtteil zerstörte, den wir heute nennen", + "Tote Stadt. Erinnere dich an die Toten", + "an diesem Tag und wie viel wir den Metal Heads schulden", + "für ihren Verrat! Erinnere dich, wie tapfer ich gekämpft habe", + "um die armen Seelen des überrannten Abschnitts zu retten", + "und denken Sie darüber nach, wie dankbar Sie alle sein sollten, dass die", + "Krimzon Guard sorgt jeden Tag für Ihre Sicherheit." ], "prop007": [ - "This is your Baron. The reports of a Metal Head", - "invasion of the city are vastly overblown.", - "I assure you this is but a small incursion and we will", - "defeat it shortly. Stay in your homes, do not panic,", - "or you will be punished!" + "Hier ist euer Baron. Die Berichte eines Metalheads", + "Invasion der Stadt sind stark übertrieben.", + "Ich versichere Ihnen, dass es sich nur um einen kleinen Eingriff handelt und wir werden", + "besiege es in Kürze. Bleibt in euren Häusern, geratet nicht in Panik,", + "oder du wirst bestraft!" ], "prop008": [ - "Attention citizens, this is your Baron speaking.", - "There have been several unauthorized uses of the", - "city's old gate locks. Fortunately, these breaches", - "have not resulted in contamination, but we all know", - "how deadly the Wasteland is. No one is allowed", - "outside the city without authorization, let it be", - "known that any violators will be caught", - "and executed." + "Achtung, Bürger, hier spricht Ihr Baron.", + "Es gab mehrere unbefugte Verwendungen der", + "alte Torschlösser der Stadt. Glücklicherweise sind diese", + "haben nicht zu einer Kontamination geführt, aber wir alle wissen", + "wie tödlich das Ödland ist. Niemand darf", + "außerhalb der Stadt ohne Genehmigung, lass es sein", + "bekannt, dass alle Übertreter geahndet werden", + "und ausgeführt." ], "prop009": [ - "Serve your city." + "Diene deiner Stadt." ], "prop010": [ - "Sacrifice for your city, and all will prosper!" + "Bringen Sie Opfer für Ihre Stadt, und alles wird gedeihen!" ], "prop011": [ - "You are safe, because I care." + "Du bist in Sicherheit, denn es ist mir wichtig." ], "prop012": [ - "All Metal Heads must die!" + "Alle Metalheads müssen sterben!" ], "prop013": [ - "Work hard, and be grateful." + "Arbeiten Sie hart und seien Sie dankbar." ], "prop014": [ - "Report all wrongdoers." + "Melden Sie alle Übeltäter." ], "prop015": [ - "Remember, even your friends could be enemies." + "Denken Sie daran, dass auch Ihre Freunde Feinde sein können." ], "prop016": [ - "Turn in all who subvert." + "Verraten Sie alle, die untergraben." ], "prop017": [ - "Strength is our only option!" + "Stärke ist unsere einzige Option!" ], "prop018": [ - "Obey and be happy." + "Gehorche und sei glücklich." ], "prop019": [ - "Sacrifice is something you should do", - "for your city." + "Opfer sind etwas, das man tun sollte", + "für Ihre Stadt." ], "prop020": [ - "Sacrifice for your city." + "Opfere dich für deine Stadt." ], "prop021": [ - "Remember, even friends might be enemies." + "Denken Sie daran, dass auch Freunde Feinde sein können." ], "prop022": [ - "The city needs your sacrifice." + "Die Stadt braucht Ihr Opfer." ], "prop023": [ - "It is better inside the walls!" + "Innerhalb der Mauern ist es besser!" ], "prop024": [ - "The law will show no mercy." + "Das Gesetz kennt keine Gnade." ], "prop025": [ - "Justice is swift." + "Die Gerechtigkeit ist schnell." ], "prop026": [ - "The Underground movement is dead!" + "Die Untergrundbewegung ist tot!" ], "prop027": [ - "Join the Krimzon Guard and your family", - "will be allowed to stay." + "Treten Sie der Krimzon-Wache und Ihrer Familie bei", + "dürfen bleiben." ], "prop028": [ - "One way: My way." + "Ein Weg: Mein Weg." ], "prop029": [ - "To lead is to control." + "Führen heißt kontrollieren." ], "prop030": [ - "Give up your freedom and I will protect you." + "Gib deine Freiheit auf und ich werde dich beschützen." ], "prop031": [ - "Have faith in me and the Promised Land is yours." + "Vertraue auf mich, dann gehört das Gelobte Land dir." ], "prop032": [ - "Your city needs a strong leader, not a childish fool." + "Ihre Stadt braucht einen starken Anführer, keinen kindischen Narren." ], "prop033": [ - "Welcome not the unknown face." + "Heißen Sie das unbekannte Gesicht nicht willkommen." ], "prop034": [ - "Shun those who would defy me!" + "Meide diejenigen, die mir trotzen würden!" ], "prop035": [ - "I am the face of Haven City." + "Ich bin das Gesicht von Haven City." ], "prop036": [ - "Without my strength, there would be no city." + "Ohne meine Kraft gäbe es keine Stadt." ], "prop037": [ - "Follow me to a safer future!" + "Folge mir in eine sicherere Zukunft!" ], "prop038": [ - "You are safe inside the walls with me." + "Innerhalb meiner Mauern bist du sicher." ], "prop039": [ - "Defy... and die." + "Trotze ... und stirb." ], "prop040": [ - "Welcome to Haven City!", - "All laws are enforced for your safety.", - "Obey me and you will not be punished." + "Willkommen in Haven City!", + "Zu Ihrer Sicherheit werden alle Gesetze durchgesetzt.", + "Gehorche mir und du wirst nicht bestraft." ], "prop041": [ - "The city is safe. I will not allow harm", - "to befall you, trust me." + "Die Stadt ist sicher. Ich werde keinen Schaden zulassen", + "dass dir etwas widerfährt, vertrau mir." ], "prop042": [ - "Rest assured, I will destroy the Metal Heads.", - "One way or another." + "Seien Sie versichert, ich werde die Metal Heads zerstören.", + "In gewisser Weise." ], "prop043": [ - "To all citizens, this puny Underground revolt", - "will be dealt with by all aggressive means.", - "We will crush these arrogant upstarts, they will not", - "be allowed to threaten me or this city's order!" + "An alle Bürger, dieser mickrige Untergrundaufstand", + "wird mit allen aggressiven Mitteln bekämpft werden.", + "Wir werden diese arroganten Emporkömmlinge vernichten, sie werden nicht", + "es sei mir erlaubt, mich oder die Ordnung dieser Stadt zu bedrohen!" ], "prop044": [ - "To all citizens of this great city, there is a monster", - "among you, masquerading as a man!", - "He is dangerous and must be destroyed!", - "I offer a reward of eco for his capture, or, if you", - "have a loved one in prison, I will exchange them for", - "this renegade. I promise." + "Für alle Bürger dieser großen Stadt gibt es ein Monster", + "unter euch, als Mann verkleidet!", + "Er ist gefährlich und muss vernichtet werden!", + "Ich biete eine Belohnung von Eco für seine Ergreifung, oder, wenn Sie", + "habe einen geliebten Menschen im Gefängnis, ich werde ihn austauschen gegen", + "dieser Abtrünnige. Das verspreche ich." ], "prop045": [ - "To all who defy me! I am watching you,", - "I am everywhere, I am this city!" + "An alle, die sich mir widersetzen! Ich beobachte euch,", + "Ich bin überall, ich bin diese Stadt!" ], "prop046": [ - "This is your Baron. I have been informed by the", - "ministry of extreme labor that worker productivity is", - "down this month! That is unacceptable!", - "I give you safety and this is how you repay me?", - "You must work harder, not smarter!", - "Free the mind and the body will do as it's told,", - "forced labor will set you free!", - "And to help you in your spiritual motivation...", - "quotas are doubled next month!" + "Hier spricht Ihr Baron. Ich wurde informiert von", + "Ministerium für extreme Arbeit, dass die Produktivität der Arbeitnehmer", + "diesen Monat ausgefallen! Das ist inakzeptabel!", + "Ich gebe dir Sicherheit und so zahlst du es mir zurück?", + "Sie müssen härter arbeiten, nicht intelligenter!", + "Befreie den Geist und der Körper wird tun, was ihm gesagt wird,", + "Zwangsarbeit wird euch befreien!", + "Und um Ihnen bei Ihrer spirituellen Motivation zu helfen …", + "Die Quoten werden nächsten Monat verdoppelt!" ], "prop047": [ - "Due to recent, uh... \"attrition\" difficulties,", - "this city needs fresh Krimzon Guard recruits!", - "Everyone is asked to volunteer members of their family!", - "Come down to your friendly Fortress facility.", - "Or else!" + "Aufgrund der jüngsten, äh... \"Abnutzungsschwierigkeiten\",", + "diese Stadt braucht neue Rekruten für die Krimzon-Wache!", + "Jeder ist aufgefordert, seine Familienangehörigen freiwillig mitzubringen!", + "Kommen Sie zu Ihrer freundlichen Festungseinrichtung.", + "Oder aber!" ], "prop048": [ - "As your Baron, I am instituting a \"no hoverboard\" rule", - "in the city! Young delinquents with nothing better", - "to do than float around and do tricks! Huh!", - "I'll put all violators into the Guard and teach them", - "some discipline. No skating, it's the law!" + "Als Ihr Baron führe ich eine „Keine Hoverboards“-Regel ein", + "in der Stadt! Junge Delinquenten mit nichts Besserem", + "zu tun, als herumzuschweben und Tricks zu machen! Huh!", + "Ich werde alle Übertreter in die Wache stecken und ihnen beibringen", + "etwas Disziplin. Kein Skaten, das ist gesetzlich vorgeschrieben!" ], "prop049": [ - "I am disappointed with this city's lack of", - "committment and sacrifice. Work harder! Eat less!", - "Drink only when I tell you! Sleep is optional.", - "We are at war with an outside threat,", - "don't make me declare war on you as well!" + "Ich bin enttäuscht über den Mangel an", + "Engagement und Opferbereitschaft. Arbeite härter! Iss weniger!", + "Trinken Sie nur, wenn ich es Ihnen sage! Schlafen ist optional.", + "Wir befinden uns im Krieg mit einer äußeren Bedrohung,", + "zwing mich nicht, dir auch noch den Krieg zu erklären!" ], "prop050": [ - "Greetings, people of this wonderful utopia. This year's", - "championship race will begin shortly. All citizens", - "not under house arrest are invited to come down to", - "the Stadium and watch your favorite son Erol", - "once again show how the Krimzon Guard are the elite", - "warriors of this city. Bring the whole family! The first", - "one thousand children will get a mandatory", - "Krimzon Guard recruitment package and be", - "\"asked\" to join the Guard for life, what a treat!" + "Seid gegrüßt, Bewohner dieser wunderbaren Utopie.", + "Das Meisterschaftsrennen beginnt in Kürze. Alle Bürger", + "nicht unter Hausarrest stehen, sind eingeladen,", + "das Stadion und schau deinem Lieblingssohn Erol zu", + "zeigt einmal mehr, dass die Krimzon-Wache die Elite ist", + "Krieger dieser Stadt. Bringen Sie die ganze Familie mit! Die erste", + "eintausend Kinder erhalten eine obligatorische", + "Rekrutierungspaket für die Krimzon-Wache und", + "„gebeten“, der Garde auf Lebenszeit beizutreten, was für ein Vergnügen!" ], "prop051": [ - "This is your Baron, I am still in control!", - "And I assure you, there's absolutely no Metal Heads", - "in the city. Anyone who contradicts this fact...", - "will be shot! The current situation is merely", - "an elaborate propaganda hoax, perpetrated by", - "the outlawed Underground militia trying to", - "subvert our laws and discredit those who protect you", - "while you sleep! Pay no attention to this foolish hoax,", - "there are no Metal Heads within 100 miles of this city!" + "Dies ist Ihr Baron, ich habe immer noch die Kontrolle!", + "Und ich versichere Ihnen, es gibt absolut keine Metalheads", + "in der Stadt. Wer dieser Tatsache widerspricht...", + "wird erschossen! Die aktuelle Situation ist lediglich", + "eine aufwendige Propaganda-Falschmeldung, verübt von", + "die geächtete Untergrundmiliz versucht,", + "untergraben unsere Gesetze und diskreditieren diejenigen, die Sie beschützen", + "während du schläfst! Schenke diesem dummen Scherz keine Aufmerksamkeit,", + "im Umkreis von 100 Meilen um diese Stadt gibt es keine Metalheads!" ], "prop052": [ - "This is Baron Praxis. We have taken back the city", - "and the Metal Heads are now fleeing before us!", - "Victory is at hand! Continue to fight for the freedom", - "I may some day give you. Continue to defy these", - "enemies of my law and order...", - "and continue to die for me." + "Das ist Baron Praxis. Wir haben die Stadt zurückerobert", + "und die Metal Heads fliehen jetzt vor uns!", + "Der Sieg ist nahe! Kämpfe weiter für die Freiheit", + "Ich werde es dir eines Tages geben. Trotze weiterhin diesen", + "Feinde meiner Ordnung und meines Rechts …", + "und stirb weiterhin für mich." ], "prop053": [ - "Fear not the men in red. Sure, there are occasional", - "complaints about their over-aggressive policing,", - "wanton destruction of people's property during raids,", - "mass-arrests, misplaced loved ones and whatnot.", - "Hey, we're only human! Running a city can be", - "tougher than it looks, imagine how much worse", - "it would be if the Metal Heads were in charge!" + "Fürchtet euch nicht vor den Männern in Rot. Sicher, es gibt gelegentlich", + "Beschwerden über ihre übermäßig aggressive Polizeiarbeit,", + "mutwillige Zerstörung von Eigentum der Bevölkerung bei Razzien,", + "Massenverhaftungen, verloren gegangene Angehörige und so weiter.", + "Hey, wir sind nur Menschen! Eine Stadt zu leiten kann", + "härter als es aussieht, stellen Sie sich vor, wie viel schlimmer", + "das wäre es, wenn die Metal Heads das Sagen hätten!" ], "prop054": [ - "We've had a few incidents with our lower class labor", - "force lately. If your Lurker is acting up, call Krimzon", - "Animal Control. Is your Lurker in a tree? Stuck in a", - "sewer grate? Foaming at the mouth? Call", - "the friendly officers of the K.A.C. and they will deal", - "with your furry slave. with all the love and care it", - "deserves... then haul it away for reconditioning.", - "Remember, Lurkers can be dangerous!" + "Wir hatten einige Zwischenfälle mit unseren Arbeitern aus der Unterschicht", + "Kraft in letzter Zeit. Wenn Ihr Lurker sich benimmt, rufen Sie Krimzon an", + "Tierkontrolle. Ist Ihr Lurker in einem Baum? In einem", + "Gullydeckel? Schaum vor dem Mund? Rufen Sie", + "die freundlichen Beamten des K.A.C. und sie werden sich darum kümmern", + "mit deinem pelzigen Sklaven. Mit all der Liebe und Sorgfalt, die es", + "verdient ... dann bringen Sie es zur Überholung weg.", + "Denken Sie daran: Lurker können gefährlich sein!" ], "prop055": [ - "Please give generously to the Baron eco fund.", - "Your munificent donation wil be used for a variety", - "of humanitarian needs: bombs, guns, armor, genetic", - "alteration research, all in the name of preserving this", - "wonderful city of ours. Give often, give freely...", - "or it will be taken from you!" + "Bitte spenden Sie großzügig für den Baron-Ökofonds.", + "Ihre großzügige Spende wird für verschiedene Zwecke eingesetzt", + "der humanitären Bedürfnisse: Bomben, Waffen, Rüstungen, genetische", + "Veränderungsforschung, alles im Namen der Erhaltung dieser", + "unsere wunderbare Stadt. Geben Sie oft, geben Sie großzügig ...", + "oder es wird dir weggenommen!" ], "prop056": [ - "It can be so lonely at the top and looking down from", - "up here I can see that this dirty city is in desperate", - "need of revitalization. So, to that end, we", - "will be bulldozing many sections of the city in the", - "coming weeks! All complaints against this", - "construction initiative can be brought,", - "in-person, to the Fortress Prison where they will be", - "\"reviewed.\" Condemned city sections are to", - "be evacuated before razing begins.", - "Anyone still in their homes will be ignored." + "Es kann so einsam sein, oben zu stehen und von oben herabzuschauen", + "Von hier oben kann ich sehen, dass diese schmutzige Stadt in einer verzweifelten Lage ist", + "müssen revitalisiert werden. Zu diesem Zweck", + "wird viele Teile der Stadt planieren in der", + "kommenden Wochen! Alle Beschwerden gegen diese", + "Bauinitiative kann eingebracht werden,", + "persönlich in das Festungsgefängnis, wo sie", + "\"überprüft\". Abgerissene Stadtteile sollen", + "evakuiert werden, bevor mit der Zerstörung begonnen wird.", + "Jeder, der sich noch in seinem Zuhause befindet, wird ignoriert." ], "prop057": [ - "The Metal Head attack will not succeed!", - "Your Baron has taken certain measures", - "to guarantee that the Metal Heads will NEVER hold", - "this city for long. Rest assured, I will snatch victory", - "from the jaws of defeat, whatever the cost!", - "I vowed never to let this city fall, and I intend to keep", - "that promise. What must happen is for the good of all!", - "Remember, to die in victory is a glorious", - "badge of honor!" + "Der Angriff der Metal Heads wird keinen Erfolg haben!", + "Ihr Baron hat bestimmte Maßnahmen ergriffen", + "um zu garantieren, dass die Metal Heads NIEMALS", + "diese Stadt für lange. Sei versichert, ich werde den Sieg davontragen", + "aus den Klauen der Niederlage, koste es, was es wolle!", + "Ich habe geschworen, diese Stadt niemals fallen zu lassen, und ich beabsichtige,", + "dieses Versprechen. Was geschehen muss, ist zum Wohle aller!", + "Denken Sie daran, siegreich zu sterben ist ein ruhmreiches", + "Ehrenabzeichen!" ], "prop058": [ - "This is Baron Praxis. As our city faces its worst threat", - "in three hundred years, I am faced with serious", - "decisions concerning our future. I regret that I have", - "few choices left. I command you all to return to your", - "homes and say goodbye to your families.", - "Be assured, we will not lose this fight, one way", - "or another! The time has come to show these creatures", - "what we're capable of when all hope is lost!", - "It has been a pleasure ruling over you", - "to the end." + "Dies ist Baron Praxis. Während unsere Stadt vor der schlimmsten Bedrohung steht", + "in dreihundert Jahren stehe ich vor ernsten", + "Entscheidungen über unsere Zukunft. Ich bedauere, dass ich", + "wenige Möglichkeiten übrig. Ich befehle euch allen, in eure", + "nach Hause und verabschiedet euch von euren Familien.", + "Seien Sie versichert, wir werden diesen Kampf nicht verlieren, egal wie", + "oder ein anderer! Es ist an der Zeit, diese Kreaturen zu zeigen", + "wozu wir fähig sind, wenn alle Hoffnung verloren ist!", + "Es war mir ein Vergnügen, über Sie zu herrschen", + "bis zum Ende." ], "sam001": [ - "This is Samos. Jak, I need you to go out to the ruins", - "in Dead Town and visit my old hut. It's now time to retrieve", - "something I hid there long ago, good luck! And Daxter...", - "clean up my place while you're out there!" + "Hier ist Samos. Jak, du musst zu den Ruinen gehen", + "in Dead Town und besuche meine alte Hütte. Jetzt ist es Zeit,", + "etwas, das ich dort vor langer Zeit versteckt habe, viel Glück! Und Daxter ...", + "räum bei mir auf, während du da draußen bist!" ], "sam002": [ - "This is Samos. Now that you boys are here", - "I want you to get up to my old hut. There is something there", - "that we need! Good luck, and watch our for Metal Heads." + "Das ist Samos. Jetzt, wo ihr Jungs hier seid,", + "Ich möchte, dass du zu meiner alten Hütte gehst. Da ist etwas", + "das brauchen wir! Viel Glück und haltet Ausschau nach Metal Heads." ], "sam003": [ - "This is Samos, Jak. the Metal Heads must have taken", - "the giant gate ring to their Nest in the Wasteland.", - "If they're ever going to use that ring to open a rift back", - "to our old village, we need to get into the Nest and find it." + "Das ist Samos, Jak. Die Metal Heads müssen", + "der riesige Torring zu ihrem Nest im Ödland.", + "Wenn sie diesen Ring jemals benutzen werden, um einen Riss zu öffnen,", + "zu unserem alten Dorf. Wir müssen ins Nest gelangen und es finden." ], "sam004": [ - "You did well, Jak. Luckily, the Precursor Stone wasn't in that", - "bomb when it went off or none of us would be here", - "right now. Come back to the race garage", - "as soon as you can." + "Das hast du gut gemacht, Jak. Zum Glück war der Precursor-Stein nicht in dem", + "Bombe, als sie hochging, sonst wäre keiner von uns hier", + "jetzt sofort. Komm zurück in die Renngarage", + "sobald du kannst." ], "sam005": [ - "Good work so far, boys!", - "Find Young Samos and give him the Life Seed." + "Gute Arbeit bisher, Jungs!", + "Finden Sie den jungen Samos und geben Sie ihm den Lebenssamen." ], "sam006": [ - "Finally, you got here! Find the Lurker Totem", - "and retrieve a piece of the Seal of Mar on its top." + "Endlich bist du da! Finde das Lurker-Totem", + "und holen Sie sich ein Stück des Siegels von Mar von der Spitze." ], "sam007": [ - "You've got to get the boy safely to the Power Station, Jak!" + "Du musst den Jungen sicher zum Kraftwerk bringen, Jak!" ], "sam008": [ - "Thank you for protecting us, Jak.", - "We'll meet you at the Nest." + "Danke, dass du uns beschützt, Jak.", + "Wir treffen uns im Nest." ], "sigc001": [ - "Hold on there, we need to teach you how to use this baby!" + "Warten Sie, wir müssen Ihnen zeigen, wie Sie dieses Baby benutzen!" ], "sigc002": [ - "The Scatter Gun is a good short-range weapon", - "with a wide field of fire." + "Die Scatter Gun ist eine gute Waffe für kurze Distanzen", + "mit weitem Schussfeld." ], "sigc003": [ - "To fire the weapon, press the trigger." + "Um die Waffe abzufeuern, drücken Sie den Abzug." ], "sigc004": [ - "Good! Some kick, huh?" + "Gut! Ein echter Kick, oder?" ], "sigc005": [ - "It's not the fastest firing weapon in the world, though." + "Allerdings ist es nicht die am schnellsten feuernde Waffe der Welt." ], "sigc006": [ - "You can put your weapon away or pull it out at anytime." + "Sie können Ihre Waffe jederzeit wegstecken oder herausziehen." ], "sigc007": [ - "Try putting the weapon away." + "Versuchen Sie, die Waffe wegzustecken." ], "sigc008": [ - "Easy, huh?" + "Einfach, oder?" ], "sigc009": [ - "Now take the weapon back out." + "Nehmen Sie nun die Waffe wieder heraus." ], "sigc010": [ - "Good!" + "Gut!" ], "sigc011": [ - "You can find red ammo inside Krimzon Guard crates." + "Sie finden rote Munition in den Kisten der Krimzon-Wache." ], "sigc012": [ - "Shoot the crates." + "Schieße auf die Kisten." ], "sigc013": [ - "Great, now you're ready!" + "Großartig, jetzt sind Sie bereit!" ], "sigc014": [ - "Want to try the Scatter Gun course?" + "Möchten Sie den Scatter Gun-Kurs ausprobieren?" ], "sigc015": [ - "The blaster is a good all-around choice", - "with a nice rate of fire." + "Der Blaster ist eine gute Allround-Wahl", + "mit einer guten Feuerrate." ], "sigc016": [ - "This weapon requires more aiming ability." + "Diese Waffe erfordert mehr Zielfähigkeit." ], "sigc017": [ - "You can switch weapon modes at anytime." + "Sie können den Waffenmodus jederzeit wechseln." ], "sigc018": [ - "You can find yellow ammo in crates." + "Gelbe Munition finden Sie in Kisten." ], "sigc022": [ - "Would you like to test your skills on the gun course?" + "Du möchtest Deine Fertigkeiten im Schießparcours testen?" ], "sigc023": [ - "Which course do you want to play?" + "Welchen Platz möchten Sie spielen?" ], "sigc024": [ - "Shoot every target. The faster you shoot each target", - "the more points you'll get." + "Schieße auf jedes Ziel. Je schneller du auf jedes Ziel schießt,", + "desto mehr Punkte erhalten Sie." ], "sigc025": [ - "Hold your fire on civvies.", - "Hit a friendly target and points will be deducted." + "Feuern Sie nicht auf Zivilisten.", + "Wenn Sie ein befreundetes Ziel treffen, werden Ihnen Punkte abgezogen." ], "sigc026": [ - "Good luck." + "Viel Glück." ], "sigc027": [ - "Lock and load. Ready, go!" + "Laden und entsichern. Fertig, los!" ], "sigc028": [ - "Perfect! You can be my backup any day." + "Perfekt! Du kannst jederzeit mein Backup sein." ], "sigc029": [ - "You did it, excellent shooting!" + "Du hast es geschafft, hervorragende Aufnahme!" ], "sigc030": [ - "Nice shooting! You got potential, kid!" + "Guter Schuss! Du hast Potenzial, Junge!" ], "sigc031": [ - "Not bad, you'll do." + "Nicht schlecht, das schaffst du." ], "sigc032": [ - "Try again, rookie. You're still a bit rusty with that hardware." + "Versuchen Sie es noch einmal, Anfänger. Sie sind mit der Hardware noch etwas eingerostet." ], "sigc033": [ - "Not bad, but not good. Try again?" + "Nicht schlecht, aber auch nicht gut. Nochmal versuchen?" ], "sigc034": [ - "Close, but in the thick, close won't cut it. Try again?" + "Knapp, aber im Dickicht reicht Knappheit nicht aus. Nochmal versuchen?" ], "sigc035": [ - "Care to try again? Or is your momma calling?" + "Willst du es noch einmal versuchen? Oder ruft deine Mama an?" ], "sigc036": [ - "You're not up to speed yet, try again?" + "Du bist noch nicht auf dem Laufenden, möchtest du es noch einmal versuchen?" ], "sigc037": [ - "You gotta shoot those targets faster!" + "Sie müssen schneller auf diese Ziele schießen!" ], "sigc038": [ - "Be the gun, baby!" + "Sei die Waffe, Baby!" ], "sigc039": [ - "It's all about reaction time." + "Es kommt alles auf die Reaktionszeit an." ], "sigc040": [ - "Different gun modes come in handy against different targets." + "Verschiedene Waffenmodi sind gegen unterschiedliche Ziele nützlich." ], "sigc041": [ - "Be cool and you'll rule." + "Bleib cool und du wirst regieren." ], "sigc043": [ - "Try switching to the Scatter Gun." + "Versuchen Sie, zur Scatter Gun zu wechseln." ], "sigc053": [ - "Faster on the trigger, cherry." + "Schneller am Abzug, Kirsche." ], "sigc054": [ - "That was a civilian!" + "Das war ein Zivilist!" ], "sigc055": [ - "I said \"don't shoot civvies,\" itchy finger!" + "Ich habe gesagt: „Erschießt keine Zivilisten“, juckender Finger!" ], "sigc056": [ - "Great job!" + "Gut gemacht!" ], "sigc057": [ - "Awesome round, I feel sorry for those Metal Heads already." + "Tolle Runde, die Metalheads tun mir jetzt schon leid." ], "sigc058": [ - "That was a sweet round, you make it look easy!" + "Das war eine schöne Runde, bei dir sieht es einfach aus!" ], "sigc059": [ - "You smoked that course!" + "Den Kurs hast du gerockt!" ], "sigc060": [ - "The Metal Heads will eat you alive, rookie! Do it over!" + "Die Metalheads werden dich bei lebendigem Leibe auffressen, Neuling! Mach es noch mal!" ], "sigc061": [ - "You need some practice." + "Du brauchst etwas Übung." ], "sigc062": [ - "I remember my rookie days, keep trying." + "Ich erinnere mich an meine Anfängertage. Versuch es weiter." ], "sigc063": [ - "Perfect round! You are the man." + "Perfekte Runde! Du bist der Mann." ], "sigc064": [ - "Perfect shooting! I'm impressed." + "Perfektes Shooting! Ich bin beeindruckt." ], "sigc065": [ - "Whoa, rock and roll, baby! That was a perfect round." + "Whoa, Rock and Roll, Baby! Das war eine perfekte Runde." ], "sigc066": [ - "Nice shot!" + "Schönes Foto!" ], "sigc067": [ - "Wasted 'em!" + "Verschwendet!" ], "sigc068": [ - "Very nice! Reminds me of me." + "Sehr schön! Erinnert mich an mich." ], "sigc069": [ - "Make 'em fear you." + "Lass sie dich fürchten." ], "sigc070": [ - "Good combo!" + "Gute Kombination!" ], "sigc071": [ - "I love seeing you work!" + "Ich liebe es, Ihnen bei der Arbeit zuzusehen!" ], "sigc072": [ - "Now switch back to the Blaster." + "Wechseln Sie jetzt zurück zum Blaster." ], "sigc073": [ - "You can combo your attacks by kicking,", - "then firing your weapon." + "Sie können Ihre Angriffe kombinieren, indem Sie treten,", + "und feuern Sie dann Ihre Waffe ab." ], "sigc074": [ - "Try a kick-shot combo." + "Versuchen Sie eine Kick-Shot-Kombination." ], "sigc075": [ - "Kick the first target, then shoot while kicking", - "to automatically hit the second target." + "Treten Sie auf das erste Ziel und schießen Sie dann beim Treten", + "um automatisch das zweite Ziel zu treffen." ], "sigc076": [ - "Great move!" + "Toller Zug!" ], "sigc077": [ - "Not quite, try again. Kick then shoot, almost at the same time." + "Nicht ganz. Versuchen Sie es noch einmal. Treten Sie und schießen Sie, fast gleichzeitig." ], "sigc078": [ - "Make sure you shoot while you're kicking to get the combo." + "Stellen Sie sicher, dass Sie schießen, während Sie treten, um die Kombination zu erhalten." ], "sigc079": [ - "Give it another shot." + "Versuchen Sie es noch einmal." ], "sigc080": [ - "Now that's a Wastelander move!", - "They won't know what hit 'em!" + "Das ist ein Wastelander-Move!", + "Sie werden nicht wissen, was sie getroffen hat!" ], "sigc081": [ - "Think you can handle the Blaster course?" + "Denken Sie, dass Sie den Blaster-Kurs bewältigen können?" ], "sigf001": [ - "You wasted 'em all! I'm still not sure why combat Metal Heads", - "are scouting this close to the city. To be honest,", - "I wasn't sure you could handle this gig, nice work!" + "Du hast sie alle vernichtet! Ich bin mir immer noch nicht sicher, warum ich gegen Metalheads kämpfen soll", + "so nah an der Stadt herumstöbern. Ehrlich gesagt,", + "Ich war nicht sicher, ob Sie diesen Auftritt bewältigen könnten, gute Arbeit!" ], "sigt003": [ - "Here we go!" + "Auf geht's!" ], "sigt004": [ - "Follow me!" + "Folgen Sie mir!" ], "sigt005": [ - "Get behind me while I toast that tank." + "Geh hinter mich, während ich auf den Tank anstoße." ], "sigt006": [ - "Hurry up kid, I don't have all day!" + "Beeil dich, Kind, ich habe nicht den ganzen Tag Zeit!" ], "sigt007": [ - "This way!" + "Hier entlang!" ], "sigt008": [ - "Toast those bad boys up ahead." + "Toasten Sie diese bösen Jungs da vorne." ], "sigt009": [ - "Quick! Drop the bridge!" + "Schnell! Lass die Brücke fallen!" ], "sigt010": [ - "Jump up and grab the bridge to bring it down." + "Springen Sie hoch und greifen Sie nach der Brücke, um sie zum Einsturz zu bringen." ], "sigt011": [ - "Let's get across the bridge before they come back." + "Lasst uns über die Brücke gehen, bevor sie zurückkommen." ], "sigt012": [ - "There's our first target, keep the other creatures back", - "while I charge up the Peacemaker." + "Da ist unser erstes Ziel, halte die anderen Kreaturen zurück", + "während ich den Peacemaker auflade." ], "sigt013": [ - "That's one fried Metal Head." + "Das ist ein durchgeknallter Metalhead." ], "sigt014": [ - "Let's get to the next target." + "Kommen wir zum nächsten Ziel." ], "sigt015": [ - "With Metal Heads I say shoot first, ask questions later." + "Metalheads sage ich: Erst schießen, dann Fragen stellen." ], "sigt017": [ - "Stay with me!" + "Bleib bei mir!" ], "sigt019": [ - "Waste the suckers!" + "Verschwende die Trottel!" ], "sigt020": [ - "Great, kid, great! Don't get cocky." + "Großartig, Junge, großartig! Werde nicht überheblich." ], "sigt021": [ - "There's the second scumbag, sittin' pretty." + "Da sitzt der zweite Dreckskerl hübsch da." ], "sigt022": [ - "Cover me!" + "Bedecke mich!" ], "sigt023": [ - "Boom, baby! One less Metal Head to think about." + "Boom, Baby! Ein Metalhead weniger, an den man denken muss." ], "sigt024": [ - "Next target." + "Nächstes Ziel." ], "sigt025": [ - "Watch my six, while I toast this bad boy.", - "The trick is to not hit the pipes." + "Pass auf mich auf, während ich auf diesen bösen Jungen anstoße.", + "Der Trick besteht darin, die Rohre nicht zu treffen." ], "sigt026": [ - "Now that's what I call blowing someone's mind." + "Das nenne ich es, jemandem den Verstand zu rauben." ], "sigt027": [ - "Gotta thread the needle this time." + "Diesmal muss ich den Faden durch die Nadel ziehen." ], "sigt028": [ - "Hahaha, Metal Head flambé." + "Hahaha, Metal Head ist geflammt." ], "sigt029": [ - "Look out! We've got company!" + "Achtung, wir haben Besuch!" ], "sigt030": [ - "Damn! My gun's jammed, take over!" + "Verdammt! Meine Waffe klemmt, übernehmt!" ], "sigt031": [ - "Get 'em while I fix my gun!" + "Hol sie dir, während ich meine Waffe repariere!" ], "sigt032": [ - "Okay, the Peacemaker is back online. Let's move!" + "Okay, der Peacemaker ist wieder online. Los geht‘s!" ], "sigt033": [ - "Last target, then we go home." + "Letztes Ziel, dann geht es nach Hause." ], "sigt036": [ - "Here comes trouble." + "Das gibt Ärger." ], "sigt037": [ - "Did ya miss me?" + "Habt ihr mich vermisst?" ], "sigt038": [ - "Say \"good night,\" baby." + "Sag „Gute Nacht“, Baby." ], "sigt039": [ - "Thanks for covering my butt, that was close!" + "Danke, dass du mir den Hintern gerettet hast, das war knapp!" ], "sigt043": [ - "Stay with me!" + "Bleib bei mir!" ], "sigt044": [ - "Stay close or we'll both be dead!" + "Bleib in deiner Nähe, sonst sind wir beide tot!" ], "sigt045": [ - "Get over here and stay close!" + "Komm her und bleib in deiner Nähe!" ], "sigt046": [ - "You wanna play, huh?" + "Du willst spielen, was?" ], "sigt047": [ - "Oh, you got games?" + "Oh, du hast Spiele?" ], "sigt049": [ - "You cherries can't handle this mission, we're through!" + "Ihr Kirschen könnt diese Mission nicht bewältigen, wir sind erledigt!" ], "sigt052": [ - "I don't work with amateurs!" + "Ich arbeite nicht mit Amateuren!" ], "sigt053": [ - "You're more trouble than you're worth!" + "Sie machen mehr Ärger, als Sie wert sind!" ], "sigt054": [ - "Come back when you're serious!" + "Komm wieder, wenn du es ernst meinst!" ], "sigt056": [ - "You want some of this?!" + "Willst du etwas davon?!" ], "sigt057": [ - "Drop that lift-cap while I hold them off." + "Lassen Sie die Liftkappe fallen, während ich sie aufhalte." ], "sigt058": [ - "Take 'em all out!" + "Schaltet sie alle aus!" ], "sigt059": [ - "Great, no time to celebrate." + "Großartig, keine Zeit zum Feiern." ], "sigt060": [ - "If I can't shoot it, it's someone else's problem.", - "You do something with those blocks." + "Wenn ich nicht schießen kann, ist das Problem jemand anderes.", + "Sie machen etwas mit diesen Blöcken." ], "sigt061": [ - "You gotta figure out the blocks, man." + "Du musst die Blöcke herausfinden, Mann." ], "sigt062": [ - "Did you hear something?" + "Hast du etwas gehört?" ], "sigt063": [ - "That's one big ugly Metal Head." + "Das ist ein großer, hässlicher Metalhead." ], "sigt064": [ - "Shootin' this one's only going to get it mad, run!" + "Auf dieses Ding zu schießen wird es nur wütend machen, lauf!" ], "sigt065": [ - "See ya on the flipside!" + "Wir sehen uns auf der anderen Seite!" ], "sigt066": [ - "Gone with the wind." + "Vom Winde verweht." ], "sigt067": [ - "Later alligator." + "Später Alligator." ], "sigt068": [ - "I think that's the last we'll see of him." + "Ich glaube, das ist das Letzte, was wir von ihm sehen." ], "sigt069": [ - "You figure this out, I'll cover your butt." + "Du findest das heraus und ich werde deinen Hintern retten." ], "sigt070": [ - "This is your gig, baby. Solve it, so we can go home." + "Das ist dein Ding, Baby. Löse es, damit wir nach Hause gehen können." ], "sigt071": [ - "Great, here comes that bad boy again. Move!" + "Toll, da kommt der böse Junge schon wieder. Beweg dich!" ], "sigt072": [ - "Run!" + "Laufen!" ], "sigt073": [ - "Go, go, go!" + "Geh! Geh! Geh!" ], "sigt074": [ - "He's gaining!" + "Er holt auf!" ], "sigt075": [ - "Keep moving!" + "Bleib in Bewegung!" ], "sigt076": [ - "Faster!" + "Schneller!" ], "sigt077": [ - "It's gonna be close!" + "Es wird knapp!" ], "sigt078": [ - "Move your butts!" + "Bewegt euren Hintern!" ], "sigt082": [ - "Buddy, you don't wanna piss me off." + "Kumpel, du willst mich nicht verärgern." ], "sigt083": [ - "You got a death wish?!" + "Du hast einen Todeswunsch?!" ], "sigt087": [ - "Have a little pain right back!" + "Habe gleich leichte Schmerzen im Rücken!" ], "sigt089": [ - "Never trust a rookie." + "Traue niemals einem Anfänger." ], "sigt090": [ - "We're finished until you guys get serious." + "Bis ihr es ernst meint, sind wir fertig." ], "sigt091": [ - "This mission is obviously out of your league." + "Diese Mission übersteigt offensichtlich Ihre Fähigkeiten." ], "sigt092": [ - "You're wasting my time, this mission is over." + "Sie verschwenden meine Zeit, diese Mission ist vorbei." ], "sigt093": [ - "Uhh... ugh...." + "Ähh... pfui..." ], "sigt100": [ - "Rage before beauty, buddy." + "Wut vor Schönheit, Kumpel." ], "sigt101": [ - "Let's move!" + "Lass uns gehen!" ], "sigt102": [ - "I love the smell of burning metal!" + "Ich liebe den Geruch von brennendem Metall!" ], "sigt103": [ - "Just a walk in the park." + "Nur ein Spaziergang im Park." ], "sigt104": [ - "Follow me!" + "Folgen Sie mir!" ], "sigt105": [ - "Let's go!" + "Lass uns gehen!" ], "sigt106": [ - "This way!" + "Hier entlang!" ], "sigt107": [ - "Over here!" + "Hier drüben!" ], "sigt108": [ - "Rollin' baby!" + "Rollendes Baby!" ], "sigt109": [ - "Blow 'em a kiss of death." + "Gib ihnen einen Todeskuss." ], "sigt110": [ - "I love dead-heads!" + "Ich liebe Deadheads!" ], "sigt111": [ - "Kiss your shiny butt goodbye!" + "Verabschieden Sie sich von Ihrem glänzenden Hintern!" ], "sigt112": [ - "Born to kill baby!" + "Geboren, um Baby zu töten!" ], "sigt113": [ - "Two to the chest, one to the head." + "Zwei in die Brust, einer in den Kopf." ], "spot004": [ - "Come out and cheer for me as I destroy the competition once again on the track.", - "This year's racing final will be to die for, I guarantee more thrills and more spills.", - "This time I want blood!...Bring the kids." + "Kommen Sie raus und feuern Sie mich an, wenn ich die Konkurrenz auf der Strecke wieder einmal zerstöre.", + "Das diesjährige Rennfinale wird ein Traum, ich garantiere noch mehr Nervenkitzel und Stürze.", + "Diesmal will ich Blut! ... Bringen Sie die Kinder mit." ], "tess001": [ - "Hey, guys! This is Tess. Before Krew left, I saw him hide", - "something in the game machine here. Knowing Krew,", - "it's probably something valuable.", - "You might wanna come check it out." + "Hey Leute! Das ist Tess. Bevor Krew ging, sah ich ihn sich verstecken", + "etwas in der Spielmaschine hier. Krew kennen,", + "es ist wahrscheinlich etwas Wertvolles.", + "Vielleicht möchten Sie vorbeikommen und es sich ansehen." ], "tor001": [ - "The operation was a success. All Underground members are safe.", - "Come back to the hideout, I have a new mission for you while we wait for this alert to blow over." + "Die Operation war erfolgreich. Alle Untergrundmitglieder sind in Sicherheit.", + "Kommen Sie zum Versteck zurück, ich habe eine neue Mission für Sie, während wir darauf warten, dass dieser Alarm vorüber ist." ], "tor002": [ - "That should take some heat off the streets. Good work, I couldn't have done it better myself." + "Das sollte den Druck auf die Straßen etwas verringern. Gute Arbeit, ich hätte es selbst nicht besser machen können." ], "tor003": [ - "That's it, Jak, you're up! Try not to trigger any alarms, the garrison guards will be tough.", - "Get to the prison cell block and find the prisoners. Once there, we'll turn on the Warp Gate inside to get you all back out. Good luck." + "Das war's, Jak, du bist dran! Versuche, keinen Alarm auszulösen, die Garnisonswachen werden hart sein.", + "Gehen Sie zum Zellenblock des Gefängnisses und suchen Sie die Gefangenen. Dort angekommen, schalten wir das Warp-Tor ein, um Sie alle wieder herauszuholen. Viel Glück." ], "tor004": [ - "Ok, my old access codes should help Vin turn off the magnetic seal for the Fortress door." + "OK, meine alten Zugangscodes sollten Vin helfen, das Magnetsiegel für die Festungstür auszuschalten." ], "tor005": [ - "Jak, this is Torn, the city is under Metal Head attack. There's a large force moving toward the city wall from the ocean.", - "We need people manning the tower gunpods to stop that assault. Meet me at the seaside ocean wall in the Port, hurry!", - "We need every man we can get!" + "Jak, hier ist Torn. Die Stadt wird von den Metal Heads angegriffen. Eine große Streitmacht bewegt sich vom Meer aus auf die Stadtmauer zu.", + "Wir brauchen Leute, die die Geschütztürme besetzen, um diesen Angriff zu stoppen. Wir treffen uns an der Meeresmauer im Hafen, beeil dich!", + "Wir brauchen jeden Mann, den wir kriegen können!" ], "tor007": [ - "Jak, it's a guard roadblock, get out of there!" + "Jak, das ist eine Straßensperre durch Wachen. Verschwinde da!" ], "tor008": [ - "They've set up a roadblock, they're onto you!" + "Sie haben eine Straßensperre errichtet, sie sind Ihnen auf der Spur!" ], "torn024": [ - "More coming in!" + "Es kommt noch mehr!" ], "tswm001": [ - "You can do it, Daxter!" + "Du schaffst das, Daxter!" ], "tswm002": [ - "Keep going, Daxter." + "Mach weiter, Daxter." ], "tswm003": [ - "Go, go, go!" + "Geh! Geh! Geh!" ], "tswm004": [ - "Wow! What an animal!" + "Wow! Was für ein Tier!" ], "tswm005": [ - "You got it!" + "Du hast es!" ], "tswm006": [ - "Nice slam!" + "Schöner Knaller!" ], "tswm007": [ - "Ooh ho ho, baby!" + "Ooh ho ho, Baby!" ], "tswm008": [ - "Great shot, Daxter!" + "Toller Schuss, Daxter!" ], "tswm009": [ - "You're almost there!" + "Du bist fast da!" ], "tswm010": [ - "You can win, baby!" + "Du kannst gewinnen, Baby!" ], "tswm011": [ - "My hero!" + "Mein Held!" ], "tswm012": [ - "Look at him go!" + "Schau, wie er geht!" ], "tswm013": [ - "You ARE Orange Lightning!" + "Du BIST Orange Lightning!" ], "tswm014": [ - "Just a few more!" + "Nur noch ein paar!" ], "tswm015": [ - "Hit him again!" + "Schlag ihn noch mal!" ], "tswm016": [ - "Yes!" + "Ja!" ], "tswm017": [ - "That's my naughty ottsel!" + "Das ist mein frecher Otter!" ], "tswm018": [ "Oh!" ], "tswm019": [ - "That wasn't good." + "Das war nicht gut." ], "tswm020": [ - "Don't hit the red ones!" + "Schlagen Sie nicht die Roten!" ], "tswm021": [ - "Ooh!" + "Oh!" ], "tswm022": [ - "That took points away!" + "Das hat Punkte gekostet!" ], "tswm023": [ - "You did it!" + "Du hast es geschafft!" ], "tswm024": [ - "Daxter, you won!" + "Daxter, du hast gewonnen!" ], "tswm025": [ - "Yes! You're the man! I mean... the animal." + "Ja! Du bist der Mann! Ich meine... das Tier." ], "tswm026": [ - "You beat the game, Daxter!" + "Du hast das Spiel gewonnen, Daxter!" ], "tswm027": [ - "Where'd you learn to pound like that?" + "Wo hast du gelernt, so zu hämmern?" ], "tswm028": [ - "That was amazing!" + "Das war Hervorragend!" ], "tswm029": [ - "Pretty good for a little furball." + "Ziemlich gut für einen kleinen Fellknäuel." ], "tswm030": [ - "Ooh... Not enough points!" + "Oh ... nicht genug Punkte!" ], "tswm031": [ - "No! You lost..." + "Nein! Du hast verloren..." ], "tswm032": [ - "Awww... You lost again!" + "Ohhhh ... du hast schon wieder verloren!" ], "tswm033": [ - "So close!" + "So nah!" ], "tswm034": [ - "One more time." + "Ein Mal noch." ], "tswm035": [ - "You can do it!" + "Du kannst es schaffen!" ], "tswm036": [ - "You have to try again!" + "Du musst es noch einmal versuchen!" ], "tswm037": [ - "You have to beat the game, Daxter." + "Du musst das Spiel gewinnen, Daxter." ], "tswm038": [ - "Try again!" + "Versuchen Sie es erneut!" ], "tswm039": [ - "Ah! That was a bad one!" + "Ah! Das war schlecht!" ], "tswm040": [ - "Don't hit the bad ones, Daxter." + "Schlag nicht die Bösen, Daxter." ], "tswm041": [ - "You hit a bad Metal Head." + "Du hast einen bösen Metalhead getroffen." ], "tswm042": [ - "Not again!" + "Nicht noch einmal!" ], "tswm043": [ - "Oh no!" + "Ach nein!" ], "tswm044": [ - "Daxter..! You need more points!" + "Daxter..! Du brauchst mehr Punkte!" ], "tswm045": [ - "Keep going...!" + "Weitermachen...!" ], "tswm046": [ - "Oh, Daxter... did you get your whiskers singed?" + "Oh, Daxter, hast du dir die Schnurrhaare versengt?" ], "tswm047": [ - "You're gonna score!" + "Du wirst punkten!" ], "tswm048": [ - "You're almost there...!" + "Du bist fast da...!" ], "tswm049": [ - "Just a few more!" + "Nur noch ein paar!" ], "tswm050": [ - "We have a winner!" + "Wir haben einen Sieger!" ], "tswm051": [ - "Oh! That was a bad one." + "Oh! Das war schlecht." ], "tswm052": [ - "Don't hit the bad ones, Daxter." + "Schlag nicht die Bösen, Daxter." ], "tswm053": [ - "Daxter, you hit a bad Metal Head!" + "Daxter, du hast einen schlimmen Metalhead getroffen!" ], "tswm054": [ - "Daxter, you won!!" + "Daxter, du hast gewonnen!!" ], "tswm055": [ - "You did it, fur boy!" + "Du hast es geschafft, Felljunge!" ], "tswm056": [ - "Yes!! You beat the game!" + "Ja!! Du hast das Spiel gewonnen!" ], "tswm057": [ - "I knew you could do it." + "Ich wusste, dass du es schaffst." ], "vin002": [ - "Okay, the B-Zone Power Grid is back online.", - "Have fun being killed in the Palace." + "Okay, das B-Zone-Stromnetz ist wieder online.", + "Viel Spaß beim Töten im Palast." ], "vin003": [ - "You destroyed the last of the Metal Head eggs!", - "That should give us a little more eco for the city.", - "Good work!" + "Du hast das letzte Metal Head-Eier zerstört!", + "Das soll uns etwas mehr Öko für die Stadt bringen.", + "Gute Arbeit!" ], "vin004": [ - "You still haven't gotten all the Metal Head eggs!", - "Make sure you get 'em all, or I'm gonna have", - "a nervous breakdown!" + "Du hast noch nicht alle Metal Head-Eier bekommen!", + "Sorge dafür, dass du sie alle bekommst, sonst muss ich", + "ein nervöser Zusammenbruch!" ], "vin011": [ - "Thank goodness you blew up those wells.", - "I sure don't want any more Metal Heads coming around here.", - "Good work, boys! I owe ya one." + "Gott sei Dank haben Sie diese Brunnen gesprengt.", + "Ich will sicher nicht, dass noch mehr Metalheads hierher kommen.", + "Gute Arbeit, Jungs! Ich schulde euch was." ], "vin012": [ - "Good work, guys! The fewer Metal Head eggs", - "we allow to hatch, the fewer of those nasty monsters", - "we'll have to fight!" + "Gute Arbeit, Jungs! Je weniger Metal Head Eier", + "wir zulassen, dass weniger dieser fiesen Monster schlüpfen", + "wir müssen kämpfen!" ], "vin013": [ - "Jak... Kor...", - "Construction... Site...", - "Ngh..." + "Wie... Kor...", + "Baustelle...", + "..." ], "vin014": [ - "Once again you guys have saved my butt!", - "Maybe now I'll get a raise. Or a long vacation.", - "God knows I could use one. Thanks for the help!" + "Wieder einmal habt ihr mir den Arsch gerettet!", + "Vielleicht bekomme ich jetzt eine Gehaltserhöhung. Oder einen langen Urlaub.", + "Gott weiß, ich könnte einen gebrauchen. Danke für die Hilfe!" ], "vin015": [ - "The shield wall is down! I repeat - the shield wall is down!", - "Sabotage! Kor did it!", - "I knew Metal Heads would be the end of me!", - "OH NO! Metal Heads are at the door!!", - "They're breaking through!!", - "Too many of them!! Jak!!! AHHHH!!!" + "Die Schildmauer ist gefallen! Ich wiederhole: Die Schildmauer ist gefallen!", + "Sabotage! Kor war es!", + "Ich wusste, dass Metal Heads mein Ende sein würden!", + "OH NEIN! Die Metalheads stehen vor der Tür!!", + "Sie brechen durch!!", + "Zu viele davon!! Jak!!! AHHHH!!!" ], "ys001": [ - "Excellent work, boys! Come on back to the Hideout,", - "I have another task for you." + "Ausgezeichnete Arbeit, Jungs! Kommt zurück zum Hideout,", + "Ich habe eine weitere Aufgabe für Sie." ], "ys002": [ - "Nice shooting, my boy!", - "Good work, Jak!", - "We'll all sleep a little easier tonight." + "Guter Schuss, mein Junge!", + "Gute Arbeit, Jak!", + "Wir werden heute Nacht alle etwas ruhiger schlafen." ] }, "speakers": { "agent": "Agent", "ashelin": "Ashelin", "baron": "Baron Praxis", - "brutter": "Brutter", - "citizen-female": "Citizen", - "citizen-male": "Citizen", + "brutter": "Pleite", + "citizen-female": "Bürger", + "citizen-male": "Bürger", "computer": "Computer", - "darkjak": "Dark Jak", + "darkjak": "Dunkler Jak", "daxter": "Daxter", "errol": "Erol", - "grim": "Grim", - "guard": "Krimzon Guard", - "guard-a": "Guard A", - "guard-b": "Guard B", - "jak": "Jak", - "jinx": "Jinx", + "grim": "Grimmig", + "guard": "Krimzon-Wache", + "guard-a": "Wache A", + "guard-b": "Wache B", + "jak": "Wie", + "jinx": "Verhexen", "keira": "Keira", - "keira-before-class-3": "Mechanic", - "kid": "Kid", + "keira-before-class-3": "Mechaniker", + "kid": "Kind", "kor": "Kor", - "krew": "Krew", - "metalkor": "Metal Kor", + "krew": "Blut", + "metalkor": "Metall Kor", + "metalkor-before-consite": "Metal-Head-Anführer", + "metalkor-intro": "???", "mog": "Mog", - "onin": "Onin", - "oracle": "Oracle", - "pecker": "Pecker", - "precursor": "Precursor", + "onin": "Eins", + "oracle": "Orakel", + "pecker": "Schwanz", + "precursor": "Vorläufer", "samos": "Samos", - "sig": "Sig", + "sig": "Sagen", "tess": "Tess", - "torn": "Torn", + "torn": "Zerrissen", "vin": "Vin", - "youngsamos": "Young Samos", + "youngsamos": "Das junge Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_en-GB.json b/game/assets/jak2/subtitle/subtitle_lines_en-GB.json index 1eedfcf5e8..afcaf059c6 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_en-GB.json +++ b/game/assets/jak2/subtitle/subtitle_lines_en-GB.json @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", @@ -7852,4 +7854,4 @@ "youngsamos": "Young Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_en-US.json b/game/assets/jak2/subtitle/subtitle_lines_en-US.json index a24cadb60d..afcaf059c6 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_en-US.json +++ b/game/assets/jak2/subtitle/subtitle_lines_en-US.json @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", diff --git a/game/assets/jak2/subtitle/subtitle_lines_es-ES.json b/game/assets/jak2/subtitle/subtitle_lines_es-ES.json index c293e2b63f..aadf3a31ba 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_es-ES.json +++ b/game/assets/jak2/subtitle/subtitle_lines_es-ES.json @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Kor Cabezachapa", + "metalkor-before-consite": "Jefe Cabezachapa", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oráculo", @@ -7852,4 +7854,4 @@ "youngsamos": "Joven Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_fi-FI.json b/game/assets/jak2/subtitle/subtitle_lines_fi-FI.json index de8c233da6..4b98fb122f 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_fi-FI.json +++ b/game/assets/jak2/subtitle/subtitle_lines_fi-FI.json @@ -8,7 +8,7 @@ "Muistatko miten hypätään?" ], "DSbop003": [ - "Hyppää tuon laatikon päälle, niin pääset esteen yli." + "Hyppää tuon laatikon päälle niin pääset esteen yli." ], "DSbop004": [ "Oho, tuopa on korkea kieleke!", @@ -23,15 +23,15 @@ "En tiedä mihin he päätyivät." ], "DSbop007": [ - "En tiedä minne tuo repeämä meidät vei, mutta...", + "En tiedä minne se hullu repeämäkoje meidät vei, mutta...", "Se on jonkinlainen suuri kaupunki!" ], "DSbop008": [ - "Se on kova paikka, Jak. Muistatko", - "kuinka taistellaan eikö? Yritäppä rikkoa tuo laatikko potkullasi." + "Tämä on ankara paikka, Jak. Muistathan varmasti", + "kuinka taistellaan? Yritäs rikkoa tuo laatikko potkullasi." ], "DSbop009": [ - "Hyvältä näyttää toveri! Komea potku!", + "Hyvältä näyttää, toveri! Komea potku!", "Vihan purkua parhaimmillaan, vai mitä?" ], "DSbop010": [ @@ -45,7 +45,7 @@ ], "DSbop016": [ "Jos hyppäät ja sitten syöksyt alas, iskeydyt maahan", - "tarpeeksi lujaa voidaksesi rikkoa paljon juttuja.", + "tarpeeksi lujaa voidaksesi rikkoa juttuja.", "Rikkominen on hauskaa, eikös?" ], "DSbop017": [ @@ -112,7 +112,7 @@ "Jatka matkaa!" ], "agnt021": [ - "Tee se, mies, tee se!" + "Anna palaa!" ], "agnt022": [ "Kiirettä, hyvä mies!" @@ -274,7 +274,7 @@ "Jatka matkaa!" ], "agnt075": [ - "Tee se, mies, tee se!" + "Anna palaa!" ], "agnt076": [ "Kiirettä, hyvä mies!" @@ -442,13 +442,13 @@ "Okei, kiitos, onnea matkaan!" ], "agnt131": [ - "Mitä sinua pidätteli?" + "Mikä kesti niin kauan?" ], "agnt132": [ "Liiku kuin sinulla olisi tarkoitus!" ], "agnt133": [ - "Aja, aja, KV on jäljillämme!" + "Aja, aja, vartio on jäljillämme!" ], "agnt134": [ "Pysy terävänä, olemme melkein perillä!" @@ -463,8 +463,8 @@ "Varo itseäsi, olen nainen vain ulkopuolelta." ], "asha003": [ - "Annappas kun palautan sinut oikeaan mittaan", - "Ei sillä että sinulla olisi mitään mahdollisuuksia." + "Annas kun palautan sinut oikeaan kokoon...", + "Ei sillä, että sinulla sitä olisi." ], "asha004": [ "Pienet pyssyt eivät oikein sytytä minua." @@ -509,7 +509,7 @@ "Agh!" ], "asha018": [ - "Osut minuun vielä kerrankin niin menetät jotain kallisarvoista!" + "Osu minuun vielä kerrankin niin menetät jotain kallisarvoista!" ], "asha019": [ "Ei kovin fiksua!" @@ -539,7 +539,7 @@ "Ehkä minun pitäisi kulkea takanasi." ], "asha028": [ - "Minä en ota tuota!" + "En salli tuota!" ], "asha029": [ "Tee vielä noin, niin laitan sinut laulamaan sopraanon." @@ -630,15 +630,15 @@ ], "asht002": [ "Olit oikeassa, Jak. Mitä isäni tekee, on väärin.", - "Minun täytyy auttaa korjaamaan tämä. Jos pääset Asetehtaalle,", + "Minun täytyy auttaa korjaamaan tämä. Jos pääset asetehtaalle,", "voimme ehkä pysäyttää hänet. Tapaan sinut siellä." ], "asht006": [ "Luulen, että nyt on aika toimia.", "Metallipäät ovat niin keskittyneitä hyökkäämään kaupunkiin,", "että ne ovat saattaneet jättää pesänsä haavoittuvaksi.", - "Jak, sinun täytyy matkata Joutomaalle", - "ja rikkoa Pesän muuri keinolla millä hyvänsä.", + "Jak, sinun täytyy matkata joutomaalle", + "ja rikkoa pesän muuri keinolla millä hyvänsä.", "Ehkä, jos pääset sisälle ja päihität Metallipäiden johtajan,", "niiden armeija romahtaa. Se on uhkayritys,", "mutta se saattaa olla ainoa mahdollisuutemme." @@ -716,28 +716,28 @@ "Nämä liikkuvat aseet esiintyvät jatkuvasti kaupungissa, ne täytyy tuhota mahdollisimman pian." ], "bb06win": [ - "Taas läjä pommibottien romumetallia Vartion", + "Taas läjä pommibottien romumetallia vartion", "jätepuristimiin. Tehtävä suoritettu, Vastarinta on", "kiitollinen palveluksestasi." ], "bb07fail": [ - "Olet menettänyt agentin! ei hyvä ollenkaan, Jak! Tehtävä epäonnistui!" + "Menetit agentin! Ei ollenkaan hyvä, Jak! Tehtävä epäonnistui!" ], "bb07int": [ "Torn täällä, sinun on kuljetettava lisää agenttejamme uusiin paikkoihin kaupungissa.", - "KV:n vakoojat tarkkailevat jokaista liikettämme, joten vältä ongelmia. Onnea." + "Vartion vakoojat tarkkailevat jokaista liikettämme, joten vältä ongelmia. Onnea." ], "bb07win": [ - "Nice shuttle work! You're keepin' people alive out there." + "Hienoa kuljetustyötä! Pidät ihmisiä hengissä." ], "bb08fail": [ - "One of our best agents was arrested. The Shadow will NOT be", - "pleased! You failed." + "Yksi parhaista agenteistamme pidätettiin. Varjo ei tule olemaan", + "innoissaan! Tyrit tämän." ], "bb08int": [ - "Jak, some of our Agents have been compromised again.", - "Find each one and take them to special hideouts in the city.", - "The guard patrols are on high alert, so this is going to be a tough one. Keep your head down!" + "Jak, osa agenteistamme on jälleen vaarassa.", + "Etsi jokainen ja vie heidät erityisiin piilopaikkoihin kaupungissa.", + "Vartijapartiot ovat erittäin valppaina, joten tämä tulee olemaan haastavaa. Ole varovainen!" ], "bb08win": [ "Se oli hyvää ajoa, Jak.", @@ -747,22 +747,22 @@ "Sinulla kesti liian kauan, Jak. Me peruimme kokouksen." ], "bb09int": [ - "Jak, we're having an Underground meeting", - "with some special Agents. Pick up each Agent", - "and bring them to the meeting place quickly." + "Jak, Vastarinta pitää kokouksen", + "eräiden erityisten agenttien kanssa. Nouda jokainen agentti", + "ja kuljeta heidät kokouspaikalle ripeästi." ], "bb09win": [ - "Fast work, Jak! Some day, we might even", - "invite you to these meetings." + "Nopeaa työtä, Jak! Jonain päivänä saatamme jopa", + "kutsua sinut mukaan kokouksiimme." ], "bb10fail": [ - "Not fast enough, buddy! You've gotta be quick", - "with those deliveries." + "Et ollut tarpeeksi nopea! Sinun täytyy olla vikkelä", + "toimitusten kanssa." ], "bb10int": [ - "Jak, you've got to prove your driving skills once again.", - "One of our Agents dropped off a package,", - "I need it delivered to the Hideout. Immediately." + "Jak, sinun täytyy todistaa ajotaitosi jälleen kerran.", + "Yksi agentteistamme jätti paketin", + "ja se on toimitettava piilopaikkalle. Välittömästi." ], "bb10win": [ "Hyvää työtä, Jak!" @@ -828,7 +828,7 @@ "Mene nopeasti." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "Teit loistavaa työtä, Jak! Kiitos, tarkoitan sitä todella." ], "bb16fail": [ "Et tuhonnut tarpeeksi vartijoita.", @@ -836,192 +836,192 @@ ], "bb16int": [ "Jak, tässä Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "aiheutaa todellista vahinkoa vihollisillemme." + "Erolin henkilökohtainen eliittivartio on liikkeessä kaupungin läpi.", + "Meidän täytyy iskeä heitä ja kovaa! Nujerra tarpeeksi", + "vartijoita ennen kuin minun on peruutettava tehtävä.", + "Liian vähän vartijoita ja olemme menettäneet mahdollisuuden", + "aiheuttaa todellista vahinkoa vihollisillemme." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Hieno operaatio, Jak! Tuo jättää viestin Erolille." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Ilmeisesti vehje liian vaikeakäyttöinen. Sivuutamme sen toistaiseksi." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "Olemme arvioineet JET-laudan käyttöä Vastarinnan", + "tehtäviin. Kuulimme sinun olevan aika haka sen kanssa,", + "näytä meille mihin se pystyy. Kerää tarpeeksi pisteitä", + "tuomaribotin kanssa niin harkitsemme sen lisäämistä varustoomme." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", + "Vau! Saat ihan betonin järisemään tuolla vekottimella!", "Hyvää työtä." ], "bb18fail": [ - "I'm still not sure the JET-Board's that useful." + "En vieläkään usko JET-laudan olevan hyödyllinen." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Tässä on toinen hyvä paikka arvioida JET-laudan", + "suorituskykyä. Yritä saada tarpeeksi pisteitä myös täällä." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", - "catching us on those babies." + "Makeat liikkeet, Jak. Vartion kävisi aika hankalaksi", + "saavuttaa meitä noilla." ], "bb19fail": [ - "You didn't get them all. Try again." + "Et saanut niitä kaikkia. Yritä uudelleen." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "Arvioimme jäljittimien käyttöä tehtävissämme.", + "Kerää kaikki jäljittimet niin nopeasti kuin pystyt.", + "Sinun täytyy liikkua vikkelään tässä." ], "bb19win": [ "Erinomaista työtä. Olet suuri voimavara", "Vastarinnalle, Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "Liian hidasta, Jak! Kun Varjo kysyy, sinun täytyy toimia." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "Varjo tarvitsee sinun kerätä vihreää ecoa hänen", + "kokeisiinsa. Kerää kaikki ennen kuin eco katoaa." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "Ei paha. Annan hyvää palautetta Varjolle." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Jatka yrittämistä. Sinun on kehitettävä taitojasi täällä." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "Joskus tykkäämme \"lainata\" Karmiinivartion", + "laitteistoa. Hyppää tuon partiomopon selkään", + "ja osu kaikkiin kohteisiin määrätyssä ajassa." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Kauniisti ammuttu. Vartio rakastaisi sinua rekryyttinä.", + "Tässä on pieni palkkio pysyäksesi meidän puolella." ], "bb22fail": [ - "You didn't get the booths fast enough, Jak." + "Et hoitanut kaiuttimia tarpeeksi nopeasti, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "Osa paronin propagandasta herpaannuttaa", + "siviilejä. Tuhoa hänen kaiuttimet niin ehkä pysäytämme Praxisin", + "levittämästä valheitaan." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Hyvää työtä! Tuon pitäisi hiljentää paronia hieman." ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Hävisit, Jak. Jos haluat voittaa,", + "sinun tulee hioa nopeustaitojasi." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "Vastarinnan huippukilpailija tahtoo haastaa sinut", + "kisaan rengasradassa yksi.", + "Kestätkö pikku kilpailua?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Onneksi olkoon! Voitit haastajan!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "Veikkomme pesi sinut tässä. Onnea ensi kertaan." ], "bb24int": [ "Kiinnostaisiko pikku kisa, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "Ykköskuskimme haluaa haastaa sinut rengasradassa kaksi.", + "Tämä on hieman haastavampi.", + "Katsotaan, jos pystyt ylittämään haasteen." ], "bb24win": [ "Voitit hänet, Jak. Hyvin ajettu." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", + "Nähtävästi et ole kaupungin huippukuski, Jak.", "Hävisit!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", + "Vastarinnan kisamestari haastaa sinut jälleen,", + "tällä kertaa hankalassa rengasradassa kolme.", "Tämä tulee olemaan takkuista." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Onnittelut, voitit parhaan kisaajamme. Hyvin tehty." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "Tämä on Torn, hyvä Vastarinnan agentti tuntee kaupungin", + "läpikotaisin, näkemällä. Katsotaan, miten sinä pärjäät,", + "mene tähän paikkaan annetussa määräajassa", + "ja saat palkinnon. Mene!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Tässä on toinen mahdollisuus todistaa kaupungin tuntemuksesi." ], "bb28int": [ - "Find this place before time runs out." + "Etsi tämä paikka ennen kuin aika loppuu." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Tämä on hankala, voita aika tänne paikkaan." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Tunnistatko tämän paikan? Etsi se nopeasti ja saat palkinnon." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Tätä paikkaa ei hyvin tunneta, etsi se nopeasti niin olen vaikuttunut." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "Tahtoisin nähdä sinun löytävän tämän paikan. Yllätä minut, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Saavu tänne nopeasti ja yllätä minut." ], "bb34int": [ - "Here's another destination, get here quickly." + "Tässä on toinen kohde, mene tänne ripeästi." ], "bb35int": [ "Etsi tämä paikka, nopeasti!" ], "bb36int": [ - "Reach this area and be rewarded." + "Saavuta tämä paikka niin saat palkinnon." ], "bb37int": [ - "Think you can find this place?" + "Pystytkö löytämään tämän paikan?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "Ei niin hyvä, Jak! Ehkä sinun pitäisi kalibroida tuo lauta." ], "bb38int": [ - "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", + "Arvioimme edelleen JET-lautaa.", + "Katsotaan, jos pystyt keräämään kaikki energiatehostimet", "asetetussa määräajassa." ], "bb38win": [ - "Nice moves, fly-boy." + "Komeat liikkeet, lentäjä." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "Niin lähellä, mutta tässä työssä se tarkoittaa kuolemaa." ], "bb39int": [ - "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Surffaa JET-laudalla rengasradan läpi.", + "Voita aika niin tatuoin kasvosi kuin minulla." ], "bb39win": [ - "Good speed through the course, Jak!", + "Hyvä tahti radan läpi, Jak!", "Tuo näytti liian helpolta." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "Olit liian hidas tällä radalla" + "Taisit kohdata vertaisesi, Jak!", + "Olit liian hidas tällä radalla." ], "bb40int": [ - "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "katsotaan, jos voit suorittaa sen ajassa." + "Haluaisin nähdä sinun liitävän JET-laudalla toisen", + "rengasradan läpi. Teemme tästä hieman mielenkiintoisemman,", + "katsotaan, jos kyet suorittamaan sen ajoissa." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Vau! Jopa minä olisin kamppaillut tuon kanssa, hyvää työtä!" ], "bf001": [ "Kilpeni on läpäisemätön iskujasi vastaan!" @@ -1084,13 +1084,13 @@ "Kivi on minun!" ], "bf021": [ - "Anna se Kivi minulle!" + "Anna se kivi minulle!" ], "bf022": [ "Vapauta se!" ], "bf023": [ - "Haluan Kiven!" + "Haluan kiven!" ], "bf024": [ "Arrh, päästä irti!" @@ -1099,7 +1099,7 @@ "Se on minun!" ], "bf026": [ - "Kokeilehan näitä pikaisesti!" + "Kokeilehan näitä vaihteeksi!" ], "bf027": [ "Tässä pikku lahja!" @@ -1138,7 +1138,7 @@ "Kivi on minun! Anna kun minä näytän mihin se kykenee!" ], "bf039": [ - "Nyt saat nähdä Kiven voiman kykenevissä käsissä!" + "Nyt saat nähdä kiven voiman kykenevissä käsissä!" ], "bf040": [ "Miltäs valta nyt näyttää?" @@ -1285,7 +1285,7 @@ "Minun kilpeni on nyt latautunut!" ], "bf088": [ - "Kokeilehan näitä pikaisesti!" + "Kokeilehan näitä vaihteeksi!" ], "bf089": [ "Minun olisi pitänyt tappaa sinut aikoja sitten!" @@ -1433,21 +1433,21 @@ ], "bru001": [ "Suuri haiseva hanhikäärmeen hönkä sentään!", - "Sankareita Vaanijakansalle te olette!", + "Sankareita vaanijakansalle te olette!", "Nyt vain nähdä paljon onnelliset kiitokset! Ruhuhuh.", - "Te Vaanijaheimon kunniajäsenet nyt.", + "Te vaanijaheimon kunniajäsenet nyt.", "Me ei unohda - jos koskaan meitä tarvia, teitä me autamme!" ], "bru002": [ - "Kuulen teidän kaksi etsivän palan Marin kiiltävää Sinettiä.", + "Kuulen teidän kaksi etsivän palan Marin kiiltävää sinettiä.", "Brutter myös rakastaa kiiltävän kirkkaita asioita.", - "Minulla on pala, luulen. Se olla Vesislummeilla,", + "Minulla on pala, luulen. Se olla vesislummeilla,", "roikkumassa mökilläni, ja teille vapaasti saatavana.", "Lahja Brutterilta!" ], "bru004": [ - "Te kaksi hyvä! Ei parempaa soturia kaikissa Vaanijaheimoissa!", - "Te pitää Sinetti. Te rakastaa kiiltäviä asioita aivan kuten Brutter." + "Te kaksi hyvä! Ei parempaa soturia kaikissa vaanijaheimoissa!", + "Te pitää sinetti. Te rakastaa kiiltäviä asioita aivan kuten Brutter." ], "cit001": [ "Hei!" @@ -1543,16 +1543,16 @@ "Eiiii!" ], "cit100": [ - "Please!" + "Älä!" ], "cit100a": [ - "Please!" + "Älä!" ], "cit100b": [ - "Please!" + "Älä!" ], "cit100c": [ - "Please!" + "Älä!" ], "cit101": [ "Lopeta!" @@ -1663,7 +1663,7 @@ "Ole hyvä ja käy sisään." ], "cityv025": [ - "Warp Gate online." + "Portaali aktivoitu." ], "cityv026": [ "Varoitus: Ecovarat vähissä." @@ -1678,13 +1678,13 @@ "Ecoverkko epävakaa." ], "cityv030": [ - "Metallipäitä havaittu Louhoksella." + "Metallipäitä havaittu louhoksella." ], "cityv031": [ - "Metallipäitä havaittu Porausalueella." + "Metallipäitä havaittu porausalueella." ], "cityv032": [ - "Stand by for clearance." + "Odota hyväksyntää." ], "cityv033": [ "Mukavaa päivänjatkoa." @@ -1711,7 +1711,7 @@ "Hälytys: Kaupunki hyökkäyksen kohteena." ], "cityv041": [ - "Metallipää-hyökkäys käynnissä." + "Metallipää-hyökkäys meneillään." ], "cityv042": [ "Kaikki kansalaiset menevät turvapaikkoihin." @@ -1747,7 +1747,7 @@ "Minulla on oikeus käyttää voimaa." ], "cityv053": [ - "Yleinen hälytys: Mellakka käynnissä. Karmiinivartijat matkalla." + "Yleinen hälytys: Mellakka käynnissä. Karmiinivartijat ovat matkalla." ], "cityv054": [ "Antaudu. Sinut on pidätetty." @@ -1796,7 +1796,7 @@ "Hälytys: Ajoneuvo tuhoutuu välittömästi." ], "cityv076": [ - "Ole hyvä ja aja varovaisemmin seuraavalla kerralla." + "Ole hyvä ja aja varovaisemmin ensi kerralla." ], "cityv077": [ "Kiitos, kun käytitte ajoneuvoa." @@ -1820,55 +1820,55 @@ "Evakuoi välittömästi." ], "cityv087": [ - "Arriving at Throne Room floor." + "Saavutaan valtaistuinhuoneen kerrokseen." ], "cityv088": [ - "Arriving at ground floor." + "Saavutaan pohjakerrokseen." ], "cityv093": [ - "You have been sentenced to termination." + "Sinut on tuomittu terminointiin." ], "cityv094": [ "Tämä alue on rajoitettu.", "Aloitetaan terminointi äärimmäisellä ennakkoluulolla." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Tämä alue on avoinna vain Karmiinivartion henkilökunnalle." ], "cityv096": [ - "The city is on high alert." + "Kaupunki on erittäin valppaana." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "Kaupunki on hyökkäyksen kohteena.", + "Kaikki kansalaiset suunnatkaa turvapaikkoihin." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "Kaupunki on hyökkäyksen kohteena. Olkaa hyvä ja pysykää kodeissanne." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "Metallipää-hyökkääjät tunkeutuvat järjestelmään." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Onnittelut turvapassin saamisesta." ], "cityv107": [ "Luvaton Linnoituksen oven käyttö.", "Aktivoidaan turvatoimitankki." ], "cityv108": [ - "Gunpod weapons coming online." + "Tykin aseet aktivoituvat." ], "cityv109": [ - "Weapons overheating." + "Aseet ylikuumenevat." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "Aseet epäkunnossa. Odota jäähdytystä." ], "cityv111": [ - "Weapons back online." + "Aseet toiminnassa." ], "cityv112": [ - "The gunpod has taken severe damage." + "Tykki on saanut vakavia vaurioita." ], "cityv130": [ "Kaupungin kartta näkyy oikeassa alakulmassa." @@ -1881,117 +1881,117 @@ "Tunkeilijahälytys." ], "cityv135": [ - "Stand by." + "Odota." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Piirini ylikuormittuvat.", + "Kytke ohituskytkimeni päälle määräajassa", + "niin tulet palkituksi." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "Et onnistunut kytkemään ohituskytkimiä päälle ajoissa.", + "C-vyöhykkeen piirini ovat ylikuormittuneet." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "Onnistuit kytkemään päälle ohitukset", + "piireihini ajoissa.", + "Tässä on palkkio." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", - "to stabilize the Eco Grid." + "Tarvitsen hätävoimaa ecomuuntimilleni.", + "Kytke päälle kaikki käytettävissä olevat piirit nopeasti", + "ecoverkon vakauttamiseen." ], "cityv150": [ - "You didn't reach all the switches in time.", - "The Eco Grid is still unstable." + "Et saavuttanut kaikkia kytkimiä ajoissa.", + "Ecoverkko on yhä epävakaa." ], "cityv151": [ - "You successfully switched on the circuits", - "to stabilize the Eco Grid.", - "You have earned a reward." + "Onnistuit kytkemään päälle piirit", + "ecoverkon vakauttamiseen.", + "Olet ansainnut palkkion." ], "cityv152": [ - "I have detected a Dark Eco spill.", - "You must remove this hazard quickly", - "before the city is contaminated." + "Olen havainnut pimeän ecovuodon.", + "Tämä vaara on hävitettävä nopeasti", + "ennen kuin kaupunki saastuu." ], "cityv153": [ - "You did not remove all the Dark Eco quickly enough." + "Et hävittänyt kaikkea pimeää ecoa riittävän nopeasti." ], "cityv154": [ - "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "Hävitit pimeän ecovaaran ajoissa.", + "Kaupunki on teille kiitollisuuden velassa." ], "cityv155": [ - "Sensors indicate a cluster of Blue Eco in the city.", - "Collect all eco before it dissipates", - "and you will be rewarded." + "Sensorit havaitsevat kerääntymän sinistä ecoa kaupungissa.", + "Kerää kaikki eco ennen kuin se häviää", + "niin tulet palkituksi." ], "cityv156": [ - "You did not retrieve all of the eco." + "Et kerännyt kaikkea ecoa." ], "cityv157": [ - "You successfully retrieved the eco.", - "Here is your reward." + "Keräsit econ onnistuneesti.", + "Tässä on palkkiosi." ], "cityv158": [ - "Emergency response needed.", - "Runaway bomb bots detected and headed for", - "populated areas. Neutralize all bomb bots", - "before it's too late." + "Hätätoimia tarvitaan.", + "Karanneita pommibotteja havaittu ja suuntaamassa", + "asuttuja alueita kohti. Neutraloi kaikki pommibotit", + "ennen kuin on liian myöhäistä." ], "cityv159": [ - "You failed to neutralize the runaway bomb bots." + "Et onnistunut neutraloimaan karanneita pommibotteja." ], "cityv160": [ - "You destroyed the runaway bomb bots.", - "The city thanks you." + "Tuhosit karanneet pommibotit.", + "Kaupunki kiittää teitä." ], "cityv161": [ - "Get to this point in the game quickly", - "and you will receive a prize." + "Saavu tähän pisteeseen pelissä nopeasti", + "niin saat palkkion." ], "cityv162": [ - "Try to find this spot." + "Yritä löytää tämä paikka." ], "cityv163": [ - "Can you identify this place and get there?" + "Osaatko tunnistaa tämän paikan ja päästä sinne?" ], "cityv164": [ - "Make it here in the time allotted and a reward is yours." + "Saavu tänne määräajassa niin palkkio on sinun." ], "cityv165": [ - "Find this spot for a prize." + "Etsi tämä paikka palkkiosta." ], "cityv166": [ - "Get to this spot for a prize." + "Mene tähän paikkaan palkkiosta." ], "cityv167": [ - "Metal Heads have been detected in the gun course.", - "Neutralize them all immediately." + "Metallipäitä on havaittu aseradalla.", + "Neutraloi ne kaikki välittömästi." ], "cityv168": [ - "You did not kill them all." + "Et tappanut niitä kaikkia." ], "cityv169": [ - "Excellent shooting. Threat eliminated." + "Erinomaista ammuntaa. Uhka eliminoitu." ], "cityv170": [ - "Get a high score on the JET-Board and receive a prize." + "Hanki huippupisteet JET-laudalla niin saat palkinnon." ], "cityv171": [ - "Try for a high score and receive a prize." + "Yritä saada huippupisteet niin ansaitset palkinnon." ], "cityv172": [ - "You did not achieve a high enough score." + "Et saanut tarpeeksi korkeaa tulosta." ], "cityv173": [ - "Congratulations, you achieved a high enough score." + "Onnittelut, sinä saavutit tarpeeksi korkeat pisteet." ], "cityv174": [ - "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Tervetuloa stadionin keskustietokoneeseen.", + "Ole hyvä ja valitse haasteesi." ], "cityv175": [ "Huomio, kaikki kansalaiset:", @@ -2006,7 +2006,7 @@ "Luokan 3 kisa on alkamassa." ], "cityv178": [ - "Haluatko yrittää radan ennätystä?" + "Haluaisitko yrittää radan ennätystä?" ], "cityv179": [ "Onnittelut, sinä saavutit kultaisen sijan." @@ -2018,43 +2018,43 @@ "Onnittelut, sinä saavutit pronssisijan." ], "cityv182": [ - "Care to try for a high score record?" + "Haluaisitko yrittää ennätyspisteitä?" ], "cityv183": [ - "Would you like to try for a high score?" + "Haluaisitko yrittää saada huippupisteet?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Tervetuloa kilpa-aika-ajoihin." ], "cityv185": [ - "Would you like to race for a record time?" + "Haluaisitko kilpailla ennätysajasta?" ], "cityv186": [ - "Choose your course." + "Valitse rata." ], "cityv187": [ - "Would you like to try for a course record?" + "Haluaisitko yrittää radan ennätystä?" ], "cityv188": [ - "Would you like to use Orbs to buy a secret?" + "Haluatko ostaa salaisuuden helmillä?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "Sinulla ei ole tarpeeksi helmiä tähän salaisuuteen." ], "cityv190": [ - "Secret activated." + "Salaisuus aktivoitu." ], "cityv191": [ - "All secrets are activated." + "Kaikki salaisuudet aktivoitu." ], "cityv192": [ - "Please exit the Titan Suit." + "Ole hyvä ja poistu titaaniasusta." ], "cityv193": [ - "You must exit the Titan Suit." + "Sinun on poistuttava titaaniasusta." ], "cityv194": [ - "Vehicles must remain within city limits." + "Ajoneuvojen on pysyttävä kaupungin rajojen sisällä." ], "cityv195": [ "Poistuminen evätty. Viholliskohteita yhä läsnä." @@ -2063,34 +2063,34 @@ "Poistuminen evätty. Metallipäiden munia yhä havaittu." ], "cityv197": [ - "Scanners show Metal Head eggs still active." + "Skannerit näyttävät Metallipäiden munia yhä elossa." ], "daxm001": [ - "Shoot the platform, Jak." + "Ammu tuota alustaa, Jak." ], "daxm002": [ - "We need something to get through that gate!" + "Tarvitsemme jotain päästäksemme tuon portin läpi!" ], "daxm003": [ - "Shoot the Metal Head when he moves his shield!" + "Ammu Metallipäätä, kun se siirtää kilpensä!" ], "daxm004": [ - "Hit him in his stomach!" + "Ammu sitä sen vatsaan!" ], "daxm005": [ - "Whoa! That path dropped like uh... a rock!" + "Huh! Tuo polku putosi kuin... kuin kivi!" ], "daxm006": [ - "Smack the box, baby!" + "Mätkäise boksia, beibi!" ], "daxm007": [ - "That's what I call a rocky road!" + "Siinäpä vasta kivinen tie!" ], "daxm008": [ - "We gotta get to the top!" + "Meidän täytyy päästä huipulle!" ], "daxm009": [ - "We made it!!" + "Me teimme sen!!" ], "daxm010": [ "Rock 'n roll!" @@ -2109,7 +2109,7 @@ "Tuon täytyy olla kaupungin Rubiiniavain." ], "ds013": [ - "Patsaista on tulossa uhanalainen laji täälläpäin." + "Patsaista on tulossa uhanalainen laji näillä main." ], "ds014": [ "Tämä siis on Marin pelottava hauta, vai?", @@ -2143,7 +2143,7 @@ "Jeah!" ], "ds028": [ - "Oh yeah!" + "Jippii!" ], "ds029": [ "Palataan takaisin kaupunkiin." @@ -2161,7 +2161,7 @@ "Voit hypätä pidemmälle kierimällä sitä ennen." ], "ds044": [ - "Käytä pitkää hyppyä päästäksesi tämän rotkon yli." + "Pitkällä hypyllä pääset tämän rotkon yli." ], "ds045": [ "Hieno muoto!" @@ -2231,7 +2231,7 @@ "Ammu, ammu!" ], "ds066": [ - "Jos Sig kuolee, mekin kuolemme." + "Sig kuolee, me kuolemme." ], "ds067": [ "Uff, olemme surkeita..." @@ -2267,7 +2267,7 @@ "Murskaa ovi!" ], "ds114": [ - "800-kiloinen Tiigorilla tulossa läpi!" + "800-kiloinen tiikorilla tulossa läpi!" ], "ds115": [ "Murskaavaa työtä, Jak! Heh, tuo oli hauska." @@ -2297,7 +2297,7 @@ "Ammu tykkiä, Jak!" ], "ds143": [ - "Meidän on tarkoitus pitää Krewin kaverit hengissä, Jak!" + "Meidän on tarkoitus pitää Krewin kaverit elossa, Jak!" ], "ds144": [ "Pelasta heidät, Jak!" @@ -2336,8 +2336,8 @@ "Niillä voimme ostaa juttuja!" ], "ds163": [ - "Jak, nyt kun meillä on Palatsin turvapassi,", - "mennään pitämään hauskaa ison miehen majassa." + "Jak, nyt kun meillä on palatsin turvapassi,", + "mennään pitämään hauskaa ison kihon majassa." ], "ds164": [ "Peruuta poistuaksesi mekanismista." @@ -2356,7 +2356,7 @@ "Ehkä nyt saamme tavata Varjon." ], "ds168": [ - "There's the Rift Ring!" + "Tuolla se repeämärengas on!" ], "ds173": [ "Ahhh!" @@ -2365,10 +2365,10 @@ "Ooooh!" ], "ds175": [ - "Whoa-whoa-oaa-ah!" + "Hui-ui-ui-uih!" ], "ds176": [ - "Whoa!" + "Huih!" ], "ds177": [ "Hei!" @@ -2377,7 +2377,7 @@ "Hei, varohan!" ], "ds179": [ - "Ooh!" + "Huh!" ], "ds180": [ "Voi pojat!" @@ -2410,7 +2410,7 @@ "Oranssi Salama tulossa läpi!" ], "ds190": [ - "Rollin' with the homies!" + "Rullataan toverien kanssa!" ], "ds191": [ "Olet minun!" @@ -2425,7 +2425,7 @@ "Kuinka tätä ajetaan?" ], "ds195": [ - "Yeah, that's right! I'm bad!" + "Juuri niin! Minä se osaan!" ], "ds196": [ "Pois tieltäni!" @@ -2458,13 +2458,13 @@ "Käänny ja pala, beibi!" ], "ds206": [ - "Oooh, it's gonna be close!" + "Uuuh, tästä tulee tiukkaa!" ], "ds207": [ - "Eat my dust, buddy!" + "Syö pölyä, veikko!" ], "ds208": [ - "Gotcha!" + "Sainpas!" ], "ds209": [ "Tämä on minun ratani, mummeli!" @@ -2476,25 +2476,25 @@ "Käänny, käänny!" ], "ds212": [ - "Step on it!" + "Kaasua!" ], "ds213": [ - "Oooh, I won, I won!" + "Oooh, voitin, voitin!" ], "ds214": [ - "Yeee, that's a good lap time." + "Jiih, nyt oli hyvä kierrosaika." ], "ds215": [ - "Oh, yeah! I'm rockin'!" + "Jep! Minä rokkaan!" ], "ds216": [ - "Another lap in the record book!" + "Toinen kierros ennätyskirjoihin!" ], "ds217": [ - "Take a good look at my tail!" + "Vilkaisehan häntääni!" ], "ds218": [ - "Wahoo!" + "Jihuu!" ], "ds219": [ "Hei, torahammas, hyppää kyytiin siitä,", @@ -2513,13 +2513,13 @@ "Ajoneuvoon siitä, kamu, me voimme pelastaa sinut!" ], "ds224": [ - "Jälleen yksi Vaanija vapautettu." + "Jälleen yksi vaanija vapautettu." ], "ds225": [ "Liikettä, ecohönkä! Me kuljetamme sinut Brutterille." ], "ds226": [ - "Hey, Brutter! Look what the cat turkey dragged in." + "Hei, Brutter! Katsohan mitä kissakalkkuna toi mukanaan." ], "ds227": [ "Katsohan mitä me löysimme!" @@ -2528,67 +2528,67 @@ "Tunnistatko tämän hirviön?" ], "ds229": [ - "We did it! We saved them all!" + "Me teimme sen! Pelastimme ne kaikki!" ], "ds230": [ - "Catch the paddywagon, Jak!" + "Ota vaunu kiinni, Jak!" ], "ds231": [ - "Crash the paddywagon!" + "Rysäytä vaunu!" ], "ds232": [ - "A little more damage and we got the sucker!" + "Hieman lisää vahinkoa niin tämä saamme tämän!" ], "ds233": [ - "He's smoking, Jak! Hit him again!" + "Se savuaa, Jak! Iske lisää!" ], "ds234": [ - "That caused some damage!" + "Tuo sai vahinkoa aikaan!" ], "ds235": [ - "One more like that and he's through!" + "Vielä yksi tuollainen ja hän on maissa!" ], "ds236": [ - "Find the next vehicle!" + "Etsi seuraava ajoneuvo!" ], "ds237": [ - "Yes, we took it out!" + "Jes, hoitelimme sen!" ], "ds238": [ - "Hunt and destroy, baby!" + "Saalista ja tuhoa, beibi!" ], "ds239": [ - "Hit it, hit it!" + "Osu siihen, osu!" ], "ds240": [ - "Take it out!" + "Kaada se!" ], "ds241": [ - "Pick up the Lurker, Jak!" + "Nappaa vaanija mukaan, Jak!" ], "ds242": [ - "Get the Lurker!" + "Nouda vaanija!" ], "ds243": [ - "We need to pick up that Lurker back there." + "Meidän on noudettava tuo vaanija tuolla." ], "ds244": [ - "Usually, I don't like to be this close to Lurkers." + "Yleensä en tykkää olla näin lähellä vaanijoita." ], "ds245": [ - "Ehehe, you seem like a nice, uh... animal." + "Ehehe, sinä vaikutat vallan mukavalta, öh... eläimeltä." ], "ds246": [ - "Easy, buddy. Don't bite me!" + "Rauhassa, kamu. Äläkä sitten pure!" ], "ds247": [ - "Hey, stop slobbering on me!" + "Hei, lakkaa kuolaamasta päälleni!" ], "ds248": [ "Hän latautuu!" ], "ds249": [ - "Ooh, we got him good that time!" + "Oi, nyt osuimme hyvin!" ], "ds250": [ "Hah, nyt häneen sattui!" @@ -2624,216 +2624,216 @@ "Jes, osuit häneen!" ], "ds261": [ - "As if there wasn't enough of Krew already." + "Krewia ei ollutkaan vielä tarpeeksi." ], "ds262": [ - "Shoot 'em all, Jak! We'll sort 'em out later..." + "Ammu ne kaikki, Jak! Lajitellaan ne myöhemmin..." ], "ds263": [ - "There's the real Krew! Shoot him!" + "Tuolla on aito Krew! Ammu häntä!" ], "ds264": [ - "You got him!" + "Sinä osuit!" ], "ds265": [ - "Watch your back, Jak!" + "Varo selustaasi, Jak!" ], "ds266": [ - "They're comin' again!" + "Ne tulevat taas!" ], "ds267": [ - "Now you've got us mad." + "Nyt sait meidät suuttumaan." ], "ds268": [ - "Good shot, Jak! The big man is hurtin' now." + "Hieno osuma, Jak! Suurmies tuntee kipua nyt." ], "ds269": [ - "And the challenger is down for the count!" + "Ja niin, haastaja on päihitetty!" ], "ds270": [ - "Keep movin', baby! He's gonna shoot!" + "Pysy liikkeessä! Hän aikoo ampua!" ], "ds271": [ - "Wooh, here come some Metal Heads!" + "Hui, Metallipäitä tulossa!" ], "ds272": [ - "Protect the kid!" + "Suojele lasta!" ], "ds273": [ - "Kill all the Metal Heads!" + "Tapa kaikki Metallipäät!" ], "ds274": [ - "More Metal Heads!" + "Lisää Metallipäitä!" ], "ds275": [ - "Shoot Kor's legs out, Jak!" + "Ammu Korin jalkoja, Jak!" ], "ds276": [ - "He's down, Jak! Hit him in the head!" + "Hän on alhaalla, Jak! Iske häntä päähän!" ], "ds277": [ - "Boot to the head, boot to the head!" + "Saappaasta päähän, saappaasta päähän!" ], "ds278": [ - "I think we should hide somewhere!" + "Meidän kannattaisi piiloutua jonnekin!" ], "ds279": [ - "Take cover before he blows!" + "Ota suojaa ennen kuin hän iskee!" ], "ds280": [ - "Yeah, you got him good that time!" + "Jep, nyt sait hyvän osuman!" ], "ds281": [ - "Oh, man, now he's angry!" + "Voi ei, nyt hän suuttui!" ], "ds282": [ - "Get him, Jak!" + "Nitistä hänet, Jak!" ], "ds283": [ - "He's gonna shoot!" + "Hän aikoo ampua!" ], "ds284": [ - "Nice hit, partner!" + "Hieno osuma, kamu!" ], "ds285": [ - "That had to hurt him." + "Tuon täytyi sattua." ], "ds286": [ - "You messed with the wrong heroes, buddy!" + "Ryttyilit väärille sankareille, ukkeli!" ], "ds287": [ - "Shoot him again, Jak!" + "Ammu häntä uudestaan, Jak!" ], "ds288": [ - "Jak, we're taking a beating!" + "Jak, me saamme selkäämme!" ], "ds289": [ - "Stay away from the Dark Eco!" + "Pysy kaukana pimeästä ecosta!" ], "ds302": [ - "We've almost got him, Jak!" + "Hän on melkein maissa, Jak!" ], "ds303": [ - "That's it! You did it!" + "Siinä se! Sinä teit sen!" ], "ds305": [ - "Shoot the switch to change the coveyor belt's", - "direction!" + "Muuta liukuhihnan suuntaa ampumalla kytkintä!", + "" ], "ds306": [ - "You gotta shoot the switch, Jak!" + "Sinun täytyy ampua kytkintä, Jak!" ], "ds307": [ - "Find the switch to change the conveyor's direction!" + "Etsi kytkin muuttaaksesi liukuhihnan suuntaa!" ], "ds321": [ - "Take out the turrets!" + "Tuhoa nuo tykit!" ], "ds322": [ - "Hit the turrets, Jak!" + "Ammu tykkejä päin, Jak!" ], "ds323": [ - "Doin' some damage!" + "Aiheutetaan vahinkoa!" ], "ds324": [ - "Get in the Titan Suit!" + "Hyppää titaaniasuun!" ], "ds325": [ - "Shoot that ship!" + "Ammu tuota alusta!" ], "ds326": [ - "Yeah, that ship's feelin' it now!" + "Jes, alus on vaikeuksissa nyt!" ], "ds327": [ - "Ooh, direct hits." + "Uuh, täysosumia." ], "ds328": [ - "I think you hurt it that time!" + "Taisit juuri satuttaa sitä!" ], "ds329": [ - "The ship's goin' down! You did it, Jak!" + "Alus alkaa upota! Teit sen, Jak!" ], "ds353": [ - "That must be the missile Torn wants us to blow up!" + "Tuon on oltava se ohjus, jonka Torn käski posauttaa!" ], "ds354": [ - "Break those tubes in the center, Jak!" + "Riko nuo laitteet keskellä, Jak!" ], "ds372": [ - "Gotta ride the JET-Board on this one, Jak!" + "Täytyy kulkea JET-laudalla tässä, Jak!" ], "ds375": [ - "Look out for the ray!" + "Varo sädettä!" ], "ds378": [ "Meidän täytyy rikkoa kaikki tukivaijerit!" ], "ds379": [ - "Grind on the support bases to break the cables." + "Liu'u tukijalustoja pitkin rikkoaksesi vaijerit." ], "ds394": [ - "Spider! Spider! Huff... huff... I hate spiders!" + "Hämähäkki! Hämähäkki! Vihaan hämähäkkejä!" ], "ds395": [ - "Gotta run, gotta run!" + "Täytyy juosta, täytyy juosta!" ], "ds398": [ - "The first beam!" + "Ensimmäinen säde!" ], "ds399": [ - "The second beam! The door's opening!" + "Toinen säde! Ovi on avautumassa!" ], "ds404": [ - "There's Sig!" + "Tuolla Sig on!" ], "ds405": [ - "Get the blocks to go into the slots, Jak!" + "Siirrä palikat koloihin, Jak!" ], "ds406": [ - "Shoot or kick the blocks!" + "Ammu tai iske palikoita!" ], "ds407": [ - "You have to get the blocks in the slots faster!" + "Sinun täytyy saada palikat koloihin ripeämmin!" ], "ds408": [ - "Run, Jak!" + "Juokse, Jak!" ], "ds409": [ - "Keep moving!" + "Pysy liikkeessä!" ], "ds410": [ - "We gotta stay ahead of that thing!" + "Meidän on pysyttävä tuon otuksen edellä!" ], "ds439": [ - "Shoot all the Metal Head eggs, Jak!" + "Ammu kaikki Metallipää-munat, Jak!" ], "ds440": [ - "We didn't get all those nasty eggs!" + "Emme tuhonnet vielä kaikkia niitä munia!" ], "ds441": [ - "We missed some Metal Head eggs!" + "Me ohitimme joitakin Metallipää-munia!" ], "ds461": [ - "We gotta jump onto the crate dangling from the crane!" + "Meidän täytyy hypätä nosturista roikkuvan laatikon päälle!" ], "ds462": [ - "Use your hoverboard on this path!" + "Käytä leijulautaasi tätä reittiä pitkin!" ], "ds463": [ - "You can grind to cross those pipes using your", - "hoverboard!" + "Voit liukua putkien yli käyttämällä", + "leijulautaasi!" ], "ds464": [ - "Ride the half-pipe to the end!" + "Kulje puoliputkea loppuun asti!" ], "ds466": [ - "You gotta drop a bomb into each well, Jak!" + "Sinun on pudotettava pommi jokaiseen kaivoon, Jak!" ], "ds467": [ - "Use the ramp to get high enough to drop the bomb in!" + "Hyppää rampista korkeammalle pudottaaksesi pommin sisään!" ], "ds468": [ - "Gotta jump higher!" + "Täytyy hypätä korkeammalle!" ], "ds469": [ "Enää minuutti niin käristymme, Jak!" @@ -2863,86 +2863,86 @@ "Sait kaikki hoideltua, Jak!" ], "ds478": [ - "The last well is up where we rescued Vin!" + "Viimeinen kaivo on lähellä mistä pelastimme Vinin!" ], "ds479": [ - "Now he's vulnerable!" + "Nyt hän on haavoittuvainen!" ], "ds480": [ - "Take him out!" + "Hoitele hänet!" ], "ds481": [ - "Get him while he's vulnerable!" + "Iske häntä, kun hän on haavoittuvainen!" ], "ds482": [ - "Here he comes..." + "Siinä hän tulee..." ], "ds483": [ - "How's it feel to have your pants down, Baron?" + "Miltäs tuntuu olla housut nilkoissa, paroni?" ], "ds484": [ - "Shoot him, shoot him!" + "Ammu, ammu!" ], "ds485": [ - "Look out!" + "Varo!" ], "ds487": [ - "Easy, Jak, we gotta get this guy to safety!" + "Varo, Jak, meidän pitää kuljettaa hänet turvaan!" ], "ds488": [ - "We're takin' a lotta damage, buddy!" + "Otamme aika paljon iskuja, kamu!" ], "ds489": [ - "We're gettin' our butts kicked!" + "Me saamme selkäämme!" ], "ds490": [ - "Maybe I should drive..." + "Pitäisikö minun ajaa..." ], "ds491": [ - "Let's go, wondergoon,", - "we'll take you to a safe place in the city!" + "Mennään, ihmettelijä,", + "viemme sinut turvalliseen paikkaan kaupungissa!" ], "ds492": [ - "Okay, ride's over, out you go!" + "Okei, kyyti on ohi, ulos siitä!" ], "ds493": [ - "All aboard the Underground railroad!", - "Next stop: Your new safehouse!" + "Kaikki mukaan Vastarinnan junaan!", + "Seuraava pysäkki: uusi piilopaikkasi!" ], "ds494": [ - "I believe this is your stop!" + "Tämä taitaa olla pysäkkisi!" ], "ds495": [ - "Daxter's Freedom Fighter Taxi Service!", - "Hurry up, buddy, we ain't got all day." + "Daxterin vapaustaistelijataksipalvelu!", + "Kiirettä, hyvä mies, emme odottele koko päivää." ], "ds496": [ - "Home free, baby!", - "Don't forget to tell Torn how well we did!" + "Koti kutsuu!", + "Kerrothan Tornille miten hyvin pärjäsimme!" ], "ds497": [ - "You looking for a lift, fighter boy?" + "Kyytiä vailla, taistelija?" ], "ds498": [ - "Okay, this is where you get off. So... get off." + "Okei, tässä sinä jäät pois. Joten... jää pois." ], "ds499": [ - "We did it, Jak!", - "We got all the fighters to the new safehouses!" + "Me teimme sen, Jak!", + "Saimme kaikki taistelijat uusiin piilopaikkoihin!" ], "ds500": [ - "Statues are becoming an endangered species around here." + "Patsaista on tulossa uhanalainen laji näillä main." ], "ds501": [ - "I got us a talkbox.", - "The city people use these things to communicate", - "with each other." + "Hommasin meille puhelaatikon.", + "Kaupunkilaiset käyttävät näitä kommunikoidakseen", + "keskenään." ], "ds502": [ - "Let's go see Onin and her crazy monkey bird." + "Käydään tapaamassa Oninia ja hänen hulla apinalintua." ], "ds503": [ - "I think we need to go back to the city, Jak." + "Luulen, että meidän on palattava takaisin kaupunkiin, Jak." ], "dsek001": [ "Lapsi! Pysy hänen perässä, Jak!" @@ -2972,10 +2972,10 @@ "Siinä se hullu krokokoira taas menee...!" ], "dsek010": [ - "Juokse Lapsen perään!" + "Juokse lapsen perään!" ], "dsek011": [ - "Pysy Lapsen perässä!" + "Pysy lapsen perässä!" ], "dsek012": [ "Krokokoira!" @@ -2999,321 +2999,321 @@ "Tehdään tästä mielenkiintoista!" ], "ero006": [ - "Eat wall!" + "Syö seinää!" ], "ero007": [ - "Time to die!" + "On aikasi kuolla!" ], "ero008": [ - "Move over!" + "Väisty!" ], "ero009": [ - "Catch me now, loser!" + "Ota kiinni, luuseri!" ], "ero010": [ - "I'm too fast for you!" + "Olen liian nopea sinulle!" ], "ero011": [ - "Now you're racing with the big boys!" + "Nyt kilpailet isojen poikien kanssa!" ], "ero012": [ - "Here's one for the Baron." + "Tämä on paronin puolesta!" ], "ero013": [ - "Take this!" + "Ota tästä!" ], "ero014": [ - "You're making this too easy!" + "Teet tästä liian helppoa!" ], "ero015": [ - "Hahaha, bye bye!" + "Hahaha, näkemiin!" ], "ero016": [ - "You want some?" + "Haluatko tästä?" ], "ero017": [ - "Now you see why I never lose." + "Nyt näet, miksi en koskaan häviä." ], "ero018": [ - "The crowd loves me!" + "Yleisö rakastaa minua!" ], "ero019": [ "Ahh!" ], "ero020": [ - "Here's some pain!" + "Tässä hieman kipua!" ], "ero021": [ - "Try to erase these!" + "Yritäs poistaa nämä!" ], "ero022": [ - "How's your reflexes?" + "Miten refleksisi voi?" ], "ero023": [ - "Too much for you?!" + "Liikaa sinulle?!" ], "ero024": [ - "Had enough?" + "Joko riittää?" ], "ero025": [ - "Avoid this, smart-ass!" + "Vältähän tätä, älypää!" ], "ero026": [ - "Say goodnight, eco freak!" + "Hyvää yötä, ecofriikki!" ], "ero027": [ - "You can't beat me!" + "Et voi voittaa minua!" ], "ero028": [ - "I'd die before I let you win!" + "Kuolisin ennen kuin annan sinun voittaa!" ], "ero029": [ - "This will be your last lap." + "Tästä tulee viimeinen kierroksesi." ], "ero030": [ - "Crash and burn!" + "Törmää ja pala!" ], "ero031": [ - "To the end!" + "Loppuun asti!" ], "ero032": [ - "Last lap to live!" + "Viimeinen kierroksesi elää!" ], "ero033": [ - "Now we end this!" + "Nyt päätämme tämän!" ], "ero034": [ - "You won't see the finish line!" + "Et tule näkemään maaliviivaa!" ], "ero035": [ - "DIE!" + "KUOLE!" ], "ero036": [ - "Die!" + "Kuole!" ], "ero037": [ "Hahahaha!" ], "ero038": [ - "YEAH!" + "JES!" ], "ero039": [ "HA!" ], "ero040": [ - "NO!" + "EI!" ], "ero041": [ - "NOOOOO!" + "EIIIII!" ], "ero042": [ "AHHHHHH!" ], "ero043": [ - "Here we go." + "Menoksi!" ], "ero044": [ - "See you later." + "Nähdään." ], "ero045": [ - "Fool! You cannot defeat me." + "Ääliö! Et voi voittaa minua." ], "ero046": [ - "You missed a ring." + "Ohitit renkaan." ], "ero047": [ - "This race is mine!" + "Tämä kisa on minun!" ], "ero048": [ - "You can never be as fast as me!" + "Et ole koskaan yhtä nopea kuin minä!" ], "ero049": [ - "Keira wants a real man." + "Keira tahtoo oikean miehen." ], "ero050": [ - "Bad luck, old chap." + "Pahaa onnea, veikko." ], "ero051": [ - "Nice try." + "Hyvä yritys." ], "ero052": [ - "Move over!" + "Väisty!" ], "ero053": [ - "Out of my way!" + "Pois tieltäni!" ], "ero054": [ - "Coming through!" + "Tulossa läpi!" ], "ero055": [ - "Bye bye!" + "Heipä hei!" ], "ero056": [ - "Here I come!" + "Täältä tulen!" ], "ero057": [ - "Get used to watching my back!" + "Totuttele katsomaan selkäpuoltani!" ], "ero058": [ - "This is my city, eco freak." + "Tämä on minun kaupunkini, ecofriikki." ], "ero059": [ - "Looking sloppy, Jak." + "Löysältä näyttää, Jak." ], "ero060": [ - "Give it up!" + "Luovuta!" ], "ero061": [ - "Not this time." + "Ei tällä kertaa." ], "ero062": [ - "Getting a bit nervous?" + "Alkaako hermostuttaa?" ], "ero063": [ - "Come back here!" + "Tänne sieltä!" ], "ero064": [ - "Move over, slowpoke!" + "Väisty, senkin vätys!" ], "ero065": [ - "This is where I beat you." + "Tässä minä pesen sinut." ], "ero066": [ - "Final stretch!" + "Loppusuora!" ], "ero067": [ - "It's over!" + "Se on ohi!" ], "ero068": [ - "I own this city." + "Kaupunki kuuluu minulle." ], "ero069": [ - "What? Where'd you come from?" + "Mitä? Mistä sinä ilmestyit?" ], "ero070": [ - "You're just lucky." + "Olet vain onnekas." ], "ero071": [ - "You can't handle the speed!" + "Nopeus ei anna armoa!" ], "ero072": [ - "Die, freak." + "Kuole, friikki." ], "ero073": [ - "No!" + "Ei!" ], "ero074": [ - "STOP!" + "LOPETA!" ], "ero075": [ "Hahahaha!" ], "ero076": [ - "HAHA!" + "HAHAA!" ], "ero077": [ "Ahhh!" ], "ero078": [ - "Ough!" + "Ouhh!" ], "ero079": [ - "Oof!" + "Uuh!" ], "ero080": [ - "Beat it, freak!" + "Siirry, friikki!" ], "ero081": [ - "Care to get back in the chair?" + "Haluatko takaisin tuoliin?" ], "ero082": [ - "This race was too easy." + "Tämä kisa oli liian helppoa." ], "ero083": [ - "It was easier than I thought to beat you." + "Voittamisesi oli helpompaa kuin luulin." ], "ero084": [ - "Not even close, Keira's betting on the wrong man." + "Ei lähelläkään, Keira luottaa väärään mieheen." ], "ero085": [ - "Loser! You disgust me!" + "Luuseri! Sinä ällötät minua!" ], "ero086": [ - "You see Jak, I win, and I get what I want.", - "Someday I will be Baron, then the city will really pay!" + "Katsos, Jak, minä voitan ja saan mitä haluan.", + "Jonain päivänä minä olen paroni, sitten kaupunki todella maksaa!" ], "ero087": [ - "I should have known you'd be no match." + "Olisi pitänyt tietää, ettei sinusta ole vastusta." ], "ero088": [ - "I win, Keira's going to love me!" + "Voitin, Keira tulee rakastamaan minua!" ], "ero089": [ - "Maybe you should go back to wherever you came from." + "Ehkä sinun pitäisi palata sinne mistä tulitkin." ], "ero090": [ - "I'll get a victory kiss from Keira later." + "Saan Keiralta voittosuukon myöhemmin." ], "ero091": [ - "Again I prove my superiority." + "Todistan jälleen ylemmyyteni." ], "ero092": [ - "You see? You are no match for me." + "Näetkös? Et mahda minulle mitään." ], "ero093": [ - "Too bad, I win!" + "Harmi, minä voitin!" ], "ero094": [ - "Hahahaha, pathetic insect, I win!" + "Hahaha, säälittävä ötökkä, minä voitin!" ], "ero095": [ - "You can never defeat me!" + "Et voi koskaan päihittää minua!" ], "ero096": [ - "Ahhh!...ahh." + "Ahhh! Arrh!" ], "ero097": [ - "Ugh!" + "Uh!" ], "ero098": [ - "Ughhh!" + "Uhhh!" ], "ero099": [ "Dahh!" ], "ero100": [ - "Yaughh!" + "Aaarhh!" ], "ero101": [ - "AUGHH!" + "ARRHH!" ], "ero102": [ - "OW!" + "AUH!" ], "ero103": [ - "DAHHH!" + "DARRH!" ], "ero104": [ - "DAUGHH!" + "GRRRH!" ], "erol001": [ - "I'm looking for you, eco freak,", - "and when I find you, you'll wish you died in prison." + "Minä etsin sinua, ecofriikki,", + "ja kun löydän sinut, toivot, että olisit kuollut vankilassa." ], "erol002": [ - "This is Erol. Looks like you're running out of friends.", - "We've arrested them all and thrown them into your", - "favorite prison. By the way, that blonde girl Tess", - "screamed so delightfully when she was arrested.", - "I can't wait for her turn in the chair.", + "Tämä on Erol. Näyttää siltä, että ystäväsi loppuvat kesken.", + "Pidätimme heidät kaikki ja heitimme heidät", + "lempivankilaasi. Ja muuten, se blondi Tess", + "kirkui niin ihanasti, kun hänet pidätettiin.", + "En malta odottaa hänen vuoronsa tuolissa.", "Hahahahaha...." ], "erol003": [ - "This is Erol. Just remember, the only reason I'm letting you", - "walk is so I can face you in the championship race!" + "Tämä on Erol. Muista, ainoa syy miksi annan sinun", + "elää on, että voin kohdata sinut mestaruuskisassa!" ], "hal001": [ - "Hiljaa! Sieltä se kaunotar saapuu." + "Hiljaa! Sieltä se komistus saapuu." ], "hal002": [ "Oli jo aikakin, että ilmestyit. Okei, hoidetaan tämä." @@ -3353,7 +3353,7 @@ "Emme mene ennen kuin olet vakavissasi." ], "hal015": [ - "Minä en aio kuolla tämän luuserin takia,", + "Minä en aio kuolla tämän tohelon takia,", "tämä tehtävä jää tähän." ], "hal019": [ @@ -3453,7 +3453,7 @@ "Varokaa ahterianne, tarkoitat! Nyt räjähtää!" ], "hal051": [ - "Sinun on parasta pitää pääsi alhaalla, muru." + "Suosittelen varomaan päätäsi, muru." ], "hal052": [ "Lemuavaa hönkääsi, mennään." @@ -3491,7 +3491,7 @@ "Tule tänne sieltä ja ansaitse elantosi!" ], "hal063": [ - "Krew oli oikeassa sinusta. Sinussa on taikaa, mies." + "Krew oli oikeassa sinusta. Sinussa on taikaa." ], "hal064": [ "Hienosti taisteltu, tyyppi. Alan jopa pitää sinusta." @@ -3748,10 +3748,10 @@ "Ammu kiiltopäitä, ei minua!" ], "hal159": [ - "Ahh!" + "Aah!" ], "hal161": [ - "Ugh!" + "Uh!" ], "hal162": [ "Oh!" @@ -4066,10 +4066,10 @@ "Lakkaatko hölöttämästä?" ], "jak078": [ - "Kun sinusta tuli pienempi, aivoistasi tuli myös." + "Kun sinusta tuli pienempi, niin tuli aivoistasikin." ], "jak079": [ - "Sinä olet MINUN olkapäälläni. SINÄ se apuri olet." + "Sinä olet MINUN olkapäälläni. SINÄ olet apuri." ], "jak080": [ "Niin kauan kuin olet MINUN olkapäälläni, pidä suusi kiinni." @@ -4210,27 +4210,27 @@ ], "kei026": [ "Vastarinta kertoi teidän tarvitsevan apua.", - "Ette tule saamaan Metallipäitä kiinni Puistossa", + "Ette tule saamaan Metallipäitä kiinni metsässä", "jalkaisin, joten jätin JET-lautani ilmalukon sisälle", "lähellä kaupungin uloskäyntiä. Koska autatte Vastarintaa,", "annan teidän jopa pitää sen!" ], "kei027": [ - "Jak, this is Keira. Don't forget - I still need two artifacts", - "to make the Rift Rider work! I need the Time Map and the", - "Heart of Mar Energy Gem, or we're not going anywhere!" + "Jak, tämä on Keira. Älä unohda, tarvitsen vielä kaksi esinettä", + "repeämäkuljettimeen! Tarvitsen aikakartan ja", + "Marin sydän -energiajalokiven, tai emme mene minnekään!" ], "kei028": [ - "I still need those two artifacts or this pile of junk", - "won't move one city block, much less through the Rift", - "and back to our own time!", - "You've got to find the Heart of Mar and the Time Map", - "or we're stuck!" + "Tarvitsen yhä ne kaksi esinettä, tai tämä romukasa", + "ei liiku edes korttelin päähän, saati sitten repeämän läpi", + "takaisin omaan aikaamme!", + "Sinun täytyy etsiä Marin sydän ja aikakartta", + "tai jäämme tänne!" ], "kei029": [ - "Keira tässä. Kiitos, kun keräsitte artefaktit, pojat.", + "Keira tässä. Kiitos, kun hankitte esineet, pojat.", "Outoa... Aika-Kartta oli täynnä joitain vanhoja koordinaatteja.", - "Tavatkaa minut Stadionilla." + "Tavatkaa minut stadionilla." ], "kg001": [ "Kutsukaa apujoukkoja!" @@ -4497,10 +4497,10 @@ "Me menetämme hänet!" ], "kg052": [ - "Jatkamassa tutkimistamme." + "Jatkamme tutkimistamme." ], "kg052a": [ - "Jatkamassa tutkimistamme." + "Jatkamme tutkimistamme." ], "kg053": [ "Tutkimassa sektoria neljä." @@ -4785,10 +4785,10 @@ "Uskomme hänen olevan putkissa!" ], "kg100": [ - "Aloittamassa tutkintaamme." + "Aloitamme tutkimisen." ], "kg100a": [ - "Aloittamassa tutkintaamme." + "Aloitamme tutkimisen." ], "kg101": [ "Vanki on näköpiirissämme, liikkukaa!" @@ -4911,10 +4911,10 @@ "Aktivoidaan turvatoimipuolustukset." ], "kg121": [ - "Ole hyvä ja neuvo, epäillyn kuvaus." + "Neuvokaa kuvaus epäillystä." ], "kg121a": [ - "Ole hyvä ja neuvo, epäillyn kuvaus." + "Neuvokaa kuvaus epäillystä." ], "kg122": [ "Minulla on siviilejä näkyvissä." @@ -5004,7 +5004,7 @@ "Menkää, menkää!" ], "kg140": [ - "Kyljetkää heidät!" + "Saartakaa heidät!" ], "kg141": [ "Liikkukaa!" @@ -5037,7 +5037,7 @@ "Tulta, tulta!" ], "kg151": [ - "Tässä on yksi Vartion puolesta!" + "Tässä on yksi vartion puolesta!" ], "kg152": [ "Luovuta jo, lainsuojaton!" @@ -5310,13 +5310,13 @@ "Älä koskaan luota kehenkään." ], "kg193": [ - "Eläköön Karmiinivartio!" + "Eläköön vartio!" ], "kg193a": [ - "Eläköön Karmiinivartio!" + "Eläköön vartio!" ], "kg193b": [ - "Eläköön Karmiinivartio!" + "Eläköön vartio!" ], "kg194": [ "Ruokamellakoita ei ole ollut siitä lähtien kun toimme tankit esiin." @@ -5702,13 +5702,13 @@ "He sanovat, että hän voi muuttua jonkinlaiseksi hirviöksi." ], "kg235": [ - "Älä huoli, hänen päänsä on pian tornin seinällä." + "Älä huoli, hänen päänsä roikkuu pian tornin seinällä." ], "kg235a": [ - "Älä huoli, hänen päänsä on pian tornin seinällä." + "Älä huoli, hänen päänsä roikkuu pian tornin seinällä." ], "kg235b": [ - "Älä huoli, hänen päänsä on pian tornin seinällä." + "Älä huoli, hänen päänsä roikkuu pian tornin seinällä." ], "kg236": [ "Hehehe." @@ -5810,16 +5810,16 @@ "Hän on noutamassa vankia!" ], "kg265a": [ - "Me menetimme Vaanijavangin." + "Me menetimme vaanijavangin." ], "kg266a": [ - "Hänellä on Vaanijavanki mukanaan!" + "Hänellä on vaanijavanki mukanaan!" ], "kg267a": [ "Hoidelkaa heidät kaikki!" ], "kg268a": [ - "Uskomme hänen auttavan Vaanijoita pakenemaan!" + "Uskomme hänen auttavan vaanijoita pakenemaan!" ], "kg269a": [ "Hän on tuhonnut jo kaksi meidän kuljetuksista!" @@ -5849,10 +5849,10 @@ "Me saimme heidät!" ], "kg278a": [ - "Saimme heidät, Vartion kanssa ei pelleillä!" + "Saimme heidät, vartion kanssa ei pelleillä!" ], "kg279a": [ - "Aja sivuun, Vaanijarakastaja!" + "Aja sivuun, vaanijarakastaja!" ], "kg280a": [ "Tuossa on lapsi, tutki hänet." @@ -5995,7 +5995,7 @@ "Napatkaa hänet!" ], "kg326a": [ - "Kaikki yksiköt suunnatkaa Vesislummeille!" + "Kaikki yksiköt suunnatkaa vesislummeille!" ], "kg327a": [ "Meillä on Vastarinnan taistelija!" @@ -6088,7 +6088,7 @@ "Hän pääsee syvälle, pysäyttäkää hänet!" ], "kg357a": [ - "Eliminoikaa tämä hyypiö, se on käsky!" + "Eliminoikaa hänet, se on käsky!" ], "kg358a": [ "Lähettäkää shokkiryhmä!" @@ -6169,7 +6169,7 @@ "Hän on paahtoa!" ], "kg384a": [ - "Jälleen voitto Vartiolle, hyvin ammuttu, miehet." + "Jälleen voitto vartiolle, hyvin ammuttu, miehet." ], "kg385a": [ "Epäilty on välttänyt kaappauksen." @@ -6187,7 +6187,7 @@ "Ughh!" ], "kg390a": [ - "Hugh !" + "Hugh!" ], "kg391a": [ "Aughh!" @@ -6301,7 +6301,7 @@ "Ugh!" ], "kg428a": [ - "Oof!" + "Ouh!" ], "kgv001": [ "Pysähdy!" @@ -6429,66 +6429,66 @@ "Kolme tykkiä poissa. Hienoa! Jatka samoin!" ], "krew007": [ - "Four turrets trashed. Haha... Lovely, boys! Go get 'em!" + "Neljä tykkiä romuna. Hienoa, pojat! Jatkakaa!" ], "krew008": [ - "Five turrets down the drain! Keep going." + "Viisi tykkiä takana! Jatkakaa vain." ], "krew009": [ - "Six turrets out of commission.", - "Hah, I like the way you work." + "Kuusi tykkiä poissa toiminnasta.", + "Hah, pidän työskentelytavastasi." ], "krew010": [ - "Hienoa purkutyötä, pojat! Tuhositte kaikki tykit, eh?", + "Hienoa purkutyötä, pojat! Taisitte tuhota kaikki tykit.", "Tulkaa nyt takaisin Sikahepoon." ], "kwbf001": [ - "You know I can't play fair!", - "I have a secret weapon: my duplicity field!", - "Say hello to my little friends...", - "Ah, multiple me! Hahahaha... How delightful." + "Tiedät, etten pelaa reilusti!", + "Minulla on salainen ase: monistusjoukkoni!", + "Tervehdihän pikku ystäviäni...", + "Ah, monta minua! Hahahaha... Kuinka ihanaa." ], "kwbf002": [ - "Let me introduce you to my... \"crew.\"" + "Anna minun esitellä sinut... \"perheelleni\"." ], "kwbf003": [ - "Let's dance!" + "Tanssitaan!" ], "kwbf004": [ - "You will die!" + "Sinä kuolet!" ], "kwbf005": [ - "Here we come!" + "Täältä tullaan!" ], "kwbf006": [ - "My, don't my twins look stunning?" + "Eivätkö kaksoseni näytäkin loistavilta?" ], "kwbf007": [ - "You can't stop us all!" + "Et voi pysäyttää meitä kaikkia!" ], "kwbf008": [ - "Surprise! More of me than you can handle." + "Yllätys! Minua on enemmän kuin kyet päihittää." ], "kwbf009": [ - "I've a few good men to help me." + "Minulla on apulaisia mukanani." ], "kwbf010": [ - "Get him!" + "Perään!" ], "kwbf011": [ - "UARGH! Try stopping me now!" + "UARRH! Koita pysäyttää minua nyt!" ], "kwbf012": [ - "You're getting lucky so far, 'ey?" + "Onnesi suosii toistaiseksi." ], "kwbf013": [ - "I grow weary of this. We end it now." + "Tämä on kyllästyttävää. Päätetään tämä nyt." ], "kwbf014": [ - "Hm-hm, I move pretty fast for a big man, 'ey?" + "Hm-hm, olen nopea isoksi mieheksi, eh?" ], "kwbf015": [ - "I float like a butterfly and sting like a wumpbee!" + "Kellun kuin perhonen ja pistän kuin wumpiainen!" ], "kwbf016": [ "Urghh!" @@ -6503,52 +6503,52 @@ "Urrghh!" ], "kwbf020": [ - "Urgh, ow!" + "Urgh, auh!" ], "kwbf021": [ - "Die!" + "Kuole!" ], "kwbf022": [ - "Now I have you!" + "Nyt olet minun!" ], "kwbf023": [ - "You cannot win, Jak!" + "Et voi voittaa, Jak!" ], "kwbf024": [ - "Here's some pain!" + "Tässä hieman kipua!" ], "kwbf025": [ - "No!" + "Ei!" ], "kwbf026": [ - "You're trying my patience!" + "Sinä koetat kärsivällisyyttäni!" ], "kwbf027": [ - "Stand still!" + "Pysy paikallasi!" ], "kwbf028": [ - "Haha, how did that feel?" + "Haha, mitäs tuo tuntui?" ], "kwbf029": [ - "You should have walked away when you had a chance." + "Sinun olisi kannattanut kääntyä, kun sinulla oli mahdollisuus." ], "kwbf030": [ - "Pop this!" + "Koita tätä!" ], "kwbf031": [ - "You can't stop the bomb, Jak!" + "Et voi pysäyttää pommia, Jak!" ], "kwbf032": [ - "Hahahaha, that felt good!" + "Hahaha, tuo tuntui hyvältä!" ], "kwbf033": [ "Minä olen aseiden mestari!" ], "kwbf034": [ - "Onko tarpeeksi?" + "Saitko tarpeeksesi?" ], "kwbf035": [ - "Nyt mennään!" + "Täältä tullaan!" ], "kwbf036": [ "Tanssi minulle, Jak!" @@ -6560,28 +6560,28 @@ "Hippa! Sinä olet se." ], "kwbf039": [ - "Phew. This is a bit of a workout..." + "Huh. Tämähän käy treenaamisesta..." ], "kwbf040": [ - "Which is the real me, Jak?" + "Mikä on oikea minä, Jak?" ], "kwbf041": [ - "Finally... I get to put you in your place!" + "Vihdoin... Näytän sinulle kaapin paikan!" ], "kwbf042": [ - "Arghh! You little...!" + "Arhhh! Sinä senkin...!" ], "ora006": [ "Tuo minulle 200 lisää Metallipäiden Kallohelmiä,", - "niin näytän sinulle uuden Pimeän Voiman." + "niin näytän sinulle uuden pimeän voiman." ], "ora007": [ "Tuo minulle 200 lisää Kallohelmeä,", - "ja toinen voima on sinun hallittavissa." + "ja toinen voima on sinun hallittavissasi." ], "ora008": [ "Tuo minulle lisää Kallohelmiä, ja saat hallinnan", - "uuteen Pimeään Voimaan." + "uuteen pimeään voimaan." ], "ora009": [ "Sinulla ei ole tarpeeksi Kallohelmiä.", @@ -6603,127 +6603,127 @@ "Sinä et saa käyttää aseita tässä haasteessa." ], "pek001": [ - "Groark! I can't believe you actually did this thing!", - "Onin says she will search timelines for answers", - "about these sacred relics. I will find you then." + "Arrrk! En voi uskoa, että todella teitte sen!", + "Onin sanoo, että hän etsii aikajanoilta vastauksia", + "näistä pyhistä jäänteistä. Etsin teidät sitten." ], "pek002": [ - "Groark! Whoa... well I'll be a moncaw's uncle, the Light Tower", - "actually does exist! The beam of light is shining somewhere", - "in the city! The Tomb of Mar was right under our noses", - "all along. And thanks to me, you found it!" + "Arrrk! Ohh... kaikkea sitä näkeekin! Valotorni todella", + "on olemassa! Valonsäde johtaa jonnekin", + "kaupungissa! Marin hauta oli neniemme alla", + "koko ajan. Ja kiitos minun, te löysitte sen!" ], "pek003": [ - "Wow! As I live and molt, one step closer to the Tomb.", - "I never thought we'd get this far!" + "Vau! Voihan sulkasato, yksi askel lähempänä hautaa.", + "En olisi uskonut pääsevämme näin pitkälle!" ], "pek010": [ - "This is Onin's magic bowl.", - "Onin will make symbols appear from her bowl.", - "When the symbols appear, you must pop them before they", - "reach the ground. You must pop them quickly, pop only", - "the symbols you see. If you try to pop a symbol that is", - "not there, Onin will give you a penalty! Miss any symbols", - "and you will penalized! Each round will get faster.", - "Let's see how far you get.", - "You must get a high enough score to win." + "Tämä on Oninin taikakulho.", + "Onin saa symboleja esiintymään kulhostaan.", + "Kun symbolit ilmestyvät, sinun täytyy puhkaista ne ennen kuin", + "ne osuvat maahan. Sinun on puhkaistava ne vikkelään, ja vain", + "symboleja, jotka näet. Jos yrität puhkaista symbolin, jota", + "ei ole näkyvissä, Onin antaa rangaistuksen! Jätä symboli välistä", + "ja saat rangaistuksen! Joka kierros on nopeampi.", + "Katsotaan, kuinka pitkälle pärjäät.", + "Sinun täytyy saada tarpeeksi pisteitä voittaaksesi." ], "pek011": [ - "You are doing very well!" + "Sinä pärjäät vallan mainiosti!" ], "pek012": [ - "Huh, not bad." + "Hmph, ei huono." ], "pek013": [ - "Keep going, you can do it!" + "Jatka vain, sinä pystyt siihen!" ], "pek014": [ - "Pop any more than the true number of each symbol,", - "and you will be penalized! Groark!" + "Puhkaise vain oikea määrä jokaista symbolia,", + "tai sinua rangaistaan! Arrrk!" ], "pek015": [ - "Ready? Go!" + "Valmis? Hep!" ], "pek016": [ - "That symbol wasn't there, penalty!" + "Tuota symbolia ei ollut, rangaistus!" ], "pek017": [ - "Hah, Onin got you! Pop only symbols that you see." + "Ha, Onin sai sinut! Puhkaise vain symboleja, jotka näet." ], "pek018": [ - "Here comes another round!", - "Give him another burst, Onin girl!" + "Tässä tulee toinen kierros!", + "Rökitä häntä lisää, Onin, tyttöni!" ], "pek019": [ - "She got you again! What is your problem?" + "Hän sai sinut taas! Mikä sinua vaivaa?" ], "pek020": [ - "I can't believe you've made it this far!" + "En voi uskoa, että olet päässyt näin pitkälle!" ], "pek021": [ - "Quickly! You are missing symbols!" + "Nopeasti! Sinä ohitat symboleja!" ], "pek022": [ - "You missed some!" + "Muutama livahti ohi!" ], "pek023": [ - "Faster! Faster!" + "Nopeammin! Nopeammin!" ], "pek024": [ - "Give it to him, Onin! More, Onin, more!", - "You go, girl, shake what your momma gave you!" + "Näytä hänelle, Onin! Lisää, Onin, lisää!", + "Anna mennä, tyttö, anna kehollesi rytmiä!" ], "pek025": [ - "Rockin' in the club." + "Rokataan klubilla." ], "pek026": [ - "He can't do that many!" + "Ei hän voi saada noin montaa!" ], "pek027": [ - "What? He's still going?" + "Mitä? Hän jatkaa yhä?" ], "pek028": [ - "Let's see if he can handle it." + "Katsotaan pärjääkö hän." ], "pek029": [ - "Go! Come on!" + "Kyllä! Juuri noin!" ], "pek030": [ - "Okay, so you're good." + "Okei, olet hyvä." ], "pek031": [ - "Wow! Not bad." + "Vau! Ei paha." ], "pek032": [ - "Well, I laid an egg." + "Kappas, minä munin." ], "pek033": [ - "Amazing! You actually won!", - "I am without words, and that is rare." + "Ällistyttävää! Sinä todella voitit!", + "Olen ihan sanaton, ja se on harvinaista." ], "pek034": [ - "You got enough points, congratulations!" + "Sait tarpeeksi pisteitä, onnittelut!" ], "pek035": [ - "Last penalty! You lose, loser." + "Viimeinen rangaistus! Hävisit, häviäjä." ], "pek036": [ - "You lost! Why am I not surprised?" + "Sinä hävisit! Miksi en ole yllättynyt?" ], "pek037": [ - "You lose! Would you like to try again?" + "Hävisit! Haluaisitko yrittää uudelleen?" ], "pek038": [ - "Ahh, you laid an egg. Too bad, so sad." + "Ahh, sinä munit. Harmi, niin surullista." ], "pek039": [ - "Oooh, so close... not! Hehehe..." + "Uuhh, niin lähellä... eipäs! Hohoho..." ], "pek040": [ - "You made a valiant effort, but you suck!" + "Annoit urhean suorituksen, mutta olet surkea!" ], "pek041": [ - "Game over, finito, done, se acabó!" + "Peli päättyi, finito, se on ohi!" ], "prop002": [ "Kuten te kaikki tiedätte, minä haavoituin viimeisessä", @@ -6742,276 +6742,276 @@ "se on ainoa tiesi ulos." ], "prop004": [ - "Don't try to make a fool out of me, Jak.", - "Just because I haven't killed you yet doesn't", - "mean I'm not onto you. The citizens of this city", - "worship me because I offer them safety.", - "All I ask in return is for their lives.", - "I'll find you, and when I do, you'll wish", - "you died in prison." + "Älä yritä tehdä minusta hölmöä, Jak.", + "Vain koska en ole vielä tappanut sinua, ei tarkoita", + "ettenkö olisi jäljilläsi. Kaupungin asukkaat", + "palvovat minua, koska tarjoan heille turvaa.", + "Pyydän vastineeksi vain heidän elämänsä.", + "Minä löydän sinut, ja kun löydän, toivot,", + "että olisit kuollut vankilassa." ], "prop005": [ - "Attention, my loyal citizens! We are looking for a", - "rebel fugitive who has caused the city considerable", - "damage of late. This man is armed and extremely", - "dangerous and can somehow change into a monstrous", - "creature. We have reports he is working with the", - "Metal Heads to subvert your city and your safety.", - "Report all sightings immediately!" + "Huomio, uskolliset kansalaiset! Me etsimme", + "kapinallista karkuria, joka on aiheuttanut kaupungissa huomattavaa", + "vahinkoa lähiaikoina. Tämä mies on aseellinen ja erittäin", + "vaarallinen ja pystyy jotenkin muuttua hirvittäväksi", + "olennoksi. Raporttiemme mukaan hän työskentelee", + "Metallipäiden kanssa turmellakseen kaupunkinne ja turvallisuutenne.", + "Ilmoittakaa kaikki havainnot välittömästi!" ], "prop006": [ - "Brave citizens, today is the anniversary of the great", - "battle that ruined our city section we now call", - "Dead Town. Remember those who died", - "that day and how much we owe the Metal Heads", - "for their treachery! Remember how bravely I fought", - "to save those poor souls of the overrun section", - "and reflect on how grateful you should all be that the", - "Krimzon Guard keeps you safe each day." + "Rohkeat kansalaiset, tänään on vuosipäivä suuresta", + "taistelusta, joka tuhosi kaupunginosamme, jota nykyisin kutsumme", + "Aavekaupungiksi. Muistelkaa heitä, jotka kuolivat", + "tuona päivänä ja miten paljon olemme velkaa Metallipäille", + "heidän petoksesta! Muistelkaa, miten urheasti minä taistelin", + "pelastaakseni kaapatun alueen sieluparat", + "ja miettikää, miten kiitollisia teidän pitäisi olla, että", + "Karmiinivartio pitää teidät turvassa päivittäin." ], "prop007": [ - "This is your Baron. The reports of a Metal Head", - "invasion of the city are vastly overblown.", - "I assure you this is but a small incursion and we will", - "defeat it shortly. Stay in your homes, do not panic,", - "or you will be punished!" + "Tämä on paroninne. Raportit Metallipäiden", + "hyökkäyksestä kaupunkiin ovat valtavan liioiteltuja.", + "Vakuutan teille, että kysessä on vain pieni tunkeutuminen, ja", + "hoidamme sen tuota pikaa. Pysykää kotona, älkää panikoiko,", + "tai teitä rangaistaan!" ], "prop008": [ - "Attention citizens, this is your Baron speaking.", - "There have been several unauthorized uses of the", - "city's old gate locks. Fortunately, these breaches", - "have not resulted in contamination, but we all know", - "how deadly the Wasteland is. No one is allowed", - "outside the city without authorization, let it be", - "known that any violators will be caught", - "and executed." + "Huomio, kansalaiset, tämä on paroninne.", + "Kaupungin vanhoja ilmalukkoja on käytetty", + "useaan otteeseen luvatta. Onneksi nämä rikkomukset", + "eivät ole aiheuttaneet saastumista, mutta me kaikki tiedämme", + "miten tappava joutomaa on. Ketään ei sallita", + "kaupungin ulkopuolelle ilman lupaa, ja täten", + "kaikki laiminlyöjät otetaan kiinni", + "ja teloitetaan." ], "prop009": [ - "Serve your city." + "Palvele kaupunkiasi." ], "prop010": [ - "Sacrifice for your city, and all will prosper!" + "Uhraa kaupunkisi puolesta, ja kaikki menestyvät!" ], "prop011": [ - "You are safe, because I care." + "Olette turvassa, koska minä välitän." ], "prop012": [ - "All Metal Heads must die!" + "Kaikkien Metallipäiden on kuoltava!" ], "prop013": [ - "Work hard, and be grateful." + "Työskentele ahkeraan ja ole kiitollinen." ], "prop014": [ - "Report all wrongdoers." + "Ilmoita kaikista vääryyksistä." ], "prop015": [ - "Remember, even your friends could be enemies." + "Muistakaa, jopa ystävänne voivat olla vihollisia." ], "prop016": [ - "Turn in all who subvert." + "Luovuttakaa kaikki turmelijat." ], "prop017": [ - "Strength is our only option!" + "Vahvuus on ainoa vaihtoehtomme!" ], "prop018": [ - "Obey and be happy." + "Totelkaa ja olkaa onnellisia." ], "prop019": [ - "Sacrifice is something you should do", - "for your city." + "Uhraus on jotain, mitä sinun tulisi tehdä", + "kaupunkisi puolesta." ], "prop020": [ - "Sacrifice for your city." + "Uhraa kaupunkisi puolesta." ], "prop021": [ - "Remember, even friends might be enemies." + "Muistakaa, jopa ystävät voivat olla vihollisia." ], "prop022": [ - "The city needs your sacrifice." + "Kaupunki tarvitsee uhraustasi." ], "prop023": [ - "It is better inside the walls!" + "Muurien sisäpuolella on parempi!" ], "prop024": [ - "The law will show no mercy." + "Laki ei anna armoa." ], "prop025": [ - "Justice is swift." + "Oikeus on nopeaa." ], "prop026": [ - "The Underground movement is dead!" + "Vastarintaliike on kuollut!" ], "prop027": [ - "Join the Krimzon Guard and your family", - "will be allowed to stay." + "Liity Karmiinivartioon ja perheesi", + "sallitaan pysyä." ], "prop028": [ - "One way: My way." + "Yksi tapa: minun tapani." ], "prop029": [ - "To lead is to control." + "Johtaminen on hallitaa." ], "prop030": [ - "Give up your freedom and I will protect you." + "Luovuta vapautesi niin suojelen sinua." ], "prop031": [ - "Have faith in me and the Promised Land is yours." + "Usko minuun ja luvattu maa on sinun." ], "prop032": [ - "Your city needs a strong leader, not a childish fool." + "Kaupunkinne tarvitsee vahvan johtajan, ei mitään lapsellista hölmöä." ], "prop033": [ - "Welcome not the unknown face." + "Älkää vastaanottako tuntemattomia kasvoja." ], "prop034": [ - "Shun those who would defy me!" + "Kaihtakaa heitä, jotka minua uhmaavat!" ], "prop035": [ - "I am the face of Haven City." + "Minä olen Haven Cityn kasvot." ], "prop036": [ - "Without my strength, there would be no city." + "Kaupunkia ei olisi ilman minun vahvuuttani." ], "prop037": [ - "Follow me to a safer future!" + "Seuratkaa minua turvallisempaan tulevaisuuteen!" ], "prop038": [ - "You are safe inside the walls with me." + "Olette turvaassa muurien sisällä kanssani." ], "prop039": [ - "Defy... and die." + "Uhmaa... ja kuole." ], "prop040": [ - "Welcome to Haven City!", - "All laws are enforced for your safety.", - "Obey me and you will not be punished." + "Tervetuloa Haven Cityyn!", + "Kaikki lait ovat voimassa turvallisuutenne vuoksi.", + "Tottele minua ja sinua ei rangaista." ], "prop041": [ - "The city is safe. I will not allow harm", - "to befall you, trust me." + "Kaupunki on turvassa. En salli vahingon", + "kohdata teitä, uskokaa." ], "prop042": [ - "Rest assured, I will destroy the Metal Heads.", - "One way or another." + "Voitte olla varmoja, että tuhoan Metallipäät.", + "Tavalla tai toisella." ], "prop043": [ - "To all citizens, this puny Underground revolt", - "will be dealt with by all aggressive means.", - "We will crush these arrogant upstarts, they will not", - "be allowed to threaten me or this city's order!" + "Kaikki kansalaiset, tämä mitätön Vastarinnan kapina", + "käsitellään mitä aggressiivisimmin keinoin.", + "Murskaamme nämä ylimieliset nousukkaat vielä, heidän ei", + "sallita uhata minua tai kaupunkimme järjestystä!" ], "prop044": [ - "To all citizens of this great city, there is a monster", - "among you, masquerading as a man!", - "He is dangerous and must be destroyed!", - "I offer a reward of eco for his capture, or, if you", - "have a loved one in prison, I will exchange them for", - "this renegade. I promise." + "Suuren kaupunkimme kansalaiset, keskuudessanne on", + "hirviö, naamioituneena miehen nahassa!", + "Hän on vaarallinen ja hänet on tuhottava!", + "Tarjoan palkkiona ecoa hänen sieppauksesta, tai,", + "jos rakas läheisesi on vankilassa, vapautan heidät vastineeksi", + "tästä kapinallisesta. Minä vannon." ], "prop045": [ - "To all who defy me! I am watching you,", - "I am everywhere, I am this city!" + "Kaikki, jotka uhmaavat minua, minä tarkkailen teitä,", + "minä olen kaikkialla, minä olen tämä kaupunki!" ], "prop046": [ - "This is your Baron. I have been informed by the", - "ministry of extreme labor that worker productivity is", - "down this month! That is unacceptable!", - "I give you safety and this is how you repay me?", - "You must work harder, not smarter!", - "Free the mind and the body will do as it's told,", - "forced labor will set you free!", - "And to help you in your spiritual motivation...", - "quotas are doubled next month!" + "Tämä on paroninne. Minulle on ilmoitettu", + "äärimmäisen työn ministeriöstä, että työntekijöiden tuottavuus on", + "laskussa tässä kuussa! Tämä ei ole hyväksyttävää!", + "Takaan teille turvaa, ja näinkö te maksatte minulle takaisin?", + "Tehkää työtä kovemmin, ei viisaammin!", + "Vapauta mieli ja kehosi tekee niin kuin käsketään,", + "pakkotyö tekee sinut vapaaksi!", + "Ja avuksenne hengellisessä motivaatiossa...", + "kiintiöt kaksinkertaistuvat ensi kuussa!" ], "prop047": [ - "Due to recent, uh... \"attrition\" difficulties,", - "this city needs fresh Krimzon Guard recruits!", - "Everyone is asked to volunteer members of their family!", - "Come down to your friendly Fortress facility.", - "Or else!" + "Johtuen viimeaikain, öh... \"kulutusongelmista\",", + "kaupunki tarvitsee tuoreita rekryyttejä Karmiinivartioon!", + "Kaikilta pyydetään vapaaehtoisia perheenjäseniä!", + "Käy peremmälle ystävälliseen linnoituslaitokseenne,", + "tai muuten...!" ], "prop048": [ - "As your Baron, I am instituting a \"no hoverboard\" rule", - "in the city! Young delinquents with nothing better", - "to do than float around and do tricks! Huh!", - "I'll put all violators into the Guard and teach them", - "some discipline. No skating, it's the law!" + "Paroninanne aion perustaa \"ei leijulautailua\" -säännön", + "kaupungissa! Nuoret rikolliset, joilla ei ole mitään parempaa", + "tekemistä kuin leijua ympäriinsä ja temppuilla! Hmph!", + "Laitan kaikki rikkojat vartioon ja opetan heille", + "hieman kuria. Ei lautailua, se on laki!" ], "prop049": [ - "I am disappointed with this city's lack of", - "committment and sacrifice. Work harder! Eat less!", - "Drink only when I tell you! Sleep is optional.", - "We are at war with an outside threat,", - "don't make me declare war on you as well!" + "Olen pettynyt tämän kaupungin sitoutumisen ja", + "uhrauksen puutteeseen. Kovempaa työtä! Syö vähemmän!", + "Juo vain, kun minä käsken! Nukkuminen on valinnaista.", + "Me olemme sodassa ulkopuolista uhkaa vastaan,", + "älkää pakottako minua julistamaan sotaa myös teille!" ], "prop050": [ - "Greetings, people of this wonderful utopia. This year's", - "championship race will begin shortly. All citizens", - "not under house arrest are invited to come down to", - "the Stadium and watch your favorite son Erol", - "once again show how the Krimzon Guard are the elite", - "warriors of this city. Bring the whole family! The first", - "one thousand children will get a mandatory", - "Krimzon Guard recruitment package and be", - "\"asked\" to join the Guard for life, what a treat!" + "Tervehdys, tämän ihanan utopian ihmiset. Tämän vuoden", + "mestaruuskilpailu alkaa tuota pikaa. Kaikkia kansalaisia,", + "jotka eivät ole kotiarestissa, kutsutaan tulemaan", + "stadionille ja katselemaan suosikkinne Erolin", + "jälleen kerran näyttävän, miten Karmiinivartio ovat", + "kaupungin eliittisotureita. Tuokaa koko perhe!", + "Ensimmäiset tuhat lasta saavat pakollisen", + "Karmiinivartion rekrytointipaketin ja heitä", + "\"kysytään\" liittymään vartioon loppuelämäksi! Miten hauskaa!" ], "prop051": [ - "This is your Baron, I am still in control!", - "And I assure you, there's absolutely no Metal Heads", - "in the city. Anyone who contradicts this fact...", - "will be shot! The current situation is merely", - "an elaborate propaganda hoax, perpetrated by", - "the outlawed Underground militia trying to", - "subvert our laws and discredit those who protect you", - "while you sleep! Pay no attention to this foolish hoax,", - "there are no Metal Heads within 100 miles of this city!" + "Tämä on paroninne, olen edelleen hallinnassa!", + "Ja vakuutan teille, kaupungissa ei ole ainuttakaan", + "Metallipäätä. Kaikki tätä tosiasiaa vastustavat...", + "ammutaan! Nykyinen tilanne on vain", + "tarkkaan laadittu propagandahuijaus, jonka on luonut", + "laiton Vastarinnan miliisi, joka yrittää", + "kumota lakimme ja häpäistä heitä, jotka suojelevat teitä", + "nukkuessanne! Älkää kiinnittäkö huomiota tähän typerään huijaukseen,", + "Metallipäitä ei löydy 100 mailin etäisyydeltä kaupungista!" ], "prop052": [ - "This is Baron Praxis. We have taken back the city", - "and the Metal Heads are now fleeing before us!", - "Victory is at hand! Continue to fight for the freedom", - "I may some day give you. Continue to defy these", - "enemies of my law and order...", - "and continue to die for me." + "Tämä on paroni Praxis. Olemme saaneet kaupungin takaisin", + "ja nyt Metallipäät pakenevat edessämme!", + "Voitto on käsissä! Jatkakaa taistelua vapaudesta,", + "jonka saataan jonain päivänä suoda. Uhmatkaa näitä", + "lakieni ja järjestykseni vihollisia...", + "ja jatkakaa kuolemista puolestani." ], "prop053": [ - "Fear not the men in red. Sure, there are occasional", - "complaints about their over-aggressive policing,", - "wanton destruction of people's property during raids,", - "mass-arrests, misplaced loved ones and whatnot.", - "Hey, we're only human! Running a city can be", - "tougher than it looks, imagine how much worse", - "it would be if the Metal Heads were in charge!" + "Älä pelkää miehiä punaisissa. Toki on satunnaisia", + "valituksia heidän yliaggressiivisesta poliisitoiminnasta,", + "ihmisten omaisuuden törkeästä tuhoamisesta ratsioissa,", + "massapidätyksistä, väärin sijoitetuista rakkaista ja mitälie.", + "Hei, olemme vain ihmisiä! Kaupungin johtaminen voi olla", + "vaikeampaa miltä näyttää, kuvitelkaa miten kamalempaa", + "olisi, jos Metallipäät olisivat vastuussa!" ], "prop054": [ - "We've had a few incidents with our lower class labor", - "force lately. If your Lurker is acting up, call Krimzon", - "Animal Control. Is your Lurker in a tree? Stuck in a", - "sewer grate? Foaming at the mouth? Call", - "the friendly officers of the K.A.C. and they will deal", - "with your furry slave. with all the love and care it", - "deserves... then haul it away for reconditioning.", - "Remember, Lurkers can be dangerous!" + "On sattunut muutamia tapauksia alemman luokan työvoimamme", + "kanssa viime aikoina. Jos vaanijasi teppostelee, soita", + "Karmiinin eläinvalvontaan. Onko vaanijasi puussa?", + "Jumissa viemäriritilässä? Suu vaahtoaa?", + "Soita ystävällisille K.E.V.:n virkalijoille, ja he hoitavat", + "karvaisen orjanne kaikella ansaitsemallaan", + "rakkaudella... ja sitten hilaavat kunnostettavaksi.", + "Muistakaa, vaanijat voivat olla vaarallisia!" ], "prop055": [ - "Please give generously to the Baron eco fund.", - "Your munificent donation wil be used for a variety", - "of humanitarian needs: bombs, guns, armor, genetic", - "alteration research, all in the name of preserving this", - "wonderful city of ours. Give often, give freely...", - "or it will be taken from you!" + "Olkaa hyvä ja antakaa anteliaasti paronin ecorahastoon.", + "Upea lahjoituksesi sovelletaan useisiin eri", + "humanitaarisiin tarpeisiin: pommit, aseet, panssarit,", + "geenimuutostutkimukset, kaikki tämän ihanan kaupunkimme", + "ylläpidon nimeen. Anna usein, anna vapaasti...", + "tai se otetaan sinulta!" ], "prop056": [ - "It can be so lonely at the top and looking down from", - "up here I can see that this dirty city is in desperate", - "need of revitalization. So, to that end, we", - "will be bulldozing many sections of the city in the", - "coming weeks! All complaints against this", - "construction initiative can be brought,", - "in-person, to the Fortress Prison where they will be", - "\"reviewed.\" Condemned city sections are to", - "be evacuated before razing begins.", - "Anyone still in their homes will be ignored." + "Täällä huipulla voi olla niin yksinäistä ja kun katselee alas", + "täältä ylhäältä, näen, että tämä likainen kaupunki on", + "epätoivoisen elvyttämisen tarpeessa. Joten,", + "tulemme purkamaan useita kaupungin alueita", + "tulevina viikkoina! Kaikki valitukset tätä", + "rakennusaloitetta vastaan voidaan tuoda", + "henkilökohtaisesti Linnoituksen vankilaan, missä ne", + "\"käydään läpi\". Tuomitut kaupunginosat tulevat", + "evakuoida ennen hävityksen alkua.", + "Kaikki yhä kodeissaan jätetään huomiotta." ], "prop057": [ "Metallipäiden hyökkäys ei tule onnistumaan!", @@ -7028,8 +7028,8 @@ "Tämä on paroni Praxis. Kaupunkimme kohdatessa pahimman uhkansa", "kolmeensataan vuoteen, tarjottimellani on vakavia", "päätöksiä tulevaisuuttamme koskien. Kadun, että minulla on", - "vain vähän vaihtoehtoja jäljellä. Käsken teitä kaikkia palaamaan teidän", - "koteihin ja sanomaan hyvästit perheillenne.", + "vain vähän vaihtoehtoja jäljellä. Käsken teitä kaikkia palaamaan", + "koteihinne ja sanomaan hyvästit perheillenne.", "Olkaa varmoja, emme häviä tätä taistelua, tavalla", "taikka toisella! On tullut aika näyttää näille olennoille", "mihin pystymme, kun kaikki toivo on menetetty!", @@ -7038,7 +7038,7 @@ ], "sam001": [ "Tämä on Samos. Jak, sinun täytyy matkata raunioille", - "Kuolleeseen kaupunkiin ja piipahtaa vanhassa mökissäni. On aika noutaa", + "Aavekaupunkiin ja piipahtaa vanhassa mökissäni. On aika noutaa", "jotain, mitä piilotin sinne kauan sitten. Onnea! Ja Daxter...", "siivoa paikkani kun olette siellä!" ], @@ -7050,7 +7050,7 @@ "sam003": [ "Tämä on Samos, Jak. Metallipäät ovat taitaneet viedä", "sen jättimäisen porttirenkaan niiden pesäänsä joutomaassa.", - "Jos he aikovat käyttää rengasta avatakseen portin takaisin", + "Jos he aikovat käyttää rengasta avatakseen repeämän takaisin", "vanhaan kyläämme, meidän on päästävä pesään ja löydettävä se." ], "sam004": [ @@ -7064,8 +7064,8 @@ "Etsikää nuori Samos ja antakaa Elämän siemen hänelle." ], "sam006": [ - "Vihdoin pääsit tänne! Etsi Vaanijatoteemi", - "ja nouda pala Marin sinetistä sen päällä." + "Vihdoin pääsitte tänne! Etsikää vaanijatoteemi", + "ja noutakaa pala Marin sinetistä sen päällä." ], "sam007": [ "Sinun täytyy saattaa poika turvallisesti voimalalle, Jak!" @@ -7115,7 +7115,7 @@ "Hienoa, nyt olet valmis!" ], "sigc014": [ - "Haluatko kokeilla haulikon harjoitusrataa?" + "Haluatko kokeilla Haulikon harjoitusrataa?" ], "sigc015": [ "Läjäytin on hyvä ase peruskäyttöön", @@ -7522,7 +7522,7 @@ "Rakastan sulan metallin käryä!" ], "sigt103": [ - "Helppoa kuin heinän teko." + "Helppoa kuin heinänteko." ], "sigt104": [ "Seuraa minua!" @@ -7555,8 +7555,8 @@ "Kaksi vatsaan, yksi kalloon." ], "spot004": [ - "Tulkaa ulos ja iloitkaa, kun tuhoan kilpailun jälleen kerran radalla.", - "Tämän vuoden kilpailuihin täytyy osallistua, takaavat enemmän jännitystä ja enemmän vahinkoja kuin koskaan.", + "Tulkaa ulos ja hurratkaa minulle, kun murskaan kilpailun jälleen kerran radalla.", + "Tämän vuoden päätöskisa on kuoleman arvoinen, takaan lisää elämyksiä sekä kärsimyksiä.", "Tällä kertaa haluan verta! ...Tuokaa lapset mukaan." ], "tess001": [ @@ -7567,21 +7567,21 @@ ], "tor001": [ "Operaatio oli menestys. Kaikki jäsenet ovat turvassa.", - "Tule takaisin piilopaikkaamme, Minulla on sinulle uusi tehtävä sillä aikaa kun odotamme tilanteen laantuvan." + "Tule takaisin piilopaikkaamme, minulla on sinulle uusi tehtävä odotellessamme tilanteen laantuvan." ], "tor002": [ "Tämän pitäisi hieman rauhoittaa tilannetta kaduilla. Hyvää työtä, en olisi onnistunut ilman apuanne." ], "tor003": [ - "Se siitä, Jak nyt on sinun vuorosi, älä aiheuta hälytyksiä sillä vartijat tekevät ikävää jälkeä", - "Mene vankilaan ja etsi vangit. Kun olet siellä, me käynnistämme portaalin jotta saamme sinut takaisin ulos. Onnea." + "Jak, on sinun vuorosi! Vältä aiheuttamasta hälytyksiä, sillä vartijat tekevät ikävää jälkeä.", + "Etsi vangit selliosastolta. Kun pääset sinne, me käynnistämme portaalin, jotta saamme teidät takaisin ulos. Onnea." ], "tor004": [ - "Ok, vanhat pääsykoodit auttavat Vinin sammuttamaan magneettinen sinetti linnoituksen ovesta." + "Ok, vanhat pääsykoodini auttavat Viniä poistamaan magneettilukituksen Linnoituksen ovesta." ], "tor005": [ - "Jak, tämä on Torn, kaupunkissamme on Metal Head hyökkäys. Isot joukot kulkevat kohti kaupungin muuria merestä päin.", - "Me tarvitsemme torniin tykkimiehiä pysäyttämään tuon hyökkäyksen. Tapaa minut meren äärellä sijaitsevassa satamassa, pian!", + "Jak, tämä on Torn, Metallipäät ovat hyökkäämässä kaupunkiimme. Isot joukot kulkevat kohti kaupungin muuria merestä päin.", + "Me tarvitsemme torniin tykkimiehiä pysäyttämään tuon hyökkäyksen. Tapaa minut satamassa merenpuoleisella muurilla, pian!", "Tarvitsemme jokaisen miehen!" ], "tor007": [ @@ -7627,7 +7627,7 @@ "Minun sankarini!" ], "tswm012": [ - "Katsokaa kuinka hän kiitää!" + "Hän se osaa!" ], "tswm013": [ "Sinä OLET Oranssi salama!" @@ -7642,7 +7642,7 @@ "Kyllä!" ], "tswm017": [ - "Tuo on tuhma ottselini!" + "Siinä on tuhma saulumini!" ], "tswm018": [ "Voi!" @@ -7765,8 +7765,8 @@ "Tiesin, että pystyisit siihen." ], "vin002": [ - "Okei, B-Alueen Voimaverkko on takaisin toiminnassa.", - "Pitäkää hauskaa kuollessanne Palatsissa." + "Okei, B-vyöhykkeen voimaverkko on takaisin toiminnassa.", + "Pitäkää hauskaa kuollessanne palatsissa." ], "vin003": [ "Sinä tuhosit viimeisetkin Metallipää-munat!", @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metalli-Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oraakkeli", @@ -7852,4 +7854,4 @@ "youngsamos": "Nuori Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_fr-FR.json b/game/assets/jak2/subtitle/subtitle_lines_fr-FR.json index d0ae83111a..7214f43f43 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_fr-FR.json +++ b/game/assets/jak2/subtitle/subtitle_lines_fr-FR.json @@ -1,56 +1,6 @@ { "cutscenes": {}, "other": { - "DSbop001": [ - "Tu as l'air vraiment en colère, Jak." - ], - "DSbop002": [ - "Tu te souviens comment on saute ?" - ], - "DSbop003": [ - "Saute sur cette caisse pour franchir la barricade." - ], - "DSbop004": [ - "Ooh, c'est haut !", - "Pour l'atteindre, saute une première fois", - "et recommence une fois en l'air." - ], - "DSbop005": [ - "Good job, see? You still got it!" - ], - "DSbop006": [ - "I never found hide nor hair of Keira or Samos.", - "I don't know where they went." - ], - "DSbop007": [ - "I don't know where that crazy rift vehicle took us, but...", - "It's some kind of big city!" - ], - "DSbop008": [ - "It's a tough place, Jak. You DO remember", - "how to fight, right? Try breaking that crate with a kick." - ], - "DSbop009": [ - "Looking good, partner! Nice spin kick!", - "Works out some of that anger, eh?" - ], - "DSbop010": [ - "Il y a beaucoup de caisses Grenagarde qui", - "me tendent les bras. Démolis celles-là !" - ], - "DSbop011": [ - "Bien joué ! Elle contient une trousse de secours.", - "Prends-la, t'as intérêt à rester en bonne santé, Jak, hein sinon...", - "Qui c'est qui va s'battre ?" - ], - "DSbop016": [ - "Si tu sautes avant de plonger, tu retomberas assez", - "violemment pour faire de gros dégâts.", - "C'est drôle de casser des trucs, hein ?" - ], - "DSbop017": [ - "Jak, les gardes ! À toi... à... à toi de jouer." - ], "agnt001": [ "Hé, conduisez prudemment !" ], @@ -118,7 +68,7 @@ "Dépêchez-vous !" ], "agnt023": [ - "J'peux pas monter à l'arrière, trouvez un biplace !" + "Je peux pas monter à l'arrière, trouvez un biplace !" ], "agnt024": [ "Prenez une plus grande voiture !" @@ -175,7 +125,7 @@ "Enfin, il faut partir !" ], "agnt042": [ - "J'commençais à me demander où vous étiez passé." + "Je commençais à me demander où vous étiez passé." ], "agnt043": [ "Pas trop tôt, allons-y !" @@ -295,10 +245,10 @@ "Ça barde !" ], "agnt082": [ - "Ça suffit y'en a marre !" + "Ça suffit, y'en a marre !" ], "agnt083": [ - "Vous voulez mourir ou quoi ?" + "Vous voulez mourir ou quoi ?!" ], "agnt084": [ "Où est-ce que Torn vous a dégoté ?" @@ -343,7 +293,7 @@ "Bon pilotage, allez sauver les autres." ], "agnt098": [ - "Ok, j'm'en vais !" + "Ok, je m'en vais !" ], "agnt099": [ "À la prochaine !" @@ -454,7 +404,7 @@ "Restez concentré, on y est presque !" ], "agnt135": [ - "Bravo, j'vais dire au Sphinx qu'on est sain et sauf !" + "Bravo, je vais dire au Sphinx qu'on est sain et sauf !" ], "asha001": [ "L'heure de la vengeance a sonné." @@ -463,7 +413,7 @@ "Fais gaffe, j'ai pas l'air comme ça mais je mords." ], "asha003": [ - "J'vais me faire un plaisir de te réduire à néant...", + "Je vais me faire un plaisir de te réduire à néant...", "Ce sera pas dur tu me diras." ], "asha004": [ @@ -476,7 +426,7 @@ "Tu ne sais pas à qui t'as affaire." ], "asha007": [ - "Hé mais pas touche." + "Hé mais, pas touche." ], "asha008": [ "Prends ça !" @@ -485,7 +435,7 @@ "Tiens." ], "asha010": [ - "T'en r'demandes ?" + "T'en redemandes ?" ], "asha011": [ "Qu'est-ce que tu penses de ça ?" @@ -521,7 +471,7 @@ "Ne me pousse pas à bout." ], "asha022": [ - "Si tu r'commences j'te tue ok." + "Si tu recommences je te tue ok." ], "asha023": [ "Tu manques d'entrainement, tu sais." @@ -530,19 +480,19 @@ "Mais où as-tu appris à te battre ?" ], "asha025": [ - "Regarde un peu c'que tu fais." + "Regarde un peu ce que tu fais." ], "asha026": [ "Ne recommence jamais ça." ], "asha027": [ - "Mais qu'est ce que tu fabriques ?" + "Mais qu'est-ce que tu fabriques ?" ], "asha028": [ "Très peu pour moi !" ], "asha029": [ - "La prochaine fois j'te transforme en soprano." + "La prochaine fois je te transforme en soprano." ], "asha030": [ "Ça t'apprendra." @@ -563,7 +513,7 @@ "Écrase-les !" ], "asha036": [ - "On va s'les faire !" + "On va se les faire !" ], "asha037": [ "Les voilà !" @@ -578,13 +528,13 @@ "En voilà d'autres." ], "asha041": [ - "J'les ai eu." + "Je les ai eu." ], "asha042": [ "Mets la gomme !" ], "asha043": [ - "Un d'plus !" + "Un de plus !" ], "asha044": [ "Aide-moi !" @@ -602,13 +552,13 @@ "Ça prend mauvais tournure." ], "asha049": [ - "Au s'cours !" + "Au secours !" ], "asha050": [ "Ça c'est pour mon père !" ], "asha051": [ - "Sales Métal Heads." + "Sales Metal Heads." ], "asha052": [ "Tête de noeud." @@ -629,17 +579,17 @@ "Hah...agh..." ], "asht002": [ - "Vous aviez raison, Jak. C'que fait mon père est mal.", + "Vous aviez raison, Jak. Ce que fait mon père est mal.", "Je veux vous aider. Nous pourrons peut-être l'arrêter si", "nous parvenons à l'Usine d'armes. Je vous y rejoins." ], "asht006": [ "Je pense qu'il est temps d'agir.", - "Les Métal Heads sont occupés à attaquer la ville,", + "Les Metal Heads sont occupés à attaquer la ville,", "ils ont sans doute laissé leur nid sans surveillance.", "Jak, tu dois aller aux terres pelées et forcer la", "barrière du nid d'une façon ou d'une autre.", - "Si tu y pénètres et élimines le chef des Métal Heads", + "Si tu y pénètres et élimines le chef des Metal Heads", "peut-être que l'armée s'effondrera. C'est un coup,", "risqué mais c'est peut-être notre seule chance." ], @@ -678,7 +628,7 @@ "Pas mal. Tu pourrais me servir de pilote à l'occasion." ], "bb03fail": [ - "Je savais qu'ça serait trop dur pour toi. Continue à t'entrainer." + "Je savais que ça serait trop dur pour toi. Continue à t'entrainer." ], "bb03int": [ "Ce nouveau défi de l'anneau différencie les hommes des enfants.", @@ -689,11 +639,11 @@ "serais très utile, Jak." ], "bb04fail": [ - "Dommage, j'espère qu'tu y arriverais. Essaie encore." + "Dommage, j'espèrais que tu y arriverais. Essaie encore." ], "bb04int": [ - "Ici Torn. Je n'sais pas pourquoi j'te laisse tenter ce défi.", - "de l'anneau, je n'l'ai jamais réussi moi. Simple curiosité", + "Ici Torn. Je ne sais pas pourquoi je te laisse tenter ce défi", + "de l'anneau, je ne l'ai jamais réussi moi. Simple curiosité", "j'imagine. Réussis-le tu seras le meilleur pilote que", "les Souterrains aient jamais eu." ], @@ -717,7 +667,7 @@ ], "bb06win": [ "Encore des explorobots réduits en miettes et bons pour la casse de la Grenagarde.", - "Mission accomplie , les Souterrains te sont", + "Mission accomplie, les Souterrains te sont", "infiniment reconnaissants." ], "bb07fail": [ @@ -731,7 +681,7 @@ "Beau travail ! Tu as sauvé des vies là-bas." ], "bb08fail": [ - "Un de nos meilleurs agents a été arrêté. Le Sphinx ne.", + "Un de nos meilleurs agents a été arrêté. Le Sphinx ne", "va pas être content ! Tu as échoué." ], "bb08int": [ @@ -752,7 +702,7 @@ "et ramène-les vite au lieu de rendez-vous." ], "bb09win": [ - "Vute fait bienfait, Jak ! Un jour on t'invitera peut-être", + "Vite fait bien fait, Jak ! Un jour on t'invitera peut-être", "à une de ces réunions." ], "bb10fail": [ @@ -779,7 +729,7 @@ "Beau pilotage, Jak." ], "bb12fail": [ - "Tu n't'es pas donné à fond, petit. Essaie encore." + "Tu ne t'es pas donné à fond, petit. Essaie encore." ], "bb12int": [ "Ici Torn, on a un autre paquet à livrer", @@ -800,12 +750,6 @@ "bb13win": [ "C'était exactement ça, beau travail." ], - "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." - ], "bb14fail": [ "Trop tard, Jak ! L'agent s'est décommandé.", "Tu dois le rejoindre au plus vite !" @@ -1060,7 +1004,7 @@ "Allez lance-toi !" ], "bf011": [ - "Toi, je m'charge de ton cas !" + "Toi, je me charge de ton cas !" ], "bf012": [ "Surprise !" @@ -1120,10 +1064,10 @@ "Tu ne peux pas leur échapper !" ], "bf031": [ - "Je compatis pourquoi ta douleur !" + "Je compatis beaucoup à ta douleur !" ], "bf032": [ - "Tu es à ma merci !" + "T'es à ma merci !" ], "bf033": [ "Que penses-tu de ça ?" @@ -1396,7 +1340,7 @@ "Le meilleur l'emporte !" ], "bf123": [ - "On est pareil, Jak... oh, sauf que toi que t's mort !" + "On est pareil, Jak... oh, sauf que toi que t'es mort !" ], "bf124": [ "Ressens la fureur de la pierre des Précurseurs !" @@ -1439,7 +1383,7 @@ ], "bru001": [ "Chaude haleine de serpent d'oie !", - "Vous être héros du peuple Lurker!", + "Vous être héros du peuple Lurker !", "Nous frapper notre poitrine pour merci ! Ooooh.", "Vous devenir membres honoraires des Lurkers.", "Nous jamais oublier ! Si vous avoir besoin, nous vous aider !" @@ -1519,7 +1463,7 @@ "AAHHH !" ], "cit098": [ - "Ahh !" + "Arhh !" ], "cit098a": [ "Urgh !" @@ -1585,7 +1529,7 @@ "Gardes !" ], "cit105": [ - "Au s'cours !" + "Au secours !" ], "cit120": [ "Laissez-moi tranquille !" @@ -1606,7 +1550,7 @@ "Vous quittez la ville." ], "cityv004": [ - "Ouverture du mur protecteur." + "Ouverture : mur protecteur." ], "cityv005": [ "Décontamination terminée." @@ -1684,10 +1628,10 @@ "Réseau d'éco instable." ], "cityv030": [ - "Métal Heads repérés à la mine." + "Metal Heads repérés à la mine." ], "cityv031": [ - "Métal Heads repérés au site de forage." + "Metal Heads repérés au site de forage." ], "cityv032": [ "Attendez autorisation." @@ -1717,7 +1661,7 @@ "Alerte : La ville se fait attaquer." ], "cityv041": [ - "On signale une attaque de Métal Heads." + "On signale une attaque de Metal Heads." ], "cityv042": [ "Que tous les citoyens aillent aux abris." @@ -1750,7 +1694,7 @@ "Suspect détruit." ], "cityv052": [ - "Je suis autorisé à utiliser de la force." + "Je suis autorisée à utiliser de la force." ], "cityv053": [ "Alerte générale : On signale une émeute. Les Grenagardes arrivent." @@ -1852,7 +1796,7 @@ "La ville se fait attaquer. Veuillez rester chez vous." ], "cityv099": [ - "Des agresseurs Métal Heads infiltrent le système." + "Des agresseurs Metal Heads infiltrent le système." ], "cityv100": [ "Nous vous offrons votre laissez-passer avec plaisir." @@ -1974,7 +1918,7 @@ "Rejoignez cet endroit, vous serez récompensé." ], "cityv167": [ - "Des Métal Heads ont été détectés sur le parcours de tir.", + "Des Metal Heads ont été détectés sur le parcours de tir.", "Neutralisez-les tous." ], "cityv168": [ @@ -2066,16 +2010,46 @@ "Sortie refusée. Cible ennemie toujours présente." ], "cityv196": [ - "Sortie refusée. Oeufs de Métal Heads toujours détectés." + "Sortie refusée. Oeufs de Metal Heads toujours détectés." ], "cityv197": [ - "Les scanners indiquent des oeufs de Métal Heads toujours actifs." + "Les scanners indiquent des oeufs de Metal Heads toujours actifs." + ], + "daxm001": [ + "Shoot the platform, Jak." + ], + "daxm002": [ + "We need something to get through that gate!" + ], + "daxm003": [ + "Shoot the Metal Head when he moves his shield!" + ], + "daxm004": [ + "Hit him in his stomach!" + ], + "daxm005": [ + "Whoa! That path dropped like uh... a rock!" + ], + "daxm006": [ + "Smack the box, baby!" + ], + "daxm007": [ + "That's what I call a rocky road!" + ], + "daxm008": [ + "We gotta get to the top!" + ], + "daxm009": [ + "We made it!!" + ], + "daxm010": [ + "Rock 'n roll!" ], "ds001": [ "On doit trouver le Baron, Jak." ], "ds005": [ - "Jak, ce sont des Métal Heads !" + "Jak, ce sont des Metal Heads !" ], "ds006": [ "On va enfin voir le Sphinx !", @@ -2161,7 +2135,7 @@ "Un char robot, fuyons !" ], "ds051": [ - "On d'vrait rester avec Sig." + "On devrait rester avec Sig." ], "ds052": [ "Hé, gros balèze, reste avec nous." @@ -2194,7 +2168,7 @@ "Oh oh, Sig a des ennuis !" ], "ds062": [ - "Voilà un autre Métal Head aux trousses de notre ami !", + "Voilà un autre Metal Head aux trousses de notre ami !", "Tire, tire !" ], "ds063": [ @@ -2213,7 +2187,7 @@ "Ouf, ça craint..." ], "ds068": [ - "On doit les t'nir à distance de Sig." + "On doit les tenir à distance de Sig." ], "ds069": [ "Trouvons la valve pour remettre l'eau." @@ -2222,13 +2196,13 @@ "Char robot, fuyons !" ], "ds095": [ - "Revoilà c'satané char !" + "Revoilà ce satané char !" ], "ds096": [ "Prends le char pour tirer sur le missile !" ], "ds099": [ - "Il faut qu'on grimpe en haut d'cette tour !" + "Il faut qu'on grimpe en haut de cette tour !" ], "ds100": [ "Escalade la tour délabrée, Jak !" @@ -2252,10 +2226,10 @@ "Vise la plateforme, Jak." ], "ds117": [ - "Il nous faut quelque chose pour passer c'portail." + "Il nous faut quelque chose pour passer ce portail." ], "ds118": [ - "Tire sur le Métal Head lorsqu'il bouge son bouclier." + "Tire sur le Metal Head dès qu'il bouge son bouclier." ], "ds119": [ "Vise l'estomac." @@ -2285,7 +2259,7 @@ "Derrière nous, Jak !" ], "ds147": [ - "Des Métal Heads ! Partout !" + "Des Metal Heads ! Partout !" ], "ds148": [ "Protège-nous, Jak ! Enfin surtout moi." @@ -2324,8 +2298,8 @@ "On va lui faire sa fête au Baron !" ], "ds166": [ - "Je n'sors pas d'ce gunpod", - "tant qu'un seul de ces Métal Head volant est encore en vie !" + "Je ne sors pas de ce gunpod", + "tant qu'un seul de ces Metal Head volant est encore en vie !" ], "ds167": [ "Pourquoi veulent-ils qu'on protège le labo de Samos ?", @@ -2428,7 +2402,7 @@ "Mets la gomme !" ], "ds204": [ - "Ooooah, faut r'gagner du terrain !" + "Ooooah, faut regagner du terrain !" ], "ds205": [ "Tourne ou t'es foutu !" @@ -2495,10 +2469,10 @@ "Allons-y, haleine d'éco ! On t'amène à Brutter." ], "ds226": [ - "Hé, Brutter ! Regarde c'que le chat dinde a ramené." + "Hé, Brutter ! Regarde ce que le chat dinde a ramené." ], "ds227": [ - "Regarde c'qu'on a trouvé !" + "Regarde ce qu'on a trouvé !" ], "ds228": [ "Tu reconnais ce monstre ?" @@ -2513,7 +2487,7 @@ "Écrase le panier à salade !" ], "ds232": [ - "Encore un p'tit effort et on l'aura cet enfoiré !" + "Encore un petit effort et on l'aura cet enfoiré !" ], "ds233": [ "Il fume, Jak ! Achève-le !" @@ -2540,10 +2514,10 @@ "Détruis-le !" ], "ds241": [ - "Va chercher l'lurker, Jak !" + "Va chercher le lurker, Jak !" ], "ds242": [ - "Va chercher l'lurker !" + "Va chercher le lurker !" ], "ds243": [ "On doit aller chercher ce lurker là-bas" @@ -2600,7 +2574,7 @@ "Ouais, dans le mille !" ], "ds261": [ - "Comme si c'n'était déjà pas assez avec Krew." + "Comme si ce n'était déjà pas assez avec Krew." ], "ds262": [ "Vise-les tous, Jak ! On fera le tri après..." @@ -2618,7 +2592,7 @@ "Ils reviennent !" ], "ds267": [ - "Oh là j'crois qu'on a perdu la boule." + "Oh là je crois qu'on a perdu la boule." ], "ds268": [ "Bien joué, Jak ! Il déguste ce gros lard." @@ -2630,16 +2604,16 @@ "Continue à bouger, mon vieux ! Il va tirer !" ], "ds271": [ - "Ouh, des Métal Heads en vue !" + "Ouh, des Metal Heads en vue !" ], "ds272": [ "Protège le gosse !" ], "ds273": [ - "Élimine tous les Métal Heads !" + "Élimine tous les Metal Heads !" ], "ds274": [ - "D'autres Métal Heads !" + "D'autres Metal Heads !" ], "ds275": [ "Vise les jambes de Kor, Jak !" @@ -2651,13 +2625,13 @@ "Défonce-lui la tête, la tête !" ], "ds278": [ - "Euh on devrait s'cacher quelque part non ?" + "Euh on devrait se cacher quelque part non ?" ], "ds279": [ "Abrite-toi avant qu'il explose !" ], "ds280": [ - "Ouais, tu l'as eu comme y faut cette fois !" + "Ouais, tu l'as eu comme il faut cette fois !" ], "ds281": [ "Oooh, il a l'air furieux !" @@ -2694,7 +2668,7 @@ ], "ds305": [ "Vise l'interrupteur pour changer la direction", - "du courroie !" + "des courroies !" ], "ds306": [ "Tire sur l'interrupteur, Jak !" @@ -2718,13 +2692,13 @@ "Tire sur ce vaisseau !" ], "ds326": [ - "Ouais, ils vont l'sentir passer !" + "Ouais, ils vont le sentir passer !" ], "ds327": [ "Ouh, joli tirs." ], "ds328": [ - "Je crois qu'tu l'as eu cette fois !" + "Je crois que tu l'as eu cette fois !" ], "ds329": [ "Le vaisseau coule ! Tu as réussi, Jak !" @@ -2781,19 +2755,19 @@ "Faut pas qu'on laisse ce truc nous rattraper !" ], "ds439": [ - "Tire sur tous les oeufs de Métal Heads, Jak !" + "Tire sur tous les oeufs de Metal Heads, Jak !" ], "ds440": [ "On n'a pas eu tous ces affreux oeufs !" ], "ds441": [ - "Les oeufs n'sont pas tous détruits !" + "Les oeufs ne sont pas tous détruits !" ], "ds461": [ "On doit sauter sur cette caisse fixée à la grue !" ], "ds462": [ - "Utilise ton hoverboard sur l'chemin !" + "Utilise ton hoverboard sur le chemin !" ], "ds463": [ "Tu peux grinder sur ces tuyaux avec ton", @@ -2872,7 +2846,7 @@ "On prend une belle dérouillée !" ], "ds490": [ - "Je devrais p't-être conduire..." + "Je devrais peut-être conduire..." ], "ds491": [ "Allons-y, sous-zinzin,", @@ -2886,7 +2860,7 @@ "Prochain arrêt : Votre nouveau refuge !" ], "ds494": [ - "Je crois qu'vous descendez là !" + "Je crois que vous descendez là !" ], "ds495": [ "Taxi du combat pour la liberté Daxter à votre service !", @@ -2920,6 +2894,34 @@ "ds503": [ "Je crois qu'on doit regagner la ville, Jak." ], + "DSbop002": [ + "Tu te souviens comment on saute ?" + ], + "DSbop003": [ + "Saute sur cette caisse pour franchir la barricade." + ], + "DSbop004": [ + "Ooh, c'est haut !", + "Pour l'atteindre, saute une première fois", + "et recommence une fois en l'air." + ], + "DSbop010": [ + "Il y a beaucoup de caisses Grenagarde qui", + "me tendent les bras. Démolis celles-là !" + ], + "DSbop011": [ + "Bien joué ! Elle contient une trousse de secours.", + "Prends-la, t'as intérêt à rester en bonne santé, Jak, hein sinon...", + "Qui c'est qui va se battre ?" + ], + "DSbop016": [ + "Si tu sautes avant de plonger, tu retomberas assez", + "violemment pour faire de gros dégâts.", + "C'est drôle de casser des trucs, hein ?" + ], + "DSbop017": [ + "Jak, les gardes ! À toi... à... à toi de jouer." + ], "dsek001": [ "Petit ! Ne t'éloigne pas !" ], @@ -2951,7 +2953,7 @@ "Rattrape le gamin !" ], "dsek011": [ - "Reste avec le p'tit !" + "Reste avec le petit !" ], "dsek012": [ "Croco-chien !" @@ -2987,10 +2989,10 @@ "Rattrape-moi, si tu peux !" ], "ero010": [ - "J'suis trop rapide c'est tout !" + "Je suis trop rapide c'est tout !" ], "ero011": [ - "Tu d'vrais pas jouer dans la cour des grands !" + "Tu devrais pas jouer dans la cour des grands !" ], "ero012": [ "Ça c'est pour le Baron." @@ -3020,7 +3022,7 @@ "Prends-ça dans les dents !" ], "ero021": [ - "Essaie d'les doubler !" + "Essaie de les doubler !" ], "ero022": [ "T'as des réflexes ?" @@ -3101,13 +3103,13 @@ "C'est ma course !" ], "ero048": [ - "Je s'rai toujours le plus rapide !" + "Je serai toujours le plus rapide !" ], "ero049": [ "Kiera veut un homme un vrai." ], "ero050": [ - "Pas de bol, p'tit père." + "Pas de bol, petit père." ], "ero051": [ "Bien essayé." @@ -3134,7 +3136,7 @@ "C'est ma ville, éco dégénéré." ], "ero059": [ - "Tu t'relaches, Jak." + "Tu te relaches, Jak." ], "ero060": [ "Lache l'affaire !" @@ -3143,7 +3145,7 @@ "C'est pas pour cette fois." ], "ero062": [ - "J'te sens nerveux non ?" + "Je te sens nerveux non ?" ], "ero063": [ "Viens voir un peu là !" @@ -3164,7 +3166,7 @@ "C'est ma ville." ], "ero069": [ - "Quoi ?! J't'ai pas vu arriver !" + "Quoi ?! Je t'ai pas vu arriver !" ], "ero070": [ "T'as eu du bol." @@ -3219,13 +3221,13 @@ "Un jour je serai Baron, et la ville s'en souviendra !" ], "ero087": [ - "Je savais que tu n'serais pas à la hauteur." + "Je savais que tu ne serais pas à la hauteur." ], "ero088": [ "J'ai gagné, Kiera va m'adorer !" ], "ero089": [ - "Tu ferais p't-être mieux de retourner de là où tu viens." + "Tu ferais peut-être mieux de retourner de là où tu viens." ], "ero090": [ "J'attends mon baisé de la victoire maintenant Kiera." @@ -3305,7 +3307,7 @@ "Par là !" ], "hal007": [ - "AHH ! Un Métal Head ! Tuez-le, tuez-le !" + "AHH ! Un Metal Head ! Tuez-le, tuez-le !" ], "hal008": [ "Reste avec nous !" @@ -3358,7 +3360,7 @@ "Rentrons." ], "hal027": [ - "Bougez vos fesses, ou j'm'en charge pour vous !" + "Bougez vos fesses, ou je m'en charge pour vous !" ], "hal028": [ "Il est vraiment dégueulasse ce boulot." @@ -3409,7 +3411,7 @@ "Attendez ! J'ai 8 enfants à nourrir !" ], "hal044": [ - "Beau boulot, ils étaient coriaces ces Métal Heads." + "Beau boulot, ils étaient coriaces ces Metal Heads." ], "hal045": [ "Ah te voilà, tu pourrais pas te rendre utile non ?" @@ -3441,19 +3443,19 @@ ], "hal054": [ "Ouh, ça doit faire mal ça.", - "J't'avais pourtant dit de te planquer, mais on ne m'écoute jamais mmh ?" + "Je t'avais pourtant dit de te planquer, mais on ne m'écoute jamais mmh ?" ], "hal055": [ "Encore des monstres !" ], "hal056": [ - "Bah alors, qu'est-ce que t'attends Jak ? Fais c'que t'as à faire !" + "Bah alors, qu'est-ce que t'attends Jak ? Fais ce que t'as à faire !" ], "hal057": [ "Remue-toi les fesses Jak ! Et fais ton boulot." ], "hal058": [ - "Vas-y butte-les p'tit gars." + "Vas-y butte-les petit gars." ], "hal059": [ "Tu t'en sors pas mal avec ce bout de ferraille mon kiki." @@ -3493,7 +3495,7 @@ "Ouais... dans tes rêves bouboule." ], "hal071": [ - "Débarasse-nous des Métal Heads, on t'attend là." + "Débarasse-nous des Metal Heads, on t'attend là." ], "hal072": [ "Un véritable enfant de coeur, hihihi." @@ -3508,7 +3510,7 @@ "Trop facile." ], "hal080": [ - "On t'attend pendant qu'tu les buttes hein !" + "On t'attend pendant que tu les buttes hein !" ], "hal081": [ "Allez, on sort de là avant le prochain arrivage." @@ -3544,7 +3546,7 @@ "Allez on y va." ], "hal093": [ - "J't'en pris, si tu permets." + "Je t'en pris, si tu permets." ], "hal094": [ "Et un égout débouché, un." @@ -3565,7 +3567,7 @@ "Argh ! Je refuserai pas un peu d'aide !" ], "hal103": [ - "Fais gaffe mon grand ou j't'arrange le portrait." + "Fais gaffe mon grand ou je t'arrange le portrait." ], "hal104": [ "T'as la gachette chatouilleuse toi." @@ -3638,19 +3640,19 @@ "Jak mon héros." ], "hal130": [ - "On dirait qu'j'ai des flatulances." + "On dirait que j'ai des flatulances." ], "hal131": [ "Je hais Krew." ], "hal132": [ - "Il est hors de question qu'j'y retourne !" + "Il est hors de question que j'y retourne !" ], "hal133": [ - "Il vient m'chercher !" + "Il vient me chercher !" ], "hal134": [ - "Je crois qu'c'est moi qui veut !" + "Je crois que c'est moi qui veut !" ], "hal135": [ "Aide-moi, Jak !" @@ -3674,13 +3676,13 @@ "J'ai été touché !" ], "hal142": [ - "J'suis touché !" + "Je suis touché !" ], "hal143": [ "Ughh !" ], "hal144": [ - "Ughh ! Au s'cours !" + "Ughh ! Au secours !" ], "hal145": [ "Hé mec, fais gaffe !" @@ -3716,13 +3718,13 @@ "On m'assassine !" ], "hal156": [ - "Hé ! Et pourquoi n'pas me tuer aussi ?" + "Hé ! Et pourquoi ne pas me tuer aussi ?" ], "hal157": [ "Vise un peu mieux petit !" ], "hal158": [ - "Vise les Métal Heads, pas moi !" + "Vise les Metal Heads, pas moi !" ], "hal159": [ "Arhh !" @@ -3749,7 +3751,7 @@ "Et bien voilà, on est foutu ! Fais-nous signe quand t'auras fini de faire le clown !" ], "hal168": [ - "J'suis coincé !" + "Je suis coincé !" ], "hal169": [ "Y va finir par me tuer !" @@ -3767,10 +3769,10 @@ "Il s'approchent à vitesse grand V, Jak!" ], "hal174": [ - "Y vont m'chopper !" + "Y vont me chopper !" ], "hal175": [ - "J'vais y laisser ma peau moi !" + "Je vais y laisser ma peau moi !" ], "hal176": [ "Jak ! Y vont me réduire en bouillie !" @@ -3779,16 +3781,16 @@ "Aghh ! Ça brûle !" ], "hal178": [ - "On m'tire dessus !" + "On me tire dessus !" ], "hal179": [ "Attention aux rayons !" ], "hal180": [ - "J'suis touché !" + "Je suis touché !" ], "hal181": [ - "J'suis coincé !" + "Je suis coincé !" ], "hal182": [ "Recule, je vais faire exploser tout ça à distance." @@ -3806,7 +3808,7 @@ "Bouge-toi !" ], "hal187": [ - "Y'a d'quoi faire aux Métal Heads." + "Y'a de quoi faire aux Metal Heads." ], "hal188": [ "Oof !" @@ -3857,7 +3859,7 @@ "Attention !" ], "jak013": [ - "Dernier tour !" + "Le dernier tour !" ], "jak014": [ "Faites gaffe !" @@ -3926,7 +3928,7 @@ "Le voilà !" ], "jak037": [ - "Allez vas-y, montre c'que t'as dans le ventre !" + "Allez vas-y, montre ce que t'as dans le ventre !" ], "jak038": [ "Et voilà !" @@ -3938,7 +3940,7 @@ "C'est pour moi !" ], "jak041": [ - "Je n'fais qu'l'emprunter !" + "Je ne fais que l'emprunter !" ], "jak042": [ "Bouge-toi, mon gars !" @@ -3971,10 +3973,10 @@ "Vas-y à pinces." ], "jak053": [ - "Désolé, mais j'suis pressé !" + "Désolé, mais je suis pressé !" ], "jak054": [ - "Faut qu'j'y aille !" + "Faut que j'y aille !" ], "jak055": [ "Trouve-toi un autre véhicule !" @@ -4001,7 +4003,7 @@ "Ce crétin s'en sort !" ], "jak064": [ - "Tu d'vrais avoir peur. Très peur." + "Tu devrais avoir peur. Très peur." ], "jak065": [ "Oooh, ça va faire mal." @@ -4077,16 +4079,16 @@ "Alors ça fait quoi quand on riposte ?" ], "jk008": [ - "Laissez c'gamin tranquille !" + "Laissez ce gamin tranquille !" ], "jk009": [ - "C'n'est qu'un môme !" + "Ce n'est qu'un môme !" ], "jk010": [ "Fichez-lui la paix !" ], "jk011": [ - "Ça y est j'suis énervé !" + "Ça y est je suis énervé !" ], "jk012": [ "Prenez ça !" @@ -4107,7 +4109,7 @@ "Reste avec moi, et il ne t'arrivera rien." ], "jk018": [ - "Reste près de moi, p'tit !" + "Reste près de moi, petit !" ], "jk019": [ "Saute dans le véhicule, Dax !" @@ -4125,7 +4127,7 @@ "Saute sur ce rebord." ], "kei004": [ - "Essaie d'sauter sur cette caisse." + "Essaie de sauter sur cette caisse." ], "kei005": [ "Saute cet obstacle." @@ -4190,13 +4192,13 @@ ], "kei026": [ "Les Soutterains ont dit que tu avais besoin d'aide,", - "à pied tu ne pourras pas attraper ces Métal Heads dans la", - "fôret, alors j'ai laissé mon Jet Board au niveau du SAS", + "à pied tu ne pourras pas attraper ces Metal Heads dans la", + "forêt, alors j'ai laissé mon Jet Board au niveau du SAS", "à la sortie de la ville. Puisque tu aides les Souterrains,", "j'accepte même que tu le gardes !" ], "kei027": [ - "Jak, ici Kiera. J'te rappelle que j'ai toujours besoin de 2 objets", + "Jak, ici Kiera. Je te rappelle que j'ai toujours besoin de 2 objets", "pour démarrer la chrono-navette ! Il me faut la carte du temps et", "la gemme d'énergie du coeur de Mar, sinon nous ne pourrons pas partir !" ], @@ -4525,7 +4527,7 @@ "Aucune trace du suspect." ], "kg060": [ - "J'le vois nulle part." + "Je le vois nulle part." ], "kg060a": [ "Je ne le vois nulle part." @@ -4591,7 +4593,7 @@ "Je l'ai trouvé !" ], "kg071": [ - "Le voilà." + "Le voilà !" ], "kg071a": [ "Le voilà !" @@ -4633,7 +4635,7 @@ "J'ai repéré la cible !" ], "kg078": [ - "Je me rapproche." + "Je me rapproche !" ], "kg078a": [ "Je me rapproche !" @@ -4651,10 +4653,10 @@ "Je suis à ses trousses !" ], "kg081": [ - "J'poursuis la cible !" + "Je poursuis la cible !" ], "kg081a": [ - "J'poursuis la cible !" + "Je poursuis la cible !" ], "kg082": [ "Ne le laissez pas s'enfuir !" @@ -4693,16 +4695,16 @@ "Arrêtez-vous là !" ], "kg088": [ - "J'le lache pas !" + "Je le lache pas !" ], "kg088a": [ "Je ne le lache pas !" ], "kg089": [ - "J'suis touché !" + "Je suis touché !" ], "kg089a": [ - "J'suis touché !" + "Je suis touché !" ], "kg090": [ "Homme à terre !" @@ -4879,7 +4881,7 @@ "Le char anti-émeute a repéré le prisonnier." ], "kg119": [ - "Alerte un intrus !." + "Alerte un intrus !" ], "kg119a": [ "Alerte un intrus !" @@ -5155,7 +5157,7 @@ "On ne combat pas la loi." ], "kg175b": [ - "On n'combat pas la loi." + "On ne combat pas la loi." ], "kg176": [ "Vous êtes en état d'arrestation !" @@ -5167,10 +5169,10 @@ "Il s'est volatilisé !" ], "kg179": [ - "Vous avez entendu parler des dernières attaques des Métal Heads ?" + "Vous avez entendu parler des dernières attaques des Metal Heads ?" ], "kg179b": [ - "Vous avez entendu parler des dernières attaques des Métal Heads ?" + "Vous avez entendu parler des dernières attaques des Metal Heads ?" ], "kg180": [ "On a perdu 3 unités la semaine dernière." @@ -5385,7 +5387,7 @@ "Je peux tirer sur quelqu'un ?" ], "kg203": [ - "J'adore cette nouvelle armure." + "J'adore cette nouvelle arme." ], "kg203a": [ "J'adore cette nouvelle armure." @@ -5418,7 +5420,7 @@ ], "kg206b": [ "S'il se passe rien d'intéressant,", - "j'vais finir par te tuer." + "je vais finir par te tuer." ], "kg207": [ "Tu récupères tes pots-de-vin cette semaine ?" @@ -5457,22 +5459,22 @@ "c'est dingue." ], "kg211": [ - "Ça fait 2 jours que j'suis en service." + "Ça fait 2 jours que je suis en service." ], "kg211a": [ - "Ça fait 2 jours que j'suis en service." + "Ça fait 2 jours que je suis en service." ], "kg211b": [ - "Ça fait 2 jours que j'suis en service." + "Ça fait 2 jours que je suis en service." ], "kg212": [ - "Te plains pas. La semaine prochaine j'suis affecté aux égouts." + "Te plains pas. La semaine prochaine je suis affecté aux égouts." ], "kg212a": [ - "Te plains pas. La semaine prochaine j'suis affecté aux égouts." + "Te plains pas. La semaine prochaine je suis affecté aux égouts." ], "kg212b": [ - "Te plains pas. La semaine prochaine j'suis affecté aux égouts." + "Te plains pas. La semaine prochaine je suis affecté aux égouts." ], "kg213": [ "Baah, pôv type. T'as énervé quel chef encore ?" @@ -5493,7 +5495,7 @@ "Je dis mort aux Souterrains." ], "kg215": [ - "Je veux tuer ce Sphinx." + "Je veux tuer ce Sphinx !" ], "kg215a": [ "Je veux tuer ce Sphinx !" @@ -5535,7 +5537,7 @@ "Je ne sais pas, ordre du Baron." ], "kg219b": [ - "J'sais pas, ordre du Baron." + "Je sais pas, ordre du Baron." ], "kg220": [ "Ils ont trouvé le tombeau de Mar ?" @@ -5565,13 +5567,13 @@ "J'ai parié gros sur les prochaines courses." ], "kg223": [ - "J'parie pour Erol. Il gagne tout le temps." + "Je parie pour Erol. Il gagne tout le temps." ], "kg223a": [ "Je parie sur Erol. Il gagne toujours." ], "kg223b": [ - "J'parie sur Erol. Il gagne toujours." + "Je parie sur Erol. Il gagne toujours." ], "kg224": [ "Tu vas assister aux prochaines courses ?" @@ -5592,13 +5594,13 @@ "Ouais." ], "kg226": [ - "Ça a été les catombes parmis les gardes cette semaine." + "Ça a été l'hécatombe parmi les gardes cette semaine." ], "kg226a": [ - "Ça a été les catombes parmis les gardes cette semaine." + "Ça a été l'hécatombe parmi les gardes cette semaine." ], "kg226b": [ - "Ça a été les catombes parmis les gardes cette semaine." + "Ça a été l'hécatombe parmi les gardes cette semaine." ], "kg227": [ "Ouais, et y'a un combattant rebelle qui fait des ravages." @@ -5637,15 +5639,15 @@ "J'ai un mauvais présentiment sur cette guerre." ], "kg231": [ - "Y'a plus d'attaques de Métal Heads", + "Y'a plus d'attaques de Metal Heads", "que l'admet le QG." ], "kg231a": [ - "Hé y'a plus d'attaques de Métal Heads", + "Hé y'a plus d'attaques de Metal Heads", "que ne l'admet le QG." ], "kg231b": [ - "Hé y'a plus d'attaques de Métal Heads", + "Hé y'a plus d'attaques de Metal Heads", "que ne l'admet le QG." ], "kg232": [ @@ -5669,7 +5671,7 @@ "les Souterrains m'inquiète." ], "kg233b": [ - "Le nouveau qui combat pour.", + "Le nouveau qui combat pour", "les Souterrains m'inquiète." ], "kg234": [ @@ -6014,7 +6016,7 @@ "On nous tire dessus !" ], "kg339a": [ - "C'est les catombes, envoyez-nous du renfort !" + "C'est l'hécatombe, envoyez-nous du renfort !" ], "kg340a": [ "Ce gars sait se battre !" @@ -6026,7 +6028,7 @@ "Ne vous repliez pas !" ], "kg343a": [ - "On a perdu l'unité Béta !" + "On a perdu l'unité Beta !" ], "kg344a": [ "On a besoin d'hommes !" @@ -6564,7 +6566,7 @@ "*Des plateformes apparaissent dans le mur et le rocher*" ], "ora006": [ - "Rapportez-moi encore 200 Gemmes Crâniennes de Métal Heads", + "Rapportez-moi encore 200 Gemmes Crâniennes de Metal Heads", "et je vous montrerai une autre énergie noire." ], "ora007": [ @@ -6577,7 +6579,7 @@ ], "ora009": [ "Vous n'avez pas assez de Gemmes Crâniennes.", - "Revenez lorsque quand vous aurez davantage." + "Revenez quand vous en aurez davantage." ], "ora010": [ "Il me faut d'autres Gemmes Crâniennes." @@ -6719,7 +6721,7 @@ ], "prop002": [ "Comme vous le savez, j'ai été blessé au cours de notre dernière", - "et glorieuse attaque du nid des Métal Heads", + "et glorieuse attaque du nid de Metal Heads", "y'a quelques années. J'ai tout sacrifié", "pour cette ville et je veux qu'elle me le rende !", "Tout citoyen loyal sera récompensé,", @@ -6748,14 +6750,14 @@ "Cet homme est armé, il est extrêmement", "dangereux, il peut se transformer en une sorte de", "monstre. Il semblerait qu'il collabore avec les", - "Métal Heads pour déstabiliser la ville et nuire à votre sécurité.", + "Metal Heads pour déstabiliser la ville et nuire à votre sécurité.", "Nous avons besoin de vos témoignages !" ], "prop006": [ "Braves citoyens, c'est aujourd'hui l'anniversaire de", "la grande bataille qui a détruit une section de notre ville", "maintenant appelée Ville Morte. Il y a une pensée pour ceux", - "qui sont morts ce jour-là, n'oubliez pas ce qu'ont fait les Métal Heads", + "qui sont morts ce jour-là, n'oubliez pas ce qu'ont fait les Metal Heads", "Souvenez-vous du courage dont j'ai fait preuve pour sauver des", "vies dans la section occupée. Et soyez infiniment", "reconnaissants aux Grenagardes qui", @@ -6763,7 +6765,7 @@ ], "prop007": [ "Votre Baron s'adresse à vous. La rumeur d'une invasion", - "de Métal Heads est très exagérée.", + "de Metal Heads est très exagérée.", "Il ne s'agit que d'une petit incursion que nous allons", "écraser sans mal. Restez chez vous, ne cédez pas à la panique,", "ou vous serez punis !" @@ -6788,7 +6790,7 @@ "Vous êtes en sécurité je veille au crain." ], "prop012": [ - "Mort à tous les Métal Heads !" + "Mort à tous les Metal Heads !" ], "prop013": [ "Travaillez dur, et soyez reconnaissants." @@ -6883,7 +6885,7 @@ "Ayez confiance." ], "prop042": [ - "Soyez sûr que je détruirai les Métal Heads.", + "Soyez sûr que je détruirai les Metal Heads.", "La fin justifie les moyens." ], "prop043": [ @@ -6949,18 +6951,18 @@ ], "prop051": [ "C'est votre Baron qui vous parle, je contrôle toujours la situation !", - "Je vous assure, qu'il n'y a aucun Métal Head", + "Je vous assure, qu'il n'y a aucun Metal Head", "dans la ville. Ceux qui soutiendront le contraire,", "seront exécutés ! Tout ceci n'est qu'une vaste", "opération de propagande, organisé", "par la milice des Souterrains pour sapper nos lois", "et jeter le discredit sur ceux qui vous protègent", "pendant votre sommeil ! Ne croyez pas ces balivernes,", - "il n'y a pas un seul Métal Head à 100 kilomètres à la ronde !" + "il n'y a pas un seul Metal Head à 100 kilomètres à la ronde !" ], "prop052": [ "Ici le Baron Praxis. Nous avons repris la ville", - "et les Métal Heads battent en retraite !", + "et les Metal Heads battent en retraite !", "La victoire est proche ! Continuez à vous battre pour la liberté", "que je vous accorderai peut-être un jour. Continuez à défier ces", "ennemis qui s'opposent à ma loi,", @@ -6973,7 +6975,7 @@ "les arrestations sont nombreuses et les erreurs courantes.", "Mais nous sommes humains après tout ! Diriger une ville", "est une chose difficile, ne serait-ce pas bien pire", - "si les Métal Heads vous gouvernaient !" + "si les Metal Heads vous gouvernaient !" ], "prop054": [ "Nous avons eu quelques incidents avec notre classe ouvrière", @@ -7006,7 +7008,7 @@ "Vous aurez été prévenu." ], "prop057": [ - "Les Métal Heads ne triompheront pas !", + "Les Metal Heads ne triompheront pas !", "Votre Baron a pris certaines mesures pour s'assurer qu'ils", "ne tiendront JAMAIS la ville très longtemps.", "Ne vous inquiètez pas, j'arracherai la victoire", @@ -7037,10 +7039,10 @@ "sam002": [ "Ici Samos. Les garçons je voudrai que vous alliez", "dans mon ancien labo. Il y a là-bas", - "quelque chose dont j'ai besoin ! Bonne chance, et attention aux Métal Heads." + "quelque chose dont j'ai besoin ! Bonne chance, et attention aux Metal Heads." ], "sam003": [ - "Ici Samos, Jak. Les Métal Heads ont dû", + "Ici Samos, Jak. Les Metal Heads ont dû", "rapporter l'anneau de la grande porte dans leur nid des terres pelées.", "Si nous voulons l'utiliser pour ouvrir une faille vers", "notre vieux village, nous devons d'abord la récupèrer dans le nid." @@ -7194,13 +7196,13 @@ "C'était un civil !" ], "sigc055": [ - "J't'ai dit de ne pas tirer sur les civils, neuneu !" + "Je t'ai dit de ne pas tirer sur les civils, neuneu !" ], "sigc056": [ "Bien joué !" ], "sigc057": [ - "Magnifique, j'ai déjà pitié pour ces pauvres Métal Heads." + "Magnifique, j'ai déjà pitié pour ces pauvres Metal Heads." ], "sigc058": [ "C'était un beau coup, on dirait presque que c'est facile !" @@ -7209,7 +7211,7 @@ "T'as vraiment assuré !" ], "sigc060": [ - "Les Métal Heads ne feront de toi qu'une bouchée! Recommence !" + "Les Metal Heads ne feront de toi qu'une bouchée! Recommence !" ], "sigc061": [ "T'as besoin de t'entrainer." @@ -7221,7 +7223,7 @@ "Parfait ! Tu es l'homme de la situation." ], "sigc064": [ - "Impeccable ! J'suis impressionné." + "Impeccable ! Je suis impressionné." ], "sigc065": [ "Waoh, ça roule ma poule ! C'était impeccable." @@ -7278,7 +7280,7 @@ "Prêt pour le parcours de Blaster ?" ], "sigf001": [ - "Vous les avez tous éliminés ! Je ne sais toujours pas pourquoi les Métal Heads", + "Vous les avez tous éliminés ! Je ne sais toujours pas pourquoi des Metal Heads", "combattants se sont aventurés si près de la ville. Honnêtement je,", "n'aurai jamais cru que vous réussiriez, bon travail !" ], @@ -7314,13 +7316,13 @@ "pendant que je charge le Pacificateur." ], "sigt013": [ - "Ce Métal Head est cuit et bien cuit." + "Ce Metal Head est cuit et bien cuit." ], "sigt014": [ "Rejoignons la cible suivante." ], "sigt015": [ - "Avec les Métal Heads : tu tires d'abord et tu discutes après." + "Avec les Metal Heads : tu tires d'abord et tu discutes après." ], "sigt017": [ "Reste avec moi !" @@ -7338,14 +7340,14 @@ "Couvre-moi !" ], "sigt023": [ - "Et boom ! Un Métal Head en moins, un." + "Et boom ! Un Metal Head en moins, un." ], "sigt024": [ "Cible suivante." ], "sigt025": [ "Couvre mes arrières, je vais le dégommer.", - "On a pas le droit à l'erreur." + "On n'a pas le droit à l'erreur." ], "sigt026": [ "Ça c'est ce que j'appelle en mettre plein la vue." @@ -7354,7 +7356,7 @@ "Je vais devoir la jouer fine cette fois." ], "sigt028": [ - "Hihihi, un Métal Head de flambé." + "Hihihi, un Metal Head de flambé." ], "sigt029": [ "Attention ! On a de la compagnie !" @@ -7433,7 +7435,7 @@ "T'as entendu ça ?" ], "sigt063": [ - "Et un Métal Head bien balèze, un." + "Et un Metal Head bien balèze, un." ], "sigt064": [ "Ne lui tire pas dessus il aime pas ça, barre-toi !" @@ -7578,7 +7580,7 @@ "Ok, mes anciens codes d'accès devraient aider Vin à désactiver le sceau magnétique de la porte de la forteresse." ], "tor005": [ - "Jak, ici Torn, Les Métal Heads nous attaquent par l'océan. Leurs effectifs sont importants et ils se dirigent vers les murs de la ville.", + "Jak, ici Torn, Les Metal Heads nous attaquent par l'océan. Leurs effectifs sont importants et ils se dirigent vers les murs de la ville.", "On a besoin de renforts pour armer les gunpods et repousser l'attaque. Rejoins-moi au mur de l'océan au Port, fais vite !", "On a besoin de toute l'aide possible !" ], @@ -7712,7 +7714,7 @@ "Ne touche pas à ceux-là, Daxter." ], "tswm041": [ - "Tu as touché un mauvais Métal Head." + "Tu as touché un mauvais Metal Head." ], "tswm042": [ "Ça suffit !" @@ -7748,7 +7750,7 @@ "Ne touche pas à ceux-là, Daxter." ], "tswm053": [ - "Daxter, tu as touché un mauvais Métal Head !" + "Daxter, tu as touché un mauvais Metal Head !" ], "tswm054": [ "Daxter, tu as gagné !" @@ -7767,24 +7769,24 @@ "Éclatez-vous en mourrant dans le palais." ], "vin003": [ - "Vous avez détruit le dernier oeuf de Métal Head !", + "Vous avez détruit le dernier oeuf de Metal Head !", "On devrait pouvoir économiser un peu d'éco pour la ville.", "Bravo !" ], "vin004": [ - "Il manque encore des oeufs de Métal Heads !", + "Il manque encore des oeufs de Metal Heads !", "Assurez-vous de les récupérer tous, ou je", "vais péter un câble !" ], "vin011": [ "Dieu soit loué vous avez fait sauter ces puits.", - "De quoi tenir les Métal Heads à distance pour de bon.", + "De quoi tenir les Metal Heads à distance pour de bon.", "Beau travail, les gars ! Je vous revaudrai ça." ], "vin012": [ "Beau boulot, les gars ! Moins on laissera éclore d'oeufs de", "ces horribles bestioles, moins il y aura de", - "Métal Heads à tuer !" + "Metal Heads à tuer !" ], "vin013": [ "Jak... Kor...", @@ -7793,14 +7795,14 @@ ], "vin014": [ "Vous m'avez encore sauvé la vie les gars !", - "J'vais peut-être enfin avoir une augmentation. Ou des vacances.", + "Je vais peut-être enfin avoir une augmentation. Ou des vacances.", "J'en aurai bien besoin. Merci pour le coup de main !" ], "vin015": [ "Le mur protecteur est tombé ! Je répète : Le mur protecteur est tombé !", "Sabotage ! C'est un coup de Kor !", - "Je le savais, les Métal Heads auront ma peau !", - "OH NON ! Les Métal Heads sont devant ma porte !!", + "Je le savais, les Metal Heads auront ma peau !", + "OH NON ! Les Metal Heads sont devant ma porte !!", "Ils entrent de force !!", "Ils sont trop nombreux !! Jak !!! AHHHH !!!" ], @@ -7808,7 +7810,7 @@ "*L'eau se vide du SAS*" ], "wtrfill": [ - "*L'eau remplit le SAS*" + "*Le SAS se remplit d'eau*" ], "ys001": [ "Excellent les gars ! Revenez à la cachette,", @@ -7816,8 +7818,8 @@ ], "ys002": [ "Joli coup, mon grand !", - "Beau travail , Jak !", - "Je crois qu'on dormira mieux ce soir." + "Beau travail, Jak !", + "Je pense qu'on dormira mieux ce soir." ] }, "speakers": { @@ -7843,6 +7845,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", diff --git a/game/assets/jak2/subtitle/subtitle_lines_hu-HU.json b/game/assets/jak2/subtitle/subtitle_lines_hu-HU.json index 1eedfcf5e8..70084b2d6d 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_hu-HU.json +++ b/game/assets/jak2/subtitle/subtitle_lines_hu-HU.json @@ -2,207 +2,207 @@ "cutscenes": {}, "other": { "DSbop001": [ - "You sure seem angry, Jak." + "Biztosan dühösnek tűnsz, Jak." ], "DSbop002": [ - "Do you remember how to jump?" + "Emlékszel, hogyan kell ugrani?" ], "DSbop003": [ - "Jump onto that crate to get over the barricade." + "Ugorj fel arra a ládára, hogy átjuss a barikádon." ], "DSbop004": [ - "Ooh, that's a high ledge!", - "Try jumping once, then jump again while in the air", - "to reach that one." + "Ó, ez egy magas párkány!", + "Próbálj meg egyszer ugrani, majd ugorj újra a levegőben", + "hogy elérje azt." ], "DSbop005": [ - "Good job, see? You still got it!" + "Jó munka, látod? Még mindig megkaptad!" ], "DSbop006": [ - "I never found hide nor hair of Keira or Samos.", - "I don't know where they went." + "Soha nem találtam sem Keira, sem Samos bőrét és haját.", + "Nem tudom hova mentek." ], "DSbop007": [ - "I don't know where that crazy rift vehicle took us, but...", - "It's some kind of big city!" + "Nem tudom, hova vitt minket az az őrült hasadt jármű, de...", + "Ez valami nagyváros!" ], "DSbop008": [ - "It's a tough place, Jak. You DO remember", - "how to fight, right? Try breaking that crate with a kick." + "Ez egy kemény hely, Jak. TE emlékszel", + "hogyan kell harcolni, igaz? Próbáld meg egy rúgással feltörni azt a ládát." ], "DSbop009": [ - "Looking good, partner! Nice spin kick!", - "Works out some of that anger, eh?" + "Jól nézel ki, partner! Szép pörgős rúgás!", + "Kicsinálja ezt a haragot, mi?" ], "DSbop010": [ - "There are lots of Krimzon Guard crates lying around", - "for the taking. Break that crate!" + "Rengeteg Krimzon Guard láda hever", + "az elvitelért. Törd össze azt a ládát!" ], "DSbop011": [ - "Good job! That crate had a health pack inside.", - "Pick it up, you'll wanna keep healthy, Jak, or uh heh...", - "who'll do the fighting?" + "Szép munka! A ládában egy egészségügyi csomag volt.", + "Vedd fel, egészségben akarsz maradni, Jak, vagy hé...", + "ki fogja a harcot?" ], "DSbop016": [ - "If you jump then dive, you'll crash down to the ground", - "hard enough to break lots of things.", - "Breaking stuff's fun, right?" + "Ha ugrik, majd merül, lezuhan a földre", + "elég nehéz ahhoz, hogy sok mindent összetörjön.", + "Szórakoztató dolog a szakítás, igaz?" ], "DSbop017": [ - "Guards, Jak! Do your, uh... stuff." + "Őrök, Jak! Csináld a... dolgaidat." ], "agnt001": [ - "Hey hey, drive carefully!" + "Hé, vezess óvatosan!" ], "agnt002": [ - "Look out!" + "Vigyázz!" ], "agnt003": [ - "Watch it!" + "Nézd!" ], "agnt004": [ - "Whoa whoa whoa whoa!" + "Húúúúúúúúúúú!" ], "agnt005": [ - "Whoa!" + "Hú!" ], "agnt006": [ - "You're crazy!" + "Megőrültél!" ], "agnt007": [ - "Are you out of your mind!?" + "Elment az eszed!?" ], "agnt008": [ - "Watch out!" + "Vigyázz!" ], "agnt009": [ - "That one hurt!" + "Ez fájt!" ], "agnt010": [ - "Stay sharp, we've got a tough part of town coming up." + "Maradjon kitartó, nehéz városrész következik." ], "agnt011": [ - "Now we're in for it!" + "Most már benne vagyunk!" ], "agnt012": [ - "You're wasting citizens!" + "Elpazaroljátok a polgárokat!" ], "agnt013": [ - "Don't hit the civvies, man!" + "Ne üsd a civileket, haver!" ], "agnt014": [ - "Man, you are hitting people!" + "Ember, megütöd az embereket!" ], "agnt015": [ - "Look where you're going!" + "Nézd, hova mész!" ], "agnt016": [ - "Go man!" + "Hajrá ember!" ], "agnt017": [ - "Keep your head down!" + "Tartsd a fejed Lent!" ], "agnt018": [ - "They're shooting at us!" + "Ránk lőnek!" ], "agnt019": [ - "We are dead if you don't drive faster!" + "Halottak vagyunk, ha nem vezetsz gyorsabban!" ], "agnt020": [ - "Keep going!" + "Folytasd!" ], "agnt021": [ - "Do it, man, do it!" + "Csináld, ember, csináld!" ], "agnt022": [ - "Hurry up, man!" + "Siess, ember!" ], "agnt023": [ - "I ain't riding on the back, pick up a two-seater!" + "Nem hátul ülök, vegyen fel egy kétüléseset!" ], "agnt024": [ - "Get a bigger car!" + "Vegyél nagyobb autót!" ], "agnt025": [ - "Get a bigger vehicle." + "Vegyél egy nagyobb járművet." ], "agnt026": [ - "Get one with two seats, will ya?" + "Vegyél egyet két üléssel, jó?" ], "agnt027": [ - "Get another vehicle." + "Vegyél másik járművet." ], "agnt028": [ - "They're onto us." + "Rajtunk vannak." ], "agnt029": [ - "We're being followed." + "Követnek minket." ], "agnt030": [ - "We're taking a beating!" + "Verést kapunk!" ], "agnt031": [ - "We can't take much more of that!" + "Ennél többet nem bírunk ki!" ], "agnt032": [ - "Are you trying to die!?" + "Meg akarsz halni!?" ], "agnt033": [ - "Where did Torn find you?" + "Hol talált rád Torn?" ], "agnt034": [ - "You sure you're on our side?" + "Biztos, hogy a mi oldalunkon állsz?" ], "agnt035": [ - "Turn, TURN!" + "Fordulj, fordulj!" ], "agnt036": [ - "Good move." + "Jó húzás." ], "agnt037": [ - "Death to the Baron!" + "Halál a báróra!" ], "agnt038": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Köszönöm Mar, hogy itt vagy, a Krimzon Guards mindenhol ott van!" ], "agnt039": [ - "It's about time, let's get out of here!" + "Itt az ideje, menjünk innen!" ], "agnt040": [ - "Good, good, just in time. GO, GO, GO!" + "Jó, jó, éppen időben. MENJ MENJ MENJ!" ], "agnt041": [ - "Finally, we need to move!" + "Végre költöznünk kell!" ], "agnt042": [ - "Man, I was beginning to think you wouldn't show up." + "Ember, már kezdtem azt hinni, hogy nem fogsz megjelenni." ], "agnt043": [ - "Not a moment too soon, let's fly!" + "Egy pillanattal sem túl hamar, repüljünk!" ], "agnt044": [ - "Get me to my new safehouse, quickly!" + "Gyorsan vigyen az új biztonságos házamba!" ], "agnt045": [ - "Thanks, good luck!" + "Köszönöm, sok sikert!" ], "agnt046": [ - "Good driving, go save the rest of our guys." + "Jó vezetést, mentsd meg a többi emberünket." ], "agnt047": [ - "OK, I'm out of here!" + "Oké, elmentem innen!" ], "agnt048": [ - "See you at the next meeting." + "Találkozunk a következő találkozón." ], "agnt049": [ - "Thanks, you're a life saver." + "Köszönöm, életmentő vagy." ], "agnt050": [ - "This is where I get off." + "Itt szállok le." ], "agnt051": [ - "I'm glad you're on our side." + "Örülök, hogy a mi oldalunkon vagy." ], "agnt052": [ "Ugh!" @@ -217,172 +217,172 @@ "Ahhh!" ], "agnt056": [ - "Drive carefully!" + "Vezess óvatosan!" ], "agnt057": [ - "Look out!" + "Vigyázz!" ], "agnt058": [ - "Watch it!" + "Nézd!" ], "agnt059": [ - "WHOA!" + "HÚ!" ], "agnt060": [ - "You're crazy!" + "Megőrültél!" ], "agnt061": [ - "Are you out of your mind?!" + "Elment az eszed?!" ], "agnt062": [ - "Watch out!" + "Vigyázz!" ], "agnt063": [ - "That one hurt." + "Ez fájt." ], "agnt064": [ - "Stay sharp, we got a tough part of our town coming up." + "Maradj kitartóan, városunk nehéz része következik." ], "agnt065": [ - "Now we're in for it." + "Most már benne vagyunk." ], "agnt066": [ - "You're wasting citizens!" + "Elpazaroljátok a polgárokat!" ], "agnt067": [ - "Don't hit the civvies, man!" + "Ne üsd a civileket, haver!" ], "agnt068": [ - "Man, you're hitting the people!" + "Ember, megütöd az embereket!" ], "agnt069": [ - "Look where you're going!" + "Nézd, hova mész!" ], "agnt070": [ - "Go man, GO!" + "Hajrá ember, MENJ!" ], "agnt071": [ - "Keep your head down!" + "Tartsd a fejed Lent!" ], "agnt072": [ - "They're shooting at us!" + "Ránk lőnek!" ], "agnt073": [ - "We're dead if you don't drive faster!" + "Halottak vagyunk, ha nem vezetsz gyorsabban!" ], "agnt074": [ - "Keep going!" + "Folytasd!" ], "agnt075": [ - "Do it, man, do it!" + "Csináld, ember, csináld!" ], "agnt076": [ - "Hurry up, man!" + "Siess, ember!" ], "agnt077": [ - "I ain't riding on the back, pick up a two-seater!" + "Nem hátul ülök, vegyen fel egy kétüléseset!" ], "agnt078": [ - "Get a bigger vehicle." + "Vegyél egy nagyobb járművet." ], "agnt079": [ - "They're onto us!" + "Rajtunk vannak!" ], "agnt080": [ - "We're being followed!" + "Követnek minket!" ], "agnt081": [ - "We're taking a beating!" + "Verést kapunk!" ], "agnt082": [ - "We can't take much more of that." + "Ennél többet nem bírunk ki." ], "agnt083": [ - "You trying to die?" + "Megpróbálsz meghalni?" ], "agnt084": [ - "Where'd Torn find you?" + "Hol talált rád Torn?" ], "agnt085": [ - "You sure you're on our side?" + "Biztos, hogy a mi oldalunkon állsz?" ], "agnt086": [ - "Turn, TURN!" + "Fordulj, fordulj!" ], "agnt087": [ - "Good move!" + "Jó húzás!" ], "agnt088": [ - "Death to the Baron!" + "Halál a báróra!" ], "agnt089": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Köszönöm Mar, hogy itt vagy, a Krimzon Guards mindenhol ott van!" ], "agnt090": [ - "It's about time, let's get out of here!" + "Itt az ideje, menjünk innen!" ], "agnt091": [ - "Good, just in time, GO, GO, GO!" + "Jó, éppen időben, GO, GO, GO!" ], "agnt092": [ - "Finally, we need to move!" + "Végre költöznünk kell!" ], "agnt093": [ - "Man, I was beginning to think you wouldn't show up." + "Ember, már kezdtem azt hinni, hogy nem fogsz megjelenni." ], "agnt094": [ - "Not a moment too soon, let's fly!" + "Egy pillanattal sem túl hamar, repüljünk!" ], "agnt095": [ - "Get me to my new safehouse, quickly!" + "Gyorsan vigyen az új biztonságos házamba!" ], "agnt096": [ - "Thanks, good luck!" + "Köszönöm, sok sikert!" ], "agnt097": [ - "Good driving, go save the rest of our guys." + "Jó vezetést, mentsd meg a többi emberünket." ], "agnt098": [ - "OK, I'm out of here!" + "Oké, elmentem innen!" ], "agnt099": [ - "See ya at the next meeting!" + "Viszlát a következő találkozón!" ], "agnt100": [ - "Thanks, you're a life-saver." + "Köszönöm, életmentő vagy." ], "agnt101": [ - "This is where I get off." + "Itt szállok le." ], "agnt102": [ - "I'm glad you're on our side." + "Örülök, hogy a mi oldalunkon vagy." ], "agnt103": [ - "Look out!" + "Vigyázz!" ], "agnt104": [ - "Hey!" + "Hé!" ], "agnt105": [ - "Augh!" + "Jaj!" ], "agnt106": [ - "Come on man, you trying to kill me!?" + "Ugyan már ember, meg akarsz ölni!?" ], "agnt107": [ - "Take it easy!" + "Vedd lazán!" ], "agnt108": [ - "Ughh!" + "Ugh!" ], "agnt109": [ - "Ughh!" + "Ugh!" ], "agnt110": [ "Ahhh!" ], "agnt111": [ - "Oof!" + "Hoppá!" ], "agnt112": [ "Ah!" @@ -391,116 +391,116 @@ "Ahh!" ], "agnt114": [ - "Oof!" + "Hoppá!" ], "agnt115": [ - "Okay, buddy, move!" + "Oké, haver, mozdulj!" ], "agnt116": [ - "Look out!" + "Vigyázz!" ], "agnt117": [ - "Keep your eyes on the road!" + "Tartsa szemét az úton!" ], "agnt118": [ - "Watch it!" + "Nézd!" ], "agnt119": [ - "Thanks for the lift." + "Köszönöm a liftet." ], "agnt120": [ - "See ya at the next meeting." + "Viszlát a következő találkozón." ], "agnt121": [ - "Right, let's go!" + "Rendben, gyerünk!" ], "agnt122": [ - "Drive, man, drive!" + "Vezess, ember, vezess!" ], "agnt123": [ - "That was close!" + "Ez közel volt!" ], "agnt124": [ - "You sure you know what you're doing?" + "Biztos vagy benne, hogy tudod, mit csinálsz?" ], "agnt125": [ - "Ok, thanks, good luck." + "Ok, köszi, sok sikert." ], "agnt126": [ - "Great, let's go." + "Remek, menjünk." ], "agnt127": [ - "Drive, man, drive!" + "Vezess, ember, vezess!" ], "agnt128": [ - "That was close!" + "Ez közel volt!" ], "agnt129": [ - "You sure you know what you're doing?" + "Biztos vagy benne, hogy tudod, mit csinálsz?" ], "agnt130": [ - "OK, thanks, good luck!" + "OK, köszi, sok sikert!" ], "agnt131": [ - "What took you so long?" + "Mi tartott ilyen sokáig?" ], "agnt132": [ - "Move like you got a purpose, man!" + "Mozogj, mintha célod lenne, haver!" ], "agnt133": [ - "GO, GO, the KG are onto us!" + "GO, GO, a KG velünk van!" ], "agnt134": [ - "Stay sharp, we're almost there!" + "Maradjon éles, mindjárt ott vagyunk!" ], "agnt135": [ - "Good, you did well, I'll tell the Shadow we're safe!" + "Jó, jól tetted, megmondom az Árnyéknak, hogy biztonságban vagyunk!" ], "asha001": [ - "Payback's a bitch, and I'm it." + "A megtérülés kurva, és én az vagyok." ], "asha002": [ - "Watch your ass, I'm only woman on the outside." + "Vigyázz a seggedre, én csak kívülről vagyok nő." ], "asha003": [ - "Let me knock you down to size...", - "Not that you have any." + "Hadd vágjam le méretre...", + "Nem mintha neked lenne." ], "asha004": [ - "Small guns don't get me going." + "A kis fegyverek nem visznek fel." ], "asha005": [ - "That's a tiny gun..." + "Ez egy kis pisztoly..." ], "asha006": [ - "You don't know who you're dealing with." + "Nem tudod, kivel van dolgod." ], "asha007": [ - "I never said you could touch me there." + "Soha nem mondtam, hogy megérinthetsz ott." ], "asha008": [ - "Take that!" + "Vedd el!" ], "asha009": [ - "Here's some." + "Íme néhány." ], "asha010": [ - "Ready for another?" + "Készen állsz egy másikra?" ], "asha011": [ - "How's that feel?" + "Milyen érzés ez?" ], "asha012": [ - "Seems like it hurts." + "Úgy tűnik, hogy fáj." ], "asha013": [ - "Oh, that hurt." + "Ó, ez fájt." ], "asha014": [ "Ugh!" ], "asha015": [ - "Ough!" + "Jaj!" ], "asha016": [ "Ah!" @@ -509,115 +509,115 @@ "Agh!" ], "asha018": [ - "Hit me again and you'll lose something really valuable!" + "Üss meg még egyszer, és valami igazán értékes dolgot veszítesz!" ], "asha019": [ - "Not smart!" + "Nem okos!" ], "asha020": [ - "Listen, buddy, whose side are you on?" + "Figyelj, haver, kinek az oldalán állsz?" ], "asha021": [ - "Don't make me hurt you." + "Ne bántsalak." ], "asha022": [ - "Do that again and I'll put you down." + "Tedd meg még egyszer, és le foglak tenni." ], "asha023": [ - "Learn to control your gun, buddy." + "Tanuld meg irányítani a fegyveredet, haver." ], "asha024": [ - "Where'd you learn to fight?" + "Hol tanultál meg harcolni?" ], "asha025": [ - "Check your targets, mister." + "Ellenőrizze a célokat, uram." ], "asha026": [ - "Don't do that again." + "Ne csináld még egyszer." ], "asha027": [ - "Maybe I should be behind you." + "Talán mögötted kellene állnom." ], "asha028": [ - "I won't take that!" + "Azt nem fogadom el!" ], "asha029": [ - "Another one like that and you'll be singing soprano." + "Még egy ilyen, és szopránt énekelsz." ], "asha030": [ - "Have some back." + "Vedd vissza." ], "asha031": [ - "Don't do that again!" + "Ne csináld még egyszer!" ], "asha032": [ - "Nice shooting." + "Szép lövöldözés." ], "asha033": [ - "Good shooting, blue boy." + "Jó lövést, kék fiú." ], "asha034": [ - "Good work." + "Jó munka." ], "asha035": [ - "Take 'em all down!" + "Vedd le mindet!" ], "asha036": [ - "Let's get 'em!" + "Szerezzük meg őket!" ], "asha037": [ - "Here they come!" + "Itt jönnek!" ], "asha038": [ - "I need some help!" + "Segítségre van szükségem!" ], "asha039": [ - "Man, there are a lot of 'em!" + "Hú, nagyon sok van belőlük!" ], "asha040": [ - "More coming." + "Továbbiak jönnek." ], "asha041": [ - "I got him." + "Megvan." ], "asha042": [ - "More firepower!" + "Több tűzerőt!" ], "asha043": [ - "One more down!" + "Még egy lent!" ], "asha044": [ - "Help me out!" + "Segíts ki!" ], "asha045": [ - "They're out-flanking us!" + "Túlélnek minket!" ], "asha046": [ - "We're surrounded!" + "Körbe vagyunk véve!" ], "asha047": [ - "Shoot! Shoot!" + "Lő! Lő!" ], "asha048": [ - "It's not looking good." + "Nem néz ki jól." ], "asha049": [ - "Help me!" + "Segíts!" ], "asha050": [ - "Here's one for my father!" + "Itt van egy az apámnak!" ], "asha051": [ - "Damn Metal Heads..." + "Rohadt fémfejek..." ], "asha052": [ "Bullseye." ], "asha053": [ - "There's some more of those things!" + "Van még néhány ilyen dolog!" ], "asha054": [ - "Get 'em all!" + "Szerezd meg mindet!" ], "asha055": [ "Ugh..." @@ -626,417 +626,417 @@ "Hm-agh..." ], "asha057": [ - "Hah...agh..." + "Hah... agh..." ], "asht002": [ - "You were right, Jak. What my father's doing is wrong.", - "I need to help fix this. If you get to the Weapons Factory,", - "maybe we can stop him. I'll meet you there." + "Igazad volt, Jak. Amit apám csinál, az rossz.", + "Segítenem kell ennek kijavításában. Ha eljutsz a Fegyvergyárba,", + "talán megállíthatjuk. Ott találkozunk." ], "asht006": [ - "I think now's the time to act.", - "The Metal Heads are so focused on attacking the city,", - "they may have left their nest vulnerable.", - "Jak, you've got to get out to the Wasteland", - "and breach the Nest barrier any way you can.", - "Maybe if you get inside and take out the Metal Head leader", - "the army will collapse. It's a long shot,", - "but it might be our only chance." + "Azt hiszem, itt az ideje cselekedni.", + "A Metal Heads annyira a város megtámadására koncentrál,", + "sérülékenyen hagyhatták el fészküket.", + "Jak, ki kell jutnod a Pusztára", + "és törje át a Nest akadályt bármilyen módon.", + "Talán ha bejutsz és kiveszed a Metal Head vezetőt", + "a hadsereg össze fog omlani. Messziről van szó,", + "de lehet, hogy ez az egyetlen esélyünk." ], "bar001": [ - "Pay no attention to the groundless rumors about", - "low eco supplies. As your Baron, I assure you,", - "the city has an endless supply of eco stores.", - "Those who would say we are running out,", - "are only trying to frighten and subvert!", - "I have everything in control, I command you", - "to have no fear." + "Ne figyelj az alaptalan pletykákra", + "alacsony környezetbarát készletek. Mint bárója, biztosítom,", + "a városnak végtelen kínálata van ökoboltokból.", + "Akik azt mondanák, hogy kifogyunk,", + "csak megijeszteni és felforgatni próbálnak!", + "Mindent én irányítok, parancsolom neked", + "hogy ne legyen félelem." ], "bar004": [ - "Go!" + "Megy!" ], "bb01fail": [ - "I think you should practice more." + "Szerintem gyakorolj többet." ], "bb01int": [ - "Jak, this is Torn. The Underground needs good drivers", - "for our vehicle missions. Prove your skills on the", - "Ring Challenge and maybe we'll let you in on the action." + "Jak, itt Torn. Az Undergroundnak jó sofőrökre van szüksége", + "jármű küldetéseinkhez. Bizonyítsa készségeit a", + "Rögzítse a kihívást, és talán beengedjük az akcióba." ], "bb01win": [ - "Not bad, I think we can use ya.", - "Here's a little reward for your effort." + "Nem rossz, azt hiszem, hasznát vehetjük.", + "Íme egy kis jutalom az erőfeszítéseidért." ], "bb02fail": [ - "You're still a little timid. Try again." + "Még mindig egy kicsit félénk vagy. Próbáld újra." ], "bb02int": [ - "We'd like to see you prove your driving skills. Take on", - "another Ring Challenge, let's see what you've got." + "Szeretnénk látni, ha bizonyítja vezetési képességeit. Vállal", + "egy újabb Ring Challenge, lássuk, mi van." ], "bb02win": [ - "Not bad. You could be my getaway driver any time." + "Nem rossz. Bármikor lehetsz a menekülő sofőröm." ], "bb03fail": [ - "I knew this one would prove too much for ya. Keep practicing." + "Tudtam, hogy ez túl soknak bizonyulna neked. Gyakorolj tovább." ], "bb03int": [ - "The next Ring Challenge will separate the men from the boys.", - "Let's see if you can handle it." + "A következő Ring Challenge elválasztja a férfiakat a fiúktól.", + "Lássuk, bírod-e." ], "bb03win": [ - "Very nice driving. I'm starting to think you could really", - "help us, Jak." + "Nagyon szép vezetés. Kezdem azt hinni, hogy tényleg képes vagy rá", + "segíts nekünk, Jak." ], "bb04fail": [ - "Too bad, I kinda hoped you could do this. Keep trying." + "Kár, de reméltem, hogy meg tudod csinálni. Próbálkozz." ], "bb04int": [ - "Torn here. I don't even know why I'm lettin' you try this", - "Ring Challenge, never beat it myself. I guess I'm morbidly", - "curious. Beat this one and you'll be the best driver", - "the Underground's ever had." + "Itt szakadt. Nem is tudom, miért hagyom, hogy ezt kipróbáld", + "Ring Challenge, soha nem győztem le. Azt hiszem, beteg vagyok", + "kíváncsi. Győzd le ezt, és te leszel a legjobb sofőr", + "az Undergroundnak valaha volt." ], "bb04win": [ - "Very nice, Jak! You're the best driver we've ever had." + "Nagyon szép Jak! Te vagy a valaha volt legjobb sofőrünk." ], "bb05fail": [ - "You didn't get all the Bomb Bots, Jak!" + "Nem kaptad meg az összes bombabotot, Jak!" ], "bb05int": [ - "Jak, reports say more bomb bots are roaming the city.", - "They're a dangerous menace, and I need you to locate", - "and destroy each one before they hurt our interests." + "Jak, a jelentések szerint több bombarobot kóborol a városban.", + "Veszélyes fenyegetést jelentenek, és meg kell találnod a helyét", + "és mindegyiket megsemmisítjük, mielőtt érdekeinket sértené." ], "bb05win": [ - "Good work! That oughta put a dent in the Baron's war budget." + "Jó munka! Ez tönkretenné a báró háborús költségvetését." ], "bb06int": [ - "Jak, we need you to take out another group of Bomb Bots.", - "These mobile weapons keep showing up in the city, we gotta take them out as soon as possible." + "Jak, szükségünk van arra, hogy vegyél ki egy másik bombabotot.", + "Ezek a mobil fegyverek folyamatosan felbukkannak a városban, mihamarabb ki kell szednünk őket." ], "bb06win": [ - "Another pile of bomb bot scrap metal for the KG", - "trash compactors. Mission accomplished, the Underground's", - "most grateful for your service." + "Újabb halom bombabot fémhulladék a KG-nek", + "szemetes tömörítők. A küldetés teljesítve, a földalattié", + "nagyon hálás szolgálatáért." ], "bb07fail": [ - "You lost an agent! NOT good at all, Jak! Mission failed!" + "Elvesztettél egy ügynököt! Egyáltalán nem jó, Jak! Küldetés sikertelen!" ], "bb07int": [ - "Torn here, I need you to go out and move more of our Agents to new locations in the city.", - "KG spies are watching our every move, so look out for trouble. Good luck." + "Itt szakadt, menj ki és költöztess több ügynökünket új helyekre a városban.", + "KG kémek figyelik minden lépésünket, szóval vigyázz a bajra. Sok szerencsét." ], "bb07win": [ - "Nice shuttle work! You're keepin' people alive out there." + "Szép transzfer munka! Életben tartod az embereket odakint." ], "bb08fail": [ - "One of our best agents was arrested. The Shadow will NOT be", - "pleased! You failed." + "Az egyik legjobb ügynökünket letartóztatták. Az Árnyék NEM lesz", + "elégedett! Elbuktál." ], "bb08int": [ - "Jak, some of our Agents have been compromised again.", - "Find each one and take them to special hideouts in the city.", - "The guard patrols are on high alert, so this is going to be a tough one. Keep your head down!" + "Jak, néhány ügynökünk ismét kompromittálódott.", + "Keresse meg mindegyiket, és vigye el őket a város különleges búvóhelyeire.", + "Az őrs járőrök fokozott készültségben vannak, szóval ez nehéz lesz. Tartsd a fejed Lent!" ], "bb08win": [ - "That was good driving, Jak.", - "The Underground can breathe a little easier now." + "Jó volt vezetni, Jak.", + "A Underground most egy kicsit könnyebben lélegezhet." ], "bb09fail": [ - "You took too long, Jak. We're calling off the meeting." + "Túl sokáig tartottál, Jak. Lemondjuk az ülést." ], "bb09int": [ - "Jak, we're having an Underground meeting", - "with some special Agents. Pick up each Agent", - "and bring them to the meeting place quickly." + "Jak, földalatti találkozót tartunk", + "néhány különleges ügynökkel. Vegyen fel minden ügynököt", + "és gyorsan vigye el őket a találkozóhelyre." ], "bb09win": [ - "Fast work, Jak! Some day, we might even", - "invite you to these meetings." + "Gyors munka, Jak! Egy nap akár mi is lehetünk", + "meghívja Önt ezekre a találkozókra." ], "bb10fail": [ - "Not fast enough, buddy! You've gotta be quick", - "with those deliveries." + "Nem elég gyors, haver! Gyorsnak kell lenned", + "azokkal a szállításokkal." ], "bb10int": [ - "Jak, you've got to prove your driving skills once again.", - "One of our Agents dropped off a package,", - "I need it delivered to the Hideout. Immediately." + "Jak, még egyszer bizonyítanod kell a vezetési képességeidet.", + "Az egyik ügynökünk feladott egy csomagot,", + "El kell juttatnom a rejtekhelyre. Azonnal." ], "bb10win": [ - "Good work, Jak!" + "Jó munkát Jak!" ], "bb11fail": [ - "The package contents didn't make it. Go faster next time!" + "A csomag tartalma nem sikerült. Legközelebb menj gyorsabban!" ], "bb11int": [ - "Jak, I need you to take a package of eco", - "over to the power station. Get there quickly or the contents", - "will be useless to Vin." + "Jak, vigyél egy csomag eco-t", + "át az erőműhöz. Gyorsan odaér vagy a tartalom", + "használhatatlan lesz Vin számára." ], "bb11win": [ - "Nice driving, Jak." + "Szép vezetés, Jak." ], "bb12fail": [ - "You didn't push it hard enough, newbie. Try again." + "Nem erőltetted meg eléggé, újonc. Próbáld újra." ], "bb12int": [ - "This is Torn, we've got another package delivery", - "for the Stadium. Make it quick!" + "Ez szakadt, újabb csomagküldésünk van", + "a Stadion számára. Készítsd el gyorsan!" ], "bb12win": [ - "Not bad driving. You really oughta race", - "in the city championship." + "Nem rossz vezetés. Tényleg versenyezni kellene", + "a városi bajnokságban." ], "bb13fail": [ - "You gotta work on your speed, man." + "Dolgoznod kell a sebességeden, haver." ], "bb13int": [ - "I need you to take a valuable item over to Onin.", - "You won't be able to drive the whole way,", - "but you still have to move fast. Good luck." + "Át kell vinned egy értékes tárgyat Oninnak.", + "Nem fogod tudni vezetni az egész utat,", + "de akkor is gyorsan kell haladnod. Sok szerencsét." ], "bb13win": [ - "That's the way to get it done, good work." + "Így kell elkészíteni, jó munka." ], "bb14fail": [ - "Too late, Jak! The agent is calling it off.", - "You need to reach it faster!" + "Túl késő, Jak! Az ügynök felmondja.", + "Gyorsabban kell elérni!" ], "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." + "Jak, van egy ügynökünk, aki csomagszállításra vár.", + "Őrkémek figyelik ezt a fickót,", + "szóval ha nem érsz el gyorsan, letartóztatják.", + "Vidd el neki a csomagot, amíg nem késő." ], "bb14win": [ - "Nice work, the delivery was a success. I like your style, Jak." + "Szép munka, a szállítás sikeres volt. Tetszik a stílusod, Jak." ], "bb15fail": [ - "You screwed up, Jak! You didn't get it to the safe zone", - "as we asked." + "Elbasztad, Jak! Nem juttattad el a biztonságos zónába", + "ahogy kérdeztük." ], "bb15farr": [ - "Get off the bike and get clear, Jak!!" + "Szállj le a bicikliről és tisztulj meg, Jak!!" ], "bb15int": [ - "Jak, we found a bomb in the Slums", - "that was meant for the Shadow.", - "I need you to pick it up and take it out to the Farm Area", - "where we've marked a safe zone where it can explode.", - "Go quickly." + "Jak, találtunk egy bombát a nyomornegyedben", + "amit az Árnyéknak szántak.", + "Vedd fel és vigye ki a Farm területére", + "ahol kijelöltünk egy biztonságos zónát, ahol felrobbanhat.", + "Menj gyorsan." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "Csodálatos munka volt, Jak! Köszönöm, komolyan gondolom." ], "bb16fail": [ - "You didn't take out enough guards!", - "We need to hit them harder!" + "Nem vettél ki elég őrt!", + "Erősebben kell megütnünk őket!" ], "bb16int": [ - "Jak, this is Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "inflict real damage on our enemies." + "Jak, itt Torn.", + "Erol elit személyi gárdája áthalad a városon.", + "Meg kell ütnünk és erősen meg kell ütnünk őket! Vegyen ki eleget", + "őrök, mielőtt le kell mondanom a küldetést.", + "Ha túl kevés őrt kap, akkor elszalasztunk egy lehetőséget", + "valódi kárt okozni ellenségeinknek." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Remek ütés, Jak! Ez üzenetet küld Erolnak." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Úgy tűnik, túl nehéz használni. Egyelőre átmegyünk." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "Felmérjük az új JET-Boardot a föld alatti használatra", + "küldetések. Azt hallottuk, hogy nagyon jóban vagy ezzel a dologgal,", + "mutasd meg, mire képes. Szerezz elég pontot a", + "bíró-bot, és megfontoljuk, hogy hozzáadjuk az arzenálunkhoz." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", - "Good work." + "Azta! Nagyon fel lehet tépni a betont azzal a babával!", + "Jó munka." ], "bb18fail": [ - "I'm still not sure the JET-Board's that useful." + "Még mindig nem vagyok biztos abban, hogy a JET-Board ennyire hasznos." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Itt van egy másik nagyszerű hely a teljesítmény értékeléséhez", + "a JET-Board. Próbálj meg itt is elég pontot szerezni." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", - "catching us on those babies." + "Kedves lépések, Jak. A KG-nek nehéz dolga lenne", + "elkap minket azokon a babákon." ], "bb19fail": [ - "You didn't get them all. Try again." + "Nem kaptad meg mindet. Próbáld újra." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "Értékeljük az irányító jelzőfények használatát a küldetésekben.", + "Szerezze be az összes jeladót, amilyen gyorsan csak tudja.", + "Gyorsan lépni kell ezen." ], "bb19win": [ - "Excellent work. You're a great asset", - "to the Underground, Jak." + "Kiváló munka. Nagy érték vagy", + "a földalattira, Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "Túl lassú, Jak! Amikor az Árnyék kér, teljesítened kell." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "Az Árnyéknak szüksége van arra, hogy gyűjtsön egy kis zöld ökot az övének", + "kísérletek. Szerezze be az egészet, mielőtt az öko eltűnik." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "Nem rossz. Mondok egy jó szót az Árnyékkal." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Próbáld tovább. Itt kell fejlesztened képességeidet." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "Néha szeretjük \"kölcsönkérni\" Krimzon gárdát", + "felszerelés. Vidd ki azt a KG járőrbiciklit egy körre", + "és minden célt eltalál a határidőn belül." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Szép lövöldözés. A gárda utálna téged, mint újoncot.", + "Itt van egy kis jutalom, hogy inkább velünk maradjon." ], "bb22fail": [ - "You didn't get the booths fast enough, Jak." + "Nem kaptad meg elég gyorsan a fülkéket, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "A báró propagandájának egy része nyugtalanító", + "a civilek. Vegye ki azokat a fülkéket, és megállítjuk a Praxist", + "hazugságai terjesztésétől." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Jó munka! Ez egy kicsit elhallgatná a bárót." ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Elvesztél, Jak. Ha nyerni akarsz,", + "jobb, ha dolgozol a gyorsasági képességeiden." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "Az Underground legjobb versenyzője kihívni akar téged", + "egy versenyre a Ring Course One-on.", + "Gondolod, hogy bírsz egy kis versenyt?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Gratulálunk! Legyőzted a kihívót!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "A fiunk elvitt téged ezen. Legközelebb több szerencsét." ], "bb24int": [ - "Up for a little race, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "Egy kis versenyre készülsz, Jak?", + "Legjobb pilótánk veled akar szembenézni a kettes körpályán.", + "Ez a baba egy kicsit nehezebb.", + "Lássuk, meg tudsz-e felelni a kihívásnak." ], "bb24win": [ - "You beat him, Jak. Nice driving." + "Megverted, Jak. Szép vezetés." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", - "You lost!" + "Úgy tűnik, nem te vagy a legjobb versenyző ebben a városban, Jak.", + "Vesztettél!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", - "This one's gonna get hairy." + "Az Underground versenybajnoka ismét téged akar,", + "ezúttal a nehéz hármas körpályán.", + "Ez szőrös lesz." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Gratulálunk, legyőzte legjobb versenyzőnket. Szép munka." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "Ez Torn, egy jó Underground ügynök ismeri a várost", + "kívül-belül, látás alapján. Lássuk, hogyan állsz össze,", + "eljutni erre a helyre a megadott határidőn belül", + "és jutalmat kapsz. MEGY!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Itt egy újabb lehetőség, hogy bebizonyítsa tudását a városról." ], "bb28int": [ - "Find this place before time runs out." + "Keresse meg ezt a helyet, mielőtt lejár az idő." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Itt egy nehéz, üsd el az órát." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Felismeri ezt a helyet? Találja meg gyorsan, és a jutalom a tiéd." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Íme egy kevéssé ismert hely, találd meg gyorsan, és le fogok nyűgözni." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "Szeretném látni, hogy megtalálja ezt a helyet. Nyűgözz le, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Gyere ide gyorsan és lepj meg." ], "bb34int": [ - "Here's another destination, get here quickly." + "Íme egy másik úti cél, gyertek ide gyorsan." ], "bb35int": [ - "Find this spot, fast!" + "Találd meg ezt a helyet, gyorsan!" ], "bb36int": [ - "Reach this area and be rewarded." + "Érje el ezt a területet, és jutalmat kap." ], "bb37int": [ - "Think you can find this place?" + "Gondolja, hogy megtalálja ezt a helyet?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "Nem olyan jó, Jak! Talán kalibrálni kellene a táblát." ], "bb38int": [ - "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", - "in the time limit allotted." + "Még mindig értékeljük a JET-Boardot.", + "Lássuk, össze tudod-e gyűjteni az összes energialöketet", + "a megadott határidőn belül." ], "bb38win": [ - "Nice moves, fly-boy." + "Szép mozdulatok, légyfiú." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "Olyan közel, de ebben az üzletben ez halottnak számít." ], "bb39int": [ - "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Vigye végig a JET-Boardot egy körpályán.", + "Üsd el az időt, és tetováltatni fogom az arcodat, mint az enyémet." ], "bb39win": [ - "Good speed through the course, Jak!", - "That one looked too easy." + "Jó sebesség a pályán, Jak!", + "Ez túl könnyűnek tűnt." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "You were too slow on that course." + "Úgy tűnik, találkoztál a pároddal, Jak!", + "Túl lassú voltál azon a pályán." ], "bb40int": [ - "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "let's see if you can complete it in time." + "Szeretném látni, hogy átveszi a JET-Boardot egy másikon", + "Ring tanfolyam. Ezt egy kicsit érdekesebbé tesszük,", + "lássuk, sikerül-e időben befejezni." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Azta! Még nekem is bajom lenne ezzel, jó munkát!" ], "bf001": [ - "My shield is impervious to your attacks!" + "A pajzsom áthatolhatatlan a támadásaiddal szemben!" ], "bf002": [ - "You cannot hurt me!" + "Nem bánthatsz engem!" ], "bf003": [ - "Fool! Nothing can touch me!" + "Bolond! Semmi sem érhet hozzám!" ], "bf004": [ - "You're powerless!" + "Te tehetetlen vagy!" ], "bf005": [ - "There is nothing you can do!" + "Nincs mit tenni!" ], "bf006": [ "HAHAHAHAHAHA!" @@ -1045,163 +1045,163 @@ "HAHAHAHA!" ], "bf008": [ - "Come get me!" + "Gyere értem!" ], "bf009": [ - "Come closer!" + "Gyere közelebb!" ], "bf010": [ - "Try me now!" + "Próbálja ki most!" ], "bf011": [ - "Let's make this personal!" + "Tegyük ezt személyessé!" ], "bf012": [ - "Surprise!" + "Meglepetés!" ], "bf013": [ - "Don't fall!" + "Ne ess el!" ], "bf014": [ - "I will crush you!" + "összetörlek!" ], "bf015": [ - "Take this!" + "Fogd!" ], "bf016": [ - "Here I come!" + "Itt jövök!" ], "bf017": [ - "Why won't you die?!" + "Miért nem halsz meg?!" ], "bf018": [ - "Your Dark Eco powers surprise me!" + "A Dark Eco képességeid meglepnek!" ], "bf019": [ - "Your arrogance will be your downfall!" + "Az arroganciád a bukásod lesz!" ], "bf020": [ - "The Stone is mine!" + "A Kő az enyém!" ], "bf021": [ - "Give me the Stone!" + "Add ide a követ!" ], "bf022": [ - "Release it!" + "Engedd el!" ], "bf023": [ - "I want the Stone!" + "A Követ akarom!" ], "bf024": [ - "Argh, let go!" + "Argh, engedj el!" ], "bf025": [ - "It's mine!" + "Ez az enyém!" ], "bf026": [ - "Try these on for size!" + "Próbáld ki ezeket a méretért!" ], "bf027": [ - "Here's a little present!" + "Íme egy kis ajándék!" ], "bf028": [ - "Want some more?" + "Kicsivel többet akar?" ], "bf029": [ - "I grow tired of this, now you die!" + "Elegem van ebből, most meghalsz!" ], "bf030": [ - "You cannot run away from these!" + "Ezek elől nem menekülhetsz!" ], "bf031": [ - "Allow me to share the pain!" + "Engedje meg, hogy megosszam a fájdalmat!" ], "bf032": [ - "Now you're mine!" + "Most már az enyém vagy!" ], "bf033": [ - "Here's some hell!" + "Itt egy kis pokol!" ], "bf034": [ - "Say good night!" + "Mondj jó éjszakát!" ], "bf035": [ - "Enjoy your next life!" + "Élvezze a következő életet!" ], "bf036": [ - "It's over!" + "Vége!" ], "bf037": [ - "Burn in hell!" + "Égj a pokolban!" ], "bf038": [ - "The Stone is mine! Let me show you what it can do!" + "A Kő az enyém! Hadd mutassam meg, mire képes!" ], "bf039": [ - "Now you see the Stone's power in capable hands!" + "Most láthatja a Kő erejét alkalmas kezekben!" ], "bf040": [ - "How's that for power?" + "Hogy szól ez a hatalomhoz?" ], "bf041": [ - "Now you see!" + "Most látod!" ], "bf042": [ - "I am invincible now!" + "Most már legyőzhetetlen vagyok!" ], "bf043": [ - "You cannot run forever!" + "Nem futhatsz örökké!" ], "bf044": [ - "I have all the power I need!" + "Minden erőm megvan, amire szükségem van!" ], "bf045": [ - "You can't avoid this!" + "Ezt nem tudod elkerülni!" ], "bf046": [ - "Here's a little something special!" + "Íme egy kis különlegesség!" ], "bf047": [ - "Come to me!" + "Gyere hozzám!" ], "bf048": [ - "Come here!" + "Gyere ide!" ], "bf049": [ - "Let's get closer!" + "Menjünk közelebb!" ], "bf050": [ - "Nothing can save you now!" + "Most már semmi sem mentheti meg!" ], "bf051": [ - "You're history!" + "Te történelem vagy!" ], "bf052": [ - "I am the city's savior, not you!" + "Én vagyok a város megmentője, nem te!" ], "bf053": [ - "Die!" + "Meghal!" ], "bf054": [ - "It's over!" + "Vége!" ], "bf055": [ - "I've got you!" + "Megvagy!" ], "bf056": [ - "Now you die!" + "Most meghalsz!" ], "bf057": [ - "NOOOOOO!" + "NEEEE!" ], "bf058": [ - "No!" + "Nem!" ], "bf059": [ - "NO!" + "NEM!" ], "bf060": [ - "Uorghh!" + "Urghh!" ], "bf061": [ "Ahh!" @@ -1210,28 +1210,28 @@ "Ungh!" ], "bf063": [ - "Raghh!" + "Raghhh!" ], "bf064": [ - "We finish this now!" + "Ezzel most fejezzük be!" ], "bf065": [ - "Eat this!" + "Edd meg ezt!" ], "bf066": [ - "Stop!" + "Állj meg!" ], "bf067": [ - "You idiot, you're no match for me!" + "Te idióta, nem illik hozzám!" ], "bf068": [ - "Why don't you die!?" + "Miért nem halsz meg!?" ], "bf069": [ - "Give up and I'll make it painless!" + "Add fel, és fájdalommentessé teszem!" ], "bf070": [ - "You cannot win!" + "Nem nyerhetsz!" ], "bf071": [ "Aha!" @@ -1246,73 +1246,73 @@ "Urgh!" ], "bf075": [ - "You can do better than that!" + "Tudsz ennél jobbat is csinálni!" ], "bf076": [ - "You're mine!" + "Az enyém vagy!" ], "bf077": [ - "Why won't you die!?" + "Miért nem halsz meg!?" ], "bf078": [ - "I have the ultimate power!" + "Nálam van a végső hatalom!" ], "bf079": [ - "Die!" + "Meghal!" ], "bf080": [ - "Is that your best shot?" + "Ez a legjobb ütésed?" ], "bf081": [ - "Now you die!" + "Most meghalsz!" ], "bf082": [ - "Get off my tower!" + "Szállj le a tornyomról!" ], "bf083": [ - "We'll see about that!" + "Majd meglátjuk!" ], "bf084": [ - "You really think you have a chance?" + "Tényleg azt hiszed, hogy van esélyed?" ], "bf085": [ - "Fear me!" + "Félj tőlem!" ], "bf086": [ - "You're nothing!" + "Semmi vagy!" ], "bf087": [ - "My shield is now recharged!" + "A pajzsom most feltöltődött!" ], "bf088": [ - "Try these on for size!" + "Próbáld ki ezeket a méretért!" ], "bf089": [ - "I should have killed you long ago!" + "Már rég meg kellett volna ölnöm!" ], "bf090": [ - "Never a dull moment, eh?" + "Soha egy unalmas pillanat, ugye?" ], "bf091": [ - "Stand still!" + "Állj meg!" ], "bf092": [ - "Go back to wherever you came from!" + "Menj vissza oda, ahonnan jöttél!" ], "bf093": [ - "You're both going to die by my hand!" + "Mindketten az én kezemtől fogtok meghalni!" ], "bf094": [ - "Come closer!" + "Gyere közelebb!" ], "bf095": [ - "To the end!" + "A végéig!" ], "bf096": [ - "You cannot win!" + "Nem nyerhetsz!" ], "bf097": [ - "Come here!" + "Gyere ide!" ], "bf098": [ "ARGHHH!" @@ -1324,184 +1324,184 @@ "Urgh!" ], "bf101": [ - "Oof!" + "Hoppá!" ], "bf102": [ "Noooo!" ], "bf103": [ - "No!" + "Nem!" ], "bf104": [ - "Not again!" + "Újra ne!" ], "bf105": [ - "It can't be!" + "Nem lehet!" ], "bf106": [ - "Not this time!" + "Ezúttal nem!" ], "bf107": [ - "Stop!" + "Állj meg!" ], "bf108": [ - "Damn!" + "Átkozott!" ], "bf109": [ - "Why, you little...!" + "Miért, te kicsi...!" ], "bf110": [ - "Now you've made me angry!" + "Most feldühítettél!" ], "bf111": [ - "Impressive, but let's try that again!" + "Lenyűgöző, de próbáljuk meg újra!" ], "bf112": [ - "The stronger man always wins!" + "Mindig az erősebb nyer!" ], "bf113": [ - "Your loss was inevitable, Jak!" + "A veszteséged elkerülhetetlen volt, Jak!" ], "bf114": [ - "You could never be a baron!" + "Soha nem lehetsz báró!" ], "bf115": [ - "I knew you were weak!" + "Tudtam, hogy gyenge vagy!" ], "bf116": [ - "Hm, I expected more from you!" + "Hm, többet vártam tőled!" ], "bf117": [ - "Losing is for the weak!" + "A veszteség a gyengéké!" ], "bf118": [ - "How pathetic!" + "Milyen szánalmas!" ], "bf119": [ - "That was too easy!" + "Ez túl könnyű volt!" ], "bf120": [ - "Sorry, old boy, it's just war!" + "Bocs, öregfiú, ez csak háború!" ], "bf121": [ - "Too bad you don't have what it takes!" + "Kár, hogy nincs benned, ami kell!" ], "bf122": [ - "The better man won!" + "A jobbik nyert!" ], "bf123": [ - "We're similar, Jak... oh, except you're dead!" + "Hasonlóak vagyunk, Jak... ó, csak halott vagy!" ], "bf124": [ - "Feel the fury of the Precursor Stone!" + "Érezd az Elődkő dühét!" ], "bf125": [ - "With the Stone's power, I am invincible!" + "A Kő erejével legyőzhetetlen vagyok!" ], "bf126": [ - "All will fear me now!" + "Most mindenki félni fog tőlem!" ], "bf127": [ - "Time to die!" + "Itt az idő meghalni!" ], "bf128": [ - "My little friends will take care of you!" + "A kis barátaim vigyázni fognak rád!" ], "bf129": [ - "You can't run forever, Jak!" + "Nem futhatsz örökké, Jak!" ], "bf130": [ - "Now I've got you!" + "Most megkaptalak!" ], "bf131": [ - "Surprise!" + "Meglepetés!" ], "bf132": [ - "I have better things to do than waste my time with you!" + "Van jobb dolgom is, mint veled tölteni az időmet!" ], "bf133": [ - "You are nothing!" + "Semmi vagy!" ], "bf134": [ - "Annoying insect, die!" + "Bosszantó rovar, halj meg!" ], "bf135": [ - "Not bad, but let me show you what real power is!" + "Nem rossz, de hadd mutassam meg, mi az igazi hatalom!" ], "bf136": [ - "Feel this!" + "Érezd ezt!" ], "bru001": [ - "Great smelly breath of a goosesnake!", - "Heroes to Lurker people you be!", - "By now just see much happy thanks! Ruhuhuh.", - "You honorary members of Lurker tribe now.", - "We no forget - if ever you need us, we help you!" + "A libakígyó nagyszerű büdös lehelete!", + "Legyetek hősök a Lurker embereknek!", + "Mostanra már csak nagyon boldog köszönöm! Ruhuhuh.", + "Ti most a Lurker törzs tiszteletbeli tagjai.", + "Nem felejtünk el – ha szükséged van ránk, mi segítünk!" ], "bru002": [ - "I hears you two look for a piece of Mar's shiny Seal.", - "Brutter loves shiny bright things too.", - "I have piece I thinks. It in Water Slums,", - "hanging over me hut and you free to have.", - "Gift from Brutter!" + "Hallom, hogy kerestek egy darabot Mar fényes pecsétjéből.", + "Brutter is szereti a fényes, fényes dolgokat.", + "Van egy darab szerintem. Vízi nyomornegyedekben,", + "felettem lóg a kunyhó, és szabadon rendelkezhetsz.", + "Ajándék Bruttertől!" ], "bru004": [ - "You two good! No better warrior in all Lurker tribes!", - "You keep Seal. You love shiny things just like Brutter." + "Jók ketten! Nincs jobb harcos minden Lurker törzsben!", + "Te megtartod Seal. Szereted a fényes dolgokat, akárcsak Brutter." ], "cit001": [ - "Hey!" + "Hé!" ], "cit004": [ - "Watch it!" + "Nézd!" ], "cit008": [ - "No!" + "Nem!" ], "cit010": [ "Argh!" ], "cit016": [ - "Stay away!" + "Maradj távol!" ], "cit033": [ - "Hey!" + "Hé!" ], "cit034": [ - "Look out!" + "Vigyázz!" ], "cit035": [ - "Watch out!" + "Vigyázz!" ], "cit046": [ - "Go away!" + "Menj innen!" ], "cit047": [ - "Leave me alone!" + "Hagyjon békén!" ], "cit051": [ - "Are you crazy?" + "Őrült vagy?" ], "cit053": [ - "Are you insane?!" + "Megőrültél?!" ], "cit055": [ - "Hey, that's my vehicle!" + "Hé, ez az én járművem!" ], "cit056": [ - "Gimme back my vehicle!" + "Add vissza a járműmet!" ], "cit057": [ - "What are you doing?" + "Mit csinálsz?" ], "cit058": [ - "Please, don't take it!" + "Kérlek, ne vedd el!" ], "cit097": [ "Ugh!" ], "cit097a": [ - "Aahh!" + "Ahhh!" ], "cit097b": [ "Aaghhh!" @@ -1528,1682 +1528,1682 @@ "Ahh!" ], "cit099": [ - "No!" + "Nem!" ], "cit099a": [ "Noooo!" ], "cit099b": [ - "No!" + "Nem!" ], "cit099c": [ - "No!" + "Nem!" ], "cit099d": [ "Nooo!" ], "cit100": [ - "Please!" + "Kérem!" ], "cit100a": [ - "Please!" + "Kérem!" ], "cit100b": [ - "Please!" + "Kérem!" ], "cit100c": [ - "Please!" + "Kérem!" ], "cit101": [ - "Stop!" + "Állj meg!" ], "cit101a": [ - "Stop!" + "Állj meg!" ], "cit101b": [ - "Stop!" + "Állj meg!" ], "cit101c": [ - "Stop!" + "Állj meg!" ], "cit103": [ - "Sound the alarm!" + "Fújj riadót!" ], "cit103a": [ - "Sound the alarm!" + "Fújj riadót!" ], "cit104": [ - "Guards!" + "Gárdisták!" ], "cit104a": [ - "Guards! Help us!" + "Gárdisták! Segíts nekünk!" ], "cit105": [ - "Help us!" + "Segíts nekünk!" ], "cit120": [ - "Keep away from me!" + "Tartsd távol tőlem!" ], "cit120a": [ - "Keep away from me!" + "Tartsd távol tőlem!" ], "cit137a": [ - "Wait!" + "Várjon!" ], "cityv001": [ - "Leaving city safe zone." + "A város biztonságos zónájának elhagyása." ], "cityv002": [ - "Leaving city at your own risk." + "Saját felelősségre hagyja el a várost." ], "cityv003": [ - "Exiting city." + "Kilépés a városból." ], "cityv004": [ - "Opening outer shield." + "Nyitható külső pajzs." ], "cityv005": [ - "Decontamination complete." + "A fertőtlenítés befejeződött." ], "cityv006": [ - "Entering Haven City." + "Belépés Haven Citybe." ], "cityv007": [ - "Re-entering city." + "Újra belépés a városba." ], "cityv008": [ - "Welcome back." + "Üdv újra." ], "cityv009": [ - "It's good to see you still alive." + "Jó látni, hogy még élsz." ], "cityv010": [ - "Security clearance granted." + "Biztonsági engedély megadva." ], "cityv011": [ - "Entrance denied. You do not have proper clearance." + "Belépés megtagadva. Nem rendelkezik megfelelő engedéllyel." ], "cityv012": [ - "I am unable to comply." + "képtelen vagyok megfelelni." ], "cityv013": [ - "Please come back with proper clearance." + "Kérjük, jöjjön vissza megfelelő engedéllyel." ], "cityv014": [ - "Access denied." + "Hozzáférés megtagadva." ], "cityv015": [ - "You need Red Clearance for this gate." + "Ehhez a kapuhoz piros engedély szükséges." ], "cityv016": [ - "You need Green Clearance for this gate." + "Ehhez a kapuhoz zöld engedély szükséges." ], "cityv017": [ - "You need Yellow Clearance for this gate." + "Ehhez a kapuhoz sárga engedély szükséges." ], "cityv018": [ - "You need Blue Clearance for this gate." + "Ehhez a kapuhoz kék engedély szükséges." ], "cityv019": [ - "You need Purple Clearance for this gate." + "Ehhez a kapuhoz Purple Clearance szükséges." ], "cityv020": [ - "You need special Black Clearance for this door." + "Ehhez az ajtóhoz speciális fekete távolságra van szüksége." ], "cityv021": [ - "Access granted." + "Hozzáférés biztosított." ], "cityv022": [ - "Door open." + "Ajtónyitó." ], "cityv023": [ - "Door closed." + "Ajtó zárva." ], "cityv024": [ - "Please enter." + "Kérlek lépj be." ], "cityv025": [ "Warp Gate online." ], "cityv026": [ - "Warning: Eco supplies low." + "Figyelmeztetés: Az Eco-készletek alacsonyak." ], "cityv027": [ - "Backup systems failing." + "A biztonsági mentési rendszerek meghibásodnak." ], "cityv028": [ - "Warning: Eco storage is below safe minimums." + "Figyelmeztetés: A környezetbarát tárolás a biztonságos minimum alatt van." ], "cityv029": [ - "Eco Grid unstable." + "Az Eco Grid instabil." ], "cityv030": [ - "Metal Heads detected at Mining Site." + "Fémfejeket észleltek a bányatelepen." ], "cityv031": [ - "Metal Heads detected at Drilling Site." + "Fémfejeket észleltek a fúrási helyen." ], "cityv032": [ - "Stand by for clearance." + "Állj készenlétben." ], "cityv033": [ - "Have a nice day." + "Legyen szép napod." ], "cityv034": [ - "Welcome." + "Üdvözöljük." ], "cityv035": [ - "This is a restricted area." + "Ez egy korlátozott terület." ], "cityv036": [ - "You are in violation of Speed Ordinance 51d, pull over." + "Ön megsérti az 51d sebességi rendeletet, álljon le." ], "cityv037": [ - "I have alerted the authorities." + "Riasztottam a hatóságokat." ], "cityv038": [ - "This sector is closed." + "Ez a szektor le van zárva." ], "cityv039": [ - "Alert: Prison escape in progress." + "Figyelmeztetés: Börtönszökés folyamatban." ], "cityv040": [ - "Alert: City under attack." + "Figyelmeztetés: A város támadás alatt áll." ], "cityv041": [ - "Metal Head attack in progress." + "Metal Head támadás folyamatban." ], "cityv042": [ - "All citizens go to safe shelters." + "Minden állampolgár biztonságos menedékhelyre megy." ], "cityv043": [ - "Eco Grid growing unstable." + "Az Eco Grid instabil növekedése." ], "cityv044": [ - "The Eco Grid is down. Repeat: The Eco Grid is down." + "Az Eco Grid leállt. Ismételje meg: Az Eco Grid leállt." ], "cityv045": [ - "Red alert: City shield wall compromised." + "Piros riasztás: A város pajzsfala sérült." ], "cityv046": [ - "Unauthorized movement in sewer system." + "Jogosulatlan mozgás a csatornarendszerben." ], "cityv047": [ - "This is a restricted area. Defenses activated." + "Ez egy korlátozott terület. A védelmek aktiválva." ], "cityv048": [ - "You are trespassing. Defenses coming online." + "Ön jogsértő. A védelem online." ], "cityv049": [ - "I regret use of force. Systems arming." + "Sajnálom az erőszak alkalmazását. Rendszerek élesítése." ], "cityv050": [ - "Trespasser neutralized." + "A behatolót semlegesítették." ], "cityv051": [ - "Suspect destroyed." + "A gyanúsított megsemmisült." ], "cityv052": [ - "I am authorized to use force." + "Erőszak alkalmazására jogosult vagyok." ], "cityv053": [ - "General alert: Riot in progress. Krimzon Guards en route." + "Általános figyelmeztetés: Zavargás van folyamatban. Krimzon őrök úton." ], "cityv054": [ - "Surrender yourself. You are under arrest." + "Add át magad. Le van tartóztatva." ], "cityv055": [ - "There is no escape." + "Nincs menekvés." ], "cityv056": [ - "You are in a restricted sector. This sector is on high alert." + "Ön egy korlátozott szektorban tartózkodik. Ez a szektor fokozott készültségben van." ], "cityv057": [ - "You are under arrest. Surrender yourself." + "Le van tartóztatva. Add át magad." ], "cityv058": [ - "This sector is off limits." + "Ez a szektor nem engedélyezett." ], "cityv061": [ - "All systems back online and in the green." + "Minden rendszer újra online és zöld." ], "cityv062": [ - "The race is about to begin." + "Mindjárt kezdődik a verseny." ], "cityv063": [ - "Welcome to the city transportation system." + "Üdvözöljük a városi közlekedési rendszerben." ], "cityv064": [ - "You can thrust in your vehicle at any time." + "Bármikor betolhat a járművébe." ], "cityv065": [ - "Braking will assist in vehicle control." + "A fékezés segíti a jármű irányítását." ], "cityv067": [ - "Backing up is easy." + "A biztonsági mentés egyszerű." ], "cityv068": [ - "You can hover in one of two zones: low and high." + "Két zóna egyikében lebeghet: alacsony és magas." ], "cityv069": [ - "Try switching hover zones." + "Próbáljon lebegő zónát váltani." ], "cityv070": [ - "Switching hover zones may help avoid traffic or", - "ground obstacles." + "A lebegési zónák váltása segíthet elkerülni a forgalmat ill", + "földi akadályok." ], "cityv075": [ - "Alert: Vehicle destruction imminent." + "Figyelmeztetés: A jármű megsemmisülése küszöbön áll." ], "cityv076": [ - "Please drive more carefully next time." + "Kérjük, legközelebb óvatosabban vezessenek." ], "cityv077": [ - "Thank you for using the vehicle." + "Köszönjük, hogy használta a járművet." ], "cityv078": [ - "Have a nice day." + "Legyen szép napod." ], "cityv079": [ - "Warning: Missile cooling systems damaged." + "Figyelmeztetés: A rakéta hűtőrendszere sérült." ], "cityv080": [ - "Alert: Backup cooling system failure.", - "Emergency overrides initiated." + "Figyelmeztetés: A tartalék hűtőrendszer meghibásodása.", + "Vészhelyzeti felülírások kezdeményezve." ], "cityv081": [ - "Missile systems at critical overload.", - "Failsafe not responding." + "Rakétarendszerek kritikus túlterhelésnél.", + "Failsafe nem válaszol." ], "cityv082": [ - "Danger: Warhead detonation imminent.", - "Evacuate immediately." + "Veszély: robbanófej detonáció küszöbön áll.", + "Azonnal evakuálni." ], "cityv087": [ - "Arriving at Throne Room floor." + "Megérkezés a Trónterem emeletére." ], "cityv088": [ - "Arriving at ground floor." + "Érkezés a földszintre." ], "cityv093": [ - "You have been sentenced to termination." + "Önt felmondásra ítélték." ], "cityv094": [ - "This area is restricted.", - "Initiating termination with extreme prejudice." + "Ez a terület korlátozott.", + "A felmondás kezdeményezése rendkívüli előítélettel." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Ez a terület csak a Krimzon Guard személyzete számára nyitva áll." ], "cityv096": [ - "The city is on high alert." + "A város fokozott készültségben van." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "A város támadás alatt áll.", + "Minden állampolgár biztonságos menedékhelyre megy." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "A város támadás alatt áll. Kérem, maradjon otthonotokban." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "A fémfejes agresszorok beszivárognak a rendszerbe." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Gratulálunk a Security Pass megszerzéséhez." ], "cityv107": [ - "Unauthorized use of Fortress door.", - "Activating security tank." + "Az erődajtó illetéktelen használata.", + "Biztonsági tartály aktiválása." ], "cityv108": [ - "Gunpod weapons coming online." + "Gunpod fegyverek online." ], "cityv109": [ - "Weapons overheating." + "A fegyverek túlmelegedése." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "A fegyverek nem működnek. Kérjük, várja meg a lehűlést." ], "cityv111": [ - "Weapons back online." + "Fegyverek újra online." ], "cityv112": [ - "The gunpod has taken severe damage." + "A lőfegyver súlyosan megsérült." ], "cityv130": [ - "The city map is displayed in the lower right." + "A várostérkép a jobb alsó sarokban jelenik meg." ], "cityv132": [ - "Follow the icons on the map", - "to reach important destinations." + "Kövesse a térképen látható ikonokat", + "fontos célpontok eléréséhez." ], "cityv134": [ - "Intruder alert." + "Behatoló riasztás." ], "cityv135": [ - "Stand by." + "Állj készenlétben." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Áramkör túlterhelést tapasztalok.", + "Kapcsolja be a bypass kapcsolóimat a határidőn belül", + "és meg lesz jutalmazva." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "Nem sikerült időben bekapcsolnia a bypass rácsot.", + "A C-zóna áramköreim túlterheltek." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "Sikeresen bekapcsolta a bypass-t", + "az én köreimhez időben.", + "Itt egy jutalom." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", - "to stabilize the Eco Grid." + "Vészáramra van szükségem az Eco átalakítóimhoz.", + "Gyorsan kapcsolja be az összes elérhető áramkört", + "az Eco Grid stabilizálására." ], "cityv150": [ - "You didn't reach all the switches in time.", - "The Eco Grid is still unstable." + "Nem érte el időben az összes kapcsolót.", + "Az Eco Grid továbbra is instabil." ], "cityv151": [ - "You successfully switched on the circuits", - "to stabilize the Eco Grid.", - "You have earned a reward." + "Sikeresen bekapcsolta az áramköröket", + "az Eco Grid stabilizálására.", + "Jutalmat szerzett." ], "cityv152": [ - "I have detected a Dark Eco spill.", - "You must remove this hazard quickly", - "before the city is contaminated." + "Dark Eco kiömlést észleltem.", + "Ezt a veszélyt gyorsan el kell távolítania", + "mielőtt a város elszennyeződik." ], "cityv153": [ - "You did not remove all the Dark Eco quickly enough." + "Nem távolította el elég gyorsan az összes Dark Ecot." ], "cityv154": [ - "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "Időben eltávolítottad a Dark Eco veszélyt.", + "A város hálás neked." ], "cityv155": [ - "Sensors indicate a cluster of Blue Eco in the city.", - "Collect all eco before it dissipates", - "and you will be rewarded." + "Az érzékelők a Blue Eco klasztert jelzik a városban.", + "Gyűjtsd össze az összes öko-t, mielőtt eloszlik", + "és meg lesz jutalmazva." ], "cityv156": [ - "You did not retrieve all of the eco." + "Nem töltötte le az összes környezetbarát elemet." ], "cityv157": [ - "You successfully retrieved the eco.", - "Here is your reward." + "Sikeresen letöltötte az eco-t.", + "Itt a jutalmad." ], "cityv158": [ - "Emergency response needed.", - "Runaway bomb bots detected and headed for", - "populated areas. Neutralize all bomb bots", - "before it's too late." + "Vészhelyzeti reagálás szükséges.", + "Elszökött bombabotokat észleltek, és elindultak felé", + "lakott területek. Semlegesítse az összes bombabotot", + "mielőtt túl késő lenne." ], "cityv159": [ - "You failed to neutralize the runaway bomb bots." + "Nem sikerült semlegesíteni az elszabadult bombabotokat." ], "cityv160": [ - "You destroyed the runaway bomb bots.", - "The city thanks you." + "Megsemmisítetted az elszabadult bombabotokat.", + "A város köszönetet mond." ], "cityv161": [ - "Get to this point in the game quickly", - "and you will receive a prize." + "Gyorsan juss el idáig a játékban", + "és kapsz egy díjat." ], "cityv162": [ - "Try to find this spot." + "Próbáld megtalálni ezt a helyet." ], "cityv163": [ - "Can you identify this place and get there?" + "Be tudod azonosítani ezt a helyet és eljutni oda?" ], "cityv164": [ - "Make it here in the time allotted and a reward is yours." + "Térjen ide a megadott időben, és a jutalom az Öné." ], "cityv165": [ - "Find this spot for a prize." + "Keresse meg ezt a helyet a nyereményért." ], "cityv166": [ - "Get to this spot for a prize." + "Gyere el erre a helyre egy nyereményért." ], "cityv167": [ - "Metal Heads have been detected in the gun course.", - "Neutralize them all immediately." + "Fémfejeket észleltek a fegyverpályán.", + "Azonnal semlegesítse mindet." ], "cityv168": [ - "You did not kill them all." + "Nem ölted meg mindet." ], "cityv169": [ - "Excellent shooting. Threat eliminated." + "Kiváló lövés. A fenyegetés megszűnt." ], "cityv170": [ - "Get a high score on the JET-Board and receive a prize." + "Szerezz magas pontszámot a JET-Board-on, és nyerj egy díjat." ], "cityv171": [ - "Try for a high score and receive a prize." + "Próbáljon meg magas pontszámot elérni, és kapjon díjat." ], "cityv172": [ - "You did not achieve a high enough score." + "Nem ért el elég magas pontszámot." ], "cityv173": [ - "Congratulations, you achieved a high enough score." + "Gratulálunk, elég magas pontszámot ért el." ], "cityv174": [ - "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Üdvözöljük a Stadion Központi Számítógépében.", + "Kérjük, válassza ki a kihívást." ], "cityv175": [ - "Attention, all citizens:", - "The Class 1 Race is about to begin." + "Figyelem, minden állampolgár:", + "Hamarosan kezdődik az 1. osztályú verseny." ], "cityv176": [ - "Attention, all citizens:", - "The Class 2 Race is about to begin." + "Figyelem, minden állampolgár:", + "Hamarosan kezdődik a 2. osztályú verseny." ], "cityv177": [ - "Attention, all citizens:", - "The Class 3 Race is about to begin." + "Figyelem, minden állampolgár:", + "Hamarosan kezdődik a 3. osztályú verseny." ], "cityv178": [ - "Care to try for the course record?" + "Szeretné megpróbálni a tanfolyam rekordját?" ], "cityv179": [ - "Congratulations, you achieved the gold record." + "Gratulálunk, elérte az aranyrekordot." ], "cityv180": [ - "Congratulations, you achieved the silver record." + "Gratulálunk, elérte az ezüst rekordot." ], "cityv181": [ - "Congratulations, you achieved the bronze record." + "Gratulálunk, elérte a bronzrekordot." ], "cityv182": [ - "Care to try for a high score record?" + "Szeretnél egy magas pontszámot elérni?" ], "cityv183": [ - "Would you like to try for a high score?" + "Szeretnél magas pontszámot elérni?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Üdvözöljük a Racing Time Trials-en." ], "cityv185": [ - "Would you like to race for a record time?" + "Szeretnél rekordidőt versenyezni?" ], "cityv186": [ - "Choose your course." + "Válassza ki tanfolyamát." ], "cityv187": [ - "Would you like to try for a course record?" + "Kipróbálnád a tanfolyam rekordját?" ], "cityv188": [ - "Would you like to use Orbs to buy a secret?" + "Szeretnél az Orbs segítségével titkot vásárolni?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "Nincs elég gömbje ehhez a titokhoz." ], "cityv190": [ - "Secret activated." + "Titok aktiválva." ], "cityv191": [ - "All secrets are activated." + "Minden titok aktiválva van." ], "cityv192": [ - "Please exit the Titan Suit." + "Kérjük, lépjen ki a Titan Suitból." ], "cityv193": [ - "You must exit the Titan Suit." + "Ki kell lépned a Titan Suitból." ], "cityv194": [ - "Vehicles must remain within city limits." + "A járműveknek a város határain belül kell maradniuk." ], "cityv195": [ - "Exit denied. Enemy targets still present." + "Kilépés megtagadva. Az ellenséges célpontok még mindig jelen vannak." ], "cityv196": [ - "Exit denied. Metal Head eggs still detected." + "Kilépés megtagadva. Fémfejű tojásokat még mindig észleltek." ], "cityv197": [ - "Scanners show Metal Head eggs still active." + "A szkennerek azt mutatják, hogy a Metal Head tojások még mindig aktívak." ], "daxm001": [ - "Shoot the platform, Jak." + "Lődd le az emelvényt, Jak." ], "daxm002": [ - "We need something to get through that gate!" + "Kell valami, hogy átjussunk azon a kapun!" ], "daxm003": [ - "Shoot the Metal Head when he moves his shield!" + "Lődd le a fémfejet, amikor megmozdítja a pajzsát!" ], "daxm004": [ - "Hit him in his stomach!" + "Üsd a hasába!" ], "daxm005": [ - "Whoa! That path dropped like uh... a rock!" + "Hú! Ez az ösvény leesett, mint egy szikla!" ], "daxm006": [ - "Smack the box, baby!" + "Üsd be a dobozt, bébi!" ], "daxm007": [ - "That's what I call a rocky road!" + "Ezt nevezem én sziklás útnak!" ], "daxm008": [ - "We gotta get to the top!" + "Fel kell jutnunk a csúcsra!" ], "daxm009": [ - "We made it!!" + "Megcsináltuk!!" ], "daxm010": [ "Rock 'n roll!" ], "ds001": [ - "We gotta find the Baron, Jak." + "Meg kell találnunk a bárót, Jak." ], "ds005": [ - "Jak, those are Metal Heads!" + "Jak, ezek fémfejek!" ], "ds006": [ - "Finally, now we get to see the Shadow!", - "What do ya gotta do around this place to get noticed?" + "Végre, most láthatjuk az Árnyékot!", + "Mit kell tenned ezen a helyen, hogy észrevegyenek?" ], "ds012": [ - "That must be the Ruby Key to the city." + "Biztosan ez a város Rubinkulcsa." ], "ds013": [ - "Statues are becoming an endangered species around here." + "A szobrok egyre veszélyeztetett fajtá válnak errefelé." ], "ds014": [ - "So this is Mar's scary tomb, eh?", - "Doesn't look so bad." + "Szóval ez Mar félelmetes sírja, mi?", + "Nem néz ki olyan rosszul." ], "ds016": [ - "Let's bring the money back to Krew." + "Vigyük vissza a pénzt Krew-nak." ], "ds017": [ - "That must be the ammo and missile Torn told us to blow up!" + "Biztosan az a lőszer és rakéta, amit Torn mondott nekünk, hogy robbantsunk fel!" ], "ds018": [ - "Get the tank to shoot the missile!" + "Szerezd meg a tankot, hogy lődd le a rakétát!" ], "ds019": [ - "Break those tubes in the center." + "Törje le a csöveket a közepén." ], "ds020": [ - "Please tell me you remember how to roll..." + "Kérlek, mondd, hogy emlékszel, hogyan kell gurítani..." ], "ds023": [ - "Let's rock!" + "Zúzzunk!" ], "ds024": [ - "Here we go!" + "Essünk neki!" ], "ds025": [ - "All right!" + "Rendben!" ], "ds026": [ - "Yeah!" + "Igen!" ], "ds028": [ - "Oh yeah!" + "Ó igen!" ], "ds029": [ - "Let's go back to the city." + "Menjünk vissza a városba." ], "ds030": [ - "I think we need to go back to the city, Jak." + "Azt hiszem, vissza kell mennünk a városba, Jak." ], "ds031": [ - "Let's go talk to Torn." + "Menjünk és beszéljünk Tornnal." ], "ds032": [ - "Let's go back to the Underground Hideout." + "Térjünk vissza a Földalatti Búvóhelyre." ], "ds043": [ - "You can get a longer jump by rolling into it." + "Egy hosszabb ugrást érhetsz el, ha belegurulsz." ], "ds044": [ - "Use a long jump to get across this gap." + "Használjon távolugrást, hogy átlépje ezt a rést." ], "ds045": [ - "Nice form!" + "Szép forma!" ], "ds046": [ - "If you duck before you jump, you'll go higher.", - "You'll need a high jump to reach the top of this ledge, Jak." + "Ha lebukik, mielőtt ugrik, magasabbra megy.", + "Szüksége lesz egy magasugrásra, hogy elérje ennek a párkánynak a tetejét, Jak." ], "ds047": [ - "Ooh, that's a high one.", - "You'll need to jump,", - "then jump again in the air to get up there." + "Ó, ez egy magas.", + "Ugrálnod kell,", + "majd ugorj újra a levegőbe, hogy feljuss oda." ], "ds048": [ - "Hit 'em again, Jak!" + "Üsd meg őket újra, Jak!" ], "ds049": [ - "Do a spin kick!" + "Csinálj egy pörgést!" ], "ds050": [ - "Robotank, run!" + "Robotank, fuss!" ], "ds051": [ - "Hey, we should stay with Sig." + "Hé, maradjunk Siggel." ], "ds052": [ - "Hey, big guy, keep close, huh?" + "Hé, nagyfiú, maradj közel, mi?" ], "ds053": [ - "We're too far away from Sig." + "Túl messze vagyunk Sigtől." ], "ds054": [ - "Stick with the plan, Jak, protect Sig!" + "Maradj a tervnél, Jak, védd meg Sig-et!" ], "ds055": [ - "Uh oh, where's Sig?" + "Ó, hol van Sig?" ], "ds056": [ - "Wow, what a blast!" + "Hú, micsoda pompás!" ], "ds057": [ - "Sig's a good shot." + "Sig jó lövés." ], "ds058": [ - "Go help Sig!" + "Menj, segíts Signek!" ], "ds059": [ - "Nice shootin', Sig!" + "Szép lövöldözés, Sig!" ], "ds060": [ - "You're my hero!" + "Te vagy a hősöm!" ], "ds061": [ - "Uh oh, Sig's in trouble!" + "Ó, Sig bajban van!" ], "ds062": [ - "There's another Metal Head going after our boy!", - "Shoot it, shoot it!" + "Egy másik Metal Head megy a fiunk után!", + "Lődd le, lődd le!" ], "ds063": [ - "Keep Sig safe, Jak!" + "Tartsd biztonságban Sig-et, Jak!" ], "ds064": [ - "Whoa, Sig's really getting roughed up!" + "Hú, Sig nagyon bedurvult!" ], "ds065": [ - "Shoot 'em, shoot 'em!" + "Lődd le őket, lődd le őket!" ], "ds066": [ - "Sig dies, we die." + "Sig die, meghalunk." ], "ds067": [ - "Oof, we suck..." + "Ó, szívunk..." ], "ds068": [ - "We have to keep 'em away from Sig." + "Távol kell tartanunk őket Sigtől." ], "ds069": [ - "We need to find the valve to turn the water back on." + "Meg kell találnunk a szelepet, hogy visszakapcsoljuk a vizet." ], "ds094": [ - "Robotank, run!" + "Robotank, fuss!" ], "ds095": [ - "Here comes that tank again!" + "Megint jön a tank!" ], "ds096": [ - "Get the tank to shoot the missile!" + "Szerezd meg a tankot, hogy lődd le a rakétát!" ], "ds099": [ - "We need to get to the top of that tower!" + "Fel kell jutnunk a torony tetejére!" ], "ds100": [ - "Climb the ruined tower, Jak!" + "Mássz fel a romos toronyba, Jak!" ], "ds111": [ - "We should come back with the Titan Suit to do this path." + "Vissza kell jönnünk a Titan Suit-tel, hogy megtegyük ezt az utat." ], "ds112": [ - "You've got a mechanical fist, Jak. Use it!" + "Mechanikus öklöd van, Jak. Használd!" ], "ds113": [ - "Break the door!" + "Törd be az ajtót!" ], "ds114": [ - "800 pound Tigorilla comin' through!" + "800 fontos Tigorilla jön át!" ], "ds115": [ - "Smashing work, Jak! Oh, that was funny." + "Szuper munka, Jak! Ó, ez vicces volt." ], "ds116": [ - "Shoot the platform, Jak." + "Lődd le az emelvényt, Jak." ], "ds117": [ - "We need something to get through that gate." + "Szükségünk van valamire, hogy átjussunk azon a kapun." ], "ds118": [ - "Shoot the Metal Head when he moves his shield." + "Lődd le a fémfejet, amikor mozgatja a pajzsát." ], "ds119": [ - "Hit him in his stomach." + "Üsd meg a gyomrában." ], "ds120": [ - "Whoa, that path dropped like a... a rock!" + "Hú, ez az ösvény leesett, mint egy... egy szikla!" ], "ds121": [ - "Smack the box, baby!" + "Üsd be a dobozt, bébi!" ], "ds128": [ - "Good, we're through." + "Jó, túl vagyunk." ], "ds129": [ - "Shoot the gun, Jak!" + "Lődd le a fegyvert, Jak!" ], "ds143": [ - "We're supposed to keep Krew's guys alive, Jak!" + "Életben kell tartanunk Krew fiait, Jak!" ], "ds144": [ - "Save 'em, Jak!" + "Mentsd meg őket, Jak!" ], "ds145": [ - "Don't like this, Jak..." + "Nem tetszik ez, Jak..." ], "ds146": [ - "Behind us, Jak!" + "Mögöttünk, Jak!" ], "ds147": [ - "Metal Heads! Everywhere!" + "Fém fejek! Mindenhol!" ], "ds148": [ - "Protect us, Jak! But first me." + "Védj meg minket, Jak! De először én." ], "ds150": [ - "Take a vehicle, Jak! It's faster." + "Vegyünk egy járművet, Jak! Ez gyorsabb." ], "ds151": [ - "Use your JET-Board!" + "Használja a JET-Boardot!" ], "ds152": [ - "We got company, Jak! Lots of guards!" + "Társaságunk van, Jak! Sok őr!" ], "ds160": [ - "That's right, we're bad! The Precursor Stone is ours!" + "Így van, rosszak vagyunk! Az elődkő a miénk!" ], "ds161": [ - "There's Mar's gun, Jak! Let's go check it out." + "Ott van Mar fegyvere, Jak! Menjünk, nézzük meg." ], "ds162": [ - "These Precursor Orbs are worth a lot now.", - "We might find a few hidden around,", - "or get some doing difficult tasks.", - "We'll be able to buy stuff with 'em!" + "Ezek az előgömbök most sokat érnek.", + "Talán találunk néhány rejtőzködőt,", + "vagy végezzen nehéz feladatokat.", + "Vásárolhatunk velük cuccokat!" ], "ds163": [ - "Jak, now that we have the Palace Security Pass,", - "let's go have some fun in the big man's crib!" + "Jak, most, hogy megvan a Palace Security Pass,", + "menjünk szórakozni egy kicsit a nagy ember kiságyában!" ], "ds164": [ - "Back up to get out of the mech." + "Hátráljon fel, hogy kiszálljon a gépből." ], "ds165": [ - "We're free, Jak! Thanks to me.", - "Nice to breathe some fresh air, huh?", - "We'll get that Baron Praxis guy, alright!" + "Szabadok vagyunk, Jak! Köszönöm nekem.", + "Jó lenne egy kis friss levegőt szívni, mi?", + "Megszerezzük azt a Baron Praxis fickót, rendben!" ], "ds166": [ - "I'm not getting out of this pod", - "'till you kill all those crazy flyin' Metal Heads!" + "Nem szállok ki ebből a tokból", + "Amíg meg nem ölöd azokat az őrült repülő fémfejeket!" ], "ds167": [ - "I wonder why they wanted us to protect Samos' Hut.", - "Maybe now we'll get to meet the Shadow." + "Vajon miért akarták, hogy megvédjük Samos kunyhóját.", + "Talán most találkozhatunk az Árnyékkal." ], "ds168": [ - "There's the Rift Ring!" + "Ott a Rift Ring!" ], "ds173": [ "Ahhh!" ], "ds174": [ - "Ooooh!" + "Óóóó!" ], "ds175": [ - "Whoa-whoa-oaa-ah!" + "Húúúúúúúúúúú!" ], "ds176": [ - "Whoa!" + "Hú!" ], "ds177": [ - "Hey!" + "Hé!" ], "ds178": [ - "Hey, watch that!" + "Hé, ezt figyeld!" ], "ds179": [ - "Ooh!" + "Óóó!" ], "ds180": [ - "Oh, boy!" + "Oh, fiú!" ], "ds181": [ - "Uooaaoh!" + "Azta!" ], "ds182": [ - "Wow, that was close!" + "Hú, ez közel volt!" ], "ds183": [ - "Oh, boy!" + "Oh, fiú!" ], "ds184": [ - "Yes!" + "Igen!" ], "ds185": [ - "Yeah!" + "Igen!" ], "ds186": [ - "Hey, watch it!" + "Hé, figyelj!" ], "ds187": [ - "All right!" + "Rendben!" ], "ds188": [ - "Move over!" + "Félreáll!" ], "ds189": [ - "Orange Lightning coming through!" + "Narancssárga villám jön át!" ], "ds190": [ - "Rollin' with the homies!" + "Gördülj a háziakkal!" ], "ds191": [ - "You're mine!" + "Az enyém vagy!" ], "ds192": [ - "There they are!" + "Ott vannak!" ], "ds193": [ - "Hey! Watch where you're drivin'!" + "Hé! Figyeld, merre vezetsz!" ], "ds194": [ - "How do I drive this thing?" + "Hogyan vezethetem ezt a dolgot?" ], "ds195": [ - "Yeah, that's right! I'm bad!" + "Ja, ez igaz! Rossz vagyok!" ], "ds196": [ - "Outta my way!" + "El az utamból!" ], "ds197": [ - "Outta my way!" + "El az utamból!" ], "ds198": [ - "Move it or lose it, buddy!" + "Mozgasd vagy veszítsd el, haver!" ], "ds199": [ - "Mm... bye-bye!" + "Mm... viszlát!" ], "ds200": [ - "Last lap!" + "Utolsó kör!" ], "ds201": [ - "Come on, come on!" + "Gyerünk gyerünk!" ], "ds202": [ - "Come on, come on, come on!" + "Gyerünk, gyerünk, gyerünk!" ], "ds203": [ - "Pedal to the metal!" + "Pedál a fémre!" ], "ds204": [ - "Ooooah, I gotta catch up!" + "Óóóó, utol kell érnem!" ], "ds205": [ - "Turn and burn, baby!" + "Fordulj és égj, bébi!" ], "ds206": [ - "Oooh, it's gonna be close!" + "Óóó, közel lesz!" ], "ds207": [ - "Eat my dust, buddy!" + "Edd meg a port, haver!" ], "ds208": [ - "Gotcha!" + "Megvagy!" ], "ds209": [ - "This is my track, grandma!" + "Ez az én pályám, nagymama!" ], "ds210": [ - "Learn to drive!" + "Vezetni tanul!" ], "ds211": [ - "Turn, turn!" + "Fordulj, fordulj!" ], "ds212": [ - "Step on it!" + "Gázt ad!" ], "ds213": [ - "Oooh, I won, I won!" + "Ó, én nyertem, nyertem!" ], "ds214": [ - "Yeee, that's a good lap time." + "Igen, ez egy jó köridő." ], "ds215": [ - "Oh, yeah! I'm rockin'!" + "Ó igen! Ringázok!" ], "ds216": [ - "Another lap in the record book!" + "Újabb kör a rekordok könyvében!" ], "ds217": [ - "Take a good look at my tail!" + "Jól nézd meg a farkamat!" ], "ds218": [ "Wahoo!" ], "ds219": [ - "Hey, fang boy, hurry up and get in,", - "we'll take you to Brutter!" + "Hé, agyarfiú, siess és szállj be!", + "elvisszük Brutterbe!" ], "ds220": [ - "Here's your boy, Brutter! We're off to get another animal!" + "Itt a fiad, Brutter! Elmegyünk egy másik állatért!" ], "ds221": [ - "Yo, animal lover, get your furry butt in the vehicle!" + "Jaj, állatbarát, tedd be a szőrös fenekedet a járműbe!" ], "ds222": [ - "Here's another beast of burden!" + "Itt egy újabb teherhordó állat!" ], "ds223": [ - "In the vehicle, buddy, we can save you!" + "A járműben, haver, mi megmenthetünk!" ], "ds224": [ - "Another Lurker freed." + "Egy másik Lurker kiszabadult." ], "ds225": [ - "Let's move, eco breath! We gotta get you to Brutter." + "Mozduljunk, öko lélegzet! El kell vinnünk Brutterbe." ], "ds226": [ - "Hey, Brutter! Look what the cat turkey dragged in." + "Szia Brutter! Nézd, mit húzott be a macskapulyka." ], "ds227": [ - "Lookie what we found!" + "Nézd mit találtunk!" ], "ds228": [ - "You recognize this monster?" + "Felismered ezt a szörnyeteget?" ], "ds229": [ - "We did it! We saved them all!" + "Megcsináltuk! Mindet megmentettük!" ], "ds230": [ - "Catch the paddywagon, Jak!" + "Kapd el a paddywagont, Jak!" ], "ds231": [ - "Crash the paddywagon!" + "Üsd össze a paddywagont!" ], "ds232": [ - "A little more damage and we got the sucker!" + "Még egy kis kár, és megvan a balek!" ], "ds233": [ - "He's smoking, Jak! Hit him again!" + "Dohányzik, Jak! Üsd meg újra!" ], "ds234": [ - "That caused some damage!" + "Ez okozott némi kárt!" ], "ds235": [ - "One more like that and he's through!" + "Még egy ilyen, és kész!" ], "ds236": [ - "Find the next vehicle!" + "Keresse meg a következő járművet!" ], "ds237": [ - "Yes, we took it out!" + "Igen, kivettük!" ], "ds238": [ - "Hunt and destroy, baby!" + "Vadássz és pusztíts, bébi!" ], "ds239": [ - "Hit it, hit it!" + "Üsd, üsd meg!" ], "ds240": [ - "Take it out!" + "Vegye ki!" ], "ds241": [ - "Pick up the Lurker, Jak!" + "Vedd fel a Lurkert, Jak!" ], "ds242": [ - "Get the Lurker!" + "Szerezd meg a Lurkert!" ], "ds243": [ - "We need to pick up that Lurker back there." + "Fel kell szednünk azt a Lurkert." ], "ds244": [ - "Usually, I don't like to be this close to Lurkers." + "Általában nem szeretek ilyen közel lenni Lurkershez." ], "ds245": [ - "Ehehe, you seem like a nice, uh... animal." + "Ehehe, kedves, uh... állatnak tűnsz." ], "ds246": [ - "Easy, buddy. Don't bite me!" + "Nyugi, haver. Ne harapj meg!" ], "ds247": [ - "Hey, stop slobbering on me!" + "Hé, hagyd abba a piszkálást!" ], "ds248": [ - "He's recharging!" + "Töltődik!" ], "ds249": [ - "Ooh, we got him good that time!" + "Ó, akkor jót tettünk vele!" ], "ds250": [ - "Yeah, now he's hurtin'!" + "Igen, most fáj!" ], "ds251": [ - "Good shot, Jak!" + "Jó lövés, Jak!" ], "ds252": [ - "Incoming!" + "Beérkező!" ], "ds253": [ - "Yeah, we got him!" + "Igen, megkaptuk!" ], "ds254": [ - "Jak, hide behind the pillars when he shoots!" + "Jak, bújj az oszlopok mögé, amikor lő!" ], "ds255": [ - "He's got the Precursor Stone!" + "Megvan az elődkő!" ], "ds256": [ - "Kick the bomb right at him, Jak!" + "Rúgd rá a bombát, Jak!" ], "ds257": [ - "That one hit him!" + "Ez megütötte!" ], "ds258": [ - "Look out!" + "Vigyázz!" ], "ds259": [ - "Jump the gap!" + "Ugrás a szakadékot!" ], "ds260": [ - "Yeah, you hit him!" + "Igen, megütötted!" ], "ds261": [ - "As if there wasn't enough of Krew already." + "Mintha már nem lenne elég Krew-ból." ], "ds262": [ - "Shoot 'em all, Jak! We'll sort 'em out later..." + "Lődd le mindet, Jak! Majd később megoldjuk..." ], "ds263": [ - "There's the real Krew! Shoot him!" + "Ott az igazi Krew! Lődd le!" ], "ds264": [ - "You got him!" + "Megkaptad!" ], "ds265": [ - "Watch your back, Jak!" + "Vigyázz a hátadra, Jak!" ], "ds266": [ - "They're comin' again!" + "Megint jönnek!" ], "ds267": [ - "Now you've got us mad." + "Most feldühítettél minket." ], "ds268": [ - "Good shot, Jak! The big man is hurtin' now." + "Jó lövés, Jak! A nagy ember most fáj." ], "ds269": [ - "And the challenger is down for the count!" + "És a kihívó le van számolva!" ], "ds270": [ - "Keep movin', baby! He's gonna shoot!" + "Mozogj, bébi! Lőni fog!" ], "ds271": [ - "Wooh, here come some Metal Heads!" + "Hú, jöjjön néhány fémfej!" ], "ds272": [ - "Protect the kid!" + "Védd a gyereket!" ], "ds273": [ - "Kill all the Metal Heads!" + "Öld meg az összes fémfejet!" ], "ds274": [ - "More Metal Heads!" + "Még több fémfej!" ], "ds275": [ - "Shoot Kor's legs out, Jak!" + "Lőd ki Kor lábát, Jak!" ], "ds276": [ - "He's down, Jak! Hit him in the head!" + "Leesett, Jak! Üsd fejbe!" ], "ds277": [ - "Boot to the head, boot to the head!" + "Csizmát a fejnek, csizmát a fejnek!" ], "ds278": [ - "I think we should hide somewhere!" + "Szerintem bújjunk el valahova!" ], "ds279": [ - "Take cover before he blows!" + "Takarodj, mielőtt fúj!" ], "ds280": [ - "Yeah, you got him good that time!" + "Igen, akkor jót tettél vele!" ], "ds281": [ - "Oh, man, now he's angry!" + "Ó, ember, most dühös!" ], "ds282": [ - "Get him, Jak!" + "Kapd el, Jak!" ], "ds283": [ - "He's gonna shoot!" + "Lőni fog!" ], "ds284": [ - "Nice hit, partner!" + "Szép találat, partner!" ], "ds285": [ - "That had to hurt him." + "Ennek fájnia kellett neki." ], "ds286": [ - "You messed with the wrong heroes, buddy!" + "Rossz hősökkel rontottál össze, haver!" ], "ds287": [ - "Shoot him again, Jak!" + "Lődd le még egyszer, Jak!" ], "ds288": [ - "Jak, we're taking a beating!" + "Jak, verünk!" ], "ds289": [ - "Stay away from the Dark Eco!" + "Maradj távol a Dark Eco-tól!" ], "ds302": [ - "We've almost got him, Jak!" + "Majdnem megvan, Jak!" ], "ds303": [ - "That's it! You did it!" + "Ez az! Megcsináltad!" ], "ds305": [ - "Shoot the switch to change the coveyor belt's", - "direction!" + "Lődd le a kapcsolót a szállítószalag cseréjéhez", + "irány!" ], "ds306": [ - "You gotta shoot the switch, Jak!" + "Lőned kell a kapcsolót, Jak!" ], "ds307": [ - "Find the switch to change the conveyor's direction!" + "Keresse meg a kapcsolót a szállítószalag irányának megváltoztatásához!" ], "ds321": [ - "Take out the turrets!" + "Vegye ki a tornyokat!" ], "ds322": [ - "Hit the turrets, Jak!" + "Üsd a tornyokat, Jak!" ], "ds323": [ - "Doin' some damage!" + "Valami kárt okoz!" ], "ds324": [ - "Get in the Titan Suit!" + "Vedd fel a Titan Suitot!" ], "ds325": [ - "Shoot that ship!" + "Lődd le azt a hajót!" ], "ds326": [ - "Yeah, that ship's feelin' it now!" + "Igen, ez a hajó most érzi!" ], "ds327": [ - "Ooh, direct hits." + "Ó, közvetlen találatok." ], "ds328": [ - "I think you hurt it that time!" + "Szerintem akkor megbántottad!" ], "ds329": [ - "The ship's goin' down! You did it, Jak!" + "A hajó lezuhan! Megcsináltad, Jak!" ], "ds353": [ - "That must be the missile Torn wants us to blow up!" + "Biztosan ez az a rakéta, amelyet Torn fel akar robbantani!" ], "ds354": [ - "Break those tubes in the center, Jak!" + "Törd szét a csöveket a közepén, Jak!" ], "ds372": [ - "Gotta ride the JET-Board on this one, Jak!" + "Ezen a JET-Boardon kell utaznom, Jak!" ], "ds375": [ - "Look out for the ray!" + "Vigyázz a sugárra!" ], "ds378": [ - "We gotta break all the support cables!" + "El kell szakítanunk az összes tartókábelt!" ], "ds379": [ - "Grind on the support bases to break the cables." + "Csiszolja meg a tartó alapjait, hogy megszakítsa a kábeleket." ], "ds394": [ - "Spider! Spider! Huff... huff... I hate spiders!" + "Pók! Pók! Huff... huff... utálom a pókokat!" ], "ds395": [ - "Gotta run, gotta run!" + "Futni kell, futni kell!" ], "ds398": [ - "The first beam!" + "Az első sugár!" ], "ds399": [ - "The second beam! The door's opening!" + "A második sugár! Nyílik az ajtó!" ], "ds404": [ - "There's Sig!" + "Ott van Sig!" ], "ds405": [ - "Get the blocks to go into the slots, Jak!" + "Szerezd be a blokkokat a nyílásokba, Jak!" ], "ds406": [ - "Shoot or kick the blocks!" + "Lődd vagy rúgd a blokkokat!" ], "ds407": [ - "You have to get the blocks in the slots faster!" + "Meg kell kapni a blokkokat a résidőkben gyorsabban!" ], "ds408": [ - "Run, Jak!" + "Fuss, hogyan!" ], "ds409": [ - "Keep moving!" + "Mozogj!" ], "ds410": [ - "We gotta stay ahead of that thing!" + "Előre kell maradnunk ennek a dolognak!" ], "ds439": [ - "Shoot all the Metal Head eggs, Jak!" + "Lődd le az összes Metal Head tojást, Jak!" ], "ds440": [ - "We didn't get all those nasty eggs!" + "Nem kaptuk meg azt a sok csúnya tojást!" ], "ds441": [ - "We missed some Metal Head eggs!" + "Kihagytunk néhány Metal Head tojást!" ], "ds461": [ - "We gotta jump onto the crate dangling from the crane!" + "Fel kell ugranunk a daruról lelógó ládára!" ], "ds462": [ - "Use your hoverboard on this path!" + "Használd a hoverboard-odat ezen az úton!" ], "ds463": [ - "You can grind to cross those pipes using your", + "Köszörülve keresztezheti ezeket a csöveket a saját segítségével", "hoverboard!" ], "ds464": [ - "Ride the half-pipe to the end!" + "Hajtsd a félcsövet a végéig!" ], "ds466": [ - "You gotta drop a bomb into each well, Jak!" + "Bombát kell dobnod minden kútba, Jak!" ], "ds467": [ - "Use the ramp to get high enough to drop the bomb in!" + "Használd a rámpát, hogy elég magasra juss ahhoz, hogy bedobd a bombát!" ], "ds468": [ - "Gotta jump higher!" + "Feljebb kell ugrani!" ], "ds469": [ - "Only a minute before we're toast, Jak!" + "Csak egy perccel a koccintás előtt, Jak!" ], "ds470": [ - "30 seconds left, then we go BOOM!" + "30 másodperc van hátra, aztán indulunk BUMM!" ], "ds471": [ - "Ten seconds left, Jak!" + "Tíz másodperc van hátra, Jak!" ], "ds472": [ - "That's one well down, five to go!" + "Még egy jóval lefelé, öt van hátra!" ], "ds473": [ - "Two wells are history, four left!" + "Két kút történelem, négy maradt!" ], "ds474": [ - "Three wells cut, only three to go!" + "Három kutat vágtak, már csak három van hátra!" ], "ds475": [ - "That's the fourth well, two bad boys left!" + "Ez a negyedik kút, két rosszfiú maradt!" ], "ds476": [ - "You got the fifth well, only one to go!" + "Megvan az ötödik kút, már csak egy van hátra!" ], "ds477": [ - "You got 'em all, Jak!" + "Mind megvan, Jak!" ], "ds478": [ - "The last well is up where we rescued Vin!" + "Fenn van az utolsó kút, ahol megmentettük Vint!" ], "ds479": [ - "Now he's vulnerable!" + "Most sebezhető!" ], "ds480": [ - "Take him out!" + "Vidd őt ki!" ], "ds481": [ - "Get him while he's vulnerable!" + "Kapd el, amíg kiszolgáltatott!" ], "ds482": [ - "Here he comes..." + "Itt jön ő..." ], "ds483": [ - "How's it feel to have your pants down, Baron?" + "Milyen érzés lehúzni a nadrágot, báró?" ], "ds484": [ - "Shoot him, shoot him!" + "Lődd le, lődd le!" ], "ds485": [ - "Look out!" + "Vigyázz!" ], "ds487": [ - "Easy, Jak, we gotta get this guy to safety!" + "Nyugi, Jak, biztonságba kell vinnünk ezt a fickót!" ], "ds488": [ - "We're takin' a lotta damage, buddy!" + "Nagy kárt szenvedünk, haver!" ], "ds489": [ - "We're gettin' our butts kicked!" + "Megrúgjuk a fenekünket!" ], "ds490": [ - "Maybe I should drive..." + "Talán vezetnem kéne..." ], "ds491": [ - "Let's go, wondergoon,", - "we'll take you to a safe place in the city!" + "Menjünk, csodafiam,", + "elvisszük egy biztonságos helyre a városban!" ], "ds492": [ - "Okay, ride's over, out you go!" + "Oké, vége az utazásnak, gyerünk!" ], "ds493": [ - "All aboard the Underground railroad!", - "Next stop: Your new safehouse!" + "Mind a földalatti vasút fedélzetén!", + "Következő állomás: Az Ön új védőháza!" ], "ds494": [ - "I believe this is your stop!" + "Azt hiszem, ez a te állomásod!" ], "ds495": [ - "Daxter's Freedom Fighter Taxi Service!", - "Hurry up, buddy, we ain't got all day." + "Daxter szabadságharcos taxiszolgálata!", + "Siess, haver, nincs egész napunk." ], "ds496": [ - "Home free, baby!", - "Don't forget to tell Torn how well we did!" + "Szabad haza, kicsim!", + "Ne felejtsd el elmondani Tornnak, milyen jól tettük!" ], "ds497": [ - "You looking for a lift, fighter boy?" + "Felvonót keresel, harcos fiú?" ], "ds498": [ - "Okay, this is where you get off. So... get off." + "Oké, itt szállj le. Szóval... szállj le." ], "ds499": [ - "We did it, Jak!", - "We got all the fighters to the new safehouses!" + "Megcsináltuk, Jak!", + "Az összes harcost az új biztonsági házakba juttattuk!" ], "ds500": [ - "Statues are becoming an endangered species around here." + "A szobrok egyre veszélyeztetett fajtá válnak errefelé." ], "ds501": [ - "I got us a talkbox.", - "The city people use these things to communicate", - "with each other." + "Hoztam nekünk egy talkboxot.", + "A városiak ezeket a dolgokat használják kommunikációra", + "egymással." ], "ds502": [ - "Let's go see Onin and her crazy monkey bird." + "Menjünk, nézzük meg Onint és őrült majommadarát." ], "ds503": [ - "I think we need to go back to the city, Jak." + "Azt hiszem, vissza kell mennünk a városba, Jak." ], "dsek001": [ - "Kid! Stay with him, Jak!" + "Kölyök! Maradj vele, Jak!" ], "dsek002": [ - "Catch up to them, Jak!" + "Fogd utol őket, Jak!" ], "dsek003": [ - "Where'd they go?!" + "Hová lettek?!" ], "dsek004": [ - "There they go again!" + "Tessék újra!" ], "dsek005": [ - "Uh oh, here comes trouble!" + "Ó, itt a baj!" ], "dsek006": [ - "More guards!?" + "Még több őr!?" ], "dsek007": [ - "Kid, please! You're killin' me!" + "Kölyök, kérlek! Megölsz engem!" ], "dsek008": [ - "Here, poochie, poochie..." + "Tessék, cica, kutyus..." ], "dsek009": [ - "There goes that crazy crocadog again...!" + "Megint megy az az őrült krokodog...!" ], "dsek010": [ - "Chase after the Kid!" + "Hajsz a kölyök után!" ], "dsek011": [ - "Keep up with the Kid!" + "Tartsatok a Kölyökkel!" ], "dsek012": [ - "Crocadog!" + "Krokodil!" ], "dsek013": [ - "Phew, finally... let's get these two to Kor!" + "Fú, végre... vigyük ezt a kettőt Kornak!" ], "ero001": [ - "Out of my way!" + "Félre az utamból!" ], "ero002": [ - "I own this track!" + "Az enyém ez a szám!" ], "ero003": [ - "Give it up, eco freak!" + "Add fel, öko-őrült!" ], "ero004": [ - "Payback time." + "Megtérülési idő." ], "ero005": [ - "Let's make this interesting!" + "Tegyük ezt érdekessé!" ], "ero006": [ - "Eat wall!" + "Egyél falat!" ], "ero007": [ - "Time to die!" + "Itt az idő meghalni!" ], "ero008": [ - "Move over!" + "Félreáll!" ], "ero009": [ - "Catch me now, loser!" + "Kapj el most, lúzer!" ], "ero010": [ - "I'm too fast for you!" + "Túl gyors vagyok neked!" ], "ero011": [ - "Now you're racing with the big boys!" + "Most a nagyfiúkkal versenyzel!" ], "ero012": [ - "Here's one for the Baron." + "Itt van egy a bárónak." ], "ero013": [ - "Take this!" + "Fogd!" ], "ero014": [ - "You're making this too easy!" + "Túl egyszerűvé teszed ezt!" ], "ero015": [ - "Hahaha, bye bye!" + "Hahaha, viszlát!" ], "ero016": [ - "You want some?" + "Kérsz ​​egy kicsit?" ], "ero017": [ - "Now you see why I never lose." + "Most már látod, miért nem veszítek soha." ], "ero018": [ - "The crowd loves me!" + "A tömeg szeret engem!" ], "ero019": [ "Ahh!" ], "ero020": [ - "Here's some pain!" + "Itt egy kis fájdalom!" ], "ero021": [ - "Try to erase these!" + "Próbáld meg ezeket törölni!" ], "ero022": [ - "How's your reflexes?" + "Milyenek a reflexeid?" ], "ero023": [ - "Too much for you?!" + "Túl sok neked?!" ], "ero024": [ - "Had enough?" + "Elég volt?" ], "ero025": [ - "Avoid this, smart-ass!" + "Ezt kerüld, okos segg!" ], "ero026": [ - "Say goodnight, eco freak!" + "Jó éjszakát, környezetbarát!" ], "ero027": [ - "You can't beat me!" + "Nem győzhetsz meg!" ], "ero028": [ - "I'd die before I let you win!" + "Meghalnék, mielőtt hagynám nyerni!" ], "ero029": [ - "This will be your last lap." + "Ez lesz az utolsó köröd." ], "ero030": [ - "Crash and burn!" + "Összeomlás és égés!" ], "ero031": [ - "To the end!" + "A végéig!" ], "ero032": [ - "Last lap to live!" + "Utolsó kör élni!" ], "ero033": [ - "Now we end this!" + "Most ennek véget vetünk!" ], "ero034": [ - "You won't see the finish line!" + "Nem fogod látni a célvonalat!" ], "ero035": [ - "DIE!" + "MEGHAL!" ], "ero036": [ - "Die!" + "Meghal!" ], "ero037": [ "Hahahaha!" ], "ero038": [ - "YEAH!" + "IGEN!" ], "ero039": [ "HA!" ], "ero040": [ - "NO!" + "NEM!" ], "ero041": [ - "NOOOOO!" + "NEEEE!" ], "ero042": [ - "AHHHHHH!" + "AHHHHH!" ], "ero043": [ - "Here we go." + "Essünk neki." ], "ero044": [ - "See you later." + "Később találkozunk." ], "ero045": [ - "Fool! You cannot defeat me." + "Bolond! Nem győzhetsz le engem." ], "ero046": [ - "You missed a ring." + "Kihagytál egy gyűrűt." ], "ero047": [ - "This race is mine!" + "Ez a verseny az enyém!" ], "ero048": [ - "You can never be as fast as me!" + "Soha nem lehetsz olyan gyors, mint én!" ], "ero049": [ - "Keira wants a real man." + "Keira igazi férfit akar." ], "ero050": [ - "Bad luck, old chap." + "Balszerencse, öreg fickó." ], "ero051": [ - "Nice try." + "Szép próbálkozás." ], "ero052": [ - "Move over!" + "Félreáll!" ], "ero053": [ - "Out of my way!" + "Félre az utamból!" ], "ero054": [ - "Coming through!" + "Átjön!" ], "ero055": [ - "Bye bye!" + "Viszlát!" ], "ero056": [ - "Here I come!" + "Itt jövök!" ], "ero057": [ - "Get used to watching my back!" + "Szokj rá a hátamra figyelni!" ], "ero058": [ - "This is my city, eco freak." + "Ez az én városom, környezetbarát." ], "ero059": [ - "Looking sloppy, Jak." + "Hanyagul nézel ki, Jak." ], "ero060": [ - "Give it up!" + "Add fel!" ], "ero061": [ - "Not this time." + "Ezúttal nem." ], "ero062": [ - "Getting a bit nervous?" + "Egy kicsit ideges?" ], "ero063": [ - "Come back here!" + "Gyere vissza!" ], "ero064": [ - "Move over, slowpoke!" + "Lépj arrébb, slowpoke!" ], "ero065": [ - "This is where I beat you." + "Itt vertelek meg." ], "ero066": [ - "Final stretch!" + "Utolsó nyújtás!" ], "ero067": [ - "It's over!" + "Vége!" ], "ero068": [ - "I own this city." + "Az enyém ez a város." ], "ero069": [ - "What? Where'd you come from?" + "Mit? honnan jöttél?" ], "ero070": [ - "You're just lucky." + "Csak szerencséd van." ], "ero071": [ - "You can't handle the speed!" + "Nem bírod a sebességet!" ], "ero072": [ - "Die, freak." + "Halj meg, korcs." ], "ero073": [ - "No!" + "Nem!" ], "ero074": [ - "STOP!" + "ÁLLJ MEG!" ], "ero075": [ "Hahahaha!" @@ -3215,59 +3215,59 @@ "Ahhh!" ], "ero078": [ - "Ough!" + "Jaj!" ], "ero079": [ - "Oof!" + "Hoppá!" ], "ero080": [ - "Beat it, freak!" + "Győzd le, korcs!" ], "ero081": [ - "Care to get back in the chair?" + "Szeretnél visszaülni a székbe?" ], "ero082": [ - "This race was too easy." + "Ez a verseny túl könnyű volt." ], "ero083": [ - "It was easier than I thought to beat you." + "Könnyebb volt legyőzni téged, mint gondoltam." ], "ero084": [ - "Not even close, Keira's betting on the wrong man." + "Még csak közel sem, Keira rossz emberre tippel." ], "ero085": [ - "Loser! You disgust me!" + "Vesztes! Undorodom tőled!" ], "ero086": [ - "You see Jak, I win, and I get what I want.", - "Someday I will be Baron, then the city will really pay!" + "Látod Jak, én nyerek, és megkapom, amit akarok.", + "Egyszer én leszek báró, akkor tényleg fizet a város!" ], "ero087": [ - "I should have known you'd be no match." + "Tudnom kellett volna, hogy nem leszel párja." ], "ero088": [ - "I win, Keira's going to love me!" + "Én nyerek, Keira szeretni fog!" ], "ero089": [ - "Maybe you should go back to wherever you came from." + "Talán vissza kellene menned oda, ahonnan jöttél." ], "ero090": [ - "I'll get a victory kiss from Keira later." + "Később kapok egy győzelmi puszit Keirától." ], "ero091": [ - "Again I prove my superiority." + "Ismét bebizonyítom felsőbbrendűségemet." ], "ero092": [ - "You see? You are no match for me." + "Látod? Nem vagy párom számomra." ], "ero093": [ - "Too bad, I win!" + "Kár, én nyerek!" ], "ero094": [ - "Hahahaha, pathetic insect, I win!" + "Hahahaha, szánalmas rovar, én nyerek!" ], "ero095": [ - "You can never defeat me!" + "Soha nem győzhetsz le!" ], "ero096": [ "Ahhh!...ahh." @@ -3279,16 +3279,16 @@ "Ughhh!" ], "ero099": [ - "Dahh!" + "Igen!" ], "ero100": [ - "Yaughh!" + "Yaugh!" ], "ero101": [ "AUGHH!" ], "ero102": [ - "OW!" + "Ó!" ], "ero103": [ "DAHHH!" @@ -3297,455 +3297,455 @@ "DAUGHH!" ], "erol001": [ - "I'm looking for you, eco freak,", - "and when I find you, you'll wish you died in prison." + "Téged kereslek, környezetbarát,", + "és ha megtalállak, azt kívánod, bárcsak meghalnál a börtönben." ], "erol002": [ - "This is Erol. Looks like you're running out of friends.", - "We've arrested them all and thrown them into your", - "favorite prison. By the way, that blonde girl Tess", - "screamed so delightfully when she was arrested.", - "I can't wait for her turn in the chair.", - "Hahahahaha...." + "Ez Erol. Úgy tűnik, kifogytak a barátaid.", + "Mindet letartóztattuk, és a tiédbe dobtuk", + "kedvenc börtön. Egyébként az a szőke lány Tess", + "– sikoltott olyan elragadóan, amikor letartóztatták.", + "Alig várom, hogy sorra kerüljön a székben.", + "Ha ha ha ha ha...." ], "erol003": [ - "This is Erol. Just remember, the only reason I'm letting you", - "walk is so I can face you in the championship race!" + "Ez Erol. Ne feledd, ez az egyetlen ok, amiért megengedem", + "sétálni, hogy szembenézhessek veled a bajnoki versenyen!" ], "hal001": [ - "Quiet! Here comes pretty boy." + "Csendes! Jön a szép fiú." ], "hal002": [ - "'Bout time you showed up. Okay, let's do this." + "– Hamarosan megjelentél. Oké, tegyük ezt." ], "hal003": [ - "Krew said you'll protect us all the way to the statue." + "Krew azt mondta, megvédel minket egészen a szoborig." ], "hal004": [ - "We go down!" + "Lemegyünk!" ], "hal006": [ - "This way!" + "Ily módon!" ], "hal007": [ - "AHH! It's a Metal Head! Shoot it, shoot it!" + "AHH! Ez egy fémfej! Lődd le, lődd le!" ], "hal008": [ - "Stay with us!" + "Maradj velünk!" ], "hal009": [ - "Man, Krew's gonna be pissed if you mess this up." + "Ember, Krew mérges lesz, ha elrontod ezt." ], "hal010": [ - "Don't leave us to die!" + "Ne hagyj minket meghalni!" ], "hal011": [ - "You ditch us and Krew's gonna mess you up!" + "Elhagysz minket, és Krew összezavar!" ], "hal012": [ - "We need to stay together." + "Együtt kell maradnunk." ], "hal013": [ - "I thought this guy was supposed to be protecting us!" + "Azt hittem, ennek a fickónak meg kell védenie minket!" ], "hal014": [ - "That's it! We're calling the mission off,", - "we don't go until you're serious." + "Ez az! Leállítjuk a küldetést,", + "nem megyünk, amíg nem gondolod komolyan." ], "hal015": [ - "I'm not getting killed because of this loser,", - "this mission is over." + "Nem fogok megölni a vesztes miatt,", + "ennek a küldetésnek vége." ], "hal019": [ - "Let's go back before we all get killed." + "Menjünk vissza, mielőtt mindannyiunkat megölnek." ], "hal020": [ - "Ugh, this place stinks." + "Jaj, ez a hely büdös." ], "hal021": [ - "I got a bad feeling about this place." + "Rossz előérzetem volt ezzel a hellyel kapcsolatban." ], "hal022": [ - "Uh oh, I think I wet myself." + "Ó, azt hiszem, megnedvesítettem magam." ], "hal023": [ - "No! Please!" + "Nem! Kérem!" ], "hal024": [ - "I wanna go home." + "Haza akarok menni." ], "hal025": [ - "Uhh, I'm hearing things." + "Uhh, hallok dolgokat." ], "hal026": [ - "Let's go back." + "Menjünk vissza." ], "hal027": [ - "Move your butts, or I'll move 'em for ya!" + "Mozgasd a feneked, különben megmozgatom helyetted!" ], "hal028": [ - "This job beats being a garbage man." + "Ez a munka felülmúlja a szemetes létet." ], "hal029": [ - "Ain't the smell of sulphur grand?" + "Nem nagy a kén szaga?" ], "hal030": [ - "Cover your ears!" + "Takard be a füledet!" ], "hal031": [ - "I love this job." + "Imádom ezt a munkát." ], "hal032": [ - "Great, now we're trapped in this slime pit!" + "Remek, most ebben a nyálkagödörben vagyunk!" ], "hal033": [ - "Shoot, baby, shoot!" + "Lőj, bébi, lőj!" ], "hal034": [ - "Ahh! The ceiling's crawling!" + "Ahh! Kúszik a mennyezet!" ], "hal035": [ - "I can't get away!" + "Nem tudok megszökni!" ], "hal036": [ - "There's one coming right at me!" + "Egy pont felém jön!" ], "hal037": [ - "It sees me!" + "Engem lát!" ], "hal038": [ - "Ahh! Stay away!" + "Ahh! Maradj távol!" ], "hal039": [ - "It's hitting me!" + "Megüt!" ], "hal040": [ - "Gahh, I'm gonna die here!" + "Gahh, itt fogok meghalni!" ], "hal041": [ - "I'm getting zapped!" + "Kezdek becsapni!" ], "hal042": [ - "This'll be the end of me!" + "Ez lesz a végem!" ], "hal043": [ - "Help me! I've got eight kids to feed!" + "Segíts! Nyolc gyerekem van etetnem!" ], "hal044": [ - "Nice work, those were some nasty Metal Heads." + "Szép munka, csúnya fémfejek voltak." ], "hal045": [ - "There you are, why don't you make yourself useful?" + "Tessék, miért nem teszed magad hasznossá?" ], "hal046": [ - "Keep moving!" + "Mozogj!" ], "hal047": [ - "On we go, we're not getting any younger." + "Mi megyünk, nem leszünk fiatalabbak." ], "hal048": [ - "Ahh! They're crawling down the walls!" + "Ahh! Lemásznak a falakon!" ], "hal049": [ - "Way to go, this is where I come in." + "Na jó, itt lépek be." ], "hal050": [ - "You mean cover your ass! Fire in the hole!" + "Úgy érted, takard el a segged! Tűz a lyukba!" ], "hal051": [ - "You better keep your head down, sugar." + "Inkább hajtsd le a fejed, cukor." ], "hal052": [ - "Your bad breath, let's move." + "Rossz leheleted, menjünk." ], "hal053": [ - "That straightened your hair, huh?", - "Hehe, next time you'll listen to me. Okay, let's move." + "Ez megigazította a hajad, mi?", + "Hehe, legközelebb hallgatsz rám. Oké, menjünk." ], "hal054": [ - "Oof, that had to hurt.", - "I told you to keep back, but no one ever listens to Jinx." + "Ó, ennek fájnia kellett.", + "Mondtam, hogy maradj vissza, de soha senki nem hallgat Jinxre." ], "hal055": [ - "More of those monsters!" + "Még több ilyen szörnyeteg!" ], "hal056": [ - "So what, we got a dream team here. Do your stuff, Jak!" + "Szóval van itt egy álomcsapat. Tedd a dolgod, Jak!" ], "hal057": [ - "Jak! Get your butt up here and do your thing." + "Jak! Tedd fel ide a segged és tedd a dolgod." ], "hal058": [ - "Take 'em out, blue boy." + "Vedd ki őket, kék fiú." ], "hal059": [ - "You're pretty handy with that iron, blondie." + "Nagyon ügyes vagy ezzel a vasalóval, szőke." ], "hal060": [ - "Shut up, Mog." + "Fogd be, Mog." ], "hal061": [ - "Here they come again!" + "Itt jönnek újra!" ], "hal062": [ - "Get up here and earn your keep!" + "Kelj fel ide, és szerezd meg a tartásod!" ], "hal063": [ - "Krew was right about you. You got the magic, man." + "Krew-nak igaza volt veled kapcsolatban. Megvan a varázslat, ember." ], "hal064": [ - "Nice fighting, man, I'm beginning to like you." + "Szép harc, haver, kezdek megkedvelni téged." ], "hal065": [ - "Okay... that doesn't look good. Jak, you're up!" + "Oké... ez nem néz ki jól. Jak, felkeltél!" ], "hal066": [ - "Wow! Beams of death!", - "I'm staying right here 'til you do something about that." + "Azta! A halál sugarai!", + "Itt maradok, amíg nem teszel valamit." ], "hal067": [ - "Uhhh, Jak. I think you're the man for this job." + "Uhhh, Jak. Szerintem te vagy a megfelelő ember erre a munkára." ], "hal068": [ - "Jump the beams, Jak." + "Ugrás a gerendákra, Jak." ], "hal069": [ - "Nice moves." + "Szép mozdulatok." ], "hal070": [ - "Yeah... you wish, tubby." + "Igen... szeretnéd, tubby." ], "hal071": [ - "We're staying put 'til you take out those Metal Heads." + "Addig maradunk, amíg ki nem szeded azokat a fémfejeket." ], "hal072": [ - "Sweet as a ballerina, hehehehe..." + "Édes, mint egy balerina, hehehehe..." ], "hal073": [ - "Knock 'em silly, Jak!" + "Üsd be őket, Jak!" ], "hal074": [ - "This one's gonna be loud!" + "Ez hangos lesz!" ], "hal075": [ - "This is too easy." + "Ez túl könnyű." ], "hal080": [ - "We ain't moving, 'til you kill 'em all!" + "Addig nem mozdulunk, amíg meg nem ölöd őket!" ], "hal081": [ - "OK, let's get out of here before more come back." + "Oké, menjünk innen, mielőtt többen jönnek vissza." ], "hal082": [ - "You're earning your dough today. Let's finish this!" + "Ma megkeresed a tésztát. Ezt fejezzük be!" ], "hal083": [ - "I'm impressed, Jak. I'll put in a good word with the boss." + "Le vagyok nyűgözve, Jak. Majd szólok egy jó szót a főnökkel." ], "hal084": [ - "Yeah, do it, Jinx." + "Igen, csináld, Jinx." ], "hal085": [ - "Man, Jinx, what'd you put in those boomsticks?" + "Ember, Jinx, mit tettél azokba a boombotokba?" ], "hal086": [ - "Look at him go." + "Nézz rá, menj." ], "hal087": [ - "I could jump like that." + "tudnék így ugrani." ], "hal088": [ - "Get away from me, you crazy monster!" + "Távozz tőlem, te őrült szörnyeteg!" ], "hal090": [ - "This is where I come in, cover your ears." + "Itt jövök be, zárja be a fülét." ], "hal091": [ - "Fire in the hole!" + "Tűz a lyukba!" ], "hal092": [ - "And on we go." + "És megyünk." ], "hal093": [ - "Please, allow me." + "Kérem, engedje meg." ], "hal094": [ - "One unclogged sewer, comin' up." + "Egy eldugulatlan csatorna jön fel." ], "hal095": [ - "This is my boomshtick!" + "Ez az én boomstickem!" ], "hal096": [ - "Boom, baby!" + "Bumm, kicsim!" ], "hal097": [ - "We're clear, let's move." + "Tisztában vagyunk, lépjünk." ], "hal101": [ - "Ahh! That's gonna leave a mark." + "Ahh! Ez nyomot hagy." ], "hal102": [ - "Die! A little help would be good!" + "Meghal! Jól jönne egy kis segítség!" ], "hal103": [ - "Watch it, pretty boy, or I'll rearrange your face." + "Figyelj, szépfiú, különben átrendezem az arcodat." ], "hal104": [ - "You got an itchy trigger finger." + "Viszkető ravaszt ujjad van." ], "hal107": [ - "Piece of cake." + "Szelet torta." ], "hal108": [ - "Get over here, Jak!" + "Gyere ide, Jak!" ], "hal109": [ - "Stay close, pretty boy!" + "Maradj közel, szépfiú!" ], "hal111": [ - "Keep with us, tough guy!" + "Tarts velünk, kemény fickó!" ], "hal112": [ - "You're in the way, Jak, move!" + "Az útban vagy, Jak, mozdulj!" ], "hal113": [ - "I wouldn't stand there if I were you!" + "Én a helyedben nem állnék ott!" ], "hal114": [ - "This is gonna be loud." + "Ez hangos lesz." ], "hal115": [ - "Oh!" + "Ó!" ], "hal116": [ - "Oh!" + "Ó!" ], "hal117": [ - "Hey!" + "Hé!" ], "hal118": [ - "It's a trap!" + "Ez egy csapda!" ], "hal119": [ - "Yeah, why did we sign up for this?" + "Igen, miért regisztráltunk erre?" ], "hal120": [ - "I got 30 keys of high explosives strapped to my back...", - "Great..." + "30 kulcsnyi robbanóanyag van a hátamra szíjazva...", + "Nagy..." ], "hal121": [ - "Just shut your whiny traps and keep moving." + "Csak zárd be a nyüszítő csapdáidat, és mozogj tovább." ], "hal122": [ - "Uh, do we have to?" + "Ó, muszáj?" ], "hal123": [ - "Uhh, did you hear that?" + "Uhh, hallottad?" ], "hal124": [ - "We are so dead, man." + "Annyira halottak vagyunk, ember." ], "hal125": [ - "Shut up! I'll go ahead and check it out..." + "Fogd be! Megyek és megnézem..." ], "hal126": [ - "Man, that thing's ugly." + "Ember, ez csúnya dolog." ], "hal127": [ - "Get him, man, before he gets us." + "Kapd el, ember, mielőtt elkap minket." ], "hal128": [ - "They're coming up from behind, too!" + "Hátulról is jönnek fel!" ], "hal129": [ - "Jak's my hero." + "Hogy van a hősöm?" ], "hal130": [ - "Sounds like I got gas." + "Úgy hangzik, mintha gázt kaptam volna." ], "hal131": [ - "I hate Krew." + "Utálom Krew-t." ], "hal132": [ - "I'm sure not going back that way!" + "Biztosan nem megyek vissza arra az útra!" ], "hal133": [ - "It's coming for me!" + "Nekem jön!" ], "hal134": [ - "I think it wants me!" + "Szerintem engem akar!" ], "hal135": [ - "Help me, Jak!" + "Segíts, Jak!" ], "hal136": [ - "I'm gonna die!" + "Meg fogok halni!" ], "hal137": [ - "It got me!" + "Megfogott!" ], "hal138": [ - "Jak! Save me!" + "Hogyan! Ments meg!" ], "hal139": [ - "Ughh! It got me!" + "Ughh! Megfogott!" ], "hal140": [ - "Oughh! That beam smarts." + "Óóó! Az a gerenda okosság." ], "hal141": [ - "I've been shot!" + "Engem lelőttek!" ], "hal142": [ - "I'm hit!" + "Elütöttem!" ], "hal143": [ - "Ughh!" + "Ugh!" ], "hal144": [ - "Ughh! Help me!" + "Ughh! Segíts!" ], "hal145": [ - "Hey man, watch it!" + "Hé ember, figyelj!" ], "hal146": [ - "Ohh, hit me again and I'll pound you!" + "Óh, üss meg még egyszer, és megverlek!" ], "hal147": [ - "Nobody's my friend..." + "Senki sem a barátom..." ], "hal148": [ - "Oof!" + "Hoppá!" ], "hal149": [ - "Uh!" + "Ó!" ], "hal150": [ "Ahh!" ], "hal151": [ - "He's got me!" + "Elkapott engem!" ], "hal152": [ - "Gahh!! Not again!" + "Gah!! Újra ne!" ], "hal153": [ - "I'm dying!" + "Haldoklom!" ], "hal154": [ - "Any more like that, then I'm history." + "Ha még ilyen, akkor történelem leszek." ], "hal155": [ - "I'm getting shot!" + "Engem lelőnek!" ], "hal156": [ - "Sure! Why don't you kill me too?" + "Biztos! Miért nem ölsz meg engem is?" ], "hal157": [ - "Check your targets, wimp boy!" + "Ellenőrizd a célpontokat, bolond fiú!" ], "hal158": [ - "Shoot the shine-heads, not me!" + "Lődd le a fényes fejeket, ne én!" ], "hal159": [ "Ahh!" @@ -3754,1961 +3754,1961 @@ "Ugh!" ], "hal162": [ - "Oh!" + "Ó!" ], "hal163": [ - "Oh!" + "Ó!" ], "hal164": [ "Ah!" ], "hal165": [ - "Look out!" + "Vigyázz!" ], "hal166": [ - "We're not doing this with a rookie, I'm calling this off!" + "Ezt nem egy újoncsal csináljuk, ezt leállítom!" ], "hal167": [ - "That's it, we're done! Come back when you're serious." + "Ennyi, végeztünk! Gyere vissza, ha komolyan gondolod." ], "hal168": [ - "I'm cornered!" + "sarokba vagyok szorítva!" ], "hal169": [ - "It's gonna shoot me!" + "Le fog lőni!" ], "hal170": [ - "Jak! Do something!" + "Jak! Csinálj valamit!" ], "hal171": [ - "Ahh! It got me!" + "Ahh! Megfogott!" ], "hal172": [ - "No no no! Help!" + "Nem nem nem! Segítség!" ], "hal173": [ - "They're getting too close, Jak!" + "Túl közel járnak, Jak!" ], "hal174": [ - "It's gonna get me!" + "Meg fog kapni!" ], "hal175": [ - "I'm getting killed here!" + "Engem itt ölnek meg!" ], "hal176": [ - "Jak! I'm about to be metal meat!" + "Jak! Mindjárt fémhús leszek!" ], "hal177": [ - "Aghh! That beam burns!" + "Aghh! Ég az a sugár!" ], "hal178": [ - "It's shooting me!" + "Engem lő!" ], "hal179": [ - "Watch out for the beam!" + "Vigyázz a gerendára!" ], "hal180": [ - "I'm shot!" + "le vagyok lőve!" ], "hal181": [ - "I'm trapped!" + "Csapdába estem!" ], "hal182": [ - "Get back... I'm gonna detonate this one remotely." + "Menj vissza... Távolról felrobbantom ezt." ], "hal183": [ "He-hah!" ], "hal184": [ - "Alright!" + "Rendben!" ], "hal185": [ - "Let's go!" + "Gyerünk!" ], "hal186": [ - "Move it!" + "Mozgatni!" ], "hal187": [ - "That's a lot of Metal Heads." + "Ez a sok fémfej." ], "hal188": [ - "Oof!" + "Hoppá!" ], "hal189": [ "Daghh!" ], "hal190": [ - "Oughh..." + "uhh..." ], "hal191": [ - "Krew's dead for getting me into this!" + "Krew meghalt, amiért belerántott ebbe!" ], "jak001": [ - "Alright!" + "Rendben!" ], "jak002": [ - "Yeah!" + "Igen!" ], "jak003": [ - "Wooo!" + "Hú!" ], "jak004": [ - "Here we go!" + "Essünk neki!" ], "jak005": [ - "Nice!" + "Szép!" ], "jak006": [ "Rock 'n roll!" ], "jak007": [ - "Right on!" + "Közvetlenül!" ], "jak008": [ - "Cool!" + "Menő!" ], "jak009": [ - "Cool!" + "Menő!" ], "jak010": [ - "Oh, yeah!" + "Ó igen!" ], "jak011": [ - "Comin' through!" + "Átmegy!" ], "jak012": [ - "Look out!" + "Vigyázz!" ], "jak013": [ - "Last lap!" + "Utolsó kör!" ], "jak014": [ - "Watch out!" + "Vigyázz!" ], "jak015": [ - "Whoa!" + "Hú!" ], "jak016": [ - "Whoa!" + "Hú!" ], "jak017": [ - "Hold on, Dax!" + "Tarts ki, Dax!" ], "jak018": [ - "Hang on, Dax!" + "Várj, Dax!" ], "jak020": [ - "Whoa... boy that was close." + "Hú... fiú, aki közel volt." ], "jak021": [ - "No!" + "Nem!" ], "jak022": [ - "Not this time." + "Ezúttal nem." ], "jak023": [ "Huargh!" ], "jak024": [ - "Lean, baby, lean!" + "Sovány, bébi, sovány!" ], "jak025": [ - "Catch him on the inside!" + "Fogd meg belülről!" ], "jak026": [ - "This is MY show!" + "Ez az ÉN műsorom!" ], "jak027": [ - "Haha, we got him!" + "Haha, megkaptuk!" ], "jak028": [ - "Watch out!" + "Vigyázz!" ], "jak029": [ - "You're dead, Erol!" + "Meghaltál, Erol!" ], "jak030": [ - "See ya!" + "Szia!" ], "jak031": [ "Haha!" ], "jak032": [ - "Wooo!" + "Hú!" ], "jak033": [ - "Last lap!" + "Utolsó kör!" ], "jak034": [ - "Later." + "A későbbiekben." ], "jak035": [ - "We gotta catch up!" + "utol kell érnünk!" ], "jak036": [ - "There he is!" + "Ott van!" ], "jak037": [ - "Come on, baby, show me what you got!" + "Gyerünk, kicsim, mutasd meg, mit kaptál!" ], "jak038": [ - "Here we go!" + "Essünk neki!" ], "jak039": [ "Urgh!" ], "jak040": [ - "I'll take this." + "ezt elviszem." ], "jak041": [ - "I need to borrow this." + "Ezt kölcsön kell vennem." ], "jak042": [ - "Move over, buddy!" + "Menj át, haver!" ], "jak044": [ - "Outta the vehicle!" + "Ki a járműből!" ], "jak045": [ - "Outta my way, buddy!" + "Menj el az utamból, haver!" ], "jak046": [ - "Thanks for the lift." + "Köszönöm a liftet." ], "jak047": [ - "Mind if I drive?" + "Nem baj, ha vezetek?" ], "jak048": [ - "I like the color of this vehicle." + "Tetszik ennek a járműnek a színe." ], "jak049": [ - "Mine now." + "Az enyém most." ], "jak050": [ - "'Scuse me, but I need this." + "– Elnézést, de szükségem van erre." ], "jak051": [ - "Take a hike, buddy!" + "Túrázz, haver!" ], "jak052": [ - "Try walking." + "Próbálj meg sétálni." ], "jak053": [ - "Sorry, but I'm in a hurry!" + "Elnézést, de sietek!" ], "jak054": [ - "Gotta go!" + "Mennem kell!" ], "jak055": [ - "Get another vehicle!" + "Vegyél másik járművet!" ], "jak056": [ - "Road hog!" + "Úti disznó!" ], "jak057": [ - "Brake yourself!" + "Fékezze magát!" ], "jak059": [ - "Haha, you want some?" + "Haha, kérsz egy kicsit?" ], "jak060": [ - "Get some!" + "Szerezz!" ], "jak061": [ - "Yeah, feel it!" + "Igen, érezd!" ], "jak062": [ - "Die!" + "Meghal!" ], "jak063": [ - "Badass comin' through!" + "A barom jön át!" ], "jak064": [ - "Be afraid. Be very afraid." + "Félni. Nagyon félj." ], "jak065": [ - "Oooh, that's gotta hurt." + "Óóó, ez fájni kell." ], "jak066": [ - "This is payback." + "Ez a megtérülés." ], "jak067": [ - "DIE, Praxis!" + "A gyakorlat!" ], "jak068": [ - "You're finished, Kor!" + "Vége van, Kor!" ], "jak069": [ - "This is my town, Kor!" + "Ez az én városom, Kor!" ], "jak070": [ - "Surprise... you can't kill me in my dark form." + "Meglepetés... nem ölhetsz meg sötét alakomban." ], "jak071": [ - "Now you pay!" + "Most fizetsz!" ], "jak072": [ - "Go back to the past, Kor! 'Cause you're history." + "Menj vissza a múltba, Kor! Mert te történelem vagy." ], "jak073": [ - "I win." + "Nyerek." ], "jak074": [ - "You should have killed me when you had the chance, Praxis." + "Meg kellett volna ölnöd, amikor volt rá lehetőséged, Praxis." ], "jak075": [ - "Daxter, just shut up and watch my back." + "Daxter, csak fogd be, és vigyázz a hátamra." ], "jak076": [ - "Whatever, Daxter." + "Mindegy, Daxter." ], "jak077": [ - "Will you stop yappin'?" + "Abbahagyod a nyavalygást?" ], "jak078": [ - "When you got smaller, so did your brain." + "Amikor kisebb lettél, az agyad is kisebb lett." ], "jak079": [ - "You're on MY shoulder. YOU'RE the sidekick." + "A vállamon vagy. TE vagy a segéd." ], "jak080": [ - "As long as you're on MY shoulder, keep your mouth shut." + "Amíg a vállamon vagy, tartsd be a szád." ], "jd001": [ - "Hey, kid! Wait! Come back!", - "We gotta protect him!" + "Hé kölyök! Várjon! Gyere vissza!", + "Meg kell védenünk őt!" ], "jk001": [ - "Wait, KID!" + "Várj, GYERMEK!" ], "jk002": [ - "There he goes!" + "Tessék!" ], "jk003": [ - "Leave him alone!" + "Hagyják békén!" ], "jk004": [ - "KID!" + "KÖLYÖK!" ], "jk005": [ - "Pick on someone your own size!" + "Válassz valakit a saját méretedből!" ], "jk006": [ - "Kid, look out!" + "Gyerek, vigyázz!" ], "jk007": [ - "How do YOU like it when somebody fights back?" + "NEKED hogy tetszik, ha valaki visszavág?" ], "jk008": [ - "Leave the kid alone!" + "Hagyd békén a gyereket!" ], "jk009": [ - "He's just a kid!" + "Ő még csak egy gyerek!" ], "jk010": [ - "Keep away from him!" + "Tartsd magad távol tőle!" ], "jk011": [ - "Now you've pissed me off!" + "Most feldühítettél!" ], "jk012": [ - "Eat this!" + "Edd meg ezt!" ], "jk013": [ - "Back off!" + "Hátrálj!" ], "jk014": [ - "We gotta get in the vehicle with the Kid!" + "Be kell szállnunk a gyerekkel a járműbe!" ], "jk015": [ - "Hold on!" + "Kitartás!" ], "jk016": [ - "Keep your head down, Kid!" + "Le a fejed, kölyök!" ], "jk017": [ - "Stick with me, Kid, and you'll be safe." + "Maradj velem, kölyök, és biztonságban leszel." ], "jk018": [ - "Stay with me, Kid!" + "Maradj velem, kölyök!" ], "jk019": [ - "Get in the vehicle, Dax!" + "Szállj be a járműbe, Dax!" ], "kei001": [ - "You can get on and off the JET-Board at any time." + "Bármikor fel- és leszállhat a JET-Board-ra." ], "kei002": [ - "You can jump on your JET-Board!" + "Felugorhat a JET-Boardra!" ], "kei003": [ - "Jump up on that ledge." + "Ugorj fel arra a párkányra." ], "kei004": [ - "Try jumping up on that crate." + "Próbálj felugrani arra a ládára." ], "kei005": [ - "Jump over that obstacle." + "Ugord át az akadályt." ], "kei006": [ - "You can get a higher jump by ducking before you jump!" + "Magasabb ugrást érhetsz el, ha ugrás előtt lebukik!" ], "kei007": [ - "Try doing a duck jump over that obstacle." + "Próbálj meg egy kacsaugrást átugrani az akadályon." ], "kei008": [ - "Jump and jump again a little after you've landed", - "for an even bigger launch!" + "Ugorj és ugorj újra egy kicsit, miután leszálltál", + "a még nagyobb indításért!" ], "kei009": [ - "Try getting up on that higher ledge with a boost jump!" + "Próbálj meg egy lendületes ugrással felállni a magasabb párkányra!" ], "kei010": [ - "You can spin in the air!" + "Pöröghetsz a levegőben!" ], "kei011": [ - "Land a perfect 360 for a speed boost!" + "Tökéletes 360 fokos sebességnöveléshez!" ], "kei012": [ - "Nice spin!" + "Szép pörgés!" ], "kei013": [ - "You can land on a rail and grind across it." + "Leszállhat egy sínre, és átköszörülheti rajta." ], "kei014": [ - "Try grinding on that rail." + "Próbálj meg csiszolni azon a sínen." ], "kei016": [ - "You can do flips while you jump!" + "Ugrás közben megfordíthatod!" ], "kei017": [ - "You can also do tricks for fun." + "Szórakozásból is trükközhet." ], "kei018": [ - "Try to put a number of moves together to get points." + "Próbáljon meg több lépést összerakni, hogy pontokat szerezzen." ], "kei019": [ - "Get enough points to win the challenge!" + "Szerezz elég pontot a kihívás megnyeréséhez!" ], "kei020": [ - "Not enough points! Work on your moves." + "Nincs elég pont! Dolgozz a mozdulatokon." ], "kei021": [ - "Good job!" + "Szép munka!" ], "kei022": [ - "Close, but not quite there." + "Közel, de nem egészen ott." ], "kei023": [ - "Try again." + "Próbáld újra." ], "kei024": [ - "A little more work and you just might win!" + "Még egy kis munka és nyerhetsz!" ], "kei025": [ - "No good! Not enough points." + "Nem jó! Nincs elég pont." ], "kei026": [ - "The Underground said you needed some help,", - "you won't be able to catch those Metal Heads in the", - "Forest on foot so I've left my JET-Board at the airlock", - "near the city exit. Since you're helping the Underground,", - "I'll even let you keep it!" + "Az Underground azt mondta, segítségre van szüksége,", + "nem fogja tudni elkapni azokat a fémfejeket", + "Erdő gyalog, így a JET-Board-omat a légzsilipnél hagytam", + "a városi kijárat közelében. Mivel segítesz az Undergroundnak,", + "Még azt is megengedem, hogy megtartsd!" ], "kei027": [ - "Jak, this is Keira. Don't forget - I still need two artifacts", - "to make the Rift Rider work! I need the Time Map and the", - "Heart of Mar Energy Gem, or we're not going anywhere!" + "Jak, ő Keira. Ne felejtsd el, még mindig szükségem van két műtárgyra", + "hogy a Rift Rider működjön! Szükségem van az Időtérképre és a", + "Heart of Mar Energy Gem, különben nem megyünk sehova!" ], "kei028": [ - "I still need those two artifacts or this pile of junk", - "won't move one city block, much less through the Rift", - "and back to our own time!", - "You've got to find the Heart of Mar and the Time Map", - "or we're stuck!" + "Még mindig szükségem van arra a két műtárgyra vagy erre a halom szemétre", + "egy várostömböt sem költözik, még kevésbé a Hasadékon keresztül", + "és vissza a saját korunkba!", + "Meg kell találnia Mar szívét és az időtérképet", + "vagy elakadtunk!" ], "kei029": [ - "This is Keira. Thanks for getting the artifacts, guys.", - "It's strange... the Time Map had a bunch of old coordinates", - "in it. Come see me at the Stadium." + "Ő Keira. Köszönöm, hogy megkaptad a műtárgyakat, srácok.", + "Furcsa... az Időtérképen volt egy csomó régi koordináta", + "benne. Gyere el hozzám a Stadionba." ], "kg001": [ - "Call for backup!" + "Hívjon tartalékért!" ], "kg001a": [ - "Call for backup!" + "Hívjon tartalékért!" ], "kg002": [ - "Freeze!" + "Fagy!" ], "kg002a": [ - "Freeze!" + "Fagy!" ], "kg004": [ - "Halt!" + "Állj!" ], "kg004a": [ - "Halt!" + "Állj!" ], "kg005": [ - "Get more cruisers in here!" + "Szerezz még több cirkálót ide!" ], "kg005a": [ - "Get more cruisers in here!" + "Szerezz még több cirkálót ide!" ], "kg006": [ - "Surrender!" + "Megadás!" ], "kg006a": [ - "Surrender!" + "Megadás!" ], "kg007": [ - "This is a no-hover zone!" + "Ez egy lebegés tilos zóna!" ], "kg007a": [ - "This is a no-hover zone!" + "Ez egy lebegés tilos zóna!" ], "kg008": [ - "Pull over!" + "Húzd át!" ], "kg008a": [ - "Pull over!" + "Húzd át!" ], "kg009": [ - "Say good night!" + "Mondj jó éjszakát!" ], "kg010": [ - "Seal off the area." + "Zárja le a területet." ], "kg011": [ - "Stop the vehicle!" + "Állítsa meg a járművet!" ], "kg011a": [ - "Stop the vehicle!" + "Állítsa meg a járművet!" ], "kg012": [ - "You're under arrest!" + "Le vagy tartóztatva!" ], "kg012a": [ - "You're under arrest!" + "Le vagy tartóztatva!" ], "kg013": [ - "You there!" + "Te ott!" ], "kg014": [ - "You want some?!" + "Akarsz egyet?!" ], "kg015": [ - "This area is off-limits." + "Ez a terület tiltott." ], "kg016": [ - "Stop!" + "Állj meg!" ], "kg018": [ - "Hey!" + "Hé!" ], "kg019": [ - "We do this the easy way, or the hard way." + "Ezt a könnyebb vagy a nehezebb módon tesszük." ], "kg020": [ - "Slow down!" + "Lassíts!" ], "kg020a": [ - "Slow down!" + "Lassíts!" ], "kg021": [ - "Move over!" + "Félreáll!" ], "kg021a": [ - "Move over!" + "Félreáll!" ], "kg022": [ - "Call in more Hellcats!" + "Hívjon több Hellcat-ot!" ], "kg023": [ - "Requesting backup!" + "Biztonsági mentés kérése!" ], "kg023a": [ - "Requesting backup!" + "Biztonsági mentés kérése!" ], "kg024": [ - "Suspect on foot!" + "Gyanús gyalog!" ], "kg024a": [ - "Suspect on foot!" + "Gyanús gyalog!" ], "kg025": [ - "Suspect in vehicle!" + "Gyanúsított a járműben!" ], "kg025a": [ - "Suspect in vehicle!" + "Gyanúsított a járműben!" ], "kg026": [ - "Suspect fleeing into sector five!" + "A gyanúsított az ötös szektorba menekül!" ], "kg026a": [ - "Suspect fleeing into sector five!" + "A gyanúsított az ötös szektorba menekül!" ], "kg027": [ - "Suspect moving to sector six!" + "A gyanúsított a hatodik szektorba költözik!" ], "kg027a": [ - "Suspect moving into sector six!" + "A gyanúsított a hatodik szektorba költözik!" ], "kg028": [ - "High-speed chase in sector four!" + "Nagy sebességű üldözés a negyedik szektorban!" ], "kg028a": [ - "High-speed chase in sector four!" + "Nagy sebességű üldözés a negyedik szektorban!" ], "kg029": [ - "Checking sector three." + "Harmadik szektor ellenőrzése." ], "kg029a": [ - "Checking sector three." + "Harmadik szektor ellenőrzése." ], "kg030": [ - "Patrolling sector nine." + "Járőrözési szektor kilenc." ], "kg030a": [ - "Patrolling sector nine." + "Járőrözési szektor kilenc." ], "kg031": [ - "Be advised, I'm on foot." + "Tájékoztatjuk, gyalog vagyok." ], "kg031a": [ - "Be advised, I'm on foot." + "Tájékoztatjuk, gyalog vagyok." ], "kg032": [ - "Moving to next sector." + "Átlépés a következő szektorba." ], "kg032a": [ - "Moving to next sector." + "Átlépés a következő szektorba." ], "kg033": [ - "I've got suspicious activity in this sector." + "Gyanús tevékenységem van ebben a szektorban." ], "kg033a": [ - "I've got suspicious activity in this sector." + "Gyanús tevékenységem van ebben a szektorban." ], "kg034": [ - "Sweeping for suspects." + "Söprés a gyanúsítottakért." ], "kg034a": [ - "Sweeping for suspects." + "Söprés a gyanúsítottakért." ], "kg035": [ - "Nothing so far." + "Eddig semmi." ], "kg035a": [ - "Nothing so far." + "Eddig semmi." ], "kg036": [ - "Roger that, still looking." + "Roger, hogy még mindig keres." ], "kg036a": [ - "Roger that, still looking." + "Roger, hogy még mindig keres." ], "kg037": [ - "Roger, we'll shoot on sight." + "Roger, azonnal lőünk." ], "kg037a": [ - "Roger, we'll shoot on sight." + "Roger, azonnal lőünk." ], "kg038": [ - "Please advise, suspect's description." + "Kérem tanácsot, gyanúsított leírását." ], "kg039": [ - "Get out of the vehicle!" + "Szállj ki a járműből!" ], "kg039a": [ - "Get out of the vehicle!" + "Szállj ki a járműből!" ], "kg040": [ - "Call in more Hellcats!" + "Hívjon több Hellcat-ot!" ], "kg040a": [ - "Call in more Hellcats!" + "Hívjon több Hellcat-ot!" ], "kg041": [ - "The area is secure." + "A terület biztonságos." ], "kg041a": [ - "The area is secure." + "A terület biztonságos." ], "kg042": [ - "Nothing to report." + "Nincs mit jelenteni." ], "kg042a": [ - "Nothing to report." + "Nincs mit jelenteni." ], "kg043": [ - "Proceeding as planned." + "A tervek szerint haladunk." ], "kg043a": [ - "Proceeding as planned." + "A tervek szerint haladunk." ], "kg044": [ - "I lost him." + "Elvesztettem őt." ], "kg044a": [ - "I lost him." + "Elvesztettem őt." ], "kg045": [ - "Subject is not in sight." + "A tárgy nem látható." ], "kg045a": [ - "Subject not in sight." + "A tárgy nem látható." ], "kg046": [ - "He's gone." + "Elment." ], "kg046a": [ - "He disappeared!" + "Eltűnt!" ], "kg047": [ - "Where'd he go?" + "Hova ment?" ], "kg047a": [ - "Where'd he go?" + "Hova ment?" ], "kg048": [ - "Lost visual contact." + "Elveszett vizuális kapcsolat." ], "kg048a": [ - "Lost visual contact." + "Elveszett vizuális kapcsolat." ], "kg049": [ - "He just ducked out." + "Csak kibújt." ], "kg049a": [ - "He just ducked out." + "Csak kibújt." ], "kg050": [ - "He's out of sight." + "Látszón kívül van." ], "kg050a": [ - "He's out of sight." + "Látszón kívül van." ], "kg051": [ - "We're losing him!" + "Elveszítjük őt!" ], "kg051a": [ - "We're losing him!" + "Elveszítjük őt!" ], "kg052": [ - "Continuing our sweep." + "Folytatjuk a söprést." ], "kg052a": [ - "Continuing our sweep." + "Folytatjuk a söprést." ], "kg053": [ - "Searching sector four." + "Négy szektor keresése." ], "kg053a": [ - "Searching sector four." + "Négy szektor keresése." ], "kg054": [ - "Searching sector seven." + "Hetedik szektor keresése." ], "kg054a": [ - "Searching sector seven." + "Hetedik szektor keresése." ], "kg055": [ - "Searching sector three." + "Harmadik szektor keresése." ], "kg055a": [ - "Searching sector three." + "Harmadik szektor keresése." ], "kg056": [ - "Keep looking." + "Keresd tovább." ], "kg056a": [ - "Keep looking." + "Keresd tovább." ], "kg057": [ - "He's got to be here somewhere." + "Valahol itt kell lennie." ], "kg057a": [ - "He's got to be here somewhere." + "Valahol itt kell lennie." ], "kg058": [ - "I can't find him." + "Nem találom." ], "kg058a": [ - "I can't find him." + "Nem találom." ], "kg059": [ - "No sign of the subject." + "A tárgynak nyoma sincs." ], "kg059a": [ - "No sign of the subject." + "A tárgynak nyoma sincs." ], "kg060": [ - "I don't see him anywhere." + "Nem látom őt sehol." ], "kg060a": [ - "I don't see him anywhere." + "Nem látom őt sehol." ], "kg061": [ - "Still searching." + "Még mindig keres." ], "kg061a": [ - "Still searching." + "Még mindig keres." ], "kg062": [ - "Searching for the target." + "A célpont keresése." ], "kg062a": [ - "Searching for the target." + "A célpont keresése." ], "kg063": [ - "He must be here." + "Itt kell lennie." ], "kg063a": [ - "He must be here." + "Itt kell lennie." ], "kg064": [ - "He was just here." + "Épp itt volt." ], "kg064a": [ - "He was just here." + "Épp itt volt." ], "kg065": [ - "We lost him." + "Elvesztettük őt." ], "kg065a": [ - "We lost him." + "Elvesztettük őt." ], "kg066": [ - "He got away." + "Megszökött." ], "kg066a": [ - "He got away." + "Megszökött." ], "kg067": [ - "He escaped." + "Megszökött." ], "kg067a": [ - "He escaped." + "Megszökött." ], "kg068": [ - "He shook us." + "Megrázott minket." ], "kg068a": [ - "He shook us." + "Megrázott minket." ], "kg069": [ - "Looks like he's gone." + "Úgy tűnik, elment." ], "kg069a": [ - "Looks like he's gone." + "Úgy tűnik, elment." ], "kg070": [ - "I found him!" + "Megtaláltam őt!" ], "kg070a": [ - "I found him!" + "Megtaláltam őt!" ], "kg071": [ - "There he is." + "Ott van." ], "kg071a": [ - "There he is!" + "Ott van!" ], "kg072": [ - "Be advised, target in sight." + "Legyen tanácsos, célozzon a láthatáron." ], "kg072a": [ - "Be advised, target in sight!" + "Tájékoztatjuk, a cél a láthatáron!" ], "kg073": [ - "We have a positive ID." + "Pozitív azonosítónk van." ], "kg073a": [ - "We have a positive ID." + "Pozitív azonosítónk van." ], "kg074": [ - "I see him!" + "Látom őt!" ], "kg074a": [ - "I see him!" + "Látom őt!" ], "kg075": [ - "He's over there, get him!" + "Ott van, vedd el!" ], "kg075a": [ - "He's over here!" + "Itt van!" ], "kg076": [ - "Get him!" + "Kapd el!" ], "kg076a": [ - "Get him!" + "Kapd el!" ], "kg077": [ - "I've reacquired the target!" + "Újra megszereztem a célt!" ], "kg077a": [ - "I've reacquired the target!" + "Újra megszereztem a célt!" ], "kg078": [ - "I'm closing in." + "Bezárok." ], "kg078a": [ - "I'm closing in!" + "Bezárok!" ], "kg079": [ - "I'm on him!" + "rajta vagyok!" ], "kg079a": [ - "I'm on him!" + "rajta vagyok!" ], "kg080": [ - "I'm in pursuit!" + "üldözőben vagyok!" ], "kg080a": [ - "I'm in pursuit!" + "üldözőben vagyok!" ], "kg081": [ - "Pursuing target." + "A cél követése." ], "kg081a": [ - "Pursuing target!" + "Követve a célt!" ], "kg082": [ - "Don't let him get away!" + "Ne hagyd, hogy megszökjön!" ], "kg082a": [ - "Don't let him get away!" + "Ne hagyd, hogy megszökjön!" ], "kg083": [ - "Get him!" + "Kapd el!" ], "kg083a": [ - "Get him!" + "Kapd el!" ], "kg084": [ - "After him!" + "Utána!" ], "kg084a": [ - "After him!" + "Utána!" ], "kg085": [ - "I have a visual!" + "Látványom van!" ], "kg085a": [ - "I have a visual!" + "Látványom van!" ], "kg086": [ - "We see him!" + "Látjuk őt!" ], "kg086a": [ - "We see him!" + "Látjuk őt!" ], "kg087": [ - "Stop right there!" + "Állj meg ott!" ], "kg087a": [ - "Stop right there!" + "Állj meg ott!" ], "kg088": [ - "I have a bead on him!" + "Van rajta gyöngyöm!" ], "kg088a": [ - "I have a bead on him!" + "Van rajta gyöngyöm!" ], "kg089": [ - "I'm hit!" + "eltaláltam!" ], "kg089a": [ - "I'm hit!" + "eltaláltam!" ], "kg090": [ - "Man down!" + "Ember a földön!" ], "kg090a": [ - "Man down!" + "Ember a földön!" ], "kg091": [ - "I need backup!" + "Biztonságra van szükségem!" ], "kg091a": [ - "I need backup!" + "Biztonságra van szükségem!" ], "kg092": [ - "Stop him!" + "Állítsd meg!" ], "kg092a": [ - "Stop him!" + "Állítsd meg!" ], "kg093": [ - "Look out!" + "Vigyázz!" ], "kg093a": [ - "Look out!" + "Vigyázz!" ], "kg094": [ - "There he is, shoot him!" + "Itt van, lődd le!" ], "kg094a": [ - "There he is, shoot him!" + "Itt van, lődd le!" ], "kg095": [ - "Take him out!" + "Vidd őt ki!" ], "kg095a": [ - "Take him out!" + "Vidd őt ki!" ], "kg096": [ - "Prisoner escape in progress, sound the alarm!" + "Fogolyszökés folyamatban, riadóztass!" ], "kg096a": [ - "Prison escape in progress, sound the alarm!" + "Börtönszökés folyamatban, riadóztass!" ], "kg097": [ - "Prisoner on level two!" + "Fogoly a második szinten!" ], "kg097a": [ - "Prisoner on level two!" + "Fogoly a második szinten!" ], "kg098": [ - "Prisoner moving to sub-level B!" + "Fogoly B alszintre költözik!" ], "kg098a": [ - "Prisoner moving to sub-level B!" + "Fogoly B alszintre költözik!" ], "kg099": [ - "We think he's in the pipes!" + "Szerintünk a csövekben van!" ], "kg099a": [ - "We think he's in the pipes!" + "Szerintünk a csövekben van!" ], "kg100": [ - "We're beginning our sweep." + "Elkezdjük a söprést." ], "kg100a": [ - "We're beginning our sweep." + "Elkezdjük a söprést." ], "kg101": [ - "We have prisoner in sight, move in!" + "Foglyunk van, költözzön be!" ], "kg101a": [ - "We have prisoner in sight, move in!" + "Foglyunk van, költözzön be!" ], "kg102": [ - "We have movement on level one!" + "Mozgásunk van az első szinten!" ], "kg102a": [ - "We have movement on level one!" + "Mozgásunk van az első szinten!" ], "kg103": [ - "Close in!" + "Zárja be!" ], "kg103a": [ - "Close in!" + "Zárja be!" ], "kg104": [ - "We're moving in!" + "Beköltözünk!" ], "kg104a": [ - "We're moving in!" + "Beköltözünk!" ], "kg105": [ - "Secure the cell block!" + "Biztosítsd a cellablokkot!" ], "kg105a": [ - "Secure the cell block!" + "Biztosítsd a cellablokkot!" ], "kg106": [ - "Take no prisoners!" + "Ne ejts foglyot!" ], "kg106a": [ - "Take no prisoners!" + "Ne ejts foglyot!" ], "kg107": [ - "Prisoner sighted, we got him!" + "Fogolylátó, megvan!" ], "kg107a": [ - "Prisoner sighted, we got him!" + "Fogolylátó, megvan!" ], "kg108": [ - "Prisoner is still on the loose!" + "A fogoly még mindig szabadlábon van!" ], "kg108a": [ - "Prisoner is still on the loose!" + "A fogoly még mindig szabadlábon van!" ], "kg109": [ - "We think he's going for an exit!" + "Azt gondoljuk, hogy kilép!" ], "kg109a": [ - "We think he's going for an exit!" + "Azt gondoljuk, hogy kilép!" ], "kg110": [ - "Searching rooms." + "Szobák keresése." ], "kg110a": [ - "Searching rooms." + "Szobák keresése." ], "kg111": [ - "Prisoner loose in complex." + "Elszabadult fogoly komplexusban." ], "kg111a": [ - "Prisoner loose in complex." + "Elszabadult fogoly komplexusban." ], "kg112": [ - "You are authorized to shoot to kill." + "Ön jogosult lőni ölni." ], "kg112a": [ - "You are authorized to shoot to kill." + "Ön jogosult lőni ölni." ], "kg113": [ - "Go, go, go! Sweep the area!" + "Menj menj menj! Söpörje le a területet!" ], "kg113a": [ - "Go go go! Sweep the area!" + "Menj menj menj! Söpörje le a területet!" ], "kg114": [ - "Searching the sub-basements." + "Az alpincék felkutatása." ], "kg114a": [ - "Searching the sub-basements." + "Az alpincék felkutatása." ], "kg115": [ - "Cell block is clear." + "A sejtblokk tiszta." ], "kg115a": [ - "Cell block is clear." + "A sejtblokk tiszta." ], "kg116": [ - "Tank room is clear." + "A tankszoba tiszta." ], "kg116a": [ - "Tank room is clear." + "A tankszoba tiszta." ], "kg117": [ - "Activate riot tanks." + "Aktiválja a rohamosztókat." ], "kg117a": [ - "Activate riot tanks." + "Aktiválja a rohamosztókat." ], "kg118": [ - "Riot tank has prisoner in sight." + "Riot tank van a láthatáron." ], "kg118a": [ - "Riot tank has prisoner in sight." + "Riot tank van a láthatáron." ], "kg119": [ - "Intruder alert." + "Behatoló riasztás." ], "kg119a": [ - "Intruder alert!" + "Behatoló riasztás!" ], "kg120": [ - "Activating security defenses." + "Biztonsági védelem aktiválása." ], "kg120a": [ - "Activating security defenses." + "Biztonsági védelem aktiválása." ], "kg121": [ - "Please advise, subject's description." + "Kérem adjon tanácsot, a tárgy leírását." ], "kg121a": [ - "Please advise, subject's description." + "Kérem adjon tanácsot, a tárgy leírását." ], "kg122": [ - "I've got civvies in sight." + "Civviesek vannak a szemem előtt." ], "kg122a": [ - "I've got civvies in sight." + "Civviesek vannak a szemem előtt." ], "kg123": [ - "I've got suspects in sight." + "Vannak gyanúsítottaim." ], "kg123a": [ - "I've got suspects in sight." + "Vannak gyanúsítottaim." ], "kg124": [ - "I hate the smell of this part of the city." + "Utálom ennek a városrésznek az illatát." ], "kg124a": [ - "I hate the smell in this part of the city." + "Utálom a szagot a városnak ezen a részén." ], "kg125": [ - "Right, we'll check it out." + "Rendben, megnézzük." ], "kg125a": [ - "Right, we'll check it out." + "Rendben, megnézzük." ], "kg126": [ - "Confirmed, Underground suspect neutralized." + "Megerősítették, a földalatti gyanúsítottat semlegesítették." ], "kg126a": [ - "Confirmed, Underground suspect neutralized." + "Megerősítették, a földalatti gyanúsítottat semlegesítették." ], "kg127": [ - "They're all guilty!" + "Mindannyian bűnösek!" ], "kg127a": [ - "They're all guilty!" + "Mindannyian bűnösek!" ], "kg128": [ - "This is Unit Alpha, we're en route." + "Ez az Alfa egység, úton vagyunk." ], "kg128a": [ - "This is Unit Alpha, we're en route." + "Ez az Alfa egység, úton vagyunk." ], "kg129": [ - "Roger, continuing our sweep." + "Roger, folytatja a söprést." ], "kg129a": [ - "Roger, continuing our sweep." + "Roger, folytatja a söprést." ], "kg130": [ - "Unit Zulu, moving in." + "Zulu egység, beköltözik." ], "kg130a": [ - "Unit Zulu, moving in." + "Zulu egység, beköltözik." ], "kg131": [ - "Roger that, we're making our sweep." + "Hidd el, megkezdjük a söprést." ], "kg131a": [ - "Roger that, we're making our sweep." + "Hidd el, megkezdjük a söprést." ], "kg132": [ - "I say shoot 'em all and sort 'em out later." + "Azt mondom, lődd le őket, és rendezd később." ], "kg132a": [ - "I say shoot 'em all and sort 'em out later." + "Azt mondom, lődd le őket, és rendezd később." ], "kg133": [ - "You have the right to die!" + "Jogod van meghalni!" ], "kg134": [ - "Lock and load!" + "Zárja be és töltse be!" ], "kg135": [ - "Open fire!" + "Tüzet nyit!" ], "kg136": [ - "Alert, alert!" + "Figyelmeztetés, éberség!" ], "kg137": [ - "Don't move!" + "Ne mozdulj!" ], "kg138": [ - "Do it!" + "Csináld!" ], "kg139": [ - "Go, go, go!" + "Menj menj menj!" ], "kg140": [ - "Flank 'em!" + "Távolítsa el őket!" ], "kg141": [ - "Move in!" + "Beköltözni!" ], "kg142": [ - "Take 'em out!" + "Vedd ki őket!" ], "kg143": [ - "Bust some heads!" + "Törj le néhány fejet!" ], "kg144": [ - "Arrest him!" + "Letartóztatni!" ], "kg145": [ - "Shoot 'em, shoot 'em!" + "Lődd le őket, lődd le őket!" ], "kg146": [ - "Die, outlaw!" + "Halj meg, betyár!" ], "kg147": [ - "You're history!" + "Te történelem vagy!" ], "kg148": [ - "Eat this!" + "Edd meg ezt!" ], "kg149": [ - "Get some!" + "Szerezz!" ], "kg150": [ - "Fire, fire!" + "Tűz tűz!" ], "kg151": [ - "Here's one for the Guard!" + "Íme egy az Őrségnek!" ], "kg152": [ - "Give it up, outlaw!" + "Add fel, betyár!" ], "kg153": [ - "Here's some pain!" + "Itt egy kis fájdalom!" ], "kg154": [ - "Payback time!" + "Megtérülési idő!" ], "kg155": [ - "Shoulda given up!" + "Fel kellett adni!" ], "kg156": [ - "I need cover fire!" + "takarótűzre van szükségem!" ], "kg157": [ - "Call in reinforcements!" + "Hívj erősítést!" ], "kg158": [ - "I'll shoot!" + "lőni fogok!" ], "kg159": [ - "Die!" + "Meghal!" ], "kg160": [ - "You're busted!" + "Le vagy akadva!" ], "kg161": [ - "Riot in progress!" + "Zavarodás folyamatban!" ], "kg162": [ - "Send in the troops!" + "Küldd be a csapatokat!" ], "kg163": [ - "Give it up!" + "Add fel!" ], "kg164": [ - "Make 'em pay!" + "Fizessenek nekik!" ], "kg165": [ - "Tag 'em and bag 'em!" + "Jelölje meg és csomagolja be őket!" ], "kg165a": [ - "Tag 'em and bag 'em!" + "Jelölje meg és csomagolja be őket!" ], "kg165b": [ - "Tag 'em and bag 'em!" + "Jelölje meg és csomagolja be őket!" ], "kg166": [ - "Another notch for my gun." + "Még egy bevágás a fegyveremhez." ], "kg166a": [ - "Another notch for my gun." + "Még egy bevágás a fegyveremhez." ], "kg166b": [ - "Another notch for my gun." + "Még egy bevágás a fegyveremhez." ], "kg167": [ - "This one was easy!" + "Ez könnyű volt!" ], "kg167a": [ - "This one was easy!" + "Ez könnyű volt!" ], "kg167b": [ - "This one was easy!" + "Ez könnyű volt!" ], "kg168": [ - "Suspect neutralized." + "A gyanúsítottat semlegesítették." ], "kg168a": [ - "Suspect neutralized." + "A gyanúsítottat semlegesítették." ], "kg168b": [ - "Suspect neutralized." + "A gyanúsítottat semlegesítették." ], "kg169": [ - "Didn't even work up a sweat." + "Még csak meg sem izzadt." ], "kg169a": [ - "Didn't even work up a sweat." + "Még csak meg sem izzadt." ], "kg169b": [ - "Didn't even work up a sweat." + "Még csak meg sem izzadt." ], "kg170": [ - "Take him in for... questioning, hehehe..." + "Vedd be... kérdezősködésre, hehehe..." ], "kg170a": [ - "Take him in for... questioning, hehehe..." + "Vedd be... kérdezősködésre, hehehe..." ], "kg170b": [ - "Take him in for... questioning, hehehe..." + "Vedd be... kérdezősködésre, hehehe..." ], "kg171": [ - "Another one bites the dust." + "Egy másik harapja a port." ], "kg171a": [ - "Another one bites the dust." + "Egy másik harapja a port." ], "kg171b": [ - "Another one bites the dust." + "Egy másik harapja a port." ], "kg172": [ - "That must have hurt." + "Ez biztosan fájt." ], "kg172a": [ - "That must have hurt." + "Ez biztosan fájt." ], "kg172b": [ - "That must have hurt." + "Ez biztosan fájt." ], "kg173": [ - "There's plenty more where that came from." + "Még sok minden van, ahonnan ez jött." ], "kg173a": [ - "There's plenty more where that came from." + "Még sok minden van, ahonnan ez jött." ], "kg173b": [ - "There's plenty more where that came from." + "Még sok minden van, ahonnan ez jött." ], "kg174": [ - "Citizen scum." + "Polgár söpredék." ], "kg174a": [ - "Citizen scum." + "Polgár söpredék." ], "kg174b": [ - "Citizen scum." + "Polgár söpredék." ], "kg175": [ - "Don't fight the law, son." + "Ne harcolj a törvénnyel, fiam." ], "kg175a": [ - "Don't fight the law, son." + "Ne harcolj a törvénnyel, fiam." ], "kg175b": [ - "Don't fight the law, son." + "Ne harcolj a törvénnyel, fiam." ], "kg176": [ - "You are under arrest!" + "Le van tartóztatva!" ], "kg177": [ - "Get moving!" + "Mozgás!" ], "kg178a": [ - "He vanished!" + "Eltűnt!" ], "kg179": [ - "You guys hear about the latest Metal Head attacks?" + "Hallottatok a legújabb Metal Head támadásokról?" ], "kg179b": [ - "Oh you guys hear about the latest Metal Head attacks?" + "Hallottatok a legújabb Metal Head támadásokról?" ], "kg180": [ - "We lost three squads last week." + "A múlt héten három csapatot veszítettünk el." ], "kg180a": [ - "We lost three squads last week." + "A múlt héten három csapatot veszítettünk el." ], "kg180b": [ - "We lost three squads last week." + "A múlt héten három csapatot veszítettünk el." ], "kg181": [ - "I hear the Underground are getting stronger." + "Úgy hallom, az Underground egyre erősebb." ], "kg181a": [ - "I hear the Underground are getting stronger." + "Úgy hallom, az Underground egyre erősebb." ], "kg181b": [ - "I hear the Underground are getting stronger." + "Úgy hallom, az Underground egyre erősebb." ], "kg182": [ - "Just rumors, private, keep your mouth shut." + "Csak pletykák, privát, tartsd be a szád." ], "kg182a": [ - "Just rumors, private, keep your mouth shut." + "Csak pletykák, privát, tartsd be a szád." ], "kg182b": [ - "Just rumors, private, keep your mouth shut." + "Csak pletykák, privát, tartsd be a szád." ], "kg183": [ - "It's us or them, there's no in-between." + "Mi vagyunk, vagy ők, nincs közte." ], "kg183a": [ - "It's us or them, there's no in-between." + "Mi vagyunk, vagy ők, nincs közte." ], "kg183b": [ - "It's us or them, there's no in-between." + "Mi vagyunk, vagy ők, nincs közte." ], "kg184": [ - "Don't worry, the Baron will save us." + "Ne aggódj, a báró megment minket." ], "kg184a": [ - "Don't worry, the Baron will save us." + "Ne aggódj, a báró megment minket." ], "kg184b": [ - "Don't worry, the Baron will save us." + "Ne aggódj, a báró megment minket." ], "kg185": [ - "I got no faith in nobody." + "Nem hiszek senkiben." ], "kg185a": [ - "I ain't got no faith in nobody." + "Nem hiszek senkiben." ], "kg185b": [ - "I got no faith in nobody." + "Nem hiszek senkiben." ], "kg186": [ - "Seen that new JX-7 racer? Sweet ride." + "Láttad azt az új JX-7 versenyzőt? Édes utazás." ], "kg186a": [ - "You seen that new JX-7 racer? Sweet ride." + "Láttad azt az új JX-7 versenyzőt? Édes utazás." ], "kg186b": [ - "Seen that new JX-7 racer? It's a sweet ride." + "Láttad azt az új JX-7 versenyzőt? Ez egy édes menet." ], "kg187": [ - "You seen anything?" + "Láttál valamit?" ], "kg187a": [ - "You seen anything?" + "Láttál valamit?" ], "kg187b": [ - "You seen anything?" + "Láttál valamit?" ], "kg188": [ - "No." + "Nem." ], "kg188a": [ - "No." + "Nem." ], "kg188b": [ - "Nah." + "Nem." ], "kg189": [ - "Keep your eyes peeled." + "Tartsd nyitva a szemed." ], "kg189a": [ - "Keep your eyes peeled." + "Tartsd nyitva a szemed." ], "kg189b": [ - "Keep your eyes peeled." + "Tartsd nyitva a szemed." ], "kg190": [ - "I just got a radio alert, stay frosty." + "Most kaptam rádióriasztást, maradj fagyos." ], "kg190a": [ - "I just got a radio alert, stay frosty." + "Most kaptam rádióriasztást, maradj fagyos." ], "kg190b": [ - "I just got a radio alert, stay frosty." + "Most kaptam rádióriasztást, maradj fagyos." ], "kg191": [ - "Never trust a civilian." + "Soha ne bízz civilben." ], "kg191a": [ - "Never trust a civilian." + "Soha ne bízz civilben." ], "kg191b": [ - "Never trust a civilian." + "Soha ne bízz civilben." ], "kg192": [ - "Never trust anyone." + "Soha ne bízz senkiben." ], "kg192a": [ - "Never trust anyone." + "Soha ne bízz senkiben." ], "kg192b": [ - "Never trust anyone." + "Soha ne bízz senkiben." ], "kg193": [ - "Long live the KG!" + "Éljen a KG!" ], "kg193a": [ - "Long live the KG!" + "Éljen a KG!" ], "kg193b": [ - "Long live the KG!" + "Éljen a KG!" ], "kg194": [ - "We ain't had a food riot since we brought in them tanks." + "Nem volt étellázadásunk, mióta tankokat vittünk be nekik." ], "kg194a": [ - "We ain't had a food riot since we brought in them tanks." + "Nem volt étellázadásunk, mióta tankokat vittünk be nekik." ], "kg194b": [ - "We ain't had a food riot since we brought in them tanks." + "Nem volt étellázadásunk, mióta tankokat vittünk be nekik." ], "kg195": [ - "I'm bored, I want to crunch heads." + "Unatkozom, össze akarom törni a fejem." ], "kg195a": [ - "I'm bored, I want to crunch heads." + "Unatkozom, össze akarom törni a fejem." ], "kg195b": [ - "I'm bored, I want to crunch heads." + "Unatkozom, össze akarom törni a fejem." ], "kg196": [ - "I want to kick some ass." + "Seggbe akarok rúgni." ], "kg196a": [ - "Ugh... I want to kick some butt." + "Ugh... fenékbe akarok rúgni." ], "kg196b": [ - "I want to kick some butt." + "Fenéken akarok rúgni." ], "kg197": [ - "Did you hear the Underground got our ammo at HQ?" + "Hallottad, hogy az Underground megszerezte a lőszerünket a főhadiszálláson?" ], "kg197a": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Hallottad, hogy az Undergroundnak kell?", + "lőszerünk a főhadiszálláson?" ], "kg197b": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Hallottad, hogy az Undergroundnak kell?", + "lőszerünk a főhadiszálláson?" ], "kg198": [ - "Payback's a bitch!" + "A megtérülés kurva!" ], "kg198a": [ - "Payback's a bitch!" + "A megtérülés kurva!" ], "kg198b": [ - "Payback's a bitch!" + "A megtérülés kurva!" ], "kg199": [ - "Animals!" + "Állatok!" ], "kg199a": [ - "Animals!" + "Állatok!" ], "kg199b": [ - "Animals!" + "Állatok!" ], "kg200": [ - "I hear the Shadow's been dead for years." + "Hallom, hogy az Árny évek óta halott." ], "kg200a": [ - "I hear the Shadow's been dead for years." + "Hallom, hogy az Árny évek óta halott." ], "kg200b": [ - "I hear the Shadow's been dead for years." + "Hallom, hogy az Árny évek óta halott." ], "kg201": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Talán, de a többiek Underground söpredék", + "még mindig ott rohangálnak." ], "kg201a": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Talán, de a többiek Underground söpredék", + "még mindig ott rohangálnak." ], "kg201b": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Talán, de a többiek Underground söpredék", + "még mindig ott rohangálnak." ], "kg202": [ - "Can I shoot someone now?" + "Most lelőhetek valakit?" ], "kg202a": [ - "Can I shoot someone now?" + "Most lelőhetek valakit?" ], "kg202b": [ - "Can I shoot someone now?" + "Most lelőhetek valakit?" ], "kg203": [ - "I like the new armor." + "Tetszik az új páncél." ], "kg203a": [ - "I like the new armor." + "Tetszik az új páncél." ], "kg203b": [ - "I like the new armor." + "Tetszik az új páncél." ], "kg204": [ - "Yeah, me too. More comfort in the crotch." + "Ja nekem is. Nagyobb kényelem az ágyékban." ], "kg204a": [ - "Yeah, me too. More comfort in the crotch." + "Ja nekem is. Nagyobb kényelem az ágyékban." ], "kg204b": [ - "Yeah, me too. More comfort in the crotch." + "Ja nekem is. Nagyobb kényelem az ágyékban." ], "kg205": [ - "If something interesting doesn't happen soon,", - "I'm going to start shooting you." + "Ha valami érdekes nem történik hamarosan,", + "Elkezdek lőni rád." ], "kg205a": [ - "Next time, can I kill a civvy?" + "Legközelebb megölhetek egy cívit?" ], "kg205b": [ - "Next time, can I kill a civvy?" + "Legközelebb megölhetek egy cívit?" ], "kg206a": [ - "If something interesting doesn't happen soon,", - "I'm gonna shoot you." + "Ha valami érdekes nem történik hamarosan,", + "le foglak lőni." ], "kg206b": [ - "If something interesting doesn't happen soon,", - "I'm gonna start shooting you." + "Ha valami érdekes nem történik hamarosan,", + "Elkezdek lőni rád." ], "kg207": [ - "Did you collect your bribes this week?" + "Összeszedted a kenőpénzedet ezen a héten?" ], "kg207a": [ - "You collect your bribes this week?" + "Beszedi a kenőpénzt ezen a héten?" ], "kg207b": [ - "You collect your bribes this week?" + "Beszedi a kenőpénzt ezen a héten?" ], "kg208": [ - "Shhh..." + "Pszt..." ], "kg208a": [ - "Shhh..." + "Pszt..." ], "kg209": [ - "Shh." + "Pszt." ], "kg209a": [ - "Shh." + "Pszt." ], "kg209b": [ - "Shh." + "Pszt." ], "kg210": [ - "I hear someone's been using the old wall airlocks.", - "Pfft, crazy bastard." + "Hallom, hogy valaki a régi fali légzsilipeket használja.", + "Pff, őrült barom." ], "kg210a": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Hallom, hogy valaki a régi fali légzsilipeket használja.", + "Őrült barom." ], "kg210b": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Hallom, hogy valaki a régi fali légzsilipeket használja.", + "Őrült barom." ], "kg211": [ - "I've been on duty for two days straight." + "Két napja vagyok szolgálatban." ], "kg211a": [ - "I've been on duty for two days straight." + "Két napja vagyok szolgálatban." ], "kg211b": [ - "I've been on duty for two days straight." + "Két napja vagyok szolgálatban." ], "kg212": [ - "Pfft, don't complain. I've got sewer patrol next week." + "Pff, ne panaszkodj. Jövő héten lesz csatornajárőröm." ], "kg212a": [ - "Don't complain, I got sewer patrol next week." + "Ne panaszkodj, jövő héten kaptam csatornajárőrt." ], "kg212b": [ - "Don't complain. I got sewer patrol next week." + "Ne panaszkodj. Jövő héten kaptam csatornajárőrt." ], "kg213": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ahh, te szegény barom. Melyik parancsnokot dühítette fel?" ], "kg213a": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ahh, te szegény barom. Melyik parancsnokot dühítette fel?" ], "kg213b": [ - "Hehe, poor bastard. Which commander did you piss off?" + "Hehe, szegény barom. Melyik parancsnokot dühítette fel?" ], "kg214": [ - "I say death to the Underground." + "Halált mondok az Undergroundnak." ], "kg214a": [ - "I say death to the Underground." + "Halált mondok az Undergroundnak." ], "kg214b": [ - "I say death to the Underground." + "Halált mondok az Undergroundnak." ], "kg215": [ - "I wanna so kill that Shadow guy." + "Annyira meg akarom ölni azt a Shadow fickót." ], "kg215a": [ - "I want to kill that Shadow guy!" + "Meg akarom ölni azt a Shadow fickót!" ], "kg215b": [ - "I want to kill that Shadow guy!" + "Meg akarom ölni azt a Shadow fickót!" ], "kg216": [ - "And don't forget that traitor Torn." + "És ne felejtsd el Tornt árulót." ], "kg216a": [ - "And don't forget that traitor Torn." + "És ne felejtsd el Tornt árulót." ], "kg216b": [ - "Don't forget that traitor Torn!" + "Ne felejtsd el Tornt árulót!" ], "kg217": [ - "Death's too good for him." + "A halál túl jó neki." ], "kg217a": [ - "Death's too good for him." + "A halál túl jó neki." ], "kg217b": [ - "Death's too good for him." + "A halál túl jó neki." ], "kg218": [ - "Why are we looking for some kid?" + "Miért keresünk egy gyereket?" ], "kg218a": [ - "Why are we looking for some kid?" + "Miért keresünk egy gyereket?" ], "kg218b": [ - "Why are we looking for some kid?" + "Miért keresünk egy gyereket?" ], "kg219": [ - "I don't know, Baron's orders." + "Nem tudom, báró parancsa." ], "kg219a": [ - "I dunno, Baron's orders." + "Nem tudom, báró parancsa." ], "kg219b": [ - "I dunno, Baron's orders." + "Nem tudom, báró parancsa." ], "kg220": [ - "Hey, have they found Mar's Tomb yet?" + "Hé, megtalálták már Mar sírját?" ], "kg220a": [ - "Have they found Mar's Tomb yet?" + "Megtalálták már Mar sírját?" ], "kg220b": [ - "Have they found Mar's Tomb yet?" + "Megtalálták már Mar sírját?" ], "kg221": [ - "They wouldn't tell us if they did." + "Nem mondanák el nekünk, ha megtennék." ], "kg221a": [ - "Nah, they wouldn't tell us if they did." + "Nem, nem mondanák el nekünk, ha megtennék." ], "kg221b": [ - "Nah, they wouldn't tell us if they did." + "Nem, nem mondanák el nekünk, ha megtennék." ], "kg222": [ - "I've got a big bet on the next city races." + "Nagy tétem van a következő városi versenyekre." ], "kg222a": [ - "I got a big bet on the next city races." + "Nagy tétet kaptam a következő városi versenyekre." ], "kg222b": [ - "Got a big bet on the next city races." + "Nagy tétet kaptam a következő városi versenyekre." ], "kg223": [ - "Erol's my boy. He always wins." + "Erol a fiam. Mindig ő nyer." ], "kg223a": [ - "Erol's my boy. He always wins." + "Erol a fiam. Mindig ő nyer." ], "kg223b": [ - "Erol's my boy. He always wins." + "Erol a fiam. Mindig ő nyer." ], "kg224": [ - "You going to the city races this time?" + "Ezúttal városi versenyekre mész?" ], "kg224a": [ - "You going to the city races this time?" + "Ezúttal városi versenyekre mész?" ], "kg224b": [ - "You going to the city races this time?" + "Ezúttal városi versenyekre mész?" ], "kg225": [ - "I'll be there." + "Ott leszek." ], "kg225a": [ - "I'll be there." + "Ott leszek." ], "kg225b": [ - "I'll be there." + "Ott leszek." ], "kg226": [ - "There've been some serious guard casualties this week." + "Súlyos őrveszteség történt ezen a héten." ], "kg226a": [ - "There've been some serious guard casualties this week." + "Súlyos őrveszteség történt ezen a héten." ], "kg226b": [ - "There've been some serious guard casualties this week." + "Súlyos őrveszteség történt ezen a héten." ], "kg227": [ - "Yeah, some rebel fighter is stirring up the pot good." + "Igen, valami lázadó harcos jól felkavarja az edényt." ], "kg227a": [ - "Yeah, some rebel fighter is stirring the pot good." + "Igen, valami lázadó harcos jól kavarja az edényt." ], "kg227b": [ - "Some rebel fighter is stirring the pot good." + "Valami lázadó harcos jól kavarja az edényt." ], "kg228": [ - "I'd love to be the one to take him out." + "Szívesen lennék az, aki kihozná." ], "kg228a": [ - "I'd love to be the one to take him out." + "Szívesen lennék az, aki kihozná." ], "kg228b": [ - "Oh I'd love to be the one to take him out." + "Ó, én szívesen kiszedném." ], "kg229": [ - "Let's get drinks later." + "Igyunk inni később." ], "kg229a": [ - "Let's get drinks later." + "Igyunk inni később." ], "kg229b": [ - "Let's get drinks later." + "Igyunk inni később." ], "kg230": [ - "I got a bad feeling about this war." + "Rossz előérzetem volt ezzel a háborúval kapcsolatban." ], "kg230a": [ - "I got a bad feeling about this war." + "Rossz előérzetem volt ezzel a háborúval kapcsolatban." ], "kg230b": [ - "I got a bad feeling about this war." + "Rossz előérzetem volt ezzel a háborúval kapcsolatban." ], "kg231": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Úgy hallom, több Metal Head támadás is van", + "mint a főkapitányság elismerte." ], "kg231a": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Úgy hallom, több Metal Head támadás is van", + "mint a főkapitányság elismerte." ], "kg231b": [ - "Yeah, I hear there are more Metal Head attacks", - "than HQ's admitting." + "Igen, úgy hallom, több Metal Head támadás is van", + "mint a főkapitányság elismerte." ], "kg232": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "A jelentések, amiket láttam, nem jók.", + "Szerintem a város bajban van." ], "kg232a": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "A jelentések, amiket láttam, nem jók.", + "Szerintem a város bajban van." ], "kg232b": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "A jelentések, amiket láttam, nem jók.", + "Szerintem a város bajban van." ], "kg233": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Aggódom ezért az új srácért", + "harcol a földalattiért." ], "kg233a": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Aggódom ezért az új srácért", + "harcol a földalattiért." ], "kg233b": [ - "I'm worried about this new guy fighting for the Underground.", - "fighting for the Underground." + "Aggódom az új srác miatt, aki az Undergroundért harcol.", + "harcol a földalattiért." ], "kg234": [ - "Yeah, they say he can change into some kind of... monster." + "Igen, azt mondják, hogy valamiféle... szörnyeteggé változhat." ], "kg234a": [ - "Yeah, they say he can change into some kind of monster." + "Igen, azt mondják, hogy valamiféle szörnyeteggé változhat." ], "kg234b": [ - "They say he can change into some kind of monster." + "Azt mondják, valamiféle szörnyeteggé változhat." ], "kg235": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Ne aggódj, a feje hamarosan a torony falán lesz." ], "kg235a": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Ne aggódj, a feje hamarosan a torony falán lesz." ], "kg235b": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Ne aggódj, a feje hamarosan a torony falán lesz." ], "kg236": [ "Hehehe." @@ -5723,7 +5723,7 @@ "Hehehe..." ], "kg237b": [ - "Hehehe..." + "hehehe..." ], "kg238a": [ "Hahaha..." @@ -5738,444 +5738,444 @@ "Hehehe..." ], "kg241a": [ - "Suspect in known Underground vehicle!" + "Ismert földalatti járműben gyanúsított!" ], "kg242a": [ - "He's got a cargo, move in!" + "Rakománya van, költözz be!" ], "kg243a": [ - "Stop that vehicle!" + "Állítsd meg a járművet!" ], "kg244a": [ - "You're under arrest, pull over!" + "Le vagy tartóztatva, állj le!" ], "kg245a": [ - "Surrender the vehicle!" + "Add át a járművet!" ], "kg246a": [ - "We are in pursuit!" + "Nyomban vagyunk!" ], "kg247a": [ - "He's got a package!" + "Van egy csomagja!" ], "kg248a": [ - "Suspect has suspicious cargo!" + "A gyanúsítottnak gyanús rakománya van!" ], "kg249a": [ - "We think it's an illegal shipment." + "Szerintünk illegális szállítmány." ], "kg250a": [ - "All units close in on vehicle!" + "Minden egység bezárja a járművet!" ], "kg251a": [ - "Suspect moving at high speed!" + "Gyanúsított nagy sebességgel halad!" ], "kg252a": [ - "We can't keep up!" + "Nem tudunk lépést tartani!" ], "kg253a": [ - "He's in the port!" + "A kikötőben van!" ], "kg254a": [ - "He got away!" + "Megszökött!" ], "kg255a": [ - "Suspect has taken out pursuit!" + "A gyanúsított üldözésbe kezdett!" ], "kg256a": [ - "Vehicle destroyed, we got him!" + "A jármű megsemmisült, megkaptuk!" ], "kg257a": [ - "Nice work boys, he's down." + "Szép munka fiúk, leesett." ], "kg258a": [ - "Excellent pursuit." + "Kiváló üldözés." ], "kg259a": [ - "Guard transport under attack, requesting support!" + "Őrszállítás támadás alatt, támogatást kérve!" ], "kg260a": [ - "We're takin' damage!" + "Károkat okozunk!" ], "kg261a": [ - "He's after us!" + "Utánunk van!" ], "kg262a": [ - "He's trying to crash the transport!" + "Megpróbálja letörni a szállítót!" ], "kg263a": [ - "We've had a transport ambush, units respond!" + "Szállítási lesben volt részünk, az egységek válaszolnak!" ], "kg264a": [ - "He's picking up a prisoner!" + "Foglyot szed fel!" ], "kg265a": [ - "We lost a Lurker prisoner." + "Elvesztettünk egy Lurker foglyot." ], "kg266a": [ - "He's got a Lurker prisoner with him!" + "Egy Lurker fogoly van vele!" ], "kg267a": [ - "Take 'em all out!" + "Vidd ki mindet!" ], "kg268a": [ - "We think he's helping the Lurkers escape!" + "Szerintünk segít a lurkóknak megszökni!" ], "kg269a": [ - "He's taken out two of our transports already!" + "Már két szállítóeszközünket is kivette!" ], "kg270a": [ - "He's alone again." + "Megint egyedül van." ], "kg271a": [ - "Where's he heading?!" + "Merre tart?!" ], "kg272a": [ - "Terminate with extreme prejudice!" + "Végső előítélettel fejezd be!" ], "kg273a": [ - "He's attacking another transport!" + "Megtámad egy másik szállítóeszközt!" ], "kg274a": [ - "We're being chased, send in an escort!" + "Üldöznek minket, küldj kísérőt!" ], "kg275a": [ - "We lost this passenger." + "Elvesztettük ezt az utast." ], "kg276a": [ - "We're losing him!" + "Elveszítjük őt!" ], "kg277a": [ - "We got 'em!" + "Megvan őket!" ], "kg278a": [ - "We got 'em, teach ya to screw with the KG!" + "Megvan, taníts meg csavarni a KG-vel!" ], "kg279a": [ - "Pull over, Lurker lover!" + "Állj félre, Lurker szerelmese!" ], "kg280a": [ - "There's a kid, check him out." + "Van egy gyerek, nézd meg." ], "kg281a": [ - "The Baron wants every kid in this city arrested." + "A báró azt akarja, hogy minden gyereket letartóztassanak ebben a városban." ], "kg282a": [ - "Surrender the child!" + "Add át a gyereket!" ], "kg283a": [ - "Give up the kid!" + "Add fel a gyereket!" ], "kg284a": [ - "If they won't surrender, kill them all!" + "Ha nem adják meg magukat, öljétek meg mindet!" ], "kg285a": [ - "Don't kill the kid." + "Ne öld meg a gyereket." ], "kg286a": [ - "The Baron wants the kid alive!" + "A báró élve akarja a kölyköt!" ], "kg287a": [ - "Find the boy!" + "Találd meg a fiút!" ], "kg288a": [ - "That could be the kid the Baron wants." + "Ez lehet az a gyerek, akit a báró akar." ], "kg289a": [ - "After them!" + "Utánuk!" ], "kg290a": [ - "Don't move, boy!" + "Ne mozdulj, fiú!" ], "kg291a": [ - "Take out that mutt!" + "Vedd ki azt a dögöt!" ], "kg292a": [ - "We should kill 'em all!" + "Meg kellene ölnünk mindet!" ], "kg293a": [ - "They've taken a vehicle!" + "Elvittek egy járművet!" ], "kg294a": [ - "If you get a clear shot, take it!" + "Ha tiszta lövést kapsz, tedd meg!" ], "kg295a": [ - "Suspect is fleeing in vehicle!" + "A gyanúsított gépkocsival menekül!" ], "kg296a": [ - "Suspect's vehicle moving through section seven." + "A gyanúsított járműve áthaladt a hetedik szakaszon." ], "kg297a": [ - "We think the kid's with that Underground freak." + "Azt hisszük, hogy a gyerek azzal az Underground őrülttel van." ], "kg298a": [ - "Take 'em out, but keep the kid alive!" + "Vidd ki őket, de tartsd életben a gyereket!" ], "kg299a": [ - "They're on foot again!" + "Megint gyalog!" ], "kg300a": [ - "What is that thing?!" + "Mi az a dolog?!" ], "kg301a": [ - "Shoot that thing, shoot it!" + "Lődd le, lődd le!" ], "kg302a": [ - "What's he doing?!" + "Mit csinál?!" ], "kg303a": [ - "It's that monster!" + "Ez az a szörnyeteg!" ], "kg304a": [ - "The stories are true!" + "A történetek igazak!" ], "kg305a": [ - "It's the dark monster!" + "Ez a sötét szörnyeteg!" ], "kg306a": [ - "It's him!" + "Ez ő!" ], "kg307a": [ - "It's the dark eco freak!" + "Ez a sötét ökofurcs!" ], "kg308a": [ - "Kill it, kill it!" + "Öld meg, öld meg!" ], "kg309a": [ - "Suspect has transformed into", - "a creature of some kind." + "A gyanúsított átalakult", + "valamiféle lény." ], "kg310a": [ - "Sure is ugly." + "Persze csúnya." ], "kg311a": [ - "That's one ugly creature." + "Ez egy csúnya lény." ], "kg312a": [ - "Look out!" + "Vigyázz!" ], "kg313a": [ - "Fall back!" + "Visszaesik!" ], "kg314a": [ - "He's wasting everybody!" + "Mindenkit elpazarol!" ], "kg315a": [ - "We can't kill it!" + "Nem ölhetjük meg!" ], "kg316a": [ - "Stand your ground men!" + "Álljanak meg, férfiak!" ], "kg317a": [ - "The Krimzon Guard do not run!" + "A krimzoni gárda nem fut!" ], "kg318a": [ - "Watch out for his claws!" + "Vigyázz a karmaira!" ], "kg319a": [ - "Keep clear of his energy bolts!" + "Tartsa magát távol az energiacsavarjaitól!" ], "kg320a": [ - "This is a raid, do not resist!" + "Ez egy razzia, ne állj ellen!" ], "kg321a": [ - "Move in!" + "Beköltözni!" ], "kg322a": [ - "By order of Baron Praxis,", - "everyone here is to be terminated!" + "Praxis báró parancsára", + "itt mindenkit meg kell szüntetni!" ], "kg323a": [ - "Surrender and you will not suffer much." + "Add meg magad, és nem fogsz sokat szenvedni." ], "kg324a": [ - "It's that Underground monster freak!" + "Ez az a földalatti szörnyeteg!" ], "kg325a": [ - "Get him!" + "Kapd el!" ], "kg326a": [ - "All units converge on Water Slums!" + "Az összes egység a vízi nyomornegyedben fut össze!" ], "kg327a": [ - "We've got an Underground fighter!" + "Van egy földalatti harcosunk!" ], "kg328a": [ - "Burn 'em down!" + "Égesd el őket!" ], "kg329a": [ - "Stay together!" + "Együtt maradnak!" ], "kg330a": [ - "We've got 'em cornered!" + "Sarokba szorítottuk őket!" ], "kg331a": [ - "Suspect cornered in section two." + "A második szakaszban sarokba szorították a gyanúsítottat." ], "kg332a": [ - "There is no escape!" + "Nincs menekvés!" ], "kg333a": [ - "Resistance is futile!" + "Az ellenállás hiábavaló!" ], "kg334a": [ - "Give up the artifact, eco freak!" + "Add fel a műtárgyat, öko-furcs!" ], "kg335a": [ - "We've cut 'em off!" + "Levágtuk őket!" ], "kg336a": [ - "He's trapped!" + "Csapdába esett!" ], "kg337a": [ - "We got 'em!" + "Megvan őket!" ], "kg338a": [ - "We're taking heavy fire!" + "Nagy tüzet veszünk!" ], "kg339a": [ - "We're taking heavy casualties, send in backup!" + "Súlyos áldozatokat szedünk, küldjön tartalékot!" ], "kg340a": [ - "This guy knows how to fight!" + "Ez a fickó tudja, hogyan kell harcolni!" ], "kg341a": [ - "Hold your ground!" + "Tartsd a helyed!" ], "kg342a": [ - "Do not retreat!" + "Ne vonulj vissza!" ], "kg343a": [ - "We lost Beta squad!" + "Elvesztettük a Béta csapatot!" ], "kg344a": [ - "We need more men!" + "Több férfira van szükségünk!" ], "kg345a": [ - "He's on the south path!" + "A déli ösvényen van!" ], "kg346a": [ - "He's in the water!" + "A vízben van!" ], "kg347a": [ - "He's near the east hut, all units converge!" + "A keleti kunyhó közelében van, minden egység összefolyik!" ], "kg348a": [ - "We're gonna lose him!" + "El fogjuk veszíteni őt!" ], "kg349a": [ - "Intruder alert, sound the alarm!" + "Betolakodó riasztás, riasztás!" ], "kg350a": [ - "The Fortress is under attack!" + "Az erőd támadás alatt áll!" ], "kg351a": [ - "This is our house, boy!" + "Ez a mi házunk, fiú!" ], "kg352a": [ - "You've got brass coming into our Fortress!" + "Sárgaréz érkezik az erődünkbe!" ], "kg353a": [ - "You won't get out of here alive!" + "Élve nem jutsz ki innen!" ], "kg354a": [ - "Thanks for making this easy." + "Köszönjük, hogy ezt megkönnyítette." ], "kg355a": [ - "We're taking heavy casualties." + "Súlyos áldozatokat szedünk." ], "kg356a": [ - "He's getting in deep, stop him!" + "Mélyre kerül, állítsd meg!" ], "kg357a": [ - "Take this guy out, that's an order!" + "Vidd ki ezt a fickót, ez parancs!" ], "kg358a": [ - "Send in the shock squad!" + "Küldd be a sokkosztagot!" ], "kg359a": [ - "Bring in the heavy firepower!" + "Hozd be a nagy tűzerőt!" ], "kg360a": [ - "Send in the shield guards!" + "Küldd be a pajzsvédőket!" ], "kg361a": [ - "I'm on him!" + "rajta vagyok!" ], "kg362a": [ - "Let me at 'em!" + "Engedd meg őket!" ], "kg363a": [ - "I got 'em!" + "Megvannak!" ], "kg364a": [ - "Finish him off!" + "Végezzen vele!" ], "kg365a": [ - "He's moving toward the ammo room!" + "A lőszerszoba felé indul!" ], "kg366a": [ - "Intercept the intruder before he gets in too far!" + "Fogd el a betolakodót, mielőtt túl messzire jutna!" ], "kg367a": [ - "He's picking up a suspect." + "Felvesz egy gyanúsítottat." ], "kg368a": [ - "He's got an Underground agent with him!" + "Egy földalatti ügynök van vele!" ], "kg369a": [ - "Take 'em both out!" + "Vidd ki mindkettőt!" ], "kg370a": [ - "He's picked up another suspect." + "Újabb gyanúsítottat vett fel." ], "kg371a": [ - "We lost the guy he dropped off!" + "Elvesztettük a fickót, akit elvitt!" ], "kg372a": [ - "He's got a passenger." + "Van egy utasa." ], "kg373a": [ - "Driver is working with the Underground." + "A sofőr a földalattival dolgozik." ], "kg374a": [ - "Suspect vehicle taking damage, but still moving." + "A feltételezett jármű megsérült, de még mindig mozog." ], "kg375a": [ - "We need to cut 'em off!" + "Le kell vágnunk őket!" ], "kg376a": [ - "He's got another agent!" + "Van egy másik ügynöke!" ], "kg377a": [ - "Suspect driving erratically!" + "Gyanús, hogy szabálytalanul vezet!" ], "kg378a": [ - "Suspect still evading!" + "A gyanúsított még mindig kibújik!" ], "kg379a": [ - "We got 'em this time!" + "Ezúttal megkaptuk őket!" ], "kg380a": [ - "Suspect vehicle destroyed!" + "A gyanús jármű megsemmisült!" ], "kg381a": [ - "He's going for another vehicle!" + "Másik járműért megy!" ], "kg382a": [ - "We took 'em out!" + "Kivettük őket!" ], "kg383a": [ - "He's toast!" + "Ő pirítós!" ], "kg384a": [ - "Another win for the KG, good shooting, men." + "Újabb győzelem a KG-nek, jó lövés, férfiak." ], "kg385a": [ - "Suspect has evaded capture." + "A gyanúsított elkerülte az elfogást." ], "kg386a": [ - "Ough!" + "Jaj!" ], "kg387a": [ "Huh!" @@ -6184,19 +6184,19 @@ "Arghh!" ], "kg389a": [ - "Ughh!" + "Ugh!" ], "kg390a": [ "Hugh!" ], "kg391a": [ - "Aughh!" + "Jaj!" ], "kg392a": [ "Haugh!" ], "kg393a": [ - "Oof!" + "Hoppá!" ], "kg394a": [ "Hah!" @@ -6211,7 +6211,7 @@ "Ugh!" ], "kg398a": [ - "Huff!" + "Megsértődik!" ], "kg399a": [ "Argh!" @@ -6223,10 +6223,10 @@ "Huh!" ], "kg402a": [ - "Huuh!" + "Huh!" ], "kg403a": [ - "Haah!" + "Haha!" ], "kg404a": [ "Ahh!" @@ -6238,10 +6238,10 @@ "Arrgh!" ], "kg407a": [ - "Uargh!" + "Azta!" ], "kg408a": [ - "Ugh...!" + "Jaj...!" ], "kg409a": [ "Ugh!" @@ -6253,7 +6253,7 @@ "Hah!" ], "kg412a": [ - "Ugh...!" + "Jaj...!" ], "kg413a": [ "Gah...!" @@ -6265,16 +6265,16 @@ "Argh!" ], "kg416a": [ - "Ugh...!" + "Jaj...!" ], "kg417a": [ - "Uh..." + "Ööö..." ], "kg418a": [ "Ah...!" ], "kg419a": [ - "Uugh!" + "Ugh!" ], "kg420a": [ "Ah...!" @@ -6301,200 +6301,200 @@ "Ugh!" ], "kg428a": [ - "Oof!" + "Hoppá!" ], "kgv001": [ - "Stop!" + "Állj meg!" ], "kgv002": [ - "Open fire!" + "Tüzet nyit!" ], "kgv003": [ - "Move in!" + "Beköltözni!" ], "kgv004": [ - "Take 'em out!" + "Vedd ki őket!" ], "kgv005": [ - "Take him down!" + "Vedd le!" ], "kgv006": [ - "Shoot 'em, shoot 'em!" + "Lődd le őket, lődd le őket!" ], "kgv007": [ - "Die, outlaw!" + "Halj meg, betyár!" ], "kgv008": [ - "Eat this!" + "Edd meg ezt!" ], "kgv009": [ - "Fire, fire!" + "Tűz tűz!" ], "kgv010": [ - "Give it up, outlaw!" + "Add fel, betyár!" ], "kgv011": [ - "Seal off the area!" + "Zárd le a területet!" ], "kgv012": [ - "Call in reinforcements!" + "Hívj erősítést!" ], "kgv013": [ - "Riot in progress!" + "Zavarodás folyamatban!" ], "kgv014": [ - "Call for backup!" + "Hívjon tartalékért!" ], "kgv015": [ - "Stop the vehicle!" + "Állítsa meg a járművet!" ], "kgv016": [ - "You are under arrest!" + "Le van tartóztatva!" ], "kgv017": [ - "Pull over!" + "Húzd át!" ], "kgv018": [ - "Slow down!" + "Lassíts!" ], "kgv019": [ - "Move over!" + "Félreáll!" ], "kgv020": [ - "Get out of the vehicle!" + "Szállj ki a járműből!" ], "kgv021": [ - "Call in more Hellcats!" + "Hívjon több Hellcat-ot!" ], "kgv022": [ - "Requesting backup!" + "Biztonsági mentés kérése!" ], "kgv023": [ - "High speed chase in sector four!" + "Nagy sebességű üldözés a negyedik szektorban!" ], "kgv024": [ - "Suspect in vehicle!" + "Gyanúsított a járműben!" ], "kgv025": [ - "Suspect fleeing into sector five." + "A gyanúsított az ötös szektorba menekül." ], "kor001": [ - "I am so proud of you Jak, and you too, Daxter!", - "Together you have done real damage to the Baron.", - "We may win this war yet!" + "Nagyon büszke vagyok rád, Jak, és rád is, Daxter!", + "Együtt valódi kárt okoztak a bárónak.", + "Lehet, hogy még megnyerjük ezt a háborút!" ], "kor002": [ - "Excellent work, you are proving to be quite an asset.", - "Without eco, the Baron will soon topple,", - "and the city's future will be in our hands." + "Nagyszerű munka, nagyon értékesnek bizonyulsz.", + "Öko nélkül a báró hamarosan felborul,", + "és a város jövője a mi kezünkben lesz." ], "kor004": [ - "Another blow to the Baron, my good friends!", - "Very soon, our fortunes will change!" + "Újabb csapás a báróra, jó barátaim!", + "Hamarosan sorsunk megváltozik!" ], "krew001": [ - "Jak, this is Krew. I just talked to my racing client", - "and she told me you were pretty good with that JET-Board", - "of hers. My sources say a shipment of Krimzon Guard", - "listening equipment just arrived in the Port.", - "None of us, including the Underground, want those devices", - "up and running. It's not good for business.", - "Ride the JET-Board out into the Port", - "and destroy every Krimzon Guard crate you find.", - "There's sure to be a defense perimeter,", - "so watch out, 'ey?" + "Jak, ő Krew. Most beszéltem a versenyző ügyfelemmel", + "és azt mondta nekem, hogy nagyon ügyes vagy azzal a JET-Boarddal", + "az övétől. A forrásaim szerint Krimzon Guard szállítmánya", + "lehallgató berendezés most érkezett a kikötőbe.", + "Egyikünk sem akarja ezeket az eszközöket, beleértve az Undergroundot sem", + "fel és futás. Nem tesz jót az üzletnek.", + "Menjen ki a JET-Boarddal a kikötőbe", + "és semmisíts meg minden talált Krimzon Gárda ládát.", + "Biztos van egy védelmi kerület,", + "szóval vigyázz, jó?" ], "krew002": [ - "Excellent work, Jak. Even I am impressed.", - "I should keep unscrupulous Krimzon Guards", - "out of our business.", - "What's the world coming to when you can't buy off", - "a few guards with bribes?" + "Kiváló munka, Jak. Még én is le vagyok nyűgözve.", + "Meg kell tartanom a gátlástalan Krimzon-őröket", + "üzletünkből.", + "Mi lesz a világ, ha nem tudod kivásárolni", + "néhány őr kenőpénzzel?" ], "krew003": [ - "Ooooh... the bedtime stories were true!", - "The fabled Heart of Mar was hidden inside that ugly statue", - "of the old boy.", - "Nothing fractured, nothing gained! That's my motto. Hahaha...", - "For your loyalty, you'll find an excellent gun upgrade", - "stashed in a crate in the Port." + "Óóó... az esti mesék igazak voltak!", + "A mesés Mar Szíve abban a csúnya szoborban volt elrejtve", + "az öregfiúról.", + "Nem tört semmi, nem nyert semmi! Ez a mottóm. Hahaha...", + "Hűsége érdekében kiváló fegyverfrissítést talál", + "elrejtve egy ládában a Kikötőben." ], "krew004": [ - "That's one turret down. Keep looking!" + "Ez egy toronnyal lejjebb. Keresd tovább!" ], "krew005": [ - "Two turrets. Good work so far!" + "Két torony. Eddig jó munka!" ], "krew006": [ - "Three turrets gone. Nice! Keep it up!" + "Három torony eltűnt. Szép! Csak így tovább!" ], "krew007": [ - "Four turrets trashed. Haha... Lovely, boys! Go get 'em!" + "Négy torony kidőlt. Haha... Kedves fiúk! Menj el hozzájuk!" ], "krew008": [ - "Five turrets down the drain! Keep going." + "Öt torony a lefolyóba! Folytasd." ], "krew009": [ - "Six turrets out of commission.", - "Hah, I like the way you work." + "Hat torony üzemen kívül.", + "Hah, tetszik ahogy dolgozol." ], "krew010": [ - "Brass work, boys! You destroyed all the turrets, eh?", - "Now, come back to the Hip Hog." + "Rézmunka, fiúk! Elpusztítottad az összes tornyot, mi?", + "Most pedig térj vissza a Hip Hoghoz." ], "kwbf001": [ - "You know I can't play fair!", - "I have a secret weapon: my duplicity field!", - "Say hello to my little friends...", - "Ah, multiple me! Hahahaha... How delightful." + "Tudod, hogy nem tudok tisztességesen játszani!", + "Van egy titkos fegyverem: a kettősségmezőm!", + "Köszöntsd a kis barátaimat...", + "Ah, többen én! Hahahaha... Milyen elragadó." ], "kwbf002": [ - "Let me introduce you to my... \"crew.\"" + "Hadd mutassam be a... \"legénységemet\"." ], "kwbf003": [ - "Let's dance!" + "Táncoljunk!" ], "kwbf004": [ - "You will die!" + "Meg fogsz halni!" ], "kwbf005": [ - "Here we come!" + "Itt jövünk!" ], "kwbf006": [ - "My, don't my twins look stunning?" + "Jaj, hát nem lenyűgözőek az ikreim?" ], "kwbf007": [ - "You can't stop us all!" + "Nem állíthatsz meg mindannyiunkat!" ], "kwbf008": [ - "Surprise! More of me than you can handle." + "Meglepetés! Többet tőlem, mint amennyit elbírsz." ], "kwbf009": [ - "I've a few good men to help me." + "Van néhány jó emberem, akik segítenek nekem." ], "kwbf010": [ - "Get him!" + "Kapd el!" ], "kwbf011": [ - "UARGH! Try stopping me now!" + "UARGH! Most próbálj megállítani!" ], "kwbf012": [ - "You're getting lucky so far, 'ey?" + "Eddig szerencséd van, mi?" ], "kwbf013": [ - "I grow weary of this. We end it now." + "elegem van ebből. Most fejezzük be." ], "kwbf014": [ - "Hm-hm, I move pretty fast for a big man, 'ey?" + "Hm-hm, elég gyorsan mozgok egy nagy emberhez képest." ], "kwbf015": [ - "I float like a butterfly and sting like a wumpbee!" + "Lebegek, mint egy pillangó, és szúrok, mint egy wumpbee!" ], "kwbf016": [ "Urghh!" ], "kwbf017": [ - "Aurgh!" + "Argh!" ], "kwbf018": [ "Arghh!" @@ -6503,1353 +6503,1355 @@ "Urrghh!" ], "kwbf020": [ - "Urgh, ow!" + "Urgh, jaj!" ], "kwbf021": [ - "Die!" + "Meghal!" ], "kwbf022": [ - "Now I have you!" + "Most nálam vagy!" ], "kwbf023": [ - "You cannot win, Jak!" + "Nem nyerhetsz, Jak!" ], "kwbf024": [ - "Here's some pain!" + "Itt egy kis fájdalom!" ], "kwbf025": [ - "No!" + "Nem!" ], "kwbf026": [ - "You're trying my patience!" + "Próbálod a türelmemet!" ], "kwbf027": [ - "Stand still!" + "Állj meg!" ], "kwbf028": [ - "Haha, how did that feel?" + "Haha, milyen érzés volt?" ], "kwbf029": [ - "You should have walked away when you had a chance." + "El kellett volna menned, amikor volt rá lehetőséged." ], "kwbf030": [ - "Pop this!" + "Dobd fel ezt!" ], "kwbf031": [ - "You can't stop the bomb, Jak!" + "Nem tudod megállítani a bombát, Jak!" ], "kwbf032": [ - "Hahahaha, that felt good!" + "Hahahaha, ez jó érzés volt!" ], "kwbf033": [ - "I am the weapon master!" + "Én vagyok a fegyvermester!" ], "kwbf034": [ - "Had enough?" + "Elég volt?" ], "kwbf035": [ - "Here we come!" + "Itt jövünk!" ], "kwbf036": [ - "Dance for me, Jak!" + "Táncolj nekem, Jak!" ], "kwbf037": [ - "You can't get us all!" + "Nem kaphatsz meg minket!" ], "kwbf038": [ - "Tag! You're it." + "Címke! Te vagy az." ], "kwbf039": [ - "Phew. This is a bit of a workout..." + "Fú. Ez egy kis edzés..." ], "kwbf040": [ - "Which is the real me, Jak?" + "Melyik az igazi én, Jak?" ], "kwbf041": [ - "Finally... I get to put you in your place!" + "Végre... a helyedre helyezlek!" ], "kwbf042": [ - "Arghh! You little...!" + "Arghh! Te kis...!" ], "ora006": [ - "Bring me 200 more Metal Head Skull Gems", - "and I will show you another Dark Power." + "Hozz nekem még 200 fémfejű koponyagyöngyöt", + "és mutatok neked egy másik Sötét Erőt." ], "ora007": [ - "Bring me 200 more Skull Gems", - "and another power will be yours to control." + "Hozz nekem még 200 koponyagyöngyöt", + "és egy másik hatalom a tiéd lesz az irányítás." ], "ora008": [ - "Bring me more Skull Gems to receive control", - "over a Dark Power." + "Hozz nekem több koponyagyöngyöt, hogy átvehessem az irányítást", + "egy Sötét Erő felett." ], "ora009": [ - "You do not have enough Skull Gems.", - "Come back when you have collected more." + "Nincs elég koponyagyöngye.", + "Gyere vissza, ha többet gyűjtöttél." ], "ora010": [ - "I need more Skull Gems." + "Több koponyagyöngyre van szükségem." ], "ora011": [ - "Trust not your reliance on weapons." + "Ne bízzon a fegyverekben." ], "ora012": [ - "Use only your body and brain for this challenge." + "Csak a testedet és az agyadat használd ehhez a kihíváshoz." ], "ora013": [ - "Weapons are for the weak." + "A fegyverek a gyengéknek valók." ], "ora014": [ - "You must not use weapons in this challenge." + "Ebben a kihívásban nem szabad fegyvert használni." ], "pek001": [ - "Groark! I can't believe you actually did this thing!", - "Onin says she will search timelines for answers", - "about these sacred relics. I will find you then." + "Groark! Nem hiszem el, hogy tényleg ezt tetted!", + "Onin azt mondja, hogy idővonalon fog keresni a válaszokat", + "ezekről a szent ereklyékről. akkor megkereslek." ], "pek002": [ - "Groark! Whoa... well I'll be a moncaw's uncle, the Light Tower", - "actually does exist! The beam of light is shining somewhere", - "in the city! The Tomb of Mar was right under our noses", - "all along. And thanks to me, you found it!" + "Groark! Hú... hát én egy moncaw nagybátyja leszek, a Fénytorony", + "valóban létezik! Valahol világít a fénysugár", + "a városban! Mar sírja az orrunk alatt volt", + "Mindvégig. És hála nekem, megtaláltad!" ], "pek003": [ - "Wow! As I live and molt, one step closer to the Tomb.", - "I never thought we'd get this far!" + "Azta! Élek és vedlek, egy lépéssel közelebb a sírhoz.", + "Soha nem gondoltam volna, hogy idáig eljutunk!" ], "pek010": [ - "This is Onin's magic bowl.", - "Onin will make symbols appear from her bowl.", - "When the symbols appear, you must pop them before they", - "reach the ground. You must pop them quickly, pop only", - "the symbols you see. If you try to pop a symbol that is", - "not there, Onin will give you a penalty! Miss any symbols", - "and you will penalized! Each round will get faster.", - "Let's see how far you get.", - "You must get a high enough score to win." + "Ez Onin varázstála.", + "Onin szimbólumokat fog megjelentetni a táljából.", + "Amikor megjelennek a szimbólumok, elő kell ugrani őket", + "elérje a földet. Gyorsan fel kell dobnia őket, csak pop", + "a látható szimbólumokat. Ha megpróbálsz felbukkanni egy szimbólumot, az az", + "nem ott, Onin büntetést ad! Hiányzik minden szimbólum", + "és meg fogsz büntetni! Minden körben gyorsabb lesz.", + "Lássuk, meddig jutsz el.", + "Elég magas pontszámot kell elérnie a győzelemhez." ], "pek011": [ - "You are doing very well!" + "Nagyon jól csinálod!" ], "pek012": [ - "Huh, not bad." + "Huh, nem rossz." ], "pek013": [ - "Keep going, you can do it!" + "Folytasd, meg tudod csinálni!" ], "pek014": [ - "Pop any more than the true number of each symbol,", - "and you will be penalized! Groark!" + "Az egyes szimbólumok valódi számánál többet dobjon fel,", + "és meg fogsz büntetni! Groark!" ], "pek015": [ - "Ready? Go!" + "Kész? Megy!" ], "pek016": [ - "That symbol wasn't there, penalty!" + "Ez a szimbólum nem volt ott, büntetés!" ], "pek017": [ - "Hah, Onin got you! Pop only symbols that you see." + "Hah, Onin érted! Csak azokat a szimbólumokat jelenítse meg, amelyeket lát." ], "pek018": [ - "Here comes another round!", - "Give him another burst, Onin girl!" + "Jöhet az újabb kör!", + "Adj neki még egy sorozatot, Onin lány!" ], "pek019": [ - "She got you again! What is your problem?" + "Megint elkapott! Mi a problémád?" ], "pek020": [ - "I can't believe you've made it this far!" + "Nem hiszem el, hogy idáig eljutottál!" ], "pek021": [ - "Quickly! You are missing symbols!" + "Gyorsan! Hiányoznak a szimbólumok!" ], "pek022": [ - "You missed some!" + "Kihagytál néhányat!" ], "pek023": [ - "Faster! Faster!" + "Gyorsabban! Gyorsabban!" ], "pek024": [ - "Give it to him, Onin! More, Onin, more!", - "You go, girl, shake what your momma gave you!" + "Add oda neki, Onin! Még többet, Onin, még többet!", + "Menj, kislány, rázd meg, amit anyukád adott!" ], "pek025": [ - "Rockin' in the club." + "Ringázok a klubban." ], "pek026": [ - "He can't do that many!" + "Annyira nem tud!" ], "pek027": [ - "What? He's still going?" + "Mit? Még mindig megy?" ], "pek028": [ - "Let's see if he can handle it." + "Lássuk, bírja-e." ], "pek029": [ - "Go! Come on!" + "Megy! Gyerünk!" ], "pek030": [ - "Okay, so you're good." + "Oké, szóval ügyes vagy." ], "pek031": [ - "Wow! Not bad." + "Azta! Nem rossz." ], "pek032": [ - "Well, I laid an egg." + "Nos, tojtam egy tojást." ], "pek033": [ - "Amazing! You actually won!", - "I am without words, and that is rare." + "Elképesztő! Tényleg nyertél!", + "Szavak nélkül vagyok, és ez ritka." ], "pek034": [ - "You got enough points, congratulations!" + "Elég pontot kapott, gratulálok!" ], "pek035": [ - "Last penalty! You lose, loser." + "Utolsó büntetés! Veszted, vesztes." ], "pek036": [ - "You lost! Why am I not surprised?" + "Vesztettél! Miért nem vagyok meglepve?" ], "pek037": [ - "You lose! Would you like to try again?" + "Vesztesz! Szeretné újra megpróbálni?" ], "pek038": [ - "Ahh, you laid an egg. Too bad, so sad." + "Ahh, tojást tojtál. Kár, annyira szomorú." ], "pek039": [ - "Oooh, so close... not! Hehehe..." + "Óóó, olyan közel... nem! Hehehe..." ], "pek040": [ - "You made a valiant effort, but you suck!" + "Bátor erőfeszítést tettél, de szívás!" ], "pek041": [ - "Game over, finito, done, se acabó!" + "A játéknak vége, finito, kész, vége!" ], "prop002": [ - "As you all know, I was wounded during our last", - "glorious assault against the Metal Head Nest", - "many years ago. I have sacrificed everything", - "for this city and I demand only the same in return!", - "Loyalty will be rewarded,", - "death will await all others." + "Mint mindannyian tudják, megsebesültem az utolsó alkalom során", + "dicsőséges támadás a Metal Head Nest ellen", + "sok évvel ezelőtt. mindent feláldoztam", + "ezért a városért és csak ugyanezt követelem cserébe!", + "A hűség jutalmat kap,", + "a halál mindenki másra vár." ], "prop003": [ - "The Dark Eco inside you will eventually kill you, Jak.", - "Its destructive effects cannot be stopped.", - "Once you are in its chaotic grip, it will not let you go", - "until you slide into insanity. Turn yourself in, and I will", - "kill you mercifully and painlessly,", - "it is your only way out." + "A benned lévő Dark Eco végül megöl, Jak.", + "Pusztító hatását nem lehet megállítani.", + "Ha egyszer a kaotikus szorításában vagy, nem fog elengedni", + "amíg bele nem csúszik az őrületbe. Add fel magad, és én megteszem", + "irgalmasan és fájdalommentesen megölsz,", + "ez az egyetlen kiút." ], "prop004": [ - "Don't try to make a fool out of me, Jak.", - "Just because I haven't killed you yet doesn't", - "mean I'm not onto you. The citizens of this city", - "worship me because I offer them safety.", - "All I ask in return is for their lives.", - "I'll find you, and when I do, you'll wish", - "you died in prison." + "Ne próbálj bolondot csinálni belőlem, Jak.", + "Csak azért, mert még nem öltelek meg", + "azt jelenti, hogy nem vagyok veled. Ennek a városnak a polgárai", + "imádj engem, mert biztonságot ajánlok nekik.", + "Cserébe csak az életükért kérek.", + "Megkereslek, és ha megkereslek, kívánni fogod", + "meghaltál a börtönben." ], "prop005": [ - "Attention, my loyal citizens! We are looking for a", - "rebel fugitive who has caused the city considerable", - "damage of late. This man is armed and extremely", - "dangerous and can somehow change into a monstrous", - "creature. We have reports he is working with the", - "Metal Heads to subvert your city and your safety.", - "Report all sightings immediately!" + "Figyelem, hűséges polgáraim! Keresünk a", + "lázadó szökevény, aki jelentős károkat okozott a városnak", + "késői kár. Ez az ember fegyveres és rendkívül", + "veszélyes és valahogy szörnyűvé változhat", + "teremtmény. Jelentéseink szerint együtt dolgozik a", + "Fémfejek, amelyek felforgatják városát és biztonságát.", + "Azonnal jelents minden észlelést!" ], "prop006": [ - "Brave citizens, today is the anniversary of the great", - "battle that ruined our city section we now call", - "Dead Town. Remember those who died", - "that day and how much we owe the Metal Heads", - "for their treachery! Remember how bravely I fought", - "to save those poor souls of the overrun section", - "and reflect on how grateful you should all be that the", - "Krimzon Guard keeps you safe each day." + "Bátor polgárok, ma van a nagyok évfordulója", + "csatát, amely tönkretette városrészünket, amelyet most hívunk", + "Holt város. Emlékezz azokra, akik meghaltak", + "aznap és mennyivel tartozunk a fémfejeknek", + "árulásukért! Emlékezz, milyen bátran harcoltam", + "hogy megmentse az elgázolt szakasz azon szegény lelkeit", + "és gondolkodj el azon, mennyire hálásnak kell lenned, hogy a", + "A Krimzon Guard minden nap biztonságban tartja magát." ], "prop007": [ - "This is your Baron. The reports of a Metal Head", - "invasion of the city are vastly overblown.", - "I assure you this is but a small incursion and we will", - "defeat it shortly. Stay in your homes, do not panic,", - "or you will be punished!" + "Ez a te báród. Egy fémfej jelentései", + "A város inváziója jelentősen túlnőtt.", + "Biztosíthatom önöket, hogy ez csak egy kis behatolás, és meg fogjuk tenni", + "rövidesen győzd le. Maradjon otthon, ne essen pánikba,", + "vagy megbüntetik!" ], "prop008": [ - "Attention citizens, this is your Baron speaking.", - "There have been several unauthorized uses of the", - "city's old gate locks. Fortunately, these breaches", - "have not resulted in contamination, but we all know", - "how deadly the Wasteland is. No one is allowed", - "outside the city without authorization, let it be", - "known that any violators will be caught", - "and executed." + "Polgárok figyelem, itt a bárótok beszél.", + "Számos jogosulatlan felhasználásra került sor", + "város régi kapuzárai. Szerencsére ezek a jogsértések", + "nem okoztak szennyeződést, de mindannyian tudjuk", + "milyen halálos a Wasteland. Senkinek sem szabad", + "városon kívül engedély nélkül, legyen", + "ismert, hogy minden megsértőt elfognak", + "és kivégezték." ], "prop009": [ - "Serve your city." + "Szolgálja a városát." ], "prop010": [ - "Sacrifice for your city, and all will prosper!" + "Adj áldozatot városodért, és minden boldogulni fog!" ], "prop011": [ - "You are safe, because I care." + "Biztonságban vagy, mert érdekel." ], "prop012": [ - "All Metal Heads must die!" + "Minden fémfejnek meg kell halnia!" ], "prop013": [ - "Work hard, and be grateful." + "Dolgozz keményen, és légy hálás." ], "prop014": [ - "Report all wrongdoers." + "Jelentsen minden jogsértőt." ], "prop015": [ - "Remember, even your friends could be enemies." + "Ne feledje, még a barátai is lehetnek ellenségek." ], "prop016": [ - "Turn in all who subvert." + "Forduljon mindenki, aki felforgatja." ], "prop017": [ - "Strength is our only option!" + "Az erő az egyetlen lehetőségünk!" ], "prop018": [ - "Obey and be happy." + "Engedelmeskedj és légy boldog." ], "prop019": [ - "Sacrifice is something you should do", - "for your city." + "Az áldozat az, amit meg kell tenned", + "a városodért." ], "prop020": [ - "Sacrifice for your city." + "Áldozat a városért." ], "prop021": [ - "Remember, even friends might be enemies." + "Ne feledje, még a barátok is ellenségek lehetnek." ], "prop022": [ - "The city needs your sacrifice." + "A városnak szüksége van az ön áldozatára." ], "prop023": [ - "It is better inside the walls!" + "A falon belül jobb!" ], "prop024": [ - "The law will show no mercy." + "A törvény nem mutat kegyelmet." ], "prop025": [ - "Justice is swift." + "Az igazságszolgáltatás gyors." ], "prop026": [ - "The Underground movement is dead!" + "Az Underground mozgalom halott!" ], "prop027": [ - "Join the Krimzon Guard and your family", - "will be allowed to stay." + "Csatlakozz a Krimzon gárdához és családodhoz", + "engedik, hogy maradjon." ], "prop028": [ - "One way: My way." + "Egy út: az én utam." ], "prop029": [ - "To lead is to control." + "Vezetni annyi, mint irányítani." ], "prop030": [ - "Give up your freedom and I will protect you." + "Add fel a szabadságodat, és én megvédelek." ], "prop031": [ - "Have faith in me and the Promised Land is yours." + "Bízz bennem, és az Ígéret Földje a tiéd." ], "prop032": [ - "Your city needs a strong leader, not a childish fool." + "A városodnak erős vezetőre van szüksége, nem egy gyerekes bolondra." ], "prop033": [ - "Welcome not the unknown face." + "Üdvözöljük ne az ismeretlen arcot." ], "prop034": [ - "Shun those who would defy me!" + "Kerüld azokat, akik dacolnának velem!" ], "prop035": [ - "I am the face of Haven City." + "Én vagyok Haven City arca." ], "prop036": [ - "Without my strength, there would be no city." + "Az én erőm nélkül nem lenne város." ], "prop037": [ - "Follow me to a safer future!" + "Kövess engem a biztonságosabb jövő felé!" ], "prop038": [ - "You are safe inside the walls with me." + "Velem biztonságban vagy a falak között." ], "prop039": [ - "Defy... and die." + "Dacolj... és halj meg." ], "prop040": [ - "Welcome to Haven City!", - "All laws are enforced for your safety.", - "Obey me and you will not be punished." + "Üdvözöljük Haven Cityben!", + "Minden törvényt betartanak az Ön biztonsága érdekében.", + "Engedelmeskedj nekem, és nem fogsz megbüntetni." ], "prop041": [ - "The city is safe. I will not allow harm", - "to befall you, trust me." + "A város biztonságban van. nem engedek kárt", + "hogy érjen, bízz bennem." ], "prop042": [ - "Rest assured, I will destroy the Metal Heads.", - "One way or another." + "Nyugodj meg, megsemmisítem a fémfejeket.", + "Így vagy úgy." ], "prop043": [ - "To all citizens, this puny Underground revolt", - "will be dealt with by all aggressive means.", - "We will crush these arrogant upstarts, they will not", - "be allowed to threaten me or this city's order!" + "Minden állampolgár számára ez a csekély Underground lázadás", + "minden agresszív eszközzel kezelni fogják.", + "Mi összetörjük ezeket az arrogáns felkapaszkodókat, ők nem", + "engedjék meg, hogy engem vagy ennek a városnak a rendjét fenyegessenek!" ], "prop044": [ - "To all citizens of this great city, there is a monster", - "among you, masquerading as a man!", - "He is dangerous and must be destroyed!", - "I offer a reward of eco for his capture, or, if you", - "have a loved one in prison, I will exchange them for", - "this renegade. I promise." + "Ennek a nagyszerű városnak minden polgára számára van egy szörnyeteg", + "közöttetek, férfinak álcázva magát!", + "Veszélyes, és meg kell semmisíteni!", + "Öko jutalmat ajánlok az elfogásáért, vagy ha ön", + "van egy szeretett ember a börtönben, elcserélem érte", + "ez a renegát. Ígérem." ], "prop045": [ - "To all who defy me! I am watching you,", - "I am everywhere, I am this city!" + "Mindenkinek, aki szembeszáll velem! Nézlek téged,", + "Mindenhol ott vagyok, én vagyok ez a város!" ], "prop046": [ - "This is your Baron. I have been informed by the", - "ministry of extreme labor that worker productivity is", - "down this month! That is unacceptable!", - "I give you safety and this is how you repay me?", - "You must work harder, not smarter!", - "Free the mind and the body will do as it's told,", - "forced labor will set you free!", - "And to help you in your spiritual motivation...", - "quotas are doubled next month!" + "Ez a te báród. Tájékoztatást kaptam a", + "Az extrém munka minisztériuma, amely a munkások termelékenységét jelenti", + "le ebben a hónapban! Ez elfogadhatatlan!", + "Biztonságot adok neked, és te így fizetsz vissza?", + "Keményen kell dolgoznod, nem okosabban!", + "Szabadítsd fel az elmét, és a test azt fogja tenni, amit mondanak neki,", + "a kényszermunka szabaddá tesz!", + "És hogy segítsek a lelki motivációdban...", + "jövő hónapban megduplázzák a kvótákat!" ], "prop047": [ - "Due to recent, uh... \"attrition\" difficulties,", - "this city needs fresh Krimzon Guard recruits!", - "Everyone is asked to volunteer members of their family!", - "Come down to your friendly Fortress facility.", - "Or else!" + "A közelmúltbeli, uh... \"lemorzsolódási\" nehézségek miatt,", + "ennek a városnak friss Krimzon gárda újoncokra van szüksége!", + "Kérünk mindenkit, hogy családtagjait önkéntesként jelentkezzen!", + "Gyere le a barátságos erőd létesítményébe.", + "Különben!" ], "prop048": [ - "As your Baron, I am instituting a \"no hoverboard\" rule", - "in the city! Young delinquents with nothing better", - "to do than float around and do tricks! Huh!", - "I'll put all violators into the Guard and teach them", - "some discipline. No skating, it's the law!" + "Mint bárója, bevezetem a „lebegőtábla tilos” szabályt", + "a városban! Fiatal delikvensek, akiknél nincs jobb", + "tenni, mint lebegni és trükközni! Huh!", + "Minden szabálysértőt az Őrségbe helyezek, és megtanítom őket", + "némi fegyelem. Tilos korcsolyázni, ez a törvény!" ], "prop049": [ - "I am disappointed with this city's lack of", - "committment and sacrifice. Work harder! Eat less!", - "Drink only when I tell you! Sleep is optional.", - "We are at war with an outside threat,", - "don't make me declare war on you as well!" + "Csalódott vagyok a város hiánya miatt", + "elkötelezettség és áldozatvállalás. Keményebben dolgozik! Kevesebbet eszik!", + "Csak akkor igyál, ha én mondom! Az alvás nem kötelező.", + "Külső fenyegetéssel állunk háborúban,", + "ne kényszeríts arra, hogy hadat üzenjek neked is!" ], "prop050": [ - "Greetings, people of this wonderful utopia. This year's", - "championship race will begin shortly. All citizens", - "not under house arrest are invited to come down to", - "the Stadium and watch your favorite son Erol", - "once again show how the Krimzon Guard are the elite", - "warriors of this city. Bring the whole family! The first", - "one thousand children will get a mandatory", - "Krimzon Guard recruitment package and be", - "\"asked\" to join the Guard for life, what a treat!" + "Üdvözlöm, ennek a csodálatos utópiának az emberei. Ezek az évek", + "bajnoki futam hamarosan kezdődik. Minden állampolgár", + "nincs házi őrizetben, felkérik, hogy jöjjön le", + "a Stadionba, és nézze meg kedvenc fiát, Erolt", + "még egyszer mutasd meg, hogy a krimzoni gárda az elit", + "ennek a városnak a harcosai. Hozd el az egész családot! Az első", + "ezer gyerek kap majd kötelezőt", + "Krimzon gárda toborzási csomag és legyen", + "\"felkért\" egy életre a gárdához, micsoda csemege!" ], "prop051": [ - "This is your Baron, I am still in control!", - "And I assure you, there's absolutely no Metal Heads", - "in the city. Anyone who contradicts this fact...", - "will be shot! The current situation is merely", - "an elaborate propaganda hoax, perpetrated by", - "the outlawed Underground militia trying to", - "subvert our laws and discredit those who protect you", - "while you sleep! Pay no attention to this foolish hoax,", - "there are no Metal Heads within 100 miles of this city!" + "Ez a te báró, még mindig én irányítom!", + "És biztosíthatom önöket, hogy egyáltalán nem létezik fémfej", + "a városban. Aki ennek a ténynek ellentmond...", + "le fogják lőni! A jelenlegi helyzet csupán", + "egy kidolgozott propaganda-hoax, amelyet elkövetett", + "a törvényen kívüli földalatti milícia megpróbálja", + "felforgatni a törvényeinket és lejáratni azokat, akik védenek téged", + "amíg alszol! Ne figyelj erre az ostoba álhírre,", + "ennek a városnak 100 mérföldes körzetében nincs fémfej!" ], "prop052": [ - "This is Baron Praxis. We have taken back the city", - "and the Metal Heads are now fleeing before us!", - "Victory is at hand! Continue to fight for the freedom", - "I may some day give you. Continue to defy these", - "enemies of my law and order...", - "and continue to die for me." + "Ő Praxis báró. Visszavettük a várost", + "és a Fémfejek most menekülnek előlünk!", + "A győzelem kéznél van! Folytassa a harcot a szabadságért", + "Lehet, hogy egy nap adok neked. Továbbra is dacolj ezekkel", + "törvényem és rendem ellenségei...", + "és haljon tovább értem." ], "prop053": [ - "Fear not the men in red. Sure, there are occasional", - "complaints about their over-aggressive policing,", - "wanton destruction of people's property during raids,", - "mass-arrests, misplaced loved ones and whatnot.", - "Hey, we're only human! Running a city can be", - "tougher than it looks, imagine how much worse", - "it would be if the Metal Heads were in charge!" + "Ne félj a piros ruhás férfiaktól. Persze vannak alkalmanként", + "a túl agresszív rendőri tevékenységükkel kapcsolatos panaszok,", + "az emberek tulajdonának szándékos megsemmisítése razziák során,", + "tömeges letartóztatások, eltévedt szerettek és miegymás.", + "Hé, mi csak emberek vagyunk! A város vezetése lehet", + "keményebb, mint amilyennek látszik, képzeld el, mennyivel rosszabb", + "az lenne, ha a fémfejek irányítanák!" ], "prop054": [ - "We've had a few incidents with our lower class labor", - "force lately. If your Lurker is acting up, call Krimzon", - "Animal Control. Is your Lurker in a tree? Stuck in a", - "sewer grate? Foaming at the mouth? Call", - "the friendly officers of the K.A.C. and they will deal", - "with your furry slave. with all the love and care it", - "deserves... then haul it away for reconditioning.", - "Remember, Lurkers can be dangerous!" + "Volt néhány incidens az alsóbb osztályú munkásainkkal", + "erőt mostanában. Ha a lurkere cselekszik, hívja Krimzont", + "Állatszabályozás. A lurkód egy fában van? Beragadt a", + "csatorna rács? Habzik a száj? Hívás", + "a K.A.C. barátságos tisztjei és elintézik", + "szőrös rabszolgáddal. minden szeretettel és törődéssel", + "megérdemli... aztán vigye el felújításra.", + "Ne feledje, a lurkók veszélyesek lehetnek!" ], "prop055": [ - "Please give generously to the Baron eco fund.", - "Your munificent donation wil be used for a variety", - "of humanitarian needs: bombs, guns, armor, genetic", - "alteration research, all in the name of preserving this", - "wonderful city of ours. Give often, give freely...", - "or it will be taken from you!" + "Kérem, támogassa nagylelkűen a Baron ökoalapot.", + "Bőséges adományát sokféle célra fordítjuk", + "humanitárius szükségletek: bombák, fegyverek, páncélok, genetikai", + "változáskutatás, mindezt ennek megőrzése érdekében", + "csodálatos városunk. Adj gyakran, adj ingyen...", + "vagy elveszik tőled!" ], "prop056": [ - "It can be so lonely at the top and looking down from", - "up here I can see that this dirty city is in desperate", - "need of revitalization. So, to that end, we", - "will be bulldozing many sections of the city in the", - "coming weeks! All complaints against this", - "construction initiative can be brought,", - "in-person, to the Fortress Prison where they will be", - "\"reviewed.\" Condemned city sections are to", - "be evacuated before razing begins.", - "Anyone still in their homes will be ignored." + "Olyan magányos lehet a tetején és onnan nézve", + "itt fent látom, hogy ez a koszos város kétségbeesett állapotban van", + "revitalizációra van szükség. Tehát ennek érdekében mi", + "buldózerrel dózerolják majd a város számos részét", + "következő hetekben! Minden panasz ez ellen", + "be lehet hozni az építési kezdeményezést,", + "személyesen az Erődbörtönbe, ahol lesznek", + "\"áttekintve\". Elítélt városrészek az", + "evakuálni kell, mielőtt elkezdődik.", + "Aki még az otthonában tartózkodik, azt figyelmen kívül hagyják." ], "prop057": [ - "The Metal Head attack will not succeed!", - "Your Baron has taken certain measures", - "to guarantee that the Metal Heads will NEVER hold", - "this city for long. Rest assured, I will snatch victory", - "from the jaws of defeat, whatever the cost!", - "I vowed never to let this city fall, and I intend to keep", - "that promise. What must happen is for the good of all!", - "Remember, to die in victory is a glorious", - "badge of honor!" + "A Metal Head támadás nem fog sikerülni!", + "A bárója megtett bizonyos intézkedéseket", + "garantálni, hogy a fémfejek SOHA nem fognak tartani", + "sokáig ezt a várost. Nyugodj meg, megnyerem a győzelmet", + "a vereség pofájából, bármi áron!", + "Megfogadtam, hogy soha nem hagyom, hogy ez a város eldőljön, és be is fogom tartani", + "azt az ígéretet. Aminek meg kell történnie, az mindenki javát szolgálja!", + "Ne feledd, győzelemben meghalni dicsőség", + "díszjelvény!" ], "prop058": [ - "This is Baron Praxis. As our city faces its worst threat", - "in three hundred years, I am faced with serious", - "decisions concerning our future. I regret that I have", - "few choices left. I command you all to return to your", - "homes and say goodbye to your families.", - "Be assured, we will not lose this fight, one way", - "or another! The time has come to show these creatures", - "what we're capable of when all hope is lost!", - "It has been a pleasure ruling over you", - "to the end." + "Ő Praxis báró. Mivel városunk a legrosszabb fenyegetéssel néz szembe", + "háromszáz év alatt komoly dolgokkal állok szemben", + "jövőnket érintő döntéseket. Sajnálom, hogy van", + "kevés választási lehetőség maradt. Megparancsolom mindnyájatoknak, hogy térjetek vissza a tiétekhez", + "otthonaikba, és búcsút mondjon családjának.", + "Biztos lehetsz abban, hogy nem fogjuk elveszíteni ezt a harcot, csak úgy", + "vagy egy másik! Eljött az idő, hogy megmutassuk ezeket a lényeket", + "mire vagyunk képesek, ha minden remény elveszett!", + "Öröm volt uralkodni feletted", + "a végéig." ], "sam001": [ - "This is Samos. Jak, I need you to go out to the ruins", - "in Dead Town and visit my old hut. It's now time to retrieve", - "something I hid there long ago, good luck! And Daxter...", - "clean up my place while you're out there!" + "Ez Samos. Jak, ki kell menned a romokhoz", + "Dead Townban, és látogassa meg régi kunyhómat. Itt az ideje, hogy visszaszerezze", + "valamit, amit régen ott rejtettem, sok sikert! És Daxter...", + "takarítsd ki a helyem, amíg kint vagy!" ], "sam002": [ - "This is Samos. Now that you boys are here", - "I want you to get up to my old hut. There is something there", - "that we need! Good luck, and watch our for Metal Heads." + "Ez itt Samos. Most, hogy itt vagytok, fiúk", + "Azt akarom, hogy menj fel a régi kunyhómba. Van ott valami", + "amire szükségünk van! Sok sikert, és nézze meg a Metal Heads-t." ], "sam003": [ - "This is Samos, Jak. the Metal Heads must have taken", - "the giant gate ring to their Nest in the Wasteland.", - "If they're ever going to use that ring to open a rift back", - "to our old village, we need to get into the Nest and find it." + "Itt Samos, Jak. a Metal Heads biztosan elvette", + "az óriáskapu cseng a Fészkükhöz a Pusztán.", + "Ha valaha is használni fogják azt a gyűrűt, hogy megszakadjanak", + "régi falunkba, be kell jutnunk a Fészekbe és meg kell találnunk." ], "sam004": [ - "You did well, Jak. Luckily, the Precursor Stone wasn't in that", - "bomb when it went off or none of us would be here", - "right now. Come back to the race garage", - "as soon as you can." + "Jól tetted, Jak. Szerencsére a Precursor Stone nem volt benne", + "bomba, amikor felrobbant, különben egyikünk sem lesz itt", + "épp most. Gyere vissza a versenygarázsba", + "olyan hamar ahogy csak tudod." ], "sam005": [ - "Good work so far, boys!", - "Find Young Samos and give him the Life Seed." + "Eddig is szép munka volt fiúk!", + "Keresd meg Fiatal Samost, és add neki az Életmagot." ], "sam006": [ - "Finally, you got here! Find the Lurker Totem", - "and retrieve a piece of the Seal of Mar on its top." + "Végre megérkeztél! Keresse meg a Lurker Totemet", + "és elővesz egy darabot a Mar Pecsétből a tetején." ], "sam007": [ - "You've got to get the boy safely to the Power Station, Jak!" + "Biztonságban kell vinned a fiút az Erőműhöz, Jak!" ], "sam008": [ - "Thank you for protecting us, Jak.", - "We'll meet you at the Nest." + "Köszönjük, hogy megvédtél minket, Jak.", + "Találkozunk a Fészekben." ], "sigc001": [ - "Hold on there, we need to teach you how to use this baby!" + "Tarts ki, meg kell tanítanunk, hogyan kell használni ezt a babát!" ], "sigc002": [ - "The Scatter Gun is a good short-range weapon", - "with a wide field of fire." + "A Scatter Gun jó kis hatótávolságú fegyver", + "széles tűztérrel." ], "sigc003": [ - "To fire the weapon, press the trigger." + "A fegyver kilövéséhez nyomja meg a ravaszt." ], "sigc004": [ - "Good! Some kick, huh?" + "Jó! Egy kis rúgás, mi?" ], "sigc005": [ - "It's not the fastest firing weapon in the world, though." + "Bár nem ez a világ leggyorsabban tüzelõ fegyvere." ], "sigc006": [ - "You can put your weapon away or pull it out at anytime." + "Fegyverét bármikor elteheti vagy kihúzhatja." ], "sigc007": [ - "Try putting the weapon away." + "Próbáld meg eltenni a fegyvert." ], "sigc008": [ - "Easy, huh?" + "Könnyű, mi?" ], "sigc009": [ - "Now take the weapon back out." + "Most vegye ki a fegyvert." ], "sigc010": [ - "Good!" + "Jó!" ], "sigc011": [ - "You can find red ammo inside Krimzon Guard crates." + "Piros lőszert találhatsz a Krimzon Guard ládáiban." ], "sigc012": [ - "Shoot the crates." + "Lődd le a ládákat." ], "sigc013": [ - "Great, now you're ready!" + "Remek, most készen állsz!" ], "sigc014": [ - "Want to try the Scatter Gun course?" + "Ki szeretné próbálni a Scatter Gun tanfolyamot?" ], "sigc015": [ - "The blaster is a good all-around choice", - "with a nice rate of fire." + "A blaster mindenre jó választás", + "szép tűzsebességgel." ], "sigc016": [ - "This weapon requires more aiming ability." + "Ez a fegyver nagyobb célzási képességet igényel." ], "sigc017": [ - "You can switch weapon modes at anytime." + "Bármikor válthat fegyvermódot." ], "sigc018": [ - "You can find yellow ammo in crates." + "Sárga lőszert ládákban találhatsz." ], "sigc022": [ - "Would you like to test your skills on the gun course?" + "Szeretnéd próbára tenni tudásodat a fegyvertanfolyamon?" ], "sigc023": [ - "Which course do you want to play?" + "Melyik pályán szeretnél játszani?" ], "sigc024": [ - "Shoot every target. The faster you shoot each target", - "the more points you'll get." + "Lőj le minden célpontot. Minél gyorsabban lősz minden célt", + "annál több pontot kapsz." ], "sigc025": [ - "Hold your fire on civvies.", - "Hit a friendly target and points will be deducted." + "Tartsd a tüzet a civilekre.", + "Találj el egy baráti célpontot, és a pontok levonásra kerülnek." ], "sigc026": [ - "Good luck." + "Sok szerencsét." ], "sigc027": [ - "Lock and load. Ready, go!" + "Zárás és betöltés. Kész, menj!" ], "sigc028": [ - "Perfect! You can be my backup any day." + "Tökéletes! Bármelyik nap lehetsz a tartalékom." ], "sigc029": [ - "You did it, excellent shooting!" + "Megcsináltad, remek felvétel!" ], "sigc030": [ - "Nice shooting! You got potential, kid!" + "Szép lövöldözés! Van benned potenciál, kölyök!" ], "sigc031": [ - "Not bad, you'll do." + "Nem rossz, megteszed." ], "sigc032": [ - "Try again, rookie. You're still a bit rusty with that hardware." + "Próbáld újra, újonc. Kicsit még rozsdás vagy ezzel a hardverrel." ], "sigc033": [ - "Not bad, but not good. Try again?" + "Nem rossz, de nem jó. Próbáld újra?" ], "sigc034": [ - "Close, but in the thick, close won't cut it. Try again?" + "Zárja be, de a vastagon, szorosan nem vágja el. Próbáld újra?" ], "sigc035": [ - "Care to try again? Or is your momma calling?" + "Szeretné újra megpróbálni? Vagy anyukád hív?" ], "sigc036": [ - "You're not up to speed yet, try again?" + "Még nem érted a sebességet, próbáld újra?" ], "sigc037": [ - "You gotta shoot those targets faster!" + "Gyorsabban kell lőni ezeket a célokat!" ], "sigc038": [ - "Be the gun, baby!" + "Légy a fegyver, bébi!" ], "sigc039": [ - "It's all about reaction time." + "Minden a reakcióidőn múlik." ], "sigc040": [ - "Different gun modes come in handy against different targets." + "A különböző fegyvermódok jól jöhetnek különböző célpontok ellen." ], "sigc041": [ - "Be cool and you'll rule." + "Légy hűvös és uralkodni fogsz." ], "sigc043": [ - "Try switching to the Scatter Gun." + "Próbálj meg a Scatter Gunra váltani." ], "sigc053": [ - "Faster on the trigger, cherry." + "Gyorsabban a ravaszt, cseresznye." ], "sigc054": [ - "That was a civilian!" + "Ez civil volt!" ], "sigc055": [ - "I said \"don't shoot civvies,\" itchy finger!" + "Azt mondtam, \"ne lőj civveket\", viszket az ujj!" ], "sigc056": [ - "Great job!" + "Nagyszerű munka!" ], "sigc057": [ - "Awesome round, I feel sorry for those Metal Heads already." + "Félelmetes kör, máris sajnálom azokat a Metal Headeket." ], "sigc058": [ - "That was a sweet round, you make it look easy!" + "Édes kör volt, megkönnyíted!" ], "sigc059": [ - "You smoked that course!" + "Dohányoztál azon a tanfolyamon!" ], "sigc060": [ - "The Metal Heads will eat you alive, rookie! Do it over!" + "A Metal Heads élve megesz, újonc! Végezze el!" ], "sigc061": [ - "You need some practice." + "Kell egy kis gyakorlat." ], "sigc062": [ - "I remember my rookie days, keep trying." + "Emlékszem az újonc napjaimra, próbálkozz tovább." ], "sigc063": [ - "Perfect round! You are the man." + "Tökéletes kör! Te vagy a férfi." ], "sigc064": [ - "Perfect shooting! I'm impressed." + "Tökéletes lövöldözés! Le vagyok nyűgözve." ], "sigc065": [ - "Whoa, rock and roll, baby! That was a perfect round." + "Hú, rock and roll, kicsim! Tökéletes kör volt." ], "sigc066": [ - "Nice shot!" + "Szép lövés!" ], "sigc067": [ - "Wasted 'em!" + "Elpazarolták őket!" ], "sigc068": [ - "Very nice! Reminds me of me." + "Nagyon szép! Engem emlékeztet." ], "sigc069": [ - "Make 'em fear you." + "Féljenek tőled." ], "sigc070": [ - "Good combo!" + "Jó kombó!" ], "sigc071": [ - "I love seeing you work!" + "Szeretem látni, hogy dolgozol!" ], "sigc072": [ - "Now switch back to the Blaster." + "Most váltson vissza a Blasterre." ], "sigc073": [ - "You can combo your attacks by kicking,", - "then firing your weapon." + "Kombinálhatod a támadásaidat rúgással,", + "majd elsüti a fegyverét." ], "sigc074": [ - "Try a kick-shot combo." + "Próbáljon ki egy kick-shot kombót." ], "sigc075": [ - "Kick the first target, then shoot while kicking", - "to automatically hit the second target." + "Rúgd az első célpontot, majd rúgás közben lőj", + "hogy automatikusan elérje a második célpontot." ], "sigc076": [ - "Great move!" + "Remek lépés!" ], "sigc077": [ - "Not quite, try again. Kick then shoot, almost at the same time." + "Nem egészen, próbáld újra. Rúgj, majd lőj, szinte ugyanabban az időben." ], "sigc078": [ - "Make sure you shoot while you're kicking to get the combo." + "Győződjön meg róla, hogy rúgás közben lő, hogy megszerezze a kombinációt." ], "sigc079": [ - "Give it another shot." + "Adj még egy esélyt." ], "sigc080": [ - "Now that's a Wastelander move!", - "They won't know what hit 'em!" + "Ez most egy Wastelander lépés!", + "Nem fogják tudni, mi ütötte meg őket!" ], "sigc081": [ - "Think you can handle the Blaster course?" + "Gondolod, hogy bírod a Blaster tanfolyamot?" ], "sigf001": [ - "You wasted 'em all! I'm still not sure why combat Metal Heads", - "are scouting this close to the city. To be honest,", - "I wasn't sure you could handle this gig, nice work!" + "Elpazaroltad mindet! Még mindig nem tudom, miért kell a Metal Heads ellen harcolni", + "felderítik ezt a városhoz közel. Őszintén szólva,", + "Nem voltam benne biztos, hogy bírod ezt a koncertet, szép munka!" ], "sigt003": [ - "Here we go!" + "Essünk neki!" ], "sigt004": [ - "Follow me!" + "Kövess engem!" ], "sigt005": [ - "Get behind me while I toast that tank." + "Állj mögém, amíg megpirítom azt a tankot." ], "sigt006": [ - "Hurry up kid, I don't have all day!" + "Siess kölyök, nincs egész napom!" ], "sigt007": [ - "This way!" + "Ily módon!" ], "sigt008": [ - "Toast those bad boys up ahead." + "Pirítsd meg a rosszfiúkat előre." ], "sigt009": [ - "Quick! Drop the bridge!" + "Gyors! Dobd le a hidat!" ], "sigt010": [ - "Jump up and grab the bridge to bring it down." + "Ugorj fel, és fogd meg a hidat, hogy lehozd." ], "sigt011": [ - "Let's get across the bridge before they come back." + "Menjünk át a hídon, mielőtt visszajönnek." ], "sigt012": [ - "There's our first target, keep the other creatures back", - "while I charge up the Peacemaker." + "Ott az első célpontunk, tartsd vissza a többi lényt", + "miközben feltöltöm a Béketeremtőt." ], "sigt013": [ - "That's one fried Metal Head." + "Ez egy sült fémfej." ], "sigt014": [ - "Let's get to the next target." + "Térjünk a következő célhoz." ], "sigt015": [ - "With Metal Heads I say shoot first, ask questions later." + "A Metal Heads esetében azt mondom, előbb lőj, aztán kérdezz." ], "sigt017": [ - "Stay with me!" + "Maradj velem!" ], "sigt019": [ - "Waste the suckers!" + "Pazarold a balekokat!" ], "sigt020": [ - "Great, kid, great! Don't get cocky." + "Szuper, kölyök, nagyszerű! Ne légy beképzelt." ], "sigt021": [ - "There's the second scumbag, sittin' pretty." + "Ott a második szemétláda, aki szépen ül." ], "sigt022": [ - "Cover me!" + "Fedezz!" ], "sigt023": [ - "Boom, baby! One less Metal Head to think about." + "Bumm, kicsim! Eggyel kevesebb Metal Headre kell gondolni." ], "sigt024": [ - "Next target." + "Következő célpont." ], "sigt025": [ - "Watch my six, while I toast this bad boy.", - "The trick is to not hit the pipes." + "Vigyázz a hatosomra, amíg megpirítom ezt a rossz fiút.", + "A trükk az, hogy ne üsd a csöveket." ], "sigt026": [ - "Now that's what I call blowing someone's mind." + "Most ezt nevezem valakinek a fejtörésnek." ], "sigt027": [ - "Gotta thread the needle this time." + "Ezúttal be kell fűzni a tűt." ], "sigt028": [ - "Hahaha, Metal Head flambé." + "Hahaha, fémfej lángolt." ], "sigt029": [ - "Look out! We've got company!" + "Vigyázz! Társaságunk van!" ], "sigt030": [ - "Damn! My gun's jammed, take over!" + "Átkozott! Elakadt a fegyverem, vedd át!" ], "sigt031": [ - "Get 'em while I fix my gun!" + "Szerezd meg őket, amíg megjavítom a fegyveremet!" ], "sigt032": [ - "Okay, the Peacemaker is back online. Let's move!" + "Oké, a Peacemaker újra online. Menjünk!" ], "sigt033": [ - "Last target, then we go home." + "Utolsó célpont, aztán megyünk haza." ], "sigt036": [ - "Here comes trouble." + "Ebből baj lesz." ], "sigt037": [ - "Did ya miss me?" + "Hiányoztam?" ], "sigt038": [ - "Say \"good night,\" baby." + "Mondj \"jó éjszakát\", kicsim." ], "sigt039": [ - "Thanks for covering my butt, that was close!" + "Köszönöm, hogy eltakarta a fenekem, közel volt!" ], "sigt043": [ - "Stay with me!" + "Maradj velem!" ], "sigt044": [ - "Stay close or we'll both be dead!" + "Maradj közel, különben mindketten meghalunk!" ], "sigt045": [ - "Get over here and stay close!" + "Gyere ide és maradj közel!" ], "sigt046": [ - "You wanna play, huh?" + "Akarsz játszani, mi?" ], "sigt047": [ - "Oh, you got games?" + "Ó, vannak játékaid?" ], "sigt049": [ - "You cherries can't handle this mission, we're through!" + "Ti cseresznyék nem bírjátok ezt a küldetést, túl vagyunk!" ], "sigt052": [ - "I don't work with amateurs!" + "Nem dolgozom amatőrökkel!" ], "sigt053": [ - "You're more trouble than you're worth!" + "Több a bajod, mint amennyit érsz!" ], "sigt054": [ - "Come back when you're serious!" + "Gyere vissza, ha komolyan gondolod!" ], "sigt056": [ - "You want some of this?!" + "Akarsz ebből?!" ], "sigt057": [ - "Drop that lift-cap while I hold them off." + "Add le az emelősapkát, amíg lenyomom őket." ], "sigt058": [ - "Take 'em all out!" + "Vidd ki mindet!" ], "sigt059": [ - "Great, no time to celebrate." + "Remek, nincs idő ünnepelni." ], "sigt060": [ - "If I can't shoot it, it's someone else's problem.", - "You do something with those blocks." + "Ha én nem tudom lelőni, az valaki másé.", + "Csinálsz valamit ezekkel a blokkokkal." ], "sigt061": [ - "You gotta figure out the blocks, man." + "Ki kell találnod a blokkokat, haver." ], "sigt062": [ - "Did you hear something?" + "Hallottál valamit?" ], "sigt063": [ - "That's one big ugly Metal Head." + "Ez egy nagy ronda Metal Head." ], "sigt064": [ - "Shootin' this one's only going to get it mad, run!" + "Ha ezt lelövöd, az csak feldühít, fuss!" ], "sigt065": [ - "See ya on the flipside!" + "Viszlát a másik oldalon!" ], "sigt066": [ - "Gone with the wind." + "Elszállt a széllel." ], "sigt067": [ - "Later alligator." + "Később aligátor." ], "sigt068": [ - "I think that's the last we'll see of him." + "Azt hiszem, ez az utolsó, amit láthatunk." ], "sigt069": [ - "You figure this out, I'll cover your butt." + "Te találd ki, betakarom a fenekedet." ], "sigt070": [ - "This is your gig, baby. Solve it, so we can go home." + "Ez a te koncerted, bébi. Oldd meg, hogy mehetünk haza." ], "sigt071": [ - "Great, here comes that bad boy again. Move!" + "Remek, megint jön az a rosszfiú. Mozog!" ], "sigt072": [ - "Run!" + "Fuss!" ], "sigt073": [ - "Go, go, go!" + "Menj menj menj!" ], "sigt074": [ - "He's gaining!" + "Ő nyer!" ], "sigt075": [ - "Keep moving!" + "Mozogj!" ], "sigt076": [ - "Faster!" + "Gyorsabban!" ], "sigt077": [ - "It's gonna be close!" + "Közel lesz!" ], "sigt078": [ - "Move your butts!" + "Mozgasd a fenekedet!" ], "sigt082": [ - "Buddy, you don't wanna piss me off." + "Buddy, nem akarsz feldühíteni." ], "sigt083": [ - "You got a death wish?!" + "Halált kívánsz?!" ], "sigt087": [ - "Have a little pain right back!" + "Fájjon egy kicsit a hátad!" ], "sigt089": [ - "Never trust a rookie." + "Soha ne bízz egy újoncban." ], "sigt090": [ - "We're finished until you guys get serious." + "Befejeztük, amíg meg nem komolyodtak." ], "sigt091": [ - "This mission is obviously out of your league." + "Ez a küldetés nyilvánvalóan nem tartozik a bajnokságba." ], "sigt092": [ - "You're wasting my time, this mission is over." + "Az időmet vesztegeted, ennek a küldetésnek vége." ], "sigt093": [ - "Uhh... ugh...." + "Uhh... uh..." ], "sigt100": [ - "Rage before beauty, buddy." + "Düh a szépség előtt, haver." ], "sigt101": [ - "Let's move!" + "Menjünk!" ], "sigt102": [ - "I love the smell of burning metal!" + "Imádom az égő fém illatát!" ], "sigt103": [ - "Just a walk in the park." + "Csak egy séta a parkban." ], "sigt104": [ - "Follow me!" + "Kövess engem!" ], "sigt105": [ - "Let's go!" + "Gyerünk!" ], "sigt106": [ - "This way!" + "Ily módon!" ], "sigt107": [ - "Over here!" + "Itt!" ], "sigt108": [ - "Rollin' baby!" + "Rolling baby!" ], "sigt109": [ - "Blow 'em a kiss of death." + "Fújj rájuk egy halálcsókot." ], "sigt110": [ - "I love dead-heads!" + "Imádom a halott fejeket!" ], "sigt111": [ - "Kiss your shiny butt goodbye!" + "Csókold meg a csillogó fenekedet, búcsút!" ], "sigt112": [ - "Born to kill baby!" + "Arra született, hogy megölje a babát!" ], "sigt113": [ - "Two to the chest, one to the head." + "Kettőt a mellkasra, egyet a fejre." ], "spot004": [ - "Come out and cheer for me as I destroy the competition once again on the track.", - "This year's racing final will be to die for, I guarantee more thrills and more spills.", - "This time I want blood!...Bring the kids." + "Gyertek ki és szurkoljatok nekem, ahogy újra tönkreteszem a versenyt a pályán.", + "Az idei verseny döntője az lesz, hogy meghaljunk, garantálom, hogy még több izgalmat és kiöntést kapunk.", + "Ezúttal vért akarok!...Hozd a gyerekeket." ], "tess001": [ - "Hey, guys! This is Tess. Before Krew left, I saw him hide", - "something in the game machine here. Knowing Krew,", - "it's probably something valuable.", - "You might wanna come check it out." + "Hé srácok! Ő itt Tess. Mielőtt Krew elment, láttam, hogy elbújik", + "itt van valami a játékgépben. Ismerve Krew-t,", + "valószínűleg valami értékes.", + "Érdemes lenne megnézni." ], "tor001": [ - "The operation was a success. All Underground members are safe.", - "Come back to the hideout, I have a new mission for you while we wait for this alert to blow over." + "A művelet sikeres volt. Minden Underground tag biztonságban van.", + "Gyere vissza a búvóhelyre, új küldetésem van számodra, amíg arra várunk, hogy ez a riasztás lefújjon." ], "tor002": [ - "That should take some heat off the streets. Good work, I couldn't have done it better myself." + "Ez elvenné a hőt az utcákról. Szép munka, magam sem csinálhattam volna jobban." ], "tor003": [ - "That's it, Jak, you're up! Try not to trigger any alarms, the garrison guards will be tough.", - "Get to the prison cell block and find the prisoners. Once there, we'll turn on the Warp Gate inside to get you all back out. Good luck." + "Ennyi, Jak, felkeltél! Lehetőleg ne indítson riasztást, a helyőrség őrsége kemény lesz.", + "Menj el a börtöncella blokkjába, és keresd meg a foglyokat. Amint ott vagyunk, bekapcsoljuk a Warp Gate-t, hogy visszajusson. Sok szerencsét." ], "tor004": [ - "Ok, my old access codes should help Vin turn off the magnetic seal for the Fortress door." + "Rendben, a régi hozzáférési kódjaim segíthetnek Vinnek kikapcsolni az erőd ajtajának mágneses tömítését." ], "tor005": [ - "Jak, this is Torn, the city is under Metal Head attack. There's a large force moving toward the city wall from the ocean.", - "We need people manning the tower gunpods to stop that assault. Meet me at the seaside ocean wall in the Port, hurry!", - "We need every man we can get!" + "Jak, ez Torn, a város Metal Head támadás alatt áll. Hatalmas erő halad a városfal felé az óceán felől.", + "Emberekre van szükségünk, akik a torony lövedékeit irányítják, hogy megállítsák ezt a támadást. Találkozzunk a tengerparti óceánfalnál a kikötőben, siess!", + "Minden emberre szükségünk van!" ], "tor007": [ - "Jak, it's a guard roadblock, get out of there!" + "Jak, ez egy őr úttorlasz, menj onnan!" ], "tor008": [ - "They've set up a roadblock, they're onto you!" + "Útlezárást állítottak fel, rád várnak!" ], "torn024": [ - "More coming in!" + "Jönnek még többen!" ], "tswm001": [ - "You can do it, Daxter!" + "Meg tudod csinálni, Daxter!" ], "tswm002": [ - "Keep going, Daxter." + "Folytasd, Daxter." ], "tswm003": [ - "Go, go, go!" + "Menj menj menj!" ], "tswm004": [ - "Wow! What an animal!" + "Azta! Micsoda állat!" ], "tswm005": [ - "You got it!" + "Megcsináltad!" ], "tswm006": [ - "Nice slam!" + "Szép slam!" ], "tswm007": [ - "Ooh ho ho, baby!" + "Ó ho ho bébi!" ], "tswm008": [ - "Great shot, Daxter!" + "Remek lövés, Daxter!" ], "tswm009": [ - "You're almost there!" + "Majdnem ott vagy!" ], "tswm010": [ - "You can win, baby!" + "Nyerhetsz, bébi!" ], "tswm011": [ - "My hero!" + "Az én hősöm!" ], "tswm012": [ - "Look at him go!" + "Nézz rá, menj!" ], "tswm013": [ - "You ARE Orange Lightning!" + "Narancssárga villám VAGY!" ], "tswm014": [ - "Just a few more!" + "Csak még néhány!" ], "tswm015": [ - "Hit him again!" + "Üsd meg újra!" ], "tswm016": [ - "Yes!" + "Igen!" ], "tswm017": [ - "That's my naughty ottsel!" + "Ez az én szemtelen ottsel!" ], "tswm018": [ - "Oh!" + "Ó!" ], "tswm019": [ - "That wasn't good." + "Ez nem volt jó." ], "tswm020": [ - "Don't hit the red ones!" + "Ne üsd a pirosakat!" ], "tswm021": [ - "Ooh!" + "Óóó!" ], "tswm022": [ - "That took points away!" + "Ez elvitte a pontokat!" ], "tswm023": [ - "You did it!" + "Megcsináltad!" ], "tswm024": [ - "Daxter, you won!" + "Daxter, nyertél!" ], "tswm025": [ - "Yes! You're the man! I mean... the animal." + "Igen! Te vagy a férfi! Úgy értem... az állat." ], "tswm026": [ - "You beat the game, Daxter!" + "Legyőzted a meccset, Daxter!" ], "tswm027": [ - "Where'd you learn to pound like that?" + "Hol tanultál meg így dörömbölni?" ], "tswm028": [ - "That was amazing!" + "Csodálatos volt!" ], "tswm029": [ - "Pretty good for a little furball." + "Nagyon jó kis szőrgombócnak." ], "tswm030": [ - "Ooh... Not enough points!" + "Óóó... Nincs elég pont!" ], "tswm031": [ - "No! You lost..." + "Nem! Vesztettél..." ], "tswm032": [ - "Awww... You lost again!" + "Awww... Megint vesztettél!" ], "tswm033": [ - "So close!" + "Olyan közel!" ], "tswm034": [ - "One more time." + "Még egyszer." ], "tswm035": [ - "You can do it!" + "Meg tudod csinálni!" ], "tswm036": [ - "You have to try again!" + "Újra meg kell próbálnod!" ], "tswm037": [ - "You have to beat the game, Daxter." + "Le kell győznöd a játékot, Daxter." ], "tswm038": [ - "Try again!" + "Próbáld újra!" ], "tswm039": [ - "Ah! That was a bad one!" + "Ah! Ez rossz volt!" ], "tswm040": [ - "Don't hit the bad ones, Daxter." + "Ne üsd a rosszakat, Daxter." ], "tswm041": [ - "You hit a bad Metal Head." + "Rossz Metal Head-et ütöttél." ], "tswm042": [ - "Not again!" + "Újra ne!" ], "tswm043": [ - "Oh no!" + "Óh ne!" ], "tswm044": [ - "Daxter..! You need more points!" + "Daxter..! Több pont kell!" ], "tswm045": [ - "Keep going...!" + "Folytasd...!" ], "tswm046": [ - "Oh, Daxter... did you get your whiskers singed?" + "Ó, Daxter... megénekelte a bajuszát?" ], "tswm047": [ - "You're gonna score!" + "Kapsz gólt!" ], "tswm048": [ - "You're almost there...!" + "Majdnem ott vagy...!" ], "tswm049": [ - "Just a few more!" + "Csak még néhány!" ], "tswm050": [ - "We have a winner!" + "Van egy nyertesünk!" ], "tswm051": [ - "Oh! That was a bad one." + "Ó! Ez rossz volt." ], "tswm052": [ - "Don't hit the bad ones, Daxter." + "Ne üsd a rosszakat, Daxter." ], "tswm053": [ - "Daxter, you hit a bad Metal Head!" + "Daxter, rossz Metal Head-et találtál!" ], "tswm054": [ - "Daxter, you won!!" + "Daxter, nyertél!!" ], "tswm055": [ - "You did it, fur boy!" + "Megcsináltad, prémes fiú!" ], "tswm056": [ - "Yes!! You beat the game!" + "Igen!! Megverted a játékot!" ], "tswm057": [ - "I knew you could do it." + "Tudtam, hogy képes vagy rá." ], "vin002": [ - "Okay, the B-Zone Power Grid is back online.", - "Have fun being killed in the Palace." + "Oké, a B-Zone Power Grid újra elérhető.", + "Jó szórakozást, ha megölték a palotában." ], "vin003": [ - "You destroyed the last of the Metal Head eggs!", - "That should give us a little more eco for the city.", - "Good work!" + "Megsemmisítetted az utolsó fémfej tojást!", + "Ez egy kicsit több környezettudatosságot jelentene a város számára.", + "Jó munka!" ], "vin004": [ - "You still haven't gotten all the Metal Head eggs!", - "Make sure you get 'em all, or I'm gonna have", - "a nervous breakdown!" + "Még mindig nem kapta meg az összes Metal Head tojást!", + "Győződjön meg róla, hogy mindet beszerezi, különben én megteszem", + "idegösszeomlás!" ], "vin011": [ - "Thank goodness you blew up those wells.", - "I sure don't want any more Metal Heads coming around here.", - "Good work, boys! I owe ya one." + "Hála istennek, hogy felrobbantottad azokat a kutakat.", + "Biztosan nem akarom, hogy több Metal Heads jöjjön ide.", + "Jó munkát fiúk! Tartozom eggyel." ], "vin012": [ - "Good work, guys! The fewer Metal Head eggs", - "we allow to hatch, the fewer of those nasty monsters", - "we'll have to fight!" + "Jó munkát srácok! Minél kevesebb Metal Head tojás", + "engedjük kikelni, minél kevesebb ilyen csúnya szörnyeteg", + "harcolnunk kell!" ], "vin013": [ - "Jak... Kor...", - "Construction... Site...", - "Ngh..." + "Hogyan... Kor...", + "Építési terület...", + "..." ], "vin014": [ - "Once again you guys have saved my butt!", - "Maybe now I'll get a raise. Or a long vacation.", - "God knows I could use one. Thanks for the help!" + "Ismét megmentettétek a fenekemet!", + "Talán most kapok fizetésemelést. Vagy egy hosszú vakáció.", + "Isten tudja, hogy hasznomra válhatna egy. Köszönöm a segítséget!" ], "vin015": [ - "The shield wall is down! I repeat - the shield wall is down!", - "Sabotage! Kor did it!", - "I knew Metal Heads would be the end of me!", - "OH NO! Metal Heads are at the door!!", - "They're breaking through!!", - "Too many of them!! Jak!!! AHHHH!!!" + "Leomlott a pajzsfal! Ismétlem – a pajzsfal ledőlt!", + "Szabotázs! Kor megcsinálta!", + "Tudtam, hogy a Metal Heads lesz a végem!", + "ÓH NE! Fémfejek az ajtóban!!", + "Áttörnek!!", + "Túl sok belőlük!! Jak!!! AHHHH!!!" ], "ys001": [ - "Excellent work, boys! Come on back to the Hideout,", - "I have another task for you." + "Kiváló munka, fiúk! Gyere vissza a rejtekhelyre,", + "Van még egy feladatom a számodra." ], "ys002": [ - "Nice shooting, my boy!", - "Good work, Jak!", - "We'll all sleep a little easier tonight." + "Szép lövöldözés, fiam!", + "Jó munkát Jak!", + "Ma este kicsit könnyebben fogunk aludni." ] }, "speakers": { - "agent": "Agent", + "agent": "Ügynök", "ashelin": "Ashelin", - "baron": "Baron Praxis", - "brutter": "Brutter", - "citizen-female": "Citizen", - "citizen-male": "Citizen", - "computer": "Computer", - "darkjak": "Dark Jak", + "baron": "Praxis báró", + "brutter": "Törött", + "citizen-female": "Polgár", + "citizen-male": "Polgár", + "computer": "Számítógép", + "darkjak": "Sötét Jak", "daxter": "Daxter", "errol": "Erol", - "grim": "Grim", - "guard": "Krimzon Guard", - "guard-a": "Guard A", - "guard-b": "Guard B", - "jak": "Jak", - "jinx": "Jinx", + "grim": "Zord", + "guard": "Krimzon gárda", + "guard-a": "Őr A", + "guard-b": "Őr B", + "jak": "Hogyan", + "jinx": "Vészmadár", "keira": "Keira", - "keira-before-class-3": "Mechanic", - "kid": "Kid", + "keira-before-class-3": "Szerelő", + "kid": "Kölyök", "kor": "Kor", - "krew": "Krew", + "krew": "Vér", "metalkor": "Metal Kor", + "metalkor-before-consite": "Fémfejű vezető", + "metalkor-intro": "???", "mog": "Mog", - "onin": "Onin", - "oracle": "Oracle", - "pecker": "Pecker", - "precursor": "Precursor", + "onin": "Egy", + "oracle": "Jóslat", + "pecker": "Harkály", + "precursor": "Prekurzor", "samos": "Samos", - "sig": "Sig", + "sig": "Mond", "tess": "Tess", - "torn": "Torn", + "torn": "Szakadt", "vin": "Vin", - "youngsamos": "Young Samos", + "youngsamos": "Fiatal Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_is-IS.json b/game/assets/jak2/subtitle/subtitle_lines_is-IS.json index 1eedfcf5e8..afcaf059c6 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_is-IS.json +++ b/game/assets/jak2/subtitle/subtitle_lines_is-IS.json @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", @@ -7852,4 +7854,4 @@ "youngsamos": "Young Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_it-IT.json b/game/assets/jak2/subtitle/subtitle_lines_it-IT.json index 1eedfcf5e8..1b966ee884 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_it-IT.json +++ b/game/assets/jak2/subtitle/subtitle_lines_it-IT.json @@ -2,63 +2,63 @@ "cutscenes": {}, "other": { "DSbop001": [ - "You sure seem angry, Jak." + "Sembri davvero arrabbiato, Jak." ], "DSbop002": [ - "Do you remember how to jump?" + "Ti ricordi come si salta?" ], "DSbop003": [ - "Jump onto that crate to get over the barricade." + "Per superare la barricata, salta su quella cassa!" ], "DSbop004": [ - "Ooh, that's a high ledge!", - "Try jumping once, then jump again while in the air", - "to reach that one." + "Ooh, è alto!", + "Prova a saltare, e mentre sei in aria datti la spinta per saltare di nuovo", + "dovresti raggiungerlo." ], "DSbop005": [ - "Good job, see? You still got it!" + "Bel lavoro, vedi? Ce l'hai ancora!" ], "DSbop006": [ - "I never found hide nor hair of Keira or Samos.", - "I don't know where they went." + "Non ho mai trovato né pelle né capelli di Keira o Samos.", + "Non so dove siano andati." ], "DSbop007": [ - "I don't know where that crazy rift vehicle took us, but...", - "It's some kind of big city!" + "Non so dove ci abbia portato quel pazzo veicolo del Rift, ma...", + "È una specie di grande città!" ], "DSbop008": [ - "It's a tough place, Jak. You DO remember", - "how to fight, right? Try breaking that crate with a kick." + "È un posto difficile, Jak. Ti ricordi", + "come combattere, giusto? Prova a rompere quella cassa con un calcio." ], "DSbop009": [ - "Looking good, partner! Nice spin kick!", - "Works out some of that anger, eh?" + "Stai bene, socio! Bel calcio rotante!", + "Risolve un po' di quella rabbia, eh?" ], "DSbop010": [ - "There are lots of Krimzon Guard crates lying around", - "for the taking. Break that crate!" + "Ci sono molte casse delle Guardie Kremizi", + "che aspettano di essere aperte. Rompi quella cassa!" ], "DSbop011": [ - "Good job! That crate had a health pack inside.", - "Pick it up, you'll wanna keep healthy, Jak, or uh heh...", - "who'll do the fighting?" + "Bene! La cassa aveva una scorta di energia all'interno.", + "Raccoglila, devi mantenerti in forze, Jak, altrimenti chi combatterà?", + "chi combatterà?" ], "DSbop016": [ - "If you jump then dive, you'll crash down to the ground", - "hard enough to break lots of things.", - "Breaking stuff's fun, right?" + "Se salti e poi ti tuffi, cadrai a terra", + "abbastanza duro da rompere un sacco di cose.", + "Rompere le cose è divertente, vero?" ], "DSbop017": [ - "Guards, Jak! Do your, uh... stuff." + "Guardie, Jak! Fai quello che sai fare meglio!" ], "agnt001": [ - "Hey hey, drive carefully!" + "Ehi ehi, guida con prudenza!" ], "agnt002": [ - "Look out!" + "Attenzione!" ], "agnt003": [ - "Watch it!" + "Guardalo!" ], "agnt004": [ "Whoa whoa whoa whoa!" @@ -67,1177 +67,1177 @@ "Whoa!" ], "agnt006": [ - "You're crazy!" + "Sei pazzo!" ], "agnt007": [ - "Are you out of your mind!?" + "Sei fuori di testa!?" ], "agnt008": [ - "Watch out!" + "Attento!" ], "agnt009": [ - "That one hurt!" + "Quello faceva male!" ], "agnt010": [ - "Stay sharp, we've got a tough part of town coming up." + "Stai attento, ci aspetta una parte difficile della città." ], "agnt011": [ - "Now we're in for it!" + "Adesso ci siamo!" ], "agnt012": [ - "You're wasting citizens!" + "Stai sprecando i cittadini!" ], "agnt013": [ - "Don't hit the civvies, man!" + "Non colpire i civili, amico!" ], "agnt014": [ - "Man, you are hitting people!" + "Amico, stai colpendo la gente!" ], "agnt015": [ - "Look where you're going!" + "Guarda dove stai andando!" ], "agnt016": [ - "Go man!" + "Vai uomo!" ], "agnt017": [ - "Keep your head down!" + "Mantieni la testa giù!" ], "agnt018": [ - "They're shooting at us!" + "Ci stanno sparando!" ], "agnt019": [ - "We are dead if you don't drive faster!" + "Siamo morti se non guidi più veloce!" ], "agnt020": [ - "Keep going!" + "Continuare!" ], "agnt021": [ - "Do it, man, do it!" + "Fallo, amico, fallo!" ], "agnt022": [ - "Hurry up, man!" + "Sbrigati, amico!" ], "agnt023": [ - "I ain't riding on the back, pick up a two-seater!" + "Non viaggio sul retro, prendi una due posti!" ], "agnt024": [ - "Get a bigger car!" + "Comprati una macchina più grande!" ], "agnt025": [ - "Get a bigger vehicle." + "Prendi un veicolo più grande." ], "agnt026": [ - "Get one with two seats, will ya?" + "Prendine uno con due posti, va bene?" ], "agnt027": [ - "Get another vehicle." + "Prendi un altro veicolo." ], "agnt028": [ - "They're onto us." + "Ci stanno addosso." ], "agnt029": [ - "We're being followed." + "Siamo seguiti." ], "agnt030": [ - "We're taking a beating!" + "Stiamo prendendo una batosta!" ], "agnt031": [ - "We can't take much more of that!" + "Non possiamo sopportare molto di più!" ], "agnt032": [ - "Are you trying to die!?" + "Stai cercando di morire!?" ], "agnt033": [ - "Where did Torn find you?" + "Dove ti ha trovato Torn?" ], "agnt034": [ - "You sure you're on our side?" + "Sei sicuro di essere dalla nostra parte?" ], "agnt035": [ - "Turn, TURN!" + "Girati, GIRA!" ], "agnt036": [ - "Good move." + "Buona mossa." ], "agnt037": [ - "Death to the Baron!" + "Morte al Barone!" ], "agnt038": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Grazie a Mar sei qui, le guardie Krimzon sono ovunque!" ], "agnt039": [ - "It's about time, let's get out of here!" + "Era ora, andiamo via di qui!" ], "agnt040": [ - "Good, good, just in time. GO, GO, GO!" + "Bene, bene, giusto in tempo. VIA! VIA! VIA!" ], "agnt041": [ - "Finally, we need to move!" + "Finalmente dobbiamo muoverci!" ], "agnt042": [ - "Man, I was beginning to think you wouldn't show up." + "Cavolo, cominciavo a pensare che non ti saresti fatto vivo." ], "agnt043": [ - "Not a moment too soon, let's fly!" + "Non un momento troppo presto, voliamo!" ], "agnt044": [ - "Get me to my new safehouse, quickly!" + "Portami al mio nuovo rifugio, presto!" ], "agnt045": [ - "Thanks, good luck!" + "Grazie, buona fortuna!" ], "agnt046": [ - "Good driving, go save the rest of our guys." + "Buona guida, vai a salvare il resto dei nostri ragazzi." ], "agnt047": [ - "OK, I'm out of here!" + "OK, sono fuori di qui!" ], "agnt048": [ - "See you at the next meeting." + "Ci vediamo al prossimo incontro." ], "agnt049": [ - "Thanks, you're a life saver." + "Grazie, sei un salvavita." ], "agnt050": [ - "This is where I get off." + "Qui è dove scendo." ], "agnt051": [ - "I'm glad you're on our side." + "Sono felice che tu sia dalla nostra parte." ], "agnt052": [ - "Ugh!" + "Uffa!" ], "agnt053": [ - "Ugh!" + "Che schifo!" ], "agnt054": [ - "Hah!" + "Ah!" ], "agnt055": [ "Ahhh!" ], "agnt056": [ - "Drive carefully!" + "Guidare con attenzione!" ], "agnt057": [ - "Look out!" + "Attenzione!" ], "agnt058": [ - "Watch it!" + "Guardalo!" ], "agnt059": [ "WHOA!" ], "agnt060": [ - "You're crazy!" + "Sei pazzo!" ], "agnt061": [ - "Are you out of your mind?!" + "Sei fuori di testa?!" ], "agnt062": [ - "Watch out!" + "Attento!" ], "agnt063": [ - "That one hurt." + "Quello faceva male." ], "agnt064": [ - "Stay sharp, we got a tough part of our town coming up." + "Stai attento, stiamo affrontando una parte difficile della nostra città." ], "agnt065": [ - "Now we're in for it." + "Adesso ci siamo." ], "agnt066": [ - "You're wasting citizens!" + "State sprecando cittadini!" ], "agnt067": [ - "Don't hit the civvies, man!" + "Non colpire i civili, amico!" ], "agnt068": [ - "Man, you're hitting the people!" + "Amico, stai colpendo la gente!" ], "agnt069": [ - "Look where you're going!" + "Guarda dove stai andando!" ], "agnt070": [ - "Go man, GO!" + "Vai amico, VAI!" ], "agnt071": [ - "Keep your head down!" + "Mantieni la testa giù!" ], "agnt072": [ - "They're shooting at us!" + "Ci stanno sparando!" ], "agnt073": [ - "We're dead if you don't drive faster!" + "Siamo morti se non guidi più veloce!" ], "agnt074": [ - "Keep going!" + "Continuare!" ], "agnt075": [ - "Do it, man, do it!" + "Fallo, amico, fallo!" ], "agnt076": [ - "Hurry up, man!" + "Sbrigati, amico!" ], "agnt077": [ - "I ain't riding on the back, pick up a two-seater!" + "Non viaggio sul retro, prendi una due posti!" ], "agnt078": [ - "Get a bigger vehicle." + "Prendi un veicolo più grande." ], "agnt079": [ - "They're onto us!" + "Ci hanno scoperti!" ], "agnt080": [ - "We're being followed!" + "Siamo seguiti!" ], "agnt081": [ - "We're taking a beating!" + "Stiamo prendendo una batosta!" ], "agnt082": [ - "We can't take much more of that." + "Non ne possiamo più." ], "agnt083": [ - "You trying to die?" + "Stai cercando di morire?" ], "agnt084": [ - "Where'd Torn find you?" + "Dove ti ha trovato Torn?" ], "agnt085": [ - "You sure you're on our side?" + "Sei sicuro di essere dalla nostra parte?" ], "agnt086": [ - "Turn, TURN!" + "Gira, gira!" ], "agnt087": [ - "Good move!" + "Buona mossa!" ], "agnt088": [ - "Death to the Baron!" + "Morte al Barone!" ], "agnt089": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Grazie a Mar sei qui, le guardie Krimzon sono ovunque!" ], "agnt090": [ - "It's about time, let's get out of here!" + "È ora, andiamo via da qui!" ], "agnt091": [ - "Good, just in time, GO, GO, GO!" + "Bene, giusto in tempo, VIA, VIA, VIA!" ], "agnt092": [ - "Finally, we need to move!" + "Finalmente dobbiamo muoverci!" ], "agnt093": [ - "Man, I was beginning to think you wouldn't show up." + "Cavolo, cominciavo a pensare che non ti saresti fatto vivo." ], "agnt094": [ - "Not a moment too soon, let's fly!" + "Non un momento troppo presto, voliamo!" ], "agnt095": [ - "Get me to my new safehouse, quickly!" + "Portami al mio nuovo rifugio, presto!" ], "agnt096": [ - "Thanks, good luck!" + "Grazie, buona fortuna!" ], "agnt097": [ - "Good driving, go save the rest of our guys." + "Buona guida, vai a salvare il resto dei nostri ragazzi." ], "agnt098": [ - "OK, I'm out of here!" + "Ok, me ne vado!" ], "agnt099": [ - "See ya at the next meeting!" + "Ci vediamo al prossimo incontro!" ], "agnt100": [ - "Thanks, you're a life-saver." + "Grazie, mi hai salvato la vita." ], "agnt101": [ - "This is where I get off." + "Qui è dove scendo." ], "agnt102": [ - "I'm glad you're on our side." + "Sono felice che tu sia dalla nostra parte." ], "agnt103": [ - "Look out!" + "Attenzione!" ], "agnt104": [ - "Hey!" + "EHI!" ], "agnt105": [ - "Augh!" + "Ahia!" ], "agnt106": [ - "Come on man, you trying to kill me!?" + "Andiamo amico, stai cercando di uccidermi!?" ], "agnt107": [ - "Take it easy!" + "Calmati!" ], "agnt108": [ - "Ughh!" + "Uffa!" ], "agnt109": [ - "Ughh!" + "Uffa!" ], "agnt110": [ "Ahhh!" ], "agnt111": [ - "Oof!" + "Uffa!" ], "agnt112": [ "Ah!" ], "agnt113": [ - "Ahh!" + "Ah!" ], "agnt114": [ - "Oof!" + "Uffa!" ], "agnt115": [ - "Okay, buddy, move!" + "Ok, amico, muoviti!" ], "agnt116": [ - "Look out!" + "Attenzione!" ], "agnt117": [ - "Keep your eyes on the road!" + "Tieni gli occhi sulla strada!" ], "agnt118": [ - "Watch it!" + "Guardalo!" ], "agnt119": [ - "Thanks for the lift." + "Grazie per il passaggio." ], "agnt120": [ - "See ya at the next meeting." + "Ci vediamo al prossimo incontro." ], "agnt121": [ - "Right, let's go!" + "Bene, andiamo!" ], "agnt122": [ - "Drive, man, drive!" + "Guida, amico, guida!" ], "agnt123": [ - "That was close!" + "C'è mancato poco!" ], "agnt124": [ - "You sure you know what you're doing?" + "Sei sicuro di sapere cosa stai facendo?" ], "agnt125": [ - "Ok, thanks, good luck." + "Ok, grazie, buona fortuna." ], "agnt126": [ - "Great, let's go." + "Grande andiamo." ], "agnt127": [ - "Drive, man, drive!" + "Guida, amico, guida!" ], "agnt128": [ - "That was close!" + "C'è mancato poco!" ], "agnt129": [ - "You sure you know what you're doing?" + "Sei sicuro di sapere cosa stai facendo?" ], "agnt130": [ - "OK, thanks, good luck!" + "OK, grazie, buona fortuna!" ], "agnt131": [ - "What took you so long?" + "Cosa ti ha fatto perdere così tanto tempo?" ], "agnt132": [ - "Move like you got a purpose, man!" + "Muoviti come se avessi uno scopo, amico!" ], "agnt133": [ - "GO, GO, the KG are onto us!" + "Forza, forza, i KG ci hanno scoperto!" ], "agnt134": [ - "Stay sharp, we're almost there!" + "Tenete duro, ci siamo quasi!" ], "agnt135": [ - "Good, you did well, I'll tell the Shadow we're safe!" + "Bene, hai fatto bene, dirò all'Ombra che siamo salvi!" ], "asha001": [ - "Payback's a bitch, and I'm it." + "La vendetta è una stronzata, e io lo sono." ], "asha002": [ - "Watch your ass, I'm only woman on the outside." + "Attento al culo, sono solo una donna esteriormente." ], "asha003": [ - "Let me knock you down to size...", - "Not that you have any." + "Lascia che ti riduca alle dimensioni...", + "Non che tu ne abbia." ], "asha004": [ - "Small guns don't get me going." + "Le armi piccole non mi fanno andare avanti." ], "asha005": [ - "That's a tiny gun..." + "È una pistola minuscola..." ], "asha006": [ - "You don't know who you're dealing with." + "Non sai con chi hai a che fare." ], "asha007": [ - "I never said you could touch me there." + "Non ho mai detto che potevi toccarmi lì." ], "asha008": [ - "Take that!" + "Prendi quello!" ], "asha009": [ - "Here's some." + "Eccone alcuni." ], "asha010": [ - "Ready for another?" + "Pronti per un altro?" ], "asha011": [ - "How's that feel?" + "Come ti senti?" ], "asha012": [ - "Seems like it hurts." + "Sembra che faccia male." ], "asha013": [ - "Oh, that hurt." + "Oh, che male." ], "asha014": [ - "Ugh!" + "Uffa!" ], "asha015": [ - "Ough!" + "Bene!" ], "asha016": [ "Ah!" ], "asha017": [ - "Agh!" + "Ah!" ], "asha018": [ - "Hit me again and you'll lose something really valuable!" + "Colpiscimi ancora e perderai qualcosa di veramente prezioso!" ], "asha019": [ - "Not smart!" + "Non intelligente!" ], "asha020": [ - "Listen, buddy, whose side are you on?" + "Ascolta, amico, da che parte stai?" ], "asha021": [ - "Don't make me hurt you." + "Non farmi del male." ], "asha022": [ - "Do that again and I'll put you down." + "Fallo di nuovo e ti metto giù." ], "asha023": [ - "Learn to control your gun, buddy." + "Impara a controllare la tua pistola, amico." ], "asha024": [ - "Where'd you learn to fight?" + "Dove hai imparato a combattere?" ], "asha025": [ - "Check your targets, mister." + "Controlla i tuoi obiettivi, signore." ], "asha026": [ - "Don't do that again." + "Non farlo di nuovo." ], "asha027": [ - "Maybe I should be behind you." + "Forse dovrei essere dietro di te." ], "asha028": [ - "I won't take that!" + "Non lo accetterò!" ], "asha029": [ - "Another one like that and you'll be singing soprano." + "Un altro così e canterai come soprano." ], "asha030": [ - "Have some back." + "Riprendine un po'." ], "asha031": [ - "Don't do that again!" + "Non farlo di nuovo!" ], "asha032": [ - "Nice shooting." + "Bella ripresa." ], "asha033": [ - "Good shooting, blue boy." + "Bel tiro, ragazzo blu." ], "asha034": [ - "Good work." + "Buon lavoro." ], "asha035": [ - "Take 'em all down!" + "Abbattili tutti!" ], "asha036": [ - "Let's get 'em!" + "Prendiamoli!" ], "asha037": [ - "Here they come!" + "Arrivano!" ], "asha038": [ - "I need some help!" + "Ho bisogno di aiuto!" ], "asha039": [ - "Man, there are a lot of 'em!" + "Cavolo, ce ne sono un sacco!" ], "asha040": [ - "More coming." + "Altri in arrivo." ], "asha041": [ - "I got him." + "L'ho preso." ], "asha042": [ - "More firepower!" + "Più potenza di fuoco!" ], "asha043": [ - "One more down!" + "Ancora uno in meno!" ], "asha044": [ - "Help me out!" + "Aiutarmi!" ], "asha045": [ - "They're out-flanking us!" + "Ci stanno aggirando!" ], "asha046": [ - "We're surrounded!" + "Siamo circondati!" ], "asha047": [ - "Shoot! Shoot!" + "Sparare! Sparare!" ], "asha048": [ - "It's not looking good." + "Non ha un bell'aspetto." ], "asha049": [ - "Help me!" + "Aiutami!" ], "asha050": [ - "Here's one for my father!" + "Eccone uno per mio padre!" ], "asha051": [ - "Damn Metal Heads..." + "Maledetti Metal Head..." ], "asha052": [ "Bullseye." ], "asha053": [ - "There's some more of those things!" + "Ce ne sono altre di queste cose!" ], "asha054": [ - "Get 'em all!" + "Prendili tutti!" ], "asha055": [ - "Ugh..." + "Uffa..." ], "asha056": [ "Hm-agh..." ], "asha057": [ - "Hah...agh..." + "Ah... ah..." ], "asht002": [ - "You were right, Jak. What my father's doing is wrong.", - "I need to help fix this. If you get to the Weapons Factory,", - "maybe we can stop him. I'll meet you there." + "Avevi ragione, Jak. Ciò che sta facendo mio padre è sbagliato.", + "Ho bisogno di aiutare a risolvere questo problema. Se arrivi alla Fabbrica di Armi,", + "Forse possiamo fermarlo. Ci vediamo lì." ], "asht006": [ - "I think now's the time to act.", - "The Metal Heads are so focused on attacking the city,", - "they may have left their nest vulnerable.", - "Jak, you've got to get out to the Wasteland", - "and breach the Nest barrier any way you can.", - "Maybe if you get inside and take out the Metal Head leader", - "the army will collapse. It's a long shot,", - "but it might be our only chance." + "Penso che sia giunto il momento di agire.", + "I Metal Heads sono così concentrati nell'attaccare la città,", + "potrebbero aver lasciato il loro nido vulnerabile.", + "Jak, devi andare nella Zona Desolata", + "e sfonda la barriera del Nest in ogni modo possibile.", + "Forse se entri e fai fuori il leader dei Metal Head", + "l'esercito crollerà. È un azzardo,", + "ma potrebbe essere la nostra unica possibilità." ], "bar001": [ - "Pay no attention to the groundless rumors about", - "low eco supplies. As your Baron, I assure you,", - "the city has an endless supply of eco stores.", - "Those who would say we are running out,", - "are only trying to frighten and subvert!", - "I have everything in control, I command you", - "to have no fear." + "Non prestare attenzione alle voci infondate su", + "forniture ecologiche basse. Come vostro Barone, vi assicuro,", + "la città ha una scorta infinita di negozi ecologici.", + "Quelli che direbbero che stiamo finendo,", + "stanno solo cercando di spaventare e sovvertire!", + "Ho tutto sotto controllo, te lo comando", + "non avere paura." ], "bar004": [ - "Go!" + "Andare!" ], "bb01fail": [ - "I think you should practice more." + "Penso che dovresti esercitarti di più." ], "bb01int": [ - "Jak, this is Torn. The Underground needs good drivers", - "for our vehicle missions. Prove your skills on the", - "Ring Challenge and maybe we'll let you in on the action." + "Jak, questo è Torn. La metropolitana ha bisogno di buoni autisti", + "per le nostre missioni sui veicoli. Dimostra le tue abilità su", + "Ring Challenge e forse ti faremo entrare in azione." ], "bb01win": [ - "Not bad, I think we can use ya.", - "Here's a little reward for your effort." + "Non male, penso che potremmo usarti.", + "Ecco una piccola ricompensa per il tuo impegno." ], "bb02fail": [ - "You're still a little timid. Try again." + "Sei ancora un po' timido. Riprova." ], "bb02int": [ - "We'd like to see you prove your driving skills. Take on", - "another Ring Challenge, let's see what you've got." + "Vorremmo vederti dimostrare le tue abilità di guida. Affronta", + "un'altra Ring Challenge, vediamo cosa hai ottenuto." ], "bb02win": [ - "Not bad. You could be my getaway driver any time." + "Non male. Potresti essere il mio autista per la fuga in qualsiasi momento." ], "bb03fail": [ - "I knew this one would prove too much for ya. Keep practicing." + "Sapevo che questo sarebbe stato troppo per te. Continuare a praticare." ], "bb03int": [ - "The next Ring Challenge will separate the men from the boys.", - "Let's see if you can handle it." + "La prossima Ring Challenge separerà gli uomini dai ragazzi.", + "Vediamo se riesci a gestirlo." ], "bb03win": [ - "Very nice driving. I'm starting to think you could really", - "help us, Jak." + "Guida molto piacevole. Comincio a pensare che potresti davvero", + "aiutaci, Jak." ], "bb04fail": [ - "Too bad, I kinda hoped you could do this. Keep trying." + "Peccato, speravo che potessi farlo. Continua a provare." ], "bb04int": [ - "Torn here. I don't even know why I'm lettin' you try this", - "Ring Challenge, never beat it myself. I guess I'm morbidly", - "curious. Beat this one and you'll be the best driver", - "the Underground's ever had." + "Strappato qui. Non so nemmeno perché ti permetto di provarlo", + "Ring Challenge, non l'ho mai battuto io stesso. Immagino di essere morbosamente", + "curioso. Batti questo e sarai il miglior pilota", + "che la metropolitana abbia mai avuto." ], "bb04win": [ - "Very nice, Jak! You're the best driver we've ever had." + "Molto carino, Jak! Sei il miglior pilota che abbiamo mai avuto." ], "bb05fail": [ - "You didn't get all the Bomb Bots, Jak!" + "Non hai preso tutti i Bomb Bot, Jak!" ], "bb05int": [ - "Jak, reports say more bomb bots are roaming the city.", - "They're a dangerous menace, and I need you to locate", - "and destroy each one before they hurt our interests." + "Jak, si dice che in città ci siano sempre più robot bomba.", + "Sono una minaccia pericolosa e ho bisogno che tu li localizzi", + "e distruggerli tutti prima che danneggino i nostri interessi." ], "bb05win": [ - "Good work! That oughta put a dent in the Baron's war budget." + "Buon lavoro! Questo dovrebbe incidere sul bilancio di guerra del Barone." ], "bb06int": [ - "Jak, we need you to take out another group of Bomb Bots.", - "These mobile weapons keep showing up in the city, we gotta take them out as soon as possible." + "Jak, abbiamo bisogno che tu elimini un altro gruppo di Bomb Bot.", + "Queste armi mobili continuano ad apparire in città, dobbiamo eliminarle il prima possibile." ], "bb06win": [ - "Another pile of bomb bot scrap metal for the KG", - "trash compactors. Mission accomplished, the Underground's", - "most grateful for your service." + "Un altro mucchio di rottami metallici per il robot bomba per il KG", + "compattatori di rifiuti. Missione compiuta, quella della metropolitana", + "molto grato per il tuo servizio." ], "bb07fail": [ - "You lost an agent! NOT good at all, Jak! Mission failed!" + "Hai perso un agente! NON va affatto bene, Jak! Missione fallita!" ], "bb07int": [ - "Torn here, I need you to go out and move more of our Agents to new locations in the city.", - "KG spies are watching our every move, so look out for trouble. Good luck." + "Lacerato qui, ho bisogno che tu esca e sposti altri nostri agenti in nuove posizioni in città.", + "Le spie dei KG osservano ogni nostra mossa, quindi fai attenzione ai guai. Buona fortuna." ], "bb07win": [ - "Nice shuttle work! You're keepin' people alive out there." + "Bel lavoro di navetta! Stai mantenendo in vita la gente là fuori." ], "bb08fail": [ - "One of our best agents was arrested. The Shadow will NOT be", - "pleased! You failed." + "Uno dei nostri migliori agenti è stato arrestato. L'Ombra NON lo sarà", + "lieto! Hai fallito." ], "bb08int": [ - "Jak, some of our Agents have been compromised again.", - "Find each one and take them to special hideouts in the city.", - "The guard patrols are on high alert, so this is going to be a tough one. Keep your head down!" + "Jak, alcuni dei nostri agenti sono stati nuovamente compromessi.", + "Trovali tutti e portali in nascondigli speciali in città.", + "Le pattuglie di guardia sono in massima allerta, quindi sarà dura. Mantieni la testa giù!" ], "bb08win": [ - "That was good driving, Jak.", - "The Underground can breathe a little easier now." + "È stata una bella guida, Jak.", + "La metropolitana può respirare un po' più facilmente adesso." ], "bb09fail": [ - "You took too long, Jak. We're calling off the meeting." + "Ci hai messo troppo tempo, Jak. Annulliamo la riunione." ], "bb09int": [ - "Jak, we're having an Underground meeting", - "with some special Agents. Pick up each Agent", - "and bring them to the meeting place quickly." + "Jak, avremo una riunione clandestina", + "con alcuni agenti speciali. Raccogli ogni agente", + "e portarli rapidamente al luogo dell'incontro." ], "bb09win": [ - "Fast work, Jak! Some day, we might even", - "invite you to these meetings." + "Lavoro veloce, Jak! Un giorno, potremmo anche", + "invitarvi a questi incontri." ], "bb10fail": [ - "Not fast enough, buddy! You've gotta be quick", - "with those deliveries." + "Non abbastanza veloce, amico! Devi essere veloce", + "con quelle consegne." ], "bb10int": [ - "Jak, you've got to prove your driving skills once again.", - "One of our Agents dropped off a package,", - "I need it delivered to the Hideout. Immediately." + "Jak, devi dimostrare ancora una volta le tue abilità di guida.", + "Uno dei nostri agenti ha lasciato un pacco,", + "Ho bisogno che venga consegnato al Hideout. Immediatamente." ], "bb10win": [ - "Good work, Jak!" + "Buon lavoro, Jak!" ], "bb11fail": [ - "The package contents didn't make it. Go faster next time!" + "Il contenuto del pacco non ce l'ha fatta. Vai più veloce la prossima volta!" ], "bb11int": [ - "Jak, I need you to take a package of eco", - "over to the power station. Get there quickly or the contents", - "will be useless to Vin." + "Jak, ho bisogno che tu prenda un pacchetto di ecologici", + "verso la centrale elettrica. Arrivare rapidamente o il contenuto", + "sarà inutile per Vin." ], "bb11win": [ - "Nice driving, Jak." + "Bella guida, Jak." ], "bb12fail": [ - "You didn't push it hard enough, newbie. Try again." + "Non hai spinto abbastanza, novellino. Riprova." ], "bb12int": [ - "This is Torn, we've got another package delivery", - "for the Stadium. Make it quick!" + "Qui è Torn, abbiamo un altro pacco da consegnare", + "per lo Stadio. Fai presto!" ], "bb12win": [ - "Not bad driving. You really oughta race", - "in the city championship." + "Non male alla guida. Dovresti davvero gareggiare", + "nel campionato cittadino." ], "bb13fail": [ - "You gotta work on your speed, man." + "Devi lavorare sulla velocità, amico." ], "bb13int": [ - "I need you to take a valuable item over to Onin.", - "You won't be able to drive the whole way,", - "but you still have to move fast. Good luck." + "Ho bisogno che porti un oggetto di valore a Onin.", + "Non sarai in grado di guidare per tutta la strada,", + "ma devi comunque muoverti velocemente. Buona fortuna." ], "bb13win": [ - "That's the way to get it done, good work." + "Questo è il modo per farlo, buon lavoro." ], "bb14fail": [ - "Too late, Jak! The agent is calling it off.", - "You need to reach it faster!" + "Troppo tardi, Jak! L'agente annulla la cosa.", + "Devi raggiungerlo più velocemente!" ], "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." + "Jak, abbiamo un agente che aspetta la consegna di un pacco.", + "Le spie della guardia stanno tenendo d'occhio questo ragazzo,", + "quindi se non lo raggiungi velocemente, verrà arrestato.", + "Portagli il pacco prima che sia troppo tardi." ], "bb14win": [ - "Nice work, the delivery was a success. I like your style, Jak." + "Bel lavoro, la consegna è stata un successo. Mi piace il tuo stile, Jak." ], "bb15fail": [ - "You screwed up, Jak! You didn't get it to the safe zone", - "as we asked." + "Hai fatto un casino, Jak! Non sei riuscito a raggiungere la zona sicura", + "come abbiamo chiesto." ], "bb15farr": [ - "Get off the bike and get clear, Jak!!" + "Scendi dalla bici e allontanati, Jak!!" ], "bb15int": [ - "Jak, we found a bomb in the Slums", - "that was meant for the Shadow.", - "I need you to pick it up and take it out to the Farm Area", - "where we've marked a safe zone where it can explode.", - "Go quickly." + "Jak, abbiamo trovato una bomba negli Slums", + "era destinato all'Ombra.", + "Ho bisogno che tu lo vada a prendere e lo porti alla Farm Area", + "dove abbiamo contrassegnato una zona sicura dove può esplodere.", + "Vai velocemente." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "È stato un lavoro fantastico, Jak! Grazie, lo dico davvero." ], "bb16fail": [ - "You didn't take out enough guards!", - "We need to hit them harder!" + "Non hai eliminato abbastanza guardie!", + "Dobbiamo colpirli più forte!" ], "bb16int": [ - "Jak, this is Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "inflict real damage on our enemies." + "Jak, questo è Torn.", + "La guardia personale d'élite di Erol si sta muovendo per la città.", + "Dobbiamo colpirli e colpirli forte! Tirane fuori abbastanza", + "guardie prima di dover annullare la missione.", + "Se ci sono troppe poche guardie, avremo perso un'opportunità di", + "infliggere danni reali ai nostri nemici." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Bellissimo mordi e fuggi, Jak! Questo invierà un messaggio a Erol." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Sembra che quella cosa sia troppo difficile da usare. Per ora passiamo." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "Stiamo valutando il nuovo JET-Board per l'uso in metropolitana", + "missioni. Abbiamo sentito che sei abbastanza bravo con quelle cose,", + "mostraci cosa può fare. Segna abbastanza punti con il", + "Judge-bot e valuteremo se aggiungerlo al nostro arsenale." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", - "Good work." + "Oh! Puoi davvero fare a pezzi il cemento con quel bambino!", + "Buon lavoro." ], "bb18fail": [ - "I'm still not sure the JET-Board's that useful." + "Non sono ancora sicuro che la JET-Board sia così utile." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Ecco un altro ottimo posto per valutare le prestazioni", + "del consiglio di amministrazione del JET. Cerca di ottenere abbastanza punti anche qui." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", - "catching us on those babies." + "Mosse dolci, Jak. Il KG avrebbe avuto difficoltà", + "catturandoci su quei bambini." ], "bb19fail": [ - "You didn't get them all. Try again." + "Non li hai presi tutti. Riprova." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "Stiamo valutando l'uso dei fari di ricerca nelle missioni.", + "Raccogli tutti i segnali il più velocemente possibile.", + "Devi muoverti velocemente su questo." ], "bb19win": [ - "Excellent work. You're a great asset", - "to the Underground, Jak." + "Lavoro eccellente. Sei una grande risorsa", + "nella metropolitana, Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "Troppo lento, Jak! Quando l'Ombra chiede, devi consegnare." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "L'Ombra ha bisogno che tu raccogli dell'eco verde per il suo", + "esperimenti. Ottieni tutto prima che l'eco svanisca." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "Non male. Metterò una buona parola con l'Ombra." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Continua a provare. Devi sviluppare le tue abilità qui." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "A volte ci piace \"prendere in prestito\" la Krimzon Guard", + "attrezzatura. Porta fuori quella moto da pattuglia dei KG a fare un giro", + "e colpire tutti i bersagli entro il limite di tempo." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Bella ripresa. La Guardia ti adorerebbe come recluta.", + "Ecco invece una piccola ricompensa per restare con noi." ], "bb22fail": [ - "You didn't get the booths fast enough, Jak." + "Non sei arrivato alle cabine abbastanza in fretta, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "Parte della propaganda del Barone è inquietante", + "i civili. Togli quelle cabine e fermeremo Praxis", + "dal diffondere le sue bugie." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Buon lavoro! Questo dovrebbe far tacere un po' il Barone." ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Hai perso, Jak. Se vuoi vincere,", + "faresti meglio a lavorare sulle tue abilità di velocità." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "Il miglior pilota di The Underground vuole sfidarti", + "a una gara sul Ring Course One.", + "Pensi di poter gestire un po' di concorrenza?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Congratulazioni! Hai battuto lo sfidante!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "Il nostro ragazzo ti ha portato in questo. La prossima volta sarai più fortunato." ], "bb24int": [ - "Up for a little race, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "Sei pronto per una piccola gara, Jak?", + "Il nostro miglior pilota vuole affrontarti sul Ring Course Two.", + "Questo bambino è un po' più difficile.", + "Vediamo se riesci a raccogliere la sfida." ], "bb24win": [ - "You beat him, Jak. Nice driving." + "L'hai battuto, Jak. Bella guida." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", - "You lost!" + "Sembra che tu non sia il miglior pilota di questa città, Jak.", + "Hai perso!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", - "This one's gonna get hairy." + "Il campione della corsa Underground ti vuole ancora,", + "questa volta sul difficile percorso Ring Course Three.", + "Questo diventerà peloso." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Congratulazioni, hai battuto il nostro miglior pilota. Ben fatto." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "Questo è Torn, un buon agente della metropolitana conosce la città", + "dentro e fuori, a vista. Vediamo come te la cavi,", + "arrivare a questo posto nel limite di tempo indicato", + "e riceverai una ricompensa. VIA!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Ecco un'altra occasione per dimostrare la tua conoscenza della città." ], "bb28int": [ - "Find this place before time runs out." + "Trova questo posto prima che scada il tempo." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Ecco una cosa difficile, batti il ​​tempo fino a qui." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Riconosci questo posto? Trovalo velocemente e una ricompensa sarà tua." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Ecco un posto poco conosciuto, trovalo velocemente e rimarrai colpito." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "Mi piacerebbe vederti trovare questo posto. Impressionami, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Arriva subito e sorprendimi." ], "bb34int": [ - "Here's another destination, get here quickly." + "Ecco un'altra destinazione, vieni qui velocemente." ], "bb35int": [ - "Find this spot, fast!" + "Trova questo posto, velocemente!" ], "bb36int": [ - "Reach this area and be rewarded." + "Raggiungi quest'area e sarai ricompensato." ], "bb37int": [ - "Think you can find this place?" + "Pensi di poter trovare questo posto?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "Non così bene, Jak! Forse dovresti calibrare quella scheda." ], "bb38int": [ - "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", - "in the time limit allotted." + "Stiamo ancora valutando il JET-Board.", + "Vediamo se riesci a raccogliere tutti i potenziamenti energetici", + "nel termine assegnato." ], "bb38win": [ - "Nice moves, fly-boy." + "Belle mosse, ragazzo volante." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "Così vicino, ma in questo settore significa morto." ], "bb39int": [ - "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Metti alla prova il JET-Board su un percorso ad anello.", + "Batti il ​​tempo e ti farò tatuare la faccia come la mia." ], "bb39win": [ - "Good speed through the course, Jak!", - "That one looked too easy." + "Buona velocità lungo il percorso, Jak!", + "Quello sembrava troppo facile." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "You were too slow on that course." + "Sembra che tu abbia trovato il tuo partner, Jak!", + "Sei stato troppo lento in quel percorso." ], "bb40int": [ - "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "let's see if you can complete it in time." + "Mi piacerebbe vederti portare il JET-Board attraverso un altro", + "Corso ad anello. Renderemo questo un po' più interessante,", + "vediamo se riesci a completarlo in tempo." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Oh! Anche io avrei problemi con quello, bel lavoro!" ], "bf001": [ - "My shield is impervious to your attacks!" + "Il mio scudo è impermeabile ai tuoi attacchi!" ], "bf002": [ - "You cannot hurt me!" + "Non puoi farmi del male!" ], "bf003": [ - "Fool! Nothing can touch me!" + "Stupido! Niente può toccarmi!" ], "bf004": [ - "You're powerless!" + "Sei impotente!" ], "bf005": [ - "There is nothing you can do!" + "Non c'è niente che tu possa fare!" ], "bf006": [ - "HAHAHAHAHAHA!" + "AH AH AH AH AH AH!" ], "bf007": [ - "HAHAHAHA!" + "AHAHAHAH!" ], "bf008": [ - "Come get me!" + "Vieni a prendermi!" ], "bf009": [ - "Come closer!" + "Avvicinati!" ], "bf010": [ - "Try me now!" + "Provami adesso!" ], "bf011": [ - "Let's make this personal!" + "Rendiamolo personale!" ], "bf012": [ - "Surprise!" + "Sorpresa!" ], "bf013": [ - "Don't fall!" + "Non cadere!" ], "bf014": [ - "I will crush you!" + "Ti schiaccerò!" ], "bf015": [ - "Take this!" + "Prendi questo!" ], "bf016": [ - "Here I come!" + "Eccomi!" ], "bf017": [ - "Why won't you die?!" + "Perché non morirai?!" ], "bf018": [ - "Your Dark Eco powers surprise me!" + "I tuoi poteri dell'Eco Oscuro mi sorprendono!" ], "bf019": [ - "Your arrogance will be your downfall!" + "La tua arroganza sarà la tua rovina!" ], "bf020": [ - "The Stone is mine!" + "La Pietra è mia!" ], "bf021": [ - "Give me the Stone!" + "Dammi la Pietra!" ], "bf022": [ - "Release it!" + "Rilascialo!" ], "bf023": [ - "I want the Stone!" + "Voglio la Pietra!" ], "bf024": [ - "Argh, let go!" + "Argh, lascia andare!" ], "bf025": [ - "It's mine!" + "È mio!" ], "bf026": [ - "Try these on for size!" + "Prova questi per la taglia!" ], "bf027": [ - "Here's a little present!" + "Ecco un piccolo regalo!" ], "bf028": [ - "Want some more?" + "Ne vuoi ancora?" ], "bf029": [ - "I grow tired of this, now you die!" + "Mi stanco di questo, ora muori!" ], "bf030": [ - "You cannot run away from these!" + "Non puoi scappare da questi!" ], "bf031": [ - "Allow me to share the pain!" + "Permettimi di condividere il dolore!" ], "bf032": [ - "Now you're mine!" + "Adesso sei mio!" ], "bf033": [ - "Here's some hell!" + "Ecco un po' di inferno!" ], "bf034": [ - "Say good night!" + "Dì Buonanotte!" ], "bf035": [ - "Enjoy your next life!" + "Goditi la tua prossima vita!" ], "bf036": [ - "It's over!" + "È finita!" ], "bf037": [ - "Burn in hell!" + "Brucia all'inferno!" ], "bf038": [ - "The Stone is mine! Let me show you what it can do!" + "La Pietra è mia! Lascia che ti mostri cosa può fare!" ], "bf039": [ - "Now you see the Stone's power in capable hands!" + "Ora vedi il potere della Pietra in mani capaci!" ], "bf040": [ - "How's that for power?" + "Che ne dici di questa potenza?" ], "bf041": [ - "Now you see!" + "Ora capisci!" ], "bf042": [ - "I am invincible now!" + "Sono invincibile adesso!" ], "bf043": [ - "You cannot run forever!" + "Non puoi correre per sempre!" ], "bf044": [ - "I have all the power I need!" + "Ho tutto il potere di cui ho bisogno!" ], "bf045": [ - "You can't avoid this!" + "Non puoi evitarlo!" ], "bf046": [ - "Here's a little something special!" + "Ecco qualcosa di speciale!" ], "bf047": [ - "Come to me!" + "Vieni da me!" ], "bf048": [ - "Come here!" + "Vieni qui!" ], "bf049": [ - "Let's get closer!" + "Avviciniamoci!" ], "bf050": [ - "Nothing can save you now!" + "Niente può salvarti adesso!" ], "bf051": [ - "You're history!" + "Sei storia!" ], "bf052": [ - "I am the city's savior, not you!" + "Sono io il salvatore della città, non tu!" ], "bf053": [ - "Die!" + "Morire!" ], "bf054": [ - "It's over!" + "È finita!" ], "bf055": [ - "I've got you!" + "Ti ho preso!" ], "bf056": [ - "Now you die!" + "Adesso muori!" ], "bf057": [ - "NOOOOOO!" + "NOOOOO!" ], "bf058": [ - "No!" + "NO!" ], "bf059": [ "NO!" ], "bf060": [ - "Uorghh!" + "Urgh!" ], "bf061": [ - "Ahh!" + "Ah!" ], "bf062": [ "Ungh!" ], "bf063": [ - "Raghh!" + "Raghhh!" ], "bf064": [ - "We finish this now!" + "Finiamolo adesso!" ], "bf065": [ - "Eat this!" + "Mangia questo!" ], "bf066": [ - "Stop!" + "Fermare!" ], "bf067": [ - "You idiot, you're no match for me!" + "Idiota, non sei all'altezza di me!" ], "bf068": [ - "Why don't you die!?" + "Perché non muori!?" ], "bf069": [ - "Give up and I'll make it painless!" + "Arrenditi e lo farò indolore!" ], "bf070": [ - "You cannot win!" + "Non puoi vincere!" ], "bf071": [ - "Aha!" + "Ah!" ], "bf072": [ - "Haha!" + "Ahah!" ], "bf073": [ "AH!" @@ -1246,73 +1246,73 @@ "Urgh!" ], "bf075": [ - "You can do better than that!" + "Puoi fare di meglio!" ], "bf076": [ - "You're mine!" + "Sei mio!" ], "bf077": [ - "Why won't you die!?" + "Perché non vuoi morire!?" ], "bf078": [ - "I have the ultimate power!" + "Ho il potere supremo!" ], "bf079": [ - "Die!" + "Morire!" ], "bf080": [ - "Is that your best shot?" + "E' la tua occasione migliore?" ], "bf081": [ - "Now you die!" + "Adesso muori!" ], "bf082": [ - "Get off my tower!" + "Scendi dalla mia torre!" ], "bf083": [ - "We'll see about that!" + "Vedremo a riguardo!" ], "bf084": [ - "You really think you have a chance?" + "Pensi davvero di avere una possibilità?" ], "bf085": [ - "Fear me!" + "Temimi!" ], "bf086": [ - "You're nothing!" + "Non sei nessuno!" ], "bf087": [ - "My shield is now recharged!" + "Il mio scudo è ora ricaricato!" ], "bf088": [ - "Try these on for size!" + "Prova questi per la taglia!" ], "bf089": [ - "I should have killed you long ago!" + "Avrei dovuto ucciderti molto tempo fa!" ], "bf090": [ - "Never a dull moment, eh?" + "Mai un momento di noia, eh?" ], "bf091": [ - "Stand still!" + "Stai fermo!" ], "bf092": [ - "Go back to wherever you came from!" + "Torna da dove sei venuto!" ], "bf093": [ - "You're both going to die by my hand!" + "Morirete entrambi per mano mia!" ], "bf094": [ - "Come closer!" + "Avvicinati!" ], "bf095": [ - "To the end!" + "All'estremità!" ], "bf096": [ - "You cannot win!" + "Non puoi vincere!" ], "bf097": [ - "Come here!" + "Vieni qui!" ], "bf098": [ "ARGHHH!" @@ -1324,184 +1324,184 @@ "Urgh!" ], "bf101": [ - "Oof!" + "Uffa!" ], "bf102": [ - "Noooo!" + "Nooooo!" ], "bf103": [ - "No!" + "NO!" ], "bf104": [ - "Not again!" + "Non di nuovo!" ], "bf105": [ - "It can't be!" + "Non può essere!" ], "bf106": [ - "Not this time!" + "Non questa volta!" ], "bf107": [ - "Stop!" + "Fermare!" ], "bf108": [ - "Damn!" + "Dannazione!" ], "bf109": [ - "Why, you little...!" + "Perché, piccolo...!" ], "bf110": [ - "Now you've made me angry!" + "Adesso mi hai fatto arrabbiare!" ], "bf111": [ - "Impressive, but let's try that again!" + "Impressionante, ma proviamoci di nuovo!" ], "bf112": [ - "The stronger man always wins!" + "L'uomo più forte vince sempre!" ], "bf113": [ - "Your loss was inevitable, Jak!" + "La tua perdita era inevitabile, Jak!" ], "bf114": [ - "You could never be a baron!" + "Non potresti mai essere un barone!" ], "bf115": [ - "I knew you were weak!" + "Lo sapevo che eri debole!" ], "bf116": [ - "Hm, I expected more from you!" + "Mhm, mi aspettavo di più da te!" ], "bf117": [ - "Losing is for the weak!" + "Perdere è per i deboli!" ], "bf118": [ - "How pathetic!" + "Che patetico!" ], "bf119": [ - "That was too easy!" + "Era troppo facile!" ], "bf120": [ - "Sorry, old boy, it's just war!" + "Scusa, vecchio mio, è solo guerra!" ], "bf121": [ - "Too bad you don't have what it takes!" + "Peccato che tu non abbia quello che serve!" ], "bf122": [ - "The better man won!" + "Ha vinto il migliore!" ], "bf123": [ - "We're similar, Jak... oh, except you're dead!" + "Siamo simili, Jak... oh, tranne che tu sei morto!" ], "bf124": [ - "Feel the fury of the Precursor Stone!" + "Senti la furia della Pietra Precursore!" ], "bf125": [ - "With the Stone's power, I am invincible!" + "Con il potere della Pietra sono invincibile!" ], "bf126": [ - "All will fear me now!" + "Tutti mi temeranno adesso!" ], "bf127": [ - "Time to die!" + "Tempo di morire!" ], "bf128": [ - "My little friends will take care of you!" + "I miei piccoli amici si prenderanno cura di te!" ], "bf129": [ - "You can't run forever, Jak!" + "Non puoi scappare per sempre, Jak!" ], "bf130": [ - "Now I've got you!" + "Ora ho te!" ], "bf131": [ - "Surprise!" + "Sorpresa!" ], "bf132": [ - "I have better things to do than waste my time with you!" + "Ho di meglio da fare che perdere tempo con te!" ], "bf133": [ - "You are nothing!" + "Tu non sei niente!" ], "bf134": [ - "Annoying insect, die!" + "Insetto fastidioso, muori!" ], "bf135": [ - "Not bad, but let me show you what real power is!" + "Non male, ma lascia che ti mostri cos'è il vero potere!" ], "bf136": [ - "Feel this!" + "Senti questo!" ], "bru001": [ - "Great smelly breath of a goosesnake!", - "Heroes to Lurker people you be!", - "By now just see much happy thanks! Ruhuhuh.", - "You honorary members of Lurker tribe now.", - "We no forget - if ever you need us, we help you!" + "Ottimo alito puzzolente di un serpente d'oca!", + "Siete eroi per i Lurker!", + "Ormai vedo solo molto felice, grazie! Ruhuhuh.", + "Siete membri onorari della tribù dei Lurker adesso.", + "Non dimentichiamolo: se mai hai bisogno di noi, ti aiutiamo!" ], "bru002": [ - "I hears you two look for a piece of Mar's shiny Seal.", - "Brutter loves shiny bright things too.", - "I have piece I thinks. It in Water Slums,", - "hanging over me hut and you free to have.", - "Gift from Brutter!" + "Ho sentito che voi due cercate un pezzo del luccicante Sigillo di Mar.", + "Anche Brutter ama le cose luccicanti.", + "Ho un pezzo, penso. Nelle baraccopoli dell'acqua,", + "incombe su di me e tu sei libero di avere.", + "Regalo da Brutter!" ], "bru004": [ - "You two good! No better warrior in all Lurker tribes!", - "You keep Seal. You love shiny things just like Brutter." + "Bravi voi due! Non c'è guerriero migliore in tutte le tribù dei Lurker!", + "Mantieni Sigillo. Ami le cose luccicanti proprio come Brutter." ], "cit001": [ - "Hey!" + "EHI!" ], "cit004": [ - "Watch it!" + "Guardalo!" ], "cit008": [ - "No!" + "NO!" ], "cit010": [ "Argh!" ], "cit016": [ - "Stay away!" + "Stai lontano!" ], "cit033": [ - "Hey!" + "EHI!" ], "cit034": [ - "Look out!" + "Attenzione!" ], "cit035": [ - "Watch out!" + "Attento!" ], "cit046": [ - "Go away!" + "Andare via!" ], "cit047": [ - "Leave me alone!" + "Lasciami in pace!" ], "cit051": [ - "Are you crazy?" + "Sei pazzo?" ], "cit053": [ - "Are you insane?!" + "Sei pazzo?!" ], "cit055": [ - "Hey, that's my vehicle!" + "Ehi, quello è il mio veicolo!" ], "cit056": [ - "Gimme back my vehicle!" + "Ridammi il mio veicolo!" ], "cit057": [ - "What are you doing?" + "Cosa fai?" ], "cit058": [ - "Please, don't take it!" + "Per favore, non prenderlo!" ], "cit097": [ - "Ugh!" + "Uffa!" ], "cit097a": [ - "Aahh!" + "Ahhh!" ], "cit097b": [ "Aaghhh!" @@ -1513,1592 +1513,1592 @@ "AAHHH!" ], "cit098": [ - "Ahh!!" + "Ah!!" ], "cit098a": [ "Urgh!" ], "cit098b": [ - "Ugh!" + "Uffa!" ], "cit098c": [ - "Ugh!" + "Uffa!" ], "cit098d": [ - "Ahh!" + "Ah!" ], "cit099": [ - "No!" + "NO!" ], "cit099a": [ - "Noooo!" + "Nooooo!" ], "cit099b": [ - "No!" + "NO!" ], "cit099c": [ - "No!" + "NO!" ], "cit099d": [ "Nooo!" ], "cit100": [ - "Please!" + "Per favore!" ], "cit100a": [ - "Please!" + "Per favore!" ], "cit100b": [ - "Please!" + "Per favore!" ], "cit100c": [ - "Please!" + "Per favore!" ], "cit101": [ - "Stop!" + "Fermare!" ], "cit101a": [ - "Stop!" + "Fermare!" ], "cit101b": [ - "Stop!" + "Fermare!" ], "cit101c": [ - "Stop!" + "Fermare!" ], "cit103": [ - "Sound the alarm!" + "Suona l'allarme!" ], "cit103a": [ - "Sound the alarm!" + "Suona l'allarme!" ], "cit104": [ - "Guards!" + "Guardie ✔!" ], "cit104a": [ - "Guards! Help us!" + "Guardie ✔! Aiutaci!" ], "cit105": [ - "Help us!" + "Aiutaci!" ], "cit120": [ - "Keep away from me!" + "Tienilo lontano da me!" ], "cit120a": [ - "Keep away from me!" + "Tienilo lontano da me!" ], "cit137a": [ - "Wait!" + "Aspettare!" ], "cityv001": [ - "Leaving city safe zone." + "Lasciando la zona sicura della città." ], "cityv002": [ - "Leaving city at your own risk." + "Lasciare la città a proprio rischio e pericolo." ], "cityv003": [ - "Exiting city." + "Uscendo dalla città." ], "cityv004": [ - "Opening outer shield." + "Scudo esterno apribile." ], "cityv005": [ - "Decontamination complete." + "Decontaminazione completata." ], "cityv006": [ - "Entering Haven City." + "Entrando in Haven City." ], "cityv007": [ - "Re-entering city." + "Rientro in città." ], "cityv008": [ - "Welcome back." + "Bentornato." ], "cityv009": [ - "It's good to see you still alive." + "È bello vederti ancora vivo." ], "cityv010": [ - "Security clearance granted." + "Autorizzazione di sicurezza concessa." ], "cityv011": [ - "Entrance denied. You do not have proper clearance." + "Ingresso negato. Non hai l'autorizzazione appropriata." ], "cityv012": [ - "I am unable to comply." + "Non sono in grado di ottemperare." ], "cityv013": [ - "Please come back with proper clearance." + "Per favore, torna con l'autorizzazione adeguata." ], "cityv014": [ - "Access denied." + "Accesso negato." ], "cityv015": [ - "You need Red Clearance for this gate." + "Hai bisogno dell'autorizzazione rossa per questo cancello." ], "cityv016": [ - "You need Green Clearance for this gate." + "Hai bisogno dell'autorizzazione verde per questo cancello." ], "cityv017": [ - "You need Yellow Clearance for this gate." + "Hai bisogno dell'autorizzazione gialla per questo cancello." ], "cityv018": [ - "You need Blue Clearance for this gate." + "Hai bisogno dell'autorizzazione blu per questo cancello." ], "cityv019": [ - "You need Purple Clearance for this gate." + "Hai bisogno dell'autorizzazione viola per questo cancello." ], "cityv020": [ - "You need special Black Clearance for this door." + "Per questa porta è necessaria una speciale autorizzazione nera." ], "cityv021": [ - "Access granted." + "Accesso garantito." ], "cityv022": [ - "Door open." + "Porta aperta." ], "cityv023": [ - "Door closed." + "Porta chiusa." ], "cityv024": [ - "Please enter." + "Prego entra." ], "cityv025": [ - "Warp Gate online." + "Portale Warp in linea." ], "cityv026": [ - "Warning: Eco supplies low." + "Avvertenza: scorte eco scarse." ], "cityv027": [ - "Backup systems failing." + "I sistemi di backup falliscono." ], "cityv028": [ - "Warning: Eco storage is below safe minimums." + "Avvertenza: lo stoccaggio ecologico è al di sotto dei minimi di sicurezza." ], "cityv029": [ - "Eco Grid unstable." + "Rete ecologica instabile." ], "cityv030": [ - "Metal Heads detected at Mining Site." + "Teste di metallo rilevate nel sito minerario." ], "cityv031": [ - "Metal Heads detected at Drilling Site." + "Metal Head rilevati nel sito di perforazione." ], "cityv032": [ - "Stand by for clearance." + "Attendere l'autorizzazione." ], "cityv033": [ - "Have a nice day." + "Buona giornata." ], "cityv034": [ - "Welcome." + "Benvenuto." ], "cityv035": [ - "This is a restricted area." + "Questa è un'area riservata." ], "cityv036": [ - "You are in violation of Speed Ordinance 51d, pull over." + "Stai violando l'ordinanza sulla velocità 51d, accosta." ], "cityv037": [ - "I have alerted the authorities." + "Ho allertato le autorità." ], "cityv038": [ - "This sector is closed." + "Questo settore è chiuso." ], "cityv039": [ - "Alert: Prison escape in progress." + "Avviso: evasione dalla prigione in corso." ], "cityv040": [ - "Alert: City under attack." + "Allerta: città sotto attacco." ], "cityv041": [ - "Metal Head attack in progress." + "Attacco Metal Head in corso." ], "cityv042": [ - "All citizens go to safe shelters." + "Tutti i cittadini vanno in rifugi sicuri." ], "cityv043": [ - "Eco Grid growing unstable." + "Eco Grid sempre più instabile." ], "cityv044": [ - "The Eco Grid is down. Repeat: The Eco Grid is down." + "L'Eco Grid non funziona. Ripeto: l'Eco Grid non funziona." ], "cityv045": [ - "Red alert: City shield wall compromised." + "Allarme rosso: muro difensivo della città compromesso." ], "cityv046": [ - "Unauthorized movement in sewer system." + "Movimento non autorizzato nel sistema fognario." ], "cityv047": [ - "This is a restricted area. Defenses activated." + "Questa è un'area riservata. Difese attivate." ], "cityv048": [ - "You are trespassing. Defenses coming online." + "Stai sconfinando. Le difese entrano in azione." ], "cityv049": [ - "I regret use of force. Systems arming." + "Mi pento dell'uso della forza. Inserimento dei sistemi." ], "cityv050": [ - "Trespasser neutralized." + "Intruso neutralizzato." ], "cityv051": [ - "Suspect destroyed." + "Sospettato distrutto." ], "cityv052": [ - "I am authorized to use force." + "Sono autorizzato a usare la forza." ], "cityv053": [ - "General alert: Riot in progress. Krimzon Guards en route." + "Allerta generale: disordini in corso. Guardie Krimzon in viaggio." ], "cityv054": [ - "Surrender yourself. You are under arrest." + "Arrenditi. Tu sei sotto arresto." ], "cityv055": [ - "There is no escape." + "Non c'è via di fuga." ], "cityv056": [ - "You are in a restricted sector. This sector is on high alert." + "Ti trovi in ​​un settore riservato. Questo settore è in massima allerta." ], "cityv057": [ - "You are under arrest. Surrender yourself." + "Tu sei sotto arresto. Arrenditi." ], "cityv058": [ - "This sector is off limits." + "Questo settore è interdetto." ], "cityv061": [ - "All systems back online and in the green." + "Tutti i sistemi sono tornati online e in verde." ], "cityv062": [ - "The race is about to begin." + "La corsa sta per iniziare." ], "cityv063": [ - "Welcome to the city transportation system." + "Benvenuti nel sistema di trasporto cittadino." ], "cityv064": [ - "You can thrust in your vehicle at any time." + "Puoi entrare nel tuo veicolo in qualsiasi momento." ], "cityv065": [ - "Braking will assist in vehicle control." + "La frenata aiuterà nel controllo del veicolo." ], "cityv067": [ - "Backing up is easy." + "Fare il backup è facile." ], "cityv068": [ - "You can hover in one of two zones: low and high." + "Puoi passare il mouse su una delle due zone: bassa e alta." ], "cityv069": [ - "Try switching hover zones." + "Prova a cambiare zona al passaggio del mouse." ], "cityv070": [ - "Switching hover zones may help avoid traffic or", - "ground obstacles." + "Cambiare zona al passaggio del mouse può aiutare a evitare il traffico o", + "ostacoli al suolo." ], "cityv075": [ - "Alert: Vehicle destruction imminent." + "Avviso: distruzione del veicolo imminente." ], "cityv076": [ - "Please drive more carefully next time." + "Per favore guida con più attenzione la prossima volta." ], "cityv077": [ - "Thank you for using the vehicle." + "Grazie per aver utilizzato il veicolo." ], "cityv078": [ - "Have a nice day." + "Buona giornata." ], "cityv079": [ - "Warning: Missile cooling systems damaged." + "Attenzione: sistemi di raffreddamento dei missili danneggiati." ], "cityv080": [ - "Alert: Backup cooling system failure.", - "Emergency overrides initiated." + "Avviso: guasto del sistema di raffreddamento di riserva.", + "Avviati interventi di emergenza." ], "cityv081": [ - "Missile systems at critical overload.", - "Failsafe not responding." + "Sistemi missilistici in sovraccarico critico.", + "Il failsafe non risponde." ], "cityv082": [ - "Danger: Warhead detonation imminent.", - "Evacuate immediately." + "Pericolo: la detonazione della testata è imminente.", + "Evacuare immediatamente." ], "cityv087": [ - "Arriving at Throne Room floor." + "Arrivo al piano della Sala del Trono." ], "cityv088": [ - "Arriving at ground floor." + "Arrivo al piano terra." ], "cityv093": [ - "You have been sentenced to termination." + "Sei stato condannato al licenziamento." ], "cityv094": [ - "This area is restricted.", - "Initiating termination with extreme prejudice." + "Quest'area è riservata.", + "Avvio del licenziamento con estremo pregiudizio." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Quest'area è aperta solo al personale della Guardia Krimzon." ], "cityv096": [ - "The city is on high alert." + "La città è in massima allerta." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "La città è sotto attacco.", + "Tutti i cittadini si dirigono verso rifugi sicuri." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "La città è sotto attacco. Per favore, restate nelle vostre case." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "Gli aggressori Metal Head si stanno infiltrando nel sistema." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Congratulazioni per aver ricevuto un Security Pass." ], "cityv107": [ - "Unauthorized use of Fortress door.", - "Activating security tank." + "Uso non autorizzato della porta della Fortezza.", + "Attivazione serbatoio di sicurezza." ], "cityv108": [ - "Gunpod weapons coming online." + "Armi Gunpod in arrivo." ], "cityv109": [ - "Weapons overheating." + "Surriscaldamento delle armi." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "Armi non funzionanti. Si prega di attendere il raffreddamento." ], "cityv111": [ - "Weapons back online." + "Le armi sono tornate online." ], "cityv112": [ - "The gunpod has taken severe damage." + "Il gunpod ha subito gravi danni." ], "cityv130": [ - "The city map is displayed in the lower right." + "La mappa della città viene visualizzata in basso a destra." ], "cityv132": [ - "Follow the icons on the map", - "to reach important destinations." + "Segui le icone sulla mappa", + "per raggiungere mete importanti." ], "cityv134": [ - "Intruder alert." + "Avviso intruso." ], "cityv135": [ - "Stand by." + "Stand-by." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Sto riscontrando un sovraccarico del circuito.", + "Attiva i miei interruttori di bypass entro il limite di tempo", + "e sarai ricompensato." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "Non sei riuscito ad attivare in tempo la rete di bypass.", + "I miei circuiti della Zona C sono sovraccarichi." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "Hai attivato con successo il bypass", + "per i miei circuiti in tempo.", + "Ecco una ricompensa." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", - "to stabilize the Eco Grid." + "Ho bisogno di alimentazione di emergenza per i miei Eco Converter.", + "Accendi rapidamente tutti i circuiti disponibili", + "per stabilizzare l’Eco Grid." ], "cityv150": [ - "You didn't reach all the switches in time.", - "The Eco Grid is still unstable." + "Non hai raggiunto tutti gli interruttori in tempo.", + "L’Eco Grid è ancora instabile." ], "cityv151": [ - "You successfully switched on the circuits", - "to stabilize the Eco Grid.", - "You have earned a reward." + "Hai attivato con successo i circuiti", + "per stabilizzare l’Eco Grid.", + "Hai guadagnato una ricompensa." ], "cityv152": [ - "I have detected a Dark Eco spill.", - "You must remove this hazard quickly", - "before the city is contaminated." + "Ho rilevato una fuoriuscita di Eco scuro.", + "È necessario rimuovere rapidamente questo pericolo", + "prima che la città venga contaminata." ], "cityv153": [ - "You did not remove all the Dark Eco quickly enough." + "Non hai rimosso tutto l'Eco Oscuro abbastanza velocemente." ], "cityv154": [ - "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "Hai rimosso il pericolo dell'Eco Oscuro in tempo.", + "La città ti è grata." ], "cityv155": [ - "Sensors indicate a cluster of Blue Eco in the city.", - "Collect all eco before it dissipates", - "and you will be rewarded." + "I sensori indicano un ammasso di Blue Eco in città.", + "Raccogli tutta l'eco prima che si dissipi", + "e sarai ricompensato." ], "cityv156": [ - "You did not retrieve all of the eco." + "Non hai recuperato tutta l'eco." ], "cityv157": [ - "You successfully retrieved the eco.", - "Here is your reward." + "Hai recuperato con successo l'eco.", + "Ecco la tua ricompensa." ], "cityv158": [ - "Emergency response needed.", - "Runaway bomb bots detected and headed for", - "populated areas. Neutralize all bomb bots", - "before it's too late." + "Necessaria una risposta di emergenza.", + "I robot bomba in fuga sono stati rilevati e si sono diretti verso", + "aree popolate. Neutralizza tutti i robot bomba", + "prima che sia troppo tardi." ], "cityv159": [ - "You failed to neutralize the runaway bomb bots." + "Non sei riuscito a neutralizzare i robot bomba in fuga." ], "cityv160": [ - "You destroyed the runaway bomb bots.", - "The city thanks you." + "Hai distrutto i robot bomba in fuga.", + "La città ringrazia." ], "cityv161": [ - "Get to this point in the game quickly", - "and you will receive a prize." + "Raggiungi rapidamente questo punto del gioco", + "e riceverai un premio." ], "cityv162": [ - "Try to find this spot." + "Prova a trovare questo posto." ], "cityv163": [ - "Can you identify this place and get there?" + "Puoi identificare questo posto e arrivarci?" ], "cityv164": [ - "Make it here in the time allotted and a reward is yours." + "Raggiungilo nel tempo assegnato e la ricompensa sarà tua." ], "cityv165": [ - "Find this spot for a prize." + "Trova questo posto e riceverai un premio." ], "cityv166": [ - "Get to this spot for a prize." + "Raggiungi questo posto per un premio." ], "cityv167": [ - "Metal Heads have been detected in the gun course.", - "Neutralize them all immediately." + "Sono stati rilevati Metal Head nel percorso delle armi.", + "Neutralizzateli tutti immediatamente." ], "cityv168": [ - "You did not kill them all." + "Non li hai uccisi tutti." ], "cityv169": [ - "Excellent shooting. Threat eliminated." + "Scatto eccellente. Minaccia eliminata." ], "cityv170": [ - "Get a high score on the JET-Board and receive a prize." + "Ottieni un punteggio elevato sul JET-Board e ricevi un premio." ], "cityv171": [ - "Try for a high score and receive a prize." + "Prova a ottenere un punteggio elevato e ricevi un premio." ], "cityv172": [ - "You did not achieve a high enough score." + "Non hai ottenuto un punteggio sufficientemente alto." ], "cityv173": [ - "Congratulations, you achieved a high enough score." + "Congratulazioni, hai ottenuto un punteggio abbastanza alto." ], "cityv174": [ - "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Benvenuti al computer centrale dello stadio.", + "Seleziona la tua sfida." ], "cityv175": [ - "Attention, all citizens:", - "The Class 1 Race is about to begin." + "Attenzione, tutti i cittadini:", + "La gara di Classe 1 sta per iniziare." ], "cityv176": [ - "Attention, all citizens:", - "The Class 2 Race is about to begin." + "Attenzione, tutti i cittadini:", + "La Gara di Classe 2 sta per iniziare." ], "cityv177": [ - "Attention, all citizens:", - "The Class 3 Race is about to begin." + "Attenzione, tutti i cittadini:", + "La Gara di Classe 3 sta per iniziare." ], "cityv178": [ - "Care to try for the course record?" + "Ti va di provare a battere il record del corso?" ], "cityv179": [ - "Congratulations, you achieved the gold record." + "Congratulazioni, hai raggiunto il record d'oro." ], "cityv180": [ - "Congratulations, you achieved the silver record." + "Congratulazioni, hai raggiunto il record d'argento." ], "cityv181": [ - "Congratulations, you achieved the bronze record." + "Congratulazioni, hai raggiunto il record di bronzo." ], "cityv182": [ - "Care to try for a high score record?" + "Ti va di provare a segnare un record?" ], "cityv183": [ - "Would you like to try for a high score?" + "Ti piacerebbe provare a ottenere un punteggio elevato?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Benvenuti alle prove a tempo di corsa." ], "cityv185": [ - "Would you like to race for a record time?" + "Vorresti gareggiare per un tempo record?" ], "cityv186": [ - "Choose your course." + "Scegli il tuo corso." ], "cityv187": [ - "Would you like to try for a course record?" + "Ti piacerebbe provare a ottenere un record del corso?" ], "cityv188": [ - "Would you like to use Orbs to buy a secret?" + "Ti piacerebbe utilizzare le sfere per acquistare un segreto?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "Non hai abbastanza sfere per questo segreto." ], "cityv190": [ - "Secret activated." + "Segreto attivato." ], "cityv191": [ - "All secrets are activated." + "Tutti i segreti sono attivati." ], "cityv192": [ - "Please exit the Titan Suit." + "Per favore, esci dalla tuta da Titano." ], "cityv193": [ - "You must exit the Titan Suit." + "Devi uscire dalla tuta da Titano." ], "cityv194": [ - "Vehicles must remain within city limits." + "I veicoli devono rimanere entro i limiti della città." ], "cityv195": [ - "Exit denied. Enemy targets still present." + "Uscita negata. Obiettivi nemici ancora presenti." ], "cityv196": [ - "Exit denied. Metal Head eggs still detected." + "Uscita negata. Uova di Metal Head ancora rilevate." ], "cityv197": [ - "Scanners show Metal Head eggs still active." + "Gli scanner mostrano che le uova di Metal Head sono ancora attive." ], "daxm001": [ - "Shoot the platform, Jak." + "Spara alla piattaforma, Jak." ], "daxm002": [ - "We need something to get through that gate!" + "Ci serve qualcosa per attraversare quel cancello!" ], "daxm003": [ - "Shoot the Metal Head when he moves his shield!" + "Spara a Metal Head quando muove lo scudo!" ], "daxm004": [ - "Hit him in his stomach!" + "Colpiscilo allo stomaco!" ], "daxm005": [ - "Whoa! That path dropped like uh... a rock!" + "Ehi! Quel sentiero è caduto come uh... una roccia!" ], "daxm006": [ - "Smack the box, baby!" + "Sbatti la scatola, tesoro!" ], "daxm007": [ - "That's what I call a rocky road!" + "Questa è quella che io chiamo una strada rocciosa!" ], "daxm008": [ - "We gotta get to the top!" + "Dobbiamo arrivare in cima!" ], "daxm009": [ - "We made it!!" + "Ce l'abbiamo fatta!!" ], "daxm010": [ - "Rock 'n roll!" + "Rock n roll!" ], "ds001": [ - "We gotta find the Baron, Jak." + "Dobbiamo trovare il Barone, Jak." ], "ds005": [ - "Jak, those are Metal Heads!" + "Jak, quelli sono Metal Heads!" ], "ds006": [ - "Finally, now we get to see the Shadow!", - "What do ya gotta do around this place to get noticed?" + "Finalmente ora possiamo vedere l'Ombra!", + "Cosa devi fare in questo posto per farti notare?" ], "ds012": [ - "That must be the Ruby Key to the city." + "Quella deve essere la chiave di rubino della città." ], "ds013": [ - "Statues are becoming an endangered species around here." + "Le statue stanno diventando una specie in via di estinzione da queste parti." ], "ds014": [ - "So this is Mar's scary tomb, eh?", - "Doesn't look so bad." + "Quindi questa è la tomba spaventosa di Marte, eh?", + "Non sembra così male." ], "ds016": [ - "Let's bring the money back to Krew." + "Riportiamo i soldi a Krew." ], "ds017": [ - "That must be the ammo and missile Torn told us to blow up!" + "Devono essere le munizioni e il missile che Torn ci ha detto di far esplodere!" ], "ds018": [ - "Get the tank to shoot the missile!" + "Prendi il carro armato per sparare al missile!" ], "ds019": [ - "Break those tubes in the center." + "Rompi quei tubi al centro." ], "ds020": [ - "Please tell me you remember how to roll..." + "Per favore, dimmi che ricordi come rotolare..." ], "ds023": [ - "Let's rock!" + "Rockeggiamo!" ], "ds024": [ - "Here we go!" + "Eccoci qui!" ], "ds025": [ - "All right!" + "Va bene!" ], "ds026": [ - "Yeah!" + "Sì!" ], "ds028": [ - "Oh yeah!" + "O si!" ], "ds029": [ - "Let's go back to the city." + "Torniamo in città." ], "ds030": [ - "I think we need to go back to the city, Jak." + "Penso che dovremmo tornare in città, Jak." ], "ds031": [ - "Let's go talk to Torn." + "Andiamo a parlare con Torn." ], "ds032": [ - "Let's go back to the Underground Hideout." + "Torniamo al nascondiglio sotterraneo." ], "ds043": [ - "You can get a longer jump by rolling into it." + "Puoi fare un salto più lungo rotolandoci dentro." ], "ds044": [ - "Use a long jump to get across this gap." + "Usa un salto in lungo per superare questo divario." ], "ds045": [ - "Nice form!" + "Bella forma!" ], "ds046": [ - "If you duck before you jump, you'll go higher.", - "You'll need a high jump to reach the top of this ledge, Jak." + "Se ti abbassi prima di saltare, arriverai più in alto.", + "Devi saltare più in alto per raggiungere quella sporgenza, Jak." ], "ds047": [ - "Ooh, that's a high one.", - "You'll need to jump,", - "then jump again in the air to get up there." + "Ooh, è alto.", + "Dovrai saltare,", + "poi salta di nuovo in aria per arrivare lassù." ], "ds048": [ - "Hit 'em again, Jak!" + "Colpiscili ancora, Jak!" ], "ds049": [ - "Do a spin kick!" + "Fai un calcio rotante!" ], "ds050": [ - "Robotank, run!" + "Robotan, corri!" ], "ds051": [ - "Hey, we should stay with Sig." + "Ehi, dovremmo restare con il Sig." ], "ds052": [ - "Hey, big guy, keep close, huh?" + "Ehi, ragazzone, stai vicino, eh?" ], "ds053": [ - "We're too far away from Sig." + "Siamo troppo lontani dal Sig." ], "ds054": [ - "Stick with the plan, Jak, protect Sig!" + "Segui il piano, Jak, proteggi Sig!" ], "ds055": [ - "Uh oh, where's Sig?" + "Uh oh, dov'è Sig?" ], "ds056": [ - "Wow, what a blast!" + "Wow, che esplosione!" ], "ds057": [ - "Sig's a good shot." + "Sig ha una buona mira." ], "ds058": [ - "Go help Sig!" + "Vai ad aiutare Sig!" ], "ds059": [ - "Nice shootin', Sig!" + "Bella ripresa, Sig!" ], "ds060": [ - "You're my hero!" + "Sei il mio eroe!" ], "ds061": [ - "Uh oh, Sig's in trouble!" + "Oh oh, Sig è nei guai!" ], "ds062": [ - "There's another Metal Head going after our boy!", - "Shoot it, shoot it!" + "C'è un altro Metal Head che insegue il nostro ragazzo!", + "Spara, spara!" ], "ds063": [ - "Keep Sig safe, Jak!" + "Tieni Sig al sicuro, Jak!" ], "ds064": [ - "Whoa, Sig's really getting roughed up!" + "Whoa, Sig è davvero malmenato!" ], "ds065": [ - "Shoot 'em, shoot 'em!" + "Sparagli, sparagli!" ], "ds066": [ - "Sig dies, we die." + "Sig muori, noi moriamo." ], "ds067": [ - "Oof, we suck..." + "Oddio, facciamo schifo..." ], "ds068": [ - "We have to keep 'em away from Sig." + "Dobbiamo tenerli lontani da Sig." ], "ds069": [ - "We need to find the valve to turn the water back on." + "Dobbiamo trovare la valvola per riaprire l'acqua." ], "ds094": [ - "Robotank, run!" + "Robotan, corri!" ], "ds095": [ - "Here comes that tank again!" + "Ecco di nuovo quel carro armato!" ], "ds096": [ - "Get the tank to shoot the missile!" + "Prendi il carro armato per sparare al missile!" ], "ds099": [ - "We need to get to the top of that tower!" + "Dobbiamo arrivare in cima a quella torre!" ], "ds100": [ - "Climb the ruined tower, Jak!" + "Sali sulla torre in rovina, Jak!" ], "ds111": [ - "We should come back with the Titan Suit to do this path." + "Dovremmo tornare con la tuta da titano per fare questo percorso." ], "ds112": [ - "You've got a mechanical fist, Jak. Use it!" + "Hai un pugno meccanico, Jak. Usalo!" ], "ds113": [ - "Break the door!" + "Rompi la porta!" ], "ds114": [ - "800 pound Tigorilla comin' through!" + "Tigorilla da 800 sterline in arrivo!" ], "ds115": [ - "Smashing work, Jak! Oh, that was funny." + "Lavoro strepitoso, Jak! Oh, è stato divertente." ], "ds116": [ - "Shoot the platform, Jak." + "Spara alla piattaforma, Jak." ], "ds117": [ - "We need something to get through that gate." + "Ci serve qualcosa per oltrepassare quel cancello." ], "ds118": [ - "Shoot the Metal Head when he moves his shield." + "Spara al Metal Head quando muove il suo scudo." ], "ds119": [ - "Hit him in his stomach." + "Colpiscilo allo stomaco." ], "ds120": [ - "Whoa, that path dropped like a... a rock!" + "Wow, quel sentiero scendeva come un... sasso!" ], "ds121": [ - "Smack the box, baby!" + "Sbatti la scatola, tesoro!" ], "ds128": [ - "Good, we're through." + "Bene, abbiamo finito." ], "ds129": [ - "Shoot the gun, Jak!" + "Spara, Jak!" ], "ds143": [ - "We're supposed to keep Krew's guys alive, Jak!" + "Dovremmo mantenere in vita gli uomini di Krew, Jak!" ], "ds144": [ - "Save 'em, Jak!" + "Salvali, Jak!" ], "ds145": [ - "Don't like this, Jak..." + "Non mi piace, Jak..." ], "ds146": [ - "Behind us, Jak!" + "Dietro di noi, Jak!" ], "ds147": [ - "Metal Heads! Everywhere!" + "Teste di metallo! Ovunque!" ], "ds148": [ - "Protect us, Jak! But first me." + "Proteggici, Jak! Ma prima io." ], "ds150": [ - "Take a vehicle, Jak! It's faster." + "Prendi un veicolo, Jak! È più veloce." ], "ds151": [ - "Use your JET-Board!" + "Usa la tua JET-Board!" ], "ds152": [ - "We got company, Jak! Lots of guards!" + "Abbiamo compagnia, Jak! Molte guardie!" ], "ds160": [ - "That's right, we're bad! The Precursor Stone is ours!" + "Esatto, siamo cattivi! La Pietra Precursore è nostra!" ], "ds161": [ - "There's Mar's gun, Jak! Let's go check it out." + "C'è la pistola di Mar, Jak! Andiamo a dare un'occhiata." ], "ds162": [ - "These Precursor Orbs are worth a lot now.", - "We might find a few hidden around,", - "or get some doing difficult tasks.", - "We'll be able to buy stuff with 'em!" + "Queste sfere Precursor valgono molto ora.", + "Potremmo trovarne alcuni nascosti in giro,", + "o chiedi ad alcuni di svolgere compiti difficili.", + "Potremo comprare cose con loro!" ], "ds163": [ - "Jak, now that we have the Palace Security Pass,", - "let's go have some fun in the big man's crib!" + "Jak, ora che abbiamo il Palace Security Pass,", + "andiamo a divertirci nella culla del grand'uomo!" ], "ds164": [ - "Back up to get out of the mech." + "Torna indietro per uscire dal mech." ], "ds165": [ - "We're free, Jak! Thanks to me.", - "Nice to breathe some fresh air, huh?", - "We'll get that Baron Praxis guy, alright!" + "Siamo liberi, Jak! Grazie a me.", + "Bello respirare un po' d'aria fresca, eh?", + "Prenderemo quel Barone Praxis, va bene!" ], "ds166": [ - "I'm not getting out of this pod", - "'till you kill all those crazy flyin' Metal Heads!" + "Non uscirò da questa capsula", + "finché non ucciderai tutti quei pazzi Metal Head volanti!" ], "ds167": [ - "I wonder why they wanted us to protect Samos' Hut.", - "Maybe now we'll get to meet the Shadow." + "Mi chiedo perché abbiano voluto che proteggessimo la capanna di Samos.", + "Forse ora incontreremo l'Ombra." ], "ds168": [ - "There's the Rift Ring!" + "C'è l'Anello Rift!" ], "ds173": [ "Ahhh!" ], "ds174": [ - "Ooooh!" + "Oooh!" ], "ds175": [ "Whoa-whoa-oaa-ah!" ], "ds176": [ - "Whoa!" + "Ehi!" ], "ds177": [ - "Hey!" + "EHI!" ], "ds178": [ - "Hey, watch that!" + "Ehi, guardalo!" ], "ds179": [ - "Ooh!" + "Oh!" ], "ds180": [ - "Oh, boy!" + "Oh ragazzo!" ], "ds181": [ - "Uooaaoh!" + "Oh!" ], "ds182": [ - "Wow, that was close!" + "Wow, c'era mancato poco!" ], "ds183": [ - "Oh, boy!" + "Oh ragazzo!" ], "ds184": [ - "Yes!" + "SÌ!" ], "ds185": [ - "Yeah!" + "Sì!" ], "ds186": [ - "Hey, watch it!" + "Ehi, guardalo!" ], "ds187": [ - "All right!" + "Va bene!" ], "ds188": [ - "Move over!" + "Spostati!" ], "ds189": [ - "Orange Lightning coming through!" + "Fulmine arancione in arrivo!" ], "ds190": [ - "Rollin' with the homies!" + "Rotolando con gli amici!" ], "ds191": [ - "You're mine!" + "Sei mio!" ], "ds192": [ - "There they are!" + "Sono là!" ], "ds193": [ - "Hey! Watch where you're drivin'!" + "EHI! Guarda dove guidi!" ], "ds194": [ - "How do I drive this thing?" + "Come posso guidare questa cosa?" ], "ds195": [ - "Yeah, that's right! I'm bad!" + "Si, è esatto! Sono cattivo!" ], "ds196": [ - "Outta my way!" + "Fuori dai piedi!" ], "ds197": [ - "Outta my way!" + "Fuori dai piedi!" ], "ds198": [ - "Move it or lose it, buddy!" + "Muoviti o perdilo, amico!" ], "ds199": [ - "Mm... bye-bye!" + "Mm... ciao ciao!" ], "ds200": [ - "Last lap!" + "Ultimo giro!" ], "ds201": [ - "Come on, come on!" + "Dai dai!" ], "ds202": [ - "Come on, come on, come on!" + "Dai dai dai!" ], "ds203": [ - "Pedal to the metal!" + "Accelerare a fondo!" ], "ds204": [ - "Ooooah, I gotta catch up!" + "Ooooah, devo recuperare!" ], "ds205": [ - "Turn and burn, baby!" + "Girati e brucia, tesoro!" ], "ds206": [ - "Oooh, it's gonna be close!" + "Oooh, sarà vicino!" ], "ds207": [ - "Eat my dust, buddy!" + "Mangia la mia polvere, amico!" ], "ds208": [ - "Gotcha!" + "Capito!" ], "ds209": [ - "This is my track, grandma!" + "Questa è la mia traccia, nonna!" ], "ds210": [ - "Learn to drive!" + "Impara a guidare!" ], "ds211": [ - "Turn, turn!" + "Girati, girati!" ], "ds212": [ - "Step on it!" + "Passaci sopra!" ], "ds213": [ - "Oooh, I won, I won!" + "Oooh, ho vinto, ho vinto!" ], "ds214": [ - "Yeee, that's a good lap time." + "Sì, è un buon tempo sul giro." ], "ds215": [ - "Oh, yeah! I'm rockin'!" + "O si! Sto spaccando!" ], "ds216": [ - "Another lap in the record book!" + "Un altro giro nel libro dei record!" ], "ds217": [ - "Take a good look at my tail!" + "Guarda bene la mia coda!" ], "ds218": [ "Wahoo!" ], "ds219": [ - "Hey, fang boy, hurry up and get in,", - "we'll take you to Brutter!" + "Ehi, ragazzo zanna, sbrigati ed entra,", + "ti portiamo a Brutter!" ], "ds220": [ - "Here's your boy, Brutter! We're off to get another animal!" + "Ecco il tuo ragazzo, Brutter! Andiamo a prendere un altro animale!" ], "ds221": [ - "Yo, animal lover, get your furry butt in the vehicle!" + "Ehi, amante degli animali, porta il tuo sedere peloso nel veicolo!" ], "ds222": [ - "Here's another beast of burden!" + "Ecco un'altra bestia da soma!" ], "ds223": [ - "In the vehicle, buddy, we can save you!" + "Nel veicolo, amico, possiamo salvarti!" ], "ds224": [ - "Another Lurker freed." + "Un altro Lurker liberato." ], "ds225": [ - "Let's move, eco breath! We gotta get you to Brutter." + "Muoviamoci, respiro eco! Dobbiamo portarti a Brutter." ], "ds226": [ - "Hey, Brutter! Look what the cat turkey dragged in." + "Ehi, Brutter! Guarda cosa ha portato dentro il gatto tacchino." ], "ds227": [ - "Lookie what we found!" + "Guarda cosa abbiamo trovato!" ], "ds228": [ - "You recognize this monster?" + "Riconosci questo mostro?" ], "ds229": [ - "We did it! We saved them all!" + "Ce l'abbiamo fatta! Li abbiamo salvati tutti!" ], "ds230": [ - "Catch the paddywagon, Jak!" + "Prendi il camioncino, Jak!" ], "ds231": [ - "Crash the paddywagon!" + "Distruggi il carro di risaia!" ], "ds232": [ - "A little more damage and we got the sucker!" + "Ancora un po' di danni e siamo fuori!" ], "ds233": [ - "He's smoking, Jak! Hit him again!" + "Sta fumando, Jak! Colpiscilo ancora!" ], "ds234": [ - "That caused some damage!" + "Ciò ha causato qualche danno!" ], "ds235": [ - "One more like that and he's through!" + "Un altro così e ha finito!" ], "ds236": [ - "Find the next vehicle!" + "Trova il prossimo veicolo!" ], "ds237": [ - "Yes, we took it out!" + "Sì, l'abbiamo tolto!" ], "ds238": [ - "Hunt and destroy, baby!" + "Caccia e distruggi, tesoro!" ], "ds239": [ - "Hit it, hit it!" + "Colpiscilo, colpiscilo!" ], "ds240": [ - "Take it out!" + "Tiralo fuori!" ], "ds241": [ - "Pick up the Lurker, Jak!" + "Raccogli il Lurker, Jak!" ], "ds242": [ - "Get the Lurker!" + "Prendi il Lurker!" ], "ds243": [ - "We need to pick up that Lurker back there." + "Dobbiamo prendere quel Lurker laggiù." ], "ds244": [ - "Usually, I don't like to be this close to Lurkers." + "Di solito non mi piace essere così vicino ai Lurkers." ], "ds245": [ - "Ehehe, you seem like a nice, uh... animal." + "Ehehe, sembri un simpatico, uh... animale." ], "ds246": [ - "Easy, buddy. Don't bite me!" + "Facile, amico. Non mordermi!" ], "ds247": [ - "Hey, stop slobbering on me!" + "Ehi, smettila di sbavare su di me!" ], "ds248": [ - "He's recharging!" + "Si sta ricaricando!" ], "ds249": [ - "Ooh, we got him good that time!" + "Ooh, l'abbiamo preso bene quella volta!" ], "ds250": [ - "Yeah, now he's hurtin'!" + "Sì, ora sta male!" ], "ds251": [ - "Good shot, Jak!" + "Bel tiro, Jak!" ], "ds252": [ - "Incoming!" + "In arrivo!" ], "ds253": [ - "Yeah, we got him!" + "Sì, ce l'abbiamo fatta!" ], "ds254": [ - "Jak, hide behind the pillars when he shoots!" + "Jak, nasconditi dietro i pilastri quando spara!" ], "ds255": [ - "He's got the Precursor Stone!" + "Ha la Pietra Precursore!" ], "ds256": [ - "Kick the bomb right at him, Jak!" + "Lanciagli la bomba, Jak!" ], "ds257": [ - "That one hit him!" + "Quello lo ha colpito!" ], "ds258": [ - "Look out!" + "Attenzione!" ], "ds259": [ - "Jump the gap!" + "Salta il divario!" ], "ds260": [ - "Yeah, you hit him!" + "Sì, l'hai colpito!" ], "ds261": [ - "As if there wasn't enough of Krew already." + "Come se non ce ne fosse già abbastanza di Krew." ], "ds262": [ - "Shoot 'em all, Jak! We'll sort 'em out later..." + "Spara a tutti, Jak! Li sistemeremo più tardi..." ], "ds263": [ - "There's the real Krew! Shoot him!" + "C'è il vero Krew! Sparagli!" ], "ds264": [ - "You got him!" + "L'hai preso!" ], "ds265": [ - "Watch your back, Jak!" + "Guardati le spalle, Jak!" ], "ds266": [ - "They're comin' again!" + "Stanno arrivando di nuovo!" ], "ds267": [ - "Now you've got us mad." + "Adesso ci hai fatto incazzare." ], "ds268": [ - "Good shot, Jak! The big man is hurtin' now." + "Bel tiro, Jak! Il grand'uomo sta soffrendo adesso." ], "ds269": [ - "And the challenger is down for the count!" + "E lo sfidante è a terra!" ], "ds270": [ - "Keep movin', baby! He's gonna shoot!" + "Continua a muoverti, tesoro! Sparerà!" ], "ds271": [ - "Wooh, here come some Metal Heads!" + "Evviva, ecco che arrivano i Metallari!" ], "ds272": [ - "Protect the kid!" + "Proteggi il bambino!" ], "ds273": [ - "Kill all the Metal Heads!" + "Uccidi tutti i Metal Head!" ], "ds274": [ - "More Metal Heads!" + "Altri Metal Head!" ], "ds275": [ - "Shoot Kor's legs out, Jak!" + "Spara alle gambe di Kor, Jak!" ], "ds276": [ - "He's down, Jak! Hit him in the head!" + "È a terra, Jak! Colpiscilo in testa!" ], "ds277": [ - "Boot to the head, boot to the head!" + "Stivale alla testa, stivale alla testa!" ], "ds278": [ - "I think we should hide somewhere!" + "Penso che dovremmo nasconderci da qualche parte!" ], "ds279": [ - "Take cover before he blows!" + "Mettiti al riparo prima che esploda!" ], "ds280": [ - "Yeah, you got him good that time!" + "Sì, quella volta l'hai preso bene!" ], "ds281": [ - "Oh, man, now he's angry!" + "Oh cavolo, adesso è arrabbiato!" ], "ds282": [ - "Get him, Jak!" + "Prendilo, Jak!" ], "ds283": [ - "He's gonna shoot!" + "Sparerà!" ], "ds284": [ - "Nice hit, partner!" + "Bel colpo, socio!" ], "ds285": [ - "That had to hurt him." + "Ciò doveva fargli male." ], "ds286": [ - "You messed with the wrong heroes, buddy!" + "Hai combinato guai con gli eroi sbagliati, amico!" ], "ds287": [ - "Shoot him again, Jak!" + "Sparagli ancora, Jak!" ], "ds288": [ - "Jak, we're taking a beating!" + "Jak, stiamo prendendo una batosta!" ], "ds289": [ - "Stay away from the Dark Eco!" + "Stai lontano dall'Eco Oscuro!" ], "ds302": [ - "We've almost got him, Jak!" + "L'abbiamo quasi preso, Jak!" ], "ds303": [ - "That's it! You did it!" + "Questo è tutto! Ce l'hai fatta!" ], "ds305": [ - "Shoot the switch to change the coveyor belt's", - "direction!" + "Spara all'interruttore per cambiare il nastro trasportatore", + "direzione!" ], "ds306": [ - "You gotta shoot the switch, Jak!" + "Devi azionare l'interruttore, Jak!" ], "ds307": [ - "Find the switch to change the conveyor's direction!" + "Trova l'interruttore per cambiare la direzione del trasportatore!" ], "ds321": [ - "Take out the turrets!" + "Elimina le torrette!" ], "ds322": [ - "Hit the turrets, Jak!" + "Colpisci le torrette, Jak!" ], "ds323": [ - "Doin' some damage!" + "Stai facendo qualche danno!" ], "ds324": [ - "Get in the Titan Suit!" + "Indossa la tuta da Titano!" ], "ds325": [ - "Shoot that ship!" + "Spara a quella nave!" ], "ds326": [ - "Yeah, that ship's feelin' it now!" + "Sì, quella nave lo sente adesso!" ], "ds327": [ - "Ooh, direct hits." + "Ooh, colpi diretti." ], "ds328": [ - "I think you hurt it that time!" + "Penso che ti sia fatto male quella volta!" ], "ds329": [ - "The ship's goin' down! You did it, Jak!" + "La nave sta affondando! Ce l'hai fatta, Jak!" ], "ds353": [ - "That must be the missile Torn wants us to blow up!" + "Dev'essere il missile che Torn vuole che facciamo esplodere!" ], "ds354": [ - "Break those tubes in the center, Jak!" + "Rompi quei tubi al centro, Jak!" ], "ds372": [ - "Gotta ride the JET-Board on this one, Jak!" + "Devo guidare il JET-Board su questo, Jak!" ], "ds375": [ - "Look out for the ray!" + "Attenti al raggio!" ], "ds378": [ - "We gotta break all the support cables!" + "Dobbiamo rompere tutti i cavi di supporto!" ], "ds379": [ - "Grind on the support bases to break the cables." + "Levigare le basi di supporto per rompere i cavi." ], "ds394": [ - "Spider! Spider! Huff... huff... I hate spiders!" + "Ragno! Ragno! Huff... huff... odio i ragni!" ], "ds395": [ - "Gotta run, gotta run!" + "Devo correre, devo correre!" ], "ds398": [ - "The first beam!" + "Il primo raggio!" ], "ds399": [ - "The second beam! The door's opening!" + "La seconda trave! La porta si sta aprendo!" ], "ds404": [ - "There's Sig!" + "C'è Sig!" ], "ds405": [ - "Get the blocks to go into the slots, Jak!" + "Fai entrare i blocchi nelle fessure, Jak!" ], "ds406": [ - "Shoot or kick the blocks!" + "Spara o calcia i blocchi!" ], "ds407": [ - "You have to get the blocks in the slots faster!" + "Devi inserire i blocchi negli slot più velocemente!" ], "ds408": [ - "Run, Jak!" + "Corri, come!" ], "ds409": [ - "Keep moving!" + "Continua a muoverti!" ], "ds410": [ - "We gotta stay ahead of that thing!" + "Dobbiamo stare al passo con quella cosa!" ], "ds439": [ - "Shoot all the Metal Head eggs, Jak!" + "Spara a tutte le uova di Metal Head, Jak!" ], "ds440": [ - "We didn't get all those nasty eggs!" + "Non abbiamo preso tutte quelle uova disgustose!" ], "ds441": [ - "We missed some Metal Head eggs!" + "Ci siamo persi qualche uovo Metal Head!" ], "ds461": [ - "We gotta jump onto the crate dangling from the crane!" + "Dobbiamo saltare sulla cassa che pende dalla gru!" ], "ds462": [ - "Use your hoverboard on this path!" + "Usa il tuo hoverboard su questo percorso!" ], "ds463": [ - "You can grind to cross those pipes using your", + "Puoi macinare per attraversare quei tubi usando il tuo", "hoverboard!" ], "ds464": [ - "Ride the half-pipe to the end!" + "Percorri l'half-pipe fino alla fine!" ], "ds466": [ - "You gotta drop a bomb into each well, Jak!" + "Devi sganciare una bomba in ogni pozzo, Jak!" ], "ds467": [ - "Use the ramp to get high enough to drop the bomb in!" + "Usa la rampa per arrivare abbastanza in alto da far cadere la bomba!" ], "ds468": [ - "Gotta jump higher!" + "Devo saltare più in alto!" ], "ds469": [ - "Only a minute before we're toast, Jak!" + "Solo un minuto prima del brindisi, Jak!" ], "ds470": [ - "30 seconds left, then we go BOOM!" + "Mancano 30 secondi, poi facciamo BOOM!" ], "ds471": [ - "Ten seconds left, Jak!" + "Mancano dieci secondi, Jak!" ], "ds472": [ - "That's one well down, five to go!" + "Ne manca uno, ne mancano cinque!" ], "ds473": [ - "Two wells are history, four left!" + "Due pozzi sono storia, ne restano quattro!" ], "ds474": [ - "Three wells cut, only three to go!" + "Tre pozzi tagliati, ne restano solo tre!" ], "ds475": [ - "That's the fourth well, two bad boys left!" + "Questo è il quarto, beh, sono rimasti due ragazzacci!" ], "ds476": [ - "You got the fifth well, only one to go!" + "Hai preso bene il quinto, ne manca solo uno!" ], "ds477": [ - "You got 'em all, Jak!" + "Li hai presi tutti, Jak!" ], "ds478": [ - "The last well is up where we rescued Vin!" + "L'ultimo pozzo è dove abbiamo salvato Vin!" ], "ds479": [ - "Now he's vulnerable!" + "Ora è vulnerabile!" ], "ds480": [ - "Take him out!" + "Portalo fuori!" ], "ds481": [ - "Get him while he's vulnerable!" + "Prendilo mentre è vulnerabile!" ], "ds482": [ - "Here he comes..." + "Eccolo che arriva..." ], "ds483": [ - "How's it feel to have your pants down, Baron?" + "Come ci si sente ad avere i pantaloni abbassati, Barone?" ], "ds484": [ - "Shoot him, shoot him!" + "Sparategli, sparategli!" ], "ds485": [ - "Look out!" + "Attenzione!" ], "ds487": [ - "Easy, Jak, we gotta get this guy to safety!" + "Facile, Jak, dobbiamo portare questo tizio in salvo!" ], "ds488": [ - "We're takin' a lotta damage, buddy!" + "Stiamo subendo un sacco di danni, amico!" ], "ds489": [ - "We're gettin' our butts kicked!" + "Ci stanno prendendo a calci nel sedere!" ], "ds490": [ - "Maybe I should drive..." + "Forse dovrei guidare..." ], "ds491": [ - "Let's go, wondergoon,", - "we'll take you to a safe place in the city!" + "Andiamo, Wondergoon,", + "ti porteremo in un posto sicuro in città!" ], "ds492": [ - "Okay, ride's over, out you go!" + "Ok, il giro è finito, vai fuori!" ], "ds493": [ - "All aboard the Underground railroad!", - "Next stop: Your new safehouse!" + "Tutti a bordo della Metropolitana!", + "Prossima fermata: il tuo nuovo rifugio!" ], "ds494": [ - "I believe this is your stop!" + "Credo che questa sia la tua fermata!" ], "ds495": [ - "Daxter's Freedom Fighter Taxi Service!", - "Hurry up, buddy, we ain't got all day." + "Il servizio taxi dei combattenti per la libertà di Daxter!", + "Sbrigati, amico, non abbiamo tutto il giorno." ], "ds496": [ - "Home free, baby!", - "Don't forget to tell Torn how well we did!" + "Casa libera, tesoro!", + "Non dimenticare di dire a Torn quanto ce la siamo cavata bene!" ], "ds497": [ - "You looking for a lift, fighter boy?" + "Cerchi un passaggio, ragazzo combattente?" ], "ds498": [ - "Okay, this is where you get off. So... get off." + "Ok, è qui che scendi. Quindi... scendi." ], "ds499": [ - "We did it, Jak!", - "We got all the fighters to the new safehouses!" + "Ce l'abbiamo fatta, Jak!", + "Abbiamo portato tutti i combattenti nei nuovi rifugi!" ], "ds500": [ - "Statues are becoming an endangered species around here." + "Le statue stanno diventando una specie in via di estinzione da queste parti." ], "ds501": [ - "I got us a talkbox.", - "The city people use these things to communicate", - "with each other." + "Ho preso un talkbox.", + "La gente della città usa queste cose per comunicare", + "insieme." ], "ds502": [ - "Let's go see Onin and her crazy monkey bird." + "Andiamo a vedere Onin e la sua scimmia pazza." ], "ds503": [ - "I think we need to go back to the city, Jak." + "Penso che dovremmo tornare in città, Jak." ], "dsek001": [ - "Kid! Stay with him, Jak!" + "Ragazzo! Resta con lui, Jak!" ], "dsek002": [ - "Catch up to them, Jak!" + "Raggiungili, Jak!" ], "dsek003": [ - "Where'd they go?!" + "Dove sono andati?!" ], "dsek004": [ - "There they go again!" + "Eccoli di nuovo!" ], "dsek005": [ - "Uh oh, here comes trouble!" + "Uh oh, ecco che arrivano i guai!" ], "dsek006": [ - "More guards!?" + "Più guardie!?" ], "dsek007": [ - "Kid, please! You're killin' me!" + "Ragazzo, per favore! Mi stai uccidendo!" ], "dsek008": [ - "Here, poochie, poochie..." + "Ecco, cagnolino, cagnolino..." ], "dsek009": [ - "There goes that crazy crocadog again...!" + "Ecco di nuovo quel pazzo crocadog...!" ], "dsek010": [ - "Chase after the Kid!" + "Insegui il bambino!" ], "dsek011": [ - "Keep up with the Kid!" + "Stai al passo con il bambino!" ], "dsek012": [ - "Crocadog!" + "Coccodrillo!" ], "dsek013": [ - "Phew, finally... let's get these two to Kor!" + "Uff, finalmente... portiamo questi due a Kor!" ], "ero001": [ - "Out of my way!" + "Levatevi dai piedi!" ], "ero002": [ - "I own this track!" + "Possiedo questa traccia!" ], "ero003": [ - "Give it up, eco freak!" + "Lascia perdere, eco-maniaco!" ], "ero004": [ - "Payback time." + "Tempo di restituzione." ], "ero005": [ - "Let's make this interesting!" + "Rendiamolo interessante!" ], "ero006": [ - "Eat wall!" + "Mangia muro!" ], "ero007": [ - "Time to die!" + "Tempo di morire!" ], "ero008": [ - "Move over!" + "Spostati!" ], "ero009": [ - "Catch me now, loser!" + "Prendimi adesso, perdente!" ], "ero010": [ - "I'm too fast for you!" + "Sono troppo veloce per te!" ], "ero011": [ - "Now you're racing with the big boys!" + "Ora stai gareggiando con i grandi!" ], "ero012": [ - "Here's one for the Baron." + "Eccone uno per il Barone." ], "ero013": [ - "Take this!" + "Prendi questo!" ], "ero014": [ - "You're making this too easy!" + "Lo stai rendendo troppo facile!" ], "ero015": [ - "Hahaha, bye bye!" + "Ahahah, ciao ciao!" ], "ero016": [ - "You want some?" + "Ne vuoi un po?" ], "ero017": [ - "Now you see why I never lose." + "Ora capisci perché non perdo mai." ], "ero018": [ - "The crowd loves me!" + "La folla mi ama!" ], "ero019": [ - "Ahh!" + "Ah!" ], "ero020": [ - "Here's some pain!" + "Ecco un po' di dolore!" ], "ero021": [ - "Try to erase these!" + "Prova a cancellarli!" ], "ero022": [ - "How's your reflexes?" + "Come sono i tuoi riflessi?" ], "ero023": [ - "Too much for you?!" + "Troppo per te?!" ], "ero024": [ - "Had enough?" + "Aveva abbastanza?" ], "ero025": [ - "Avoid this, smart-ass!" + "Evitalo, saputello!" ], "ero026": [ - "Say goodnight, eco freak!" + "Di' buonanotte, maniaco dell'ambiente!" ], "ero027": [ - "You can't beat me!" + "Non puoi battermi!" ], "ero028": [ - "I'd die before I let you win!" + "Morirei prima di lasciarti vincere!" ], "ero029": [ - "This will be your last lap." + "Questo sarà il tuo ultimo giro." ], "ero030": [ - "Crash and burn!" + "Schiantati e brucia!" ], "ero031": [ - "To the end!" + "All'estremità!" ], "ero032": [ - "Last lap to live!" + "Ultimo giro da vivere!" ], "ero033": [ - "Now we end this!" + "Adesso mettiamo fine a tutto questo!" ], "ero034": [ - "You won't see the finish line!" + "Non vedrai il traguardo!" ], "ero035": [ - "DIE!" + "MORIRE!" ], "ero036": [ - "Die!" + "Morire!" ], "ero037": [ - "Hahahaha!" + "Ahahahah!" ], "ero038": [ - "YEAH!" + "SÌ!" ], "ero039": [ - "HA!" + "AH!" ], "ero040": [ "NO!" @@ -3107,185 +3107,185 @@ "NOOOOO!" ], "ero042": [ - "AHHHHHH!" + "AHHHHH!" ], "ero043": [ - "Here we go." + "Eccoci qui." ], "ero044": [ - "See you later." + "Arrivederci." ], "ero045": [ - "Fool! You cannot defeat me." + "Scemo! Non puoi sconfiggermi." ], "ero046": [ - "You missed a ring." + "Ti sei perso uno squillo." ], "ero047": [ - "This race is mine!" + "Questa gara è mia!" ], "ero048": [ - "You can never be as fast as me!" + "Non potrai mai essere veloce come me!" ], "ero049": [ - "Keira wants a real man." + "Keira vuole un vero uomo." ], "ero050": [ - "Bad luck, old chap." + "Che sfortuna, vecchio mio." ], "ero051": [ - "Nice try." + "Bel tentativo." ], "ero052": [ - "Move over!" + "Spostati!" ], "ero053": [ - "Out of my way!" + "Levatevi dai piedi!" ], "ero054": [ - "Coming through!" + "Attraversando!" ], "ero055": [ - "Bye bye!" + "Ciao ciao!" ], "ero056": [ - "Here I come!" + "Eccomi!" ], "ero057": [ - "Get used to watching my back!" + "Abituati a guardarmi le spalle!" ], "ero058": [ - "This is my city, eco freak." + "Questa è la mia città, maniaco dell'ambiente." ], "ero059": [ - "Looking sloppy, Jak." + "Sembri sciatto, Jak." ], "ero060": [ - "Give it up!" + "Lasciar perdere!" ], "ero061": [ - "Not this time." + "Non questa volta." ], "ero062": [ - "Getting a bit nervous?" + "Sei un po' nervoso?" ], "ero063": [ - "Come back here!" + "Torna qui!" ], "ero064": [ - "Move over, slowpoke!" + "Fai largo, lento!" ], "ero065": [ - "This is where I beat you." + "È qui che ti ho battuto." ], "ero066": [ - "Final stretch!" + "Allungamento finale!" ], "ero067": [ - "It's over!" + "È finita!" ], "ero068": [ - "I own this city." + "Possiedo questa città." ], "ero069": [ - "What? Where'd you come from?" + "Che cosa? Da dove vieni?" ], "ero070": [ - "You're just lucky." + "Sei solo fortunato." ], "ero071": [ - "You can't handle the speed!" + "Non puoi gestire la velocità!" ], "ero072": [ - "Die, freak." + "Muori, mostro." ], "ero073": [ - "No!" + "NO!" ], "ero074": [ - "STOP!" + "FERMARE!" ], "ero075": [ - "Hahahaha!" + "Ahahahah!" ], "ero076": [ - "HAHA!" + "AHAHA!" ], "ero077": [ "Ahhh!" ], "ero078": [ - "Ough!" + "Bene!" ], "ero079": [ - "Oof!" + "Uffa!" ], "ero080": [ - "Beat it, freak!" + "Battilo, mostro!" ], "ero081": [ - "Care to get back in the chair?" + "Ti va di tornare sulla sedia?" ], "ero082": [ - "This race was too easy." + "Questa gara è stata troppo facile." ], "ero083": [ - "It was easier than I thought to beat you." + "È stato più facile di quanto pensassi batterti." ], "ero084": [ - "Not even close, Keira's betting on the wrong man." + "Neanche lontanamente, Keira sta scommettendo sull'uomo sbagliato." ], "ero085": [ - "Loser! You disgust me!" + "Perdente! Mi disgusti!" ], "ero086": [ - "You see Jak, I win, and I get what I want.", - "Someday I will be Baron, then the city will really pay!" + "Vedi Jak, vinco e ottengo quello che voglio.", + "Un giorno sarò Barone, allora la città pagherà davvero!" ], "ero087": [ - "I should have known you'd be no match." + "Avrei dovuto sapere che non saresti stato all'altezza." ], "ero088": [ - "I win, Keira's going to love me!" + "Se vinco, Keira mi amerà!" ], "ero089": [ - "Maybe you should go back to wherever you came from." + "Forse dovresti tornare da dove sei venuto." ], "ero090": [ - "I'll get a victory kiss from Keira later." + "Riceverò un bacio di vittoria da Keira più tardi." ], "ero091": [ - "Again I prove my superiority." + "Ancora una volta dimostro la mia superiorità." ], "ero092": [ - "You see? You are no match for me." + "Vedi? Non sei all'altezza di me." ], "ero093": [ - "Too bad, I win!" + "Peccato, ho vinto!" ], "ero094": [ - "Hahahaha, pathetic insect, I win!" + "Hahahaha, patetico insetto, ho vinto!" ], "ero095": [ - "You can never defeat me!" + "Non potrai mai sconfiggermi!" ], "ero096": [ "Ahhh!...ahh." ], "ero097": [ - "Ugh!" + "Uffa!" ], "ero098": [ - "Ughhh!" + "Uhhh!" ], "ero099": [ - "Dahh!" + "SÌ!" ], "ero100": [ - "Yaughh!" + "Già!" ], "ero101": [ - "AUGHH!" + "AUGH!" ], "ero102": [ "OW!" @@ -3294,2160 +3294,2160 @@ "DAHHH!" ], "ero104": [ - "DAUGHH!" + "FIGLIA!" ], "erol001": [ - "I'm looking for you, eco freak,", - "and when I find you, you'll wish you died in prison." + "Ti sto cercando, maniaco dell'ambiente,", + "e quando ti troverò desidererai di essere morto in prigione." ], "erol002": [ - "This is Erol. Looks like you're running out of friends.", - "We've arrested them all and thrown them into your", - "favorite prison. By the way, that blonde girl Tess", - "screamed so delightfully when she was arrested.", - "I can't wait for her turn in the chair.", - "Hahahahaha...." + "Questo è Erol. Sembra che tu sia a corto di amici.", + "Li abbiamo arrestati tutti e li abbiamo gettati nella tua", + "prigione preferita. A proposito, quella bionda, Tess", + "ha urlato così deliziosamente quando è stata arrestata.", + "Non vedo l'ora che arrivi il suo turno sulla sedia.", + "Ha ha ha ha ha...." ], "erol003": [ - "This is Erol. Just remember, the only reason I'm letting you", - "walk is so I can face you in the championship race!" + "Questo è Erol. Ricorda solo che è l'unica ragione per cui te lo permetto", + "camminare è così posso affrontarti nella corsa del campionato!" ], "hal001": [ - "Quiet! Here comes pretty boy." + "Tranquillo! Ecco che arriva il bel ragazzo." ], "hal002": [ - "'Bout time you showed up. Okay, let's do this." + "Era ora che ti facessi vedere. Ok, facciamolo." ], "hal003": [ - "Krew said you'll protect us all the way to the statue." + "Krew ha detto che ci proteggerai fino alla statua." ], "hal004": [ - "We go down!" + "Scendiamo!" ], "hal006": [ - "This way!" + "Da questa parte!" ], "hal007": [ - "AHH! It's a Metal Head! Shoot it, shoot it!" + "AHH! È un Metal Head! Spara, spara!" ], "hal008": [ - "Stay with us!" + "Resta con noi!" ], "hal009": [ - "Man, Krew's gonna be pissed if you mess this up." + "Cavolo, Krew si arrabbierà se sbagli tutto." ], "hal010": [ - "Don't leave us to die!" + "Non lasciarci morire!" ], "hal011": [ - "You ditch us and Krew's gonna mess you up!" + "Se ci abbandoni, Krew ti rovinerà!" ], "hal012": [ - "We need to stay together." + "Dobbiamo stare insieme." ], "hal013": [ - "I thought this guy was supposed to be protecting us!" + "Pensavo che questo ragazzo avrebbe dovuto proteggerci!" ], "hal014": [ - "That's it! We're calling the mission off,", - "we don't go until you're serious." + "Questo è tutto! Stiamo annullando la missione,", + "non andiamo finché non sei serio." ], "hal015": [ - "I'm not getting killed because of this loser,", - "this mission is over." + "Non verrò ucciso a causa di questo perdente,", + "questa missione è finita." ], "hal019": [ - "Let's go back before we all get killed." + "Torniamo indietro prima che veniamo uccisi tutti." ], "hal020": [ - "Ugh, this place stinks." + "Uffa, questo posto puzza." ], "hal021": [ - "I got a bad feeling about this place." + "Ho una brutta sensazione riguardo questo posto." ], "hal022": [ - "Uh oh, I think I wet myself." + "Oh oh, credo di essermelo fatto addosso." ], "hal023": [ - "No! Please!" + "NO! Per favore!" ], "hal024": [ - "I wanna go home." + "Voglio andare a casa." ], "hal025": [ - "Uhh, I'm hearing things." + "Uhh, sento delle cose." ], "hal026": [ - "Let's go back." + "Torniamo indietro." ], "hal027": [ - "Move your butts, or I'll move 'em for ya!" + "Muovete le chiappe, o le muovo io per voi!" ], "hal028": [ - "This job beats being a garbage man." + "Questo lavoro è meglio di essere uno spazzino." ], "hal029": [ - "Ain't the smell of sulphur grand?" + "L'odore dello zolfo non è grandioso?" ], "hal030": [ - "Cover your ears!" + "Copriti le orecchie!" ], "hal031": [ - "I love this job." + "Adoro questo lavoro." ], "hal032": [ - "Great, now we're trapped in this slime pit!" + "Fantastico, ora siamo intrappolati in questa fossa di melma!" ], "hal033": [ - "Shoot, baby, shoot!" + "Spara, tesoro, spara!" ], "hal034": [ - "Ahh! The ceiling's crawling!" + "Ah! Il soffitto striscia!" ], "hal035": [ - "I can't get away!" + "Non posso scappare!" ], "hal036": [ - "There's one coming right at me!" + "Ce n'è uno che viene dritto verso di me!" ], "hal037": [ - "It sees me!" + "Mi vede!" ], "hal038": [ - "Ahh! Stay away!" + "Ah! Stai lontano!" ], "hal039": [ - "It's hitting me!" + "Mi sta colpendo!" ], "hal040": [ - "Gahh, I'm gonna die here!" + "Gahh, morirò qui!" ], "hal041": [ - "I'm getting zapped!" + "Mi sto fulminando!" ], "hal042": [ - "This'll be the end of me!" + "Questa sarà la mia fine!" ], "hal043": [ - "Help me! I've got eight kids to feed!" + "Aiutami! Ho otto bambini da sfamare!" ], "hal044": [ - "Nice work, those were some nasty Metal Heads." + "Bel lavoro, quelli erano dei Metal Head schifosi." ], "hal045": [ - "There you are, why don't you make yourself useful?" + "Ecco, perché non ti rendi utile?" ], "hal046": [ - "Keep moving!" + "Continua a muoverti!" ], "hal047": [ - "On we go, we're not getting any younger." + "Andiamo avanti, non stiamo diventando più giovani." ], "hal048": [ - "Ahh! They're crawling down the walls!" + "Ah! Stanno strisciando lungo i muri!" ], "hal049": [ - "Way to go, this is where I come in." + "Ben fatto, è qui che entro in gioco." ], "hal050": [ - "You mean cover your ass! Fire in the hole!" + "Vuoi dire coprirti il ​​culo! Fuoco nel buco!" ], "hal051": [ - "You better keep your head down, sugar." + "Faresti meglio a tenere la testa bassa, tesoro." ], "hal052": [ - "Your bad breath, let's move." + "Il tuo alito cattivo, muoviamoci." ], "hal053": [ - "That straightened your hair, huh?", - "Hehe, next time you'll listen to me. Okay, let's move." + "Ti ha stirato i capelli, eh?", + "Hehe, la prossima volta mi ascolterai. Ok, muoviamoci." ], "hal054": [ - "Oof, that had to hurt.", - "I told you to keep back, but no one ever listens to Jinx." + "Oof, doveva far male.", + "Ti avevo detto di stare indietro, ma nessuno ascolta mai Jinx." ], "hal055": [ - "More of those monsters!" + "Altri di quei mostri!" ], "hal056": [ - "So what, we got a dream team here. Do your stuff, Jak!" + "E allora, abbiamo una squadra da sogno qui. Fai le tue cose, Jak!" ], "hal057": [ - "Jak! Get your butt up here and do your thing." + "Jak! Porta il tuo sedere quassù e fai le tue cose." ], "hal058": [ - "Take 'em out, blue boy." + "Portali fuori, ragazzo blu." ], "hal059": [ - "You're pretty handy with that iron, blondie." + "Sei piuttosto brava con quel ferro, biondina." ], "hal060": [ - "Shut up, Mog." + "Stai zitto, Mog." ], "hal061": [ - "Here they come again!" + "Eccoli di nuovo!" ], "hal062": [ - "Get up here and earn your keep!" + "Sali qui e guadagnati il ​​tuo mantenimento!" ], "hal063": [ - "Krew was right about you. You got the magic, man." + "Krew aveva ragione su di te. Hai la magia, amico." ], "hal064": [ - "Nice fighting, man, I'm beginning to like you." + "Bel litigio, amico, cominci a piacermi." ], "hal065": [ - "Okay... that doesn't look good. Jak, you're up!" + "Ok... non sembra una bella cosa. Jak, sei sveglio!" ], "hal066": [ - "Wow! Beams of death!", - "I'm staying right here 'til you do something about that." + "Oh! Raggi di morte!", + "Resto qui finché non fai qualcosa a riguardo." ], "hal067": [ - "Uhhh, Jak. I think you're the man for this job." + "Uhh, Jak. Penso che tu sia l'uomo giusto per questo lavoro." ], "hal068": [ - "Jump the beams, Jak." + "Salta le travi, Jak." ], "hal069": [ - "Nice moves." + "Belle mosse." ], "hal070": [ - "Yeah... you wish, tubby." + "Sì... lo desideri, Tubby." ], "hal071": [ - "We're staying put 'til you take out those Metal Heads." + "Resteremo qui finché non li avrete eliminati quei Metallari." ], "hal072": [ - "Sweet as a ballerina, hehehehe..." + "Dolce come una ballerina, ehehehe..." ], "hal073": [ - "Knock 'em silly, Jak!" + "Lasciali scemi, Jak!" ], "hal074": [ - "This one's gonna be loud!" + "Questo sarà rumoroso!" ], "hal075": [ - "This is too easy." + "Questo è troppo facile." ], "hal080": [ - "We ain't moving, 'til you kill 'em all!" + "Non ci muoveremo finché non li ucciderai tutti!" ], "hal081": [ - "OK, let's get out of here before more come back." + "OK, usciamo di qui prima che ne ritornino altri." ], "hal082": [ - "You're earning your dough today. Let's finish this!" + "Ti stai guadagnando i soldi oggi. Finiamola!" ], "hal083": [ - "I'm impressed, Jak. I'll put in a good word with the boss." + "Sono impressionato, Jak. Metterò una buona parola con il capo." ], "hal084": [ - "Yeah, do it, Jinx." + "Sì, fallo, Jinx." ], "hal085": [ - "Man, Jinx, what'd you put in those boomsticks?" + "Amico, Jinx, cosa hai messo in quei bastoncini?" ], "hal086": [ - "Look at him go." + "Guardalo andare." ], "hal087": [ - "I could jump like that." + "Potrei saltare così." ], "hal088": [ - "Get away from me, you crazy monster!" + "Vattene via da me, mostro pazzo!" ], "hal090": [ - "This is where I come in, cover your ears." + "È qui che entro io, tappati le orecchie." ], "hal091": [ - "Fire in the hole!" + "Fuoco nel buco!" ], "hal092": [ - "And on we go." + "E andiamo avanti." ], "hal093": [ - "Please, allow me." + "Per favore, permettetemi." ], "hal094": [ - "One unclogged sewer, comin' up." + "Una fogna non intasata, in arrivo." ], "hal095": [ - "This is my boomshtick!" + "Questo è il mio boom!" ], "hal096": [ - "Boom, baby!" + "Bum, tesoro!" ], "hal097": [ - "We're clear, let's move." + "Abbiamo chiarito la questione, muoviamoci." ], "hal101": [ - "Ahh! That's gonna leave a mark." + "Ah! Lascerà un segno." ], "hal102": [ - "Die! A little help would be good!" + "Morire! Un piccolo aiuto non farebbe male!" ], "hal103": [ - "Watch it, pretty boy, or I'll rearrange your face." + "Attento, bel ragazzo, o ti risistemano la faccia." ], "hal104": [ - "You got an itchy trigger finger." + "Hai un prurito al dito sul grilletto." ], "hal107": [ - "Piece of cake." + "Pezzo di torta." ], "hal108": [ - "Get over here, Jak!" + "Vieni qui, Jak!" ], "hal109": [ - "Stay close, pretty boy!" + "Stai vicino, bel ragazzo!" ], "hal111": [ - "Keep with us, tough guy!" + "Resta con noi, duro!" ], "hal112": [ - "You're in the way, Jak, move!" + "Sei d'intralcio, Jak, muoviti!" ], "hal113": [ - "I wouldn't stand there if I were you!" + "Se fossi in te non starei lì!" ], "hal114": [ - "This is gonna be loud." + "Sarà rumoroso." ], "hal115": [ - "Oh!" + "OH!" ], "hal116": [ - "Oh!" + "OH!" ], "hal117": [ - "Hey!" + "EHI!" ], "hal118": [ - "It's a trap!" + "È una trappola!" ], "hal119": [ - "Yeah, why did we sign up for this?" + "Sì, perché ci siamo iscritti a questo?" ], "hal120": [ - "I got 30 keys of high explosives strapped to my back...", - "Great..." + "Ho 30 chiavi di esplosivo ad alto potenziale legate alla schiena...", + "Grande..." ], "hal121": [ - "Just shut your whiny traps and keep moving." + "Chiudi le tue trappole lamentose e continua a muoverti." ], "hal122": [ - "Uh, do we have to?" + "Uh, dobbiamo?" ], "hal123": [ - "Uhh, did you hear that?" + "Uhh, hai sentito?" ], "hal124": [ - "We are so dead, man." + "Siamo proprio morti, amico." ], "hal125": [ - "Shut up! I'll go ahead and check it out..." + "Stai zitto! Vado avanti e controllo..." ], "hal126": [ - "Man, that thing's ugly." + "Cavolo, quella cosa è brutta." ], "hal127": [ - "Get him, man, before he gets us." + "Prendilo, amico, prima che sia lui a prendere noi." ], "hal128": [ - "They're coming up from behind, too!" + "Anche loro arrivano da dietro!" ], "hal129": [ - "Jak's my hero." + "Come sta il mio eroe?" ], "hal130": [ - "Sounds like I got gas." + "Sembra che abbia fatto benzina." ], "hal131": [ - "I hate Krew." + "Odio Krew." ], "hal132": [ - "I'm sure not going back that way!" + "Sono sicuro che non tornerò così!" ], "hal133": [ - "It's coming for me!" + "Sta arrivando per me!" ], "hal134": [ - "I think it wants me!" + "Penso che mi voglia!" ], "hal135": [ - "Help me, Jak!" + "Aiutami, Jak!" ], "hal136": [ - "I'm gonna die!" + "Sto per morire!" ], "hal137": [ - "It got me!" + "Mi ha preso!" ], "hal138": [ - "Jak! Save me!" + "Come! Salvami!" ], "hal139": [ - "Ughh! It got me!" + "Uffa! Mi ha preso!" ], "hal140": [ - "Oughh! That beam smarts." + "Uh! Quel raggio è intelligente." ], "hal141": [ - "I've been shot!" + "Mi hanno sparato!" ], "hal142": [ - "I'm hit!" + "Sono stato colpito!" ], "hal143": [ - "Ughh!" + "Uffa!" ], "hal144": [ - "Ughh! Help me!" + "Oddio! Aiutami!" ], "hal145": [ - "Hey man, watch it!" + "Ehi amico, guardalo!" ], "hal146": [ - "Ohh, hit me again and I'll pound you!" + "Ohh, colpiscimi ancora e ti colpisco!" ], "hal147": [ - "Nobody's my friend..." + "Nessuno è mio amico..." ], "hal148": [ - "Oof!" + "Uffa!" ], "hal149": [ "Uh!" ], "hal150": [ - "Ahh!" + "Ah!" ], "hal151": [ - "He's got me!" + "Mi ha preso!" ], "hal152": [ - "Gahh!! Not again!" + "Ah!! Non di nuovo!" ], "hal153": [ - "I'm dying!" + "Sto morendo!" ], "hal154": [ - "Any more like that, then I'm history." + "Ancora una volta così, allora sarò storia passata." ], "hal155": [ - "I'm getting shot!" + "Mi spareranno!" ], "hal156": [ - "Sure! Why don't you kill me too?" + "Sicuro! Perché non uccidi anche me?" ], "hal157": [ - "Check your targets, wimp boy!" + "Controlla i tuoi obiettivi, fifone!" ], "hal158": [ - "Shoot the shine-heads, not me!" + "Spara alle teste lucide, non a me!" ], "hal159": [ - "Ahh!" + "Ah!" ], "hal161": [ - "Ugh!" + "Uffa!" ], "hal162": [ - "Oh!" + "OH!" ], "hal163": [ - "Oh!" + "OH!" ], "hal164": [ "Ah!" ], "hal165": [ - "Look out!" + "Attenzione!" ], "hal166": [ - "We're not doing this with a rookie, I'm calling this off!" + "Non lo faremo con un novellino, annullo tutto!" ], "hal167": [ - "That's it, we're done! Come back when you're serious." + "Questo è tutto, abbiamo finito! Torna quando fai sul serio." ], "hal168": [ - "I'm cornered!" + "Sono alle strette!" ], "hal169": [ - "It's gonna shoot me!" + "Mi sparerà!" ], "hal170": [ - "Jak! Do something!" + "Jak! Fare qualcosa!" ], "hal171": [ - "Ahh! It got me!" + "Ah! Mi ha preso!" ], "hal172": [ - "No no no! Help!" + "No no no! Aiuto!" ], "hal173": [ - "They're getting too close, Jak!" + "Si stanno avvicinando troppo, Jak!" ], "hal174": [ - "It's gonna get me!" + "Mi prenderà!" ], "hal175": [ - "I'm getting killed here!" + "Mi uccideranno qui!" ], "hal176": [ - "Jak! I'm about to be metal meat!" + "Jak! Sto per diventare carne di metallo!" ], "hal177": [ - "Aghh! That beam burns!" + "Aghh! Quel raggio brucia!" ], "hal178": [ - "It's shooting me!" + "Mi sta sparando!" ], "hal179": [ - "Watch out for the beam!" + "Attenzione al raggio!" ], "hal180": [ - "I'm shot!" + "Mi hanno sparato!" ], "hal181": [ - "I'm trapped!" + "Sono intrappolato!" ], "hal182": [ - "Get back... I'm gonna detonate this one remotely." + "Stai indietro... lo farò esplodere a distanza." ], "hal183": [ - "He-hah!" + "Ehi!" ], "hal184": [ - "Alright!" + "Bene!" ], "hal185": [ - "Let's go!" + "Andiamo!" ], "hal186": [ - "Move it!" + "Muoviti!" ], "hal187": [ - "That's a lot of Metal Heads." + "Ci sono un sacco di Metal Heads." ], "hal188": [ - "Oof!" + "Uffa!" ], "hal189": [ - "Daghh!" + "Dagh!" ], "hal190": [ - "Oughh..." + "Uh..." ], "hal191": [ - "Krew's dead for getting me into this!" + "Krew è morto per avermi coinvolto in questa cosa!" ], "jak001": [ - "Alright!" + "Bene!" ], "jak002": [ - "Yeah!" + "Sì!" ], "jak003": [ - "Wooo!" + "Whoo!" ], "jak004": [ - "Here we go!" + "Eccoci qui!" ], "jak005": [ - "Nice!" + "Carino!" ], "jak006": [ - "Rock 'n roll!" + "Rock n roll!" ], "jak007": [ - "Right on!" + "Giusto!" ], "jak008": [ - "Cool!" + "Freddo!" ], "jak009": [ - "Cool!" + "Freddo!" ], "jak010": [ - "Oh, yeah!" + "O si!" ], "jak011": [ - "Comin' through!" + "Arrivo!" ], "jak012": [ - "Look out!" + "Attenzione!" ], "jak013": [ - "Last lap!" + "Ultimo giro!" ], "jak014": [ - "Watch out!" + "Attento!" ], "jak015": [ - "Whoa!" + "Ehi!" ], "jak016": [ - "Whoa!" + "Ehi!" ], "jak017": [ - "Hold on, Dax!" + "Aspetta, Dax!" ], "jak018": [ - "Hang on, Dax!" + "Aspetta, Dax!" ], "jak020": [ - "Whoa... boy that was close." + "Whoa... ragazzo, c'era mancato poco." ], "jak021": [ - "No!" + "NO!" ], "jak022": [ - "Not this time." + "Non questa volta." ], "jak023": [ "Huargh!" ], "jak024": [ - "Lean, baby, lean!" + "Magra, tesoro, magra!" ], "jak025": [ - "Catch him on the inside!" + "Catturatelo dall'interno!" ], "jak026": [ - "This is MY show!" + "Questo è il MIO spettacolo!" ], "jak027": [ - "Haha, we got him!" + "Ahah, l'abbiamo preso!" ], "jak028": [ - "Watch out!" + "Attento!" ], "jak029": [ - "You're dead, Erol!" + "Sei morto, Erol!" ], "jak030": [ - "See ya!" + "Ci vediamo!" ], "jak031": [ - "Haha!" + "Ahah!" ], "jak032": [ - "Wooo!" + "Whoo!" ], "jak033": [ - "Last lap!" + "Ultimo giro!" ], "jak034": [ - "Later." + "Dopo." ], "jak035": [ - "We gotta catch up!" + "Dobbiamo recuperare il ritardo!" ], "jak036": [ - "There he is!" + "Eccolo!" ], "jak037": [ - "Come on, baby, show me what you got!" + "Avanti, tesoro, mostrami cosa sai fare!" ], "jak038": [ - "Here we go!" + "Eccoci qui!" ], "jak039": [ "Urgh!" ], "jak040": [ - "I'll take this." + "Prendo questo." ], "jak041": [ - "I need to borrow this." + "Ho bisogno di prendere in prestito questo." ], "jak042": [ - "Move over, buddy!" + "Spostati, amico!" ], "jak044": [ - "Outta the vehicle!" + "Fuori dal veicolo!" ], "jak045": [ - "Outta my way, buddy!" + "Fuori dai piedi, amico!" ], "jak046": [ - "Thanks for the lift." + "Grazie per il passaggio." ], "jak047": [ - "Mind if I drive?" + "Ti dispiace se guido?" ], "jak048": [ - "I like the color of this vehicle." + "Mi piace il colore di questo veicolo." ], "jak049": [ - "Mine now." + "Il mio adesso." ], "jak050": [ - "'Scuse me, but I need this." + "«Scusate, ma ne ho bisogno." ], "jak051": [ - "Take a hike, buddy!" + "Fai una passeggiata, amico!" ], "jak052": [ - "Try walking." + "Prova a camminare." ], "jak053": [ - "Sorry, but I'm in a hurry!" + "Mi spiace, ma ho fretta!" ], "jak054": [ - "Gotta go!" + "Devo andare!" ], "jak055": [ - "Get another vehicle!" + "Prendi un altro veicolo!" ], "jak056": [ - "Road hog!" + "Porco della strada!" ], "jak057": [ - "Brake yourself!" + "Frenati!" ], "jak059": [ - "Haha, you want some?" + "Ahah, ne vuoi un po'?" ], "jak060": [ - "Get some!" + "Procuratene alcuni!" ], "jak061": [ - "Yeah, feel it!" + "Sì, sentilo!" ], "jak062": [ - "Die!" + "Morire!" ], "jak063": [ - "Badass comin' through!" + "Un duro in arrivo!" ], "jak064": [ - "Be afraid. Be very afraid." + "Avere paura. Abbi molta paura." ], "jak065": [ - "Oooh, that's gotta hurt." + "Oooh, deve far male." ], "jak066": [ - "This is payback." + "Questa è la vendetta." ], "jak067": [ - "DIE, Praxis!" + "La pratica!" ], "jak068": [ - "You're finished, Kor!" + "Hai finito, Kor!" ], "jak069": [ - "This is my town, Kor!" + "Questa è la mia città, Kor!" ], "jak070": [ - "Surprise... you can't kill me in my dark form." + "Sorpresa... non puoi uccidermi nella mia forma oscura." ], "jak071": [ - "Now you pay!" + "Adesso paghi tu!" ], "jak072": [ - "Go back to the past, Kor! 'Cause you're history." + "Torna al passato, Kor! Perché sei storia." ], "jak073": [ - "I win." + "Io vinco." ], "jak074": [ - "You should have killed me when you had the chance, Praxis." + "Avresti dovuto uccidermi quando ne avevi la possibilità, Praxis." ], "jak075": [ - "Daxter, just shut up and watch my back." + "Daxter, stai zitto e guardami le spalle." ], "jak076": [ - "Whatever, Daxter." + "Comunque, Daxter." ], "jak077": [ - "Will you stop yappin'?" + "La smetterai di blaterare?" ], "jak078": [ - "When you got smaller, so did your brain." + "Quando sei diventato più piccolo, anche il tuo cervello è diventato più piccolo." ], "jak079": [ - "You're on MY shoulder. YOU'RE the sidekick." + "Sei sulla MIA spalla. TU sei il compagno." ], "jak080": [ - "As long as you're on MY shoulder, keep your mouth shut." + "Finché sei sulla MIA spalla, tieni la bocca chiusa." ], "jd001": [ - "Hey, kid! Wait! Come back!", - "We gotta protect him!" + "Ehi, ragazzo! Aspettare! Ritorno!", + "Dobbiamo proteggerlo!" ], "jk001": [ - "Wait, KID!" + "Aspetta, RAGAZZO!" ], "jk002": [ - "There he goes!" + "Eccolo!" ], "jk003": [ - "Leave him alone!" + "Lascialo solo!" ], "jk004": [ - "KID!" + "RAGAZZO!" ], "jk005": [ - "Pick on someone your own size!" + "Scegli qualcuno della tua taglia!" ], "jk006": [ - "Kid, look out!" + "Ragazzo, attento!" ], "jk007": [ - "How do YOU like it when somebody fights back?" + "Ti piace quando qualcuno reagisce?" ], "jk008": [ - "Leave the kid alone!" + "Lascia stare il bambino!" ], "jk009": [ - "He's just a kid!" + "È solo un ragazzino!" ], "jk010": [ - "Keep away from him!" + "Stai lontano da lui!" ], "jk011": [ - "Now you've pissed me off!" + "Adesso mi hai fatto incazzare!" ], "jk012": [ - "Eat this!" + "Mangia questo!" ], "jk013": [ - "Back off!" + "Indietro!" ], "jk014": [ - "We gotta get in the vehicle with the Kid!" + "Dobbiamo salire sul veicolo con Kid!" ], "jk015": [ - "Hold on!" + "Aspettare!" ], "jk016": [ - "Keep your head down, Kid!" + "Tieni la testa bassa, ragazzo!" ], "jk017": [ - "Stick with me, Kid, and you'll be safe." + "Resta con me, Kid, e sarai al sicuro." ], "jk018": [ - "Stay with me, Kid!" + "Resta con me, ragazzo!" ], "jk019": [ - "Get in the vehicle, Dax!" + "Sali sul veicolo, Dax!" ], "kei001": [ - "You can get on and off the JET-Board at any time." + "Puoi salire e scendere dal JET-Board in qualsiasi momento." ], "kei002": [ - "You can jump on your JET-Board!" + "Puoi saltare sul tuo JET-Board!" ], "kei003": [ - "Jump up on that ledge." + "Salta su quella sporgenza." ], "kei004": [ - "Try jumping up on that crate." + "Prova a saltare su quella cassa." ], "kei005": [ - "Jump over that obstacle." + "Salta oltre quell'ostacolo." ], "kei006": [ - "You can get a higher jump by ducking before you jump!" + "Puoi fare un salto più alto abbassandoti prima di saltare!" ], "kei007": [ - "Try doing a duck jump over that obstacle." + "Prova a fare un salto con l'anatra oltre quell'ostacolo." ], "kei008": [ - "Jump and jump again a little after you've landed", - "for an even bigger launch!" + "Salta e salta ancora un po' dopo essere atterrato", + "per un lancio ancora più grande!" ], "kei009": [ - "Try getting up on that higher ledge with a boost jump!" + "Prova ad alzarti sulla sporgenza più alta con un salto potenziato!" ], "kei010": [ - "You can spin in the air!" + "Puoi girare in aria!" ], "kei011": [ - "Land a perfect 360 for a speed boost!" + "Ottieni un 360 perfetto per un aumento di velocità!" ], "kei012": [ - "Nice spin!" + "Bel giro!" ], "kei013": [ - "You can land on a rail and grind across it." + "È possibile atterrare su una rotaia e poi scivolarci sopra." ], "kei014": [ - "Try grinding on that rail." + "Prova a macinare su quel binario." ], "kei016": [ - "You can do flips while you jump!" + "Puoi fare delle capriole mentre salti!" ], "kei017": [ - "You can also do tricks for fun." + "Si possono fare anche dei trucchi per divertimento." ], "kei018": [ - "Try to put a number of moves together to get points." + "Prova a mettere insieme una serie di mosse per ottenere punti." ], "kei019": [ - "Get enough points to win the challenge!" + "Ottieni abbastanza punti per vincere la sfida!" ], "kei020": [ - "Not enough points! Work on your moves." + "Punti insufficienti! Lavora sulle tue mosse." ], "kei021": [ - "Good job!" + "Buon lavoro!" ], "kei022": [ - "Close, but not quite there." + "Vicino, ma non del tutto lì." ], "kei023": [ - "Try again." + "Riprova." ], "kei024": [ - "A little more work and you just might win!" + "Ancora un po' di lavoro e potresti vincere!" ], "kei025": [ - "No good! Not enough points." + "Non buono! Punti insufficienti." ], "kei026": [ - "The Underground said you needed some help,", - "you won't be able to catch those Metal Heads in the", - "Forest on foot so I've left my JET-Board at the airlock", - "near the city exit. Since you're helping the Underground,", - "I'll even let you keep it!" + "La metropolitana ha detto che avevi bisogno di aiuto,", + "non sarai in grado di catturare quei Metal Heads nel", + "Foresta a piedi, quindi ho lasciato il mio JET-Board alla camera di equilibrio", + "vicino all'uscita della città. Dato che stai aiutando la metropolitana,", + "Te lo lascerò anche tenere!" ], "kei027": [ - "Jak, this is Keira. Don't forget - I still need two artifacts", - "to make the Rift Rider work! I need the Time Map and the", - "Heart of Mar Energy Gem, or we're not going anywhere!" + "Jak, questa è Keira. Non dimenticare: mi servono ancora due artefatti", + "per far funzionare Rift Rider! Mi serve la mappa temporale e il file", + "Gemma energetica del Cuore di Mar, altrimenti non andremo da nessuna parte!" ], "kei028": [ - "I still need those two artifacts or this pile of junk", - "won't move one city block, much less through the Rift", - "and back to our own time!", - "You've got to find the Heart of Mar and the Time Map", - "or we're stuck!" + "Mi servono ancora quei due artefatti o questo mucchio di spazzatura", + "non si sposterà di un isolato e tanto meno attraverso il Rift", + "e torniamo ai nostri tempi!", + "Devi trovare il Cuore di Mar e la Mappa del Tempo", + "oppure siamo bloccati!" ], "kei029": [ - "This is Keira. Thanks for getting the artifacts, guys.", - "It's strange... the Time Map had a bunch of old coordinates", - "in it. Come see me at the Stadium." + "Questa è Keira. Grazie per aver preso gli artefatti, ragazzi.", + "È strano... la mappa temporale aveva un sacco di vecchie coordinate", + "dentro. Vieni a trovarmi allo Stadio." ], "kg001": [ - "Call for backup!" + "Chiama rinforzi!" ], "kg001a": [ - "Call for backup!" + "Chiama rinforzi!" ], "kg002": [ - "Freeze!" + "Congelare!" ], "kg002a": [ - "Freeze!" + "Congelare!" ], "kg004": [ - "Halt!" + "Fermati!" ], "kg004a": [ - "Halt!" + "Fermati!" ], "kg005": [ - "Get more cruisers in here!" + "Ottieni più incrociatori qui!" ], "kg005a": [ - "Get more cruisers in here!" + "Aggiungi altri cruiser qui!" ], "kg006": [ - "Surrender!" + "Resa!" ], "kg006a": [ - "Surrender!" + "Resa!" ], "kg007": [ - "This is a no-hover zone!" + "Quì il volo è vietato!" ], "kg007a": [ - "This is a no-hover zone!" + "Quì il volo è vietato!" ], "kg008": [ - "Pull over!" + "Fermo!" ], "kg008a": [ - "Pull over!" + "Fermo!" ], "kg009": [ - "Say good night!" + "Dì Buonanotte!" ], "kg010": [ - "Seal off the area." + "Chiudete l'area." ], "kg011": [ - "Stop the vehicle!" + "Fermare il veicolo!" ], "kg011a": [ - "Stop the vehicle!" + "Fermare il veicolo!" ], "kg012": [ - "You're under arrest!" + "Sei in arresto!" ], "kg012a": [ - "You're under arrest!" + "Sei in arresto!" ], "kg013": [ - "You there!" + "Ehi, tu!" ], "kg014": [ - "You want some?!" + "Ne vuoi un po?!" ], "kg015": [ - "This area is off-limits." + "L'accesso è vietato." ], "kg016": [ - "Stop!" + "Fermare!" ], "kg018": [ - "Hey!" + "EHI!" ], "kg019": [ - "We do this the easy way, or the hard way." + "Lo facciamo nel modo più semplice o nel modo più difficile." ], "kg020": [ - "Slow down!" + "Rallentare!" ], "kg020a": [ - "Slow down!" + "Rallentare!" ], "kg021": [ - "Move over!" + "Spostati!" ], "kg021a": [ - "Move over!" + "Spostati!" ], "kg022": [ - "Call in more Hellcats!" + "Chiama altri Hellcats!" ], "kg023": [ - "Requesting backup!" + "Richiedo backup!" ], "kg023a": [ - "Requesting backup!" + "Richiedo backup!" ], "kg024": [ - "Suspect on foot!" + "Sospettato a piedi!" ], "kg024a": [ - "Suspect on foot!" + "Sospettato a piedi!" ], "kg025": [ - "Suspect in vehicle!" + "Sospetto nel veicolo!" ], "kg025a": [ - "Suspect in vehicle!" + "Sospetto nel veicolo!" ], "kg026": [ - "Suspect fleeing into sector five!" + "Il sospetto è fuggito nel settore cinque!" ], "kg026a": [ - "Suspect fleeing into sector five!" + "Il sospetto è fuggito nel settore cinque!" ], "kg027": [ - "Suspect moving to sector six!" + "Il sospetto si sta spostando nel settore sei!" ], "kg027a": [ - "Suspect moving into sector six!" + "Il sospetto si sta spostando nel settore sei!" ], "kg028": [ - "High-speed chase in sector four!" + "Inseguimento ad alta velocità nel settore quattro!" ], "kg028a": [ - "High-speed chase in sector four!" + "Inseguimento ad alta velocità nel settore quattro!" ], "kg029": [ - "Checking sector three." + "Controllo del settore tre." ], "kg029a": [ - "Checking sector three." + "Controllo del settore tre." ], "kg030": [ - "Patrolling sector nine." + "Pattugliamento settore nove." ], "kg030a": [ - "Patrolling sector nine." + "Pattugliamento settore nove." ], "kg031": [ - "Be advised, I'm on foot." + "Attenzione, sono a piedi." ], "kg031a": [ - "Be advised, I'm on foot." + "Attenzione, sono a piedi." ], "kg032": [ - "Moving to next sector." + "Passo al settore successivo." ], "kg032a": [ - "Moving to next sector." + "Passo al settore successivo." ], "kg033": [ - "I've got suspicious activity in this sector." + "Attività sospetta in questo settore." ], "kg033a": [ - "I've got suspicious activity in this sector." + "Attività sospetta in questo settore." ], "kg034": [ - "Sweeping for suspects." + "Ricerca sospetti in corso." ], "kg034a": [ - "Sweeping for suspects." + "Ricerca sospetti in corso." ], "kg035": [ - "Nothing so far." + "Nulla fin ora." ], "kg035a": [ - "Nothing so far." + "Nulla fin ora." ], "kg036": [ - "Roger that, still looking." + "Roger, lo sto ancora cercando." ], "kg036a": [ - "Roger that, still looking." + "Roger, lo sto ancora cercando." ], "kg037": [ - "Roger, we'll shoot on sight." + "Roger, spareremo a vista." ], "kg037a": [ - "Roger, we'll shoot on sight." + "Roger, spareremo a vista." ], "kg038": [ - "Please advise, suspect's description." + "Comunicare la descrizione dei sospetti." ], "kg039": [ - "Get out of the vehicle!" + "Fuori dal veicolo!" ], "kg039a": [ - "Get out of the vehicle!" + "Fuori dal veicolo!" ], "kg040": [ - "Call in more Hellcats!" + "Chiama altri Hellcats!" ], "kg040a": [ - "Call in more Hellcats!" + "Chiama altri Hellcats!" ], "kg041": [ - "The area is secure." + "La zona è sicura." ], "kg041a": [ - "The area is secure." + "La zona è sicura." ], "kg042": [ - "Nothing to report." + "Niente da segnalare." ], "kg042a": [ - "Nothing to report." + "Niente da segnalare." ], "kg043": [ - "Proceeding as planned." + "Procedendo come previsto." ], "kg043a": [ - "Proceeding as planned." + "Procedendo come previsto." ], "kg044": [ - "I lost him." + "L'ho perso." ], "kg044a": [ - "I lost him." + "L'ho perso." ], "kg045": [ - "Subject is not in sight." + "Il soggetto non è in vista." ], "kg045a": [ - "Subject not in sight." + "Soggetto non in vista." ], "kg046": [ - "He's gone." + "Se n'è andato." ], "kg046a": [ - "He disappeared!" + "È scomparso!" ], "kg047": [ - "Where'd he go?" + "Dov'è andato?" ], "kg047a": [ - "Where'd he go?" + "Dov'è andato?" ], "kg048": [ - "Lost visual contact." + "Contatto visivo perso." ], "kg048a": [ - "Lost visual contact." + "Perdita del contatto visivo." ], "kg049": [ - "He just ducked out." + "E' semplicemente scappato." ], "kg049a": [ - "He just ducked out." + "E' semplicemente scappato." ], "kg050": [ - "He's out of sight." + "E' fuori dalla vista." ], "kg050a": [ - "He's out of sight." + "E' fuori dalla vista." ], "kg051": [ - "We're losing him!" + "Lo stiamo perdendo!" ], "kg051a": [ - "We're losing him!" + "Lo stiamo perdendo!" ], "kg052": [ - "Continuing our sweep." + "Continuiamo la nostra ricerca." ], "kg052a": [ - "Continuing our sweep." + "Continuiamo la nostra ricerca." ], "kg053": [ - "Searching sector four." + "Sto cercando nel settore quattro." ], "kg053a": [ - "Searching sector four." + "Sto cercando nel settore quattro." ], "kg054": [ - "Searching sector seven." + "Ricerca nel settore sette." ], "kg054a": [ - "Searching sector seven." + "Ricerca nel settore sette." ], "kg055": [ - "Searching sector three." + "Ricerca nel settore tre." ], "kg055a": [ - "Searching sector three." + "Ricerca nel settore tre." ], "kg056": [ - "Keep looking." + "Continuare a cercare." ], "kg056a": [ - "Keep looking." + "Continuare a cercare." ], "kg057": [ - "He's got to be here somewhere." + "Deve essere qui da qualche parte." ], "kg057a": [ - "He's got to be here somewhere." + "Deve essere qui da qualche parte." ], "kg058": [ - "I can't find him." + "Non riesco a trovarlo." ], "kg058a": [ - "I can't find him." + "Non riesco a trovarlo." ], "kg059": [ - "No sign of the subject." + "Nessun segno del soggetto." ], "kg059a": [ - "No sign of the subject." + "Nessun segno del soggetto." ], "kg060": [ - "I don't see him anywhere." + "Non lo vedo da nessuna parte." ], "kg060a": [ - "I don't see him anywhere." + "Non lo vedo da nessuna parte." ], "kg061": [ - "Still searching." + "Ancora cercando." ], "kg061a": [ - "Still searching." + "Ancora cercando." ], "kg062": [ - "Searching for the target." + "Alla ricerca dell'obiettivo." ], "kg062a": [ - "Searching for the target." + "Alla ricerca dell'obiettivo." ], "kg063": [ - "He must be here." + "Deve essere qui." ], "kg063a": [ - "He must be here." + "Deve essere qui." ], "kg064": [ - "He was just here." + "Era proprio qui." ], "kg064a": [ - "He was just here." + "Era proprio qui." ], "kg065": [ - "We lost him." + "Lo abbiamo perso." ], "kg065a": [ - "We lost him." + "Lo abbiamo perso." ], "kg066": [ - "He got away." + "Se n'è andato." ], "kg066a": [ - "He got away." + "Se n'è andato." ], "kg067": [ - "He escaped." + "È fuggito." ], "kg067a": [ - "He escaped." + "È fuggito." ], "kg068": [ - "He shook us." + "Ci ha scosso." ], "kg068a": [ - "He shook us." + "Ci ha scosso." ], "kg069": [ - "Looks like he's gone." + "Sembra che se ne sia andato." ], "kg069a": [ - "Looks like he's gone." + "Sembra che se ne sia andato." ], "kg070": [ - "I found him!" + "L'ho trovato!" ], "kg070a": [ - "I found him!" + "L'ho trovato!" ], "kg071": [ - "There he is." + "Eccolo." ], "kg071a": [ - "There he is!" + "Eccolo!" ], "kg072": [ - "Be advised, target in sight." + "Attenzione, bersaglio in vista." ], "kg072a": [ - "Be advised, target in sight!" + "Attenzione, obiettivo in vista!" ], "kg073": [ - "We have a positive ID." + "Abbiamo un'identificazione positiva." ], "kg073a": [ - "We have a positive ID." + "Abbiamo un'identificazione positiva." ], "kg074": [ - "I see him!" + "Lo vedo!" ], "kg074a": [ - "I see him!" + "Lo vedo!" ], "kg075": [ - "He's over there, get him!" + "È laggiù, prendilo!" ], "kg075a": [ - "He's over here!" + "E' qui!" ], "kg076": [ - "Get him!" + "Prendilo!" ], "kg076a": [ - "Get him!" + "Prendilo!" ], "kg077": [ - "I've reacquired the target!" + "Ho riacquisito l'obiettivo!" ], "kg077a": [ - "I've reacquired the target!" + "Ho riacquisito l'obiettivo!" ], "kg078": [ - "I'm closing in." + "Mi sto avvicinando." ], "kg078a": [ - "I'm closing in!" + "Mi sto avvicinando!" ], "kg079": [ - "I'm on him!" + "Gli sto addosso!" ], "kg079a": [ - "I'm on him!" + "Gli sto addosso!" ], "kg080": [ - "I'm in pursuit!" + "Sono all'inseguimento!" ], "kg080a": [ - "I'm in pursuit!" + "Sono all'inseguimento!" ], "kg081": [ - "Pursuing target." + "Perseguire l'obiettivo." ], "kg081a": [ - "Pursuing target!" + "Perseguire l'obiettivo!" ], "kg082": [ - "Don't let him get away!" + "Non lasciarlo scappare!" ], "kg082a": [ - "Don't let him get away!" + "Non lasciarlo scappare!" ], "kg083": [ - "Get him!" + "Prendilo!" ], "kg083a": [ - "Get him!" + "Prendilo!" ], "kg084": [ - "After him!" + "Dopo di lui!" ], "kg084a": [ - "After him!" + "Dopo di lui!" ], "kg085": [ - "I have a visual!" + "Ho una visuale!" ], "kg085a": [ - "I have a visual!" + "Ho una visuale!" ], "kg086": [ - "We see him!" + "Lo vediamo!" ], "kg086a": [ - "We see him!" + "Lo vediamo!" ], "kg087": [ - "Stop right there!" + "Fermati là!" ], "kg087a": [ - "Stop right there!" + "Fermati là!" ], "kg088": [ - "I have a bead on him!" + "Lo tengo d'occhio!" ], "kg088a": [ - "I have a bead on him!" + "Lo tengo d'occhio!" ], "kg089": [ - "I'm hit!" + "Sono colpito!" ], "kg089a": [ - "I'm hit!" + "Sono colpito!" ], "kg090": [ - "Man down!" + "Uomo a terra!" ], "kg090a": [ - "Man down!" + "Uomo a terra!" ], "kg091": [ - "I need backup!" + "Ho bisogno di rinforzi!" ], "kg091a": [ - "I need backup!" + "Ho bisogno di rinforzi!" ], "kg092": [ - "Stop him!" + "Fermatelo!" ], "kg092a": [ - "Stop him!" + "Fermatelo!" ], "kg093": [ - "Look out!" + "Attenzione!" ], "kg093a": [ - "Look out!" + "Attenzione!" ], "kg094": [ - "There he is, shoot him!" + "Eccolo, sparagli!" ], "kg094a": [ - "There he is, shoot him!" + "Eccolo, sparagli!" ], "kg095": [ - "Take him out!" + "Portalo fuori!" ], "kg095a": [ - "Take him out!" + "Portalo fuori!" ], "kg096": [ - "Prisoner escape in progress, sound the alarm!" + "Fuga del prigioniero in corso, suona l'allarme!" ], "kg096a": [ - "Prison escape in progress, sound the alarm!" + "Evasione dalla prigione in corso, date l'allarme!" ], "kg097": [ - "Prisoner on level two!" + "Prigioniero al secondo livello!" ], "kg097a": [ - "Prisoner on level two!" + "Prigioniero al secondo livello!" ], "kg098": [ - "Prisoner moving to sub-level B!" + "Prigioniero trasferito al sottolivello B!" ], "kg098a": [ - "Prisoner moving to sub-level B!" + "Prigioniero trasferito al sottolivello B!" ], "kg099": [ - "We think he's in the pipes!" + "Pensiamo che sia nei tubi!" ], "kg099a": [ - "We think he's in the pipes!" + "Pensiamo che sia nei tubi!" ], "kg100": [ - "We're beginning our sweep." + "Iniziamo la perlustrazione." ], "kg100a": [ - "We're beginning our sweep." + "Iniziamo la perlustrazione." ], "kg101": [ - "We have prisoner in sight, move in!" + "Abbiamo un prigioniero in vista, entrate!" ], "kg101a": [ - "We have prisoner in sight, move in!" + "Abbiamo un prigioniero in vista, entrate!" ], "kg102": [ - "We have movement on level one!" + "Abbiamo movimento al primo livello!" ], "kg102a": [ - "We have movement on level one!" + "Abbiamo movimento al primo livello!" ], "kg103": [ - "Close in!" + "Avvicinati!" ], "kg103a": [ - "Close in!" + "Avvicinati!" ], "kg104": [ - "We're moving in!" + "Ci stiamo trasferendo!" ], "kg104a": [ - "We're moving in!" + "Ci stiamo trasferendo!" ], "kg105": [ - "Secure the cell block!" + "Metti al sicuro il blocco di celle!" ], "kg105a": [ - "Secure the cell block!" + "Metti al sicuro il blocco di celle!" ], "kg106": [ - "Take no prisoners!" + "Non prendete prigionieri!" ], "kg106a": [ - "Take no prisoners!" + "Non prendete prigionieri!" ], "kg107": [ - "Prisoner sighted, we got him!" + "Avvistato il prigioniero, lo abbiamo preso!" ], "kg107a": [ - "Prisoner sighted, we got him!" + "Avvistato il prigioniero, lo abbiamo preso!" ], "kg108": [ - "Prisoner is still on the loose!" + "Il prigioniero è ancora in libertà!" ], "kg108a": [ - "Prisoner is still on the loose!" + "Il prigioniero è ancora a piede libero!" ], "kg109": [ - "We think he's going for an exit!" + "Pensiamo che stia per uscire!" ], "kg109a": [ - "We think he's going for an exit!" + "Pensiamo che stia per uscire!" ], "kg110": [ - "Searching rooms." + "Cercando stanze." ], "kg110a": [ - "Searching rooms." + "Cercando stanze." ], "kg111": [ - "Prisoner loose in complex." + "Prigioniero libero nel complesso." ], "kg111a": [ - "Prisoner loose in complex." + "Prigioniero libero nel complesso." ], "kg112": [ - "You are authorized to shoot to kill." + "Sei autorizzato a sparare per uccidere." ], "kg112a": [ - "You are authorized to shoot to kill." + "Sei autorizzato a sparare per uccidere." ], "kg113": [ - "Go, go, go! Sweep the area!" + "Via! Via! Via! Spazza la zona!" ], "kg113a": [ - "Go go go! Sweep the area!" + "Via! Via! Via! Spazza la zona!" ], "kg114": [ - "Searching the sub-basements." + "Perquisizione nei sotterranei." ], "kg114a": [ - "Searching the sub-basements." + "Perquisizione nei sotterranei." ], "kg115": [ - "Cell block is clear." + "Il blocco delle celle è chiaro." ], "kg115a": [ - "Cell block is clear." + "Il blocco delle celle è chiaro." ], "kg116": [ - "Tank room is clear." + "La stanza del serbatoio è libera." ], "kg116a": [ - "Tank room is clear." + "La stanza del serbatoio è libera." ], "kg117": [ - "Activate riot tanks." + "Attivare i carri armati antisommossa." ], "kg117a": [ - "Activate riot tanks." + "Attiva i carri armati antisommossa." ], "kg118": [ - "Riot tank has prisoner in sight." + "Il carro armato antisommossa ha un prigioniero in vista." ], "kg118a": [ - "Riot tank has prisoner in sight." + "Il carro armato antisommossa ha un prigioniero in vista." ], "kg119": [ - "Intruder alert." + "Avviso intruso." ], "kg119a": [ - "Intruder alert!" + "Avviso intruso!" ], "kg120": [ - "Activating security defenses." + "Attivazione delle difese di sicurezza." ], "kg120a": [ - "Activating security defenses." + "Attivazione delle difese di sicurezza." ], "kg121": [ - "Please advise, subject's description." + "Fornire la descrizione dei sospetti." ], "kg121a": [ - "Please advise, subject's description." + "Fornire la descrizione dei sospetti." ], "kg122": [ - "I've got civvies in sight." + "Ho dei civili in vista." ], "kg122a": [ - "I've got civvies in sight." + "Ho dei civili in vista." ], "kg123": [ - "I've got suspects in sight." + "Ho dei sospetti in vista." ], "kg123a": [ - "I've got suspects in sight." + "Ho dei sospetti in vista." ], "kg124": [ - "I hate the smell of this part of the city." + "Odio l'odore di questa parte della città." ], "kg124a": [ - "I hate the smell in this part of the city." + "Odio l'odore in questa parte della città." ], "kg125": [ - "Right, we'll check it out." + "Giusto, controlleremo." ], "kg125a": [ - "Right, we'll check it out." + "Giusto, controlleremo." ], "kg126": [ - "Confirmed, Underground suspect neutralized." + "Confermato, sospettato clandestino neutralizzato." ], "kg126a": [ - "Confirmed, Underground suspect neutralized." + "Confermato, sospettato clandestino neutralizzato." ], "kg127": [ - "They're all guilty!" + "Sono tutti colpevoli!" ], "kg127a": [ - "They're all guilty!" + "Sono tutti colpevoli!" ], "kg128": [ - "This is Unit Alpha, we're en route." + "Qui è l'Unità Alfa, siamo in viaggio." ], "kg128a": [ - "This is Unit Alpha, we're en route." + "Qui è l'Unità Alfa, siamo in viaggio." ], "kg129": [ - "Roger, continuing our sweep." + "Roger, continuiamo la nostra ricerca." ], "kg129a": [ - "Roger, continuing our sweep." + "Roger, continuiamo la nostra ricerca." ], "kg130": [ - "Unit Zulu, moving in." + "Unità Zulu, in arrivo." ], "kg130a": [ - "Unit Zulu, moving in." + "Unità Zulu, in arrivo." ], "kg131": [ - "Roger that, we're making our sweep." + "Roger, stiamo facendo il nostro giro." ], "kg131a": [ - "Roger that, we're making our sweep." + "Roger, stiamo facendo il nostro giro." ], "kg132": [ - "I say shoot 'em all and sort 'em out later." + "Io dico di sparargli tutti e sistemarli più tardi." ], "kg132a": [ - "I say shoot 'em all and sort 'em out later." + "Io dico di sparargli tutti e sistemarli più tardi." ], "kg133": [ - "You have the right to die!" + "Hai il diritto di morire!" ], "kg134": [ - "Lock and load!" + "Blocca e carica!" ], "kg135": [ - "Open fire!" + "Apri il fuoco!" ], "kg136": [ - "Alert, alert!" + "Allerta, allerta!" ], "kg137": [ - "Don't move!" + "Non muoverti!" ], "kg138": [ - "Do it!" + "Fallo!" ], "kg139": [ - "Go, go, go!" + "Via! Via! Via!" ], "kg140": [ - "Flank 'em!" + "Affiancateli!" ], "kg141": [ - "Move in!" + "Entra!" ], "kg142": [ - "Take 'em out!" + "Portateli fuori!" ], "kg143": [ - "Bust some heads!" + "Spaccate qualche testa!" ], "kg144": [ - "Arrest him!" + "Arrestatelo!" ], "kg145": [ - "Shoot 'em, shoot 'em!" + "Sparagli, sparagli!" ], "kg146": [ - "Die, outlaw!" + "Muori, fuorilegge!" ], "kg147": [ - "You're history!" + "Sei storia!" ], "kg148": [ - "Eat this!" + "Mangia questo!" ], "kg149": [ - "Get some!" + "Procuratene alcuni!" ], "kg150": [ - "Fire, fire!" + "Fuoco fuoco!" ], "kg151": [ - "Here's one for the Guard!" + "Eccone uno per la Guardia!" ], "kg152": [ - "Give it up, outlaw!" + "Arrenditi, fuorilegge!" ], "kg153": [ - "Here's some pain!" + "Ecco un po' di dolore!" ], "kg154": [ - "Payback time!" + "Tempo di rimborso!" ], "kg155": [ - "Shoulda given up!" + "Avrei dovuto arrendermi!" ], "kg156": [ - "I need cover fire!" + "Ho bisogno di fuoco di copertura!" ], "kg157": [ - "Call in reinforcements!" + "Chiama i rinforzi!" ], "kg158": [ - "I'll shoot!" + "Sparo!" ], "kg159": [ - "Die!" + "Morire!" ], "kg160": [ - "You're busted!" + "Ti hanno beccato!" ], "kg161": [ - "Riot in progress!" + "Rivolta in corso!" ], "kg162": [ - "Send in the troops!" + "Invia le truppe!" ], "kg163": [ - "Give it up!" + "Lasciar perdere!" ], "kg164": [ - "Make 'em pay!" + "Fategliela pagare!" ], "kg165": [ - "Tag 'em and bag 'em!" + "Taggateli e impacchettateli!" ], "kg165a": [ - "Tag 'em and bag 'em!" + "Taggateli e impacchettateli!" ], "kg165b": [ - "Tag 'em and bag 'em!" + "Taggateli e impacchettateli!" ], "kg166": [ - "Another notch for my gun." + "Un'altra tacca per la mia pistola." ], "kg166a": [ - "Another notch for my gun." + "Un'altra tacca per la mia pistola." ], "kg166b": [ - "Another notch for my gun." + "Un'altra tacca per la mia pistola." ], "kg167": [ - "This one was easy!" + "Questo è stato facile!" ], "kg167a": [ - "This one was easy!" + "Questo è stato facile!" ], "kg167b": [ - "This one was easy!" + "Questo è stato facile!" ], "kg168": [ - "Suspect neutralized." + "Sospetto neutralizzato." ], "kg168a": [ - "Suspect neutralized." + "Sospetto neutralizzato." ], "kg168b": [ - "Suspect neutralized." + "Sospetto neutralizzato." ], "kg169": [ - "Didn't even work up a sweat." + "Non ho nemmeno sudato." ], "kg169a": [ - "Didn't even work up a sweat." + "Non ho nemmeno sudato." ], "kg169b": [ - "Didn't even work up a sweat." + "Non ho nemmeno sudato." ], "kg170": [ - "Take him in for... questioning, hehehe..." + "Portatelo qui per... interrogarlo, eheheh..." ], "kg170a": [ - "Take him in for... questioning, hehehe..." + "Portatelo qui per... interrogarlo, eheheh..." ], "kg170b": [ - "Take him in for... questioning, hehehe..." + "Portatelo qui per... interrogarlo, eheheh..." ], "kg171": [ - "Another one bites the dust." + "Un altro morde la polvere." ], "kg171a": [ - "Another one bites the dust." + "Un altro morde la polvere." ], "kg171b": [ - "Another one bites the dust." + "Un altro morde la polvere." ], "kg172": [ - "That must have hurt." + "Deve aver fatto male." ], "kg172a": [ - "That must have hurt." + "Deve aver fatto male." ], "kg172b": [ - "That must have hurt." + "Deve aver fatto male." ], "kg173": [ - "There's plenty more where that came from." + "C'è molto altro da dove viene." ], "kg173a": [ - "There's plenty more where that came from." + "C'è molto altro da dove viene." ], "kg173b": [ - "There's plenty more where that came from." + "C'è molto altro da dove viene." ], "kg174": [ - "Citizen scum." + "Feccia di cittadino." ], "kg174a": [ - "Citizen scum." + "Feccia di cittadino." ], "kg174b": [ - "Citizen scum." + "Feccia di cittadino." ], "kg175": [ - "Don't fight the law, son." + "Non combattere la legge, figliolo." ], "kg175a": [ - "Don't fight the law, son." + "Non combattere la legge, figliolo." ], "kg175b": [ - "Don't fight the law, son." + "Non combattere la legge, figliolo." ], "kg176": [ - "You are under arrest!" + "Tu sei sotto arresto!" ], "kg177": [ - "Get moving!" + "Muoviti!" ], "kg178a": [ - "He vanished!" + "È scomparso!" ], "kg179": [ - "You guys hear about the latest Metal Head attacks?" + "Ragazzi, avete sentito degli ultimi attacchi dei Metal Head?" ], "kg179b": [ - "Oh you guys hear about the latest Metal Head attacks?" + "Oh ragazzi, avete sentito degli ultimi attacchi dei Metal Head?" ], "kg180": [ - "We lost three squads last week." + "La settimana scorsa abbiamo perso tre squadre." ], "kg180a": [ - "We lost three squads last week." + "La settimana scorsa abbiamo perso tre squadre." ], "kg180b": [ - "We lost three squads last week." + "La settimana scorsa abbiamo perso tre squadre." ], "kg181": [ - "I hear the Underground are getting stronger." + "Ho sentito che la metropolitana sta diventando più forte." ], "kg181a": [ - "I hear the Underground are getting stronger." + "Ho sentito che la metropolitana sta diventando più forte." ], "kg181b": [ - "I hear the Underground are getting stronger." + "Ho sentito che la metropolitana sta diventando più forte." ], "kg182": [ - "Just rumors, private, keep your mouth shut." + "Sono solo voci, privato, tieni la bocca chiusa." ], "kg182a": [ - "Just rumors, private, keep your mouth shut." + "Sono solo voci, privato, tieni la bocca chiusa." ], "kg182b": [ - "Just rumors, private, keep your mouth shut." + "Sono solo voci, privato, tieni la bocca chiusa." ], "kg183": [ - "It's us or them, there's no in-between." + "O noi o loro, non ci sono vie di mezzo." ], "kg183a": [ - "It's us or them, there's no in-between." + "O noi o loro, non c'è via di mezzo." ], "kg183b": [ - "It's us or them, there's no in-between." + "O noi o loro, non c'è via di mezzo." ], "kg184": [ - "Don't worry, the Baron will save us." + "Non preoccuparti, il Barone ci salverà." ], "kg184a": [ - "Don't worry, the Baron will save us." + "Non preoccuparti, il Barone ci salverà." ], "kg184b": [ - "Don't worry, the Baron will save us." + "Non preoccuparti, il Barone ci salverà." ], "kg185": [ - "I got no faith in nobody." + "Non ho fiducia in nessuno." ], "kg185a": [ - "I ain't got no faith in nobody." + "Non ho fiducia in nessuno." ], "kg185b": [ - "I got no faith in nobody." + "Non ho fiducia in nessuno." ], "kg186": [ - "Seen that new JX-7 racer? Sweet ride." + "Hai visto quel nuovo pilota JX-7? Dolce giro." ], "kg186a": [ - "You seen that new JX-7 racer? Sweet ride." + "Hai visto quel nuovo pilota JX-7? Dolce giro." ], "kg186b": [ - "Seen that new JX-7 racer? It's a sweet ride." + "Hai visto quel nuovo pilota JX-7? È un viaggio dolce." ], "kg187": [ - "You seen anything?" + "Hai visto qualcosa?" ], "kg187a": [ - "You seen anything?" + "Hai visto qualcosa?" ], "kg187b": [ - "You seen anything?" + "Hai visto qualcosa?" ], "kg188": [ - "No." + "NO." ], "kg188a": [ - "No." + "NO." ], "kg188b": [ - "Nah." + "No." ], "kg189": [ - "Keep your eyes peeled." + "Tieni gli occhi aperti." ], "kg189a": [ - "Keep your eyes peeled." + "Tieni gli occhi aperti." ], "kg189b": [ - "Keep your eyes peeled." + "Tieni gli occhi aperti." ], "kg190": [ - "I just got a radio alert, stay frosty." + "Ho appena ricevuto un avviso radio, stai calmo." ], "kg190a": [ - "I just got a radio alert, stay frosty." + "Ho appena ricevuto un avviso radio, stai calmo." ], "kg190b": [ - "I just got a radio alert, stay frosty." + "Ho appena ricevuto un avviso radio, stai calmo." ], "kg191": [ - "Never trust a civilian." + "Non fidarsi mai di un civile." ], "kg191a": [ - "Never trust a civilian." + "Non fidarsi mai di un civile." ], "kg191b": [ - "Never trust a civilian." + "Non fidarsi mai di un civile." ], "kg192": [ - "Never trust anyone." + "Non fidarti mai di nessuno." ], "kg192a": [ - "Never trust anyone." + "Non fidarti mai di nessuno." ], "kg192b": [ - "Never trust anyone." + "Non fidarti mai di nessuno." ], "kg193": [ - "Long live the KG!" + "Viva il KG!" ], "kg193a": [ - "Long live the KG!" + "Viva il KG!" ], "kg193b": [ - "Long live the KG!" + "Viva il KG!" ], "kg194": [ - "We ain't had a food riot since we brought in them tanks." + "Non c'è stata una rivolta per il cibo da quando abbiamo portato i carri armati." ], "kg194a": [ - "We ain't had a food riot since we brought in them tanks." + "Non c'è stata una rivolta per il cibo da quando abbiamo portato i carri armati." ], "kg194b": [ - "We ain't had a food riot since we brought in them tanks." + "Non c'è stata una rivolta per il cibo da quando abbiamo portato i carri armati." ], "kg195": [ - "I'm bored, I want to crunch heads." + "Mi annoio, voglio sgranocchiare la testa." ], "kg195a": [ - "I'm bored, I want to crunch heads." + "Mi annoio, voglio sgranocchiare la testa." ], "kg195b": [ - "I'm bored, I want to crunch heads." + "Mi annoio, ho voglia di schiacciare teste." ], "kg196": [ - "I want to kick some ass." + "Voglio fare il culo a qualcuno." ], "kg196a": [ - "Ugh... I want to kick some butt." + "Ugh... voglio dare un calcio a qualcuno." ], "kg196b": [ - "I want to kick some butt." + "Voglio dare un calcio a qualcuno." ], "kg197": [ - "Did you hear the Underground got our ammo at HQ?" + "Hai sentito che la metropolitana ha preso le nostre munizioni al quartier generale?" ], "kg197a": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Hai sentito che è arrivata la metropolitana?", + "le nostre munizioni al quartier generale?" ], "kg197b": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Hai sentito che è arrivata la metropolitana?", + "le nostre munizioni al quartier generale?" ], "kg198": [ - "Payback's a bitch!" + "La vendetta è una stronzata!" ], "kg198a": [ - "Payback's a bitch!" + "La vendetta è una stronzata!" ], "kg198b": [ - "Payback's a bitch!" + "La vendetta è una vera stronzata!" ], "kg199": [ - "Animals!" + "Animali!" ], "kg199a": [ - "Animals!" + "Animali!" ], "kg199b": [ - "Animals!" + "Animali!" ], "kg200": [ - "I hear the Shadow's been dead for years." + "Ho sentito che l'Ombra è morta da anni." ], "kg200a": [ - "I hear the Shadow's been dead for years." + "Ho sentito che l'Ombra è morta da anni." ], "kg200b": [ - "I hear the Shadow's been dead for years." + "Ho sentito che l'Ombra è morta da anni." ], "kg201": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Forse, ma gli altri sono feccia dell'underground", + "stanno ancora correndo qua e là." ], "kg201a": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Forse, ma gli altri sono feccia dell'underground", + "stanno ancora correndo qua e là." ], "kg201b": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Forse, ma gli altri sono feccia dell'underground", + "stanno ancora correndo qua e là." ], "kg202": [ - "Can I shoot someone now?" + "Posso sparare a qualcuno adesso?" ], "kg202a": [ - "Can I shoot someone now?" + "Posso sparare a qualcuno adesso?" ], "kg202b": [ - "Can I shoot someone now?" + "Posso sparare a qualcuno adesso?" ], "kg203": [ - "I like the new armor." + "Mi piace la nuova armatura." ], "kg203a": [ - "I like the new armor." + "Mi piace la nuova armatura." ], "kg203b": [ - "I like the new armor." + "Mi piace la nuova armatura." ], "kg204": [ - "Yeah, me too. More comfort in the crotch." + "Si, anch'io. Più comfort al cavallo." ], "kg204a": [ - "Yeah, me too. More comfort in the crotch." + "Si, anch'io. Più comfort al cavallo." ], "kg204b": [ - "Yeah, me too. More comfort in the crotch." + "Si, anch'io. Più comfort al cavallo." ], "kg205": [ - "If something interesting doesn't happen soon,", - "I'm going to start shooting you." + "Se non succede qualcosa di interessante presto,", + "Ora comincerò a spararti." ], "kg205a": [ - "Next time, can I kill a civvy?" + "La prossima volta posso uccidere un civile?" ], "kg205b": [ - "Next time, can I kill a civvy?" + "La prossima volta posso uccidere un civile?" ], "kg206a": [ - "If something interesting doesn't happen soon,", - "I'm gonna shoot you." + "Se non succede qualcosa di interessante presto,", + "Ti sparerò." ], "kg206b": [ - "If something interesting doesn't happen soon,", - "I'm gonna start shooting you." + "Se non succede qualcosa di interessante presto,", + "Inizierò a spararti." ], "kg207": [ - "Did you collect your bribes this week?" + "Hai raccolto le tue mazzette questa settimana?" ], "kg207a": [ - "You collect your bribes this week?" + "Raccoglierai le mazzette questa settimana?" ], "kg207b": [ - "You collect your bribes this week?" + "Raccoglierai le mazzette questa settimana?" ], "kg208": [ "Shhh..." @@ -5465,750 +5465,750 @@ "Shh." ], "kg210": [ - "I hear someone's been using the old wall airlocks.", - "Pfft, crazy bastard." + "Ho sentito che qualcuno sta usando le vecchie camere di equilibrio sul muro.", + "Pfft, pazzo bastardo." ], "kg210a": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Ho sentito che qualcuno sta usando le vecchie camere di equilibrio sul muro.", + "Pazzo bastardo." ], "kg210b": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Ho sentito che qualcuno sta usando le vecchie camere di equilibrio sul muro.", + "Pazzo bastardo." ], "kg211": [ - "I've been on duty for two days straight." + "Sono stato in servizio per due giorni di fila." ], "kg211a": [ - "I've been on duty for two days straight." + "Sono stato in servizio per due giorni di fila." ], "kg211b": [ - "I've been on duty for two days straight." + "Sono stato in servizio per due giorni di fila." ], "kg212": [ - "Pfft, don't complain. I've got sewer patrol next week." + "Pfft, non lamentarti. Ho una pattuglia delle fogne la prossima settimana." ], "kg212a": [ - "Don't complain, I got sewer patrol next week." + "Non lamentarti, ho una pattuglia delle fogne la prossima settimana." ], "kg212b": [ - "Don't complain. I got sewer patrol next week." + "Non lamentarti. Ho una pattuglia delle fogne la prossima settimana." ], "kg213": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ahh, povero bastardo. Quale comandante hai fatto incazzare?" ], "kg213a": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ahh, povero bastardo. Quale comandante hai fatto incazzare?" ], "kg213b": [ - "Hehe, poor bastard. Which commander did you piss off?" + "Eheh, povero bastardo. Quale comandante hai fatto incazzare?" ], "kg214": [ - "I say death to the Underground." + "Dico morte alla metropolitana." ], "kg214a": [ - "I say death to the Underground." + "Dico morte alla metropolitana." ], "kg214b": [ - "I say death to the Underground." + "Dico morte alla metropolitana." ], "kg215": [ - "I wanna so kill that Shadow guy." + "Voglio davvero uccidere quel ragazzo dell'Ombra." ], "kg215a": [ - "I want to kill that Shadow guy!" + "Voglio uccidere quel ragazzo dell'Ombra!" ], "kg215b": [ - "I want to kill that Shadow guy!" + "Voglio uccidere quel ragazzo dell'Ombra!" ], "kg216": [ - "And don't forget that traitor Torn." + "E non dimenticare quel traditore di Torn." ], "kg216a": [ - "And don't forget that traitor Torn." + "E non dimenticare quel traditore, Torn." ], "kg216b": [ - "Don't forget that traitor Torn!" + "Non dimenticare quel traditore, Torn!" ], "kg217": [ - "Death's too good for him." + "La morte è troppo bella per lui." ], "kg217a": [ - "Death's too good for him." + "La morte è troppo bella per lui." ], "kg217b": [ - "Death's too good for him." + "La morte è troppo bella per lui." ], "kg218": [ - "Why are we looking for some kid?" + "Perché stiamo cercando un ragazzino?" ], "kg218a": [ - "Why are we looking for some kid?" + "Perché stiamo cercando un ragazzino?" ], "kg218b": [ - "Why are we looking for some kid?" + "Perché stiamo cercando un ragazzino?" ], "kg219": [ - "I don't know, Baron's orders." + "Non lo so, ordini del Barone." ], "kg219a": [ - "I dunno, Baron's orders." + "Non lo so, ordini di Baron." ], "kg219b": [ - "I dunno, Baron's orders." + "Non lo so, ordini di Baron." ], "kg220": [ - "Hey, have they found Mar's Tomb yet?" + "Ehi, hanno già trovato la Tomba di Mar?" ], "kg220a": [ - "Have they found Mar's Tomb yet?" + "Hanno già trovato la Tomba di Mar?" ], "kg220b": [ - "Have they found Mar's Tomb yet?" + "Hanno già trovato la Tomba di Mar?" ], "kg221": [ - "They wouldn't tell us if they did." + "Se lo facessero non ce lo direbbero." ], "kg221a": [ - "Nah, they wouldn't tell us if they did." + "No, non ce lo direbbero se lo facessero." ], "kg221b": [ - "Nah, they wouldn't tell us if they did." + "No, non ce lo direbbero se lo facessero." ], "kg222": [ - "I've got a big bet on the next city races." + "Ho una grossa scommessa sulle prossime gare cittadine." ], "kg222a": [ - "I got a big bet on the next city races." + "Ho fatto una grossa scommessa sulle prossime gare cittadine." ], "kg222b": [ - "Got a big bet on the next city races." + "Ho una grossa scommessa sulle prossime gare cittadine." ], "kg223": [ - "Erol's my boy. He always wins." + "Erol è il mio ragazzo. Vince sempre." ], "kg223a": [ - "Erol's my boy. He always wins." + "Erol è il mio ragazzo. Vince sempre." ], "kg223b": [ - "Erol's my boy. He always wins." + "Erol è il mio ragazzo. Vince sempre." ], "kg224": [ - "You going to the city races this time?" + "Andrai alle gare cittadine questa volta?" ], "kg224a": [ - "You going to the city races this time?" + "Andrai alle gare cittadine questa volta?" ], "kg224b": [ - "You going to the city races this time?" + "Questa volta andrai alle gare cittadine?" ], "kg225": [ - "I'll be there." + "Io ci sarò." ], "kg225a": [ - "I'll be there." + "Io ci sarò." ], "kg225b": [ - "I'll be there." + "Io ci sarò." ], "kg226": [ - "There've been some serious guard casualties this week." + "Ci sono state alcune gravi vittime tra le guardie questa settimana." ], "kg226a": [ - "There've been some serious guard casualties this week." + "Ci sono state alcune gravi vittime tra le guardie questa settimana." ], "kg226b": [ - "There've been some serious guard casualties this week." + "Ci sono state alcune gravi vittime tra le guardie questa settimana." ], "kg227": [ - "Yeah, some rebel fighter is stirring up the pot good." + "Sì, qualche combattente ribelle sta fomentando la situazione." ], "kg227a": [ - "Yeah, some rebel fighter is stirring the pot good." + "Sì, qualche combattente ribelle sta mescolando bene la situazione." ], "kg227b": [ - "Some rebel fighter is stirring the pot good." + "Qualche combattente ribelle sta mescolando bene la situazione." ], "kg228": [ - "I'd love to be the one to take him out." + "Mi piacerebbe essere io a portarlo fuori." ], "kg228a": [ - "I'd love to be the one to take him out." + "Mi piacerebbe essere io a portarlo fuori." ], "kg228b": [ - "Oh I'd love to be the one to take him out." + "Oh, mi piacerebbe essere io a portarlo fuori." ], "kg229": [ - "Let's get drinks later." + "Prendiamo da bere più tardi." ], "kg229a": [ - "Let's get drinks later." + "Prendiamo da bere più tardi." ], "kg229b": [ - "Let's get drinks later." + "Prendiamo da bere più tardi." ], "kg230": [ - "I got a bad feeling about this war." + "Ho una brutta sensazione riguardo a questa guerra." ], "kg230a": [ - "I got a bad feeling about this war." + "Ho una brutta sensazione riguardo a questa guerra." ], "kg230b": [ - "I got a bad feeling about this war." + "Ho un brutto presentimento su questa guerra." ], "kg231": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ho sentito che ci sono altri attacchi di Metal Head", + "di quanto il quartier generale ammetta." ], "kg231a": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ho sentito che ci sono altri attacchi dei Metal Head", + "di quanto il quartier generale ammetta." ], "kg231b": [ - "Yeah, I hear there are more Metal Head attacks", - "than HQ's admitting." + "Sì, ho sentito che ci sono altri attacchi dei Metal Head", + "di quanto il quartier generale ammetta." ], "kg232": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "I resoconti che ho visto non sono buoni.", + "Penso che la città sia nei guai." ], "kg232a": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "I resoconti che ho visto non sono buoni.", + "Penso che la città sia nei guai." ], "kg232b": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "I resoconti che ho letto non sono buoni.", + "Penso che la città sia nei guai." ], "kg233": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Sono preoccupato per questo nuovo ragazzo", + "lottando per la metropolitana." ], "kg233a": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Sono preoccupato per questo nuovo ragazzo", + "lottando per la metropolitana." ], "kg233b": [ - "I'm worried about this new guy fighting for the Underground.", - "fighting for the Underground." + "Sono preoccupato per questo nuovo ragazzo che combatte per la metropolitana.", + "lottando per la metropolitana." ], "kg234": [ - "Yeah, they say he can change into some kind of... monster." + "Sì, dicono che possa trasformarsi in una specie di... mostro." ], "kg234a": [ - "Yeah, they say he can change into some kind of monster." + "Sì, dicono che può trasformarsi in una specie di mostro." ], "kg234b": [ - "They say he can change into some kind of monster." + "Dicono che possa trasformarsi in una specie di mostro." ], "kg235": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Non preoccuparti, presto la sua testa sarà sul muro della torre." ], "kg235a": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Non preoccuparti, presto la sua testa sarà sul muro della torre." ], "kg235b": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Non preoccuparti, presto la sua testa sarà sul muro della torre." ], "kg236": [ - "Hehehe." + "Eheheh." ], "kg236a": [ - "Hehehe." + "Eheheh." ], "kg236b": [ - "Hehehe." + "Eheheh." ], "kg237a": [ - "Hehehe..." + "Eheheh..." ], "kg237b": [ - "Hehehe..." + "Eheheh..." ], "kg238a": [ "Hahaha..." ], "kg239a": [ - "Hah!" + "Ah!" ], "kg239b": [ - "Hah!" + "Ah!" ], "kg240a": [ - "Hehehe..." + "Eheheh..." ], "kg241a": [ - "Suspect in known Underground vehicle!" + "Sospetto in un noto veicolo sotterraneo!" ], "kg242a": [ - "He's got a cargo, move in!" + "Ha un carico, muoviti!" ], "kg243a": [ - "Stop that vehicle!" + "Ferma quel veicolo!" ], "kg244a": [ - "You're under arrest, pull over!" + "Sei in arresto, accosta!" ], "kg245a": [ - "Surrender the vehicle!" + "Consegnare il veicolo!" ], "kg246a": [ - "We are in pursuit!" + "Siamo all'inseguimento!" ], "kg247a": [ - "He's got a package!" + "Ha un pacco!" ], "kg248a": [ - "Suspect has suspicious cargo!" + "Il sospettato ha un carico sospetto!" ], "kg249a": [ - "We think it's an illegal shipment." + "Pensiamo che sia una spedizione illegale." ], "kg250a": [ - "All units close in on vehicle!" + "Tutte le unità si avvicinano al veicolo!" ], "kg251a": [ - "Suspect moving at high speed!" + "Il sospetto si muove ad alta velocità!" ], "kg252a": [ - "We can't keep up!" + "Non possiamo tenere il passo!" ], "kg253a": [ - "He's in the port!" + "E' al porto!" ], "kg254a": [ - "He got away!" + "Se n'è andato!" ], "kg255a": [ - "Suspect has taken out pursuit!" + "Il sospettato ha dato inizio all'inseguimento!" ], "kg256a": [ - "Vehicle destroyed, we got him!" + "Veicolo distrutto, l'abbiamo preso!" ], "kg257a": [ - "Nice work boys, he's down." + "Bel lavoro ragazzi, è a terra." ], "kg258a": [ - "Excellent pursuit." + "Inseguimento eccellente." ], "kg259a": [ - "Guard transport under attack, requesting support!" + "Trasporto di guardia sotto attacco, richiediamo supporto!" ], "kg260a": [ - "We're takin' damage!" + "Stiamo subendo danni!" ], "kg261a": [ - "He's after us!" + "Ci sta inseguendo!" ], "kg262a": [ - "He's trying to crash the transport!" + "Sta cercando di far schiantare il trasporto!" ], "kg263a": [ - "We've had a transport ambush, units respond!" + "Abbiamo avuto un'imboscata ai trasporti, le unità rispondono!" ], "kg264a": [ - "He's picking up a prisoner!" + "Sta prelevando un prigioniero!" ], "kg265a": [ - "We lost a Lurker prisoner." + "Abbiamo perso un prigioniero Lurker." ], "kg266a": [ - "He's got a Lurker prisoner with him!" + "Ha un prigioniero Lurker con sé!" ], "kg267a": [ - "Take 'em all out!" + "Tirateli fuori tutti!" ], "kg268a": [ - "We think he's helping the Lurkers escape!" + "Pensiamo che stia aiutando i Lurker a fuggire!" ], "kg269a": [ - "He's taken out two of our transports already!" + "Ha già fatto fuori due dei nostri trasporti!" ], "kg270a": [ - "He's alone again." + "È di nuovo solo." ], "kg271a": [ - "Where's he heading?!" + "Dove sta andando?!" ], "kg272a": [ - "Terminate with extreme prejudice!" + "Terminare con estremo pregiudizio!" ], "kg273a": [ - "He's attacking another transport!" + "Sta attaccando un altro trasporto!" ], "kg274a": [ - "We're being chased, send in an escort!" + "Siamo inseguiti, mandate una scorta!" ], "kg275a": [ - "We lost this passenger." + "Abbiamo perso questo passeggero." ], "kg276a": [ - "We're losing him!" + "Lo stiamo perdendo!" ], "kg277a": [ - "We got 'em!" + "Li abbiamo presi!" ], "kg278a": [ - "We got 'em, teach ya to screw with the KG!" + "Li abbiamo presi, ti insegnano a fregare il KG!" ], "kg279a": [ - "Pull over, Lurker lover!" + "Accostati, amante dei Lurker!" ], "kg280a": [ - "There's a kid, check him out." + "C'è un ragazzino, guardatelo." ], "kg281a": [ - "The Baron wants every kid in this city arrested." + "Il Barone vuole che tutti i bambini di questa città vengano arrestati." ], "kg282a": [ - "Surrender the child!" + "Arrenditi al bambino!" ], "kg283a": [ - "Give up the kid!" + "Lascia perdere il ragazzo!" ], "kg284a": [ - "If they won't surrender, kill them all!" + "Se non si arrendono, uccidili tutti!" ], "kg285a": [ - "Don't kill the kid." + "Non uccidere il ragazzo." ], "kg286a": [ - "The Baron wants the kid alive!" + "Il Barone vuole il ragazzo vivo!" ], "kg287a": [ - "Find the boy!" + "Trova il ragazzo!" ], "kg288a": [ - "That could be the kid the Baron wants." + "Potrebbe essere quello il ragazzo che il Barone vuole." ], "kg289a": [ - "After them!" + "Dopo di loro!" ], "kg290a": [ - "Don't move, boy!" + "Non muoverti, ragazzo!" ], "kg291a": [ - "Take out that mutt!" + "Porta fuori quel bastardino!" ], "kg292a": [ - "We should kill 'em all!" + "Dovremmo ucciderli tutti!" ], "kg293a": [ - "They've taken a vehicle!" + "Hanno preso un veicolo!" ], "kg294a": [ - "If you get a clear shot, take it!" + "Se ottieni un tiro nitido, prendilo!" ], "kg295a": [ - "Suspect is fleeing in vehicle!" + "Il sospettato sta fuggendo a bordo di un veicolo!" ], "kg296a": [ - "Suspect's vehicle moving through section seven." + "Il veicolo del sospettato attraversa la sezione sette." ], "kg297a": [ - "We think the kid's with that Underground freak." + "Pensiamo che il ragazzo sia con quel mostro della metropolitana." ], "kg298a": [ - "Take 'em out, but keep the kid alive!" + "Eliminateli, ma tenete in vita il ragazzo!" ], "kg299a": [ - "They're on foot again!" + "Sono di nuovo a piedi!" ], "kg300a": [ - "What is that thing?!" + "Cos'è quella cosa?!" ], "kg301a": [ - "Shoot that thing, shoot it!" + "Spara a quella cosa, spara!" ], "kg302a": [ - "What's he doing?!" + "Cosa sta facendo?!" ], "kg303a": [ - "It's that monster!" + "È quel mostro!" ], "kg304a": [ - "The stories are true!" + "Le storie sono vere!" ], "kg305a": [ - "It's the dark monster!" + "È il mostro oscuro!" ], "kg306a": [ - "It's him!" + "È lui!" ], "kg307a": [ - "It's the dark eco freak!" + "È l'eco-maniaco oscuro!" ], "kg308a": [ - "Kill it, kill it!" + "Uccidilo, uccidilo!" ], "kg309a": [ - "Suspect has transformed into", - "a creature of some kind." + "Il sospetto si è trasformato in", + "una creatura di qualche tipo." ], "kg310a": [ - "Sure is ugly." + "Certo è brutto." ], "kg311a": [ - "That's one ugly creature." + "Quella è una brutta creatura." ], "kg312a": [ - "Look out!" + "Attenzione!" ], "kg313a": [ - "Fall back!" + "Ricaderci!" ], "kg314a": [ - "He's wasting everybody!" + "Sta sprecando tutti!" ], "kg315a": [ - "We can't kill it!" + "Non possiamo ucciderlo!" ], "kg316a": [ - "Stand your ground men!" + "Mantenete i vostri uomini a terra!" ], "kg317a": [ - "The Krimzon Guard do not run!" + "La Guardia Krimzon non scappa!" ], "kg318a": [ - "Watch out for his claws!" + "Attenzione ai suoi artigli!" ], "kg319a": [ - "Keep clear of his energy bolts!" + "Stai lontano dai suoi dardi energetici!" ], "kg320a": [ - "This is a raid, do not resist!" + "Questo è un raid, non resistere!" ], "kg321a": [ - "Move in!" + "Entra!" ], "kg322a": [ - "By order of Baron Praxis,", - "everyone here is to be terminated!" + "Per ordine del barone Praxis,", + "tutti qui devono essere licenziati!" ], "kg323a": [ - "Surrender and you will not suffer much." + "Arrenditi e non soffrirai molto." ], "kg324a": [ - "It's that Underground monster freak!" + "È quel mostro mostruoso della metropolitana!" ], "kg325a": [ - "Get him!" + "Prendilo!" ], "kg326a": [ - "All units converge on Water Slums!" + "Tutte le unità convergono su Water Slums!" ], "kg327a": [ - "We've got an Underground fighter!" + "Abbiamo un combattente sotterraneo!" ], "kg328a": [ - "Burn 'em down!" + "Bruciateli!" ], "kg329a": [ - "Stay together!" + "Stare insieme!" ], "kg330a": [ - "We've got 'em cornered!" + "Li abbiamo messi alle strette!" ], "kg331a": [ - "Suspect cornered in section two." + "Il sospettato è stato messo alle strette nella sezione due." ], "kg332a": [ - "There is no escape!" + "Non c'è via di fuga!" ], "kg333a": [ - "Resistance is futile!" + "La resistenza è inutile!" ], "kg334a": [ - "Give up the artifact, eco freak!" + "Rinuncia al manufatto, maniaco dell'eco!" ], "kg335a": [ - "We've cut 'em off!" + "Li abbiamo tagliati fuori!" ], "kg336a": [ - "He's trapped!" + "È intrappolato!" ], "kg337a": [ - "We got 'em!" + "Li abbiamo presi!" ], "kg338a": [ - "We're taking heavy fire!" + "Stiamo subendo un fuoco pesante!" ], "kg339a": [ - "We're taking heavy casualties, send in backup!" + "Stiamo subendo pesanti perdite, inviate rinforzi!" ], "kg340a": [ - "This guy knows how to fight!" + "Questo ragazzo sa come combattere!" ], "kg341a": [ - "Hold your ground!" + "Mantieni la posizione!" ], "kg342a": [ - "Do not retreat!" + "Non ritirarti!" ], "kg343a": [ - "We lost Beta squad!" + "Abbiamo perso la squadra Beta!" ], "kg344a": [ - "We need more men!" + "Abbiamo bisogno di più uomini!" ], "kg345a": [ - "He's on the south path!" + "È sul sentiero a sud!" ], "kg346a": [ - "He's in the water!" + "È nell'acqua!" ], "kg347a": [ - "He's near the east hut, all units converge!" + "È vicino alla capanna est, tutte le unità convergono!" ], "kg348a": [ - "We're gonna lose him!" + "Lo perderemo!" ], "kg349a": [ - "Intruder alert, sound the alarm!" + "Avviso intruso, suona l'allarme!" ], "kg350a": [ - "The Fortress is under attack!" + "La Fortezza è sotto attacco!" ], "kg351a": [ - "This is our house, boy!" + "Questa è casa nostra, ragazzo!" ], "kg352a": [ - "You've got brass coming into our Fortress!" + "Gli Ottoni stanno entrando nella nostra Fortezza!" ], "kg353a": [ - "You won't get out of here alive!" + "Non uscirai vivo da qui!" ], "kg354a": [ - "Thanks for making this easy." + "Grazie per averlo reso facile." ], "kg355a": [ - "We're taking heavy casualties." + "Stiamo subendo pesanti perdite." ], "kg356a": [ - "He's getting in deep, stop him!" + "Sta penetrando in profondità, fermalo!" ], "kg357a": [ - "Take this guy out, that's an order!" + "Porta fuori questo tizio, è un ordine!" ], "kg358a": [ - "Send in the shock squad!" + "Invia la squadra d'assalto!" ], "kg359a": [ - "Bring in the heavy firepower!" + "Porta la pesante potenza di fuoco!" ], "kg360a": [ - "Send in the shield guards!" + "Mandate le guardie dello scudo!" ], "kg361a": [ - "I'm on him!" + "Gli sto addosso!" ], "kg362a": [ - "Let me at 'em!" + "Lasciamelo fare!" ], "kg363a": [ - "I got 'em!" + "Li ho presi!" ], "kg364a": [ - "Finish him off!" + "Finitelo!" ], "kg365a": [ - "He's moving toward the ammo room!" + "Si sta muovendo verso la stanza delle munizioni!" ], "kg366a": [ - "Intercept the intruder before he gets in too far!" + "Intercetta l'intruso prima che si avvicini troppo!" ], "kg367a": [ - "He's picking up a suspect." + "Sta arrestando un sospettato." ], "kg368a": [ - "He's got an Underground agent with him!" + "Ha un agente della metropolitana con sé!" ], "kg369a": [ - "Take 'em both out!" + "Tirateli fuori entrambi!" ], "kg370a": [ - "He's picked up another suspect." + "Ha arrestato un altro sospettato." ], "kg371a": [ - "We lost the guy he dropped off!" + "Abbiamo perso il ragazzo che ha lasciato!" ], "kg372a": [ - "He's got a passenger." + "Ha un passeggero." ], "kg373a": [ - "Driver is working with the Underground." + "L'autista sta lavorando con la metropolitana." ], "kg374a": [ - "Suspect vehicle taking damage, but still moving." + "Sospetto che il veicolo abbia subito danni, ma sia ancora in movimento." ], "kg375a": [ - "We need to cut 'em off!" + "Dobbiamo tagliarli via!" ], "kg376a": [ - "He's got another agent!" + "Ha un altro agente!" ], "kg377a": [ - "Suspect driving erratically!" + "Il sospetto guida in modo irregolare!" ], "kg378a": [ - "Suspect still evading!" + "Il sospettato continua a fuggire!" ], "kg379a": [ - "We got 'em this time!" + "Li abbiamo presi questa volta!" ], "kg380a": [ - "Suspect vehicle destroyed!" + "Veicolo sospetto distrutto!" ], "kg381a": [ - "He's going for another vehicle!" + "Sta per prendere un altro veicolo!" ], "kg382a": [ - "We took 'em out!" + "Li abbiamo fatti fuori!" ], "kg383a": [ - "He's toast!" + "È fritto!" ], "kg384a": [ - "Another win for the KG, good shooting, men." + "Un'altra vittoria per il KG, bel tiro, ragazzi." ], "kg385a": [ - "Suspect has evaded capture." + "Il sospettato è sfuggito alla cattura." ], "kg386a": [ - "Ough!" + "Bene!" ], "kg387a": [ - "Huh!" + "Eh!" ], "kg388a": [ "Arghh!" ], "kg389a": [ - "Ughh!" + "Uffa!" ], "kg390a": [ - "Hugh!" + "Uh!" ], "kg391a": [ - "Aughh!" + "Bene!" ], "kg392a": [ - "Haugh!" + "Hah!" ], "kg393a": [ - "Oof!" + "Uffa!" ], "kg394a": [ - "Hah!" + "Ah!" ], "kg395a": [ - "Ugh!" + "Uffa!" ], "kg396a": [ - "Hah!" + "Ah!" ], "kg397a": [ - "Ugh!" + "Uffa!" ], "kg398a": [ "Huff!" @@ -6217,19 +6217,19 @@ "Argh!" ], "kg400a": [ - "Hah!" + "Ah!" ], "kg401a": [ - "Huh!" + "Eh!" ], "kg402a": [ - "Huuh!" + "Eh!" ], "kg403a": [ - "Haah!" + "Ahah!" ], "kg404a": [ - "Ahh!" + "Ah!" ], "kg405a": [ "Ahh...!" @@ -6238,25 +6238,25 @@ "Arrgh!" ], "kg407a": [ - "Uargh!" + "Oh!" ], "kg408a": [ - "Ugh...!" + "Uffa...!" ], "kg409a": [ - "Ugh!" + "Uffa!" ], "kg410a": [ "Nargh!" ], "kg411a": [ - "Hah!" + "Ah!" ], "kg412a": [ - "Ugh...!" + "Uffa...!" ], "kg413a": [ - "Gah...!" + "Ah...!" ], "kg414a": [ "Ah!" @@ -6265,236 +6265,236 @@ "Argh!" ], "kg416a": [ - "Ugh...!" + "Uffa...!" ], "kg417a": [ - "Uh..." + "Ehm..." ], "kg418a": [ "Ah...!" ], "kg419a": [ - "Uugh!" + "Uffa!" ], "kg420a": [ "Ah...!" ], "kg421a": [ - "Huah...!" + "Eh...!" ], "kg422a": [ - "Agh!" + "Oddio!" ], "kg423a": [ - "Hungh...!" + "Hung...!" ], "kg424a": [ "Argh!" ], "kg425a": [ - "Ugh!" + "Uffa!" ], "kg426a": [ - "Ugh!" + "Uffa!" ], "kg427a": [ - "Ugh!" + "Uffa!" ], "kg428a": [ - "Oof!" + "Uffa!" ], "kgv001": [ - "Stop!" + "Fermare!" ], "kgv002": [ - "Open fire!" + "Apri il fuoco!" ], "kgv003": [ - "Move in!" + "Entra!" ], "kgv004": [ - "Take 'em out!" + "Portateli fuori!" ], "kgv005": [ - "Take him down!" + "Portalo giù!" ], "kgv006": [ - "Shoot 'em, shoot 'em!" + "Sparagli, sparagli!" ], "kgv007": [ - "Die, outlaw!" + "Muori, fuorilegge!" ], "kgv008": [ - "Eat this!" + "Mangia questo!" ], "kgv009": [ - "Fire, fire!" + "Fuoco fuoco!" ], "kgv010": [ - "Give it up, outlaw!" + "Arrenditi, fuorilegge!" ], "kgv011": [ - "Seal off the area!" + "Chiudete l'area." ], "kgv012": [ - "Call in reinforcements!" + "Chiama i rinforzi!" ], "kgv013": [ - "Riot in progress!" + "Rivolta in corso!" ], "kgv014": [ - "Call for backup!" + "Chiama rinforzi!" ], "kgv015": [ - "Stop the vehicle!" + "Fermare il veicolo!" ], "kgv016": [ - "You are under arrest!" + "Tu sei sotto arresto!" ], "kgv017": [ - "Pull over!" + "Fermo!" ], "kgv018": [ - "Slow down!" + "Rallentare!" ], "kgv019": [ - "Move over!" + "Spostati!" ], "kgv020": [ - "Get out of the vehicle!" + "Fuori dal veicolo!" ], "kgv021": [ - "Call in more Hellcats!" + "Chiama altri Hellcats!" ], "kgv022": [ - "Requesting backup!" + "Richiedo backup!" ], "kgv023": [ - "High speed chase in sector four!" + "Inseguimento ad alta velocità nel settore quattro!" ], "kgv024": [ - "Suspect in vehicle!" + "Sospetto nel veicolo!" ], "kgv025": [ - "Suspect fleeing into sector five." + "Il sospetto è fuggito nel settore cinque." ], "kor001": [ - "I am so proud of you Jak, and you too, Daxter!", - "Together you have done real damage to the Baron.", - "We may win this war yet!" + "Sono così orgoglioso di te Jak, e anche di te, Daxter!", + "Insieme avete causato un vero danno al Barone.", + "Potremmo anche vincere questa guerra!" ], "kor002": [ - "Excellent work, you are proving to be quite an asset.", - "Without eco, the Baron will soon topple,", - "and the city's future will be in our hands." + "Ottimo lavoro, ti stai dimostrando una vera risorsa.", + "Senza eco, il Barone presto cadrà,", + "e il futuro della città sarà nelle nostre mani." ], "kor004": [ - "Another blow to the Baron, my good friends!", - "Very soon, our fortunes will change!" + "Un altro colpo al Barone, miei buoni amici!", + "Molto presto, le nostre fortune cambieranno!" ], "krew001": [ - "Jak, this is Krew. I just talked to my racing client", - "and she told me you were pretty good with that JET-Board", - "of hers. My sources say a shipment of Krimzon Guard", - "listening equipment just arrived in the Port.", - "None of us, including the Underground, want those devices", - "up and running. It's not good for business.", - "Ride the JET-Board out into the Port", - "and destroy every Krimzon Guard crate you find.", - "There's sure to be a defense perimeter,", - "so watch out, 'ey?" + "Jak, questo è Krew. Ho appena parlato con il mio cliente delle corse", + "e mi ha detto che eri abbastanza bravo con quel JET-Board", + "di lei. Le mie fonti dicono che si tratta di un carico di Krimzon Guard", + "le apparecchiature di ascolto sono appena arrivate al porto.", + "Nessuno di noi, compresa la metropolitana, vuole quei dispositivi", + "installato e funzionante. Non va bene per gli affari.", + "Sali sul JET-Board fino al porto", + "e distruggi tutte le casse della Guardia Krimzon che trovi.", + "Ci sarà sicuramente un perimetro di difesa,", + "quindi fai attenzione, ehi?" ], "krew002": [ - "Excellent work, Jak. Even I am impressed.", - "I should keep unscrupulous Krimzon Guards", - "out of our business.", - "What's the world coming to when you can't buy off", - "a few guards with bribes?" + "Ottimo lavoro, Jak. Anche io sono impressionato.", + "Dovrei mantenere delle guardie Krimzon senza scrupoli", + "fuori dalla nostra attività.", + "A cosa va il mondo se non puoi riscattare?", + "qualche guardia con tangenti?" ], "krew003": [ - "Ooooh... the bedtime stories were true!", - "The fabled Heart of Mar was hidden inside that ugly statue", - "of the old boy.", - "Nothing fractured, nothing gained! That's my motto. Hahaha...", - "For your loyalty, you'll find an excellent gun upgrade", - "stashed in a crate in the Port." + "Ooooh... le favole della buonanotte erano vere!", + "Il leggendario Cuore di Mar era nascosto dentro quella brutta statua", + "del vecchio ragazzo.", + "Niente di rotto, niente di guadagnato! Questo è il mio motto. Hahaha...", + "Per la tua fedeltà troverai un eccellente potenziamento per la pistola", + "nascosto in una cassa nel porto." ], "krew004": [ - "That's one turret down. Keep looking!" + "Quella è una torretta sotto. Continuare a cercare!" ], "krew005": [ - "Two turrets. Good work so far!" + "Due torrette. Buon lavoro finora!" ], "krew006": [ - "Three turrets gone. Nice! Keep it up!" + "Tre torrette sparite. Bene! Continuate così!" ], "krew007": [ - "Four turrets trashed. Haha... Lovely, boys! Go get 'em!" + "Quattro torrette distrutte. Haha... Adorabile, ragazzi! Vai a prenderli!" ], "krew008": [ - "Five turrets down the drain! Keep going." + "Cinque torrette in malora! Continuare." ], "krew009": [ - "Six turrets out of commission.", - "Hah, I like the way you work." + "Sei torrette fuori servizio.", + "Ah, mi piace il modo in cui lavori." ], "krew010": [ - "Brass work, boys! You destroyed all the turrets, eh?", - "Now, come back to the Hip Hog." + "Lavori in ottone, ragazzi! Hai distrutto tutte le torrette, eh?", + "Ora torna all'Hip Hog." ], "kwbf001": [ - "You know I can't play fair!", - "I have a secret weapon: my duplicity field!", - "Say hello to my little friends...", - "Ah, multiple me! Hahahaha... How delightful." + "Lo sai che non posso giocare onestamente!", + "Ho un'arma segreta: il mio campo di duplicità!", + "Salutate i miei piccoli amici...", + "Ah, moltiplicami! Ahahahah... Che delizia." ], "kwbf002": [ - "Let me introduce you to my... \"crew.\"" + "Vorrei presentarvi il mio... \"equipaggio\"." ], "kwbf003": [ - "Let's dance!" + "Balliamo!" ], "kwbf004": [ - "You will die!" + "Morirai!" ], "kwbf005": [ - "Here we come!" + "Arriviamo!" ], "kwbf006": [ - "My, don't my twins look stunning?" + "Mamma mia, non sono stupendi i miei gemelli?" ], "kwbf007": [ - "You can't stop us all!" + "Non puoi fermarci tutti!" ], "kwbf008": [ - "Surprise! More of me than you can handle." + "Sorpresa! Più di me di quanto tu possa gestire." ], "kwbf009": [ - "I've a few good men to help me." + "Ho alcuni bravi uomini che mi aiutano." ], "kwbf010": [ - "Get him!" + "Prendilo!" ], "kwbf011": [ - "UARGH! Try stopping me now!" + "UARGH! Prova a fermarmi adesso!" ], "kwbf012": [ - "You're getting lucky so far, 'ey?" + "Finora sei stato fortunato, eh?" ], "kwbf013": [ - "I grow weary of this. We end it now." + "Mi sto stancando di tutto questo. La finiamo adesso." ], "kwbf014": [ - "Hm-hm, I move pretty fast for a big man, 'ey?" + "Hm-hm, mi muovo abbastanza velocemente per essere un omone, eh?" ], "kwbf015": [ - "I float like a butterfly and sting like a wumpbee!" + "Galleggio come una farfalla e pungo come un wumpbee!" ], "kwbf016": [ - "Urghh!" + "Urgh!" ], "kwbf017": [ - "Aurgh!" + "Argh!" ], "kwbf018": [ "Arghh!" @@ -6506,1350 +6506,1352 @@ "Urgh, ow!" ], "kwbf021": [ - "Die!" + "Morire!" ], "kwbf022": [ - "Now I have you!" + "Ora ho te!" ], "kwbf023": [ - "You cannot win, Jak!" + "Non puoi vincere, Jak!" ], "kwbf024": [ - "Here's some pain!" + "Ecco un po' di dolore!" ], "kwbf025": [ - "No!" + "NO!" ], "kwbf026": [ - "You're trying my patience!" + "Stai mettendo a dura prova la mia pazienza!" ], "kwbf027": [ - "Stand still!" + "Stai fermo!" ], "kwbf028": [ - "Haha, how did that feel?" + "Ahah, come ti sei sentito?" ], "kwbf029": [ - "You should have walked away when you had a chance." + "Avresti dovuto andartene quando ne avevi la possibilità." ], "kwbf030": [ - "Pop this!" + "Pop questo!" ], "kwbf031": [ - "You can't stop the bomb, Jak!" + "Non puoi fermare la bomba, Jak!" ], "kwbf032": [ - "Hahahaha, that felt good!" + "Ahahahah, è stato bello!" ], "kwbf033": [ - "I am the weapon master!" + "Sono il maestro d'armi!" ], "kwbf034": [ - "Had enough?" + "Aveva abbastanza?" ], "kwbf035": [ - "Here we come!" + "Arriviamo!" ], "kwbf036": [ - "Dance for me, Jak!" + "Balla per me, Jak!" ], "kwbf037": [ - "You can't get us all!" + "Non puoi prenderci tutti!" ], "kwbf038": [ - "Tag! You're it." + "Etichetta! Lo sei." ], "kwbf039": [ - "Phew. This is a bit of a workout..." + "Uff. Questo è un po' un allenamento..." ], "kwbf040": [ - "Which is the real me, Jak?" + "Qual è il vero me, Jak?" ], "kwbf041": [ - "Finally... I get to put you in your place!" + "Finalmente... posso rimetterti al tuo posto!" ], "kwbf042": [ - "Arghh! You little...!" + "Arghh! Tu piccolo...!" ], "ora006": [ - "Bring me 200 more Metal Head Skull Gems", - "and I will show you another Dark Power." + "Portami altre 200 gemme di teschio di testa di metallo", + "e ti mostrerò un altro Potere Oscuro." ], "ora007": [ - "Bring me 200 more Skull Gems", - "and another power will be yours to control." + "Portami altre 200 gemme del teschio", + "e un altro potere sarà tuo da controllare." ], "ora008": [ - "Bring me more Skull Gems to receive control", - "over a Dark Power." + "Portami altre gemme del teschio per ricevere il controllo", + "sopra un potere oscuro." ], "ora009": [ - "You do not have enough Skull Gems.", - "Come back when you have collected more." + "Non hai abbastanza gemme del teschio.", + "Torna quando ne avrai raccolti di più." ], "ora010": [ - "I need more Skull Gems." + "Mi servono più gemme del teschio." ], "ora011": [ - "Trust not your reliance on weapons." + "Non fidarti della tua dipendenza dalle armi." ], "ora012": [ - "Use only your body and brain for this challenge." + "Usa solo il tuo corpo e il tuo cervello per questa sfida." ], "ora013": [ - "Weapons are for the weak." + "Le armi sono per i deboli." ], "ora014": [ - "You must not use weapons in this challenge." + "Non devi usare armi in questa sfida." ], "pek001": [ - "Groark! I can't believe you actually did this thing!", - "Onin says she will search timelines for answers", - "about these sacred relics. I will find you then." + "Groark! Non posso credere che tu abbia fatto davvero questa cosa!", + "Onin dice che cercherà risposte nelle sequenze temporali", + "su queste sacre reliquie. Ti troverò allora." ], "pek002": [ - "Groark! Whoa... well I'll be a moncaw's uncle, the Light Tower", - "actually does exist! The beam of light is shining somewhere", - "in the city! The Tomb of Mar was right under our noses", - "all along. And thanks to me, you found it!" + "Groark! Whoa... beh sarò lo zio di Moncaw, la Torre della Luce", + "esiste davvero! Il raggio di luce splende da qualche parte", + "in città! La Tomba di Mar era proprio sotto il nostro naso", + "da sempre. E grazie a me l'hai trovato!" ], "pek003": [ - "Wow! As I live and molt, one step closer to the Tomb.", - "I never thought we'd get this far!" + "Oh! Mentre vivo e muoio, un passo più vicino alla Tomba.", + "Non avrei mai pensato che saremmo arrivati ​​a questo punto!" ], "pek010": [ - "This is Onin's magic bowl.", - "Onin will make symbols appear from her bowl.", - "When the symbols appear, you must pop them before they", - "reach the ground. You must pop them quickly, pop only", - "the symbols you see. If you try to pop a symbol that is", - "not there, Onin will give you a penalty! Miss any symbols", - "and you will penalized! Each round will get faster.", - "Let's see how far you get.", - "You must get a high enough score to win." + "Questa è la ciotola magica di Onin.", + "Onin farà apparire dei simboli dalla sua ciotola.", + "Quando compaiono i simboli, devi farli scoppiare prima che", + "raggiungere il suolo. Devi farli scoppiare velocemente, solo scoppiarli", + "i simboli che vedi. Se provi a far apparire un simbolo, lo è", + "non c'è, Onin ti darà un rigore! Perdere qualsiasi simbolo", + "e sarai penalizzato! Ogni round diventerà più veloce.", + "Vediamo quanto lontano arrivi.", + "È necessario ottenere un punteggio sufficientemente alto per vincere." ], "pek011": [ - "You are doing very well!" + "Stai andando molto bene!" ], "pek012": [ - "Huh, not bad." + "Eh, non male." ], "pek013": [ - "Keep going, you can do it!" + "Continua così, puoi farcela!" ], "pek014": [ - "Pop any more than the true number of each symbol,", - "and you will be penalized! Groark!" + "Fai scoppiare non più del numero reale di ciascun simbolo,", + "e sarai penalizzato! Groark!" ], "pek015": [ - "Ready? Go!" + "Pronto? Andare!" ], "pek016": [ - "That symbol wasn't there, penalty!" + "Quel simbolo non c'era, rigore!" ], "pek017": [ - "Hah, Onin got you! Pop only symbols that you see." + "Ah, Onin ti ha preso! Pop solo i simboli che vedi." ], "pek018": [ - "Here comes another round!", - "Give him another burst, Onin girl!" + "Ecco un altro giro!", + "Dagli un'altra raffica, ragazza Onin!" ], "pek019": [ - "She got you again! What is your problem?" + "Ti ha preso di nuovo! Qual è il tuo problema?" ], "pek020": [ - "I can't believe you've made it this far!" + "Non posso credere che tu sia arrivato fin qui!" ], "pek021": [ - "Quickly! You are missing symbols!" + "Presto! Mancano dei simboli!" ], "pek022": [ - "You missed some!" + "Ne hai saltato qualcuno!" ], "pek023": [ - "Faster! Faster!" + "Più veloce! Più veloce!" ], "pek024": [ - "Give it to him, Onin! More, Onin, more!", - "You go, girl, shake what your momma gave you!" + "Dammelo, Onin! Di più, Onin, di più!", + "Vai, ragazza, scuoti quello che ti ha dato tua mamma!" ], "pek025": [ - "Rockin' in the club." + "Mi diverto nel club." ], "pek026": [ - "He can't do that many!" + "Non può farne così tanti!" ], "pek027": [ - "What? He's still going?" + "Che cosa? Ci va ancora?" ], "pek028": [ - "Let's see if he can handle it." + "Vediamo se riesce a gestirlo." ], "pek029": [ - "Go! Come on!" + "Forza! Forza!" ], "pek030": [ - "Okay, so you're good." + "Ok, quindi sei a posto." ], "pek031": [ - "Wow! Not bad." + "Wow! Niente male." ], "pek032": [ - "Well, I laid an egg." + "Ebbene, ho deposto un uovo." ], "pek033": [ - "Amazing! You actually won!", - "I am without words, and that is rare." + "Sorprendente! Hai vinto davvero!", + "Sono senza parole, e questo è raro." ], "pek034": [ - "You got enough points, congratulations!" + "Hai abbastanza punti, congratulazioni!" ], "pek035": [ - "Last penalty! You lose, loser." + "Ultimo rigore! Perdi, perdente." ], "pek036": [ - "You lost! Why am I not surprised?" + "Hai perso! Perché non sono sorpreso?" ], "pek037": [ - "You lose! Would you like to try again?" + "Hai perso! Vuoi riprovare?" ], "pek038": [ - "Ahh, you laid an egg. Too bad, so sad." + "Ahh, hai deposto un uovo. Peccato, così triste." ], "pek039": [ - "Oooh, so close... not! Hehehe..." + "Oooh, così vicino... no! Eheheh..." ], "pek040": [ - "You made a valiant effort, but you suck!" + "Hai fatto uno sforzo coraggioso, ma fai schifo!" ], "pek041": [ - "Game over, finito, done, se acabó!" + "Game over, finito, fatto, è finita!" ], "prop002": [ - "As you all know, I was wounded during our last", - "glorious assault against the Metal Head Nest", - "many years ago. I have sacrificed everything", - "for this city and I demand only the same in return!", - "Loyalty will be rewarded,", - "death will await all others." + "Come tutti sapete, sono stato ferito durante l'ultima volta", + "glorioso assalto contro il Metal Head Nest", + "molti anni fa. Ho sacrificato tutto", + "per questa città e pretendo solo lo stesso in cambio!", + "La fedeltà sarà premiata,", + "la morte attenderà tutti gli altri." ], "prop003": [ - "The Dark Eco inside you will eventually kill you, Jak.", - "Its destructive effects cannot be stopped.", - "Once you are in its chaotic grip, it will not let you go", - "until you slide into insanity. Turn yourself in, and I will", - "kill you mercifully and painlessly,", - "it is your only way out." + "L'Eco Oscuro dentro di te alla fine ti ucciderà, Jak.", + "I suoi effetti distruttivi non possono essere fermati.", + "Una volta che sei nella sua presa caotica, non ti lascerà andare", + "finché non scivoli nella follia. Consegnati, e io", + "ucciderti misericordiosamente e senza dolore,", + "è la tua unica via d'uscita." ], "prop004": [ - "Don't try to make a fool out of me, Jak.", - "Just because I haven't killed you yet doesn't", - "mean I'm not onto you. The citizens of this city", - "worship me because I offer them safety.", - "All I ask in return is for their lives.", - "I'll find you, and when I do, you'll wish", - "you died in prison." + "Non cercare di prendermi in giro, Jak.", + "Solo perché non ti ho ancora ucciso, non è così", + "significa che non ti capisco. I cittadini di questa città", + "adorami perché offro loro sicurezza.", + "Tutto ciò che chiedo in cambio è per le loro vite.", + "Ti troverò e, quando lo farò, desidererai", + "sei morto in prigione." ], "prop005": [ - "Attention, my loyal citizens! We are looking for a", - "rebel fugitive who has caused the city considerable", - "damage of late. This man is armed and extremely", - "dangerous and can somehow change into a monstrous", - "creature. We have reports he is working with the", - "Metal Heads to subvert your city and your safety.", - "Report all sightings immediately!" + "Attenzione, miei fedeli cittadini! Cerchiamo a", + "fuggitivo ribelle che ha causato notevoli danni alla città", + "danni di recente. Quest'uomo è armato ed estremamente", + "pericoloso e può in qualche modo trasformarsi in un mostruoso", + "creatura. Abbiamo rapporti che sta lavorando con", + "Metal Heads per sovvertire la tua città e la tua sicurezza.", + "Segnala immediatamente tutti gli avvistamenti!" ], "prop006": [ - "Brave citizens, today is the anniversary of the great", - "battle that ruined our city section we now call", - "Dead Town. Remember those who died", - "that day and how much we owe the Metal Heads", - "for their treachery! Remember how bravely I fought", - "to save those poor souls of the overrun section", - "and reflect on how grateful you should all be that the", - "Krimzon Guard keeps you safe each day." + "Cittadini coraggiosi, oggi è l'anniversario dei grandi", + "battaglia che ha rovinato la sezione della nostra città che ora chiamiamo", + "Città morta. Ricorda coloro che sono morti", + "quel giorno e quanto dobbiamo ai Metal Heads", + "per il loro tradimento! Ricorda quanto coraggiosamente ho combattuto", + "per salvare quelle povere anime della sezione invasa", + "e riflettete su quanto dovreste essere grati per questo", + "Krimzon Guard ti tiene al sicuro ogni giorno." ], "prop007": [ - "This is your Baron. The reports of a Metal Head", - "invasion of the city are vastly overblown.", - "I assure you this is but a small incursion and we will", - "defeat it shortly. Stay in your homes, do not panic,", - "or you will be punished!" + "Questo è il tuo Barone. I resoconti di un Metal Head", + "invasione della città sono ampiamente esagerate.", + "Ti assicuro che questa non è che una piccola incursione e la faremo", + "sconfiggerlo in breve tempo. Restate nelle vostre case, niente panico,", + "o sarai punito!" ], "prop008": [ - "Attention citizens, this is your Baron speaking.", - "There have been several unauthorized uses of the", - "city's old gate locks. Fortunately, these breaches", - "have not resulted in contamination, but we all know", - "how deadly the Wasteland is. No one is allowed", - "outside the city without authorization, let it be", - "known that any violators will be caught", - "and executed." + "Attenzione cittadini, qui è il vostro Barone.", + "Ci sono stati diversi usi non autorizzati di", + "le vecchie serrature delle porte della città. Fortunatamente, queste violazioni", + "non hanno provocato contaminazioni, ma lo sappiamo tutti", + "quanto è mortale la Zona Contaminata. A nessuno è permesso", + "fuori città senza autorizzazione, lasciamo stare", + "noto che eventuali trasgressori verranno catturati", + "ed eseguito." ], "prop009": [ - "Serve your city." + "Servi la tua città." ], "prop010": [ - "Sacrifice for your city, and all will prosper!" + "Sacrificatevi per la vostra città e tutto prospererà!" ], "prop011": [ - "You are safe, because I care." + "Sei al sicuro, perché mi importa." ], "prop012": [ - "All Metal Heads must die!" + "Tutti i Metal Head devono morire!" ], "prop013": [ - "Work hard, and be grateful." + "Lavora duro e sii grato." ], "prop014": [ - "Report all wrongdoers." + "Denuncia i disonesti." ], "prop015": [ - "Remember, even your friends could be enemies." + "Ricorda, anche i tuoi amici possono essere i tuoi nemici." ], "prop016": [ - "Turn in all who subvert." + "Consegnate tutti coloro che sovvertono." ], "prop017": [ - "Strength is our only option!" + "La forza è la nostra unica opzione!" ], "prop018": [ - "Obey and be happy." + "Obbedisci e sii felice." ], "prop019": [ - "Sacrifice is something you should do", - "for your city." + "Il sacrificio è una cosa che devi fare", + "per la tua città." ], "prop020": [ - "Sacrifice for your city." + "Sacrificati per la tua città." ], "prop021": [ - "Remember, even friends might be enemies." + "Ricorda, anche gli amici possono essere nemici." ], "prop022": [ - "The city needs your sacrifice." + "La città ha bisogno del tuo sacrificio." ], "prop023": [ - "It is better inside the walls!" + "Dentro le mura è meglio!" ], "prop024": [ - "The law will show no mercy." + "La legge non deve avere pietà." ], "prop025": [ - "Justice is swift." + "La giustizia è rapida." ], "prop026": [ - "The Underground movement is dead!" + "Il movimento mondo sotterrano è morto!" ], "prop027": [ - "Join the Krimzon Guard and your family", - "will be allowed to stay." + "Unisciti alla Guardia Krimzon e alla tua famiglia", + "gli sarà permesso di restare." ], "prop028": [ - "One way: My way." + "Una via: La mia via." ], "prop029": [ - "To lead is to control." + "Comandare è controllare." ], "prop030": [ - "Give up your freedom and I will protect you." + "Rinuncia alla tua libertà e io ti proteggerò." ], "prop031": [ - "Have faith in me and the Promised Land is yours." + "Abbiate fede in me e la Terra Promessa sarà vostra." ], "prop032": [ - "Your city needs a strong leader, not a childish fool." + "La città ha bisogno di un capo forte, non di un giovane folle." ], "prop033": [ - "Welcome not the unknown face." + "Non accogliere il volto sconosciuto." ], "prop034": [ - "Shun those who would defy me!" + "Evitate chi mi sfida!" ], "prop035": [ - "I am the face of Haven City." + "Io sono il volto di Città Rifugio." ], "prop036": [ - "Without my strength, there would be no city." + "Senza la mia forza, non ci sarebbe nessuna città." ], "prop037": [ - "Follow me to a safer future!" + "Seguitemi verso un futuro più sicuro!" ], "prop038": [ - "You are safe inside the walls with me." + "Con me sei al sicuro tra le mura." ], "prop039": [ - "Defy... and die." + "Sfidami... e muori." ], "prop040": [ - "Welcome to Haven City!", - "All laws are enforced for your safety.", - "Obey me and you will not be punished." + "Benvenuti a Città Rifugio.", + "Tutte le leggi sono in vigore per la vostra sicurezza.", + "Obbeditemi e non sarete puniti." ], "prop041": [ - "The city is safe. I will not allow harm", - "to befall you, trust me." + "La città è sicura. Non permetterò che ci siano danni", + "che ti accada, fidati di me." ], "prop042": [ - "Rest assured, I will destroy the Metal Heads.", - "One way or another." + "State sicuri, distruggerò le Teste di Metallo.", + "In un modo o nell'altro." ], "prop043": [ - "To all citizens, this puny Underground revolt", - "will be dealt with by all aggressive means.", - "We will crush these arrogant upstarts, they will not", - "be allowed to threaten me or this city's order!" + "A tutti i cittadini, questa piccola rivolta clandestina", + "sarà affrontato con tutti i mezzi aggressivi.", + "Noi schiacceremo questi arroganti arrivati, ma loro non lo faranno", + "non ti è permesso minacciare me o l'ordine di questa città!" ], "prop044": [ - "To all citizens of this great city, there is a monster", - "among you, masquerading as a man!", - "He is dangerous and must be destroyed!", - "I offer a reward of eco for his capture, or, if you", - "have a loved one in prison, I will exchange them for", - "this renegade. I promise." + "Per tutti i cittadini di questa grande città, c'è un mostro", + "in mezzo a voi, mascherato da uomo!", + "È pericoloso e deve essere distrutto!", + "Offro una ricompensa in eco per la sua cattura, o, se tu", + "ho una persona cara in prigione, la scambierò con", + "questo rinnegato. Lo prometto." ], "prop045": [ - "To all who defy me! I am watching you,", - "I am everywhere, I am this city!" + "A tutti coloro che mi sfidano! Ti sto guardando,", + "Sono ovunque, sono questa città!" ], "prop046": [ - "This is your Baron. I have been informed by the", - "ministry of extreme labor that worker productivity is", - "down this month! That is unacceptable!", - "I give you safety and this is how you repay me?", - "You must work harder, not smarter!", - "Free the mind and the body will do as it's told,", - "forced labor will set you free!", - "And to help you in your spiritual motivation...", - "quotas are doubled next month!" + "Questo è il tuo Barone. Sono stato informato dal", + "ministero del lavoro estremo che è la produttività dei lavoratori", + "giù questo mese! Questo è inaccettabile!", + "Ti do sicurezza e tu mi ripaghi così?", + "Devi lavorare di più, non in modo più intelligente!", + "Libera la mente e il corpo farà come gli viene detto,", + "il lavoro forzato ti renderà libero!", + "E per aiutarti nella tua motivazione spirituale...", + "le quote saranno raddoppiate il prossimo mese!" ], "prop047": [ - "Due to recent, uh... \"attrition\" difficulties,", - "this city needs fresh Krimzon Guard recruits!", - "Everyone is asked to volunteer members of their family!", - "Come down to your friendly Fortress facility.", - "Or else!" + "A causa delle recenti, ehm... difficoltà di \"attrito\",", + "questa città ha bisogno di nuove reclute della Guardia Krimzon!", + "A tutti è chiesto di offrire volontariato ai membri della propria famiglia!", + "Vieni nella tua amichevole struttura della Fortezza.", + "O altro!" ], "prop048": [ - "As your Baron, I am instituting a \"no hoverboard\" rule", - "in the city! Young delinquents with nothing better", - "to do than float around and do tricks! Huh!", - "I'll put all violators into the Guard and teach them", - "some discipline. No skating, it's the law!" + "Come vostro Barone, sto istituendo una regola \"niente hoverboard\".", + "nella città! Giovani delinquenti con niente di meglio", + "altro da fare che fluttuare e fare acrobazie! Eh!", + "Metterò tutti i trasgressori nella Guardia e insegnerò loro", + "un po' di disciplina. Niente pattinaggio, è la legge!" ], "prop049": [ - "I am disappointed with this city's lack of", - "committment and sacrifice. Work harder! Eat less!", - "Drink only when I tell you! Sleep is optional.", - "We are at war with an outside threat,", - "don't make me declare war on you as well!" + "Sono deluso dalla mancanza di questa città", + "impegno e sacrificio. Lavora di più! Mangia meno!", + "Bevi solo quando te lo dico io! Il sonno è facoltativo.", + "Siamo in guerra con una minaccia esterna,", + "non costringermi a dichiarare guerra anche a te!" ], "prop050": [ - "Greetings, people of this wonderful utopia. This year's", - "championship race will begin shortly. All citizens", - "not under house arrest are invited to come down to", - "the Stadium and watch your favorite son Erol", - "once again show how the Krimzon Guard are the elite", - "warriors of this city. Bring the whole family! The first", - "one thousand children will get a mandatory", - "Krimzon Guard recruitment package and be", - "\"asked\" to join the Guard for life, what a treat!" + "Saluti, popolo di questa meravigliosa utopia. Quest'anno", + "La gara di campionato inizierà a breve. Tutti i cittadini", + "non agli arresti domiciliari sono invitati a recarsi", + "allo Stadio e guarda il tuo figlio preferito Erol", + "mostra ancora una volta come la Guardia Krimzon sia l'élite", + "guerrieri di questa città. Portate tutta la famiglia! Il primo", + "mille bambini avranno l'obbligatorietà", + "Pacchetto di reclutamento della Guardia Krimzon e diventa", + "\"ha chiesto\" di entrare nella Guardia a vita, che meraviglia!" ], "prop051": [ - "This is your Baron, I am still in control!", - "And I assure you, there's absolutely no Metal Heads", - "in the city. Anyone who contradicts this fact...", - "will be shot! The current situation is merely", - "an elaborate propaganda hoax, perpetrated by", - "the outlawed Underground militia trying to", - "subvert our laws and discredit those who protect you", - "while you sleep! Pay no attention to this foolish hoax,", - "there are no Metal Heads within 100 miles of this city!" + "Questo è il tuo Barone, ho ancora il controllo!", + "E ti assicuro che non esistono assolutamente i Metal Head", + "nella città. Chiunque contraddica questo fatto...", + "verrà fucilato! La situazione attuale è semplicemente", + "un'elaborata bufala propagandistica, perpetrata da", + "la milizia clandestina fuorilegge ci sta provando", + "sovvertite le nostre leggi e screditate coloro che vi proteggono", + "Mentre dormi! Non prestare attenzione a questa stupida bufala,", + "non ci sono Metal Head nel raggio di 100 miglia da questa città!" ], "prop052": [ - "This is Baron Praxis. We have taken back the city", - "and the Metal Heads are now fleeing before us!", - "Victory is at hand! Continue to fight for the freedom", - "I may some day give you. Continue to defy these", - "enemies of my law and order...", - "and continue to die for me." + "Questo è il Barone Praxis. Ci siamo ripresi la città", + "e i Metal Heads ora stanno fuggendo davanti a noi!", + "La vittoria è a portata di mano! Continua a lottare per la libertà", + "Un giorno potrei dartelo. Continua a sfidarli", + "nemici della mia legge e del mio ordine...", + "e continua a morire per me." ], "prop053": [ - "Fear not the men in red. Sure, there are occasional", - "complaints about their over-aggressive policing,", - "wanton destruction of people's property during raids,", - "mass-arrests, misplaced loved ones and whatnot.", - "Hey, we're only human! Running a city can be", - "tougher than it looks, imagine how much worse", - "it would be if the Metal Heads were in charge!" + "Non temere gli uomini in rosso. Certo, ce ne sono occasionali", + "denunce per la loro polizia eccessivamente aggressiva,", + "distruzione sfrenata delle proprietà delle persone durante le incursioni,", + "arresti di massa, persone care smarrite e quant'altro.", + "Ehi, siamo solo umani! Gestire una città può esserlo", + "più dura di quanto sembri, immagina quanto peggio", + "lo sarebbe se al comando ci fossero i Metal Heads!" ], "prop054": [ - "We've had a few incidents with our lower class labor", - "force lately. If your Lurker is acting up, call Krimzon", - "Animal Control. Is your Lurker in a tree? Stuck in a", - "sewer grate? Foaming at the mouth? Call", - "the friendly officers of the K.A.C. and they will deal", - "with your furry slave. with all the love and care it", - "deserves... then haul it away for reconditioning.", - "Remember, Lurkers can be dangerous!" + "Abbiamo avuto alcuni incidenti con la manodopera delle classi inferiori", + "forza ultimamente. Se il tuo Lurker si comporta male, chiama Krimzon", + "Controllo degli animali. Il tuo Lurker è su un albero? Bloccato in a", + "griglia fognaria? Schiuma alla bocca? Chiamata", + "gli ufficiali amichevoli del K.A.C. e si occuperanno", + "con il tuo schiavo peloso. con tutto l'amore e la cura", + "merita... poi portatelo via per il ricondizionamento.", + "Ricorda, i Lurker possono essere pericolosi!" ], "prop055": [ - "Please give generously to the Baron eco fund.", - "Your munificent donation wil be used for a variety", - "of humanitarian needs: bombs, guns, armor, genetic", - "alteration research, all in the name of preserving this", - "wonderful city of ours. Give often, give freely...", - "or it will be taken from you!" + "Per favore donate generosamente al fondo eco del Barone.", + "La tua munifica donazione verrà utilizzata per una varietà di scopi", + "dei bisogni umanitari: bombe, armi da fuoco, armature, genetica", + "ricerca di alterazione, tutto in nome della preservazione di questo", + "la nostra meravigliosa città. Dona spesso, dona liberamente...", + "o ti sarà portato via!" ], "prop056": [ - "It can be so lonely at the top and looking down from", - "up here I can see that this dirty city is in desperate", - "need of revitalization. So, to that end, we", - "will be bulldozing many sections of the city in the", - "coming weeks! All complaints against this", - "construction initiative can be brought,", - "in-person, to the Fortress Prison where they will be", - "\"reviewed.\" Condemned city sections are to", - "be evacuated before razing begins.", - "Anyone still in their homes will be ignored." + "Può essere così solitario in cima e guardare dall'alto", + "quassù vedo che questa sporca città è disperata", + "bisogno di rivitalizzazione. Quindi, a tal fine, noi", + "demoliranno con i bulldozer molte zone della città nel", + "prossime settimane! Tutte le denunce contro questo", + "l'iniziativa di costruzione può essere portata,", + "di persona, alla prigione della Fortezza dove saranno", + "\"rivisto.\" Le sezioni della città condannate devono essere", + "essere evacuati prima che inizi la rasatura.", + "Chiunque sia ancora nelle proprie case verrà ignorato." ], "prop057": [ - "The Metal Head attack will not succeed!", - "Your Baron has taken certain measures", - "to guarantee that the Metal Heads will NEVER hold", - "this city for long. Rest assured, I will snatch victory", - "from the jaws of defeat, whatever the cost!", - "I vowed never to let this city fall, and I intend to keep", - "that promise. What must happen is for the good of all!", - "Remember, to die in victory is a glorious", - "badge of honor!" + "L'attacco di Metal Head non avrà successo!", + "Il vostro Barone ha preso alcune misure", + "per garantire che i Metal Head non reggeranno MAI", + "questa città per molto tempo. State tranquilli, conquisterò la vittoria", + "dalle fauci della sconfitta, costi quel che costi!", + "Ho giurato di non lasciare mai che questa città cadesse e intendo mantenerla", + "quella promessa. Ciò che deve accadere è per il bene di tutti!", + "Ricorda, morire vittoriosi è glorioso", + "distintivo d'onore!" ], "prop058": [ - "This is Baron Praxis. As our city faces its worst threat", - "in three hundred years, I am faced with serious", - "decisions concerning our future. I regret that I have", - "few choices left. I command you all to return to your", - "homes and say goodbye to your families.", - "Be assured, we will not lose this fight, one way", - "or another! The time has come to show these creatures", - "what we're capable of when all hope is lost!", - "It has been a pleasure ruling over you", - "to the end." + "Questo è il Barone Praxis. Mentre la nostra città affronta la sua peggiore minaccia", + "in trecento anni mi trovo di fronte a cose serie", + "decisioni riguardanti il ​​nostro futuro. Mi dispiace di averlo fatto", + "restano poche scelte. Comando a tutti voi di ritornare al vostro", + "case e salutate le vostre famiglie.", + "Siate certi che, in un modo o nell'altro, non perderemo questa battaglia", + "oppure un'altra! È giunto il momento di mostrare queste creature", + "di cosa siamo capaci quando ogni speranza è perduta!", + "È stato un piacere governare su di te", + "all'estremità." ], "sam001": [ - "This is Samos. Jak, I need you to go out to the ruins", - "in Dead Town and visit my old hut. It's now time to retrieve", - "something I hid there long ago, good luck! And Daxter...", - "clean up my place while you're out there!" + "Questa è Samo. Jak, ho bisogno che tu vada alle rovine", + "a Dead Town e visita la mia vecchia capanna. È ora di recuperare", + "qualcosa che ho nascosto lì tanto tempo fa, buona fortuna! E Daxter...", + "pulisci casa mia mentre sei là fuori!" ], "sam002": [ - "This is Samos. Now that you boys are here", - "I want you to get up to my old hut. There is something there", - "that we need! Good luck, and watch our for Metal Heads." + "Questa è Samo. Ora che voi ragazzi siete qui", + "Voglio che tu vada alla mia vecchia capanna. C'è qualcosa lì", + "di cui abbiamo bisogno! Buona fortuna e tieni d'occhio il nostro Metal Heads." ], "sam003": [ - "This is Samos, Jak. the Metal Heads must have taken", - "the giant gate ring to their Nest in the Wasteland.", - "If they're ever going to use that ring to open a rift back", - "to our old village, we need to get into the Nest and find it." + "Questo è Samos, Jak. devono aver preso i Metal Heads", + "il gigantesco cancello che porta al loro Nido nella Terra Desolata.", + "Se mai useranno quell'anello per aprire una spaccatura", + "al nostro vecchio villaggio, dobbiamo entrare nel Nido e trovarlo." ], "sam004": [ - "You did well, Jak. Luckily, the Precursor Stone wasn't in that", - "bomb when it went off or none of us would be here", - "right now. Come back to the race garage", - "as soon as you can." + "Hai fatto bene, Jak. Fortunatamente, la Pietra Precursore non c'era", + "bomba quando è esplosa, altrimenti nessuno di noi sarebbe stato qui", + "Proprio adesso. Torna al garage della gara", + "appena puoi." ], "sam005": [ - "Good work so far, boys!", - "Find Young Samos and give him the Life Seed." + "Buon lavoro finora, ragazzi!", + "Trova il giovane Samos e dagli il seme della vita." ], "sam006": [ - "Finally, you got here! Find the Lurker Totem", - "and retrieve a piece of the Seal of Mar on its top." + "Finalmente sei arrivato qui! Trova il Totem dell'Assaltatore", + "e recupera un pezzo del Sigillo di Mar sulla sua sommità." ], "sam007": [ - "You've got to get the boy safely to the Power Station, Jak!" + "Devi portare il ragazzo sano e salvo alla centrale elettrica, Jak!" ], "sam008": [ - "Thank you for protecting us, Jak.", - "We'll meet you at the Nest." + "Grazie per averci protetto, Jak.", + "Ci vediamo al Nest." ], "sigc001": [ - "Hold on there, we need to teach you how to use this baby!" + "Aspetta un attimo, dobbiamo insegnarti come usare questa meraviglia!" ], "sigc002": [ - "The Scatter Gun is a good short-range weapon", - "with a wide field of fire." + "La Scatter Gun è una buona arma a corto raggio", + "con un ampio campo di fuoco." ], "sigc003": [ - "To fire the weapon, press the trigger." + "Per sparare con l'arma, premi il grilletto." ], "sigc004": [ - "Good! Some kick, huh?" + "Bene! Qualche calcio, eh?" ], "sigc005": [ - "It's not the fastest firing weapon in the world, though." + "Tuttavia, non è l'arma che spara più velocemente al mondo." ], "sigc006": [ - "You can put your weapon away or pull it out at anytime." + "Puoi riporre l'arma o estrarla in qualsiasi momento." ], "sigc007": [ - "Try putting the weapon away." + "Prova a mettere via l'arma." ], "sigc008": [ - "Easy, huh?" + "Facile, eh?" ], "sigc009": [ - "Now take the weapon back out." + "Ora tira fuori l'arma." ], "sigc010": [ - "Good!" + "Bene!" ], "sigc011": [ - "You can find red ammo inside Krimzon Guard crates." + "Puoi trovare munizioni rosse all'interno delle casse della Guardia Krimzon." ], "sigc012": [ - "Shoot the crates." + "Spara alle casse." ], "sigc013": [ - "Great, now you're ready!" + "Ottimo, ora sei pronto!" ], "sigc014": [ - "Want to try the Scatter Gun course?" + "Vuoi provare il corso Scatter Gun?" ], "sigc015": [ - "The blaster is a good all-around choice", - "with a nice rate of fire." + "Il blaster è una buona scelta a tutto tondo", + "con una buona cadenza di fuoco." ], "sigc016": [ - "This weapon requires more aiming ability." + "Quest'arma richiede una maggiore abilità di mira." ], "sigc017": [ - "You can switch weapon modes at anytime." + "Puoi cambiare modalità arma in qualsiasi momento." ], "sigc018": [ - "You can find yellow ammo in crates." + "Puoi trovare munizioni gialle nelle casse." ], "sigc022": [ - "Would you like to test your skills on the gun course?" + "Ti piacerebbe mettere alla prova le tue abilità nel corso di armi?" ], "sigc023": [ - "Which course do you want to play?" + "A quale corso vuoi giocare?" ], "sigc024": [ - "Shoot every target. The faster you shoot each target", - "the more points you'll get." + "Spara a ogni bersaglio. Più velocemente spari a ogni bersaglio", + "più punti otterrai." ], "sigc025": [ - "Hold your fire on civvies.", - "Hit a friendly target and points will be deducted." + "Non sparate ai civili.", + "Colpisci un bersaglio amico e i punti verranno detratti." ], "sigc026": [ - "Good luck." + "Buona fortuna." ], "sigc027": [ - "Lock and load. Ready, go!" + "Blocca e carica. Pronti via!" ], "sigc028": [ - "Perfect! You can be my backup any day." + "Perfetto! Puoi essere il mio sostituto ogni giorno." ], "sigc029": [ - "You did it, excellent shooting!" + "Ce l'hai fatta, ottimo scatto!" ], "sigc030": [ - "Nice shooting! You got potential, kid!" + "Bello scatto! Hai del potenziale, ragazzo!" ], "sigc031": [ - "Not bad, you'll do." + "Non male, lo farai." ], "sigc032": [ - "Try again, rookie. You're still a bit rusty with that hardware." + "Riprova, novellino. Sei ancora un po' arrugginito con quell'hardware." ], "sigc033": [ - "Not bad, but not good. Try again?" + "Non male, ma non buono. Riprova?" ], "sigc034": [ - "Close, but in the thick, close won't cut it. Try again?" + "Chiudi, ma nel profondo, la chiusura non basta. Riprova?" ], "sigc035": [ - "Care to try again? Or is your momma calling?" + "Vuoi riprovare? O tua mamma sta chiamando?" ], "sigc036": [ - "You're not up to speed yet, try again?" + "Non sei ancora al passo con i tempi, riprovare?" ], "sigc037": [ - "You gotta shoot those targets faster!" + "Devi colpire quei bersagli più velocemente!" ], "sigc038": [ - "Be the gun, baby!" + "Sii la pistola, tesoro!" ], "sigc039": [ - "It's all about reaction time." + "È tutta una questione di tempo di reazione." ], "sigc040": [ - "Different gun modes come in handy against different targets." + "Diverse modalità di pistola sono utili contro bersagli diversi." ], "sigc041": [ - "Be cool and you'll rule." + "Sii calmo e governerai." ], "sigc043": [ - "Try switching to the Scatter Gun." + "Prova a passare alla pistola a dispersione." ], "sigc053": [ - "Faster on the trigger, cherry." + "Più veloce sul grilletto, Cherry." ], "sigc054": [ - "That was a civilian!" + "Quello era un civile!" ], "sigc055": [ - "I said \"don't shoot civvies,\" itchy finger!" + "Ho detto \"non sparare ai civili\", prurito alle dita!" ], "sigc056": [ - "Great job!" + "Ottimo lavoro!" ], "sigc057": [ - "Awesome round, I feel sorry for those Metal Heads already." + "Fantastico round, mi dispiace già per quei Metal Heads." ], "sigc058": [ - "That was a sweet round, you make it look easy!" + "È stato un giro carino, lo fai sembrare facile!" ], "sigc059": [ - "You smoked that course!" + "Hai fumato quella portata!" ], "sigc060": [ - "The Metal Heads will eat you alive, rookie! Do it over!" + "I Metal Head ti mangeranno vivo, novellino! Falla finita!" ], "sigc061": [ - "You need some practice." + "Hai bisogno di un po' di pratica." ], "sigc062": [ - "I remember my rookie days, keep trying." + "Ricordo i miei giorni da rookie, continuo a provarci." ], "sigc063": [ - "Perfect round! You are the man." + "Giro perfetto! Tu sei l'uomo." ], "sigc064": [ - "Perfect shooting! I'm impressed." + "Scatto perfetto! Sono impressionato." ], "sigc065": [ - "Whoa, rock and roll, baby! That was a perfect round." + "Whoa, rock'n'roll, tesoro! È stato un giro perfetto." ], "sigc066": [ - "Nice shot!" + "Bel tiro!" ], "sigc067": [ - "Wasted 'em!" + "Li hai sprecati!" ], "sigc068": [ - "Very nice! Reminds me of me." + "Molto bello! Mi ricorda me stesso." ], "sigc069": [ - "Make 'em fear you." + "Fai in modo che ti temano." ], "sigc070": [ - "Good combo!" + "Buona combinazione!" ], "sigc071": [ - "I love seeing you work!" + "Adoro vederti lavorare!" ], "sigc072": [ - "Now switch back to the Blaster." + "Ora torna al Blaster." ], "sigc073": [ - "You can combo your attacks by kicking,", - "then firing your weapon." + "Puoi combinare i tuoi attacchi calciando,", + "poi sparando con la tua arma." ], "sigc074": [ - "Try a kick-shot combo." + "Prova una combinazione di colpi di calcio." ], "sigc075": [ - "Kick the first target, then shoot while kicking", - "to automatically hit the second target." + "Calcia il primo bersaglio, poi spara mentre calci", + "per colpire automaticamente il secondo bersaglio." ], "sigc076": [ - "Great move!" + "Ottima mossa!" ], "sigc077": [ - "Not quite, try again. Kick then shoot, almost at the same time." + "Non proprio, riprova. Calcia e poi tira, quasi contemporaneamente." ], "sigc078": [ - "Make sure you shoot while you're kicking to get the combo." + "Assicurati di sparare mentre stai calciando per ottenere la combo." ], "sigc079": [ - "Give it another shot." + "Provatelo ancora." ], "sigc080": [ - "Now that's a Wastelander move!", - "They won't know what hit 'em!" + "Questa è una mossa di Wastelander!", + "Non sapranno cosa li ha colpiti!" ], "sigc081": [ - "Think you can handle the Blaster course?" + "Pensi di poter gestire il corso Blaster?" ], "sigf001": [ - "You wasted 'em all! I'm still not sure why combat Metal Heads", - "are scouting this close to the city. To be honest,", - "I wasn't sure you could handle this gig, nice work!" + "Li hai sprecati tutti! Non sono ancora sicuro del perché combattere i Metal Heads", + "stanno esplorando così vicino alla città. Ad essere onesti,", + "Non ero sicuro che saresti riuscito a gestire questo concerto, bel lavoro!" ], "sigt003": [ - "Here we go!" + "Eccoci qui!" ], "sigt004": [ - "Follow me!" + "Seguimi!" ], "sigt005": [ - "Get behind me while I toast that tank." + "Stai dietro di me mentre brindo a quel serbatoio." ], "sigt006": [ - "Hurry up kid, I don't have all day!" + "Sbrigati ragazzo, non ho tutto il giorno!" ], "sigt007": [ - "This way!" + "Da questa parte!" ], "sigt008": [ - "Toast those bad boys up ahead." + "Brinda a quei cattivi ragazzi più avanti." ], "sigt009": [ - "Quick! Drop the bridge!" + "Presto! Abbassa il ponte!" ], "sigt010": [ - "Jump up and grab the bridge to bring it down." + "Saltate su e afferrate il ponte per abbatterlo." ], "sigt011": [ - "Let's get across the bridge before they come back." + "Attraversiamo il ponte prima che tornino." ], "sigt012": [ - "There's our first target, keep the other creatures back", - "while I charge up the Peacemaker." + "Ecco il nostro primo obiettivo: tenere indietro le altre creature", + "mentre carico il Peacemaker." ], "sigt013": [ - "That's one fried Metal Head." + "Quello è un Metal Head fritto." ], "sigt014": [ - "Let's get to the next target." + "Passiamo al prossimo obiettivo." ], "sigt015": [ - "With Metal Heads I say shoot first, ask questions later." + "Con i Metal Heads dico prima di sparare, poi di fare domande." ], "sigt017": [ - "Stay with me!" + "Resta con me!" ], "sigt019": [ - "Waste the suckers!" + "Sprechi i polloni!" ], "sigt020": [ - "Great, kid, great! Don't get cocky." + "Fantastico, ragazzo, fantastico! Non essere arrogante." ], "sigt021": [ - "There's the second scumbag, sittin' pretty." + "C'è il secondo pezzo di merda, seduto carino." ], "sigt022": [ - "Cover me!" + "Coprimi!" ], "sigt023": [ - "Boom, baby! One less Metal Head to think about." + "Bum, tesoro! Un Metal Head in meno a cui pensare." ], "sigt024": [ - "Next target." + "Prossimo obiettivo." ], "sigt025": [ - "Watch my six, while I toast this bad boy.", - "The trick is to not hit the pipes." + "Guardami mentre brindo a questo cattivone.", + "Il trucco è non colpire i tubi." ], "sigt026": [ - "Now that's what I call blowing someone's mind." + "Ecco, questo è ciò che chiamo far impazzire qualcuno." ], "sigt027": [ - "Gotta thread the needle this time." + "Questa volta devo infilare l'ago." ], "sigt028": [ - "Hahaha, Metal Head flambé." + "Hahaha, Metal Head in fiamme." ], "sigt029": [ - "Look out! We've got company!" + "Attenti! Abbiamo compagnia!" ], "sigt030": [ - "Damn! My gun's jammed, take over!" + "Dannazione! La mia pistola è inceppata, prendi il comando!" ], "sigt031": [ - "Get 'em while I fix my gun!" + "Prendili mentre aggiusto la mia pistola!" ], "sigt032": [ - "Okay, the Peacemaker is back online. Let's move!" + "Ok, il Peacemaker è di nuovo online. Muoviamoci!" ], "sigt033": [ - "Last target, then we go home." + "Ultimo obiettivo, poi torniamo a casa." ], "sigt036": [ - "Here comes trouble." + "Arrivano i guai." ], "sigt037": [ - "Did ya miss me?" + "Ti sono mancato?" ], "sigt038": [ - "Say \"good night,\" baby." + "Di' \"buonanotte\", tesoro." ], "sigt039": [ - "Thanks for covering my butt, that was close!" + "Grazie per avermi coperto il sedere, ci sono andato vicino!" ], "sigt043": [ - "Stay with me!" + "Resta con me!" ], "sigt044": [ - "Stay close or we'll both be dead!" + "Stai vicino o moriremo entrambi!" ], "sigt045": [ - "Get over here and stay close!" + "Vieni qui e stai vicino!" ], "sigt046": [ - "You wanna play, huh?" + "Vuoi giocare, eh?" ], "sigt047": [ - "Oh, you got games?" + "Oh, hai dei giochi?" ], "sigt049": [ - "You cherries can't handle this mission, we're through!" + "Voi ciliegie non potete gestire questa missione, abbiamo finito!" ], "sigt052": [ - "I don't work with amateurs!" + "Non lavoro con i dilettanti!" ], "sigt053": [ - "You're more trouble than you're worth!" + "Sei più un problema di quanto vali!" ], "sigt054": [ - "Come back when you're serious!" + "Torna quando fai sul serio!" ], "sigt056": [ - "You want some of this?!" + "Vuoi un po 'di questo?!" ], "sigt057": [ - "Drop that lift-cap while I hold them off." + "Lascia cadere il cappuccio dell'ascensore mentre li tengo a bada." ], "sigt058": [ - "Take 'em all out!" + "Tirateli fuori tutti!" ], "sigt059": [ - "Great, no time to celebrate." + "Ottimo, non c'è tempo per festeggiare." ], "sigt060": [ - "If I can't shoot it, it's someone else's problem.", - "You do something with those blocks." + "Se non riesco a girarlo, è un problema di qualcun altro.", + "Fai qualcosa con quei blocchi." ], "sigt061": [ - "You gotta figure out the blocks, man." + "Devi capire come funzionano i blocchi, amico." ], "sigt062": [ - "Did you hear something?" + "Hai sentito qualcosa?" ], "sigt063": [ - "That's one big ugly Metal Head." + "Quello è un grosso e brutto Metal Head." ], "sigt064": [ - "Shootin' this one's only going to get it mad, run!" + "Sparare a questo lo farà solo arrabbiare, corri!" ], "sigt065": [ - "See ya on the flipside!" + "Ci vediamo dall'altra parte!" ], "sigt066": [ - "Gone with the wind." + "Via col vento." ], "sigt067": [ - "Later alligator." + "Più tardi alligatore." ], "sigt068": [ - "I think that's the last we'll see of him." + "Penso che sarà l'ultima volta che lo vedremo." ], "sigt069": [ - "You figure this out, I'll cover your butt." + "Se risolvi questa cosa, ti coprirò il sedere." ], "sigt070": [ - "This is your gig, baby. Solve it, so we can go home." + "Questo è il tuo concerto, tesoro. Risolvilo, così possiamo tornare a casa." ], "sigt071": [ - "Great, here comes that bad boy again. Move!" + "Ottimo, ecco che arriva di nuovo quel cattivone. Muoviti!" ], "sigt072": [ - "Run!" + "Correre!" ], "sigt073": [ - "Go, go, go!" + "Via! Via! Via!" ], "sigt074": [ - "He's gaining!" + "Sta guadagnando!" ], "sigt075": [ - "Keep moving!" + "Continua a muoverti!" ], "sigt076": [ - "Faster!" + "Più veloce!" ], "sigt077": [ - "It's gonna be close!" + "Sarà vicino!" ], "sigt078": [ - "Move your butts!" + "Muovi il sedere!" ], "sigt082": [ - "Buddy, you don't wanna piss me off." + "Amico, non vuoi farmi incazzare." ], "sigt083": [ - "You got a death wish?!" + "Hai un desiderio di morte?!" ], "sigt087": [ - "Have a little pain right back!" + "Senti un po' di dolore alla schiena!" ], "sigt089": [ - "Never trust a rookie." + "Non fidarsi mai di un novellino." ], "sigt090": [ - "We're finished until you guys get serious." + "Abbiamo finito finché voi ragazzi non fate sul serio." ], "sigt091": [ - "This mission is obviously out of your league." + "Questa missione è ovviamente fuori dalla tua portata." ], "sigt092": [ - "You're wasting my time, this mission is over." + "Mi stai facendo perdere tempo, questa missione è finita." ], "sigt093": [ - "Uhh... ugh...." + "Uhh... uff...." ], "sigt100": [ - "Rage before beauty, buddy." + "Prima la rabbia e poi la bellezza, amico." ], "sigt101": [ - "Let's move!" + "Muoviamoci!" ], "sigt102": [ - "I love the smell of burning metal!" + "Adoro l'odore del metallo che brucia!" ], "sigt103": [ - "Just a walk in the park." + "Basta una passeggiata nel parco." ], "sigt104": [ - "Follow me!" + "Seguimi!" ], "sigt105": [ - "Let's go!" + "Andiamo!" ], "sigt106": [ - "This way!" + "Da questa parte!" ], "sigt107": [ - "Over here!" + "Qui!" ], "sigt108": [ - "Rollin' baby!" + "Rotolando, tesoro!" ], "sigt109": [ - "Blow 'em a kiss of death." + "Mandagli un bacio mortale." ], "sigt110": [ - "I love dead-heads!" + "Adoro i deadhead!" ], "sigt111": [ - "Kiss your shiny butt goodbye!" + "Di' addio al tuo sedere lucente!" ], "sigt112": [ - "Born to kill baby!" + "Nato per uccidere, tesoro!" ], "sigt113": [ - "Two to the chest, one to the head." + "Due al petto, uno alla testa." ], "spot004": [ - "Come out and cheer for me as I destroy the competition once again on the track.", - "This year's racing final will be to die for, I guarantee more thrills and more spills.", - "This time I want blood!...Bring the kids." + "Vieni fuori e tifa per me mentre distruggo ancora una volta la concorrenza in pista.", + "La finale di gara di quest'anno sarà indimenticabile, garantisco più emozioni e più avventure.", + "Questa volta voglio sangue!...Porta i bambini." ], "tess001": [ - "Hey, guys! This is Tess. Before Krew left, I saw him hide", - "something in the game machine here. Knowing Krew,", - "it's probably something valuable.", - "You might wanna come check it out." + "Hey ragazzi! Questa è Tess. Prima che Krew se ne andasse, l'ho visto nascondersi", + "qualcosa nella macchina da gioco qui. Conoscendo Krew,", + "probabilmente è qualcosa di prezioso.", + "Potresti venire a dare un'occhiata." ], "tor001": [ - "The operation was a success. All Underground members are safe.", - "Come back to the hideout, I have a new mission for you while we wait for this alert to blow over." + "L'operazione è stata un successo. Tutti i membri della metropolitana sono al sicuro.", + "Torna al nascondiglio, ho una nuova missione per te mentre aspettiamo che questo allarme finisca." ], "tor002": [ - "That should take some heat off the streets. Good work, I couldn't have done it better myself." + "Questo dovrebbe togliere un po' di calore dalle strade. Ottimo lavoro, non avrei potuto fare di meglio." ], "tor003": [ - "That's it, Jak, you're up! Try not to trigger any alarms, the garrison guards will be tough.", - "Get to the prison cell block and find the prisoners. Once there, we'll turn on the Warp Gate inside to get you all back out. Good luck." + "Questo è tutto, Jak, sei pronto! Cerca di non far scattare alcun allarme, le guardie della guarnigione saranno tenaci.", + "Raggiungi il blocco delle celle della prigione e trova i prigionieri. Una volta lì, attiveremo il Portale Warp all'interno per riportarvi tutti fuori. Buona fortuna." ], "tor004": [ - "Ok, my old access codes should help Vin turn off the magnetic seal for the Fortress door." + "Ok, i miei vecchi codici di accesso dovrebbero aiutare Vin a disattivare il sigillo magnetico della porta della Fortezza." ], "tor005": [ - "Jak, this is Torn, the city is under Metal Head attack. There's a large force moving toward the city wall from the ocean.", - "We need people manning the tower gunpods to stop that assault. Meet me at the seaside ocean wall in the Port, hurry!", - "We need every man we can get!" + "Jak, qui Torn, la città è sotto attacco da parte dei Metal Head. C'è una grande forza che si muove verso le mura della città dall'oceano.", + "Abbiamo bisogno di persone che maneggino i gunpod della torre per fermare quell'assalto. Incontriamoci alla diga oceanica del porto, sbrigati!", + "Abbiamo bisogno di ogni uomo possibile!" ], "tor007": [ - "Jak, it's a guard roadblock, get out of there!" + "Jak, c'è un posto di blocco delle guardie, vattene da lì!" ], "tor008": [ - "They've set up a roadblock, they're onto you!" + "Hanno creato un posto di blocco, ti stanno addosso!" ], "torn024": [ - "More coming in!" + "Altri in arrivo!" ], "tswm001": [ - "You can do it, Daxter!" + "Puoi farcela, Daxter!" ], "tswm002": [ - "Keep going, Daxter." + "Continua così, Daxter." ], "tswm003": [ - "Go, go, go!" + "Via! Via! Via!" ], "tswm004": [ - "Wow! What an animal!" + "Oh! Che animale!" ], "tswm005": [ - "You got it!" + "Avete capito bene!" ], "tswm006": [ - "Nice slam!" + "Bel colpo!" ], "tswm007": [ - "Ooh ho ho, baby!" + "Ooh oh oh, tesoro!" ], "tswm008": [ - "Great shot, Daxter!" + "Bellissimo scatto, Daxter!" ], "tswm009": [ - "You're almost there!" + "Ci sei quasi!" ], "tswm010": [ - "You can win, baby!" + "Puoi vincere, tesoro!" ], "tswm011": [ - "My hero!" + "Mio eroe!" ], "tswm012": [ - "Look at him go!" + "Guardalo, vai!" ], "tswm013": [ - "You ARE Orange Lightning!" + "Sei un Fulmine Arancione!" ], "tswm014": [ - "Just a few more!" + "Solo qualche altro!" ], "tswm015": [ - "Hit him again!" + "Colpiscilo ancora!" ], "tswm016": [ - "Yes!" + "SÌ!" ], "tswm017": [ - "That's my naughty ottsel!" + "Questo è il mio ottsel birichino!" ], "tswm018": [ - "Oh!" + "OH!" ], "tswm019": [ - "That wasn't good." + "Non andava bene." ], "tswm020": [ - "Don't hit the red ones!" + "Non colpire quelli rossi!" ], "tswm021": [ - "Ooh!" + "Oh!" ], "tswm022": [ - "That took points away!" + "Ciò ha portato via punti!" ], "tswm023": [ - "You did it!" + "Ce l'hai fatta!" ], "tswm024": [ - "Daxter, you won!" + "Daxter, hai vinto!" ], "tswm025": [ - "Yes! You're the man! I mean... the animal." + "Sì! Tu sei l'uomo! Voglio dire... l'animale." ], "tswm026": [ - "You beat the game, Daxter!" + "Hai vinto il gioco, Daxter!" ], "tswm027": [ - "Where'd you learn to pound like that?" + "Dove hai imparato a battere in quel modo?" ], "tswm028": [ - "That was amazing!" + "È stato fantastico!" ], "tswm029": [ - "Pretty good for a little furball." + "Abbastanza buono per una piccola palla di pelo." ], "tswm030": [ - "Ooh... Not enough points!" + "Ooh... Punti insufficienti!" ], "tswm031": [ - "No! You lost..." + "NO! Hai perso..." ], "tswm032": [ - "Awww... You lost again!" + "Awww... Hai perso ancora!" ], "tswm033": [ - "So close!" + "Così vicino!" ], "tswm034": [ - "One more time." + "Un'altra volta." ], "tswm035": [ - "You can do it!" + "Puoi farlo!" ], "tswm036": [ - "You have to try again!" + "Devi riprovare!" ], "tswm037": [ - "You have to beat the game, Daxter." + "Devi vincere il gioco, Daxter." ], "tswm038": [ - "Try again!" + "Riprova!" ], "tswm039": [ - "Ah! That was a bad one!" + "Ah! Quella è stata una brutta cosa!" ], "tswm040": [ - "Don't hit the bad ones, Daxter." + "Non colpire quelli cattivi, Daxter." ], "tswm041": [ - "You hit a bad Metal Head." + "Hai colpito un brutto Metal Head." ], "tswm042": [ - "Not again!" + "Non di nuovo!" ], "tswm043": [ "Oh no!" ], "tswm044": [ - "Daxter..! You need more points!" + "Daxter...! Hai bisogno di più punti!" ], "tswm045": [ - "Keep going...!" + "Continuare...!" ], "tswm046": [ - "Oh, Daxter... did you get your whiskers singed?" + "Oh, Daxter... ti sei bruciacchiato i baffi?" ], "tswm047": [ - "You're gonna score!" + "Segnerai!" ], "tswm048": [ - "You're almost there...!" + "Ci sei quasi...!" ], "tswm049": [ - "Just a few more!" + "Ancora un po'!" ], "tswm050": [ - "We have a winner!" + "Abbiamo un vincitore!" ], "tswm051": [ - "Oh! That was a bad one." + "OH! Quella è stata una brutta cosa." ], "tswm052": [ - "Don't hit the bad ones, Daxter." + "Non colpire quelli cattivi, Daxter." ], "tswm053": [ - "Daxter, you hit a bad Metal Head!" + "Daxter, hai colpito un brutto Metal Head!" ], "tswm054": [ - "Daxter, you won!!" + "Daxter, hai vinto!!" ], "tswm055": [ - "You did it, fur boy!" + "Ce l'hai fatta, ragazzo peloso!" ], "tswm056": [ - "Yes!! You beat the game!" + "SÌ!! Hai battuto il gioco!" ], "tswm057": [ - "I knew you could do it." + "Sapevo che potevi farcela." ], "vin002": [ - "Okay, the B-Zone Power Grid is back online.", - "Have fun being killed in the Palace." + "Ok, la rete elettrica della zona B è di nuovo online.", + "Divertiti a farti uccidere nel Palazzo." ], "vin003": [ - "You destroyed the last of the Metal Head eggs!", - "That should give us a little more eco for the city.", - "Good work!" + "Hai distrutto l'ultima delle uova di Metal Head!", + "Questo dovrebbe darci un po’ più di eco per la città.", + "Buon lavoro!" ], "vin004": [ - "You still haven't gotten all the Metal Head eggs!", - "Make sure you get 'em all, or I'm gonna have", - "a nervous breakdown!" + "Non hai ancora preso tutte le uova di Metal Head!", + "Assicurati di prenderli tutti, altrimenti lo farò io", + "un esaurimento nervoso!" ], "vin011": [ - "Thank goodness you blew up those wells.", - "I sure don't want any more Metal Heads coming around here.", - "Good work, boys! I owe ya one." + "Grazie a Dio hai fatto saltare in aria quei pozzi.", + "Di sicuro non voglio che altri Metal Head vengano da queste parti.", + "Buon lavoro, ragazzi! Te ne devo uno." ], "vin012": [ - "Good work, guys! The fewer Metal Head eggs", - "we allow to hatch, the fewer of those nasty monsters", - "we'll have to fight!" + "Buon lavoro, ragazzi! Meno uova di Metal Head", + "permettiamo che si schiudano, il minor numero di quei mostri cattivi", + "dovremo combattere!" ], "vin013": [ - "Jak... Kor...", - "Construction... Site...", - "Ngh..." + "Come... Kor...", + "Sito di costruzione...", + "..." ], "vin014": [ - "Once again you guys have saved my butt!", - "Maybe now I'll get a raise. Or a long vacation.", - "God knows I could use one. Thanks for the help!" + "Ancora una volta ragazzi, mi avete salvato il sedere!", + "Forse adesso avrò un aumento. O una lunga vacanza.", + "Dio sa che mi servirebbe uno. Grazie per l'aiuto!" ], "vin015": [ - "The shield wall is down! I repeat - the shield wall is down!", - "Sabotage! Kor did it!", - "I knew Metal Heads would be the end of me!", - "OH NO! Metal Heads are at the door!!", - "They're breaking through!!", - "Too many of them!! Jak!!! AHHHH!!!" + "Il muro di scudi è crollato! Ripeto: il muro di scudi è abbattuto!", + "Sabotaggio! Kor ce l'ha fatta!", + "Sapevo che i Metal Heads sarebbero stati la mia fine!", + "OH NO! I Metal Head sono alle porte!!", + "Stanno sfondando!!", + "Troppi!! Jak!!! AHHHH!!!" ], "ys001": [ - "Excellent work, boys! Come on back to the Hideout,", - "I have another task for you." + "Ottimo lavoro, ragazzi! Torna al nascondiglio,", + "Ho un altro compito per te." ], "ys002": [ - "Nice shooting, my boy!", - "Good work, Jak!", - "We'll all sleep a little easier tonight." + "Bel tiro, ragazzo mio!", + "Buon lavoro, Jak!", + "Dormiremo tutti un po' più tranquilli stanotte." ] }, "speakers": { - "agent": "Agent", + "agent": "Agente", "ashelin": "Ashelin", - "baron": "Baron Praxis", - "brutter": "Brutter", - "citizen-female": "Citizen", - "citizen-male": "Citizen", + "baron": "Barone Praxis", + "brutter": "Rotto", + "citizen-female": "Cittadino", + "citizen-male": "Cittadino", "computer": "Computer", - "darkjak": "Dark Jak", + "darkjak": "Jak oscuro", "daxter": "Daxter", "errol": "Erol", - "grim": "Grim", - "guard": "Krimzon Guard", - "guard-a": "Guard A", - "guard-b": "Guard B", - "jak": "Jak", + "grim": "Cupo", + "guard": "Guardia Krimzon", + "guard-a": "Guardia A", + "guard-b": "Guardia B", + "jak": "Come", "jinx": "Jinx", "keira": "Keira", - "keira-before-class-3": "Mechanic", - "kid": "Kid", + "keira-before-class-3": "Meccanico", + "kid": "Ragazzo", "kor": "Kor", - "krew": "Krew", - "metalkor": "Metal Kor", + "krew": "Sangue", + "metalkor": "Metallo Kor", + "metalkor-before-consite": "Leader della testa di metallo", + "metalkor-intro": "???", "mog": "Mog", - "onin": "Onin", - "oracle": "Oracle", + "onin": "Uno", + "oracle": "Oracolo", "pecker": "Pecker", - "precursor": "Precursor", - "samos": "Samos", - "sig": "Sig", + "precursor": "Precursore", + "samos": "Samo", + "sig": "Dire", "tess": "Tess", - "torn": "Torn", + "torn": "Strappato", "vin": "Vin", - "youngsamos": "Young Samos", - "youngsamos-before-rescue": "Samos" + "youngsamos": "Samos giovane", + "youngsamos-before-rescue": "Samo" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_ja-JP.json b/game/assets/jak2/subtitle/subtitle_lines_ja-JP.json index 1eedfcf5e8..afcaf059c6 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_ja-JP.json +++ b/game/assets/jak2/subtitle/subtitle_lines_ja-JP.json @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", @@ -7852,4 +7854,4 @@ "youngsamos": "Young Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_jp-JP.json b/game/assets/jak2/subtitle/subtitle_lines_jp-JP.json index 3c2e9df46b..4c775cdbee 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_jp-JP.json +++ b/game/assets/jak2/subtitle/subtitle_lines_jp-JP.json @@ -120,6 +120,8 @@ "kor": "コール", "krew": "クルー", "metalkor": "メタルコール", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "モッグ", "onin": "オニン", "oracle": "オラクル", diff --git a/game/assets/jak2/subtitle/subtitle_lines_ko-KR.json b/game/assets/jak2/subtitle/subtitle_lines_ko-KR.json index ef671477c0..ae01f509ef 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_ko-KR.json +++ b/game/assets/jak2/subtitle/subtitle_lines_ko-KR.json @@ -24,6 +24,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", diff --git a/game/assets/jak2/subtitle/subtitle_lines_lt-LT.json b/game/assets/jak2/subtitle/subtitle_lines_lt-LT.json index 9fba976be2..1765e646a1 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_lt-LT.json +++ b/game/assets/jak2/subtitle/subtitle_lines_lt-LT.json @@ -7839,6 +7839,8 @@ "kor": "Koras", "krew": "Krew", "metalkor": "Metalinis Koras", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mogas", "onin": "Oninas", "oracle": "Oraklė", @@ -7852,4 +7854,4 @@ "youngsamos": "Jaunasis Samosas", "youngsamos-before-rescue": "Samosas" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_nl-NL.json b/game/assets/jak2/subtitle/subtitle_lines_nl-NL.json index 1eedfcf5e8..d2ab9eed69 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_nl-NL.json +++ b/game/assets/jak2/subtitle/subtitle_lines_nl-NL.json @@ -2,207 +2,207 @@ "cutscenes": {}, "other": { "DSbop001": [ - "You sure seem angry, Jak." + "Je lijkt zeker boos, Jak." ], "DSbop002": [ - "Do you remember how to jump?" + "Weet jij nog hoe je moet springen?" ], "DSbop003": [ - "Jump onto that crate to get over the barricade." + "Spring op die kist om over de barricade heen te komen." ], "DSbop004": [ - "Ooh, that's a high ledge!", - "Try jumping once, then jump again while in the air", - "to reach that one." + "Ooh, dat is een hoge rand!", + "Probeer één keer te springen en spring dan opnieuw terwijl je in de lucht bent", + "om die te bereiken." ], "DSbop005": [ - "Good job, see? You still got it!" + "Goed gedaan, zie je? Je hebt het nog steeds!" ], "DSbop006": [ - "I never found hide nor hair of Keira or Samos.", - "I don't know where they went." + "Ik heb nooit huid of haar gevonden van Keira of Samos.", + "Ik weet niet waar ze naartoe zijn gegaan." ], "DSbop007": [ - "I don't know where that crazy rift vehicle took us, but...", - "It's some kind of big city!" + "Ik weet niet waar dat gekke Rift-voertuig ons naartoe bracht, maar...", + "Het is een soort grote stad!" ], "DSbop008": [ - "It's a tough place, Jak. You DO remember", - "how to fight, right? Try breaking that crate with a kick." + "Het is een moeilijke plek, Jak. Je weet het WEL", + "Hoe moet je vechten, toch? Probeer die krat maar eens kapot te schoppen." ], "DSbop009": [ - "Looking good, partner! Nice spin kick!", - "Works out some of that anger, eh?" + "Ziet er goed uit, partner! Lekkere spin-kick!", + "Werkt iets van die woede weg, hè?" ], "DSbop010": [ - "There are lots of Krimzon Guard crates lying around", - "for the taking. Break that crate!" + "Er liggen veel Krimzon Guard-kratten rondslingeren", + "voor het oprapen. Breek dat krat!" ], "DSbop011": [ - "Good job! That crate had a health pack inside.", - "Pick it up, you'll wanna keep healthy, Jak, or uh heh...", - "who'll do the fighting?" + "Goed gedaan! In die kist zat een gezondheidspakket.", + "Raap het op, je wilt gezond blijven, Jak, of uh heh...", + "wie zal de strijd aangaan?" ], "DSbop016": [ - "If you jump then dive, you'll crash down to the ground", - "hard enough to break lots of things.", - "Breaking stuff's fun, right?" + "Als je springt en dan duikt, val je op de grond", + "hard genoeg om veel dingen kapot te maken.", + "Dingen kapotmaken is leuk, toch?" ], "DSbop017": [ - "Guards, Jak! Do your, uh... stuff." + "Wachters, Jak! Doe je, uh... dingen." ], "agnt001": [ - "Hey hey, drive carefully!" + "Hé, rij voorzichtig!" ], "agnt002": [ - "Look out!" + "Pas op!" ], "agnt003": [ - "Watch it!" + "Bekijk het!" ], "agnt004": [ - "Whoa whoa whoa whoa!" + "Ho ho ho ho ho!" ], "agnt005": [ - "Whoa!" + "Wauw!" ], "agnt006": [ - "You're crazy!" + "Je bent gek!" ], "agnt007": [ - "Are you out of your mind!?" + "Ben je gek geworden!?" ], "agnt008": [ - "Watch out!" + "Kijk uit!" ], "agnt009": [ - "That one hurt!" + "Dat deed pijn!" ], "agnt010": [ - "Stay sharp, we've got a tough part of town coming up." + "Blijf scherp, er komt een lastig deel van de stad aan." ], "agnt011": [ - "Now we're in for it!" + "Nu hebben we er zin in!" ], "agnt012": [ - "You're wasting citizens!" + "Je verspilt burgers!" ], "agnt013": [ - "Don't hit the civvies, man!" + "Raak de burgers niet, man!" ], "agnt014": [ - "Man, you are hitting people!" + "Man, je slaat mensen!" ], "agnt015": [ - "Look where you're going!" + "Kijk waar je heen gaat!" ], "agnt016": [ - "Go man!" + "Ga man!" ], "agnt017": [ - "Keep your head down!" + "Houd je hoofd naar beneden!" ], "agnt018": [ - "They're shooting at us!" + "Ze schieten op ons!" ], "agnt019": [ - "We are dead if you don't drive faster!" + "We zijn dood als je niet sneller rijdt!" ], "agnt020": [ - "Keep going!" + "Blijven gaan!" ], "agnt021": [ - "Do it, man, do it!" + "Doe het, kerel, doe het!" ], "agnt022": [ - "Hurry up, man!" + "Schiet op, kerel!" ], "agnt023": [ - "I ain't riding on the back, pick up a two-seater!" + "Ik rijd niet achterop, pak een tweezitter!" ], "agnt024": [ - "Get a bigger car!" + "Koop een grotere auto!" ], "agnt025": [ - "Get a bigger vehicle." + "Koop een groter voertuig." ], "agnt026": [ - "Get one with two seats, will ya?" + "Koop er een met twee zitplaatsen, wil je?" ], "agnt027": [ - "Get another vehicle." + "Neem een ​​ander voertuig." ], "agnt028": [ - "They're onto us." + "Ze hebben ons door." ], "agnt029": [ - "We're being followed." + "We worden gevolgd." ], "agnt030": [ - "We're taking a beating!" + "We krijgen een klap!" ], "agnt031": [ - "We can't take much more of that!" + "Daar kunnen we niet veel meer van verdragen!" ], "agnt032": [ - "Are you trying to die!?" + "Probeer je dood te gaan!?" ], "agnt033": [ - "Where did Torn find you?" + "Waar heeft Torn je gevonden?" ], "agnt034": [ - "You sure you're on our side?" + "Weet je zeker dat je aan onze kant staat?" ], "agnt035": [ - "Turn, TURN!" + "Draai, draai!" ], "agnt036": [ - "Good move." + "Goede zet." ], "agnt037": [ - "Death to the Baron!" + "Dood aan de baron!" ], "agnt038": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Bedankt Mar dat je er bent, Krimzon Guards zijn overal!" ], "agnt039": [ - "It's about time, let's get out of here!" + "Het werd tijd, laten we hier weggaan!" ], "agnt040": [ - "Good, good, just in time. GO, GO, GO!" + "Goed, goed, net op tijd. GA GA GA!" ], "agnt041": [ - "Finally, we need to move!" + "Eindelijk moeten we verhuizen!" ], "agnt042": [ - "Man, I was beginning to think you wouldn't show up." + "Man, ik begon al te denken dat je niet zou komen opdagen." ], "agnt043": [ - "Not a moment too soon, let's fly!" + "Geen moment te vroeg, laten we vliegen!" ], "agnt044": [ - "Get me to my new safehouse, quickly!" + "Breng me snel naar mijn nieuwe safehouse!" ], "agnt045": [ - "Thanks, good luck!" + "Bedankt, veel succes!" ], "agnt046": [ - "Good driving, go save the rest of our guys." + "Goed gereden, ga de rest van onze jongens redden." ], "agnt047": [ - "OK, I'm out of here!" + "Oké, ik ben hier weg!" ], "agnt048": [ - "See you at the next meeting." + "Tot ziens op de volgende bijeenkomst." ], "agnt049": [ - "Thanks, you're a life saver." + "Bedankt, je bent een levensredder." ], "agnt050": [ - "This is where I get off." + "Hier stap ik uit." ], "agnt051": [ - "I'm glad you're on our side." + "Ik ben blij dat je aan onze kant staat." ], "agnt052": [ "Ugh!" @@ -211,832 +211,832 @@ "Ugh!" ], "agnt054": [ - "Hah!" + "Haha!" ], "agnt055": [ "Ahhh!" ], "agnt056": [ - "Drive carefully!" + "Rijd voorzichtig!" ], "agnt057": [ - "Look out!" + "Pas op!" ], "agnt058": [ - "Watch it!" + "Bekijk het!" ], "agnt059": [ - "WHOA!" + "WAUW!" ], "agnt060": [ - "You're crazy!" + "Je bent gek!" ], "agnt061": [ - "Are you out of your mind?!" + "Ben je gek geworden?!" ], "agnt062": [ - "Watch out!" + "Kijk uit!" ], "agnt063": [ - "That one hurt." + "Die deed pijn." ], "agnt064": [ - "Stay sharp, we got a tough part of our town coming up." + "Blijf scherp, er komt een lastig deel van onze stad aan." ], "agnt065": [ - "Now we're in for it." + "Nu hebben we er zin in." ], "agnt066": [ - "You're wasting citizens!" + "Je verspilt burgers!" ], "agnt067": [ - "Don't hit the civvies, man!" + "Raak de burgers niet, man!" ], "agnt068": [ - "Man, you're hitting the people!" + "Man, je raakt de mensen!" ], "agnt069": [ - "Look where you're going!" + "Kijk waar je heen gaat!" ], "agnt070": [ - "Go man, GO!" + "Ga man, GA!" ], "agnt071": [ - "Keep your head down!" + "Houd je hoofd laag!" ], "agnt072": [ - "They're shooting at us!" + "Ze schieten op ons!" ], "agnt073": [ - "We're dead if you don't drive faster!" + "We zijn dood als je niet sneller rijdt!" ], "agnt074": [ - "Keep going!" + "Blijven gaan!" ], "agnt075": [ - "Do it, man, do it!" + "Doe het, kerel, doe het!" ], "agnt076": [ - "Hurry up, man!" + "Schiet op, kerel!" ], "agnt077": [ - "I ain't riding on the back, pick up a two-seater!" + "Ik rijd niet achterop, pak een tweezitter!" ], "agnt078": [ - "Get a bigger vehicle." + "Koop een groter voertuig." ], "agnt079": [ - "They're onto us!" + "Ze hebben ons door!" ], "agnt080": [ - "We're being followed!" + "We worden gevolgd!" ], "agnt081": [ - "We're taking a beating!" + "We krijgen een klap!" ], "agnt082": [ - "We can't take much more of that." + "Veel meer kunnen we er niet van hebben." ], "agnt083": [ - "You trying to die?" + "Probeer je te sterven?" ], "agnt084": [ - "Where'd Torn find you?" + "Waar heeft Torn je gevonden?" ], "agnt085": [ - "You sure you're on our side?" + "Weet je zeker dat je aan onze kant staat?" ], "agnt086": [ - "Turn, TURN!" + "Draai, draai!" ], "agnt087": [ - "Good move!" + "Goede zet!" ], "agnt088": [ - "Death to the Baron!" + "Dood aan de baron!" ], "agnt089": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Bedankt Mar dat je er bent, Krimzon Guards zijn overal!" ], "agnt090": [ - "It's about time, let's get out of here!" + "Het werd tijd, laten we hier weggaan!" ], "agnt091": [ - "Good, just in time, GO, GO, GO!" + "Goed, net op tijd, GO, GO, GO!" ], "agnt092": [ - "Finally, we need to move!" + "Eindelijk moeten we verhuizen!" ], "agnt093": [ - "Man, I was beginning to think you wouldn't show up." + "Man, ik begon al te denken dat je niet zou komen opdagen." ], "agnt094": [ - "Not a moment too soon, let's fly!" + "Geen moment te vroeg, laten we vliegen!" ], "agnt095": [ - "Get me to my new safehouse, quickly!" + "Breng me snel naar mijn nieuwe safehouse!" ], "agnt096": [ - "Thanks, good luck!" + "Bedankt, veel succes!" ], "agnt097": [ - "Good driving, go save the rest of our guys." + "Goed gereden, ga de rest van onze jongens redden." ], "agnt098": [ - "OK, I'm out of here!" + "Oké, ik ben hier weg!" ], "agnt099": [ - "See ya at the next meeting!" + "Tot ziens op de volgende bijeenkomst!" ], "agnt100": [ - "Thanks, you're a life-saver." + "Bedankt, je bent een levensredder." ], "agnt101": [ - "This is where I get off." + "Hier stap ik uit." ], "agnt102": [ - "I'm glad you're on our side." + "Ik ben blij dat je aan onze kant staat." ], "agnt103": [ - "Look out!" + "Pas op!" ], "agnt104": [ - "Hey!" + "Hoi!" ], "agnt105": [ - "Augh!" + "Au!" ], "agnt106": [ - "Come on man, you trying to kill me!?" + "Kom op man, probeer je mij te vermoorden!?" ], "agnt107": [ - "Take it easy!" + "Doe het rustig aan!" ], "agnt108": [ - "Ughh!" + "Ugh!" ], "agnt109": [ - "Ughh!" + "Ugh!" ], "agnt110": [ "Ahhh!" ], "agnt111": [ - "Oof!" + "Oef!" ], "agnt112": [ "Ah!" ], "agnt113": [ - "Ahh!" + "Ah!" ], "agnt114": [ - "Oof!" + "Oef!" ], "agnt115": [ - "Okay, buddy, move!" + "Oké, vriend, beweeg!" ], "agnt116": [ - "Look out!" + "Pas op!" ], "agnt117": [ - "Keep your eyes on the road!" + "Houd je ogen op de weg gericht!" ], "agnt118": [ - "Watch it!" + "Bekijk het!" ], "agnt119": [ - "Thanks for the lift." + "Bedankt voor de lift." ], "agnt120": [ - "See ya at the next meeting." + "Tot ziens op de volgende bijeenkomst." ], "agnt121": [ - "Right, let's go!" + "Oké, laten we gaan!" ], "agnt122": [ - "Drive, man, drive!" + "Rijden, man, rijden!" ], "agnt123": [ - "That was close!" + "Dat scheelde niet veel!" ], "agnt124": [ - "You sure you know what you're doing?" + "Weet je zeker dat je weet wat je doet?" ], "agnt125": [ - "Ok, thanks, good luck." + "Oké, bedankt, veel succes." ], "agnt126": [ - "Great, let's go." + "Goed laten we gaan." ], "agnt127": [ - "Drive, man, drive!" + "Rijden, man, rijden!" ], "agnt128": [ - "That was close!" + "Dat scheelde niet veel!" ], "agnt129": [ - "You sure you know what you're doing?" + "Weet je zeker dat je weet wat je doet?" ], "agnt130": [ - "OK, thanks, good luck!" + "Oké, bedankt, veel succes!" ], "agnt131": [ - "What took you so long?" + "Waarom duurde het zolang?" ], "agnt132": [ - "Move like you got a purpose, man!" + "Beweeg alsof je een doel hebt, man!" ], "agnt133": [ - "GO, GO, the KG are onto us!" + "GO, GO, de KG hebben ons door!" ], "agnt134": [ - "Stay sharp, we're almost there!" + "Blijf scherp, we zijn er bijna!" ], "agnt135": [ - "Good, you did well, I'll tell the Shadow we're safe!" + "Goed, je hebt het goed gedaan, ik zal de Schaduw vertellen dat we veilig zijn!" ], "asha001": [ - "Payback's a bitch, and I'm it." + "Terugbetaling is een bitch, en ik ben het." ], "asha002": [ - "Watch your ass, I'm only woman on the outside." + "Pas op, ik ben de enige vrouw aan de buitenkant." ], "asha003": [ - "Let me knock you down to size...", - "Not that you have any." + "Laat mij je even tot in de puntjes uitdrukken...", + "Niet dat je die hebt." ], "asha004": [ - "Small guns don't get me going." + "Kleine wapens krijgen mij niet op gang." ], "asha005": [ - "That's a tiny gun..." + "Dat is een klein pistool..." ], "asha006": [ - "You don't know who you're dealing with." + "Je weet niet met wie je te maken hebt." ], "asha007": [ - "I never said you could touch me there." + "Ik heb nooit gezegd dat je me daar kon aanraken." ], "asha008": [ - "Take that!" + "Neem dat!" ], "asha009": [ - "Here's some." + "Hier zijn er enkele." ], "asha010": [ - "Ready for another?" + "Klaar voor een ander?" ], "asha011": [ - "How's that feel?" + "Hoe voelt dat?" ], "asha012": [ - "Seems like it hurts." + "Het lijkt alsof het pijn doet." ], "asha013": [ - "Oh, that hurt." + "O, dat deed pijn." ], "asha014": [ "Ugh!" ], "asha015": [ - "Ough!" + "Genoeg!" ], "asha016": [ "Ah!" ], "asha017": [ - "Agh!" + "Ach!" ], "asha018": [ - "Hit me again and you'll lose something really valuable!" + "Als je me nog een keer slaat, verlies je iets heel waardevols!" ], "asha019": [ - "Not smart!" + "Niet slim!" ], "asha020": [ - "Listen, buddy, whose side are you on?" + "Luister, vriend, aan welke kant sta jij?" ], "asha021": [ - "Don't make me hurt you." + "Zorg ervoor dat ik je geen pijn doe." ], "asha022": [ - "Do that again and I'll put you down." + "Doe dat nog eens en ik zet je neer." ], "asha023": [ - "Learn to control your gun, buddy." + "Leer je wapen te beheersen, vriend." ], "asha024": [ - "Where'd you learn to fight?" + "Waar heb je leren vechten?" ], "asha025": [ - "Check your targets, mister." + "Controleer uw doelen, meneer." ], "asha026": [ - "Don't do that again." + "Doe dat niet nog een keer." ], "asha027": [ - "Maybe I should be behind you." + "Misschien moet ik achter je staan." ], "asha028": [ - "I won't take that!" + "Dat pik ik niet!" ], "asha029": [ - "Another one like that and you'll be singing soprano." + "Nog zo'n en je zingt sopraan." ], "asha030": [ - "Have some back." + "Heb wat terug." ], "asha031": [ - "Don't do that again!" + "Doe dat niet nog een keer!" ], "asha032": [ - "Nice shooting." + "Lekker schieten." ], "asha033": [ - "Good shooting, blue boy." + "Goed geschoten, blauwe jongen." ], "asha034": [ - "Good work." + "Goed werk." ], "asha035": [ - "Take 'em all down!" + "Haal ze allemaal neer!" ], "asha036": [ - "Let's get 'em!" + "Laten we ze pakken!" ], "asha037": [ - "Here they come!" + "Hier komen ze!" ], "asha038": [ - "I need some help!" + "Ik heb wat hulp nodig!" ], "asha039": [ - "Man, there are a lot of 'em!" + "Man, het zijn er veel!" ], "asha040": [ - "More coming." + "Er komt meer." ], "asha041": [ - "I got him." + "Ik heb hem." ], "asha042": [ - "More firepower!" + "Meer vuurkracht!" ], "asha043": [ - "One more down!" + "Nog eentje naar beneden!" ], "asha044": [ - "Help me out!" + "Help mij!" ], "asha045": [ - "They're out-flanking us!" + "Ze flankeren ons!" ], "asha046": [ - "We're surrounded!" + "We zijn omsingeld!" ], "asha047": [ - "Shoot! Shoot!" + "Schieten! Schieten!" ], "asha048": [ - "It's not looking good." + "Het ziet er niet goed uit." ], "asha049": [ "Help me!" ], "asha050": [ - "Here's one for my father!" + "Hier is er één voor mijn vader!" ], "asha051": [ - "Damn Metal Heads..." + "Verdomde metalheads..." ], "asha052": [ - "Bullseye." + "In de roos." ], "asha053": [ - "There's some more of those things!" + "Er zijn nog meer van dat soort dingen!" ], "asha054": [ - "Get 'em all!" + "Haal ze allemaal!" ], "asha055": [ - "Ugh..." + "Bah..." ], "asha056": [ - "Hm-agh..." + "Hm-ag..." ], "asha057": [ - "Hah...agh..." + "Haha... ach..." ], "asht002": [ - "You were right, Jak. What my father's doing is wrong.", - "I need to help fix this. If you get to the Weapons Factory,", - "maybe we can stop him. I'll meet you there." + "Je had gelijk, Jak. Wat mijn vader doet, is verkeerd.", + "Ik moet helpen dit op te lossen. Als je bij de Wapenfabriek komt,", + "Misschien kunnen we hem tegenhouden. Ik zal je daar ontmoeten." ], "asht006": [ - "I think now's the time to act.", - "The Metal Heads are so focused on attacking the city,", - "they may have left their nest vulnerable.", - "Jak, you've got to get out to the Wasteland", - "and breach the Nest barrier any way you can.", - "Maybe if you get inside and take out the Metal Head leader", - "the army will collapse. It's a long shot,", - "but it might be our only chance." + "Ik denk dat dit het moment is om in actie te komen.", + "De Metal Heads zijn zo gefocust op het aanvallen van de stad,", + "Mogelijk hebben ze hun nest kwetsbaar achtergelaten.", + "Jak, je moet naar de Wasteland", + "en doorbreek de Nest-barrière op elke mogelijke manier.", + "Misschien als je naar binnen gaat en de Metal Head-leider uitschakelt", + "het leger zal instorten. Het is een kwestie van lange adem,", + "maar het zou onze enige kans kunnen zijn." ], "bar001": [ - "Pay no attention to the groundless rumors about", - "low eco supplies. As your Baron, I assure you,", - "the city has an endless supply of eco stores.", - "Those who would say we are running out,", - "are only trying to frighten and subvert!", - "I have everything in control, I command you", - "to have no fear." + "Besteed geen aandacht aan de ongegronde geruchten over", + "low eco supplies. Als uw Baron verzeker ik u,", + "de stad heeft een eindeloos aanbod aan ecowinkels.", + "Degenen die zouden zeggen dat we bijna op zijn,", + "proberen alleen maar bang te maken en te ondermijnen!", + "Ik heb alles onder controle, ik beveel jou", + "geen angst te hebben." ], "bar004": [ - "Go!" + "Gaan!" ], "bb01fail": [ - "I think you should practice more." + "Ik denk dat je meer moet oefenen." ], "bb01int": [ - "Jak, this is Torn. The Underground needs good drivers", - "for our vehicle missions. Prove your skills on the", - "Ring Challenge and maybe we'll let you in on the action." + "Jak, dit is Torn. De metro heeft goede chauffeurs nodig", + "voor onze voertuigmissies. Bewijs je vaardigheden op de", + "Ring Challenge en misschien laten we je kennismaken met de actie." ], "bb01win": [ - "Not bad, I think we can use ya.", - "Here's a little reward for your effort." + "Niet slecht, ik denk dat we je kunnen gebruiken.", + "Hierbij een kleine beloning voor uw inspanning." ], "bb02fail": [ - "You're still a little timid. Try again." + "Je bent nog steeds een beetje verlegen. Probeer het nog eens." ], "bb02int": [ - "We'd like to see you prove your driving skills. Take on", - "another Ring Challenge, let's see what you've got." + "Wij willen graag zien dat jij jouw rijvaardigheid bewijst. Op zich nemen", + "nog een Ring Challenge, laten we eens kijken wat je hebt." ], "bb02win": [ - "Not bad. You could be my getaway driver any time." + "Niet slecht. Je kunt elk moment mijn vluchtchauffeur zijn." ], "bb03fail": [ - "I knew this one would prove too much for ya. Keep practicing." + "Ik wist dat deze te veel voor je zou blijken. Blijf oefenen." ], "bb03int": [ - "The next Ring Challenge will separate the men from the boys.", - "Let's see if you can handle it." + "De volgende Ring Challenge zal de mannen van de jongens scheiden.", + "Laten we kijken of je het aankunt." ], "bb03win": [ - "Very nice driving. I'm starting to think you could really", - "help us, Jak." + "Zeer fijn rijden. Ik begin te denken dat je dat echt zou kunnen", + "help ons, Jak." ], "bb04fail": [ - "Too bad, I kinda hoped you could do this. Keep trying." + "Jammer, ik hoopte eigenlijk dat je dit kon doen. Blijf proberen." ], "bb04int": [ - "Torn here. I don't even know why I'm lettin' you try this", - "Ring Challenge, never beat it myself. I guess I'm morbidly", - "curious. Beat this one and you'll be the best driver", - "the Underground's ever had." + "Hier gescheurd. Ik weet niet eens waarom ik je dit laat proberen", + "Ring Challenge, heb hem zelf nooit verslagen. Ik denk dat ik morbide ben", + "nieuwsgierig. Versla deze en je zult de beste chauffeur zijn", + "wat de Underground ooit heeft gehad." ], "bb04win": [ - "Very nice, Jak! You're the best driver we've ever had." + "Heel leuk, Jak! Je bent de beste chauffeur die we ooit hebben gehad." ], "bb05fail": [ - "You didn't get all the Bomb Bots, Jak!" + "Je hebt niet alle Bomb Bots gekregen, Jak!" ], "bb05int": [ - "Jak, reports say more bomb bots are roaming the city.", - "They're a dangerous menace, and I need you to locate", - "and destroy each one before they hurt our interests." + "Jak, er zijn berichten dat er meer bombots door de stad zwerven.", + "Ze zijn een gevaarlijke bedreiging, en ik wil dat je ze lokaliseert", + "en ze allemaal vernietigen voordat ze onze belangen schaden." ], "bb05win": [ - "Good work! That oughta put a dent in the Baron's war budget." + "Goed werk! Dat zou een deuk in de oorlogsbegroting van de Baron moeten betekenen." ], "bb06int": [ - "Jak, we need you to take out another group of Bomb Bots.", - "These mobile weapons keep showing up in the city, we gotta take them out as soon as possible." + "Jak, je moet nog een groep Bomb Bots uitschakelen.", + "Deze mobiele wapens blijven in de stad verschijnen, we moeten ze zo snel mogelijk uitschakelen." ], "bb06win": [ - "Another pile of bomb bot scrap metal for the KG", - "trash compactors. Mission accomplished, the Underground's", - "most grateful for your service." + "Nog een stapel schroot van bombots voor de KG", + "afvalpersen. Missie volbracht, de Underground", + "zeer dankbaar voor uw dienst." ], "bb07fail": [ - "You lost an agent! NOT good at all, Jak! Mission failed!" + "Je bent een agent kwijt! Helemaal niet goed, Jak! Missie gefaald!" ], "bb07int": [ - "Torn here, I need you to go out and move more of our Agents to new locations in the city.", - "KG spies are watching our every move, so look out for trouble. Good luck." + "Hier verscheurd, wil ik dat je eropuit gaat en meer van onze agenten naar nieuwe locaties in de stad verplaatst.", + "KG-spionnen houden al onze bewegingen in de gaten, dus pas op voor problemen. Succes." ], "bb07win": [ - "Nice shuttle work! You're keepin' people alive out there." + "Mooi pendelwerk! Je houdt mensen daarbuiten in leven." ], "bb08fail": [ - "One of our best agents was arrested. The Shadow will NOT be", - "pleased! You failed." + "Eén van onze beste agenten werd gearresteerd. De Schaduw zal dat NIET zijn", + "verheugd! Je hebt gefaald." ], "bb08int": [ - "Jak, some of our Agents have been compromised again.", - "Find each one and take them to special hideouts in the city.", - "The guard patrols are on high alert, so this is going to be a tough one. Keep your head down!" + "Jak, sommige van onze agenten zijn opnieuw gecompromitteerd.", + "Vind ze allemaal en breng ze naar speciale schuilplaatsen in de stad.", + "De wachtpatrouilles zijn in opperste staat van paraatheid, dus dit wordt een lastige. Houd je hoofd laag!" ], "bb08win": [ - "That was good driving, Jak.", - "The Underground can breathe a little easier now." + "Dat was goed rijden, Jak.", + "De Underground kan nu wat rustiger ademen." ], "bb09fail": [ - "You took too long, Jak. We're calling off the meeting." + "Het duurde te lang, Jak. We zeggen de vergadering af." ], "bb09int": [ - "Jak, we're having an Underground meeting", - "with some special Agents. Pick up each Agent", - "and bring them to the meeting place quickly." + "Jak, we hebben een ondergrondse bijeenkomst", + "met enkele speciale agenten. Pak elke agent op", + "en breng ze snel naar de ontmoetingsplaats." ], "bb09win": [ - "Fast work, Jak! Some day, we might even", - "invite you to these meetings." + "Snel werk, Jak! Op een dag zouden we dat misschien zelfs wel kunnen", + "nodigen u uit voor deze bijeenkomsten." ], "bb10fail": [ - "Not fast enough, buddy! You've gotta be quick", - "with those deliveries." + "Niet snel genoeg, vriend! Je moet snel zijn", + "met die leveringen." ], "bb10int": [ - "Jak, you've got to prove your driving skills once again.", - "One of our Agents dropped off a package,", - "I need it delivered to the Hideout. Immediately." + "Jak, je moet je rijvaardigheid opnieuw bewijzen.", + "Een van onze agenten heeft een pakketje afgeleverd,", + "Ik wil dat het afgeleverd wordt bij de Hideout. Onmiddellijk." ], "bb10win": [ - "Good work, Jak!" + "Goed werk, Jak!" ], "bb11fail": [ - "The package contents didn't make it. Go faster next time!" + "De inhoud van het pakket heeft het niet gehaald. Volgende keer sneller!" ], "bb11int": [ - "Jak, I need you to take a package of eco", - "over to the power station. Get there quickly or the contents", - "will be useless to Vin." + "Jak, je moet een pakje eco meenemen", + "naar de elektriciteitscentrale. Kom er snel of de inhoud", + "zal nutteloos zijn voor Vin." ], "bb11win": [ - "Nice driving, Jak." + "Lekker gereden, Jak." ], "bb12fail": [ - "You didn't push it hard enough, newbie. Try again." + "Je hebt niet hard genoeg gepusht, nieuweling. Probeer het nog eens." ], "bb12int": [ - "This is Torn, we've got another package delivery", - "for the Stadium. Make it quick!" + "Dit is Torn, we hebben weer een pakketbezorging", + "voor het Stadion. Maak het snel!" ], "bb12win": [ - "Not bad driving. You really oughta race", - "in the city championship." + "Niet slecht rijden. Je zou echt moeten racen", + "in het stadskampioenschap." ], "bb13fail": [ - "You gotta work on your speed, man." + "Je moet aan je snelheid werken, man." ], "bb13int": [ - "I need you to take a valuable item over to Onin.", - "You won't be able to drive the whole way,", - "but you still have to move fast. Good luck." + "Ik wil dat je een waardevol item naar Onin brengt.", + "Je kunt niet de hele weg rijden,", + "maar je moet nog steeds snel handelen. Succes." ], "bb13win": [ - "That's the way to get it done, good work." + "Dat is de manier om het voor elkaar te krijgen, goed werk." ], "bb14fail": [ - "Too late, Jak! The agent is calling it off.", - "You need to reach it faster!" + "Te laat, Jak! De agent zegt het af.", + "Je moet het sneller bereiken!" ], "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." + "Jak, er wacht een agent op een pakketbezorging.", + "Bewakingsspionnen houden deze man in de gaten,", + "Dus als je hem niet snel te pakken krijgt, wordt hij gearresteerd.", + "Breng het pakket naar hem toe voordat het te laat is." ], "bb14win": [ - "Nice work, the delivery was a success. I like your style, Jak." + "Knap werk, de levering was een succes. Ik hou van je stijl, Jak." ], "bb15fail": [ - "You screwed up, Jak! You didn't get it to the safe zone", - "as we asked." + "Je hebt het verpest, Jak! Je hebt hem niet in de veilige zone gebracht", + "zoals wij vroegen." ], "bb15farr": [ - "Get off the bike and get clear, Jak!!" + "Stap van de fiets en ga weg, Jak!!" ], "bb15int": [ - "Jak, we found a bomb in the Slums", - "that was meant for the Shadow.", - "I need you to pick it up and take it out to the Farm Area", - "where we've marked a safe zone where it can explode.", - "Go quickly." + "Jak, we hebben een bom gevonden in de sloppenwijken", + "dat was bedoeld voor de Schaduw.", + "Ik heb nodig dat je het oppakt en naar het boerderijgebied brengt", + "waar we een veilige zone hebben gemarkeerd waar het kan ontploffen.", + "Ga snel." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "Dat was geweldig werk, Jak! Dank je, dat meen ik echt." ], "bb16fail": [ - "You didn't take out enough guards!", - "We need to hit them harder!" + "Je hebt niet genoeg bewakers uitgeschakeld!", + "We moeten ze harder slaan!" ], "bb16int": [ - "Jak, this is Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "inflict real damage on our enemies." + "Jak, dit is Torn.", + "De persoonlijke elite-garde van Erol trekt door de stad.", + "We moeten ze raken en hard slaan! Haal er voldoende uit", + "bewakers voordat ik de missie moet afblazen.", + "Als je te weinig bewakers hebt, hebben we een kans gemist", + "echte schade toebrengen aan onze vijanden." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Geweldige hit-'n-run, Jak! Dat stuurt een bericht naar Erol." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Het lijkt erop dat dat ding te moeilijk is om te gebruiken. We passeren voorlopig." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "We evalueren het nieuwe JET-Board voor gebruik in Underground", + "missies. We hebben gehoord dat je behoorlijk goed bent met dat ding,", + "laat ons zien wat het kan doen. Scoor voldoende punten met de", + "rechter-bot en we zullen overwegen om deze aan ons arsenaal toe te voegen." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", - "Good work." + "Wauw! Je kunt het beton echt verscheuren met die baby!", + "Goed werk." ], "bb18fail": [ - "I'm still not sure the JET-Board's that useful." + "Ik ben er nog steeds niet zeker van of het JET-Board zo nuttig is." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Hier is nog een geweldige plek om de prestaties te evalueren", + "van het JET-Board. Probeer ook hier voldoende punten te halen." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", - "catching us on those babies." + "Leuke bewegingen, Jak. De KG zou het moeilijk krijgen", + "ons op die baby's te betrappen." ], "bb19fail": [ - "You didn't get them all. Try again." + "Je hebt ze niet allemaal gekregen. Probeer het nog eens." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "We evalueren het gebruik van thuisbakens in missies.", + "Verkrijg alle bakens zo snel als je kunt.", + "Je moet hier snel mee aan de slag." ], "bb19win": [ - "Excellent work. You're a great asset", - "to the Underground, Jak." + "Uitstekend werk. Je bent een geweldige aanwinst.", + "naar de metro, Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "Te langzaam, Jak! Als de Schaduw erom vraagt, moet je leveren." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "De Schaduw heeft jou nodig om wat groene eco voor hem te verzamelen", + "experimenten. Haal alles voordat de eco verdwijnt." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "Niet slecht. Ik zal een goed woordje doen met de Schaduw." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Blijf het proberen. Je moet hier je vaardigheden ontwikkelen." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "Soms willen we Krimzon Guard \"lenen\"", + "apparatuur. Ga eens met die KG-patrouillemotor rijden", + "en alle doelen binnen de tijdslimiet raken." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Goed geschoten. De Guard zou je geweldig vinden als rekruut.", + "Hier is een kleine beloning om in plaats daarvan bij ons te blijven." ], "bb22fail": [ - "You didn't get the booths fast enough, Jak." + "Je hebt de cabines niet snel genoeg gekregen, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "Een deel van de propaganda van de Baron is zenuwslopend", + "de burgers. Schakel die hokjes uit, dan stoppen we Praxis", + "van het verspreiden van zijn leugens." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Goed werk! Dat zou de Baron een beetje de mond moeten snoeren." ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Je hebt verloren, Jak. Als je wilt winnen,", + "je kunt beter aan je snelheidsvaardigheden werken." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "De beste racer van The Underground wil je uitdagen", + "naar een race op Ring Course One.", + "Denk jij dat je een beetje concurrentie aankunt?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Gefeliciteerd! Je hebt de uitdager verslagen!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "Onze jongen heeft je hierin meegenomen. Volgende keer beter." ], "bb24int": [ - "Up for a little race, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "Zin in een kleine race, Jak?", + "Onze topchauffeur wil je ontmoeten op Ring Course Two.", + "Deze baby is een beetje moeilijker.", + "Laten we eens kijken of jij de uitdaging aankunt." ], "bb24win": [ - "You beat him, Jak. Nice driving." + "Je hebt hem verslagen, Jak. Lekker rijden." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", - "You lost!" + "Het lijkt erop dat je niet de beste racer in deze stad bent, Jak.", + "Je hebt verloren!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", - "This one's gonna get hairy." + "De racekampioen van de Underground wil je weer,", + "dit keer op de moeilijke Ringbaan Drie.", + "Deze wordt harig." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Gefeliciteerd, je hebt onze beste racer verslagen. Goed gedaan." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "Dit is Torn, een goede Underground-agent kent de stad", + "binnen en buiten, op zicht. Laten we eens kijken hoe je het doet,", + "binnen de gegeven tijdslimiet op deze plaats aankomen", + "en je krijgt een beloning. GAAN!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Hier is nog een kans om uw kennis van de stad te bewijzen." ], "bb28int": [ - "Find this place before time runs out." + "Vind deze plek voordat de tijd om is." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Hier is een moeilijke, versla de klok tot hier." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Herken je deze plek? Vind het snel en een beloning is voor jou." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Hier is een weinig bekende plek, vind het snel en ik zal onder de indruk zijn." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "Ik zou graag zien dat je deze plek vindt. Maak indruk op mij, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Kom snel hier en verras me." ], "bb34int": [ - "Here's another destination, get here quickly." + "Hier is nog een bestemming, kom er snel." ], "bb35int": [ - "Find this spot, fast!" + "Vind deze plek, snel!" ], "bb36int": [ - "Reach this area and be rewarded." + "Bereik dit gebied en word beloond." ], "bb37int": [ - "Think you can find this place?" + "Denk je dat je deze plek kunt vinden?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "Niet zo goed, Jak! Misschien moet je dat bord kalibreren." ], "bb38int": [ - "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", - "in the time limit allotted." + "We zijn het JET-Board nog aan het evalueren.", + "Laten we eens kijken of je alle energieboosts kunt verzamelen", + "binnen de gestelde tijdslimiet." ], "bb38win": [ - "Nice moves, fly-boy." + "Mooie bewegingen, vliegjongen." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "Zo dichtbij, maar in deze business betekent dat dood." ], "bb39int": [ - "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Neem dat JET-Board op de proef op een Ring Course.", + "Als je de tijd hebt, laat ik jouw gezicht tatoeëren zoals het mijne." ], "bb39win": [ - "Good speed through the course, Jak!", - "That one looked too easy." + "Goede snelheid door het parcours, Jak!", + "Die zag er te gemakkelijk uit." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "You were too slow on that course." + "Het lijkt erop dat je je match hebt ontmoet, Jak!", + "Je was te langzaam op dat parcours." ], "bb40int": [ - "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "let's see if you can complete it in time." + "Ik zou graag zien dat je het JET-Board door een ander neemt", + "Ringcursus. We zullen deze een beetje interessanter maken,", + "Laten we eens kijken of je het op tijd kunt voltooien." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Wauw! Zelfs ik zou daar moeite mee hebben, goed gedaan!" ], "bf001": [ - "My shield is impervious to your attacks!" + "Mijn schild is ongevoelig voor jouw aanvallen!" ], "bf002": [ - "You cannot hurt me!" + "Je kunt mij geen pijn doen!" ], "bf003": [ - "Fool! Nothing can touch me!" + "Gek! Niets kan mij raken!" ], "bf004": [ - "You're powerless!" + "Je bent machteloos!" ], "bf005": [ - "There is nothing you can do!" + "Er is niets wat je kunt doen!" ], "bf006": [ "HAHAHAHAHAHA!" @@ -1045,193 +1045,193 @@ "HAHAHAHA!" ], "bf008": [ - "Come get me!" + "Kom me halen!" ], "bf009": [ - "Come closer!" + "Kom dichterbij!" ], "bf010": [ - "Try me now!" + "Probeer mij nu!" ], "bf011": [ - "Let's make this personal!" + "Laten we dit persoonlijk maken!" ], "bf012": [ - "Surprise!" + "Verrassing!" ], "bf013": [ - "Don't fall!" + "Val niet!" ], "bf014": [ - "I will crush you!" + "Ik zal je verpletteren!" ], "bf015": [ - "Take this!" + "Pak aan!" ], "bf016": [ - "Here I come!" + "Hier kom ik!" ], "bf017": [ - "Why won't you die?!" + "Waarom ga je niet dood?!" ], "bf018": [ - "Your Dark Eco powers surprise me!" + "Je Dark Eco-krachten verrassen me!" ], "bf019": [ - "Your arrogance will be your downfall!" + "Je arrogantie zal je ondergang zijn!" ], "bf020": [ - "The Stone is mine!" + "De steen is van mij!" ], "bf021": [ - "Give me the Stone!" + "Geef mij de Steen!" ], "bf022": [ - "Release it!" + "Geef het vrij!" ], "bf023": [ - "I want the Stone!" + "Ik wil de Steen!" ], "bf024": [ - "Argh, let go!" + "Argh, laat los!" ], "bf025": [ - "It's mine!" + "Het is van mij!" ], "bf026": [ - "Try these on for size!" + "Probeer deze op maat!" ], "bf027": [ - "Here's a little present!" + "Hier is een klein cadeautje!" ], "bf028": [ - "Want some more?" + "Meer willen?" ], "bf029": [ - "I grow tired of this, now you die!" + "Ik word dit beu, nu sterf je!" ], "bf030": [ - "You cannot run away from these!" + "Je kunt hier niet voor weglopen!" ], "bf031": [ - "Allow me to share the pain!" + "Sta mij toe de pijn te delen!" ], "bf032": [ - "Now you're mine!" + "Nu ben je van mij!" ], "bf033": [ - "Here's some hell!" + "Hier is een hel!" ], "bf034": [ - "Say good night!" + "Zeg slaaplekker!" ], "bf035": [ - "Enjoy your next life!" + "Geniet van je volgende leven!" ], "bf036": [ - "It's over!" + "Het is voorbij!" ], "bf037": [ - "Burn in hell!" + "Brand in de hel!" ], "bf038": [ - "The Stone is mine! Let me show you what it can do!" + "De steen is van mij! Ik laat je zien wat het kan doen!" ], "bf039": [ - "Now you see the Stone's power in capable hands!" + "Nu zie je dat de kracht van de Steen in bekwame handen is!" ], "bf040": [ - "How's that for power?" + "Hoe is dat voor macht?" ], "bf041": [ - "Now you see!" + "Zo zie je maar!" ], "bf042": [ - "I am invincible now!" + "Ik ben nu onoverwinnelijk!" ], "bf043": [ - "You cannot run forever!" + "Je kunt niet eeuwig blijven rennen!" ], "bf044": [ - "I have all the power I need!" + "Ik heb alle kracht die ik nodig heb!" ], "bf045": [ - "You can't avoid this!" + "Dit kun je niet vermijden!" ], "bf046": [ - "Here's a little something special!" + "Hier is iets speciaals!" ], "bf047": [ - "Come to me!" + "Kom naar me toe!" ], "bf048": [ - "Come here!" + "Kom hier!" ], "bf049": [ - "Let's get closer!" + "Laten we dichterbij komen!" ], "bf050": [ - "Nothing can save you now!" + "Niets kan je nu nog redden!" ], "bf051": [ - "You're history!" + "Jij bent geschiedenis!" ], "bf052": [ - "I am the city's savior, not you!" + "Ik ben de redder van de stad, niet jij!" ], "bf053": [ - "Die!" + "Dood gaan!" ], "bf054": [ - "It's over!" + "Het is voorbij!" ], "bf055": [ - "I've got you!" + "Ik heb je!" ], "bf056": [ - "Now you die!" + "Nu sterf je!" ], "bf057": [ - "NOOOOOO!" + "NEEOOOO!" ], "bf058": [ - "No!" + "Nee!" ], "bf059": [ - "NO!" + "NEE!" ], "bf060": [ - "Uorghh!" + "Oergh!" ], "bf061": [ - "Ahh!" + "Ah!" ], "bf062": [ - "Ungh!" + "Ongh!" ], "bf063": [ - "Raghh!" + "Raghhh!" ], "bf064": [ - "We finish this now!" + "We maken dit nu af!" ], "bf065": [ - "Eat this!" + "Eet dit!" ], "bf066": [ "Stop!" ], "bf067": [ - "You idiot, you're no match for me!" + "Idioot, je bent geen partij voor mij!" ], "bf068": [ - "Why don't you die!?" + "Waarom ga je niet dood!?" ], "bf069": [ - "Give up and I'll make it painless!" + "Geef het op en ik zal het pijnloos maken!" ], "bf070": [ - "You cannot win!" + "Je kan niet winnen!" ], "bf071": [ "Aha!" @@ -1246,73 +1246,73 @@ "Urgh!" ], "bf075": [ - "You can do better than that!" + "Je kunt het beter doen dan dat!" ], "bf076": [ - "You're mine!" + "Je bent van mij!" ], "bf077": [ - "Why won't you die!?" + "Waarom ga je niet dood!?" ], "bf078": [ - "I have the ultimate power!" + "Ik heb de ultieme macht!" ], "bf079": [ - "Die!" + "Dood gaan!" ], "bf080": [ - "Is that your best shot?" + "Is dat je beste kans?" ], "bf081": [ - "Now you die!" + "Nu sterf je!" ], "bf082": [ - "Get off my tower!" + "Ga van mijn toren af!" ], "bf083": [ - "We'll see about that!" + "Dat zullen we zien!" ], "bf084": [ - "You really think you have a chance?" + "Denk je echt dat je een kans maakt?" ], "bf085": [ - "Fear me!" + "Vrees mij!" ], "bf086": [ - "You're nothing!" + "Je bent niks!" ], "bf087": [ - "My shield is now recharged!" + "Mijn schild is nu opgeladen!" ], "bf088": [ - "Try these on for size!" + "Probeer deze op maat!" ], "bf089": [ - "I should have killed you long ago!" + "Ik had je al lang geleden moeten vermoorden!" ], "bf090": [ - "Never a dull moment, eh?" + "Nooit een saai moment, toch?" ], "bf091": [ - "Stand still!" + "Blijf staan!" ], "bf092": [ - "Go back to wherever you came from!" + "Ga terug naar waar je vandaan komt!" ], "bf093": [ - "You're both going to die by my hand!" + "Jullie gaan allebei door mijn hand sterven!" ], "bf094": [ - "Come closer!" + "Kom dichterbij!" ], "bf095": [ - "To the end!" + "Naar het einde!" ], "bf096": [ - "You cannot win!" + "Je kan niet winnen!" ], "bf097": [ - "Come here!" + "Kom hier!" ], "bf098": [ "ARGHHH!" @@ -1324,184 +1324,184 @@ "Urgh!" ], "bf101": [ - "Oof!" + "Oef!" ], "bf102": [ - "Noooo!" + "Neeee!" ], "bf103": [ - "No!" + "Nee!" ], "bf104": [ - "Not again!" + "Niet weer!" ], "bf105": [ - "It can't be!" + "Dat kan niet!" ], "bf106": [ - "Not this time!" + "Deze keer niet!" ], "bf107": [ "Stop!" ], "bf108": [ - "Damn!" + "Verdomd!" ], "bf109": [ - "Why, you little...!" + "Waarom jij kleine...!" ], "bf110": [ - "Now you've made me angry!" + "Nu heb je mij boos gemaakt!" ], "bf111": [ - "Impressive, but let's try that again!" + "Indrukwekkend, maar laten we het nog eens proberen!" ], "bf112": [ - "The stronger man always wins!" + "De sterkste wint altijd!" ], "bf113": [ - "Your loss was inevitable, Jak!" + "Jouw verlies was onvermijdelijk, Jak!" ], "bf114": [ - "You could never be a baron!" + "Jij zou nooit een baron kunnen worden!" ], "bf115": [ - "I knew you were weak!" + "Ik wist dat je zwak was!" ], "bf116": [ - "Hm, I expected more from you!" + "Hm, ik had meer van je verwacht!" ], "bf117": [ - "Losing is for the weak!" + "Verliezen is voor de zwakken!" ], "bf118": [ - "How pathetic!" + "Hoe zielig!" ], "bf119": [ - "That was too easy!" + "Dat was te gemakkelijk!" ], "bf120": [ - "Sorry, old boy, it's just war!" + "Sorry, ouwe jongen, het is gewoon oorlog!" ], "bf121": [ - "Too bad you don't have what it takes!" + "Jammer dat je niet hebt wat nodig is!" ], "bf122": [ - "The better man won!" + "De betere man heeft gewonnen!" ], "bf123": [ - "We're similar, Jak... oh, except you're dead!" + "We lijken op elkaar, Jak... oh, behalve dat je dood bent!" ], "bf124": [ - "Feel the fury of the Precursor Stone!" + "Voel de woede van de Precursor Stone!" ], "bf125": [ - "With the Stone's power, I am invincible!" + "Met de kracht van de Steen ben ik onoverwinnelijk!" ], "bf126": [ - "All will fear me now!" + "Iedereen zal nu bang voor me zijn!" ], "bf127": [ - "Time to die!" + "Tijd om te sterven!" ], "bf128": [ - "My little friends will take care of you!" + "Mijn kleine vrienden zullen voor je zorgen!" ], "bf129": [ - "You can't run forever, Jak!" + "Je kunt niet eeuwig blijven rennen, Jak!" ], "bf130": [ - "Now I've got you!" + "Nu heb ik jou!" ], "bf131": [ - "Surprise!" + "Verrassing!" ], "bf132": [ - "I have better things to do than waste my time with you!" + "Ik heb betere dingen te doen dan mijn tijd met jou te verspillen!" ], "bf133": [ - "You are nothing!" + "Jij bent niets!" ], "bf134": [ - "Annoying insect, die!" + "Vervelend insect, sterf!" ], "bf135": [ - "Not bad, but let me show you what real power is!" + "Niet slecht, maar laat me je laten zien wat echte kracht is!" ], "bf136": [ - "Feel this!" + "Voel dit!" ], "bru001": [ - "Great smelly breath of a goosesnake!", - "Heroes to Lurker people you be!", - "By now just see much happy thanks! Ruhuhuh.", - "You honorary members of Lurker tribe now.", - "We no forget - if ever you need us, we help you!" + "Geweldige stinkende adem van een ganzenslang!", + "Helden voor de mensen van de Lurker zijn jullie!", + "Zie nu gewoon veel blije dank! Ruhuhuh.", + "Jullie zijn nu ereleden van de Lurker-stam.", + "We vergeten het niet: als u ons ooit nodig heeft, helpen wij u!" ], "bru002": [ - "I hears you two look for a piece of Mar's shiny Seal.", - "Brutter loves shiny bright things too.", - "I have piece I thinks. It in Water Slums,", - "hanging over me hut and you free to have.", - "Gift from Brutter!" + "Ik hoor dat jullie zoeken naar een stukje van Mar's glimmende zeehond.", + "Brutter houdt ook van glanzende, heldere dingen.", + "Ik heb een stuk denk ik. Het in watersloppenwijken,", + "Hangt boven mijn hut en jij bent vrij om te hebben.", + "Cadeautje van Brutter!" ], "bru004": [ - "You two good! No better warrior in all Lurker tribes!", - "You keep Seal. You love shiny things just like Brutter." + "Jullie twee goed! Geen betere krijger in alle Lurker-stammen!", + "Jij houdt Seal. Je houdt van glimmende dingen, net als Brutter." ], "cit001": [ - "Hey!" + "Hoi!" ], "cit004": [ - "Watch it!" + "Bekijk het!" ], "cit008": [ - "No!" + "Nee!" ], "cit010": [ - "Argh!" + "Arg!" ], "cit016": [ - "Stay away!" + "Blijf weg!" ], "cit033": [ - "Hey!" + "Hoi!" ], "cit034": [ - "Look out!" + "Pas op!" ], "cit035": [ - "Watch out!" + "Kijk uit!" ], "cit046": [ - "Go away!" + "Ga weg!" ], "cit047": [ - "Leave me alone!" + "Laat me alleen!" ], "cit051": [ - "Are you crazy?" + "Ben je gek?" ], "cit053": [ - "Are you insane?!" + "Ben je gek?!" ], "cit055": [ - "Hey, that's my vehicle!" + "Hé, dat is mijn voertuig!" ], "cit056": [ - "Gimme back my vehicle!" + "Geef me mijn voertuig terug!" ], "cit057": [ - "What are you doing?" + "Wat ben je aan het doen?" ], "cit058": [ - "Please, don't take it!" + "Alsjeblieft, neem het niet aan!" ], "cit097": [ "Ugh!" ], "cit097a": [ - "Aahh!" + "Ahhh!" ], "cit097b": [ "Aaghhh!" @@ -1513,7 +1513,7 @@ "AAHHH!" ], "cit098": [ - "Ahh!!" + "Ah!!" ], "cit098a": [ "Urgh!" @@ -1525,34 +1525,34 @@ "Ugh!" ], "cit098d": [ - "Ahh!" + "Ah!" ], "cit099": [ - "No!" + "Nee!" ], "cit099a": [ - "Noooo!" + "Neeee!" ], "cit099b": [ - "No!" + "Nee!" ], "cit099c": [ - "No!" + "Nee!" ], "cit099d": [ - "Nooo!" + "Neeee!" ], "cit100": [ - "Please!" + "Alsjeblieft!" ], "cit100a": [ - "Please!" + "Alsjeblieft!" ], "cit100b": [ - "Please!" + "Alsjeblieft!" ], "cit100c": [ - "Please!" + "Alsjeblieft!" ], "cit101": [ "Stop!" @@ -1567,1646 +1567,1646 @@ "Stop!" ], "cit103": [ - "Sound the alarm!" + "Sla alarm!" ], "cit103a": [ - "Sound the alarm!" + "Sla alarm!" ], "cit104": [ - "Guards!" + "Bewakers!" ], "cit104a": [ - "Guards! Help us!" + "Bewakers! Help ons!" ], "cit105": [ - "Help us!" + "Help ons!" ], "cit120": [ - "Keep away from me!" + "Blijf uit mijn buurt!" ], "cit120a": [ - "Keep away from me!" + "Blijf uit mijn buurt!" ], "cit137a": [ - "Wait!" + "Wachten!" ], "cityv001": [ - "Leaving city safe zone." + "De veilige zone van de stad verlaten." ], "cityv002": [ - "Leaving city at your own risk." + "Het verlaten van de stad is op eigen risico." ], "cityv003": [ - "Exiting city." + "Verlaten stad." ], "cityv004": [ - "Opening outer shield." + "Buitenschild openen." ], "cityv005": [ - "Decontamination complete." + "Decontaminatie voltooid." ], "cityv006": [ - "Entering Haven City." + "Havenstad binnenrijden." ], "cityv007": [ - "Re-entering city." + "Stad opnieuw binnenkomen." ], "cityv008": [ - "Welcome back." + "Welkom terug." ], "cityv009": [ - "It's good to see you still alive." + "Het is goed om te zien dat je nog leeft." ], "cityv010": [ - "Security clearance granted." + "Veiligheidsmachtiging verleend." ], "cityv011": [ - "Entrance denied. You do not have proper clearance." + "Toegang geweigerd. U beschikt niet over de juiste bevoegdheid." ], "cityv012": [ - "I am unable to comply." + "Ik ben niet in staat hieraan te voldoen." ], "cityv013": [ - "Please come back with proper clearance." + "Kom alstublieft terug met de juiste toestemming." ], "cityv014": [ - "Access denied." + "Toegang geweigerd." ], "cityv015": [ - "You need Red Clearance for this gate." + "Voor deze poort heeft u Red Clearance nodig." ], "cityv016": [ - "You need Green Clearance for this gate." + "Voor deze poort heeft u een Green Clearance nodig." ], "cityv017": [ - "You need Yellow Clearance for this gate." + "Voor deze poort heeft u Yellow Clearance nodig." ], "cityv018": [ - "You need Blue Clearance for this gate." + "Voor deze poort heeft u Blue Clearance nodig." ], "cityv019": [ - "You need Purple Clearance for this gate." + "Voor deze poort heb je Purple Clearance nodig." ], "cityv020": [ - "You need special Black Clearance for this door." + "Voor deze deur hebt u speciale zwarte speling nodig." ], "cityv021": [ - "Access granted." + "Toegang verleend." ], "cityv022": [ - "Door open." + "Deur open." ], "cityv023": [ - "Door closed." + "Deur dicht." ], "cityv024": [ - "Please enter." + "Kom binnen alstublieft." ], "cityv025": [ - "Warp Gate online." + "Warppoort online." ], "cityv026": [ - "Warning: Eco supplies low." + "Waarschuwing: Eco-voorraden zijn bijna op." ], "cityv027": [ - "Backup systems failing." + "Back-upsystemen falen." ], "cityv028": [ - "Warning: Eco storage is below safe minimums." + "Waarschuwing: Eco-opslag ligt onder de veilige minimumwaarden." ], "cityv029": [ - "Eco Grid unstable." + "Eco-net instabiel." ], "cityv030": [ - "Metal Heads detected at Mining Site." + "Metaalkoppen gedetecteerd op mijnlocatie." ], "cityv031": [ - "Metal Heads detected at Drilling Site." + "Metaalkoppen gedetecteerd op boorlocatie." ], "cityv032": [ - "Stand by for clearance." + "Sta klaar voor goedkeuring." ], "cityv033": [ - "Have a nice day." + "Prettige dag." ], "cityv034": [ - "Welcome." + "Welkom." ], "cityv035": [ - "This is a restricted area." + "Dit is een beperkt gebied." ], "cityv036": [ - "You are in violation of Speed Ordinance 51d, pull over." + "U overtreedt snelheidsverordening 51d, stop." ], "cityv037": [ - "I have alerted the authorities." + "Ik heb de autoriteiten gewaarschuwd." ], "cityv038": [ - "This sector is closed." + "Deze sector is gesloten." ], "cityv039": [ - "Alert: Prison escape in progress." + "Waarschuwing: ontsnapping uit de gevangenis is bezig." ], "cityv040": [ - "Alert: City under attack." + "Waarschuwing: stad wordt aangevallen." ], "cityv041": [ - "Metal Head attack in progress." + "Metal Head-aanval bezig." ], "cityv042": [ - "All citizens go to safe shelters." + "Alle burgers gaan naar veilige schuilplaatsen." ], "cityv043": [ - "Eco Grid growing unstable." + "Eco Grid wordt instabiel." ], "cityv044": [ - "The Eco Grid is down. Repeat: The Eco Grid is down." + "Het Eco-grid is uitgevallen. Herhaal: het Eco Grid is uitgevallen." ], "cityv045": [ - "Red alert: City shield wall compromised." + "Rood alarm: stadsschildmuur aangetast." ], "cityv046": [ - "Unauthorized movement in sewer system." + "Ongeoorloofde verplaatsing in het rioolstelsel." ], "cityv047": [ - "This is a restricted area. Defenses activated." + "Dit is een beperkt gebied. Verdedigingen geactiveerd." ], "cityv048": [ - "You are trespassing. Defenses coming online." + "Je bent in overtreding. Verdedigingen komen online." ], "cityv049": [ - "I regret use of force. Systems arming." + "Ik betreur het gebruik van geweld. Systemen inschakelen." ], "cityv050": [ - "Trespasser neutralized." + "Overtreder geneutraliseerd." ], "cityv051": [ - "Suspect destroyed." + "Verdachte vernietigd." ], "cityv052": [ - "I am authorized to use force." + "Ik ben bevoegd om geweld te gebruiken." ], "cityv053": [ - "General alert: Riot in progress. Krimzon Guards en route." + "Algemene waarschuwing: er is een rellen gaande. Krimzon-wachten onderweg." ], "cityv054": [ - "Surrender yourself. You are under arrest." + "Geef jezelf over. Je staat onder arrest." ], "cityv055": [ - "There is no escape." + "Er is geen uitweg." ], "cityv056": [ - "You are in a restricted sector. This sector is on high alert." + "U bevindt zich in een beperkte sector. Deze sector is zeer alert." ], "cityv057": [ - "You are under arrest. Surrender yourself." + "Je staat onder arrest. Geef jezelf over." ], "cityv058": [ - "This sector is off limits." + "Deze sector is verboden terrein." ], "cityv061": [ - "All systems back online and in the green." + "Alle systemen weer online en in het groen." ], "cityv062": [ - "The race is about to begin." + "De race gaat beginnen." ], "cityv063": [ - "Welcome to the city transportation system." + "Welkom bij het stadsvervoersysteem." ], "cityv064": [ - "You can thrust in your vehicle at any time." + "U kunt op elk moment uw voertuig insteken." ], "cityv065": [ - "Braking will assist in vehicle control." + "Remmen helpt bij de controle van het voertuig." ], "cityv067": [ - "Backing up is easy." + "Een back-up maken is eenvoudig." ], "cityv068": [ - "You can hover in one of two zones: low and high." + "Je kunt in een van de twee zones zweven: laag en hoog." ], "cityv069": [ - "Try switching hover zones." + "Probeer van zweefzone te wisselen." ], "cityv070": [ - "Switching hover zones may help avoid traffic or", - "ground obstacles." + "Het wisselen van hoverzones kan helpen verkeer te vermijden of", + "obstakels op de grond." ], "cityv075": [ - "Alert: Vehicle destruction imminent." + "Waarschuwing: voertuigvernietiging dreigt." ], "cityv076": [ - "Please drive more carefully next time." + "Rijd de volgende keer alstublieft voorzichtiger." ], "cityv077": [ - "Thank you for using the vehicle." + "Bedankt voor het gebruik van het voertuig." ], "cityv078": [ - "Have a nice day." + "Prettige dag." ], "cityv079": [ - "Warning: Missile cooling systems damaged." + "Waarschuwing: raketkoelsystemen beschadigd." ], "cityv080": [ - "Alert: Backup cooling system failure.", - "Emergency overrides initiated." + "Waarschuwing: Storing in het back-upkoelsysteem.", + "Noodoverrides zijn gestart." ], "cityv081": [ - "Missile systems at critical overload.", - "Failsafe not responding." + "Raketsystemen bij kritieke overbelasting.", + "Failsafe reageert niet." ], "cityv082": [ - "Danger: Warhead detonation imminent.", - "Evacuate immediately." + "Gevaar: ontploffing van de kernkop dreigt.", + "Evacueer onmiddellijk." ], "cityv087": [ - "Arriving at Throne Room floor." + "Aankomst op de verdieping van de troonzaal." ], "cityv088": [ - "Arriving at ground floor." + "Aankomst op de begane grond." ], "cityv093": [ - "You have been sentenced to termination." + "U bent veroordeeld tot ontslag." ], "cityv094": [ - "This area is restricted.", - "Initiating termination with extreme prejudice." + "Dit gebied is beperkt toegankelijk.", + "Beëindiging initiëren met extreem vooroordeel." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Dit gebied is uitsluitend toegankelijk voor personeel van de Krimzonwacht." ], "cityv096": [ - "The city is on high alert." + "De stad is zeer alert." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "De stad wordt aangevallen.", + "Alle burgers gaan naar veilige schuilplaatsen." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "De stad wordt aangevallen. Blijf alstublieft in uw huizen." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "Metal Head-agressors infiltreren het systeem." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Gefeliciteerd met het ontvangen van een beveiligingspas." ], "cityv107": [ - "Unauthorized use of Fortress door.", - "Activating security tank." + "Ongeautoriseerd gebruik van de Fortdeur.", + "Beveiligingstank activeren." ], "cityv108": [ - "Gunpod weapons coming online." + "Gunpod-wapens komen online." ], "cityv109": [ - "Weapons overheating." + "Oververhitting van wapens." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "Wapens buiten werking. Wacht tot het is afgekoeld." ], "cityv111": [ - "Weapons back online." + "Wapens weer online." ], "cityv112": [ - "The gunpod has taken severe damage." + "De gunpod heeft ernstige schade opgelopen." ], "cityv130": [ - "The city map is displayed in the lower right." + "Rechtsonder wordt de stadsplattegrond weergegeven." ], "cityv132": [ - "Follow the icons on the map", - "to reach important destinations." + "Volg de iconen op de kaart", + "om belangrijke bestemmingen te bereiken." ], "cityv134": [ - "Intruder alert." + "Inbraakwaarschuwing." ], "cityv135": [ - "Stand by." + "Stand-by." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Ik ervaar een overbelasting van het circuit.", + "Schakel mijn bypass-schakelaars binnen de tijdslimiet in", + "en je wordt beloond." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "U hebt het bypass-net niet op tijd ingeschakeld.", + "Mijn C-Zone-circuits zijn overbelast." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "U hebt de bypass succesvol ingeschakeld", + "voor mijn circuits in de tijd.", + "Hier is een beloning." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", - "to stabilize the Eco Grid." + "Ik heb noodstroom nodig voor mijn Eco Converters.", + "Schakel snel alle beschikbare circuits in", + "om het Eco Grid te stabiliseren." ], "cityv150": [ - "You didn't reach all the switches in time.", - "The Eco Grid is still unstable." + "Je hebt niet alle schakelaars op tijd bereikt.", + "Het Eco Grid is nog steeds instabiel." ], "cityv151": [ - "You successfully switched on the circuits", - "to stabilize the Eco Grid.", - "You have earned a reward." + "Je hebt de circuits met succes ingeschakeld", + "om het Eco Grid te stabiliseren.", + "Je hebt een beloning verdiend." ], "cityv152": [ - "I have detected a Dark Eco spill.", - "You must remove this hazard quickly", - "before the city is contaminated." + "Ik heb een Dark Eco-lek gedetecteerd.", + "U moet dit gevaar snel wegnemen", + "voordat de stad besmet raakt." ], "cityv153": [ - "You did not remove all the Dark Eco quickly enough." + "Je hebt niet alle Dark Eco snel genoeg verwijderd." ], "cityv154": [ - "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "Je hebt het Dark Eco-gevaar op tijd verwijderd.", + "De stad is je dankbaar." ], "cityv155": [ - "Sensors indicate a cluster of Blue Eco in the city.", - "Collect all eco before it dissipates", - "and you will be rewarded." + "Sensoren duiden op een cluster van Blue Eco in de stad.", + "Verzamel alle eco voordat deze verdwijnt", + "en je wordt beloond." ], "cityv156": [ - "You did not retrieve all of the eco." + "Je hebt niet alle eco opgehaald." ], "cityv157": [ - "You successfully retrieved the eco.", - "Here is your reward." + "Je hebt de eco succesvol opgehaald.", + "Hier is je beloning." ], "cityv158": [ - "Emergency response needed.", - "Runaway bomb bots detected and headed for", - "populated areas. Neutralize all bomb bots", - "before it's too late." + "Noodreactie nodig.", + "Op hol geslagen bombots gedetecteerd en op weg naar", + "bevolkte gebieden. Neutraliseer alle bombots", + "voordat het te laat is." ], "cityv159": [ - "You failed to neutralize the runaway bomb bots." + "Je bent er niet in geslaagd de op hol geslagen bombots te neutraliseren." ], "cityv160": [ - "You destroyed the runaway bomb bots.", - "The city thanks you." + "Je hebt de weggelopen bombots vernietigd.", + "De stad bedankt je." ], "cityv161": [ - "Get to this point in the game quickly", - "and you will receive a prize." + "Bereik dit punt in het spel snel", + "en je ontvangt een prijs." ], "cityv162": [ - "Try to find this spot." + "Probeer deze plek te vinden." ], "cityv163": [ - "Can you identify this place and get there?" + "Kun jij deze plek identificeren en er komen?" ], "cityv164": [ - "Make it here in the time allotted and a reward is yours." + "Als je hier binnen de toegewezen tijd bent, ontvang je een beloning." ], "cityv165": [ - "Find this spot for a prize." + "Vind deze plek voor een prijs." ], "cityv166": [ - "Get to this spot for a prize." + "Ga naar deze plek en je krijgt een prijs." ], "cityv167": [ - "Metal Heads have been detected in the gun course.", - "Neutralize them all immediately." + "Er zijn Metal Heads gedetecteerd in de schietbaan.", + "Neutraliseer ze allemaal onmiddellijk." ], "cityv168": [ - "You did not kill them all." + "Je hebt ze niet allemaal vermoord." ], "cityv169": [ - "Excellent shooting. Threat eliminated." + "Uitstekend schieten. Bedreiging geëlimineerd." ], "cityv170": [ - "Get a high score on the JET-Board and receive a prize." + "Behaal een hoge score op het JET-Board en ontvang een prijs." ], "cityv171": [ - "Try for a high score and receive a prize." + "Probeer een hoge score te behalen en ontvang een prijs." ], "cityv172": [ - "You did not achieve a high enough score." + "Je hebt een onvoldoende score behaald." ], "cityv173": [ - "Congratulations, you achieved a high enough score." + "Gefeliciteerd, je hebt een voldoende hoge score behaald." ], "cityv174": [ - "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Welkom bij de centrale computer van het stadion.", + "Selecteer uw uitdaging." ], "cityv175": [ - "Attention, all citizens:", - "The Class 1 Race is about to begin." + "Let op, alle burgers:", + "De klasse 1-race staat op het punt te beginnen." ], "cityv176": [ - "Attention, all citizens:", - "The Class 2 Race is about to begin." + "Let op, alle burgers:", + "De klasse 2-race staat op het punt te beginnen." ], "cityv177": [ - "Attention, all citizens:", - "The Class 3 Race is about to begin." + "Let op, alle burgers:", + "De klasse 3-race staat op het punt te beginnen." ], "cityv178": [ - "Care to try for the course record?" + "Wil je proberen voor het parcoursrecord?" ], "cityv179": [ - "Congratulations, you achieved the gold record." + "Gefeliciteerd, je hebt het gouden record behaald." ], "cityv180": [ - "Congratulations, you achieved the silver record." + "Gefeliciteerd, je hebt het zilveren record behaald." ], "cityv181": [ - "Congratulations, you achieved the bronze record." + "Gefeliciteerd, je hebt het bronzen record behaald." ], "cityv182": [ - "Care to try for a high score record?" + "Wilt u proberen een record met hoge scores te behalen?" ], "cityv183": [ - "Would you like to try for a high score?" + "Wil je proberen voor een hoge score?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Welkom bij de racetijdritten." ], "cityv185": [ - "Would you like to race for a record time?" + "Wil jij een recordtijd racen?" ], "cityv186": [ - "Choose your course." + "Kies je cursus." ], "cityv187": [ - "Would you like to try for a course record?" + "Wilt u een parcoursrecord proberen?" ], "cityv188": [ - "Would you like to use Orbs to buy a secret?" + "Wil je Orbs gebruiken om een ​​geheim te kopen?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "Je hebt niet genoeg Orbs voor dit geheim." ], "cityv190": [ - "Secret activated." + "Geheim geactiveerd." ], "cityv191": [ - "All secrets are activated." + "Alle geheimen zijn geactiveerd." ], "cityv192": [ - "Please exit the Titan Suit." + "Verlaat alstublieft het Titan Suit." ], "cityv193": [ - "You must exit the Titan Suit." + "Je moet het Titan Suit verlaten." ], "cityv194": [ - "Vehicles must remain within city limits." + "Voertuigen moeten binnen de stadsgrenzen blijven." ], "cityv195": [ - "Exit denied. Enemy targets still present." + "Uitgang geweigerd. Vijandelijke doelen zijn nog steeds aanwezig." ], "cityv196": [ - "Exit denied. Metal Head eggs still detected." + "Uitgang geweigerd. Metal Head-eieren nog steeds gedetecteerd." ], "cityv197": [ - "Scanners show Metal Head eggs still active." + "Scanners tonen aan dat Metal Head-eieren nog steeds actief zijn." ], "daxm001": [ - "Shoot the platform, Jak." + "Schiet op het platform, Jak." ], "daxm002": [ - "We need something to get through that gate!" + "We hebben iets nodig om door die poort te komen!" ], "daxm003": [ - "Shoot the Metal Head when he moves his shield!" + "Schiet op de Metal Head als hij zijn schild beweegt!" ], "daxm004": [ - "Hit him in his stomach!" + "Sla hem in zijn maag!" ], "daxm005": [ - "Whoa! That path dropped like uh... a rock!" + "Wauw! Dat pad viel als een steen!" ], "daxm006": [ - "Smack the box, baby!" + "Sla op de doos, schat!" ], "daxm007": [ - "That's what I call a rocky road!" + "Dat noem ik nog een rotsachtige weg!" ], "daxm008": [ - "We gotta get to the top!" + "We moeten naar de top!" ], "daxm009": [ - "We made it!!" + "We maakten het!!" ], "daxm010": [ - "Rock 'n roll!" + "Rock-'n-roll!" ], "ds001": [ - "We gotta find the Baron, Jak." + "We moeten de Baron vinden, Jak." ], "ds005": [ - "Jak, those are Metal Heads!" + "Jak, dat zijn Metal Heads!" ], "ds006": [ - "Finally, now we get to see the Shadow!", - "What do ya gotta do around this place to get noticed?" + "Eindelijk krijgen we nu de Schaduw te zien!", + "Wat moet je hier doen om opgemerkt te worden?" ], "ds012": [ - "That must be the Ruby Key to the city." + "Dat moet de Ruby Key van de stad zijn." ], "ds013": [ - "Statues are becoming an endangered species around here." + "Beelden worden hier een bedreigde diersoort." ], "ds014": [ - "So this is Mar's scary tomb, eh?", - "Doesn't look so bad." + "Dus dit is Mar's enge tombe, hè?", + "Ziet er niet zo slecht uit." ], "ds016": [ - "Let's bring the money back to Krew." + "Laten we het geld terugbrengen naar Krew." ], "ds017": [ - "That must be the ammo and missile Torn told us to blow up!" + "Dat moeten de munitie en raket zijn die Torn ons vertelde om op te blazen!" ], "ds018": [ - "Get the tank to shoot the missile!" + "Laat de tank de raket afschieten!" ], "ds019": [ - "Break those tubes in the center." + "Breek de buisjes in het midden af." ], "ds020": [ - "Please tell me you remember how to roll..." + "Vertel me alsjeblieft dat je nog weet hoe je moet rollen..." ], "ds023": [ - "Let's rock!" + "Laten we rocken!" ], "ds024": [ - "Here we go!" + "Daar gaan we!" ], "ds025": [ - "All right!" + "Oke!" ], "ds026": [ - "Yeah!" + "Ja!" ], "ds028": [ - "Oh yeah!" + "O ja!" ], "ds029": [ - "Let's go back to the city." + "Laten we teruggaan naar de stad." ], "ds030": [ - "I think we need to go back to the city, Jak." + "Ik denk dat we terug moeten naar de stad, Jak." ], "ds031": [ - "Let's go talk to Torn." + "Laten we met Torn gaan praten." ], "ds032": [ - "Let's go back to the Underground Hideout." + "Laten we teruggaan naar de ondergrondse schuilplaats." ], "ds043": [ - "You can get a longer jump by rolling into it." + "Je kunt een langere sprong maken door erin te rollen." ], "ds044": [ - "Use a long jump to get across this gap." + "Gebruik een versprong om deze kloof te overbruggen." ], "ds045": [ - "Nice form!" + "Mooie vorm!" ], "ds046": [ - "If you duck before you jump, you'll go higher.", - "You'll need a high jump to reach the top of this ledge, Jak." + "Als je bukt voordat je springt, ga je hoger.", + "Je hebt een hoge sprong nodig om de top van deze richel te bereiken, Jak." ], "ds047": [ - "Ooh, that's a high one.", - "You'll need to jump,", - "then jump again in the air to get up there." + "Oei, dat is een hoge.", + "Je zult moeten springen,", + "spring dan opnieuw in de lucht om daarboven te komen." ], "ds048": [ - "Hit 'em again, Jak!" + "Sla ze nog een keer, Jak!" ], "ds049": [ - "Do a spin kick!" + "Doe een spin-kick!" ], "ds050": [ - "Robotank, run!" + "Robotank, rennen!" ], "ds051": [ - "Hey, we should stay with Sig." + "Hé, we moeten bij Sig blijven." ], "ds052": [ - "Hey, big guy, keep close, huh?" + "Hé, grote kerel, blijf dichtbij, hè?" ], "ds053": [ - "We're too far away from Sig." + "We zijn te ver weg van Sig." ], "ds054": [ - "Stick with the plan, Jak, protect Sig!" + "Blijf bij het plan, Jak, bescherm Sig!" ], "ds055": [ - "Uh oh, where's Sig?" + "Eh, waar is Sig?" ], "ds056": [ - "Wow, what a blast!" + "Wauw, wat een knaller!" ], "ds057": [ - "Sig's a good shot." + "Sig is een goede schutter." ], "ds058": [ - "Go help Sig!" + "Ga Sig helpen!" ], "ds059": [ - "Nice shootin', Sig!" + "Lekker schieten, Sig!" ], "ds060": [ - "You're my hero!" + "Je bent mijn held!" ], "ds061": [ - "Uh oh, Sig's in trouble!" + "Oh, Sig zit in de problemen!" ], "ds062": [ - "There's another Metal Head going after our boy!", - "Shoot it, shoot it!" + "Er zit nog een Metal Head achter onze jongen aan!", + "Schiet erop, schiet erop!" ], "ds063": [ - "Keep Sig safe, Jak!" + "Houd Sig veilig, Jak!" ], "ds064": [ - "Whoa, Sig's really getting roughed up!" + "Wauw, Sig wordt echt in de war!" ], "ds065": [ - "Shoot 'em, shoot 'em!" + "Schiet ze neer, schiet ze neer!" ], "ds066": [ - "Sig dies, we die." + "Sig sterf, wij sterven." ], "ds067": [ - "Oof, we suck..." + "Oef, wij zijn stom..." ], "ds068": [ - "We have to keep 'em away from Sig." + "We moeten ze uit de buurt van Sig houden." ], "ds069": [ - "We need to find the valve to turn the water back on." + "We moeten de klep vinden om het water weer open te zetten." ], "ds094": [ - "Robotank, run!" + "Robotank, rennen!" ], "ds095": [ - "Here comes that tank again!" + "Daar komt die tank weer!" ], "ds096": [ - "Get the tank to shoot the missile!" + "Laat de tank de raket afschieten!" ], "ds099": [ - "We need to get to the top of that tower!" + "We moeten naar de top van die toren!" ], "ds100": [ - "Climb the ruined tower, Jak!" + "Beklim de verwoeste toren, Jak!" ], "ds111": [ - "We should come back with the Titan Suit to do this path." + "We zouden terug moeten komen met het Titan Suit om dit pad te bewandelen." ], "ds112": [ - "You've got a mechanical fist, Jak. Use it!" + "Je hebt een mechanische vuist, Jak. Gebruik het!" ], "ds113": [ - "Break the door!" + "Breek de deur!" ], "ds114": [ - "800 pound Tigorilla comin' through!" + "800 pond Tigorilla komt eraan!" ], "ds115": [ - "Smashing work, Jak! Oh, that was funny." + "Knap werk, Jak! O, dat was grappig." ], "ds116": [ - "Shoot the platform, Jak." + "Schiet op het platform, Jak." ], "ds117": [ - "We need something to get through that gate." + "We hebben iets nodig om door die poort te komen." ], "ds118": [ - "Shoot the Metal Head when he moves his shield." + "Schiet op de Metal Head als hij zijn schild beweegt." ], "ds119": [ - "Hit him in his stomach." + "Raakte hem in zijn maag." ], "ds120": [ - "Whoa, that path dropped like a... a rock!" + "Whoa, dat pad viel als een... een rots!" ], "ds121": [ - "Smack the box, baby!" + "Sla op de doos, schat!" ], "ds128": [ - "Good, we're through." + "Goed, we zijn klaar." ], "ds129": [ - "Shoot the gun, Jak!" + "Schiet met het pistool, Jak!" ], "ds143": [ - "We're supposed to keep Krew's guys alive, Jak!" + "We moeten Krew's mannen in leven houden, Jak!" ], "ds144": [ - "Save 'em, Jak!" + "Bewaar ze, Jak!" ], "ds145": [ - "Don't like this, Jak..." + "Ik vind dit niet leuk, Jak..." ], "ds146": [ - "Behind us, Jak!" + "Achter ons, Jak!" ], "ds147": [ - "Metal Heads! Everywhere!" + "Metalen hoofden! Overal!" ], "ds148": [ - "Protect us, Jak! But first me." + "Bescherm ons, Jak! Maar eerst ik." ], "ds150": [ - "Take a vehicle, Jak! It's faster." + "Neem een ​​voertuig, Jak! Dat is sneller." ], "ds151": [ - "Use your JET-Board!" + "Gebruik je JET-Board!" ], "ds152": [ - "We got company, Jak! Lots of guards!" + "We hebben gezelschap, Jak! Veel bewakers!" ], "ds160": [ - "That's right, we're bad! The Precursor Stone is ours!" + "Dat klopt, we zijn slecht! De voorlopersteen is van ons!" ], "ds161": [ - "There's Mar's gun, Jak! Let's go check it out." + "Daar is Mar's pistool, Jak! Laten we het gaan bekijken." ], "ds162": [ - "These Precursor Orbs are worth a lot now.", - "We might find a few hidden around,", - "or get some doing difficult tasks.", - "We'll be able to buy stuff with 'em!" + "Deze Precursor Orbs zijn nu veel waard.", + "Misschien vinden we er een paar verborgen,", + "of laat sommigen moeilijke taken uitvoeren.", + "Dan kunnen we er spullen mee kopen!" ], "ds163": [ - "Jak, now that we have the Palace Security Pass,", - "let's go have some fun in the big man's crib!" + "Jak, nu we de Palace Security Pass hebben,", + "laten we wat plezier gaan maken in de wieg van de grote man!" ], "ds164": [ - "Back up to get out of the mech." + "Ga achteruit om uit de mech te komen." ], "ds165": [ - "We're free, Jak! Thanks to me.", - "Nice to breathe some fresh air, huh?", - "We'll get that Baron Praxis guy, alright!" + "We zijn vrij, Jak! Dankzij mij.", + "Fijn om wat frisse lucht in te ademen, hè?", + "We zullen die Baron Praxis-man pakken, oké!" ], "ds166": [ - "I'm not getting out of this pod", - "'till you kill all those crazy flyin' Metal Heads!" + "Ik kom niet uit deze capsule", + "totdat je al die gekke vliegende Metal Heads doodt!" ], "ds167": [ - "I wonder why they wanted us to protect Samos' Hut.", - "Maybe now we'll get to meet the Shadow." + "Ik vraag me af waarom ze wilden dat we de hut van Samos zouden beschermen.", + "Misschien ontmoeten we nu de Schaduw." ], "ds168": [ - "There's the Rift Ring!" + "Daar is de Riftring!" ], "ds173": [ "Ahhh!" ], "ds174": [ - "Ooooh!" + "Oooooh!" ], "ds175": [ "Whoa-whoa-oaa-ah!" ], "ds176": [ - "Whoa!" + "Wauw!" ], "ds177": [ - "Hey!" + "Hoi!" ], "ds178": [ - "Hey, watch that!" + "Hé, let op!" ], "ds179": [ - "Ooh!" + "Oeh!" ], "ds180": [ - "Oh, boy!" + "O, jongen!" ], "ds181": [ - "Uooaaoh!" + "Wauw!" ], "ds182": [ - "Wow, that was close!" + "Wauw, dat was dichtbij!" ], "ds183": [ - "Oh, boy!" + "O, jongen!" ], "ds184": [ - "Yes!" + "Ja!" ], "ds185": [ - "Yeah!" + "Ja!" ], "ds186": [ - "Hey, watch it!" + "Hé, let op!" ], "ds187": [ - "All right!" + "Oke!" ], "ds188": [ - "Move over!" + "Beweeg over!" ], "ds189": [ - "Orange Lightning coming through!" + "Oranje bliksem komt door!" ], "ds190": [ - "Rollin' with the homies!" + "Op stap met je vrienden!" ], "ds191": [ - "You're mine!" + "Je bent van mij!" ], "ds192": [ - "There they are!" + "Daar zijn ze!" ], "ds193": [ - "Hey! Watch where you're drivin'!" + "Hoi! Kijk uit waar je rijdt!" ], "ds194": [ - "How do I drive this thing?" + "Hoe bestuur ik dit ding?" ], "ds195": [ - "Yeah, that's right! I'm bad!" + "Ja dat klopt! Ik ben slecht!" ], "ds196": [ - "Outta my way!" + "Aan de kant!" ], "ds197": [ - "Outta my way!" + "Aan de kant!" ], "ds198": [ - "Move it or lose it, buddy!" + "Verplaats het of verlies het, maatje!" ], "ds199": [ - "Mm... bye-bye!" + "Mm... tot ziens!" ], "ds200": [ - "Last lap!" + "Laatste ronde!" ], "ds201": [ - "Come on, come on!" + "Kom op kom op!" ], "ds202": [ - "Come on, come on, come on!" + "Kom op, kom op, kom op!" ], "ds203": [ - "Pedal to the metal!" + "Trap op het metaal!" ], "ds204": [ - "Ooooah, I gotta catch up!" + "Ooooh, ik moet even inhalen!" ], "ds205": [ - "Turn and burn, baby!" + "Draai je om en verbrand, lieverd!" ], "ds206": [ - "Oooh, it's gonna be close!" + "Oooh, het zal dichtbij zijn!" ], "ds207": [ - "Eat my dust, buddy!" + "Eet mijn stof, vriend!" ], "ds208": [ - "Gotcha!" + "Oké!" ], "ds209": [ - "This is my track, grandma!" + "Dit is mijn nummer, oma!" ], "ds210": [ - "Learn to drive!" + "Leren autorijden!" ], "ds211": [ - "Turn, turn!" + "Draai, draai!" ], "ds212": [ - "Step on it!" + "Stap erop!" ], "ds213": [ - "Oooh, I won, I won!" + "Oooh, ik heb gewonnen, ik heb gewonnen!" ], "ds214": [ - "Yeee, that's a good lap time." + "Ja, dat is een goede rondetijd." ], "ds215": [ - "Oh, yeah! I'm rockin'!" + "O ja! Ik ben aan het rocken!" ], "ds216": [ - "Another lap in the record book!" + "Weer een ronde in het recordboek!" ], "ds217": [ - "Take a good look at my tail!" + "Kijk eens goed naar mijn staart!" ], "ds218": [ - "Wahoo!" + "Wauw!" ], "ds219": [ - "Hey, fang boy, hurry up and get in,", - "we'll take you to Brutter!" + "Hé, hoektandjongen, schiet op en stap in.", + "wij brengen je naar Brutter!" ], "ds220": [ - "Here's your boy, Brutter! We're off to get another animal!" + "Hier is je jongen, Brutter! We gaan nog een dier halen!" ], "ds221": [ - "Yo, animal lover, get your furry butt in the vehicle!" + "Yo, dierenliefhebber, zet je harige kont in de auto!" ], "ds222": [ - "Here's another beast of burden!" + "Hier is nog een lastdier!" ], "ds223": [ - "In the vehicle, buddy, we can save you!" + "In het voertuig, vriend, kunnen we je redden!" ], "ds224": [ - "Another Lurker freed." + "Weer een Lurker vrijgelaten." ], "ds225": [ - "Let's move, eco breath! We gotta get you to Brutter." + "Laten we bewegen, eco-adem! We moeten je naar Brutter brengen." ], "ds226": [ - "Hey, Brutter! Look what the cat turkey dragged in." + "Hé, Brutter! Kijk eens wat de katkalkoen naar binnen heeft gesleept." ], "ds227": [ - "Lookie what we found!" + "Kijk eens wat we hebben gevonden!" ], "ds228": [ - "You recognize this monster?" + "Herken jij dit monster?" ], "ds229": [ - "We did it! We saved them all!" + "We hebben het gedaan! Wij hebben ze allemaal gered!" ], "ds230": [ - "Catch the paddywagon, Jak!" + "Vang de rijstwagen, Jak!" ], "ds231": [ - "Crash the paddywagon!" + "Laat de politiewagen crashen!" ], "ds232": [ - "A little more damage and we got the sucker!" + "Nog een beetje schade en we hebben de sukkel!" ], "ds233": [ - "He's smoking, Jak! Hit him again!" + "Hij rookt, Jak! Raak hem opnieuw!" ], "ds234": [ - "That caused some damage!" + "Dat veroorzaakte enige schade!" ], "ds235": [ - "One more like that and he's through!" + "Nog zo'n ding en hij is klaar!" ], "ds236": [ - "Find the next vehicle!" + "Vind het volgende voertuig!" ], "ds237": [ - "Yes, we took it out!" + "Ja, we hebben het eruit gehaald!" ], "ds238": [ - "Hunt and destroy, baby!" + "Jaag en vernietig, schat!" ], "ds239": [ - "Hit it, hit it!" + "Raak het, raak het!" ], "ds240": [ - "Take it out!" + "Eruithalen!" ], "ds241": [ - "Pick up the Lurker, Jak!" + "Pak de Lurker op, Jak!" ], "ds242": [ - "Get the Lurker!" + "Haal de Loerder!" ], "ds243": [ - "We need to pick up that Lurker back there." + "We moeten die Lurker daar oppakken." ], "ds244": [ - "Usually, I don't like to be this close to Lurkers." + "Normaal gesproken houd ik er niet van om zo dicht bij Lurkers te zijn." ], "ds245": [ - "Ehehe, you seem like a nice, uh... animal." + "Ehehe, je lijkt me een aardig, uh... dier." ], "ds246": [ - "Easy, buddy. Don't bite me!" + "Makkelijk, vriend. Bijt mij niet!" ], "ds247": [ - "Hey, stop slobbering on me!" + "Hé, stop met tegen mij te kwijlen!" ], "ds248": [ - "He's recharging!" + "Hij laadt op!" ], "ds249": [ - "Ooh, we got him good that time!" + "Ooh, we hebben hem toen goed te pakken gekregen!" ], "ds250": [ - "Yeah, now he's hurtin'!" + "Ja, nu heeft hij pijn!" ], "ds251": [ - "Good shot, Jak!" + "Goed schot, Jak!" ], "ds252": [ - "Incoming!" + "Inkomend!" ], "ds253": [ - "Yeah, we got him!" + "Ja, we hebben hem!" ], "ds254": [ - "Jak, hide behind the pillars when he shoots!" + "Jak, verstop je achter de pilaren als hij schiet!" ], "ds255": [ - "He's got the Precursor Stone!" + "Hij heeft de Voorlopersteen!" ], "ds256": [ - "Kick the bomb right at him, Jak!" + "Trap de bom recht op hem af, Jak!" ], "ds257": [ - "That one hit him!" + "Die heeft hem geraakt!" ], "ds258": [ - "Look out!" + "Pas op!" ], "ds259": [ - "Jump the gap!" + "Spring over het gat!" ], "ds260": [ - "Yeah, you hit him!" + "Ja, je hebt hem geraakt!" ], "ds261": [ - "As if there wasn't enough of Krew already." + "Alsof er nog niet genoeg van Krew was." ], "ds262": [ - "Shoot 'em all, Jak! We'll sort 'em out later..." + "Schiet ze allemaal neer, Jak! We zullen ze later uitzoeken..." ], "ds263": [ - "There's the real Krew! Shoot him!" + "Daar is de echte Krew! Schiet hem neer!" ], "ds264": [ - "You got him!" + "Je hebt hem!" ], "ds265": [ - "Watch your back, Jak!" + "Pas op, Jak!" ], "ds266": [ - "They're comin' again!" + "Ze komen weer!" ], "ds267": [ - "Now you've got us mad." + "Nu heb je ons boos gemaakt." ], "ds268": [ - "Good shot, Jak! The big man is hurtin' now." + "Goed geschoten, Jak! De grote man heeft nu pijn." ], "ds269": [ - "And the challenger is down for the count!" + "En de uitdager is klaar voor de telling!" ], "ds270": [ - "Keep movin', baby! He's gonna shoot!" + "Blijf bewegen, schat! Hij gaat schieten!" ], "ds271": [ - "Wooh, here come some Metal Heads!" + "Wooh, hier komen wat Metal Heads!" ], "ds272": [ - "Protect the kid!" + "Bescherm het kind!" ], "ds273": [ - "Kill all the Metal Heads!" + "Dood alle Metal Heads!" ], "ds274": [ - "More Metal Heads!" + "Nog meer metalheads!" ], "ds275": [ - "Shoot Kor's legs out, Jak!" + "Schiet Kor's benen eruit, Jak!" ], "ds276": [ - "He's down, Jak! Hit him in the head!" + "Hij is beneden, Jak! Sla hem op zijn hoofd!" ], "ds277": [ - "Boot to the head, boot to the head!" + "Laars tegen het hoofd, laars tegen het hoofd!" ], "ds278": [ - "I think we should hide somewhere!" + "Ik denk dat we ons ergens moeten verstoppen!" ], "ds279": [ - "Take cover before he blows!" + "Zoek dekking voordat hij blaast!" ], "ds280": [ - "Yeah, you got him good that time!" + "Ja, je hebt hem toen goed te pakken gekregen!" ], "ds281": [ - "Oh, man, now he's angry!" + "Oh man, nu is hij boos!" ], "ds282": [ - "Get him, Jak!" + "Pak hem, Jak!" ], "ds283": [ - "He's gonna shoot!" + "Hij gaat schieten!" ], "ds284": [ - "Nice hit, partner!" + "Goed getroffen, partner!" ], "ds285": [ - "That had to hurt him." + "Dat moest hem pijn doen." ], "ds286": [ - "You messed with the wrong heroes, buddy!" + "Je hebt met de verkeerde helden geknoeid, vriend!" ], "ds287": [ - "Shoot him again, Jak!" + "Schiet hem nog een keer neer, Jak!" ], "ds288": [ - "Jak, we're taking a beating!" + "Jak, we krijgen klappen!" ], "ds289": [ - "Stay away from the Dark Eco!" + "Blijf weg van de Dark Eco!" ], "ds302": [ - "We've almost got him, Jak!" + "We hebben hem bijna, Jak!" ], "ds303": [ - "That's it! You did it!" + "Dat is het! Je hebt het gedaan!" ], "ds305": [ - "Shoot the switch to change the coveyor belt's", - "direction!" + "Beschiet de schakelaar om de transportband te verwisselen", + "richting!" ], "ds306": [ - "You gotta shoot the switch, Jak!" + "Je moet op de schakelaar drukken, Jak!" ], "ds307": [ - "Find the switch to change the conveyor's direction!" + "Vind de schakelaar om de richting van de transportband te veranderen!" ], "ds321": [ - "Take out the turrets!" + "Haal de torentjes eruit!" ], "ds322": [ - "Hit the turrets, Jak!" + "Raak de torentjes, Jak!" ], "ds323": [ - "Doin' some damage!" + "Doe wat schade!" ], "ds324": [ - "Get in the Titan Suit!" + "Trek het Titan-pak aan!" ], "ds325": [ - "Shoot that ship!" + "Schiet dat schip neer!" ], "ds326": [ - "Yeah, that ship's feelin' it now!" + "Ja, dat schip voelt het nu!" ], "ds327": [ - "Ooh, direct hits." + "Oeh, voltreffers." ], "ds328": [ - "I think you hurt it that time!" + "Ik denk dat je het toen bezeerd hebt!" ], "ds329": [ - "The ship's goin' down! You did it, Jak!" + "Het schip gaat ten onder! Het is je gelukt, Jak!" ], "ds353": [ - "That must be the missile Torn wants us to blow up!" + "Dat moet de raket zijn die Torn wil dat we opblazen!" ], "ds354": [ - "Break those tubes in the center, Jak!" + "Breek die buizen in het midden, Jak!" ], "ds372": [ - "Gotta ride the JET-Board on this one, Jak!" + "Ik moet hier op het JET-Board rijden, Jak!" ], "ds375": [ - "Look out for the ray!" + "Kijk uit voor de straal!" ], "ds378": [ - "We gotta break all the support cables!" + "We moeten alle steunkabels breken!" ], "ds379": [ - "Grind on the support bases to break the cables." + "Slijp op de steunvoeten om de kabels te breken." ], "ds394": [ - "Spider! Spider! Huff... huff... I hate spiders!" + "Spin! Spin! Huff... huff... Ik haat spinnen!" ], "ds395": [ - "Gotta run, gotta run!" + "Ik moet rennen, ik moet rennen!" ], "ds398": [ - "The first beam!" + "De eerste straal!" ], "ds399": [ - "The second beam! The door's opening!" + "De tweede balk! De deur gaat open!" ], "ds404": [ - "There's Sig!" + "Daar is Sig!" ], "ds405": [ - "Get the blocks to go into the slots, Jak!" + "Zorg dat de blokken in de gleuven terechtkomen, Jak!" ], "ds406": [ - "Shoot or kick the blocks!" + "Schiet of schop tegen de blokken!" ], "ds407": [ - "You have to get the blocks in the slots faster!" + "Je moet de blokken sneller in de slots krijgen!" ], "ds408": [ - "Run, Jak!" + "Rennen, hoe!" ], "ds409": [ - "Keep moving!" + "Blijven bewegen!" ], "ds410": [ - "We gotta stay ahead of that thing!" + "We moeten dat ding voor blijven!" ], "ds439": [ - "Shoot all the Metal Head eggs, Jak!" + "Schiet alle Metal Head-eieren neer, Jak!" ], "ds440": [ - "We didn't get all those nasty eggs!" + "We hebben niet al die vervelende eieren gekregen!" ], "ds441": [ - "We missed some Metal Head eggs!" + "We hebben een aantal Metal Head-eieren gemist!" ], "ds461": [ - "We gotta jump onto the crate dangling from the crane!" + "We moeten op de kist springen die aan de kraan bungelt!" ], "ds462": [ - "Use your hoverboard on this path!" + "Gebruik je hoverboard op dit pad!" ], "ds463": [ - "You can grind to cross those pipes using your", - "hoverboard!" + "Je kunt slijpen om die pijpen over te steken met behulp van je", + "zweefbord!" ], "ds464": [ - "Ride the half-pipe to the end!" + "Berijd de halfpipe tot het einde!" ], "ds466": [ - "You gotta drop a bomb into each well, Jak!" + "Je moet een bom in elke put laten vallen, Jak!" ], "ds467": [ - "Use the ramp to get high enough to drop the bomb in!" + "Gebruik de helling om hoog genoeg te komen om de bom erin te laten vallen!" ], "ds468": [ - "Gotta jump higher!" + "Ik moet hoger springen!" ], "ds469": [ - "Only a minute before we're toast, Jak!" + "Nog maar een minuut voordat we toasten, Jak!" ], "ds470": [ - "30 seconds left, then we go BOOM!" + "Nog 30 seconden en dan gaan we BOOM!" ], "ds471": [ - "Ten seconds left, Jak!" + "Nog tien seconden, Jak!" ], "ds472": [ - "That's one well down, five to go!" + "Dat is één putje lager, nog vijf te gaan!" ], "ds473": [ - "Two wells are history, four left!" + "Twee putten zijn geschiedenis, nog vier over!" ], "ds474": [ - "Three wells cut, only three to go!" + "Drie putten geslagen, nog maar drie te gaan!" ], "ds475": [ - "That's the fourth well, two bad boys left!" + "Dat is de vierde put, er zijn nog twee slechte jongens over!" ], "ds476": [ - "You got the fifth well, only one to go!" + "Je hebt de vijfde put, er is er nog maar één te gaan!" ], "ds477": [ - "You got 'em all, Jak!" + "Je hebt ze allemaal, Jak!" ], "ds478": [ - "The last well is up where we rescued Vin!" + "De laatste put is waar we Vin hebben gered!" ], "ds479": [ - "Now he's vulnerable!" + "Nu is hij kwetsbaar!" ], "ds480": [ - "Take him out!" + "Haal hem eruit!" ], "ds481": [ - "Get him while he's vulnerable!" + "Pak hem nu hij kwetsbaar is!" ], "ds482": [ - "Here he comes..." + "Hier komt hij..." ], "ds483": [ - "How's it feel to have your pants down, Baron?" + "Hoe voelt het om je broek naar beneden te hebben, Baron?" ], "ds484": [ - "Shoot him, shoot him!" + "Schiet hem neer, schiet hem neer!" ], "ds485": [ - "Look out!" + "Pas op!" ], "ds487": [ - "Easy, Jak, we gotta get this guy to safety!" + "Rustig, Jak, we moeten deze man in veiligheid brengen!" ], "ds488": [ - "We're takin' a lotta damage, buddy!" + "We lopen veel schade op, vriend!" ], "ds489": [ - "We're gettin' our butts kicked!" + "We krijgen onze kont geschopt!" ], "ds490": [ - "Maybe I should drive..." + "Misschien moet ik rijden..." ], "ds491": [ - "Let's go, wondergoon,", - "we'll take you to a safe place in the city!" + "Laten we gaan, wondergoon,", + "wij brengen u naar een veilige plek in de stad!" ], "ds492": [ - "Okay, ride's over, out you go!" + "Oké, de rit is voorbij, daar ga je!" ], "ds493": [ - "All aboard the Underground railroad!", - "Next stop: Your new safehouse!" + "Iedereen aan boord van de ondergrondse spoorlijn!", + "Volgende stop: je nieuwe safehouse!" ], "ds494": [ - "I believe this is your stop!" + "Ik geloof dat dit jouw halte is!" ], "ds495": [ - "Daxter's Freedom Fighter Taxi Service!", - "Hurry up, buddy, we ain't got all day." + "Daxter's Freedom Fighter-taxiservice!", + "Schiet op, vriend, we hebben niet de hele dag." ], "ds496": [ - "Home free, baby!", - "Don't forget to tell Torn how well we did!" + "Thuis vrij, schat!", + "Vergeet Torn niet te vertellen hoe goed we het hebben gedaan!" ], "ds497": [ - "You looking for a lift, fighter boy?" + "Zoek je een lift, vechterjongen?" ], "ds498": [ - "Okay, this is where you get off. So... get off." + "Oké, hier stap je uit. Dus... ga weg." ], "ds499": [ - "We did it, Jak!", - "We got all the fighters to the new safehouses!" + "Het is ons gelukt, Jak!", + "We hebben alle vechters naar de nieuwe safehouses gebracht!" ], "ds500": [ - "Statues are becoming an endangered species around here." + "Beelden worden hier een bedreigde diersoort." ], "ds501": [ - "I got us a talkbox.", - "The city people use these things to communicate", - "with each other." + "Ik heb een praatbox voor ons.", + "De stadsmensen gebruiken deze dingen om te communiceren", + "met elkaar." ], "ds502": [ - "Let's go see Onin and her crazy monkey bird." + "Laten we Onin en haar gekke aapvogel gaan zien." ], "ds503": [ - "I think we need to go back to the city, Jak." + "Ik denk dat we terug moeten naar de stad, Jak." ], "dsek001": [ - "Kid! Stay with him, Jak!" + "Kind! Blijf bij hem, Jak!" ], "dsek002": [ - "Catch up to them, Jak!" + "Houd ze in de gaten, Jak!" ], "dsek003": [ - "Where'd they go?!" + "Waar zijn ze heen?!" ], "dsek004": [ - "There they go again!" + "Daar gaan ze weer!" ], "dsek005": [ - "Uh oh, here comes trouble!" + "Oh, hier komen problemen!" ], "dsek006": [ - "More guards!?" + "Meer bewakers!?" ], "dsek007": [ - "Kid, please! You're killin' me!" + "Kind, alsjeblieft! Je vermoordt mij!" ], "dsek008": [ - "Here, poochie, poochie..." + "Hier, poochie, poochie..." ], "dsek009": [ - "There goes that crazy crocadog again...!" + "Daar gaat die gekke krokodilhond weer...!" ], "dsek010": [ - "Chase after the Kid!" + "Achtervolg het kind!" ], "dsek011": [ - "Keep up with the Kid!" + "Blijf op de hoogte van het Kind!" ], "dsek012": [ - "Crocadog!" + "Krokodil!" ], "dsek013": [ - "Phew, finally... let's get these two to Kor!" + "Oef, eindelijk... laten we deze twee naar Kor brengen!" ], "ero001": [ - "Out of my way!" + "Uit mijn weg!" ], "ero002": [ - "I own this track!" + "Ik ben eigenaar van dit nummer!" ], "ero003": [ - "Give it up, eco freak!" + "Geef het op, eco-freak!" ], "ero004": [ - "Payback time." + "Terugverdientijd." ], "ero005": [ - "Let's make this interesting!" + "Laten we dit interessant maken!" ], "ero006": [ - "Eat wall!" + "Eet muur!" ], "ero007": [ - "Time to die!" + "Tijd om te sterven!" ], "ero008": [ - "Move over!" + "Beweeg over!" ], "ero009": [ - "Catch me now, loser!" + "Vang me nu, verliezer!" ], "ero010": [ - "I'm too fast for you!" + "Ik ben te snel voor jou!" ], "ero011": [ - "Now you're racing with the big boys!" + "Nu race je met de grote jongens!" ], "ero012": [ - "Here's one for the Baron." + "Hier is er één voor de Baron." ], "ero013": [ - "Take this!" + "Pak aan!" ], "ero014": [ - "You're making this too easy!" + "Je maakt het te gemakkelijk!" ], "ero015": [ - "Hahaha, bye bye!" + "Hahaha, doei doei!" ], "ero016": [ - "You want some?" + "Wil je wat?" ], "ero017": [ - "Now you see why I never lose." + "Nu begrijp je waarom ik nooit verlies." ], "ero018": [ - "The crowd loves me!" + "Het publiek houdt van mij!" ], "ero019": [ - "Ahh!" + "Ah!" ], "ero020": [ - "Here's some pain!" + "Hier is wat pijn!" ], "ero021": [ - "Try to erase these!" + "Probeer deze te wissen!" ], "ero022": [ - "How's your reflexes?" + "Hoe zijn je reflexen?" ], "ero023": [ - "Too much for you?!" + "Te veel voor jou?!" ], "ero024": [ - "Had enough?" + "Genoeg gehad?" ], "ero025": [ - "Avoid this, smart-ass!" + "Vermijd dit, slimmerik!" ], "ero026": [ - "Say goodnight, eco freak!" + "Zeg welterusten, eco-freak!" ], "ero027": [ - "You can't beat me!" + "Je kunt mij niet verslaan!" ], "ero028": [ - "I'd die before I let you win!" + "Ik zou sterven voordat ik je liet winnen!" ], "ero029": [ - "This will be your last lap." + "Dit zal je laatste ronde zijn." ], "ero030": [ - "Crash and burn!" + "Crash en verbrand!" ], "ero031": [ - "To the end!" + "Naar het einde!" ], "ero032": [ - "Last lap to live!" + "Laatste ronde om te leven!" ], "ero033": [ - "Now we end this!" + "Nu maken we hier een einde aan!" ], "ero034": [ - "You won't see the finish line!" + "Je zult de finishlijn niet zien!" ], "ero035": [ - "DIE!" + "DOOD GAAN!" ], "ero036": [ - "Die!" + "Dood gaan!" ], "ero037": [ - "Hahahaha!" + "Hahaha!" ], "ero038": [ - "YEAH!" + "JA!" ], "ero039": [ "HA!" ], "ero040": [ - "NO!" + "NEE!" ], "ero041": [ - "NOOOOO!" + "NEEOOOO!" ], "ero042": [ - "AHHHHHH!" + "AHHHHH!" ], "ero043": [ - "Here we go." + "Daar gaan we." ], "ero044": [ - "See you later." + "Doei." ], "ero045": [ - "Fool! You cannot defeat me." + "Dwaas! Je kunt mij niet verslaan." ], "ero046": [ - "You missed a ring." + "Je hebt een ring gemist." ], "ero047": [ - "This race is mine!" + "Dit ras is van mij!" ], "ero048": [ - "You can never be as fast as me!" + "Je kunt nooit zo snel zijn als ik!" ], "ero049": [ - "Keira wants a real man." + "Keira wil een echte man." ], "ero050": [ - "Bad luck, old chap." + "Pech, oude kerel." ], "ero051": [ - "Nice try." + "Goed geprobeerd." ], "ero052": [ - "Move over!" + "Beweeg over!" ], "ero053": [ - "Out of my way!" + "Uit mijn weg!" ], "ero054": [ - "Coming through!" + "Doorkomen!" ], "ero055": [ - "Bye bye!" + "Tot ziens!" ], "ero056": [ - "Here I come!" + "Hier kom ik!" ], "ero057": [ - "Get used to watching my back!" + "Wen er maar aan dat ik achterom kijk!" ], "ero058": [ - "This is my city, eco freak." + "Dit is mijn stad, ecofreak." ], "ero059": [ - "Looking sloppy, Jak." + "Ziet er slordig uit, Jak." ], "ero060": [ - "Give it up!" + "Geef het op!" ], "ero061": [ - "Not this time." + "Deze keer niet." ], "ero062": [ - "Getting a bit nervous?" + "Wordt u een beetje zenuwachtig?" ], "ero063": [ - "Come back here!" + "Kom hier terug!" ], "ero064": [ - "Move over, slowpoke!" + "Ga aan de kant, slowpoke!" ], "ero065": [ - "This is where I beat you." + "Hier heb ik je verslagen." ], "ero066": [ - "Final stretch!" + "Laatste stuk!" ], "ero067": [ - "It's over!" + "Het is voorbij!" ], "ero068": [ - "I own this city." + "Ik bezit deze stad." ], "ero069": [ - "What? Where'd you come from?" + "Wat? Waar kom je vandaan?" ], "ero070": [ - "You're just lucky." + "Je hebt gewoon geluk." ], "ero071": [ - "You can't handle the speed!" + "Je kunt de snelheid niet aan!" ], "ero072": [ - "Die, freak." + "Sterf, gek." ], "ero073": [ - "No!" + "Nee!" ], "ero074": [ "STOP!" ], "ero075": [ - "Hahahaha!" + "Hahaha!" ], "ero076": [ "HAHA!" @@ -3215,74 +3215,74 @@ "Ahhh!" ], "ero078": [ - "Ough!" + "Genoeg!" ], "ero079": [ - "Oof!" + "Oef!" ], "ero080": [ - "Beat it, freak!" + "Versla het, gek!" ], "ero081": [ - "Care to get back in the chair?" + "Zin om weer in de stoel te gaan zitten?" ], "ero082": [ - "This race was too easy." + "Deze race was te gemakkelijk." ], "ero083": [ - "It was easier than I thought to beat you." + "Het was makkelijker dan ik dacht om je te verslaan." ], "ero084": [ - "Not even close, Keira's betting on the wrong man." + "Het komt niet eens in de buurt: Keira gokt op de verkeerde man." ], "ero085": [ - "Loser! You disgust me!" + "Verliezer! Ik walg van jou!" ], "ero086": [ - "You see Jak, I win, and I get what I want.", - "Someday I will be Baron, then the city will really pay!" + "Zie je Jak, ik win en ik krijg wat ik wil.", + "Ooit zal ik Baron zijn, dan zal de stad echt boeten!" ], "ero087": [ - "I should have known you'd be no match." + "Ik had moeten weten dat jullie geen partij zouden zijn." ], "ero088": [ - "I win, Keira's going to love me!" + "Als ik win, zal Keira van me houden!" ], "ero089": [ - "Maybe you should go back to wherever you came from." + "Misschien moet je teruggaan naar waar je vandaan kwam." ], "ero090": [ - "I'll get a victory kiss from Keira later." + "Ik krijg later een overwinningskus van Keira." ], "ero091": [ - "Again I prove my superiority." + "Opnieuw bewijs ik mijn superioriteit." ], "ero092": [ - "You see? You are no match for me." + "Zie je? Jij bent geen partij voor mij." ], "ero093": [ - "Too bad, I win!" + "Jammer, ik win!" ], "ero094": [ - "Hahahaha, pathetic insect, I win!" + "Hahahaha, zielig insect, ik win!" ], "ero095": [ - "You can never defeat me!" + "Je kunt mij nooit verslaan!" ], "ero096": [ - "Ahhh!...ahh." + "Ahhh!...aah." ], "ero097": [ "Ugh!" ], "ero098": [ - "Ughhh!" + "Ughhhh!" ], "ero099": [ - "Dahh!" + "Ja!" ], "ero100": [ - "Yaughh!" + "Jah!" ], "ero101": [ "AUGHH!" @@ -3297,322 +3297,322 @@ "DAUGHH!" ], "erol001": [ - "I'm looking for you, eco freak,", - "and when I find you, you'll wish you died in prison." + "Ik zoek jou, eco-freak,", + "en als ik je vind, zou je wensen dat je in de gevangenis stierf." ], "erol002": [ - "This is Erol. Looks like you're running out of friends.", - "We've arrested them all and thrown them into your", - "favorite prison. By the way, that blonde girl Tess", - "screamed so delightfully when she was arrested.", - "I can't wait for her turn in the chair.", + "Dit is Erol. Het lijkt erop dat je geen vrienden meer hebt.", + "We hebben ze allemaal gearresteerd en in je geworpen", + "favoriete gevangenis. Trouwens, dat blonde meisje Tess", + "schreeuwde zo heerlijk toen ze werd gearresteerd.", + "Ik kan niet wachten tot zij aan de beurt is in de stoel.", "Hahahahaha...." ], "erol003": [ - "This is Erol. Just remember, the only reason I'm letting you", - "walk is so I can face you in the championship race!" + "Dit is Erol. Vergeet niet dat dit de enige reden is dat ik je dit toesta", + "Ik loop zodat ik jou kan ontmoeten in de kampioensrace!" ], "hal001": [ - "Quiet! Here comes pretty boy." + "Rustig! Hier komt mooie jongen." ], "hal002": [ - "'Bout time you showed up. Okay, let's do this." + "'Het werd tijd dat je kwam opdagen. Oké, laten we dit doen." ], "hal003": [ - "Krew said you'll protect us all the way to the statue." + "Krew zei dat je ons tot aan het standbeeld zou beschermen." ], "hal004": [ - "We go down!" + "We gaan naar beneden!" ], "hal006": [ - "This way!" + "Deze kant op!" ], "hal007": [ - "AHH! It's a Metal Head! Shoot it, shoot it!" + "AHH! Het is een metalen kop! Schiet erop, schiet erop!" ], "hal008": [ - "Stay with us!" + "Blijf bij ons!" ], "hal009": [ - "Man, Krew's gonna be pissed if you mess this up." + "Man, Krew zal boos zijn als je dit verprutst." ], "hal010": [ - "Don't leave us to die!" + "Laat ons niet sterven!" ], "hal011": [ - "You ditch us and Krew's gonna mess you up!" + "Als je ons dumpt, maakt Krew je kapot!" ], "hal012": [ - "We need to stay together." + "We moeten bij elkaar blijven." ], "hal013": [ - "I thought this guy was supposed to be protecting us!" + "Ik dacht dat deze kerel ons moest beschermen!" ], "hal014": [ - "That's it! We're calling the mission off,", - "we don't go until you're serious." + "Dat is het! We roepen de missie af,", + "Wij gaan pas weg als je het serieus meent." ], "hal015": [ - "I'm not getting killed because of this loser,", - "this mission is over." + "Ik word niet vermoord vanwege deze verliezer,", + "deze missie is voorbij." ], "hal019": [ - "Let's go back before we all get killed." + "Laten we teruggaan voordat we allemaal vermoord worden." ], "hal020": [ - "Ugh, this place stinks." + "Ugh, deze plek stinkt." ], "hal021": [ - "I got a bad feeling about this place." + "Ik kreeg een slecht gevoel over deze plek." ], "hal022": [ - "Uh oh, I think I wet myself." + "Oh, ik denk dat ik mezelf nat heb gemaakt." ], "hal023": [ - "No! Please!" + "Nee! Alsjeblieft!" ], "hal024": [ - "I wanna go home." + "Ik wil naar huis gaan." ], "hal025": [ - "Uhh, I'm hearing things." + "Ik hoor dingen." ], "hal026": [ - "Let's go back." + "Laten we terug gaan." ], "hal027": [ - "Move your butts, or I'll move 'em for ya!" + "Beweeg je kontjes, of ik beweeg ze voor je!" ], "hal028": [ - "This job beats being a garbage man." + "Deze baan is beter dan vuilnisman zijn." ], "hal029": [ - "Ain't the smell of sulphur grand?" + "Is de geur van zwavel niet geweldig?" ], "hal030": [ - "Cover your ears!" + "Bedek je oren!" ], "hal031": [ - "I love this job." + "Ik hou van deze baan." ], "hal032": [ - "Great, now we're trapped in this slime pit!" + "Geweldig, nu zitten we vast in deze slijmkuil!" ], "hal033": [ - "Shoot, baby, shoot!" + "Schiet, schat, schiet!" ], "hal034": [ - "Ahh! The ceiling's crawling!" + "Ah! Het plafond kruipt!" ], "hal035": [ - "I can't get away!" + "Ik kan niet weg!" ], "hal036": [ - "There's one coming right at me!" + "Er komt er één recht op mij af!" ], "hal037": [ - "It sees me!" + "Het ziet mij!" ], "hal038": [ - "Ahh! Stay away!" + "Ah! Blijf weg!" ], "hal039": [ - "It's hitting me!" + "Het raakt mij!" ], "hal040": [ - "Gahh, I'm gonna die here!" + "Gahh, ik ga hier dood!" ], "hal041": [ - "I'm getting zapped!" + "Ik word gezapt!" ], "hal042": [ - "This'll be the end of me!" + "Dit zal het einde van mij zijn!" ], "hal043": [ - "Help me! I've got eight kids to feed!" + "Help me! Ik heb acht kinderen te voeden!" ], "hal044": [ - "Nice work, those were some nasty Metal Heads." + "Goed gedaan, dat waren een paar vervelende Metal Heads." ], "hal045": [ - "There you are, why don't you make yourself useful?" + "Daar ben je, waarom maak je jezelf niet nuttig?" ], "hal046": [ - "Keep moving!" + "Blijven bewegen!" ], "hal047": [ - "On we go, we're not getting any younger." + "Als we verder gaan, worden we er niet jonger op." ], "hal048": [ - "Ahh! They're crawling down the walls!" + "Ah! Ze kruipen langs de muren!" ], "hal049": [ - "Way to go, this is where I come in." + "Goed gedaan, hier kom ik binnen." ], "hal050": [ - "You mean cover your ass! Fire in the hole!" + "Bedek je kont, bedoel je! Vuur in het gat!" ], "hal051": [ - "You better keep your head down, sugar." + "Je kunt beter je hoofd naar beneden houden, liefje." ], "hal052": [ - "Your bad breath, let's move." + "Je slechte adem, laten we gaan." ], "hal053": [ - "That straightened your hair, huh?", - "Hehe, next time you'll listen to me. Okay, let's move." + "Dat heeft je haar rechtgetrokken, hè?", + "Hehe, de volgende keer luister je naar mij. Oké, laten we gaan." ], "hal054": [ - "Oof, that had to hurt.", - "I told you to keep back, but no one ever listens to Jinx." + "Oef, dat moest pijn doen.", + "Ik zei dat je je moest inhouden, maar niemand luistert ooit naar Jinx." ], "hal055": [ - "More of those monsters!" + "Nog meer van die monsters!" ], "hal056": [ - "So what, we got a dream team here. Do your stuff, Jak!" + "Dus wat, we hebben hier een dreamteam. Doe je ding, Jak!" ], "hal057": [ - "Jak! Get your butt up here and do your thing." + "Jak! Kom hier en doe je ding." ], "hal058": [ - "Take 'em out, blue boy." + "Haal ze eruit, blauwe jongen." ], "hal059": [ - "You're pretty handy with that iron, blondie." + "Je bent behoorlijk handig met dat strijkijzer, blondie." ], "hal060": [ - "Shut up, Mog." + "Houd je mond, Mog." ], "hal061": [ - "Here they come again!" + "Daar komen ze weer!" ], "hal062": [ - "Get up here and earn your keep!" + "Kom hierheen en verdien uw geld!" ], "hal063": [ - "Krew was right about you. You got the magic, man." + "Krew had gelijk over jou. Jij hebt de magie, man." ], "hal064": [ - "Nice fighting, man, I'm beginning to like you." + "Lekker vechten, man, ik begin je aardig te vinden." ], "hal065": [ - "Okay... that doesn't look good. Jak, you're up!" + "Oké... dat ziet er niet goed uit. Jak, je bent wakker!" ], "hal066": [ - "Wow! Beams of death!", - "I'm staying right here 'til you do something about that." + "Wauw! Stralen van de dood!", + "Ik blijf hier tot je daar iets aan doet." ], "hal067": [ - "Uhhh, Jak. I think you're the man for this job." + "Euh, Jak. Ik denk dat jij de man bent voor deze baan." ], "hal068": [ - "Jump the beams, Jak." + "Spring over de balken, Jak." ], "hal069": [ - "Nice moves." + "Mooie bewegingen." ], "hal070": [ - "Yeah... you wish, tubby." + "Ja... wat je wilt, tubby." ], "hal071": [ - "We're staying put 'til you take out those Metal Heads." + "We blijven zitten totdat je die Metal Heads uitschakelt." ], "hal072": [ - "Sweet as a ballerina, hehehehe..." + "Zo zoet als een ballerina, hehehehe..." ], "hal073": [ - "Knock 'em silly, Jak!" + "Maak ze gek, Jak!" ], "hal074": [ - "This one's gonna be loud!" + "Deze gaat luid zijn!" ], "hal075": [ - "This is too easy." + "Dit is te gemakkelijk." ], "hal080": [ - "We ain't moving, 'til you kill 'em all!" + "We bewegen niet, totdat je ze allemaal doodt!" ], "hal081": [ - "OK, let's get out of here before more come back." + "Oké, laten we hier weggaan voordat er meer terugkomen." ], "hal082": [ - "You're earning your dough today. Let's finish this!" + "Je verdient vandaag je geld. Laten we dit afmaken!" ], "hal083": [ - "I'm impressed, Jak. I'll put in a good word with the boss." + "Ik ben onder de indruk, Jak. Ik zal een goed woordje doen met de baas." ], "hal084": [ - "Yeah, do it, Jinx." + "Ja, doe het, Jinx." ], "hal085": [ - "Man, Jinx, what'd you put in those boomsticks?" + "Man, Jinx, wat heb je in die boomsticks gestopt?" ], "hal086": [ - "Look at him go." + "Kijk hem eens gaan." ], "hal087": [ - "I could jump like that." + "Ik zou zo kunnen springen." ], "hal088": [ - "Get away from me, you crazy monster!" + "Ga weg van mij, gek monster!" ], "hal090": [ - "This is where I come in, cover your ears." + "Dit is waar ik binnenkom, bedek je oren." ], "hal091": [ - "Fire in the hole!" + "Vuur in het gat!" ], "hal092": [ - "And on we go." + "En we gaan verder." ], "hal093": [ - "Please, allow me." + "Alsjeblieft, sta mij toe." ], "hal094": [ - "One unclogged sewer, comin' up." + "Er komt een ontstopt riool naar boven." ], "hal095": [ - "This is my boomshtick!" + "Dit is mijn boomshtick!" ], "hal096": [ - "Boom, baby!" + "Boem, schat!" ], "hal097": [ - "We're clear, let's move." + "We zijn veilig, laten we gaan." ], "hal101": [ - "Ahh! That's gonna leave a mark." + "Ah! Dat zal een spoor achterlaten." ], "hal102": [ - "Die! A little help would be good!" + "Dood gaan! Een beetje hulp zou goed zijn!" ], "hal103": [ - "Watch it, pretty boy, or I'll rearrange your face." + "Kijk uit, mooie jongen, of ik herschik je gezicht." ], "hal104": [ - "You got an itchy trigger finger." + "Je hebt een jeukende trekkervinger." ], "hal107": [ - "Piece of cake." + "Fluitje van een cent." ], "hal108": [ - "Get over here, Jak!" + "Kom hier, Jak!" ], "hal109": [ - "Stay close, pretty boy!" + "Blijf dichtbij, mooie jongen!" ], "hal111": [ - "Keep with us, tough guy!" + "Blijf bij ons, stoere kerel!" ], "hal112": [ - "You're in the way, Jak, move!" + "Je staat in de weg, Jak, ga weg!" ], "hal113": [ - "I wouldn't stand there if I were you!" + "Ik zou daar niet staan ​​als ik jou was!" ], "hal114": [ - "This is gonna be loud." + "Dit gaat luid zijn." ], "hal115": [ "Oh!" @@ -3621,134 +3621,134 @@ "Oh!" ], "hal117": [ - "Hey!" + "Hoi!" ], "hal118": [ - "It's a trap!" + "Het is een val!" ], "hal119": [ - "Yeah, why did we sign up for this?" + "Ja, waarom hebben we ons hiervoor aangemeld?" ], "hal120": [ - "I got 30 keys of high explosives strapped to my back...", - "Great..." + "Ik heb 30 sleutels vol explosieven op mijn rug vastgebonden...", + "Geweldig..." ], "hal121": [ - "Just shut your whiny traps and keep moving." + "Sluit gewoon je zeurderige vallen en blijf in beweging." ], "hal122": [ - "Uh, do we have to?" + "Eh, moeten we dat doen?" ], "hal123": [ - "Uhh, did you hear that?" + "Euh, heb je dat gehoord?" ], "hal124": [ - "We are so dead, man." + "We zijn zo dood, man." ], "hal125": [ - "Shut up! I'll go ahead and check it out..." + "Stil! Ik ga verder en bekijk het..." ], "hal126": [ - "Man, that thing's ugly." + "Man, dat ding is lelijk." ], "hal127": [ - "Get him, man, before he gets us." + "Pak hem, man, voordat hij ons te pakken krijgt." ], "hal128": [ - "They're coming up from behind, too!" + "Ze komen ook van achteren!" ], "hal129": [ - "Jak's my hero." + "Hoe gaat het met mijn held?" ], "hal130": [ - "Sounds like I got gas." + "Klinkt alsof ik benzine heb." ], "hal131": [ - "I hate Krew." + "Ik haat Krew." ], "hal132": [ - "I'm sure not going back that way!" + "Ik ga zeker niet terug die kant op!" ], "hal133": [ - "It's coming for me!" + "Het komt voor mij!" ], "hal134": [ - "I think it wants me!" + "Ik denk dat hij mij wil!" ], "hal135": [ - "Help me, Jak!" + "Help mij, Jak!" ], "hal136": [ - "I'm gonna die!" + "Ik ga dood!" ], "hal137": [ - "It got me!" + "Het heeft mij!" ], "hal138": [ - "Jak! Save me!" + "Hoe! Red mij!" ], "hal139": [ - "Ughh! It got me!" + "Ugh! Het heeft mij!" ], "hal140": [ - "Oughh! That beam smarts." + "Oooh! Die straal is slim." ], "hal141": [ - "I've been shot!" + "Ik ben neergeschoten!" ], "hal142": [ - "I'm hit!" + "Ik ben geraakt!" ], "hal143": [ - "Ughh!" + "Ugh!" ], "hal144": [ - "Ughh! Help me!" + "Bah! Help me!" ], "hal145": [ - "Hey man, watch it!" + "Hé man, kijk uit!" ], "hal146": [ - "Ohh, hit me again and I'll pound you!" + "Ohh, sla me nog een keer en ik sla je!" ], "hal147": [ - "Nobody's my friend..." + "Niemand is mijn vriend..." ], "hal148": [ - "Oof!" + "Oef!" ], "hal149": [ - "Uh!" + "Eh!" ], "hal150": [ - "Ahh!" + "Ah!" ], "hal151": [ - "He's got me!" + "Hij heeft mij!" ], "hal152": [ - "Gahh!! Not again!" + "Gaaf!! Niet weer!" ], "hal153": [ - "I'm dying!" + "Ik ga dood!" ], "hal154": [ - "Any more like that, then I'm history." + "Nog meer van dat soort dingen, dan ben ik geschiedenis." ], "hal155": [ - "I'm getting shot!" + "Ik word neergeschoten!" ], "hal156": [ - "Sure! Why don't you kill me too?" + "Zeker! Waarom vermoord je mij ook niet?" ], "hal157": [ - "Check your targets, wimp boy!" + "Controleer je doelen, watje jongen!" ], "hal158": [ - "Shoot the shine-heads, not me!" + "Schiet op de glanskoppen, niet op mij!" ], "hal159": [ - "Ahh!" + "Ah!" ], "hal161": [ "Ugh!" @@ -3763,486 +3763,486 @@ "Ah!" ], "hal165": [ - "Look out!" + "Pas op!" ], "hal166": [ - "We're not doing this with a rookie, I'm calling this off!" + "We doen dit niet met een groentje, ik zeg dit af!" ], "hal167": [ - "That's it, we're done! Come back when you're serious." + "Dat is alles, we zijn klaar! Kom terug als je serieus bent." ], "hal168": [ - "I'm cornered!" + "Ik ben in het nauw gedreven!" ], "hal169": [ - "It's gonna shoot me!" + "Het gaat mij neerschieten!" ], "hal170": [ - "Jak! Do something!" + "Jak! Doe iets!" ], "hal171": [ - "Ahh! It got me!" + "Ahh! Het heeft me te pakken!" ], "hal172": [ - "No no no! Help!" + "Nee nee nee! Hulp!" ], "hal173": [ - "They're getting too close, Jak!" + "Ze komen te dichtbij, Jak!" ], "hal174": [ - "It's gonna get me!" + "Het gaat mij pakken!" ], "hal175": [ - "I'm getting killed here!" + "Ik word hier vermoord!" ], "hal176": [ - "Jak! I'm about to be metal meat!" + "Jak! Ik sta op het punt metaalvlees te zijn!" ], "hal177": [ - "Aghh! That beam burns!" + "Ahh! Die straal brandt!" ], "hal178": [ - "It's shooting me!" + "Het schiet mij!" ], "hal179": [ - "Watch out for the beam!" + "Pas op voor de straal!" ], "hal180": [ - "I'm shot!" + "Ik ben neergeschoten!" ], "hal181": [ - "I'm trapped!" + "Ik zit vast!" ], "hal182": [ - "Get back... I'm gonna detonate this one remotely." + "Ga terug... Ik ga deze op afstand tot ontploffing brengen." ], "hal183": [ - "He-hah!" + "Hij-ha!" ], "hal184": [ - "Alright!" + "Akkoord!" ], "hal185": [ - "Let's go!" + "Laten we gaan!" ], "hal186": [ - "Move it!" + "Verplaats het!" ], "hal187": [ - "That's a lot of Metal Heads." + "Dat zijn veel Metalheads." ], "hal188": [ - "Oof!" + "Oef!" ], "hal189": [ - "Daghh!" + "Dagh!" ], "hal190": [ - "Oughh..." + "Oei..." ], "hal191": [ - "Krew's dead for getting me into this!" + "Krew is dood omdat hij mij hierin heeft betrokken!" ], "jak001": [ - "Alright!" + "Akkoord!" ], "jak002": [ - "Yeah!" + "Ja!" ], "jak003": [ - "Wooo!" + "Wauw!" ], "jak004": [ - "Here we go!" + "Daar gaan we!" ], "jak005": [ - "Nice!" + "Leuk!" ], "jak006": [ - "Rock 'n roll!" + "Rock-'n-roll!" ], "jak007": [ - "Right on!" + "Direct aan!" ], "jak008": [ - "Cool!" + "Koel!" ], "jak009": [ - "Cool!" + "Koel!" ], "jak010": [ - "Oh, yeah!" + "O ja!" ], "jak011": [ - "Comin' through!" + "Komt door!" ], "jak012": [ - "Look out!" + "Pas op!" ], "jak013": [ - "Last lap!" + "Laatste ronde!" ], "jak014": [ - "Watch out!" + "Kijk uit!" ], "jak015": [ - "Whoa!" + "Wauw!" ], "jak016": [ - "Whoa!" + "Wauw!" ], "jak017": [ - "Hold on, Dax!" + "Wacht even, Daxx!" ], "jak018": [ - "Hang on, Dax!" + "Wacht even, Daxx!" ], "jak020": [ - "Whoa... boy that was close." + "Whoa... jongen, dat was dichtbij." ], "jak021": [ - "No!" + "Nee!" ], "jak022": [ - "Not this time." + "Deze keer niet." ], "jak023": [ - "Huargh!" + "Hoera!" ], "jak024": [ - "Lean, baby, lean!" + "Leun, schat, leun!" ], "jak025": [ - "Catch him on the inside!" + "Vang hem van binnen!" ], "jak026": [ - "This is MY show!" + "Dit is MIJN show!" ], "jak027": [ - "Haha, we got him!" + "Haha, wij hebben hem!" ], "jak028": [ - "Watch out!" + "Kijk uit!" ], "jak029": [ - "You're dead, Erol!" + "Je bent dood, Erol!" ], "jak030": [ - "See ya!" + "Tot ziens!" ], "jak031": [ "Haha!" ], "jak032": [ - "Wooo!" + "Wauw!" ], "jak033": [ - "Last lap!" + "Laatste ronde!" ], "jak034": [ "Later." ], "jak035": [ - "We gotta catch up!" + "We moeten inhalen!" ], "jak036": [ - "There he is!" + "Daar is hij!" ], "jak037": [ - "Come on, baby, show me what you got!" + "Kom op, schat, laat me zien wat je hebt!" ], "jak038": [ - "Here we go!" + "Daar gaan we!" ], "jak039": [ "Urgh!" ], "jak040": [ - "I'll take this." + "Ik zal dit nemen." ], "jak041": [ - "I need to borrow this." + "Ik moet dit even lenen." ], "jak042": [ - "Move over, buddy!" + "Ga aan de kant, maatje!" ], "jak044": [ - "Outta the vehicle!" + "Uit het voertuig!" ], "jak045": [ - "Outta my way, buddy!" + "Ga uit mijn weg, vriend!" ], "jak046": [ - "Thanks for the lift." + "Bedankt voor de lift." ], "jak047": [ - "Mind if I drive?" + "Vindt u het goed als ik rijd?" ], "jak048": [ - "I like the color of this vehicle." + "Ik vind de kleur van deze auto mooi." ], "jak049": [ - "Mine now." + "Nu van mij." ], "jak050": [ - "'Scuse me, but I need this." + "'Neem me niet kwalijk, maar ik heb dit nodig." ], "jak051": [ - "Take a hike, buddy!" + "Maak een wandeling, maatje!" ], "jak052": [ - "Try walking." + "Probeer te lopen." ], "jak053": [ - "Sorry, but I'm in a hurry!" + "Sorry, maar ik heb haast!" ], "jak054": [ - "Gotta go!" + "Moet gaan!" ], "jak055": [ - "Get another vehicle!" + "Koop een ander voertuig!" ], "jak056": [ - "Road hog!" + "Weg varken!" ], "jak057": [ - "Brake yourself!" + "Rem jezelf!" ], "jak059": [ - "Haha, you want some?" + "Haha, wil je wat?" ], "jak060": [ - "Get some!" + "Krijg iets!" ], "jak061": [ - "Yeah, feel it!" + "Ja, voel het!" ], "jak062": [ - "Die!" + "Dood gaan!" ], "jak063": [ - "Badass comin' through!" + "Wat een stoere kerel!" ], "jak064": [ - "Be afraid. Be very afraid." + "Wees bang. Wees erg bang." ], "jak065": [ - "Oooh, that's gotta hurt." + "Oei, dat moet pijn doen." ], "jak066": [ - "This is payback." + "Dit is vergelding." ], "jak067": [ - "DIE, Praxis!" + "De oefening!" ], "jak068": [ - "You're finished, Kor!" + "Je bent klaar, Kor!" ], "jak069": [ - "This is my town, Kor!" + "Dit is mijn stad, Kor!" ], "jak070": [ - "Surprise... you can't kill me in my dark form." + "Verrassing... je kunt mij niet doden in mijn donkere vorm." ], "jak071": [ - "Now you pay!" + "Nu betaalt u!" ], "jak072": [ - "Go back to the past, Kor! 'Cause you're history." + "Ga terug naar het verleden, Kor! Omdat jij geschiedenis bent." ], "jak073": [ - "I win." + "Ik win." ], "jak074": [ - "You should have killed me when you had the chance, Praxis." + "Je had me moeten doden toen je de kans had, Praxis." ], "jak075": [ - "Daxter, just shut up and watch my back." + "Daxter, hou je mond en let op mij." ], "jak076": [ - "Whatever, Daxter." + "Wat dan ook, Daxter." ], "jak077": [ - "Will you stop yappin'?" + "Wil je stoppen met janken?" ], "jak078": [ - "When you got smaller, so did your brain." + "Toen jij kleiner werd, werden je hersenen dat ook." ], "jak079": [ - "You're on MY shoulder. YOU'RE the sidekick." + "Je zit op MIJN schouder. JIJ BENT de hulpje." ], "jak080": [ - "As long as you're on MY shoulder, keep your mouth shut." + "Zolang je op MIJN schouder zit, houd je mond dicht." ], "jd001": [ - "Hey, kid! Wait! Come back!", - "We gotta protect him!" + "Hé, jongen! Wachten! Terugkomen!", + "We moeten hem beschermen!" ], "jk001": [ - "Wait, KID!" + "Wacht, KIND!" ], "jk002": [ - "There he goes!" + "Daar gaat hij!" ], "jk003": [ - "Leave him alone!" + "Laat hem alleen!" ], "jk004": [ - "KID!" + "KIND!" ], "jk005": [ - "Pick on someone your own size!" + "Kies iemand van jouw eigen maat!" ], "jk006": [ - "Kid, look out!" + "Kind, kijk uit!" ], "jk007": [ - "How do YOU like it when somebody fights back?" + "Hoe vind je het als iemand terugvecht?" ], "jk008": [ - "Leave the kid alone!" + "Laat het kind met rust!" ], "jk009": [ - "He's just a kid!" + "Hij is nog maar een kind!" ], "jk010": [ - "Keep away from him!" + "Blijf uit zijn buurt!" ], "jk011": [ - "Now you've pissed me off!" + "Nu heb je mij kwaad gemaakt!" ], "jk012": [ - "Eat this!" + "Eet dit!" ], "jk013": [ - "Back off!" + "Donder op!" ], "jk014": [ - "We gotta get in the vehicle with the Kid!" + "We moeten bij de Kid in de auto stappen!" ], "jk015": [ - "Hold on!" + "Hou vol!" ], "jk016": [ - "Keep your head down, Kid!" + "Houd je hoofd naar beneden, jongen!" ], "jk017": [ - "Stick with me, Kid, and you'll be safe." + "Blijf bij mij, Kid, dan ben je veilig." ], "jk018": [ - "Stay with me, Kid!" + "Blijf bij mij, Kind!" ], "jk019": [ - "Get in the vehicle, Dax!" + "Stap in het voertuig, Dax!" ], "kei001": [ - "You can get on and off the JET-Board at any time." + "U kunt op elk moment in- en uitstappen op het JET-Board." ], "kei002": [ - "You can jump on your JET-Board!" + "Je kunt op je JET-Board springen!" ], "kei003": [ - "Jump up on that ledge." + "Spring op die rand." ], "kei004": [ - "Try jumping up on that crate." + "Probeer eens op die kist te springen." ], "kei005": [ - "Jump over that obstacle." + "Spring over dat obstakel." ], "kei006": [ - "You can get a higher jump by ducking before you jump!" + "Je kunt een hogere sprong maken door te duiken voordat je springt!" ], "kei007": [ - "Try doing a duck jump over that obstacle." + "Probeer een eendensprong over dat obstakel te maken." ], "kei008": [ - "Jump and jump again a little after you've landed", - "for an even bigger launch!" + "Spring en spring nog een beetje nadat je bent geland", + "voor een nog grotere lancering!" ], "kei009": [ - "Try getting up on that higher ledge with a boost jump!" + "Probeer met een boostsprong op die hogere rand te komen!" ], "kei010": [ - "You can spin in the air!" + "Je kunt in de lucht draaien!" ], "kei011": [ - "Land a perfect 360 for a speed boost!" + "Land een perfecte 360 ​​voor een snelheidsboost!" ], "kei012": [ - "Nice spin!" + "Mooie draai!" ], "kei013": [ - "You can land on a rail and grind across it." + "Je kunt op een rail landen en eroverheen grinden." ], "kei014": [ - "Try grinding on that rail." + "Probeer eens op die rail te slijpen." ], "kei016": [ - "You can do flips while you jump!" + "Je kunt salto's maken terwijl je springt!" ], "kei017": [ - "You can also do tricks for fun." + "Je kunt ook trucjes doen voor de lol." ], "kei018": [ - "Try to put a number of moves together to get points." + "Probeer een aantal zetten samen te voegen om punten te krijgen." ], "kei019": [ - "Get enough points to win the challenge!" + "Verzamel genoeg punten om de uitdaging te winnen!" ], "kei020": [ - "Not enough points! Work on your moves." + "Niet genoeg punten! Werk aan je bewegingen." ], "kei021": [ - "Good job!" + "Goed gedaan!" ], "kei022": [ - "Close, but not quite there." + "Dichtbij, maar nog niet helemaal daar." ], "kei023": [ - "Try again." + "Probeer het nog eens." ], "kei024": [ - "A little more work and you just might win!" + "Nog een beetje werk en misschien win jij wel!" ], "kei025": [ - "No good! Not enough points." + "Niet goed! Niet genoeg punten." ], "kei026": [ - "The Underground said you needed some help,", - "you won't be able to catch those Metal Heads in the", - "Forest on foot so I've left my JET-Board at the airlock", - "near the city exit. Since you're helping the Underground,", - "I'll even let you keep it!" + "De Underground zei dat je hulp nodig had,", + "je zult die Metal Heads niet kunnen vangen in de", + "Bos te voet dus ik heb mijn JET-Board bij de luchtsluis achtergelaten", + "vlakbij de stadsuitgang. Omdat jij de ondergrondse helpt,", + "Ik laat je hem zelfs houden!" ], "kei027": [ - "Jak, this is Keira. Don't forget - I still need two artifacts", - "to make the Rift Rider work! I need the Time Map and the", - "Heart of Mar Energy Gem, or we're not going anywhere!" + "Jak, dit is Keira. Vergeet niet dat ik nog twee artefacten nodig heb", + "om de Rift Rider te laten werken! Ik heb de Time Map en de", + "Heart of Mar Energy Gem, anders gaan we nergens heen!" ], "kei028": [ - "I still need those two artifacts or this pile of junk", - "won't move one city block, much less through the Rift", - "and back to our own time!", - "You've got to find the Heart of Mar and the Time Map", - "or we're stuck!" + "Ik heb die twee artefacten of deze stapel rotzooi nog steeds nodig", + "zal geen stadsblok verplaatsen, laat staan ​​door de Rift", + "en terug naar onze eigen tijd!", + "Je moet het Hart van Mar en de Tijdkaart vinden", + "of we zitten vast!" ], "kei029": [ - "This is Keira. Thanks for getting the artifacts, guys.", - "It's strange... the Time Map had a bunch of old coordinates", - "in it. Come see me at the Stadium." + "Dit is Keira. Bedankt voor het ophalen van de artefacten, jongens.", + "Het is vreemd... de Tijdkaart had een heleboel oude coördinaten", + "in het. Kom naar mij toe in het Stadion." ], "kg001": [ - "Call for backup!" + "Bel voor versterking!" ], "kg001a": [ - "Call for backup!" + "Bel voor versterking!" ], "kg002": [ - "Freeze!" + "Bevriezen!" ], "kg002a": [ - "Freeze!" + "Bevriezen!" ], "kg004": [ "Halt!" @@ -4251,1203 +4251,1203 @@ "Halt!" ], "kg005": [ - "Get more cruisers in here!" + "Koop hier meer cruisers!" ], "kg005a": [ - "Get more cruisers in here!" + "Koop hier meer cruisers!" ], "kg006": [ - "Surrender!" + "Overgave!" ], "kg006a": [ - "Surrender!" + "Overgave!" ], "kg007": [ - "This is a no-hover zone!" + "Dit is een no-hover-zone!" ], "kg007a": [ - "This is a no-hover zone!" + "Dit is een no-hover-zone!" ], "kg008": [ - "Pull over!" + "Stoppen!" ], "kg008a": [ - "Pull over!" + "Stoppen!" ], "kg009": [ - "Say good night!" + "Zeg slaaplekker!" ], "kg010": [ - "Seal off the area." + "Sluit het gebied af." ], "kg011": [ - "Stop the vehicle!" + "Stop het voertuig!" ], "kg011a": [ - "Stop the vehicle!" + "Stop het voertuig!" ], "kg012": [ - "You're under arrest!" + "Je staat onder arrest!" ], "kg012a": [ - "You're under arrest!" + "Je staat onder arrest!" ], "kg013": [ - "You there!" + "Jij daar!" ], "kg014": [ - "You want some?!" + "Wil je wat?!" ], "kg015": [ - "This area is off-limits." + "Dit gebied is verboden terrein." ], "kg016": [ "Stop!" ], "kg018": [ - "Hey!" + "Hoi!" ], "kg019": [ - "We do this the easy way, or the hard way." + "We doen dit op de makkelijke manier, of op de moeilijke manier." ], "kg020": [ - "Slow down!" + "Vertragen!" ], "kg020a": [ - "Slow down!" + "Vertragen!" ], "kg021": [ - "Move over!" + "Beweeg over!" ], "kg021a": [ - "Move over!" + "Beweeg over!" ], "kg022": [ - "Call in more Hellcats!" + "Roep meer Hellcats op!" ], "kg023": [ - "Requesting backup!" + "Back-up aangevraagd!" ], "kg023a": [ - "Requesting backup!" + "Back-up aangevraagd!" ], "kg024": [ - "Suspect on foot!" + "Verdachte te voet!" ], "kg024a": [ - "Suspect on foot!" + "Verdachte te voet!" ], "kg025": [ - "Suspect in vehicle!" + "Verdachte in voertuig!" ], "kg025a": [ - "Suspect in vehicle!" + "Verdachte in voertuig!" ], "kg026": [ - "Suspect fleeing into sector five!" + "Verdachte vlucht naar sector vijf!" ], "kg026a": [ - "Suspect fleeing into sector five!" + "Verdachte vlucht naar sector vijf!" ], "kg027": [ - "Suspect moving to sector six!" + "Verdachte verhuist naar sector zes!" ], "kg027a": [ - "Suspect moving into sector six!" + "Verdachte verhuist naar sector zes!" ], "kg028": [ - "High-speed chase in sector four!" + "Achtervolging op hoge snelheid in sector vier!" ], "kg028a": [ - "High-speed chase in sector four!" + "Achtervolging op hoge snelheid in sector vier!" ], "kg029": [ - "Checking sector three." + "Sector drie controleren." ], "kg029a": [ - "Checking sector three." + "Sector drie controleren." ], "kg030": [ - "Patrolling sector nine." + "Patrouilleren in sector negen." ], "kg030a": [ - "Patrolling sector nine." + "Patrouilleren in sector negen." ], "kg031": [ - "Be advised, I'm on foot." + "Let op, ik ben te voet." ], "kg031a": [ - "Be advised, I'm on foot." + "Let op, ik ben te voet." ], "kg032": [ - "Moving to next sector." + "Op weg naar de volgende sector." ], "kg032a": [ - "Moving to next sector." + "Op weg naar de volgende sector." ], "kg033": [ - "I've got suspicious activity in this sector." + "Ik heb verdachte activiteiten in deze sector." ], "kg033a": [ - "I've got suspicious activity in this sector." + "Ik heb verdachte activiteiten in deze sector." ], "kg034": [ - "Sweeping for suspects." + "Vegen naar verdachten." ], "kg034a": [ - "Sweeping for suspects." + "Vegen naar verdachten." ], "kg035": [ - "Nothing so far." + "Tot nu toe nog niets." ], "kg035a": [ - "Nothing so far." + "Tot nu toe niets." ], "kg036": [ - "Roger that, still looking." + "Roger, nog steeds op zoek." ], "kg036a": [ - "Roger that, still looking." + "Roger, nog steeds op zoek." ], "kg037": [ - "Roger, we'll shoot on sight." + "Roger, we schieten ter plekke." ], "kg037a": [ - "Roger, we'll shoot on sight." + "Roger, we schieten ter plekke." ], "kg038": [ - "Please advise, suspect's description." + "Geef alstublieft het signalement van de verdachte door." ], "kg039": [ - "Get out of the vehicle!" + "Ga uit het voertuig!" ], "kg039a": [ - "Get out of the vehicle!" + "Ga uit het voertuig!" ], "kg040": [ - "Call in more Hellcats!" + "Roep meer Hellcats op!" ], "kg040a": [ - "Call in more Hellcats!" + "Roep meer Hellcats op!" ], "kg041": [ - "The area is secure." + "Het gebied is veilig." ], "kg041a": [ - "The area is secure." + "Het gebied is veilig." ], "kg042": [ - "Nothing to report." + "Niets te melden." ], "kg042a": [ - "Nothing to report." + "Niets te melden." ], "kg043": [ - "Proceeding as planned." + "Vervolg zoals gepland." ], "kg043a": [ - "Proceeding as planned." + "Vervolg zoals gepland." ], "kg044": [ - "I lost him." + "Ik verloor hem." ], "kg044a": [ - "I lost him." + "Ik verloor hem." ], "kg045": [ - "Subject is not in sight." + "Onderwerp is niet in zicht." ], "kg045a": [ - "Subject not in sight." + "Onderwerp niet in zicht." ], "kg046": [ - "He's gone." + "Hij is weg." ], "kg046a": [ - "He disappeared!" + "Hij verdween!" ], "kg047": [ - "Where'd he go?" + "Waar ging hij heen?" ], "kg047a": [ - "Where'd he go?" + "Waar ging hij heen?" ], "kg048": [ - "Lost visual contact." + "Visueel contact verloren." ], "kg048a": [ - "Lost visual contact." + "Verlies van visueel contact." ], "kg049": [ - "He just ducked out." + "Hij dook gewoon weg." ], "kg049a": [ - "He just ducked out." + "Hij dook gewoon weg." ], "kg050": [ - "He's out of sight." + "Hij is uit het zicht." ], "kg050a": [ - "He's out of sight." + "Hij is uit het zicht." ], "kg051": [ - "We're losing him!" + "We zijn hem kwijt!" ], "kg051a": [ - "We're losing him!" + "We zijn hem kwijt!" ], "kg052": [ - "Continuing our sweep." + "We vervolgen onze zoektocht." ], "kg052a": [ - "Continuing our sweep." + "We vervolgen onze zoektocht." ], "kg053": [ - "Searching sector four." + "Sector vier doorzocht." ], "kg053a": [ - "Searching sector four." + "Sector vier doorzocht." ], "kg054": [ - "Searching sector seven." + "Sector zeven doorzoeken." ], "kg054a": [ - "Searching sector seven." + "Sector zeven doorzoeken." ], "kg055": [ - "Searching sector three." + "Sector drie doorzoeken." ], "kg055a": [ - "Searching sector three." + "Sector drie doorzoeken." ], "kg056": [ - "Keep looking." + "Blijf kijken." ], "kg056a": [ - "Keep looking." + "Blijf kijken." ], "kg057": [ - "He's got to be here somewhere." + "Hij moet hier ergens zijn." ], "kg057a": [ - "He's got to be here somewhere." + "Hij moet hier ergens zijn." ], "kg058": [ - "I can't find him." + "Ik kan hem niet vinden." ], "kg058a": [ - "I can't find him." + "Ik kan hem niet vinden." ], "kg059": [ - "No sign of the subject." + "Geen teken van het onderwerp." ], "kg059a": [ - "No sign of the subject." + "Geen teken van het onderwerp." ], "kg060": [ - "I don't see him anywhere." + "Ik zie hem nergens." ], "kg060a": [ - "I don't see him anywhere." + "Ik zie hem nergens." ], "kg061": [ - "Still searching." + "Nog steeds aan het zoeken." ], "kg061a": [ - "Still searching." + "Nog steeds aan het zoeken." ], "kg062": [ - "Searching for the target." + "Op zoek naar het doel." ], "kg062a": [ - "Searching for the target." + "Op zoek naar het doel." ], "kg063": [ - "He must be here." + "Hij moet hier zijn." ], "kg063a": [ - "He must be here." + "Hij moet hier zijn." ], "kg064": [ - "He was just here." + "Hij was hier net." ], "kg064a": [ - "He was just here." + "Hij was hier net." ], "kg065": [ - "We lost him." + "Wij zijn hem kwijt." ], "kg065a": [ - "We lost him." + "Wij zijn hem kwijt." ], "kg066": [ - "He got away." + "Hij is ontkomen." ], "kg066a": [ - "He got away." + "Hij is ontkomen." ], "kg067": [ - "He escaped." + "Hij ontsnapte." ], "kg067a": [ - "He escaped." + "Hij ontsnapte." ], "kg068": [ - "He shook us." + "Hij schudde ons." ], "kg068a": [ - "He shook us." + "Hij schudde ons." ], "kg069": [ - "Looks like he's gone." + "Het lijkt erop dat hij weg is." ], "kg069a": [ - "Looks like he's gone." + "Het lijkt erop dat hij weg is." ], "kg070": [ - "I found him!" + "Ik heb hem gevonden!" ], "kg070a": [ - "I found him!" + "Ik heb hem gevonden!" ], "kg071": [ - "There he is." + "Daar is hij." ], "kg071a": [ - "There he is!" + "Daar is hij!" ], "kg072": [ - "Be advised, target in sight." + "Wees gewaarschuwd, doel in zicht." ], "kg072a": [ - "Be advised, target in sight!" + "Let op, doelwit in zicht!" ], "kg073": [ - "We have a positive ID." + "We hebben een positieve identiteit." ], "kg073a": [ - "We have a positive ID." + "We hebben een positieve identiteit." ], "kg074": [ - "I see him!" + "Ik zie hem!" ], "kg074a": [ - "I see him!" + "Ik zie hem!" ], "kg075": [ - "He's over there, get him!" + "Hij is daar, pak hem!" ], "kg075a": [ - "He's over here!" + "Hij is hier!" ], "kg076": [ - "Get him!" + "Pak hem!" ], "kg076a": [ - "Get him!" + "Pak hem!" ], "kg077": [ - "I've reacquired the target!" + "Ik heb het doel teruggevonden!" ], "kg077a": [ - "I've reacquired the target!" + "Ik heb het doel teruggevonden!" ], "kg078": [ - "I'm closing in." + "Ik kom dichterbij." ], "kg078a": [ - "I'm closing in!" + "Ik kom dichterbij!" ], "kg079": [ - "I'm on him!" + "Ik ben op hem!" ], "kg079a": [ - "I'm on him!" + "Ik ben op hem!" ], "kg080": [ - "I'm in pursuit!" + "Ik ben in de achtervolging!" ], "kg080a": [ - "I'm in pursuit!" + "Ik ben in de achtervolging!" ], "kg081": [ - "Pursuing target." + "Doel nastreven." ], "kg081a": [ - "Pursuing target!" + "Doel nastreven!" ], "kg082": [ - "Don't let him get away!" + "Laat hem niet ontsnappen!" ], "kg082a": [ - "Don't let him get away!" + "Laat hem niet ontsnappen!" ], "kg083": [ - "Get him!" + "Pak hem!" ], "kg083a": [ - "Get him!" + "Pak hem!" ], "kg084": [ - "After him!" + "Na hem!" ], "kg084a": [ - "After him!" + "Na hem!" ], "kg085": [ - "I have a visual!" + "Ik heb een visueel beeld!" ], "kg085a": [ - "I have a visual!" + "Ik heb een visueel beeld!" ], "kg086": [ - "We see him!" + "Wij zien hem!" ], "kg086a": [ - "We see him!" + "Wij zien hem!" ], "kg087": [ - "Stop right there!" + "Stop hier!" ], "kg087a": [ - "Stop right there!" + "Stop hier!" ], "kg088": [ - "I have a bead on him!" + "Ik heb een kraal op hem!" ], "kg088a": [ - "I have a bead on him!" + "Ik heb een kraal op hem!" ], "kg089": [ - "I'm hit!" + "Ik ben geraakt!" ], "kg089a": [ - "I'm hit!" + "Ik ben geraakt!" ], "kg090": [ - "Man down!" + "Man neer!" ], "kg090a": [ - "Man down!" + "Man neer!" ], "kg091": [ - "I need backup!" + "Ik heb ondersteuning nodig!" ], "kg091a": [ - "I need backup!" + "Ik heb ondersteuning nodig!" ], "kg092": [ - "Stop him!" + "Stop hem!" ], "kg092a": [ - "Stop him!" + "Stop hem!" ], "kg093": [ - "Look out!" + "Pas op!" ], "kg093a": [ - "Look out!" + "Pas op!" ], "kg094": [ - "There he is, shoot him!" + "Daar is hij, schiet hem neer!" ], "kg094a": [ - "There he is, shoot him!" + "Daar is hij, schiet hem neer!" ], "kg095": [ - "Take him out!" + "Haal hem eruit!" ], "kg095a": [ - "Take him out!" + "Haal hem eruit!" ], "kg096": [ - "Prisoner escape in progress, sound the alarm!" + "Ontsnapping van de gevangene bezig, luid alarm!" ], "kg096a": [ - "Prison escape in progress, sound the alarm!" + "Gevangenisontsnapping bezig, luid alarm!" ], "kg097": [ - "Prisoner on level two!" + "Gevangene op niveau 2!" ], "kg097a": [ - "Prisoner on level two!" + "Gevangene op niveau twee!" ], "kg098": [ - "Prisoner moving to sub-level B!" + "Gevangene gaat naar subniveau B!" ], "kg098a": [ - "Prisoner moving to sub-level B!" + "Gevangene gaat naar subniveau B!" ], "kg099": [ - "We think he's in the pipes!" + "Wij denken dat hij in de pijpen zit!" ], "kg099a": [ - "We think he's in the pipes!" + "Wij denken dat hij in de pijpen zit!" ], "kg100": [ - "We're beginning our sweep." + "We beginnen met onze sweep." ], "kg100a": [ - "We're beginning our sweep." + "We beginnen met onze sweep." ], "kg101": [ - "We have prisoner in sight, move in!" + "We hebben een gevangene in zicht, kom binnen!" ], "kg101a": [ - "We have prisoner in sight, move in!" + "We hebben een gevangene in zicht, kom binnen!" ], "kg102": [ - "We have movement on level one!" + "We hebben beweging op niveau één!" ], "kg102a": [ - "We have movement on level one!" + "We hebben beweging op niveau één!" ], "kg103": [ - "Close in!" + "Dichtbij!" ], "kg103a": [ - "Close in!" + "Dichtbij!" ], "kg104": [ - "We're moving in!" + "We gaan verhuizen!" ], "kg104a": [ - "We're moving in!" + "We gaan verhuizen!" ], "kg105": [ - "Secure the cell block!" + "Beveilig het celblok!" ], "kg105a": [ - "Secure the cell block!" + "Beveilig het celblok!" ], "kg106": [ - "Take no prisoners!" + "Nemen geen gevangenen!" ], "kg106a": [ - "Take no prisoners!" + "Nemen geen gevangenen!" ], "kg107": [ - "Prisoner sighted, we got him!" + "Gevangene waargenomen, we hebben hem!" ], "kg107a": [ - "Prisoner sighted, we got him!" + "Gevangene waargenomen, we hebben hem!" ], "kg108": [ - "Prisoner is still on the loose!" + "De gevangene is nog steeds vrij!" ], "kg108a": [ - "Prisoner is still on the loose!" + "Gevangene is nog steeds op vrije voeten!" ], "kg109": [ - "We think he's going for an exit!" + "Wij denken dat hij voor een exit gaat!" ], "kg109a": [ - "We think he's going for an exit!" + "Wij denken dat hij voor een exit gaat!" ], "kg110": [ - "Searching rooms." + "Kamers zoeken." ], "kg110a": [ - "Searching rooms." + "Kamers zoeken." ], "kg111": [ - "Prisoner loose in complex." + "Gevangene los in complex." ], "kg111a": [ - "Prisoner loose in complex." + "Gevangene los in complex." ], "kg112": [ - "You are authorized to shoot to kill." + "Je bent bevoegd om te schieten om te doden." ], "kg112a": [ - "You are authorized to shoot to kill." + "Je bent bevoegd om te schieten om te doden." ], "kg113": [ - "Go, go, go! Sweep the area!" + "Ga Ga Ga! Veeg het gebied!" ], "kg113a": [ - "Go go go! Sweep the area!" + "Ga Ga Ga! Veeg het gebied!" ], "kg114": [ - "Searching the sub-basements." + "Het doorzoeken van de onderkelders." ], "kg114a": [ - "Searching the sub-basements." + "Het doorzoeken van de onderkelders." ], "kg115": [ - "Cell block is clear." + "Celblok is duidelijk." ], "kg115a": [ - "Cell block is clear." + "Celblok is duidelijk." ], "kg116": [ - "Tank room is clear." + "De tankruimte is leeg." ], "kg116a": [ - "Tank room is clear." + "De tankruimte is leeg." ], "kg117": [ - "Activate riot tanks." + "Activeer oproertanks." ], "kg117a": [ - "Activate riot tanks." + "Activeer oproertanks." ], "kg118": [ - "Riot tank has prisoner in sight." + "Oproertank heeft gevangene in zicht." ], "kg118a": [ - "Riot tank has prisoner in sight." + "Tank heeft gevangene in zicht." ], "kg119": [ - "Intruder alert." + "Inbraakwaarschuwing." ], "kg119a": [ - "Intruder alert!" + "Indringer alert!" ], "kg120": [ - "Activating security defenses." + "Beveiligingsmechanismen activeren." ], "kg120a": [ - "Activating security defenses." + "Beveiligingsmechanismen activeren." ], "kg121": [ - "Please advise, subject's description." + "Gelieve te adviseren, beschrijving van het onderwerp." ], "kg121a": [ - "Please advise, subject's description." + "Graag advies en een beschrijving van het onderwerp." ], "kg122": [ - "I've got civvies in sight." + "Ik heb burgerkleding op het oog." ], "kg122a": [ - "I've got civvies in sight." + "Ik heb civvies in zicht." ], "kg123": [ - "I've got suspects in sight." + "Ik heb verdachten in zicht." ], "kg123a": [ - "I've got suspects in sight." + "Ik heb verdachten in zicht." ], "kg124": [ - "I hate the smell of this part of the city." + "Ik haat de geur van dit deel van de stad." ], "kg124a": [ - "I hate the smell in this part of the city." + "Ik haat de geur in dit deel van de stad." ], "kg125": [ - "Right, we'll check it out." + "Oké, we gaan het bekijken." ], "kg125a": [ - "Right, we'll check it out." + "Oké, we gaan het bekijken." ], "kg126": [ - "Confirmed, Underground suspect neutralized." + "Bevestigd, ondergrondse verdachte geneutraliseerd." ], "kg126a": [ - "Confirmed, Underground suspect neutralized." + "Bevestigd, ondergrondse verdachte geneutraliseerd." ], "kg127": [ - "They're all guilty!" + "Ze zijn allemaal schuldig!" ], "kg127a": [ - "They're all guilty!" + "Ze zijn allemaal schuldig!" ], "kg128": [ - "This is Unit Alpha, we're en route." + "Dit is Unit Alpha, we zijn onderweg." ], "kg128a": [ - "This is Unit Alpha, we're en route." + "Dit is Unit Alpha, we zijn onderweg." ], "kg129": [ - "Roger, continuing our sweep." + "Roger, zet onze zoektocht voort." ], "kg129a": [ - "Roger, continuing our sweep." + "Roger, zet onze zoektocht voort." ], "kg130": [ - "Unit Zulu, moving in." + "Eenheid Zulu komt dichterbij." ], "kg130a": [ - "Unit Zulu, moving in." + "Eenheid Zulu komt binnen." ], "kg131": [ - "Roger that, we're making our sweep." + "Zeg dat maar, we zijn bezig met onze sweep." ], "kg131a": [ - "Roger that, we're making our sweep." + "Zeg dat maar, we zijn bezig met onze sweep." ], "kg132": [ - "I say shoot 'em all and sort 'em out later." + "Ik zeg: schiet ze allemaal neer en zoek ze later uit." ], "kg132a": [ - "I say shoot 'em all and sort 'em out later." + "Ik zeg: schiet ze allemaal neer en zoek ze later uit." ], "kg133": [ - "You have the right to die!" + "Je hebt het recht om te sterven!" ], "kg134": [ - "Lock and load!" + "Vergrendelen en laden!" ], "kg135": [ - "Open fire!" + "Haardvuur!" ], "kg136": [ - "Alert, alert!" + "Waarschuwing, waarschuwing!" ], "kg137": [ - "Don't move!" + "Beweeg niet!" ], "kg138": [ - "Do it!" + "Doe het!" ], "kg139": [ - "Go, go, go!" + "Ga Ga Ga!" ], "kg140": [ - "Flank 'em!" + "Flank ze!" ], "kg141": [ - "Move in!" + "Intrekken!" ], "kg142": [ - "Take 'em out!" + "Haal ze eruit!" ], "kg143": [ - "Bust some heads!" + "Maak een paar hoofden kapot!" ], "kg144": [ - "Arrest him!" + "Arresteer hem!" ], "kg145": [ - "Shoot 'em, shoot 'em!" + "Schiet ze neer, schiet ze neer!" ], "kg146": [ - "Die, outlaw!" + "Sterf, vogelvrij!" ], "kg147": [ - "You're history!" + "Jij bent geschiedenis!" ], "kg148": [ - "Eat this!" + "Eet dit!" ], "kg149": [ - "Get some!" + "Krijg iets!" ], "kg150": [ - "Fire, fire!" + "Vuur vuur!" ], "kg151": [ - "Here's one for the Guard!" + "Hier is er een voor de bewaker!" ], "kg152": [ - "Give it up, outlaw!" + "Geef het op, bandiet!" ], "kg153": [ - "Here's some pain!" + "Wat een pijn!" ], "kg154": [ - "Payback time!" + "Terugverdientijd!" ], "kg155": [ - "Shoulda given up!" + "Had het moeten opgeven!" ], "kg156": [ - "I need cover fire!" + "Ik heb dekkingsvuur nodig!" ], "kg157": [ - "Call in reinforcements!" + "Roep versterkingen in!" ], "kg158": [ - "I'll shoot!" + "Ik schiet!" ], "kg159": [ - "Die!" + "Dood gaan!" ], "kg160": [ - "You're busted!" + "Je bent betrapt!" ], "kg161": [ - "Riot in progress!" + "Er is een rel gaande!" ], "kg162": [ - "Send in the troops!" + "Stuur de troepen!" ], "kg163": [ - "Give it up!" + "Geef het op!" ], "kg164": [ - "Make 'em pay!" + "Laat ze betalen!" ], "kg165": [ - "Tag 'em and bag 'em!" + "Tag ze en pak ze in!" ], "kg165a": [ - "Tag 'em and bag 'em!" + "Tag ze en pak ze in!" ], "kg165b": [ - "Tag 'em and bag 'em!" + "Tag ze en pak ze in!" ], "kg166": [ - "Another notch for my gun." + "Nog een inkeping voor mijn pistool." ], "kg166a": [ - "Another notch for my gun." + "Nog een inkeping voor mijn pistool." ], "kg166b": [ - "Another notch for my gun." + "Nog een inkeping voor mijn pistool." ], "kg167": [ - "This one was easy!" + "Deze was makkelijk!" ], "kg167a": [ - "This one was easy!" + "Deze was makkelijk!" ], "kg167b": [ - "This one was easy!" + "Deze was makkelijk!" ], "kg168": [ - "Suspect neutralized." + "Verdachte geneutraliseerd." ], "kg168a": [ - "Suspect neutralized." + "Verdachte uitgeschakeld." ], "kg168b": [ - "Suspect neutralized." + "Verdachte geneutraliseerd." ], "kg169": [ - "Didn't even work up a sweat." + "Ik heb me niet eens in het zweet gewerkt." ], "kg169a": [ - "Didn't even work up a sweat." + "Ik heb me niet eens in het zweet gewerkt." ], "kg169b": [ - "Didn't even work up a sweat." + "Ik heb me niet eens in het zweet gewerkt." ], "kg170": [ - "Take him in for... questioning, hehehe..." + "Neem hem mee voor... ondervraging, hehehe..." ], "kg170a": [ - "Take him in for... questioning, hehehe..." + "Neem hem mee voor... ondervraging, hehehe..." ], "kg170b": [ - "Take him in for... questioning, hehehe..." + "Neem hem mee voor... ondervraging, hehehe..." ], "kg171": [ - "Another one bites the dust." + "Een ander bijt in het stof." ], "kg171a": [ - "Another one bites the dust." + "Een ander bijt in het stof." ], "kg171b": [ - "Another one bites the dust." + "En nog eentje die het loodje legt." ], "kg172": [ - "That must have hurt." + "Dat moet pijn hebben gedaan." ], "kg172a": [ - "That must have hurt." + "Dat moet pijn hebben gedaan." ], "kg172b": [ - "That must have hurt." + "Dat moet pijn hebben gedaan." ], "kg173": [ - "There's plenty more where that came from." + "Er is nog veel meer waar dat vandaan komt." ], "kg173a": [ - "There's plenty more where that came from." + "Er is nog veel meer waar dat vandaan komt." ], "kg173b": [ - "There's plenty more where that came from." + "Er is nog veel meer waar dat vandaan komt." ], "kg174": [ - "Citizen scum." + "Burgerlijk uitschot." ], "kg174a": [ - "Citizen scum." + "Burgerlijk uitschot." ], "kg174b": [ - "Citizen scum." + "Burgerlijk uitschot." ], "kg175": [ - "Don't fight the law, son." + "Vecht niet tegen de wet, zoon." ], "kg175a": [ - "Don't fight the law, son." + "Vecht niet tegen de wet, zoon." ], "kg175b": [ - "Don't fight the law, son." + "Vecht niet tegen de wet, zoon." ], "kg176": [ - "You are under arrest!" + "Je staat onder arrest!" ], "kg177": [ - "Get moving!" + "Kom in beweging!" ], "kg178a": [ - "He vanished!" + "Hij verdween!" ], "kg179": [ - "You guys hear about the latest Metal Head attacks?" + "Hebben jullie iets gehoord over de nieuwste Metal Head-aanvallen?" ], "kg179b": [ - "Oh you guys hear about the latest Metal Head attacks?" + "Oh, hebben jullie gehoord over de nieuwste Metal Head-aanvallen?" ], "kg180": [ - "We lost three squads last week." + "Vorige week verloren we drie ploegen." ], "kg180a": [ - "We lost three squads last week." + "Vorige week verloren we drie ploegen." ], "kg180b": [ - "We lost three squads last week." + "Vorige week verloren we drie teams." ], "kg181": [ - "I hear the Underground are getting stronger." + "Ik hoor dat de Underground sterker wordt." ], "kg181a": [ - "I hear the Underground are getting stronger." + "Ik hoor dat de Underground sterker wordt." ], "kg181b": [ - "I hear the Underground are getting stronger." + "Ik hoor dat de Underground sterker wordt." ], "kg182": [ - "Just rumors, private, keep your mouth shut." + "Alleen maar geruchten, privé, houd je mond." ], "kg182a": [ - "Just rumors, private, keep your mouth shut." + "Het zijn geruchten, privé, hou je mond." ], "kg182b": [ - "Just rumors, private, keep your mouth shut." + "Alleen maar geruchten, privé, houd je mond." ], "kg183": [ - "It's us or them, there's no in-between." + "Het is wij of zij, er is geen tussenweg." ], "kg183a": [ - "It's us or them, there's no in-between." + "Het is wij of zij, er is geen tussenweg." ], "kg183b": [ - "It's us or them, there's no in-between." + "Het is wij of zij, er is geen tussenweg." ], "kg184": [ - "Don't worry, the Baron will save us." + "Maak je geen zorgen, de baron zal ons redden." ], "kg184a": [ - "Don't worry, the Baron will save us." + "Maak je geen zorgen, de baron zal ons redden." ], "kg184b": [ - "Don't worry, the Baron will save us." + "Maak je geen zorgen, de baron zal ons redden." ], "kg185": [ - "I got no faith in nobody." + "Ik heb in niemand vertrouwen." ], "kg185a": [ - "I ain't got no faith in nobody." + "Ik heb geen enkel vertrouwen in iemand." ], "kg185b": [ - "I got no faith in nobody." + "Ik heb in niemand vertrouwen." ], "kg186": [ - "Seen that new JX-7 racer? Sweet ride." + "Heb je die nieuwe JX-7-racer gezien? Mooie bak." ], "kg186a": [ - "You seen that new JX-7 racer? Sweet ride." + "Heb je die nieuwe JX-7-racer gezien? Mooie bak." ], "kg186b": [ - "Seen that new JX-7 racer? It's a sweet ride." + "Heb je die nieuwe JX-7-racer gezien? Het is een leuke rit." ], "kg187": [ - "You seen anything?" + "Heb je iets gezien?" ], "kg187a": [ - "You seen anything?" + "Heb je iets gezien?" ], "kg187b": [ - "You seen anything?" + "Heb je iets gezien?" ], "kg188": [ - "No." + "Nee." ], "kg188a": [ - "No." + "Nee." ], "kg188b": [ - "Nah." + "Nee." ], "kg189": [ - "Keep your eyes peeled." + "Hou je ogen open." ], "kg189a": [ - "Keep your eyes peeled." + "Hou je ogen open." ], "kg189b": [ - "Keep your eyes peeled." + "Hou je ogen open." ], "kg190": [ - "I just got a radio alert, stay frosty." + "Ik kreeg net een radiowaarschuwing: blijf ijzig." ], "kg190a": [ - "I just got a radio alert, stay frosty." + "Ik kreeg net een radiowaarschuwing: blijf ijzig." ], "kg190b": [ - "I just got a radio alert, stay frosty." + "Ik kreeg net een radiowaarschuwing: blijf ijzig." ], "kg191": [ - "Never trust a civilian." + "Vertrouw nooit een burger." ], "kg191a": [ - "Never trust a civilian." + "Vertrouw nooit een burger." ], "kg191b": [ - "Never trust a civilian." + "Vertrouw nooit een burger." ], "kg192": [ - "Never trust anyone." + "Vertrouw nooit iemand." ], "kg192a": [ - "Never trust anyone." + "Vertrouw nooit iemand." ], "kg192b": [ - "Never trust anyone." + "Vertrouw nooit iemand." ], "kg193": [ - "Long live the KG!" + "Lang leve de K.G.!" ], "kg193a": [ - "Long live the KG!" + "Lang leve de K.G.!" ], "kg193b": [ - "Long live the KG!" + "Lang leve de K.G.!" ], "kg194": [ - "We ain't had a food riot since we brought in them tanks." + "We hebben geen voedseloproer meer gehad sinds we die tanks binnenbrachten." ], "kg194a": [ - "We ain't had a food riot since we brought in them tanks." + "We hebben geen voedseloproer meer gehad sinds we die tanks binnenbrachten." ], "kg194b": [ - "We ain't had a food riot since we brought in them tanks." + "We hebben geen voedseloproer meer gehad sinds we die tanks binnenbrachten." ], "kg195": [ - "I'm bored, I want to crunch heads." + "Ik verveel me, ik wil hoofden kraken." ], "kg195a": [ - "I'm bored, I want to crunch heads." + "Ik verveel me, ik wil hoofden kraken." ], "kg195b": [ - "I'm bored, I want to crunch heads." + "Ik verveel me, ik wil hoofden kraken." ], "kg196": [ - "I want to kick some ass." + "Ik wil een schop onder de kont geven." ], "kg196a": [ - "Ugh... I want to kick some butt." + "Ugh... Ik wil een schop onder de kont geven." ], "kg196b": [ - "I want to kick some butt." + "Ik wil een schop onder de kont geven." ], "kg197": [ - "Did you hear the Underground got our ammo at HQ?" + "Heb je gehoord dat de Underground onze munitie op het hoofdkwartier heeft?" ], "kg197a": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Heb je gehoord dat de metro er is?", + "onze munitie op het hoofdkwartier?" ], "kg197b": [ - "Did you hear the Underground got to", - "our ammo at HQ?" + "Heb je gehoord dat de metro er is?", + "onze munitie op het hoofdkwartier?" ], "kg198": [ - "Payback's a bitch!" + "Terugbetaling is een bitch!" ], "kg198a": [ - "Payback's a bitch!" + "Terugbetaling is een bitch!" ], "kg198b": [ - "Payback's a bitch!" + "Terugbetaling is een bitch!" ], "kg199": [ - "Animals!" + "Dieren!" ], "kg199a": [ - "Animals!" + "Dieren!" ], "kg199b": [ - "Animals!" + "Dieren!" ], "kg200": [ - "I hear the Shadow's been dead for years." + "Ik hoor dat de Schaduw al jaren dood is." ], "kg200a": [ - "I hear the Shadow's been dead for years." + "Ik hoor dat de Schaduw al jaren dood is." ], "kg200b": [ - "I hear the Shadow's been dead for years." + "Ik hoor dat de Schaduw al jaren dood is." ], "kg201": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Misschien, maar de rest is ondergronds uitschot", + "zijn nog steeds aan het rondrennen." ], "kg201a": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Misschien, maar de rest is ondergronds uitschot", + "zijn nog steeds aan het rondrennen." ], "kg201b": [ - "Maybe, but the rest of them Underground scum", - "are still scurrying about." + "Misschien, maar de rest is ondergronds uitschot", + "zijn nog steeds aan het rondrennen." ], "kg202": [ - "Can I shoot someone now?" + "Mag ik nu iemand neerschieten?" ], "kg202a": [ - "Can I shoot someone now?" + "Mag ik nu iemand neerschieten?" ], "kg202b": [ - "Can I shoot someone now?" + "Mag ik nu iemand neerschieten?" ], "kg203": [ - "I like the new armor." + "Ik vind het nieuwe pantser leuk." ], "kg203a": [ - "I like the new armor." + "Ik vind het nieuwe pantser leuk." ], "kg203b": [ - "I like the new armor." + "Ik vind het nieuwe pantser leuk." ], "kg204": [ - "Yeah, me too. More comfort in the crotch." + "Ja ik ook. Meer comfort in het kruis." ], "kg204a": [ - "Yeah, me too. More comfort in the crotch." + "Ja ik ook. Meer comfort in het kruis." ], "kg204b": [ - "Yeah, me too. More comfort in the crotch." + "Ja ik ook. Meer comfort in het kruis." ], "kg205": [ - "If something interesting doesn't happen soon,", - "I'm going to start shooting you." + "Als er niet snel iets interessants gebeurt,", + "Ik ga beginnen met schieten." ], "kg205a": [ - "Next time, can I kill a civvy?" + "Mag ik de volgende keer een burger doden?" ], "kg205b": [ - "Next time, can I kill a civvy?" + "Kan ik de volgende keer een beschaving doden?" ], "kg206a": [ - "If something interesting doesn't happen soon,", - "I'm gonna shoot you." + "Als er niet snel iets interessants gebeurt,", + "Ik ga je neerschieten." ], "kg206b": [ - "If something interesting doesn't happen soon,", - "I'm gonna start shooting you." + "Als er niet snel iets interessants gebeurt,", + "Ik ga beginnen met schieten." ], "kg207": [ - "Did you collect your bribes this week?" + "Heeft u deze week uw steekpenningen geïnd?" ], "kg207a": [ - "You collect your bribes this week?" + "Verzamel jij deze week je steekpenningen?" ], "kg207b": [ - "You collect your bribes this week?" + "Verzamel jij deze week je steekpenningen?" ], "kg208": [ "Shhh..." @@ -5465,259 +5465,259 @@ "Shh." ], "kg210": [ - "I hear someone's been using the old wall airlocks.", - "Pfft, crazy bastard." + "Ik hoor dat iemand de oude muurluchtsluizen gebruikt.", + "Pfft, gekke klootzak." ], "kg210a": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Ik hoor dat iemand de oude muurluchtsluizen gebruikt.", + "Gekke klootzak." ], "kg210b": [ - "I hear someone's been using the old wall airlocks.", - "Crazy bastard." + "Ik hoor dat iemand de oude muurluchtsluizen gebruikt.", + "Gekke klootzak." ], "kg211": [ - "I've been on duty for two days straight." + "Ik heb twee dagen achter elkaar dienst gehad." ], "kg211a": [ - "I've been on duty for two days straight." + "Ik heb twee dagen achter elkaar dienst gehad." ], "kg211b": [ - "I've been on duty for two days straight." + "Ik heb twee dagen achter elkaar dienst gehad." ], "kg212": [ - "Pfft, don't complain. I've got sewer patrol next week." + "Pfff, niet klagen. Volgende week heb ik een rioolpatrouille." ], "kg212a": [ - "Don't complain, I got sewer patrol next week." + "Klaag niet, volgende week komt de rioolpolitie." ], "kg212b": [ - "Don't complain. I got sewer patrol next week." + "Klaag niet. Volgende week krijg ik rioolpolitie." ], "kg213": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ah, arme klootzak. Welke commandant heb je kwaad gemaakt?" ], "kg213a": [ - "Ahh, you poor bastard. Which commander did you piss off?" + "Ah, arme klootzak. Welke commandant heb je kwaad gemaakt?" ], "kg213b": [ - "Hehe, poor bastard. Which commander did you piss off?" + "Hehe, arme klootzak. Welke commandant heb je boos gemaakt?" ], "kg214": [ - "I say death to the Underground." + "Ik zeg dood tegen de metro." ], "kg214a": [ - "I say death to the Underground." + "Ik zeg dood aan de Underground." ], "kg214b": [ - "I say death to the Underground." + "Ik zeg dood tegen de metro." ], "kg215": [ - "I wanna so kill that Shadow guy." + "Ik wil die Schaduwman zo graag vermoorden." ], "kg215a": [ - "I want to kill that Shadow guy!" + "Ik wil die Schaduwman vermoorden!" ], "kg215b": [ - "I want to kill that Shadow guy!" + "Ik wil die Schaduwman vermoorden!" ], "kg216": [ - "And don't forget that traitor Torn." + "En vergeet die verrader Torn niet." ], "kg216a": [ - "And don't forget that traitor Torn." + "En vergeet die verrader Torn niet." ], "kg216b": [ - "Don't forget that traitor Torn!" + "Vergeet die verrader Torn niet!" ], "kg217": [ - "Death's too good for him." + "De dood is te goed voor hem." ], "kg217a": [ - "Death's too good for him." + "De dood is te goed voor hem." ], "kg217b": [ - "Death's too good for him." + "De dood is te goed voor hem." ], "kg218": [ - "Why are we looking for some kid?" + "Waarom zoeken we een kind?" ], "kg218a": [ - "Why are we looking for some kid?" + "Waarom zoeken we een kind?" ], "kg218b": [ - "Why are we looking for some kid?" + "Waarom zoeken we een kind?" ], "kg219": [ - "I don't know, Baron's orders." + "Ik weet het niet, Baron's orders." ], "kg219a": [ - "I dunno, Baron's orders." + "Ik weet het niet, het zijn bevelen van de Baron." ], "kg219b": [ - "I dunno, Baron's orders." + "Ik weet het niet, het zijn bevelen van de Baron." ], "kg220": [ - "Hey, have they found Mar's Tomb yet?" + "Hé, hebben ze Mar's Tomb al gevonden?" ], "kg220a": [ - "Have they found Mar's Tomb yet?" + "Hebben ze Mar's tombe al gevonden?" ], "kg220b": [ - "Have they found Mar's Tomb yet?" + "Hebben ze Mar's tombe al gevonden?" ], "kg221": [ - "They wouldn't tell us if they did." + "Ze zouden het ons niet vertellen als ze dat wel deden." ], "kg221a": [ - "Nah, they wouldn't tell us if they did." + "Nee, als ze dat wel deden, zouden ze het ons niet vertellen." ], "kg221b": [ - "Nah, they wouldn't tell us if they did." + "Nee, als ze dat wel deden, zouden ze het ons niet vertellen." ], "kg222": [ - "I've got a big bet on the next city races." + "Ik heb een grote gok op de volgende stadsraces." ], "kg222a": [ - "I got a big bet on the next city races." + "Ik heb een grote weddenschap afgesloten op de volgende stadsraces." ], "kg222b": [ - "Got a big bet on the next city races." + "Ik heb een grote weddenschap afgesloten op de volgende stadsraces." ], "kg223": [ - "Erol's my boy. He always wins." + "Erol is mijn jongen. Hij wint altijd." ], "kg223a": [ - "Erol's my boy. He always wins." + "Erol is mijn jongen. Hij wint altijd." ], "kg223b": [ - "Erol's my boy. He always wins." + "Erol is mijn jongen. Hij wint altijd." ], "kg224": [ - "You going to the city races this time?" + "Ga je deze keer naar de stadsraces?" ], "kg224a": [ - "You going to the city races this time?" + "Ga je deze keer naar de stadsraces?" ], "kg224b": [ - "You going to the city races this time?" + "Ga je deze keer naar de stadsraces?" ], "kg225": [ - "I'll be there." + "Ik zal er zijn." ], "kg225a": [ - "I'll be there." + "Ik zal er zijn." ], "kg225b": [ - "I'll be there." + "Ik zal er zijn." ], "kg226": [ - "There've been some serious guard casualties this week." + "Er zijn deze week enkele ernstige slachtoffers gevallen bij de bewakers." ], "kg226a": [ - "There've been some serious guard casualties this week." + "Er zijn deze week enkele ernstige slachtoffers gevallen bij de bewakers." ], "kg226b": [ - "There've been some serious guard casualties this week." + "Er zijn deze week enkele ernstige slachtoffers gevallen bij de bewakers." ], "kg227": [ - "Yeah, some rebel fighter is stirring up the pot good." + "Ja, een of andere rebellenvechter roert de pot goed door." ], "kg227a": [ - "Yeah, some rebel fighter is stirring the pot good." + "Ja, een of andere rebellenvechter roert goed in de pot." ], "kg227b": [ - "Some rebel fighter is stirring the pot good." + "Een of andere rebellenvechter roert de pot goed." ], "kg228": [ - "I'd love to be the one to take him out." + "Ik zou graag degene zijn die hem eruit haalt." ], "kg228a": [ - "I'd love to be the one to take him out." + "Ik zou graag degene zijn die hem eruit haalt." ], "kg228b": [ - "Oh I'd love to be the one to take him out." + "Oh, ik zou graag degene zijn die hem mee uit neemt." ], "kg229": [ - "Let's get drinks later." + "Laten we later wat drinken." ], "kg229a": [ - "Let's get drinks later." + "Laten we later wat drinken." ], "kg229b": [ - "Let's get drinks later." + "Laten we later wat drinken." ], "kg230": [ - "I got a bad feeling about this war." + "Ik heb een slecht gevoel over deze oorlog." ], "kg230a": [ - "I got a bad feeling about this war." + "Ik heb een slecht gevoel over deze oorlog." ], "kg230b": [ - "I got a bad feeling about this war." + "Ik heb een slecht gevoel over deze oorlog." ], "kg231": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ik hoor dat er meer Metal Head-aanvallen zijn", + "dan het hoofdkantoor toegeeft." ], "kg231a": [ - "I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ik hoor dat er meer Metal Head-aanvallen zijn", + "dan het hoofdkantoor toegeeft." ], "kg231b": [ - "Yeah, I hear there are more Metal Head attacks", - "than HQ's admitting." + "Ja, ik hoor dat er meer Metal Head-aanvallen zijn", + "dan het hoofdkwartier toegeeft." ], "kg232": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "De rapporten die ik heb gezien zijn niet goed.", + "Ik denk dat de stad in de problemen zit." ], "kg232a": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "De rapporten die ik heb gezien zijn niet goed.", + "Ik denk dat de stad in de problemen zit." ], "kg232b": [ - "The reports I've seen aren't good.", - "I think the city's in trouble." + "De rapporten die ik heb gezien zijn niet goed.", + "Ik denk dat de stad in de problemen zit." ], "kg233": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Ik maak me zorgen over deze nieuwe man", + "vechten voor de ondergrondse." ], "kg233a": [ - "I'm worried about this new guy", - "fighting for the Underground." + "Ik maak me zorgen over deze nieuwe kerel", + "vechten voor de ondergrondse." ], "kg233b": [ - "I'm worried about this new guy fighting for the Underground.", - "fighting for the Underground." + "Ik maak me zorgen over deze nieuwe man die voor de Underground vecht.", + "vechten voor de ondergrondse." ], "kg234": [ - "Yeah, they say he can change into some kind of... monster." + "Ja, ze zeggen dat hij kan veranderen in een soort... monster." ], "kg234a": [ - "Yeah, they say he can change into some kind of monster." + "Ja, ze zeggen dat hij in een soort monster kan veranderen." ], "kg234b": [ - "They say he can change into some kind of monster." + "Ze zeggen dat hij in een soort monster kan veranderen." ], "kg235": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Maak je geen zorgen, zijn hoofd zal snel genoeg op de torenmuur liggen." ], "kg235a": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Maak je geen zorgen, zijn hoofd zal snel genoeg op de torenmuur liggen." ], "kg235b": [ - "Don't worry, his head'll be on the tower wall soon enough." + "Maak je geen zorgen, zijn hoofd zal snel genoeg op de torenmuur liggen." ], "kg236": [ - "Hehehe." + "Hehe." ], "kg236a": [ - "Hehehe." + "Hehe." ], "kg236b": [ - "Hehehe." + "Hehe." ], "kg237a": [ "Hehehe..." @@ -5726,486 +5726,486 @@ "Hehehe..." ], "kg238a": [ - "Hahaha..." + "Haha..." ], "kg239a": [ - "Hah!" + "Haha!" ], "kg239b": [ - "Hah!" + "Haha!" ], "kg240a": [ "Hehehe..." ], "kg241a": [ - "Suspect in known Underground vehicle!" + "Verdachte in bekend ondergronds voertuig!" ], "kg242a": [ - "He's got a cargo, move in!" + "Hij heeft een lading, kom binnen!" ], "kg243a": [ - "Stop that vehicle!" + "Stop dat voertuig!" ], "kg244a": [ - "You're under arrest, pull over!" + "Je staat onder arrest, stop!" ], "kg245a": [ - "Surrender the vehicle!" + "Geef het voertuig in!" ], "kg246a": [ - "We are in pursuit!" + "Wij zijn in de achtervolging!" ], "kg247a": [ - "He's got a package!" + "Hij heeft een pakketje!" ], "kg248a": [ - "Suspect has suspicious cargo!" + "Verdachte heeft verdachte lading!" ], "kg249a": [ - "We think it's an illegal shipment." + "Wij denken dat het een illegale verzending is." ], "kg250a": [ - "All units close in on vehicle!" + "Alle eenheden naderen het voertuig!" ], "kg251a": [ - "Suspect moving at high speed!" + "Verdachte rijdt met hoge snelheid!" ], "kg252a": [ - "We can't keep up!" + "Wij kunnen het niet bijhouden!" ], "kg253a": [ - "He's in the port!" + "Hij is in de haven!" ], "kg254a": [ - "He got away!" + "Hij is ontkomen!" ], "kg255a": [ - "Suspect has taken out pursuit!" + "Verdachte zet de achtervolging in!" ], "kg256a": [ - "Vehicle destroyed, we got him!" + "Voertuig vernietigd, we hebben hem!" ], "kg257a": [ - "Nice work boys, he's down." + "Goed gedaan jongens, hij is beneden." ], "kg258a": [ - "Excellent pursuit." + "Uitstekende achtervolging." ], "kg259a": [ - "Guard transport under attack, requesting support!" + "Bewakingstransport wordt aangevallen en vraagt ​​om ondersteuning!" ], "kg260a": [ - "We're takin' damage!" + "We lopen schade op!" ], "kg261a": [ - "He's after us!" + "Hij zit achter ons aan!" ], "kg262a": [ - "He's trying to crash the transport!" + "Hij probeert het transport te laten crashen!" ], "kg263a": [ - "We've had a transport ambush, units respond!" + "We hebben een transporthinderlaag gehad, eenheden reageren!" ], "kg264a": [ - "He's picking up a prisoner!" + "Hij pikt een gevangene op!" ], "kg265a": [ - "We lost a Lurker prisoner." + "We hebben een Lurker-gevangene verloren." ], "kg266a": [ - "He's got a Lurker prisoner with him!" + "Hij heeft een Lurker-gevangene bij zich!" ], "kg267a": [ - "Take 'em all out!" + "Haal ze er allemaal uit!" ], "kg268a": [ - "We think he's helping the Lurkers escape!" + "Wij denken dat hij de Lurkers helpt ontsnappen!" ], "kg269a": [ - "He's taken out two of our transports already!" + "Hij heeft al twee van onze transporten uitgeschakeld!" ], "kg270a": [ - "He's alone again." + "Hij is weer alleen." ], "kg271a": [ - "Where's he heading?!" + "Waar gaat hij heen?!" ], "kg272a": [ - "Terminate with extreme prejudice!" + "Eindig met extreem vooroordeel!" ], "kg273a": [ - "He's attacking another transport!" + "Hij valt een ander transport aan!" ], "kg274a": [ - "We're being chased, send in an escort!" + "We worden achtervolgd, stuur een escorte!" ], "kg275a": [ - "We lost this passenger." + "We zijn deze passagier kwijtgeraakt." ], "kg276a": [ - "We're losing him!" + "We zijn hem kwijt!" ], "kg277a": [ - "We got 'em!" + "Wij hebben ze!" ], "kg278a": [ - "We got 'em, teach ya to screw with the KG!" + "Wij hebben ze, leer je rotzooien met de KG!" ], "kg279a": [ - "Pull over, Lurker lover!" + "Stop, Lurker-liefhebber!" ], "kg280a": [ - "There's a kid, check him out." + "Kijk eens naar die jongen." ], "kg281a": [ - "The Baron wants every kid in this city arrested." + "De Baron wil dat elk kind in deze stad wordt gearresteerd." ], "kg282a": [ - "Surrender the child!" + "Geef het kind over!" ], "kg283a": [ - "Give up the kid!" + "Geef het kind op!" ], "kg284a": [ - "If they won't surrender, kill them all!" + "Als ze zich niet willen overgeven, dood ze dan allemaal!" ], "kg285a": [ - "Don't kill the kid." + "Dood het kind niet." ], "kg286a": [ - "The Baron wants the kid alive!" + "De baron wil het kind levend hebben!" ], "kg287a": [ - "Find the boy!" + "Vind de jongen!" ], "kg288a": [ - "That could be the kid the Baron wants." + "Dat zou het kind kunnen zijn dat de Baron wil." ], "kg289a": [ - "After them!" + "Na hun!" ], "kg290a": [ - "Don't move, boy!" + "Niet bewegen, jongen!" ], "kg291a": [ - "Take out that mutt!" + "Haal dat straathondje eruit!" ], "kg292a": [ - "We should kill 'em all!" + "We moeten ze allemaal vermoorden!" ], "kg293a": [ - "They've taken a vehicle!" + "Ze hebben een voertuig meegenomen!" ], "kg294a": [ - "If you get a clear shot, take it!" + "Als je een duidelijk schot krijgt, neem het dan!" ], "kg295a": [ - "Suspect is fleeing in vehicle!" + "Verdachte vlucht in auto!" ], "kg296a": [ - "Suspect's vehicle moving through section seven." + "Het voertuig van de verdachte rijdt door sectie zeven." ], "kg297a": [ - "We think the kid's with that Underground freak." + "We denken dat de jongen bij die Underground-freak is." ], "kg298a": [ - "Take 'em out, but keep the kid alive!" + "Schakel ze uit, maar houd het kind in leven!" ], "kg299a": [ - "They're on foot again!" + "Ze zijn weer te voet!" ], "kg300a": [ - "What is that thing?!" + "Wat is dat ding?!" ], "kg301a": [ - "Shoot that thing, shoot it!" + "Schiet op dat ding, schiet erop!" ], "kg302a": [ - "What's he doing?!" + "Wat is hij aan het doen?!" ], "kg303a": [ - "It's that monster!" + "Het is dat monster!" ], "kg304a": [ - "The stories are true!" + "De verhalen zijn waar!" ], "kg305a": [ - "It's the dark monster!" + "Het is het donkere monster!" ], "kg306a": [ - "It's him!" + "Hij is het!" ], "kg307a": [ - "It's the dark eco freak!" + "Het is de donkere eco-freak!" ], "kg308a": [ - "Kill it, kill it!" + "Dood het, dood het!" ], "kg309a": [ - "Suspect has transformed into", - "a creature of some kind." + "Verdachte is getransformeerd in", + "een of ander soort wezen." ], "kg310a": [ - "Sure is ugly." + "Zeker is lelijk." ], "kg311a": [ - "That's one ugly creature." + "Dat is een lelijk wezen." ], "kg312a": [ - "Look out!" + "Pas op!" ], "kg313a": [ - "Fall back!" + "Terugvallen!" ], "kg314a": [ - "He's wasting everybody!" + "Hij verspilt iedereen!" ], "kg315a": [ - "We can't kill it!" + "We kunnen het niet doden!" ], "kg316a": [ - "Stand your ground men!" + "Houd stand mannen!" ], "kg317a": [ - "The Krimzon Guard do not run!" + "De Krimzonwacht vlucht niet!" ], "kg318a": [ - "Watch out for his claws!" + "Pas op voor zijn klauwen!" ], "kg319a": [ - "Keep clear of his energy bolts!" + "Blijf uit de buurt van zijn energiebouten!" ], "kg320a": [ - "This is a raid, do not resist!" + "Dit is een overval, verzet je niet!" ], "kg321a": [ - "Move in!" + "Intrekken!" ], "kg322a": [ - "By order of Baron Praxis,", - "everyone here is to be terminated!" + "In opdracht van Baron Praxis,", + "iedereen hier moet worden beëindigd!" ], "kg323a": [ - "Surrender and you will not suffer much." + "Geef je over en je zult niet veel lijden." ], "kg324a": [ - "It's that Underground monster freak!" + "Het is die ondergrondse monsterfreak!" ], "kg325a": [ - "Get him!" + "Pak hem!" ], "kg326a": [ - "All units converge on Water Slums!" + "Alle eenheden komen samen in Water Slums!" ], "kg327a": [ - "We've got an Underground fighter!" + "We hebben een ondergrondse jager!" ], "kg328a": [ - "Burn 'em down!" + "Verbrand ze!" ], "kg329a": [ - "Stay together!" + "Samen blijven!" ], "kg330a": [ - "We've got 'em cornered!" + "We hebben ze in het nauw gedreven!" ], "kg331a": [ - "Suspect cornered in section two." + "Verdachte in het nauw gedreven in sectie twee." ], "kg332a": [ - "There is no escape!" + "Er is geen uitweg!" ], "kg333a": [ - "Resistance is futile!" + "Verzet is zinloos!" ], "kg334a": [ - "Give up the artifact, eco freak!" + "Geef het artefact op, eco-freak!" ], "kg335a": [ - "We've cut 'em off!" + "We hebben ze afgesneden!" ], "kg336a": [ - "He's trapped!" + "Hij zit gevangen!" ], "kg337a": [ - "We got 'em!" + "Wij hebben ze!" ], "kg338a": [ - "We're taking heavy fire!" + "We worden zwaar onder vuur genomen!" ], "kg339a": [ - "We're taking heavy casualties, send in backup!" + "We lijden zware verliezen, stuur versterking!" ], "kg340a": [ - "This guy knows how to fight!" + "Deze man weet hoe hij moet vechten!" ], "kg341a": [ - "Hold your ground!" + "Houd stand!" ], "kg342a": [ - "Do not retreat!" + "Trek je niet terug!" ], "kg343a": [ - "We lost Beta squad!" + "We zijn het Beta-team kwijtgeraakt!" ], "kg344a": [ - "We need more men!" + "We hebben meer mannen nodig!" ], "kg345a": [ - "He's on the south path!" + "Hij is op het zuidelijke pad!" ], "kg346a": [ - "He's in the water!" + "Hij ligt in het water!" ], "kg347a": [ - "He's near the east hut, all units converge!" + "Hij is vlakbij de oostelijke hut, alle eenheden komen samen!" ], "kg348a": [ - "We're gonna lose him!" + "We gaan hem verliezen!" ], "kg349a": [ - "Intruder alert, sound the alarm!" + "Inbraakwaarschuwing, luid alarm!" ], "kg350a": [ - "The Fortress is under attack!" + "Het fort wordt aangevallen!" ], "kg351a": [ - "This is our house, boy!" + "Dit is ons huis, jongen!" ], "kg352a": [ - "You've got brass coming into our Fortress!" + "Er komt koper naar ons fort!" ], "kg353a": [ - "You won't get out of here alive!" + "Je komt hier niet levend uit!" ], "kg354a": [ - "Thanks for making this easy." + "Bedankt dat je dit gemakkelijk hebt gemaakt." ], "kg355a": [ - "We're taking heavy casualties." + "We lijden zware verliezen." ], "kg356a": [ - "He's getting in deep, stop him!" + "Hij gaat er diep in, stop hem!" ], "kg357a": [ - "Take this guy out, that's an order!" + "Haal deze man eruit, dat is een bevel!" ], "kg358a": [ - "Send in the shock squad!" + "Stuur de schokploeg!" ], "kg359a": [ - "Bring in the heavy firepower!" + "Haal de zware vuurkracht in huis!" ], "kg360a": [ - "Send in the shield guards!" + "Stuur de schildwachten!" ], "kg361a": [ - "I'm on him!" + "Ik ben op hem!" ], "kg362a": [ - "Let me at 'em!" + "Laat mij bij ze zijn!" ], "kg363a": [ - "I got 'em!" + "Ik heb ze!" ], "kg364a": [ - "Finish him off!" + "Maak hem af!" ], "kg365a": [ - "He's moving toward the ammo room!" + "Hij gaat richting de munitiekamer!" ], "kg366a": [ - "Intercept the intruder before he gets in too far!" + "Onderschep de indringer voordat hij te ver binnendringt!" ], "kg367a": [ - "He's picking up a suspect." + "Hij pikt een verdachte op." ], "kg368a": [ - "He's got an Underground agent with him!" + "Hij heeft een Underground-agent bij zich!" ], "kg369a": [ - "Take 'em both out!" + "Haal ze er allebei uit!" ], "kg370a": [ - "He's picked up another suspect." + "Hij heeft nog een verdachte opgepakt." ], "kg371a": [ - "We lost the guy he dropped off!" + "We zijn de man die hij afzette kwijt!" ], "kg372a": [ - "He's got a passenger." + "Hij heeft een passagier." ], "kg373a": [ - "Driver is working with the Underground." + "Chauffeur werkt met de metro." ], "kg374a": [ - "Suspect vehicle taking damage, but still moving." + "Verdacht voertuig raakt beschadigd, maar rijdt nog." ], "kg375a": [ - "We need to cut 'em off!" + "We moeten ze afsnijden!" ], "kg376a": [ - "He's got another agent!" + "Hij heeft een andere agent!" ], "kg377a": [ - "Suspect driving erratically!" + "Verdachte rijdt onregelmatig!" ], "kg378a": [ - "Suspect still evading!" + "Verdachte ontwijkt nog steeds!" ], "kg379a": [ - "We got 'em this time!" + "Deze keer hebben we ze!" ], "kg380a": [ - "Suspect vehicle destroyed!" + "Verdacht voertuig vernield!" ], "kg381a": [ - "He's going for another vehicle!" + "Hij gaat voor een ander voertuig!" ], "kg382a": [ - "We took 'em out!" + "We hebben ze eruit gehaald!" ], "kg383a": [ - "He's toast!" + "Hij is geroosterd!" ], "kg384a": [ - "Another win for the KG, good shooting, men." + "Nog een overwinning voor de KG, goed schieten, mannen." ], "kg385a": [ - "Suspect has evaded capture." + "Verdachte heeft arrestatie ontweken." ], "kg386a": [ - "Ough!" + "Genoeg!" ], "kg387a": [ - "Huh!" + "Hé!" ], "kg388a": [ "Arghh!" ], "kg389a": [ - "Ughh!" + "Ugh!" ], "kg390a": [ - "Hugh!" + "Hugo!" ], "kg391a": [ - "Aughh!" + "Genoeg!" ], "kg392a": [ - "Haugh!" + "Haai!" ], "kg393a": [ - "Oof!" + "Oef!" ], "kg394a": [ - "Hah!" + "Haha!" ], "kg395a": [ "Ugh!" ], "kg396a": [ - "Hah!" + "Haha!" ], "kg397a": [ "Ugh!" @@ -6214,34 +6214,34 @@ "Huff!" ], "kg399a": [ - "Argh!" + "Arg!" ], "kg400a": [ - "Hah!" + "Haha!" ], "kg401a": [ - "Huh!" + "Hé!" ], "kg402a": [ - "Huuh!" + "Hé!" ], "kg403a": [ - "Haah!" + "Haha!" ], "kg404a": [ - "Ahh!" + "Ah!" ], "kg405a": [ - "Ahh...!" + "Ah...!" ], "kg406a": [ - "Arrgh!" + "Argh!" ], "kg407a": [ - "Uargh!" + "Wauw!" ], "kg408a": [ - "Ugh...!" + "Uhm...!" ], "kg409a": [ "Ugh!" @@ -6250,46 +6250,46 @@ "Nargh!" ], "kg411a": [ - "Hah!" + "Haha!" ], "kg412a": [ - "Ugh...!" + "Bah...!" ], "kg413a": [ - "Gah...!" + "Gaa...!" ], "kg414a": [ "Ah!" ], "kg415a": [ - "Argh!" + "Arg!" ], "kg416a": [ - "Ugh...!" + "Uhm...!" ], "kg417a": [ - "Uh..." + "Eh..." ], "kg418a": [ "Ah...!" ], "kg419a": [ - "Uugh!" + "Ugh!" ], "kg420a": [ "Ah...!" ], "kg421a": [ - "Huah...!" + "Hoera...!" ], "kg422a": [ - "Agh!" + "Ach!" ], "kg423a": [ - "Hungh...!" + "Honger...!" ], "kg424a": [ - "Argh!" + "Arg!" ], "kg425a": [ "Ugh!" @@ -6301,200 +6301,200 @@ "Ugh!" ], "kg428a": [ - "Oof!" + "Oef!" ], "kgv001": [ "Stop!" ], "kgv002": [ - "Open fire!" + "Haardvuur!" ], "kgv003": [ - "Move in!" + "Intrekken!" ], "kgv004": [ - "Take 'em out!" + "Haal ze eruit!" ], "kgv005": [ - "Take him down!" + "Haal hem neer!" ], "kgv006": [ - "Shoot 'em, shoot 'em!" + "Schiet ze neer, schiet ze neer!" ], "kgv007": [ - "Die, outlaw!" + "Sterf, vogelvrij!" ], "kgv008": [ - "Eat this!" + "Eet dit!" ], "kgv009": [ - "Fire, fire!" + "Vuur vuur!" ], "kgv010": [ - "Give it up, outlaw!" + "Geef het op, bandiet!" ], "kgv011": [ - "Seal off the area!" + "Sluit het gebied af!" ], "kgv012": [ - "Call in reinforcements!" + "Roep versterkingen in!" ], "kgv013": [ - "Riot in progress!" + "Er is een rel gaande!" ], "kgv014": [ - "Call for backup!" + "Bel voor versterking!" ], "kgv015": [ - "Stop the vehicle!" + "Stop het voertuig!" ], "kgv016": [ - "You are under arrest!" + "Je staat onder arrest!" ], "kgv017": [ - "Pull over!" + "Stoppen!" ], "kgv018": [ - "Slow down!" + "Vertragen!" ], "kgv019": [ - "Move over!" + "Beweeg over!" ], "kgv020": [ - "Get out of the vehicle!" + "Ga uit het voertuig!" ], "kgv021": [ - "Call in more Hellcats!" + "Roep meer Hellcats op!" ], "kgv022": [ - "Requesting backup!" + "Back-up aangevraagd!" ], "kgv023": [ - "High speed chase in sector four!" + "Achtervolging op hoge snelheid in sector vier!" ], "kgv024": [ - "Suspect in vehicle!" + "Verdachte in voertuig!" ], "kgv025": [ - "Suspect fleeing into sector five." + "Verdachte vlucht naar sector vijf." ], "kor001": [ - "I am so proud of you Jak, and you too, Daxter!", - "Together you have done real damage to the Baron.", - "We may win this war yet!" + "Ik ben zo trots op je Jak, en jij ook, Daxter!", + "Samen hebben jullie de Baron echte schade toegebracht.", + "Misschien winnen we deze oorlog nog!" ], "kor002": [ - "Excellent work, you are proving to be quite an asset.", - "Without eco, the Baron will soon topple,", - "and the city's future will be in our hands." + "Uitstekend werk, je blijkt een echte aanwinst te zijn.", + "Zonder eco zal de Baron spoedig omvallen,", + "en de toekomst van de stad ligt in onze handen." ], "kor004": [ - "Another blow to the Baron, my good friends!", - "Very soon, our fortunes will change!" + "Nog een slag voor de Baron, mijn goede vrienden!", + "Zeer binnenkort zal ons fortuin veranderen!" ], "krew001": [ - "Jak, this is Krew. I just talked to my racing client", - "and she told me you were pretty good with that JET-Board", - "of hers. My sources say a shipment of Krimzon Guard", - "listening equipment just arrived in the Port.", - "None of us, including the Underground, want those devices", - "up and running. It's not good for business.", - "Ride the JET-Board out into the Port", - "and destroy every Krimzon Guard crate you find.", - "There's sure to be a defense perimeter,", - "so watch out, 'ey?" + "Jak, dit is Krew. Ik heb net met mijn raceklant gesproken", + "en ze vertelde me dat je behoorlijk goed was met dat JET-Board", + "van haar. Mijn bronnen zeggen dat het een lading Krimzon Guard betreft", + "luisterapparatuur is zojuist aangekomen in de haven.", + "Niemand van ons, inclusief de Underground, wil die apparaten", + "aan de slag. Het is niet goed voor de zaken.", + "Rijd met het JET-Board de haven in", + "en vernietig elke Krimzon Guard-kist die je vindt.", + "Er zal zeker een verdedigingsperimeter zijn,", + "dus pas op, 'eh?" ], "krew002": [ - "Excellent work, Jak. Even I am impressed.", - "I should keep unscrupulous Krimzon Guards", - "out of our business.", - "What's the world coming to when you can't buy off", - "a few guards with bribes?" + "Uitstekend werk, Jak. Zelfs ik ben onder de indruk.", + "Ik zou gewetenloze Krimzon-bewakers moeten behouden", + "uit onze zaken.", + "Waar gaat het heen met de wereld als je niet kunt afkopen?", + "een paar bewakers met steekpenningen?" ], "krew003": [ - "Ooooh... the bedtime stories were true!", - "The fabled Heart of Mar was hidden inside that ugly statue", - "of the old boy.", - "Nothing fractured, nothing gained! That's my motto. Hahaha...", - "For your loyalty, you'll find an excellent gun upgrade", - "stashed in a crate in the Port." + "Ooooh... de verhaaltjes voor het slapengaan waren waar!", + "Het legendarische Hart van Mar zat verborgen in dat lelijke beeld", + "van de oude jongen.", + "Niets gebroken, niets gewonnen! Dat is mijn motto. Haha...", + "Voor je loyaliteit vind je een uitstekende wapenupgrade", + "verstopt in een krat in de haven." ], "krew004": [ - "That's one turret down. Keep looking!" + "Dat is één torentje lager. Blijf kijken!" ], "krew005": [ - "Two turrets. Good work so far!" + "Twee torentjes. Goed werk tot nu toe!" ], "krew006": [ - "Three turrets gone. Nice! Keep it up!" + "Drie torentjes verdwenen. Leuk! Ga zo door!" ], "krew007": [ - "Four turrets trashed. Haha... Lovely, boys! Go get 'em!" + "Vier torentjes vernield. Haha... Heerlijk, jongens! Ga ze halen!" ], "krew008": [ - "Five turrets down the drain! Keep going." + "Vijf torentjes in de afvoer! Blijven gaan." ], "krew009": [ - "Six turrets out of commission.", - "Hah, I like the way you work." + "Zes torentjes buiten werking.", + "Haha, ik hou van de manier waarop je werkt." ], "krew010": [ - "Brass work, boys! You destroyed all the turrets, eh?", - "Now, come back to the Hip Hog." + "Koperwerk, jongens! Je hebt alle torentjes vernietigd, hè?", + "Kom nu terug naar de Hip Hog." ], "kwbf001": [ - "You know I can't play fair!", - "I have a secret weapon: my duplicity field!", - "Say hello to my little friends...", - "Ah, multiple me! Hahahaha... How delightful." + "Je weet dat ik het niet eerlijk kan spelen!", + "Ik heb een geheim wapen: mijn dubbelhartigheidsveld!", + "Zeg hallo tegen mijn kleine vrienden...", + "Ah, meerdere ik! Hahaha... Wat heerlijk." ], "kwbf002": [ - "Let me introduce you to my... \"crew.\"" + "Ik wil jullie graag voorstellen aan mijn... \"crew\"." ], "kwbf003": [ - "Let's dance!" + "Laten we dansen!" ], "kwbf004": [ - "You will die!" + "Je gaat dood!" ], "kwbf005": [ - "Here we come!" + "Hier komen we!" ], "kwbf006": [ - "My, don't my twins look stunning?" + "Ziet mijn tweeling er niet prachtig uit?" ], "kwbf007": [ - "You can't stop us all!" + "Je kunt ons niet allemaal tegenhouden!" ], "kwbf008": [ - "Surprise! More of me than you can handle." + "Verrassing! Meer van mij dan jij aankan." ], "kwbf009": [ - "I've a few good men to help me." + "Ik heb een paar goede mannen om mij te helpen." ], "kwbf010": [ - "Get him!" + "Pak hem!" ], "kwbf011": [ - "UARGH! Try stopping me now!" + "UARGH! Probeer me nu tegen te houden!" ], "kwbf012": [ - "You're getting lucky so far, 'ey?" + "Tot nu toe heb je geluk, hè?" ], "kwbf013": [ - "I grow weary of this. We end it now." + "Ik word hier moe van. We maken er nu een einde aan." ], "kwbf014": [ - "Hm-hm, I move pretty fast for a big man, 'ey?" + "Hm-hm, ik beweeg behoorlijk snel voor een grote man, 'eh?" ], "kwbf015": [ - "I float like a butterfly and sting like a wumpbee!" + "Ik zweef als een vlinder en steek als een wumpbee!" ], "kwbf016": [ - "Urghh!" + "Oergh!" ], "kwbf017": [ - "Aurgh!" + "Arg!" ], "kwbf018": [ "Arghh!" @@ -6503,1353 +6503,1355 @@ "Urrghh!" ], "kwbf020": [ - "Urgh, ow!" + "Urg, au!" ], "kwbf021": [ - "Die!" + "Dood gaan!" ], "kwbf022": [ - "Now I have you!" + "Nu heb ik jou!" ], "kwbf023": [ - "You cannot win, Jak!" + "Je kunt niet winnen, Jak!" ], "kwbf024": [ - "Here's some pain!" + "Hier is wat pijn!" ], "kwbf025": [ - "No!" + "Nee!" ], "kwbf026": [ - "You're trying my patience!" + "Je stelt mijn geduld op de proef!" ], "kwbf027": [ - "Stand still!" + "Blijf staan!" ], "kwbf028": [ - "Haha, how did that feel?" + "Haha, hoe voelde dat?" ], "kwbf029": [ - "You should have walked away when you had a chance." + "Je had weg moeten lopen toen je de kans had." ], "kwbf030": [ - "Pop this!" + "Laat dit knallen!" ], "kwbf031": [ - "You can't stop the bomb, Jak!" + "Je kunt de bom niet stoppen, Jak!" ], "kwbf032": [ - "Hahahaha, that felt good!" + "Hahaha, dat voelde goed!" ], "kwbf033": [ - "I am the weapon master!" + "Ik ben de wapenmeester!" ], "kwbf034": [ - "Had enough?" + "Genoeg gehad?" ], "kwbf035": [ - "Here we come!" + "Hier komen we!" ], "kwbf036": [ - "Dance for me, Jak!" + "Dans voor mij, Jak!" ], "kwbf037": [ - "You can't get us all!" + "Je kunt ons niet allemaal krijgen!" ], "kwbf038": [ - "Tag! You're it." + "Label! Jij bent het." ], "kwbf039": [ - "Phew. This is a bit of a workout..." + "Opluchting. Dit is een beetje een training..." ], "kwbf040": [ - "Which is the real me, Jak?" + "Wie is de echte ik, Jak?" ], "kwbf041": [ - "Finally... I get to put you in your place!" + "Eindelijk... kan ik je even op je plek zetten!" ], "kwbf042": [ - "Arghh! You little...!" + "Arghh! Jij kleine...!" ], "ora006": [ - "Bring me 200 more Metal Head Skull Gems", - "and I will show you another Dark Power." + "Breng me nog 200 Metal Head Skull Gems", + "en ik zal je een andere Duistere Macht laten zien." ], "ora007": [ - "Bring me 200 more Skull Gems", - "and another power will be yours to control." + "Breng me nog 200 schedeledelstenen", + "en een andere macht zal van jou zijn om te controleren." ], "ora008": [ - "Bring me more Skull Gems to receive control", - "over a Dark Power." + "Breng me meer Skull Gems om controle te krijgen", + "over een Duistere Macht." ], "ora009": [ - "You do not have enough Skull Gems.", - "Come back when you have collected more." + "Je hebt niet genoeg schedeledelstenen.", + "Kom terug als je meer hebt verzameld." ], "ora010": [ - "I need more Skull Gems." + "Ik heb meer schedeledelstenen nodig." ], "ora011": [ - "Trust not your reliance on weapons." + "Vertrouw niet op uw afhankelijkheid van wapens." ], "ora012": [ - "Use only your body and brain for this challenge." + "Gebruik alleen je lichaam en hersenen voor deze uitdaging." ], "ora013": [ - "Weapons are for the weak." + "Wapens zijn voor de zwakken." ], "ora014": [ - "You must not use weapons in this challenge." + "Je mag geen wapens gebruiken in deze uitdaging." ], "pek001": [ - "Groark! I can't believe you actually did this thing!", - "Onin says she will search timelines for answers", - "about these sacred relics. I will find you then." + "Grof! Ik kan niet geloven dat je dit echt hebt gedaan!", + "Onin zegt dat ze tijdlijnen zal doorzoeken op antwoorden", + "over deze heilige relikwieën. Dan zal ik je vinden." ], "pek002": [ - "Groark! Whoa... well I'll be a moncaw's uncle, the Light Tower", - "actually does exist! The beam of light is shining somewhere", - "in the city! The Tomb of Mar was right under our noses", - "all along. And thanks to me, you found it!" + "Grof! Whoa... nou, ik word de oom van een monnik, de Lichttoren", + "bestaat echt! De lichtstraal schijnt ergens", + "in de stad! Het graf van Mar lag vlak onder onze neus", + "de hele tijd. En dankzij mij heb je het gevonden!" ], "pek003": [ - "Wow! As I live and molt, one step closer to the Tomb.", - "I never thought we'd get this far!" + "Wauw! Terwijl ik leef en rui, een stap dichter bij het Graf.", + "Ik had nooit gedacht dat we zo ver zouden komen!" ], "pek010": [ - "This is Onin's magic bowl.", - "Onin will make symbols appear from her bowl.", - "When the symbols appear, you must pop them before they", - "reach the ground. You must pop them quickly, pop only", - "the symbols you see. If you try to pop a symbol that is", - "not there, Onin will give you a penalty! Miss any symbols", - "and you will penalized! Each round will get faster.", - "Let's see how far you get.", - "You must get a high enough score to win." + "Dit is Onins magische kom.", + "Onin laat symbolen uit haar kom verschijnen.", + "Wanneer de symbolen verschijnen, moet je ze eerder laten knallen", + "de grond bereiken. Je moet ze snel laten knappen, alleen knappen", + "de symbolen die je ziet. Als je een symbool probeert te laten knallen, dat is het wel", + "niet daar, Onin geeft je een penalty! Mis geen symbolen", + "en je wordt gestraft! Elke ronde gaat sneller.", + "Laten we eens kijken hoe ver je komt.", + "Je moet een score behalen die hoog genoeg is om te winnen." ], "pek011": [ - "You are doing very well!" + "Je bent erg goed bezig!" ], "pek012": [ - "Huh, not bad." + "Hè, niet slecht." ], "pek013": [ - "Keep going, you can do it!" + "Ga zo door, je kunt het!" ], "pek014": [ - "Pop any more than the true number of each symbol,", - "and you will be penalized! Groark!" + "Pop meer dan het werkelijke aantal van elk symbool,", + "en je wordt gestraft! Grof!" ], "pek015": [ - "Ready? Go!" + "Klaar? Gaan!" ], "pek016": [ - "That symbol wasn't there, penalty!" + "Dat symbool stond er niet, penalty!" ], "pek017": [ - "Hah, Onin got you! Pop only symbols that you see." + "Haha, Onin heeft je! Pop alleen symbolen die je ziet." ], "pek018": [ - "Here comes another round!", - "Give him another burst, Onin girl!" + "Hier komt nog een ronde!", + "Geef hem nog een uitbarsting, Onin meisje!" ], "pek019": [ - "She got you again! What is your problem?" + "Ze heeft je weer! Wat is je probleem?" ], "pek020": [ - "I can't believe you've made it this far!" + "Ik kan niet geloven dat je al zo ver bent gekomen!" ], "pek021": [ - "Quickly! You are missing symbols!" + "Snel! Je mist symbolen!" ], "pek022": [ - "You missed some!" + "Je hebt er een paar gemist!" ], "pek023": [ - "Faster! Faster!" + "Sneller! Sneller!" ], "pek024": [ - "Give it to him, Onin! More, Onin, more!", - "You go, girl, shake what your momma gave you!" + "Geef het hem, Onin! Meer, Onin, meer!", + "Ga maar, meisje, schud wat je moeder je heeft gegeven!" ], "pek025": [ - "Rockin' in the club." + "Rocken in de club." ], "pek026": [ - "He can't do that many!" + "Zoveel kan hij niet!" ], "pek027": [ - "What? He's still going?" + "Wat? Gaat hij nog?" ], "pek028": [ - "Let's see if he can handle it." + "Laten we kijken of hij het aankan." ], "pek029": [ - "Go! Come on!" + "Ga! Kom op!" ], "pek030": [ - "Okay, so you're good." + "Oké, het is goed." ], "pek031": [ - "Wow! Not bad." + "Wauw! Niet slecht." ], "pek032": [ - "Well, I laid an egg." + "Nou, ik heb een ei gelegd." ], "pek033": [ - "Amazing! You actually won!", - "I am without words, and that is rare." + "Verbazingwekkend! Je hebt echt gewonnen!", + "Ik ben zonder woorden, en dat is zeldzaam." ], "pek034": [ - "You got enough points, congratulations!" + "Je hebt genoeg punten, gefeliciteerd!" ], "pek035": [ - "Last penalty! You lose, loser." + "Laatste boete! Je verliest, verliezer." ], "pek036": [ - "You lost! Why am I not surprised?" + "Je hebt verloren! Waarom ben ik niet verrast?" ], "pek037": [ - "You lose! Would you like to try again?" + "Jij verliest! Wil je het opnieuw proberen?" ], "pek038": [ - "Ahh, you laid an egg. Too bad, so sad." + "Ahh, je hebt een ei gelegd. Jammer, zo triest." ], "pek039": [ - "Oooh, so close... not! Hehehe..." + "Oooh, zo dichtbij... niet! Hehehe..." ], "pek040": [ - "You made a valiant effort, but you suck!" + "Je hebt een dappere poging gedaan, maar je bent klote!" ], "pek041": [ - "Game over, finito, done, se acabó!" + "Game over, finito, klaar, het is voorbij!" ], "prop002": [ - "As you all know, I was wounded during our last", - "glorious assault against the Metal Head Nest", - "many years ago. I have sacrificed everything", - "for this city and I demand only the same in return!", - "Loyalty will be rewarded,", - "death will await all others." + "Zoals jullie allemaal weten, raakte ik gewond tijdens onze laatste", + "glorieuze aanval op het Metal Head Nest", + "vele jaren geleden. Ik heb alles opgeofferd", + "voor deze stad en ik eis er alleen hetzelfde voor terug!", + "Loyaliteit zal beloond worden,", + "de dood zal op alle anderen wachten." ], "prop003": [ - "The Dark Eco inside you will eventually kill you, Jak.", - "Its destructive effects cannot be stopped.", - "Once you are in its chaotic grip, it will not let you go", - "until you slide into insanity. Turn yourself in, and I will", - "kill you mercifully and painlessly,", - "it is your only way out." + "De Dark Eco in je zal je uiteindelijk vermoorden, Jak.", + "De vernietigende effecten ervan kunnen niet worden gestopt.", + "Als je eenmaal in zijn chaotische greep zit, laat hij je niet meer los", + "totdat je in waanzin vervalt. Geef jezelf aan, en ik zal het doen", + "je genadig en pijnloos vermoorden,", + "het is je enige uitweg." ], "prop004": [ - "Don't try to make a fool out of me, Jak.", - "Just because I haven't killed you yet doesn't", - "mean I'm not onto you. The citizens of this city", - "worship me because I offer them safety.", - "All I ask in return is for their lives.", - "I'll find you, and when I do, you'll wish", - "you died in prison." + "Probeer mij niet voor de gek te houden, Jak.", + "Het is niet omdat ik je nog niet heb vermoord", + "bedoel dat ik je niet door heb. De burgers van deze stad", + "aanbid mij omdat ik hen veiligheid bied.", + "Het enige wat ik in ruil daarvoor vraag, is hun leven.", + "Ik zal je vinden, en als ik dat doe, zul je dat wensen", + "jij stierf in de gevangenis." ], "prop005": [ - "Attention, my loyal citizens! We are looking for a", - "rebel fugitive who has caused the city considerable", - "damage of late. This man is armed and extremely", - "dangerous and can somehow change into a monstrous", - "creature. We have reports he is working with the", - "Metal Heads to subvert your city and your safety.", - "Report all sightings immediately!" + "Let op, mijn trouwe burgers! Wij zijn op zoek naar een", + "voortvluchtige rebellen die de stad veel heeft bezorgd", + "schade van de laatste tijd. Deze man is gewapend en extreem", + "gevaarlijk en kan op de een of andere manier in een monsterlijk veranderen", + "schepsel. We hebben berichten dat hij samenwerkt met de", + "Metal Heads om je stad en je veiligheid te ondermijnen.", + "Meld alle waarnemingen onmiddellijk!" ], "prop006": [ - "Brave citizens, today is the anniversary of the great", - "battle that ruined our city section we now call", - "Dead Town. Remember those who died", - "that day and how much we owe the Metal Heads", - "for their treachery! Remember how bravely I fought", - "to save those poor souls of the overrun section", - "and reflect on how grateful you should all be that the", - "Krimzon Guard keeps you safe each day." + "Dappere burgers, vandaag is de verjaardag van de groten", + "strijd die ons stadsdeel verwoestte dat we nu noemen", + "Dode stad. Denk aan degenen die stierven", + "die dag en hoeveel we de Metal Heads schuldig zijn", + "voor hun verraad! Weet je nog hoe moedig ik vocht", + "om die arme zielen van het overspoelde gedeelte te redden", + "en denk erover na hoe dankbaar jullie allemaal zouden moeten zijn dat de", + "Krimzon Guard houdt u elke dag veilig." ], "prop007": [ - "This is your Baron. The reports of a Metal Head", - "invasion of the city are vastly overblown.", - "I assure you this is but a small incursion and we will", - "defeat it shortly. Stay in your homes, do not panic,", - "or you will be punished!" + "Dit is uw Baron. De rapporten van een Metal Head", + "invasie van de stad zijn schromelijk overdreven.", + "Ik verzeker je dat dit maar een kleine inval is, en dat zullen we ook doen", + "versla het binnenkort. Blijf thuis, raak niet in paniek,", + "anders word je gestraft!" ], "prop008": [ - "Attention citizens, this is your Baron speaking.", - "There have been several unauthorized uses of the", - "city's old gate locks. Fortunately, these breaches", - "have not resulted in contamination, but we all know", - "how deadly the Wasteland is. No one is allowed", - "outside the city without authorization, let it be", - "known that any violators will be caught", - "and executed." + "Let op burgers, dit is uw baron die spreekt.", + "Er zijn verschillende ongeoorloofde toepassingen geweest van de", + "oude poortsloten van de stad. Gelukkig zijn deze inbreuken", + "hebben niet geleid tot besmetting, maar we weten allemaal", + "hoe dodelijk de Wasteland is. Niemand is toegestaan", + "buiten de stad zonder toestemming, laat het zo zijn", + "het is bekend dat eventuele overtreders zullen worden gepakt", + "en geëxecuteerd." ], "prop009": [ - "Serve your city." + "Dien uw stad." ], "prop010": [ - "Sacrifice for your city, and all will prosper!" + "Offer je op voor je stad, en alles zal bloeien!" ], "prop011": [ - "You are safe, because I care." + "Je bent veilig, omdat ik om je geef." ], "prop012": [ - "All Metal Heads must die!" + "Alle Metal Heads moeten dood!" ], "prop013": [ - "Work hard, and be grateful." + "Werk hard en wees dankbaar." ], "prop014": [ - "Report all wrongdoers." + "Rapporteer alle overtreders." ], "prop015": [ - "Remember, even your friends could be enemies." + "Vergeet niet dat zelfs je vrienden vijanden kunnen zijn." ], "prop016": [ - "Turn in all who subvert." + "Lever iedereen in die ondermijnt." ], "prop017": [ - "Strength is our only option!" + "Kracht is onze enige optie!" ], "prop018": [ - "Obey and be happy." + "Gehoorzaam en wees gelukkig." ], "prop019": [ - "Sacrifice is something you should do", - "for your city." + "Opoffering is iets dat je moet doen", + "voor jouw stad." ], "prop020": [ - "Sacrifice for your city." + "Opoffering voor je stad." ], "prop021": [ - "Remember, even friends might be enemies." + "Bedenk dat zelfs vrienden vijanden kunnen zijn." ], "prop022": [ - "The city needs your sacrifice." + "De stad heeft jouw offer nodig." ], "prop023": [ - "It is better inside the walls!" + "Binnen de muren is het beter!" ], "prop024": [ - "The law will show no mercy." + "De wet kent geen genade." ], "prop025": [ - "Justice is swift." + "Justitie is snel." ], "prop026": [ - "The Underground movement is dead!" + "De ondergrondse beweging is dood!" ], "prop027": [ - "Join the Krimzon Guard and your family", - "will be allowed to stay." + "Sluit je aan bij de Krimzon Guard en je familie", + "zal mogen blijven." ], "prop028": [ - "One way: My way." + "Eén manier: op mijn manier." ], "prop029": [ - "To lead is to control." + "Leidinggeven is controleren." ], "prop030": [ - "Give up your freedom and I will protect you." + "Geef je vrijheid op en ik zal je beschermen." ], "prop031": [ - "Have faith in me and the Promised Land is yours." + "Heb vertrouwen in mij en het Beloofde Land is van jou." ], "prop032": [ - "Your city needs a strong leader, not a childish fool." + "Jouw stad heeft een sterke leider nodig, geen kinderachtige dwaas." ], "prop033": [ - "Welcome not the unknown face." + "Welkom, niet het onbekende gezicht." ], "prop034": [ - "Shun those who would defy me!" + "Mijd degenen die mij willen uitdagen!" ], "prop035": [ - "I am the face of Haven City." + "Ik ben het gezicht van Haven City." ], "prop036": [ - "Without my strength, there would be no city." + "Zonder mijn kracht zou er geen stad zijn." ], "prop037": [ - "Follow me to a safer future!" + "Volg mij naar een veiligere toekomst!" ], "prop038": [ - "You are safe inside the walls with me." + "Bij mij ben je veilig binnen de muren." ], "prop039": [ - "Defy... and die." + "Trotseer... en sterf." ], "prop040": [ - "Welcome to Haven City!", - "All laws are enforced for your safety.", - "Obey me and you will not be punished." + "Welkom in Havenstad!", + "Voor uw veiligheid worden alle wetten gehandhaafd.", + "Gehoorzaam mij en je zult niet gestraft worden." ], "prop041": [ - "The city is safe. I will not allow harm", - "to befall you, trust me." + "De stad is veilig. Ik zal geen schade toestaan", + "dat jou zal overkomen, geloof me." ], "prop042": [ - "Rest assured, I will destroy the Metal Heads.", - "One way or another." + "Wees gerust, ik zal de Metal Heads vernietigen.", + "Op een of andere manier." ], "prop043": [ - "To all citizens, this puny Underground revolt", - "will be dealt with by all aggressive means.", - "We will crush these arrogant upstarts, they will not", - "be allowed to threaten me or this city's order!" + "Aan alle burgers, deze nietige ondergrondse opstand", + "zal met alle agressieve middelen worden bestreden.", + "Wij zullen deze arrogante nieuwkomers verpletteren, zij niet", + "mag mij of de orde van deze stad bedreigen!" ], "prop044": [ - "To all citizens of this great city, there is a monster", - "among you, masquerading as a man!", - "He is dangerous and must be destroyed!", - "I offer a reward of eco for his capture, or, if you", - "have a loved one in prison, I will exchange them for", - "this renegade. I promise." + "Voor alle burgers van deze grote stad is er een monster", + "onder jullie, vermomd als man!", + "Hij is gevaarlijk en moet vernietigd worden!", + "Ik bied een eco-beloning aan voor zijn gevangenneming, of, als jij", + "als ik een geliefde in de gevangenis heb, zal ik die ruilen", + "deze afvallige. Ik beloof." ], "prop045": [ - "To all who defy me! I am watching you,", - "I am everywhere, I am this city!" + "Aan iedereen die mij uitdaagt! Ik hou je in de gaten,", + "Ik ben overal, ik ben deze stad!" ], "prop046": [ - "This is your Baron. I have been informed by the", - "ministry of extreme labor that worker productivity is", - "down this month! That is unacceptable!", - "I give you safety and this is how you repay me?", - "You must work harder, not smarter!", - "Free the mind and the body will do as it's told,", - "forced labor will set you free!", - "And to help you in your spiritual motivation...", - "quotas are doubled next month!" + "Dit is uw Baron. Ik ben geïnformeerd door de", + "ministerie van extreme arbeid dat de productiviteit van werknemers is", + "deze maand! Dat is onacceptabel!", + "Ik geef je veiligheid en dit is hoe je mij terugbetaalt?", + "Je moet harder werken, niet slimmer!", + "Bevrijd de geest en het lichaam zal doen wat het wordt opgedragen,", + "dwangarbeid zal je bevrijden!", + "En om je te helpen in je spirituele motivatie...", + "De quota worden volgende maand verdubbeld!" ], "prop047": [ - "Due to recent, uh... \"attrition\" difficulties,", - "this city needs fresh Krimzon Guard recruits!", - "Everyone is asked to volunteer members of their family!", - "Come down to your friendly Fortress facility.", - "Or else!" + "Vanwege recente, uh... uitputtingsproblemen,", + "deze stad heeft nieuwe rekruten van de Krimzonwacht nodig!", + "Iedereen wordt gevraagd om leden van hun gezin als vrijwilliger op te geven!", + "Kom naar je vriendelijke Fortress-faciliteit.", + "Of anders!" ], "prop048": [ - "As your Baron, I am instituting a \"no hoverboard\" rule", - "in the city! Young delinquents with nothing better", - "to do than float around and do tricks! Huh!", - "I'll put all violators into the Guard and teach them", - "some discipline. No skating, it's the law!" + "Als uw baron stel ik een 'geen hoverboard'-regel in", + "in de stad! Jonge delinquenten die niets beters hebben", + "te doen dan rondzweven en trucjes doen! Hé!", + "Ik zal alle overtreders bij de Garde plaatsen en ze lesgeven", + "enige discipline. Niet schaatsen, het is de wet!" ], "prop049": [ - "I am disappointed with this city's lack of", - "committment and sacrifice. Work harder! Eat less!", - "Drink only when I tell you! Sleep is optional.", - "We are at war with an outside threat,", - "don't make me declare war on you as well!" + "Ik ben teleurgesteld over het gebrek aan deze stad", + "toewijding en opoffering. Werk harder! Eet minder!", + "Drink alleen als ik het je vertel! Slapen is optioneel.", + "We zijn in oorlog met een dreiging van buitenaf,", + "laat mij ook niet de oorlog aan jou verklaren!" ], "prop050": [ - "Greetings, people of this wonderful utopia. This year's", - "championship race will begin shortly. All citizens", - "not under house arrest are invited to come down to", - "the Stadium and watch your favorite son Erol", - "once again show how the Krimzon Guard are the elite", - "warriors of this city. Bring the whole family! The first", - "one thousand children will get a mandatory", - "Krimzon Guard recruitment package and be", - "\"asked\" to join the Guard for life, what a treat!" + "Gegroet, mensen van deze prachtige utopie. Deze jaren", + "De kampioensrace zal binnenkort beginnen. Alle burgers", + "die niet onder huisarrest staan, worden uitgenodigd om naar beneden te komen", + "het Stadion en kijk naar je favoriete zoon Erol", + "laat opnieuw zien hoe de Krimzonwacht de elite is", + "strijders van deze stad. Neem het hele gezin mee! De eerste", + "duizend kinderen krijgen een verplichtje", + "Krimzon Guard recruteringspakket en be", + "\"gevraagd\" om voor het leven bij de Garde te gaan, wat een traktatie!" ], "prop051": [ - "This is your Baron, I am still in control!", - "And I assure you, there's absolutely no Metal Heads", - "in the city. Anyone who contradicts this fact...", - "will be shot! The current situation is merely", - "an elaborate propaganda hoax, perpetrated by", - "the outlawed Underground militia trying to", - "subvert our laws and discredit those who protect you", - "while you sleep! Pay no attention to this foolish hoax,", - "there are no Metal Heads within 100 miles of this city!" + "Dit is jouw Baron, ik heb nog steeds de controle!", + "En ik verzeker je: er zijn absoluut geen Metal Heads", + "in de stad. Iedereen die dit feit tegenspreekt...", + "zal worden neergeschoten! De huidige situatie is slechts", + "een uitgebreide propagandahoax, uitgevoerd door", + "de verboden ondergrondse militie probeert dat te doen", + "onze wetten ondermijnen en degenen die u beschermen in diskrediet brengen", + "terwijl je slaapt! Schenk geen aandacht aan deze dwaze hoax,", + "er zijn geen Metal Heads binnen een straal van 160 kilometer rond deze stad!" ], "prop052": [ - "This is Baron Praxis. We have taken back the city", - "and the Metal Heads are now fleeing before us!", - "Victory is at hand! Continue to fight for the freedom", - "I may some day give you. Continue to defy these", - "enemies of my law and order...", - "and continue to die for me." + "Dit is Baron Praxis. Wij hebben de stad teruggenomen", + "en de Metal Heads vluchten nu voor ons uit!", + "De overwinning is nabij! Blijf vechten voor de vrijheid", + "Misschien zal ik het je ooit geven. Blijf deze uitdagen", + "vijanden van mijn wet en orde...", + "en blijf voor mij sterven." ], "prop053": [ - "Fear not the men in red. Sure, there are occasional", - "complaints about their over-aggressive policing,", - "wanton destruction of people's property during raids,", - "mass-arrests, misplaced loved ones and whatnot.", - "Hey, we're only human! Running a city can be", - "tougher than it looks, imagine how much worse", - "it would be if the Metal Heads were in charge!" + "Wees niet bang voor de mannen in het rood. Zeker, er zijn er af en toe", + "klachten over hun overdreven agressieve politieoptreden,", + "moedwillige vernieling van eigendommen van mensen tijdens invallen,", + "massa-arrestaties, zoekgeraakte dierbaren en dergelijke.", + "Hé, wij zijn ook maar mensen! Het runnen van een stad kan dat zijn", + "moeilijker dan het lijkt, stel je voor hoeveel erger", + "Dat zou het geval zijn als de Metal Heads de leiding hadden!" ], "prop054": [ - "We've had a few incidents with our lower class labor", - "force lately. If your Lurker is acting up, call Krimzon", - "Animal Control. Is your Lurker in a tree? Stuck in a", - "sewer grate? Foaming at the mouth? Call", - "the friendly officers of the K.A.C. and they will deal", - "with your furry slave. with all the love and care it", - "deserves... then haul it away for reconditioning.", - "Remember, Lurkers can be dangerous!" + "We hebben een paar incidenten gehad met onze arbeiders uit de lagere klassen", + "kracht de laatste tijd. Als je Lurker zich gedraagt, bel dan Krimzon", + "Dier controle. Zit jouw lurker in een boom? Vastgelopen in een", + "riool rooster? Schuimvorming in de mond? Telefoongesprek", + "de vriendelijke officieren van de K.A.C. en zij zullen handelen", + "met je harige slaaf. met alle liefde en zorg", + "verdient... en hem dan weghalen voor reconditionering.", + "Vergeet niet dat Lurkers gevaarlijk kunnen zijn!" ], "prop055": [ - "Please give generously to the Baron eco fund.", - "Your munificent donation wil be used for a variety", - "of humanitarian needs: bombs, guns, armor, genetic", - "alteration research, all in the name of preserving this", - "wonderful city of ours. Give often, give freely...", - "or it will be taken from you!" + "Geef alstublieft genereus aan het Baron ecofonds.", + "Uw royale donatie zal voor een verscheidenheid worden gebruikt", + "van humanitaire behoeften: bommen, wapens, pantsering, genetische behoeften", + "wijzigingsonderzoek, allemaal in naam van het behoud hiervan", + "prachtige stad van ons. Geef vaak, geef vrijelijk...", + "anders wordt het je afgenomen!" ], "prop056": [ - "It can be so lonely at the top and looking down from", - "up here I can see that this dirty city is in desperate", - "need of revitalization. So, to that end, we", - "will be bulldozing many sections of the city in the", - "coming weeks! All complaints against this", - "construction initiative can be brought,", - "in-person, to the Fortress Prison where they will be", - "\"reviewed.\" Condemned city sections are to", - "be evacuated before razing begins.", - "Anyone still in their homes will be ignored." + "Het kan zo eenzaam zijn aan de top en van daaruit naar beneden kijkend", + "Hierboven zie ik dat deze vuile stad wanhopig is", + "behoefte aan revitalisering. Dus daartoe hebben wij", + "zal in de toekomst veel delen van de stad met de grond gelijk maken", + "komende weken! Alle klachten hiertegen", + "bouwinitiatief kan worden gebracht,", + "persoonlijk naar de Fortgevangenis waar ze zullen zijn", + "\"beoordeeld.\" Veroordeelde stadsdelen zijn dat wel", + "worden geëvacueerd voordat het verwoesten begint.", + "Iedereen die nog in huis is, wordt genegeerd." ], "prop057": [ - "The Metal Head attack will not succeed!", - "Your Baron has taken certain measures", - "to guarantee that the Metal Heads will NEVER hold", - "this city for long. Rest assured, I will snatch victory", - "from the jaws of defeat, whatever the cost!", - "I vowed never to let this city fall, and I intend to keep", - "that promise. What must happen is for the good of all!", - "Remember, to die in victory is a glorious", - "badge of honor!" + "De Metal Head-aanval zal niet slagen!", + "Uw baron heeft bepaalde maatregelen genomen", + "om te garanderen dat de Metal Heads NOOIT zullen vasthouden", + "deze stad lang. Wees gerust, ik zal de overwinning pakken", + "uit de kaken van de nederlaag, wat het ook kost!", + "Ik heb gezworen deze stad nooit te laten vallen, en ik ben van plan dat zo te houden.", + "die belofte. Wat moet gebeuren is voor het welzijn van iedereen!", + "Bedenk dat het heerlijk is om in de overwinning te sterven", + "ereteken!" ], "prop058": [ - "This is Baron Praxis. As our city faces its worst threat", - "in three hundred years, I am faced with serious", - "decisions concerning our future. I regret that I have", - "few choices left. I command you all to return to your", - "homes and say goodbye to your families.", - "Be assured, we will not lose this fight, one way", - "or another! The time has come to show these creatures", - "what we're capable of when all hope is lost!", - "It has been a pleasure ruling over you", - "to the end." + "Dit is Baron Praxis. Terwijl onze stad wordt geconfronteerd met de grootste bedreiging", + "over driehonderd jaar word ik geconfronteerd met serieuze problemen", + "beslissingen over onze toekomst. Ik heb er spijt van dat ik dat heb gedaan", + "weinig keuzes over. Ik beveel jullie allemaal terug te keren naar jullie", + "huizen en afscheid nemen van uw families.", + "Wees gerust, we zullen deze strijd niet op één manier verliezen", + "of een ander! Het is tijd om deze wezens te laten zien", + "waartoe we in staat zijn als alle hoop verloren is!", + "Het was een genoegen om over u te regeren", + "naar het einde." ], "sam001": [ - "This is Samos. Jak, I need you to go out to the ruins", - "in Dead Town and visit my old hut. It's now time to retrieve", - "something I hid there long ago, good luck! And Daxter...", - "clean up my place while you're out there!" + "Dit is Samos. Jak, je moet naar de ruïnes gaan", + "in Dead Town en bezoek mijn oude hut. Het is nu tijd om op te halen", + "iets dat ik daar lang geleden verborgen heb gehouden, veel succes! En Daxter...", + "Ruim mijn huis op terwijl jij daar bent!" ], "sam002": [ - "This is Samos. Now that you boys are here", - "I want you to get up to my old hut. There is something there", - "that we need! Good luck, and watch our for Metal Heads." + "Dit is Samos. Nu jullie jongens hier zijn", + "Ik wil dat je naar mijn oude hut gaat. Er is daar iets", + "die we nodig hebben! Veel succes, en let op onze Metal Heads." ], "sam003": [ - "This is Samos, Jak. the Metal Heads must have taken", - "the giant gate ring to their Nest in the Wasteland.", - "If they're ever going to use that ring to open a rift back", - "to our old village, we need to get into the Nest and find it." + "Dit is Samos, Jak. de Metal Heads moeten hebben gepakt", + "de gigantische poort luidt naar hun nest in de woestenij.", + "Als ze die ring ooit gaan gebruiken om een ​​kloof te openen", + "naar ons oude dorp, we moeten het Nest binnengaan en het vinden." ], "sam004": [ - "You did well, Jak. Luckily, the Precursor Stone wasn't in that", - "bomb when it went off or none of us would be here", - "right now. Come back to the race garage", - "as soon as you can." + "Je hebt het goed gedaan, Jak. Gelukkig zat de Precursor Stone daar niet in", + "bom toen hij afging, anders zou niemand van ons hier zijn", + "direct. Kom terug naar de racegarage", + "zo snel als je kan." ], "sam005": [ - "Good work so far, boys!", - "Find Young Samos and give him the Life Seed." + "Goed werk tot nu toe, jongens!", + "Vind Young Samos en geef hem het Life Seed." ], "sam006": [ - "Finally, you got here! Find the Lurker Totem", - "and retrieve a piece of the Seal of Mar on its top." + "Eindelijk ben je hier! Vind de Lurker-totem", + "en pak een stukje van het Zegel van Mar op de bovenkant." ], "sam007": [ - "You've got to get the boy safely to the Power Station, Jak!" + "Je moet de jongen veilig naar de elektriciteitscentrale brengen, Jak!" ], "sam008": [ - "Thank you for protecting us, Jak.", - "We'll meet you at the Nest." + "Bedankt dat je ons beschermt, Jak.", + "We zien je bij het Nest." ], "sigc001": [ - "Hold on there, we need to teach you how to use this baby!" + "Wacht even, we moeten je leren hoe je deze baby moet gebruiken!" ], "sigc002": [ - "The Scatter Gun is a good short-range weapon", - "with a wide field of fire." + "De Scatter Gun is een goed korteafstandswapen", + "met een breed vuurveld." ], "sigc003": [ - "To fire the weapon, press the trigger." + "Druk op de trekker om het wapen af ​​te vuren." ], "sigc004": [ - "Good! Some kick, huh?" + "Goed! Een beetje kicken, hè?" ], "sigc005": [ - "It's not the fastest firing weapon in the world, though." + "Het is echter niet het snelste schietwapen ter wereld." ], "sigc006": [ - "You can put your weapon away or pull it out at anytime." + "Je kunt je wapen op elk moment opbergen of eruit halen." ], "sigc007": [ - "Try putting the weapon away." + "Probeer het wapen weg te leggen." ], "sigc008": [ - "Easy, huh?" + "Makkelijk, hè?" ], "sigc009": [ - "Now take the weapon back out." + "Haal nu het wapen er weer uit." ], "sigc010": [ - "Good!" + "Goed!" ], "sigc011": [ - "You can find red ammo inside Krimzon Guard crates." + "Je kunt rode munitie vinden in Krimzon Guard-kratten." ], "sigc012": [ - "Shoot the crates." + "Schiet op de kratten." ], "sigc013": [ - "Great, now you're ready!" + "Geweldig, nu ben je klaar!" ], "sigc014": [ - "Want to try the Scatter Gun course?" + "Wil je de Scatter Gun-cursus proberen?" ], "sigc015": [ - "The blaster is a good all-around choice", - "with a nice rate of fire." + "De blaster is een goede allround keuze", + "met een mooie vuursnelheid." ], "sigc016": [ - "This weapon requires more aiming ability." + "Dit wapen vereist meer richtvermogen." ], "sigc017": [ - "You can switch weapon modes at anytime." + "Je kunt op elk moment van wapenmodus wisselen." ], "sigc018": [ - "You can find yellow ammo in crates." + "Je kunt gele munitie vinden in kratten." ], "sigc022": [ - "Would you like to test your skills on the gun course?" + "Wil jij je vaardigheden testen op de schietbaan?" ], "sigc023": [ - "Which course do you want to play?" + "Welke baan wil je spelen?" ], "sigc024": [ - "Shoot every target. The faster you shoot each target", - "the more points you'll get." + "Schiet op elk doelwit. Hoe sneller je op elk doel schiet", + "hoe meer punten je krijgt." ], "sigc025": [ - "Hold your fire on civvies.", - "Hit a friendly target and points will be deducted." + "Houd je vuur op burgers.", + "Raak een vriendelijk doelwit en er worden punten afgetrokken." ], "sigc026": [ - "Good luck." + "Succes." ], "sigc027": [ - "Lock and load. Ready, go!" + "Vergrendelen en laden. Klaar, ga!" ], "sigc028": [ - "Perfect! You can be my backup any day." + "Perfect! Je kunt elke dag mijn back-up zijn." ], "sigc029": [ - "You did it, excellent shooting!" + "Het is je gelukt, prachtige opname!" ], "sigc030": [ - "Nice shooting! You got potential, kid!" + "Lekker schieten! Je hebt potentieel, jongen!" ], "sigc031": [ - "Not bad, you'll do." + "Niet slecht, dat ga je doen." ], "sigc032": [ - "Try again, rookie. You're still a bit rusty with that hardware." + "Probeer het nog eens, groentje. Je bent nog steeds een beetje roestig met die hardware." ], "sigc033": [ - "Not bad, but not good. Try again?" + "Niet slecht, maar niet goed. Probeer het nog eens?" ], "sigc034": [ - "Close, but in the thick, close won't cut it. Try again?" + "Dichtbij, maar in de diepte is dichtbij niet genoeg. Probeer het nog eens?" ], "sigc035": [ - "Care to try again? Or is your momma calling?" + "Wilt u het opnieuw proberen? Of belt je moeder?" ], "sigc036": [ - "You're not up to speed yet, try again?" + "Je bent nog niet op de hoogte. Probeer het opnieuw?" ], "sigc037": [ - "You gotta shoot those targets faster!" + "Je moet die doelen sneller neerschieten!" ], "sigc038": [ - "Be the gun, baby!" + "Wees het geweer, lieverd!" ], "sigc039": [ - "It's all about reaction time." + "Het draait allemaal om reactietijd." ], "sigc040": [ - "Different gun modes come in handy against different targets." + "Verschillende wapenmodi zijn handig tegen verschillende doelen." ], "sigc041": [ - "Be cool and you'll rule." + "Wees cool en jij zult regeren." ], "sigc043": [ - "Try switching to the Scatter Gun." + "Probeer over te schakelen naar het verstrooiingsgeweer." ], "sigc053": [ - "Faster on the trigger, cherry." + "Sneller op de trekker, kers." ], "sigc054": [ - "That was a civilian!" + "Dat was een burger!" ], "sigc055": [ - "I said \"don't shoot civvies,\" itchy finger!" + "Ik zei: \"schiet niet op burgers\", jeukende vingers!" ], "sigc056": [ - "Great job!" + "Goed werk!" ], "sigc057": [ - "Awesome round, I feel sorry for those Metal Heads already." + "Geweldige ronde, ik heb nu al medelijden met die Metal Heads." ], "sigc058": [ - "That was a sweet round, you make it look easy!" + "Dat was een leuk rondje, je laat het er gemakkelijk uitzien!" ], "sigc059": [ - "You smoked that course!" + "Jij hebt die cursus gerookt!" ], "sigc060": [ - "The Metal Heads will eat you alive, rookie! Do it over!" + "De Metal Heads zullen je levend opeten, groentje! Doe het opnieuw!" ], "sigc061": [ - "You need some practice." + "Je hebt wat oefening nodig." ], "sigc062": [ - "I remember my rookie days, keep trying." + "Ik herinner me mijn rookie-dagen, blijf het proberen." ], "sigc063": [ - "Perfect round! You are the man." + "Perfecte ronde! Jij bent de man." ], "sigc064": [ - "Perfect shooting! I'm impressed." + "Perfect schieten! Ik ben onder de indruk." ], "sigc065": [ - "Whoa, rock and roll, baby! That was a perfect round." + "Wauw, rock-'n-roll, schat! Dat was een perfecte ronde." ], "sigc066": [ - "Nice shot!" + "Mooi schot!" ], "sigc067": [ - "Wasted 'em!" + "Verspilde ze!" ], "sigc068": [ - "Very nice! Reminds me of me." + "Erg leuk! Doet me aan mij denken." ], "sigc069": [ - "Make 'em fear you." + "Zorg ervoor dat ze bang voor je zijn." ], "sigc070": [ - "Good combo!" + "Goede combinatie!" ], "sigc071": [ - "I love seeing you work!" + "Ik vind het geweldig om je werk te zien!" ], "sigc072": [ - "Now switch back to the Blaster." + "Schakel nu terug naar de Blaster." ], "sigc073": [ - "You can combo your attacks by kicking,", - "then firing your weapon." + "Je kunt je aanvallen combineren door te trappen,", + "vuur dan je wapen af." ], "sigc074": [ - "Try a kick-shot combo." + "Probeer een kick-shot-combo." ], "sigc075": [ - "Kick the first target, then shoot while kicking", - "to automatically hit the second target." + "Schop het eerste doelwit en schiet dan terwijl je schopt", + "om automatisch het tweede doel te raken." ], "sigc076": [ - "Great move!" + "Geweldige zet!" ], "sigc077": [ - "Not quite, try again. Kick then shoot, almost at the same time." + "Niet helemaal, probeer het opnieuw. Schop en schiet, bijna tegelijkertijd." ], "sigc078": [ - "Make sure you shoot while you're kicking to get the combo." + "Zorg ervoor dat je schiet terwijl je trapt om de combo te krijgen." ], "sigc079": [ - "Give it another shot." + "Geef het nog een kans." ], "sigc080": [ - "Now that's a Wastelander move!", - "They won't know what hit 'em!" + "Dat is een Wastelander-zet!", + "Ze zullen niet weten wat hen overkomt!" ], "sigc081": [ - "Think you can handle the Blaster course?" + "Denk je dat je het Blaster-parcours aankan?" ], "sigf001": [ - "You wasted 'em all! I'm still not sure why combat Metal Heads", - "are scouting this close to the city. To be honest,", - "I wasn't sure you could handle this gig, nice work!" + "Je hebt ze allemaal verspild! Ik weet nog steeds niet zeker waarom ik Metal Heads moet bestrijden", + "verkennen zo dicht bij de stad. Om eerlijk te zijn,", + "Ik wist niet zeker of je dit optreden aankon, goed werk!" ], "sigt003": [ - "Here we go!" + "Daar gaan we!" ], "sigt004": [ - "Follow me!" + "Volg mij!" ], "sigt005": [ - "Get behind me while I toast that tank." + "Ga achter me staan ​​terwijl ik op die tank proost." ], "sigt006": [ - "Hurry up kid, I don't have all day!" + "Schiet op jongen, ik heb niet de hele dag!" ], "sigt007": [ - "This way!" + "Deze kant op!" ], "sigt008": [ - "Toast those bad boys up ahead." + "Rooster die slechte jongens alvast." ], "sigt009": [ - "Quick! Drop the bridge!" + "Snel! Laat de brug vallen!" ], "sigt010": [ - "Jump up and grab the bridge to bring it down." + "Spring omhoog en grijp de brug om hem naar beneden te halen." ], "sigt011": [ - "Let's get across the bridge before they come back." + "Laten we over de brug gaan voordat ze terugkomen." ], "sigt012": [ - "There's our first target, keep the other creatures back", - "while I charge up the Peacemaker." + "Daar is ons eerste doelwit, de andere wezens op afstand houden", + "terwijl ik de Vredestichter oplaad." ], "sigt013": [ - "That's one fried Metal Head." + "Dat is een gebakken Metal Head." ], "sigt014": [ - "Let's get to the next target." + "Laten we naar het volgende doel gaan." ], "sigt015": [ - "With Metal Heads I say shoot first, ask questions later." + "Tegen Metal Heads zeg ik: schiet eerst, stel later pas vragen." ], "sigt017": [ - "Stay with me!" + "Blijf bij mij!" ], "sigt019": [ - "Waste the suckers!" + "Verspil het niet!" ], "sigt020": [ - "Great, kid, great! Don't get cocky." + "Geweldig, jongen, geweldig! Wees niet eigenwijs." ], "sigt021": [ - "There's the second scumbag, sittin' pretty." + "Daar is de tweede klootzak, die mooi zit." ], "sigt022": [ - "Cover me!" + "Bedek mij!" ], "sigt023": [ - "Boom, baby! One less Metal Head to think about." + "Boem, schat! Eén Metal Head minder om over na te denken." ], "sigt024": [ - "Next target." + "Volgende doel." ], "sigt025": [ - "Watch my six, while I toast this bad boy.", - "The trick is to not hit the pipes." + "Let op mijn zes, terwijl ik proost op deze stoute jongen.", + "De truc is om de pijpen niet te raken." ], "sigt026": [ - "Now that's what I call blowing someone's mind." + "Dat noem ik nou iemands versteld doen staan." ], "sigt027": [ - "Gotta thread the needle this time." + "Deze keer moet ik de naald inrijgen." ], "sigt028": [ - "Hahaha, Metal Head flambé." + "Hahaha, Metal Head vlamde." ], "sigt029": [ - "Look out! We've got company!" + "Pas op! We hebben gezelschap!" ], "sigt030": [ - "Damn! My gun's jammed, take over!" + "Verdomd! Mijn pistool zit vast, neem het over!" ], "sigt031": [ - "Get 'em while I fix my gun!" + "Haal ze terwijl ik mijn wapen repareer!" ], "sigt032": [ - "Okay, the Peacemaker is back online. Let's move!" + "Oké, de Peacemaker is weer online. Laten we verder gaan!" ], "sigt033": [ - "Last target, then we go home." + "Laatste doelwit, dan gaan we naar huis." ], "sigt036": [ - "Here comes trouble." + "Hier komen problemen." ], "sigt037": [ - "Did ya miss me?" + "Heb je mij gemist?" ], "sigt038": [ - "Say \"good night,\" baby." + "Zeg \"welterusten\", schat." ], "sigt039": [ - "Thanks for covering my butt, that was close!" + "Bedankt dat je mijn kont bedekte, dat was dichtbij!" ], "sigt043": [ - "Stay with me!" + "Blijf bij mij!" ], "sigt044": [ - "Stay close or we'll both be dead!" + "Blijf dichtbij, anders zijn we allebei dood!" ], "sigt045": [ - "Get over here and stay close!" + "Kom hier en blijf in de buurt!" ], "sigt046": [ - "You wanna play, huh?" + "Je wilt spelen, hè?" ], "sigt047": [ - "Oh, you got games?" + "Oh, heb je spelletjes?" ], "sigt049": [ - "You cherries can't handle this mission, we're through!" + "Jullie kersen kunnen deze missie niet aan, we zijn er klaar voor!" ], "sigt052": [ - "I don't work with amateurs!" + "Ik werk niet met amateurs!" ], "sigt053": [ - "You're more trouble than you're worth!" + "Je bent meer problemen dan je waard bent!" ], "sigt054": [ - "Come back when you're serious!" + "Kom terug als je het serieus meent!" ], "sigt056": [ - "You want some of this?!" + "Wil je hier wat van?!" ], "sigt057": [ - "Drop that lift-cap while I hold them off." + "Laat die liftdop vallen terwijl ik ze tegenhoud." ], "sigt058": [ - "Take 'em all out!" + "Haal ze er allemaal uit!" ], "sigt059": [ - "Great, no time to celebrate." + "Geweldig, geen tijd om te vieren." ], "sigt060": [ - "If I can't shoot it, it's someone else's problem.", - "You do something with those blocks." + "Als ik er niet op kan schieten, is het het probleem van iemand anders.", + "Je doet iets met die blokken." ], "sigt061": [ - "You gotta figure out the blocks, man." + "Je moet de blokken uitzoeken, man." ], "sigt062": [ - "Did you hear something?" + "Heb je iets gehoord?" ], "sigt063": [ - "That's one big ugly Metal Head." + "Dat is een grote, lelijke Metal Head." ], "sigt064": [ - "Shootin' this one's only going to get it mad, run!" + "Als je deze neerschiet, wordt hij alleen maar boos, rennen!" ], "sigt065": [ - "See ya on the flipside!" + "Tot ziens aan de andere kant!" ], "sigt066": [ - "Gone with the wind." + "Weg met de wind." ], "sigt067": [ - "Later alligator." + "Ajuu paraplu." ], "sigt068": [ - "I think that's the last we'll see of him." + "Ik denk dat dit het laatste is dat we van hem zullen zien." ], "sigt069": [ - "You figure this out, I'll cover your butt." + "Als je dit uitzoekt, bedek ik je kont." ], "sigt070": [ - "This is your gig, baby. Solve it, so we can go home." + "Dit is jouw klus, schat. Los het op, dan kunnen we naar huis." ], "sigt071": [ - "Great, here comes that bad boy again. Move!" + "Geweldig, daar komt die stoute jongen weer. Beweging!" ], "sigt072": [ - "Run!" + "Loop!" ], "sigt073": [ - "Go, go, go!" + "Ga Ga Ga!" ], "sigt074": [ - "He's gaining!" + "Hij wint!" ], "sigt075": [ - "Keep moving!" + "Blijven bewegen!" ], "sigt076": [ - "Faster!" + "Sneller!" ], "sigt077": [ - "It's gonna be close!" + "Het zal dichtbij zijn!" ], "sigt078": [ - "Move your butts!" + "Beweeg je billen!" ], "sigt082": [ - "Buddy, you don't wanna piss me off." + "Vriend, je wilt mij niet kwaad maken." ], "sigt083": [ - "You got a death wish?!" + "Heb jij een doodswens?!" ], "sigt087": [ - "Have a little pain right back!" + "Heb een beetje pijn in de rug!" ], "sigt089": [ - "Never trust a rookie." + "Vertrouw nooit een groentje." ], "sigt090": [ - "We're finished until you guys get serious." + "We zijn klaar totdat jullie serieus worden." ], "sigt091": [ - "This mission is obviously out of your league." + "Deze missie ligt duidelijk buiten jouw bereik." ], "sigt092": [ - "You're wasting my time, this mission is over." + "Je verspilt mijn tijd, deze missie is voorbij." ], "sigt093": [ - "Uhh... ugh...." + "Uhm... uhm...." ], "sigt100": [ - "Rage before beauty, buddy." + "Woede voor schoonheid, vriend." ], "sigt101": [ - "Let's move!" + "Laten we verder gaan!" ], "sigt102": [ - "I love the smell of burning metal!" + "Ik hou van de geur van brandend metaal!" ], "sigt103": [ - "Just a walk in the park." + "Gewoon een wandeling door het park." ], "sigt104": [ - "Follow me!" + "Volg mij!" ], "sigt105": [ - "Let's go!" + "Laten we gaan!" ], "sigt106": [ - "This way!" + "Deze kant op!" ], "sigt107": [ - "Over here!" + "Hier!" ], "sigt108": [ - "Rollin' baby!" + "Rollend schatje!" ], "sigt109": [ - "Blow 'em a kiss of death." + "Blaas ze een doodskus." ], "sigt110": [ - "I love dead-heads!" + "Ik hou van uitgebloeide bloemen!" ], "sigt111": [ - "Kiss your shiny butt goodbye!" + "Kus je glanzende kont vaarwel!" ], "sigt112": [ - "Born to kill baby!" + "Geboren om baby te vermoorden!" ], "sigt113": [ - "Two to the chest, one to the head." + "Twee tegen de borst, één tegen het hoofd." ], "spot004": [ - "Come out and cheer for me as I destroy the competition once again on the track.", - "This year's racing final will be to die for, I guarantee more thrills and more spills.", - "This time I want blood!...Bring the kids." + "Kom naar buiten en moedig mij aan terwijl ik de concurrentie opnieuw op de baan vernietig.", + "De racefinale van dit jaar zal om voor te sterven zijn, ik garandeer meer spanning en meer lekkages.", + "Deze keer wil ik bloed!...Breng de kinderen mee." ], "tess001": [ - "Hey, guys! This is Tess. Before Krew left, I saw him hide", - "something in the game machine here. Knowing Krew,", - "it's probably something valuable.", - "You might wanna come check it out." + "Hallo jongens! Dit is Tess. Voordat Krew vertrok, zag ik hem zich verstoppen", + "iets in de spelmachine hier. Krew kennende,", + "het is waarschijnlijk iets waardevols.", + "Misschien wil je eens komen kijken." ], "tor001": [ - "The operation was a success. All Underground members are safe.", - "Come back to the hideout, I have a new mission for you while we wait for this alert to blow over." + "De operatie was een succes. Alle Underground-leden zijn veilig.", + "Kom terug naar de schuilplaats. Ik heb een nieuwe missie voor je terwijl we wachten tot dit alarm voorbij is." ], "tor002": [ - "That should take some heat off the streets. Good work, I couldn't have done it better myself." + "Dat zou wat warmte uit de straten moeten halen. Goed gedaan, ik had het zelf niet beter kunnen doen." ], "tor003": [ - "That's it, Jak, you're up! Try not to trigger any alarms, the garrison guards will be tough.", - "Get to the prison cell block and find the prisoners. Once there, we'll turn on the Warp Gate inside to get you all back out. Good luck." + "Dat is alles, Jak, je bent wakker! Probeer geen alarm te activeren, de garnizoenswachten zullen streng zijn.", + "Ga naar het gevangeniscelblok en vind de gevangenen. Eenmaal daar, zetten we de Warp Gate binnen aan, zodat jullie er allemaal weer uit kunnen komen. Succes." ], "tor004": [ - "Ok, my old access codes should help Vin turn off the magnetic seal for the Fortress door." + "Oké, mijn oude toegangscodes zouden Vin moeten helpen de magnetische verzegeling voor de deur van het Fort te sluiten." ], "tor005": [ - "Jak, this is Torn, the city is under Metal Head attack. There's a large force moving toward the city wall from the ocean.", - "We need people manning the tower gunpods to stop that assault. Meet me at the seaside ocean wall in the Port, hurry!", - "We need every man we can get!" + "Jak, dit is Torn, de stad wordt aangevallen door Metal Head. Er beweegt een grote kracht vanuit de oceaan richting de stadsmuur.", + "We hebben mensen nodig die de torenkanonpods bemannen om die aanval te stoppen. Ontmoet me bij de oceaanmuur aan de kust in de haven, schiet op!", + "Wij hebben iedere man nodig die we kunnen krijgen!" ], "tor007": [ - "Jak, it's a guard roadblock, get out of there!" + "Jak, het is een wegversperring voor de bewakers, ga daar weg!" ], "tor008": [ - "They've set up a roadblock, they're onto you!" + "Ze hebben een wegversperring opgezet, ze hebben je door!" ], "torn024": [ - "More coming in!" + "Er komen er meer binnen!" ], "tswm001": [ - "You can do it, Daxter!" + "Je kunt het, Daxter!" ], "tswm002": [ - "Keep going, Daxter." + "Ga door, Daxter." ], "tswm003": [ - "Go, go, go!" + "Ga Ga Ga!" ], "tswm004": [ - "Wow! What an animal!" + "Wauw! Wat een dier!" ], "tswm005": [ - "You got it!" + "Jij hebt het!" ], "tswm006": [ - "Nice slam!" + "Lekker slam!" ], "tswm007": [ - "Ooh ho ho, baby!" + "Ooh ho ho, schatje!" ], "tswm008": [ - "Great shot, Daxter!" + "Geweldige opname, Daxter!" ], "tswm009": [ - "You're almost there!" + "Je bent er bijna!" ], "tswm010": [ - "You can win, baby!" + "Je kunt winnen, schat!" ], "tswm011": [ - "My hero!" + "Mijn held!" ], "tswm012": [ - "Look at him go!" + "Kijk hem eens gaan!" ], "tswm013": [ - "You ARE Orange Lightning!" + "Jij BENT Oranje Bliksem!" ], "tswm014": [ - "Just a few more!" + "Nog maar een paar!" ], "tswm015": [ - "Hit him again!" + "Raak hem opnieuw!" ], "tswm016": [ - "Yes!" + "Ja!" ], "tswm017": [ - "That's my naughty ottsel!" + "Dat is mijn ondeugende ottsel!" ], "tswm018": [ "Oh!" ], "tswm019": [ - "That wasn't good." + "Dat was niet goed." ], "tswm020": [ - "Don't hit the red ones!" + "Raak de rode niet!" ], "tswm021": [ - "Ooh!" + "Oeh!" ], "tswm022": [ - "That took points away!" + "Dat kostte punten!" ], "tswm023": [ - "You did it!" + "Je hebt het gedaan!" ], "tswm024": [ - "Daxter, you won!" + "Daxter, jij hebt gewonnen!" ], "tswm025": [ - "Yes! You're the man! I mean... the animal." + "Ja! Jij bent de man! Ik bedoel... het dier." ], "tswm026": [ - "You beat the game, Daxter!" + "Je hebt het spel uitgespeeld, Daxter!" ], "tswm027": [ - "Where'd you learn to pound like that?" + "Waar heb je zo leren beuken?" ], "tswm028": [ - "That was amazing!" + "Dat was geweldig!" ], "tswm029": [ - "Pretty good for a little furball." + "Best goed voor een beetje haarbal." ], "tswm030": [ - "Ooh... Not enough points!" + "Ooh... Niet genoeg punten!" ], "tswm031": [ - "No! You lost..." + "Nee! Je verloor..." ], "tswm032": [ - "Awww... You lost again!" + "Awww... Je hebt weer verloren!" ], "tswm033": [ - "So close!" + "Zo dichtbij!" ], "tswm034": [ - "One more time." + "Nog een keer." ], "tswm035": [ - "You can do it!" + "Je kunt het!" ], "tswm036": [ - "You have to try again!" + "Je moet het opnieuw proberen!" ], "tswm037": [ - "You have to beat the game, Daxter." + "Je moet het spel verslaan, Daxter." ], "tswm038": [ - "Try again!" + "Probeer het nog eens!" ], "tswm039": [ - "Ah! That was a bad one!" + "Ah! Dat was een slechte!" ], "tswm040": [ - "Don't hit the bad ones, Daxter." + "Raak de slechte niet, Daxter." ], "tswm041": [ - "You hit a bad Metal Head." + "Je hebt een slechte Metal Head geraakt." ], "tswm042": [ - "Not again!" + "Niet weer!" ], "tswm043": [ - "Oh no!" + "Oh nee!" ], "tswm044": [ - "Daxter..! You need more points!" + "Daxter..! Je hebt meer punten nodig!" ], "tswm045": [ - "Keep going...!" + "Blijven gaan...!" ], "tswm046": [ - "Oh, Daxter... did you get your whiskers singed?" + "Oh, Daxter... heb jij je snorharen laten zingen?" ], "tswm047": [ - "You're gonna score!" + "Je gaat scoren!" ], "tswm048": [ - "You're almost there...!" + "Je bent er bijna...!" ], "tswm049": [ - "Just a few more!" + "Nog maar een paar!" ], "tswm050": [ - "We have a winner!" + "We hebben een winnaar!" ], "tswm051": [ - "Oh! That was a bad one." + "Oh! Dat was een slechte." ], "tswm052": [ - "Don't hit the bad ones, Daxter." + "Raak de slechte niet, Daxter." ], "tswm053": [ - "Daxter, you hit a bad Metal Head!" + "Daxter, je hebt een slechte Metal Head geraakt!" ], "tswm054": [ - "Daxter, you won!!" + "Daxter, je hebt gewonnen!!" ], "tswm055": [ - "You did it, fur boy!" + "Het is je gelukt, bontjongen!" ], "tswm056": [ - "Yes!! You beat the game!" + "Ja!! Je hebt het spel verslagen!" ], "tswm057": [ - "I knew you could do it." + "Ik wist dat je het kon." ], "vin002": [ - "Okay, the B-Zone Power Grid is back online.", - "Have fun being killed in the Palace." + "Oké, het B-Zone Power Grid is weer online.", + "Veel plezier met het vermoorden in het paleis." ], "vin003": [ - "You destroyed the last of the Metal Head eggs!", - "That should give us a little more eco for the city.", - "Good work!" + "Je hebt de laatste Metal Head-eieren vernietigd!", + "Dat zou ons wat meer eco voor de stad moeten opleveren.", + "Goed werk!" ], "vin004": [ - "You still haven't gotten all the Metal Head eggs!", - "Make sure you get 'em all, or I'm gonna have", - "a nervous breakdown!" + "Je hebt nog steeds niet alle Metal Head-eieren gekregen!", + "Zorg ervoor dat je ze allemaal krijgt, anders krijg ik ze", + "een zenuwinzinking!" ], "vin011": [ - "Thank goodness you blew up those wells.", - "I sure don't want any more Metal Heads coming around here.", - "Good work, boys! I owe ya one." + "Godzijdank heb je die bronnen opgeblazen.", + "Ik wil absoluut niet dat er hier nog meer Metal Heads komen.", + "Goed werk, jongens! Ik ben je er één schuldig." ], "vin012": [ - "Good work, guys! The fewer Metal Head eggs", - "we allow to hatch, the fewer of those nasty monsters", - "we'll have to fight!" + "Goed werk, jongens! Hoe minder Metal Head-eieren", + "we laten uitkomen, hoe minder van die vervelende monsters", + "we zullen moeten vechten!" ], "vin013": [ - "Jak... Kor...", - "Construction... Site...", - "Ngh..." + "Hoe... Kor...", + "Bouwplaats...", + "..." ], "vin014": [ - "Once again you guys have saved my butt!", - "Maybe now I'll get a raise. Or a long vacation.", - "God knows I could use one. Thanks for the help!" + "Nogmaals, jullie hebben mijn kont gered!", + "Misschien krijg ik nu loonsverhoging. Of een lange vakantie.", + "God weet dat ik er één kan gebruiken. Bedankt voor de hulp!" ], "vin015": [ - "The shield wall is down! I repeat - the shield wall is down!", - "Sabotage! Kor did it!", - "I knew Metal Heads would be the end of me!", - "OH NO! Metal Heads are at the door!!", - "They're breaking through!!", - "Too many of them!! Jak!!! AHHHH!!!" + "De schildmuur is neergehaald! Ik herhaal: de schildmuur is neergehaald!", + "Sabotage! Kor heeft het gedaan!", + "Ik wist dat Metal Heads het einde van mij zou zijn!", + "OH NEE! Metalheads staan ​​voor de deur!!", + "Ze breken door!!", + "Te veel van hen!! Jak!!! AHHHH!!!" ], "ys001": [ - "Excellent work, boys! Come on back to the Hideout,", - "I have another task for you." + "Uitstekend werk, jongens! Kom terug naar de Hideout,", + "Ik heb nog een taak voor je." ], "ys002": [ - "Nice shooting, my boy!", - "Good work, Jak!", - "We'll all sleep a little easier tonight." + "Lekker schieten, mijn jongen!", + "Goed werk, Jak!", + "Vanavond slapen we allemaal wat rustiger." ] }, "speakers": { - "agent": "Agent", - "ashelin": "Ashelin", - "baron": "Baron Praxis", - "brutter": "Brutter", - "citizen-female": "Citizen", - "citizen-male": "Citizen", + "agent": "Tussenpersoon", + "ashelin": "Asjelin", + "baron": "Baron Praktijk", + "brutter": "Kapot gegaan", + "citizen-female": "Inwoner", + "citizen-male": "Inwoner", "computer": "Computer", - "darkjak": "Dark Jak", - "daxter": "Daxter", + "darkjak": "Donker Jak", + "daxter": "Daxter-jongen", "errol": "Erol", - "grim": "Grim", - "guard": "Krimzon Guard", - "guard-a": "Guard A", - "guard-b": "Guard B", - "jak": "Jak", - "jinx": "Jinx", + "grim": "Grimmig", + "guard": "Krimzon-wacht", + "guard-a": "Bewaker A", + "guard-b": "Bewaker B", + "jak": "Hoe", + "jinx": "Vervloekt", "keira": "Keira", - "keira-before-class-3": "Mechanic", - "kid": "Kid", + "keira-before-class-3": "Monteur", + "kid": "Kind", "kor": "Kor", - "krew": "Krew", - "metalkor": "Metal Kor", + "krew": "Bloed", + "metalkor": "Metaal Kor", + "metalkor-before-consite": "Metalen hoofdleider", + "metalkor-intro": "???", "mog": "Mog", - "onin": "Onin", - "oracle": "Oracle", + "onin": "Een", + "oracle": "Orakel", "pecker": "Pecker", - "precursor": "Precursor", + "precursor": "Voorloper", "samos": "Samos", - "sig": "Sig", + "sig": "Inspraak", "tess": "Tess", - "torn": "Torn", + "torn": "Stuk", "vin": "Vin", - "youngsamos": "Young Samos", + "youngsamos": "Jonge Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_no-NO.json b/game/assets/jak2/subtitle/subtitle_lines_no-NO.json index 1eedfcf5e8..afcaf059c6 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_no-NO.json +++ b/game/assets/jak2/subtitle/subtitle_lines_no-NO.json @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", @@ -7852,4 +7854,4 @@ "youngsamos": "Young Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_pl-PL.json b/game/assets/jak2/subtitle/subtitle_lines_pl-PL.json index 79b717376c..28c6f524f8 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_pl-PL.json +++ b/game/assets/jak2/subtitle/subtitle_lines_pl-PL.json @@ -2,207 +2,207 @@ "cutscenes": {}, "other": { "DSbop001": [ - "Jak, wyglądasz na zdenerwowanego." + "Na pewno wyglądasz na znerwicowanego, Jak." ], "DSbop002": [ - "Pamiętasz jak się skaczę ?" + "Pamiętasz, jak się skacze?" ], "DSbop003": [ - "Wskocz na tę skrzynkę, żeby przeskoczyć barykadę" + "Wskocz na tę skrzynkę, żeby przeskoczyć barykadę." ], "DSbop004": [ - "Ooh, that's a high ledge!", - "Spróbuj podskoczyć raz, a następnie skocz ponownie w powietrzu", - "by dotrzeć do tego." + "Ooh, ale wysoko ta krawędź!", + "Spróbuj podskoczyć raz, a potem drugi już w powietrzu", + "żeby sięgnąć tamtej." ], "DSbop005": [ - "Dobra robota, widzisz? Wciąż to masz!" + "Dobra robota, widzisz? Dalej to potrafisz!" ], "DSbop006": [ - "I never found hide nor hair of Keira or Samos.", - "Nie wiem, gdzie oni poszli." + "Nigdy nie znalazłem skóry ani włosów Keiry, ani Samos'a.", + "Nie mam pojęcia, gdzie oni poszli." ], "DSbop007": [ - "I don't know where that crazy rift vehicle took us, but...", - "To jakieś duże miasto!" + "Nie wiem, gdzie wziął nas ten szalony samochód, ale...", + "To jakieś wielkie miasto!" ], "DSbop008": [ - "To twarde miejsce, Jak. Ty JEDNAK pamiętasz", - "how to fight, right? Try breaking that crate with a kick." + "To ciężkie miejsce, Jak. Pamiętasz JEDNAK", + "Pamiętasz, jak się walczy, prawda? Spróbuj rozbić tę skrzynię kopnięciem." ], "DSbop009": [ - "Looking good, partner! Nice spin kick!", - "Works out some of that anger, eh?" + "Dobra robota partnerze, świetny kopniak!", + "Oczyść trochę tej złości, co nie?" ], "DSbop010": [ - "There are lots of Krimzon Guard crates lying around", - "for the taking. Break that crate!" + "Jest wiele skrzyń Strażnika Krimzonu leżących wokół", + "do wzięcia. Rozwal tę skrzynię!" ], "DSbop011": [ - "Good job! That crate had a health pack inside.", - "Pick it up, you'll wanna keep healthy, Jak, or uh heh...", - "kto będzie walczył?" + "Dobra robota! Ta skrzynia miała w środku apteczkę.", + "Podnieś to, jeśli będziesz chciał zachować zdrowie Jak, lub, uh heh...", + "kto zajmie się walką?" ], "DSbop016": [ - "If you jump then dive, you'll crash down to the ground", - "hard enough to break lots of things.", - "Breaking stuff's fun, right?" + "Jeśli podskoczysz potem zanurz, rozbijesz się na ziemię", + "wystarczająco ciężko, aby rozbić wiele rzeczy.", + "Przerywasz zabawę, prawda?" ], "DSbop017": [ - "Straż, Jak! Zrób swoje, uh... rzeczy." + "Straż, Jak! Rób swoje, uh... sztuczki." ], "agnt001": [ - "Hey hey, drive carefully!" + "Hej hej, jedź ostrożnie!" ], "agnt002": [ "Uważaj!" ], "agnt003": [ - "Watch it!" + "Uważaj!" ], "agnt004": [ - "Whoa whoa whoa whoa!" + "Łoł łoł łoł łoł!" ], "agnt005": [ - "Wow!" + "Whoa!" ], "agnt006": [ - "You're crazy!" + "Jesteś szalony!" ], "agnt007": [ - "Czy ty oszalałeś?" + "Rozum postradałeś!?" ], "agnt008": [ "Uważaj!" ], "agnt009": [ - "To bolało!" + "Ten akurat zabolał!" ], "agnt010": [ - "Stay sharp, we've got a tough part of town coming up." + "Bądź czujny, przed nami trudna część miasta." ], "agnt011": [ - "Now we're in for it!" + "Teraz jesteśmy na to gotowi!" ], "agnt012": [ - "You're wasting citizens!" + "Krzywdzisz cywilów!" ], "agnt013": [ - "Don't hit the civvies, man!" + "Nie uderzaj w cywilów, stary!" ], "agnt014": [ - "Man, you are hitting people!" + "Człowieku, uważaj na ludzi!" ], "agnt015": [ - "Patrz gdzie idziesz!" + "Patrz, gdzie lecisz!" ], "agnt016": [ - "Go man!" + "Dalej!" ], "agnt017": [ - "Keep your head down!" + "Trzymaj głowę nisko!" ], "agnt018": [ - "They're shooting at us!" + "Strzelają do nas!" ], "agnt019": [ - "We are dead if you don't drive faster!" + "Jesteśmy martwi jeśli nie będziesz jechał szybciej!" ], "agnt020": [ - "Keep going!" + "Tak trzymaj!" ], "agnt021": [ - "Do it, man, do it!" + "Zrób to, chłopie, zrób to!" ], "agnt022": [ - "Pospiesz się, człowieku!" + "Pospiesz się, stary!" ], "agnt023": [ - "I ain't riding on the back, pick up a two-seater!" + "Nie będę jechał z tyłu, weź dwuosobowe!" ], "agnt024": [ - "Get a bigger car!" + "Zdobądź większy pojazd!" ], "agnt025": [ - "Get a bigger vehicle." + "Zdobądź większy pojazd." ], "agnt026": [ - "Get one with two seats, will ya?" + "Zdobądź jedno z dwoma miejscami, czy tak?" ], "agnt027": [ - "Get another vehicle." + "Zdobądź większy pojazd." ], "agnt028": [ - "They're onto us." + "Są na nas." ], "agnt029": [ - "We're being followed." + "Jesteśmy śledzeni." ], "agnt030": [ - "We're taking a beating!" + "Dostajemy łomot!" ], "agnt031": [ - "We can't take much more of that!" + "Nie możemy zabrać tak dużo!" ], "agnt032": [ - "Are you trying to die!?" + "Próbujesz zginąć!?" ], "agnt033": [ - "Where did Torn find you?" + "Gdzie Torn cię znalazł?" ], "agnt034": [ - "You sure you're on our side?" + "Na pewno jesteś po naszej stronie?" ], "agnt035": [ - "Turn, TURN!" + "Skręć, SKRĘĆ!" ], "agnt036": [ - "Good move." + "Dobry ruch." ], "agnt037": [ - "Death to the Baron!" + "Śmierć Baronowi!" ], "agnt038": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Chwała Marowi, że tu dotarliście, Strażnicy Krimzon są wszędzie!" ], "agnt039": [ - "It's about time, let's get out of here!" + "To dobry czas, aby stąd uciekać!" ], "agnt040": [ - "Good, good, just in time. GO, GO, GO!" + "Dobrze, dobrze, już czas. RUSZAJ, RUSZAJ, RUSZAJ!" ], "agnt041": [ - "Finally, we need to move!" + "Nareszcie, musimy się ruszyć!" ], "agnt042": [ - "Man, I was beginning to think you wouldn't show up." + "Stary, już myślałem, że się nie pojawisz." ], "agnt043": [ - "Not a moment too soon, let's fly!" + "Nie za późno, lecimy!" ], "agnt044": [ - "Get me to my new safehouse, quickly!" + "Szybko doprowadź mnie do mojego nowego bezpiecznego domu!" ], "agnt045": [ "Dzięki, powodzenia!" ], "agnt046": [ - "Good driving, go save the rest of our guys." + "Dobra robota, idź i ocal resztę naszych chłopaków." ], "agnt047": [ - "OK, Ja stąd spadam!" + "OK, ja stąd spadam!" ], "agnt048": [ "Do zobaczenia na następnym spotkaniu." ], "agnt049": [ - "Thanks, you're a life saver." + "Dzięki, za ocalenie życia." ], "agnt050": [ - "This is where I get off." + "Tutaj wysiadam." ], "agnt051": [ - "I'm glad you're on our side." + "Cieszę się, że jesteś po naszej stronie." ], "agnt052": [ "Ugh!" @@ -214,7 +214,7 @@ "Hah!" ], "agnt055": [ - "Ahh!" + "Ahhh!" ], "agnt056": [ "Jedź ostrożnie!" @@ -226,85 +226,85 @@ "Uważaj!" ], "agnt059": [ - "ŁOO!" + "WHOA!" ], "agnt060": [ "Jesteś szalony!" ], "agnt061": [ - "Czy ty oszalałeś?" + "Rozum postradałeś?!" ], "agnt062": [ "Uważaj!" ], "agnt063": [ - "To bolało." + "Ten akurat zabolał." ], "agnt064": [ - "Stay sharp, we got a tough part of our town coming up." + "Bądź czujny, przed nami trudna część miasta." ], "agnt065": [ - "Now we're in for it." + "Teraz jesteśmy na to gotowi." ], "agnt066": [ - "You're wasting citizens!" + "Krzywdzisz cywilów!" ], "agnt067": [ - "Don't hit the civvies, man!" + "Nie bij cywili!" ], "agnt068": [ - "Man, you're hitting the people!" + "Człowieku, uważaj na ludzi!" ], "agnt069": [ - "Look where you're going!" + "Patrz, gdzie lecisz!" ], "agnt070": [ - "Go man, GO!" + "Idź, człowieku, idź!" ], "agnt071": [ - "Keep your head down!" + "Trzymaj głowę nisko!" ], "agnt072": [ - "They're shooting at us!" + "Strzelają do nas!" ], "agnt073": [ - "We're dead if you don't drive faster!" + "Będziemy martwi jeśli nie będziesz jechał szybciej!" ], "agnt074": [ - "Keep going!" + "Tak trzymaj!" ], "agnt075": [ - "Do it, man, do it!" + "Zrób to, chłopie, zrób to!" ], "agnt076": [ - "Hurry up, man!" + "Pospiesz się, stary!" ], "agnt077": [ - "I ain't riding on the back, pick up a two-seater!" + "Nie będę jechał z tyłu, weź dwuosobowe!" ], "agnt078": [ - "Get a bigger vehicle." + "Zdobądź większy pojazd." ], "agnt079": [ - "They're onto us!" + "Są na nas!" ], "agnt080": [ - "We're being followed!" + "Jesteśmy śledzeni!" ], "agnt081": [ - "We're taking a beating!" + "Dostajemy łomot!" ], "agnt082": [ - "We can't take much more of that." + "Nie możemy zabrać tak dużo." ], "agnt083": [ - "You trying to die?" + "Próbujesz zginąć?" ], "agnt084": [ - "Where'd Torn find you?" + "Gdzie Torn cię znalazł?" ], "agnt085": [ - "You sure you're on our side?" + "Na pewno jesteś po naszej stronie?" ], "agnt086": [ "Skręć, SKRĘĆ!" @@ -316,61 +316,61 @@ "Śmierć Baronowi!" ], "agnt089": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Chwała Marowi, że tu dotarliście, Strażnicy Krimzon są wszędzie!" ], "agnt090": [ - "It's about time, let's get out of here!" + "To dobry czas, aby stąd uciekać!" ], "agnt091": [ - "Good, just in time, GO, GO, GO!" + "Dobrze, dobrze, już czas. RUSZAJ, RUSZAJ, RUSZAJ!" ], "agnt092": [ "Nareszcie, musimy iść!" ], "agnt093": [ - "Stary, na początku myślałem, że się nie pojawisz." + "Stary, już myślałem, że się nie pojawisz." ], "agnt094": [ - "Not a moment too soon, let's fly!" + "Nie za późno, lecimy!" ], "agnt095": [ - "Get me to my new safehouse, quickly!" + "Szybko doprowadź mnie do mojego nowego bezpiecznego domu!" ], "agnt096": [ - "Thanks, good luck!" + "Dzięki, powodzenia!" ], "agnt097": [ - "Good driving, go save the rest of our guys." + "Dobra robota, idź i ocal resztę naszych chłopaków." ], "agnt098": [ - "OK, I'm out of here!" + "Okej, ja stąd spadam!" ], "agnt099": [ - "See ya at the next meeting!" + "Do następnego razu!" ], "agnt100": [ - "Thanks, you're a life-saver." + "Dzięki, za ocalenie życia." ], "agnt101": [ - "This is where I get off." + "Tutaj wysiadam." ], "agnt102": [ - "I'm glad you're on our side." + "Cieszę się, że jesteś po naszej stronie." ], "agnt103": [ - "Look out!" + "Uważaj!" ], "agnt104": [ - "Hey!" + "Hej!" ], "agnt105": [ - "Augh!" + "Ach!" ], "agnt106": [ - "Come on man, you trying to kill me!?" + "Ej stary, próbujesz mnie zabić!?" ], "agnt107": [ - "Take it easy!" + "Spokojnie!" ], "agnt108": [ "Ughh!" @@ -382,7 +382,7 @@ "Ahhh!" ], "agnt111": [ - "Oof!" + "Uff!" ], "agnt112": [ "Ah!" @@ -391,110 +391,110 @@ "Ahh!" ], "agnt114": [ - "Uf!" + "Oof!" ], "agnt115": [ - "Okay, buddy, move!" + "Okej, stary, ruchy!" ], "agnt116": [ - "Look out!" + "Uważaj!" ], "agnt117": [ - "Keep your eyes on the road!" + "Patrz na drogę!" ], "agnt118": [ - "Watch it!" + "Uważaj!" ], "agnt119": [ - "Thanks for the lift." + "Dzięki za podwózkę." ], "agnt120": [ - "See ya at the next meeting." + "Do następnego razu." ], "agnt121": [ - "Right, let's go!" + "Dobra, chodźmy!" ], "agnt122": [ - "Drive, man, drive!" + "Jedź, stary, jedź!" ], "agnt123": [ - "That was close!" + "Było blisko!" ], "agnt124": [ - "You sure you know what you're doing?" + "Jesteś pewien, że wiesz, co robisz?" ], "agnt125": [ - "Ok, thanks, good luck." + "Ok, dzięki, powodzenia." ], "agnt126": [ - "Great, let's go." + "Świetnie, chodźmy dalej." ], "agnt127": [ - "Drive, man, drive!" + "Jedź, stary, jedź!" ], "agnt128": [ - "That was close!" + "Było blisko!" ], "agnt129": [ - "You sure you know what you're doing?" + "Jesteś pewien, że wiesz, co robisz?" ], "agnt130": [ - "OK, thanks, good luck!" + "Ok, dzięki, powodzenia!" ], "agnt131": [ - "What took you so long?" + "Co zajęło cię tak długo?" ], "agnt132": [ - "Move like you got a purpose, man!" + "Poruszaj się tak, jakbyś miał cel, człowieku!" ], "agnt133": [ - "GO, GO, the KG are onto us!" + "Idź, idź, KG są za nami!" ], "agnt134": [ - "Stay sharp, we're almost there!" + "Bądź czujny, jesteśmy prawie na miejscu!" ], "agnt135": [ - "Good, you did well, I'll tell the Shadow we're safe!" + "Dobrze, poradziłeś sobie, powiem Cieniowi, że jesteśmy bezpieczni!" ], "asha001": [ - "Payback's a bitch, and I'm it." + "Zemsta to suka, a ja nią jestem." ], "asha002": [ - "Watch your ass, I'm only woman on the outside." + "Uważaj na siebie, jestem tylko kobietą na zewnątrz." ], "asha003": [ - "Let me knock you down to size...", - "Not that you have any." + "Pozwól, że cię zmniejszę do odpowiednich rozmiarów...", + "Nie żebyś miał jakiekolwiek." ], "asha004": [ - "Small guns don't get me going." + "Małe karabiny mnie nie podniecają." ], "asha005": [ - "That's a tiny gun..." + "To jest mała broń..." ], "asha006": [ - "You don't know who you're dealing with." + "Nie wiesz, z kim masz do czynienia." ], "asha007": [ - "I never said you could touch me there." + "Nigdy nie powiedziałem, że mógłbyś mnie tam dotknąć." ], "asha008": [ - "Take that!" + "Żryj to!" ], "asha009": [ - "Here's some." + "Oto niektóre." ], "asha010": [ - "Ready for another?" + "Gotowy na innych?" ], "asha011": [ - "How's that feel?" + "Jakie to uczucie?" ], "asha012": [ - "Seems like it hurts." + "Wygląda na to, że to boli." ], "asha013": [ - "Oh, that hurt." + "Och, to boli." ], "asha014": [ "Ugh!" @@ -509,115 +509,115 @@ "Agh!" ], "asha018": [ - "Hit me again and you'll lose something really valuable!" + "Uderz mnie raz jeszcze, a stracisz coś naprawdę cennego!" ], "asha019": [ - "Not smart!" + "Nie mądrze!" ], "asha020": [ - "Listen, buddy, whose side are you on?" + "Słuchaj, kumplu, po czyjej jesteś stronie?" ], "asha021": [ - "Don't make me hurt you." + "Nie zmuszaj mnie do bolesnich działań." ], "asha022": [ - "Do that again and I'll put you down." + "Zrób to jeszcze raz, a ja cię powale." ], "asha023": [ - "Learn to control your gun, buddy." + "Naucz się kontrolować swoją broń, kumplu." ], "asha024": [ - "Where'd you learn to fight?" + "Gdzie nauczyłeś się tak walczyć?" ], "asha025": [ - "Check your targets, mister." + "Sprawdź swoje cele, panie." ], "asha026": [ - "Don't do that again." + "Nie rób tego ponownie." ], "asha027": [ - "Maybe I should be behind you." + "Może powinienem być za tobą." ], "asha028": [ - "I won't take that!" + "Nie wezmę tego!" ], "asha029": [ - "Another one like that and you'll be singing soprano." + "Kolejne takie zachowanie i będziesz śpiewał sopranem." ], "asha030": [ - "Have some back." + "Niech wróci." ], "asha031": [ - "Don't do that again!" + "Nie próbuj tego ponownie!" ], "asha032": [ - "Nice shooting." + "Ładny strzał." ], "asha033": [ - "Good shooting, blue boy." + "Dobrze strzelasz, niebieski chłopaczku." ], "asha034": [ - "Good work." + "Dobra robota!" ], "asha035": [ - "Take 'em all down!" + "Spędź je wszystkie!" ], "asha036": [ - "Let's get 'em!" + "Złapmy ich!" ], "asha037": [ - "Here they come!" + "Już nadchodzą!" ], "asha038": [ - "I need some help!" + "Potrzebuję pomocy!" ], "asha039": [ - "Man, there are a lot of 'em!" + "O cholera, jest ich naprawdę dużo!" ], "asha040": [ - "More coming." + "Idą kolejni." ], "asha041": [ - "I got him." + "Mam go." ], "asha042": [ - "More firepower!" + "Więcej ognia!" ], "asha043": [ - "One more down!" + "Jeszcze raz!" ], "asha044": [ - "Help me out!" + "Pomóż nam!" ], "asha045": [ - "They're out-flanking us!" + "Idą na nasze skrzydło!" ], "asha046": [ - "We're surrounded!" + "Jesteśmy otoczeni!" ], "asha047": [ - "Shoot! Shoot!" + "Strzelaj! Strzelaj!" ], "asha048": [ - "It's not looking good." + "To nie wygląda dobrze." ], "asha049": [ - "Help me!" + "Pomóż mi!" ], "asha050": [ - "Here's one for my father!" + "Oto jedno dla mojego ojca!" ], "asha051": [ - "Damn Metal Heads..." + "Cholerne Metalowe Łby..." ], "asha052": [ - "Bullseye." + "Strzał w dziesiątkę!" ], "asha053": [ - "There's some more of those things!" + "Jest jeszcze więcej tych rzeczy!" ], "asha054": [ - "Get 'em all!" + "Zdobądź wszystko!" ], "asha055": [ "Ugh..." @@ -629,576 +629,576 @@ "Hah...agh..." ], "asht002": [ - "You were right, Jak. What my father's doing is wrong.", - "I need to help fix this. If you get to the Weapons Factory,", - "maybe we can stop him. I'll meet you there." + "Miałeś rację, Jak. To co robi mój ojciec jest złe.", + "Muszę pomóc naprawić to. Jeśli dotrzesz do fabryki broni,", + "Może uda nam się go powstrzymać. Spotkam się z Tobą tam." ], "asht006": [ - "I think now's the time to act.", - "The Metal Heads are so focused on attacking the city,", - "they may have left their nest vulnerable.", - "Jak, you've got to get out to the Wasteland", - "and breach the Nest barrier any way you can.", - "Maybe if you get inside and take out the Metal Head leader", - "the army will collapse. It's a long shot,", - "but it might be our only chance." + "Myślę, że teraz nadszedł czas na działanie.", + "MetalHead'y skupiają się na atakowaniu miasta,", + "Mogli pozostawić swoje gniazdo bezbronnie.", + "Jak, musisz wyjść z Wasteland.", + "I sforsuj barierę Gniazda, jeśli potrafisz.", + "Może jeśli wejdziesz do wnętrza i wyciągniesz dowódcę MetalHead'ów.", + "Armia się załamie. To ryzykowne, ale...", + "ale może to być nasza jedyna szansa." ], "bar001": [ - "Pay no attention to the groundless rumors about", - "low eco supplies. As your Baron, I assure you,", - "the city has an endless supply of eco stores.", - "Those who would say we are running out,", - "are only trying to frighten and subvert!", - "I have everything in control, I command you", - "to have no fear." + "Nie zwracaj uwagi na bezpodstawne plotki o", + "Niskie zasoby eko. Jako twój baron, zapewniam Cię,", + "miasto posiada niekończącą się dostawę eco.", + "Ci, którzy twierdzą, że nam brakuje,", + "próbują tylko przestraszyć i odwrócić się!", + "Mam wszystko pod kontrolą, mówię ci", + "Bez obaw." ], "bar004": [ - "Go!" + "Dalej!" ], "bb01fail": [ - "I think you should practice more." + "Myślę, że powinieneś więcej ćwiczyć." ], "bb01int": [ - "Jak, this is Torn. The Underground needs good drivers", - "for our vehicle missions. Prove your skills on the", - "Ring Challenge and maybe we'll let you in on the action." + "Jak, to jest Torn. Podziemie potrzebuje dobrych kierowców", + "podczas naszych misji związanych z pojazdami. Udowodnij swoje umiejętności.", + "Wykonaj wyzwanie z pierścieniem, a może pozwolimy ci dołączyć do akcji." ], "bb01win": [ - "Not bad, I think we can use ya.", - "Here's a little reward for your effort." + "Nie tak źle, myślę, że możemy z nich skorzystać.", + "Oto mała nagroda za twój wysiłek." ], "bb02fail": [ - "You're still a little timid. Try again." + "Jesteś jeszcze trochę nieśmiały. Spróbuj ponownie." ], "bb02int": [ - "We'd like to see you prove your driving skills. Take on", - "another Ring Challenge, let's see what you've got." + "Chcielibyśmy zobaczyć, jak udowodnisz swoje umiejętności kierowania. Weź udział", + "inne Wyzwanie Pierścienia, zobaczmy co masz do dyspozycji." ], "bb02win": [ - "Not bad. You could be my getaway driver any time." + "Nieźle. Możesz być moim kierowcą w każdej chwili." ], "bb03fail": [ - "I knew this one would prove too much for ya. Keep practicing." + "Wiedziałem, że to okaże się za trudne dla Ciebie. Ćwicz dalej." ], "bb03int": [ - "The next Ring Challenge will separate the men from the boys.", - "Let's see if you can handle it." + "Kolejne wyzwanie Pierścienia oddzieli mężczyzn od małych chłopców.", + "Zobaczmy, czy potrafisz sobie z tym poradzić." ], "bb03win": [ - "Very nice driving. I'm starting to think you could really", - "help us, Jak." + "Świetnie prowadzisz. Zaczynam coraz bardziej wierzyć, że naprawdę potrafisz jeździć.", + "Pomóż nam, Jak." ], "bb04fail": [ - "Too bad, I kinda hoped you could do this. Keep trying." + "Źle, miałem nadzieję, że możesz to zrobić, próbuj dalej." ], "bb04int": [ "Torn here. I don't even know why I'm lettin' you try this", - "Ring Challenge, never beat it myself. I guess I'm morbidly", - "curious. Beat this one and you'll be the best driver", - "the Underground's ever had." + "Ring Challenge, sam nigdy go nie pokonałem. Chyba jestem chorobliwie", + "ciekawy. Pokonaj go, a będziesz najlepszym kierowcą", + "Podziemia kiedykolwiek miało." ], "bb04win": [ - "Very nice, Jak! You're the best driver we've ever had." + "Bardzo dobrze, Jaki! Jesteś najlepszym kierowcą, kiedykolwiek mieliśmy." ], "bb05fail": [ - "You didn't get all the Bomb Bots, Jak!" + "Nie zdobyłeś wszystkich Bomb Botów, Jak!" ], "bb05int": [ - "Jak, reports say more bomb bots are roaming the city.", - "They're a dangerous menace, and I need you to locate", - "and destroy each one before they hurt our interests." + "Jak, raporty mówią, że więcej robotów bomb rośnie w mieście.", + "Są niebezpiecznym zagrożeniem i potrzebuję abyś znalazł", + "i zniszczyć każdego z nich, zanim zaszkodzą naszym interesom" ], "bb05win": [ - "Good work! That oughta put a dent in the Baron's war budget." + "Dobra robota! To powinno zaszkodzić budżetowi wojennemu Barona." ], "bb06int": [ - "Jak, we need you to take out another group of Bomb Bots.", - "These mobile weapons keep showing up in the city, we gotta take them out as soon as possible." + "Jak, musimy cię wysłać, aby zlikwidować kolejną grupę Bomb Botów.", + "Te mobilne bronie ciągle pojawiają się w mieście, musimy je jak najszybciej zlikwidować." ], "bb06win": [ - "Another pile of bomb bot scrap metal for the KG", - "trash compactors. Mission accomplished, the Underground's", - "most grateful for your service." + "Kolejny stos złomu bomb metalowego dla KG", + "kompaktory śmieci. Misja zakończona, podziemie", + "bardzo wdzięczny za Twoją usługę." ], "bb07fail": [ - "You lost an agent! NOT good at all, Jak! Mission failed!" + "Straciłeś agenta! NIE dobrze! Misja się nie powiodła!" ], "bb07int": [ - "Torn here, I need you to go out and move more of our Agents to new locations in the city.", - "KG spies are watching our every move, so look out for trouble. Good luck." + "Torn tutaj, potrzebuję, żebyś wyszedł i przeniósł więcej naszych agentów do nowych lokalizacji na mieście.", + "Szpiedzy KG obserwują nasz każdy krok, więc szukają problemów. Powodzenia." ], "bb07win": [ - "Nice shuttle work! You're keepin' people alive out there." + "Dobra praca z transportem! Trzymasz ludzi przy życiu na zewnątrz." ], "bb08fail": [ - "One of our best agents was arrested. The Shadow will NOT be", - "pleased! You failed." + "Jeden z naszych najlepszych agentów został aresztowany. Cień NIE będzie", + "Proszę! Nie udało Ci się." ], "bb08int": [ - "Jak, some of our Agents have been compromised again.", - "Find each one and take them to special hideouts in the city.", - "The guard patrols are on high alert, so this is going to be a tough one. Keep your head down!" + "Jak, niektórzy z naszych agentów zostali ponownie skompromitowani.", + "Znajdź każdą z nich i zabierz je do specjalnych kryjówek na mieście.", + "Patrole strażników są na wysokim poziomie alarmowym, więc będzie to trudne. Trzymaj głowę nisko!" ], "bb08win": [ - "That was good driving, Jak.", - "The Underground can breathe a little easier now." + "To była dobra jazda - Jak.", + "Podziemie może teraz odetchnąć z ulgą." ], "bb09fail": [ - "You took too long, Jak. We're calling off the meeting." + "Za długo to trwało, Jak. Odwołujemy spotkanie." ], "bb09int": [ - "Jak, we're having an Underground meeting", - "with some special Agents. Pick up each Agent", - "and bring them to the meeting place quickly." + "Jak, mamy spotkanie Podziemia", + "z kilkoma specjalnymi agentami. Podnieś każdego agenta", + "i szybko dostarczyć je na miejsce spotkania." ], "bb09win": [ - "Fast work, Jak! Some day, we might even", + "Szybka robota, Jak! Pewnego dnia możemy nawet", "invite you to these meetings." ], "bb10fail": [ - "Not fast enough, buddy! You've gotta be quick", - "with those deliveries." + "Nie wystarczająco szybko, kolego! Musisz być szybki", + "z tymi dostawami." ], "bb10int": [ - "Jak, you've got to prove your driving skills once again.", - "One of our Agents dropped off a package,", - "I need it delivered to the Hideout. Immediately." + "Jak, musisz po raz kolejny udowodnić swoje umiejętności jazdy.", + "Jeden z naszych agentów wyrzucił paczkę,", + "Muszę go dostarczyć do Kryjówki. Natychmiast." ], "bb10win": [ - "Good work, Jak!" + "Dobra robota, Jak!" ], "bb11fail": [ - "The package contents didn't make it. Go faster next time!" + "Zawartość paczki nie dotarła na miejsce. Następnym razem szybciej!" ], "bb11int": [ - "Jak, I need you to take a package of eco", - "over to the power station. Get there quickly or the contents", - "will be useless to Vin." + "Jak, musisz wziąć paczkę z eko", + "do elektrowni. Dotrzyj tam szybko lub zawartość", + "będzie dla Vin'a bezużyteczna." ], "bb11win": [ - "Nice driving, Jak." + "Niezła jazda, Jak." ], "bb12fail": [ - "You didn't push it hard enough, newbie. Try again." + "Nie naciskałeś wystarczająco mocno, nowicjuszu. Spróbuj jeszcze raz." ], "bb12int": [ - "This is Torn, we've got another package delivery", - "for the Stadium. Make it quick!" + "Tu Torn, mamy kolejną przesyłkę", + "dla Stadionu. Zrób to szybko!" ], "bb12win": [ - "Not bad driving. You really oughta race", - "in the city championship." + "Niezła jazda. Naprawdę powinieneś się ścigać", + "w mistrzostwach miasta." ], "bb13fail": [ - "You gotta work on your speed, man." + "Musisz popracować nad szybkością." ], "bb13int": [ - "I need you to take a valuable item over to Onin.", - "You won't be able to drive the whole way,", - "but you still have to move fast. Good luck." + "Musisz zabrać cenny przedmiot do Onina.", + "Nie będziesz w stanie przejechać całej trasy,", + "ale nadal musisz działać szybko. Powodzenia." ], "bb13win": [ - "That's the way to get it done, good work." + "Tak to się robi, dobra robota." ], "bb14fail": [ - "Too late, Jak! The agent is calling it off.", - "You need to reach it faster!" + "Za późno, Jak! Agent to odwołuje.", + "Musisz osiągnąć to szybciej!" ], "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." + "Jak, mamy agenta czekającego na przesyłkę.", + "Szpiedzy straży go obserwują,", + "więc jeśli szybko do niego nie dotrzesz, zostanie aresztowany.", + "Zabierz do niego paczkę zanim będzie za późno." ], "bb14win": [ - "Nice work, the delivery was a success. I like your style, Jak." + "Dobra robota, dostawa okazała się sukcesem. Lubię twój styl, Jak." ], "bb15fail": [ - "You screwed up, Jak! You didn't get it to the safe zone", - "as we asked." + "Spieprzyłeś sprawę, Jak! Nie dotarłeś do bezpiecznej strefy", + "o co prosiliśmy." ], "bb15farr": [ "Get off the bike and get clear, Jak!!" ], "bb15int": [ - "Jak, we found a bomb in the Slums", - "that was meant for the Shadow.", - "I need you to pick it up and take it out to the Farm Area", - "where we've marked a safe zone where it can explode.", - "Go quickly." + "Jak, znaleźliśmy bombę w slumsach", + "To było przeznaczone dla Cienia.", + "Musisz go odebrać i zabrać na teren farmy", + "gdzie oznaczyliśmy bezpieczną strefę, gdzie może wybuchnąć.", + "Idź szybko." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "To była niesamowita robota, Jak! Dziękuję, naprawdę mówię poważnie." ], "bb16fail": [ - "You didn't take out enough guards!", - "We need to hit them harder!" + "Nie zabrałeś wystarczającej liczby strażników!", + "Musimy uderzyć w nich mocniej!" ], "bb16int": [ - "Jak, this is Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "inflict real damage on our enemies." + "Jak, to jest Torn.", + "Osobisty strażnik Erola przemieszcza się przez miasto.", + "Musimy w nich uderzyć i to mocno! Zdjąć wystarczająco dużo", + "strażników, zanim będę musiał odwołać misję.", + "Zbyt mała liczba strażników sprawi, że stracimy okazję do", + "zadać prawdziwe obrażenia naszym wrogom." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Świetne uderzenie i ucieczka, Jak! To wyśle wiadomość do Erola." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Wygląda na to, że jest zbyt trudny w użyciu. Na razie odpuścimy." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "Oceniamy nową odrzutową deskę do użytku w podziemiu.", + "misje. Słyszeliśmy, że jesteś całkiem dobry,", + "pokaż nam, co może zrobić. Zdobądź wystarczająco dużo punktów", + "ocenimy bota-sędziego i rozważymy dodanie go do naszego arsenału." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", - "Good work." + "Wow! Tym maleństwem naprawdę można rozerwać beton!", + "Dobra robota." ], "bb18fail": [ "I'm still not sure the JET-Board's that useful." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Oto kolejne świetne miejsce do oceny wydajności.", + "Na odrzutowej desce. Spróbuj zdobyć tutaj wystarczająco ilość punktów." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", + "Słodkie ruchy Jak. KG miałby trudny czas", "catching us on those babies." ], "bb19fail": [ - "You didn't get them all. Try again." + "Nie dostałeś wszystkiego. Spróbuj ponownie." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "Oceniamy wykorzystanie nadajników naprowadzających w misjach.", + "Zdobądź wszystkie nadajniki tak szybko, jak to możliwe.", + "Mógłbyś szybko ruszyć nad tą sprawą." ], "bb19win": [ - "Excellent work. You're a great asset", - "to the Underground, Jak." + "Doskonała robota. Jesteś świetnym atutem", + "do podziemia Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "Za wolno, Jak! Kiedy Cień zapyta musisz dostarczyć." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "Cień potrzebuje cię do zebrania zielonego eco dla niego", + "eksperymenty. Zdobądź wszystko przed zniknięciem eko." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "Nieźle. Będę miał dobre słowo u Cienia." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Próbuj dalej. Musisz rozwijać swoje umiejętności tutaj." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "Czasami lubię \"pożyczać\" Straży Krimzon", + "sprzęt. Zabierz rower patrolowy KG na przejażdżkę", + "i zrealizuj wszystkie cele w określonym czasie." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Niezły strzał. Straż pokochałaby cię jako rekruta.", + "Oto mała nagrodya za pozostanie z nami." ], "bb22fail": [ "You didn't get the booths fast enough, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "Niektóre z propagandy Barona są niepokojące", + "cywile. Zdejmij te budki, a powstrzymamy Praxis", + "od szerzenia swoich kłamstw." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Dobra robota! To powinno trochę uciszyć Barona" ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Straciłeś, Jak. Jeśli chcesz wygrać,", + "lepiej pracujesz nad swoimi umiejętnościami szybkości." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "Najlepszy zawodnik Podziemia chce rzucić ci wyzwanie", + "do wyścigu na torze Ring Course One.", + "Myślisz, że potrafisz poradzić sobie z małą konkurencją?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Gratulacje! Pokonałeś wyzwania!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "Nasz chłopak cię załatwił. Powodzenia następnym razem." ], "bb24int": [ - "Up for a little race, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "Gotowy na mały wyścig, Jak?", + "Nasz najlepszy kierowca chce zmierzyć się z tobą na Ring Course Two.", + "To dziecko jest trochę trudniejsze.", + "Zobaczmy, czy potrafisz sprostać wyzwaniu." ], "bb24win": [ - "You beat him, Jak. Nice driving." + "Pokonałeś go, Jak. Nieźle prowadzisz." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", - "You lost!" + "Wygląda na to, że nie jesteś najlepszym kierowcą w tym mieście, Jak.", + "Przegrywasz!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", - "This one's gonna get hairy." + "Mistrz wyścigów Podziemia znów chce się z tobą zmierzyć,", + "tym razem na trudnym torze Ring Course Three.", + "Będzie ostro." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Gratulacje, pokonałeś naszego najlepszego zawodnika. Dobra robota." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "To jest Torn, dobry agent Podziemia zna miasto", + "wewnątrz i na zewnątrz, przez wzrok. Zobaczmy, jak sobie radzisz,", + "dotrzeć do tego miejsca w wyznaczonym terminie", + "a otrzymasz nagrodę. IDŹ!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Oto kolejna szansa na udowodnienie Twojej znajomości miasta." ], "bb28int": [ - "Find this place before time runs out." + "Znajdź to miejsce przed upływem czasu." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Oto trudne zadanie, pobić czas do tego miejsca." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Rozpoznajesz to miejsce? Znajdź je szybko, a otrzymasz nagrodę." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Oto mało znane miejsce, znajdź je szybko, a będę pod wrażeniem." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "Chciałbym zobaczyć, jak znajdujesz to miejsce. Zaimponuj mi, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Przyjdź tu szybko i zaskocz mnie." ], "bb34int": [ - "Here's another destination, get here quickly." + "Oto kolejny cel, dotrzyj tam szybko." ], "bb35int": [ - "Find this spot, fast!" + "Znajdź to miejsce szybko!" ], "bb36int": [ - "Reach this area and be rewarded." + "Dotrzyj do tego obszaru i otrzymaj nagrodę." ], "bb37int": [ - "Think you can find this place?" + "Myślisz, że znajdziesz to miejsce?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "Nie za dobrze, Jak! Może powinieneś skalibrować tę tablicę." ], "bb38int": [ "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", - "in the time limit allotted." + "Zobaczmy, czy uda ci się zebrać wszystkie doładowania energetyczne", + "w wyznaczonym czasie." ], "bb38win": [ - "Nice moves, fly-boy." + "Niezłe ruchy, latający chłopcze." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "Tak blisko, ale w tym biznesie oznacza to śmierć." ], "bb39int": [ "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Pokonaj czas, a wytatuuję ci twarz jak moją." ], "bb39win": [ - "Good speed through the course, Jak!", - "That one looked too easy." + "Dobre tempo na trasie, Jak!", + "To wyglądało na zbyt łatwe." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "You were too slow on that course." + "Wygląda na to, że trafiłeś w dziesiątkę, Jak!", + "Byłeś za wolny na tym torze." ], "bb40int": [ "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "let's see if you can complete it in time." + "Ring Course. Sprawimy, że ten będzie nieco bardziej interesujący,", + "Zobaczmy, czy uda ci się ukończyć go na czas." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Łał! Nawet ja miałbym z tym problem, dobra robota!" ], "bf001": [ - "My shield is impervious to your attacks!" + "Moja tarcza jest odporna na twoje ataki!" ], "bf002": [ - "You cannot hurt me!" + "Nie możesz mnie zranić!" ], "bf003": [ - "Fool! Nothing can touch me!" + "Głupiec! Nic nie może mnie tknąć!" ], "bf004": [ - "You're powerless!" + "Jesteś bezradny!" ], "bf005": [ - "There is nothing you can do!" + "Nic nie możesz zrobić!" ], "bf006": [ - "HAHAHAHAHAHA!" + "HAHAHAHAHAHAHA!" ], "bf007": [ "HAHAHAHA!" ], "bf008": [ - "Come get me!" + "Chodź dorwać mnie!" ], "bf009": [ - "Come closer!" + "Podejdź bliżej!" ], "bf010": [ - "Try me now!" + "Spróbuj teraz!" ], "bf011": [ - "Let's make this personal!" + "Niech to będzie coś osobistego!" ], "bf012": [ - "Surprise!" + "Niespodzianka!" ], "bf013": [ - "Don't fall!" + "Nie spadnij!" ], "bf014": [ - "I will crush you!" + "Zmiażdżę Cię!" ], "bf015": [ - "Take this!" + "Żryj to!" ], "bf016": [ - "Here I come!" + "Już nadchodzą!" ], "bf017": [ - "Why won't you die?!" + "Zginiesz wreszcie?!" ], "bf018": [ - "Your Dark Eco powers surprise me!" + "Twoja moc mrocznego Eko mnie zaskakuje!" ], "bf019": [ - "Your arrogance will be your downfall!" + "Twoja arogancja będzie twoim upadkiem!" ], "bf020": [ - "The Stone is mine!" + "Kamień jest mój!" ], "bf021": [ - "Give me the Stone!" + "Oddaj mi Kamień!" ], "bf022": [ - "Release it!" + "Zwolnij!" ], "bf023": [ - "I want the Stone!" + "Chcę ten Kamień!" ], "bf024": [ - "Argh, let go!" + "Argh, niech pójdzie!" ], "bf025": [ - "It's mine!" + "Jest mój!" ], "bf026": [ - "Try these on for size!" + "Wypróbuj je na własnej skórze!" ], "bf027": [ - "Here's a little present!" + "A oto mały prezent!" ], "bf028": [ - "Want some more?" + "Chcesz jeszcze więcej?" ], "bf029": [ - "I grow tired of this, now you die!" + "Jestem już tym zmęczony, teraz zginiesz!" ], "bf030": [ - "You cannot run away from these!" + "Nie można przed nimi uciec!" ], "bf031": [ - "Allow me to share the pain!" + "Pozwól mi podzielić się bólem!" ], "bf032": [ - "Now you're mine!" + "Teraz jesteś mój!" ], "bf033": [ - "Here's some hell!" + "Oto trochę piekła!" ], "bf034": [ - "Say good night!" + "Powiedz dobranoc!" ], "bf035": [ - "Enjoy your next life!" + "Ciesz się swoim następnym życiem!" ], "bf036": [ - "It's over!" + "To koniec!" ], "bf037": [ - "Burn in hell!" + "Płoń w piekle!" ], "bf038": [ - "The Stone is mine! Let me show you what it can do!" + "Kamień jest mój! Pokażę ci, co potrafi!" ], "bf039": [ - "Now you see the Stone's power in capable hands!" + "Teraz widzisz siłę Kamienia w dłoni!" ], "bf040": [ - "How's that for power?" + "Jak to się ma do władzy?" ], "bf041": [ - "Now you see!" + "Teraz widzisz!" ], "bf042": [ - "I am invincible now!" + "Jestem teraz nieśmiertelny!" ], "bf043": [ - "You cannot run forever!" + "Nie możesz wiecznie uciekać, Jak!" ], "bf044": [ - "I have all the power I need!" + "Mam tyle mocy, ile potrzebuję!" ], "bf045": [ - "You can't avoid this!" + "Nie możesz tego uniknąć!" ], "bf046": [ - "Here's a little something special!" + "Oto małe co nieco!" ], "bf047": [ - "Come to me!" + "Chodź do mnie!" ], "bf048": [ - "Come here!" + "Chodź tutaj!" ], "bf049": [ - "Let's get closer!" + "Podejdźmy bliżej!" ], "bf050": [ - "Nothing can save you now!" + "Nic cię teraz nie uratuje!" ], "bf051": [ - "You're history!" + "To już historia!" ], "bf052": [ - "I am the city's savior, not you!" + "Ja jestem zbawcą miasta, nie ty!" ], "bf053": [ - "Die!" + "Giń!" ], "bf054": [ - "It's over!" + "To koniec!" ], "bf055": [ - "I've got you!" + "Mam Cię!" ], "bf056": [ - "Now you die!" + "Teraz umrzesz!" ], "bf057": [ - "NOOOOOO!" + "NIEEEEEE!" ], "bf058": [ - "No!" + "Nie!" ], "bf059": [ - "NO!" + "NIE!" ], "bf060": [ "Uorghh!" @@ -1213,25 +1213,25 @@ "Raghh!" ], "bf064": [ - "We finish this now!" + "Skończmy to teraz!" ], "bf065": [ - "Eat this!" + "Żryj to!" ], "bf066": [ - "Stop!" + "Stój!" ], "bf067": [ "You idiot, you're no match for me!" ], "bf068": [ - "Why don't you die!?" + "Zginiesz wreszcie!?" ], "bf069": [ "Give up and I'll make it painless!" ], "bf070": [ - "You cannot win!" + "Nie możesz wygrać!" ], "bf071": [ "Aha!" @@ -1249,25 +1249,25 @@ "You can do better than that!" ], "bf076": [ - "You're mine!" + "Jesteś mój!" ], "bf077": [ - "Why won't you die!?" + "Zginiesz wreszcie!?" ], "bf078": [ - "I have the ultimate power!" + "Mam ostateczną moc!" ], "bf079": [ - "Die!" + "Giń!" ], "bf080": [ - "Is that your best shot?" + "To najlepsze, na co Cię stać?" ], "bf081": [ - "Now you die!" + "Teraz umrzesz!" ], "bf082": [ - "Get off my tower!" + "Złaź z mojej wieży!" ], "bf083": [ "We'll see about that!" @@ -1276,19 +1276,19 @@ "You really think you have a chance?" ], "bf085": [ - "Fear me!" + "Bój się mnie!" ], "bf086": [ - "You're nothing!" + "Jesteś nikim!" ], "bf087": [ - "My shield is now recharged!" + "Moja tarcza się ładuje!" ], "bf088": [ "Try these on for size!" ], "bf089": [ - "I should have killed you long ago!" + "Powinienem był cię zabić dawno temu!" ], "bf090": [ "Never a dull moment, eh?" @@ -1303,16 +1303,16 @@ "You're both going to die by my hand!" ], "bf094": [ - "Come closer!" + "Podejdź bliżej!" ], "bf095": [ "To the end!" ], "bf096": [ - "You cannot win!" + "Nie możesz wygrać!" ], "bf097": [ - "Come here!" + "Chodź tutaj!" ], "bf098": [ "ARGHHH!" @@ -1327,61 +1327,61 @@ "Oof!" ], "bf102": [ - "Noooo!" + "Nieeee!" ], "bf103": [ - "No!" + "Nie!" ], "bf104": [ - "Not again!" + "No nie, znowu!" ], "bf105": [ "It can't be!" ], "bf106": [ - "Not this time!" + "Nie tym razem!" ], "bf107": [ - "Stop!" + "Stój!" ], "bf108": [ - "Damn!" + "Cholera!" ], "bf109": [ - "Why, you little...!" + "Dlaczego...!" ], "bf110": [ - "Now you've made me angry!" + "Teraz sprawiłeś, że mnie zezłościłeś!" ], "bf111": [ "Impressive, but let's try that again!" ], "bf112": [ - "The stronger man always wins!" + "Silniejszy zawsze zwycieża!" ], "bf113": [ - "Your loss was inevitable, Jak!" + "Twoja porażka jest nieunikniona, Jak!" ], "bf114": [ - "You could never be a baron!" + "Nigdy nie mógłbyś być baronem!" ], "bf115": [ - "I knew you were weak!" + "Wiedziałem, że byłeś słaby!" ], "bf116": [ - "Hm, I expected more from you!" + "Ha, oczekiwałem od ciebie więcej!" ], "bf117": [ - "Losing is for the weak!" + "Porażka jest dla słabych!" ], "bf118": [ - "How pathetic!" + "Jakie żałosne!" ], "bf119": [ - "That was too easy!" + "To było zbyt proste!" ], "bf120": [ - "Sorry, old boy, it's just war!" + "Przepraszam, stary chłopcze, to tylko wojna!" ], "bf121": [ "Too bad you don't have what it takes!" @@ -1390,118 +1390,118 @@ "The better man won!" ], "bf123": [ - "We're similar, Jak... oh, except you're dead!" + "Jesteśmy podobni, Jak... oh, poza tym, że jesteś martwy!" ], "bf124": [ - "Feel the fury of the Precursor Stone!" + "Poczuj furię Kamienia Prekursorów!" ], "bf125": [ - "With the Stone's power, I am invincible!" + "Dzięki mocy Kamienia, jestem niepokonany!" ], "bf126": [ "All will fear me now!" ], "bf127": [ - "Time to die!" + "Czas umierać!" ], "bf128": [ "My little friends will take care of you!" ], "bf129": [ - "You can't run forever, Jak!" + "Nie możesz wiecznie uciekać, Jak!" ], "bf130": [ "Now I've got you!" ], "bf131": [ - "Surprise!" + "Niespodzianka!" ], "bf132": [ - "I have better things to do than waste my time with you!" + "Mam lepsze rzeczy do zrobienia niż marnotrawienie czasu z tobą!" ], "bf133": [ - "You are nothing!" + "Jesteś niczym!" ], "bf134": [ - "Annoying insect, die!" + "Irytujący owad, zdychaj!" ], "bf135": [ - "Not bad, but let me show you what real power is!" + "Nieźle, ale pokażę ci, czym jest prawdziwa moc!" ], "bf136": [ - "Feel this!" + "Poczuj to!" ], "bru001": [ - "Great smelly breath of a goosesnake!", - "Heroes to Lurker people you be!", - "By now just see much happy thanks! Ruhuhuh.", - "You honorary members of Lurker tribe now.", - "We no forget - if ever you need us, we help you!" + "Wspaniały śmierdzący oddech węża!", + "Bohaterami dla Lurkerów jesteście!", + "Do tej pory widzę tylko wiele szczęśliwych podziękowań! Ruhuhuh.", + "Jesteście teraz honorowymi członkami plemienia Lurker.", + "Nie zapominamy - jeśli kiedykolwiek będziesz nas potrzebować, pomożemy Ci!" ], "bru002": [ - "I hears you two look for a piece of Mar's shiny Seal.", - "Brutter loves shiny bright things too.", - "I have piece I thinks. It in Water Slums,", - "hanging over me hut and you free to have.", - "Gift from Brutter!" + "Słyszałem, jak szukaliście kawałka błyszczącej pieczęci Mar.", + "Brutter również uwielbia błyszczące, jasne rzeczy.", + "Mam kawałek, który myślę. Znajduje się w Water Slums,", + "wiszące nad moją chatą i możesz je mieć za darmo.", + "Prezent od Bruttera!" ], "bru004": [ - "You two good! No better warrior in all Lurker tribes!", - "You keep Seal. You love shiny things just like Brutter." + "Jesteście dobrzy! Nie ma lepszego wojownika we wszystkich plemionach Lurkerów!", + "Trzymasz pieczęć. Uwielbiasz błyszczące rzeczy, tak jak Brutter." ], "cit001": [ - "Hey!" + "Hej!" ], "cit004": [ - "Watch it!" + "Uważaj!" ], "cit008": [ - "No!" + "Nie!" ], "cit010": [ "Argh!" ], "cit016": [ - "Stay away!" + "Trzymaj się z dala!" ], "cit033": [ - "Hey!" + "Hej!" ], "cit034": [ - "Look out!" + "Uważaj!" ], "cit035": [ - "Watch out!" + "Uważaj!" ], "cit046": [ - "Go away!" + "Odejdź!" ], "cit047": [ - "Leave me alone!" + "Zostaw mnie w spokoju!" ], "cit051": [ - "Are you crazy?" + "Oszalałeś?" ], "cit053": [ - "Are you insane?!" + "Czyś ty oszalał?!" ], "cit055": [ - "Hey, that's my vehicle!" + "Hej, to mój pojazd!" ], "cit056": [ - "Gimme back my vehicle!" + "Oddawaj mój pojazd!" ], "cit057": [ - "What are you doing?" + "Co ty wyprawiasz?" ], "cit058": [ - "Please, don't take it!" + "Proszę, nie zabieraj tego!" ], "cit097": [ "Ugh!" ], "cit097a": [ - "Aahh!" + "Aah!" ], "cit097b": [ "Aaghhh!" @@ -1528,82 +1528,82 @@ "Ahh!" ], "cit099": [ - "No!" + "Nie!" ], "cit099a": [ - "Noooo!" + "Nieeee!" ], "cit099b": [ - "No!" + "Nie!" ], "cit099c": [ - "No!" + "Nie!" ], "cit099d": [ - "Nooo!" + "Nieee!" ], "cit100": [ - "Please!" + "Proszę!" ], "cit100a": [ - "Please!" + "Proszę!" ], "cit100b": [ - "Please!" + "Proszę!" ], "cit100c": [ - "Please!" + "Proszę!" ], "cit101": [ - "Stop!" + "Stój!" ], "cit101a": [ - "Stop!" + "Stój!" ], "cit101b": [ - "Stop!" + "Stój!" ], "cit101c": [ - "Stop!" + "Stój!" ], "cit103": [ - "Sound the alarm!" + "Włączyć alarm!" ], "cit103a": [ - "Sound the alarm!" + "Włączyć alarm!" ], "cit104": [ - "Guards!" + "Straż!" ], "cit104a": [ - "Guards! Help us!" + "Straż! Pomóż nam!" ], "cit105": [ - "Help us!" + "Pomóżcie nam!" ], "cit120": [ - "Keep away from me!" + "Trzymaj się z dala ode mnie!" ], "cit120a": [ - "Keep away from me!" + "Trzymaj się z dala ode mnie!" ], "cit137a": [ - "Wait!" + "Zaczekaj!" ], "cityv001": [ - "Leaving city safe zone." + "Opuszczasz bezpieczną miejską strefę." ], "cityv002": [ - "Leaving city at your own risk." + "Opuszczanie miasta na własne ryzyko." ], "cityv003": [ - "Exiting city." + "Opuszczasz miasto." ], "cityv004": [ - "Opening outer shield." + "Otwieranie osłony zewnętrznej." ], "cityv005": [ - "Decontamination complete." + "Dekontaminacja zakończona." ], "cityv006": [ "Entering Haven City." @@ -1612,109 +1612,109 @@ "Re-entering city." ], "cityv008": [ - "Welcome back." + "Witaj z powrotem." ], "cityv009": [ - "It's good to see you still alive." + "Dobrze, że wciąż żyjesz." ], "cityv010": [ - "Security clearance granted." + "Przyznano poświadczenie bezpieczeństwa." ], "cityv011": [ - "Entrance denied. You do not have proper clearance." + "Odmowa wstępu. Nie masz odpowiednich uprawnień." ], "cityv012": [ - "I am unable to comply." + "Nie jestem w stanie tego zrobić." ], "cityv013": [ - "Please come back with proper clearance." + "Prosimy o powrót z odpowiednim zezwoleniem." ], "cityv014": [ - "Access denied." + "Odmowa dostępu." ], "cityv015": [ - "You need Red Clearance for this gate." + "Potrzebujesz Czerwonej Przepustki do tej bramy." ], "cityv016": [ - "You need Green Clearance for this gate." + "Potrzebujesz Zielonej Przepustki do tej bramy." ], "cityv017": [ - "You need Yellow Clearance for this gate." + "Potrzebujesz Żółtej Przepustki do tej bramy." ], "cityv018": [ - "You need Blue Clearance for this gate." + "Potrzebujesz Niebieskiej Przepustki do tej bramy." ], "cityv019": [ - "You need Purple Clearance for this gate." + "Potrzebujesz Fioletowej Przepustki do tej bramy." ], "cityv020": [ - "You need special Black Clearance for this door." + "Potrzebujesz specjalnej Czarnej Przepustki do tej bramy." ], "cityv021": [ - "Access granted." + "Przyznano dostęp." ], "cityv022": [ - "Door open." + "Drzwi otwarte." ], "cityv023": [ - "Door closed." + "Drzwi zamknięte." ], "cityv024": [ - "Please enter." + "Proszę wejść." ], "cityv025": [ "Warp Gate online." ], "cityv026": [ - "Warning: Eco supplies low." + "Ostrzeżenie: Niski poziom zapasów Eko." ], "cityv027": [ - "Backup systems failing." + "Awaria systemów kopii zapasowych." ], "cityv028": [ - "Warning: Eco storage is below safe minimums." + "Ostrzeżenie: Magazyn Eko jest poniżej bezpiecznego minimum." ], "cityv029": [ "Eco Grid unstable." ], "cityv030": [ - "Metal Heads detected at Mining Site." + "Wykryto MetalHeads w kopalni." ], "cityv031": [ - "Metal Heads detected at Drilling Site." + "MetalHeads wykryte w miejscu wiercenia." ], "cityv032": [ - "Stand by for clearance." + "Przygotuj się na odprawę." ], "cityv033": [ - "Have a nice day." + "Miłego dnia." ], "cityv034": [ - "Welcome." + "Witaj" ], "cityv035": [ - "This is a restricted area." + "Jest to strefa zamknięta." ], "cityv036": [ - "You are in violation of Speed Ordinance 51d, pull over." + "Naruszasz przepisy dotyczące prędkości 51d, zatrzymaj się." ], "cityv037": [ - "I have alerted the authorities." + "Zaalarmowałem władze." ], "cityv038": [ - "This sector is closed." + "Ten sektor jest zamknięty." ], "cityv039": [ - "Alert: Prison escape in progress." + "Alert: Trwa ucieczka z więzienia." ], "cityv040": [ - "Alert: City under attack." + "Ostrzeżenie: Atakowane Miasto." ], "cityv041": [ - "Metal Head attack in progress." + "Trwa atak Metal Headów." ], "cityv042": [ - "All citizens go to safe shelters." + "Wszyscy obywatele udają się do bezpiecznych schronów." ], "cityv043": [ "Eco Grid growing unstable." @@ -1723,7 +1723,7 @@ "The Eco Grid is down. Repeat: The Eco Grid is down." ], "cityv045": [ - "Red alert: City shield wall compromised." + "Czerwony alarm: Mur ochronny miasta naruszony." ], "cityv046": [ "Unauthorized movement in sewer system." @@ -1738,168 +1738,168 @@ "I regret use of force. Systems arming." ], "cityv050": [ - "Trespasser neutralized." + "Intruz zneutralizowany." ], "cityv051": [ - "Suspect destroyed." + "Podejrzany zniszczony." ], "cityv052": [ "I am authorized to use force." ], "cityv053": [ - "General alert: Riot in progress. Krimzon Guards en route." + "Alert ogólny: Trwa zamieszanie. Krimzon Strażnicy na drodze." ], "cityv054": [ - "Surrender yourself. You are under arrest." + "Poddaj się. Jesteś aresztowany." ], "cityv055": [ - "There is no escape." + "Nie ma ucieczki." ], "cityv056": [ - "You are in a restricted sector. This sector is on high alert." + "Znajdujesz się w sektorze o ograniczonym dostępie. Ten sektor jest w stanie wysokiej gotowości." ], "cityv057": [ - "You are under arrest. Surrender yourself." + "Jesteś aresztowany. Poddaj się." ], "cityv058": [ - "This sector is off limits." + "Ten sektor jest niedostępny." ], "cityv061": [ - "All systems back online and in the green." + "Wszystkie systemy są z powrotem online i na zielono." ], "cityv062": [ - "The race is about to begin." + "Wyścig wkrótce się rozpocznie." ], "cityv063": [ - "Welcome to the city transportation system." + "Witamy w systemie transportu miejskiego." ], "cityv064": [ - "You can thrust in your vehicle at any time." + "W każdej chwili możesz wepchnąć się do pojazdu." ], "cityv065": [ - "Braking will assist in vehicle control." + "Hamowanie wspomaga kontrolę nad pojazdem." ], "cityv067": [ - "Backing up is easy." + "Tworzenie kopii zapasowych jest łatwe." ], "cityv068": [ - "You can hover in one of two zones: low and high." + "Możesz zawisnąć w jednej z dwóch stref: niskiej i wysokiej." ], "cityv069": [ "Try switching hover zones." ], "cityv070": [ - "Switching hover zones may help avoid traffic or", - "ground obstacles." + "Przełączanie stref zawisu może pomóc uniknąć ruchu lub", + "przeszkody naziemne." ], "cityv075": [ - "Alert: Vehicle destruction imminent." + "Alert: Zbliża się zniszczenie pojazdu." ], "cityv076": [ - "Please drive more carefully next time." + "Następnym razem jedź ostrożniej." ], "cityv077": [ - "Thank you for using the vehicle." + "Dziękujemy za korzystanie z pojazdu." ], "cityv078": [ - "Have a nice day." + "Miłego dnia." ], "cityv079": [ - "Warning: Missile cooling systems damaged." + "Ostrzeżenie: Systemy chłodzenia pocisków uszkodzone." ], "cityv080": [ - "Alert: Backup cooling system failure.", - "Emergency overrides initiated." + "Alert: Awaria zapasowego systemu chłodzenia.", + "Rozpoczęto zastępowanie awaryjne." ], "cityv081": [ - "Missile systems at critical overload.", - "Failsafe not responding." + "Systemy rakietowe w stanie krytycznego przeciążenia.", + "Zabezpieczenie przed awarią nie odpowiada." ], "cityv082": [ - "Danger: Warhead detonation imminent.", - "Evacuate immediately." + "Niebezpieczeństwo: Zbliża się detonacja głowicy.", + "Natychmiastowa ewakuacja." ], "cityv087": [ - "Arriving at Throne Room floor." + "Przybycie na piętro Sali Tronowej." ], "cityv088": [ - "Arriving at ground floor." + "Przybycie na parter." ], "cityv093": [ - "You have been sentenced to termination." + "Zostałeś skazany na rozwiązanie umowy." ], "cityv094": [ - "This area is restricted.", - "Initiating termination with extreme prejudice." + "Ten obszar jest ograniczony.", + "Inicjowanie rozwiązania umowy z najwyższym uprzedzeniem." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Obszar ten jest otwarty tylko dla personelu strażników Krimzon." ], "cityv096": [ - "The city is on high alert." + "Miasto jest w stanie wysokiej gotowości." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "Miasto jest atakowane.", + "Wszyscy obywatele udają się do bezpiecznych schronów." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "Miasto jest atakowane. Prosimy o pozostanie w domach." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "Agresorzy Metal Head infiltrują system." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Gratulujemy otrzymania przepustki bezpieczeństwa." ], "cityv107": [ - "Unauthorized use of Fortress door.", - "Activating security tank." + "Nieautoryzowane użycie drzwi Fortecy.", + "Aktywacja zbiornika bezpieczeństwa." ], "cityv108": [ - "Gunpod weapons coming online." + "Broń w kapsule pistoletowej będzie dostępna online." ], "cityv109": [ - "Weapons overheating." + "Przegrzanie broni." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "Broń nie działa. Poczekaj na schłodzenie." ], "cityv111": [ - "Weapons back online." + "Broń z powrotem w sieci." ], "cityv112": [ - "The gunpod has taken severe damage." + "Działo zostało poważnie uszkodzone." ], "cityv130": [ - "The city map is displayed in the lower right." + "Mapa miasta jest wyświetlana w prawym dolnym rogu" ], "cityv132": [ - "Follow the icons on the map", - "to reach important destinations." + "Podążaj za ikonami na mapie", + "aby dotrzeć do ważnych miejsc docelowych." ], "cityv134": [ "Intruder alert." ], "cityv135": [ - "Stand by." + "Stań obok." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Doświadczam przeciążenia obwodu.", + "Włącz moje przełączniki obejściowe w określonym czasie", + "a zostaniesz nagrodzony." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "Nie udało ci się włączyć sieci obejściowej na czas.", + "Moje obwody strefy C zostały przeciążone." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "Pomyślnie włączono obejście", + "dla moich obwodów w czasie.", + "Oto nagroda." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", + "potrzebuję zasilania awaryjnego dla moich konwerterów Eko.", + "Szybkie włączanie wszystkich dostępnych obwodów", "to stabilize the Eco Grid." ], "cityv150": [ @@ -1921,7 +1921,7 @@ ], "cityv154": [ "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "Miasto jest Ci wdzięczne." ], "cityv155": [ "Sensors indicate a cluster of Blue Eco in the city.", @@ -1933,7 +1933,7 @@ ], "cityv157": [ "You successfully retrieved the eco.", - "Here is your reward." + "Oto twoja nagroda." ], "cityv158": [ "Emergency response needed.", @@ -1962,17 +1962,17 @@ "Make it here in the time allotted and a reward is yours." ], "cityv165": [ - "Find this spot for a prize." + "Znajdź to miejsce, aby otrzymać nagrodę." ], "cityv166": [ - "Get to this spot for a prize." + "Udaj się do tego miejsca, aby otrzymać nagrodę." ], "cityv167": [ "Metal Heads have been detected in the gun course.", "Neutralize them all immediately." ], "cityv168": [ - "You did not kill them all." + "Nie zabiłeś ich wszystkich." ], "cityv169": [ "Excellent shooting. Threat eliminated." @@ -1991,31 +1991,31 @@ ], "cityv174": [ "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Proszę wybrać wyzwanie." ], "cityv175": [ - "Attention, all citizens:", - "The Class 1 Race is about to begin." + "Uwaga, wszyscy obywatele:", + "Wyścig klasy 1 wkrótce się rozpocznie." ], "cityv176": [ - "Attention, all citizens:", - "The Class 2 Race is about to begin." + "Uwaga, wszyscy obywatele:", + "Wyścig klasy 2 wkrótce się rozpocznie." ], "cityv177": [ - "Attention, all citizens:", - "The Class 3 Race is about to begin." + "Uwaga, wszyscy obywatele:", + "Wyścig klasy 3 wkrótce się rozpocznie." ], "cityv178": [ "Care to try for the course record?" ], "cityv179": [ - "Congratulations, you achieved the gold record." + "Gratulacje, udało Ci się osiągnąć złoty rekord." ], "cityv180": [ - "Congratulations, you achieved the silver record." + "Gratulacje, udało Ci się osiągnąć srebrny rekord." ], "cityv181": [ - "Congratulations, you achieved the bronze record." + "Gratulacje, udało Ci się osiągnąć brązowy rekord." ], "cityv182": [ "Care to try for a high score record?" @@ -2024,13 +2024,13 @@ "Would you like to try for a high score?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Witamy w Wyścigowych Próbach Czasowych." ], "cityv185": [ "Would you like to race for a record time?" ], "cityv186": [ - "Choose your course." + "Wybierz swój tor." ], "cityv187": [ "Would you like to try for a course record?" @@ -2039,16 +2039,16 @@ "Would you like to use Orbs to buy a secret?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "Nie masz wystarczającej ilości Kul dla tego sekretu." ], "cityv190": [ - "Secret activated." + "Sekret aktywowany." ], "cityv191": [ - "All secrets are activated." + "Wszystkie sekrety są aktywowane." ], "cityv192": [ - "Please exit the Titan Suit." + "Proszę opuścić Strój Tytana." ], "cityv193": [ "You must exit the Titan Suit." @@ -2066,7 +2066,7 @@ "Scanners show Metal Head eggs still active." ], "daxm001": [ - "Shoot the platform, Jak." + "Strzelaj w platformę, Jak." ], "daxm002": [ "We need something to get through that gate!" @@ -2096,30 +2096,30 @@ "Rock 'n roll!" ], "ds001": [ - "We gotta find the Baron, Jak." + "Musimy znaleźć Barona, Jak." ], "ds005": [ "Jak, those are Metal Heads!" ], "ds006": [ - "Finally, now we get to see the Shadow!", + "Wreszcie, teraz możemy spotkać się z Cieniem!", "What do ya gotta do around this place to get noticed?" ], "ds012": [ - "That must be the Ruby Key to the city." + "To musi być Rubinowy Klucz do miasta." ], "ds013": [ - "Statues are becoming an endangered species around here." + "Posągi zaczynają tu być zagrożonym gatunkiem." ], "ds014": [ - "So this is Mar's scary tomb, eh?", - "Doesn't look so bad." + "Więc to jest ten straszny grobowiec Mara?", + "Nie wygląda tak źle." ], "ds016": [ - "Let's bring the money back to Krew." + "Wróćmy z pieniędzmi do Krew." ], "ds017": [ - "That must be the ammo and missile Torn told us to blow up!" + "To musi być amunicja i rakieta które Torn kazał nam wysadzić!" ], "ds018": [ "Get the tank to shoot the missile!" @@ -2143,19 +2143,19 @@ "Yeah!" ], "ds028": [ - "Oh yeah!" + "O tak!" ], "ds029": [ - "Let's go back to the city." + "Wracajmy do miasta." ], "ds030": [ - "I think we need to go back to the city, Jak." + "Myślę, że musimy wrócić do miasta, Jak." ], "ds031": [ - "Let's go talk to Torn." + "Chodźmy porozmawiać z Tornem." ], "ds032": [ - "Let's go back to the Underground Hideout." + "Wracajmy do Kryjówki Podziemia." ], "ds043": [ "You can get a longer jump by rolling into it." @@ -2191,31 +2191,31 @@ "Hey, big guy, keep close, huh?" ], "ds053": [ - "We're too far away from Sig." + "Jesteśmy zbyt daleko od Siga." ], "ds054": [ - "Stick with the plan, Jak, protect Sig!" + "Trzymaj się planu, Jak, chroń Siga!" ], "ds055": [ - "Uh oh, where's Sig?" + "O oł, gdzie jest Sig?" ], "ds056": [ - "Wow, what a blast!" + "Wow, co za wybuch!" ], "ds057": [ "Sig's a good shot." ], "ds058": [ - "Go help Sig!" + "Idź pomóc Sigowi!" ], "ds059": [ "Nice shootin', Sig!" ], "ds060": [ - "You're my hero!" + "Jesteś moim bohaterem!" ], "ds061": [ - "Uh oh, Sig's in trouble!" + "O oł, Sig ma kłopoty!" ], "ds062": [ "There's another Metal Head going after our boy!", @@ -2231,7 +2231,7 @@ "Shoot 'em, shoot 'em!" ], "ds066": [ - "Sig dies, we die." + "Sig zginie, to i my zginiemy." ], "ds067": [ "Oof, we suck..." @@ -2264,7 +2264,7 @@ "You've got a mechanical fist, Jak. Use it!" ], "ds113": [ - "Break the door!" + "Zniszcz drzwi!" ], "ds114": [ "800 pound Tigorilla comin' through!" @@ -2282,7 +2282,7 @@ "Shoot the Metal Head when he moves his shield." ], "ds119": [ - "Hit him in his stomach." + "Traf go w brzuch." ], "ds120": [ "Whoa, that path dropped like a... a rock!" @@ -2303,22 +2303,22 @@ "Save 'em, Jak!" ], "ds145": [ - "Don't like this, Jak..." + "Nie podoba mi się to, Jak..." ], "ds146": [ - "Behind us, Jak!" + "Za nam, Jak!" ], "ds147": [ - "Metal Heads! Everywhere!" + "Metalowe Łby! Są wszędzie!" ], "ds148": [ - "Protect us, Jak! But first me." + "Ochroń nas, Jak! Ale najpierw mnie." ], "ds150": [ "Take a vehicle, Jak! It's faster." ], "ds151": [ - "Use your JET-Board!" + "Użyj swojej odrzutowej deski!" ], "ds152": [ "We got company, Jak! Lots of guards!" @@ -2343,8 +2343,8 @@ "Back up to get out of the mech." ], "ds165": [ - "We're free, Jak! Thanks to me.", - "Nice to breathe some fresh air, huh?", + "Jesteśmy wolni, Jak! Dzięki mnie.", + "Miło odetchnąć świeżym powietrzem, co?", "We'll get that Baron Praxis guy, alright!" ], "ds166": [ @@ -2368,7 +2368,7 @@ "Whoa-whoa-oaa-ah!" ], "ds176": [ - "Whoa!" + "Łoł!" ], "ds177": [ "Hey!" @@ -2386,22 +2386,22 @@ "Uooaaoh!" ], "ds182": [ - "Wow, that was close!" + "Wow, było blisko!" ], "ds183": [ - "Oh, boy!" + "O, stary!" ], "ds184": [ - "Yes!" + "Tak!" ], "ds185": [ - "Yeah!" + "Tak jest!" ], "ds186": [ - "Hey, watch it!" + "Hej, uważaj!" ], "ds187": [ - "All right!" + "W porządku!" ], "ds188": [ "Move over!" @@ -2413,13 +2413,13 @@ "Rollin' with the homies!" ], "ds191": [ - "You're mine!" + "Jesteś mój!" ], "ds192": [ "There they are!" ], "ds193": [ - "Hey! Watch where you're drivin'!" + "Hej! Patrz gdzie jedziesz!" ], "ds194": [ "How do I drive this thing?" @@ -2428,19 +2428,19 @@ "Yeah, that's right! I'm bad!" ], "ds196": [ - "Outta my way!" + "Z drogi!" ], "ds197": [ - "Outta my way!" + "Z drogi!" ], "ds198": [ - "Move it or lose it, buddy!" + "Rusz się lub przegrywaj, stary!" ], "ds199": [ "Mm... bye-bye!" ], "ds200": [ - "Last lap!" + "Ostatnie okrążenie!" ], "ds201": [ "Come on, come on!" @@ -2449,7 +2449,7 @@ "Come on, come on, come on!" ], "ds203": [ - "Pedal to the metal!" + "Gaz do dechy!" ], "ds204": [ "Ooooah, I gotta catch up!" @@ -2603,13 +2603,13 @@ "Yeah, we got him!" ], "ds254": [ - "Jak, hide behind the pillars when he shoots!" + "Jak, ukryj się za filarami, gdy strzela!" ], "ds255": [ - "He's got the Precursor Stone!" + "On ma Kamień Prekursora!" ], "ds256": [ - "Kick the bomb right at him, Jak!" + "Kopnij bombę w jego kierunku, Jak!" ], "ds257": [ "That one hit him!" @@ -2657,13 +2657,13 @@ "Wooh, here come some Metal Heads!" ], "ds272": [ - "Protect the kid!" + "Chroń dzieciaka!" ], "ds273": [ - "Kill all the Metal Heads!" + "Zabij wszystkie Metalowe Łby!" ], "ds274": [ - "More Metal Heads!" + "Więcej Metalowych Łbów!" ], "ds275": [ "Shoot Kor's legs out, Jak!" @@ -2708,7 +2708,7 @@ "Jak, we're taking a beating!" ], "ds289": [ - "Stay away from the Dark Eco!" + "Trzymaj się z dala od Mrocznego Eco!" ], "ds302": [ "We've almost got him, Jak!" @@ -2730,7 +2730,7 @@ "Take out the turrets!" ], "ds322": [ - "Hit the turrets, Jak!" + "Strzelaj w działka, Jak!" ], "ds323": [ "Doin' some damage!" @@ -2842,7 +2842,7 @@ "30 seconds left, then we go BOOM!" ], "ds471": [ - "Ten seconds left, Jak!" + "Zostało dziesięć sekund, Jak!" ], "ds472": [ "That's one well down, five to go!" @@ -2960,7 +2960,7 @@ "Uh oh, here comes trouble!" ], "dsek006": [ - "More guards!?" + "Więcej strażników!?" ], "dsek007": [ "Kid, please! You're killin' me!" @@ -2978,7 +2978,7 @@ "Keep up with the Kid!" ], "dsek012": [ - "Crocadog!" + "Krokopies!" ], "dsek013": [ "Phew, finally... let's get these two to Kor!" @@ -2993,7 +2993,7 @@ "Give it up, eco freak!" ], "ero004": [ - "Payback time." + "Czas zemsty." ], "ero005": [ "Let's make this interesting!" @@ -3002,16 +3002,16 @@ "Eat wall!" ], "ero007": [ - "Time to die!" + "Pora umierać!" ], "ero008": [ "Move over!" ], "ero009": [ - "Catch me now, loser!" + "Złap mnie teraz, frajerze!" ], "ero010": [ - "I'm too fast for you!" + "Jestem dla Ciebie zbyt szybki!" ], "ero011": [ "Now you're racing with the big boys!" @@ -3059,16 +3059,16 @@ "Avoid this, smart-ass!" ], "ero026": [ - "Say goodnight, eco freak!" + "Powiedz dobranoc, eco świrze!" ], "ero027": [ - "You can't beat me!" + "Nie możesz mnie pokonać!" ], "ero028": [ "I'd die before I let you win!" ], "ero029": [ - "This will be your last lap." + "To będzie twoje ostatnie okrążenie." ], "ero030": [ "Crash and burn!" @@ -3086,10 +3086,10 @@ "You won't see the finish line!" ], "ero035": [ - "DIE!" + "GIŃ!" ], "ero036": [ - "Die!" + "Giń!" ], "ero037": [ "Hahahaha!" @@ -3104,7 +3104,7 @@ "NO!" ], "ero041": [ - "NOOOOO!" + "NIEEEEE!" ], "ero042": [ "AHHHHHH!" @@ -3113,28 +3113,28 @@ "Here we go." ], "ero044": [ - "See you later." + "Do zobaczenia później." ], "ero045": [ - "Fool! You cannot defeat me." + "Głupcze! Nie pokonasz mnie." ], "ero046": [ - "You missed a ring." + "Przegapiłeś pierścień." ], "ero047": [ - "This race is mine!" + "Ten wyścig jest mój!" ], "ero048": [ "You can never be as fast as me!" ], "ero049": [ - "Keira wants a real man." + "Keira pragnie prawdziwego mężczyzny." ], "ero050": [ "Bad luck, old chap." ], "ero051": [ - "Nice try." + "Niezła próba." ], "ero052": [ "Move over!" @@ -3146,7 +3146,7 @@ "Coming through!" ], "ero055": [ - "Bye bye!" + "Pa pa!" ], "ero056": [ "Here I come!" @@ -3155,7 +3155,7 @@ "Get used to watching my back!" ], "ero058": [ - "This is my city, eco freak." + "To jest moje miasto, eco świrze." ], "ero059": [ "Looking sloppy, Jak." @@ -3164,7 +3164,7 @@ "Give it up!" ], "ero061": [ - "Not this time." + "Nie tym razem." ], "ero062": [ "Getting a bit nervous?" @@ -3191,16 +3191,16 @@ "What? Where'd you come from?" ], "ero070": [ - "You're just lucky." + "Miałeś farta." ], "ero071": [ "You can't handle the speed!" ], "ero072": [ - "Die, freak." + "Giń, świrze." ], "ero073": [ - "No!" + "Nie!" ], "ero074": [ "STOP!" @@ -3227,7 +3227,7 @@ "Care to get back in the chair?" ], "ero082": [ - "This race was too easy." + "Ten wyścig był za prosty." ], "ero083": [ "It was easier than I thought to beat you." @@ -3482,7 +3482,7 @@ "You're pretty handy with that iron, blondie." ], "hal060": [ - "Shut up, Mog." + "Zamknij się, Mog." ], "hal061": [ "Here they come again!" @@ -3528,7 +3528,7 @@ "This one's gonna be loud!" ], "hal075": [ - "This is too easy." + "To jest zbyt proste." ], "hal080": [ "We ain't moving, 'til you kill 'em all!" @@ -3543,7 +3543,7 @@ "I'm impressed, Jak. I'll put in a good word with the boss." ], "hal084": [ - "Yeah, do it, Jinx." + "Tak, zrób to, Jinx." ], "hal085": [ "Man, Jinx, what'd you put in those boomsticks?" @@ -3552,7 +3552,7 @@ "Look at him go." ], "hal087": [ - "I could jump like that." + "Chciałbym tak skakać." ], "hal088": [ "Get away from me, you crazy monster!" @@ -3561,7 +3561,7 @@ "This is where I come in, cover your ears." ], "hal091": [ - "Fire in the hole!" + "Uwaga, granat!" ], "hal092": [ "And on we go." @@ -3594,7 +3594,7 @@ "You got an itchy trigger finger." ], "hal107": [ - "Piece of cake." + "Bułka z masłem." ], "hal108": [ "Get over here, Jak!" @@ -3621,10 +3621,10 @@ "Oh!" ], "hal117": [ - "Hey!" + "Hej!" ], "hal118": [ - "It's a trap!" + "To pułapka!" ], "hal119": [ "Yeah, why did we sign up for this?" @@ -3640,7 +3640,7 @@ "Uh, do we have to?" ], "hal123": [ - "Uhh, did you hear that?" + "Uhh, słyszeliście to?" ], "hal124": [ "We are so dead, man." @@ -3658,13 +3658,13 @@ "They're coming up from behind, too!" ], "hal129": [ - "Jak's my hero." + "Jak jest moim bohaterem." ], "hal130": [ "Sounds like I got gas." ], "hal131": [ - "I hate Krew." + "Nienawidzę Krew." ], "hal132": [ "I'm sure not going back that way!" @@ -3730,7 +3730,7 @@ "Gahh!! Not again!" ], "hal153": [ - "I'm dying!" + "Umieram!" ], "hal154": [ "Any more like that, then I'm history." @@ -3778,7 +3778,7 @@ "It's gonna shoot me!" ], "hal170": [ - "Jak! Do something!" + "Jaki! Zrób coś!" ], "hal171": [ "Ahh! It got me!" @@ -4030,16 +4030,16 @@ "Oooh, that's gotta hurt." ], "jak066": [ - "This is payback." + "Oto zemsta." ], "jak067": [ - "DIE, Praxis!" + "GIŃ, Praxis!" ], "jak068": [ - "You're finished, Kor!" + "Jesteś skończony, Kor!" ], "jak069": [ - "This is my town, Kor!" + "To jest moje miasto, Kor!" ], "jak070": [ "Surprise... you can't kill me in my dark form." @@ -4076,19 +4076,19 @@ ], "jd001": [ "Hey, kid! Wait! Come back!", - "We gotta protect him!" + "Musimy go ochronić!" ], "jk001": [ - "Wait, KID!" + "Poczekaj, MŁODY!" ], "jk002": [ "There he goes!" ], "jk003": [ - "Leave him alone!" + "Zostaw go w spokoju!" ], "jk004": [ - "KID!" + "MŁODY!" ], "jk005": [ "Pick on someone your own size!" @@ -4103,16 +4103,16 @@ "Leave the kid alone!" ], "jk009": [ - "He's just a kid!" + "To tylko dziecko!" ], "jk010": [ "Keep away from him!" ], "jk011": [ - "Now you've pissed me off!" + "Teraz mnie wkurzyłeś!" ], "jk012": [ - "Eat this!" + "Żryj to!" ], "jk013": [ "Back off!" @@ -4188,19 +4188,19 @@ "Try to put a number of moves together to get points." ], "kei019": [ - "Get enough points to win the challenge!" + "Zdobądź wystarczającą ilość punktów, by wygrać wyzwanie!" ], "kei020": [ - "Not enough points! Work on your moves." + "Za mało punktów! Popracuj nad swoimi kocimi ruchami." ], "kei021": [ - "Good job!" + "Dobra robota!" ], "kei022": [ "Close, but not quite there." ], "kei023": [ - "Try again." + "Spróbuj ponownie." ], "kei024": [ "A little more work and you just might win!" @@ -4239,10 +4239,10 @@ "Call for backup!" ], "kg002": [ - "Freeze!" + "Stać!" ], "kg002a": [ - "Freeze!" + "Stać!" ], "kg004": [ "Halt!" @@ -4257,10 +4257,10 @@ "Get more cruisers in here!" ], "kg006": [ - "Surrender!" + "Poddaj się!" ], "kg006a": [ - "Surrender!" + "Poddaj się!" ], "kg007": [ "This is a no-hover zone!" @@ -4281,19 +4281,19 @@ "Seal off the area." ], "kg011": [ - "Stop the vehicle!" + "Zatrzymaj pojazd!" ], "kg011a": [ - "Stop the vehicle!" + "Zatrzymaj pojazd!" ], "kg012": [ - "You're under arrest!" + "Jesteś aresztowany!" ], "kg012a": [ - "You're under arrest!" + "Jesteś aresztowany!" ], "kg013": [ - "You there!" + "Hej ty!" ], "kg014": [ "You want some?!" @@ -4449,10 +4449,10 @@ "Proceeding as planned." ], "kg044": [ - "I lost him." + "Zgubiłem go." ], "kg044a": [ - "I lost him." + "Zgubiłem go." ], "kg045": [ "Subject is not in sight." @@ -4461,10 +4461,10 @@ "Subject not in sight." ], "kg046": [ - "He's gone." + "Zniknął." ], "kg046a": [ - "He disappeared!" + "On zniknął!" ], "kg047": [ "Where'd he go?" @@ -4473,10 +4473,10 @@ "Where'd he go?" ], "kg048": [ - "Lost visual contact." + "Stracono kontakt wzrokowy." ], "kg048a": [ - "Lost visual contact." + "Stracono kontakt wzrokowy." ], "kg049": [ "He just ducked out." @@ -4503,22 +4503,22 @@ "Continuing our sweep." ], "kg053": [ - "Searching sector four." + "Przeszukiwanie sektora czwartego." ], "kg053a": [ - "Searching sector four." + "Przeszukiwanie sektora czwartego." ], "kg054": [ - "Searching sector seven." + "Przeszukiwanie sektora siódmego." ], "kg054a": [ - "Searching sector seven." + "Przeszukiwanie sektora siódmego." ], "kg055": [ - "Searching sector three." + "Przeszukiwanie sektora trzeciego." ], "kg055a": [ - "Searching sector three." + "Przeszukiwanie sektora trzeciego." ], "kg056": [ "Keep looking." @@ -4533,10 +4533,10 @@ "He's got to be here somewhere." ], "kg058": [ - "I can't find him." + "Nie mogę go znaleźć." ], "kg058a": [ - "I can't find him." + "Nie mogę go znaleźć." ], "kg059": [ "No sign of the subject." @@ -4587,10 +4587,10 @@ "He got away." ], "kg067": [ - "He escaped." + "Uciekł." ], "kg067a": [ - "He escaped." + "Uciekł." ], "kg068": [ "He shook us." @@ -4599,22 +4599,22 @@ "He shook us." ], "kg069": [ - "Looks like he's gone." + "Wygląda na to że zwiał." ], "kg069a": [ - "Looks like he's gone." + "Wygląda na to że zwiał." ], "kg070": [ - "I found him!" + "Znalazłem go!" ], "kg070a": [ - "I found him!" + "Znalazłem go!" ], "kg071": [ - "There he is." + "Tam jest." ], "kg071a": [ - "There he is!" + "Tam jest!" ], "kg072": [ "Be advised, target in sight." @@ -4629,10 +4629,10 @@ "We have a positive ID." ], "kg074": [ - "I see him!" + "Widzę go!" ], "kg074a": [ - "I see him!" + "Widzę go!" ], "kg075": [ "He's over there, get him!" @@ -4641,10 +4641,10 @@ "He's over here!" ], "kg076": [ - "Get him!" + "Dorwać go!" ], "kg076a": [ - "Get him!" + "Dorwać go!" ], "kg077": [ "I've reacquired the target!" @@ -4677,22 +4677,22 @@ "Pursuing target!" ], "kg082": [ - "Don't let him get away!" + "Nie pozwolcie mu uciec!" ], "kg082a": [ - "Don't let him get away!" + "Nie pozwolcie mu uciec!" ], "kg083": [ - "Get him!" + "Dorwać go!" ], "kg083a": [ - "Get him!" + "Dorwać go!" ], "kg084": [ - "After him!" + "Za nim!" ], "kg084a": [ - "After him!" + "Za nim!" ], "kg085": [ "I have a visual!" @@ -4701,10 +4701,10 @@ "I have a visual!" ], "kg086": [ - "We see him!" + "Widzimy go!" ], "kg086a": [ - "We see him!" + "Widzimy go!" ], "kg087": [ "Stop right there!" @@ -4719,10 +4719,10 @@ "I have a bead on him!" ], "kg089": [ - "I'm hit!" + "Zostałem trafiony!" ], "kg089a": [ - "I'm hit!" + "Zostałem trafiony!" ], "kg090": [ "Man down!" @@ -4731,16 +4731,16 @@ "Man down!" ], "kg091": [ - "I need backup!" + "Potrzebuję wsparcia!" ], "kg091a": [ - "I need backup!" + "Potrzebuję wsparcia!" ], "kg092": [ - "Stop him!" + "Zatrzymać go!" ], "kg092a": [ - "Stop him!" + "Zatrzymać go!" ], "kg093": [ "Look out!" @@ -4749,16 +4749,16 @@ "Look out!" ], "kg094": [ - "There he is, shoot him!" + "Tam jest, strzelać do niego!" ], "kg094a": [ - "There he is, shoot him!" + "Tam jest, strzelać do niego!" ], "kg095": [ - "Take him out!" + "Zdjąć go!" ], "kg095a": [ - "Take him out!" + "Zdjąć go!" ], "kg096": [ "Prisoner escape in progress, sound the alarm!" @@ -5046,7 +5046,7 @@ "Here's some pain!" ], "kg154": [ - "Payback time!" + "Czas zemsty!" ], "kg155": [ "Shoulda given up!" @@ -5357,13 +5357,13 @@ "our ammo at HQ?" ], "kg198": [ - "Payback's a bitch!" + "Zemsta to suka!" ], "kg198a": [ - "Payback's a bitch!" + "Zemsta to suka!" ], "kg198b": [ - "Payback's a bitch!" + "Zemsta to suka!" ], "kg199": [ "Animals!" @@ -6157,7 +6157,7 @@ "We got 'em this time!" ], "kg380a": [ - "Suspect vehicle destroyed!" + "Pojazd podejrzanego zniszczony!" ], "kg381a": [ "He's going for another vehicle!" @@ -6178,25 +6178,25 @@ "Ough!" ], "kg387a": [ - "Huh!" + "Świetnie!" ], "kg388a": [ "Arghh!" ], "kg389a": [ - "Ughh!" + "Ugha!" ], "kg390a": [ - "Hugh!" + "Szczę!" ], "kg391a": [ - "Aughh!" + "Augh!" ], "kg392a": [ - "Haugh!" + "Uczci!" ], "kg393a": [ - "Oof!" + "Uff!" ], "kg394a": [ "Hah!" @@ -6226,7 +6226,7 @@ "Huuh!" ], "kg403a": [ - "Haah!" + "Hah!" ], "kg404a": [ "Ahh!" @@ -6280,7 +6280,7 @@ "Ah...!" ], "kg421a": [ - "Huah...!" + "Witaj...!" ], "kg422a": [ "Agh!" @@ -6301,13 +6301,13 @@ "Ugh!" ], "kg428a": [ - "Oof!" + "Uff!" ], "kgv001": [ - "Stop!" + "Stój!" ], "kgv002": [ - "Open fire!" + "Otworzyć ogień!" ], "kgv003": [ "Move in!" @@ -6328,7 +6328,7 @@ "Eat this!" ], "kgv009": [ - "Fire, fire!" + "Ognia, ognia!" ], "kgv010": [ "Give it up, outlaw!" @@ -6343,19 +6343,19 @@ "Riot in progress!" ], "kgv014": [ - "Call for backup!" + "Wezwać wsparcie!" ], "kgv015": [ - "Stop the vehicle!" + "Zatrzymaj pojazd!" ], "kgv016": [ - "You are under arrest!" + "Jesteś aresztowany!" ], "kgv017": [ "Pull over!" ], "kgv018": [ - "Slow down!" + "Zwolnij!" ], "kgv019": [ "Move over!" @@ -6373,7 +6373,7 @@ "High speed chase in sector four!" ], "kgv024": [ - "Suspect in vehicle!" + "Podejrzany w pojeździe!" ], "kgv025": [ "Suspect fleeing into sector five." @@ -6381,7 +6381,7 @@ "kor001": [ "I am so proud of you Jak, and you too, Daxter!", "Together you have done real damage to the Baron.", - "We may win this war yet!" + "Możemy jeszcze wygrać tę wojnę!" ], "kor002": [ "Excellent work, you are proving to be quite an asset.", @@ -6642,7 +6642,7 @@ "and you will be penalized! Groark!" ], "pek015": [ - "Ready? Go!" + "Gotowy? Start!" ], "pek016": [ "That symbol wasn't there, penalty!" @@ -6667,7 +6667,7 @@ "You missed some!" ], "pek023": [ - "Faster! Faster!" + "Szybciej! Szybciej!" ], "pek024": [ "Give it to him, Onin! More, Onin, more!", @@ -6817,11 +6817,11 @@ "Obey and be happy." ], "prop019": [ - "Sacrifice is something you should do", - "for your city." + "Poświęcenie to coś, co powinieneś zrobić", + "dla twojego miasta." ], "prop020": [ - "Sacrifice for your city." + "Poświęć się dla swego miasta." ], "prop021": [ "Remember, even friends might be enemies." @@ -6882,7 +6882,7 @@ "Defy... and die." ], "prop040": [ - "Welcome to Haven City!", + "Witaj w Haven City!", "All laws are enforced for your safety.", "Obey me and you will not be punished." ], @@ -6903,14 +6903,14 @@ "prop044": [ "To all citizens of this great city, there is a monster", "among you, masquerading as a man!", - "He is dangerous and must be destroyed!", + "On jest niebezpieczny i musi zostać zniszczony!", "I offer a reward of eco for his capture, or, if you", "have a loved one in prison, I will exchange them for", "this renegade. I promise." ], "prop045": [ "To all who defy me! I am watching you,", - "I am everywhere, I am this city!" + "Jestem wszędzie, jestem tym miastem!" ], "prop046": [ "This is your Baron. I have been informed by the", @@ -7071,18 +7071,18 @@ "You've got to get the boy safely to the Power Station, Jak!" ], "sam008": [ - "Thank you for protecting us, Jak.", - "We'll meet you at the Nest." + "Dziękuję za ochronę nas, Jak.", + "Spotkamy się w Gnieździe." ], "sigc001": [ "Hold on there, we need to teach you how to use this baby!" ], "sigc002": [ - "The Scatter Gun is a good short-range weapon", - "with a wide field of fire." + "Broń rozpryskowa jest dobra na krótki dystans", + "ze swoim szerokim zasięgiem ognia." ], "sigc003": [ - "To fire the weapon, press the trigger." + "Aby wystrzelić, naciśnij spust." ], "sigc004": [ "Good! Some kick, huh?" @@ -7097,22 +7097,22 @@ "Try putting the weapon away." ], "sigc008": [ - "Easy, huh?" + "Łatwizna, co?" ], "sigc009": [ "Now take the weapon back out." ], "sigc010": [ - "Good!" + "Dobrze!" ], "sigc011": [ - "You can find red ammo inside Krimzon Guard crates." + "Możesz znaleźć czerwoną amunicję w skrzynkach Strażnika Krimzonu." ], "sigc012": [ - "Shoot the crates." + "Strzel w skrzynie." ], "sigc013": [ - "Great, now you're ready!" + "Świetnie, teraz jesteś gotowy!" ], "sigc014": [ "Want to try the Scatter Gun course?" @@ -7157,7 +7157,7 @@ "You did it, excellent shooting!" ], "sigc030": [ - "Nice shooting! You got potential, kid!" + "Nieźle strzelasz! Masz potencjał, młody!" ], "sigc031": [ "Not bad, you'll do." @@ -7205,7 +7205,7 @@ "I said \"don't shoot civvies,\" itchy finger!" ], "sigc056": [ - "Great job!" + "Dobra robota!" ], "sigc057": [ "Awesome round, I feel sorry for those Metal Heads already." @@ -7235,7 +7235,7 @@ "Whoa, rock and roll, baby! That was a perfect round." ], "sigc066": [ - "Nice shot!" + "Niezły strzał!" ], "sigc067": [ "Wasted 'em!" @@ -7253,18 +7253,18 @@ "I love seeing you work!" ], "sigc072": [ - "Now switch back to the Blaster." + "Teraz przełącz się z powrotem na Blaster." ], "sigc073": [ - "You can combo your attacks by kicking,", - "then firing your weapon." + "Możesz połączyć swoje ataki używając kopnięcia,", + "następnie strzelając z broni." ], "sigc074": [ - "Try a kick-shot combo." + "Spróbuj kombinacji strzału z kopnięciem." ], "sigc075": [ - "Kick the first target, then shoot while kicking", - "to automatically hit the second target." + "Kopnij pierwszy cel a następnie strzel podczas kopnięcia", + "aby automatycznie trafić drugi cel." ], "sigc076": [ "Great move!" @@ -7294,7 +7294,7 @@ "Here we go!" ], "sigt004": [ - "Follow me!" + "Za mną!" ], "sigt005": [ "Get behind me while I toast that tank." @@ -7303,13 +7303,13 @@ "Hurry up kid, I don't have all day!" ], "sigt007": [ - "This way!" + "Tędy!" ], "sigt008": [ "Toast those bad boys up ahead." ], "sigt009": [ - "Quick! Drop the bridge!" + "Szybko! Opuść most!" ], "sigt010": [ "Jump up and grab the bridge to bring it down." @@ -7468,7 +7468,7 @@ "Great, here comes that bad boy again. Move!" ], "sigt072": [ - "Run!" + "Uciekać!" ], "sigt073": [ "Go, go, go!" @@ -7480,13 +7480,13 @@ "Keep moving!" ], "sigt076": [ - "Faster!" + "Szybciej!" ], "sigt077": [ "It's gonna be close!" ], "sigt078": [ - "Move your butts!" + "Ruszyć tyłki!" ], "sigt082": [ "Buddy, you don't wanna piss me off." @@ -7525,7 +7525,7 @@ "Just a walk in the park." ], "sigt104": [ - "Follow me!" + "Za mną!" ], "sigt105": [ "Let's go!" @@ -7603,7 +7603,7 @@ "Go, go, go!" ], "tswm004": [ - "Wow! What an animal!" + "Wow! Co za zwierzę!" ], "tswm005": [ "You got it!" @@ -7615,7 +7615,7 @@ "Ooh ho ho, baby!" ], "tswm008": [ - "Great shot, Daxter!" + "Świetny strzał, Daxter!" ], "tswm009": [ "You're almost there!" @@ -7624,13 +7624,13 @@ "You can win, baby!" ], "tswm011": [ - "My hero!" + "Mój bohater!" ], "tswm012": [ "Look at him go!" ], "tswm013": [ - "You ARE Orange Lightning!" + "Jesteś Pomarańczową Błyskawicą!" ], "tswm014": [ "Just a few more!" @@ -7639,10 +7639,10 @@ "Hit him again!" ], "tswm016": [ - "Yes!" + "Tak!" ], "tswm017": [ - "That's my naughty ottsel!" + "Oto mój niegrzeczny ottsel! " ], "tswm018": [ "Oh!" @@ -7660,52 +7660,52 @@ "That took points away!" ], "tswm023": [ - "You did it!" + "Zrobiłeś to!" ], "tswm024": [ - "Daxter, you won!" + "Daxter, wygrałeś!" ], "tswm025": [ "Yes! You're the man! I mean... the animal." ], "tswm026": [ - "You beat the game, Daxter!" + "Ukończyłeś grę, Daxter!" ], "tswm027": [ "Where'd you learn to pound like that?" ], "tswm028": [ - "That was amazing!" + "To było niesamowite!" ], "tswm029": [ "Pretty good for a little furball." ], "tswm030": [ - "Ooh... Not enough points!" + "Ooh... Za mało punktów!" ], "tswm031": [ - "No! You lost..." + "Nie! Przegrałeś..." ], "tswm032": [ "Awww... You lost again!" ], "tswm033": [ - "So close!" + "Tak blisko!" ], "tswm034": [ - "One more time." + "Jeszcze raz." ], "tswm035": [ - "You can do it!" + "Uda Ci się!" ], "tswm036": [ - "You have to try again!" + "Musisz spróbować ponownie!" ], "tswm037": [ - "You have to beat the game, Daxter." + "Musisz ukończyć grę, Daxter." ], "tswm038": [ - "Try again!" + "Spróbuj ponownie!" ], "tswm039": [ "Ah! That was a bad one!" @@ -7720,7 +7720,7 @@ "Not again!" ], "tswm043": [ - "Oh no!" + "O nie!" ], "tswm044": [ "Daxter..! You need more points!" @@ -7738,10 +7738,10 @@ "You're almost there...!" ], "tswm049": [ - "Just a few more!" + "Jeszcze kilka!" ], "tswm050": [ - "We have a winner!" + "Mamy zwycięzcę!" ], "tswm051": [ "Oh! That was a bad one." @@ -7753,13 +7753,13 @@ "Daxter, you hit a bad Metal Head!" ], "tswm054": [ - "Daxter, you won!!" + "Daxter, wygrałeś!!" ], "tswm055": [ - "You did it, fur boy!" + "Zrobiłeś to, futrzaku!" ], "tswm056": [ - "Yes!! You beat the game!" + "Tak!! Ukończyłeś grę!" ], "tswm057": [ "I knew you could do it." @@ -7769,9 +7769,9 @@ "Have fun being killed in the Palace." ], "vin003": [ - "You destroyed the last of the Metal Head eggs!", + "Zniszczyłeś ostatnie z jaj Metalowych Łbów!", "That should give us a little more eco for the city.", - "Good work!" + "Dobra robota!" ], "vin004": [ "You still haven't gotten all the Metal Head eggs!", @@ -7781,38 +7781,38 @@ "vin011": [ "Thank goodness you blew up those wells.", "I sure don't want any more Metal Heads coming around here.", - "Good work, boys! I owe ya one." + "Dobra robota, chłopcy! Wiszę wam przysługę." ], "vin012": [ "Good work, guys! The fewer Metal Head eggs", "we allow to hatch, the fewer of those nasty monsters", - "we'll have to fight!" + "będziemy musieli walczyć!" ], "vin013": [ "Jak... Kor...", - "Construction... Site...", + "Plac... Budowy...", "Ngh..." ], "vin014": [ - "Once again you guys have saved my butt!", - "Maybe now I'll get a raise. Or a long vacation.", + "Po raz kolejny uratowaliście mój tyłek!", + "Może teraz dostanę podwyżkę. Albo dłuższy urlop.", "God knows I could use one. Thanks for the help!" ], "vin015": [ "The shield wall is down! I repeat - the shield wall is down!", - "Sabotage! Kor did it!", + "Sabotaż! Kor to zrobił!", "I knew Metal Heads would be the end of me!", "OH NO! Metal Heads are at the door!!", - "They're breaking through!!", - "Too many of them!! Jak!!! AHHHH!!!" + "Przebijają się!", + "Jest ich zbyt wiele!! Jak!! AHHHH!!!" ], "ys001": [ "Excellent work, boys! Come on back to the Hideout,", - "I have another task for you." + "Mam dla ciebie inne zadanie." ], "ys002": [ - "Nice shooting, my boy!", - "Good work, Jak!", + "Ładnie strzelasz, chłopcze!", + "Dobra robota, Jak!", "We'll all sleep a little easier tonight." ] }, @@ -7821,35 +7821,37 @@ "ashelin": "Ashelin", "baron": "Baron Praxis", "brutter": "Brutter", - "citizen-female": "Citizen", - "citizen-male": "Citizen", - "computer": "Computer", - "darkjak": "Dark Jak", + "citizen-female": "Obywatel", + "citizen-male": "Obywatel", + "computer": "Komputer", + "darkjak": "Mroczny Jak", "daxter": "Daxter", "errol": "Erol", "grim": "Grim", - "guard": "Krimzon Guard", - "guard-a": "Guard A", - "guard-b": "Guard B", + "guard": "Strażnik Krimzon", + "guard-a": "Strażnik A", + "guard-b": "Strażnik B", "jak": "Jak", "jinx": "Jinx", "keira": "Keira", - "keira-before-class-3": "Mechanic", - "kid": "Kid", + "keira-before-class-3": "Mechanik", + "kid": "Dzieciak", "kor": "Kor", "krew": "Krew", - "metalkor": "Metal Kor", + "metalkor": "Metalowy Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", - "oracle": "Oracle", + "oracle": "Wyrocznia", "pecker": "Pecker", - "precursor": "Precursor", + "precursor": "Prekursor", "samos": "Samos", "sig": "Sig", "tess": "Tess", "torn": "Torn", "vin": "Vin", - "youngsamos": "Young Samos", + "youngsamos": "Młody Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_pt-BR.json b/game/assets/jak2/subtitle/subtitle_lines_pt-BR.json index 1eedfcf5e8..abb7989c79 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_pt-BR.json +++ b/game/assets/jak2/subtitle/subtitle_lines_pt-BR.json @@ -2,207 +2,207 @@ "cutscenes": {}, "other": { "DSbop001": [ - "You sure seem angry, Jak." + "Você parece zangado, Jak." ], "DSbop002": [ - "Do you remember how to jump?" + "Você lembra como pular?" ], "DSbop003": [ - "Jump onto that crate to get over the barricade." + "Pule nessa caixa para ultrapassar a barricada." ], "DSbop004": [ - "Ooh, that's a high ledge!", - "Try jumping once, then jump again while in the air", - "to reach that one." + "Ooh, esta plataforma é bem alta!", + "Tente pular uma vez, então pule novamente enquanto estiver no ar", + "para alcançar aquele ali." ], "DSbop005": [ - "Good job, see? You still got it!" + "Bom trabalho, viu? Você ainda conseguiu!" ], "DSbop006": [ - "I never found hide nor hair of Keira or Samos.", - "I don't know where they went." + "Nunca encontrei nem pele e nem cabelo da Keira ou do Samos.", + "Eu não sei aonde eles foram." ], "DSbop007": [ - "I don't know where that crazy rift vehicle took us, but...", - "It's some kind of big city!" + "Eu não sei onde esse veículo maluco nos levou, mas...", + "É algum tipo de cidade grande!" ], "DSbop008": [ - "It's a tough place, Jak. You DO remember", - "how to fight, right? Try breaking that crate with a kick." + "É um lugar duro, Jak. Você se lembra", + "como lutar, não é? Tente quebrar aquela caixa com um chute." ], "DSbop009": [ - "Looking good, partner! Nice spin kick!", - "Works out some of that anger, eh?" + "Muito bem, parceiro! Belo chute giratório!", + "Isso alivia um pouco da raiva, não é?" ], "DSbop010": [ - "There are lots of Krimzon Guard crates lying around", - "for the taking. Break that crate!" + "Há muitas caixas da Guarda Krimzon espalhadas por aí", + "para pegar. Quebre aquela caixa!" ], "DSbop011": [ - "Good job! That crate had a health pack inside.", - "Pick it up, you'll wanna keep healthy, Jak, or uh heh...", - "who'll do the fighting?" + "Bom trabalho! Aquela caixa tinha um pacote de saúde dentro.", + "Pegue-o, você vai querer se manter saudável, Jak, ou uh heh...", + "quem vai lutar?" ], "DSbop016": [ - "If you jump then dive, you'll crash down to the ground", - "hard enough to break lots of things.", - "Breaking stuff's fun, right?" + "Se você pular e depois mergulhar, baterá no chão", + "com força suficiente para quebrar muitas coisas.", + "Quebrar coisas é divertido, não é?" ], "DSbop017": [ - "Guards, Jak! Do your, uh... stuff." + "Guardas, Jak! Dê um jeito neles." ], "agnt001": [ - "Hey hey, drive carefully!" + "Ei, dirija com cuidado!" ], "agnt002": [ - "Look out!" + "Cuidado!" ], "agnt003": [ - "Watch it!" + "Observe!" ], "agnt004": [ - "Whoa whoa whoa whoa!" + "Epa, epa, epa, epa!" ], "agnt005": [ - "Whoa!" + "Epa!" ], "agnt006": [ - "You're crazy!" + "Você é maluco!" ], "agnt007": [ - "Are you out of your mind!?" + "Você está louco?" ], "agnt008": [ - "Watch out!" + "Preste atenção!" ], "agnt009": [ - "That one hurt!" + "Essa doeu!" ], "agnt010": [ - "Stay sharp, we've got a tough part of town coming up." + "Fique atento, pois teremos uma parte sinistra da cidade pela frente." ], "agnt011": [ - "Now we're in for it!" + "Agora estamos prontos para isso!" ], "agnt012": [ - "You're wasting citizens!" + "Você está sacrificando os cidadãos!" ], "agnt013": [ - "Don't hit the civvies, man!" + "Não bata nos civis, cara!" ], "agnt014": [ - "Man, you are hitting people!" + "Cara, você está batendo nas pessoas!" ], "agnt015": [ - "Look where you're going!" + "Olhe aonde você está indo!" ], "agnt016": [ - "Go man!" + "Vamos lá, cara!" ], "agnt017": [ - "Keep your head down!" + "Mantenha a cabeça abaixada!" ], "agnt018": [ - "They're shooting at us!" + "Eles estão atirando em nós!" ], "agnt019": [ - "We are dead if you don't drive faster!" + "Estamos mortos se você não dirigir mais rápido!" ], "agnt020": [ - "Keep going!" + "Continue assim!" ], "agnt021": [ - "Do it, man, do it!" + "Faça isso, cara, faça!" ], "agnt022": [ - "Hurry up, man!" + "Rápido, cara!" ], "agnt023": [ - "I ain't riding on the back, pick up a two-seater!" + "Não vou andar na garupa, pegue um carro com dois lugares!" ], "agnt024": [ - "Get a bigger car!" + "Pegue um carro maior!" ], "agnt025": [ - "Get a bigger vehicle." + "Pegue um veículo maior." ], "agnt026": [ - "Get one with two seats, will ya?" + "Pegue um com dois assentos, pode ser?" ], "agnt027": [ - "Get another vehicle." + "Pegue um veículo maior." ], "agnt028": [ - "They're onto us." + "Eles estão atrás de nós." ], "agnt029": [ - "We're being followed." + "Estamos sendo seguidos." ], "agnt030": [ - "We're taking a beating!" + "Estamos levando uma surra!" ], "agnt031": [ - "We can't take much more of that!" + "Não aguentaremos muito mais disso!" ], "agnt032": [ - "Are you trying to die!?" + "Está tentando morrer!?" ], "agnt033": [ - "Where did Torn find you?" + "Onde o Torn te encontrou?" ], "agnt034": [ - "You sure you're on our side?" + "Você tem certeza de que está do nosso lado?" ], "agnt035": [ - "Turn, TURN!" + "Vire, Vire!" ], "agnt036": [ - "Good move." + "Boa jogada." ], "agnt037": [ - "Death to the Baron!" + "Morte ao Barão!" ], "agnt038": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Graças a Mar você está aqui, os Guardas Krimzon estão por toda parte!" ], "agnt039": [ - "It's about time, let's get out of here!" + "Já está na hora, vamos sair daqui!" ], "agnt040": [ - "Good, good, just in time. GO, GO, GO!" + "Ótimo, bem na hora! Vamos, vamos, vamos!" ], "agnt041": [ - "Finally, we need to move!" + "Até que enfim, precisamos nos mexer!" ], "agnt042": [ - "Man, I was beginning to think you wouldn't show up." + "Cara, eu estava começando a pensar que você não apareceria." ], "agnt043": [ - "Not a moment too soon, let's fly!" + "Na hora certa, vamos voar!" ], "agnt044": [ - "Get me to my new safehouse, quickly!" + "Leve-me para meu novo esconderijo, rápido!" ], "agnt045": [ - "Thanks, good luck!" + "Obrigado, boa sorte!" ], "agnt046": [ - "Good driving, go save the rest of our guys." + "Boa viagem, vá salvar o resto dos nossos rapazes." ], "agnt047": [ - "OK, I'm out of here!" + "OK, estou fora daqui!" ], "agnt048": [ - "See you at the next meeting." + "Vejo vocês na próxima reunião." ], "agnt049": [ - "Thanks, you're a life saver." + "Obrigado, você é um salva-vidas." ], "agnt050": [ - "This is where I get off." + "É aqui que eu saio." ], "agnt051": [ - "I'm glad you're on our side." + "Fico feliz que esteja do nosso lado." ], "agnt052": [ "Ugh!" @@ -217,160 +217,160 @@ "Ahhh!" ], "agnt056": [ - "Drive carefully!" + "Dirija com cuidado!" ], "agnt057": [ - "Look out!" + "Cuidado!" ], "agnt058": [ - "Watch it!" + "Observe!" ], "agnt059": [ - "WHOA!" + "UAU!" ], "agnt060": [ - "You're crazy!" + "Você é maluco!" ], "agnt061": [ - "Are you out of your mind?!" + "Você está louco?" ], "agnt062": [ - "Watch out!" + "Preste atenção!" ], "agnt063": [ - "That one hurt." + "Essa doeu." ], "agnt064": [ - "Stay sharp, we got a tough part of our town coming up." + "Fique atento, pois teremos uma parte sinistra da cidade pela frente." ], "agnt065": [ - "Now we're in for it." + "Agora estamos prontos para isso." ], "agnt066": [ - "You're wasting citizens!" + "Você está sacrificando os cidadãos!" ], "agnt067": [ - "Don't hit the civvies, man!" + "Não bata nos civis, cara!" ], "agnt068": [ - "Man, you're hitting the people!" + "Cara, você está batendo nas pessoas!" ], "agnt069": [ - "Look where you're going!" + "Olhe para onde você está indo!" ], "agnt070": [ - "Go man, GO!" + "Vai, cara, VAI!" ], "agnt071": [ - "Keep your head down!" + "Mantenha a cabeça abaixada!" ], "agnt072": [ - "They're shooting at us!" + "Eles estão atirando em nós!" ], "agnt073": [ - "We're dead if you don't drive faster!" + "Estamos mortos se você não dirigir mais rápido!" ], "agnt074": [ - "Keep going!" + "Continue assim!" ], "agnt075": [ - "Do it, man, do it!" + "Faça isso, cara, faça!" ], "agnt076": [ - "Hurry up, man!" + "Rápido, cara!" ], "agnt077": [ - "I ain't riding on the back, pick up a two-seater!" + "Não vou andar na garupa, pegue um carro com dois lugares!" ], "agnt078": [ - "Get a bigger vehicle." + "Pegue um veículo maior." ], "agnt079": [ - "They're onto us!" + "Eles estão atrás de nós!" ], "agnt080": [ - "We're being followed!" + "Estamos sendo seguidos!" ], "agnt081": [ - "We're taking a beating!" + "Estamos levando uma surra!" ], "agnt082": [ - "We can't take much more of that." + "Não aguentaremos muito mais disso." ], "agnt083": [ - "You trying to die?" + "Está tentando morrer?" ], "agnt084": [ - "Where'd Torn find you?" + "Onde o Torn te encontrou?" ], "agnt085": [ - "You sure you're on our side?" + "Você tem certeza de que está do nosso lado?" ], "agnt086": [ - "Turn, TURN!" + "Vire, Vire!" ], "agnt087": [ - "Good move!" + "Boa jogada!" ], "agnt088": [ - "Death to the Baron!" + "Morte ao Barão!" ], "agnt089": [ - "Thank Mar you're here, Krimzon Guards are everywhere!" + "Graças a Mar você está aqui, os Guardas Krimzon estão por toda parte!" ], "agnt090": [ - "It's about time, let's get out of here!" + "Já está na hora, vamos sair daqui!" ], "agnt091": [ - "Good, just in time, GO, GO, GO!" + "Ótimo, bem na hora! Vamos, vamos, vamos!" ], "agnt092": [ - "Finally, we need to move!" + "Até que enfim, precisamos nos mexer!" ], "agnt093": [ - "Man, I was beginning to think you wouldn't show up." + "Cara, eu estava começando a pensar que você não apareceria." ], "agnt094": [ - "Not a moment too soon, let's fly!" + "Na hora certa, vamos voar!" ], "agnt095": [ - "Get me to my new safehouse, quickly!" + "Leve-me para meu novo esconderijo, rápido!" ], "agnt096": [ - "Thanks, good luck!" + "Obrigado, boa sorte!" ], "agnt097": [ - "Good driving, go save the rest of our guys." + "Boa condução, agora vá salvar o resto dos nossos rapazes." ], "agnt098": [ - "OK, I'm out of here!" + "OK, estou fora daqui!" ], "agnt099": [ - "See ya at the next meeting!" + "Vejo vocês na próxima reunião!" ], "agnt100": [ - "Thanks, you're a life-saver." + "Obrigado, você é um salva-vidas." ], "agnt101": [ - "This is where I get off." + "É aqui que eu saio." ], "agnt102": [ - "I'm glad you're on our side." + "Estou feliz que esteja do nosso lado." ], "agnt103": [ - "Look out!" + "Cuidado!" ], "agnt104": [ - "Hey!" + "Ei!" ], "agnt105": [ "Augh!" ], "agnt106": [ - "Come on man, you trying to kill me!?" + "Vamos lá, cara, você está tentando me matar?" ], "agnt107": [ - "Take it easy!" + "Vá com calma!" ], "agnt108": [ "Ughh!" @@ -394,107 +394,107 @@ "Oof!" ], "agnt115": [ - "Okay, buddy, move!" + "Ok, amigo, mexa-se!" ], "agnt116": [ - "Look out!" + "Cuidado!" ], "agnt117": [ - "Keep your eyes on the road!" + "Mantenha os olhos na estrada!" ], "agnt118": [ - "Watch it!" + "Observe!" ], "agnt119": [ - "Thanks for the lift." + "Obrigado pela carona." ], "agnt120": [ - "See ya at the next meeting." + "Vejo vocês na próxima reunião." ], "agnt121": [ - "Right, let's go!" + "Certo, vamos lá!" ], "agnt122": [ - "Drive, man, drive!" + "Dirija, cara, dirija!" ], "agnt123": [ - "That was close!" + "Essa foi por pouco!" ], "agnt124": [ - "You sure you know what you're doing?" + "Tem certeza de que sabe o que está fazendo?" ], "agnt125": [ - "Ok, thanks, good luck." + "Ok, obrigado, boa sorte." ], "agnt126": [ - "Great, let's go." + "Ótimo, vamos lá." ], "agnt127": [ - "Drive, man, drive!" + "Dirija, cara, dirija!" ], "agnt128": [ - "That was close!" + "Essa foi por pouco!" ], "agnt129": [ - "You sure you know what you're doing?" + "Tem certeza de que sabe o que está fazendo?" ], "agnt130": [ - "OK, thanks, good luck!" + "Ok, obrigado, boa sorte!" ], "agnt131": [ - "What took you so long?" + "Por que você demorou tanto?" ], "agnt132": [ - "Move like you got a purpose, man!" + "Mova-se como se tivesse um propósito, cara!" ], "agnt133": [ - "GO, GO, the KG are onto us!" + "Vamos, vamos, os GK estão atrás de nós!" ], "agnt134": [ - "Stay sharp, we're almost there!" + "Fique atento, estamos quase lá!" ], "agnt135": [ - "Good, you did well, I'll tell the Shadow we're safe!" + "Ótimo, você se saiu bem, vou dizer ao Shadow que estamos seguros!" ], "asha001": [ - "Payback's a bitch, and I'm it." + "A vingança é uma vadia, e eu sou." ], "asha002": [ - "Watch your ass, I'm only woman on the outside." + "Cuidado com sua bunda, eu só sou mulher por fora." ], "asha003": [ - "Let me knock you down to size...", - "Not that you have any." + "Deixe-me reduzi-lo ao seu tamanho...", + "Não que você tenha alguma." ], "asha004": [ - "Small guns don't get me going." + "Armas pequenas não me excitam." ], "asha005": [ - "That's a tiny gun..." + "Essa é uma arma minúscula..." ], "asha006": [ - "You don't know who you're dealing with." + "Você não sabe com quem está lidando." ], "asha007": [ - "I never said you could touch me there." + "Eu nunca disse que você poderia me tocar ali." ], "asha008": [ - "Take that!" + "Toma essa!" ], "asha009": [ - "Here's some." + "Aqui estão alguns." ], "asha010": [ - "Ready for another?" + "Pronto para outra?" ], "asha011": [ - "How's that feel?" + "Como é a sensação?" ], "asha012": [ - "Seems like it hurts." + "Parece que isso machuca." ], "asha013": [ - "Oh, that hurt." + "Ah! Isso dói." ], "asha014": [ "Ugh!" @@ -509,115 +509,115 @@ "Agh!" ], "asha018": [ - "Hit me again and you'll lose something really valuable!" + "Bata-me de novo e você perderá algo bem valioso!" ], "asha019": [ - "Not smart!" + "Nada inteligente!" ], "asha020": [ - "Listen, buddy, whose side are you on?" + "Ouça, amigo, de que lado você está?" ], "asha021": [ - "Don't make me hurt you." + "Não me obrigue a machucá-lo." ], "asha022": [ - "Do that again and I'll put you down." + "Faça isso de novo que eu vou derrubá-lo." ], "asha023": [ - "Learn to control your gun, buddy." + "Aprenda a controlar sua arma, amigo." ], "asha024": [ - "Where'd you learn to fight?" + "Onde você aprendeu a lutar?" ], "asha025": [ - "Check your targets, mister." + "Verifique seus alvos, senhor." ], "asha026": [ - "Don't do that again." + "Não faça isso de novo." ], "asha027": [ - "Maybe I should be behind you." + "Talvez eu deva ficar atrás de você." ], "asha028": [ - "I won't take that!" + "Eu não vou aceitar isso!" ], "asha029": [ - "Another one like that and you'll be singing soprano." + "Mais uma dessa e você estará cantando soprano." ], "asha030": [ - "Have some back." + "Tome um pouco de volta." ], "asha031": [ - "Don't do that again!" + "Não faça isso de novo!" ], "asha032": [ - "Nice shooting." + "Belo tiro." ], "asha033": [ - "Good shooting, blue boy." + "Belo tiro, menino azul." ], "asha034": [ - "Good work." + "Bom trabalho!" ], "asha035": [ - "Take 'em all down!" + "Derrube todos eles!" ], "asha036": [ - "Let's get 'em!" + "Vamos pegá-los!" ], "asha037": [ - "Here they come!" + "Aí vêm eles!" ], "asha038": [ - "I need some help!" + "Preciso de ajuda!" ], "asha039": [ - "Man, there are a lot of 'em!" + "Cara, eles são muitos!" ], "asha040": [ - "More coming." + "Mais chegando." ], "asha041": [ - "I got him." + "Eu o peguei." ], "asha042": [ - "More firepower!" + "Mais poder de fogo!" ], "asha043": [ - "One more down!" + "Um a menos!" ], "asha044": [ - "Help me out!" + "Me ajude!" ], "asha045": [ - "They're out-flanking us!" + "Eles estão nos cercando!" ], "asha046": [ - "We're surrounded!" + "Nós estamos cercados!" ], "asha047": [ - "Shoot! Shoot!" + "Atire! Atire!" ], "asha048": [ - "It's not looking good." + "Não está cheirando bem." ], "asha049": [ - "Help me!" + "Me ajude!" ], "asha050": [ - "Here's one for my father!" + "Aqui está uma para meu pai!" ], "asha051": [ - "Damn Metal Heads..." + "Malditos Cabeças de Metal..." ], "asha052": [ - "Bullseye." + "Na mosca." ], "asha053": [ - "There's some more of those things!" + "Há mais dessas coisas!" ], "asha054": [ - "Get 'em all!" + "Pegue todos eles!" ], "asha055": [ "Ugh..." @@ -629,414 +629,414 @@ "Hah...agh..." ], "asht002": [ - "You were right, Jak. What my father's doing is wrong.", - "I need to help fix this. If you get to the Weapons Factory,", - "maybe we can stop him. I'll meet you there." + "Você estava certo, Jak. O que o meu pai está fazendo é errado.", + "Preciso ajudar a corrigir isso. Se você chegar à Fábrica de Armas,", + "talvez possamos detê-lo. Eu te encontro lá." ], "asht006": [ - "I think now's the time to act.", - "The Metal Heads are so focused on attacking the city,", - "they may have left their nest vulnerable.", - "Jak, you've got to get out to the Wasteland", - "and breach the Nest barrier any way you can.", - "Maybe if you get inside and take out the Metal Head leader", - "the army will collapse. It's a long shot,", - "but it might be our only chance." + "Acho que agora é a hora de agir.", + "Os Cabeças de Metal estão tão concentrados em atacar a cidade,", + "que podem ter deixado seu ninho vulnerável.", + "Jak, você precisa ir para as Terras Devastadas", + "e romper a barreira do Ninho do jeito que puder.", + "Talvez se você entrar e derrotar o líder Cabeça de Metal", + "o exército irá colapsar. É um tiro no escuro,", + "mas pode ser nossa única chance." ], "bar001": [ - "Pay no attention to the groundless rumors about", - "low eco supplies. As your Baron, I assure you,", - "the city has an endless supply of eco stores.", - "Those who would say we are running out,", - "are only trying to frighten and subvert!", - "I have everything in control, I command you", - "to have no fear." + "Não dê atenção aos rumores infundados sobre", + "baixos suprimentos eco. Como seu Barão, eu lhe garanto,", + "a cidade tem uma oferta infinita de lojas eco.", + "Aqueles que diriam que estamos ficando esgotados,", + "estão apenas tentando aterrorizar e subverter!", + "Eu tenho tudo sob controle, eu lhe ordeno", + "que não tenha medo." ], "bar004": [ - "Go!" + "Vai!" ], "bb01fail": [ - "I think you should practice more." + "Acho que você deveria praticar mais." ], "bb01int": [ - "Jak, this is Torn. The Underground needs good drivers", - "for our vehicle missions. Prove your skills on the", - "Ring Challenge and maybe we'll let you in on the action." + "Jak, aqui é o Torn. O Subterrâneo precisa de bons motoristas", + "para nossas missões de veículos. Prove suas habilidades no", + "Desafio do Anel e talvez possamos deixá-lo participar da ação." ], "bb01win": [ - "Not bad, I think we can use ya.", - "Here's a little reward for your effort." + "Nada mal, acho que podemos usá-lo.", + "Aqui está uma pequena recompensa pelo seu esforço." ], "bb02fail": [ - "You're still a little timid. Try again." + "Você ainda é um pouco tímido. Tente novamente." ], "bb02int": [ - "We'd like to see you prove your driving skills. Take on", - "another Ring Challenge, let's see what you've got." + "Gostaríamos de ver você provar suas habilidades de direção. Participe de", + "outro Desafio do Anel, vamos ver o que você tem." ], "bb02win": [ - "Not bad. You could be my getaway driver any time." + "Nada mal. Pode ser o meu piloto de fuga a qualquer momento." ], "bb03fail": [ - "I knew this one would prove too much for ya. Keep practicing." + "Eu sabia que essa seria demais para você. Continue praticando." ], "bb03int": [ - "The next Ring Challenge will separate the men from the boys.", - "Let's see if you can handle it." + "O próximo Desafio do Anel irá separar os homens dos meninos.", + "Vamos ver se você consegue lidar com isso." ], "bb03win": [ - "Very nice driving. I'm starting to think you could really", - "help us, Jak." + "Você dirige muito bem. Estou começando a achar que você poderia realmente", + "nos ajudar, Jak." ], "bb04fail": [ - "Too bad, I kinda hoped you could do this. Keep trying." + "Péssimo, eu esperava que você conseguisse fazer isso. Continue tentando." ], "bb04int": [ - "Torn here. I don't even know why I'm lettin' you try this", - "Ring Challenge, never beat it myself. I guess I'm morbidly", - "curious. Beat this one and you'll be the best driver", - "the Underground's ever had." + "Torn aqui. Eu nem sei por que estou deixando você tentar esse", + "Desafio do Anel, eu nunca o venci. Acho que estou morbidamente", + "curioso. Vença este aqui e você será o melhor motorista", + "que o Subterrâneo já teve." ], "bb04win": [ - "Very nice, Jak! You're the best driver we've ever had." + "Muito bom, Jak! Você é o melhor motorista que já tivemos." ], "bb05fail": [ - "You didn't get all the Bomb Bots, Jak!" + "Você não pegou todos os Robôs-Bomba, Jak!" ], "bb05int": [ - "Jak, reports say more bomb bots are roaming the city.", - "They're a dangerous menace, and I need you to locate", - "and destroy each one before they hurt our interests." + "Jak, os relatórios dizem que mais robôs-bomba estão circulando pela cidade.", + "Eles são uma ameaça perigosa, e preciso que você localize", + "e destrua cada um antes que prejudiquem os nossos interesses." ], "bb05win": [ - "Good work! That oughta put a dent in the Baron's war budget." + "Bom trabalho! Isso deve prejudicar o orçamento de guerra do Barão." ], "bb06int": [ - "Jak, we need you to take out another group of Bomb Bots.", - "These mobile weapons keep showing up in the city, we gotta take them out as soon as possible." + "Jak, precisamos que você elimine outro grupo de Robôs-Bomba.", + "Essas armas móveis continuam aparecendo na cidade, temos que eliminá-las o mais rápido possível." ], "bb06win": [ - "Another pile of bomb bot scrap metal for the KG", - "trash compactors. Mission accomplished, the Underground's", - "most grateful for your service." + "Outra pilha de sucata de robôs-bomba para a GK", + "triturar. Missão cumprida, o Subterrâneo está", + "muito grato pelo seu serviço." ], "bb07fail": [ - "You lost an agent! NOT good at all, Jak! Mission failed!" + "Você perdeu um agente! NADA bom, Jak! Missão fracassada!" ], "bb07int": [ - "Torn here, I need you to go out and move more of our Agents to new locations in the city.", - "KG spies are watching our every move, so look out for trouble. Good luck." + "Torn aqui, preciso que você saia e leve mais de nossos agentes para novos locais na cidade.", + "Os espiões da GK estão observando todos os nossos movimentos, portanto, fique atento a problemas. Boa sorte." ], "bb07win": [ - "Nice shuttle work! You're keepin' people alive out there." + "Bom trabalho com o ônibus! Você está mantendo as pessoas vivas por aí." ], "bb08fail": [ - "One of our best agents was arrested. The Shadow will NOT be", - "pleased! You failed." + "Um de nossos melhores agentes foi preso. O Sombra NÃO ficará", + "satisfeito! Você falhou." ], "bb08int": [ - "Jak, some of our Agents have been compromised again.", - "Find each one and take them to special hideouts in the city.", - "The guard patrols are on high alert, so this is going to be a tough one. Keep your head down!" + "Jak, alguns de nossos agentes foram comprometidos novamente.", + "Encontre cada um deles e leve-os para esconderijos especiais na cidade.", + "As patrulhas estão em alerta máximo, portanto, essa será uma tarefa difícil. Mantenha sua cabeça baixa!" ], "bb08win": [ - "That was good driving, Jak.", - "The Underground can breathe a little easier now." + "Foi uma boa condução, Jak.", + "O Subterrâneo pode respirar um pouco mais aliviado agora." ], "bb09fail": [ - "You took too long, Jak. We're calling off the meeting." + "Você demorou demais, Jak. Estamos cancelando a reunião." ], "bb09int": [ - "Jak, we're having an Underground meeting", - "with some special Agents. Pick up each Agent", - "and bring them to the meeting place quickly." + "Jak, teremos uma reunião do Subterrâneo", + "com alguns Agentes especiais. Pegue cada agente", + "e leve os rapidamente ao local da reunião." ], "bb09win": [ - "Fast work, Jak! Some day, we might even", - "invite you to these meetings." + "Trabalho rápido, Jak! Algum dia, poderemos até", + "convidá-lo para essas reuniões." ], "bb10fail": [ - "Not fast enough, buddy! You've gotta be quick", - "with those deliveries." + "Não foi rápido o bastante, amigo! Você precisa ser veloz", + "com essas entregas." ], "bb10int": [ - "Jak, you've got to prove your driving skills once again.", - "One of our Agents dropped off a package,", - "I need it delivered to the Hideout. Immediately." + "Jak, você precisa provar suas habilidades de direção mais uma vez.", + "Um de nossos Agentes deixou um pacote e", + "eu preciso que seja entregue no Esconderijo. Imediatamente." ], "bb10win": [ - "Good work, Jak!" + "Bom trabalho, Jak!" ], "bb11fail": [ - "The package contents didn't make it. Go faster next time!" + "Os conteúdos do pacote não chegaram lá. Vá mais rápido da próxima vez!" ], "bb11int": [ - "Jak, I need you to take a package of eco", - "over to the power station. Get there quickly or the contents", - "will be useless to Vin." + "Jak, preciso que você leve um pacote de eco", + "para a estação de energia. Chegue lá rapidamente ou o conteúdo", + "será inútil para o Vin." ], "bb11win": [ - "Nice driving, Jak." + "Bela condução, Jak." ], "bb12fail": [ - "You didn't push it hard enough, newbie. Try again." + "Você não forçou o suficiente, novato. Tente novamente." ], "bb12int": [ - "This is Torn, we've got another package delivery", - "for the Stadium. Make it quick!" + "Aqui é o Torn, temos outra entrega de pacote", + "para o Estádio. Seja rápido!" ], "bb12win": [ - "Not bad driving. You really oughta race", - "in the city championship." + "Nada mal dirigindo. Você realmente deveria competir", + "no campeonato da cidade." ], "bb13fail": [ - "You gotta work on your speed, man." + "Você precisa melhorar sua velocidade, cara." ], "bb13int": [ - "I need you to take a valuable item over to Onin.", - "You won't be able to drive the whole way,", - "but you still have to move fast. Good luck." + "Preciso que você leve um item valioso para a Onin.", + "Você não conseguirá dirigir todo o percurso,", + "mas você ainda precisa ser rápido. Boa sorte." ], "bb13win": [ - "That's the way to get it done, good work." + "É assim que se faz, bom trabalho." ], "bb14fail": [ - "Too late, Jak! The agent is calling it off.", - "You need to reach it faster!" + "Tarde demais, Jak! O agente está cancelando tudo.", + "Você precisa chegar lá mais rápido!" ], "bb14int": [ - "Jak, we have an Agent waiting for a package delivery.", - "Guard spies are watching this guy,", - "so if you don't get to him fast, he'll be arrested.", - "Take the package to him before it's too late." + "Jak, temos um Agente aguardando a entrega de um pacote.", + "Espiões da guarda estão observando esse cara,", + "portanto, se você não chegar até ele rapidamente, ele será preso.", + "Leve o pacote até ele antes que seja tarde demais." ], "bb14win": [ - "Nice work, the delivery was a success. I like your style, Jak." + "Bom trabalho, a entrega foi um sucesso. Eu gosto do seu estilo, Jak." ], "bb15fail": [ - "You screwed up, Jak! You didn't get it to the safe zone", - "as we asked." + "Você estragou tudo, Jak! Você não conseguiu chegar à zona de segurança", + "como pedimos." ], "bb15farr": [ - "Get off the bike and get clear, Jak!!" + "Desça da moto e está liberado, Jak!" ], "bb15int": [ - "Jak, we found a bomb in the Slums", - "that was meant for the Shadow.", - "I need you to pick it up and take it out to the Farm Area", - "where we've marked a safe zone where it can explode.", - "Go quickly." + "Jak, encontramos uma bomba nas Favelas", + "que era destinada ao Shadow.", + "Preciso que você a pegue e leve para a Área Agrícola", + "onde marcamos uma zona segura na qual ela pode explodir.", + "Vá rápido." ], "bb15win": [ - "That was amazing work, Jak! Thank you, I really mean that." + "Foi um trabalho incrível, Jak! Obrigado, de verdade." ], "bb16fail": [ - "You didn't take out enough guards!", - "We need to hit them harder!" + "Você não eliminou guardas suficientes!", + "Precisamos bater mais forte!" ], "bb16int": [ - "Jak, this is Torn.", - "Erol's elite personal guard are moving through the city.", - "We need to hit them and hit them hard! Take out enough", - "guards before I have to call off the mission.", - "Get too few guards and we'll have missed an opportunity to", - "inflict real damage on our enemies." + "Jak, aqui é o Torn.", + "A guarda pessoal de elite do Erol está se movendo pela cidade.", + "Precisamos atingi-los e atingi-los com força! Elimine o suficiente de", + "guardas antes que eu tenha que cancelar a missão.", + "Pegue poucos guardas e teremos perdido uma oportunidade de", + "infligir danos reais aos nossos inimigos." ], "bb16win": [ - "Great hit 'n' run, Jak! That'll send a message to Erol." + "Golaço, Jak! Isso deixará uma mensagem para o Erol." ], "bb17fail": [ - "Looks like that thing's too hard to use. We'll pass for now." + "Parece que essa coisa é muito difícil de usar. Vamos deixar passar, por ora." ], "bb17int": [ - "We're evaluating the new JET-Board for use in Underground", - "missions. We heard you're pretty good with that thing,", - "show us what it can do. Score enough points with the", - "judge-bot and we'll consider adding it to our arsenal." + "Estamos avaliando usar o novo JET-Board em missões no Subterrâneo.", + "Ouvimos dizer que você é muito bom com essa coisa,", + "mostre-nos o que ele pode fazer. Marque pontos suficientes com o", + "juiz-robô e consideraremos a possibilidade de adicioná-lo ao nosso arsenal." ], "bb17win": [ - "Wow! You can really tear up the concrete with that baby!", - "Good work." + "Uau! Você pode realmente rasgar o concreto com esse bebê!", + "Bom trabalho!" ], "bb18fail": [ - "I'm still not sure the JET-Board's that useful." + "Ainda não tenho certeza de que o JET-Board seja tão útil." ], "bb18int": [ - "Here's another great place to evaluate the performance", - "of the JET-Board. Try to get enough points here as well." + "Aqui está outro lugar ótimo para avaliar o desempenho", + "do JET-Board. Tente obter pontos suficientes aqui também." ], "bb18win": [ - "Sweet moves, Jak. The KG would have a hard time", - "catching us on those babies." + "Belas manobras, Jak. A GK teria dificuldade", + "em nos pegar com esses bebês." ], "bb19fail": [ - "You didn't get them all. Try again." + "Você não pegou todos eles. Tente novamente." ], "bb19int": [ - "We're evaluating the use of homing beacons in missions.", - "Get all of the beacons as fast as you can.", - "You gotta move quickly on this one." + "Estamos avaliando o uso de sinalizadores em missões.", + "Pegue todos os sinalizadores o mais rápido possível.", + "Você terá que ser rápido neste aqui." ], "bb19win": [ - "Excellent work. You're a great asset", - "to the Underground, Jak." + "Excelente trabalho. Você é um grande trunfo", + "para o Subterrâneo, Jak." ], "bb20fail": [ - "Too slow, Jak! When the Shadow asks, you need to deliver." + "Muito lento, Jak! Quando o Shadow pede, você precisa entregar." ], "bb20int": [ - "The Shadow needs you to collect some green eco for his", - "experiments. Get all of it before the eco vanishes." + "O Shadow precisa que você colete um pouco de eco verde para os seus", + "experimentos. Obtenha tudo isso antes que o eco desapareça." ], "bb20win": [ - "Not bad. I'll put in a good word with the Shadow." + "Nada mal. Vou dar uma boa notícia ao Shadow." ], "bb21fail": [ - "Keep tryin'. You need to develop your skills here." + "Continue tentando. Você precisa desenvolver suas habilidades aqui." ], "bb21int": [ - "Sometimes we like to \"borrow\" Krimzon Guard", - "equipment. Take that KG patrol bike out for a spin", - "and hit all the targets within the time limit." + "Às vezes, gostamos de \"pegar emprestado\" o equipamento da Guarda", + "Pegue a moto de patrulha da GK para dar uma volta", + "e atinja todos os alvos dentro do limite de tempo." ], "bb21win": [ - "Nice shooting. The Guard would looove you as a recruit.", - "Here's a little reward to stay with us instead." + "Bela pontaria. A Guarda adoraria tê-lo como recruta.", + "Aqui está uma pequena recompensa para ficar conosco." ], "bb22fail": [ - "You didn't get the booths fast enough, Jak." + "Você não conseguiu as cabines rápido o suficiente, Jak." ], "bb22int": [ - "Some of the Baron's propaganda is unnerving", - "the civilians. Take out those booths and we'll stop Praxis", - "from spreading his lies." + "Algumas das propagandas do Barão estão perturbando", + "os civis. Retire essas cabines e impediremos o Praxis", + "de espalhar as suas mentiras." ], "bb22win": [ - "Good work! That should shut up the Baron a bit." + "Bom trabalho! Isso deve calar um pouco o Barão." ], "bb23fail": [ - "You lost, Jak. If you wanna win,", - "you better work on your speed skills." + "Você perdeu, Jak. Se você quiser ganhar,", + "é melhor trabalhar em suas habilidades de velocidade." ], "bb23int": [ - "The Underground's top racer wants to challenge you", - "to a race on Ring Course One.", - "Think you can handle a little competition?" + "O maior corredor do Subterrâneo quer desafiar você", + "para uma corrida no Primeiro Circuito de Argolas.", + "Acha que consegue encarar uma competiçãozinha?" ], "bb23win": [ - "Congratulations! You beat the challenger!" + "Parabéns! Você derrotou o desafiante!" ], "bb24fail": [ - "Our boy took you on this one. Better luck next time." + "Nosso garoto te pegou nessa. Mais sorte da próxima vez." ], "bb24int": [ - "Up for a little race, Jak?", - "Our top driver wants to face you on Ring Course Two.", - "This baby's a little more difficult.", - "Let's see if you can rise to the challenge." + "Pronto para uma pequena corrida, Jak?", + "Nosso melhor motorista quer enfrentá-lo no Segundo Circuito de Argolas.", + "Este bebê é um pouco mais difícil.", + "Vamos ver se você está à altura do desafio." ], "bb24win": [ - "You beat him, Jak. Nice driving." + "Você o venceu, Jak. Boa pilotagem." ], "bb25fail": [ - "Looks like you're not the top racer in this town, Jak.", - "You lost!" + "Parece que você não é o melhor piloto da cidade, Jak.", + "Você perdeu!" ], "bb25int": [ - "The Underground's race champion wants at you again,", - "this time on the difficult Ring Course Three.", - "This one's gonna get hairy." + "O corredor campeão do Subterrâneo quer enfrentá-lo mais uma vez,", + "mas agora no árduo Terceiro Circuito de Argolas.", + "Essa aqui vai ser cabeluda." ], "bb25win": [ - "Congratulations, you beat our best racer. Well done." + "Parabéns, você venceu nosso melhor corredor. Muito bem." ], "bb26int": [ - "This is Torn, a good Underground agent knows the city", - "inside and out, by sight. Let's see how you stack up,", - "get to this place in the time limit given", - "and you'll get a reward. GO!" + "Aqui é o Torn, um bom agente do Subterrâneo conhece a cidade", + "de dentro para fora, pela vista. Vamos ver como você se sai,", + "chegue a esse lugar no limite de tempo", + "e você será recompensado. VAI!" ], "bb27int": [ - "Here's another chance to prove your knowledge of the city." + "Aqui está outra chance de provar o seu conhecimento da cidade." ], "bb28int": [ - "Find this place before time runs out." + "Encontre este lugar antes que o tempo acabe." ], "bb29int": [ - "Here's a tough one, beat the clock to here." + "Aqui está uma difícil, corra contra o tempo até aqui." ], "bb30int": [ - "Recognize this place? Find it fast and a reward is yours." + "Reconhece este lugar? Encontre-o rápido e a recompensa é sua." ], "bb31int": [ - "Here's a little known place, find it fast and I'll be impressed." + "Aqui está um lugar um pouco conhecido, ache-o rápido e eu ficarei impressionado." ], "bb32int": [ - "I'd like to see you find this place. Impress me, Jak." + "Gostaria de vê-lo encontrar esse lugar. Impressione-me, Jak." ], "bb33int": [ - "Get here fast and surprise me." + "Chegue aqui rápido e me surpreenda." ], "bb34int": [ - "Here's another destination, get here quickly." + "Aqui está outro destino, chegue rápido." ], "bb35int": [ - "Find this spot, fast!" + "Encontre esse lugar, depressa!" ], "bb36int": [ - "Reach this area and be rewarded." + "Alcance essa área e será recompensado." ], "bb37int": [ - "Think you can find this place?" + "Acha que consegue encontrar este lugar?" ], "bb38fail": [ - "Not so good, Jak! Maybe you should calibrate that board." + "Nada bom, Jak! Talvez você deva calibrar essa prancha." ], "bb38int": [ - "We're still evaluating the JET-Board.", - "Let's see if you can collect all of the energy boosts", - "in the time limit allotted." + "Ainda estamos avaliando o JET-Board.", + "Vamos ver se você consegue coletar todos os impulsos de energia", + "no limite de tempo atribuído." ], "bb38win": [ - "Nice moves, fly-boy." + "Belos movimentos, garoto-voador." ], "bb39fail": [ - "Soo close, but in this business that means dead." + "Tãão perto, mas nesse ramo isso significa morte." ], "bb39int": [ - "Take that JET-Board through its paces on a Ring Course.", - "Beat the time and I'll get your face tattooed like mine." + "Leve o JET-Board ao seu limite em um Circuito de Argolas.", + "Vença o tempo e eu tatuarei seu rosto como o meu." ], "bb39win": [ - "Good speed through the course, Jak!", - "That one looked too easy." + "Boa velocidade no circuito, Jak!", + "Essa pareceu fácil demais." ], "bb40fail": [ - "Looks like you've met your match, Jak!", - "You were too slow on that course." + "Parece que você encontrou seu par, Jak!", + "Você foi muito lerdo nesse circuito." ], "bb40int": [ - "I'd like to see you take the JET-Board through another", - "Ring Course. We'll make this one a little more interesting,", - "let's see if you can complete it in time." + "Gostaria que você levasse o JET-Board a outro", + "Circuito de Argolas. Essa será um pouco mais interessante,", + "vamos ver se você consegue finalizá-lo em tempo." ], "bb40win": [ - "Wow! Even I'd have trouble on that one, good job!" + "Uau! Até eu teria problemas com essa, bom trabalho!" ], "bf001": [ - "My shield is impervious to your attacks!" + "Meu escudo é imune aos seus ataques!" ], "bf002": [ - "You cannot hurt me!" + "Você não pode me ferir!" ], "bf003": [ - "Fool! Nothing can touch me!" + "Tolo! Nada pode me tocar!" ], "bf004": [ - "You're powerless!" + "Você é impotente!" ], "bf005": [ - "There is nothing you can do!" + "Não há nada que você possa fazer!" ], "bf006": [ "HAHAHAHAHAHA!" @@ -1045,160 +1045,160 @@ "HAHAHAHA!" ], "bf008": [ - "Come get me!" + "Venha me pegar!" ], "bf009": [ - "Come closer!" + "Chegue mais perto!" ], "bf010": [ - "Try me now!" + "Experimente-me agora!" ], "bf011": [ - "Let's make this personal!" + "Vamos tornar isso pessoal!" ], "bf012": [ - "Surprise!" + "Surpresa!" ], "bf013": [ - "Don't fall!" + "Não caia!" ], "bf014": [ - "I will crush you!" + "Eu irei te esmagar!" ], "bf015": [ - "Take this!" + "Toma essa!" ], "bf016": [ - "Here I come!" + "Aqui estou eu!" ], "bf017": [ - "Why won't you die?!" + "Por que você não morre?!" ], "bf018": [ - "Your Dark Eco powers surprise me!" + "Seus poderes de Eco Sombrio me surpreendem!" ], "bf019": [ - "Your arrogance will be your downfall!" + "A sua arrogância será a sua ruína!" ], "bf020": [ - "The Stone is mine!" + "A Pedra é minha!" ], "bf021": [ - "Give me the Stone!" + "Dê-me a Pedra!" ], "bf022": [ - "Release it!" + "Larga isso!" ], "bf023": [ - "I want the Stone!" + "Eu quero a Pedra!" ], "bf024": [ - "Argh, let go!" + "Argh, larga!" ], "bf025": [ - "It's mine!" + "É minha!" ], "bf026": [ - "Try these on for size!" + "Experimente esses com seu tamanho!" ], "bf027": [ - "Here's a little present!" + "Aqui está um presentinho!" ], "bf028": [ - "Want some more?" + "Quer mais um pouco?" ], "bf029": [ - "I grow tired of this, now you die!" + "Estou cansado disso, agora você morrerá!" ], "bf030": [ - "You cannot run away from these!" + "Você não pode escapar disso!" ], "bf031": [ - "Allow me to share the pain!" + "Permita-me compartilhar a dor!" ], "bf032": [ - "Now you're mine!" + "Agora você é meu!" ], "bf033": [ - "Here's some hell!" + "Aqui está o inferno!" ], "bf034": [ - "Say good night!" + "Diga boa noite!" ], "bf035": [ - "Enjoy your next life!" + "Aproveite a sua próxima vida!" ], "bf036": [ - "It's over!" + "Acabou!" ], "bf037": [ - "Burn in hell!" + "Queime no inferno!" ], "bf038": [ - "The Stone is mine! Let me show you what it can do!" + "A Pedra é minha! Deixe-me te mostrar o que ela pode fazer!" ], "bf039": [ - "Now you see the Stone's power in capable hands!" + "Agora você vê o poder da Pedra nas mãos certas!" ], "bf040": [ - "How's that for power?" + "O que acha desse poder?" ], "bf041": [ - "Now you see!" + "Agora você vê!" ], "bf042": [ - "I am invincible now!" + "Estou invencível agora!" ], "bf043": [ - "You cannot run forever!" + "Você não pode correr para sempre!" ], "bf044": [ - "I have all the power I need!" + "Eu tenho todo o poder que preciso!" ], "bf045": [ - "You can't avoid this!" + "Você não pode evitar isso!" ], "bf046": [ - "Here's a little something special!" + "Aqui está uma coisinha especial!" ], "bf047": [ - "Come to me!" + "Venha me pegar!" ], "bf048": [ - "Come here!" + "Venha cá!" ], "bf049": [ - "Let's get closer!" + "Chegue mais perto!" ], "bf050": [ - "Nothing can save you now!" + "Nada pode salvá-lo agora!" ], "bf051": [ - "You're history!" + "Você é histórico!" ], "bf052": [ - "I am the city's savior, not you!" + "Eu sou o salvador da cidade, não você!" ], "bf053": [ - "Die!" + "Morra!" ], "bf054": [ - "It's over!" + "Acabou!" ], "bf055": [ - "I've got you!" + "Peguei você!" ], "bf056": [ - "Now you die!" + "Agora morra!" ], "bf057": [ - "NOOOOOO!" + "NÃÃÃÃÃO!" ], "bf058": [ - "No!" + "Não!" ], "bf059": [ - "NO!" + "NÃO!" ], "bf060": [ "Uorghh!" @@ -1213,25 +1213,25 @@ "Raghh!" ], "bf064": [ - "We finish this now!" + "Vamos acbar com isso agora!" ], "bf065": [ - "Eat this!" + "Coma isso!" ], "bf066": [ - "Stop!" + "Pare!" ], "bf067": [ - "You idiot, you're no match for me!" + "Seu idiota, você não é páreo para mim!" ], "bf068": [ - "Why don't you die!?" + "Por que você não morre!?" ], "bf069": [ - "Give up and I'll make it painless!" + "Desista e eu farei com que não doa nada!" ], "bf070": [ - "You cannot win!" + "Você não pode vencer!" ], "bf071": [ "Aha!" @@ -1246,73 +1246,73 @@ "Urgh!" ], "bf075": [ - "You can do better than that!" + "Você consegue fazer melhor do que isso!" ], "bf076": [ - "You're mine!" + "Você é meu!" ], "bf077": [ - "Why won't you die!?" + "Por que você não morre!?" ], "bf078": [ - "I have the ultimate power!" + "Eu tenho o poder supremo!" ], "bf079": [ - "Die!" + "Morra!" ], "bf080": [ - "Is that your best shot?" + "Esse foi o seu melhor tiro?" ], "bf081": [ - "Now you die!" + "Agora morra!" ], "bf082": [ - "Get off my tower!" + "Cai fora da minha torre!" ], "bf083": [ - "We'll see about that!" + "Isso é o que veremos!" ], "bf084": [ - "You really think you have a chance?" + "Você realmente acha que tem uma chance?" ], "bf085": [ - "Fear me!" + "Tema a mim!" ], "bf086": [ - "You're nothing!" + "Você não é nada!" ], "bf087": [ - "My shield is now recharged!" + "Meu escudo está recarregado!" ], "bf088": [ - "Try these on for size!" + "Experimente esses com seu tamanho!" ], "bf089": [ - "I should have killed you long ago!" + "Eu deveria ter te matado há muito tempo!" ], "bf090": [ - "Never a dull moment, eh?" + "Nunca há um momento de tédio, hein?" ], "bf091": [ - "Stand still!" + "Não se mexa!" ], "bf092": [ - "Go back to wherever you came from!" + "Volte para onde você veio!" ], "bf093": [ - "You're both going to die by my hand!" + "Vocês dois vão morrer pelas minhas mãos!" ], "bf094": [ - "Come closer!" + "Chegue mais perto!" ], "bf095": [ - "To the end!" + "Até o fim!" ], "bf096": [ - "You cannot win!" + "Você não pode vencer!" ], "bf097": [ - "Come here!" + "Venha cá!" ], "bf098": [ "ARGHHH!" @@ -1327,181 +1327,181 @@ "Oof!" ], "bf102": [ - "Noooo!" + "Nããão!" ], "bf103": [ - "No!" + "Não!" ], "bf104": [ - "Not again!" + "De novo não!" ], "bf105": [ - "It can't be!" + "Não pode ser!" ], "bf106": [ - "Not this time!" + "Não desta vez!" ], "bf107": [ - "Stop!" + "Pare!" ], "bf108": [ - "Damn!" + "Droga!" ], "bf109": [ - "Why, you little...!" + "Ora, seu pequeno...!" ], "bf110": [ - "Now you've made me angry!" + "Agora você me deixou furioso!" ], "bf111": [ - "Impressive, but let's try that again!" + "Fantástico, mas vamos tentar novamente!" ], "bf112": [ - "The stronger man always wins!" + "O homem mais forte sempre vence!" ], "bf113": [ - "Your loss was inevitable, Jak!" + "Sua perda foi inevitável, Jak!" ], "bf114": [ - "You could never be a baron!" + "Você nunca poderia ser um barão!" ], "bf115": [ - "I knew you were weak!" + "Eu sabia que você era fraco!" ], "bf116": [ - "Hm, I expected more from you!" + "Hm, eu esperava mais de você!" ], "bf117": [ - "Losing is for the weak!" + "Perder é para os fracos!" ], "bf118": [ - "How pathetic!" + "Que patético!" ], "bf119": [ - "That was too easy!" + "Isso foi muito fácil!" ], "bf120": [ - "Sorry, old boy, it's just war!" + "Desculpe, meu velho, é a guerra!" ], "bf121": [ - "Too bad you don't have what it takes!" + "É uma pena que você não tenha o que é preciso!" ], "bf122": [ - "The better man won!" + "O melhor homem venceu!" ], "bf123": [ - "We're similar, Jak... oh, except you're dead!" + "Somos parecidos, Jak... ah, exceto que você está morto!" ], "bf124": [ - "Feel the fury of the Precursor Stone!" + "Sinta a fúria da Pedra Precursora!" ], "bf125": [ - "With the Stone's power, I am invincible!" + "Com o poder da Pedra, eu sou invencível!" ], "bf126": [ - "All will fear me now!" + "Todos irão me temer agora!" ], "bf127": [ - "Time to die!" + "Hora de morrer!" ], "bf128": [ - "My little friends will take care of you!" + "Os meus amiguinhos vão cuidar de você!" ], "bf129": [ - "You can't run forever, Jak!" + "Você não pode correr para sempre, Jak!" ], "bf130": [ - "Now I've got you!" + "Agora eu te peguei!" ], "bf131": [ - "Surprise!" + "Surpresa!" ], "bf132": [ - "I have better things to do than waste my time with you!" + "Tenho coisas melhores para fazer do que desperdiçar meu tempo com você!" ], "bf133": [ - "You are nothing!" + "Você não é nada!" ], "bf134": [ - "Annoying insect, die!" + "Inseto irritante, morra!" ], "bf135": [ - "Not bad, but let me show you what real power is!" + "Nada mal, mas deixe-me mostrar-lhe o verdadeiro poder!" ], "bf136": [ - "Feel this!" + "Sinta isso!" ], "bru001": [ "Great smelly breath of a goosesnake!", - "Heroes to Lurker people you be!", + "Vocês são heróis para o povo Lurker!", "By now just see much happy thanks! Ruhuhuh.", - "You honorary members of Lurker tribe now.", - "We no forget - if ever you need us, we help you!" + "Agora vocês são membros honorários da tribo Lurker.", + "Nós não esquecemos - se você precisar de nós, o ajudaremos!" ], "bru002": [ - "I hears you two look for a piece of Mar's shiny Seal.", - "Brutter loves shiny bright things too.", - "I have piece I thinks. It in Water Slums,", - "hanging over me hut and you free to have.", - "Gift from Brutter!" + "Ouvi dizer que os dois estão procurando por um pedaço do Selo brilhante de Mar.", + "Brutter também adora coisas brilhantes.", + "Eu tenho um pedaço acho. Tá nos Esgotos da Favela,", + "pendurado sobre minha cabana e você é livre para pegá-lo.", + "Presente do Brutter!" ], "bru004": [ - "You two good! No better warrior in all Lurker tribes!", - "You keep Seal. You love shiny things just like Brutter." + "Vocês dois bons! Não há melhor guerreiro em todas as tribos Lurker!", + "Você guarda Selo. Você adora coisas brilhantes igual o Brutter." ], "cit001": [ - "Hey!" + "Ei!" ], "cit004": [ - "Watch it!" + "Observe!" ], "cit008": [ - "No!" + "Não!" ], "cit010": [ "Argh!" ], "cit016": [ - "Stay away!" + "Afaste-se!" ], "cit033": [ - "Hey!" + "Ei!" ], "cit034": [ - "Look out!" + "Cuidado!" ], "cit035": [ - "Watch out!" + "Preste atenção!" ], "cit046": [ - "Go away!" + "Vá embora!" ], "cit047": [ - "Leave me alone!" + "Deixe-me em paz!" ], "cit051": [ - "Are you crazy?" + "Você está maluco?" ], "cit053": [ - "Are you insane?!" + "Você é louco?!" ], "cit055": [ - "Hey, that's my vehicle!" + "Ei, esse é o meu veículo!" ], "cit056": [ - "Gimme back my vehicle!" + "Devolva o meu veículo!" ], "cit057": [ - "What are you doing?" + "O que você está fazendo?" ], "cit058": [ - "Please, don't take it!" + "Por favor, não o leve!" ], "cit097": [ "Ugh!" ], "cit097a": [ - "Aahh!" + "Aah!" ], "cit097b": [ "Aaghhh!" @@ -1528,400 +1528,400 @@ "Ahh!" ], "cit099": [ - "No!" + "Não!" ], "cit099a": [ - "Noooo!" + "Nããão!" ], "cit099b": [ - "No!" + "Não!" ], "cit099c": [ - "No!" + "Não!" ], "cit099d": [ - "Nooo!" + "Nããão!" ], "cit100": [ - "Please!" + "Por favor!" ], "cit100a": [ - "Please!" + "Por favor!" ], "cit100b": [ - "Please!" + "Por favor!" ], "cit100c": [ - "Please!" + "Por favor!" ], "cit101": [ - "Stop!" + "Pare!" ], "cit101a": [ - "Stop!" + "Pare!" ], "cit101b": [ - "Stop!" + "Pare!" ], "cit101c": [ - "Stop!" + "Pare!" ], "cit103": [ - "Sound the alarm!" + "Acione o alarme!" ], "cit103a": [ - "Sound the alarm!" + "Acione o alarme!" ], "cit104": [ - "Guards!" + "Guardas!" ], "cit104a": [ - "Guards! Help us!" + "Guardas! Ajudem-nos!" ], "cit105": [ - "Help us!" + "Ajudem-nos!" ], "cit120": [ - "Keep away from me!" + "Fique longe de mim!" ], "cit120a": [ - "Keep away from me!" + "Fique longe de mim!" ], "cit137a": [ - "Wait!" + "Espere!" ], "cityv001": [ - "Leaving city safe zone." + "Saindo da zona segura da cidade." ], "cityv002": [ - "Leaving city at your own risk." + "Saia da cidade por sua conta e risco." ], "cityv003": [ - "Exiting city." + "Saindo da cidade." ], "cityv004": [ - "Opening outer shield." + "Abrindo blindagem externa." ], "cityv005": [ - "Decontamination complete." + "Descontaminação concluída." ], "cityv006": [ - "Entering Haven City." + "Entrando na Cidade Bastião." ], "cityv007": [ - "Re-entering city." + "Reentrando na cidade." ], "cityv008": [ - "Welcome back." + "Bem-vindo de volta." ], "cityv009": [ - "It's good to see you still alive." + "É bom ver que você ainda está vivo." ], "cityv010": [ - "Security clearance granted." + "Permissão de acesso concedida." ], "cityv011": [ - "Entrance denied. You do not have proper clearance." + "Entrada recusada. Você não tem permissão de acesso." ], "cityv012": [ - "I am unable to comply." + "Não posso cumprir." ], "cityv013": [ - "Please come back with proper clearance." + "Por favor, retorne com a devida permissão." ], "cityv014": [ - "Access denied." + "Acesso negado." ], "cityv015": [ - "You need Red Clearance for this gate." + "Você precisa da Permissão Vermelha para este portão." ], "cityv016": [ - "You need Green Clearance for this gate." + "Você precisa da Permissão Verde para este portão." ], "cityv017": [ - "You need Yellow Clearance for this gate." + "Você precisa da Permissão Amarela para este portão." ], "cityv018": [ - "You need Blue Clearance for this gate." + "Você precisa da Permissão Azul para este portão." ], "cityv019": [ - "You need Purple Clearance for this gate." + "Você precisa da Permissão Roxa para este portão." ], "cityv020": [ - "You need special Black Clearance for this door." + "Você precisa da Permissão Preta para este portão." ], "cityv021": [ - "Access granted." + "Acesso garantido." ], "cityv022": [ - "Door open." + "Porta aberta." ], "cityv023": [ - "Door closed." + "Porta fechada." ], "cityv024": [ - "Please enter." + "Por favor, entre." ], "cityv025": [ - "Warp Gate online." + "Portal de Dobra ligado." ], "cityv026": [ - "Warning: Eco supplies low." + "Aviso: Baixo estoque Eco." ], "cityv027": [ - "Backup systems failing." + "Sistemas de segurança falhando." ], "cityv028": [ - "Warning: Eco storage is below safe minimums." + "Aviso: O estoque Eco está abaixo dos mínimos seguros." ], "cityv029": [ - "Eco Grid unstable." + "Rede Eco instável." ], "cityv030": [ - "Metal Heads detected at Mining Site." + "Cabeças de Metal detectados no Local de Mineração." ], "cityv031": [ - "Metal Heads detected at Drilling Site." + "Cabeças de Metal detectados no Local de Perfuração." ], "cityv032": [ - "Stand by for clearance." + "Aguarde a liberação." ], "cityv033": [ - "Have a nice day." + "Tenha um ótimo dia!" ], "cityv034": [ - "Welcome." + "Bem-vindo." ], "cityv035": [ - "This is a restricted area." + "Esta é uma área restrita." ], "cityv036": [ - "You are in violation of Speed Ordinance 51d, pull over." + "Você está violando a Portaria de Velocidade 51d, encoste." ], "cityv037": [ - "I have alerted the authorities." + "Já alertei as autoridades." ], "cityv038": [ - "This sector is closed." + "Este setor está fechado." ], "cityv039": [ - "Alert: Prison escape in progress." + "Alerta: Fuga da prisão em andamento." ], "cityv040": [ - "Alert: City under attack." + "Alerta: Cidade sob ataque." ], "cityv041": [ - "Metal Head attack in progress." + "Ataque de Cabeça de Metal em progresso." ], "cityv042": [ - "All citizens go to safe shelters." + "Todos os cidadãos devem buscar abrigo." ], "cityv043": [ - "Eco Grid growing unstable." + "Rede Eco ficando instável." ], "cityv044": [ - "The Eco Grid is down. Repeat: The Eco Grid is down." + "A Rede Eco foi desativada. Repito: a Rede Eco foi desativada." ], "cityv045": [ - "Red alert: City shield wall compromised." + "Alerta vermelho: Escudo da Cidade comprometido." ], "cityv046": [ - "Unauthorized movement in sewer system." + "Movimento não autorizado no sistema de esgoto." ], "cityv047": [ - "This is a restricted area. Defenses activated." + "Esta é uma área restrita. Defesas acionadas." ], "cityv048": [ - "You are trespassing. Defenses coming online." + "Você está invadindo essa área. Defesas sendo acionadas." ], "cityv049": [ - "I regret use of force. Systems arming." + "Lamento o uso da força. Sistemas armando." ], "cityv050": [ - "Trespasser neutralized." + "Invasor neutralizado." ], "cityv051": [ - "Suspect destroyed." + "Suspeito destruído." ], "cityv052": [ - "I am authorized to use force." + "Eu estou autorizado a usar a força." ], "cityv053": [ - "General alert: Riot in progress. Krimzon Guards en route." + "Alerta geral: Motim em andamento. Guardas Krimzon a caminho." ], "cityv054": [ - "Surrender yourself. You are under arrest." + "Renda-se. Você está preso." ], "cityv055": [ - "There is no escape." + "Não há escapatória." ], "cityv056": [ - "You are in a restricted sector. This sector is on high alert." + "Você está em um setor restrito. Este setor está em alerta vermelho." ], "cityv057": [ - "You are under arrest. Surrender yourself." + "Você está preso. Renda-se." ], "cityv058": [ - "This sector is off limits." + "Este setor está fora de limites." ], "cityv061": [ - "All systems back online and in the green." + "Todos os sistemas estão online e no verde." ], "cityv062": [ - "The race is about to begin." + "A corrida está prestes a começar." ], "cityv063": [ - "Welcome to the city transportation system." + "Bem-vindo ao sistema de transporte da cidade." ], "cityv064": [ - "You can thrust in your vehicle at any time." + "Você pode acelerar seu veículo a qualquer momento." ], "cityv065": [ - "Braking will assist in vehicle control." + "Frear ajudará no controle do veículo." ], "cityv067": [ - "Backing up is easy." + "Recuar é fácil." ], "cityv068": [ - "You can hover in one of two zones: low and high." + "Você pode flutuar entre duas zonas: baixa e alta." ], "cityv069": [ - "Try switching hover zones." + "Tente trocar as zonas de flutuação." ], "cityv070": [ - "Switching hover zones may help avoid traffic or", - "ground obstacles." + "Alternar zonas de flutuação pode ajudar a evitar o tráfego ou", + "obstáculos terrestres." ], "cityv075": [ - "Alert: Vehicle destruction imminent." + "Alerta: Destruição iminente do veículo." ], "cityv076": [ - "Please drive more carefully next time." + "Por favor, dirija com mais cuidado da próxima vez." ], "cityv077": [ - "Thank you for using the vehicle." + "Obrigado por utilizar o veículo." ], "cityv078": [ - "Have a nice day." + "Tenha um ótimo dia!" ], "cityv079": [ - "Warning: Missile cooling systems damaged." + "Aviso: Sistemas de resfriamento de mísseis danificados" ], "cityv080": [ - "Alert: Backup cooling system failure.", - "Emergency overrides initiated." + "Alerta: Falha no sistema reserva de resfriamento.", + "Substituições de emergência iniciadas." ], "cityv081": [ - "Missile systems at critical overload.", - "Failsafe not responding." + "Sistemas de mísseis em sobrecarga crítica.", + "O sistema de segurança não está respondendo." ], "cityv082": [ - "Danger: Warhead detonation imminent.", - "Evacuate immediately." + "Perigo: Detonação iminente da ogiva.", + "Evacue imediatamente." ], "cityv087": [ - "Arriving at Throne Room floor." + "Chegando no andar da Sala do Trono." ], "cityv088": [ - "Arriving at ground floor." + "Chegando ao térreo." ], "cityv093": [ - "You have been sentenced to termination." + "Você foi condenado à exterminação." ], "cityv094": [ - "This area is restricted.", - "Initiating termination with extreme prejudice." + "Esta área é restrita.", + "Iniciando a exterminação com prejuízo extremo." ], "cityv095": [ - "This area open to Krimzon Guard personnel only." + "Essa área é aberta apenas para a equipe da Guarda Krimzon." ], "cityv096": [ - "The city is on high alert." + "A cidade está em alerta vermelho." ], "cityv097": [ - "The city is under attack.", - "All citizens proceed to safe shelters." + "A cidade está sob ataque.", + "Todos os cidadãos devem buscar abrigo." ], "cityv098": [ - "The city is under attack. Please stay in your homes." + "A cidade está sob ataque. Por favor, permaneçam em suas casas." ], "cityv099": [ - "Metal Head aggressors are infiltrating the system." + "Os agressores Cabeças de Metal estão se infiltrando no sistema." ], "cityv100": [ - "Congratulations on receiving a Security Pass." + "Parabéns por receber um Passe de Segurança." ], "cityv107": [ - "Unauthorized use of Fortress door.", - "Activating security tank." + "Uso não autorizado do portão da Fortaleza.", + "Ativando tanque de segurança." ], "cityv108": [ - "Gunpod weapons coming online." + "Contêineres de armas funcionando." ], "cityv109": [ - "Weapons overheating." + "Armas superaquecendo." ], "cityv110": [ - "Weapons inoperative. Please wait for cooling." + "Armas inoperantes. Por favor, aguarde o resfriamento." ], "cityv111": [ - "Weapons back online." + "Armas funcionando." ], "cityv112": [ - "The gunpod has taken severe damage." + "O contêiner de armas sofreu danos severos." ], "cityv130": [ - "The city map is displayed in the lower right." + "O mapa da cidade é exibido na parte inferior direita." ], "cityv132": [ - "Follow the icons on the map", - "to reach important destinations." + "Siga os ícones no mapa", + "para chegar a destinos importantes." ], "cityv134": [ - "Intruder alert." + "Alerta de intruso." ], "cityv135": [ - "Stand by." + "Aguarde." ], "cityv146": [ - "I'm experiencing a circuit overload.", - "Turn on my bypass switches within the time limit", - "and you will be rewarded." + "Estou sofrendo uma sobrecarga de circuito.", + "Ligue os meus interruptores de desvio no limite de tempo", + "e você será recompensado." ], "cityv147": [ - "You failed to turn on the bypass grid in time.", - "My C-Zone circuits have overloaded." + "Você não conseguiu ligar a rede de desvio a tempo.", + "Meus circuitos da Zona-C estão sobrecarregados." ], "cityv148": [ - "You successfully switched on the bypass", - "for my circuits in time.", - "Here is a reward." + "Você ativou com sucesso o desvio", + "para os meus circuitos a tempo.", + "Aqui está uma recompensa." ], "cityv149": [ - "I need emergency power for my Eco Converters.", - "Switch on all available circuits quickly", - "to stabilize the Eco Grid." + "Preciso da energia reserva para os meus Conversores Eco.", + "Ligue rapidamente todos os circuitos disponíveis", + "para estabilizar a Rede Eco." ], "cityv150": [ - "You didn't reach all the switches in time.", - "The Eco Grid is still unstable." + "Você não alcançou todos os interruptores em tempo.", + "A Rede Eco ainda está instável." ], "cityv151": [ - "You successfully switched on the circuits", - "to stabilize the Eco Grid.", - "You have earned a reward." + "Você ativou com sucesso os circuitos", + "para estabilizar a Rede Eco.", + "Você ganhou uma recompensa." ], "cityv152": [ - "I have detected a Dark Eco spill.", - "You must remove this hazard quickly", - "before the city is contaminated." + "Eu detectei um vazamento de Eco Sombrio.", + "Você precisa remover este perigo rapidamente", + "antes que a cidade seja contaminada." ], "cityv153": [ - "You did not remove all the Dark Eco quickly enough." + "Você não removeu todo o Eco Sombrio a tempo." ], "cityv154": [ "You removed the Dark Eco hazard in time.", - "The city is grateful to you." + "A cidade é grata a você." ], "cityv155": [ "Sensors indicate a cluster of Blue Eco in the city.", @@ -1933,7 +1933,7 @@ ], "cityv157": [ "You successfully retrieved the eco.", - "Here is your reward." + "Aqui está a sua recompensa." ], "cityv158": [ "Emergency response needed.", @@ -1946,23 +1946,23 @@ ], "cityv160": [ "You destroyed the runaway bomb bots.", - "The city thanks you." + "A cidade lhe agradece." ], "cityv161": [ - "Get to this point in the game quickly", + "Chegue a este ponto no jogo rapidamente", "and you will receive a prize." ], "cityv162": [ - "Try to find this spot." + "Tente encontrar este lugar." ], "cityv163": [ - "Can you identify this place and get there?" + "Você consegue identificar este lugar e chegar até lá?" ], "cityv164": [ - "Make it here in the time allotted and a reward is yours." + "Chegue aqui no tempo previsto e uma recompensa é sua." ], "cityv165": [ - "Find this spot for a prize." + "Encontre este local para ganhar um prêmio." ], "cityv166": [ "Get to this spot for a prize." @@ -1984,296 +1984,296 @@ "Try for a high score and receive a prize." ], "cityv172": [ - "You did not achieve a high enough score." + "Você não obteve uma pontuação alta o suficiente." ], "cityv173": [ - "Congratulations, you achieved a high enough score." + "Parabéns, você obteve uma pontuação alta o suficiente." ], "cityv174": [ - "Welcome to the Stadium Central Computer.", - "Please select your challenge." + "Bem-vindo ao Computador Central do Estádio.", + "Por favor, selecione seu desafio." ], "cityv175": [ - "Attention, all citizens:", - "The Class 1 Race is about to begin." + "Atenção, todos os cidadãos:", + "A Corrida de Primeira Classe está prestes a começar." ], "cityv176": [ - "Attention, all citizens:", - "The Class 2 Race is about to begin." + "Atenção, todos os cidadãos:", + "A Corrida de Segunda Classe está prestes a começar." ], "cityv177": [ - "Attention, all citizens:", - "The Class 3 Race is about to begin." + "Atenção, todos os cidadãos:", + "A Corrida de 3ª Classe está prestes a começar." ], "cityv178": [ - "Care to try for the course record?" + "Deseja tentar o recorde do circuito?" ], "cityv179": [ - "Congratulations, you achieved the gold record." + "Parabéns, você atingiu o recorde de ouro." ], "cityv180": [ - "Congratulations, you achieved the silver record." + "Parabéns, você atingiu o recorde de prata." ], "cityv181": [ - "Congratulations, you achieved the bronze record." + "Parabéns, você atingiu o recorde de bronze." ], "cityv182": [ - "Care to try for a high score record?" + "Deseja tentar o recorde do circuito?" ], "cityv183": [ - "Would you like to try for a high score?" + "Você gostaria de tentar obter um recorde?" ], "cityv184": [ - "Welcome to the Racing Time Trials." + "Bem-vindo ao Desafio do Tempo de Corrida." ], "cityv185": [ - "Would you like to race for a record time?" + "Gostaria de correr por um tempo recorde?" ], "cityv186": [ - "Choose your course." + "Escolha o seu circuito." ], "cityv187": [ - "Would you like to try for a course record?" + "Você gostaria de tentar obter um recorde de circuito?" ], "cityv188": [ - "Would you like to use Orbs to buy a secret?" + "Você gostaria de usar Orbes para comprar um segredo?" ], "cityv189": [ - "You do not have enough Orbs for this secret." + "Você não tem Orbes suficientes para este segredo." ], "cityv190": [ - "Secret activated." + "Segredo ativado." ], "cityv191": [ - "All secrets are activated." + "Todos os segredos estão ativados." ], "cityv192": [ - "Please exit the Titan Suit." + "Por favor, saia do Titã." ], "cityv193": [ - "You must exit the Titan Suit." + "Você precisa sair do Titã." ], "cityv194": [ - "Vehicles must remain within city limits." + "Os veículos devem permanecer nos limites da cidade." ], "cityv195": [ - "Exit denied. Enemy targets still present." + "Saída negada. Ainda existem alvos inimigos." ], "cityv196": [ - "Exit denied. Metal Head eggs still detected." + "Saída negada. Ainda existem Ovos dos Cabeças de Metal." ], "cityv197": [ - "Scanners show Metal Head eggs still active." + "Os sensores mostram que ainda existem ovos dos Cabeças de Metal." ], "daxm001": [ - "Shoot the platform, Jak." + "Atire na plataforma, Jak." ], "daxm002": [ - "We need something to get through that gate!" + "Precisamos de algo para atravessar aquele portão!" ], "daxm003": [ "Shoot the Metal Head when he moves his shield!" ], "daxm004": [ - "Hit him in his stomach!" + "Acerte ele no estômago!" ], "daxm005": [ "Whoa! That path dropped like uh... a rock!" ], "daxm006": [ - "Smack the box, baby!" + "Esmague a caixa, bebê!" ], "daxm007": [ - "That's what I call a rocky road!" + "Isso é o que eu chamo de uma estrada rochosa!" ], "daxm008": [ - "We gotta get to the top!" + "Temos que chegar até o topo!" ], "daxm009": [ - "We made it!!" + "Nós conseguimos!!" ], "daxm010": [ "Rock 'n roll!" ], "ds001": [ - "We gotta find the Baron, Jak." + "Precisamos encontrar o Barão, Jak." ], "ds005": [ - "Jak, those are Metal Heads!" + "Jak, esses são Cabeças de Metal!" ], "ds006": [ "Finally, now we get to see the Shadow!", "What do ya gotta do around this place to get noticed?" ], "ds012": [ - "That must be the Ruby Key to the city." + "Deve ser essa a Chave de Rubi para a cidade." ], "ds013": [ "Statues are becoming an endangered species around here." ], "ds014": [ "So this is Mar's scary tomb, eh?", - "Doesn't look so bad." + "Não parece tão ruim." ], "ds016": [ - "Let's bring the money back to Krew." + "Vamos levar o dinheiro de volta para o Krew." ], "ds017": [ - "That must be the ammo and missile Torn told us to blow up!" + "Essa deve ser a munição e o míssil que o Torn nos disse para explodir!" ], "ds018": [ - "Get the tank to shoot the missile!" + "Faça o tanque atirar no míssil!" ], "ds019": [ - "Break those tubes in the center." + "Quebre esses tubos no centro." ], "ds020": [ - "Please tell me you remember how to roll..." + "Por favor, diga-me que você se lembra de como rolar..." ], "ds023": [ - "Let's rock!" + "Vamos botar para quebrar!" ], "ds024": [ - "Here we go!" + "E lá vamos nós!" ], "ds025": [ - "All right!" + "Certo!" ], "ds026": [ - "Yeah!" + "Isso!" ], "ds028": [ - "Oh yeah!" + "Isso aí!" ], "ds029": [ - "Let's go back to the city." + "Vamos voltar para a cidade." ], "ds030": [ - "I think we need to go back to the city, Jak." + "Acho que precisamos voltar para a cidade, Jak." ], "ds031": [ - "Let's go talk to Torn." + "Vamos falar com o Torn." ], "ds032": [ - "Let's go back to the Underground Hideout." + "Vamos voltar para o Esconderijo do Subterrâneo." ], "ds043": [ - "You can get a longer jump by rolling into it." + "Você pode saltar mais longe rolando em direção a ele." ], "ds044": [ - "Use a long jump to get across this gap." + "Use um salto longo para atravessar esse vão." ], "ds045": [ - "Nice form!" + "Bela forma!" ], "ds046": [ - "If you duck before you jump, you'll go higher.", - "You'll need a high jump to reach the top of this ledge, Jak." + "Se você agachar antes de pular, você irá mais alto.", + "Você precisará de um salto alto para chegar ao topo dessa plataforma, Jak." ], "ds047": [ - "Ooh, that's a high one.", - "You'll need to jump,", - "then jump again in the air to get up there." + "Aah, essa é bem alta.", + "Você vai precisar pular,", + "e pular novamente no ar para chegar lá em cima." ], "ds048": [ - "Hit 'em again, Jak!" + "Bata neles de novo, Jak!" ], "ds049": [ - "Do a spin kick!" + "Dê um chute giratório!" ], "ds050": [ - "Robotank, run!" + "Robô-tanque, corra!" ], "ds051": [ - "Hey, we should stay with Sig." + "Ei, nós deveríamos ficar com o Sig." ], "ds052": [ - "Hey, big guy, keep close, huh?" + "Ei, grandalhão, fique por perto, hein?" ], "ds053": [ - "We're too far away from Sig." + "Estamos muito longe do Sig." ], "ds054": [ - "Stick with the plan, Jak, protect Sig!" + "Siga o plano, Jak, proteja o Sig!" ], "ds055": [ - "Uh oh, where's Sig?" + "Uh oh, cadê o Sig?" ], "ds056": [ - "Wow, what a blast!" + "Uau, que explosão!" ], "ds057": [ - "Sig's a good shot." + "Sig é um bom atirador." ], "ds058": [ - "Go help Sig!" + "Vá ajudar o Sig!" ], "ds059": [ - "Nice shootin', Sig!" + "Belo tiro, Sig!" ], "ds060": [ - "You're my hero!" + "Você é meu herói!" ], "ds061": [ - "Uh oh, Sig's in trouble!" + "Uh oh, Sig está em apuros!" ], "ds062": [ - "There's another Metal Head going after our boy!", - "Shoot it, shoot it!" + "Há outro Cabeça de Metal indo atrás do nosso garoto!", + "Atire nele, atire nele!" ], "ds063": [ - "Keep Sig safe, Jak!" + "Mantenha o Sig seguro, Jak!" ], "ds064": [ - "Whoa, Sig's really getting roughed up!" + "Uau, o Sig está tomando uma surra!" ], "ds065": [ - "Shoot 'em, shoot 'em!" + "Atire neles, atire neles!" ], "ds066": [ - "Sig dies, we die." + "Sig morre, nós morremos." ], "ds067": [ - "Oof, we suck..." + "Oof, somos péssimos..." ], "ds068": [ - "We have to keep 'em away from Sig." + "Temos que mantê-los longe do Sig." ], "ds069": [ - "We need to find the valve to turn the water back on." + "Precisamos encontrar a válvula para religar a água." ], "ds094": [ - "Robotank, run!" + "Robô-tanque, corra!" ], "ds095": [ - "Here comes that tank again!" + "Aí vem aquele tanque de novo!" ], "ds096": [ - "Get the tank to shoot the missile!" + "Faça o tanque atirar no míssil!" ], "ds099": [ - "We need to get to the top of that tower!" + "Precisamos chegar ao topo daquela torre!" ], "ds100": [ - "Climb the ruined tower, Jak!" + "Escale a torre arruinada, Jak!" ], "ds111": [ - "We should come back with the Titan Suit to do this path." + "Deveríamos voltar com o Titã para fazer esse caminho." ], "ds112": [ - "You've got a mechanical fist, Jak. Use it!" + "Você tem um punho mecânico, Jak. Use-o!" ], "ds113": [ - "Break the door!" + "Quebre a porta!" ], "ds114": [ - "800 pound Tigorilla comin' through!" + "O Tigorila de 400 quilos está se aproximando!" ], "ds115": [ - "Smashing work, Jak! Oh, that was funny." + "Excelente trabalho, Jak! Ah, isso foi divertido." ], "ds116": [ - "Shoot the platform, Jak." + "Atire na plataforma, Jak." ], "ds117": [ "We need something to get through that gate." @@ -2294,7 +2294,7 @@ "Good, we're through." ], "ds129": [ - "Shoot the gun, Jak!" + "Atire na arma, Jak!" ], "ds143": [ "We're supposed to keep Krew's guys alive, Jak!" @@ -2343,7 +2343,7 @@ "Back up to get out of the mech." ], "ds165": [ - "We're free, Jak! Thanks to me.", + "Estamos livres, Jak! Graças a mim.", "Nice to breathe some fresh air, huh?", "We'll get that Baron Praxis guy, alright!" ], @@ -2368,31 +2368,31 @@ "Whoa-whoa-oaa-ah!" ], "ds176": [ - "Whoa!" + "Epa!" ], "ds177": [ - "Hey!" + "Ei!" ], "ds178": [ - "Hey, watch that!" + "Ei, veja aquilo!" ], "ds179": [ "Ooh!" ], "ds180": [ - "Oh, boy!" + "Ah, garoto!" ], "ds181": [ "Uooaaoh!" ], "ds182": [ - "Wow, that was close!" + "Uau, isso foi por pouco!" ], "ds183": [ "Oh, boy!" ], "ds184": [ - "Yes!" + "Sim!" ], "ds185": [ "Yeah!" @@ -2410,43 +2410,43 @@ "Orange Lightning coming through!" ], "ds190": [ - "Rollin' with the homies!" + "Curtindo com os camaradas!" ], "ds191": [ - "You're mine!" + "Você é meu!" ], "ds192": [ - "There they are!" + "Lá estão eles!" ], "ds193": [ - "Hey! Watch where you're drivin'!" + "Ei! Cuidado por onde dirige!" ], "ds194": [ - "How do I drive this thing?" + "Como eu dirijo esta coisa?" ], "ds195": [ - "Yeah, that's right! I'm bad!" + "Sim, isso é verdade! Eu sou mau!" ], "ds196": [ - "Outta my way!" + "Saia da frente!" ], "ds197": [ - "Outta my way!" + "Saia da frente!" ], "ds198": [ "Move it or lose it, buddy!" ], "ds199": [ - "Mm... bye-bye!" + "Mm... Tchauzinho!" ], "ds200": [ - "Last lap!" + "Última volta!" ], "ds201": [ - "Come on, come on!" + "Vamos lá, vamos!" ], "ds202": [ - "Come on, come on, come on!" + "Vamos, vamos, vamos!" ], "ds203": [ "Pedal to the metal!" @@ -2455,43 +2455,43 @@ "Ooooah, I gotta catch up!" ], "ds205": [ - "Turn and burn, baby!" + "Vire e queime, bebê!" ], "ds206": [ - "Oooh, it's gonna be close!" + "Oooh, vai ser por pouco!" ], "ds207": [ - "Eat my dust, buddy!" + "Coma minha poeira, amigo!" ], "ds208": [ - "Gotcha!" + "Te peguei!" ], "ds209": [ - "This is my track, grandma!" + "Esta é a minha pista, vovó!" ], "ds210": [ - "Learn to drive!" + "Aprenda a dirigir!" ], "ds211": [ - "Turn, turn!" + "Vire, vire!" ], "ds212": [ - "Step on it!" + "Pisa fundo!" ], "ds213": [ - "Oooh, I won, I won!" + "Oooh, eu ganhei, eu ganhei!" ], "ds214": [ - "Yeee, that's a good lap time." + "Sim, foi um bom tempo de volta." ], "ds215": [ - "Oh, yeah! I'm rockin'!" + "Ah, sim! Estou arrasando!" ], "ds216": [ - "Another lap in the record book!" + "Mais uma volta no livro dos recordes!" ], "ds217": [ - "Take a good look at my tail!" + "Dê uma boa olhada na minha cauda!" ], "ds218": [ "Wahoo!" @@ -2525,10 +2525,10 @@ "Lookie what we found!" ], "ds228": [ - "You recognize this monster?" + "Você reconhece este monstro?" ], "ds229": [ - "We did it! We saved them all!" + "Nós conseguimos! Nós salvamos todos eles!" ], "ds230": [ "Catch the paddywagon, Jak!" @@ -2543,13 +2543,13 @@ "He's smoking, Jak! Hit him again!" ], "ds234": [ - "That caused some damage!" + "Isso causou algum dano!" ], "ds235": [ "One more like that and he's through!" ], "ds236": [ - "Find the next vehicle!" + "Encontre o próximo veículo!" ], "ds237": [ "Yes, we took it out!" @@ -2621,7 +2621,7 @@ "Jump the gap!" ], "ds260": [ - "Yeah, you hit him!" + "Boa, você acertou ele!" ], "ds261": [ "As if there wasn't enough of Krew already." @@ -2633,19 +2633,19 @@ "There's the real Krew! Shoot him!" ], "ds264": [ - "You got him!" + "Você pegou ele!" ], "ds265": [ - "Watch your back, Jak!" + "Cuidado com a retaguarda, Jak!" ], "ds266": [ - "They're comin' again!" + "Eles estão vindo de novo!" ], "ds267": [ - "Now you've got us mad." + "Agora você nos deixou furiosos." ], "ds268": [ - "Good shot, Jak! The big man is hurtin' now." + "Bom tiro, Jak! O grandalhão está se doendo agora." ], "ds269": [ "And the challenger is down for the count!" @@ -2657,16 +2657,16 @@ "Wooh, here come some Metal Heads!" ], "ds272": [ - "Protect the kid!" + "Proteja a criança!" ], "ds273": [ - "Kill all the Metal Heads!" + "Mate todos os Cabeças de Metal!" ], "ds274": [ - "More Metal Heads!" + "Mais Cabeças de Metal!" ], "ds275": [ - "Shoot Kor's legs out, Jak!" + "Arranque as pernas de Kor com um tiro, Jak!" ], "ds276": [ "He's down, Jak! Hit him in the head!" @@ -2675,7 +2675,7 @@ "Boot to the head, boot to the head!" ], "ds278": [ - "I think we should hide somewhere!" + "Acho que devemos nos esconder em algum lugar!" ], "ds279": [ "Take cover before he blows!" @@ -2687,13 +2687,13 @@ "Oh, man, now he's angry!" ], "ds282": [ - "Get him, Jak!" + "Pegue ele, Jak!" ], "ds283": [ - "He's gonna shoot!" + "Ele vai atirar!" ], "ds284": [ - "Nice hit, partner!" + "Belo golpe, parceiro!" ], "ds285": [ "That had to hurt him." @@ -2721,25 +2721,25 @@ "direction!" ], "ds306": [ - "You gotta shoot the switch, Jak!" + "Você precisa atirar no interruptor, Jak!" ], "ds307": [ "Find the switch to change the conveyor's direction!" ], "ds321": [ - "Take out the turrets!" + "Destrua as torres!" ], "ds322": [ - "Hit the turrets, Jak!" + "Acerte as torres, Jak!" ], "ds323": [ "Doin' some damage!" ], "ds324": [ - "Get in the Titan Suit!" + "Entre no Titã!" ], "ds325": [ - "Shoot that ship!" + "Atire naquela nave!" ], "ds326": [ "Yeah, that ship's feelin' it now!" @@ -2754,7 +2754,7 @@ "The ship's goin' down! You did it, Jak!" ], "ds353": [ - "That must be the missile Torn wants us to blow up!" + "Esse deve ser o míssil que o Torn quer que explodamos!" ], "ds354": [ "Break those tubes in the center, Jak!" @@ -2796,10 +2796,10 @@ "You have to get the blocks in the slots faster!" ], "ds408": [ - "Run, Jak!" + "Corre, Jak!" ], "ds409": [ - "Keep moving!" + "Continue se mexendo!" ], "ds410": [ "We gotta stay ahead of that thing!" @@ -2942,7 +2942,7 @@ "Let's go see Onin and her crazy monkey bird." ], "ds503": [ - "I think we need to go back to the city, Jak." + "Acho que precisamos voltar para a cidade, Jak." ], "dsek001": [ "Kid! Stay with him, Jak!" @@ -2960,7 +2960,7 @@ "Uh oh, here comes trouble!" ], "dsek006": [ - "More guards!?" + "Mais guardas!?" ], "dsek007": [ "Kid, please! You're killin' me!" @@ -3101,16 +3101,16 @@ "HA!" ], "ero040": [ - "NO!" + "NÃO!" ], "ero041": [ - "NOOOOO!" + "NÃOOOOO!" ], "ero042": [ "AHHHHHH!" ], "ero043": [ - "Here we go." + "E lá vamos nós." ], "ero044": [ "See you later." @@ -3119,37 +3119,37 @@ "Fool! You cannot defeat me." ], "ero046": [ - "You missed a ring." + "Você perdeu uma argola." ], "ero047": [ - "This race is mine!" + "Esta corrida é minha!" ], "ero048": [ - "You can never be as fast as me!" + "Você nunca será tão rápido quanto eu!" ], "ero049": [ - "Keira wants a real man." + "Keira quer um homem de verdade." ], "ero050": [ - "Bad luck, old chap." + "Azar, meu velho." ], "ero051": [ - "Nice try." + "Bela tentativa." ], "ero052": [ "Move over!" ], "ero053": [ - "Out of my way!" + "Saia do meu caminho!" ], "ero054": [ "Coming through!" ], "ero055": [ - "Bye bye!" + "Tchauzinho!" ], "ero056": [ - "Here I come!" + "Aqui estou eu!" ], "ero057": [ "Get used to watching my back!" @@ -3161,49 +3161,49 @@ "Looking sloppy, Jak." ], "ero060": [ - "Give it up!" + "Desista!" ], "ero061": [ - "Not this time." + "Não desta vez." ], "ero062": [ - "Getting a bit nervous?" + "Ficando nervosinho?" ], "ero063": [ - "Come back here!" + "Volte aqui!" ], "ero064": [ - "Move over, slowpoke!" + "Saia da frente, mané!" ], "ero065": [ - "This is where I beat you." + "É aqui que eu te derroto." ], "ero066": [ - "Final stretch!" + "Reta final!" ], "ero067": [ - "It's over!" + "Acabou!" ], "ero068": [ - "I own this city." + "Essa cidade é minha." ], "ero069": [ - "What? Where'd you come from?" + "Quê? De onde você veio?" ], "ero070": [ - "You're just lucky." + "Você é muito sortudo." ], "ero071": [ - "You can't handle the speed!" + "Você não consegue manter essa velocidade!" ], "ero072": [ - "Die, freak." + "Morra, esquisitão." ], "ero073": [ - "No!" + "Não!" ], "ero074": [ - "STOP!" + "PARE!" ], "ero075": [ "Hahahaha!" @@ -3366,7 +3366,7 @@ "I got a bad feeling about this place." ], "hal022": [ - "Uh oh, I think I wet myself." + "Uh oh, acho que me molhei." ], "hal023": [ "No! Please!" @@ -3540,7 +3540,7 @@ "You're earning your dough today. Let's finish this!" ], "hal083": [ - "I'm impressed, Jak. I'll put in a good word with the boss." + "Estou impressionado, Jak. Vou dar uma boa palavra ao chefe." ], "hal084": [ "Yeah, do it, Jinx." @@ -4142,7 +4142,7 @@ "You can jump on your JET-Board!" ], "kei003": [ - "Jump up on that ledge." + "Pule naquela plataforma." ], "kei004": [ "Try jumping up on that crate." @@ -4151,17 +4151,17 @@ "Jump over that obstacle." ], "kei006": [ - "You can get a higher jump by ducking before you jump!" + "Você saltar mais alto se agachar antes de pular!" ], "kei007": [ - "Try doing a duck jump over that obstacle." + "Tente fazer um salto agachado sobre aquele obstáculo." ], "kei008": [ "Jump and jump again a little after you've landed", "for an even bigger launch!" ], "kei009": [ - "Try getting up on that higher ledge with a boost jump!" + "Tente subir naquela plataforma alta com um salto de impulso!" ], "kei010": [ "You can spin in the air!" @@ -4233,22 +4233,22 @@ "in it. Come see me at the Stadium." ], "kg001": [ - "Call for backup!" + "Solicite reforços!" ], "kg001a": [ - "Call for backup!" + "Solicite reforços!" ], "kg002": [ - "Freeze!" + "Parado!" ], "kg002a": [ - "Freeze!" + "Parado!" ], "kg004": [ - "Halt!" + "Alto lá!" ], "kg004a": [ - "Halt!" + "Alto lá!" ], "kg005": [ "Get more cruisers in here!" @@ -4257,10 +4257,10 @@ "Get more cruisers in here!" ], "kg006": [ - "Surrender!" + "Renda-se!" ], "kg006a": [ - "Surrender!" + "Renda-se!" ], "kg007": [ "This is a no-hover zone!" @@ -4269,31 +4269,31 @@ "This is a no-hover zone!" ], "kg008": [ - "Pull over!" + "Encosta!" ], "kg008a": [ - "Pull over!" + "Encosta!" ], "kg009": [ - "Say good night!" + "Diga boa noite!" ], "kg010": [ - "Seal off the area." + "Isole a área." ], "kg011": [ - "Stop the vehicle!" + "Pare o veículo!" ], "kg011a": [ - "Stop the vehicle!" + "Pare o veículo!" ], "kg012": [ - "You're under arrest!" + "Você está preso!" ], "kg012a": [ - "You're under arrest!" + "Você está preso!" ], "kg013": [ - "You there!" + "Você aí!" ], "kg014": [ "You want some?!" @@ -4302,85 +4302,85 @@ "This area is off-limits." ], "kg016": [ - "Stop!" + "Pare!" ], "kg018": [ - "Hey!" + "Ei!" ], "kg019": [ - "We do this the easy way, or the hard way." + "Fazemos isso da maneira simples ou da maneira difícil." ], "kg020": [ - "Slow down!" + "Reduza a velocidade!" ], "kg020a": [ - "Slow down!" + "Reduza a velocidade!" ], "kg021": [ - "Move over!" + "Saia da frente!" ], "kg021a": [ - "Move over!" + "Saia da frente!" ], "kg022": [ - "Call in more Hellcats!" + "Solicite mais Hellcats!" ], "kg023": [ - "Requesting backup!" + "Solicitando reforços!" ], "kg023a": [ - "Requesting backup!" + "Solicitando reforços!" ], "kg024": [ - "Suspect on foot!" + "Suspeito a pé!" ], "kg024a": [ - "Suspect on foot!" + "Suspeito a pé!" ], "kg025": [ - "Suspect in vehicle!" + "Suspeito em um veículo!" ], "kg025a": [ - "Suspect in vehicle!" + "Suspeito em um veículo!" ], "kg026": [ - "Suspect fleeing into sector five!" + "Suspeito fugindo para o setor cinco!" ], "kg026a": [ - "Suspect fleeing into sector five!" + "Suspeito fugindo para o setor cinco!" ], "kg027": [ - "Suspect moving to sector six!" + "Suspeito indo para o setor seis!" ], "kg027a": [ - "Suspect moving into sector six!" + "Suspeito indo para o setor seis!" ], "kg028": [ - "High-speed chase in sector four!" + "Perseguição em alta velocidade no setor quatro!" ], "kg028a": [ - "High-speed chase in sector four!" + "Perseguição em alta velocidade no setor quatro!" ], "kg029": [ - "Checking sector three." + "Averiguando o setor três." ], "kg029a": [ - "Checking sector three." + "Averiguando o setor três." ], "kg030": [ - "Patrolling sector nine." + "Patrulhando o setor nove." ], "kg030a": [ - "Patrolling sector nine." + "Patrulhando o setor nove." ], "kg031": [ - "Be advised, I'm on foot." + "Fique atento, estou a pé." ], "kg031a": [ - "Be advised, I'm on foot." + "Fique atento, estou a pé." ], "kg032": [ - "Moving to next sector." + "Indo para o próximo setor." ], "kg032a": [ "Moving to next sector." @@ -4455,10 +4455,10 @@ "I lost him." ], "kg045": [ - "Subject is not in sight." + "Perdi o sujeito de vista." ], "kg045a": [ - "Subject not in sight." + "Perdi o sujeito de vista." ], "kg046": [ "He's gone." @@ -4515,82 +4515,82 @@ "Searching sector seven." ], "kg055": [ - "Searching sector three." + "Procurando no setor três." ], "kg055a": [ - "Searching sector three." + "Procurando no setor três." ], "kg056": [ - "Keep looking." + "Continue procurando." ], "kg056a": [ - "Keep looking." + "Continue procurando." ], "kg057": [ - "He's got to be here somewhere." + "Ele tem que estar aqui em algum lugar." ], "kg057a": [ - "He's got to be here somewhere." + "Ele tem que estar aqui em algum lugar." ], "kg058": [ - "I can't find him." + "Não consigo encontrá-lo." ], "kg058a": [ - "I can't find him." + "Não consigo encontrá-lo." ], "kg059": [ - "No sign of the subject." + "Nenhum sinal do sujeito." ], "kg059a": [ - "No sign of the subject." + "Nenhum sinal do sujeito." ], "kg060": [ - "I don't see him anywhere." + "Não o vejo em lugar nenhum." ], "kg060a": [ - "I don't see him anywhere." + "Não o vejo em lugar nenhum." ], "kg061": [ - "Still searching." + "Ainda procurando." ], "kg061a": [ - "Still searching." + "Ainda procurando." ], "kg062": [ - "Searching for the target." + "Procurando o alvo." ], "kg062a": [ - "Searching for the target." + "Procurando o alvo." ], "kg063": [ - "He must be here." + "Ele deve estar aqui." ], "kg063a": [ - "He must be here." + "Ele deve estar aqui." ], "kg064": [ - "He was just here." + "Ele estava bem aqui." ], "kg064a": [ - "He was just here." + "Ele estava bem aqui." ], "kg065": [ - "We lost him." + "Nós o perdemos." ], "kg065a": [ - "We lost him." + "Nós o perdemos." ], "kg066": [ - "He got away." + "Ele fugiu." ], "kg066a": [ - "He got away." + "Ele fugiu." ], "kg067": [ - "He escaped." + "Ele escapou." ], "kg067a": [ - "He escaped." + "Ele escapou." ], "kg068": [ "He shook us." @@ -4617,10 +4617,10 @@ "There he is!" ], "kg072": [ - "Be advised, target in sight." + "Fique atento, alvo na mira." ], "kg072a": [ - "Be advised, target in sight!" + "Fique atento, alvo na mira." ], "kg073": [ "We have a positive ID." @@ -4761,28 +4761,28 @@ "Take him out!" ], "kg096": [ - "Prisoner escape in progress, sound the alarm!" + "Fuga de prisioneiro em andamento, soe o alarme!" ], "kg096a": [ "Prison escape in progress, sound the alarm!" ], "kg097": [ - "Prisoner on level two!" + "Prisioneiro no segundo andar!" ], "kg097a": [ - "Prisoner on level two!" + "Prisioneiro no segundo andar!" ], "kg098": [ - "Prisoner moving to sub-level B!" + "Prisioneiro indo para o subsolo B!" ], "kg098a": [ - "Prisoner moving to sub-level B!" + "Prisioneiro indo para o subsolo B!" ], "kg099": [ - "We think he's in the pipes!" + "Achamos que ele está na tubulação!" ], "kg099a": [ - "We think he's in the pipes!" + "Achamos que ele está na tubulação!" ], "kg100": [ "We're beginning our sweep." @@ -4791,10 +4791,10 @@ "We're beginning our sweep." ], "kg101": [ - "We have prisoner in sight, move in!" + "Temos o prisioneiro à vista, mexa-se!" ], "kg101a": [ - "We have prisoner in sight, move in!" + "Temos o prisioneiro à vista, mexa-se!" ], "kg102": [ "We have movement on level one!" @@ -4821,28 +4821,28 @@ "Secure the cell block!" ], "kg106": [ - "Take no prisoners!" + "Não faça prisioneiros!" ], "kg106a": [ - "Take no prisoners!" + "Não faça prisioneiros!" ], "kg107": [ - "Prisoner sighted, we got him!" + "Prisioneiro avistado, pegamos ele!" ], "kg107a": [ - "Prisoner sighted, we got him!" + "Prisioneiro avistado, pegamos ele!" ], "kg108": [ - "Prisoner is still on the loose!" + "O prisioneiro ainda está à solta!" ], "kg108a": [ - "Prisoner is still on the loose!" + "O prisioneiro ainda está à solta!" ], "kg109": [ - "We think he's going for an exit!" + "Achamos que ele está indo para uma saída!" ], "kg109a": [ - "We think he's going for an exit!" + "Achamos que ele está indo para uma saída!" ], "kg110": [ "Searching rooms." @@ -4851,10 +4851,10 @@ "Searching rooms." ], "kg111": [ - "Prisoner loose in complex." + "Prisioneiro à solta no complexo." ], "kg111a": [ - "Prisoner loose in complex." + "Prisioneiro à solta no complexo." ], "kg112": [ "You are authorized to shoot to kill." @@ -4893,10 +4893,10 @@ "Activate riot tanks." ], "kg118": [ - "Riot tank has prisoner in sight." + "O Tanque de Choque está com o prisioneiro à vista." ], "kg118a": [ - "Riot tank has prisoner in sight." + "O Tanque de Choque está com o prisioneiro à vista." ], "kg119": [ "Intruder alert." @@ -4917,16 +4917,16 @@ "Please advise, subject's description." ], "kg122": [ - "I've got civvies in sight." + "Tenho civis na mira." ], "kg122a": [ - "I've got civvies in sight." + "Tenho civis na mira." ], "kg123": [ - "I've got suspects in sight." + "Tenho suspeitos na mira." ], "kg123a": [ - "I've got suspects in sight." + "Tenho suspeitos na mira." ], "kg124": [ "I hate the smell of this part of the city." @@ -5004,7 +5004,7 @@ "Go, go, go!" ], "kg140": [ - "Flank 'em!" + "Cerquem eles!" ], "kg141": [ "Move in!" @@ -5022,7 +5022,7 @@ "Shoot 'em, shoot 'em!" ], "kg146": [ - "Die, outlaw!" + "Morra, marginal!" ], "kg147": [ "You're history!" @@ -5040,7 +5040,7 @@ "Here's one for the Guard!" ], "kg152": [ - "Give it up, outlaw!" + "Desista, marginal!" ], "kg153": [ "Here's some pain!" @@ -5441,13 +5441,13 @@ "I'm gonna start shooting you." ], "kg207": [ - "Did you collect your bribes this week?" + "Você cobrou suas propinas esta semana?" ], "kg207a": [ - "You collect your bribes this week?" + "Você cobrou suas propinas esta semana?" ], "kg207b": [ - "You collect your bribes this week?" + "Você cobrou suas propinas esta semana?" ], "kg208": [ "Shhh..." @@ -5762,7 +5762,7 @@ "Suspect has suspicious cargo!" ], "kg249a": [ - "We think it's an illegal shipment." + "Achamos que se trata de uma remessa ilegal." ], "kg250a": [ "All units close in on vehicle!" @@ -5807,19 +5807,19 @@ "We've had a transport ambush, units respond!" ], "kg264a": [ - "He's picking up a prisoner!" + "Ele está pegando um prisioneiro!" ], "kg265a": [ - "We lost a Lurker prisoner." + "Perdemos um prisioneiro Lurker." ], "kg266a": [ - "He's got a Lurker prisoner with him!" + "Tem um prisioneiro Lurker com ele!" ], "kg267a": [ "Take 'em all out!" ], "kg268a": [ - "We think he's helping the Lurkers escape!" + "Achamos que ele está ajudando os Lurkers a escapar!" ], "kg269a": [ "He's taken out two of our transports already!" @@ -5906,7 +5906,7 @@ "Suspect's vehicle moving through section seven." ], "kg297a": [ - "We think the kid's with that Underground freak." + "Achamos que o garoto está com aquele esquisitão do Subterrâneo." ], "kg298a": [ "Take 'em out, but keep the kid alive!" @@ -6322,7 +6322,7 @@ "Shoot 'em, shoot 'em!" ], "kgv007": [ - "Die, outlaw!" + "Morra, marginal!" ], "kgv008": [ "Eat this!" @@ -6331,7 +6331,7 @@ "Fire, fire!" ], "kgv010": [ - "Give it up, outlaw!" + "Desista, marginal!" ], "kgv011": [ "Seal off the area!" @@ -6405,11 +6405,11 @@ "so watch out, 'ey?" ], "krew002": [ - "Excellent work, Jak. Even I am impressed.", - "I should keep unscrupulous Krimzon Guards", - "out of our business.", - "What's the world coming to when you can't buy off", - "a few guards with bribes?" + "Excelente trabalho, Jak. Até eu estou impressionado.", + "Devo manter os inescrupulosos Guardas Krimzon", + "fora dos nossos negócios.", + "O que será do mundo quando você não puder comprar", + "alguns guardas com propinas?" ], "krew003": [ "Ooooh... the bedtime stories were true!", @@ -6485,7 +6485,7 @@ "I grow weary of this. We end it now." ], "kwbf014": [ - "Hm-hm, I move pretty fast for a big man, 'ey?" + "Hm-hm, eu me movo bem rápido para um grandalhão, né?" ], "kwbf015": [ "I float like a butterfly and sting like a wumpbee!" @@ -6742,13 +6742,13 @@ "it is your only way out." ], "prop004": [ - "Don't try to make a fool out of me, Jak.", - "Just because I haven't killed you yet doesn't", - "mean I'm not onto you. The citizens of this city", - "worship me because I offer them safety.", - "All I ask in return is for their lives.", - "I'll find you, and when I do, you'll wish", - "you died in prison." + "Não tente me fazer de bobo, Jak.", + "Só porque eu não te matei ainda não", + "significa que não estou atrás de você. Os cidadãos desta cidade", + "me adoram porque eu lhes ofereço segurança.", + "Tudo o que peço em troca é a vida deles.", + "Eu o encontrarei e, quando encontrá-lo, você desejará", + "ter morrido na prisão." ], "prop005": [ "Attention, my loyal citizens! We are looking for a", @@ -6757,7 +6757,7 @@ "dangerous and can somehow change into a monstrous", "creature. We have reports he is working with the", "Metal Heads to subvert your city and your safety.", - "Report all sightings immediately!" + "Relate todos os avistamentos imediatamente!" ], "prop006": [ "Brave citizens, today is the anniversary of the great", @@ -6867,7 +6867,7 @@ "Shun those who would defy me!" ], "prop035": [ - "I am the face of Haven City." + "Eu sou a cara da Cidade Bastião." ], "prop036": [ "Without my strength, there would be no city." @@ -6882,7 +6882,7 @@ "Defy... and die." ], "prop040": [ - "Welcome to Haven City!", + "Bem-vindo à Cidade Bastião!", "All laws are enforced for your safety.", "Obey me and you will not be punished." ], @@ -7082,7 +7082,7 @@ "with a wide field of fire." ], "sigc003": [ - "To fire the weapon, press the trigger." + "Para disparar a arma, pressione o gatilho." ], "sigc004": [ "Good! Some kick, huh?" @@ -7229,7 +7229,7 @@ "Perfect round! You are the man." ], "sigc064": [ - "Perfect shooting! I'm impressed." + "Disparo perfeito! Estou impressionado." ], "sigc065": [ "Whoa, rock and roll, baby! That was a perfect round." @@ -7456,7 +7456,7 @@ "Later alligator." ], "sigt068": [ - "I think that's the last we'll see of him." + "Acho que essa é a última vez que o veremos." ], "sigt069": [ "You figure this out, I'll cover your butt." @@ -7574,7 +7574,7 @@ ], "tor003": [ "That's it, Jak, you're up! Try not to trigger any alarms, the garrison guards will be tough.", - "Get to the prison cell block and find the prisoners. Once there, we'll turn on the Warp Gate inside to get you all back out. Good luck." + "Vá até o bloco de celas da prisão e encontre os prisioneiros. Quando chegar lá, ligaremos o Portal de Dobra para tirá-los de lá. Boa sorte." ], "tor004": [ "Ok, my old access codes should help Vin turn off the magnetic seal for the Fortress door." @@ -7774,7 +7774,7 @@ "Good work!" ], "vin004": [ - "You still haven't gotten all the Metal Head eggs!", + "Você ainda não pegou todos os ovos dos Cabeças de Metal!", "Make sure you get 'em all, or I'm gonna have", "a nervous breakdown!" ], @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", @@ -7852,4 +7854,4 @@ "youngsamos": "Young Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_pt-PT.json b/game/assets/jak2/subtitle/subtitle_lines_pt-PT.json index 9a90ac7427..ca518b0ff4 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_pt-PT.json +++ b/game/assets/jak2/subtitle/subtitle_lines_pt-PT.json @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oráculo", @@ -7852,4 +7854,4 @@ "youngsamos": "Young Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/subtitle/subtitle_lines_sv-SE.json b/game/assets/jak2/subtitle/subtitle_lines_sv-SE.json index 1eedfcf5e8..afcaf059c6 100644 --- a/game/assets/jak2/subtitle/subtitle_lines_sv-SE.json +++ b/game/assets/jak2/subtitle/subtitle_lines_sv-SE.json @@ -7839,6 +7839,8 @@ "kor": "Kor", "krew": "Krew", "metalkor": "Metal Kor", + "metalkor-before-consite": "Metal Head Leader", + "metalkor-intro": "???", "mog": "Mog", "onin": "Onin", "oracle": "Oracle", @@ -7852,4 +7854,4 @@ "youngsamos": "Young Samos", "youngsamos-before-rescue": "Samos" } -} +} diff --git a/game/assets/jak2/text/game_custom_text_ca-ES.json b/game/assets/jak2/text/game_custom_text_ca-ES.json index 5c3379b00f..f9a2027239 100644 --- a/game/assets/jak2/text/game_custom_text_ca-ES.json +++ b/game/assets/jak2/text/game_custom_text_ca-ES.json @@ -1,46 +1,46 @@ { - "1a3": "Please Do Not Remove Or Insert Any Peripherals, Turn Off Your System Or Shut Down The Game", - "1b5": "While This Icon Is On Screen, Do Not Remove Or Insert Any Peripherals, Turn Off Your System Or Shut Down The Game", - "1100": "Not in a mission", - "1101": "Playing a bonus mission", - "1102": "Scatter Gun Training Course", - "1103": "Blaster Training Course", - "1104": "Vulcan Fury Training Course", - "1105": "Peace Maker Training Course", - "1106": "Onin Game", - "1107": "Metal Head Mash", - "1200": "Display Mode", - "1201": "Windowed", - "1202": "Fullscreen", - "1203": "Borderless", - "1204": "Automatic", - "1205": "Custom", + "1a3": "Si us plau, no traieu ni introduïu cap perifèric, apagueu el vostre sistema o apagueu el joc", + "1b5": "Mentre aquesta icona estigui a la pantalla, no traieu ni inseriu cap perifèric, apagueu el vostre sistema o apagueu el joc", + "1100": "No en una missió", + "1101": "Jugant a una missió extra", + "1102": "Curs de formació de pistola de dispersió", + "1103": "Curs de formació Blaster", + "1104": "Curs de formació de la fúria vulcaniana", + "1105": "Curs de Formació Peace Maker", + "1106": "Sóc el Joc", + "1107": "Puré de cap de metall", + "1200": "Mode de visualització", + "1201": "Finestrat", + "1202": "Pantalla completa", + "1203": "Sense fronteres", + "1204": "Automàtic", + "1205": "Personalitzat", "1206": "4x3 (PS2)", "1207": "16x9 (PS2)", - "1208": "Choose width and height ratio", - "1209": "Press to confirm and exit.", - "120a": "Press to confirm and exit.", - "120b": "Ratio must not be lower than 4x3!", - "120c": "Music Player", - "120d": "V-Sync", - "120e": "Text Language", - "120f": "OpenGOAL Secrets", - "1210": "Width", - "1211": "Height", + "1208": "Trieu la relació d'amplada i alçada", + "1209": "Premeu per confirmar i sortir.", + "120a": "Premeu per confirmar i sortir.", + "120b": "La relació no ha de ser inferior a 4x3!", + "120c": "Reproductor de música", + "120d": "Sincronització V", + "120e": "Llenguatge del text", + "120f": "Secrets d'OpenGOAL", + "1210": "Amplada", + "1211": "Alçada", "1212": "??????????", - "1213": "Now playing...", - "1214": "No Track", - "1215": "Default", + "1213": "Ara jugant...", + "1214": "Sense pista", + "1215": "Per defecte", "1216": "Morph Gun", "1217": "JET-Board", - "1218": "Titan Suit", - "1219": "Dark Jak", + "1218": "Vestit Titan", + "1219": "Jak fosc", "121a": "Vehicle", - "121b": "Danger", - "121c": "None", - "121d": "Low", - "121e": "Medium", - "121f": "High", + "121b": "Perill", + "121c": "Cap", + "121d": "baix", + "121e": "Mitjana", + "121f": "Alt", "1220": "Haven Exploration", "1221": "Guard Pursuit", "1222": "Ram Head Battle (Alt)", @@ -65,137 +65,137 @@ "1235": "Weapons Factory", "1236": "Arena Race", "1237": "Dead Town", - "1238": "Window Size", - "1239": "Select Window Size", - "123a": "Game Resolution", - "123b": "Select Game Resolution", - "123c": "Level Of Detail (Background)", - "123d": "Level Of Detail (Foreground)", - "123f": "Show Speaker In Subtitle", - "1240": "Never", - "1241": "Off-Screen", - "1242": "Always", - "1243": "Game Territory", - "1244": "America (SCEA)", - "1245": "Europe (SCEE)", - "1246": "Japan (SCEI)", - "1247": "Korea (SCEK)", + "1238": "Mida de la finestra", + "1239": "Seleccioneu Mida de la finestra", + "123a": "Resolució del joc", + "123b": "Seleccioneu Resolució del joc", + "123c": "Nivell de detall (de fons)", + "123d": "Nivell de detall (primer pla)", + "123f": "Mostra l'altaveu al subtítol", + "1240": "Mai", + "1241": "Fora de la pantalla", + "1242": "Sempre", + "1243": "Territori de joc", + "1244": "Amèrica (SCEA)", + "1245": "Europa (SCEE)", + "1246": "Japó (SCEI)", + "1247": "Corea (SCEK)", "1248": "MSAA", "1249": "~DX", - "124a": "Controller LED Options", - "124b": "Show Player State", - "124c": "Show Amount of Health", - "124d": "Disable Auto-Save", - "124e": "Auto-Save Disabled", - "124f": "Are You Sure You Want To Disable Auto-Save?", - "1250": "Turbo JET-Board in Haven City", - "1251": "Enemy Health Bars", - "1252": "Vehicle Health Bars", - "1253": "Vehicle Invulnerability", - "1254": "Statistics", - "1255": "Automatically Grab Collectables", - "1256": "Music Player", - "1257": "No Textures Mode", - "1258": "Fast Movies", - "1259": "Slow Movies", - "125a": "Fast Gameplay", - "125b": "Slow Gameplay", - "125c": "Instant Travel in Haven City", + "124a": "Opcions de LED del controlador", + "124b": "Mostra l'estat del jugador", + "124c": "Mostra la quantitat de salut", + "124d": "Desactivar l'emmagatzematge automàtic", + "124e": "Desa automàticament desactivat", + "124f": "Esteu segur que voleu desactivar el desament automàtic?", + "1250": "Turbo JET-Board a Haven City", + "1251": "Barres de salut de l'enemic", + "1252": "Barres de salut de vehicles", + "1253": "Invulnerabilitat del vehicle", + "1254": "Estadístiques", + "1255": "Agafa automàticament objectes de col-lecció", + "1256": "Reproductor de música", + "1257": "Mode sense textures", + "1258": "Pel-lícules ràpides", + "1259": "Pel-lícules lentes", + "125a": "Joc ràpid", + "125b": "Joc lent", + "125c": "Viatge instantani a Haven City", "125d": "Precursor Orb Tracker", - "125e": "Real Time Of Day", + "125e": "Hora real del dia", "125f": "Pacified Haven City", - "1260": "JET-Board Trick Display", - "1261": "Bad Weather", - "1262": "Nice Weather", - "1263": "Vehicle Hijack Voice Lines", - "1264": "Locked", - "1265": "Hit all 3 valves and find Mar's Statue in \"~S\" in under ~D seconds", - "1266": "Reduce Haven City's population count by ~D", - "1267": "Reduce Haven City's vehicle count by ~D", - "1268": "Hunt every species of Metal Head", - "1269": "Use the JET-Board to break open containers", - "126a": "Transport the Rift Rider while leaving Samos and Young Samos unscathed", - "1280": "Camera Options", - "1281": "Left/Right (1st Person)", - "1282": "Up/Down (1st Person)", - "1283": "Left/Right (3rd Person)", - "1284": "Up/Down (3rd Person)", - "1285": "Reset to Default", + "1260": "Pantalla de trucs JET-Board", + "1261": "Mal temps", + "1262": "Bon temps", + "1263": "Línies de veu de segrest de vehicles", + "1264": "Tancat", + "1265": "Premeu les 3 vàlvules i trobeu l'estàtua de Mar a \"~S\" en menys de ~D segons", + "1266": "Redueix el recompte de població de Haven City en ~D", + "1267": "Redueix el recompte de vehicles de Haven City en ~D", + "1268": "Caça totes les espècies de Cap de metall", + "1269": "Utilitzeu el JET-Board per trencar els contenidors", + "126a": "Transporteu el Rift Rider mentre deixeu Samos i Young Samos il-lesos", + "1280": "Opcions de la càmera", + "1281": "Esquerra/Dreta (1a persona)", + "1282": "Amunt/avall (1a persona)", + "1283": "Esquerra/Dreta (3a persona)", + "1284": "Amunt/avall (3a persona)", + "1285": "Restableix al valor predeterminat", "1286": "Normal", - "1287": "Inverted", - "1288": "Particle Culling", - "1289": "Discord Rich-Presence", - "128a": "Default", - "128b": "Low", - "128c": "High", - "128d": "Credits", - "128e": "Frame Rate", - "128f": "Miscellaneous", - "1290": "Speedrunner Mode", - "1291": "Input Options", - "1292": "Restore Defaults", - "1293": "Controller Options", - "1294": "Select Controller", - "1295": "Analog Deadzone", - "1296": "Ignore If Window Unfocused", - "1297": "Controller Led For Hp", - "1298": "Use LED for Other States", - "1299": "Enable Keyboard", - "129a": "Enable Mouse", - "129b": "Mouse Options", - "129c": "Track Camera", - "129d": "Horizontal Sensitivity", - "129e": "Vertical Sensitivity", - "129f": "Player Movement", - "12a0": "Object Shadows", + "1287": "Invertit", + "1288": "Eliminació de partícules", + "1289": "Presència rica en discòrdia", + "128a": "Per defecte", + "128b": "baix", + "128c": "Alt", + "128d": "Crèdits", + "128e": "Velocitat de fotogrames", + "128f": "Divers", + "1290": "Mode Speedrunner", + "1291": "Opcions d'entrada", + "1292": "Restaurar els valors predeterminats", + "1293": "Opcions del controlador", + "1294": "Seleccioneu Controlador", + "1295": "Zona morta analògica", + "1296": "Ignora si la finestra no està enfocada", + "1297": "Controlador LED per a Hp", + "1298": "Utilitzeu LED per a altres estats", + "1299": "Activa el teclat", + "129a": "Activa el ratolí", + "129b": "Opcions del ratolí", + "129c": "Càmera de seguiment", + "129d": "Sensibilitat horitzontal", + "129e": "Sensibilitat vertical", + "129f": "Moviment del jugador", + "12a0": "Ombres d'objectes", "12a1": "Normal", - "12a2": "Extended", - "12a3": "No valid resolutions found.", - "12a4": "Automatic", - "12a5": "Bestiary", - "12a6": "Other Statistics", - "12a7": "Total Killed", - "12a8": "Killed by Jak", - "12a9": "Killed by Dark Jak", - "12aa": "Killed by Daxter", - "12ab": "Killed by Others", + "12a2": "Estesa", + "12a3": "No s'han trobat resolucions vàlides.", + "12a4": "Automàtic", + "12a5": "Bestiari", + "12a6": "Altres estadístiques", + "12a7": "Total de morts", + "12a8": "Matat per Jak", + "12a9": "Matat per Dark Jak", + "12aa": "Matat per Daxter", + "12ab": "Matat per uns altres", "12ac": "Blaster", - "12ad": "Scatter Gun", - "12ae": "Vulcan Fury", - "12af": "Peacemaker", + "12ad": "Pistola de dispersió", + "12ae": "Fúria Vulcana", + "12af": "Pacificador", "12b0": "JET-Board", - "12b1": "JET-Board Trick", + "12b1": "Truc de JET-Board", "12b2": "Titan Suit Punch", - "12b3": "Titan Suit Body", + "12b3": "Cos de vestit Titan", "12b4": "Gunpod", - "12b5": "Punch", + "12b5": "Punxada", "12b6": "Flop", "12b7": "Uppercut", - "12b8": "Spin", - "12b9": "Roll", - "12bf": "Dark Bomb", - "12c0": "Dark Blast", - "12c3": "Krimzon Guard", - "12c4": "Sig", + "12b8": "Girar", + "12b9": "Rotlla", + "12bf": "Bomba fosca", + "12c0": "Explosió fosca", + "12c3": "Guàrdia Krimzon", + "12c4": "Digues", "12c5": "Ashelin", "12c6": "Jinx", "12c7": "Grim", "12c8": "Mog", - "12c9": "Metal Heads", - "12ca": "Other Friends", - "12cb": "Other Enemies", - "1300": "Auto Hide Cursor", - "1301": "Reassign Binds", - "1302": "Controller Binds", - "1303": "Keyboard Binds", - "1304": "Mouse Binds", - "1305": "No Options", - "1306": "Waiting", - "1307": "Unset", - "1308": "Unknown", - "1309": "High-Resolution Sky", - "130a": "Fast Airlocks and Doors", - "130b": "Fast Elevators", + "12c9": "Caps metàl-lics", + "12ca": "Altres Amics", + "12cb": "Altres Enemics", + "1300": "Oculta automàticament el cursor", + "1301": "Reassignar enllaços", + "1302": "El controlador enllaça", + "1303": "Enllaços de teclat", + "1304": "Enllaços del ratolí", + "1305": "Sense Opcions", + "1306": "Esperant", + "1307": "Desactivat", + "1308": "Desconegut", + "1309": "Cel d'alta resolució", + "130a": "Tancaments i portes ràpides", + "130b": "Ascensors ràpids", "130c": "Speedrun", "130d": "Any%", "130e": "Any% - Hoverless", @@ -203,34 +203,34 @@ "1310": "100%", "1311": "Any% - All Orbs", "1312": "Any% - Hero Mode", - "1313": "Local Time", - "1314": "Warning!", - "1315": "This setting is highly experimental. When not played at 60 frames per second, visual and gameplay issues may arise as a result.", - "1316": "Local Score", - "1320": "None", - "1321": "Spin", - "1322": "Boost", + "1313": "Hora local", + "1314": "Avís!", + "1315": "Aquesta configuració és altament experimental. Quan no es reprodueix a 60 fotogrames per segon, poden sorgir problemes visuals i de joc com a resultat.", + "1316": "Puntuació local", + "1320": "Cap", + "1321": "Girar", + "1322": "Estímul", "1323": "Flip", "1324": "Rail Grind", - "1325": "Rail Jump", - "1326": "Nosegrab", - "1327": "Method", - "1328": "Board Spin", - "1329": "Board Flip", - "132a": "Noseflip", + "1325": "Salt de ferrocarril", + "1326": "Agafar el nas", + "1327": "Mètode", + "1328": "Tauler de gir", + "1329": "Tauler Flip", + "132a": "Flip nasal", "132b": "Kickflip", - "132c": "Jump", - "132d": "Duck Jump", - "132e": "Quick Jump", - "132f": "Dark Jak", - "1330": "Dark Bomb", - "1331": "Dark Blast", - "1332": "Dark Giant", - "1333": "PS2 Options", - "1334": "Actor Culling", - "1335": "Force Environment Mapping", - "1336": "Fast Progress Menu", - "1337": "PS2 LOD Distance", - "1338": "Off", - "1339": "Display" + "132c": "Saltar", + "132d": "Salt d'ànec", + "132e": "Salt ràpid", + "132f": "Jak fosc", + "1330": "Bomba fosca", + "1331": "Explosió fosca", + "1332": "Gegant fosc", + "1333": "Opcions de PS2", + "1334": "L'actor Culling", + "1335": "Cartografia de l'entorn de força", + "1336": "Menú de progrés ràpid", + "1337": "Distància LOD PS2", + "1338": "Apagat", + "1339": "Mostra" } diff --git a/game/assets/jak2/text/game_custom_text_da-DK.json b/game/assets/jak2/text/game_custom_text_da-DK.json index 3c798b065c..57a0220f2e 100644 --- a/game/assets/jak2/text/game_custom_text_da-DK.json +++ b/game/assets/jak2/text/game_custom_text_da-DK.json @@ -3,29 +3,29 @@ "1b5": "Mens Dette Ikon Er På Skærmen, Må Du Ikke Fjerne Eller Indsætte Nogen Ekstra Enheder, Slukke Systemet Eller Slukke Spillet", "1100": "Ikke i en mission", "1101": "Spiller en bonus mission", - "1102": "Scatter Gun Training Course", - "1103": "Blaster Training Course", - "1104": "Vulcan Fury Training Course", - "1105": "Peace Maker Training Course", + "1102": "Scatter Gun træningskursus", + "1103": "Blaster træningskursus", + "1104": "Vulcan Fury træningskursus", + "1105": "Peace Maker Træningskursus", "1106": "Onin-spillet", "1107": "Metal-kræ Mash", "1200": "Skærmindstilling", "1201": "Vindue", "1202": "Fuld Skærm", "1203": "Rammeløs", - "1204": "Automatic", - "1205": "Custom", + "1204": "Automatisk", + "1205": "Brugerdefinerede", "1206": "4x3 (PS2)", "1207": "16x9 (PS2)", - "1208": "Choose width and height ratio", - "1209": "Press to confirm and exit.", - "120a": "Press to confirm and exit.", - "120b": "Ratio must not be lower than 4x3!", + "1208": "Vælg bredde og højdeforhold", + "1209": "Tryk på for at bekræfte og afslutte.", + "120a": "Tryk på for at bekræfte og afslutte.", + "120b": "Forholdet må ikke være lavere end 4x3!", "120c": "Musik Afspiller", "120d": "V-Sync", "120e": "Tekst Sprog", "120f": "OpenGOAL Hemmeligheder", - "1210": "Brede", + "1210": "Bred", "1211": "Højde", "1212": "??????????", "1213": "Spiller nu...", @@ -36,7 +36,7 @@ "1218": "Titan Dragt", "1219": "Mørke Jak", "121a": "Fartøj", - "121b": "Fare", + "121b": "Billetpris", "121c": "Ingen", "121d": "Lav", "121e": "Medium", @@ -92,10 +92,10 @@ "1251": "Fjenders Sundhedsbjælker", "1252": "Fartøjs Sundhedsbjælker", "1253": "Fartøj Udødelighed", - "1254": "Statistik", + "1254": "Statistikker", "1255": "Automatisk Grib Samleobjekter", "1256": "Musik Spiller", - "1257": "Ingen Teksturer Mode", + "1257": "Ingen teksturtilstand", "1258": "Hurtige Film", "1259": "Langsomme Film", "125a": "Hurtig Gameplay", @@ -107,30 +107,30 @@ "1260": "JET-bræt trick Viser", "1261": "Dårligt Vejr", "1262": "Godt Vejr", - "1263": "Vehicle Hijack Voice Lines", + "1263": "Vognkapring Voice Lines", "1264": "Låst", - "1265": "Hit all 3 valves and find Mar's Statue in \"~S\" in under ~D seconds", - "1266": "Reduce Haven City's population count by ~D", - "1267": "Reduce Haven City's vehicle count by ~D", - "1268": "Hunt every species of Metal Head", - "1269": "Use the JET-Board to break open containers", - "126a": "Transport the Rift Rider while leaving Samos and Young Samos unscathed", + "1265": "Tryk på alle 3 ventiler og find Mar's Statue i \"~S\" på under ~D sekunder", + "1266": "Reducer Haven Citys befolkningstal med ~D", + "1267": "Reducer Haven Citys køretøjantal med ~D", + "1268": "Jagt alle arter af metalhoveder", + "1269": "Brug JET-Board til at bryde beholdere op", + "126a": "Transporter Rift Rider, mens du forlader Samos og Young Samos uskadt", "1280": "Kamera Indstillinger", - "1281": "Left/Right (1st Person)", - "1282": "Up/Down (1st Person)", - "1283": "Left/Right (3rd Person)", - "1284": "Up/Down (3rd Person)", + "1281": "Venstre/Højre (1. person)", + "1282": "Op/Ned (1. person)", + "1283": "Venstre/Højre (3. person)", + "1284": "Op/Ned (3. person)", "1285": "Nulstil til Standard", "1286": "Normal", "1287": "Omvendt", - "1288": "Partikkel Culling", + "1288": "Partikeludskæring", "1289": "Discord Rig-Tilstedeværelse", "128a": "Standard", "128b": "Lav", "128c": "Høj", "128d": "Krediteringer", "128e": "Billedehastighed", - "128f": "Diverse", + "128f": "Alsidig", "1290": "Speedrunner Tilstand", "1291": "Input Indstillinger", "1292": "Gendan Standardindstillinger", @@ -140,20 +140,20 @@ "1296": "Ignorer Hvis Vindue Er Fravalgt", "1297": "Controller Led Viser Hp", "1298": "Brug LED til anden Status", - "1299": "Aktiver Tastatur", - "129a": "Aktiver Mus", + "1299": "Aktivt tastatur", + "129a": "Aktiv Mus", "129b": "Mus Indstillinger", "129c": "Følg Kamera", "129d": "Vandret Følsomhed", "129e": "Lodret Følsomhed", "129f": "Spillerbevægelse", - "12a0": "Objekt Skygger", + "12a0": "Objektskygger", "12a1": "Normal", "12a2": "Udvidet", "12a3": "Ingen gyldig opløsning fundet.", "12a4": "Automatisk", "12a5": "Bestiary", - "12a6": "Andre Statistikker", + "12a6": "Anden statistik", "12a7": "Total Dræbt", "12a8": "Dræbt af Jak", "12a9": "Dræbt af mørke Jak", @@ -162,7 +162,7 @@ "12ac": "Blaster", "12ad": "Scatter Gun", "12ae": "Vulcan Fury", - "12af": "Peacemaker", + "12af": "Fredsstifter", "12b0": "JET-bræt", "12b1": "JET-Board Trick", "12b2": "Titan dragt Slag", @@ -173,13 +173,13 @@ "12b7": "Uppercut", "12b8": "Drej", "12b9": "Rul", - "12bf": "Dark Bomb", + "12bf": "Mørk bombe", "12c0": "Dark Blast", - "12c3": "Krimzon-gardist", + "12c3": "Krimzon vagtmand", "12c4": "Sig", "12c5": "Ashelin", "12c6": "Jinx", - "12c7": "Grim", + "12c7": "Barsk", "12c8": "Mog", "12c9": "Metal-Kræ", "12ca": "Andre Venner", @@ -188,10 +188,10 @@ "1301": "Omvælg Bindinger", "1302": "Controller Bindinger", "1303": "Tastaturbindinger", - "1304": "Musebindinger", + "1304": "Musebinder", "1305": "Ingen valgmuligheder", "1306": "Venter", - "1307": "Uindfattet", + "1307": "Ikke indeholdt", "1308": "Ukendt", "1309": "Høj Opløsning Himmel", "130a": "Hurtige Luftsluser og Døre", @@ -203,27 +203,27 @@ "1310": "100%", "1311": "Any% - All Orbs", "1312": "Any% - Hero Mode", - "1313": "Lokal Tid", + "1313": "Lokal tid", "1314": "Advarsel!", "1315": "Denne indstilling er meget eksperimentel. Når den ikke spilles ved 60 billeder pr. sekund, kan der opstå visuelle problemer og problemer med gameplay.", - "1316": "Lokal Score", + "1316": "Lokal score", "1320": "Ingen", "1321": "Drej", "1322": "Boost", "1323": "Vend", "1324": "Rail Grind", "1325": "Skinnehop", - "1326": "Nosegrab", - "1327": "Method", + "1326": "Næsegreb", + "1327": "Metode", "1328": "Board Spin", "1329": "Board Flip", - "132a": "Noseflip", + "132a": "Næseklip", "132b": "Kickflip", - "132c": "Jump", - "132d": "Duck Jump", - "132e": "Quick Jump", - "132f": "Dark Jak", - "1330": "Dark Bomb", + "132c": "Hoppe", + "132d": "Andespring", + "132e": "Hurtigt hop", + "132f": "Mørke Jak", + "1330": "Mørk bombe", "1331": "Dark Blast", "1332": "Mørk Kæmpe", "1333": "PS2 Indstillinger", @@ -232,5 +232,5 @@ "1336": "Hurtig Fremskridt Menu", "1337": "PS2 LOD Afstand", "1338": "Fra", - "1339": "Visning" + "1339": "Skærm" } diff --git a/game/assets/jak2/text/game_custom_text_de-DE.json b/game/assets/jak2/text/game_custom_text_de-DE.json index 08f18c596a..6f6d87e915 100644 --- a/game/assets/jak2/text/game_custom_text_de-DE.json +++ b/game/assets/jak2/text/game_custom_text_de-DE.json @@ -3,12 +3,12 @@ "1b5": "Während dieses Symbol angezeigt wird, entferne oder verbinde kein Zubehör und schalte nicht das System oder das Spiel aus", "1100": "Nicht in einer Mission", "1101": "Spielt eine Bonusmission", - "1102": "Streuwaffen-Trainingskurs", + "1102": "Blaster-Trainingskurs", "1103": "Blaster-Trainingskurs", "1104": "Vulcan-Fury-Trainingskurs", "1105": "Friedensstifter-Trainingskurs", "1106": "Onins Spiel", - "1107": "Metal Head Mash", + "1107": "Metal Head Matsch", "1200": "Anzeigemodus", "1201": "Fenster", "1202": "Vollbild", @@ -83,7 +83,7 @@ "1248": "MSAA", "1249": "~DX", "124a": "Controller-LED Optionen", - "124b": "Show Player State", + "124b": "Spielerstatistik anzeigen", "124c": "Gesundheitsmenge anzeigen", "124d": "Auto-Speichern Ausschalten", "124e": "Auto-Speichern Aus", @@ -92,7 +92,7 @@ "1251": "Gegner-Gesundheitsbalken", "1252": "Fahrzeug-Gesundheitsbalken", "1253": "Fahrzeug Unverwundbarkeit", - "1254": "Statistics", + "1254": "Statistiken", "1255": "Collectibles automatisch aufheben", "1256": "Musik-Player", "1257": "Keine Texturen-Modus", @@ -100,21 +100,21 @@ "1259": "Langsame Filme", "125a": "Schnelles Gameplay", "125b": "Langsames Gameplay", - "125c": "Instant Travel in Haven City", + "125c": "Zu Haven City teleportieren", "125d": "Precursor Orb-Tracker", "125e": "Tag-Nacht-Zyklus In Echtzeit", - "125f": "Pacified Haven City", - "1260": "JET-Board Trick Display", + "125f": "Friedliches Haven City", + "1260": "Jet-Board Trick Display", "1261": "Schlechtes Wetter", "1262": "Schönes Wetter", - "1263": "Vehicle Hijack Voice Lines", - "1264": "Locked", - "1265": "Hit all 3 valves and find Mar's Statue in \"~S\" in under ~D seconds", - "1266": "Reduce Haven City's population count by ~D", - "1267": "Reduce Haven City's vehicle count by ~D", - "1268": "Hunt every species of Metal Head", - "1269": "Use the JET-Board to break open containers", - "126a": "Transport the Rift Rider while leaving Samos and Young Samos unscathed", + "1263": "Fahrzeugentführung Sprachleitungen", + "1264": "Gesperrt", + "1265": "Triff alle 3 Ventile und finde Mar's Statue in \"~S\" in unter ~D Sekunden", + "1266": "Verringern Sie die Einwohnerzahl von Haven City um ~D", + "1267": "Verringerung der Anzahl der Fahrzeuge in Haven City um ~D", + "1268": "Jage alle Arten von Metal Head", + "1269": "Benutze das JET-Board, um Objekte zu zerstören", + "126a": "Transportiere den Spaltreiter und lass Samos und den jungen Samos unversehrt.", "1280": "Kameraoptionen", "1281": "Links/Rechts (1. Person)", "1282": "Hoch/Runter (1. Person)", @@ -139,7 +139,7 @@ "1295": "Stick Deadzone", "1296": "Ignoriere Wenn Unfokusiert", "1297": "Controller Led Für Leben", - "1298": "Use LED for Other States", + "1298": "Verwenden Sie LED für andere Staaten", "1299": "Tastatur Aktivieren", "129a": "Maus Aktivieren", "129b": "Maus Optionen", @@ -150,40 +150,40 @@ "12a0": "Objekt-Schatten", "12a1": "Normal", "12a2": "Erweitert", - "12a3": "No valid resolutions found.", + "12a3": "Keine gültige Auflösung gefunden.", "12a4": "Automatisch", - "12a5": "Bestiary", - "12a6": "Other Statistics", - "12a7": "Total Killed", - "12a8": "Killed by Jak", - "12a9": "Killed by Dark Jak", - "12aa": "Killed by Daxter", - "12ab": "Killed by Others", + "12a5": "Bestarium", + "12a6": "Weitere Statistiken", + "12a7": "Insgesamt getötet", + "12a8": "Getötet von Jak", + "12a9": "Getötet von Dark Jak", + "12aa": "Getötet von Daxter", + "12ab": "Getötet von anderen", "12ac": "Blaster", - "12ad": "Scatter Gun", - "12ae": "Vulcan Fury", - "12af": "Peacemaker", + "12ad": "Streuwaffe", + "12ae": "Vulkanischer Zorn", + "12af": "Friedensstifter", "12b0": "JET-Board", "12b1": "JET-Board Trick", - "12b2": "Titan Suit Punch", - "12b3": "Titan Suit Body", - "12b4": "Gunpod", - "12b5": "Punch", + "12b2": "Titan-Anzug Schlag", + "12b3": "Titan-Anzug Körper", + "12b4": "Kanonenfutter", + "12b5": "Schlag", "12b6": "Flop", - "12b7": "Uppercut", - "12b8": "Spin", - "12b9": "Roll", - "12bf": "Dark Bomb", - "12c0": "Dark Blast", - "12c3": "Krimzon Guard", + "12b7": "Aufwärtshaken", + "12b8": "Drehung", + "12b9": "Rolle", + "12bf": "Dunkelbombe", + "12c0": "Dunkle Explosion", + "12c3": "Krimzon-Wache", "12c4": "Sig", "12c5": "Ashelin", "12c6": "Jinx", "12c7": "Grim", "12c8": "Mog", "12c9": "Metal Heads", - "12ca": "Other Friends", - "12cb": "Other Enemies", + "12ca": "Andere Freunde", + "12cb": "Andere Gegner", "1300": "Cursor Verstecken", "1301": "Tastenbelegung Ändern", "1302": "Controller Belegung", @@ -194,7 +194,7 @@ "1307": "Unbelegt", "1308": "Unbekannt", "1309": "Hochauflösender Himmel", - "130a": "Fast Airlocks and Doors", + "130a": "Schnelle Luftschleusen und Türen", "130b": "Schnelle Aufzüge", "130c": "Speedrun", "130d": "Any%", @@ -206,8 +206,8 @@ "1313": "Lokalzeit", "1314": "Warnung!", "1315": "Diese Einstellung ist hoch-experimentell. Bei anderen Werten als 60 Bilder pro Sekunde können visuelle und spielerische Fehler auftreten.", - "1316": "Local Score", - "1320": "None", + "1316": "Lokales Ergebnis", + "1320": "Nichts", "1321": "Drehung", "1322": "Boost", "1323": "Salto", @@ -227,9 +227,9 @@ "1331": "Dunkle Explosion", "1332": "Dunkler Riese", "1333": "PS2-Optionen", - "1334": "Actor Culling", - "1335": "Force Environment Mapping", - "1336": "Fast Progress Menu", + "1334": "Schauspieler-Auswahl", + "1335": "Erzwingen der Umgebungsabbildung", + "1336": "Schnelles Fortschrittsmenü", "1337": "PS2 LOD-Distanz", "1338": "Aus", "1339": "Anzeige" diff --git a/game/assets/jak2/text/game_custom_text_es-ES.json b/game/assets/jak2/text/game_custom_text_es-ES.json index 086fb31192..61a5f90673 100644 --- a/game/assets/jak2/text/game_custom_text_es-ES.json +++ b/game/assets/jak2/text/game_custom_text_es-ES.json @@ -1,27 +1,27 @@ { - "1a3": "Por favor no quites o insertes ningún periférico, apagues el sistema ni cierres el juego", - "1b5": "Mientras este icono esté en pantalla, no quites o insertes ningún periférico, apagues el sistema ni cierres el juego", + "1a3": "Por favor, no conectes o desconectes ningún dispositivo, apagues el sistema o cierres el juego", + "1b5": "Cuando este icono aparezca, no quites o conectes ningún dispositivo, no apagues el sistema ni cierres el juego.", "1100": "Fuera de misión", - "1101": "Jugando misión extra", + "1101": "Jugando a una misión extra", "1102": "Circuito de Dispersora", "1103": "Circuito de Bláster", - "1104": "Circuito de Cañón Vulcan", + "1104": "Circuito de Furia Volcánica", "1105": "Circuito de Pacificador", "1106": "Juego de Onin", "1107": "Machacachapa", "1200": "Modo de pantalla", - "1201": "Ventana", - "1202": "Completa", - "1203": "Sin Bordes", + "1201": "En ventana", + "1202": "Pantalla completa", + "1203": "Ventana sin bordes", "1204": "Auto", "1205": "Personalizado", "1206": "4x3 (PS2)", "1207": "16x9 (PS2)", - "1208": "Elige el ratio entre ancho y alto", + "1208": "Elige la proporción de alto y ancho", "1209": "Pulsa para confirmar y salir.", "120a": "Pulsa para confirmar y salir.", - "120b": "¡El ratio no debe ser menor que 4x3!", - "120c": "Reproductor de Musica", + "120b": "¡La proporción no debe ser menor a 4x3!", + "120c": "Reproductor de música", "120d": "V-Sync", "120e": "Idioma del Texto", "120f": "Secretos de OpenGOAL", @@ -83,32 +83,32 @@ "1248": "MSAA", "1249": "~DX", "124a": "Ajustes del LED del mando", - "124b": "Mostrar Estado", - "124c": "Mostrar Vida", - "124d": "Desactivar Autoguardado", + "124b": "Mostrar estado", + "124c": "Mostrar vida", + "124d": "Desactivar autoguardado", "124e": "Autoguardado Desactivado", - "124f": "¿Quieres Desactivar el Autoguardado?", + "124f": "¿Estás seguro de que quieres desactivar el autoguardado?", "1250": "Super Turbo-Tabla en Villa Refugio", - "1251": "Vida de Enemigos", - "1252": "Vida de Vehículos", - "1253": "Vehículos Invencibles", + "1251": "Vida de enemigos", + "1252": "Vida de vehículos", + "1253": "Invencibilidad del vehículo", "1254": "Estadísticas", - "1255": "Autorecoger Coleccionables", - "1256": "Reproductor de Musica", - "1257": "Modo Sin Texturas", - "1258": "Cinemáticas Rápidas", - "1259": "Cinemáticas Lentas", - "125a": "Jugabilidad Rápida", - "125b": "Jugabilidad Lenta", - "125c": "Viaje Instantáneo en Villa Refugio", - "125d": "Contador de Esferas", - "125e": "Hora del Día Real", + "1255": "Autorecoger coleccionables", + "1256": "Reproductor de música", + "1257": "Modo sin texturas", + "1258": "Cinemáticas rápidas", + "1259": "Cinemáticas lentas", + "125a": "Juego rápido", + "125b": "Juego lento", + "125c": "Viaje instantáneo en Villa Refugio", + "125d": "Contador de esferas", + "125e": "Hora del día real", "125f": "Villa Refugio Pacífica", "1260": "Ver Trucos de Turbo-Tabla", - "1261": "Mal Tiempo", - "1262": "Buen Tiempo", - "1263": "Diálogos de Robo de Vehículos", - "1264": "Bloqueado", + "1261": "Mal tiempo", + "1262": "Buen tiempo", + "1263": "Diálogos de robo de vehículos", + "1264": "Cerrado", "1265": "Golpea las 3 válvulas y encuentra la Estatua de Mar en \"~S\" en menos de ~D segundos", "1266": "Reduce el recuento de población de Villa Refugio en ~D", "1267": "Reduce el recuento de vehículos de Villa Refugio en ~D", @@ -131,13 +131,13 @@ "128d": "Créditos", "128e": "Tasa de Fotogramas", "128f": "Otros", - "1290": "Modo de Speedrunner", - "1291": "Ajustes de Entrada", + "1290": "Modo Speedrun", + "1291": "Ajustes de entrada", "1292": "Restaurar Valores por Defecto", - "1293": "Ajustes del Mando", - "1294": "Elegir Mando", + "1293": "Ajustes del mando", + "1294": "Elegir mando", "1295": "Zone Muerta del Joystick", - "1296": "Ignorar al Tabular", + "1296": "Ignorar al hacer ALT+TAB", "1297": "LED del Mando para la Salud", "1298": "LED del Mando para Estados", "1299": "Habilitar Teclado", diff --git a/game/assets/jak2/text/game_custom_text_fi-FI.json b/game/assets/jak2/text/game_custom_text_fi-FI.json index f1bf8de196..4e226a0768 100644 --- a/game/assets/jak2/text/game_custom_text_fi-FI.json +++ b/game/assets/jak2/text/game_custom_text_fi-FI.json @@ -91,7 +91,7 @@ "1250": "Turbo JET-lauta Haven Cityssä", "1251": "Vihollisten terveyspalkit", "1252": "Ajoneuvojen terveyspalkit", - "1253": "Ajoneuvon haavoittumattomuus", + "1253": "Ajoneuvojen haavoittumattomuus", "1254": "Tilastot", "1255": "Kerää kerättävät automaattisesti", "1256": "Musiikkisoitin", @@ -114,7 +114,7 @@ "1267": "Vähennä Haven Cityn ajoneuvojen määrää ~D kappaleella", "1268": "Metsästä jokaista Metallipäälajia", "1269": "Käytä JET-lautaa rikkoaksesi säiliöt auki", - "126a": "Kuljeta Rift Rider jättäen Samos ja Young Samos vaurioitta", + "126a": "Siirrä repeämäkuljetin jättäen Samos ja nuori Samos vaurioitta", "1280": "Kuvakulma-asetukset", "1281": "Vasen/oikea (ensimmäinen persoona)", "1282": "Ylös/alas (ensimmäinen persoona)", @@ -139,7 +139,7 @@ "1295": "Analogisauvan katvealue", "1296": "Älä huomioi, kun ikkuna ei aktiivinen", "1297": "Ohjaimen LED terveydelle", - "1298": "Ohjaimen LED muissa tiloissa", + "1298": "Ohjaimen LED muihin tiloihin", "1299": "Salli näppäimistö", "129a": "Salli hiiri", "129b": "Hiiriasetukset", @@ -164,9 +164,9 @@ "12ae": "Vulkanusraivo", "12af": "Rauhantekijä", "12b0": "JET-lauta", - "12b1": "JET-lauta temppu", - "12b2": "Titaanin puvun isku", - "12b3": "Titaanin puvun runko", + "12b1": "JET-lautatemppu", + "12b2": "Titaaniasun isku", + "12b3": "Titaaniasun runko", "12b4": "Tykki", "12b5": "Isku", "12b6": "Lyyhistyi", diff --git a/game/assets/jak2/text/game_custom_text_fr-FR.json b/game/assets/jak2/text/game_custom_text_fr-FR.json index e43cd34598..eecaa4a210 100644 --- a/game/assets/jak2/text/game_custom_text_fr-FR.json +++ b/game/assets/jak2/text/game_custom_text_fr-FR.json @@ -16,7 +16,7 @@ "1204": "Adapté à la fenêtre", "1205": "Personnalisé", "1206": "4x3", - "1207": "16x9 (4x3 zoomé en vertical)", + "1207": "16x9", "1208": "Choisissez le rapport entre la largeur/hauteur", "1209": "Appuyer sur pour confirmer.", "120a": "Appuyer pour confirmer.", @@ -27,7 +27,7 @@ "120f": "Secrets OpenGoal", "1210": "Largeur", "1211": "Hauteur", - "1212": "Non débloqué", + "1212": "??????????", "1213": "Lecture en cours :", "1214": "Pas de musique", "1215": "Normal", @@ -41,29 +41,29 @@ "121d": "Faible", "121e": "Moyen", "121f": "Élevé", - "1220": "Abriville", + "1220": "Exploration d'Abriville", "1221": "Course-poursuite", - "1222": "Inutilisé (Jak 3)", - "1223": "Araignée géante", + "1222": "Chasse-taupes (Alt)", + "1223": "Le tombeau de Mar", "1224": "Le défi d'Onin", - "1225": "Praxis / Métal Kor", + "1225": "Métal Kor", "1226": "Combat contre Krew", - "1227": "Praxis au tombeau", - "1228": "Éboulement", - "1229": "Bombes plasmites", + "1227": "Combat contre le Baron", + "1228": "Bouncing Boulders", + "1229": "Eco explosive", "122a": "Tank de la forteresse", "122b": "Station de pompage", "122c": "Protéger Sig", "122d": "Mine à ciel ouvert", - "122e": "Abriforêt", - "122f": "Abriforêt 2 / Crédits", + "122e": "Forêt d'Abriville", + "122f": "Dragons de la foret", "1230": "La forteresse", - "1231": "La forteresse 2", - "1232": "Temple montagne", - "1233": "Rhinocéros", - "1234": "Palais", + "1231": "Fuite", + "1232": "Temple de la montagne", + "1233": "Chasse-taupe", + "1234": "Palais du baron Praxis", "1235": "Usine d'armes", - "1236": "Les courses", + "1236": "Course d'arène", "1237": "Ville morte", "1238": "Taille de la fenêtre", "1239": "Sélectionnez une taille", @@ -206,9 +206,9 @@ "1313": "Heure locale", "1314": "Attention !", "1315": "Ce paramètre est expérimental. Si le jeu n'est pas joué à 60 images par seconde, des problèmes visuels et de gameplay peuvent survenir.", + "1316": "Score Local", "1320": "Rien", "1321": "Tourbillon", - "1316": "Score Local", "1322": "Boost", "1323": "Flip", "1324": "Rail Grind", diff --git a/game/assets/jak2/text/game_custom_text_hu-HU.json b/game/assets/jak2/text/game_custom_text_hu-HU.json index 46a1b7661a..2dde99a23b 100644 --- a/game/assets/jak2/text/game_custom_text_hu-HU.json +++ b/game/assets/jak2/text/game_custom_text_hu-HU.json @@ -92,7 +92,7 @@ "1251": "Ellenség Életerő", "1252": "Jármű Életerő", "1253": "Jármű Sebezhetetlenség", - "1254": "Statistics", + "1254": "Statisztika", "1255": "Gyűjthető Tárgyak Automatikus Felszedése", "1256": "Zenelejátszó", "1257": "Textúramentes Mód", @@ -101,20 +101,20 @@ "125a": "Gyors Játékmenet", "125b": "Lassú Játékmenet", "125c": "Azonnali utazás Haven Cityben", - "125d": "Precursor Orb Tracker", + "125d": "Orb Tracker elődje", "125e": "Valós Napszak", "125f": "Pacified Haven City", - "1260": "JET-Board Trick Display", + "1260": "JET-Board trükk kijelző", "1261": "Rossz Időjárás", "1262": "Jó Időjárás", "1263": "Vehicle Hijack Voice Lines", - "1264": "Locked", - "1265": "Hit all 3 valves and find Mar's Statue in \"~S\" in under ~D seconds", - "1266": "Reduce Haven City's population count by ~D", - "1267": "Reduce Haven City's vehicle count by ~D", - "1268": "Hunt every species of Metal Head", - "1269": "Use the JET-Board to break open containers", - "126a": "Transport the Rift Rider while leaving Samos and Young Samos unscathed", + "1264": "Zárt", + "1265": "Nyomja meg mind a 3 szelepet, és ~D másodperc alatt találja meg Mar szobrát \"~S\"-ben", + "1266": "Csökkentse Haven City lakosságának számát ~D-vel", + "1267": "Csökkentse Haven City járművei számát ~D-vel", + "1268": "Vadássz minden fémfejfajtát", + "1269": "Használja a JET-Board-ot a nyitott tartályok feltörésére", + "126a": "Szállítsd a Rift Ridert, miközben Samost és Young Samost sértetlenül hagyod", "1280": "Kamera Opciók", "1281": "Bal/Jobb (belsőnézet)", "1282": "Fel/Le (belsőnézet)", @@ -123,7 +123,7 @@ "1285": "Visszaállítás alaphelyzetbe", "1286": "Normál", "1287": "Fordított", - "1288": "Particle Culling", + "1288": "Részecske selejtezés", "1289": "Discord Rich-Presence", "128a": "Alapértelmezett", "128b": "Alacsony", @@ -137,7 +137,7 @@ "1293": "Játékvezérlő Beállítások", "1294": "Játékvezérlő Kiválasztása", "1295": "Analóg holttér", - "1296": "Ignore If Window Unfocused", + "1296": "Figyelmen kívül hagyása, ha az ablak nincs fókuszban", "1297": "Led Reflect Hp", "1298": "LED Használata Más Állapotokhoz", "1299": "Billentyűzet Engedélyezése", @@ -150,40 +150,40 @@ "12a0": "Objektum Árnyékok", "12a1": "Normál", "12a2": "Kiterjesztett", - "12a3": "No valid resolutions found.", - "12a4": "Automatic", - "12a5": "Bestiary", - "12a6": "Other Statistics", + "12a3": "Nem található érvényes állásfoglalás.", + "12a4": "Automatikus", + "12a5": "Bestiárium", + "12a6": "Egyéb statisztikák", "12a7": "Total Killed", - "12a8": "Killed by Jak", - "12a9": "Killed by Dark Jak", - "12aa": "Killed by Daxter", - "12ab": "Killed by Others", + "12a8": "Jak ölte meg", + "12a9": "Dark Jak ölte meg", + "12aa": "Daxter ölte meg", + "12ab": "Mások ölték meg", "12ac": "Blaster", "12ad": "Scatter Gun", "12ae": "Vulcan Fury", - "12af": "Peacemaker", + "12af": "Békéltető", "12b0": "JET-Board", - "12b1": "JET-Board Trick", + "12b1": "JET-Board trükk", "12b2": "Titan Suit Punch", "12b3": "Titan Suit Body", "12b4": "Gunpod", - "12b5": "Punch", + "12b5": "Puncs", "12b6": "Flop", - "12b7": "Uppercut", + "12b7": "Felüt", "12b8": "Spin", - "12b9": "Roll", - "12bf": "Dark Bomb", - "12c0": "Dark Blast", - "12c3": "Krimzon Guard", - "12c4": "Sig", + "12b9": "Tekercs", + "12bf": "Sötét bomba", + "12c0": "Sötét robbanás", + "12c3": "Krimzon gárda", + "12c4": "Mond", "12c5": "Ashelin", - "12c6": "Jinx", - "12c7": "Grim", + "12c6": "Vészmadár", + "12c7": "Zord", "12c8": "Mog", - "12c9": "Metal Heads", - "12ca": "Other Friends", - "12cb": "Other Enemies", + "12c9": "Fém fejek", + "12ca": "Más barátok", + "12cb": "Más ellenségek", "1300": "Kurzor Automatikus Elrejtése", "1301": "Gombkiosztások Újraosztása", "1302": "Játékvezérlő Gombkiosztás", @@ -206,31 +206,31 @@ "1313": "Helyi idő", "1314": "Figyelem!", "1315": "Ez a beállítás erősen kísérleti. Ha nem 60FPS-sel játszol akkor látvány- és játékmenetbeli problémák merülhetnek fel ennek következtében.", - "1316": "Local Score", + "1316": "Helyi pontszám", "1320": "Egyik sem", "1321": "Pörgés", "1322": "Gyorsító", "1323": "Forgatás", "1324": "Rail Grind", "1325": "Rail Jump", - "1326": "Nosegrab", - "1327": "Method", + "1326": "Orrfogó", + "1327": "Módszer", "1328": "Board Spin", "1329": "Board Flip", - "132a": "Noseflip", + "132a": "Orrflip", "132b": "Kickflip", "132c": "Ugrás", - "132d": "Duck Jump", + "132d": "Kacsaugrás", "132e": "Gyors Ugrás", "132f": "Sötét Jak", "1330": "Sötét Bomba", - "1331": "Dark Blast", + "1331": "Sötét robbanás", "1332": "Sötét Óriás", "1333": "PS2 Beállítások", - "1334": "Actor Culling", + "1334": "Culling színész", "1335": "Force Environment Mapping", "1336": "Gyors Fejlődési Menü", "1337": "PS2 LOD Távolság", - "1338": "Ki", + "1338": "Nak nek", "1339": "Megjelenítés" } diff --git a/game/assets/jak2/text/game_custom_text_it-IT.json b/game/assets/jak2/text/game_custom_text_it-IT.json index 6dd4a77c51..284625fa02 100644 --- a/game/assets/jak2/text/game_custom_text_it-IT.json +++ b/game/assets/jak2/text/game_custom_text_it-IT.json @@ -8,7 +8,7 @@ "1104": "Percorso di addestramento Vulcan", "1105": "Percorso di addestramento Peace Maker", "1106": "Sfida di Onin", - "1107": "Acchiappa la Testa di Metallo", + "1107": "Picchia-il-Metallo", "1200": "Modalità schermo", "1201": "In finestra", "1202": "Schermo intero", @@ -85,12 +85,12 @@ "124a": "Opzioni LED controller", "124b": "Mostra stato giocatore", "124c": "Mostra quantità HP", - "124d": "Disattiva autosalvataggio", - "124e": "Autosalvataggio disattivato", - "124f": "Vuoi davvero disattivare l'autosalvataggio?", + "124d": "Disattiva salvataggio automatico", + "124e": "Salvataggio automatico disattivato", + "124f": "Vuoi davvero disattivare il salvataggio automatico?", "1250": "Jet Board Turbo a Haven City", - "1251": "Barre salute nemici", - "1252": "Barre integrità veicoli", + "1251": "Barra salute nemici", + "1252": "Barra integrità veicoli", "1253": "Indistruttibilità veicoli", "1254": "Statistiche", "1255": "Cattura collezionabili automaticamente", @@ -101,19 +101,19 @@ "125a": "Gioco veloce", "125b": "Gioco lento", "125c": "Viaggi istantanei a Haven City", - "125d": "Cerca-sfere precursor", + "125d": "Cerca-Sfere Precursor", "125e": "Ora del giorno reale", "125f": "Haven City pacifica", "1260": "Indicatore acrobazie Jet Board", "1261": "Brutto tempo", "1262": "Bel tempo", - "1263": "Vehicle Hijack Voice Lines", + "1263": "Linee vocali per furti d'auto", "1264": "Bloccato", "1265": "Colpisci tutte e 3 le valvole e trova la Statua di Mar in \"~S\" entro ~D secondi", "1266": "Riduce il numero di abitanti di Haven City di ~D", "1267": "Riduce il numero di veicoli di Haven City di ~D", "1268": "Uccidi ogni tipo di Testa di Metallo", - "1269": "Use the JET-Board to break open containers", + "1269": "Usa il Jet Board per spaccare le casse", "126a": "Trasporta il Rift Rider senza che Samos e il Giovane Samos subiscano danni", "1280": "Opzioni telecamera", "1281": "Destra/Sinistra (prima persona)", @@ -128,7 +128,7 @@ "128a": "Predefinito", "128b": "Basso", "128c": "Alto", - "128d": "Crediti", + "128d": "Titoli di coda", "128e": "Frequenza di aggiornamento", "128f": "Varie", "1290": "Modalità Speedrun", @@ -139,7 +139,7 @@ "1295": "Zona morta analogico", "1296": "Ignora se in secondo piano", "1297": "Usa il LED per gli HP", - "1298": "Use LED for Other States", + "1298": "Usa il LED per altri stati", "1299": "Attiva la tastiera", "129a": "Attiva il mouse", "129b": "Opzioni mouse", @@ -150,7 +150,7 @@ "12a0": "Ombre oggetti", "12a1": "Normale", "12a2": "Esteso", - "12a3": "No valid resolutions found.", + "12a3": "Nessuna soluzione valida trovata.", "12a4": "Automatico", "12a5": "Bestiario", "12a6": "Altre statistiche", @@ -163,10 +163,10 @@ "12ad": "Scatter Gun", "12ae": "Cannone Vulcan", "12af": "Peacemaker", - "12b0": "JET-Board", - "12b1": "JET-Board Trick", - "12b2": "Titan Suit Punch", - "12b3": "Titan Suit Body", + "12b0": "Jet Board", + "12b1": "Acrobazia Jet Board", + "12b2": "Pugno del Titan Suit", + "12b3": "Corpo del Titan Suit", "12b4": "Gunpod", "12b5": "Pugno", "12b6": "Flop", @@ -175,16 +175,16 @@ "12b9": "Rotola", "12bf": "Bomba oscura", "12c0": "Esplosione oscura", - "12c3": "Guardia Krimzi", + "12c3": "Guardia Kremizi", "12c4": "Sig", "12c5": "Ashelin", "12c6": "Jinx", "12c7": "Grim", "12c8": "Mog", "12c9": "Teste di Metallo", - "12ca": "Other Friends", - "12cb": "Other Enemies", - "1300": "Nascondi cursore automaticamente", + "12ca": "Altri amici", + "12cb": "Altri nemici", + "1300": "Nascondi automaticamente cursore", "1301": "Riassegna tasti", "1302": "Tasti controller", "1303": "Tasti tastiera", @@ -206,22 +206,22 @@ "1313": "Ora locale", "1314": "Attenzione!", "1315": "Questa impostazione è sperimentale. Quando non è impostata su 60 FPS, potresti riscontrare problemi grafici e di gameplay.", - "1316": "Local Score", - "1320": "None", + "1316": "Punteggio locale", + "1320": "Nessuno", "1321": "Giro", "1322": "Boost", "1323": "Capriola", - "1324": "Rail Grind", - "1325": "Rail Jump", + "1324": "Rail grind", + "1325": "Rail jump", "1326": "Nosegrab", "1327": "Method", - "1328": "Board Spin", - "1329": "Board Flip", + "1328": "Board spin", + "1329": "Board flip", "132a": "Noseflip", "132b": "Kickflip", "132c": "Salto", - "132d": "Duck Jump", - "132e": "Quick Jump", + "132d": "Duck jump", + "132e": "Quick jump", "132f": "Dark Jak", "1330": "Bomba oscura", "1331": "Esplosione oscura", diff --git a/game/assets/jak2/text/game_custom_text_lt-LT.json b/game/assets/jak2/text/game_custom_text_lt-LT.json index c854780987..b66139518b 100644 --- a/game/assets/jak2/text/game_custom_text_lt-LT.json +++ b/game/assets/jak2/text/game_custom_text_lt-LT.json @@ -8,7 +8,7 @@ "1104": "Vulcan Fury mokymo kursas", "1105": "Taikos kūrėjo mokymo kursai", "1106": "Onin žaidimas", - "1107": "Metalo galvos mišinys", + "1107": "Metalo galvų mušimas", "1200": "Ekrano režimas", "1201": "Windowed", "1202": "Visas ekranas", @@ -92,7 +92,7 @@ "1251": "Priešų gyvybės juostos", "1252": "Transporto priemonių būsenos juostos", "1253": "Transporto priemonės nepažeidžiamumas", - "1254": "Statistics", + "1254": "Statistikos", "1255": "Automatiškai paimti kolekcionuojamus daiktus", "1256": "Muzikos grotuvas", "1257": "Jokių tekstūrų režimas", @@ -107,14 +107,14 @@ "1260": "JET lentos triukų ekranas", "1261": "Blogas oras", "1262": "Gražus oras", - "1263": "Vehicle Hijack Voice Lines", - "1264": "Locked", - "1265": "Hit all 3 valves and find Mar's Statue in \"~S\" in under ~D seconds", - "1266": "Reduce Haven City's population count by ~D", - "1267": "Reduce Haven City's vehicle count by ~D", - "1268": "Hunt every species of Metal Head", - "1269": "Use the JET-Board to break open containers", - "126a": "Transport the Rift Rider while leaving Samos and Young Samos unscathed", + "1263": "Transporto priemonės užgrobimo balso linijos", + "1264": "Užrakinta", + "1265": "Pataikykite į visus 3 vožtuvus ir suraskite Mar'so statulą per \"~S\" mažiau nei ~D sekundžių", + "1266": "Sumažinti Haveno miesto gyventojų skaičių iki ~D", + "1267": "Sumažinti Haveno miesto transporto priemonių skaičių iki ~D", + "1268": "Sumedžiokite visas metalo galvų rūšis", + "1269": "Naudokite JET-Lenta sudaužyti konteinerius", + "126a": "Transportuoti Plyšio raitelį, paliekant Samosą ir jaunąjį Samosą nepaliestus", "1280": "Kameros parinktys", "1281": "Kairė/dešinė (1-as asmuo)", "1282": "Aukštyn/žemyn (1-as asmuo)", @@ -150,40 +150,40 @@ "12a0": "Objekto šešėliai", "12a1": "Normalus", "12a2": "Išplėstas", - "12a3": "No valid resolutions found.", - "12a4": "Automatic", - "12a5": "Bestiary", - "12a6": "Other Statistics", - "12a7": "Total Killed", - "12a8": "Killed by Jak", - "12a9": "Killed by Dark Jak", - "12aa": "Killed by Daxter", - "12ab": "Killed by Others", - "12ac": "Blaster", - "12ad": "Scatter Gun", - "12ae": "Vulcan Fury", - "12af": "Peacemaker", - "12b0": "JET-Board", - "12b1": "JET-Board Trick", - "12b2": "Titan Suit Punch", - "12b3": "Titan Suit Body", - "12b4": "Gunpod", - "12b5": "Punch", - "12b6": "Flop", - "12b7": "Uppercut", - "12b8": "Spin", - "12b9": "Roll", - "12bf": "Dark Bomb", - "12c0": "Dark Blast", - "12c3": "Krimzon Guard", - "12c4": "Sig", - "12c5": "Ashelin", - "12c6": "Jinx", - "12c7": "Grim", - "12c8": "Mog", - "12c9": "Metal Heads", - "12ca": "Other Friends", - "12cb": "Other Enemies", + "12a3": "Nerasta tinkamų raiškų.", + "12a4": "Automatinis", + "12a5": "Bestiariumas", + "12a6": "Kitos Statistikos", + "12a7": "Iš viso nužudyta", + "12a8": "Nužudytas Jako", + "12a9": "Nužudytas Tamsaus Jako", + "12aa": "Nužudyta Daxterio", + "12ab": "Nužudytas kitų", + "12ac": "Blasteris", + "12ad": "Skleidiklinis Ginklas", + "12ae": "Vulkano Rūstybė", + "12af": "Taikos kūrėjas", + "12b0": "JET-lenta", + "12b1": "JET-Lentos Triukas", + "12b2": "Titano Kostiumo Smūgis", + "12b3": "Titano Kostiumo Kūnas", + "12b4": "Ginklo kapsulė", + "12b5": "Smūgis", + "12b6": "Flopas", + "12b7": "Aukštutinis pjūvis", + "12b8": "Suktis", + "12b9": "Ridentis", + "12bf": "Tamsos bomba", + "12c0": "Tamsos smūgis", + "12c3": "Krimzono sargybinis", + "12c4": "Sigas", + "12c5": "Ašlina", + "12c6": "Jinksas", + "12c7": "Grimas", + "12c8": "Mogas", + "12c9": "Metalo galvos", + "12ca": "Kiti draugai", + "12cb": "Kiti priešai", "1300": "Automatinis žymeklio slėpimas", "1301": "Iš naujo priskirti sąsajas", "1302": "Kontrolerio sąsajos", @@ -206,7 +206,7 @@ "1313": "Vietinis laikas", "1314": "Įspėjimas!", "1315": "Šis nustatymas yra labai eksperimentinis. Jei žaidžiama ne 60 kadrų per sekundę sparta, gali kilti vaizdo ir žaidimo problemų.", - "1316": "Local Score", + "1316": "Vietinis balas", "1320": "Jokio", "1321": "Suktis", "1322": "Sustiprinti", diff --git a/game/assets/jak2/text/game_custom_text_nl-NL.json b/game/assets/jak2/text/game_custom_text_nl-NL.json index b66c7f3b9d..a4b98c202f 100644 --- a/game/assets/jak2/text/game_custom_text_nl-NL.json +++ b/game/assets/jak2/text/game_custom_text_nl-NL.json @@ -1,46 +1,46 @@ { "1a3": "Gelieve Geen Randapparatuur Te Verwijderen Of Aan Te Sluiten, Uw Systeem Niet Uit Te Schakelen En Het Spel Niet Af Te Sluiten", "1b5": "Wanneer Dit Pictogram Op Het Scherm Getoond Wordt, Gelieve Geen Randapparatuur Te Verwijderen Of Aan Te Sluiten, Uw Systeem Niet Uit Te Schakelen En Het Spel Niet Af Te Sluiten", - "1100": "Not in a mission", - "1101": "Playing a bonus mission", - "1102": "Scatter Gun Training Course", - "1103": "Blaster Training Course", - "1104": "Vulcan Fury Training Course", - "1105": "Peace Maker Training Course", - "1106": "Onin Game", - "1107": "Metal Head Mash", + "1100": "Niet in een missie", + "1101": "Een bonusmissie spelen", + "1102": "Trainingscursus voor verstrooiingswapens", + "1103": "Blaster-opleiding", + "1104": "Vulcan Fury-training", + "1105": "Training voor vredestichters", + "1106": "Ik ben Spel", + "1107": "Metalen kop puree", "1200": "Weergavemodus", "1201": "In-Venster", "1202": "Volledig Scherm", - "1203": "Randloos Venster", - "1204": "Automatic", - "1205": "Custom", + "1203": "Randloos venster", + "1204": "Automatisch", + "1205": "Aangepast", "1206": "4x3 (PS2)", "1207": "16x9 (PS2)", - "1208": "Choose width and height ratio", - "1209": "Press to confirm and exit.", - "120a": "Press to confirm and exit.", - "120b": "Ratio must not be lower than 4x3!", + "1208": "Kies de breedte- en hoogteverhouding", + "1209": "Druk op om te bevestigen en af te sluiten.", + "120a": "Druk op om te bevestigen en af te sluiten.", + "120b": "De verhouding mag niet lager zijn dan 4x3!", "120c": "Muziekspeler", - "120d": "V-Synch", - "120e": "Teksttaal", - "120f": "OpenGOAL Secrets", - "1210": "Width", - "1211": "Height", + "120d": "V-synchronisatie", + "120e": "Tekst taal", + "120f": "OpenGOAL-geheimen", + "1210": "Breedte", + "1211": "Hoogte", "1212": "??????????", - "1213": "Now playing...", - "1214": "No Track", + "1213": "Nu spelen...", + "1214": "Geen spoor", "1215": "Standaard", - "1216": "Morph Gun", + "1216": "Morphing-pistool", "1217": "JET-Board", - "1218": "Titan Suit", - "1219": "Dark Jak", - "121a": "Vehicle", - "121b": "Danger", - "121c": "None", - "121d": "Low", + "1218": "Titan-pak", + "1219": "Donker Jak", + "121a": "Voertuig", + "121b": "Gevaar", + "121c": "Geen", + "121d": "Laag", "121e": "Medium", - "121f": "High", + "121f": "Hoog", "1220": "Haven Exploration", "1221": "Guard Pursuit", "1222": "Ram Head Battle (Alt)", @@ -65,81 +65,81 @@ "1235": "Weapons Factory", "1236": "Arena Race", "1237": "Dead Town", - "1238": "Window Size", - "1239": "Select Window Size", + "1238": "Venstergrootte", + "1239": "Selecteer Venstergrootte", "123a": "Spelresolutie", - "123b": "Select Game Resolution", + "123b": "Selecteer Spelresolutie", "123c": "Detailniveau (Achtergrond)", "123d": "Detailniveau (Voorgrond)", "123f": "Toon Spreker In Subtitel", "1240": "Nooit", "1241": "Buiten Beeld", "1242": "Altijd", - "1243": "Game Territory", - "1244": "America (SCEA)", - "1245": "Europe (SCEE)", + "1243": "Spelgebied", + "1244": "Amerika (SCEA)", + "1245": "Europa (SCEE)", "1246": "Japan (SCEI)", "1247": "Korea (SCEK)", "1248": "MSAA", "1249": "~DX", - "124a": "Controller LED Options", - "124b": "Show Player State", - "124c": "Show Amount of Health", + "124a": "Controller LED-opties", + "124b": "Toon spelerstatus", + "124c": "Toon hoeveelheid gezondheid", "124d": "Automatisch Opslaan Uitschakelen", "124e": "Automatich Opslaan Uitgeschakeld", "124f": "Weet U Zeker Dat U Automatisch Opslaan Wilt Uitschakelen?", "1250": "Turbo JET-Board in Haven City", - "1251": "Enemy Health Bars", - "1252": "Vehicle Health Bars", - "1253": "Vehicle Invulnerability", - "1254": "Statistics", - "1255": "Automatically Grab Collectables", - "1256": "Music Player", - "1257": "No Textures Mode", - "1258": "Fast Movies", - "1259": "Slow Movies", - "125a": "Fast Gameplay", - "125b": "Slow Gameplay", - "125c": "Instant Travel in Haven City", - "125d": "Precursor Orb Tracker", + "1251": "Vijandelijke gezondheidsbalken", + "1252": "Voertuiggezondheidsbalken", + "1253": "Onkwetsbaarheid van voertuigen", + "1254": "Statistieken", + "1255": "Verzamel automatisch verzamelobjecten", + "1256": "Muziekspeler", + "1257": "Geen texturenmodus", + "1258": "Snelle films", + "1259": "Langzame films", + "125a": "Snelle gameplay", + "125b": "Langzame gameplay", + "125c": "Direct reizen in Haven City", + "125d": "Voorloper Orb-tracker", "125e": "Werkelijke Tijd", - "125f": "Pacified Haven City", - "1260": "JET-Board Trick Display", - "1261": "Bad Weather", - "1262": "Nice Weather", - "1263": "Vehicle Hijack Voice Lines", - "1264": "Locked", - "1265": "Hit all 3 valves and find Mar's Statue in \"~S\" in under ~D seconds", - "1266": "Reduce Haven City's population count by ~D", - "1267": "Reduce Haven City's vehicle count by ~D", - "1268": "Hunt every species of Metal Head", - "1269": "Use the JET-Board to break open containers", - "126a": "Transport the Rift Rider while leaving Samos and Young Samos unscathed", + "125f": "Gepacificeerde Havenstad", + "1260": "JET-Board-trucweergave", + "1261": "Slecht weer", + "1262": "Mooi weer", + "1263": "Spraaklijnen voor voertuigkaping", + "1264": "Op slot", + "1265": "Raak alle drie de kranen en vind Mar's standbeeld in \"~S\" in minder dan ~D seconden", + "1266": "Verminder het aantal inwoners van Haven City met ~D", + "1267": "Verminder het aantal voertuigen van Haven City met ~D", + "1268": "Jaag op elke soort Metal Head", + "1269": "Gebruik het JET-Board om containers open te breken", + "126a": "Vervoer de Rift Rider terwijl je Samos en Young Samos ongedeerd achterlaat", "1280": "Cameraopties", - "1281": "Left/Right (1st Person)", - "1282": "Up/Down (1st Person)", - "1283": "Left/Right (3rd Person)", - "1284": "Up/Down (3rd Person)", - "1285": "Reset to Default", + "1281": "Links/rechts (1e persoon)", + "1282": "Omhoog/omlaag (1e persoon)", + "1283": "Links/Rechts (3e persoon)", + "1284": "Omhoog/omlaag (3e persoon)", + "1285": "Terugzetten naar standaard", "1286": "Normaal", "1287": "Omgekeerd", - "1288": "Particle Culling", + "1288": "Deeltjes ruimen", "1289": "Weergave In Discord", - "128a": "Default", - "128b": "Low", - "128c": "High", - "128d": "Credits", - "128e": "Frame Rate", + "128a": "Standaard", + "128b": "Laag", + "128c": "Hoog", + "128d": "Kredieten", + "128e": "Frame rate", "128f": "Allerlei", - "1290": "Speedrunner Modus", + "1290": "Speedrunner-modus", "1291": "Invoeropties", "1292": "Standaardwaarden Herstellen", "1293": "Controller Opties", "1294": "Selecteer Controller", - "1295": "Analoge Deadzone", + "1295": "Analoge dode zone", "1296": "Negeer Als Venster Niet In Focus Is", "1297": "Controller Led Voor Hp", - "1298": "Use LED for Other States", + "1298": "Gebruik LED voor andere staten", "1299": "Activeer Toetsenbord", "129a": "Activeer Muis", "129b": "Computermuis Opties", @@ -147,90 +147,90 @@ "129d": "Horizontale Gevoeligheid", "129e": "Verticale Gevoeligheid", "129f": "Speler Beweging", - "12a0": "Object Shadows", - "12a1": "Normal", - "12a2": "Extended", - "12a3": "No valid resolutions found.", - "12a4": "Automatic", - "12a5": "Bestiary", - "12a6": "Other Statistics", - "12a7": "Total Killed", - "12a8": "Killed by Jak", - "12a9": "Killed by Dark Jak", - "12aa": "Killed by Daxter", - "12ab": "Killed by Others", + "12a0": "Objectschaduwen", + "12a1": "Normaal", + "12a2": "Verlengd", + "12a3": "Geen geldige resoluties gevonden.", + "12a4": "Automatisch", + "12a5": "Bestiarium", + "12a6": "Andere statistieken", + "12a7": "Totaal gedood", + "12a8": "Gedood door Jak", + "12a9": "Gedood door Donkere Jak", + "12aa": "Gedood door Daxter", + "12ab": "Gedood door anderen", "12ac": "Blaster", - "12ad": "Scatter Gun", - "12ae": "Vulcan Fury", - "12af": "Peacemaker", + "12ad": "Verstrooiingspistool", + "12ae": "Vulcan woede", + "12af": "Vredestichter", "12b0": "JET-Board", - "12b1": "JET-Board Trick", - "12b2": "Titan Suit Punch", - "12b3": "Titan Suit Body", - "12b4": "Gunpod", - "12b5": "Punch", + "12b1": "JET-Board-truc", + "12b2": "Titan Suit-punch", + "12b3": "Titan-paklichaam", + "12b4": "Geweerpod", + "12b5": "Pons", "12b6": "Flop", - "12b7": "Uppercut", - "12b8": "Spin", - "12b9": "Roll", - "12bf": "Dark Bomb", - "12c0": "Dark Blast", - "12c3": "Krimzon Guard", - "12c4": "Sig", - "12c5": "Ashelin", - "12c6": "Jinx", - "12c7": "Grim", + "12b7": "Bovensnede", + "12b8": "Draai", + "12b9": "Rollen", + "12bf": "Donkere bom", + "12c0": "Donkere explosie", + "12c3": "Krimzon-wacht", + "12c4": "Inspraak", + "12c5": "Asjelin", + "12c6": "Vervloekt", + "12c7": "Grimmig", "12c8": "Mog", - "12c9": "Metal Heads", - "12ca": "Other Friends", - "12cb": "Other Enemies", - "1300": "Verberg Cursor Automatisch", + "12c9": "Metalhoofden", + "12ca": "Andere vrienden", + "12cb": "Andere vijanden", + "1300": "Cursor automatisch verbergen", "1301": "Toetsenbindingen Opnieuw Toewijzen", "1302": "Toetencombinaties Voor Controller", "1303": "Toetsencombinaties Voor Toetsenbord", "1304": "Toetsencombinaties Voor Muis", - "1305": "No Options", - "1306": "Waiting", + "1305": "Geen opties", + "1306": "Aan het wachten", "1307": "Niet Toegewezen", "1308": "Onbekend", - "1309": "High-Resolution Sky", - "130a": "Fast Airlocks and Doors", - "130b": "Fast Elevators", - "130c": "Speedrun", + "1309": "Lucht met hoge resolutie", + "130a": "Snelle luchtsluizen en deuren", + "130b": "Snelle liften", + "130c": "Snelheidsrun", "130d": "Any%", "130e": "Any% - Hoverless", "130f": "All Missions", "1310": "100%", "1311": "Any% - All Orbs", "1312": "Any% - Hero Mode", - "1313": "Local Time", - "1314": "Warning!", - "1315": "This setting is highly experimental. When not played at 60 frames per second, visual and gameplay issues may arise as a result.", - "1316": "Local Score", - "1320": "None", - "1321": "Spin", + "1313": "Lokale tijd", + "1314": "Waarschuwing!", + "1315": "Deze instelling is zeer experimenteel. Wanneer er niet op 60 frames per seconde wordt gespeeld, kunnen er visuele en gameplay-problemen ontstaan.", + "1316": "Lokale score", + "1320": "Geen", + "1321": "Draai", "1322": "Boost", - "1323": "Flip", - "1324": "Rail Grind", - "1325": "Rail Jump", - "1326": "Nosegrab", - "1327": "Method", - "1328": "Board Spin", - "1329": "Board Flip", - "132a": "Noseflip", + "1323": "Omdraaien", + "1324": "Spoorwegslijpen", + "1325": "Spoorsprong", + "1326": "Neusgrijper", + "1327": "Methode", + "1328": "Bord draaien", + "1329": "Bord omdraaien", + "132a": "Neusbeweging", "132b": "Kickflip", - "132c": "Jump", - "132d": "Duck Jump", - "132e": "Quick Jump", - "132f": "Dark Jak", - "1330": "Dark Bomb", - "1331": "Dark Blast", - "1332": "Dark Giant", - "1333": "PS2 Options", - "1334": "Actor Culling", - "1335": "Force Environment Mapping", - "1336": "Fast Progress Menu", - "1337": "PS2 LOD Distance", - "1338": "Off", - "1339": "Display" + "132c": "Springen", + "132d": "Eend sprong", + "132e": "Snelle sprong", + "132f": "Donker Jak", + "1330": "Donkere bom", + "1331": "Donkere explosie", + "1332": "Donkere reus", + "1333": "PS2-opties", + "1334": "Acteur Culling", + "1335": "Forceer omgevingskaarten", + "1336": "Snel voortgangsmenu", + "1337": "PS2 LOD-afstand", + "1338": "Uit", + "1339": "Weergave" } diff --git a/game/assets/jak2/text/game_custom_text_pl-PL.json b/game/assets/jak2/text/game_custom_text_pl-PL.json index 7c082310e2..5d660cd15d 100644 --- a/game/assets/jak2/text/game_custom_text_pl-PL.json +++ b/game/assets/jak2/text/game_custom_text_pl-PL.json @@ -3,12 +3,12 @@ "1b5": "Kiedy ta ikona jest na ekranie, proszę nie odłączać ani podłączać żadnych urządzeń, wyłączać systemu oraz nie wyłączać gry", "1100": "Poza misją", "1101": "Grasz w misje bonusową", - "1102": "Kurs szkoleniowy Broni Rozpryskowej", - "1103": "Kurs szkoleniowy Blastera", - "1104": "Kurs szkoleniowy Furii Wulkanu", - "1105": "Kurs szkoleniowy Twórcy Pokoju", + "1102": "Kurs Szkoleniowy Broni Rozpryskowej", + "1103": "Kurs Szkoleniowy Blastera", + "1104": "Kurs Szkoleniowy Furii Wulkanu", + "1105": "Kurs Szkoleniowy Rozjemcy", "1106": "Gra Onina", - "1107": "Metal Head Mash", + "1107": "Zmiażdżone Metalowe Łby", "1200": "Tryb Wyświetlania", "1201": "W Oknie", "1202": "Pełny Ekran", @@ -17,10 +17,10 @@ "1205": "Własna", "1206": "4x3 (PS2)", "1207": "16x9 (PS2)", - "1208": "Wybierz stosunek szerokości i wysokości", + "1208": "Wybierz proporcję szerokości i wysokości", "1209": "Naciśnij żeby potwierdzić i wyjść.", "120a": "Naciśnij żeby potwierdzić i wyjść.", - "120b": "Rozdzielczość nie może być mniejsza niż 4x3!", + "120b": "Proporcja nie może być mniejsza niż 4x3!", "120c": "Odtwarzacz Muzyki", "120d": "Synchronizacja Pionowa", "120e": "Język Tekstu", @@ -28,19 +28,19 @@ "1210": "Szerokość", "1211": "Wysokość", "1212": "??????????", - "1213": "Now playing...", + "1213": "Teraz odtwarzane...", "1214": "Brak utworu", "1215": "Domyślne", - "1216": "Morph Gun", + "1216": "Karabin Przemianowy", "1217": "Deska Odrzutowa", "1218": "Strój Tytana", "1219": "Mroczny Jak", "121a": "Pojazd", "121b": "Niebezpieczeństwo", - "121c": "None", - "121d": "Low", - "121e": "Medium", - "121f": "High", + "121c": "Brak", + "121d": "Niskie", + "121e": "Średnie", + "121f": "Wysokie", "1220": "Haven Exploration", "1221": "Guard Pursuit", "1222": "Ram Head Battle (Alt)", @@ -75,61 +75,61 @@ "1240": "Nigdy", "1241": "Poza Ekranem", "1242": "Zawsze", - "1243": "Game Territory", + "1243": "Terytorium gry", "1244": "Ameryka (SCEA)", "1245": "Europa (SCEE)", "1246": "Japonia (SCEI)", "1247": "Korea (SCEK)", "1248": "MSAA", "1249": "~DX", - "124a": "Controller LED Options", + "124a": "Opcje LED kontrolera", "124b": "Pokaż stan gracza", "124c": "Pokaż ilość życia", "124d": "Wyłącz Autozapis", "124e": "Autozapis Wyłączony", "124f": "Czy na pewnochcesz wyłączyć autozapis?", - "1250": "Turbo JET-Board in Haven City", - "1251": "Paski życia wrogów", - "1252": "Paski zdrowia pojazdów", + "1250": "Przyspieszenie odrzutowej deski w Haven City", + "1251": "Paski zdrowia wrogów", + "1252": "Paski życia pojazdów", "1253": "Niewrażliwość pojazdu", - "1254": "Statistics", - "1255": "Automatically Grab Collectables", + "1254": "Statystyki", + "1255": "Automatyczne zbieranie znajdziek", "1256": "Odtwarzacz Muzyki", "1257": "Tryb braku tekstur", "1258": "Szybkie filmy", - "1259": "Slow Movies", - "125a": "Fast Gameplay", - "125b": "Slow Gameplay", - "125c": "Instant Travel in Haven City", - "125d": "Precursor Orb Tracker", + "1259": "Spowolnione filmy", + "125a": "Szybka rozgrywka", + "125b": "Wolna rozgrywka", + "125c": "Natychmiastowa podróż w mieście Haven", + "125d": "Lokalizator Kul Prekursorów", "125e": "Rzeczywista Pora Dnia", - "125f": "Pacified Haven City", - "1260": "JET-Board Trick Display", - "1261": "Bad Weather", - "1262": "Nice Weather", - "1263": "Vehicle Hijack Voice Lines", - "1264": "Locked", - "1265": "Hit all 3 valves and find Mar's Statue in \"~S\" in under ~D seconds", - "1266": "Reduce Haven City's population count by ~D", - "1267": "Reduce Haven City's vehicle count by ~D", - "1268": "Hunt every species of Metal Head", - "1269": "Use the JET-Board to break open containers", - "126a": "Transport the Rift Rider while leaving Samos and Young Samos unscathed", + "125f": "Spacyfikowane Miasto Haven", + "1260": "Wyświetlanie trików na odrzutowej desce", + "1261": "Zła pogoda", + "1262": "Ładna pogoda", + "1263": "Linie dialogowe przejęcia pojazdu", + "1264": "Zablokowane", + "1265": "Uderz wszystkie 3 zawory i znajdź posąg Mara w \"~S\" w mniej niż ~D sekund", + "1266": "Zmniejsz populację przechodniów Miasta Haven o ~D", + "1267": "Zmniejsz ilość pojazdów Miasta Haven o ~D", + "1268": "Upoluj każdy rodzaj Metalowych Łbów", + "1269": "Użyj odrzutowej deski, aby otworzyć pojemniki", + "126a": "Przetransportuj Jeźdźca Rozpadlin oraz odstaw Samosa i Młodego Samosa bez szwanku", "1280": "Opcje Kamery", - "1281": "Left/Right (1st Person)", - "1282": "Up/Down (1st Person)", - "1283": "Left/Right (3rd Person)", - "1284": "Up/Down (3rd Person)", - "1285": "Reset to Default", + "1281": "Lewo/Prawo (pierwsza osoba)", + "1282": "Góra/Dół (pierwsza osoba)", + "1283": "Lewo/Prawo (trzecia osoba)", + "1284": "Góra/Dół (trzecia osoba)", + "1285": "Zresetuj do ustawień domyślnych", "1286": "Normalna", "1287": "Odwrócona", - "1288": "Particle Culling", + "1288": "Optymalizacja cząsteczek", "1289": "Bogata Obecność Discord", - "128a": "Default", - "128b": "Low", - "128c": "High", - "128d": "Credits", - "128e": "Frame Rate", + "128a": "Domyślny", + "128b": "Niskie", + "128c": "Wysokie", + "128d": "Napisy końcowe", + "128e": "Liczba klatek na sekundę", "128f": "Różne", "1290": "Tryb Speedrunnera", "1291": "Opcje Wejścia", @@ -139,7 +139,7 @@ "1295": "Martwa Strefa Gałki Analogowej", "1296": "Ignoruj, jeśli Okno nie jest Aktywne", "1297": "Led Kontrolera pokazuje Zdrowie", - "1298": "Use LED for Other States", + "1298": "Użyj LED dla innych stanów", "1299": "Użycie Klawiatury", "129a": "Użycie Myszy", "129b": "Opcje Myszy", @@ -147,55 +147,55 @@ "129d": "Czułość Pozioma", "129e": "Czułość Pionowa", "129f": "Poruszanie Się", - "12a0": "Object Shadows", - "12a1": "Normal", - "12a2": "Extended", - "12a3": "No valid resolutions found.", - "12a4": "Automatic", - "12a5": "Bestiary", - "12a6": "Other Statistics", - "12a7": "Total Killed", - "12a8": "Killed by Jak", - "12a9": "Killed by Dark Jak", - "12aa": "Killed by Daxter", - "12ab": "Killed by Others", + "12a0": "Cienie obiektów", + "12a1": "Normalny", + "12a2": "Rozszerzony", + "12a3": "Nie znaleziono prawidłowych rozdzielczości.", + "12a4": "Automatyczny", + "12a5": "Bestiariusz", + "12a6": "Inne statystyki", + "12a7": "Całkowita liczba zabitych", + "12a8": "Zabitych przez Jaka", + "12a9": "Zabitych przez Mrocznego Jaka", + "12aa": "Zabitych przez Daxtera", + "12ab": "Zabitych przez innych", "12ac": "Blaster", - "12ad": "Scatter Gun", - "12ae": "Vulcan Fury", - "12af": "Peacemaker", - "12b0": "JET-Board", - "12b1": "JET-Board Trick", - "12b2": "Titan Suit Punch", - "12b3": "Titan Suit Body", - "12b4": "Gunpod", - "12b5": "Punch", + "12ad": "Broń Rozpryskowa", + "12ae": "Wulkaniczna Furia", + "12af": "Rozjemca", + "12b0": "Deska Odrzutowa", + "12b1": "Trik na Desce Odrzutowej", + "12b2": "Uderzenie Stroju Tytana", + "12b3": "Pancerz Stroju Tytana", + "12b4": "Wieżyczka", + "12b5": "Uderzenie", "12b6": "Flop", - "12b7": "Uppercut", - "12b8": "Spin", - "12b9": "Roll", - "12bf": "Dark Bomb", - "12c0": "Dark Blast", - "12c3": "Krimzon Guard", + "12b7": "Podbródkowy", + "12b8": "Obrót", + "12b9": "Przewrót", + "12bf": "Mroczna Bomba", + "12c0": "Mroczny Ładunek", + "12c3": "Strażnik Krimzon", "12c4": "Sig", "12c5": "Ashelin", "12c6": "Jinx", "12c7": "Grim", "12c8": "Mog", - "12c9": "Metal Heads", - "12ca": "Other Friends", - "12cb": "Other Enemies", + "12c9": "Metalowe Łby", + "12ca": "Inni sojusznicy", + "12cb": "Inni wrogowie", "1300": "Automatycznie Chowaj Kursor", "1301": "Przypisz Przyciski", "1302": "Przyciski Kontrolera", "1303": "Przyciski Klawiatury", "1304": "Przyciski Myszy", - "1305": "No Options", - "1306": "Waiting", + "1305": "Brak opcji", + "1306": "Oczekuje", "1307": "Nieprzypisane", "1308": "Nieznane", - "1309": "High-Resolution Sky", - "130a": "Fast Airlocks and Doors", - "130b": "Fast Elevators", + "1309": "Niebo o wysokiej rozdzielczości", + "130a": "Szybkie zawory i drzwi", + "130b": "Szybkie windy", "130c": "Speedrun", "130d": "Any%", "130e": "Any% - Hoverless", @@ -203,20 +203,20 @@ "1310": "100%", "1311": "Any% - All Orbs", "1312": "Any% - Hero Mode", - "1313": "Local Time", + "1313": "Czas lokalny", "1314": "Ostrzeżenie!", - "1315": "This setting is highly experimental. When not played at 60 frames per second, visual and gameplay issues may arise as a result.", - "1316": "Local Score", - "1320": "None", - "1321": "Spin", - "1322": "Boost", - "1323": "Flip", - "1324": "Rail Grind", - "1325": "Rail Jump", + "1315": "To ustawienie jest mocno eksperymentalne. Gdy gra nie jest w 60 klatkach na sekundę, mogą pojawić się błędy graficzne i problemy z rozgrywką.", + "1316": "Wynik lokalny", + "1320": "Brak", + "1321": "Wir", + "1322": "Doładowanie", + "1323": "Przewrót", + "1324": "Jazda na poręczy", + "1325": "Skok z poręczy", "1326": "Nosegrab", "1327": "Method", - "1328": "Board Spin", - "1329": "Board Flip", + "1328": "Wirowanie deską", + "1329": "Obrót deską", "132a": "Noseflip", "132b": "Kickflip", "132c": "Skok", @@ -226,11 +226,11 @@ "1330": "Mroczna Bomba", "1331": "Mroczny Ładunek", "1332": "Mroczny Gigant", - "1333": "PS2 Options", - "1334": "Actor Culling", - "1335": "Force Environment Mapping", - "1336": "Fast Progress Menu", - "1337": "PS2 LOD Distance", - "1338": "Off", - "1339": "Display" + "1333": "Opcje PS2", + "1334": "Optymalizacja aktorów", + "1335": "Wymuś mapowanie środowiska", + "1336": "Szybkie Menu Postępu", + "1337": "Odległość rysowania PS2", + "1338": "Wył.", + "1339": "Wyświetlacz" } diff --git a/game/assets/jak2/text/game_custom_text_pt-BR.json b/game/assets/jak2/text/game_custom_text_pt-BR.json index a84a192be6..f88c16e699 100644 --- a/game/assets/jak2/text/game_custom_text_pt-BR.json +++ b/game/assets/jak2/text/game_custom_text_pt-BR.json @@ -32,7 +32,7 @@ "1214": "Nenhuma Trilha", "1215": "Padrão", "1216": "Arma Metamórfica", - "1217": "TURBO-Prancha", + "1217": "JET-Board", "1218": "Armadura Titã", "1219": "Jak Sombrio", "121a": "Veículo", @@ -88,11 +88,11 @@ "124d": "Desabilitar Salvamento Automático", "124e": "Salvamento Automático Desabilitado", "124f": "Tem certeza que quer desabilitar o salvamento automático?", - "1250": "Super TURBO-Prancha na Cidade Bastião", + "1250": "Super JET-Board na Cidade Bastião", "1251": "Barras de Vida do Inimigo", "1252": "Barras de Vida do Veículo", "1253": "Invulnerabilidade do Veículo", - "1254": "Statistics", + "1254": "Estatísticas", "1255": "Coletar Automaticamente os Colecionáveis", "1256": "Reprodutor de Música", "1257": "Modo Sem Texturas", @@ -104,17 +104,17 @@ "125d": "Contador de Orbe Precursor", "125e": "Tempo Real do Dia", "125f": "Cidade Bastião Pacificada", - "1260": "Tela de Truques da TURBO-Prancha", + "1260": "Tela de Truques da JET-Board", "1261": "Clima Ruim", "1262": "Clima Bom", - "1263": "Vehicle Hijack Voice Lines", - "1264": "Locked", - "1265": "Hit all 3 valves and find Mar's Statue in \"~S\" in under ~D seconds", - "1266": "Reduce Haven City's population count by ~D", - "1267": "Reduce Haven City's vehicle count by ~D", - "1268": "Hunt every species of Metal Head", - "1269": "Use the JET-Board to break open containers", - "126a": "Transport the Rift Rider while leaving Samos and Young Samos unscathed", + "1263": "Linhas de Voz de Veículos", + "1264": "Bloqueado", + "1265": "Acerte todas as 3 válvulas e encontre a Estátua de Mar em \"~S\" em menos de ~D segundos", + "1266": "Reduzir a população da Cidade de Haven em ~D", + "1267": "Reduzir o número de veículos da Cidade de Haven em ~D", + "1268": "Cace cada espécie de Cabeça de Metal", + "1269": "Use a JET-Board para quebrar contêineres", + "126a": "Transporte o Rift Rider, deixando Samos e o Jovem Samos ilesos", "1280": "Opções de Câmera", "1281": "Esquerda/Direita (1º Pessoa)", "1282": "Cima/Baixo (1º Pessoa)", @@ -147,43 +147,43 @@ "129d": "Sensibilidade Horizontal", "129e": "Sensibilidade Vertical", "129f": "Movimento do Jogador", - "12a0": "Object Shadows", + "12a0": "Sombras de Objeto", "12a1": "Normal", - "12a2": "Extended", - "12a3": "No valid resolutions found.", - "12a4": "Automatic", - "12a5": "Bestiary", - "12a6": "Other Statistics", - "12a7": "Total Killed", - "12a8": "Killed by Jak", - "12a9": "Killed by Dark Jak", - "12aa": "Killed by Daxter", - "12ab": "Killed by Others", - "12ac": "Blaster", - "12ad": "Scatter Gun", - "12ae": "Vulcan Fury", - "12af": "Peacemaker", + "12a2": "Estendido", + "12a3": "Não foram encontradas resoluções válidas.", + "12a4": "Automático", + "12a5": "Bestiário", + "12a6": "Outras Estatísticas", + "12a7": "Total Eliminado", + "12a8": "Morto por Jak", + "12a9": "Morto por Jak Sombrio", + "12aa": "Morto por Daxter", + "12ab": "Morto por Outros", + "12ac": "Demolidor", + "12ad": "Arma de Dispersão", + "12ae": "Fúria Vulcana", + "12af": "Pacificador", "12b0": "JET-Board", - "12b1": "JET-Board Trick", - "12b2": "Titan Suit Punch", - "12b3": "Titan Suit Body", - "12b4": "Gunpod", - "12b5": "Punch", - "12b6": "Flop", - "12b7": "Uppercut", - "12b8": "Spin", - "12b9": "Roll", - "12bf": "Dark Bomb", - "12c0": "Dark Blast", - "12c3": "Krimzon Guard", + "12b1": "Manobra da JET-Board", + "12b2": "Soco do Traje Titã", + "12b3": "Corpo do Traje Titã", + "12b4": "Contêiner de armas", + "12b5": "Soco", + "12b6": "Fracasso", + "12b7": "Gancho", + "12b8": "Girar", + "12b9": "Rolar", + "12bf": "Bomba Sombria", + "12c0": "Explosão Sombria", + "12c3": "Guarda Krimzon", "12c4": "Sig", "12c5": "Ashelin", "12c6": "Jinx", - "12c7": "Grim", + "12c7": "Sinistro", "12c8": "Mog", - "12c9": "Metal Heads", - "12ca": "Other Friends", - "12cb": "Other Enemies", + "12c9": "Cabeças de Metal", + "12ca": "Outros Amigos", + "12cb": "Outros Inimigos", "1300": "Ocultar Automaticamente o Cursor", "1301": "Reatribuir Mapeamento", "1302": "Mapeamento do Controle", @@ -205,12 +205,12 @@ "1312": "Any% - Hero Mode", "1313": "Tempo Local", "1314": "Aviso!", - "1315": "Esta configuração é altamente experimental. Quando não jogado a 60 quadros por segundo, problemas visuais e de jogabilidade podem surgir como resultado.", - "1316": "Local Score", + "1315": "Essa configuração é extremamente experimental. Se não for executado a 60 quadros por segundo, poderão ocorrer problemas visuais e de jogabilidade.", + "1316": "Pontuação Local", "1320": "Nenhum", - "1321": "Spin", + "1321": "Girar", "1322": "Impulso", - "1323": "Flip", + "1323": "Virar", "1324": "Grind no Trilho", "1325": "Salto no Trilho", "1326": "Nosegrab", @@ -226,11 +226,11 @@ "1330": "Bomba Sombria", "1331": "Explosão Sombria", "1332": "Gigante Sombrio", - "1333": "PS2 Options", - "1334": "Actor Culling", - "1335": "Force Environment Mapping", - "1336": "Fast Progress Menu", - "1337": "PS2 LOD Distance", - "1338": "Off", - "1339": "Display" + "1333": "Opções do PS2", + "1334": "Descarte de Ator", + "1335": "Forçar Mapeamento Ambiental", + "1336": "Menu de Progresso rápido", + "1337": "Distância LOD PS2", + "1338": "Desligado", + "1339": "Tela" } diff --git a/game/assets/sdl_controller_db.txt b/game/assets/sdl_controller_db.txt index 35a635bef1..b788597993 100644 --- a/game/assets/sdl_controller_db.txt +++ b/game/assets/sdl_controller_db.txt @@ -108,7 +108,7 @@ 03000000830500000160000000000000,Arcade,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b3,x:b4,y:b4,platform:Windows, 03000000120c0000100e000000000000,Armor 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000490b00004406000000000000,ASCII Seamic Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b9,x:b3,y:b4,platform:Windows, -03000000869800002500000000000000,Astro C40 TR PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000869800002500000000000000,Astro C40 TR PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000a30c00002700000000000000,Astro City Mini,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, 03000000a30c00002800000000000000,Astro City Mini,a:b2,b:b1,back:b8,leftx:a3,lefty:a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, 03000000050b00000579000000000000,ASUS ROG Kunai 3,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, @@ -124,7 +124,7 @@ 03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,platform:Windows, 030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000ad1b000001f9000000000000,BB 070,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, -03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000bc2000005250000000000000,Beitong G3,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b5,righttrigger:b9,rightx:a3,righty:a4,start:b15,x:b3,y:b4,platform:Windows, 030000000d0500000208000000000000,Belkin Nostromo N40,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b2,y:b3,platform:Windows, 03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, @@ -141,8 +141,8 @@ 030000006b1400000209000000000000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, 030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, -03000000120c0000200e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000210e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000200e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000210e000000000000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000120c0000f10e000000000000,Brook PS2 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000120c0000310c000000000000,Brook Super Converter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, 03000000d81d00000b00000000000000,Buffalo BSGP1601 Series,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,platform:Windows, @@ -224,7 +224,7 @@ 030000004c0e00001035000000000000,Gamester,a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Windows, 030000000d0f00001110000000000000,GameStick Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, 0300000047530000616d000000000000,GameStop,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, -03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000b62500000100000000000000,Gametel GT004 01,a:b3,b:b0,dpdown:b10,dpleft:b9,dpright:b8,dpup:b11,leftshoulder:b4,rightshoulder:b5,start:b7,x:b1,y:b2,platform:Windows, 030000008f0e00001411000000000000,Gamo2 Divaller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000120c0000a857000000000000,Gator Claw,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, @@ -258,7 +258,7 @@ 030000000d0f00002500000000000000,Hori Fighting Commander 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00002d00000000000000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000000d0f00008400000000000000,Hori Fighting Commander 5,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006201000000000000,Hori Fighting Commander Octa,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006401000000000000,Hori Fighting Commander Octa,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,start:b7,x:b2,y:b3,platform:Windows, @@ -266,7 +266,7 @@ 030000000d0f00008600000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 030000000d0f0000ba00000000000000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 030000000d0f00008800000000000000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,platform:Windows, -030000000d0f00008700000000000000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00008700000000000000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000000d0f00001000000000000000,Hori Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00003200000000000000,Hori Fightstick 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f0000c000000000000000,Hori Fightstick 4,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, @@ -276,8 +276,8 @@ 030000000d0f00002100000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00002700000000000000,Hori Fightstick V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f0000a000000000000000,Hori Grip TAC4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b13,x:b0,y:b3,platform:Windows, -030000000d0f0000a500000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -030000000d0f0000a600000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f0000a500000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000000d0f0000a600000000000000,Hori Miku Project Diva X HD PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000000d0f00000101000000000000,Hori Mini Hatsune Miku FT,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, @@ -311,7 +311,7 @@ 030000000d0f00001300000000000000,Horipad 3W,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00005500000000000000,Horipad 4 FPS,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000000d0f00006e00000000000000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -030000000d0f00006600000000000000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000000d0f00006600000000000000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000000d0f00004200000000000000,Horipad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000ad1b000001f5000000000000,Horipad EXT2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b11,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 030000000d0f0000ee00000000000000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, @@ -377,22 +377,22 @@ 03000000380700006352000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000380700006652000000000000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, 03000000380700005032000000000000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -03000000380700005082000000000000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700005082000000000000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000380700008031000000000000,Mad Catz FightStick Alpha PS3 ,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000003807000038b7000000000000,Mad Catz Fightstick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, 03000000380700008433000000000000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -03000000380700008483000000000000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008483000000000000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000380700008134000000000000,Mad Catz Fightstick TE2 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -03000000380700008184000000000000,Mad Catz Fightstick TE2 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008184000000000000,Mad Catz Fightstick TE2 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000380700006252000000000000,Mad Catz Micro CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,platform:Windows, 03000000380700008232000000000000,Mad Catz PlayStation Brawlpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000380700008731000000000000,Mad Catz PlayStation Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 030000003807000056a8000000000000,Mad Catz PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000380700001888000000000000,Mad Catz SFIV Fightstick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, -03000000380700008081000000000000,Mad Catz SFV Arcade Fightstick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008081000000000000,Mad Catz SFV Arcade Fightstick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000380700001847000000000000,Mad Catz Street Fighter 4 Xbox 360 FightStick,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,start:b7,x:b2,y:b3,platform:Windows, 03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, 030000009f000000adbb000000000000,MaxJoypad Virtual Controller,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, 03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,platform:Windows, @@ -438,10 +438,10 @@ 03000000f70600000100000000000000,N64 Adaptoid,+rightx:b2,+righty:b1,-rightx:b4,-righty:b5,a:b0,b:b3,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,platform:Windows, 030000006f0e00001311000000000000,N64 Controller,+rightx:b10,+righty:b3,-rightx:b0,-righty:b11,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,platform:Windows, 030000006b140000010c000000000000,Nacon GC 400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Windows, -030000006b1400001106000000000000,Nacon Revolution 3 PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000006b1400001106000000000000,Nacon Revolution 3 PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 0300000085320000170d000000000000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 0300000085320000190d000000000000,Nacon Revolution 5 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, -030000006b140000100d000000000000,Nacon Revolution Infinity PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, +030000006b140000100d000000000000,Nacon Revolution Infinity PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000006b140000080d000000000000,Nacon Revolution Unlimited Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000bd12000001c0000000000000,Nebular,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b0,platform:Windows, 03000000eb0300000000000000000000,NeGcon Adapter,a:a2,b:b13,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,lefttrigger:a4,leftx:a1,righttrigger:b11,start:b3,x:a3,y:b12,platform:Windows, @@ -522,28 +522,28 @@ 030000008f0e00000300000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, 030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000ba2200002010000000000000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a5,righty:a2,start:b9,x:b3,y:b2,platform:Windows, -03000000120c00000807000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000111e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000121e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000130e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000150e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000180e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000181e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000191e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c00001e0e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000a957000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000aa57000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000f21c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000f31c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000f41c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000f51c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120c0000f70e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000120e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000160e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -030000001a1e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c00000807000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000111e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000121e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000130e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000150e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000180e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000181e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000191e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c00001e0e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000a957000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000aa57000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f21c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f31c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f41c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f51c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120c0000f70e000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000120e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +03000000160e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000001a1e0000120c000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, -030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000004c0500005f0e000000000000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000004c050000f20d000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, @@ -558,7 +558,7 @@ 03000000300f00001210000000000000,Qanba Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,platform:Windows, 03000000341a00000104000000000000,Qanba Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,platform:Windows, 03000000222c00000223000000000000,Qanba Obsidian Arcade Stick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -03000000222c00000023000000000000,Qanba Obsidian Arcade Stick PS4,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000222c00000023000000000000,Qanba Obsidian Arcade Stick PS4,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 030000008a2400006682000000000000,R1 Mobile Controller,a:b3,b:b1,back:b7,leftx:a0,lefty:a1,start:b6,x:b4,y:b0,platform:Windows, 03000000086700006626000000000000,RadioShack,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b3,y:b0,platform:Windows, 03000000ff1100004733000000000000,Ramox FPS Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b0,platform:Windows, @@ -590,7 +590,7 @@ 03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 03000000f8270000bf0b000000000000,Razer Kishi,a:b6,b:b7,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b18,leftshoulder:b12,leftstick:b19,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b13,rightstick:b20,righttrigger:b15,rightx:a3,righty:a4,start:b17,x:b9,y:b10,platform:Windows, 03000000321500000204000000000000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, -03000000321500000104000000000000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000104000000000000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000321500000010000000000000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, @@ -598,7 +598,7 @@ 03000000321500000a10000000000000,Razer Raiju TE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000321500000410000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 03000000321500000910000000000000,Razer Raiju UE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000321500000011000000000000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000321500000011000000000000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000321500000009000000000000,Razer Serval,+lefty:+a2,-lefty:-a1,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,leftx:a0,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 03000000921200004547000000000000,Retro Bit Sega Genesis Controller Adapter,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b6,x:b3,y:b4,platform:Windows, 03000000790000001100000000000000,Retro Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b6,lefttrigger:b7,rightshoulder:b4,righttrigger:b5,start:b9,x:b0,y:b3,platform:Windows, @@ -655,7 +655,7 @@ 03000000830500006120000000000000,Sanwa Smart Grip II,a:b0,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,x:b1,y:b3,platform:Windows, 03000000c01100000051000000000000,Satechi Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a5,start:b11,x:b3,y:b4,platform:Windows, 030000004f04000028b3000000000000,Score A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, -03000000952e00002577000000000000,Scuf PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000952e00002577000000000000,Scuf PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000a30c00002500000000000000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Windows, 03000000a30c00002400000000000000,Sega Mega Drive Mini 6B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,rightshoulder:b4,righttrigger:b5,start:b9,x:b3,y:b0,platform:Windows, 03000000d804000086e6000000000000,Sega Multi Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b7,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, @@ -665,7 +665,7 @@ 03000000b40400000a01000000000000,Sega Saturn Controller,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b2,start:b8,x:b3,y:b4,platform:Windows, 030000003b07000004a1000000000000,SFX,a:b0,b:b2,back:b7,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b5,start:b8,x:b1,y:b3,platform:Windows, 03000000f82100001900000000000000,Shogun Bros Chameleon X1,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Windows, -03000000120c00001c1e000000000000,SnakeByte 4S PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c00001c1e000000000000,SnakeByte 4S PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000140300000918000000000000,SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Windows, 0300000081170000960a000000000000,SNES Controller,a:b4,b:b0,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b3,x:b5,y:b1,platform:Windows, 03000000811700009d0a000000000000,SNES Controller,a:b0,b:b4,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Windows, @@ -680,7 +680,7 @@ 03000000d11800000094000000000000,Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,platform:Windows, 03000000de280000fc11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, 03000000de280000ff11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Windows, -03000000120c0000160e000000000000,Steel Play Metaltech PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, +03000000120c0000160e000000000000,Steel Play Metaltech PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, 03000000381000001214000000000000,SteelSeries Free,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Windows, 03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,platform:Windows, @@ -742,8 +742,8 @@ 03000000632500002305000000000000,USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Windows, 03000000790000001a18000000000000,Venom,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Windows, 03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, -030000006f0e00000302000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, -030000006f0e00000702000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Windows, +030000006f0e00000302000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, +030000006f0e00000702000000000000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Windows, 0300000034120000adbe000000000000,vJoy Device,a:b0,b:b1,back:b15,dpdown:b6,dpleft:b7,dpright:b8,dpup:b5,guide:b16,leftshoulder:b9,leftstick:b13,lefttrigger:b11,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b14,righttrigger:b12,rightx:a3,righty:a4,start:b4,x:b2,y:b3,platform:Windows, 03000000120c0000ab57000000000000,Warrior Joypad JS083,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Windows, 030000007e0500003003000000000000,Wii U Pro,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,leftshoulder:b6,leftstick:b11,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b12,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b2,platform:Windows, @@ -882,9 +882,9 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000008a3500000302000000010000,Backbone One PlayStationÆ Edition,a:b0,b:b1,back:b16,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b17,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b15,x:b2,y:b3,platform:Mac OS X, 03000000c62400001a89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,platform:Mac OS X, 03000000c62400001b89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, -03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, -03000000120c0000200e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, -03000000120c0000210e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000120c0000200e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000120c0000210e000000010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000d8140000cecf000000000000,Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,platform:Mac OS X, @@ -899,7 +899,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000ac0500001a06000002020000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, 03000000ad1b000001f9000000000000,Gamestop BB070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, 0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Mac OS X, -03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 030000006f0e00000102000000000000,GameStop Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, 03000000ff1100003133000007010000,GameWare PC Control Pad,a:b2,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b0,platform:Mac OS X, 030000007d0400000540000001010000,Gravis Eliminator Pro,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, @@ -908,13 +908,13 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000000d0f00002d00000000100000,Hori Fighting Commander 3 Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00005f00000000000000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00005f00000000010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, -030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, -030000000d0f00005e00000000010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005e00000000000000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000000d0f00005e00000000010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 030000000d0f00008400000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00008500000000010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000341a00000302000014010000,Hori Fighting Stick Mini,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00008800000000010000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, -030000000d0f00008700000000010000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00008700000000010000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 030000000d0f00004d00000000000000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00003801000008010000,Hori PC Engine Mini Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,platform:Mac OS X, 030000000d0f00009200000000010000,Hori Pokken Tournament DX Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, @@ -922,7 +922,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000000d0f00000002000017010000,Hori Split Pad Fit,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00000002000015010000,Hori Switch Split Pad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f00006e00000000010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, -030000000d0f00006600000000010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000000d0f00006600000000010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 030000000d0f00006600000000000000,Horipad FPS Plus 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f0000ee00000000010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 030000000d0f0000c100000072050000,Horipad Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, @@ -945,8 +945,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000006d04000018c2000000010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000380700005032000000010000,Mad Catz PS3 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000380700008433000000010000,Mad Catz PS3 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, -03000000380700005082000000010000,Mad Catz PS4 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, -03000000380700008483000000010000,Mad Catz PS4 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000380700005082000000010000,Mad Catz PS4 Fightpad Pro,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +03000000380700008483000000010000,Mad Catz PS4 Fightstick TE S Plus,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 03000000790000000600000007010000,Marvo GT-004,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Mac OS X, 030000008f0e00001330000011010000,Mayflash Controller Adapter,a:b2,b:b4,back:b16,dpdown:h0.8,dpleft:h0.2,dpright:h0.1,dpup:h0.4,leftshoulder:b12,lefttrigger:b16,leftx:a0,lefty:a2,rightshoulder:b14,rightx:a6~,righty:a4,start:b18,x:b0,y:b6,platform:Mac OS X, 03000000790000004318000000010000,Mayflash GameCube Adapter,a:b4,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a12,leftx:a0,lefty:a4,rightshoulder:b28,righttrigger:a16,rightx:a20,righty:a8,start:b36,x:b8,y:b12,platform:Mac OS X, @@ -990,10 +990,10 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, 030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, 030000004c0500006802000072050000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Mac OS X, -030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, -030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, -030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, -030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 0300004b4c0500005f0e000000010000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 030000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 030000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, @@ -1006,10 +1006,10 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000009b2800008000000022020000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b10,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a3,righty:a4,start:b3,x:b0,y:b5,platform:Mac OS X, 030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, 03000000321500000204000000010000,Razer Panthera PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Mac OS X, -03000000321500000104000000010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000104000000010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 03000000321500000010000000010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, 03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, -03000000321500000011000000010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +03000000321500000011000000010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, 030000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, 0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, @@ -1033,8 +1033,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000b40400000a01000000000000,Sega Saturn,a:b0,b:b1,back:b5,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b2,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,platform:Mac OS X, 030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,platform:Mac OS X, 0300000000f00000f100000000000000,SNES RetroPort,a:b2,b:b3,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b5,rightshoulder:b7,start:b6,x:b0,y:b1,platform:Mac OS X, -030000004c050000a00b000000000000,Sony DualShock 4 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, -030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Mac OS X, +030000004c050000a00b000000000000,Sony DualShock 4 Adapter,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 03000000d11800000094000000010000,Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,platform:Mac OS X, 030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, 03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,platform:Mac OS X, @@ -1064,8 +1064,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,platform:Mac OS X, 03000000632500002605000000010000,Uberwith Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Mac OS X, 03000000151900005678000010010000,Uniplay U6,a:b3,b:b6,back:b25,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,leftstick:b31,lefttrigger:b21,leftx:a1,lefty:a3,rightshoulder:b19,rightstick:b33,righttrigger:b23,rightx:a4,righty:a5,start:b27,x:b11,y:b13,platform:Mac OS X, -030000006f0e00000302000025040000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, -030000006f0e00000702000003060000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Mac OS X, +030000006f0e00000302000025040000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, +030000006f0e00000702000003060000,Victrix PS4 Pro Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Mac OS X, 050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,platform:Mac OS X, 050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,platform:Mac OS X, 030000005e0400008e02000000000000,Xbox 360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,platform:Mac OS X, @@ -1109,6 +1109,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000c82d00000151000000010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 03000000c82d00000650000011010000,8BitDo M30,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 05000000c82d00005106000000010000,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,start:b11,x:b3,y:b4,platform:Linux, +03000000c82d00000a20000000020000,8BitDo M30 Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, 03000000c82d00002090000011010000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 05000000c82d00002090000000010000,8BitDo Micro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,platform:Linux, 03000000c82d00000451000000010000,8BitDo N30,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b11,platform:Linux, @@ -1205,7 +1206,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000008a3500000302000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 030000008a3500000402000011010000,Backbone One,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 03000000c62400001b89000011010000,BDA MOGA XP5X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, -03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000c21100000791000011010000,Be1 GC101 Controller 1.03,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 03000000c31100000791000011010000,Be1 GC101 Controller 1.03,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 030000005e0400008e02000003030000,Be1 GC101 Xbox 360,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -1213,8 +1214,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 05000000bc2000000055000001000000,Betop AX1 BFM,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 03000000bc2000006412000011010000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b30,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 030000006b1400000209000011010000,Bigben,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -03000000120c0000200e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -03000000120c0000210e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, +03000000120c0000200e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000120c0000210e000011010000,Brook Mars PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000120c0000f70e000011010000,Brook Universal Fighting Board,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, 03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 03000000af1e00002400000010010000,Clockwork Pi DevTerm,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b9,x:b3,y:b0,platform:Linux, @@ -1267,13 +1268,13 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000000d0f00006d00000020010000,Hori EDGE 301,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:+a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000000d0f00008400000011010000,Hori Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000000d0f00005f00000011010000,Hori Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -030000000d0f00005e00000011010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00005e00000011010000,Hori Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 030000000d0f00005001000009040000,Hori Fighting Commander OCTA Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000000d0f00008500000010010000,Hori Fighting Commander PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000000d0f00008600000002010000,Hori Fighting Commander Xbox 360,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 030000000d0f00003701000013010000,Hori Fighting Stick Mini,a:b1,b:b0,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b3,y:b2,platform:Linux, 030000000d0f00008800000011010000,Hori Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, -030000000d0f00008700000011010000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,rightstick:b11,righttrigger:a4,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00008700000011010000,Hori Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,rightstick:b11,righttrigger:a4,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 030000000d0f00001000000011010000,Hori Fightstick 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, 03000000ad1b000003f5000033050000,Hori Fightstick VX,+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b1,back:b8,guide:b10,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, 030000000d0f00004d00000011010000,Hori Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, @@ -1289,7 +1290,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 030000000d0f00008501000017010000,Hori Split Pad Fit,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000000d0f00008501000015010000,Hori Switch Split Pad Pro,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000000d0f00006e00000011010000,Horipad 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -030000000d0f00006600000011010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000000d0f00006600000011010000,Horipad 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 030000000d0f0000ee00000011010000,Horipad Mini 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 030000000d0f0000c100000011010000,Horipad Nintendo Switch Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 030000000d0f00006700000001010000,Horipad One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -1340,12 +1341,12 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 05000000380700006652000025010000,Mad Catz CTRLR,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000380700008532000010010000,Mad Catz Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, 03000000380700005032000011010000,Mad Catz Fightpad Pro PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -03000000380700005082000011010000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000380700005082000011010000,Mad Catz Fightpad Pro PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,platform:Linux, 03000000380700008034000011010000,Mad Catz Fightstick PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -03000000380700008084000011010000,Mad Catz Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008084000011010000,Mad Catz Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000380700008433000011010000,Mad Catz Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -03000000380700008483000011010000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000380700008483000011010000,Mad Catz Fightstick TE S PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000380700001888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000380700003888000010010000,Mad Catz Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000380700001647000010040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -1480,6 +1481,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000c62400001a54000001010000,PowerA Xbox One Mini Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000d62000000240000001010000,PowerA Xbox One Spectra Infinity,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000d62000000f20000001010000,PowerA Xbox Series Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, +03000000d62000000b20000001010000,PowerA Xbox Series X Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 030000006d040000d2ca000011010000,Precision Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, 03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,platform:Linux, 03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, @@ -1496,18 +1498,18 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, 060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,platform:Linux, -030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, -030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, -030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, -03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000c01100000140000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 050000004c050000c405000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, -050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,platform:Linux, 0300004b4c0500005f0e000011010000,PS5 Access Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, @@ -1519,25 +1521,27 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 050000004c050000f20d000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000300f00001211000011010000,Qanba Arcade Joystick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,platform:Linux, 03000000222c00000225000011010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -03000000222c00000025000011010000,Qanba Dragon Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -03000000222c00000020000011010000,Qanba Drone Arcade PS4 Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000025000011010000,Qanba Dragon Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000222c00000020000011010000,Qanba Drone Arcade PS4 Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000300f00001210000010010000,Qanba Joystick Plus,a:b0,b:b1,back:b8,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,start:b9,x:b2,y:b3,platform:Linux, 03000000222c00000223000011010000,Qanba Obsidian Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 030000009b2800000300000001010000,Raphnet 4nes4snes,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,platform:Linux, 030000009b2800004200000001010000,Raphnet Dual NES Adapter,a:b0,b:b1,back:b2,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b3,platform:Linux, +0300132d9b2800006500000000000000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, +0300132d9b2800006500000001010000,Raphnet GameCube Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, 030000009b2800003200000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, 030000009b2800006000000001010000,Raphnet GC and N64 Adapter,a:b0,b:b7,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,rightx:a3,righty:a4,start:b3,x:b1,y:b8,platform:Linux, 030000009b2800008000000020020000,Raphnet Wii Classic Adapter,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,platform:Linux, 03000000f8270000bf0b000011010000,Razer Kishi,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000321500000204000011010000,Razer Panthera PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,platform:Linux, -03000000321500000104000011010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -03000000321500000810000011010000,Razer Panthera PS4 Evo Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000104000011010000,Razer Panthera PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +03000000321500000810000011010000,Razer Panthera PS4 Evo Arcade Stick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000321500000010000011010000,Razer Raiju,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, 03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 05000000321500000a10000001000000,Razer Raiju Tournament Edition,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, -03000000321500000011000011010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +03000000321500000011000011010000,Razer Raion PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, 03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -1571,7 +1575,9 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000a306000020f6000011010000,Saitek PS2700 Rumble,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,platform:Linux, 05000000e804000000a000001b010000,Samsung EIGP20,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 03000000d81d00000e00000010010000,Savior,a:b0,b:b1,back:b8,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b11,righttrigger:b3,start:b9,x:b4,y:b5,platform:Linux, -03000000952e00004b43000011010000,Scuf Envision,a:b0,b:b1,x:b2,y:b3,dpleft:h0.8,dpright:h0.2,dpup:h0.1,dpdown:h0.4,leftx:a0,lefty:a1,leftstick:b8,rightx:a2,righty:a5,rightstick:b9,leftshoulder:b4,lefttrigger:a3,rightshoulder:b,righttrigger:a4,back:b6,start:b7,guide:b10,platform:Linux, +03000000952e00004b43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000952e00004d43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, +03000000952e00004e43000011010000,Scuf Envision,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,platform:Linux, 03000000a30c00002500000011010000,Sega Genesis Mini 3B Controller,a:b2,b:b1,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,righttrigger:b5,start:b9,platform:Linux, 03000000790000001100000011010000,Sega Saturn,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,lefttrigger:b7,rightshoulder:b5,righttrigger:b4,start:b9,x:b0,y:b3,platform:Linux, 03000000790000002201000011010000,Sega Saturn,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b5,rightshoulder:b6,righttrigger:b7,start:b9,x:b2,y:b3,platform:Linux, @@ -1583,7 +1589,7 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000bc2000000055000010010000,Shanwan Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,platform:Linux, 03000000f025000021c1000010010000,Shanwan Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,platform:Linux, 03000000341a00000908000010010000,SL6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, -050000004c050000cc09000001000000,Sony DualShock 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, +050000004c050000cc09000001000000,Sony DualShock 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 03000000ff000000cb01000010010000,Sony PlayStation Portable,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b2,y:b3,platform:Linux, 03000000250900000500000000010000,Sony PS2 pad with SmartJoy Adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,platform:Linux, 030000005e0400008e02000073050000,Speedlink Torid,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,platform:Linux, @@ -1653,8 +1659,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,platform:Linux, 03000000790000000600000007010000,USB gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,platform:Linux, 03000000790000001100000000010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,platform:Linux, -030000006f0e00000302000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, -030000006f0e00000702000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,platform:Linux, +030000006f0e00000302000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, +030000006f0e00000702000011010000,Victrix Pro Fightstick PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,touchpad:b13,x:b0,y:b3,platform:Linux, 05000000ac0500003232000001000000,VR Box Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,platform:Linux, 05000000434f4d4d414e440000000000,VX Gaming Command Series,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a3,start:b9,x:b2,y:b3,platform:Linux, 0000000058626f782033363020576900,Xbox 360 Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Linux, @@ -1717,179 +1723,180 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 03000000120c0000101e000011010000,Zeroplus P4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,platform:Linux, # Android -38653964633230666463343334313533,8BitDo Adapter,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -36666264316630653965636634386234,8BitDo Adapter 2,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38653964633230666463343334313533,8BitDo Adapter,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +36666264316630653965636634386234,8BitDo Adapter 2,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 38426974446f20417263616465205374,8BitDo Arcade Stick,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b5,leftshoulder:b9,lefttrigger:a4,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -61393962646434393836356631636132,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, -64323139346131306233636562663738,8BitDo Arcade Stick,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, -64643565386136613265663236636564,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, -33313433353539306634656436353432,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -38426974446f20446f67626f6e65204d,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, -34343439373236623466343934376233,8BitDo FC30 Pro,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b28,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b29,righttrigger:b7,start:b5,x:b30,y:b2,platform:Android, -38426974446f2038426974446f204c69,8BitDo Lite,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -30643332373663313263316637356631,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38426974446f204c6974652032000000,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -62656331626461363634633735353032,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38393936616436383062666232653338,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38426974446f204c6974652053450000,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -39356430616562366466646636643435,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +61393962646434393836356631636132,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +64323139346131306233636562663738,8BitDo Arcade Stick,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +64643565386136613265663236636564,8BitDo Arcade Stick,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +33313433353539306634656436353432,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f20446f67626f6e65204d,8BitDo Dogbone,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +34343439373236623466343934376233,8BitDo FC30 Pro,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b28,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b29,righttrigger:b7,start:b5,x:b30,y:b2,platform:Android, +38426974446f2038426974446f204c69,8BitDo Lite,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +30643332373663313263316637356631,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f204c6974652032000000,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +62656331626461363634633735353032,8BitDo Lite 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38393936616436383062666232653338,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f204c6974652053450000,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +39356430616562366466646636643435,8BitDo Lite SE,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, 05000000c82d000006500000ffff3f00,8BitDo M30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b17,leftshoulder:b9,lefttrigger:a5,rightshoulder:b10,righttrigger:a4,start:b6,x:b3,y:b2,platform:Android, 05000000c82d000051060000ffff3f00,8BitDo M30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,guide:b17,leftshoulder:b9,lefttrigger:a4,rightshoulder:b10,righttrigger:a5,start:b6,x:b3,y:b2,platform:Android, -32323161363037623637326438643634,8BitDo M30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -33656266353630643966653238646264,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,start:b10,x:b19,y:b2,platform:Android, -38426974446f204d3330204d6f646b69,8BitDo M30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -39366630663062373237616566353437,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,start:b6,x:b2,y:b3,platform:Android, -64653533313537373934323436343563,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,start:b6,x:b2,y:b3,platform:Android, -66356438346136366337386437653934,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,start:b18,x:b19,y:b2,platform:Android, -66393064393162303732356665666366,8BitDo M30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,platform:Android, -38426974446f204d6963726f2067616d,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, -61653365323561356263373333643266,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, -62613137616239666338343866326336,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, -33663431326134333366393233616633,8BitDo N30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, -38426974446f204e3330204d6f646b69,8BitDo N30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +32323161363037623637326438643634,8BitDo M30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33656266353630643966653238646264,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:a5,start:b10,x:b19,y:b2,platform:Android, +38426974446f204d3330204d6f646b69,8BitDo M30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39366630663062373237616566353437,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,start:b6,x:b2,y:b3,platform:Android, +64653533313537373934323436343563,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,start:b6,x:b2,y:b3,platform:Android, +66356438346136366337386437653934,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,start:b18,x:b19,y:b2,platform:Android, +66393064393162303732356665666366,8BitDo M30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,platform:Android, +38426974446f204d6963726f2067616d,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, +61653365323561356263373333643266,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, +62613137616239666338343866326336,8BitDo Micro,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:a4,leftx:b0,lefty:b1,rightshoulder:b10,righttrigger:a5,rightx:b2,righty:b3,start:b6,x:b3,y:b2,platform:Android, +33663431326134333366393233616633,8BitDo N30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, +38426974446f204e3330204d6f646b69,8BitDo N30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,start:b6,platform:Android, 05000000c82d000015900000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, 05000000c82d000065280000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38323035343766666239373834336637,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,platform:Android, -38426974446f204e3634204d6f646b69,8BitDo N64,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,platform:Android, -32363135613966656338666638666237,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -35363534633333373639386466346631,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -38426974446f204e454f47454f204750,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -39383963623932353561633733306334,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38323035343766666239373834336637,8BitDo N64,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,platform:Android, +38426974446f204e3634204d6f646b69,8BitDo N64,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,platform:Android, +32363135613966656338666638666237,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35363534633333373639386466346631,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f204e454f47454f204750,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39383963623932353561633733306334,8BitDo NEOGEO,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000000220000000900000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, 050000002038000009000000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38313433643131656262306631373166,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -38326536643339353865323063616339,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -38426974446f2050333020636c617373,8BitDo P30,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -35376664343164386333616535333434,8BitDo Pro 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,start:b10,x:b19,y:b2,platform:Android, -38426974446f2038426974446f205072,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38426974446f2050726f203200000000,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -61333362366131643730353063616330,8BitDo Pro 2,a:b1,b:b0,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -62373739366537363166326238653463,8BitDo Pro 2,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b3,y:b2,platform:Android, -38386464613034326435626130396565,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38426974446f2038426974446f205265,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -66303230343038613365623964393766,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38426974446f20533330204d6f646b69,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -66316462353561376330346462316137,8BitDo S30,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38313433643131656262306631373166,8BitDo P30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38326536643339353865323063616339,8BitDo P30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38426974446f2050333020636c617373,8BitDo P30,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35376664343164386333616535333434,8BitDo Pro 2,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,start:b10,x:b19,y:b2,platform:Android, +38426974446f2038426974446f205072,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f2050726f203200000000,8BitDo Pro 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +61333362366131643730353063616330,8BitDo Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +62373739366537363166326238653463,8BitDo Pro 2,a:b1,b:b0,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b3,y:b2,platform:Android, +38386464613034326435626130396565,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f2038426974446f205265,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +66303230343038613365623964393766,8BitDo Receiver,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20533330204d6f646b69,8BitDo S30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66316462353561376330346462316137,8BitDo S30,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:a4,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b9,righttrigger:b10,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 05000000c82d000000600000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, 05000000c82d000000610000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38426974646f20534633302050726f00,8BitDo SF30 Pro,a:b1,b:b0,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b17,platform:Android, +38426974646f20534633302050726f00,8BitDo SF30 Pro,a:b1,b:b0,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b17,platform:Android, 61623334636338643233383735326439,8BitDo SFC30,a:b0,b:b1,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b31,start:b5,x:b30,y:b2,platform:Android, 05000000c82d000012900000ffff3f00,8BitDo SN30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, 05000000c82d000062280000ffff3f00,8BitDo SN30,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, -38316230613931613964356666353839,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38426974446f20534e3330204d6f646b,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -65323563303231646531383162646335,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -35383531346263653330306238353131,8BitDo SN30 PP,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38316230613931613964356666353839,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20534e3330204d6f646b,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +65323563303231646531383162646335,8BitDo SN30,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +35383531346263653330306238353131,8BitDo SN30 PP,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 05000000c82d000001600000ffff3f00,8BitDo SN30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, 05000000c82d000002600000ffff0f00,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -36653638656632326235346264663661,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, -38303232393133383836366330346462,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, -38346630346135363335366265656666,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -38426974446f20534e33302050726f2b,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -536f6e7920436f6d707574657220456e,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -66306331643531333230306437353936,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +36653638656632326235346264663661,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +38303232393133383836366330346462,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +38346630346135363335366265656666,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +38426974446f20534e33302050726f2b,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +536f6e7920436f6d707574657220456e,8BitDo SN30 Pro Plus,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +66306331643531333230306437353936,8BitDo SN30 Pro Plus,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, 050000002028000009000000ffff3f00,8BitDo SNES30,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, 050000003512000020ab000000780f00,8BitDo SNES30,a:b21,b:b20,back:b30,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b26,rightshoulder:b27,start:b31,x:b24,y:b23,platform:Android, 33666663316164653937326237613331,8BitDo Zero,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, 38426974646f205a65726f2047616d65,8BitDo Zero,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, 05000000c82d000018900000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, 05000000c82d000030320000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, -33663434393362303033616630346337,8BitDo Zero 2,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, -34656330626361666438323266633963,8BitDo Zero 2,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, -63396666386564393334393236386630,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, -63633435623263373466343461646430,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, -32333634613735616163326165323731,Amazon Luna Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, -4c696e757820342e31392e3137322077,Anbernic Gamepad,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a4,start:b6,x:b2,y:b3,platform:Android, +33663434393362303033616630346337,8BitDo Zero 2,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +34656330626361666438323266633963,8BitDo Zero 2,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, +63396666386564393334393236386630,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +63633435623263373466343461646430,8BitDo Zero 2,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, +32333634613735616163326165323731,Amazon Luna Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +4c696e757820342e31392e3137322077,Anbernic Gamepad,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a4,start:b6,x:b2,y:b3,platform:Android, 417374726f2063697479206d696e6920,Astro City Mini,a:b23,b:b22,back:b29,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b25,righttrigger:b26,start:b30,x:b24,y:b21,platform:Android, -35643263313264386134376362363435,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,start:b6,platform:Android, -32353831643566306563643065356239,Atari VCS Modern Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -32303165626138343962363666346165,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +35643263313264386134376362363435,Atari VCS Classic Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,start:b6,platform:Android, +32353831643566306563643065356239,Atari VCS Modern Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4f64696e20436f6e74726f6c6c657200,AYN Odin,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b14,dpright:b13,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:+a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +32303165626138343962363666346165,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, 38383337343564366131323064613561,Brook Mars PS4 Controller,a:b1,b:b19,back:b17,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -34313430343161653665353737323365,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, -4875694a6961204a432d573031550000,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, -30363230653635633863366338623265,Evo VR,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftx:a0,lefty:a1,x:b2,y:b3,platform:Android, +34313430343161653665353737323365,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +4875694a6961204a432d573031550000,Elecom JC-W01U,a:b23,b:b24,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +30363230653635633863366338623265,Evo VR,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftx:a0,lefty:a1,x:b2,y:b3,platform:Android, 05000000b404000011240000dfff3f00,Flydigi Vader 2,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 05000000bc20000000550000ffff3f00,GameSir G3w,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -34323662653333636330306631326233,Google Nexus,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -35383633353935396534393230616564,Google Stadia Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34323662653333636330306631326233,Google Nexus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35383633353935396534393230616564,Google Stadia Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 05000000d6020000e5890000dfff3f00,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, 05000000d6020000e5890000dfff3f80,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,platform:Android, -66633030656131663837396562323935,Hori Battle,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, -35623466343433653739346434636330,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -484f524920434f2e2c4c54442e203130,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -484f524920434f2e2c4c544420205041,Hori Gem Pad 3,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, -65656436646661313232656661616130,Hori PC Engine Mini Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b18,platform:Android, -31303433326562636431653534636633,Hori Real Arcade Pro 3,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -32656664353964393561366362333636,Hori Switch Split Pad Pro,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, -30306539356238653637313730656134,HORIPAD Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +66633030656131663837396562323935,Hori Battle,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +35623466343433653739346434636330,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +484f524920434f2e2c4c54442e203130,Hori Fighting Commander 3 Pro,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +484f524920434f2e2c4c544420205041,Hori Gem Pad 3,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, +65656436646661313232656661616130,Hori PC Engine Mini Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,start:b18,platform:Android, +31303433326562636431653534636633,Hori Real Arcade Pro 3,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +32656664353964393561366362333636,Hori Switch Split Pad Pro,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +30306539356238653637313730656134,HORIPAD Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, 48797065726b696e2050616400000000,Hyperkin Admiral N64 Controller,+rightx:b6,+righty:b7,-rightx:b17,-righty:b5,a:b1,b:b0,leftshoulder:b3,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,platform:Android, 62333331353131353034386136626636,Hyperkin Admiral N64 Controller,+rightx:b6,+righty:b7,-rightx:b17,-righty:b5,a:b1,b:b0,leftshoulder:b3,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b20,start:b18,platform:Android, -31306635363562663834633739396333,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, -5368616e57616e202020202048797065,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +31306635363562663834633739396333,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +5368616e57616e202020202048797065,Hyperkin N64 Adapter,a:b1,b:b19,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, 0500000083050000602000000ffe0000,iBuffalo SNES Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b15,rightshoulder:b16,start:b10,x:b2,y:b3,platform:Android, -5553422c322d6178697320382d627574,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,rightshoulder:b18,start:b10,x:b3,y:b2,platform:Android, +5553422c322d6178697320382d627574,iBuffalo Super Famicom Controller,a:b1,b:b0,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b17,rightshoulder:b18,start:b10,x:b3,y:b2,platform:Android, 64306137363261396266353433303531,InterAct GoPad,a:b24,b:b25,leftshoulder:b23,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,x:b21,y:b22,platform:Android, -532e542e442e20496e74657261637420,InterAct HammerHead FX,a:b23,b:b24,back:b30,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,leftstick:b22,lefttrigger:b28,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b25,righttrigger:b29,rightx:a2,righty:a3,start:b31,x:b20,y:b21,platform:Android, -65346535636333663931613264643164,Joy-Con,a:b21,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b23,y:b24,platform:Android, -33346566643039343630376565326335,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, -35313531613435623366313835326238,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, -4a6f792d436f6e20284c290000000000,Joy-Con (L),a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, -38383665633039363066383334653465,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, -39363561613936303237333537383931,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, -4a6f792d436f6e202852290000000000,Joy-Con (R),a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, -39656136363638323036303865326464,JYS Aapter,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -63316564383539663166353034616434,JYS Adapter,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, -64623163333561643339623235373232,Logitech F310,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -35623364393661626231343866613337,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -4c6f6769746563682047616d65706164,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -64396331333230326333313330336533,Logitech F710,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -39653365373864633935383236363438,Logitech G Cloud,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -416d617a6f6e2047616d6520436f6e74,Luna Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, -4c756e612047616d6570616400000000,Luna Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -30363066623539323534363639323363,Magic NS,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -31353762393935386662336365626334,Magic NS,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -39623565346366623931666633323530,Magic NS,a:b1,b:b3,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, -6d6179666c617368206c696d69746564,Mayflash GameCube Adapter,a:b22,b:b21,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a5,righty:a2,start:b30,x:b23,y:b24,platform:Android, -436f6e74726f6c6c6572000000000000,Mayflash N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, -65666330633838383061313633326461,Mayflash N64 Adapter,a:b1,b:b19,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, -37316565396364386635383230353365,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, -4875694a696120205553422047616d65,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, -535a4d792d706f776572204c54442043,Mayflash Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b31,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, -30653962643666303631376438373532,Mayflash Wii DolphinBar,a:b23,b:b24,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b0,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, -39346131396233376535393665363161,Mayflash Wii U Pro Adapter,a:b22,b:b23,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,leftstick:b31,lefttrigger:b27,rightshoulder:b26,rightstick:b0,righttrigger:b28,rightx:a0,righty:a1,start:b30,x:b21,y:b24,platform:Android, +532e542e442e20496e74657261637420,InterAct HammerHead FX,a:b23,b:b24,back:b30,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,leftstick:b22,lefttrigger:b28,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b25,righttrigger:b29,rightx:a2,righty:a3,start:b31,x:b20,y:b21,platform:Android, +65346535636333663931613264643164,Joy-Con,a:b21,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b23,y:b24,platform:Android, +33346566643039343630376565326335,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +35313531613435623366313835326238,Joy-Con (L),a:b0,b:b1,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +4a6f792d436f6e20284c290000000000,Joy-Con (L),a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,rightshoulder:b20,start:b17,x:b19,y:b2,platform:Android, +38383665633039363066383334653465,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39363561613936303237333537383931,Joy-Con (R),a:b0,b:b1,back:b5,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +4a6f792d436f6e202852290000000000,Joy-Con (R),a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +39656136363638323036303865326464,JYS Aapter,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +63316564383539663166353034616434,JYS Adapter,a:b1,b:b3,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, +64623163333561643339623235373232,Logitech F310,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35623364393661626231343866613337,Logitech F710,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4c6f6769746563682047616d65706164,Logitech F710,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64396331333230326333313330336533,Logitech F710,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39653365373864633935383236363438,Logitech G Cloud,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +416d617a6f6e2047616d6520436f6e74,Luna Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, +4c756e612047616d6570616400000000,Luna Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30363066623539323534363639323363,Magic NS,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +31353762393935386662336365626334,Magic NS,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +39623565346366623931666633323530,Magic NS,a:b1,b:b3,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b0,y:b2,platform:Android, +6d6179666c617368206c696d69746564,Mayflash GameCube Adapter,a:b22,b:b21,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a5,righty:a2,start:b30,x:b23,y:b24,platform:Android, +436f6e74726f6c6c6572000000000000,Mayflash N64 Adapter,a:b1,b:b19,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +65666330633838383061313633326461,Mayflash N64 Adapter,a:b1,b:b19,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a2,righty:a3,start:b18,platform:Android, +37316565396364386635383230353365,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +4875694a696120205553422047616d65,Mayflash Saturn Adapter,a:b21,b:b22,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +535a4d792d706f776572204c54442043,Mayflash Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b31,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +30653962643666303631376438373532,Mayflash Wii DolphinBar,a:b23,b:b24,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b0,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b22,platform:Android, +39346131396233376535393665363161,Mayflash Wii U Pro Adapter,a:b22,b:b23,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,leftstick:b31,lefttrigger:b27,rightshoulder:b26,rightstick:b0,righttrigger:b28,rightx:a0,righty:a1,start:b30,x:b21,y:b24,platform:Android, 31323564663862633234646330373138,Mega Drive,a:b23,b:b22,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b25,righttrigger:b26,start:b30,x:b24,y:b21,platform:Android, -37333564393261653735306132613061,Mega Drive,a:b21,b:b22,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, -64363363336633363736393038313464,Mega Drive,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b9,x:b2,y:b3,platform:Android, -33323763323132376537376266393366,Microsoft Dual Strike,a:b24,b:b23,back:b25,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b29,rightshoulder:b78,rightx:a0,righty:a1~,start:b26,x:b22,y:b21,platform:Android, +37333564393261653735306132613061,Mega Drive,a:b21,b:b22,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,lefttrigger:b28,rightshoulder:b27,righttrigger:b23,start:b30,x:b24,y:b25,platform:Android, +64363363336633363736393038313464,Mega Drive,a:b1,b:b0,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,start:b9,x:b2,y:b3,platform:Android, +33323763323132376537376266393366,Microsoft Dual Strike,a:b24,b:b23,back:b25,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b27,lefttrigger:b29,rightshoulder:b78,rightx:a0,righty:a1~,start:b26,x:b22,y:b21,platform:Android, 30306461613834333439303734316539,Microsoft SideWinder Pro,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b20,lefttrigger:b9,rightshoulder:b19,righttrigger:b10,start:b17,x:b2,y:b3,platform:Android, -32386235353630393033393135613831,Microsoft Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -4d4f42415041442050726f2d48440000,Mobapad Chitu HD,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -4d4f435554452d303533582d4d35312d,Mocute 053X,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -33343361376163623438613466616531,Mocute M053,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -39306635663061636563316166303966,Mocute M053,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32386235353630393033393135613831,Microsoft Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d4f42415041442050726f2d48440000,Mobapad Chitu HD,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d4f435554452d303533582d4d35312d,Mocute 053X,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33343361376163623438613466616531,Mocute M053,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +39306635663061636563316166303966,Mocute M053,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 7573622067616d657061642020202020,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,righttrigger:b6,start:b9,x:b3,y:b0,platform:Android, 050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b17,y:b2,platform:Android, 34323437396534643531326161633738,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,misc1:b5,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -50726f20436f6e74726f6c6c65720000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b2,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b10,rightx:a2,righty:a3,start:b18,y:b3,platform:Android, -36326533353166323965623661303933,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, -4e363420436f6e74726f6c6c65720000,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, -534e455320436f6e74726f6c6c657200,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, -64623863346133633561626136366634,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +50726f20436f6e74726f6c6c65720000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b2,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b10,rightx:a2,righty:a3,start:b18,y:b3,platform:Android, +36326533353166323965623661303933,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, +4e363420436f6e74726f6c6c65720000,NSO N64 Controller,+rightx:b17,+righty:b10,-rightx:b2,-righty:b19,a:b1,b:b0,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,righttrigger:b15,start:b18,platform:Android, +534e455320436f6e74726f6c6c657200,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, +64623863346133633561626136366634,NSO SNES Controller,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,rightshoulder:b20,start:b18,x:b19,y:b2,platform:Android, 050000005509000003720000cf7f3f00,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000005509000010720000ffff3f00,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000005509000014720000df7f3f00,NVIDIA Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, 050000005509000014720000df7f3f80,NVIDIA Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,platform:Android, -37336435666338653565313731303834,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -61363931656135336130663561616264,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37336435666338653565313731303834,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61363931656135336130663561616264,NVIDIA Controller,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 39383335313438623439373538343266,OUYA Controller,a:b0,b:b2,dpdown:b18,dpleft:b15,dpright:b16,dpup:b17,leftshoulder:b3,leftstick:b9,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,x:b1,y:b19,platform:Android, 4f5559412047616d6520436f6e74726f,OUYA Controller,a:b0,b:b2,dpdown:b18,dpleft:b15,dpright:b6,dpup:b17,leftshoulder:b3,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b19,platform:Android, -506572666f726d616e63652044657369,PDP PS3 Rock Candy Controller,a:b1,b:b17,back:h0.2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, +506572666f726d616e63652044657369,PDP PS3 Rock Candy Controller,a:b1,b:b17,back:h0.2,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b0,y:b2,platform:Android, 62653335326261303663356263626339,PlayStation Classic Controller,a:b19,b:b1,back:b17,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,lefttrigger:b3,rightshoulder:b10,righttrigger:b20,start:b18,x:b2,y:b0,platform:Android, -536f6e7920496e746572616374697665,PlayStation Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -576972656c65737320436f6e74726f6c,PlayStation Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -61653962353232366130326530363061,Pokken,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,rightshoulder:b20,righttrigger:b10,start:b18,x:b0,y:b2,platform:Android, -32666633663735353234363064386132,PS2,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a3,righty:a2,start:b30,x:b24,y:b21,platform:Android, +536f6e7920496e746572616374697665,PlayStation Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +576972656c65737320436f6e74726f6c,PlayStation Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +61653962353232366130326530363061,Pokken,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,rightshoulder:b20,righttrigger:b10,start:b18,x:b0,y:b2,platform:Android, +32666633663735353234363064386132,PS2,a:b23,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a3,righty:a2,start:b30,x:b24,y:b21,platform:Android, 050000004c05000068020000dfff3f00,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 536f6e7920504c415953544154494f4e,PS3 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 61363034663839376638653463633865,PS3 Controller,a:b0,b:b1,back:b15,dpdown:a14,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, @@ -1901,89 +1908,89 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 050000004c050000c4050000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000004c050000cc090000fffe3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000004c050000cc090000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -30303839663330346632363232623138,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, -31326235383662333266633463653332,PS4 Controller,a:b1,b:b16,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b17,x:b0,y:b2,platform:Android, -31373231336561636235613666323035,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -31663838336334393132303338353963,PS4 Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -34613139376634626133336530386430,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, -37626233336235343937333961353732,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -37626464343430636562316661643863,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -38393161636261653636653532386639,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -63313733393535663339656564343962,PS4 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -63393662363836383439353064663939,PS4 Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -65366465656364636137653363376531,PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -66613532303965383534396638613230,PS4 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +30303839663330346632363232623138,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +31326235383662333266633463653332,PS4 Controller,a:b1,b:b16,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b17,x:b0,y:b2,platform:Android, +31373231336561636235613666323035,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +31663838336334393132303338353963,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34613139376634626133336530386430,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, +37626233336235343937333961353732,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37626464343430636562316661643863,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38393161636261653636653532386639,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63313733393535663339656564343962,PS4 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +63393662363836383439353064663939,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65366465656364636137653363376531,PS4 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +66613532303965383534396638613230,PS4 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, 050000004c050000e60c0000fffe3f00,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,platform:Android, 050000004c050000e60c0000fffe3f80,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,platform:Android, 050000004c050000e60c0000ffff3f00,PS5 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -32346465346533616263386539323932,PS5 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -32633532643734376632656664383733,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, -37363764353731323963323639666565,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, -61303162353165316365336436343139,PS5 Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, -64336263393933626535303339616332,Qanba 4RAF,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, -36626666353861663864336130363137,Razer Junglecat,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32346465346533616263386539323932,PS5 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +32633532643734376632656664383733,PS5 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +37363764353731323963323639666565,PS5 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +61303162353165316365336436343139,PS5 Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b8,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a5,start:b18,x:b0,y:b2,platform:Android, +64336263393933626535303339616332,Qanba 4RAF,a:b0,b:b1,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b20,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b9,rightx:a2,righty:a3,start:b18,x:b19,y:b2,platform:Android, +36626666353861663864336130363137,Razer Junglecat,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 05000000f8270000bf0b0000ffff3f00,Razer Kishi,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -62653861643333663663383332396665,Razer Kishi,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +62653861643333663663383332396665,Razer Kishi,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000003215000005070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000003215000007070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000003215000000090000bf7f3f00,Razer Serval,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, -5a6869587520526574726f2042697420,Retro Bit Saturn Controller,a:b21,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b26,rightshoulder:b27,righttrigger:b28,start:b30,x:b23,y:b24,platform:Android, +5a6869587520526574726f2042697420,Retro Bit Saturn Controller,a:b21,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b26,rightshoulder:b27,righttrigger:b28,start:b30,x:b23,y:b24,platform:Android, 32417865732031314b6579732047616d,Retro Bit SNES Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, 36313938306539326233393732613361,Retro Bit SNES Controller,a:b0,b:b1,back:b15,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b2,y:b3,platform:Android, -526574726f466c616720576972656420,Retro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,rightshoulder:b18,start:b10,x:b2,y:b3,platform:Android, -61343739353764363165343237303336,Retro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b17,lefttrigger:b18,leftx:a0,lefty:a1,start:b10,x:b2,y:b3,platform:Android, -526574726f696420506f636b65742043,Retroid Pocket,a:b1,b:b0,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, -582d426f7820436f6e74726f6c6c6572,Retroid Pocket,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -38653130373365613538333235303036,Retroid Pocket 2,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -64363363336633363736393038313463,Retrolink,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,start:b6,platform:Android, +526574726f466c616720576972656420,Retro Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b17,rightshoulder:b18,start:b10,x:b2,y:b3,platform:Android, +61343739353764363165343237303336,Retro Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b17,lefttrigger:b18,leftx:a0,lefty:a1,start:b10,x:b2,y:b3,platform:Android, +526574726f696420506f636b65742043,Retroid Pocket,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +582d426f7820436f6e74726f6c6c6572,Retroid Pocket,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,paddle1:b17,paddle2:b18,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +38653130373365613538333235303036,Retroid Pocket 2,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64363363336633363736393038313463,Retrolink,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,start:b6,platform:Android, 37393234373533633333323633646531,RetroUSB N64 RetroPort,+rightx:b17,+righty:b15,-rightx:b18,-righty:b6,a:b10,b:b9,dpdown:b19,dpleft:b1,dpright:b0,dpup:b2,leftshoulder:b7,lefttrigger:b20,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Android, 5365616c6965436f6d707574696e6720,RetroUSB N64 RetroPort,+rightx:b17,+righty:b15,-rightx:b18,-righty:b6,a:b10,b:b9,dpdown:b19,dpleft:b1,dpright:b0,dpup:b2,leftshoulder:b7,lefttrigger:b20,leftx:a0,lefty:a1,rightshoulder:b5,start:b3,platform:Android, 526574726f5553422e636f6d20534e45,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android, 64643037633038386238303966376137,RetroUSB SNES RetroPort,a:b1,b:b20,back:b19,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,rightshoulder:b10,start:b2,x:b0,y:b3,platform:Android, -37656564346533643138636436356230,Rock Candy Switch Controller,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, -33373336396634316434323337666361,RumblePad 2,a:b22,b:b23,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b24,platform:Android, -36363537303435333566386638366333,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -53616d73756e672047616d6520506164,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +37656564346533643138636436356230,Rock Candy Switch Controller,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b15,lefttrigger:b9,leftx:a0,lefty:a1,misc1:b7,rightshoulder:b20,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b18,x:b0,y:b2,platform:Android, +33373336396634316434323337666361,RumblePad 2,a:b22,b:b23,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,lefttrigger:b27,leftx:a0,lefty:a1,rightshoulder:b26,righttrigger:b28,rightx:a2,righty:a3,start:b30,x:b21,y:b24,platform:Android, +36363537303435333566386638366333,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +53616d73756e672047616d6520506164,Samsung EIGP20,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 66386565396238363534313863353065,Sanwa PlayOnline Mobile,a:b21,b:b22,back:b23,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b24,platform:Android, -32383165316333383766336338373261,Saturn,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, +32383165316333383766336338373261,Saturn,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, 38613865396530353338373763623431,Saturn,a:b0,b:b1,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b9,lefttrigger:b10,rightshoulder:b20,righttrigger:b19,start:b17,x:b2,y:b3,platform:Android, -61316232336262373631343137633631,Saturn,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, -30353835333338613130373363646337,SG H510,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, -66386262366536653765333235343634,SG H510,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, -66633132393363353531373465633064,SG H510,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, -62653761636366393366613135366338,SN30 PP,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, +61316232336262373631343137633631,Saturn,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,lefttrigger:b10,leftx:a0,lefty:a1,rightshoulder:a4,righttrigger:a5,x:b2,y:b3,platform:Android, +30353835333338613130373363646337,SG H510,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +66386262366536653765333235343634,SG H510,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,platform:Android, +66633132393363353531373465633064,SG H510,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b17,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b18,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b19,y:b2,platform:Android, +62653761636366393366613135366338,SN30 PP,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b3,y:b2,platform:Android, 38376662666661636265313264613039,SNES,a:b0,b:b1,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, 5346432f555342205061640000000000,SNES Adapter,a:b0,b:b1,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b3,rightshoulder:b20,start:b10,x:b19,y:b2,platform:Android, -5553422047616d657061642000000000,SNES Controller,a:b1,b:b0,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, -63303964303462366136616266653561,Sony PSP,a:b21,b:b22,back:b27,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b23,y:b24,platform:Android, -63376637643462343766333462383235,Sony Vita,a:b1,b:b19,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a3,righty:a4,start:b18,x:b0,y:b2,platform:Android, -476f6f676c65204c4c43205374616469,Stadia Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +5553422047616d657061642000000000,SNES Controller,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,rightshoulder:b10,start:b6,x:b3,y:b2,platform:Android, +63303964303462366136616266653561,Sony PSP,a:b21,b:b22,back:b27,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b23,y:b24,platform:Android, +63376637643462343766333462383235,Sony Vita,a:b1,b:b19,back:b17,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftx:a0,lefty:a1,rightshoulder:b20,rightx:a3,righty:a4,start:b18,x:b0,y:b2,platform:Android, +476f6f676c65204c4c43205374616469,Stadia Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 5374616469614e3848532d6532633400,Stadia Controller,a:b0,b:b1,back:b15,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, 05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,platform:Android, -0500000011010000201400000f7e0f00,SteelSeries Nimbus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,x:b19,y:b2,platform:Android, +0500000011010000201400000f7e0f00,SteelSeries Nimbus,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b20,righttrigger:b10,rightx:a2,righty:a3,x:b19,y:b2,platform:Android, 35306436396437373135383665646464,SteelSeries Nimbus Plus,a:b0,b:b1,leftshoulder:b3,leftstick:b17,lefttrigger:b9,leftx:a0,rightshoulder:b20,rightstick:b18,righttrigger:b10,rightx:a2,x:b19,y:b2,platform:Android, 33313930373536613937326534303931,Taito Egret II Mini Control Panel,a:b25,b:b23,back:b27,guide:b30,leftx:a0,lefty:a1,rightshoulder:b21,righttrigger:b22,start:b28,x:b29,y:b24,platform:Android, -54475a20436f6e74726f6c6c65720000,TGZ Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -62363434353532386238336663643836,TGZ Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +54475a20436f6e74726f6c6c65720000,TGZ Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +62363434353532386238336663643836,TGZ Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b17,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b18,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 37323236633763666465316365313236,THEC64 Joystick,a:b21,b:b22,back:b27,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b27,x:b23,y:b24,platform:Android, 38346162326232346533316164363336,THEGamepad,a:b23,b:b22,back:b27,leftshoulder:b25,leftx:a0,lefty:a1,rightshoulder:b26,start:b28,x:b24,y:b21,platform:Android, 050000004f0400000ed00000fffe3f00,ThrustMaster eSwap Pro Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -5477696e20555342204a6f7973746963,Twin Joystick,a:b22,b:b21,back:b28,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b26,leftstick:b30,lefttrigger:b24,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b31,righttrigger:b25,rightx:a3,righty:a2,start:b29,x:b23,y:b20,platform:Android, -30623739343039643830333266346439,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -31643365666432386133346639383937,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -30386438313564306161393537333663,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, -33333034646336346339646538643633,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +5477696e20555342204a6f7973746963,Twin Joystick,a:b22,b:b21,back:b28,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b26,leftstick:b30,lefttrigger:b24,leftx:a0,lefty:a1,rightshoulder:b27,rightstick:b31,righttrigger:b25,rightx:a3,righty:a2,start:b29,x:b23,y:b20,platform:Android, +30623739343039643830333266346439,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +31643365666432386133346639383937,Valve Steam Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,leftx:a0,lefty:a1,paddle1:b24,paddle2:b23,rightshoulder:b10,rightstick:b8,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +30386438313564306161393537333663,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, +33333034646336346339646538643633,Wii Classic Adapter,a:b23,b:b22,back:b29,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b27,lefttrigger:b25,leftx:a0,lefty:a1,rightshoulder:b28,righttrigger:b26,rightx:a2,righty:a3,start:b30,x:b24,y:b21,platform:Android, 050000005e0400008e02000000783f00,Xbox 360 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 30396232393162346330326334636566,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 38313038323730383864666463383533,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -58626f782033363020576972656c6573,Xbox 360 Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +58626f782033363020576972656c6573,Xbox 360 Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 65353331386662343338643939643636,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 65613532386633373963616462363038,Xbox 360 Controller,a:b0,b:b1,back:b4,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -47656e6572696320582d426f78207061,Xbox Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -4d6963726f736f667420582d426f7820,Xbox Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -64633436313965656664373634323364,Xbox Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +47656e6572696320582d426f78207061,Xbox Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +4d6963726f736f667420582d426f7820,Xbox Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +64633436313965656664373634323364,Xbox Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b19,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000005e04000091020000ff073f00,Xbox One Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, 050000005e04000091020000ff073f80,Xbox One Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000005e040000e00200000ffe3f00,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, @@ -1991,11 +1998,11 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 050000005e040000e0020000ffff3f00,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b4,leftshoulder:b3,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b17,y:b2,platform:Android, 050000005e040000e0020000ffff3f80,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b4,leftshoulder:b3,leftstick:b8,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b17,y:b2,platform:Android, 050000005e040000fd020000ffff3f00,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -33356661323266333733373865656366,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -34356136633366613530316338376136,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,x:b17,y:b2,platform:Android, -35623965373264386238353433656138,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +33356661323266333733373865656366,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +34356136633366613530316338376136,Xbox One Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,x:b17,y:b2,platform:Android, +35623965373264386238353433656138,Xbox One Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 36616131643361333337396261666433,Xbox One Controller,a:b0,b:b1,back:b15,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -58626f7820576972656c65737320436f,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +58626f7820576972656c65737320436f,Xbox One Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000005e040000000b000000783f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, 050000005e040000000b000000783f80,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000005e040000050b0000ffff3f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, @@ -2004,8 +2011,8 @@ xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2, 050000005e040000fd020000ff7f3f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000005e040000120b000000783f00,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,platform:Android, 050000005e040000120b000000783f80,Xbox Series Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -050000005e040000130b0000ffff3f00,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, -65633038363832353634653836396239,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +050000005e040000130b0000ffff3f00,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, +65633038363832353634653836396239,Xbox Series Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,platform:Android, 050000001727000044310000ffff3f00,XiaoMi Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a5,start:b6,x:b2,y:b3,platform:Android, # iOS diff --git a/game/graphics/opengl_renderer/foreground/Merc2.cpp b/game/graphics/opengl_renderer/foreground/Merc2.cpp index 15c12d15dc..7487f752d8 100644 --- a/game/graphics/opengl_renderer/foreground/Merc2.cpp +++ b/game/graphics/opengl_renderer/foreground/Merc2.cpp @@ -1093,6 +1093,7 @@ Merc2::Draw* Merc2::alloc_normal_draw(const tfrag3::MercDraw& mdraw, draw->first_bone = first_bone; draw->light_idx = lights; draw->num_triangles = mdraw.num_triangles; + draw->no_strip = mdraw.no_strip; if (ignore_alpha) { draw->flags |= IGNORE_ALPHA; } @@ -1283,8 +1284,8 @@ void Merc2::do_draws(const Draw* draw_array, prof.add_tri(draw.num_triangles); glBindBufferRange(GL_UNIFORM_BUFFER, 1, m_bones_buffer, sizeof(math::Vector4f) * draw.first_bone, 128 * sizeof(ShaderMercMat)); - glDrawElements(GL_TRIANGLE_STRIP, draw.index_count, GL_UNSIGNED_INT, - (void*)(sizeof(u32) * draw.first_index)); + glDrawElements(draw.no_strip ? GL_TRIANGLES : GL_TRIANGLE_STRIP, draw.index_count, + GL_UNSIGNED_INT, (void*)(sizeof(u32) * draw.first_index)); } if (!normal_vtx_buffer_bound) { diff --git a/game/graphics/opengl_renderer/foreground/Merc2.h b/game/graphics/opengl_renderer/foreground/Merc2.h index b3ad2e8c2f..166d7d05af 100644 --- a/game/graphics/opengl_renderer/foreground/Merc2.h +++ b/game/graphics/opengl_renderer/foreground/Merc2.h @@ -190,6 +190,8 @@ class Merc2 { u8 flags; ModBuffers mod_vtx_buffer; u8 fade[4]; + // no strip hack for custom models + u8 no_strip; }; struct LevelDrawBucket { diff --git a/game/graphics/opengl_renderer/sprite/Sprite3.cpp b/game/graphics/opengl_renderer/sprite/Sprite3.cpp index 14333a6799..03cf5f1b7e 100644 --- a/game/graphics/opengl_renderer/sprite/Sprite3.cpp +++ b/game/graphics/opengl_renderer/sprite/Sprite3.cpp @@ -846,7 +846,13 @@ void Sprite3::do_block_common(SpriteMode mode, vert1.xyz_sx = m_vec_data_2d[sprite_idx].xyz_sx; vert1.quat_sy = m_vec_data_2d[sprite_idx].flag_rot_sy; - vert1.rgba = m_vec_data_2d[sprite_idx].rgba / 255; + // ftoi'd in the original game, and I believe the VIF would discard the upper bits on pack + vert1.rgba = m_vec_data_2d[sprite_idx].rgba; + vert1.rgba.x() = (int)vert1.rgba.x() & 0xff; + vert1.rgba.y() = (int)vert1.rgba.y() & 0xff; + vert1.rgba.z() = (int)vert1.rgba.z() & 0xff; + vert1.rgba.w() = (int)vert1.rgba.w() & 0xff; + vert1.rgba /= 255; vert1.flags_matrix[0] = m_vec_data_2d[sprite_idx].flag(); vert1.flags_matrix[1] = m_vec_data_2d[sprite_idx].matrix(); vert1.info[0] = 0; // hack diff --git a/game/kernel/jak2/kboot.cpp b/game/kernel/jak2/kboot.cpp index 6e9d44f9fb..ce50468e94 100644 --- a/game/kernel/jak2/kboot.cpp +++ b/game/kernel/jak2/kboot.cpp @@ -6,7 +6,7 @@ #include "common/goal_constants.h" #include "common/log/log.h" -#include "common/repl/util.h" +#include "common/repl/repl_wrapper.h" #include "common/util/Timer.h" #include "game/common/game_common_types.h" diff --git a/game/kernel/jak3/kboot.cpp b/game/kernel/jak3/kboot.cpp index d2aaba79d5..bcc8acfcaa 100644 --- a/game/kernel/jak3/kboot.cpp +++ b/game/kernel/jak3/kboot.cpp @@ -3,7 +3,7 @@ #include #include "common/log/log.h" -#include "common/repl/util.h" +#include "common/repl/repl_wrapper.h" #include "common/util/Timer.h" #include "game/common/game_common_types.h" diff --git a/game/main.cpp b/game/main.cpp index c7c147f6fb..32e982783c 100644 --- a/game/main.cpp +++ b/game/main.cpp @@ -142,7 +142,7 @@ int main(int argc, char** argv) { // or because it's portable mode) if (enable_portable) { lg::info("Portable mod enabled"); - user_config_dir_override = file_util::get_current_executable_path(); + user_config_dir_override = fs::path(file_util::get_current_executable_path()).parent_path(); } if (!user_config_dir_override.empty()) { lg::info("Overriding config directory with: {}", user_config_dir_override.string()); diff --git a/game/overlord/jak2/srpc.cpp b/game/overlord/jak2/srpc.cpp index 3571c10f91..077c06f60f 100644 --- a/game/overlord/jak2/srpc.cpp +++ b/game/overlord/jak2/srpc.cpp @@ -472,11 +472,6 @@ void* RPC_Loader(unsigned int /*fno*/, void* data, int size) { } int VBlank_Handler(void*) { - bool bVar1; - int iVar2; - int iVar3; - uint8_t uVar4; - IopTicks = IopTicks + 1; if (gSoundEnable == 0) { return 1; @@ -543,18 +538,14 @@ int VBlank_Handler(void*) { info.diskspeed[1] = 0 /*DAT_00013488*/; info.lastspeed = 0 /*gLastSpeed*/; info.dupseg = 0 /*gDupSeg*/; - iVar2 = 1; - do { - iVar3 = snd_GetVoiceStatus(iVar2); - uVar4 = '\0'; - if (iVar3 == 1) { - uVar4 = 0xff; + for (int i = 0; i < 48; i++) { + if (snd_GetVoiceStatus(i) == 1) { + info.chinfo[i] = -1; + } else { + info.chinfo[i] = 0; } - info.chinfo[iVar2] = uVar4; - bVar1 = iVar2 < 0x30; - iVar2 = iVar2 + 1; - } while (bVar1); - LookupSound(0x29a); // lol idk + } + LookupSound(666); // music /* local_38 = &info; diff --git a/game/tools/subtitle_editor/subtitle_editor.cpp b/game/tools/subtitle_editor/subtitle_editor.cpp index 9222174ab6..687bebdb4b 100644 --- a/game/tools/subtitle_editor/subtitle_editor.cpp +++ b/game/tools/subtitle_editor/subtitle_editor.cpp @@ -197,7 +197,7 @@ void SubtitleEditor::draw_repl_options() { ImGui::Text("REPL Connected, should be good to go!"); ImGui::PopStyleColor(); } else { - if (ImGui::Button("Connect to REPL")) { + if (ImGui::Button("Connect to REPL on Port 8181")) { m_repl.connect(); if (!m_repl.is_connected()) { ImGui::PushStyleColor(ImGuiCol_Text, m_error_text_color); diff --git a/game/tools/subtitle_editor/subtitle_editor_repl_client.cpp b/game/tools/subtitle_editor/subtitle_editor_repl_client.cpp index b5da6cc568..57b3c83706 100644 --- a/game/tools/subtitle_editor/subtitle_editor_repl_client.cpp +++ b/game/tools/subtitle_editor/subtitle_editor_repl_client.cpp @@ -8,9 +8,6 @@ SubtitleEditorReplClient::SubtitleEditorReplClient() { int port = 8181; - if (g_game_version == GameVersion::Jak2) { - port = 8182; - } m_repl = std::make_unique(port); } diff --git a/goal_src/goal-lib.gc b/goal_src/goal-lib.gc index 312ad69d37..03a2aeefde 100644 --- a/goal_src/goal-lib.gc +++ b/goal_src/goal-lib.gc @@ -1263,14 +1263,11 @@ (#cond ((eq? GAME_VERSION 'jak1) (asm-file "goal_src/jak1/compiler-setup.gc") - (seval (fmt #t "Jak 1 Mode\n")) ) ((eq? GAME_VERSION 'jak2) (asm-file "goal_src/jak2/compiler-setup.gc") - (seval (fmt #t "Jak 2 Mode\n")) ) ((eq? GAME_VERSION 'jak3) (asm-file "goal_src/jak3/compiler-setup.gc") - (seval (fmt #t "Jak 3 Mode\n")) ) ) \ No newline at end of file diff --git a/goal_src/goos-lib.gs b/goal_src/goos-lib.gs index 8624807ba5..97a77606cf 100644 --- a/goal_src/goos-lib.gs +++ b/goal_src/goos-lib.gs @@ -471,7 +471,7 @@ ;; *user* is defined when goos starts! (when *user* - (fmt #t "Loading user scripts for user: {}...\n" *user*) + ;; (fmt #t "Loading user scripts for user: {}...\n" *user*) ;; i'm not sure what naming scheme to use here. user//user.gs? ;; the GOAL one is loaded in Compiler.cpp (try-load-file (fmt #f "goal_src/user/{}/user.gs" *user*)) @@ -512,4 +512,4 @@ (define *default-territory* GAME_TERRITORY_SCEA) ;; whether to enable ps3 test levels for jak 2 -(define USE_PS3_LEVELS #f) \ No newline at end of file +(define USE_PS3_LEVELS #f) diff --git a/goal_src/jak1/compiler-setup.gc b/goal_src/jak1/compiler-setup.gc index 611421d1c0..50b57718da 100644 --- a/goal_src/jak1/compiler-setup.gc +++ b/goal_src/jak1/compiler-setup.gc @@ -11,7 +11,9 @@ ;; jak 1 - specific library stuff. -(defmacro __get_jak1_full_game () *jak1-full-game*) +(defmacro __get_jak1_full_game () + *jak1-full-game*) + (defconstant *jak1-full-game* (__get_jak1_full_game)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -20,26 +22,21 @@ (defmacro basic? (obj) ;; todo, make this more efficient - `(= 4 (logand (the integer ,obj) #b111)) - ) + `(= 4 (logand (the integer ,obj) #b111))) (defmacro pair? (obj) ;; todo, make this more efficient ;`(= 2 (logand (the integer ,obj) #b111)) - `(< (shl (the-as int ,obj) 62) 0) - ) + `(< (shl (the-as int ,obj) 62) 0)) (defmacro not-pair? (obj) - `(>= (shl (the-as int ,obj) 62) 0) - ) + `(>= (shl (the-as int ,obj) 62) 0)) (defmacro binteger? (obj) - `(zero? (logand (the integer ,obj) #b111)) - ) + `(zero? (logand (the integer ,obj) #b111))) (defmacro rtype-of (obj) - `(cond ((binteger? ,obj) binteger) - ((pair? ,obj) pair) - (else (-> (the basic ,obj) type)) - ) - ) + `(cond + ((binteger? ,obj) binteger) + ((pair? ,obj) pair) + (else (-> (the basic ,obj) type)))) diff --git a/goal_src/jak1/engine/anim/aligner-h.gc b/goal_src/jak1/engine/anim/aligner-h.gc index 1dc18153d0..130adb067d 100644 --- a/goal_src/jak1/engine/anim/aligner-h.gc +++ b/goal_src/jak1/engine/anim/aligner-h.gc @@ -1,14 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-h.gc") (require "kernel/gstate.gc") - -;; name: aligner-h.gc -;; name in dgo: aligner-h -;; dgos: GAME, ENGINE - (defenum align-flags :bitfield #t :type uint32 @@ -18,53 +12,46 @@ (defenum align-opts :bitfield #t :type uint32 - (adjust-x-vel) ;; adjust x - (adjust-y-vel) ;; adjust y + (adjust-x-vel) ;; adjust x + (adjust-y-vel) ;; adjust y (adjust-xz-vel) ;; adjust both x and z. (don't set this with adjust-x) (keep-other-velocities) ;; if set, keep xz plane velocities if their alignment isn't requested - (adjust-quat) ;; adjust the orientation + (adjust-quat) ;; adjust the orientation (alop0) (alop1) (alop2) (alop3) (alop4) (alop5) - (no-gravity) ;; do not apply any gravity + (no-gravity) ;; do not apply any gravity (ignore-y-if-zero) ;; if set and the alignment velocity is 0 in y, don't apply it. ) ;; DECOMP BEGINS (deftype align-control (basic) - ((flags align-flags) - (process process-drawable) - (frame-group art-joint-anim) - (frame-num float) - (matrix matrix 2 :inline) - (transform transform 2 :inline) - (delta transformq :inline) - (last-speed meters) - (align transformq :inline :overlay-at (-> transform 0 trans x)) - ) + ((flags align-flags) + (process process-drawable) + (frame-group art-joint-anim) + (frame-num float) + (matrix matrix 2 :inline) + (transform transform 2 :inline) + (delta transformq :inline) + (last-speed meters) + (align transformq :inline :overlay-at (-> transform 0 trans x))) (:methods - (new (symbol type process-drawable) _type_) - (compute-alignment! (_type_) transformq) - (align! (_type_ align-opts float float float) trsqv) - (align-vel-and-quat-only! (_type_ align-opts vector int float float) trsqv) - (first-transform (_type_) transform) - (snd-transform (_type_) transform) - ) - ) - + (new (symbol type process-drawable) _type_) + (compute-alignment! (_type_) transformq) + (align! (_type_ align-opts float float float) trsqv) + (align-vel-and-quat-only! (_type_ align-opts vector int float float) trsqv) + (first-transform (_type_) transform) + (snd-transform (_type_) transform))) (defmethod new align-control ((allocation symbol) (type-to-make type) (proc process-drawable)) "Create a new align-control." (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (when (zero? this) (go process-drawable-art-error "memory") - (return (the align-control 0)) - ) + (return (the align-control 0))) (set! (-> this process) proc) - this - ) - ) + this)) diff --git a/goal_src/jak1/engine/anim/aligner.gc b/goal_src/jak1/engine/anim/aligner.gc index 3e32d206cc..1935efdb89 100644 --- a/goal_src/jak1/engine/anim/aligner.gc +++ b/goal_src/jak1/engine/anim/aligner.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/anim/aligner-h.gc") (require "engine/common-obs/process-drawable.gc") -;; name: aligner.gc -;; name in dgo: aligner -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; ERROR: Unsupported inline assembly instruction kind - [lw ra, return-from-thread(s7)] @@ -22,46 +17,26 @@ (v1-5 (-> a0-3 frame-group)) (a0-4 (-> a0-3 command)) (a1-0 'stack) - (a2-0 (= a0-4 a1-0)) - ) + (a2-0 (= a0-4 a1-0))) (cond - ((or a2-0 (begin (set! a1-0 'stack1) (= a0-4 a1-0))) - ) + ((or a2-0 (begin (set! a1-0 'stack1) (= a0-4 a1-0)))) (else - (when (!= (-> v1-5 type) art-joint-anim) - ;; og:preserve-this - (go process-drawable-art-error "align joint-anim") - (abandon-thread) - 0 - ) - ) - ) - ) - ) - ) + (when (!= (-> v1-5 type) art-joint-anim) + ;; og:preserve-this + (go process-drawable-art-error "align joint-anim") + (abandon-thread) + 0)))))) (let* ((a0-8 (-> this process skel root-channel 0)) (v1-16 (-> a0-8 frame-group)) - (f0-0 (-> a0-8 frame-num)) - ) + (f0-0 (-> a0-8 frame-num))) (= (-> a0-8 num-func) num-func-loop!) (cond - ((or (not v1-16) (!= (-> this frame-group) v1-16)) - (set! a0-9 #t) - ) - ((= (-> a0-8 num-func) num-func-loop!) - (set! a0-9 (< (* (-> a0-8 param 0) (- f0-0 (-> this frame-num))) 0.0)) - ) - (else - (set! a0-9 (= f0-0 0.0)) - ) - ) - (if a0-9 - (logior! (-> this flags) (align-flags disabled)) - (logclear! (-> this flags) (align-flags disabled)) - ) + ((or (not v1-16) (!= (-> this frame-group) v1-16)) (set! a0-9 #t)) + ((= (-> a0-8 num-func) num-func-loop!) (set! a0-9 (< (* (-> a0-8 param 0) (- f0-0 (-> this frame-num))) 0.0))) + (else (set! a0-9 (= f0-0 0.0)))) + (if a0-9 (logior! (-> this flags) (align-flags disabled)) (logclear! (-> this flags) (align-flags disabled))) (set! (-> this frame-group) v1-16) - (set! (-> this frame-num) f0-0) - ) + (set! (-> this frame-num) f0-0)) (mem-copy! (the-as pointer (-> this transform 1)) (the-as pointer (-> this transform)) 48) (quaternion-copy! (the-as quaternion (-> this transform 1 rot)) (-> this align quat)) (set! (-> this transform 1 scale quad) (-> this align scale quad)) @@ -70,13 +45,11 @@ (v1-19 (-> a3-0 0 vector 0 quad)) (a0-18 (-> a3-0 0 vector 1 quad)) (a1-12 (-> a3-0 0 vector 2 quad)) - (a3-1 (-> a3-0 0 vector 3 quad)) - ) + (a3-1 (-> a3-0 0 vector 3 quad))) (set! (-> a2-5 0 quad) v1-19) (set! (-> a2-5 1 quad) a0-18) (set! (-> a2-5 2 quad) a1-12) - (set! (-> a2-5 3 quad) a3-1) - ) + (set! (-> a2-5 3 quad) a3-1)) (let ((s5-1 (-> this process node-list data 1))) (cspace<-matrix-no-push-joint! s5-1 (-> this process skel)) (let* ((v1-23 (-> this matrix)) @@ -84,104 +57,65 @@ (a0-21 (-> a3-2 vector 0 quad)) (a1-14 (-> a3-2 vector 1 quad)) (a2-6 (-> a3-2 vector 2 quad)) - (a3-3 (-> a3-2 vector 3 quad)) - ) + (a3-3 (-> a3-2 vector 3 quad))) (set! (-> v1-23 0 vector 0 quad) a0-21) (set! (-> v1-23 0 vector 1 quad) a1-14) (set! (-> v1-23 0 vector 2 quad) a2-6) - (set! (-> v1-23 0 vector 3 quad) a3-3) - ) - (vector*! (the-as vector (-> this transform)) (-> s5-1 bone transform vector 3) (-> this process root scale)) - ) - (vector-! - (the-as vector (-> this delta)) - (the-as vector (-> this transform)) - (the-as vector (-> this transform 1)) - ) - (set-vector! - (-> this align scale) - (vector-length (the-as vector (-> this matrix))) - (vector-length (-> this matrix 0 vector 1)) - (vector-length (-> this matrix 0 vector 2)) - 1.0 - ) + (set! (-> v1-23 0 vector 3 quad) a3-3)) + (vector*! (the-as vector (-> this transform)) (-> s5-1 bone transform vector 3) (-> this process root scale))) + (vector-! (the-as vector (-> this delta)) (the-as vector (-> this transform)) (the-as vector (-> this transform 1))) + (set-vector! (-> this align scale) + (vector-length (the-as vector (-> this matrix))) + (vector-length (-> this matrix 0 vector 1)) + (vector-length (-> this matrix 0 vector 2)) + 1.0) (vector-! (-> this delta scale) (-> this align scale) (-> this transform 1 scale)) (let ((a2-8 (matrix-inv-scale! (new 'stack-no-clear 'matrix) (-> this align scale)))) - (quaternion-normalize! - (matrix->quaternion (-> this align quat) (matrix*! a2-8 (the-as matrix (-> this matrix)) a2-8)) - ) - ) - (let ((a1-24 (quaternion-inverse! (new 'stack-no-clear 'quaternion) (the-as quaternion (-> this transform 1 rot)))) - ) - (quaternion-normalize! (quaternion*! (-> this delta quat) a1-24 (-> this align quat))) - ) - (-> this delta) - ) - ) + (quaternion-normalize! (matrix->quaternion (-> this align quat) (matrix*! a2-8 (the-as matrix (-> this matrix)) a2-8)))) + (let ((a1-24 (quaternion-inverse! (new 'stack-no-clear 'quaternion) (the-as quaternion (-> this transform 1 rot))))) + (quaternion-normalize! (quaternion*! (-> this delta quat) a1-24 (-> this align quat)))) + (-> this delta))) (defmethod first-transform ((this align-control)) - (the-as transform (-> this transform)) - ) + (the-as transform (-> this transform))) (defmethod snd-transform ((this align-control)) - (-> this transform 1) - ) + (-> this transform 1)) (defmethod align! ((this align-control) (arg0 align-opts) (arg1 float) (arg2 float) (arg3 float)) (when (not (logtest? (-> this flags) (align-flags disabled))) (let* ((a0-1 (-> this process)) (t9-0 (method-of-object a0-1 apply-alignment)) (v1-4 (-> this delta)) - (t1-0 (new 'stack-no-clear 'vector)) - ) + (t1-0 (new 'stack-no-clear 'vector))) (set! (-> t1-0 x) arg1) (set! (-> t1-0 y) arg2) (set! (-> t1-0 z) arg3) (set! (-> t1-0 w) 1.0) - (t9-0 a0-1 arg0 v1-4 t1-0) - ) - ) - (-> this process root) - ) + (t9-0 a0-1 arg0 v1-4 t1-0))) + (-> this process root)) (defmethod set-and-limit-velocity ((this trsqv) (arg0 int) (arg1 vector) (arg2 float)) (let ((gp-0 (-> this transv))) (when (logtest? arg0 4) (set! (-> gp-0 x) (-> arg1 x)) (set! (-> gp-0 z) (-> arg1 z)) - (let ((f0-4 (fmin (* (vector-xz-length arg1) (-> *display* frames-per-second)) arg2))) - (vector-xz-normalize! gp-0 f0-4) - ) - ) - ) - this - ) + (let ((f0-4 (fmin (* (vector-xz-length arg1) (-> *display* frames-per-second)) arg2))) (vector-xz-normalize! gp-0 f0-4)))) + this) (defmethod align-vel-and-quat-only! ((this align-control) (arg0 align-opts) (arg1 vector) (arg2 int) (arg3 float) (arg4 float)) (when (not (logtest? (-> this flags) (align-flags disabled))) (let ((s5-0 (-> this delta))) (let ((s3-0 (-> this process root transv))) (if (logtest? arg0 (align-opts adjust-y-vel)) - (set! (-> s3-0 y) (* (-> s5-0 trans y) arg3 (-> *display* frames-per-second))) - ) + (set! (-> s3-0 y) (* (-> s5-0 trans y) arg3 (-> *display* frames-per-second)))) (when (logtest? arg0 (align-opts adjust-xz-vel)) (set! (-> s3-0 x) (-> arg1 x)) (set! (-> s3-0 z) (-> arg1 z)) - (let ((f0-8 (* (fmin (vector-xz-length arg1) (* (vector-xz-length (-> s5-0 trans)) arg4)) - (-> *display* frames-per-second) - ) - ) - (t9-2 vector-xz-normalize!) - ) + (let ((f0-8 (* (fmin (vector-xz-length arg1) (* (vector-xz-length (-> s5-0 trans)) arg4)) (-> *display* frames-per-second))) + (t9-2 vector-xz-normalize!)) (set! (-> this last-speed) f0-8) - (t9-2 s3-0 f0-8) - ) - ) - ) + (t9-2 s3-0 f0-8)))) (if (logtest? arg0 (align-opts adjust-quat)) - (quaternion-normalize! (quaternion*! (-> this process root quat) (-> this process root quat) (-> s5-0 quat))) - ) - ) - ) - (-> this process root) - ) + (quaternion-normalize! (quaternion*! (-> this process root quat) (-> this process root quat) (-> s5-0 quat)))))) + (-> this process root)) diff --git a/goal_src/jak1/engine/anim/joint-exploder.gc b/goal_src/jak1/engine/anim/joint-exploder.gc index b1c793f46f..3f0bb3f02a 100644 --- a/goal_src/jak1/engine/anim/joint-exploder.gc +++ b/goal_src/jak1/engine/anim/joint-exploder.gc @@ -1,250 +1,165 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/collide/collide-cache.gc") (require "engine/common-obs/process-drawable.gc") -;; name: joint-exploder.gc -;; name in dgo: joint-exploder -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (deftype joint-exploder-tuning (structure) - ((explosion uint64) - (duration time-frame) - (gravity float) - (rot-speed float) - (fountain-rand-transv-lo vector :inline) - (fountain-rand-transv-hi vector :inline) - (away-from-focal-pt vector :inline :overlay-at fountain-rand-transv-lo) - (away-from-rand-transv-xz-lo float :overlay-at (-> fountain-rand-transv-hi x)) - (away-from-rand-transv-xz-hi float :overlay-at (-> fountain-rand-transv-hi y)) - (away-from-rand-transv-y-lo float :overlay-at (-> fountain-rand-transv-hi z)) - (away-from-rand-transv-y-hi float :overlay-at (-> fountain-rand-transv-hi w)) - ) + ((explosion uint64) + (duration time-frame) + (gravity float) + (rot-speed float) + (fountain-rand-transv-lo vector :inline) + (fountain-rand-transv-hi vector :inline) + (away-from-focal-pt vector :inline :overlay-at fountain-rand-transv-lo) + (away-from-rand-transv-xz-lo float :overlay-at (-> fountain-rand-transv-hi x)) + (away-from-rand-transv-xz-hi float :overlay-at (-> fountain-rand-transv-hi y)) + (away-from-rand-transv-y-lo float :overlay-at (-> fountain-rand-transv-hi z)) + (away-from-rand-transv-y-hi float :overlay-at (-> fountain-rand-transv-hi w))) (:methods - (new (symbol type int) _type_) - ) - ) - + (new (symbol type int) _type_))) (deftype joint-exploder-static-joint-params (structure) - ((joint-index int16) - (parent-joint-index int16) - ) - ) - + ((joint-index int16) + (parent-joint-index int16))) (deftype joint-exploder-static-params (basic) - ((joints (array joint-exploder-static-joint-params)) - ) - ) - + ((joints (array joint-exploder-static-joint-params)))) (deftype joint-exploder-joint (structure) - ((next int16) - (prev int16) - (joint-index int16) - (rspeed float) - (mat matrix :inline) - (rmat matrix :inline) - (transv vector :inline) - (prev-pos vector :inline) - ) - ) - + ((next int16) + (prev int16) + (joint-index int16) + (rspeed float) + (mat matrix :inline) + (rmat matrix :inline) + (transv vector :inline) + (prev-pos vector :inline))) (deftype joint-exploder-joints (basic) - ((num-joints int32) - (joint joint-exploder-joint :inline :dynamic :offset 16) - ) + ((num-joints int32) + (joint joint-exploder-joint :inline :dynamic :offset 16)) (:methods - (new (symbol type joint-exploder-static-params) _type_) - ) - ) - + (new (symbol type joint-exploder-static-params) _type_))) (deftype joint-exploder-list (structure) - ((head int32) - (pre-moved? symbol) - (bbox-valid? symbol) - (bbox bounding-box :inline) - ) - ) - + ((head int32) + (pre-moved? symbol) + (bbox-valid? symbol) + (bbox bounding-box :inline))) (deftype joint-exploder (process-drawable) - ((parent-override (pointer process-drawable) :overlay-at parent) - (die-if-below-y float) - (die-if-beyond-xz-dist-sqrd float) - (joints joint-exploder-joints) - (static-params joint-exploder-static-params) - (anim art-joint-anim) - (scale-vector vector :inline) - (tuning joint-exploder-tuning :inline) - (lists joint-exploder-list 5 :inline) - ) + ((parent-override (pointer process-drawable) :overlay-at parent) + (die-if-below-y float) + (die-if-beyond-xz-dist-sqrd float) + (joints joint-exploder-joints) + (static-params joint-exploder-static-params) + (anim art-joint-anim) + (scale-vector vector :inline) + (tuning joint-exploder-tuning :inline) + (lists joint-exploder-list 5 :inline)) (:methods - (joint-exploder-method-20 (_type_ joint-exploder-list int) int) - (joint-exploder-method-21 (_type_ joint-exploder-list joint-exploder-joint) none) - (joint-exploder-method-22 (_type_ joint-exploder-list) symbol) - (joint-exploder-method-23 (_type_) symbol) - (joint-exploder-method-24 (_type_ joint-exploder-list int) int) - (joint-exploder-method-25 (_type_ joint-exploder-list) symbol) - (joint-exploder-method-26 (_type_ joint-exploder-list int) int) - (joint-exploder-method-27 (_type_ joint-exploder-list int) joint-exploder-list) - (joint-exploder-method-28 (_type_ joint-exploder-list) none) - ) + (joint-exploder-method-20 (_type_ joint-exploder-list int) int) + (joint-exploder-method-21 (_type_ joint-exploder-list joint-exploder-joint) none) + (joint-exploder-method-22 (_type_ joint-exploder-list) symbol) + (joint-exploder-method-23 (_type_) symbol) + (joint-exploder-method-24 (_type_ joint-exploder-list int) int) + (joint-exploder-method-25 (_type_ joint-exploder-list) symbol) + (joint-exploder-method-26 (_type_ joint-exploder-list int) int) + (joint-exploder-method-27 (_type_ joint-exploder-list int) joint-exploder-list) + (joint-exploder-method-28 (_type_ joint-exploder-list) none)) (:states - joint-exploder-shatter - ) - ) - + joint-exploder-shatter)) (defmethod asize-of ((this joint-exploder-joints)) - (the-as int (+ (-> this type size) (* 176 (-> this num-joints)))) - ) + (the-as int (+ (-> this type size) (* 176 (-> this num-joints))))) (defmethod new joint-exploder-joints ((allocation symbol) (type-to-make type) (arg0 joint-exploder-static-params)) (let* ((gp-0 (-> arg0 joints length)) - (v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* 176 gp-0))))) - ) + (v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* 176 gp-0)))))) (set! (-> v0-0 num-joints) gp-0) - v0-0 - ) - ) + v0-0)) (defun joint-exploder-joint-callback ((arg0 joint-exploder)) (let ((gp-0 (-> arg0 node-list))) (let ((s4-0 (-> arg0 joints))) (countdown (s3-0 (-> s4-0 num-joints)) (let* ((v1-3 (-> s4-0 joint s3-0)) - (a0-5 (-> gp-0 data (-> v1-3 joint-index) bone transform)) - ) - (matrix*! a0-5 (-> v1-3 rmat) (-> v1-3 mat)) - ) - ) - ) + (a0-5 (-> gp-0 data (-> v1-3 joint-index) bone transform))) + (matrix*! a0-5 (-> v1-3 rmat) (-> v1-3 mat))))) (let ((s5-1 (-> arg0 scale-vector))) (countdown (s4-1 (-> gp-0 length)) - (let ((a2-1 (-> gp-0 data s4-1 bone transform))) - (scale-matrix! a2-1 s5-1 a2-1) - ) - ) - ) - ) + (let ((a2-1 (-> gp-0 data s4-1 bone transform))) (scale-matrix! a2-1 s5-1 a2-1))))) 0 - (none) - ) + (none)) (defmethod joint-exploder-method-24 ((this joint-exploder) (arg0 joint-exploder-list) (arg1 int)) (let ((v0-0 (joint-exploder-method-26 this arg0 arg1))) (let* ((v1-1 (-> this joints)) - (v1-2 (-> v1-1 joint arg1)) - ) + (v1-2 (-> v1-1 joint arg1))) (set! (-> v1-2 mat vector 0 quad) (the-as uint128 0)) (set! (-> v1-2 mat vector 1 quad) (the-as uint128 0)) (set! (-> v1-2 mat vector 2 quad) (the-as uint128 0)) - (set! (-> v1-2 mat vector 3 quad) (-> this root trans quad)) - ) - v0-0 - ) - ) + (set! (-> v1-2 mat vector 3 quad) (-> this root trans quad))) + v0-0)) (defmethod joint-exploder-method-26 ((this joint-exploder) (arg0 joint-exploder-list) (arg1 int)) (let* ((v1-0 (-> this joints)) (a2-1 (-> v1-0 joint arg1)) (a0-4 (-> a2-1 prev)) - (v0-0 (-> a2-1 next)) - ) + (v0-0 (-> a2-1 next))) (cond ((>= a0-4 0) (set! (-> v1-0 joint a0-4 next) v0-0) - (if (>= v0-0 0) - (set! (-> (the-as joint-exploder-joint (-> v1-0 joint v0-0)) prev) a0-4) - ) - ) + (if (>= v0-0 0) (set! (-> (the-as joint-exploder-joint (-> v1-0 joint v0-0)) prev) a0-4))) (else - (set! (-> arg0 head) v0-0) - (cond - ((>= v0-0 0) - (let ((v1-2 (-> v1-0 joint v0-0))) - (set! (-> v1-2 prev) -1) - ) - ) - (else - (set! (-> arg0 bbox-valid?) #f) - ) - ) - ) - ) - v0-0 - ) - ) + (set! (-> arg0 head) v0-0) + (cond + ((>= v0-0 0) (let ((v1-2 (-> v1-0 joint v0-0))) (set! (-> v1-2 prev) -1))) + (else (set! (-> arg0 bbox-valid?) #f))))) + v0-0)) (defmethod joint-exploder-method-20 ((this joint-exploder) (arg0 joint-exploder-list) (arg1 int)) (let* ((v1-0 (-> this joints)) (a3-0 (-> v1-0 joint arg1)) - (a0-4 (-> arg0 head)) - ) + (a0-4 (-> arg0 head))) (set! (-> arg0 head) arg1) (set! (-> a3-0 prev) -1) (set! (-> a3-0 next) a0-4) (when (>= a0-4 0) (set! (-> (the-as joint-exploder-joint (-> v1-0 joint a0-4)) prev) arg1) - arg1 - ) - ) - ) + arg1))) (defmethod joint-exploder-method-21 ((this joint-exploder) (arg0 joint-exploder-list) (arg1 joint-exploder-joint)) (let ((a1-1 (-> arg1 mat vector 3))) (cond - ((-> arg0 bbox-valid?) - (add-point! (-> arg0 bbox) (the-as vector3s a1-1)) - ) + ((-> arg0 bbox-valid?) (add-point! (-> arg0 bbox) (the-as vector3s a1-1))) (else - (set! (-> arg0 bbox-valid?) #t) - (set! (-> arg0 bbox min quad) (-> a1-1 quad)) - (set! (-> arg0 bbox max quad) (-> a1-1 quad)) - ) - ) - ) + (set! (-> arg0 bbox-valid?) #t) + (set! (-> arg0 bbox min quad) (-> a1-1 quad)) + (set! (-> arg0 bbox max quad) (-> a1-1 quad))))) (add-point! (-> arg0 bbox) (the-as vector3s (-> arg1 prev-pos))) - (none) - ) + (none)) (defmethod joint-exploder-method-27 ((this joint-exploder) (arg0 joint-exploder-list) (arg1 int)) (local-vars (sv-16 int) (sv-32 int) (sv-48 int)) (let ((s4-0 (the-as joint-exploder-list #f))) (let ((v1-0 1)) (until (= v1-0 5) - (let ((a0-4 (-> this lists v1-0))) - (when (< (-> a0-4 head) 0) - (set! s4-0 a0-4) - (goto cfg-6) - ) - ) - (+! v1-0 1) - ) - ) + (let ((a0-4 (-> this lists v1-0))) (when (< (-> a0-4 head) 0) (set! s4-0 a0-4) (goto cfg-6))) + (+! v1-0 1))) (label cfg-6) (let ((s3-0 (the-as object s4-0))) (cond ((the-as joint-exploder-list s3-0) (set! (-> (the-as joint-exploder-list s3-0) pre-moved?) #t) - (set! (-> (the-as joint-exploder-list s3-0) bbox-valid?) #f) - ) - (else - (set! s3-0 (-> this lists)) - ) - ) + (set! (-> (the-as joint-exploder-list s3-0) bbox-valid?) #f)) + (else (set! s3-0 (-> this lists)))) (set! (-> arg0 bbox-valid?) #f) (let ((s2-0 (-> this joints)) - (s1-0 (-> arg0 head)) - ) + (s1-0 (-> arg0 head))) (cond ((zero? arg1) (let ((f30-0 (* 0.5 (+ (-> arg0 bbox min x) (-> arg0 bbox max x))))) @@ -255,17 +170,8 @@ (set! sv-16 (joint-exploder-method-26 this arg0 s1-0)) (joint-exploder-method-20 this (the-as joint-exploder-list s3-0) s1-0) (set! s1-0 sv-16) - (joint-exploder-method-21 this (the-as joint-exploder-list s3-0) s0-0) - ) - (else - (joint-exploder-method-21 this arg0 s0-0) - (set! s1-0 (-> s0-0 next)) - ) - ) - ) - ) - ) - ) + (joint-exploder-method-21 this (the-as joint-exploder-list s3-0) s0-0)) + (else (joint-exploder-method-21 this arg0 s0-0) (set! s1-0 (-> s0-0 next)))))))) ((= arg1 1) (let ((f30-1 (* 0.5 (+ (-> arg0 bbox min y) (-> arg0 bbox max y))))) (while (>= s1-0 0) @@ -275,17 +181,8 @@ (set! sv-32 (joint-exploder-method-26 this arg0 s1-0)) (joint-exploder-method-20 this (the-as joint-exploder-list s3-0) s1-0) (set! s1-0 sv-32) - (joint-exploder-method-21 this (the-as joint-exploder-list s3-0) s0-1) - ) - (else - (joint-exploder-method-21 this arg0 s0-1) - (set! s1-0 (-> s0-1 next)) - ) - ) - ) - ) - ) - ) + (joint-exploder-method-21 this (the-as joint-exploder-list s3-0) s0-1)) + (else (joint-exploder-method-21 this arg0 s0-1) (set! s1-0 (-> s0-1 next)))))))) ((= arg1 2) (let ((f30-2 (* 0.5 (+ (-> arg0 bbox min z) (-> arg0 bbox max z))))) (while (>= s1-0 0) @@ -295,67 +192,33 @@ (set! sv-48 (joint-exploder-method-26 this arg0 s1-0)) (joint-exploder-method-20 this (the-as joint-exploder-list s3-0) s1-0) (set! s1-0 sv-48) - (joint-exploder-method-21 this (the-as joint-exploder-list s3-0) s0-2) - ) - (else - (joint-exploder-method-21 this arg0 s0-2) - (set! s1-0 (-> s0-2 next)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - s4-0 - ) - ) + (joint-exploder-method-21 this (the-as joint-exploder-list s3-0) s0-2)) + (else (joint-exploder-method-21 this arg0 s0-2) (set! s1-0 (-> s0-2 next))))))))))) + s4-0)) (defmethod joint-exploder-method-28 ((this joint-exploder) (arg0 joint-exploder-list)) (when (and (-> arg0 bbox-valid?) (>= (-> arg0 head) 0)) (cond ((< 20480.0 (- (-> arg0 bbox max x) (-> arg0 bbox min x))) - (let ((a1-2 (joint-exploder-method-27 this arg0 0))) - (if a1-2 - (joint-exploder-method-28 this a1-2) - ) - ) - (joint-exploder-method-28 this arg0) - ) + (let ((a1-2 (joint-exploder-method-27 this arg0 0))) (if a1-2 (joint-exploder-method-28 this a1-2))) + (joint-exploder-method-28 this arg0)) ((< 20480.0 (- (-> arg0 bbox max y) (-> arg0 bbox min y))) - (let ((a1-5 (joint-exploder-method-27 this arg0 1))) - (if a1-5 - (joint-exploder-method-28 this a1-5) - ) - ) - (joint-exploder-method-28 this arg0) - ) + (let ((a1-5 (joint-exploder-method-27 this arg0 1))) (if a1-5 (joint-exploder-method-28 this a1-5))) + (joint-exploder-method-28 this arg0)) ((< 20480.0 (- (-> arg0 bbox max z) (-> arg0 bbox min z))) - (let ((a1-8 (joint-exploder-method-27 this arg0 2))) - (if a1-8 - (joint-exploder-method-28 this a1-8) - ) - ) - (joint-exploder-method-28 this arg0) - ) - ) - ) - (none) - ) + (let ((a1-8 (joint-exploder-method-27 this arg0 2))) (if a1-8 (joint-exploder-method-28 this a1-8))) + (joint-exploder-method-28 this arg0)))) + (none)) (defmethod joint-exploder-method-25 ((this joint-exploder) (arg0 joint-exploder-list)) (set! (-> arg0 bbox-valid?) #f) (set! (-> arg0 pre-moved?) #t) (let ((s4-0 (-> this joints)) (f30-0 (* (-> this tuning gravity) (seconds-per-frame))) - (s3-0 (-> arg0 head)) - ) + (s3-0 (-> arg0 head))) (while (>= s3-0 0) (let* ((s2-0 (-> s4-0 joint s3-0)) - (s1-0 (-> s2-0 mat vector 3)) - ) + (s1-0 (-> s2-0 mat vector 3))) (set! (-> s2-0 prev-pos quad) (-> s1-0 quad)) (+! (-> s2-0 transv y) f30-0) (vector-v+! s1-0 s1-0 (-> s2-0 transv)) @@ -364,156 +227,101 @@ (f5-0 (-> s2-0 rmat vector 0 x)) (f4-0 (-> s2-0 rmat vector 0 y)) (f3-0 (-> s2-0 rmat vector 1 x)) - (f1-2 (-> s2-0 rmat vector 1 y)) - ) + (f1-2 (-> s2-0 rmat vector 1 y))) (set! (-> s2-0 rmat vector 0 x) (- (* f5-0 f0-3) (* f4-0 f2-1))) (set! (-> s2-0 rmat vector 0 y) (+ (* f5-0 f2-1) (* f4-0 f0-3))) (set! (-> s2-0 rmat vector 1 x) (- (* f3-0 f0-3) (* f1-2 f2-1))) - (set! (-> s2-0 rmat vector 1 y) (+ (* f3-0 f2-1) (* f1-2 f0-3))) - ) + (set! (-> s2-0 rmat vector 1 y) (+ (* f3-0 f2-1) (* f1-2 f0-3)))) (cond ((or (< (-> s1-0 y) (-> this die-if-below-y)) - (< (-> this die-if-beyond-xz-dist-sqrd) (vector-vector-xz-distance s1-0 (-> this root trans))) - ) - (set! s3-0 (joint-exploder-method-24 this arg0 s3-0)) - ) - (else - (joint-exploder-method-21 this arg0 s2-0) - (set! s3-0 (-> s2-0 next)) - ) - ) - ) - ) - ) - #f - ) + (< (-> this die-if-beyond-xz-dist-sqrd) (vector-vector-xz-distance s1-0 (-> this root trans)))) + (set! s3-0 (joint-exploder-method-24 this arg0 s3-0))) + (else (joint-exploder-method-21 this arg0 s2-0) (set! s3-0 (-> s2-0 next))))))) + #f) (defmethod joint-exploder-method-22 ((this joint-exploder) (arg0 joint-exploder-list)) - (fill-using-bounding-box - *collide-cache* - (-> arg0 bbox) - (collide-kind background) - this - (new 'static 'pat-surface :noentity #x1) - ) + (fill-using-bounding-box *collide-cache* + (-> arg0 bbox) + (collide-kind background) + this + (new 'static 'pat-surface :noentity #x1)) (let ((gp-1 (-> this joints)) - (v1-2 (-> arg0 head)) - ) + (v1-2 (-> arg0 head))) (while (>= v1-2 0) (let ((s5-1 (-> gp-1 joint v1-2))) (let ((s4-0 (-> s5-1 mat vector 3)) (a2-1 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'collide-tri-result)) - ) + (s3-0 (new 'stack-no-clear 'collide-tri-result))) (vector-! a2-1 s4-0 (-> s5-1 prev-pos)) - (when (>= (probe-using-line-sphere - *collide-cache* - (-> s5-1 prev-pos) - a2-1 - 40.96 - (collide-kind background) - s3-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (when (>= (probe-using-line-sphere *collide-cache* + (-> s5-1 prev-pos) + a2-1 + 40.96 + (collide-kind background) + s3-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> s4-0 quad) (-> s3-0 intersect quad)) (let ((f28-0 (vector-xz-length (-> s5-1 transv)))) (vector-reflect! (-> s5-1 transv) (-> s5-1 transv) (-> s3-0 normal)) (let ((f30-0 (-> s5-1 transv y))) (set! (-> s5-1 transv y) 0.0) (vector-normalize! (-> s5-1 transv) (* 0.75 f28-0)) - (set! (-> s5-1 transv y) (* 0.7 f30-0)) - ) - ) + (set! (-> s5-1 transv y) (* 0.7 f30-0)))) (+! (-> s4-0 y) (* 40.96 (-> s3-0 normal y))) (set! (-> s4-0 w) 1.0) - (set! (-> s5-1 rspeed) (* 0.5 (-> s5-1 rspeed))) - ) - ) - (set! v1-2 (-> s5-1 next)) - ) - ) - ) - #f - ) + (set! (-> s5-1 rspeed) (* 0.5 (-> s5-1 rspeed))))) + (set! v1-2 (-> s5-1 next))))) + #f) (defstate joint-exploder-shatter (joint-exploder) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (let* ((f1-0 (the float (- (current-time) (-> self state-time)))) - (f0-2 (- 1.0 (/ f1-0 (the float (-> self tuning duration))))) - (f1-2 (- 1.0 (/ f1-0 (* 0.75 (the float (-> self tuning duration)))))) - ) - (if (< f1-2 0.0) - (set! f1-2 0.0) - ) - (set-vector! (-> self scale-vector) f0-2 f1-2 f0-2 1.0) - ) - (dotimes (v1-8 5) - (set! (-> self lists v1-8 pre-moved?) #f) - ) - (dotimes (gp-0 5) - (let ((s5-0 (-> self lists gp-0))) - (when (>= (-> s5-0 head) 0) - (when (not (-> s5-0 pre-moved?)) - (joint-exploder-method-25 self s5-0) - (if (nonzero? gp-0) - (joint-exploder-method-28 self s5-0) - ) - ) - ) - ) - ) - (let ((gp-1 (new 'stack-no-clear 'bounding-box))) - (let ((v1-26 (-> self root trans))) - (set! (-> gp-1 min quad) (-> v1-26 quad)) - (set! (-> gp-1 max quad) (-> v1-26 quad)) - ) - (dotimes (s5-1 5) - (let ((s4-0 (-> self lists s5-1))) - (if (-> s4-0 bbox-valid?) - (add-box! gp-1 (-> s4-0 bbox)) - ) - (if (nonzero? s5-1) - (joint-exploder-method-22 self s4-0) - ) - ) - ) - (let ((s5-2 (-> self draw bounds))) - (set-vector! - s5-2 - (* 0.5 (+ (-> gp-1 min x) (-> gp-1 max x))) - (* 0.5 (+ (-> gp-1 min y) (-> gp-1 max y))) - (* 0.5 (+ (-> gp-1 min z) (-> gp-1 max z))) - 1.0 - ) - (let ((f0-12 (+ 16384.0 (vector-vector-distance s5-2 (-> gp-1 max))))) - (vector-! s5-2 s5-2 (-> self root trans)) - (set! (-> s5-2 w) f0-12) - ) - ) - ) - 0 - ) - :code (behavior () - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (-> self tuning duration)) - (suspend) - (ja :num! (loop!)) - ) - ) - :post ja-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (let* ((f1-0 (the float (- (current-time) (-> self state-time)))) + (f0-2 (- 1.0 (/ f1-0 (the float (-> self tuning duration))))) + (f1-2 (- 1.0 (/ f1-0 (* 0.75 (the float (-> self tuning duration))))))) + (if (< f1-2 0.0) (set! f1-2 0.0)) + (set-vector! (-> self scale-vector) f0-2 f1-2 f0-2 1.0)) + (dotimes (v1-8 5) + (set! (-> self lists v1-8 pre-moved?) #f)) + (dotimes (gp-0 5) + (let ((s5-0 (-> self lists gp-0))) + (when (>= (-> s5-0 head) 0) + (when (not (-> s5-0 pre-moved?)) + (joint-exploder-method-25 self s5-0) + (if (nonzero? gp-0) (joint-exploder-method-28 self s5-0)))))) + (let ((gp-1 (new 'stack-no-clear 'bounding-box))) + (let ((v1-26 (-> self root trans))) (set! (-> gp-1 min quad) (-> v1-26 quad)) (set! (-> gp-1 max quad) (-> v1-26 quad))) + (dotimes (s5-1 5) + (let ((s4-0 (-> self lists s5-1))) + (if (-> s4-0 bbox-valid?) (add-box! gp-1 (-> s4-0 bbox))) + (if (nonzero? s5-1) (joint-exploder-method-22 self s4-0)))) + (let ((s5-2 (-> self draw bounds))) + (set-vector! s5-2 + (* 0.5 (+ (-> gp-1 min x) (-> gp-1 max x))) + (* 0.5 (+ (-> gp-1 min y) (-> gp-1 max y))) + (* 0.5 (+ (-> gp-1 min z) (-> gp-1 max z))) + 1.0) + (let ((f0-12 (+ 16384.0 (vector-vector-distance s5-2 (-> gp-1 max))))) + (vector-! s5-2 s5-2 (-> self root trans)) + (set! (-> s5-2 w) f0-12)))) + 0) + :code + (behavior () + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (-> self tuning duration)) + (suspend) + (ja :num! (loop!)))) + :post ja-post) (defmethod joint-exploder-method-23 ((this joint-exploder)) (let ((gp-0 (-> this joints))) (dotimes (s4-0 (-> gp-0 num-joints)) (let ((v1-2 (-> this static-params joints s4-0)) - (s3-0 (-> gp-0 joint s4-0)) - ) + (s3-0 (-> gp-0 joint s4-0))) (let ((a0-6 (-> v1-2 parent-joint-index))) (set! (-> s3-0 prev) (+ s4-0 -1)) (set! (-> s3-0 next) (+ s4-0 1)) @@ -521,95 +329,61 @@ (set! (-> s3-0 rspeed) (-> this tuning rot-speed)) (cond ((>= a0-6 0) - (if (zero? a0-6) - (set! a0-6 (-> v1-2 joint-index)) - ) + (if (zero? a0-6) (set! a0-6 (-> v1-2 joint-index))) (let* ((a3-0 (-> this parent-override 0 node-list data a0-6 bone transform)) (a2-0 (-> s3-0 mat)) (v1-9 (-> a3-0 vector 0 quad)) (a0-8 (-> a3-0 vector 1 quad)) (a1-4 (-> a3-0 vector 2 quad)) - (a3-1 (-> a3-0 vector 3 quad)) - ) + (a3-1 (-> a3-0 vector 3 quad))) (set! (-> a2-0 vector 0 quad) v1-9) (set! (-> a2-0 vector 1 quad) a0-8) (set! (-> a2-0 vector 2 quad) a1-4) - (set! (-> a2-0 vector 3 quad) a3-1) - ) - (matrix-identity! (-> s3-0 rmat)) - ) + (set! (-> a2-0 vector 3 quad) a3-1)) + (matrix-identity! (-> s3-0 rmat))) (else - (let* ((a3-2 (-> this node-list data (-> v1-2 joint-index) bone transform)) - (a2-1 (-> s3-0 mat)) - (v1-15 (-> a3-2 vector 0 quad)) - (a0-11 (-> a3-2 vector 1 quad)) - (a1-5 (-> a3-2 vector 2 quad)) - (a3-3 (-> a3-2 vector 3 quad)) - ) - (set! (-> a2-1 vector 0 quad) v1-15) - (set! (-> a2-1 vector 1 quad) a0-11) - (set! (-> a2-1 vector 2 quad) a1-5) - (set! (-> a2-1 vector 3 quad) a3-3) - ) - (matrix-identity! (-> s3-0 rmat)) - ) - ) - ) + (let* ((a3-2 (-> this node-list data (-> v1-2 joint-index) bone transform)) + (a2-1 (-> s3-0 mat)) + (v1-15 (-> a3-2 vector 0 quad)) + (a0-11 (-> a3-2 vector 1 quad)) + (a1-5 (-> a3-2 vector 2 quad)) + (a3-3 (-> a3-2 vector 3 quad))) + (set! (-> a2-1 vector 0 quad) v1-15) + (set! (-> a2-1 vector 1 quad) a0-11) + (set! (-> a2-1 vector 2 quad) a1-5) + (set! (-> a2-1 vector 3 quad) a3-3)) + (matrix-identity! (-> s3-0 rmat))))) (case (-> this tuning explosion) ((1) (vector-! (-> s3-0 transv) (-> s3-0 mat vector 3) (-> this tuning fountain-rand-transv-lo)) - (vector-normalize! - (-> s3-0 transv) - (rand-vu-float-range (-> this tuning fountain-rand-transv-hi x) (-> this tuning fountain-rand-transv-hi y)) - ) + (vector-normalize! (-> s3-0 transv) + (rand-vu-float-range (-> this tuning fountain-rand-transv-hi x) (-> this tuning fountain-rand-transv-hi y))) (+! (-> s3-0 transv y) - (rand-vu-float-range (-> this tuning fountain-rand-transv-hi z) (-> this tuning fountain-rand-transv-hi w)) - ) - (set! (-> s3-0 transv w) 1.0) - ) + (rand-vu-float-range (-> this tuning fountain-rand-transv-hi z) (-> this tuning fountain-rand-transv-hi w))) + (set! (-> s3-0 transv w) 1.0)) (else - (let ((s1-1 (-> this tuning fountain-rand-transv-lo)) - (s2-1 (-> this tuning fountain-rand-transv-hi)) - ) - (set-vector! - (-> s3-0 transv) - (rand-vu-float-range (-> s1-1 x) (-> s2-1 x)) - (rand-vu-float-range (-> s1-1 y) (-> s2-1 y)) - (rand-vu-float-range (-> s1-1 z) (-> s2-1 z)) - 1.0 - ) - ) - ) - ) - ) - ) + (let ((s1-1 (-> this tuning fountain-rand-transv-lo)) + (s2-1 (-> this tuning fountain-rand-transv-hi))) + (set-vector! (-> s3-0 transv) + (rand-vu-float-range (-> s1-1 x) (-> s2-1 x)) + (rand-vu-float-range (-> s1-1 y) (-> s2-1 y)) + (rand-vu-float-range (-> s1-1 z) (-> s2-1 z)) + 1.0)))))) (when (nonzero? (-> gp-0 num-joints)) - (let ((v1-26 (-> gp-0 joint (+ (-> gp-0 num-joints) -1)))) - (set! (-> v1-26 next) -1) - ) + (let ((v1-26 (-> gp-0 joint (+ (-> gp-0 num-joints) -1)))) (set! (-> v1-26 next) -1)) (let ((v1-27 (the-as joint-exploder-list (&-> this stack 224)))) (set! (-> v1-27 head) 0) (let ((s5-1 (-> v1-27 bbox))) (let ((v1-28 (the-as structure (-> gp-0 joint 0 mat vector 3)))) (set! (-> s5-1 min quad) (-> (the-as matrix v1-28) vector 0 quad)) - (set! (-> s5-1 max quad) (-> (the-as matrix v1-28) vector 0 quad)) - ) + (set! (-> s5-1 max quad) (-> (the-as matrix v1-28) vector 0 quad))) (dotimes (s4-1 (-> gp-0 num-joints)) - (add-point! s5-1 (the-as vector3s (+ (the-as uint (-> gp-0 joint 0 mat vector 3)) (* 176 s4-1)))) - ) - ) - ) - #f - ) - ) - ) + (add-point! s5-1 (the-as vector3s (+ (the-as uint (-> gp-0 joint 0 mat vector 3)) (* 176 s4-1))))))) + #f))) (defmethod relocate ((this joint-exploder) (arg0 int)) - (if (nonzero? (-> this joints)) - (&+! (-> this joints) arg0) - ) - (the-as joint-exploder ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this joints)) (&+! (-> this joints) arg0)) + (the-as joint-exploder ((method-of-type process-drawable relocate) this arg0))) (defbehavior joint-exploder-init-by-other joint-exploder ((arg0 skeleton-group) (arg1 int) (arg2 joint-exploder-static-params) (arg3 joint-exploder-static-params)) (set! (-> self static-params) arg3) @@ -620,9 +394,7 @@ (let ((a0-6 (-> self lists v1-1))) (set! (-> a0-6 head) -1) (set! (-> a0-6 bbox-valid?) #f) - (set! (-> a0-6 pre-moved?) #f) - ) - ) + (set! (-> a0-6 pre-moved?) #f))) (logior! (-> self mask) (process-mask enemy)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) @@ -638,13 +410,11 @@ (set! (-> self die-if-below-y) (+ -102400.0 (-> self root trans y))) (set! (-> self skel postbind-function) joint-exploder-joint-callback) (go joint-exploder-shatter) - (none) - ) + (none)) (defmethod new joint-exploder-tuning ((allocation symbol) (type-to-make type) (arg0 int)) (let ((t9-0 (method-of-type structure new)) - (v1-1 type-to-make) - ) + (v1-1 type-to-make)) (-> type-to-make size) (let ((v0-0 (the-as joint-exploder-tuning (t9-0 allocation v1-1)))) (set! (-> v0-0 explosion) (the-as uint arg0)) @@ -654,17 +424,11 @@ (cond ((zero? arg0) (set-vector! (-> v0-0 fountain-rand-transv-lo) -81920.0 20480.0 -81920.0 1.0) - (set-vector! (-> v0-0 fountain-rand-transv-hi) 81920.0 61440.0 81920.0 1.0) - ) + (set-vector! (-> v0-0 fountain-rand-transv-hi) 81920.0 61440.0 81920.0 1.0)) ((= arg0 1) (vector-reset! (-> v0-0 fountain-rand-transv-lo)) (set! (-> v0-0 fountain-rand-transv-hi x) 49152.0) (set! (-> v0-0 fountain-rand-transv-hi y) 163840.0) (set! (-> v0-0 fountain-rand-transv-hi z) 20480.0) - (set! (-> v0-0 fountain-rand-transv-hi w) 61440.0) - ) - ) - v0-0 - ) - ) - ) + (set! (-> v0-0 fountain-rand-transv-hi w) 61440.0))) + v0-0))) diff --git a/goal_src/jak1/engine/anim/joint-h.gc b/goal_src/jak1/engine/anim/joint-h.gc index c611d08531..06e4d450c1 100644 --- a/goal_src/jak1/engine/anim/joint-h.gc +++ b/goal_src/jak1/engine/anim/joint-h.gc @@ -1,19 +1,17 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") - -;; name: joint-h.gc -;; name in dgo: joint-h -;; dgos: GAME, ENGINE - (declare-type joint-control basic) + (declare-type effect-control basic) (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)) (defenum janim-status @@ -27,8 +25,7 @@ (spool 5) (blerc-done 6) (eye-done 7) - (eye 8) - ) + (eye 8)) ;; DECOMP BEGINS @@ -38,87 +35,71 @@ ;; A single joint control channel. It can control some number of joints through a single animation. ;; Multiple channels are blended together to create smooth transitions between animations. (deftype joint-control-channel (structure) - ((parent joint-control) - (command symbol) - (frame-interp float) - (frame-group art-joint-anim) - (frame-num float) - (num-func (function joint-control-channel float float float)) - (param float 2) - (group-sub-index int16) - (group-size int16) - (dist meters) - (eval-time uint32) - (inspector-amount float) - ) + ((parent joint-control) + (command symbol) + (frame-interp float) + (frame-group art-joint-anim) + (frame-num float) + (num-func (function joint-control-channel float float float)) + (param float 2) + (group-sub-index int16) + (group-size int16) + (dist meters) + (eval-time uint32) + (inspector-amount float)) (:methods - (debug-print-frames (_type_) _type_) - ) - ) - + (debug-print-frames (_type_) _type_))) (deftype joint-control (basic) - ((status janim-status) - (allocated-length int16) - (root-channel (inline-array joint-control-channel) :offset 16) - (blend-index int32) - (active-channels int32) - (generate-frame-function (function (inline-array vector) int process-drawable int)) - (prebind-function (function pointer int process-drawable none)) - (postbind-function (function process-drawable none)) - (effect effect-control) - (channel joint-control-channel 3 :inline) - (frame-group0 art-joint-anim :overlay-at (-> channel 0 frame-group)) - (frame-num0 float :overlay-at (-> channel 0 frame-num)) - (frame-interp0 float :overlay-at (-> channel 0 frame-interp)) - (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 janim-status) + (allocated-length int16) + (root-channel (inline-array joint-control-channel) :offset 16) + (blend-index int32) + (active-channels int32) + (generate-frame-function (function (inline-array vector) int process-drawable int)) + (prebind-function (function pointer int process-drawable none)) + (postbind-function (function process-drawable none)) + (effect effect-control) + (channel joint-control-channel 3 :inline) + (frame-group0 art-joint-anim :overlay-at (-> channel 0 frame-group)) + (frame-num0 float :overlay-at (-> channel 0 frame-num)) + (frame-interp0 float :overlay-at (-> channel 0 frame-interp)) + (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)) (:methods - (new (symbol type int) _type_) - (current-cycle-distance (_type_) float) - (debug-print-channels (_type_ symbol) int) - ) - ) - + (new (symbol type int) _type_) + (current-cycle-distance (_type_) float) + (debug-print-channels (_type_ symbol) int))) (deftype matrix-stack (structure) - ((top matrix) - (data matrix 24 :inline) - ) - ) - + ((top matrix) + (data matrix 24 :inline))) (deftype channel-upload-info (structure) - ((fixed joint-anim-compressed-fixed) - (fixed-qwc int32) - (frame joint-anim-compressed-frame) - (frame-qwc int32) - (amount float) - (interp float) - ) - :pack-me - ) - + ((fixed joint-anim-compressed-fixed) + (fixed-qwc int32) + (frame joint-anim-compressed-frame) + (frame-qwc int32) + (amount float) + (interp float)) + :pack-me) (deftype joint-work (structure) - ((temp-mtx matrix :inline) - (joint-stack matrix-stack :inline) - (fix-jmp-table (function none) 16) - (frm-jmp-table (function none) 16) - (pair-jmp-table (function none) 16) - (uploads channel-upload-info 24 :inline) - (num-uploads int32) - (mtx-acc matrix 2 :inline) - (tq-acc transformq 100 :inline) - (jacp-hdr joint-anim-compressed-hdr :inline) - (fixed-data joint-anim-compressed-fixed :inline) - (frame-data joint-anim-compressed-frame 2 :inline) - (flatten-array float 576 :overlay-at mtx-acc) - (flattened vector 24 :inline :overlay-at mtx-acc) - ) - ) + ((temp-mtx matrix :inline) + (joint-stack matrix-stack :inline) + (fix-jmp-table (function none) 16) + (frm-jmp-table (function none) 16) + (pair-jmp-table (function none) 16) + (uploads channel-upload-info 24 :inline) + (num-uploads int32) + (mtx-acc matrix 2 :inline) + (tq-acc transformq 100 :inline) + (jacp-hdr joint-anim-compressed-hdr :inline) + (fixed-data joint-anim-compressed-fixed :inline) + (frame-data joint-anim-compressed-frame 2 :inline) + (flatten-array float 576 :overlay-at mtx-acc) + (flattened vector 24 :inline :overlay-at mtx-acc))) diff --git a/goal_src/jak1/engine/anim/joint-mod-h.gc b/goal_src/jak1/engine/anim/joint-mod-h.gc index 2b01f7bae8..59e6237e64 100644 --- a/goal_src/jak1/engine/anim/joint-mod-h.gc +++ b/goal_src/jak1/engine/anim/joint-mod-h.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/geometry/geometry.gc") (require "engine/game/main-h.gc") (require "engine/debug/debug-h.gc") @@ -12,86 +11,76 @@ (require "engine/anim/mspace-h.gc") (require "engine/game/game-h.gc") -;; name: joint-mod-h.gc -;; name in dgo: joint-mod-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; The joint-mod system allows an animated character to change in a way that's not described in ;; an animation. For example, this is used to point Jak's head toward an attacking enemy. (define-extern joint-mod-look-at-handler (function cspace transformq none)) + (define-extern joint-mod-world-look-at-handler (function cspace transformq none)) + (define-extern joint-mod-rotate-handler (function cspace transformq none)) + (define-extern joint-mod-joint-set-handler (function cspace transformq none)) + (define-extern joint-mod-joint-set*-handler (function cspace transformq none)) ;; There are several modes available for joint-mod. (defenum joint-mod-handler-mode - :bitfield #t - :type uint32 - (flex-blend 0) ;; 1 - (look-at 1) ;; 2 - (world-look-at 2) ;; 4 - (rotate 3) ;; 8 - (joint-set 4) ;; 16 - (joint-set* 5) ;; 32 - ;; ?? ;; 64 - (reset 7) ;; 128 - ) + :bitfield #t + :type uint32 + (flex-blend 0) ;; 1 + (look-at 1) ;; 2 + (world-look-at 2) ;; 4 + (rotate 3) ;; 8 + (joint-set 4) ;; 16 + (joint-set* 5) ;; 32 + ;; ?? ;; 64 + (reset 7) ;; 128 + ) ;; The joint-mod itself represents a modification to a single joint. ;; Although the mode is a bitfield, it appears that multiple kinds of mods cannot be ;; activated at the same time. (deftype joint-mod (basic) - ((mode joint-mod-handler-mode) - (process process-drawable) - (joint cspace) - (target vector :inline) - (twist vector :inline) - (twist-max vector :inline) - (trans vector :inline) - (quat quaternion :inline) - (scale vector :inline) - (notice-time time-frame) - (flex-blend float) - (blend float) - (max-dist meters) - (ignore-angle degrees) - (up uint8) - (nose uint8) - (ear uint8) - (shutting-down? symbol) - (parented-scale? symbol :overlay-at max-dist) - ) + ((mode joint-mod-handler-mode) + (process process-drawable) + (joint cspace) + (target vector :inline) + (twist vector :inline) + (twist-max vector :inline) + (trans vector :inline) + (quat quaternion :inline) + (scale vector :inline) + (notice-time time-frame) + (flex-blend float) + (blend float) + (max-dist meters) + (ignore-angle degrees) + (up uint8) + (nose uint8) + (ear uint8) + (shutting-down? symbol) + (parented-scale? symbol :overlay-at max-dist)) (:methods - (new (symbol type joint-mod-handler-mode process-drawable int) _type_) - (set-mode! (_type_ joint-mod-handler-mode) _type_) - (set-target! (_type_ vector) none) - (look-at-enemy! (_type_ vector symbol process) none) - (reset-blend! (_type_) _type_) - (set-twist! (_type_ float float float) vector) - (set-trs! (_type_ vector quaternion vector) none) - (shut-down! (_type_) none) - ) - ) - + (new (symbol type joint-mod-handler-mode process-drawable int) _type_) + (set-mode! (_type_ joint-mod-handler-mode) _type_) + (set-target! (_type_ vector) none) + (look-at-enemy! (_type_ vector symbol process) none) + (reset-blend! (_type_) _type_) + (set-twist! (_type_ float float float) vector) + (set-trs! (_type_ vector quaternion vector) none) + (shut-down! (_type_) none))) (defun-debug joint-mod-debug-draw ((mod joint-mod)) "Draw a frame at the bone." ;; I believe this draws a set of coordinate axes that represent the transformation matrix. (add-debug-matrix #t (bucket-id debug-no-zbuf) (-> mod joint bone transform)) 0 - (none) - ) + (none)) -(defmethod new joint-mod ((allocation symbol) - (type-to-make type) - (mode joint-mod-handler-mode) - (proc process-drawable) - (joint-idx int) - ) +(defmethod new joint-mod ((allocation symbol) (type-to-make type) (mode joint-mod-handler-mode) (proc process-drawable) (joint-idx int)) "Construct a new joint-mod. It will work on the given process-drawable's joint." (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> this process) proc) @@ -107,9 +96,7 @@ (set! (-> this ignore-angle) 65536.0) (set! (-> this flex-blend) 1.0) (set! (-> this shutting-down?) #f) - this - ) - ) + this)) (defmethod set-mode! ((this joint-mod) (handler-mode joint-mod-handler-mode)) "Set up the joint-mod for the given mode. You can only pick one mode at a time." @@ -121,31 +108,26 @@ (set! (-> joint param1) #f) (set! (-> joint param2) #f) (set! (-> this blend) 0.0) - (set! (-> this flex-blend) 1.0) - ) + (set! (-> this flex-blend) 1.0)) (((joint-mod-handler-mode reset)) (set! (-> joint param0) #f) (set! (-> joint param1) #f) (set! (-> joint param2) #f) (set! (-> this blend) 0.0) - (set! (-> this shutting-down?) #f) - ) + (set! (-> this shutting-down?) #f)) (((joint-mod-handler-mode look-at)) (set! (-> joint param0) joint-mod-look-at-handler) (set! (-> joint param1) this) - (set! (-> joint param2) #f) - ) + (set! (-> joint param2) #f)) (((joint-mod-handler-mode world-look-at)) (set! (-> joint param0) joint-mod-world-look-at-handler) (set! (-> joint param1) this) - (set! (-> joint param2) #f) - ) + (set! (-> joint param2) #f)) (((joint-mod-handler-mode rotate)) (set! (-> joint param0) joint-mod-rotate-handler) (set! (-> joint param1) this) (set! (-> joint param2) #f) - (set! (-> this blend) 1.0) - ) + (set! (-> this blend) 1.0)) (((joint-mod-handler-mode joint-set)) (set! (-> joint param0) joint-mod-joint-set-handler) (set! (-> joint param1) this) @@ -153,8 +135,7 @@ (vector-reset! (-> this trans)) (quaternion-identity! (-> this quat)) (set-vector! (-> this scale) 1.0 1.0 1.0 1.0) - (set! (-> this max-dist) (the-as meters #f)) - ) + (set! (-> this max-dist) (the-as meters #f))) (((joint-mod-handler-mode joint-set*)) (set! (-> joint param0) joint-mod-joint-set*-handler) (set! (-> joint param1) this) @@ -162,80 +143,51 @@ (vector-reset! (-> this trans)) (quaternion-identity! (-> this quat)) (set-vector! (-> this scale) 1.0 1.0 1.0 1.0) - (set! (-> this max-dist) (the-as meters #f)) - ) - ) - ) - this - ) + (set! (-> this max-dist) (the-as meters #f))))) + this) (defmethod reset-blend! ((this joint-mod)) "Reset the blend to 0." (set! (-> this blend) 0.0) - this - ) + this) (defmethod shut-down! ((this joint-mod)) "Shut down and set the blend to zero." (set! (-> this shutting-down?) #t) (set! (-> this blend) 0.0) - (none) - ) + (none)) (defmethod set-twist! ((this joint-mod) (x float) (y float) (z float)) "Set the twist. You can use #f to not change the current value." - (if x - (set! (-> this twist x) x) - ) - (if y - (set! (-> this twist y) y) - ) - (if z - (set! (-> this twist z) z) - ) - (-> this twist) - ) + (if x (set! (-> this twist x) x)) + (if y (set! (-> this twist y) y)) + (if z (set! (-> this twist z) z)) + (-> this twist)) (defmethod set-trs! ((this joint-mod) (trans vector) (rot quaternion) (scale vector)) - (if trans - (set! (-> this trans quad) (-> trans quad)) - ) - (if rot - (quaternion-copy! (-> this quat) rot) - ) - (if scale - (set! (-> this scale quad) (-> scale quad)) - ) + (if trans (set! (-> this trans quad) (-> trans quad))) + (if rot (quaternion-copy! (-> this quat) rot)) + (if scale (set! (-> this scale quad) (-> scale quad))) 0 - (none) - ) + (none)) (defmethod set-target! ((this joint-mod) (target-trans vector)) "Set the joint-mod to look-at if we aren't in a mode, and look at the given target-trans." ;; set mode, if we aren't in one. - (if (= (-> this mode) (joint-mod-handler-mode reset)) - (set-mode! this (joint-mod-handler-mode look-at)) - ) + (if (= (-> this mode) (joint-mod-handler-mode reset)) (set-mode! this (joint-mod-handler-mode look-at))) ;; how far are we from the target? (let ((distance (vector-vector-distance (-> this process root trans) target-trans))) (set! (-> this shutting-down?) #f) (set! (-> this target quad) (-> target-trans quad)) - (if (< distance (-> this max-dist)) - (set! (-> this blend) 1.0) - (set! (-> this blend) 0.0) - ) - ) + (if (< distance (-> this max-dist)) (set! (-> this blend) 1.0) (set! (-> this blend) 0.0))) 0 - (none) - ) + (none)) ;; this type is for storing what we tried to look at last. (deftype try-to-look-at-info (basic) - ((who handle) - (horz float) - (vert float) - ) - ) + ((who handle) + (horz float) + (vert float))) ;; this is the last thing we tried to look at. ;; There's only one global instance of this, likely used by Jak looking at enemies. @@ -244,159 +196,86 @@ (defmethod look-at-enemy! ((this joint-mod) (target-trans vector) (option symbol) (proc process)) "Set up animation for Jak looking at an enemy. If option is 'attacking, remember when this happened. Will only override an existing look-at if this one is closer, or option is 'force." - (when (= option 'attacking) ;; make sure we got a process-drawable (let* ((s3-0 proc) - (proc-drawable (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) - (the-as process-drawable s3-0) - ) - ) - ) + (proc-drawable (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) (the-as process-drawable s3-0)))) (when proc-drawable ;; get enemy fact info (let* ((s0-0 (-> proc-drawable fact)) - (enemy-facts (the-as fact-info-enemy (if (and (nonzero? s0-0) (type-type? (-> s0-0 type) fact-info-enemy)) - (the-as fact-info-enemy s0-0) - ) - ) - ) - ) + (enemy-facts (the-as fact-info-enemy + (if (and (nonzero? s0-0) (type-type? (-> s0-0 type) fact-info-enemy)) (the-as fact-info-enemy s0-0))))) ;; check that we have enemy facts, and that we are within the notice distance - (when (and enemy-facts (< (vector-vector-distance (-> this process root trans) (-> proc-drawable root trans)) - (-> enemy-facts cam-notice-dist) - ) - ) + (when (and enemy-facts + (< (vector-vector-distance (-> this process root trans) (-> proc-drawable root trans)) (-> enemy-facts cam-notice-dist))) ;; success! we consider this a noticed and remember when (set-time! (-> this notice-time)) ;; and update the look at data (set! (-> last-try-to-look-at-data who) (process->handle proc)) ;; not sure what these are yet. (if (< (-> last-try-to-look-at-data vert) (-> enemy-facts cam-vert)) - (set! (-> last-try-to-look-at-data vert) (-> enemy-facts cam-vert)) - ) + (set! (-> last-try-to-look-at-data vert) (-> enemy-facts cam-vert))) (if (< (-> last-try-to-look-at-data horz) (-> enemy-facts cam-horz)) - (set! (-> last-try-to-look-at-data horz) (-> enemy-facts cam-horz)) - ) - ) - ) - ) - ) - ) + (set! (-> last-try-to-look-at-data horz) (-> enemy-facts cam-horz)))))))) (let ((dist (vector-vector-distance (-> this process root trans) target-trans))) (when (and (or (= (-> this blend) 0.0) - (or (< dist (vector-vector-distance (-> this process root trans) (-> this target))) (= option 'force)) - ) - (< dist (-> this max-dist)) - ) - (if (= (-> this mode) (joint-mod-handler-mode reset)) - (set-mode! this (joint-mod-handler-mode look-at)) - ) + (or (< dist (vector-vector-distance (-> this process root trans) (-> this target))) (= option 'force))) + (< dist (-> this max-dist))) + (if (= (-> this mode) (joint-mod-handler-mode reset)) (set-mode! this (joint-mod-handler-mode look-at))) (set! (-> this target quad) (-> target-trans quad)) (set! (-> this blend) 1.0) - (set! (-> this shutting-down?) #f) - ) - ) + (set! (-> this shutting-down?) #f))) 0 - (none) - ) + (none)) (defun joint-mod-look-at-handler ((csp cspace) (xform transformq)) "Update bone transforms for look-at" (local-vars (sv-48 vector) (sv-52 vector) (sv-56 vector)) (let ((gp-0 (the-as joint-mod (-> csp param1)))) (cspace<-parented-transformq-joint! csp xform) - (set! sv-48 (vector-normalize-copy! - (new 'stack-no-clear 'vector) - (-> gp-0 process node-list data 0 bone transform vector 1) - 1.0 - ) - ) + (set! sv-48 + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> gp-0 process node-list data 0 bone transform vector 1) 1.0)) (set! sv-52 (vector-normalize! (-> csp bone transform vector (-> gp-0 nose)) 1.0)) - (set! sv-56 (vector-normalize! - (vector-! (new 'stack-no-clear 'vector) (-> gp-0 target) (-> csp bone transform vector 3)) - 1.0 - ) - ) + (set! sv-56 + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> gp-0 target) (-> csp bone transform vector 3)) 1.0)) (let* ((f30-0 (vector-y-angle sv-52)) (a0-9 (vector-flatten! (new-stack-vector0) sv-56 sv-48)) (f0-0 (vector-y-angle a0-9)) - (f0-1 (deg-diff f30-0 f0-0)) - ) - (if (< (-> gp-0 ignore-angle) (fabs f0-1)) - (set! f0-1 0.0) - ) - (let ((f30-1 - (fmax (fmin (* f0-1 (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max y)) (- (-> gp-0 twist-max y))) - ) - ) - (if (and (-> gp-0 shutting-down?) (= (-> gp-0 twist y) f30-1)) - (set-mode! gp-0 (joint-mod-handler-mode reset)) - ) - (set! (-> gp-0 twist y) (deg-seek (-> gp-0 twist y) f30-1 (* 0.1 (fabs (deg-diff f30-1 (-> gp-0 twist y)))))) - ) - ) + (f0-1 (deg-diff f30-0 f0-0))) + (if (< (-> gp-0 ignore-angle) (fabs f0-1)) (set! f0-1 0.0)) + (let ((f30-1 (fmax (fmin (* f0-1 (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max y)) (- (-> gp-0 twist-max y))))) + (if (and (-> gp-0 shutting-down?) (= (-> gp-0 twist y) f30-1)) (set-mode! gp-0 (joint-mod-handler-mode reset))) + (set! (-> gp-0 twist y) (deg-seek (-> gp-0 twist y) f30-1 (* 0.1 (fabs (deg-diff f30-1 (-> gp-0 twist y)))))))) (let ((v1-15 (-> gp-0 up))) (cond - ((zero? v1-15) - (quaternion-rotate-x! (-> xform quat) (-> xform quat) (-> gp-0 twist y)) - ) - ((= v1-15 1) - (quaternion-rotate-local-y! (-> xform quat) (-> xform quat) (-> gp-0 twist y)) - ) - (else - (quaternion-rotate-z! (-> xform quat) (-> xform quat) (-> gp-0 twist y)) - ) - ) - ) - (let* ((s3-1 (vector-normalize-copy! - (new 'stack-no-clear 'vector) - (the-as vector (-> gp-0 process node-list data 0 bone transform)) - 1.0 - ) - ) + ((zero? v1-15) (quaternion-rotate-x! (-> xform quat) (-> xform quat) (-> gp-0 twist y))) + ((= v1-15 1) (quaternion-rotate-local-y! (-> xform quat) (-> xform quat) (-> gp-0 twist y))) + (else (quaternion-rotate-z! (-> xform quat) (-> xform quat) (-> gp-0 twist y))))) + (let* ((s3-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) + (the-as vector (-> gp-0 process node-list data 0 bone transform)) + 1.0)) (f30-2 (vector-x-angle sv-52)) (s3-2 (vector-flatten! (new-stack-vector0) sv-56 s3-1)) (f0-15 (vector-x-angle s3-2)) - (f0-21 (fmax - (fmin (* (- (deg-diff f30-2 f0-15)) (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max x)) - (- (-> gp-0 twist-max x)) - ) - ) - ) - (if (< (vector-dot s3-2 sv-52) 0.1) - (set! f0-21 0.0) - ) - (set! (-> gp-0 twist x) (deg-seek (-> gp-0 twist x) f0-21 (* 0.1 (fabs (deg-diff f0-21 (-> gp-0 twist x)))))) - ) + (f0-21 (fmax (fmin (* (- (deg-diff f30-2 f0-15)) (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max x)) + (- (-> gp-0 twist-max x))))) + (if (< (vector-dot s3-2 sv-52) 0.1) (set! f0-21 0.0)) + (set! (-> gp-0 twist x) (deg-seek (-> gp-0 twist x) f0-21 (* 0.1 (fabs (deg-diff f0-21 (-> gp-0 twist x))))))) (let ((v1-27 (-> gp-0 ear))) (cond - ((zero? v1-27) - (quaternion-rotate-x! (-> xform quat) (-> xform quat) (-> gp-0 twist x)) - ) - ((= v1-27 1) - (quaternion-rotate-local-y! (-> xform quat) (-> xform quat) (-> gp-0 twist x)) - ) - (else - (quaternion-rotate-z! (-> xform quat) (-> xform quat) (-> gp-0 twist x)) - ) - ) - ) + ((zero? v1-27) (quaternion-rotate-x! (-> xform quat) (-> xform quat) (-> gp-0 twist x))) + ((= v1-27 1) (quaternion-rotate-local-y! (-> xform quat) (-> xform quat) (-> gp-0 twist x))) + (else (quaternion-rotate-z! (-> xform quat) (-> xform quat) (-> gp-0 twist x))))) (cspace<-parented-transformq-joint! csp xform) (if (and (= (-> gp-0 process type) target) (!= (-> gp-0 blend) 0.0)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> gp-0 target) - 819.2 - "look" - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + (-> gp-0 target) + 819.2 + "look" + (new 'static 'rgba :r #xff :g #xff :a #x80)))) 0 - (none) - ) + (none)) (defun joint-mod-world-look-at-handler ((arg0 cspace) (arg1 transformq)) (local-vars (sv-48 vector) (sv-52 vector) (sv-56 vector)) @@ -404,163 +283,92 @@ (let ((s5-0 (-> arg0 bone transform))) (cspace<-parented-transformq-joint! arg0 arg1) (set! sv-48 - (vector-normalize-copy! - (new 'stack-no-clear 'vector) - (-> gp-0 process node-list data 0 bone transform vector 1) - 1.0 - ) - ) + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> gp-0 process node-list data 0 bone transform vector 1) 1.0)) (set! sv-52 (vector-normalize! (-> s5-0 vector (-> gp-0 nose)) 1.0)) - (set! sv-56 - (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> gp-0 target) (-> s5-0 vector 3)) 1.0) - ) + (set! sv-56 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> gp-0 target) (-> s5-0 vector 3)) 1.0)) (let* ((f30-0 (vector-y-angle sv-52)) (a0-7 (vector-flatten! (new-stack-vector0) sv-56 sv-48)) (f0-0 (vector-y-angle a0-7)) - (f0-1 (deg-diff f30-0 f0-0)) - ) - (if (< (-> gp-0 ignore-angle) (fabs f0-1)) - (set! f0-1 0.0) - ) - (let ((f0-5 - (fmax (fmin (* f0-1 (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max y)) (- (-> gp-0 twist-max y))) - ) - ) - (set! (-> gp-0 twist y) - (deg-seek (-> gp-0 twist y) f0-5 (fmax 1.0 (* 0.1 (fabs (deg-diff f0-5 (-> gp-0 twist y)))))) - ) - ) - ) + (f0-1 (deg-diff f30-0 f0-0))) + (if (< (-> gp-0 ignore-angle) (fabs f0-1)) (set! f0-1 0.0)) + (let ((f0-5 (fmax (fmin (* f0-1 (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max y)) (- (-> gp-0 twist-max y))))) + (set! (-> gp-0 twist y) (deg-seek (-> gp-0 twist y) f0-5 (fmax 1.0 (* 0.1 (fabs (deg-diff f0-5 (-> gp-0 twist y))))))))) (when (!= (-> gp-0 twist y) 0.0) (let ((a2-3 (matrix-rotate-y! (new 'stack-no-clear 'matrix) (-> gp-0 twist y))) - (s4-2 (-> s5-0 vector 3 quad)) - ) + (s4-2 (-> s5-0 vector 3 quad))) (matrix*! s5-0 s5-0 a2-3) - (set! (-> s5-0 vector 3 quad) s4-2) - ) - ) - (let* ((s4-3 - (vector-normalize-copy! - (new 'stack-no-clear 'vector) - (the-as vector (-> gp-0 process node-list data 0 bone transform)) - 1.0 - ) - ) + (set! (-> s5-0 vector 3 quad) s4-2))) + (let* ((s4-3 (vector-normalize-copy! (new 'stack-no-clear 'vector) + (the-as vector (-> gp-0 process node-list data 0 bone transform)) + 1.0)) (f30-2 (vector-x-angle sv-52)) (s4-4 (vector-flatten! (new-stack-vector0) sv-56 s4-3)) (f0-14 (vector-x-angle s4-4)) - (f0-20 - (fmax - (fmin (* (- (deg-diff f30-2 f0-14)) (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max x)) - (- (-> gp-0 twist-max x)) - ) - ) - ) - (if (< (vector-dot s4-4 sv-52) 0.1) - (set! f0-20 0.0) - ) - (set! (-> gp-0 twist x) - (deg-seek (-> gp-0 twist x) f0-20 (fmax 1.0 (* 0.1 (fabs (deg-diff f0-20 (-> gp-0 twist x)))))) - ) - ) + (f0-20 (fmax (fmin (* (- (deg-diff f30-2 f0-14)) (-> gp-0 blend) (-> gp-0 flex-blend)) (-> gp-0 twist-max x)) + (- (-> gp-0 twist-max x))))) + (if (< (vector-dot s4-4 sv-52) 0.1) (set! f0-20 0.0)) + (set! (-> gp-0 twist x) (deg-seek (-> gp-0 twist x) f0-20 (fmax 1.0 (* 0.1 (fabs (deg-diff f0-20 (-> gp-0 twist x)))))))) (when (!= (-> gp-0 twist x) 0.0) (let* ((v1-20 (-> gp-0 ear)) (a1-17 ((cond - ((zero? v1-20) - matrix-rotate-x! - ) - ((= v1-20 1) - matrix-rotate-y! - ) - (else - matrix-rotate-z! - ) - ) + ((zero? v1-20) matrix-rotate-x!) + ((= v1-20 1) matrix-rotate-y!) + (else matrix-rotate-z!)) (new 'stack-no-clear 'matrix) - (-> gp-0 twist x) - ) - ) - ) - (matrix*! s5-0 a1-17 s5-0) - ) - ) - ) + (-> gp-0 twist x)))) + (matrix*! s5-0 a1-17 s5-0)))) (if (and (= (-> gp-0 process type) target) (!= (-> gp-0 blend) 0.0)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> gp-0 target) - 819.2 - "look" - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + (-> gp-0 target) + 819.2 + "look" + (new 'static 'rgba :r #xff :g #xff :a #x80)))) 0 - (none) - ) + (none)) (defun joint-mod-rotate-handler ((arg0 cspace) (arg1 transformq)) (let ((s4-0 (the-as joint-mod (-> arg0 param1))) - (s3-0 (new 'static 'inline-array vector 3 - (new 'static 'vector :x 1.0 :w 1.0) - (new 'static 'vector :y 1.0 :w 1.0) - (new 'static 'vector :z 1.0 :w 1.0) - ) - ) - ) + (s3-0 (new 'static + 'inline-array + vector + 3 + (new 'static 'vector :x 1.0 :w 1.0) + (new 'static 'vector :y 1.0 :w 1.0) + (new 'static 'vector :z 1.0 :w 1.0)))) (let* ((v1-2 (-> s3-0 (-> s4-0 ear))) - (a1-2 (quaternion-axis-angle! - (new 'stack-no-clear 'quaternion) - (-> v1-2 x) - (-> v1-2 y) - (-> v1-2 z) - (* (-> s4-0 twist x) (-> s4-0 blend) (-> s4-0 flex-blend)) - ) - ) - ) - (quaternion-normalize! (quaternion*! (-> arg1 quat) a1-2 (-> arg1 quat))) - ) + (a1-2 (quaternion-axis-angle! (new 'stack-no-clear 'quaternion) + (-> v1-2 x) + (-> v1-2 y) + (-> v1-2 z) + (* (-> s4-0 twist x) (-> s4-0 blend) (-> s4-0 flex-blend))))) + (quaternion-normalize! (quaternion*! (-> arg1 quat) a1-2 (-> arg1 quat)))) (let* ((v1-6 (-> s3-0 (-> s4-0 up))) - (a1-4 (quaternion-axis-angle! - (new 'stack-no-clear 'quaternion) - (-> v1-6 x) - (-> v1-6 y) - (-> v1-6 z) - (* (-> s4-0 twist y) (-> s4-0 blend) (-> s4-0 flex-blend)) - ) - ) - ) - (quaternion-normalize! (quaternion*! (-> arg1 quat) a1-4 (-> arg1 quat))) - ) + (a1-4 (quaternion-axis-angle! (new 'stack-no-clear 'quaternion) + (-> v1-6 x) + (-> v1-6 y) + (-> v1-6 z) + (* (-> s4-0 twist y) (-> s4-0 blend) (-> s4-0 flex-blend))))) + (quaternion-normalize! (quaternion*! (-> arg1 quat) a1-4 (-> arg1 quat)))) (let* ((v1-10 (-> s3-0 (-> s4-0 nose))) - (a1-6 (quaternion-axis-angle! - (new 'stack-no-clear 'quaternion) - (-> v1-10 x) - (-> v1-10 y) - (-> v1-10 z) - (* (-> s4-0 twist z) (-> s4-0 blend) (-> s4-0 flex-blend)) - ) - ) - ) - (quaternion-normalize! (quaternion*! (-> arg1 quat) a1-6 (-> arg1 quat))) - ) - ) + (a1-6 (quaternion-axis-angle! (new 'stack-no-clear 'quaternion) + (-> v1-10 x) + (-> v1-10 y) + (-> v1-10 z) + (* (-> s4-0 twist z) (-> s4-0 blend) (-> s4-0 flex-blend))))) + (quaternion-normalize! (quaternion*! (-> arg1 quat) a1-6 (-> arg1 quat))))) (cspace<-parented-transformq-joint! arg0 arg1) 0 - (none) - ) + (none)) (defun joint-mod-joint-set-handler ((arg0 cspace) (arg1 transformq)) (let ((s4-0 (the-as joint-mod (-> arg0 param1)))) (set! (-> arg1 trans quad) (-> s4-0 trans quad)) (quaternion-copy! (-> arg1 quat) (-> s4-0 quat)) - (set! (-> arg1 scale quad) (-> s4-0 scale quad)) - ) + (set! (-> arg1 scale quad) (-> s4-0 scale quad))) (cspace<-parented-transformq-joint! arg0 arg1) 0 - (none) - ) + (none)) (defun joint-mod-joint-set*-handler ((arg0 cspace) (arg1 transformq)) (let ((s5-0 (the-as joint-mod (-> arg0 param1)))) @@ -568,45 +376,38 @@ (quaternion-normalize! (quaternion*! (-> arg1 quat) (-> arg1 quat) (-> s5-0 quat))) (vector*! (-> arg1 scale) (-> arg1 scale) (-> s5-0 scale)) (cspace<-parented-transformq-joint! arg0 arg1) - (if (-> s5-0 max-dist) - (set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0) - ) - ) + (if (-> s5-0 max-dist) (set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0))) 0 - (none) - ) - -(define *joint-axis-vectors* (new 'static 'inline-array vector 6 - (new 'static 'vector :x 1.0 :w 1.0) - (new 'static 'vector :y 1.0 :w 1.0) - (new 'static 'vector :z 1.0 :w 1.0) - (new 'static 'vector :x -1.0 :w 1.0) - (new 'static 'vector :y -1.0 :w 1.0) - (new 'static 'vector :z -1.0 :w 1.0) - ) - ) + (none)) + +(define *joint-axis-vectors* + (new 'static + 'inline-array + vector + 6 + (new 'static 'vector :x 1.0 :w 1.0) + (new 'static 'vector :y 1.0 :w 1.0) + (new 'static 'vector :z 1.0 :w 1.0) + (new 'static 'vector :x -1.0 :w 1.0) + (new 'static 'vector :y -1.0 :w 1.0) + (new 'static 'vector :z -1.0 :w 1.0))) ;; These joint-mod types contain a bit of extra state required for special types of joint-mods (deftype joint-mod-wheel (basic) - ((last-position vector :inline) - (angle float) - (process process-drawable) - (wheel-radius float) - (wheel-axis int8) - ) + ((last-position vector :inline) + (angle float) + (process process-drawable) + (wheel-radius float) + (wheel-axis int8)) (:methods - (new (symbol type process-drawable int float int) _type_) - ) - ) - + (new (symbol type process-drawable int float int) _type_))) (defun joint-mod-wheel-callback ((arg0 cspace) (arg1 transformq)) (let ((s4-0 (the-as joint-mod-wheel (-> arg0 param1)))) (let ((v1-1 (-> s4-0 process root)) (s1-0 (new-stack-vector0)) (s3-0 (new-stack-vector0)) - (s2-0 (new-stack-vector0)) - ) + (s2-0 (new-stack-vector0))) 0.0 0.0 (vector-z-quaternion! s2-0 (-> v1-1 quat)) @@ -616,16 +417,11 @@ (let* ((f0-3 (vector-dot s2-0 s3-0)) (f1-0 65536.0) (f2-1 (* 6.28318 (-> s4-0 wheel-radius))) - (f0-4 (* f1-0 (/ 1.0 f2-1) f0-3)) - ) - (+! (-> s4-0 angle) f0-4) - ) - ) - (quaternion-vector-angle! (-> arg1 quat) (-> *joint-axis-vectors* (-> s4-0 wheel-axis)) (-> s4-0 angle)) - ) + (f0-4 (* f1-0 (/ 1.0 f2-1) f0-3))) + (+! (-> s4-0 angle) f0-4))) + (quaternion-vector-angle! (-> arg1 quat) (-> *joint-axis-vectors* (-> s4-0 wheel-axis)) (-> s4-0 angle))) (cspace<-parented-transformq-joint! arg0 arg1) - (none) - ) + (none)) (defmethod new joint-mod-wheel ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 int) (arg2 float) (arg3 int)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -636,56 +432,30 @@ (set-vector! (-> v0-0 last-position) 0.0 0.0 0.0 1.0) (let ((v1-5 (-> arg0 node-list data arg1))) (set! (-> v1-5 param0) joint-mod-wheel-callback) - (set! (-> v1-5 param1) v0-0) - ) - v0-0 - ) - ) + (set! (-> v1-5 param1) v0-0)) + v0-0)) (deftype joint-mod-set-local (basic) - ((transform transformq :inline) - (set-rotation symbol) - (set-scale symbol) - (set-translation symbol) - (enable symbol) - ) + ((transform transformq :inline) + (set-rotation symbol) + (set-scale symbol) + (set-translation symbol) + (enable symbol)) (:methods - (new (symbol type process-drawable int symbol symbol symbol) _type_) - ) - ) - + (new (symbol type process-drawable int symbol symbol symbol) _type_))) (defun joint-mod-set-local-callback ((arg0 cspace) (arg1 transformq)) (let ((v1-0 (the-as joint-mod-set-local (-> arg0 param1)))) (cond ((-> v1-0 enable) - (if (not (-> v1-0 set-translation)) - (set! (-> v1-0 transform trans quad) (-> arg1 trans quad)) - ) - (if (not (-> v1-0 set-rotation)) - (set! (-> v1-0 transform quat vec quad) (-> arg1 quat vec quad)) - ) - (if (not (-> v1-0 set-scale)) - (set! (-> v1-0 transform scale quad) (-> arg1 scale quad)) - ) - (cspace<-parented-transformq-joint! arg0 (-> v1-0 transform)) - ) - (else - (cspace<-parented-transformq-joint! arg0 arg1) - ) - ) - ) - (none) - ) - -(defmethod new joint-mod-set-local ((allocation symbol) - (type-to-make type) - (arg0 process-drawable) - (arg1 int) - (arg2 symbol) - (arg3 symbol) - (arg4 symbol) - ) + (if (not (-> v1-0 set-translation)) (set! (-> v1-0 transform trans quad) (-> arg1 trans quad))) + (if (not (-> v1-0 set-rotation)) (set! (-> v1-0 transform quat vec quad) (-> arg1 quat vec quad))) + (if (not (-> v1-0 set-scale)) (set! (-> v1-0 transform scale quad) (-> arg1 scale quad))) + (cspace<-parented-transformq-joint! arg0 (-> v1-0 transform))) + (else (cspace<-parented-transformq-joint! arg0 arg1)))) + (none)) + +(defmethod new joint-mod-set-local ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 symbol) (arg4 symbol)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> v0-0 set-translation) arg2) (set! (-> v0-0 set-rotation) arg3) @@ -696,32 +466,20 @@ (set! (-> v0-0 transform scale quad) (-> *identity-vector* quad)) (let ((v1-8 (-> arg0 node-list data arg1))) (set! (-> v1-8 param0) joint-mod-set-local-callback) - (set! (-> v1-8 param1) v0-0) - ) - v0-0 - ) - ) + (set! (-> v1-8 param1) v0-0)) + v0-0)) (deftype joint-mod-set-world (basic) - ((transform transformq :inline) - (node-index int32) - (enable basic) - ) + ((transform transformq :inline) + (node-index int32) + (enable basic)) (:methods - (new (symbol type process-drawable int basic) _type_) - ) - ) - + (new (symbol type process-drawable int basic) _type_))) (defun joint-mod-set-world-callback ((arg0 cspace) (arg1 transformq)) (let ((v1-0 (the-as joint-mod-set-world (-> arg0 param1)))) - (if (-> v1-0 enable) - (cspace<-transformq! arg0 (-> v1-0 transform)) - (cspace<-parented-transformq-joint! arg0 arg1) - ) - ) - (none) - ) + (if (-> v1-0 enable) (cspace<-transformq! arg0 (-> v1-0 transform)) (cspace<-parented-transformq-joint! arg0 arg1))) + (none)) (defmethod new joint-mod-set-world ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 int) (arg2 basic)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -732,46 +490,31 @@ (set! (-> v0-0 transform scale quad) (-> *identity-vector* quad)) (let ((v1-7 (-> arg0 node-list data arg1))) (set! (-> v1-7 param0) joint-mod-set-world-callback) - (set! (-> v1-7 param1) v0-0) - ) - v0-0 - ) - ) + (set! (-> v1-7 param1) v0-0)) + v0-0)) (deftype joint-mod-blend-local (basic) - ((transform transformq :inline) - (blend-transform transformq :inline) - (node-index int32) - (blend float) - (enable basic) - ) + ((transform transformq :inline) + (blend-transform transformq :inline) + (node-index int32) + (blend float) + (enable basic)) (:methods - (new (symbol type process-drawable int basic) _type_) - ) - ) - + (new (symbol type process-drawable int basic) _type_))) (defun joint-mod-blend-local-callback ((arg0 cspace) (arg1 transformq)) (let ((gp-0 (the-as joint-mod-blend-local (-> arg0 param1)))) (cond ((-> gp-0 enable) - (vector-lerp! - (the-as vector (-> gp-0 blend-transform)) - (-> arg1 trans) - (the-as vector (-> gp-0 transform)) - (-> gp-0 blend) - ) + (vector-lerp! (the-as vector (-> gp-0 blend-transform)) + (-> arg1 trans) + (the-as vector (-> gp-0 transform)) + (-> gp-0 blend)) (vector-lerp! (-> gp-0 blend-transform scale) (-> arg1 scale) (-> gp-0 transform scale) (-> gp-0 blend)) (quaternion-slerp! (-> gp-0 blend-transform quat) (-> arg1 quat) (-> gp-0 transform quat) (-> gp-0 blend)) - (cspace<-parented-transformq-joint! arg0 (-> gp-0 blend-transform)) - ) - (else - (cspace<-parented-transformq-joint! arg0 arg1) - ) - ) - ) - (none) - ) + (cspace<-parented-transformq-joint! arg0 (-> gp-0 blend-transform))) + (else (cspace<-parented-transformq-joint! arg0 arg1)))) + (none)) (defmethod new joint-mod-blend-local ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 int) (arg2 basic)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -783,42 +526,27 @@ (set! (-> v0-0 transform scale quad) (-> *identity-vector* quad)) (let ((v1-7 (-> arg0 node-list data arg1))) (set! (-> v1-7 param0) joint-mod-blend-local-callback) - (set! (-> v1-7 param1) v0-0) - ) - v0-0 - ) - ) + (set! (-> v1-7 param1) v0-0)) + v0-0)) (deftype joint-mod-spinner (basic) - ((spin-axis vector :inline) - (angle float) - (spin-rate float) - (enable basic) - ) + ((spin-axis vector :inline) + (angle float) + (spin-rate float) + (enable basic)) (:methods - (new (symbol type process-drawable int vector float) _type_) - ) - ) - + (new (symbol type process-drawable int vector float) _type_))) (defun joint-mod-spinner-callback ((arg0 cspace) (arg1 transformq)) (let ((gp-0 (the-as joint-mod-spinner (-> arg0 param1)))) (when (-> gp-0 enable) (let ((f30-0 (+ (-> gp-0 angle) (* (-> gp-0 spin-rate) (seconds-per-frame))))) - (if (< 32768.0 f30-0) - (set! f30-0 (+ -65536.0 f30-0)) - ) - (if (< f30-0 -32768.0) - (set! f30-0 (+ 65536.0 f30-0)) - ) + (if (< 32768.0 f30-0) (set! f30-0 (+ -65536.0 f30-0))) + (if (< f30-0 -32768.0) (set! f30-0 (+ 65536.0 f30-0))) (quaternion-vector-angle! (-> arg1 quat) (-> gp-0 spin-axis) f30-0) - (set! (-> gp-0 angle) f30-0) - ) - ) - ) + (set! (-> gp-0 angle) f30-0)))) (cspace<-parented-transformq-joint! arg0 arg1) - (none) - ) + (none)) (defmethod new joint-mod-spinner ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 int) (arg2 vector) (arg3 float)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -828,8 +556,5 @@ (set! (-> v0-0 angle) 0.0) (let ((v1-6 (-> arg0 node-list data arg1))) (set! (-> v1-6 param0) joint-mod-spinner-callback) - (set! (-> v1-6 param1) v0-0) - ) - v0-0 - ) - ) + (set! (-> v1-6 param1) v0-0)) + v0-0)) diff --git a/goal_src/jak1/engine/anim/joint.gc b/goal_src/jak1/engine/anim/joint.gc index a8a2982054..71d216530d 100644 --- a/goal_src/jak1/engine/anim/joint.gc +++ b/goal_src/jak1/engine/anim/joint.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/res.gc") (require "engine/gfx/background/subdivide-h.gc") (require "engine/math/transformq.gc") @@ -10,10 +9,6 @@ (require "engine/anim/mspace-h.gc") (require "engine/game/game-h.gc") -;; name: joint.gc -;; name in dgo: joint -;; dgos: GAME, ENGINE - ;; a joint is just used to store the tree structure of a skeleton + bind pose. ;; it's mostly used as a more user-friendly interface @@ -28,22 +23,19 @@ ;; request to decompress data from an animation (deftype joint-decomp-request (structure) - ((jacc joint-anim-compressed-control) - (frame int) + ((jacc joint-anim-compressed-control) + (frame int) (frame-interp float) - (amount float)) - ) + (amount float))) (deftype blend-tree-stack-frame (structure) ((weights float 24) - (quads vector 6 :inline :overlay-at weights)) - ) + (quads vector 6 :inline :overlay-at weights))) (deftype new-joint-decompressor-work (structure) - ((requests joint-decomp-request 24 :inline) + ((requests joint-decomp-request 24 :inline) (num-requests int32) - (blend-stack blend-tree-stack-frame 4 :inline) - ) + (blend-stack blend-tree-stack-frame 4 :inline)) (:methods (eval-blend-tree! (_type_ joint-control) none) (output-blend-tree! (_type_ joint-control) none) @@ -51,50 +43,38 @@ (init-frame! (_type_ joint-anim-frame int) none) (process-request! (_type_ joint-decomp-request joint-anim-frame int) none) (process-requests! (_type_ joint-anim-frame int) none) - (finalize-frame! (_type_ joint-anim-frame int) none) - ) - ) + (finalize-frame! (_type_ joint-anim-frame int) none))) (define *new-joint-decompressor-work* (new 'global 'new-joint-decompressor-work)) (defun new-joint-decompressor ((dst joint-anim-frame) (num-joints int) (jc joint-control)) "Decompress a joint animation!" - ;; determine anim weights, write them out to the joint-control for other stuff to see. (eval-blend-tree! *new-joint-decompressor-work* jc) (output-blend-tree! *new-joint-decompressor-work* jc) - ;; figure out which animations need decompression (build-requests! *new-joint-decompressor-work* jc) - ;; run the decompression (init-frame! *new-joint-decompressor-work* dst num-joints) (process-requests! *new-joint-decompressor-work* dst num-joints) (finalize-frame! *new-joint-decompressor-work* dst num-joints) - - (none) - ) + (none)) (defmethod eval-blend-tree! ((this new-joint-decompressor-work) (jc joint-control)) "Evaluate weights of all channels, producing the final per-animation weights in the first stack-frame." - (let ((num-channels (-> jc active-channels)) - (stack-top 0) - ) + (stack-top 0)) (when (> num-channels 24) (break!) ;; insufficient weights per stack frame ) - ;; loop over channels (dotimes (chan-idx num-channels) (let ((chan (-> jc channel chan-idx))) (case (-> chan command) - (('push) ;; push new anim to stack frame (when (> stack-top 4) (break!) ;; insufficient stack frames. ) - ;; init all weights to zero: (let ((new-frame (-> this blend-stack stack-top))) (vector-zero! (-> new-frame quads 0)) @@ -104,18 +84,15 @@ (vector-zero! (-> new-frame quads 4)) (vector-zero! (-> new-frame quads 5)) ;; except for this channel - (set! (-> new-frame weights chan-idx) 1.0) - ) + (set! (-> new-frame weights chan-idx) 1.0)) (+! stack-top 1) ;; bump stack pointer! ) - ;; blend case: note that push1/stack1 always are a pair, so we can treat push1 as blend and ignore ;; the stack1 as an optimization. (('blend 'push1) (let* ((sf (-> this blend-stack (- stack-top 1))) ;; modify most recent stack frame (new-weight (-> chan frame-interp)) (old-weight (- 1.0 new-weight))) - ;; do the multiplies: (rlet ((temp :class vf) (weight-vec :class vf)) @@ -123,21 +100,14 @@ (dotimes (i 6) (.lvf temp (&-> sf quads i quad)) (.mul.x.vf temp temp weight-vec) - (.svf (&-> sf quads i quad) temp) - ) - (+! (-> sf weights chan-idx) new-weight) - ) - ) - ) - + (.svf (&-> sf quads i quad) temp)) + (+! (-> sf weights chan-idx) new-weight)))) ;; stack case: pop two frames, add together, push result. (('stack) (let* ((sf0 (-> this blend-stack (- stack-top 1))) (sf1 (-> this blend-stack (- stack-top 2))) (weight0 (-> chan frame-interp)) (weight1 (- 1.0 weight0))) - - (rlet ((temp0 :class vf) (temp1 :class vf) (weight0-vec :class vf) @@ -150,153 +120,105 @@ (.mul.x.vf temp0 temp0 weight0-vec) (.mul.x.vf temp1 temp1 weight1-vec) (.add.vf temp0 temp0 temp1) - (.svf (&-> sf1 quads i quad) temp0) - ) - ) + (.svf (&-> sf1 quads i quad) temp0))) (-! stack-top 1) ;; pop stack frame - ) - ) - - ) - ) - ) - ) - - (none) - ) + )))))) + (none)) (defmethod output-blend-tree! ((this new-joint-decompressor-work) (jc joint-control)) "Copy result of the blend tree evaluation into the joint-control." (let ((num-channels (-> jc active-channels))) (dotimes (chan-idx num-channels) - (set! (-> jc channel chan-idx inspector-amount) (-> this blend-stack 0 weights chan-idx)) - ) - ) - (none) - ) - - + (set! (-> jc channel chan-idx inspector-amount) (-> this blend-stack 0 weights chan-idx)))) + (none)) (defmethod build-requests! ((this new-joint-decompressor-work) (jc joint-control)) "Use the anim weights computed by eval-blend-tree! to build decompression requests" - (set! (-> this num-requests) 0) - (let ((num-channels (-> jc active-channels))) (dotimes (chan-idx num-channels) (let ((weight (-> this blend-stack 0 weights chan-idx)) (chan (-> jc channel chan-idx))) (when (> weight 0.001) ;; only both if weight is nonzero (let* ((req (-> this requests (-> this num-requests))) ;; request to create - (jacc (-> chan frame-group frames)) ;; compressed animation - (frame-num (-> chan frame-num)) ;; floating-point frame (eg 1.23) - (base-frame (the int frame-num)) ;; integer round-down frame (eg 1) + (jacc (-> chan frame-group frames)) ;; compressed animation + (frame-num (-> chan frame-num)) ;; floating-point frame (eg 1.23) + (base-frame (the int frame-num)) ;; integer round-down frame (eg 1) (frac-frame (- frame-num (the float base-frame))) ;; interp to next frame (eg 0.23) - (last-frame (the int (- (-> jacc num-frames) 1))) - ) + (last-frame (the int (- (-> jacc num-frames) 1)))) (+! (-> this num-requests) 1) - ;; check our frame group is valid ;; TODO - ;; make sure we didn't go off the end of the animation: (when (>= base-frame last-frame) (set! frac-frame 0.0) - (set! base-frame last-frame) - ) - + (set! base-frame last-frame)) ;; set up request (set! (-> req jacc) jacc) (set! (-> req frame) base-frame) (set! (-> req frame-interp) frac-frame) - (set! (-> req amount) weight) - ) - ) - ) - ) - ) - (none) - ) + (set! (-> req amount) weight)))))) + (none)) (defmethod init-frame! ((this new-joint-decompressor-work) (output-frame joint-anim-frame) (num-joints int)) "Initialize an output frame by zeroing the data." (let ((num-qwc 8) ;; 2x matrix, each 4 qw (data (the (pointer uint128) output-frame))) (when (> num-joints 2) ;; we have transformq's - (+! num-qwc (* 3 (- num-joints 2))) - ) - + (+! num-qwc (* 3 (- num-joints 2)))) (let ((data-end (&+ data (* num-qwc 16)))) (rlet ((zero :class vf)) (.xor.vf zero zero zero) (while (!= data data-end) ;; this loop is 5 instructions :) (.svf data zero) - (&+! data 16) - ) - ) - ) - - ) - (none) - ) + (&+! data 16))))) + (none)) (defmethod process-requests! ((this new-joint-decompressor-work) (output-frame joint-anim-frame) (num-joints int)) "Decompress all pending animation requests." (dotimes (i (-> this num-requests)) - (process-request! this (-> this requests i) output-frame num-joints) - ) + (process-request! this (-> this requests i) output-frame num-joints)) (set! (-> this num-requests) 0) - (none) - ) + (none)) (defmacro fderef-s16 (ptr) - `(the float (-> (the (pointer int16) ,ptr))) - ) + `(the float (-> (the (pointer int16) ,ptr)))) (defmacro deref-f32 (ptr) - `(-> (the (pointer float) ,ptr)) - ) + `(-> (the (pointer float) ,ptr))) (defconstant QUAT_SCALE 0.000030517578125) + (defconstant SCALE_SCALE 0.000244140625) (defun add-scaled-matrix! ((dest matrix) (src matrix) (scale float)) (dotimes (i 16) - (+! (-> dest data i) (* scale (-> src data i))) - ) - ) + (+! (-> dest data i) (* scale (-> src data i))))) (defun decomp-fixed ((output-frame joint-anim-frame) (num-joints int) (anim joint-anim-compressed-fixed) (amount float)) "Decompress the fixed part." - (let* ((mbits (-> anim hdr matrix-bits)) (data (the pointer (&-> anim data 0 quad))) (data64 (the (pointer uint64) (&+ data (-> anim offset-64)))) (data32 (the (pointer uint32) (&+ data (-> anim offset-32)))) (data16 (the (pointer uint16) (&+ data (-> anim offset-16)))) - (ctrl-ptr (-> anim hdr control-bits)) - ) + (ctrl-ptr (-> anim hdr control-bits))) ;; process matrix: (when (zero? (logand mbits 1)) ;; matrix comes from fixed data (add-scaled-matrix! (-> output-frame matrices 0) (the matrix data64) amount) - (&+! data64 64) - ) - + (&+! data64 64)) (when (zero? (logand mbits 2)) ;; matrix comes from fixed data (add-scaled-matrix! (-> output-frame matrices 1) (the matrix data64) amount) - (&+! data64 64) - ) - + (&+! data64 64)) ;; process tq's (dotimes (tqi num-joints) ;; TODO - not sure if this is too many?? (let* ((ctrl-idx (/ tqi 8)) (ctrl-shift (* 4 (mod tqi 8))) (ctrl (logand #b1111 (sar (-> ctrl-ptr ctrl-idx) ctrl-shift))) ;(tq (-> output-frame data tqi)) - (tq (-> (the (inline-array transformq) (-> output-frame data)) tqi)) - ) + (tq (-> (the (inline-array transformq) (-> output-frame data)) tqi))) ;; TRANS (when (zero? (logand ctrl #b0001)) ;; we have trans @@ -308,8 +230,7 @@ (+! (-> tq trans y) (* amount (deref-f32 data64))) (&+! data64 4) (+! (-> tq trans z) (* amount (deref-f32 data32))) - (&+! data32 4) - ) + (&+! data32 4)) (else ;; little trans (+! (-> tq trans x) (* amount (fderef-s16 data32) 4.)) @@ -317,18 +238,18 @@ (+! (-> tq trans y) (* amount (fderef-s16 data32) 4.)) (&+! data32 2) (+! (-> tq trans z) (* amount (fderef-s16 data16) 4.)) - (&+! data16 2) - ) - ) - ) + (&+! data16 2)))) ;; QUAT (when (zero? (logand ctrl #b0010)) (let ((temp (new 'stack-no-clear 'vector))) - (set! (-> temp x) (fderef-s16 data64)) (&+! data64 2) - (set! (-> temp y) (fderef-s16 data64)) (&+! data64 2) - (set! (-> temp z) (fderef-s16 data64)) (&+! data64 2) - (set! (-> temp w) (fderef-s16 data64)) (&+! data64 2) - + (set! (-> temp x) (fderef-s16 data64)) + (&+! data64 2) + (set! (-> temp y) (fderef-s16 data64)) + (&+! data64 2) + (set! (-> temp z) (fderef-s16 data64)) + (&+! data64 2) + (set! (-> temp w) (fderef-s16 data64)) + (&+! data64 2) (let ((dot (+ (* (-> temp x) (-> tq quat x)) (* (-> temp y) (-> tq quat y)) (* (-> temp z) (-> tq quat z)) @@ -337,15 +258,11 @@ (*! (-> temp x) -1.) (*! (-> temp y) -1.) (*! (-> temp z) -1.) - (*! (-> temp w) -1.) - ) + (*! (-> temp w) -1.)) (+! (-> tq quat x) (* amount (-> temp x) QUAT_SCALE)) (+! (-> tq quat y) (* amount (-> temp y) QUAT_SCALE)) (+! (-> tq quat z) (* amount (-> temp z) QUAT_SCALE)) - (+! (-> tq quat w) (* amount (-> temp w) QUAT_SCALE)) - ) - ) - ) + (+! (-> tq quat w) (* amount (-> temp w) QUAT_SCALE))))) ;; SCALE (when (zero? (logand ctrl #b0100)) (+! (-> tq scale x) (* amount (fderef-s16 data32) SCALE_SCALE)) @@ -353,47 +270,37 @@ (+! (-> tq scale y) (* amount (fderef-s16 data32) SCALE_SCALE)) (&+! data32 2) (+! (-> tq scale z) (* amount (fderef-s16 data16) SCALE_SCALE)) - (&+! data16 2) - ) - ) - ) - ) - - (none) - ) - -(defun decomp-frame ((output-frame joint-anim-frame) (num-joints int) (anim joint-anim-compressed-frame) (amount float) (hdr joint-anim-compressed-hdr)) + (&+! data16 2))))) + (none)) + +(defun decomp-frame ((output-frame joint-anim-frame) + (num-joints int) + (anim joint-anim-compressed-frame) + (amount float) + (hdr joint-anim-compressed-hdr)) "Decompress the fixed part." - (let* ((mbits (-> hdr matrix-bits)) (data (the pointer (-> anim data))) (data64 (the (pointer uint64) (&+ data (-> anim offset-64)))) (data32 (the (pointer uint32) (&+ data (-> anim offset-32)))) (data16 (the (pointer uint16) (&+ data (-> anim offset-16)))) - (ctrl-ptr (-> hdr control-bits)) - ) + (ctrl-ptr (-> hdr control-bits))) ;; process matrix: (when (nonzero? (logand mbits 1)) ;; matrix comes from fixed data (add-scaled-matrix! (-> output-frame matrices 0) (the matrix data64) amount) - (&+! data64 64) - ) - + (&+! data64 64)) (when (nonzero? (logand mbits 2)) ;; matrix comes from fixed data (add-scaled-matrix! (-> output-frame matrices 1) (the matrix data64) amount) - (&+! data64 64) - ) - + (&+! data64 64)) ;; process tq's (dotimes (tqi num-joints) ;; TODO - not sure if this is too many?? (let* ((ctrl-idx (/ tqi 8)) (ctrl-shift (* 4 (mod tqi 8))) (ctrl (logand #b1111 (sar (-> ctrl-ptr ctrl-idx) ctrl-shift))) ;(tq (-> output-frame data tqi)) - (tq (-> (the (inline-array transformq) (-> output-frame data)) tqi)) - ) - + (tq (-> (the (inline-array transformq) (-> output-frame data)) tqi))) ;; TRANS (when (nonzero? (logand ctrl #b0001)) ;; we have trans @@ -405,8 +312,7 @@ (+! (-> tq trans y) (* amount (deref-f32 data64))) (&+! data64 4) (+! (-> tq trans z) (* amount (deref-f32 data32))) - (&+! data32 4) - ) + (&+! data32 4)) (else ;; little trans (+! (-> tq trans x) (* amount (fderef-s16 data32) 4.)) @@ -414,19 +320,18 @@ (+! (-> tq trans y) (* amount (fderef-s16 data32) 4.)) (&+! data32 2) (+! (-> tq trans z) (* amount (fderef-s16 data16) 4.)) - (&+! data16 2) - ) - ) - ) + (&+! data16 2)))) ;; QUAT (when (nonzero? (logand ctrl #b0010)) (let ((temp (new 'stack-no-clear 'vector))) - - (set! (-> temp x) (fderef-s16 data64)) (&+! data64 2) - (set! (-> temp y) (fderef-s16 data64)) (&+! data64 2) - (set! (-> temp z) (fderef-s16 data64)) (&+! data64 2) - (set! (-> temp w) (fderef-s16 data64)) (&+! data64 2) - + (set! (-> temp x) (fderef-s16 data64)) + (&+! data64 2) + (set! (-> temp y) (fderef-s16 data64)) + (&+! data64 2) + (set! (-> temp z) (fderef-s16 data64)) + (&+! data64 2) + (set! (-> temp w) (fderef-s16 data64)) + (&+! data64 2) (let ((dot (+ (* (-> temp x) (-> tq quat x)) (* (-> temp y) (-> tq quat y)) (* (-> temp z) (-> tq quat z)) @@ -435,15 +340,11 @@ (*! (-> temp x) -1.) (*! (-> temp y) -1.) (*! (-> temp z) -1.) - (*! (-> temp w) -1.) - ) + (*! (-> temp w) -1.)) (+! (-> tq quat x) (* amount (-> temp x) QUAT_SCALE)) (+! (-> tq quat y) (* amount (-> temp y) QUAT_SCALE)) (+! (-> tq quat z) (* amount (-> temp z) QUAT_SCALE)) - (+! (-> tq quat w) (* amount (-> temp w) QUAT_SCALE)) - ) - ) - ) + (+! (-> tq quat w) (* amount (-> temp w) QUAT_SCALE))))) ;; SCALE (when (nonzero? (logand ctrl #b0100)) (+! (-> tq scale x) (* amount (fderef-s16 data32) SCALE_SCALE)) @@ -451,62 +352,39 @@ (+! (-> tq scale y) (* amount (fderef-s16 data32) SCALE_SCALE)) (&+! data32 2) (+! (-> tq scale z) (* amount (fderef-s16 data16) SCALE_SCALE)) - (&+! data16 2) - ) - ) - ) - ) - - (none) - ) + (&+! data16 2))))) + (none)) (defmethod process-request! ((this new-joint-decompressor-work) (request joint-decomp-request) (output-frame joint-anim-frame) (num-joints int)) "Decompress a single animation, adding to accumulator" - ;; first, the fixed part (decomp-fixed output-frame num-joints (-> request jacc fixed) (-> request amount)) - ;; base frame - (decomp-frame - output-frame - num-joints - (-> request jacc data (-> request frame)) - (* (- 1.0 (-> request frame-interp)) (-> request amount)) - (-> request jacc fixed hdr) - ) - + (decomp-frame output-frame + num-joints + (-> request jacc data (-> request frame)) + (* (- 1.0 (-> request frame-interp)) (-> request amount)) + (-> request jacc fixed hdr)) ;; interpolate to next frame (cond ((!= 0.0 (-> request frame-interp)) - (decomp-frame - output-frame - num-joints - (-> request jacc data (+ 1 (-> request frame))) - (* (-> request frame-interp) (-> request amount)) - (-> request jacc fixed hdr)) - ) - (else - ) - ) - - (none) - ) + (decomp-frame output-frame + num-joints + (-> request jacc data (+ 1 (-> request frame))) + (* (-> request frame-interp) (-> request amount)) + (-> request jacc fixed hdr))) + (else)) + (none)) (defmethod finalize-frame! ((this new-joint-decompressor-work) (output-frame joint-anim-frame) (num-joints int)) (when (<= num-joints 2) - (return #f) - ) - + (return #f)) (dotimes (tqi (- num-joints 2)) (let ((tq (-> (the (inline-array transformq) (-> output-frame data)) tqi))) (set! (-> tq trans w) 1.0) (set! (-> tq scale w) 1.0) - (quaternion-normalize! (-> tq quat)) - ) - ) - (none) - ) - + (quaternion-normalize! (-> tq quat)))) + (none)) ;; DECOMP BEGINS @@ -516,97 +394,68 @@ (defmethod print ((this joint)) (format #t "#<~A ~S ~D @ #x~X>" (-> this type) (-> this name) (-> this number) this) - this - ) + this) (defmethod mem-usage ((this 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 this))) - (+! (-> arg0 data 65 used) v1-6) - (+! (-> arg0 data 65 total) (logand -16 (+ v1-6 15))) - ) - this - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 65 used) v1-6) (+! (-> arg0 data 65 total) (logand -16 (+ v1-6 15)))) + this) (defmethod print ((this joint-anim)) (format #t "#<~A ~S ~D [~D] @ #x~X>" (-> this type) (-> this name) (-> this number) (-> this length) this) - this - ) + this) (defmethod length ((this joint-anim)) - (-> this length) - ) + (-> this length)) -(defmethod inspect joint-anim-matrix ((this joint-anim-matrix)) +(defmethod inspect ((this joint-anim-matrix)) (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tname: ~A~%" (-> this name)) (format #t "~Tnumber: ~D~%" (-> this number)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) - this - ) + this) (defmethod asize-of ((this joint-anim-matrix)) - (the-as int (+ (-> joint-anim-matrix size) (* (-> this length) 64))) - ) + (the-as int (+ (-> joint-anim-matrix size) (* (-> this length) 64)))) -(defmethod inspect joint-anim-transformq ((this joint-anim-transformq)) +(defmethod inspect ((this joint-anim-transformq)) (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tname: ~A~%" (-> this name)) (format #t "~Tnumber: ~D~%" (-> this number)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) (dotimes (s5-0 (-> this length)) - (format #t "~T [~D] ~`transformq`P~%" s5-0 (-> this data s5-0)) - ) - this - ) + (format #t "~T [~D] ~`transformq`P~%" s5-0 (-> this data s5-0))) + this) (defmethod asize-of ((this joint-anim-transformq)) - (the-as int (+ (-> joint-anim-transformq size) (* 48 (-> this length)))) - ) + (the-as int (+ (-> joint-anim-transformq size) (* 48 (-> this length))))) (defmethod asize-of ((this joint-anim-drawable)) - (the-as int (+ (-> joint-anim-drawable size) (* (-> this length) 4))) - ) + (the-as int (+ (-> joint-anim-drawable size) (* (-> this length) 4)))) (defun joint-anim-login ((arg0 joint-anim-drawable)) (dotimes (s5-0 (-> arg0 length)) - (if (-> arg0 data s5-0) - (login (-> arg0 data s5-0)) - ) - ) - arg0 - ) + (if (-> arg0 data s5-0) (login (-> arg0 data s5-0)))) + arg0) (defun joint-anim-inspect-elt ((arg0 joint-anim) (arg1 float)) "Inspect a single element in a joint anim. The float is rounded to an int." (case (-> arg0 type) ((joint-anim-matrix) - ((method-of-type matrix inspect) - (the-as matrix (-> (the-as joint-anim-matrix arg0) data (the int arg1) vector)) - ) - ) - ((joint-anim-transformq) - (format #t "~`transform`P~%" (-> (the-as joint-anim-transformq arg0) data (the int arg1))) - ) - ) - arg0 - ) + ((method-of-type matrix inspect) (the-as matrix (-> (the-as joint-anim-matrix arg0) data (the int arg1) vector)))) + ((joint-anim-transformq) (format #t "~`transform`P~%" (-> (the-as joint-anim-transformq arg0) data (the int arg1))))) + arg0) (defmethod mem-usage ((this 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 this))) - (+! (-> arg0 data 76 used) v1-6) - (+! (-> arg0 data 76 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 76 used) v1-6) (+! (-> arg0 data 76 total) (logand -16 (+ v1-6 15)))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) (defun jacc-mem-usage ((arg0 joint-anim-compressed-control) (arg1 memory-usage-block) (arg2 int)) (set! (-> arg1 length) (max 68 (-> arg1 length))) @@ -614,42 +463,28 @@ (+! (-> 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 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))) - ) + (+! (-> 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 - ) + (+! (-> arg1 data 69 total) (logand -16 (+ a2-15 15))))) + arg0) (defmethod print ((this joint-control-channel)) - (format - #t - "#" - (-> this command) - (-> this frame-group) - (-> this frame-num) - this - ) - this - ) + (format #t "#" (-> this command) (-> this frame-group) (-> this frame-num) this) + this) (defmethod asize-of ((this joint-control)) - (the-as int (+ (-> this type size) (* 48 (-> this allocated-length)))) - ) + (the-as int (+ (-> this type size) (* 48 (-> this allocated-length))))) (defmethod new joint-control ((allocation symbol) (type-to-make type) (arg0 int)) "Create a new joint-control with enough room for the given number of channels" @@ -662,68 +497,40 @@ (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 channel v1-4 parent) v0-0)) (set! (-> v0-0 blend-index) -1) - v0-0 - ) - ) + v0-0)) (defmethod debug-print-frames ((this joint-control-channel)) "Print the current frame of each joint on this channel. Note: this only appears to work for uncompressed joint animations." (let ((s5-0 (-> this frame-group)) - (f30-0 (-> this frame-num)) - ) + (f30-0 (-> this 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) - ) - ) - this - ) + (joint-anim-inspect-elt (-> s5-0 data s4-0) f30-0))) + this) (defmethod debug-print-channels ((this joint-control) (arg0 symbol)) "Print each active channel to the given stream." (dotimes (s4-0 (-> this active-channels)) (let* ((v1-6 (if (and (-> this channel s4-0 frame-group) (nonzero? (-> this channel s4-0 frame-group))) - (-> this channel s4-0 frame-group) - ) - ) - - ) - (format - arg0 - "ch:~2d ~C ~-35S f: ~6,,2f ~4,,2f ~4,,2f%~%" - s4-0 ;; channel index - (case (-> this channel s4-0 command) ;; how we got added. - (('push) - 80 - ) - (('push1) - 112 - ) - (('blend) - 66 - ) - (('stack) - 83 - ) - (('stack1) - 115 - ) - ) - (if v1-6 (-> v1-6 name) "(none)") ;; name of anim (can be "none" in the real game) - (+ (* (-> this channel s4-0 frame-num) (if v1-6 (-> v1-6 artist-step) 1.0)) ;; frame number - (if v1-6 (-> v1-6 artist-base) 0.0) - ) - (-> this channel s4-0 frame-interp) - (-> this channel s4-0 inspector-amount) - ) - ) - ) - 0 - ) + (-> this channel s4-0 frame-group)))) + (format arg0 + "ch:~2d ~C ~-35S f: ~6,,2f ~4,,2f ~4,,2f%~%" + s4-0 ;; channel index + (case (-> this channel s4-0 command) ;; how we got added. + (('push) 80) + (('push1) 112) + (('blend) 66) + (('stack) 83) + (('stack1) 115)) + (if v1-6 (-> v1-6 name) "(none)") ;; name of anim (can be "none" in the real game) + (+ (* (-> this channel s4-0 frame-num) (if v1-6 (-> v1-6 artist-step) 1.0)) ;; frame number + (if v1-6 (-> v1-6 artist-base) 0.0)) + (-> this channel s4-0 frame-interp) + (-> this channel s4-0 inspector-amount)))) + 0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Art @@ -739,65 +546,46 @@ ;; art-joint-anim: used for animations. Provides joint-anim-compressed and eye-anim. (defmethod needs-link? ((this art)) - #f - ) + #f) (defmethod lookup-art ((this art) (arg0 string) (arg1 type)) "Look-up an art with the given name and type." - (the-as joint #f) - ) + (the-as joint #f)) (defmethod lookup-idx-of-art ((this art) (arg0 string) (arg1 type)) "Look up the index of an art with the given name and type." - (the-as int #f) - ) + (the-as int #f)) (defmethod print ((this art)) (format #t "#<~A ~S :length ~D @ #x~X>" (-> this type) (-> this name) (-> this length) this) - this - ) + this) (defmethod length ((this art)) - (-> this length) - ) + (-> this length)) (defmethod login ((this art)) ;; not sure why we have to do this, but if the res-lump isn't properly set up to point to the tags ;; do it manually. (if (and (-> this extra) (zero? (-> this extra tag))) - (set! (-> this extra tag) (&+ (the-as (pointer res-tag) (-> this extra)) 28)) - ) - this - ) + (set! (-> this extra tag) (&+ (the-as (pointer res-tag) (-> this extra)) 28))) + this) (defmethod mem-usage ((this 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 this))) - (+! (-> arg0 data 71 used) v1-6) - (+! (-> arg0 data 71 total) (logand -16 (+ v1-6 15))) - ) - (if (-> this extra) - (mem-usage (-> this extra) arg0 (logior arg1 512)) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 71 used) v1-6) (+! (-> arg0 data 71 total) (logand -16 (+ v1-6 15)))) + (if (-> this extra) (mem-usage (-> this extra) arg0 (logior arg1 512))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) (defmethod mem-usage ((this 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 this))) - (+! (-> arg0 data 74 used) v1-6) - (+! (-> arg0 data 74 total) (logand -16 (+ v1-6 15))) - ) - (if (-> this extra) - (mem-usage (-> this extra) arg0 (logior arg1 512)) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 74 used) v1-6) (+! (-> arg0 data 74 total) (logand -16 (+ v1-6 15)))) + (if (-> this extra) (mem-usage (-> this extra) arg0 (logior arg1 512))) (jacc-mem-usage (-> this frames) arg0 arg1) (dotimes (s4-1 (-> this length)) (set! (-> arg0 length) (max 67 (-> arg0 length))) @@ -805,26 +593,20 @@ (+! (-> arg0 data 66 count) 1) (let ((v1-22 (asize-of (-> this data s4-1)))) (+! (-> arg0 data 66 used) v1-22) - (+! (-> arg0 data 66 total) (logand -16 (+ v1-22 15))) - ) - ) + (+! (-> arg0 data 66 total) (logand -16 (+ v1-22 15))))) (when (and (nonzero? (-> this eye-anim-data)) (-> this eye-anim-data)) (set! (-> arg0 length) (max 109 (-> arg0 length))) (set! (-> arg0 data 108 name) "eye-anim") (+! (-> arg0 data 108 count) 1) (let ((v1-41 (* (* (+ (-> this eye-anim-data max-frame) 1) 2) 8))) (+! (-> arg0 data 108 used) v1-41) - (+! (-> arg0 data 108 total) (logand -16 (+ v1-41 15))) - ) - ) - this - ) + (+! (-> arg0 data 108 total) (logand -16 (+ v1-41 15))))) + this) (defmethod asize-of ((this art-joint-anim)) - (the-as int (+ (-> art size) (* (-> this length) 4))) - ) + (the-as int (+ (-> art size) (* (-> this length) 4)))) -(defmethod inspect art-group ((this art-group)) +(defmethod inspect ((this art-group)) "Print the arts in an art-group" (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tinfo: ~A~%" (-> this info)) @@ -834,235 +616,141 @@ (format #t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) (dotimes (s5-0 (-> this length)) (if (-> this data s5-0) - (format #t "~T [~D] ~A (~D bytes)~%"s5-0 (-> this data s5-0) (mem-size (-> this data s5-0) #f 0)) - (format #t "~T [~D] ~A (~D bytes)~%" s5-0 (-> this data s5-0) 0) - ) - ) - this - ) - + (format #t "~T [~D] ~A (~D bytes)~%" s5-0 (-> this data s5-0) (mem-size (-> this data s5-0) #f 0)) + (format #t "~T [~D] ~A (~D bytes)~%" s5-0 (-> this data s5-0) 0))) + this) (defmethod needs-link? ((this art-group)) "Does this art-group need to be added to the level's art group? Some animations are streamed in, and need to be linked/unlinked to the level's list of art groups." - (the-as symbol (and (-> this length) - (type-type? (-> this data 0 type) art-joint-anim) - (!= (-> this name) (-> (the-as art-joint-anim (-> this data 0)) master-art-group-name)) - ) - ) - ) + (the-as symbol + (and (-> this length) + (type-type? (-> this data 0 type) art-joint-anim) + (!= (-> this name) (-> (the-as art-joint-anim (-> this data 0)) master-art-group-name))))) (defmethod lookup-art ((this art-group) (arg0 string) (arg1 type)) "Get the art with the given name and type. Set type to false if you don't care." - (the-as - joint - (cond - (arg1 - (let ((s3-0 (+ (length (-> this name)) 1))) - (dotimes (s2-0 (-> this length)) - (if (and (-> this data s2-0) ;; entry is populated - (= (-> this data s2-0 type) arg1) ;; type is right - (or (name= arg0 (-> this data s2-0 name)) (string-charp= arg0 (&-> (-> this data s2-0 name) data s3-0))) ;; name is right. also seek past ag name, and try again. - ) - (return (the-as joint (-> this data s2-0))) - ) - ) - ) - (the-as art-element #f) - ) - (else - ;; no type (also no weird after ag name check) - (dotimes (s4-1 (-> this length)) - (if (and (-> this data s4-1) (name= arg0 (-> this data s4-1 name))) - (return (the-as joint (-> this data s4-1))) - ) - ) - (the-as art-element #f) - ) - ) - ) - ) + (the-as joint + (cond + (arg1 + (let ((s3-0 (+ (length (-> this name)) 1))) + (dotimes (s2-0 (-> this length)) + (if (and (-> this data s2-0) ;; entry is populated + (= (-> this data s2-0 type) arg1) ;; type is right + (or (name= arg0 (-> this data s2-0 name)) (string-charp= arg0 (&-> (-> this data s2-0 name) data s3-0))) ;; name is right. also seek past ag name, and try again. + ) + (return (the-as joint (-> this data s2-0)))))) + (the-as art-element #f)) + (else + ;; no type (also no weird after ag name check) + (dotimes (s4-1 (-> this length)) + (if (and (-> this data s4-1) (name= arg0 (-> this data s4-1 name))) (return (the-as joint (-> this data s4-1))))) + (the-as art-element #f))))) (defmethod lookup-idx-of-art ((this art-group) (arg0 string) (arg1 type)) "Get the index of the art with the given name and type. Set type to false if you don't care. Will return #f if the art is not found." (cond (arg1 - (let ((s3-0 (+ (length (-> this name)) 1))) - (dotimes (s2-0 (-> this length)) - (if (and (-> this data s2-0) - (= (-> this data s2-0 type) arg1) - (or (name= arg0 (-> this data s2-0 name)) (string-charp= arg0 (&-> (-> this data s2-0 name) data s3-0))) - ) - (return s2-0) - ) - ) - ) - (the-as int #f) - ) + (let ((s3-0 (+ (length (-> this name)) 1))) + (dotimes (s2-0 (-> this length)) + (if (and (-> this data s2-0) + (= (-> this data s2-0 type) arg1) + (or (name= arg0 (-> this data s2-0 name)) (string-charp= arg0 (&-> (-> this data s2-0 name) data s3-0)))) + (return s2-0)))) + (the-as int #f)) (else - (dotimes (s4-1 (-> this length)) - (if (and (-> this data s4-1) (name= arg0 (-> this data s4-1 name))) - (return s4-1) - ) - ) - (the-as int #f) - ) - ) - ) + (dotimes (s4-1 (-> this length)) + (if (and (-> this data s4-1) (name= arg0 (-> this data s4-1 name))) (return s4-1))) + (the-as int #f)))) (defmethod login ((this art-group)) "Log in all the arts in a group." (dotimes (s5-0 (-> this length)) - (if (-> this data s5-0) - (set! (-> this data s5-0) (login (-> this data s5-0))) - ) - ) - this - ) + (if (-> this data s5-0) (set! (-> this data s5-0) (login (-> this data s5-0))))) + this) (defmethod mem-usage ((this 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 this))) - (+! (-> arg0 data 70 used) v1-6) - (+! (-> arg0 data 70 total) (logand -16 (+ v1-6 15))) - ) - (if (-> this extra) - (mem-usage (-> this extra) arg0 (logior arg1 512)) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 70 used) v1-6) (+! (-> arg0 data 70 total) (logand -16 (+ v1-6 15)))) + (if (-> this extra) (mem-usage (-> this extra) arg0 (logior arg1 512))) (dotimes (s3-0 (-> this length)) - (if (-> this data s3-0) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - ) - this - ) + (if (-> this data s3-0) (mem-usage (-> this data s3-0) arg0 arg1))) + this) (defmethod relocate ((this art-group) (arg0 kheap) (arg1 (pointer uint8))) "Handle a loaded art-group." (let ((s4-0 (clear *temp-string*))) (string<-charp s4-0 arg1) - (set! this (cond - ((not this) - (format 0 "ERROR: art-group ~A is not a valid file.~%" s4-0) - (the-as art-group #f) - ) - ((not (type-type? (-> this 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? (-> this 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 this) ;; not part of level load, just normal login. - ) - (if s5-1 - (set-loaded-art (-> s5-1 art-group) this) ;; part of level load, add to level's ag, but don't log in yet. - ) - ) - this - ) + (set! this + (cond + ((not this) (format 0 "ERROR: art-group ~A is not a valid file.~%" s4-0) (the-as art-group #f)) + ((not (type-type? (-> this 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? (-> this 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 this) ;; not part of level load, just normal login. ) - ) - ) - (none) - ) + (if s5-1 + (set-loaded-art (-> s5-1 art-group) this) ;; part of level load, add to level's ag, but don't log in yet. + )) + this)))) + (none)) (defmethod asize-of ((this art-mesh-geo)) - (the-as int (+ (-> art size) (* (-> this length) 4))) - ) + (the-as int (+ (-> art size) (* (-> this length) 4)))) (defmethod mem-usage ((this 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 this))) - (+! (-> arg0 data 72 used) v1-6) - (+! (-> arg0 data 72 total) (logand -16 (+ v1-6 15))) - ) - (if (-> this extra) - (mem-usage (-> this extra) arg0 (logior arg1 512)) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 72 used) v1-6) (+! (-> arg0 data 72 total) (logand -16 (+ v1-6 15)))) + (if (-> this extra) (mem-usage (-> this extra) arg0 (logior arg1 512))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) (defmethod login ((this art-joint-anim)) (if (and (-> this extra) (zero? (-> this extra tag))) - (set! (-> this extra tag) (&+ (the-as (pointer res-tag) (-> this extra)) 28)) - ) - this - ) + (set! (-> this extra tag) (&+ (the-as (pointer res-tag) (-> this extra)) 28))) + this) (defmethod asize-of ((this art-joint-geo)) - (the-as int (+ (-> art size) (* (-> this length) 4))) - ) + (the-as int (+ (-> art size) (* (-> this length) 4)))) (defmethod lookup-art ((this art-joint-geo) (arg0 string) (arg1 type)) (cond (arg1 - (dotimes (s3-0 (-> this length)) - (if (and (= (-> this data s3-0 type) arg1) (name= arg0 (-> this data s3-0 name))) - (return (-> this data s3-0)) - ) - ) - (the-as joint #f) - ) + (dotimes (s3-0 (-> this length)) + (if (and (= (-> this data s3-0 type) arg1) (name= arg0 (-> this data s3-0 name))) (return (-> this data s3-0)))) + (the-as joint #f)) (else - (dotimes (s4-1 (-> this length)) - (if (name= arg0 (-> this data s4-1 name)) - (return (-> this data s4-1)) - ) - ) - (the-as joint #f) - ) - ) - ) + (dotimes (s4-1 (-> this length)) + (if (name= arg0 (-> this data s4-1 name)) (return (-> this data s4-1)))) + (the-as joint #f)))) (defmethod lookup-idx-of-art ((this art-joint-geo) (arg0 string) (arg1 type)) (cond (arg1 - (dotimes (s3-0 (-> this length)) - (if (and (= (-> this data s3-0 type) arg1) (name= arg0 (-> this data s3-0 name))) - (return s3-0) - ) - ) - (the-as int #f) - ) - (else - (dotimes (s4-1 (-> this length)) - (if (name= arg0 (-> this data s4-1 name)) - (return s4-1) - ) - ) - (the-as int #f) - ) - ) - ) + (dotimes (s3-0 (-> this length)) + (if (and (= (-> this data s3-0 type) arg1) (name= arg0 (-> this data s3-0 name))) (return s3-0))) + (the-as int #f)) + (else (dotimes (s4-1 (-> this length)) (if (name= arg0 (-> this data s4-1 name)) (return s4-1))) (the-as int #f)))) (defmethod mem-usage ((this 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 this))) - (+! (-> arg0 data 73 used) v1-6) - (+! (-> arg0 data 73 total) (logand -16 (+ v1-6 15))) - ) - (if (-> this extra) - (mem-usage (-> this extra) arg0 (logior arg1 512)) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 73 used) v1-6) (+! (-> arg0 data 73 total) (logand -16 (+ v1-6 15)))) + (if (-> this extra) (mem-usage (-> this extra) arg0 (logior arg1 512))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Joint Control! @@ -1072,76 +760,49 @@ "Run the joint control num-func callback, remember the current time" ((-> arg0 num-func) arg0 (-> arg0 param 0) (-> arg0 param 1)) (set! (-> arg0 eval-time) (the-as uint (current-time))) - (none) - ) + (none)) (defun joint-control-channel-eval! ((arg0 joint-control-channel) (arg1 (function joint-control-channel float float float))) "Set the joint control num-func, and evaluate it." (set! (-> arg0 num-func) arg1) (arg1 arg0 (-> arg0 param 0) (-> arg0 param 1)) (set! (-> arg0 eval-time) (the-as uint (current-time))) - (none) - ) + (none)) (defun joint-control-channel-group-eval! ((arg0 joint-control-channel) (arg1 art-joint-anim) (arg2 (function joint-control-channel float float float))) "Set the joint control num-func, maybe update the anim, and maybe evaluate it." (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 (current-time))) - ) - ) - 0 - ) + (if arg1 (set! (-> arg0 frame-group) arg1)) + (arg2 arg0 (-> arg0 param 0) (-> arg0 param 1)) + (set! (-> arg0 eval-time) (the-as uint (current-time))))) + 0) (defun joint-control-channel-group! ((arg0 joint-control-channel) (arg1 art-joint-anim) (arg2 (function joint-control-channel float float float))) "Set the joint control num-func and maybe update the anim." (set! (-> arg0 num-func) arg2) (cond - ((= (-> arg0 command) 'stack) - ) - (arg1 - (set! (-> arg0 frame-group) arg1) - ) - ) - 0 - ) + ((= (-> arg0 command) 'stack)) + (arg1 (set! (-> arg0 frame-group) arg1))) + 0) (defun joint-control-copy! ((arg0 joint-control) (arg1 joint-control)) "Copy one joint control to another." - ;; set fields (set! (-> arg0 blend-index) (-> arg1 blend-index)) (set! (-> arg0 active-channels) (-> arg1 active-channels)) ;; figure out which slot the source is, and remember that we're a copy. (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) - ) - ) - ) + (the-as (inline-array joint-control-channel) + (-> arg0 channel (/ (&- (the-as pointer (-> arg1 root-channel)) (the-as uint (the-as pointer (-> arg1 channel)))) 48)))) ;; copy channels - (mem-copy! - (the-as pointer (-> arg0 channel)) - (the-as pointer (-> arg1 channel)) - (* 48 (-> arg0 allocated-length)) - ) - + (mem-copy! (the-as pointer (-> arg0 channel)) (the-as pointer (-> arg1 channel)) (* 48 (-> arg0 allocated-length))) ;; set parents of channels to point to the dest. (dotimes (v1-7 (-> arg0 allocated-length)) - (set! (-> arg0 channel v1-7 parent) arg0) - ) - arg0 - ) + (set! (-> arg0 channel v1-7 parent) arg0)) + arg0) ;; ERROR: Failed load: (set! v1-29 (l.wu (+ a0-9 -4))) at op 75 (defun joint-control-remap! ((arg0 joint-control) (arg1 art-group) (arg2 art-group) (arg3 pair) (arg4 int) (arg5 string)) @@ -1154,15 +815,13 @@ (sv-52 object) (sv-56 int) (sv-64 joint) - (sv-80 string) - ) + (sv-80 string)) (set! sv-16 (+ (length (-> arg2 name)) 1)) (set! sv-24 #t) (set! sv-32 arg4) (set! sv-40 2) (while (and (< sv-40 (-> arg1 length)) (!= (-> arg1 data sv-40 type) art-joint-anim)) - (set! sv-40 (+ sv-40 1)) - ) + (set! sv-40 (+ sv-40 1))) (dotimes (s2-1 (-> arg0 active-channels)) (set! sv-48 (-> arg0 channel s2-1)) (when (-> sv-48 frame-group) @@ -1171,35 +830,20 @@ (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))) - ) + (a0-9 sv-52)) + (set! sv-56 (mod s1-1 (+ ((method-of-type (rtype-of a0-9) length) a0-9) -1)))) (let ((s1-2 format) - (s0-0 (clear *temp-string*)) - ) + (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) - ) - ) - ) - ) + (let ((a2-2 (ref sv-52 (+ sv-56 1)))) (s1-2 s0-0 sv-80 a2-2))))) (set! sv-64 (lookup-art arg1 *temp-string* art-joint-anim)) (cond - (sv-64 - (set! (-> sv-48 frame-group) (the-as art-joint-anim sv-64)) - ) + (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)) - ) - ) - ) - ) - sv-24 - ) + (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)))))) + sv-24) (defun flatten-joint-control-to-spr ((arg0 joint-control)) "Take the current state of the given joint-control and upload it to the scratchpad @@ -1217,14 +861,12 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (let ((nb-channels (-> arg0 active-channels))) - (let ((f0-0 1.0) ;; one - (v1-0 0) ;; offset in spad + (let ((f0-0 1.0) ;; one + (v1-0 0) ;; offset in spad (a1-0 (-> (scratchpad-object terrain-context) work foreground joint-work flattened)) ;; start of data. ) - ;; loop over active channels. ;; (dotimes (a0-1 nb-channels) @@ -1241,16 +883,12 @@ (set! (-> a1-0 4 quad) (the-as uint128 0)) (set! (-> a1-0 5 quad) (the-as uint128 0)) ;; and this thing stores the normal weight. - (set! (-> (the-as (pointer float) a2-4)) f0-0) - ) + (set! (-> (the-as (pointer float) a2-4)) f0-0)) ;; advance. - (set! a1-0 (the-as (inline-array vector) (-> a1-0 6))) - ) + (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 ((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))) @@ -1271,23 +909,14 @@ (.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))) - ) - ) - ) + (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) - ) + (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)) @@ -1324,14 +953,8 @@ (.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) - ) - ) + (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)) @@ -1339,139 +962,74 @@ (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))) - ) + (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) - ) + (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)) - ) - ) + (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 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) - ) + (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 - ) - ) + (-> (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))) - ) + (v0-0 (the-as object (-> arg0 data arg2 data)))) (cond ((not (logtest? (-> arg0 fixed hdr matrix-bits) 1)) - (set! v1-1 (cond - ((zero? arg1) - (return (the-as matrix v1-1)) - v1-1 - ) - (else - (-> (the-as (inline-array vector) v1-1) 4) - ) - ) - ) - ) - ((zero? arg1) - (return (the-as matrix v0-0)) - ) - (else - (set! v0-0 (-> (the-as (inline-array vector) v0-0) 4)) - ) - ) - (if (not (logtest? (-> arg0 fixed hdr matrix-bits) 2)) - (return (the-as matrix v1-1)) - ) - (the-as matrix v0-0) - ) - ) + (set! v1-1 + (cond + ((zero? arg1) (return (the-as matrix v1-1)) v1-1) + (else (-> (the-as (inline-array vector) v1-1) 4))))) + ((zero? arg1) (return (the-as matrix v0-0))) + (else (set! v0-0 (-> (the-as (inline-array vector) v0-0) 4)))) + (if (not (logtest? (-> arg0 fixed hdr matrix-bits) 2)) (return (the-as matrix v1-1))) + (the-as matrix v0-0))) (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) - ) + (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) - ) + (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)) - ) + (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 - ) + (set! (-> arg0 vector 3 quad) a2-4)) + arg0) (else - (let ((s3-1 (matrix-from-joint-anim-frame (-> s4-0 frames) s5-0 (the int f30-0))) - (a2-7 (matrix-from-joint-anim-frame (-> s4-0 frames) s5-0 (+ (the int f30-0) 1))) - (f0-9 (- f30-0 (the float (the int f30-0)))) - ) - (matrix-lerp! arg0 s3-1 a2-7 f0-9) - ) - ) - ) - ) - ) - ) + (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))))))) (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)) - ) + ((>= 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 (-> (scratchpad-object terrain-context) work)) - arg2 - (the-as joint-control-channel arg1) - ) - ) - ) - (matrix-lerp! arg0 arg0 a2-3 f30-0) - ) - ) - ) - ) - ) + (let ((a2-3 (matrix-from-control-channel! (the-as matrix (-> (scratchpad-object terrain-context) work)) + arg2 + (the-as joint-control-channel arg1)))) + (matrix-lerp! arg0 arg0 a2-3 f30-0)))))) (defun matrix-from-control! ((arg0 matrix-stack) (arg1 joint) (arg2 joint-control) (arg3 symbol)) (set! (-> arg0 top) (the-as matrix (-> arg0 data))) @@ -1479,16 +1037,10 @@ (dotimes (s2-0 (-> arg2 active-channels)) (let* ((a2-1 (-> arg2 channel s2-0)) (v1-4 (-> a2-1 command)) - (s1-0 64) - ) + (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 - ) - ) + (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)))) @@ -1496,40 +1048,27 @@ (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)) - ) + (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) - ) - ) + (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))) ;(return (-> arg0 data 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 - ) - ) + (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)) - ) + (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))) (defmethod reset-and-assign-geo! ((this cspace) (arg0 basic)) (set! (-> this parent) #f) @@ -1538,17 +1077,13 @@ (set! (-> this param0) #f) (set! (-> this param1) #f) (set! (-> this param2) #f) - this - ) + this) (defmethod new cspace ((allocation symbol) (type-to-make type) (arg0 basic)) (let ((t9-0 (method-of-type structure new)) - (v1-1 type-to-make) - ) + (v1-1 type-to-make)) (-> type-to-make size) - ((method-of-type cspace reset-and-assign-geo!) (the-as cspace (t9-0 allocation v1-1)) arg0) - ) - ) + ((method-of-type cspace reset-and-assign-geo!) (the-as cspace (t9-0 allocation v1-1)) arg0))) (defun cspace<-cspace! ((arg0 cspace) (arg1 cspace)) (let ((v0-0 (-> arg0 bone transform))) @@ -1556,76 +1091,55 @@ (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)) - ) + (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 - ) - ) + (set! (-> v0-0 vector 3 quad) a2-1)) + v0-0)) (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) - ) - ) + (scale-matrix! s5-0 (-> arg1 scale) s5-0))) (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)) - ) + (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) - ) - ) + (scale-matrix! s4-0 (-> arg1 scale) s3-0))) (defun cspace<-transformq! ((arg0 cspace) (arg1 transformq)) - (matrix<-transformq! (-> arg0 bone transform) arg1) - ) + (matrix<-transformq! (-> arg0 bone transform) arg1)) (defun cspace<-transformq+trans! ((arg0 cspace) (arg1 transformq) (arg2 vector)) - (matrix<-transformq+trans! (-> arg0 bone transform) arg1 arg2) - ) + (matrix<-transformq+trans! (-> arg0 bone transform) arg1 arg2)) (defun cspace<-transformq+world-trans! ((arg0 cspace) (arg1 transformq) (arg2 vector)) - (matrix<-transformq+world-trans! (-> arg0 bone transform) arg1 arg2) - ) + (matrix<-transformq+world-trans! (-> arg0 bone transform) arg1 arg2)) (defun cspace-calc-total-matrix! ((arg0 cspace) (arg1 matrix)) - (matrix*! arg1 (-> arg0 bone transform) (-> *math-camera* camera-temp)) - ) + (matrix*! arg1 (-> arg0 bone transform) (-> *math-camera* camera-temp))) (defun cspace<-matrix-no-push-joint! ((arg0 cspace) (arg1 joint-control)) - (let ((v1-2 (matrix-from-control! - (-> (scratchpad-object terrain-context) work foreground joint-work joint-stack) - (-> arg0 joint) - arg1 - 'no-push - ) - ) - (v0-1 (-> arg0 bone transform)) - ) + (let ((v1-2 (matrix-from-control! (-> (scratchpad-object terrain-context) work foreground joint-work joint-stack) + (-> 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)) - ) + (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 - ) - ) + (set! (-> v0-1 vector 3 quad) v1-3)) + v0-1)) (defun cspace<-matrix-joint! ((arg0 cspace) (arg1 matrix)) (let ((v0-0 (-> arg0 bone transform))) @@ -1633,20 +1147,15 @@ (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)) - ) + (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 - ) - ) + (set! (-> v0-0 vector 3 quad) a2-1)) + v0-0)) (defun cspace<-parented-matrix-joint! ((arg0 cspace) (arg1 matrix)) - (matrix*! (-> arg0 bone transform) arg1 (-> arg0 parent bone transform)) - ) + (matrix*! (-> arg0 bone transform) arg1 (-> arg0 parent bone transform))) ;; tricky ones: ;; cspace<-parented-transformq-joint! @@ -1670,6 +1179,7 @@ ;; all run by create-interpolated-joint-animation-frame (def-mips2c cspace<-parented-transformq-joint! (function cspace transformq none)) + ; (defun cspace<-parented-transformq-joint! ((arg0 cspace) (arg1 transformq)) ; (nop!) ; ;; the ops in these funcs were scrambled for pipeline optimization. screw that. @@ -1798,18 +1308,19 @@ ; ) (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. ;; ERROR: function was not converted to expressions. Cannot decompile. ;; ERROR: function was not converted to expressions. Cannot decompile. - +;; ERROR: function was not converted to expressions. Cannot decompile. (defun make-joint-jump-tables () -#| + #| #x3ee6b6f9, // = 9 ^ 1055307504 #x3ee6b6ff, // = 15 ^ 1055307504 #x3ee6b6e2, // = 18 ^ 1055307504 @@ -1826,58 +1337,43 @@ #x3ee6b6eb, // = 27 ^ 1055307504 #x3ee6b6ef, // = 31 ^ 1055307504 #x3ee6b6f6, // = 6 ^ 1055307504 - |# + |# (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 0) - (the-as (function none) (+ 0 #x3ee6b6f9)) - ) + (the-as (function none) (+ 0 #x3ee6b6f9))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 1) - (the-as (function none) (+ 0 #x3ee6b6ff)) - ) + (the-as (function none) (+ 0 #x3ee6b6ff))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 2) - (the-as (function none) (+ 0 #x3ee6b6e2)) - ) + (the-as (function none) (+ 0 #x3ee6b6e2))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 3) - (the-as (function none) (+ 0 #x3ee6b6e4)) - ) + (the-as (function none) (+ 0 #x3ee6b6e4))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 4) - (the-as (function none) (+ 0 #x3ee6b6e5)) - ) + (the-as (function none) (+ 0 #x3ee6b6e5))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 5) - (the-as (function none) (+ 0 #x3ee6b6eb)) - ) + (the-as (function none) (+ 0 #x3ee6b6eb))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 6) - (the-as (function none) (+ 0 #x3ee6b6ee)) - ) + (the-as (function none) (+ 0 #x3ee6b6ee))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 7) - (the-as (function none) (+ 0 #x3ee6b6f6)) - ) + (the-as (function none) (+ 0 #x3ee6b6f6))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 8) - (the-as (function none) (+ 0 #x3ee6b6fc)) - ) + (the-as (function none) (+ 0 #x3ee6b6fc))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 9) - (the-as (function none) (+ 0 #x3ee6b6ff)) - ) + (the-as (function none) (+ 0 #x3ee6b6ff))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 10) - (the-as (function none) (+ 0 #x3ee6b6e3)) - ) + (the-as (function none) (+ 0 #x3ee6b6e3))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 11) - (the-as (function none) (+ 0 #x3ee6b6e4)) - ) + (the-as (function none) (+ 0 #x3ee6b6e4))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 12) - (the-as (function none) (+ 0 #x3ee6b6e8)) - ) + (the-as (function none) (+ 0 #x3ee6b6e8))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 13) - (the-as (function none) (+ 0 #x3ee6b6eb)) - ) + (the-as (function none) (+ 0 #x3ee6b6eb))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 14) - (the-as (function none) (+ 0 #x3ee6b6ef)) - ) + (the-as (function none) (+ 0 #x3ee6b6ef))) (set! (-> (scratchpad-object terrain-context) work foreground joint-work fix-jmp-table 15) - (the-as (function none) (+ 0 #x3ee6b6f6)) - ) - - - (let ((arr (new 'static 'array uint32 16 + (the-as (function none) (+ 0 #x3ee6b6f6))) + (let ((arr (new 'static + 'array + uint32 + 16 #x7b2191b ;; = 6 ^ 129112349 #x7b21914 ;; = 9 ^ 129112349 #x7b21916 ;; = 11 ^ 129112349 @@ -1897,12 +1393,11 @@ ))) (dotimes (i 16) (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table i) - (the-as (function none) (-> arr i)) - ) - ) - ) - - (let ((arr (new 'static 'array uint32 16 + (the-as (function none) (-> arr i))))) + (let ((arr (new 'static + 'array + uint32 + 16 #x4d7666df ;; = 6 ^ 1299605209 #x4d7666d0 ;; = 9 ^ 1299605209 #x4d7666d2 ;; = 11 ^ 1299605209 @@ -1922,12 +1417,8 @@ ))) (dotimes (i 16) (set! (-> (scratchpad-object terrain-context) work foreground joint-work pair-jmp-table i) - (the-as (function none) (-> arr i)) - ) - ) - ) - 0 - ) + (the-as (function none) (-> arr i))))) + 0) ; (defun calc-animation-from-spr ((arg0 (inline-array vector)) (arg1 int)) ; (declare (asm-func object) @@ -1958,17 +1449,7 @@ (def-mips2c calc-animation-from-spr (function (inline-array vector) int none)) (defun create-interpolated-joint-animation-frame ((arg0 (inline-array vector)) (arg1 int) (arg2 process-drawable)) - (cond - (*use-new-decompressor* - (new-joint-decompressor (the joint-anim-frame arg0) arg1 (-> arg2 skel)) - ) - (else - (flatten-joint-control-to-spr (-> arg2 skel)) - (make-joint-jump-tables) - (calc-animation-from-spr arg0 arg1) - ) - ) - - 0 - ) + (*use-new-decompressor* (new-joint-decompressor (the joint-anim-frame arg0) arg1 (-> arg2 skel))) + (else (flatten-joint-control-to-spr (-> arg2 skel)) (make-joint-jump-tables) (calc-animation-from-spr arg0 arg1))) + 0) diff --git a/goal_src/jak1/engine/anim/mspace-h.gc b/goal_src/jak1/engine/anim/mspace-h.gc index bf7189d6b6..22df570ba1 100644 --- a/goal_src/jak1/engine/anim/mspace-h.gc +++ b/goal_src/jak1/engine/anim/mspace-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: mspace-h.gc -;; name in dgo: mspace-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; this file contains types for the skeletal animation system. @@ -20,42 +15,32 @@ ;; - The skeleton: This is an inline array of bones. (called skeleton) ;; - The joint-control (not in this file): this has the logic for running joint animations. (called skel) - ;; First, the joint. This type just describes how the skeleton is connected and the bind pose. (deftype joint (basic) - ((name string) - (number int32) - (parent joint) - (bind-pose matrix :inline) - ) - ) + ((name string) + (number int32) + (parent joint) + (bind-pose matrix :inline))) ;; I believe this stores offsets, in bytes, of where there are stored ;; (possibly in the scratchpad) (deftype bone-cache (structure) - ((bone-matrix uint32) - (parent-matrix uint32) - (dummy uint32) - (frame uint32) - ) - ) + ((bone-matrix uint32) + (parent-matrix uint32) + (dummy uint32) + (frame uint32))) ;; The "bone" stores the final positions of the bodies. ;; This is a world space transform. (deftype bone (structure) - ((transform matrix :inline) - (position vector :inline :overlay-at (-> transform vector 3)) - (scale vector :inline) - (cache bone-cache :inline) - ) - ) + ((transform matrix :inline) + (position vector :inline :overlay-at (-> transform vector 3)) + (scale vector :inline) + (cache bone-cache :inline))) ;; Like a real skeleton, this is a collection of bones for a single character. (deftype skeleton (inline-array-class) - ((bones bone :inline :dynamic) - ) - ) - + ((bones bone :inline :dynamic))) (set! (-> skeleton heap-base) (the-as uint 96)) @@ -72,39 +57,23 @@ ;; node 4 is the first real joint (for jak, it's upper body). (deftype cspace (structure) - ((parent cspace) - (joint joint) - (joint-num int16) - (geo basic) - (bone bone) - (param0 function) - (param1 basic) - (param2 basic) - ) + ((parent cspace) + (joint joint) + (joint-num int16) + (geo basic) + (bone bone) + (param0 function) + (param1 basic) + (param2 basic)) (:methods - (new (symbol type basic) _type_) - (reset-and-assign-geo! (_type_ basic) _type_) - ) - ) - + (new (symbol type basic) _type_) + (reset-and-assign-geo! (_type_ basic) _type_))) (deftype cspace-array (inline-array-class) - ((data cspace :inline :dynamic) - ) - ) - + ((data cspace :inline :dynamic))) (set! (-> cspace-array heap-base) (the-as uint 32)) (defmethod print ((this cspace)) - (format - #t - "#" - (if (-> this joint) - (-> this joint name) - "nojoint" - ) - this - ) - this - ) + (format #t "#" (if (-> this joint) (-> this joint name) "nojoint") this) + this) diff --git a/goal_src/jak1/engine/camera/cam-combiner.gc b/goal_src/jak1/engine/camera/cam-combiner.gc index 939a8ca735..8a9971c8a2 100644 --- a/goal_src/jak1/engine/camera/cam-combiner.gc +++ b/goal_src/jak1/engine/camera/cam-combiner.gc @@ -1,292 +1,186 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/camera/camera.gc") -;; name: cam-combiner.gc -;; name in dgo: cam-combiner -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defstate cam-combiner-active (camera-combiner) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('point-of-interest) - (cond - ((-> block param 0) - (set! (-> self tracking use-point-of-interest) #t) - (set! (-> self tracking point-of-interest quad) (-> (the-as vector (-> block param 0)) quad)) - (set! (-> self tracking point-of-interest-blend target) 1.0) - ) - (else - (set! (-> self tracking use-point-of-interest) #f) - (set! (-> self tracking point-of-interest-blend target) 0.0) - ) - ) - ) - (('set-interpolation) - (set! (-> self interp-val) 0.0) - (set! (-> self interp-step) (/ 5.0 (the float (-> block param 0)))) - ) - (('teleport) - (when (nonzero? (-> self tracking-status)) - (cam-calc-follow! (-> self tracking) (-> self trans) #f) - (slave-set-rotation! - (-> self tracking) - (-> self trans) - (the-as float (-> self tracking-options)) - (-> self fov) - #f - ) - ) - ) - (('stop-tracking) - (set! (-> self tracking-status) (the-as uint 0)) - 0 - ) - (('start-tracking) - (cond - ((< argc 1) - (let ((t9-2 format) - (a0-15 0) - (a1-3 "ERROR : missing camera-slave parameter to *camera-combiner* start-tracking~%") - ) - (let ((v1-7 (-> block param 0))) - (rtype-of v1-7) - ) - (t9-2 a0-15 a1-3) - ) - ) - ((let ((t9-3 type-type?) - (v1-8 (-> block param 0)) - ) - (not (t9-3 (rtype-of v1-8) camera-slave)) - ) - (let ((t9-4 format) - (a0-18 0) - (a1-5 "ERROR : invalid type '~A' to *camera-combiner* start-tracking~%") - (v1-10 (-> block param 0)) - ) - (t9-4 a0-18 a1-5 (rtype-of v1-10)) - ) - ) - ((zero? (-> self tracking-status)) - (set! (-> self tracking-status) (the-as uint 1)) - (let ((gp-1 (the-as object (-> block param 0)))) - (set! (-> self tracking-options) (the-as int (-> (the-as camera-slave gp-1) options))) - (set! (-> self tracking no-follow) (-> (the-as camera-slave gp-1) tracking no-follow)) - (copy-cam-float-seeker (-> self tracking tilt-adjust) (-> (the-as camera-slave gp-1) tracking tilt-adjust)) - (copy-cam-float-seeker - (-> self tracking underwater-blend) - (-> (the-as camera-slave gp-1) tracking underwater-blend) - ) - (set! (-> self tracking use-point-of-interest) (-> (the-as camera-slave gp-1) tracking use-point-of-interest)) - (set! (-> self tracking point-of-interest quad) - (-> (the-as camera-slave gp-1) tracking point-of-interest quad) - ) - (copy-cam-float-seeker - (-> self tracking point-of-interest-blend) - (-> (the-as camera-slave gp-1) tracking point-of-interest-blend) - ) - (let ((gp-2 (+ (the-as uint gp-1) 108))) - (cam-calc-follow! (-> self tracking) (the-as vector gp-2) #f) - (slave-set-rotation! - (-> self tracking) - (the-as vector gp-2) - (the-as float (-> self tracking-options)) - (-> self fov) - #f - ) - ) - ) - ) - ) - ) - (('copy-tracking) - (cond - ((< argc 1) - (let ((t9-10 format) - (a0-27 0) - (a1-11 "ERROR : missing camera-slave parameter to *camera-combiner* copy-tracking~%") - ) - (let ((v1-23 (-> block param 0))) - (rtype-of v1-23) - ) - (t9-10 a0-27 a1-11) - ) - ) - ((let ((t9-11 type-type?) - (v1-24 (-> block param 0)) - ) - (not (t9-11 (rtype-of v1-24) camera-slave)) - ) - (let ((t9-12 format) - (a0-30 0) - (a1-13 "ERROR : invalid type '~A' to *camera-combiner* copy-tracking~%") - (v1-25 (-> block param 0)) - ) - (t9-12 a0-30 a1-13 (rtype-of v1-25)) - ) - ) - ((nonzero? (-> self tracking-status)) - #f - ) - (else - (set! (-> self tracking-status) (the-as uint 1)) - (let ((gp-3 (the-as camera-slave (-> block param 0)))) - (set! (-> self tracking-options) (the-as int (-> gp-3 options))) - (set! (-> self tracking no-follow) (-> gp-3 tracking no-follow)) - (copy-cam-float-seeker (-> self tracking tilt-adjust) (-> gp-3 tracking tilt-adjust)) - (copy-cam-float-seeker (-> self tracking underwater-blend) (-> gp-3 tracking underwater-blend)) - (set! (-> self tracking follow-off quad) (-> gp-3 tracking follow-off quad)) - (set! (-> self tracking follow-pt quad) (-> gp-3 tracking follow-pt quad)) - (let* ((a2-17 (-> self tracking)) - (a3-3 (-> gp-3 tracking)) - (v1-36 (-> a3-3 inv-mat vector 0 quad)) - (a0-37 (-> a3-3 inv-mat vector 1 quad)) - (a1-16 (-> a3-3 inv-mat vector 2 quad)) - (a3-4 (-> a3-3 inv-mat vector 3 quad)) - ) - (set! (-> a2-17 inv-mat vector 0 quad) v1-36) - (set! (-> a2-17 inv-mat vector 1 quad) a0-37) - (set! (-> a2-17 inv-mat vector 2 quad) a1-16) - (set! (-> a2-17 inv-mat vector 3 quad) a3-4) - ) - (set! (-> self tracking use-point-of-interest) (-> gp-3 tracking use-point-of-interest)) - (set! (-> self tracking point-of-interest quad) (-> gp-3 tracking point-of-interest quad)) - (copy-cam-float-seeker (-> self tracking point-of-interest-blend) (-> gp-3 tracking point-of-interest-blend)) - ) - ) - ) - ) - ) - ) - :code (behavior () - (local-vars (sv-160 cam-rotation-tracker)) - (loop - (when (and (not (logtest? (-> *camera* master-options) 2)) (!= (-> self tracking-status) 0)) - (set! (-> self tracking-status) (the-as uint 0)) - 0 - ) - (when *camera* - (let ((s5-0 (-> *camera* slave 0)) - (s4-0 (-> *camera* slave 1)) - (f30-0 (parameter-ease-sin-clamp (-> self interp-val))) - (gp-0 (new-stack-vector0)) - ) - (set! (-> gp-0 quad) (-> self trans quad)) - (when s5-0 - (cond - (s4-0 - (vector-lerp-clamp! (-> self trans) (-> s5-0 0 trans) (-> s4-0 0 trans) f30-0) - (set! (-> self fov) (lerp-clamp (-> s5-0 0 fov) (-> s4-0 0 fov) f30-0)) - (set! (-> self dist-from-src) (vector-vector-distance (-> self trans) (-> s5-0 0 trans))) - (set! (-> self dist-from-dest) (vector-vector-distance (-> self trans) (-> s4-0 0 trans))) - (cond - ((= (-> self tracking-status) 1) - (cam-calc-follow! (-> self tracking) (-> self trans) #t) - (slave-set-rotation! - (-> self tracking) - (-> self trans) - (the-as float (-> self tracking-options)) - (-> self fov) - #t - ) - (let* ((a2-4 (-> self inv-camera-rot)) - (a3-2 (-> self tracking)) - (v1-20 (-> a3-2 inv-mat vector 0 quad)) - (a0-10 (-> a3-2 inv-mat vector 1 quad)) - (a1-6 (-> a3-2 inv-mat vector 2 quad)) - (a3-3 (-> a3-2 inv-mat vector 3 quad)) - ) - (set! (-> a2-4 vector 0 quad) v1-20) - (set! (-> a2-4 vector 1 quad) a0-10) - (set! (-> a2-4 vector 2 quad) a1-6) - (set! (-> a2-4 vector 3 quad) a3-3) - ) - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('point-of-interest) + (cond + ((-> block param 0) + (set! (-> self tracking use-point-of-interest) #t) + (set! (-> self tracking point-of-interest quad) (-> (the-as vector (-> block param 0)) quad)) + (set! (-> self tracking point-of-interest-blend target) 1.0)) + (else (set! (-> self tracking use-point-of-interest) #f) (set! (-> self tracking point-of-interest-blend target) 0.0)))) + (('set-interpolation) + (set! (-> self interp-val) 0.0) + (set! (-> self interp-step) (/ 5.0 (the float (-> block param 0))))) + (('teleport) + (when (nonzero? (-> self tracking-status)) + (cam-calc-follow! (-> self tracking) (-> self trans) #f) + (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self tracking-options)) (-> self fov) #f))) + (('stop-tracking) (set! (-> self tracking-status) (the-as uint 0)) 0) + (('start-tracking) + (cond + ((< argc 1) + (let ((t9-2 format) + (a0-15 0) + (a1-3 "ERROR : missing camera-slave parameter to *camera-combiner* start-tracking~%")) + (let ((v1-7 (-> block param 0))) (rtype-of v1-7)) + (t9-2 a0-15 a1-3))) + ((let ((t9-3 type-type?) + (v1-8 (-> block param 0))) + (not (t9-3 (rtype-of v1-8) camera-slave))) + (let ((t9-4 format) + (a0-18 0) + (a1-5 "ERROR : invalid type '~A' to *camera-combiner* start-tracking~%") + (v1-10 (-> block param 0))) + (t9-4 a0-18 a1-5 (rtype-of v1-10)))) + ((zero? (-> self tracking-status)) + (set! (-> self tracking-status) (the-as uint 1)) + (let ((gp-1 (the-as object (-> block param 0)))) + (set! (-> self tracking-options) (the-as int (-> (the-as camera-slave gp-1) options))) + (set! (-> self tracking no-follow) (-> (the-as camera-slave gp-1) tracking no-follow)) + (copy-cam-float-seeker (-> self tracking tilt-adjust) (-> (the-as camera-slave gp-1) tracking tilt-adjust)) + (copy-cam-float-seeker (-> self tracking underwater-blend) (-> (the-as camera-slave gp-1) tracking underwater-blend)) + (set! (-> self tracking use-point-of-interest) (-> (the-as camera-slave gp-1) tracking use-point-of-interest)) + (set! (-> self tracking point-of-interest quad) (-> (the-as camera-slave gp-1) tracking point-of-interest quad)) + (copy-cam-float-seeker (-> self tracking point-of-interest-blend) + (-> (the-as camera-slave gp-1) tracking point-of-interest-blend)) + (let ((gp-2 (+ (the-as uint gp-1) 108))) + (cam-calc-follow! (-> self tracking) (the-as vector gp-2) #f) + (slave-set-rotation! (-> self tracking) (the-as vector gp-2) (the-as float (-> self tracking-options)) (-> self fov) #f)))))) + (('copy-tracking) + (cond + ((< argc 1) + (let ((t9-10 format) + (a0-27 0) + (a1-11 "ERROR : missing camera-slave parameter to *camera-combiner* copy-tracking~%")) + (let ((v1-23 (-> block param 0))) (rtype-of v1-23)) + (t9-10 a0-27 a1-11))) + ((let ((t9-11 type-type?) + (v1-24 (-> block param 0))) + (not (t9-11 (rtype-of v1-24) camera-slave))) + (let ((t9-12 format) + (a0-30 0) + (a1-13 "ERROR : invalid type '~A' to *camera-combiner* copy-tracking~%") + (v1-25 (-> block param 0))) + (t9-12 a0-30 a1-13 (rtype-of v1-25)))) + ((nonzero? (-> self tracking-status)) #f) + (else + (set! (-> self tracking-status) (the-as uint 1)) + (let ((gp-3 (the-as camera-slave (-> block param 0)))) + (set! (-> self tracking-options) (the-as int (-> gp-3 options))) + (set! (-> self tracking no-follow) (-> gp-3 tracking no-follow)) + (copy-cam-float-seeker (-> self tracking tilt-adjust) (-> gp-3 tracking tilt-adjust)) + (copy-cam-float-seeker (-> self tracking underwater-blend) (-> gp-3 tracking underwater-blend)) + (set! (-> self tracking follow-off quad) (-> gp-3 tracking follow-off quad)) + (set! (-> self tracking follow-pt quad) (-> gp-3 tracking follow-pt quad)) + (let* ((a2-17 (-> self tracking)) + (a3-3 (-> gp-3 tracking)) + (v1-36 (-> a3-3 inv-mat vector 0 quad)) + (a0-37 (-> a3-3 inv-mat vector 1 quad)) + (a1-16 (-> a3-3 inv-mat vector 2 quad)) + (a3-4 (-> a3-3 inv-mat vector 3 quad))) + (set! (-> a2-17 inv-mat vector 0 quad) v1-36) + (set! (-> a2-17 inv-mat vector 1 quad) a0-37) + (set! (-> a2-17 inv-mat vector 2 quad) a1-16) + (set! (-> a2-17 inv-mat vector 3 quad) a3-4)) + (set! (-> self tracking use-point-of-interest) (-> gp-3 tracking use-point-of-interest)) + (set! (-> self tracking point-of-interest quad) (-> gp-3 tracking point-of-interest quad)) + (copy-cam-float-seeker (-> self tracking point-of-interest-blend) (-> gp-3 tracking point-of-interest-blend)))))))) + :code + (behavior () + (local-vars (sv-160 cam-rotation-tracker)) + (loop + (when (and (not (logtest? (-> *camera* master-options) 2)) (!= (-> self tracking-status) 0)) + (set! (-> self tracking-status) (the-as uint 0)) + 0) + (when *camera* + (let ((s5-0 (-> *camera* slave 0)) + (s4-0 (-> *camera* slave 1)) + (f30-0 (parameter-ease-sin-clamp (-> self interp-val))) + (gp-0 (new-stack-vector0))) + (set! (-> gp-0 quad) (-> self trans quad)) + (when s5-0 + (cond + (s4-0 + (vector-lerp-clamp! (-> self trans) (-> s5-0 0 trans) (-> s4-0 0 trans) f30-0) + (set! (-> self fov) (lerp-clamp (-> s5-0 0 fov) (-> s4-0 0 fov) f30-0)) + (set! (-> self dist-from-src) (vector-vector-distance (-> self trans) (-> s5-0 0 trans))) + (set! (-> self dist-from-dest) (vector-vector-distance (-> self trans) (-> s4-0 0 trans))) + (cond + ((= (-> self tracking-status) 1) + (cam-calc-follow! (-> self tracking) (-> self trans) #t) + (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self tracking-options)) (-> self fov) #t) + (let* ((a2-4 (-> self inv-camera-rot)) + (a3-2 (-> self tracking)) + (v1-20 (-> a3-2 inv-mat vector 0 quad)) + (a0-10 (-> a3-2 inv-mat vector 1 quad)) + (a1-6 (-> a3-2 inv-mat vector 2 quad)) + (a3-3 (-> a3-2 inv-mat vector 3 quad))) + (set! (-> a2-4 vector 0 quad) v1-20) + (set! (-> a2-4 vector 1 quad) a0-10) + (set! (-> a2-4 vector 2 quad) a1-6) + (set! (-> a2-4 vector 3 quad) a3-3))) + (else (set! sv-160 (-> s5-0 0 tracking)) (let ((s2-0 (-> s5-0 0 trans)) (s5-1 (-> s4-0 0 tracking)) - (s0-0 (-> s4-0 0 trans)) - ) + (s0-0 (-> s4-0 0 trans))) (cond ((= (-> self tracking-status) 3) (cam-calc-follow! (-> self tracking) s2-0 #t) (slave-set-rotation! (-> self tracking) s2-0 (the-as float (-> self tracking-options)) (-> self fov) #t) (set! sv-160 (-> self tracking)) - (set! s2-0 (-> self trans)) - ) + (set! s2-0 (-> self trans))) ((= (-> self tracking-status) 2) (cam-calc-follow! (-> self tracking) s0-0 #t) (slave-set-rotation! (-> self tracking) s0-0 (the-as float (-> self tracking-options)) (-> self fov) #t) (set! s5-1 (-> self tracking)) - (set! s0-0 (-> self trans)) - ) - ) + (set! s0-0 (-> self trans)))) (let ((s1-0 (new 'stack-no-clear 'matrix))) (dotimes (v1-35 3) - (set! (-> s1-0 vector v1-35 quad) (the-as uint128 0)) - ) + (set! (-> s1-0 vector v1-35 quad) (the-as uint128 0))) 0.0 0.0 0.0 (let ((s4-1 (new-stack-vector0))) 0.0 (let ((s3-0 (new-stack-matrix0))) - (vector-! - (the-as vector (-> s1-0 vector)) - (the-as vector (-> sv-160 inv-mat)) - (the-as vector (-> s5-1 inv-mat)) - ) + (vector-! (the-as vector (-> s1-0 vector)) (the-as vector (-> sv-160 inv-mat)) (the-as vector (-> s5-1 inv-mat))) (vector-! (-> s1-0 vector 1) (-> sv-160 inv-mat vector 1) (-> s5-1 inv-mat vector 1)) (vector-! (-> s1-0 vector 2) (-> sv-160 inv-mat vector 2) (-> s5-1 inv-mat vector 2)) (let ((f26-0 (vector-length (the-as vector (-> s1-0 vector)))) (f28-0 (vector-length (-> s1-0 vector 1))) - (f0-13 (vector-length (-> s1-0 vector 2))) - ) + (f0-13 (vector-length (-> s1-0 vector 2)))) (cond - ((and (< f26-0 f28-0) (< f26-0 f0-13)) - (vector-cross! s4-1 (-> s1-0 vector 1) (-> s1-0 vector 2)) - ) - ((and (< f28-0 f26-0) (< f28-0 f0-13)) - (vector-cross! s4-1 (the-as vector (-> s1-0 vector)) (-> s1-0 vector 2)) - ) - (else - (vector-cross! s4-1 (the-as vector (-> s1-0 vector)) (-> s1-0 vector 1)) - ) - ) - ) + ((and (< f26-0 f28-0) (< f26-0 f0-13)) (vector-cross! s4-1 (-> s1-0 vector 1) (-> s1-0 vector 2))) + ((and (< f28-0 f26-0) (< f28-0 f0-13)) (vector-cross! s4-1 (the-as vector (-> s1-0 vector)) (-> s1-0 vector 2))) + (else (vector-cross! s4-1 (the-as vector (-> s1-0 vector)) (-> s1-0 vector 1))))) (vector-normalize! s4-1 1.0) (let ((f0-16 (fabs (vector-dot (the-as vector (-> sv-160 inv-mat)) s4-1))) (f1-2 (fabs (vector-dot (-> sv-160 inv-mat vector 1) s4-1))) - (f2-2 (fabs (vector-dot (-> sv-160 inv-mat vector 2) s4-1))) - ) + (f2-2 (fabs (vector-dot (-> sv-160 inv-mat vector 2) s4-1)))) (cond ((and (< f0-16 f1-2) (< f0-16 f2-2)) (vector-flatten! (the-as vector (-> s1-0 vector)) (the-as vector (-> sv-160 inv-mat)) s4-1) - (vector-flatten! (-> s1-0 vector 1) (the-as vector (-> s5-1 inv-mat)) s4-1) - ) + (vector-flatten! (-> s1-0 vector 1) (the-as vector (-> s5-1 inv-mat)) s4-1)) ((< f1-2 f2-2) (vector-flatten! (the-as vector (-> s1-0 vector)) (-> sv-160 inv-mat vector 1) s4-1) - (vector-flatten! (-> s1-0 vector 1) (-> s5-1 inv-mat vector 1) s4-1) - ) + (vector-flatten! (-> s1-0 vector 1) (-> s5-1 inv-mat vector 1) s4-1)) (else - (vector-flatten! (the-as vector (-> s1-0 vector)) (-> sv-160 inv-mat vector 2) s4-1) - (vector-flatten! (-> s1-0 vector 1) (-> s5-1 inv-mat vector 2) s4-1) - ) - ) - ) + (vector-flatten! (the-as vector (-> s1-0 vector)) (-> sv-160 inv-mat vector 2) s4-1) + (vector-flatten! (-> s1-0 vector 1) (-> s5-1 inv-mat vector 2) s4-1)))) (vector-normalize! (the-as vector (-> s1-0 vector)) 1.0) (vector-normalize! (-> s1-0 vector 1) 1.0) (vector-cross! (-> s1-0 vector 2) (the-as vector (-> s1-0 vector)) (-> s1-0 vector 1)) - (if (< (vector-dot (-> s1-0 vector 2) s4-1) 0.0) - (vector-negate! s4-1 s4-1) - ) + (if (< (vector-dot (-> s1-0 vector 2) s4-1) 0.0) (vector-negate! s4-1 s4-1)) (let ((f28-1 (acos (vector-dot (the-as vector (-> s1-0 vector)) (-> s1-0 vector 1))))) (cond ((logtest? (-> *camera* master-options) 8) @@ -297,136 +191,75 @@ (vector-flatten! (the-as vector (-> s1-0 vector)) (the-as vector (-> s1-0 vector)) (-> *camera* local-down)) (vector-flatten! (-> s1-0 vector 1) (-> s1-0 vector 1) (-> *camera* local-down)) (when (and (< 4096.0 (vector-normalize-ret-len! (the-as vector (-> s1-0 vector)) 1.0)) - (< 4096.0 (vector-normalize-ret-len! (-> s1-0 vector 1) 1.0)) - ) + (< 4096.0 (vector-normalize-ret-len! (-> s1-0 vector 1) 1.0))) (vector-cross! (-> s1-0 vector 2) (-> s1-0 vector 1) (the-as vector (-> s1-0 vector))) - (when (< (vector-dot (-> s1-0 vector 2) s4-1) -0.01) - ) - ) - ) - ) + (when (< (vector-dot (-> s1-0 vector 2) s4-1) -0.01))))) ((and (< 16384.0 f28-1) (< (vector-dot (-> self flip-control-axis) s4-1) 0.0)) - (logxor! (-> *camera* master-options) 16) - ) - ) + (logxor! (-> *camera* master-options) 16))) (set! (-> self flip-control-axis quad) (-> s4-1 quad)) (when (logtest? (-> *camera* master-options) 16) (set! f28-1 (- 65536.0 f28-1)) - (vector-negate! s4-1 s4-1) - ) - (let ((f30-1 (* f28-1 (- 1.0 f30-0)))) - (matrix-axis-sin-cos! s3-0 s4-1 (sin f30-1) (cos f30-1)) - ) - ) - (matrix*! (-> self inv-camera-rot) (the-as matrix s5-1) s3-0) - ) - ) - ) - ) - ) - ) - (cond - ((and (< 0.0 (-> *camera* outro-t-step)) (< (-> *camera* outro-t) (-> *camera* outro-exit-value))) - ) - ((and (< (-> *camera* outro-t-step) 0.0) (< (-> *camera* outro-exit-value) (-> *camera* outro-t))) - ) - ((paused?) - ) - (else - (+! (-> self interp-val) (* (-> self interp-step) (-> *display* time-adjust-ratio))) - ) - ) - (when (>= (-> self interp-val) 1.0) - (deactivate (-> *camera* slave 0 0)) - (set! (-> *camera* slave 0) (-> *camera* slave 1)) - (set! (-> *camera* slave 1) (the-as (pointer camera-slave) #f)) - (+! (-> *camera* num-slaves) -1) - ) - ) - (else - (set! (-> self dist-from-src) 409600.0) - (set! (-> self dist-from-dest) 0.0) - (set! (-> self trans quad) (-> s5-0 0 trans quad)) - (set! (-> self fov) (-> s5-0 0 fov)) - (cond - ((= (-> self tracking-status) 2) - (set! (-> self tracking-status) (the-as uint 1)) - ) - ((= (-> self tracking-status) 3) - (set! (-> self tracking-status) (the-as uint 0)) - 0 - ) - ) - (cond - ((= (-> self tracking-status) 1) - (cam-calc-follow! (-> self tracking) (-> self trans) #t) - (slave-set-rotation! - (-> self tracking) - (-> self trans) - (the-as float (-> self tracking-options)) - (-> self fov) - #t - ) - (let* ((v1-143 (-> self inv-camera-rot)) - (a3-8 (-> self tracking)) - (a0-80 (-> a3-8 inv-mat vector 0 quad)) - (a1-45 (-> a3-8 inv-mat vector 1 quad)) - (a2-21 (-> a3-8 inv-mat vector 2 quad)) - (a3-9 (-> a3-8 inv-mat vector 3 quad)) - ) - (set! (-> v1-143 vector 0 quad) a0-80) - (set! (-> v1-143 vector 1 quad) a1-45) - (set! (-> v1-143 vector 2 quad) a2-21) - (set! (-> v1-143 vector 3 quad) a3-9) - ) - ) - (else + (vector-negate! s4-1 s4-1)) + (let ((f30-1 (* f28-1 (- 1.0 f30-0)))) (matrix-axis-sin-cos! s3-0 s4-1 (sin f30-1) (cos f30-1)))) + (matrix*! (-> self inv-camera-rot) (the-as matrix s5-1) s3-0))))))) + (cond + ((and (< 0.0 (-> *camera* outro-t-step)) (< (-> *camera* outro-t) (-> *camera* outro-exit-value)))) + ((and (< (-> *camera* outro-t-step) 0.0) (< (-> *camera* outro-exit-value) (-> *camera* outro-t)))) + ((paused?)) + (else (+! (-> self interp-val) (* (-> self interp-step) (-> *display* time-adjust-ratio))))) + (when (>= (-> self interp-val) 1.0) + (deactivate (-> *camera* slave 0 0)) + (set! (-> *camera* slave 0) (-> *camera* slave 1)) + (set! (-> *camera* slave 1) (the-as (pointer camera-slave) #f)) + (+! (-> *camera* num-slaves) -1))) + (else + (set! (-> self dist-from-src) 409600.0) + (set! (-> self dist-from-dest) 0.0) + (set! (-> self trans quad) (-> s5-0 0 trans quad)) + (set! (-> self fov) (-> s5-0 0 fov)) + (cond + ((= (-> self tracking-status) 2) (set! (-> self tracking-status) (the-as uint 1))) + ((= (-> self tracking-status) 3) (set! (-> self tracking-status) (the-as uint 0)) 0)) + (cond + ((= (-> self tracking-status) 1) + (cam-calc-follow! (-> self tracking) (-> self trans) #t) + (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self tracking-options)) (-> self fov) #t) + (let* ((v1-143 (-> self inv-camera-rot)) + (a3-8 (-> self tracking)) + (a0-80 (-> a3-8 inv-mat vector 0 quad)) + (a1-45 (-> a3-8 inv-mat vector 1 quad)) + (a2-21 (-> a3-8 inv-mat vector 2 quad)) + (a3-9 (-> a3-8 inv-mat vector 3 quad))) + (set! (-> v1-143 vector 0 quad) a0-80) + (set! (-> v1-143 vector 1 quad) a1-45) + (set! (-> v1-143 vector 2 quad) a2-21) + (set! (-> v1-143 vector 3 quad) a3-9))) + (else (let* ((v1-144 (-> self inv-camera-rot)) (a3-10 (-> s5-0 0 tracking)) (a0-82 (-> a3-10 inv-mat vector 0 quad)) (a1-46 (-> a3-10 inv-mat vector 1 quad)) (a2-22 (-> a3-10 inv-mat vector 2 quad)) - (a3-11 (-> a3-10 inv-mat vector 3 quad)) - ) + (a3-11 (-> a3-10 inv-mat vector 3 quad))) (set! (-> v1-144 vector 0 quad) a0-82) (set! (-> v1-144 vector 1 quad) a1-46) (set! (-> v1-144 vector 2 quad) a2-22) - (set! (-> v1-144 vector 3 quad) a3-11) - ) - ) - ) - ) - ) - ) - (vector-! (-> self velocity) (-> self trans) gp-0) - ) - ) - (if (and *dproc* *debug-segment*) - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'camera - (new 'static 'rgba :b #xff :a #x80) - ) - ) - (suspend) - ) - ) - ) + (set! (-> v1-144 vector 3 quad) a3-11))))))) + (vector-! (-> self velocity) (-> self trans) gp-0))) + (if (and *dproc* *debug-segment*) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) 'camera (new 'static 'rgba :b #xff :a #x80))) + (suspend)))) (defbehavior cam-combiner-init camera-combiner () (stack-size-set! (-> self main-thread) 512) (set! *camera-combiner* self) (vector-reset! (-> self trans)) (matrix-identity! (-> self inv-camera-rot)) - (if *math-camera* - (set! (-> self fov) (-> *math-camera* fov)) - (set! (-> self fov) 11650.845) - ) + (if *math-camera* (set! (-> self fov) (-> *math-camera* fov)) (set! (-> self fov) 11650.845)) (set! (-> self interp-val) 0.0) (set! (-> self interp-step) 0.125) (set! (-> self tracking-status) (the-as uint 0)) (vector-reset! (-> self velocity)) (go cam-combiner-active) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/camera/cam-debug-h.gc b/goal_src/jak1/engine/camera/cam-debug-h.gc index 74cd2b5a8b..ab10333e52 100644 --- a/goal_src/jak1/engine/camera/cam-debug-h.gc +++ b/goal_src/jak1/engine/camera/cam-debug-h.gc @@ -1,47 +1,70 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: cam-debug-h.gc -;; name in dgo: cam-debug-h -;; dgos: GAME, ENGINE - ;; TODO - for misty-obs (define-extern *camera-old-level* string) ;; unknown type + (define-extern *camera-old-cpu* int) ;; unknown type + (define-extern *camera-old-vu* int) ;; unknown type + (define-extern *camera-old-tfrag-bytes* int) ;; unknown type + (define-extern *camera-old-stat-string-tfrag* string) ;; unknown type + (define-extern *camera-old-stat-string-tfrag-near* string) ;; unknown type + (define-extern *camera-old-stat-string-total* string) ;; unknown type + ;; TODO - for cam-layout (define-extern camera-line-setup (function vector4w none)) + (define-extern camera-line-draw (function vector vector symbol)) + (define-extern camera-line (function vector vector vector4w none)) + (define-extern camera-cross (function vector vector vector vector4w meters basic)) + (define-extern camera-fov-frame (function matrix vector float float float vector4w none)) + (define-extern cam-slave-options->string (function cam-slave-options object string)) + (define-extern cam-index-options->string (function cam-index-options object string)) + (define-extern debug-set-camera-pos-rot! (function vector matrix vector)) + (define-extern camera-slave-debug (function camera-slave none)) + ;; TODO - for cam-states (define-extern cam-debug-add-los-tri (function (inline-array collide-cache-tri) vector vector none)) + (define-extern cam-collision-record-save (function vector vector int symbol camera-slave none)) + (define-extern slave-los-state->string (function slave-los-state string)) + (define-extern cam-debug-reset-coll-tri (function none)) ;; not confirmed + ;; TODO - for rolling-lightning-mole (define-extern camera-line-rel (function vector vector vector4w none)) (declare-type clm basic) + (define-extern *clm* clm) ;; unknown type + (define-extern *clm-edit* clm) + (define-extern *clm-focalpull-attr* clm) ;; unknown type + (define-extern *clm-index-attr* clm) ;; unknown type + (define-extern *clm-intro-attr* clm) ;; unknown type + (define-extern *clm-spline-attr* clm) ;; unknown type + (define-extern *clm-vol-attr* clm) ;; unknown type + (define-extern *clm-select* clm) ;; unknown type ;; DECOMP BEGINS @@ -58,16 +81,11 @@ (set! *redline-index* (+ *redline-index* 1)) (when (>= *redline-index* 400) (set! *redline-index* 0) - 0 - ) - (none) - ) + 0) + (none)) (defun float-lookup-redline ((arg0 float)) - (let ((a0-3 (mod (+ (the int arg0) -1 *redline-index*) 400))) - (-> *redline-table* a0-3) - ) - ) + (let ((a0-3 (mod (+ (the int arg0) -1 *redline-index*) 400))) (-> *redline-table* a0-3))) (define *blueline-table* (the-as (pointer float) (malloc 'debug 1600))) @@ -78,16 +96,11 @@ (set! *blueline-index* (+ *blueline-index* 1)) (when (>= *blueline-index* 400) (set! *blueline-index* 0) - 0 - ) - (none) - ) + 0) + (none)) (defun float-lookup-blueline ((arg0 float)) - (let ((a0-3 (mod (+ (the int arg0) -1 *blueline-index*) 400))) - (-> *blueline-table* a0-3) - ) - ) + (let ((a0-3 (mod (+ (the int arg0) -1 *blueline-index*) 400))) (-> *blueline-table* a0-3))) (define *greenline-table* (the-as (pointer float) (malloc 'debug 1600))) @@ -98,16 +111,11 @@ (set! *greenline-index* (+ *greenline-index* 1)) (when (>= *greenline-index* 400) (set! *greenline-index* 0) - 0 - ) - (none) - ) + 0) + (none)) (defun float-lookup-greenline ((arg0 float)) - (let ((a0-3 (mod (+ (the int arg0) -1 *greenline-index*) 400))) - (-> *greenline-table* a0-3) - ) - ) + (let ((a0-3 (mod (+ (the int arg0) -1 *greenline-index*) 400))) (-> *greenline-table* a0-3))) (define *yellowline-table* (the-as (pointer float) (malloc 'debug 1600))) @@ -118,16 +126,11 @@ (set! *yellowline-index* (+ *yellowline-index* 1)) (when (>= *yellowline-index* 400) (set! *yellowline-index* 0) - 0 - ) - (none) - ) + 0) + (none)) (defun float-lookup-yellowline ((arg0 float)) - (let ((a0-3 (mod (+ (the int arg0) -1 *yellowline-index*) 400))) - (-> *yellowline-table* a0-3) - ) - ) + (let ((a0-3 (mod (+ (the int arg0) -1 *yellowline-index*) 400))) (-> *yellowline-table* a0-3))) (define *timeplot-table* (the-as (pointer float) (malloc 'debug 1600))) @@ -138,20 +141,12 @@ (set! *timeplot-index* (+ *timeplot-index* 1)) (when (>= *timeplot-index* 400) (set! *timeplot-index* 0) - 0 - ) - (none) - ) + 0) + (none)) (defun float-lookup-timeplot ((arg0 float)) - (let ((a0-3 (mod (+ (the int arg0) -1 *timeplot-index*) 400))) - (-> *timeplot-table* a0-3) - ) - ) + (let ((a0-3 (mod (+ (the int arg0) -1 *timeplot-index*) 400))) (-> *timeplot-table* a0-3))) (define-perm *cam-layout* symbol #f) 0 - - - diff --git a/goal_src/jak1/engine/camera/cam-debug.gc b/goal_src/jak1/engine/camera/cam-debug.gc index 4d721788ed..6cd596665d 100644 --- a/goal_src/jak1/engine/camera/cam-debug.gc +++ b/goal_src/jak1/engine/camera/cam-debug.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/pat-h.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/math/euler.gc") @@ -10,10 +9,6 @@ (require "engine/collide/collide-mesh-h.gc") (require "engine/camera/camera.gc") -;; name: cam-debug.gc -;; name in dgo: cam-debug -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; this file is debug only @@ -22,20 +17,17 @@ ;; failed to figure out what this is: (when (or (not *camera-old-cpu*) (zero? *camera-old-cpu*)) (set! *camera-old-cpu* 0) - 0 - ) + 0) ;; failed to figure out what this is: (when (or (not *camera-old-vu*) (zero? *camera-old-vu*)) (set! *camera-old-vu* 0) - 0 - ) + 0) ;; failed to figure out what this is: (when (or (not *camera-old-tfrag-bytes*) (zero? *camera-old-tfrag-bytes*)) (set! *camera-old-tfrag-bytes* 0) - 0 - ) + 0) ;; definition (perm) for symbol *camera-old-level*, type string (define-perm *camera-old-level* string (new 'global 'string 128 (the-as string #f))) @@ -51,30 +43,28 @@ ;; definition of type cam-dbg-scratch (deftype cam-dbg-scratch (structure) - ((linevec4w vector4w 2 :inline :offset-assert 0) - (color vector :inline :offset-assert 32) - (plotvec vector4w 2 :inline :offset-assert 48) - (linevec vector4w 2 :inline :offset-assert 80) - (rel-vec vector :inline :offset-assert 112) - (sphere-v-start vector :inline :offset-assert 128) - (sphere-v-end vector :inline :offset-assert 144) - (sphere-v-down vector :inline :offset-assert 160) - (sphere-vec vector :inline :offset-assert 176) - (crossvec vector 3 :inline :offset-assert 192) - (bboxvec vector 6 :inline :offset-assert 240) - (fov-vv vector 4 :inline :offset-assert 336) - (fov-src vector :inline :offset-assert 400) - (fov-dest vector :inline :offset-assert 416) - (fov-vert vector :inline :offset-assert 432) - (fov-horz vector :inline :offset-assert 448) - ) + ((linevec4w vector4w 2 :inline :offset-assert 0) + (color vector :inline :offset-assert 32) + (plotvec vector4w 2 :inline :offset-assert 48) + (linevec vector4w 2 :inline :offset-assert 80) + (rel-vec vector :inline :offset-assert 112) + (sphere-v-start vector :inline :offset-assert 128) + (sphere-v-end vector :inline :offset-assert 144) + (sphere-v-down vector :inline :offset-assert 160) + (sphere-vec vector :inline :offset-assert 176) + (crossvec vector 3 :inline :offset-assert 192) + (bboxvec vector 6 :inline :offset-assert 240) + (fov-vv vector 4 :inline :offset-assert 336) + (fov-src vector :inline :offset-assert 400) + (fov-dest vector :inline :offset-assert 416) + (fov-vert vector :inline :offset-assert 432) + (fov-horz vector :inline :offset-assert 448)) :method-count-assert 9 - :size-assert #x1d0 - :flag-assert #x9000001d0 - ) + :size-assert #x1d0 + :flag-assert #x9000001d0) ;; definition for method 3 of type cam-dbg-scratch -(defmethod inspect cam-dbg-scratch ((obj cam-dbg-scratch)) +(defmethod inspect ((obj cam-dbg-scratch)) (format #t "[~8x] ~A~%" obj 'cam-dbg-scratch) (format #t "~Tlinevec4w[2] @ #x~X~%" (-> obj linevec4w)) (format #t "~Tcolor: ~`vector`P~%" (-> obj color)) @@ -92,181 +82,111 @@ (format #t "~Tfov-dest: ~`vector`P~%" (-> obj fov-dest)) (format #t "~Tfov-vert: ~`vector`P~%" (-> obj fov-vert)) (format #t "~Tfov-horz: ~`vector`P~%" (-> obj fov-horz)) - obj - ) + obj) ;; definition for function cam-slave-options->string ;; INFO: Return type mismatch object vs string. (defun cam-slave-options->string ((arg0 cam-slave-options) (arg1 object)) - (if (= (logand (cam-slave-options AIR_EXIT) arg0) (cam-slave-options AIR_EXIT)) - (format arg1 "AIR_EXIT ") - ) - (if (= (logand (cam-slave-options STICKY_ANGLE) arg0) (cam-slave-options STICKY_ANGLE)) - (format arg1 "STICKY_ANGLE ") - ) - (if (= (logand arg0 (cam-slave-options NO_ROTATE)) (cam-slave-options NO_ROTATE)) - (format arg1 "NO_ROTATE ") - ) - (if (= (logand arg0 (cam-slave-options BIKE_MODE)) (cam-slave-options BIKE_MODE)) - (format arg1 "BIKE_MODE ") - ) + (if (= (logand (cam-slave-options AIR_EXIT) arg0) (cam-slave-options AIR_EXIT)) (format arg1 "AIR_EXIT ")) + (if (= (logand (cam-slave-options STICKY_ANGLE) arg0) (cam-slave-options STICKY_ANGLE)) (format arg1 "STICKY_ANGLE ")) + (if (= (logand arg0 (cam-slave-options NO_ROTATE)) (cam-slave-options NO_ROTATE)) (format arg1 "NO_ROTATE ")) + (if (= (logand arg0 (cam-slave-options BIKE_MODE)) (cam-slave-options BIKE_MODE)) (format arg1 "BIKE_MODE ")) (if (= (logand arg0 (cam-slave-options BLOCK_SHIFT_BUTTONS)) (cam-slave-options BLOCK_SHIFT_BUTTONS)) - (format arg1 "BLOCK_SHIFT_BUTTONS ") - ) + (format arg1 "BLOCK_SHIFT_BUTTONS ")) (if (= (logand arg0 (cam-slave-options GOTO_GOOD_POINT)) (cam-slave-options GOTO_GOOD_POINT)) - (format arg1 "GOTO_GOOD_POINT ") - ) + (format arg1 "GOTO_GOOD_POINT ")) (if (= (logand arg0 (cam-slave-options SHRINK_MAX_ANGLE)) (cam-slave-options SHRINK_MAX_ANGLE)) - (format arg1 "SHRINK_MAX_ANGLE ") - ) + (format arg1 "SHRINK_MAX_ANGLE ")) (if (= (logand arg0 (cam-slave-options MOVEMENT_BLOCKED)) (cam-slave-options MOVEMENT_BLOCKED)) - (format arg1 "MOVEMENT_BLOCKED ") - ) - (if (= (logand arg0 (cam-slave-options LINE_OF_SIGHT)) (cam-slave-options LINE_OF_SIGHT)) - (format arg1 "LINE_OF_SIGHT ") - ) + (format arg1 "MOVEMENT_BLOCKED ")) + (if (= (logand arg0 (cam-slave-options LINE_OF_SIGHT)) (cam-slave-options LINE_OF_SIGHT)) (format arg1 "LINE_OF_SIGHT ")) (if (= (logand arg0 (cam-slave-options PLAYER_MOVING_CAMERA)) (cam-slave-options PLAYER_MOVING_CAMERA)) - (format arg1 "PLAYER_MOVING_CAMERA ") - ) - (if (= (logand arg0 (cam-slave-options DRAG)) (cam-slave-options DRAG)) - (format arg1 "DRAG ") - ) + (format arg1 "PLAYER_MOVING_CAMERA ")) + (if (= (logand arg0 (cam-slave-options DRAG)) (cam-slave-options DRAG)) (format arg1 "DRAG ")) (if (= (logand arg0 (cam-slave-options FIND_HIDDEN_TARGET)) (cam-slave-options FIND_HIDDEN_TARGET)) - (format arg1 "FIND_HIDDEN_TARGET ") - ) - (if (= (logand arg0 (cam-slave-options COLLIDE)) (cam-slave-options COLLIDE)) - (format arg1 "COLLIDE ") - ) - (if (= (logand arg0 (cam-slave-options JUMP_PITCHES)) (cam-slave-options JUMP_PITCHES)) - (format arg1 "JUMP_PITCHES ") - ) - (if (= (logand arg0 (cam-slave-options ALLOW_Z_ROT)) (cam-slave-options ALLOW_Z_ROT)) - (format arg1 "ALLOW_Z_ROT ") - ) - (if (= (logand arg0 (cam-slave-options MOVE_SPHERICAL)) (cam-slave-options MOVE_SPHERICAL)) - (format arg1 "MOVE_SPHERICAL ") - ) - (if (= (logand arg0 (cam-slave-options SAME_SIDE)) (cam-slave-options SAME_SIDE)) - (format arg1 "SAME_SIDE ") - ) - (if (= (logand arg0 (cam-slave-options BUTT_CAM)) (cam-slave-options BUTT_CAM)) - (format arg1 "BUTT_CAM ") - ) - (the-as string arg1) - ) + (format arg1 "FIND_HIDDEN_TARGET ")) + (if (= (logand arg0 (cam-slave-options COLLIDE)) (cam-slave-options COLLIDE)) (format arg1 "COLLIDE ")) + (if (= (logand arg0 (cam-slave-options JUMP_PITCHES)) (cam-slave-options JUMP_PITCHES)) (format arg1 "JUMP_PITCHES ")) + (if (= (logand arg0 (cam-slave-options ALLOW_Z_ROT)) (cam-slave-options ALLOW_Z_ROT)) (format arg1 "ALLOW_Z_ROT ")) + (if (= (logand arg0 (cam-slave-options MOVE_SPHERICAL)) (cam-slave-options MOVE_SPHERICAL)) (format arg1 "MOVE_SPHERICAL ")) + (if (= (logand arg0 (cam-slave-options SAME_SIDE)) (cam-slave-options SAME_SIDE)) (format arg1 "SAME_SIDE ")) + (if (= (logand arg0 (cam-slave-options BUTT_CAM)) (cam-slave-options BUTT_CAM)) (format arg1 "BUTT_CAM ")) + (the-as string arg1)) ;; definition for function cam-index-options->string ;; INFO: Return type mismatch object vs string. (defun cam-index-options->string ((arg0 cam-index-options) (arg1 object)) - (if (= (logand arg0 (cam-index-options SPHERICAL)) (cam-index-options SPHERICAL)) - (format arg1 "RADIAL ") - ) - (if (= (logand arg0 (cam-index-options RADIAL)) (cam-index-options RADIAL)) - (format arg1 "SPHERICAL ") - ) - (the-as string arg1) - ) + (if (= (logand arg0 (cam-index-options SPHERICAL)) (cam-index-options SPHERICAL)) (format arg1 "RADIAL ")) + (if (= (logand arg0 (cam-index-options RADIAL)) (cam-index-options RADIAL)) (format arg1 "SPHERICAL ")) + (the-as string arg1)) ;; definition for function slave-los-state->string (defun slave-los-state->string ((arg0 slave-los-state)) (case arg0 - (((slave-los-state between)) - "between" - ) - (((slave-los-state ccw)) - "ccw" - ) - (((slave-los-state cw)) - "cw" - ) - (((slave-los-state none)) - "none" - ) - (else - "*unknown*" - ) - ) - ) + (((slave-los-state between)) "between") + (((slave-los-state ccw)) "ccw") + (((slave-los-state cw)) "cw") + (((slave-los-state none)) "none") + (else "*unknown*"))) ;; definition for function cam-line-dma ;; Used lq/sq (defun cam-line-dma () (let* ((v1-3 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (a2-0 (-> v1-3 base)) - ) + (a2-0 (-> v1-3 base))) (let ((a0-3 (the-as object (-> v1-3 base)))) (let* ((a1-0 v1-3) - (a3-0 (the-as object (-> a1-0 base))) - ) + (a3-0 (the-as object (-> a1-0 base)))) (set! (-> (the-as dma-packet a3-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a3-0) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a3-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-0 base) (&+ (the-as pointer a3-0) 16)) - ) + (set! (-> a1-0 base) (&+ (the-as pointer a3-0) 16))) (let* ((a1-1 v1-3) - (a3-2 (the-as object (-> a1-1 base))) - ) + (a3-2 (the-as object (-> a1-1 base)))) (set! (-> (the-as gs-gif-tag a3-2) tag) - (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) - :nreg #x4 - ) - ) + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) + :nreg #x4)) (set! (-> (the-as gs-gif-tag a3-2) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id xyzf2) - :regs2 (gif-reg-id rgbaq) - :regs3 (gif-reg-id xyzf2) - ) - ) - (set! (-> a1-1 base) (&+ (the-as pointer a3-2) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id xyzf2) + :regs2 (gif-reg-id rgbaq) + :regs3 (gif-reg-id xyzf2))) + (set! (-> a1-1 base) (&+ (the-as pointer a3-2) 16))) (let* ((a1-2 v1-3) - (a3-4 (-> a1-2 base)) - ) + (a3-4 (-> a1-2 base))) (set! (-> (the-as (pointer uint128) a3-4) 0) (-> (the-as vector (+ 32 (scratchpad-object int))) quad)) - (set! (-> (the-as (pointer uint128) a3-4) 1) (-> (the-as vector (-> (scratchpad-object cam-dbg-scratch) linevec4w)) quad)) - (set! (-> a1-2 base) (&+ a3-4 32)) - ) + (set! (-> (the-as (pointer uint128) a3-4) 1) + (-> (the-as vector (-> (scratchpad-object cam-dbg-scratch) linevec4w)) quad)) + (set! (-> a1-2 base) (&+ a3-4 32))) (let* ((a3-6 v1-3) - (a1-3 (-> a3-6 base)) - ) + (a1-3 (-> a3-6 base))) (set! (-> (the-as (pointer uint128) a1-3) 0) (-> (the-as vector (+ 32 (scratchpad-object int))) quad)) (set! (-> (the-as (pointer uint128) a1-3) 1) (-> (the-as vector (+ 16 (scratchpad-object int))) quad)) - (set! (-> a3-6 base) (&+ a1-3 32)) - ) + (set! (-> a3-6 base) (&+ a1-3 32))) (let ((a3-10 (/ (the-as int (+ (- -16 (the-as int a0-3)) (the-as int (-> v1-3 base)))) 16))) (cond ((nonzero? a3-10) (logior! (-> (the-as dma-packet a0-3) dma) (shr (shl a3-10 48) 48)) - (logior! (-> (the-as (pointer uint64) a0-3) 1) (shl (shr (shl a3-10 48) 48) 32)) - ) - (else - (set! (-> v1-3 base) (the-as (pointer uint64) a0-3)) - ) - ) - ) - ) + (logior! (-> (the-as (pointer uint64) a0-3) 1) (shl (shr (shl a3-10 48) 48) 32))) + (else (set! (-> v1-3 base) (the-as (pointer uint64) a0-3)))))) (let ((a3-16 (-> v1-3 base))) (let ((a0-4 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag)) - (set! (-> v1-3 base) (&+ (the-as pointer a0-4) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug-no-zbuf) - a2-0 - (the-as (pointer dma-tag) a3-16) - ) - ) - ) - ) + (set! (-> v1-3 base) (&+ (the-as pointer a0-4) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug-no-zbuf) + a2-0 + (the-as (pointer dma-tag) a3-16))))) ;; definition for function camera-line2d (defun camera-line2d ((arg0 vector4w) (arg1 vector4w)) @@ -276,21 +196,18 @@ (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 1 x) (* (+ (-> arg1 x) 1792) 16)) (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 1 y) (* (- (-> *video-parms* screen-maxy) (-> arg1 y)) 16)) (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 1 z) #x7fffff) - (cam-line-dma) - ) + (cam-line-dma)) ;; definition for function camera-plot-float-func ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defun camera-plot-float-func ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 (function float float)) (arg5 vector4w)) (let ((f30-0 (- arg1 arg0)) - (f24-0 (- arg3 arg2)) - ) + (f24-0 (- arg3 arg2))) 0.0 0.0 (let ((f28-0 (/ 200.0 f24-0)) - (f26-0 (/ 400.0 f30-0)) - ) + (f26-0 (/ 400.0 f30-0))) (set! (-> (scratchpad-object cam-dbg-scratch) color x) (the-as float 128)) (set! (-> (scratchpad-object cam-dbg-scratch) color y) (the-as float 128)) (set! (-> (scratchpad-object cam-dbg-scratch) color z) (the-as float 128)) @@ -300,91 +217,56 @@ (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 f24-0)) 20)) - (camera-line2d - (the-as vector4w (+ 48 (scratchpad-object int))) - (the-as vector4w (+ 64 (scratchpad-object int))) - ) - ) + (camera-line2d (the-as vector4w (+ 48 (scratchpad-object int))) (the-as vector4w (+ 64 (scratchpad-object int))))) (when (and (< arg2 0.0) (< 0.0 arg3)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) (+ (the int (* f28-0 f24-0 (/ (- arg2) f24-0))) 20)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ (the int (* f26-0 f30-0)) 20)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y)) - (camera-line2d - (the-as vector4w (+ 48 (scratchpad-object int))) - (the-as vector4w (+ 64 (scratchpad-object int))) - ) - ) + (camera-line2d (the-as vector4w (+ 48 (scratchpad-object int))) (the-as vector4w (+ 64 (scratchpad-object int))))) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ (the int (* f26-0 f30-0)) 20)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) 20) - (camera-line2d - (the-as vector4w (+ 48 (scratchpad-object int))) - (the-as vector4w (+ 64 (scratchpad-object int))) - ) + (camera-line2d (the-as vector4w (+ 48 (scratchpad-object int))) (the-as vector4w (+ 64 (scratchpad-object int)))) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) (+ (the int (* f28-0 f24-0)) 20)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ (the int (* f26-0 f30-0)) 20)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 f24-0)) 20)) - (camera-line2d - (the-as vector4w (+ 48 (scratchpad-object int))) - (the-as vector4w (+ 64 (scratchpad-object int))) - ) + (camera-line2d (the-as vector4w (+ 48 (scratchpad-object int))) (the-as vector4w (+ 64 (scratchpad-object int)))) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 f24-0)) 20)) - (camera-line2d - (the-as vector4w (+ 48 (scratchpad-object int))) - (the-as vector4w (+ 64 (scratchpad-object int))) - ) + (camera-line2d (the-as vector4w (+ 48 (scratchpad-object int))) (the-as vector4w (+ 64 (scratchpad-object int)))) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) (+ (the int (* f26-0 f30-0)) 20)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ (the int (* f26-0 f30-0)) 20)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 f24-0)) 20)) - (camera-line2d - (the-as vector4w (+ 48 (scratchpad-object int))) - (the-as vector4w (+ 64 (scratchpad-object int))) - ) - (let ((v1-62 (-> arg5 quad))) - (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-62) - ) + (camera-line2d (the-as vector4w (+ 48 (scratchpad-object int))) (the-as vector4w (+ 64 (scratchpad-object int)))) + (let ((v1-62 (-> arg5 quad))) (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-62)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) 20) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 (- (arg4 arg0) arg2))) 20)) (let ((s3-1 1)) (while (>= (the int (* f26-0 f30-0)) s3-1) (let ((v1-67 (-> (scratchpad-object cam-dbg-scratch) plotvec 1 quad))) - (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 quad) v1-67) - ) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 quad) v1-67)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ s3-1 20)) (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) - (+ (the int (* f28-0 (- (arg4 (+ arg0 (* f30-0 (/ (the float s3-1) (* f26-0 f30-0))))) arg2))) 20) - ) - (camera-line2d - (the-as vector4w (+ 48 (scratchpad-object int))) - (the-as vector4w (+ 64 (scratchpad-object int))) - ) - (+! s3-1 1) - ) - ) - ) - ) + (+ (the int (* f28-0 (- (arg4 (+ arg0 (* f30-0 (/ (the float s3-1) (* f26-0 f30-0))))) arg2))) 20)) + (camera-line2d (the-as vector4w (+ 48 (scratchpad-object int))) (the-as vector4w (+ 64 (scratchpad-object int)))) + (+! s3-1 1))))) 0 - (none) - ) + (none)) ;; definition for function camera-line-setup ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defun camera-line-setup ((arg0 vector4w)) - (let ((v1-0 (-> arg0 quad))) - (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-0) - ) + (let ((v1-0 (-> arg0 quad))) (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-0)) (init-for-transform *identity-matrix*) 0 - (none) - ) + (none)) ;; definition for function camera-line-draw ;; INFO: Return type mismatch int vs symbol. @@ -394,25 +276,16 @@ (set! (-> (the-as (pointer uint128) (+ 96 (scratchpad-object int)))) (-> arg1 quad)) (set! (-> (scratchpad-object cam-dbg-scratch) linevec 0 w) (the-as int 1.0)) (set! (-> (scratchpad-object cam-dbg-scratch) linevec 1 w) (the-as int 1.0)) - (transform-float-point - (the-as vector (+ 80 (scratchpad-object int))) - (the-as vector4w (-> (scratchpad-object cam-dbg-scratch) linevec4w)) - ) - (transform-float-point - (the-as vector (+ 96 (scratchpad-object int))) - (the-as vector4w (+ 16 (scratchpad-object int))) - ) + (transform-float-point (the-as vector (+ 80 (scratchpad-object int))) + (the-as vector4w (-> (scratchpad-object cam-dbg-scratch) linevec4w))) + (transform-float-point (the-as vector (+ 96 (scratchpad-object int))) (the-as vector4w (+ 16 (scratchpad-object int)))) (cond ((< (the-as uint #xe00000) (the-as uint (-> (scratchpad-object cam-dbg-scratch) linevec4w 0 z))) - (return (the-as symbol #f)) - ) + (return (the-as symbol #f))) ((< (the-as uint #xe00000) (the-as uint (-> (scratchpad-object cam-dbg-scratch) linevec4w 1 z))) - (return (the-as symbol #f)) - ) - ) + (return (the-as symbol #f)))) (cam-line-dma) - (the-as symbol 0) - ) + (the-as symbol 0)) ;; definition for function camera-line ;; INFO: Return type mismatch int vs none. @@ -420,27 +293,20 @@ (camera-line-setup arg2) (camera-line-draw arg0 arg1) 0 - (none) - ) + (none)) ;; definition for function camera-line-rel (defun camera-line-rel ((arg0 vector) (arg1 vector) (arg2 vector4w)) (vector+! (the-as vector (+ 112 (scratchpad-object int))) arg0 arg1) (camera-line arg0 (the-as vector (+ 112 (scratchpad-object int))) arg2) - (none) - ) + (none)) ;; definition for function camera-line-rel-len (defun camera-line-rel-len ((arg0 vector) (arg1 vector) (arg2 float) (arg3 vector4w)) (vector-normalize-copy! (the-as vector (+ 112 (scratchpad-object int))) arg1 arg2) - (vector+! - (the-as vector (+ 112 (scratchpad-object int))) - (the-as vector (+ 112 (scratchpad-object int))) - arg0 - ) + (vector+! (the-as vector (+ 112 (scratchpad-object int))) (the-as vector (+ 112 (scratchpad-object int))) arg0) (camera-line arg0 (the-as vector (+ 112 (scratchpad-object int))) arg3) - (none) - ) + (none)) ;; definition for function camera-sphere ;; INFO: Return type mismatch int vs none. @@ -448,100 +314,48 @@ (camera-line-setup (the-as vector4w arg2)) (dotimes (s4-0 10) (let ((f30-1 (* arg1 (sin (* 3276.8 (the float s4-0))))) - (f28-1 (* arg1 (sin (* 3276.8 (the float (+ s4-0 1)))))) - ) + (f28-1 (* arg1 (sin (* 3276.8 (the float (+ s4-0 1))))))) (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-start y) - (+ (-> arg0 y) (* (cos (* 3276.8 (the float s4-0))) arg1)) - ) - (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end y) - (-> (scratchpad-object cam-dbg-scratch) sphere-v-start y) - ) - (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down y) (+ (-> arg0 y) (* (cos (* 3276.8 (the float (+ s4-0 1)))) arg1))) + (+ (-> arg0 y) (* (cos (* 3276.8 (the float s4-0))) arg1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end y) (-> (scratchpad-object cam-dbg-scratch) sphere-v-start y)) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down y) + (+ (-> arg0 y) (* (cos (* 3276.8 (the float (+ s4-0 1)))) arg1))) (dotimes (s3-0 10) - (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-start x) (+ (-> arg0 x) (* (cos (* 6553.6 (the float s3-0))) f30-1))) - (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-start z) (+ (-> arg0 z) (* (sin (* 6553.6 (the float s3-0))) f30-1))) - (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end x) (+ (-> arg0 x) (* (cos (* 6553.6 (the float (+ s3-0 1)))) f30-1))) - (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end z) (+ (-> arg0 z) (* (sin (* 6553.6 (the float (+ s3-0 1)))) f30-1))) - (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down x) (+ (-> arg0 x) (* (cos (* 6553.6 (the float s3-0))) f28-1))) - (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down z) (+ (-> arg0 z) (* (sin (* 6553.6 (the float s3-0))) f28-1))) - (camera-line-draw - (the-as vector (+ 128 (scratchpad-object int))) - (the-as vector (+ 144 (scratchpad-object int))) - ) - (camera-line-draw - (the-as vector (+ 128 (scratchpad-object int))) - (the-as vector (+ 160 (scratchpad-object int))) - ) - ) - ) - ) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-start x) + (+ (-> arg0 x) (* (cos (* 6553.6 (the float s3-0))) f30-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-start z) + (+ (-> arg0 z) (* (sin (* 6553.6 (the float s3-0))) f30-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end x) + (+ (-> arg0 x) (* (cos (* 6553.6 (the float (+ s3-0 1)))) f30-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end z) + (+ (-> arg0 z) (* (sin (* 6553.6 (the float (+ s3-0 1)))) f30-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down x) + (+ (-> arg0 x) (* (cos (* 6553.6 (the float s3-0))) f28-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down z) + (+ (-> arg0 z) (* (sin (* 6553.6 (the float s3-0))) f28-1))) + (camera-line-draw (the-as vector (+ 128 (scratchpad-object int))) (the-as vector (+ 144 (scratchpad-object int)))) + (camera-line-draw (the-as vector (+ 128 (scratchpad-object int))) (the-as vector (+ 160 (scratchpad-object int))))))) 0 - (none) - ) + (none)) ;; definition for function camera-cross ;; INFO: Return type mismatch none vs basic. (defun camera-cross ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector4w) (arg4 meters)) (vector-normalize-copy! (the-as vector (+ 192 (scratchpad-object int))) arg0 arg4) - (vector+! - (the-as vector (+ 208 (scratchpad-object int))) - arg2 - (the-as vector (+ 192 (scratchpad-object int))) - ) - (vector-! - (the-as vector (+ 224 (scratchpad-object int))) - arg2 - (the-as vector (+ 192 (scratchpad-object int))) - ) - (camera-line - (the-as vector (+ 208 (scratchpad-object int))) - (the-as vector (+ 224 (scratchpad-object int))) - arg3 - ) - (vector-cross! - (the-as vector (+ 192 (scratchpad-object int))) - (the-as vector (+ 192 (scratchpad-object int))) - arg1 - ) + (vector+! (the-as vector (+ 208 (scratchpad-object int))) arg2 (the-as vector (+ 192 (scratchpad-object int)))) + (vector-! (the-as vector (+ 224 (scratchpad-object int))) arg2 (the-as vector (+ 192 (scratchpad-object int)))) + (camera-line (the-as vector (+ 208 (scratchpad-object int))) (the-as vector (+ 224 (scratchpad-object int))) arg3) + (vector-cross! (the-as vector (+ 192 (scratchpad-object int))) (the-as vector (+ 192 (scratchpad-object int))) arg1) (vector-normalize! (the-as vector (+ 192 (scratchpad-object int))) arg4) - (vector+! - (the-as vector (+ 208 (scratchpad-object int))) - arg2 - (the-as vector (+ 192 (scratchpad-object int))) - ) - (vector-! - (the-as vector (+ 224 (scratchpad-object int))) - arg2 - (the-as vector (+ 192 (scratchpad-object int))) - ) - (camera-line - (the-as vector (+ 208 (scratchpad-object int))) - (the-as vector (+ 224 (scratchpad-object int))) - arg3 - ) - (vector-cross! - (the-as vector (+ 192 (scratchpad-object int))) - (the-as vector (+ 192 (scratchpad-object int))) - arg0 - ) + (vector+! (the-as vector (+ 208 (scratchpad-object int))) arg2 (the-as vector (+ 192 (scratchpad-object int)))) + (vector-! (the-as vector (+ 224 (scratchpad-object int))) arg2 (the-as vector (+ 192 (scratchpad-object int)))) + (camera-line (the-as vector (+ 208 (scratchpad-object int))) (the-as vector (+ 224 (scratchpad-object int))) arg3) + (vector-cross! (the-as vector (+ 192 (scratchpad-object int))) (the-as vector (+ 192 (scratchpad-object int))) arg0) (vector-normalize! (the-as vector (+ 192 (scratchpad-object int))) arg4) - (vector+! - (the-as vector (+ 208 (scratchpad-object int))) - arg2 - (the-as vector (+ 192 (scratchpad-object int))) - ) - (vector-! - (the-as vector (+ 224 (scratchpad-object int))) - arg2 - (the-as vector (+ 192 (scratchpad-object int))) - ) - (the-as basic (camera-line - (the-as vector (+ 208 (scratchpad-object int))) - (the-as vector (+ 224 (scratchpad-object int))) - arg3 - ) - ) - ) + (vector+! (the-as vector (+ 208 (scratchpad-object int))) arg2 (the-as vector (+ 192 (scratchpad-object int)))) + (vector-! (the-as vector (+ 224 (scratchpad-object int))) arg2 (the-as vector (+ 192 (scratchpad-object int)))) + (the-as basic + (camera-line (the-as vector (+ 208 (scratchpad-object int))) (the-as vector (+ 224 (scratchpad-object int))) arg3))) ;; definition for function camera-bounding-box-draw ;; INFO: Return type mismatch int vs none. @@ -566,53 +380,31 @@ (camera-line-draw (-> arg0 max) (the-as vector (+ 288 (scratchpad-object int)))) (camera-line-draw (-> arg0 max) (the-as vector (+ 304 (scratchpad-object int)))) (camera-line-draw (-> arg0 max) (the-as vector (+ 320 (scratchpad-object int)))) - (camera-line-draw - (the-as vector (+ 240 (scratchpad-object int))) - (the-as vector (+ 304 (scratchpad-object int))) - ) - (camera-line-draw - (the-as vector (+ 304 (scratchpad-object int))) - (the-as vector (+ 272 (scratchpad-object int))) - ) - (camera-line-draw - (the-as vector (+ 272 (scratchpad-object int))) - (the-as vector (+ 288 (scratchpad-object int))) - ) - (camera-line-draw - (the-as vector (+ 288 (scratchpad-object int))) - (the-as vector (+ 256 (scratchpad-object int))) - ) - (camera-line-draw - (the-as vector (+ 256 (scratchpad-object int))) - (the-as vector (+ 320 (scratchpad-object int))) - ) - (camera-line-draw - (the-as vector (+ 320 (scratchpad-object int))) - (the-as vector (+ 240 (scratchpad-object int))) - ) + (camera-line-draw (the-as vector (+ 240 (scratchpad-object int))) (the-as vector (+ 304 (scratchpad-object int)))) + (camera-line-draw (the-as vector (+ 304 (scratchpad-object int))) (the-as vector (+ 272 (scratchpad-object int)))) + (camera-line-draw (the-as vector (+ 272 (scratchpad-object int))) (the-as vector (+ 288 (scratchpad-object int)))) + (camera-line-draw (the-as vector (+ 288 (scratchpad-object int))) (the-as vector (+ 256 (scratchpad-object int)))) + (camera-line-draw (the-as vector (+ 256 (scratchpad-object int))) (the-as vector (+ 320 (scratchpad-object int)))) + (camera-line-draw (the-as vector (+ 320 (scratchpad-object int))) (the-as vector (+ 240 (scratchpad-object int)))) 0 - (none) - ) + (none)) ;; definition of type cam-debug-tri (deftype cam-debug-tri (structure) - ((vertex vector 3 :inline :offset-assert 0) - (intersect vector :inline :offset-assert 48) - (color vector4w :offset-assert 64) - ) + ((vertex vector 3 :inline :offset-assert 0) + (intersect vector :inline :offset-assert 48) + (color vector4w :offset-assert 64)) :method-count-assert 9 - :size-assert #x44 - :flag-assert #x900000044 - ) + :size-assert #x44 + :flag-assert #x900000044) ;; definition for method 3 of type cam-debug-tri -(defmethod inspect cam-debug-tri ((obj cam-debug-tri)) +(defmethod inspect ((obj cam-debug-tri)) (format #t "[~8x] ~A~%" obj 'cam-debug-tri) (format #t "~Tvertex[3] @ #x~X~%" (-> obj vertex)) (format #t "~Tintersect: #~%" (-> obj intersect)) (format #t "~Tcolor: #~%" (-> obj color)) - obj - ) + obj) ;; definition for symbol *cam-debug-los-tri-current*, type int (define *cam-debug-los-tri-current* 0) @@ -632,58 +424,43 @@ (set! *cam-debug-los-tri-current* 0) (set! *cam-debug-coll-tri-current* 0) 0 - (none) - ) + (none)) ;; definition for function cam-debug-add-los-tri ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defun cam-debug-add-los-tri ((arg0 (inline-array collide-cache-tri)) (arg1 vector) (arg2 vector)) (cond - ((>= *cam-debug-los-tri-current* 460) - ) + ((>= *cam-debug-los-tri-current* 460)) (else - (let ((v1-3 (-> *cam-debug-los-tri* *cam-debug-los-tri-current*))) - (set! (-> v1-3 vertex 0 quad) (-> arg0 0 vertex 0 quad)) - (set! (-> v1-3 vertex 1 quad) (-> arg0 0 vertex 1 quad)) - (set! (-> v1-3 vertex 2 quad) (-> arg0 0 vertex 2 quad)) - (set! (-> v1-3 intersect quad) (-> arg1 quad)) - (set! (-> v1-3 color) (the-as vector4w arg2)) - ) - (set! *cam-debug-los-tri-current* (+ *cam-debug-los-tri-current* 1)) - (if (= *cam-debug-los-tri-current* 460) - (format 0 "ERROR : cam-debug-add-los-tri overflow~%") - ) - ) - ) + (let ((v1-3 (-> *cam-debug-los-tri* *cam-debug-los-tri-current*))) + (set! (-> v1-3 vertex 0 quad) (-> arg0 0 vertex 0 quad)) + (set! (-> v1-3 vertex 1 quad) (-> arg0 0 vertex 1 quad)) + (set! (-> v1-3 vertex 2 quad) (-> arg0 0 vertex 2 quad)) + (set! (-> v1-3 intersect quad) (-> arg1 quad)) + (set! (-> v1-3 color) (the-as vector4w arg2))) + (set! *cam-debug-los-tri-current* (+ *cam-debug-los-tri-current* 1)) + (if (= *cam-debug-los-tri-current* 460) (format 0 "ERROR : cam-debug-add-los-tri overflow~%")))) 0 - (none) - ) + (none)) ;; definition for function cam-debug-add-coll-tri ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defun cam-debug-add-coll-tri ((arg0 cam-debug-tri) (arg1 vector) (arg2 cam-debug-tri)) (cond - ((>= *cam-debug-coll-tri-current* 460) - ) + ((>= *cam-debug-coll-tri-current* 460)) (else - (let ((v1-3 (-> *cam-debug-coll-tri* *cam-debug-coll-tri-current*))) - (set! (-> v1-3 vertex 0 quad) (-> arg0 vertex 0 quad)) - (set! (-> v1-3 vertex 1 quad) (-> arg0 vertex 1 quad)) - (set! (-> v1-3 vertex 2 quad) (-> arg0 vertex 2 quad)) - (set! (-> v1-3 intersect quad) (-> arg1 quad)) - (set! (-> v1-3 color) (the-as vector4w arg2)) - ) - (set! *cam-debug-coll-tri-current* (+ *cam-debug-coll-tri-current* 1)) - (if (>= *cam-debug-coll-tri-current* 460) - (format 0 "ERROR : cam-debug-add-coll-tri overflow~%") - ) - ) - ) + (let ((v1-3 (-> *cam-debug-coll-tri* *cam-debug-coll-tri-current*))) + (set! (-> v1-3 vertex 0 quad) (-> arg0 vertex 0 quad)) + (set! (-> v1-3 vertex 1 quad) (-> arg0 vertex 1 quad)) + (set! (-> v1-3 vertex 2 quad) (-> arg0 vertex 2 quad)) + (set! (-> v1-3 intersect quad) (-> arg1 quad)) + (set! (-> v1-3 color) (the-as vector4w arg2))) + (set! *cam-debug-coll-tri-current* (+ *cam-debug-coll-tri-current* 1)) + (if (>= *cam-debug-coll-tri-current* 460) (format 0 "ERROR : cam-debug-add-coll-tri overflow~%")))) 0 - (none) - ) + (none)) ;; definition for function cam-debug-draw-tris ;; Used lq/sq @@ -691,58 +468,34 @@ (camera-line-setup (new 'stack 'vector4w)) (when *display-cam-los-marks* (dotimes (gp-1 *cam-debug-los-tri-current*) - (let ((v1-7 (-> *cam-debug-los-tri* gp-1 color quad))) - (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-7) - ) - (camera-line-draw - (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0)) (* 80 gp-1))) - (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 1)) (* 80 gp-1))) - ) - (camera-line-draw - (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 1)) (* 80 gp-1))) - (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 2)) (* 80 gp-1))) - ) - (camera-line-draw - (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 2)) (* 80 gp-1))) - (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0)) (* 80 gp-1))) - ) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - (-> *cam-debug-los-tri* gp-1 intersect) - (-> *cam-debug-los-tri* gp-1 color) - (meters 0.25) - ) - ) - ) + (let ((v1-7 (-> *cam-debug-los-tri* gp-1 color quad))) (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-7)) + (camera-line-draw (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0)) (* 80 gp-1))) + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 1)) (* 80 gp-1)))) + (camera-line-draw (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 1)) (* 80 gp-1))) + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 2)) (* 80 gp-1)))) + (camera-line-draw (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 2)) (* 80 gp-1))) + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0)) (* 80 gp-1)))) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + (-> *cam-debug-los-tri* gp-1 intersect) + (-> *cam-debug-los-tri* gp-1 color) + (meters 0.25)))) (when *display-cam-coll-marks* (dotimes (gp-2 *cam-debug-coll-tri-current*) (let ((v1-34 (-> *cam-debug-coll-tri* gp-2 color quad))) - (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-34) - ) - (camera-line-draw - (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0)) (* 80 gp-2))) - (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 1)) (* 80 gp-2))) - ) - (camera-line-draw - (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 1)) (* 80 gp-2))) - (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 2)) (* 80 gp-2))) - ) - (camera-line-draw - (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 2)) (* 80 gp-2))) - (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0)) (* 80 gp-2))) - ) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - (-> *cam-debug-coll-tri* gp-2 intersect) - (-> *cam-debug-coll-tri* gp-2 color) - (meters 0.25) - ) - ) - #f - ) - ) + (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-34)) + (camera-line-draw (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0)) (* 80 gp-2))) + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 1)) (* 80 gp-2)))) + (camera-line-draw (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 1)) (* 80 gp-2))) + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 2)) (* 80 gp-2)))) + (camera-line-draw (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 2)) (* 80 gp-2))) + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0)) (* 80 gp-2)))) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + (-> *cam-debug-coll-tri* gp-2 intersect) + (-> *cam-debug-coll-tri* gp-2 color) + (meters 0.25))) + #f)) ;; definition for function camera-fov-draw (defun camera-fov-draw ((arg0 int) (arg1 int) (arg2 vector) (arg3 float) (arg4 float) (arg5 vector4w)) @@ -751,257 +504,149 @@ (vector+float*! (the-as vector (+ 368 (scratchpad-object int))) arg2 (the-as vector arg0) arg4) (vector+float*! (the-as vector (+ 384 (scratchpad-object int))) arg2 (the-as vector arg1) arg4) (camera-line-setup arg5) - (camera-line-draw - (the-as vector (+ 336 (scratchpad-object int))) - (the-as vector (+ 352 (scratchpad-object int))) - ) - (camera-line-draw - (the-as vector (+ 352 (scratchpad-object int))) - (the-as vector (+ 368 (scratchpad-object int))) - ) - (camera-line-draw - (the-as vector (+ 368 (scratchpad-object int))) - (the-as vector (+ 384 (scratchpad-object int))) - ) - ) + (camera-line-draw (the-as vector (+ 336 (scratchpad-object int))) (the-as vector (+ 352 (scratchpad-object int)))) + (camera-line-draw (the-as vector (+ 352 (scratchpad-object int))) (the-as vector (+ 368 (scratchpad-object int)))) + (camera-line-draw (the-as vector (+ 368 (scratchpad-object int))) (the-as vector (+ 384 (scratchpad-object int))))) ;; definition for function camera-fov-frame ;; INFO: Return type mismatch symbol vs none. ;; Used lq/sq (defun camera-fov-frame ((arg0 matrix) (arg1 vector) (arg2 float) (arg3 float) (arg4 float) (arg5 vector4w)) (vector-float*! (the-as vector (+ 432 (scratchpad-object int))) (-> arg0 vector 1) (* arg3 (tan arg2))) - (vector-float*! - (the-as vector (+ 448 (scratchpad-object int))) - (the-as vector (-> arg0 vector)) - (* arg4 (tan arg2)) - ) - (vector+! - (the-as vector (+ 400 (scratchpad-object int))) - (-> arg0 vector 2) - (vector+! - (the-as vector (+ 400 (scratchpad-object int))) - (the-as vector (+ 432 (scratchpad-object int))) - (the-as vector (+ 448 (scratchpad-object int))) - ) - ) + (vector-float*! (the-as vector (+ 448 (scratchpad-object int))) (the-as vector (-> arg0 vector)) (* arg4 (tan arg2))) + (vector+! (the-as vector (+ 400 (scratchpad-object int))) + (-> arg0 vector 2) + (vector+! (the-as vector (+ 400 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))))) (vector-normalize! (the-as vector (+ 400 (scratchpad-object int))) 1.0) - (vector+! - (the-as vector (+ 416 (scratchpad-object int))) - (-> arg0 vector 2) - (vector-! - (the-as vector (+ 416 (scratchpad-object int))) - (the-as vector (+ 432 (scratchpad-object int))) - (the-as vector (+ 448 (scratchpad-object int))) - ) - ) + (vector+! (the-as vector (+ 416 (scratchpad-object int))) + (-> arg0 vector 2) + (vector-! (the-as vector (+ 416 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))))) (vector-normalize! (the-as vector (+ 416 (scratchpad-object int))) 1.0) (camera-fov-draw (+ 400 (scratchpad-object int)) (+ 416 (scratchpad-object int)) arg1 4096.0 20480.0 arg5) (set! (-> (the-as (pointer uint128) (+ 400 (scratchpad-object int)))) - (-> (the-as vector (+ 416 (scratchpad-object int))) quad) - ) - (vector-! - (the-as vector (+ 416 (scratchpad-object int))) - (-> arg0 vector 2) - (vector+! - (the-as vector (+ 416 (scratchpad-object int))) - (the-as vector (+ 432 (scratchpad-object int))) - (the-as vector (+ 448 (scratchpad-object int))) - ) - ) + (-> (the-as vector (+ 416 (scratchpad-object int))) quad)) + (vector-! (the-as vector (+ 416 (scratchpad-object int))) + (-> arg0 vector 2) + (vector+! (the-as vector (+ 416 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))))) (vector-normalize! (the-as vector (+ 416 (scratchpad-object int))) 1.0) (camera-fov-draw (+ 400 (scratchpad-object int)) (+ 416 (scratchpad-object int)) arg1 4096.0 20480.0 arg5) (set! (-> (the-as (pointer uint128) (+ 400 (scratchpad-object int)))) - (-> (the-as vector (+ 416 (scratchpad-object int))) quad) - ) - (vector-! - (the-as vector (+ 416 (scratchpad-object int))) - (-> arg0 vector 2) - (vector-! - (the-as vector (+ 416 (scratchpad-object int))) - (the-as vector (+ 432 (scratchpad-object int))) - (the-as vector (+ 448 (scratchpad-object int))) - ) - ) + (-> (the-as vector (+ 416 (scratchpad-object int))) quad)) + (vector-! (the-as vector (+ 416 (scratchpad-object int))) + (-> arg0 vector 2) + (vector-! (the-as vector (+ 416 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))))) (vector-normalize! (the-as vector (+ 416 (scratchpad-object int))) 1.0) (camera-fov-draw (+ 400 (scratchpad-object int)) (+ 416 (scratchpad-object int)) arg1 4096.0 20480.0 arg5) (set! (-> (the-as (pointer uint128) (+ 400 (scratchpad-object int)))) - (-> (the-as vector (+ 416 (scratchpad-object int))) quad) - ) - (vector+! - (the-as vector (+ 416 (scratchpad-object int))) - (-> arg0 vector 2) - (vector+! - (the-as vector (+ 416 (scratchpad-object int))) - (the-as vector (+ 432 (scratchpad-object int))) - (the-as vector (+ 448 (scratchpad-object int))) - ) - ) + (-> (the-as vector (+ 416 (scratchpad-object int))) quad)) + (vector+! (the-as vector (+ 416 (scratchpad-object int))) + (-> arg0 vector 2) + (vector+! (the-as vector (+ 416 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))))) (vector-normalize! (the-as vector (+ 416 (scratchpad-object int))) 1.0) (camera-fov-draw (+ 400 (scratchpad-object int)) (+ 416 (scratchpad-object int)) arg1 4096.0 20480.0 arg5) - (none) - ) + (none)) ;; definition for method 11 of type tracking-spline ;; INFO: Return type mismatch int vs none. -(defmethod print-nth-point tracking-spline ((obj tracking-spline) (arg0 int)) - (if (= arg0 (-> obj used-point)) - (format 0 "u") - (format 0 " ") - ) - (if (= arg0 (-> obj next-to-last-point)) - (format 0 "n") - (format 0 " ") - ) - (if (= arg0 (-> obj end-point)) - (format 0 "e") - (format 0 " ") - ) +(defmethod print-nth-point ((obj tracking-spline) (arg0 int)) + (if (= arg0 (-> obj used-point)) (format 0 "u") (format 0 " ")) + (if (= arg0 (-> obj next-to-last-point)) (format 0 "n") (format 0 " ")) + (if (= arg0 (-> obj end-point)) (format 0 "e") (format 0 " ")) (if (= arg0 -134250495) - (format 0 " ~D~%" arg0) - (format - 0 - " ~D ~M ~M ~M~%" - arg0 - (-> obj point arg0 position x) - (-> obj point arg0 position y) - (-> obj point arg0 position z) - ) - ) + (format 0 " ~D~%" arg0) + (format 0 + " ~D ~M ~M ~M~%" + arg0 + (-> obj point arg0 position x) + (-> obj point arg0 position y) + (-> obj point arg0 position z))) 0 - (none) - ) + (none)) -(defmethod tracking-spline-method-12 tracking-spline ((obj tracking-spline)) +(defmethod tracking-spline-method-12 ((obj tracking-spline)) (let ((s5-0 (-> obj used-point))) (while (!= s5-0 -134250495) (print-nth-point obj s5-0) - (set! s5-0 (-> obj point s5-0 next)) - ) - (print-nth-point obj s5-0) - ) + (set! s5-0 (-> obj point s5-0 next))) + (print-nth-point obj s5-0)) 0 - (none) - ) + (none)) -(defmethod tracking-spline-method-23 tracking-spline ((obj tracking-spline)) +(defmethod tracking-spline-method-23 ((obj tracking-spline)) (let ((s5-0 (-> obj used-point)) - (s4-0 (-> obj point (-> obj used-point) next)) - ) + (s4-0 (-> obj point (-> obj used-point) next))) (let ((s3-0 (new 'stack-no-clear 'vector))) (when (!= s4-0 -134250495) (tracking-spline-method-19 obj 0.0 s3-0 (the-as tracking-spline-sampler #f)) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s3-0 - (new 'static 'vector4w :x #xff :w #x80) - (meters 0.25) - ) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s3-0 + (new 'static 'vector4w :x #xff :w #x80) + (meters 0.25)) (tracking-spline-method-19 obj (-> obj sample-len) s3-0 (the-as tracking-spline-sampler #f)) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s3-0 - (new 'static 'vector4w :x #xff :w #x80) - (meters 0.25) - ) - ) - ) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s3-0 + (new 'static 'vector4w :x #xff :w #x80) + (meters 0.25)))) (while (!= s4-0 -134250495) - (camera-line - (the-as vector (-> obj point s5-0)) - (the-as vector (-> obj point s4-0)) - (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80) - ) + (camera-line (the-as vector (-> obj point s5-0)) + (the-as vector (-> obj point s4-0)) + (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80)) (set! s5-0 s4-0) - (set! s4-0 (-> obj point s4-0 next)) - ) - ) + (set! s4-0 (-> obj point s4-0 next)))) (let ((s5-1 (new 'stack-no-clear 'vector))) - (camera-line - (-> obj debug-out-position) - (-> obj debug-old-position) - (new 'static 'vector4w :x #xff :y #xff :w #x80) - ) + (camera-line (-> obj debug-out-position) (-> obj debug-old-position) (new 'static 'vector4w :x #xff :y #xff :w #x80)) (vector-! s5-1 (-> obj debug-out-position) (-> obj debug-old-position)) (tracking-spline-method-20 obj s5-1 (-> obj debug-last-point)) - (camera-line-rel (-> obj debug-old-position) s5-1 (new 'static 'vector4w :x #xff :z #xff :w #x80)) - ) + (camera-line-rel (-> obj debug-old-position) s5-1 (new 'static 'vector4w :x #xff :z #xff :w #x80))) 0 - (none) - ) + (none)) (defun debug-euler ((arg0 cam-dbg-scratch)) (let ((s4-0 (new 'stack-no-clear 'euler-angles)) - (gp-0 (new 'stack-no-clear 'matrix)) - ) + (gp-0 (new 'stack-no-clear 'matrix))) (matrix->eul s4-0 (the-as matrix (&-> arg0 sphere-vec w)) 21) (format *stdcon* "euler angles x ~R y ~R z ~R~%" (-> s4-0 x) (-> s4-0 y) (-> s4-0 z)) - (format - *stdcon* - "~f ~f ~f ~f~%" - (-> arg0 sphere-vec w) - (-> arg0 crossvec 0 x) - (-> arg0 crossvec 0 y) - (-> arg0 crossvec 0 z) - ) - (format - *stdcon* - "~f ~f ~f ~f~%" - (-> arg0 crossvec 0 w) - (-> arg0 crossvec 1 x) - (-> arg0 crossvec 1 y) - (-> arg0 crossvec 1 z) - ) - (format - *stdcon* - "~f ~f ~f ~f~%" - (-> arg0 crossvec 1 w) - (-> arg0 crossvec 2 x) - (-> arg0 crossvec 2 y) - (-> arg0 crossvec 2 z) - ) - (format - *stdcon* - "~f ~f ~f ~f~%" - (-> arg0 crossvec 2 w) - (-> arg0 bboxvec 0 x) - (-> arg0 bboxvec 0 y) - (-> arg0 bboxvec 0 z) - ) + (format *stdcon* + "~f ~f ~f ~f~%" + (-> arg0 sphere-vec w) + (-> arg0 crossvec 0 x) + (-> arg0 crossvec 0 y) + (-> arg0 crossvec 0 z)) + (format *stdcon* + "~f ~f ~f ~f~%" + (-> arg0 crossvec 0 w) + (-> arg0 crossvec 1 x) + (-> arg0 crossvec 1 y) + (-> arg0 crossvec 1 z)) + (format *stdcon* + "~f ~f ~f ~f~%" + (-> arg0 crossvec 1 w) + (-> arg0 crossvec 2 x) + (-> arg0 crossvec 2 y) + (-> arg0 crossvec 2 z)) + (format *stdcon* + "~f ~f ~f ~f~%" + (-> arg0 crossvec 2 w) + (-> arg0 bboxvec 0 x) + (-> arg0 bboxvec 0 y) + (-> arg0 bboxvec 0 z)) (eul->matrix gp-0 s4-0) - (format - *stdcon* - "~f ~f ~f ~f~%" - (-> gp-0 vector 0 x) - (-> gp-0 vector 0 y) - (-> gp-0 vector 0 z) - (-> gp-0 vector 0 w) - ) - (format - *stdcon* - "~f ~f ~f ~f~%" - (-> gp-0 vector 1 x) - (-> gp-0 vector 1 y) - (-> gp-0 vector 1 z) - (-> gp-0 vector 1 w) - ) - (format - *stdcon* - "~f ~f ~f ~f~%" - (-> gp-0 vector 2 x) - (-> gp-0 vector 2 y) - (-> gp-0 vector 2 z) - (-> gp-0 vector 2 w) - ) - (format - *stdcon* - "~f ~f ~f ~f~%" - (-> gp-0 vector 3 x) - (-> gp-0 vector 3 y) - (-> gp-0 vector 3 z) - (-> gp-0 vector 3 w) - ) + (format *stdcon* "~f ~f ~f ~f~%" (-> gp-0 vector 0 x) (-> gp-0 vector 0 y) (-> gp-0 vector 0 z) (-> gp-0 vector 0 w)) + (format *stdcon* "~f ~f ~f ~f~%" (-> gp-0 vector 1 x) (-> gp-0 vector 1 y) (-> gp-0 vector 1 z) (-> gp-0 vector 1 w)) + (format *stdcon* "~f ~f ~f ~f~%" (-> gp-0 vector 2 x) (-> gp-0 vector 2 y) (-> gp-0 vector 2 z) (-> gp-0 vector 2 w)) + (format *stdcon* "~f ~f ~f ~f~%" (-> gp-0 vector 3 x) (-> gp-0 vector 3 y) (-> gp-0 vector 3 z) (-> gp-0 vector 3 w)) (if (or (< 0.001 (fabs (- (-> arg0 sphere-vec w) (-> gp-0 vector 0 x)))) (< 0.001 (fabs (- (-> arg0 crossvec 0 x) (-> gp-0 vector 0 y)))) (< 0.001 (fabs (- (-> arg0 crossvec 0 y) (-> gp-0 vector 0 z)))) @@ -1017,100 +662,63 @@ (< 0.001 (fabs (- (-> arg0 crossvec 2 w) (-> gp-0 vector 3 x)))) (< 0.001 (fabs (- (-> arg0 bboxvec 0 x) (-> gp-0 vector 3 y)))) (< 0.001 (fabs (- (-> arg0 bboxvec 0 y) (-> gp-0 vector 3 z)))) - (< 0.001 (fabs (- (-> arg0 bboxvec 0 z) (-> gp-0 vector 3 w)))) - ) - (format *stdcon* "different~%") - (format *stdcon* "same~%") - ) - ) - ) + (< 0.001 (fabs (- (-> arg0 bboxvec 0 z) (-> gp-0 vector 3 w))))) + (format *stdcon* "different~%") + (format *stdcon* "same~%")))) (defun bike-cam-limit ((arg0 float)) (let* ((f0-1 (* 10012.444 arg0)) - (f30-0 (fmax 0.0 f0-1)) - ) - (if (< f30-0 8192.0) - (* (/ 1.0 (- 1.0 (cos 21845.334))) (+ (- (cos 21845.334)) (cos (* 2.6666667 (- 8192.0 f30-0))))) - 1.0 - ) - ) - ) + (f30-0 (fmax 0.0 f0-1))) + (if (< f30-0 8192.0) (* (/ 1.0 (- 1.0 (cos 21845.334))) (+ (- (cos 21845.334)) (cos (* 2.6666667 (- 8192.0 f30-0))))) 1.0))) (defun camera-slave-debug ((arg0 camera-slave)) (when *display-camera-marks* (let ((f30-0 (* 0.5 (-> *camera-combiner* fov)))) - (camera-fov-frame - (-> *camera-combiner* inv-camera-rot) - (camera-pos) - f30-0 - 0.75 - 1.0 - (new 'static 'vector4w :z #xff :w #x80) - ) - ) + (camera-fov-frame (-> *camera-combiner* inv-camera-rot) + (camera-pos) + f30-0 + 0.75 + 1.0 + (new 'static 'vector4w :z #xff :w #x80))) (cond ((= (-> arg0 blend-to-type) 2) (let ((f0-2 (* 0.5 (-> arg0 fov)))) - (camera-fov-frame - (the-as matrix (-> *camera-combiner* tracking)) - (-> arg0 trans) - f0-2 - 0.75 - 1.0 - (new 'static 'vector4w :y #xff :w #x80) - ) - ) - ) + (camera-fov-frame (the-as matrix (-> *camera-combiner* tracking)) + (-> arg0 trans) + f0-2 + 0.75 + 1.0 + (new 'static 'vector4w :y #xff :w #x80)))) (else - (let ((f0-4 (* 0.5 (-> arg0 fov)))) - (camera-fov-frame - (the-as matrix (-> arg0 tracking)) - (-> arg0 trans) - f0-4 - 0.75 - 1.0 - (new 'static 'vector4w :y #xff :w #x80) - ) - ) - ) - ) + (let ((f0-4 (* 0.5 (-> arg0 fov)))) + (camera-fov-frame (the-as matrix (-> arg0 tracking)) + (-> arg0 trans) + f0-4 + 0.75 + 1.0 + (new 'static 'vector4w :y #xff :w #x80))))) (tracking-spline-method-23 (-> arg0 position-spline)) (let ((s5-1 (new-stack-vector0))) (let ((s4-1 (new-stack-vector0))) (new-stack-matrix0) (cond - ((or (= (-> arg0 next-state name) 'cam-fixed) (or (= (-> arg0 next-state name) 'cam-eye) - (= (-> arg0 next-state name) 'cam-point-watch) - (= (-> arg0 next-state name) 'cam-free-floating) - (= (-> arg0 next-state name) 'cam-orbit) - ) - ) + ((or (= (-> arg0 next-state name) 'cam-fixed) + (or (= (-> arg0 next-state name) 'cam-eye) + (= (-> arg0 next-state name) 'cam-point-watch) + (= (-> arg0 next-state name) 'cam-free-floating) + (= (-> arg0 next-state name) 'cam-orbit))) (vector+float*! s5-1 (-> arg0 trans) (-> *camera* local-down) 4096.0) - (camera-line (-> arg0 trans) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) + (camera-line (-> arg0 trans) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80))) ((= (-> arg0 blend-to-type) 2) - (camera-line - (-> *camera-combiner* tracking follow-pt) - (-> arg0 trans) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) + (camera-line (-> *camera-combiner* tracking follow-pt) + (-> arg0 trans) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) (vector+float*! s5-1 (-> *camera-combiner* tracking follow-pt) (-> *camera* local-down) 4096.0) - (camera-line - (-> *camera-combiner* tracking follow-pt) - s5-1 - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - ) + (camera-line (-> *camera-combiner* tracking follow-pt) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80))) (else - (camera-line - (-> arg0 tracking follow-pt) - (-> arg0 trans) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - (vector+float*! s5-1 (-> arg0 tracking follow-pt) (-> *camera* local-down) 4096.0) - (camera-line (-> arg0 tracking follow-pt) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - ) + (camera-line (-> arg0 tracking follow-pt) (-> arg0 trans) (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + (vector+float*! s5-1 (-> arg0 tracking follow-pt) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 tracking follow-pt) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)))) (set! (-> s4-1 quad) (-> arg0 trans quad)) (cond ((= (-> arg0 blend-to-type) 2) @@ -1119,212 +727,129 @@ (vector+float*! s5-1 s4-1 (-> *camera-combiner* tracking inv-mat vector 1) 2048.0) (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) (vector+float*! s5-1 s4-1 (-> *camera-combiner* tracking inv-mat vector 2) 2048.0) - (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) - ) + (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80))) (else - (vector+float*! s5-1 s4-1 (the-as vector (-> arg0 tracking)) 2048.0) - (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) - (vector+float*! s5-1 s4-1 (-> arg0 tracking inv-mat vector 1) 2048.0) - (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) - (vector+float*! s5-1 s4-1 (-> arg0 tracking inv-mat vector 2) 2048.0) - (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) - ) - ) - ) + (vector+float*! s5-1 s4-1 (the-as vector (-> arg0 tracking)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s5-1 s4-1 (-> arg0 tracking inv-mat vector 1) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s5-1 s4-1 (-> arg0 tracking inv-mat vector 2) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80))))) (vector--float*! s5-1 (-> *camera* tpos-curr) (-> *camera* local-down) (-> *camera* foot-offset)) (camera-sphere s5-1 512.0 (the-as vector (new 'static 'vector4w :y #xff :w #x80))) (vector--float*! s5-1 (-> *camera* tpos-curr) (-> *camera* local-down) (-> *camera* head-offset)) - (camera-sphere s5-1 512.0 (the-as vector (new 'static 'vector4w :y #xff :w #x80))) - ) + (camera-sphere s5-1 512.0 (the-as vector (new 'static 'vector4w :y #xff :w #x80)))) (cond ((= (-> arg0 next-state name) 'cam-string) (camera-sphere (-> arg0 desired-pos) 512.0 (the-as vector (new 'static 'vector4w :z #xff :w #x80))) (camera-line-rel (-> *camera* tpos-curr-adj) (-> arg0 view-flat) (new 'static 'vector4w :z #xff :w #x80)) - (camera-line - (-> arg0 string-trans) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) - (new 'static 'vector4w :y #xff :w #x80) - ) - (camera-line - (-> arg0 los-last-pos) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) - (new 'static 'vector4w :x #xff :w #x80) - ) - ) + (camera-line (-> arg0 string-trans) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) + (new 'static 'vector4w :y #xff :w #x80)) + (camera-line (-> arg0 los-last-pos) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) + (new 'static 'vector4w :x #xff :w #x80))) ((= (-> arg0 next-state name) 'cam-circular) (let ((s5-2 (new-stack-vector0))) (vector+float*! s5-2 (-> arg0 pivot-pt) (-> *camera* local-down) 4096.0) - (camera-line (-> arg0 pivot-pt) s5-2 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - (camera-line (-> arg0 pivot-pt) (-> arg0 trans) (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) + (camera-line (-> arg0 pivot-pt) s5-2 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80))) + (camera-line (-> arg0 pivot-pt) (-> arg0 trans) (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80))) ((= (-> arg0 next-state name) 'cam-spline) (let ((s5-3 (new 'stack 'curve)) - (s4-2 (res-lump-struct (-> arg0 cam-entity) 'spline-offset structure)) - ) - (if (not s4-2) - (set! s4-2 (new-stack-vector0)) - ) + (s4-2 (res-lump-struct (-> arg0 cam-entity) 'spline-offset structure))) + (if (not s4-2) (set! s4-2 (new-stack-vector0))) (when (get-curve-data! (-> arg0 cam-entity) s5-3 'campath 'campath-k -1000000000.0) (let ((s3-0 (new-stack-vector0)) (s2-0 (new-stack-vector0)) - (gp-1 (res-lump-data (-> arg0 cam-entity) 'campoints pointer :time 1.0)) - ) + (gp-1 (res-lump-data (-> arg0 cam-entity) 'campoints pointer :time 1.0))) (curve-get-pos! s2-0 0.0 s5-3) (vector+! s2-0 s2-0 (the-as vector s4-2)) (dotimes (s1-0 8) (set! (-> s3-0 quad) (-> s2-0 quad)) (curve-get-pos! s2-0 (* 0.125 (the float (+ s1-0 1))) s5-3) (vector+! s2-0 s2-0 (the-as vector s4-2)) - (camera-line s3-0 s2-0 (new 'static 'vector4w :x #xff :y #xff :w #x80)) - ) + (camera-line s3-0 s2-0 (new 'static 'vector4w :x #xff :y #xff :w #x80))) (dotimes (s1-1 (-> s5-3 num-cverts)) (vector+! s3-0 (-> s5-3 cverts s1-1) (the-as vector s4-2)) (vector+! s2-0 (-> s5-3 cverts (mod (+ s1-1 1) (-> s5-3 num-cverts))) (the-as vector s4-2)) - (camera-line s3-0 s2-0 (new 'static 'vector4w :y #xff :z #xff :w #x80)) - ) + (camera-line s3-0 s2-0 (new 'static 'vector4w :y #xff :z #xff :w #x80))) (if gp-1 - (camera-line - (the-as vector (&+ gp-1 0)) - (the-as vector (&+ gp-1 16)) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - (camera-line - (-> s5-3 cverts 0) - (-> s5-3 cverts (+ (-> s5-3 num-cverts) -1)) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - ) - ) - ) - ) - ) - ) - ) + (camera-line (the-as vector (&+ gp-1 0)) + (the-as vector (&+ gp-1 16)) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + (camera-line (-> s5-3 cverts 0) + (-> s5-3 cverts (+ (-> s5-3 num-cverts) -1)) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80))))))))) 0 - (none) - ) + (none)) (defun master-draw-coordinates ((arg0 vector)) (let ((s5-0 (new-stack-vector0)) - (gp-0 (new-stack-vector0)) - ) - (let ((a0-1 (new-stack-matrix0))) - (set-vector! s5-0 0.0 8192.0 0.0 1.0) - (matrix-rotate-yxz! a0-1 s5-0) - ) - (vector+! - gp-0 - (-> *camera-combiner* trans) - (vector-normalize-copy! gp-0 (-> *camera-combiner* inv-camera-rot vector 2) 24576.0) - ) + (gp-0 (new-stack-vector0))) + (let ((a0-1 (new-stack-matrix0))) (set-vector! s5-0 0.0 8192.0 0.0 1.0) (matrix-rotate-yxz! a0-1 s5-0)) + (vector+! gp-0 + (-> *camera-combiner* trans) + (vector-normalize-copy! gp-0 (-> *camera-combiner* inv-camera-rot vector 2) 24576.0)) (let ((a1-2 s5-0) (v1-4 gp-0) - (a0-3 s5-0) - ) + (a0-3 s5-0)) (set! (-> a0-3 x) 4096.0) (set! (-> a0-3 y) 0.0) (set! (-> a0-3 z) 0.0) (set! (-> a0-3 w) 1.0) - (vector+! a1-2 v1-4 a0-3) - ) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - gp-0 - s5-0 - (new 'static 'rgba :r #xff :a #x80) - #f - (the-as rgba -1) - ) + (vector+! a1-2 v1-4 a0-3)) + (add-debug-line #t (bucket-id debug-no-zbuf) gp-0 s5-0 (new 'static 'rgba :r #xff :a #x80) #f (the-as rgba -1)) (let ((a1-5 s5-0) (v1-5 gp-0) - (a0-5 s5-0) - ) + (a0-5 s5-0)) (set! (-> a0-5 x) 0.0) (set! (-> a0-5 y) 4096.0) (set! (-> a0-5 z) 0.0) (set! (-> a0-5 w) 1.0) - (vector+! a1-5 v1-5 a0-5) - ) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - gp-0 - s5-0 - (new 'static 'rgba :g #xff :a #x80) - #f - (the-as rgba -1) - ) + (vector+! a1-5 v1-5 a0-5)) + (add-debug-line #t (bucket-id debug-no-zbuf) gp-0 s5-0 (new 'static 'rgba :g #xff :a #x80) #f (the-as rgba -1)) (let ((a1-8 s5-0) (v1-6 gp-0) - (a0-7 s5-0) - ) + (a0-7 s5-0)) (set! (-> a0-7 x) 0.0) (set! (-> a0-7 y) 0.0) (set! (-> a0-7 z) 4096.0) (set! (-> a0-7 w) 1.0) - (vector+! a1-8 v1-6 a0-7) - ) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - gp-0 - s5-0 - (new 'static 'rgba :b #xff :a #x80) - #f - (the-as rgba -1) - ) + (vector+! a1-8 v1-6 a0-7)) + (add-debug-line #t (bucket-id debug-no-zbuf) gp-0 s5-0 (new 'static 'rgba :b #xff :a #x80) #f (the-as rgba -1)) (when arg0 (set! (-> s5-0 quad) (-> arg0 quad)) (vector-normalize! s5-0 4096.0) (vector+! s5-0 gp-0 s5-0) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - gp-0 - s5-0 - (new 'static 'rgba :r #x7f :g #x7f :a #x80) - #f - (the-as rgba -1) - ) - ) - ) + (add-debug-line #t (bucket-id debug-no-zbuf) gp-0 s5-0 (new 'static 'rgba :r #x7f :g #x7f :a #x80) #f (the-as rgba -1)))) 0 - (none) - ) + (none)) (deftype cam-collision-record (structure) - ((pos vector :inline :offset-assert 0) - (vel vector :inline :offset-assert 16) - (desired-pos vector :inline :offset-assert 32) - (cam-tpos-cur vector :inline :offset-assert 48) - (cam-tpos-old vector :inline :offset-assert 64) - (view-flat vector :inline :offset-assert 80) - (string-min-val vector :inline :offset-assert 96) + ((pos vector :inline :offset-assert 0) + (vel vector :inline :offset-assert 16) + (desired-pos vector :inline :offset-assert 32) + (cam-tpos-cur vector :inline :offset-assert 48) + (cam-tpos-old vector :inline :offset-assert 64) + (view-flat vector :inline :offset-assert 80) + (string-min-val vector :inline :offset-assert 96) (string-max-val vector :inline :offset-assert 112) (view-off vector :inline :offset-assert 128) - (min-z-override float :offset-assert 144) - (string-push-z float :offset-assert 148) - (view-off-param float :offset-assert 152) - (frame int32 :offset-assert 156) - (iteration int32 :offset-assert 160) - (move-type symbol :offset-assert 164) - ) + (min-z-override float :offset-assert 144) + (string-push-z float :offset-assert 148) + (view-off-param float :offset-assert 152) + (frame int32 :offset-assert 156) + (iteration int32 :offset-assert 160) + (move-type symbol :offset-assert 164)) :method-count-assert 9 - :size-assert #xa8 - :flag-assert #x9000000a8 - ) - + :size-assert #xa8 + :flag-assert #x9000000a8) (deftype cam-collision-record-array (inline-array-class) - ((data cam-collision-record :dynamic :offset-assert 16) - ) + ((data cam-collision-record :dynamic :offset-assert 16)) :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 - ) - + :size-assert #x10 + :flag-assert #x900000010) (set! (-> cam-collision-record-array heap-base) (the-as uint 176)) @@ -1338,12 +863,7 @@ (defun cam-collision-record-save ((arg0 vector) (arg1 vector) (arg2 int) (arg3 symbol) (arg4 camera-slave)) (when *record-cam-collide-history* - (let ((v1-5 (the-as - cam-collision-record - (+ (+ (* 176 *cam-collision-record-last*) 12) (the-as int *cam-collision-record*)) - ) - ) - ) + (let ((v1-5 (the-as cam-collision-record (+ (+ (* 176 *cam-collision-record-last*) 12) (the-as int *cam-collision-record*))))) (set! (-> v1-5 pos quad) (-> arg0 quad)) (set! (-> v1-5 vel quad) (-> arg1 quad)) (set! (-> v1-5 view-flat quad) (-> arg4 view-flat quad)) @@ -1358,71 +878,40 @@ (set! (-> v1-5 move-type) arg3) (set! (-> v1-5 min-z-override) (-> arg4 min-z-override)) (set! (-> v1-5 string-push-z) (-> *camera* string-push-z)) - (set! (-> v1-5 view-off-param) (-> arg4 view-off-param)) - ) + (set! (-> v1-5 view-off-param) (-> arg4 view-off-param))) (set! *cam-collision-record-show* *cam-collision-record-last*) (set! *cam-collision-record-last* (+ *cam-collision-record-last* 1)) (set! *cam-collision-record-last* (mod *cam-collision-record-last* 600)) (when (= *cam-collision-record-last* *cam-collision-record-first*) (set! *cam-collision-record-first* (+ *cam-collision-record-first* 1)) - (set! *cam-collision-record-first* (mod *cam-collision-record-first* 600)) - ) - ) + (set! *cam-collision-record-first* (mod *cam-collision-record-first* 600)))) 0 - (none) - ) + (none)) (defun cam-collision-record-step ((arg0 int)) (set! *cam-collision-record-show* (+ *cam-collision-record-show* arg0)) (while (>= *cam-collision-record-show* 600) - (set! *cam-collision-record-show* (+ *cam-collision-record-show* -600)) - ) + (set! *cam-collision-record-show* (+ *cam-collision-record-show* -600))) (while (< *cam-collision-record-show* 0) - (set! *cam-collision-record-show* (+ *cam-collision-record-show* 600)) - ) + (set! *cam-collision-record-show* (+ *cam-collision-record-show* 600))) 0 - (none) - ) + (none)) (defun cam-collision-record-draw () (cond - ((cpad-pressed? 0 down) - (cam-collision-record-step 1) - ) - ((cpad-hold? 0 right) - (cam-collision-record-step 1) - ) - ((cpad-pressed? 0 up) - (cam-collision-record-step -1) - ) - ((cpad-hold? 0 left) - (cam-collision-record-step -1) - ) - ) - (let ((s5-0 (the-as - cam-collision-record - (+ (+ (* 176 *cam-collision-record-show*) 12) (the-as int *cam-collision-record*)) - ) - ) + ((cpad-pressed? 0 down) (cam-collision-record-step 1)) + ((cpad-hold? 0 right) (cam-collision-record-step 1)) + ((cpad-pressed? 0 up) (cam-collision-record-step -1)) + ((cpad-hold? 0 left) (cam-collision-record-step -1))) + (let ((s5-0 (the-as cam-collision-record (+ (+ (* 176 *cam-collision-record-show*) 12) (the-as int *cam-collision-record*)))) (s4-0 (new 'stack 'vector4w)) - (gp-0 (new 'stack 'vector4w)) - ) + (gp-0 (new 'stack 'vector4w))) (format *stdcon* "move-type ~A~%" (-> s5-0 move-type)) (cond - ((= (-> s5-0 move-type) 'normal) - (set! (-> s4-0 x) 255) - (set! (-> s4-0 y) 255) - ) - ((= (-> s5-0 move-type) 'jump) - (set! (-> s4-0 x) 255) - ) - ((= (-> s5-0 move-type) 'no-hit) - (set! (-> s4-0 y) 255) - ) - (else - (set! (-> s4-0 z) 255) - ) - ) + ((= (-> s5-0 move-type) 'normal) (set! (-> s4-0 x) 255) (set! (-> s4-0 y) 255)) + ((= (-> s5-0 move-type) 'jump) (set! (-> s4-0 x) 255)) + ((= (-> s5-0 move-type) 'no-hit) (set! (-> s4-0 y) 255)) + (else (set! (-> s4-0 z) 255))) (set! (-> s4-0 w) 128) (set! (-> gp-0 x) 127) (set! (-> gp-0 y) 127) @@ -1430,48 +919,25 @@ (set! (-> gp-0 w) 128) (camera-line-rel-len (-> s5-0 pos) (-> s5-0 vel) (fmax 81.92 (vector-length (-> s5-0 vel))) s4-0) (let* ((s3-1 (new 'stack-no-clear 'collide-tri-result)) - (f30-1 - (fill-and-probe-using-line-sphere - *collide-cache* - (-> s5-0 pos) - (-> s5-0 vel) - (-> *CAMERA-bank* collide-move-rad) - (collide-kind background) - (the-as process #f) - s3-1 - (new 'static 'pat-surface :nocamera #x1) - ) - ) - (s2-1 (new 'stack-no-clear 'vector)) - ) + (f30-1 (fill-and-probe-using-line-sphere *collide-cache* + (-> s5-0 pos) + (-> s5-0 vel) + (-> *CAMERA-bank* collide-move-rad) + (collide-kind background) + (the-as process #f) + s3-1 + (new 'static 'pat-surface :nocamera #x1))) + (s2-1 (new 'stack-no-clear 'vector))) (format *stdcon* "frame ~D iteration ~D travel ~f~%" (-> s5-0 frame) (-> s5-0 iteration) f30-1) - (format - *stdcon* - "mzo ~M psz ~M vop ~f~%" - (-> s5-0 min-z-override) - (-> s5-0 string-push-z) - (-> s5-0 view-off-param) - ) + (format *stdcon* "mzo ~M psz ~M vop ~f~%" (-> s5-0 min-z-override) (-> s5-0 string-push-z) (-> s5-0 view-off-param)) (format *stdcon* "pos ~M ~M ~M~%" (-> s5-0 pos x) (-> s5-0 pos y) (-> s5-0 pos z)) (format *stdcon* "vel ~M ~M ~M~%" (-> s5-0 vel x) (-> s5-0 vel y) (-> s5-0 vel z)) (format *stdcon* "des ~M ~M ~M~%" (-> s5-0 desired-pos x) (-> s5-0 desired-pos y) (-> s5-0 desired-pos z)) (format *stdcon* "flt ~M ~M ~M~%" (-> s5-0 view-flat x) (-> s5-0 view-flat y) (-> s5-0 view-flat z)) (format *stdcon* "cur ~M ~M ~M~%" (-> s5-0 cam-tpos-cur x) (-> s5-0 cam-tpos-cur y) (-> s5-0 cam-tpos-cur z)) (format *stdcon* "old ~M ~M ~M~%" (-> s5-0 cam-tpos-old x) (-> s5-0 cam-tpos-old y) (-> s5-0 cam-tpos-old z)) - (format - *stdcon* - "smn ~M ~M ~M~%" - (-> s5-0 string-min-val x) - (-> s5-0 string-min-val y) - (-> s5-0 string-min-val z) - ) - (format - *stdcon* - "smx ~M ~M ~M~%" - (-> s5-0 string-max-val x) - (-> s5-0 string-max-val y) - (-> s5-0 string-max-val z) - ) + (format *stdcon* "smn ~M ~M ~M~%" (-> s5-0 string-min-val x) (-> s5-0 string-min-val y) (-> s5-0 string-min-val z)) + (format *stdcon* "smx ~M ~M ~M~%" (-> s5-0 string-max-val x) (-> s5-0 string-max-val y) (-> s5-0 string-max-val z)) (format *stdcon* "vof ~M ~M ~M~%" (-> s5-0 view-off x) (-> s5-0 view-off y) (-> s5-0 view-off z)) (when (>= f30-1 0.0) (camera-line (the-as vector (-> s3-1 vertex)) (-> s3-1 vertex 1) s4-0) @@ -1480,73 +946,43 @@ (vector-! s2-1 (-> s5-0 pos) (-> s3-1 intersect)) (vector-normalize! s2-1 1.0) (camera-line-rel-len (-> s3-1 intersect) s2-1 (-> *CAMERA-bank* collide-move-rad) gp-0) - (camera-line-rel-len (-> s3-1 intersect) (-> s3-1 normal) (-> *CAMERA-bank* collide-move-rad) gp-0) - ) - ) - ) + (camera-line-rel-len (-> s3-1 intersect) (-> s3-1 normal) (-> *CAMERA-bank* collide-move-rad) gp-0)))) 0 - (none) - ) + (none)) (defun camera-master-debug ((arg0 camera-master)) (when *display-cam-other* (let ((f0-1 (* 0.5 (-> *camera-other-fov* data)))) - (camera-fov-frame - *camera-other-matrix* - *camera-other-trans* - f0-1 - 0.75 - 1.0 - (new 'static 'vector4w :x #xff :w #x80) - ) - ) + (camera-fov-frame *camera-other-matrix* *camera-other-trans* f0-1 0.75 1.0 (new 'static 'vector4w :x #xff :w #x80))) (camera-line *camera-other-trans* *camera-other-root* (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) (let ((s4-0 (new 'stack-no-clear 'vector)) - (s5-0 *camera-other-trans*) - ) + (s5-0 *camera-other-trans*)) (vector+float*! s4-0 s5-0 (the-as vector (-> *camera-other-matrix* vector)) 2048.0) (camera-line s5-0 s4-0 (new 'static 'vector4w :x #xff :w #x80)) (vector+float*! s4-0 s5-0 (-> *camera-other-matrix* vector 1) 2048.0) (camera-line s5-0 s4-0 (new 'static 'vector4w :y #xff :w #x80)) (vector+float*! s4-0 s5-0 (-> *camera-other-matrix* vector 2) 2048.0) - (camera-line s5-0 s4-0 (new 'static 'vector4w :z #xff :w #x80)) - ) - ) + (camera-line s5-0 s4-0 (new 'static 'vector4w :z #xff :w #x80)))) (when *display-camera-last-attacker* (format *stdcon* "last attacker '") - (let ((v1-12 (handle->process (-> last-try-to-look-at-data who)))) - (if v1-12 - (format *stdcon* "~S" (-> v1-12 name)) - ) - ) - (format *stdcon* "'~%") - ) + (let ((v1-12 (handle->process (-> last-try-to-look-at-data who)))) (if v1-12 (format *stdcon* "~S" (-> v1-12 name)))) + (format *stdcon* "'~%")) (when *display-camera-old-stats* - (format - *stdcon* - "old ~S cpu ~D old vu ~D (go to menu before comparing)~%" - *camera-old-level* - *camera-old-cpu* - *camera-old-vu* - ) + (format *stdcon* + "old ~S cpu ~D old vu ~D (go to menu before comparing)~%" + *camera-old-level* + *camera-old-cpu* + *camera-old-vu*) (format *stdcon* "old tfrag-mem ~D~%" (sar *camera-old-tfrag-bytes* 10)) (format *stdcon* "~S~%" *camera-old-stat-string-tfrag-near*) (format *stdcon* "~S~%" *camera-old-stat-string-tfrag*) - (format *stdcon* "~S~%" *camera-old-stat-string-total*) - ) - (if *display-cam-collide-history* - (cam-collision-record-draw) - ) - (if *display-cam-master-marks* - (tracking-spline-method-23 (-> arg0 target-spline)) - ) - (if *display-xyz-axes* - (master-draw-coordinates (the-as vector #f)) - ) + (format *stdcon* "~S~%" *camera-old-stat-string-total*)) + (if *display-cam-collide-history* (cam-collision-record-draw)) + (if *display-cam-master-marks* (tracking-spline-method-23 (-> arg0 target-spline))) + (if *display-xyz-axes* (master-draw-coordinates (the-as vector #f))) (cam-debug-draw-tris) 0 - (none) - ) + (none)) (defun debug-set-camera-pos-rot! ((arg0 vector) (arg1 matrix)) (when (and *camera* *camera-combiner*) @@ -1556,17 +992,13 @@ (v1-10 (-> arg1 vector 0 quad)) (a0-4 (-> arg1 vector 1 quad)) (a1-2 (-> arg1 vector 2 quad)) - (a3-0 (-> arg1 vector 3 quad)) - ) + (a3-0 (-> arg1 vector 3 quad))) (set! (-> a2-0 vector 0 quad) v1-10) (set! (-> a2-0 vector 1 quad) a0-4) (set! (-> a2-0 vector 2 quad) a1-2) - (set! (-> a2-0 vector 3 quad) a3-0) - ) - (send-event *camera* 'change-state cam-fixed 0) - ) - arg0 - ) + (set! (-> a2-0 vector 3 quad) a3-0)) + (send-event *camera* 'change-state cam-fixed 0)) + arg0) (defun external-cam-reset! () (vector-reset! (-> *math-camera* trans)) @@ -1577,15 +1009,11 @@ (a0-2 (-> a3-0 vector 0 quad)) (a1-0 (-> a3-0 vector 1 quad)) (a2-0 (-> a3-0 vector 2 quad)) - (a3-1 (-> a3-0 vector 3 quad)) - ) + (a3-1 (-> a3-0 vector 3 quad))) (set! (-> v1-6 vector 0 quad) a0-2) (set! (-> v1-6 vector 1 quad) a1-0) (set! (-> v1-6 vector 2 quad) a2-0) - (set! (-> v1-6 vector 3 quad) a3-1) - ) - (set! (-> *math-camera* trans quad) (-> *camera-combiner* trans quad)) - ) + (set! (-> v1-6 vector 3 quad) a3-1)) + (set! (-> *math-camera* trans quad) (-> *camera-combiner* trans quad))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/camera/cam-interface-h.gc b/goal_src/jak1/engine/camera/cam-interface-h.gc index fa298ae759..11e5a76ed2 100644 --- a/goal_src/jak1/engine/camera/cam-interface-h.gc +++ b/goal_src/jak1/engine/camera/cam-interface-h.gc @@ -1,24 +1,26 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/camera-h.gc") (require "engine/math/matrix-h.gc") -;; name: cam-interface-h.gc -;; name in dgo: cam-interface-h -;; dgos: GAME, ENGINE - ;; NOTE - forward declaration needed for cam-interface (define-extern *camera-dummy-vector* vector) + (define-extern *camera* camera-master) ;; unknown type (define *camera-read-analog* #t) + (define *camera-read-buttons* #t) + (define *cam-free-move-along-z* #t) + (define-perm *camera-init-mat* matrix #f) + (define-perm *camera* camera-master #f) + (define-perm *camera-combiner* camera-combiner #f) + (define-perm *camera-orbit-target* (pointer process-drawable) #f) (define-extern position-in-front-of-camera! (function vector float float vector)) diff --git a/goal_src/jak1/engine/camera/cam-interface.gc b/goal_src/jak1/engine/camera/cam-interface.gc index 38a111d2cd..077609ff24 100644 --- a/goal_src/jak1/engine/camera/cam-interface.gc +++ b/goal_src/jak1/engine/camera/cam-interface.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/cam-interface-h.gc") (require "engine/math/quaternion.gc") (require "kernel/gstate.gc") @@ -9,77 +8,50 @@ (require "engine/entity/entity-h.gc") (require "engine/math/transformq-h.gc") -;; name: cam-interface.gc -;; name in dgo: cam-interface -;; dgos: GAME, ENGINE - - ;; definition for function position-in-front-of-camera! (defun position-in-front-of-camera! ((arg0 vector) (arg1 float) (arg2 float)) (vector-float*! arg0 (-> *math-camera* inv-camera-rot vector 2) arg1) (vector+float*! arg0 arg0 (-> *math-camera* inv-camera-rot vector 1) arg2) (vector+! arg0 arg0 (-> *math-camera* trans)) - arg0 - ) + arg0) ;; definition for function matrix-local->world (defun matrix-local->world ((arg0 symbol) (arg1 symbol)) - (if arg0 - (-> *math-camera* inv-camera-rot-smooth) - (-> *math-camera* inv-camera-rot) - ) - ) + (if arg0 (-> *math-camera* inv-camera-rot-smooth) (-> *math-camera* inv-camera-rot))) ;; definition for function matrix-world->local (defun matrix-world->local () - (-> *math-camera* camera-rot) - ) + (-> *math-camera* camera-rot)) (define-perm *camera-dummy-vector* vector (vector-reset! (new 'global 'vector))) ;; definition for function camera-pos ;; INFO: Return type mismatch object vs vector. (defun camera-pos () - (the-as vector (cond - (*camera-combiner* - (-> *camera-combiner* stack) - ) - (*math-camera* - (-> *math-camera* trans) - ) - (else - *camera-dummy-vector* - ) - ) - ) - ) + (the-as vector + (cond + (*camera-combiner* (-> *camera-combiner* stack)) + (*math-camera* (-> *math-camera* trans)) + (else *camera-dummy-vector*)))) ;; definition for function math-camera-pos (defun math-camera-pos () - (-> *math-camera* trans) - ) + (-> *math-camera* trans)) ;; definition for function camera-angle (defun camera-angle () (let ((f0-0 (-> *math-camera* camera-rot data 0)) - (f1-0 (-> *math-camera* camera-rot data 2)) - ) - (atan f1-0 f0-0) - ) - ) + (f1-0 (-> *math-camera* camera-rot data 2))) + (atan f1-0 f0-0))) ;; definition for function camera-teleport-to-entity ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defbehavior camera-teleport-to-entity process ((arg0 entity-actor)) (let ((gp-0 (new 'stack 'transformq))) - (set! (-> gp-0 trans quad) - (-> (the-as transform (-> arg0 extra)) scale quad) - ) + (set! (-> gp-0 trans quad) (-> (the-as transform (-> arg0 extra)) scale quad)) (quaternion-copy! (-> gp-0 quat) (-> arg0 quat)) (vector-identity! (-> gp-0 scale)) - (send-event *camera* 'teleport-to-transformq gp-0) - ) + (send-event *camera* 'teleport-to-transformq gp-0)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/camera/cam-layout.gc b/goal_src/jak1/engine/camera/cam-layout.gc index cf003b6262..0153b4e0a5 100644 --- a/goal_src/jak1/engine/camera/cam-layout.gc +++ b/goal_src/jak1/engine/camera/cam-layout.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ps2/pad.gc") (require "engine/geometry/vol-h.gc") (require "engine/camera/camera.gc") -;; name: cam-layout.gc -;; name in dgo: cam-layout -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; this file is debug only @@ -18,80 +13,59 @@ (define *camera-layout-blink* #f) (deftype cam-layout-bank (basic) - ((spline-t float) - (spline-step float) - (intro-t float) - (intro-step float) - (debug-t float) - (debug-step float) - ) - ) - - -(define *CAM_LAYOUT-bank* (new 'static 'cam-layout-bank - :spline-t 0.01 - :spline-step 0.0016666667 - :intro-t 0.01 - :intro-step 0.0016666667 - :debug-t 0.01 - :debug-step 0.0033333334 - ) - ) + ((spline-t float) + (spline-step float) + (intro-t float) + (intro-step float) + (debug-t float) + (debug-step float))) + +(define *CAM_LAYOUT-bank* + (new 'static + 'cam-layout-bank + :spline-t 0.01 + :spline-step 0.0016666667 + :intro-t 0.01 + :intro-step 0.0016666667 + :debug-t 0.01 + :debug-step 0.0033333334)) (define *camera-layout-message-ypos* 30) -(deftype clm-basic (basic) - () - ) - +(deftype clm-basic (basic) ()) (deftype clm-item-action (structure) - ((button uint64) - (options uint64) - (func symbol) - (parm0 int32 :offset 20) - (parm0-basic basic :overlay-at parm0) - (parm1-basic basic :offset 24) - (parm1 symbol :overlay-at parm1-basic) - ) - ) - + ((button uint64) + (options uint64) + (func symbol) + (parm0 int32 :offset 20) + (parm0-basic basic :overlay-at parm0) + (parm1-basic basic :offset 24) + (parm1 symbol :overlay-at parm1-basic))) (deftype clm-item (clm-basic) - ((description string) - (button-symbol symbol) - (action clm-item-action :inline) - ) - ) - + ((description string) + (button-symbol symbol) + (action clm-item-action :inline))) (deftype clm-list-item (basic) - ((description string) - (track-val symbol) - (val-func symbol) - (val-parm0 int32 :offset 16) - (val-parm0-basic basic :overlay-at val-parm0) - (val-parm1-basic basic :offset 20) - (val-parm1 symbol :overlay-at val-parm1-basic) - (actions (array clm-item-action)) - ) - ) - + ((description string) + (track-val symbol) + (val-func symbol) + (val-parm0 int32 :offset 16) + (val-parm0-basic basic :overlay-at val-parm0) + (val-parm1-basic basic :offset 20) + (val-parm1 symbol :overlay-at val-parm1-basic) + (actions (array clm-item-action)))) (deftype clm-list (clm-basic) - ((tracker symbol) - (cur-list-item int32) - (items (array clm-list-item)) - ) - ) - + ((tracker symbol) + (cur-list-item int32) + (items (array clm-list-item)))) (deftype clm (basic) - ((title string) - (items (array clm-basic)) - ) - ) - + ((title string) + (items (array clm-basic)))) (define *volume-point-current* 0) @@ -102,10 +76,7 @@ (define *volume-normal* (new 'debug 'vector-array 600)) (deftype volume-descriptor-array (inline-array-class) - ((data plane-volume :inline :dynamic :offset 16) - ) - ) - + ((data plane-volume :inline :dynamic :offset 16))) (set! (-> volume-descriptor-array heap-base) (the-as uint 24)) @@ -114,55 +85,37 @@ (define *volume-descriptor* (the-as vol-control (new 'debug 'volume-descriptor-array 100))) (deftype cam-layout (process) - ((cam-entity entity-camera) - (num-entities int32) - (cur-entity int32) - (num-volumes int32) - (cur-volume int32) - (first-pvol int32) - (first-cutoutvol int32) - (res-key float) - ) + ((cam-entity entity-camera) + (num-entities int32) + (cur-entity int32) + (num-volumes int32) + (cur-volume int32) + (first-pvol int32) + (first-cutoutvol int32) + (res-key float)) :heap-base #x200 (:states - cam-layout-active - ) - ) - + cam-layout-active)) (defun cam-layout-print ((arg0 int) (arg1 int) (arg2 string)) (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (gp-0 (-> s5-0 base)) - ) + (gp-0 (-> s5-0 base))) (draw-string-xy arg2 s5-0 arg0 arg1 (font-color white) (font-flags shadow kerning)) (let ((a3-4 (-> s5-0 base))) (let ((v1-4 (the-as object (-> s5-0 base)))) (set! (-> (the-as dma-packet v1-4) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-4) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-4) vif1) (new 'static 'vif-tag)) - (set! (-> s5-0 base) (&+ (the-as pointer v1-4) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-0 - (the-as (pointer dma-tag) a3-4) - ) - ) - ) - ) + (set! (-> s5-0 base) (&+ (the-as pointer v1-4) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-0 + (the-as (pointer dma-tag) a3-4))))) (defun cam-layout-intersect-dist ((arg0 vector) (arg1 vector) (arg2 vector)) (let ((f0-1 (vector-dot arg1 arg0)) - (f1-1 (vector-dot arg2 arg0)) - ) - (the-as float (if (< 0.00001 (fabs f1-1)) - (/ (- (-> arg0 w) f0-1) f1-1) - 409600000.0 - ) - ) - ) - ) + (f1-1 (vector-dot arg2 arg0))) + (the-as float (if (< 0.00001 (fabs f1-1)) (/ (- (-> arg0 w) f0-1) f1-1) 409600000.0)))) (defbehavior cam-layout-entity-volume-info-create cam-layout ((arg0 entity-camera) (arg1 symbol)) (local-vars @@ -177,516 +130,345 @@ (sv-240 vector) (sv-256 int) (sv-272 int) - (sv-288 int) - ) + (sv-288 int)) (let ((s4-0 0)) (loop (set! sv-16 (new 'static 'res-tag)) - (let ((s3-0 (the-as (inline-array vector) ((method-of-type res-lump get-property-data) - arg0 - arg1 - 'exact - (the float s4-0) - (the-as pointer #f) - (& sv-16) - *res-static-buf* - ) - ) - ) - ) + (let ((s3-0 (the-as (inline-array vector) + ((method-of-type res-lump get-property-data) + arg0 + arg1 + 'exact + (the float s4-0) + (the-as pointer #f) + (& sv-16) + *res-static-buf*)))) (cond (s3-0 - (when (>= *volume-descriptor-current* 100) - (format 0 "ERROR : camera editing out of volume descriptors~%") - (return #f) - ) - (let ((s2-0 (-> *volume-descriptor* pos-vol *volume-descriptor-current*))) - (set! (-> s2-0 volume-type) arg1) - (set! (-> s2-0 point-count) 0) - (set! (-> s2-0 first-point) (the-as (pointer vector) (-> *volume-point* data *volume-point-current*))) - (set! (-> s2-0 normal-count) 0) - (set! (-> s2-0 first-normal) (the-as (pointer vector) (-> *volume-normal* data *volume-normal-current*))) - (set! *volume-descriptor-current* (+ *volume-descriptor-current* 1)) - (+! (-> self num-volumes) 1) - (dotimes (s1-0 (the-as int (-> sv-16 elt-count))) - (set! sv-192 (new 'stack-no-clear 'vector)) - (set! (-> sv-192 quad) (the-as uint128 0)) - (set! sv-208 (new 'stack-no-clear 'vector)) - (set! (-> sv-208 quad) (the-as uint128 0)) - (set! sv-224 (new 'stack-no-clear 'vector)) - (set! (-> sv-224 quad) (the-as uint128 0)) - (set! sv-240 (new 'stack-no-clear 'vector)) - (set! (-> sv-240 quad) (the-as uint128 0)) - 0.0 - 0.0 - 0.0 - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (let ((s0-0 (new-stack-vector0))) - (set! sv-256 0) - (set! sv-272 0) - (while (< sv-272 (the-as int (-> sv-16 elt-count))) - (when (!= s1-0 sv-272) - (vector-float*! sv-192 (-> s3-0 sv-272) (-> s3-0 sv-272 w)) - (vector-cross! sv-208 (-> s3-0 sv-272) (-> s3-0 s1-0)) - (vector-normalize! sv-208 (the-as float 1.0)) - (vector-cross! sv-224 sv-208 (-> s3-0 sv-272)) - (vector-normalize! sv-224 (the-as float 1.0)) - (let ((f0-6 (cam-layout-intersect-dist (-> s3-0 s1-0) sv-192 sv-224))) - (when (!= f0-6 409600000.0) - (vector+float*! sv-240 sv-192 sv-224 f0-6) - (set! sv-160 (new-stack-vector0)) - (set! sv-164 0.0) - (set! sv-168 0) - (set! sv-176 (new-stack-vector0)) - (set! (-> sv-160 quad) (-> sv-240 quad)) - (set! sv-288 0) - (while (< sv-288 (the-as int (-> sv-16 elt-count))) - (when (and (!= sv-288 s1-0) (!= sv-288 sv-272)) - (let ((f30-0 (cam-layout-intersect-dist (-> s3-0 sv-288) sv-160 sv-208))) - (cond - ((= f30-0 409600000.0) - ) - ((zero? sv-168) - (vector+float*! sv-160 sv-160 sv-208 f30-0) - (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) - (set! sv-164 8192000.0) - (set! sv-168 1) - ) - ((begin (vector-float*! sv-240 sv-208 f30-0) (>= (vector-dot sv-240 sv-176) 0.0)) - ) - ((>= (vector-dot sv-240 (-> s3-0 sv-288)) 0.0) - (when (< (fabs f30-0) (fabs sv-164)) - (set! sv-164 f30-0) - (set! sv-168 (+ sv-168 1)) - ) - ) - (else - (vector+float*! sv-160 sv-160 sv-208 f30-0) - (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) - (set! sv-168 (+ sv-168 1)) - (if (< (fabs f30-0) (fabs sv-164)) - (set! sv-164 (- sv-164 f30-0)) - (set! sv-164 0.0) - ) - ) - ) - ) - ) - (set! sv-288 (+ sv-288 1)) - ) - (cond - ((zero? sv-168) - ) - ((= sv-164 0.0) - ) - (else - (dotimes (v1-87 (the-as int (-> sv-16 elt-count))) - (when (and (!= v1-87 s1-0) (!= v1-87 sv-272)) - (if (< 4096.0 (- (vector-dot sv-160 (-> s3-0 v1-87)) (-> s3-0 v1-87 w))) - (goto cfg-47) - ) - ) - ) - (vector+float*! sv-240 sv-160 sv-208 sv-164) - (cond - ((>= *volume-point-current* 999) - (format 0 "ERROR : camera editing out of volume points~%") - ) - (else - (set! (-> *volume-point* data *volume-point-current* quad) (-> sv-160 quad)) - (set! (-> *volume-point* data (+ *volume-point-current* 1) quad) (-> sv-240 quad)) - (set! *volume-point-current* (+ *volume-point-current* 2)) - (+! (-> s2-0 point-count) 2) - ) - ) - (vector+! s0-0 s0-0 sv-160) - (vector+! s0-0 s0-0 sv-240) - (set! sv-256 (+ sv-256 2)) - sv-256 - ) - ) - ) - ) - ) - (label cfg-47) - (set! sv-272 (+ sv-272 1)) - ) - (when (nonzero? sv-256) - (vector-float*! s0-0 s0-0 (/ 1.0 (the float sv-256))) - (cond - ((>= *volume-normal-current* 599) - (format 0 "ERROR : camera editing out of volume normals~%") - ) - (else - (set! (-> *volume-normal* data *volume-normal-current* quad) (-> s0-0 quad)) - (set! (-> *volume-normal* data (+ *volume-normal-current* 1) quad) (-> s3-0 s1-0 quad)) - (set! *volume-normal-current* (+ *volume-normal-current* 2)) - (set! (-> s2-0 normal-count) (+ (-> s2-0 normal-count) 2)) - ) - ) - ) - ) - ) - ) - ) - (else - (return #f) - ) - ) - ) - (+! s4-0 1) - ) - ) - (the-as symbol #f) - ) + (when (>= *volume-descriptor-current* 100) + (format 0 "ERROR : camera editing out of volume descriptors~%") + (return #f)) + (let ((s2-0 (-> *volume-descriptor* pos-vol *volume-descriptor-current*))) + (set! (-> s2-0 volume-type) arg1) + (set! (-> s2-0 point-count) 0) + (set! (-> s2-0 first-point) (the-as (pointer vector) (-> *volume-point* data *volume-point-current*))) + (set! (-> s2-0 normal-count) 0) + (set! (-> s2-0 first-normal) (the-as (pointer vector) (-> *volume-normal* data *volume-normal-current*))) + (set! *volume-descriptor-current* (+ *volume-descriptor-current* 1)) + (+! (-> self num-volumes) 1) + (dotimes (s1-0 (the-as int (-> sv-16 elt-count))) + (set! sv-192 (new 'stack-no-clear 'vector)) + (set! (-> sv-192 quad) (the-as uint128 0)) + (set! sv-208 (new 'stack-no-clear 'vector)) + (set! (-> sv-208 quad) (the-as uint128 0)) + (set! sv-224 (new 'stack-no-clear 'vector)) + (set! (-> sv-224 quad) (the-as uint128 0)) + (set! sv-240 (new 'stack-no-clear 'vector)) + (set! (-> sv-240 quad) (the-as uint128 0)) + 0.0 + 0.0 + 0.0 + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (let ((s0-0 (new-stack-vector0))) + (set! sv-256 0) + (set! sv-272 0) + (while (< sv-272 (the-as int (-> sv-16 elt-count))) + (when (!= s1-0 sv-272) + (vector-float*! sv-192 (-> s3-0 sv-272) (-> s3-0 sv-272 w)) + (vector-cross! sv-208 (-> s3-0 sv-272) (-> s3-0 s1-0)) + (vector-normalize! sv-208 (the-as float 1.0)) + (vector-cross! sv-224 sv-208 (-> s3-0 sv-272)) + (vector-normalize! sv-224 (the-as float 1.0)) + (let ((f0-6 (cam-layout-intersect-dist (-> s3-0 s1-0) sv-192 sv-224))) + (when (!= f0-6 409600000.0) + (vector+float*! sv-240 sv-192 sv-224 f0-6) + (set! sv-160 (new-stack-vector0)) + (set! sv-164 0.0) + (set! sv-168 0) + (set! sv-176 (new-stack-vector0)) + (set! (-> sv-160 quad) (-> sv-240 quad)) + (set! sv-288 0) + (while (< sv-288 (the-as int (-> sv-16 elt-count))) + (when (and (!= sv-288 s1-0) (!= sv-288 sv-272)) + (let ((f30-0 (cam-layout-intersect-dist (-> s3-0 sv-288) sv-160 sv-208))) + (cond + ((= f30-0 409600000.0)) + ((zero? sv-168) + (vector+float*! sv-160 sv-160 sv-208 f30-0) + (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) + (set! sv-164 8192000.0) + (set! sv-168 1)) + ((begin (vector-float*! sv-240 sv-208 f30-0) (>= (vector-dot sv-240 sv-176) 0.0))) + ((>= (vector-dot sv-240 (-> s3-0 sv-288)) 0.0) + (when (< (fabs f30-0) (fabs sv-164)) + (set! sv-164 f30-0) + (set! sv-168 (+ sv-168 1)))) + (else + (vector+float*! sv-160 sv-160 sv-208 f30-0) + (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) + (set! sv-168 (+ sv-168 1)) + (if (< (fabs f30-0) (fabs sv-164)) (set! sv-164 (- sv-164 f30-0)) (set! sv-164 0.0)))))) + (set! sv-288 (+ sv-288 1))) + (cond + ((zero? sv-168)) + ((= sv-164 0.0)) + (else + (dotimes (v1-87 (the-as int (-> sv-16 elt-count))) + (when (and (!= v1-87 s1-0) (!= v1-87 sv-272)) + (if (< 4096.0 (- (vector-dot sv-160 (-> s3-0 v1-87)) (-> s3-0 v1-87 w))) (goto cfg-47)))) + (vector+float*! sv-240 sv-160 sv-208 sv-164) + (cond + ((>= *volume-point-current* 999) (format 0 "ERROR : camera editing out of volume points~%")) + (else + (set! (-> *volume-point* data *volume-point-current* quad) (-> sv-160 quad)) + (set! (-> *volume-point* data (+ *volume-point-current* 1) quad) (-> sv-240 quad)) + (set! *volume-point-current* (+ *volume-point-current* 2)) + (+! (-> s2-0 point-count) 2))) + (vector+! s0-0 s0-0 sv-160) + (vector+! s0-0 s0-0 sv-240) + (set! sv-256 (+ sv-256 2)) + sv-256))))) + (label cfg-47) + (set! sv-272 (+ sv-272 1))) + (when (nonzero? sv-256) + (vector-float*! s0-0 s0-0 (/ 1.0 (the float sv-256))) + (cond + ((>= *volume-normal-current* 599) (format 0 "ERROR : camera editing out of volume normals~%")) + (else + (set! (-> *volume-normal* data *volume-normal-current* quad) (-> s0-0 quad)) + (set! (-> *volume-normal* data (+ *volume-normal-current* 1) quad) (-> s3-0 s1-0 quad)) + (set! *volume-normal-current* (+ *volume-normal-current* 2)) + (set! (-> s2-0 normal-count) (+ (-> s2-0 normal-count) 2))))))))) + (else (return #f)))) + (+! s4-0 1))) + (the-as symbol #f)) (defbehavior cam-layout-entity-volume-info cam-layout () (dotimes (gp-0 (-> self num-volumes)) (cond ((and (= gp-0 (-> self cur-volume)) (= *camera-layout-blink* 'volume) - (not (logtest? (-> *display* real-actual-frame-counter) 8)) - ) - ) + (not (logtest? (-> *display* real-actual-frame-counter) 8)))) (else - (let ((s5-0 (-> *volume-descriptor* pos-vol gp-0))) - (let ((a0-7 (new 'static 'vector4w :w #x80))) - (cond - ((= (-> s5-0 volume-type) 'vol) - (set! (-> a0-7 x) 0) - (set! (-> a0-7 y) 192) - (set! (-> a0-7 z) 0) - 0 - ) - ((= (-> s5-0 volume-type) 'pvol) - (set! (-> a0-7 x) 128) - (set! (-> a0-7 y) 128) - (set! (-> a0-7 z) 128) - ) - ((= (-> s5-0 volume-type) 'cutoutvol) - (set! (-> a0-7 x) 192) - (set! (-> a0-7 y) 0) - (set! (-> a0-7 z) 0) - 0 - ) - ) - (camera-line-setup a0-7) - ) - (let ((s4-0 (the-as object (-> s5-0 first-point)))) - (dotimes (s3-0 (/ (-> s5-0 point-count) 2)) - (camera-line-draw (the-as vector s4-0) (&+ (the-as vector s4-0) 16)) - (set! s4-0 (&-> (the-as (inline-array plane-volume) s4-0) 1 first-point)) - ) - ) - ) - ) - ) - ) - #f - ) + (let ((s5-0 (-> *volume-descriptor* pos-vol gp-0))) + (let ((a0-7 (new 'static 'vector4w :w #x80))) + (cond + ((= (-> s5-0 volume-type) 'vol) (set! (-> a0-7 x) 0) (set! (-> a0-7 y) 192) (set! (-> a0-7 z) 0) 0) + ((= (-> s5-0 volume-type) 'pvol) (set! (-> a0-7 x) 128) (set! (-> a0-7 y) 128) (set! (-> a0-7 z) 128)) + ((= (-> s5-0 volume-type) 'cutoutvol) (set! (-> a0-7 x) 192) (set! (-> a0-7 y) 0) (set! (-> a0-7 z) 0) 0)) + (camera-line-setup a0-7)) + (let ((s4-0 (the-as object (-> s5-0 first-point)))) + (dotimes (s3-0 (/ (-> s5-0 point-count) 2)) + (camera-line-draw (the-as vector s4-0) (&+ (the-as vector s4-0) 16)) + (set! s4-0 (&-> (the-as (inline-array plane-volume) s4-0) 1 first-point)))))))) + #f) (defun v-slrp! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (let ((s2-0 (new-stack-vector0)) (s1-0 (new-stack-vector0)) - (s0-0 (new-stack-vector0)) - ) + (s0-0 (new-stack-vector0))) 0.0 0.0 0.0 0.0 (cond - ((< 1.0 arg3) - (set! arg3 (the-as float 1.0)) - ) - ((< arg3 0.0) - (set! arg3 (the-as float 0.0)) - ) - ) + ((< 1.0 arg3) (set! arg3 (the-as float 1.0))) + ((< arg3 0.0) (set! arg3 (the-as float 0.0)))) (vector-normalize-copy! s2-0 arg1 (the-as float 1.0)) (vector-normalize-copy! s1-0 arg2 (the-as float 1.0)) (vector-cross! s0-0 s2-0 s1-0) (let* ((f30-0 (vector-length s0-0)) - (f28-0 (asin f30-0)) - ) + (f28-0 (asin f30-0))) (vector-float*! arg0 arg1 (/ (sin (* (- 1.0 arg3) f28-0)) f30-0)) - (vector+float*! arg0 arg0 arg2 (/ (sin (* arg3 f28-0)) f30-0)) - ) - ) - ) + (vector+float*! arg0 arg0 arg2 (/ (sin (* arg3 f28-0)) f30-0))))) (deftype interp-test-info (structure) - ((from vector :inline) - (to vector :inline) - (origin vector :inline) - (color vector4w) - (axis vector) - (disp string) - ) - ) - + ((from vector :inline) + (to vector :inline) + (origin vector :inline) + (color vector4w) + (axis vector) + (disp string))) (defun interp-test ((arg0 (function vector vector vector float vector float none)) (arg1 interp-test-info)) (let ((s3-0 (new-stack-vector0)) - (gp-0 (new-stack-vector0)) - ) + (gp-0 (new-stack-vector0))) (arg0 s3-0 (-> arg1 from) (-> arg1 to) (the-as float 0.0) (-> arg1 axis) (the-as float 65536.0)) (vector+! s3-0 s3-0 (-> arg1 origin)) (dotimes (s2-0 10) (set! (-> gp-0 quad) (-> s3-0 quad)) (arg0 s3-0 (-> arg1 from) (-> arg1 to) (* 0.1 (+ 1.0 (the float s2-0))) (-> arg1 axis) (the-as float 65536.0)) (vector+! s3-0 s3-0 (-> arg1 origin)) - (camera-line s3-0 gp-0 (-> arg1 color)) - ) + (camera-line s3-0 gp-0 (-> arg1 color))) (arg0 gp-0 (-> arg1 from) (-> arg1 to) (-> *CAM_LAYOUT-bank* debug-t) (-> arg1 axis) (the-as float 65536.0)) (format *stdcon* "~S ~f~%" (-> arg1 disp) (vector-length gp-0)) (vector+! gp-0 gp-0 (-> arg1 origin)) (camera-line (-> arg1 origin) gp-0 (-> arg1 color)) - (camera-cross (new 'static 'vector :y 1024.0) (new 'static 'vector :z 1024.0) gp-0 (-> arg1 color) (meters 1)) - ) - ) + (camera-cross (new 'static 'vector :y 1024.0) (new 'static 'vector :z 1024.0) gp-0 (-> arg1 color) (meters 1)))) (defun interp-test-deg ((arg0 (function vector vector vector vector float none)) (arg1 interp-test-info)) (let ((s3-0 (new-stack-vector0)) - (gp-0 (new-stack-vector0)) - ) + (gp-0 (new-stack-vector0))) (arg0 s3-0 (-> arg1 from) (-> arg1 to) (-> arg1 axis) (the-as float 0.0)) (vector+! s3-0 s3-0 (-> arg1 origin)) (dotimes (s2-0 10) (set! (-> gp-0 quad) (-> s3-0 quad)) (arg0 s3-0 (-> arg1 from) (-> arg1 to) (-> arg1 axis) (* 182.04445 (* 18.0 (+ 1.0 (the float s2-0))))) (vector+! s3-0 s3-0 (-> arg1 origin)) - (camera-line s3-0 gp-0 (-> arg1 color)) - ) + (camera-line s3-0 gp-0 (-> arg1 color))) (arg0 gp-0 (-> arg1 from) (-> arg1 to) (-> arg1 axis) (* 182.04445 (* 180.0 (-> *CAM_LAYOUT-bank* debug-t)))) (format *stdcon* "~S ~f~%" (-> arg1 disp) (vector-length gp-0)) (vector+! gp-0 gp-0 (-> arg1 origin)) (camera-line (-> arg1 origin) gp-0 (-> arg1 color)) - (camera-cross (new 'static 'vector :y 1024.0) (new 'static 'vector :z 1024.0) gp-0 (-> arg1 color) (meters 1)) - ) - ) + (camera-cross (new 'static 'vector :y 1024.0) (new 'static 'vector :z 1024.0) gp-0 (-> arg1 color) (meters 1)))) (defun cam-layout-entity-info ((arg0 entity-actor)) - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (let ((s5-0 (new-stack-matrix0)) - (s4-0 (new-stack-vector0)) - ) + (s4-0 (new-stack-vector0))) (when (and (cam-slave-get-vector-with-offset arg0 s4-0 'trans) - (or (!= *camera-layout-blink* 'camera) (logtest? (-> *display* real-actual-frame-counter) 8)) - ) + (or (!= *camera-layout-blink* 'camera) (logtest? (-> *display* real-actual-frame-counter) 8))) (cam-slave-get-rot arg0 s5-0) - (camera-fov-frame - s5-0 - s4-0 - (* 0.5 (cam-slave-get-fov arg0)) - (the-as float 0.75) - (the-as float 1.0) - (new 'static 'vector4w :z #xff :w #x80) - ) - ) - ) + (camera-fov-frame s5-0 + s4-0 + (* 0.5 (cam-slave-get-fov arg0)) + (the-as float 0.75) + (the-as float 1.0) + (new 'static 'vector4w :z #xff :w #x80)))) (let ((s5-1 (new-stack-vector0))) (if (and (cam-slave-get-vector-with-offset arg0 s5-1 'pivot) - (or (!= *camera-layout-blink* 'pivot) (logtest? (-> *display* real-actual-frame-counter) 8)) - ) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s5-1 - (new 'static 'vector4w :x #x80 :w #x80) - (meters 1) - ) - ) - ) + (or (!= *camera-layout-blink* 'pivot) (logtest? (-> *display* real-actual-frame-counter) 8))) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s5-1 + (new 'static 'vector4w :x #x80 :w #x80) + (meters 1)))) (let ((s5-2 (new-stack-vector0))) (if (and (cam-slave-get-vector-with-offset arg0 s5-2 'align) - (or (!= *camera-layout-blink* 'align) (logtest? (-> *display* real-actual-frame-counter) 8)) - ) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s5-2 - (new 'static 'vector4w :y #x80 :w #x80) - (meters 1) - ) - ) - ) + (or (!= *camera-layout-blink* 'align) (logtest? (-> *display* real-actual-frame-counter) 8))) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s5-2 + (new 'static 'vector4w :y #x80 :w #x80) + (meters 1)))) (let ((s5-3 (new-stack-vector0))) (if (and (cam-slave-get-vector-with-offset arg0 s5-3 'interesting) - (or (!= *camera-layout-blink* 'interesting) (logtest? (-> *display* real-actual-frame-counter) 8)) - ) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s5-3 - (new 'static 'vector4w :x #x80 :z #x80 :w #x80) - (meters 1) - ) - ) - ) + (or (!= *camera-layout-blink* 'interesting) (logtest? (-> *display* real-actual-frame-counter) 8))) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s5-3 + (new 'static 'vector4w :x #x80 :z #x80 :w #x80) + (meters 1)))) (let ((s3-1 (new 'stack 'curve)) (s2-0 (new-stack-vector0)) (s5-4 (new-stack-vector0)) - (s4-1 (new-stack-vector0)) - ) + (s4-1 (new-stack-vector0))) (when (and (get-curve-data! arg0 s3-1 'campath 'campath-k (the-as float -1000000000.0)) - (or (!= *camera-layout-blink* 'spline) (logtest? (-> *display* real-actual-frame-counter) 8)) - ) + (or (!= *camera-layout-blink* 'spline) (logtest? (-> *display* real-actual-frame-counter) 8))) (cond ((cam-slave-get-vector-with-offset arg0 s4-1 'pivot) (curve-get-pos! s5-4 (the-as float 0.0) s3-1) - (vector-! s4-1 s4-1 s5-4) - ) + (vector-! s4-1 s4-1 s5-4)) (else - (set! (-> s4-1 quad) - (-> (the-as - vector - ((method-of-type res-lump get-property-struct) - arg0 - 'spline-offset - 'interp - (the-as float -1000000000.0) - s4-1 - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - quad - ) - ) - ) - ) + (set! (-> s4-1 quad) + (-> (the-as vector + ((method-of-type res-lump get-property-struct) + arg0 + 'spline-offset + 'interp + (the-as float -1000000000.0) + s4-1 + (the-as (pointer res-tag) #f) + *res-static-buf*)) + quad)))) (curve-get-pos! s5-4 (the-as float 0.0) s3-1) (vector+! s5-4 s5-4 s4-1) (dotimes (s1-1 8) (set! (-> s2-0 quad) (-> s5-4 quad)) (curve-get-pos! s5-4 (* 0.125 (the float (+ s1-1 1))) s3-1) (vector+! s5-4 s5-4 s4-1) - (camera-line s2-0 s5-4 (new 'static 'vector4w :x #xff :y #xff :w #x80)) - ) + (camera-line s2-0 s5-4 (new 'static 'vector4w :x #xff :y #xff :w #x80))) (curve-get-pos! s5-4 (-> *CAM_LAYOUT-bank* spline-t) s3-1) (vector+! s5-4 s5-4 s4-1) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s5-4 - (new 'static 'vector4w :x #xff :y #xff :w #x80) - (meters 1) - ) - ) - ) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s5-4 + (new 'static 'vector4w :x #xff :y #xff :w #x80) + (meters 1)))) (let ((s3-2 (new 'stack 'curve)) (s2-1 (new-stack-vector0)) (s5-5 (new-stack-vector0)) (s4-2 (new-stack-vector0)) - (s1-2 (new 'stack 'curve)) - ) + (s1-2 (new 'stack 'curve))) (when (and (get-curve-data! arg0 s3-2 'intro 'intro-k (the-as float -1000000000.0)) - (or (!= *camera-layout-blink* 'intro) (logtest? (-> *display* real-actual-frame-counter) 8)) - ) + (or (!= *camera-layout-blink* 'intro) (logtest? (-> *display* real-actual-frame-counter) 8))) (cond ((cam-slave-get-vector-with-offset arg0 s4-2 'pivot) (curve-get-pos! s5-5 (the-as float 1.0) s3-2) - (vector-! s4-2 s4-2 s5-5) - ) + (vector-! s4-2 s4-2 s5-5)) ((get-curve-data! arg0 s1-2 'campath 'campath-k (the-as float -1000000000.0)) (curve-get-pos! s4-2 (the-as float 0.0) s1-2) (curve-get-pos! s5-5 (the-as float 1.0) s3-2) - (vector-! s4-2 s4-2 s5-5) - ) + (vector-! s4-2 s4-2 s5-5)) ((cam-slave-get-vector-with-offset arg0 s4-2 'trans) (curve-get-pos! s5-5 (the-as float 1.0) s3-2) - (vector-! s4-2 s4-2 s5-5) - ) - ) + (vector-! s4-2 s4-2 s5-5))) (curve-get-pos! s5-5 (the-as float 0.0) s3-2) (vector+! s5-5 s5-5 s4-2) (dotimes (s1-3 8) (set! (-> s2-1 quad) (-> s5-5 quad)) (curve-get-pos! s5-5 (* 0.125 (the float (+ s1-3 1))) s3-2) (vector+! s5-5 s5-5 s4-2) - (camera-line s2-1 s5-5 (new 'static 'vector4w :z #xff :w #x80)) - ) + (camera-line s2-1 s5-5 (new 'static 'vector4w :z #xff :w #x80))) (curve-get-pos! s5-5 (-> *CAM_LAYOUT-bank* intro-t) s3-2) (vector+! s5-5 s5-5 s4-2) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s5-5 - (new 'static 'vector4w :z #xff :w #x80) - (meters 1) - ) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s5-5 + (new 'static 'vector4w :z #xff :w #x80) + (meters 1)) (curve-get-pos! s5-5 (cam-slave-get-float arg0 'intro-exitValue (the-as float 0.0)) s3-2) (vector+! s5-5 s5-5 s4-2) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s5-5 - (new 'static 'vector4w :z #xff :w #x80) - (meters 1) - ) - ) - ) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s5-5 + (new 'static 'vector4w :z #xff :w #x80) + (meters 1)))) (let ((s2-3 (res-lump-data arg0 'campoints pointer :time (the-as float 1.0))) (v1-95 (res-lump-struct arg0 'campoints-offset structure :time (the-as float -1000000000.0))) (s4-3 (new 'stack-no-clear 'vector)) (s3-3 (new 'stack-no-clear 'vector)) - (s5-6 (new 'static 'vector)) - ) + (s5-6 (new 'static 'vector))) (when (and s2-3 (or (!= *camera-layout-blink* 'index) (logtest? (-> *display* real-actual-frame-counter) 8))) (cond (v1-95 - (vector+! s4-3 (the-as vector (&+ s2-3 0)) (the-as vector v1-95)) - (vector+! s3-3 (the-as vector (&+ s2-3 16)) (the-as vector v1-95)) - ) + (vector+! s4-3 (the-as vector (&+ s2-3 0)) (the-as vector v1-95)) + (vector+! s3-3 (the-as vector (&+ s2-3 16)) (the-as vector v1-95))) (else - (set! (-> s4-3 quad) (-> (the-as (pointer uint128) (&+ s2-3 0)))) - (set! (-> s3-3 quad) (-> (the-as (pointer uint128) (&+ s2-3 16)))) - ) - ) + (set! (-> s4-3 quad) (-> (the-as (pointer uint128) (&+ s2-3 0)))) + (set! (-> s3-3 quad) (-> (the-as (pointer uint128) (&+ s2-3 16)))))) (camera-line s4-3 s3-3 (new 'static 'vector4w :y #x80 :w #x80)) (vector-lerp-clamp! s5-6 s4-3 s3-3 (-> *CAM_LAYOUT-bank* spline-t)) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s5-6 - (new 'static 'vector4w :x #xff :y #xff :w #x80) - (meters 1) - ) - ) - ) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s5-6 + (new 'static 'vector4w :x #xff :y #xff :w #x80) + (meters 1)))) (let ((s4-4 (res-lump-data arg0 'focalpull pointer :time (the-as float 1.0))) - (s5-7 (new 'static 'vector)) - ) + (s5-7 (new 'static 'vector))) (when (and s4-4 (or (!= *camera-layout-blink* 'focalpull) (logtest? (-> *display* real-actual-frame-counter) 8))) - (camera-line - (the-as vector (&+ s4-4 0)) - (the-as vector (&+ s4-4 16)) - (new 'static 'vector4w :y #xff :z #xff :w #x80) - ) - (vector-lerp-clamp! - s5-7 - (the-as vector (&+ s4-4 0)) - (the-as vector (&+ s4-4 16)) - (-> *CAM_LAYOUT-bank* spline-t) - ) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - s5-7 - (new 'static 'vector4w :y #xff :z #xff :w #x80) - (meters 1) - ) - ) - ) + (camera-line (the-as vector (&+ s4-4 0)) (the-as vector (&+ s4-4 16)) (new 'static 'vector4w :y #xff :z #xff :w #x80)) + (vector-lerp-clamp! s5-7 (the-as vector (&+ s4-4 0)) (the-as vector (&+ s4-4 16)) (-> *CAM_LAYOUT-bank* spline-t)) + (camera-cross (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + s5-7 + (new 'static 'vector4w :y #xff :z #xff :w #x80) + (meters 1)))) (let ((s5-8 (new 'stack 'interp-test-info)) - (s4-5 (new-stack-vector0)) - ) + (s4-5 (new-stack-vector0))) (when (and (cam-slave-get-vector-with-offset arg0 (-> s5-8 origin) 'pivot) (cam-slave-get-vector-with-offset arg0 (-> s5-8 to) 'align) - (cam-slave-get-vector-with-offset arg0 (-> s5-8 from) 'trans) - ) + (cam-slave-get-vector-with-offset arg0 (-> s5-8 from) 'trans)) (camera-line (-> s5-8 from) (-> s5-8 origin) (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80)) (camera-line (-> s5-8 to) (-> s5-8 origin) (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80)) (vector-! (-> s5-8 from) (-> s5-8 from) (-> s5-8 origin)) @@ -697,10 +479,7 @@ (camera-line (-> s5-8 origin) s4-5 (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80)) (when (not (paused?)) (+! (-> *CAM_LAYOUT-bank* debug-t) (-> *CAM_LAYOUT-bank* debug-step)) - (if (< 1.0 (-> *CAM_LAYOUT-bank* debug-t)) - (set! (-> *CAM_LAYOUT-bank* debug-t) 0.0) - ) - ) + (if (< 1.0 (-> *CAM_LAYOUT-bank* debug-t)) (set! (-> *CAM_LAYOUT-bank* debug-t) 0.0))) (set! (-> s5-8 axis) #f) (set! (-> s5-8 disp) "li") (set! (-> s5-8 color) (new 'static 'vector4w :x #xff :w #x80)) @@ -720,123 +499,92 @@ (interp-test (the-as (function vector vector vector float vector float none) v-slrp2!) s5-8) (set! (-> s5-8 disp) "si3d") (set! (-> s5-8 color) (new 'static 'vector4w :x #xff :y #xff :w #x80)) - (interp-test-deg (the-as (function vector vector vector vector float none) v-slrp3!) s5-8) - ) - ) - ) + (interp-test-deg (the-as (function vector vector vector vector float none) v-slrp3!) s5-8)))) (defun clmf-button-test () (cam-layout-print 16 *camera-layout-message-ypos* "button test") (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 8)) (set! *camera-read-analog* #f) - #f - ) + #f) (defun clmf-bna () (cam-layout-print 16 *camera-layout-message-ypos* "button not applicable") (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 8)) (set! *camera-read-analog* #f) - #t - ) + #t) (defun clmf-implement () (cam-layout-print 16 *camera-layout-message-ypos* "button not implemented yet") (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 8)) (set! *camera-read-analog* #f) - #t - ) + #t) (defun clmf-input ((arg0 vector) (arg1 vector) (arg2 int)) (vector-reset! arg0) (vector-reset! arg1) (cond ((cpad-hold? arg2 l3) - (set! (-> arg0 z) (- (-> arg0 z) (analog-input - (the-as int (-> *cpad-list* cpads arg2 rightx)) - (the-as float 128.0) - (the-as float 48.0) - (the-as float 110.0) - (the-as float 1.0) - ) - ) - ) - ) + (set! (-> arg0 z) + (- (-> arg0 z) + (analog-input (the-as int (-> *cpad-list* cpads arg2 rightx)) + (the-as float 128.0) + (the-as float 48.0) + (the-as float 110.0) + (the-as float 1.0))))) (else - (set! (-> arg0 y) (- (-> arg0 y) (analog-input - (the-as int (-> *cpad-list* cpads arg2 rightx)) - (the-as float 128.0) - (the-as float 48.0) - (the-as float 110.0) - (the-as float 1.0) - ) - ) - ) - (+! (-> arg0 x) (analog-input - (the-as int (-> *cpad-list* cpads arg2 righty)) - (the-as float 128.0) - (the-as float 48.0) - (the-as float 110.0) - (the-as float 1.0) - ) - ) - (set! (-> arg1 x) (- (-> arg1 x) (analog-input - (the-as int (-> *cpad-list* cpads arg2 leftx)) - (the-as float 128.0) - (the-as float 48.0) - (the-as float 110.0) - (the-as float 1.0) - ) - ) - ) - (when *camera-read-buttons* - (if (cpad-hold? arg2 r1) - (set! (-> arg1 y) (+ 0.5 - (analog-input - (the-as int (-> *cpad-list* cpads arg2 abutton 9)) + (set! (-> arg0 y) + (- (-> arg0 y) + (analog-input (the-as int (-> *cpad-list* cpads arg2 rightx)) + (the-as float 128.0) + (the-as float 48.0) + (the-as float 110.0) + (the-as float 1.0)))) + (+! (-> arg0 x) + (analog-input (the-as int (-> *cpad-list* cpads arg2 righty)) + (the-as float 128.0) + (the-as float 48.0) + (the-as float 110.0) + (the-as float 1.0))) + (set! (-> arg1 x) + (- (-> arg1 x) + (analog-input (the-as int (-> *cpad-list* cpads arg2 leftx)) + (the-as float 128.0) + (the-as float 48.0) + (the-as float 110.0) + (the-as float 1.0)))) + (when *camera-read-buttons* + (if (cpad-hold? arg2 r1) + (set! (-> arg1 y) + (+ 0.5 + (analog-input (the-as int (-> *cpad-list* cpads arg2 abutton 9)) + (the-as float 0.0) + (the-as float 32.0) + (the-as float 230.0) + (the-as float 0.5)) + (-> arg1 y))))) + (when *camera-read-buttons* + (if (cpad-hold? arg2 l1) + (set! (-> arg1 y) + (- (-> arg1 y) + (+ 0.5 + (analog-input (the-as int (-> *cpad-list* cpads arg2 abutton 8)) (the-as float 0.0) (the-as float 32.0) (the-as float 230.0) - (the-as float 0.5) - ) - (-> arg1 y) - ) - ) - ) - ) - (when *camera-read-buttons* - (if (cpad-hold? arg2 l1) - (set! (-> arg1 y) (- (-> arg1 y) (+ 0.5 (analog-input - (the-as int (-> *cpad-list* cpads arg2 abutton 8)) - (the-as float 0.0) - (the-as float 32.0) - (the-as float 230.0) - (the-as float 0.5) - ) - ) - ) - ) - ) - ) - (set! (-> arg1 z) (- (-> arg1 z) (analog-input - (the-as int (-> *cpad-list* cpads arg2 lefty)) - (the-as float 128.0) - (the-as float 48.0) - (the-as float 110.0) - (the-as float 1.0) - ) - ) - ) - ) - ) + (the-as float 0.5))))))) + (set! (-> arg1 z) + (- (-> arg1 z) + (analog-input (the-as int (-> *cpad-list* cpads arg2 lefty)) + (the-as float 128.0) + (the-as float 48.0) + (the-as float 110.0) + (the-as float 1.0)))))) (let ((s5-1 (new-stack-matrix0))) (let ((a2-8 (new-stack-vector0))) (set! (-> a2-8 y) -1.0) - (forward-down-nopitch->inv-matrix s5-1 (-> *math-camera* inv-camera-rot vector 2) a2-8) - ) - (vector-matrix*! arg1 arg1 s5-1) - ) - arg1 - ) + (forward-down-nopitch->inv-matrix s5-1 (-> *math-camera* inv-camera-rot vector 2) a2-8)) + (vector-matrix*! arg1 arg1 s5-1)) + arg1) (defbehavior clmf-pos-rot cam-layout ((arg0 symbol) (arg1 symbol)) (local-vars (s2-0 structure) (s3-1 structure) (sv-192 matrix)) @@ -846,136 +594,87 @@ (cam-layout-print 16 *camera-layout-message-ypos* "x/y rot: right stick") (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 8)) (cam-layout-print 16 *camera-layout-message-ypos* "z rot: press left stick & move right") - (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 8)) - ) + (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 8))) (let ((s5-0 (new-stack-vector0)) - (s4-0 (new-stack-vector0)) - ) + (s4-0 (new-stack-vector0))) (set! s3-1 (cond - ((or (zero? arg0) (not arg0)) - #f - ) + ((or (zero? arg0) (not arg0)) #f) (else - (if (not (res-lump-struct (-> self cam-entity) arg0 structure :time (the-as float -1000000000.0))) - (add-data! - (-> self cam-entity) - (new 'static 'res-tag :name arg0 :key-frame -1000000000.0 :elt-count #x1 :inlined? #x1 :elt-type vector) - (the-as pointer (new 'static 'vector)) - ) - ) - (set! s3-1 (res-lump-struct (-> self cam-entity) arg0 structure :time (the-as float -1000000000.0))) - (when (and (not s3-1) (logtest? (-> *display* real-actual-frame-counter) 8)) - (clear *temp-string*) - (format *temp-string* "ERROR : can't add ~A" 'vector) - (cam-layout-print 120 100 *temp-string*) - ) - s3-1 - ) - ) - ) + (if (not (res-lump-struct (-> self cam-entity) arg0 structure :time (the-as float -1000000000.0))) + (add-data! (-> self cam-entity) + (new 'static 'res-tag :name arg0 :key-frame -1000000000.0 :elt-count #x1 :inlined? #x1 :elt-type vector) + (the-as pointer (new 'static 'vector)))) + (set! s3-1 (res-lump-struct (-> self cam-entity) arg0 structure :time (the-as float -1000000000.0))) + (when (and (not s3-1) (logtest? (-> *display* real-actual-frame-counter) 8)) + (clear *temp-string*) + (format *temp-string* "ERROR : can't add ~A" 'vector) + (cam-layout-print 120 100 *temp-string*)) + s3-1))) (set! s2-0 (cond - ((or (zero? arg1) (not arg1)) - #f - ) + ((or (zero? arg1) (not arg1)) #f) (else - (if (not (res-lump-struct (-> self cam-entity) arg1 structure :time (the-as float -1000000000.0))) - (add-data! - (-> self cam-entity) - (new 'static 'res-tag :name arg1 :key-frame -1000000000.0 :elt-count #x1 :inlined? #x1 :elt-type quaternion) - (the-as pointer (quaternion-identity! (new 'static 'quaternion))) - ) - ) - (set! s2-0 (res-lump-struct (-> self cam-entity) arg1 structure :time (the-as float -1000000000.0))) - (when (and (not s2-0) (logtest? (-> *display* real-actual-frame-counter) 8)) - (clear *temp-string*) - (format *temp-string* "ERROR : can't add ~A" 'quaternion) - (cam-layout-print 120 100 *temp-string*) - ) - s2-0 - ) - ) - ) + (if (not (res-lump-struct (-> self cam-entity) arg1 structure :time (the-as float -1000000000.0))) + (add-data! (-> self cam-entity) + (new 'static 'res-tag :name arg1 :key-frame -1000000000.0 :elt-count #x1 :inlined? #x1 :elt-type quaternion) + (the-as pointer (quaternion-identity! (new 'static 'quaternion))))) + (set! s2-0 (res-lump-struct (-> self cam-entity) arg1 structure :time (the-as float -1000000000.0))) + (when (and (not s2-0) (logtest? (-> *display* real-actual-frame-counter) 8)) + (clear *temp-string*) + (format *temp-string* "ERROR : can't add ~A" 'quaternion) + (cam-layout-print 120 100 *temp-string*)) + s2-0))) (let ((s1-1 (new 'stack-no-clear 'matrix))) (set! sv-192 (new 'stack-no-clear 'matrix)) (let ((s0-1 (new 'stack-no-clear 'vector))) - (if (not s3-1) - (return #f) - ) + (if (not s3-1) (return #f)) (clmf-input s5-0 s4-0 0) (vector+float*! (the-as vector s3-1) (the-as vector s3-1) s4-0 (the-as float 409.6)) (cond - ((not arg1) - (the-as quaternion #f) - ) - ((zero? arg1) - (the-as quaternion #f) - ) + ((not arg1) (the-as quaternion #f)) + ((zero? arg1) (the-as quaternion #f)) (else - (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) sv-192) - (vector-float*! s5-0 s5-0 100.0) - (matrix-rotate-x! s1-1 (- (-> s5-0 x))) - (matrix*! sv-192 s1-1 sv-192) - (matrix-rotate-y! s1-1 (-> s5-0 y)) - (matrix*! sv-192 sv-192 s1-1) - (matrix-rotate-z! s1-1 (- (-> s5-0 z))) - (matrix*! sv-192 s1-1 sv-192) - (matrix->quaternion (the-as quaternion s0-1) sv-192) - (quaternion-inverse! (the-as quaternion s2-0) (the-as quaternion (-> self cam-entity connect))) - (quaternion*! (the-as quaternion s2-0) (the-as quaternion s0-1) (the-as quaternion s2-0)) - (quaternion-normalize! (the-as quaternion s2-0)) - ) - ) - ) - ) - ) + (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) sv-192) + (vector-float*! s5-0 s5-0 100.0) + (matrix-rotate-x! s1-1 (- (-> s5-0 x))) + (matrix*! sv-192 s1-1 sv-192) + (matrix-rotate-y! s1-1 (-> s5-0 y)) + (matrix*! sv-192 sv-192 s1-1) + (matrix-rotate-z! s1-1 (- (-> s5-0 z))) + (matrix*! sv-192 s1-1 sv-192) + (matrix->quaternion (the-as quaternion s0-1) sv-192) + (quaternion-inverse! (the-as quaternion s2-0) (the-as quaternion (-> self cam-entity connect))) + (quaternion*! (the-as quaternion s2-0) (the-as quaternion s0-1) (the-as quaternion s2-0)) + (quaternion-normalize! (the-as quaternion s2-0))))))) (set! *camera-read-analog* #f) - #t - ) + #t) (defbehavior clmf-next-volume cam-layout ((arg0 int)) - (if (zero? (-> self num-volumes)) - (return #f) - ) + (if (zero? (-> self num-volumes)) (return #f)) (set! (-> self cur-volume) (mod (+ arg0 (-> self cur-volume)) (-> self num-volumes))) (while (< (-> self cur-volume) 0) - (+! (-> self cur-volume) (-> self num-volumes)) - ) - #t - ) + (+! (-> self cur-volume) (-> self num-volumes))) + #t) (defun clmf-next-vol-dpad () (local-vars (a0-1 int)) (cam-layout-print 16 *camera-layout-message-ypos* "dpad selects volume") (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 8)) (cond - ((cpad-pressed? 0 down) - (set! a0-1 1) - ) - ((cpad-pressed? 0 right) - (set! a0-1 1) - ) - ((cpad-pressed? 0 up) - (set! a0-1 -1) - ) - ((cpad-pressed? 0 left) - (set! a0-1 -1) - ) - (else - (set! a0-1 0) - ) - ) + ((cpad-pressed? 0 down) (set! a0-1 1)) + ((cpad-pressed? 0 right) (set! a0-1 1)) + ((cpad-pressed? 0 up) (set! a0-1 -1)) + ((cpad-pressed? 0 left) (set! a0-1 -1)) + (else (set! a0-1 0))) (clmf-next-volume a0-1) (set! *camera-read-analog* #f) - #t - ) + #t) (defun clmf-to-edit-cam () (clmf-next-volume 0) (set! *clm* *clm-edit*) - #t - ) + #t) (define *last-cur-entity* -1) @@ -983,23 +682,15 @@ (let ((v1-0 (/ arg0 8))) (when (zero? (-> self num-entities)) (set! (-> self cam-entity) #f) - (return #f) - ) - (if (= (- v1-0) (-> self num-entities)) - (set! v1-0 -1) - ) - (if (= v1-0 (-> self num-entities)) - (set! v1-0 1) - ) - (set! (-> self cur-entity) (mod (+ v1-0 (-> self cur-entity)) (-> self num-entities))) - ) + (return #f)) + (if (= (- v1-0) (-> self num-entities)) (set! v1-0 -1)) + (if (= v1-0 (-> self num-entities)) (set! v1-0 1)) + (set! (-> self cur-entity) (mod (+ v1-0 (-> self cur-entity)) (-> self num-entities)))) (while (< (-> self cur-entity) 0) - (+! (-> self cur-entity) (-> self num-entities)) - ) + (+! (-> self cur-entity) (-> self num-entities))) (set! *last-cur-entity* (-> self cur-entity)) (let ((v1-8 (-> self cur-entity)) - (a0-13 (-> *camera-engine* alive-list next0)) - ) + (a0-13 (-> *camera-engine* alive-list next0))) *camera-engine* (let ((a1-3 (-> a0-13 next0))) (while (!= a0-13 (-> *camera-engine* alive-list-end)) @@ -1017,59 +708,43 @@ (set! (-> self first-cutoutvol) (-> self num-volumes)) (cam-layout-entity-volume-info-create (-> self cam-entity) 'cutoutvol) (set! (-> *CAM_LAYOUT-bank* intro-step) (cam-slave-get-intro-step (-> self cam-entity))) - (return #f) - ) - (else - (+! v1-8 -1) - ) - ) - ) + (return #f)) + (else (+! v1-8 -1)))) (set! a0-13 a1-3) *camera-engine* - (set! a1-3 (-> a1-3 next0)) - ) - ) - ) - #t - ) + (set! a1-3 (-> a1-3 next0))))) + #t) (defbehavior clmf-to-vol-attr cam-layout () (set! (-> self res-key) (the float (-> self cur-volume))) (set! *clm* *clm-vol-attr*) - #t - ) + #t) (defun clmf-to-spline-attr () (set! *clm* *clm-spline-attr*) - #t - ) + #t) (defun clmf-to-intro-attr () (set! *clm* *clm-intro-attr*) - #t - ) + #t) (defun clmf-to-index-attr () (set! *clm* *clm-index-attr*) - #t - ) + #t) (defun clmf-to-focalpull-attr () (set! *clm* *clm-focalpull-attr*) - #t - ) + #t) (defbehavior clmf-to-edit cam-layout () (set! (-> self res-key) -1000000000.0) (set! *clm* *clm-edit*) - #t - ) + #t) (defun clmf-to-select () (set! *camera-layout-blink* #f) (set! *clm* *clm-select*) - #t - ) + #t) (defbehavior clmf-look-through cam-layout () (set! (-> *camera-other-fov* data) (cam-slave-get-fov (-> self cam-entity))) @@ -1078,232 +753,139 @@ (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) *camera-other-matrix*) (set! *camera-look-through-other* 10) (set! *camera-read-analog* #f) - #f - ) + #f) (defun fov->maya ((arg0 float)) - (the-as float (if (= arg0 0.0) - 0.0 - (/ 12.700255 (tan (* 0.5 arg0))) - ) - ) - ) + (the-as float (if (= arg0 0.0) 0.0 (/ 12.700255 (tan (* 0.5 arg0)))))) (defun cam-layout-save-cam-rot ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s3-0 (-> arg2 quat)) - (s5-0 (res-lump-struct arg2 'rot-offset vector :time (the-as float -1000000000.0))) - ) - (if arg0 - (format #t "setup rot ~f ~f ~f ~f~%" (-> s3-0 x) (-> s3-0 y) (-> s3-0 z) (-> s3-0 w)) - ) - (the-as string (when s5-0 - (if arg0 - (format #t "rot offset ~f ~f ~f ~f~%" (-> s5-0 x) (-> s5-0 y) (-> s5-0 z) (-> s5-0 w)) - ) - (format - arg1 - " tag rot-offset ~f ~f ~f ~f // vector (quaternion)~%" - (-> s5-0 x) - (-> s5-0 y) - (-> s5-0 z) - (-> s5-0 w) - ) - ) - ) - ) - ) + (s5-0 (res-lump-struct arg2 'rot-offset vector :time (the-as float -1000000000.0)))) + (if arg0 (format #t "setup rot ~f ~f ~f ~f~%" (-> s3-0 x) (-> s3-0 y) (-> s3-0 z) (-> s3-0 w))) + (the-as string + (when s5-0 + (if arg0 (format #t "rot offset ~f ~f ~f ~f~%" (-> s5-0 x) (-> s5-0 y) (-> s5-0 z) (-> s5-0 w))) + (format arg1 + " tag rot-offset ~f ~f ~f ~f // vector (quaternion)~%" + (-> s5-0 x) + (-> s5-0 y) + (-> s5-0 z) + (-> s5-0 w)))))) (defun cam-layout-save-cam-trans ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s1-0 (-> arg2 trans)) (s5-0 (method-of-type res-lump get-property-struct)) - (s2-0 arg2) - ) + (s2-0 arg2)) (format (clear *res-key-string*) "~S~S" 'trans '-offset) - (let ((s5-1 (the-as vector (s5-0 - s2-0 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - #f - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - ) + (let ((s5-1 (the-as vector + (s5-0 s2-0 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + #f + (the-as (pointer res-tag) #f) + *res-static-buf*)))) (let ((s2-1 (res-lump-struct arg2 'translation_info vector :time (the-as float -1000000000.0))) - (s3-1 (new-stack-vector0)) - ) - (if arg0 - (format #t "setup trans ~M ~M ~M (maya)~%" (-> s1-0 x) (-> s1-0 y) (-> s1-0 z)) - ) + (s3-1 (new-stack-vector0))) + (if arg0 (format #t "setup trans ~M ~M ~M (maya)~%" (-> s1-0 x) (-> s1-0 y) (-> s1-0 z))) (set! (-> s3-1 quad) (-> s1-0 quad)) (when (the-as structure s5-1) - (if arg0 - (format #t "offset ~M ~M ~M (added)~%" (-> s5-1 x) (-> s5-1 y) (-> s5-1 z)) - ) - (vector+! s3-1 s3-1 s5-1) - ) + (if arg0 (format #t "offset ~M ~M ~M (added)~%" (-> s5-1 x) (-> s5-1 y) (-> s5-1 z))) + (vector+! s3-1 s3-1 s5-1)) (when s2-1 - (if arg0 - (format #t "level-trans ~M ~M ~M (subtracted)~%" (-> s2-1 x) (-> s2-1 y) (-> s2-1 z)) - ) - (vector-! s3-1 s3-1 s2-1) - ) + (if arg0 (format #t "level-trans ~M ~M ~M (subtracted)~%" (-> s2-1 x) (-> s2-1 y) (-> s2-1 z))) + (vector-! s3-1 s3-1 s2-1)) (set! s2-1 (the-as vector (or s5-1 s2-1))) (set! arg0 (and (the-as symbol s2-1) arg0)) - (if arg0 - (format #t "final trans ~M ~M ~M (maya)~%" (-> s3-1 x) (-> s3-1 y) (-> s3-1 z)) - ) - ) - (the-as string (if s5-1 - (format - arg1 - " tag trans-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" - (-> s5-1 x) - (-> s5-1 y) - (-> s5-1 z) - ) - ) - ) - ) - ) - ) + (if arg0 (format #t "final trans ~M ~M ~M (maya)~%" (-> s3-1 x) (-> s3-1 y) (-> s3-1 z)))) + (the-as string + (if s5-1 + (format arg1 + " tag trans-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" + (-> s5-1 x) + (-> s5-1 y) + (-> s5-1 z))))))) (defun cam-layout-save-pivot ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s2-0 (res-lump-struct arg2 'pivot vector :time (the-as float -1000000000.0))) - (s3-0 (method-of-type res-lump get-property-struct)) - ) + (s3-0 (method-of-type res-lump get-property-struct))) (format (clear *res-key-string*) "~S~S" 'pivot '-offset) - (let ((s5-1 (the-as vector (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - #f - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (s3-1 (new-stack-vector0)) - ) - (the-as string (when s2-0 - (if s5-1 - (vector+! s3-1 s2-0 s5-1) - (set! (-> s3-1 quad) (-> s2-0 quad)) - ) - (if arg0 - (format #t "setup pivot ~M ~M ~M~%" (-> s2-0 x) (-> s2-0 y) (-> s2-0 z)) - ) - (when s5-1 - (when arg0 - (format #t "offset ~M ~M ~M~%" (-> s5-1 x) (-> s5-1 y) (-> s5-1 z)) - (format #t "final pivot ~M ~M ~M~%" (-> s3-1 x) (-> s3-1 y) (-> s3-1 z)) - ) - (format - arg1 - " tag pivot-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" - (-> s5-1 x) - (-> s5-1 y) - (-> s5-1 z) - ) - ) - ) - ) - ) - ) - ) + (let ((s5-1 (the-as vector + (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + #f + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (s3-1 (new-stack-vector0))) + (the-as string + (when s2-0 + (if s5-1 (vector+! s3-1 s2-0 s5-1) (set! (-> s3-1 quad) (-> s2-0 quad))) + (if arg0 (format #t "setup pivot ~M ~M ~M~%" (-> s2-0 x) (-> s2-0 y) (-> s2-0 z))) + (when s5-1 + (when arg0 + (format #t "offset ~M ~M ~M~%" (-> s5-1 x) (-> s5-1 y) (-> s5-1 z)) + (format #t "final pivot ~M ~M ~M~%" (-> s3-1 x) (-> s3-1 y) (-> s3-1 z))) + (format arg1 + " tag pivot-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" + (-> s5-1 x) + (-> s5-1 y) + (-> s5-1 z)))))))) (defun cam-layout-save-align ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s2-0 (res-lump-struct arg2 'align vector :time (the-as float -1000000000.0))) - (s3-0 (method-of-type res-lump get-property-struct)) - ) + (s3-0 (method-of-type res-lump get-property-struct))) (format (clear *res-key-string*) "~S~S" 'align '-offset) - (let ((s5-1 (the-as vector (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - #f - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (s3-1 (new-stack-vector0)) - ) - (the-as string (when s2-0 - (if s5-1 - (vector+! s3-1 s2-0 s5-1) - (set! (-> s3-1 quad) (-> s2-0 quad)) - ) - (if arg0 - (format #t "setup align ~M ~M ~M~%" (-> s2-0 x) (-> s2-0 y) (-> s2-0 z)) - ) - (when s5-1 - (when arg0 - (format #t "offset ~M ~M ~M~%" (-> s5-1 x) (-> s5-1 y) (-> s5-1 z)) - (format #t "final align ~M ~M ~M~%" (-> s3-1 x) (-> s3-1 y) (-> s3-1 z)) - ) - (format - arg1 - " tag align-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" - (-> s5-1 x) - (-> s5-1 y) - (-> s5-1 z) - ) - ) - ) - ) - ) - ) - ) + (let ((s5-1 (the-as vector + (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + #f + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (s3-1 (new-stack-vector0))) + (the-as string + (when s2-0 + (if s5-1 (vector+! s3-1 s2-0 s5-1) (set! (-> s3-1 quad) (-> s2-0 quad))) + (if arg0 (format #t "setup align ~M ~M ~M~%" (-> s2-0 x) (-> s2-0 y) (-> s2-0 z))) + (when s5-1 + (when arg0 + (format #t "offset ~M ~M ~M~%" (-> s5-1 x) (-> s5-1 y) (-> s5-1 z)) + (format #t "final align ~M ~M ~M~%" (-> s3-1 x) (-> s3-1 y) (-> s3-1 z))) + (format arg1 + " tag align-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" + (-> s5-1 x) + (-> s5-1 y) + (-> s5-1 z)))))))) (defun cam-layout-save-interesting ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s2-0 (res-lump-struct arg2 'interesting vector :time (the-as float -1000000000.0))) - (s3-0 (method-of-type res-lump get-property-struct)) - ) + (s3-0 (method-of-type res-lump get-property-struct))) (format (clear *res-key-string*) "~S~S" 'interesting '-offset) - (let ((s5-1 (the-as vector (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - #f - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (s3-1 (new-stack-vector0)) - ) - (the-as string (when s2-0 - (if s5-1 - (vector+! s3-1 s2-0 s5-1) - (set! (-> s3-1 quad) (-> s2-0 quad)) - ) - (if arg0 - (format #t "setup interesting ~M ~M ~M~%" (-> s2-0 x) (-> s2-0 y) (-> s2-0 z)) - ) - (when s5-1 - (when arg0 - (format #t "offset ~M ~M ~M~%" (-> s5-1 x) (-> s5-1 y) (-> s5-1 z)) - (format #t "final interesting ~M ~M ~M~%" (-> s3-1 x) (-> s3-1 y) (-> s3-1 z)) - ) - (format - arg1 - " tag interesting-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" - (-> s5-1 x) - (-> s5-1 y) - (-> s5-1 z) - ) - ) - ) - ) - ) - ) - ) + (let ((s5-1 (the-as vector + (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + #f + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (s3-1 (new-stack-vector0))) + (the-as string + (when s2-0 + (if s5-1 (vector+! s3-1 s2-0 s5-1) (set! (-> s3-1 quad) (-> s2-0 quad))) + (if arg0 (format #t "setup interesting ~M ~M ~M~%" (-> s2-0 x) (-> s2-0 y) (-> s2-0 z))) + (when s5-1 + (when arg0 + (format #t "offset ~M ~M ~M~%" (-> s5-1 x) (-> s5-1 y) (-> s5-1 z)) + (format #t "final interesting ~M ~M ~M~%" (-> s3-1 x) (-> s3-1 y) (-> s3-1 z))) + (format arg1 + " tag interesting-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" + (-> s5-1 x) + (-> s5-1 y) + (-> s5-1 z)))))))) (defun cam-layout-save-fov ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1313,48 +895,25 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'fov '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) (cond - ((= f30-0 0.0) - (if arg0 - (format #t "setup fov deg 0.0 (defaults to 64.0)~%") - ) - (set! f30-0 11650.845) - ) - (arg0 - (format #t "setup fov deg ~R (~f in maya)~%" f30-0 (fov->maya f30-0)) - ) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~R~%" f28-0) - (format #t "final ~R (~f in maya) ~%" (+ f30-0 f28-0) (fov->maya (+ f30-0 f28-0))) - ) - (format arg1 " tag fov-offset DEG(~R) // float~%" f28-0) - ) - ) - ) - ) - ) + ((= f30-0 0.0) (if arg0 (format #t "setup fov deg 0.0 (defaults to 64.0)~%")) (set! f30-0 11650.845)) + (arg0 (format #t "setup fov deg ~R (~f in maya)~%" f30-0 (fov->maya f30-0)))) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~R~%" f28-0) + (format #t "final ~R (~f in maya) ~%" (+ f30-0 f28-0) (fov->maya (+ f30-0 f28-0)))) + (format arg1 " tag fov-offset DEG(~R) // float~%" f28-0)))))) (defun cam-layout-save-focalpull ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1364,71 +923,45 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'focalPull '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup focalPull deg ~R (~f in maya)~%" f30-0 (fov->maya f30-0)) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~R~%" f28-0) - (format #t "final ~R (~f in maya) ~%" (+ f30-0 f28-0) (fov->maya (+ f30-0 f28-0))) - ) - (format arg1 " tag focalPull-offset DEG(~R) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup focalPull deg ~R (~f in maya)~%" f30-0 (fov->maya f30-0))) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~R~%" f28-0) + (format #t "final ~R (~f in maya) ~%" (+ f30-0 f28-0) (fov->maya (+ f30-0 f28-0)))) + (format arg1 " tag focalPull-offset DEG(~R) // float~%" f28-0)))))) (defun cam-layout-save-flags ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s4-0 (res-lump-value arg2 'flags uint128 :time (the-as float -1000000000.0))) (s5-0 (method-of-type res-lump get-property-value)) - (s1-0 arg2) - ) + (s1-0 arg2)) (format (clear *res-key-string*) "~S~S" 'flags '-on) - (let ((s5-1 (s5-0 - s1-0 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s1-1 (method-of-type res-lump get-property-value)) - ) + (let ((s5-1 (s5-0 s1-0 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*)) + (s1-1 (method-of-type res-lump get-property-value))) (format (clear *res-key-string*) "~S~S" 'flags '-off) - (let ((s3-1 (s1-1 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((s3-1 (s1-1 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) (when arg0 (format #t "setup flags ") (cam-slave-options->string (the-as cam-slave-options s4-0) #t) @@ -1441,48 +974,32 @@ (format #t "~%") (let ((s4-1 (logclear (logior s4-0 s5-1) s3-1))) (format #t "final ") - (cam-slave-options->string (the-as cam-slave-options s4-1) #t) - ) - (format #t "~%") - ) + (cam-slave-options->string (the-as cam-slave-options s4-1) #t)) + (format #t "~%")) (format arg1 " tag flags-on 0x~X // int32~%" s5-1) - (the-as string (format arg1 " tag flags-off 0x~X // int32~%" s3-1)) - ) - ) - ) - ) + (the-as string (format arg1 " tag flags-off 0x~X // int32~%" s3-1)))))) (defun cam-layout-save-focalpull-flags ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s4-0 (res-lump-value arg2 'focalpull-flags uint128 :time (the-as float -1000000000.0))) (s5-0 (method-of-type res-lump get-property-value)) - (s1-0 arg2) - ) + (s1-0 arg2)) (format (clear *res-key-string*) "~S~S" 'focalpull-flags '-on) - (let ((s5-1 (s5-0 - s1-0 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s1-1 (method-of-type res-lump get-property-value)) - ) + (let ((s5-1 (s5-0 s1-0 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*)) + (s1-1 (method-of-type res-lump get-property-value))) (format (clear *res-key-string*) "~S~S" 'focalpull-flags '-off) - (let ((s3-1 - (s1-1 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((s3-1 (s1-1 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) (when arg0 (format #t "setup focalpull-flags ") (cam-index-options->string (the-as cam-index-options s4-0) #t) @@ -1495,51 +1012,32 @@ (format #t "~%") (let ((s4-1 (logclear (logior s4-0 s5-1) s3-1))) (format #t "final ") - (cam-index-options->string (the-as cam-index-options s4-1) #t) - ) - (format #t "~%") - ) + (cam-index-options->string (the-as cam-index-options s4-1) #t)) + (format #t "~%")) (format arg1 " tag focalpull-flags-on 0x~X // int32~%" s5-1) - (the-as - string - (format arg1 " tag focalpull-flags-off 0x~X // int32~%" s3-1) - ) - ) - ) - ) - ) + (the-as string (format arg1 " tag focalpull-flags-off 0x~X // int32~%" s3-1)))))) (defun cam-layout-save-campoints-flags ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s4-0 (res-lump-value arg2 'campoints-flags uint128 :time (the-as float -1000000000.0))) (s5-0 (method-of-type res-lump get-property-value)) - (s1-0 arg2) - ) + (s1-0 arg2)) (format (clear *res-key-string*) "~S~S" 'campoints-flags '-on) - (let ((s5-1 (s5-0 - s1-0 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s1-1 (method-of-type res-lump get-property-value)) - ) + (let ((s5-1 (s5-0 s1-0 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*)) + (s1-1 (method-of-type res-lump get-property-value))) (format (clear *res-key-string*) "~S~S" 'campoints-flags '-off) - (let ((s3-1 - (s1-1 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((s3-1 (s1-1 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) (when arg0 (format #t "setup campoints-flags ") (cam-index-options->string (the-as cam-index-options s4-0) #t) @@ -1552,19 +1050,10 @@ (format #t "~%") (let ((s4-1 (logclear (logior s4-0 s5-1) s3-1))) (format #t "final ") - (cam-index-options->string (the-as cam-index-options s4-1) #t) - ) - (format #t "~%") - ) + (cam-index-options->string (the-as cam-index-options s4-1) #t)) + (format #t "~%")) (format arg1 " tag campoints-flags-on 0x~X // int32~%" s5-1) - (the-as - string - (format arg1 " tag campoints-flags-off 0x~X // int32~%" s3-1) - ) - ) - ) - ) - ) + (the-as string (format arg1 " tag campoints-flags-off 0x~X // int32~%" s3-1)))))) (defun cam-layout-save-introsplinetime ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1574,48 +1063,25 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'intro-time '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) (cond - ((= f30-0 0.0) - (if arg0 - (format #t "setup intro-time 0.0 (defaults to 1 sec)~%") - ) - (set! f30-0 1.0) - ) - (arg0 - (format #t "setup intro-time ~f~%" f30-0) - ) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~f~%" f28-0) - (format #t "final ~f~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag intro-time-offset SECONDS(~f) // float~%" f28-0) - ) - ) - ) - ) - ) + ((= f30-0 0.0) (if arg0 (format #t "setup intro-time 0.0 (defaults to 1 sec)~%")) (set! f30-0 1.0)) + (arg0 (format #t "setup intro-time ~f~%" f30-0))) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~f~%" f28-0) + (format #t "final ~f~%" (+ f30-0 f28-0))) + (format arg1 " tag intro-time-offset SECONDS(~f) // float~%" f28-0)))))) (defun cam-layout-save-introsplineexitval ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1625,43 +1091,24 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'intro-exitValue '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) (when arg0 - (if (= f30-0 0.0) - (format #t "setup intro-exitValue 0.0 (defaults to 0.5)~%") - (format #t "setup intro-exitValue ~f~%" f30-0) - ) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~f~%" f28-0) - (format #t "final ~f~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag intro-exitValue-offset ~f // float~%" f28-0) - ) - ) - ) - ) - ) + (if (= f30-0 0.0) (format #t "setup intro-exitValue 0.0 (defaults to 0.5)~%") (format #t "setup intro-exitValue ~f~%" f30-0))) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~f~%" f28-0) + (format #t "final ~f~%" (+ f30-0 f28-0))) + (format arg1 " tag intro-exitValue-offset ~f // float~%" f28-0)))))) (defun cam-layout-save-interptime ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1671,116 +1118,70 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'interpTime '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup interpTime ~f~%" f30-0) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~f~%" f28-0) - (format #t "final ~f~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag interpTime-offset SECONDS(~f) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup interpTime ~f~%" f30-0)) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~f~%" f28-0) + (format #t "final ~f~%" (+ f30-0 f28-0))) + (format arg1 " tag interpTime-offset SECONDS(~f) // float~%" f28-0)))))) (defun cam-layout-save-splineoffset ((arg0 symbol) (arg1 string) (arg2 entity-actor)) - (the-as - string - (when (and (not (res-lump-struct arg2 'pivot structure :time (the-as float -1000000000.0))) - (res-lump-struct arg2 'spline-offset structure :time (the-as float -1000000000.0)) - ) - (let ((s4-1 (res-lump-struct arg2 'spline-offset vector :time (the-as float -1000000000.0)))) - (when s4-1 - (if arg0 - (format #t "spline offset ~M ~M ~M~%" (-> s4-1 x) (-> s4-1 y) (-> s4-1 z)) - ) - (format - arg1 - " tag spline-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" - (-> s4-1 x) - (-> s4-1 y) - (-> s4-1 z) - ) - ) - ) - ) - ) - ) + (the-as string + (when (and (not (res-lump-struct arg2 'pivot structure :time (the-as float -1000000000.0))) + (res-lump-struct arg2 'spline-offset structure :time (the-as float -1000000000.0))) + (let ((s4-1 (res-lump-struct arg2 'spline-offset vector :time (the-as float -1000000000.0)))) + (when s4-1 + (if arg0 (format #t "spline offset ~M ~M ~M~%" (-> s4-1 x) (-> s4-1 y) (-> s4-1 z))) + (format arg1 + " tag spline-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" + (-> s4-1 x) + (-> s4-1 y) + (-> s4-1 z))))))) (defun cam-layout-save-spline-follow-dist-offset ((arg0 symbol) (arg1 string) (arg2 entity-actor)) - (the-as string (when (and (not (res-lump-struct arg2 'pivot structure :time (the-as float -1000000000.0))) - ((method-of-type res-lump get-property-value-float) - arg2 - 'spline-follow-dist-offset - 'interp - (the-as float -1000000000.0) - (the-as float #f) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (let ((f30-0 ((method-of-type res-lump get-property-value-float) - arg2 - 'spline-follow-dist-offset - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (when (the int f30-0) - (if arg0 - (format #t "spline follow dist offset ~M~%" f30-0) - ) - (format arg1 " tag spline-follow-dist-offset METERS(~M)~%" f30-0) - ) - ) - ) - ) - ) + (the-as string + (when (and (not (res-lump-struct arg2 'pivot structure :time (the-as float -1000000000.0))) + ((method-of-type res-lump get-property-value-float) + arg2 + 'spline-follow-dist-offset + 'interp + (the-as float -1000000000.0) + (the-as float #f) + (the-as (pointer res-tag) #f) + *res-static-buf*)) + (let ((f30-0 ((method-of-type res-lump get-property-value-float) + arg2 + 'spline-follow-dist-offset + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (when (the int f30-0) + (if arg0 (format #t "spline follow dist offset ~M~%" f30-0)) + (format arg1 " tag spline-follow-dist-offset METERS(~M)~%" f30-0)))))) (defun cam-layout-save-campointsoffset ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s5-0 (res-lump-struct arg2 'campoints-offset vector :time (the-as float -1000000000.0)))) - (the-as string (when s5-0 - (if arg0 - (format #t "index offset ~M ~M ~M~%" (-> s5-0 x) (-> s5-0 y) (-> s5-0 z)) - ) - (format - arg1 - " tag campoints-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" - (-> s5-0 x) - (-> s5-0 y) - (-> s5-0 z) - ) - ) - ) - ) - ) + (the-as string + (when s5-0 + (if arg0 (format #t "index offset ~M ~M ~M~%" (-> s5-0 x) (-> s5-0 y) (-> s5-0 z))) + (format arg1 + " tag campoints-offset METERS(~M) METERS(~M) METERS(~M) 1.0 // vector~%" + (-> s5-0 x) + (-> s5-0 y) + (-> s5-0 z)))))) (defun cam-layout-save-tiltAdjust ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1790,40 +1191,23 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'tiltAdjust '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup tiltAdjust deg ~R~%" f30-0) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~R~%" f28-0) - (format #t "final ~R~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag tiltAdjust-offset DEG(~R) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup tiltAdjust deg ~R~%" f30-0)) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~R~%" f28-0) + (format #t "final ~R~%" (+ f30-0 f28-0))) + (format arg1 " tag tiltAdjust-offset DEG(~R) // float~%" f28-0)))))) (defun cam-layout-save-stringMinLength ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1833,40 +1217,23 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'stringMinLength '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup stringMinLength ~M~%" f30-0) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~M~%" f28-0) - (format #t "final ~M~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag stringMinLength-offset METERS(~M) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup stringMinLength ~M~%" f30-0)) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~M~%" f28-0) + (format #t "final ~M~%" (+ f30-0 f28-0))) + (format arg1 " tag stringMinLength-offset METERS(~M) // float~%" f28-0)))))) (defun cam-layout-save-stringMaxLength ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1876,40 +1243,23 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'stringMaxLength '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup stringMaxLength ~M~%" f30-0) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~M~%" f28-0) - (format #t "final ~M~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag stringMaxLength-offset METERS(~M) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup stringMaxLength ~M~%" f30-0)) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~M~%" f28-0) + (format #t "final ~M~%" (+ f30-0 f28-0))) + (format arg1 " tag stringMaxLength-offset METERS(~M) // float~%" f28-0)))))) (defun cam-layout-save-stringMinHeight ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1919,40 +1269,23 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'stringMinHeight '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup stringMinHeight ~M~%" f30-0) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~M~%" f28-0) - (format #t "final ~M~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag stringMinHeight-offset METERS(~M) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup stringMinHeight ~M~%" f30-0)) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~M~%" f28-0) + (format #t "final ~M~%" (+ f30-0 f28-0))) + (format arg1 " tag stringMinHeight-offset METERS(~M) // float~%" f28-0)))))) (defun cam-layout-save-stringMaxHeight ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -1962,40 +1295,23 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'stringMaxHeight '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup stringMaxHeight ~M~%" f30-0) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~M~%" f28-0) - (format #t "final ~M~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag stringMaxHeight-offset METERS(~M) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup stringMaxHeight ~M~%" f30-0)) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~M~%" f28-0) + (format #t "final ~M~%" (+ f30-0 f28-0))) + (format arg1 " tag stringMaxHeight-offset METERS(~M) // float~%" f28-0)))))) (defun cam-layout-save-stringCliffHeight ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -2005,40 +1321,23 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'stringCliffHeight '-offset) - (let ((f28-0 - (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup stringCliffHeight ~M~%" f30-0) - ) - (the-as - string - (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~M~%" f28-0) - (format #t "final ~M~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag stringCliffHeight-offset METERS(~M) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup stringCliffHeight ~M~%" f30-0)) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~M~%" f28-0) + (format #t "final ~M~%" (+ f30-0 f28-0))) + (format arg1 " tag stringCliffHeight-offset METERS(~M) // float~%" f28-0)))))) (defun cam-layout-save-maxAngle ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 ((method-of-type res-lump get-property-value-float) @@ -2048,56 +1347,34 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s3-0 (method-of-type res-lump get-property-value-float)) - ) + *res-static-buf*)) + (s3-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'maxAngle '-offset) - (let ((f28-0 (s3-0 - arg2 - (string->symbol *res-key-string*) - 'interp - (the-as float -1000000000.0) - (the-as float 0.0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if arg0 - (format #t "setup maxAngle ~R~%" f30-0) - ) - (the-as string (when (!= f28-0 0.0) - (when arg0 - (format #t "offset ~R~%" f28-0) - (format #t "final ~R~%" (+ f30-0 f28-0)) - ) - (format arg1 " tag maxAngle-offset DEG(~R) // float~%" f28-0) - ) - ) - ) - ) - ) + (let ((f28-0 (s3-0 arg2 + (string->symbol *res-key-string*) + 'interp + (the-as float -1000000000.0) + (the-as float 0.0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if arg0 (format #t "setup maxAngle ~R~%" f30-0)) + (the-as string + (when (!= f28-0 0.0) + (when arg0 + (format #t "offset ~R~%" f28-0) + (format #t "final ~R~%" (+ f30-0 f28-0))) + (format arg1 " tag maxAngle-offset DEG(~R) // float~%" f28-0)))))) (defbehavior clmf-save-single cam-layout ((arg0 entity-camera) (arg1 symbol) (arg2 symbol)) (clear *temp-string*) (if arg2 - (format - *temp-string* - "dd_next/caminfo/~s.cam" - (res-lump-struct arg0 'name structure :time (the-as float -1000000000.0)) - ) - (format *temp-string* "dd_next/caminfo/garbage") - ) + (format *temp-string* "dd_next/caminfo/~s.cam" (res-lump-struct arg0 'name structure :time (the-as float -1000000000.0))) + (format *temp-string* "dd_next/caminfo/garbage")) (let ((s4-2 (new 'stack 'file-stream *temp-string* 'write))) (if arg1 - (format - #t - "---------camera '~S'------------~%" - (res-lump-struct arg0 'name structure :time (the-as float -1000000000.0)) - ) - ) + (format #t + "---------camera '~S'------------~%" + (res-lump-struct arg0 'name structure :time (the-as float -1000000000.0)))) (format s4-2 "#include /next/config_data/standard.m2d~%") (format s4-2 "camera ~s {~%" (res-lump-struct arg0 'name structure :time (the-as float -1000000000.0))) (cam-layout-save-cam-rot arg1 (the-as string s4-2) (the-as entity-actor arg0)) @@ -2124,117 +1401,76 @@ (cam-layout-save-campoints-flags arg1 (the-as string s4-2) (the-as entity-actor arg0)) (cam-layout-save-focalpull-flags arg1 (the-as string s4-2) (the-as entity-actor arg0)) (format s4-2 "}~%") - (file-stream-close s4-2) - ) - ) + (file-stream-close s4-2))) (defbehavior clmf-save-one cam-layout ((arg0 symbol)) (let ((s5-1 (logtest? (the-as int arg0) 8)) - (gp-1 (logtest? (the-as int arg0) 16)) - ) - (if s5-1 - (format #t "~%~%~%=================================~%") - ) + (gp-1 (logtest? (the-as int arg0) 16))) + (if s5-1 (format #t "~%~%~%=================================~%")) (clmf-save-single (-> self cam-entity) s5-1 gp-1) - (if s5-1 - (format #t "===============================~%~%~%~%") - ) + (if s5-1 (format #t "===============================~%~%~%~%")) (if gp-1 - (format - #t - "'~S' save completed~%" - (res-lump-struct (-> self cam-entity) 'name structure :time (the-as float -1000000000.0)) - ) - ) - ) - #t - ) + (format #t + "'~S' save completed~%" + (res-lump-struct (-> self cam-entity) 'name structure :time (the-as float -1000000000.0))))) + #t) (defbehavior clmf-save-all cam-layout ((arg0 symbol)) (let ((s5-1 (logtest? (the-as int arg0) 8)) - (gp-1 (logtest? (the-as int arg0) 16)) - ) - (if s5-1 - (format #t "~%~%~%=================================~%") - ) + (gp-1 (logtest? (the-as int arg0) 16))) + (if s5-1 (format #t "~%~%~%=================================~%")) (let ((v1-5 (-> *camera-engine* alive-list next0))) *camera-engine* (let ((s4-0 (-> v1-5 next0))) (while (!= v1-5 (-> *camera-engine* alive-list-end)) - (let ((a0-4 (-> (the-as connection v1-5) param1))) - (clmf-save-single (the-as entity-camera a0-4) s5-1 gp-1) - ) + (let ((a0-4 (-> (the-as connection v1-5) param1))) (clmf-save-single (the-as entity-camera a0-4) s5-1 gp-1)) (set! v1-5 s4-0) *camera-engine* - (set! s4-0 (-> s4-0 next0)) - ) - ) - ) - (if s5-1 - (format #t "===============================~%~%~%~%") - ) - (if gp-1 - (format #t "camera save all completed~%") - ) - ) - #t - ) + (set! s4-0 (-> s4-0 next0))))) + (if s5-1 (format #t "===============================~%~%~%~%")) + (if gp-1 (format #t "camera save all completed~%"))) + #t) (deftype clmf-cam-flag-toggle-info (structure) - ((key float) - (force-on int32) - (force-off int32) - ) - ) - + ((key float) + (force-on int32) + (force-off int32))) (defbehavior clmf-cam-flag-toggle cam-layout ((arg0 int) (arg1 int)) (let ((s4-0 (/ arg0 8)) - (gp-0 (new 'stack 'clmf-cam-flag-toggle-info)) - ) + (gp-0 (new 'stack 'clmf-cam-flag-toggle-info))) (set! (-> gp-0 key) (-> self res-key)) (cond ((and (= arg1 'vol-flags) (>= (-> self res-key) (the float (-> self first-cutoutvol)))) (set! (-> gp-0 key) (- (-> gp-0 key) (the float (-> self first-cutoutvol)))) - (set! arg1 (the-as int 'cutoutvol-flags)) - ) + (set! arg1 (the-as int 'cutoutvol-flags))) ((and (= arg1 'vol-flags) (>= (-> self res-key) (the float (-> self first-pvol)))) (set! (-> gp-0 key) (- (-> gp-0 key) (the float (-> self first-pvol)))) - (set! arg1 (the-as int 'pvol-flags)) - ) - ) + (set! arg1 (the-as int 'pvol-flags)))) (let ((s3-0 (method-of-type res-lump get-property-value)) - (s2-0 (-> self cam-entity)) - ) + (s2-0 (-> self cam-entity))) (format (clear *res-key-string*) "~S~S" (the-as object arg1) '-on) - (set! (-> gp-0 force-on) (the-as int (s3-0 - s2-0 - (string->symbol *res-key-string*) - 'exact - (-> gp-0 key) - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - ) + (set! (-> gp-0 force-on) + (the-as int + (s3-0 s2-0 + (string->symbol *res-key-string*) + 'exact + (-> gp-0 key) + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*)))) (let ((s3-1 (method-of-type res-lump get-property-value)) - (s2-1 (-> self cam-entity)) - ) + (s2-1 (-> self cam-entity))) (format (clear *res-key-string*) "~S~S" (the-as object arg1) '-off) - (set! (-> gp-0 force-off) (the-as int (s3-1 - s2-1 - (string->symbol *res-key-string*) - 'exact - (-> gp-0 key) - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - ) + (set! (-> gp-0 force-off) + (the-as int + (s3-1 s2-1 + (string->symbol *res-key-string*) + 'exact + (-> gp-0 key) + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*)))) (cond ((logtest? (-> gp-0 force-off) s4-0) (logclear! (-> gp-0 force-off) s4-0) @@ -2242,125 +1478,76 @@ (let* ((s4-1 (-> self cam-entity)) (s3-2 (method-of-object s4-1 add-32bit-data!)) (s2-2 (logior (shl #x10000 32) (shr (shl (the-as int int32) 32) 32))) - (s1-2 (shl (the-as int (-> gp-0 key)) 32)) - ) + (s1-2 (shl (the-as int (-> gp-0 key)) 32))) (format (clear *res-key-string*) "~S~S" (the-as object arg1) '-off) - (s3-2 - s4-1 - (the-as - res-tag - (make-u128 s2-2 (logior s1-2 (shr (shl (the-as int (string->symbol *res-key-string*)) 32) 32))) - ) - (-> gp-0 force-off) - ) - ) + (s3-2 s4-1 + (the-as res-tag (make-u128 s2-2 (logior s1-2 (shr (shl (the-as int (string->symbol *res-key-string*)) 32) 32)))) + (-> gp-0 force-off))) (let* ((s4-2 (-> self cam-entity)) (s3-3 (method-of-object s4-2 add-32bit-data!)) (s2-3 (logior (shl #x10000 32) (shr (shl (the-as int int32) 32) 32))) - (s1-3 (shl (the-as int (-> gp-0 key)) 32)) - ) + (s1-3 (shl (the-as int (-> gp-0 key)) 32))) (format (clear *res-key-string*) "~S~S" (the-as object arg1) '-on) - (s3-3 - s4-2 - (the-as - res-tag - (make-u128 s2-3 (logior s1-3 (shr (shl (the-as int (string->symbol *res-key-string*)) 32) 32))) - ) - (-> gp-0 force-on) - ) - ) - ) + (s3-3 s4-2 + (the-as res-tag (make-u128 s2-3 (logior s1-3 (shr (shl (the-as int (string->symbol *res-key-string*)) 32) 32)))) + (-> gp-0 force-on)))) ((logtest? (-> gp-0 force-on) s4-0) (logclear! (-> gp-0 force-on) s4-0) (let* ((s4-3 (-> self cam-entity)) (s3-4 (method-of-object s4-3 add-32bit-data!)) (s2-4 (logior (shl #x10000 32) (shr (shl (the-as int int32) 32) 32))) - (s1-4 (shl (the-as int (-> gp-0 key)) 32)) - ) + (s1-4 (shl (the-as int (-> gp-0 key)) 32))) (format (clear *res-key-string*) "~S~S" (the-as object arg1) '-on) - (s3-4 - s4-3 - (the-as - res-tag - (make-u128 s2-4 (logior s1-4 (shr (shl (the-as int (string->symbol *res-key-string*)) 32) 32))) - ) - (-> gp-0 force-on) - ) - ) - ) + (s3-4 s4-3 + (the-as res-tag (make-u128 s2-4 (logior s1-4 (shr (shl (the-as int (string->symbol *res-key-string*)) 32) 32)))) + (-> gp-0 force-on)))) (else - (logior! (-> gp-0 force-off) s4-0) - (let* ((s4-4 (-> self cam-entity)) - (s3-5 (method-of-object s4-4 add-32bit-data!)) - (s2-5 (logior (shl #x10000 32) (shr (shl (the-as int int32) 32) 32))) - (s1-5 (shl (the-as int (-> gp-0 key)) 32)) - ) - (format (clear *res-key-string*) "~S~S" (the-as object arg1) '-off) - (s3-5 - s4-4 - (the-as - res-tag - (make-u128 s2-5 (logior s1-5 (shr (shl (the-as int (string->symbol *res-key-string*)) 32) 32))) - ) - (-> gp-0 force-off) - ) - ) - ) - ) - ) - #t - ) + (logior! (-> gp-0 force-off) s4-0) + (let* ((s4-4 (-> self cam-entity)) + (s3-5 (method-of-object s4-4 add-32bit-data!)) + (s2-5 (logior (shl #x10000 32) (shr (shl (the-as int int32) 32) 32))) + (s1-5 (shl (the-as int (-> gp-0 key)) 32))) + (format (clear *res-key-string*) "~S~S" (the-as object arg1) '-off) + (s3-5 s4-4 + (the-as res-tag (make-u128 s2-5 (logior s1-5 (shr (shl (the-as int (string->symbol *res-key-string*)) 32) 32)))) + (-> gp-0 force-off)))))) + #t) (defbehavior clmf-cam-flag cam-layout ((arg0 string) (arg1 uint) (arg2 uint)) (let ((s5-0 (/ (the-as int arg1) 8)) - (f30-0 (-> self res-key)) - ) + (f30-0 (-> self res-key))) (cond ((and (= arg2 'vol-flags) (>= (-> self res-key) (the float (-> self first-cutoutvol)))) (set! f30-0 (- f30-0 (the float (-> self first-cutoutvol)))) - (set! arg2 (the-as uint 'cutoutvol-flags)) - ) + (set! arg2 (the-as uint 'cutoutvol-flags))) ((and (= arg2 'vol-flags) (>= (-> self res-key) (the float (-> self first-pvol)))) (set! f30-0 (- f30-0 (the float (-> self first-pvol)))) - (set! arg2 (the-as uint 'pvol-flags)) - ) - ) + (set! arg2 (the-as uint 'pvol-flags)))) (let ((s3-0 (method-of-type res-lump get-property-value)) - (s2-0 (-> self cam-entity)) - ) + (s2-0 (-> self cam-entity))) (format (clear *res-key-string*) "~S~S" (the-as object arg2) '-off) (cond - ((logtest? (s3-0 - s2-0 - (string->symbol *res-key-string*) - 'exact - f30-0 - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - s5-0 - ) - (format arg0 ": off") - ) + ((logtest? (s3-0 s2-0 + (string->symbol *res-key-string*) + 'exact + f30-0 + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*) + s5-0) + (format arg0 ": off")) ((let ((s3-1 (method-of-type res-lump get-property-value)) - (s2-1 (-> self cam-entity)) - ) + (s2-1 (-> self cam-entity))) (format (clear *res-key-string*) "~S~S" (the-as object arg2) '-on) - (logtest? (s3-1 - s2-1 - (string->symbol *res-key-string*) - 'exact - f30-0 - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - s5-0 - ) - ) - (format arg0 ": on") - ) + (logtest? (s3-1 s2-1 + (string->symbol *res-key-string*) + 'exact + f30-0 + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*) + s5-0)) + (format arg0 ": on")) ((not (logtest? ((method-of-type res-lump get-property-value) (-> self cam-entity) (the-as symbol arg2) @@ -2368,21 +1555,11 @@ f30-0 (the-as uint128 0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - s5-0 - ) - ) - (format arg0 ": off(maya)") - ) - (else - (format arg0 ": on(maya)") - ) - ) - ) - ) - #t - ) + *res-static-buf*) + s5-0)) + (format arg0 ": off(maya)")) + (else (format arg0 ": on(maya)"))))) + #t) (defbehavior clmf-cam-float-adjust cam-layout ((arg0 symbol) (arg1 (pointer float))) (cam-layout-print 16 *camera-layout-message-ypos* "left stick adjusts value") @@ -2394,961 +1571,1041 @@ (the-as float -1000000000.0) (the-as float 0.0) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (f0-0 (-> arg1 0)) - ) - (if (= f0-0 0.0) - (set! f0-0 1.0) - ) - (let ((f0-2 - (+ f30-0 - (analog-input - (the-as int (-> *cpad-list* cpads 0 leftx)) - (the-as float 128.0) - (the-as float 48.0) - (the-as float 110.0) - f0-0 - ) - ) - ) - ) - (add-32bit-data! - (-> self cam-entity) - (new 'static 'res-tag :name arg0 :key-frame -1000000000.0 :elt-count #x1 :elt-type float) - f0-2 - ) - ) - ) + *res-static-buf*)) + (f0-0 (-> arg1 0))) + (if (= f0-0 0.0) (set! f0-0 1.0)) + (let ((f0-2 (+ f30-0 + (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) + (the-as float 128.0) + (the-as float 48.0) + (the-as float 110.0) + f0-0)))) + (add-32bit-data! (-> self cam-entity) + (new 'static 'res-tag :name arg0 :key-frame -1000000000.0 :elt-count #x1 :elt-type float) + f0-2))) (set! *camera-read-analog* #f) - #t - ) + #t) (defbehavior clmf-cam-meters cam-layout ((arg0 meters) (arg1 symbol)) - (let ((f0-0 (cam-slave-get-float (-> self cam-entity) arg1 (the-as float 0.0)))) - (format arg0 ": ~M" f0-0) - ) - #t - ) + (let ((f0-0 (cam-slave-get-float (-> self cam-entity) arg1 (the-as float 0.0)))) (format arg0 ": ~M" f0-0)) + #t) (defbehavior clmf-cam-fov cam-layout ((arg0 degrees) (arg1 symbol)) (format arg0 ": ~R" (cam-slave-get-fov (-> self cam-entity))) - #t - ) + #t) (defbehavior clmf-cam-deg cam-layout ((arg0 degrees) (arg1 symbol)) (format arg0 ": ~R" (cam-slave-get-float (-> self cam-entity) arg1 (the-as float 0.0))) - #t - ) + #t) (defbehavior clmf-cam-intro-time cam-layout ((arg0 float) (arg1 symbol)) (let ((f30-0 (cam-slave-get-intro-step (-> self cam-entity)))) (format arg0 ": ~f" (/ 0.016666668 f30-0)) - (set! (-> *CAM_LAYOUT-bank* intro-step) f30-0) - ) - #t - ) + (set! (-> *CAM_LAYOUT-bank* intro-step) f30-0)) + #t) (defbehavior clmf-cam-interp-time cam-layout ((arg0 float) (arg1 symbol)) (format arg0 ": ~f" (cam-slave-get-interp-time (-> self cam-entity))) - #t - ) + #t) (defbehavior clmf-cam-float cam-layout ((arg0 float) (arg1 symbol)) (format arg0 ": ~f" (cam-slave-get-float (-> self cam-entity) arg1 (the-as float 0.0))) - #t - ) + #t) (defbehavior clmf-cam-string cam-layout ((arg0 string) (arg1 symbol)) (local-vars (sv-16 res-tag)) (format arg0 ":") (set! sv-16 (new 'static 'res-tag)) - (let ((s5-1 (res-lump-data (-> self cam-entity) arg1 pointer :tag-ptr (& sv-16) :time (the-as float -1000000000.0))) - ) + (let ((s5-1 (res-lump-data (-> self cam-entity) arg1 pointer :tag-ptr (& sv-16) :time (the-as float -1000000000.0)))) (when s5-1 (dotimes (s4-0 (the-as int (-> sv-16 elt-count))) - (format arg0 " ~S" (-> (the-as (pointer uint32) (&+ s5-1 (* s4-0 4))))) - ) - ) - ) - #t - ) + (format arg0 " ~S" (-> (the-as (pointer uint32) (&+ s5-1 (* s4-0 4)))))))) + #t) (define *clm-focalpull-attr* - (new 'static 'clm - :title "---focalpull attributes--" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " ok" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*) - ) - (new 'static 'clm-item - :description "adjust" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :func #f) - ) - (new 'static 'clm-list - :tracker #f - :items (new 'static 'boxed-array :type clm-list-item - (new 'static 'clm-list-item - :description "radial " - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 16 - :val-parm1-basic 'focalpull-flags - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 16 - :parm1-basic 'focalpull-flags - ) - ) - ) - (new 'static 'clm-list-item - :description "spherical " - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 8 - :val-parm1-basic 'focalpull-flags - :actions (new 'static 'boxed-array :type clm-item-action (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 8 - :parm1-basic 'focalpull-flags - ) - ) - ) - ) - ) - ) - ) - ) + (new 'static + 'clm + :title "---focalpull attributes--" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " ok" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*)) + (new 'static + 'clm-item + :description "adjust" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + (new 'static + 'clm-list + :tracker #f + :items + (new 'static + 'boxed-array + :type + clm-list-item + (new 'static + 'clm-list-item + :description "radial " + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 16 + :val-parm1-basic 'focalpull-flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :options #x1 + :func 'clmf-cam-flag-toggle + :parm0 16 + :parm1-basic 'focalpull-flags))) + (new 'static + 'clm-list-item + :description "spherical " + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 8 + :val-parm1-basic 'focalpull-flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :options #x1 + :func 'clmf-cam-flag-toggle + :parm0 8 + :parm1-basic 'focalpull-flags)))))))) (define *clm-index-attr* - (new 'static 'clm - :title "---index attributes--" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " ok" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*) - ) - (new 'static 'clm-item - :description "adjust" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :func #f) - ) - (new 'static 'clm-list - :tracker #f - :items (new 'static 'boxed-array :type clm-list-item - (new 'static 'clm-list-item - :description "radial " - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 16 - :val-parm1-basic 'campoints-flags - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 16 - :parm1-basic 'campoints-flags - ) - ) - ) - (new 'static 'clm-list-item - :description "spherical " - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 8 - :val-parm1-basic 'campoints-flags - :actions (new 'static 'boxed-array :type clm-item-action (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 8 - :parm1-basic 'campoints-flags - ) - ) - ) - ) - ) - ) - ) - ) + (new 'static + 'clm + :title "---index attributes--" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " ok" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*)) + (new 'static + 'clm-item + :description "adjust" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + (new 'static + 'clm-list + :tracker #f + :items + (new 'static + 'boxed-array + :type + clm-list-item + (new 'static + 'clm-list-item + :description "radial " + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 16 + :val-parm1-basic 'campoints-flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :options #x1 + :func 'clmf-cam-flag-toggle + :parm0 16 + :parm1-basic 'campoints-flags))) + (new 'static + 'clm-list-item + :description "spherical " + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 8 + :val-parm1-basic 'campoints-flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :options #x1 + :func 'clmf-cam-flag-toggle + :parm0 8 + :parm1-basic 'campoints-flags)))))))) (define *clm-intro-attr* - (new 'static 'clm - :title "---intro attributes--" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " ok" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*) - ) - (new 'static 'clm-item - :description "adjust" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :func #f) - ) - (new 'static 'clm-list - :tracker #f - :items (new 'static 'boxed-array :type clm-list-item - (new 'static 'clm-list-item - :description "time " - :track-val #f - :val-func 'clmf-cam-intro-time - :val-parm0-basic 'intro-time - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'intro-time-offset - :parm1-basic (new 'static 'bfloat :data 0.01) - ) - ) - ) - (new 'static 'clm-list-item - :description "exitValue" - :track-val #f - :val-func 'clmf-cam-float - :val-parm0-basic 'intro-exitValue - :actions (new 'static 'boxed-array :type clm-item-action (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'intro-exitValue-offset - :parm1-basic (new 'static 'bfloat :data 0.001) - ) - ) - ) - ) - ) - ) - ) - ) + (new 'static + 'clm + :title "---intro attributes--" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " ok" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*)) + (new 'static + 'clm-item + :description "adjust" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + (new 'static + 'clm-list + :tracker #f + :items + (new 'static + 'boxed-array + :type + clm-list-item + (new 'static + 'clm-list-item + :description "time " + :track-val #f + :val-func 'clmf-cam-intro-time + :val-parm0-basic 'intro-time + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'intro-time-offset + :parm1-basic + (new 'static 'bfloat :data 0.01)))) + (new 'static + 'clm-list-item + :description "exitValue" + :track-val #f + :val-func 'clmf-cam-float + :val-parm0-basic 'intro-exitValue + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'intro-exitValue-offset + :parm1-basic + (new 'static 'bfloat :data 0.001))))))))) (define *clm-spline-attr* - (new 'static 'clm - :title "---spline attributes--" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " ok" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*) - ) - (new 'static 'clm-item - :description "adjust" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :func #f) - ) - (new 'static 'clm-list - :tracker #f - :items (new 'static 'boxed-array :type clm-list-item - (new 'static 'clm-list-item - :description "followDist" - :track-val #f - :val-func 'clmf-cam-meters - :val-parm0-basic 'spline-follow-dist - :actions (new 'static 'boxed-array :type clm-item-action (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'spline-follow-dist-offset - :parm1-basic (new 'static 'bfloat :data 409.6) - ) - ) - ) - ) - ) - ) - ) - ) + (new 'static + 'clm + :title "---spline attributes--" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " ok" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*)) + (new 'static + 'clm-item + :description "adjust" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + (new 'static + 'clm-list + :tracker #f + :items + (new 'static + 'boxed-array + :type + clm-list-item + (new 'static + 'clm-list-item + :description "followDist" + :track-val #f + :val-func 'clmf-cam-meters + :val-parm0-basic 'spline-follow-dist + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'spline-follow-dist-offset + :parm1-basic + (new 'static 'bfloat :data 409.6))))))))) (define *clm-vol-attr* - (new 'static 'clm - :title "---volume attributes--" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " ok" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*) - ) - (new 'static 'clm-item - :description "adjust" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :func #f) - ) - (new 'static 'clm-list - :tracker #f - :items (new 'static 'boxed-array :type clm-list-item - (new 'static 'clm-list-item - :description "airSwitch" - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 8 - :val-parm1-basic 'vol-flags - :actions (new 'static 'boxed-array :type clm-item-action (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 8 - :parm1-basic 'vol-flags - ) - ) - ) - ) - ) - ) - ) - ) + (new 'static + 'clm + :title "---volume attributes--" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " ok" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*)) + (new 'static + 'clm-item + :description "adjust" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + (new 'static + 'clm-list + :tracker #f + :items + (new 'static + 'boxed-array + :type + clm-list-item + (new 'static + 'clm-list-item + :description "airSwitch" + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 8 + :val-parm1-basic 'vol-flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-cam-flag-toggle :parm0 8 :parm1-basic 'vol-flags)))))))) (define *clm-cam-attr* - (new 'static 'clm - :title "---camera attributes--" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " ok" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*) - ) - (new 'static 'clm-item - :description "adjust" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :func #f) - ) - (new 'static 'clm-list - :tracker #f - :items (new 'static 'boxed-array :type clm-list-item - (new 'static 'clm-list-item - :description "drag " - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 #x400 - :val-parm1-basic 'flags - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 #x400 - :parm1-basic 'flags - ) - ) - ) - (new 'static 'clm-list-item - :description "fov " - :track-val #f - :val-func 'clmf-cam-fov - :val-parm0-basic 'fov - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'fov-offset - :parm1-basic (new 'static 'bfloat :data 91.022224) - ) - ) - ) - (new 'static 'clm-list-item - :description "focalPull " - :track-val #f - :val-func 'clmf-cam-deg - :val-parm0-basic 'focalPull - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'focalPull-offset - :parm1-basic (new 'static 'bfloat :data 91.022224) - ) - ) - ) - (new 'static 'clm-list-item - :description "interpTime " - :track-val #f - :val-func 'clmf-cam-interp-time - :val-parm0-basic 'interpTime - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'interpTime-offset - :parm1-basic (new 'static 'bfloat :data 0.01) - ) - ) - ) - (new 'static 'clm-list-item - :description "sameSide " - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 16 - :val-parm1-basic 'flags - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 16 - :parm1-basic 'flags - ) - ) - ) - (new 'static 'clm-list-item - :description "spherical " - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 32 - :val-parm1-basic 'flags - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 32 - :parm1-basic 'flags - ) - ) - ) - (new 'static 'clm-list-item - :description "MinLength " - :track-val #f - :val-func 'clmf-cam-meters - :val-parm0-basic 'stringMinLength - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'stringMinLength-offset - :parm1-basic (new 'static 'bfloat :data 409.6) - ) - ) - ) - (new 'static 'clm-list-item - :description "MaxLength " - :track-val #f - :val-func 'clmf-cam-meters - :val-parm0-basic 'stringMaxLength - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'stringMaxLength-offset - :parm1-basic (new 'static 'bfloat :data 409.6) - ) - ) - ) - (new 'static 'clm-list-item - :description "MinHeight " - :track-val #f - :val-func 'clmf-cam-meters - :val-parm0-basic 'stringMinHeight - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'stringMinHeight-offset - :parm1-basic (new 'static 'bfloat :data 409.6) - ) - ) - ) - (new 'static 'clm-list-item - :description "MaxHeight " - :track-val #f - :val-func 'clmf-cam-meters - :val-parm0-basic 'stringMaxHeight - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'stringMaxHeight-offset - :parm1-basic (new 'static 'bfloat :data 409.6) - ) - ) - ) - (new 'static 'clm-list-item - :description "cliffHeight" - :track-val #f - :val-func 'clmf-cam-meters - :val-parm0-basic 'stringCliffHeight - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'stringCliffHeight-offset - :parm1-basic (new 'static 'bfloat :data 409.6) - ) - ) - ) - (new 'static 'clm-list-item - :description "alternates " - :track-val #f - :val-func 'clmf-cam-string - :val-parm0-basic 'alternates - :actions (new 'static 'boxed-array :type clm-item-action) - ) - (new 'static 'clm-list-item - :description "maxAngle " - :track-val #f - :val-func 'clmf-cam-deg - :val-parm0-basic 'maxAngle - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'maxAngle-offset - :parm1-basic (new 'static 'bfloat :data 91.022224) - ) - ) - ) - (new 'static 'clm-list-item - :description "shrinkAngle" - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 #x4000 - :val-parm1-basic 'flags - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 #x4000 - :parm1-basic 'flags - ) - ) - ) - (new 'static 'clm-list-item - :description "noRotate " - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 #x40000 - :val-parm1-basic 'flags - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 #x40000 - :parm1-basic 'flags - ) - ) - ) - (new 'static 'clm-list-item - :description "tiltAdjust " - :track-val #f - :val-func 'clmf-cam-deg - :val-parm0-basic 'tiltAdjust - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'tiltAdjust-offset - :parm1-basic (new 'static 'bfloat :data 91.022224) - ) - ) - ) - (new 'static 'clm-list-item - :description "stickyAngle" - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 #x80000 - :val-parm1-basic 'flags - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 #x80000 - :parm1-basic 'flags - ) - ) - ) - (new 'static 'clm-list-item - :description "airExit" - :track-val #f - :val-func 'clmf-cam-flag - :val-parm0 #x100000 - :val-parm1-basic 'flags - :actions (new 'static 'boxed-array :type clm-item-action (new 'static 'clm-item-action - :button #x4000 - :options #x1 - :func 'clmf-cam-flag-toggle - :parm0 #x100000 - :parm1-basic 'flags - ) - ) - ) - ) - ) - ) - ) - ) + (new 'static + 'clm + :title "---camera attributes--" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " ok" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func '*clm-edit*)) + (new 'static + 'clm-item + :description "adjust" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + (new 'static + 'clm-list + :tracker #f + :items + (new 'static + 'boxed-array + :type + clm-list-item + (new 'static + 'clm-list-item + :description "drag " + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 #x400 + :val-parm1-basic 'flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-cam-flag-toggle :parm0 #x400 :parm1-basic 'flags))) + (new 'static + 'clm-list-item + :description "fov " + :track-val #f + :val-func 'clmf-cam-fov + :val-parm0-basic 'fov + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'fov-offset + :parm1-basic + (new 'static 'bfloat :data 91.022224)))) + (new 'static + 'clm-list-item + :description "focalPull " + :track-val #f + :val-func 'clmf-cam-deg + :val-parm0-basic 'focalPull + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'focalPull-offset + :parm1-basic + (new 'static 'bfloat :data 91.022224)))) + (new 'static + 'clm-list-item + :description "interpTime " + :track-val #f + :val-func 'clmf-cam-interp-time + :val-parm0-basic 'interpTime + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'interpTime-offset + :parm1-basic + (new 'static 'bfloat :data 0.01)))) + (new 'static + 'clm-list-item + :description "sameSide " + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 16 + :val-parm1-basic 'flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-cam-flag-toggle :parm0 16 :parm1-basic 'flags))) + (new 'static + 'clm-list-item + :description "spherical " + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 32 + :val-parm1-basic 'flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-cam-flag-toggle :parm0 32 :parm1-basic 'flags))) + (new 'static + 'clm-list-item + :description "MinLength " + :track-val #f + :val-func 'clmf-cam-meters + :val-parm0-basic 'stringMinLength + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'stringMinLength-offset + :parm1-basic + (new 'static 'bfloat :data 409.6)))) + (new 'static + 'clm-list-item + :description "MaxLength " + :track-val #f + :val-func 'clmf-cam-meters + :val-parm0-basic 'stringMaxLength + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'stringMaxLength-offset + :parm1-basic + (new 'static 'bfloat :data 409.6)))) + (new 'static + 'clm-list-item + :description "MinHeight " + :track-val #f + :val-func 'clmf-cam-meters + :val-parm0-basic 'stringMinHeight + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'stringMinHeight-offset + :parm1-basic + (new 'static 'bfloat :data 409.6)))) + (new 'static + 'clm-list-item + :description "MaxHeight " + :track-val #f + :val-func 'clmf-cam-meters + :val-parm0-basic 'stringMaxHeight + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'stringMaxHeight-offset + :parm1-basic + (new 'static 'bfloat :data 409.6)))) + (new 'static + 'clm-list-item + :description "cliffHeight" + :track-val #f + :val-func 'clmf-cam-meters + :val-parm0-basic 'stringCliffHeight + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'stringCliffHeight-offset + :parm1-basic + (new 'static 'bfloat :data 409.6)))) + (new 'static + 'clm-list-item + :description "alternates " + :track-val #f + :val-func 'clmf-cam-string + :val-parm0-basic 'alternates + :actions + (new 'static 'boxed-array :type clm-item-action)) + (new 'static + 'clm-list-item + :description "maxAngle " + :track-val #f + :val-func 'clmf-cam-deg + :val-parm0-basic 'maxAngle + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'maxAngle-offset + :parm1-basic + (new 'static 'bfloat :data 91.022224)))) + (new 'static + 'clm-list-item + :description "shrinkAngle" + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 #x4000 + :val-parm1-basic 'flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-cam-flag-toggle :parm0 #x4000 :parm1-basic 'flags))) + (new 'static + 'clm-list-item + :description "noRotate " + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 #x40000 + :val-parm1-basic 'flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-cam-flag-toggle :parm0 #x40000 :parm1-basic 'flags))) + (new 'static + 'clm-list-item + :description "tiltAdjust " + :track-val #f + :val-func 'clmf-cam-deg + :val-parm0-basic 'tiltAdjust + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'tiltAdjust-offset + :parm1-basic + (new 'static 'bfloat :data 91.022224)))) + (new 'static + 'clm-list-item + :description "stickyAngle" + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 #x80000 + :val-parm1-basic 'flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-cam-flag-toggle :parm0 #x80000 :parm1-basic 'flags))) + (new 'static + 'clm-list-item + :description "airExit" + :track-val #f + :val-func 'clmf-cam-flag + :val-parm0 #x100000 + :val-parm1-basic 'flags + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-cam-flag-toggle :parm0 #x100000 :parm1-basic 'flags)))))))) (define *clm-cam-lookthrough* - (new 'static 'clm - :title "---cam-lookthrough---" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " " - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :options #x4 :func 'clmf-look-through) - ) - (new 'static 'clm-item - :description " ok" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func 'clmf-to-edit) - ) - (new 'static 'clm-item - :description "pos/rot" - :button-symbol 'x - :action (new 'static 'clm-item-action - :button #x4000 - :options #x8 - :func 'clmf-pos-rot - :parm0-basic 'trans-offset - :parm1-basic 'rot-offset - ) - ) - (new 'static 'clm-item - :description " adjust" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :func #f) - ) - (new 'static 'clm-list - :tracker #f - :items (new 'static 'boxed-array :type clm-list-item - (new 'static 'clm-list-item - :description "fov" - :track-val #f - :val-func 'clmf-cam-fov - :val-parm0-basic 'fov - :actions (new 'static 'boxed-array :type clm-item-action (new 'static 'clm-item-action - :button #x4000 - :func 'clmf-cam-float-adjust - :parm0-basic 'fov-offset - :parm1-basic (new 'static 'bfloat :data 91.022224) - ) - ) - ) - ) - ) - ) - ) - ) + (new 'static + 'clm + :title "---cam-lookthrough---" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " " + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :options #x4 :func 'clmf-look-through)) + (new 'static + 'clm-item + :description " ok" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func 'clmf-to-edit)) + (new 'static + 'clm-item + :description "pos/rot" + :button-symbol 'x + :action + (new 'static + 'clm-item-action + :button #x4000 + :options #x8 + :func 'clmf-pos-rot + :parm0-basic 'trans-offset + :parm1-basic 'rot-offset)) + (new 'static + 'clm-item + :description " adjust" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + (new 'static + 'clm-list + :tracker #f + :items + (new 'static + 'boxed-array + :type + clm-list-item + (new 'static + 'clm-list-item + :description "fov" + :track-val #f + :val-func 'clmf-cam-fov + :val-parm0-basic 'fov + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static + 'clm-item-action + :button #x4000 + :func 'clmf-cam-float-adjust + :parm0-basic 'fov-offset + :parm1-basic + (new 'static 'bfloat :data 91.022224))))))))) (define *clm-edit* - (new 'static 'clm - :title "---edit---" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " ok" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func 'clmf-to-select) - ) - (new 'static 'clm-item - :description "attributes" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :options #x1 :func #f) - ) - (new 'static 'clm-item - :description " edit part" - :button-symbol 'circle - :action (new 'static 'clm-item-action :button #x2000 :options #x1 :func #f) - ) - (new 'static 'clm-item - :description "scale/next" - :button-symbol 'r2 - :action (new 'static 'clm-item-action :button #x200 :func #f) - ) - (new 'static 'clm-item - :description " pos/rot" - :button-symbol 'l2 - :action (new 'static 'clm-item-action :button #x100 :func #f) - ) - (new 'static 'clm-list - :tracker '*camera-layout-blink* - :items (new 'static 'boxed-array :type clm-list-item - (new 'static 'clm-list-item - :description "camera " - :track-val 'camera - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :options #x1 :func '*clm-cam-attr*) - (new 'static 'clm-item-action :button #x2000 :func '*clm-cam-lookthrough*) - (new 'static 'clm-item-action :button #x200 :func 'clmf-bna) - (new 'static 'clm-item-action - :button #x100 - :func 'clmf-pos-rot - :parm0-basic 'trans-offset - :parm1-basic 'rot-offset - ) - ) - ) - (new 'static 'clm-list-item - :description "volume " - :track-val 'volume - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-to-vol-attr) - (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x200 :func 'clmf-next-vol-dpad) - (new 'static 'clm-item-action :button #x100 :func 'clmf-implement) - ) - ) - (new 'static 'clm-list-item - :description "align " - :track-val 'align - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :func 'clmf-bna) - (new 'static 'clm-item-action :button #x2000 :func 'clmf-bna) - (new 'static 'clm-item-action :button #x200 :func 'clmf-bna) - (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'align-offset :parm1-basic #f) - ) - ) - (new 'static 'clm-list-item - :description "pivot " - :track-val 'pivot - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :func 'clmf-bna) - (new 'static 'clm-item-action :button #x2000 :func 'clmf-bna) - (new 'static 'clm-item-action :button #x200 :func 'clmf-bna) - (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'pivot-offset :parm1-basic #f) - ) - ) - (new 'static 'clm-list-item - :description "interesting" - :track-val 'interesting - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :func 'clmf-bna) - (new 'static 'clm-item-action :button #x2000 :func 'clmf-bna) - (new 'static 'clm-item-action :button #x200 :func 'clmf-bna) - (new 'static 'clm-item-action - :button #x100 - :func 'clmf-pos-rot - :parm0-basic 'interesting-offset - :parm1-basic #f - ) - ) - ) - (new 'static 'clm-list-item - :description "spline " - :track-val 'spline - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :func 'clmf-to-spline-attr) - (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x200 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'spline-offset :parm1-basic #f) - ) - ) - (new 'static 'clm-list-item - :description "intro " - :track-val 'intro - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-to-intro-attr) - (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x200 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x100 :func 'clmf-implement) - ) - ) - (new 'static 'clm-list-item - :description "index " - :track-val 'index - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-to-index-attr) - (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x200 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'campoints-offset) - ) - ) - (new 'static 'clm-list-item - :description "focalpull" - :track-val 'focalpull - :val-func #f - :actions (new 'static 'boxed-array :type clm-item-action - (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-to-focalpull-attr) - (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x200 :func 'clmf-implement) - (new 'static 'clm-item-action :button #x100 :func 'clmf-implement) - ) - ) - ) - ) - ) - ) - ) + (new 'static + 'clm + :title "---edit---" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " ok" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func 'clmf-to-select)) + (new 'static + 'clm-item + :description "attributes" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func #f)) + (new 'static + 'clm-item + :description " edit part" + :button-symbol 'circle + :action + (new 'static 'clm-item-action :button #x2000 :options #x1 :func #f)) + (new 'static + 'clm-item + :description "scale/next" + :button-symbol 'r2 + :action + (new 'static 'clm-item-action :button #x200 :func #f)) + (new 'static + 'clm-item + :description " pos/rot" + :button-symbol 'l2 + :action + (new 'static 'clm-item-action :button #x100 :func #f)) + (new 'static + 'clm-list + :tracker '*camera-layout-blink* + :items + (new 'static + 'boxed-array + :type + clm-list-item + (new 'static + 'clm-list-item + :description "camera " + :track-val 'camera + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func '*clm-cam-attr*) + (new 'static 'clm-item-action :button #x2000 :func '*clm-cam-lookthrough*) + (new 'static 'clm-item-action :button #x200 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'trans-offset :parm1-basic 'rot-offset))) + (new 'static + 'clm-list-item + :description "volume " + :track-val 'volume + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-to-vol-attr) + (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x200 :func 'clmf-next-vol-dpad) + (new 'static 'clm-item-action :button #x100 :func 'clmf-implement))) + (new 'static + 'clm-list-item + :description "align " + :track-val 'align + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x2000 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x200 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'align-offset :parm1-basic #f))) + (new 'static + 'clm-list-item + :description "pivot " + :track-val 'pivot + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x2000 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x200 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'pivot-offset :parm1-basic #f))) + (new 'static + 'clm-list-item + :description "interesting" + :track-val 'interesting + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x2000 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x200 :func 'clmf-bna) + (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'interesting-offset :parm1-basic #f))) + (new 'static + 'clm-list-item + :description "spline " + :track-val 'spline + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :func 'clmf-to-spline-attr) + (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x200 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'spline-offset :parm1-basic #f))) + (new 'static + 'clm-list-item + :description "intro " + :track-val 'intro + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-to-intro-attr) + (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x200 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x100 :func 'clmf-implement))) + (new 'static + 'clm-list-item + :description "index " + :track-val 'index + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-to-index-attr) + (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x200 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x100 :func 'clmf-pos-rot :parm0-basic 'campoints-offset))) + (new 'static + 'clm-list-item + :description "focalpull" + :track-val 'focalpull + :val-func #f + :actions + (new 'static + 'boxed-array + :type + clm-item-action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-to-focalpull-attr) + (new 'static 'clm-item-action :button #x2000 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x200 :func 'clmf-implement) + (new 'static 'clm-item-action :button #x100 :func 'clmf-implement)))))))) (define *clm-save-all* - (new 'static 'clm - :title "---save all?---" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " save all" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-save-all :parm0 16) - ) - (new 'static 'clm-item - :description "print all" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func 'clmf-save-all :parm0 8) - ) - (new 'static 'clm-item - :description " done" - :button-symbol 'triangle - :action (new 'static 'clm-item-action :button #x1000 :options #x1 :func 'clmf-to-select) - ) - ) - ) - ) + (new 'static + 'clm + :title "---save all?---" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " save all" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-save-all :parm0 16)) + (new 'static + 'clm-item + :description "print all" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func 'clmf-save-all :parm0 8)) + (new 'static + 'clm-item + :description " done" + :button-symbol 'triangle + :action + (new 'static 'clm-item-action :button #x1000 :options #x1 :func 'clmf-to-select))))) (define *clm-save-one* - (new 'static 'clm - :title "---single save?---" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " single save" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-save-one :parm0 16) - ) - (new 'static 'clm-item - :description "single print" - :button-symbol 'square - :action (new 'static 'clm-item-action :button #x8000 :options #x1 :func 'clmf-save-one :parm0 8) - ) - (new 'static 'clm-item - :description " done" - :button-symbol 'triangle - :action (new 'static 'clm-item-action :button #x1000 :options #x1 :func 'clmf-to-select) - ) - ) - ) - ) + (new 'static + 'clm + :title "---single save?---" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " single save" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :options #x1 :func 'clmf-save-one :parm0 16)) + (new 'static + 'clm-item + :description "single print" + :button-symbol 'square + :action + (new 'static 'clm-item-action :button #x8000 :options #x1 :func 'clmf-save-one :parm0 8)) + (new 'static + 'clm-item + :description " done" + :button-symbol 'triangle + :action + (new 'static 'clm-item-action :button #x1000 :options #x1 :func 'clmf-to-select))))) (define *clm-select* - (new 'static 'clm - :title "---camera---" - :items (new 'static 'boxed-array :type clm-basic - (new 'static 'clm-item - :description " edit" - :button-symbol 'x - :action (new 'static 'clm-item-action :button #x4000 :options #x3 :func 'clmf-to-edit-cam) - ) - (new 'static 'clm-item - :description "save one" - :button-symbol 'triangle - :action (new 'static 'clm-item-action :button #x1000 :options #x3 :func '*clm-save-one*) - ) - (new 'static 'clm-item - :description " next" - :button-symbol 'down - :action (new 'static 'clm-item-action :button #x40 :options #x3 :func 'clmf-next-entity :parm0 8) - ) - (new 'static 'clm-item - :description " prev" - :button-symbol 'up - :action (new 'static 'clm-item-action :button #x10 :options #x3 :func 'clmf-next-entity :parm0 -8) - ) - (new 'static 'clm-item - :description " next 5" - :button-symbol 'right - :action (new 'static 'clm-item-action :button #x20 :options #x3 :func 'clmf-next-entity :parm0 40) - ) - (new 'static 'clm-item - :description " prev 5" - :button-symbol 'left - :action (new 'static 'clm-item-action :button #x80 :options #x3 :func 'clmf-next-entity :parm0 -40) - ) - ) - ) - ) + (new 'static + 'clm + :title "---camera---" + :items + (new 'static + 'boxed-array + :type + clm-basic + (new 'static + 'clm-item + :description " edit" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :options #x3 :func 'clmf-to-edit-cam)) + (new 'static + 'clm-item + :description "save one" + :button-symbol 'triangle + :action + (new 'static 'clm-item-action :button #x1000 :options #x3 :func '*clm-save-one*)) + (new 'static + 'clm-item + :description " next" + :button-symbol 'down + :action + (new 'static 'clm-item-action :button #x40 :options #x3 :func 'clmf-next-entity :parm0 8)) + (new 'static + 'clm-item + :description " prev" + :button-symbol 'up + :action + (new 'static 'clm-item-action :button #x10 :options #x3 :func 'clmf-next-entity :parm0 -8)) + (new 'static + 'clm-item + :description " next 5" + :button-symbol 'right + :action + (new 'static 'clm-item-action :button #x20 :options #x3 :func 'clmf-next-entity :parm0 40)) + (new 'static + 'clm-item + :description " prev 5" + :button-symbol 'left + :action + (new 'static 'clm-item-action :button #x80 :options #x3 :func 'clmf-next-entity :parm0 -40))))) (define *clm* *clm-select*) (defbehavior cam-layout-do-action cam-layout ((arg0 clm-item-action)) (let ((s5-0 (-> arg0 func value))) (cond - ((not s5-0) - #f - ) - ((zero? s5-0) - #f - ) - ((and (not (-> self cam-entity)) (logtest? (-> arg0 options) 2)) - #f - ) - ((and (logtest? (-> arg0 options) 8) (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (-> arg0 button))) - #f - ) + ((not s5-0) #f) + ((zero? s5-0) #f) + ((and (not (-> self cam-entity)) (logtest? (-> arg0 options) 2)) #f) + ((and (logtest? (-> arg0 options) 8) (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (-> arg0 button))) #f) ((and (not (logtest? (-> arg0 options) 12)) (logtest? (-> arg0 options) 1) - (not (logtest? (-> *cpad-list* cpads 0 button0-rel 0) (-> arg0 button))) - ) - #f - ) - ((and (not (logtest? (-> arg0 options) 13)) - (not (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (-> arg0 button))) - ) - #f - ) - ((type-type? (-> (the-as basic s5-0) type) clm) - (set! *clm* (the-as clm s5-0)) - #t - ) + (not (logtest? (-> *cpad-list* cpads 0 button0-rel 0) (-> arg0 button)))) + #f) + ((and (not (logtest? (-> arg0 options) 13)) (not (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (-> arg0 button)))) + #f) + ((type-type? (-> (the-as basic s5-0) type) clm) (set! *clm* (the-as clm s5-0)) #t) ((type-type? (-> (the-as basic s5-0) type) function) - ((the-as (function object symbol symbol) s5-0) (-> arg0 parm0) (the-as symbol (-> arg0 parm1-basic))) - ) - ) - ) - ) + ((the-as (function object symbol symbol) s5-0) (-> arg0 parm0) (the-as symbol (-> arg0 parm1-basic))))))) (defbehavior cam-layout-function-call cam-layout ((arg0 symbol) (arg1 string) (arg2 int) (arg3 basic)) (let ((gp-0 (-> arg0 value))) (cond - ((not gp-0) - ) - ((zero? gp-0) - ) - ((type-type? (-> (the-as basic gp-0) type) function) - ((the-as (function string int basic none) gp-0) arg1 arg2 arg3) - ) - ) - ) - #f - ) + ((not gp-0)) + ((zero? gp-0)) + ((type-type? (-> (the-as basic gp-0) type) function) ((the-as (function string int basic none) gp-0) arg1 arg2 arg3)))) + #f) (defbehavior cam-layout-do-menu cam-layout ((arg0 clm)) (set! *camera-layout-message-ypos* 30) (+! (-> *CAM_LAYOUT-bank* spline-t) (-> *CAM_LAYOUT-bank* spline-step)) - (if (< 1.01 (-> *CAM_LAYOUT-bank* spline-t)) - (set! (-> *CAM_LAYOUT-bank* spline-t) -0.09) - ) + (if (< 1.01 (-> *CAM_LAYOUT-bank* spline-t)) (set! (-> *CAM_LAYOUT-bank* spline-t) -0.09)) (+! (-> *CAM_LAYOUT-bank* intro-t) (-> *CAM_LAYOUT-bank* intro-step)) - (if (< 1.01 (-> *CAM_LAYOUT-bank* intro-t)) - (set! (-> *CAM_LAYOUT-bank* intro-t) -0.09) - ) + (if (< 1.01 (-> *CAM_LAYOUT-bank* intro-t)) (set! (-> *CAM_LAYOUT-bank* intro-t) -0.09)) (let ((s5-0 30)) (let ((s4-0 (cam-state-from-entity (-> self cam-entity)))) (set! *camera-read-analog* #t) (let ((s3-0 (-> self cam-entity))) (clear *temp-string*) - (if s3-0 - (format *temp-string* "\"~S\"~%" (res-lump-struct s3-0 'name structure :time (the-as float -1000000000.0))) - ) - ) - (if (not s4-0) - (format *temp-string* "no cameras in this level") - (format *temp-string* "~S" (-> s4-0 name)) - ) - ) + (if s3-0 (format *temp-string* "\"~S\"~%" (res-lump-struct s3-0 'name structure :time (the-as float -1000000000.0))))) + (if (not s4-0) (format *temp-string* "no cameras in this level") (format *temp-string* "~S" (-> s4-0 name)))) (cam-layout-print 320 s5-0 *temp-string*) (let ((s5-1 (+ s5-0 16))) (clear *temp-string*) @@ -3365,121 +2622,65 @@ (let ((s3-1 (the-as clm-list (-> arg0 items s5-2)))) (dotimes (s2-1 (-> s3-1 items length)) (clear *temp-string*) - (format - *temp-string* - "~S~S" - (if (= s2-1 (-> s3-1 cur-list-item)) - "> " - " " - ) - (-> s3-1 items s2-1 description) - ) - (cam-layout-function-call - (-> s3-1 items s2-1 val-func) - *temp-string* - (-> s3-1 items s2-1 val-parm0) - (-> s3-1 items s2-1 val-parm1-basic) - ) + (format *temp-string* "~S~S" (if (= s2-1 (-> s3-1 cur-list-item)) "> " " ") (-> s3-1 items s2-1 description)) + (cam-layout-function-call (-> s3-1 items s2-1 val-func) + *temp-string* + (-> s3-1 items s2-1 val-parm0) + (-> s3-1 items s2-1 val-parm1-basic)) (cam-layout-print 320 s4-2 *temp-string*) - (+! s4-2 8) - ) - ) + (+! s4-2 8))) (clear *temp-string*) (format *temp-string* "------------") (cam-layout-print 320 s4-2 *temp-string*) - (set! s4-1 (+ s4-2 8)) - ) - ) - ((and (not (-> self cam-entity)) (logtest? (-> (the-as clm-item (-> arg0 items s5-2)) action options) 2)) - ) - ((logtest? (-> (the-as clm-item (-> arg0 items s5-2)) action options) 4) - ) + (set! s4-1 (+ s4-2 8)))) + ((and (not (-> self cam-entity)) (logtest? (-> (the-as clm-item (-> arg0 items s5-2)) action options) 2))) + ((logtest? (-> (the-as clm-item (-> arg0 items s5-2)) action options) 4)) (else - (let ((s3-2 (-> arg0 items s5-2))) - (clear *temp-string*) - (format - *temp-string* - "~S: ~A~%" - (-> (the-as clm-item s3-2) description) - (if (logtest? (-> (the-as clm-item (-> arg0 items s5-2)) action options) 8) - 'default - (-> (the-as clm-item s3-2) button-symbol) - ) - ) - ) - (cam-layout-print 320 s4-1 *temp-string*) - (+! s4-1 8) - ) - ) - ) - ) - ) - ) - (if (= *master-mode* 'menu) - (goto cfg-65) - ) + (let ((s3-2 (-> arg0 items s5-2))) + (clear *temp-string*) + (format *temp-string* + "~S: ~A~%" + (-> (the-as clm-item s3-2) description) + (if (logtest? (-> (the-as clm-item (-> arg0 items s5-2)) action options) 8) + 'default + (-> (the-as clm-item s3-2) button-symbol)))) + (cam-layout-print 320 s4-1 *temp-string*) + (+! s4-1 8))))))) + (if (= *master-mode* 'menu) (goto cfg-65)) (dotimes (s5-3 (-> arg0 items length)) (cond ((type-type? (-> arg0 items s5-3 type) clm-list) (let ((s4-3 (-> arg0 items s5-3)) - (s3-3 0) - ) + (s3-3 0)) (if (-> (the-as clm-list s4-3) tracker) - (set! (-> (the-as clm-list s4-3) tracker value) - (-> (the-as clm-list s4-3) items (-> (the-as clm-list s4-3) cur-list-item) track-val) - ) - ) + (set! (-> (the-as clm-list s4-3) tracker value) + (-> (the-as clm-list s4-3) items (-> (the-as clm-list s4-3) cur-list-item) track-val))) (dotimes (s2-2 (-> (the-as clm-list s4-3) items (-> (the-as clm-list s4-3) cur-list-item) actions length)) - (if (cam-layout-do-action - (-> (the-as clm-list s4-3) items (-> (the-as clm-list s4-3) cur-list-item) actions s2-2) - ) - (goto cfg-65) - ) - ) + (if (cam-layout-do-action (-> (the-as clm-list s4-3) items (-> (the-as clm-list s4-3) cur-list-item) actions s2-2)) + (goto cfg-65))) (cond - ((cpad-pressed? 0 down) - (set! s3-3 1) - ) - ((cpad-pressed? 0 right) - (set! s3-3 1) - ) - ((cpad-pressed? 0 up) - (set! s3-3 -1) - ) - ((cpad-pressed? 0 left) - (set! s3-3 -1) - ) - ) + ((cpad-pressed? 0 down) (set! s3-3 1)) + ((cpad-pressed? 0 right) (set! s3-3 1)) + ((cpad-pressed? 0 up) (set! s3-3 -1)) + ((cpad-pressed? 0 left) (set! s3-3 -1))) (when (nonzero? s3-3) (set! (-> (the-as clm-list s4-3) cur-list-item) - (mod (+ (-> (the-as clm-list s4-3) cur-list-item) s3-3) (-> (the-as clm-list s4-3) items length)) - ) + (mod (+ (-> (the-as clm-list s4-3) cur-list-item) s3-3) (-> (the-as clm-list s4-3) items length))) (while (< (-> (the-as clm-list s4-3) cur-list-item) 0) - (+! (-> (the-as clm-list s4-3) cur-list-item) (-> (the-as clm-list s4-3) items length)) - ) - (goto cfg-65) - ) - ) - ) - ((cam-layout-do-action (-> (the-as clm-item (-> arg0 items s5-3)) action)) - (goto cfg-65) - ) - ) - ) + (+! (-> (the-as clm-list s4-3) cur-list-item) (-> (the-as clm-list s4-3) items length))) + (goto cfg-65)))) + ((cam-layout-do-action (-> (the-as clm-item (-> arg0 items s5-3)) action)) (goto cfg-65)))) (label cfg-65) - (none) - ) + (none)) (defstate cam-layout-active (cam-layout) - :code (behavior () - (loop - (cam-layout-entity-info (the-as entity-actor (-> self cam-entity))) - (cam-layout-entity-volume-info) - (cam-layout-do-menu *clm*) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (cam-layout-entity-info (the-as entity-actor (-> self cam-entity))) + (cam-layout-entity-volume-info) + (cam-layout-do-menu *clm*) + (suspend)))) (defbehavior cam-layout-init cam-layout () (set! (-> self res-key) -1000000000.0) @@ -3492,51 +2693,30 @@ (+! (-> self num-entities) 1) (set! v1-2 a0-2) *camera-engine* - (set! a0-2 (-> a0-2 next0)) - ) - ) - ) + (set! a0-2 (-> a0-2 next0))))) (set! (-> self cur-entity) *last-cur-entity*) (clmf-next-entity 0) (set! *clm* *clm-select*) (go cam-layout-active) - (none) - ) + (none)) (defun cam-layout-stop () (set! *cam-layout* #f) - (kill-by-name 'cam-layout *active-pool*) - ) + (kill-by-name 'cam-layout *active-pool*)) (defun cam-layout-start () - (let ((a0-1 (new 'global 'file-stream "dd_next/caminfo/garbage" 'read))) - (file-stream-close a0-1) - ) + (let ((a0-1 (new 'global 'file-stream "dd_next/caminfo/garbage" 'read))) (file-stream-close a0-1)) (cond ((not *cam-layout*) (let ((v1-4 (process-spawn-function cam-layout cam-layout-init :from *camera-dead-pool*))) (cond - (v1-4 - (logclear! (-> v1-4 0 mask) (process-mask pause menu)) - (set! *cam-layout* #t) - (set! *camera-layout-blink* #f) - ) - (else - (format 0 "ERROR : no process available to start cam editing mode~%") - ) - ) - ) - ) - (else - (format 0 "ERROR : cam editing mode already started~%") - ) - ) + (v1-4 (logclear! (-> v1-4 0 mask) (process-mask pause menu)) (set! *cam-layout* #t) (set! *camera-layout-blink* #f)) + (else (format 0 "ERROR : no process available to start cam editing mode~%"))))) + (else (format 0 "ERROR : cam editing mode already started~%"))) *cam-layout* - (none) - ) + (none)) (defun cam-layout-restart () (cam-layout-stop) (cam-layout-start) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/camera/cam-master.gc b/goal_src/jak1/engine/camera/cam-master.gc index 5e3aa07d21..0386544382 100644 --- a/goal_src/jak1/engine/camera/cam-master.gc +++ b/goal_src/jak1/engine/camera/cam-master.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/projectiles-h.gc") (require "engine/physics/dynamics-h.gc") (require "engine/gfx/mood/weather-part.gc") @@ -9,10 +8,6 @@ (require "engine/collide/collide-mesh-h.gc") (require "engine/camera/camera.gc") -;; name: cam-master.gc -;; name in dgo: cam-master -;; dgos: GAME, ENGINE - ;; TODO - for basebutton ;; Needed here @@ -21,29 +16,26 @@ ;; DECOMP BEGINS (deftype camera-master-bank (basic) - ((onscreen-head-height meters) - (onscreen-foot-height meters) - (target-height meters) - (up-move-to-pitch-ratio-in-air float) - (down-move-to-pitch-ratio-in-air float) - (up-move-to-pitch-on-ground float) - (down-move-to-pitch-on-ground float) - (pitch-off-blend float) - ) - ) - + ((onscreen-head-height meters) + (onscreen-foot-height meters) + (target-height meters) + (up-move-to-pitch-ratio-in-air float) + (down-move-to-pitch-ratio-in-air float) + (up-move-to-pitch-on-ground float) + (down-move-to-pitch-on-ground float) + (pitch-off-blend float))) -(define *CAMERA_MASTER-bank* (new 'static 'camera-master-bank - :onscreen-head-height (meters 2.65) - :onscreen-foot-height (meters -0.5) - :target-height (meters 2.15) - :up-move-to-pitch-ratio-in-air 1.0 - :down-move-to-pitch-ratio-in-air 0.5 - :up-move-to-pitch-on-ground 0.9 - :down-move-to-pitch-on-ground 0.9 - :pitch-off-blend 0.5 - ) - ) +(define *CAMERA_MASTER-bank* + (new 'static + 'camera-master-bank + :onscreen-head-height (meters 2.65) + :onscreen-foot-height (meters -0.5) + :target-height (meters 2.15) + :up-move-to-pitch-ratio-in-air 1.0 + :down-move-to-pitch-ratio-in-air 0.5 + :up-move-to-pitch-on-ground 0.9 + :down-move-to-pitch-on-ground 0.9 + :pitch-off-blend 0.5)) (defbehavior reset-follow camera-master () (set! (-> self tpos-old quad) (-> (target-cam-pos) quad)) @@ -51,8 +43,7 @@ (set! (-> self tpos-old-adj quad) (-> self tpos-old quad)) (set! (-> self tpos-curr-adj quad) (-> self tpos-old quad)) (set! (-> self tpos-tgt quad) (-> self tpos-old quad)) - (set! (-> self upspeed) 0.0) - ) + (set! (-> self upspeed) 0.0)) (defbehavior reset-target-tracking camera-master () (set! (-> self tpos-old quad) (-> (target-cam-pos) quad)) @@ -69,67 +60,42 @@ (set! (-> self target-height) (-> *CAMERA_MASTER-bank* target-height)) (set! (-> self on-ground) (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - ) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))))) (set! (-> self on-pole) #f) (set! (-> self ease-t) 1.0) (set! (-> self string-max target y) (-> self stringMaxHeight)) (set! (-> self string-max target z) (-> self stringMaxLength)) (set! (-> self string-push-z) (fmax (-> self string-min value z) (-> *CAMERA-bank* default-string-push-z))) (cond - ((time-elapsed? - (the-as time-frame (if *target* - (the-as int (-> *target* neck notice-time)) - 0 - ) - ) - (-> *CAMERA-bank* attack-timeout) - ) - (set! (-> self being-attacked) #f) - ) + ((time-elapsed? (the-as time-frame (if *target* (the-as int (-> *target* neck notice-time)) 0)) + (-> *CAMERA-bank* attack-timeout)) + (set! (-> self being-attacked) #f)) (else - (set-time! (-> self attack-start)) - (set! (-> self being-attacked) #t) - (when (and (not (logtest? (-> self master-options) 64)) - (or (!= (-> last-try-to-look-at-data horz) 0.0) (!= (-> last-try-to-look-at-data vert) 0.0)) - ) - (set! (-> self string-max target y) (fmax (-> self string-max target y) (-> last-try-to-look-at-data vert))) - (set! (-> self string-max target z) (fmax (-> self string-max target z) (-> last-try-to-look-at-data horz))) - (set! (-> self string-push-z) (fmax (-> self string-push-z) (-> self string-max target z))) - ) - ) - ) + (set-time! (-> self attack-start)) + (set! (-> self being-attacked) #t) + (when (and (not (logtest? (-> self master-options) 64)) + (or (!= (-> last-try-to-look-at-data horz) 0.0) (!= (-> last-try-to-look-at-data vert) 0.0))) + (set! (-> self string-max target y) (fmax (-> self string-max target y) (-> last-try-to-look-at-data vert))) + (set! (-> self string-max target z) (fmax (-> self string-max target z) (-> last-try-to-look-at-data horz))) + (set! (-> self string-push-z) (fmax (-> self string-push-z) (-> self string-max target z)))))) (cond ((and (logtest? (-> *target* water flags) (water-flags wt12)) - (not (logtest? (-> *target* water flags) (water-flags wt04))) - ) - (set! (-> self under-water) 2) - ) - (else - (set! (-> self under-water) 0) - 0 - ) - ) + (not (logtest? (-> *target* water flags) (water-flags wt04)))) + (set! (-> self under-water) 2)) + (else (set! (-> self under-water) 0) 0)) (let ((gp-1 (new 'stack-no-clear 'vector))) (vector--float*! gp-1 (-> self tpos-curr-adj) (-> self local-down) (-> self target-height)) - (the-as symbol (tracking-spline-method-10 (-> self target-spline) gp-1)) - ) - ) + (the-as symbol (tracking-spline-method-10 (-> self target-spline) gp-1)))) (defbehavior reset-drawable-follow camera-master () (let ((v1-2 (the-as target (-> self drawable-target process 0)))) (if (nonzero? (-> v1-2 node-list)) - (vector<-cspace! (-> self tpos-old) (-> v1-2 node-list data (-> self which-bone))) - (set! (-> self tpos-old quad) (-> v1-2 control trans quad)) - ) - ) + (vector<-cspace! (-> self tpos-old) (-> v1-2 node-list data (-> self which-bone))) + (set! (-> self tpos-old quad) (-> v1-2 control trans quad)))) (set! (-> self tpos-curr quad) (-> self tpos-old quad)) (set! (-> self tpos-old-adj quad) (-> self tpos-old quad)) (set! (-> self tpos-curr-adj quad) (-> self tpos-old quad)) - (set! (-> self upspeed) 0.0) - ) + (set! (-> self upspeed) 0.0)) (defbehavior reset-drawable-tracking camera-master () (let ((gp-0 (the-as target (-> self drawable-target process 0)))) @@ -141,45 +107,35 @@ (a0-4 (-> a3-0 vector 0 quad)) (a1-4 (-> a3-0 vector 1 quad)) (a2-0 (-> a3-0 vector 2 quad)) - (a3-1 (-> a3-0 vector 3 quad)) - ) + (a3-1 (-> a3-0 vector 3 quad))) (set! (-> v1-6 vector 0 quad) a0-4) (set! (-> v1-6 vector 1 quad) a1-4) (set! (-> v1-6 vector 2 quad) a2-0) - (set! (-> v1-6 vector 3 quad) a3-1) - ) + (set! (-> v1-6 vector 3 quad) a3-1)) (set! (-> self tgt-rot-mat vector 3 quad) (the-as uint128 0)) (let* ((v1-8 (-> self tgt-face-mat)) (a3-2 (-> self tgt-rot-mat)) (a0-5 (-> a3-2 vector 0 quad)) (a1-5 (-> a3-2 vector 1 quad)) (a2-1 (-> a3-2 vector 2 quad)) - (a3-3 (-> a3-2 vector 3 quad)) - ) + (a3-3 (-> a3-2 vector 3 quad))) (set! (-> v1-8 vector 0 quad) a0-5) (set! (-> v1-8 vector 1 quad) a1-5) (set! (-> v1-8 vector 2 quad) a2-1) - (set! (-> v1-8 vector 3 quad) a3-3) - ) - ) + (set! (-> v1-8 vector 3 quad) a3-3))) (else - (set! (-> self tpos-old quad) (-> gp-0 control trans quad)) - (quaternion->matrix (-> self tgt-rot-mat) (-> gp-0 control quat)) - (let* ((v1-11 (-> self tgt-face-mat)) - (a3-4 (-> self tgt-rot-mat)) - (a0-10 (-> a3-4 vector 0 quad)) - (a1-7 (-> a3-4 vector 1 quad)) - (a2-2 (-> a3-4 vector 2 quad)) - (a3-5 (-> a3-4 vector 3 quad)) - ) - (set! (-> v1-11 vector 0 quad) a0-10) - (set! (-> v1-11 vector 1 quad) a1-7) - (set! (-> v1-11 vector 2 quad) a2-2) - (set! (-> v1-11 vector 3 quad) a3-5) - ) - ) - ) - ) + (set! (-> self tpos-old quad) (-> gp-0 control trans quad)) + (quaternion->matrix (-> self tgt-rot-mat) (-> gp-0 control quat)) + (let* ((v1-11 (-> self tgt-face-mat)) + (a3-4 (-> self tgt-rot-mat)) + (a0-10 (-> a3-4 vector 0 quad)) + (a1-7 (-> a3-4 vector 1 quad)) + (a2-2 (-> a3-4 vector 2 quad)) + (a3-5 (-> a3-4 vector 3 quad))) + (set! (-> v1-11 vector 0 quad) a0-10) + (set! (-> v1-11 vector 1 quad) a1-7) + (set! (-> v1-11 vector 2 quad) a2-2) + (set! (-> v1-11 vector 3 quad) a3-5))))) (set! (-> self tpos-curr quad) (-> self tpos-old quad)) (set! (-> self tpos-old-adj quad) (-> self tpos-old quad)) (set! (-> self tpos-curr-adj quad) (-> self tpos-old quad)) @@ -198,24 +154,18 @@ (set! (-> self under-water) 0) (let ((gp-1 (new 'stack-no-clear 'vector))) (vector--float*! gp-1 (-> self tpos-curr-adj) (-> self local-down) (-> self target-height)) - (the-as symbol (tracking-spline-method-10 (-> self target-spline) gp-1)) - ) - ) + (the-as symbol (tracking-spline-method-10 (-> self target-spline) gp-1)))) (defbehavior master-track-target camera-master () (cond ((and (logtest? (-> self master-options) 2) (!= (-> self drawable-target) #f) - (not (handle->process (-> self drawable-target))) - ) + (not (handle->process (-> self drawable-target)))) (logand! (-> self master-options) -3) - (set! (-> self drawable-target) (the-as handle #f)) - ) + (set! (-> self drawable-target) (the-as handle #f))) ((and (logtest? (-> self master-options) 2) (handle->process (-> self drawable-target))) (let ((gp-0 (-> self drawable-target process 0))) - (if (paused?) - (return (the-as symbol #f)) - ) + (if (paused?) (return (the-as symbol #f))) (set! (-> self tpos-old quad) (-> self tpos-curr quad)) (set! (-> self tpos-old-adj quad) (-> self tpos-curr-adj quad)) (cond @@ -225,343 +175,194 @@ (a0-17 (-> a3-0 vector 0 quad)) (a1-4 (-> a3-0 vector 1 quad)) (a2-0 (-> a3-0 vector 2 quad)) - (a3-1 (-> a3-0 vector 3 quad)) - ) + (a3-1 (-> a3-0 vector 3 quad))) (set! (-> v1-24 vector 0 quad) a0-17) (set! (-> v1-24 vector 1 quad) a1-4) (set! (-> v1-24 vector 2 quad) a2-0) - (set! (-> v1-24 vector 3 quad) a3-1) - ) + (set! (-> v1-24 vector 3 quad) a3-1)) (set! (-> self tgt-rot-mat vector 3 quad) (the-as uint128 0)) (let* ((a2-1 (-> self tgt-face-mat)) (a3-2 (-> self tgt-rot-mat)) (v1-26 (-> a3-2 vector 0 quad)) (a0-18 (-> a3-2 vector 1 quad)) (a1-5 (-> a3-2 vector 2 quad)) - (a3-3 (-> a3-2 vector 3 quad)) - ) + (a3-3 (-> a3-2 vector 3 quad))) (set! (-> a2-1 vector 0 quad) v1-26) (set! (-> a2-1 vector 1 quad) a0-18) (set! (-> a2-1 vector 2 quad) a1-5) - (set! (-> a2-1 vector 3 quad) a3-3) - ) - (vector<-cspace! (-> self tpos-curr) (-> (the-as target gp-0) node-list data (-> self which-bone))) - ) + (set! (-> a2-1 vector 3 quad) a3-3)) + (vector<-cspace! (-> self tpos-curr) (-> (the-as target gp-0) node-list data (-> self which-bone)))) (else - (quaternion->matrix (-> self tgt-rot-mat) (-> (the-as target gp-0) control quat)) - (let* ((a2-3 (-> self tgt-face-mat)) - (a3-4 (-> self tgt-rot-mat)) - (v1-31 (-> a3-4 vector 0 quad)) - (a0-21 (-> a3-4 vector 1 quad)) - (a1-9 (-> a3-4 vector 2 quad)) - (a3-5 (-> a3-4 vector 3 quad)) - ) - (set! (-> a2-3 vector 0 quad) v1-31) - (set! (-> a2-3 vector 1 quad) a0-21) - (set! (-> a2-3 vector 2 quad) a1-9) - (set! (-> a2-3 vector 3 quad) a3-5) - ) - ) - ) - ) + (quaternion->matrix (-> self tgt-rot-mat) (-> (the-as target gp-0) control quat)) + (let* ((a2-3 (-> self tgt-face-mat)) + (a3-4 (-> self tgt-rot-mat)) + (v1-31 (-> a3-4 vector 0 quad)) + (a0-21 (-> a3-4 vector 1 quad)) + (a1-9 (-> a3-4 vector 2 quad)) + (a3-5 (-> a3-4 vector 3 quad))) + (set! (-> a2-3 vector 0 quad) v1-31) + (set! (-> a2-3 vector 1 quad) a0-21) + (set! (-> a2-3 vector 2 quad) a1-9) + (set! (-> a2-3 vector 3 quad) a3-5))))) (let ((v1-32 (new-stack-vector0))) 0.0 (vector-! v1-32 (-> self tpos-curr-adj) (-> self tpos-curr)) (let* ((f0-2 (vector-dot v1-32 (-> self local-down))) (f0-3 (if (< 0.0 f0-2) - (* f0-2 (-> *CAMERA_MASTER-bank* up-move-to-pitch-on-ground)) - (* f0-2 (-> *CAMERA_MASTER-bank* down-move-to-pitch-on-ground)) - ) - ) - ) - (vector+float*! (-> self tpos-curr-adj) (-> self tpos-curr) (-> self local-down) f0-3) - ) - ) + (* f0-2 (-> *CAMERA_MASTER-bank* up-move-to-pitch-on-ground)) + (* f0-2 (-> *CAMERA_MASTER-bank* down-move-to-pitch-on-ground))))) + (vector+float*! (-> self tpos-curr-adj) (-> self tpos-curr) (-> self local-down) f0-3))) (let ((gp-1 (new 'stack-no-clear 'vector))) (vector--float*! gp-1 (-> self tpos-curr-adj) (-> self local-down) (-> self target-height)) - (tracking-spline-method-17 (-> self target-spline) gp-1 2048.0 0.0 #f) - ) - (tracking-spline-method-22 (-> self target-spline) 40960.0) - ) - ((handle->process (-> self drawable-target)) - (logior! (-> self master-options) 2) - (reset-drawable-tracking) - ) - ) - (the-as - symbol - (cond - ((handle->process (-> self drawable-target)) - #f - ) - ((and *target* (logtest? (-> self master-options) 2)) - (if (paused?) - (return (the-as symbol #f)) - ) - (cond - ((time-elapsed? - (the-as time-frame (if *target* - (the-as int (-> *target* neck notice-time)) - 0 - ) - ) - (-> *CAMERA-bank* attack-timeout) - ) - (set! (-> self being-attacked) #f) - ) - (else - (if (not (-> self being-attacked)) - (set-time! (-> self attack-start)) - ) - (set! (-> self being-attacked) #t) - (when (and (not (logtest? (-> self master-options) 64)) - (or (!= (-> last-try-to-look-at-data horz) 0.0) (!= (-> last-try-to-look-at-data vert) 0.0)) - ) - (set! (-> self string-max target y) (fmax (-> self string-max target y) (-> last-try-to-look-at-data vert))) - (set! (-> self string-max target z) (fmax (-> self string-max target z) (-> last-try-to-look-at-data horz))) - (set! (-> self string-push-z) (fmax (-> self string-push-z) (-> self string-max target z))) - ) - ) - ) - (cond - ((and (logtest? (-> *target* water flags) (water-flags wt12)) - (not (logtest? (-> *target* water flags) (water-flags wt04))) - ) - (set! (-> self under-water) 2) - ) - ((> (-> self under-water) 0) - (+! (-> self under-water) -1) - ) - ) - (set! (-> self tpos-old quad) (-> self tpos-curr quad)) - (set! (-> self tpos-old-adj quad) (-> self tpos-curr-adj quad)) - (quaternion->matrix (-> self tgt-rot-mat) (-> *target* control dir-targ)) - (quaternion->matrix (-> self tgt-face-mat) (-> *target* control unknown-quaternion00)) - (cond - ((< (-> self ease-t) 1.0) - (new 'stack-no-clear 'vector) + (tracking-spline-method-17 (-> self target-spline) gp-1 2048.0 0.0 #f)) + (tracking-spline-method-22 (-> self target-spline) 40960.0)) + ((handle->process (-> self drawable-target)) (logior! (-> self master-options) 2) (reset-drawable-tracking))) + (the-as symbol (cond - ((logtest? (-> self master-options) 32) - (vector-lerp! - (-> self tpos-curr) - (-> self ease-from) - (-> self ease-to) - (parameter-ease-sin-clamp (-> self ease-t)) - ) - (logand! (-> self master-options) -33) - ) - (else - (vector-lerp! - (-> self tpos-curr) - (-> self ease-from) - (target-cam-pos) - (parameter-ease-sin-clamp (-> self ease-t)) - ) - ) - ) - (+! (-> self ease-t) (-> self ease-step)) - ) - (else - (set! (-> self tpos-curr quad) (-> (target-cam-pos) quad)) - ) - ) - (when (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-cam)) - (if *display-cam-los-debug* - (format *stdcon* "ride edge~%") - ) - (let ((s4-2 (new 'stack-no-clear 'collide-tri-result)) - (gp-5 (new 'stack-no-clear 'vector)) - (s5-2 (new 'stack-no-clear 'vector)) - ) - (vector--float*! s5-2 (-> self tpos-curr) (-> self local-down) (-> self target-height)) - (vector-float*! gp-5 (-> self tgt-rot-mat vector 2) 4915.2) - (vector-! s5-2 s5-2 gp-5) - (let ((f0-20 - (fill-and-probe-using-line-sphere - *collide-cache* - s5-2 - gp-5 - 4300.8 - (collide-kind background) - (the-as process #f) - s4-2 - (new 'static 'pat-surface :nocamera #x1 :nolineofsight #x1) - ) - ) - ) - (if (and (< 0.0 f0-20) (< f0-20 1.0)) - (vector+float*! (-> self tpos-curr) (-> self tpos-curr) gp-5 (+ -1.0 f0-20)) - ) - ) - ) - ) - (set! (-> self on-ground) - (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - ) - (let ((gp-6 (new-stack-vector0))) - 0.0 - (cond - ((and (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (!= (-> *target* control unknown-surface00 name) 'launch-jump) - ) - (if *display-cam-los-debug* - (format *stdcon* "air tracking~%") - ) - (vector+float*! (-> self tpos-curr-adj) (-> self tpos-curr-adj) (-> self local-down) (-> self upspeed)) - (vector+float*! (-> self tpos-tgt) (-> self tpos-tgt) (-> self local-down) (-> self upspeed)) - (vector-! gp-6 (-> self tpos-curr) (-> self tpos-tgt)) - (let ((f30-0 (vector-dot gp-6 (-> self local-down)))) - (vector--float*! gp-6 gp-6 (-> self local-down) f30-0) - (if (< 0.0 f30-0) - (set! (-> self upspeed) (* 0.5 (-> self upspeed))) - ) - (vector+! (-> self tpos-tgt) (-> self tpos-tgt) gp-6) - (let ((f0-30 (* 0.05 f30-0))) - (vector+float*! (-> self tpos-tgt) (-> self tpos-tgt) (-> self local-down) f0-30) - ) - ) - (vector-! gp-6 (-> self tpos-curr-adj) (-> self tpos-tgt)) - (let* ((f0-32 (vector-dot gp-6 (-> self local-down))) - (f0-33 (if (< 0.0 f0-32) - (* f0-32 (-> *CAMERA_MASTER-bank* up-move-to-pitch-ratio-in-air)) - (* f0-32 (-> *CAMERA_MASTER-bank* down-move-to-pitch-ratio-in-air)) - ) - ) - ) - (vector+float*! (-> self tpos-curr-adj) (-> self tpos-tgt) (-> self local-down) f0-33) - ) - (vector-! gp-6 (-> *target* control shadow-pos) (-> self tpos-curr-adj)) - (let* ((f0-35 (vector-dot gp-6 (-> self local-down))) - (f0-36 (* 0.03 f0-35)) - ) - (if (and (< f0-36 0.0) (< f0-36 (-> self upspeed))) - (set! (-> self upspeed) f0-36) - ) - ) - ) - (else - (if *display-cam-los-debug* - (format *stdcon* "ground tracking~%") - ) - (vector-! gp-6 (-> self tpos-curr) (-> self tpos-old)) - (let ((f0-38 (vector-dot gp-6 (-> self local-down)))) + ((handle->process (-> self drawable-target)) #f) + ((and *target* (logtest? (-> self master-options) 2)) + (if (paused?) (return (the-as symbol #f))) + (cond + ((time-elapsed? (the-as time-frame (if *target* (the-as int (-> *target* neck notice-time)) 0)) + (-> *CAMERA-bank* attack-timeout)) + (set! (-> self being-attacked) #f)) + (else + (if (not (-> self being-attacked)) (set-time! (-> self attack-start))) + (set! (-> self being-attacked) #t) + (when (and (not (logtest? (-> self master-options) 64)) + (or (!= (-> last-try-to-look-at-data horz) 0.0) (!= (-> last-try-to-look-at-data vert) 0.0))) + (set! (-> self string-max target y) (fmax (-> self string-max target y) (-> last-try-to-look-at-data vert))) + (set! (-> self string-max target z) (fmax (-> self string-max target z) (-> last-try-to-look-at-data horz))) + (set! (-> self string-push-z) (fmax (-> self string-push-z) (-> self string-max target z)))))) + (cond + ((and (logtest? (-> *target* water flags) (water-flags wt12)) + (not (logtest? (-> *target* water flags) (water-flags wt04)))) + (set! (-> self under-water) 2)) + ((> (-> self under-water) 0) (+! (-> self under-water) -1))) + (set! (-> self tpos-old quad) (-> self tpos-curr quad)) + (set! (-> self tpos-old-adj quad) (-> self tpos-curr-adj quad)) + (quaternion->matrix (-> self tgt-rot-mat) (-> *target* control dir-targ)) + (quaternion->matrix (-> self tgt-face-mat) (-> *target* control unknown-quaternion00)) + (cond + ((< (-> self ease-t) 1.0) + (new 'stack-no-clear 'vector) + (cond + ((logtest? (-> self master-options) 32) + (vector-lerp! (-> self tpos-curr) (-> self ease-from) (-> self ease-to) (parameter-ease-sin-clamp (-> self ease-t))) + (logand! (-> self master-options) -33)) + (else + (vector-lerp! (-> self tpos-curr) (-> self ease-from) (target-cam-pos) (parameter-ease-sin-clamp (-> self ease-t))))) + (+! (-> self ease-t) (-> self ease-step))) + (else (set! (-> self tpos-curr quad) (-> (target-cam-pos) quad)))) + (when (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-cam)) + (if *display-cam-los-debug* (format *stdcon* "ride edge~%")) + (let ((s4-2 (new 'stack-no-clear 'collide-tri-result)) + (gp-5 (new 'stack-no-clear 'vector)) + (s5-2 (new 'stack-no-clear 'vector))) + (vector--float*! s5-2 (-> self tpos-curr) (-> self local-down) (-> self target-height)) + (vector-float*! gp-5 (-> self tgt-rot-mat vector 2) 4915.2) + (vector-! s5-2 s5-2 gp-5) + (let ((f0-20 (fill-and-probe-using-line-sphere *collide-cache* + s5-2 + gp-5 + 4300.8 + (collide-kind background) + (the-as process #f) + s4-2 + (new 'static 'pat-surface :nocamera #x1 :nolineofsight #x1)))) + (if (and (< 0.0 f0-20) (< f0-20 1.0)) (vector+float*! (-> self tpos-curr) (-> self tpos-curr) gp-5 (+ -1.0 f0-20)))))) + (set! (-> self on-ground) + (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))))) + (let ((gp-6 (new-stack-vector0))) + 0.0 (cond - ((logtest? (-> *target* water flags) (water-flags wt09)) - (set! (-> self upspeed) 0.0) - ) - ((< 0.0 f0-38) - (set! (-> self upspeed) 0.0) - ) + ((and (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (!= (-> *target* control unknown-surface00 name) 'launch-jump)) + (if *display-cam-los-debug* (format *stdcon* "air tracking~%")) + (vector+float*! (-> self tpos-curr-adj) (-> self tpos-curr-adj) (-> self local-down) (-> self upspeed)) + (vector+float*! (-> self tpos-tgt) (-> self tpos-tgt) (-> self local-down) (-> self upspeed)) + (vector-! gp-6 (-> self tpos-curr) (-> self tpos-tgt)) + (let ((f30-0 (vector-dot gp-6 (-> self local-down)))) + (vector--float*! gp-6 gp-6 (-> self local-down) f30-0) + (if (< 0.0 f30-0) (set! (-> self upspeed) (* 0.5 (-> self upspeed)))) + (vector+! (-> self tpos-tgt) (-> self tpos-tgt) gp-6) + (let ((f0-30 (* 0.05 f30-0))) (vector+float*! (-> self tpos-tgt) (-> self tpos-tgt) (-> self local-down) f0-30))) + (vector-! gp-6 (-> self tpos-curr-adj) (-> self tpos-tgt)) + (let* ((f0-32 (vector-dot gp-6 (-> self local-down))) + (f0-33 (if (< 0.0 f0-32) + (* f0-32 (-> *CAMERA_MASTER-bank* up-move-to-pitch-ratio-in-air)) + (* f0-32 (-> *CAMERA_MASTER-bank* down-move-to-pitch-ratio-in-air))))) + (vector+float*! (-> self tpos-curr-adj) (-> self tpos-tgt) (-> self local-down) f0-33)) + (vector-! gp-6 (-> *target* control shadow-pos) (-> self tpos-curr-adj)) + (let* ((f0-35 (vector-dot gp-6 (-> self local-down))) + (f0-36 (* 0.03 f0-35))) + (if (and (< f0-36 0.0) (< f0-36 (-> self upspeed))) (set! (-> self upspeed) f0-36)))) (else - (set! (-> self upspeed) f0-38) - ) - ) - ) - (set! (-> self tpos-tgt quad) (-> self tpos-curr quad)) - (vector-! gp-6 (-> self tpos-curr-adj) (-> self tpos-curr)) - (let* ((f0-42 (vector-dot gp-6 (-> self local-down))) - (f0-43 (if (< 0.0 f0-42) - (* f0-42 (-> *CAMERA_MASTER-bank* up-move-to-pitch-on-ground)) - (* f0-42 (-> *CAMERA_MASTER-bank* down-move-to-pitch-on-ground)) - ) - ) - ) - (vector+float*! (-> self tpos-curr-adj) (-> self tpos-curr) (-> self local-down) f0-43) - ) - ) - ) - ) - (if (not (logtest? (-> self slave-options) 16)) - (reset-follow) - ) - (let ((v1-196 (-> *target* water flags))) - (when (and (logtest? v1-196 (water-flags wt09)) (logtest? v1-196 (water-flags wt11 wt12))) - (let ((f0-45 (- (-> *target* water base-height) (-> self target-height)))) - (if (< (-> self tpos-curr-adj y) f0-45) - (set! (-> self tpos-curr-adj y) f0-45) - ) - ) - ) - ) - (vector+! (-> self pitch-off) (-> self pitch-off) (-> self tpos-curr)) - (vector-! (-> self pitch-off) (-> self pitch-off) (-> self tpos-old)) - (vector-float*! (-> self pitch-off) (-> self pitch-off) (-> *CAMERA_MASTER-bank* pitch-off-blend)) - (let ((gp-7 (new 'stack-no-clear 'vector))) - (vector--float*! gp-7 (-> self tpos-curr-adj) (-> self local-down) (-> self target-height)) - (let ((v1-207 (new 'stack-no-clear 'vector))) - 0.0 - (vector-! v1-207 (-> *target* control shadow-pos) gp-7) - (let* ((f0-50 (vector-dot v1-207 (-> self local-down))) - (f0-51 (+ -4096.0 f0-50)) - ) - (if (< f0-51 0.0) - (vector+float*! gp-7 gp-7 (-> self local-down) f0-51) - ) - ) - ) - (tracking-spline-method-17 (-> self target-spline) gp-7 2048.0 0.0 #f) - ) - (the-as symbol (tracking-spline-method-22 (-> self target-spline) 40960.0)) - ) - (*target* - (logior! (-> self master-options) 2) - (reset-target-tracking) - ) - ((logtest? (-> self master-options) 2) - (let ((v0-1 (the-as symbol (logand -3 (-> self master-options))))) - (set! (-> self master-options) (the-as uint v0-1)) - v0-1 - ) - ) - ) - ) - ) + (if *display-cam-los-debug* (format *stdcon* "ground tracking~%")) + (vector-! gp-6 (-> self tpos-curr) (-> self tpos-old)) + (let ((f0-38 (vector-dot gp-6 (-> self local-down)))) + (cond + ((logtest? (-> *target* water flags) (water-flags wt09)) (set! (-> self upspeed) 0.0)) + ((< 0.0 f0-38) (set! (-> self upspeed) 0.0)) + (else (set! (-> self upspeed) f0-38)))) + (set! (-> self tpos-tgt quad) (-> self tpos-curr quad)) + (vector-! gp-6 (-> self tpos-curr-adj) (-> self tpos-curr)) + (let* ((f0-42 (vector-dot gp-6 (-> self local-down))) + (f0-43 (if (< 0.0 f0-42) + (* f0-42 (-> *CAMERA_MASTER-bank* up-move-to-pitch-on-ground)) + (* f0-42 (-> *CAMERA_MASTER-bank* down-move-to-pitch-on-ground))))) + (vector+float*! (-> self tpos-curr-adj) (-> self tpos-curr) (-> self local-down) f0-43))))) + (if (not (logtest? (-> self slave-options) 16)) (reset-follow)) + (let ((v1-196 (-> *target* water flags))) + (when (and (logtest? v1-196 (water-flags wt09)) (logtest? v1-196 (water-flags wt11 wt12))) + (let ((f0-45 (- (-> *target* water base-height) (-> self target-height)))) + (if (< (-> self tpos-curr-adj y) f0-45) (set! (-> self tpos-curr-adj y) f0-45))))) + (vector+! (-> self pitch-off) (-> self pitch-off) (-> self tpos-curr)) + (vector-! (-> self pitch-off) (-> self pitch-off) (-> self tpos-old)) + (vector-float*! (-> self pitch-off) (-> self pitch-off) (-> *CAMERA_MASTER-bank* pitch-off-blend)) + (let ((gp-7 (new 'stack-no-clear 'vector))) + (vector--float*! gp-7 (-> self tpos-curr-adj) (-> self local-down) (-> self target-height)) + (let ((v1-207 (new 'stack-no-clear 'vector))) + 0.0 + (vector-! v1-207 (-> *target* control shadow-pos) gp-7) + (let* ((f0-50 (vector-dot v1-207 (-> self local-down))) + (f0-51 (+ -4096.0 f0-50))) + (if (< f0-51 0.0) (vector+float*! gp-7 gp-7 (-> self local-down) f0-51)))) + (tracking-spline-method-17 (-> self target-spline) gp-7 2048.0 0.0 #f)) + (the-as symbol (tracking-spline-method-22 (-> self target-spline) 40960.0))) + (*target* (logior! (-> self master-options) 2) (reset-target-tracking)) + ((logtest? (-> self master-options) 2) + (let ((v0-1 (the-as symbol (logand -3 (-> self master-options))))) + (set! (-> self master-options) (the-as uint v0-1)) + v0-1))))) (defun in-cam-entity-volume? ((arg0 vector) (arg1 entity) (arg2 float) (arg3 symbol)) (local-vars (sv-16 res-tag)) (let ((s2-0 0)) (loop (set! sv-16 (new 'static 'res-tag)) - (let ((v1-1 (the-as object ((method-of-type res-lump get-property-data) - arg1 - arg3 - 'exact - (the float s2-0) - (the-as pointer #f) - (& sv-16) - *res-static-buf* - ) - ) - ) - ) + (let ((v1-1 (the-as object + ((method-of-type res-lump get-property-data) + arg1 + arg3 + 'exact + (the float s2-0) + (the-as pointer #f) + (& sv-16) + *res-static-buf*)))) (cond - ((not (the-as pointer v1-1)) - (return #f) - ) + ((not (the-as pointer v1-1)) (return #f)) (else - (dotimes (a0-2 (the-as int (-> sv-16 elt-count))) - (if (< arg2 (- (vector-dot arg0 (-> (the-as (inline-array vector) v1-1) a0-2)) - (-> (the-as (inline-array vector) v1-1) a0-2 w) - ) - ) - (goto cfg-12) - ) - ) - (return #t) - ) - ) - ) + (dotimes (a0-2 (the-as int (-> sv-16 elt-count))) + (if (< arg2 + (- (vector-dot arg0 (-> (the-as (inline-array vector) v1-1) a0-2)) (-> (the-as (inline-array vector) v1-1) a0-2 w))) + (goto cfg-12))) + (return #t)))) (label cfg-12) - (+! s2-0 1) - ) - ) - (the-as symbol #f) - ) + (+! s2-0 1))) + (the-as symbol #f)) (defbehavior master-unset-region camera-master () (when (-> self cam-entity) @@ -575,104 +376,61 @@ (send-event *camera* 'point-of-interest #f) (set! (-> *camera-combiner* tracking point-of-interest-blend target) 0.0) (if (not (send-event *camera* 'query-state *camera-base-mode*)) - (send-event *camera* 'change-state *camera-base-mode* (seconds 1.5)) - ) + (send-event *camera* 'change-state *camera-base-mode* (seconds 1.5))) (set! (-> *camera-combiner* tracking tilt-adjust target) (-> *CAMERA-bank* default-tilt-adjust)) - (send-event *camera* 'clear-slave-option #x10000) - ) - ) + (send-event *camera* 'clear-slave-option #x10000))) (defbehavior master-base-region camera-master ((arg0 entity)) (logior! (-> self master-options) 64) - (set! (-> self stringMinHeight) - (cam-slave-get-float arg0 'stringMinHeight (-> *CAMERA-bank* default-string-min-y)) - ) - (set! (-> self stringMaxHeight) - (cam-slave-get-float arg0 'stringMaxHeight (-> *CAMERA-bank* default-string-max-y)) - ) - (set! (-> self stringMinLength) - (cam-slave-get-float arg0 'stringMinLength (-> *CAMERA-bank* default-string-min-z)) - ) - (set! (-> self stringMaxLength) - (cam-slave-get-float arg0 'stringMaxLength (-> *CAMERA-bank* default-string-max-z)) - ) + (set! (-> self stringMinHeight) (cam-slave-get-float arg0 'stringMinHeight (-> *CAMERA-bank* default-string-min-y))) + (set! (-> self stringMaxHeight) (cam-slave-get-float arg0 'stringMaxHeight (-> *CAMERA-bank* default-string-max-y))) + (set! (-> self stringMinLength) (cam-slave-get-float arg0 'stringMinLength (-> *CAMERA-bank* default-string-min-z))) + (set! (-> self stringMaxLength) (cam-slave-get-float arg0 'stringMaxLength (-> *CAMERA-bank* default-string-max-z))) (let ((s5-0 (new 'stack-no-clear 'vector))) (if (cam-slave-get-vector-with-offset (the-as entity-actor arg0) s5-0 'interesting) - (send-event *camera* 'point-of-interest s5-0) - ) - ) - (if (< 405504.0 (-> self stringMaxLength)) - (set! (-> self stringMaxLength) (-> *CAMERA-bank* default-string-max-z)) - ) + (send-event *camera* 'point-of-interest s5-0))) + (if (< 405504.0 (-> self stringMaxLength)) (set! (-> self stringMaxLength) (-> *CAMERA-bank* default-string-max-z))) (set! (-> self stringCliffHeight) (cam-slave-get-float arg0 'stringCliffHeight 163840.0)) (if (not (send-event *camera* 'query-state *camera-base-mode*)) - (send-event *camera* 'change-state *camera-base-mode* (seconds 1.5)) - ) - (if (logtest? #x10000 (cam-slave-get-flags (-> self cam-entity) 'flags)) - (send-event *camera* 'set-slave-option #x10000) - ) + (send-event *camera* 'change-state *camera-base-mode* (seconds 1.5))) + (if (logtest? #x10000 (cam-slave-get-flags (-> self cam-entity) 'flags)) (send-event *camera* 'set-slave-option #x10000)) (set! (-> *camera-combiner* tracking tilt-adjust target) - (cam-slave-get-float arg0 'tiltAdjust (-> *CAMERA-bank* default-tilt-adjust)) - ) - ) + (cam-slave-get-float arg0 'tiltAdjust (-> *CAMERA-bank* default-tilt-adjust)))) (defun setup-slave-for-hopefull ((arg0 camera-slave)) (when (= (-> arg0 blend-to-type) 2) (cam-calc-follow! (-> arg0 tracking) (-> arg0 trans) #f) - (slave-set-rotation! (-> arg0 tracking) (-> arg0 trans) (the-as float (-> arg0 options)) (-> arg0 fov) #f) - ) - (none) - ) + (slave-set-rotation! (-> arg0 tracking) (-> arg0 trans) (the-as float (-> arg0 options)) (-> arg0 fov) #f)) + (none)) (defbehavior master-is-hopeful-better? camera-master ((arg0 camera-slave) (arg1 camera-slave)) (if (not *camera-combiner*) - #f - (< (vector-dot (-> arg0 tracking inv-mat vector 2) (-> *camera-combiner* inv-camera-rot vector 2)) - (vector-dot (-> arg1 tracking inv-mat vector 2) (-> *camera-combiner* inv-camera-rot vector 2)) - ) - ) - ) + #f + (< (vector-dot (-> arg0 tracking inv-mat vector 2) (-> *camera-combiner* inv-camera-rot vector 2)) + (vector-dot (-> arg1 tracking inv-mat vector 2) (-> *camera-combiner* inv-camera-rot vector 2))))) (defbehavior master-switch-to-entity camera-master ((arg0 entity)) - (local-vars - (v0-21 object) - (gp-0 (pointer process)) - (sv-16 res-tag) - (sv-112 process) - (sv-128 string) - (sv-144 string) - ) + (local-vars (v0-21 object) (gp-0 (pointer process)) (sv-16 res-tag) (sv-112 process) (sv-128 string) (sv-144 string)) (set! (-> self cam-entity) arg0) 10 (let ((s4-0 (cam-state-from-entity arg0))) (cond - ((= s4-0 *camera-base-mode*) - (master-base-region arg0) - (return #t) - ) + ((= s4-0 *camera-base-mode*) (master-base-region arg0) (return #t)) (s4-0 - (let ((s3-0 (get-process *camera-dead-pool* camera-slave #x4000))) - (set! gp-0 (when s3-0 - (let ((t9-3 (method-of-type camera-slave activate))) - (t9-3 (the-as camera-slave s3-0) self 'camera-slave (the-as pointer #x70004000)) - ) - (run-now-in-process s3-0 cam-slave-init s4-0 arg0) - (-> s3-0 ppointer) - ) - ) - ) - (when (not gp-0) - (format 0 "ERROR : primary region activate failed~%") - (return #f) - ) - (setup-slave-for-hopefull (the-as camera-slave (ppointer->process gp-0))) - ) + (let ((s3-0 (get-process *camera-dead-pool* camera-slave #x4000))) + (set! gp-0 + (when s3-0 + (let ((t9-3 (method-of-type camera-slave activate))) + (t9-3 (the-as camera-slave s3-0) self 'camera-slave (the-as pointer #x70004000))) + (run-now-in-process s3-0 cam-slave-init s4-0 arg0) + (-> s3-0 ppointer)))) + (when (not gp-0) + (format 0 "ERROR : primary region activate failed~%") + (return #f)) + (setup-slave-for-hopefull (the-as camera-slave (ppointer->process gp-0)))) (else - (format 0 "ERROR : camera region '~S' didn't produce a state~%" (res-lump-struct arg0 'name structure)) - (return #f) - ) - ) - ) + (format 0 "ERROR : camera region '~S' didn't produce a state~%" (res-lump-struct arg0 'name structure)) + (return #f)))) (set! sv-16 (new 'static 'res-tag)) (let ((s4-2 (res-lump-data arg0 'alternates (pointer string) :tag-ptr (& sv-16)))) (when s4-2 @@ -681,101 +439,51 @@ (set! v0-21 (cond (s2-0 - (let ((s0-0 (cam-state-from-entity s2-0))) - (cond - ((= s0-0 *camera-base-mode*) - (deactivate (-> gp-0 0)) - (master-base-region s2-0) - (return #t) - v0-21 - ) - (s0-0 - (set! sv-112 (get-process *camera-dead-pool* camera-slave #x4000)) - (let ((s1-0 (when sv-112 - (let ((t9-15 (method-of-type camera-slave activate))) - (t9-15 (the-as camera-slave sv-112) self 'camera-slave (the-as pointer #x70004000)) - ) - (run-now-in-process sv-112 cam-slave-init s0-0 s2-0) - (-> sv-112 ppointer) - ) - ) - ) - (cond - (s1-0 - (setup-slave-for-hopefull (the-as camera-slave (ppointer->process s1-0))) - (cond - ((master-is-hopeful-better? - (the-as camera-slave (ppointer->process gp-0)) - (the-as camera-slave (ppointer->process s1-0)) - ) - (deactivate (-> gp-0 0)) - (set! gp-0 s1-0) - gp-0 - ) - (else - (deactivate (-> s1-0 0)) - ) - ) - ) - (else - (format 0 "ERROR : alternate region activate failed~%") - ) - ) - ) - ) - (else - (let ((s1-1 format) - (s0-1 0) - ) - (set! sv-128 "ERROR : alternate camera region '~S' didn't produce a state~%") - (let ((a2-10 (res-lump-struct s2-0 'name structure))) - (s1-1 s0-1 sv-128 a2-10) - ) - ) - ) - ) - ) - ) + (let ((s0-0 (cam-state-from-entity s2-0))) + (cond + ((= s0-0 *camera-base-mode*) (deactivate (-> gp-0 0)) (master-base-region s2-0) (return #t) v0-21) + (s0-0 + (set! sv-112 (get-process *camera-dead-pool* camera-slave #x4000)) + (let ((s1-0 (when sv-112 + (let ((t9-15 (method-of-type camera-slave activate))) + (t9-15 (the-as camera-slave sv-112) self 'camera-slave (the-as pointer #x70004000))) + (run-now-in-process sv-112 cam-slave-init s0-0 s2-0) + (-> sv-112 ppointer)))) + (cond + (s1-0 + (setup-slave-for-hopefull (the-as camera-slave (ppointer->process s1-0))) + (cond + ((master-is-hopeful-better? (the-as camera-slave (ppointer->process gp-0)) + (the-as camera-slave (ppointer->process s1-0))) + (deactivate (-> gp-0 0)) + (set! gp-0 s1-0) + gp-0) + (else (deactivate (-> s1-0 0))))) + (else (format 0 "ERROR : alternate region activate failed~%"))))) + (else + (let ((s1-1 format) + (s0-1 0)) + (set! sv-128 "ERROR : alternate camera region '~S' didn't produce a state~%") + (let ((a2-10 (res-lump-struct s2-0 'name structure))) (s1-1 s0-1 sv-128 a2-10))))))) (else - (let ((s2-1 format) - (s1-2 0) - (s0-2 "ERROR : alternate '~S' not found for '~S'~%") - ) - (set! sv-144 (-> s4-2 s3-2)) - (let ((a3-8 (res-lump-struct arg0 'name structure))) - (s2-1 s1-2 s0-2 sv-144 a3-8) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (let ((s2-1 format) + (s1-2 0) + (s0-2 "ERROR : alternate '~S' not found for '~S'~%")) + (set! sv-144 (-> s4-2 s3-2)) + (let ((a3-8 (res-lump-struct arg0 'name structure))) (s2-1 s1-2 s0-2 sv-144 a3-8)))))))))) (let ((v1-48 (the int (* 300.0 (cam-slave-get-interp-time (-> (the-as camera-slave (-> gp-0 0)) cam-entity)))))) - (if (nonzero? (-> self force-blend)) - (set! v1-48 (min v1-48 (the-as int (-> self force-blend-time)))) - ) - (send-event *camera* 'change-state (ppointer->process gp-0) v1-48) - ) - #t - ) + (if (nonzero? (-> self force-blend)) (set! v1-48 (min v1-48 (the-as int (-> self force-blend-time))))) + (send-event *camera* 'change-state (ppointer->process gp-0) v1-48)) + #t) (defbehavior master-check-regions camera-master () (cond - ((send-event *camera* 'query-state cam-eye) - #f - ) - ((or (not *target*) (logtest? (-> self master-options) 1)) - (master-unset-region) - ) + ((send-event *camera* 'query-state cam-eye) #f) + ((or (not *target*) (logtest? (-> self master-options) 1)) (master-unset-region)) ((and (logtest? (-> self master-options) 4) (not (-> self on-ground)) - (or (not (-> self cam-entity)) (not (logtest? #x20000 (cam-slave-get-flags (-> self cam-entity) 'flags)))) - ) - #f - ) + (or (not (-> self cam-entity)) (not (logtest? #x20000 (cam-slave-get-flags (-> self cam-entity) 'flags))))) + #f) ((and (-> self cam-entity) (not (in-cam-entity-volume? (target-pos 0) (-> self cam-entity) 0.0 'cutoutvol)) (or (in-cam-entity-volume? (target-pos 0) (-> self cam-entity) 1024.0 'pvol) @@ -787,9 +495,7 @@ 0.0 (the-as pointer #f) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) + *res-static-buf*)) (not ((method-of-type res-lump get-property-data) (-> self cam-entity) 'vol @@ -797,726 +503,404 @@ 0.0 (the-as pointer #f) (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - ) - ) - #f - ) + *res-static-buf*))))) + #f) (else - (let ((v1-17 (-> *camera-engine* alive-list next0))) - *camera-engine* - (let ((gp-5 (-> v1-17 next0))) - (while (!= v1-17 (-> *camera-engine* alive-list-end)) - (let ((s5-1 (-> (the-as connection v1-17) param1))) - (when (and (not (in-cam-entity-volume? (target-pos 0) (the-as entity s5-1) 1024.0 'cutoutvol)) - (in-cam-entity-volume? (target-pos 0) (the-as entity s5-1) 0.0 'vol) - ) - (if (master-switch-to-entity (the-as entity s5-1)) - (return #t) - ) - ) - ) - (set! v1-17 gp-5) - *camera-engine* - (set! gp-5 (-> gp-5 next0)) - ) - ) - ) - (master-unset-region) - ) - ) - ) + (let ((v1-17 (-> *camera-engine* alive-list next0))) + *camera-engine* + (let ((gp-5 (-> v1-17 next0))) + (while (!= v1-17 (-> *camera-engine* alive-list-end)) + (let ((s5-1 (-> (the-as connection v1-17) param1))) + (when (and (not (in-cam-entity-volume? (target-pos 0) (the-as entity s5-1) 1024.0 'cutoutvol)) + (in-cam-entity-volume? (target-pos 0) (the-as entity s5-1) 0.0 'vol)) + (if (master-switch-to-entity (the-as entity s5-1)) (return #t)))) + (set! v1-17 gp-5) + *camera-engine* + (set! gp-5 (-> gp-5 next0))))) + (master-unset-region)))) (defstate cam-master-active (camera-master) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (rlet ((vf0 :class vf)) - (init-vf0-vector) - (let ((v1-0 message)) - (cond - ((= v1-0 'dist-from-interp-src) - (set! v0-0 (cond - ((not *camera-combiner*) - 409600.0 - ) - ((= (-> *camera-combiner* interp-val) 0.0) - 0.0 - ) - (else - (-> *camera-combiner* dist-from-src) - ) - ) - ) - ) - ((= v1-0 'dist-from-interp-dest) - (set! v0-0 (cond - ((not *camera-combiner*) - 0.0 - ) - ((= (-> *camera-combiner* interp-val) 0.0) - 409600.0 - ) - (else - (-> *camera-combiner* dist-from-dest) - ) - ) - ) - ) - ((= v1-0 'level-deactivate) - (set! v0-0 (if (and (-> self cam-entity) (= (-> (get-level (-> self cam-entity)) name) (-> block param 0))) - (master-unset-region) - ) - ) - ) - ((= v1-0 'clear-entity) - (set! v0-0 (master-unset-region)) - ) - ((= v1-0 'no-intro) - (set! v0-0 3) - (set! (-> self no-intro) (the-as uint v0-0)) - ) - ((= v1-0 'force-blend) - (set! (-> self force-blend) (the-as uint 3)) - (set! v0-0 (-> block param 0)) - (set! (-> self force-blend-time) (the-as uint v0-0)) - ) - ((= v1-0 'teleport-to-transformq) - (set! v0-0 (when (> argc 0) - (let ((gp-1 (the-as object (-> block param 0)))) - (send-event self 'change-state cam-free-floating 0) - (dotimes (s5-1 (-> self num-slaves)) - (set! (-> self slave s5-1 0 trans quad) (-> (the-as matrix gp-1) vector 0 quad)) - (quaternion->matrix - (the-as matrix (-> self slave s5-1 0 tracking)) - (the-as quaternion (+ (the-as uint gp-1) 16)) - ) - ) - ) - (send-event self 'teleport) - ) - ) - ) - ((= v1-0 'teleport-to-other-start-string) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (set! (-> *camera-combiner* trans quad) (-> *camera-other-trans* quad)) - (vector-! gp-2 (-> self tpos-curr-adj) *camera-other-trans*) - (vector-normalize! gp-2 1.0) - (forward-down->inv-matrix (-> *camera-combiner* inv-camera-rot) gp-2 (new 'static 'vector :y -1.0)) - ) - (send-event self 'change-state cam-free-floating 0) - (send-event self 'teleport) - (let ((a1-10 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-10 from) self) - (set! (-> a1-10 num-params) 2) - (set! (-> a1-10 message) 'change-state) - (set! (-> a1-10 param 0) (the-as uint *camera-base-mode*)) - (set! (-> a1-10 param 1) (the-as uint 0)) - (set! v0-0 (send-event-function self a1-10)) - ) - ) - ((= v1-0 'teleport-to-vector-start-string) - (set! v0-0 - (when (> argc 0) - (let ((v1-43 (the-as object (-> block param 0))) - (gp-3 (new 'stack-no-clear 'vector)) - ) - (set! (-> *camera-combiner* trans quad) (-> (the-as vector v1-43) quad)) - (vector-! gp-3 (-> self tpos-curr-adj) (the-as vector v1-43)) - (vector-normalize! gp-3 1.0) - (forward-down->inv-matrix (-> *camera-combiner* inv-camera-rot) gp-3 (new 'static 'vector :y -1.0)) - ) - (send-event self 'change-state cam-free-floating 0) - (send-event self 'change-state *camera-base-mode* 0) - ) - ) - ) - ((= v1-0 'change-pov) - (let ((v1-52 (the-as object (-> block param 0)))) - (cond - ((< argc 2) - (set! (-> self pov-bone) 0) - 0 - ) - (else - (set! (-> self pov-bone) (the-as int (-> block param 1))) - ) - ) - (set! v0-0 (cond - ((not (the-as process v1-52)) - (set! (-> self pov-handle) (the-as handle #f)) - #f - ) - (else - (set! v0-0 (process->handle (the-as process v1-52))) - (set! (-> self pov-handle) (the-as handle v0-0)) - v0-0 - ) - ) - ) - ) - ) - ((= v1-0 'change-target-bone) - (set! v0-0 (-> block param 0)) - (set! (-> self which-bone) (the-as int v0-0)) - ) - ((= v1-0 'change-target) - (let ((v1-56 (the-as object (-> block param 0)))) - (cond - ((< argc 2) - (set! (-> self which-bone) 0) - 0 - ) - (else - (set! (-> self which-bone) (the-as int (-> block param 1))) - ) - ) - (cond - ((not (the-as process v1-56)) - (set! (-> self drawable-target) (the-as handle #f)) - (logand! (-> self master-options) -3) - ) - ((= (the-as process v1-56) *target*) - (set! (-> self drawable-target) (the-as handle #f)) - (logior! (-> self master-options) 2) - (reset-target-tracking) - ) - (else - (set! (-> self drawable-target) (process->handle (the-as process v1-56))) - (logior! (-> self master-options) 2) - (reset-drawable-tracking) - ) - ) - ) - (set! (-> *camera-combiner* tracking no-follow) #f) - (set! v0-0 #f) - ) - ((= v1-0 'reset-root) - (dotimes (gp-4 (-> self num-slaves)) - (set! (-> self slave gp-4 0 trans quad) (the-as uint128 0)) - (matrix-identity! (the-as matrix (-> self slave gp-4 0 tracking))) - ) - (vector-reset! (-> *camera-combiner* trans)) - (set! v0-0 (matrix-identity! (the-as matrix (-> *camera-combiner* tracking)))) - ) - ((= v1-0 'set-fov) - (set! (-> *camera-combiner* fov) (the-as float (-> block param 0))) - (dotimes (v1-86 (-> self num-slaves)) - (set! (-> self slave v1-86 0 fov) (the-as float (-> block param 0))) - ) - (set! v0-0 #f) - ) - ((= v1-0 'query-fov) - (set! v0-0 (if (> (-> self num-slaves) 0) - (-> self slave 0 0 fov) - 11650.845 - ) - ) - ) - ((= v1-0 'intro-done?) - (set! v0-0 #t) - (dotimes (v1-91 (-> self num-slaves)) - (if (< (-> self slave v1-91 0 intro-t) 1.0) - (set! v0-0 #f) - ) - ) - ) - ((= v1-0 'query-state) - (let ((v1-95 (+ (-> self num-slaves) -1))) - (while (not (or (< v1-95 0) (= (-> self slave v1-95 0 next-state) (-> block param 0)))) - (+! v1-95 -1) - ) - (set! v0-0 (and (>= v1-95 0) (= (-> self slave v1-95 0 next-state) (-> block param 0)))) - ) - ) - ((= v1-0 'change-to-entity-by-name) - (let ((a0-75 (entity-by-name (the-as string (-> block param 0))))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (rlet ((vf0 :class vf)) + (init-vf0-vector) + (let ((v1-0 message)) + (cond + ((= v1-0 'dist-from-interp-src) + (set! v0-0 + (cond + ((not *camera-combiner*) 409600.0) + ((= (-> *camera-combiner* interp-val) 0.0) 0.0) + (else (-> *camera-combiner* dist-from-src))))) + ((= v1-0 'dist-from-interp-dest) + (set! v0-0 + (cond + ((not *camera-combiner*) 0.0) + ((= (-> *camera-combiner* interp-val) 0.0) 409600.0) + (else (-> *camera-combiner* dist-from-dest))))) + ((= v1-0 'level-deactivate) + (set! v0-0 + (if (and (-> self cam-entity) (= (-> (get-level (-> self cam-entity)) name) (-> block param 0))) (master-unset-region)))) + ((= v1-0 'clear-entity) (set! v0-0 (master-unset-region))) + ((= v1-0 'no-intro) (set! v0-0 3) (set! (-> self no-intro) (the-as uint v0-0))) + ((= v1-0 'force-blend) + (set! (-> self force-blend) (the-as uint 3)) + (set! v0-0 (-> block param 0)) + (set! (-> self force-blend-time) (the-as uint v0-0))) + ((= v1-0 'teleport-to-transformq) (set! v0-0 - (if a0-75 + (when (> argc 0) + (let ((gp-1 (the-as object (-> block param 0)))) + (send-event self 'change-state cam-free-floating 0) + (dotimes (s5-1 (-> self num-slaves)) + (set! (-> self slave s5-1 0 trans quad) (-> (the-as matrix gp-1) vector 0 quad)) + (quaternion->matrix (the-as matrix (-> self slave s5-1 0 tracking)) (the-as quaternion (+ (the-as uint gp-1) 16))))) + (send-event self 'teleport)))) + ((= v1-0 'teleport-to-other-start-string) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (set! (-> *camera-combiner* trans quad) (-> *camera-other-trans* quad)) + (vector-! gp-2 (-> self tpos-curr-adj) *camera-other-trans*) + (vector-normalize! gp-2 1.0) + (forward-down->inv-matrix (-> *camera-combiner* inv-camera-rot) gp-2 (new 'static 'vector :y -1.0))) + (send-event self 'change-state cam-free-floating 0) + (send-event self 'teleport) + (let ((a1-10 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-10 from) self) + (set! (-> a1-10 num-params) 2) + (set! (-> a1-10 message) 'change-state) + (set! (-> a1-10 param 0) (the-as uint *camera-base-mode*)) + (set! (-> a1-10 param 1) (the-as uint 0)) + (set! v0-0 (send-event-function self a1-10)))) + ((= v1-0 'teleport-to-vector-start-string) + (set! v0-0 + (when (> argc 0) + (let ((v1-43 (the-as object (-> block param 0))) + (gp-3 (new 'stack-no-clear 'vector))) + (set! (-> *camera-combiner* trans quad) (-> (the-as vector v1-43) quad)) + (vector-! gp-3 (-> self tpos-curr-adj) (the-as vector v1-43)) + (vector-normalize! gp-3 1.0) + (forward-down->inv-matrix (-> *camera-combiner* inv-camera-rot) gp-3 (new 'static 'vector :y -1.0))) + (send-event self 'change-state cam-free-floating 0) + (send-event self 'change-state *camera-base-mode* 0)))) + ((= v1-0 'change-pov) + (let ((v1-52 (the-as object (-> block param 0)))) + (cond + ((< argc 2) (set! (-> self pov-bone) 0) 0) + (else (set! (-> self pov-bone) (the-as int (-> block param 1))))) + (set! v0-0 + (cond + ((not (the-as process v1-52)) (set! (-> self pov-handle) (the-as handle #f)) #f) + (else (set! v0-0 (process->handle (the-as process v1-52))) (set! (-> self pov-handle) (the-as handle v0-0)) v0-0))))) + ((= v1-0 'change-target-bone) (set! v0-0 (-> block param 0)) (set! (-> self which-bone) (the-as int v0-0))) + ((= v1-0 'change-target) + (let ((v1-56 (the-as object (-> block param 0)))) + (cond + ((< argc 2) (set! (-> self which-bone) 0) 0) + (else (set! (-> self which-bone) (the-as int (-> block param 1))))) + (cond + ((not (the-as process v1-56)) (set! (-> self drawable-target) (the-as handle #f)) (logand! (-> self master-options) -3)) + ((= (the-as process v1-56) *target*) + (set! (-> self drawable-target) (the-as handle #f)) + (logior! (-> self master-options) 2) + (reset-target-tracking)) + (else + (set! (-> self drawable-target) (process->handle (the-as process v1-56))) + (logior! (-> self master-options) 2) + (reset-drawable-tracking)))) + (set! (-> *camera-combiner* tracking no-follow) #f) + (set! v0-0 #f)) + ((= v1-0 'reset-root) + (dotimes (gp-4 (-> self num-slaves)) + (set! (-> self slave gp-4 0 trans quad) (the-as uint128 0)) + (matrix-identity! (the-as matrix (-> self slave gp-4 0 tracking)))) + (vector-reset! (-> *camera-combiner* trans)) + (set! v0-0 (matrix-identity! (the-as matrix (-> *camera-combiner* tracking))))) + ((= v1-0 'set-fov) + (set! (-> *camera-combiner* fov) (the-as float (-> block param 0))) + (dotimes (v1-86 (-> self num-slaves)) + (set! (-> self slave v1-86 0 fov) (the-as float (-> block param 0)))) + (set! v0-0 #f)) + ((= v1-0 'query-fov) (set! v0-0 (if (> (-> self num-slaves) 0) (-> self slave 0 0 fov) 11650.845))) + ((= v1-0 'intro-done?) + (set! v0-0 #t) + (dotimes (v1-91 (-> self num-slaves)) + (if (< (-> self slave v1-91 0 intro-t) 1.0) (set! v0-0 #f)))) + ((= v1-0 'query-state) + (let ((v1-95 (+ (-> self num-slaves) -1))) + (while (not (or (< v1-95 0) (= (-> self slave v1-95 0 next-state) (-> block param 0)))) + (+! v1-95 -1)) + (set! v0-0 (and (>= v1-95 0) (= (-> self slave v1-95 0 next-state) (-> block param 0)))))) + ((= v1-0 'change-to-entity-by-name) + (let ((a0-75 (entity-by-name (the-as string (-> block param 0))))) + (set! v0-0 + (if a0-75 (master-switch-to-entity a0-75) - (format 0 "ERROR : camera entity '~S' not found for change-to-entity-by-name~%" (-> block param 0)) - ) - ) - ) - ) - ((= v1-0 'change-state) - (let ((s1-0 (the-as uint #f)) - (s2-0 (the-as (pointer process) #f)) - (s5-2 (the-as (pointer camera-slave) #f)) - ) - (let ((s3-0 (the-as object #f)) - (s4-1 (the-as (pointer camera-slave) #f)) - ) - (let ((t9-22 type-type?) - (v1-101 (-> block param 0)) - ) + (format 0 "ERROR : camera entity '~S' not found for change-to-entity-by-name~%" (-> block param 0)))))) + ((= v1-0 'change-state) + (let ((s1-0 (the-as uint #f)) + (s2-0 (the-as (pointer process) #f)) + (s5-2 (the-as (pointer camera-slave) #f))) + (let ((s3-0 (the-as object #f)) + (s4-1 (the-as (pointer camera-slave) #f))) + (let ((t9-22 type-type?) + (v1-101 (-> block param 0))) + (cond + ((t9-22 (rtype-of v1-101) state) (set! s1-0 (-> block param 0))) + ((let ((t9-23 type-type?) + (v1-103 (-> block param 0))) + (t9-23 (rtype-of v1-103) camera-slave)) + (set! s2-0 (process->ppointer (the-as process (-> block param 0))))) + (else + (let ((t9-24 format) + (a0-82 0) + (a1-25 "ERROR : invalid type '~A' to *camera* change-state~%") + (v1-106 (-> block param 0))) + (t9-24 a0-82 a1-25 (rtype-of v1-106)))))) + (if (and (> (-> self num-slaves) 0) + (or (= (-> self slave 0 0 next-state name) 'cam-stick) (= (-> self slave 0 0 next-state name) 'cam-string))) + (set! (-> self view-off-param-save) (-> self slave 0 0 view-off-param))) + (set! (-> self changer) (the-as uint (process->ppointer proc))) (cond - ((t9-22 (rtype-of v1-101) state) - (set! s1-0 (-> block param 0)) - ) - ((let ((t9-23 type-type?) - (v1-103 (-> block param 0)) - ) - (t9-23 (rtype-of v1-103) camera-slave) - ) - (set! s2-0 (process->ppointer (the-as process (-> block param 0)))) - ) + ((<= (-> self num-slaves) 0) + (cond + (s2-0 + (let ((a1-26 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-26 from) self) + (set! (-> a1-26 num-params) 1) + (set! (-> a1-26 message) 'slave-activated) + (let ((v1-126 s2-0)) (set! (-> a1-26 param 0) (the-as uint (if v1-126 (-> (the-as camera-slave (-> v1-126 0)) self))))) + (send-event-function self a1-26))) + (else + (let ((gp-5 (the-as camera-slave (get-process *camera-dead-pool* camera-slave #x4000)))) + (set! s2-0 + (when gp-5 + (let ((t9-27 (method-of-type camera-slave activate))) (t9-27 gp-5 self 'camera-slave (the-as pointer #x70004000))) + (run-now-in-process gp-5 cam-slave-init s1-0 #f) + (-> gp-5 ppointer)))) + (cond + (s2-0) + (else (format 0 "ERROR : replacement slave failed to activate~%"))))) + (when s2-0 + (send-event *camera-combiner* 'stop-tracking) + (if (= (-> (the-as camera-slave (-> s2-0 0)) blend-to-type) 2) + (send-event *camera-combiner* 'start-tracking (if s2-0 (-> (the-as camera-slave (-> s2-0 0)) self)))))) + ((zero? (-> block param 1)) + (if *math-camera* (set! (-> *math-camera* reset) 1)) + (when (< 1 (-> self num-slaves)) + (if (= (-> self changer) (-> self slave 1)) (set! s5-2 (-> self slave 1)) (deactivate (-> self slave 1 0))) + (set! (-> self slave 1) (the-as (pointer camera-slave) #f)) + (+! (-> self num-slaves) -1)) + (cond + (s2-0 + (if (= (-> self changer) (-> self slave 0)) (set! s5-2 (-> self slave 0)) (deactivate (-> self slave 0 0))) + (set! (-> self slave 0) (the-as (pointer camera-slave) #f)) + (+! (-> self num-slaves) -1) + (let ((a1-33 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-33 from) self) + (set! (-> a1-33 num-params) 1) + (set! (-> a1-33 message) 'slave-activated) + (let ((v1-166 s2-0)) (set! (-> a1-33 param 0) (the-as uint (if v1-166 (-> (the-as camera-slave (-> v1-166 0)) self))))) + (send-event-function self a1-33))) + ((not (and (= (-> self slave 0 0 next-state) *camera-base-mode*) (= (-> self slave 0 0 next-state) s1-0))) + (send-event (ppointer->process (-> self slave 0)) 'change-state-no-go s1-0) + (set! s4-1 (-> self slave 0)) + (set! s3-0 s1-0) + (set! s2-0 (-> self slave 0)))) + (when s2-0 + (send-event *camera-combiner* 'stop-tracking) + (when (= (-> (the-as camera-slave (-> s2-0 0)) blend-to-type) 2) + (let ((a1-36 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-36 from) self) + (set! (-> a1-36 num-params) 1) + (set! (-> a1-36 message) 'start-tracking) + (let ((v1-191 s2-0)) (set! (-> a1-36 param 0) (the-as uint (if v1-191 (-> (the-as camera-slave (-> v1-191 0)) self))))) + (send-event-function *camera-combiner* a1-36))))) (else - (let ((t9-24 format) - (a0-82 0) - (a1-25 "ERROR : invalid type '~A' to *camera* change-state~%") - (v1-106 (-> block param 0)) - ) - (t9-24 a0-82 a1-25 (rtype-of v1-106)) - ) - ) - ) - ) - (if (and (> (-> self num-slaves) 0) - (or (= (-> self slave 0 0 next-state name) 'cam-stick) (= (-> self slave 0 0 next-state name) 'cam-string)) - ) - (set! (-> self view-off-param-save) (-> self slave 0 0 view-off-param)) - ) - (set! (-> self changer) (the-as uint (process->ppointer proc))) - (cond - ((<= (-> self num-slaves) 0) - (cond - (s2-0 - (let ((a1-26 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-26 from) self) - (set! (-> a1-26 num-params) 1) - (set! (-> a1-26 message) 'slave-activated) - (let ((v1-126 s2-0)) - (set! (-> a1-26 param 0) (the-as uint (if v1-126 - (-> (the-as camera-slave (-> v1-126 0)) self) - ) - ) - ) - ) - (send-event-function self a1-26) - ) - ) - (else - (let ((gp-5 (the-as camera-slave (get-process *camera-dead-pool* camera-slave #x4000)))) - (set! s2-0 (when gp-5 - (let ((t9-27 (method-of-type camera-slave activate))) - (t9-27 gp-5 self 'camera-slave (the-as pointer #x70004000)) - ) - (run-now-in-process gp-5 cam-slave-init s1-0 #f) - (-> gp-5 ppointer) - ) - ) - ) + (when (< 1 (-> self num-slaves)) + (if (= (-> self changer) (-> self slave 0)) (set! s5-2 (-> self slave 0)) (deactivate (-> self slave 0 0))) + (set! (-> self slave 0) (-> self slave 1)) + (set! (-> self slave 1) (the-as (pointer camera-slave) #f)) + (+! (-> self num-slaves) -1)) + (when (< 0.0 (-> self slave 0 0 intro-t-step)) + (set! (-> self outro-t) (-> self slave 0 0 intro-t)) + (set! (-> self outro-t-step) (/ -5.0 (the float (-> block param 1)))) + (set! (-> self outro-exit-value) (-> self slave 0 0 outro-exit-value)) + (curve-copy! (-> self outro-curve) (-> self slave 0 0 intro-curve))) + (if (nonzero? (-> self no-intro)) (set! (-> self outro-t) 0.0)) + (when (not (and (= (-> self slave 0 0 next-state) *camera-base-mode*) (= (-> self slave 0 0 next-state) s1-0))) (cond (s2-0 - ) - (else - (format 0 "ERROR : replacement slave failed to activate~%") - ) - ) - ) - ) - (when s2-0 - (send-event *camera-combiner* 'stop-tracking) - (if (= (-> (the-as camera-slave (-> s2-0 0)) blend-to-type) 2) - (send-event *camera-combiner* 'start-tracking (if s2-0 - (-> (the-as camera-slave (-> s2-0 0)) self) - ) - ) - ) - ) - ) - ((zero? (-> block param 1)) - (if *math-camera* - (set! (-> *math-camera* reset) 1) - ) - (when (< 1 (-> self num-slaves)) - (if (= (-> self changer) (-> self slave 1)) - (set! s5-2 (-> self slave 1)) - (deactivate (-> self slave 1 0)) - ) - (set! (-> self slave 1) (the-as (pointer camera-slave) #f)) - (+! (-> self num-slaves) -1) - ) - (cond - (s2-0 - (if (= (-> self changer) (-> self slave 0)) - (set! s5-2 (-> self slave 0)) - (deactivate (-> self slave 0 0)) - ) - (set! (-> self slave 0) (the-as (pointer camera-slave) #f)) - (+! (-> self num-slaves) -1) - (let ((a1-33 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-33 from) self) - (set! (-> a1-33 num-params) 1) - (set! (-> a1-33 message) 'slave-activated) - (let ((v1-166 s2-0)) - (set! (-> a1-33 param 0) (the-as uint (if v1-166 - (-> (the-as camera-slave (-> v1-166 0)) self) - ) - ) - ) - ) - (send-event-function self a1-33) - ) - ) - ((not (and (= (-> self slave 0 0 next-state) *camera-base-mode*) (= (-> self slave 0 0 next-state) s1-0))) - (send-event (ppointer->process (-> self slave 0)) 'change-state-no-go s1-0) - (set! s4-1 (-> self slave 0)) - (set! s3-0 s1-0) - (set! s2-0 (-> self slave 0)) - ) - ) - (when s2-0 - (send-event *camera-combiner* 'stop-tracking) - (when (= (-> (the-as camera-slave (-> s2-0 0)) blend-to-type) 2) - (let ((a1-36 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-36 from) self) - (set! (-> a1-36 num-params) 1) - (set! (-> a1-36 message) 'start-tracking) - (let ((v1-191 s2-0)) - (set! (-> a1-36 param 0) (the-as uint (if v1-191 - (-> (the-as camera-slave (-> v1-191 0)) self) - ) - ) - ) - ) - (send-event-function *camera-combiner* a1-36) - ) - ) - ) - ) - (else - (when (< 1 (-> self num-slaves)) - (if (= (-> self changer) (-> self slave 0)) - (set! s5-2 (-> self slave 0)) - (deactivate (-> self slave 0 0)) - ) - (set! (-> self slave 0) (-> self slave 1)) - (set! (-> self slave 1) (the-as (pointer camera-slave) #f)) - (+! (-> self num-slaves) -1) - ) - (when (< 0.0 (-> self slave 0 0 intro-t-step)) - (set! (-> self outro-t) (-> self slave 0 0 intro-t)) - (set! (-> self outro-t-step) (/ -5.0 (the float (-> block param 1)))) - (set! (-> self outro-exit-value) (-> self slave 0 0 outro-exit-value)) - (curve-copy! (-> self outro-curve) (-> self slave 0 0 intro-curve)) - ) - (if (nonzero? (-> self no-intro)) - (set! (-> self outro-t) 0.0) - ) - (when (not (and (= (-> self slave 0 0 next-state) *camera-base-mode*) (= (-> self slave 0 0 next-state) s1-0))) - (cond - (s2-0 (let ((a1-38 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-38 from) self) (set! (-> a1-38 num-params) 1) (set! (-> a1-38 message) 'slave-activated) - (let ((v1-228 s2-0)) - (set! (-> a1-38 param 0) (the-as uint (if v1-228 - (-> (the-as camera-slave (-> v1-228 0)) self) - ) - ) - ) - ) - (send-event-function self a1-38) - ) - ) - (else + (let ((v1-228 s2-0)) (set! (-> a1-38 param 0) (the-as uint (if v1-228 (-> (the-as camera-slave (-> v1-228 0)) self))))) + (send-event-function self a1-38))) + (else (let ((s2-1 (get-process *camera-dead-pool* camera-slave #x4000))) - (set! s2-0 (when s2-1 - (let ((t9-42 (method-of-type camera-slave activate))) - (t9-42 (the-as camera-slave s2-1) self 'camera-slave (the-as pointer #x70004000)) - ) - (run-now-in-process s2-1 cam-slave-init s1-0 #f) - (-> s2-1 ppointer) - ) - ) - ) + (set! s2-0 + (when s2-1 + (let ((t9-42 (method-of-type camera-slave activate))) + (t9-42 (the-as camera-slave s2-1) self 'camera-slave (the-as pointer #x70004000))) + (run-now-in-process s2-1 cam-slave-init s1-0 #f) + (-> s2-1 ppointer)))) (cond - (s2-0 - ) - (else - (format #t "ERROR : secondary slave activate failed~%") - ) - ) - ) - ) - (when s2-0 - (send-event *camera-combiner* 'set-interpolation (-> block param 1)) - (set! s4-1 (-> self slave 0)) - (cond - ((zero? (-> self slave 0 0 blend-from-type)) - (send-event (ppointer->process (-> self slave 0)) 'change-state-no-go cam-fixed) - (send-event *camera-combiner* 'stop-tracking) - (set! s3-0 cam-fixed) - ) - (else - (send-event (ppointer->process (-> self slave 0)) 'change-state-no-go cam-decel) - (set! s3-0 cam-decel) - ) - ) - (let ((v1-261 (-> *camera-combiner* tracking-status))) - (cond - ((zero? v1-261) - (let ((v1-263 (-> (the-as camera-slave (-> s2-0 0)) blend-to-type))) - (cond - ((zero? v1-263) - ) - ((= v1-263 1) - ) - ((= v1-263 2) - (if (= (-> self slave 0 0 blend-from-type) 1) - (send-event *camera-combiner* 'copy-tracking (ppointer->process (-> self slave 0))) - (send-event *camera-combiner* 'start-tracking (ppointer->process (-> self slave 0))) - ) - (set! (-> *camera-combiner* tracking-status) (the-as uint 2)) - ) - ) - ) - ) - ((= v1-261 1) - (let ((v1-280 (-> (the-as camera-slave (-> s2-0 0)) blend-to-type))) - (cond - ((zero? v1-280) - (set! (-> *camera-combiner* tracking-status) (the-as uint 3)) - ) - ((= v1-280 1) - (set! (-> *camera-combiner* tracking-status) (the-as uint 3)) - ) - ((= v1-280 2) - ) - ) - ) - ) - ((= v1-261 2) - (let ((v1-286 (-> (the-as camera-slave (-> s2-0 0)) blend-to-type))) - (cond - ((zero? v1-286) - (set! (-> *camera-combiner* tracking-status) (the-as uint 0)) - 0 - ) - ((= v1-286 1) - (set! (-> *camera-combiner* tracking-status) (the-as uint 0)) - 0 - ) - ((= v1-286 2) - ) - ) - ) - ) - ((= v1-261 3) - (let ((v1-295 (-> (the-as camera-slave (-> s2-0 0)) blend-to-type))) - (cond - ((zero? v1-295) - (set! (-> *camera-combiner* tracking-status) (the-as uint 0)) - 0 - ) - ((= v1-295 1) - (set! (-> *camera-combiner* tracking-status) (the-as uint 0)) - 0 - ) - ((= v1-295 2) - (set! (-> *camera-combiner* tracking-status) (the-as uint 2)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if s4-1 - (send-event - (if s4-1 - (-> (the-as camera-slave (-> s4-1 0)) self) - ) - 'go - s3-0 - ) - ) - ) - (if s5-2 - (deactivate (-> s5-2 0)) - ) - ) - (set! v0-0 #t) - ) - ((= v1-0 'slave-activated) - (set! v0-0 - (cond - ((< (-> self num-slaves) 2) - (set! (-> self slave (-> self num-slaves)) - (the-as (pointer camera-slave) (process->ppointer (the-as process (-> block param 0)))) - ) - (+! (-> self num-slaves) 1) - (logior! (-> self master-options) 8) - (set! (-> *camera-combiner* tracking tilt-adjust target) (-> (the-as projectile (-> block param 0)) max-turn)) - ) - (else - (format 0 "ERROR: ERROR : Exceeded maximum number of camera slaves!~%") - (deactivate (the-as camera-slave (-> block param 0))) - ) - ) - ) - ) - ((= v1-0 'ease-in) - (cond - ((< argc 1) - (set! (-> self ease-t) 0.0) - (logand! (-> self master-options) -33) - ) - ((< argc 2) - (if (< (the-as float (-> block param 0)) (-> self ease-t)) - (set! (-> self ease-t) (the-as float (-> block param 0))) - ) - (logand! (-> self master-options) -33) - ) - (else - (if (< (the-as float (-> block param 0)) (-> self ease-t)) - (set! (-> self ease-t) (the-as float (-> block param 0))) - ) - (set! (-> self ease-to quad) (-> (the-as vector (-> block param 1)) quad)) - (logior! (-> self master-options) 32) - ) - ) - (set! (-> self ease-step) 0.033333335) - (set! v0-0 (-> self ease-from)) - (set! (-> (the-as vector v0-0) quad) (-> self tpos-curr-adj quad)) - ) - ((= v1-0 'damp-up) - (let ((f0-22 0.0)) - (set! (-> self upspeed) f0-22) - (set! v0-0 f0-22) - ) - ) - ((= v1-0 'reset-follow) - (set! v0-0 (if (handle->process (-> self drawable-target)) - (reset-drawable-follow) - (reset-follow) - ) - ) - ) - ((= v1-0 'teleport) - (cond - ((and (logtest? (-> self master-options) 2) (handle->process (-> self drawable-target))) - (reset-drawable-tracking) - ) - ((and *target* (logtest? (-> self master-options) 2)) - (reset-target-tracking) - ) - ) - (countdown (gp-6 (-> self num-slaves)) - (send-event (ppointer->process (-> self slave gp-6)) message) - ) - (let ((a1-54 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-54 from) self) - (set! (-> a1-54 num-params) 0) - (set! (-> a1-54 message) message) - (set! v0-0 (send-event-function *camera-combiner* a1-54)) - ) - ) - ((= v1-0 'toggle-slave-option) - (logxor! (-> self slave-options) (-> block param 0)) - (let ((a0-193 (-> self slave 0)) - (v1-360 (-> self slave 1)) - ) - (if a0-193 - (logxor! (-> a0-193 0 options) (-> block param 0)) - ) - (set! v0-0 (when v1-360 - (set! v0-0 (logxor (-> v1-360 0 options) (-> block param 0))) - (set! (-> v1-360 0 options) (the-as uint v0-0)) - v0-0 - ) - ) - ) - ) - (else - (set! v0-0 - (cond - ((= v1-0 'slave-option?) - (if (nonzero? (-> self num-slaves)) - (logtest? (-> self slave (+ (-> self num-slaves) -1) 0 options) (-> block param 0)) - ) - ) - ((= v1-0 'set-slave-option) - (when (nonzero? (-> self num-slaves)) - (set! v0-0 (logior (-> self slave (+ (-> self num-slaves) -1) 0 options) (-> block param 0))) - (set! (-> self slave (+ (-> self num-slaves) -1) 0 options) (the-as uint v0-0)) - v0-0 - ) - ) - ((= v1-0 'clear-slave-option) - (when (nonzero? (-> self num-slaves)) - (set! v0-0 (logclear (-> self slave (+ (-> self num-slaves) -1) 0 options) (-> block param 0))) - (set! (-> self slave (+ (-> self num-slaves) -1) 0 options) (the-as uint v0-0)) - v0-0 - ) - ) - ((= v1-0 'no-follow) - (when (nonzero? (-> self num-slaves)) - (set! (-> self slave (+ (-> self num-slaves) -1) 0 tracking no-follow) #t) - (vector-reset! (-> self slave (+ (-> self num-slaves) -1) 0 tracking follow-off)) - ) - (set! (-> *camera-combiner* tracking no-follow) #t) - (set! v0-0 (-> *camera-combiner* tracking follow-off)) - (.svf (&-> (the-as vector v0-0) quad) vf0) - v0-0 - ) - ((= v1-0 'yes-follow) - (if (nonzero? (-> self num-slaves)) - (set! (-> self slave (+ (-> self num-slaves) -1) 0 tracking no-follow) #f) - ) - (set! (-> *camera-combiner* tracking no-follow) #f) - #f - ) - ((= v1-0 'blend-from-as-fixed) - (when (nonzero? (-> self num-slaves)) - (set! (-> self slave (+ (-> self num-slaves) -1) 0 blend-from-type) (the-as uint 0)) - 0 - ) - ) - ((= v1-0 'point-of-interest) - (when (nonzero? (-> self num-slaves)) - (let ((a1-60 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-60 from) proc) - (set! (-> a1-60 num-params) argc) - (set! (-> a1-60 message) message) - (set! (-> a1-60 param 0) (-> block param 0)) - (set! (-> a1-60 param 1) (-> block param 1)) - (set! (-> a1-60 param 2) (-> block param 2)) - (set! (-> a1-60 param 3) (-> block param 3)) - (set! (-> a1-60 param 4) (-> block param 4)) - (set! (-> a1-60 param 5) (-> block param 5)) - (set! (-> a1-60 param 6) (-> block param 6)) - (send-event-function (ppointer->process (-> self slave (+ (-> self num-slaves) -1))) a1-60) - ) - ) - (let ((a1-61 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-61 from) proc) - (set! (-> a1-61 num-params) argc) - (set! (-> a1-61 message) message) - (set! (-> a1-61 param 0) (-> block param 0)) - (set! (-> a1-61 param 1) (-> block param 1)) - (set! (-> a1-61 param 2) (-> block param 2)) - (set! (-> a1-61 param 3) (-> block param 3)) - (set! (-> a1-61 param 4) (-> block param 4)) - (set! (-> a1-61 param 5) (-> block param 5)) - (set! (-> a1-61 param 6) (-> block param 6)) - (send-event-function *camera-combiner* a1-61) - ) - ) - ((= v1-0 'part-water-drip) - (set-time! (-> self water-drip-time)) - (set! (-> self water-drip-mult) (the-as float (-> block param 0))) - (set! (-> self water-drip-speed) (the-as float (-> block param 1))) - ) - (else + (s2-0) + (else (format #t "ERROR : secondary slave activate failed~%"))))) + (when s2-0 + (send-event *camera-combiner* 'set-interpolation (-> block param 1)) + (set! s4-1 (-> self slave 0)) + (cond + ((zero? (-> self slave 0 0 blend-from-type)) + (send-event (ppointer->process (-> self slave 0)) 'change-state-no-go cam-fixed) + (send-event *camera-combiner* 'stop-tracking) + (set! s3-0 cam-fixed)) + (else (send-event (ppointer->process (-> self slave 0)) 'change-state-no-go cam-decel) (set! s3-0 cam-decel))) + (let ((v1-261 (-> *camera-combiner* tracking-status))) + (cond + ((zero? v1-261) + (let ((v1-263 (-> (the-as camera-slave (-> s2-0 0)) blend-to-type))) + (cond + ((zero? v1-263)) + ((= v1-263 1)) + ((= v1-263 2) + (if (= (-> self slave 0 0 blend-from-type) 1) + (send-event *camera-combiner* 'copy-tracking (ppointer->process (-> self slave 0))) + (send-event *camera-combiner* 'start-tracking (ppointer->process (-> self slave 0)))) + (set! (-> *camera-combiner* tracking-status) (the-as uint 2)))))) + ((= v1-261 1) + (let ((v1-280 (-> (the-as camera-slave (-> s2-0 0)) blend-to-type))) + (cond + ((zero? v1-280) (set! (-> *camera-combiner* tracking-status) (the-as uint 3))) + ((= v1-280 1) (set! (-> *camera-combiner* tracking-status) (the-as uint 3))) + ((= v1-280 2))))) + ((= v1-261 2) + (let ((v1-286 (-> (the-as camera-slave (-> s2-0 0)) blend-to-type))) + (cond + ((zero? v1-286) (set! (-> *camera-combiner* tracking-status) (the-as uint 0)) 0) + ((= v1-286 1) (set! (-> *camera-combiner* tracking-status) (the-as uint 0)) 0) + ((= v1-286 2))))) + ((= v1-261 3) + (let ((v1-295 (-> (the-as camera-slave (-> s2-0 0)) blend-to-type))) + (cond + ((zero? v1-295) (set! (-> *camera-combiner* tracking-status) (the-as uint 0)) 0) + ((= v1-295 1) (set! (-> *camera-combiner* tracking-status) (the-as uint 0)) 0) + ((= v1-295 2) (set! (-> *camera-combiner* tracking-status) (the-as uint 2)))))))))))) + (if s4-1 (send-event (if s4-1 (-> (the-as camera-slave (-> s4-1 0)) self)) 'go s3-0))) + (if s5-2 (deactivate (-> s5-2 0)))) + (set! v0-0 #t)) + ((= v1-0 'slave-activated) + (set! v0-0 + (cond + ((< (-> self num-slaves) 2) + (set! (-> self slave (-> self num-slaves)) + (the-as (pointer camera-slave) (process->ppointer (the-as process (-> block param 0))))) + (+! (-> self num-slaves) 1) + (logior! (-> self master-options) 8) + (set! (-> *camera-combiner* tracking tilt-adjust target) (-> (the-as projectile (-> block param 0)) max-turn))) + (else + (format 0 "ERROR: ERROR : Exceeded maximum number of camera slaves!~%") + (deactivate (the-as camera-slave (-> block param 0))))))) + ((= v1-0 'ease-in) + (cond + ((< argc 1) (set! (-> self ease-t) 0.0) (logand! (-> self master-options) -33)) + ((< argc 2) + (if (< (the-as float (-> block param 0)) (-> self ease-t)) (set! (-> self ease-t) (the-as float (-> block param 0)))) + (logand! (-> self master-options) -33)) + (else + (if (< (the-as float (-> block param 0)) (-> self ease-t)) (set! (-> self ease-t) (the-as float (-> block param 0)))) + (set! (-> self ease-to quad) (-> (the-as vector (-> block param 1)) quad)) + (logior! (-> self master-options) 32))) + (set! (-> self ease-step) 0.033333335) + (set! v0-0 (-> self ease-from)) + (set! (-> (the-as vector v0-0) quad) (-> self tpos-curr-adj quad))) + ((= v1-0 'damp-up) (let ((f0-22 0.0)) (set! (-> self upspeed) f0-22) (set! v0-0 f0-22))) + ((= v1-0 'reset-follow) + (set! v0-0 (if (handle->process (-> self drawable-target)) (reset-drawable-follow) (reset-follow)))) + ((= v1-0 'teleport) + (cond + ((and (logtest? (-> self master-options) 2) (handle->process (-> self drawable-target))) (reset-drawable-tracking)) + ((and *target* (logtest? (-> self master-options) 2)) (reset-target-tracking))) + (countdown (gp-6 (-> self num-slaves)) + (send-event (ppointer->process (-> self slave gp-6)) message)) + (let ((a1-54 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-54 from) self) + (set! (-> a1-54 num-params) 0) + (set! (-> a1-54 message) message) + (set! v0-0 (send-event-function *camera-combiner* a1-54)))) + ((= v1-0 'toggle-slave-option) + (logxor! (-> self slave-options) (-> block param 0)) + (let ((a0-193 (-> self slave 0)) + (v1-360 (-> self slave 1))) + (if a0-193 (logxor! (-> a0-193 0 options) (-> block param 0))) + (set! v0-0 + (when v1-360 + (set! v0-0 (logxor (-> v1-360 0 options) (-> block param 0))) + (set! (-> v1-360 0 options) (the-as uint v0-0)) + v0-0)))) + (else + (set! v0-0 + (cond + ((= v1-0 'slave-option?) + (if (nonzero? (-> self num-slaves)) (logtest? (-> self slave (+ (-> self num-slaves) -1) 0 options) (-> block param 0)))) + ((= v1-0 'set-slave-option) + (when (nonzero? (-> self num-slaves)) + (set! v0-0 (logior (-> self slave (+ (-> self num-slaves) -1) 0 options) (-> block param 0))) + (set! (-> self slave (+ (-> self num-slaves) -1) 0 options) (the-as uint v0-0)) + v0-0)) + ((= v1-0 'clear-slave-option) + (when (nonzero? (-> self num-slaves)) + (set! v0-0 (logclear (-> self slave (+ (-> self num-slaves) -1) 0 options) (-> block param 0))) + (set! (-> self slave (+ (-> self num-slaves) -1) 0 options) (the-as uint v0-0)) + v0-0)) + ((= v1-0 'no-follow) + (when (nonzero? (-> self num-slaves)) + (set! (-> self slave (+ (-> self num-slaves) -1) 0 tracking no-follow) #t) + (vector-reset! (-> self slave (+ (-> self num-slaves) -1) 0 tracking follow-off))) + (set! (-> *camera-combiner* tracking no-follow) #t) + (set! v0-0 (-> *camera-combiner* tracking follow-off)) + (.svf (&-> (the-as vector v0-0) quad) vf0) + v0-0) + ((= v1-0 'yes-follow) + (if (nonzero? (-> self num-slaves)) (set! (-> self slave (+ (-> self num-slaves) -1) 0 tracking no-follow) #f)) + (set! (-> *camera-combiner* tracking no-follow) #f) + #f) + ((= v1-0 'blend-from-as-fixed) + (when (nonzero? (-> self num-slaves)) + (set! (-> self slave (+ (-> self num-slaves) -1) 0 blend-from-type) (the-as uint 0)) + 0)) + ((= v1-0 'point-of-interest) + (when (nonzero? (-> self num-slaves)) + (let ((a1-60 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-60 from) proc) + (set! (-> a1-60 num-params) argc) + (set! (-> a1-60 message) message) + (set! (-> a1-60 param 0) (-> block param 0)) + (set! (-> a1-60 param 1) (-> block param 1)) + (set! (-> a1-60 param 2) (-> block param 2)) + (set! (-> a1-60 param 3) (-> block param 3)) + (set! (-> a1-60 param 4) (-> block param 4)) + (set! (-> a1-60 param 5) (-> block param 5)) + (set! (-> a1-60 param 6) (-> block param 6)) + (send-event-function (ppointer->process (-> self slave (+ (-> self num-slaves) -1))) a1-60))) + (let ((a1-61 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-61 from) proc) + (set! (-> a1-61 num-params) argc) + (set! (-> a1-61 message) message) + (set! (-> a1-61 param 0) (-> block param 0)) + (set! (-> a1-61 param 1) (-> block param 1)) + (set! (-> a1-61 param 2) (-> block param 2)) + (set! (-> a1-61 param 3) (-> block param 3)) + (set! (-> a1-61 param 4) (-> block param 4)) + (set! (-> a1-61 param 5) (-> block param 5)) + (set! (-> a1-61 param 6) (-> block param 6)) + (send-event-function *camera-combiner* a1-61))) + ((= v1-0 'part-water-drip) + (set-time! (-> self water-drip-time)) + (set! (-> self water-drip-mult) (the-as float (-> block param 0))) + (set! (-> self water-drip-speed) (the-as float (-> block param 1)))) + (else (countdown (s3-1 (-> self num-slaves)) (let ((a1-62 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-62 from) proc) @@ -1529,99 +913,61 @@ (set! (-> a1-62 param 4) (-> block param 4)) (set! (-> a1-62 param 5) (-> block param 5)) (set! (-> a1-62 param 6) (-> block param 6)) - (send-event-function (ppointer->process (-> self slave s3-1)) a1-62) - ) - ) - #f - ) - ) - ) - ) - ) - ) - v0-0 - ) - ) - :enter (behavior () - (if (and (nonzero? camera-master-debug) *debug-segment*) - (add-connection *debug-engine* self camera-master-debug self #f #f) - ) - ) - :trans (behavior () - (when (not (paused?)) - (vector-negate! - (-> self local-down) - (vector-normalize-copy! (-> self local-down) (-> *standard-dynamics* gravity) 1.0) - ) - (cam-master-effect) - ) - ) - :code (behavior () - (loop - (if (and *dproc* *debug-segment*) - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'camera - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) - (set! (-> self string-min target y) (-> self stringMinHeight)) - (set! (-> self string-max target y) (-> self stringMaxHeight)) - (set! (-> self string-min target z) (-> self stringMinLength)) - (set! (-> self string-max target z) (-> self stringMaxLength)) - (set! (-> self string-push-z) (fmax (-> self string-min value z) (-> *CAMERA-bank* default-string-push-z))) - (master-track-target) - (set! (-> last-try-to-look-at-data horz) 0.0) - (set! (-> last-try-to-look-at-data vert) 0.0) - (when (send-event *camera* 'slave-option? #x4000) - (set! (-> self string-min target y) 18432.0) - (set! (-> self string-max target y) 18432.041) - ) + (send-event-function (ppointer->process (-> self slave s3-1)) a1-62))) + #f)))))) + v0-0)) + :enter + (behavior () + (if (and (nonzero? camera-master-debug) *debug-segment*) + (add-connection *debug-engine* self camera-master-debug self #f #f))) + :trans + (behavior () (when (not (paused?)) - (update! (-> self string-min) (the-as vector #f)) - (update! (-> self string-max) (the-as vector #f)) - (master-check-regions) - ) - (set! (-> self string-min value x) - (fmin (-> self string-min value x) (+ -4.096 (-> self string-max value x))) - ) - (set! (-> self string-min value y) - (fmin (-> self string-min value y) (+ -4.096 (-> self string-max value y))) - ) - (set! (-> self string-min value z) - (fmin (-> self string-min value z) (+ -4.096 (-> self string-max value z))) - ) - (if (nonzero? (-> self no-intro)) - (+! (-> self no-intro) -1) - ) - (if (nonzero? (-> self force-blend)) - (+! (-> self force-blend) -1) - ) - (suspend) - ) - ) - ) + (vector-negate! (-> self local-down) (vector-normalize-copy! (-> self local-down) (-> *standard-dynamics* gravity) 1.0)) + (cam-master-effect))) + :code + (behavior () + (loop + (if (and *dproc* *debug-segment*) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'camera + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) + (set! (-> self string-min target y) (-> self stringMinHeight)) + (set! (-> self string-max target y) (-> self stringMaxHeight)) + (set! (-> self string-min target z) (-> self stringMinLength)) + (set! (-> self string-max target z) (-> self stringMaxLength)) + (set! (-> self string-push-z) (fmax (-> self string-min value z) (-> *CAMERA-bank* default-string-push-z))) + (master-track-target) + (set! (-> last-try-to-look-at-data horz) 0.0) + (set! (-> last-try-to-look-at-data vert) 0.0) + (when (send-event *camera* 'slave-option? #x4000) + (set! (-> self string-min target y) 18432.0) + (set! (-> self string-max target y) 18432.041)) + (when (not (paused?)) + (update! (-> self string-min) (the-as vector #f)) + (update! (-> self string-max) (the-as vector #f)) + (master-check-regions)) + (set! (-> self string-min value x) (fmin (-> self string-min value x) (+ -4.096 (-> self string-max value x)))) + (set! (-> self string-min value y) (fmin (-> self string-min value y) (+ -4.096 (-> self string-max value y)))) + (set! (-> self string-min value z) (fmin (-> self string-min value z) (+ -4.096 (-> self string-max value z)))) + (if (nonzero? (-> self no-intro)) (+! (-> self no-intro) -1)) + (if (nonzero? (-> self force-blend)) (+! (-> self force-blend) -1)) + (suspend)))) (deftype list-keeper (process) - ((dummy float) - ) - ) - + ((dummy float))) (defstate list-keeper-active (camera-master) - :code (behavior () - (loop - (change-to-last-brother self) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (change-to-last-brother self) + (suspend)))) (defbehavior list-keeper-init camera-master () (go list-keeper-active) 0 - (none) - ) + (none)) (defbehavior cam-master-init camera-master () (set! *camera* self) @@ -1630,8 +976,7 @@ (set! (-> self master-options) (the-as uint 4)) (set! (-> self num-slaves) 0) (dotimes (v1-5 2) - (set! (-> self slave v1-5) (the-as (pointer camera-slave) #f)) - ) + (set! (-> self slave v1-5) (the-as (pointer camera-slave) #f))) (set! (-> self slave-options) (the-as uint 560)) (set! (-> self view-off-param-save) 1.0) (set! (-> self changer) (the-as uint (process->ppointer self))) @@ -1650,33 +995,21 @@ (init! (-> self string-min) gp-0 40.96 409.6 0.9) (set! (-> gp-0 y) (-> *CAMERA-bank* default-string-max-y)) (set! (-> gp-0 z) (-> *CAMERA-bank* default-string-max-z)) - (init! (-> self string-max) gp-0 40.96 409.6 0.9) - ) + (init! (-> self string-max) gp-0 40.96 409.6 0.9)) (set! (-> self outro-t-step) 0.0) (set! (-> self drawable-target) (the-as handle #f)) (set! (-> self which-bone) 0) - (let ((a1-3 (new-stack-vector0))) - (tracking-spline-method-10 (-> self target-spline) a1-3) - ) + (let ((a1-3 (new-stack-vector0))) (tracking-spline-method-10 (-> self target-spline) a1-3)) (set! (-> self pov-handle) (the-as handle #f)) (set! (-> self pov-bone) 0) (cond - ((process-spawn-function list-keeper list-keeper-init :from *camera-dead-pool* :to self) - ) - (else - (format 0 "ERROR : master camera list keeper failed to activate~%") - ) - ) + ((process-spawn-function list-keeper list-keeper-init :from *camera-dead-pool* :to self)) + (else (format 0 "ERROR : master camera list keeper failed to activate~%"))) (cond - ((process-spawn-function camera-slave cam-slave-init cam-free-floating #f :from *camera-dead-pool* :to self) - ) - (else - (format 0 "ERROR : first slave failed to activate~%") - ) - ) + ((process-spawn-function camera-slave cam-slave-init cam-free-floating #f :from *camera-dead-pool* :to self)) + (else (format 0 "ERROR : first slave failed to activate~%"))) (set! (-> self water-drip) (create-launch-control group-rain-screend-drop self)) (set! (-> self water-drip-time) (seconds -60)) (go cam-master-active) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/camera/cam-start.gc b/goal_src/jak1/engine/camera/cam-start.gc index f85fde398a..7ceb6e5d63 100644 --- a/goal_src/jak1/engine/camera/cam-start.gc +++ b/goal_src/jak1/engine/camera/cam-start.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/cam-combiner.gc") -;; name: cam-start.gc -;; name in dgo: cam-start -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun cam-stop () @@ -17,28 +12,21 @@ (set! *camera* #f) (set! *camera-combiner* #f) (set! *camera-base-mode* cam-string) - (none) - ) + (none)) (defun cam-start ((arg0 symbol)) (cam-stop) (process-spawn camera-combiner :init cam-combiner-init :from *camera-dead-pool* :to *camera-pool*) (set! *camera* (the-as camera-master - (ppointer->process - (process-spawn-function camera-master cam-master-init :from *camera-master-dead-pool* :to *camera-pool*) - ) - ) - ) - (if arg0 - (reset-cameras) - ) + (ppointer->process (process-spawn-function camera-master + cam-master-init + :from + *camera-master-dead-pool* + :to + *camera-pool*)))) + (if arg0 (reset-cameras)) 0 - (none) - ) + (none)) (cam-start #f) - - - - diff --git a/goal_src/jak1/engine/camera/cam-states-dbg.gc b/goal_src/jak1/engine/camera/cam-states-dbg.gc index 7e0351a960..34071eb3a2 100644 --- a/goal_src/jak1/engine/camera/cam-states-dbg.gc +++ b/goal_src/jak1/engine/camera/cam-states-dbg.gc @@ -1,98 +1,67 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/camera.gc") (require "pc/pckernel-impl.gc") -;; name: cam-states-dbg.gc -;; name in dgo: cam-states-dbg -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype cam-point-watch-bank (basic) - ((speed float) - (rot-speed degrees) - ) - ) - + ((speed float) + (rot-speed degrees))) (define *CAM_POINT_WATCH-bank* (new 'static 'cam-point-watch-bank :speed 1600.0 :rot-speed (degrees 0.6))) (defstate cam-point-watch (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self pivot-rad) 40960.0) - (set! (-> self blend-from-type) (the-as uint 1)) - (set! (-> self blend-to-type) (the-as uint 1)) - ) - ) - :code (behavior () - (loop - (let ((s5-0 (new-stack-vector0)) - (gp-0 (new-stack-vector0)) - ) - (when *camera-read-analog* - (let ((f28-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0)) - (f30-0 (analog-input (the-as int (-> *cpad-list* cpads 0 lefty)) 128.0 48.0 110.0 -1.0)) - (f26-0 (analog-input (the-as int (-> *cpad-list* cpads 0 rightx)) 128.0 48.0 110.0 -1.0)) - (f0-0 (analog-input (the-as int (-> *cpad-list* cpads 0 righty)) 128.0 48.0 110.0 -1.0)) - ) - (cond - ((cpad-hold? (-> *CAMERA-bank* joypad) r2) - (set! (-> s5-0 y) (- (-> s5-0 y) (* 0.2 (-> *CAM_POINT_WATCH-bank* rot-speed) (- f26-0)))) - (set! (-> s5-0 x) (- (-> s5-0 x) (* 0.2 (-> *CAM_POINT_WATCH-bank* rot-speed) (- f0-0)))) - (+! (-> gp-0 x) (* 0.2 (-> *CAM_POINT_WATCH-bank* speed) f28-0)) - (+! (-> gp-0 z) (* 0.2 (-> *CAM_POINT_WATCH-bank* speed) f30-0)) - ) - (else - (set! (-> s5-0 y) (- (-> s5-0 y) (* 2.0 (-> *CAM_POINT_WATCH-bank* rot-speed) (- f26-0)))) - (set! (-> s5-0 x) (- (-> s5-0 x) (* 2.0 (-> *CAM_POINT_WATCH-bank* rot-speed) (- f0-0)))) - (+! (-> gp-0 x) (* 2.0 (-> *CAM_POINT_WATCH-bank* speed) f28-0)) - (+! (-> gp-0 z) (* 2.0 (-> *CAM_POINT_WATCH-bank* speed) f30-0)) - ) - ) - ) - (let ((s4-0 (new-stack-vector0))) - (let ((s3-0 (new-stack-matrix0))) - (matrix-axis-angle! s3-0 (the-as vector (-> self tracking)) (- (-> s5-0 x))) - (vector-matrix*! s4-0 (-> self tracking inv-mat vector 2) s3-0) - (matrix-axis-angle! s3-0 (-> *camera* local-down) (- (-> s5-0 y))) - (vector-matrix*! s4-0 s4-0 s3-0) - ) - (forward-down->inv-matrix (the-as matrix (-> self tracking)) s4-0 (-> *camera* local-down)) - ) - (set! (-> self pivot-rad) (- (-> self pivot-rad) (-> gp-0 z))) - (if (< (-> self pivot-rad) 4096.0) - (set! (-> self pivot-rad) 4096.0) - ) - (set-vector! gp-0 0.0 0.0 (- (-> self pivot-rad)) 1.0) - (vector-matrix*! (-> self trans) gp-0 (the-as matrix (-> self tracking))) - ) - ) - (suspend) - 0 - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self pivot-rad) 40960.0) + (set! (-> self blend-from-type) (the-as uint 1)) + (set! (-> self blend-to-type) (the-as uint 1)))) + :code + (behavior () + (loop + (let ((s5-0 (new-stack-vector0)) + (gp-0 (new-stack-vector0))) + (when *camera-read-analog* + (let ((f28-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0)) + (f30-0 (analog-input (the-as int (-> *cpad-list* cpads 0 lefty)) 128.0 48.0 110.0 -1.0)) + (f26-0 (analog-input (the-as int (-> *cpad-list* cpads 0 rightx)) 128.0 48.0 110.0 -1.0)) + (f0-0 (analog-input (the-as int (-> *cpad-list* cpads 0 righty)) 128.0 48.0 110.0 -1.0))) + (cond + ((cpad-hold? (-> *CAMERA-bank* joypad) r2) + (set! (-> s5-0 y) (- (-> s5-0 y) (* 0.2 (-> *CAM_POINT_WATCH-bank* rot-speed) (- f26-0)))) + (set! (-> s5-0 x) (- (-> s5-0 x) (* 0.2 (-> *CAM_POINT_WATCH-bank* rot-speed) (- f0-0)))) + (+! (-> gp-0 x) (* 0.2 (-> *CAM_POINT_WATCH-bank* speed) f28-0)) + (+! (-> gp-0 z) (* 0.2 (-> *CAM_POINT_WATCH-bank* speed) f30-0))) + (else + (set! (-> s5-0 y) (- (-> s5-0 y) (* 2.0 (-> *CAM_POINT_WATCH-bank* rot-speed) (- f26-0)))) + (set! (-> s5-0 x) (- (-> s5-0 x) (* 2.0 (-> *CAM_POINT_WATCH-bank* rot-speed) (- f0-0)))) + (+! (-> gp-0 x) (* 2.0 (-> *CAM_POINT_WATCH-bank* speed) f28-0)) + (+! (-> gp-0 z) (* 2.0 (-> *CAM_POINT_WATCH-bank* speed) f30-0))))) + (let ((s4-0 (new-stack-vector0))) + (let ((s3-0 (new-stack-matrix0))) + (matrix-axis-angle! s3-0 (the-as vector (-> self tracking)) (- (-> s5-0 x))) + (vector-matrix*! s4-0 (-> self tracking inv-mat vector 2) s3-0) + (matrix-axis-angle! s3-0 (-> *camera* local-down) (- (-> s5-0 y))) + (vector-matrix*! s4-0 s4-0 s3-0)) + (forward-down->inv-matrix (the-as matrix (-> self tracking)) s4-0 (-> *camera* local-down))) + (set! (-> self pivot-rad) (- (-> self pivot-rad) (-> gp-0 z))) + (if (< (-> self pivot-rad) 4096.0) (set! (-> self pivot-rad) 4096.0)) + (set-vector! gp-0 0.0 0.0 (- (-> self pivot-rad)) 1.0) + (vector-matrix*! (-> self trans) gp-0 (the-as matrix (-> self tracking))))) + (suspend) + 0))) (deftype cam-free-bank (basic) - ((speed float) - (rot-speed degrees) - ) - ) - + ((speed float) + (rot-speed degrees))) (define *CAM_FREE-bank* (new 'static 'cam-free-bank :speed 1600.0 :rot-speed (degrees 0.6))) @@ -100,350 +69,187 @@ (when (and (!= *master-mode* 'menu) (not *cam-layout*)) (when *camera-read-buttons* (if (cpad-hold? arg3 x) - (set! (-> arg0 x) - (- (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 6)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) + (set! (-> arg0 x) + (- (-> arg0 x) + (+ (-> *CAM_FREE-bank* rot-speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 6)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* rot-speed))))))) (when *camera-read-buttons* (if (cpad-hold? arg3 triangle) - (+! (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 4)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) + (+! (-> arg0 x) + (+ (-> *CAM_FREE-bank* rot-speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 4)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* rot-speed)))))) (when *camera-read-buttons* (if (cpad-hold? arg3 square) - (+! (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 7)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) + (+! (-> arg0 y) + (+ (-> *CAM_FREE-bank* rot-speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 7)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* rot-speed)))))) (when *camera-read-buttons* (if (cpad-hold? arg3 circle) - (set! (-> arg0 y) - (- (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 5)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) - ) + (set! (-> arg0 y) + (- (-> arg0 y) + (+ (-> *CAM_FREE-bank* rot-speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 5)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* rot-speed)))))))) (when arg2 (when *camera-read-buttons* (if (cpad-hold? arg3 l2) - (+! (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 10)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) + (+! (-> arg0 z) + (+ (-> *CAM_FREE-bank* rot-speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 10)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* rot-speed)))))) (when *camera-read-buttons* (if (cpad-hold? arg3 r2) - (set! (-> arg0 z) - (- (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 11)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) - ) + (set! (-> arg0 z) + (- (-> arg0 z) + (+ (-> *CAM_FREE-bank* rot-speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 11)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* rot-speed)))))))) (cond - ((not *cam-free-move-along-z*) - ) - ((not *camera-read-analog*) - ) + ((not *cam-free-move-along-z*)) + ((not *camera-read-analog*)) ((cpad-hold? arg3 r2) (when *camera-read-buttons* (if (cpad-hold? arg3 r1) - (+! (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 9)) - 0.0 - 32.0 - 230.0 - (* 0.2 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) + (+! (-> arg1 y) + (+ (* 0.2 (-> *CAM_FREE-bank* speed)) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 9)) 0.0 32.0 230.0 (* 0.2 (-> *CAM_FREE-bank* speed))))))) (when *camera-read-buttons* (if (cpad-hold? arg3 l1) - (set! (-> arg1 y) - (- (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 8)) - 0.0 - 32.0 - 230.0 - (* 0.2 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - ) - ) + (set! (-> arg1 y) + (- (-> arg1 y) + (+ (* 0.2 (-> *CAM_FREE-bank* speed)) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 8)) 0.0 32.0 230.0 (* 0.2 (-> *CAM_FREE-bank* speed))))))))) (else - (when *camera-read-buttons* - (if (cpad-hold? arg3 r1) - (+! (-> arg1 y) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 9)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - (when *camera-read-buttons* - (if (cpad-hold? arg3 l1) - (set! (-> arg1 y) - (- (-> arg1 y) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 8)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - ) - ) + (when *camera-read-buttons* + (if (cpad-hold? arg3 r1) + (+! (-> arg1 y) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 9)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)))))) + (when *camera-read-buttons* + (if (cpad-hold? arg3 l1) + (set! (-> arg1 y) + (- (-> arg1 y) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 8)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed))))))))) (when (and (!= *master-mode* 'menu) (not *cam-layout*)) (when *camera-read-buttons* (if (cpad-hold? arg3 left) - (+! (-> arg1 x) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 1)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) + (+! (-> arg1 x) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 1)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)))))) (when *camera-read-buttons* (if (cpad-hold? arg3 right) - (set! (-> arg1 x) - (- (-> arg1 x) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 0)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) + (set! (-> arg1 x) + (- (-> arg1 x) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 0)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed))))))) (when *camera-read-buttons* (if (cpad-hold? arg3 up) - (+! (-> arg1 z) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 2)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) + (+! (-> arg1 z) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 2)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)))))) (when *camera-read-buttons* (if (cpad-hold? arg3 down) - (set! (-> arg1 z) - (- (-> arg1 z) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 3)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - ) + (set! (-> arg1 z) + (- (-> arg1 z) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 3)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)))))))) (when *camera-read-analog* (let ((f28-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 leftx)) 128.0 48.0 110.0 -1.0)) (f30-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 lefty)) 128.0 48.0 110.0 -1.0)) - (f24-0 (analog-input-horizontal-first (the-as int (-> *cpad-list* cpads arg3 rightx)) 128.0 48.0 110.0 -1.0)) ;; changed for pc port - (f26-0 (analog-input-vertical-first (the-as int (-> *cpad-list* cpads arg3 righty)) 128.0 48.0 110.0 -1.0)) ;; changed for pc port + (f24-0 (analog-input-horizontal-first (the-as int (-> *cpad-list* cpads arg3 rightx)) 128.0 48.0 110.0 -1.0)) ;; changed for pc port + (f26-0 (analog-input-vertical-first (the-as int (-> *cpad-list* cpads arg3 righty)) 128.0 48.0 110.0 -1.0)) ;; changed for pc port ) (when *display-load-boundaries* (when (and (!= arg3 1) (not (cpad-hold? 1 x)) (not (cpad-hold? 1 r1)) - (not (logtest? (-> *cpad-list* cpads 1 button0-abs 0) (pad-buttons r2))) - ) + (not (logtest? (-> *cpad-list* cpads 1 button0-abs 0) (pad-buttons r2)))) (+! f28-14 (analog-input (the-as int (-> *cpad-list* cpads 1 leftx)) 128.0 48.0 110.0 -1.0)) (+! f30-14 (analog-input (the-as int (-> *cpad-list* cpads 1 lefty)) 128.0 48.0 110.0 -1.0)) (+! f24-0 (analog-input (the-as int (-> *cpad-list* cpads 1 rightx)) 128.0 48.0 110.0 -1.0)) - (+! f26-0 (analog-input (the-as int (-> *cpad-list* cpads 1 righty)) 128.0 48.0 110.0 -1.0)) - ) - ) + (+! f26-0 (analog-input (the-as int (-> *cpad-list* cpads 1 righty)) 128.0 48.0 110.0 -1.0)))) (cond ((cpad-hold? arg3 r2) (cond ((cpad-hold? arg3 l2) (set! (-> arg0 y) (- (-> arg0 y) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f24-0)))) - (set! (-> arg0 x) (- (-> arg0 x) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) - ) + (set! (-> arg0 x) (- (-> arg0 x) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f26-0))))) (else - (set! (-> arg0 y) (- (-> arg0 y) (* (- f24-0) (-> *CAM_FREE-bank* rot-speed)))) - (set! (-> arg0 x) (- (-> arg0 x) (* (- f26-0) (-> *CAM_FREE-bank* rot-speed)))) - ) - ) + (set! (-> arg0 y) (- (-> arg0 y) (* (- f24-0) (-> *CAM_FREE-bank* rot-speed)))) + (set! (-> arg0 x) (- (-> arg0 x) (* (- f26-0) (-> *CAM_FREE-bank* rot-speed)))))) (+! (-> arg1 x) (* 0.2 (-> *CAM_FREE-bank* speed) f28-14)) - (+! (-> arg1 z) (* 0.2 (-> *CAM_FREE-bank* speed) f30-14)) - ) + (+! (-> arg1 z) (* 0.2 (-> *CAM_FREE-bank* speed) f30-14))) ((cpad-hold? arg3 l2) (+! (-> arg1 x) (* f28-14 (-> *CAM_FREE-bank* speed))) (+! (-> arg1 y) (* f26-0 (-> *CAM_FREE-bank* speed))) - (+! (-> arg1 z) (* f30-14 (-> *CAM_FREE-bank* speed))) - ) + (+! (-> arg1 z) (* f30-14 (-> *CAM_FREE-bank* speed)))) (else - (set! (-> arg0 y) (- (-> arg0 y) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f24-0)))) - (set! (-> arg0 x) (- (-> arg0 x) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) - (+! (-> arg1 x) (* 2.0 (-> *CAM_FREE-bank* speed) f28-14)) - (+! (-> arg1 z) (* 2.0 (-> *CAM_FREE-bank* speed) f30-14)) - ) - ) - ) - ) + (set! (-> arg0 y) (- (-> arg0 y) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f24-0)))) + (set! (-> arg0 x) (- (-> arg0 x) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) + (+! (-> arg1 x) (* 2.0 (-> *CAM_FREE-bank* speed) f28-14)) + (+! (-> arg1 z) (* 2.0 (-> *CAM_FREE-bank* speed) f30-14)))))) (vector-float*! arg0 arg0 (-> *display* time-adjust-ratio)) - (vector-float*! arg1 arg1 (-> *display* time-adjust-ratio)) - ) + (vector-float*! arg1 arg1 (-> *display* time-adjust-ratio))) (deftype camera-free-floating-move-info (structure) - ((rv vector :inline) - (tv vector :inline) - (up vector :inline) - (tm matrix :inline) - ) - ) - + ((rv vector :inline) + (tv vector :inline) + (up vector :inline) + (tm matrix :inline))) (defun cam-free-floating-move ((arg0 matrix) (arg1 vector) (arg2 vector) (arg3 int)) - (if (logtest? (-> *cpad-list* cpads arg3 valid) 128) - (return (the-as vector #f)) - ) - (if (= *master-mode* 'menu) - (return (the-as vector #f)) - ) + (if (logtest? (-> *cpad-list* cpads arg3 valid) 128) (return (the-as vector #f))) + (if (= *master-mode* 'menu) (return (the-as vector #f))) (let ((s3-0 (new 'stack 'camera-free-floating-move-info))) (cam-free-floating-input (-> s3-0 rv) (-> s3-0 tv) (not arg2) arg3) (cond (arg2 - (matrix-axis-angle! (-> s3-0 tm) arg2 (-> s3-0 rv y)) - (matrix*! arg0 arg0 (-> s3-0 tm)) - (cond - ((< (vector-dot (-> arg0 vector 1) arg2) 0.0) - (forward-down->inv-matrix arg0 (-> arg0 vector 2) arg2) - ) - (else - (vector-negate! (-> s3-0 up) arg2) - (forward-down->inv-matrix arg0 (-> arg0 vector 2) (-> s3-0 up)) - ) - ) - ) - (else - (matrix-axis-angle! (-> s3-0 tm) (-> arg0 vector 1) (- (-> s3-0 rv y))) - (matrix*! arg0 arg0 (-> s3-0 tm)) - ) - ) + (matrix-axis-angle! (-> s3-0 tm) arg2 (-> s3-0 rv y)) + (matrix*! arg0 arg0 (-> s3-0 tm)) + (cond + ((< (vector-dot (-> arg0 vector 1) arg2) 0.0) (forward-down->inv-matrix arg0 (-> arg0 vector 2) arg2)) + (else (vector-negate! (-> s3-0 up) arg2) (forward-down->inv-matrix arg0 (-> arg0 vector 2) (-> s3-0 up))))) + (else (matrix-axis-angle! (-> s3-0 tm) (-> arg0 vector 1) (- (-> s3-0 rv y))) (matrix*! arg0 arg0 (-> s3-0 tm)))) (matrix-axis-angle! (-> s3-0 tm) (the-as vector (-> arg0 vector)) (- (-> s3-0 rv x))) (matrix*! arg0 arg0 (-> s3-0 tm)) (matrix-axis-angle! (-> s3-0 tm) (-> arg0 vector 2) (- (-> s3-0 rv z))) (matrix*! arg0 arg0 (-> s3-0 tm)) (vector-matrix*! (-> s3-0 tv) (-> s3-0 tv) arg0) - (vector+! arg1 arg1 (-> s3-0 tv)) - ) - ) + (vector+! arg1 arg1 (-> s3-0 tv)))) (defstate cam-free-floating (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self blend-from-type) (the-as uint 1)) - (set! (-> self blend-to-type) (the-as uint 1)) - (send-event *camera-combiner* 'stop-tracking) - ) - ) - :code (behavior () - (loop - (let ((a2-0 (-> *camera* local-down))) - (if (logtest? (-> self options) 8) - (set! a2-0 (the-as vector #f)) - ) - (cam-free-floating-move - (the-as matrix (-> self tracking)) - (-> self trans) - a2-0 - (the-as int (-> *CAMERA-bank* joypad)) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self blend-from-type) (the-as uint 1)) + (set! (-> self blend-to-type) (the-as uint 1)) + (send-event *camera-combiner* 'stop-tracking))) + :code + (behavior () + (loop + (let ((a2-0 (-> *camera* local-down))) + (if (logtest? (-> self options) 8) (set! a2-0 (the-as vector #f))) + (cam-free-floating-move (the-as matrix (-> self tracking)) (-> self trans) a2-0 (the-as int (-> *CAMERA-bank* joypad)))) + (suspend)))) (deftype camera-orbit-info (structure) - ((radius float) - (rot float) - (target-off vector :inline) - (orbit-off vector :inline) - (radius-lerp float) - ) - ) - + ((radius float) + (rot float) + (target-off vector :inline) + (orbit-off vector :inline) + (radius-lerp float))) (deftype CAM_ORBIT-bank (basic) - ((RADIUS_MAX float) - (RADIUS_MIN float) - (TARGET_OFF_ADJUST float) - (ORBIT_OFF_ADJUST float) - ) - ) - + ((RADIUS_MAX float) + (RADIUS_MIN float) + (TARGET_OFF_ADJUST float) + (ORBIT_OFF_ADJUST float))) -(define *CAM_ORBIT-bank* (new 'static 'CAM_ORBIT-bank - :RADIUS_MAX 61440.0 - :RADIUS_MIN 409.6 - :TARGET_OFF_ADJUST 81.92 - :ORBIT_OFF_ADJUST 81.92 - ) - ) +(define *CAM_ORBIT-bank* + (new 'static 'CAM_ORBIT-bank :RADIUS_MAX 61440.0 :RADIUS_MIN 409.6 :TARGET_OFF_ADJUST 81.92 :ORBIT_OFF_ADJUST 81.92)) (define *camera-orbit-info* (new 'static 'camera-orbit-info)) @@ -454,114 +260,63 @@ (set! (-> *camera-orbit-info* orbit-off y) 4096.0) (defstate cam-orbit (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (if (not *camera-orbit-target*) - (cam-slave-go cam-free-floating) - ) - (let ((v1-4 (new-stack-vector0))) - (vector-! v1-4 (-> self trans) (-> *camera-orbit-target* 0 root trans)) - (set! (-> *camera-orbit-info* rot) (atan (-> v1-4 x) (-> v1-4 z))) - ) - (set! (-> self blend-from-type) (the-as uint 1)) - (set! (-> self blend-to-type) (the-as uint 1)) - ) - ) - :exit (behavior () - '() - ) - :code (behavior () - (loop - (if (not *camera-orbit-target*) - (cam-slave-go cam-free-floating) - ) - (when *camera-read-analog* - (let ((f0-0 (analog-input (the-as int (-> *cpad-list* cpads 0 righty)) 128.0 32.0 110.0 0.05))) - (cond - ((< (* 0.05 (- 1.0 (-> *camera-orbit-info* radius-lerp))) f0-0) - (+! (-> *camera-orbit-info* radius-lerp) (* 0.05 (- 1.0 (-> *camera-orbit-info* radius-lerp)))) - ) - ((< f0-0 (* 0.05 (- (-> *camera-orbit-info* radius-lerp)))) - (+! (-> *camera-orbit-info* radius-lerp) (* 0.05 (- (-> *camera-orbit-info* radius-lerp)))) - ) - (else - (+! (-> *camera-orbit-info* radius-lerp) f0-0) - ) - ) - ) - (set! (-> *camera-orbit-info* radius) - (lerp (-> *CAM_ORBIT-bank* RADIUS_MIN) (-> *CAM_ORBIT-bank* RADIUS_MAX) (-> *camera-orbit-info* radius-lerp)) - ) - ) - (cond - ((cpad-hold? 0 l2) - (if (cpad-hold? 0 l1) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (if (not *camera-orbit-target*) (cam-slave-go cam-free-floating)) + (let ((v1-4 (new-stack-vector0))) + (vector-! v1-4 (-> self trans) (-> *camera-orbit-target* 0 root trans)) + (set! (-> *camera-orbit-info* rot) (atan (-> v1-4 x) (-> v1-4 z)))) + (set! (-> self blend-from-type) (the-as uint 1)) + (set! (-> self blend-to-type) (the-as uint 1)))) + :exit + (behavior () + '()) + :code + (behavior () + (loop + (if (not *camera-orbit-target*) (cam-slave-go cam-free-floating)) + (when *camera-read-analog* + (let ((f0-0 (analog-input (the-as int (-> *cpad-list* cpads 0 righty)) 128.0 32.0 110.0 0.05))) + (cond + ((< (* 0.05 (- 1.0 (-> *camera-orbit-info* radius-lerp))) f0-0) + (+! (-> *camera-orbit-info* radius-lerp) (* 0.05 (- 1.0 (-> *camera-orbit-info* radius-lerp))))) + ((< f0-0 (* 0.05 (- (-> *camera-orbit-info* radius-lerp)))) + (+! (-> *camera-orbit-info* radius-lerp) (* 0.05 (- (-> *camera-orbit-info* radius-lerp))))) + (else (+! (-> *camera-orbit-info* radius-lerp) f0-0)))) + (set! (-> *camera-orbit-info* radius) + (lerp (-> *CAM_ORBIT-bank* RADIUS_MIN) (-> *CAM_ORBIT-bank* RADIUS_MAX) (-> *camera-orbit-info* radius-lerp)))) + (cond + ((cpad-hold? 0 l2) + (if (cpad-hold? 0 l1) (set! (-> *camera-orbit-info* target-off y) - (- (-> *camera-orbit-info* target-off y) (-> *CAM_ORBIT-bank* TARGET_OFF_ADJUST)) - ) - ) - (if (cpad-hold? 0 r1) - (+! (-> *camera-orbit-info* target-off y) (-> *CAM_ORBIT-bank* TARGET_OFF_ADJUST)) - ) - ) - (else - (if (cpad-hold? 0 l1) - (set! (-> *camera-orbit-info* orbit-off y) - (- (-> *camera-orbit-info* orbit-off y) (-> *CAM_ORBIT-bank* ORBIT_OFF_ADJUST)) - ) - ) - (if (cpad-hold? 0 r1) - (+! (-> *camera-orbit-info* orbit-off y) (-> *CAM_ORBIT-bank* ORBIT_OFF_ADJUST)) - ) - ) - ) - (when *camera-read-analog* - (let ((f0-20 - (analog-input (the-as int (-> *cpad-list* cpads 0 rightx)) 128.0 32.0 110.0 (* 21845.334 (seconds-per-frame))) - ) - ) - (set! (-> *camera-orbit-info* rot) - (the float (sar (shl (the int (+ (-> *camera-orbit-info* rot) f0-20)) 48) 48)) - ) - ) - ) - (let ((gp-0 (new-stack-vector0))) - (let ((s5-0 (new-stack-vector0))) - (set-vector! - (-> self trans) - (+ (-> *camera-orbit-target* 0 root trans x) - (* (sin (-> *camera-orbit-info* rot)) (-> *camera-orbit-info* radius)) - ) - (-> *camera-orbit-target* 0 root trans y) - (+ (-> *camera-orbit-target* 0 root trans z) - (* (cos (-> *camera-orbit-info* rot)) (-> *camera-orbit-info* radius)) - ) - 1.0 - ) - (vector+! (-> self trans) (-> self trans) (-> *camera-orbit-info* orbit-off)) - (vector+! - (-> self tracking follow-pt) - (-> *camera-orbit-target* 0 root trans) - (-> *camera-orbit-info* target-off) - ) - (vector-! s5-0 (-> self trans) (-> self tracking follow-pt)) - (set! (-> gp-0 y) (the float (sar (shl (the int (+ 32768.0 (atan (-> s5-0 x) (-> s5-0 z)))) 48) 48))) - (set! (-> gp-0 x) (atan (-> s5-0 y) (vector-xz-length s5-0))) - ) - (set! (-> gp-0 z) 0.0) - (matrix-rotate-zxy! (the-as matrix (-> self tracking)) gp-0) - ) - (suspend) - ) - ) - ) + (- (-> *camera-orbit-info* target-off y) (-> *CAM_ORBIT-bank* TARGET_OFF_ADJUST)))) + (if (cpad-hold? 0 r1) (+! (-> *camera-orbit-info* target-off y) (-> *CAM_ORBIT-bank* TARGET_OFF_ADJUST)))) + (else + (if (cpad-hold? 0 l1) + (set! (-> *camera-orbit-info* orbit-off y) + (- (-> *camera-orbit-info* orbit-off y) (-> *CAM_ORBIT-bank* ORBIT_OFF_ADJUST)))) + (if (cpad-hold? 0 r1) (+! (-> *camera-orbit-info* orbit-off y) (-> *CAM_ORBIT-bank* ORBIT_OFF_ADJUST))))) + (when *camera-read-analog* + (let ((f0-20 (analog-input (the-as int (-> *cpad-list* cpads 0 rightx)) 128.0 32.0 110.0 (* 21845.334 (seconds-per-frame))))) + (set! (-> *camera-orbit-info* rot) (the float (sar (shl (the int (+ (-> *camera-orbit-info* rot) f0-20)) 48) 48))))) + (let ((gp-0 (new-stack-vector0))) + (let ((s5-0 (new-stack-vector0))) + (set-vector! (-> self trans) + (+ (-> *camera-orbit-target* 0 root trans x) (* (sin (-> *camera-orbit-info* rot)) (-> *camera-orbit-info* radius))) + (-> *camera-orbit-target* 0 root trans y) + (+ (-> *camera-orbit-target* 0 root trans z) (* (cos (-> *camera-orbit-info* rot)) (-> *camera-orbit-info* radius))) + 1.0) + (vector+! (-> self trans) (-> self trans) (-> *camera-orbit-info* orbit-off)) + (vector+! (-> self tracking follow-pt) (-> *camera-orbit-target* 0 root trans) (-> *camera-orbit-info* target-off)) + (vector-! s5-0 (-> self trans) (-> self tracking follow-pt)) + (set! (-> gp-0 y) (the float (sar (shl (the int (+ 32768.0 (atan (-> s5-0 x) (-> s5-0 z)))) 48) 48))) + (set! (-> gp-0 x) (atan (-> s5-0 y) (vector-xz-length s5-0)))) + (set! (-> gp-0 z) 0.0) + (matrix-rotate-zxy! (the-as matrix (-> self tracking)) gp-0)) + (suspend)))) diff --git a/goal_src/jak1/engine/camera/cam-states.gc b/goal_src/jak1/engine/camera/cam-states.gc index deb33c1970..6cd935d6cc 100644 --- a/goal_src/jak1/engine/camera/cam-states.gc +++ b/goal_src/jak1/engine/camera/cam-states.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/pov-camera-h.gc") (require "engine/collide/collide-mesh-h.gc") (require "engine/camera/camera.gc") @@ -10,1006 +9,633 @@ (require "engine/anim/joint-h.gc") (require "engine/debug/debug.gc") -;; name: cam-states.gc -;; name in dgo: cam-states -;; dgos: GAME, ENGINE ;; note: changed for high fps - ;; DECOMP BEGINS (defstate cam-fixed (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self saved-pt quad) (-> self trans quad)) - (set! (-> self blend-from-type) (the-as uint 1)) - (set! (-> self blend-to-type) (the-as uint 0)) - 0 - ) - ) - :code (behavior () - (loop - (when (not (paused?)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> self trans quad) (-> self saved-pt quad)) - (cam-curve-pos (-> self trans) gp-0 (the-as curve #f) #f) - (when (!= (-> gp-0 w) 0.0) - (vector-normalize! gp-0 (the-as float 1.0)) - (forward-down->inv-matrix (the-as matrix (-> self tracking)) gp-0 (-> *camera* local-down)) - ) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self saved-pt quad) (-> self trans quad)) + (set! (-> self blend-from-type) (the-as uint 1)) + (set! (-> self blend-to-type) (the-as uint 0)) + 0)) + :code + (behavior () + (loop + (when (not (paused?)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> self trans quad) (-> self saved-pt quad)) + (cam-curve-pos (-> self trans) gp-0 (the-as curve #f) #f) + (when (!= (-> gp-0 w) 0.0) + (vector-normalize! gp-0 (the-as float 1.0)) + (forward-down->inv-matrix (the-as matrix (-> self tracking)) gp-0 (-> *camera* local-down))))) + (suspend)))) (defstate cam-fixed-read-entity (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (cond - ((-> self enter-has-run) - ) - ((-> self cam-entity) - (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) (-> self trans) 'trans) - (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) (the-as matrix (-> self tracking))) - (set! (-> self fov) (cam-slave-get-fov (-> self cam-entity))) - (cam-curve-setup (-> self trans)) - ((-> cam-fixed enter)) - ) - (else - (format #t "ERROR : cam-fixed-read-entity enter without entity~%") - ) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'interesting) - (send-event *camera* 'point-of-interest gp-0) - ) - ) - (go cam-fixed) - ) - :code (behavior () - (loop - (format *stdcon* "ERROR : stayed in cam-fixed-read-entity~%") - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (cond + ((-> self enter-has-run)) + ((-> self cam-entity) + (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) (-> self trans) 'trans) + (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) (the-as matrix (-> self tracking))) + (set! (-> self fov) (cam-slave-get-fov (-> self cam-entity))) + (cam-curve-setup (-> self trans)) + ((-> cam-fixed enter))) + (else (format #t "ERROR : cam-fixed-read-entity enter without entity~%"))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'interesting) + (send-event *camera* 'point-of-interest gp-0))) + (go cam-fixed)) + :code + (behavior () + (loop + (format *stdcon* "ERROR : stayed in cam-fixed-read-entity~%") + (suspend)))) (defstate cam-pov (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self blend-from-type) (the-as uint 1)) - (set! (-> self blend-to-type) (the-as uint 1)) - ) - ) - :trans (behavior () - (when (not (handle->process (-> *camera* pov-handle))) - (set! (-> self blend-from-type) (the-as uint 0)) - (cam-slave-go cam-fixed) - ) - ) - :code (behavior () - (loop - (when (not (paused?)) - (vector<-cspace! - (-> self trans) - (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone)) - ) - (let* ((v1-5 (-> self tracking)) - (a3-0 (-> (the-as pov-camera (-> *camera* pov-handle process 0)) - node-list - data - (-> *camera* pov-bone) - bone - transform - ) - ) - (a0-8 (-> a3-0 vector 0 quad)) - (a1-9 (-> a3-0 vector 1 quad)) - (a2-0 (-> a3-0 vector 2 quad)) - (a3-1 (-> a3-0 vector 3 quad)) - ) - (set! (-> v1-5 inv-mat vector 0 quad) a0-8) - (set! (-> v1-5 inv-mat vector 1 quad) a1-9) - (set! (-> v1-5 inv-mat vector 2 quad) a2-0) - (set! (-> v1-5 inv-mat vector 3 quad) a3-1) - ) - (vector-reset! (-> self tracking inv-mat vector 3)) - ) - (suspend) - ) - ) - ) - -(defstate cam-pov180 (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self blend-from-type) (the-as uint 1)) - (set! (-> self blend-to-type) (the-as uint 1)) - ) - ) - :trans (behavior () - (when (not (handle->process (-> *camera* pov-handle))) - (set! (-> self blend-from-type) (the-as uint 0)) - (cam-slave-go cam-fixed) - ) - ) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (s4-0 #t) - ) - (vector<-cspace! - gp-0 - (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone)) - ) - (let ((v1-11 (-> (the-as pov-camera (-> *camera* pov-handle process 0)) - node-list - data - (-> *camera* pov-bone) - bone - transform - ) - ) - ) - (vector-normalize-copy! s5-0 (-> v1-11 vector 2) (the-as float 1.0)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self blend-from-type) (the-as uint 1)) + (set! (-> self blend-to-type) (the-as uint 1)))) + :trans + (behavior () + (when (not (handle->process (-> *camera* pov-handle))) + (set! (-> self blend-from-type) (the-as uint 0)) + (cam-slave-go cam-fixed))) + :code + (behavior () (loop (when (not (paused?)) - (let ((s0-0 - (-> (the-as pov-camera (-> *camera* pov-handle process 0)) - node-list - data - (-> *camera* pov-bone) - bone - transform - ) - ) - (s1-0 - (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone) bone scale) - ) - (s3-0 (new 'stack-no-clear 'vector)) - ) - (let ((s2-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! - s2-0 - (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone)) - ) - (vector-normalize-copy! s3-0 (-> s0-0 vector 2) (the-as float 1.0)) - (set! s4-0 - (cond - ((and (< (vector-vector-distance s2-0 gp-0) 40960.0) (< (cos (the-as float 3640.889)) (vector-dot s5-0 s3-0))) - (set! (-> self trans quad) (-> s2-0 quad)) - (vector-negate! (the-as vector (-> self tracking)) (the-as vector (-> s0-0 vector))) - (set! (-> self tracking inv-mat vector 1 quad) (-> s0-0 vector 1 quad)) - (vector-negate! (-> self tracking inv-mat vector 2) (-> s0-0 vector 2)) - (set! (-> self fov) (* 2.0 (atan (/ 12.700255 (* 20.3 (-> s1-0 x))) (the-as float 1.0)))) - (vector-float*! (the-as vector (-> self tracking)) (the-as vector (-> self tracking)) (/ 1.0 (-> s1-0 x))) - (vector-reset! (-> self tracking inv-mat vector 3)) - (if s4-0 - (set! s4-0 #f) - ) - s4-0 - ) - (else - #t - ) - ) - ) - (set! (-> gp-0 quad) (-> s2-0 quad)) - ) - (set! (-> s5-0 quad) (-> s3-0 quad)) - ) - ) - (suspend) - ) - ) - ) - ) + (vector<-cspace! (-> self trans) + (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone))) + (let* ((v1-5 (-> self tracking)) + (a3-0 (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone) bone transform)) + (a0-8 (-> a3-0 vector 0 quad)) + (a1-9 (-> a3-0 vector 1 quad)) + (a2-0 (-> a3-0 vector 2 quad)) + (a3-1 (-> a3-0 vector 3 quad))) + (set! (-> v1-5 inv-mat vector 0 quad) a0-8) + (set! (-> v1-5 inv-mat vector 1 quad) a1-9) + (set! (-> v1-5 inv-mat vector 2 quad) a2-0) + (set! (-> v1-5 inv-mat vector 3 quad) a3-1)) + (vector-reset! (-> self tracking inv-mat vector 3))) + (suspend)))) + +(defstate cam-pov180 (camera-slave) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self blend-from-type) (the-as uint 1)) + (set! (-> self blend-to-type) (the-as uint 1)))) + :trans + (behavior () + (when (not (handle->process (-> *camera* pov-handle))) + (set! (-> self blend-from-type) (the-as uint 0)) + (cam-slave-go cam-fixed))) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (s4-0 #t)) + (vector<-cspace! gp-0 (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone))) + (let ((v1-11 (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone) bone transform))) + (vector-normalize-copy! s5-0 (-> v1-11 vector 2) (the-as float 1.0))) + (loop + (when (not (paused?)) + (let ((s0-0 (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone) bone transform)) + (s1-0 (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone) bone scale)) + (s3-0 (new 'stack-no-clear 'vector))) + (let ((s2-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! s2-0 (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone))) + (vector-normalize-copy! s3-0 (-> s0-0 vector 2) (the-as float 1.0)) + (set! s4-0 + (cond + ((and (< (vector-vector-distance s2-0 gp-0) 40960.0) (< (cos (the-as float 3640.889)) (vector-dot s5-0 s3-0))) + (set! (-> self trans quad) (-> s2-0 quad)) + (vector-negate! (the-as vector (-> self tracking)) (the-as vector (-> s0-0 vector))) + (set! (-> self tracking inv-mat vector 1 quad) (-> s0-0 vector 1 quad)) + (vector-negate! (-> self tracking inv-mat vector 2) (-> s0-0 vector 2)) + (set! (-> self fov) (* 2.0 (atan (/ 12.700255 (* 20.3 (-> s1-0 x))) (the-as float 1.0)))) + (vector-float*! (the-as vector (-> self tracking)) (the-as vector (-> self tracking)) (/ 1.0 (-> s1-0 x))) + (vector-reset! (-> self tracking inv-mat vector 3)) + (if s4-0 (set! s4-0 #f)) + s4-0) + (else #t))) + (set! (-> gp-0 quad) (-> s2-0 quad))) + (set! (-> s5-0 quad) (-> s3-0 quad)))) + (suspend))))) (defstate cam-pov-track (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'interesting) - (send-event *camera* 'point-of-interest gp-0) - ) - ) - ) - :trans (behavior () - (if (or (not (handle->process (-> *camera* pov-handle))) (not (logtest? (-> *camera* master-options) 2))) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (if (not (paused?)) - (vector<-cspace! - (-> self trans) - (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone)) - ) - ) - (suspend) - ) - ) - ) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self blend-from-type) (the-as uint 2)) + (set! (-> self blend-to-type) (the-as uint 2))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'interesting) + (send-event *camera* 'point-of-interest gp-0)))) + :trans + (behavior () + (if (or (not (handle->process (-> *camera* pov-handle))) (not (logtest? (-> *camera* master-options) 2))) + (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (if (not (paused?)) + (vector<-cspace! (-> self trans) + (-> (the-as pov-camera (-> *camera* pov-handle process 0)) node-list data (-> *camera* pov-bone)))) + (suspend)))) (defbehavior cam-standoff-calc-trans camera-slave () (if (-> self tracking no-follow) - (vector+! (-> self trans) (-> *camera* tpos-curr-adj) (-> self pivot-pt)) - (vector+! (-> self trans) (-> self tracking follow-pt) (-> self pivot-pt)) - ) - ) + (vector+! (-> self trans) (-> *camera* tpos-curr-adj) (-> self pivot-pt)) + (vector+! (-> self trans) (-> self tracking follow-pt) (-> self pivot-pt)))) (defstate cam-standoff (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('set-standoff-dist) - (vector-normalize! (-> self pivot-pt) (the-as float (-> block param 0))) - (cam-standoff-calc-trans) - ) - (('set-standoff-height) - (vector-flatten! (-> self pivot-pt) (-> self pivot-pt) (-> *camera* local-down)) - (vector--float*! - (-> self pivot-pt) - (-> self pivot-pt) - (-> *camera* local-down) - (the-as float (-> block param 0)) - ) - (cam-standoff-calc-trans) - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (vector-! (-> self pivot-pt) (-> self trans) (-> *camera* tpos-curr-adj)) - (cond - ((logtest? (-> self options) #x8000) - (set! (-> self blend-from-type) (the-as uint 0)) - (set! (-> self blend-to-type) (the-as uint 0)) - 0 - ) - (else - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - ) - ) - ) - (cam-calc-follow! (-> self tracking) (-> self trans) #f) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (when (not (paused?)) - (cam-calc-follow! (-> self tracking) (-> self trans) #t) - (cam-standoff-calc-trans) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('set-standoff-dist) (vector-normalize! (-> self pivot-pt) (the-as float (-> block param 0))) (cam-standoff-calc-trans)) + (('set-standoff-height) + (vector-flatten! (-> self pivot-pt) (-> self pivot-pt) (-> *camera* local-down)) + (vector--float*! (-> self pivot-pt) (-> self pivot-pt) (-> *camera* local-down) (the-as float (-> block param 0))) + (cam-standoff-calc-trans)) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (vector-! (-> self pivot-pt) (-> self trans) (-> *camera* tpos-curr-adj)) + (cond + ((logtest? (-> self options) #x8000) + (set! (-> self blend-from-type) (the-as uint 0)) + (set! (-> self blend-to-type) (the-as uint 0)) + 0) + (else (set! (-> self blend-from-type) (the-as uint 2)) (set! (-> self blend-to-type) (the-as uint 2))))) + (cam-calc-follow! (-> self tracking) (-> self trans) #f)) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (when (not (paused?)) + (cam-calc-follow! (-> self tracking) (-> self trans) #t) + (cam-standoff-calc-trans)) + (suspend)))) (defstate cam-standoff-read-entity (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (cond - ((-> self enter-has-run) - ) - ((-> self cam-entity) - (let ((gp-0 (new-stack-vector0)) - (s5-0 (new-stack-vector0)) - ) - (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'trans) - (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) s5-0 'align) - (vector-! (-> self pivot-pt) gp-0 s5-0) - ) - (vector+! (-> self trans) (-> *camera* tpos-curr-adj) (-> self pivot-pt)) - (set! (-> self fov) (cam-slave-get-fov (-> self cam-entity))) - (logior! (-> self options) (cam-slave-get-flags (-> self cam-entity) 'flags)) - (if (logtest? (-> self options) #x8000) + :enter + (behavior () + (cond + ((-> self enter-has-run)) + ((-> self cam-entity) + (let ((gp-0 (new-stack-vector0)) + (s5-0 (new-stack-vector0))) + (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'trans) + (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) s5-0 'align) + (vector-! (-> self pivot-pt) gp-0 s5-0)) + (vector+! (-> self trans) (-> *camera* tpos-curr-adj) (-> self pivot-pt)) + (set! (-> self fov) (cam-slave-get-fov (-> self cam-entity))) + (logior! (-> self options) (cam-slave-get-flags (-> self cam-entity) 'flags)) + (if (logtest? (-> self options) #x8000) (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) (the-as matrix (-> self tracking))) (set! (-> self tracking tilt-adjust target) - (cam-slave-get-float (-> self cam-entity) 'tiltAdjust (-> *CAMERA-bank* default-tilt-adjust)) - ) - ) - ((-> cam-standoff enter)) - ) - (else - (format #t "ERROR : cam-standoff-read-entity enter without entity~%") - ) - ) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-2 'interesting) - (send-event *camera* 'point-of-interest gp-2) - ) - ) - (go cam-standoff) - ) - :code (behavior () - (loop - (format *stdcon* "ERROR : stayed in cam-standoff-read-entity~%") - (suspend) - ) - ) - ) + (cam-slave-get-float (-> self cam-entity) 'tiltAdjust (-> *CAMERA-bank* default-tilt-adjust)))) + ((-> cam-standoff enter))) + (else (format #t "ERROR : cam-standoff-read-entity enter without entity~%"))) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-2 'interesting) + (send-event *camera* 'point-of-interest gp-2))) + (go cam-standoff)) + :code + (behavior () + (loop + (format *stdcon* "ERROR : stayed in cam-standoff-read-entity~%") + (suspend)))) (deftype cam-eye-bank (basic) - ((rot-speed float) - (max-degrees float) - (max-fov float) - (min-fov float) - ) - ) - + ((rot-speed float) + (max-degrees float) + (max-fov float) + (min-fov float))) (define *CAM_EYE-bank* - (new 'static 'cam-eye-bank :rot-speed 364.0889 :max-degrees 12743.111 :max-fov 11650.845 :min-fov 6189.511) - ) + (new 'static 'cam-eye-bank :rot-speed 364.0889 :max-degrees 12743.111 :max-fov 11650.845 :min-fov 6189.511)) ;; main first-person camera ;; og:preserve-this modified for high fps (defstate cam-eye (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (let ((v1-3 (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* target-height))))) - (vector-! (-> self trans) (-> *camera* tpos-curr) v1-3) - ) - (set! (-> self blend-from-type) (the-as uint 0)) - (set! (-> self blend-to-type) (the-as uint 0)) - 0 - ) - (set! (-> self fov) 11650.845) - ) - :exit (behavior () - (if (and *target* - (logtest? (-> *camera* master-options) 2) - (logtest? (-> *target* state-flags) (state-flags first-person-mode)) - ) - (send-event *target* 'end-mode) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (go cam-free-floating) - ) - ) - :code (behavior () - (let ((gp-0 (current-time))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (let ((v1-3 (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* target-height))))) + (vector-! (-> self trans) (-> *camera* tpos-curr) v1-3)) + (set! (-> self blend-from-type) (the-as uint 0)) + (set! (-> self blend-to-type) (the-as uint 0)) + 0) + (set! (-> self fov) 11650.845)) + :exit + (behavior () + (if (and *target* + (logtest? (-> *camera* master-options) 2) + (logtest? (-> *target* state-flags) (state-flags first-person-mode))) + (send-event *target* 'end-mode))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (go cam-free-floating))) + :code + (behavior () + (let ((gp-0 (current-time))) + (loop + (when (not (paused?)) + (let ((s4-0 (vector-reset! (new-stack-vector0))) + (s5-0 (new-stack-matrix0))) + (when *camera-read-analog* + (let ((f30-0 (analog-input-horizontal-first ;; og:preserve-this changed for pc port + (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) + (the-as float 0.0) + (the-as float 48.0) + (the-as float 110.0) + (the-as float -1.0))) + (f0-0 (analog-input-vertical-first ;; og:preserve-this changed for pc port + (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) + (the-as float 0.0) + (the-as float 48.0) + (the-as float 110.0) + (the-as float -1.0)))) + (set! (-> s4-0 y) (- (-> s4-0 y) (* (- f30-0) (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed))))) ;; og:preserve-this changed for high fps + (set! (-> s4-0 x) (- (-> s4-0 x) (* (- f0-0) (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed))))) ;; og:preserve-this changed for high fps + )) + (cond + ((< (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)) (-> s4-0 x)) ;; og:preserve-this changed for high fps + (set! (-> s4-0 x) (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed))) ;; og:preserve-this changed for high fps + ) + ((< (-> s4-0 x) (- (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)))) ;; og:preserve-this changed for high fps + (set! (-> s4-0 x) (- (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)))) ;; og:preserve-this changed for high fps + )) + (cond + ((< (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)) (-> s4-0 y)) ;; og:preserve-this changed for high fps + (set! (-> s4-0 y) (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed))) ;; og:preserve-this changed for high fps + ) + ((< (-> s4-0 y) (- (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)))) ;; og:preserve-this changed for high fps + (set! (-> s4-0 y) (- (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)))) ;; og:preserve-this changed for high fps + )) + (cond + ((and (= (-> s4-0 x) 0.0) (= (-> s4-0 y) 0.0)) (set! gp-0 (current-time))) + (else (let ((v1-44 (min 10 (max 1 (- (current-time) gp-0))))) (vector-float*! s4-0 s4-0 (* 0.1 (the float v1-44)))))) + (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) + (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) + (when (not (logtest? (-> self options) 8)) + (if (< (vector-dot (-> self tracking inv-mat vector 1) (-> *camera* local-down)) 0.0) + (forward-down->inv-matrix (the-as matrix (-> self tracking)) + (-> self tracking inv-mat vector 2) + (-> *camera* local-down)) + (forward-down->inv-matrix (the-as matrix (-> self tracking)) + (-> self tracking inv-mat vector 2) + (vector-negate! (new-stack-vector0) (-> *camera* local-down))))) + (matrix-axis-angle! s5-0 (the-as vector (-> self tracking)) (- (-> s4-0 x))) + (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0)) + (when (not (logtest? (-> self options) 8)) + (let ((f30-1 (vector-dot (-> *camera* local-down) (-> self tracking inv-mat vector 2)))) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (when (< (sin (-> *CAM_EYE-bank* max-degrees)) (fabs f30-1)) + (vector--float*! (-> self tracking inv-mat vector 2) (-> self tracking inv-mat vector 2) (-> *camera* local-down) f30-1) + (vector-normalize! (-> self tracking inv-mat vector 2) (cos (-> *CAM_EYE-bank* max-degrees))) + (if (< f30-1 0.0) + (vector--float*! (-> self tracking inv-mat vector 2) + (-> self tracking inv-mat vector 2) + (-> *camera* local-down) + (sin (-> *CAM_EYE-bank* max-degrees))) + (vector+float*! (-> self tracking inv-mat vector 2) + (-> self tracking inv-mat vector 2) + (-> *camera* local-down) + (sin (-> *CAM_EYE-bank* max-degrees)))) + (vector-cross! (-> self tracking inv-mat vector 1) + (-> self tracking inv-mat vector 2) + (the-as vector (-> self tracking))) + (set! (-> self tracking inv-mat vector 1 w) 0.0))))) + (let ((v1-76 (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* target-height))))) + (vector-! (-> self trans) (-> *camera* tpos-curr) v1-76)) + (suspend))))) + +(deftype cam-billy-bank (basic) + ((rot-speed float) + (tilt-degrees float))) + +(define *CAM_BILLY-bank* (new 'static 'cam-billy-bank :rot-speed 364.0889 :tilt-degrees -1820.4445)) + +(defstate cam-billy (camera-slave) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (let ((v1-3 (vector-float*! (new-stack-vector0) (-> *camera* local-down) (-> *camera* target-height)))) + (vector-! (-> self trans) (-> *camera* tpos-curr) v1-3)) + (set! (-> self blend-from-type) (the-as uint 0)) + (set! (-> self blend-to-type) (the-as uint 0)) + 0) + (set! (-> self fov) 9830.4) + (matrix-rotate-y! (the-as matrix (-> self tracking)) (the-as float -32768.0))) + :exit + (behavior () + '()) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (go cam-free-floating))) + :code + (behavior () (loop (when (not (paused?)) - (let ((s4-0 (vector-reset! (new-stack-vector0))) - (s5-0 (new-stack-matrix0)) - ) + (let ((s5-0 (vector-reset! (new-stack-vector0))) + (s4-0 (vector-reset! (new-stack-vector0))) + (s3-0 (vector-reset! (new-stack-vector0))) + (s2-0 (new-stack-vector0)) + (gp-0 (new-stack-matrix0))) + 0.0 (when *camera-read-analog* - (let ((f30-0 (analog-input-horizontal-first ;; og:preserve-this changed for pc port - (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) - (the-as float 0.0) - (the-as float 48.0) - (the-as float 110.0) - (the-as float -1.0) - ) - ) - (f0-0 (analog-input-vertical-first ;; og:preserve-this changed for pc port - (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) + (let ((f1-0 (analog-input-horizontal-first ;; og:preserve-this changed for pc port + (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) (the-as float 0.0) (the-as float 48.0) (the-as float 110.0) - (the-as float -1.0) - ) - ) - ) - (set! (-> s4-0 y) (- (-> s4-0 y) (* (- f30-0) (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed))))) ;; og:preserve-this changed for high fps - (set! (-> s4-0 x) (- (-> s4-0 x) (* (- f0-0) (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed))))) ;; og:preserve-this changed for high fps - ) - ) - (cond - ((< (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)) (-> s4-0 x)) ;; og:preserve-this changed for high fps - (set! (-> s4-0 x) (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed))) ;; og:preserve-this changed for high fps - ) - ((< (-> s4-0 x) (- (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)))) ;; og:preserve-this changed for high fps - (set! (-> s4-0 x) (- (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)))) ;; og:preserve-this changed for high fps - ) - ) - (cond - ((< (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)) (-> s4-0 y)) ;; og:preserve-this changed for high fps - (set! (-> s4-0 y) (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed))) ;; og:preserve-this changed for high fps - ) - ((< (-> s4-0 y) (- (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)))) ;; og:preserve-this changed for high fps - (set! (-> s4-0 y) (- (* (-> *display* time-adjust-ratio) (-> *CAM_EYE-bank* rot-speed)))) ;; og:preserve-this changed for high fps - ) - ) + (the-as float -1.0)))) + (set! (-> s5-0 y) (- (-> s5-0 y) (* (- f1-0) (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed))))) ;; og:preserve-this changed for high fps + )) (cond - ((and (= (-> s4-0 x) 0.0) (= (-> s4-0 y) 0.0)) - (set! gp-0 (current-time)) + ((< (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed)) (-> s5-0 y)) ;; og:preserve-this changed for high fps + (set! (-> s5-0 y) (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed))) ;; og:preserve-this changed for high fps ) - (else - (let ((v1-44 (min 10 (max 1 (- (current-time) gp-0))))) - (vector-float*! s4-0 s4-0 (* 0.1 (the float v1-44))) - ) - ) - ) - (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) - (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) - (when (not (logtest? (-> self options) 8)) - (if (< (vector-dot (-> self tracking inv-mat vector 1) (-> *camera* local-down)) 0.0) - (forward-down->inv-matrix - (the-as matrix (-> self tracking)) - (-> self tracking inv-mat vector 2) - (-> *camera* local-down) - ) - (forward-down->inv-matrix - (the-as matrix (-> self tracking)) - (-> self tracking inv-mat vector 2) - (vector-negate! (new-stack-vector0) (-> *camera* local-down)) - ) - ) - ) - (matrix-axis-angle! s5-0 (the-as vector (-> self tracking)) (- (-> s4-0 x))) - (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) - ) - (when (not (logtest? (-> self options) 8)) - (let ((f30-1 (vector-dot (-> *camera* local-down) (-> self tracking inv-mat vector 2)))) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (when (< (sin (-> *CAM_EYE-bank* max-degrees)) (fabs f30-1)) - (vector--float*! - (-> self tracking inv-mat vector 2) - (-> self tracking inv-mat vector 2) - (-> *camera* local-down) - f30-1 - ) - (vector-normalize! (-> self tracking inv-mat vector 2) (cos (-> *CAM_EYE-bank* max-degrees))) - (if (< f30-1 0.0) - (vector--float*! - (-> self tracking inv-mat vector 2) - (-> self tracking inv-mat vector 2) - (-> *camera* local-down) - (sin (-> *CAM_EYE-bank* max-degrees)) - ) - (vector+float*! - (-> self tracking inv-mat vector 2) - (-> self tracking inv-mat vector 2) - (-> *camera* local-down) - (sin (-> *CAM_EYE-bank* max-degrees)) - ) - ) - (vector-cross! - (-> self tracking inv-mat vector 1) - (-> self tracking inv-mat vector 2) - (the-as vector (-> self tracking)) - ) - (set! (-> self tracking inv-mat vector 1 w) 0.0) - ) - ) - ) - ) - (let ((v1-76 (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* target-height))))) - (vector-! (-> self trans) (-> *camera* tpos-curr) v1-76) - ) - (suspend) - ) - ) - ) - ) - -(deftype cam-billy-bank (basic) - ((rot-speed float) - (tilt-degrees float) - ) - ) - - -(define *CAM_BILLY-bank* (new 'static 'cam-billy-bank :rot-speed 364.0889 :tilt-degrees -1820.4445)) - -(defstate cam-billy (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (let ((v1-3 (vector-float*! (new-stack-vector0) (-> *camera* local-down) (-> *camera* target-height)))) - (vector-! (-> self trans) (-> *camera* tpos-curr) v1-3) - ) - (set! (-> self blend-from-type) (the-as uint 0)) - (set! (-> self blend-to-type) (the-as uint 0)) - 0 - ) - (set! (-> self fov) 9830.4) - (matrix-rotate-y! (the-as matrix (-> self tracking)) (the-as float -32768.0)) - ) - :exit (behavior () - '() - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (go cam-free-floating) - ) - ) - :code (behavior () - (loop - (when (not (paused?)) - (let ((s5-0 (vector-reset! (new-stack-vector0))) - (s4-0 (vector-reset! (new-stack-vector0))) - (s3-0 (vector-reset! (new-stack-vector0))) - (s2-0 (new-stack-vector0)) - (gp-0 (new-stack-matrix0)) - ) - 0.0 - (when *camera-read-analog* - (let ((f1-0 - (analog-input-horizontal-first ;; og:preserve-this changed for pc port - (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) - (the-as float 0.0) - (the-as float 48.0) - (the-as float 110.0) - (the-as float -1.0) - ) - ) - ) - (set! (-> s5-0 y) (- (-> s5-0 y) (* (- f1-0) (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed))))) ;; og:preserve-this changed for high fps - ) - ) - (cond - ((< (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed)) (-> s5-0 y)) ;; og:preserve-this changed for high fps - (set! (-> s5-0 y) (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed))) ;; og:preserve-this changed for high fps - ) - ((< (-> s5-0 y) (- (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed)))) ;; og:preserve-this changed for high fps - (set! (-> s5-0 y) (- (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed)))) ;; og:preserve-this changed for high fps - ) - ) - (set! (-> s3-0 x) (sin (the-as float 37319.11))) - (set! (-> s3-0 z) (cos (the-as float 37319.11))) - (set! (-> s4-0 x) (-> s3-0 z)) - (set! (-> s4-0 z) (- (-> s3-0 x))) - (vector-flatten! s2-0 (-> self tracking inv-mat vector 2) (-> *camera* local-down)) - (vector-normalize! s2-0 (the-as float 1.0)) - (let ((f0-14 (acos (vector-dot (-> self tracking inv-mat vector 2) s3-0)))) - (if (< (vector-dot (-> self tracking inv-mat vector 2) s4-0) 0.0) - (set! f0-14 (- f0-14)) - ) - (let ((f0-18 (cond - ((and (< 0.0 f0-14) (< 0.0 (-> s5-0 y))) - (fmin (-> s5-0 y) (fmax 0.0 (* 0.5 (- 10922.667 f0-14)))) - ) - ((and (< f0-14 0.0) (< (-> s5-0 y) 0.0)) - (fmax (-> s5-0 y) (fmin 0.0 (* 0.5 (- -10922.667 f0-14)))) - ) - (else - (-> s5-0 y) - ) - ) - ) - ) - (matrix-axis-angle! gp-0 (-> *camera* local-down) f0-18) - ) - ) - (vector-matrix*! (-> self tracking inv-mat vector 2) (-> self tracking inv-mat vector 2) gp-0) - ) - (set! (-> self tracking inv-mat vector 2 y) 0.0) - (vector-normalize! (-> self tracking inv-mat vector 2) (cos (-> *CAM_BILLY-bank* tilt-degrees))) - (set! (-> self tracking inv-mat vector 2 y) (sin (-> *CAM_BILLY-bank* tilt-degrees))) - (vector-cross! - (the-as vector (-> self tracking)) - (-> self tracking inv-mat vector 2) - (-> *camera* local-down) - ) - (vector-normalize! (the-as vector (-> self tracking)) (the-as float 1.0)) - (vector-cross! - (-> self tracking inv-mat vector 1) - (-> self tracking inv-mat vector 2) - (the-as vector (-> self tracking)) - ) - ) - (vector--float*! (-> self trans) (-> *camera* tpos-curr) (-> *camera* local-down) (-> *camera* target-height)) - (suspend) - ) - ) - ) + ((< (-> s5-0 y) (- (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed)))) ;; og:preserve-this changed for high fps + (set! (-> s5-0 y) (- (* (-> *display* time-adjust-ratio) (-> *CAM_BILLY-bank* rot-speed)))) ;; og:preserve-this changed for high fps + )) + (set! (-> s3-0 x) (sin (the-as float 37319.11))) + (set! (-> s3-0 z) (cos (the-as float 37319.11))) + (set! (-> s4-0 x) (-> s3-0 z)) + (set! (-> s4-0 z) (- (-> s3-0 x))) + (vector-flatten! s2-0 (-> self tracking inv-mat vector 2) (-> *camera* local-down)) + (vector-normalize! s2-0 (the-as float 1.0)) + (let ((f0-14 (acos (vector-dot (-> self tracking inv-mat vector 2) s3-0)))) + (if (< (vector-dot (-> self tracking inv-mat vector 2) s4-0) 0.0) (set! f0-14 (- f0-14))) + (let ((f0-18 (cond + ((and (< 0.0 f0-14) (< 0.0 (-> s5-0 y))) (fmin (-> s5-0 y) (fmax 0.0 (* 0.5 (- 10922.667 f0-14))))) + ((and (< f0-14 0.0) (< (-> s5-0 y) 0.0)) (fmax (-> s5-0 y) (fmin 0.0 (* 0.5 (- -10922.667 f0-14))))) + (else (-> s5-0 y))))) + (matrix-axis-angle! gp-0 (-> *camera* local-down) f0-18))) + (vector-matrix*! (-> self tracking inv-mat vector 2) (-> self tracking inv-mat vector 2) gp-0)) + (set! (-> self tracking inv-mat vector 2 y) 0.0) + (vector-normalize! (-> self tracking inv-mat vector 2) (cos (-> *CAM_BILLY-bank* tilt-degrees))) + (set! (-> self tracking inv-mat vector 2 y) (sin (-> *CAM_BILLY-bank* tilt-degrees))) + (vector-cross! (the-as vector (-> self tracking)) (-> self tracking inv-mat vector 2) (-> *camera* local-down)) + (vector-normalize! (the-as vector (-> self tracking)) (the-as float 1.0)) + (vector-cross! (-> self tracking inv-mat vector 1) + (-> self tracking inv-mat vector 2) + (the-as vector (-> self tracking)))) + (vector--float*! (-> self trans) (-> *camera* tpos-curr) (-> *camera* local-down) (-> *camera* target-height)) + (suspend)))) (defstate cam-spline (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (cond - ((-> self enter-has-run) - ) - ((-> self cam-entity) - (let ((gp-0 (new-stack-vector0))) - (set! (-> self fov) (cam-slave-get-fov (-> self cam-entity))) - (logior! (-> self options) (cam-slave-get-flags (-> self cam-entity) 'flags)) - (if (logtest? (-> self options) #x8000) + :enter + (behavior () + (cond + ((-> self enter-has-run)) + ((-> self cam-entity) + (let ((gp-0 (new-stack-vector0))) + (set! (-> self fov) (cam-slave-get-fov (-> self cam-entity))) + (logior! (-> self options) (cam-slave-get-flags (-> self cam-entity) 'flags)) + (if (logtest? (-> self options) #x8000) (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) (the-as matrix (-> self tracking))) (set! (-> self tracking tilt-adjust target) - (cam-slave-get-float (-> self cam-entity) 'tiltAdjust (-> *CAMERA-bank* default-tilt-adjust)) - ) - ) - (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'trans) - (cam-curve-setup gp-0) - ) - (vector-negate! (-> self saved-pt) (-> self spline-offset)) - (let ((a0-8 (res-lump-struct (-> self cam-entity) 'spline-offset structure :time (the-as float -1000000000.0)))) - (if a0-8 - (vector+! (-> self spline-offset) (-> self spline-offset) (the-as vector a0-8)) - ) - ) - (set! (-> self trans quad) (-> self saved-pt quad)) - (cam-calc-follow! (-> self tracking) (-> self trans) #f) - (set! (-> self spline-follow-dist) - (cam-slave-get-float (-> self cam-entity) 'spline-follow-dist (the-as float 0.0)) - ) - (cond - ((< 0.0 (-> self spline-follow-dist)) - (let ((s5-1 (new 'stack-no-clear 'vector)) - (gp-1 (new 'stack-no-clear 'vector)) - ) - (curve-get-pos! s5-1 (the-as float 0.0) (-> self spline-curve)) - (curve-get-pos! gp-1 (the-as float 1.0) (-> self spline-curve)) - (if (< (vector-vector-distance-squared s5-1 (-> self tracking follow-pt)) - (vector-vector-distance-squared gp-1 (-> self tracking follow-pt)) - ) - (set! (-> self spline-follow-dist) (- (-> self spline-follow-dist))) - ) - ) - (set! (-> self spline-tt) (curve-closest-point - (-> self spline-curve) - (-> self tracking follow-pt) - (the-as float 0.5) - (the-as float -4096.0) - 10 - (-> self spline-follow-dist) - ) - ) - ) - (else - (set! (-> self spline-follow-dist) 0.0) - ) - ) - (cam-curve-pos (-> self trans) (the-as vector #f) (the-as curve #f) #t) - (cond - ((logtest? (-> self options) #x8000) - (set! (-> self blend-from-type) (the-as uint 0)) - (set! (-> self blend-to-type) (the-as uint 0)) - 0 - ) - (else - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - ) - ) - ) - (else - (format #t "ERROR : cam-spline enter without entity~%") - ) - ) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-2 'interesting) - (send-event *camera* 'point-of-interest gp-2) - ) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (when (not (paused?)) - (cam-calc-follow! (-> self tracking) (-> self trans) #t) - (new 'stack 'curve) - (set! (-> self trans quad) (-> self saved-pt quad)) - (cam-curve-pos (-> self trans) (the-as vector #f) (the-as curve #f) #t) - ) - (suspend) - ) - ) - ) + (cam-slave-get-float (-> self cam-entity) 'tiltAdjust (-> *CAMERA-bank* default-tilt-adjust)))) + (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'trans) + (cam-curve-setup gp-0)) + (vector-negate! (-> self saved-pt) (-> self spline-offset)) + (let ((a0-8 (res-lump-struct (-> self cam-entity) 'spline-offset structure :time (the-as float -1000000000.0)))) + (if a0-8 (vector+! (-> self spline-offset) (-> self spline-offset) (the-as vector a0-8)))) + (set! (-> self trans quad) (-> self saved-pt quad)) + (cam-calc-follow! (-> self tracking) (-> self trans) #f) + (set! (-> self spline-follow-dist) (cam-slave-get-float (-> self cam-entity) 'spline-follow-dist (the-as float 0.0))) + (cond + ((< 0.0 (-> self spline-follow-dist)) + (let ((s5-1 (new 'stack-no-clear 'vector)) + (gp-1 (new 'stack-no-clear 'vector))) + (curve-get-pos! s5-1 (the-as float 0.0) (-> self spline-curve)) + (curve-get-pos! gp-1 (the-as float 1.0) (-> self spline-curve)) + (if (< (vector-vector-distance-squared s5-1 (-> self tracking follow-pt)) + (vector-vector-distance-squared gp-1 (-> self tracking follow-pt))) + (set! (-> self spline-follow-dist) (- (-> self spline-follow-dist))))) + (set! (-> self spline-tt) + (curve-closest-point (-> self spline-curve) + (-> self tracking follow-pt) + (the-as float 0.5) + (the-as float -4096.0) + 10 + (-> self spline-follow-dist)))) + (else (set! (-> self spline-follow-dist) 0.0))) + (cam-curve-pos (-> self trans) (the-as vector #f) (the-as curve #f) #t) + (cond + ((logtest? (-> self options) #x8000) + (set! (-> self blend-from-type) (the-as uint 0)) + (set! (-> self blend-to-type) (the-as uint 0)) + 0) + (else (set! (-> self blend-from-type) (the-as uint 2)) (set! (-> self blend-to-type) (the-as uint 2))))) + (else (format #t "ERROR : cam-spline enter without entity~%"))) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-2 'interesting) + (send-event *camera* 'point-of-interest gp-2)))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (when (not (paused?)) + (cam-calc-follow! (-> self tracking) (-> self trans) #t) + (new 'stack 'curve) + (set! (-> self trans quad) (-> self saved-pt quad)) + (cam-curve-pos (-> self trans) (the-as vector #f) (the-as curve #f) #t)) + (suspend)))) (defstate cam-decel (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (if (not (-> self enter-has-run)) - (set! (-> self saved-pt quad) (-> self trans quad)) - ) - ) - :code (behavior () - (loop - (when (not (paused?)) - (let ((s5-0 (new-stack-vector0)) - (gp-0 (new-stack-vector0)) - ) - (when (!= (-> *camera* outro-t-step) 0.0) - (curve-get-pos! s5-0 (parameter-ease-sin-clamp (-> *camera* outro-t)) (-> *camera* outro-curve)) - (+! (-> *camera* outro-t) (* (-> *camera* outro-t-step) (-> *display* time-adjust-ratio))) - (curve-get-pos! gp-0 (parameter-ease-sin-clamp (-> *camera* outro-t)) (-> *camera* outro-curve)) - (vector-! gp-0 gp-0 s5-0) - (cond - ((or (and (< (-> *camera* outro-t-step) 0.0) (>= (-> *camera* outro-exit-value) (-> *camera* outro-t))) - (and (< 0.0 (-> *camera* outro-t-step)) (>= (-> *camera* outro-t) (-> *camera* outro-exit-value))) - ) - (set! (-> *camera* outro-t) (-> *camera* outro-exit-value)) - (set! (-> *camera* outro-t-step) 0.0) - (vector+! (-> self velocity) (-> self velocity) gp-0) - (send-event *camera* 'outro-done) - ) - (else - (vector+! (-> self trans) (-> self trans) gp-0) - ) - ) - ) - ) - (vector-float*! (-> self velocity) (-> self velocity) 0.9) - (vector+! (-> self trans) (-> self trans) (-> self velocity)) - ) - (suspend) - ) - ) - ) - -(defstate cam-endlessfall (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - ) - ) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'cam-vector-seeker)) - (f30-0 (-> self velocity y)) - ) - (let ((s4-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> s4-0 quad) (-> self trans quad)) - (set! (-> s4-0 y) 0.0) - (set! (-> s5-0 quad) (-> self velocity quad)) - (set! (-> s5-0 y) 0.0) - (init! gp-0 s4-0 (the-as float 81.92) (fmax 819.2 (vector-length s5-0)) (the-as float 0.75)) - (set! (-> gp-0 vel quad) (-> s5-0 quad)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (if (not (-> self enter-has-run)) (set! (-> self saved-pt quad) (-> self trans quad)))) + :code + (behavior () (loop (when (not (paused?)) - (set! (-> gp-0 target x) (-> (target-pos 0) x)) - (set! (-> gp-0 target z) (-> (target-pos 0) z)) - (update! gp-0 (the-as vector #f)) - (when (< 819.2 (-> gp-0 max-vel)) - (set! (-> gp-0 max-vel) (* 0.9 (-> gp-0 max-vel))) - (if (< (-> gp-0 max-vel) 819.2) - (set! (-> gp-0 max-vel) 819.2) - ) - ) - (set! f30-0 (* 0.9 f30-0)) - (+! (-> self trans y) f30-0) - (set! (-> self trans x) (-> gp-0 value x)) - (set! (-> self trans z) (-> gp-0 value z)) - ) - (suspend) - ) - ) - ) - ) + (let ((s5-0 (new-stack-vector0)) + (gp-0 (new-stack-vector0))) + (when (!= (-> *camera* outro-t-step) 0.0) + (curve-get-pos! s5-0 (parameter-ease-sin-clamp (-> *camera* outro-t)) (-> *camera* outro-curve)) + (+! (-> *camera* outro-t) (* (-> *camera* outro-t-step) (-> *display* time-adjust-ratio))) + (curve-get-pos! gp-0 (parameter-ease-sin-clamp (-> *camera* outro-t)) (-> *camera* outro-curve)) + (vector-! gp-0 gp-0 s5-0) + (cond + ((or (and (< (-> *camera* outro-t-step) 0.0) (>= (-> *camera* outro-exit-value) (-> *camera* outro-t))) + (and (< 0.0 (-> *camera* outro-t-step)) (>= (-> *camera* outro-t) (-> *camera* outro-exit-value)))) + (set! (-> *camera* outro-t) (-> *camera* outro-exit-value)) + (set! (-> *camera* outro-t-step) 0.0) + (vector+! (-> self velocity) (-> self velocity) gp-0) + (send-event *camera* 'outro-done)) + (else (vector+! (-> self trans) (-> self trans) gp-0))))) + (vector-float*! (-> self velocity) (-> self velocity) 0.9) + (vector+! (-> self trans) (-> self trans) (-> self velocity))) + (suspend)))) + +(defstate cam-endlessfall (camera-slave) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self blend-from-type) (the-as uint 2)) + (set! (-> self blend-to-type) (the-as uint 2)))) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'cam-vector-seeker)) + (f30-0 (-> self velocity y))) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> self trans quad)) + (set! (-> s4-0 y) 0.0) + (set! (-> s5-0 quad) (-> self velocity quad)) + (set! (-> s5-0 y) 0.0) + (init! gp-0 s4-0 (the-as float 81.92) (fmax 819.2 (vector-length s5-0)) (the-as float 0.75)) + (set! (-> gp-0 vel quad) (-> s5-0 quad))) + (loop + (when (not (paused?)) + (set! (-> gp-0 target x) (-> (target-pos 0) x)) + (set! (-> gp-0 target z) (-> (target-pos 0) z)) + (update! gp-0 (the-as vector #f)) + (when (< 819.2 (-> gp-0 max-vel)) + (set! (-> gp-0 max-vel) (* 0.9 (-> gp-0 max-vel))) + (if (< (-> gp-0 max-vel) 819.2) (set! (-> gp-0 max-vel) 819.2))) + (set! f30-0 (* 0.9 f30-0)) + (+! (-> self trans y) f30-0) + (set! (-> self trans x) (-> gp-0 value x)) + (set! (-> self trans z) (-> gp-0 value z))) + (suspend))))) (defbehavior cam-circular-position-into-max-angle camera-slave ((arg0 vector) (arg1 vector) (arg2 float)) (let* ((f30-0 (vector-normalize-ret-len! arg0 (the-as float 1.0))) (f26-0 (vector-normalize-ret-len! arg1 (the-as float 1.0))) (f0-1 (vector-dot arg0 arg1)) (f28-0 (acos f0-1)) - (s3-0 (new 'stack-no-clear 'matrix)) - ) + (s3-0 (new 'stack-no-clear 'matrix))) (when *camera-read-analog* - (let ((f24-0 (analog-input-horizontal-third ;; og:preserve-this changed for pc port + (let ((f24-0 (analog-input-horizontal-third ;; og:preserve-this changed for pc port (the-as int (-> *cpad-list* cpads 0 rightx)) (the-as float 128.0) (the-as float 32.0) (the-as float 110.0) - (* 8192.0 (seconds-per-frame)) - ) - ) - (f1-2 (analog-input-vertical-third ;; og:preserve-this changed for pc port + (* 8192.0 (seconds-per-frame)))) + (f1-2 (analog-input-vertical-third ;; og:preserve-this changed for pc port (the-as int (-> *cpad-list* cpads 0 righty)) (the-as float 128.0) (the-as float 32.0) (the-as float 110.0) - (* 8192.0 (seconds-per-frame)) - ) - ) - (s2-0 (new-stack-matrix0)) - ) + (* 8192.0 (seconds-per-frame)))) + (s2-0 (new-stack-matrix0))) (let ((v1-20 (new 'stack-no-clear 'vector))) 0.0 - (if (< (-> self pivot-rad) f30-0) - (set! f24-0 (- f24-0)) - ) + (if (< (-> self pivot-rad) f30-0) (set! f24-0 (- f24-0))) (vector-cross! v1-20 arg1 arg0) (let ((f0-9 (vector-dot v1-20 (-> *camera* local-down)))) - (if (< f1-2 0.0) - (set! f1-2 (fmax f1-2 (* -0.15 f28-0))) - ) - (if (< f0-9 0.0) - (set! f1-2 (- f1-2)) - ) + (if (< f1-2 0.0) (set! f1-2 (fmax f1-2 (* -0.15 f28-0)))) + (if (< f0-9 0.0) (set! f1-2 (- f1-2))) (let* ((f1-3 (+ f24-0 f1-2)) - (f1-5 (fmin (* 8192.0 (seconds-per-frame)) (fmax (* -8192.0 (seconds-per-frame)) f1-3))) - ) + (f1-5 (fmin (* 8192.0 (seconds-per-frame)) (fmax (* -8192.0 (seconds-per-frame)) f1-3)))) (cond - ((and (< 0.0 f1-5) (< 0.0 f0-9) (< (-> self max-angle-curr) f28-0)) - (set! f1-5 0.0) - ) - ((and (< 0.0 f1-5) (< 0.0 f0-9)) - (set! f1-5 (fmin f1-5 (* 0.15 (- (-> self max-angle-curr) f28-0)))) - ) - ((and (< f1-5 0.0) (< f0-9 0.0) (< (-> self max-angle-curr) f28-0)) - (set! f1-5 0.0) - ) - ((and (< f1-5 0.0) (< f0-9 0.0)) - (set! f1-5 (fmax f1-5 (* 0.15 (- f28-0 (-> self max-angle-curr))))) - ) - ) - (matrix-axis-angle! s2-0 (-> *camera* local-down) f1-5) - ) - ) - ) - (vector-matrix*! arg1 arg1 s2-0) - ) - (let ((f0-15 (vector-dot arg0 arg1))) - (set! f28-0 (acos f0-15)) - ) - ) + ((and (< 0.0 f1-5) (< 0.0 f0-9) (< (-> self max-angle-curr) f28-0)) (set! f1-5 0.0)) + ((and (< 0.0 f1-5) (< 0.0 f0-9)) (set! f1-5 (fmin f1-5 (* 0.15 (- (-> self max-angle-curr) f28-0))))) + ((and (< f1-5 0.0) (< f0-9 0.0) (< (-> self max-angle-curr) f28-0)) (set! f1-5 0.0)) + ((and (< f1-5 0.0) (< f0-9 0.0)) (set! f1-5 (fmax f1-5 (* 0.15 (- f28-0 (-> self max-angle-curr))))))) + (matrix-axis-angle! s2-0 (-> *camera* local-down) f1-5)))) + (vector-matrix*! arg1 arg1 s2-0)) + (let ((f0-15 (vector-dot arg0 arg1))) (set! f28-0 (acos f0-15)))) (cond ((< (-> self max-angle-curr) f28-0) - (matrix-from-two-vectors-max-angle! - s3-0 - arg1 - arg0 - (* (fmin 1.0 (* arg2 (-> *display* time-adjust-ratio))) (- f28-0 (-> self max-angle-curr))) - ) - (vector-matrix*! arg0 arg1 s3-0) - ) + (matrix-from-two-vectors-max-angle! s3-0 + arg1 + arg0 + (* (fmin 1.0 (* arg2 (-> *display* time-adjust-ratio))) (- f28-0 (-> self max-angle-curr)))) + (vector-matrix*! arg0 arg1 s3-0)) ((and (logtest? (-> self options) 2) (or (and (>= f26-0 (+ -8192.0 f30-0)) (>= f30-0 (+ -8192.0 (-> self pivot-rad)))) - (and (>= (+ 8192.0 f30-0) f26-0) (>= (+ 8192.0 (-> self pivot-rad)) f30-0)) - ) - ) + (and (>= (+ 8192.0 f30-0) f26-0) (>= (+ 8192.0 (-> self pivot-rad)) f30-0)))) (let ((s2-1 (new 'stack-no-clear 'vector))) (vector-cross! s2-1 arg1 arg0) (vector-normalize! s2-1 (the-as float 1.0)) - (matrix-axis-angle! - s3-0 - s2-1 - (* (fmin 1.0 (* arg2 (-> *display* time-adjust-ratio))) (- (-> self max-angle-curr) f28-0)) - ) - ) - (vector-matrix*! arg0 arg1 s3-0) - ) - (else - (set! (-> arg0 quad) (-> arg1 quad)) - (if (logtest? (-> self options) 2048) - (set! (-> self max-angle-curr) f28-0) - ) - ) - ) - ) - (vector-normalize! arg0 (-> self pivot-rad)) - ) + (matrix-axis-angle! s3-0 + s2-1 + (* (fmin 1.0 (* arg2 (-> *display* time-adjust-ratio))) (- (-> self max-angle-curr) f28-0)))) + (vector-matrix*! arg0 arg1 s3-0)) + (else (set! (-> arg0 quad) (-> arg1 quad)) (if (logtest? (-> self options) 2048) (set! (-> self max-angle-curr) f28-0))))) + (vector-normalize! arg0 (-> self pivot-rad))) (defbehavior cam-circular-position camera-slave ((arg0 symbol)) (let ((gp-0 (new 'stack-no-clear 'vector))) (let ((s5-0 (new 'stack-no-clear 'vector))) (if (logtest? (-> self options) 130) - (vector-! gp-0 (-> self circular-follow) (-> self pivot-pt)) - (vector-! gp-0 (-> self pivot-pt) (-> self circular-follow)) - ) + (vector-! gp-0 (-> self circular-follow) (-> self pivot-pt)) + (vector-! gp-0 (-> self pivot-pt) (-> self circular-follow))) (vector-! s5-0 (-> self trans) (-> self pivot-pt)) (when (not (logtest? (-> self options) 4)) (vector-flatten! gp-0 gp-0 (-> *camera* local-down)) - (vector-flatten! s5-0 s5-0 (-> *camera* local-down)) - ) + (vector-flatten! s5-0 s5-0 (-> *camera* local-down))) (cond ((logtest? (-> self options) 128) (let ((f0-1 (- (vector-length gp-0) (-> self pivot-rad)))) - (if (>= 0.0 f0-1) - (vector-reset! gp-0) - (vector-normalize! gp-0 f0-1) - ) - ) - ) + (if (>= 0.0 f0-1) (vector-reset! gp-0) (vector-normalize! gp-0 f0-1)))) ((not arg0) (set! (-> self max-angle-curr) (-> self max-angle-offset)) - (cam-circular-position-into-max-angle gp-0 s5-0 (the-as float 1.0)) - ) - (else - (cam-circular-position-into-max-angle gp-0 s5-0 (the-as float 0.05)) - ) - ) - ) - (vector+! (-> self trans) gp-0 (-> self pivot-pt)) - ) - ) + (cam-circular-position-into-max-angle gp-0 s5-0 (the-as float 1.0))) + (else (cam-circular-position-into-max-angle gp-0 s5-0 (the-as float 0.05))))) + (vector+! (-> self trans) gp-0 (-> self pivot-pt)))) (defbehavior cam-circular-code camera-slave () (set! (-> self pivot-pt quad) (-> self saved-pt quad)) @@ -1018,164 +644,109 @@ (vector-! a2-1 (-> *camera* tpos-curr-adj) (-> self pivot-pt)) (vector-! (-> self circular-follow) (-> self circular-follow) (-> self pivot-pt)) (if (logtest? (-> self options) 4) - (v-slrp3! - (-> self circular-follow) - (-> self circular-follow) - a2-1 - (the-as vector #f) - (* 182.04445 (-> *display* time-adjust-ratio)) - ) - (v-slrp3! - (-> self circular-follow) - (-> self circular-follow) - a2-1 - (-> *camera* local-down) - (* 182.04445 (-> *display* time-adjust-ratio)) - ) - ) - ) + (v-slrp3! (-> self circular-follow) + (-> self circular-follow) + a2-1 + (the-as vector #f) + (* 182.04445 (-> *display* time-adjust-ratio))) + (v-slrp3! (-> self circular-follow) + (-> self circular-follow) + a2-1 + (-> *camera* local-down) + (* 182.04445 (-> *display* time-adjust-ratio))))) (vector+! (-> self circular-follow) (-> self circular-follow) (-> self pivot-pt)) (cam-circular-position #t) (if (!= (-> self fov1) 0.0) - (set! (-> self fov) - (lerp-clamp - (-> self fov0) - (-> self fov1) - (parameter-ease-sin-clamp (cam-index-method-10 (-> self fov-index) (-> *camera* tpos-curr-adj))) - ) - ) - ) - ) + (set! (-> self fov) + (lerp-clamp (-> self fov0) + (-> self fov1) + (parameter-ease-sin-clamp (cam-index-method-10 (-> self fov-index) (-> *camera* tpos-curr-adj))))))) (defstate cam-circular (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (('outro-done) - (set! (-> self trans quad) (-> *camera-combiner* trans quad)) - (cam-circular-position #f) - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (cond - ((-> self enter-has-run) - ) - (else - (let ((gp-0 (new-stack-vector0))) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (set! (-> self view-off-param) 1.0) - (set! (-> self circular-follow quad) (-> *camera* tpos-curr-adj quad)) - (set! (-> self max-angle-offset) 0.0) - (cond - ((-> self cam-entity) - (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) (-> self saved-pt) 'pivot) - (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'trans) - (set! (-> self pivot-rad) (vector-length (vector-! gp-0 gp-0 (-> self saved-pt)))) - (logior! (-> self options) (cam-slave-get-flags (-> self cam-entity) 'flags)) - (set! (-> self fov) (cam-slave-get-fov (-> self cam-entity))) - (set! (-> self tracking tilt-adjust target) - (cam-slave-get-float (-> self cam-entity) 'tiltAdjust (-> *CAMERA-bank* default-tilt-adjust)) - ) - (set! (-> self max-angle-offset) (cam-slave-get-float (-> self cam-entity) 'maxAngle (the-as float 0.0))) - (if (< (-> self max-angle-offset) 0.0) - (set! (-> self max-angle-offset) 0.0) - ) - (set! (-> self fov1) (cam-slave-get-float (-> self cam-entity) 'focalPull (the-as float 0.0))) - (cond - ((and (!= (-> self fov1) 0.0) - (cam-index-method-9 (-> self fov-index) 'focalpull (-> self cam-entity) (-> self saved-pt) (the-as curve #f)) - ) - (set! (-> self fov0) (-> self fov)) - (set! (-> self fov) (lerp-clamp - (-> self fov0) - (-> self fov1) - (cam-index-method-10 (-> self fov-index) (-> *camera* tpos-curr-adj)) - ) - ) - ) - (else - (set! (-> self fov1) 0.0) - ) - ) - (cam-curve-setup (-> self saved-pt)) - (set! (-> self pivot-pt quad) (-> self saved-pt quad)) - (cam-curve-pos (-> self pivot-pt) (the-as vector #f) (the-as curve #f) #f) - ) - ((logtest? (-> self options) 128) - (vector-! (-> self pivot-pt) (-> *camera* tpos-curr-adj) (-> self trans)) - (vector-flatten! (-> self pivot-pt) (-> self pivot-pt) (-> *camera* local-down)) - (set! (-> self pivot-rad) (vector-length (-> self pivot-pt))) - (set! (-> self pivot-pt quad) (-> self trans quad)) - (set! (-> self saved-pt quad) (-> self pivot-pt quad)) - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (('outro-done) (set! (-> self trans quad) (-> *camera-combiner* trans quad)) (cam-circular-position #f)) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (cond + ((-> self enter-has-run)) + (else + (let ((gp-0 (new-stack-vector0))) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (set! (-> self view-off-param) 1.0) + (set! (-> self circular-follow quad) (-> *camera* tpos-curr-adj quad)) + (set! (-> self max-angle-offset) 0.0) + (cond + ((-> self cam-entity) + (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) (-> self saved-pt) 'pivot) + (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-0 'trans) + (set! (-> self pivot-rad) (vector-length (vector-! gp-0 gp-0 (-> self saved-pt)))) + (logior! (-> self options) (cam-slave-get-flags (-> self cam-entity) 'flags)) + (set! (-> self fov) (cam-slave-get-fov (-> self cam-entity))) + (set! (-> self tracking tilt-adjust target) + (cam-slave-get-float (-> self cam-entity) 'tiltAdjust (-> *CAMERA-bank* default-tilt-adjust))) + (set! (-> self max-angle-offset) (cam-slave-get-float (-> self cam-entity) 'maxAngle (the-as float 0.0))) + (if (< (-> self max-angle-offset) 0.0) (set! (-> self max-angle-offset) 0.0)) + (set! (-> self fov1) (cam-slave-get-float (-> self cam-entity) 'focalPull (the-as float 0.0))) + (cond + ((and (!= (-> self fov1) 0.0) + (cam-index-method-9 (-> self fov-index) 'focalpull (-> self cam-entity) (-> self saved-pt) (the-as curve #f))) + (set! (-> self fov0) (-> self fov)) + (set! (-> self fov) + (lerp-clamp (-> self fov0) (-> self fov1) (cam-index-method-10 (-> self fov-index) (-> *camera* tpos-curr-adj))))) + (else (set! (-> self fov1) 0.0))) + (cam-curve-setup (-> self saved-pt)) + (set! (-> self pivot-pt quad) (-> self saved-pt quad)) + (cam-curve-pos (-> self pivot-pt) (the-as vector #f) (the-as curve #f) #f)) + ((logtest? (-> self options) 128) + (vector-! (-> self pivot-pt) (-> *camera* tpos-curr-adj) (-> self trans)) + (vector-flatten! (-> self pivot-pt) (-> self pivot-pt) (-> *camera* local-down)) + (set! (-> self pivot-rad) (vector-length (-> self pivot-pt))) + (set! (-> self pivot-pt quad) (-> self trans quad)) + (set! (-> self saved-pt quad) (-> self pivot-pt quad))) + (else (vector-! (-> self pivot-pt) (-> *camera* tpos-curr-adj) (-> self trans)) (vector-float*! (-> self pivot-pt) (-> self pivot-pt) 0.5) (vector-flatten! (-> self pivot-pt) (-> self pivot-pt) (-> *camera* local-down)) (set! (-> self pivot-rad) (vector-length (-> self pivot-pt))) (vector+! (-> self pivot-pt) (-> self trans) (-> self pivot-pt)) - (set! (-> self saved-pt quad) (-> self pivot-pt quad)) - ) - ) - ) - (cam-circular-position #f) - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - ) - ) - (let ((gp-3 (new 'stack-no-clear 'vector))) - (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-3 'interesting) - (send-event *camera* 'point-of-interest gp-3) - ) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (if (not (paused?)) - (cam-circular-code) - ) - (suspend) - ) - ) - ) + (set! (-> self saved-pt quad) (-> self pivot-pt quad))))) + (cam-circular-position #f) + (set! (-> self blend-from-type) (the-as uint 2)) + (set! (-> self blend-to-type) (the-as uint 2)))) + (let ((gp-3 (new 'stack-no-clear 'vector))) + (if (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) gp-3 'interesting) + (send-event *camera* 'point-of-interest gp-3)))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (if (not (paused?)) (cam-circular-code)) + (suspend)))) (defstate cam-lookat (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self blend-from-type) (the-as uint 2)) + (set! (-> self blend-to-type) (the-as uint 2)))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (suspend)))) (deftype cam-string-bank (basic) - ((los-coll-rad meters) - (los-coll-rad2 meters) - ) - ) - + ((los-coll-rad meters) + (los-coll-rad2 meters))) (define *CAM_STRING-bank* (new 'static 'cam-string-bank :los-coll-rad (meters 1) :los-coll-rad2 (meters 0.5))) @@ -1184,51 +755,36 @@ (s4-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'collide-tri-result)) (f30-0 0.0) - (s2-0 (new 'stack-no-clear 'matrix)) - ) + (s2-0 (new 'stack-no-clear 'matrix))) (vector-flatten! s5-0 (-> *camera-combiner* inv-camera-rot vector 2) (-> *camera* local-down)) (if (= (vector-normalize-ret-len! s5-0 (- (+ 1024.0 (-> *CAMERA-bank* default-string-min-z)))) 0.0) - (set! (-> s5-0 z) (+ 1024.0 (-> *CAMERA-bank* default-string-min-z))) - ) + (set! (-> s5-0 z) (+ 1024.0 (-> *CAMERA-bank* default-string-min-z)))) (vector--float*! s5-0 s5-0 (-> *camera* local-down) (-> *CAMERA-bank* default-string-min-y)) (set! (-> arg0 quad) (-> s5-0 quad)) (loop (vector--float*! s4-0 arg0 (-> *camera* local-down) (-> *camera* target-height)) - (if (< (fill-and-probe-using-line-sphere - *collide-cache* - (-> *camera* tpos-curr-adj) - arg0 - (the-as float 409.6) - (collide-kind background cak-3 wall-object ground-object cak-14) - (the-as process #f) - s3-0 - (new 'static 'pat-surface :nocamera #x1) - ) - 0.0 - ) - (return #t) - ) - (set! f30-0 (cond - ((>= -32768.0 f30-0) - (format #t "cam-string didn't find a spot~%") - (set! (-> arg0 quad) (-> s5-0 quad)) - (return #f) - f30-0 - ) - ((< 0.0 f30-0) - (- f30-0) - ) - (else - (- 5461.3335 f30-0) - ) - ) - ) + (if (< (fill-and-probe-using-line-sphere *collide-cache* + (-> *camera* tpos-curr-adj) + arg0 + (the-as float 409.6) + (collide-kind background cak-3 wall-object ground-object cak-14) + (the-as process #f) + s3-0 + (new 'static 'pat-surface :nocamera #x1)) + 0.0) + (return #t)) + (set! f30-0 + (cond + ((>= -32768.0 f30-0) + (format #t "cam-string didn't find a spot~%") + (set! (-> arg0 quad) (-> s5-0 quad)) + (return #f) + f30-0) + ((< 0.0 f30-0) (- f30-0)) + (else (- 5461.3335 f30-0)))) (matrix-axis-angle! s2-0 (-> *camera* local-down) f30-0) - (vector-matrix*! arg0 s5-0 s2-0) - ) - ) - (the-as symbol #f) - ) + (vector-matrix*! arg0 s5-0 s2-0))) + (the-as symbol #f)) (defbehavior cam-string-set-position-rel! camera-slave ((arg0 vector)) (vector-flatten! (-> self view-flat) arg0 (-> *camera* local-down)) @@ -1237,175 +793,113 @@ (set! (-> self string-trans quad) (-> self desired-pos quad)) (tracking-spline-method-10 (-> self position-spline) (-> self desired-pos)) (vector-reset! (-> self velocity)) - (let ((v0-3 (logand -4097 (-> self options)))) - (set! (-> self options) v0-3) - (the-as int v0-3) - ) - ) + (let ((v0-3 (logand -4097 (-> self options)))) (set! (-> self options) v0-3) (the-as int v0-3))) (defun string-push-help () - (the-as float 409.6) - ) + (the-as float 409.6)) (defun-debug cam-draw-collide-cache ((arg0 collide-cache)) (let ((gp-0 (-> arg0 tris))) (countdown (s5-0 (-> arg0 num-tris)) (let ((t1-0 #x40000080)) - (add-debug-flat-triangle - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> gp-0 0)) - (-> gp-0 0 vertex 1) - (-> gp-0 0 vertex 2) - (the-as rgba t1-0) - ) - ) - (set! gp-0 (the-as (inline-array collide-cache-tri) (-> gp-0 1))) - ) - ) + (add-debug-flat-triangle #t + (bucket-id debug-no-zbuf) + (the-as vector (-> gp-0 0)) + (-> gp-0 0 vertex 1) + (-> gp-0 0 vertex 2) + (the-as rgba t1-0))) + (set! gp-0 (the-as (inline-array collide-cache-tri) (-> gp-0 1))))) 0 - (none) - ) + (none)) (deftype los-dist (structure) - ((par-dist float) - (lat-dist float) - (vert-dist float) - ) - ) - + ((par-dist float) + (lat-dist float) + (vert-dist float))) (deftype collide-los-dist-info (structure) - ((min-par float) - (max-par float) - (min-lat float) - (max-lat float) - (min-vp float) - (max-vp float) - (min-vn float) - (max-vn float) - (count int32) - ) - ) - + ((min-par float) + (max-par float) + (min-lat float) + (max-lat float) + (min-vp float) + (max-vp float) + (min-vn float) + (max-vn float) + (count int32))) (defun dist-info-init ((arg0 collide-los-dist-info)) (set! (-> arg0 min-par) 1.0) (set! (-> arg0 max-par) 0.0) (set! (-> arg0 count) 0) 0 - (none) - ) + (none)) (defun dist-info-valid? ((arg0 collide-los-dist-info)) - (>= (-> arg0 max-par) (-> arg0 min-par)) - ) + (>= (-> arg0 max-par) (-> arg0 min-par))) (defun dist-info-append ((arg0 collide-los-dist-info) (arg1 vector)) (cond ((dist-info-valid? arg0) - (if (< (-> arg1 x) (-> arg0 min-par)) - (set! (-> arg0 min-par) (-> arg1 x)) - ) - (if (< (-> arg0 max-par) (-> arg1 x)) - (set! (-> arg0 max-par) (-> arg1 x)) - ) - (if (< (-> arg1 y) (-> arg0 min-lat)) - (set! (-> arg0 min-lat) (-> arg1 y)) - ) - (if (< (-> arg0 max-lat) (-> arg1 y)) - (set! (-> arg0 max-lat) (-> arg1 y)) - ) + (if (< (-> arg1 x) (-> arg0 min-par)) (set! (-> arg0 min-par) (-> arg1 x))) + (if (< (-> arg0 max-par) (-> arg1 x)) (set! (-> arg0 max-par) (-> arg1 x))) + (if (< (-> arg1 y) (-> arg0 min-lat)) (set! (-> arg0 min-lat) (-> arg1 y))) + (if (< (-> arg0 max-lat) (-> arg1 y)) (set! (-> arg0 max-lat) (-> arg1 y))) (cond ((< (-> arg1 y) 0.0) - (if (< (-> arg1 z) (-> arg0 min-vn)) - (set! (-> arg0 min-vn) (-> arg1 z)) - ) - (if (< (-> arg0 max-vn) (-> arg1 z)) - (set! (-> arg0 max-vn) (-> arg1 z)) - ) - ) + (if (< (-> arg1 z) (-> arg0 min-vn)) (set! (-> arg0 min-vn) (-> arg1 z))) + (if (< (-> arg0 max-vn) (-> arg1 z)) (set! (-> arg0 max-vn) (-> arg1 z)))) (else - (if (< (-> arg1 z) (-> arg0 min-vp)) - (set! (-> arg0 min-vp) (-> arg1 z)) - ) - (if (< (-> arg0 max-vp) (-> arg1 z)) - (set! (-> arg0 max-vp) (-> arg1 z)) - ) - ) - ) - ) + (if (< (-> arg1 z) (-> arg0 min-vp)) (set! (-> arg0 min-vp) (-> arg1 z))) + (if (< (-> arg0 max-vp) (-> arg1 z)) (set! (-> arg0 max-vp) (-> arg1 z)))))) (else - (set! (-> arg0 min-par) (-> arg1 x)) - (set! (-> arg0 max-par) (-> arg1 x)) - (set! (-> arg0 min-lat) (-> arg1 y)) - (set! (-> arg0 max-lat) (-> arg1 y)) - (set! (-> arg0 min-vp) 0.0) - (set! (-> arg0 max-vp) 0.0) - (set! (-> arg0 min-vn) 0.0) - (set! (-> arg0 max-vn) 0.0) - (cond - ((< (-> arg1 y) 0.0) - (set! (-> arg0 min-vn) (-> arg1 z)) - (set! (-> arg0 max-vn) (-> arg1 z)) - ) - (else - (set! (-> arg0 min-vp) (-> arg1 z)) - (set! (-> arg0 max-vp) (-> arg1 z)) - ) - ) - ) - ) + (set! (-> arg0 min-par) (-> arg1 x)) + (set! (-> arg0 max-par) (-> arg1 x)) + (set! (-> arg0 min-lat) (-> arg1 y)) + (set! (-> arg0 max-lat) (-> arg1 y)) + (set! (-> arg0 min-vp) 0.0) + (set! (-> arg0 max-vp) 0.0) + (set! (-> arg0 min-vn) 0.0) + (set! (-> arg0 max-vn) 0.0) + (cond + ((< (-> arg1 y) 0.0) (set! (-> arg0 min-vn) (-> arg1 z)) (set! (-> arg0 max-vn) (-> arg1 z))) + (else (set! (-> arg0 min-vp) (-> arg1 z)) (set! (-> arg0 max-vp) (-> arg1 z)))))) (+! (-> arg0 count) 1) - (none) - ) + (none)) (defun dist-info-print ((arg0 collide-los-dist-info) (arg1 string)) (cond ((dist-info-valid? arg0) - (format - *stdcon* - "~S ~2,D mn ~,,2M mx ~,,2M mnl ~,,2M mxl ~,,2M~%" - arg1 - (-> arg0 count) - (-> arg0 min-par) - (-> arg0 max-par) - (-> arg0 min-lat) - (-> arg0 max-lat) - ) - (format - *stdcon* - " mnvp ~,,2M mxvp ~,,2M mnvn ~,,2M mxvn ~,,2M~%" - (-> arg0 min-vp) - (-> arg0 max-vp) - (-> arg0 min-vn) - (-> arg0 max-vn) - ) - ) - (else - (format *stdcon* "~S invalid~%" arg1) - ) - ) - ) + (format *stdcon* + "~S ~2,D mn ~,,2M mx ~,,2M mnl ~,,2M mxl ~,,2M~%" + arg1 + (-> arg0 count) + (-> arg0 min-par) + (-> arg0 max-par) + (-> arg0 min-lat) + (-> arg0 max-lat)) + (format *stdcon* + " mnvp ~,,2M mxvp ~,,2M mnvn ~,,2M mxvn ~,,2M~%" + (-> arg0 min-vp) + (-> arg0 max-vp) + (-> arg0 min-vn) + (-> arg0 max-vn))) + (else (format *stdcon* "~S invalid~%" arg1)))) (deftype collide-los-result (structure) - ((lateral vector :inline) - (cw collide-los-dist-info :inline) - (ccw collide-los-dist-info :inline) - (straddle collide-los-dist-info :inline) - (lateral-valid symbol) - ) - ) - + ((lateral vector :inline) + (cw collide-los-dist-info :inline) + (ccw collide-los-dist-info :inline) + (straddle collide-los-dist-info :inline) + (lateral-valid symbol))) (defun los-cw-ccw ((arg0 (inline-array collide-cache-tri)) - (arg1 vector) - (arg2 vector) - (arg3 float) - (arg4 clip-travel-vector-to-mesh-return-info) - (arg5 vector) - (arg6 float) - ) + (arg1 vector) + (arg2 vector) + (arg3 float) + (arg4 clip-travel-vector-to-mesh-return-info) + (arg5 vector) + (arg6 float)) (local-vars (sv-128 float) (sv-144 vector) (sv-160 vector) (sv-176 vector) (sv-192 vector) (sv-208 int)) (with-pp (set! sv-128 arg3) @@ -1417,303 +911,162 @@ (let ((s5-0 (new 'stack-no-clear 'matrix))) (set! sv-192 (new 'stack-no-clear 'vector)) (let ((f30-0 0.0) - (s0-0 #f) - ) + (s0-0 #f)) (set! sv-208 0) (while (< sv-208 4) (cond - ((= sv-208 3) - (vector-! sv-160 sv-144 (the-as vector (&-> pp stack 368))) - (set! (-> s5-0 vector sv-208 z) 0.0) - ) + ((= sv-208 3) (vector-! sv-160 sv-144 (the-as vector (&-> pp stack 368))) (set! (-> s5-0 vector sv-208 z) 0.0)) (else - (vector-! sv-160 sv-144 (-> arg0 0 vertex sv-208)) - (set! (-> s5-0 vector sv-208 z) (vector-dot sv-160 (-> *camera* local-down))) - (vector-! sv-160 (-> arg0 0 vertex sv-208) (the-as vector (&-> pp stack 368))) - ) - ) + (vector-! sv-160 sv-144 (-> arg0 0 vertex sv-208)) + (set! (-> s5-0 vector sv-208 z) (vector-dot sv-160 (-> *camera* local-down))) + (vector-! sv-160 (-> arg0 0 vertex sv-208) (the-as vector (&-> pp stack 368))))) (vector-flatten! sv-160 sv-160 (-> *camera* local-down)) (vector-cross! sv-176 sv-160 arg2) (let ((f28-0 (vector-dot sv-176 (-> *camera* local-down)))) (cond - ((< (* f28-0 f30-0) 0.0) - (set! s0-0 #t) - ) - ((!= f28-0 0.0) - (set! f30-0 f28-0) - ) - ) + ((< (* f28-0 f30-0) 0.0) (set! s0-0 #t)) + ((!= f28-0 0.0) (set! f30-0 f28-0))) (set! (-> s5-0 vector sv-208 x) (vector-dot sv-160 arg2)) (cond - ((= sv-208 3) - (vector-! sv-192 sv-144 (the-as vector (&-> pp stack 368))) - (vector-flatten! sv-192 sv-192 arg1) - ) - (else - (vector--float*! sv-192 sv-160 arg2 (-> s5-0 vector sv-208 x)) - ) - ) + ((= sv-208 3) (vector-! sv-192 sv-144 (the-as vector (&-> pp stack 368))) (vector-flatten! sv-192 sv-192 arg1)) + (else (vector--float*! sv-192 sv-160 arg2 (-> s5-0 vector sv-208 x)))) (if (< f28-0 0.0) - (set! (-> s5-0 vector sv-208 y) (- (vector-length sv-192))) - (set! (-> s5-0 vector sv-208 y) (vector-length sv-192)) - ) - ) + (set! (-> s5-0 vector sv-208 y) (- (vector-length sv-192))) + (set! (-> s5-0 vector sv-208 y) (vector-length sv-192)))) (set! (-> s5-0 vector sv-208 x) (- sv-128 (-> s5-0 vector sv-208 x))) - (set! sv-208 (+ sv-208 1)) - ) + (set! sv-208 (+ sv-208 1))) (cond ((and s0-0 (!= s4-0 -100000000.0)) (dotimes (s4-1 4) - (dist-info-append - (the-as collide-los-dist-info (-> gp-0 vert-0)) - (the-as vector (+ (the-as uint s5-0) (* s4-1 16))) - ) - ) - #f - ) + (dist-info-append (the-as collide-los-dist-info (-> gp-0 vert-0)) (the-as vector (+ (the-as uint s5-0) (* s4-1 16))))) + #f) ((< (-> s5-0 vector 3 y) 0.0) (dotimes (s4-2 4) (when (>= (-> s5-0 vector 3 y) (-> s5-0 vector s4-2 y)) (set! (-> s5-0 vector s4-2 y) (- (-> s5-0 vector s4-2 y))) - (dist-info-append - (the-as collide-los-dist-info (-> gp-0 next-normal)) - (the-as vector (+ (the-as uint s5-0) (* s4-2 16))) - ) - ) - ) - #f - ) + (dist-info-append (the-as collide-los-dist-info (-> gp-0 next-normal)) + (the-as vector (+ (the-as uint s5-0) (* s4-2 16)))))) + #f) (else - (dotimes (s4-3 4) - (if (>= (-> s5-0 vector s4-3 y) (-> s5-0 vector 3 y)) - (dist-info-append - (the-as collide-los-dist-info (-> gp-0 intersection)) - (the-as vector (+ (the-as uint s5-0) (* s4-3 16))) - ) - ) - ) - #f - ) - ) - ) - ) - ) - ) - ) - ) + (dotimes (s4-3 4) + (if (>= (-> s5-0 vector s4-3 y) (-> s5-0 vector 3 y)) + (dist-info-append (the-as collide-los-dist-info (-> gp-0 intersection)) + (the-as vector (+ (the-as uint s5-0) (* s4-3 16)))))) + #f)))))))) (defun cam-los-spline-collide ((arg0 vector) (arg1 vector) (arg2 pat-surface)) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 *collide-cache*) - (f30-0 2.0) - ) + (f30-0 2.0)) 0.0 (vector-! s5-0 arg1 arg0) - (fill-using-line-sphere - s4-0 - arg0 - s5-0 - (-> *CAM_STRING-bank* los-coll-rad2) - (collide-kind background cak-3 wall-object ground-object cak-14) - (the-as process-drawable #f) - arg2 - ) + (fill-using-line-sphere s4-0 + arg0 + s5-0 + (-> *CAM_STRING-bank* los-coll-rad2) + (collide-kind background cak-3 wall-object ground-object cak-14) + (the-as process-drawable #f) + arg2) (let* ((f0-2 (vector-length s5-0)) - (f28-0 - (cond - ((< f0-2 (-> *CAMERA-bank* min-detectable-velocity)) - 0.0 - ) - (else - (let* ((f0-3 (/ (* 3.0 (- (-> *CAM_STRING-bank* los-coll-rad2) (-> *CAMERA-bank* collide-move-rad))) f0-2)) - (f0-4 (- 1.0 f0-3)) - ) - (fmin 1.0 (fmax 0.0 f0-4)) - ) - ) - ) - ) + (f28-0 (cond + ((< f0-2 (-> *CAMERA-bank* min-detectable-velocity)) 0.0) + (else + (let* ((f0-3 (/ (* 3.0 (- (-> *CAM_STRING-bank* los-coll-rad2) (-> *CAMERA-bank* collide-move-rad))) f0-2)) + (f0-4 (- 1.0 f0-3))) + (fmin 1.0 (fmax 0.0 f0-4)))))) (s3-0 (-> s4-0 tris)) (s2-0 (new 'stack-no-clear 'vector)) - (s1-0 (new 'stack-no-clear 'vector)) - ) + (s1-0 (new 'stack-no-clear 'vector))) (countdown (s4-1 (-> s4-0 num-tris)) - (let ((f0-7 (moving-sphere-triangle-intersect arg0 s5-0 (-> *CAM_STRING-bank* los-coll-rad2) (-> s3-0 0) s2-0 s1-0)) - ) + (let ((f0-7 (moving-sphere-triangle-intersect arg0 s5-0 (-> *CAM_STRING-bank* los-coll-rad2) (-> s3-0 0) s2-0 s1-0))) (cond - ((or (< f0-7 0.0) (< f28-0 f0-7)) - ) - ((< f0-7 f30-0) - (set! f30-0 f0-7) - ) - ) - ) - (set! s3-0 (the-as (inline-array collide-cache-tri) (-> s3-0 1))) - ) - ) - (if (= f30-0 2.0) - (set! f30-0 -1.0) - ) - f30-0 - ) - ) + ((or (< f0-7 0.0) (< f28-0 f0-7))) + ((< f0-7 f30-0) (set! f30-0 f0-7)))) + (set! s3-0 (the-as (inline-array collide-cache-tri) (-> s3-0 1))))) + (if (= f30-0 2.0) (set! f30-0 -1.0)) + f30-0)) (defbehavior cam-los-setup-lateral camera-slave ((arg0 clip-travel-vector-to-mesh-return-info) (arg1 vector) (arg2 vector)) (cond ((dist-info-valid? (the-as collide-los-dist-info (-> arg0 vert-0))) (let ((f30-0 (-> arg0 vert-0 z)) - (f28-0 (-> arg0 vert-0 w)) - ) + (f28-0 (-> arg0 vert-0 w))) (if (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) - (set! f28-0 (fmax f28-0 (-> arg0 intersection w))) - ) + (set! f28-0 (fmax f28-0 (-> arg0 intersection w)))) (if (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) - (set! f30-0 (fmin f30-0 (- (-> arg0 next-normal w)))) - ) + (set! f30-0 (fmin f30-0 (- (-> arg0 next-normal w))))) (cond ((= (-> self los-state) (slave-los-state ccw)) - (if *display-cam-los-debug* - (format *stdcon* "straddle stick ccw~%") - ) - (vector-normalize! arg1 (+ f28-0 (-> *CAM_STRING-bank* los-coll-rad))) - ) + (if *display-cam-los-debug* (format *stdcon* "straddle stick ccw~%")) + (vector-normalize! arg1 (+ f28-0 (-> *CAM_STRING-bank* los-coll-rad)))) ((= (-> self los-state) (slave-los-state cw)) - (if *display-cam-los-debug* - (format *stdcon* "straddle stick cw~%") - ) - (vector-normalize! arg1 (- f30-0 (-> *CAM_STRING-bank* los-coll-rad))) - ) + (if *display-cam-los-debug* (format *stdcon* "straddle stick cw~%")) + (vector-normalize! arg1 (- f30-0 (-> *CAM_STRING-bank* los-coll-rad)))) ((and (or (< 0.01 (-> arg0 vert-1 y)) - (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) - (< 0.01 (the-as float (-> arg0 gap-poly))) - ) - ) + (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) (< 0.01 (the-as float (-> arg0 gap-poly))))) (or (< (-> arg0 vert-1 x) -0.01) - (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) - (< (the-as float (-> arg0 poly)) -0.01) - ) - ) + (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) (< (the-as float (-> arg0 poly)) -0.01))) (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) - (or (< (-> arg0 boundary-normal y) 0.01) (< -0.01 (-> arg0 boundary-normal x))) - ) - ) - (when (not (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal)))) - ) - (if (not (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection)))) - (format #t "s diag ccw invalid cw~%") - ) - (if *display-cam-los-debug* - (format *stdcon* "straddle diagonal ccw~%") - ) + (or (< (-> arg0 boundary-normal y) 0.01) (< -0.01 (-> arg0 boundary-normal x))))) + (when (not (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))))) + (if (not (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection)))) (format #t "s diag ccw invalid cw~%")) + (if *display-cam-los-debug* (format *stdcon* "straddle diagonal ccw~%")) (set! (-> self los-state) (slave-los-state ccw)) - (vector-normalize! arg1 (+ f28-0 (-> *CAM_STRING-bank* los-coll-rad))) - ) + (vector-normalize! arg1 (+ f28-0 (-> *CAM_STRING-bank* los-coll-rad)))) ((and (or (< 0.01 (-> arg0 vert-1 w)) - (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) - (< 0.01 (-> arg0 boundary-normal y)) - ) - ) + (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) (< 0.01 (-> arg0 boundary-normal y)))) (or (< (-> arg0 vert-1 z) -0.01) - (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) - (< (-> arg0 boundary-normal x) -0.01) - ) - ) + (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) (< (-> arg0 boundary-normal x) -0.01))) (and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) - (or (< (the-as float (-> arg0 gap-poly)) 0.01) (< -0.01 (the-as float (-> arg0 poly)))) - ) - ) - (if (not (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal)))) - (format #t "s diag cw invalid ccw~%") - ) - (when (not (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection)))) - ) - (if *display-cam-los-debug* - (format *stdcon* "straddle diagonal cw~%") - ) + (or (< (the-as float (-> arg0 gap-poly)) 0.01) (< -0.01 (the-as float (-> arg0 poly)))))) + (if (not (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal)))) (format #t "s diag cw invalid ccw~%")) + (when (not (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))))) + (if *display-cam-los-debug* (format *stdcon* "straddle diagonal cw~%")) (set! (-> self los-state) (slave-los-state cw)) - (vector-normalize! arg1 (- f30-0 (-> *CAM_STRING-bank* los-coll-rad))) - ) + (vector-normalize! arg1 (- f30-0 (-> *CAM_STRING-bank* los-coll-rad)))) ((< f28-0 (- f30-0)) - (if *display-cam-los-debug* - (format *stdcon* "straddle ccw~%") - ) + (if *display-cam-los-debug* (format *stdcon* "straddle ccw~%")) (set! (-> self los-state) (slave-los-state ccw)) - (vector-normalize! arg1 (+ f28-0 (-> *CAM_STRING-bank* los-coll-rad))) - ) + (vector-normalize! arg1 (+ f28-0 (-> *CAM_STRING-bank* los-coll-rad)))) (else - (if *display-cam-los-debug* - (format *stdcon* "straddle cw~%") - ) - (set! (-> self los-state) (slave-los-state cw)) - (vector-normalize! arg1 (- f30-0 (-> *CAM_STRING-bank* los-coll-rad))) - ) - ) - ) - ) + (if *display-cam-los-debug* (format *stdcon* "straddle cw~%")) + (set! (-> self los-state) (slave-los-state cw)) + (vector-normalize! arg1 (- f30-0 (-> *CAM_STRING-bank* los-coll-rad))))))) ((and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) (< 0.01 (the-as float (-> arg0 gap-poly))) (< (the-as float (-> arg0 poly)) -0.01) - (or (< (-> arg0 boundary-normal y) 0.01) (< -0.01 (-> arg0 boundary-normal x))) - ) - (if *display-cam-los-debug* - (format *stdcon* "diagonal ccw~%") - ) + (or (< (-> arg0 boundary-normal y) 0.01) (< -0.01 (-> arg0 boundary-normal x)))) + (if *display-cam-los-debug* (format *stdcon* "diagonal ccw~%")) (set! (-> self los-state) (slave-los-state ccw)) - (vector-normalize! arg1 (- (-> *CAM_STRING-bank* los-coll-rad) (-> arg0 next-normal z))) - ) + (vector-normalize! arg1 (- (-> *CAM_STRING-bank* los-coll-rad) (-> arg0 next-normal z)))) ((and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) (< 0.01 (-> arg0 boundary-normal y)) (< (-> arg0 boundary-normal x) -0.01) - (or (< (the-as float (-> arg0 gap-poly)) 0.01) (< -0.01 (the-as float (-> arg0 poly)))) - ) - (if *display-cam-los-debug* - (format *stdcon* "diagonal cw~%") - ) + (or (< (the-as float (-> arg0 gap-poly)) 0.01) (< -0.01 (the-as float (-> arg0 poly))))) + (if *display-cam-los-debug* (format *stdcon* "diagonal cw~%")) (set! (-> self los-state) (slave-los-state cw)) - (vector-normalize! arg1 (- (-> arg0 intersection z) (-> *CAM_STRING-bank* los-coll-rad))) - ) + (vector-normalize! arg1 (- (-> arg0 intersection z) (-> *CAM_STRING-bank* los-coll-rad)))) ((and (dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) - (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) - ) + (dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal)))) (set! (-> self los-state) (slave-los-state between)) - (vector-normalize! arg1 (the-as float 0.0001)) - ) + (vector-normalize! arg1 (the-as float 0.0001))) ((dist-info-valid? (the-as collide-los-dist-info (-> arg0 intersection))) - (if *display-cam-los-debug* - (format *stdcon* "regular cw~%") - ) + (if *display-cam-los-debug* (format *stdcon* "regular cw~%")) (set! (-> self los-state) (slave-los-state cw)) - (vector-normalize! arg1 (- (-> arg0 intersection z) (-> *CAM_STRING-bank* los-coll-rad))) - ) + (vector-normalize! arg1 (- (-> arg0 intersection z) (-> *CAM_STRING-bank* los-coll-rad)))) ((dist-info-valid? (the-as collide-los-dist-info (-> arg0 next-normal))) - (if *display-cam-los-debug* - (format *stdcon* "regular ccw~%") - ) + (if *display-cam-los-debug* (format *stdcon* "regular ccw~%")) (set! (-> self los-state) (slave-los-state ccw)) - (vector-normalize! arg1 (- (-> *CAM_STRING-bank* los-coll-rad) (-> arg0 next-normal z))) - ) - (else - (set! (-> self los-state) (slave-los-state none)) - (vector-reset! arg1) - ) - ) + (vector-normalize! arg1 (- (-> *CAM_STRING-bank* los-coll-rad) (-> arg0 next-normal z)))) + (else (set! (-> self los-state) (slave-los-state none)) (vector-reset! arg1))) (cond - ((= (vector-length arg1) 0.0) - (set! (-> arg0 vert-next y) (the-as float #f)) - #f - ) + ((= (vector-length arg1) 0.0) (set! (-> arg0 vert-next y) (the-as float #f)) #f) (else - (vector-! (the-as vector (&-> arg0 found-boundary)) arg1 arg2) - (vector-normalize! (the-as vector (&-> arg0 found-boundary)) (the-as float 1.0)) - (let ((v0-45 #t)) - (set! (-> arg0 vert-next y) (the-as float v0-45)) - v0-45 - ) - ) - ) - ) + (vector-! (the-as vector (&-> arg0 found-boundary)) arg1 arg2) + (vector-normalize! (the-as vector (&-> arg0 found-boundary)) (the-as float 1.0)) + (let ((v0-45 #t)) (set! (-> arg0 vert-next y) (the-as float v0-45)) v0-45)))) ;; ERROR: Unsupported inline assembly instruction kind - [mula.s f2, f5] ;; ERROR: Unsupported inline assembly instruction kind - [madda.s f3, f6] @@ -1724,43 +1077,30 @@ (dist-info-init (the-as collide-los-dist-info (-> arg2 next-normal))) (dist-info-init (the-as collide-los-dist-info (-> arg2 vert-0))) (let ((s4-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) - ) + (s2-0 (new 'stack-no-clear 'vector))) (vector-normalize-copy! s2-0 arg1 (the-as float 1.0)) (vector-flatten! s4-0 arg1 (-> *camera* local-down)) (let ((s0-0 *collide-cache*) (f26-0 (vector-length arg1)) - (f30-0 (vector-normalize-ret-len! s4-0 (the-as float 1.0))) - ) - (fill-using-line-sphere - s0-0 - arg0 - arg1 - (-> *CAM_STRING-bank* los-coll-rad) - (collide-kind background cak-3 wall-object ground-object cak-14) - (the-as process-drawable #f) - arg3 - ) + (f30-0 (vector-normalize-ret-len! s4-0 (the-as float 1.0)))) + (fill-using-line-sphere s0-0 + arg0 + arg1 + (-> *CAM_STRING-bank* los-coll-rad) + (collide-kind background cak-3 wall-object ground-object cak-14) + (the-as process-drawable #f) + arg3) (let ((s1-1 (-> s0-0 tris)) (f28-0 (/ 2048.0 f26-0)) - (f26-1 (/ (+ -8192.0 f26-0) f26-0)) - ) - (if (< f26-1 0.0) - (set! f26-1 0.0) - ) - (if (< 1.0 f28-0) - (set! f28-0 1.0) - ) + (f26-1 (/ (+ -8192.0 f26-0) f26-0))) + (if (< f26-1 0.0) (set! f26-1 0.0)) + (if (< 1.0 f28-0) (set! f28-0 1.0)) (countdown (s0-1 (-> s0-0 num-tris)) (set! sv-240 (new 'stack-no-clear 'vector)) (set! sv-224 (new 'stack-no-clear 'vector)) - (let ((f0-7 - (moving-sphere-triangle-intersect arg0 arg1 (-> *CAM_STRING-bank* los-coll-rad) (-> s1-1 0) sv-240 sv-224) - ) - ) + (let ((f0-7 (moving-sphere-triangle-intersect arg0 arg1 (-> *CAM_STRING-bank* los-coll-rad) (-> s1-1 0) sv-240 sv-224))) (cond - ((or (< f0-7 0.0) (< 1.0 f0-7)) - ) + ((or (< f0-7 0.0) (< 1.0 f0-7))) ((let ((f1-2 0.0)) (let* ((v1-21 arg1) (f2-0 (-> v1-21 x)) @@ -1768,329 +1108,177 @@ (f4-0 (-> v1-21 z)) (f5-0 (-> sv-224 x)) (f6-0 (-> sv-224 y)) - (f7-0 (-> sv-224 z)) - ) + (f7-0 (-> sv-224 z))) ;; og:preserve-this inlined vector-dot ; (.mula.s f2-0 f5-0) ; (.madda.s f3-0 f6-0) ; (.madd.s f2-1 f4-0 f7-0) - (set! f2-1 (+ (* f2-0 f5-0) (* f3-0 f6-0) (* f4-0 f7-0))) - ) - (< f1-2 f2-1) - ) + (set! f2-1 (+ (* f2-0 f5-0) (* f3-0 f6-0) (* f4-0 f7-0)))) + (< f1-2 f2-1)) (when (< f28-0 f0-7) (let* ((t1-2 (new 'stack-no-clear 'vector)) (t0-2 (new 'stack-no-clear 'vector)) - (f24-0 - (moving-sphere-triangle-intersect arg0 arg1 (-> *CAM_STRING-bank* los-coll-rad2) (-> s1-1 0) t0-2 t1-2) - ) - ) + (f24-0 (moving-sphere-triangle-intersect arg0 arg1 (-> *CAM_STRING-bank* los-coll-rad2) (-> s1-1 0) t0-2 t1-2))) (los-cw-ccw s1-1 s2-0 s4-0 f30-0 arg2 sv-240 f24-0) (when *debug-segment* (cond ((= f24-0 -100000000.0) (let ((t9-11 cam-debug-add-los-tri) (a0-13 s1-1) - (a2-7 (new 'static 'vector :x (the-as float #x80) :w (the-as float #x80))) - ) - (t9-11 a0-13 sv-240 a2-7) - ) - ) + (a2-7 (new 'static 'vector :x (the-as float #x80) :w (the-as float #x80)))) + (t9-11 a0-13 sv-240 a2-7))) (else - (cam-debug-add-los-tri - s1-1 - sv-240 - (new 'static 'vector :x (the-as float #x80) :y (the-as float #x80) :w (the-as float #x80)) - ) - ) - ) - ) - ) - ) - ) + (cam-debug-add-los-tri s1-1 + sv-240 + (new 'static 'vector :x (the-as float #x80) :y (the-as float #x80) :w (the-as float #x80))))))))) ((< f0-7 f26-1) (let* ((t1-4 (new 'stack-no-clear 'vector)) (t0-4 (new 'stack-no-clear 'vector)) - (f24-1 - (moving-sphere-triangle-intersect arg0 arg1 (-> *CAM_STRING-bank* los-coll-rad2) (-> s1-1 0) t0-4 t1-4) - ) - ) + (f24-1 (moving-sphere-triangle-intersect arg0 arg1 (-> *CAM_STRING-bank* los-coll-rad2) (-> s1-1 0) t0-4 t1-4))) (los-cw-ccw s1-1 s2-0 s4-0 f30-0 arg2 sv-240 f24-1) (when *debug-segment* (if (= f24-1 -100000000.0) - (cam-debug-add-los-tri s1-1 sv-240 (new 'static 'vector :y (the-as float #x80) :w (the-as float #x80))) - (cam-debug-add-los-tri s1-1 sv-240 (new 'static 'vector :z (the-as float #x80) :w (the-as float #x80))) - ) - ) - ) - ) - ) - ) - (set! s1-1 (the-as (inline-array collide-cache-tri) (-> s1-1 1))) - ) - ) - ) - ) + (cam-debug-add-los-tri s1-1 sv-240 (new 'static 'vector :y (the-as float #x80) :w (the-as float #x80))) + (cam-debug-add-los-tri s1-1 sv-240 (new 'static 'vector :z (the-as float #x80) :w (the-as float #x80))))))))) + (set! s1-1 (the-as (inline-array collide-cache-tri) (-> s1-1 1))))))) (let ((s4-1 (new 'stack-no-clear 'vector))) 0.0 (vector-cross! s4-1 arg1 (-> *camera* local-down)) (cond - ((!= (-> self los-tgt-spline-pt-incarnation) - (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation) - ) + ((!= (-> self los-tgt-spline-pt-incarnation) (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation)) (when *display-cam-los-debug* (format *stdcon* "emergency point jump~%") - (format 0 "emergency point jump~%") - ) + (format 0 "emergency point jump~%")) (set! (-> self los-tgt-spline-pt) (-> *camera* target-spline used-point)) - (set! (-> self los-tgt-spline-pt-incarnation) - (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation) - ) + (set! (-> self los-tgt-spline-pt-incarnation) (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation)) (logior! (-> self options) 4096) - (set! (-> self good-point quad) - (-> *camera* target-spline point (-> *camera* target-spline used-point) position quad) - ) + (set! (-> self good-point quad) (-> *camera* target-spline point (-> *camera* target-spline used-point) position quad)) (set! (-> self los-last-pos quad) (-> self good-point quad)) (when *debug-segment* (let ((a1-22 (new 'stack-no-clear 'vector))) (vector-! a1-22 (-> self good-point) (-> self string-trans)) - (cam-collision-record-save (-> self string-trans) a1-22 -3 'jump self) - ) - ) + (cam-collision-record-save (-> self string-trans) a1-22 -3 'jump self))) (set! (-> self desired-pos quad) (-> self good-point quad)) (set! (-> self string-trans quad) (-> self good-point quad)) (vector-! (-> self view-flat) (-> self string-trans) (-> *camera* tpos-curr-adj)) (vector-flatten! (-> self view-flat) (-> self view-flat) (-> *camera* local-down)) (vector-reset! (-> self velocity)) (let ((f0-11 (vector-length (-> self view-flat)))) - (if (< f0-11 (-> self min-z-override)) - (set! (-> self min-z-override) f0-11) - ) - ) - ) + (if (< f0-11 (-> self min-z-override)) (set! (-> self min-z-override) f0-11)))) (else - (let ((f30-1 - (cam-los-spline-collide - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> *camera* target-spline end-point)))) - arg0 - (new 'static 'pat-surface :nocamera #x1 :nolineofsight #x1) - ) - ) - ) - (cond - ((< f30-1 0.0) - (if *display-cam-los-debug* - (format *stdcon* "good ~f~%" f30-1) - ) - (set! (-> self los-tgt-spline-pt) (-> *camera* target-spline end-point)) - (set! (-> self los-tgt-spline-pt-incarnation) - (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation) - ) - (set! (-> self los-last-pos quad) (-> arg0 quad)) - ) - ((begin - (if *display-cam-los-debug* - (format - *stdcon* - "looking vel ~M u ~f pt ~D" - (vector-length (-> self velocity)) - f30-1 - (-> self los-tgt-spline-pt) - ) - ) - (set! s2-2 (-> self los-tgt-spline-pt)) - (set! s1-3 -134250495) - (while (and (!= s2-2 -134250495) - (begin - (set! f30-1 - (cam-los-spline-collide - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 s2-2))) - arg0 - (new 'static 'pat-surface :nocamera #x1 :nolineofsight #x1) - ) - ) - (< f30-1 0.0) - ) - ) - (set! s1-3 s2-2) - (set! s2-2 (-> *camera* target-spline point s2-2 next)) - ) - (and (= s2-2 (-> *camera* target-spline used-point)) - (!= (-> *camera* target-spline point s2-2 next) -134250495) - ) - ) - (when *display-cam-los-debug* - (format 0 "looking at used point~%") - (format *stdcon* " at used point~%") - ) - (set! (-> self los-tgt-spline-pt) (-> *camera* target-spline point s2-2 next)) - (set! (-> self los-tgt-spline-pt-incarnation) - (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation) - ) - (logior! (-> self options) 4096) - (set! (-> self good-point quad) (-> *camera* target-spline point s2-2 position quad)) - (set! (-> self los-last-pos quad) (-> self good-point quad)) - (when *debug-segment* - (let ((a1-38 (new 'stack-no-clear 'vector))) - (vector-! a1-38 (-> self good-point) (-> self string-trans)) - (cam-collision-record-save (-> self string-trans) a1-38 -3 'jump self) - ) - ) - (set! (-> self desired-pos quad) (-> self good-point quad)) - (set! (-> self string-trans quad) (-> self good-point quad)) - (vector-! (-> self view-flat) (-> self string-trans) (-> *camera* tpos-curr-adj)) - (vector-flatten! (-> self view-flat) (-> self view-flat) (-> *camera* local-down)) - (vector-reset! (-> self velocity)) - (let ((f0-14 (vector-length (-> self view-flat)))) - (if (< f0-14 (-> self min-z-override)) - (set! (-> self min-z-override) f0-14) - ) - ) - ) - ((!= s1-3 -134250495) - (if *display-cam-los-debug* - (format *stdcon* " ok~%") - ) - (set! (-> self los-tgt-spline-pt) s1-3) - (set! (-> self los-tgt-spline-pt-incarnation) - (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation) - ) - (set! (-> self los-last-pos quad) (-> arg0 quad)) - ) - (else + (let ((f30-1 (cam-los-spline-collide (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> *camera* target-spline end-point)))) + arg0 + (new 'static 'pat-surface :nocamera #x1 :nolineofsight #x1)))) + (cond + ((< f30-1 0.0) + (if *display-cam-los-debug* (format *stdcon* "good ~f~%" f30-1)) + (set! (-> self los-tgt-spline-pt) (-> *camera* target-spline end-point)) + (set! (-> self los-tgt-spline-pt-incarnation) (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation)) + (set! (-> self los-last-pos quad) (-> arg0 quad))) + ((begin (if *display-cam-los-debug* - (format *stdcon* "~%failed u ~f cur ~D seen ~D tgt-pt ~D~%" f30-1 s2-2 s1-3 (-> self los-tgt-spline-pt)) - ) - (let ((s3-1 (new 'stack-no-clear 'vector))) - 0.0 - (vector-! - s3-1 - (-> self los-last-pos) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> self los-tgt-spline-pt)))) - ) - (let ((f28-1 (vector-length s3-1))) - (if (= f28-1 0.0) - (set! f28-1 0.4096) - ) - (let ((f30-2 (cond - ((and (= (-> self string-vel-dir) 6) - (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) - ) - (fmin 1.0 (+ 0.001 f30-1)) - ) - ((= (-> self string-vel-dir) 6) - (fmin 0.9999 f30-1) - ) - (else - (fmax 0.001 (+ -0.001 f30-1)) - ) - ) - ) - ) - (let ((s2-3 (new 'stack-no-clear 'vector))) - (vector-! - s2-3 - (-> *camera* tpos-curr-adj) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> self los-tgt-spline-pt)))) - ) - (vector-flatten! s2-3 s2-3 (-> *camera* local-down)) - (cond - ((and (< (fabs (- (-> self desired-pos y) (-> self trans y))) 8192.0) - (< f28-1 (+ 1024.0 (-> self string-min-val z))) - (< (vector-length s2-3) 8192.0) - ) - (set! f30-2 0.0) - ) - ((< f28-1 (+ 1024.0 (-> self string-min-val z))) - ) - ((< (* f28-1 f30-2) (-> self string-min-val z)) - (set! f30-2 (/ (-> self string-min-val z) f28-1)) - ) - ) - ) - (when (< 0.0 f30-2) - (vector-! s3-1 (-> *camera* tpos-curr) (-> *camera* tpos-old)) - (vector-! - (-> self good-point) + (format *stdcon* "looking vel ~M u ~f pt ~D" (vector-length (-> self velocity)) f30-1 (-> self los-tgt-spline-pt))) + (set! s2-2 (-> self los-tgt-spline-pt)) + (set! s1-3 -134250495) + (while (and (!= s2-2 -134250495) + (begin + (set! f30-1 + (cam-los-spline-collide (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 s2-2))) + arg0 + (new 'static 'pat-surface :nocamera #x1 :nolineofsight #x1))) + (< f30-1 0.0))) + (set! s1-3 s2-2) + (set! s2-2 (-> *camera* target-spline point s2-2 next))) + (and (= s2-2 (-> *camera* target-spline used-point)) (!= (-> *camera* target-spline point s2-2 next) -134250495))) + (when *display-cam-los-debug* + (format 0 "looking at used point~%") + (format *stdcon* " at used point~%")) + (set! (-> self los-tgt-spline-pt) (-> *camera* target-spline point s2-2 next)) + (set! (-> self los-tgt-spline-pt-incarnation) (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation)) + (logior! (-> self options) 4096) + (set! (-> self good-point quad) (-> *camera* target-spline point s2-2 position quad)) + (set! (-> self los-last-pos quad) (-> self good-point quad)) + (when *debug-segment* + (let ((a1-38 (new 'stack-no-clear 'vector))) + (vector-! a1-38 (-> self good-point) (-> self string-trans)) + (cam-collision-record-save (-> self string-trans) a1-38 -3 'jump self))) + (set! (-> self desired-pos quad) (-> self good-point quad)) + (set! (-> self string-trans quad) (-> self good-point quad)) + (vector-! (-> self view-flat) (-> self string-trans) (-> *camera* tpos-curr-adj)) + (vector-flatten! (-> self view-flat) (-> self view-flat) (-> *camera* local-down)) + (vector-reset! (-> self velocity)) + (let ((f0-14 (vector-length (-> self view-flat)))) + (if (< f0-14 (-> self min-z-override)) (set! (-> self min-z-override) f0-14)))) + ((!= s1-3 -134250495) + (if *display-cam-los-debug* (format *stdcon* " ok~%")) + (set! (-> self los-tgt-spline-pt) s1-3) + (set! (-> self los-tgt-spline-pt-incarnation) (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation)) + (set! (-> self los-last-pos quad) (-> arg0 quad))) + (else + (if *display-cam-los-debug* + (format *stdcon* "~%failed u ~f cur ~D seen ~D tgt-pt ~D~%" f30-1 s2-2 s1-3 (-> self los-tgt-spline-pt))) + (let ((s3-1 (new 'stack-no-clear 'vector))) + 0.0 + (vector-! s3-1 (-> self los-last-pos) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> self los-tgt-spline-pt)))) - ) - (vector-float*! (-> self good-point) (-> self good-point) f30-2) - (vector+! - (-> self good-point) - (-> self good-point) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> self los-tgt-spline-pt)))) - ) - (set! (-> self los-last-pos quad) (-> self good-point quad)) - (when *display-cam-los-debug* - (format 0 "going because u(~f) > 0 frame ~D~%" f30-2 (current-time)) - (format *stdcon* " going because u(~f) > 0 frame ~D~%" f30-2 (current-time)) - ) - (logior! (-> self options) 4096) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> self los-tgt-spline-pt))))) + (let ((f28-1 (vector-length s3-1))) + (if (= f28-1 0.0) (set! f28-1 0.4096)) + (let ((f30-2 (cond + ((and (= (-> self string-vel-dir) 6) (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity)))) + (fmin 1.0 (+ 0.001 f30-1))) + ((= (-> self string-vel-dir) 6) (fmin 0.9999 f30-1)) + (else (fmax 0.001 (+ -0.001 f30-1)))))) + (let ((s2-3 (new 'stack-no-clear 'vector))) + (vector-! s2-3 + (-> *camera* tpos-curr-adj) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> self los-tgt-spline-pt))))) + (vector-flatten! s2-3 s2-3 (-> *camera* local-down)) + (cond + ((and (< (fabs (- (-> self desired-pos y) (-> self trans y))) 8192.0) + (< f28-1 (+ 1024.0 (-> self string-min-val z))) + (< (vector-length s2-3) 8192.0)) + (set! f30-2 0.0)) + ((< f28-1 (+ 1024.0 (-> self string-min-val z)))) + ((< (* f28-1 f30-2) (-> self string-min-val z)) (set! f30-2 (/ (-> self string-min-val z) f28-1))))) + (when (< 0.0 f30-2) + (vector-! s3-1 (-> *camera* tpos-curr) (-> *camera* tpos-old)) + (vector-! (-> self good-point) + (-> self los-last-pos) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> self los-tgt-spline-pt))))) + (vector-float*! (-> self good-point) (-> self good-point) f30-2) + (vector+! (-> self good-point) + (-> self good-point) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> self los-tgt-spline-pt))))) + (set! (-> self los-last-pos quad) (-> self good-point quad)) + (when *display-cam-los-debug* + (format 0 "going because u(~f) > 0 frame ~D~%" f30-2 (current-time)) + (format *stdcon* " going because u(~f) > 0 frame ~D~%" f30-2 (current-time))) + (logior! (-> self options) 4096)))))))))) (if *display-cam-los-debug* - (format - *stdcon* - "los-last ~M ~M ~M~%" - (-> self los-last-pos x) - (-> self los-last-pos y) - (-> self los-last-pos z) - ) - ) - (cam-los-setup-lateral arg2 s4-1 arg1) - ) + (format *stdcon* "los-last ~M ~M ~M~%" (-> self los-last-pos x) (-> self los-last-pos y) (-> self los-last-pos z))) + (cam-los-setup-lateral arg2 s4-1 arg1)) (cond - ((not (logtest? (-> self options) 1024)) - ) - ((= (-> self string-vel-dir) 5) - ) - ((and (= (-> self string-vel-dir) 2) (= (-> self los-state) (slave-los-state cw))) - ) - ((and (= (-> self string-vel-dir) 1) (= (-> self los-state) (slave-los-state ccw))) - ) - ) + ((not (logtest? (-> self options) 1024))) + ((= (-> self string-vel-dir) 5)) + ((and (= (-> self string-vel-dir) 2) (= (-> self los-state) (slave-los-state cw)))) + ((and (= (-> self string-vel-dir) 1) (= (-> self los-state) (slave-los-state ccw))))) (when *display-cam-los-debug* (format *stdcon* "state ~S" (slave-los-state->string (-> self los-state))) (cond - ((zero? (-> self string-vel-dir)) - (format *stdcon* " vzero") - ) - ((= (-> self string-vel-dir) 2) - (format *stdcon* " vcw") - ) - ((= (-> self string-vel-dir) 1) - (format *stdcon* " vccw") - ) - ((= (-> self string-vel-dir) 3) - (format *stdcon* " up") - ) - ((= (-> self string-vel-dir) 4) - (format *stdcon* " down") - ) - ((= (-> self string-vel-dir) 6) - (format *stdcon* " long") - ) - ((= (-> self string-vel-dir) 5) - (format *stdcon* " short") - ) - ) - (format *stdcon* "~%") - ) + ((zero? (-> self string-vel-dir)) (format *stdcon* " vzero")) + ((= (-> self string-vel-dir) 2) (format *stdcon* " vcw")) + ((= (-> self string-vel-dir) 1) (format *stdcon* " vccw")) + ((= (-> self string-vel-dir) 3) (format *stdcon* " up")) + ((= (-> self string-vel-dir) 4) (format *stdcon* " down")) + ((= (-> self string-vel-dir) 6) (format *stdcon* " long")) + ((= (-> self string-vel-dir) 5) (format *stdcon* " short"))) + (format *stdcon* "~%")) (when *display-cam-los-info* (dist-info-print (the-as collide-los-dist-info (-> arg2 intersection)) "cw ") (dist-info-print (the-as collide-los-dist-info (-> arg2 next-normal)) "ccw ") - (dist-info-print (the-as collide-los-dist-info (-> arg2 vert-0)) "strdl") - ) - (the-as symbol 0) - ) + (dist-info-print (the-as collide-los-dist-info (-> arg2 vert-0)) "strdl")) + (the-as symbol 0)) (defbehavior cam-string-follow camera-slave () (let ((f30-0 (vector-length (-> self view-flat)))) @@ -2101,74 +1289,38 @@ (vector-cross! s5-0 (-> self view-flat) (-> *camera* local-down)) (vector-normalize! s5-0 (the-as float 1.0)) (vector-! gp-0 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) - (vector-flatten! gp-0 gp-0 s5-0) - ) - (if (< (vector-dot gp-0 (-> self view-flat)) 0.0) - (vector-! (-> self view-flat) (-> self view-flat) gp-0) - ) - ) - ) + (vector-flatten! gp-0 gp-0 s5-0)) + (if (< (vector-dot gp-0 (-> self view-flat)) 0.0) (vector-! (-> self view-flat) (-> self view-flat) gp-0)))) (else - (let ((v1-9 (new 'stack-no-clear 'vector))) - (vector-! v1-9 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) - (vector-! (-> self view-flat) (-> self view-flat) v1-9) - ) - ) - ) + (let ((v1-9 (new 'stack-no-clear 'vector))) + (vector-! v1-9 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) + (vector-! (-> self view-flat) (-> self view-flat) v1-9)))) (vector-flatten! (-> self view-flat) (-> self view-flat) (-> *camera* local-down)) (let* ((f28-0 (vector-length (-> self view-flat))) (f0-3 (fmin (-> *camera* string-push-z) (-> self view-off z))) (f26-0 (-> self view-off z)) - (f0-4 (fmin f0-3 (-> self min-z-override))) - ) + (f0-4 (fmin f0-3 (-> self min-z-override)))) (cond ((logtest? (-> self options) #x4000) (let ((a0-17 (new-stack-vector0))) 0.0 (vector-! a0-17 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) (let ((f0-6 (vector-length a0-17))) - (set! f0-4 (lerp-clamp - (the-as float 28672.0) - (the-as float 32768.0) - (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f0-6))) - ) - ) - ) - ) + (set! f0-4 + (lerp-clamp (the-as float 28672.0) (the-as float 32768.0) (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f0-6))))))) (set! f26-0 f0-4) - (+! (-> self fov) (fmax -91.022224 (fmin 91.022224 (* 0.1 (- 17294.223 (-> self fov)))))) - ) - (else - (+! (-> self fov) (fmax -182.04445 (fmin 182.04445 (* 0.1 (- 11650.845 (-> self fov)))))) - ) - ) + (+! (-> self fov) (fmax -91.022224 (fmin 91.022224 (* 0.1 (- 17294.223 (-> self fov))))))) + (else (+! (-> self fov) (fmax -182.04445 (fmin 182.04445 (* 0.1 (- 11650.845 (-> self fov)))))))) (cond - ((< f28-0 f0-4) - (vector-normalize! (-> self view-flat) f0-4) - ) - ((and (< f30-0 f28-0) - (or (= (-> self los-state) (slave-los-state ccw)) (= (-> self los-state) (slave-los-state cw))) - ) - (vector-normalize! (-> self view-flat) f30-0) - ) - ((< f26-0 f28-0) - (vector-normalize! (-> self view-flat) f26-0) - (set! (-> self min-z-override) f26-0) - f26-0 - ) - (else - (set! (-> self min-z-override) f28-0) - f28-0 - ) - ) - ) - ) - ) + ((< f28-0 f0-4) (vector-normalize! (-> self view-flat) f0-4)) + ((and (< f30-0 f28-0) (or (= (-> self los-state) (slave-los-state ccw)) (= (-> self los-state) (slave-los-state cw)))) + (vector-normalize! (-> self view-flat) f30-0)) + ((< f26-0 f28-0) (vector-normalize! (-> self view-flat) f26-0) (set! (-> self min-z-override) f26-0) f26-0) + (else (set! (-> self min-z-override) f28-0) f28-0))))) (defbehavior cam-string-line-of-sight camera-slave () (let ((gp-0 (new 'stack-no-clear 'clip-travel-vector-to-mesh-return-info)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (new 'stack-no-clear 'vector) (let ((f30-0 (vector-length (-> self view-flat)))) (vector--float*! s5-0 (-> *camera* tpos-curr) (-> *camera* local-down) (-> *camera* target-height)) @@ -2179,201 +1331,105 @@ (let ((a0-6 (new 'stack-no-clear 'vector))) (vector-! a0-6 (-> *camera* tpos-curr) (-> *camera* tpos-old)) (if (and (< (-> self string-min-val z) f30-0) (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length a0-6))) - (set! f30-0 (+ -204.8 f30-0)) - ) - ) - ) + (set! f30-0 (+ -204.8 f30-0))))) (if (< f30-0 (fmin (-> self string-min-val z) (-> self min-z-override))) - (set! f30-0 (fmin (-> self string-min-val z) (-> self min-z-override))) - ) - (if (< f30-0 (-> self min-z-override)) - (set! (-> self min-z-override) f30-0) - ) + (set! f30-0 (fmin (-> self string-min-val z) (-> self min-z-override)))) + (if (< f30-0 (-> self min-z-override)) (set! (-> self min-z-override) f30-0)) (let ((s4-0 (new 'stack-no-clear 'vector)) (s5-1 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'matrix)) - ) + (s3-0 (new 'stack-no-clear 'matrix))) 0.0 (vector-flatten! s4-0 (the-as vector (&-> gp-0 found-boundary)) (-> *camera* local-down)) (vector-normalize! s4-0 (the-as float 1.0)) (vector-normalize-copy! s5-1 (-> self view-flat) (the-as float 1.0)) - (let ((f0-12 (lerp-clamp - (the-as float 418.7022) - (the-as float 364.0889) - (/ (- f30-0 (-> self string-min-val z)) (- (-> self string-max-val z) (-> self string-min-val z))) - ) - ) - ) - (matrix-from-two-vectors-max-angle-partial! s3-0 s5-1 s4-0 f0-12 (the-as float 0.5)) - ) - (vector-matrix*! (-> self view-flat) (-> self view-flat) s3-0) - ) - (vector-normalize! (-> self view-flat) f30-0) - ) - ) - ) - ) + (let ((f0-12 (lerp-clamp (the-as float 418.7022) + (the-as float 364.0889) + (/ (- f30-0 (-> self string-min-val z)) (- (-> self string-max-val z) (-> self string-min-val z)))))) + (matrix-from-two-vectors-max-angle-partial! s3-0 s5-1 s4-0 f0-12 (the-as float 0.5))) + (vector-matrix*! (-> self view-flat) (-> self view-flat) s3-0)) + (vector-normalize! (-> self view-flat) f30-0))))) (defun cam-dist-analog-input ((arg0 int) (arg1 float)) (let ((f0-0 0.0)) (cond - ((< arg0 28) - (set! f0-0 (- (fmin arg1 (* 0.083333336 (- 28.0 (the float arg0)) arg1)))) - ) - ((< 160 arg0) - (set! f0-0 (fmin arg1 (* 0.0125 (+ -160.0 (the float arg0)) arg1))) - ) - ) + ((< arg0 28) (set! f0-0 (- (fmin arg1 (* 0.083333336 (- 28.0 (the float arg0)) arg1))))) + ((< 160 arg0) (set! f0-0 (fmin arg1 (* 0.0125 (+ -160.0 (the float arg0)) arg1))))) ;; changed for pc port, only used for Third-Person Vertical camera - (#if PC_PORT - (* (if (-> *pc-settings* third-camera-v-inverted?) 1.0 -1.0) f0-0) - f0-0 - ) - ) - ) + (#if PC_PORT (* (if (-> *pc-settings* third-camera-v-inverted?) 1.0 -1.0) f0-0) f0-0))) ;; main third-person camera (defbehavior cam-string-joystick camera-slave () (logand! (-> self options) -257) (let ((f28-0 (cam-dist-analog-input (the-as int (-> *cpad-list* cpads 0 righty)) (the-as float 0.05))) (f0-2 (/ (- (vector-length (-> self view-flat)) (-> self string-min-val z)) - (- (-> self string-max-val z) (-> self string-min-val z)) - ) - ) - (f30-0 (-> self view-off-param)) - ) - (if (-> self have-phony-joystick) - (set! f28-0 (* 0.05 (-> self phony-joystick-y))) - ) - (if (and (-> *camera* being-attacked) (not (time-elapsed? (-> *camera* attack-start) (seconds 0.25)))) - (set! f28-0 0.05) - ) - (if (!= f28-0 0.0) - (logior! (-> self options) 256) - ) + (- (-> self string-max-val z) (-> self string-min-val z)))) + (f30-0 (-> self view-off-param))) + (if (-> self have-phony-joystick) (set! f28-0 (* 0.05 (-> self phony-joystick-y)))) + (if (and (-> *camera* being-attacked) (not (time-elapsed? (-> *camera* attack-start) (seconds 0.25)))) (set! f28-0 0.05)) + (if (!= f28-0 0.0) (logior! (-> self options) 256)) (let ((f26-0 (fmin 1.0 f0-2))) (let ((f0-3 f26-0)) (when (< f26-0 0.0) - (let ((f0-6 - (/ (- (-> self string-min-val z) (vector-length (-> self view-flat))) (* 0.5 (-> self string-min-val z))) - ) - ) - (set! f0-3 (fmin 0.75 f0-6)) - ) - ) + (let ((f0-6 (/ (- (-> self string-min-val z) (vector-length (-> self view-flat))) (* 0.5 (-> self string-min-val z))))) + (set! f0-3 (fmin 0.75 f0-6)))) (let ((f1-10 (-> self string-min-val y)) - (f2-3 (-> self string-max-val y)) - ) - (set! (-> self view-off y) (lerp f1-10 f2-3 f0-3)) - ) - ) + (f2-3 (-> self string-max-val y))) + (set! (-> self view-off y) (lerp f1-10 f2-3 f0-3)))) (when (< f26-0 0.0) (let ((v1-28 (new 'stack-no-clear 'vector))) (vector-! v1-28 (-> self string-trans) (-> *camera* tpos-curr-adj)) (let ((f0-12 (- (- (vector-dot v1-28 (-> *camera* local-down))) (-> *camera* target-height)))) - (set! (-> self view-off y) (fmin (-> *camera* stringCliffHeight) (fmax f0-12 (-> self view-off y)))) - ) - ) - ) + (set! (-> self view-off y) (fmin (-> *camera* stringCliffHeight) (fmax f0-12 (-> self view-off y))))))) (let ((f0-16 (fmax 0.0 f26-0))) (cond - ((logtest? (-> self options) #x4000) - ) - ((not *camera-read-analog*) - ) - ((and (>= 0.0 f28-0) (>= 0.0 f0-16)) - ) - ((and (>= f28-0 0.0) (>= f0-16 1.0)) - ) - ((and (< 0.0 f28-0) - (or (= (-> self los-state) (slave-los-state ccw)) (= (-> self los-state) (slave-los-state cw))) - ) - ) + ((logtest? (-> self options) #x4000)) + ((not *camera-read-analog*)) + ((and (>= 0.0 f28-0) (>= 0.0 f0-16))) + ((and (>= f28-0 0.0) (>= f0-16 1.0))) + ((and (< 0.0 f28-0) (or (= (-> self los-state) (slave-los-state ccw)) (= (-> self los-state) (slave-los-state cw))))) ((< (* 0.05 (- 1.0 f0-16)) f28-0) (let ((f0-17 (+ f0-16 (* 0.05 (- 1.0 f0-16))))) (set! (-> self view-off-param) (fmax (-> self view-off-param) f0-17)) - (vector-normalize! (-> self view-flat) (lerp (-> self string-min-val z) (-> self string-max-val z) f0-17)) - ) - ) - ((< f28-0 (* 0.05 (- f0-16))) - (set! (-> self view-off-param) (+ f0-16 (* 0.05 (- f0-16)))) - ) + (vector-normalize! (-> self view-flat) (lerp (-> self string-min-val z) (-> self string-max-val z) f0-17)))) + ((< f28-0 (* 0.05 (- f0-16))) (set! (-> self view-off-param) (+ f0-16 (* 0.05 (- f0-16))))) ((< 0.0 f28-0) (let ((f0-19 (+ f0-16 (* f28-0 (-> *display* time-adjust-ratio))))) (set! (-> self view-off-param) (fmax (-> self view-off-param) f0-19)) - (vector-normalize! (-> self view-flat) (lerp (-> self string-min-val z) (-> self string-max-val z) f0-19)) - ) - ) - ((< f28-0 0.0) - (set! (-> self view-off-param) (+ f0-16 (* f28-0 (-> *display* time-adjust-ratio)))) - ) - ) - ) - ) + (vector-normalize! (-> self view-flat) (lerp (-> self string-min-val z) (-> self string-max-val z) f0-19)))) + ((< f28-0 0.0) (set! (-> self view-off-param) (+ f0-16 (* f28-0 (-> *display* time-adjust-ratio)))))))) (if (= f28-0 0.0) - (set! (-> self view-off z) (-> self string-max-val z)) - (set! (-> self view-off z) - (lerp (-> self string-min-val z) (-> self string-max-val z) (-> self view-off-param)) - ) - ) - (if (-> *camera* being-attacked) - (set! (-> self view-off-param) f30-0) - ) - ) + (set! (-> self view-off z) (-> self string-max-val z)) + (set! (-> self view-off z) (lerp (-> self string-min-val z) (-> self string-max-val z) (-> self view-off-param)))) + (if (-> *camera* being-attacked) (set! (-> self view-off-param) f30-0))) (when *camera-read-analog* - (let ((f0-29 (analog-input-horizontal-third ;; changed for pc port + (let ((f0-29 (analog-input-horizontal-third ;; changed for pc port (the-as int (-> *cpad-list* cpads 0 rightx)) (the-as float 128.0) (the-as float 32.0) (the-as float 110.0) - (* 21845.334 (seconds-per-frame)) - ) - ) + (* 21845.334 (seconds-per-frame)))) (s4-0 (new-stack-matrix0)) (gp-2 (new-stack-vector0)) - (s5-2 (new-stack-vector0)) - ) - (if (-> self have-phony-joystick) - (set! f0-29 (* 21845.334 (-> self phony-joystick-x) (seconds-per-frame))) - ) + (s5-2 (new-stack-vector0))) + (if (-> self have-phony-joystick) (set! f0-29 (* 21845.334 (-> self phony-joystick-x) (seconds-per-frame)))) (cond ((and (= (-> self los-state) (slave-los-state ccw)) (< 0.0 f0-29)) - (let ((f0-34 - (fmax (-> self string-min-val z) (fmin (-> self string-max-val z) (vector-length (-> self view-flat)))) - ) - ) - (set! f0-29 (* 21845.334 (+ 0.1 (/ (-> self string-min-val z) f0-34)) (seconds-per-frame))) - ) - ) + (let ((f0-34 (fmax (-> self string-min-val z) (fmin (-> self string-max-val z) (vector-length (-> self view-flat)))))) + (set! f0-29 (* 21845.334 (+ 0.1 (/ (-> self string-min-val z) f0-34)) (seconds-per-frame))))) ((and (= (-> self los-state) (slave-los-state cw)) (< f0-29 0.0)) - (let ((f0-40 - (fmax (-> self string-min-val z) (fmin (-> self string-max-val z) (vector-length (-> self view-flat)))) - ) - ) - (set! f0-29 (* -21845.334 (+ 0.1 (/ (-> self string-min-val z) f0-40)) (seconds-per-frame))) - ) - ) - ) + (let ((f0-40 (fmax (-> self string-min-val z) (fmin (-> self string-max-val z) (vector-length (-> self view-flat)))))) + (set! f0-29 (* -21845.334 (+ 0.1 (/ (-> self string-min-val z) f0-40)) (seconds-per-frame)))))) (cond ((!= f0-29 0.0) (logior! (-> self options) 256) (matrix-axis-angle! s4-0 (-> *camera* local-down) f0-29) - (vector-matrix*! (-> self view-flat) (-> self view-flat) s4-0) - ) + (vector-matrix*! (-> self view-flat) (-> self view-flat) s4-0)) ((logtest? (-> self options) 1) (vector-normalize-copy! gp-2 (-> self view-flat) (the-as float 1.0)) (vector-flatten! s5-2 (-> *camera* tgt-rot-mat vector 2) (-> *camera* local-down)) (vector-normalize! s5-2 (the-as float -1.0)) - (matrix-from-two-vectors-max-angle-partial! - s4-0 - gp-2 - s5-2 - (* 10922.667 (seconds-per-frame)) - (the-as float 0.05) - ) - (vector-matrix*! (-> self view-flat) (-> self view-flat) s4-0) - ) - ) + (matrix-from-two-vectors-max-angle-partial! s4-0 gp-2 s5-2 (* 10922.667 (seconds-per-frame)) (the-as float 0.05)) + (vector-matrix*! (-> self view-flat) (-> self view-flat) s4-0))) (when (logtest? (-> self options) #x4000) (vector-normalize-copy! gp-2 (-> self view-flat) (the-as float 1.0)) (vector-flatten! s5-2 (-> *camera* tgt-rot-mat vector 2) (-> *camera* local-down)) @@ -2381,54 +1437,33 @@ (let ((f0-47 (acos (vector-dot s5-2 gp-2)))) (when (and (< 8192.0 f0-47) (< f0-47 32585.955)) (matrix-from-two-vectors-max-angle! s4-0 gp-2 s5-2 (fmin 546.13336 (* 0.5 (+ -8192.0 f0-47)))) - (vector-matrix*! (-> self view-flat) (-> self view-flat) s4-0) - ) - ) - ) - ) - ) - ) + (vector-matrix*! (-> self view-flat) (-> self view-flat) s4-0))))))) (defbehavior cam-string-find-hidden camera-slave () (let ((s4-0 (new 'stack-no-clear 'collide-tri-result)) (s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (vector--float*! s5-0 (-> *camera* tpos-curr-adj) (-> *camera* local-down) (-> *camera* target-height)) (vector-! s5-0 s5-0 (-> self string-trans)) (cond - ((< (fill-and-probe-using-line-sphere - *collide-cache* - (-> self string-trans) - s5-0 - (the-as float 40.96) - (collide-kind background cak-3 wall-object ground-object cak-14) - (the-as process #f) - s4-0 - (new 'static 'pat-surface :nocamera #x1) - ) - 0.0 - ) + ((< (fill-and-probe-using-line-sphere *collide-cache* + (-> self string-trans) + s5-0 + (the-as float 40.96) + (collide-kind background cak-3 wall-object ground-object cak-14) + (the-as process #f) + s4-0 + (new 'static 'pat-surface :nocamera #x1)) + 0.0) (set! (-> self time-dist-too-far) (the-as uint 0)) - 0 - ) - ((< (-> self time-dist-too-far) (the-as uint 600)) - (+! (-> self time-dist-too-far) 1) - ) + 0) + ((< (-> self time-dist-too-far) (the-as uint 600)) (+! (-> self time-dist-too-far) 1)) ((cam-string-find-position-rel! gp-0) (cam-string-set-position-rel! gp-0) (set! (-> self time-dist-too-far) (the-as uint 0)) - 0 - ) - (else - (format 0 "camera position search failed~%") - (set! (-> self time-dist-too-far) (the-as uint 0)) - 0 - ) - ) - ) - (none) - ) + 0) + (else (format 0 "camera position search failed~%") (set! (-> self time-dist-too-far) (the-as uint 0)) 0))) + (none)) ;; WARN: Stack slot load at 240 mismatch: defined as size 4, got size 16 ;; WARN: Stack slot load at 256 mismatch: defined as size 4, got size 16 @@ -2439,14 +1474,11 @@ (defbehavior cam-string-move camera-slave () (local-vars (sv-240 float) (sv-256 float)) (vector-! (-> self velocity) (-> self desired-pos) (-> self string-trans)) - (if *display-cam-los-debug* - (format *stdcon* "vel ~M~%" (vector-length (-> self velocity))) - ) + (if *display-cam-los-debug* (format *stdcon* "vel ~M~%" (vector-length (-> self velocity)))) (let ((s5-1 (new 'stack-no-clear 'vector)) (s4-1 (new 'stack-no-clear 'vector)) (gp-1 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (vector-! s3-0 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) (vector+float*! s5-1 (-> self velocity) s3-0 (the-as float 0.5)) (vector-normalize! s5-1 (the-as float 1.0)) @@ -2454,460 +1486,251 @@ (vector-cross! gp-1 s4-1 s5-1) (cond ((and (< (vector-length (-> self velocity)) (-> *CAMERA-bank* min-detectable-velocity)) - (< (vector-length s3-0) (-> *CAMERA-bank* min-detectable-velocity)) - ) + (< (vector-length s3-0) (-> *CAMERA-bank* min-detectable-velocity))) (set! (-> self string-vel-dir) (the-as uint 0)) - 0 - ) + 0) ((< (cos (the-as float 5461.3335)) (vector-dot (-> *camera* local-down) s5-1)) - (set! (-> self string-vel-dir) (the-as uint 4)) - ) + (set! (-> self string-vel-dir) (the-as uint 4))) ((< (vector-dot (-> *camera* local-down) s5-1) (- (cos (the-as float 5461.3335)))) - (set! (-> self string-vel-dir) (the-as uint 3)) - ) - ((< (cos (the-as float 5461.3335)) (vector-dot s4-1 s5-1)) - (set! (-> self string-vel-dir) (the-as uint 6)) - ) - ((< (vector-dot s4-1 s5-1) (- (cos (the-as float 5461.3335)))) - (set! (-> self string-vel-dir) (the-as uint 5)) - ) - ((< (vector-dot (-> *camera* local-down) gp-1) 0.0) - (set! (-> self string-vel-dir) (the-as uint 1)) - ) - (else - (set! (-> self string-vel-dir) (the-as uint 2)) - ) - ) - ) + (set! (-> self string-vel-dir) (the-as uint 3))) + ((< (cos (the-as float 5461.3335)) (vector-dot s4-1 s5-1)) (set! (-> self string-vel-dir) (the-as uint 6))) + ((< (vector-dot s4-1 s5-1) (- (cos (the-as float 5461.3335)))) (set! (-> self string-vel-dir) (the-as uint 5))) + ((< (vector-dot (-> *camera* local-down) gp-1) 0.0) (set! (-> self string-vel-dir) (the-as uint 1))) + (else (set! (-> self string-vel-dir) (the-as uint 2))))) 0.0 (let ((f30-2 1.0) (s5-2 (new-stack-vector0)) - (gp-2 0) - ) + (gp-2 0)) (let ((s4-2 (new 'stack-no-clear 'collide-tri-result)) - (s3-1 (new 'stack-no-clear 'vector)) - ) + (s3-1 (new 'stack-no-clear 'vector))) (when *debug-segment* (if (>= (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) - (cam-collision-record-save (-> self string-trans) (-> self velocity) -1 'no-hit self) - ) - ) - (while (and (< 0.01 f30-2) - (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (< gp-2 4)) - ) + (cam-collision-record-save (-> self string-trans) (-> self velocity) -1 'no-hit self))) + (while (and (< 0.01 f30-2) (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (< gp-2 4))) (vector-float*! s5-2 (-> self velocity) f30-2) - (if *debug-segment* - (cam-collision-record-save (-> self string-trans) s5-2 gp-2 'normal self) - ) + (if *debug-segment* (cam-collision-record-save (-> self string-trans) s5-2 gp-2 'normal self)) (let ((f28-1 (if (logtest? (-> self options) 32) - (fill-and-probe-using-line-sphere - *collide-cache* - (-> self string-trans) - s5-2 - (-> *CAMERA-bank* collide-move-rad) - (collide-kind background cak-3 wall-object ground-object cak-14) - (the-as process #f) - s4-2 - (new 'static 'pat-surface :nocamera #x1) - ) - -100000000.0 - ) - ) - ) + (fill-and-probe-using-line-sphere *collide-cache* + (-> self string-trans) + s5-2 + (-> *CAMERA-bank* collide-move-rad) + (collide-kind background cak-3 wall-object ground-object cak-14) + (the-as process #f) + s4-2 + (new 'static 'pat-surface :nocamera #x1)) + -100000000.0))) (when *display-cam-los-debug* (let ((s2-0 format) (s1-0 *stdcon*) - (s0-0 "vp ~f vr ~f r ~f ta ~f~%") - ) + (s0-0 "vp ~f vr ~f r ~f ta ~f~%")) (set! sv-240 (vector-length s5-2)) (set! sv-256 f30-2) (let ((t0-3 (/ (vector-length s5-2) f30-2)) - (t1-1 f28-1) - ) - (s2-0 s1-0 s0-0 sv-240 sv-256 t0-3 t1-1) - ) - ) - ) + (t1-1 f28-1)) + (s2-0 s1-0 s0-0 sv-240 sv-256 t0-3 t1-1)))) (cond ((>= f28-1 0.0) (let* ((f1-7 (fmax 0.01 (/ 40.96 (vector-length s5-2)))) - (f0-24 (fmax 0.0 (- f28-1 f1-7))) - ) - (vector+float*! (-> self string-trans) (-> self string-trans) s5-2 f0-24) - ) + (f0-24 (fmax 0.0 (- f28-1 f1-7)))) + (vector+float*! (-> self string-trans) (-> self string-trans) s5-2 f0-24)) (vector-! s3-1 (-> self string-trans) (-> s4-2 intersect)) (vector-normalize! s3-1 (the-as float 1.0)) (vector-flatten! (-> self velocity) (-> self velocity) s3-1) (set! f30-2 (- f30-2 (* f30-2 f28-1))) - (+! gp-2 1) - ) - (else - (vector+! (-> self string-trans) (-> self string-trans) s5-2) - (set! f30-2 0.0) - ) - ) - ) - ) - ) + (+! gp-2 1)) + (else (vector+! (-> self string-trans) (-> self string-trans) s5-2) (set! f30-2 0.0)))))) (cond - ((zero? gp-2) - (logand! (-> self options) -1025) - (if *display-cam-los-debug* - (format *stdcon* "not blocked~%") - ) - ) + ((zero? gp-2) (logand! (-> self options) -1025) (if *display-cam-los-debug* (format *stdcon* "not blocked~%"))) (else - (logior! (-> self options) 1024) - (if *display-cam-los-debug* - (format *stdcon* "blocked ~D ~f~%" gp-2 f30-2) - ) - (let ((gp-3 (new-stack-vector0)) - (f30-3 (vector-length (-> self view-flat))) - ) - (vector-! gp-3 (-> self string-trans) (-> *camera* tpos-curr-adj)) - (vector-flatten! gp-3 gp-3 (-> *camera* local-down)) - (let ((f28-3 (vector-length gp-3))) - (cond - ((< f28-3 f30-3) - (vector-normalize-copy! (-> self view-flat) gp-3 f28-3) - (set! (-> self min-z-override) f28-3) - f28-3 - ) - (else - (vector-normalize-copy! (-> self view-flat) gp-3 f30-3) - ) - ) - ) - ) - ) - ) - ) + (logior! (-> self options) 1024) + (if *display-cam-los-debug* (format *stdcon* "blocked ~D ~f~%" gp-2 f30-2)) + (let ((gp-3 (new-stack-vector0)) + (f30-3 (vector-length (-> self view-flat)))) + (vector-! gp-3 (-> self string-trans) (-> *camera* tpos-curr-adj)) + (vector-flatten! gp-3 gp-3 (-> *camera* local-down)) + (let ((f28-3 (vector-length gp-3))) + (cond + ((< f28-3 f30-3) (vector-normalize-copy! (-> self view-flat) gp-3 f28-3) (set! (-> self min-z-override) f28-3) f28-3) + (else (vector-normalize-copy! (-> self view-flat) gp-3 f30-3)))))))) (when *display-cam-los-debug* (let ((a0-43 (new-stack-vector0))) (vector-! a0-43 (-> self desired-pos) (-> self string-trans)) - (format *stdcon* "vel ~M~%" (vector-length a0-43)) - ) - ) - ) + (format *stdcon* "vel ~M~%" (vector-length a0-43))))) (defbehavior cam-string-code camera-slave () - (if *debug-segment* - (cam-debug-reset-coll-tri) - ) + (if *debug-segment* (cam-debug-reset-coll-tri)) (cam-string-follow) - (if (logtest? (-> self options) 512) - (cam-string-line-of-sight) - ) - (if (not (paused?)) - (cam-string-joystick) - ) + (if (logtest? (-> self options) 512) (cam-string-line-of-sight)) + (if (not (paused?)) (cam-string-joystick)) (let ((gp-0 (new-stack-vector0))) - (vector--float*! - gp-0 - (-> self view-flat) - (-> *camera* local-down) - (+ (-> *camera* target-height) (-> self view-off y)) - ) - (vector+! (-> self desired-pos) (-> *camera* tpos-curr-adj) gp-0) - ) - (if (logtest? (-> self options) 64) - (cam-string-find-hidden) - ) + (vector--float*! gp-0 (-> self view-flat) (-> *camera* local-down) (+ (-> *camera* target-height) (-> self view-off y))) + (vector+! (-> self desired-pos) (-> *camera* tpos-curr-adj) gp-0)) + (if (logtest? (-> self options) 64) (cam-string-find-hidden)) (cond ((logtest? (-> self options) 4096) (when *debug-segment* (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-! a1-1 (-> self good-point) (-> self string-trans)) - (cam-collision-record-save (-> self string-trans) a1-1 -2 'jump self) - ) - ) + (cam-collision-record-save (-> self string-trans) a1-1 -2 'jump self))) (logand! (-> self options) -4097) (set! (-> self desired-pos quad) (-> self good-point quad)) (cam-string-move) (vector-! (-> self view-flat) (-> self string-trans) (-> *camera* tpos-curr-adj)) (vector-flatten! (-> self view-flat) (-> self view-flat) (-> *camera* local-down)) (let ((f0-2 (vector-length (-> self view-flat)))) - (if (< f0-2 (-> self min-z-override)) - (set! (-> self min-z-override) f0-2) - ) - ) - ) - (else - (cam-string-move) - ) - ) - (tracking-spline-method-17 - (-> self position-spline) - (-> self string-trans) - (the-as float 0.04096) - (the-as float 4096.0) - #t - ) + (if (< f0-2 (-> self min-z-override)) (set! (-> self min-z-override) f0-2)))) + (else (cam-string-move))) + (tracking-spline-method-17 (-> self position-spline) + (-> self string-trans) + (the-as float 0.04096) + (the-as float 4096.0) + #t) (cond ((and (logtest? (-> self options) #x4000) (logtest? (-> self options) 256)) - (tracking-spline-method-21 - (-> self position-spline) - (-> self trans) - (the-as float 102.4) - (the-as float 4096.0) - ) - ) + (tracking-spline-method-21 (-> self position-spline) (-> self trans) (the-as float 102.4) (the-as float 4096.0))) ((logtest? (-> self options) #x4000) - (tracking-spline-method-21 - (-> self position-spline) - (-> self trans) - (the-as float 40.96) - (the-as float 4096.0) - ) - ) + (tracking-spline-method-21 (-> self position-spline) (-> self trans) (the-as float 40.96) (the-as float 4096.0))) ((logtest? (-> self options) 256) - (tracking-spline-method-21 - (-> self position-spline) - (-> self trans) - (the-as float 102.4) - (the-as float 2457.6) - ) - ) - (else - (tracking-spline-method-21 - (-> self position-spline) - (-> self trans) - (the-as float 20.48) - (the-as float 2457.6) - ) - ) - ) - ) + (tracking-spline-method-21 (-> self position-spline) (-> self trans) (the-as float 102.4) (the-as float 2457.6))) + (else (tracking-spline-method-21 (-> self position-spline) (-> self trans) (the-as float 20.48) (the-as float 2457.6))))) (defbehavior set-string-parms camera-slave () (when (not (-> self string-val-locked)) (set! (-> self string-min-val quad) (-> *camera* string-min value quad)) - (let ((v0-0 (-> self string-max-val))) - (set! (-> v0-0 quad) (-> *camera* string-max value quad)) - v0-0 - ) - ) - ) + (let ((v0-0 (-> self string-max-val))) (set! (-> v0-0 quad) (-> *camera* string-max value quad)) v0-0))) (defstate cam-string (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - (let ((gp-0 (new-stack-vector0))) - (cam-string-find-position-rel! gp-0) - (cam-string-set-position-rel! gp-0) - ) - ) - (('joystick) - (set! (-> self phony-joystick-x) (the-as float (-> block param 0))) - (set! (-> self phony-joystick-y) (the-as float (-> block param 1))) - (let ((v0-1 (the-as object #t))) - (set! (-> self have-phony-joystick) (the-as symbol v0-1)) - v0-1 - ) - ) - (('set-dist) - (cond - ((-> block param 0) - (set! (-> self string-val-locked) #t) - (set! (-> self string-min-val quad) (-> (the-as vector (-> block param 0)) quad)) - (set! (-> self string-max-val quad) (-> (the-as vector (-> block param 1)) quad)) - (set! (-> self string-max-val x) (fmax (-> self string-max-val x) (-> self string-min-val x))) - (set! (-> self string-max-val y) (fmax (-> self string-max-val y) (-> self string-min-val y))) - (set! (-> self string-max-val z) (fmax (-> self string-max-val z) (-> self string-min-val z))) - ) - (else - (set! (-> self string-val-locked) #f) - #f - ) - ) - ) - (('blocked-side?) - (-> self los-state) - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (when (not (-> self enter-has-run)) - (set-string-parms) - (set! *camera-base-mode* cam-string) - (set! (-> self string-vel-dir) (the-as uint 0)) - (set! (-> self fov) 11650.845) - (set! (-> self los-tgt-spline-pt) (-> *camera* target-spline end-point)) - (set! (-> self los-tgt-spline-pt-incarnation) - (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation) - ) - (set! (-> self min-z-override) (-> self string-max-val z)) - (if (!= (-> *camera* outro-t-step) 0.0) - (set! (-> self min-z-override) (-> self string-min-val z)) - ) - (let ((gp-0 (new-stack-vector0))) - 0.0 - (set! (-> self view-off-param) (-> *camera* view-off-param-save)) - (set! (-> self view-off x) 0.0) - (let ((f0-7 (-> self string-min-val y)) - (f1-1 (-> self string-max-val y)) - ) - (set! (-> self view-off y) (lerp f0-7 f1-1 (-> self view-off-param))) - ) - (set! (-> self view-off z) - (lerp (-> self string-min-val z) (-> self string-max-val z) (-> self view-off-param)) - ) - (let ((f30-0 (cond - ((!= (-> *camera* outro-t-step) 0.0) - (curve-get-pos! gp-0 (-> *camera* outro-exit-value) (-> *camera* outro-curve)) - (vector-! gp-0 gp-0 (-> *camera* tpos-curr-adj)) - (vector-flatten! (-> self view-flat) gp-0 (-> *camera* local-down)) - (vector-length (-> self view-flat)) - ) - (else - (vector-flatten! (-> self view-flat) (-> self tracking inv-mat vector 2) (-> *camera* local-down)) - (vector-negate! (-> self view-flat) (-> self view-flat)) - 0.0 - ) - ) - ) - ) - (let ((f1-4 (fmin (-> *camera* string-push-z) (-> self min-z-override))) - (f0-17 (-> self view-off z)) - ) - (cond - ((< f30-0 f1-4) - (set! f30-0 f1-4) - ) - ((< f0-17 f30-0) - (set! f30-0 f0-17) - ) - ) - ) - (vector-normalize! (-> self view-flat) f30-0) - (let ((f30-1 (/ (- f30-0 (-> self string-min-val z)) (- (-> self string-max-val z) (-> self string-min-val z))))) - (if (< 1.0 f30-1) - (set! f30-1 1.0) - ) - (if (< f30-1 0.0) - (set! f30-1 0.0) - ) - (let ((f0-22 (-> self string-min-val y)) - (f1-7 (-> self string-max-val y)) - ) - (set! (-> self view-off y) (lerp f0-22 f1-7 f30-1)) - ) - (set! (-> self view-off z) (lerp (-> self string-min-val z) (-> self string-max-val z) f30-1)) - ) - ) - ) - (vector--float*! - (-> self desired-pos) - (-> self view-flat) - (-> *camera* local-down) - (+ (-> *camera* target-height) (-> self view-off y)) - ) - (vector+! (-> self desired-pos) (-> self desired-pos) (-> *camera* tpos-curr-adj)) - (set! (-> self string-trans quad) (-> self desired-pos quad)) - (vector-reset! (-> self velocity)) - (let ((s4-0 (new 'stack-no-clear 'collide-tri-result)) - (s5-0 (new 'stack-no-clear 'vector)) - (gp-1 (new 'stack-no-clear 'vector)) - ) - (vector--float*! s5-0 (-> *camera* tpos-curr-adj) (-> *camera* local-down) (-> *camera* target-height)) - (vector-! gp-1 (-> self string-trans) s5-0) - (let ((f0-31 (fill-and-probe-using-line-sphere - *collide-cache* - s5-0 - gp-1 - (-> *CAMERA-bank* collide-move-rad) - (collide-kind background cak-3 wall-object ground-object cak-14) - (the-as process #f) - s4-0 - (new 'static 'pat-surface :nocamera #x1 :nolineofsight #x1) - ) - ) - ) - (when (and (< 0.0 f0-31) (< f0-31 1.0)) - (vector-float*! gp-1 gp-1 f0-31) - (vector-flatten! (-> self view-flat) gp-1 (-> *camera* local-down)) - (let ((f0-32 (vector-length (-> self view-flat)))) - (cond - ((< f0-32 8192.0) - (let ((gp-2 (new-stack-vector0))) - (cam-string-find-position-rel! gp-2) - (cam-string-set-position-rel! gp-2) - ) - ) - (else - (if (< f0-32 (-> self min-z-override)) - (set! (-> self min-z-override) f0-32) - ) - (let ((f30-2 (/ (- f0-32 (-> self string-min-val z)) (- (-> self string-max-val z) (-> self string-min-val z))))) - (if (< 1.0 f30-2) - (set! f30-2 1.0) - ) - (if (< f30-2 0.0) - (set! f30-2 0.0) - ) - (let ((f0-36 (-> self string-min-val y)) - (f1-16 (-> self string-max-val y)) - ) - (set! (-> self view-off y) (lerp f0-36 f1-16 f30-2)) - ) - (set! (-> self view-off z) (lerp (-> self string-min-val z) (-> self string-max-val z) f30-2)) - ) - (vector--float*! - (-> self desired-pos) - (-> self view-flat) - (-> *camera* local-down) - (+ (-> *camera* target-height) (-> self view-off y)) - ) - (vector+! (-> self desired-pos) (-> self desired-pos) (-> *camera* tpos-curr-adj)) - (set! (-> self string-trans quad) (-> self desired-pos quad)) - (vector-reset! (-> self velocity)) - ) - ) - ) - ) - ) - ) - (set! (-> self trans quad) (-> self string-trans quad)) - (set! (-> self los-last-pos quad) (-> self string-trans quad)) - (tracking-spline-method-10 (-> self position-spline) (-> self string-trans)) - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (when (not (paused?)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) (let ((gp-0 (new-stack-vector0))) (cam-string-find-position-rel! gp-0) (cam-string-set-position-rel! gp-0))) + (('joystick) + (set! (-> self phony-joystick-x) (the-as float (-> block param 0))) + (set! (-> self phony-joystick-y) (the-as float (-> block param 1))) + (let ((v0-1 (the-as object #t))) (set! (-> self have-phony-joystick) (the-as symbol v0-1)) v0-1)) + (('set-dist) + (cond + ((-> block param 0) + (set! (-> self string-val-locked) #t) + (set! (-> self string-min-val quad) (-> (the-as vector (-> block param 0)) quad)) + (set! (-> self string-max-val quad) (-> (the-as vector (-> block param 1)) quad)) + (set! (-> self string-max-val x) (fmax (-> self string-max-val x) (-> self string-min-val x))) + (set! (-> self string-max-val y) (fmax (-> self string-max-val y) (-> self string-min-val y))) + (set! (-> self string-max-val z) (fmax (-> self string-max-val z) (-> self string-min-val z)))) + (else (set! (-> self string-val-locked) #f) #f))) + (('blocked-side?) (-> self los-state)) + (else (cam-standard-event-handler proc argc message block)))) + :enter + (behavior () + (when (not (-> self enter-has-run)) (set-string-parms) - (cam-string-code) - (tracking-spline-method-9 (-> self position-spline)) - (set! (-> self have-phony-joystick) #f) - ) - (suspend) - ) - ) - ) + (set! *camera-base-mode* cam-string) + (set! (-> self string-vel-dir) (the-as uint 0)) + (set! (-> self fov) 11650.845) + (set! (-> self los-tgt-spline-pt) (-> *camera* target-spline end-point)) + (set! (-> self los-tgt-spline-pt-incarnation) (-> *camera* target-spline point (-> self los-tgt-spline-pt) incarnation)) + (set! (-> self min-z-override) (-> self string-max-val z)) + (if (!= (-> *camera* outro-t-step) 0.0) (set! (-> self min-z-override) (-> self string-min-val z))) + (let ((gp-0 (new-stack-vector0))) + 0.0 + (set! (-> self view-off-param) (-> *camera* view-off-param-save)) + (set! (-> self view-off x) 0.0) + (let ((f0-7 (-> self string-min-val y)) + (f1-1 (-> self string-max-val y))) + (set! (-> self view-off y) (lerp f0-7 f1-1 (-> self view-off-param)))) + (set! (-> self view-off z) (lerp (-> self string-min-val z) (-> self string-max-val z) (-> self view-off-param))) + (let ((f30-0 (cond + ((!= (-> *camera* outro-t-step) 0.0) + (curve-get-pos! gp-0 (-> *camera* outro-exit-value) (-> *camera* outro-curve)) + (vector-! gp-0 gp-0 (-> *camera* tpos-curr-adj)) + (vector-flatten! (-> self view-flat) gp-0 (-> *camera* local-down)) + (vector-length (-> self view-flat))) + (else + (vector-flatten! (-> self view-flat) (-> self tracking inv-mat vector 2) (-> *camera* local-down)) + (vector-negate! (-> self view-flat) (-> self view-flat)) + 0.0)))) + (let ((f1-4 (fmin (-> *camera* string-push-z) (-> self min-z-override))) + (f0-17 (-> self view-off z))) + (cond + ((< f30-0 f1-4) (set! f30-0 f1-4)) + ((< f0-17 f30-0) (set! f30-0 f0-17)))) + (vector-normalize! (-> self view-flat) f30-0) + (let ((f30-1 (/ (- f30-0 (-> self string-min-val z)) (- (-> self string-max-val z) (-> self string-min-val z))))) + (if (< 1.0 f30-1) (set! f30-1 1.0)) + (if (< f30-1 0.0) (set! f30-1 0.0)) + (let ((f0-22 (-> self string-min-val y)) + (f1-7 (-> self string-max-val y))) + (set! (-> self view-off y) (lerp f0-22 f1-7 f30-1))) + (set! (-> self view-off z) (lerp (-> self string-min-val z) (-> self string-max-val z) f30-1))))) + (vector--float*! (-> self desired-pos) + (-> self view-flat) + (-> *camera* local-down) + (+ (-> *camera* target-height) (-> self view-off y))) + (vector+! (-> self desired-pos) (-> self desired-pos) (-> *camera* tpos-curr-adj)) + (set! (-> self string-trans quad) (-> self desired-pos quad)) + (vector-reset! (-> self velocity)) + (let ((s4-0 (new 'stack-no-clear 'collide-tri-result)) + (s5-0 (new 'stack-no-clear 'vector)) + (gp-1 (new 'stack-no-clear 'vector))) + (vector--float*! s5-0 (-> *camera* tpos-curr-adj) (-> *camera* local-down) (-> *camera* target-height)) + (vector-! gp-1 (-> self string-trans) s5-0) + (let ((f0-31 (fill-and-probe-using-line-sphere *collide-cache* + s5-0 + gp-1 + (-> *CAMERA-bank* collide-move-rad) + (collide-kind background cak-3 wall-object ground-object cak-14) + (the-as process #f) + s4-0 + (new 'static 'pat-surface :nocamera #x1 :nolineofsight #x1)))) + (when (and (< 0.0 f0-31) (< f0-31 1.0)) + (vector-float*! gp-1 gp-1 f0-31) + (vector-flatten! (-> self view-flat) gp-1 (-> *camera* local-down)) + (let ((f0-32 (vector-length (-> self view-flat)))) + (cond + ((< f0-32 8192.0) + (let ((gp-2 (new-stack-vector0))) (cam-string-find-position-rel! gp-2) (cam-string-set-position-rel! gp-2))) + (else + (if (< f0-32 (-> self min-z-override)) (set! (-> self min-z-override) f0-32)) + (let ((f30-2 (/ (- f0-32 (-> self string-min-val z)) (- (-> self string-max-val z) (-> self string-min-val z))))) + (if (< 1.0 f30-2) (set! f30-2 1.0)) + (if (< f30-2 0.0) (set! f30-2 0.0)) + (let ((f0-36 (-> self string-min-val y)) + (f1-16 (-> self string-max-val y))) + (set! (-> self view-off y) (lerp f0-36 f1-16 f30-2))) + (set! (-> self view-off z) (lerp (-> self string-min-val z) (-> self string-max-val z) f30-2))) + (vector--float*! (-> self desired-pos) + (-> self view-flat) + (-> *camera* local-down) + (+ (-> *camera* target-height) (-> self view-off y))) + (vector+! (-> self desired-pos) (-> self desired-pos) (-> *camera* tpos-curr-adj)) + (set! (-> self string-trans quad) (-> self desired-pos quad)) + (vector-reset! (-> self velocity)))))))) + (set! (-> self trans quad) (-> self string-trans quad)) + (set! (-> self los-last-pos quad) (-> self string-trans quad)) + (tracking-spline-method-10 (-> self position-spline) (-> self string-trans)) + (set! (-> self blend-from-type) (the-as uint 2)) + (set! (-> self blend-to-type) (the-as uint 2)))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (when (not (paused?)) + (set-string-parms) + (cam-string-code) + (tracking-spline-method-9 (-> self position-spline)) + (set! (-> self have-phony-joystick) #f)) + (suspend)))) (deftype cam-stick-bank (basic) - ((max-z meters) - (min-z meters) - (max-y meters) - (min-y meters) - ) - ) - + ((max-z meters) + (min-z meters) + (max-y meters) + (min-y meters))) (define *CAM_STICK-bank* - (new 'static 'cam-stick-bank :max-z (meters 30) :min-z (meters 5) :max-y (meters 15) :min-y (meters 2)) - ) + (new 'static 'cam-stick-bank :max-z (meters 30) :min-z (meters 5) :max-y (meters 15) :min-y (meters 2))) (defbehavior cam-stick-code camera-slave () (cam-calc-follow! (-> self tracking) (-> self trans) #t) @@ -2915,306 +1738,196 @@ (vector-flatten! (-> self view-flat) (-> self view-flat) (-> *camera* local-down)) (vector-normalize! (-> self view-flat) (-> self view-off z)) (vector-! gp-0 (-> self view-flat) (vector-float*! gp-0 (-> *camera* local-down) (-> self view-off y))) - (vector+! (-> self desired-pos) (-> self tracking follow-pt) gp-0) - ) + (vector+! (-> self desired-pos) (-> self tracking follow-pt) gp-0)) (let ((v1-3 (new-stack-vector0)) - (gp-1 (new-stack-vector0)) - ) + (gp-1 (new-stack-vector0))) (vector-! v1-3 (-> self desired-pos) (-> self trans)) (vector-float*! v1-3 v1-3 0.2) (vector-! gp-1 v1-3 (-> self velocity)) - (if (< 409.6 (vector-length gp-1)) - (vector-normalize! gp-1 (the-as float 409.6)) - ) - (vector+! (-> self velocity) (-> self velocity) gp-1) - ) + (if (< 409.6 (vector-length gp-1)) (vector-normalize! gp-1 (the-as float 409.6))) + (vector+! (-> self velocity) (-> self velocity) gp-1)) 0.0 (let ((f30-1 1.0) (gp-2 (new-stack-vector0)) (s5-0 (new-stack-vector0)) (s4-0 4) - (s2-0 0) - ) + (s2-0 0)) (let ((s3-0 (new 'stack-no-clear 'collide-tri-result))) - (while (and (< 0.01 f30-1) - (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (> s4-0 0)) - ) + (while (and (< 0.01 f30-1) (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (> s4-0 0))) (+! s4-0 -1) (vector-float*! gp-2 (-> self velocity) f30-1) (let ((f28-0 (if (logtest? (-> self options) 32) - (fill-and-probe-using-line-sphere - *collide-cache* - (-> self trans) - gp-2 - (-> *CAMERA-bank* collide-move-rad) - (collide-kind background cak-3 wall-object ground-object cak-14) - (the-as process #f) - s3-0 - (new 'static 'pat-surface :nocamera #x1) - ) - -100000000.0 - ) - ) - ) + (fill-and-probe-using-line-sphere *collide-cache* + (-> self trans) + gp-2 + (-> *CAMERA-bank* collide-move-rad) + (collide-kind background cak-3 wall-object ground-object cak-14) + (the-as process #f) + s3-0 + (new 'static 'pat-surface :nocamera #x1)) + -100000000.0))) (cond ((>= f28-0 0.0) (vector+float*! (-> self trans) (-> self trans) gp-2 f28-0) (set! (-> s5-0 quad) (-> s3-0 normal quad)) (vector-flatten! (-> self velocity) (-> self velocity) s5-0) (set! f30-1 (- f30-1 (* f30-1 f28-0))) - (set! s2-0 1) - ) - (else - (vector+! (-> self trans) (-> self trans) gp-2) - (set! f30-1 0.0) - ) - ) - ) - ) - ) + (set! s2-0 1)) + (else (vector+! (-> self trans) (-> self trans) gp-2) (set! f30-1 0.0)))))) (when (nonzero? s2-0) 0 (let ((gp-3 (new-stack-vector0))) 0.0 (vector-! gp-3 (-> self trans) (-> self tracking follow-pt)) (vector-flatten! gp-3 gp-3 (-> *camera* local-down)) - (let ((f0-14 (/ (- (vector-length gp-3) (-> *CAM_STICK-bank* min-z)) - (- (-> *CAM_STICK-bank* max-z) (-> *CAM_STICK-bank* min-z)) - ) - ) - ) + (let ((f0-14 (/ (- (vector-length gp-3) (-> *CAM_STICK-bank* min-z)) (- (-> *CAM_STICK-bank* max-z) (-> *CAM_STICK-bank* min-z))))) (cond - ((< f0-14 0.0) - (set! f0-14 0.0) - ) - ((< 1.0 f0-14) - (set! f0-14 1.0) - ) - ) + ((< f0-14 0.0) (set! f0-14 0.0)) + ((< 1.0 f0-14) (set! f0-14 1.0))) (cond - ((< (- f0-14 (-> self view-off-param)) -0.001) - (set! (-> self view-off-param) f0-14) - ) - ((< 0.001 (- f0-14 (-> self view-off-param))) - (vector-normalize-copy! (-> self view-flat) gp-3 (-> self view-off z)) - ) - ) - ) - ) - ) - ) + ((< (- f0-14 (-> self view-off-param)) -0.001) (set! (-> self view-off-param) f0-14)) + ((< 0.001 (- f0-14 (-> self view-off-param))) (vector-normalize-copy! (-> self view-flat) gp-3 (-> self view-off z)))))))) (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #t) - (none) - ) + (none)) ;; third person camera (in debug menu, and fishermans-boat-player-control w/o autopilot?) (defstate cam-stick (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self view-off-param) (-> *camera* view-off-param-save)) - (set! (-> self view-off x) 0.0) - (set! (-> self view-off y) - (lerp (-> *CAM_STICK-bank* min-y) (-> *CAM_STICK-bank* max-y) (-> self view-off-param)) - ) - (set! (-> self view-off z) - (lerp (-> *CAM_STICK-bank* min-z) (-> *CAM_STICK-bank* max-z) (-> self view-off-param)) - ) - (cam-calc-follow! (-> self tracking) (-> self trans) #f) - (vector-flatten! (-> self view-flat) (-> self tracking inv-mat vector 2) (-> *camera* local-down)) - (vector-negate! (-> self view-flat) (-> self view-flat)) - (vector-normalize! (-> self view-flat) (-> self view-off z)) - (vector--float*! (-> self desired-pos) (-> self view-flat) (-> *camera* local-down) (-> self view-off y)) - (vector+! (-> self desired-pos) (-> self desired-pos) (-> self tracking follow-pt)) - (set! (-> self trans quad) (-> self desired-pos quad)) - (vector-reset! (-> self velocity)) - (set! (-> self blend-from-type) (the-as uint 2)) - (set! (-> self blend-to-type) (the-as uint 2)) - (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #f) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - (when (not (paused?)) - (when *camera-read-analog* - (let ((f0-0 - (analog-input-vertical-third ;; og:preserve-this changed for pc port - (the-as int (-> *cpad-list* cpads 0 righty)) - (the-as float 128.0) - (the-as float 32.0) - (the-as float 110.0) - (the-as float 0.05) - ) - ) - ) - (cond - ((< (* 0.05 (- 1.0 (-> self view-off-param))) f0-0) - (+! (-> self view-off-param) (* 0.05 (- 1.0 (-> self view-off-param)))) - ) - ((< f0-0 (* 0.05 (- (-> self view-off-param)))) - (+! (-> self view-off-param) (* 0.05 (- (-> self view-off-param)))) - ) - (else - (+! (-> self view-off-param) f0-0) - ) - ) - ) - ) - (set! (-> self view-off y) - (lerp (-> *CAM_STICK-bank* min-y) (-> *CAM_STICK-bank* max-y) (-> self view-off-param)) - ) - (set! (-> self view-off z) - (lerp (-> *CAM_STICK-bank* min-z) (-> *CAM_STICK-bank* max-z) (-> self view-off-param)) - ) - (when *camera-read-analog* - (let ((f0-16 (analog-input-horizontal-third ;; og:preserve-this changed for pc port - (the-as int (-> *cpad-list* cpads 0 rightx)) - (the-as float 128.0) - (the-as float 32.0) - (the-as float 110.0) - (* 21845.334 (seconds-per-frame)) - ) - ) - (gp-0 (new-stack-matrix0)) - (s3-0 (new-stack-vector0)) - (s5-0 (new-stack-vector0)) - (s4-0 (new-stack-vector0)) - ) - (cond - ((!= f0-16 0.0) - (matrix-axis-angle! gp-0 (-> *camera* local-down) f0-16) - (vector-matrix*! (-> self view-flat) (-> self view-flat) gp-0) - ) - ((logtest? (-> self options) 1) - (set-vector! s5-0 0.0 0.0 1.0 1.0) - (vector-normalize-copy! s5-0 (-> self view-flat) (the-as float 1.0)) - (set! (-> s3-0 quad) (-> *camera* tgt-rot-mat vector 2 quad)) - (vector-flatten! s3-0 s3-0 (-> *camera* local-down)) - (vector-negate! s3-0 s3-0) - (set! (-> s4-0 quad) (-> s5-0 quad)) - (vector-normalize-copy! s4-0 s3-0 (the-as float 1.0)) - (matrix-from-two-vectors-max-angle-partial! - gp-0 - s5-0 - s4-0 - (* 10922.667 (seconds-per-frame)) - (the-as float 0.05) - ) - (vector-matrix*! (-> self view-flat) (-> self view-flat) gp-0) - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (if (not (paused?)) - (cam-stick-code) - ) - (suspend) - ) - ) - ) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self view-off-param) (-> *camera* view-off-param-save)) + (set! (-> self view-off x) 0.0) + (set! (-> self view-off y) (lerp (-> *CAM_STICK-bank* min-y) (-> *CAM_STICK-bank* max-y) (-> self view-off-param))) + (set! (-> self view-off z) (lerp (-> *CAM_STICK-bank* min-z) (-> *CAM_STICK-bank* max-z) (-> self view-off-param))) + (cam-calc-follow! (-> self tracking) (-> self trans) #f) + (vector-flatten! (-> self view-flat) (-> self tracking inv-mat vector 2) (-> *camera* local-down)) + (vector-negate! (-> self view-flat) (-> self view-flat)) + (vector-normalize! (-> self view-flat) (-> self view-off z)) + (vector--float*! (-> self desired-pos) (-> self view-flat) (-> *camera* local-down) (-> self view-off y)) + (vector+! (-> self desired-pos) (-> self desired-pos) (-> self tracking follow-pt)) + (set! (-> self trans quad) (-> self desired-pos quad)) + (vector-reset! (-> self velocity)) + (set! (-> self blend-from-type) (the-as uint 2)) + (set! (-> self blend-to-type) (the-as uint 2)) + (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #f))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating)) + (when (not (paused?)) + (when *camera-read-analog* + (let ((f0-0 (analog-input-vertical-third ;; og:preserve-this changed for pc port + (the-as int (-> *cpad-list* cpads 0 righty)) + (the-as float 128.0) + (the-as float 32.0) + (the-as float 110.0) + (the-as float 0.05)))) + (cond + ((< (* 0.05 (- 1.0 (-> self view-off-param))) f0-0) + (+! (-> self view-off-param) (* 0.05 (- 1.0 (-> self view-off-param))))) + ((< f0-0 (* 0.05 (- (-> self view-off-param)))) (+! (-> self view-off-param) (* 0.05 (- (-> self view-off-param))))) + (else (+! (-> self view-off-param) f0-0))))) + (set! (-> self view-off y) (lerp (-> *CAM_STICK-bank* min-y) (-> *CAM_STICK-bank* max-y) (-> self view-off-param))) + (set! (-> self view-off z) (lerp (-> *CAM_STICK-bank* min-z) (-> *CAM_STICK-bank* max-z) (-> self view-off-param))) + (when *camera-read-analog* + (let ((f0-16 (analog-input-horizontal-third ;; og:preserve-this changed for pc port + (the-as int (-> *cpad-list* cpads 0 rightx)) + (the-as float 128.0) + (the-as float 32.0) + (the-as float 110.0) + (* 21845.334 (seconds-per-frame)))) + (gp-0 (new-stack-matrix0)) + (s3-0 (new-stack-vector0)) + (s5-0 (new-stack-vector0)) + (s4-0 (new-stack-vector0))) + (cond + ((!= f0-16 0.0) + (matrix-axis-angle! gp-0 (-> *camera* local-down) f0-16) + (vector-matrix*! (-> self view-flat) (-> self view-flat) gp-0)) + ((logtest? (-> self options) 1) + (set-vector! s5-0 0.0 0.0 1.0 1.0) + (vector-normalize-copy! s5-0 (-> self view-flat) (the-as float 1.0)) + (set! (-> s3-0 quad) (-> *camera* tgt-rot-mat vector 2 quad)) + (vector-flatten! s3-0 s3-0 (-> *camera* local-down)) + (vector-negate! s3-0 s3-0) + (set! (-> s4-0 quad) (-> s5-0 quad)) + (vector-normalize-copy! s4-0 s3-0 (the-as float 1.0)) + (matrix-from-two-vectors-max-angle-partial! gp-0 s5-0 s4-0 (* 10922.667 (seconds-per-frame)) (the-as float 0.05)) + (vector-matrix*! (-> self view-flat) (-> self view-flat) gp-0))))))) + :code + (behavior () + (loop + (if (not (paused?)) (cam-stick-code)) + (suspend)))) (deftype cam-bike-bank (basic) - ((max-z meters) - (min-z meters) - (max-y meters) - (min-y meters) - ) - ) - + ((max-z meters) + (min-z meters) + (max-y meters) + (min-y meters))) (define *CAM_BIKE-bank* - (new 'static 'cam-bike-bank :max-z (meters 6) :min-z (meters 10) :max-y (meters 3) :min-y (meters 5)) - ) + (new 'static 'cam-bike-bank :max-z (meters 6) :min-z (meters 10) :max-y (meters 3) :min-y (meters 5))) (defbehavior cam-calc-bike-follow! camera-slave ((arg0 cam-rotation-tracker) (arg1 vector) (arg2 symbol)) (vector-float*! (-> arg0 follow-off) (-> *camera* tgt-face-mat vector 2) 155648.0) (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) - (vector--float*! - (-> arg0 follow-pt) - (-> arg0 follow-pt) - (-> *camera* local-down) - (+ 12288.0 (-> *camera* target-height)) - ) - (-> arg0 follow-pt) - ) + (vector--float*! (-> arg0 follow-pt) + (-> arg0 follow-pt) + (-> *camera* local-down) + (+ 12288.0 (-> *camera* target-height))) + (-> arg0 follow-pt)) (defbehavior cam-bike-code camera-slave () (let ((s4-0 (new-stack-matrix0))) (let ((gp-0 (new-stack-vector0)) - (s5-0 (new-stack-vector0)) - ) + (s5-0 (new-stack-vector0))) (vector-normalize-copy! gp-0 (-> self view-flat) (the-as float 1.0)) (vector-flatten! s5-0 (-> *camera* tgt-rot-mat vector 2) (-> *camera* local-down)) (vector-normalize! s5-0 (the-as float -1.0)) - (matrix-from-two-vectors-partial-linear! s4-0 gp-0 s5-0 (the-as float 0.2)) - ) - (vector-matrix*! (-> self view-flat) (-> self view-flat) s4-0) - ) + (matrix-from-two-vectors-partial-linear! s4-0 gp-0 s5-0 (the-as float 0.2))) + (vector-matrix*! (-> self view-flat) (-> self view-flat) s4-0)) (let ((gp-1 (new-stack-vector0))) 0.0 (vector-! gp-1 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) (let ((f30-0 (vector-length gp-1))) - (set! (-> self view-off z) (lerp-clamp - (-> *CAM_BIKE-bank* max-z) - (-> *CAM_BIKE-bank* min-z) - (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))) - ) - ) - (set! (-> self view-off y) (lerp-clamp - (-> *CAM_BIKE-bank* max-y) - (-> *CAM_BIKE-bank* min-y) - (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))) - ) - ) - ) + (set! (-> self view-off z) + (lerp-clamp (-> *CAM_BIKE-bank* max-z) + (-> *CAM_BIKE-bank* min-z) + (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))))) + (set! (-> self view-off y) + (lerp-clamp (-> *CAM_BIKE-bank* max-y) + (-> *CAM_BIKE-bank* min-y) + (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0)))))) (vector-flatten! (-> self view-flat) (-> self view-flat) (-> *camera* local-down)) (vector-normalize! (-> self view-flat) (-> self view-off z)) (vector-! gp-1 (-> self view-flat) (vector-float*! gp-1 (-> *camera* local-down) (-> self view-off y))) - (vector+! (-> self desired-pos) (-> *camera* tpos-curr-adj) gp-1) - ) + (vector+! (-> self desired-pos) (-> *camera* tpos-curr-adj) gp-1)) (let ((v1-20 (new-stack-vector0)) - (gp-2 (new-stack-vector0)) - ) + (gp-2 (new-stack-vector0))) (vector-! v1-20 (-> self desired-pos) (-> self trans)) (vector-float*! v1-20 v1-20 0.2) (vector-! gp-2 v1-20 (-> self velocity)) - (if (< 409.6 (vector-length gp-2)) - (vector-normalize! gp-2 (the-as float 409.6)) - ) - (vector+! (-> self velocity) (-> self velocity) gp-2) - ) + (if (< 409.6 (vector-length gp-2)) (vector-normalize! gp-2 (the-as float 409.6))) + (vector+! (-> self velocity) (-> self velocity) gp-2)) 0.0 (let ((f30-2 1.0) (gp-3 (new-stack-vector0)) (s5-3 4) - (s4-3 (new 'stack-no-clear 'collide-tri-result)) - ) - (while (and (< 0.01 f30-2) - (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (> s5-3 0)) - ) + (s4-3 (new 'stack-no-clear 'collide-tri-result))) + (while (and (< 0.01 f30-2) (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (> s5-3 0))) (+! s5-3 -1) (vector-float*! gp-3 (-> self velocity) f30-2) (let ((f28-0 (if (logtest? (-> self options) 32) - (fill-and-probe-using-line-sphere - *collide-cache* - (-> self trans) - gp-3 - (the-as float 4096.0) - (collide-kind background cak-3 wall-object ground-object cak-14) - (the-as process #f) - s4-3 - (new 'static 'pat-surface :nocamera #x1) - ) - -100000000.0 - ) - ) - ) + (fill-and-probe-using-line-sphere *collide-cache* + (-> self trans) + gp-3 + (the-as float 4096.0) + (collide-kind background cak-3 wall-object ground-object cak-14) + (the-as process #f) + s4-3 + (new 'static 'pat-surface :nocamera #x1)) + -100000000.0))) (cond ((>= f28-0 0.0) (vector+float*! (-> self trans) (-> self trans) gp-3 f28-0) @@ -3223,57 +1936,40 @@ (let ((s3-2 (new-stack-vector0))) (vector-! s3-2 (-> self trans) (-> *camera* tpos-curr-adj)) (vector-flatten! s3-2 s3-2 (-> *camera* local-down)) - (vector-normalize-copy! (-> self view-flat) s3-2 (-> self view-off z)) - ) - ) - (else - (vector+! (-> self trans) (-> self trans) gp-3) - (set! f30-2 0.0) - ) - ) - ) - ) - ) + (vector-normalize-copy! (-> self view-flat) s3-2 (-> self view-off z)))) + (else (vector+! (-> self trans) (-> self trans) gp-3) (set! f30-2 0.0)))))) (cam-calc-bike-follow! (-> self tracking) (-> self trans) #t) (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #t) - (none) - ) + (none)) (defstate cam-bike (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> *camera* foot-offset) 4096.0) - (set! (-> *camera* head-offset) 16384.0) - (set! (-> self view-off x) 0.0) - (set! (-> self view-off y) (-> *CAM_BIKE-bank* max-y)) - (set! (-> self view-off z) (-> *CAM_BIKE-bank* max-z)) - (vector-flatten! (-> self view-flat) (-> self tracking inv-mat vector 2) (-> *camera* local-down)) - (vector-negate! (-> self view-flat) (-> self view-flat)) - (vector-normalize! (-> self view-flat) (-> self view-off z)) - (vector--float*! (-> self desired-pos) (-> self view-flat) (-> *camera* local-down) (-> self view-off y)) - (vector+! (-> self desired-pos) (-> self desired-pos) (-> *camera* tpos-curr-adj)) - (set! (-> self trans quad) (-> self desired-pos quad)) - (vector-reset! (-> self velocity)) - (set! (-> self blend-from-type) (the-as uint 0)) - (set! (-> self blend-to-type) (the-as uint 1)) - (cam-calc-bike-follow! (-> self tracking) (-> self trans) #f) - (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #f) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (if (not (paused?)) - (cam-bike-code) - ) - (suspend) - ) - ) - ) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> *camera* foot-offset) 4096.0) + (set! (-> *camera* head-offset) 16384.0) + (set! (-> self view-off x) 0.0) + (set! (-> self view-off y) (-> *CAM_BIKE-bank* max-y)) + (set! (-> self view-off z) (-> *CAM_BIKE-bank* max-z)) + (vector-flatten! (-> self view-flat) (-> self tracking inv-mat vector 2) (-> *camera* local-down)) + (vector-negate! (-> self view-flat) (-> self view-flat)) + (vector-normalize! (-> self view-flat) (-> self view-off z)) + (vector--float*! (-> self desired-pos) (-> self view-flat) (-> *camera* local-down) (-> self view-off y)) + (vector+! (-> self desired-pos) (-> self desired-pos) (-> *camera* tpos-curr-adj)) + (set! (-> self trans quad) (-> self desired-pos quad)) + (vector-reset! (-> self velocity)) + (set! (-> self blend-from-type) (the-as uint 0)) + (set! (-> self blend-to-type) (the-as uint 1)) + (cam-calc-bike-follow! (-> self tracking) (-> self trans) #f) + (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #f))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (if (not (paused?)) (cam-bike-code)) + (suspend)))) (define *camera-base-mode* cam-string) diff --git a/goal_src/jak1/engine/camera/cam-update-h.gc b/goal_src/jak1/engine/camera/cam-update-h.gc index cf765dd2da..28c6d3970f 100644 --- a/goal_src/jak1/engine/camera/cam-update-h.gc +++ b/goal_src/jak1/engine/camera/cam-update-h.gc @@ -1,29 +1,29 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/matrix.gc") (require "engine/util/smush-control-h.gc") - -;; name: cam-update-h.gc -;; name in dgo: cam-update-h -;; dgos: GAME, ENGINE - (defenum external-cam-option :bitfield #t - (allow-z 0) - ) + (allow-z 0)) (define *external-cam-options* (external-cam-option)) + (define *external-cam-mode* #f) + (define-perm *camera-look-through-other* int 0) + (define-perm *camera-other-fov* bfloat (new 'static 'bfloat :data 11650.845)) + (define-perm *camera-other-trans* vector (vector-reset! (new 'global 'vector))) + (define-perm *camera-other-matrix* matrix (matrix-identity! (new 'global 'matrix))) + (define-perm *camera-smush-control* smush-control (set-zero! (new 'global 'smush-control))) -(define-perm *camera-other-root* vector (vector-reset! (new 'global 'vector))) +(define-perm *camera-other-root* vector (vector-reset! (new 'global 'vector))) ;; TODO - actually defined in cam-states-dbg (define-extern cam-free-floating-move (function matrix vector vector int vector)) + (define-extern cam-free-floating-input (function vector vector symbol int vector)) diff --git a/goal_src/jak1/engine/camera/cam-update.gc b/goal_src/jak1/engine/camera/cam-update.gc index 828088361e..a891d58d40 100644 --- a/goal_src/jak1/engine/camera/cam-update.gc +++ b/goal_src/jak1/engine/camera/cam-update.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/tie/tie-h.gc") (require "engine/level/bsp-h.gc") (require "engine/gfx/math-camera.gc") @@ -12,10 +11,6 @@ (require "engine/gfx/background/wind.gc") (require "engine/math/quaternion.gc") -;; name: cam-update.gc -;; name in dgo: cam-update -;; dgos: GAME, ENGINE - ;; Once the camera's position and orientation has been calculated, ;; the camera and visibility outputs are updated in this file. @@ -28,10 +23,8 @@ (set! (-> (&-> arg0 0 data arg4) 0) (-> s4-0 x)) (set! (-> (&-> arg0 0 data arg4) 4) (-> s4-0 y)) (set! (-> (&-> arg0 0 data arg4) 8) (-> s4-0 z)) - (set! (-> (&-> arg0 0 data arg4) 12) (-> s4-0 w)) - ) - (none) - ) + (set! (-> (&-> arg0 0 data arg4) 12) (-> s4-0 w))) + (none)) (defun set-point ((arg0 vector) (arg1 float) (arg2 float) (arg3 float)) "Set a vector to an xyz point (sets w = 1.0)" @@ -39,8 +32,7 @@ (set! (-> arg0 y) arg2) (set! (-> arg0 z) arg3) (set! (-> arg0 w) 1.0) - (none) - ) + (none)) (defun update-view-planes ((arg0 math-camera) (arg1 (inline-array plane)) (arg2 float)) "Compute the frustum planes from the given camera." @@ -50,8 +42,7 @@ (let ((f30-0 (* arg2 (-> arg0 x-ratio) (-> arg0 d))) (f26-0 (* arg2 (-> arg0 y-ratio) (-> arg0 d))) (f28-0 (* arg2 (-> arg0 x-ratio) (-> arg0 f))) - (f24-0 (* arg2 (-> arg0 y-ratio) (-> arg0 f))) - ) + (f24-0 (* arg2 (-> arg0 y-ratio) (-> arg0 f)))) (set-point (-> s5-0 hither-top-left) (- f30-0) f26-0 (-> arg0 d)) (set-point (-> s5-0 hither-top-right) f30-0 f26-0 (-> arg0 d)) (set-point (-> s5-0 hither-bottom-left) (- f30-0) (- f26-0) (-> arg0 d)) @@ -59,8 +50,7 @@ (set-point (-> s5-0 yon-top-left) (- f28-0) f24-0 (-> arg0 f)) (set-point (-> s5-0 yon-top-right) f28-0 f24-0 (-> arg0 f)) (set-point (-> s5-0 yon-bottom-left) (- f28-0) (- f24-0) (-> arg0 f)) - (set-point (-> s5-0 yon-bottom-right) f28-0 (- f24-0) (-> arg0 f)) - ) + (set-point (-> s5-0 yon-bottom-right) f28-0 (- f24-0) (-> arg0 f))) (vector-matrix*! (-> s5-0 hither-top-left) (-> s5-0 hither-top-left) (-> arg0 inv-camera-rot)) (vector-matrix*! (-> s5-0 hither-top-right) (-> s5-0 hither-top-right) (-> arg0 inv-camera-rot)) (vector-matrix*! (-> s5-0 hither-bottom-left) (-> s5-0 hither-bottom-left) (-> arg0 inv-camera-rot)) @@ -72,14 +62,11 @@ (let ((s2-0 (new-stack-vector0)) (s3-1 (new-stack-vector0)) (s1-0 (new-stack-vector0)) - (s0-0 (new-stack-vector0)) - ) + (s0-0 (new-stack-vector0))) (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) (set! sv-240 (new 'stack-no-clear 'vector)) (set! (-> sv-240 quad) (the-as uint128 0)) - (let ((v1-5 (-> arg0 inv-camera-rot vector 3 quad))) - (set! (-> sv-240 quad) v1-5) - ) + (let ((v1-5 (-> arg0 inv-camera-rot vector 3 quad))) (set! (-> sv-240 quad) v1-5)) (vector-! s2-0 (-> s5-0 yon-top-left) sv-240) (vector-! s3-1 (-> s5-0 yon-top-right) sv-240) (vector-! s1-0 (-> s5-0 yon-bottom-left) sv-240) @@ -88,15 +75,9 @@ (plane-from-points arg1 s0-0 s3-1 sv-240 1) (plane-from-points arg1 s3-1 s2-0 sv-240 2) (let ((t9-20 plane-from-points) - (t0-3 3) - ) - (t9-20 arg1 s1-0 s0-0 sv-240 t0-3) - ) - ) - ) - ) - (none) - ) + (t0-3 3)) + (t9-20 arg1 s1-0 s0-0 sv-240 t0-3))))) + (none)) ;; if we should still attempt vis updates when outside of the bsp's boxes. (define *update-leaf-when-outside-bsp* #t) @@ -112,29 +93,17 @@ (dotimes (s5-0 (-> *level* length)) (let ((v1-4 (-> *level* level s5-0))) (when (= (-> v1-4 status) 'active) - (if (and (nonzero? (-> v1-4 bsp nodes)) - (or *update-leaf-when-outside-bsp* (-> v1-4 inside-boxes?)) - ) - ;; will store in the bsp's current-leaf-idx. - (bsp-camera-asm (-> v1-4 bsp) (-> arg0 trans)) - ) - ) - ) - ) - + (if (and (nonzero? (-> v1-4 bsp nodes)) (or *update-leaf-when-outside-bsp* (-> v1-4 inside-boxes?))) + ;; will store in the bsp's current-leaf-idx. + (bsp-camera-asm (-> v1-4 bsp) (-> arg0 trans)))))) ;; do vis updates. (dotimes (gp-1 (-> *level* length)) (let ((s5-1 (-> *level* level gp-1))) (when (= (-> s5-1 status) 'active) (let ((a2-0 (/ (+ (-> s5-1 bsp visible-list-length) 15) 16))) - ;; start by setting all-visible to something truthy (either original, or #t) ;; below, we'll try to figure out a way to get vis data and set this back to #f. - (set! (-> s5-1 all-visible?) (if (-> s5-1 all-visible?) - (-> s5-1 all-visible?) - #t - ) - ) + (set! (-> s5-1 all-visible?) (if (-> s5-1 all-visible?) (-> s5-1 all-visible?) #t)) (cond ((or (not (-> s5-1 force-all-visible?)) (-> s5-1 inside-boxes?)) ;; we are inside the level's bsp, we should attempt vis stuff. @@ -142,101 +111,57 @@ ((or *artist-all-visible* (zero? (-> s5-1 bsp nodes))) ;; we have no bsp, or manual override all visible. Copy the all vis list ;; to our vis string. - (quad-copy! (-> s5-1 vis-bits) (-> s5-1 bsp all-visible-list) a2-0) - ) + (quad-copy! (-> s5-1 vis-bits) (-> s5-1 bsp all-visible-list) a2-0)) ((begin ;; our vis info (set! s4-0 (-> s5-1 vis-info (-> s5-1 vis-self-index))) ;; adj vis info (idx will be 7 if there's no adj right now, and will give us #f) (set! s3-0 (-> s5-1 vis-info (-> s5-1 vis-adj-index))) - (let ((v1-32 #f)) ;; should use self vis (set! a0-16 #f) ;; should use adj vis - ;; see if we want self vis (when s4-0 (set! v1-32 (nonzero? (logand (shl #x8000 16) (-> s4-0 flags)))) - ;; not sure when this would happen, but make sure that our leaf ;; index is in bounds (maybe if you use the wrong version of levels) - (if (< (-> s4-0 length) (-> s4-0 from-bsp current-leaf-idx)) - (set! v1-32 #f) - ) - ) - + (if (< (-> s4-0 length) (-> s4-0 from-bsp current-leaf-idx)) (set! v1-32 #f))) ;; see if we want adj vis. (when s3-0 (set! a0-16 (nonzero? (logand (shl #x8000 16) (-> s3-0 flags)))) - (if (< (-> s3-0 length) (-> s3-0 from-bsp current-leaf-idx)) - (set! a0-16 #f) - ) - ) + (if (< (-> s3-0 length) (-> s3-0 from-bsp current-leaf-idx)) (set! a0-16 #f))) v1-32 ;; this is the cond condition, and is if we want the self vis. - ) - ) + )) ;; want self. clear all visible if we aren't loading. - (if (!= (-> s5-1 all-visible?) 'loading) - (set! (-> s5-1 all-visible?) #f) - ) + (if (!= (-> s5-1 all-visible?) 'loading) (set! (-> s5-1 all-visible?) #f)) (when (update-vis! s5-1 s4-0 (-> s4-0 ramdisk) (-> s4-0 string-block)) ;; success! Remove all other vis strings. ;; if update vis failed (due to still loading, etc), keep previous. (countdown (v1-40 8) (let ((a0-22 (-> s5-1 vis-info v1-40))) (when a0-22 - (if (!= a0-22 s4-0) - (set! (-> a0-22 current-vis-string) (the-as uint -1)) - ) - ) - ) - ) + (if (!= a0-22 s4-0) (set! (-> a0-22 current-vis-string) (the-as uint -1)))))) ;; successful vis update, remove all-visible. - (set! (-> s5-1 all-visible?) #f) - ) - ) + (set! (-> s5-1 all-visible?) #f))) ;; same case as above, but if we want to use the other vis. (a0-16 - (if (!= (-> s5-1 all-visible?) 'loading) - (set! (-> s5-1 all-visible?) #f) - ) - (when - (update-vis! s5-1 s3-0 (-> s3-0 ramdisk) (-> s3-0 string-block)) - (countdown (v1-50 8) - (let ((a0-27 (-> s5-1 vis-info v1-50))) - (when a0-27 - (if (!= a0-27 s3-0) - (set! (-> a0-27 current-vis-string) (the-as uint -1)) - ) - ) - ) - ) - (set! (-> s5-1 all-visible?) #f) - ) - ) + (if (!= (-> s5-1 all-visible?) 'loading) (set! (-> s5-1 all-visible?) #f)) + (when (update-vis! s5-1 s3-0 (-> s3-0 ramdisk) (-> s3-0 string-block)) + (countdown (v1-50 8) + (let ((a0-27 (-> s5-1 vis-info v1-50))) + (when a0-27 + (if (!= a0-27 s3-0) (set! (-> a0-27 current-vis-string) (the-as uint -1)))))) + (set! (-> s5-1 all-visible?) #f))) ((and (= (-> s5-1 all-visible?) 'loading) (-> *level* play?)) ;; if we're in between vis, then leave the old string. ) (else - ;; couldn't find any vis, just make everything visible - (quad-copy! (-> s5-1 vis-bits) (-> s5-1 bsp all-visible-list) a2-0) - ) - ) - ) + ;; couldn't find any vis, just make everything visible + (quad-copy! (-> s5-1 vis-bits) (-> s5-1 bsp all-visible-list) a2-0)))) (else - ;; outside boxes, and force all visible is set. - (quad-copy! (-> s5-1 vis-bits) (-> s5-1 bsp all-visible-list) a2-0) - ) - ) - ) - (if (and *stats-bsp* (= *master-mode* 'game)) - (format *stdcon* "~0kleaf-index = ~d~%" (-> s5-1 bsp current-leaf-idx)) - ) - ) - ) - ) - #f - ) - ) + ;; outside boxes, and force all visible is set. + (quad-copy! (-> s5-1 vis-bits) (-> s5-1 bsp all-visible-list) a2-0)))) + (if (and *stats-bsp* (= *master-mode* 'game)) (format *stdcon* "~0kleaf-index = ~d~%" (-> s5-1 bsp current-leaf-idx)))))) + #f)) (define *save-camera-inv-rot* (new 'global 'matrix)) @@ -244,48 +169,27 @@ (defun move-camera-from-pad ((arg0 math-camera)) (let ((v1-0 *external-cam-mode*) - (s5-0 0) - ) + (s5-0 0)) (cond - ((= v1-0 'locked) - (set! v1-0 #f) - ) - ((= v1-0 'pad-1) - (set! s5-0 1) - ) - ((not *camera-combiner*) - (set! v1-0 'pad-0) - ) - ) + ((= v1-0 'locked) (set! v1-0 #f)) + ((= v1-0 'pad-1) (set! s5-0 1)) + ((not *camera-combiner*) (set! v1-0 'pad-0))) (when v1-0 - (let ((s4-1 - (vector-negate-in-place! (vector-normalize-copy! (new-stack-vector0) (-> *standard-dynamics* gravity) 1.0)) - ) - ) - (if (= (vector-length s4-1) 0.0) - (set! (-> s4-1 y) -1.0) - ) - (if (logtest? *external-cam-options* (external-cam-option allow-z)) - (set! s4-1 (the-as vector #f)) - ) - (cam-free-floating-move *save-camera-inv-rot* (-> arg0 trans) s4-1 s5-0) - ) - ) - ) + (let ((s4-1 (vector-negate-in-place! (vector-normalize-copy! (new-stack-vector0) (-> *standard-dynamics* gravity) 1.0)))) + (if (= (vector-length s4-1) 0.0) (set! (-> s4-1 y) -1.0)) + (if (logtest? *external-cam-options* (external-cam-option allow-z)) (set! s4-1 (the-as vector #f))) + (cam-free-floating-move *save-camera-inv-rot* (-> arg0 trans) s4-1 s5-0)))) (let* ((a2-2 (-> *math-camera* inv-camera-rot)) (a3-1 *save-camera-inv-rot*) (v1-11 (-> a3-1 vector 0 quad)) (a0-14 (-> a3-1 vector 1 quad)) (a1-2 (-> a3-1 vector 2 quad)) - (a3-2 (-> a3-1 vector 3 quad)) - ) + (a3-2 (-> a3-1 vector 3 quad))) (set! (-> a2-2 vector 0 quad) v1-11) (set! (-> a2-2 vector 1 quad) a0-14) (set! (-> a2-2 vector 2 quad) a1-2) - (set! (-> a2-2 vector 3 quad) a3-2) - ) - arg0 - ) + (set! (-> a2-2 vector 3 quad) a3-2)) + arg0) ;; og:preserve-this PAL patch here (moved from cam-debug) (defun external-cam-reset! () @@ -297,18 +201,14 @@ (a0-2 (-> a3-0 vector 0 quad)) (a1-0 (-> a3-0 vector 1 quad)) (a2-0 (-> a3-0 vector 2 quad)) - (a3-1 (-> a3-0 vector 3 quad)) - ) + (a3-1 (-> a3-0 vector 3 quad))) (set! (-> v1-6 vector 0 quad) a0-2) (set! (-> v1-6 vector 1 quad) a1-0) (set! (-> v1-6 vector 2 quad) a2-0) - (set! (-> v1-6 vector 3 quad) a3-1) - ) - (set! (-> *math-camera* trans quad) (-> *camera-combiner* trans quad)) - ) + (set! (-> v1-6 vector 3 quad) a3-1)) + (set! (-> *math-camera* trans quad) (-> *camera-combiner* trans quad))) 0 - (none) - ) + (none)) (define *start-timer* (the-as int #f)) @@ -319,87 +219,51 @@ (defun update-camera () (when *start-timer* (when (= *timer-value* 180) - (format - #t - "Player pos = ~F ~F ~F~%" - (-> *target* control trans x) - (-> *target* control trans y) - (-> *target* control trans z) - ) - (set! (-> *start-pos* quad) (-> *target* control trans quad)) - ) + (format #t + "Player pos = ~F ~F ~F~%" + (-> *target* control trans x) + (-> *target* control trans y) + (-> *target* control trans z)) + (set! (-> *start-pos* quad) (-> *target* control trans quad))) (when (= *timer-value* 480) - (format - #t - "Player pos = ~F ~F ~F~%" - (-> *target* control trans x) - (-> *target* control trans y) - (-> *target* control trans z) - ) - (format - #t - "Dist = ~F~%" - (* 0.00024414062 (vector-vector-xz-distance (-> *target* control trans) *start-pos*)) - ) - (set! *start-timer* (the-as int #f)) - ) - (if (< 179 *timer-value*) - (format *stdcon* "~%~%Time = ~D~%" *timer-value*) - ) - (set! *timer-value* (+ *timer-value* 1)) - ) + (format #t + "Player pos = ~F ~F ~F~%" + (-> *target* control trans x) + (-> *target* control trans y) + (-> *target* control trans z)) + (format #t "Dist = ~F~%" (* 0.00024414062 (vector-vector-xz-distance (-> *target* control trans) *start-pos*))) + (set! *start-timer* (the-as int #f))) + (if (< 179 *timer-value*) (format *stdcon* "~%~%Time = ~D~%" *timer-value*)) + (set! *timer-value* (+ *timer-value* 1))) (when (not *start-timer*) (set! *timer-value* 0) - 0 - ) + 0) (dotimes (gp-1 2) (let ((s5-1 (-> *level* level gp-1))) (when (!= (-> s5-1 status) 'inactive) (let ((a0-14 (new-stack-vector0))) (vector-! a0-14 (the-as vector (-> s5-1 info bsphere)) (-> *math-camera* trans)) - (set! (-> s5-1 level-distance) (fmax 0.0 (- (vector-length a0-14) (-> s5-1 info bsphere w)))) - ) + (set! (-> s5-1 level-distance) (fmax 0.0 (- (vector-length a0-14) (-> s5-1 info bsphere w))))) (when *display-level-spheres* - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> s5-1 info bsphere) - (-> s5-1 info bsphere w) - (new 'static 'rgba :r #xff :a #x80) - ) - (format - *stdcon* - "~f ~f ~f ~f~%" - (* 0.00024414062 (-> s5-1 info bsphere x)) - (* 0.00024414062 (-> s5-1 info bsphere y)) - (* 0.00024414062 (-> s5-1 info bsphere z)) - (* 0.00024414062 (-> s5-1 info bsphere w)) - ) - ) - ) - ) - ) - (update-math-camera - *math-camera* - (-> *setting-control* current video-mode) - (-> *setting-control* current aspect-ratio) - ) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (-> s5-1 info bsphere) + (-> s5-1 info bsphere w) + (new 'static 'rgba :r #xff :a #x80)) + (format *stdcon* + "~f ~f ~f ~f~%" + (* 0.00024414062 (-> s5-1 info bsphere x)) + (* 0.00024414062 (-> s5-1 info bsphere y)) + (* 0.00024414062 (-> s5-1 info bsphere z)) + (* 0.00024414062 (-> s5-1 info bsphere w))))))) + (update-math-camera *math-camera* (-> *setting-control* current video-mode) (-> *setting-control* current aspect-ratio)) (update! *camera-smush-control*) (cond - ((or (= *master-mode* 'pause) (= *master-mode* 'progress) *progress-process*) - ) - ((>= *camera-look-through-other* 2) - (set! *camera-look-through-other* 1) - ) - ((and (= *camera-look-through-other* 1) (!= *master-mode* 'menu)) - (set! *camera-look-through-other* 0) - 0 - ) - ) + ((or (= *master-mode* 'pause) (= *master-mode* 'progress) *progress-process*)) + ((>= *camera-look-through-other* 2) (set! *camera-look-through-other* 1)) + ((and (= *camera-look-through-other* 1) (!= *master-mode* 'menu)) (set! *camera-look-through-other* 0) 0)) (cond - (*external-cam-mode* - (move-camera-from-pad *math-camera*) - ) + (*external-cam-mode* (move-camera-from-pad *math-camera*)) ((nonzero? *camera-look-through-other*) (set! (-> *math-camera* fov) (-> *camera-other-fov* data)) (set! (-> *math-camera* trans quad) (-> *camera-other-trans* quad)) @@ -409,26 +273,21 @@ (v1-86 (-> a3-4 vector 0 quad)) (a0-29 (-> a3-4 vector 1 quad)) (a1-10 (-> a3-4 vector 2 quad)) - (a3-5 (-> a3-4 vector 3 quad)) - ) + (a3-5 (-> a3-4 vector 3 quad))) (set! (-> a2-9 vector 0 quad) v1-86) (set! (-> a2-9 vector 1 quad) a0-29) (set! (-> a2-9 vector 2 quad) a1-10) - (set! (-> a2-9 vector 3 quad) a3-5) - ) + (set! (-> a2-9 vector 3 quad) a3-5)) (let* ((a2-10 *save-camera-inv-rot*) (a3-6 *camera-other-matrix*) (v1-87 (-> a3-6 vector 0 quad)) (a0-30 (-> a3-6 vector 1 quad)) (a1-11 (-> a3-6 vector 2 quad)) - (a3-7 (-> a3-6 vector 3 quad)) - ) + (a3-7 (-> a3-6 vector 3 quad))) (set! (-> a2-10 vector 0 quad) v1-87) (set! (-> a2-10 vector 1 quad) a0-30) (set! (-> a2-10 vector 2 quad) a1-11) - (set! (-> a2-10 vector 3 quad) a3-7) - ) - ) + (set! (-> a2-10 vector 3 quad) a3-7))) ((and *camera-combiner* (not *external-cam-mode*)) (set! (-> *math-camera* fov) (-> *camera-combiner* fov)) (set! (-> *math-camera* trans quad) (-> *camera-combiner* trans quad)) @@ -438,151 +297,104 @@ (a0-36 (-> a3-8 vector 0 quad)) (a1-12 (-> a3-8 vector 1 quad)) (a2-11 (-> a3-8 vector 2 quad)) - (a3-9 (-> a3-8 vector 3 quad)) - ) + (a3-9 (-> a3-8 vector 3 quad))) (set! (-> v1-100 vector 0 quad) a0-36) (set! (-> v1-100 vector 1 quad) a1-12) (set! (-> v1-100 vector 2 quad) a2-11) - (set! (-> v1-100 vector 3 quad) a3-9) - ) + (set! (-> v1-100 vector 3 quad) a3-9)) (let* ((v1-101 *save-camera-inv-rot*) (a3-10 (-> *camera-combiner* inv-camera-rot)) (a0-38 (-> a3-10 vector 0 quad)) (a1-13 (-> a3-10 vector 1 quad)) (a2-12 (-> a3-10 vector 2 quad)) - (a3-11 (-> a3-10 vector 3 quad)) - ) + (a3-11 (-> a3-10 vector 3 quad))) (set! (-> v1-101 vector 0 quad) a0-38) (set! (-> v1-101 vector 1 quad) a1-13) (set! (-> v1-101 vector 2 quad) a2-12) - (set! (-> v1-101 vector 3 quad) a3-11) - ) - ) - (else - (move-camera-from-pad *math-camera*) - ) - ) + (set! (-> v1-101 vector 3 quad) a3-11))) + (else (move-camera-from-pad *math-camera*))) (matrix-transpose! (-> *math-camera* camera-rot) (-> *math-camera* inv-camera-rot)) (cond - (*camera-no-mip-correction* - (set! (-> *math-camera* fov-correction-factor) 1.0) - ) + (*camera-no-mip-correction* (set! (-> *math-camera* fov-correction-factor) 1.0)) (else - (let ((f0-28 (fmin 11650.845 (-> *math-camera* fov)))) - (set! (-> *math-camera* fov-correction-factor) (* 0.00008583069 f0-28)) - ) - ) - ) + (let ((f0-28 (fmin 11650.845 (-> *math-camera* fov)))) + (set! (-> *math-camera* fov-correction-factor) (* 0.00008583069 f0-28))))) (if (< 0.0 (-> *math-camera* smooth-t)) - (set! (-> *math-camera* smooth-t) (- (-> *math-camera* smooth-t) (-> *math-camera* smooth-step))) - ) + (set! (-> *math-camera* smooth-t) (- (-> *math-camera* smooth-t) (-> *math-camera* smooth-step)))) (cond ((< 0.0 (-> *math-camera* smooth-t)) (let ((gp-2 (new-stack-quaternion0))) (matrix->quaternion gp-2 (-> *math-camera* inv-camera-rot)) (quaternion-slerp! gp-2 gp-2 (-> *math-camera* inv-camera-rot-smooth-from) (-> *math-camera* smooth-t)) - (quaternion->matrix (-> *math-camera* inv-camera-rot-smooth) gp-2) - ) - ) + (quaternion->matrix (-> *math-camera* inv-camera-rot-smooth) gp-2))) (else - (let* ((v1-124 (-> *math-camera* inv-camera-rot-smooth)) - (a3-13 (-> *math-camera* inv-camera-rot)) - (a0-45 (-> a3-13 vector 0 quad)) - (a1-18 (-> a3-13 vector 1 quad)) - (a2-14 (-> a3-13 vector 2 quad)) - (a3-14 (-> a3-13 vector 3 quad)) - ) - (set! (-> v1-124 vector 0 quad) a0-45) - (set! (-> v1-124 vector 1 quad) a1-18) - (set! (-> v1-124 vector 2 quad) a2-14) - (set! (-> v1-124 vector 3 quad) a3-14) - ) - ) - ) + (let* ((v1-124 (-> *math-camera* inv-camera-rot-smooth)) + (a3-13 (-> *math-camera* inv-camera-rot)) + (a0-45 (-> a3-13 vector 0 quad)) + (a1-18 (-> a3-13 vector 1 quad)) + (a2-14 (-> a3-13 vector 2 quad)) + (a3-14 (-> a3-13 vector 3 quad))) + (set! (-> v1-124 vector 0 quad) a0-45) + (set! (-> v1-124 vector 1 quad) a1-18) + (set! (-> v1-124 vector 2 quad) a2-14) + (set! (-> v1-124 vector 3 quad) a3-14)))) (if (and (!= *master-mode* 'menu) *display-camera-info*) - (format - *stdcon* - "cam pos ~M ~M ~M~%" - (-> *math-camera* trans x) - (-> *math-camera* trans y) - (-> *math-camera* trans z) - ) - ) + (format *stdcon* "cam pos ~M ~M ~M~%" (-> *math-camera* trans x) (-> *math-camera* trans y) (-> *math-camera* trans z))) (when (zero? (-> *math-camera* reset)) (let* ((v1-136 (-> *math-camera* prev-camera-temp)) (a3-16 (-> *math-camera* camera-temp)) (a0-50 (-> a3-16 vector 0 quad)) (a1-20 (-> a3-16 vector 1 quad)) (a2-16 (-> a3-16 vector 2 quad)) - (a3-17 (-> a3-16 vector 3 quad)) - ) + (a3-17 (-> a3-16 vector 3 quad))) (set! (-> v1-136 vector 0 quad) a0-50) (set! (-> v1-136 vector 1 quad) a1-20) (set! (-> v1-136 vector 2 quad) a2-16) - (set! (-> v1-136 vector 3 quad) a3-17) - ) - ) + (set! (-> v1-136 vector 3 quad) a3-17))) (let ((gp-3 (-> *math-camera* camera-temp)) (s4-1 (-> *math-camera* camera-rot)) (s5-2 (-> *math-camera* inv-camera-rot)) - (s3-0 (-> *math-camera* trans)) - ) + (s3-0 (-> *math-camera* trans))) (let ((s2-0 (new-stack-vector0))) (set! (-> s2-0 x) (- (-> s3-0 x))) (set! (-> s2-0 y) (- (-> s3-0 y))) (set! (-> s2-0 z) (- (-> s3-0 z))) (set! (-> s2-0 w) 1.0) (vector-matrix*! s2-0 s2-0 s4-1) - (set! (-> s4-1 vector 3 quad) (-> s2-0 quad)) - ) + (set! (-> s4-1 vector 3 quad) (-> s2-0 quad))) (matrix*! gp-3 s4-1 (-> *math-camera* perspective)) - (set! (-> s5-2 vector 3 quad) (-> s3-0 quad)) - ) + (set! (-> s5-2 vector 3 quad) (-> s3-0 quad))) (when (nonzero? (-> *math-camera* reset)) (let* ((v1-148 (-> *math-camera* prev-camera-temp)) (a3-18 (-> *math-camera* camera-temp)) (a0-54 (-> a3-18 vector 0 quad)) (a1-23 (-> a3-18 vector 1 quad)) (a2-19 (-> a3-18 vector 2 quad)) - (a3-19 (-> a3-18 vector 3 quad)) - ) + (a3-19 (-> a3-18 vector 3 quad))) (set! (-> v1-148 vector 0 quad) a0-54) (set! (-> v1-148 vector 1 quad) a1-23) (set! (-> v1-148 vector 2 quad) a2-19) - (set! (-> v1-148 vector 3 quad) a3-19) - ) + (set! (-> v1-148 vector 3 quad) a3-19)) (set! (-> *math-camera* reset) 0) - 0 - ) + 0) (let ((f0-45 (-> *math-camera* fog-min)) - (f1-10 (-> *math-camera* fog-max)) - ) + (f1-10 (-> *math-camera* fog-max))) (let ((f2-0 (-> *math-camera* d))) (set! (-> *instance-tie-work* hmge-d x) f0-45) (set! (-> *instance-tie-work* hmge-d y) f1-10) (set! (-> *instance-tie-work* hmge-d z) (* 32.0 f2-0)) (set! (-> *instance-tie-work* hmge-d w) (* f2-0 (-> *math-camera* hmge-scale w))) - (let ((v1-160 (-> *math-camera* hvdf-off quad))) - (set! (-> *instance-tie-work* hvdf-offset quad) v1-160) - ) + (let ((v1-160 (-> *math-camera* hvdf-off quad))) (set! (-> *instance-tie-work* hvdf-offset quad) v1-160)) (set! (-> *instance-shrub-work* hmge-d x) f0-45) (set! (-> *instance-shrub-work* hmge-d y) f1-10) (set! (-> *instance-shrub-work* hmge-d z) (* 3.0 f2-0)) (set! (-> *instance-shrub-work* hmge-d w) (* f2-0 (-> *math-camera* hmge-scale w))) - (set! (-> *instance-shrub-work* billboard-const x) - (/ (-> *math-camera* x-pix) (* f2-0 (-> *math-camera* x-ratio))) - ) - (set! (-> *instance-shrub-work* billboard-const y) - (/ (-> *math-camera* y-pix) (* f2-0 (-> *math-camera* y-ratio))) - ) - ) + (set! (-> *instance-shrub-work* billboard-const x) (/ (-> *math-camera* x-pix) (* f2-0 (-> *math-camera* x-ratio)))) + (set! (-> *instance-shrub-work* billboard-const y) (/ (-> *math-camera* y-pix) (* f2-0 (-> *math-camera* y-ratio))))) (set! (-> *instance-shrub-work* billboard-const z) f0-45) - (set! (-> *instance-shrub-work* billboard-const w) f1-10) - ) + (set! (-> *instance-shrub-work* billboard-const w) f1-10)) (set! (-> *instance-shrub-work* constants w) (the-as float (-> *math-camera* vis-gifs 0 fog0))) - (let ((a0-56 (-> *math-camera* hvdf-off quad))) - (set! (-> *instance-shrub-work* hvdf-offset quad) a0-56) - ) + (let ((a0-56 (-> *math-camera* hvdf-off quad))) (set! (-> *instance-shrub-work* hvdf-offset quad) a0-56)) (update-view-planes *math-camera* (-> *math-camera* plane) 1.0) (update-view-planes *math-camera* (-> *math-camera* guard-plane) 4.0) (set! (-> *instance-shrub-work* guard-plane 0 quad) (-> *math-camera* guard-plane 0 quad)) @@ -594,12 +406,5 @@ (set! (-> *instance-tie-work* guard-plane 2 quad) (-> *math-camera* guard-plane 2 quad)) (set! (-> *instance-tie-work* guard-plane 3 quad) (-> *math-camera* guard-plane 3 quad)) (update-visible *math-camera*) - (if (not (paused?)) - (update-wind *wind-work* *wind-scales*) - ) - #f - ) - - - - + (if (not (paused?)) (update-wind *wind-work* *wind-scales*)) + #f) diff --git a/goal_src/jak1/engine/camera/camera-h.gc b/goal_src/jak1/engine/camera/camera-h.gc index eca37c4723..e3833f800b 100644 --- a/goal_src/jak1/engine/camera/camera-h.gc +++ b/goal_src/jak1/engine/camera/camera-h.gc @@ -1,33 +1,38 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/gfx/hw/display-h.gc") -;; name: camera-h.gc -;; name in dgo: camera-h -;; dgos: GAME, ENGINE - ;; TODO - for cam-layout (define-extern v-slrp2! (function vector vector vector float vector float vector)) + (define-extern v-slrp3! (function vector vector vector vector float vector)) + (declare-type camera-slave process) + (declare-type camera-master process) + (declare-type tracking-point structure) + (declare-type cam-rotation-tracker structure) + (declare-type camera-combiner process) + ;; TODO - for cam-master ;; TODO - for camera (define-extern camera-line-rel-len (function vector vector float vector4w none)) + (define-extern cam-calc-follow! (function cam-rotation-tracker vector symbol vector)) + (define-extern slave-set-rotation! (function cam-rotation-tracker vector float float symbol none)) + ;; TODO - for cam-combiner (define-extern paused? (function symbol)) + ;; TODO - for cam-start (define-extern cam-master-init (function none :behavior camera-master)) - (defenum cam-slave-options :bitfield #t (BUTT_CAM) @@ -47,135 +52,111 @@ (BIKE_MODE) (NO_ROTATE) (STICKY_ANGLE) - (AIR_EXIT) - ) + (AIR_EXIT)) (defenum cam-index-options :type uint32 :bitfield #t (RADIAL) - (SPHERICAL) - ) + (SPHERICAL)) (defenum slave-los-state :type uint32 (none 0) (cw 1) (ccw 2) - (between 3) - ) + (between 3)) ;; DECOMP BEGINS (deftype camera-bank (basic) - ((collide-move-rad float) - (joypad uint32) - (min-detectable-velocity float) - (attack-timeout time-frame) - (default-string-max-y meters) - (default-string-min-y meters) - (default-string-max-z meters) - (default-string-min-z meters) - (default-string-push-z meters) - (default-tilt-adjust degrees) - ) - ) - - -(define *CAMERA-bank* (new 'static 'camera-bank - :collide-move-rad 1638.4 - :min-detectable-velocity 40.96 - :attack-timeout (seconds 0.25) - :default-string-max-y (meters 3) - :default-string-min-y (meters 1) - :default-string-max-z (meters 12.5) - :default-string-min-z (meters 5) - :default-string-push-z (meters 10) - :default-tilt-adjust (degrees -6.5000005) - ) - ) + ((collide-move-rad float) + (joypad uint32) + (min-detectable-velocity float) + (attack-timeout time-frame) + (default-string-max-y meters) + (default-string-min-y meters) + (default-string-max-z meters) + (default-string-min-z meters) + (default-string-push-z meters) + (default-tilt-adjust degrees))) + +(define *CAMERA-bank* + (new 'static + 'camera-bank + :collide-move-rad 1638.4 + :min-detectable-velocity 40.96 + :attack-timeout (seconds 0.25) + :default-string-max-y (meters 3) + :default-string-min-y (meters 1) + :default-string-max-z (meters 12.5) + :default-string-min-z (meters 5) + :default-string-push-z (meters 10) + :default-tilt-adjust (degrees -6.5000005))) (deftype cam-index (structure) - ((flags cam-index-options) - (vec vector 2 :inline :offset 16) - ) + ((flags cam-index-options) + (vec vector 2 :inline :offset 16)) (:methods - (cam-index-method-9 (_type_ symbol entity vector curve) symbol) - (cam-index-method-10 (_type_ vector) float) - ) - ) - + (cam-index-method-9 (_type_ symbol entity vector curve) symbol) + (cam-index-method-10 (_type_ vector) float))) (deftype tracking-point (structure) - ((position vector :inline) - (direction vector :inline) - (tp-length float) - (next int32) - (incarnation int32) - ) - ) - + ((position vector :inline) + (direction vector :inline) + (tp-length float) + (next int32) + (incarnation int32))) (deftype tracking-spline-sampler (structure) - ((cur-pt int32) - (partial-pt float) - ) - ) - + ((cur-pt int32) + (partial-pt float))) (deftype tracking-spline (structure) - ((point tracking-point 32 :inline) - (summed-len float) - (free-point int32) - (used-point int32) - (partial-point float) - (end-point int32) - (next-to-last-point int32) - (max-move float) - (sample-len float) - (used-count int32) - (old-position vector :inline) - (debug-old-position vector :inline) - (debug-out-position vector :inline) - (debug-last-point int32) - ) + ((point tracking-point 32 :inline) + (summed-len float) + (free-point int32) + (used-point int32) + (partial-point float) + (end-point int32) + (next-to-last-point int32) + (max-move float) + (sample-len float) + (used-count int32) + (old-position vector :inline) + (debug-old-position vector :inline) + (debug-out-position vector :inline) + (debug-last-point int32)) (:methods - (tracking-spline-method-9 (_type_) none) - (tracking-spline-method-10 (_type_ vector) none) - (print-nth-point (_type_ int) none) - (tracking-spline-method-12 (_type_) none) - (tracking-spline-method-13 (_type_ int) none) - (tracking-spline-method-14 (_type_ tracking-spline-sampler) none) - (tracking-spline-method-15 (_type_) none) - (tracking-spline-method-16 (_type_ float) none) - (tracking-spline-method-17 (_type_ vector float float symbol) int) - (tracking-spline-method-18 (_type_ float vector tracking-spline-sampler) vector) - (tracking-spline-method-19 (_type_ float vector tracking-spline-sampler) vector) - (tracking-spline-method-20 (_type_ vector int) none) - (tracking-spline-method-21 (_type_ vector float float) vector) - (tracking-spline-method-22 (_type_ float) none) - (tracking-spline-method-23 (_type_) none) - ) - ) - + (tracking-spline-method-9 (_type_) none) + (tracking-spline-method-10 (_type_ vector) none) + (print-nth-point (_type_ int) none) + (tracking-spline-method-12 (_type_) none) + (tracking-spline-method-13 (_type_ int) none) + (tracking-spline-method-14 (_type_ tracking-spline-sampler) none) + (tracking-spline-method-15 (_type_) none) + (tracking-spline-method-16 (_type_ float) none) + (tracking-spline-method-17 (_type_ vector float float symbol) int) + (tracking-spline-method-18 (_type_ float vector tracking-spline-sampler) vector) + (tracking-spline-method-19 (_type_ float vector tracking-spline-sampler) vector) + (tracking-spline-method-20 (_type_ vector int) none) + (tracking-spline-method-21 (_type_ vector float float) vector) + (tracking-spline-method-22 (_type_ float) none) + (tracking-spline-method-23 (_type_) none))) (deftype cam-float-seeker (structure) - ((target float) - (value float) - (vel float) - (accel float) - (max-vel float) - (max-partial float) - ) + ((target float) + (value float) + (vel float) + (accel float) + (max-vel float) + (max-partial float)) :pack-me (:methods - (init-cam-float-seeker (_type_ float float float float) none) - (copy-cam-float-seeker (_type_ _type_) none) - (update! (_type_ float) none) - (jump-to-target! (_type_ float) float) - ) - ) - + (init-cam-float-seeker (_type_ float float float float) none) + (copy-cam-float-seeker (_type_ _type_) none) + (update! (_type_ float) none) + (jump-to-target! (_type_ float) float))) (defmethod init-cam-float-seeker ((this cam-float-seeker) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) (set! (-> this target) arg0) @@ -185,8 +166,7 @@ (set! (-> this max-vel) arg2) (set! (-> this max-partial) arg3) 0 - (none) - ) + (none)) (defmethod copy-cam-float-seeker ((this cam-float-seeker) (arg0 cam-float-seeker)) (set! (-> this target) (-> arg0 target)) @@ -196,278 +176,226 @@ (set! (-> this max-vel) (-> arg0 max-vel)) (set! (-> this max-partial) (-> arg0 max-partial)) 0 - (none) - ) + (none)) (defmethod update! ((this cam-float-seeker) (offset float)) 0.0 0.0 (let* ((pos-error (- (+ (-> this target) offset) (-> this value))) - (partial-velocity-limit (* (-> this max-partial) (fabs pos-error))) - ) - (let ((daccel (* pos-error (* (-> this accel) (-> *display* time-adjust-ratio))))) - (+! (-> this vel) daccel) - ) + (partial-velocity-limit (* (-> this max-partial) (fabs pos-error)))) + (let ((daccel (* pos-error (* (-> this accel) (-> *display* time-adjust-ratio))))) (+! (-> this vel) daccel)) (let ((abs-vel (fabs (-> this vel))) - (abs-vel-limit (fmin partial-velocity-limit (-> this max-vel))) - ) - (if (< abs-vel-limit abs-vel) - (set! (-> this vel) (* (-> this vel) (/ abs-vel-limit abs-vel))) - ) - ) - ) - (let ((dpos (* (-> this vel) (-> *display* time-adjust-ratio)))) - (+! (-> this value) dpos) - ) + (abs-vel-limit (fmin partial-velocity-limit (-> this max-vel)))) + (if (< abs-vel-limit abs-vel) (set! (-> this vel) (* (-> this vel) (/ abs-vel-limit abs-vel)))))) + (let ((dpos (* (-> this vel) (-> *display* time-adjust-ratio)))) (+! (-> this value) dpos)) 0 - (none) - ) + (none)) (defmethod jump-to-target! ((this cam-float-seeker) (arg0 float)) (set! (-> this value) (+ (-> this target) arg0)) - (set! (-> this vel) 0.0) - ) + (set! (-> this vel) 0.0)) (deftype cam-vector-seeker (structure) - ((target vector :inline) - (value vector :inline) - (vel vector :inline) - (accel float) - (max-vel float) - (max-partial float) - ) + ((target vector :inline) + (value vector :inline) + (vel vector :inline) + (accel float) + (max-vel float) + (max-partial float)) (:methods - (init! (_type_ vector float float float) none) - (update! (_type_ vector) none) - ) - ) - + (init! (_type_ vector float float float) none) + (update! (_type_ vector) none))) (defmethod init! ((this cam-vector-seeker) (arg0 vector) (arg1 float) (arg2 float) (arg3 float)) (cond - (arg0 - (set! (-> this target quad) (-> arg0 quad)) - (set! (-> this value quad) (-> arg0 quad)) - ) - (else - (vector-reset! (-> this target)) - (vector-reset! (-> this value)) - ) - ) + (arg0 (set! (-> this target quad) (-> arg0 quad)) (set! (-> this value quad) (-> arg0 quad))) + (else (vector-reset! (-> this target)) (vector-reset! (-> this value)))) (vector-reset! (-> this vel)) (set! (-> this accel) arg1) (set! (-> this max-vel) arg2) (set! (-> this max-partial) arg3) 0 - (none) - ) + (none)) (defmethod update! ((this cam-vector-seeker) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) 0.0 (cond - (arg0 - (vector+! gp-0 (-> this target) arg0) - (vector-! gp-0 gp-0 (-> this value)) - ) - (else - (vector-! gp-0 (-> this target) (-> this value)) - ) - ) + (arg0 (vector+! gp-0 (-> this target) arg0) (vector-! gp-0 gp-0 (-> this value))) + (else (vector-! gp-0 (-> this target) (-> this value)))) (let ((f30-1 (* (-> this max-partial) (vector-length gp-0)))) (vector-float*! gp-0 gp-0 (* (-> this accel) (-> *display* time-adjust-ratio))) (vector+! (-> this vel) (-> this vel) gp-0) (let ((f0-4 (vector-length (-> this vel))) - (f1-2 (fmin f30-1 (-> this max-vel))) - ) - (if (< f1-2 f0-4) - (vector-float*! (-> this vel) (-> this vel) (/ f1-2 f0-4)) - ) - ) - ) + (f1-2 (fmin f30-1 (-> this max-vel)))) + (if (< f1-2 f0-4) (vector-float*! (-> this vel) (-> this vel) (/ f1-2 f0-4))))) (vector-float*! gp-0 (-> this vel) (-> *display* time-adjust-ratio)) - (vector+! (-> this value) (-> this value) gp-0) - ) + (vector+! (-> this value) (-> this value) gp-0)) 0 - (none) - ) + (none)) (deftype cam-rotation-tracker (structure) - ((inv-mat matrix :inline) - (no-follow basic) - (follow-pt vector :inline) - (follow-off vector :inline) - (follow-blend float) - (tilt-adjust cam-float-seeker :inline) - (use-point-of-interest basic) - (point-of-interest vector :inline) - (point-of-interest-blend cam-float-seeker :inline) - (underwater-blend cam-float-seeker :inline) - ) - ) - + ((inv-mat matrix :inline) + (no-follow basic) + (follow-pt vector :inline) + (follow-off vector :inline) + (follow-blend float) + (tilt-adjust cam-float-seeker :inline) + (use-point-of-interest basic) + (point-of-interest vector :inline) + (point-of-interest-blend cam-float-seeker :inline) + (underwater-blend cam-float-seeker :inline))) (deftype camera-combiner (process) - ((trans vector :inline) - (inv-camera-rot matrix :inline) - (fov float) - (interp-val float) - (interp-step float) - (dist-from-src float) - (dist-from-dest float) - (flip-control-axis vector :inline) - (velocity vector :inline) - (tracking-status uint64) - (tracking-options int32) - (tracking cam-rotation-tracker :inline) - ) + ((trans vector :inline) + (inv-camera-rot matrix :inline) + (fov float) + (interp-val float) + (interp-step float) + (dist-from-src float) + (dist-from-dest float) + (flip-control-axis vector :inline) + (velocity vector :inline) + (tracking-status uint64) + (tracking-options int32) + (tracking cam-rotation-tracker :inline)) (:states - cam-combiner-active - ) - ) - + cam-combiner-active)) (deftype camera-slave (process) - ((trans vector :inline) - (fov float) - (fov0 float) - (fov1 float) - (fov-index cam-index :inline) - (tracking cam-rotation-tracker :inline) - (view-off-param float) - (unknown-symbol symbol :offset 412) - (view-off vector :inline) - (min-z-override float) - (view-flat vector :inline) - (string-vel-dir uint32) - (string-trans vector :inline) - (position-spline tracking-spline :inline) - (pivot-pt vector :inline) - (pivot-rad float) - (circular-follow vector :inline) - (max-angle-offset float) - (max-angle-curr float) - (options uint32) - (cam-entity entity) - (velocity vector :inline) - (desired-pos vector :inline) - (time-dist-too-far uint32) - (los-state slave-los-state) - (good-point vector :inline) - (los-tgt-spline-pt int32) - (los-tgt-spline-pt-incarnation int32) - (los-last-pos vector :inline) - (intro-curve curve :inline) - (intro-offset vector :inline) - (intro-t float) - (intro-t-step float) - (outro-exit-value float) - (spline-exists basic) - (spline-curve curve :inline) - (spline-offset vector :inline) - (index cam-index :inline) - (saved-pt vector :inline) - (spline-tt float) - (spline-follow-dist float) - (change-event-from (pointer process-drawable)) - (enter-has-run symbol) - (blend-from-type uint64) - (blend-to-type uint64) - (have-phony-joystick basic) - (phony-joystick-x float) - (phony-joystick-y float) - (string-min-val vector :inline) - (string-max-val vector :inline) - (string-val-locked basic) - ) + ((trans vector :inline) + (fov float) + (fov0 float) + (fov1 float) + (fov-index cam-index :inline) + (tracking cam-rotation-tracker :inline) + (view-off-param float) + (unknown-symbol symbol :offset 412) + (view-off vector :inline) + (min-z-override float) + (view-flat vector :inline) + (string-vel-dir uint32) + (string-trans vector :inline) + (position-spline tracking-spline :inline) + (pivot-pt vector :inline) + (pivot-rad float) + (circular-follow vector :inline) + (max-angle-offset float) + (max-angle-curr float) + (options uint32) + (cam-entity entity) + (velocity vector :inline) + (desired-pos vector :inline) + (time-dist-too-far uint32) + (los-state slave-los-state) + (good-point vector :inline) + (los-tgt-spline-pt int32) + (los-tgt-spline-pt-incarnation int32) + (los-last-pos vector :inline) + (intro-curve curve :inline) + (intro-offset vector :inline) + (intro-t float) + (intro-t-step float) + (outro-exit-value float) + (spline-exists basic) + (spline-curve curve :inline) + (spline-offset vector :inline) + (index cam-index :inline) + (saved-pt vector :inline) + (spline-tt float) + (spline-follow-dist float) + (change-event-from (pointer process-drawable)) + (enter-has-run symbol) + (blend-from-type uint64) + (blend-to-type uint64) + (have-phony-joystick basic) + (phony-joystick-x float) + (phony-joystick-y float) + (string-min-val vector :inline) + (string-max-val vector :inline) + (string-val-locked basic)) (:states - *camera-base-mode* - cam-bike - cam-billy - cam-circular - cam-decel - cam-endlessfall - cam-eye - cam-fixed - cam-fixed-read-entity - cam-free-floating - cam-launcher-longfall - cam-launcher-shortfall - cam-lookat - cam-mistycannon - cam-orbit - cam-periscope - cam-point-watch - cam-pov - cam-pov-track - cam-pov180 - cam-robotboss - cam-spline - cam-standoff - cam-standoff-read-entity - cam-stick - cam-string - ) - ) - + *camera-base-mode* + cam-bike + cam-billy + cam-circular + cam-decel + cam-endlessfall + cam-eye + cam-fixed + cam-fixed-read-entity + cam-free-floating + cam-launcher-longfall + cam-launcher-shortfall + cam-lookat + cam-mistycannon + cam-orbit + cam-periscope + cam-point-watch + cam-pov + cam-pov-track + cam-pov180 + cam-robotboss + cam-spline + cam-standoff + cam-standoff-read-entity + cam-stick + cam-string)) (deftype camera-master (process) - ((master-options uint32) - (num-slaves int32) - (slave (pointer camera-slave) 2) - (slave-options uint32) - (view-off-param-save float) - (changer uint32) - (cam-entity entity) - (stringMinLength float) - (stringMaxLength float) - (stringMinHeight float) - (stringMaxHeight float) - (string-min cam-vector-seeker :inline) - (string-max cam-vector-seeker :inline) - (string-push-z float) - (stringCliffHeight float) - (no-intro uint32) - (force-blend uint32) - (force-blend-time uint32) - (local-down vector :inline) - (drawable-target handle) - (which-bone int32) - (pov-handle handle) - (pov-bone int32) - (being-attacked symbol) - (attack-start time-frame) - (on-ground symbol) - (under-water int32) - (on-pole symbol) - (tgt-rot-mat matrix :inline) - (tgt-face-mat matrix :inline) - (tpos-old vector :inline) - (tpos-curr vector :inline) - (target-height float) - (tpos-old-adj vector :inline) - (tpos-curr-adj vector :inline) - (tpos-tgt vector :inline) - (upspeed float) - (pitch-off vector :inline) - (foot-offset float) - (head-offset float) - (target-spline tracking-spline :inline) - (ease-from vector :inline) - (ease-t float) - (ease-step float) - (ease-to vector :inline) - (outro-curve curve :inline) - (outro-t float) - (outro-t-step float) - (outro-exit-value float) - (water-drip-time time-frame) - (water-drip sparticle-launch-control) - (water-drip-mult float) - (water-drip-speed float) - ) + ((master-options uint32) + (num-slaves int32) + (slave (pointer camera-slave) 2) + (slave-options uint32) + (view-off-param-save float) + (changer uint32) + (cam-entity entity) + (stringMinLength float) + (stringMaxLength float) + (stringMinHeight float) + (stringMaxHeight float) + (string-min cam-vector-seeker :inline) + (string-max cam-vector-seeker :inline) + (string-push-z float) + (stringCliffHeight float) + (no-intro uint32) + (force-blend uint32) + (force-blend-time uint32) + (local-down vector :inline) + (drawable-target handle) + (which-bone int32) + (pov-handle handle) + (pov-bone int32) + (being-attacked symbol) + (attack-start time-frame) + (on-ground symbol) + (under-water int32) + (on-pole symbol) + (tgt-rot-mat matrix :inline) + (tgt-face-mat matrix :inline) + (tpos-old vector :inline) + (tpos-curr vector :inline) + (target-height float) + (tpos-old-adj vector :inline) + (tpos-curr-adj vector :inline) + (tpos-tgt vector :inline) + (upspeed float) + (pitch-off vector :inline) + (foot-offset float) + (head-offset float) + (target-spline tracking-spline :inline) + (ease-from vector :inline) + (ease-t float) + (ease-step float) + (ease-to vector :inline) + (outro-curve curve :inline) + (outro-t float) + (outro-t-step float) + (outro-exit-value float) + (water-drip-time time-frame) + (water-drip sparticle-launch-control) + (water-drip-mult float) + (water-drip-speed float)) (:states - cam-master-active - list-keeper-active - ) - ) + cam-master-active + list-keeper-active)) diff --git a/goal_src/jak1/engine/camera/camera.gc b/goal_src/jak1/engine/camera/camera.gc index b77ac65803..3938d23547 100644 --- a/goal_src/jak1/engine/camera/camera.gc +++ b/goal_src/jak1/engine/camera/camera.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/engine/engines.gc") (require "engine/entity/res.gc") (require "engine/camera/cam-debug-h.gc") @@ -13,11 +12,6 @@ (require "kernel/gstate.gc") (require "engine/camera/cam-interface-h.gc") -;; name: camera.gc -;; name in dgo: camera -;; dgos: GAME, ENGINE - - ;; DECOMP BEGINS (define *cam-res-string* (new 'global 'string 64 (the-as string #f))) @@ -25,384 +19,171 @@ (defun cam-slave-get-vector-with-offset ((arg0 entity-actor) (arg1 vector) (arg2 symbol)) (local-vars (s3-0 structure)) (cond - ((= arg2 'trans) - (set! s3-0 (-> arg0 trans)) - ) - ((= arg2 'rot) - (set! s3-0 (-> arg0 quat)) - ) - (else - (set! s3-0 (res-lump-struct arg0 arg2 structure)) - ) - ) + ((= arg2 'trans) (set! s3-0 (-> arg0 trans))) + ((= arg2 'rot) (set! s3-0 (-> arg0 quat))) + (else (set! s3-0 (res-lump-struct arg0 arg2 structure)))) (let ((s2-0 (method-of-type res-lump get-property-struct))) (format (clear *res-key-string*) "~S~S" arg2 '-offset) - (let ((a0-6 (s2-0 - arg0 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - #f - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((a0-6 (s2-0 arg0 (string->symbol *res-key-string*) 'interp -1000000000.0 #f (the-as (pointer res-tag) #f) *res-static-buf*))) (cond - ((and s3-0 a0-6) - (vector+! arg1 (the-as vector s3-0) (the-as vector a0-6)) - #t - ) - ((the-as vector s3-0) - (set! (-> arg1 quad) (-> (the-as vector s3-0) quad)) - #t - ) - (else - #f - ) - ) - ) - ) - ) + ((and s3-0 a0-6) (vector+! arg1 (the-as vector s3-0) (the-as vector a0-6)) #t) + ((the-as vector s3-0) (set! (-> arg1 quad) (-> (the-as vector s3-0) quad)) #t) + (else #f))))) (defun cam-slave-get-flags ((arg0 entity) (arg1 symbol)) (let ((gp-0 (res-lump-value arg0 arg1 uint128)) (s3-0 (method-of-type res-lump get-property-value)) - (s2-0 arg0) - ) + (s2-0 arg0)) (format (clear *res-key-string*) "~S~S" arg1 '-on) - (let ((s3-1 (s3-0 - s2-0 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - (s2-1 (method-of-type res-lump get-property-value)) - ) + (let ((s3-1 (s3-0 s2-0 + (string->symbol *res-key-string*) + 'interp + -1000000000.0 + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*)) + (s2-1 (method-of-type res-lump get-property-value))) (format (clear *res-key-string*) "~S~S" arg1 '-off) - (let ((v1-3 (s2-1 - arg0 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (logclear (logior gp-0 s3-1) v1-3) - ) - ) - ) - ) + (let ((v1-3 (s2-1 arg0 + (string->symbol *res-key-string*) + 'interp + -1000000000.0 + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (logclear (logior gp-0 s3-1) v1-3))))) (defun cam-slave-get-float ((arg0 entity) (arg1 symbol) (arg2 float)) (let ((f30-0 (res-lump-float arg0 arg1 :default arg2)) - (s4-0 (method-of-type res-lump get-property-value-float)) - ) + (s4-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" arg1 '-offset) - (+ f30-0 (s4-0 - arg0 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - 0.0 - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - ) + (+ f30-0 + (s4-0 arg0 (string->symbol *res-key-string*) 'interp -1000000000.0 0.0 (the-as (pointer res-tag) #f) *res-static-buf*)))) (defun cam-slave-get-fov ((arg0 entity)) (let ((f30-0 (res-lump-float arg0 'fov)) - (s5-0 (method-of-type res-lump get-property-value-float)) - ) + (s5-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'fov '-offset) - (let ((f0-0 (s5-0 - arg0 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - 0.0 - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if (= f30-0 0.0) - (+ 11650.845 f0-0) - (+ f30-0 f0-0) - ) - ) - ) - ) + (let ((f0-0 (s5-0 arg0 (string->symbol *res-key-string*) 'interp -1000000000.0 0.0 (the-as (pointer res-tag) #f) *res-static-buf*))) + (if (= f30-0 0.0) (+ 11650.845 f0-0) (+ f30-0 f0-0))))) (defun cam-slave-get-intro-step ((arg0 entity)) (let ((f30-0 (res-lump-float arg0 'intro-time)) - (s5-0 (method-of-type res-lump get-property-value-float)) - ) + (s5-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'intro-time '-offset) - (let ((f0-1 (+ f30-0 (s5-0 - arg0 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - 0.0 - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - ) - (if (>= 0.0 f0-1) - 0.004166667 - (/ 0.016666668 f0-1) - ) - ) - ) - ) + (let ((f0-1 (+ f30-0 + (s5-0 arg0 (string->symbol *res-key-string*) 'interp -1000000000.0 0.0 (the-as (pointer res-tag) #f) *res-static-buf*)))) + (if (>= 0.0 f0-1) 0.004166667 (/ 0.016666668 f0-1))))) (defun cam-slave-get-interp-time ((arg0 entity)) (let ((f30-0 (res-lump-float arg0 'interpTime)) - (s5-0 (method-of-type res-lump get-property-value-float)) - ) + (s5-0 (method-of-type res-lump get-property-value-float))) (format (clear *res-key-string*) "~S~S" 'interpTime '-offset) - (let ((f0-1 (+ f30-0 (s5-0 - arg0 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - 0.0 - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - ) - (if (>= 0.001 f0-1) - (set! f0-1 0.0) - ) - f0-1 - ) - ) - ) + (let ((f0-1 (+ f30-0 + (s5-0 arg0 (string->symbol *res-key-string*) 'interp -1000000000.0 0.0 (the-as (pointer res-tag) #f) *res-static-buf*)))) + (if (>= 0.001 f0-1) (set! f0-1 0.0)) + f0-1))) (defun cam-slave-get-rot ((arg0 entity-actor) (arg1 matrix)) (let ((s4-0 (method-of-type res-lump get-property-struct)) - (s3-0 arg0) - ) + (s3-0 arg0)) (format (clear *res-key-string*) "~S~S" 'rot '-offset) - (let ((a1-3 (s4-0 - s3-0 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - #f - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((a1-3 (s4-0 s3-0 (string->symbol *res-key-string*) 'interp -1000000000.0 #f (the-as (pointer res-tag) #f) *res-static-buf*))) (cond (a1-3 - (let ((s4-1 (new 'stack-no-clear 'quaternion))) - (quaternion*! s4-1 (the-as quaternion a1-3) (-> arg0 quat)) - (quaternion-normalize! s4-1) - (quaternion->matrix arg1 s4-1) - ) - ) - (else - (quaternion->matrix arg1 (-> arg0 quat)) - ) - ) - ) - ) - arg1 - ) + (let ((s4-1 (new 'stack-no-clear 'quaternion))) + (quaternion*! s4-1 (the-as quaternion a1-3) (-> arg0 quat)) + (quaternion-normalize! s4-1) + (quaternion->matrix arg1 s4-1))) + (else (quaternion->matrix arg1 (-> arg0 quat)))))) + arg1) (defun cam-state-from-entity ((arg0 entity)) (let ((s5-0 (new 'stack 'curve))) - (the-as state (cond - ((not arg0) - (the-as (state camera-slave) #f) - ) - ((res-lump-struct arg0 'pivot structure) - cam-circular - ) - ((res-lump-struct arg0 'align structure) - cam-standoff-read-entity - ) - ((get-curve-data! arg0 s5-0 'campath 'campath-k -1000000000.0) - cam-spline - ) - ((< 0.0 (cam-slave-get-float arg0 'stringMaxLength 0.0)) - *camera-base-mode* - ) - (else - cam-fixed-read-entity - ) - ) - ) - ) - ) + (the-as state + (cond + ((not arg0) (the-as (state camera-slave) #f)) + ((res-lump-struct arg0 'pivot structure) cam-circular) + ((res-lump-struct arg0 'align structure) cam-standoff-read-entity) + ((get-curve-data! arg0 s5-0 'campath 'campath-k -1000000000.0) cam-spline) + ((< 0.0 (cam-slave-get-float arg0 'stringMaxLength 0.0)) *camera-base-mode*) + (else cam-fixed-read-entity))))) (defun parameter-ease-none ((arg0 object)) - arg0 - ) + arg0) (defun parameter-ease-clamp ((arg0 float)) (cond - ((>= arg0 1.0) - (set! arg0 1.0) - ) - ((>= 0.0 arg0) - (set! arg0 0.0) - ) - ) - arg0 - ) + ((>= arg0 1.0) (set! arg0 1.0)) + ((>= 0.0 arg0) (set! arg0 0.0))) + arg0) (defun parameter-ease-lerp-clamp ((arg0 float)) (cond - ((>= arg0 1.0) - 1.0 - ) - ((>= 0.0 arg0) - 0.0 - ) - ((>= 0.25 arg0) - (* 0.5 arg0) - ) - ((>= arg0 0.75) - (- 1.0 (* 0.5 (- 1.0 arg0))) - ) - (else - (+ 0.125 (* 1.5 (+ -0.25 arg0))) - ) - ) - ) + ((>= arg0 1.0) 1.0) + ((>= 0.0 arg0) 0.0) + ((>= 0.25 arg0) (* 0.5 arg0)) + ((>= arg0 0.75) (- 1.0 (* 0.5 (- 1.0 arg0)))) + (else (+ 0.125 (* 1.5 (+ -0.25 arg0)))))) (defun parameter-ease-sqrt-clamp ((arg0 float)) (cond - ((>= arg0 1.0) - 1.0 - ) - ((>= 0.0 arg0) - 0.0 - ) - ((>= 0.5 arg0) - (* 0.5 (- 1.0 (sqrtf (- 1.0 (* 2.0 arg0))))) - ) - (else - (* 0.5 (+ 1.0 (sqrtf (+ -1.0 (* 2.0 arg0))))) - ) - ) - ) + ((>= arg0 1.0) 1.0) + ((>= 0.0 arg0) 0.0) + ((>= 0.5 arg0) (* 0.5 (- 1.0 (sqrtf (- 1.0 (* 2.0 arg0)))))) + (else (* 0.5 (+ 1.0 (sqrtf (+ -1.0 (* 2.0 arg0)))))))) (defun fourth-power ((arg0 float)) - (let ((f0-2 (* arg0 arg0))) - (* f0-2 f0-2) - ) - ) + (let ((f0-2 (* arg0 arg0))) (* f0-2 f0-2))) (defun third-power ((arg0 float)) - (* arg0 arg0 arg0) - ) + (* arg0 arg0 arg0)) (defun parameter-ease-sqr-clamp ((arg0 float)) (cond - ((>= arg0 1.0) - 1.0 - ) - ((>= 0.0 arg0) - 0.0 - ) + ((>= arg0 1.0) 1.0) + ((>= 0.0 arg0) 0.0) ((>= 0.5 arg0) (let ((f0-3 0.5) - (f1-4 (* 2.0 arg0)) - ) - (* f0-3 (* f1-4 f1-4)) - ) - ) + (f1-4 (* 2.0 arg0))) + (* f0-3 (* f1-4 f1-4)))) (else - (let ((f0-5 1.0) - (f1-7 0.5) - (f2-2 (* 2.0 (- 1.0 arg0))) - ) - (- f0-5 (* f1-7 (* f2-2 f2-2))) - ) - ) - ) - ) + (let ((f0-5 1.0) + (f1-7 0.5) + (f2-2 (* 2.0 (- 1.0 arg0)))) + (- f0-5 (* f1-7 (* f2-2 f2-2))))))) (defun parameter-ease-sin-clamp ((arg0 float)) (cond - ((>= arg0 1.0) - 1.0 - ) - ((>= 0.0 arg0) - 0.0 - ) - (else - (+ 0.5 (* 0.5 (sin (* 182.04445 (+ -90.0 (* 180.0 arg0)))))) - ) - ) - ) + ((>= arg0 1.0) 1.0) + ((>= 0.0 arg0) 0.0) + (else (+ 0.5 (* 0.5 (sin (* 182.04445 (+ -90.0 (* 180.0 arg0))))))))) (defmethod cam-index-method-9 ((this cam-index) (arg0 symbol) (arg1 entity) (arg2 vector) (arg3 curve)) (local-vars (sv-32 (function _varargs_ object))) (format (clear *cam-res-string*) "~S-flags" arg0) (set! (-> this flags) (the-as cam-index-options (cam-slave-get-flags arg1 (string->symbol *res-key-string*)))) (let ((s3-2 (res-lump-data arg1 arg0 pointer)) - (s0-1 (method-of-type res-lump get-property-struct)) - ) + (s0-1 (method-of-type res-lump get-property-struct))) (set! sv-32 format) (let ((a0-7 (clear *res-key-string*)) (a1-4 "~S~S") - (a3-2 '-offset) - ) - (sv-32 a0-7 a1-4 arg0 a3-2) - ) - (let ((v0-8 (s0-1 - arg1 - (string->symbol *res-key-string*) - 'interp - -1000000000.0 - #f - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (a3-2 '-offset)) + (sv-32 a0-7 a1-4 arg0 a3-2)) + (let ((v0-8 (s0-1 arg1 (string->symbol *res-key-string*) 'interp -1000000000.0 #f (the-as (pointer res-tag) #f) *res-static-buf*))) (cond (s3-2 - (cond - (v0-8 - (vector+! (the-as vector (-> this vec)) (the-as vector (&+ s3-2 0)) (the-as vector v0-8)) - (vector+! (-> this vec 1) (the-as vector (&+ s3-2 16)) (the-as vector v0-8)) - ) - (else - (set! (-> this vec 0 quad) (-> (the-as (pointer uint128) (&+ s3-2 0)))) - (set! (-> this vec 1 quad) (-> (the-as (pointer uint128) (&+ s3-2 16)))) - ) - ) - ) + (cond + (v0-8 + (vector+! (the-as vector (-> this vec)) (the-as vector (&+ s3-2 0)) (the-as vector v0-8)) + (vector+! (-> this vec 1) (the-as vector (&+ s3-2 16)) (the-as vector v0-8))) + (else + (set! (-> this vec 0 quad) (-> (the-as (pointer uint128) (&+ s3-2 0)))) + (set! (-> this vec 1 quad) (-> (the-as (pointer uint128) (&+ s3-2 16))))))) (arg3 - (set! (-> this vec 0 quad) (-> arg3 cverts 0 quad)) - (set! (-> this vec 1 quad) (-> arg3 cverts (+ (-> arg3 num-cverts) -1) quad)) - ) - (else - (return #f) - ) - ) - ) - ) + (set! (-> this vec 0 quad) (-> arg3 cverts 0 quad)) + (set! (-> this vec 1 quad) (-> arg3 cverts (+ (-> arg3 num-cverts) -1) quad))) + (else (return #f))))) (let ((s4-1 (new-stack-vector0))) 0.0 (cond @@ -412,24 +193,18 @@ (vector-! s4-1 (the-as vector (-> this vec)) arg2) (set! (-> this vec 1 x) (vector-length s4-1)) (set! (-> this vec 1 w) (- (-> this vec 1 w) (-> this vec 1 x))) - (set! (-> this vec 0 quad) (-> arg2 quad)) - ) + (set! (-> this vec 0 quad) (-> arg2 quad))) ((logtest? (-> this flags) (cam-index-options RADIAL)) (vector-! s4-1 (-> this vec 1) arg2) (set! (-> this vec 1 w) (vector-length s4-1)) (vector-! s4-1 (the-as vector (-> this vec)) arg2) (set! (-> this vec 1 x) (vector-length s4-1)) (set! (-> this vec 1 w) (- (-> this vec 1 w) (-> this vec 1 x))) - (set! (-> this vec 0 quad) (-> arg2 quad)) - ) + (set! (-> this vec 0 quad) (-> arg2 quad))) (else - (vector-! (-> this vec 1) (-> this vec 1) (the-as vector (-> this vec))) - (set! (-> this vec 1 w) (vector-normalize-ret-len! (-> this vec 1) 1.0)) - ) - ) - ) - #t - ) + (vector-! (-> this vec 1) (-> this vec 1) (the-as vector (-> this vec))) + (set! (-> this vec 1 w) (vector-normalize-ret-len! (-> this vec 1) 1.0))))) + #t) (defmethod cam-index-method-10 ((this cam-index) (arg0 vector)) (let ((s5-0 (new-stack-vector0))) @@ -438,17 +213,9 @@ (cond ((logtest? (-> this flags) (cam-index-options SPHERICAL)) (vector-flatten! s5-0 s5-0 (-> *camera* local-down)) - (/ (- (vector-length s5-0) (-> this vec 1 x)) (-> this vec 1 w)) - ) - ((logtest? (-> this flags) (cam-index-options RADIAL)) - (/ (- (vector-length s5-0) (-> this vec 1 x)) (-> this vec 1 w)) - ) - (else - (/ (vector-dot s5-0 (-> this vec 1)) (-> this vec 1 w)) - ) - ) - ) - ) + (/ (- (vector-length s5-0) (-> this vec 1 x)) (-> this vec 1 w))) + ((logtest? (-> this flags) (cam-index-options RADIAL)) (/ (- (vector-length s5-0) (-> this vec 1 x)) (-> this vec 1 w))) + (else (/ (vector-dot s5-0 (-> this vec 1)) (-> this vec 1 w)))))) (defmethod tracking-spline-method-10 ((this tracking-spline) (arg0 vector)) (set! (-> this point 0 position quad) (-> arg0 quad)) @@ -466,65 +233,46 @@ (let ((v1-6 1)) (while (!= v1-6 31) (set! (-> this point v1-6 next) (+ v1-6 1)) - (+! v1-6 1) - ) - (set! (-> this point v1-6 next) -134250495) - ) + (+! v1-6 1)) + (set! (-> this point v1-6 next) -134250495)) 0 - (none) - ) + (none)) (defmethod tracking-spline-method-13 ((this tracking-spline) (arg0 int)) (let ((v1-3 (-> this point arg0 next))) (cond - ((= v1-3 -134250495) - ) - ((= (-> this point v1-3 next) -134250495) - ) + ((= v1-3 -134250495)) + ((= (-> this point v1-3 next) -134250495)) (else - (set! (-> this point arg0 next) (-> this point v1-3 next)) - (set! (-> this summed-len) (- (-> this summed-len) (-> this point v1-3 tp-length))) - (set! (-> this point v1-3 next) (-> this free-point)) - (set! (-> this free-point) v1-3) - (+! (-> this point v1-3 incarnation) 1) - (let ((v1-11 (-> this point arg0 next))) - (set! (-> this summed-len) (- (-> this summed-len) (-> this point arg0 tp-length))) - (vector-! - (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 arg0))) - (the-as vector (-> this point v1-11)) - (the-as vector (-> this point arg0)) - ) - ) - (set! (-> this point arg0 tp-length) - (vector-normalize-ret-len! (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 arg0))) 1.0) - ) - (+! (-> this summed-len) (-> this point arg0 tp-length)) - (+! (-> this used-count) -1) - ) - ) - ) + (set! (-> this point arg0 next) (-> this point v1-3 next)) + (set! (-> this summed-len) (- (-> this summed-len) (-> this point v1-3 tp-length))) + (set! (-> this point v1-3 next) (-> this free-point)) + (set! (-> this free-point) v1-3) + (+! (-> this point v1-3 incarnation) 1) + (let ((v1-11 (-> this point arg0 next))) + (set! (-> this summed-len) (- (-> this summed-len) (-> this point arg0 tp-length))) + (vector-! (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 arg0))) + (the-as vector (-> this point v1-11)) + (the-as vector (-> this point arg0)))) + (set! (-> this point arg0 tp-length) + (vector-normalize-ret-len! (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 arg0))) 1.0)) + (+! (-> this summed-len) (-> this point arg0 tp-length)) + (+! (-> this used-count) -1)))) 0 - (none) - ) + (none)) (defmethod tracking-spline-method-14 ((this tracking-spline) (arg0 tracking-spline-sampler)) (let ((v1-0 (-> this used-point))) (set! (-> this partial-point) (-> arg0 partial-pt)) (when (= (-> this next-to-last-point) v1-0) (set! (-> this summed-len) (-> this point v1-0 tp-length)) - (if (= (-> arg0 cur-pt) (-> this end-point)) - (set! (-> this partial-point) 0.99999) - ) - ) + (if (= (-> arg0 cur-pt) (-> this end-point)) (set! (-> this partial-point) 0.99999))) (when (!= (-> arg0 cur-pt) v1-0) - (while (and (!= (-> this point v1-0 next) (-> arg0 cur-pt)) - (!= (-> this point v1-0 next) (-> this next-to-last-point)) - ) + (while (and (!= (-> this point v1-0 next) (-> arg0 cur-pt)) (!= (-> this point v1-0 next) (-> this next-to-last-point))) (set! (-> this summed-len) (- (-> this summed-len) (-> this point v1-0 tp-length))) (+! (-> this point v1-0 incarnation) 1) (+! (-> this used-count) -1) - (set! v1-0 (-> this point v1-0 next)) - ) + (set! v1-0 (-> this point v1-0 next))) (set! (-> this summed-len) (- (-> this summed-len) (-> this point v1-0 tp-length))) (+! (-> this point v1-0 incarnation) 1) (+! (-> this used-count) -1) @@ -532,312 +280,198 @@ (set! (-> this free-point) (-> this used-point)) (set! (-> this used-point) (-> arg0 cur-pt)) (cond - ((= (-> arg0 cur-pt) (-> this end-point)) - (set! (-> this partial-point) 0.0) - (set! (-> this summed-len) 0.0) - ) + ((= (-> arg0 cur-pt) (-> this end-point)) (set! (-> this partial-point) 0.0) (set! (-> this summed-len) 0.0)) ((= (-> arg0 cur-pt) (-> this next-to-last-point)) - (set! (-> this summed-len) (-> this point (-> this next-to-last-point) tp-length)) - ) - ) - ) - ) + (set! (-> this summed-len) (-> this point (-> this next-to-last-point) tp-length)))))) 0 - (none) - ) + (none)) (defmethod tracking-spline-method-15 ((this tracking-spline)) (let ((s5-0 (new 'stack-no-clear 'tracking-spline-sampler))) (let ((a2-0 (new 'stack-no-clear 'tracking-point))) (set! (-> s5-0 cur-pt) (-> this used-point)) (set! (-> s5-0 partial-pt) (-> this partial-point)) - (tracking-spline-method-19 this (-> this sample-len) (the-as vector a2-0) s5-0) - ) + (tracking-spline-method-19 this (-> this sample-len) (the-as vector a2-0) s5-0)) (if (or (= (-> s5-0 cur-pt) (-> this end-point)) (= (-> s5-0 cur-pt) (-> this next-to-last-point)) - (= (-> this point (-> s5-0 cur-pt) next) (-> this next-to-last-point)) - ) - (set! (-> s5-0 cur-pt) (-> this used-point)) - ) + (= (-> this point (-> s5-0 cur-pt) next) (-> this next-to-last-point))) + (set! (-> s5-0 cur-pt) (-> this used-point))) (let ((v1-15 (-> this point (-> s5-0 cur-pt) next))) (when (!= v1-15 -134250495) (let ((a0-14 (-> this point v1-15 next)) (a1-1 v1-15) - (f0-2 -2.0) - ) + (f0-2 -2.0)) 0.0 (while (not (or (= a0-14 -134250495) (= a0-14 (-> this end-point)))) - (let ((f1-2 (vector-dot - (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 v1-15))) - (the-as vector (+ (the-as uint (the-as vector (-> this point 0 direction))) (* 48 a0-14))) - ) - ) - ) + (let ((f1-2 (vector-dot (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 v1-15))) + (the-as vector (+ (the-as uint (the-as vector (-> this point 0 direction))) (* 48 a0-14)))))) (when (>= f1-2 f0-2) (set! f0-2 f1-2) - (set! a1-1 v1-15) - ) - ) + (set! a1-1 v1-15))) (set! v1-15 a0-14) - (set! a0-14 (-> this point v1-15 next)) - ) - (if (< -2.0 f0-2) - (tracking-spline-method-13 this a1-1) - ) - ) - ) - ) - ) + (set! a0-14 (-> this point v1-15 next))) + (if (< -2.0 f0-2) (tracking-spline-method-13 this a1-1)))))) 0 - (none) - ) + (none)) (defmethod tracking-spline-method-16 ((this tracking-spline) (arg0 float)) (let ((s4-0 (new 'stack-no-clear 'tracking-spline-sampler))) (let ((a2-0 (new 'stack-no-clear 'vector))) (set! (-> s4-0 cur-pt) (-> this used-point)) (set! (-> s4-0 partial-pt) (-> this partial-point)) - (tracking-spline-method-19 this (-> this sample-len) a2-0 s4-0) - ) + (tracking-spline-method-19 this (-> this sample-len) a2-0 s4-0)) (let ((s4-1 (-> this point (-> s4-0 cur-pt) next))) (when (!= s4-1 -134250495) (let ((v1-11 (-> this point s4-1 next))) (while (not (or (= v1-11 -134250495) (= (-> this point v1-11 next) -134250495) (= (-> this point v1-11 next) (-> this end-point)) - (= (-> this point v1-11 next) (-> this next-to-last-point)) - ) - ) + (= (-> this point v1-11 next) (-> this next-to-last-point)))) (if (< (* (-> this point s4-1 tp-length) - (+ 1.0 (vector-dot - (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 s4-1))) - (the-as vector (+ (the-as uint (the-as vector (-> this point 0 direction))) (* 48 v1-11))) - ) - ) - ) - arg0 - ) - (tracking-spline-method-13 this s4-1) - (set! s4-1 v1-11) - ) - (set! v1-11 (-> this point s4-1 next)) - ) - ) - ) - ) - ) + (+ 1.0 + (vector-dot (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 s4-1))) + (the-as vector (+ (the-as uint (the-as vector (-> this point 0 direction))) (* 48 v1-11)))))) + arg0) + (tracking-spline-method-13 this s4-1) + (set! s4-1 v1-11)) + (set! v1-11 (-> this point s4-1 next))))))) 0 - (none) - ) + (none)) (defmethod tracking-spline-method-17 ((this tracking-spline) (arg0 vector) (arg1 float) (arg2 float) (arg3 symbol)) (let ((s3-0 (-> this free-point)) - (s2-0 (-> this end-point)) - ) - (vector-! - (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 s2-0))) - arg0 - (the-as vector (-> this point s2-0)) - ) + (s2-0 (-> this end-point))) + (vector-! (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 s2-0))) + arg0 + (the-as vector (-> this point s2-0))) (set! (-> this point s2-0 tp-length) - (vector-normalize-ret-len! (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 s2-0))) 1.0) - ) - (if (< (-> this point s2-0 tp-length) arg1) - (return 0) - ) + (vector-normalize-ret-len! (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 s2-0))) 1.0)) + (if (< (-> this point s2-0 tp-length) arg1) (return 0)) (when (and arg3 (= s3-0 -134250495)) (tracking-spline-method-15 this) - (set! s3-0 (-> this free-point)) - ) + (set! s3-0 (-> this free-point))) (cond - ((= s3-0 -134250495) - (format 0 "ERROR : pos spline overflow~%") - ) + ((= s3-0 -134250495) (format 0 "ERROR : pos spline overflow~%")) (else - (+! (-> this summed-len) (-> this point s2-0 tp-length)) - (set! (-> this free-point) (-> this point s3-0 next)) - (set! (-> this point s2-0 next) s3-0) - (set! (-> this end-point) s3-0) - (set! (-> this next-to-last-point) s2-0) - (set! (-> this point s3-0 next) -134250495) - (set! (-> this point s3-0 position quad) (-> arg0 quad)) - (+! (-> this used-count) 1) - (if (< 0.0 arg2) - (tracking-spline-method-16 this arg2) - ) - ) - ) - ) - 0 - ) + (+! (-> this summed-len) (-> this point s2-0 tp-length)) + (set! (-> this free-point) (-> this point s3-0 next)) + (set! (-> this point s2-0 next) s3-0) + (set! (-> this end-point) s3-0) + (set! (-> this next-to-last-point) s2-0) + (set! (-> this point s3-0 next) -134250495) + (set! (-> this point s3-0 position quad) (-> arg0 quad)) + (+! (-> this used-count) 1) + (if (< 0.0 arg2) (tracking-spline-method-16 this arg2))))) + 0) (defmethod tracking-spline-method-18 ((this tracking-spline) (arg0 float) (arg1 vector) (arg2 tracking-spline-sampler)) (local-vars (f0-4 float)) (when (not arg2) (set! arg2 (new 'stack-no-clear 'tracking-spline-sampler)) (set! (-> arg2 cur-pt) (-> this used-point)) - (set! (-> arg2 partial-pt) (-> this partial-point)) - ) + (set! (-> arg2 partial-pt) (-> this partial-point))) 0.0 (loop (cond ((= (-> arg2 cur-pt) (-> this end-point)) (set! (-> arg2 partial-pt) 0.0) (vector+! arg1 arg1 (the-as vector (-> this point (-> arg2 cur-pt)))) - (return arg1) - ) - ((begin (set! f0-4 (+ (-> arg2 partial-pt) (/ arg0 (-> this point (-> arg2 cur-pt) tp-length)))) (< f0-4 1.0)) + (return arg1)) + ((begin + (set! f0-4 (+ (-> arg2 partial-pt) (/ arg0 (-> this point (-> arg2 cur-pt) tp-length)))) + (< f0-4 1.0)) (set! (-> arg2 partial-pt) f0-4) (let ((s5-0 (new 'stack-no-clear 'tracking-spline-sampler))) (let ((a2-5 (-> this point (-> arg2 cur-pt) next))) - (vector-lerp! - (the-as vector s5-0) - (the-as vector (-> this point (-> arg2 cur-pt))) - (the-as vector (-> this point a2-5)) - f0-4 - ) - ) - (vector+! arg1 arg1 (the-as vector s5-0)) - ) - (return arg1) - ) + (vector-lerp! (the-as vector s5-0) + (the-as vector (-> this point (-> arg2 cur-pt))) + (the-as vector (-> this point a2-5)) + f0-4)) + (vector+! arg1 arg1 (the-as vector s5-0))) + (return arg1)) (else - (let ((f0-7 (* (- 1.0 (-> arg2 partial-pt)) (-> this point (-> arg2 cur-pt) tp-length)))) - (set! arg0 (- arg0 f0-7)) - ) - (set! (-> arg2 partial-pt) 0.0) - (set! (-> arg2 cur-pt) (-> this point (-> arg2 cur-pt) next)) - ) - ) - ) - (the-as vector #f) - ) + (let ((f0-7 (* (- 1.0 (-> arg2 partial-pt)) (-> this point (-> arg2 cur-pt) tp-length)))) (set! arg0 (- arg0 f0-7))) + (set! (-> arg2 partial-pt) 0.0) + (set! (-> arg2 cur-pt) (-> this point (-> arg2 cur-pt) next))))) + (the-as vector #f)) (defmethod tracking-spline-method-19 ((this tracking-spline) (arg0 float) (arg1 vector) (arg2 tracking-spline-sampler)) (vector-reset! arg1) (tracking-spline-method-18 this arg0 arg1 arg2) - arg1 - ) + arg1) (defmethod tracking-spline-method-20 ((this tracking-spline) (arg0 vector) (arg1 int)) (let ((s3-0 (new 'stack-no-clear 'vector))) - (vector-! - s3-0 - (the-as vector (-> this point (-> this used-point))) - (the-as vector (-> this point (-> this end-point))) - ) + (vector-! s3-0 (the-as vector (-> this point (-> this used-point))) (the-as vector (-> this point (-> this end-point)))) (let* ((f0-0 (vector-length s3-0)) - (f1-1 (* 0.33333334 (- 1.5 (* 0.00024414062 f0-0)))) - ) + (f1-1 (* 0.33333334 (- 1.5 (* 0.00024414062 f0-0))))) 0.0 (let* ((f1-2 (fmax 0.0 f1-1)) (f30-0 (+ 0.3 f1-2)) (f0-1 (cond ((< (-> *CAMERA-bank* min-detectable-velocity) (-> this summed-len)) (vector-float*! s3-0 s3-0 (/ 1.0 f0-0)) - (/ f0-0 (-> this summed-len)) - ) - (else - (vector-reset! s3-0) - 0.0 - ) - ) - ) + (/ f0-0 (-> this summed-len))) + (else (vector-reset! s3-0) 0.0))) (f0-2 (+ -0.2 f0-1)) (f1-9 (* 2.0 f0-2)) (f28-0 (fmin 1.0 (fmax 0.05 f1-9))) (v1-8 (-> this used-point)) - (s2-0 (new 'stack-no-clear 'vector)) - ) + (s2-0 (new 'stack-no-clear 'vector))) (while (and (!= v1-8 (-> this end-point)) (!= v1-8 (-> this next-to-last-point)) (!= v1-8 arg1)) (let ((s1-0 (-> this point v1-8 next))) - (vector-! - s2-0 - (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 s1-0))) - (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 v1-8))) - ) + (vector-! s2-0 + (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 s1-0))) + (the-as vector (+ (the-as uint (-> this point 0 direction)) (* 48 v1-8)))) (let* ((f0-4 (vector-normalize-ret-len! s2-0 1.0)) (f0-5 (* 0.5 f0-4)) - (f26-0 (* (fmin 1.0 f0-5) f30-0 (vector-dot arg0 s2-0))) - ) + (f26-0 (* (fmin 1.0 f0-5) f30-0 (vector-dot arg0 s2-0)))) (let ((f2-7 (vector-dot s2-0 s3-0))) (cond - ((>= 0.0 f2-7) - ) - (else - (set! f26-0 (* f26-0 (fmax 0.0 (- 0.75 (fabs (* f28-0 f2-7)))))) - ) - ) - ) + ((>= 0.0 f2-7)) + (else (set! f26-0 (* f26-0 (fmax 0.0 (- 0.75 (fabs (* f28-0 f2-7))))))))) (cond ((< f26-0 0.0) (if (and *debug-segment* *display-camera-marks*) - (camera-line-rel-len - (the-as vector (-> this point s1-0)) - s2-0 - (* -40.96 f26-0) - (the-as vector4w (new 'static 'inline-array qword 1 - (new 'static 'qword :data (new 'static 'array uint32 4 #xff #xff #x0 #x80)) - ) - ) - ) - ) - (vector--float*! arg0 arg0 s2-0 f26-0) - ) + (camera-line-rel-len (the-as vector (-> this point s1-0)) + s2-0 + (* -40.96 f26-0) + (the-as vector4w + (new 'static 'inline-array qword 1 (new 'static 'qword :data (new 'static 'array uint32 4 #xff #xff #x0 #x80)))))) + (vector--float*! arg0 arg0 s2-0 f26-0)) ((and *debug-segment* *display-camera-marks*) - (camera-line-rel-len - (the-as vector (-> this point s1-0)) - s2-0 - (* 40.96 f26-0) - (the-as vector4w (new 'static 'inline-array qword 1 - (new 'static 'qword :data (new 'static 'array uint32 4 #x80 #x80 #x0 #x80)) - ) - ) - ) - ) - ) - ) - (set! v1-8 s1-0) - ) - ) - ) - ) - ) + (camera-line-rel-len (the-as vector (-> this point s1-0)) + s2-0 + (* 40.96 f26-0) + (the-as vector4w + (new 'static 'inline-array qword 1 (new 'static 'qword :data (new 'static 'array uint32 4 #x80 #x80 #x0 #x80)))))))) + (set! v1-8 s1-0)))))) 0 - (none) - ) + (none)) (defmethod tracking-spline-method-21 ((this tracking-spline) (arg0 vector) (arg1 float) (arg2 float)) (let ((v1-0 (-> this used-point)) - (f0-0 (-> this partial-point)) - ) + (f0-0 (-> this partial-point))) (let ((f1-0 (-> this summed-len))) 0.0 0.0 (let* ((f1-1 (- f1-0 (* f0-0 (-> this point v1-0 tp-length)))) (f2-5 (* 0.1 f1-1)) - (f2-8 (* (fmin arg1 (- f2-5 (-> this max-move))) (-> *display* time-adjust-ratio))) - ) - (set! (-> this max-move) (fmin arg2 (+ (-> this max-move) f2-8))) - ) - ) + (f2-8 (* (fmin arg1 (- f2-5 (-> this max-move))) (-> *display* time-adjust-ratio)))) + (set! (-> this max-move) (fmin arg2 (+ (-> this max-move) f2-8))))) (set! (-> this max-move) (fmax 0.4096 (-> this max-move))) (let ((f1-8 (-> this summed-len))) 0.0 (let* ((f2-14 (- f1-8 (* f0-0 (-> this point v1-0 tp-length)))) - (f2-16 (fmin 204.8 (- f2-14 (-> this sample-len)))) - ) - (set! (-> this sample-len) (fmin 16384.0 (+ (-> this sample-len) f2-16))) - ) - ) + (f2-16 (fmin 204.8 (- f2-14 (-> this sample-len))))) + (set! (-> this sample-len) (fmin 16384.0 (+ (-> this sample-len) f2-16))))) (let ((s4-0 (new 'stack-no-clear 'tracking-spline-sampler))) (set! (-> s4-0 cur-pt) v1-0) (set! (-> s4-0 partial-pt) f0-0) (tracking-spline-method-19 this (* (-> this max-move) (-> *display* time-adjust-ratio)) arg0 s4-0) (tracking-spline-method-14 this s4-0) (dotimes (s3-0 63) - (tracking-spline-method-18 this (* 0.015625 (-> this sample-len)) arg0 s4-0) - ) + (tracking-spline-method-18 this (* 0.015625 (-> this sample-len)) arg0 s4-0)) (vector-float*! arg0 arg0 0.015625) (let ((a2-3 (-> s4-0 cur-pt))) (set! (-> this debug-last-point) a2-3) @@ -846,14 +480,9 @@ (set! (-> this debug-out-position quad) (-> arg0 quad)) (vector-! s4-1 arg0 (-> this old-position)) (tracking-spline-method-20 this s4-1 a2-3) - (vector+! arg0 (-> this old-position) s4-1) - ) - ) - ) - ) + (vector+! arg0 (-> this old-position) s4-1))))) (set! (-> this old-position quad) (-> arg0 quad)) - arg0 - ) + arg0) (defmethod tracking-spline-method-22 ((this tracking-spline) (arg0 float)) (when (< arg0 (-> this summed-len)) @@ -861,107 +490,77 @@ (let ((a2-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 cur-pt) (-> this used-point)) (set! (-> s5-0 partial-pt) 0.0) - (tracking-spline-method-19 this (- (-> this summed-len) arg0) a2-0 s5-0) - ) - (tracking-spline-method-14 this s5-0) - ) - ) + (tracking-spline-method-19 this (- (-> this summed-len) arg0) a2-0 s5-0)) + (tracking-spline-method-14 this s5-0))) 0 - (none) - ) + (none)) (defmethod tracking-spline-method-9 ((this tracking-spline)) (let ((v1-0 (-> this used-point)) (s4-0 0) - (s5-0 0) - ) + (s5-0 0)) (while (!= v1-0 -134250495) (set! s5-0 (logior s5-0 (ash 1 v1-0))) (+! s4-0 1) - (set! v1-0 (-> this point v1-0 next)) - ) + (set! v1-0 (-> this point v1-0 next))) (when (!= s4-0 (-> this used-count)) - (if *debug-segment* - (format 0 "ERROR: tracking spline used count ~D actual ~D~%" (-> this used-count) s4-0) - ) - (set! (-> this used-count) s4-0) - ) + (if *debug-segment* (format 0 "ERROR: tracking spline used count ~D actual ~D~%" (-> this used-count) s4-0)) + (set! (-> this used-count) s4-0)) (let ((v1-9 (-> this free-point)) - (a3-1 0) - ) + (a3-1 0)) (while (!= v1-9 -134250495) (+! a3-1 1) - (set! v1-9 (-> this point v1-9 next)) - ) + (set! v1-9 (-> this point v1-9 next))) (when (!= a3-1 (- 32 (-> this used-count))) - (if *debug-segment* - (format 0 "ERROR: tracking spline free count ~D actual ~D~%" (- 32 (-> this used-count)) a3-1) - ) + (if *debug-segment* (format 0 "ERROR: tracking spline free count ~D actual ~D~%" (- 32 (-> this used-count)) a3-1)) (set! (-> this free-point) -134250495) (dotimes (v1-21 32) (when (not (logtest? s5-0 1)) (set! (-> this point v1-21 next) (-> this free-point)) - (set! (-> this free-point) v1-21) - ) - (set! s5-0 (shr s5-0 1)) - ) - ) - ) - ) + (set! (-> this free-point) v1-21)) + (set! s5-0 (shr s5-0 1)))))) 0 - (none) - ) + (none)) (defbehavior cam-slave-init-vars camera-slave () (cond (*camera* - (set! (-> self options) (-> *camera* slave-options)) - (set! (-> self change-event-from) (the-as (pointer process-drawable) (-> *camera* changer))) - ) + (set! (-> self options) (-> *camera* slave-options)) + (set! (-> self change-event-from) (the-as (pointer process-drawable) (-> *camera* changer)))) (else - (set! (-> self options) (the-as uint 0)) - (set! (-> self change-event-from) (the-as (pointer process-drawable) #f)) - ) - ) + (set! (-> self options) (the-as uint 0)) + (set! (-> self change-event-from) (the-as (pointer process-drawable) #f)))) (cond (*camera-combiner* - (set! (-> self trans quad) (-> *camera-combiner* trans quad)) - (let* ((v1-9 (-> self tracking)) - (a3-0 (-> *camera-combiner* inv-camera-rot)) - (a0-1 (-> a3-0 vector 0 quad)) - (a1-0 (-> a3-0 vector 1 quad)) - (a2-0 (-> a3-0 vector 2 quad)) - (a3-1 (-> a3-0 vector 3 quad)) - ) - (set! (-> v1-9 inv-mat vector 0 quad) a0-1) - (set! (-> v1-9 inv-mat vector 1 quad) a1-0) - (set! (-> v1-9 inv-mat vector 2 quad) a2-0) - (set! (-> v1-9 inv-mat vector 3 quad) a3-1) - ) - (when *camera-init-mat* - (let* ((a2-1 (-> self tracking)) - (a3-2 *camera-init-mat*) - (v1-12 (-> a3-2 vector 0 quad)) - (a0-2 (-> a3-2 vector 1 quad)) - (a1-1 (-> a3-2 vector 2 quad)) - (a3-3 (-> a3-2 vector 3 quad)) - ) - (set! (-> a2-1 inv-mat vector 0 quad) v1-12) - (set! (-> a2-1 inv-mat vector 1 quad) a0-2) - (set! (-> a2-1 inv-mat vector 2 quad) a1-1) - (set! (-> a2-1 inv-mat vector 3 quad) a3-3) - ) - ) - (set! (-> self fov) (-> *camera-combiner* fov)) - (set! (-> self velocity quad) (-> *camera-combiner* velocity quad)) - ) + (set! (-> self trans quad) (-> *camera-combiner* trans quad)) + (let* ((v1-9 (-> self tracking)) + (a3-0 (-> *camera-combiner* inv-camera-rot)) + (a0-1 (-> a3-0 vector 0 quad)) + (a1-0 (-> a3-0 vector 1 quad)) + (a2-0 (-> a3-0 vector 2 quad)) + (a3-1 (-> a3-0 vector 3 quad))) + (set! (-> v1-9 inv-mat vector 0 quad) a0-1) + (set! (-> v1-9 inv-mat vector 1 quad) a1-0) + (set! (-> v1-9 inv-mat vector 2 quad) a2-0) + (set! (-> v1-9 inv-mat vector 3 quad) a3-1)) + (when *camera-init-mat* + (let* ((a2-1 (-> self tracking)) + (a3-2 *camera-init-mat*) + (v1-12 (-> a3-2 vector 0 quad)) + (a0-2 (-> a3-2 vector 1 quad)) + (a1-1 (-> a3-2 vector 2 quad)) + (a3-3 (-> a3-2 vector 3 quad))) + (set! (-> a2-1 inv-mat vector 0 quad) v1-12) + (set! (-> a2-1 inv-mat vector 1 quad) a0-2) + (set! (-> a2-1 inv-mat vector 2 quad) a1-1) + (set! (-> a2-1 inv-mat vector 3 quad) a3-3))) + (set! (-> self fov) (-> *camera-combiner* fov)) + (set! (-> self velocity quad) (-> *camera-combiner* velocity quad))) (else - (vector-reset! (-> self trans)) - (matrix-identity! (the-as matrix (-> self tracking))) - (set! (-> self fov) 11650.845) - (vector-reset! (-> self velocity)) - ) - ) + (vector-reset! (-> self trans)) + (matrix-identity! (the-as matrix (-> self tracking))) + (set! (-> self fov) 11650.845) + (vector-reset! (-> self velocity)))) (set! (-> self time-dist-too-far) (the-as uint 0)) (set! (-> self intro-t) 1.0) (set! (-> self intro-t-step) 0.0) @@ -970,13 +569,7 @@ (set! (-> self enter-has-run) #f) (set! (-> self cam-entity) #f) (set! (-> self tracking no-follow) #f) - (init-cam-float-seeker - (-> self tracking tilt-adjust) - (-> *CAMERA-bank* default-tilt-adjust) - 9.102222 - 91.022224 - 0.25 - ) + (init-cam-float-seeker (-> self tracking tilt-adjust) (-> *CAMERA-bank* default-tilt-adjust) 9.102222 91.022224 0.25) (set! (-> self tracking follow-blend) 1.0) (set! (-> self have-phony-joystick) #f) (set! (-> self string-val-locked) #f) @@ -984,189 +577,116 @@ (init-cam-float-seeker (-> self tracking underwater-blend) 0.0 0.007 0.03 0.125) (set! (-> self tracking use-point-of-interest) #f) (tracking-spline-method-10 (-> self position-spline) (-> self trans)) - (none) - ) + (none)) (defun cam-slave-go ((arg0 state)) (with-pp (cam-slave-init-vars) - (let ((t9-1 (the-as (function object) enter-state))) - (set! (-> pp next-state) arg0) - (t9-1) - ) + (let ((t9-1 (the-as (function object) enter-state))) (set! (-> pp next-state) arg0) (t9-1)) 0 - (none) - ) - ) + (none))) (defbehavior cam-slave-init camera-slave ((arg0 state) (arg1 entity)) (stack-size-set! (-> self main-thread) 512) (change-to-last-brother self) - (if (and (nonzero? camera-slave-debug) *debug-segment*) - (add-connection *debug-engine* self camera-slave-debug self #f #f) - ) + (if (and (nonzero? camera-slave-debug) *debug-segment*) (add-connection *debug-engine* self camera-slave-debug self #f #f)) (cam-slave-init-vars) (let ((v1-7 'cam-voicebox) - (a0-4 (the-as basic (-> arg0 name))) - ) + (a0-4 (the-as basic (-> arg0 name)))) (cond - ((= (the-as symbol a0-4) v1-7) - ) - (arg1 - (set! (-> self cam-entity) arg1) - ) + ((= (the-as symbol a0-4) v1-7)) + (arg1 (set! (-> self cam-entity) arg1)) (else - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 1) - (set! (-> a1-3 message) 'slave-activated) - (set! (-> a1-3 param 0) (the-as uint self)) - (let ((t9-4 send-event-function)) - (set! a0-4 *camera*) - (t9-4 (the-as camera-master a0-4) a1-3) - ) - ) - ) - ) - (let ((t9-5 (the-as (function object object) (-> arg0 enter)))) - (if t9-5 - (t9-5 (the-as symbol a0-4)) - ) - ) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 1) + (set! (-> a1-3 message) 'slave-activated) + (set! (-> a1-3 param 0) (the-as uint self)) + (let ((t9-4 send-event-function)) (set! a0-4 *camera*) (t9-4 (the-as camera-master a0-4) a1-3))))) + (let ((t9-5 (the-as (function object object) (-> arg0 enter)))) (if t9-5 (t9-5 (the-as symbol a0-4)))) (set! (-> self enter-has-run) #t) (set! (-> self event-hook) (-> arg0 event)) (let ((t9-6 (the-as (function object object) enter-state))) (set! (-> self next-state) arg0) - (t9-6 (the-as symbol a0-4)) - ) - ) + (t9-6 (the-as symbol a0-4)))) 0 - (none) - ) + (none)) (defbehavior cam-standard-event-handler camera-slave ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('go) (let ((v1-1 (-> arg3 param 0)) - (t9-0 (the-as (function object) enter-state)) - ) + (t9-0 (the-as (function object) enter-state))) (set! (-> self next-state) (the-as state v1-1)) - (t9-0) - ) - ) + (t9-0))) (('change-state 'change-state-no-go) (let ((s5-0 (the-as object (-> arg3 param 0)))) (cam-slave-init-vars) - (let ((t9-2 (the-as (function object) (-> (the-as state s5-0) enter)))) - (if t9-2 - (t9-2) - ) - ) + (let ((t9-2 (the-as (function object) (-> (the-as state s5-0) enter)))) (if t9-2 (t9-2))) (set! (-> self enter-has-run) #t) (set! (-> self event-hook) (-> (the-as state s5-0) event)) (when (= arg2 'change-state) - (let ((t9-3 (the-as (function object) enter-state))) - (set! (-> self next-state) (the-as state s5-0)) - (t9-3) - ) - ) - ) - ) + (let ((t9-3 (the-as (function object) enter-state))) (set! (-> self next-state) (the-as state s5-0)) (t9-3))))) (('point-of-interest) (cond ((-> arg3 param 0) (set! (-> self tracking use-point-of-interest) #t) (set! (-> self tracking point-of-interest quad) (-> (the-as vector (-> arg3 param 0)) quad)) - (set! (-> self tracking point-of-interest-blend target) 1.0) - ) - (else - (set! (-> self tracking use-point-of-interest) #f) - (set! (-> self tracking point-of-interest-blend target) 0.0) - ) - ) - ) + (set! (-> self tracking point-of-interest-blend target) 1.0)) + (else (set! (-> self tracking use-point-of-interest) #f) (set! (-> self tracking point-of-interest-blend target) 0.0)))) (('teleport) (cam-calc-follow! (-> self tracking) (-> self trans) #f) - (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #f) - ) - ) - ) + (slave-set-rotation! (-> self tracking) (-> self trans) (the-as float (-> self options)) (-> self fov) #f)))) (defbehavior cam-curve-pos camera-slave ((arg0 vector) (arg1 vector) (arg2 curve) (arg3 symbol)) (let ((s5-0 (new-stack-vector0))) 0.0 (let ((s2-0 (new-stack-vector0))) - (if arg1 - (set! (-> arg1 w) 0.0) - ) + (if arg1 (set! (-> arg1 w) 0.0)) (when (< (-> self intro-t) 1.0) (+! (-> self intro-t) (* (-> self intro-t-step) (-> *display* time-adjust-ratio))) - (if (< 1.0 (-> self intro-t)) - (set! (-> self intro-t) 1.0) - ) + (if (< 1.0 (-> self intro-t)) (set! (-> self intro-t) 1.0)) (curve-get-pos! s5-0 (parameter-ease-sin-clamp (-> self intro-t)) (-> self intro-curve)) (vector+! s5-0 s5-0 (-> self intro-offset)) (vector+! arg0 arg0 s5-0) (cond - ((not arg1) - ) + ((not arg1)) ((< (-> self intro-t) 0.5) (curve-get-pos! s2-0 (+ 0.0001 (parameter-ease-sin-clamp (-> self intro-t))) (-> self intro-curve)) (vector+! s2-0 s2-0 (-> self intro-offset)) (vector-! arg1 s2-0 s5-0) - (set! (-> arg1 w) 1.0) - ) + (set! (-> arg1 w) 1.0)) (else - (curve-get-pos! s2-0 (+ -0.0001 (parameter-ease-sin-clamp (-> self intro-t))) (-> self intro-curve)) - (vector+! s2-0 s2-0 (-> self intro-offset)) - (vector-! arg1 s5-0 s2-0) - (set! (-> arg1 w) 1.0) - ) - ) - ) - ) + (curve-get-pos! s2-0 (+ -0.0001 (parameter-ease-sin-clamp (-> self intro-t))) (-> self intro-curve)) + (vector+! s2-0 s2-0 (-> self intro-offset)) + (vector-! arg1 s5-0 s2-0) + (set! (-> arg1 w) 1.0))))) (cond - ((not (-> self spline-exists)) - ) + ((not (-> self spline-exists))) ((= (-> self spline-follow-dist) 0.0) (let ((f0-18 (if arg3 - (cam-index-method-10 (-> self index) (-> self tracking follow-pt)) - (cam-index-method-10 (-> self index) (-> *camera* tpos-curr-adj)) - ) - ) - ) - (curve-get-pos! s5-0 f0-18 (-> self spline-curve)) - ) + (cam-index-method-10 (-> self index) (-> self tracking follow-pt)) + (cam-index-method-10 (-> self index) (-> *camera* tpos-curr-adj))))) + (curve-get-pos! s5-0 f0-18 (-> self spline-curve))) (vector+! s5-0 s5-0 (-> self spline-offset)) - (vector+! arg0 arg0 s5-0) - ) + (vector+! arg0 arg0 s5-0)) (else - (let ((s3-1 (new 'stack-no-clear 'vector))) - (curve-length (-> self spline-curve)) - (if arg3 - (set! (-> s3-1 quad) (-> self tracking follow-pt quad)) - (set! (-> s3-1 quad) (-> *camera* tpos-curr-adj quad)) - ) - (set! (-> self spline-tt) - (curve-closest-point (-> self spline-curve) s3-1 (-> self spline-tt) 1024.0 10 (-> self spline-follow-dist)) - ) - ) - (curve-get-pos! s5-0 (-> self spline-tt) (-> self spline-curve)) - (vector+! s5-0 s5-0 (-> self spline-offset)) - (vector+! arg0 arg0 s5-0) - ) - ) - ) - arg0 - ) + (let ((s3-1 (new 'stack-no-clear 'vector))) + (curve-length (-> self spline-curve)) + (if arg3 (set! (-> s3-1 quad) (-> self tracking follow-pt quad)) (set! (-> s3-1 quad) (-> *camera* tpos-curr-adj quad))) + (set! (-> self spline-tt) + (curve-closest-point (-> self spline-curve) s3-1 (-> self spline-tt) 1024.0 10 (-> self spline-follow-dist)))) + (curve-get-pos! s5-0 (-> self spline-tt) (-> self spline-curve)) + (vector+! s5-0 s5-0 (-> self spline-offset)) + (vector+! arg0 arg0 s5-0)))) + arg0) (defbehavior cam-curve-setup camera-slave ((arg0 vector)) (when (get-curve-data! (-> self cam-entity) (-> self spline-curve) 'campath 'campath-k -1000000000.0) (curve-get-pos! (-> self spline-offset) 0.0 (-> self spline-curve)) (vector-negate! (-> self spline-offset) (-> self spline-offset)) (cam-index-method-9 (-> self index) 'campoints (-> self cam-entity) arg0 (-> self spline-curve)) - (set! (-> self spline-exists) #t) - ) + (set! (-> self spline-exists) #t)) (cond ((get-curve-data! (-> self cam-entity) (-> self intro-curve) 'intro 'intro-k -1000000000.0) (curve-get-pos! (-> self intro-offset) 1.0 (-> self intro-curve)) @@ -1174,42 +694,28 @@ (set! (-> self intro-t) 0.0) (set! (-> self intro-t-step) (cam-slave-get-intro-step (-> self cam-entity))) (set! (-> self outro-exit-value) (cam-slave-get-float (-> self cam-entity) 'intro-exitValue 0.0)) - (if (= (-> self outro-exit-value) 0.0) - (set! (-> self outro-exit-value) 0.5) - ) - ) - (else - (set! (-> self intro-t) 1.0) - (set! (-> self intro-t-step) 0.0) - ) - ) - (if (nonzero? (-> *camera* no-intro)) - (set! (-> self intro-t) 1.0) - ) + (if (= (-> self outro-exit-value) 0.0) (set! (-> self outro-exit-value) 0.5))) + (else (set! (-> self intro-t) 1.0) (set! (-> self intro-t-step) 0.0))) + (if (nonzero? (-> *camera* no-intro)) (set! (-> self intro-t) 1.0)) 0 - (none) - ) + (none)) (defun cam-calc-follow! ((arg0 cam-rotation-tracker) (arg1 vector) (arg2 symbol)) (cond (arg2 - (update! (-> arg0 tilt-adjust) 0.0) - (update! (-> arg0 point-of-interest-blend) 0.0) - (update! (-> arg0 underwater-blend) 0.0) - ) + (update! (-> arg0 tilt-adjust) 0.0) + (update! (-> arg0 point-of-interest-blend) 0.0) + (update! (-> arg0 underwater-blend) 0.0)) (else - (jump-to-target! (-> arg0 tilt-adjust) 0.0) - (jump-to-target! (-> arg0 point-of-interest-blend) 0.0) - (jump-to-target! (-> arg0 underwater-blend) 0.0) - ) - ) + (jump-to-target! (-> arg0 tilt-adjust) 0.0) + (jump-to-target! (-> arg0 point-of-interest-blend) 0.0) + (jump-to-target! (-> arg0 underwater-blend) 0.0))) (cond ((send-event *camera* 'slave-option? #x4000) (let ((s3-0 (new 'stack-no-clear 'vector)) (s2-0 (new 'stack-no-clear 'vector)) (f30-0 (vector-vector-distance (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj))) - (s5-1 (new 'stack-no-clear 'vector)) - ) + (s5-1 (new 'stack-no-clear 'vector))) (vector-flatten! s3-0 (-> *camera* tgt-face-mat vector 2) (-> *camera* local-down)) (vector-normalize! s3-0 1.0) (vector-! s2-0 (-> *camera* tpos-curr-adj) arg1) @@ -1218,93 +724,55 @@ (vector-float*! s5-1 (-> *camera* tgt-face-mat vector 2) 32768.0) (let* ((f30-1 (lerp-clamp 0.7 0.4 (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))))) (f0-4 (acos (vector-dot s2-0 s3-0))) - (f28-0 (fmax 1820.4445 f0-4)) - ) + (f28-0 (fmax 1820.4445 f0-4))) (if (< f28-0 8192.0) - (vector-float*! - s5-1 - s5-1 - (+ f30-1 - (* (/ (- 1.0 f30-1) (- 1.0 (cos 32768.0))) (+ (- (cos 32768.0)) (cos (* 5.142857 (- 8192.0 f28-0))))) - ) - ) - ) - ) + (vector-float*! s5-1 + s5-1 + (+ f30-1 (* (/ (- 1.0 f30-1) (- 1.0 (cos 32768.0))) (+ (- (cos 32768.0)) (cos (* 5.142857 (- 8192.0 f28-0))))))))) (cond - ((< (-> *camera* ease-t) 1.0) - ) + ((< (-> *camera* ease-t) 1.0)) ((< (-> arg0 follow-blend) 1.0) (let* ((f0-18 (-> arg0 follow-blend)) (f0-19 (* f0-18 f0-18)) - (f0-20 (* f0-19 f0-19)) - ) + (f0-20 (* f0-19 f0-19))) (vector-! s5-1 s5-1 (-> arg0 follow-off)) - (vector-float*! s5-1 s5-1 f0-20) - ) + (vector-float*! s5-1 s5-1 f0-20)) (+! (-> arg0 follow-blend) (* 0.016666668 (-> *display* time-adjust-ratio))) - (vector+! (-> arg0 follow-off) (-> arg0 follow-off) s5-1) - ) - (else - (set! (-> arg0 follow-off quad) (-> s5-1 quad)) - ) - ) - ) + (vector+! (-> arg0 follow-off) (-> arg0 follow-off) s5-1)) + (else (set! (-> arg0 follow-off quad) (-> s5-1 quad))))) (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) - (vector--float*! - (-> arg0 follow-pt) - (-> arg0 follow-pt) - (-> *camera* local-down) - (+ 12288.0 (-> *camera* target-height)) - ) - ) + (vector--float*! (-> arg0 follow-pt) + (-> arg0 follow-pt) + (-> *camera* local-down) + (+ 12288.0 (-> *camera* target-height)))) (else - 0.0 - (let ((s3-2 (new-stack-vector0))) - (set! (-> arg0 follow-blend) 0.0) - (cond - ((-> arg0 no-follow) - (vector-reset! s3-2) - ) - (else - (vector-! s3-2 (-> *camera* tpos-curr-adj) arg1) - (vector-normalize! s3-2 1.0) - (let* ((f0-28 (vector-dot (-> *camera* tgt-rot-mat vector 2) s3-2)) - (f30-2 (cond - ((< f0-28 0.0) - 1.0 - ) - (else - (let* ((f0-29 (* f0-28 f0-28)) - (f0-30 (- 1.0 f0-29)) - ) - (* f0-30 (* f0-30 f0-30)) - ) - ) - ) - ) - ) - (vector-! s3-2 arg1 (-> *camera* tpos-curr-adj)) - (vector-flatten! s3-2 s3-2 (-> *camera* local-down)) - (let* ((f0-33 (* 0.000022194603 (+ -20480.0 (vector-length s3-2)))) - (f0-34 (fmin 1.0 f0-33)) - (f0-35 (fmax 0.0 f0-34)) - ) - (vector-float*! s3-2 (-> *camera* tgt-rot-mat vector 2) (* (lerp 2048.0 8192.0 f0-35) f30-2)) - ) - ) - ) - ) - (if arg2 - (vector-seek-3d-smooth! (-> arg0 follow-off) s3-2 (* 20480.0 (seconds-per-frame)) 0.05) - (set! (-> arg0 follow-off quad) (-> s3-2 quad)) - ) - ) - (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) - (vector--float*! (-> arg0 follow-pt) (-> arg0 follow-pt) (-> *camera* local-down) (-> *camera* target-height)) - ) - ) - (-> arg0 follow-pt) - ) + 0.0 + (let ((s3-2 (new-stack-vector0))) + (set! (-> arg0 follow-blend) 0.0) + (cond + ((-> arg0 no-follow) (vector-reset! s3-2)) + (else + (vector-! s3-2 (-> *camera* tpos-curr-adj) arg1) + (vector-normalize! s3-2 1.0) + (let* ((f0-28 (vector-dot (-> *camera* tgt-rot-mat vector 2) s3-2)) + (f30-2 (cond + ((< f0-28 0.0) 1.0) + (else + (let* ((f0-29 (* f0-28 f0-28)) + (f0-30 (- 1.0 f0-29))) + (* f0-30 (* f0-30 f0-30))))))) + (vector-! s3-2 arg1 (-> *camera* tpos-curr-adj)) + (vector-flatten! s3-2 s3-2 (-> *camera* local-down)) + (let* ((f0-33 (* 0.000022194603 (+ -20480.0 (vector-length s3-2)))) + (f0-34 (fmin 1.0 f0-33)) + (f0-35 (fmax 0.0 f0-34))) + (vector-float*! s3-2 (-> *camera* tgt-rot-mat vector 2) (* (lerp 2048.0 8192.0 f0-35) f30-2)))))) + (if arg2 + (vector-seek-3d-smooth! (-> arg0 follow-off) s3-2 (* 20480.0 (seconds-per-frame)) 0.05) + (set! (-> arg0 follow-off quad) (-> s3-2 quad)))) + (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) + (vector--float*! (-> arg0 follow-pt) (-> arg0 follow-pt) (-> *camera* local-down) (-> *camera* target-height)))) + (-> arg0 follow-pt)) (defun mat-remove-z-rot ((arg0 matrix) (arg1 vector)) (let ((s4-0 (new-stack-vector0))) @@ -1318,107 +786,60 @@ (when (< f30-0 0.99999) (vector-cross! s4-0 (-> arg0 vector 1) s4-0) (let ((f0-4 (vector-length s4-0))) - (if (< 0.0 (vector-dot s4-0 (-> arg0 vector 2))) - (set! f0-4 (- f0-4)) - ) - (matrix-axis-sin-cos! s5-0 (-> arg0 vector 2) f0-4 f30-0) - ) - (matrix*! arg0 arg0 s5-0) - ) - ) - ) - ) - arg0 - ) + (if (< 0.0 (vector-dot s4-0 (-> arg0 vector 2))) (set! f0-4 (- f0-4))) + (matrix-axis-sin-cos! s5-0 (-> arg0 vector 2) f0-4 f30-0)) + (matrix*! arg0 arg0 s5-0))))) + arg0) (defun slave-matrix-blend-2 ((arg0 matrix) (arg1 float) (arg2 vector) (arg3 matrix)) (let ((s1-0 (new-stack-vector0)) - (s4-0 (new-stack-quaternion0)) - ) + (s4-0 (new-stack-quaternion0))) (let ((s2-0 (new-stack-quaternion0)) - (gp-0 (new-stack-quaternion0)) - ) + (gp-0 (new-stack-quaternion0))) 0.0 (let* ((f0-1 (cond - ((logtest? (the-as int arg1) 4) - (vector-length arg2) - ) - (else - (vector-flatten! s1-0 arg2 (-> *camera* local-down)) - (vector-length s1-0) - ) - ) - ) - (f0-3 (* 0.00048828125 (+ -1024.0 f0-1))) - ) + ((logtest? (the-as int arg1) 4) (vector-length arg2)) + (else (vector-flatten! s1-0 arg2 (-> *camera* local-down)) (vector-length s1-0)))) + (f0-3 (* 0.00048828125 (+ -1024.0 f0-1)))) (cond - ((< f0-3 0.0) - (set! f0-3 0.0) - ) - ((< 1.0 f0-3) - (set! f0-3 1.0) - ) - ) + ((< f0-3 0.0) (set! f0-3 0.0)) + ((< 1.0 f0-3) (set! f0-3 1.0))) (let ((f30-0 (* 364.0889 (-> *display* time-adjust-ratio) f0-3))) (matrix->quaternion s4-0 arg0) (matrix->quaternion s2-0 arg3) (quaternion-conjugate! gp-0 s4-0) (quaternion*! gp-0 gp-0 s2-0) (quaternion-normalize! gp-0) - (if (< (-> gp-0 w) 0.0) - (quaternion-negate! gp-0 gp-0) - ) + (if (< (-> gp-0 w) 0.0) (quaternion-negate! gp-0 gp-0)) (let ((f28-0 (acos (-> gp-0 w)))) - (if (< (* 0.25 (-> *display* time-adjust-ratio) f28-0) f30-0) - (set! f30-0 (* 0.25 (-> *display* time-adjust-ratio) f28-0)) - ) + (if (< (* 0.25 (-> *display* time-adjust-ratio) f28-0) f30-0) (set! f30-0 (* 0.25 (-> *display* time-adjust-ratio) f28-0))) (cond - ((< (-> gp-0 w) 0.9999999) - (quaternion-float*! gp-0 gp-0 (/ (sin f30-0) (sin f28-0))) - (set! (-> gp-0 w) (cos f30-0)) - ) - (else - (quaternion-identity! gp-0) - ) - ) - ) - ) - ) - (quaternion*! s4-0 s4-0 gp-0) - ) + ((< (-> gp-0 w) 0.9999999) (quaternion-float*! gp-0 gp-0 (/ (sin f30-0) (sin f28-0))) (set! (-> gp-0 w) (cos f30-0))) + (else (quaternion-identity! gp-0)))))) + (quaternion*! s4-0 s4-0 gp-0)) (quaternion-normalize! s4-0) - (quaternion->matrix arg0 s4-0) - ) - ) + (quaternion->matrix arg0 s4-0))) (defun vector-into-frustum-nosmooth! ((arg0 matrix) (arg1 vector) (arg2 float)) (local-vars (sv-112 (inline-array vector)) (sv-128 vector) (sv-144 vector) (sv-160 vector) (sv-176 vector)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((s5-0 (new-stack-matrix0))) (let ((s3-0 (new-stack-vector0)) - (s2-0 (new-stack-vector0)) - ) + (s2-0 (new-stack-vector0))) 0.0 0.0 (let ((f30-0 1.0) - (s4-0 #t) - ) + (s4-0 #t)) (vector-! s3-0 (-> *camera* tpos-curr) arg1) (vector-flatten! s3-0 s3-0 (-> arg0 vector 1)) (vector-normalize! s3-0 1.0) (let ((f28-0 (vector-dot s3-0 (the-as vector (-> arg0 vector))))) (set! sv-128 s2-0) (set! sv-112 (-> arg0 vector)) - (let ((f0-6 (* 0.8 (tan (* 0.5 arg2))))) - (.lvf vf1 (&-> sv-112 0 quad)) - (let ((v1-6 f0-6)) - (.mov vf2 v1-6) - ) - ) + (let ((f0-6 (* 0.8 (tan (* 0.5 arg2))))) (.lvf vf1 (&-> sv-112 0 quad)) (let ((v1-6 f0-6)) (.mov vf2 v1-6))) (.add.x.vf vf1 vf0 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) (.svf (&-> sv-128 quad) vf1) @@ -1426,15 +847,10 @@ (vector-normalize! s2-0 1.0) (let ((f0-8 (vector-dot s2-0 (the-as vector (-> arg0 vector))))) (when (< f0-8 (fabs f28-0)) - (if (< f28-0 0.0) - (vector--float*! s2-0 s2-0 (the-as vector (-> arg0 vector)) (* 2.0 f0-8)) - ) + (if (< f28-0 0.0) (vector--float*! s2-0 s2-0 (the-as vector (-> arg0 vector)) (* 2.0 f0-8))) (matrix-from-two-vectors! s5-0 s2-0 s3-0) (vector-matrix*! (-> arg0 vector 2) (-> arg0 vector 2) s5-0) - (vector-cross! (the-as vector (-> arg0 vector)) (-> arg0 vector 1) (-> arg0 vector 2)) - ) - ) - ) + (vector-cross! (the-as vector (-> arg0 vector)) (-> arg0 vector 1) (-> arg0 vector 2))))) (vector-! s3-0 (-> *camera* tpos-curr) (-> *camera* pitch-off)) (vector-! s3-0 s3-0 arg1) (vector--float*! s3-0 s3-0 (-> *camera* local-down) (-> *camera* foot-offset)) @@ -1443,12 +859,7 @@ (let ((f28-1 (vector-dot s3-0 (-> arg0 vector 1)))) (set! sv-160 s2-0) (set! sv-144 (-> arg0 vector 1)) - (let ((f0-15 (* 0.525 (tan (* 0.5 arg2))))) - (.lvf vf1 (&-> sv-144 quad)) - (let ((v1-23 f0-15)) - (.mov vf2 v1-23) - ) - ) + (let ((f0-15 (* 0.525 (tan (* 0.5 arg2))))) (.lvf vf1 (&-> sv-144 quad)) (let ((v1-23 f0-15)) (.mov vf2 v1-23))) (.add.x.vf vf1 vf0 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) (.svf (&-> sv-160 quad) vf1) @@ -1457,10 +868,7 @@ (let ((f0-17 (vector-dot s2-0 (-> arg0 vector 1)))) (when (and (< f28-1 0.0) (< f0-17 (- f28-1))) (vector--float*! s2-0 s2-0 (-> arg0 vector 1) (* 2.0 f0-17)) - (set! f30-0 (vector-dot s2-0 s3-0)) - ) - ) - ) + (set! f30-0 (vector-dot s2-0 s3-0))))) (vector-! s3-0 (-> *camera* tpos-curr) (-> *camera* pitch-off)) (vector-! s3-0 s3-0 arg1) (vector--float*! s3-0 s3-0 (-> *camera* local-down) (-> *camera* head-offset)) @@ -1469,43 +877,16 @@ (let ((f28-2 (vector-dot s3-0 (-> arg0 vector 1)))) (let ((s0-1 s2-0)) (set! sv-176 (-> arg0 vector 1)) - (let ((f0-25 (* 0.525 (tan (* 0.5 arg2))))) - (vector-float*! s0-1 sv-176 f0-25) - ) - ) + (let ((f0-25 (* 0.525 (tan (* 0.5 arg2))))) (vector-float*! s0-1 sv-176 f0-25))) (vector+! s2-0 s2-0 (-> arg0 vector 2)) (vector-normalize! s2-0 1.0) (let ((f0-27 (vector-dot s2-0 (-> arg0 vector 1)))) (cond - ((and (< 0.0 f28-2) (< f0-27 f28-2)) - (set! f30-0 (vector-dot s2-0 s3-0)) - (set! s4-0 #f) - ) - ((< f30-0 0.0) - (let ((f0-32 (- (vector-dot s2-0 s3-0)))) - (if (< f0-32 f30-0) - (set! f30-0 f0-32) - ) - ) - ) - ) - ) - ) - (let ((f0-34 (if s4-0 - (- (acos f30-0)) - (acos f30-0) - ) - ) - ) - (matrix-axis-angle! s5-0 (the-as vector (-> arg0 vector)) f0-34) - ) - ) - ) - (vector-matrix*! (-> arg0 vector 2) (-> arg0 vector 2) s5-0) - ) - (vector-cross! (-> arg0 vector 1) (-> arg0 vector 2) (the-as vector (-> arg0 vector))) - ) - ) + ((and (< 0.0 f28-2) (< f0-27 f28-2)) (set! f30-0 (vector-dot s2-0 s3-0)) (set! s4-0 #f)) + ((< f30-0 0.0) (let ((f0-32 (- (vector-dot s2-0 s3-0)))) (if (< f0-32 f30-0) (set! f30-0 f0-32))))))) + (let ((f0-34 (if s4-0 (- (acos f30-0)) (acos f30-0)))) (matrix-axis-angle! s5-0 (the-as vector (-> arg0 vector)) f0-34)))) + (vector-matrix*! (-> arg0 vector 2) (-> arg0 vector 2) s5-0)) + (vector-cross! (-> arg0 vector 1) (-> arg0 vector 2) (the-as vector (-> arg0 vector))))) ;; ERROR: Unsupported inline assembly instruction kind - [mula.s f0, f3] ;; ERROR: Unsupported inline assembly instruction kind - [madda.s f1, f4] @@ -1517,17 +898,14 @@ (sv-208 vector) (sv-224 matrix) (sv-240 (function matrix vector float vector)) - (sv-256 matrix) - ) + (sv-256 matrix)) (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (let ((s1-0 (new-stack-vector0)) - (s5-0 (new-stack-matrix0)) - ) + (s5-0 (new-stack-matrix0))) (let ((f30-0 (-> arg0 tilt-adjust value))) (cond ((< 0.0001 (-> arg0 point-of-interest-blend value)) @@ -1538,21 +916,12 @@ (vector-! sv-192 (-> arg0 point-of-interest) arg1) (vector-normalize! sv-192 (* f28-0 (-> arg0 point-of-interest-blend value))) (let ((v1-3 s1-0)) - (let ((a0-5 s1-0)) - (.mov.vf vf6 vf0 :mask #b1000) - (.lvf vf4 (&-> a0-5 quad)) - ) + (let ((a0-5 s1-0)) (.mov.vf vf6 vf0 :mask #b1000) (.lvf vf4 (&-> a0-5 quad))) (.lvf vf5 (&-> sv-192 quad)) (.add.vf vf6 vf4 vf5 :mask #b111) - (.svf (&-> v1-3 quad) vf6) - ) - (vector-normalize! s1-0 f28-0) - ) - ) - (else - (vector-! s1-0 (-> arg0 follow-pt) arg1) - ) - ) + (.svf (&-> v1-3 quad) vf6)) + (vector-normalize! s1-0 f28-0))) + (else (vector-! s1-0 (-> arg0 follow-pt) arg1))) (forward-down->inv-matrix s5-0 s1-0 (-> *camera* local-down)) (when (!= f30-0 0.0) 0.0 @@ -1566,91 +935,56 @@ (f2-0 (-> sv-208 z)) (f3-0 (-> v1-11 x)) (f4-0 (-> v1-11 y)) - (f5-0 (-> v1-11 z)) - ) + (f5-0 (-> v1-11 z))) ;; og:preserve-this inlined vector-dot ; (.mula.s f0-7 f3-0) ; (.madda.s f1-1 f4-0) ; (.madd.s f0-8 f2-0 f5-0) - (set! f0-8 (+ (* f0-7 f3-0) (* f1-1 f4-0) (* f2-0 f5-0))) - ) + (set! f0-8 (+ (* f0-7 f3-0) (* f1-1 f4-0) (* f2-0 f5-0)))) (let* ((f28-1 f0-8) - (f0-10 (acos (fabs f28-1))) - ) + (f0-10 (acos (fabs f28-1)))) (cond ((< 0.0 f30-0) - (set! f30-0 (if (< 0.0 f28-1) - (fmin f30-0 (fmax 0.0 (+ -2730.6667 f0-10))) - (fmin f30-0 (fmax 0.0 (- 32768.0 (+ 2730.6667 f0-10)))) - ) - ) - ) + (set! f30-0 + (if (< 0.0 f28-1) (fmin f30-0 (fmax 0.0 (+ -2730.6667 f0-10))) (fmin f30-0 (fmax 0.0 (- 32768.0 (+ 2730.6667 f0-10))))))) ((< f30-0 0.0) - (set! f30-0 (if (< 0.0 f28-1) - (fmax f30-0 (- (fmax 0.0 (- 32768.0 (+ 2730.6667 f0-10))))) - (fmax f30-0 (- (fmax 0.0 (+ -2730.6667 f0-10)))) - ) - ) - ) - ) - ) + (set! f30-0 + (if (< 0.0 f28-1) + (fmax f30-0 (- (fmax 0.0 (- 32768.0 (+ 2730.6667 f0-10))))) + (fmax f30-0 (- (fmax 0.0 (+ -2730.6667 f0-10))))))))) (matrix-rotate-x! sv-224 f30-0) (let ((t9-7 matrix*!) (a0-16 s5-0) - (a2-3 s5-0) - ) - (t9-7 a0-16 sv-224 a2-3) - ) - ) - ) + (a2-3 s5-0)) + (t9-7 a0-16 sv-224 a2-3)))) (if (and (= (-> *camera* under-water) 2) *target* (!= (-> *target* next-state name) 'target-swim-up)) - (set! (-> arg0 underwater-blend target) 1.0) - (set! (-> arg0 underwater-blend target) 0.0) - ) + (set! (-> arg0 underwater-blend target) 1.0) + (set! (-> arg0 underwater-blend target) 0.0)) (set! sv-240 vector-into-frustum-nosmooth!) (set! sv-256 s5-0) - (let ((a2-5 (lerp-clamp arg3 (* 0.25 arg3) (-> arg0 underwater-blend value)))) - (sv-240 sv-256 arg1 a2-5) - ) + (let ((a2-5 (lerp-clamp arg3 (* 0.25 arg3) (-> arg0 underwater-blend value)))) (sv-240 sv-256 arg1 a2-5)) (cond - (arg4 - (slave-matrix-blend-2 (-> arg0 inv-mat) arg2 s1-0 s5-0) - ) + (arg4 (slave-matrix-blend-2 (-> arg0 inv-mat) arg2 s1-0 s5-0)) (else - (let* ((v1-31 (-> arg0 inv-mat)) - (a3-2 s5-0) - (a0-22 (-> a3-2 vector 0 quad)) - (a1-16 (-> a3-2 vector 1 quad)) - (a2-7 (-> a3-2 vector 2 quad)) - (a3-3 (-> a3-2 vector 3 quad)) - ) - (set! (-> v1-31 vector 0 quad) a0-22) - (set! (-> v1-31 vector 1 quad) a1-16) - (set! (-> v1-31 vector 2 quad) a2-7) - (set! (-> v1-31 vector 3 quad) a3-3) - ) - ) - ) - ) + (let* ((v1-31 (-> arg0 inv-mat)) + (a3-2 s5-0) + (a0-22 (-> a3-2 vector 0 quad)) + (a1-16 (-> a3-2 vector 1 quad)) + (a2-7 (-> a3-2 vector 2 quad)) + (a3-3 (-> a3-2 vector 3 quad))) + (set! (-> v1-31 vector 0 quad) a0-22) + (set! (-> v1-31 vector 1 quad) a1-16) + (set! (-> v1-31 vector 2 quad) a2-7) + (set! (-> v1-31 vector 3 quad) a3-3))))) (mat-remove-z-rot (-> arg0 inv-mat) (-> *camera* local-down)) 0 - (none) - ) - ) + (none))) ;; ERROR: Unsupported inline assembly instruction kind - [mula.s f0, f3] ;; ERROR: Unsupported inline assembly instruction kind - [madda.s f1, f4] ;; ERROR: Unsupported inline assembly instruction kind - [madd.s f0, f2, f5] (defun v-slrp2! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float) (arg4 vector) (arg5 float)) - (local-vars - (f0-10 float) - (f28-0 float) - (f30-0 float) - (sv-144 float) - (sv-160 vector) - (sv-176 matrix) - (sv-192 vector) - ) + (local-vars (f0-10 float) (f28-0 float) (f30-0 float) (sv-144 float) (sv-160 vector) (sv-176 matrix) (sv-192 vector)) (set! sv-144 arg5) (let ((s0-0 (new-stack-vector0))) (set! sv-160 (new 'stack-no-clear 'vector)) @@ -1666,35 +1000,24 @@ (set! (-> sv-176 vector 2 quad) (the-as uint128 0)) (set! (-> sv-176 vector 3 quad) (the-as uint128 0)) (cond - ((< 1.0 arg3) - (set! arg3 1.0) - ) - ((< arg3 0.0) - (set! arg3 0.0) - ) - ) + ((< 1.0 arg3) (set! arg3 1.0)) + ((< arg3 0.0) (set! arg3 0.0))) (cond (arg4 - (vector-flatten! s0-0 arg1 arg4) - (vector-flatten! sv-160 arg2 arg4) - (set! f30-0 (vector-normalize-ret-len! s0-0 1.0)) - (set! f28-0 (vector-normalize-ret-len! sv-160 1.0)) - (vector-normalize! (vector-cross! s3-0 sv-160 s0-0) 1.0) - (let ((f26-0 (vector-dot arg4 s3-0))) - (vector-normalize-copy! s3-0 arg4 1.0) - (if (< f26-0 0.0) - (vector-negate! s3-0 s3-0) - ) - ) - ) + (vector-flatten! s0-0 arg1 arg4) + (vector-flatten! sv-160 arg2 arg4) + (set! f30-0 (vector-normalize-ret-len! s0-0 1.0)) + (set! f28-0 (vector-normalize-ret-len! sv-160 1.0)) + (vector-normalize! (vector-cross! s3-0 sv-160 s0-0) 1.0) + (let ((f26-0 (vector-dot arg4 s3-0))) + (vector-normalize-copy! s3-0 arg4 1.0) + (if (< f26-0 0.0) (vector-negate! s3-0 s3-0)))) (else - (set! (-> s0-0 quad) (-> arg1 quad)) - (set! (-> sv-160 quad) (-> arg2 quad)) - (set! f30-0 (vector-normalize-ret-len! s0-0 1.0)) - (set! f28-0 (vector-normalize-ret-len! sv-160 1.0)) - (vector-normalize! (vector-cross! s3-0 arg2 arg1) 1.0) - ) - ) + (set! (-> s0-0 quad) (-> arg1 quad)) + (set! (-> sv-160 quad) (-> arg2 quad)) + (set! f30-0 (vector-normalize-ret-len! s0-0 1.0)) + (set! f28-0 (vector-normalize-ret-len! sv-160 1.0)) + (vector-normalize! (vector-cross! s3-0 arg2 arg1) 1.0))) (let ((t9-10 acos)) (let* ((v1-18 s0-0) (f0-9 (-> v1-18 x)) @@ -1702,47 +1025,30 @@ (f2-0 (-> v1-18 z)) (f3-0 (-> sv-160 x)) (f4-0 (-> sv-160 y)) - (f5-0 (-> sv-160 z)) - ) + (f5-0 (-> sv-160 z))) ;; og:preserve-this inlined vector-dot ; (.mula.s f0-9 f3-0) ; (.madda.s f1-2 f4-0) ; (.madd.s f0-10 f2-0 f5-0) - (set! f0-10 (+ (* f2-0 f5-0) (* f1-2 f4-0) (* f0-9 f3-0))) - ) + (set! f0-10 (+ (* f2-0 f5-0) (* f1-2 f4-0) (* f0-9 f3-0)))) (let* ((f1-3 (t9-10 f0-10)) - (f0-12 (* arg3 f1-3)) - ) + (f0-12 (* arg3 f1-3))) (when (< sv-144 f0-12) (set! f0-12 sv-144) - (set! arg3 (/ sv-144 f1-3)) - ) + (set! arg3 (/ sv-144 f1-3))) (let* ((f0-13 (cos f0-12)) (t9-12 matrix-axis-sin-cos!) (a0-20 sv-176) (a1-13 s3-0) (f1-5 1.0) - (f2-3 f0-13) - ) - (t9-12 a0-20 a1-13 (sqrtf (- f1-5 (* f2-3 f2-3))) f0-13) - ) - ) - ) + (f2-3 f0-13)) + (t9-12 a0-20 a1-13 (sqrtf (- f1-5 (* f2-3 f2-3))) f0-13)))) (vector-matrix*! arg0 s0-0 sv-176) - (let ((s0-1 vector-normalize!)) - (set! sv-192 arg0) - (let ((a1-16 (lerp f30-0 f28-0 arg3))) - (s0-1 sv-192 a1-16) - ) - ) + (let ((s0-1 vector-normalize!)) (set! sv-192 arg0) (let ((a1-16 (lerp f30-0 f28-0 arg3))) (s0-1 sv-192 a1-16))) (when arg4 (vector+float*! arg0 arg0 s3-0 (vector-dot arg1 s3-0)) - (vector+float*! arg0 arg0 s3-0 (* arg3 (vector-dot (vector-! (new-stack-vector0) arg2 arg1) s3-0))) - ) - ) - ) - arg0 - ) + (vector+float*! arg0 arg0 s3-0 (* arg3 (vector-dot (vector-! (new-stack-vector0) arg2 arg1) s3-0)))))) + arg0) ;; ERROR: Unsupported inline assembly instruction kind - [mula.s f0, f3] ;; ERROR: Unsupported inline assembly instruction kind - [madda.s f1, f4] @@ -1756,32 +1062,25 @@ 0.0 0.0 (let ((s3-0 (new-stack-vector0)) - (f30-0 1.0) - ) + (f30-0 1.0)) 0.0 (let ((s0-0 (new-stack-matrix0))) (cond (arg3 - (vector-flatten! s1-0 arg1 arg3) - (vector-flatten! sv-160 arg2 arg3) - (set! f28-0 (vector-normalize-ret-len! s1-0 1.0)) - (set! f26-0 (vector-normalize-ret-len! sv-160 1.0)) - (vector-normalize! (vector-cross! s3-0 sv-160 s1-0) 1.0) - (let ((f24-0 (vector-dot arg3 s3-0))) - (vector-normalize-copy! s3-0 arg3 1.0) - (if (< f24-0 0.0) - (vector-negate! s3-0 s3-0) - ) - ) - ) + (vector-flatten! s1-0 arg1 arg3) + (vector-flatten! sv-160 arg2 arg3) + (set! f28-0 (vector-normalize-ret-len! s1-0 1.0)) + (set! f26-0 (vector-normalize-ret-len! sv-160 1.0)) + (vector-normalize! (vector-cross! s3-0 sv-160 s1-0) 1.0) + (let ((f24-0 (vector-dot arg3 s3-0))) + (vector-normalize-copy! s3-0 arg3 1.0) + (if (< f24-0 0.0) (vector-negate! s3-0 s3-0)))) (else - (set! (-> s1-0 quad) (-> arg1 quad)) - (set! (-> sv-160 quad) (-> arg2 quad)) - (set! f28-0 (vector-normalize-ret-len! s1-0 1.0)) - (set! f26-0 (vector-normalize-ret-len! sv-160 1.0)) - (vector-normalize! (vector-cross! s3-0 arg2 arg1) 1.0) - ) - ) + (set! (-> s1-0 quad) (-> arg1 quad)) + (set! (-> sv-160 quad) (-> arg2 quad)) + (set! f28-0 (vector-normalize-ret-len! s1-0 1.0)) + (set! f26-0 (vector-normalize-ret-len! sv-160 1.0)) + (vector-normalize! (vector-cross! s3-0 arg2 arg1) 1.0))) (let ((t9-10 acos)) (let* ((v1-9 s1-0) (f0-6 (-> v1-9 x)) @@ -1789,38 +1088,26 @@ (f2-0 (-> v1-9 z)) (f3-0 (-> sv-160 x)) (f4-0 (-> sv-160 y)) - (f5-0 (-> sv-160 z)) - ) + (f5-0 (-> sv-160 z))) ;; og:preserve-this inlined vector-dot ; (.mula.s f0-6 f3-0) ; (.madda.s f1-0 f4-0) ; (.madd.s f0-7 f2-0 f5-0) - (set! f0-7 (+ (* f0-6 f3-0) (* f1-0 f4-0) (* f2-0 f5-0))) - ) + (set! f0-7 (+ (* f0-6 f3-0) (* f1-0 f4-0) (* f2-0 f5-0)))) (let ((f0-8 (t9-10 f0-7))) (when (< sv-144 f0-8) (set! f30-0 (/ sv-144 f0-8)) - (set! f0-8 sv-144) - ) + (set! f0-8 sv-144)) (let* ((f0-9 (cos f0-8)) (t9-12 matrix-axis-sin-cos!) (a0-20 s0-0) (a1-13 s3-0) (f1-3 1.0) - (f2-1 f0-9) - ) - (t9-12 a0-20 a1-13 (sqrtf (- f1-3 (* f2-1 f2-1))) f0-9) - ) - ) - ) - (vector-matrix*! arg0 s1-0 s0-0) - ) + (f2-1 f0-9)) + (t9-12 a0-20 a1-13 (sqrtf (- f1-3 (* f2-1 f2-1))) f0-9)))) + (vector-matrix*! arg0 s1-0 s0-0)) (vector-normalize! arg0 (lerp f28-0 f26-0 f30-0)) (when arg3 (vector+float*! arg0 arg0 s3-0 (vector-dot arg1 s3-0)) - (vector+float*! arg0 arg0 s3-0 (* f30-0 (vector-dot (vector-! (new-stack-vector0) arg2 arg1) s3-0))) - ) - ) - ) - arg0 - ) + (vector+float*! arg0 arg0 s3-0 (* f30-0 (vector-dot (vector-! (new-stack-vector0) arg2 arg1) s3-0)))))) + arg0) diff --git a/goal_src/jak1/engine/camera/pov-camera-h.gc b/goal_src/jak1/engine/camera/pov-camera-h.gc index 62e01fa949..64cb6b2446 100644 --- a/goal_src/jak1/engine/camera/pov-camera-h.gc +++ b/goal_src/jak1/engine/camera/pov-camera-h.gc @@ -1,23 +1,18 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/game-h.gc") - -;; name: pov-camera-h.gc -;; name in dgo: pov-camera-h -;; dgos: GAME, ENGINE - (defenum pov-camera-flag :bitfield #t :type int32 (notify-of-abort 0) (allow-abort 1) - (inherit-orientation 2) - ) + (inherit-orientation 2)) (declare-type pov-camera process-drawable) -(define-extern pov-camera-init-by-other (function vector skeleton-group string pov-camera-flag process-drawable pair none :behavior pov-camera)) ;; TODO - not confirmed -- sunken-elevator + +(define-extern pov-camera-init-by-other + (function vector skeleton-group string pov-camera-flag process-drawable pair none :behavior pov-camera)) ;; TODO - not confirmed -- sunken-elevator ;; DECOMP BEGINS @@ -25,28 +20,24 @@ ;; for example, the introduction to orbs in geyser, or the camera that shows you where the steps to fire canyon ;; are. (deftype pov-camera (process-drawable) - ((cspace-array cspace-array :overlay-at root) - (flags pov-camera-flag) - (debounce-start-time time-frame) - (notify-handle handle) - (anim-name string) - (command-list pair) - (mask-to-clear process-mask) - (music-volume-movie float) - (sfx-volume-movie float) - ) + ((cspace-array cspace-array :overlay-at root) + (flags pov-camera-flag) + (debounce-start-time time-frame) + (notify-handle handle) + (anim-name string) + (command-list pair) + (mask-to-clear process-mask) + (music-volume-movie float) + (sfx-volume-movie float)) (:state-methods - pov-camera-abort - pov-camera-done-playing - pov-camera-playing - pov-camera-start-playing - pov-camera-startup - ) + pov-camera-abort + pov-camera-done-playing + pov-camera-playing + pov-camera-start-playing + pov-camera-startup) (:methods - (check-for-abort (_type_) symbol) - (target-grabbed? (_type_) symbol) - (pre-startup-callback (_type_) none) - (target-released? (_type_) symbol) - (set-stack-size! (_type_) none) - ) - ) + (check-for-abort (_type_) symbol) + (target-grabbed? (_type_) symbol) + (pre-startup-callback (_type_) none) + (target-released? (_type_) symbol) + (set-stack-size! (_type_) none))) diff --git a/goal_src/jak1/engine/camera/pov-camera.gc b/goal_src/jak1/engine/camera/pov-camera.gc index e6b2b78165..790475d1b5 100644 --- a/goal_src/jak1/engine/camera/pov-camera.gc +++ b/goal_src/jak1/engine/camera/pov-camera.gc @@ -1,64 +1,44 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/pov-camera-h.gc") (require "engine/common-obs/water.gc") -;; name: pov-camera.gc -;; name in dgo: pov-camera -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod check-for-abort ((this pov-camera)) (when (or (and (time-elapsed? (-> this debounce-start-time) (seconds 0.2)) (cpad-pressed? 0 triangle)) - (logtest? (-> this flags) (pov-camera-flag allow-abort)) - ) + (logtest? (-> this flags) (pov-camera-flag allow-abort))) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) (when (logtest? (-> this flags) (pov-camera-flag notify-of-abort)) (send-event (handle->process (-> this notify-handle)) 'notify 'abort-request) - #t - ) - ) - ) + #t))) (defmethod target-grabbed? ((this pov-camera)) - (or (not *target*) (process-grab? *target*)) - ) + (or (not *target*) (process-grab? *target*))) (defmethod target-released? ((this pov-camera)) - (or (not *target*) (process-release? *target*)) - ) + (or (not *target*) (process-release? *target*))) (defstate pov-camera-startup (pov-camera) :virtual #t - :code (behavior () - (go-virtual pov-camera-start-playing) - ) - ) + :code + (behavior () + (go-virtual pov-camera-start-playing))) (defstate pov-camera-start-playing (pov-camera) :virtual #t - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (while (not (target-grabbed? self)) - (suspend) - ) - (let ((gp-0 0)) - (let ((v1-7 (lookup-art (-> self draw jgeo) "camera" (the-as type #f)))) - (if v1-7 - (set! gp-0 (+ (-> v1-7 number) 1)) - ) - ) - (let ((v1-10 (process-spawn othercam self gp-0 #t #t :to self))) - (send-event (ppointer->process v1-10) 'mask (-> self mask-to-clear)) - ) - ) - (go-virtual pov-camera-playing) - ) - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (while (not (target-grabbed? self)) + (suspend)) + (let ((gp-0 0)) + (let ((v1-7 (lookup-art (-> self draw jgeo) "camera" (the-as type #f)))) (if v1-7 (set! gp-0 (+ (-> v1-7 number) 1)))) + (let ((v1-10 (process-spawn othercam self gp-0 #t #t :to self))) + (send-event (ppointer->process v1-10) 'mask (-> self mask-to-clear)))) + (go-virtual pov-camera-playing))) (defbehavior pov-camera-play-and-reposition pov-camera ((arg0 art-joint-anim) (arg1 vector) (arg2 float)) (let ((s4-0 #f)) @@ -67,110 +47,82 @@ (let ((v1-4 (and (not s4-0) (< (the float (+ (-> (ja-group) data 0 length) -4)) (ja-frame-num 0))))) (when v1-4 (set! s4-0 #t) - (send-event *camera* 'teleport-to-vector-start-string arg1) - ) - ) + (send-event *camera* 'teleport-to-vector-start-string arg1))) (suspend) - (ja :num! (seek! max arg2)) - ) - ) + (ja :num! (seek! max arg2)))) 0 - (none) - ) + (none)) (defstate pov-camera-playing (pov-camera) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('abort) - (when (logtest? (-> self flags) (pov-camera-flag notify-of-abort)) - (logior! (-> self flags) (pov-camera-flag allow-abort)) - (if (= (-> self anim-name type) string) - (go-virtual pov-camera-abort) - ) - ) - ) - ) - ) - :enter (behavior () - (set-time! (-> self debounce-start-time)) - (if (= (-> self anim-name type) string) - (backup-load-state-and-set-cmds *load-state* (-> self command-list)) - ) - ) - :exit (behavior () - (if (= (-> self anim-name type) string) - (restore-load-state-and-cleanup *load-state*) - ) - (remove-setting! 'music-volume) - (remove-setting! 'sfx-volume) - ) - :code (behavior () - (add-setting! 'music-volume 'rel (-> self music-volume-movie) 0) - (add-setting! 'sfx-volume 'rel (-> self sfx-volume-movie) 0) - (cond - ((= (-> self anim-name type) string) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (check-for-abort self) - (suspend) - (ja :num! (seek!)) - ) - ) - ((= (-> self anim-name type) spool-anim) - (ja-play-spooled-anim - (the-as spool-anim (-> self anim-name)) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (method-of-object self check-for-abort) - ) - ) - ) - (go-virtual pov-camera-done-playing) - ) - :post (behavior () - (if (= (-> self anim-name type) string) - (execute-commands-up-to *load-state* (ja-aframe-num 0)) - ) - (ja-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('abort) + (when (logtest? (-> self flags) (pov-camera-flag notify-of-abort)) + (logior! (-> self flags) (pov-camera-flag allow-abort)) + (if (= (-> self anim-name type) string) (go-virtual pov-camera-abort)))))) + :enter + (behavior () + (set-time! (-> self debounce-start-time)) + (if (= (-> self anim-name type) string) (backup-load-state-and-set-cmds *load-state* (-> self command-list)))) + :exit + (behavior () + (if (= (-> self anim-name type) string) (restore-load-state-and-cleanup *load-state*)) + (remove-setting! 'music-volume) + (remove-setting! 'sfx-volume)) + :code + (behavior () + (add-setting! 'music-volume 'rel (-> self music-volume-movie) 0) + (add-setting! 'sfx-volume 'rel (-> self sfx-volume-movie) 0) + (cond + ((= (-> self anim-name type) string) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (check-for-abort self) + (suspend) + (ja :num! (seek!)))) + ((= (-> self anim-name type) spool-anim) + (ja-play-spooled-anim (the-as spool-anim (-> self anim-name)) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (method-of-object self check-for-abort)))) + (go-virtual pov-camera-done-playing)) + :post + (behavior () + (if (= (-> self anim-name type) string) (execute-commands-up-to *load-state* (ja-aframe-num 0))) + (ja-post))) (defstate pov-camera-abort (pov-camera) :virtual #t - :enter (behavior () - (logior! (-> self flags) (pov-camera-flag allow-abort)) - ) - :code (behavior () - (set-blackout-frames (seconds 0.035)) - (suspend) - (suspend) - (go-virtual pov-camera-done-playing) - ) - ) + :enter + (behavior () + (logior! (-> self flags) (pov-camera-flag allow-abort))) + :code + (behavior () + (set-blackout-frames (seconds 0.035)) + (suspend) + (suspend) + (go-virtual pov-camera-done-playing))) (defstate pov-camera-done-playing (pov-camera) :virtual #t - :code (behavior () - (while (not (target-released? self)) + :code + (behavior () + (while (not (target-released? self)) + (suspend)) + (send-event (handle->process (-> self notify-handle)) 'notify 'die) + (suspend) (suspend) - ) - (send-event (handle->process (-> self notify-handle)) 'notify 'die) - (suspend) - (suspend) - (cleanup-for-death self) - (deactivate self) - ) - ) + (cleanup-for-death self) + (deactivate self))) (defmethod pre-startup-callback ((this pov-camera)) 0 - (none) - ) + (none)) (defmethod set-stack-size! ((this pov-camera)) - (none) - ) + (none)) (defbehavior pov-camera-init-by-other pov-camera ((arg0 vector) (arg1 skeleton-group) (arg2 string) (arg3 pov-camera-flag) (arg4 process-drawable) (arg5 pair)) (set-stack-size! self) @@ -179,23 +131,14 @@ (set! (-> self command-list) arg5) (set! (-> self music-volume-movie) 100.0) (set! (-> self sfx-volume-movie) 100.0) - (if arg4 - (set! (-> self notify-handle) (process->handle arg4)) - (set! (-> self notify-handle) (the-as handle #f)) - ) + (if arg4 (set! (-> self notify-handle) (process->handle arg4)) (set! (-> self notify-handle) (the-as handle #f))) (set-time! (-> self debounce-start-time)) (logclear! (-> self mask) (process-mask actor-pause movie enemy platform projectile)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> arg0 quad)) (when (logtest? (-> self flags) (pov-camera-flag inherit-orientation)) - (let ((v1-20 (if (and (nonzero? arg4) (type-type? (-> arg4 type) process-drawable)) - arg4 - ) - ) - ) - (quaternion-copy! (-> self root quat) (-> v1-20 root quat)) - ) - ) + (let ((v1-20 (if (and (nonzero? arg4) (type-type? (-> arg4 type) process-drawable)) arg4))) + (quaternion-copy! (-> self root quat) (-> v1-20 root quat)))) (initialize-skeleton self arg1 '()) (logior! (-> self draw status) (draw-status skip-bones)) (logior! (-> self skel status) (janim-status inited)) @@ -204,36 +147,17 @@ ((= (-> arg2 type) string) (logior! (-> self skel status) (janim-status spool)) (let ((s5-1 (lookup-art (-> self draw art-group) arg2 art-joint-anim))) - (if (not s5-1) - (go process-drawable-art-error arg2) - ) + (if (not s5-1) (go process-drawable-art-error arg2)) (ja-channel-set! 1) - (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim s5-1)) - ) - ) - ((= (-> arg2 type) spool-anim) - ) - ) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim s5-1)))) + ((= (-> arg2 type) spool-anim))) (set! (-> self mask-to-clear) (process-mask movie enemy platform projectile)) - (set! (-> self event-hook) (lambda :behavior pov-camera - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('mask) - (let ((v0-0 (the-as number (-> arg3 param 0)))) - (set! (-> self mask-to-clear) (the-as process-mask v0-0)) - v0-0 - ) - ) - (('music-movie-volume) - (set! (-> self music-volume-movie) (the-as float (-> arg3 param 0))) - ) - (('sfx-movie-volume) - (set! (-> self sfx-volume-movie) (the-as float (-> arg3 param 0))) - ) - ) - ) - ) + (set! (-> self event-hook) + (lambda :behavior pov-camera ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('mask) (let ((v0-0 (the-as number (-> arg3 param 0)))) (set! (-> self mask-to-clear) (the-as process-mask v0-0)) v0-0)) + (('music-movie-volume) (set! (-> self music-volume-movie) (the-as float (-> arg3 param 0)))) + (('sfx-movie-volume) (set! (-> self sfx-volume-movie) (the-as float (-> arg3 param 0))))))) (pre-startup-callback self) (go-virtual pov-camera-startup) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/collide/collide-cache-h.gc b/goal_src/jak1/engine/collide/collide-cache-h.gc index 22a7f387e0..33b5f162bd 100644 --- a/goal_src/jak1/engine/collide/collide-cache-h.gc +++ b/goal_src/jak1/engine/collide/collide-cache-h.gc @@ -1,15 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") - -;; name: collide-cache-h.gc -;; name in dgo: collide-cache-h -;; dgos: GAME, ENGINE - (define-extern collide-cache-using-line-sphere-test (function vector symbol)) + (define-extern collide-cache-using-y-probe-test (function vector symbol)) + (define-extern collide-cache-using-box-test (function vector symbol)) ;; DECOMP BEGINS @@ -19,45 +15,35 @@ ;;;;;;;;;;;;;;;;;;;;;;; (deftype collide-using-spheres-params (structure) - ((spheres (inline-array sphere)) - (num-spheres uint32) - (collide-with collide-kind) - (proc process-drawable) - (ignore-pat pat-surface) - (solid-only basic) - ) - ) + ((spheres (inline-array sphere)) + (num-spheres uint32) + (collide-with collide-kind) + (proc process-drawable) + (ignore-pat pat-surface) + (solid-only basic))) ;; primitive using sphere-sphere (deftype collide-puss-sphere (structure) - ((bsphere sphere :inline) - (bbox4w bounding-box4w :inline) - ) - ) - + ((bsphere sphere :inline) + (bbox4w bounding-box4w :inline))) (deftype collide-puss-work (structure) - ((closest-pt vector :inline) - (tri-normal vector :inline) - (tri-bbox4w bounding-box4w :inline) - (spheres-bbox4w bounding-box4w :inline) - (spheres collide-puss-sphere 64 :inline) - ) + ((closest-pt vector :inline) + (tri-normal vector :inline) + (tri-bbox4w bounding-box4w :inline) + (spheres-bbox4w bounding-box4w :inline) + (spheres collide-puss-sphere 64 :inline)) (:methods - (collide-puss-work-method-9 (_type_ object object) symbol) - (collide-puss-work-method-10 (_type_ object object) symbol) - ) - ) + (collide-puss-work-method-9 (_type_ object object) symbol) + (collide-puss-work-method-10 (_type_ object object) symbol))) ;; primitive using y probe (deftype collide-puyp-work (structure) - ((best-u float) - (ignore-pat pat-surface) - (tri-out collide-tri-result) - (start-pos vector :inline) - (move-dist vector :inline) - ) - ) + ((best-u float) + (ignore-pat pat-surface) + (tri-out collide-tri-result) + (start-pos vector :inline) + (move-dist vector :inline))) ;;;;;;;;;;;;;;;;;;;;;;; ;; Main Cache Types @@ -66,105 +52,88 @@ ;; The triangles stored in the cache. ;; This is a common return type of collision queries. (deftype collide-cache-tri (structure) - ((vertex vector 3 :inline) ;; actual locations - (extra-quad uint128 :offset 48) - (pat pat-surface :overlay-at extra-quad) ; metadata about the surface of this tri - (prim-index uint16 :offset 52) ; in the collide-cache-prim list - (user16 uint16 :offset 54) - (user32 uint32 2 :offset 56) - ) - ) + ((vertex vector 3 :inline) ;; actual locations + (extra-quad uint128 :offset 48) + (pat pat-surface :overlay-at extra-quad) ; metadata about the surface of this tri + (prim-index uint16 :offset 52) ; in the collide-cache-prim list + (user16 uint16 :offset 54) + (user32 uint32 2 :offset 56))) ;; The primitives stored in the cache. ;; The "core" is extracted from the normal collide-shape-prim and placed inline here. (deftype collide-cache-prim (structure) - ((prim-core collide-prim-core :inline) - (extra-quad uint128) - (ccache collide-cache :overlay-at extra-quad) - (prim collide-shape-prim :offset 36) - (first-tri uint16 :offset 40) - (num-tris uint16 :offset 42) - (unused uint8 4 :offset 44) - (world-sphere vector :inline :overlay-at (-> prim-core world-sphere)) - (collide-as collide-kind :overlay-at (-> prim-core collide-as)) - (action collide-action :overlay-at (-> prim-core action)) - (offense collide-offense :overlay-at (-> prim-core offense)) - (prim-type int8 :overlay-at (-> prim-core prim-type)) - ) + ((prim-core collide-prim-core :inline) + (extra-quad uint128) + (ccache collide-cache :overlay-at extra-quad) + (prim collide-shape-prim :offset 36) + (first-tri uint16 :offset 40) + (num-tris uint16 :offset 42) + (unused uint8 4 :offset 44) + (world-sphere vector :inline :overlay-at (-> prim-core world-sphere)) + (collide-as collide-kind :overlay-at (-> prim-core collide-as)) + (action collide-action :overlay-at (-> prim-core action)) + (offense collide-offense :overlay-at (-> prim-core offense)) + (prim-type int8 :overlay-at (-> prim-core prim-type))) (:methods - (resolve-moving-sphere-tri (_type_ collide-tri-result collide-prim-core vector float collide-action) float) - (resolve-moving-sphere-sphere (_type_ collide-tri-result collide-prim-core vector float collide-action) float) - ) - ) + (resolve-moving-sphere-tri (_type_ collide-tri-result collide-prim-core vector float collide-action) float) + (resolve-moving-sphere-sphere (_type_ collide-tri-result collide-prim-core vector float collide-action) float))) ;; The actual cache! (deftype collide-cache (basic) - ((num-tris int32) - (num-prims int32) - (num-prims-u uint32 :overlay-at num-prims) - (ignore-mask pat-surface) - (proc process-drawable) - (collide-box bounding-box :inline) - (collide-box4w bounding-box4w :inline) - (collide-with collide-kind) - (prims collide-cache-prim 100 :inline) - (tris collide-cache-tri 461 :inline) - ) + ((num-tris int32) + (num-prims int32) + (num-prims-u uint32 :overlay-at num-prims) + (ignore-mask pat-surface) + (proc process-drawable) + (collide-box bounding-box :inline) + (collide-box4w bounding-box4w :inline) + (collide-with collide-kind) + (prims collide-cache-prim 100 :inline) + (tris collide-cache-tri 461 :inline)) (:methods - (debug-draw (_type_) none) - (fill-and-probe-using-line-sphere (_type_ vector vector float collide-kind process collide-tri-result pat-surface) float) - (fill-and-probe-using-spheres (_type_ collide-using-spheres-params) symbol) - (fill-and-probe-using-y-probe (_type_ vector float collide-kind process-drawable collide-tri-result pat-surface) float) - (fill-using-bounding-box (_type_ bounding-box collide-kind process-drawable pat-surface) none) - (fill-using-line-sphere (_type_ vector vector float collide-kind process-drawable pat-surface) none) - (fill-using-spheres (_type_ collide-using-spheres-params) none) - (fill-using-y-probe (_type_ vector float collide-kind process-drawable pat-surface) none) - (initialize (_type_) none) - (probe-using-line-sphere (_type_ vector vector float collide-kind collide-tri-result pat-surface) float) - (probe-using-spheres (_type_ collide-using-spheres-params) symbol) - (probe-using-y-probe (_type_ vector float collide-kind collide-tri-result pat-surface) float) - (fill-from-background (_type_ (function bsp-header int collide-list none) (function collide-cache object none)) none) - (fill-from-foreground-using-box (_type_) none) - (fill-from-foreground-using-line-sphere (_type_) none) - (fill-from-foreground-using-y-probe (_type_) none) - (fill-from-water (_type_ water-control) none) - (load-mesh-from-spad-in-box (_type_ collide-frag-mesh) none) - (collide-cache-method-27 (_type_) none) - (collide-cache-method-28 (_type_) none) - (collide-cache-method-29 (_type_ collide-frag-mesh) none) - (puyp-mesh (_type_ collide-puyp-work collide-cache-prim) none) - (puyp-sphere (_type_ collide-puyp-work collide-cache-prim) vector) - (unpack-background-collide-mesh (_type_ object object object) none) - ) - ) - + (debug-draw (_type_) none) + (fill-and-probe-using-line-sphere (_type_ vector vector float collide-kind process collide-tri-result pat-surface) float) + (fill-and-probe-using-spheres (_type_ collide-using-spheres-params) symbol) + (fill-and-probe-using-y-probe (_type_ vector float collide-kind process-drawable collide-tri-result pat-surface) float) + (fill-using-bounding-box (_type_ bounding-box collide-kind process-drawable pat-surface) none) + (fill-using-line-sphere (_type_ vector vector float collide-kind process-drawable pat-surface) none) + (fill-using-spheres (_type_ collide-using-spheres-params) none) + (fill-using-y-probe (_type_ vector float collide-kind process-drawable pat-surface) none) + (initialize (_type_) none) + (probe-using-line-sphere (_type_ vector vector float collide-kind collide-tri-result pat-surface) float) + (probe-using-spheres (_type_ collide-using-spheres-params) symbol) + (probe-using-y-probe (_type_ vector float collide-kind collide-tri-result pat-surface) float) + (fill-from-background (_type_ (function bsp-header int collide-list none) (function collide-cache object none)) none) + (fill-from-foreground-using-box (_type_) none) + (fill-from-foreground-using-line-sphere (_type_) none) + (fill-from-foreground-using-y-probe (_type_) none) + (fill-from-water (_type_ water-control) none) + (load-mesh-from-spad-in-box (_type_ collide-frag-mesh) none) + (collide-cache-method-27 (_type_) none) + (collide-cache-method-28 (_type_) none) + (collide-cache-method-29 (_type_ collide-frag-mesh) none) + (puyp-mesh (_type_ collide-puyp-work collide-cache-prim) none) + (puyp-sphere (_type_ collide-puyp-work collide-cache-prim) vector) + (unpack-background-collide-mesh (_type_ object object object) none))) (deftype collide-list-item (structure) - ((mesh collide-frag-mesh) - (inst basic) - ) - ) - + ((mesh collide-frag-mesh) + (inst basic))) (deftype collide-list (structure) - ((num-items int32) - (items collide-list-item 256 :inline) - ) - ) - + ((num-items int32) + (items collide-list-item 256 :inline))) (deftype collide-work (structure) - ((collide-sphere-neg-r sphere :inline) - (collide-box4w bounding-box4w :inline) - (inv-mat matrix :inline) - ) - ) - + ((collide-sphere-neg-r sphere :inline) + (collide-box4w bounding-box4w :inline) + (inv-mat matrix :inline))) (define-perm *collide-work* collide-work (new 'global 'collide-work)) ;; og:preserve-this (defglobalconstant BIG_COLLIDE_CACHE_SIZE 5000) + (define-perm *collide-cache* collide-cache (new 'global 'collide-cache)) (#when PC_PORT @@ -173,11 +142,6 @@ ;; but start it at the default. (define *collide-cache-max-tris* 460) (defmacro activate-big-collide-cache! () - `(set! *collide-cache-max-tris* BIG_COLLIDE_CACHE_SIZE) - ) - ) - - - + `(set! *collide-cache-max-tris* BIG_COLLIDE_CACHE_SIZE))) (define-perm *collide-list* collide-list (new 'global 'collide-list)) diff --git a/goal_src/jak1/engine/collide/collide-cache.gc b/goal_src/jak1/engine/collide/collide-cache.gc index d8f72095b0..c801f4cd70 100644 --- a/goal_src/jak1/engine/collide/collide-cache.gc +++ b/goal_src/jak1/engine/collide/collide-cache.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/background/subdivide.gc") (require "engine/collide/collide-func.gc") (require "examples/debug-collide.gc") @@ -13,60 +12,39 @@ (require "engine/collide/collide-shape-h.gc") (require "engine/debug/debug.gc") -;; name: collide-cache.gc -;; name in dgo: collide-cache -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(defmethod debug-draw collide-cache ((obj collide-cache)) +(defmethod debug-draw ((obj collide-cache)) "Debug draw all the things in the collide cache!" (let ((gp-0 (the-as collide-cache-tri (-> obj tris)))) (countdown (s4-0 (-> obj num-tris)) (let ((t1-0 (copy-and-set-field (-> *pat-mode-info* (-> gp-0 pat mode) color) a 64))) - (add-debug-flat-triangle - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> gp-0 vertex)) - (-> gp-0 vertex 1) - (-> gp-0 vertex 2) - t1-0 - ) + (add-debug-flat-triangle #t + (bucket-id debug-no-zbuf) + (the-as vector (-> gp-0 vertex)) + (-> gp-0 vertex 1) + (-> gp-0 vertex 2) + t1-0) (#when PC_PORT - (add-debug-outline-triangle #t (bucket-id debug-no-zbuf) (-> gp-0 vertex 0) (-> gp-0 vertex 1) (-> gp-0 vertex 2) - (static-rgba 0 0 0 64) - ) - ) - ) - (&+! gp-0 64) - ) - ) + (add-debug-outline-triangle #t + (bucket-id debug-no-zbuf) + (-> gp-0 vertex 0) + (-> gp-0 vertex 1) + (-> gp-0 vertex 2) + (static-rgba 0 0 0 64)))) + (&+! gp-0 64))) (let ((gp-1 (the-as collide-cache-prim (-> obj prims)))) (countdown (s5-1 (-> obj num-prims)) (when (= (-> gp-1 prim-core prim-type) -1) - (let ((t0-1 - (copy-and-set-field - (-> *pat-mode-info* (-> (the-as collide-shape-prim-sphere (-> gp-1 prim)) pat mode) color) - a - 64 - ) - ) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> gp-1 prim-core)) - (-> gp-1 prim-core world-sphere w) - t0-1 - ) - ) - ) - (&+! gp-1 48) - ) - ) + (let ((t0-1 (copy-and-set-field (-> *pat-mode-info* (-> (the-as collide-shape-prim-sphere (-> gp-1 prim)) pat mode) color) a 64))) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (the-as vector (-> gp-1 prim-core)) + (-> gp-1 prim-core world-sphere w) + t0-1))) + (&+! gp-1 48))) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;; ;; Setup @@ -74,15 +52,13 @@ (define *already-printed-exeeded-max-cache-tris* #f) -(defmethod initialize collide-cache ((obj collide-cache)) +(defmethod initialize ((obj collide-cache)) "Clear the collide-cache." (set! (-> obj num-tris) 0) (set! (-> obj num-prims) 0) (set! (-> obj proc) #f) (set! *already-printed-exeeded-max-cache-tris* #f) - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Fill using Bounding Box @@ -96,36 +72,40 @@ ;; 4). We run the filter by box function to download only tris in the box into the cache. (defmethod-mips2c "(method 26 collide-cache)" 26 collide-cache) + (defmethod-mips2c "(method 27 collide-cache)" 27 collide-cache) + (defmethod-mips2c "(method 28 collide-cache)" 28 collide-cache) + (defmethod-mips2c "(method 29 collide-cache)" 29 collide-cache) + (defmethod-mips2c "(method 32 collide-cache)" 32 collide-cache) + (defmethod-mips2c "(method 12 collide-shape-prim-mesh)" 12 collide-shape-prim-mesh) + (defmethod-mips2c "(method 14 collide-shape-prim-mesh)" 14 collide-shape-prim-mesh) + (defmethod-mips2c "(method 13 collide-shape-prim-mesh)" 13 collide-shape-prim-mesh) + (defmethod-mips2c "(method 30 collide-cache)" 30 collide-cache) + (defmethod-mips2c "(method 9 collide-cache-prim)" 9 collide-cache-prim) + (defmethod-mips2c "(method 10 collide-cache-prim)" 10 collide-cache-prim) + (defmethod-mips2c "(method 9 collide-puss-work)" 9 collide-puss-work) + (defmethod-mips2c "(method 10 collide-puss-work)" 10 collide-puss-work) -(def-mips2c __pc-upload-collide-frag (function object object object none)) +(def-mips2c __pc-upload-collide-frag (function object object object none)) -(defmethod fill-from-background collide-cache ((obj collide-cache) - (bsp-find-mesh-func (function bsp-header int collide-list none)) - (import-mesh-func (function collide-cache object none)) - ) +(defmethod fill-from-background ((obj collide-cache) (bsp-find-mesh-func (function bsp-header int collide-list none)) (import-mesh-func (function collide-cache object none))) "This terrible function fills the collide cache with background tris from a bounding box." - (local-vars (a0-4 int) (a0-6 int)) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Step 1: Build Collide List ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; this is a list of fragments that we will look at. - - (set! (-> *collide-list* num-items) 0) (cond ((= bsp-find-mesh-func (method-of-type bsp-header collide-ray)) @@ -135,118 +115,71 @@ (when (= (-> a0-2 status) 'active) (reset! (-> *perf-stats* data 14)) (collide-probe-make-list a0-2 *collide-list*) - (read! (-> *perf-stats* data 14)) - ) - ) - ) - ) + (read! (-> *perf-stats* data 14)))))) (else - ;; for the othes, we don't have a fancy version, so use the versio provided by the user. - (dotimes (s3-0 (-> *level* length)) - (let ((v1-21 (-> *level* level s3-0))) - (if (= (-> v1-21 status) 'active) - (bsp-find-mesh-func (-> v1-21 bsp) 0 *collide-list*) - ) - ) - ) - ) - ) - - + ;; for the othes, we don't have a fancy version, so use the versio provided by the user. + (dotimes (s3-0 (-> *level* length)) + (let ((v1-21 (-> *level* level s3-0))) + (if (= (-> v1-21 status) 'active) (bsp-find-mesh-func (-> v1-21 bsp) 0 *collide-list*)))))) (when (> (-> *collide-list* num-items) 0) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Step 2: Upload to VU0 Data ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; in classic ND style, this is double buffered. ;; we'll undo this. (dotimes (i (-> *collide-list* num-items)) (let ((frag (-> *collide-list* items i))) - ;; to VU0 memory - (__pc-upload-collide-frag (-> frag mesh packed-data) (-> frag mesh vertex-data-qwc) (-> frag mesh vertex-count)) - ;; from VU0 memory to scratchpad - (unpack-background-collide-mesh obj (-> frag mesh) (-> frag inst) 0) - ;; from scratchpad to collide-cache memory. - (import-mesh-func obj (-> frag mesh)) - ) - ) - + ;; to VU0 memory + (__pc-upload-collide-frag (-> frag mesh packed-data) (-> frag mesh vertex-data-qwc) (-> frag mesh vertex-count)) + ;; from VU0 memory to scratchpad + (unpack-background-collide-mesh obj (-> frag mesh) (-> frag inst) 0) + ;; from scratchpad to collide-cache memory. + (import-mesh-func obj (-> frag mesh)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Fake it as a prim ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; The old system can actually read out lists of prims. ;; Note that this assumes the cache has been emptied and we're the first to fill it here. - (let ((a0-28 (-> obj num-tris))) (when (> a0-28 0) (let ((v1-55 (-> obj prims)) - (a1-17 *collide-shape-prim-backgnd*) - ) + (a1-17 *collide-shape-prim-backgnd*)) (set! (-> v1-55 0 num-tris) (the-as uint a0-28)) (set! (-> v1-55 0 prim) a1-17) (set! (-> obj num-prims) 1) (set! (-> v1-55 0 first-tri) (the-as uint 0)) (set! (-> v1-55 0 ccache) obj) (set! (-> v1-55 0 prim-core world-sphere quad) (-> a1-17 prim-core world-sphere quad)) - (set! (-> v1-55 0 prim-core quad 1) (-> a1-17 prim-core quad 1)) - ) - ) - ) - - ) + (set! (-> v1-55 0 prim-core quad 1) (-> a1-17 prim-core quad 1)))))) 0 - (none) - ) + (none)) -(defmethod fill-from-water collide-cache ((obj collide-cache) (arg0 water-control)) +(defmethod fill-from-water ((obj collide-cache) (arg0 water-control)) (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (when (= (-> obj num-prims) 100) - (if (= *cheat-mode* 'debug) - (format 0 "ERROR: Exceeded max number of collide-cache prims!~%") - ) - (return #f) - ) + (if (= *cheat-mode* 'debug) (format 0 "ERROR: Exceeded max number of collide-cache prims!~%")) + (return #f)) (when (< *collide-cache-max-tris* (+ (-> obj num-tris) 2)) (when (not *already-printed-exeeded-max-cache-tris*) (set! *already-printed-exeeded-max-cache-tris* #t) - (if (= *cheat-mode* 'debug) - (format *stdcon* "Exceeded collide cache max # of tris!~%") - ) - ) - (return #f) - ) - (if (not - (and (logtest? (-> arg0 flags) 2) (logtest? (-> arg0 flags) 144) (zero? (logand #x10000 (-> arg0 flags)))) - ) - (return #f) - ) + (if (= *cheat-mode* 'debug) (format *stdcon* "Exceeded collide cache max # of tris!~%"))) + (return #f)) + (if (not (and (logtest? (-> arg0 flags) 2) (logtest? (-> arg0 flags) 144) (zero? (logand #x10000 (-> arg0 flags))))) + (return #f)) (let ((v1-28 (cond - ((logtest? (-> *target* control root-prim prim-core action) (collide-action racer)) - (+ -819.2 (-> arg0 height)) - ) - ((logtest? (-> arg0 flags) 16) - (- (-> arg0 height) (-> arg0 swim-height)) - ) - (else - (- (-> arg0 base-height) (-> arg0 bottom-height)) - ) - ) - ) - ) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action racer)) (+ -819.2 (-> arg0 height))) + ((logtest? (-> arg0 flags) 16) (- (-> arg0 height) (-> arg0 swim-height))) + (else (- (-> arg0 base-height) (-> arg0 bottom-height)))))) (.lvf vf1 (&-> obj collide-box min quad)) (.lvf vf3 (&-> obj collide-box max quad)) (let ((a1-6 (-> obj num-prims-u)) - (a2-8 (the-as (inline-array collide-cache-tri) (-> obj tris (-> obj num-tris)))) - ) + (a2-8 (the-as (inline-array collide-cache-tri) (-> obj tris (-> obj num-tris))))) (.mov vf5 v1-28) (.add.x.vf vf1 vf0 vf5 :mask #b10) (set! (-> a2-8 0 extra-quad) (the-as uint128 0)) @@ -265,26 +198,20 @@ (.svf (&-> a2-8 1 vertex 0 quad) vf1) (.svf (&-> a2-8 1 vertex 1 quad) vf3) (.svf (&-> a2-8 1 vertex 2 quad) vf4) - (set! (-> a2-8 1 pat) (new 'static 'pat-surface :material (pat-material waterbottom))) - ) - ) + (set! (-> a2-8 1 pat) (new 'static 'pat-surface :material (pat-material waterbottom))))) (let ((v1-33 *collide-shape-prim-water*) - (a1-10 (-> obj prims (-> obj num-prims))) - ) + (a1-10 (-> obj prims (-> obj num-prims)))) (set! (-> a1-10 first-tri) (the-as uint (-> obj num-tris))) (set! (-> a1-10 num-tris) (the-as uint 2)) (set! (-> a1-10 prim) v1-33) (set! (-> a1-10 ccache) obj) (set! (-> a1-10 prim-core world-sphere quad) (-> v1-33 prim-core world-sphere quad)) - (set! (-> a1-10 prim-core quad 1) (-> v1-33 prim-core quad 1)) - ) + (set! (-> a1-10 prim-core quad 1) (-> v1-33 prim-core quad 1))) (+! (-> obj num-prims) 1) (+! (-> obj num-tris) 2) - (none) - ) - ) + (none))) -(defmethod fill-using-bounding-box collide-cache ((obj collide-cache) (arg0 bounding-box) (arg1 collide-kind) (arg2 process-drawable) (arg3 pat-surface)) +(defmethod fill-using-bounding-box ((obj collide-cache) (arg0 bounding-box) (arg1 collide-kind) (arg2 process-drawable) (arg3 pat-surface)) (rlet ((Q :class vf) (vf0 :class vf) (vf1 :class vf) @@ -293,8 +220,7 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) + (vf7 :class vf)) (init-vf0-vector) (let ((v1-0 (new 'static 'vector :x 0.5))) (nop!) @@ -332,27 +258,16 @@ (.sub.vf vf5 vf5 Q :mask #b1000) (set! (-> obj collide-with) arg1) (nop!) - (.svf (&-> a0-1 collide-sphere-neg-r quad) vf5) - ) - ) + (.svf (&-> a0-1 collide-sphere-neg-r quad) vf5))) 0 (if (logtest? arg1 (collide-kind background)) - (fill-from-background - obj - (method-of-type bsp-header collide-with-box) - (method-of-type collide-cache load-mesh-from-spad-in-box) - ) - ) - (if (logtest? arg1 (collide-kind water)) - (fill-from-water obj (-> arg2 water)) - ) - (if (logtest? arg1 (collide-kind cak-1 cak-2 cak-3 target)) - (fill-from-foreground-using-box obj) - ) + (fill-from-background obj + (method-of-type bsp-header collide-with-box) + (method-of-type collide-cache load-mesh-from-spad-in-box))) + (if (logtest? arg1 (collide-kind water)) (fill-from-water obj (-> arg2 water))) + (if (logtest? arg1 (collide-kind cak-1 cak-2 cak-3 target)) (fill-from-foreground-using-box obj)) 0 - (none) - ) - ) + (none))) (defun collide-cache-using-box-test ((arg0 vector)) (local-vars (v1-1 int)) @@ -360,61 +275,43 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) - (init-vf0-vector) - (nop!) - (.max.w.vf vf3 vf0 vf0) - (let ((v1-0 *collide-work*)) + (vf3 :class vf)) + (init-vf0-vector) + (nop!) + (.max.w.vf vf3 vf0 vf0) + (let ((v1-0 *collide-work*)) (nop!) (.lvf vf1 (&-> arg0 quad)) (nop!) (.lvf vf2 (&-> v1-0 collide-sphere-neg-r quad))) + (.sub.vf vf1 vf1 vf2) + (nop!) + (.mul.vf vf1 vf1 vf1) + (nop!) + (.mul.x.vf acc vf3 vf1) + (nop!) + (.add.mul.y.vf acc vf3 vf1 acc) (nop!) - (.lvf vf1 (&-> arg0 quad)) + (.add.mul.z.vf acc vf3 vf1 acc) (nop!) - (.lvf vf2 (&-> v1-0 collide-sphere-neg-r quad)) - ) - (.sub.vf vf1 vf1 vf2) - (nop!) - (.mul.vf vf1 vf1 vf1) - (nop!) - (.mul.x.vf acc vf3 vf1) - (nop!) - (.add.mul.y.vf acc vf3 vf1 acc) - (nop!) - (.add.mul.z.vf acc vf3 vf1 acc) - (nop!) - (.sub.mul.w.vf vf1 vf3 vf1 acc) - (nop!) - (.mov v1-1 vf1) - (<= (the-as int v1-1) 0) - ) - ) - -(defmethod collide-with-box collide-fragment ((obj collide-fragment) (arg0 int) (arg1 collide-list)) + (.sub.mul.w.vf vf1 vf3 vf1 acc) + (nop!) + (.mov v1-1 vf1) + (<= (the-as int v1-1) 0))) + +(defmethod collide-with-box ((obj collide-fragment) (arg0 int) (arg1 collide-list)) (let ((s3-0 *collide-work*)) (dotimes (s2-0 arg0) - (when (and (collide-cache-using-box-test (-> obj bsphere)) - (drawable-sphere-box-intersect? obj (-> s3-0 collide-box4w)) - ) - (let ((v1-5 (-> arg1 items (-> arg1 num-items)))) - (set! (-> v1-5 mesh) (-> obj mesh)) - (set! (-> v1-5 inst) #f) - ) + (when (and (collide-cache-using-box-test (-> obj bsphere)) (drawable-sphere-box-intersect? obj (-> s3-0 collide-box4w))) + (let ((v1-5 (-> arg1 items (-> arg1 num-items)))) (set! (-> v1-5 mesh) (-> obj mesh)) (set! (-> v1-5 inst) #f)) ; (add-debug-sphere #t (bucket-id debug) (-> obj bsphere) (-> obj bsphere w) (new 'static 'rgba :g #x80 :a #x80)) ; (format 0 "~f~%" (-> obj bsphere w)) - (+! (-> arg1 num-items) 1) - ) - (&+! obj 32) - ) - ) + (+! (-> arg1 num-items) 1)) + (&+! obj 32))) 0 - (none) - ) + (none)) -(defmethod collide-with-box instance-tie ((obj instance-tie) (arg0 int) (arg1 collide-list)) +(defmethod collide-with-box ((obj instance-tie) (arg0 int) (arg1 collide-list)) (dotimes (s3-0 arg0) (when (and (zero? (logand (-> obj flags) 1)) (collide-cache-using-box-test (-> obj bsphere)) - (drawable-sphere-box-intersect? obj (-> *collide-work* collide-box4w)) - ) + (drawable-sphere-box-intersect? obj (-> *collide-work* collide-box4w))) (let ((s2-0 (-> obj bucket-ptr collide-frag))) (when (nonzero? s2-0) (let ((s1-0 (the-as object (-> s2-0 data)))) @@ -422,79 +319,58 @@ (when (instance-sphere-box-intersect? (the-as collide-fragment s1-0) obj (-> *collide-work* collide-box4w)) (let ((v1-12 (-> arg1 items (-> arg1 num-items)))) (set! (-> v1-12 mesh) (-> (the-as collide-fragment s1-0) mesh)) - (set! (-> v1-12 inst) obj) - ) - (+! (-> arg1 num-items) 1) - ) - (set! s1-0 (-> (the-as (inline-array collide-fragment) s1-0) 1)) - ) - ) - ) - ) - ) - (&+! obj 64) - ) + (set! (-> v1-12 inst) obj)) + (+! (-> arg1 num-items) 1)) + (set! s1-0 (-> (the-as (inline-array collide-fragment) s1-0) 1))))))) + (&+! obj 64)) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Y PROBE ;;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod fill-using-y-probe collide-cache ((obj collide-cache) (arg0 vector) (arg1 float) (arg2 collide-kind) (arg3 process-drawable) (arg4 pat-surface)) +(defmethod fill-using-y-probe ((obj collide-cache) (arg0 vector) (arg1 float) (arg2 collide-kind) (arg3 process-drawable) (arg4 pat-surface)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) - (set! *already-printed-exeeded-max-cache-tris* #f) - (.mov vf5 arg1) - (.lvf vf2 (&-> arg0 quad)) - (nop!) - (let ((v1-0 *collide-work*)) - (.mov.vf vf1 vf2) - (set! (-> obj ignore-mask) (the-as pat-surface arg4)) - (.add.x.vf vf2 vf2 vf5 :mask #b10) - (set! (-> obj num-tris) 0) - (.sub.x.vf vf1 vf1 vf5 :mask #b10) - (set! (-> obj num-prims) 0) - (nop!) - (set! (-> obj collide-with) arg2) - (nop!) - (set! (-> obj proc) arg3) - (.ftoi.vf vf4 vf2) - (.svf (&-> obj collide-box max quad) vf2) - (.ftoi.vf vf3 vf1) - (.svf (&-> obj collide-box min quad) vf1) - (nop!) - (.svf (&-> obj collide-box4w max quad) vf4) - (nop!) - (.svf (&-> obj collide-box4w min quad) vf3) - (nop!) - (.svf (&-> v1-0 collide-box4w max quad) vf4) - (nop!) - (.svf (&-> v1-0 collide-box4w min quad) vf3) - ) - (if (logtest? arg2 (collide-kind background)) - (fill-from-background - obj - (method-of-type bsp-header collide-y-probe) - (the-as (function collide-cache object none) (method-of-type collide-cache collide-cache-method-28)) - ) - ) - (if (logtest? arg2 (collide-kind water)) - (fill-from-water obj (-> arg3 water)) - ) - (if (logtest? arg2 (collide-kind cak-1 cak-2 cak-3 target)) - (fill-from-foreground-using-y-probe obj) - ) - 0 - (none) - ) - ) + (vf5 :class vf)) + (set! *already-printed-exeeded-max-cache-tris* #f) + (.mov vf5 arg1) + (.lvf vf2 (&-> arg0 quad)) + (nop!) + (let ((v1-0 *collide-work*)) + (.mov.vf vf1 vf2) + (set! (-> obj ignore-mask) (the-as pat-surface arg4)) + (.add.x.vf vf2 vf2 vf5 :mask #b10) + (set! (-> obj num-tris) 0) + (.sub.x.vf vf1 vf1 vf5 :mask #b10) + (set! (-> obj num-prims) 0) + (nop!) + (set! (-> obj collide-with) arg2) + (nop!) + (set! (-> obj proc) arg3) + (.ftoi.vf vf4 vf2) + (.svf (&-> obj collide-box max quad) vf2) + (.ftoi.vf vf3 vf1) + (.svf (&-> obj collide-box min quad) vf1) + (nop!) + (.svf (&-> obj collide-box4w max quad) vf4) + (nop!) + (.svf (&-> obj collide-box4w min quad) vf3) + (nop!) + (.svf (&-> v1-0 collide-box4w max quad) vf4) + (nop!) + (.svf (&-> v1-0 collide-box4w min quad) vf3)) + (if (logtest? arg2 (collide-kind background)) + (fill-from-background obj + (method-of-type bsp-header collide-y-probe) + (the-as (function collide-cache object none) (method-of-type collide-cache collide-cache-method-28)))) + (if (logtest? arg2 (collide-kind water)) (fill-from-water obj (-> arg3 water))) + (if (logtest? arg2 (collide-kind cak-1 cak-2 cak-3 target)) (fill-from-foreground-using-y-probe obj)) + 0 + (none))) (defun collide-cache-using-y-probe-test ((arg0 vector)) (local-vars @@ -505,14 +381,12 @@ (a0-1 uint128) (a1-2 uint128) (a2-0 uint128) - (f31-0 none) - ) + (f31-0 none)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (set! zero (the-as uint128 0)) (nop!) (let ((a1-0 *collide-work*)) @@ -532,41 +406,27 @@ (nop!) (.mov a0-1 vf5) (nop!) - (.pcgtw a1-2 a2-0 a1-1) - ) - (.pcgtw v1-1 v1-0 a0-1) - ) - ) + (.pcgtw a1-2 a2-0 a1-1)) + (.pcgtw v1-1 v1-0 a0-1))) (.por v1-2 a1-2 v1-1) (.ppach v1-3 zero v1-2) - (let ((v1-4 (shl (the-as int v1-3) 16))) - (nop!) - (zero? v1-4) - ) - ) - ) + (let ((v1-4 (shl (the-as int v1-3) 16))) (nop!) (zero? v1-4)))) ;; definition for method 12 of type collide-fragment ;; INFO: Return type mismatch int vs none. -(defmethod collide-y-probe collide-fragment ((obj collide-fragment) (arg0 int) (arg1 collide-list)) +(defmethod collide-y-probe ((obj collide-fragment) (arg0 int) (arg1 collide-list)) *collide-work* (dotimes (s3-0 arg0) (when (collide-cache-using-y-probe-test (-> obj bsphere)) - (let ((v1-5 (-> arg1 items (-> arg1 num-items)))) - (set! (-> v1-5 mesh) (-> obj mesh)) - (set! (-> v1-5 inst) #f) - ) - (+! (-> arg1 num-items) 1) - ) - (&+! obj 32) - ) + (let ((v1-5 (-> arg1 items (-> arg1 num-items)))) (set! (-> v1-5 mesh) (-> obj mesh)) (set! (-> v1-5 inst) #f)) + (+! (-> arg1 num-items) 1)) + (&+! obj 32)) 0 - (none) - ) + (none)) ;; definition for method 12 of type instance-tie ;; INFO: Return type mismatch int vs none. -(defmethod collide-y-probe instance-tie ((obj instance-tie) (arg0 int) (arg1 collide-list)) +(defmethod collide-y-probe ((obj instance-tie) (arg0 int) (arg1 collide-list)) (dotimes (s3-0 arg0) (when (and (zero? (logand (-> obj flags) 1)) (collide-cache-using-y-probe-test (-> obj bsphere))) (let ((s2-0 (-> obj bucket-ptr collide-frag))) @@ -576,21 +436,12 @@ (when (instance-sphere-box-intersect? (the-as collide-fragment s1-0) obj (-> *collide-work* collide-box4w)) (let ((v1-11 (-> arg1 items (-> arg1 num-items)))) (set! (-> v1-11 mesh) (-> (the-as collide-fragment s1-0) mesh)) - (set! (-> v1-11 inst) obj) - ) - (+! (-> arg1 num-items) 1) - ) - (set! s1-0 (-> (the-as (inline-array collide-fragment) s1-0) 1)) - ) - ) - ) - ) - ) - (&+! obj 64) - ) + (set! (-> v1-11 inst) obj)) + (+! (-> arg1 num-items) 1)) + (set! s1-0 (-> (the-as (inline-array collide-fragment) s1-0) 1))))))) + (&+! obj 64)) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;; ;; Line Sphere Test @@ -602,32 +453,15 @@ (defmacro pabsw-hack (out in) `(let ((temp (new 'stack-no-clear 'array 'int32 4))) - (set! (-> (the (pointer uint128) temp)) ,in) - (set! (-> temp 0) (abs (-> temp 0))) - (set! (-> temp 1) (abs (-> temp 1))) - (set! (-> temp 2) (abs (-> temp 2))) - (set! (-> temp 3) (abs (-> temp 3))) - (set! ,out (-> (the (pointer uint128) temp))) - ) - ) - - -(defmethod fill-using-line-sphere collide-cache ((obj collide-cache) - (arg0 vector) - (arg1 vector) - (arg2 float) - (arg3 collide-kind) - (arg4 process-drawable) - (arg5 pat-surface) - ) - (local-vars - (zero uint128) - (a0-2 uint128) - (a0-3 uint128) - (a0-7 int) - (t0-1 uint128) - (t0-2 uint128) - ) + (set! (-> (the (pointer uint128) temp)) ,in) + (set! (-> temp 0) (abs (-> temp 0))) + (set! (-> temp 1) (abs (-> temp 1))) + (set! (-> temp 2) (abs (-> temp 2))) + (set! (-> temp 3) (abs (-> temp 3))) + (set! ,out (-> (the (pointer uint128) temp))))) + +(defmethod fill-using-line-sphere ((obj collide-cache) (arg0 vector) (arg1 vector) (arg2 float) (arg3 collide-kind) (arg4 process-drawable) (arg5 pat-surface)) + (local-vars (zero uint128) (a0-2 uint128) (a0-3 uint128) (a0-7 int) (t0-1 uint128) (t0-2 uint128)) (rlet ((acc :class vf) (Q :class vf) (vf0 :class vf) @@ -653,8 +487,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (set! zero (the uint128 0)) (init-vf0-vector) (let ((v1-0 (new 'static 'vector4w :x #x1000 :y #x1000 :z #x1000))) @@ -671,16 +504,13 @@ (set! (-> obj ignore-mask) arg5) (.mov t0-1 vf21) (nop!) - (pabsw-hack t0-2 t0-1) ;; t0-2 is the line, absolute value + (pabsw-hack t0-2 t0-1) ;; t0-2 is the line, absolute value (.pcgtw a0-2 t0-2 a0-1) (.ppach a0-3 zero a0-2) - (let ((a0-4 (shl (the-as int a0-3) 16))) - (b! (nonzero? a0-4) cfg-3) - ) + (let ((a0-4 (shl (the-as int a0-3) 16))) (b! (nonzero? a0-4) cfg-3)) (let ((s2-0 (new 'stack-no-clear 'bounding-box))) (set-from-point-offset-pad! s2-0 (the-as vector3s arg0) (the-as vector3s arg1) arg2) - (fill-using-bounding-box obj s2-0 arg3 arg4 arg5) - ) + (fill-using-bounding-box obj s2-0 arg3 arg4 arg5)) (b! #t cfg-13 :delay (nop!)) (set! v1-1 (the-as collide-work 0)) (label cfg-3) @@ -746,42 +576,22 @@ (.svf (&-> v1-1 inv-mat vector 1 quad) vf18) (.sub.vf vf20 vf0 vf20) (.svf (&-> v1-1 inv-mat vector 2 quad) vf19) - (.svf (&-> v1-1 inv-mat vector 3 quad) vf20) - ) - ) - ) + (.svf (&-> v1-1 inv-mat vector 3 quad) vf20)))) 0 (if (logtest? arg3 (collide-kind background)) - (fill-from-background - obj - (method-of-type bsp-header collide-ray) - (the-as (function collide-cache object none) (method-of-type collide-cache collide-cache-method-27)) - ) - ) - (if (logtest? arg3 (collide-kind water)) - (fill-from-water obj (-> arg4 water)) - ) - (if (logtest? arg3 (collide-kind cak-1 cak-2 cak-3 target)) - (fill-from-foreground-using-line-sphere obj) - ) + (fill-from-background obj + (method-of-type bsp-header collide-ray) + (the-as (function collide-cache object none) (method-of-type collide-cache collide-cache-method-27)))) + (if (logtest? arg3 (collide-kind water)) (fill-from-water obj (-> arg4 water))) + (if (logtest? arg3 (collide-kind cak-1 cak-2 cak-3 target)) (fill-from-foreground-using-line-sphere obj)) 0 (label cfg-13) - (none) - ) - ) + (none))) (defun collide-cache-using-line-sphere-test ((arg0 vector)) "Check if the input sphere is in the rotated bounding box volume of the current line-sphere query." - (local-vars - (v1-1 uint128) - (v1-2 uint128) - (v1-3 uint128) - (a0-1 uint128) - (a1-2 uint128) - (a2-0 uint128) - (zero uint128) - ) + (local-vars (v1-1 uint128) (v1-2 uint128) (v1-3 uint128) (a0-1 uint128) (a1-2 uint128) (a2-0 uint128) (zero uint128)) (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) @@ -793,8 +603,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (set! zero (the uint128 0)) (let ((a1-0 *collide-work*)) @@ -815,30 +624,48 @@ (.ftoi.vf vf9 vf7) (.mov a2-0 vf8) (.mov a0-1 vf9) - (.pcgtw a1-2 a2-0 a1-1) - ) - (.pcgtw v1-1 v1-0 a0-1) - ) - ) + (.pcgtw a1-2 a2-0 a1-1)) + (.pcgtw v1-1 v1-0 a0-1))) (.por v1-2 a1-2 v1-1) (.ppach v1-3 zero v1-2) - (let ((v1-4 (shl (the-as int v1-3) 16))) - (nop!) - (zero? v1-4) - ) - ) - ) - + (let ((v1-4 (shl (the-as int v1-3) 16))) (nop!) (zero? v1-4)))) (defun make-collide-list-using-line-sphere-inst-test ((arg0 collide-fragment) (arg1 instance-tie)) "Check if a collide-fragment at a given instance is in the rotated bounding box volume of the current line-sphere query." - (local-vars (v1-1 uint128) (v1-2 uint128) (v1-3 uint128) (v1-4 uint128) (a1-2 uint128) (a2-1 uint128) - (a3-1 uint128) (a3-3 uint128) (a3-4 uint128) (t0-1 uint128) (t0-2 uint128) (t1-0 uint128) (t2-1 uint128) - (t2-2 uint128) (zero uint128)) - (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) (vf10 :class vf) (vf11 :class vf) (vf12 :class vf) - (vf13 :class vf) (vf14 :class vf) (vf15 :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)) + (local-vars + (v1-1 uint128) + (v1-2 uint128) + (v1-3 uint128) + (v1-4 uint128) + (a1-2 uint128) + (a2-1 uint128) + (a3-1 uint128) + (a3-3 uint128) + (a3-4 uint128) + (t0-1 uint128) + (t0-2 uint128) + (t1-0 uint128) + (t2-1 uint128) + (t2-2 uint128) + (zero uint128)) + (rlet ((acc :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf10 :class vf) + (vf11 :class vf) + (vf12 :class vf) + (vf13 :class vf) + (vf14 :class vf) + (vf15 :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)) (init-vf0-vector) (set! zero (the uint128 0)) (let ((v1-0 *collide-work*)) @@ -855,17 +682,12 @@ (.mov vf4 t1-0) (.pw.sra t0-2 t0-1 16) (.mov vf1 t2-2) - (.pextlh a3-3 a3-2 zero) - ) - ) - ) - ) + (.pextlh a3-3 a3-2 zero))))) (.mov vf2 t0-2) (.pw.sra a3-4 a3-3 16) (.lvf vf5 (&-> arg1 bsphere quad)) (.mov vf3 a3-4) - (.mov vf6 a2-0) - ) + (.mov vf6 a2-0)) (.itof.vf vf4 vf4) (vitof12.xyzw vf1 vf1) (vitof12.xyzw vf2 vf2) @@ -894,28 +716,18 @@ (.ftoi.vf vf13 vf11) (.mov v1-1 vf14) (.mov a2-1 vf13) - (.pcgtw a1-2 a2-1 a1-1) - ) - (.pcgtw v1-2 a0-1 v1-1) - ) - ) + (.pcgtw a1-2 a2-1 a1-1)) + (.pcgtw v1-2 a0-1 v1-1))) (.por v1-3 a1-2 v1-2) (.ppach v1-4 zero v1-3) - (let ((v1-5 (shl (the-as int v1-4) 16))) - (nop!) - (zero? v1-5) - ) - ) - ) - + (let ((v1-5 (shl (the-as int v1-4) 16))) (nop!) (zero? v1-5)))) -(defmethod collide-ray collide-fragment ((obj collide-fragment) (arg0 int) (arg1 collide-list)) +(defmethod collide-ray ((obj collide-fragment) (arg0 int) (arg1 collide-list)) "Inline-array function to do line-sphere with non-instanced fragments. If the bsphere of the mesh is in the non-aligned bounding box, the mesh will be added to the given collide-list. Note: collide-probe is the faster implementation of this." *collide-work* - ;; just iterate over all and check their bsphere. (dotimes (s3-0 arg0) (when (collide-cache-using-line-sphere-test (-> obj bsphere)) @@ -923,21 +735,16 @@ (set! (-> v1-5 mesh) (-> obj mesh)) (set! (-> v1-5 inst) #f) ;; non-instanced. ) - (+! (-> arg1 num-items) 1) - ) - (&+! obj 32) - ) + (+! (-> arg1 num-items) 1)) + (&+! obj 32)) 0 - (none) - ) + (none)) - -(defmethod collide-ray instance-tie ((obj instance-tie) (arg0 int) (arg1 collide-list)) +(defmethod collide-ray ((obj instance-tie) (arg0 int) (arg1 collide-list)) "Inline-array function to do line-sphere with TIE instances. If the bsphere of the mesh is in the non-aligned bounding box, the mesh will be added to the given collide-list. Note: collide-probe is the faster implementation of this." - ;; loop over instance-ties (dotimes (s3-0 arg0) ;; first check the instance-tie's bsphere @@ -951,22 +758,12 @@ (when (make-collide-list-using-line-sphere-inst-test (the-as collide-fragment s1-0) obj) (let ((v1-10 (-> arg1 items (-> arg1 num-items)))) (set! (-> v1-10 mesh) (-> (the-as collide-fragment s1-0) mesh)) - (set! (-> v1-10 inst) obj) - ) - (+! (-> arg1 num-items) 1) - ) - (set! s1-0 (-> (the-as (inline-array collide-fragment) s1-0) 1)) - ) - ) - ) - ) - ) - (&+! obj 64) - ) + (set! (-> v1-10 inst) obj)) + (+! (-> arg1 num-items) 1)) + (set! s1-0 (-> (the-as (inline-array collide-fragment) s1-0) 1))))))) + (&+! obj 64)) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;; ;; foreground box @@ -974,7 +771,7 @@ ;; for an unknown reason, the goal compiler went insane on this function -(defmethod fill-from-foreground-using-box collide-cache ((obj collide-cache)) +(defmethod fill-from-foreground-using-box ((obj collide-cache)) (local-vars (zero uint128) (v1-2 uint128) @@ -1010,33 +807,25 @@ (a3-5 uint128) (a3-6 uint128) (a3-7 uint128) - (f31-0 none) - ) + (f31-0 none)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (set! zero (the-as uint128 0)) (let ((s5-0 (the-as uint128 (-> obj collide-with))) (s4-0 (-> obj collide-box4w min quad)) - (s3-0 (-> obj collide-box4w max quad)) - ) - (let ((v1-1 (the-as uint128 (make-u128 0 16)))) - (.pand v1-2 v1-1 s5-0) - ) + (s3-0 (-> obj collide-box4w max quad))) + (let ((v1-1 (the-as uint128 (make-u128 0 16)))) (.pand v1-2 v1-1 s5-0)) (when (nonzero? (the-as int v1-2)) (let ((v1-5 (-> *collide-player-list* alive-list next0))) *collide-player-list* (let ((s2-0 (-> v1-5 next0))) (while (!= v1-5 (-> *collide-player-list* alive-list-end)) (let* ((v1-6 (the-as collide-shape (-> (the-as connection v1-5) param1))) - (a0-3 (-> v1-6 root-prim)) - ) - (let ((a1-0 (the-as uint128 (-> a0-3 prim-core collide-as)))) - (.pand a1-1 s5-0 a1-0) - ) + (a0-3 (-> v1-6 root-prim))) + (let ((a1-0 (the-as uint128 (-> a0-3 prim-core collide-as)))) (.pand a1-1 s5-0 a1-0)) (b! (zero? (the-as int a1-1)) cfg-7) (nop!) (.lvf vf1 (&-> a0-3 prim-core world-sphere quad)) @@ -1056,43 +845,26 @@ (.pcgtw a3-1 s4-0 a3-0) (.por a2-2 a2-1 a3-1) (.ppach a2-3 zero a2-2) - (let ((a2-4 (shl (the-as int a2-3) 16))) - (nop!) - (b! (nonzero? a2-4) cfg-6 :delay (nop!)) - ) - (b! (= a1-3 v1-7) cfg-6 :delay (nop!)) - ) - ) - (add-fg-prim-using-box a0-3 obj) - ) + (let ((a2-4 (shl (the-as int a2-3) 16))) (nop!) (b! (nonzero? a2-4) cfg-6 :delay (nop!))) + (b! (= a1-3 v1-7) cfg-6 :delay (nop!)))) + (add-fg-prim-using-box a0-3 obj)) (label cfg-6) 0 (label cfg-7) (set! v1-5 s2-0) *collide-player-list* - (set! s2-0 (-> s2-0 next0)) - ) - ) - ) - ) - (let ((v1-14 (the-as uint128 (make-u128 0 14)))) - (.pand v1-15 v1-14 s5-0) - ) + (set! s2-0 (-> s2-0 next0)))))) + (let ((v1-14 (the-as uint128 (make-u128 0 14)))) (.pand v1-15 v1-14 s5-0)) (when (nonzero? (the-as int v1-15)) - (let ((v1-17 (the-as uint128 (make-u128 0 2)))) - (.pand v1-18 v1-17 s5-0) - ) + (let ((v1-17 (the-as uint128 (make-u128 0 2)))) (.pand v1-18 v1-17 s5-0)) (when (nonzero? (the-as int v1-18)) (let ((v1-21 (-> *collide-hit-by-player-list* alive-list next0))) *collide-hit-by-player-list* (let ((s2-1 (-> v1-21 next0))) (while (!= v1-21 (-> *collide-hit-by-player-list* alive-list-end)) (let* ((v1-22 (the-as collide-shape (-> (the-as connection v1-21) param1))) - (a0-10 (-> v1-22 root-prim)) - ) - (let ((a1-5 (the-as uint128 (-> a0-10 prim-core collide-as)))) - (.pand a1-6 s5-0 a1-5) - ) + (a0-10 (-> v1-22 root-prim))) + (let ((a1-5 (the-as uint128 (-> a0-10 prim-core collide-as)))) (.pand a1-6 s5-0 a1-5)) (b! (zero? (the-as int a1-6)) cfg-18) (nop!) (.lvf vf1 (&-> a0-10 prim-core world-sphere quad)) @@ -1112,39 +884,24 @@ (.pcgtw a3-3 s4-0 a3-2) (.por a2-7 a2-6 a3-3) (.ppach a2-8 zero a2-7) - (let ((a2-9 (shl (the-as int a2-8) 16))) - (nop!) - (b! (nonzero? a2-9) cfg-17 :delay (nop!)) - ) - (b! (= a1-8 v1-23) cfg-17 :delay (nop!)) - ) - ) - (add-fg-prim-using-box a0-10 obj) - ) + (let ((a2-9 (shl (the-as int a2-8) 16))) (nop!) (b! (nonzero? a2-9) cfg-17 :delay (nop!))) + (b! (= a1-8 v1-23) cfg-17 :delay (nop!)))) + (add-fg-prim-using-box a0-10 obj)) (label cfg-17) 0 (label cfg-18) (set! v1-21 s2-1) *collide-hit-by-player-list* - (set! s2-1 (-> s2-1 next0)) - ) - ) - ) - ) - (let ((v1-30 (the-as uint128 (make-u128 0 4)))) - (.pand v1-31 v1-30 s5-0) - ) + (set! s2-1 (-> s2-1 next0)))))) + (let ((v1-30 (the-as uint128 (make-u128 0 4)))) (.pand v1-31 v1-30 s5-0)) (when (nonzero? (the-as int v1-31)) (let ((v1-34 (-> *collide-usually-hit-by-player-list* alive-list next0))) *collide-usually-hit-by-player-list* (let ((s2-2 (-> v1-34 next0))) (while (!= v1-34 (-> *collide-usually-hit-by-player-list* alive-list-end)) (let* ((v1-35 (the-as collide-shape (-> (the-as connection v1-34) param1))) - (a0-17 (-> v1-35 root-prim)) - ) - (let ((a1-10 (the-as uint128 (-> a0-17 prim-core collide-as)))) - (.pand a1-11 s5-0 a1-10) - ) + (a0-17 (-> v1-35 root-prim))) + (let ((a1-10 (the-as uint128 (-> a0-17 prim-core collide-as)))) (.pand a1-11 s5-0 a1-10)) (b! (zero? (the-as int a1-11)) cfg-28) (nop!) (nop!) @@ -1165,39 +922,24 @@ (.pcgtw a3-5 s4-0 a3-4) (.por a2-12 a2-11 a3-5) (.ppach a2-13 zero a2-12) - (let ((a2-14 (shl (the-as int a2-13) 16))) - (nop!) - (b! (nonzero? a2-14) cfg-27 :delay (nop!)) - ) - (b! (= a1-13 v1-36) cfg-27 :delay (nop!)) - ) - ) - (add-fg-prim-using-box a0-17 obj) - ) + (let ((a2-14 (shl (the-as int a2-13) 16))) (nop!) (b! (nonzero? a2-14) cfg-27 :delay (nop!))) + (b! (= a1-13 v1-36) cfg-27 :delay (nop!)))) + (add-fg-prim-using-box a0-17 obj)) (label cfg-27) 0 (label cfg-28) (set! v1-34 s2-2) *collide-usually-hit-by-player-list* - (set! s2-2 (-> s2-2 next0)) - ) - ) - ) - ) - (let ((v1-43 (the-as uint128 (make-u128 0 8)))) - (.pand v1-44 v1-43 s5-0) - ) + (set! s2-2 (-> s2-2 next0)))))) + (let ((v1-43 (the-as uint128 (make-u128 0 8)))) (.pand v1-44 v1-43 s5-0)) (when (nonzero? (the-as int v1-44)) (let ((v1-46 (-> *collide-hit-by-others-list* alive-list next0))) *collide-hit-by-others-list* (let ((s2-3 (-> v1-46 next0))) (while (!= v1-46 (-> *collide-hit-by-others-list* alive-list-end)) (let* ((v1-47 (the-as collide-shape (-> (the-as connection v1-46) param1))) - (a0-24 (-> v1-47 root-prim)) - ) - (let ((a1-15 (the-as uint128 (-> a0-24 prim-core collide-as)))) - (.pand a1-16 s5-0 a1-15) - ) + (a0-24 (-> v1-47 root-prim))) + (let ((a1-15 (the-as uint128 (-> a0-24 prim-core collide-as)))) (.pand a1-16 s5-0 a1-15)) (b! (zero? (the-as int a1-16)) cfg-38) (nop!) (nop!) @@ -1218,37 +960,22 @@ (.pcgtw a3-7 s4-0 a3-6) (.por a2-17 a2-16 a3-7) (.ppach a2-18 zero a2-17) - (let ((a2-19 (shl (the-as int a2-18) 16))) - (nop!) - (b! (nonzero? a2-19) cfg-37 :delay (nop!)) - ) - (b! (= a1-18 v1-48) cfg-37 :delay (nop!)) - ) - ) - (add-fg-prim-using-box a0-24 obj) - ) + (let ((a2-19 (shl (the-as int a2-18) 16))) (nop!) (b! (nonzero? a2-19) cfg-37 :delay (nop!))) + (b! (= a1-18 v1-48) cfg-37 :delay (nop!)))) + (add-fg-prim-using-box a0-24 obj)) (label cfg-37) 0 (label cfg-38) (set! v1-46 s2-3) *collide-hit-by-others-list* - (set! s2-3 (-> s2-3 next0)) - ) - ) - ) - ) - ) - ) - (none) - ) - ) + (set! s2-3 (-> s2-3 next0)))))))) + (none))) -(defmethod add-fg-prim-using-box collide-shape-prim ((obj collide-shape-prim) (arg0 collide-cache)) +(defmethod add-fg-prim-using-box ((obj collide-shape-prim) (arg0 collide-cache)) (format 0 "ERROR: Illegal collide-shape-prim type passed to collide-shape-prim::add-fg-prim-using-box!~%") - (none) - ) + (none)) -(defmethod add-fg-prim-using-box collide-shape-prim-sphere ((obj collide-shape-prim-sphere) (arg0 collide-cache)) +(defmethod add-fg-prim-using-box ((obj collide-shape-prim-sphere) (arg0 collide-cache)) (local-vars (t1-1 uint)) (nop!) (let* ((t0-0 (-> arg0 prims)) @@ -1256,8 +983,7 @@ (t1-0 100) (v1-0 (-> obj prim-core world-sphere quad)) (t2-0 (* a3-0 2)) - (a2-0 (-> obj prim-core quad 1)) - ) + (a2-0 (-> obj prim-core quad 1))) (b! (= a3-0 t1-0) cfg-2 :delay (set! t1-1 (+ t2-0 a3-0))) (let ((t0-1 (the-as object (&-> t0-0 0 prim-core quad t1-1)))) (let ((a3-1 (+ a3-0 1))) @@ -1269,20 +995,16 @@ (nop!) (set! (-> (the-as collide-cache-prim t0-1) prim-core quad 1) a2-0) (nop!) - (set! (-> arg0 num-prims) (the-as int a3-1)) - ) + (set! (-> arg0 num-prims) (the-as int a3-1))) (nop!) - (set! (-> (the-as collide-cache-prim t0-1) ccache) arg0) - ) - ) + (set! (-> (the-as collide-cache-prim t0-1) ccache) arg0))) (b! #t cfg-3 :delay (nop!)) (label cfg-2) (format 0 "ERROR: Exceeded max number of collide-cache prims!~%") (label cfg-3) - (none) - ) + (none)) -(defmethod add-fg-prim-using-box collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-cache)) +(defmethod add-fg-prim-using-box ((obj collide-shape-prim-group) (arg0 collide-cache)) (local-vars (zero uint128) (v1-2 uint128) @@ -1291,19 +1013,16 @@ (v1-5 uint128) (a0-1 collide-shape-prim) (a1-1 uint128) - (a1-2 uint128) - ) + (a1-2 uint128)) (set! zero (the-as uint128 0)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (nop!) (let ((s5-0 (-> obj prims)) - (s4-0 (-> obj num-prims-u)) - ) + (s4-0 (-> obj num-prims-u))) (nop!) (let ((s3-0 (-> arg0 collide-box4w min quad))) (nop!) @@ -1323,12 +1042,7 @@ (set! s5-0 (&-> s5-0 1)) (.add.w.vf vf3 vf1 vf1) (set! s1-0 (-> s5-0 0)) - (let ((v1-1 (logand s0-0 v1-0))) - (nop!) - (b! (zero? v1-1) cfg-1 :delay (nop!)) - ) - ) - ) + (let ((v1-1 (logand s0-0 v1-0))) (nop!) (b! (zero? v1-1) cfg-1 :delay (nop!))))) (.ftoi.vf vf4 vf2) (nop!) (.ftoi.vf vf5 vf3) @@ -1341,28 +1055,18 @@ (.pcgtw v1-3 s3-0 v1-2) (.por v1-4 a1-2 v1-3) (.ppach v1-5 zero v1-4) - (let ((v1-6 (shl (the-as int v1-5) 16))) - (nop!) - (b! (nonzero? v1-6) cfg-1 :delay (nop!)) - ) + (let ((v1-6 (shl (the-as int v1-5) 16))) (nop!) (b! (nonzero? v1-6) cfg-1 :delay (nop!))) (add-fg-prim-using-box a0-1 arg0) - (b! (nonzero? s4-0) cfg-2 :delay (set! a0-1 s1-0)) - ) - ) - ) - ) + (b! (nonzero? s4-0) cfg-2 :delay (set! a0-1 s1-0)))))) (label cfg-5) 0 - (none) - ) - ) - + (none))) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Foreground Y PROBE ;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod fill-from-foreground-using-y-probe collide-cache ((obj collide-cache)) +(defmethod fill-from-foreground-using-y-probe ((obj collide-cache)) (local-vars (zero uint128) (v1-2 uint128) @@ -1397,33 +1101,25 @@ (a3-4 uint128) (a3-5 uint128) (a3-6 uint128) - (a3-7 uint128) - ) + (a3-7 uint128)) (set! zero (the uint128 0)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (let ((s5-0 (the-as uint128 (-> obj collide-with))) (s4-0 (-> obj collide-box4w min quad)) - (s3-0 (-> obj collide-box4w max quad)) - ) - (let ((v1-1 (the-as uint128 (make-u128 0 16)))) - (.pand v1-2 v1-1 s5-0) - ) + (s3-0 (-> obj collide-box4w max quad))) + (let ((v1-1 (the-as uint128 (make-u128 0 16)))) (.pand v1-2 v1-1 s5-0)) (when (nonzero? (the-as int v1-2)) (let ((v1-5 (-> *collide-player-list* alive-list next0))) *collide-player-list* (let ((s2-0 (-> v1-5 next0))) (while (!= v1-5 (-> *collide-player-list* alive-list-end)) (let* ((v1-6 (the-as collide-shape (-> (the-as connection v1-5) param1))) - (a0-3 (-> v1-6 root-prim)) - ) - (let ((a1-0 (the-as uint128 (-> a0-3 prim-core collide-as)))) - (.pand a1-1 s5-0 a1-0) - ) + (a0-3 (-> v1-6 root-prim))) + (let ((a1-0 (the-as uint128 (-> a0-3 prim-core collide-as)))) (.pand a1-1 s5-0 a1-0)) (b! (zero? (the-as int a1-1)) cfg-7) (.lvf vf1 (&-> a0-3 prim-core world-sphere quad)) (.sub.w.vf vf2 vf1 vf1) @@ -1438,43 +1134,26 @@ (.pcgtw a3-1 s4-0 a3-0) (.por a2-2 a2-1 a3-1) (.ppach a2-3 zero a2-2) - (let ((a2-4 (shl (the-as int a2-3) 16))) - (nop!) - (b! (nonzero? a2-4) cfg-6 :delay (nop!)) - ) - (b! (= a1-3 v1-7) cfg-6 :delay (nop!)) - ) - ) - (add-fg-prim-using-y-probe a0-3 obj) - ) + (let ((a2-4 (shl (the-as int a2-3) 16))) (nop!) (b! (nonzero? a2-4) cfg-6 :delay (nop!))) + (b! (= a1-3 v1-7) cfg-6 :delay (nop!)))) + (add-fg-prim-using-y-probe a0-3 obj)) (label cfg-6) 0 (label cfg-7) (set! v1-5 s2-0) *collide-player-list* - (set! s2-0 (-> s2-0 next0)) - ) - ) - ) - ) - (let ((v1-14 (the-as uint128 (make-u128 0 14)))) - (.pand v1-15 v1-14 s5-0) - ) + (set! s2-0 (-> s2-0 next0)))))) + (let ((v1-14 (the-as uint128 (make-u128 0 14)))) (.pand v1-15 v1-14 s5-0)) (when (nonzero? (the-as int v1-15)) - (let ((v1-17 (the-as uint128 (make-u128 0 2)))) - (.pand v1-18 v1-17 s5-0) - ) + (let ((v1-17 (the-as uint128 (make-u128 0 2)))) (.pand v1-18 v1-17 s5-0)) (when (nonzero? (the-as int v1-18)) (let ((v1-21 (-> *collide-hit-by-player-list* alive-list next0))) *collide-hit-by-player-list* (let ((s2-1 (-> v1-21 next0))) (while (!= v1-21 (-> *collide-hit-by-player-list* alive-list-end)) (let* ((v1-22 (the-as collide-shape (-> (the-as connection v1-21) param1))) - (a0-10 (-> v1-22 root-prim)) - ) - (let ((a1-5 (the-as uint128 (-> a0-10 prim-core collide-as)))) - (.pand a1-6 s5-0 a1-5) - ) + (a0-10 (-> v1-22 root-prim))) + (let ((a1-5 (the-as uint128 (-> a0-10 prim-core collide-as)))) (.pand a1-6 s5-0 a1-5)) (b! (zero? (the-as int a1-6)) cfg-18) (nop!) (.lvf vf1 (&-> a0-10 prim-core world-sphere quad)) @@ -1494,39 +1173,24 @@ (.pcgtw a3-3 s4-0 a3-2) (.por a2-7 a2-6 a3-3) (.ppach a2-8 zero a2-7) - (let ((a2-9 (shl (the-as int a2-8) 16))) - (nop!) - (b! (nonzero? a2-9) cfg-17 :delay (nop!)) - ) - (b! (= a1-8 v1-23) cfg-17 :delay (nop!)) - ) - ) - (add-fg-prim-using-y-probe a0-10 obj) - ) + (let ((a2-9 (shl (the-as int a2-8) 16))) (nop!) (b! (nonzero? a2-9) cfg-17 :delay (nop!))) + (b! (= a1-8 v1-23) cfg-17 :delay (nop!)))) + (add-fg-prim-using-y-probe a0-10 obj)) (label cfg-17) 0 (label cfg-18) (set! v1-21 s2-1) *collide-hit-by-player-list* - (set! s2-1 (-> s2-1 next0)) - ) - ) - ) - ) - (let ((v1-30 (the-as uint128 (make-u128 0 4)))) - (.pand v1-31 v1-30 s5-0) - ) + (set! s2-1 (-> s2-1 next0)))))) + (let ((v1-30 (the-as uint128 (make-u128 0 4)))) (.pand v1-31 v1-30 s5-0)) (when (nonzero? (the-as int v1-31)) (let ((v1-34 (-> *collide-usually-hit-by-player-list* alive-list next0))) *collide-usually-hit-by-player-list* (let ((s2-2 (-> v1-34 next0))) (while (!= v1-34 (-> *collide-usually-hit-by-player-list* alive-list-end)) (let* ((v1-35 (the-as collide-shape (-> (the-as connection v1-34) param1))) - (a0-17 (-> v1-35 root-prim)) - ) - (let ((a1-10 (the-as uint128 (-> a0-17 prim-core collide-as)))) - (.pand a1-11 s5-0 a1-10) - ) + (a0-17 (-> v1-35 root-prim))) + (let ((a1-10 (the-as uint128 (-> a0-17 prim-core collide-as)))) (.pand a1-11 s5-0 a1-10)) (b! (zero? (the-as int a1-11)) cfg-28) (nop!) (nop!) @@ -1547,39 +1211,24 @@ (.pcgtw a3-5 s4-0 a3-4) (.por a2-12 a2-11 a3-5) (.ppach a2-13 zero a2-12) - (let ((a2-14 (shl (the-as int a2-13) 16))) - (nop!) - (b! (nonzero? a2-14) cfg-27 :delay (nop!)) - ) - (b! (= a1-13 v1-36) cfg-27 :delay (nop!)) - ) - ) - (add-fg-prim-using-y-probe a0-17 obj) - ) + (let ((a2-14 (shl (the-as int a2-13) 16))) (nop!) (b! (nonzero? a2-14) cfg-27 :delay (nop!))) + (b! (= a1-13 v1-36) cfg-27 :delay (nop!)))) + (add-fg-prim-using-y-probe a0-17 obj)) (label cfg-27) 0 (label cfg-28) (set! v1-34 s2-2) *collide-usually-hit-by-player-list* - (set! s2-2 (-> s2-2 next0)) - ) - ) - ) - ) - (let ((v1-43 (the-as uint128 (make-u128 0 8)))) - (.pand v1-44 v1-43 s5-0) - ) + (set! s2-2 (-> s2-2 next0)))))) + (let ((v1-43 (the-as uint128 (make-u128 0 8)))) (.pand v1-44 v1-43 s5-0)) (when (nonzero? (the-as int v1-44)) (let ((v1-46 (-> *collide-hit-by-others-list* alive-list next0))) *collide-hit-by-others-list* (let ((s2-3 (-> v1-46 next0))) (while (!= v1-46 (-> *collide-hit-by-others-list* alive-list-end)) (let* ((v1-47 (the-as collide-shape (-> (the-as connection v1-46) param1))) - (a0-24 (-> v1-47 root-prim)) - ) - (let ((a1-15 (the-as uint128 (-> a0-24 prim-core collide-as)))) - (.pand a1-16 s5-0 a1-15) - ) + (a0-24 (-> v1-47 root-prim))) + (let ((a1-15 (the-as uint128 (-> a0-24 prim-core collide-as)))) (.pand a1-16 s5-0 a1-15)) (b! (zero? (the-as int a1-16)) cfg-38) (nop!) (nop!) @@ -1600,37 +1249,22 @@ (.pcgtw a3-7 s4-0 a3-6) (.por a2-17 a2-16 a3-7) (.ppach a2-18 zero a2-17) - (let ((a2-19 (shl (the-as int a2-18) 16))) - (nop!) - (b! (nonzero? a2-19) cfg-37 :delay (nop!)) - ) - (b! (= a1-18 v1-48) cfg-37 :delay (nop!)) - ) - ) - (add-fg-prim-using-y-probe a0-24 obj) - ) + (let ((a2-19 (shl (the-as int a2-18) 16))) (nop!) (b! (nonzero? a2-19) cfg-37 :delay (nop!))) + (b! (= a1-18 v1-48) cfg-37 :delay (nop!)))) + (add-fg-prim-using-y-probe a0-24 obj)) (label cfg-37) 0 (label cfg-38) (set! v1-46 s2-3) *collide-hit-by-others-list* - (set! s2-3 (-> s2-3 next0)) - ) - ) - ) - ) - ) - ) - (none) - ) - ) + (set! s2-3 (-> s2-3 next0)))))))) + (none))) -(defmethod add-fg-prim-using-y-probe collide-shape-prim ((obj collide-shape-prim) (arg0 collide-cache)) +(defmethod add-fg-prim-using-y-probe ((obj collide-shape-prim) (arg0 collide-cache)) (format 0 "ERROR: Illegal collide-shape-prim type passed to collide-shape-prim::add-fg-prim-using-y-probe!~%") - (none) - ) + (none)) -(defmethod add-fg-prim-using-y-probe collide-shape-prim-sphere ((obj collide-shape-prim-sphere) (arg0 collide-cache)) +(defmethod add-fg-prim-using-y-probe ((obj collide-shape-prim-sphere) (arg0 collide-cache)) (local-vars (t1-1 uint)) (nop!) (let* ((t0-0 (-> arg0 prims)) @@ -1638,8 +1272,7 @@ (t1-0 100) (v1-0 (-> obj prim-core world-sphere quad)) (t2-0 (* a3-0 2)) - (a2-0 (-> obj prim-core quad 1)) - ) + (a2-0 (-> obj prim-core quad 1))) (b! (= a3-0 t1-0) cfg-2 :delay (set! t1-1 (+ t2-0 a3-0))) (let ((t0-1 (the-as object (&-> t0-0 0 prim-core quad t1-1)))) (let ((a3-1 (+ a3-0 1))) @@ -1651,21 +1284,16 @@ (nop!) (set! (-> (the-as collide-cache-prim t0-1) prim-core quad 1) a2-0) (nop!) - (set! (-> arg0 num-prims) (the-as int a3-1)) - ) + (set! (-> arg0 num-prims) (the-as int a3-1))) (nop!) - (set! (-> (the-as collide-cache-prim t0-1) ccache) arg0) - ) - ) + (set! (-> (the-as collide-cache-prim t0-1) ccache) arg0))) (b! #t cfg-3 :delay (nop!)) (label cfg-2) (format 0 "ERROR: Exceeded max number of collide-cache prims!~%") (label cfg-3) - (none) - ) - + (none)) -(defmethod add-fg-prim-using-y-probe collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-cache)) +(defmethod add-fg-prim-using-y-probe ((obj collide-shape-prim-group) (arg0 collide-cache)) (local-vars (r0-0 int) (r0-1 int) @@ -1678,18 +1306,15 @@ (a0-1 collide-shape-prim) (a1-1 uint128) (a1-2 uint128) - (f31-0 none) - ) + (f31-0 none)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (nop!) (let ((s5-0 (-> obj prims)) - (s4-0 (-> obj num-prims-u)) - ) + (s4-0 (-> obj num-prims-u))) (nop!) (let ((s3-0 (-> arg0 collide-box4w min quad))) (nop!) @@ -1709,12 +1334,7 @@ (set! s5-0 (&-> s5-0 1)) (.add.w.vf vf3 vf1 vf1) (set! s1-0 (-> s5-0 0)) - (let ((v1-1 (logand s0-0 v1-0))) - (nop!) - (b! (zero? v1-1) cfg-1 :delay (nop!)) - ) - ) - ) + (let ((v1-1 (logand s0-0 v1-0))) (nop!) (b! (zero? v1-1) cfg-1 :delay (nop!))))) (.ftoi.vf vf4 vf2) (nop!) (.ftoi.vf vf5 vf3) @@ -1731,23 +1351,12 @@ (.mov r0-2 f31-0) (.ppach v1-5 r0-2 v1-4) (.mov r0-3 f31-0) - (let ((v1-6 (shl (the-as int v1-5) 16))) - (nop!) - (b! (nonzero? v1-6) cfg-1 :delay (nop!)) - ) + (let ((v1-6 (shl (the-as int v1-5) 16))) (nop!) (b! (nonzero? v1-6) cfg-1 :delay (nop!))) (add-fg-prim-using-y-probe a0-1 arg0) - (b! (nonzero? s4-0) cfg-2 :delay (set! a0-1 s1-0)) - ) - ) - ) - ) + (b! (nonzero? s4-0) cfg-2 :delay (set! a0-1 s1-0)))))) (label cfg-5) 0 - (none) - ) - ) - - + (none))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; foreground Line Sphere @@ -1758,31 +1367,25 @@ ((reg-vf28 vector :inline) (reg-vf29 vector :inline) (reg-vf30 vector :inline) - (reg-vf31 vector :inline) - ) - ) + (reg-vf31 vector :inline))) (define *pc-fffuls-work* (new 'global 'pc-fffuls-work)) (defmacro save-fffuls-work () `(begin - (.svf (&-> *pc-fffuls-work* reg-vf31 quad) vf31) - (.svf (&-> *pc-fffuls-work* reg-vf30 quad) vf30) - (.svf (&-> *pc-fffuls-work* reg-vf29 quad) vf29) - (.svf (&-> *pc-fffuls-work* reg-vf28 quad) vf28) - ) - ) + (.svf (&-> *pc-fffuls-work* reg-vf31 quad) vf31) + (.svf (&-> *pc-fffuls-work* reg-vf30 quad) vf30) + (.svf (&-> *pc-fffuls-work* reg-vf29 quad) vf29) + (.svf (&-> *pc-fffuls-work* reg-vf28 quad) vf28))) (defmacro load-fffuls-work () `(begin - (.lvf vf28 (&-> *pc-fffuls-work* reg-vf28 quad)) - (.lvf vf29 (&-> *pc-fffuls-work* reg-vf29 quad)) - (.lvf vf30 (&-> *pc-fffuls-work* reg-vf30 quad)) - (.lvf vf31 (&-> *pc-fffuls-work* reg-vf31 quad)) - ) - ) - -(defmethod fill-from-foreground-using-line-sphere collide-cache ((obj collide-cache)) + (.lvf vf28 (&-> *pc-fffuls-work* reg-vf28 quad)) + (.lvf vf29 (&-> *pc-fffuls-work* reg-vf29 quad)) + (.lvf vf30 (&-> *pc-fffuls-work* reg-vf30 quad)) + (.lvf vf31 (&-> *pc-fffuls-work* reg-vf31 quad)))) + +(defmethod fill-from-foreground-using-line-sphere ((obj collide-cache)) (local-vars (zero uint128) (v1-1 float) @@ -1819,8 +1422,7 @@ (a3-5 uint128) (a3-6 uint128) (a3-7 uint128) - (f31-0 none) - ) + (f31-0 none)) (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) @@ -1832,35 +1434,28 @@ (vf31 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (set! zero (the uint128 0)) (let* ((v1-0 *collide-work*) (s5-0 (-> v1-0 collide-box4w min quad)) (s4-0 (-> v1-0 collide-box4w max quad)) - (s3-0 (the-as uint128 (-> obj collide-with))) - ) + (s3-0 (the-as uint128 (-> obj collide-with)))) (.lvf vf28 (&-> v1-0 inv-mat vector 0 quad)) (.lvf vf29 (&-> v1-0 inv-mat vector 1 quad)) (.lvf vf30 (&-> v1-0 inv-mat vector 2 quad)) (.lvf vf31 (&-> v1-0 inv-mat vector 3 quad)) (save-fffuls-work) (.mov v1-1 vf31) - (let ((v1-3 (the-as uint128 (make-u128 0 16)))) - (.pand v1-4 v1-3 s3-0) - ) + (let ((v1-3 (the-as uint128 (make-u128 0 16)))) (.pand v1-4 v1-3 s3-0)) (when (nonzero? (the-as int v1-4)) (let ((v1-7 (-> *collide-player-list* alive-list next0))) *collide-player-list* (let ((s2-0 (-> v1-7 next0))) (while (!= v1-7 (-> *collide-player-list* alive-list-end)) (let* ((v1-8 (the-as collide-shape (-> (the-as connection v1-7) param1))) - (a0-3 (-> v1-8 root-prim)) - ) - (let ((a1-0 (the-as uint128 (-> a0-3 prim-core collide-as)))) - (.pand a1-1 s3-0 a1-0) - ) + (a0-3 (-> v1-8 root-prim))) + (let ((a1-0 (the-as uint128 (-> a0-3 prim-core collide-as)))) (.pand a1-1 s3-0 a1-0)) (b! (zero? (the-as int a1-1)) cfg-7) (.mul.w.vf acc vf31 vf0) (.lvf vf1 (&-> a0-3 prim-core world-sphere quad)) @@ -1886,43 +1481,26 @@ (.pcgtw a3-1 s5-0 a3-0) (.por a2-2 a2-1 a3-1) (.ppach a2-3 zero a2-2) - (let ((a2-4 (shl (the-as int a2-3) 16))) - (nop!) - (b! (nonzero? a2-4) cfg-6 :delay (nop!)) - ) - (b! (= a1-3 v1-9) cfg-6 :delay (nop!)) - ) - ) - (add-fg-prim-using-line-sphere a0-3 obj) - ) + (let ((a2-4 (shl (the-as int a2-3) 16))) (nop!) (b! (nonzero? a2-4) cfg-6 :delay (nop!))) + (b! (= a1-3 v1-9) cfg-6 :delay (nop!)))) + (add-fg-prim-using-line-sphere a0-3 obj)) (label cfg-6) 0 (label cfg-7) (set! v1-7 s2-0) *collide-player-list* - (set! s2-0 (-> s2-0 next0)) - ) - ) - ) - ) - (let ((v1-16 (the-as uint128 (make-u128 0 14)))) - (.pand v1-17 v1-16 s3-0) - ) + (set! s2-0 (-> s2-0 next0)))))) + (let ((v1-16 (the-as uint128 (make-u128 0 14)))) (.pand v1-17 v1-16 s3-0)) (when (nonzero? (the-as int v1-17)) - (let ((v1-19 (the-as uint128 (make-u128 0 2)))) - (.pand v1-20 v1-19 s3-0) - ) + (let ((v1-19 (the-as uint128 (make-u128 0 2)))) (.pand v1-20 v1-19 s3-0)) (when (nonzero? (the-as int v1-20)) (let ((v1-23 (-> *collide-hit-by-player-list* alive-list next0))) *collide-hit-by-player-list* (let ((s2-1 (-> v1-23 next0))) (while (!= v1-23 (-> *collide-hit-by-player-list* alive-list-end)) (let* ((v1-24 (the-as collide-shape (-> (the-as connection v1-23) param1))) - (a0-10 (-> v1-24 root-prim)) - ) - (let ((a1-5 (the-as uint128 (-> a0-10 prim-core collide-as)))) - (.pand a1-6 s3-0 a1-5) - ) + (a0-10 (-> v1-24 root-prim))) + (let ((a1-5 (the-as uint128 (-> a0-10 prim-core collide-as)))) (.pand a1-6 s3-0 a1-5)) (b! (zero? (the-as int a1-6)) cfg-18) (.mul.w.vf acc vf31 vf0) (.lvf vf1 (&-> a0-10 prim-core world-sphere quad)) @@ -1948,39 +1526,24 @@ (.pcgtw a3-3 s5-0 a3-2) (.por a2-7 a2-6 a3-3) (.ppach a2-8 zero a2-7) - (let ((a2-9 (shl (the-as int a2-8) 16))) - (nop!) - (b! (nonzero? a2-9) cfg-17 :delay (nop!)) - ) - (b! (= a1-8 v1-25) cfg-17 :delay (nop!)) - ) - ) - (add-fg-prim-using-line-sphere a0-10 obj) - ) + (let ((a2-9 (shl (the-as int a2-8) 16))) (nop!) (b! (nonzero? a2-9) cfg-17 :delay (nop!))) + (b! (= a1-8 v1-25) cfg-17 :delay (nop!)))) + (add-fg-prim-using-line-sphere a0-10 obj)) (label cfg-17) 0 (label cfg-18) (set! v1-23 s2-1) *collide-hit-by-player-list* - (set! s2-1 (-> s2-1 next0)) - ) - ) - ) - ) - (let ((v1-32 (the-as uint128 (make-u128 0 4)))) - (.pand v1-33 v1-32 s3-0) - ) + (set! s2-1 (-> s2-1 next0)))))) + (let ((v1-32 (the-as uint128 (make-u128 0 4)))) (.pand v1-33 v1-32 s3-0)) (when (nonzero? (the-as int v1-33)) (let ((v1-36 (-> *collide-usually-hit-by-player-list* alive-list next0))) *collide-usually-hit-by-player-list* (let ((s2-2 (-> v1-36 next0))) (while (!= v1-36 (-> *collide-usually-hit-by-player-list* alive-list-end)) (let* ((v1-37 (the-as collide-shape (-> (the-as connection v1-36) param1))) - (a0-17 (-> v1-37 root-prim)) - ) - (let ((a1-10 (the-as uint128 (-> a0-17 prim-core collide-as)))) - (.pand a1-11 s3-0 a1-10) - ) + (a0-17 (-> v1-37 root-prim))) + (let ((a1-10 (the-as uint128 (-> a0-17 prim-core collide-as)))) (.pand a1-11 s3-0 a1-10)) (b! (zero? (the-as int a1-11)) cfg-28) (nop!) (.mul.w.vf acc vf31 vf0) @@ -2007,39 +1570,24 @@ (.pcgtw a3-5 s5-0 a3-4) (.por a2-12 a2-11 a3-5) (.ppach a2-13 zero a2-12) - (let ((a2-14 (shl (the-as int a2-13) 16))) - (nop!) - (b! (nonzero? a2-14) cfg-27 :delay (nop!)) - ) - (b! (= a1-13 (the-as process-drawable v1-38)) cfg-27 :delay (nop!)) - ) - ) - (add-fg-prim-using-line-sphere a0-17 obj) - ) + (let ((a2-14 (shl (the-as int a2-13) 16))) (nop!) (b! (nonzero? a2-14) cfg-27 :delay (nop!))) + (b! (= a1-13 (the-as process-drawable v1-38)) cfg-27 :delay (nop!)))) + (add-fg-prim-using-line-sphere a0-17 obj)) (label cfg-27) 0 (label cfg-28) (set! v1-36 s2-2) *collide-usually-hit-by-player-list* - (set! s2-2 (-> s2-2 next0)) - ) - ) - ) - ) - (let ((v1-45 (the-as uint128 (make-u128 0 8)))) - (.pand v1-46 v1-45 s3-0) - ) + (set! s2-2 (-> s2-2 next0)))))) + (let ((v1-45 (the-as uint128 (make-u128 0 8)))) (.pand v1-46 v1-45 s3-0)) (when (nonzero? (the-as int v1-46)) (let ((v1-48 (-> *collide-hit-by-others-list* alive-list next0))) *collide-hit-by-others-list* (let ((s2-3 (-> v1-48 next0))) (while (!= v1-48 (-> *collide-hit-by-others-list* alive-list-end)) (let* ((v1-49 (the-as collide-shape (-> (the-as connection v1-48) param1))) - (a0-24 (-> v1-49 root-prim)) - ) - (let ((a1-15 (the-as uint128 (-> a0-24 prim-core collide-as)))) - (.pand a1-16 s3-0 a1-15) - ) + (a0-24 (-> v1-49 root-prim))) + (let ((a1-15 (the-as uint128 (-> a0-24 prim-core collide-as)))) (.pand a1-16 s3-0 a1-15)) (b! (zero? (the-as int a1-16)) cfg-38) (nop!) (.mul.w.vf acc vf31 vf0) @@ -2066,40 +1614,22 @@ (.pcgtw a3-7 s5-0 a3-6) (.por a2-17 a2-16 a3-7) (.ppach a2-18 zero a2-17) - (let ((a2-19 (shl (the-as int a2-18) 16))) - (nop!) - (b! (nonzero? a2-19) cfg-37 :delay (nop!)) - ) - (b! (= a1-18 v1-50) cfg-37 :delay (nop!)) - ) - ) - (add-fg-prim-using-line-sphere a0-24 obj) - ) + (let ((a2-19 (shl (the-as int a2-18) 16))) (nop!) (b! (nonzero? a2-19) cfg-37 :delay (nop!))) + (b! (= a1-18 v1-50) cfg-37 :delay (nop!)))) + (add-fg-prim-using-line-sphere a0-24 obj)) (label cfg-37) 0 (label cfg-38) (set! v1-48 s2-3) *collide-hit-by-others-list* - (set! s2-3 (-> s2-3 next0)) - ) - ) - ) - ) - ) - ) - (none) - ) - ) + (set! s2-3 (-> s2-3 next0)))))))) + (none))) -(defmethod add-fg-prim-using-line-sphere collide-shape-prim ((obj collide-shape-prim) (arg0 collide-cache)) - (format - 0 - "ERROR: Illegal collide-shape-prim type passed to collide-shape-prim::add-fg-prim-using-line-sphere!~%" - ) - (none) - ) +(defmethod add-fg-prim-using-line-sphere ((obj collide-shape-prim) (arg0 collide-cache)) + (format 0 "ERROR: Illegal collide-shape-prim type passed to collide-shape-prim::add-fg-prim-using-line-sphere!~%") + (none)) -(defmethod add-fg-prim-using-line-sphere collide-shape-prim-sphere ((obj collide-shape-prim-sphere) (arg0 collide-cache)) +(defmethod add-fg-prim-using-line-sphere ((obj collide-shape-prim-sphere) (arg0 collide-cache)) (local-vars (t1-1 uint)) (nop!) (let* ((t0-0 (-> arg0 prims)) @@ -2107,8 +1637,7 @@ (t1-0 100) (v1-0 (-> obj prim-core world-sphere quad)) (t2-0 (* a3-0 2)) - (a2-0 (-> obj prim-core quad 1)) - ) + (a2-0 (-> obj prim-core quad 1))) (b! (= a3-0 t1-0) cfg-2 :delay (set! t1-1 (+ t2-0 a3-0))) (let ((t0-1 (the-as object (&-> t0-0 0 prim-core quad t1-1)))) (let ((a3-1 (+ a3-0 1))) @@ -2120,20 +1649,16 @@ (nop!) (set! (-> (the-as collide-cache-prim t0-1) prim-core quad 1) a2-0) (nop!) - (set! (-> arg0 num-prims) (the-as int a3-1)) - ) + (set! (-> arg0 num-prims) (the-as int a3-1))) (nop!) - (set! (-> (the-as collide-cache-prim t0-1) ccache) arg0) - ) - ) + (set! (-> (the-as collide-cache-prim t0-1) ccache) arg0))) (b! #t cfg-3 :delay (nop!)) (label cfg-2) (format 0 "ERROR: Exceeded max number of collide-cache prims!~%") (label cfg-3) - (none) - ) + (none)) -(defmethod add-fg-prim-using-line-sphere collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-cache)) +(defmethod add-fg-prim-using-line-sphere ((obj collide-shape-prim-group) (arg0 collide-cache)) (local-vars (zero uint128) (v1-3 uint128) @@ -2142,8 +1667,7 @@ (v1-6 uint128) (a0-1 collide-shape-prim) (a1-1 uint128) - (a1-2 uint128) - ) + (a1-2 uint128)) (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) @@ -2155,15 +1679,13 @@ (vf30 :class vf) (vf31 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (load-fffuls-work) (set! zero (the-as uint128 0)) (let ((v1-0 *collide-work*) (s5-0 (-> obj prims)) - (s4-0 (-> obj num-prims-u)) - ) + (s4-0 (-> obj num-prims-u))) (nop!) (let ((s3-0 (-> v1-0 collide-box4w min quad))) (nop!) @@ -2185,10 +1707,7 @@ (set! s1-0 (-> s5-0 0)) (let ((v1-2 (logand s0-0 v1-1))) (.add.mul.y.vf acc vf29 vf1 acc) - (b! (zero? v1-2) cfg-1 :delay (.add.mul.z.vf vf10 vf30 vf1 acc)) - ) - ) - ) + (b! (zero? v1-2) cfg-1 :delay (.add.mul.z.vf vf10 vf30 vf1 acc))))) (.sub.w.vf vf2 vf10 vf1 :mask #b111) (nop!) (.add.w.vf vf3 vf10 vf1 :mask #b111) @@ -2205,44 +1724,25 @@ (.pcgtw v1-4 s3-0 v1-3) (.por v1-5 a1-2 v1-4) (.ppach v1-6 zero v1-5) - (let ((v1-7 (shl (the-as int v1-6) 16))) - (nop!) - (b! (nonzero? v1-7) cfg-1 :delay (nop!)) - ) + (let ((v1-7 (shl (the-as int v1-6) 16))) (nop!) (b! (nonzero? v1-7) cfg-1 :delay (nop!))) (add-fg-prim-using-line-sphere a0-1 arg0) - (b! (nonzero? s4-0) cfg-2 :delay (set! a0-1 s1-0)) - ) - ) - ) - ) + (b! (nonzero? s4-0) cfg-2 :delay (set! a0-1 s1-0)))))) (label cfg-5) 0 - (none) - ) - ) + (none))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; PROBE ;; PROBE ;; PROBE ;; PROBE ;; PROBE ;; PROBE ;; PROBE ;; PROBE ;; PROBE ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmethod fill-and-probe-using-y-probe collide-cache ((obj collide-cache) - (arg0 vector) - (arg1 float) - (arg2 collide-kind) - (arg3 process-drawable) - (arg4 collide-tri-result) - (arg5 pat-surface) - ) +(defmethod fill-and-probe-using-y-probe ((obj collide-cache) (arg0 vector) (arg1 float) (arg2 collide-kind) (arg3 process-drawable) (arg4 collide-tri-result) (arg5 pat-surface)) (fill-using-y-probe obj arg0 arg1 arg2 arg3 arg5) - (probe-using-y-probe obj arg0 arg1 arg2 arg4 arg5) - ) + (probe-using-y-probe obj arg0 arg1 arg2 arg4 arg5)) -(defmethod probe-using-y-probe collide-cache ((obj collide-cache) (arg0 vector) (arg1 float) (arg2 collide-kind) (arg3 collide-tri-result) (arg4 pat-surface)) +(defmethod probe-using-y-probe ((obj collide-cache) (arg0 vector) (arg1 float) (arg2 collide-kind) (arg3 collide-tri-result) (arg4 pat-surface)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (init-vf0-vector) (let ((gp-0 (new 'stack-no-clear 'collide-puyp-work))) (.mov vf3 arg1) @@ -2257,42 +1757,20 @@ (let ((s2-0 (the-as object (-> obj prims)))) (countdown (s1-0 (-> obj num-prims)) (when (and (logtest? arg2 (-> (the-as collide-cache-prim s2-0) prim-core collide-as)) - (logtest? (-> (the-as collide-cache-prim s2-0) prim-core action) (collide-action solid)) - ) + (logtest? (-> (the-as collide-cache-prim s2-0) prim-core action) (collide-action solid))) (cond - ((>= (-> (the-as collide-cache-prim s2-0) prim-core prim-type) 0) - (puyp-mesh obj gp-0 (the-as collide-cache-prim s2-0)) - ) + ((>= (-> (the-as collide-cache-prim s2-0) prim-core prim-type) 0) (puyp-mesh obj gp-0 (the-as collide-cache-prim s2-0))) (else - (if (zero? (logand arg4 (-> (the-as collide-shape-prim-sphere (-> (the-as collide-cache-prim s2-0) prim)) pat))) - (puyp-sphere obj gp-0 (the-as collide-cache-prim s2-0)) - ) - ) - ) - ) - (set! s2-0 (-> (the-as (inline-array collide-cache-prim) s2-0) 1)) - ) - ) - (let ((f0-1 (-> gp-0 best-u))) - (if (< 1.0 f0-1) - (set! f0-1 -100000000.0) - ) - f0-1 - ) - ) - ) - ) - - -(defmethod puyp-sphere collide-cache ((obj collide-cache) (arg0 collide-puyp-work) (arg1 collide-cache-prim)) - (let ((f0-1 (ray-sphere-intersect - (-> arg0 start-pos) - (-> arg0 move-dist) - (the-as vector (-> arg1 prim-core)) - (-> arg1 prim-core world-sphere w) - ) - ) - ) + (if (zero? (logand arg4 (-> (the-as collide-shape-prim-sphere (-> (the-as collide-cache-prim s2-0) prim)) pat))) + (puyp-sphere obj gp-0 (the-as collide-cache-prim s2-0)))))) + (set! s2-0 (-> (the-as (inline-array collide-cache-prim) s2-0) 1)))) + (let ((f0-1 (-> gp-0 best-u))) (if (< 1.0 f0-1) (set! f0-1 -100000000.0)) f0-1)))) + +(defmethod puyp-sphere ((obj collide-cache) (arg0 collide-puyp-work) (arg1 collide-cache-prim)) + (let ((f0-1 (ray-sphere-intersect (-> arg0 start-pos) + (-> arg0 move-dist) + (the-as vector (-> arg1 prim-core)) + (-> arg1 prim-core world-sphere w)))) (when (and (>= f0-1 0.0) (< f0-1 (-> arg0 best-u))) (set! (-> arg0 best-u) f0-1) (let ((gp-0 (-> arg0 tri-out))) @@ -2302,166 +1780,93 @@ (vector-normalize! (-> gp-0 normal) 1.0) (set! (-> gp-0 vertex 0 quad) (-> gp-0 intersect quad)) (point-in-plane-<-point+normal! (-> gp-0 vertex 1) (-> gp-0 intersect) (-> gp-0 normal)) - (let* ((a0-11 (vector-normalize! - (vector-! (new 'stack-no-clear 'vector) (-> gp-0 vertex 1) (the-as vector (-> gp-0 vertex))) - 1.0 - ) - ) - (a2-5 (vector-cross! (new 'stack-no-clear 'vector) (-> gp-0 normal) a0-11)) - ) - (vector+*! (-> gp-0 vertex 2) (-> gp-0 intersect) a2-5 4096.0) - ) - ) - ) - ) - ) - -(defmethod fill-and-probe-using-line-sphere collide-cache ((obj collide-cache) - (arg0 vector) - (arg1 vector) - (arg2 float) - (arg3 collide-kind) - (arg4 process) - (arg5 collide-tri-result) - (arg6 pat-surface) - ) + (let* ((a0-11 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> gp-0 vertex 1) (the-as vector (-> gp-0 vertex))) 1.0)) + (a2-5 (vector-cross! (new 'stack-no-clear 'vector) (-> gp-0 normal) a0-11))) + (vector+*! (-> gp-0 vertex 2) (-> gp-0 intersect) a2-5 4096.0)))))) + +(defmethod fill-and-probe-using-line-sphere ((obj collide-cache) (arg0 vector) (arg1 vector) (arg2 float) (arg3 collide-kind) (arg4 process) (arg5 collide-tri-result) (arg6 pat-surface)) (fill-using-line-sphere obj arg0 arg1 arg2 arg3 (the-as process-drawable arg4) arg6) - (probe-using-line-sphere obj arg0 arg1 arg2 arg3 arg5 arg6) - ) + (probe-using-line-sphere obj arg0 arg1 arg2 arg3 arg5 arg6)) (deftype collide-puls-work (structure) - ((ignore-pat pat-surface :offset-assert 0) - (tri-out collide-tri-result :offset-assert 4) - (bsphere sphere :inline :offset-assert 16) - (move-dist vector :inline :offset-assert 32) - ) + ((ignore-pat pat-surface :offset-assert 0) + (tri-out collide-tri-result :offset-assert 4) + (bsphere sphere :inline :offset-assert 16) + (move-dist vector :inline :offset-assert 32)) :method-count-assert 9 - :size-assert #x30 - :flag-assert #x900000030 - ) - - -(defmethod probe-using-line-sphere collide-cache ((obj collide-cache) - (arg0 vector) - (arg1 vector) - (arg2 float) - (arg3 collide-kind) - (arg4 collide-tri-result) - (arg5 pat-surface) - ) + :size-assert #x30 + :flag-assert #x900000030) + +(defmethod probe-using-line-sphere ((obj collide-cache) (arg0 vector) (arg1 vector) (arg2 float) (arg3 collide-kind) (arg4 collide-tri-result) (arg5 pat-surface)) (rlet ((vf0 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 (new 'stack-no-clear 'collide-puls-work))) - (.mov vf4 arg2) - (.lvf vf3 (&-> arg0 quad)) - (.lvf vf2 (&-> arg1 quad)) - (set! (-> s4-0 ignore-pat) arg5) - (.mul.x.vf vf3 vf0 vf4 :mask #b1000) - (set! (-> s4-0 tri-out) arg4) - (.svf (&-> s4-0 move-dist quad) vf2) - (.svf (&-> s4-0 bsphere quad) vf3) - (let ((s3-0 (the-as object (-> obj prims))) - (f30-0 -100000000.0) - ) - (countdown (s2-0 (-> obj num-prims)) - (when (and (logtest? arg3 (-> (the-as collide-cache-prim s3-0) prim-core collide-as)) - (logtest? (-> (the-as collide-cache-prim s3-0) prim-core action) (collide-action solid)) - ) - (cond - ((>= (-> (the-as collide-cache-prim s3-0) prim-core prim-type) 0) - (let ((f0-0 ((method-of-type collide-cache-prim resolve-moving-sphere-tri) - (the-as collide-cache-prim s3-0) - (-> s4-0 tri-out) - (the-as collide-prim-core (-> s4-0 bsphere)) - (-> s4-0 move-dist) - f30-0 - (collide-action solid) - ) - ) - ) - (if (>= f0-0 0.0) - (set! f30-0 f0-0) - ) - ) - ) - (else - (when (zero? (logand arg5 - (-> (the-as collide-shape-prim-sphere (-> (the-as collide-cache-prim s3-0) prim)) pat) - ) - ) - (let ((f0-1 ((method-of-type collide-cache-prim resolve-moving-sphere-sphere) - (the-as collide-cache-prim s3-0) - (-> s4-0 tri-out) - (the-as collide-prim-core (-> s4-0 bsphere)) - (-> s4-0 move-dist) - f30-0 - (collide-action solid) - ) - ) - ) - (if (>= f0-1 0.0) - (set! f30-0 f0-1) - ) - ) - ) - ) - ) - ) - (set! s3-0 (-> (the-as (inline-array collide-cache-prim) s3-0) 1)) - ) - f30-0 - ) - ) - ) - ) - -(defmethod fill-and-probe-using-spheres collide-cache ((obj collide-cache) (arg0 collide-using-spheres-params)) + (vf4 :class vf)) + (init-vf0-vector) + (let ((s4-0 (new 'stack-no-clear 'collide-puls-work))) + (.mov vf4 arg2) + (.lvf vf3 (&-> arg0 quad)) + (.lvf vf2 (&-> arg1 quad)) + (set! (-> s4-0 ignore-pat) arg5) + (.mul.x.vf vf3 vf0 vf4 :mask #b1000) + (set! (-> s4-0 tri-out) arg4) + (.svf (&-> s4-0 move-dist quad) vf2) + (.svf (&-> s4-0 bsphere quad) vf3) + (let ((s3-0 (the-as object (-> obj prims))) + (f30-0 -100000000.0)) + (countdown (s2-0 (-> obj num-prims)) + (when (and (logtest? arg3 (-> (the-as collide-cache-prim s3-0) prim-core collide-as)) + (logtest? (-> (the-as collide-cache-prim s3-0) prim-core action) (collide-action solid))) + (cond + ((>= (-> (the-as collide-cache-prim s3-0) prim-core prim-type) 0) + (let ((f0-0 ((method-of-type collide-cache-prim resolve-moving-sphere-tri) + (the-as collide-cache-prim s3-0) + (-> s4-0 tri-out) + (the-as collide-prim-core (-> s4-0 bsphere)) + (-> s4-0 move-dist) + f30-0 + (collide-action solid)))) + (if (>= f0-0 0.0) (set! f30-0 f0-0)))) + (else + (when (zero? (logand arg5 (-> (the-as collide-shape-prim-sphere (-> (the-as collide-cache-prim s3-0) prim)) pat))) + (let ((f0-1 ((method-of-type collide-cache-prim resolve-moving-sphere-sphere) + (the-as collide-cache-prim s3-0) + (-> s4-0 tri-out) + (the-as collide-prim-core (-> s4-0 bsphere)) + (-> s4-0 move-dist) + f30-0 + (collide-action solid)))) + (if (>= f0-1 0.0) (set! f30-0 f0-1))))))) + (set! s3-0 (-> (the-as (inline-array collide-cache-prim) s3-0) 1))) + f30-0)))) + +(defmethod fill-and-probe-using-spheres ((obj collide-cache) (arg0 collide-using-spheres-params)) (fill-using-spheres obj arg0) - (probe-using-spheres obj arg0) - ) + (probe-using-spheres obj arg0)) -(defmethod fill-using-spheres collide-cache ((obj collide-cache) (arg0 collide-using-spheres-params)) +(defmethod fill-using-spheres ((obj collide-cache) (arg0 collide-using-spheres-params)) (let ((s4-0 (new 'stack-no-clear 'bounding-box))) (set-from-spheres! s4-0 (-> arg0 spheres) (the-as int (-> arg0 num-spheres))) ;; this box looks correct - (fill-using-bounding-box - obj - s4-0 - (-> arg0 collide-with) - (-> arg0 proc) - (the-as pat-surface (-> arg0 ignore-pat)) - ) - ) - (none) - ) - -(defmethod probe-using-spheres collide-cache ((obj collide-cache) (arg0 collide-using-spheres-params)) + (fill-using-bounding-box obj s4-0 (-> arg0 collide-with) (-> arg0 proc) (the-as pat-surface (-> arg0 ignore-pat)))) + (none)) + +(defmethod probe-using-spheres ((obj collide-cache) (arg0 collide-using-spheres-params)) (local-vars (v1-12 symbol)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (let ((s5-0 (scratchpad-object collide-puss-work)) (a3-0 64) - (a2-0 (-> arg0 num-spheres)) - ) + (a2-0 (-> arg0 num-spheres))) (let ((v1-0 (-> s5-0 spheres)) - (a1-1 (-> arg0 spheres)) - ) - (let ((a3-1 (- a2-0 (the-as uint a3-0)))) - (nop!) - (b! (> (the-as int a3-1) 0) cfg-20 :delay (nop!)) - ) + (a1-1 (-> arg0 spheres))) + (let ((a3-1 (- a2-0 (the-as uint a3-0)))) (nop!) (b! (> (the-as int a3-1) 0) cfg-20 :delay (nop!))) (b! (zero? a2-0) cfg-5 :delay (.lvf vf1 a1-1)) (let ((a2-1 (+ a2-0 -1)) - (a1-2 (the-as (inline-array sphere) (-> a1-1 1))) - ) + (a1-2 (the-as (inline-array sphere) (-> a1-1 1)))) (.sub.w.vf vf2 vf1 vf1 :mask #b111) (.svf (&-> v1-0 0 bsphere quad) vf1) (.add.w.vf vf3 vf1 vf1 :mask #b111) @@ -2494,10 +1899,7 @@ (.svf (&-> v1-1 bbox4w min quad) vf4) (nop!) (.svf (&-> v1-1 bbox4w max quad) vf5) - (b! #t cfg-3 :delay (set! v1-1 (&+ v1-1 48))) - ) - ) - ) + (b! #t cfg-3 :delay (set! v1-1 (&+ v1-1 48)))))) (label cfg-5) (.ftoi.vf vf2 vf2) (nop!) @@ -2509,36 +1911,27 @@ (.svf (&-> s5-0 spheres-bbox4w max quad) vf3) (let ((s4-0 (the-as collide-cache-prim (-> obj prims))) (s3-0 (-> arg0 collide-with)) - (s2-0 (-> obj num-prims)) - ) + (s2-0 (-> obj num-prims))) (b! #t cfg-18 :delay (nop!)) (label cfg-6) (+! s2-0 -1) (when (logtest? s3-0 (-> s4-0 prim-core collide-as)) (when (or (not (-> arg0 solid-only)) (logtest? (-> s4-0 prim-core action) (collide-action solid))) (if (>= (-> s4-0 prim-core prim-type) 0) - (set! v1-12 (collide-puss-work-method-9 s5-0 s4-0 arg0)) - (set! v1-12 (collide-puss-work-method-10 s5-0 s4-0 arg0)) - ) + (set! v1-12 (collide-puss-work-method-9 s5-0 s4-0 arg0)) + (set! v1-12 (collide-puss-work-method-10 s5-0 s4-0 arg0))) (when v1-12 ;; uncomment to view the point that blocks you from exiting duck. - ;;(add-debug-point #t (bucket-id debug-no-zbuf) (-> s5-0 closest-pt)) - (return #t) - ) - ) - ) + ;;(add-debug-point #t (bucket-id debug-no-zbuf) (-> s5-0 closest-pt)) + (return #t)))) (&+! s4-0 48) (label cfg-18) - (b! (nonzero? s2-0) cfg-6 :delay (nop!)) - ) + (b! (nonzero? s2-0) cfg-6 :delay (nop!))) (b! #t cfg-21 :delay (nop!)) (label cfg-20) ;; fixed bad format string - (format 0 "ERROR: Exceeded max # of spheres in collide-cache::probe-using-spheres!~%") - ) + (format 0 "ERROR: Exceeded max # of spheres in collide-cache::probe-using-spheres!~%")) (label cfg-21) - #f - ) - ) + #f)) -;; todo a bunch of suffering. \ No newline at end of file +;; todo a bunch of suffering. diff --git a/goal_src/jak1/engine/collide/collide-edge-grab-h.gc b/goal_src/jak1/engine/collide/collide-edge-grab-h.gc index 641f5fd3c6..ef1570c43b 100644 --- a/goal_src/jak1/engine/collide/collide-edge-grab-h.gc +++ b/goal_src/jak1/engine/collide/collide-edge-grab-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/geometry/bounding-box-h.gc") -;; name: collide-edge-grab-h.gc -;; name in dgo: collide-edge-grab-h -;; dgos: GAME, ENGINE - ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Edge Grab ;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -20,143 +15,138 @@ ;; DECOMP BEGINS (deftype edge-grab-info (structure) - ((world-vertex vector 6 :inline) - (local-vertex vector 6 :inline) - (actor-cshape-prim-offset int32) - (actor-handle handle) - (hanging-matrix matrix :inline) - (edge-vertex vector 2 :inline :overlay-at (-> world-vertex 0)) - (center-hold vector :inline :overlay-at (-> world-vertex 2)) - (tri-vertex vector 3 :inline :overlay-at (-> world-vertex 3)) - (left-hand-hold vector :inline) - (right-hand-hold vector :inline) - (center-hold-old vector :inline) - (edge-tri-pat uint32) - ) + ((world-vertex vector 6 :inline) + (local-vertex vector 6 :inline) + (actor-cshape-prim-offset int32) + (actor-handle handle) + (hanging-matrix matrix :inline) + (edge-vertex vector 2 :inline :overlay-at (-> world-vertex 0)) + (center-hold vector :inline :overlay-at (-> world-vertex 2)) + (tri-vertex vector 3 :inline :overlay-at (-> world-vertex 3)) + (left-hand-hold vector :inline) + (right-hand-hold vector :inline) + (center-hold-old vector :inline) + (edge-tri-pat uint32)) (:methods - (edge-grab-info-method-9 (_type_) symbol) - (debug-draw (_type_) symbol) - ) - ) + (edge-grab-info-method-9 (_type_) symbol) + (debug-draw (_type_) symbol))) ;; og:preserve-this (declare-type collide-cache-tri structure) -(deftype collide-edge-tri (structure) - ((ctri collide-cache-tri) - (normal vector :inline) - ) - ) +(deftype collide-edge-tri (structure) + ((ctri collide-cache-tri) + (normal vector :inline))) (deftype collide-edge-edge (structure) - ((ignore basic) - (etri collide-edge-tri) - (vertex-ptr (inline-array vector) 2) - (outward vector :inline) - (edge-vec-norm vector :inline) - ) - ) - + ((ignore basic) + (etri collide-edge-tri) + (vertex-ptr (inline-array vector) 2) + (outward vector :inline) + (edge-vec-norm vector :inline))) (deftype collide-edge-hold-item (structure) - ((next collide-edge-hold-item) - (rating float) - (split int8) - (edge collide-edge-edge) - (center-pt vector :inline) - (outward-pt vector :inline) - ) - ) - + ((next collide-edge-hold-item) + (rating float) + (split int8) + (edge collide-edge-edge) + (center-pt vector :inline) + (outward-pt vector :inline))) (deftype collide-edge-hold-list (structure) - ((num-allocs uint32) - (num-attempts uint32) - (head collide-edge-hold-item) - (items collide-edge-hold-item 32 :inline) - (attempts qword 32 :inline) - ) + ((num-allocs uint32) + (num-attempts uint32) + (head collide-edge-hold-item) + (items collide-edge-hold-item 32 :inline) + (attempts qword 32 :inline)) (:methods - (debug-draw (_type_) object) - (add-to-list! (_type_ collide-edge-hold-item) none) - ) - ) + (debug-draw (_type_) object) + (add-to-list! (_type_ collide-edge-hold-item) none))) ;; og:preserve-this (declare-type collide-cache basic) + (declare-type collide-shape basic) + (deftype collide-edge-work (structure) - ((ccache collide-cache) - (cshape collide-shape) - (num-verts uint32) - (num-edges uint32) - (num-tris uint32) - (cache-fill-box bounding-box :inline) - (within-reach-box bounding-box :inline) - (within-reach-box4w bounding-box4w :inline) - (search-pt vector :inline) - (search-dir-vec vector :inline) - (max-dist-sqrd-to-outward-pt float) - (max-dir-cosa-delta float) - (split-dists float 2) - (outward-offset vector :inline) - (local-cache-fill-box bounding-box :inline) - (local-within-reach-box bounding-box :inline) - (local-player-spheres sphere 12 :inline) - (world-player-spheres sphere 12 :inline) - (local-player-hanging-spheres sphere 6 :inline :overlay-at (-> local-player-spheres 0)) - (world-player-hanging-spheres sphere 6 :inline :overlay-at (-> world-player-spheres 0)) - (local-player-leap-up-spheres sphere 6 :inline :overlay-at (-> local-player-spheres 6)) - (world-player-leap-up-spheres sphere 6 :inline :overlay-at (-> world-player-spheres 6)) - (verts vector 64 :inline) - (edges collide-edge-edge 96 :inline) - (tris collide-edge-tri 48 :inline) - (hold-list collide-edge-hold-list :inline) - ) + ((ccache collide-cache) + (cshape collide-shape) + (num-verts uint32) + (num-edges uint32) + (num-tris uint32) + (cache-fill-box bounding-box :inline) + (within-reach-box bounding-box :inline) + (within-reach-box4w bounding-box4w :inline) + (search-pt vector :inline) + (search-dir-vec vector :inline) + (max-dist-sqrd-to-outward-pt float) + (max-dir-cosa-delta float) + (split-dists float 2) + (outward-offset vector :inline) + (local-cache-fill-box bounding-box :inline) + (local-within-reach-box bounding-box :inline) + (local-player-spheres sphere 12 :inline) + (world-player-spheres sphere 12 :inline) + (local-player-hanging-spheres sphere 6 :inline :overlay-at (-> local-player-spheres 0)) + (world-player-hanging-spheres sphere 6 :inline :overlay-at (-> world-player-spheres 0)) + (local-player-leap-up-spheres sphere 6 :inline :overlay-at (-> local-player-spheres 6)) + (world-player-leap-up-spheres sphere 6 :inline :overlay-at (-> world-player-spheres 6)) + (verts vector 64 :inline) + (edges collide-edge-edge 96 :inline) + (tris collide-edge-tri 48 :inline) + (hold-list collide-edge-hold-list :inline)) (:methods - (search-for-edges (_type_ collide-edge-hold-list) symbol) - (debug-draw-edges (_type_) object) - (debug-draw-tris (_type_) none) - (debug-draw-sphere (_type_) symbol) - (compute-center-point! (_type_ collide-edge-edge vector) float) - (collide-edge-work-method-14 (_type_ vector vector int) float) - (find-grabbable-edges! (_type_) none) - (find-grabbable-tris! (_type_) none) - (should-add-to-list? (_type_ collide-edge-hold-item collide-edge-edge) symbol) - (find-best-grab! (_type_ collide-edge-hold-list edge-grab-info) symbol) - (check-grab-for-collisions (_type_ collide-edge-hold-item edge-grab-info) symbol) - ) - ) - - -(define *collide-edge-work* (new 'static 'collide-edge-work - :max-dist-sqrd-to-outward-pt 37748736.0 - :max-dir-cosa-delta 0.6 - :split-dists (new 'static 'array float 2 1024.0 1433.6) - :outward-offset (new 'static 'vector :x 708.608 :y 13312.0 :w 1.0) - :local-cache-fill-box (new 'static 'bounding-box - :min (new 'static 'vector :x -8192.0 :y -11059.2 :z -8192.0 :w 1.0) - :max (new 'static 'vector :x 8192.0 :y 24576.0 :z 8192.0 :w 1.0) - ) - :local-within-reach-box (new 'static 'bounding-box - :min (new 'static 'vector :x -6144.0 :y 5324.8 :z -6144.0 :w 1.0) - :max (new 'static 'vector :x 6144.0 :y 11059.2 :z 6144.0 :w 1.0) - ) - :local-player-spheres (new 'static 'inline-array sphere 12 - (new 'static 'sphere :x 1720.32 :y -819.2 :w 1433.6) - (new 'static 'sphere :x 2293.76 :y -3276.8 :w 1884.16) - (new 'static 'sphere :x 1966.08 :y -6144.0 :w 1556.48) - (new 'static 'sphere :x 1966.08 :y -8601.6 :w 1556.48) - (new 'static 'sphere :x 1761.28 :y -11059.2 :w 1351.68) - (new 'static 'sphere :x 1679.36 :y -13312.0 :w 1269.76) - (new 'static 'sphere :x -737.28 :y 4096.0 :w 3072.0) - (new 'static 'sphere :x -737.28 :y 6553.6 :w 3072.0) - (new 'static 'sphere :x -737.28 :y 9420.8 :w 3072.0) - (new 'static 'sphere :x 1720.32 :y 3686.4 :w 2949.12) - (new 'static 'sphere :x 1720.32 :y 5734.4 :w 2949.12) - (new 'static 'sphere :x 1720.32 :y 8601.6 :w 2949.12) - ) - ) - ) + (search-for-edges (_type_ collide-edge-hold-list) symbol) + (debug-draw-edges (_type_) object) + (debug-draw-tris (_type_) none) + (debug-draw-sphere (_type_) symbol) + (compute-center-point! (_type_ collide-edge-edge vector) float) + (collide-edge-work-method-14 (_type_ vector vector int) float) + (find-grabbable-edges! (_type_) none) + (find-grabbable-tris! (_type_) none) + (should-add-to-list? (_type_ collide-edge-hold-item collide-edge-edge) symbol) + (find-best-grab! (_type_ collide-edge-hold-list edge-grab-info) symbol) + (check-grab-for-collisions (_type_ collide-edge-hold-item edge-grab-info) symbol))) + +(define *collide-edge-work* + (new 'static + 'collide-edge-work + :max-dist-sqrd-to-outward-pt 37748736.0 + :max-dir-cosa-delta 0.6 + :split-dists + (new 'static 'array float 2 1024.0 1433.6) + :outward-offset + (new 'static 'vector :x 708.608 :y 13312.0 :w 1.0) + :local-cache-fill-box + (new 'static + 'bounding-box + :min + (new 'static 'vector :x -8192.0 :y -11059.2 :z -8192.0 :w 1.0) + :max + (new 'static 'vector :x 8192.0 :y 24576.0 :z 8192.0 :w 1.0)) + :local-within-reach-box + (new 'static + 'bounding-box + :min + (new 'static 'vector :x -6144.0 :y 5324.8 :z -6144.0 :w 1.0) + :max + (new 'static 'vector :x 6144.0 :y 11059.2 :z 6144.0 :w 1.0)) + :local-player-spheres + (new 'static + 'inline-array + sphere + 12 + (new 'static 'sphere :x 1720.32 :y -819.2 :w 1433.6) + (new 'static 'sphere :x 2293.76 :y -3276.8 :w 1884.16) + (new 'static 'sphere :x 1966.08 :y -6144.0 :w 1556.48) + (new 'static 'sphere :x 1966.08 :y -8601.6 :w 1556.48) + (new 'static 'sphere :x 1761.28 :y -11059.2 :w 1351.68) + (new 'static 'sphere :x 1679.36 :y -13312.0 :w 1269.76) + (new 'static 'sphere :x -737.28 :y 4096.0 :w 3072.0) + (new 'static 'sphere :x -737.28 :y 6553.6 :w 3072.0) + (new 'static 'sphere :x -737.28 :y 9420.8 :w 3072.0) + (new 'static 'sphere :x 1720.32 :y 3686.4 :w 2949.12) + (new 'static 'sphere :x 1720.32 :y 5734.4 :w 2949.12) + (new 'static 'sphere :x 1720.32 :y 8601.6 :w 2949.12)))) (define-perm *edge-grab-info* edge-grab-info (new 'global 'edge-grab-info)) diff --git a/goal_src/jak1/engine/collide/collide-edge-grab.gc b/goal_src/jak1/engine/collide/collide-edge-grab.gc index c4b14c8cda..518cd8777a 100644 --- a/goal_src/jak1/engine/collide/collide-edge-grab.gc +++ b/goal_src/jak1/engine/collide/collide-edge-grab.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/surface-h.gc") (require "engine/collide/collide-edge-grab-h.gc") (require "kernel/gstate.gc") @@ -10,10 +9,6 @@ (require "engine/collide/collide-shape-h.gc") (require "engine/debug/debug.gc") -;; name: collide-edge-grab.gc -;; name in dgo: collide-edge-grab -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod find-edge-grabs! ((this target) (arg0 collide-cache)) @@ -25,21 +20,18 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) + (vf7 :class vf)) (let ((gp-0 *collide-edge-work*)) ;; reset the edge work... (set! (-> gp-0 num-verts) (the-as uint 0)) (set! (-> gp-0 num-edges) (the-as uint 0)) (set! (-> gp-0 num-tris) (the-as uint 0)) - (let ((v1-0 (-> this control))) (set! (-> gp-0 ccache) arg0) (.lvf vf1 (&-> gp-0 local-cache-fill-box min quad)) (.lvf vf2 (&-> gp-0 local-cache-fill-box max quad)) (set! (-> gp-0 cshape) v1-0) - (.lvf vf3 (&-> v1-0 trans quad)) - ) + (.lvf vf3 (&-> v1-0 trans quad))) ;; translate the cache filling box (.add.vf vf1 vf1 vf3 :mask #b111) (.add.vf vf2 vf2 vf3 :mask #b111) @@ -57,16 +49,12 @@ (.svf (&-> gp-0 within-reach-box max quad) vf5) (.svf (&-> gp-0 within-reach-box4w min quad) vf6) (.svf (&-> gp-0 within-reach-box4w max quad) vf7) - ;; Fill the collide cache! - (fill-using-bounding-box - arg0 - (-> gp-0 cache-fill-box) - (-> this control root-prim collide-with) - this - (new 'static 'pat-surface :noentity #x1) - ) - + (fill-using-bounding-box arg0 + (-> gp-0 cache-fill-box) + (-> this control root-prim collide-with) + this + (new 'static 'pat-surface :noentity #x1)) ;; Filter out tris that can't be grabbed (find-grabbable-tris! gp-0) (when (nonzero? (-> gp-0 num-tris)) @@ -82,22 +70,13 @@ (search-for-edges gp-0 (-> gp-0 hold-list)) (when (find-best-grab! gp-0 (-> gp-0 hold-list) *edge-grab-info*) (send-event *target* 'edge-grab) - (return (the-as object #f)) - ) - ) + (return (the-as object #f)))) ;; use target's heading (vector-z-quaternion! (-> gp-0 search-dir-vec) (-> *target* control unknown-quaternion00)) (search-for-edges gp-0 (-> gp-0 hold-list)) - (if (find-best-grab! gp-0 (-> gp-0 hold-list) *edge-grab-info*) - (send-event *target* 'edge-grab) - ) - 0 - ) - ) - ) - 0 - ) - ) + (if (find-best-grab! gp-0 (-> gp-0 hold-list) *edge-grab-info*) (send-event *target* 'edge-grab)) + 0))) + 0)) (defmethod search-for-edges ((this collide-edge-work) (arg0 collide-edge-hold-list)) "Iterate through edges, adding them to the collide-edge-hold-list, if they are good" @@ -106,8 +85,7 @@ (set! (-> arg0 num-attempts) (the-as uint 0)) (set! (-> arg0 head) #f) (let ((s4-0 (the-as collide-edge-hold-item (-> arg0 items))) - (s3-0 (the-as collide-edge-edge (-> this edges))) - ) + (s3-0 (the-as collide-edge-edge (-> this edges)))) ;; loop over edges (countdown (s2-0 (-> this num-edges)) (when (not (-> s3-0 ignore)) @@ -119,28 +97,19 @@ (+! (-> arg0 num-allocs) 1) (when (= (-> arg0 num-allocs) 32) (format 0 "ERROR: Reached limit of edge grab hold items!~%") - (return #f) - ) - (&+! s4-0 48) - ) - ) - (&+! s3-0 48) - ) - ) - #f - ) + (return #f)) + (&+! s4-0 48))) + (&+! s3-0 48))) + #f) ;; add to list. (defmethod-mips2c "(method 10 collide-edge-hold-list)" 10 collide-edge-hold-list) (deftype pbhp-stack-vars (structure) - ((edge collide-edge-edge) - (allocated basic) - (neg-hold-pt vector :inline) - (split-vec vector :inline) - ) - ) - + ((edge collide-edge-edge) + (allocated basic) + (neg-hold-pt vector :inline) + (split-vec vector :inline))) (defmethod-mips2c "(method 18 collide-edge-work)" 18 collide-edge-work) @@ -148,29 +117,19 @@ (local-vars (sv-144 (function vector vector vector float vector)) (sv-160 vector) (sv-176 vector)) (let* ((s3-0 (-> arg0 edge)) (s1-0 (-> s3-0 etri ctri)) - (s4-0 (-> s1-0 prim-index)) - ) + (s4-0 (-> s1-0 prim-index))) (let ((s0-0 (new 'stack-no-clear 'vector))) (vector+*! s0-0 (-> arg0 center-pt) (-> s3-0 edge-vec-norm) 1105.92) (let ((f0-0 (collide-edge-work-method-14 this (-> arg1 right-hand-hold) s0-0 (the-as int s4-0)))) - (if (< 491.52 f0-0) - (return #f) - ) - ) + (if (< 491.52 f0-0) (return #f))) (set! sv-144 vector+*!) (set! sv-160 s0-0) (set! sv-176 (-> arg0 center-pt)) (let ((a2-3 (vector-negate! (new 'stack-no-clear 'vector) (-> s3-0 edge-vec-norm))) - (a3-2 1105.92) - ) - (sv-144 sv-160 sv-176 a2-3 a3-2) - ) + (a3-2 1105.92)) + (sv-144 sv-160 sv-176 a2-3 a3-2)) (let ((f0-1 (collide-edge-work-method-14 this (-> arg1 left-hand-hold) s0-0 (the-as int s4-0)))) - (if (< 491.52 f0-1) - (return #f) - ) - ) - ) + (if (< 491.52 f0-1) (return #f)))) (set! (-> arg1 tri-vertex 0 quad) (-> s1-0 vertex 0 quad)) (set! (-> arg1 world-vertex 4 quad) (-> s1-0 vertex 1 quad)) (set! (-> arg1 world-vertex 5 quad) (-> s1-0 vertex 2 quad)) @@ -179,23 +138,15 @@ (set! (-> arg1 world-vertex 0 quad) (-> s3-0 vertex-ptr 0 0 quad)) (set! (-> arg1 world-vertex 1 quad) (-> s3-0 vertex-ptr 1 0 quad)) (set! (-> arg1 hanging-matrix vector 1 quad) (-> *target* control dynam gravity-normal quad)) - (vector-normalize! - (vector-! (-> arg1 hanging-matrix vector 2) (-> arg1 world-vertex 1) (the-as vector (-> arg1 world-vertex))) - 1.0 - ) - (vector-normalize! - (vector-cross! - (the-as vector (-> arg1 hanging-matrix)) - (-> arg1 hanging-matrix vector 2) - (-> arg1 hanging-matrix vector 1) - ) - 1.0 - ) - (vector-cross! - (-> arg1 hanging-matrix vector 2) - (the-as vector (-> arg1 hanging-matrix)) - (-> arg1 hanging-matrix vector 1) - ) + (vector-normalize! (vector-! (-> arg1 hanging-matrix vector 2) (-> arg1 world-vertex 1) (the-as vector (-> arg1 world-vertex))) + 1.0) + (vector-normalize! (vector-cross! (the-as vector (-> arg1 hanging-matrix)) + (-> arg1 hanging-matrix vector 2) + (-> arg1 hanging-matrix vector 1)) + 1.0) + (vector-cross! (-> arg1 hanging-matrix vector 2) + (the-as vector (-> arg1 hanging-matrix)) + (-> arg1 hanging-matrix vector 1)) (set! (-> arg1 hanging-matrix vector 3 quad) (-> arg1 center-hold quad)) (transform-vectors! (-> arg1 hanging-matrix) (-> this world-player-spheres) (-> this local-player-spheres) 12) (let ((a1-13 (new 'stack-no-clear 'collide-using-spheres-params))) @@ -205,37 +156,20 @@ (set! (-> a1-13 proc) #f) (set! (-> a1-13 ignore-pat) (new 'static 'pat-surface :noentity #x1)) (set! (-> a1-13 solid-only) #t) - (if (probe-using-spheres (-> this ccache) a1-13) - (return #f) - ) - ) + (if (probe-using-spheres (-> this ccache) a1-13) (return #f))) (let* ((v1-36 (the-as object (-> this ccache prims s4-0 prim))) - (a0-35 (-> (the-as collide-shape-prim v1-36) cshape)) - ) + (a0-35 (-> (the-as collide-shape-prim v1-36) cshape))) (cond (a0-35 - (set! (-> arg1 actor-cshape-prim-offset) (- (the-as int v1-36) (the-as int (-> a0-35 process)))) - (set! (-> arg1 actor-handle) (process->handle (-> a0-35 process))) - (let ((a1-19 - (-> a0-35 process node-list data (-> (the-as collide-shape-prim v1-36) transform-index) bone transform) - ) - (s5-1 (new 'stack-no-clear 'matrix)) - ) - (matrix-4x4-inverse! s5-1 a1-19) - (dotimes (s4-1 6) - (vector-matrix*! (-> arg1 local-vertex s4-1) (-> arg1 world-vertex s4-1) s5-1) - ) - ) - ) - (else - (set! (-> arg1 actor-cshape-prim-offset) 0) - (set! (-> arg1 actor-handle) (the-as handle #f)) - ) - ) - ) - ) - #t - ) + (set! (-> arg1 actor-cshape-prim-offset) (- (the-as int v1-36) (the-as int (-> a0-35 process)))) + (set! (-> arg1 actor-handle) (process->handle (-> a0-35 process))) + (let ((a1-19 (-> a0-35 process node-list data (-> (the-as collide-shape-prim v1-36) transform-index) bone transform)) + (s5-1 (new 'stack-no-clear 'matrix))) + (matrix-4x4-inverse! s5-1 a1-19) + (dotimes (s4-1 6) + (vector-matrix*! (-> arg1 local-vertex s4-1) (-> arg1 world-vertex s4-1) s5-1)))) + (else (set! (-> arg1 actor-cshape-prim-offset) 0) (set! (-> arg1 actor-handle) (the-as handle #f)))))) + #t) (defmethod edge-grab-info-method-9 ((this edge-grab-info)) (local-vars (v0-0 symbol) (v1-14 int)) @@ -248,36 +182,19 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) + (vf7 :class vf)) (init-vf0-vector) (let ((s5-0 (the-as object #f))) (set! (-> this center-hold-old quad) (-> this center-hold quad)) (let ((v1-1 (-> this actor-cshape-prim-offset))) (when (nonzero? v1-1) (let ((a0-5 (handle->process (-> this actor-handle)))) - (if (not (the-as process a0-5)) - (return #f) - ) + (if (not (the-as process a0-5)) (return #f)) (set! s5-0 (+ (the-as int a0-5) v1-1)) - (if (zero? (-> (the-as collide-shape-prim s5-0) prim-core collide-as)) - (return #f) - ) - (let ((s4-0 - (-> (the-as process-drawable a0-5) - node-list - data - (-> (the-as collide-shape-prim s5-0) transform-index) - bone - transform - ) - ) - ) + (if (zero? (-> (the-as collide-shape-prim s5-0) prim-core collide-as)) (return #f)) + (let ((s4-0 (-> (the-as process-drawable a0-5) node-list data (-> (the-as collide-shape-prim s5-0) transform-index) bone transform))) (dotimes (s3-0 6) - (vector-matrix*! (-> this world-vertex s3-0) (-> this local-vertex s3-0) s4-0) - ) - ) - ) + (vector-matrix*! (-> this world-vertex s3-0) (-> this local-vertex s3-0) s4-0)))) (.lvf vf1 (&-> this world-vertex 3 quad)) (.lvf vf2 (&-> this world-vertex 4 quad)) (.lvf vf3 (&-> this world-vertex 5 quad)) @@ -295,46 +212,26 @@ (nop!) (.mul.vf vf6 vf6 Q :mask #b111) (.mov v1-14 vf6) - (b! (>= (the-as float (sar (the-as int v1-14) 32)) f1-0) cfg-17) - ) + (b! (>= (the-as float (sar (the-as int v1-14) 32)) f1-0) cfg-17)) (set! v0-0 #f) (b! #t cfg-27 :delay (nop!)) (label cfg-17) (set! (-> this hanging-matrix vector 1 quad) (-> *target* control dynam gravity-normal quad)) - (vector-normalize! - (vector-! (-> this hanging-matrix vector 2) (-> this world-vertex 1) (the-as vector (-> this world-vertex))) - 1.0 - ) - (vector-normalize! - (vector-cross! - (the-as vector (-> this hanging-matrix)) - (-> this hanging-matrix vector 2) - (-> this hanging-matrix vector 1) - ) - 1.0 - ) - (vector-cross! - (-> this hanging-matrix vector 2) - (the-as vector (-> this hanging-matrix)) - (-> this hanging-matrix vector 1) - ) + (vector-normalize! (vector-! (-> this hanging-matrix vector 2) (-> this world-vertex 1) (the-as vector (-> this world-vertex))) + 1.0) + (vector-normalize! (vector-cross! (the-as vector (-> this hanging-matrix)) + (-> this hanging-matrix vector 2) + (-> this hanging-matrix vector 1)) + 1.0) + (vector-cross! (-> this hanging-matrix vector 2) + (the-as vector (-> this hanging-matrix)) + (-> this hanging-matrix vector 1)) (set! (-> this hanging-matrix vector 3 quad) (-> this center-hold quad)) (let ((v1-21 *collide-edge-work*)) - (transform-vectors! - (-> this hanging-matrix) - (-> v1-21 world-player-spheres) - (-> v1-21 local-player-spheres) - 12 - ) - ) - ) - ) + (transform-vectors! (-> this hanging-matrix) (-> v1-21 world-player-spheres) (-> v1-21 local-player-spheres) 12)))) (let ((v1-22 *collide-edge-work*) - (a1-14 (new 'stack-no-clear 'collide-using-spheres-params)) - ) - (let ((a0-24 'target-edge-grab-jump)) - (b! (!= (-> *target* next-state name) a0-24) cfg-20 :delay (nop!)) - ) + (a1-14 (new 'stack-no-clear 'collide-using-spheres-params))) + (let ((a0-24 'target-edge-grab-jump)) (b! (!= (-> *target* next-state name) a0-24) cfg-20 :delay (nop!))) (set! (-> a1-14 spheres) (-> v1-22 world-player-leap-up-spheres)) (set! (-> a1-14 num-spheres) (the-as uint 6)) (set! (-> a1-14 collide-with) (-> v1-22 cshape root-prim collide-with)) @@ -350,26 +247,20 @@ (set! (-> a1-14 ignore-pat) (new 'static 'pat-surface :noentity #x1)) (set! (-> a1-14 solid-only) #t) (label cfg-21) - (b! (not (fill-and-probe-using-spheres *collide-cache* a1-14)) cfg-24) - ) + (b! (not (fill-and-probe-using-spheres *collide-cache* a1-14)) cfg-24)) (set! v0-0 #f) (b! #t cfg-27 :delay (nop!)) (the-as none 0) (label cfg-24) (b! (not (the-as int s5-0)) cfg-26) - (let ((v1-40 (-> (the-as collide-shape-prim s5-0) cshape))) - (send-event (-> v1-40 process) 'edge-grabbed this) - ) - ) + (let ((v1-40 (-> (the-as collide-shape-prim s5-0) cshape))) (send-event (-> v1-40 process) 'edge-grabbed this))) (label cfg-26) (set! v0-0 #t) (label cfg-27) - v0-0 - ) - ) - + v0-0)) (defmethod-mips2c "(method 16 collide-edge-work)" 16 collide-edge-work) + (defmethod-mips2c "(method 15 collide-edge-work)" 15 collide-edge-work) (defmethod collide-edge-work-method-14 ((this collide-edge-work) (arg0 vector) (arg1 vector) (arg2 int)) @@ -382,20 +273,11 @@ (let ((f0-0 (vector-segment-distance-point! arg1 (-> v1-3 vertex-ptr 0 0) (-> v1-3 vertex-ptr 1 0) s2-0))) (when (or (< f30-0 0.0) (< f0-0 f30-0)) (set! f30-0 f0-0) - (set! (-> arg0 quad) (-> s2-0 quad)) - ) - ) - ) - ) - ) - ) - ) - f30-0 - ) - ) + (set! (-> arg0 quad) (-> s2-0 quad))))))))) + f30-0)) ;; 17 cew -(defmethod should-add-to-list? collide-edge-work ((this collide-edge-work) (arg0 collide-edge-hold-item) (arg1 collide-edge-edge)) +(defmethod should-add-to-list? ((this collide-edge-work) (arg0 collide-edge-hold-item) (arg1 collide-edge-edge)) (local-vars (r0-0 uint128) (v1-1 uint128) @@ -405,8 +287,7 @@ (v1-6 float) (a3-1 uint128) (t0-0 uint128) - (t1-1 uint128) - ) + (t1-1 uint128)) (rlet ((Q :class vf) (vf0 :class vf) (vf1 :class vf) @@ -419,8 +300,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (nop!) (nop!) @@ -436,10 +316,7 @@ (.pcgtw t1-1 t0-0 t1-0) (.lvf vf4 (&-> this outward-offset quad)) (.pcgtw a3-1 a3-0 t0-0) - (.lvf vf5 (&-> v1-0 trans quad)) - ) - ) - ) + (.lvf vf5 (&-> v1-0 trans quad))))) (.por v1-1 t1-1 a3-1) (let ((f0-0 (-> this max-dist-sqrd-to-outward-pt))) (.ppach v1-2 r0-0 v1-1) @@ -464,9 +341,7 @@ (.mul.vf vf9 vf8 vf6) (.add.z.vf vf9 vf9 vf9 :mask #b1) (.mov v1-5 vf9) - (b! (< v1-5 f1-0) cfg-4) - ) - ) + (b! (< v1-5 f1-0) cfg-4))) (.sub.vf vf7 vf11 vf1) (.svf (&-> arg0 center-pt quad) vf1) (.mul.vf vf7 vf7 vf7) @@ -483,10 +358,7 @@ (b! #t cfg-6 :delay (nop!)) (set! v0-0 (the-as symbol 0)) (label cfg-6) - v0-0 - ) - ) - ) + v0-0))) (defmethod compute-center-point! ((this collide-edge-work) (arg0 collide-edge-edge) (arg1 vector)) (local-vars (v0-0 float) (v1-1 float) (v1-2 float) (v1-3 float)) @@ -502,18 +374,15 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (.mov.vf vf7 vf0) (.lvf vf1 (&-> this search-pt quad)) (let ((f0-0 0.0)) (let ((v1-0 (-> arg0 vertex-ptr 0)) - (a0-1 (-> arg0 vertex-ptr 1)) - ) + (a0-1 (-> arg0 vertex-ptr 1))) (.lvf vf2 (&-> v1-0 0 quad)) - (.lvf vf3 (&-> a0-1 0 quad)) - ) + (.lvf vf3 (&-> a0-1 0 quad))) (.sub.vf vf4 vf1 vf2) (.sub.vf vf5 vf3 vf2) (.mul.vf vf6 vf5 vf5) @@ -540,74 +409,41 @@ (b! (< f3-0 f0-0) cfg-4 :likely-delay (set! f3-0 f0-0)) (b! (< f1-0 f3-0) cfg-4 :likely-delay (set! f3-0 f1-0)) (label cfg-4) - (let ((v1-4 (* f3-0 f2-0))) - (.mov vf11 v1-4) - ) - ) - ) - ) - ) + (let ((v1-4 (* f3-0 f2-0))) (.mov vf11 v1-4)))))) (.mul.x.vf vf7 vf5 vf11 :mask #b111) (.add.vf vf7 vf7 vf2 :mask #b111) (.svf (&-> arg1 quad) vf7) (.mov v0-0 vf7) - v0-0 - ) - ) - + v0-0)) (defmethod debug-draw ((this edge-grab-info)) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> this world-vertex)) - (-> this world-vertex 1) - (new 'static 'rgba :r #xff :a #x60) - #f - (the-as rgba -1) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> this center-hold) - 204.8 - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> this left-hand-hold) - 204.8 - (new 'static 'rgba :r #xff :g #xff :a #x60) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> this right-hand-hold) - 204.8 - (new 'static 'rgba :r #xff :g #xff :a #x60) - ) - (add-debug-outline-triangle - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> this tri-vertex)) - (-> this world-vertex 4) - (-> this world-vertex 5) - (new 'static 'rgba :r #xff :a #x30) - ) - (the-as symbol (cond - ((nonzero? (-> this actor-cshape-prim-offset)) - (if (handle->process (-> this actor-handle)) - (format *stdcon* "grab: ~A~%" (-> this actor-handle process 0 name)) - (format *stdcon* "grab: invalid handle~%") - ) - ) - (else - (format *stdcon* "grab: ground~%") - ) - ) - ) - ) + (add-debug-line #t + (bucket-id debug-no-zbuf) + (the-as vector (-> this world-vertex)) + (-> this world-vertex 1) + (new 'static 'rgba :r #xff :a #x60) + #f + (the-as rgba -1)) + (add-debug-sphere #t (bucket-id debug-no-zbuf) (-> this center-hold) 204.8 (new 'static 'rgba :r #xff :g #xff :a #x80)) + (add-debug-sphere #t (bucket-id debug-no-zbuf) (-> this left-hand-hold) 204.8 (new 'static 'rgba :r #xff :g #xff :a #x60)) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (-> this right-hand-hold) + 204.8 + (new 'static 'rgba :r #xff :g #xff :a #x60)) + (add-debug-outline-triangle #t + (bucket-id debug-no-zbuf) + (the-as vector (-> this tri-vertex)) + (-> this world-vertex 4) + (-> this world-vertex 5) + (new 'static 'rgba :r #xff :a #x30)) + (the-as symbol + (cond + ((nonzero? (-> this actor-cshape-prim-offset)) + (if (handle->process (-> this actor-handle)) + (format *stdcon* "grab: ~A~%" (-> this actor-handle process 0 name)) + (format *stdcon* "grab: invalid handle~%"))) + (else (format *stdcon* "grab: ground~%"))))) (defmethod debug-draw-edges ((this collide-edge-work)) (let ((gp-0 0)) @@ -615,65 +451,41 @@ (let* ((s3-0 (-> this edges s4-0)) (a2-0 (-> s3-0 vertex-ptr 0 0)) (a3-0 (-> s3-0 vertex-ptr 1 0)) - (s2-0 (new 'stack-no-clear 'vector)) - ) + (s2-0 (new 'stack-no-clear 'vector))) (vector+! s2-0 a2-0 a3-0) (vector-float*! s2-0 s2-0 0.5) (cond ((-> s3-0 ignore) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - a2-0 - a3-0 - (new 'static 'rgba :r #x7f :g #x7f :b #x7f :a #x50) - #f - (the-as rgba -1) - ) - (+! gp-0 1) - ) + (add-debug-line #t + (bucket-id debug-no-zbuf) + a2-0 + a3-0 + (new 'static 'rgba :r #x7f :g #x7f :b #x7f :a #x50) + #f + (the-as rgba -1)) + (+! gp-0 1)) (else - (add-debug-line - #t - (bucket-id debug-no-zbuf) - a2-0 - a3-0 - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x60) - #f - (the-as rgba -1) - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - s2-0 - (-> s3-0 outward) - (meters 0.3) - (new 'static 'rgba :r #xff :a #x80) - ) - ) - ) - ) - ) - (format *stdcon* "found ~D edges (and ~D ignored)~%" (- (-> this num-edges) (the-as uint gp-0)) gp-0) - ) - ) + (add-debug-line #t + (bucket-id debug-no-zbuf) + a2-0 + a3-0 + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x60) + #f + (the-as rgba -1)) + (add-debug-vector #t (bucket-id debug-no-zbuf) s2-0 (-> s3-0 outward) (meters 0.3) (new 'static 'rgba :r #xff :a #x80)))))) + (format *stdcon* "found ~D edges (and ~D ignored)~%" (- (-> this num-edges) (the-as uint gp-0)) gp-0))) (defmethod debug-draw-sphere ((this collide-edge-work)) (dotimes (s5-0 (the-as int (-> this num-verts))) (let ((a2-0 (-> this verts s5-0))) - (add-debug-sphere #t (bucket-id debug-no-zbuf) a2-0 819.2 (new 'static 'rgba :r #xff :g #xff :a #x80)) - ) - ) - #f - ) + (add-debug-sphere #t (bucket-id debug-no-zbuf) a2-0 819.2 (new 'static 'rgba :r #xff :g #xff :a #x80)))) + #f) (defmethod debug-draw ((this collide-edge-hold-list)) (let ((s4-0 (-> this head)) - (s5-0 0) - ) + (s5-0 0)) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s2-0 #t) - ) + (s2-0 #t)) (set! (-> s3-0 quad) (-> *target* control unknown-vector90 quad)) (while s4-0 (+! s5-0 1) @@ -681,129 +493,85 @@ (add-debug-sphere #t (bucket-id debug-no-zbuf) s3-0 409.6 (new 'static 'rgba :a #x80)) (cond (s2-0 - (set! s2-0 #f) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> s4-0 center-pt) - 614.4 - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - (add-debug-sphere #t (bucket-id debug-no-zbuf) (-> s4-0 outward-pt) 409.6 (new 'static 'rgba :r #xff :a #x80)) - ) + (set! s2-0 #f) + (add-debug-sphere #t (bucket-id debug-no-zbuf) (-> s4-0 center-pt) 614.4 (new 'static 'rgba :r #xff :g #xff :a #x80)) + (add-debug-sphere #t (bucket-id debug-no-zbuf) (-> s4-0 outward-pt) 409.6 (new 'static 'rgba :r #xff :a #x80))) (else - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> s4-0 center-pt) - 614.4 - (new 'static 'rgba :r #x7f :g #x7f :a #x40) - ) - (add-debug-sphere #t (bucket-id debug-no-zbuf) (-> s4-0 outward-pt) 409.6 (new 'static 'rgba :r #x7f :a #x40)) - ) - ) - (set! s4-0 (-> s4-0 next)) - ) - ) - (format *stdcon* "hold list has ~D item(s)~%" s5-0) - ) + (add-debug-sphere #t (bucket-id debug-no-zbuf) (-> s4-0 center-pt) 614.4 (new 'static 'rgba :r #x7f :g #x7f :a #x40)) + (add-debug-sphere #t (bucket-id debug-no-zbuf) (-> s4-0 outward-pt) 409.6 (new 'static 'rgba :r #x7f :a #x40)))) + (set! s4-0 (-> s4-0 next)))) + (format *stdcon* "hold list has ~D item(s)~%" s5-0)) (dotimes (s5-1 (the-as int (-> this num-attempts))) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> this attempts s5-1)) - 409.6 - (new 'static 'rgba :a #x40) - ) - ) - (format *stdcon* "hold list has ~D attempt(s)~%" (-> this num-attempts)) - ) + (add-debug-sphere #t (bucket-id debug-no-zbuf) (the-as vector (-> this attempts s5-1)) 409.6 (new 'static 'rgba :a #x40))) + (format *stdcon* "hold list has ~D attempt(s)~%" (-> this num-attempts))) (defmethod debug-draw-tris ((this collide-edge-work)) (dotimes (s5-0 (the-as int (-> this num-tris))) (let* ((v1-3 (-> this tris s5-0 ctri)) - (t1-0 (copy-and-set-field (-> *pat-mode-info* (-> v1-3 pat mode) color) a 64)) - ) - (add-debug-outline-triangle - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> v1-3 vertex)) - (-> v1-3 vertex 1) - (-> v1-3 vertex 2) - t1-0 - ) - ) - ) - (none) - ) + (t1-0 (copy-and-set-field (-> *pat-mode-info* (-> v1-3 pat mode) color) a 64))) + (add-debug-outline-triangle #t + (bucket-id debug-no-zbuf) + (the-as vector (-> v1-3 vertex)) + (-> v1-3 vertex 1) + (-> v1-3 vertex 2) + t1-0))) + (none)) -(let ((v1-1 - (new 'static 'surface - :name '*rotate-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.0 - :target-speed 1.0 - :seek0 153600.0 - :seek90 153600.0 - :seek180 256000.0 - :fric 153600.0 - :nonlin-fric-dist 5120.0 - :slip-factor 1.0 - :slope-down-factor 10240.0 - :slope-slip-angle 8192.0 - :impact-fric 1.0 - :bend-factor 0.8 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :flags (surface-flags moving-ground) - ) - ) - ) +(let ((v1-1 (new 'static + 'surface + :name '*rotate-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 153600.0 + :seek90 153600.0 + :seek180 256000.0 + :fric 153600.0 + :nonlin-fric-dist 5120.0 + :slip-factor 1.0 + :slope-down-factor 10240.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 0.8 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags (surface-flags moving-ground)))) (define *rotate-surface* v1-1) (set! *rotate-surface* v1-1) (set! (-> v1-1 mult-hook) - (the-as - (function surface surface surface int none) - (lambda ((arg0 surface) (arg1 object) (arg2 object) (arg3 int)) (if (= arg3 1) - (set! (-> arg0 fric) 151756.8) - ) - ) - ) - ) + (the-as (function surface surface surface int none) + (lambda ((arg0 surface) (arg1 object) (arg2 object) (arg3 int)) + (if (= arg3 1) (set! (-> arg0 fric) 151756.8))))) (set! (-> v1-1 touch-hook) nothing) - (set! (-> v1-1 active-hook) nothing) - ) + (set! (-> v1-1 active-hook) nothing)) -(let ((v1-2 (new 'static 'surface - :name '*no-walk-surface* - :turnv 0.5 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 0.7 - :target-speed 0.7 - :seek0 24576.0 - :seek90 24576.0 - :seek180 24576.0 - :fric 23756.8 - :nonlin-fric-dist 4091904.0 - :slope-slip-angle 16384.0 - :bend-speed 4.0 - :alignv 0.5 - :slope-up-traction 0.9 - :align-speed 1.0 - :flags (surface-flags no-turn-around always-rotate-toward-transv) - ) - ) - ) +(let ((v1-2 (new 'static + 'surface + :name '*no-walk-surface* + :turnv 0.5 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 0.7 + :target-speed 0.7 + :seek0 24576.0 + :seek90 24576.0 + :seek180 24576.0 + :fric 23756.8 + :nonlin-fric-dist 4091904.0 + :slope-slip-angle 16384.0 + :bend-speed 4.0 + :alignv 0.5 + :slope-up-traction 0.9 + :align-speed 1.0 + :flags (surface-flags no-turn-around always-rotate-toward-transv)))) (define *no-walk-surface* v1-2) (set! *no-walk-surface* v1-2) (set! (-> v1-2 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-2 touch-hook) nothing) - (set! (-> v1-2 active-hook) nothing) - ) + (set! (-> v1-2 active-hook) nothing)) diff --git a/goal_src/jak1/engine/collide/collide-frag-h.gc b/goal_src/jak1/engine/collide/collide-frag-h.gc index 58f93e3135..3c007325be 100644 --- a/goal_src/jak1/engine/collide/collide-frag-h.gc +++ b/goal_src/jak1/engine/collide/collide-frag-h.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/draw/drawable-tree-h.gc") (require "engine/draw/drawable-inline-array-h.gc") -;; name: collide-frag-h.gc -;; name in dgo: collide-frag-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;;;;;;;;;;;;;;;;; @@ -25,39 +20,25 @@ ; TODO - defined in drawable, but needed in collide-frag (define-extern sphere-cull (function vector symbol)) -(deftype collide-frag-vertex (vector) - () - ) - +(deftype collide-frag-vertex (vector) ()) (deftype collide-frag-mesh (basic) - ((packed-data uint32) - (pat-array uint32) - (strip-data-len uint16) - (poly-count uint16) - (base-trans vector :inline) - (vertex-count uint8 :overlay-at (-> base-trans w)) - (vertex-data-qwc uint8 :offset 29) - (total-qwc uint8 :offset 30) - (unused uint8 :offset 31) - ) - ) - + ((packed-data uint32) + (pat-array uint32) + (strip-data-len uint16) + (poly-count uint16) + (base-trans vector :inline) + (vertex-count uint8 :overlay-at (-> base-trans w)) + (vertex-data-qwc uint8 :offset 29) + (total-qwc uint8 :offset 30) + (unused uint8 :offset 31))) (deftype collide-fragment (drawable) - ((mesh collide-frag-mesh :offset 8) - ) - ) - + ((mesh collide-frag-mesh :offset 8))) (deftype drawable-inline-array-collide-fragment (drawable-inline-array) - ((data collide-fragment 1 :inline) - (pad uint32) - ) - ) - + ((data collide-fragment 1 :inline) + (pad uint32))) (deftype drawable-tree-collide-fragment (drawable-tree) - ((data-override drawable-inline-array :overlay-at (-> data 0)) - ) - ) + ((data-override drawable-inline-array :overlay-at (-> data 0)))) diff --git a/goal_src/jak1/engine/collide/collide-frag.gc b/goal_src/jak1/engine/collide/collide-frag.gc index 9be5f15abe..d47b071f66 100644 --- a/goal_src/jak1/engine/collide/collide-frag.gc +++ b/goal_src/jak1/engine/collide/collide-frag.gc @@ -1,91 +1,66 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/bsp.gc") (require "engine/collide/collide-frag-h.gc") -;; name: collide-frag.gc -;; name in dgo: collide-frag -;; dgos: GAME, ENGINE - ;; This file contains the drawable-tree implementation for collide-fragment ;; DECOMP BEGINS (defmethod login ((this drawable-tree-collide-fragment)) - this - ) + this) (defmethod draw ((this drawable-tree-collide-fragment) (arg0 drawable-tree-collide-fragment) (arg1 display-frame)) "Note: this doesn't do anything (sadly)" (when *display-render-collision* (dotimes (s4-0 (-> this length)) - (draw (-> this data s4-0) (-> this data s4-0) arg1) - ) - ) + (draw (-> this data s4-0) (-> this data s4-0) arg1))) 0 - (none) - ) + (none)) (defmethod unpack-vis ((this drawable-tree-collide-fragment) (arg0 (pointer int8)) (arg1 (pointer int8))) - arg1 - ) + arg1) (defmethod collide-with-box ((this drawable-tree-collide-fragment) (arg0 int) (arg1 collide-list)) "Collide everything in the tree with a box. Length arg doesn't matter here." (collide-with-box (-> this data-override) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-y-probe ((this drawable-tree-collide-fragment) (arg0 int) (arg1 collide-list)) (collide-y-probe (-> this data-override) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-ray ((this drawable-tree-collide-fragment) (arg0 int) (arg1 collide-list)) (collide-ray (-> this data-override) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod mem-usage ((this collide-fragment) (arg0 memory-usage-block) (arg1 int)) - (let ((s5-0 (if (logtest? arg1 1) - 53 - 50 - ) - ) - (s4-0 (-> this mesh)) - ) + (let ((s5-0 (if (logtest? arg1 1) 53 50)) + (s4-0 (-> this mesh))) (set! (-> arg0 data s5-0 name) (symbol->string 'collide-fragment)) (+! (-> arg0 data s5-0 count) 1) (let ((v1-11 (+ (asize-of this) (asize-of s4-0)))) (+! (-> arg0 data s5-0 used) v1-11) - (+! (-> arg0 data s5-0 total) (logand -16 (+ v1-11 15))) - ) + (+! (-> arg0 data s5-0 total) (logand -16 (+ v1-11 15)))) (set! (-> arg0 data (+ s5-0 1) name) "collision-poly") (+! (-> arg0 data (+ s5-0 1) count) (-> s4-0 poly-count)) (let ((v1-22 (+ (-> s4-0 strip-data-len) (-> s4-0 poly-count)))) (+! (-> arg0 data (+ s5-0 1) used) v1-22) - (+! (-> arg0 data (+ s5-0 1) total) v1-22) - ) + (+! (-> arg0 data (+ s5-0 1) total) v1-22)) (set! (-> arg0 data (+ s5-0 2) name) "collision-vertex") (+! (-> arg0 data (+ s5-0 2) count) (-> s4-0 vertex-count)) (let ((v1-31 (* (-> s4-0 vertex-data-qwc) 16))) (+! (-> arg0 data (+ s5-0 2) used) v1-31) (let ((v0-2 (+ (-> arg0 data (+ s5-0 2) total) v1-31))) (set! (-> arg0 data (+ s5-0 2) total) v0-2) - (the-as collide-fragment v0-2) - ) - ) - ) - ) + (the-as collide-fragment v0-2))))) (defmethod login ((this drawable-inline-array-collide-fragment)) - this - ) + this) (defmethod draw ((this collide-fragment) (arg0 collide-fragment) (arg1 display-frame)) ;; if we wanted to draw collide-fragment's we'd do it here. @@ -103,52 +78,34 @@ ; ) ;; (add-debug-point #t (bucket-id debug) (-> this bsphere)) 0 - (none) - ) + (none)) -(defmethod draw ((this drawable-inline-array-collide-fragment) - (arg0 drawable-inline-array-collide-fragment) - (arg1 display-frame) - ) +(defmethod draw ((this drawable-inline-array-collide-fragment) (arg0 drawable-inline-array-collide-fragment) (arg1 display-frame)) (dotimes (s4-0 (-> this length)) - (let ((s3-0 (-> this data s4-0))) - (if (sphere-cull (-> s3-0 bsphere)) - (draw s3-0 s3-0 arg1) - ) - ) - ) + (let ((s3-0 (-> this data s4-0))) (if (sphere-cull (-> s3-0 bsphere)) (draw s3-0 s3-0 arg1)))) 0 - (none) - ) + (none)) (defmethod collide-with-box ((this drawable-inline-array-collide-fragment) (arg0 int) (arg1 collide-list)) (collide-with-box (the-as collide-fragment (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-y-probe ((this drawable-inline-array-collide-fragment) (arg0 int) (arg1 collide-list)) (collide-y-probe (the-as collide-fragment (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-ray ((this drawable-inline-array-collide-fragment) (arg0 int) (arg1 collide-list)) (collide-ray (the-as collide-fragment (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod mem-usage ((this drawable-inline-array-collide-fragment) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) diff --git a/goal_src/jak1/engine/collide/collide-func-h.gc b/goal_src/jak1/engine/collide/collide-func-h.gc index 0da23a751c..74180c7c16 100644 --- a/goal_src/jak1/engine/collide/collide-func-h.gc +++ b/goal_src/jak1/engine/collide/collide-func-h.gc @@ -1,8 +1,5 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") -;; name: collide-func-h.gc -;; name in dgo: collide-func-h -;; dgos: GAME, ENGINE -;; empty! \ No newline at end of file +;; empty! diff --git a/goal_src/jak1/engine/collide/collide-func.gc b/goal_src/jak1/engine/collide/collide-func.gc index e8da2c2aeb..53cb0d900f 100644 --- a/goal_src/jak1/engine/collide/collide-func.gc +++ b/goal_src/jak1/engine/collide/collide-func.gc @@ -1,15 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector.gc") (require "kernel/gkernel-h.gc") -;; name: collide-func.gc -;; name in dgo: collide-func -;; dgos: GAME, ENGINE - - ;; This file contains the primitive intersection functions used for collision. ;; Most take a description of primitive and a "probe" ;; The probe has an origin and a direction. The length of the direction vector is the length @@ -28,20 +22,10 @@ (defconstant COLLISION_MISS -100000000.0) - - (defun raw-ray-sphere-intersect ((arg0 float)) "DANGER: this function takes two arguments by vf registers. As a result, it doesn't work properly in OpenGOAL. See the functions below." - (local-vars - (v1-1 float) - (v1-2 float) - (v1-4 number) - (a0-1 float) - (a0-2 float) - (a0-3 int) - (a1-0 float) - ) + (local-vars (v1-1 float) (v1-2 float) (v1-4 number) (a0-1 float) (a0-2 float) (a0-3 int) (a1-0 float)) (crash!) (rlet ((Q :class vf) (vf0 :class vf) @@ -53,8 +37,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (.mov vf3 arg0) ;; vf3 = radius ;; sphere is at the origin, vf1 is source of the ray (o) @@ -80,8 +63,7 @@ (b! (< (the-as int a1-0) 0) cfg-7 :delay (set! a0-2 a0-1)) (.mul.vf vf4 vf0 Q :mask #b1000) (.sub.vf vf9 vf8 vf7) - (b! (= a0-2 v1-0) cfg-6 :delay (.mov v1-1 vf5)) - ) + (b! (= a0-2 v1-0) cfg-6 :delay (.mov v1-1 vf5))) (.sqrt.vf Q vf9 :ftf #b1) (b! (>= (the-as int v1-1) 0) cfg-6 :delay (.mov v1-2 vf9)) (b! (< (the-as int v1-2) 0) cfg-6 :delay 1.0) @@ -93,33 +75,21 @@ (.add.w.vf vf9 vf5 vf9 :mask #b10) (.mov a0-3 vf6) (.mul.w.vf vf9 vf9 vf4 :mask #b10) - (b! - (< (logand (the-as uint v1-4) (the-as uint a0-3)) 0) - cfg-6 - :delay - (.sub.y.vf vf4 vf0 vf9) - ) + (b! (< (logand (the-as uint v1-4) (the-as uint a0-3)) 0) cfg-6 :delay (.sub.y.vf vf4 vf0 vf9)) (b! #t cfg-7 :delay (.mov result vf4)) (label cfg-6) (set! result -100000000.0) (label cfg-7) - (the-as float result) - ) - ) - ) + (the-as float result)))) (defmacro pc-port-do-raw-ray-sphere-intersect (rad vf1-val vf2-val) "Calls to raw-ray-sphere-intersect should be replaced with this macro, and this should be given vf1, vf2, which contain the origin and direction of the probe." `(let ((vf1-storage (new 'stack-no-clear 'vector)) - (vf2-storage (new 'stack-no-clear 'vector)) - ) - (.svf (&-> vf1-storage quad) ,vf1-val) - (.svf (&-> vf2-storage quad) ,vf2-val) - (pc-port-raw-ray-sphere-implementation ,rad vf1-storage vf2-storage) - ) - ) - + (vf2-storage (new 'stack-no-clear 'vector))) + (.svf (&-> vf1-storage quad) ,vf1-val) + (.svf (&-> vf2-storage quad) ,vf2-val) + (pc-port-raw-ray-sphere-implementation ,rad vf1-storage vf2-storage))) (defun pc-port-raw-ray-sphere-implementation ((rad float) (vf1-val vector) (vf2-val vector)) "This is one of the main primitives for collision. @@ -130,15 +100,7 @@ - too far away (return MISS) - inside (return 0) " - (local-vars - (v1-1 int) - (v1-2 int) - (v1-4 int) - (a0-1 float) - (a0-2 float) - (a0-3 int) - (a1-0 int) - ) + (local-vars (v1-1 int) (v1-2 int) (v1-4 int) (a0-1 float) (a0-2 float) (a0-3 int) (a1-0 int)) (rlet ((Q :class vf) (vf0 :class vf) (vf1 :class vf) @@ -149,8 +111,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> vf1-val quad)) (.lvf vf2 (&-> vf2-val quad)) @@ -189,71 +150,54 @@ (.add.w.vf vf9 vf5 vf9 :mask #b10) (.mov a0-3 vf6) (.mul.w.vf vf9 vf9 vf4 :mask #b10) - ;; too far. - (b! (< (logand (the-as int v1-4) (the-as int a0-3)) 0) - cfg-6 - :delay (.sub.y.vf vf4 vf0 vf9) - ) + (b! (< (logand (the-as int v1-4) (the-as int a0-3)) 0) cfg-6 :delay (.sub.y.vf vf4 vf0 vf9)) (b! #t cfg-7 :delay (.mov result vf4)) (label cfg-6) (set! result -100000000.0) (label cfg-7) - (the-as float result) - ) - ) - ) - + (the-as float result)))) (defun ray-sphere-intersect ((ray-origin vector) (ray-dir vector) (sph-origin vector) (radius float)) "Intersect a ray and sphere. Will return 0 if you are in the sphere, -huge number if you don't hit it. Returns the length of the ray to the first intersection." - ;; offset stuff as if the sphere is at the origin. (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (.lvf vf1 (&-> ray-origin quad)) (.lvf vf2 (&-> sph-origin quad)) (.sub.vf vf1 vf1 vf2) ;; the sphere is at the origin in the actual intersection. (.lvf vf2 (&-> ray-dir quad)) ;;(raw-ray-sphere-intersect radius) - (pc-port-do-raw-ray-sphere-intersect radius vf1 vf2) - ) - ) + (pc-port-do-raw-ray-sphere-intersect radius vf1 vf2))) (defun ray-circle-intersect ((ray-origin vector) (ray-dir vector) (circle-origin vector) (radius float)) "Intersect ray with circle. Circle is on the y plane and this throws out the y components of ray-origin, circle-origin, and ray-dir" (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (.lvf vf1 (&-> ray-origin quad)) - (.mov.vf vf1 vf0 :mask #b10) - (.lvf vf2 (&-> circle-origin quad)) - (.mov.vf vf2 vf0 :mask #b10) - (.sub.vf vf1 vf1 vf2) - (.lvf vf2 (&-> ray-dir quad)) - (.mov.vf vf2 vf0 :mask #b10) - ;;(raw-ray-sphere-intersect radius) - (pc-port-do-raw-ray-sphere-intersect radius vf1 vf2) - ) - ) + (vf2 :class vf)) + (init-vf0-vector) + (.lvf vf1 (&-> ray-origin quad)) + (.mov.vf vf1 vf0 :mask #b10) + (.lvf vf2 (&-> circle-origin quad)) + (.mov.vf vf2 vf0 :mask #b10) + (.sub.vf vf1 vf1 vf2) + (.lvf vf2 (&-> ray-dir quad)) + (.mov.vf vf2 vf0 :mask #b10) + ;;(raw-ray-sphere-intersect radius) + (pc-port-do-raw-ray-sphere-intersect radius vf1 vf2))) -(defun ray-cylinder-intersect ((ray-origin vector) (ray-dir vector) (cyl-origin vector) (cyl-axis vector) (cyl-rad float) (cyl-len float) (pt-out vector)) +(defun ray-cylinder-intersect ((ray-origin vector) + (ray-dir vector) + (cyl-origin vector) + (cyl-axis vector) + (cyl-rad float) + (cyl-len float) + (pt-out vector)) "Intersect with a cylinder. Currently this is untested." - (local-vars - (v0-1 float) - (v1-0 int) - (v1-2 int) - (a0-1 int) - (a0-2 int) - (a0-4 int) - (a0-5 int) - ) + (local-vars (v0-1 float) (v1-0 int) (v1-2 int) (a0-1 int) (a0-2 int) (a0-4 int) (a0-5 int)) (rlet ((vf1 :class vf) (vf10 :class vf) (vf11 :class vf) @@ -267,8 +211,7 @@ (vf19 :class vf) (vf2 :class vf) (vf20 :class vf) - (vf21 :class vf) - ) + (vf21 :class vf)) (.lvf vf10 (&-> ray-origin quad)) (.lvf vf12 (&-> cyl-origin quad)) (.sub.vf vf15 vf10 vf12) @@ -290,8 +233,7 @@ (.mov a0-1 vf18) (let ((v1-1 (logand v1-0 (the-as uint a0-1)))) (.sub.vf vf1 vf15 vf1) - (b! (< v1-1 0) cfg-6 :delay (.sub.vf vf2 vf11 vf2)) - ) + (b! (< v1-1 0) cfg-6 :delay (.sub.vf vf2 vf11 vf2))) (.mov v1-2 vf19) (.mov a0-2 vf20) (b! (>= (the-as int (logior v1-2 (the-as uint a0-2))) 0) cfg-6 :delay (nop!)) @@ -303,22 +245,14 @@ (.mul.y.vf vf13 vf13 vf16) (.sub.x.vf vf19 vf16 vf14) (.mov a0-4 vf16) - (b! - (< (the-as int a0-4) 0) - cfg-6 - :delay - (.add.vf vf12 vf12 vf13 :mask #b111) - ) + (b! (< (the-as int a0-4) 0) cfg-6 :delay (.add.vf vf12 vf12 vf13 :mask #b111)) (.mov a0-5 vf19) (b! (>= (the-as int a0-5) 0) cfg-6 :delay (.svf (&-> pt-out quad) vf12)) - (b! #t cfg-7 :delay (set! v0-1 v1-4)) - ) + (b! #t cfg-7 :delay (set! v0-1 v1-4))) (label cfg-6) (set! v0-1 -100000000.0) (label cfg-7) - v0-1 - ) - ) + v0-1)) (defun ray-plane-intersect ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 vector) (arg5 vector) (arg6 vector)) "Unused." @@ -334,8 +268,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (.lvf vf3 (&-> arg5 quad)) (.lvf vf1 (&-> arg4 quad)) @@ -360,8 +293,7 @@ (.mov a2-1 vf8) (.isqrt.vf Q vf0 vf5 :fsf #b11 :ftf #b0) (let ((f1-0 a2-1) - (f2-0 v1-0) - ) + (f2-0 v1-0)) (cond ((!= f2-0 0.0) (let ((f1-1 (/ f1-0 f2-0))) @@ -375,34 +307,23 @@ (.add.mul.w.vf vf7 vf6 vf0 acc :mask #b111) (.svf (&-> arg0 quad) vf7) (.mov v1-1 vf7) - v0-0 - ) - ) - ) - (else - -100000000.0 - ) - ) - ) - ) - ) + v0-0))) + (else -100000000.0))))) ;; ray-triangle-intersect (unused) ;; collide-do-primitives (used in moving-sphere-triangle-intersect) (def-mips2c collide-do-primitives (function float)) + ;; moving-sphere-triangle-intersect (used in cam) (def-mips2c moving-sphere-triangle-intersect (function vector vector float collide-cache-tri vector vector float)) + ;; moving-sphere-sphere-intersect (used in collide) (defun moving-sphere-sphere-intersect ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (let ((f30-0 (ray-sphere-intersect arg0 arg1 arg2 (+ (-> arg0 w) (-> arg2 w))))) (when (>= f30-0 0.0) (let ((s3-1 (vector-normalize! (vector-! (new-stack-vector0) arg2 arg0) (-> arg0 w)))) (vector+*! arg3 arg0 arg1 f30-0) - (vector+! arg3 arg3 s3-1) - ) - ) - f30-0 - ) - ) + (vector+! arg3 arg3 s3-1))) + f30-0)) ;; moving-sphere-moving-sphere-intersect (unused) diff --git a/goal_src/jak1/engine/collide/collide-h.gc b/goal_src/jak1/engine/collide/collide-h.gc index 235cf56d8f..10322bb7d1 100644 --- a/goal_src/jak1/engine/collide/collide-h.gc +++ b/goal_src/jak1/engine/collide/collide-h.gc @@ -1,8 +1,4 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") -;; name: collide-h.gc -;; name in dgo: collide-h -;; dgos: GAME, ENGINE - -(define *collide-test-flag* #f) \ No newline at end of file +(define *collide-test-flag* #f) diff --git a/goal_src/jak1/engine/collide/collide-mesh-h.gc b/goal_src/jak1/engine/collide/collide-mesh-h.gc index 1fd597a0ab..9ccf0da110 100644 --- a/goal_src/jak1/engine/collide/collide-mesh-h.gc +++ b/goal_src/jak1/engine/collide/collide-mesh-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: collide-mesh-h.gc -;; name in dgo: collide-mesh-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; The collide-mesh system is used for _moving_ meshes, like a platform. @@ -20,12 +15,10 @@ ;; The triangle involved in collision ;; Note: this is reused for the background collision system. (deftype collide-tri-result (structure) - ((vertex vector 3 :inline) - (intersect vector :inline) - (normal vector :inline) - (pat pat-surface) - ) - ) + ((vertex vector 3 :inline) + (intersect vector :inline) + (normal vector :inline) + (pat pat-surface))) ;;;;;;;;;;;;;;;;;;;; ;; static mesh data @@ -35,34 +28,29 @@ ;; The vertex indices index into the collide-mesh vertex-data array. ;; Due to using uint8's you only get 256 vertices. (deftype collide-mesh-tri (structure) - ((vertex-index uint8 3) - (unused uint8) - (pat pat-surface) - ) - :pack-me - ) + ((vertex-index uint8 3) + (unused uint8) + (pat pat-surface)) + :pack-me) ;; og:preserve-this (declare-type collide-mesh-cache-tri structure) ;; A collision mesh. Note that's it's bound to a specific joint. (deftype collide-mesh (basic) - ((joint-id int32) - (num-tris uint32) - (num-verts uint32) - (vertex-data (inline-array vector)) - (tris collide-mesh-tri 1 :inline :offset 32) - ) + ((joint-id int32) + (num-tris uint32) + (num-verts uint32) + (vertex-data (inline-array vector)) + (tris collide-mesh-tri 1 :inline :offset 32)) (:methods - (debug-draw-tris (_type_ process-drawable int) none) - (overlap-test (_type_ collide-mesh-cache-tri vector) symbol) - (should-push-away-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float) - (sphere-on-platform-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float) - (populate-cache! (_type_ collide-mesh-cache-tri matrix) none) - (collide-mesh-math-1 (_type_ object object) none) - (collide-mesh-math-2 (_type_ object object object) none) - ) - ) + (debug-draw-tris (_type_ process-drawable int) none) + (overlap-test (_type_ collide-mesh-cache-tri vector) symbol) + (should-push-away-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float) + (sphere-on-platform-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float) + (populate-cache! (_type_ collide-mesh-cache-tri matrix) none) + (collide-mesh-math-1 (_type_ object object) none) + (collide-mesh-math-2 (_type_ object object object) none))) ;;;;;;;;;;;;;;;;;;;; ;; cache @@ -78,19 +66,16 @@ (defconstant COLLIDE_MESH_CACHE_SIZE #xa000) (deftype collide-mesh-cache (basic) - ((used-size uint32) - (max-size uint32) - (id uint64) - (data uint8 40960 :offset 32) - ) + ((used-size uint32) + (max-size uint32) + (id uint64) + (data uint8 40960 :offset 32)) (:methods - (allocate! (_type_ int) int) - (is-id? (_type_ int) symbol) - (next-id! (_type_) uint) - ) - ) + (allocate! (_type_ int) int) + (is-id? (_type_ int) symbol) + (next-id! (_type_) uint))) -(defmethod next-id! collide-mesh-cache ((obj collide-mesh-cache)) +(defmethod next-id! ((obj collide-mesh-cache)) "Reset all used entries in the cache and increment the id. If the id is zero, set it to 1" ;; ld v1, 12(a0) @@ -101,30 +86,22 @@ (let ((v0 (+ v1 1))) ;; beql v0, r0, L3 ;; addiu v0, r0, 1 (only taken if v0 = 0) - (if (= v0 0) - (set! v0 (the uint 1)) - ) + (if (= v0 0) (set! v0 (the uint 1))) ;; L3: ;; sd v0, 12(a0) (set! (-> obj id) v0) - v0 - ) - ) - ) + v0))) (defmethod is-id? ((this collide-mesh-cache) (arg0 int)) "Is this our id?" - (= (-> this id) arg0) - ) + (= (-> this id) arg0)) ;; possibly this is stored in the data of the collide-mesh-cache (deftype collide-mesh-cache-tri (structure) - ((vertex vector 3 :inline) - (normal vector :inline) - (bbox4w bounding-box4w :inline) - (pat pat-surface :overlay-at (-> normal w)) - ) - ) + ((vertex vector 3 :inline) + (normal vector :inline) + (bbox4w bounding-box4w :inline) + (pat pat-surface :overlay-at (-> normal w)))) ;; only allocate if we don't have an existing one. (define-perm *collide-mesh-cache* collide-mesh-cache (new 'global 'collide-mesh-cache)) @@ -132,5 +109,7 @@ ;; og:preserve-this ;; in all cases, re-init. (set! (-> *collide-mesh-cache* id) 1) + (set! (-> *collide-mesh-cache* used-size) 0) + (set! (-> *collide-mesh-cache* max-size) COLLIDE_MESH_CACHE_SIZE) diff --git a/goal_src/jak1/engine/collide/collide-mesh.gc b/goal_src/jak1/engine/collide/collide-mesh.gc index b655bb99e8..9231f7b47e 100644 --- a/goal_src/jak1/engine/collide/collide-mesh.gc +++ b/goal_src/jak1/engine/collide/collide-mesh.gc @@ -1,40 +1,29 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/pat-h.gc") (require "engine/debug/debug.gc") (require "engine/collide/collide-mesh-h.gc") -;; name: collide-mesh.gc -;; name in dgo: collide-mesh -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod asize-of ((this collide-mesh)) "Compute the size in memory of a collide-mesh. Somehow this only counts num-tris and not verts." - (the-as int (+ (-> collide-mesh size) (* (+ (-> this num-tris) -1) 8))) - ) + (the-as int (+ (-> collide-mesh size) (* (+ (-> this num-tris) -1) 8)))) (defmethod mem-usage ((this collide-mesh) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of a collide-mesh." (set! (-> arg0 length) (max 79 (-> arg0 length))) (set! (-> arg0 data 78 name) "collide-mesh") (+! (-> arg0 data 78 count) 1) - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 78 used) v1-6) - (+! (-> arg0 data 78 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 78 used) v1-6) (+! (-> arg0 data 78 total) (logand -16 (+ v1-6 15)))) (set! (-> arg0 length) (max 79 (-> arg0 length))) (set! (-> arg0 data 78 name) "collide-mesh") (+! (-> arg0 data 78 count) 1) (let ((v1-16 (* (-> this num-verts) 16))) (+! (-> arg0 data 78 used) v1-16) - (+! (-> arg0 data 78 total) (logand -16 (+ v1-16 15))) - ) - (the-as collide-mesh 0) - ) + (+! (-> arg0 data 78 total) (logand -16 (+ v1-16 15)))) + (the-as collide-mesh 0)) (defmethod debug-draw-tris ((this collide-mesh) (arg0 process-drawable) (arg1 int)) "Draw a collide-mesh." @@ -46,17 +35,14 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) + (vf7 :class vf)) (init-vf0-vector) (let ((s5-0 (the-as object (-> this tris))) - (s4-0 (-> arg0 node-list data arg1 bone transform)) - ) + (s4-0 (-> arg0 node-list data arg1 bone transform))) (countdown (s3-0 (-> this num-tris)) (let ((a2-1 (new 'stack-no-clear 'vector)) (a3-0 (new 'stack-no-clear 'vector)) - (t0-0 (new 'stack-no-clear 'vector)) - ) + (t0-0 (new 'stack-no-clear 'vector))) (.lvf vf4 (&-> s4-0 vector 0 quad)) (.lvf vf5 (&-> s4-0 vector 1 quad)) (.lvf vf6 (&-> s4-0 vector 2 quad)) @@ -80,32 +66,20 @@ (.svf (&-> a2-1 quad) vf1) (.svf (&-> a3-0 quad) vf2) (.svf (&-> t0-0 quad) vf3) - (add-debug-flat-triangle #t (bucket-id debug-no-zbuf) a2-1 a3-0 t0-0 t1-0) - ) - ) - (set! s5-0 (-> (the-as (inline-array collide-mesh-tri) s5-0) 1)) - ) - ) + (add-debug-flat-triangle #t (bucket-id debug-no-zbuf) a2-1 a3-0 t0-0 t1-0))) + (set! s5-0 (-> (the-as (inline-array collide-mesh-tri) s5-0) 1)))) 0 - (none) - ) - ) + (none))) (deftype sopt-work (structure) - ((intersect vector :inline) - (sphere-bbox4w bounding-box4w :inline) - ) - ) - + ((intersect vector :inline) + (sphere-bbox4w bounding-box4w :inline))) (defmethod-mips2c "(method 12 collide-mesh)" 12 collide-mesh) (deftype spat-work (structure) - ((intersect vector :inline) - (sphere-bbox4w bounding-box4w :inline) - ) - ) - + ((intersect vector :inline) + (sphere-bbox4w bounding-box4w :inline))) (defmethod-mips2c "(method 11 collide-mesh)" 11 collide-mesh) @@ -121,14 +95,11 @@ (a3-0 (-> this data)) (a2-0 (-> this max-size)) (v1-2 (* v1-1 16)) - (a3-1 (&+ a3-0 a1-1)) - ) + (a3-1 (&+ a3-0 a1-1))) (let ((t1-0 (- a2-0 (the-as uint v1-2))) - (t0-0 (-> this id)) - ) + (t0-0 (-> this id))) (b! (< (the-as int t1-0) 0) cfg-6 :delay (set! a1-2 (the-as int (+ a1-1 v1-2)))) - (b! (>= (the-as int (- a2-0 (the-as uint a1-2))) 0) cfg-5 :delay (set! a2-2 (the-as int (+ t0-0 1)))) - ) + (b! (>= (the-as int (- a2-0 (the-as uint a1-2))) 0) cfg-5 :delay (set! a2-2 (the-as int (+ t0-0 1))))) (b! (zero? (the-as uint a2-2)) cfg-4 :likely-delay (set! a2-2 1)) (label cfg-4) (set! a1-2 v1-2) @@ -142,10 +113,7 @@ (format 0 "ERROR: Attempted to allocate something bigger than the entire mesh cache!~%") (set! v0-0 (the-as (pointer uint8) #f)) (label cfg-7) - (the-as int v0-0) - ) - ) - ) + (the-as int v0-0)))) (defmethod populate-cache! ((this collide-mesh) (arg0 collide-mesh-cache-tri) (arg1 matrix)) (local-vars (t0-2 uint)) @@ -163,13 +131,11 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (nop!) (let ((t0-0 (scratchpad-object int)) - (v1-0 (-> this num-verts)) - ) + (v1-0 (-> this num-verts))) (nop!) (let ((a3-0 (-> this vertex-data))) (b! (zero? v1-0) cfg-3 :delay (.lvf vf1 (&-> arg1 vector 0 quad))) @@ -228,29 +194,23 @@ (.svf (+ t0-1 16) vf10) (nop!) (.svf (+ t0-1 32) vf11) - (b! (> (the-as int v1-0) 0) cfg-2 :delay (.svf (+ t0-1 48) vf12)) - ) - ) - ) + (b! (> (the-as int v1-0) 0) cfg-2 :delay (.svf (+ t0-1 48) vf12))))) (label cfg-3) (let ((v1-1 (the-as collide-mesh-tri (-> this tris)))) (nop!) (let ((a2-1 (scratchpad-object int)) - (a0-1 (-> this num-tris)) - ) + (a0-1 (-> this num-tris))) (b! (zero? a0-1) cfg-6 :delay (set! t0-2 (-> v1-1 vertex-index 0))) - (let* ((a1-1 (&+ arg0 -96)) + (let* ((a1-1 (&+ arg0 -96)) (a3-1 (-> v1-1 vertex-index 1)) (t0-3 (* t0-2 16)) (t2-0 (-> v1-1 vertex-index 2)) (t1-0 (* a3-1 16)) - (a3-2 (-> v1-1 pat)) - ) + (a3-2 (-> v1-1 pat))) (let* ((t2-1 (* t2-0 16)) (t0-4 (+ t0-3 a2-1)) (t1-1 (+ t1-0 a2-1)) - (t2-2 (+ t2-1 a2-1)) - ) + (t2-2 (+ t2-1 a2-1))) (label cfg-5) (+! a0-1 -1) (.lvf vf1 t0-4) @@ -283,14 +243,7 @@ (.add.mul.z.vf vf7 vf0 vf7 acc :mask #b1000) (set! t1-1 (+ t2-4 a2-1)) (.isqrt.vf Q vf0 vf7 :fsf #b11 :ftf #b11) - (set! t2-2 (+ t3-0 a2-1)) - ) - ) - ) - ) - ) - ) - ) + (set! t2-2 (+ t3-0 a2-1))))))))) (.ftoi.vf vf8 vf8) (nop!) (.ftoi.vf vf9 vf9) @@ -305,22 +258,14 @@ (.svf (&-> a1-1 normal quad) vf6) (nop!) (set! (-> a1-1 normal w) (the-as float a3-2)) - (b! (nonzero? a0-1) cfg-5 :delay (set! a3-2 (-> v1-1 pat))) - ) - ) - ) + (b! (nonzero? a0-1) cfg-5 :delay (set! a3-2 (-> v1-1 pat)))))) (label cfg-6) 0 - (none) - ) - ) + (none))) (deftype oot-work (structure) - ((intersect vector :inline) - (sphere-bbox4w bounding-box4w :inline) - ) - ) - + ((intersect vector :inline) + (sphere-bbox4w bounding-box4w :inline))) (defmethod overlap-test ((this collide-mesh) (arg0 collide-mesh-cache-tri) (arg1 vector)) (local-vars @@ -332,8 +277,7 @@ (a1-4 uint128) (a1-7 uint) (a2-1 uint128) - (a2-2 uint128) - ) + (a2-2 uint128)) (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) @@ -341,13 +285,11 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (set! zero (the-as uint128 0)) (let ((s5-0 (new 'stack-no-clear 'matrix)) - (s4-0 arg0) - ) + (s4-0 arg0)) (.lvf vf2 (&-> arg1 quad)) (let ((s3-0 (-> this num-tris))) (.sub.w.vf vf5 vf2 vf2) @@ -360,25 +302,13 @@ (.svf (&-> s5-0 vector 2 quad) vf6) (label cfg-1) (b! (zero? s3-0) cfg-7 :delay (set! a2-1 (-> s4-0 bbox4w min quad))) - (+! s3-0 -1) - ) - (let ((a1-1 (-> s4-0 bbox4w max quad))) - (.pcgtw a2-2 a2-1 a0-1) - (.pcgtw a1-2 v1-0 a1-1) - ) + (+! s3-0 -1)) + (let ((a1-1 (-> s4-0 bbox4w max quad))) (.pcgtw a2-2 a2-1 a0-1) (.pcgtw a1-2 v1-0 a1-1)) (.por a1-3 a2-2 a1-2) (nop!) (.ppach a1-4 zero a1-3) - (let ((a1-5 (shl (the-as int a1-4) 16))) - (nop!) - (b! (nonzero? a1-5) cfg-1 :likely-delay (set! s4-0 (&+ s4-0 96))) - ) - (closest-pt-in-triangle - (the-as vector (-> s5-0 vector)) - arg1 - (the-as matrix (-> s4-0 vertex)) - (-> s4-0 normal) - ) + (let ((a1-5 (shl (the-as int a1-4) 16))) (nop!) (b! (nonzero? a1-5) cfg-1 :likely-delay (set! s4-0 (&+ s4-0 96)))) + (closest-pt-in-triangle (the-as vector (-> s5-0 vector)) arg1 (the-as matrix (-> s4-0 vertex)) (-> s4-0 normal)) (.lvf vf1 (&-> s5-0 vector 0 quad)) (.lvf vf2 (&-> arg1 quad)) (set! v1-0 (-> s5-0 vector 1 quad)) @@ -392,15 +322,5 @@ (.sub.w.vf vf3 vf3 vf4 :mask #b1000) (.add.w.vf vf3 vf0 vf3 :mask #b10) (.mov a1-7 vf3) - (b! (>= (the-as int a1-7) 0) cfg-1 :delay (set! s4-0 (&+ s4-0 96))) - ) - (let ((v0-1 #t)) - (b! #t cfg-8 :delay (nop!)) - (the-as none 0) - (label cfg-7) - (set! v0-1 #f) - (label cfg-8) - v0-1 - ) - ) - ) \ No newline at end of file + (b! (>= (the-as int a1-7) 0) cfg-1 :delay (set! s4-0 (&+ s4-0 96)))) + (let ((v0-1 #t)) (b! #t cfg-8 :delay (nop!)) (the-as none 0) (label cfg-7) (set! v0-1 #f) (label cfg-8) v0-1))) diff --git a/goal_src/jak1/engine/collide/collide-probe.gc b/goal_src/jak1/engine/collide/collide-probe.gc index 32a7a37e22..89b5d41e77 100644 --- a/goal_src/jak1/engine/collide/collide-probe.gc +++ b/goal_src/jak1/engine/collide/collide-probe.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/level-h.gc") (require "kernel/gkernel.gc") (require "engine/collide/collide-cache-h.gc") @@ -9,10 +8,6 @@ (require "engine/collide/collide-frag-h.gc") (require "engine/draw/draw-node-h.gc") -;; name: collide-probe.gc -;; name in dgo: collide-probe -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; The "collision probe" checks to see what the first triangle is in a given direction. @@ -28,16 +23,11 @@ (defun creates-new-method? ((arg0 type) (arg1 int)) "Is the method with the given ID in the given type a new method for this type?" ;; does our parent have it? - (let ((v1-1 (-> arg0 parent allocated-length))) - (-> arg0 allocated-length) - (>= arg1 (the-as int v1-1)) - ) - ) + (let ((v1-1 (-> arg0 parent allocated-length))) (-> arg0 allocated-length) (>= arg1 (the-as int v1-1)))) (defun overrides-parent-method? ((arg0 type) (arg1 int)) "Does the method with the given ID in the given type override a method of its parent?" - (!= (-> arg0 method-table arg1) (-> arg0 parent method-table arg1)) - ) + (!= (-> arg0 method-table arg1) (-> arg0 parent method-table arg1))) (defun describe-methods ((arg0 type)) "Print information about the methods of a type." @@ -47,25 +37,12 @@ (format #t "~3d:~%" s4-0) (while (!= s3-0 basic) (cond - ((creates-new-method? s3-0 s4-0) - (format #t " created by ~s.~%" (symbol->string (-> s3-0 symbol))) - (set! s3-0 basic) - ) + ((creates-new-method? s3-0 s4-0) (format #t " created by ~s.~%" (symbol->string (-> s3-0 symbol))) (set! s3-0 basic)) ((overrides-parent-method? s3-0 s4-0) (format #t " overridden by ~s.~%" (symbol->string (-> s3-0 symbol))) - (set! s3-0 (-> s3-0 parent)) - ) - (else - (set! s3-0 (-> s3-0 parent)) - ) - ) - ) - ) - ) - ) - #f - ) - + (set! s3-0 (-> s3-0 parent))) + (else (set! s3-0 (-> s3-0 parent)))))))) + #f) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Collide Fragment Debug @@ -75,36 +52,29 @@ (defun indent-to ((arg0 int)) "Print out arg0 spaces" (dotimes (s5-0 arg0) - (format #t " ") - ) - (none) - ) + (format #t " ")) + (none)) (defun-recursive probe-traverse-draw-node none ((arg0 draw-node) (arg1 int)) "Print out info for a draw node, and recursively its children. They forgot to finish this one." (indent-to arg1) - (format #t "[~08x] child-count: ~d, flags: ~d, dist: ~f, child: ~a~%" - arg0 - (-> arg0 child-count) - (-> arg0 flags) - (-> arg0 distance) - (-> arg0 child) - ) + (format #t + "[~08x] child-count: ~d, flags: ~d, dist: ~f, child: ~a~%" + arg0 + (-> arg0 child-count) + (-> arg0 flags) + (-> arg0 distance) + (-> arg0 child)) (cond ((nonzero? (-> arg0 flags)) (let ((s4-0 (-> arg0 child))) (dotimes (s3-0 (the-as int (-> arg0 child-count))) - (probe-traverse-draw-node (the-as draw-node (+ (the-as uint s4-0) (* s3-0 32))) (+ arg1 1)) - ) - ) - ) + (probe-traverse-draw-node (the-as draw-node (+ (the-as uint s4-0) (* s3-0 32))) (+ arg1 1))))) (else - ;; we hit the leaves. - ) - ) + ;; we hit the leaves. + )) 0 - (none) - ) + (none)) (defun probe-traverse-inline-array-node ((arg0 drawable-inline-array-node) (arg1 int)) "Print out a drawable-inline-array-node, and recursively all children" @@ -114,13 +84,8 @@ (dotimes (s3-0 s4-0) (indent-to arg1) (format #t "(~3d) ~a~%" s3-0 (-> arg0 data s3-0)) - (if (= (-> arg0 data s3-0 type) draw-node) - (probe-traverse-draw-node (-> arg0 data s3-0) (+ arg1 1)) - ) - ) - ) - (none) - ) + (if (= (-> arg0 data s3-0 type) draw-node) (probe-traverse-draw-node (-> arg0 data s3-0) (+ arg1 1))))) + (none)) (defun probe-traverse-collide-fragment ((arg0 drawable-tree-collide-fragment) (arg1 int)) "Print out all levels of a drawabl-tree-collide-fragment." @@ -130,30 +95,20 @@ (dotimes (s3-0 (+ s4-0 -1)) (indent-to arg1) (if (= (-> arg0 data s3-0 type) drawable-inline-array-node) - (probe-traverse-inline-array-node (the-as drawable-inline-array-node (-> arg0 data s3-0)) (+ arg1 1)) - (format #t "unknown: ~a~%" (-> arg0 data s3-0)) - ) - ) - ) - (none) - ) - + (probe-traverse-inline-array-node (the-as drawable-inline-array-node (-> arg0 data s3-0)) (+ arg1 1)) + (format #t "unknown: ~a~%" (-> arg0 data s3-0))))) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Collide Probe Implementation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (deftype collide-probe-stack-elem (structure) - ((child uint32) - (count uint32) - ) - ) - + ((child uint32) + (count uint32))) (deftype collide-probe-stack (structure) - ((data collide-probe-stack-elem 1024 :inline) - ) - ) + ((data collide-probe-stack-elem 1024 :inline))) ;;(define *collide-probe-stack* (the-as pointer (+ 4192 #x70000000))) (define *collide-probe-stack* (scratchpad-object collide-probe-stack :offset 4192)) @@ -163,19 +118,15 @@ (def-mips2c collide-probe-node (function (inline-array draw-node) int collide-list int)) (defun print-out ((arg0 int)) - (format *stdcon* "~d~%" arg0) - ) + (format *stdcon* "~d~%" arg0)) (defun collide-probe-instance-tie-collide-frags () 0 - (none) - ) + (none)) ;; collide-probe-instance-tie (def-mips2c collide-probe-instance-tie (function object int collide-list int int)) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Collide Probe Setup/Wrappers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -186,16 +137,12 @@ (cond ((< 1 (-> arg0 length)) (let ((v1-1 (-> arg0 data-override))) - (collide-probe-node (-> (the-as drawable-inline-array-node v1-1) data) (-> v1-1 length) arg1) - ) - ) + (collide-probe-node (-> (the-as drawable-inline-array-node v1-1) data) (-> v1-1 length) arg1))) (else - ;; only 1 level in the tree. this is unsupported. - ) - ) + ;; only 1 level in the tree. this is unsupported. + )) 0 - (none) - ) + (none)) (defun collide-probe-instance-tie-tree-make-list ((arg0 drawable-tree-instance-tie) (arg1 collide-list)) "Given a TIE instance tree, make a list. @@ -203,58 +150,40 @@ (cond ((< 1 (-> arg0 length)) (let ((v1-2 (-> arg0 data 0))) - (collide-probe-instance-tie - (-> (the-as drawable-inline-array-node v1-2) data) - (-> (the-as drawable-inline-array-node v1-2) length) - arg1 - 1 - ) - ) - ) + (collide-probe-instance-tie (-> (the-as drawable-inline-array-node v1-2) data) + (-> (the-as drawable-inline-array-node v1-2) length) + arg1 + 1))) ((= (-> arg0 length) 1) ;; between 1 and 8. Set flag 0 to indicate that we are using instance ties. (let ((v1-7 (-> arg0 data 0))) - (collide-probe-instance-tie - (-> (the-as drawable-inline-array-instance-tie v1-7) data) - (-> (the-as drawable-inline-array-instance-tie v1-7) length) - arg1 - 0 - ) - ) - ) - ) - 0 - ) + (collide-probe-instance-tie (-> (the-as drawable-inline-array-instance-tie v1-7) data) + (-> (the-as drawable-inline-array-instance-tie v1-7) length) + arg1 + 0)))) + 0) (defun collide-upload-vu0 () "Upload the probe program to VU0." (#unless PC_PORT - (let ((gp-0 *vu0-dma-list*)) - ;; reset the buffer - (let ((v1-0 gp-0)) - (set! (-> v1-0 base) (-> v1-0 data)) - (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length))) - ) - ;; upload the function dma - (dma-buffer-add-vu-function gp-0 collide-vu0-block 0) - - ;; end dma chain - (let* ((v1-1 gp-0) - (a0-5 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet a0-5) dma) (new 'static 'dma-tag :id (dma-tag-id end))) - (set! (-> (the-as (pointer uint64) a0-5) 1) (the-as uint 0)) - (set! (-> v1-1 base) (&+ (the-as pointer a0-5) 16)) - ) - - ;; go! - (.sync.l) - (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0) - ) - ) + (let ((gp-0 *vu0-dma-list*)) + ;; reset the buffer + (let ((v1-0 gp-0)) + (set! (-> v1-0 base) (-> v1-0 data)) + (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length)))) + ;; upload the function dma + (dma-buffer-add-vu-function gp-0 collide-vu0-block 0) + ;; end dma chain + (let* ((v1-1 gp-0) + (a0-5 (the-as object (-> v1-1 base)))) + (set! (-> (the-as dma-packet a0-5) dma) (new 'static 'dma-tag :id (dma-tag-id end))) + (set! (-> (the-as (pointer uint64) a0-5) 1) (the-as uint 0)) + (set! (-> v1-1 base) (&+ (the-as pointer a0-5) 16))) + ;; go! + (.sync.l) + (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0))) 0 - (none) - ) + (none)) ;; main collide probe function: @@ -264,7 +193,6 @@ 0 ;; load vu0 program (collide-upload-vu0) - ;; iterate over trees (let ((s5-1 (-> s5-0 drawable-trees))) (dotimes (s4-0 (-> s5-1 length)) @@ -276,56 +204,30 @@ (cond ((< 1 (-> v1-3 length)) (let ((v1-4 (-> v1-3 data 0))) - (collide-probe-instance-tie - (-> (the-as drawable-inline-array-node v1-4) data) - (-> (the-as drawable-inline-array-node v1-4) length) - a2-0 - 1 - ) - ) - ) + (collide-probe-instance-tie (-> (the-as drawable-inline-array-node v1-4) data) + (-> (the-as drawable-inline-array-node v1-4) length) + a2-0 + 1))) ((= (-> v1-3 length) 1) (let ((v1-6 (-> v1-3 data 0))) - (collide-probe-instance-tie - (-> (the-as drawable-inline-array-instance-tie v1-6) data) - (-> (the-as drawable-inline-array-instance-tie v1-6) length) - a2-0 - 0 - ) - ) - ) - ) - ) - 0 - ) + (collide-probe-instance-tie (-> (the-as drawable-inline-array-instance-tie v1-6) data) + (-> (the-as drawable-inline-array-instance-tie v1-6) length) + a2-0 + 0))))) + 0) ((= (-> v1-3 type) drawable-tree-collide-fragment) ;; collide with tfrags (let ((a2-1 arg1)) (cond ((< 1 (-> v1-3 length)) (let ((v1-9 (-> v1-3 data 0))) - (collide-probe-node - (-> (the-as drawable-inline-array-node v1-9) data) - (-> (the-as drawable-inline-array-node v1-9) length) - a2-1 - ) - ) - ) - (else - ) - ) - ) - 0 - ) - (else - ) - ) - ) - ) - ) - ) - (none) - ) + (collide-probe-node (-> (the-as drawable-inline-array-node v1-9) data) + (-> (the-as drawable-inline-array-node v1-9) length) + a2-1))) + (else))) + 0) + (else)))))) + (none)) ;;;;;;;;;;;;;;;;;;; ;; Hacks @@ -336,65 +238,32 @@ (defun distc ((arg0 vector) (arg1 vector)) (let* ((f0-1 (- (-> arg0 x) (-> arg1 x))) (f0-3 (* f0-1 f0-1)) - (f1-2 (- (-> arg0 z) (-> arg1 z))) - ) - (sqrtf (+ f0-3 (* f1-2 f1-2))) - ) - ) + (f1-2 (- (-> arg0 z) (-> arg1 z)))) + (sqrtf (+ f0-3 (* f1-2 f1-2))))) (defun interpolate ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 float)) (let ((f0-1 (- arg3 arg1)) (f1-2 (- arg4 arg2)) - (f3-1 (- arg0 arg1)) - ) - (+ arg2 (/ (* f3-1 f1-2) f0-1)) - ) - ) + (f3-1 (- arg0 arg1))) + (+ arg2 (/ (* f3-1 f1-2) f0-1)))) (defun misty-ambush-height ((arg0 vector)) (let* ((a1-0 (new 'static 'vector :x -808960.0 :y 111656.96 :z 3924992.0)) - (f0-0 (distc arg0 a1-0)) - ) + (f0-0 (distc arg0 a1-0))) (cond - ((< f0-0 52019.2) - 111656.96 - ) - ((>= 58982.4 f0-0) - (interpolate f0-0 52019.2 111656.96 58982.4 116776.96) - ) - ((>= 124436.48 f0-0) - (interpolate f0-0 58982.4 116776.96 124436.48 114688.0) - ) - ((>= 219217.92 f0-0) - (interpolate f0-0 124436.48 114688.0 219217.92 113254.4) - ) - (else - 113254.4 - ) - ) - ) - ) + ((< f0-0 52019.2) 111656.96) + ((>= 58982.4 f0-0) (interpolate f0-0 52019.2 111656.96 58982.4 116776.96)) + ((>= 124436.48 f0-0) (interpolate f0-0 58982.4 116776.96 124436.48 114688.0)) + ((>= 219217.92 f0-0) (interpolate f0-0 124436.48 114688.0 219217.92 113254.4)) + (else 113254.4)))) (defun misty-ambush-height-probe ((arg0 vector) (arg1 float)) "Hack to manually compute the ground height in misty ambush." (let ((f0-0 (misty-ambush-height arg0))) (cond - ((< f0-0 (-> arg0 y)) - (/ (- (-> arg0 y) f0-0) arg1) - ) - (else - (format 0 "WARNING: ~%height = ~f, pos.y = ~f" (* 0.00024414062 f0-0) (* 0.00024414062 (-> arg0 y))) - -1.0 - ) - ) - ) - ) + ((< f0-0 (-> arg0 y)) (/ (- (-> arg0 y) f0-0) arg1)) + (else (format 0 "WARNING: ~%height = ~f, pos.y = ~f" (* 0.00024414062 f0-0) (* 0.00024414062 (-> arg0 y))) -1.0)))) (defun pke-collide-test () 0 - (none) - ) - - - - + (none)) diff --git a/goal_src/jak1/engine/collide/collide-shape-h.gc b/goal_src/jak1/engine/collide/collide-shape-h.gc index a1ead91298..0adceb4bd7 100644 --- a/goal_src/jak1/engine/collide/collide-shape-h.gc +++ b/goal_src/jak1/engine/collide/collide-shape-h.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/pat-h.gc") (require "engine/math/quaternion.gc") (require "kernel/gkernel-h.gc") @@ -9,10 +8,6 @@ (require "engine/game/game-h.gc") (require "engine/engine/connect.gc") -;; name: collide-shape-h.gc -;; name in dgo: collide-shape-h -;; dgos: GAME, ENGINE - ;; What is collide-shape? ;; A collide shape is a group of collision geometry. Typically, each actor will have a single collide shape. ;; Each collide shape may contain a number of collide-shape-prim's. @@ -42,7 +37,6 @@ ;; - uses "collide-mesh-cache". ;; - can't collide with water or the background. - ;; The "new" system: ;; - is the only way to collide with the background/water ;; - uses "collide-cache" @@ -53,7 +47,6 @@ ;; foreground meshes. The new system can just import foreground collision meshes ;; into its collide cache. - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Collision queries: @@ -74,7 +67,6 @@ ;; This will call the reaction function. The default "default-collision-reaction" function is in collide-shape.gc ;; will fill the touching list. - ;; Nav Enemy Collision (made up name) ;; collide-shape-moving-method-58 and integrate-for-enemy-with-move-to-ground are nav-enemy specific. ;; the details aren't super well understood yet. But they basically try to go forward if they aren't blocked. @@ -87,8 +79,8 @@ ;; for platforms, detect if somebody is on the platform. (on-platform-test) ;; uses old system. Sends event adds to rider list. - (declare-type touching-list structure) + (declare-type collide-shape-prim basic) ;; DECOMP BEGINS @@ -101,57 +93,43 @@ ;; Sticky: when you hit the platform, your velocity immediately changes to match the thing. ;; like when Jak lands on a platform. - (deftype collide-sticky-rider (structure) - ((rider-handle handle) - (sticky-prim collide-shape-prim) - (prim-ry float) - (rider-local-pos vector :inline) - ) + ((rider-handle handle) + (sticky-prim collide-shape-prim) + (prim-ry float) + (rider-local-pos vector :inline)) (:methods - (set-rider! (_type_ handle) symbol) - ) - ) - + (set-rider! (_type_ handle) symbol))) (defmethod set-rider! ((this collide-sticky-rider) (arg0 handle)) "Set the rider and clear the primitive." (set! (-> this rider-handle) arg0) (set! (-> this sticky-prim) #f) - #f - ) + #f) ;; A collection of collide-sticky-riders ;; dynamic type. There's one collide-sticky-rider per rider. (deftype collide-sticky-rider-group (basic) - ((num-riders int32) - (allocated-riders int32) - (rider collide-sticky-rider 1 :inline) - ) + ((num-riders int32) + (allocated-riders int32) + (rider collide-sticky-rider 1 :inline)) (:methods - (new (symbol type int) _type_) - (add-rider! (_type_ process-drawable) collide-sticky-rider) - (reset! (_type_) int) - ) - ) - + (new (symbol type int) _type_) + (add-rider! (_type_ process-drawable) collide-sticky-rider) + (reset! (_type_) int))) (defmethod reset! ((this collide-sticky-rider-group)) "Reset all active riders" (set! (-> this num-riders) 0) - 0 - ) + 0) ;; The rider will be pulled along by the object. ;; This includes possibly rotating the rider (if the platform spins, it spins Jak too). (deftype pull-rider-info (structure) - ((rider collide-sticky-rider) - (rider-cshape collide-shape-moving) - (rider-delta-ry float) - (rider-dest vector :inline) - ) - ) - + ((rider collide-sticky-rider) + (rider-cshape collide-shape-moving) + (rider-delta-ry float) + (rider-dest vector :inline))) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Collision Result @@ -161,37 +139,29 @@ ;; this computes a "move-vec" and "u". If you move along "move-vec" by "u", you will move out of collsion. ;; It also tells you which primitives are colliding. (deftype collide-shape-intersect (basic) - ((move-vec vector :inline) - (best-u float) - (best-tri collide-tri-result :inline) - (best-from-prim collide-shape-prim) - (best-to-prim collide-shape-prim) - ) + ((move-vec vector :inline) + (best-u float) + (best-tri collide-tri-result :inline) + (best-from-prim collide-shape-prim) + (best-to-prim collide-shape-prim)) (:methods - (init! (_type_ vector) symbol) - ) - ) + (init! (_type_ vector) symbol))) ;; Collision with just overlap distance, no vector. (deftype collide-overlap-result (structure) - ((best-dist float) - (best-from-prim collide-shape-prim) - (best-to-prim collide-shape-prim) - (best-from-tri collide-tri-result :inline) - ) + ((best-dist float) + (best-from-prim collide-shape-prim) + (best-to-prim collide-shape-prim) + (best-from-tri collide-tri-result :inline)) (:methods - (reset! (_type_) none) - ) - ) - + (reset! (_type_) none))) (defmethod reset! ((this collide-overlap-result)) "Reset the result." (set! (-> this best-dist) 0.0) (set! (-> this best-from-prim) #f) (set! (-> this best-to-prim) #f) - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Touching System @@ -201,24 +171,24 @@ ;; but this isn't well understood yet (deftype overlaps-others-params (structure) - ((options uint32) - (tlist touching-list) - ) - ) + ((options uint32) + (tlist touching-list))) ;; The engine system is used to link collision checks with processes. ;; This allows you to have lists of processes where the process will remove itself when it dies. (define *collide-hit-by-player-list* (new 'global 'engine 'collide-hit-by-player-list 768)) + (define *collide-usually-hit-by-player-list* (new 'global 'engine 'collide-usually-hit-by-player-list 256)) + (define *collide-hit-by-others-list* (new 'global 'engine 'collide-hit-by-others-list 96)) + (define *collide-player-list* (new 'global 'engine 'collide-player-list 32)) (defenum collide-list-enum (hit-by-player) (usually-hit-by-player) (hit-by-others) - (player) - ) + (player)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Collision Primitive Base @@ -226,7 +196,6 @@ ;; These are the settings that can be set per primitive. - (defenum collide-kind :type uint64 :bitfield #t @@ -293,29 +262,28 @@ (unknown-60 60) (unknown-61 61) (unknown-62 62) - (unknown-63 63) - ) + (unknown-63 63)) (defenum collide-action :type uint32 :bitfield #t - (solid 0) ;; used for solid things - (rider-plat-sticky 1) ;; used for platforms in rider/platform interactions - (rider-target 2) ;; used for target in rider/platform interactions - (edgegrab-active 3) ;; set/cleared when entering/exiting edgegrab states - (rider-plat 4) ;; used for platforms in rider/platform interactions - (unused 5) ;; totally unused? - (edgegrab-possible 6) ;; used when edge grab checks should be done - (edgegrab-cam 7) ;; set/cleared when entering/exiting edgegrab states - (swingpole-active 8) ;; set/cleared when entering/exiting swingpole states - (racer 9) ;; set/cleared when entering/exiting racer states - (attackable 10) ;; used for something to do with attacking/damaging + (solid 0) ;; used for solid things + (rider-plat-sticky 1) ;; used for platforms in rider/platform interactions + (rider-target 2) ;; used for target in rider/platform interactions + (edgegrab-active 3) ;; set/cleared when entering/exiting edgegrab states + (rider-plat 4) ;; used for platforms in rider/platform interactions + (unused 5) ;; totally unused? + (edgegrab-possible 6) ;; used when edge grab checks should be done + (edgegrab-cam 7) ;; set/cleared when entering/exiting edgegrab states + (swingpole-active 8) ;; set/cleared when entering/exiting swingpole states + (racer 9) ;; set/cleared when entering/exiting racer states + (attackable 10) ;; used for something to do with attacking/damaging (attackable-unused 11) ;; seems to relate to attacking - set in several places but never tested for? - (snowball 12) ;; set/cleared when entering/exiting snowball states - (tube 13) ;; set/cleared when entering/exiting tube states - (flut 14) ;; set/cleared when entering/exiting flutflut states - (racer-grounded 15) ;; set/cleared when entering/exiting certain racer states w/ extra conditions - (racer-unused 16) ;; seems to relate to racer - never set, only cleared in one place? + (snowball 12) ;; set/cleared when entering/exiting snowball states + (tube 13) ;; set/cleared when entering/exiting tube states + (flut 14) ;; set/cleared when entering/exiting flutflut states + (racer-grounded 15) ;; set/cleared when entering/exiting certain racer states w/ extra conditions + (racer-unused 16) ;; seems to relate to racer - never set, only cleared in one place? ) ;; this field is a bit confusing. you have to have a higher offense to win against an object. @@ -325,70 +293,67 @@ (defenum collide-offense :type int8 (no-offense 0) - (touch 1) ;; just have to touch - (normal-attack 2) ;; any attack (like a normal crate) - (strong-attack 3) ;; hit with zoomer, slide, ground pound/flop, flut attack - (indestructible 4) ;; can't attack it. + (touch 1) ;; just have to touch + (normal-attack 2) ;; any attack (like a normal crate) + (strong-attack 3) ;; hit with zoomer, slide, ground pound/flop, flut attack + (indestructible 4) ;; can't attack it. ) - ;; Every primitive has a prim-core. ;; this is a 32-byte chunk of data that can be pulled out an put in collide caches ;; it stores the transformed world sphere and the collision settings (deftype collide-prim-core (structure) - ((world-sphere vector :inline) - (collide-as collide-kind) - (action collide-action) - (offense collide-offense) - (prim-type int8) - (extra uint8 2) - (quad uint128 2 :overlay-at (-> world-sphere quad)) - ) - ) + ((world-sphere vector :inline) + (collide-as collide-kind) + (action collide-action) + (offense collide-offense) + (prim-type int8) + (extra uint8 2) + (quad uint128 2 :overlay-at (-> world-sphere quad)))) (declare-type collide-shape basic) + (declare-type collide-cache-prim structure) + (declare-type collide-shape-prim-group basic) + (declare-type collide-cache basic) ;; the base class for collision shapes. (deftype collide-shape-prim (basic) - ((cshape collide-shape) - (prim-id uint32) - (transform-index int8) - (prim-core collide-prim-core :inline) - (local-sphere vector :inline) - (collide-with collide-kind) - (world-sphere vector :inline :overlay-at (-> prim-core world-sphere)) - (collide-as collide-kind :overlay-at (-> prim-core collide-as)) - (action collide-action :overlay-at (-> prim-core action)) - (offense collide-offense :overlay-at (-> prim-core offense)) - (prim-type int8 :overlay-at (-> prim-core prim-type)) - (radius meters :overlay-at (-> local-sphere w)) - ) + ((cshape collide-shape) + (prim-id uint32) + (transform-index int8) + (prim-core collide-prim-core :inline) + (local-sphere vector :inline) + (collide-with collide-kind) + (world-sphere vector :inline :overlay-at (-> prim-core world-sphere)) + (collide-as collide-kind :overlay-at (-> prim-core collide-as)) + (action collide-action :overlay-at (-> prim-core action)) + (offense collide-offense :overlay-at (-> prim-core offense)) + (prim-type int8 :overlay-at (-> prim-core prim-type)) + (radius meters :overlay-at (-> local-sphere w))) (:methods - (new (symbol type collide-shape uint int) _type_) - (move-by-vector! (_type_ vector) none) - (find-prim-by-id (_type_ uint) collide-shape-prim) - (debug-draw-world-sphere (_type_) symbol) - (add-fg-prim-using-box (_type_ collide-cache) none) - (add-fg-prim-using-line-sphere (_type_ collide-cache) none) - (add-fg-prim-using-y-probe (_type_ collide-cache) none) - (overlaps-others-test (_type_ overlaps-others-params collide-shape-prim) symbol) - (overlaps-others-group (_type_ overlaps-others-params collide-shape-prim-group) symbol) - (unused-17 () none) - (collide-with-collide-cache-prim-mesh (_type_ collide-shape-intersect collide-cache-prim) none) - (collide-with-collide-cache-prim-sphere (_type_ collide-shape-intersect collide-cache-prim) none) - (add-to-bounding-box (_type_ collide-kind) symbol) - (num-mesh (_type_ collide-shape-prim) int) - (on-platform-test (_type_ collide-shape-prim collide-overlap-result float) none) - (should-push-away-test (_type_ collide-shape-prim collide-overlap-result) none) - (should-push-away-reverse-test (_type_ collide-shape-prim-group collide-overlap-result) none) - (update-transforms! (_type_ process-drawable) symbol) - (set-collide-as! (_type_ collide-kind) none) - (set-collide-with! (_type_ collide-kind) none) - ) - ) + (new (symbol type collide-shape uint int) _type_) + (move-by-vector! (_type_ vector) none) + (find-prim-by-id (_type_ uint) collide-shape-prim) + (debug-draw-world-sphere (_type_) symbol) + (add-fg-prim-using-box (_type_ collide-cache) none) + (add-fg-prim-using-line-sphere (_type_ collide-cache) none) + (add-fg-prim-using-y-probe (_type_ collide-cache) none) + (overlaps-others-test (_type_ overlaps-others-params collide-shape-prim) symbol) + (overlaps-others-group (_type_ overlaps-others-params collide-shape-prim-group) symbol) + (unused-17 () none) + (collide-with-collide-cache-prim-mesh (_type_ collide-shape-intersect collide-cache-prim) none) + (collide-with-collide-cache-prim-sphere (_type_ collide-shape-intersect collide-cache-prim) none) + (add-to-bounding-box (_type_ collide-kind) symbol) + (num-mesh (_type_ collide-shape-prim) int) + (on-platform-test (_type_ collide-shape-prim collide-overlap-result float) none) + (should-push-away-test (_type_ collide-shape-prim collide-overlap-result) none) + (should-push-away-reverse-test (_type_ collide-shape-prim-group collide-overlap-result) none) + (update-transforms! (_type_ process-drawable) symbol) + (set-collide-as! (_type_ collide-kind) none) + (set-collide-with! (_type_ collide-kind) none))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Specific Collision Implementation @@ -402,43 +367,34 @@ ;; the pat is stored directly here. ;; I believe the "local sphere" is used as the sphere. (deftype collide-shape-prim-sphere (collide-shape-prim) - ((pat pat-surface) - ) + ((pat pat-surface)) (:methods - (new (symbol type collide-shape uint) _type_) - ) - ) + (new (symbol type collide-shape uint) _type_))) ;; mesh collision ;; the pats are stored per tri in the mesh. ;; These meshes interact with a cache automatically (a specific collide-shape-prim-mesh cache, not the ;; more general collide-cache) (deftype collide-shape-prim-mesh (collide-shape-prim) - ((mesh collide-mesh) - (mesh-id int32) - (mesh-cache-id uint64) - (mesh-cache-tris (inline-array collide-mesh-cache-tri)) - ) + ((mesh collide-mesh) + (mesh-id int32) + (mesh-cache-id uint64) + (mesh-cache-tris (inline-array collide-mesh-cache-tri))) (:methods - (new (symbol type collide-shape uint uint) _type_) - (change-mesh (_type_ int) none) - ) - ) + (new (symbol type collide-shape uint uint) _type_) + (change-mesh (_type_ int) none))) ;; A group of collide-shape-prim's (deftype collide-shape-prim-group (collide-shape-prim) - ((num-prims int32) - (num-prims-u uint32 :overlay-at num-prims) - (allocated-prims int32) - (prim collide-shape-prim 1) - (prims collide-shape-prim :dynamic :overlay-at (-> prim 0)) - ) + ((num-prims int32) + (num-prims-u uint32 :overlay-at num-prims) + (allocated-prims int32) + (prim collide-shape-prim 1) + (prims collide-shape-prim :dynamic :overlay-at (-> prim 0))) (:methods - (new (symbol type collide-shape uint int) _type_) - (append-prim (_type_ collide-shape-prim) none) - (add-to-non-empty-bounding-box (_type_ collide-kind) none) - ) - ) + (new (symbol type collide-shape uint int) _type_) + (append-prim (_type_ collide-shape-prim) none) + (add-to-non-empty-bounding-box (_type_ collide-kind) none))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Collide Shape @@ -452,6 +408,7 @@ ;; - riders (declare-type collide-work structure) + (declare-type touching-shapes-entry structure) (defenum nav-flags @@ -464,55 +421,51 @@ (navf4 4) (navf5 5) (navf6 6) - (navf7 7) - ) + (navf7 7)) ;; we're a child of trsqv, so we store a full transform + derivative. (deftype collide-shape (trsqv) - ((process process-drawable) - (max-iteration-count uint8) - (nav-flags nav-flags) - (pad-byte uint8 2) - (pat-ignore-mask pat-surface) - (event-self symbol) - (event-other symbol) - (root-prim collide-shape-prim) - (riders collide-sticky-rider-group) - (backup-collide-as collide-kind) - (backup-collide-with collide-kind) - ) + ((process process-drawable) + (max-iteration-count uint8) + (nav-flags nav-flags) + (pad-byte uint8 2) + (pat-ignore-mask pat-surface) + (event-self symbol) + (event-other symbol) + (root-prim collide-shape-prim) + (riders collide-sticky-rider-group) + (backup-collide-as collide-kind) + (backup-collide-with collide-kind)) (:methods - (new (symbol type process-drawable collide-list-enum) _type_) - (move-by-vector! (_type_ vector) none) - (alloc-riders (_type_ int) none) - (move-to-point! (_type_ vector) none) - (debug-draw (_type_) none) - (fill-cache-for-shape! (_type_ float collide-kind) none) - (fill-cache-integrate-and-collide! (_type_ vector collide-kind) none) - (find-prim-by-id (_type_ uint) collide-shape-prim) - (detect-riders! (_type_) symbol) - (build-bounding-box-for-shape (_type_ bounding-box float collide-kind) symbol) - (integrate-and-collide! (_type_ vector) none) - (find-collision-meshes (_type_) symbol) - (on-platform (_type_ collide-shape collide-overlap-result) symbol) - (find-overlapping-shapes (_type_ overlaps-others-params) symbol) - (calc-shove-up (_type_ attack-info float) vector) - (should-push-away (_type_ collide-shape collide-overlap-result) symbol) - (pull-rider! (_type_ pull-rider-info) none) - (pull-riders! (_type_) symbol) - (do-push-aways! (_type_) symbol) - (set-root-prim! (_type_ collide-shape-prim) collide-shape-prim) - (update-transforms! (_type_) symbol) - (clear-collide-with-as (_type_) none) - (restore-collide-with-as (_type_) none) - (backup-collide-with-as (_type_) none) - (set-root-prim-collide-with! (_type_ collide-kind) none) - (set-root-prim-collide-as! (_type_ collide-kind) none) - (set-collide-kinds (_type_ int collide-kind collide-kind) none) - (set-collide-offense (_type_ int collide-offense) none) - (send-shove-back (_type_ process touching-shapes-entry float float float) none) - ) - ) + (new (symbol type process-drawable collide-list-enum) _type_) + (move-by-vector! (_type_ vector) none) + (alloc-riders (_type_ int) none) + (move-to-point! (_type_ vector) none) + (debug-draw (_type_) none) + (fill-cache-for-shape! (_type_ float collide-kind) none) + (fill-cache-integrate-and-collide! (_type_ vector collide-kind) none) + (find-prim-by-id (_type_ uint) collide-shape-prim) + (detect-riders! (_type_) symbol) + (build-bounding-box-for-shape (_type_ bounding-box float collide-kind) symbol) + (integrate-and-collide! (_type_ vector) none) + (find-collision-meshes (_type_) symbol) + (on-platform (_type_ collide-shape collide-overlap-result) symbol) + (find-overlapping-shapes (_type_ overlaps-others-params) symbol) + (calc-shove-up (_type_ attack-info float) vector) + (should-push-away (_type_ collide-shape collide-overlap-result) symbol) + (pull-rider! (_type_ pull-rider-info) none) + (pull-riders! (_type_) symbol) + (do-push-aways! (_type_) symbol) + (set-root-prim! (_type_ collide-shape-prim) collide-shape-prim) + (update-transforms! (_type_) symbol) + (clear-collide-with-as (_type_) none) + (restore-collide-with-as (_type_) none) + (backup-collide-with-as (_type_) none) + (set-root-prim-collide-with! (_type_ collide-kind) none) + (set-root-prim-collide-as! (_type_ collide-kind) none) + (set-collide-kinds (_type_ int collide-kind collide-kind) none) + (set-collide-offense (_type_ int collide-offense) none) + (send-shove-back (_type_ process touching-shapes-entry float float float) none))) (defenum cshape-moving-flags :bitfield #t @@ -546,8 +499,7 @@ (csmf26) (csmf27) (csmf28) - (csmf29) - ) + (csmf29)) (defenum cshape-reaction-flags :bitfield #t @@ -583,49 +535,45 @@ (csrf28) (csrf29) (csrf30) - (csrf31) - ) + (csrf31)) ;; A collide-shape for independently moving objects (deftype collide-shape-moving (collide-shape) - ((rider-time time-frame) - (rider-last-move vector :inline) - (trans-old vector 3 :inline) - (poly-pat pat-surface) - (cur-pat pat-surface) - (ground-pat pat-surface) - (status cshape-moving-flags) - (old-status cshape-moving-flags) - (prev-status cshape-moving-flags) - (reaction-flag cshape-reaction-flags) - (reaction (function collide-shape-moving collide-shape-intersect vector vector cshape-moving-flags)) - (no-reaction (function collide-shape-moving collide-shape-intersect vector vector none)) - (local-normal vector :inline) - (surface-normal vector :inline) - (poly-normal vector :inline) - (ground-poly-normal vector :inline) - (ground-touch-point vector :inline) - (shadow-pos vector :inline) - (ground-impact-vel meters) - (surface-angle float) - (poly-angle float) - (touch-angle float) - (coverage float) - (dynam dynamics) - (surf surface) - ) + ((rider-time time-frame) + (rider-last-move vector :inline) + (trans-old vector 3 :inline) + (poly-pat pat-surface) + (cur-pat pat-surface) + (ground-pat pat-surface) + (status cshape-moving-flags) + (old-status cshape-moving-flags) + (prev-status cshape-moving-flags) + (reaction-flag cshape-reaction-flags) + (reaction (function collide-shape-moving collide-shape-intersect vector vector cshape-moving-flags)) + (no-reaction (function collide-shape-moving collide-shape-intersect vector vector none)) + (local-normal vector :inline) + (surface-normal vector :inline) + (poly-normal vector :inline) + (ground-poly-normal vector :inline) + (ground-touch-point vector :inline) + (shadow-pos vector :inline) + (ground-impact-vel meters) + (surface-angle float) + (poly-angle float) + (touch-angle float) + (coverage float) + (dynam dynamics) + (surf surface)) (:methods - (set-and-handle-pat! (_type_ pat-surface) none) - (integrate-no-collide! (_type_ vector) none) - (collide-shape-moving-method-58 (_type_ vector) symbol) - (integrate-for-enemy-with-move-to-ground! (_type_ vector collide-kind float symbol symbol symbol) none) - (move-to-ground (_type_ float float symbol collide-kind) symbol) - (move-to-ground-point! (_type_ vector vector vector) none) - (compute-acc-due-to-gravity (_type_ vector float) vector) - (step-collison! (_type_ vector vector float) float) - (move-to-tri! (_type_ collide-tri-result vector) none) - ) - ) + (set-and-handle-pat! (_type_ pat-surface) none) + (integrate-no-collide! (_type_ vector) none) + (collide-shape-moving-method-58 (_type_ vector) symbol) + (integrate-for-enemy-with-move-to-ground! (_type_ vector collide-kind float symbol symbol symbol) none) + (move-to-ground (_type_ float float symbol collide-kind) symbol) + (move-to-ground-point! (_type_ vector vector vector) none) + (compute-acc-due-to-gravity (_type_ vector float) vector) + (step-collison! (_type_ vector vector float) float) + (move-to-tri! (_type_ collide-tri-result vector) none))) ;;;;;;;;;;;;;;;;;;;; ;; Basic Methods @@ -641,61 +589,54 @@ (set! (-> v0-0 transform-index) -2) (set! (-> v0-0 prim-core offense) (collide-offense no-offense)) (set! (-> v0-0 prim-core prim-type) -2) - v0-0 - ) - ) + v0-0)) (defmethod new collide-shape-prim-sphere ((allocation symbol) (type-to-make type) (cshape collide-shape) (prim-id uint)) "Allocate a new sphere primitive" - - (let ((this (the collide-shape-prim-sphere ((method-of-type collide-shape-prim new) allocation type-to-make cshape prim-id (size-of collide-shape-prim-sphere))))) - (set! (-> this pat) (new 'static 'pat-surface :mode (pat-mode obstacle))) - (set! (-> this prim-core prim-type) -1) - this - ) - ) + (let ((this (the collide-shape-prim-sphere + ((method-of-type collide-shape-prim new) allocation type-to-make cshape prim-id (size-of collide-shape-prim-sphere))))) + (set! (-> this pat) (new 'static 'pat-surface :mode (pat-mode obstacle))) + (set! (-> this prim-core prim-type) -1) + this)) (defmethod new collide-shape-prim-mesh ((allocation symbol) (type-to-make type) (cshape collide-shape) (mesh-id uint) (prim-id uint)) "Allocate a new mesh primitive" - - (let ((this (the collide-shape-prim-mesh ((method-of-type collide-shape-prim new) allocation type-to-make cshape prim-id (size-of collide-shape-prim-mesh))))) + (let ((this (the collide-shape-prim-mesh + ((method-of-type collide-shape-prim new) allocation type-to-make cshape prim-id (size-of collide-shape-prim-mesh))))) (set! (-> this mesh) #f) (set! (-> this mesh-id) (the-as int mesh-id)) (set! (-> this mesh-cache-id) (the-as uint 0)) (set! (-> this prim-core prim-type) 1) - (the-as collide-shape-prim-mesh this) - ) - ) + (the-as collide-shape-prim-mesh this))) (defmethod new collide-shape-prim-group ((allocation symbol) (type-to-make type) (cshape collide-shape) (elt-count uint) (prim-id int)) "Allocate a group of primitives." - - (let ((this (the collide-shape-prim-group ((method-of-type collide-shape-prim new) allocation type-to-make cshape (the uint prim-id) (the int (+ (-> type-to-make size) (* (+ elt-count -1) 4))))))) + (let ((this (the collide-shape-prim-group + ((method-of-type collide-shape-prim new) + allocation + type-to-make + cshape + (the uint prim-id) + (the int (+ (-> type-to-make size) (* (+ elt-count -1) 4))))))) (set! (-> this allocated-prims) (the int elt-count)) (set! (-> this num-prims) 0) (set! (-> this prim-core prim-type) 0) (while (nonzero? elt-count) (+! elt-count -1) (set! (-> this prim elt-count) (the collide-shape-prim #f)) - (nop!) - ) - this - ) - ) + (nop!)) + this)) (defmethod length ((this collide-shape-prim-group)) "How many primitives are used?" - (-> this num-prims) - ) + (-> this num-prims)) (defmethod asize-of ((this collide-shape-prim-group)) "How big is this in memory?" - (the-as int (+ (-> this type size) (* (+ (-> this allocated-prims) -1) 4))) - ) + (the-as int (+ (-> this type size) (* (+ (-> this allocated-prims) -1) 4)))) (defmethod new collide-shape ((allocation symbol) (type-to-make type) (proc process-drawable) (collide-list-kind collide-list-enum)) "Allocate a new collide-shape and add to a collide-list" - (let ((this (object-new allocation type-to-make (the int (-> type-to-make size))))) (set! (-> this process) proc) (set! (-> this max-iteration-count) 1) @@ -704,84 +645,67 @@ (set! (-> this event-other) #f) (set! (-> this riders) #f) (set! (-> this root-prim) #f) - (case (-> proc type symbol) - (('camera) - (set! (-> this pat-ignore-mask) (new 'static 'pat-surface :nocamera #x1)) - ) - (else - (set! (-> this pat-ignore-mask) (new 'static 'pat-surface :noentity #x1)) - ) - ) + (('camera) (set! (-> this pat-ignore-mask) (new 'static 'pat-surface :nocamera #x1))) + (else (set! (-> this pat-ignore-mask) (new 'static 'pat-surface :noentity #x1)))) ;; reset transformation to the origin. (set! (-> this trans w) 1.0) (quaternion-identity! (-> this quat)) (vector-identity! (-> this scale)) - ;; add us to right list. (case collide-list-kind - (((collide-list-enum hit-by-player)) - (add-connection *collide-hit-by-player-list* proc #f this #f #f)) - - (((collide-list-enum usually-hit-by-player)) - (add-connection *collide-usually-hit-by-player-list* proc #f this #f #f)) - - (((collide-list-enum hit-by-others)) - (add-connection *collide-hit-by-others-list* proc #f this #f #f)) - - (((collide-list-enum player)) - (add-connection *collide-player-list* proc #f this #f #f)) - - (else - (format 0 "Unsupported collide-list-enum in collide-shape constructor!~%") - ) - ) - this - ) - ) + (((collide-list-enum hit-by-player)) (add-connection *collide-hit-by-player-list* proc #f this #f #f)) + (((collide-list-enum usually-hit-by-player)) (add-connection *collide-usually-hit-by-player-list* proc #f this #f #f)) + (((collide-list-enum hit-by-others)) (add-connection *collide-hit-by-others-list* proc #f this #f #f)) + (((collide-list-enum player)) (add-connection *collide-player-list* proc #f this #f #f)) + (else (format 0 "Unsupported collide-list-enum in collide-shape constructor!~%"))) + this)) (defmethod new collide-sticky-rider-group ((allocation symbol) (type-to-make type) (riders-amount int)) "Allocate a new collide-sticky-rider-group with space for riders-amount sticky riders." - - (let ((this (object-new allocation type-to-make (the int (+ (-> type-to-make size) (the uint (* (1- riders-amount) (size-of collide-sticky-rider)))))))) - (set! (-> this allocated-riders) riders-amount) - (set! (-> this num-riders) 0) - this - ) - ) + (let ((this (object-new allocation + type-to-make + (the int (+ (-> type-to-make size) (the uint (* (1- riders-amount) (size-of collide-sticky-rider)))))))) + (set! (-> this allocated-riders) riders-amount) + (set! (-> this num-riders) 0) + this)) (defmethod length ((this collide-sticky-rider-group)) - (-> this num-riders) - ) + (-> this num-riders)) (defmethod asize-of ((this collide-sticky-rider-group)) - (the-as int (+ (-> this type size) (* (+ (-> this allocated-riders) -1) 32))) - ) - -(define *collide-shape-prim-backgnd* (new 'static 'collide-shape-prim-mesh - :cshape #f - :prim-core (new 'static 'collide-prim-core - :world-sphere (new 'static 'vector :w 204800000.0) - :collide-as (collide-kind background) - :action (collide-action solid) - :offense (collide-offense indestructible) - :prim-type 2 - ) - :local-sphere (new 'static 'vector :w 204800000.0) - :mesh #f - ) - ) - -(define *collide-shape-prim-water* (new 'static 'collide-shape-prim-mesh - :cshape #f - :prim-core (new 'static 'collide-prim-core - :world-sphere (new 'static 'vector :w 204800000.0) - :collide-as (collide-kind water) - :action (collide-action solid) - :offense (collide-offense indestructible) - :prim-type 2 - ) - :local-sphere (new 'static 'vector :w 204800000.0) - :mesh #f - ) - ) + (the-as int (+ (-> this type size) (* (+ (-> this allocated-riders) -1) 32)))) + +(define *collide-shape-prim-backgnd* + (new 'static + 'collide-shape-prim-mesh + :cshape #f + :prim-core + (new 'static + 'collide-prim-core + :world-sphere + (new 'static 'vector :w 204800000.0) + :collide-as (collide-kind background) + :action (collide-action solid) + :offense (collide-offense indestructible) + :prim-type 2) + :local-sphere + (new 'static 'vector :w 204800000.0) + :mesh #f)) + +(define *collide-shape-prim-water* + (new 'static + 'collide-shape-prim-mesh + :cshape #f + :prim-core + (new 'static + 'collide-prim-core + :world-sphere + (new 'static 'vector :w 204800000.0) + :collide-as (collide-kind water) + :action (collide-action solid) + :offense (collide-offense indestructible) + :prim-type 2) + :local-sphere + (new 'static 'vector :w 204800000.0) + :mesh #f)) diff --git a/goal_src/jak1/engine/collide/collide-shape-rider.gc b/goal_src/jak1/engine/collide/collide-shape-rider.gc index 40a9218aef..cadc959cf0 100644 --- a/goal_src/jak1/engine/collide/collide-shape-rider.gc +++ b/goal_src/jak1/engine/collide/collide-shape-rider.gc @@ -1,51 +1,28 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/collide-shape.gc") -;; name: collide-shape-rider.gc -;; name in dgo: collide-shape-rider -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod on-platform ((this collide-shape) (arg0 collide-shape) (arg1 collide-overlap-result)) "Are we on the platform? Returns #t/#f and also sets an overlap result." - (let ((v1-0 arg1)) - (set! (-> v1-0 best-dist) 0.0) - (set! (-> v1-0 best-from-prim) #f) - (set! (-> v1-0 best-to-prim) #f) - ) + (let ((v1-0 arg1)) (set! (-> v1-0 best-dist) 0.0) (set! (-> v1-0 best-from-prim) #f) (set! (-> v1-0 best-to-prim) #f)) (set! (-> arg1 best-dist) 122.88) (let ((s5-0 (-> this root-prim)) - (s4-0 (-> arg0 root-prim)) - ) + (s4-0 (-> arg0 root-prim))) (when (and (logtest? (-> s5-0 collide-with) (-> s4-0 prim-core collide-as)) (logtest? (-> s5-0 prim-core action) (collide-action rider-plat-sticky)) - (logtest? (-> s4-0 prim-core action) (collide-action rider-target)) - ) + (logtest? (-> s4-0 prim-core action) (collide-action rider-target))) (let ((f0-4 (- (- (vector-vector-distance (the-as vector (-> s5-0 prim-core)) (the-as vector (-> s4-0 prim-core))) - (-> s5-0 prim-core world-sphere w) - ) - (-> s4-0 prim-core world-sphere w) - ) - ) - ) - (if (< f0-4 122.88) - (on-platform-test s5-0 s4-0 arg1 f0-4) - ) - ) - ) - ) - (< (-> arg1 best-dist) 122.88) - ) - + (-> s5-0 prim-core world-sphere w)) + (-> s4-0 prim-core world-sphere w)))) + (if (< f0-4 122.88) (on-platform-test s5-0 s4-0 arg1 f0-4))))) + (< (-> arg1 best-dist) 122.88)) (defmethod on-platform-test ((this collide-shape-prim) (arg0 collide-shape-prim) (arg1 collide-overlap-result) (arg2 float)) (format 0 "ERROR: collide-shape-prim::on-platform-test was called illegally!~%") - (none) - ) + (none)) (defmethod on-platform-test ((this collide-shape-prim-group) (arg0 collide-shape-prim) (arg1 collide-overlap-result) (arg2 float)) "Check if we're on the platform for a prim group." @@ -53,108 +30,60 @@ (dotimes (s2-0 (-> this num-prims)) (let ((s1-0 (-> this prims s2-0))) ;; check collide kind - (when (and (logtest? (-> s1-0 collide-with) s3-0) - (logtest? (-> s1-0 prim-core action) (collide-action rider-plat-sticky)) - ) + (when (and (logtest? (-> s1-0 collide-with) s3-0) (logtest? (-> s1-0 prim-core action) (collide-action rider-plat-sticky))) ;; check dist (let ((f0-2 (- (- (vector-vector-distance (the-as vector (-> s1-0 prim-core)) (the-as vector (-> arg0 prim-core))) - (-> s1-0 prim-core world-sphere w) - ) - (-> arg0 prim-core world-sphere w) - ) - ) - ) + (-> s1-0 prim-core world-sphere w)) + (-> arg0 prim-core world-sphere w)))) ;; dist close enough, check! - (if (< f0-2 122.88) - (on-platform-test s1-0 arg0 arg1 f0-2) - ) - ) - ) - ) - ) - ) - (none) - ) + (if (< f0-2 122.88) (on-platform-test s1-0 arg0 arg1 f0-2))))))) + (none)) (defmethod on-platform-test ((this collide-shape-prim-mesh) (arg0 collide-shape-prim) (arg1 collide-overlap-result) (arg2 float)) "check if we're on the platform for a mesh." (case (-> arg0 type) - ;; mesh to group - ((collide-shape-prim-group) - (let ((s3-0 (-> this collide-with))) - (dotimes (s2-0 (-> (the-as collide-shape-prim-group arg0) num-prims)) - (let ((s1-0 (-> (the-as collide-shape-prim-group arg0) prims s2-0))) - (when (and (logtest? s3-0 (-> s1-0 prim-core collide-as)) - (logtest? (-> s1-0 prim-core action) (collide-action rider-target)) - ) - (let ((f0-2 (- (- (vector-vector-distance (the-as vector (-> this prim-core)) (the-as vector (-> s1-0 prim-core))) - (-> this prim-core world-sphere w) - ) - (-> s1-0 prim-core world-sphere w) - ) - ) - ) - (if (< f0-2 122.88) - (on-platform-test this s1-0 arg1 f0-2) - ) - ) - ) - ) - ) - ) - ) - ;; mesh to sphere. use the collide-mesh-cache. - ((collide-shape-prim-sphere) - (let ((s3-1 (-> this mesh))) - (when s3-1 - (let ((s2-1 *collide-mesh-cache*)) - (when (!= (-> this mesh-cache-id) (-> s2-1 id)) - (let ((v1-17 (allocate! s2-1 (* 96 (-> s3-1 num-tris))))) - (cond - (v1-17 - (set! (-> this mesh-cache-tris) (the-as (inline-array collide-mesh-cache-tri) v1-17)) - (set! (-> this mesh-cache-id) (-> s2-1 id)) - (populate-cache! - s3-1 - (the-as collide-mesh-cache-tri (-> this mesh-cache-tris)) - (-> this cshape process node-list data (-> this transform-index) bone transform) - ) - ) - (else - (return #f) - ) - ) - ) - ) - ) - (let* ((s2-2 (new 'stack-no-clear 'collide-tri-result)) - (f0-4 (sphere-on-platform-test - s3-1 - (the-as collide-mesh-cache-tri (-> this mesh-cache-tris)) - s2-2 - (the-as vector (-> arg0 prim-core)) - (-> arg1 best-dist) - ) - ) - ) - (when (< f0-4 (-> arg1 best-dist)) - (set! (-> arg1 best-dist) f0-4) - (set! (-> arg1 best-from-prim) this) - (set! (-> arg1 best-to-prim) arg0) - (set! (-> arg1 best-from-tri vertex 0 quad) (-> s2-2 vertex 0 quad)) - (set! (-> arg1 best-from-tri vertex 1 quad) (-> s2-2 vertex 1 quad)) - (set! (-> arg1 best-from-tri vertex 2 quad) (-> s2-2 vertex 2 quad)) - (set! (-> arg1 best-from-tri intersect quad) (-> s2-2 intersect quad)) - (set! (-> arg1 best-from-tri normal quad) (-> s2-2 normal quad)) - (set! (-> arg1 best-from-tri pat) (-> s2-2 pat)) - ) - ) - ) - ) - ) - ) - (none) - ) + ;; mesh to group + ((collide-shape-prim-group) + (let ((s3-0 (-> this collide-with))) + (dotimes (s2-0 (-> (the-as collide-shape-prim-group arg0) num-prims)) + (let ((s1-0 (-> (the-as collide-shape-prim-group arg0) prims s2-0))) + (when (and (logtest? s3-0 (-> s1-0 prim-core collide-as)) (logtest? (-> s1-0 prim-core action) (collide-action rider-target))) + (let ((f0-2 (- (- (vector-vector-distance (the-as vector (-> this prim-core)) (the-as vector (-> s1-0 prim-core))) + (-> this prim-core world-sphere w)) + (-> s1-0 prim-core world-sphere w)))) + (if (< f0-2 122.88) (on-platform-test this s1-0 arg1 f0-2)))))))) + ;; mesh to sphere. use the collide-mesh-cache. + ((collide-shape-prim-sphere) + (let ((s3-1 (-> this mesh))) + (when s3-1 + (let ((s2-1 *collide-mesh-cache*)) + (when (!= (-> this mesh-cache-id) (-> s2-1 id)) + (let ((v1-17 (allocate! s2-1 (* 96 (-> s3-1 num-tris))))) + (cond + (v1-17 + (set! (-> this mesh-cache-tris) (the-as (inline-array collide-mesh-cache-tri) v1-17)) + (set! (-> this mesh-cache-id) (-> s2-1 id)) + (populate-cache! s3-1 + (the-as collide-mesh-cache-tri (-> this mesh-cache-tris)) + (-> this cshape process node-list data (-> this transform-index) bone transform))) + (else (return #f)))))) + (let* ((s2-2 (new 'stack-no-clear 'collide-tri-result)) + (f0-4 (sphere-on-platform-test s3-1 + (the-as collide-mesh-cache-tri (-> this mesh-cache-tris)) + s2-2 + (the-as vector (-> arg0 prim-core)) + (-> arg1 best-dist)))) + (when (< f0-4 (-> arg1 best-dist)) + (set! (-> arg1 best-dist) f0-4) + (set! (-> arg1 best-from-prim) this) + (set! (-> arg1 best-to-prim) arg0) + (set! (-> arg1 best-from-tri vertex 0 quad) (-> s2-2 vertex 0 quad)) + (set! (-> arg1 best-from-tri vertex 1 quad) (-> s2-2 vertex 1 quad)) + (set! (-> arg1 best-from-tri vertex 2 quad) (-> s2-2 vertex 2 quad)) + (set! (-> arg1 best-from-tri intersect quad) (-> s2-2 intersect quad)) + (set! (-> arg1 best-from-tri normal quad) (-> s2-2 normal quad)) + (set! (-> arg1 best-from-tri pat) (-> s2-2 pat)))))))) + (none)) (defmethod add-rider! ((this collide-sticky-rider-group) (arg0 process-drawable)) "Add a rider to this platform." @@ -163,33 +92,21 @@ ((< (-> this num-riders) (-> this allocated-riders)) (set! gp-0 (-> this rider (-> this num-riders))) (+! (-> this num-riders) 1) - (let ((v1-6 gp-0)) - (set! (-> v1-6 rider-handle) (the-as handle arg0)) - (set! (-> v1-6 sticky-prim) #f) - ) - ) - (else - (format 0 "ERROR: Exeeded max number of riders!~%") - ) - ) - gp-0 - ) - ) + (let ((v1-6 gp-0)) (set! (-> v1-6 rider-handle) (the-as handle arg0)) (set! (-> v1-6 sticky-prim) #f))) + (else (format 0 "ERROR: Exeeded max number of riders!~%"))) + gp-0)) (defmethod detect-riders! ((this collide-shape)) "See who is riding us." (let ((s5-0 (-> this riders))) (when s5-0 (let* ((v1-0 *collide-mesh-cache*) - (a0-1 (-> v1-0 id)) - ) + (a0-1 (-> v1-0 id))) (set! (-> v1-0 used-size) (the-as uint 0)) (let ((a0-2 (the-as int (+ a0-1 1)))) (b! (zero? (the-as uint a0-2)) cfg-3 :likely-delay (set! a0-2 1)) (label cfg-3) - (set! (-> v1-0 id) (the-as uint a0-2)) - ) - ) + (set! (-> v1-0 id) (the-as uint a0-2)))) (set! (-> s5-0 num-riders) 0) 0 (let ((s4-0 (-> this root-prim collide-with))) @@ -199,46 +116,26 @@ (let ((s3-0 (-> v1-7 next0))) (while (!= v1-7 (-> *collide-player-list* alive-list-end)) (let* ((s2-0 (-> (the-as connection v1-7) param1)) - (v1-8 (-> (the-as collide-shape s2-0) root-prim)) - ) + (v1-8 (-> (the-as collide-shape s2-0) root-prim))) (when (logtest? s4-0 (-> v1-8 prim-core collide-as)) (when (and (logtest? (-> v1-8 prim-core action) (collide-action rider-target)) - (!= (-> this process) (-> (the-as collide-shape s2-0) process)) - ) + (!= (-> this process) (-> (the-as collide-shape s2-0) process))) (let ((s1-0 (new 'stack-no-clear 'collide-overlap-result))) (when (on-platform this (the-as collide-shape s2-0) s1-0) - (let ((s4-1 (add-rider! s5-0 (the-as process-drawable (process->handle (-> (the-as collide-shape s2-0) process))))) - ) + (let ((s4-1 (add-rider! s5-0 (the-as process-drawable (process->handle (-> (the-as collide-shape s2-0) process)))))) (when s4-1 (let ((a0-11 (-> s1-0 best-from-prim))) (set! (-> s4-1 sticky-prim) a0-11) - (let ((s1-1 - (-> (the-as process-drawable (-> this process)) node-list data (-> a0-11 transform-index) bone transform) - ) - ) + (let ((s1-1 (-> (the-as process-drawable (-> this process)) node-list data (-> a0-11 transform-index) bone transform))) (set! (-> s4-1 prim-ry) (matrix-y-angle s1-1)) (let ((s0-0 (new 'stack-no-clear 'matrix))) (matrix-4x4-inverse! s0-0 s1-1) - (vector-matrix*! (-> s4-1 rider-local-pos) (-> (the-as collide-shape s2-0) trans) s0-0) - ) - ) - ) - (send-event (-> this process) 'ridden s4-1) - ) - ) - (set! s4-0 (-> this root-prim collide-with)) - ) - ) - ) - ) - ) + (vector-matrix*! (-> s4-1 rider-local-pos) (-> (the-as collide-shape s2-0) trans) s0-0)))) + (send-event (-> this process) 'ridden s4-1))) + (set! s4-0 (-> this root-prim collide-with))))))) (set! v1-7 s3-0) *collide-player-list* - (set! s3-0 (-> s3-0 next0)) - ) - ) - ) - ) + (set! s3-0 (-> s3-0 next0)))))) (when (logtest? s4-0 (collide-kind cak-1 cak-2 cak-3)) (when (logtest? s4-0 (collide-kind cak-1)) (let ((v1-37 (-> *collide-hit-by-player-list* alive-list next0))) @@ -246,16 +143,13 @@ (let ((s3-1 (-> v1-37 next0))) (while (!= v1-37 (-> *collide-hit-by-player-list* alive-list-end)) (let* ((s2-1 (-> (the-as connection v1-37) param1)) - (v1-38 (-> (the-as collide-shape s2-1) root-prim)) - ) + (v1-38 (-> (the-as collide-shape s2-1) root-prim))) (when (logtest? s4-0 (-> v1-38 prim-core collide-as)) (when (and (logtest? (-> v1-38 prim-core action) (collide-action rider-target)) - (!= (-> this process) (-> (the-as collide-shape s2-1) process)) - ) + (!= (-> this process) (-> (the-as collide-shape s2-1) process))) (let ((s1-2 (new 'stack-no-clear 'collide-overlap-result))) (when (on-platform this (the-as collide-shape s2-1) s1-2) - (let ((s4-2 (add-rider! s5-0 (the-as process-drawable (process->handle (-> (the-as collide-shape s2-1) process))))) - ) + (let ((s4-2 (add-rider! s5-0 (the-as process-drawable (process->handle (-> (the-as collide-shape s2-1) process)))))) (when s4-2 (let ((a0-30 (-> s1-2 best-from-prim))) (set! (-> s4-2 sticky-prim) a0-30) @@ -263,42 +157,25 @@ (set! (-> s4-2 prim-ry) (matrix-y-angle s1-3)) (let ((s0-1 (new 'stack-no-clear 'matrix))) (matrix-4x4-inverse! s0-1 s1-3) - (vector-matrix*! (-> s4-2 rider-local-pos) (-> (the-as collide-shape s2-1) trans) s0-1) - ) - ) - ) - (send-event (-> this process) 'ridden s4-2) - ) - ) - (set! s4-0 (-> this root-prim collide-with)) - ) - ) - ) - ) - ) + (vector-matrix*! (-> s4-2 rider-local-pos) (-> (the-as collide-shape s2-1) trans) s0-1)))) + (send-event (-> this process) 'ridden s4-2))) + (set! s4-0 (-> this root-prim collide-with))))))) (set! v1-37 s3-1) *collide-hit-by-player-list* - (set! s3-1 (-> s3-1 next0)) - ) - ) - ) - ) + (set! s3-1 (-> s3-1 next0)))))) (when (logtest? s4-0 (collide-kind cak-2)) (let ((v1-66 (-> *collide-usually-hit-by-player-list* alive-list next0))) *collide-usually-hit-by-player-list* (let ((s3-2 (-> v1-66 next0))) (while (!= v1-66 (-> *collide-usually-hit-by-player-list* alive-list-end)) (let* ((s2-2 (-> (the-as connection v1-66) param1)) - (v1-67 (-> (the-as collide-shape s2-2) root-prim)) - ) + (v1-67 (-> (the-as collide-shape s2-2) root-prim))) (when (logtest? s4-0 (-> v1-67 prim-core collide-as)) (when (and (logtest? (-> v1-67 prim-core action) (collide-action rider-target)) - (!= (-> this process) (-> (the-as collide-shape s2-2) process)) - ) + (!= (-> this process) (-> (the-as collide-shape s2-2) process))) (let ((s1-4 (new 'stack-no-clear 'collide-overlap-result))) (when (on-platform this (the-as collide-shape s2-2) s1-4) - (let ((s4-3 (add-rider! s5-0 (the-as process-drawable (process->handle (-> (the-as collide-shape s2-2) process))))) - ) + (let ((s4-3 (add-rider! s5-0 (the-as process-drawable (process->handle (-> (the-as collide-shape s2-2) process)))))) (when s4-3 (let ((a0-49 (-> s1-4 best-from-prim))) (set! (-> s4-3 sticky-prim) a0-49) @@ -306,42 +183,25 @@ (set! (-> s4-3 prim-ry) (matrix-y-angle s1-5)) (let ((s0-2 (new 'stack-no-clear 'matrix))) (matrix-4x4-inverse! s0-2 s1-5) - (vector-matrix*! (-> s4-3 rider-local-pos) (-> (the-as collide-shape s2-2) trans) s0-2) - ) - ) - ) - (send-event (-> this process) 'ridden s4-3) - ) - ) - (set! s4-0 (-> this root-prim collide-with)) - ) - ) - ) - ) - ) + (vector-matrix*! (-> s4-3 rider-local-pos) (-> (the-as collide-shape s2-2) trans) s0-2)))) + (send-event (-> this process) 'ridden s4-3))) + (set! s4-0 (-> this root-prim collide-with))))))) (set! v1-66 s3-2) *collide-usually-hit-by-player-list* - (set! s3-2 (-> s3-2 next0)) - ) - ) - ) - ) + (set! s3-2 (-> s3-2 next0)))))) (when (logtest? s4-0 (collide-kind cak-3)) (let ((v1-94 (-> *collide-hit-by-others-list* alive-list next0))) *collide-hit-by-others-list* (let ((s3-3 (-> v1-94 next0))) (while (!= v1-94 (-> *collide-hit-by-others-list* alive-list-end)) (let* ((s2-3 (-> (the-as connection v1-94) param1)) - (v1-95 (-> (the-as collide-shape s2-3) root-prim)) - ) + (v1-95 (-> (the-as collide-shape s2-3) root-prim))) (when (logtest? s4-0 (-> v1-95 prim-core collide-as)) (when (and (logtest? (-> v1-95 prim-core action) (collide-action rider-target)) - (!= (-> this process) (-> (the-as collide-shape s2-3) process)) - ) + (!= (-> this process) (-> (the-as collide-shape s2-3) process))) (let ((s1-6 (new 'stack-no-clear 'collide-overlap-result))) (when (on-platform this (the-as collide-shape s2-3) s1-6) - (let ((s4-4 (add-rider! s5-0 (the-as process-drawable (process->handle (-> (the-as collide-shape s2-3) process))))) - ) + (let ((s4-4 (add-rider! s5-0 (the-as process-drawable (process->handle (-> (the-as collide-shape s2-3) process)))))) (when s4-4 (let ((a0-68 (-> s1-6 best-from-prim))) (set! (-> s4-4 sticky-prim) a0-68) @@ -349,32 +209,13 @@ (set! (-> s4-4 prim-ry) (matrix-y-angle s1-7)) (let ((s0-3 (new 'stack-no-clear 'matrix))) (matrix-4x4-inverse! s0-3 s1-7) - (vector-matrix*! (-> s4-4 rider-local-pos) (-> (the-as collide-shape s2-3) trans) s0-3) - ) - ) - ) - (send-event (-> this process) 'ridden s4-4) - ) - ) - (set! s4-0 (-> this root-prim collide-with)) - ) - ) - ) - ) - ) + (vector-matrix*! (-> s4-4 rider-local-pos) (-> (the-as collide-shape s2-3) trans) s0-3)))) + (send-event (-> this process) 'ridden s4-4))) + (set! s4-0 (-> this root-prim collide-with))))))) (set! v1-94 s3-3) *collide-hit-by-others-list* - (set! s3-3 (-> s3-3 next0)) - ) - ) - ) - #f - ) - ) - ) - ) - ) - ) + (set! s3-3 (-> s3-3 next0))))) + #f)))))) (defmethod pull-riders! ((this collide-shape)) "Move our riders." @@ -383,46 +224,30 @@ (let ((s4-0 (new 'stack-no-clear 'pull-rider-info))) (countdown (s3-0 (-> s5-0 num-riders)) (let* ((v1-2 (-> s5-0 rider s3-0)) - (a0-1 (-> v1-2 rider-handle)) - ) + (a0-1 (-> v1-2 rider-handle))) (when (handle->process a0-1) (set! (-> s4-0 rider) v1-2) - (set! (-> s4-0 rider-cshape) - (the-as collide-shape-moving (-> (the-as process-drawable (-> a0-1 process 0)) root)) - ) + (set! (-> s4-0 rider-cshape) (the-as collide-shape-moving (-> (the-as process-drawable (-> a0-1 process 0)) root))) (let ((a0-5 (-> v1-2 sticky-prim))) (when a0-5 (let ((s2-0 (-> this process node-list data (-> a0-5 transform-index) bone transform))) (let ((s1-0 (-> s4-0 rider-dest))) (vector-matrix*! s1-0 (-> v1-2 rider-local-pos) s2-0) - (vector-float*! s1-0 s1-0 (/ 1.0 (-> s1-0 w))) - ) - (set! (-> s4-0 rider-delta-ry) (deg- (matrix-y-angle s2-0) (-> s4-0 rider prim-ry))) - ) - (pull-rider! this s4-0) - ) - ) - ) - ) - ) - ) - #f - ) - ) - ) + (vector-float*! s1-0 s1-0 (/ 1.0 (-> s1-0 w)))) + (set! (-> s4-0 rider-delta-ry) (deg- (matrix-y-angle s2-0) (-> s4-0 rider prim-ry)))) + (pull-rider! this s4-0))))))) + #f))) (defmethod pull-rider! ((this collide-shape) (arg0 pull-rider-info)) "Move a rider." (local-vars (at-0 int) (sv-160 (function collide-shape-moving float collide-kind none))) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((gp-0 (-> arg0 rider-cshape))) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (set! (-> s4-0 quad) (-> gp-0 trans quad)) (vector-! s3-0 (-> arg0 rider-dest) s4-0) (cond @@ -432,64 +257,33 @@ (let ((s0-0 gp-0)) (set! sv-160 (method-of-object s0-0 fill-cache-for-shape!)) (let ((a1-3 (+ 8192.0 (vector-length s3-0))) - (a2-0 (-> gp-0 root-prim collide-with)) - ) - (sv-160 s0-0 a1-3 a2-0) - ) - ) - (set! (-> this root-prim prim-core collide-as) s1-0) - ) + (a2-0 (-> gp-0 root-prim collide-with))) + (sv-160 s0-0 a1-3 a2-0))) + (set! (-> this root-prim prim-core collide-as) s1-0)) (let ((s2-1 (new 'stack-no-clear 'vector))) (set! (-> s2-1 quad) (-> s3-0 quad)) (let ((v1-12 s2-1)) (.lvf vf1 (&-> s2-1 quad)) - (let ((f0-2 (-> *display* frames-per-second))) - (.mov at-0 f0-2) - ) + (let ((f0-2 (-> *display* frames-per-second))) (.mov at-0 f0-2)) (.mov vf2 at-0) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-12 quad) vf1) - ) + (.svf (&-> v1-12 quad) vf1)) (cond ((type-type? (-> gp-0 type) collide-shape-moving) - (let ((s3-1 (-> gp-0 status))) - (integrate-and-collide! gp-0 s2-1) - (set! (-> gp-0 status) s3-1) - ) - ) - (else - (integrate-and-collide! gp-0 s2-1) - ) - ) - ) - ) - (else - (move-by-vector! gp-0 s3-0) - ) - ) + (let ((s3-1 (-> gp-0 status))) (integrate-and-collide! gp-0 s2-1) (set! (-> gp-0 status) s3-1))) + (else (integrate-and-collide! gp-0 s2-1))))) + (else (move-by-vector! gp-0 s3-0))) (when (type-type? (-> gp-0 type) collide-shape-moving) (let ((v1-18 (new 'stack-no-clear 'vector))) (vector-! v1-18 (-> gp-0 trans) s4-0) - (vector-float*! (-> gp-0 rider-last-move) v1-18 (-> *display* frames-per-second)) - ) - (set-time! (-> gp-0 rider-time)) - ) - ) - (let ((f0-4 (-> arg0 rider-delta-ry))) - (if (!= f0-4 0.0) - (send-event (-> gp-0 process) 'rotate-y-angle f0-4) - ) - ) - ) - (none) - ) - ) + (vector-float*! (-> gp-0 rider-last-move) v1-18 (-> *display* frames-per-second))) + (set-time! (-> gp-0 rider-time)))) + (let ((f0-4 (-> arg0 rider-delta-ry))) (if (!= f0-4 0.0) (send-event (-> gp-0 process) 'rotate-y-angle f0-4)))) + (none))) (defmethod alloc-riders ((this collide-shape) (arg0 int)) (if (-> this riders) - (format 0 "ERROR: colide-shape::alloc-riders is being called multiple times!~%") - (set! (-> this riders) (new 'process 'collide-sticky-rider-group arg0)) - ) - (none) - ) + (format 0 "ERROR: colide-shape::alloc-riders is being called multiple times!~%") + (set! (-> this riders) (new 'process 'collide-sticky-rider-group arg0))) + (none)) diff --git a/goal_src/jak1/engine/collide/collide-shape.gc b/goal_src/jak1/engine/collide/collide-shape.gc index c522dafbf4..636f776daa 100644 --- a/goal_src/jak1/engine/collide/collide-shape.gc +++ b/goal_src/jak1/engine/collide/collide-shape.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/camera-h.gc") (require "engine/geometry/cylinder.gc") (require "engine/collide/collide-target-h.gc") @@ -13,10 +12,6 @@ (require "engine/gfx/background/subdivide-h.gc") (require "engine/collide/collide-touch.gc") -;; name: collide-shape.gc -;; name in dgo: collide-shape -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; The collide shape system is used to handle collision reactions. @@ -32,14 +27,12 @@ ;; the collision isn't symmetric [collide(a, b) != collide(b, a)] because the with/as flags. ;; so there's some weirdness to get all the method dispatch stuff to work around (you can only dispatch on one type) - -(defmethod should-push-away collide-shape ((obj collide-shape) (arg0 collide-shape) (arg1 collide-overlap-result)) +(defmethod should-push-away ((obj collide-shape) (arg0 collide-shape) (arg1 collide-overlap-result)) "Find the overlap between two collide shapes. This is the main entry point for the overlap algorithm. The result is returned in arg1. The obj is collided _with_ arg0 (meaning obj uses its collide-with, arg0 uses colide-as). The best-dist is only valid if the result is #t (it should be negative then)" - - ;; this method begins the recursive traversal through the tree of collide-shape-prims, starting with the - ;; root of each shape. + ;; this method begins the recursive traversal through the tree of collide-shape-prims, starting with the + ;; root of each shape. (local-vars (v1-3 collide-action) (v1-4 float) (a2-2 collide-action) (a3-2 collide-action)) (rlet ((acc :class vf) (vf0 :class vf) @@ -47,40 +40,29 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) - ;; reset the overlap result - (let ((v1-0 arg1)) - (set! (-> v1-0 best-dist) 0.0) - (set! (-> v1-0 best-from-prim) #f) - (set! (-> v1-0 best-to-prim) #f) - ) + (let ((v1-0 arg1)) (set! (-> v1-0 best-dist) 0.0) (set! (-> v1-0 best-from-prim) #f) (set! (-> v1-0 best-to-prim) #f)) ;; grab the roots (let ((a0-1 (-> obj root-prim)) - (a1-1 (-> arg0 root-prim)) - ) - (let ((a3-0 (-> a0-1 collide-with)) ;; this object's collide with + (a1-1 (-> arg0 root-prim))) + (let ((a3-0 (-> a0-1 collide-with)) ;; this object's collide with (t0-0 (-> a1-1 prim-core collide-as)) ;; the incoming object's as - (v1-2 (-> a0-1 prim-core action)) ;; our action + (v1-2 (-> a0-1 prim-core action)) ;; our action ) - (let ((a2-1 (-> a1-1 prim-core action))) ;; their action + (let ((a2-1 (-> a1-1 prim-core action))) ;; their action ;; reject if (logand with as) fails (b! (zero? (logand a3-0 t0-0)) cfg-8 :delay (set! a3-2 (logand a2-1 1))) ;; reject if non-solid - (b! (zero? a3-2) cfg-8 :delay (set! a2-2 (logand a2-1 8))) - ) + (b! (zero? a3-2) cfg-8 :delay (set! a2-2 (logand a2-1 8)))) ;; reject if edgegrab-active on us fails (not sure what this means yet) - (b! (nonzero? a2-2) cfg-8 :delay (set! v1-3 (logand v1-2 1))) - ) + (b! (nonzero? a2-2) cfg-8 :delay (set! v1-3 (logand v1-2 1)))) ;; reject if non-solid (b! (zero? v1-3) cfg-8 :delay (nop!)) - ;; if we're here, our collision types allow us to collide (.lvf vf1 (&-> a0-1 prim-core world-sphere quad)) (.lvf vf2 (&-> a1-1 prim-core world-sphere quad)) - ;; see if bsphere's overlap (.sub.vf vf3 vf1 vf2) (.add.w.vf vf4 vf1 vf2 :mask #b1000) @@ -95,33 +77,21 @@ (.mov v1-4 vf5) (b! (<= f0-1 v1-4) cfg-8) ;; they don't, fail! ) - ;; our bsphere's overlap. We need a more detailed test to know for sure ;; this will dispatch a more specific method for a0-1. - (should-push-away-test a0-1 a1-1 arg1) - ) - + (should-push-away-test a0-1 a1-1 arg1)) ;; return the result of the more detailed test. - (let ((v0-1 (< (-> arg1 best-dist) 0.0))) - (b! #t cfg-9 :delay (nop!)) - (label cfg-8) - (set! v0-1 #f) - (label cfg-9) - v0-1 - ) - ) - ) + (let ((v0-1 (< (-> arg1 best-dist) 0.0))) (b! #t cfg-9 :delay (nop!)) (label cfg-8) (set! v0-1 #f) (label cfg-9) v0-1))) ;; the should-push-away-test will update the collide-overlap-result. The best-dist will be negative if they overlap. ;; it works on collide prims. -(defmethod should-push-away-test collide-shape-prim ((obj collide-shape-prim) (arg0 collide-shape-prim) (arg1 collide-overlap-result)) +(defmethod should-push-away-test ((obj collide-shape-prim) (arg0 collide-shape-prim) (arg1 collide-overlap-result)) "Should be impossible to call - collide-shape-prim is abstract." (format 0 "ERROR: collide-shape-prim::should-push-away-test was called illegally!~%") - (none) - ) + (none)) -(defmethod should-push-away-test collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-shape-prim) (arg1 collide-overlap-result)) +(defmethod should-push-away-test ((obj collide-shape-prim-group) (arg0 collide-shape-prim) (arg1 collide-overlap-result)) "Update test for a group against an unknown prim. The grouip prims use their collide with " (local-vars (a1-3 float)) @@ -130,13 +100,11 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (nop!) (let ((s4-0 (-> obj prims)) - (s3-0 (-> obj num-prims-u)) - ) + (s3-0 (-> obj num-prims-u))) (nop!) ;; very similar to compute-overlap. ;; check collide-as/collide-with and solid @@ -152,13 +120,10 @@ (nop!) (let* ((a1-1 (-> a0-1 prim-core action)) (a2-2 (logand a2-1 v1-0)) - (a1-2 (logand a1-1 (collide-action solid))) - ) + (a1-2 (logand a1-1 (collide-action solid)))) ;; on reject, just move to the next thing in the group. (b! (zero? a2-2) cfg-1 :delay (.lvf vf2 (&-> a0-1 prim-core world-sphere quad))) - (b! (zero? a1-2) cfg-1 :delay (nop!)) - ) - ) + (b! (zero? a1-2) cfg-1 :delay (nop!)))) ;; check bspheres (.sub.vf vf3 vf2 vf1) (.add.w.vf vf4 vf2 vf1 :mask #b1000) @@ -168,25 +133,16 @@ (.add.mul.y.vf acc vf0 vf3 acc :mask #b1000) (.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000) (.sub.w.vf vf3 vf3 vf4 :mask #b1000) - (let ((f0-0 0.0)) - (.add.w.vf vf3 vf0 vf3 :mask #b1) - (.mov a1-3 vf3) - (b! (<= f0-0 a1-3) cfg-1) - ) + (let ((f0-0 0.0)) (.add.w.vf vf3 vf0 vf3 :mask #b1) (.mov a1-3 vf3) (b! (<= f0-0 a1-3) cfg-1)) ;; bspheres overlap, more accurate test is required. - (should-push-away-test a0-1 arg0 arg1) - ) - (set! v1-0 (-> arg0 prim-core collide-as)) - ) - ) + (should-push-away-test a0-1 arg0 arg1)) + (set! v1-0 (-> arg0 prim-core collide-as)))) (b! #t cfg-1 :delay (.lvf vf1 (&-> arg0 prim-core world-sphere quad))) (label cfg-6) 0 - (none) - ) - ) + (none))) -(defmethod should-push-away-reverse-test collide-shape-prim ((obj collide-shape-prim) (arg0 collide-shape-prim-group) (arg1 collide-overlap-result)) +(defmethod should-push-away-reverse-test ((obj collide-shape-prim) (arg0 collide-shape-prim-group) (arg1 collide-overlap-result)) "This is a flipped version of should-push-away-test. the group uses their collide-as" (local-vars (a0-3 float)) @@ -195,13 +151,11 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (nop!) (let ((s4-0 (-> arg0 prims)) - (s3-0 (-> arg0 num-prims-u)) - ) + (s3-0 (-> arg0 num-prims-u))) (nop!) (let ((v1-0 (-> obj collide-with))) (nop!) @@ -215,12 +169,9 @@ (nop!) (let* ((a0-1 (-> a1-1 prim-core action)) (a2-2 (logand v1-0 a2-1)) - (a0-2 (logand a0-1 (collide-action solid))) - ) + (a0-2 (logand a0-1 (collide-action solid)))) (b! (zero? a2-2) cfg-1 :delay (.lvf vf1 (&-> a1-1 prim-core world-sphere quad))) - (b! (zero? a0-2) cfg-1 :delay (nop!)) - ) - ) + (b! (zero? a0-2) cfg-1 :delay (nop!)))) (.sub.vf vf3 vf2 vf1) (.add.w.vf vf4 vf2 vf1 :mask #b1000) (.mul.vf vf3 vf3 vf3 :mask #b111) @@ -229,26 +180,16 @@ (.add.mul.y.vf acc vf0 vf3 acc :mask #b1000) (.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000) (.sub.w.vf vf3 vf3 vf4 :mask #b1000) - (let ((f0-0 0.0)) - (.add.w.vf vf3 vf0 vf3 :mask #b1) - (.mov a0-3 vf3) - (b! (<= f0-0 a0-3) cfg-1) - ) - (should-push-away-test obj a1-1 arg1) - ) - (set! v1-0 (-> obj collide-with)) - ) - ) + (let ((f0-0 0.0)) (.add.w.vf vf3 vf0 vf3 :mask #b1) (.mov a0-3 vf3) (b! (<= f0-0 a0-3) cfg-1)) + (should-push-away-test obj a1-1 arg1)) + (set! v1-0 (-> obj collide-with)))) (b! #t cfg-1 :delay (.lvf vf2 (&-> obj prim-core world-sphere quad))) (label cfg-6) 0 - (none) - ) - ) + (none))) -(defmethod should-push-away-test collide-shape-prim-mesh ((obj collide-shape-prim-mesh) (arg0 collide-shape-prim) (arg1 collide-overlap-result)) +(defmethod should-push-away-test ((obj collide-shape-prim-mesh) (arg0 collide-shape-prim) (arg1 collide-overlap-result)) "Collide a prim with a mesh. The prim must be a sphere or group of spheres" - ;; first, check the prim type (let ((v1-0 (-> arg0 prim-core prim-type))) (b! (nonzero? v1-0) cfg-2 :delay (nop!)) @@ -257,36 +198,28 @@ (b! #t cfg-13 :delay (nop!)) (label cfg-2) ;; mesh to mesh. abort! - (b! (> v1-0 0) cfg-12 :delay (nop!)) - ) + (b! (> v1-0 0) cfg-12 :delay (nop!))) (let ((s3-0 (-> obj mesh))) ;; if we don't have a mesh, then abort. (b! (not s3-0) cfg-11 :delay (nop!)) ;; empty-form - ;; we must put the mesh in the cache before we can collide. ;; NOTE: this is not the full collide-cache, but instead a smaller, simpler collide-mesh-cche. (let ((s2-0 *collide-mesh-cache*)) (let ((v1-4 (-> s2-0 id))) ;; if we already got it, don't bother populating the cache again. - (b! (= (-> obj mesh-cache-id) v1-4) cfg-9 :delay (nop!)) - ) + (b! (= (-> obj mesh-cache-id) v1-4) cfg-9 :delay (nop!))) ;; "allocate" triangles. (let ((v1-8 (allocate! s2-0 (* 96 (-> s3-0 num-tris))))) (b! (not v1-8) cfg-7 :delay (nop!)) ;; remember that we got these triangles - (set! (-> obj mesh-cache-tris) (the-as (inline-array collide-mesh-cache-tri) v1-8)) - ) + (set! (-> obj mesh-cache-tris) (the-as (inline-array collide-mesh-cache-tri) v1-8))) ;; and remember the cache has this - (set! (-> obj mesh-cache-id) (-> s2-0 id)) - ) - + (set! (-> obj mesh-cache-id) (-> s2-0 id))) ;; load this mesh into the cache. ;; strangely, they transform the entire mesh. - (populate-cache! - s3-0 - (the-as collide-mesh-cache-tri (-> obj mesh-cache-tris)) - (-> obj cshape process node-list data (-> obj transform-index) bone transform) - ) + (populate-cache! s3-0 + (the-as collide-mesh-cache-tri (-> obj mesh-cache-tris)) + (-> obj cshape process node-list data (-> obj transform-index) bone transform)) (b! #t cfg-9 :delay (nop!)) (label cfg-7) ;; cache failure abort (b! #t cfg-14 :delay (nop!)) @@ -294,20 +227,15 @@ (label cfg-9) ;; now, use the cache! (let ((s2-1 (new 'stack-no-clear 'collide-tri-result))) - (let ((f0-1 (should-push-away-test - s3-0 - (the-as collide-mesh-cache-tri (-> obj mesh-cache-tris)) - s2-1 - (the-as vector (-> arg0 prim-core)) - (-> arg1 best-dist) - ) - ) - ) + (let ((f0-1 (should-push-away-test s3-0 + (the-as collide-mesh-cache-tri (-> obj mesh-cache-tris)) + s2-1 + (the-as vector (-> arg0 prim-core)) + (-> arg1 best-dist)))) ;; did we find something closer? (b! (>= f0-1 (-> arg1 best-dist)) cfg-11 :delay #f) ;; we did! - (set! (-> arg1 best-dist) f0-1) - ) + (set! (-> arg1 best-dist) f0-1)) ;; remeber this triangle! (set! (-> arg1 best-from-prim) obj) (set! (-> arg1 best-to-prim) arg0) @@ -316,9 +244,7 @@ (set! (-> arg1 best-from-tri vertex 2 quad) (-> s2-1 vertex 2 quad)) (set! (-> arg1 best-from-tri intersect quad) (-> s2-1 intersect quad)) (set! (-> arg1 best-from-tri normal quad) (-> s2-1 normal quad)) - (set! (-> arg1 best-from-tri pat) (-> s2-1 pat)) - ) - ) + (set! (-> arg1 best-from-tri pat) (-> s2-1 pat)))) (label cfg-11) (b! #t cfg-13 :delay (nop!)) (label cfg-12) @@ -326,10 +252,9 @@ (label cfg-13) 0 (label cfg-14) - (none) - ) + (none)) -(defmethod should-push-away-test collide-shape-prim-sphere ((obj collide-shape-prim-sphere) (arg0 collide-shape-prim) (arg1 collide-overlap-result)) +(defmethod should-push-away-test ((obj collide-shape-prim-sphere) (arg0 collide-shape-prim) (arg1 collide-overlap-result)) "The push away where we manually dispatch on the type of the second." (local-vars (v1-3 float)) (rlet ((acc :class vf) @@ -340,8 +265,7 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (let ((v1-0 (-> arg0 prim-core prim-type))) (b! (nonzero? v1-0) cfg-2 :delay (nop!)) @@ -349,8 +273,7 @@ (should-push-away-reverse-test obj (the-as collide-shape-prim-group arg0) arg1) (b! #t cfg-13 :delay (nop!)) (label cfg-2) - (b! (> v1-0 0) cfg-5 :delay (nop!)) - ) + (b! (> v1-0 0) cfg-5 :delay (nop!))) ;; if we're here, it's sphere->sphere. (.lvf vf1 (&-> obj prim-core world-sphere quad)) (.lvf vf2 (&-> arg0 prim-core world-sphere quad)) @@ -377,64 +300,39 @@ (set! (-> arg1 best-from-prim) obj) (set! (-> arg1 best-to-prim) arg0) (.svf (&-> arg1 best-from-tri normal quad) vf3) - (set! (-> arg1 best-from-tri pat) v1-4) - ) - ) - ) - + (set! (-> arg1 best-from-tri pat) v1-4)))) ;; make up a triangle. (let ((s4-1 (-> arg1 best-from-tri normal)) - (s3-0 (-> arg1 best-from-tri intersect)) - ) + (s3-0 (-> arg1 best-from-tri intersect))) (vector-float*! s3-0 s4-1 (-> obj prim-core world-sphere w)) (vector+! s3-0 s3-0 (the-as vector (-> obj prim-core))) (set! (-> arg1 best-from-tri vertex 0 quad) (-> s3-0 quad)) (point-in-plane-<-point+normal! (-> arg1 best-from-tri vertex 1) s3-0 s4-1) - (let* ((v1-10 (vector-normalize! - (vector-! - (new 'stack-no-clear 'vector) - (-> arg1 best-from-tri vertex 1) - (the-as vector (-> arg1 best-from-tri)) - ) - 1.0 - ) - ) - (a2-4 (vector-cross! (new 'stack-no-clear 'vector) s4-1 v1-10)) - ) - (vector+*! (-> arg1 best-from-tri vertex 2) s3-0 a2-4 4096.0) - ) - ) + (let* ((v1-10 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-from-tri vertex 1) (the-as vector (-> arg1 best-from-tri))) + 1.0)) + (a2-4 (vector-cross! (new 'stack-no-clear 'vector) s4-1 v1-10))) + (vector+*! (-> arg1 best-from-tri vertex 2) s3-0 a2-4 4096.0))) (b! #t cfg-13 :delay (nop!)) - ;; Mesh. this is the same as the above function. start with populating the cache. (label cfg-5) (let ((s3-1 (-> (the-as collide-shape-prim-mesh arg0) mesh))) (b! (not s3-1) cfg-13) (let ((s2-0 *collide-mesh-cache*)) - (let ((v1-13 (-> s2-0 id))) - (b! (= (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-id) v1-13) cfg-11) - ) + (let ((v1-13 (-> s2-0 id))) (b! (= (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-id) v1-13) cfg-11)) (let ((v1-17 (allocate! s2-0 (* 96 (-> s3-1 num-tris))))) (b! (not v1-17) cfg-9 :delay (nop!)) - (set! (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-tris) - (the-as (inline-array collide-mesh-cache-tri) v1-17) - ) - ) - (set! (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-id) (-> s2-0 id)) - ) - (populate-cache! - s3-1 - (the-as collide-mesh-cache-tri (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-tris)) - (-> (the-as collide-shape-prim-mesh arg0) - cshape - process - node-list - data - (-> (the-as collide-shape-prim-mesh arg0) transform-index) - bone - transform - ) - ) + (set! (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-tris) (the-as (inline-array collide-mesh-cache-tri) v1-17))) + (set! (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-id) (-> s2-0 id))) + (populate-cache! s3-1 + (the-as collide-mesh-cache-tri (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-tris)) + (-> (the-as collide-shape-prim-mesh arg0) + cshape + process + node-list + data + (-> (the-as collide-shape-prim-mesh arg0) transform-index) + bone + transform)) (b! #t cfg-11 :delay (nop!)) (label cfg-9) (b! #t cfg-14 :delay (nop!)) @@ -442,18 +340,13 @@ (label cfg-11) ;; do the collision (let ((s2-1 (new 'stack-no-clear 'collide-tri-result))) - (let ((f0-2 (should-push-away-test - s3-1 - (the-as collide-mesh-cache-tri (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-tris)) - s2-1 - (the-as vector (-> obj prim-core)) - (-> arg1 best-dist) - ) - ) - ) + (let ((f0-2 (should-push-away-test s3-1 + (the-as collide-mesh-cache-tri (-> (the-as collide-shape-prim-mesh arg0) mesh-cache-tris)) + s2-1 + (the-as vector (-> obj prim-core)) + (-> arg1 best-dist)))) (b! (>= f0-2 (-> arg1 best-dist)) cfg-13 :delay #f) - (set! (-> arg1 best-dist) f0-2) - ) + (set! (-> arg1 best-dist) f0-2)) ;; but this time, we need a tri from the sphere. So make one up again. (set! (-> arg1 best-from-prim) obj) (set! (-> arg1 best-to-prim) arg0) @@ -465,31 +358,15 @@ (vector+! s3-2 s3-2 (the-as vector (-> obj prim-core))) (set! (-> arg1 best-from-tri vertex 0 quad) (-> s3-2 quad)) (point-in-plane-<-point+normal! (-> arg1 best-from-tri vertex 1) s3-2 s4-2) - (let* ((v1-37 (vector-normalize! - (vector-! - (new 'stack-no-clear 'vector) - (-> arg1 best-from-tri vertex 1) - (the-as vector (-> arg1 best-from-tri)) - ) - 1.0 - ) - ) - (a2-11 (vector-cross! (new 'stack-no-clear 'vector) s4-2 v1-37)) - ) - (vector+*! (-> arg1 best-from-tri vertex 2) s3-2 a2-11 4096.0) - ) - ) - ) - ) - ) + (let* ((v1-37 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-from-tri vertex 1) (the-as vector (-> arg1 best-from-tri))) + 1.0)) + (a2-11 (vector-cross! (new 'stack-no-clear 'vector) s4-2 v1-37))) + (vector+*! (-> arg1 best-from-tri vertex 2) s3-2 a2-11 4096.0)))))) (set! (-> arg1 best-from-tri pat) (-> obj pat)) (label cfg-13) 0 (label cfg-14) - (none) - ) - ) - + (none))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Moving Collision Resolutions @@ -501,34 +378,22 @@ ;; these use the "offense". The offense of the thing in the cache must be higher. If the cache has 0, we reject always. ;; these use the "solid" bit of action. This must be set on both. -(defmethod collide-with-collide-cache-prim-mesh collide-shape-prim ((obj collide-shape-prim) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) +(defmethod collide-with-collide-cache-prim-mesh ((obj collide-shape-prim) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) "abstract base class version." (format 0 "ERROR: Unsupported prim type in collide-shape-prim::collide-with-collide-cache-prim-mesh!~%") - (none) - ) - + (none)) -(defmethod collide-with-collide-cache-prim-mesh collide-shape-prim-sphere ((obj collide-shape-prim-sphere) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) +(defmethod collide-with-collide-cache-prim-mesh ((obj collide-shape-prim-sphere) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) "Collide this sphere with the mesh in the real collide cache." (local-vars (v1-4 collide-offense)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (let* ((s5-0 (new 'stack-no-clear 'collide-tri-result)) ;; try to move the sphere by best-u. - (f0-1 (resolve-moving-sphere-tri - arg1 - s5-0 - (-> obj prim-core) - (-> arg0 move-vec) - (-> arg0 best-u) - (-> obj prim-core action) - ) - ) - ) + (f0-1 (resolve-moving-sphere-tri arg1 s5-0 (-> obj prim-core) (-> arg0 move-vec) (-> arg0 best-u) (-> obj prim-core action)))) ;; did we hit something? (when (>= f0-1 0.0) ;; yup. @@ -538,8 +403,7 @@ (a3-1 2) (t0-1 (-> arg1 prim)) (v1-3 0) - (a0-2 (-> arg1 prim-core offense)) - ) + (a0-2 (-> arg1 prim-core offense))) (b! (!= a1-2 a3-1) cfg-3 :likely-delay (set! a2-2 t0-1)) (label cfg-3) (nop!) @@ -550,25 +414,18 @@ (let ((t0-2 (-> arg1 prim-core action))) (b! (= a0-2 v1-3) cfg-7 :delay (set! v1-4 (- a3-2 a0-2))) (let ((a1-4 (logand a1-3 t0-2)) - (a0-3 (-> s5-0 pat)) - ) + (a0-3 (-> s5-0 pat))) (let ((a1-5 (logand a1-4 (collide-action solid)))) (.lvf vf1 (&-> s5-0 intersect quad)) (b! (> (the-as int v1-4) 0) cfg-7 :delay (.lvf vf2 (&-> s5-0 normal quad))) - (b! (zero? a1-5) cfg-7 :delay (.lvf vf3 (&-> s5-0 vertex 0 quad))) - ) + (b! (zero? a1-5) cfg-7 :delay (.lvf vf3 (&-> s5-0 vertex 0 quad)))) (.lvf vf4 (&-> s5-0 vertex 1 quad)) (.lvf vf5 (&-> s5-0 vertex 2 quad)) ;; remember what we hit (set! (-> arg0 best-u) f0-1) (set! (-> arg0 best-to-prim) a2-2) (set! (-> arg0 best-from-prim) obj) - (set! (-> arg0 best-tri pat) a0-3) - ) - ) - ) - ) - ) + (set! (-> arg0 best-tri pat) a0-3)))))) ;; remember the tri (.svf (&-> arg0 best-tri intersect quad) vf1) (.svf (&-> arg0 best-tri normal quad) vf2) @@ -579,76 +436,54 @@ (label cfg-7) (b! (= a2-2 #f) cfg-9 :delay (nop!)) ;; add prim to list. - (add-touching-prims *touching-list* obj a2-2 f0-1 (the-as collide-tri-result #f) s5-0) - ) + (add-touching-prims *touching-list* obj a2-2 f0-1 (the-as collide-tri-result #f) s5-0)) (label cfg-9) - 0 - ) - ) + 0)) 0 - (none) - ) - ) + (none))) -(defmethod collide-with-collide-cache-prim-mesh collide-shape-prim-mesh ((obj collide-shape-prim-mesh) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) +(defmethod collide-with-collide-cache-prim-mesh ((obj collide-shape-prim-mesh) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) (format 0 "ERROR: collide-shape-prim-mesh vs. collide-cache-prim mesh is not currently supported!~%") - (none) - ) + (none)) -(defmethod collide-with-collide-cache-prim-mesh collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) +(defmethod collide-with-collide-cache-prim-mesh ((obj collide-shape-prim-group) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) (let ((s3-0 (-> arg1 prim-core collide-as))) (dotimes (s2-0 (-> obj num-prims)) (let ((a0-1 (-> obj prims s2-0))) - (if (logtest? (-> a0-1 collide-with) s3-0) - (collide-with-collide-cache-prim-mesh a0-1 arg0 arg1) - ) - ) - ) - ) - (none) - ) + (if (logtest? (-> a0-1 collide-with) s3-0) (collide-with-collide-cache-prim-mesh a0-1 arg0 arg1))))) + (none)) -(defmethod collide-with-collide-cache-prim-sphere collide-shape-prim ((obj collide-shape-prim) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) +(defmethod collide-with-collide-cache-prim-sphere ((obj collide-shape-prim) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) (format 0 "ERROR: Unsupported prim type in collide-shape-prim::collide-with-collide-cache-prim-sphere!~%") - (none) - ) + (none)) -(defmethod collide-with-collide-cache-prim-sphere collide-shape-prim-sphere ((obj collide-shape-prim-sphere) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) +(defmethod collide-with-collide-cache-prim-sphere ((obj collide-shape-prim-sphere) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) (local-vars (v1-4 collide-offense) (a3-2 pat-surface)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (let* ((s5-0 (new 'stack-no-clear 'collide-tri-result)) - (f0-1 (resolve-moving-sphere-sphere - arg1 - s5-0 - (-> obj prim-core) - (-> arg0 move-vec) - (-> arg0 best-u) - (-> obj prim-core action) - ) - ) - ) + (f0-1 (resolve-moving-sphere-sphere arg1 + s5-0 + (-> obj prim-core) + (-> arg0 move-vec) + (-> arg0 best-u) + (-> obj prim-core action)))) (when (>= f0-1 0.0) (let ((v1-3 0) - (a1-2 (-> obj prim-core action)) - ) + (a1-2 (-> obj prim-core action))) (nop!) (let ((a2-2 (-> arg1 prim-core action))) (nop!) (let ((a0-2 (-> arg1 prim-core offense)) (a1-3 (logand a1-2 a2-2)) - (a2-3 (-> arg1 prim)) - ) + (a2-3 (-> arg1 prim))) (let ((a3-1 (logand a1-3 (collide-action solid))) - (a1-4 (-> obj prim-core offense)) - ) + (a1-4 (-> obj prim-core offense))) (b! (zero? a3-1) cfg-5 :delay (set! a3-2 (-> s5-0 pat))) - (b! (= a0-2 v1-3) cfg-5 :delay (set! v1-4 (- a1-4 a0-2))) - ) + (b! (= a0-2 v1-3) cfg-5 :delay (set! v1-4 (- a1-4 a0-2)))) (b! (> (the-as int v1-4) 0) cfg-5 :delay (.lvf vf1 (&-> s5-0 intersect quad))) (.lvf vf2 (&-> s5-0 normal quad)) (.lvf vf3 (&-> s5-0 vertex 0 quad)) @@ -664,34 +499,20 @@ (.svf (&-> arg0 best-tri vertex 1 quad) vf4) (.svf (&-> arg0 best-tri vertex 2 quad) vf5) (label cfg-5) - (add-touching-prims *touching-list* obj a2-3 f0-1 (the-as collide-tri-result #f) s5-0) - ) - ) - ) - ) - ) + (add-touching-prims *touching-list* obj a2-3 f0-1 (the-as collide-tri-result #f) s5-0)))))) 0 - (none) - ) - ) + (none))) -(defmethod collide-with-collide-cache-prim-sphere collide-shape-prim-mesh ((obj collide-shape-prim-mesh) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) +(defmethod collide-with-collide-cache-prim-sphere ((obj collide-shape-prim-mesh) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) (format 0 "ERROR: collide-shape-prim-mesh vs. collide-cache-prim sphere is not currently supported!~%") - (none) - ) + (none)) -(defmethod collide-with-collide-cache-prim-sphere collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) +(defmethod collide-with-collide-cache-prim-sphere ((obj collide-shape-prim-group) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) (let ((s3-0 (-> arg1 prim-core collide-as))) (dotimes (s2-0 (-> obj num-prims)) (let ((a0-1 (-> obj prims s2-0))) - (if (logtest? (-> a0-1 collide-with) s3-0) - (collide-with-collide-cache-prim-sphere a0-1 arg0 arg1) - ) - ) - ) - ) - (none) - ) + (if (logtest? (-> a0-1 collide-with) s3-0) (collide-with-collide-cache-prim-sphere a0-1 arg0 arg1))))) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Target Specific Stuff @@ -700,270 +521,178 @@ ;; This implements the default collision reaction function. ;; This is a target-specific reaction. - (defun find-ground-point ((target-ctrl control-info) (ground-result vector) (start-len float) (max-len float)) "Find somewhere safe to land. This is used to find where to bounce back the player if you jump on fire canyon. It's a nice example function for the collision system." (local-vars (direction-idx int) (sv-192 int)) - ;; first, let's find our heading (let ((current-heading (if (< 819.2 (vector-xz-length (-> target-ctrl transv))) ;; if we're moving in the xz plane - (vector-y-angle (-> target-ctrl transv)) ;; use the direction we're moving - (y-angle target-ctrl) ;; otherwise, use the direction we're facing. - ) - ) + (vector-y-angle (-> target-ctrl transv)) ;; use the direction we're moving + (y-angle target-ctrl) ;; otherwise, use the direction we're facing. + )) ;; the current position of jak (current-pos (-> target-ctrl trans)) (probe-dir (new 'stack-no-clear 'vector)) - (result-tri (new 'stack-no-clear 'collide-tri-result)) - ) - + (result-tri (new 'stack-no-clear 'collide-tri-result))) ;; create a bounding box, centered around our current location. (let ((bbox (new 'stack-no-clear 'bounding-box))) (set! (-> ground-result w) 0.0) ;; look at most max-len away from where we are.. (dotimes (v1-1 3) (set! (-> bbox min data v1-1) (- (-> current-pos data v1-1) max-len)) - (set! (-> bbox max data v1-1) (+ (-> current-pos data v1-1) max-len)) - ) + (set! (-> bbox max data v1-1) (+ (-> current-pos data v1-1) max-len))) ;; except for in y (height). Look 10m down, and 5m up. (set! (-> bbox min y) (+ -40960.0 (-> current-pos y))) (set! (-> bbox max y) (+ 20480.0 (-> current-pos y))) - ;; fill the collide cache will all the triangles in bounding box. - (fill-using-bounding-box - *collide-cache* - bbox - (-> target-ctrl root-prim collide-with) - (-> target-ctrl process) - (new 'static 'pat-surface :noentity #x1) - ) - ) - + (fill-using-bounding-box *collide-cache* + bbox + (-> target-ctrl root-prim collide-with) + (-> target-ctrl process) + (new 'static 'pat-surface :noentity #x1))) ;; loop over 8 directions to check. (set! direction-idx 0) (while (< direction-idx 8) ;; this picks starts with the current direction, then a little to the left, then a little to the right, ;; then a little more to the left.... so ideally we go in the direction the player is facing, if that's possible. - (let ((probe-heading (+ current-heading (if (zero? (logand direction-idx 1)) - (* 8192.0 (the float (/ direction-idx 2))) - (* -8192.0 (the float (/ direction-idx 2))) - ) - ) - ) - ) - + (let ((probe-heading (+ current-heading + (if (zero? (logand direction-idx 1)) (* 8192.0 (the float (/ direction-idx 2))) (* -8192.0 (the float (/ direction-idx 2))))))) ;; this will count the number of hits we have in this direction. (set! sv-192 0) - ;; we don't know anything, so assume we can go the maximum length in this direction (let ((max-len-this-dir max-len)) ;; but, if we did max-len bounce in this direction, we might hit some wall mid-bounce. - ;; start with a probe of max len, pointing straight forward. (set-vector! probe-dir 0.0 0.0 max-len 1.0) ;; rotate to point along our heading (vector-rotate-y! probe-dir probe-dir probe-heading) - ;; see how far we can go, 10m above the current target. ;; this is likely checking to see if we'll hit a wall mid-bounce - (if (>= (probe-using-line-sphere - *collide-cache* - (vector+! (new 'stack-no-clear 'vector) current-pos (new 'static 'vector :y 20480.0 :w 1.0)) - probe-dir - 2048.0 - (-> target-ctrl root-prim collide-with) - result-tri - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (set! max-len-this-dir (+ -6144.0 (vector-vector-xz-distance current-pos (-> result-tri intersect)))) - ) - + (if (>= (probe-using-line-sphere *collide-cache* + (vector+! (new 'stack-no-clear 'vector) current-pos (new 'static 'vector :y 20480.0 :w 1.0)) + probe-dir + 2048.0 + (-> target-ctrl root-prim collide-with) + result-tri + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (set! max-len-this-dir (+ -6144.0 (vector-vector-xz-distance current-pos (-> result-tri intersect))))) ;; now, let's search between start-len and max-len-this-dir to see if there's somewhere safe to bounce. (let ((current-len start-len)) (while (>= max-len-this-dir current-len) ;; probe heading (set-vector! probe-dir 0.0 0.0 current-len 1.0) (vector-rotate-y! probe-dir probe-dir probe-heading) - ;; put probe dir at the end of the probe (vector+! probe-dir current-pos probe-dir) ;; start 10m above the curren pos. (set! (-> probe-dir y) (+ 20480.0 (-> current-pos y))) ;; and probe straight down, to find the first ground after a 10m jump. - (when (>= (probe-using-line-sphere - *collide-cache* - probe-dir - (new 'static 'vector :y -251658240.0 :w 1.0) - 10240.0 - (-> target-ctrl root-prim collide-with) - result-tri - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (when (>= (probe-using-line-sphere *collide-cache* + probe-dir + (new 'static 'vector :y -251658240.0 :w 1.0) + 10240.0 + (-> target-ctrl root-prim collide-with) + result-tri + (new 'static 'pat-surface :noentity #x1)) + 0.0) (cond ((and (= (-> result-tri pat mode) (pat-mode ground)) ;; we found ground (= (-> result-tri pat event) (pat-event none)) ;; and it's not more dangerous ground - (< 0.7 (-> result-tri normal y)) ;; and it's pretty flat + (< 0.7 (-> result-tri normal y)) ;; and it's pretty flat ) (set! (-> ground-result quad) (-> result-tri intersect quad)) ;; remember it ;; count this as a success (set! sv-192 (+ sv-192 1)) ;; if we get 2 or more hits, it seems like a good place to land, let's do it! - (if (>= sv-192 2) - (return ground-result) - ) - ) + (if (>= sv-192 2) (return ground-result))) ((and (= (-> result-tri pat mode) (pat-mode wall)) (< (+ 4096.0 (-> current-pos y)) (-> result-tri intersect y))) ;; give up on this direction. There's a wall in the way (missed by the earlier fast wall check) - (goto cfg-35) - ) - ) - ) + (goto cfg-35)))) ;; move 1m out more. - (set! current-len (+ 4096.0 current-len)) - ) - ) - ) - ) + (set! current-len (+ 4096.0 current-len)))))) (label cfg-35) - (set! direction-idx (+ direction-idx 1)) - ) - ) - (the-as vector #f) - ) + (set! direction-idx (+ direction-idx 1)))) + (the-as vector #f)) (defun target-attack-up ((arg0 target) (arg1 symbol) (arg2 symbol)) "Handle an attack up. This launches the player in the air, forcing them back to a safe location." ;; attempt to find a safe ground. (let ((s4-0 (find-ground-point (-> arg0 control) (new 'stack-no-clear 'vector) (meters 2) (meters 10)))) - (set! s4-0 (cond - (s4-0 ;; if we found it, use that - s4-0 - ) - (else - ;; failed to find it. Use the last known safe ground point instaed. - (-> arg0 control last-known-safe-ground) - ) - ) - ) + (set! s4-0 + (cond + (s4-0 ;; if we found it, use that + s4-0) + (else + ;; failed to find it. Use the last known safe ground point instaed. + (-> arg0 control last-known-safe-ground)))) (let* ((s2-1 (vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans))) ;; jump direction - (f30-1 (fmax (meters 2) (fmin (meters 10) (vector-xz-length s2-1)))) ;; distance we should jump (limited) + (f30-1 (fmax (meters 2) (fmin (meters 10) (vector-xz-length s2-1)))) ;; distance we should jump (limited) ) ;; note: the above limit is the same as the limit passed into find-ground-point. So the limiting should only kick in ;; if we use last safe ground. (cond - ((< (fabs (vector-dot - (-> arg0 control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans)) - ) - ) - (meters 10) - ) + ((< (fabs (vector-dot (-> arg0 control dynam gravity-normal) (vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans)))) + (meters 10)) ;; if we reach here, we have to jump up or down less than 10m. ;; reduce our jump direction to within reasonable distance (vector-xz-normalize! s2-1 f30-1) ;; send an attack ;; the shove is proportional to how high we jump (and has a min, so we at least get off the ground) - (send-event - arg0 - arg1 - #f - (static-attack-info - ((mode arg2) - (vector s2-1) - (shove-up - (+ (lerp-scale (meters 1) (meters 4) f30-1 (meters 1) (meters 10)) (fmax 0.0 (- (-> s4-0 y) (-> arg0 control trans y)))) - ) - (angle 'up) - ) - ) - ) - ) + (send-event arg0 + arg1 + #f + (static-attack-info ((mode arg2) + (vector s2-1) + (shove-up (+ (lerp-scale (meters 1) (meters 4) f30-1 (meters 1) (meters 10)) (fmax 0.0 (- (-> s4-0 y) (-> arg0 control trans y))))) + (angle 'up))))) (else - ;; the last safest place we jumped is too high. just launch jak in the air and hope for the best. - ;; fire canyon skip jumps - (send-event arg0 arg1 #f (static-attack-info ((mode arg2) - (vector (new 'static 'vector :y (meters 10) :w 1.0)) - (shove-up (meters 10)) - (angle 'up) - (control 1.0) - ) - ) - ) - ) - ) - ) - ) - (none) - ) - -(defmethod set-and-handle-pat! collide-shape-moving ((obj collide-shape-moving) (arg0 pat-surface)) + ;; the last safest place we jumped is too high. just launch jak in the air and hope for the best. + ;; fire canyon skip jumps + (send-event arg0 + arg1 + #f + (static-attack-info ((mode arg2) (vector (new 'static 'vector :y (meters 10) :w 1.0)) (shove-up (meters 10)) (angle 'up) (control 1.0)))))))) + (none)) + +(defmethod set-and-handle-pat! ((obj collide-shape-moving) (arg0 pat-surface)) "Handle landing on the given pat-surface. This is likely target-specific." ;; set our pat (set! (-> obj cur-pat) arg0) (set! (-> obj poly-pat) arg0) ;; set our surface (case (-> arg0 material) - (((pat-material ice)) - (set! (-> obj surf) *ice-surface*) - ) - (((pat-material quicksand)) - (set! (-> obj surf) *quicksand-surface*) - ) - (((pat-material tube)) - (set! (-> obj surf) *no-walk-surface*) - ) - (((pat-material rotate)) - (set! (-> obj surf) *rotate-surface*) - ) - (else - (set! (-> obj surf) *standard-ground-surface*) - ) - ) - + (((pat-material ice)) (set! (-> obj surf) *ice-surface*)) + (((pat-material quicksand)) (set! (-> obj surf) *quicksand-surface*)) + (((pat-material tube)) (set! (-> obj surf) *no-walk-surface*)) + (((pat-material rotate)) (set! (-> obj surf) *rotate-surface*)) + (else (set! (-> obj surf) *standard-ground-surface*))) ;; racer gets set whenever you get on the zoomer. If we are on the zoomer, just go to "race-track" - (if (logtest? (-> obj root-prim prim-core action) (collide-action racer)) - (set! (-> obj surf) *race-track-surface*) - ) - + (if (logtest? (-> obj root-prim prim-core action) (collide-action racer)) (set! (-> obj surf) *race-track-surface*)) (when (nonzero? (-> arg0 event)) (case (-> arg0 event) (((pat-event deadly)) ;; deadly. Send a deadly event - (send-event (-> obj process) 'attack #f (static-attack-info ((mode 'deadly) (shove-up (meters 3))))) - ) + (send-event (-> obj process) 'attack #f (static-attack-info ((mode 'deadly) (shove-up (meters 3)))))) (((pat-event burn)) ;; burn. Send a burn event - (send-event (-> obj process) 'attack #f (static-attack-info ((mode 'burn) (shove-up (meters 3))))) - ) + (send-event (-> obj process) 'attack #f (static-attack-info ((mode 'burn) (shove-up (meters 3)))))) (((pat-event deadlyup)) ;; deadlyup. Launch! - (target-attack-up (the-as target (-> obj process)) 'attack-or-shove 'deadlyup) - ) + (target-attack-up (the-as target (-> obj process)) 'attack-or-shove 'deadlyup)) (((pat-event burnup)) ;; burnup (like fire canyon lava). ;; only send if we don't have racer (on zoomer) (if (zero? (logand (-> (the-as target (-> obj process)) control root-prim prim-core action) (collide-action racer))) - (target-attack-up (the-as target (-> obj process)) 'attack-or-shove 'burnup) - ) - ) + (target-attack-up (the-as target (-> obj process)) 'attack-or-shove 'burnup))) (((pat-event melt)) ;; just send melt - (send-event (-> obj process) 'attack-invinc #f (static-attack-info ((mode 'melt)))) - ) + (send-event (-> obj process) 'attack-invinc #f (static-attack-info ((mode 'melt))))) (((pat-event endlessfall)) ;; endless pit death plane. - (send-event (-> obj process) 'attack-invinc #f (static-attack-info ((mode 'endlessfall)))) - ) - ) - ) + (send-event (-> obj process) 'attack-invinc #f (static-attack-info ((mode 'endlessfall))))))) 0 - (none) - ) + (none)) (defun default-collision-reaction ((arg0 collide-shape-moving) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) "Move into collision!" @@ -973,39 +702,27 @@ (set! sv-72 (new 'stack-no-clear 'vector)) (set! sv-80 0) (set! (-> sv-72 quad) (-> arg3 quad)) - ;; move along the vector by the best move-vec ;; this will hit the best-tri (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (move-by-vector! arg0 a1-1) - ) - + (move-by-vector! arg0 a1-1)) ;; so handle hitting that tri (set-and-handle-pat! arg0 (-> arg1 best-tri pat)) (vector-! sv-64 (the-as vector (-> arg1 best-from-prim prim-core)) (-> arg1 best-tri intersect)) (set! (-> sv-64 w) 1.0) (vector-normalize! sv-64 1.0) (set! (-> arg0 coverage) (vector-dot sv-64 (-> arg1 best-tri normal))) - (let ((v1-16 (-> sv-64 quad))) - (set! (-> sv-68 quad) v1-16) - ) + (let ((v1-16 (-> sv-64 quad))) (set! (-> sv-68 quad) v1-16)) ;; ? - (if (= (-> arg1 best-u) 0.0) - (move-by-vector! arg0 sv-68) - ) - + (if (= (-> arg1 best-u) 0.0) (move-by-vector! arg0 sv-68)) ;; (set! (-> arg0 surface-normal quad) (-> sv-68 quad)) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) (set! (-> arg0 surface-angle) (vector-dot sv-68 (-> arg0 dynam gravity-normal))) (set! (-> arg0 poly-angle) (vector-dot (-> arg0 poly-normal) (-> arg0 dynam gravity-normal))) - (set! (-> arg0 touch-angle) - (vector-dot sv-68 (vector-normalize! (vector-negate! (new-stack-vector0) sv-72) 1.0)) - ) - (if (< (-> arg0 poly-angle) -0.2) - (set! sv-80 (logior sv-80 16)) - ) + (set! (-> arg0 touch-angle) (vector-dot sv-68 (vector-normalize! (vector-negate! (new-stack-vector0) sv-72) 1.0))) + (if (< (-> arg0 poly-angle) -0.2) (set! sv-80 (logior sv-80 16))) (set! sv-128 (< (fabs (-> arg0 surface-angle)) (-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle))) (when (zero? (logand (-> arg0 prev-status) 1)) ;; hit the ground! @@ -1014,54 +731,34 @@ (let ((f30-0 (- 1.0 (-> arg0 surf impact-fric)))) (when (< f30-0 1.0) (let ((s3-1 (new-stack-vector0)) - (f28-0 (vector-dot (-> arg0 dynam gravity-normal) sv-72)) - ) + (f28-0 (vector-dot (-> arg0 dynam gravity-normal) sv-72))) 0.0 (vector-! s3-1 sv-72 (vector-float*! s3-1 (-> arg0 dynam gravity-normal) f28-0)) (let* ((f0-22 (vector-length s3-1)) - (f1-4 f0-22) - ) - (if (< f28-0 0.0) - (set! f28-0 (* f28-0 f30-0)) - ) - (vector+! - sv-72 - (vector-float*! sv-72 (-> arg0 dynam gravity-normal) f28-0) - (vector-float*! s3-1 s3-1 (/ f0-22 f1-4)) - ) - ) - ) - ) - ) - ) - ) + (f1-4 f0-22)) + (if (< f28-0 0.0) (set! f28-0 (* f28-0 f30-0))) + (vector+! sv-72 (vector-float*! sv-72 (-> arg0 dynam gravity-normal) f28-0) (vector-float*! s3-1 s3-1 (/ f0-22 f1-4))))))))) ;; set t-surf (touching a surface) (set! sv-80 (logior sv-80 4)) (if (-> arg1 best-to-prim) - (set! sv-80 (logior sv-80 32)) ;; t-ceil. not sure why this is the case. - ) + (set! sv-80 (logior sv-80 32)) ;; t-ceil. not sure why this is the case. + ) (cond (sv-128 - (set! sv-80 (logior sv-80 8)) ;; using it as a wall - (set! (-> arg0 cur-pat mode) 1) - ) + (set! sv-80 (logior sv-80 8)) ;; using it as a wall + (set! (-> arg0 cur-pat mode) 1)) (else - (set! sv-80 (logior sv-80 1)) ;; on. - (set! (-> arg0 local-normal quad) (-> sv-68 quad)) - ) - ) + (set! sv-80 (logior sv-80 1)) ;; on. + (set! (-> arg0 local-normal quad) (-> sv-68 quad)))) (vector-reflect-flat! arg2 sv-72 sv-68) (when (and (not sv-128) (>= (-> arg0 coverage) 0.9)) (set! sv-80 (logior sv-80 2)) (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) (when (!= (-> arg0 poly-pat mode) (pat-mode wall)) (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) - (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) - ) - ) + (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)))) (logior! (-> arg0 status) sv-80) - (the-as cshape-moving-flags sv-80) - ) + (the-as cshape-moving-flags sv-80)) (defun simple-collision-reaction ((arg0 collide-shape-moving) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) "A much simpler collide reaction." @@ -1069,43 +766,29 @@ (let ((a1-1 (new 'stack-no-clear 'vector))) ;; move by the amount we should. (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (move-by-vector! arg0 a1-1) - ) + (move-by-vector! arg0 a1-1)) (let ((f0-2 (vector-dot (-> arg0 transv) (-> arg1 best-tri normal))) - (v1-6 (new 'stack-no-clear 'vector)) - ) + (v1-6 (new 'stack-no-clear 'vector))) ;; bounce off (vector-float*! v1-6 (-> arg1 best-tri normal) (* 1.5 f0-2)) - (vector-! (-> arg0 transv) (-> arg0 transv) v1-6) - ) - (let ((v0-1 (logior s5-0 7))) - (logior! (-> arg0 status) v0-1) - (the-as cshape-moving-flags v0-1) - ) - ) - ) + (vector-! (-> arg0 transv) (-> arg0 transv) v1-6)) + (let ((v0-1 (logior s5-0 7))) (logior! (-> arg0 status) v0-1) (the-as cshape-moving-flags v0-1)))) -(defmethod step-collison! collide-shape-moving ((obj collide-shape-moving) (arg0 vector) (arg1 vector) (arg2 float)) +(defmethod step-collison! ((obj collide-shape-moving) (arg0 vector) (arg1 vector) (arg2 float)) "Take 1 step in the collision. Attempt to move at velocity of arg1, for arg2 of a step. The resulting velocity is stored in arg0. The amount of a step actually taken is returned." - (local-vars (sv-192 int)) (let ((s5-0 (new 'stack 'collide-shape-intersect)) - (s2-0 (new 'stack-no-clear 'vector)) - ) - + (s2-0 (new 'stack-no-clear 'vector))) ;; integrate our velocity, get the "move vector" ;; which is what we'd move if we hit nothing. (vector-float*! s2-0 arg1 (* arg2 (-> *display* seconds-per-frame))) - ;; initialize the collision data. (init! s5-0 s2-0) - ;; only if we have something in the collide cache, I guess. (let* ((s1-1 (-> obj root-prim)) (v1-4 *collide-cache*) - (s0-0 (the-as collide-cache-prim (-> v1-4 prims))) - ) + (s0-0 (the-as collide-cache-prim (-> v1-4 prims)))) (set! sv-192 (-> v1-4 num-prims)) ;; collide with everything in the collide cache. (while (nonzero? sv-192) @@ -1113,154 +796,100 @@ (when (logtest? (-> s1-1 collide-with) (-> s0-0 prim-core collide-as)) ;; pick between sphere and mesh. (if (>= (-> s0-0 prim-core prim-type) 0) - (collide-with-collide-cache-prim-mesh s1-1 s5-0 s0-0) - (collide-with-collide-cache-prim-sphere s1-1 s5-0 s0-0) - ) - ) - (set! s0-0 (-> (the-as (inline-array collide-cache-prim) s0-0) 1)) - ) - ) - + (collide-with-collide-cache-prim-mesh s1-1 s5-0 s0-0) + (collide-with-collide-cache-prim-sphere s1-1 s5-0 s0-0))) + (set! s0-0 (-> (the-as (inline-array collide-cache-prim) s0-0) 1)))) ;; now we've collided with everything. If we have a best-u of > 0, it means we can't do the full move. (let ((f30-0 (-> s5-0 best-u))) (cond ((>= f30-0 0.0) (let ((s2-1 (new 'stack-no-clear 'vector))) - ;; if debugging, remember our input velocity. - (if *display-collision-marks* - (set! (-> s2-1 quad) (-> arg1 quad)) - ) - + (if *display-collision-marks* (set! (-> s2-1 quad) (-> arg1 quad))) ;; do the collision reaction! this function should move the collide shape. (set! (-> obj prev-status) (the-as cshape-moving-flags ((-> obj reaction) obj s5-0 arg0 arg1))) - ;; debug draw collision marks. (when *display-collision-marks* (let ((t1-0 (-> *pat-mode-info* (-> s5-0 best-tri pat mode) hilite-color))) - (add-debug-outline-triangle - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> s5-0 best-tri)) - (-> s5-0 best-tri vertex 1) - (-> s5-0 best-tri vertex 2) - t1-0 - ) - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - (-> s5-0 best-tri intersect) - s2-1 - (meters 0.00007324219) - (new 'static 'rgba :r #xff :g #xa0 :a #x80) - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - (-> s5-0 best-tri intersect) - arg0 - (meters 0.00007324219) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) + (add-debug-outline-triangle #t + (bucket-id debug-no-zbuf) + (the-as vector (-> s5-0 best-tri)) + (-> s5-0 best-tri vertex 1) + (-> s5-0 best-tri vertex 2) + t1-0)) + (add-debug-vector #t + (bucket-id debug-no-zbuf) + (-> s5-0 best-tri intersect) + s2-1 + (meters 0.00007324219) + (new 'static 'rgba :r #xff :g #xa0 :a #x80)) + (add-debug-vector #t + (bucket-id debug-no-zbuf) + (-> s5-0 best-tri intersect) + arg0 + (meters 0.00007324219) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) (if (= (-> obj process type) target) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - (-> s5-0 best-tri intersect) - (-> obj surface-normal) - (meters 0.5) - (-> *pat-mode-info* (-> obj cur-pat mode) hilite-color) - ) - ) - ) - ) - + (add-debug-vector #t + (bucket-id debug-no-zbuf) + (-> s5-0 best-tri intersect) + (-> obj surface-normal) + (meters 0.5) + (-> *pat-mode-info* (-> obj cur-pat mode) hilite-color))))) ;; and return the step size we could take. - (return f30-0) - ) + (return f30-0)) (else - ;; didn't hit anything! call the no-reaction function. - (set! (-> obj reaction-flag) (cshape-reaction-flags)) - ((-> obj no-reaction) obj s5-0 arg0 arg1) - (set! (-> obj prev-status) (cshape-moving-flags)) - ;; and do the move ourself - (move-by-vector! obj s2-0) - ;; velocity is unchanged - (set! (-> arg0 quad) (-> arg1 quad)) - ;; moved the whole way! - (return 1.0) - ) - ) - ) - ) - 1.0 - ) - -(defmethod integrate-and-collide! collide-shape ((obj collide-shape) (arg0 vector)) + ;; didn't hit anything! call the no-reaction function. + (set! (-> obj reaction-flag) (cshape-reaction-flags)) + ((-> obj no-reaction) obj s5-0 arg0 arg1) + (set! (-> obj prev-status) (cshape-moving-flags)) + ;; and do the move ourself + (move-by-vector! obj s2-0) + ;; velocity is unchanged + (set! (-> arg0 quad) (-> arg1 quad)) + ;; moved the whole way! + (return 1.0))))) + 1.0) + +(defmethod integrate-and-collide! ((obj collide-shape) (arg0 vector)) "For a non-moving collide shape, we just move ourself. We have no reaction to anything we hit." (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((t9-0 (method-of-object obj move-by-vector!)) - (v1-1 (new 'stack-no-clear 'vector)) - ) + (v1-1 (new 'stack-no-clear 'vector))) (.lvf vf1 (&-> arg0 quad)) - (let ((f0-0 (-> *display* seconds-per-frame))) - (.mov at-0 f0-0) - ) + (let ((f0-0 (-> *display* seconds-per-frame))) (.mov at-0 f0-0)) (.mov vf2 at-0) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) (.svf (&-> v1-1 quad) vf1) - (t9-0 obj v1-1) - ) - (none) - ) - ) + (t9-0 obj v1-1)) + (none))) -(defmethod integrate-and-collide! collide-shape-moving ((obj collide-shape-moving) (arg0 vector)) +(defmethod integrate-and-collide! ((obj collide-shape-moving) (arg0 vector)) "Integrate forward, with collisions and collision responses. This will adjust our velocity based on collision. It will process updates from hitting triangles with pat-surfaces It will update the touching list. It will update the current surface and surface flags." - ;; update the world-spheres for us and our children. (update-transforms! obj) - ;; remember our history (set! (-> obj trans-old 2 quad) (-> obj trans-old 1 quad)) (set! (-> obj trans-old 1 quad) (-> obj trans-old 0 quad)) (set! (-> obj trans-old 0 quad) (-> obj trans quad)) (set! (-> obj prev-status) (-> obj status)) - ;; setup - (logclear! (-> obj status) (cshape-moving-flags - onsurf - onground - tsurf - twall - t-ciel - t-act - csmf06 - csmf07 - csmf09 - on-water - csmf11 - csmf12 - csmf13 - ) - ) + (logclear! (-> obj status) + (cshape-moving-flags onsurf onground tsurf twall t-ciel t-act csmf06 csmf07 csmf09 on-water csmf11 csmf12 csmf13)) (set! (-> obj local-normal quad) (-> obj dynam gravity-normal quad)) (set! (-> obj surface-normal quad) (-> obj dynam gravity-normal quad)) (set! (-> obj poly-normal quad) (-> obj dynam gravity-normal quad)) (set! (-> obj coverage) 0.0) (set! (-> obj touch-angle) 0.0) - ;; we want to take a step of 1.0 (let ((f30-0 1.0) (s4-0 0) ;; iterations @@ -1268,48 +897,35 @@ (while (and (< 0.05 f30-0) ;; at least 5% left (and (< s4-0 (the-as int (-> obj max-iteration-count))) ;; iterations left (not (and (= (-> arg0 x) 0.0) (= (-> arg0 y) 0.0) (= (-> arg0 z) 0.0))) ;; nonzero velocity - ) - ) - + )) ;; note that in between step-collision! and update-from-step-szie, the touching list is in an invalid state. (let ((f28-0 (step-collison! obj arg0 arg0 f30-0))) ;; step forward! - (update-from-step-size *touching-list* f28-0) ;; update touching list. - (set! f30-0 (- f30-0 (* f28-0 f30-0))) ;; advance the fraction of the remaining step. + (update-from-step-size *touching-list* f28-0) ;; update touching list. + (set! f30-0 (- f30-0 (* f28-0 f30-0))) ;; advance the fraction of the remaining step. ) - (+! s4-0 1) - ) - ) + (+! s4-0 1))) 0 - (none) - ) + (none)) -(defmethod integrate-and-collide! control-info ((obj control-info) (arg0 vector)) +(defmethod integrate-and-collide! ((obj control-info) (arg0 vector)) "Specialization of integrate and collide for the target" ;; time it (stopwatch-start (-> *collide-stats* total-target)) - ;; check and correct massive velocity. (when (< 1638400.0 (vector-length arg0)) (format 0 "WARNING: target vel is ~M m/s, reseting to zero.~%" (vector-length arg0)) - (vector-reset! arg0) - ) - + (vector-reset! arg0)) ;; ??? (set! (-> obj unknown-vector15 quad) (-> obj unknown-vector14 quad)) (vector-matrix*! (-> obj unknown-vector14) (-> obj unknown-vector13) (-> obj unknown-matrix02)) (vector-! (-> obj unknown-vector16) (-> obj unknown-vector14) (-> obj unknown-vector15)) (let ((a1-6 (vector-! (new 'stack-no-clear 'vector) (-> obj unknown-vector11) (-> obj unknown-vector14)))) - (vector-seek! (-> obj unknown-vector12) a1-6 (* 16384.0 (-> *display* seconds-per-frame))) - ) + (vector-seek! (-> obj unknown-vector12) a1-6 (* 16384.0 (-> *display* seconds-per-frame)))) (let ((s3-1 (vector+float*! (new-stack-vector0) arg0 (-> obj unknown-vector16) 60.0)) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (set! (-> s4-1 quad) (-> arg0 quad)) - ;; call the normal integrate. - (let ((t9-7 (method-of-type collide-shape-moving integrate-and-collide!))) - (t9-7 obj s3-1) - ) + (let ((t9-7 (method-of-type collide-shape-moving integrate-and-collide!))) (t9-7 obj s3-1)) (let ((s1-0 (new-stack-vector0))) (set! (-> s1-0 quad) (-> s4-1 quad)) (let ((s2-1 (new-stack-vector0))) @@ -1317,90 +933,48 @@ (let ((s0-0 (new-stack-vector0))) (let ((f0-4 (vector-dot (-> obj dynam gravity-normal) s1-0))) 0.0 - (vector-! s0-0 s1-0 (vector-float*! s0-0 (-> obj dynam gravity-normal) f0-4)) - ) + (vector-! s0-0 s1-0 (vector-float*! s0-0 (-> obj dynam gravity-normal) f0-4))) (let* ((f0-5 (vector-length s0-0)) (f1-2 f0-5) - (f2-0 0.0) - ) - (vector+! - s1-0 - (vector-float*! s1-0 (-> obj dynam gravity-normal) f2-0) - (vector-float*! s0-0 s0-0 (/ f0-5 f1-2)) - ) - ) - ) + (f2-0 0.0)) + (vector+! s1-0 (vector-float*! s1-0 (-> obj dynam gravity-normal) f2-0) (vector-float*! s0-0 s0-0 (/ f0-5 f1-2))))) (let ((s0-1 (new-stack-vector0))) (let ((f0-8 (vector-dot (-> obj dynam gravity-normal) s2-1))) 0.0 - (vector-! s0-1 s2-1 (vector-float*! s0-1 (-> obj dynam gravity-normal) f0-8)) - ) + (vector-! s0-1 s2-1 (vector-float*! s0-1 (-> obj dynam gravity-normal) f0-8))) (let* ((f0-9 (vector-length s0-1)) (f1-4 f0-9) - (f2-1 0.0) - ) - (vector+! - s2-1 - (vector-float*! s2-1 (-> obj dynam gravity-normal) f2-1) - (vector-float*! s0-1 s0-1 (/ f0-9 f1-4)) - ) - ) - ) + (f2-1 0.0)) + (vector+! s2-1 (vector-float*! s2-1 (-> obj dynam gravity-normal) f2-1) (vector-float*! s0-1 s0-1 (/ f0-9 f1-4))))) (vector-normalize! s1-0 1.0) (vector-normalize! s2-1 1.0) (let ((f30-1 (vector-dot s1-0 s2-1))) (cond - ((and (!= (vector-length (-> obj unknown-vector01)) 0.0) (if (logtest? (-> obj status) 8) - (< f30-1 0.9999) - (< f30-1 0.95) - ) - ) + ((and (!= (vector-length (-> obj unknown-vector01)) 0.0) + (if (logtest? (-> obj status) 8) (< f30-1 0.9999) (< f30-1 0.95))) (set! (-> obj unknown-float70) (seek (-> obj unknown-float70) 1.0 (* 4.0 (-> *display* seconds-per-frame)))) - (set! (-> obj unknown-float71) (seek - (-> obj unknown-float71) - (if (= (-> obj unknown-surface00 mode) 'air) - 1.0 - 0.0 - ) - (* 4.0 (-> *display* seconds-per-frame)) - ) - ) - (logior! (-> obj status) 512) - ) + (set! (-> obj unknown-float71) + (seek (-> obj unknown-float71) + (if (= (-> obj unknown-surface00 mode) 'air) 1.0 0.0) + (* 4.0 (-> *display* seconds-per-frame)))) + (logior! (-> obj status) 512)) (else - (set! (-> obj unknown-float70) (seek (-> obj unknown-float70) 0.0 (* 2.0 (-> *display* seconds-per-frame)))) - (set! (-> obj unknown-float71) (seek (-> obj unknown-float71) 0.0 (* 2.0 (-> *display* seconds-per-frame)))) - ) - ) - ) - ) - ) + (set! (-> obj unknown-float70) (seek (-> obj unknown-float70) 0.0 (* 2.0 (-> *display* seconds-per-frame)))) + (set! (-> obj unknown-float71) (seek (-> obj unknown-float71) 0.0 (* 2.0 (-> *display* seconds-per-frame))))))))) (if (logtest? (-> obj status) 1) - (set! (-> arg0 quad) (-> s3-1 quad)) - (vector--float*! arg0 s3-1 (-> obj unknown-vector16) 60.0) - ) + (set! (-> arg0 quad) (-> s3-1 quad)) + (vector--float*! arg0 s3-1 (-> obj unknown-vector16) 60.0)) (if (and (logtest? (-> obj status) 1) - (and (zero? (logand (-> obj status) 520)) (< (vector-length (-> obj unknown-vector61)) (vector-length s4-1))) - ) - (set! (-> obj unknown-vector61 quad) (-> s4-1 quad)) - ) - ) + (and (zero? (logand (-> obj status) 520)) (< (vector-length (-> obj unknown-vector61)) (vector-length s4-1)))) + (set! (-> obj unknown-vector61 quad) (-> s4-1 quad)))) (let ((s5-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> obj unknown-vector120) 1.0)) - (f0-32 (vector-length (-> obj unknown-vector120))) - ) - (set! (-> obj unknown-float140) (if (= f0-32 0.0) - 0.0 - (fmax 0.0 (/ (vector-dot (-> obj transv) s5-1) f0-32)) - ) - ) - ) + (f0-32 (vector-length (-> obj unknown-vector120)))) + (set! (-> obj unknown-float140) (if (= f0-32 0.0) 0.0 (fmax 0.0 (/ (vector-dot (-> obj transv) s5-1) f0-32))))) (stopwatch-stop (-> *collide-stats* total-target)) 0 - (none) - ) - + (none)) -(defmethod move-to-ground-point! collide-shape-moving ((obj collide-shape-moving) (arg0 vector) (arg1 vector) (arg2 vector)) +(defmethod move-to-ground-point! ((obj collide-shape-moving) (arg0 vector) (arg1 vector) (arg2 vector)) "Move the collide shape to the ground immediately: arg0: ground point arg1: velocity (will be modified) @@ -1416,39 +990,23 @@ (set! (-> obj ground-impact-vel) (- (vector-dot arg1 (-> obj dynam gravity-normal)))) (set! (-> obj ground-touch-point quad) (-> arg0 quad)) 0 - (none) - ) + (none)) -(defmethod integrate-no-collide! collide-shape-moving ((obj collide-shape-moving) (arg0 vector)) +(defmethod integrate-no-collide! ((obj collide-shape-moving) (arg0 vector)) "Integrate, but ignore all collisions. Will set both trans and shadow-pos" (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (update-transforms! obj) (set! (-> obj trans-old 2 quad) (-> obj trans-old 1 quad)) (set! (-> obj trans-old 1 quad) (-> obj trans-old 0 quad)) (set! (-> obj trans-old 0 quad) (-> obj trans quad)) (set! (-> obj prev-status) (-> obj status)) - (logclear! (-> obj status) (cshape-moving-flags - onsurf - onground - tsurf - twall - t-ciel - t-act - csmf06 - csmf07 - csmf09 - on-water - csmf11 - csmf12 - csmf13 - ) - ) + (logclear! (-> obj status) + (cshape-moving-flags onsurf onground tsurf twall t-ciel t-act csmf06 csmf07 csmf09 on-water csmf11 csmf12 csmf13)) (set! (-> obj local-normal quad) (-> obj dynam gravity-normal quad)) (set! (-> obj surface-normal quad) (-> obj dynam gravity-normal quad)) (set! (-> obj poly-normal quad) (-> obj dynam gravity-normal quad)) @@ -1456,25 +1014,19 @@ (set! (-> obj touch-angle) 0.0) (let* ((a0-12 obj) (t9-1 (method-of-object a0-12 move-by-vector!)) - (a1-1 (new 'stack-no-clear 'vector)) - ) + (a1-1 (new 'stack-no-clear 'vector))) (.lvf vf1 (&-> arg0 quad)) - (let ((f0-2 (-> *display* seconds-per-frame))) - (.mov at-0 f0-2) - ) + (let ((f0-2 (-> *display* seconds-per-frame))) (.mov at-0 f0-2)) (.mov vf2 at-0) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) (.svf (&-> a1-1 quad) vf1) - (t9-1 a0-12 a1-1) - ) + (t9-1 a0-12 a1-1)) (set! (-> obj shadow-pos quad) (-> obj trans quad)) 0 - (none) - ) - ) + (none))) -(defmethod collide-shape-moving-method-58 collide-shape-moving ((obj collide-shape-moving) (arg0 vector)) +(defmethod collide-shape-moving-method-58 ((obj collide-shape-moving) (arg0 vector)) ;; not sure yet. moves shadow-pos, but possibly not trans. (integrate-no-collide! obj arg0) (let ((a1-1 (new 'stack-no-clear 'overlaps-others-params))) @@ -1482,13 +1034,10 @@ (set! (-> a1-1 tlist) *touching-list*) (when (find-overlapping-shapes obj a1-1) (move-to-point! obj (the-as vector (-> obj trans-old))) - (return #t) - ) - ) - #f - ) + (return #t))) + #f) -(defmethod move-to-tri! collide-shape-moving ((obj collide-shape-moving) (arg0 collide-tri-result) (arg1 vector)) +(defmethod move-to-tri! ((obj collide-shape-moving) (arg0 collide-tri-result) (arg1 vector)) "Move us to tri arg0, at point arg1." (move-to-point! obj arg1) (logior! (-> obj status) (cshape-moving-flags onsurf onground tsurf)) @@ -1496,24 +1045,15 @@ (set! (-> obj poly-normal quad) (-> v1-4 quad)) (set! (-> obj surface-normal quad) (-> v1-4 quad)) (set! (-> obj local-normal quad) (-> v1-4 quad)) - (set! (-> obj ground-poly-normal quad) (-> v1-4 quad)) - ) + (set! (-> obj ground-poly-normal quad) (-> v1-4 quad))) (set! (-> obj poly-pat) (-> arg0 pat)) (set! (-> obj cur-pat) (-> arg0 pat)) (set! (-> obj ground-pat) (-> arg0 pat)) (set! (-> obj ground-touch-point quad) (-> arg1 quad)) 0 - (none) - ) - -(defmethod integrate-for-enemy-with-move-to-ground! collide-shape-moving ((obj collide-shape-moving) - (arg0 vector) - (arg1 collide-kind) - (arg2 float) - (arg3 symbol) - (arg4 symbol) - (arg5 symbol) - ) + (none)) + +(defmethod integrate-for-enemy-with-move-to-ground! ((obj collide-shape-moving) (arg0 vector) (arg1 collide-kind) (arg2 float) (arg3 symbol) (arg4 symbol) (arg5 symbol)) "This is likely the main method for stepping an enemy. arg0: velocity arg1: ground collision @@ -1525,15 +1065,11 @@ (set! sv-128 arg2) (let ((s5-0 arg3)) (let ((s3-0 arg4) - (s1-0 arg5) - ) + (s1-0 arg5)) (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))) ;; move us forward! (integrate-no-collide! obj arg0) ;; set our position to shadow (not sure why) @@ -1545,45 +1081,31 @@ 0.0 ;; probe the ground! (let ((f0-4 (if s1-0 - (misty-ambush-height-probe s0-0 81920.0) - (fill-and-probe-using-line-sphere - *collide-cache* - s0-0 - (new 'static 'vector :y -81920.0 :w 1.0) ;; probe down. - 40.96 - arg1 - (-> obj process) - sv-144 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - ) + (misty-ambush-height-probe s0-0 81920.0) + (fill-and-probe-using-line-sphere *collide-cache* + s0-0 + (new 'static 'vector :y -81920.0 :w 1.0) ;; probe down. + 40.96 + arg1 + (-> obj process) + sv-144 + (new 'static 'pat-surface :noentity #x1))))) (cond ((>= f0-4 0.0) ;; found the ground! (let ((a2-3 (new 'static 'vector :y -81920.0 :w 1.0))) ;; set s0-0 to the ground. - (vector+float*! s0-0 s0-0 a2-3 f0-4) - ) + (vector+float*! s0-0 s0-0 a2-3 f0-4)) (when (>= (-> s0-0 y) (-> obj trans y)) ;; we're in the ground, move us out of the ground. (move-to-tri! obj sv-144 s0-0) ;; remember how hard we hit (set! (-> obj ground-impact-vel) (- (vector-dot arg0 (-> obj dynam gravity-normal)))) ;; and kill our vertical velocity. - (set! (-> arg0 y) 0.0) - ) - ) + (set! (-> arg0 y) 0.0))) (s3-0 - ;; no ground. if the hover flag is set, we just hover. - (set! (-> obj trans y) (-> obj trans-old 0 y)) - ) - ) - ) - ) - ) - + ;; no ground. if the hover flag is set, we just hover. + (set! (-> obj trans y) (-> obj trans-old 0 y))))))) ;; if we need to collide with things. (when (logtest? (-> obj root-prim collide-with) (collide-kind cak-1 cak-2 cak-3 target)) (let ((a1-7 (new 'stack-no-clear 'overlaps-others-params))) @@ -1592,73 +1114,54 @@ ;; compute overlaps. (when (find-overlapping-shapes obj a1-7) ;; if we have the revert move if blocked, go back to our old point. - (if s5-0 - (move-to-point! obj (the-as vector (-> obj trans-old))) - ) - ) - ) - ) - ) + (if s5-0 (move-to-point! obj (the-as vector (-> obj trans-old)))))))) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :g #xff :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) 'draw (new 'static 'rgba :g #xff :a #x80))) 0 - (none) - ) + (none)) -(defmethod move-to-ground collide-shape-moving ((obj collide-shape-moving) (arg0 float) (arg1 float) (arg2 symbol) (arg3 collide-kind)) +(defmethod move-to-ground ((obj collide-shape-moving) (arg0 float) (arg1 float) (arg2 symbol) (arg3 collide-kind)) "Move to the ground now." (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))) (let ((s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'collide-tri-result)) - ) + (s3-0 (new 'stack-no-clear 'collide-tri-result))) (let ((f30-0 (+ arg0 arg1))) (set! (-> s4-0 quad) (-> obj trans quad)) (+! (-> s4-0 y) arg0) 0.0 ;; find the ground - (let ((f0-4 (fill-and-probe-using-y-probe *collide-cache* s4-0 f30-0 arg3 (-> obj process) s3-0 (new 'static 'pat-surface :noentity #x1)))) + (let ((f0-4 (fill-and-probe-using-y-probe *collide-cache* + s4-0 + f30-0 + arg3 + (-> obj process) + s3-0 + (new 'static 'pat-surface :noentity #x1)))) (when (< f0-4 0.0) (if arg2 - (format 0 "WARNING: move-to-ground: (~f ~f) failed to locate ground [~S type ~S]~%" - (* 0.00024414062 (-> s4-0 y)) - (* 0.00024414062 f30-0) - (-> obj process name) - (-> obj process type symbol) - ) - ) - (return #f) - ) + (format 0 + "WARNING: move-to-ground: (~f ~f) failed to locate ground [~S type ~S]~%" + (* 0.00024414062 (-> s4-0 y)) + (* 0.00024414062 f30-0) + (-> obj process name) + (-> obj process type symbol))) + (return #f)) ;; calulate the ground position. - (set! (-> s4-0 y) (- (-> s4-0 y) (* f0-4 f30-0))) - ) - ) + (set! (-> s4-0 y) (- (-> s4-0 y) (* f0-4 f30-0))))) ;; move our shadow there too (set! (-> obj shadow-pos quad) (-> s4-0 quad)) ;; and move us there! - (move-to-tri! obj s3-0 s4-0) - ) + (move-to-tri! obj s3-0 s4-0)) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - ) - #t - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80))) + #t) -(defmethod compute-acc-due-to-gravity collide-shape-moving ((obj collide-shape-moving) (arg0 vector) (arg1 float)) +(defmethod compute-acc-due-to-gravity ((obj collide-shape-moving) (arg0 vector) (arg1 float)) "Compute the acceleration due to gravity." (let* ((s4-0 (vector-negate! (new-stack-vector0) (-> obj dynam gravity))) ;; this is the acceleration from gravity. (a2-1 (-> obj local-normal)) @@ -1666,62 +1169,39 @@ ) ;; apply that. note that we scale the slopiness by arg1 ;; (this is not really how things work.) - (vector--float*! arg0 s4-0 a2-2 (cond - ((logtest? (-> obj status) (cshape-moving-flags onsurf)) - (empty) - arg1 - ) - (else - 0.0 - ) - ) - ) - ) - arg0 - ) - -(defmethod fill-cache-integrate-and-collide! collide-shape ((obj collide-shape) (arg0 vector) (arg1 collide-kind)) + (vector--float*! arg0 + s4-0 + a2-2 + (cond + ((logtest? (-> obj status) (cshape-moving-flags onsurf)) (empty) arg1) + (else 0.0)))) + arg0) + +(defmethod fill-cache-integrate-and-collide! ((obj collide-shape) (arg0 vector) (arg1 collide-kind)) "Fill the collide cache for the object, integrate, and handle collisions!" (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - - ;; scale the velocity, to see how far we can go, at max. - (let ((a0-1 (new 'stack-no-clear 'vector))) - (let ((v1-0 a0-1)) - (.lvf vf1 (&-> arg0 quad)) - (let ((f0-0 (-> *display* seconds-per-frame))) - (.mov at-0 f0-0) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-0 quad) vf1) - ) - - ;; add a bonus size if we are target. - (let ((f0-2 (+ (vector-length a0-1) - (if (= (-> obj process type) target) - 4096.0 - 0.0 - ) - ) - ) - ) - ;; and now fill the cache with all things we could hit - (fill-cache-for-shape! obj f0-2 arg1) - ) - ) - ;; do the integration, colliding with stuff in the cache. - (integrate-and-collide! obj arg0) - (none) - ) - ) - -(defmethod fill-cache-for-shape! collide-shape ((obj collide-shape) (arg0 float) (arg1 collide-kind)) + (vf2 :class vf)) + (init-vf0-vector) + ;; scale the velocity, to see how far we can go, at max. + (let ((a0-1 (new 'stack-no-clear 'vector))) + (let ((v1-0 a0-1)) + (.lvf vf1 (&-> arg0 quad)) + (let ((f0-0 (-> *display* seconds-per-frame))) (.mov at-0 f0-0)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-0 quad) vf1)) + ;; add a bonus size if we are target. + (let ((f0-2 (+ (vector-length a0-1) (if (= (-> obj process type) target) 4096.0 0.0)))) + ;; and now fill the cache with all things we could hit + (fill-cache-for-shape! obj f0-2 arg1))) + ;; do the integration, colliding with stuff in the cache. + (integrate-and-collide! obj arg0) + (none))) + +(defmethod fill-cache-for-shape! ((obj collide-shape) (arg0 float) (arg1 collide-kind)) "Fill cache for a box." (let ((s5-0 (new 'stack-no-clear 'bounding-box))) (cond @@ -1730,19 +1210,13 @@ (fill-using-bounding-box *collide-cache* s5-0 arg1 (-> obj process) (-> obj pat-ignore-mask)) ;; only draw collide cache, if we're the target (when (and *display-collide-cache* (= (-> obj process type) target)) - (debug-draw *collide-cache*) - ;; og:preserve-this added - (add-debug-box #t (bucket-id debug) (-> s5-0 min) (-> s5-0 max) (new 'static 'rgba :a #x80 :b #x70 :g #x70)) - ) - ) + (debug-draw *collide-cache*) + ;; og:preserve-this added + (add-debug-box #t (bucket-id debug) (-> s5-0 min) (-> s5-0 max) (new 'static 'rgba :a #x80 :b #x70 :g #x70)))) (else - ;; no need. the cache can be empty. - (initialize *collide-cache*) - ) - ) - ) - (none) - ) + ;; no need. the cache can be empty. + (initialize *collide-cache*)))) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; bounding box of shape @@ -1752,41 +1226,33 @@ (deftype pc-bounding-box-work (structure) ((reg-vf29 vector :inline) (reg-vf30 vector :inline) - (reg-vf31 vector :inline) - ) - ) + (reg-vf31 vector :inline))) (define *pc-bounding-box-work* (new 'global 'pc-bounding-box-work)) (defmacro save-bounding-box-work () `(begin - (.svf (&-> *pc-bounding-box-work* reg-vf31 quad) vf31) - (.svf (&-> *pc-bounding-box-work* reg-vf30 quad) vf30) - (.svf (&-> *pc-bounding-box-work* reg-vf29 quad) vf29) - ) - ) + (.svf (&-> *pc-bounding-box-work* reg-vf31 quad) vf31) + (.svf (&-> *pc-bounding-box-work* reg-vf30 quad) vf30) + (.svf (&-> *pc-bounding-box-work* reg-vf29 quad) vf29))) (defmacro load-bounding-box-work () `(begin - (.lvf vf29 (&-> *pc-bounding-box-work* reg-vf29 quad)) - (.lvf vf30 (&-> *pc-bounding-box-work* reg-vf30 quad)) - (.lvf vf31 (&-> *pc-bounding-box-work* reg-vf31 quad)) - ) - ) + (.lvf vf29 (&-> *pc-bounding-box-work* reg-vf29 quad)) + (.lvf vf30 (&-> *pc-bounding-box-work* reg-vf30 quad)) + (.lvf vf31 (&-> *pc-bounding-box-work* reg-vf31 quad)))) -(defmethod build-bounding-box-for-shape collide-shape ((obj collide-shape) (arg0 bounding-box) (arg1 float) (arg2 collide-kind)) +(defmethod build-bounding-box-for-shape ((obj collide-shape) (arg0 bounding-box) (arg1 float) (arg2 collide-kind)) "Build a bounding box containing the whole shape. If the box is empty, returns #f." (rlet ((vf0 :class vf) (vf1 :class vf) (vf29 :class vf) (vf30 :class vf) - (vf31 :class vf) - ) + (vf31 :class vf)) (init-vf0-vector) (let ((v1-0 (new 'static 'vector :x 4.096)) - (a0-1 (-> obj root-prim)) - ) + (a0-1 (-> obj root-prim))) (cond ((logtest? (-> a0-1 collide-with) arg2) (.mov vf31 arg1) @@ -1801,43 +1267,29 @@ (.mov.vf vf30 vf0 :mask #b1000) (.svf (&-> arg0 min quad) vf29) (.svf (&-> arg0 max quad) vf30) - (return #t) - ) - (else - (return #f) - ) - ) - (the-as none 0) - ) - (else - (return #f) - ) - ) - ) - (the-as symbol 0) - ) - ) + (return #t)) + (else (return #f))) + (the-as none 0)) + (else (return #f)))) + (the-as symbol 0))) ;; ERROR: Bad vector register dependency: vf31 -(defmethod add-to-bounding-box collide-shape-prim ((obj collide-shape-prim) (arg0 collide-kind)) +(defmethod add-to-bounding-box ((obj collide-shape-prim) (arg0 collide-kind)) "Add a single prim to the bounding box. (just adds the bsphere)" (rlet ((vf1 :class vf) (vf2 :class vf) (vf29 :class vf) (vf30 :class vf) - (vf31 :class vf) - ) + (vf31 :class vf)) (load-bounding-box-work) (.lvf vf1 (&-> obj prim-core world-sphere quad)) (.add.w.vf vf2 vf31 vf1 :mask #b1) (.add.x.vf vf30 vf1 vf2 :mask #b111) (.sub.x.vf vf29 vf1 vf2 :mask #b111) (save-bounding-box-work) - #t - ) - ) + #t)) -(defmethod add-to-bounding-box collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-kind)) +(defmethod add-to-bounding-box ((obj collide-shape-prim-group) (arg0 collide-kind)) "Add a group of prims." (local-vars (v1-0 int) (v1-10 none) (v1-11 int) (v1-19 float)) (rlet ((vf1 :class vf) @@ -1846,13 +1298,11 @@ (vf3 :class vf) (vf30 :class vf) (vf31 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (load-bounding-box-work) ;; this first loop looks for a non-empty group. (let ((s4-0 (-> obj num-prims)) - (s3-0 0) - ) + (s3-0 0)) (label cfg-1) (b! (= s3-0 s4-0) cfg-11 :delay (set! v1-0 (* s3-0 4))) (let ((a0-1 (-> (the-as (pointer collide-shape-prim) (+ v1-0 (the-as int obj))) 19))) @@ -1863,20 +1313,14 @@ (when (add-to-bounding-box a0-1 arg0) (load-bounding-box-work) (empty) - (goto cfg-12) - ) - (load-bounding-box-work) - ) + (goto cfg-12)) + (load-bounding-box-work)) (else - (.lvf vf1 (&-> a0-1 prim-core world-sphere quad)) - (.add.w.vf vf2 vf31 vf1 :mask #b1) - (.add.x.vf vf30 vf1 vf2 :mask #b111) - (b! #t cfg-12 :delay (.sub.x.vf vf29 vf1 vf2 :mask #b111)) - (.mov v1-10 vf29) - ) - ) - ) - ) + (.lvf vf1 (&-> a0-1 prim-core world-sphere quad)) + (.add.w.vf vf2 vf31 vf1 :mask #b1) + (.add.x.vf vf30 vf1 vf2 :mask #b111) + (b! #t cfg-12 :delay (.sub.x.vf vf29 vf1 vf2 :mask #b111)) + (.mov v1-10 vf29))))) ;; and now (b! #t cfg-1 :delay (set! s3-0 (+ s3-0 1))) (label cfg-11) @@ -1892,34 +1336,24 @@ ((= (-> a0-2 type) collide-shape-prim-group) (save-bounding-box-work) (add-to-non-empty-bounding-box (the-as collide-shape-prim-group a0-2) arg0) - (load-bounding-box-work) - ) + (load-bounding-box-work)) (else - (.lvf vf1 (&-> a0-2 prim-core world-sphere quad)) - (.add.w.vf vf2 vf31 vf1 :mask #b1) - (.add.x.vf vf4 vf1 vf2 :mask #b111) - (.sub.x.vf vf3 vf1 vf2 :mask #b111) - (.min.vf vf29 vf29 vf3) - (.max.vf vf30 vf30 vf4) - (.mov v1-19 vf30) - ) - ) - ) - ) - (b! #t cfg-13 :delay (set! s3-1 (+ s3-1 1))) - ) + (.lvf vf1 (&-> a0-2 prim-core world-sphere quad)) + (.add.w.vf vf2 vf31 vf1 :mask #b1) + (.add.x.vf vf4 vf1 vf2 :mask #b111) + (.sub.x.vf vf3 vf1 vf2 :mask #b111) + (.min.vf vf29 vf29 vf3) + (.max.vf vf30 vf30 vf4) + (.mov v1-19 vf30))))) + (b! #t cfg-13 :delay (set! s3-1 (+ s3-1 1)))) (label cfg-19) (save-bounding-box-work) (return #t) (label cfg-21) (save-bounding-box-work) - v0-1 - ) - ) - ) - ) + v0-1)))) -(defmethod add-to-non-empty-bounding-box collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-kind)) +(defmethod add-to-non-empty-bounding-box ((obj collide-shape-prim-group) (arg0 collide-kind)) (local-vars (v1-0 int) (v1-8 float)) (rlet ((vf1 :class vf) (vf2 :class vf) @@ -1927,12 +1361,10 @@ (vf3 :class vf) (vf30 :class vf) (vf31 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (load-bounding-box-work) (let ((s4-0 (-> obj num-prims)) - (s3-0 0) - ) + (s3-0 0)) (label cfg-1) (b! (= s3-0 s4-0) cfg-7 :delay (set! v1-0 (* s3-0 4))) (let ((a0-1 (-> (the-as (pointer collide-shape-prim) (+ v1-0 (the-as int obj))) 19))) @@ -1941,72 +1373,47 @@ ((= (-> a0-1 type) collide-shape-prim-group) (save-bounding-box-work) (add-to-non-empty-bounding-box (the-as collide-shape-prim-group a0-1) arg0) - (load-bounding-box-work) - ) + (load-bounding-box-work)) (else - (.lvf vf1 (&-> a0-1 prim-core world-sphere quad)) - (.add.w.vf vf2 vf31 vf1 :mask #b1) - (.add.x.vf vf4 vf1 vf2 :mask #b111) - (.sub.x.vf vf3 vf1 vf2 :mask #b111) - (.min.vf vf29 vf29 vf3) - (.max.vf vf30 vf30 vf4) - (.mov v1-8 vf30) - ) - ) - ) - ) - (b! #t cfg-1 :delay (set! s3-0 (+ s3-0 1))) - ) + (.lvf vf1 (&-> a0-1 prim-core world-sphere quad)) + (.add.w.vf vf2 vf31 vf1 :mask #b1) + (.add.x.vf vf4 vf1 vf2 :mask #b111) + (.sub.x.vf vf3 vf1 vf2 :mask #b111) + (.min.vf vf29 vf29 vf3) + (.max.vf vf30 vf30 vf4) + (.mov v1-8 vf30))))) + (b! #t cfg-1 :delay (set! s3-0 (+ s3-0 1)))) (label cfg-7) (save-bounding-box-work) 0 - (none) - ) - ) + (none))) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; prim lookup ;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod find-prim-by-id collide-shape ((obj collide-shape) (arg0 uint)) +(defmethod find-prim-by-id ((obj collide-shape) (arg0 uint)) "Find a prim in this shape with the given id." - (find-prim-by-id (-> obj root-prim) arg0) - ) + (find-prim-by-id (-> obj root-prim) arg0)) -(defmethod find-prim-by-id collide-shape-prim ((obj collide-shape-prim) (arg0 uint)) +(defmethod find-prim-by-id ((obj collide-shape-prim) (arg0 uint)) "Find a prim in this shape or its children with the given id." (if (= (-> obj prim-id) arg0) ;; it's us! - (return obj) - ) - (the-as collide-shape-prim #f) - ) + (return obj)) + (the-as collide-shape-prim #f)) -(defmethod find-prim-by-id collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 uint)) +(defmethod find-prim-by-id ((obj collide-shape-prim-group) (arg0 uint)) "Find a prim in this shape or its children with the given id." (if (= (-> obj prim-id) arg0) ;; it's us - (return obj) - ) + (return obj)) (countdown (s4-0 (-> obj num-prims)) (let ((a0-1 (-> obj prims s4-0))) (cond - ((= (-> a0-1 type) collide-shape-prim-group) - (let ((a0-2 (find-prim-by-id a0-1 arg0))) - (if a0-2 - (return a0-2) - ) - ) - ) + ((= (-> a0-1 type) collide-shape-prim-group) (let ((a0-2 (find-prim-by-id a0-1 arg0))) (if a0-2 (return a0-2)))) (else - ;; just check here, to avoid the virtual call - (if (= (-> a0-1 prim-id) arg0) - (return a0-1) - ) - ) - ) - ) - ) - (the-as collide-shape-prim #f) - ) + ;; just check here, to avoid the virtual call + (if (= (-> a0-1 prim-id) arg0) (return a0-1)))))) + (the-as collide-shape-prim #f)) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; debug @@ -2014,13 +1421,11 @@ (defun-debug collide-shape-draw-debug-marks () "Draw collision debug." - (add-debug-sphere - (or *display-collision-marks* *display-target-marks*) - (bucket-id debug) - (target-pos 0) - 819.2 - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) + (add-debug-sphere (or *display-collision-marks* *display-target-marks*) + (bucket-id debug) + (target-pos 0) + 819.2 + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) (when *display-collision-marks* (let ((v1-4 (-> *collide-player-list* alive-list next0))) *collide-player-list* @@ -2030,18 +1435,11 @@ (if (or (and (not *display-actor-anim*) (not *display-process-anim*)) (or (= (-> (the-as collide-shape s5-1) process) *target*) (name= *display-actor-anim* (-> (the-as collide-shape s5-1) process name)) - (= (ppointer->process *display-process-anim*) (-> (the-as collide-shape s5-1) process)) - ) - ) - (debug-draw (the-as collide-shape s5-1)) - ) - ) + (= (ppointer->process *display-process-anim*) (-> (the-as collide-shape s5-1) process)))) + (debug-draw (the-as collide-shape s5-1)))) (set! v1-4 gp-1) *collide-player-list* - (set! gp-1 (-> gp-1 next0)) - ) - ) - ) + (set! gp-1 (-> gp-1 next0))))) (let ((v1-19 (-> *collide-hit-by-player-list* alive-list next0))) *collide-hit-by-player-list* (let ((gp-2 (-> v1-19 next0))) @@ -2050,18 +1448,11 @@ (if (or (and (not *display-actor-anim*) (not *display-process-anim*)) (or (= (-> (the-as collide-shape s5-2) process) *target*) (name= *display-actor-anim* (-> (the-as collide-shape s5-2) process name)) - (= (ppointer->process *display-process-anim*) (-> (the-as collide-shape s5-2) process)) - ) - ) - (debug-draw (the-as collide-shape s5-2)) - ) - ) + (= (ppointer->process *display-process-anim*) (-> (the-as collide-shape s5-2) process)))) + (debug-draw (the-as collide-shape s5-2)))) (set! v1-19 gp-2) *collide-hit-by-player-list* - (set! gp-2 (-> gp-2 next0)) - ) - ) - ) + (set! gp-2 (-> gp-2 next0))))) (let ((v1-34 (-> *collide-usually-hit-by-player-list* alive-list next0))) *collide-usually-hit-by-player-list* (let ((gp-3 (-> v1-34 next0))) @@ -2070,18 +1461,11 @@ (if (or (and (not *display-actor-anim*) (not *display-process-anim*)) (or (= (-> (the-as collide-shape s5-3) process) *target*) (name= *display-actor-anim* (-> (the-as collide-shape s5-3) process name)) - (= (ppointer->process *display-process-anim*) (-> (the-as collide-shape s5-3) process)) - ) - ) - (debug-draw (the-as collide-shape s5-3)) - ) - ) + (= (ppointer->process *display-process-anim*) (-> (the-as collide-shape s5-3) process)))) + (debug-draw (the-as collide-shape s5-3)))) (set! v1-34 gp-3) *collide-usually-hit-by-player-list* - (set! gp-3 (-> gp-3 next0)) - ) - ) - ) + (set! gp-3 (-> gp-3 next0))))) (let ((v1-49 (-> *collide-hit-by-others-list* alive-list next0))) *collide-hit-by-others-list* (let ((gp-4 (-> v1-49 next0))) @@ -2090,31 +1474,18 @@ (if (or (and (not *display-actor-anim*) (not *display-process-anim*)) (or (= (-> (the-as collide-shape s5-4) process) *target*) (name= *display-actor-anim* (-> (the-as collide-shape s5-4) process name)) - (= (ppointer->process *display-process-anim*) (-> (the-as collide-shape s5-4) process)) - ) - ) - (debug-draw (the-as collide-shape s5-4)) - ) - ) + (= (ppointer->process *display-process-anim*) (-> (the-as collide-shape s5-4) process)))) + (debug-draw (the-as collide-shape s5-4)))) (set! v1-49 gp-4) *collide-hit-by-others-list* - (set! gp-4 (-> gp-4 next0)) - ) - ) - ) - ) + (set! gp-4 (-> gp-4 next0)))))) 0 - (none) - ) - + (none)) -(defmethod debug-draw collide-shape ((obj collide-shape)) +(defmethod debug-draw ((obj collide-shape)) "Draw a collide shape" - (if (sphere-in-view-frustum? (the-as sphere (-> obj root-prim prim-core))) - (debug-draw-world-sphere (-> obj root-prim)) - ) - (none) - ) + (if (sphere-in-view-frustum? (the-as sphere (-> obj root-prim prim-core))) (debug-draw-world-sphere (-> obj root-prim))) + (none)) (define *col-timer* (new 'global 'stopwatch)) @@ -2130,22 +1501,19 @@ (format *stdcon* " frame ~F ms~%" (* 1000.0 (stopwatch-elapsed-seconds *frame-timer*))) (stopwatch-init *col-timer*) (stopwatch-init *frame-timer*) - (stopwatch-begin *frame-timer*) - ) - ) + (stopwatch-begin *frame-timer*))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; transform spheres by joints ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod update-transforms! collide-shape ((obj collide-shape)) +(defmethod update-transforms! ((obj collide-shape)) "Update all transforms for this shape. After this is called, you can use the world-spheres." (update-transforms! (-> obj root-prim) (-> obj process)) - #f - ) + #f) -(defmethod update-transforms! collide-shape-prim ((obj collide-shape-prim) (arg0 process-drawable)) +(defmethod update-transforms! ((obj collide-shape-prim) (arg0 process-drawable)) "Update our world sphere, and our children's world sphere's too." (local-vars (a0-2 float) (a0-4 float) (a0-6 float)) (rlet ((acc :class vf) @@ -2155,14 +1523,11 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (let ((a1-1 (-> arg0 node-list)) (v1-0 (-> obj cshape)) - (a0-1 (-> obj transform-index)) - ) - + (a0-1 (-> obj transform-index))) (cond ((nonzero? a1-1) (cond @@ -2175,208 +1540,141 @@ (.div.vf Q vf0 vf5 :fsf #b11 :ftf #b11) (.lvf vf3 (&-> v1-4 vector 1 quad)) (.add.mul.x.vf acc vf2 vf1 acc) - (.lvf vf4 (&-> v1-4 vector 2 quad)) - ) + (.lvf vf4 (&-> v1-4 vector 2 quad))) (.add.mul.y.vf acc vf3 vf1 acc) (.add.mul.z.vf vf1 vf4 vf1 acc :mask #b111) (.mul.vf vf1 vf1 Q :mask #b111) (.svf (&-> obj prim-core world-sphere quad) vf1) - (.mov a0-2 vf1) - ) + (.mov a0-2 vf1)) (else - (when (= a0-1 -2) - (.lvf vf1 (&-> obj local-sphere quad)) - (.lvf vf2 (&-> v1-0 trans quad)) - (.add.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> obj prim-core world-sphere quad) vf1) - (.mov a0-4 vf1) - ) - ) - ) - ) + (when (= a0-1 -2) + (.lvf vf1 (&-> obj local-sphere quad)) + (.lvf vf2 (&-> v1-0 trans quad)) + (.add.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> obj prim-core world-sphere quad) vf1) + (.mov a0-4 vf1))))) (else - (when (!= a0-1 -1) - (.lvf vf1 (&-> obj local-sphere quad)) - (.lvf vf2 (&-> v1-0 trans quad)) - (.add.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> obj prim-core world-sphere quad) vf1) - (.mov a0-6 vf1) - ) - ) - ) - ) + (when (!= a0-1 -1) + (.lvf vf1 (&-> obj local-sphere quad)) + (.lvf vf2 (&-> v1-0 trans quad)) + (.add.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> obj prim-core world-sphere quad) vf1) + (.mov a0-6 vf1))))) (when (= (-> obj type) collide-shape-prim-group) (countdown (s4-0 (-> (the-as collide-shape-prim-group obj) num-prims)) - (update-transforms! (-> (the-as collide-shape-prim-group obj) prims s4-0) arg0) - ) - #f - ) - ) - ) + (update-transforms! (-> (the-as collide-shape-prim-group obj) prims s4-0) arg0)) + #f))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; move by vector, move to point ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod move-by-vector! collide-shape ((obj collide-shape) (arg0 vector)) +(defmethod move-by-vector! ((obj collide-shape) (arg0 vector)) "Adjust our position by the given vector" (vector+! (-> obj trans) (-> obj trans) arg0) (move-by-vector! (-> obj root-prim) arg0) - (none) - ) + (none)) -(defmethod move-by-vector! collide-shape-prim ((obj collide-shape-prim) (arg0 vector)) +(defmethod move-by-vector! ((obj collide-shape-prim) (arg0 vector)) "Adjust our position by the given vector" (vector+! (the-as vector (-> obj prim-core)) (the-as vector (-> obj prim-core)) arg0) (set! (-> obj prim-core world-sphere w) (-> obj local-sphere w)) - (none) - ) + (none)) -(defmethod move-by-vector! collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 vector)) +(defmethod move-by-vector! ((obj collide-shape-prim-group) (arg0 vector)) "Adjust our position by the given vector" (vector+! (the-as vector (-> obj prim-core)) (the-as vector (-> obj prim-core)) arg0) (set! (-> obj prim-core world-sphere w) (-> obj local-sphere w)) (countdown (s4-0 (-> obj num-prims)) (let ((a0-2 (-> obj prims s4-0))) (cond - ((= (-> a0-2 type) collide-shape-prim-group) - (move-by-vector! a0-2 arg0) - ) + ((= (-> a0-2 type) collide-shape-prim-group) (move-by-vector! a0-2 arg0)) (else - (vector+! (the-as vector (-> a0-2 prim-core)) (the-as vector (-> a0-2 prim-core)) arg0) - (set! (-> a0-2 prim-core world-sphere w) (-> a0-2 local-sphere w)) - ) - ) - ) - ) - (none) - ) + (vector+! (the-as vector (-> a0-2 prim-core)) (the-as vector (-> a0-2 prim-core)) arg0) + (set! (-> a0-2 prim-core world-sphere w) (-> a0-2 local-sphere w)))))) + (none)) -(defmethod move-to-point! collide-shape ((obj collide-shape) (arg0 vector)) +(defmethod move-to-point! ((obj collide-shape) (arg0 vector)) "Move us to exactly the given position." - (let ((v1-0 (new 'stack-no-clear 'vector))) - (vector-! v1-0 arg0 (-> obj trans)) - (move-by-vector! obj v1-0) - ) - (none) - ) + (let ((v1-0 (new 'stack-no-clear 'vector))) (vector-! v1-0 arg0 (-> obj trans)) (move-by-vector! obj v1-0)) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; construction functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod set-root-prim! collide-shape ((obj collide-shape) (arg0 collide-shape-prim)) +(defmethod set-root-prim! ((obj collide-shape) (arg0 collide-shape-prim)) (set! (-> obj root-prim) arg0) - arg0 - ) + arg0) -(defmethod set-collide-with! collide-shape-prim ((obj collide-shape-prim) (arg0 collide-kind)) +(defmethod set-collide-with! ((obj collide-shape-prim) (arg0 collide-kind)) (set! (-> obj collide-with) arg0) 0 - (none) - ) + (none)) -(defmethod set-collide-with! collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-kind)) +(defmethod set-collide-with! ((obj collide-shape-prim-group) (arg0 collide-kind)) (set! (-> obj collide-with) arg0) (dotimes (s4-0 (-> obj num-prims)) - (set-collide-with! (-> obj prims s4-0) arg0) - ) + (set-collide-with! (-> obj prims s4-0) arg0)) 0 - (none) - ) + (none)) -(defmethod set-collide-as! collide-shape-prim ((obj collide-shape-prim) (arg0 collide-kind)) +(defmethod set-collide-as! ((obj collide-shape-prim) (arg0 collide-kind)) (set! (-> obj prim-core collide-as) arg0) 0 - (none) - ) + (none)) -(defmethod set-collide-as! collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-kind)) +(defmethod set-collide-as! ((obj collide-shape-prim-group) (arg0 collide-kind)) (set! (-> obj prim-core collide-as) arg0) (dotimes (s4-0 (-> obj num-prims)) - (set-collide-as! (-> obj prims s4-0) arg0) - ) + (set-collide-as! (-> obj prims s4-0) arg0)) 0 - (none) - ) + (none)) -(defmethod set-root-prim-collide-with! collide-shape ((obj collide-shape) (arg0 collide-kind)) +(defmethod set-root-prim-collide-with! ((obj collide-shape) (arg0 collide-kind)) (set-collide-with! (-> obj root-prim) arg0) 0 - (none) - ) + (none)) -(defmethod set-root-prim-collide-as! collide-shape ((obj collide-shape) (arg0 collide-kind)) +(defmethod set-root-prim-collide-as! ((obj collide-shape) (arg0 collide-kind)) (set-collide-as! (-> obj root-prim) arg0) 0 - (none) - ) + (none)) -(defmethod append-prim collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-shape-prim)) +(defmethod append-prim ((obj collide-shape-prim-group) (arg0 collide-shape-prim)) (let ((v1-0 (-> obj num-prims))) (cond - ((>= v1-0 (-> obj allocated-prims)) - (format 0 "collide-shape-prim-group::append-prim : Exceeded max # of prims!~%") - ) - (else - (set! (-> obj prims v1-0) arg0) - (set! (-> obj num-prims) (+ v1-0 1)) - ) - ) - ) - (none) - ) + ((>= v1-0 (-> obj allocated-prims)) (format 0 "collide-shape-prim-group::append-prim : Exceeded max # of prims!~%")) + (else (set! (-> obj prims v1-0) arg0) (set! (-> obj num-prims) (+ v1-0 1))))) + (none)) -(defmethod find-collision-meshes collide-shape ((obj collide-shape)) +(defmethod find-collision-meshes ((obj collide-shape)) (let ((s5-0 0)) (let ((v1-1 (-> obj process draw))) (when (and (nonzero? v1-1) (-> v1-1 jgeo)) (let ((a1-1 (res-lump-struct (-> v1-1 jgeo extra) 'collide-mesh-group structure))) - (if a1-1 - (set! s5-0 (num-mesh (-> obj root-prim) (the-as collide-shape-prim a1-1))) - ) - ) - ) - ) - (if (nonzero? s5-0) - (format 0 "ERROR: Failed to find collision meshes for ~D prim(s) in ~A!~%" s5-0 (-> obj process name)) - ) - ) - (update-transforms! obj) - ) + (if a1-1 (set! s5-0 (num-mesh (-> obj root-prim) (the-as collide-shape-prim a1-1))))))) + (if (nonzero? s5-0) (format 0 "ERROR: Failed to find collision meshes for ~D prim(s) in ~A!~%" s5-0 (-> obj process name)))) + (update-transforms! obj)) -(defmethod num-mesh collide-shape-prim ((obj collide-shape-prim) (arg0 collide-shape-prim)) +(defmethod num-mesh ((obj collide-shape-prim) (arg0 collide-shape-prim)) (local-vars (v0-0 int)) (return 0) - v0-0 - ) + v0-0) -(defmethod num-mesh collide-shape-prim-mesh ((obj collide-shape-prim-mesh) (arg0 collide-shape-prim)) +(defmethod num-mesh ((obj collide-shape-prim-mesh) (arg0 collide-shape-prim)) (let ((s4-0 (-> obj mesh-id))) (cond ((and (>= s4-0 0) (< s4-0 (length arg0))) (set! (-> obj mesh) (the-as collide-mesh (-> arg0 prim-core world-sphere data s4-0))) - (return 0) - ) - (else - (set! (-> obj mesh) #f) - (return 1) - ) - ) - ) - (the-as int 0) - ) - -(defmethod num-mesh collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-shape-prim)) - (let ((gp-0 0)) - (countdown (s3-0 (-> obj num-prims)) - (+! gp-0 (num-mesh (-> obj prims s3-0) arg0)) - ) - gp-0 - ) - ) + (return 0)) + (else (set! (-> obj mesh) #f) (return 1)))) + (the-as int 0)) + +(defmethod num-mesh ((obj collide-shape-prim-group) (arg0 collide-shape-prim)) + (let ((gp-0 0)) (countdown (s3-0 (-> obj num-prims)) (+! gp-0 (num-mesh (-> obj prims s3-0) arg0))) gp-0)) -(defmethod change-mesh collide-shape-prim-mesh ((obj collide-shape-prim-mesh) (arg0 int)) +(defmethod change-mesh ((obj collide-shape-prim-mesh) (arg0 int)) "Change our mesh to the given mesh ID." (when (!= (-> obj mesh-id) arg0) ;; only if we don't have the right one. (let ((v1-3 (-> obj cshape process draw))) @@ -2390,131 +1688,82 @@ (set! (-> obj mesh-id) arg0) ;; kill the collide mesh cache. (let* ((v1-11 *collide-mesh-cache*) - (a0-6 (-> v1-11 id)) - ) + (a0-6 (-> v1-11 id))) (set! (-> v1-11 used-size) (the-as uint 0)) (let ((v0-5 (the-as int (+ a0-6 1)))) (b! (zero? (the-as uint v0-5)) cfg-12 :likely-delay (set! v0-5 1)) (label cfg-12) - (set! (-> v1-11 id) (the-as uint v0-5)) - ) - ) - ) - (else - (format 0 "ERROR: ~%~%collide-shape-prim-mesh::change-mesh(): Failed to find collision mesh!~%") - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (set! (-> v1-11 id) (the-as uint v0-5))))) + (else (format 0 "ERROR: ~%~%collide-shape-prim-mesh::change-mesh(): Failed to find collision mesh!~%")))))))) + (none)) -(defmethod init! collide-shape-intersect ((obj collide-shape-intersect) (arg0 vector)) +(defmethod init! ((obj collide-shape-intersect) (arg0 vector)) "Initialize the intersection in the given direction." (set! (-> obj move-vec quad) (-> arg0 quad)) (set! (-> obj best-u) -100000000.0) (set! (-> obj best-from-prim) #f) (set! (-> obj best-to-prim) #f) - #f - ) + #f) -(defmethod debug-draw-world-sphere collide-shape-prim ((obj collide-shape-prim)) +(defmethod debug-draw-world-sphere ((obj collide-shape-prim)) "Draw our sphere" - (add-debug-sphere - #t - (bucket-id debug) - (the-as vector (-> obj prim-core)) - (-> obj local-sphere w) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x40) - ) - ) + (add-debug-sphere #t + (bucket-id debug) + (the-as vector (-> obj prim-core)) + (-> obj local-sphere w) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x40))) -(defmethod debug-draw-world-sphere collide-shape-prim-sphere ((obj collide-shape-prim-sphere)) +(defmethod debug-draw-world-sphere ((obj collide-shape-prim-sphere)) "Draw our sphere" - (add-debug-sphere - #t - (bucket-id debug) - (the-as vector (-> obj prim-core)) - (-> obj local-sphere w) - (cond - ((and (zero? (-> obj prim-core collide-as)) (zero? (-> obj collide-with))) - (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40) - ) - ((logtest? (-> obj prim-core action) (collide-action solid)) - (new 'static 'rgba :r #xff :g #xff :a #x40) - ) - (else - (new 'static 'rgba :r #xff :g #x80 :a #x40) - ) - ) - ) - ) - -(defmethod debug-draw-world-sphere collide-shape-prim-mesh ((obj collide-shape-prim-mesh)) + (add-debug-sphere #t + (bucket-id debug) + (the-as vector (-> obj prim-core)) + (-> obj local-sphere w) + (cond + ((and (zero? (-> obj prim-core collide-as)) (zero? (-> obj collide-with))) + (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x40)) + ((logtest? (-> obj prim-core action) (collide-action solid)) (new 'static 'rgba :r #xff :g #xff :a #x40)) + (else (new 'static 'rgba :r #xff :g #x80 :a #x40))))) + +(defmethod debug-draw-world-sphere ((obj collide-shape-prim-mesh)) "Draw our sphere" - (add-debug-sphere - #t - (bucket-id debug) - (the-as vector (-> obj prim-core)) - (-> obj local-sphere w) - (new 'static 'rgba :b #xff :a #x40) - ) - ) + (add-debug-sphere #t + (bucket-id debug) + (the-as vector (-> obj prim-core)) + (-> obj local-sphere w) + (new 'static 'rgba :b #xff :a #x40))) -(defmethod debug-draw-world-sphere collide-shape-prim-group ((obj collide-shape-prim-group)) +(defmethod debug-draw-world-sphere ((obj collide-shape-prim-group)) "Draw our sphere" - (add-debug-sphere - #t - (bucket-id debug) - (the-as vector (-> obj prim-core)) - (-> obj local-sphere w) - (new 'static 'rgba :g #xff :a #x10) - ) + (add-debug-sphere #t + (bucket-id debug) + (the-as vector (-> obj prim-core)) + (-> obj local-sphere w) + (new 'static 'rgba :g #xff :a #x10)) (countdown (s5-0 (-> obj num-prims)) - (debug-draw-world-sphere (-> obj prims s5-0)) - ) - #f - ) + (debug-draw-world-sphere (-> obj prims s5-0))) + #f) -(defmethod do-push-aways! collide-shape ((obj collide-shape)) +(defmethod do-push-aways! ((obj collide-shape)) "This is the main function to call to respond" - (local-vars - (at-0 int) - (at-1 int) - (at-2 int) - (at-3 int) - (v1-20 int) - (v1-53 int) - (v1-85 int) - (v1-116 int) - ) + (local-vars (at-0 int) (at-1 int) (at-2 int) (at-3 int) (v1-20 int) (v1-53 int) (v1-85 int) (v1-116 int)) (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) - ;; kill the mesh cache (let* ((v1-0 *collide-mesh-cache*) - (a0-1 (-> v1-0 id)) - ) + (a0-1 (-> v1-0 id))) (set! (-> v1-0 used-size) (the-as uint 0)) (let ((a0-2 (the-as int (+ a0-1 1)))) (b! (zero? (the-as uint a0-2)) cfg-2 :likely-delay (set! a0-2 1)) (label cfg-2) - (set! (-> v1-0 id) (the-as uint a0-2)) - ) - ) - + (set! (-> v1-0 id) (the-as uint a0-2)))) ;; loop over everything! (let ((s5-0 (-> obj root-prim collide-with))) - ;; we collide with target, so check the player list. (when (logtest? s5-0 (collide-kind target)) (let ((v1-5 (-> *collide-player-list* alive-list next0))) @@ -2536,26 +1785,17 @@ (let ((s1-0 (new 'stack-no-clear 'vector))) (let ((v1-19 (new 'stack-no-clear 'vector))) (set! (-> v1-19 quad) (-> s3-0 trans quad)) - ;; this is... a bit of a hack. ;; this adjusts our collision to be within 0.7 - 1.4m of our base. ;; (note, this only applies for intermediate iterations of this loop) (let* ((f1-2 (+ 2867.2 (-> v1-19 y))) ;; f1-2 = 0.7 m above use - (f2-0 (+ 5734.4 f1-2)) ;; 1.4m above us - (f0-3 (-> s2-0 best-from-tri intersect y)) - ) + (f2-0 (+ 5734.4 f1-2)) ;; 1.4m above us + (f0-3 (-> s2-0 best-from-tri intersect y))) (cond - ((< f0-3 f1-2) - (set! f0-3 f1-2) - ) - ((< f2-0 f0-3) - (set! f0-3 f2-0) - ) - ) - (set! (-> v1-19 y) f0-3) - ) - (.lvf vf4 (&-> v1-19 quad)) - ) + ((< f0-3 f1-2) (set! f0-3 f1-2)) + ((< f2-0 f0-3) (set! f0-3 f2-0))) + (set! (-> v1-19 y) f0-3)) + (.lvf vf4 (&-> v1-19 quad))) (.lvf vf3 (&-> s2-0 best-from-tri intersect quad)) (.lvf vf5 (&-> s2-0 best-from-tri normal quad)) (.sub.vf vf2 vf4 vf3) @@ -2570,40 +1810,21 @@ (vector-float*! s1-0 s1-0 (- (-> s2-0 best-dist))) (let ((v1-23 s1-0)) (.lvf vf1 (&-> s1-0 quad)) - (let ((f0-6 (-> *display* frames-per-second))) - (.mov at-0 f0-6) - ) + (let ((f0-6 (-> *display* frames-per-second))) (.mov at-0 f0-6)) (.mov vf2 at-0) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-23 quad) vf1) - ) + (.svf (&-> v1-23 quad) vf1)) (let ((s0-0 (-> s3-0 status))) ;; step. (integrate-and-collide! s3-0 s1-0) - (set! (-> s3-0 status) s0-0) - ) - ) - (+! s5-1 -1) - ) - ) - (set! s5-0 (-> obj root-prim collide-with)) - ) - ) - ) - ) - ) + (set! (-> s3-0 status) s0-0))) + (+! s5-1 -1))) + (set! s5-0 (-> obj root-prim collide-with))))))) (set! v1-5 s4-0) *collide-player-list* - (set! s4-0 (-> s4-0 next0)) - ) - ) - ) - ) - - + (set! s4-0 (-> s4-0 next0)))))) (when (logtest? s5-0 (collide-kind cak-1 cak-2 cak-3)) - (when (logtest? s5-0 (collide-kind cak-1)) (let ((v1-38 (-> *collide-hit-by-player-list* alive-list next0))) *collide-hit-by-player-list* @@ -2622,20 +1843,12 @@ (set! (-> v1-52 quad) (-> s3-1 trans quad)) (let* ((f1-5 (+ 2867.2 (-> v1-52 y))) (f2-1 (+ 5734.4 f1-5)) - (f0-10 (-> s2-1 best-from-tri intersect y)) - ) + (f0-10 (-> s2-1 best-from-tri intersect y))) (cond - ((< f0-10 f1-5) - (set! f0-10 f1-5) - ) - ((< f2-1 f0-10) - (set! f0-10 f2-1) - ) - ) - (set! (-> v1-52 y) f0-10) - ) - (.lvf vf4 (&-> v1-52 quad)) - ) + ((< f0-10 f1-5) (set! f0-10 f1-5)) + ((< f2-1 f0-10) (set! f0-10 f2-1))) + (set! (-> v1-52 y) f0-10)) + (.lvf vf4 (&-> v1-52 quad))) (.lvf vf3 (&-> s2-1 best-from-tri intersect quad)) (.lvf vf5 (&-> s2-1 best-from-tri normal quad)) (.sub.vf vf2 vf4 vf3) @@ -2650,37 +1863,17 @@ (vector-float*! s1-1 s1-1 (- (-> s2-1 best-dist))) (let ((v1-56 s1-1)) (.lvf vf1 (&-> s1-1 quad)) - (let ((f0-13 (-> *display* frames-per-second))) - (.mov at-1 f0-13) - ) + (let ((f0-13 (-> *display* frames-per-second))) (.mov at-1 f0-13)) (.mov vf2 at-1) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-56 quad) vf1) - ) - (let ((s0-1 (-> s3-1 status))) - (integrate-and-collide! s3-1 s1-1) - (set! (-> s3-1 status) s0-1) - ) - ) - (+! s5-2 -1) - ) - ) - (set! s5-0 (-> obj root-prim collide-with)) - ) - ) - ) - ) - ) + (.svf (&-> v1-56 quad) vf1)) + (let ((s0-1 (-> s3-1 status))) (integrate-and-collide! s3-1 s1-1) (set! (-> s3-1 status) s0-1))) + (+! s5-2 -1))) + (set! s5-0 (-> obj root-prim collide-with))))))) (set! v1-38 s4-1) *collide-hit-by-player-list* - (set! s4-1 (-> s4-1 next0)) - ) - ) - ) - ) - - + (set! s4-1 (-> s4-1 next0)))))) (when (logtest? s5-0 (collide-kind cak-2)) (let ((v1-70 (-> *collide-usually-hit-by-player-list* alive-list next0))) *collide-usually-hit-by-player-list* @@ -2699,20 +1892,12 @@ (set! (-> v1-84 quad) (-> s3-2 trans quad)) (let* ((f1-8 (+ 2867.2 (-> v1-84 y))) (f2-2 (+ 5734.4 f1-8)) - (f0-17 (-> s2-2 best-from-tri intersect y)) - ) + (f0-17 (-> s2-2 best-from-tri intersect y))) (cond - ((< f0-17 f1-8) - (set! f0-17 f1-8) - ) - ((< f2-2 f0-17) - (set! f0-17 f2-2) - ) - ) - (set! (-> v1-84 y) f0-17) - ) - (.lvf vf4 (&-> v1-84 quad)) - ) + ((< f0-17 f1-8) (set! f0-17 f1-8)) + ((< f2-2 f0-17) (set! f0-17 f2-2))) + (set! (-> v1-84 y) f0-17)) + (.lvf vf4 (&-> v1-84 quad))) (.lvf vf3 (&-> s2-2 best-from-tri intersect quad)) (.lvf vf5 (&-> s2-2 best-from-tri normal quad)) (.sub.vf vf2 vf4 vf3) @@ -2727,35 +1912,17 @@ (vector-float*! s1-2 s1-2 (- (-> s2-2 best-dist))) (let ((v1-88 s1-2)) (.lvf vf1 (&-> s1-2 quad)) - (let ((f0-20 (-> *display* frames-per-second))) - (.mov at-2 f0-20) - ) + (let ((f0-20 (-> *display* frames-per-second))) (.mov at-2 f0-20)) (.mov vf2 at-2) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-88 quad) vf1) - ) - (let ((s0-2 (-> s3-2 status))) - (integrate-and-collide! s3-2 s1-2) - (set! (-> s3-2 status) s0-2) - ) - ) - (+! s5-3 -1) - ) - ) - (set! s5-0 (-> obj root-prim collide-with)) - ) - ) - ) - ) - ) + (.svf (&-> v1-88 quad) vf1)) + (let ((s0-2 (-> s3-2 status))) (integrate-and-collide! s3-2 s1-2) (set! (-> s3-2 status) s0-2))) + (+! s5-3 -1))) + (set! s5-0 (-> obj root-prim collide-with))))))) (set! v1-70 s4-2) *collide-usually-hit-by-player-list* - (set! s4-2 (-> s4-2 next0)) - ) - ) - ) - ) + (set! s4-2 (-> s4-2 next0)))))) (when (logtest? s5-0 (collide-kind cak-3)) (let ((v1-101 (-> *collide-hit-by-others-list* alive-list next0))) *collide-hit-by-others-list* @@ -2774,20 +1941,12 @@ (set! (-> v1-115 quad) (-> s3-3 trans quad)) (let* ((f1-11 (+ 2867.2 (-> v1-115 y))) (f2-3 (+ 5734.4 f1-11)) - (f0-24 (-> s2-3 best-from-tri intersect y)) - ) + (f0-24 (-> s2-3 best-from-tri intersect y))) (cond - ((< f0-24 f1-11) - (set! f0-24 f1-11) - ) - ((< f2-3 f0-24) - (set! f0-24 f2-3) - ) - ) - (set! (-> v1-115 y) f0-24) - ) - (.lvf vf4 (&-> v1-115 quad)) - ) + ((< f0-24 f1-11) (set! f0-24 f1-11)) + ((< f2-3 f0-24) (set! f0-24 f2-3))) + (set! (-> v1-115 y) f0-24)) + (.lvf vf4 (&-> v1-115 quad))) (.lvf vf3 (&-> s2-3 best-from-tri intersect quad)) (.lvf vf5 (&-> s2-3 best-from-tri normal quad)) (.sub.vf vf2 vf4 vf3) @@ -2802,46 +1961,24 @@ (vector-float*! s1-3 s1-3 (- (-> s2-3 best-dist))) (let ((v1-119 s1-3)) (.lvf vf1 (&-> s1-3 quad)) - (let ((f0-27 (-> *display* frames-per-second))) - (.mov at-3 f0-27) - ) + (let ((f0-27 (-> *display* frames-per-second))) (.mov at-3 f0-27)) (.mov vf2 at-3) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-119 quad) vf1) - ) - (let ((s0-3 (-> s3-3 status))) - (integrate-and-collide! s3-3 s1-3) - (set! (-> s3-3 status) s0-3) - ) - ) - (+! s5-4 -1) - ) - ) - (set! s5-0 (-> obj root-prim collide-with)) - ) - ) - ) - ) - ) + (.svf (&-> v1-119 quad) vf1)) + (let ((s0-3 (-> s3-3 status))) (integrate-and-collide! s3-3 s1-3) (set! (-> s3-3 status) s0-3))) + (+! s5-4 -1))) + (set! s5-0 (-> obj root-prim collide-with))))))) (set! v1-101 s4-3) *collide-hit-by-others-list* - (set! s4-3 (-> s4-3 next0)) - ) - ) - ) - #f - ) - ) - ) - ) - ) + (set! s4-3 (-> s4-3 next0))))) + #f))))) ;;;;;;;;;;;;;;;;;;;;;;; ;; overlap test ;;;;;;;;;;;;;;;;;;;;;;; -(defmethod find-overlapping-shapes collide-shape ((obj collide-shape) (arg0 overlaps-others-params)) +(defmethod find-overlapping-shapes ((obj collide-shape) (arg0 overlaps-others-params)) (local-vars (v1-2 symbol) (v1-7 symbol) @@ -2863,26 +2000,21 @@ (a3-7 uint) (a3-9 float) (a3-10 uint) - (s2-0 symbol) - ) + (s2-0 symbol)) (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (let* ((v1-0 *collide-mesh-cache*) - (a0-1 (-> v1-0 id)) - ) + (a0-1 (-> v1-0 id))) (set! (-> v1-0 used-size) (the-as uint 0)) (let ((a0-2 (the-as int (+ a0-1 1)))) (b! (zero? (the-as uint a0-2)) cfg-2 :likely-delay (set! a0-2 1)) (label cfg-2) - (set! (-> v1-0 id) (the-as uint a0-2)) - ) - ) + (set! (-> v1-0 id) (the-as uint a0-2)))) (let ((s3-0 (the-as object #f))) (let ((s4-0 (-> obj root-prim))) (.lvf vf1 (&-> s4-0 prim-core world-sphere quad)) @@ -2893,8 +2025,7 @@ (let ((s1-0 (-> a0-6 next0))) (while (!= a0-6 (-> *collide-player-list* alive-list-end)) (let* ((a0-7 (the-as collide-shape-moving (-> (the-as connection a0-6) param1))) - (a2-0 (-> a0-7 root-prim)) - ) + (a2-0 (-> a0-7 root-prim))) (when (logtest? v1-1 (-> a2-0 prim-core collide-as)) (.lvf vf2 (&-> a2-0 prim-core world-sphere quad)) (.sub.vf vf3 vf1 vf2) @@ -2911,10 +2042,7 @@ (.mov a3-0 vf3) (let ((a0-8 (-> a0-7 process))) (b! (< f0-0 a3-0) cfg-13 :delay (set! a3-1 (-> arg0 options))) - (b! (= a1-6 a0-8) cfg-13 :delay (set! a0-9 (logand a3-1 2))) - ) - ) - ) + (b! (= a1-6 a0-8) cfg-13 :delay (set! a0-9 (logand a3-1 2)))))) (b! (zero? a0-9) cfg-10 :delay (set! a0-10 (-> arg0 tlist))) (b! (= a0-10 #f) cfg-11 :delay (set! v1-2 #t)) (set! s2-0 v1-2) @@ -2927,15 +2055,10 @@ (b! (= s2-0 #f) cfg-13 :delay (set! v1-1 (-> s4-0 collide-with))) (b! (= (-> arg0 tlist) #f) cfg-63 :delay (set! s3-0 0)) (label cfg-13) - 0 - ) - ) + 0)) (set! a0-6 s1-0) *collide-player-list* - (set! s1-0 (-> s1-0 next0)) - ) - ) - ) + (set! s1-0 (-> s1-0 next0))))) (label cfg-17) (when (logtest? v1-1 (collide-kind cak-1 cak-2 cak-3)) (when (logtest? v1-1 (collide-kind cak-1)) @@ -2944,8 +2067,7 @@ (let ((s1-1 (-> a0-21 next0))) (while (!= a0-21 (-> *collide-hit-by-player-list* alive-list-end)) (let* ((a0-22 (the-as collide-shape-moving (-> (the-as connection a0-21) param1))) - (a2-1 (-> a0-22 root-prim)) - ) + (a2-1 (-> a0-22 root-prim))) (when (logtest? v1-1 (-> a2-1 prim-core collide-as)) (.lvf vf2 (&-> a2-1 prim-core world-sphere quad)) (.sub.vf vf3 vf1 vf2) @@ -2962,10 +2084,7 @@ (.mov a3-3 vf3) (let ((a0-23 (-> a0-22 process))) (b! (< f0-1 a3-3) cfg-29 :delay (set! a3-4 (-> arg0 options))) - (b! (= a1-18 a0-23) cfg-29 :delay (set! a0-24 (logand a3-4 2))) - ) - ) - ) + (b! (= a1-18 a0-23) cfg-29 :delay (set! a0-24 (logand a3-4 2)))))) (b! (zero? a0-24) cfg-26 :delay (set! a0-25 (-> arg0 tlist))) (b! (= a0-25 #f) cfg-27 :delay (set! v1-7 #t)) (set! s2-0 v1-7) @@ -2978,24 +2097,17 @@ (b! (= s2-0 #f) cfg-29 :delay (set! v1-1 (-> s4-0 collide-with))) (b! (= (-> arg0 tlist) #f) cfg-63 :delay (set! s3-0 0)) (label cfg-29) - 0 - ) - ) + 0)) (set! a0-21 s1-1) *collide-hit-by-player-list* - (set! s1-1 (-> s1-1 next0)) - ) - ) - ) - ) + (set! s1-1 (-> s1-1 next0)))))) (when (logtest? v1-1 (collide-kind cak-2)) (let ((a0-34 (-> *collide-usually-hit-by-player-list* alive-list next0))) *collide-usually-hit-by-player-list* (let ((s1-2 (-> a0-34 next0))) (while (!= a0-34 (-> *collide-usually-hit-by-player-list* alive-list-end)) (let* ((a0-35 (the-as collide-shape-moving (-> (the-as connection a0-34) param1))) - (a2-2 (-> a0-35 root-prim)) - ) + (a2-2 (-> a0-35 root-prim))) (when (logtest? v1-1 (-> a2-2 prim-core collide-as)) (.lvf vf2 (&-> a2-2 prim-core world-sphere quad)) (.sub.vf vf3 vf1 vf2) @@ -3012,10 +2124,7 @@ (.mov a3-6 vf3) (let ((a0-36 (-> a0-35 process))) (b! (< f0-2 a3-6) cfg-44 :delay (set! a3-7 (-> arg0 options))) - (b! (= a1-30 a0-36) cfg-44 :delay (set! a0-37 (logand a3-7 2))) - ) - ) - ) + (b! (= a1-30 a0-36) cfg-44 :delay (set! a0-37 (logand a3-7 2)))))) (b! (zero? a0-37) cfg-41 :delay (set! a0-38 (-> arg0 tlist))) (b! (= a0-38 #f) cfg-42 :delay (set! v1-12 #t)) (set! s2-0 v1-12) @@ -3028,24 +2137,17 @@ (b! (= s2-0 #f) cfg-44 :delay (set! v1-1 (-> s4-0 collide-with))) (b! (= (-> arg0 tlist) #f) cfg-63 :delay (set! s3-0 0)) (label cfg-44) - 0 - ) - ) + 0)) (set! a0-34 s1-2) *collide-usually-hit-by-player-list* - (set! s1-2 (-> s1-2 next0)) - ) - ) - ) - ) + (set! s1-2 (-> s1-2 next0)))))) (when (logtest? v1-1 (collide-kind cak-3)) (let ((a0-47 (-> *collide-hit-by-others-list* alive-list next0))) *collide-hit-by-others-list* (let ((s1-3 (-> a0-47 next0))) (while (!= a0-47 (-> *collide-hit-by-others-list* alive-list-end)) (let* ((a0-48 (the-as collide-shape-moving (-> (the-as connection a0-47) param1))) - (a2-3 (-> a0-48 root-prim)) - ) + (a2-3 (-> a0-48 root-prim))) (when (logtest? v1-1 (-> a2-3 prim-core collide-as)) (.lvf vf2 (&-> a2-3 prim-core world-sphere quad)) (.sub.vf vf3 vf1 vf2) @@ -3062,10 +2164,7 @@ (.mov a3-9 vf3) (let ((a0-49 (-> a0-48 process))) (b! (< f0-3 a3-9) cfg-59 :delay (set! a3-10 (-> arg0 options))) - (b! (= a1-42 a0-49) cfg-59 :delay (set! a0-50 (logand a3-10 2))) - ) - ) - ) + (b! (= a1-42 a0-49) cfg-59 :delay (set! a0-50 (logand a3-10 2)))))) (b! (zero? a0-50) cfg-56 :delay (set! a0-51 (-> arg0 tlist))) (b! (= a0-51 #f) cfg-57 :delay (set! v1-17 #t)) (set! s2-0 v1-17) @@ -3078,48 +2177,32 @@ (b! (= s2-0 #f) cfg-59 :delay (set! v1-1 (-> s4-0 collide-with))) (b! (= (-> arg0 tlist) #f) cfg-63 :delay (set! s3-0 0)) (label cfg-59) - 0 - ) - ) + 0)) (set! a0-47 s1-3) *collide-hit-by-others-list* - (set! s1-3 (-> s1-3 next0)) - ) - ) - ) - ) - ) - ) - ) + (set! s1-3 (-> s1-3 next0))))))))) (label cfg-63) (b! (= (the-as int s3-0) #f) cfg-65 :delay (nop!)) (set! s3-0 #t) (label cfg-65) - (the-as symbol s3-0) - ) - ) - ) + (the-as symbol s3-0)))) -(defmethod overlaps-others-test collide-shape-prim ((obj collide-shape-prim) (arg0 overlaps-others-params) (arg1 collide-shape-prim)) +(defmethod overlaps-others-test ((obj collide-shape-prim) (arg0 overlaps-others-params) (arg1 collide-shape-prim)) (format 0 "ERROR: Unsupported call to collide-shape-prim::overlaps-others-test!~%") - #f - ) - + #f) -(defmethod overlaps-others-test collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 overlaps-others-params) (arg1 collide-shape-prim)) +(defmethod overlaps-others-test ((obj collide-shape-prim-group) (arg0 overlaps-others-params) (arg1 collide-shape-prim)) (local-vars (a1-3 float)) (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (let ((s4-0 (-> obj prims)) (s3-0 (-> obj num-prims-u)) - (s2-0 (the-as object #f)) - ) + (s2-0 (the-as object #f))) (let ((v1-0 (-> arg1 prim-core collide-as))) (nop!) (.lvf vf1 (&-> arg1 prim-core world-sphere quad)) @@ -3130,8 +2213,7 @@ (set! s4-0 (&-> s4-0 1)) (let ((a1-2 (logand (-> a0-1 collide-with) v1-0))) (.lvf vf2 (&-> a0-1 prim-core world-sphere quad)) - (b! (zero? a1-2) cfg-1 :delay (.sub.vf vf3 vf2 vf1)) - ) + (b! (zero? a1-2) cfg-1 :delay (.sub.vf vf3 vf2 vf1))) (.add.w.vf vf4 vf2 vf1 :mask #b1000) (.mul.vf vf3 vf3 vf3 :mask #b111) (.mul.w.vf vf4 vf4 vf4 :mask #b1000) @@ -3139,29 +2221,18 @@ (.add.mul.y.vf acc vf0 vf3 acc :mask #b1000) (.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000) (.sub.w.vf vf3 vf3 vf4 :mask #b1000) - (let ((f0-0 0.0)) - (.add.w.vf vf3 vf0 vf3 :mask #b1) - (.mov a1-3 vf3) - (b! (< f0-0 a1-3) cfg-1) - ) + (let ((f0-0 0.0)) (.add.w.vf vf3 vf0 vf3 :mask #b1) (.mov a1-3 vf3) (b! (< f0-0 a1-3) cfg-1)) (let ((a0-2 (overlaps-others-test a0-1 arg0 arg1))) (set! v1-0 (-> arg1 prim-core collide-as)) - (b! (= a0-2 #f) cfg-1 :delay (.lvf vf1 (&-> arg1 prim-core world-sphere quad))) - ) - ) - ) + (b! (= a0-2 #f) cfg-1 :delay (.lvf vf1 (&-> arg1 prim-core world-sphere quad)))))) (b! (!= (-> arg0 tlist) #f) cfg-1 :delay (set! s2-0 0)) (label cfg-6) (b! (= (the-as int s2-0) #f) cfg-8 :delay (nop!)) (set! s2-0 #t) (label cfg-8) - (the-as symbol s2-0) - ) - ) - ) - + (the-as symbol s2-0)))) -(defmethod overlaps-others-group collide-shape-prim ((obj collide-shape-prim) (arg0 overlaps-others-params) (arg1 collide-shape-prim-group)) +(defmethod overlaps-others-group ((obj collide-shape-prim) (arg0 overlaps-others-params) (arg1 collide-shape-prim-group)) "Overlap, from group." (local-vars (a0-3 float)) (rlet ((acc :class vf) @@ -3169,13 +2240,11 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (let ((s4-0 (-> arg1 prims)) (s3-0 (-> arg1 num-prims-u)) - (s2-0 (the-as object #f)) - ) + (s2-0 (the-as object #f))) (let ((v1-0 (-> obj collide-with))) (nop!) (.lvf vf2 (&-> obj prim-core world-sphere quad)) @@ -3186,8 +2255,7 @@ (set! s4-0 (&-> s4-0 1)) (let ((a0-2 (logand v1-0 (-> a2-1 prim-core collide-as)))) (.lvf vf1 (&-> a2-1 prim-core world-sphere quad)) - (b! (zero? a0-2) cfg-1 :delay (.sub.vf vf3 vf2 vf1)) - ) + (b! (zero? a0-2) cfg-1 :delay (.sub.vf vf3 vf2 vf1))) (.add.w.vf vf4 vf2 vf1 :mask #b1000) (.mul.vf vf3 vf3 vf3 :mask #b111) (.mul.w.vf vf4 vf4 vf4 :mask #b1000) @@ -3195,28 +2263,18 @@ (.add.mul.y.vf acc vf0 vf3 acc :mask #b1000) (.add.mul.z.vf vf3 vf0 vf3 acc :mask #b1000) (.sub.w.vf vf3 vf3 vf4 :mask #b1000) - (let ((f0-0 0.0)) - (.add.w.vf vf3 vf0 vf3 :mask #b1) - (.mov a0-3 vf3) - (b! (< f0-0 a0-3) cfg-1) - ) + (let ((f0-0 0.0)) (.add.w.vf vf3 vf0 vf3 :mask #b1) (.mov a0-3 vf3) (b! (< f0-0 a0-3) cfg-1)) (let ((a0-5 (overlaps-others-test obj arg0 a2-1))) (set! v1-0 (-> obj collide-with)) - (b! (= a0-5 #f) cfg-1 :delay (.lvf vf2 (&-> obj prim-core world-sphere quad))) - ) - ) - ) + (b! (= a0-5 #f) cfg-1 :delay (.lvf vf2 (&-> obj prim-core world-sphere quad)))))) (b! (!= (-> arg0 tlist) #f) cfg-1 :delay (set! s2-0 0)) (label cfg-6) (b! (= (the-as int s2-0) #f) cfg-8 :delay (nop!)) (set! s2-0 #t) (label cfg-8) - (the-as symbol s2-0) - ) - ) - ) + (the-as symbol s2-0)))) -(defmethod overlaps-others-test collide-shape-prim-sphere ((obj collide-shape-prim-sphere) (arg0 overlaps-others-params) (arg1 collide-shape-prim)) +(defmethod overlaps-others-test ((obj collide-shape-prim-sphere) (arg0 overlaps-others-params) (arg1 collide-shape-prim)) (local-vars (v1-26 collide-action)) (let ((v1-0 (-> arg1 prim-core prim-type))) (b! (nonzero? v1-0) cfg-2 :delay (nop!)) @@ -3229,46 +2287,31 @@ (let ((s3-0 (-> (the-as collide-shape-prim-mesh arg1) mesh))) (b! (not s3-0) cfg-13) (let ((s2-0 *collide-mesh-cache*)) - (let ((v1-4 (-> s2-0 id))) - (b! (= (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-id) v1-4) cfg-10) - ) + (let ((v1-4 (-> s2-0 id))) (b! (= (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-id) v1-4) cfg-10)) (let ((v1-8 (allocate! s2-0 (* 96 (-> s3-0 num-tris))))) (b! (not v1-8) cfg-8 :delay (nop!)) - (set! (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-tris) - (the-as (inline-array collide-mesh-cache-tri) v1-8) - ) - ) - (set! (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-id) (-> s2-0 id)) - ) - (populate-cache! - s3-0 - (the-as collide-mesh-cache-tri (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-tris)) - (-> (the-as collide-shape-prim-mesh arg1) - cshape - process - node-list - data - (-> (the-as collide-shape-prim-mesh arg1) transform-index) - bone - transform - ) - ) + (set! (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-tris) (the-as (inline-array collide-mesh-cache-tri) v1-8))) + (set! (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-id) (-> s2-0 id))) + (populate-cache! s3-0 + (the-as collide-mesh-cache-tri (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-tris)) + (-> (the-as collide-shape-prim-mesh arg1) + cshape + process + node-list + data + (-> (the-as collide-shape-prim-mesh arg1) transform-index) + bone + transform)) (b! #t cfg-10 :delay (nop!)) (label cfg-8) (set! v0-1 #f) (b! #t cfg-20 :delay (nop!)) (the-as none 0) (label cfg-10) - (b! - (not (overlap-test - s3-0 - (the-as collide-mesh-cache-tri (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-tris)) - (the-as vector (-> obj prim-core)) - ) - ) - cfg-13 - ) - ) + (b! (not (overlap-test s3-0 + (the-as collide-mesh-cache-tri (-> (the-as collide-shape-prim-mesh arg1) mesh-cache-tris)) + (the-as vector (-> obj prim-core)))) + cfg-13)) (b! #t cfg-14 :delay (nop!)) (the-as none 0) (label cfg-13) @@ -3277,24 +2320,19 @@ (label cfg-14) (let ((a0-6 (-> arg0 tlist))) (b! (= a0-6 #f) cfg-16 :delay (nop!)) - (add-touching-prims a0-6 obj arg1 -1.0 (the-as collide-tri-result #f) (the-as collide-tri-result #f)) - ) + (add-touching-prims a0-6 obj arg1 -1.0 (the-as collide-tri-result #f) (the-as collide-tri-result #f))) (label cfg-16) (b! (not (logtest? (-> arg0 options) 1)) cfg-19 :delay (set! v1-26 (-> obj prim-core action))) (let ((a0-7 (-> arg1 prim-core action))) - (b! (logtest? (logand v1-26 (collide-action solid)) a0-7) cfg-19 :delay (nop!)) - ) + (b! (logtest? (logand v1-26 (collide-action solid)) a0-7) cfg-19 :delay (nop!))) (set! v0-1 #f) (b! #t cfg-20 :delay (nop!)) (label cfg-19) (set! v0-1 #t) (label cfg-20) - v0-1 - ) - ) - ) + v0-1))) -(defmethod overlaps-others-test collide-shape-prim-mesh ((obj collide-shape-prim-mesh) (arg0 overlaps-others-params) (arg1 collide-shape-prim)) +(defmethod overlaps-others-test ((obj collide-shape-prim-mesh) (arg0 overlaps-others-params) (arg1 collide-shape-prim)) (local-vars (v1-26 collide-action)) (let ((v1-0 (-> arg1 prim-core prim-type))) (b! (nonzero? v1-0) cfg-2 :delay (nop!)) @@ -3305,166 +2343,107 @@ (let ((s3-0 (-> obj mesh))) (b! (not s3-0) cfg-12) (let ((s2-0 *collide-mesh-cache*)) - (let ((v1-4 (-> s2-0 id))) - (b! (= (-> obj mesh-cache-id) v1-4) cfg-9) - ) + (let ((v1-4 (-> s2-0 id))) (b! (= (-> obj mesh-cache-id) v1-4) cfg-9)) (let ((v1-8 (allocate! s2-0 (* 96 (-> s3-0 num-tris))))) (b! (not v1-8) cfg-7 :delay (nop!)) - (set! (-> obj mesh-cache-tris) (the-as (inline-array collide-mesh-cache-tri) v1-8)) - ) - (set! (-> obj mesh-cache-id) (-> s2-0 id)) - ) - (populate-cache! - s3-0 - (the-as collide-mesh-cache-tri (-> obj mesh-cache-tris)) - (-> obj cshape process node-list data (-> obj transform-index) bone transform) - ) + (set! (-> obj mesh-cache-tris) (the-as (inline-array collide-mesh-cache-tri) v1-8))) + (set! (-> obj mesh-cache-id) (-> s2-0 id))) + (populate-cache! s3-0 + (the-as collide-mesh-cache-tri (-> obj mesh-cache-tris)) + (-> obj cshape process node-list data (-> obj transform-index) bone transform)) (b! #t cfg-9 :delay (nop!)) (label cfg-7) (set! v0-1 #f) (b! #t cfg-20 :delay (nop!)) (the-as none 0) (label cfg-9) - (b! - (not (overlap-test - s3-0 - (the-as collide-mesh-cache-tri (-> obj mesh-cache-tris)) - (the-as vector (-> arg1 prim-core)) - ) - ) - cfg-12 - ) - ) + (b! (not (overlap-test s3-0 (the-as collide-mesh-cache-tri (-> obj mesh-cache-tris)) (the-as vector (-> arg1 prim-core)))) + cfg-12)) (b! #t cfg-14 :delay (nop!)) (the-as none 0) (label cfg-12) (set! v0-1 #f) (b! #t cfg-20 :delay (nop!)) (label cfg-13) - (format - 0 - "ERROR: Unsupported mesh -> mesh test attempted in collide-shape-prim-mesh::overlaps-others-test!~%" - ) + (format 0 "ERROR: Unsupported mesh -> mesh test attempted in collide-shape-prim-mesh::overlaps-others-test!~%") (set! v0-1 #f) (b! #t cfg-20 :delay (nop!)) (label cfg-14) (let ((a0-7 (-> arg0 tlist))) (b! (= a0-7 #f) cfg-16 :delay (nop!)) - (add-touching-prims a0-7 obj arg1 -1.0 (the-as collide-tri-result #f) (the-as collide-tri-result #f)) - ) + (add-touching-prims a0-7 obj arg1 -1.0 (the-as collide-tri-result #f) (the-as collide-tri-result #f))) (label cfg-16) (b! (not (logtest? (-> arg0 options) 1)) cfg-19 :delay (set! v1-26 (-> obj prim-core action))) (let ((a0-8 (-> arg1 prim-core action))) - (b! (logtest? (logand v1-26 (collide-action solid)) a0-8) cfg-19 :delay (nop!)) - ) + (b! (logtest? (logand v1-26 (collide-action solid)) a0-8) cfg-19 :delay (nop!))) (set! v0-1 #f) (b! #t cfg-20 :delay (nop!)) (label cfg-19) (set! v0-1 #t) (label cfg-20) - v0-1 - ) - ) - ) + v0-1))) -(defmethod clear-collide-with-as collide-shape ((obj collide-shape)) +(defmethod clear-collide-with-as ((obj collide-shape)) (set! (-> obj root-prim collide-with) (collide-kind)) (set! (-> obj root-prim prim-core collide-as) (collide-kind)) 0 - (none) - ) + (none)) -(defmethod backup-collide-with-as collide-shape ((obj collide-shape)) +(defmethod backup-collide-with-as ((obj collide-shape)) (set! (-> obj backup-collide-with) (-> obj root-prim collide-with)) (set! (-> obj backup-collide-as) (-> obj root-prim prim-core collide-as)) 0 - (none) - ) + (none)) -(defmethod restore-collide-with-as collide-shape ((obj collide-shape)) +(defmethod restore-collide-with-as ((obj collide-shape)) (set! (-> obj root-prim collide-with) (-> obj backup-collide-with)) (set! (-> obj root-prim prim-core collide-as) (-> obj backup-collide-as)) 0 - (none) - ) + (none)) -(defmethod set-collide-kinds collide-shape ((obj collide-shape) (arg0 int) (arg1 collide-kind) (arg2 collide-kind)) +(defmethod set-collide-kinds ((obj collide-shape) (arg0 int) (arg1 collide-kind) (arg2 collide-kind)) (let ((s3-0 (-> obj root-prim))) (if (logtest? (-> s3-0 prim-id) arg0) - (set! (-> s3-0 prim-core collide-as) (logior (logclear (-> s3-0 prim-core collide-as) arg1) arg2)) - ) - (let ((v1-7 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape-prim-group)) - s3-0 - ) - ) - ) + (set! (-> s3-0 prim-core collide-as) (logior (logclear (-> s3-0 prim-core collide-as) arg1) arg2))) + (let ((v1-7 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape-prim-group)) s3-0))) (when v1-7 (dotimes (a0-4 (-> (the-as collide-shape-prim-group v1-7) num-prims)) (let ((a1-4 (-> (the-as collide-shape-prim-group v1-7) prims a0-4))) (if (logtest? (-> a1-4 prim-id) arg0) - (set! (-> a1-4 prim-core collide-as) (logior (logclear (-> a1-4 prim-core collide-as) arg1) arg2)) - ) - ) - ) - ) - ) - ) + (set! (-> a1-4 prim-core collide-as) (logior (logclear (-> a1-4 prim-core collide-as) arg1) arg2)))))))) 0 - (none) - ) + (none)) -(defmethod set-collide-offense collide-shape ((obj collide-shape) (arg0 int) (arg1 collide-offense)) +(defmethod set-collide-offense ((obj collide-shape) (arg0 int) (arg1 collide-offense)) (let ((s4-0 (-> obj root-prim))) - (if (logtest? (-> s4-0 prim-id) arg0) - (set! (-> s4-0 prim-core offense) arg1) - ) - (let ((v1-5 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) collide-shape-prim-group)) - s4-0 - ) - ) - ) + (if (logtest? (-> s4-0 prim-id) arg0) (set! (-> s4-0 prim-core offense) arg1)) + (let ((v1-5 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) collide-shape-prim-group)) s4-0))) (when v1-5 (dotimes (a0-3 (-> (the-as collide-shape-prim-group v1-5) num-prims)) (let ((a1-4 (-> (the-as collide-shape-prim-group v1-5) prims a0-3))) - (if (logtest? (-> a1-4 prim-id) arg0) - (set! (-> a1-4 prim-core offense) arg1) - ) - ) - ) - ) - ) - ) + (if (logtest? (-> a1-4 prim-id) arg0) (set! (-> a1-4 prim-core offense) arg1))))))) 0 - (none) - ) + (none)) -(defmethod send-shove-back collide-shape ((obj collide-shape) (arg0 process) (arg1 touching-shapes-entry) (arg2 float) (arg3 float) (arg4 float)) +(defmethod send-shove-back ((obj collide-shape) (arg0 process) (arg1 touching-shapes-entry) (arg2 float) (arg3 float) (arg4 float)) (local-vars (sv-144 process)) (with-pp (when arg1 (let ((s1-0 (-> arg1 head))) (set! sv-144 arg0) - (let ((s5-0 (if (and (nonzero? sv-144) (type-type? (-> sv-144 type) process-drawable)) - sv-144 - ) - ) - ) + (let ((s5-0 (if (and (nonzero? sv-144) (type-type? (-> sv-144 type) process-drawable)) sv-144))) (when (and s1-0 s5-0) (let ((s0-1 (get-touched-prim s1-0 obj arg1))) (get-touched-prim s1-0 (-> (the-as process-drawable s5-0) root) arg1) (let* ((v1-8 (get-middle-of-bsphere-overlap s1-0 (new 'stack-no-clear 'vector))) - (s1-2 (vector-! (new 'stack-no-clear 'vector) v1-8 (the-as vector (-> s0-1 prim-core)))) - ) + (s1-2 (vector-! (new 'stack-no-clear 'vector) v1-8 (the-as vector (-> s0-1 prim-core))))) (vector-normalize! s1-2 1.0) (when (< arg2 (-> s1-2 y)) (let ((s2-1 (new 'stack-no-clear 'vector))) (set! (-> s2-1 quad) (-> (the-as process-drawable s5-0) root transv quad)) (let ((f30-0 (vector-xz-length (-> (the-as process-drawable s5-0) root transv)))) - (if (= f30-0 0.0) - (set! (-> s2-1 quad) (-> (vector-z-quaternion! s2-1 (-> (the-as process-drawable s5-0) root quat)) quad)) - ) - (vector-xz-normalize! s2-1 (fmax f30-0 arg4)) - ) + (if (= f30-0 0.0) (set! (-> s2-1 quad) (-> (vector-z-quaternion! s2-1 (-> (the-as process-drawable s5-0) root quat)) quad))) + (vector-xz-normalize! s2-1 (fmax f30-0 arg4))) (set! (-> s2-1 y) arg3) (let ((a1-8 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-8 from) pp) @@ -3474,41 +2453,22 @@ (let ((v1-18 (new 'static 'attack-info :mask #x802))) (set! (-> v1-18 vector quad) (-> s2-1 quad)) (set! (-> v1-18 angle) 'jump) - (set! (-> a1-8 param 1) (the-as uint v1-18)) - ) - (send-event-function s5-0 a1-8) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) - ) + (set! (-> a1-8 param 1) (the-as uint v1-18))) + (send-event-function s5-0 a1-8)))))))))) + (none))) -(defmethod calc-shove-up collide-shape ((obj collide-shape) (arg0 attack-info) (arg1 float)) +(defmethod calc-shove-up ((obj collide-shape) (arg0 attack-info) (arg1 float)) (set! (-> arg0 shove-up) arg1) (let* ((s3-0 (-> obj process path)) (s2-0 (-> s3-0 curve num-cverts)) (s4-0 (target-pos 0)) (s1-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (let ((f30-0 -1.0)) (dotimes (s0-0 s2-0) (eval-path-curve-div! s3-0 s1-0 (the float s0-0) 'interp) (let ((f0-3 (vector-vector-distance-squared s4-0 s1-0))) (when (or (< f30-0 0.0) (< f0-3 f30-0)) (set! f30-0 f0-3) - (set! (-> s5-0 quad) (-> s1-0 quad)) - ) - ) - ) - ) - (vector-! (-> arg0 vector) s5-0 s4-0) - ) - ) + (set! (-> s5-0 quad) (-> s1-0 quad)))))) + (vector-! (-> arg0 vector) s5-0 s4-0))) diff --git a/goal_src/jak1/engine/collide/collide-target-h.gc b/goal_src/jak1/engine/collide/collide-target-h.gc index 74ea1da5a0..b277e0bba7 100644 --- a/goal_src/jak1/engine/collide/collide-target-h.gc +++ b/goal_src/jak1/engine/collide/collide-target-h.gc @@ -1,199 +1,189 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/collide-shape-h.gc") -;; name: collide-target-h.gc -;; name in dgo: collide-target-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; We believe that target's control-info may contain an array of these. ;; Each collide-history is a record of a single collision event. (deftype collide-history (structure) - ((intersect vector :inline) - (trans vector :inline) - (transv vector :inline) - (transv-out vector :inline) - (local-normal vector :inline) - (surface-normal vector :inline) - (time time-frame) - (status cshape-moving-flags) - (pat pat-surface) - (reaction-flag cshape-reaction-flags) - ) + ((intersect vector :inline) + (trans vector :inline) + (transv vector :inline) + (transv-out vector :inline) + (local-normal vector :inline) + (surface-normal vector :inline) + (time time-frame) + (status cshape-moving-flags) + (pat pat-surface) + (reaction-flag cshape-reaction-flags)) (:methods - (update! (_type_ collide-shape-moving vector vector vector) _type_) - ) - ) + (update! (_type_ collide-shape-moving vector vector vector) _type_))) ;; This is the collide shape for target (Jak). ;; It is complicated. (deftype control-info (collide-shape-moving) - ((unknown-vector00 vector :inline :offset 448) - (unknown-vector01 vector :inline :offset 464) - (unknown-vector02 vector :inline :offset 480) - (unknown-quaternion00 quaternion :inline :offset 496) - (unknown-quaternion01 quaternion :inline :offset 512) - (unknown-float00 float :offset 528) - (unknown-float01 float :offset 532) - (unknown-float02 float :offset 536) - (unknown-vector10 vector :inline :offset 544) - (unknown-vector11 vector :inline :offset 560) - (unknown-vector12 vector :inline :offset 576) - (unknown-vector13 vector :inline :offset 592) - (unknown-vector14 vector :inline :offset 608) - (unknown-vector15 vector :inline :offset 624) - (unknown-vector16 vector :inline :offset 640) - (unknown-dynamics00 dynamics :offset 656) - (unknown-surface00 surface :offset 660) - (unknown-surface01 surface :offset 664) - (unknown-cpad-info00 cpad-info :offset 668) - (unknown-float10 float :offset 672) - (unknown-float11 float :offset 676) - (unknown-float12 float :offset 680) - (unknown-float13 float :offset 684) - (unknown-vector20 vector :inline :offset 688) - (unknown-vector21 vector :inline :offset 704) - (unknown-vector22 vector :inline :offset 720) - (unknown-vector23 vector :inline :offset 736) - (unknown-vector-array00 vector 7 :inline :offset 752) - (unknown-vector30 vector :inline :offset 880) - (unknown-vector31 vector :inline :offset 896) - (unknown-float20 float :offset 912) - (unknown-float21 float :offset 916) - (unknown-dword00 uint64 :offset 920) - (unknown-matrix00 matrix :inline :offset 928) - (unknown-matrix01 matrix :inline :offset 992) - (unknown-matrix02 matrix :inline :offset 1056) - (unknown-qword00 uint128 :offset 1136) - (unknown-float30 float :offset 1140) - (unknown-vector40 vector :inline :offset 1152) - (unknown-float40 float :offset 1172) - (unknown-float41 float :offset 1176) - (unknown-int00 int32 :offset 1180) - (unknown-float50 float :offset 1168) - (unknown-vector50 vector :inline :offset 1184) - (unknown-vector51 vector :inline :offset 1200) - (unknown-vector52 vector :inline :offset 1216) - (unknown-vector53 vector :inline :offset 1232) - (last-known-safe-ground vector :inline :offset 1248) - (unknown-vector55 vector :inline :offset 1264) - (unknown-dword10 time-frame :offset 1280) - (unknown-dword11 time-frame :offset 1288) - (unknown-float60 float :offset 1300) - (unknown-float61 float :offset 1304) - (unknown-float62 float :offset 1308) - (unknown-float63 float :offset 1312) - (unknown-float64 float :offset 1316) - (unknown-dword20 time-frame :offset 1320) - (unknown-dword21 time-frame :offset 1328) - (unknown-dword-coverage int64 :offset 1336) - (unknown-float-coverage-0 float :offset 1344) - (unknown-float-coverage-1 float :offset 1348) - (unknown-float-coverage-2 float :offset 1352) - (unknown-u32-coverage-0 uint32 :offset 1356) - (unknown-vector-coverage-0 vector :inline :offset 1376) - (unknown-vector-coverage-1 vector :inline :offset 1392) - (unknown-vector-coverage-2 vector :inline :offset 1440) - (unknown-vector-coverage-3 vector :inline :offset 1472) - (unknown-vector60 vector :inline :offset 1456) - (unknown-vector61 vector :inline :offset 1504) - (unknown-float70 float :offset 1520) - (unknown-float71 float :offset 1524) - (unknown-vector70 vector :inline :offset 1536) - (unknown-vector71 vector :inline :offset 1552) - (unknown-vector72 vector :inline :offset 1568) - (unknown-vector73 vector :inline :offset 1584) - (unknown-handle00 handle :offset 1600) - (unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608) - (unknown-sphere00 collide-shape-prim-sphere :offset 1632) - (unknown-sphere01 collide-shape-prim-sphere :offset 1636) - (unknown-sphere02 collide-shape-prim-sphere :offset 1640) - (unknown-int50 int32 :offset 1656) - (unknown-dword30 time-frame :offset 1664) - (unknown-dword31 time-frame :offset 1672) - (unknown-dword32 time-frame :offset 1680) - (unknown-dword33 time-frame :offset 1688) - (unknown-dword34 time-frame :offset 1696) - (unknown-dword35 time-frame :offset 1704) - (unknown-dword36 time-frame :offset 1712) - (unknown-float80 float :offset 1724) - (unknown-float81 float :offset 1728) - (unknown-float82 float :offset 1732) - (unknown-vector80 vector :inline :offset 1744) - (unknown-cspace00 cspace :inline :offset 1760) - (unknown-vector90 vector :inline :offset 1776) - (unknown-vector91 vector :inline :offset 1792) - (unknown-vector92 vector :inline :offset 1824) - (unknown-cspace10 cspace :inline :offset 1808) - (unknown-symbol00 symbol :offset 1840) - (unknown-float90 float :offset 1844) - (unknown-float91 float :offset 1848) - (unknown-vector-array10 vector 16 :inline :offset 1856) - (unknown-float100 float :offset 2112) - (unknown-int10 int32 :offset 2116) - (unknown-float110 float :offset 2120) - (unknown-vector100 vector :inline :offset 2128) - (unknown-vector101 vector :inline :offset 2144) - (unknown-dword40 time-frame :offset 2160) - (unknown-dword41 time-frame :offset 2168) - (unknown-handle10 handle :offset 2176) - (unknown-uint20 uint32 :offset 2184) - (unknown-spoolanim00 spool-anim :overlay-at unknown-uint20) - (unknown-int20 int32 :overlay-at unknown-spoolanim00) - (unknown-symbol20 symbol :overlay-at unknown-int20) - (unknown-float120 float :overlay-at unknown-symbol20) - (unknown-int21 int32 :offset 2188) - (unknown-uint30 uint32 :overlay-at unknown-int21) - (unknown-float121 float :overlay-at unknown-uint30) - (unknown-uint31 uint32 :offset 2192) - (unknown-int37 int32 :overlay-at unknown-uint31) - (unknown-float122 float :offset 2196) - (unknown-float123 float :offset 2200) - (unknown-float124 float :offset 2204) - (unknown-vector102 vector :inline :offset 2224) - (unknown-vector103 vector :inline :offset 2240) - (unknown-quaternion02 quaternion :inline :offset 2256) - (unknown-quaternion03 quaternion :inline :offset 2272) - (unknown-smush00 smush-control :inline :offset 2288) - (unknown-vector110 vector :inline :offset 2320) - (unknown-vector111 vector :inline :offset 2336) - (unknown-symbol30 symbol :offset 2384) - (unknown-int31 uint32 :overlay-at unknown-symbol30) - (unknown-dword50 int64 :offset 2392) - (unknown-dword51 int64 :offset 2400) - (unknown-pointer00 pointer :offset 2416) - (unknown-symbol40 symbol :offset 2428) - (unknown-dword60 int64 :offset 2432) - (unknown-dword61 int64 :offset 2440) - (unknown-dword62 int64 :offset 2448) - (unknown-dword63 int64 :offset 2456) - (unknown-halfword00 int16 :offset 2488) - (history-length int16 :offset 2490) - (history-data collide-history 128 :inline) - (unknown-float140 float :offset 18944) - (unknown-dword70 time-frame :offset 18952) - (unknown-int40 int32 :offset 18880) - (unknown-dword80 time-frame :offset 18888) - (unknown-dword81 time-frame :offset 18896) - (unknown-float130 float :offset 18904) - (unknown-float131 float :offset 18908) - (unknown-dword82 time-frame :offset 18912) - (unknown-vector120 vector :inline :offset 18928) - (unknown-float150 float :overlay-at unknown-float140) - (unknown-vector121 vector :inline :offset 18960) - (wall-pat pat-surface :offset 18976) - (unknown-soundid00 sound-id :offset 18980) - (unknown-float141 float :offset 18984) - (unknown-soundid01 sound-id :offset 18988) - (unknown-int34 int32 :offset 18992) - (unknown-int35 int32 :offset 18996) - (unknown-int36 int32 :offset 19000) - ) - ) + ((unknown-vector00 vector :inline :offset 448) + (unknown-vector01 vector :inline :offset 464) + (unknown-vector02 vector :inline :offset 480) + (unknown-quaternion00 quaternion :inline :offset 496) + (unknown-quaternion01 quaternion :inline :offset 512) + (unknown-float00 float :offset 528) + (unknown-float01 float :offset 532) + (unknown-float02 float :offset 536) + (unknown-vector10 vector :inline :offset 544) + (unknown-vector11 vector :inline :offset 560) + (unknown-vector12 vector :inline :offset 576) + (unknown-vector13 vector :inline :offset 592) + (unknown-vector14 vector :inline :offset 608) + (unknown-vector15 vector :inline :offset 624) + (unknown-vector16 vector :inline :offset 640) + (unknown-dynamics00 dynamics :offset 656) + (unknown-surface00 surface :offset 660) + (unknown-surface01 surface :offset 664) + (unknown-cpad-info00 cpad-info :offset 668) + (unknown-float10 float :offset 672) + (unknown-float11 float :offset 676) + (unknown-float12 float :offset 680) + (unknown-float13 float :offset 684) + (unknown-vector20 vector :inline :offset 688) + (unknown-vector21 vector :inline :offset 704) + (unknown-vector22 vector :inline :offset 720) + (unknown-vector23 vector :inline :offset 736) + (unknown-vector-array00 vector 7 :inline :offset 752) + (unknown-vector30 vector :inline :offset 880) + (unknown-vector31 vector :inline :offset 896) + (unknown-float20 float :offset 912) + (unknown-float21 float :offset 916) + (unknown-dword00 uint64 :offset 920) + (unknown-matrix00 matrix :inline :offset 928) + (unknown-matrix01 matrix :inline :offset 992) + (unknown-matrix02 matrix :inline :offset 1056) + (unknown-qword00 uint128 :offset 1136) + (unknown-float30 float :offset 1140) + (unknown-vector40 vector :inline :offset 1152) + (unknown-float40 float :offset 1172) + (unknown-float41 float :offset 1176) + (unknown-int00 int32 :offset 1180) + (unknown-float50 float :offset 1168) + (unknown-vector50 vector :inline :offset 1184) + (unknown-vector51 vector :inline :offset 1200) + (unknown-vector52 vector :inline :offset 1216) + (unknown-vector53 vector :inline :offset 1232) + (last-known-safe-ground vector :inline :offset 1248) + (unknown-vector55 vector :inline :offset 1264) + (unknown-dword10 time-frame :offset 1280) + (unknown-dword11 time-frame :offset 1288) + (unknown-float60 float :offset 1300) + (unknown-float61 float :offset 1304) + (unknown-float62 float :offset 1308) + (unknown-float63 float :offset 1312) + (unknown-float64 float :offset 1316) + (unknown-dword20 time-frame :offset 1320) + (unknown-dword21 time-frame :offset 1328) + (unknown-dword-coverage int64 :offset 1336) + (unknown-float-coverage-0 float :offset 1344) + (unknown-float-coverage-1 float :offset 1348) + (unknown-float-coverage-2 float :offset 1352) + (unknown-u32-coverage-0 uint32 :offset 1356) + (unknown-vector-coverage-0 vector :inline :offset 1376) + (unknown-vector-coverage-1 vector :inline :offset 1392) + (unknown-vector-coverage-2 vector :inline :offset 1440) + (unknown-vector-coverage-3 vector :inline :offset 1472) + (unknown-vector60 vector :inline :offset 1456) + (unknown-vector61 vector :inline :offset 1504) + (unknown-float70 float :offset 1520) + (unknown-float71 float :offset 1524) + (unknown-vector70 vector :inline :offset 1536) + (unknown-vector71 vector :inline :offset 1552) + (unknown-vector72 vector :inline :offset 1568) + (unknown-vector73 vector :inline :offset 1584) + (unknown-handle00 handle :offset 1600) + (unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608) + (unknown-sphere00 collide-shape-prim-sphere :offset 1632) + (unknown-sphere01 collide-shape-prim-sphere :offset 1636) + (unknown-sphere02 collide-shape-prim-sphere :offset 1640) + (unknown-int50 int32 :offset 1656) + (unknown-dword30 time-frame :offset 1664) + (unknown-dword31 time-frame :offset 1672) + (unknown-dword32 time-frame :offset 1680) + (unknown-dword33 time-frame :offset 1688) + (unknown-dword34 time-frame :offset 1696) + (unknown-dword35 time-frame :offset 1704) + (unknown-dword36 time-frame :offset 1712) + (unknown-float80 float :offset 1724) + (unknown-float81 float :offset 1728) + (unknown-float82 float :offset 1732) + (unknown-vector80 vector :inline :offset 1744) + (unknown-cspace00 cspace :inline :offset 1760) + (unknown-vector90 vector :inline :offset 1776) + (unknown-vector91 vector :inline :offset 1792) + (unknown-vector92 vector :inline :offset 1824) + (unknown-cspace10 cspace :inline :offset 1808) + (unknown-symbol00 symbol :offset 1840) + (unknown-float90 float :offset 1844) + (unknown-float91 float :offset 1848) + (unknown-vector-array10 vector 16 :inline :offset 1856) + (unknown-float100 float :offset 2112) + (unknown-int10 int32 :offset 2116) + (unknown-float110 float :offset 2120) + (unknown-vector100 vector :inline :offset 2128) + (unknown-vector101 vector :inline :offset 2144) + (unknown-dword40 time-frame :offset 2160) + (unknown-dword41 time-frame :offset 2168) + (unknown-handle10 handle :offset 2176) + (unknown-uint20 uint32 :offset 2184) + (unknown-spoolanim00 spool-anim :overlay-at unknown-uint20) + (unknown-int20 int32 :overlay-at unknown-spoolanim00) + (unknown-symbol20 symbol :overlay-at unknown-int20) + (unknown-float120 float :overlay-at unknown-symbol20) + (unknown-int21 int32 :offset 2188) + (unknown-uint30 uint32 :overlay-at unknown-int21) + (unknown-float121 float :overlay-at unknown-uint30) + (unknown-uint31 uint32 :offset 2192) + (unknown-int37 int32 :overlay-at unknown-uint31) + (unknown-float122 float :offset 2196) + (unknown-float123 float :offset 2200) + (unknown-float124 float :offset 2204) + (unknown-vector102 vector :inline :offset 2224) + (unknown-vector103 vector :inline :offset 2240) + (unknown-quaternion02 quaternion :inline :offset 2256) + (unknown-quaternion03 quaternion :inline :offset 2272) + (unknown-smush00 smush-control :inline :offset 2288) + (unknown-vector110 vector :inline :offset 2320) + (unknown-vector111 vector :inline :offset 2336) + (unknown-symbol30 symbol :offset 2384) + (unknown-int31 uint32 :overlay-at unknown-symbol30) + (unknown-dword50 int64 :offset 2392) + (unknown-dword51 int64 :offset 2400) + (unknown-pointer00 pointer :offset 2416) + (unknown-symbol40 symbol :offset 2428) + (unknown-dword60 int64 :offset 2432) + (unknown-dword61 int64 :offset 2440) + (unknown-dword62 int64 :offset 2448) + (unknown-dword63 int64 :offset 2456) + (unknown-halfword00 int16 :offset 2488) + (history-length int16 :offset 2490) + (history-data collide-history 128 :inline) + (unknown-float140 float :offset 18944) + (unknown-dword70 time-frame :offset 18952) + (unknown-int40 int32 :offset 18880) + (unknown-dword80 time-frame :offset 18888) + (unknown-dword81 time-frame :offset 18896) + (unknown-float130 float :offset 18904) + (unknown-float131 float :offset 18908) + (unknown-dword82 time-frame :offset 18912) + (unknown-vector120 vector :inline :offset 18928) + (unknown-float150 float :overlay-at unknown-float140) + (unknown-vector121 vector :inline :offset 18960) + (wall-pat pat-surface :offset 18976) + (unknown-soundid00 sound-id :offset 18980) + (unknown-float141 float :offset 18984) + (unknown-soundid01 sound-id :offset 18988) + (unknown-int34 int32 :offset 18992) + (unknown-int35 int32 :offset 18996) + (unknown-int36 int32 :offset 19000))) (defmethod update! ((this collide-history) (cshape collide-shape-moving) (xs vector) (transv vector) (transv-out vector)) "Update the collide-history element." @@ -207,5 +197,4 @@ (set! (-> this status) (-> cshape status)) (set! (-> this reaction-flag) (-> cshape reaction-flag)) (set! (-> this pat) (-> cshape cur-pat)) - this - ) + this) diff --git a/goal_src/jak1/engine/collide/collide-touch-h.gc b/goal_src/jak1/engine/collide/collide-touch-h.gc index a3a99eacce..51ae5a9245 100644 --- a/goal_src/jak1/engine/collide/collide-touch-h.gc +++ b/goal_src/jak1/engine/collide/collide-touch-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: collide-touch-h.gc -;; name in dgo: collide-touch-h -;; dgos: GAME, ENGINE - ;;;;;;;;;;;;;;;;;;;;;;;; ;; Collide Touch ;;;;;;;;;;;;;;;;;;;;;;;; @@ -16,52 +11,40 @@ ;; As the collision is resolved, shapes are added and removed from the touching list. ;; Once collision is done solving, you can send events or inspect what you touched! - (defconstant TOUCHING_LIST_LENGTH 32) ;; DECOMP BEGINS ;; A record of a primitive which is touching another, possibly including the triangle that is involved. (deftype touching-prim (structure) - ((cprim collide-shape-prim) - (has-tri? symbol) - (tri collide-tri-result :inline) - ) - ) - + ((cprim collide-shape-prim) + (has-tri? symbol) + (tri collide-tri-result :inline))) ;; A record of two primitives which are touching. (deftype touching-prims-entry (structure) - ((next touching-prims-entry) - (prev touching-prims-entry) - (allocated? symbol) - (u float) - (prim1 touching-prim :inline) - (prim2 touching-prim :inline) - ) + ((next touching-prims-entry) + (prev touching-prims-entry) + (allocated? symbol) + (u float) + (prim1 touching-prim :inline) + (prim2 touching-prim :inline)) (:methods - (get-touched-prim (_type_ trsqv touching-shapes-entry) collide-shape-prim) - (touching-prims-entry-method-10 () none) - (get-middle-of-bsphere-overlap (_type_ vector) vector) - (get-touched-tri (_type_ collide-shape touching-shapes-entry) collide-tri-result) - ) - ) - + (get-touched-prim (_type_ trsqv touching-shapes-entry) collide-shape-prim) + (touching-prims-entry-method-10 () none) + (get-middle-of-bsphere-overlap (_type_ vector) vector) + (get-touched-tri (_type_ collide-shape touching-shapes-entry) collide-tri-result))) ;; A pool of up to 64 touching primitives. There is a linked list of freed entries. (deftype touching-prims-entry-pool (structure) - ((head touching-prims-entry) - (nodes touching-prims-entry 64 :inline) - ) + ((head touching-prims-entry) + (nodes touching-prims-entry 64 :inline)) (:methods - (new (symbol type) _type_) - (alloc-node (_type_) touching-prims-entry) - (get-free-node-count (_type_) int) - (init-list! (_type_) none) - (free-node (_type_ touching-prims-entry) touching-prims-entry) - ) - ) - + (new (symbol type) _type_) + (alloc-node (_type_) touching-prims-entry) + (get-free-node-count (_type_) int) + (init-list! (_type_) none) + (free-node (_type_ touching-prims-entry) touching-prims-entry))) (defmethod init-list! ((this touching-prims-entry-pool)) "Initialize all entries to be not allocated and in a linked list." @@ -74,14 +57,9 @@ (set! (-> current next) (the-as touching-prims-entry next)) (set! (-> current allocated?) #f) (set! prev current) - (set! current (the-as touching-prims-entry next)) - ) - ) - ) - (set! (-> prev next) #f) - ) - (none) - ) + (set! current (the-as touching-prims-entry next))))) + (set! (-> prev next) #f)) + (none)) (defmethod new touching-prims-entry-pool ((allocation symbol) (type-to-make type)) "Allocate and initialize a new touching-prims-entry-pool" @@ -89,80 +67,66 @@ ;; Note - the original code passed (-> type-to-make size) as an argument. ;; however, the new method of structure doesn't have this argument. ;; it uses the same value for the size so it doesn't really matter. - (let ((this (the touching-prims-entry-pool ((method-of-type structure new) - allocation - type-to-make - ;; (-> type-to-make size) see note - ) - ))) + (let ((this (the touching-prims-entry-pool + ((method-of-type structure new) + allocation + type-to-make + ;; (-> type-to-make size) see note + )))) (init-list! this) - this - ) - ) - + this)) ;; two collide shapes which are touching. ;; This stores a list of primitive pairs which are touching. (deftype touching-shapes-entry (structure) - ((cshape1 collide-shape) - (cshape2 collide-shape) - (resolve-u int8) - (head touching-prims-entry) - ) + ((cshape1 collide-shape) + (cshape2 collide-shape) + (resolve-u int8) + (head touching-prims-entry)) :allow-misaligned (:methods - (touching-shapes-entry-method-9 (_type_) none) - (get-touched-shape (_type_ collide-shape) collide-shape) - (touching-shapes-entry-method-11 () none) - (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry) - (prims-touching-action? (_type_ collide-shape collide-action collide-action) touching-prims-entry) - (touching-shapes-entry-method-14 () none) - (free-touching-prims-list (_type_) symbol) - (get-head (_type_) touching-prims-entry) - (get-next (_type_ touching-prims-entry) touching-prims-entry) - ) - ) + (touching-shapes-entry-method-9 (_type_) none) + (get-touched-shape (_type_ collide-shape) collide-shape) + (touching-shapes-entry-method-11 () none) + (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry) + (prims-touching-action? (_type_ collide-shape collide-action collide-action) touching-prims-entry) + (touching-shapes-entry-method-14 () none) + (free-touching-prims-list (_type_) symbol) + (get-head (_type_) touching-prims-entry) + (get-next (_type_ touching-prims-entry) touching-prims-entry))) ;; A list of (up to) TOUCHING_LIST_LENGTH pairs of colliding shapes (deftype touching-list (structure) - ((num-touching-shapes int32) - (resolve-u int8) - (touching-shapes touching-shapes-entry TOUCHING_LIST_LENGTH :inline) - ) + ((num-touching-shapes int32) + (resolve-u int8) + (touching-shapes touching-shapes-entry TOUCHING_LIST_LENGTH :inline)) (:methods - (new (symbol type) _type_) - (add-touching-prims (_type_ collide-shape-prim collide-shape-prim float collide-tri-result collide-tri-result) none) - (touching-list-method-10 () none) - (update-from-step-size (_type_ float) none) - (send-events-for-touching-shapes (_type_) none) - (get-shapes-entry (_type_ collide-shape collide-shape) touching-shapes-entry) - (free-all-prim-nodes (_type_) none) - ) - ) - + (new (symbol type) _type_) + (add-touching-prims (_type_ collide-shape-prim collide-shape-prim float collide-tri-result collide-tri-result) none) + (touching-list-method-10 () none) + (update-from-step-size (_type_ float) none) + (send-events-for-touching-shapes (_type_) none) + (get-shapes-entry (_type_ collide-shape collide-shape) touching-shapes-entry) + (free-all-prim-nodes (_type_) none))) (defmethod new touching-list ((allocation symbol) (type-to-make type)) "See note in touching-prims-entry-pool" ;; og:preserve-this - (let ((this (the touching-list ((method-of-type structure new) - allocation - type-to-make - ;; (-> type-to-make size) see note - ) - ))) + (let ((this (the touching-list + ((method-of-type structure new) + allocation + type-to-make + ;; (-> type-to-make size) see note + )))) (set! (-> this num-touching-shapes) 0) (set! (-> this resolve-u) 0) - this - ) - ) + this)) (defmethod get-head ((this touching-shapes-entry)) - (-> this head) - ) + (-> this head)) (defmethod get-next ((this touching-shapes-entry) (arg0 touching-prims-entry)) - (-> arg0 next) - ) + (-> arg0 next)) ;; Allocate the global touching lists. ;; We have a pool of prim pairs that can be used in any shape pair diff --git a/goal_src/jak1/engine/collide/collide-touch.gc b/goal_src/jak1/engine/collide/collide-touch.gc index b40e68ce58..c82d244717 100644 --- a/goal_src/jak1/engine/collide/collide-touch.gc +++ b/goal_src/jak1/engine/collide/collide-touch.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/collide-touch-h.gc") (require "kernel/gstate.gc") (require "engine/target/target-h.gc") (require "engine/collide/collide-shape-h.gc") (require "engine/collide/collide-mesh-h.gc") -;; name: collide-touch.gc -;; name in dgo: collide-touch -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;;;;;;;;;;;;;;;;;;;;; @@ -34,41 +29,20 @@ (defmethod get-free-node-count ((this touching-prims-entry-pool)) "Get the number of nodes that are not in use." (let ((v0-0 0)) - (let ((v1-0 (-> this head))) - (while v1-0 - (+! v0-0 1) - (set! v1-0 (-> v1-0 next)) - (nop!) - (nop!) - (nop!) - ) - ) - v0-0 - ) - ) + (let ((v1-0 (-> this head))) (while v1-0 (+! v0-0 1) (set! v1-0 (-> v1-0 next)) (nop!) (nop!) (nop!))) + v0-0)) (defmethod alloc-node ((this touching-prims-entry-pool)) "Allocate a node. Will return #f if there are none left." (let ((gp-0 (-> this head))) (cond (gp-0 - (let ((v1-0 (-> gp-0 next))) - (set! (-> this head) v1-0) - (if v1-0 - (set! (-> v1-0 prev) #f) - ) - ) - (set! (-> gp-0 allocated?) #t) - (set! (-> gp-0 next) #f) - (set! (-> gp-0 prev) #f) - ) - (else - (format 0 "ERROR: touching-prims-entry-pool::alloc-node() failed!~%") - ) - ) - gp-0 - ) - ) + (let ((v1-0 (-> gp-0 next))) (set! (-> this head) v1-0) (if v1-0 (set! (-> v1-0 prev) #f))) + (set! (-> gp-0 allocated?) #t) + (set! (-> gp-0 next) #f) + (set! (-> gp-0 prev) #f)) + (else (format 0 "ERROR: touching-prims-entry-pool::alloc-node() failed!~%"))) + gp-0)) (defmethod free-node ((this touching-prims-entry-pool) (arg0 touching-prims-entry)) "Free a node allocated with alloc-node" @@ -78,12 +52,7 @@ (set! (-> arg0 next) v1-1) (set! (-> arg0 prev) #f) (set! (-> this head) arg0) - (if v1-1 - (set! (-> v1-1 prev) arg0) - ) - ) - ) - ) + (if v1-1 (set! (-> v1-1 prev) arg0))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Shapes Entry @@ -101,17 +70,8 @@ (set! (-> this head) #f) (let ((s5-0 *touching-prims-entry-pool*)) (while gp-0 - (let ((a1-0 gp-0)) - (set! gp-0 (-> a1-0 next)) - (free-node s5-0 a1-0) - ) - ) - ) - #f - ) - ) - ) - ) + (let ((a1-0 gp-0)) (set! gp-0 (-> a1-0 next)) (free-node s5-0 a1-0)))) + #f)))) ;;;;;;;;;;;;;;;;;;;;;; ;; Touching List @@ -124,78 +84,53 @@ (let ((s5-0 (the-as touching-shapes-entry (-> this touching-shapes)))) (countdown (s4-0 (-> this num-touching-shapes)) (free-touching-prims-list s5-0) - (&+! s5-0 16) - ) - ) + (&+! s5-0 16))) (set! (-> this num-touching-shapes) 0) (set! (-> this resolve-u) 0) 0 - (none) - ) - + (none)) (defmethod get-shapes-entry ((this touching-list) (arg0 collide-shape) (arg1 collide-shape)) "Get a touching-shapes-entry for the two shapes. If one exists, it will be returned. Otherwise a new one will be made." (let ((v0-0 (the-as touching-shapes-entry (-> this touching-shapes)))) ;; the candidate - (let ((v1-0 (the-as touching-shapes-entry #f))) ;; a good one - + (let ((v1-0 (the-as touching-shapes-entry #f))) ;; a good one ;; loop over all touching shapes (countdown (a3-0 (-> this num-touching-shapes)) (let ((t0-0 (-> v0-0 cshape1))) (set! v1-0 (cond (t0-0 - ;; in use. If it's match, return it (allows a,b or b,a to match a,b) - (if (or (and (= t0-0 arg0) (= (-> v0-0 cshape2) arg1)) (and (= t0-0 arg1) (= (-> v0-0 cshape2) arg0))) - (return v0-0) - ) - ;; otherwise bad - v1-0 - ) + ;; in use. If it's match, return it (allows a,b or b,a to match a,b) + (if (or (and (= t0-0 arg0) (= (-> v0-0 cshape2) arg1)) (and (= t0-0 arg1) (= (-> v0-0 cshape2) arg0))) (return v0-0)) + ;; otherwise bad + v1-0) (else - ;; not in use. remember it's free and keep looking. - v0-0 - ) - ) - ) - ) - (&+! v0-0 16) - ) - + ;; not in use. remember it's free and keep looking. + v0-0)))) + (&+! v0-0 16)) ;; done looping. (cond (v1-0 ;; did we find an unused slot? if so return it - (set! v0-0 v1-0) - ) + (set! v0-0 v1-0)) (else - ;; need to add a new one - (when (>= (-> this num-touching-shapes) TOUCHING_LIST_LENGTH) - ;; but there's no room! - (format 0 "ERROR: touching-list::get-shapes-entry() failed!~%") - (return (the-as touching-shapes-entry #f)) - ) - ;; enough room, increase the size - (+! (-> this num-touching-shapes) 1) - ) - ) - ) - + ;; need to add a new one + (when (>= (-> this num-touching-shapes) TOUCHING_LIST_LENGTH) + ;; but there's no room! + (format 0 "ERROR: touching-list::get-shapes-entry() failed!~%") + (return (the-as touching-shapes-entry #f))) + ;; enough room, increase the size + (+! (-> this num-touching-shapes) 1)))) ;; if we're doing a new one, set it up. (set! (-> v0-0 cshape1) arg0) (set! (-> v0-0 cshape2) arg1) (set! (-> v0-0 head) #f) (set! (-> v0-0 resolve-u) 1) (set! (-> this resolve-u) 1) - (the-as touching-shapes-entry v0-0) - ) - ) + (the-as touching-shapes-entry v0-0))) (deftype add-prims-touching-work (structure) - ((tri1 collide-tri-result) - (tri2 collide-tri-result) - ) - ) - + ((tri1 collide-tri-result) + (tri2 collide-tri-result))) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Touching List Update @@ -212,37 +147,22 @@ ;; "What happens if I move forward 0.7 timesteps?" ;; .. repeat .. - - - -(defmethod add-touching-prims ((this touching-list) - (arg0 collide-shape-prim) - (arg1 collide-shape-prim) - (arg2 float) - (arg3 collide-tri-result) - (arg4 collide-tri-result) - ) +(defmethod add-touching-prims ((this touching-list) (arg0 collide-shape-prim) (arg1 collide-shape-prim) (arg2 float) (arg3 collide-tri-result) (arg4 collide-tri-result)) "Tell the touching list that if we end taking a step of at least arg2, the prims arg0/arg1 will collide. However, you don't have to know for sure if you're going to take this big of a step yet. You can provide triangles if you want, but you don't have to. The logic for calling this twice for the same prims in between calls to update-from-step-size is a little weird so I suspect this never happens (and it's probably cheaper to avoid this duplication in the actual prim collision code)." - ;; I don't know why they made this type, but I'm guessing it's to avoid the compiler spilling to the stack (let ((gp-0 (new 'stack-no-clear 'add-prims-touching-work))) (set! (-> gp-0 tri1) arg3) (set! (-> gp-0 tri2) arg4) - ;; first, grab the entry for the collide-shapes involved. (let ((s2-0 (get-shapes-entry this (-> arg0 cshape) (-> arg1 cshape)))) (when s2-0 ;; if we ask for a,b, that function might give us b,a. Detect that, and swap our collide shape prims. (when (= (-> s2-0 cshape1) (-> arg1 cshape)) - (let ((v1-4 arg0)) - (set! arg0 arg1) - (set! arg1 v1-4) - ) - ) + (let ((v1-4 arg0)) (set! arg0 arg1) (set! arg1 v1-4))) (let ((s0-0 (-> s2-0 head))) ;; loop over all the entries in the shapes (while s0-0 @@ -253,42 +173,24 @@ ;; this value is unused. (-> s0-0 u) (let ((v1-12 (-> s0-0 prim1)) - (a1-2 (-> gp-0 tri1)) - ) + (a1-2 (-> gp-0 tri1))) (cond (a1-2 - ;; we have a tri, copy it - (set! (-> v1-12 has-tri?) #t) - (mem-copy! (the-as pointer (-> v1-12 tri)) (the-as pointer a1-2) 84) - ) + ;; we have a tri, copy it + (set! (-> v1-12 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-12 tri)) (the-as pointer a1-2) 84)) (else - ;; no tri - (set! (-> v1-12 has-tri?) #f) - ) - ) - ) + ;; no tri + (set! (-> v1-12 has-tri?) #f)))) ;; same for the other tri. (let ((v1-15 (-> s0-0 prim2)) - (a1-3 (-> gp-0 tri2)) - ) + (a1-3 (-> gp-0 tri2))) (cond - (a1-3 - (set! (-> v1-15 has-tri?) #t) - (mem-copy! (the-as pointer (-> v1-15 tri)) (the-as pointer a1-3) 84) - ) - (else - (set! (-> v1-15 has-tri?) #f) - ) - ) - ) - ) + (a1-3 (set! (-> v1-15 has-tri?) #t) (mem-copy! (the-as pointer (-> v1-15 tri)) (the-as pointer a1-3) 84)) + (else (set! (-> v1-15 has-tri?) #f))))) ;; after we found the matching node for these prims, we're done! - (return 0) - ) - (set! s0-0 (-> s0-0 next)) - ) - ) - + (return 0)) + (set! s0-0 (-> s0-0 next)))) ;; nope, didn't find an entry, so make a new one. (let ((s0-1 (alloc-node *touching-prims-entry-pool*))) ;; allocate a new node, link it. @@ -297,58 +199,31 @@ (set! (-> s0-1 next) v1-22) (set! (-> s0-1 prev) #f) (set! (-> s2-0 head) s0-1) - (if v1-22 - (set! (-> v1-22 prev) s0-1) - ) - ) + (if v1-22 (set! (-> v1-22 prev) s0-1))) ;; and set it up. (set! (-> s0-1 u) arg2) (when (>= arg2 0.0) ;; if we're >0, we have to move (which we haven't done yet) to actually collide. ;; flag us as resolve-u (meaning our u is from the resolve function, which looks at what _would_ ;; happen if we did it all at once.) - ;; if we're <0, we started in collision (possible, if we didnt' converge on the last frame) ;; we should still add, but we don't need to bother with the "did we go far enough" checks. (set! (-> s2-0 resolve-u) 1) - (set! (-> this resolve-u) 1) - ) + (set! (-> this resolve-u) 1)) (let ((v1-26 (-> s0-1 prim1)) - (a1-4 (-> gp-0 tri1)) - ) + (a1-4 (-> gp-0 tri1))) (set! (-> v1-26 cprim) arg0) (cond - (a1-4 - (set! (-> v1-26 has-tri?) #t) - (mem-copy! (the-as pointer (-> v1-26 tri)) (the-as pointer a1-4) 84) - ) - (else - (set! (-> v1-26 has-tri?) #f) - ) - ) - ) + (a1-4 (set! (-> v1-26 has-tri?) #t) (mem-copy! (the-as pointer (-> v1-26 tri)) (the-as pointer a1-4) 84)) + (else (set! (-> v1-26 has-tri?) #f)))) (let ((v1-29 (-> s0-1 prim2)) - (a1-5 (-> gp-0 tri2)) - ) + (a1-5 (-> gp-0 tri2))) (set! (-> v1-29 cprim) arg1) (cond - (a1-5 - (set! (-> v1-29 has-tri?) #t) - (mem-copy! (the-as pointer (-> v1-29 tri)) (the-as pointer a1-5) 84) - ) - (else - (set! (-> v1-29 has-tri?) #f) - ) - ) - ) - ) - ) - ) - ) - ) + (a1-5 (set! (-> v1-29 has-tri?) #t) (mem-copy! (the-as pointer (-> v1-29 tri)) (the-as pointer a1-5) 84)) + (else (set! (-> v1-29 has-tri?) #f))))))))) 0 - (none) - ) + (none)) (defmethod update-from-step-size ((this touching-list) (arg0 float)) "Given that we actually will take a step size of arg0, remove things we won't actually hit." @@ -356,7 +231,6 @@ (when (nonzero? (-> this resolve-u)) ;; remember we did it (set! (-> this resolve-u) 0) - ;; loop through touching-shape-entries (let ((s5-0 (the-as touching-shapes-entry (-> this touching-shapes)))) (countdown (s4-0 (-> this num-touching-shapes)) @@ -381,52 +255,26 @@ ;; we set the u to -1.0 to indicate that we're massively intersecting. ;; this will no longer be eligible for removal because we actually hit it. (set! (-> s3-0 u) -1.0) - (set! s3-0 (-> s3-0 next)) - ) + (set! s3-0 (-> s3-0 next))) (else - ;; we would have needed to move more than arg0 to hit this one. - ;; at least for now, remove by splicing out of the list and freeing. - (let ((a1-1 s3-0)) ;; this - (let ((v1-7 (-> s3-0 next))) ;; next - (let ((a0-1 (-> s3-0 prev))) ;; prev - (if a0-1 - (set! (-> a0-1 next) v1-7) - (set! (-> s5-0 head) v1-7) - ) - (if v1-7 - (set! (-> v1-7 prev) a0-1) - ) - ) - (set! s3-0 v1-7) - ) - (free-node *touching-prims-entry-pool* a1-1) - ) - ) - ) - s3-0 - ) + ;; we would have needed to move more than arg0 to hit this one. + ;; at least for now, remove by splicing out of the list and freeing. + (let ((a1-1 s3-0)) ;; this + (let ((v1-7 (-> s3-0 next))) ;; next + (let ((a0-1 (-> s3-0 prev))) ;; prev + (if a0-1 (set! (-> a0-1 next) v1-7) (set! (-> s5-0 head) v1-7)) + (if v1-7 (set! (-> v1-7 prev) a0-1))) + (set! s3-0 v1-7)) + (free-node *touching-prims-entry-pool* a1-1)))) + s3-0) (else - ;; not touching, advance to the next. - (-> s3-0 next) - ) - ) - ) - ) - ) - ) + ;; not touching, advance to the next. + (-> s3-0 next))))))) ;; if we removed everything from this, mark it as dead (the allocation function will reuse it now) - (if (not (-> s5-0 head)) - (set! (-> s5-0 cshape1) #f) - ) - ) - ) - (&+! s5-0 16) - ) - ) - ) + (if (not (-> s5-0 head)) (set! (-> s5-0 cshape1) #f)))) + (&+! s5-0 16)))) 0 - (none) - ) + (none)) (defmethod send-events-for-touching-shapes ((this touching-list)) "Send all events for touching shapes. @@ -439,112 +287,57 @@ ;; the touching list will run its logic on it regardless. ;; this is fixed here by creating a really large list of 2 handles per collide shape and storing all collided ;; process handles there. (process->handle) is then safe to use. - ; (* 2 TOUCHING_LIST_LENGTH) -> 64 (let ((handles (new 'stack-no-clear 'array 'handle 64))) - - (let ((entry (the-as touching-shapes-entry (-> this touching-shapes)))) - (countdown (i (-> this num-touching-shapes)) - (let ((c1 (-> entry cshape1))) - (when c1 - (let ((c2 (-> entry cshape2))) - - ;; not quite sure why, but we make it look like cshape1 (s4) is target always. - ;; I guess this makes it so the target/enemy events are always sent in the same order. - (when (= (-> c2 process type) target) - (swap! c1 c2) - ) - - (set! (-> handles (+ 0 (* 2 i))) (process->handle (-> c1 process))) - (set! (-> handles (+ 1 (* 2 i))) (process->handle (-> c2 process))) - ) - ) - ) - (set! entry (-> (the-as (inline-array touching-shapes-entry) entry) 1)) - ) - ) - - (let ((entry (the-as touching-shapes-entry (-> this touching-shapes)))) - (countdown (i (-> this num-touching-shapes)) - (let ((c1 (-> entry cshape1))) - (when c1 - (let ((c2 (-> entry cshape2))) - - ;; not quite sure why, but we make it look like cshape1 (s4) is target always. - ;; I guess this makes it so the target/enemy events are always sent in the same order. - (when (= (-> c2 process type) target) - (swap! c1 c2) - ) - - ;; send events! - (let ( - (c1-proc (handle->process (-> handles (+ 0 (* 2 i))))) - (c2-proc (handle->process (-> handles (+ 1 (* 2 i))))) - ) - (let ((v1-4 (-> c1 event-self))) - (if v1-4 - (send-event c1-proc v1-4 :from c2-proc entry) - ) - ) - (let ((v1-5 (-> c1 event-other))) - (if v1-5 - (send-event c2-proc v1-5 :from c1-proc entry) - ) - ) - (let ((v1-6 (-> c2 event-self))) - (if v1-6 - (send-event c2-proc v1-6 :from c1-proc entry) - ) - ) - (let ((v1-7 (-> c2 event-other))) - (if v1-7 - (send-event c1-proc v1-7 :from c2-proc entry) - ) - ) - ) - ) - ) - ) - (set! entry (-> (the-as (inline-array touching-shapes-entry) entry) 1)) - ) - ) - - ) + (let ((entry (the-as touching-shapes-entry (-> this touching-shapes)))) + (countdown (i (-> this num-touching-shapes)) + (let ((c1 (-> entry cshape1))) + (when c1 + (let ((c2 (-> entry cshape2))) + ;; not quite sure why, but we make it look like cshape1 (s4) is target always. + ;; I guess this makes it so the target/enemy events are always sent in the same order. + (when (= (-> c2 process type) target) + (swap! c1 c2)) + (set! (-> handles (+ 0 (* 2 i))) (process->handle (-> c1 process))) + (set! (-> handles (+ 1 (* 2 i))) (process->handle (-> c2 process)))))) + (set! entry (-> (the-as (inline-array touching-shapes-entry) entry) 1)))) + (let ((entry (the-as touching-shapes-entry (-> this touching-shapes)))) + (countdown (i (-> this num-touching-shapes)) + (let ((c1 (-> entry cshape1))) + (when c1 + (let ((c2 (-> entry cshape2))) + ;; not quite sure why, but we make it look like cshape1 (s4) is target always. + ;; I guess this makes it so the target/enemy events are always sent in the same order. + (when (= (-> c2 process type) target) + (swap! c1 c2)) + ;; send events! + (let ((c1-proc (handle->process (-> handles (+ 0 (* 2 i))))) + (c2-proc (handle->process (-> handles (+ 1 (* 2 i)))))) + (let ((v1-4 (-> c1 event-self))) (if v1-4 (send-event c1-proc v1-4 :from c2-proc entry))) + (let ((v1-5 (-> c1 event-other))) (if v1-5 (send-event c2-proc v1-5 :from c1-proc entry))) + (let ((v1-6 (-> c2 event-self))) (if v1-6 (send-event c2-proc v1-6 :from c1-proc entry))) + (let ((v1-7 (-> c2 event-other))) (if v1-7 (send-event c1-proc v1-7 :from c2-proc entry))))))) + (set! entry (-> (the-as (inline-array touching-shapes-entry) entry) 1))))) 0 - (none) - ) + (none)) -(defmethod prims-touching? touching-shapes-entry ((this touching-shapes-entry) (arg0 collide-shape-moving) (arg1 uint)) +(defmethod prims-touching? ((this touching-shapes-entry) (arg0 collide-shape-moving) (arg1 uint)) "In a pair of collide shapes, is a prim from the given collide shape with the given prim-id mask touching the other shape?" (cond ((= (-> this cshape1) arg0) (let ((v1-1 (-> this head))) (while v1-1 - (if (logtest? (-> v1-1 prim1 cprim prim-id) arg1) - (return v1-1) - ) - (set! v1-1 (-> v1-1 next)) - ) - ) - ) + (if (logtest? (-> v1-1 prim1 cprim prim-id) arg1) (return v1-1)) + (set! v1-1 (-> v1-1 next))))) ((= (-> this cshape2) arg0) (let ((v1-4 (-> this head))) (while v1-4 - (if (logtest? (-> v1-4 prim2 cprim prim-id) arg1) - (return v1-4) - ) - (set! v1-4 (-> v1-4 next)) - ) - ) - ) - (else - (format 0 "ERROR: touching-shapes-entry::prims-touching? : Bogus cshape value!~%") - ) - ) - (the-as touching-prims-entry #f) - ) + (if (logtest? (-> v1-4 prim2 cprim prim-id) arg1) (return v1-4)) + (set! v1-4 (-> v1-4 next))))) + (else (format 0 "ERROR: touching-shapes-entry::prims-touching? : Bogus cshape value!~%"))) + (the-as touching-prims-entry #f)) -(defmethod prims-touching-action? touching-shapes-entry ((this touching-shapes-entry) (arg0 collide-shape) (arg1 collide-action) (arg2 collide-action)) +(defmethod prims-touching-action? ((this touching-shapes-entry) (arg0 collide-shape) (arg1 collide-action) (arg2 collide-action)) "In a pair of collide shapes, find a pair of colliding prims where the prim from the given collide shape has at least one of the actions in arg1 and none of the actions in arg2." (cond @@ -552,81 +345,38 @@ (let ((v1-1 (-> this head))) (while v1-1 (let ((a0-1 (-> v1-1 prim1 cprim))) - (if (and (logtest? arg1 (-> a0-1 prim-core action)) (not (logtest? arg2 (-> a0-1 prim-core action)))) - (return v1-1) - ) - ) - (set! v1-1 (-> v1-1 next)) - ) - ) - ) + (if (and (logtest? arg1 (-> a0-1 prim-core action)) (not (logtest? arg2 (-> a0-1 prim-core action)))) (return v1-1))) + (set! v1-1 (-> v1-1 next))))) ((= (-> this cshape2) arg0) (let ((v1-4 (-> this head))) (while v1-4 (let ((a0-5 (-> v1-4 prim2 cprim))) - (if (and (logtest? arg1 (-> a0-5 prim-core action)) (not (logtest? arg2 (-> a0-5 prim-core action)))) - (return v1-4) - ) - ) - (set! v1-4 (-> v1-4 next)) - ) - ) - ) - (else - (format 0 "ERROR: touching-shapes-entry::prims-touching-action? : Bogus cshape value!~%") - ) - ) - (the-as touching-prims-entry #f) - ) + (if (and (logtest? arg1 (-> a0-5 prim-core action)) (not (logtest? arg2 (-> a0-5 prim-core action)))) (return v1-4))) + (set! v1-4 (-> v1-4 next))))) + (else (format 0 "ERROR: touching-shapes-entry::prims-touching-action? : Bogus cshape value!~%"))) + (the-as touching-prims-entry #f)) (defmethod get-touched-shape ((this touching-shapes-entry) (arg0 collide-shape)) "Get the other shape in a pair of shapes." (cond - ((= (-> this cshape1) arg0) - (return (-> this cshape2)) - ) - ((= (-> this cshape2) arg0) - (return (-> this cshape1)) - ) - ) - (the-as collide-shape #f) - ) + ((= (-> this cshape1) arg0) (return (-> this cshape2))) + ((= (-> this cshape2) arg0) (return (-> this cshape1)))) + (the-as collide-shape #f)) (defmethod get-touched-prim ((this touching-prims-entry) (arg0 trsqv) (arg1 touching-shapes-entry)) "Get the primitive belonging to the collide shape that is touching." (cond - ((= (-> arg1 cshape1) arg0) - (return (-> this prim1 cprim)) - ) - ((= (-> arg1 cshape2) arg0) - (return (-> this prim2 cprim)) - ) - ) - (the-as collide-shape-prim #f) - ) + ((= (-> arg1 cshape1) arg0) (return (-> this prim1 cprim))) + ((= (-> arg1 cshape2) arg0) (return (-> this prim2 cprim)))) + (the-as collide-shape-prim #f)) (defmethod get-touched-tri ((this touching-prims-entry) (arg0 collide-shape) (arg1 touching-shapes-entry)) "Get the triangle belonging to the the collide shape that is touching (if it has one, otherwise #f)" (let ((v0-0 (the-as collide-tri-result #f))) (cond - ((= (-> arg1 cshape1) arg0) - (let ((v1-2 (-> this prim1))) - (if (-> v1-2 has-tri?) - (set! v0-0 (-> v1-2 tri)) - ) - ) - ) - ((= (-> arg1 cshape2) arg0) - (let ((v1-5 (-> this prim2))) - (if (-> v1-5 has-tri?) - (set! v0-0 (-> v1-5 tri)) - ) - ) - ) - ) - v0-0 - ) - ) + ((= (-> arg1 cshape1) arg0) (let ((v1-2 (-> this prim1))) (if (-> v1-2 has-tri?) (set! v0-0 (-> v1-2 tri))))) + ((= (-> arg1 cshape2) arg0) (let ((v1-5 (-> this prim2))) (if (-> v1-5 has-tri?) (set! v0-0 (-> v1-5 tri)))))) + v0-0)) (defmethod get-middle-of-bsphere-overlap ((this touching-prims-entry) (arg0 vector)) "This is a bit weird... @@ -634,27 +384,12 @@ that is inside of both spheres, and get the midpoint of that." (let* ((s4-0 (-> this prim1 cprim)) (s3-0 (-> this prim2 cprim)) - ;; compute the offset between the prim cores. - (gp-1 (vector-! - (new 'stack-no-clear 'vector) - (the-as vector (-> s3-0 prim-core)) - (the-as vector (-> s4-0 prim-core)) - ) - ) - ) - + (gp-1 (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> s3-0 prim-core)) (the-as vector (-> s4-0 prim-core))))) ;; subtract off the two radius. this is now the offset between the "closest" points (and is negative) (let ((f1-2 (- (- (vector-length gp-1) (-> s3-0 prim-core world-sphere w)) (-> s4-0 prim-core world-sphere w)))) ;; this offset is the radius, minus half the overlap distance - (vector-normalize! gp-1 (+ (-> s4-0 prim-core world-sphere w) (* 0.5 f1-2))) - ) + (vector-normalize! gp-1 (+ (-> s4-0 prim-core world-sphere w) (* 0.5 f1-2)))) ;; so add it to s4's origin to get to the halfway point - (vector+! arg0 gp-1 (the-as vector (-> s4-0 prim-core))) - ) - arg0 - ) - - - - + (vector+! arg0 gp-1 (the-as vector (-> s4-0 prim-core)))) + arg0) diff --git a/goal_src/jak1/engine/collide/collide.gc b/goal_src/jak1/engine/collide/collide.gc index deea39d0b8..d6577d43c1 100644 --- a/goal_src/jak1/engine/collide/collide.gc +++ b/goal_src/jak1/engine/collide/collide.gc @@ -1,32 +1,25 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: collide.gc -;; name in dgo: collide -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(define *collide-vif0-init* (the-as (array uint32) (new 'static 'boxed-array :type uint32 - #x30000000 - #x4d000000 - #x4d000000 - #x4d000000 - #x3f800000 - #x5000001 - #x20000000 - #x40404040 - #x1000404 - #x0 - #x0 - #x0 - ) - ) - ) - - - - +(define *collide-vif0-init* + (the-as (array uint32) + (new 'static + 'boxed-array + :type + uint32 + #x30000000 + #x4d000000 + #x4d000000 + #x4d000000 + #x3f800000 + #x5000001 + #x20000000 + #x40404040 + #x1000404 + #x0 + #x0 + #x0))) diff --git a/goal_src/jak1/engine/collide/main-collide.gc b/goal_src/jak1/engine/collide/main-collide.gc index 47cde0991d..37d4962f80 100644 --- a/goal_src/jak1/engine/collide/main-collide.gc +++ b/goal_src/jak1/engine/collide/main-collide.gc @@ -1,95 +1,78 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/gfx/tie/tie-h.gc") (require "engine/ps2/vu1-macros.gc") (require "engine/geometry/bounding-box-h.gc") (require "engine/math/math.gc") -;; name: main-collide.gc -;; name in dgo: main-collide -;; dgos: GAME, ENGINE - ;; definition for function drawable-sphere-box-intersect? ;; WARN: Function may read a register that is not set: f31 ;; Used lq/sq (defun drawable-sphere-box-intersect? ((arg0 drawable) (arg1 bounding-box4w)) (local-vars - (r0-0 int) - (r0-1 int) - (r0-2 uint128) - (r0-3 int) - (v1-1 uint128) - (v1-2 uint128) - (v1-3 uint128) - (a0-1 uint128) - (a1-2 uint128) - (a2-0 uint128) - (f31-0 none) - ) + (r0-0 int) + (r0-1 int) + (r0-2 uint128) + (r0-3 int) + (v1-1 uint128) + (v1-2 uint128) + (v1-3 uint128) + (a0-1 uint128) + (a1-2 uint128) + (a2-0 uint128) + (f31-0 none)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) - (nop!) - (nop!) - (.lvf vf1 (&-> arg0 bsphere quad)) - (.add.w.vf vf2 vf1 vf1 :mask #b111) - (let ((v1-0 (-> arg1 min quad))) - (.sub.w.vf vf1 vf1 vf1 :mask #b111) - (let ((a1-1 (-> arg1 max quad))) - (.ftoi.vf vf4 vf2) - (nop!) - (.ftoi.vf vf3 vf1) - (nop!) - (.mov a0-1 vf4) - (nop!) - (.mov a2-0 vf3) - (nop!) - (.pcgtw a1-2 a2-0 a1-1) - ) - (.mov r0-0 f31-0) - (.pcgtw v1-1 v1-0 a0-1) - ) - (.mov r0-1 f31-0) - (.por v1-2 a1-2 v1-1) - (.mov r0-2 f31-0) - (.ppach v1-3 r0-2 v1-2) - (.mov r0-3 f31-0) - (let ((v1-4 (shl (the-as int v1-3) 16))) - (nop!) - (zero? v1-4) - ) - ) - ) + (vf4 :class vf)) + (nop!) + (nop!) + (.lvf vf1 (&-> arg0 bsphere quad)) + (.add.w.vf vf2 vf1 vf1 :mask #b111) + (let ((v1-0 (-> arg1 min quad))) + (.sub.w.vf vf1 vf1 vf1 :mask #b111) + (let ((a1-1 (-> arg1 max quad))) + (.ftoi.vf vf4 vf2) + (nop!) + (.ftoi.vf vf3 vf1) + (nop!) + (.mov a0-1 vf4) + (nop!) + (.mov a2-0 vf3) + (nop!) + (.pcgtw a1-2 a2-0 a1-1)) + (.mov r0-0 f31-0) + (.pcgtw v1-1 v1-0 a0-1)) + (.mov r0-1 f31-0) + (.por v1-2 a1-2 v1-1) + (.mov r0-2 f31-0) + (.ppach v1-3 r0-2 v1-2) + (.mov r0-3 f31-0) + (let ((v1-4 (shl (the-as int v1-3) 16))) (nop!) (zero? v1-4)))) ;; definition for function instance-sphere-box-intersect? ;; WARN: Function may read a register that is not set: f31 ;; Used lq/sq -(defun - instance-sphere-box-intersect? - ((arg0 drawable) (arg1 instance-tie) (arg2 bounding-box4w)) +(defun instance-sphere-box-intersect? ((arg0 drawable) (arg1 instance-tie) (arg2 bounding-box4w)) (local-vars - (zero uint128) - (v1-3 uint128) - (v1-4 uint128) - (v1-5 uint128) - (a0-2 uint128) - (a1-2 uint128) - (a2-1 uint128) - (a3-1 uint128) - (a3-3 uint128) - (a3-4 uint128) - (t0-1 uint128) - (t0-2 uint128) - (t1-0 uint128) - (t2-1 uint128) - (t2-2 uint128) - (f31-0 none) - ) + (zero uint128) + (v1-3 uint128) + (v1-4 uint128) + (v1-5 uint128) + (a0-2 uint128) + (a1-2 uint128) + (a2-1 uint128) + (a3-1 uint128) + (a3-3 uint128) + (a3-4 uint128) + (t0-1 uint128) + (t0-2 uint128) + (t1-0 uint128) + (t2-1 uint128) + (t2-2 uint128) + (f31-0 none)) (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) @@ -101,86 +84,73 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) - (init-vf0-vector) - (nop!) - (let ((v1-0 (-> arg1 max-scale))) - (nop!) - (let ((a3-0 (the-as uint128 (-> arg1 origin vector4h 3 long)))) - (nop!) - (let ((t2-0 (the-as uint128 (-> arg1 origin vector4h 0 long)))) - (.pextlh a3-1 a3-0 zero) - (let ((t0-0 (the-as uint128 (-> arg1 origin vector4h 1 long)))) - (.pw.sra t1-0 a3-1 10) - (let ((a3-2 (the-as uint128 (-> arg1 origin vector4h 2 long)))) - (.pextlh t2-1 t2-0 zero) - (.pw.sra t2-2 t2-1 16) - (.pextlh t0-1 t0-0 zero) - (.mov vf8 t1-0) - (.pw.sra t0-2 t0-1 16) - (.mov vf5 t2-2) - (.pextlh a3-3 a3-2 zero) - ) - ) - ) - ) - (.mov vf6 t0-2) - (.pw.sra a3-4 a3-3 16) - (.lvf vf9 (&-> arg1 bsphere quad)) - (nop!) - (.mov vf7 a3-4) - (nop!) - (.mov vf10 v1-0) - ) - (.itof.vf vf8 vf8) - (nop!) - (vitof12.xyzw vf5 vf5) - (nop!) - (vitof12.xyzw vf6 vf6) - (nop!) - (vitof12.xyzw vf7 vf7) - (nop!) - (.add.vf vf8 vf8 vf9 :mask #b111) - (nop!) - (nop!) - (.lvf vf9 (&-> arg0 bsphere quad)) - (vitof12.xyzw vf10 vf10) - (nop!) - (.mul.w.vf vf10 vf10 vf9 :mask #b1) - (nop!) - (.mul.x.vf acc vf5 vf9) - (nop!) - (.add.mul.y.vf acc vf6 vf9 acc) - (let ((v1-2 (-> arg2 min quad))) - (.add.mul.z.vf acc vf7 vf9 acc) - (let ((a1-1 (-> arg2 max quad))) - (.add.mul.w.vf vf1 vf8 vf0 acc) - (nop!) - (.add.x.vf vf2 vf1 vf10 :mask #b111) - (nop!) - (.sub.x.vf vf1 vf1 vf10 :mask #b111) - (nop!) - (.ftoi.vf vf4 vf2) - (nop!) - (.ftoi.vf vf3 vf1) - (nop!) - (.mov a0-2 vf4) - (nop!) - (.mov a2-1 vf3) - (nop!) - (.pcgtw a1-2 a2-1 a1-1) - ) - (.pcgtw v1-3 v1-2 a0-2) - ) - (.por v1-4 a1-2 v1-3) - (.ppach v1-5 zero v1-4) - (let ((v1-6 (shl (the-as int v1-5) 16))) - (nop!) - (zero? v1-6) - ) - ) - ) + (vf9 :class vf)) + (init-vf0-vector) + (nop!) + (let ((v1-0 (-> arg1 max-scale))) + (nop!) + (let ((a3-0 (the-as uint128 (-> arg1 origin vector4h 3 long)))) + (nop!) + (let ((t2-0 (the-as uint128 (-> arg1 origin vector4h 0 long)))) + (.pextlh a3-1 a3-0 zero) + (let ((t0-0 (the-as uint128 (-> arg1 origin vector4h 1 long)))) + (.pw.sra t1-0 a3-1 10) + (let ((a3-2 (the-as uint128 (-> arg1 origin vector4h 2 long)))) + (.pextlh t2-1 t2-0 zero) + (.pw.sra t2-2 t2-1 16) + (.pextlh t0-1 t0-0 zero) + (.mov vf8 t1-0) + (.pw.sra t0-2 t0-1 16) + (.mov vf5 t2-2) + (.pextlh a3-3 a3-2 zero))))) + (.mov vf6 t0-2) + (.pw.sra a3-4 a3-3 16) + (.lvf vf9 (&-> arg1 bsphere quad)) + (nop!) + (.mov vf7 a3-4) + (nop!) + (.mov vf10 v1-0)) + (.itof.vf vf8 vf8) + (nop!) + (vitof12.xyzw vf5 vf5) + (nop!) + (vitof12.xyzw vf6 vf6) + (nop!) + (vitof12.xyzw vf7 vf7) + (nop!) + (.add.vf vf8 vf8 vf9 :mask #b111) + (nop!) + (nop!) + (.lvf vf9 (&-> arg0 bsphere quad)) + (vitof12.xyzw vf10 vf10) + (nop!) + (.mul.w.vf vf10 vf10 vf9 :mask #b1) + (nop!) + (.mul.x.vf acc vf5 vf9) + (nop!) + (.add.mul.y.vf acc vf6 vf9 acc) + (let ((v1-2 (-> arg2 min quad))) + (.add.mul.z.vf acc vf7 vf9 acc) + (let ((a1-1 (-> arg2 max quad))) + (.add.mul.w.vf vf1 vf8 vf0 acc) + (nop!) + (.add.x.vf vf2 vf1 vf10 :mask #b111) + (nop!) + (.sub.x.vf vf1 vf1 vf10 :mask #b111) + (nop!) + (.ftoi.vf vf4 vf2) + (nop!) + (.ftoi.vf vf3 vf1) + (nop!) + (.mov a0-2 vf4) + (nop!) + (.mov a2-1 vf3) + (nop!) + (.pcgtw a1-2 a2-1 a1-1)) + (.pcgtw v1-3 v1-2 a0-2)) + (.por v1-4 a1-2 v1-3) + (.ppach v1-5 zero v1-4) + (let ((v1-6 (shl (the-as int v1-5) 16))) (nop!) (zero? v1-6)))) ;; definition for function instance-tfragment-add-debug-sphere ;; Used lq/sq @@ -190,37 +160,25 @@ (vf10 :class vf) (vf11 :class vf) (vf12 :class vf) - (vf9 :class vf) - ) - (init-vf0-vector) - (nop!) - (let ((v1-0 (the-as uint128 (-> arg1 origin vector4h 3 long)))) - (.pextlh v1-1 v1-0 r0-0) - ) - (.lvf vf9 (&-> arg0 bsphere quad)) - (.pw.sra v1-2 v1-1 10) - (.lvf vf10 (&-> arg1 bsphere quad)) - (nop!) - (.mov vf12 v1-2) - (.itof.vf vf12 vf12) - (nop!) - (.add.vf vf10 vf10 vf12 :mask #b111) - (nop!) - (.add.vf vf9 vf9 vf10 :mask #b111) - (nop!) - (.add.w.vf vf11 vf0 vf9 :mask #b1) - (nop!) - (.mov a3-0 vf11) - (nop!) - (let ((a2-0 (new-stack-vector0))) - (.svf (&-> a2-0 quad) vf9) - (add-debug-sphere - #t - (bucket-id debug) - a2-0 - a3-0 - (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80) - ) - ) - ) - ) + (vf9 :class vf)) + (init-vf0-vector) + (nop!) + (let ((v1-0 (the-as uint128 (-> arg1 origin vector4h 3 long)))) (.pextlh v1-1 v1-0 r0-0)) + (.lvf vf9 (&-> arg0 bsphere quad)) + (.pw.sra v1-2 v1-1 10) + (.lvf vf10 (&-> arg1 bsphere quad)) + (nop!) + (.mov vf12 v1-2) + (.itof.vf vf12 vf12) + (nop!) + (.add.vf vf10 vf10 vf12 :mask #b111) + (nop!) + (.add.vf vf9 vf9 vf10 :mask #b111) + (nop!) + (.add.w.vf vf11 vf0 vf9 :mask #b1) + (nop!) + (.mov a3-0 vf11) + (nop!) + (let ((a2-0 (new-stack-vector0))) + (.svf (&-> a2-0 quad) vf9) + (add-debug-sphere #t (bucket-id debug) a2-0 a3-0 (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80))))) diff --git a/goal_src/jak1/engine/collide/pat-h.gc b/goal_src/jak1/engine/collide/pat-h.gc index e03154cadd..3d4383b2d5 100644 --- a/goal_src/jak1/engine/collide/pat-h.gc +++ b/goal_src/jak1/engine/collide/pat-h.gc @@ -1,13 +1,7 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/math.gc") - -;; name: pat-h.gc -;; name in dgo: pat-h -;; dgos: GAME, ENGINE - (defenum pat-material :type uint8 (stone) @@ -32,15 +26,13 @@ (swamp) (stopproj) (rotate) - (neutral) - ) + (neutral)) (defenum pat-mode :type uint8 (ground) (wall) - (obstacle) - ) + (obstacle)) (defenum pat-event :type uint8 @@ -50,8 +42,7 @@ (burn) (deadlyup) (burnup) - (melt) - ) + (melt)) ;; DECOMP BEGINS @@ -59,65 +50,67 @@ ;; It packs all data into a 32-bit pat-surface type. (deftype pat-surface (uint32) - ((skip uint8 :offset 0 :size 3) - (mode pat-mode :offset 3 :size 3) - (material pat-material :offset 6 :size 6) - (camera uint8 :offset 12 :size 2) - (event pat-event :offset 14 :size 6) - (noentity uint8 :offset 0 :size 1) - (nocamera uint8 :offset 1 :size 1) - (noedge uint8 :offset 2 :size 1) - (nolineofsight uint8 :offset 12 :size 1) - (unknown-bit uint8 :offset 15 :size 1) - ) - ) + ((skip uint8 :offset 0 :size 3) + (mode pat-mode :offset 3 :size 3) + (material pat-material :offset 6 :size 6) + (camera uint8 :offset 12 :size 2) + (event pat-event :offset 14 :size 6) + (noentity uint8 :offset 0 :size 1) + (nocamera uint8 :offset 1 :size 1) + (noedge uint8 :offset 2 :size 1) + (nolineofsight uint8 :offset 12 :size 1) + (unknown-bit uint8 :offset 15 :size 1))) (defun-debug pat-material->string ((pat pat-surface)) - (enum->string pat-material (-> pat material)) - ) + (enum->string pat-material (-> pat material))) (defun-debug pat-mode->string ((pat pat-surface)) - (enum->string pat-mode (-> pat mode)) - ) + (enum->string pat-mode (-> pat mode))) (defun-debug pat-event->string ((pat pat-surface)) - (enum->string pat-event (-> pat event)) - ) + (enum->string pat-event (-> pat event))) ;; for debug drawing pat's by mode. (deftype pat-mode-info (structure) - ((name string) - (wall-angle float) - (color rgba) - (hilite-color rgba) - ) - ) - + ((name string) + (wall-angle float) + (color rgba) + (hilite-color rgba))) -(define *pat-mode-info* (new 'static 'inline-array pat-mode-info 4 - (new 'static 'pat-mode-info - :name "ground" - :wall-angle 0.2 - :color (new 'static 'rgba :r #x7f :a #x40) - :hilite-color (new 'static 'rgba :r #xff :a #x80) - ) - (new 'static 'pat-mode-info - :name "wall" - :wall-angle 2.0 - :color (new 'static 'rgba :b #x7f :a #x40) - :hilite-color (new 'static 'rgba :b #xff :a #x80) - ) - (new 'static 'pat-mode-info - :name "obstacle" - :wall-angle 0.82 - :color (new 'static 'rgba :r #x7f :b #x7f :a #x40) - :hilite-color (new 'static 'rgba :r #xff :b #xff :a #x80) - ) - (new 'static 'pat-mode-info - :name "pole" - :wall-angle 2.0 - :color (new 'static 'rgba :r #x7f :g #x7f :a #x40) - :hilite-color (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) - ) +(define *pat-mode-info* + (new 'static + 'inline-array + pat-mode-info + 4 + (new 'static + 'pat-mode-info + :name "ground" + :wall-angle 0.2 + :color + (new 'static 'rgba :r #x7f :a #x40) + :hilite-color + (new 'static 'rgba :r #xff :a #x80)) + (new 'static + 'pat-mode-info + :name "wall" + :wall-angle 2.0 + :color + (new 'static 'rgba :b #x7f :a #x40) + :hilite-color + (new 'static 'rgba :b #xff :a #x80)) + (new 'static + 'pat-mode-info + :name "obstacle" + :wall-angle 0.82 + :color + (new 'static 'rgba :r #x7f :b #x7f :a #x40) + :hilite-color + (new 'static 'rgba :r #xff :b #xff :a #x80)) + (new 'static + 'pat-mode-info + :name "pole" + :wall-angle 2.0 + :color + (new 'static 'rgba :r #x7f :g #x7f :a #x40) + :hilite-color + (new 'static 'rgba :r #xff :g #xff :a #x80)))) diff --git a/goal_src/jak1/engine/collide/surface-h.gc b/goal_src/jak1/engine/collide/surface-h.gc index 0d1e460849..503317f0e0 100644 --- a/goal_src/jak1/engine/collide/surface-h.gc +++ b/goal_src/jak1/engine/collide/surface-h.gc @@ -1,21 +1,14 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") - -;; name: surface-h.gc -;; name in dgo: surface-h -;; dgos: GAME, ENGINE - (defenum surface-flags :bitfield #t :type uint32 (allow-look-around) ;; allows entering first person with triangle - (dive) ;; set on all diving (dive, dive-bottom) surfaces - (surf02) ;; unused - (no-turn-around) ;; prevent "changed direction" animation from happening - + (dive) ;; set on all diving (dive, dive-bottom) surfaces + (surf02) ;; unused + (no-turn-around) ;; prevent "changed direction" animation from happening ;; when jak is on a surface with this flag, the case where jak ;; is forced to rotate in the direction he's traveling is ;; never taken. It's used on ice (though it is not needed, the turn toward transv @@ -25,10 +18,8 @@ ;; if jak should always be forced to rotate in the direction he's travelling. ;; used for the slides and also the warp gate jump (always-rotate-toward-transv) - ;; never set, but prevents jak from jumping (both normal and roll) (prevent-jump) - ;; target is launch jumping (from a blue eco pad) (prevent-attacks-during-launch-jump) (surf08) ;; never set, prevents various attacks from being possible @@ -36,7 +27,7 @@ (allow-edge-grab) ;; if set, and jak is falling, turn on the ledge grab search. (jump) ;; set on all jumps, used to prevent "on-grounds" in places (attacking) ;; set on all attacks, but not actually used anywhere - (ducking) ;; set on all ducks, but not actually used anywhere + (ducking) ;; set on all ducks, but not actually used anywhere (moving-ground) ;; unused, but would make sense if jak was on something moving ) @@ -54,1199 +45,1120 @@ ;; Note that "surface" can apply to weird things, like riding the zoomer or swimming as well. (deftype surface (basic) - ((name symbol) - (turnv float) - (turnvv float) - (tiltv float) - (tiltvv float) - (transv-max float) - (target-speed float) - (seek0 float) - (seek90 float) - (seek180 float) - (fric float) - (nonlin-fric-dist float) - (slip-factor float) - (slide-factor float) - (slope-up-factor float) - (slope-down-factor float) - (slope-slip-angle float) - (impact-fric float) - (bend-factor float) - (bend-speed float) - (alignv float) - (slope-up-traction float) - (align-speed float) - (active-hook (function none) :offset 128) - (touch-hook (function none)) - (impact-hook function) - (mult-hook (function surface surface surface int none)) - (mode symbol) - (flags surface-flags) - (data float 30 :overlay-at turnv) - (hook function 4 :overlay-at active-hook) - (dataw uint32 2 :overlay-at mode) - ) - ) + ((name symbol) + (turnv float) + (turnvv float) + (tiltv float) + (tiltvv float) + (transv-max float) + (target-speed float) + (seek0 float) + (seek90 float) + (seek180 float) + (fric float) + (nonlin-fric-dist float) + (slip-factor float) + (slide-factor float) + (slope-up-factor float) + (slope-down-factor float) + (slope-slip-angle float) + (impact-fric float) + (bend-factor float) + (bend-speed float) + (alignv float) + (slope-up-traction float) + (align-speed float) + (active-hook (function none) :offset 128) + (touch-hook (function none)) + (impact-hook function) + (mult-hook (function surface surface surface int none)) + (mode symbol) + (flags surface-flags) + (data float 30 :overlay-at turnv) + (hook function 4 :overlay-at active-hook) + (dataw uint32 2 :overlay-at mode))) ;; these calc-terminal functions are unused. (defun calc-terminal-vel ((arg0 float) (arg1 float) (arg2 float)) - (- (* (/ (- (* 0.016666668 arg0) arg1) arg2) (- 1.0 arg2)) arg1) - ) + (- (* (/ (- (* 0.016666668 arg0) arg1) arg2) (- 1.0 arg2)) arg1)) (defun calc-terminal2-vel ((arg0 float) (arg1 float) (arg2 float) (arg3 float)) - (let ((f0-4 (sqrtf (/ (- (* 0.016666668 arg0) arg1) arg2)))) - (- f0-4 (+ arg1 (* arg2 (* f0-4 f0-4)))) - ) - ) + (let ((f0-4 (sqrtf (/ (- (* 0.016666668 arg0) arg1) arg2)))) (- f0-4 (+ arg1 (* arg2 (* f0-4 f0-4)))))) (defun calc-terminal4-vel ((arg0 float) (arg1 float) (arg2 float)) - (let ((f0-5 (sqrtf (sqrtf (/ (- (* 0.016666668 arg0) arg1) arg2))))) - (- f0-5 (+ arg1 (* arg2 (* f0-5 f0-5 f0-5 f0-5)))) - ) - ) + (let ((f0-5 (sqrtf (sqrtf (/ (- (* 0.016666668 arg0) arg1) arg2))))) (- f0-5 (+ arg1 (* arg2 (* f0-5 f0-5 f0-5 f0-5)))))) (defmethod print ((this surface)) ;; seems this format string is wrong. - (format - #t - "# this turnv) - (-> this turnvv) - (-> this tiltv) - (-> this tiltvv) - (-> this transv-max) - ) + (format #t + "# this turnv) + (-> this turnvv) + (-> this tiltv) + (-> this tiltvv) + (-> this transv-max)) (format #t " tm:~m rv:~R rvv:~R @ #x~X>" (-> this target-speed) (-> this seek0) (-> this seek90) this) - this - ) + this) (defun surface-interp! ((dst surface) (src0 surface) (src1 surface) (amount float)) "Create a surface between src0 and src1. For things like hooks/mode, src1 wins." - ;; iterate through surface data (dotimes (v1-0 30) ;; interpolate between the two - (set! (-> dst data v1-0) (+ (* (-> src1 data v1-0) amount) (* (-> src0 data v1-0) (- 1.0 amount)))) - ) - + (set! (-> dst data v1-0) (+ (* (-> src1 data v1-0) amount) (* (-> src0 data v1-0) (- 1.0 amount))))) ;; iterate through hooks. Check src1, then src0 for a nonzero and non-nothing hook. ;; if there is no good hook, set it to nothing. (dotimes (v1-3 4) - (set! (-> dst hook v1-3) (cond - ((and (nonzero? (-> src1 hook v1-3)) (!= (-> src1 hook v1-3) nothing)) - (-> src1 hook v1-3) - ) - ((and (nonzero? (-> src0 hook v1-3)) (!= (-> src0 hook v1-3) nothing)) - (-> src0 hook v1-3) - ) - (else - nothing - ) - ) - ) - ) - + (set! (-> dst hook v1-3) + (cond + ((and (nonzero? (-> src1 hook v1-3)) (!= (-> src1 hook v1-3) nothing)) (-> src1 hook v1-3)) + ((and (nonzero? (-> src0 hook v1-3)) (!= (-> src0 hook v1-3) nothing)) (-> src0 hook v1-3)) + (else nothing)))) ;; just use the dataw's from src1 (dotimes (v1-6 2) - (set! (-> dst dataw v1-6) (-> src1 dataw v1-6)) - ) - dst - ) + (set! (-> dst dataw v1-6) (-> src1 dataw v1-6))) + dst) (defun surface-mult! ((dst surface) (src0 surface) (src1 surface)) "Multiply src0 by src1, and store the result in dst." - (dotimes (v1-0 30) - (set! (-> dst data v1-0) (* (-> src1 data v1-0) (-> src0 data v1-0))) - ) + (set! (-> dst data v1-0) (* (-> src1 data v1-0) (-> src0 data v1-0)))) (dotimes (v1-3 4) - (set! (-> dst hook v1-3) (cond - ((and (nonzero? (-> src1 hook v1-3)) (!= (-> src1 hook v1-3) nothing)) - (-> src1 hook v1-3) - ) - ((and (nonzero? (-> src0 hook v1-3)) (!= (-> src0 hook v1-3) nothing)) - (-> src0 hook v1-3) - ) - (else - nothing - ) - ) - ) - ) + (set! (-> dst hook v1-3) + (cond + ((and (nonzero? (-> src1 hook v1-3)) (!= (-> src1 hook v1-3) nothing)) (-> src1 hook v1-3)) + ((and (nonzero? (-> src0 hook v1-3)) (!= (-> src0 hook v1-3) nothing)) (-> src0 hook v1-3)) + (else nothing)))) (dotimes (v1-6 2) - (set! (-> dst dataw v1-6) (-> src1 dataw v1-6)) - ) + (set! (-> dst dataw v1-6) (-> src1 dataw v1-6))) ;; take the or of the flags, I guess (set! (-> dst flags) (logior (-> src0 flags) (-> src1 flags))) ;; and call the mult-hook ((-> dst mult-hook) dst src0 src1 1) - dst - ) + dst) (defun surface-clamp-speed ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int)) "When arg3 is 1, clamp speed of arg0 to the mins of arg0/arg1" (when (= arg3 1) (set! (-> arg0 transv-max) (fmin (-> arg0 transv-max) (-> arg1 transv-max))) - (set! (-> arg0 target-speed) (fmin (-> arg0 target-speed) (-> arg1 target-speed))) - ) - (none) - ) + (set! (-> arg0 target-speed) (fmin (-> arg0 target-speed) (-> arg1 target-speed)))) + (none)) ;; The common surfaces: -(define *walk-mods* (new 'static 'surface - :name 'run - :turnv 131072.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :flags (surface-flags allow-look-around) - ) - ) - -(define *walk-no-turn-mods* (new 'static 'surface - :name 'run - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) - -(define *turn-around-mods* (new 'static 'surface - :name 'run - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :fric 0.1 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) - -(let ((a0-3 (new 'static 'surface - :name 'duck - :turnv 131072.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 291271.12 - :transv-max 16384.0 - :target-speed 16384.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :flags (surface-flags ducking) - ) - ) - ) +(define *walk-mods* + (new 'static + 'surface + :name 'run + :turnv 131072.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags (surface-flags allow-look-around))) + +(define *walk-no-turn-mods* + (new 'static + 'surface + :name 'run + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0)) + +(define *turn-around-mods* + (new 'static + 'surface + :name 'run + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :fric 0.1 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0)) + +(let ((a0-3 (new 'static + 'surface + :name 'duck + :turnv 131072.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 291271.12 + :transv-max 16384.0 + :target-speed 16384.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags (surface-flags ducking)))) (set! (-> a0-3 mult-hook) surface-clamp-speed) ;; og:preserve-this - (define *duck-mods* a0-3) - ) - -(define *duck-attack-mods* (new 'static 'surface - :name 'duck - :tiltv 65536.0 - :tiltvv 291271.12 - :transv-max 16384.0 - :target-speed 16384.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'attack - :flags (surface-flags attacking ducking) - ) - ) - -(define *jump-mods* (new 'static 'surface - :name 'jump - :turnv 131072.0 - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 0.2 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) - -(define *double-jump-mods* (new 'static 'surface - :name 'jump-double - :turnv 131072.0 - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 32768.0 - :target-speed 32768.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 0.2 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) - -(define *smack-jump-mods* (new 'static 'surface - :name 'jump - :turnv 131072.0 - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 0.05 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) - -(define *high-jump-mods* (new 'static 'surface - :name 'high-jump - :turnv 131072.0 - :turnvv 65536.0 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 26624.0 - :target-speed 26624.0 - :seek0 0.9 - :seek90 0.9 - :seek180 0.9 - :fric 0.3 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) - -(define *launch-jump-mods* (new 'static 'surface - :name 'launch-jump - :turnv 18204.445 - :turnvv 65536.0 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 61440.0 - :target-speed 61440.0 - :seek0 0.9 - :seek90 0.9 - :seek180 0.9 - :fric 0.3 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags prevent-attacks-during-launch-jump allow-edge-grab jump) - ) - ) - -(define *forward-high-jump-mods* (new 'static 'surface - :name 'high-jump - :turnv 131072.0 - :turnvv 65536.0 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 45056.0 - :target-speed 45056.0 - :seek0 0.9 - :seek90 0.9 - :seek180 0.9 - :fric 0.3 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) - -(define *flip-jump-mods* (new 'static 'surface - :name 'high-jump - :turnv 131072.0 - :turnvv 65536.0 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 80281.6 - :target-speed 51200.0 - :seek0 0.9 - :seek90 0.9 - :seek180 0.9 - :fric 0.3 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) - -(define *forward-jump-mods* (new 'static 'surface - :name 'jump - :turnv 131072.0 - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 65536.0 - :target-speed 65536.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 0.05 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) - -(define *forward-pole-jump-mods* (new 'static 'surface - :name 'jump - :turnv 131072.0 - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 53248.0 - :target-speed 53248.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 0.05 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) - -(define *attack-mods* (new 'static 'surface - :name 'attack - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'attack - :flags (surface-flags attacking) - ) - ) - -(define *jump-attack-mods* (new 'static 'surface - :name 'attack - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 24576.0 - :target-speed 24576.0 - :seek0 0.9 - :seek90 0.9 - :seek180 0.9 - :fric 0.2 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump attacking) - ) - ) - -(let ((a0-4 (new 'static 'surface - :name 'uppercut - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 32768.0 - :target-speed 32768.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 0.2 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump attacking) - ) - ) - ) + (define *duck-mods* a0-3)) + +(define *duck-attack-mods* + (new 'static + 'surface + :name 'duck + :tiltv 65536.0 + :tiltvv 291271.12 + :transv-max 16384.0 + :target-speed 16384.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'attack + :flags (surface-flags attacking ducking))) + +(define *jump-mods* + (new 'static + 'surface + :name 'jump + :turnv 131072.0 + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 0.2 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) + +(define *double-jump-mods* + (new 'static + 'surface + :name 'jump-double + :turnv 131072.0 + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 32768.0 + :target-speed 32768.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 0.2 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) + +(define *smack-jump-mods* + (new 'static + 'surface + :name 'jump + :turnv 131072.0 + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 0.05 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) + +(define *high-jump-mods* + (new 'static + 'surface + :name 'high-jump + :turnv 131072.0 + :turnvv 65536.0 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 26624.0 + :target-speed 26624.0 + :seek0 0.9 + :seek90 0.9 + :seek180 0.9 + :fric 0.3 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) + +(define *launch-jump-mods* + (new 'static + 'surface + :name 'launch-jump + :turnv 18204.445 + :turnvv 65536.0 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 61440.0 + :target-speed 61440.0 + :seek0 0.9 + :seek90 0.9 + :seek180 0.9 + :fric 0.3 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags prevent-attacks-during-launch-jump allow-edge-grab jump))) + +(define *forward-high-jump-mods* + (new 'static + 'surface + :name 'high-jump + :turnv 131072.0 + :turnvv 65536.0 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 45056.0 + :target-speed 45056.0 + :seek0 0.9 + :seek90 0.9 + :seek180 0.9 + :fric 0.3 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) + +(define *flip-jump-mods* + (new 'static + 'surface + :name 'high-jump + :turnv 131072.0 + :turnvv 65536.0 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 80281.6 + :target-speed 51200.0 + :seek0 0.9 + :seek90 0.9 + :seek180 0.9 + :fric 0.3 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) + +(define *forward-jump-mods* + (new 'static + 'surface + :name 'jump + :turnv 131072.0 + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 65536.0 + :target-speed 65536.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 0.05 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) + +(define *forward-pole-jump-mods* + (new 'static + 'surface + :name 'jump + :turnv 131072.0 + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 53248.0 + :target-speed 53248.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 0.05 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) + +(define *attack-mods* + (new 'static + 'surface + :name 'attack + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'attack + :flags (surface-flags attacking))) + +(define *jump-attack-mods* + (new 'static + 'surface + :name 'attack + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 24576.0 + :target-speed 24576.0 + :seek0 0.9 + :seek90 0.9 + :seek180 0.9 + :fric 0.2 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump attacking))) + +(let ((a0-4 (new 'static + 'surface + :name 'uppercut + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 32768.0 + :target-speed 32768.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 0.2 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump attacking)))) (set! (-> a0-4 mult-hook) surface-clamp-speed) ;; og:preserve-this - (define *uppercut-jump-mods* a0-4) - ) - -(define *run-attack-mods* (new 'static 'surface - :name 'wheel-flip - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 91750.4 - :target-speed 122880.0 - :seek90 0.5 - :seek180 0.15 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 0.25 - :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 'attack - ;; no-rotate-toward-transv prevents jak from spinning around - ;; if you punch over bumpy terrain - :flags (surface-flags no-turn-around no-rotate-toward-transv attacking) - ) - ) - -(define *wheel-mods* (new 'static 'surface - :name 'wheel - :turnv 131072.0 - :turnvv 5461.3335 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 91750.4 - :target-speed 11468.8 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 0.25 - :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 'attack - :flags (surface-flags attacking) - ) - ) - -(define *wheel-flip-mods* (new 'static 'surface - :name 'wheel-flip - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 91750.4 - :target-speed 103219.195 - :seek90 0.5 - :seek180 0.15 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 0.25 - :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 'attack - :flags (surface-flags allow-edge-grab jump attacking) - ) - ) - -(define *flop-mods* (new 'static 'surface - :name 'flop - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 1.0 - :seek90 0.3 - :seek180 1.5 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 0.25 - :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 'attack - :flags (surface-flags jump attacking) - ) - ) - -(let ((a0-5 (new 'static 'surface - :name 'flop - :turnv 9102.223 - :turnvv 9102.223 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 0.3 - :seek90 0.1 - :seek180 0.15 - :fric 0.2 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 0.25 - :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 (surface-flags jump) - ) - ) - ) + (define *uppercut-jump-mods* a0-4)) + +(define *run-attack-mods* + (new 'static + 'surface + :name 'wheel-flip + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 91750.4 + :target-speed 122880.0 + :seek90 0.5 + :seek180 0.15 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 0.25 + :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 'attack + ;; no-rotate-toward-transv prevents jak from spinning around + ;; if you punch over bumpy terrain + :flags (surface-flags no-turn-around no-rotate-toward-transv attacking))) + +(define *wheel-mods* + (new 'static + 'surface + :name 'wheel + :turnv 131072.0 + :turnvv 5461.3335 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 91750.4 + :target-speed 11468.8 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 0.25 + :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 'attack + :flags (surface-flags attacking))) + +(define *wheel-flip-mods* + (new 'static + 'surface + :name 'wheel-flip + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 91750.4 + :target-speed 103219.195 + :seek90 0.5 + :seek180 0.15 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 0.25 + :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 'attack + :flags (surface-flags allow-edge-grab jump attacking))) + +(define *flop-mods* + (new 'static + 'surface + :name 'flop + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 1.0 + :seek90 0.3 + :seek180 1.5 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 0.25 + :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 'attack + :flags (surface-flags jump attacking))) + +(let ((a0-5 (new 'static + 'surface + :name 'flop + :turnv 9102.223 + :turnvv 9102.223 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 0.3 + :seek90 0.1 + :seek180 0.15 + :fric 0.2 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 0.25 + :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 (surface-flags jump)))) (set! (-> a0-5 mult-hook) surface-clamp-speed) ;; og:preserve-this - (define *flop-land-mods* a0-5) - ) - -(define *wade-mods* (new 'static 'surface - :name 'wade - :turnv 131072.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 1.0 - :seek90 0.5 - :seek180 0.5 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'wade - :flags (surface-flags allow-look-around) - ) - ) - -(define *swim-mods* (new 'static 'surface - :name 'swim - :turnv 49152.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 28672.0 - :target-speed 28672.0 - :seek0 0.75 - :seek90 0.2 - :seek180 0.2 - :fric 0.05 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'swim - ) - ) - -(define *dive-mods* (new 'static 'surface - :name 'swim - :turnv 21845.334 - :turnvv 32768.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 20480.0 - :target-speed 20480.0 - :seek0 0.05 - :seek90 0.05 - :seek180 0.05 - :fric 1.0 - :nonlin-fric-dist 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :align-speed 1.0 - :mode 'dive - :flags (surface-flags dive) - ) - ) - -(define *dive-bottom-mods* (new 'static 'surface - :name 'swim-bottom - :turnv 21845.334 - :turnvv 32768.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 20480.0 - :target-speed 20480.0 - :seek0 0.1 - :seek90 0.05 - :seek180 0.05 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'dive - :flags (surface-flags dive) - ) - ) + (define *flop-land-mods* a0-5)) + +(define *wade-mods* + (new 'static + 'surface + :name 'wade + :turnv 131072.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 1.0 + :seek90 0.5 + :seek180 0.5 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'wade + :flags (surface-flags allow-look-around))) + +(define *swim-mods* + (new 'static + 'surface + :name 'swim + :turnv 49152.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 28672.0 + :target-speed 28672.0 + :seek0 0.75 + :seek90 0.2 + :seek180 0.2 + :fric 0.05 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'swim)) + +(define *dive-mods* + (new 'static + 'surface + :name 'swim + :turnv 21845.334 + :turnvv 32768.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 20480.0 + :target-speed 20480.0 + :seek0 0.05 + :seek90 0.05 + :seek180 0.05 + :fric 1.0 + :nonlin-fric-dist 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :align-speed 1.0 + :mode 'dive + :flags (surface-flags dive))) + +(define *dive-bottom-mods* + (new 'static + 'surface + :name 'swim-bottom + :turnv 21845.334 + :turnvv 32768.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 20480.0 + :target-speed 20480.0 + :seek0 0.1 + :seek90 0.05 + :seek180 0.05 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'dive + :flags (surface-flags dive))) (let ((a0-7 (copy *walk-mods* 'global))) (set! (-> a0-7 name) 'pole) (set! (-> a0-7 flags) (surface-flags)) ;; og:preserve-this - (define *pole-mods* a0-7) - ) + (define *pole-mods* a0-7)) (let ((a0-9 (copy *walk-mods* 'global))) (set! (-> a0-9 name) 'grab) (set! (-> a0-9 flags) (surface-flags)) ;; og:preserve-this - (define *grab-mods* a0-9) - ) + (define *grab-mods* a0-9)) (let ((a0-11 (copy *walk-mods* 'global))) (set! (-> a0-11 name) 'edge-grab) (set! (-> a0-11 flags) (surface-flags)) ;; og:preserve-this - (define *edge-grab-mods* a0-11) - ) + (define *edge-grab-mods* a0-11)) (define *empty-mods* (new 'static 'surface :name 'empty :seek0 1.0 :seek90 1.0 :seek180 1.0 :fric 1.0)) -(define *neutral-mods* (new 'static 'surface - :name 'walk - :turnv 131072.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.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 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) - -(let ((v1-41 (new 'static 'surface - :name '*stone-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.0 - :target-speed 1.0 - :seek0 153600.0 - :seek90 153600.0 - :seek180 256000.0 - :fric 153600.0 - :nonlin-fric-dist 5120.0 - :slip-factor 1.0 - :slope-down-factor 10240.0 - :slope-slip-angle 8192.0 - :impact-fric 1.0 - :bend-factor 0.8 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) - ) +(define *neutral-mods* + (new 'static + 'surface + :name 'walk + :turnv 131072.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.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 + :slope-up-traction 1.0 + :align-speed 1.0)) + +(let ((v1-41 (new 'static + 'surface + :name '*stone-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 153600.0 + :seek90 153600.0 + :seek180 256000.0 + :fric 153600.0 + :nonlin-fric-dist 5120.0 + :slip-factor 1.0 + :slope-down-factor 10240.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 0.8 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0))) (define *stone-surface* v1-41) (set! (-> v1-41 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-41 touch-hook) nothing) - (set! (-> v1-41 active-hook) nothing) - ) - -(let ((v1-42 (new 'static 'surface - :name '*edge-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.0 - :target-speed 1.0 - :seek0 153600.0 - :seek90 153600.0 - :seek180 256000.0 - :fric 30720.0 - :nonlin-fric-dist 5120.0 - :slip-factor 1.0 - :slope-down-factor 18432.0 - :slope-slip-angle 8192.0 - :bend-factor 0.8 - :bend-speed 4.0 - :alignv 1.0 - :align-speed 1.0 - ) - ) - ) + (set! (-> v1-41 active-hook) nothing)) + +(let ((v1-42 (new 'static + 'surface + :name '*edge-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 153600.0 + :seek90 153600.0 + :seek180 256000.0 + :fric 30720.0 + :nonlin-fric-dist 5120.0 + :slip-factor 1.0 + :slope-down-factor 18432.0 + :slope-slip-angle 8192.0 + :bend-factor 0.8 + :bend-speed 4.0 + :alignv 1.0 + :align-speed 1.0))) ;; og:preserve-this (define *edge-surface* v1-42) (set! (-> v1-42 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-42 touch-hook) nothing) - (set! (-> v1-42 active-hook) nothing) - ) - -(let ((v1-43 (new 'static 'surface - :name '*wade-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 0.7 - :target-speed 0.7 - :seek0 153600.0 - :seek90 153600.0 - :seek180 256000.0 - :fric 153600.0 - :nonlin-fric-dist 5120.0 - :slip-factor 1.0 - :slope-down-factor 10240.0 - :slope-slip-angle 8192.0 - :impact-fric 1.0 - :bend-factor 0.8 - :bend-speed 4.0 - :alignv 0.6 - :slope-up-traction 1.0 - :align-speed 0.6 - ) - ) - ) + (set! (-> v1-42 active-hook) nothing)) + +(let ((v1-43 (new 'static + 'surface + :name '*wade-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 0.7 + :target-speed 0.7 + :seek0 153600.0 + :seek90 153600.0 + :seek180 256000.0 + :fric 153600.0 + :nonlin-fric-dist 5120.0 + :slip-factor 1.0 + :slope-down-factor 10240.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 0.8 + :bend-speed 4.0 + :alignv 0.6 + :slope-up-traction 1.0 + :align-speed 0.6))) ;; og:preserve-this (define *wade-surface* v1-43) (set! (-> v1-43 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-43 touch-hook) nothing) - (set! (-> v1-43 active-hook) nothing) - ) - -(let ((v1-44 (new 'static 'surface - :name '*slope-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.0 - :target-speed 1.0 - :seek0 122880.0 - :seek90 245760.0 - :seek180 409600.0 - :fric 122880.0 - :nonlin-fric-dist 4096.0 - :slip-factor 1.0 - :slope-up-factor 40960.0 - :slope-down-factor 8192.0 - :slope-slip-angle 8192.0 - :impact-fric 1.0 - :bend-factor 0.8 - :bend-speed 4.0 - :alignv 1.0 - :align-speed 1.0 - ) - ) - ) + (set! (-> v1-43 active-hook) nothing)) + +(let ((v1-44 (new 'static + 'surface + :name '*slope-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 122880.0 + :seek90 245760.0 + :seek180 409600.0 + :fric 122880.0 + :nonlin-fric-dist 4096.0 + :slip-factor 1.0 + :slope-up-factor 40960.0 + :slope-down-factor 8192.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 0.8 + :bend-speed 4.0 + :alignv 1.0 + :align-speed 1.0))) ;; og:preserve-this (define *slope-surface* v1-44) (set! (-> v1-44 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-44 touch-hook) nothing) - (set! (-> v1-44 active-hook) nothing) - ) - -(let ((v1-45 (new 'static 'surface - :name '*quicksand-surface* - :turnv 0.25 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 0.5 - :target-speed 0.5 - :seek0 81920.0 - :seek90 83968.0 - :seek180 165888.0 - :fric 329728.0 - :nonlin-fric-dist 5120.0 - :slip-factor 1.0 - :slope-down-factor 10240.0 - :slope-slip-angle 8192.0 - :impact-fric 1.0 - :bend-factor 0.8 - :bend-speed 4.0 - :alignv 0.5 - :slope-up-traction 1.0 - :align-speed 0.5 - ) - ) - ) + (set! (-> v1-44 active-hook) nothing)) + +(let ((v1-45 (new 'static + 'surface + :name '*quicksand-surface* + :turnv 0.25 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 0.5 + :target-speed 0.5 + :seek0 81920.0 + :seek90 83968.0 + :seek180 165888.0 + :fric 329728.0 + :nonlin-fric-dist 5120.0 + :slip-factor 1.0 + :slope-down-factor 10240.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 0.8 + :bend-speed 4.0 + :alignv 0.5 + :slope-up-traction 1.0 + :align-speed 0.5))) ;; og:preserve-this (define *quicksand-surface* v1-45) (set! (-> v1-45 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-45 touch-hook) nothing) - (set! (-> v1-45 active-hook) nothing) - ) - -(let ((v1-46 (new 'static 'surface - :name '*tar-surface* - :turnv 0.25 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 0.4 - :target-speed 0.4 - :seek0 81920.0 - :seek90 83968.0 - :seek180 165888.0 - :fric 329728.0 - :nonlin-fric-dist 5120.0 - :slip-factor 1.0 - :slope-down-factor 10240.0 - :slope-slip-angle 8192.0 - :impact-fric 1.0 - :bend-factor 0.8 - :bend-speed 4.0 - :alignv 0.5 - :slope-up-traction 1.0 - :align-speed 0.5 - ) - ) - ) + (set! (-> v1-45 active-hook) nothing)) + +(let ((v1-46 (new 'static + 'surface + :name '*tar-surface* + :turnv 0.25 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 0.4 + :target-speed 0.4 + :seek0 81920.0 + :seek90 83968.0 + :seek180 165888.0 + :fric 329728.0 + :nonlin-fric-dist 5120.0 + :slip-factor 1.0 + :slope-down-factor 10240.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 0.8 + :bend-speed 4.0 + :alignv 0.5 + :slope-up-traction 1.0 + :align-speed 0.5))) ;; og:preserve-this (define *tar-surface* v1-46) (set! (-> v1-46 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-46 touch-hook) nothing) - (set! (-> v1-46 active-hook) nothing) - ) - -(let ((v1-47 (new 'static 'surface - :name '*grass-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.0 - :target-speed 1.0 - :seek0 122880.0 - :seek90 122880.0 - :seek180 409600.0 - :fric 122880.0 - :nonlin-fric-dist 4096.0 - :slip-factor 1.0 - :slope-slip-angle 16384.0 - :impact-fric 0.5 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) - ) + (set! (-> v1-46 active-hook) nothing)) + +(let ((v1-47 (new 'static + 'surface + :name '*grass-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 122880.0 + :seek90 122880.0 + :seek180 409600.0 + :fric 122880.0 + :nonlin-fric-dist 4096.0 + :slip-factor 1.0 + :slope-slip-angle 16384.0 + :impact-fric 0.5 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0))) ;; og:preserve-this (define *grass-surface* v1-47) (set! (-> v1-47 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-47 touch-hook) nothing) - (set! (-> v1-47 active-hook) nothing) - ) - -(let ((v1-48 (new 'static 'surface - :name '*ice-surface* - :turnv 0.5 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.5 - :target-speed 1.5 - :seek0 24576.0 - :seek90 24576.0 - :seek180 24576.0 - :fric 23756.8 - :nonlin-fric-dist 4091904.0 - :slip-factor 0.7 - :slope-slip-angle 16384.0 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :flags (surface-flags no-turn-around no-rotate-toward-transv) - ) - ) - ) + (set! (-> v1-47 active-hook) nothing)) + +(let ((v1-48 (new 'static + 'surface + :name '*ice-surface* + :turnv 0.5 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.5 + :target-speed 1.5 + :seek0 24576.0 + :seek90 24576.0 + :seek180 24576.0 + :fric 23756.8 + :nonlin-fric-dist 4091904.0 + :slip-factor 0.7 + :slope-slip-angle 16384.0 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags (surface-flags no-turn-around no-rotate-toward-transv)))) ;; og:preserve-this (define *ice-surface* v1-48) (set! (-> v1-48 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-48 touch-hook) nothing) - (set! (-> v1-48 active-hook) nothing) - ) - -(let ((v1-49 (new 'static 'surface - :name '*tread-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.0 - :target-speed 1.0 - :seek0 122880.0 - :seek90 245760.0 - :seek180 409600.0 - :fric 122880.0 - :nonlin-fric-dist 4096.0 - :slip-factor 1.0 - :slope-up-factor 8192.0 - :slope-down-factor 8192.0 - :impact-fric 1.0 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) - ) + (set! (-> v1-48 active-hook) nothing)) + +(let ((v1-49 (new 'static + 'surface + :name '*tread-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 122880.0 + :seek90 245760.0 + :seek180 409600.0 + :fric 122880.0 + :nonlin-fric-dist 4096.0 + :slip-factor 1.0 + :slope-up-factor 8192.0 + :slope-down-factor 8192.0 + :impact-fric 1.0 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0))) ;; og:preserve-this (define *tread-surface* v1-49) (set! (-> v1-49 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-49 touch-hook) nothing) - (set! (-> v1-49 active-hook) nothing) - ) + (set! (-> v1-49 active-hook) nothing)) (define *standard-ground-surface* *stone-surface*) diff --git a/goal_src/jak1/engine/common-obs/babak.gc b/goal_src/jak1/engine/common-obs/babak.gc index 14367a6da0..9a28e4e91f 100644 --- a/goal_src/jak1/engine/common-obs/babak.gc +++ b/goal_src/jak1/engine/common-obs/babak.gc @@ -1,249 +1,200 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: babak.gc -;; name in dgo: babak -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS -(deftype babak (nav-enemy) - () - (:states - babak-run-to-cannon - ) - ) +(deftype babak (nav-enemy) () + (:states + babak-run-to-cannon)) -(defskelgroup *babak-sg* babak babak-lod0-jg -1 - ((babak-lod0-mg (meters 20)) (babak-lod1-mg (meters 40)) (babak-lod2-mg (meters 999999))) - :bounds (static-spherem 0 2 0 3) - :longest-edge (meters 1) - :shadow babak-shadow-mg - ) +(defskelgroup *babak-sg* + babak + babak-lod0-jg + -1 + ((babak-lod0-mg (meters 20)) (babak-lod1-mg (meters 40)) (babak-lod2-mg (meters 999999))) + :bounds (static-spherem 0 2 0 3) + :longest-edge (meters 1) + :shadow babak-shadow-mg) (defstate nav-enemy-patrol (babak) :virtual #t - :code (behavior () - (cond - ((ja-group? babak-give-up-hop-ja) - (ja-channel-push! 1 (seconds 0.15)) - (ja-no-eval :group! babak-walk-ja :num! (seek!) :frame-num (ja-aframe 12.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - ) - ) - ((the-as (function none) (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - ) - ) - -(defstate nav-enemy-chase (babak) - :virtual #t - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + :code + (behavior () (cond - ((ja-group? babak-jump-land-ja) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.17)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) + ((ja-group? babak-give-up-hop-ja) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! babak-walk-ja :num! (seek!) :frame-num (ja-aframe 12.0 0)) (until (ja-done? 0) - (ja-blend-eval) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - ) - ) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - ) + (ja :num! (seek!)))) + (else (ja-channel-push! 1 (seconds 0.2)))) + ((the-as (function none) (-> (method-of-type nav-enemy nav-enemy-patrol) code))))) -(defstate nav-enemy-stare (babak) +(defstate nav-enemy-chase (babak) :virtual #t - :code (behavior () - (set! (-> self turn-time) (seconds 0.2)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (when (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! babak-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 68.0 0) f30-0)) - ) - ) - (loop - (when (not (nav-enemy-facing-player? 2730.6667)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! babak-turn-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (until (nav-enemy-facing-player? 1820.4445) - (ja-blend-eval) - (suspend) - (ja :num! (loop! 0.75)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - (if (not (ja-group? babak-idle-ja)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja-no-eval :group! babak-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (cond + ((ja-group? babak-jump-land-ja) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.17)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max f30-0)))) + (else + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) + (ja :num-func num-func-identity :frame-num 0.0))) + (loop (suspend) - (ja :num! (seek! max f30-0)) - ) - (when (nav-enemy-rnd-percent? 0.3) + (ja :num! (loop! f30-0)))))) + +(defstate nav-enemy-stare (babak) + :virtual #t + :code + (behavior () + (set! (-> self turn-time) (seconds 0.2)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (when (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) + (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5))) (ja-channel-push! 1 (seconds 0.1)) (ja-no-eval :group! babak-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe 68.0 0) f30-0)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 68.0 0) f30-0)))) + (loop + (when (not (nav-enemy-facing-player? 2730.6667)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! babak-turn-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (until (nav-enemy-facing-player? 1820.4445) + (ja-blend-eval) + (suspend) + (ja :num! (loop! 0.75))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))) + (if (not (ja-group? babak-idle-ja)) (ja-channel-push! 1 (seconds 0.2))) + (ja-no-eval :group! babak-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (when (nav-enemy-rnd-percent? 0.3) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! babak-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 68.0 0) f30-0)))))))) (defstate nav-enemy-give-up (babak) :virtual #t - :code (behavior () - (set! (-> self rotate-speed) 218453.33) - (set! (-> self turn-time) (seconds 0.5)) - (ja-channel-push! 1 (seconds 0.15)) - (let ((s4-0 (-> self collide-info)) - (s5-0 (target-pos 0)) - ) - (when (< (fabs - (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) - ) - 12743.111 - ) - (ja-no-eval :group! babak-give-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! babak-give-up-hop-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (set! (-> self rotate-speed) 218453.33) + (set! (-> self turn-time) (seconds 0.5)) + (ja-channel-push! 1 (seconds 0.15)) + (let ((s4-0 (-> self collide-info)) + (s5-0 (target-pos 0))) + (when (< (fabs (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans))))) + 12743.111) + (ja-no-eval :group! babak-give-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! babak-give-up-hop-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-jump-land (babak) :virtual #t - :code (behavior () - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info jump-land-anim)) - :num! (seek! (ja-aframe 32.0 0) 0.5) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe 32.0 0) 0.5)) - ) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info jump-land-anim)) + :num! + (seek! (ja-aframe 32.0 0) 0.5) + :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe 32.0 0) 0.5))) + (go-virtual nav-enemy-chase))) -(define *babak-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 6 - :turn-anim 16 - :notice-anim 7 - :run-anim 8 - :jump-anim 13 - :jump-land-anim 14 - :victory-anim 11 - :taunt-anim 11 - :die-anim 12 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :proximity-notice-distance (meters 20) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #t - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #t - :use-proximity-notice #t - :use-jump-blocked #t - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *babak-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 6 + :turn-anim 16 + :notice-anim 7 + :run-anim 8 + :jump-anim 13 + :jump-land-anim 14 + :victory-anim 11 + :taunt-anim 11 + :die-anim 12 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :proximity-notice-distance (meters 20) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #t + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #t + :use-proximity-notice #t + :use-jump-blocked #t + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod initialize-collision ((this babak)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 3) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -256,33 +207,27 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s4-0 s3-2) - ) - ) + (append-prim s4-0 s3-2))) (set! (-> s5-0 nav-radius) 6144.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this babak)) (initialize-skeleton this *babak-sg* '()) @@ -291,23 +236,14 @@ (set! (-> this neck nose) (the-as uint 1)) (set! (-> this neck ear) (the-as uint 2)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-59 ((this babak)) (cond ((and (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (logtest? (-> this enemy-info options) (fact-options has-power-cell)) - ) - (go (method-of-object this nav-enemy-fuel-cell)) - ) - ((logtest? (-> this enemy-info options) (fact-options fop5)) - (go (method-of-object this nav-enemy-wait-for-cue)) - ) - (else - (go (method-of-object this nav-enemy-idle)) - ) - ) + (logtest? (-> this enemy-info options) (fact-options has-power-cell))) + (go (method-of-object this nav-enemy-fuel-cell))) + ((logtest? (-> this enemy-info options) (fact-options fop5)) (go (method-of-object this nav-enemy-wait-for-cue))) + (else (go (method-of-object this nav-enemy-idle)))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/common-obs/basebutton.gc b/goal_src/jak1/engine/common-obs/basebutton.gc index d5e673ed6e..887d88f90b 100644 --- a/goal_src/jak1/engine/common-obs/basebutton.gc +++ b/goal_src/jak1/engine/common-obs/basebutton.gc @@ -1,284 +1,191 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/target/logic-target.gc") -;; name: basebutton.gc -;; name in dgo: basebutton -;; dgos: GAME, COMMON, L1 - - ;; DECOMP BEGINS (deftype basebutton (process-drawable) - ((root collide-shape-moving :override) - (down? symbol) - (spawned-by-other? symbol) - (move-to? symbol) - (notify-actor entity-actor) - (timeout float) - (button-id int32) - (event-going-down symbol) - (event-down symbol) - (event-going-up symbol) - (event-up symbol) - (anim-speed float) - (move-to-pos vector :inline) - (move-to-quat quaternion :inline) - ) + ((root collide-shape-moving :override) + (down? symbol) + (spawned-by-other? symbol) + (move-to? symbol) + (notify-actor entity-actor) + (timeout float) + (button-id int32) + (event-going-down symbol) + (event-down symbol) + (event-going-up symbol) + (event-up symbol) + (anim-speed float) + (move-to-pos vector :inline) + (move-to-quat quaternion :inline)) (:state-methods - basebutton-down-idle - basebutton-going-down - basebutton-going-up - basebutton-startup - basebutton-up-idle - ) + basebutton-down-idle + basebutton-going-down + basebutton-going-up + basebutton-startup + basebutton-up-idle) (:methods - (reset! (_type_) float) - (basebutton-method-26 (_type_) none) - (basebutton-method-27 (_type_) collide-shape-moving) - (arm-trigger-event! (_type_) symbol) - (basebutton-method-29 (_type_ symbol entity) none) - (move-to-vec-or-quat! (_type_ vector quaternion) quaternion) - (press! (_type_ symbol) int) - ) - ) - + (reset! (_type_) float) + (basebutton-method-26 (_type_) none) + (basebutton-method-27 (_type_) collide-shape-moving) + (arm-trigger-event! (_type_) symbol) + (basebutton-method-29 (_type_ symbol entity) none) + (move-to-vec-or-quat! (_type_ vector quaternion) quaternion) + (press! (_type_ symbol) int))) -(defskelgroup *generic-button-sg* generic-button generic-button-lod0-jg generic-button-idle-ja - ((generic-button-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *generic-button-sg* + generic-button + generic-button-lod0-jg + generic-button-idle-ja + ((generic-button-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (defmethod move-to-vec-or-quat! ((this basebutton) (arg0 vector) (arg1 quaternion)) (set! (-> this move-to?) #t) - (if arg0 - (set! (-> this move-to-pos quad) (-> arg0 quad)) - (set! (-> this move-to-pos quad) (-> this root trans quad)) - ) - (if arg1 - (quaternion-copy! (-> this move-to-quat) arg1) - (quaternion-copy! (-> this move-to-quat) (-> this root quat)) - ) - ) + (if arg0 (set! (-> this move-to-pos quad) (-> arg0 quad)) (set! (-> this move-to-pos quad) (-> this root trans quad))) + (if arg1 (quaternion-copy! (-> this move-to-quat) arg1) (quaternion-copy! (-> this move-to-quat) (-> this root quat)))) (defstate basebutton-startup (basebutton) :virtual #t - :code (behavior () - (if (-> self down?) - (go-virtual basebutton-down-idle) - (go-virtual basebutton-up-idle) - ) - ) - ) + :code + (behavior () + (if (-> self down?) (go-virtual basebutton-down-idle) (go-virtual basebutton-up-idle)))) (defstate basebutton-up-idle (basebutton) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (case (-> block param 1) - (('flop) - (basebutton-method-29 self (-> self event-going-down) (-> self notify-actor)) - (sound-play "silo-button") - (go-virtual basebutton-going-down) - ) - ) - ) - (('trigger) - (sound-play "silo-button") - (go-virtual basebutton-going-down) - ) - (('move-to) - (move-to-vec-or-quat! self (the-as vector (-> block param 0)) (the-as quaternion (-> block param 1))) - ) - ) - ) - :enter (behavior () - (press! self #f) - ) - :trans (behavior () - (if (-> self move-to?) - (rider-trans) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (case (-> block param 1) + (('flop) + (basebutton-method-29 self (-> self event-going-down) (-> self notify-actor)) + (sound-play "silo-button") + (go-virtual basebutton-going-down)))) + (('trigger) (sound-play "silo-button") (go-virtual basebutton-going-down)) + (('move-to) (move-to-vec-or-quat! self (the-as vector (-> block param 0)) (the-as quaternion (-> block param 1)))))) + :enter + (behavior () + (press! self #f)) + :trans + (behavior () + (if (-> self move-to?) (rider-trans))) :code anim-loop - :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (set! (-> self root trans quad) (-> self move-to-pos quad)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (rider-post) - ) - ) - ) + :post + (behavior () + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (rider-post)))) (defstate basebutton-going-down (basebutton) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('untrigger) - (sound-play "silo-button") - (go-virtual basebutton-going-up) - ) - (('move-to) - (move-to-vec-or-quat! self (the-as vector (-> block param 0)) (the-as quaternion (-> block param 1))) - ) - ) - ) - :enter (behavior () - (press! self #t) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('untrigger) (sound-play "silo-button") (go-virtual basebutton-going-up)) + (('move-to) (move-to-vec-or-quat! self (the-as vector (-> block param 0)) (the-as quaternion (-> block param 1)))))) + :enter + (behavior () + (press! self #t)) :trans rider-trans - :code (behavior () - (ja-no-eval :num! (seek! max (-> self anim-speed))) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - (basebutton-method-29 self (-> self event-down) (-> self notify-actor)) - (go-virtual basebutton-down-idle) - ) - :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (set! (-> self root trans quad) (-> self move-to-pos quad)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - ) - (rider-post) - ) - ) + :code + (behavior () + (ja-no-eval :num! (seek! max (-> self anim-speed))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed)))) + (basebutton-method-29 self (-> self event-down) (-> self notify-actor)) + (go-virtual basebutton-down-idle)) + :post + (behavior () + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat))) + (rider-post))) (defstate basebutton-down-idle (basebutton) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('untrigger) - (sound-play "silo-button") - (go-virtual basebutton-going-up) - ) - (('move-to) - (move-to-vec-or-quat! self (the-as vector (-> block param 0)) (the-as quaternion (-> block param 1))) - ) - ) - ) - :enter (behavior () - (press! self #t) - ) - :trans (behavior () - (if (-> self move-to?) - (rider-trans) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (cond - ((= (-> self timeout) 0.0) - (anim-loop) - ) - (else - (until (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self timeout)))) - (suspend) - ) - (basebutton-method-29 self (-> self event-going-up) (-> self notify-actor)) - (sound-play "silo-button") - (go-virtual basebutton-going-up) - ) - ) - ) - :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (set! (-> self root trans quad) (-> self move-to-pos quad)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (rider-post) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('untrigger) (sound-play "silo-button") (go-virtual basebutton-going-up)) + (('move-to) (move-to-vec-or-quat! self (the-as vector (-> block param 0)) (the-as quaternion (-> block param 1)))))) + :enter + (behavior () + (press! self #t)) + :trans + (behavior () + (if (-> self move-to?) (rider-trans))) + :code + (behavior () + (set-time! (-> self state-time)) + (cond + ((= (-> self timeout) 0.0) (anim-loop)) + (else + (until (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self timeout)))) + (suspend)) + (basebutton-method-29 self (-> self event-going-up) (-> self notify-actor)) + (sound-play "silo-button") + (go-virtual basebutton-going-up)))) + :post + (behavior () + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (rider-post)))) (defstate basebutton-going-up (basebutton) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('move-to) - (move-to-vec-or-quat! self (the-as vector (-> block param 0)) (the-as quaternion (-> block param 1))) - ) - (('trigger) - (sound-play "silo-button") - (go-virtual basebutton-going-down) - ) - ) - ) - :enter (behavior () - (press! self #f) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('move-to) (move-to-vec-or-quat! self (the-as vector (-> block param 0)) (the-as quaternion (-> block param 1)))) + (('trigger) (sound-play "silo-button") (go-virtual basebutton-going-down)))) + :enter + (behavior () + (press! self #f)) :trans rider-trans - :code (behavior () - (ja-no-eval :num! (seek! 0.0 (-> self anim-speed))) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0 (-> self anim-speed))) - ) - (basebutton-method-29 self (-> self event-up) (-> self notify-actor)) - (go-virtual basebutton-up-idle) - ) - :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (set! (-> self root trans quad) (-> self move-to-pos quad)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - ) - (rider-post) - ) - ) + :code + (behavior () + (ja-no-eval :num! (seek! 0.0 (-> self anim-speed))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0 (-> self anim-speed)))) + (basebutton-method-29 self (-> self event-up) (-> self notify-actor)) + (go-virtual basebutton-up-idle)) + :post + (behavior () + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (set! (-> self root trans quad) (-> self move-to-pos quad)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat))) + (rider-post))) (defmethod press! ((this basebutton) (arg0 symbol)) (set! (-> this down?) arg0) (cond - (arg0 - (if (not (-> this spawned-by-other?)) - (process-entity-status! this (entity-perm-status complete) #t) - ) - ) - (else - (if (not (-> this spawned-by-other?)) - (process-entity-status! this (entity-perm-status complete) #f) - ) - ) - ) - ) + (arg0 (if (not (-> this spawned-by-other?)) (process-entity-status! this (entity-perm-status complete) #t))) + (else (if (not (-> this spawned-by-other?)) (process-entity-status! this (entity-perm-status complete) #f))))) (defmethod basebutton-method-29 ((this 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 - ) - ) - ) - ) - (else - (if (nonzero? (-> this link)) - (send-to-all (-> this link) arg0) - ) - ) - ) - ) - (none) - ) - ) + (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? (-> this link)) (send-to-all (-> this link) arg0))))) + (none))) (defmethod reset! ((this basebutton)) (set! (-> this down?) #f) @@ -290,15 +197,10 @@ (set! (-> this event-down) #f) (set! (-> this event-going-up) #f) (set! (-> this event-up) #f) - (set! (-> this anim-speed) 1.0) - ) + (set! (-> this anim-speed) 1.0)) (defmethod arm-trigger-event! ((this basebutton)) - (let ((v0-0 'trigger)) - (set! (-> this event-going-down) v0-0) - v0-0 - ) - ) + (let ((v0-0 'trigger)) (set! (-> this event-going-down) v0-0) v0-0)) (defmethod basebutton-method-26 ((this basebutton)) (initialize-skeleton this *generic-button-sg* '()) @@ -307,40 +209,22 @@ (cond ((-> this down?) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-0 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-0 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1))))) (else - (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) - ) - ) + (let ((s5-1 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)))) (set! (-> this anim-speed) 2.0) (update-transforms! (-> this root)) (ja-post) - (none) - ) + (none)) (defmethod basebutton-method-27 ((this basebutton)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -355,8 +239,7 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -364,49 +247,33 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s4-0 s3-1) - ) - ) + (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! (-> this root) s5-0) - s5-0 - ) - ) + s5-0)) (defmethod init-from-entity! ((this basebutton) (arg0 entity-actor)) (reset! this) (set! (-> this spawned-by-other?) #f) (set! (-> this button-id) -1) (let ((v1-4 (res-lump-value (-> this entity) 'extra-id uint128 :default (the-as uint128 -1)))) - (if (>= (the-as int v1-4) 0) - (set! (-> this button-id) (the-as int v1-4)) - ) - ) + (if (>= (the-as int v1-4) 0) (set! (-> this button-id) (the-as int v1-4)))) (when (or (res-lump-struct arg0 'next-actor structure) (res-lump-struct arg0 'prev-actor structure)) (set! (-> this link) (new 'process 'actor-link-info this)) - (if (< (-> this button-id) 0) - (set! (-> this button-id) (actor-count-before (-> this link))) - ) - ) + (if (< (-> this button-id) 0) (set! (-> this button-id) (actor-count-before (-> this link))))) (basebutton-method-27 this) (process-drawable-from-entity! this arg0) (let ((v1-16 #f)) - (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (set! v1-16 #t) - ) - (set! (-> this down?) v1-16) - ) + (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (set! v1-16 #t)) + (set! (-> this down?) v1-16)) (set! (-> this notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this timeout) (res-lump-float arg0 'timeout)) - (if (not (-> this spawned-by-other?)) - (nav-mesh-connect this (-> this root) (the-as nav-control #f)) - ) + (if (not (-> this spawned-by-other?)) (nav-mesh-connect this (-> this root) (the-as nav-control #f))) (arm-trigger-event! this) (basebutton-method-26 this) (go (method-of-object this basebutton-startup)) - (none) - ) + (none)) (defbehavior basebutton-init-by-other basebutton ((arg0 entity-actor) (arg1 vector) (arg2 quaternion) (arg3 entity-actor) (arg4 symbol) (arg5 float)) (reset! self) @@ -415,9 +282,7 @@ (set! (-> self down?) arg4) (set! (-> self notify-actor) arg3) (set! (-> self timeout) arg5) - (if arg0 - (set! (-> self entity) arg0) - ) + (if arg0 (set! (-> self entity) arg0)) (basebutton-method-27 self) (set! (-> self root trans quad) (-> arg1 quad)) (quaternion-copy! (-> self root quat) arg2) @@ -425,228 +290,167 @@ (arm-trigger-event! self) (basebutton-method-26 self) (go-virtual basebutton-startup) - (none) - ) + (none)) -(define *warp-info* (new 'static 'boxed-array :type string - "training-warp" - "village1-warp" - "village2-warp" - "village3-warp" - "citadel-warp" - ) - ) +(define *warp-info* + (new 'static 'boxed-array :type string "training-warp" "village1-warp" "village2-warp" "village3-warp" "citadel-warp")) (deftype warp-gate (process-drawable) - ((level symbol) - (level-slot int32) - (min-slot int32) - (max-slot int32) - ) + ((level symbol) + (level-slot int32) + (min-slot int32) + (max-slot int32)) (:state-methods - idle - active - (use int level) - hidden - ) - ) - + idle + active + (use int level) + hidden)) (defstate use (warp-gate) :virtual #t - :trans (behavior () - (send-event *camera* 'joystick 0.0 0.0) - ) - :code (behavior ((arg0 int) (arg1 level)) - (set-time! (-> self state-time)) - (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) - ) - ;; og:preserve-this - ;; NOTE : added case for "training" here. in the original game, the training level does NOT come - ;; with its own code for warp gates and buttons, and uses the villagep-obs imported from village1 - ;; instead. opengoal loads files different enough that warp from training to anywhere except village1 - ;; crashes the game due to running unlinked code. the original game also crashes, but it is not consistent. - ;; the citadel/lavatube case makes it so we wait until it's safe to unload both levels in the heaps, - ;; since the citadel warp gate is located in both levels at once (visually lavatube, technically citadel) - ;; we add "training" to the list here so that the training warp gate waits until it's safe to - ;; dispose the old code from memory. - (case (-> self level) - (('citadel 'lavatube 'training) - (while (and *target* (not (logtest? (-> *target* draw status) (draw-status hidden)))) - (suspend) - ) - ) - (else - (load-state-want-levels (-> self level) (-> arg1 load-name)) - (while (or (not (member (level-status *level* (-> arg1 load-name)) '(loaded active))) - (not (time-elapsed? (-> self state-time) (seconds 2))) - ) - (suspend) - ) - ) - ) - (set-blackout-frames (seconds 0.05)) - (start 'play (get-continue-by-name *game-info* (-> *warp-info* arg0))) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :trans + (behavior () + (send-event *camera* 'joystick 0.0 0.0)) + :code + (behavior ((arg0 int) (arg1 level)) + (set-time! (-> self state-time)) + (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)) + ;; og:preserve-this + ;; NOTE : added case for "training" here. in the original game, the training level does NOT come + ;; with its own code for warp gates and buttons, and uses the villagep-obs imported from village1 + ;; instead. opengoal loads files different enough that warp from training to anywhere except village1 + ;; crashes the game due to running unlinked code. the original game also crashes, but it is not consistent. + ;; the citadel/lavatube case makes it so we wait until it's safe to unload both levels in the heaps, + ;; since the citadel warp gate is located in both levels at once (visually lavatube, technically citadel) + ;; we add "training" to the list here so that the training warp gate waits until it's safe to + ;; dispose the old code from memory. + (case (-> self level) + (('citadel 'lavatube 'training) + (while (and *target* (not (logtest? (-> *target* draw status) (draw-status hidden)))) + (suspend))) + (else + (load-state-want-levels (-> self level) (-> arg1 load-name)) + (while (or (not (member (level-status *level* (-> arg1 load-name)) '(loaded active))) + (not (time-elapsed? (-> self state-time) (seconds 2)))) + (suspend)))) + (set-blackout-frames (seconds 0.05)) + (start 'play (get-continue-by-name *game-info* (-> *warp-info* arg0))) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) -(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 (surface-flags always-rotate-toward-transv) - ) - ) +(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 (surface-flags always-rotate-toward-transv))) (defstate target-warp-out (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) - (set! (-> self draw status) (the-as draw-status v0-0)) - v0-0 - ) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :enter (behavior ((arg0 vector) (arg1 vector)) - (set-time! (-> self state-time)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *warp-jump-mods*) - (set! (-> self control unknown-vector102 quad) (-> arg0 quad)) - (set! (-> self control unknown-vector103 quad) (-> arg1 quad)) - (+! (-> self control unknown-vector102 y) -4096.0) - (set! (-> self control unknown-uint20) (the-as uint #f)) - (vector-reset! (-> self control transv)) - (logior! (-> self state-flags) (state-flags use-alt-cam-pos)) - (set! (-> self alt-cam-pos quad) (-> arg1 quad)) - ) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) - ) - :code (behavior ((arg0 vector) (arg1 vector)) - (send-event *camera* 'change-state cam-fixed 0) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe 16.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 16.0 0))) - ) - (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))) - ) - ) - ) - (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-time! (-> self state-time)) - (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)) - (time-elapsed? (-> self state-time) (seconds 0.05)) - ) - (vector-seek! (-> self draw color-mult) (new 'static 'vector) (* 2.0 (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 - ) - ) - ) - ) - ) - ) - (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe 40.0 0)) :frame-num (ja-aframe 16.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 40.0 0))) - ) - (anim-loop) - ) - :post target-no-stick-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('death-end) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) + (set! (-> self draw status) (the-as draw-status v0-0)) + v0-0)) + (else (target-generic-event-handler proc argc message block)))) + :enter + (behavior ((arg0 vector) (arg1 vector)) + (set-time! (-> self state-time)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *warp-jump-mods*) + (set! (-> self control unknown-vector102 quad) (-> arg0 quad)) + (set! (-> self control unknown-vector103 quad) (-> arg1 quad)) + (+! (-> self control unknown-vector102 y) -4096.0) + (set! (-> self control unknown-uint20) (the-as uint #f)) + (vector-reset! (-> self control transv)) + (logior! (-> self state-flags) (state-flags use-alt-cam-pos)) + (set! (-> self alt-cam-pos quad) (-> arg1 quad))) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags use-alt-cam-pos))) + :code + (behavior ((arg0 vector) (arg1 vector)) + (send-event *camera* 'change-state cam-fixed 0) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe 16.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 16.0 0)))) + (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)))))) + (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-time! (-> self state-time)) + (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)) + (time-elapsed? (-> self state-time) (seconds 0.05))) + (vector-seek! (-> self draw color-mult) (new 'static 'vector) (* 2.0 (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)))))) + (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe 40.0 0)) :frame-num (ja-aframe 16.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 40.0 0)))) + (anim-loop)) + :post target-no-stick-post) diff --git a/goal_src/jak1/engine/common-obs/baseplat.gc b/goal_src/jak1/engine/common-obs/baseplat.gc index 80a08799e2..75be91c0e1 100644 --- a/goal_src/jak1/engine/common-obs/baseplat.gc +++ b/goal_src/jak1/engine/common-obs/baseplat.gc @@ -1,14 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/game/projectiles.gc") - -;; name: baseplat.gc -;; name in dgo: baseplat -;; dgos: GAME, COMMON, L1 - (defenum eco-door-flags :bitfield #t :type int32 @@ -43,36 +37,30 @@ (ecdf28) (ecdf29) (ecdf30) - (ecdf31) - ) + (ecdf31)) ;; DECOMP BEGINS (deftype baseplat (process-drawable) - ((root collide-shape-moving :override) - (smush smush-control :inline) - (basetrans vector :inline) - (bouncing symbol) - ) + ((root collide-shape-moving :override) + (smush smush-control :inline) + (basetrans vector :inline) + (bouncing symbol)) (:methods - (baseplat-method-20 (_type_) none) - (baseplat-method-21 (_type_) none) - (baseplat-method-22 (_type_) none) - (get-unlit-skel (_type_) skeleton-group) - (baseplat-method-24 (_type_) none) - (baseplat-method-25 (_type_) sparticle-launch-group) - (baseplat-method-26 (_type_) none) - ) - ) - + (baseplat-method-20 (_type_) none) + (baseplat-method-21 (_type_) none) + (baseplat-method-22 (_type_) none) + (get-unlit-skel (_type_) skeleton-group) + (baseplat-method-24 (_type_) none) + (baseplat-method-25 (_type_) sparticle-launch-group) + (baseplat-method-26 (_type_) none))) (defmethod baseplat-method-21 ((this baseplat)) (logior! (-> this skel status) (janim-status inited)) (set! (-> this basetrans quad) (-> this root trans quad)) (set! (-> this bouncing) #f) 0 - (none) - ) + (none)) (defmethod baseplat-method-22 ((this baseplat)) (activate! (-> this smush) -1.0 60 150 1.0 1.0) @@ -80,8 +68,7 @@ (logclear! (-> this mask) (process-mask sleep)) (logclear! (-> this mask) (process-mask sleep-code)) 0 - (none) - ) + (none)) (defbehavior plat-code baseplat () (transform-post) @@ -92,14 +79,10 @@ (when (not (-> self bouncing)) (logior! (-> self mask) (process-mask sleep)) (suspend) - 0 - ) + 0) (while (-> self bouncing) - (suspend) - ) - ) - (none) - ) + (suspend))) + (none)) (defbehavior plat-trans baseplat () (rider-trans) @@ -108,216 +91,147 @@ (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self basetrans quad)) (+! (-> gp-0 y) (* 819.2 (update! (-> self smush)))) - (move-to-point! (-> self root) gp-0) - ) - (if (not (!= (-> self smush amp) 0.0)) - (set! (-> self bouncing) #f) - ) - ) - (else - (move-to-point! (-> self root) (-> self basetrans)) - ) - ) - (none) - ) + (move-to-point! (-> self root) gp-0)) + (if (not (!= (-> self smush amp) 0.0)) (set! (-> self bouncing) #f))) + (else (move-to-point! (-> self root) (-> self basetrans)))) + (none)) (defbehavior plat-post baseplat () (baseplat-method-20 self) (rider-post) - (none) - ) + (none)) (defmethod baseplat-method-25 ((this baseplat)) - (the-as sparticle-launch-group 0) - ) + (the-as sparticle-launch-group 0)) (defmethod baseplat-method-20 ((this baseplat)) - (if (nonzero? (-> this part)) - (spawn (-> this part) (-> this root trans)) - ) - (none) - ) + (if (nonzero? (-> this part)) (spawn (-> this part) (-> this root trans))) + (none)) (defbehavior plat-event baseplat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('bonk) - (baseplat-method-22 self) - ) - ) - ) + (('bonk) (baseplat-method-22 self)))) (deftype eco-door (process-drawable) - ((root collide-shape :override) - (speed float) - (open-distance float) - (close-distance float) - (out-dir vector :inline) - (open-sound sound-name) - (close-sound sound-name) - (state-actor entity-actor) - (flags eco-door-flags) - (locked symbol) - (auto-close symbol) - (one-way symbol) - ) + ((root collide-shape :override) + (speed float) + (open-distance float) + (close-distance float) + (out-dir vector :inline) + (open-sound sound-name) + (close-sound sound-name) + (state-actor entity-actor) + (flags eco-door-flags) + (locked symbol) + (auto-close symbol) + (one-way symbol)) (:state-methods - door-closed - door-opening - door-open - door-closing - ) + door-closed + door-opening + door-open + door-closing) (:methods - (eco-door-method-24 (_type_) none) - (eco-door-method-25 (_type_) none) - (eco-door-method-26 (_type_) none) - ) - ) - + (eco-door-method-24 (_type_) none) + (eco-door-method-25 (_type_) none) + (eco-door-method-26 (_type_) none))) (defbehavior eco-door-event-handler eco-door ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('trigger) (set! (-> self locked) (not (-> self locked))) (cond - ((-> self locked) - (if (= (-> self next-state name) 'door-closed) - (sound-play "door-lock") - ) - ) - (else - (sound-play "door-unlock") - ) - ) - #t - ) - ) - ) + ((-> self locked) (if (= (-> self next-state name) 'door-closed) (sound-play "door-lock"))) + (else (sound-play "door-unlock"))) + #t))) eco-door-event-handler (defstate door-closed (eco-door) :virtual #t :event eco-door-event-handler - :code (behavior () - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - (update-transforms! (-> self root)) - (ja-post) - (loop - (when (and *target* - (>= (-> self open-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (eco-door-method-26 self) - (if (and (not (-> self locked)) - (or (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - (and (-> self one-way) (< (vector4-dot (-> self out-dir) (target-pos 0)) -8192.0)) - ) - ) - (go-virtual door-opening) - ) - (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) - ) + :code + (behavior () + (ja :num-func num-func-identity :frame-num 0.0) (suspend) - ) - ) - ) + (update-transforms! (-> self root)) + (ja-post) + (loop + (when (and *target* (>= (-> self open-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (eco-door-method-26 self) + (if (and (not (-> self locked)) + (or (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (send-event *target* 'query 'powerup (pickup-type eco-blue)) + (and (-> self one-way) (< (vector4-dot (-> self out-dir) (target-pos 0)) -8192.0)))) + (go-virtual door-opening)) + (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none))) + (suspend)))) (defstate door-opening (eco-door) :virtual #t :event eco-door-event-handler - :code (behavior () - (let ((gp-0 - (and (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - ) - ) - (if gp-0 - (sound-play "blue-eco-on" :position (the-as symbol (-> self root trans))) - ) - (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) - (clear-collide-with-as (-> self root)) - (until (ja-done? 0) - (ja :num! (seek! max (-> self speed))) - (if (and gp-0 (rand-vu-percent? 0.5)) - (spawn-projectile-blue *target*) - ) - (suspend) - ) - ) - (go-virtual door-open) - ) - :post transform-post - ) + :code + (behavior () + (let ((gp-0 (and (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (send-event *target* 'query 'powerup (pickup-type eco-blue))))) + (if gp-0 (sound-play "blue-eco-on" :position (the-as symbol (-> self root trans)))) + (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) + (clear-collide-with-as (-> self root)) + (until (ja-done? 0) + (ja :num! (seek! max (-> self speed))) + (if (and gp-0 (rand-vu-percent? 0.5)) (spawn-projectile-blue *target*)) + (suspend))) + (go-virtual door-open)) + :post transform-post) (defstate door-open (eco-door) :virtual #t :event eco-door-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (process-entity-status! self (entity-perm-status complete) #t) - (clear-collide-with-as (-> self root)) - (ja :num-func num-func-identity :frame-num max) - (logior! (-> self draw status) (draw-status hidden)) - (suspend) - (update-transforms! (-> self root)) - (ja-post) - (loop - (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 trans) (-> *target* control trans))) - ) - ) - (if (and (>= (* f30-0 f28-0) 0.0) (< 16384.0 (fabs f28-0))) - (go-virtual door-closing) - ) - ) - ) + :code + (behavior () + (set-time! (-> self state-time)) + (process-entity-status! self (entity-perm-status complete) #t) + (clear-collide-with-as (-> self root)) + (ja :num-func num-func-identity :frame-num max) + (logior! (-> self draw status) (draw-status hidden)) (suspend) - ) - ) - ) + (update-transforms! (-> self root)) + (ja-post) + (loop + (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 trans) (-> *target* control trans))))) + (if (and (>= (* f30-0 f28-0) 0.0) (< 16384.0 (fabs f28-0))) (go-virtual door-closing)))) + (suspend)))) (defstate door-closing (eco-door) :virtual #t :event eco-door-event-handler - :code (behavior () - (restore-collide-with-as (-> self root)) - (logclear! (-> self draw status) (draw-status hidden)) - (let ((gp-0 (new 'stack 'overlaps-others-params))) - (set! (-> gp-0 options) (the-as uint 1)) - (set! (-> gp-0 tlist) #f) - (while (find-overlapping-shapes (-> self root) gp-0) - (suspend) - ) - ) - (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) - (until (ja-done? 0) - (ja :num! (seek! 0.0 (-> self speed))) - (suspend) - ) - (if (-> self locked) - (sound-play "door-lock") - ) - (go-virtual door-closed) - ) - :post transform-post - ) + :code + (behavior () + (restore-collide-with-as (-> self root)) + (logclear! (-> self draw status) (draw-status hidden)) + (let ((gp-0 (new 'stack 'overlaps-others-params))) + (set! (-> gp-0 options) (the-as uint 1)) + (set! (-> gp-0 tlist) #f) + (while (find-overlapping-shapes (-> self root) gp-0) + (suspend))) + (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) + (until (ja-done? 0) + (ja :num! (seek! 0.0 (-> self speed))) + (suspend)) + (if (-> self locked) (sound-play "door-lock")) + (go-virtual door-closed)) + :post transform-post) (defmethod eco-door-method-26 ((this eco-door)) (when (-> this state-actor) (if (logtest? (-> this state-actor extra perm status) (entity-perm-status complete)) - (set! (-> this locked) (logtest? (-> this flags) (eco-door-flags ecdf01))) - (set! (-> this locked) (logtest? (-> this flags) (eco-door-flags ecdf00))) - ) - ) + (set! (-> this locked) (logtest? (-> this flags) (eco-door-flags ecdf01))) + (set! (-> this locked) (logtest? (-> this flags) (eco-door-flags ecdf00))))) 0 - (none) - ) + (none)) (defmethod eco-door-method-24 ((this eco-door)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -328,36 +242,27 @@ eco-door-event-handler (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod eco-door-method-25 ((this eco-door)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this eco-door) (arg0 entity-actor)) (eco-door-method-24 this) (process-drawable-from-entity! this arg0) (let ((f0-0 (res-lump-float (-> this entity) 'scale :default 1.0))) - (set-vector! (-> this root scale) f0-0 f0-0 f0-0 1.0) - ) + (set-vector! (-> this root scale) f0-0 f0-0 f0-0 1.0)) (set! (-> this open-distance) 32768.0) (set! (-> this close-distance) 49152.0) (set! (-> this speed) 1.0) (set! (-> this state-actor) #f) - (let ((v1-5 (entity-actor-lookup arg0 'state-actor 0))) - (if v1-5 - (set! (-> this state-actor) v1-5) - ) - ) + (let ((v1-5 (entity-actor-lookup arg0 'state-actor 0))) (if v1-5 (set! (-> this state-actor) v1-5))) (set! (-> this locked) #f) (set! (-> this flags) (res-lump-value arg0 'flags eco-door-flags)) (eco-door-method-26 this) @@ -369,10 +274,7 @@ eco-door-event-handler (eco-door-method-25 this) (if (and (not (-> this auto-close)) (-> this entity) - (logtest? (-> this entity extra perm status) (entity-perm-status complete)) - ) - (go (method-of-object this door-open)) - (go (method-of-object this door-closed)) - ) - (none) - ) + (logtest? (-> this entity extra perm status) (entity-perm-status complete))) + (go (method-of-object this door-open)) + (go (method-of-object this door-closed))) + (none)) diff --git a/goal_src/jak1/engine/common-obs/collectables-part.gc b/goal_src/jak1/engine/common-obs/collectables-part.gc index b1bde8eed5..877315dfd8 100644 --- a/goal_src/jak1/engine/common-obs/collectables-part.gc +++ b/goal_src/jak1/engine/common-obs/collectables-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/anim/joint-h.gc") @@ -10,699 +9,635 @@ (require "engine/collide/collide-shape-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: collectables-part.gc -;; name in dgo: collectables-part -;; dgos: GAME, ENGINE - ;; why is this file built first.... ;; TODO - also for entity and beach-rocks (declare-type collectable process-drawable) + (declare-type eco-collectable process-drawable) ;; DECOMP BEGINS (defun eco-fadeout ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) - (if (not (logtest? (-> (the-as process-drawable (-> arg1 key proc)) state-flags) (state-flags fade-out-particles)) - ) - (set! (-> arg1 next-time) (the-as uint (* (-> *sp-frame-time* x) 2))) - ) + (if (not (logtest? (-> (the-as process-drawable (-> arg1 key proc)) state-flags) (state-flags fade-out-particles))) + (set! (-> arg1 next-time) (the-as uint (* (-> *sp-frame-time* x) 2)))) 0 - (none) - ) + (none)) (defun eco-track-root-prim-fadeout ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (let ((v1-1 (the-as process-drawable (-> arg1 key proc)))) (let ((a0-3 (-> (the-as collide-shape-moving (-> v1-1 root)) root-prim prim-core))) (set! (-> arg2 x) (-> a0-3 world-sphere x)) (set! (-> arg2 y) (-> a0-3 world-sphere y)) - (set! (-> arg2 z) (-> a0-3 world-sphere z)) - ) + (set! (-> arg2 z) (-> a0-3 world-sphere z))) (if (not (logtest? (-> v1-1 state-flags) (state-flags fade-out-particles))) - (set! (-> arg1 next-time) (the-as uint (* (-> *sp-frame-time* x) 2))) - ) - ) + (set! (-> arg1 next-time) (the-as uint (* (-> *sp-frame-time* x) 2))))) 0 - (none) - ) + (none)) (defun part-tracker-track-root ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (let ((v1-3 (-> (the-as process-drawable (-> arg1 key proc)) root trans))) (set! (-> arg2 x) (-> v1-3 x)) (set! (-> arg2 y) (-> v1-3 y)) - (set! (-> arg2 z) (-> v1-3 z)) - ) + (set! (-> arg2 z) (-> v1-3 z))) 0 - (none) - ) + (none)) (defun part-tracker-move-to-target ((arg0 part-tracker)) (let* ((v1-0 *target*) - (a2-0 (if (not v1-0) - (-> arg0 root trans) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-0 node-list data 5)) - ) - ) - ) - (vector-lerp! - (-> arg0 root trans) - (-> arg0 offset) - a2-0 - (* 0.006666667 (the float (- (current-time) (-> arg0 start-time)))) - ) - ) - ) + (a2-0 (if (not v1-0) (-> arg0 root trans) (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-0 node-list data 5))))) + (vector-lerp! (-> arg0 root trans) + (-> arg0 offset) + a2-0 + (* 0.006666667 (the float (- (current-time) (-> arg0 start-time))))))) (defun part-tracker-track-target ((arg0 part-tracker)) (set! (-> arg0 linger-callback) (-> arg0 callback)) (let* ((v1-1 *target*) - (v1-3 (if (not v1-1) - (-> arg0 root trans) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-1 node-list data 5)) - ) - ) - (v0-1 (-> arg0 root trans)) - ) + (v1-3 (if (not v1-1) (-> arg0 root trans) (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-1 node-list data 5)))) + (v0-1 (-> arg0 root trans))) (set! (-> v0-1 quad) (-> v1-3 quad)) - v0-1 - ) - ) + v0-1)) (defpartgroup group-eco-blue :id 42 :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2 :flags (launch-asap) :binding 3) - (sp-item 3 :fade-after (meters 40) :flags (start-dead launch-asap) :binding 5) - (sp-item 3 :fade-after (meters 60) :flags (start-dead launch-asap) :binding 5) - (sp-item 3 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 5) - (sp-item 3 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 5) - (sp-item 3 :fade-after (meters 130) :flags (start-dead launch-asap) :binding 5) - (sp-item 3 :flags (start-dead launch-asap) :binding 5) - (sp-item 5 :flags (start-dead launch-asap) :binding 7) - (sp-item 5 :flags (start-dead launch-asap) :binding 8) - (sp-item 5 :flags (start-dead launch-asap) :binding 9) - (sp-item 5 :flags (start-dead launch-asap) :binding 7) - (sp-item 5 :flags (start-dead launch-asap) :binding 8) - (sp-item 5 :flags (start-dead launch-asap) :binding 9) - (sp-item 7 :fade-after (meters 60) :flags (start-dead) :binding 10) - (sp-item 8 :fade-after (meters 70) :flags (start-dead) :binding 10) - (sp-item 9 :fade-after (meters 80) :flags (start-dead) :binding 10) - (sp-item 7 :fade-after (meters 90) :flags (start-dead) :binding 10) - (sp-item 8 :fade-after (meters 100) :flags (start-dead) :binding 10) - (sp-item 9 :fade-after (meters 100) :flags (start-dead) :binding 10) - (sp-item 10 :flags (start-dead)) - ) - ) + :parts + ((sp-item 2 :flags (launch-asap) :binding 3) + (sp-item 3 :fade-after (meters 40) :flags (start-dead launch-asap) :binding 5) + (sp-item 3 :fade-after (meters 60) :flags (start-dead launch-asap) :binding 5) + (sp-item 3 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 5) + (sp-item 3 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 5) + (sp-item 3 :fade-after (meters 130) :flags (start-dead launch-asap) :binding 5) + (sp-item 3 :flags (start-dead launch-asap) :binding 5) + (sp-item 5 :flags (start-dead launch-asap) :binding 7) + (sp-item 5 :flags (start-dead launch-asap) :binding 8) + (sp-item 5 :flags (start-dead launch-asap) :binding 9) + (sp-item 5 :flags (start-dead launch-asap) :binding 7) + (sp-item 5 :flags (start-dead launch-asap) :binding 8) + (sp-item 5 :flags (start-dead launch-asap) :binding 9) + (sp-item 7 :fade-after (meters 60) :flags (start-dead) :binding 10) + (sp-item 8 :fade-after (meters 70) :flags (start-dead) :binding 10) + (sp-item 9 :fade-after (meters 80) :flags (start-dead) :binding 10) + (sp-item 7 :fade-after (meters 90) :flags (start-dead) :binding 10) + (sp-item 8 :fade-after (meters 100) :flags (start-dead) :binding 10) + (sp-item 9 :fade-after (meters 100) :flags (start-dead) :binding 10) + (sp-item 10 :flags (start-dead)))) (defpart 2 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 4)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:timer (seconds -0.005)) - (:flags (bit3 bit14)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (bit3 bit14)) + (:func 'sparticle-track-root-prim))) (defpart 3 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.3) (meters 0.15)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 32.0 96.0) - (:b 128.0 128.0) - (:a 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0148148155) (meters 0.0044444446)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:timer (seconds -0.005)) - (:flags (bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 4) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3) (meters 0.15)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 32.0 96.0) + (:b 128.0 128.0) + (:a 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 4))) (defpart 4 - :init-specs ((:fade-a -0.21333334) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.21333334) (:timer (seconds 0.5)))) (defpart 5 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.2) (meters 0.1)) - (:scale-x (meters 0.8) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 192.0) - (:a 32.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.017777778) (meters 0.0148148155)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees 269.52002) (degrees 208.99998)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 6) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.2) (meters 0.1)) + (:scale-x (meters 0.8) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 192.0) + (:a 32.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees 269.52002) (degrees 208.99998)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 6))) (defpart 6 - :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5)))) (defpart 7 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 0.2) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0 64.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 8 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 0.2) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0 64.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 9 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 0.2) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0 64.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 10 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.2 0.2) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 192.0) - (:a 96.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.2 0.2) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 192.0) + (:a 96.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-eco-blue-collect :id 43 :duration (seconds 0.5) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 11 :flags (launch-asap) :binding 12) - (sp-item 12 :flags (start-dead launch-asap) :binding 13) - (sp-item 12 :flags (start-dead launch-asap) :binding 14) - (sp-item 12 :flags (start-dead launch-asap) :binding 13) - (sp-item 12 :flags (start-dead launch-asap) :binding 14) - (sp-item 12 :flags (start-dead launch-asap) :binding 147) - (sp-item 13 :fade-after (meters 40) :flags (start-dead)) - (sp-item 13 :fade-after (meters 40) :flags (start-dead)) - (sp-item 13 :fade-after (meters 40) :flags (start-dead)) - (sp-item 13 :fade-after (meters 40) :flags (start-dead)) - (sp-item 14 :fade-after (meters 40) :flags (start-dead)) - (sp-item 14 :fade-after (meters 40) :flags (start-dead)) - (sp-item 14 :fade-after (meters 40) :flags (start-dead)) - (sp-item 14 :fade-after (meters 40) :flags (start-dead)) - (sp-item 147 :fade-after (meters 40) :flags (start-dead)) - (sp-item 147 :fade-after (meters 40) :flags (start-dead)) - (sp-item 147 :fade-after (meters 40) :flags (start-dead)) - (sp-item 147 :fade-after (meters 40) :flags (start-dead)) - ) - ) + :parts + ((sp-item 11 :flags (launch-asap) :binding 12) + (sp-item 12 :flags (start-dead launch-asap) :binding 13) + (sp-item 12 :flags (start-dead launch-asap) :binding 14) + (sp-item 12 :flags (start-dead launch-asap) :binding 13) + (sp-item 12 :flags (start-dead launch-asap) :binding 14) + (sp-item 12 :flags (start-dead launch-asap) :binding 147) + (sp-item 13 :fade-after (meters 40) :flags (start-dead)) + (sp-item 13 :fade-after (meters 40) :flags (start-dead)) + (sp-item 13 :fade-after (meters 40) :flags (start-dead)) + (sp-item 13 :fade-after (meters 40) :flags (start-dead)) + (sp-item 14 :fade-after (meters 40) :flags (start-dead)) + (sp-item 14 :fade-after (meters 40) :flags (start-dead)) + (sp-item 14 :fade-after (meters 40) :flags (start-dead)) + (sp-item 14 :fade-after (meters 40) :flags (start-dead)) + (sp-item 147 :fade-after (meters 40) :flags (start-dead)) + (sp-item 147 :fade-after (meters 40) :flags (start-dead)) + (sp-item 147 :fade-after (meters 40) :flags (start-dead)) + (sp-item 147 :fade-after (meters 40) :flags (start-dead)))) (defpart 11 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 192.0) - (:a 64.0) - (:fade-a -3.2) - (:timer (seconds 0.5)) - (:flags (bit3 bit14)) - (:func 'part-tracker-track-root) - (:next-time (seconds 0.05)) - (:next-launcher 148) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 192.0) + (:a 64.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (bit3 bit14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 148))) (defpart 12 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 5.0) - (:y (meters -4) (meters 16)) - (:z (meters 0.08)) - (:scale-x (meters 0.75) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) - (:vel-y (meters 0)) - (:vel-z (meters 0.08)) - (:accel-z (meters -0.0053333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.75) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 13 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0) - (:scale-x (meters 0.2) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0 64.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 14 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.2) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0 64.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 147 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.2) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0 64.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.2) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0 64.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpartgroup group-part-vent-blue-active :id 44 :bounds (static-bspherem 0 5 0 5) - :parts ((sp-item 149 :fade-after (meters 140) :falloff-to (meters 140) :binding 156) - (sp-item 149 :fade-after (meters 140) :falloff-to (meters 140) :binding 155) - (sp-item 149 :fade-after (meters 140) :falloff-to (meters 140) :binding 154) - (sp-item 150) - (sp-item 151 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 152 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 153 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 154 :fade-after (meters 30) :falloff-to (meters 30) :flags (start-dead)) - (sp-item 155 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 156 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 154 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) - (sp-item 155 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 156 :fade-after (meters 110) :falloff-to (meters 110) :flags (start-dead)) - (sp-item 154 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) - (sp-item 155 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) - ) - ) + :parts + ((sp-item 149 :fade-after (meters 140) :falloff-to (meters 140) :binding 156) + (sp-item 149 :fade-after (meters 140) :falloff-to (meters 140) :binding 155) + (sp-item 149 :fade-after (meters 140) :falloff-to (meters 140) :binding 154) + (sp-item 150) + (sp-item 151 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 152 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 153 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 154 :fade-after (meters 30) :falloff-to (meters 30) :flags (start-dead)) + (sp-item 155 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 156 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 154 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) + (sp-item 155 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 156 :fade-after (meters 110) :falloff-to (meters 110) :flags (start-dead)) + (sp-item 154 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) + (sp-item 155 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)))) (defpartgroup group-part-vent-blue-inactive :id 45 :bounds (static-bspherem 0 5 0 5) - :parts ((sp-item 149 :fade-after (meters 100)) (sp-item 150)) - ) + :parts ((sp-item 149 :fade-after (meters 100)) (sp-item 150))) (defpart 150 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.1 1.0) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.5) (meters 1.4)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 192.0) - (:a 64.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:fade-a -0.2) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.1 1.0) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 1.4)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 192.0) + (:a 64.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:fade-a -0.2) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)))) (defpart 149 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.05 0.1) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 192.0) - (:a 96.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.05 0.1) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 192.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)))) (defpart 156 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 155 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 154 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 151 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.1 0.5) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.305)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.1 0.5) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 152 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.305)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 153 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.3 0.1) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.305)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.3 0.1) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.305)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 146 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0))) (defpartgroup group-eco-red :id 48 :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 160 :flags (launch-asap) :binding 161) - (sp-item 161 :flags (start-dead launch-asap) :binding 162) - (sp-item 161 :flags (start-dead launch-asap) :binding 162) - (sp-item 161 :flags (start-dead launch-asap) :binding 162) - (sp-item 161 :flags (start-dead launch-asap) :binding 162) - (sp-item 161 :flags (start-dead launch-asap) :binding 162) - (sp-item 161 :flags (start-dead launch-asap) :binding 162) - (sp-item 162 :flags (start-dead launch-asap) :binding 163) - (sp-item 162 :flags (start-dead launch-asap) :binding 163) - (sp-item 162 :flags (start-dead launch-asap) :binding 163) - (sp-item 163 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 164) - (sp-item 163 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 164) - (sp-item 163 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 164) - (sp-item 164 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) - (sp-item 164 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) - (sp-item 164 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) - ) - ) + :parts + ((sp-item 160 :flags (launch-asap) :binding 161) + (sp-item 161 :flags (start-dead launch-asap) :binding 162) + (sp-item 161 :flags (start-dead launch-asap) :binding 162) + (sp-item 161 :flags (start-dead launch-asap) :binding 162) + (sp-item 161 :flags (start-dead launch-asap) :binding 162) + (sp-item 161 :flags (start-dead launch-asap) :binding 162) + (sp-item 161 :flags (start-dead launch-asap) :binding 162) + (sp-item 162 :flags (start-dead launch-asap) :binding 163) + (sp-item 162 :flags (start-dead launch-asap) :binding 163) + (sp-item 162 :flags (start-dead launch-asap) :binding 163) + (sp-item 163 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 164) + (sp-item 163 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 164) + (sp-item 163 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 164) + (sp-item 164 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) + (sp-item 164 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) + (sp-item 164 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)))) (defpart 160 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 4)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:timer (seconds -0.005)) - (:flags (bit3 bit14)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (bit3 bit14)) + (:func 'sparticle-track-root-prim))) (defpart 161 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.15) (meters 0.2)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 24.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0148148155) (meters 0.0044444446)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:timer (seconds -0.005)) - (:flags (bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 165) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.15) (meters 0.2)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 24.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 165))) (defpart 165 - :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5)))) (defpart 162 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.25) (meters 0.1)) - (:scale-x (meters 0.6) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.017777778) (meters 0.0148148155)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 166) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 0.1)) + (:scale-x (meters 0.6) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 166))) (defpart 166 - :init-specs ((:fade-a -0.21333334) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.21333334) (:timer (seconds 0.5)))) (defpart 163 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.07) (meters 0.03)) - (:scale-x (meters 0.6) (meters 0.6)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 32.0) - (:vel-x (meters 0.11259259)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 166) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.07) (meters 0.03)) + (:scale-x (meters 0.6) (meters 0.6)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:vel-x (meters 0.11259259)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 166))) (defpart 164 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 0.4) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.00038095238)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.01904762) - (:accel-y (meters 0.000100000005) (meters 0.00015)) - (:timer (seconds 0.1) (seconds 0.497)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 167) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 0.4) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.00038095238)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 167))) (defpart 167 - :init-specs ((:fade-g 0.0)) - ) + :init-specs ((:fade-g 0.0))) (defpartgroup group-eco-red-collect :id 49 @@ -710,1262 +645,1195 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 168 :flags (launch-asap) :binding 169) - (sp-item 169 :flags (start-dead launch-asap) :binding 170) - (sp-item 169 :flags (start-dead launch-asap) :binding 170) - (sp-item 169 :flags (start-dead launch-asap) :binding 170) - (sp-item 169 :flags (start-dead launch-asap) :binding 170) - (sp-item 169 :flags (start-dead launch-asap) :binding 170) - (sp-item 170 :fade-after (meters 40) :flags (start-dead)) - (sp-item 170 :fade-after (meters 40) :flags (start-dead)) - (sp-item 170 :fade-after (meters 40) :flags (start-dead)) - (sp-item 170 :fade-after (meters 40) :flags (start-dead)) - (sp-item 170 :fade-after (meters 40) :flags (start-dead)) - ) - ) + :parts + ((sp-item 168 :flags (launch-asap) :binding 169) + (sp-item 169 :flags (start-dead launch-asap) :binding 170) + (sp-item 169 :flags (start-dead launch-asap) :binding 170) + (sp-item 169 :flags (start-dead launch-asap) :binding 170) + (sp-item 169 :flags (start-dead launch-asap) :binding 170) + (sp-item 169 :flags (start-dead launch-asap) :binding 170) + (sp-item 170 :fade-after (meters 40) :flags (start-dead)) + (sp-item 170 :fade-after (meters 40) :flags (start-dead)) + (sp-item 170 :fade-after (meters 40) :flags (start-dead)) + (sp-item 170 :fade-after (meters 40) :flags (start-dead)) + (sp-item 170 :fade-after (meters 40) :flags (start-dead)))) (defpart 168 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 128.0) - (:fade-a -3.2) - (:timer (seconds 0.5)) - (:flags (bit3 bit14)) - (:func 'part-tracker-track-root) - (:next-time (seconds 0.05)) - (:next-launcher 148) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (bit3 bit14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 148))) (defpart 169 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:y (meters -4) (meters 16)) - (:z (meters 0.08)) - (:scale-x (meters 0.3) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0) - (:b 0.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) - (:vel-y (meters 0)) - (:vel-z (meters 0.08)) - (:accel-z (meters -0.0053333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 170 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 64.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters -0.005555555)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.0) - (:fade-a -0.22857143) - (:accel-y (meters 0.000100000005) (meters 0.00015)) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 171) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.005555555)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.0) + (:fade-a -0.22857143) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 171))) (defpartgroup group-part-vent-red-active :id 50 :bounds (static-bspherem 0 3 0 5) - :parts ((sp-item 172 :fade-after (meters 30) :period (seconds 1.1) :length (seconds 0.017) :binding 173) - (sp-item 172 :fade-after (meters 60) :period (seconds 2.455) :length (seconds 0.017) :binding 173) - (sp-item 172 :fade-after (meters 90) :period (seconds 3.12) :length (seconds 0.017) :binding 173) - (sp-item 172 :fade-after (meters 130) :period (seconds 1.76) :length (seconds 0.017) :binding 173) - (sp-item 172 :fade-after (meters 170) :period (seconds 2.67) :length (seconds 0.017) :binding 173) - (sp-item 173 :flags (start-dead launch-asap) :binding 174) - (sp-item 173 :flags (start-dead launch-asap) :binding 174) - (sp-item 173 :flags (start-dead launch-asap) :binding 174) - (sp-item 173 :flags (start-dead launch-asap) :binding 174) - (sp-item 173 :flags (start-dead launch-asap) :binding 174) - (sp-item 173 :flags (start-dead launch-asap) :binding 174) - (sp-item 173 :flags (start-dead launch-asap) :binding 174) - (sp-item 173 :flags (start-dead launch-asap) :binding 174) - (sp-item 174 :flags (start-dead launch-asap) :binding 175) - (sp-item 174 :flags (start-dead launch-asap) :binding 175) - (sp-item 174 :flags (start-dead launch-asap) :binding 175) - (sp-item 174 :flags (start-dead launch-asap) :binding 175) - (sp-item 174 :flags (start-dead launch-asap) :binding 175) - (sp-item 174 :flags (start-dead launch-asap) :binding 175) - (sp-item 174 :flags (start-dead launch-asap) :binding 175) - (sp-item 174 :flags (start-dead launch-asap) :binding 175) - (sp-item 175 :fade-after (meters 90) :falloff-to (meters 50) :flags (start-dead)) - (sp-item 175 :fade-after (meters 90) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 175 :fade-after (meters 90) :falloff-to (meters 70) :flags (start-dead)) - (sp-item 175 :fade-after (meters 90) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 175 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) - (sp-item 175 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 175 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 175 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 176 :fade-after (meters 140) :falloff-to (meters 140)) - (sp-item 177) - ) - ) + :parts + ((sp-item 172 :fade-after (meters 30) :period (seconds 1.1) :length (seconds 0.017) :binding 173) + (sp-item 172 :fade-after (meters 60) :period (seconds 2.455) :length (seconds 0.017) :binding 173) + (sp-item 172 :fade-after (meters 90) :period (seconds 3.12) :length (seconds 0.017) :binding 173) + (sp-item 172 :fade-after (meters 130) :period (seconds 1.76) :length (seconds 0.017) :binding 173) + (sp-item 172 :fade-after (meters 170) :period (seconds 2.67) :length (seconds 0.017) :binding 173) + (sp-item 173 :flags (start-dead launch-asap) :binding 174) + (sp-item 173 :flags (start-dead launch-asap) :binding 174) + (sp-item 173 :flags (start-dead launch-asap) :binding 174) + (sp-item 173 :flags (start-dead launch-asap) :binding 174) + (sp-item 173 :flags (start-dead launch-asap) :binding 174) + (sp-item 173 :flags (start-dead launch-asap) :binding 174) + (sp-item 173 :flags (start-dead launch-asap) :binding 174) + (sp-item 173 :flags (start-dead launch-asap) :binding 174) + (sp-item 174 :flags (start-dead launch-asap) :binding 175) + (sp-item 174 :flags (start-dead launch-asap) :binding 175) + (sp-item 174 :flags (start-dead launch-asap) :binding 175) + (sp-item 174 :flags (start-dead launch-asap) :binding 175) + (sp-item 174 :flags (start-dead launch-asap) :binding 175) + (sp-item 174 :flags (start-dead launch-asap) :binding 175) + (sp-item 174 :flags (start-dead launch-asap) :binding 175) + (sp-item 174 :flags (start-dead launch-asap) :binding 175) + (sp-item 175 :fade-after (meters 90) :falloff-to (meters 50) :flags (start-dead)) + (sp-item 175 :fade-after (meters 90) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 175 :fade-after (meters 90) :falloff-to (meters 70) :flags (start-dead)) + (sp-item 175 :fade-after (meters 90) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 175 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) + (sp-item 175 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 175 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 175 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 176 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 177))) (defpartgroup group-part-vent-red-inactive :id 51 :bounds (static-bspherem 0 3 0 5) - :parts ((sp-item 176 :fade-after (meters 140) :falloff-to (meters 140)) (sp-item 177)) - ) + :parts ((sp-item 176 :fade-after (meters 140) :falloff-to (meters 140)) (sp-item 177))) (defpart 177 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.6) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.9) (meters 1.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:fade-a -0.10666667) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.6) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.9) (meters 1.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)))) (defpart 176 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1 0.3) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:rotvel-z (degrees -0.1) (degrees 0.1)) - (:fade-a -0.21333334) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1 0.3) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.1)) + (:fade-a -0.21333334) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)))) (defpart 172 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 1.5)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 1.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 5)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 1.5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 1.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 5)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 173 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.5)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.017777778) (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:fade-a -0.28444445) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.5)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.017777778) (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.28444445) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 174 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.25) (meters 0.1)) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.017777778) (meters 0.0148148155)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 0.1)) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 175 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 64.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters -0.0023809525)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.07619048) - (:accel-y (meters 0.000100000005) (meters 0.00015)) - (:timer (seconds 0.1) (seconds 0.497)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 171) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.0023809525)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.07619048) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 171))) (defpart 171 - :init-specs ((:fade-g 0.0)) - ) + :init-specs ((:fade-g 0.0))) (defpartgroup group-part-vent-yellow-active :id 52 :bounds (static-bspherem 0 3 0 5) - :parts ((sp-item 178 :fade-after (meters 40) :period (seconds 1.1) :length (seconds 0.017) :binding 179) - (sp-item 178 :fade-after (meters 60) :period (seconds 2.455) :length (seconds 0.017) :binding 179) - (sp-item 178 :fade-after (meters 80) :period (seconds 3.12) :length (seconds 0.017) :binding 179) - (sp-item 178 :fade-after (meters 100) :period (seconds 1.76) :length (seconds 0.017) :binding 179) - (sp-item 178 :fade-after (meters 130) :period (seconds 2.67) :length (seconds 0.017) :binding 179) - (sp-item 179 :flags (start-dead launch-asap) :binding 180) - (sp-item 179 :flags (start-dead launch-asap) :binding 180) - (sp-item 179 :flags (start-dead launch-asap) :binding 180) - (sp-item 179 :flags (start-dead launch-asap) :binding 180) - (sp-item 179 :flags (start-dead launch-asap) :binding 180) - (sp-item 179 :flags (start-dead launch-asap) :binding 180) - (sp-item 179 :flags (start-dead launch-asap) :binding 180) - (sp-item 179 :flags (start-dead launch-asap) :binding 180) - (sp-item 180 :flags (start-dead launch-asap) :binding 181) - (sp-item 180 :flags (start-dead launch-asap) :binding 181) - (sp-item 180 :flags (start-dead launch-asap) :binding 181) - (sp-item 180 :flags (start-dead launch-asap) :binding 181) - (sp-item 180 :flags (start-dead launch-asap) :binding 181) - (sp-item 180 :flags (start-dead launch-asap) :binding 181) - (sp-item 180 :flags (start-dead launch-asap) :binding 181) - (sp-item 180 :flags (start-dead launch-asap) :binding 181) - (sp-item 181 :fade-after (meters 90) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 181 :fade-after (meters 90) :falloff-to (meters 70) :flags (start-dead)) - (sp-item 181 :fade-after (meters 90) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 181 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) - (sp-item 181 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 181 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 181 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 181 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 182 :fade-after (meters 140) :falloff-to (meters 140)) - (sp-item 183) - ) - ) + :parts + ((sp-item 178 :fade-after (meters 40) :period (seconds 1.1) :length (seconds 0.017) :binding 179) + (sp-item 178 :fade-after (meters 60) :period (seconds 2.455) :length (seconds 0.017) :binding 179) + (sp-item 178 :fade-after (meters 80) :period (seconds 3.12) :length (seconds 0.017) :binding 179) + (sp-item 178 :fade-after (meters 100) :period (seconds 1.76) :length (seconds 0.017) :binding 179) + (sp-item 178 :fade-after (meters 130) :period (seconds 2.67) :length (seconds 0.017) :binding 179) + (sp-item 179 :flags (start-dead launch-asap) :binding 180) + (sp-item 179 :flags (start-dead launch-asap) :binding 180) + (sp-item 179 :flags (start-dead launch-asap) :binding 180) + (sp-item 179 :flags (start-dead launch-asap) :binding 180) + (sp-item 179 :flags (start-dead launch-asap) :binding 180) + (sp-item 179 :flags (start-dead launch-asap) :binding 180) + (sp-item 179 :flags (start-dead launch-asap) :binding 180) + (sp-item 179 :flags (start-dead launch-asap) :binding 180) + (sp-item 180 :flags (start-dead launch-asap) :binding 181) + (sp-item 180 :flags (start-dead launch-asap) :binding 181) + (sp-item 180 :flags (start-dead launch-asap) :binding 181) + (sp-item 180 :flags (start-dead launch-asap) :binding 181) + (sp-item 180 :flags (start-dead launch-asap) :binding 181) + (sp-item 180 :flags (start-dead launch-asap) :binding 181) + (sp-item 180 :flags (start-dead launch-asap) :binding 181) + (sp-item 180 :flags (start-dead launch-asap) :binding 181) + (sp-item 181 :fade-after (meters 90) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 181 :fade-after (meters 90) :falloff-to (meters 70) :flags (start-dead)) + (sp-item 181 :fade-after (meters 90) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 181 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) + (sp-item 181 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 181 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 181 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 181 :fade-after (meters 90) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 182 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 183))) (defpartgroup group-part-vent-yellow-inactive :id 53 :bounds (static-bspherem 0 3 0 5) - :parts ((sp-item 182 :fade-after (meters 140) :falloff-to (meters 140)) (sp-item 183)) - ) + :parts ((sp-item 182 :fade-after (meters 140) :falloff-to (meters 140)) (sp-item 183))) (defpart 183 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.6) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.9) (meters 1.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 92.0 32.0) - (:g 32.0 92.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:fade-a -0.10666667) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.6) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.9) (meters 1.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 92.0 32.0) + (:g 32.0 92.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)))) (defpart 182 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1 0.3) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 64.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:rotvel-z (degrees -0.1) (degrees 0.1)) - (:fade-a -0.21333334) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1 0.3) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.1)) + (:fade-a -0.21333334) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)))) (defpart 178 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 1.5)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 1.0) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:timer (seconds 1.25)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 5)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 1.5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 1.0) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:timer (seconds 1.25)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 5)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 179 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0)) - (:z (meters 0.2) (meters 0.2)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 128.0) - (:vel-x (meters 0.10666667)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:fade-a -0.34133333) - (:timer (seconds 1.25)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0)) + (:z (meters 0.2) (meters 0.2)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 128.0) + (:vel-x (meters 0.10666667)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a -0.34133333) + (:timer (seconds 1.25)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 180 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.2)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 128.0) - (:vel-x (meters 0.11259259)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:fade-a -0.34133333) - (:timer (seconds 1.25)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.2)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 128.0) + (:vel-x (meters 0.11259259)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a -0.34133333) + (:timer (seconds 1.25)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 181 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.5 2.0) - (:y (meters -0.05)) - (:scale-x (meters 0.4) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0023333333) (meters 0.0016666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.024242423) - (:accel-y (meters -0.000100000005) (meters -0.0003)) - (:friction 0.93) - (:timer (seconds 0.1) (seconds 0.697)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.3)) - (:next-launcher 190) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.05)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.5 2.0) + (:y (meters -0.05)) + (:scale-x (meters 0.4) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0023333333) (meters 0.0016666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.024242423) + (:accel-y (meters -0.000100000005) (meters -0.0003)) + (:friction 0.93) + (:timer (seconds 0.1) (seconds 0.697)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.3)) + (:next-launcher 190) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.05)))) (defpart 190 - :init-specs ((:fade-r 0.0)) - ) + :init-specs ((:fade-r 0.0))) (defpartgroup group-eco-yellow :id 56 :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 191 :flags (launch-asap) :binding 192) - (sp-item 192 :flags (start-dead launch-asap) :binding 193) - (sp-item 192 :flags (start-dead launch-asap) :binding 193) - (sp-item 192 :flags (start-dead launch-asap) :binding 193) - (sp-item 192 :flags (start-dead launch-asap) :binding 193) - (sp-item 192 :flags (start-dead launch-asap) :binding 193) - (sp-item 192 :flags (start-dead launch-asap) :binding 193) - (sp-item 193 :flags (start-dead launch-asap) :binding 194) - (sp-item 193 :flags (start-dead launch-asap) :binding 194) - (sp-item 193 :flags (start-dead launch-asap) :binding 194) - (sp-item 193 :flags (start-dead launch-asap) :binding 194) - (sp-item 194 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 195) - (sp-item 194 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 195) - (sp-item 194 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 195) - (sp-item 194 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 195) - (sp-item 195 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) - (sp-item 195 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) - (sp-item 195 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) - (sp-item 195 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) - ) - ) + :parts + ((sp-item 191 :flags (launch-asap) :binding 192) + (sp-item 192 :flags (start-dead launch-asap) :binding 193) + (sp-item 192 :flags (start-dead launch-asap) :binding 193) + (sp-item 192 :flags (start-dead launch-asap) :binding 193) + (sp-item 192 :flags (start-dead launch-asap) :binding 193) + (sp-item 192 :flags (start-dead launch-asap) :binding 193) + (sp-item 192 :flags (start-dead launch-asap) :binding 193) + (sp-item 193 :flags (start-dead launch-asap) :binding 194) + (sp-item 193 :flags (start-dead launch-asap) :binding 194) + (sp-item 193 :flags (start-dead launch-asap) :binding 194) + (sp-item 193 :flags (start-dead launch-asap) :binding 194) + (sp-item 194 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 195) + (sp-item 194 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 195) + (sp-item 194 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 195) + (sp-item 194 :fade-after (meters 100) :flags (start-dead launch-asap) :binding 195) + (sp-item 195 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) + (sp-item 195 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) + (sp-item 195 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)) + (sp-item 195 :fade-after (meters 90) :falloff-to (meters 110) :flags (start-dead)))) (defpart 191 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 4)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:timer (seconds -0.005)) - (:flags (bit3 bit14)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:timer (seconds -0.005)) + (:flags (bit3 bit14)) + (:func 'sparticle-track-root-prim))) (defpart 192 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 5.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.15) (meters 0.2)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 192.0) - (:b 0.0) - (:a 16.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0148148155) (meters 0.0044444446)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:timer (seconds -0.005)) - (:flags (bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 196) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 5.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.15) (meters 0.2)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 16.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 196))) (defpart 196 - :init-specs ((:fade-a -0.10666667) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.10666667) (:timer (seconds 0.5)))) (defpart 193 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.75) (meters 0.1)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.017777778) (meters 0.0148148155)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 197) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.75) (meters 0.1)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.017777778) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 197))) (defpart 197 - :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5)))) (defpart 194 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.12) (meters 0.03)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 32.0) - (:vel-x (meters 0.11259259)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 197) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.12) (meters 0.03)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:vel-x (meters 0.11259259)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 197))) (defpart 195 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0006190476)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.01904762) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpart 198 - :init-specs ((:fade-g 0.0)) - ) + :init-specs ((:fade-g 0.0))) (defpartgroup group-eco-yellow-collect :id 57 :duration (seconds 0.5) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 199 :flags (launch-asap) :binding 200) - (sp-item 200 :flags (start-dead launch-asap) :binding 201) - (sp-item 200 :flags (start-dead launch-asap) :binding 201) - (sp-item 200 :flags (start-dead launch-asap) :binding 201) - (sp-item 200 :flags (start-dead launch-asap) :binding 201) - (sp-item 200 :flags (start-dead launch-asap) :binding 201) - (sp-item 201 :fade-after (meters 40) :flags (start-dead)) - (sp-item 201 :fade-after (meters 40) :flags (start-dead)) - (sp-item 201 :fade-after (meters 40) :flags (start-dead)) - (sp-item 201 :fade-after (meters 40) :flags (start-dead)) - (sp-item 201 :fade-after (meters 40) :flags (start-dead)) - ) - ) + :parts + ((sp-item 199 :flags (launch-asap) :binding 200) + (sp-item 200 :flags (start-dead launch-asap) :binding 201) + (sp-item 200 :flags (start-dead launch-asap) :binding 201) + (sp-item 200 :flags (start-dead launch-asap) :binding 201) + (sp-item 200 :flags (start-dead launch-asap) :binding 201) + (sp-item 200 :flags (start-dead launch-asap) :binding 201) + (sp-item 201 :fade-after (meters 40) :flags (start-dead)) + (sp-item 201 :fade-after (meters 40) :flags (start-dead)) + (sp-item 201 :fade-after (meters 40) :flags (start-dead)) + (sp-item 201 :fade-after (meters 40) :flags (start-dead)) + (sp-item 201 :fade-after (meters 40) :flags (start-dead)))) (defpart 199 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 192.0) - (:b 0.0) - (:a 64.0) - (:fade-a -3.2) - (:timer (seconds 0.5)) - (:flags (bit3 bit14)) - (:func 'part-tracker-track-root) - (:next-time (seconds 0.05)) - (:next-launcher 148) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 64.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (bit3 bit14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 148))) (defpart 200 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:y (meters -4) (meters 16)) - (:z (meters 0.08)) - (:scale-x (meters 0.3) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0) - (:b 0.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) - (:vel-y (meters 0)) - (:vel-z (meters 0.08)) - (:accel-z (meters -0.0053333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 201 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0006190476)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.01904762) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpartgroup group-eco-green :id 58 :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 202 :flags (launch-asap) :binding 203) - (sp-item 203 :flags (start-dead launch-asap) :binding 204) - (sp-item 203 :flags (start-dead launch-asap) :binding 204) - (sp-item 203 :flags (start-dead launch-asap) :binding 204) - (sp-item 203 :flags (start-dead launch-asap) :binding 204) - (sp-item 203 :flags (start-dead launch-asap) :binding 204) - (sp-item 203 :flags (start-dead launch-asap) :binding 204) - (sp-item 203 :flags (start-dead launch-asap) :binding 204) - (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) - (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) - (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) - (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) - (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) - (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) - ) - ) + :parts + ((sp-item 202 :flags (launch-asap) :binding 203) + (sp-item 203 :flags (start-dead launch-asap) :binding 204) + (sp-item 203 :flags (start-dead launch-asap) :binding 204) + (sp-item 203 :flags (start-dead launch-asap) :binding 204) + (sp-item 203 :flags (start-dead launch-asap) :binding 204) + (sp-item 203 :flags (start-dead launch-asap) :binding 204) + (sp-item 203 :flags (start-dead launch-asap) :binding 204) + (sp-item 203 :flags (start-dead launch-asap) :binding 204) + (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) + (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) + (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) + (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) + (sp-item 204 :fade-after (meters 90) :flags (start-dead launch-asap) :binding 205) + (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 205 :fade-after (meters 40) :falloff-to (meters 60) :flags (start-dead)))) (defpart 202 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters 4)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:a 1.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters 4)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:a 1.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root-prim))) (defpart 203 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.3) (meters 0.25)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:a 24.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0148148155) (meters 0.0044444446)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:timer (seconds -0.005)) - (:flags (bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 206) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3) (meters 0.25)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:a 24.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0148148155) (meters 0.0044444446)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 206))) (defpart 206 - :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5)))) (defpart 204 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.3)) - (:scale-x (meters 0.3) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 64.0 64.0) - (:g 255.0) - (:a 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.053333335) (meters 0.0148148155)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 207) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3)) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 64.0 64.0) + (:g 255.0) + (:a 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.053333335) (meters 0.0148148155)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 207))) (defpart 207 - :init-specs ((:fade-a -0.42666668) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.42666668) (:timer (seconds 0.5)))) (defpart 205 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:y (meters -0.05)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 0.0) - (:a 48.0) - (:scalevel-x (meters -0.00075757573)) - (:scalevel-y :copy scalevel-x) - (:fade-r -2.8333333) - (:accel-y (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.3)) - (:next-launcher 208) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:y (meters -0.05)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 0.0) + (:a 48.0) + (:scalevel-x (meters -0.00075757573)) + (:scalevel-y :copy scalevel-x) + (:fade-r -2.8333333) + (:accel-y (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.3)) + (:next-launcher 208))) (defpart 208 - :init-specs ((:fade-r 0.0)) - ) + :init-specs ((:fade-r 0.0))) (defpartgroup group-eco-green-pill :id 59 :bounds (static-bspherem 0 0 0 0.4) - :parts ((sp-item 209 :flags (launch-asap) :binding 210) - (sp-item 210 :flags (start-dead launch-asap) :binding 211) - (sp-item 211 :flags (start-dead launch-asap) :binding 212) - (sp-item 212 :flags (start-dead launch-asap) :binding 213) - (sp-item 212 :flags (start-dead launch-asap)) - (sp-item 212 :flags (start-dead launch-asap)) - (sp-item 212 :flags (start-dead launch-asap)) - (sp-item 213 :fade-after (meters 40) :flags (start-dead)) - ) - ) + :parts + ((sp-item 209 :flags (launch-asap) :binding 210) + (sp-item 210 :flags (start-dead launch-asap) :binding 211) + (sp-item 211 :flags (start-dead launch-asap) :binding 212) + (sp-item 212 :flags (start-dead launch-asap) :binding 213) + (sp-item 212 :flags (start-dead launch-asap)) + (sp-item 212 :flags (start-dead launch-asap)) + (sp-item 212 :flags (start-dead launch-asap)) + (sp-item 213 :fade-after (meters 40) :flags (start-dead)))) (defpart 209 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit3 bit14)) - (:func 'eco-track-root-prim-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 214) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit3 bit14)) + (:func 'eco-track-root-prim-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 214))) (defpart 210 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.2) (meters 0.1)) - (:scale-x (meters 0.6) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:a 24.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.026666667) (meters 0.026666667)) - (:vel-y (meters 0.0014814815)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-track-root-prim-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 214) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.2) (meters 0.1)) + (:scale-x (meters 0.6) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:a 24.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.026666667) (meters 0.026666667)) + (:vel-y (meters 0.0014814815)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-track-root-prim-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 214))) (defpart 214 - :init-specs ((:fade-a -0.16) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5)))) (defpart 211 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 3.0) - (:y (meters 0) (meters 16)) - (:z (meters 0) (meters 0.2)) - (:scale-x (meters 0.6) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:a 24.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.017777778) (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.4) 1 (degrees 0.8)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-track-root-prim-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 214) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 3.0) + (:y (meters 0) (meters 16)) + (:z (meters 0) (meters 0.2)) + (:scale-x (meters 0.6) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:a 24.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.017777778) (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.4) 1 (degrees 0.8)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-track-root-prim-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 214))) (defpart 212 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.08)) - (:scale-x (meters 0.2) (meters 0.05)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 255.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.10666667)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'eco-fadeout) - (:next-time (seconds 0.035)) - (:next-launcher 215) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.2) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 255.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.10666667)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'eco-fadeout) + (:next-time (seconds 0.035)) + (:next-launcher 215))) (defpart 215 - :init-specs ((:fade-r 0.0) (:fade-a -0.8466667) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-r 0.0) (:fade-a -0.8466667) (:timer (seconds 0.5)))) (defpart 213 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:y (meters -0.05)) - (:scale-x (meters 0.15)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 0.0) - (:a 96.0) - (:scalevel-x (meters -0.00039393938)) - (:scalevel-y :copy scalevel-x) - (:fade-r -2.8333333) - (:accel-y (meters -0.000100000005)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.3)) - (:next-launcher 208) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:y (meters -0.05)) + (:scale-x (meters 0.15)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 0.0) + (:a 96.0) + (:scalevel-x (meters -0.00039393938)) + (:scalevel-y :copy scalevel-x) + (:fade-r -2.8333333) + (:accel-y (meters -0.000100000005)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.3)) + (:next-launcher 208))) (defpartgroup group-eco-green-pill-collect :id 60 :duration (seconds 0.5) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 216 :flags (launch-asap) :binding 217) - (sp-item 217 :flags (start-dead launch-asap) :binding 218) - (sp-item 217 :flags (start-dead launch-asap) :binding 218) - (sp-item 217 :flags (start-dead launch-asap) :binding 218) - (sp-item 217 :flags (start-dead launch-asap) :binding 218) - (sp-item 217 :flags (start-dead launch-asap) :binding 218) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - ) - ) + :parts + ((sp-item 216 :flags (launch-asap) :binding 217) + (sp-item 217 :flags (start-dead launch-asap) :binding 218) + (sp-item 217 :flags (start-dead launch-asap) :binding 218) + (sp-item 217 :flags (start-dead launch-asap) :binding 218) + (sp-item 217 :flags (start-dead launch-asap) :binding 218) + (sp-item 217 :flags (start-dead launch-asap) :binding 218) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)))) (defpartgroup group-eco-green-collect :id 61 :duration (seconds 0.5) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 216 :flags (launch-asap) :binding 219) - (sp-item 219 :flags (start-dead launch-asap) :binding 218) - (sp-item 219 :flags (start-dead launch-asap) :binding 218) - (sp-item 219 :flags (start-dead launch-asap) :binding 218) - (sp-item 219 :flags (start-dead launch-asap) :binding 218) - (sp-item 219 :flags (start-dead launch-asap) :binding 218) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - (sp-item 218 :fade-after (meters 40) :flags (start-dead)) - ) - ) + :parts + ((sp-item 216 :flags (launch-asap) :binding 219) + (sp-item 219 :flags (start-dead launch-asap) :binding 218) + (sp-item 219 :flags (start-dead launch-asap) :binding 218) + (sp-item 219 :flags (start-dead launch-asap) :binding 218) + (sp-item 219 :flags (start-dead launch-asap) :binding 218) + (sp-item 219 :flags (start-dead launch-asap) :binding 218) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)) + (sp-item 218 :fade-after (meters 40) :flags (start-dead)))) (defpart 216 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:a 64.0) - (:fade-a -3.2) - (:timer (seconds 0.5)) - (:flags (bit3 bit14)) - (:func 'part-tracker-track-root) - (:next-time (seconds 0.05)) - (:next-launcher 148) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:a 64.0) + (:fade-a -3.2) + (:timer (seconds 0.5)) + (:flags (bit3 bit14)) + (:func 'part-tracker-track-root) + (:next-time (seconds 0.05)) + (:next-launcher 148))) (defpart 148 - :init-specs ((:scale-x (meters 0.1)) (:scale-y :copy scale-x) (:a 0.0) (:fade-a 0.0)) - ) + :init-specs ((:scale-x (meters 0.1)) (:scale-y :copy scale-x) (:a 0.0) (:fade-a 0.0))) (defpart 219 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:y (meters -4) (meters 16)) - (:z (meters 0.08)) - (:scale-x (meters 0.3) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 255.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) - (:vel-y (meters 0)) - (:vel-z (meters 0.08)) - (:accel-z (meters -0.0053333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 255.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) 2.0 (meters 0.035555556)) + (:vel-y (meters 0)) + (:vel-z (meters 0.08)) + (:accel-z (meters -0.0053333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 217 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -4) (meters 16)) - (:z (meters 0.08)) - (:scale-x (meters 0.25) (meters 0.05)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 255.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.017777778) (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0.04)) - (:accel-z (meters -0.0026666666)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -4) (meters 16)) + (:z (meters 0.08)) + (:scale-x (meters 0.25) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 255.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.017777778) (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0.04)) + (:accel-z (meters -0.0026666666)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 220 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -0.05)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 0.0) - (:a 96.0) - (:scalevel-x (meters -0.00075757573)) - (:scalevel-y :copy scalevel-x) - (:fade-r -2.8333333) - (:accel-y (meters -0.000100000005)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.3)) - (:next-launcher 221) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -0.05)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 0.0) + (:a 96.0) + (:scalevel-x (meters -0.00075757573)) + (:scalevel-y :copy scalevel-x) + (:fade-r -2.8333333) + (:accel-y (meters -0.000100000005)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.3)) + (:next-launcher 221))) (defpart 218 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -0.05)) - (:scale-x (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 0.0) - (:a 96.0) - (:scalevel-x (meters -0.0004545455)) - (:scalevel-y :copy scalevel-x) - (:fade-r -2.8333333) - (:accel-y (meters -0.000100000005)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.3)) - (:next-launcher 221) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -0.05)) + (:scale-x (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 0.0) + (:a 96.0) + (:scalevel-x (meters -0.0004545455)) + (:scalevel-y :copy scalevel-x) + (:fade-r -2.8333333) + (:accel-y (meters -0.000100000005)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.3)) + (:next-launcher 221))) (defpartgroup group-part-vent-green-active :id 62 :bounds (static-bspherem 0 5 0 5) - :parts ((sp-item 222 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 0.16) :length (seconds 0.017) :binding 223) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 225 :fade-after (meters 100)) - (sp-item 226) - ) - ) + :parts + ((sp-item 222 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 0.16) + :length (seconds 0.017) + :binding 223) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 223 :fade-after (meters 80) :flags (start-dead launch-asap) :binding 224) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 224 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 225 :fade-after (meters 100)) + (sp-item 226))) (defpart 226 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.6) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.9) (meters 1.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 92.0 32.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) - (:fade-a -0.10666667) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.6) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.9) (meters 1.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 92.0 32.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:rotvel-z (degrees -0.1) 1 (degrees 0.2)) + (:fade-a -0.10666667) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)))) (defpart 225 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1 0.3) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 64.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:rotvel-z (degrees -0.1) (degrees 0.1)) - (:fade-a -0.21333334) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1 0.3) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.1) (degrees 0.1)) + (:fade-a -0.21333334) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)))) (defpart 222 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -1) (meters 2)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:timer (seconds 2.5)) - (:flags (bit3 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -1) (meters 2)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:timer (seconds 2.5)) + (:flags (bit3 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 223 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.2) (meters 0.6)) - (:scale-x (meters 0.3) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 255.0) - (:b 0.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.053333335) (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-r -0.2) - (:timer (seconds 2) (seconds 0.497)) - (:flags (bit2 bit3 bit7 bit14)) - (:next-time (seconds 1.5) (seconds 0.497)) - (:next-launcher 227) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.2) (meters 0.6)) + (:scale-x (meters 0.3) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 255.0) + (:b 0.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.053333335) (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-r -0.2) + (:timer (seconds 2) (seconds 0.497)) + (:flags (bit2 bit3 bit7 bit14)) + (:next-time (seconds 1.5) (seconds 0.497)) + (:next-launcher 227))) (defpart 227 - :init-specs ((:fade-r 0.0) (:fade-a -0.8466667) (:timer (seconds 0.5))) - ) + :init-specs ((:fade-r 0.0) (:fade-a -0.8466667) (:timer (seconds 0.5)))) (defpart 224 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 0.0) - (:a 96.0) - (:scalevel-x (meters -0.0006060606)) - (:scalevel-y :copy scalevel-x) - (:fade-r -2.8333333) - (:accel-y (meters -0.00020000001)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.3)) - (:next-launcher 208) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 0.0) + (:a 96.0) + (:scalevel-x (meters -0.0006060606)) + (:scalevel-y :copy scalevel-x) + (:fade-r -2.8333333) + (:accel-y (meters -0.00020000001)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.3)) + (:next-launcher 208))) (defpartgroup group-fuel-cell-starburst :id 63 :bounds (static-bspherem 0 0.5 0 1.5) - :parts ((sp-item 228 :fade-after (meters 35)) - (sp-item 229 :fade-after (meters 20)) - (sp-item 230 :flags (bit1 launch-asap)) - (sp-item 231 :flags (bit1 launch-asap)) - ) - ) + :parts + ((sp-item 228 :fade-after (meters 35)) + (sp-item 229 :fade-after (meters 20)) + (sp-item 230 :flags (bit1 launch-asap)) + (sp-item 231 :flags (bit1 launch-asap)))) (defpart 228 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.5) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1) (meters 0.8)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 0.35555556) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root-prim) - (:next-time (seconds 0.3)) - (:next-launcher 232) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.5) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.8)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root-prim) + (:next-time (seconds 0.3)) + (:next-launcher 232))) (defpart 232 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 229 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.06) - (:scale-x (meters 2) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 0.32) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root-prim) - (:next-time (seconds 0.25)) - (:next-launcher 232) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.06) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root-prim) + (:next-time (seconds 0.25)) + (:next-launcher 232))) (defpart 230 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 3.5)) - (:rot-z (degrees 0)) - (:scale-y (meters 3)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 64.0) - (:rotvel-z (degrees -0.4)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 3.5)) + (:rot-z (degrees 0)) + (:scale-y (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 64.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root-prim))) (defpart 231 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 4)) - (:rot-z (degrees 0)) - (:scale-y (meters 3.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:rotvel-z (degrees 0.3)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0)) + (:scale-y (meters 3.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root-prim))) (defun sparticle-track-root-money ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (let ((v1-1 (-> arg1 key proc))) @@ -1973,156 +1841,146 @@ (let ((v1-3 (-> (the-as process-drawable v1-1) root trans))) (set! (-> arg2 x) (-> v1-3 x)) (set! (-> arg2 y) (+ 2048.0 (-> v1-3 y))) - (set! (-> arg2 z) (-> v1-3 z)) - ) - ) - ) + (set! (-> arg2 z) (-> v1-3 z))))) 0 - (none) - ) + (none)) (defpart 233 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.5) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 0.35555556) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 234) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.5) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 234))) (defpart 234 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 235 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.06) - (:scale-x (meters 2) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 0.32) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.25)) - (:next-launcher 234) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.06) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.25)) + (:next-launcher 234))) (defpart 236 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 2.5)) - (:rot-z (degrees 0)) - (:scale-y (meters 2)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 32.0) - (:rotvel-z (degrees -0.4)) - (:timer (seconds 12)) - (:flags (bit2 bit3)) - (:func 'sparticle-track-root-money) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 2.5)) + (:rot-z (degrees 0)) + (:scale-y (meters 2)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 32.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds 12)) + (:flags (bit2 bit3)) + (:func 'sparticle-track-root-money))) (defpart 237 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 3)) - (:rot-z (degrees 0)) - (:scale-y (meters 2.5)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 32.0) - (:rotvel-z (degrees 0.3)) - (:timer (seconds 12)) - (:flags (bit2 bit3)) - (:func 'sparticle-track-root-money) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-z (degrees 0)) + (:scale-y (meters 2.5)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 32.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds 12)) + (:flags (bit2 bit3)) + (:func 'sparticle-track-root-money))) ;; og:preserve-this customized (defpart 238 - :init-specs ((:texture (new 'static 'texture-id :index #x2c :page #x2)) - (:num 1.0) - (:scale-x (meters 1.28)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - (:func 'sparticle-track-root-money) - ) - ) - -(defpartgroup group-money-starburst :id 64 :bounds (static-bspherem 0 0.5 0 1.5) :parts ((sp-item 238))) + :init-specs + ((:texture (new 'static 'texture-id :index #x2c :page #x2)) + (:num 1.0) + (:scale-x (meters 1.28)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)) + (:func 'sparticle-track-root-money))) + +(defpartgroup group-money-starburst + :id 64 + :bounds (static-bspherem 0 0.5 0 1.5) + :parts ((sp-item 238))) (defpartgroup group-buzzer-effect :id 65 :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 239 :flags (is-3d)) (sp-item 240 :flags (is-3d))) - ) + :parts ((sp-item 239 :flags (is-3d)) (sp-item 240 :flags (is-3d)))) (defpart 239 - :init-specs ((:texture (new 'static 'texture-id :index #x1a :page #x2)) - (:num 2.0) - (:scale-x (meters 1.3) (meters 0.2)) - (:rot-x (degrees 0) (degrees 70)) - (:rot-y (degrees 0)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0) - (:fade-a -1.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -180) (degrees 360)) - (:launchrot-y (degrees -180) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1a :page #x2)) + (:num 2.0) + (:scale-x (meters 1.3) (meters 0.2)) + (:rot-x (degrees 0) (degrees 70)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:fade-a -1.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -180) (degrees 360)) + (:launchrot-y (degrees -180) (degrees 360)))) (defpart 240 - :init-specs ((:texture (new 'static 'texture-id :index #x1a :page #x2)) - (:num 2.0) - (:scale-x (meters 1.3) (meters 0.2)) - (:rot-x (degrees 110) (degrees 70)) - (:rot-y (degrees 0)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0) - (:fade-a -1.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -180) (degrees 360)) - (:launchrot-y (degrees -180) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1a :page #x2)) + (:num 2.0) + (:scale-x (meters 1.3) (meters 0.2)) + (:rot-x (degrees 110) (degrees 70)) + (:rot-y (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:fade-a -1.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -180) (degrees 360)) + (:launchrot-y (degrees -180) (degrees 360)))) (defpartgroup group-green-collect :id 66 @@ -2130,75 +1988,71 @@ :linger-duration (seconds 4) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 241) (sp-item 242) (sp-item 243)) - ) + :parts ((sp-item 241) (sp-item 242) (sp-item 243))) (defpart 241 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 16.0) - (:scale-x (meters 6) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 1)) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 244) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 244))) (defpart 242 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:scale-x (meters 8) (meters 2)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5)) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 2.1333334) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 244) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 244))) (defpart 243 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6)) - (:rot-z (degrees 0)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 128.0) - (:scalevel-x (meters 0.1)) - (:rotvel-z (degrees -0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.2)) - (:next-launcher 245) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 245))) (defpartgroup group-blue-collect :id 67 @@ -2206,75 +2060,71 @@ :linger-duration (seconds 4) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 246) (sp-item 247) (sp-item 248)) - ) + :parts ((sp-item 246) (sp-item 247) (sp-item 248))) (defpart 246 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 16.0) - (:scale-x (meters 6) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 1)) - (:r 32.0 32.0) - (:g 60.0 20.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 244) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 244))) (defpart 247 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:scale-x (meters 8) (meters 2)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5)) - (:r 32.0 32.0) - (:g 60.0 20.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 2.1333334) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 244) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 244))) (defpart 248 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6)) - (:rot-z (degrees 0)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 60.0 20.0) - (:b 128.0 64.0) - (:a 128.0) - (:scalevel-x (meters 0.1)) - (:rotvel-z (degrees -0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.2)) - (:next-launcher 245) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 60.0 20.0) + (:b 128.0 64.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 245))) (defpartgroup group-yellow-collect :id 68 @@ -2282,83 +2132,77 @@ :linger-duration (seconds 4) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 249) (sp-item 250) (sp-item 251)) - ) + :parts ((sp-item 249) (sp-item 250) (sp-item 251))) (defpart 249 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 16.0) - (:scale-x (meters 6) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 1)) - (:r 128.0 128.0) - (:g 64.0 192.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 244) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 244))) (defpart 244 - :init-specs ((:fade-a -0.15238096)) - ) + :init-specs ((:fade-a -0.15238096))) (defpart 250 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:scale-x (meters 8) (meters 2)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5)) - (:r 128.0 128.0) - (:g 64.0 192.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 2.1333334) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 244) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 244))) (defpart 251 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6)) - (:rot-z (degrees 0)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 192.0) - (:b 0.0) - (:a 128.0) - (:scalevel-x (meters 0.1)) - (:rotvel-z (degrees -0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.2)) - (:next-launcher 245) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 192.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 245))) (defpart 245 - :init-specs ((:scalevel-x (meters -0.025)) (:scalevel-y :copy scalevel-x)) - ) + :init-specs ((:scalevel-x (meters -0.025)) (:scalevel-y :copy scalevel-x))) (defpartgroup group-red-collect :id 69 @@ -2366,72 +2210,68 @@ :linger-duration (seconds 4) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 252) (sp-item 253) (sp-item 254)) - ) + :parts ((sp-item 252) (sp-item 253) (sp-item 254))) (defpart 252 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 16.0) - (:scale-x (meters 6) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 1)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 244) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 16.0) + (:scale-x (meters 6) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 244))) (defpart 253 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:scale-x (meters 8) (meters 2)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 2.1333334) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 244) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:scale-x (meters 8) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 2.1333334) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 244))) (defpart 254 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6)) - (:rot-z (degrees 0)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 128.0) - (:scalevel-x (meters 0.1)) - (:rotvel-z (degrees -0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.2)) - (:next-launcher 245) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters 0.1)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.2)) + (:next-launcher 245))) diff --git a/goal_src/jak1/engine/common-obs/collectables.gc b/goal_src/jak1/engine/common-obs/collectables.gc index 3768b01373..ff5a07c3c9 100644 --- a/goal_src/jak1/engine/common-obs/collectables.gc +++ b/goal_src/jak1/engine/common-obs/collectables.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/physics/trajectory.gc") (require "engine/collide/collide-cache.gc") @@ -20,6 +19,7 @@ (define-extern runs-on-eco-pickup (function pickup-type process-tree none)) (declare-type vent process-drawable) + (declare-type eco eco-collectable) (defenum collectable-flags @@ -31,65 +31,51 @@ (fading 3) (suck 4) (ignore-blue 5) - (anim 6) - ) + (anim 6)) ;; DECOMP BEGINS (define *eco-pill-count* 0) (deftype collectable (process-drawable) - ((root collide-shape-moving :override) - (pickup-type pickup-type) - (pickup-amount float) - (notify-parent basic) - (old-base vector :inline) - (base vector :inline) - (extra-trans vector :inline) - (jump-pos vector :inline) - (flags collectable-flags) - (birth-time time-frame) - (collect-timeout time-frame) - (fadeout-timeout time-frame) - (bob-offset int64) - (bob-amount float) - (pickup-handle handle) - (actor-pause symbol) - ) + ((root collide-shape-moving :override) + (pickup-type pickup-type) + (pickup-amount float) + (notify-parent basic) + (old-base vector :inline) + (base vector :inline) + (extra-trans vector :inline) + (jump-pos vector :inline) + (flags collectable-flags) + (birth-time time-frame) + (collect-timeout time-frame) + (fadeout-timeout time-frame) + (bob-offset int64) + (bob-amount float) + (pickup-handle handle) + (actor-pause symbol)) (:methods - (initialize (_type_) _type_) - (initialize-params (_type_ time-frame float) none) - ) - ) - + (initialize (_type_) _type_) + (initialize-params (_type_ time-frame float) none))) (defmethod initialize-params ((this collectable) (arg0 time-frame) (arg1 float)) (logclear! (-> this mask) (process-mask crate enemy platform ambient)) (logior! (-> this mask) (process-mask collectable)) (set! (-> this flags) (collectable-flags can-collect ignore-blue)) (set! (-> this bob-amount) arg1) - (set! (-> this bob-offset) (+ (the-as int (-> this root trans x)) - (the-as int (-> this root trans y)) - (the-as int (-> this root trans z)) - ) - ) + (set! (-> this bob-offset) + (+ (the-as int (-> this root trans x)) (the-as int (-> this root trans y)) (the-as int (-> this root trans z)))) (cond - ((or (= (vector-length (-> this root transv)) 0.0) - (logtest? (-> this fact options) (fact-options instant-collect)) - ) - (vector-reset! (-> this root transv)) - ) + ((or (= (vector-length (-> this root transv)) 0.0) (logtest? (-> this fact options) (fact-options instant-collect))) + (vector-reset! (-> this root transv))) (else - (logior! (-> this flags) (collectable-flags trans)) - (logclear! (-> this flags) (collectable-flags can-collect)) - (logclear! (-> this mask) (process-mask actor-pause)) - (set! (-> this bob-amount) 0.0) - ) - ) + (logior! (-> this flags) (collectable-flags trans)) + (logclear! (-> this flags) (collectable-flags can-collect)) + (logclear! (-> this mask) (process-mask actor-pause)) + (set! (-> this bob-amount) 0.0))) (when (and (> arg0 0) #t) (logior! (-> this flags) (collectable-flags fade)) - (set! (-> this fadeout-timeout) arg0) - ) + (set! (-> this fadeout-timeout) arg0)) (set! (-> this collect-timeout) (seconds 0.33)) (set-time! (-> this birth-time)) (set! (-> this base quad) (-> this root trans quad)) @@ -97,43 +83,34 @@ (set! (-> this pickup-handle) (the-as handle #f)) (case (-> this fact pickup-type) (((pickup-type eco-pill) (pickup-type eco-green) (pickup-type money) (pickup-type eco-blue)) - (logclear! (-> this flags) (collectable-flags ignore-blue)) - ) - ) + (logclear! (-> this flags) (collectable-flags ignore-blue)))) (if (logtest? (-> this fact options) (fact-options large)) - (set! (-> this root root-prim local-sphere w) (* 2.5 (-> this root root-prim local-sphere w))) - ) - (none) - ) + (set! (-> this root root-prim local-sphere w) (* 2.5 (-> this root root-prim local-sphere w)))) + (none)) (deftype eco-collectable (collectable) - ((eco-effect sparticle-launch-group) - (collect-effect sparticle-launch-group) - (collect-effect2 sparticle-launch-group) - (collect-effect-time time-frame) - (respawn-delay time-frame) - (sound-name sound-spec) - (target handle) - (suck-time time-frame) - (suck-y-offset float) - (speed vector :inline) - (movie-pos-index int32) - ) + ((eco-effect sparticle-launch-group) + (collect-effect sparticle-launch-group) + (collect-effect2 sparticle-launch-group) + (collect-effect-time time-frame) + (respawn-delay time-frame) + (sound-name sound-spec) + (target handle) + (suck-time time-frame) + (suck-y-offset float) + (speed vector :inline) + (movie-pos-index int32)) (:state-methods - wait - (pickup object handle) - die - jump - (notice-blue handle) - ) + wait + (pickup object handle) + die + jump + (notice-blue handle)) (:methods - (initialize-effect (_type_ pickup-type) none) - (initialize-eco (_type_ entity-actor pickup-type float) object) - (animate (_type_) none) - (blocked () _type_ :state) - ) - ) - + (initialize-effect (_type_ pickup-type) none) + (initialize-eco (_type_ entity-actor pickup-type float) object) + (animate (_type_) none) + (blocked () _type_ :state))) (defmethod initialize ((this eco-collectable)) (stack-size-set! (-> this main-thread) 192) ;; og:preserve-this hack increased from 128 @@ -143,33 +120,24 @@ (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 3276.8) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (set! (-> this fact) (new 'process 'fact-info this (-> this pickup-type) (-> this pickup-amount))) - (if (logtest? (fact-options respawn) (-> this fact options)) - (set! (-> this respawn-delay) (-> this fact fade-time)) - ) - this - ) + (if (logtest? (fact-options respawn) (-> this fact options)) (set! (-> this respawn-delay) (-> this fact fade-time))) + this) (defmethod initialize-effect ((this eco-collectable) (arg0 pickup-type)) (set! (-> this fact pickup-type) arg0) (case (-> this fact pickup-type) (((pickup-type eco-blue) (pickup-type eco-red) (pickup-type eco-green) (pickup-type eco-yellow)) - (logclear! (-> this mask) (process-mask actor-pause)) - ) - ) + (logclear! (-> this mask) (process-mask actor-pause)))) (set! (-> this sound-name) #f) (case arg0 (((pickup-type eco-yellow)) @@ -177,52 +145,41 @@ (set! (-> this collect-effect) (-> *part-group-id-table* 68)) (set! (-> this collect-effect2) (-> *part-group-id-table* 57)) (set! (-> this collect-effect-time) (seconds 0.5)) - (set! (-> this sound-name) (static-sound-spec "yel-eco-idle" :fo-max 15)) - ) + (set! (-> this sound-name) (static-sound-spec "yel-eco-idle" :fo-max 15))) (((pickup-type eco-red)) (set! (-> this eco-effect) (-> *part-group-id-table* 48)) (set! (-> this collect-effect) (-> *part-group-id-table* 69)) (set! (-> this collect-effect2) (-> *part-group-id-table* 49)) (set! (-> this collect-effect-time) (seconds 0.5)) - (set! (-> this sound-name) (static-sound-spec "red-eco-idle" :fo-max 15)) - ) + (set! (-> this sound-name) (static-sound-spec "red-eco-idle" :fo-max 15))) (((pickup-type eco-blue)) (set! (-> this eco-effect) (-> *part-group-id-table* 42)) (set! (-> this collect-effect) (-> *part-group-id-table* 67)) (set! (-> this collect-effect2) (-> *part-group-id-table* 43)) (set! (-> this collect-effect-time) (seconds 0.5)) - (set! (-> this sound-name) (static-sound-spec "blue-eco-idle" :fo-max 15)) - ) + (set! (-> this sound-name) (static-sound-spec "blue-eco-idle" :fo-max 15))) (((pickup-type eco-green)) (set! (-> this eco-effect) (-> *part-group-id-table* 58)) (set! (-> this collect-effect) (-> *part-group-id-table* 66)) (set! (-> this collect-effect2) (-> *part-group-id-table* 61)) (set! (-> this collect-effect-time) (seconds 0.5)) - (set! (-> this sound-name) (static-sound-spec "green-eco-idle" :fo-max 15)) - ) + (set! (-> this sound-name) (static-sound-spec "green-eco-idle" :fo-max 15))) (((pickup-type eco-pill)) (set! (-> this eco-effect) (-> *part-group-id-table* 59)) (set! (-> this collect-effect2) (-> *part-group-id-table* 60)) - (set! (-> this collect-effect-time) (seconds 0.5)) - ) - ) + (set! (-> this collect-effect-time) (seconds 0.5)))) (set! (-> this part) (create-launch-control (-> this eco-effect) this)) - (if (-> this sound-name) - (set! (-> this sound) (new 'process 'ambient-sound (-> this sound-name) (-> this root trans))) - ) - (none) - ) + (if (-> this sound-name) (set! (-> this sound) (new 'process 'ambient-sound (-> this sound-name) (-> this root trans)))) + (none)) (defbehavior initialize-eco-by-other eco ((arg0 vector) (arg1 vector) (arg2 fact-info)) (let ((s3-0 (-> arg2 pickup-type)) - (f30-0 (-> arg2 pickup-spawn-amount)) - ) + (f30-0 (-> arg2 pickup-spawn-amount))) (set! (-> self pickup-amount) f30-0) (set! (-> self pickup-type) s3-0) (initialize self) (set! (-> self fact pickup-type) s3-0) - (set! (-> self fact pickup-amount) f30-0) - ) + (set! (-> self fact pickup-amount) f30-0)) (set! (-> self fact options) (-> arg2 options)) (set! (-> self root trans quad) (-> arg0 quad)) (set! (-> self root transv quad) (-> arg1 quad)) @@ -230,28 +187,15 @@ (set! (-> self notify-parent) #f) (case (-> self fact pickup-type) (((pickup-type eco-blue) (pickup-type eco-yellow) (pickup-type eco-red)) - (initialize-params - self - (the-as time-frame (if (and arg2 (logtest? (-> arg2 options) (fact-options fade))) - (the-as int (-> arg2 fade-time)) - 0 - ) - ) - (the-as float 1024.0) - ) - ) - (else - (initialize-params self (seconds 15) (the-as float 1024.0)) - ) - ) + (initialize-params self + (the-as time-frame (if (and arg2 (logtest? (-> arg2 options) (fact-options fade))) (the-as int (-> arg2 fade-time)) 0)) + (the-as float 1024.0))) + (else (initialize-params self (seconds 15) (the-as float 1024.0)))) (update-transforms! (-> self root)) (set! (-> self event-hook) (-> (method-of-object self wait) event)) - (if (logtest? (fact-options eco-blocked) (-> self fact options)) - (go-virtual blocked) - ) + (if (logtest? (fact-options eco-blocked) (-> self fact options)) (go-virtual blocked)) (go-virtual wait) - (none) - ) + (none)) (defmethod initialize-eco ((this eco-collectable) (arg0 entity-actor) (arg1 pickup-type) (arg2 float)) (set! (-> this pickup-amount) arg2) @@ -261,103 +205,57 @@ (initialize-effect this (-> this fact pickup-type)) (initialize-params this 0 (the-as float 1024.0)) (update-transforms! (-> this root)) - (if (logtest? (fact-options eco-blocked) (-> this fact options)) - (go (method-of-object this blocked)) - ) - (go (method-of-object this wait)) - ) + (if (logtest? (fact-options eco-blocked) (-> this fact options)) (go (method-of-object this blocked))) + (go (method-of-object this wait))) (defmethod animate ((this eco-collectable)) 0 - (none) - ) + (none)) (defun add-blue-shake ((arg0 vector) (arg1 vector) (arg2 vector)) (let* ((f0-0 (vector-vector-distance arg1 arg2)) - (f30-0 (lerp-scale - (the-as float 409.6) - (the-as float 0.0) - f0-0 - (-> *FACT-bank* suck-suck-dist) - (-> *FACT-bank* suck-bounce-dist) - ) - ) - ) + (f30-0 (lerp-scale (the-as float 409.6) + (the-as float 0.0) + f0-0 + (-> *FACT-bank* suck-suck-dist) + (-> *FACT-bank* suck-bounce-dist)))) (+! (-> arg0 x) (rand-vu-float-range (- f30-0) f30-0)) (+! (-> arg0 y) (rand-vu-float-range (- f30-0) f30-0)) - (+! (-> arg0 z) (rand-vu-float-range (- f30-0) f30-0)) - ) - arg0 - ) + (+! (-> arg0 z) (rand-vu-float-range (- f30-0) f30-0))) + arg0) (defbehavior check-blue-suck eco-collectable ((arg0 process-drawable)) - (let ((v1-1 (if (and (nonzero? arg0) (type-type? (-> arg0 type) process-drawable)) - arg0 - ) - ) - ) + (let ((v1-1 (if (and (nonzero? arg0) (type-type? (-> arg0 type) process-drawable)) arg0))) (when v1-1 (let* ((gp-1 (-> v1-1 root)) - (v1-3 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) - gp-1 - ) - ) - ) + (v1-3 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) gp-1))) (when v1-3 (let ((a0-5 (-> self root root-prim prim-core)) - (a1-2 (-> (the-as collide-shape v1-3) root-prim prim-core)) - ) + (a1-2 (-> (the-as collide-shape v1-3) root-prim prim-core))) (if (< (vector-vector-distance (the-as vector a0-5) (the-as vector a1-2)) (-> *FACT-bank* suck-suck-dist)) - (logior! (-> self flags) (collectable-flags suck)) - ) - ) - ) - ) - ) - ) - (none) - ) + (logior! (-> self flags) (collectable-flags suck)))))))) + (none)) (defbehavior add-blue-motion eco-collectable ((arg0 symbol) (arg1 symbol) (arg2 symbol) (arg3 symbol)) (let* ((gp-0 (handle->process (-> self target))) - (v1-4 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - ) + (v1-4 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0))) (when v1-4 (let* ((gp-1 (-> (the-as process-drawable v1-4) root)) - (v1-6 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) - (the-as collide-shape gp-1) - ) - ) - ) + (v1-6 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) (the-as collide-shape gp-1)))) (when v1-6 (let ((s2-0 (-> self root root-prim prim-core)) - (gp-2 (-> v1-6 root-prim prim-core)) - ) - (if (and arg1 (rand-vu-percent? (the-as float 0.25))) - (eco-blue-glow (the-as vector s2-0)) - ) + (gp-2 (-> v1-6 root-prim prim-core))) + (if (and arg1 (rand-vu-percent? (the-as float 0.25))) (eco-blue-glow (the-as vector s2-0))) (let ((f0-0 (vector-vector-distance (the-as vector s2-0) (the-as vector gp-2)))) (cond - ((and arg3 (< f0-0 8192.0)) - (return #t) - ) + ((and arg3 (< f0-0 8192.0)) (return #t)) ((begin (set! arg0 - (and (or (not arg2) - (or (< f0-0 (-> *FACT-bank* suck-suck-dist)) (logtest? (-> self flags) (collectable-flags suck))) - ) - arg0 - ) - ) - arg0 - ) + (and (or (not arg2) (or (< f0-0 (-> *FACT-bank* suck-suck-dist)) (logtest? (-> self flags) (collectable-flags suck)))) + arg0)) + arg0) (logior! (-> self flags) (collectable-flags suck)) - (if (= (-> self speed w) 0.0) - (set-time! (-> self suck-time)) - ) + (if (= (-> self speed w) 0.0) (set-time! (-> self suck-time))) (+! (-> self speed w) (* 163840.0 (seconds-per-frame))) (+! (-> self speed y) (* 291271.12 (seconds-per-frame))) (set! (-> self speed y) (fmin (fmin 291271.12 (-> self speed y)) (-> self speed y))) @@ -365,311 +263,192 @@ (vector-normalize! s5-2 (fmax 0.0 (- (vector-length s5-2) (* (-> self speed w) (seconds-per-frame))))) (vector-rotate-y! s5-2 s5-2 (* (-> self speed y) (-> self speed z) (seconds-per-frame))) (set! (-> self suck-y-offset) - (* 2048.0 (sin (* 873.81335 (the float (mod (- (current-time) (-> self suck-time)) 75))))) - ) - (vector+! (-> self base) (the-as vector gp-2) s5-2) - ) - ) - ((and arg2 (and (< (+ 4096.0 (-> *FACT-bank* suck-bounce-dist)) f0-0) - (not (logtest? (-> self flags) (collectable-flags suck))) - ) - ) - (go-virtual wait) - ) - (arg1 - (add-blue-shake (-> self root trans) (the-as vector s2-0) (the-as vector gp-2)) - ) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (* 2048.0 (sin (* 873.81335 (the float (mod (- (current-time) (-> self suck-time)) 75)))))) + (vector+! (-> self base) (the-as vector gp-2) s5-2))) + ((and arg2 + (and (< (+ 4096.0 (-> *FACT-bank* suck-bounce-dist)) f0-0) (not (logtest? (-> self flags) (collectable-flags suck))))) + (go-virtual wait)) + (arg1 (add-blue-shake (-> self root trans) (the-as vector s2-0) (the-as vector gp-2)))))))))) + #f) (defstate blocked (eco-collectable) :virtual #t - :trans (behavior () - (if (task-complete? *game-info* (-> self entity extra perm task)) - (go-virtual wait) - ) - ) - :code anim-loop - ) + :trans + (behavior () + (if (task-complete? *game-info* (-> self entity extra perm task)) (go-virtual wait))) + :code anim-loop) (defstate jump (eco-collectable) :virtual #t - :code (behavior () - (if (type-type? (-> self type) fuel-cell) - (sound-play "cell-prize") - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((gp-1 (new 'stack 'trajectory))) - (set! (-> self base y) (-> self jump-pos y)) - (setup-from-to-duration! - gp-1 - (-> self root trans) - (-> self jump-pos) - (the-as float 300.0) - (the-as float -2.2755556) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (let ((f0-2 (the float (- (current-time) (-> self state-time))))) - (eval-position! gp-1 f0-2 (-> self root trans)) - ) - (transform-post) - (animate self) - (suspend) - (if (nonzero? (-> self skel)) - (ja :num! (loop! 0.5)) - ) - ) - ) - (set! (-> self root trans quad) (-> self jump-pos quad)) - (set! (-> self base quad) (-> self root trans quad)) - (vector-reset! (-> self root transv)) - (update-transforms! (-> self root)) - (logclear! (-> self flags) (collectable-flags trans)) - (logior! (-> self flags) (collectable-flags can-collect)) - (if (-> self actor-pause) - (logior! (-> self mask) (process-mask actor-pause)) - ) - (go-virtual wait) - ) - ) + :code + (behavior () + (if (type-type? (-> self type) fuel-cell) (sound-play "cell-prize")) + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((gp-1 (new 'stack 'trajectory))) + (set! (-> self base y) (-> self jump-pos y)) + (setup-from-to-duration! gp-1 (-> self root trans) (-> self jump-pos) (the-as float 300.0) (the-as float -2.2755556)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (let ((f0-2 (the float (- (current-time) (-> self state-time))))) (eval-position! gp-1 f0-2 (-> self root trans))) + (transform-post) + (animate self) + (suspend) + (if (nonzero? (-> self skel)) (ja :num! (loop! 0.5))))) + (set! (-> self root trans quad) (-> self jump-pos quad)) + (set! (-> self base quad) (-> self root trans quad)) + (vector-reset! (-> self root transv)) + (update-transforms! (-> self root)) + (logclear! (-> self flags) (collectable-flags trans)) + (logior! (-> self flags) (collectable-flags can-collect)) + (if (-> self actor-pause) (logior! (-> self mask) (process-mask actor-pause))) + (go-virtual wait))) (defstate wait (eco-collectable) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-3 object)) - (when (and (or (= message 'touch) (= message 'attack)) - (and (logtest? (-> self flags) (collectable-flags can-collect)) - (time-elapsed? (-> self birth-time) (-> self collect-timeout)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-3 object)) + (when (and (or (= message 'touch) (= message 'attack)) + (and (logtest? (-> self flags) (collectable-flags can-collect)) + (time-elapsed? (-> self birth-time) (-> self collect-timeout)) + (!= (-> self next-state name) 'pickup) + (send-event proc 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)))) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (process->handle proc))) + (cond + ((= message 'eco-blue) + (when (and (not (logtest? (-> self flags) (collectable-flags fading ignore-blue))) (!= (-> self next-state name) 'pickup) - (send-event proc 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (process->handle proc)) - ) - (cond - ((= message 'eco-blue) - (when (and (not (logtest? (-> self flags) (collectable-flags fading ignore-blue))) - (!= (-> self next-state name) 'pickup) - (begin (check-blue-suck (the-as process-drawable proc)) #t) - (logtest? (-> self flags) (collectable-flags can-collect)) - (time-elapsed? (-> self birth-time) (-> self collect-timeout)) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual notice-blue (process->handle proc)) - ) - ) - ((= message 'trans) - (set! (-> self root trans quad) (-> (the-as vector (-> block param 0)) quad)) - (update-transforms! (-> self root)) - (ja-post) - ) - ((= message 'jump) - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self jump-pos quad) (-> (the-as vector (-> block param 0)) quad)) - (go-virtual jump) - ) - ((= message 'pickup) - (when (!= (-> self next-state name) 'pickup) - (if (and (> argc 0) (-> block param 0)) - (move-to-point! (-> self root) (the-as vector (-> block param 0))) - ) + (begin + (check-blue-suck (the-as process-drawable proc)) + #t) + (logtest? (-> self flags) (collectable-flags can-collect)) + (time-elapsed? (-> self birth-time) (-> self collect-timeout))) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual notice-blue (process->handle proc)))) + ((= message 'trans) + (set! (-> self root trans quad) (-> (the-as vector (-> block param 0)) quad)) + (update-transforms! (-> self root)) + (ja-post)) + ((= message 'jump) (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (the-as handle #f)) - ) - ) - ((= message 'die) - (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual die) - ) - ((= message 'movie-pos) - (set! v0-3 (-> block param 0)) - (set! (-> self movie-pos-index) (the-as int v0-3)) - v0-3 - ) - ((= message 'actor-pause) - (cond - ((-> block param 0) - (logior! (-> self mask) (process-mask actor-pause)) - (set! v0-3 #t) - (set! (-> self actor-pause) (the-as symbol v0-3)) - v0-3 - ) - (else + (set! (-> self jump-pos quad) (-> (the-as vector (-> block param 0)) quad)) + (go-virtual jump)) + ((= message 'pickup) + (when (!= (-> self next-state name) 'pickup) + (if (and (> argc 0) (-> block param 0)) (move-to-point! (-> self root) (the-as vector (-> block param 0)))) (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self actor-pause) #f) - #f - ) - ) - ) - ((= message 'fade) - (logior! (-> self flags) (collectable-flags fade)) - (set! (-> self fadeout-timeout) (seconds 0.1)) - (set! v0-3 (current-time)) - (set! (-> self birth-time) (the-as time-frame v0-3)) - v0-3 - ) - ) - ) - :enter (behavior () - (if (and (logtest? (-> self fact options) (fact-options instant-collect can-collect)) - (logtest? (-> self flags) (collectable-flags can-collect)) - (!= (-> self next-state name) 'pickup) - (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) - (go-virtual pickup #f (process->handle *target*)) - ) - ) - :trans (behavior () - (cond - ((logtest? (-> self flags) (collectable-flags trans)) - (vector-v++! - (-> self root transv) - (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) (the-as float 0.0)) - ) - (integrate-no-collide! (-> self root) (-> self root transv)) - (when (and (>= 0.0 (-> self root transv y)) (>= (-> self base y) (-> self root trans y))) - (set! (-> self root trans y) (-> self base y)) + (go-virtual pickup #f (the-as handle #f)))) + ((= message 'die) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual die)) + ((= message 'movie-pos) (set! v0-3 (-> block param 0)) (set! (-> self movie-pos-index) (the-as int v0-3)) v0-3) + ((= message 'actor-pause) (cond - ((< (-> self root transv y) -8192.0) - (set! (-> self root transv y) (* -0.5 (-> self root transv y))) - ) - (else - (vector-reset! (-> self root transv)) - (logclear! (-> self flags) (collectable-flags trans)) - (logior! (-> self flags) (collectable-flags can-collect)) - (if (-> self actor-pause) - (logior! (-> self mask) (process-mask actor-pause)) - ) - (set! (-> self base quad) (-> self root trans quad)) - (if (and (logtest? (-> self fact options) (fact-options can-collect)) - (not (logtest? (-> self flags) (collectable-flags ignore-blue))) - ) - (go-virtual notice-blue (process->handle *target*)) - ) - (if (and (logtest? (-> self fact options) (fact-options instant-collect can-collect)) - (!= (-> self next-state name) 'pickup) - (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) - (go-virtual pickup #f (process->handle *target*)) - ) - ) - ) - ) - ) - (else - (set! (-> self trans-hook) #f) - ) - ) - (update-transforms! (-> self root)) - ) - :code (behavior () - (loop - (let ((gp-0 (-> self part)) - (s5-0 (-> self root root-prim prim-core)) - ) - (when (and (logtest? (-> self flags) (collectable-flags fade)) - (time-elapsed? (-> self birth-time) (-> self fadeout-timeout)) - ) - (let ((v1-10 (- (seconds 1) (- (- (current-time) (-> self birth-time)) (-> self fadeout-timeout))))) - (cond - ((< v1-10 0) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - (else - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self actor-pause) #f) - (logior! (-> self flags) (collectable-flags fading)) - (logior! (-> self state-flags) (state-flags fade-out-particles)) - (set! (-> gp-0 fade) (* 0.0033333334 (the float v1-10))) - ) - ) - ) - ) - (spawn gp-0 (the-as vector s5-0)) - ) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (suspend) - ) - ) - ) + ((-> block param 0) + (logior! (-> self mask) (process-mask actor-pause)) + (set! v0-3 #t) + (set! (-> self actor-pause) (the-as symbol v0-3)) + v0-3) + (else (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self actor-pause) #f) #f))) + ((= message 'fade) + (logior! (-> self flags) (collectable-flags fade)) + (set! (-> self fadeout-timeout) (seconds 0.1)) + (set! v0-3 (current-time)) + (set! (-> self birth-time) (the-as time-frame v0-3)) + v0-3))) + :enter + (behavior () + (if (and (logtest? (-> self fact options) (fact-options instant-collect can-collect)) + (logtest? (-> self flags) (collectable-flags can-collect)) + (!= (-> self next-state name) 'pickup) + (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount))) + (go-virtual pickup #f (process->handle *target*)))) + :trans + (behavior () + (cond + ((logtest? (-> self flags) (collectable-flags trans)) + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) (the-as float 0.0))) + (integrate-no-collide! (-> self root) (-> self root transv)) + (when (and (>= 0.0 (-> self root transv y)) (>= (-> self base y) (-> self root trans y))) + (set! (-> self root trans y) (-> self base y)) + (cond + ((< (-> self root transv y) -8192.0) (set! (-> self root transv y) (* -0.5 (-> self root transv y)))) + (else + (vector-reset! (-> self root transv)) + (logclear! (-> self flags) (collectable-flags trans)) + (logior! (-> self flags) (collectable-flags can-collect)) + (if (-> self actor-pause) (logior! (-> self mask) (process-mask actor-pause))) + (set! (-> self base quad) (-> self root trans quad)) + (if (and (logtest? (-> self fact options) (fact-options can-collect)) + (not (logtest? (-> self flags) (collectable-flags ignore-blue)))) + (go-virtual notice-blue (process->handle *target*))) + (if (and (logtest? (-> self fact options) (fact-options instant-collect can-collect)) + (!= (-> self next-state name) 'pickup) + (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount))) + (go-virtual pickup #f (process->handle *target*))))))) + (else (set! (-> self trans-hook) #f))) + (update-transforms! (-> self root))) + :code + (behavior () + (loop + (let ((gp-0 (-> self part)) + (s5-0 (-> self root root-prim prim-core))) + (when (and (logtest? (-> self flags) (collectable-flags fade)) (time-elapsed? (-> self birth-time) (-> self fadeout-timeout))) + (let ((v1-10 (- (seconds 1) (- (- (current-time) (-> self birth-time)) (-> self fadeout-timeout))))) + (cond + ((< v1-10 0) (process-entity-status! self (entity-perm-status dead) #t) (deactivate self)) + (else + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self actor-pause) #f) + (logior! (-> self flags) (collectable-flags fading)) + (logior! (-> self state-flags) (state-flags fade-out-particles)) + (set! (-> gp-0 fade) (* 0.0033333334 (the float v1-10))))))) + (spawn gp-0 (the-as vector s5-0))) + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (suspend)))) (defstate notice-blue (eco-collectable) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (and (or (= message 'touch) (= message 'attack)) - (and (logtest? (-> self flags) (collectable-flags can-collect)) - (time-elapsed? (-> self birth-time) (-> self collect-timeout)) - (!= (-> self next-state name) 'pickup) - (send-event proc 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (process->handle proc)) - ) - ) - :enter (behavior ((arg0 handle)) - (set! (-> self target) arg0) - (set! (-> self speed quad) (the-as uint128 0)) - (set! (-> self speed z) (the-as float (if (rand-vu-percent? (the-as float 0.5)) - 1.0 - -1.0 - ) - ) - ) - (set! (-> self suck-y-offset) 0.0) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (if (-> self actor-pause) - (logior! (-> self mask) (process-mask actor-pause)) - ) - ) - :trans (behavior () - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 2) - (set! (-> a1-0 message) 'query) - (set! (-> a1-0 param 0) (the-as uint 'powerup)) - (set! (-> a1-0 param 1) (the-as uint 3)) - (if (and (not (send-event-function *target* a1-0)) (not (logtest? (-> self flags) (collectable-flags suck)))) - (go-virtual wait) - ) - ) - ) - :code (behavior ((arg0 handle)) - (loop - (set! (-> self root trans quad) (-> self base quad)) - (add-blue-motion #t #f #t #f) - (update-transforms! (-> self root)) - (if (nonzero? (-> self draw)) - (ja-post) - ) - (let ((a0-5 (-> self part)) - (a1-1 (-> self root root-prim prim-core)) - ) - (if (nonzero? a0-5) - (spawn a0-5 (the-as vector a1-1)) - ) - ) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (and (or (= message 'touch) (= message 'attack)) + (and (logtest? (-> self flags) (collectable-flags can-collect)) + (time-elapsed? (-> self birth-time) (-> self collect-timeout)) + (!= (-> self next-state name) 'pickup) + (send-event proc 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)))) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (process->handle proc)))) + :enter + (behavior ((arg0 handle)) + (set! (-> self target) arg0) + (set! (-> self speed quad) (the-as uint128 0)) + (set! (-> self speed z) (the-as float (if (rand-vu-percent? (the-as float 0.5)) 1.0 -1.0))) + (set! (-> self suck-y-offset) 0.0) + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (if (-> self actor-pause) (logior! (-> self mask) (process-mask actor-pause)))) + :trans + (behavior () + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 2) + (set! (-> a1-0 message) 'query) + (set! (-> a1-0 param 0) (the-as uint 'powerup)) + (set! (-> a1-0 param 1) (the-as uint 3)) + (if (and (not (send-event-function *target* a1-0)) (not (logtest? (-> self flags) (collectable-flags suck)))) + (go-virtual wait)))) + :code + (behavior ((arg0 handle)) + (loop + (set! (-> self root trans quad) (-> self base quad)) + (add-blue-motion #t #f #t #f) + (update-transforms! (-> self root)) + (if (nonzero? (-> self draw)) (ja-post)) + (let ((a0-5 (-> self part)) + (a1-1 (-> self root root-prim prim-core))) + (if (nonzero? a0-5) (spawn a0-5 (the-as vector a1-1)))) + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (suspend)))) (defstate pickup (eco-collectable) :virtual #t @@ -840,159 +619,98 @@ (defstate die (eco-collectable) :virtual #t - :code (behavior () - (process-entity-status! self (entity-perm-status dead) #t) - ) - ) - -(deftype eco (eco-collectable) - () - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status dead) #t))) +(deftype eco (eco-collectable) ()) (defmethod animate ((this eco)) (let ((a0-1 (-> this part)) - (a1-0 (-> this root root-prim prim-core)) - ) - (spawn a0-1 (the-as vector a1-0)) - ) - (if (nonzero? (-> this sound)) - (update! (-> this sound)) - ) + (a1-0 (-> this root root-prim prim-core))) + (spawn a0-1 (the-as vector a1-0))) + (if (nonzero? (-> this sound)) (update! (-> this sound))) 0 - (none) - ) + (none)) (defstate die (eco) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('fade) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - (('die) - (go-virtual die) - ) - ) - ) - :exit (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - (if (-> self actor-pause) - (logior! (-> self mask) (process-mask actor-pause)) - ) - ) - :code (behavior () - (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self fact options) (fact-options instant-collect can-collect)) - (if (nonzero? (-> self part)) - (kill-and-free-particles (-> self part)) - ) - (cond - ((nonzero? (-> self respawn-delay)) - (let ((gp-0 (current-time))) - (while (not (time-elapsed? gp-0 (-> self respawn-delay))) - (suspend) - ) - ) - ) - (else - (while (let ((f30-0 0.0)) - (< f30-0 (the-as float (send-event *target* 'query 'pickup (-> self fact pickup-type)))) - ) - (suspend) - ) - ) - ) - (set! (-> self base quad) (-> self old-base quad)) - (set! (-> self root trans quad) (-> self base quad)) - (restore-collide-with-as (-> self root)) - (go-virtual wait) - ) - ) - -(deftype eco-yellow (eco) - () - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('fade) (process-entity-status! self (entity-perm-status dead) #t) (deactivate self)) + (('die) (go-virtual die)))) + :exit + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (if (-> self actor-pause) (logior! (-> self mask) (process-mask actor-pause)))) + :code + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self fact options) (fact-options instant-collect can-collect)) + (if (nonzero? (-> self part)) (kill-and-free-particles (-> self part))) + (cond + ((nonzero? (-> self respawn-delay)) + (let ((gp-0 (current-time))) (while (not (time-elapsed? gp-0 (-> self respawn-delay))) (suspend)))) + (else + (while (let ((f30-0 0.0)) (< f30-0 (the-as float (send-event *target* 'query 'pickup (-> self fact pickup-type))))) + (suspend)))) + (set! (-> self base quad) (-> self old-base quad)) + (set! (-> self root trans quad) (-> self base quad)) + (restore-collide-with-as (-> self root)) + (go-virtual wait))) +(deftype eco-yellow (eco) ()) (defmethod init-from-entity! ((this eco-yellow) (arg0 entity-actor)) (initialize-eco this arg0 (pickup-type eco-yellow) (-> *FACT-bank* eco-single-inc)) - (none) - ) - -(deftype eco-red (eco) - () - ) + (none)) +(deftype eco-red (eco) ()) (defmethod init-from-entity! ((this eco-red) (arg0 entity-actor)) (initialize-eco this arg0 (pickup-type eco-red) (-> *FACT-bank* eco-single-inc)) - (none) - ) - -(deftype eco-blue (eco) - () - ) + (none)) +(deftype eco-blue (eco) ()) (defmethod init-from-entity! ((this eco-blue) (arg0 entity-actor)) (initialize-eco this arg0 (pickup-type eco-blue) (-> *FACT-bank* eco-single-inc)) - (none) - ) - -(deftype health (eco-collectable) - () - ) + (none)) +(deftype health (eco-collectable) ()) (defmethod animate ((this health)) (let ((a0-1 (-> this part)) - (a1-0 (-> this root root-prim prim-core)) - ) - (spawn a0-1 (the-as vector a1-0)) - ) - (if (nonzero? (-> this sound)) - (update! (-> this sound)) - ) + (a1-0 (-> this root root-prim prim-core))) + (spawn a0-1 (the-as vector a1-0))) + (if (nonzero? (-> this sound)) (update! (-> this sound))) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this health) (arg0 entity-actor)) (initialize-eco this arg0 (pickup-type eco-green) (-> *FACT-bank* health-single-inc)) - (none) - ) - -(deftype eco-pill (eco-collectable) - () - ) + (none)) +(deftype eco-pill (eco-collectable) ()) (defmethod animate ((this eco-pill)) (let ((a0-1 (-> this part)) - (a1-0 (-> this root root-prim prim-core)) - ) - (spawn a0-1 (the-as vector a1-0)) - ) - (if (nonzero? (-> this sound)) - (update! (-> this sound)) - ) + (a1-0 (-> this root root-prim prim-core))) + (spawn a0-1 (the-as vector a1-0))) + (if (nonzero? (-> this sound)) (update! (-> this sound))) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this eco-pill) (arg0 entity-actor)) (initialize-eco this arg0 (pickup-type eco-pill) (-> *FACT-bank* health-small-inc)) - (none) - ) + (none)) (defmethod deactivate ((this eco-pill)) (set! *eco-pill-count* (+ *eco-pill-count* -1)) ((method-of-type eco-collectable deactivate) this) - (none) - ) + (none)) (defmethod initialize ((this eco-pill)) (set! *eco-pill-count* (+ *eco-pill-count* 1)) @@ -1003,102 +721,82 @@ (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 8192.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (set! (-> this fact) (new 'process 'fact-info this (-> this pickup-type) (-> this pickup-amount))) - this - ) - -(defskelgroup *money-sg* money money-lod0-jg money-idle-ja - ((money-lod0-mg (meters 20)) (money-lod1-mg (meters 40)) (money-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 0.6) - :texture-level 2 - ) - -(defskelgroup *fuel-cell-sg* fuel-cell fuel-cell-lod0-jg fuel-cell-idle-ja - ((fuel-cell-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) - -(deftype money (eco-collectable) - () - ) - + this) + +(defskelgroup *money-sg* + money + money-lod0-jg + money-idle-ja + ((money-lod0-mg (meters 20)) (money-lod1-mg (meters 40)) (money-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 0.6) + :texture-level 2) + +(defskelgroup *fuel-cell-sg* + fuel-cell + fuel-cell-lod0-jg + fuel-cell-idle-ja + ((fuel-cell-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) + +(deftype money (eco-collectable) ()) (defmethod run-logic? ((this money)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (or (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> this root pause-adjust-distance)) - (vector-vector-distance (-> this root trans) (math-camera-pos)) - ) - ) + (vector-vector-distance (-> this root trans) (math-camera-pos)))) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) (defmethod deactivate ((this money)) (when (= (-> this next-state name) 'pickup) (if (not (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status dead)))) - (format #t "money ~A was killed in pickup~%") - ) - (process-entity-status! this (entity-perm-status dead) #t) - ) + (format #t "money ~A was killed in pickup~%")) + (process-entity-status! this (entity-perm-status dead) #t)) ((method-of-type eco-collectable deactivate) this) - (none) - ) + (none)) (defstate wait (money) :virtual #t - :code (behavior () - (loop - (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 40049.777 (seconds-per-frame))) - (let ((f30-0 (-> self bob-amount))) - (when (< 0.0 f30-0) - (set! (-> self root trans y) - (+ (-> self base y) - (-> self suck-y-offset) - (* f30-0 - (sin (* 109.22667 (the float (mod (+ (- (current-time) (-> self birth-time)) (-> self bob-offset)) 600)))) - ) - ) - ) - (update-transforms! (-> self root)) - ) - ) - (ja-post) - ;; og:preserve-this added particle! - (with-pc - (if (-> *pc-settings* money-starburst?) - (spawn (-> self part) (-> self root root-prim world-sphere)))) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 40049.777 (seconds-per-frame))) + (let ((f30-0 (-> self bob-amount))) + (when (< 0.0 f30-0) + (set! (-> self root trans y) + (+ (-> self base y) + (-> self suck-y-offset) + (* f30-0 (sin (* 109.22667 (the float (mod (+ (- (current-time) (-> self birth-time)) (-> self bob-offset)) 600))))))) + (update-transforms! (-> self root)))) + (ja-post) + ;; og:preserve-this added particle! + (with-pc + (if (-> *pc-settings* money-starburst?) (spawn (-> self part) (-> self root root-prim world-sphere)))) + (suspend)))) (defstate notice-blue (money) :virtual #t - :code (behavior ((arg0 handle)) - (loop - (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 91022.22 (seconds-per-frame))) - (set! (-> self root trans quad) (-> self base quad)) - (add-blue-motion #t #t #t #f) - (let ((f30-0 (-> self bob-amount))) - (if (< 0.0 f30-0) + :code + (behavior ((arg0 handle)) + (loop + (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 91022.22 (seconds-per-frame))) + (set! (-> self root trans quad) (-> self base quad)) + (add-blue-motion #t #t #t #f) + (let ((f30-0 (-> self bob-amount))) + (if (< 0.0 f30-0) (set! (-> self root trans y) (+ (-> self base y) (-> self suck-y-offset) @@ -1146,44 +844,30 @@ (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 2048.0 0.0 4915.2) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (logior! (-> this mask) (process-mask actor-pause)) (set! (-> this actor-pause) #t) (set! (-> this notify-parent) #f) (set! (-> this fact) (new 'process 'fact-info this (pickup-type money) (the-as float 1.0))) (let ((a0-10 (-> this entity))) (if (when a0-10 - (let ((a0-11 (-> a0-10 extra perm task))) - (if a0-11 - (= a0-11 (game-task none)) - ) - ) - ) - (set! (-> this entity extra perm task) (game-task complete)) - ) - ) + (let ((a0-11 (-> a0-10 extra perm task))) (if a0-11 (= a0-11 (game-task none))))) + (set! (-> this entity extra perm task) (game-task complete)))) (initialize-skeleton this *money-sg* '()) - (if (-> this entity) - (nav-mesh-connect this (-> this root) (the-as nav-control #f)) - ) + (if (-> this entity) (nav-mesh-connect this (-> this root) (the-as nav-control #f))) (set-vector! (-> this draw color-mult) 0.8 0.8 0.8 1.0) (set-vector! (-> this draw color-emissive) 0.2 0.2 0.2 1.0) ;; og:preserve-this added money starburst (set! (-> this part) (create-launch-control (-> *part-group-id-table* 64) this)) - this - ) + this) (defmethod init-from-entity! ((this money) (arg0 entity-actor)) (initialize this) @@ -1191,20 +875,17 @@ (initialize-params this 0 (the-as float 1024.0)) (update-transforms! (-> this root)) (go (method-of-object this wait)) - (none) - ) + (none)) (defbehavior money-init-by-other money ((arg0 vector) (arg1 vector) (arg2 fact-info) (arg3 entity-actor)) (let ((s3-0 (-> arg2 pickup-type)) - (f30-0 (-> arg2 pickup-spawn-amount)) - ) + (f30-0 (-> arg2 pickup-spawn-amount))) (set! (-> self entity) arg3) (set! (-> self pickup-type) s3-0) (set! (-> self pickup-amount) f30-0) (initialize self) (set! (-> self fact pickup-type) s3-0) - (set! (-> self fact pickup-amount) f30-0) - ) + (set! (-> self fact pickup-amount) f30-0)) (set! (-> self fact options) (-> arg2 options)) (set! (-> self notify-parent) #t) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1215,8 +896,7 @@ (update-transforms! (-> self root)) (set! (-> self event-hook) (-> (method-of-object self wait) event)) (go-virtual wait) - (none) - ) + (none)) (defbehavior money-init-by-other-no-bob money ((arg0 vector) (arg1 vector) (arg2 fact-info) (arg3 float) (arg4 entity-actor)) (set! (-> self entity) arg4) @@ -1235,327 +915,180 @@ (update-transforms! (-> self root)) (set! (-> self event-hook) (-> (method-of-object self wait) event)) (go-virtual wait) - (none) - ) + (none)) (define *fuel-cell-tune-pos* (new 'static 'vector :w 1000000000.0)) (deftype fuel-cell (eco-collectable) - ((victory-anim spool-anim) - (state-object symbol) - ) - (:states - (fuel-cell-clone-anim handle) - (fuel-cell-spline-slider handle float float) - ) - ) - + ((victory-anim spool-anim) + (state-object symbol)) + (:states (fuel-cell-clone-anim handle) + (fuel-cell-spline-slider handle float float))) (defun fuel-cell-pick-anim ((arg0 process-drawable)) (let* ((gp-0 (-> arg0 entity extra trans)) (a0-2 (res-lump-value (-> arg0 entity) 'movie-mask uint128 :time (the-as float -1000000000.0))) (a1-1 8) (v1-6 (abs (the int (+ (* 0.00024414062 (-> gp-0 x)) (* 0.00024414062 (-> gp-0 z)))))) - (v1-7 (mod v1-6 a1-1)) - ) + (v1-7 (mod v1-6 a1-1))) (while (logtest? a0-2 (ash 1 v1-7)) - (set! v1-7 (mod (+ v1-7 1) a1-1)) - ) + (set! v1-7 (mod (+ v1-7 1) a1-1))) (when *target* (cond - ((logtest? (-> *target* control root-prim prim-core action) (collide-action racer)) - (set! v1-7 16) - ) - ((logtest? (-> *target* control root-prim prim-core action) (collide-action flut)) - (set! v1-7 32) - ) - ) - ) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action racer)) (set! v1-7 16)) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action flut)) (set! v1-7 32)))) (cond - ((zero? v1-7) - (new 'static 'spool-anim :name "fuel-cell-victory" :index 3 :parts 2 :command-list '()) - ) - ((= v1-7 1) - (new 'static 'spool-anim :name "fuel-cell-victory-2" :index 4 :parts 2 :command-list '()) - ) - ((= v1-7 2) - (new 'static 'spool-anim :name "fuel-cell-victory-3" :index 5 :parts 2 :command-list '()) - ) - ((= v1-7 3) - (new 'static 'spool-anim :name "fuel-cell-victory-4" :index 6 :parts 2 :command-list '()) - ) - ((= v1-7 4) - (new 'static 'spool-anim :name "fuel-cell-victory-5" :index 7 :parts 2 :command-list '()) - ) - ((= v1-7 5) - (new 'static 'spool-anim :name "fuel-cell-victory-6" :index 8 :parts 2 :command-list '()) - ) - ((= v1-7 6) - (new 'static 'spool-anim :name "fuel-cell-victory-7" :index 9 :parts 2 :command-list '()) - ) - ((= v1-7 7) - (new 'static 'spool-anim :name "fuel-cell-victory-8" :index 10 :parts 2 :command-list '()) - ) - ((= v1-7 16) - (new 'static 'spool-anim :name "fuel-cell-racer-victory-1" :index 40 :parts 2 :command-list '()) - ) - ((= v1-7 32) - (new 'static 'spool-anim :name "fuel-cell-flut-victory-1" :index 44 :parts 2 :command-list '()) - ) - (else - (new 'static 'spool-anim :name "fuel-cell-victory-3" :index 5 :parts 2 :command-list '()) - ) - ) - ) - ) + ((zero? v1-7) (new 'static 'spool-anim :name "fuel-cell-victory" :index 3 :parts 2 :command-list '())) + ((= v1-7 1) (new 'static 'spool-anim :name "fuel-cell-victory-2" :index 4 :parts 2 :command-list '())) + ((= v1-7 2) (new 'static 'spool-anim :name "fuel-cell-victory-3" :index 5 :parts 2 :command-list '())) + ((= v1-7 3) (new 'static 'spool-anim :name "fuel-cell-victory-4" :index 6 :parts 2 :command-list '())) + ((= v1-7 4) (new 'static 'spool-anim :name "fuel-cell-victory-5" :index 7 :parts 2 :command-list '())) + ((= v1-7 5) (new 'static 'spool-anim :name "fuel-cell-victory-6" :index 8 :parts 2 :command-list '())) + ((= v1-7 6) (new 'static 'spool-anim :name "fuel-cell-victory-7" :index 9 :parts 2 :command-list '())) + ((= v1-7 7) (new 'static 'spool-anim :name "fuel-cell-victory-8" :index 10 :parts 2 :command-list '())) + ((= v1-7 16) (new 'static 'spool-anim :name "fuel-cell-racer-victory-1" :index 40 :parts 2 :command-list '())) + ((= v1-7 32) (new 'static 'spool-anim :name "fuel-cell-flut-victory-1" :index 44 :parts 2 :command-list '())) + (else (new 'static 'spool-anim :name "fuel-cell-victory-3" :index 5 :parts 2 :command-list '()))))) (defbehavior fuel-cell-animate fuel-cell () (let* ((gp-0 self) - (s5-0 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) fuel-cell)) - gp-0 - ) - ) - ) + (s5-0 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) fuel-cell)) gp-0))) (cond (s5-0 - (set! (-> s5-0 victory-anim) (fuel-cell-pick-anim s5-0)) - (spool-push *art-control* (-> s5-0 victory-anim name) 0 self (the-as float -99.0)) - ) - (else - (let ((v1-5 (fuel-cell-pick-anim self))) - (spool-push *art-control* (-> v1-5 name) 0 self (the-as float -99.0)) - ) - ) - ) - ) + (set! (-> s5-0 victory-anim) (fuel-cell-pick-anim s5-0)) + (spool-push *art-control* (-> s5-0 victory-anim name) 0 self (the-as float -99.0))) + (else (let ((v1-5 (fuel-cell-pick-anim self))) (spool-push *art-control* (-> v1-5 name) 0 self (the-as float -99.0)))))) (when (nonzero? (-> self part)) (cond ((logtest? (-> self draw status) (draw-status hidden no-anim)) (kill-and-free-particles (-> self part)) - (if (nonzero? (-> self sound)) - (kill-and-free-particles (-> self part)) - ) - ) + (if (nonzero? (-> self sound)) (kill-and-free-particles (-> self part)))) (else - (let* ((gp-1 (-> self root)) - (v1-20 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) - gp-1 - ) - ) - (gp-2 (if v1-20 - (-> v1-20 root-prim prim-core) - (-> self root trans) - ) - ) - ) - (spawn (-> self part) (the-as vector gp-2)) - (when (nonzero? (-> self sound)) - (update-trans! (-> self sound) (the-as vector gp-2)) - (update! (-> self sound)) - ) - ) - ) - ) - ) + (let* ((gp-1 (-> self root)) + (v1-20 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) gp-1)) + (gp-2 (if v1-20 (-> v1-20 root-prim prim-core) (-> self root trans)))) + (spawn (-> self part) (the-as vector gp-2)) + (when (nonzero? (-> self sound)) + (update-trans! (-> self sound) (the-as vector gp-2)) + (update! (-> self sound))))))) (set-vector! (-> self draw color-mult) 0.5 0.5 0.5 1.0) (set-vector! (-> self draw color-emissive) 0.5 0.5 0.5 1.0) 0 - (none) - ) + (none)) (method-set! fuel-cell 29 fuel-cell-animate) -(defstate wait (fuel-cell) - :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-3 object)) - (when (and (or (= message 'touch) (= message 'attack)) - (and (logtest? (-> self flags) (collectable-flags can-collect)) - (time-elapsed? (-> self birth-time) (-> self collect-timeout)) - (and (not (handle->process (-> *game-info* other-camera-handle))) - (not *progress-process*) - (!= (-> self next-state name) 'pickup) - *target* - (not (logtest? (-> *target* state-flags) (state-flags grabbed dying))) - ) - ) - ) - (add-setting! 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (process->handle proc)) - ) - (cond - ((= message 'trans) - (set! (-> self root trans quad) (-> (the-as vector (-> block param 0)) quad)) - (set! (-> self base quad) (-> self root trans quad)) - (update-transforms! (-> self root)) - ) - ((= message 'pickup) - (when (!= (-> self next-state name) 'pickup) - (if (and (> argc 0) (-> block param 0)) - (move-to-point! (-> self root) (the-as vector (-> block param 0))) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (process->handle *target*)) - ) - ) - ((= message 'collide-shape) - (if (-> block param 0) - (restore-collide-with-as (-> self root)) - (clear-collide-with-as (-> self root)) - ) - ) - ((= message 'movie-pos) - (set! v0-3 (-> block param 0)) - (set! (-> self movie-pos-index) (the-as int v0-3)) - v0-3 - ) - ((= message 'anim) - (cond - ((-> block param 0) - (set! v0-3 (logclear (-> self flags) (collectable-flags anim))) - (set! (-> self flags) (the-as collectable-flags v0-3)) - ) - (else - (set! v0-3 (logior (-> self flags) (collectable-flags anim))) - (set! (-> self flags) (the-as collectable-flags v0-3)) - ) - ) - v0-3 - ) - ) - ) - :code (behavior () - 0.5 - (let ((f28-0 0.0)) - (ja :group! fuel-cell-idle-ja) - (loop - (let ((f30-0 (vector-vector-distance (-> self base) (target-pos 0)))) - (set! f28-0 - (if (and (< f30-0 (-> *FACT-bank* suck-suck-dist)) (not (logtest? (-> self flags) (collectable-flags anim)))) - (seek f28-0 (the-as float 16384.0) (* 3072.0 (seconds-per-frame))) - (seek f28-0 (the-as float 0.0) (* 3072.0 (seconds-per-frame))) - ) - ) - (set! (-> self root trans y) (+ (-> self base y) (* 2867.2 (sin f28-0)))) - (let ((f30-1 - (lerp-scale (the-as float 0.6) (the-as float 0.5) f30-0 (the-as float 8192.0) (-> *FACT-bank* suck-suck-dist)) - ) - ) - (transform-post) - (fuel-cell-animate) - (suspend) - (ja :num! (loop! f30-1)) - ) - ) - ) - ) - ) - ) - -(defstate pickup (fuel-cell) - :virtual #t - :enter (behavior ((arg0 object) (arg1 handle)) - (set-time! (-> self state-time)) - (set! (-> self state-object) #t) - (let ((t9-1 (-> (the-as (state eco-collectable) (find-parent-state)) enter))) - (if t9-1 - (t9-1) - ) - ) - ) - :trans (behavior () - (let ((f30-0 (the-as float (cond - ((string= (-> self victory-anim name) "fuel-cell-victory") - 97.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-victory-2") - 97.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-victory-3") - 97.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-victory-4") - 97.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-victory-5") - 77.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-victory-6") - 97.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-victory-7") - 97.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-victory-8") - 97.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-racer-victory-1") - 88.0 - ) - ((string= (-> self victory-anim name) "fuel-cell-flut-victory-1") - 150.0 - ) - (else - 5000.0 - ) - ) - ) - ) - ) - (when (and (logtest? (-> self skel status) (janim-status spool)) - (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) (draw-status skip-bones)) - (if (not (or (logtest? (res-lump-value (-> self entity) 'options fact-options :time (the-as float -1000000000.0)) - (fact-options powerup) - ) - (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - ) - ) - (send-event *camera* 'teleport-to-other-start-string) - ) - ) - ) - ) - :code (behavior ((arg0 object) (arg1 handle)) - (local-vars (sv-96 res-tag)) - (sound-play "pu-powercell") - (clear-collide-with-as (-> self root)) - (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status hidden)) - (process-entity-status! self (entity-perm-status dead) #t) - (stop! (-> self sound)) - (while (handle->process (-> *game-info* other-camera-handle)) - (format - #t - "WARNING: fuel-cell stall ~D ~A ~A~%" - (current-time) - (handle->process (-> *game-info* other-camera-handle)) - (-> *level* loading-level) - ) - (spool-push *art-control* (-> self victory-anim name) 0 self (the-as float -99.0)) - (suspend) - ) - (while (not (send-event *target* 'clone-anim self)) - (spool-push *art-control* (-> self victory-anim name) 0 self (the-as float -99.0)) - (format #t "WARNING: fuel-cell stall on not cloning.~%") - (suspend) - ) - (set! sv-96 (new 'static 'res-tag)) - (let* ((v1-34 - (res-lump-data - (-> self entity) - 'movie-pos - (inline-array vector) - :tag-ptr (& sv-96) - :time (the-as float -1000000000.0) - ) - ) - (gp-1 (if (and v1-34 (< (-> self movie-pos-index) (the-as int (-> sv-96 elt-count)))) +(defstate wait (fuel-cell) + :virtual #t + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-3 object)) + (when (and (or (= message 'touch) (= message 'attack)) + (and (logtest? (-> self flags) (collectable-flags can-collect)) + (time-elapsed? (-> self birth-time) (-> self collect-timeout)) + (and (not (handle->process (-> *game-info* other-camera-handle))) + (not *progress-process*) + (!= (-> self next-state name) 'pickup) + *target* + (not (logtest? (-> *target* state-flags) (state-flags grabbed dying)))))) + (add-setting! 'allow-progress #f 0.0 0) + (apply-settings *setting-control*) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (process->handle proc))) + (cond + ((= message 'trans) + (set! (-> self root trans quad) (-> (the-as vector (-> block param 0)) quad)) + (set! (-> self base quad) (-> self root trans quad)) + (update-transforms! (-> self root))) + ((= message 'pickup) + (when (!= (-> self next-state name) 'pickup) + (if (and (> argc 0) (-> block param 0)) (move-to-point! (-> self root) (the-as vector (-> block param 0)))) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (process->handle *target*)))) + ((= message 'collide-shape) + (if (-> block param 0) (restore-collide-with-as (-> self root)) (clear-collide-with-as (-> self root)))) + ((= message 'movie-pos) (set! v0-3 (-> block param 0)) (set! (-> self movie-pos-index) (the-as int v0-3)) v0-3) + ((= message 'anim) + (cond + ((-> block param 0) + (set! v0-3 (logclear (-> self flags) (collectable-flags anim))) + (set! (-> self flags) (the-as collectable-flags v0-3))) + (else + (set! v0-3 (logior (-> self flags) (collectable-flags anim))) + (set! (-> self flags) (the-as collectable-flags v0-3)))) + v0-3))) + :code + (behavior () + 0.5 + (let ((f28-0 0.0)) + (ja :group! fuel-cell-idle-ja) + (loop + (let ((f30-0 (vector-vector-distance (-> self base) (target-pos 0)))) + (set! f28-0 + (if (and (< f30-0 (-> *FACT-bank* suck-suck-dist)) (not (logtest? (-> self flags) (collectable-flags anim)))) + (seek f28-0 (the-as float 16384.0) (* 3072.0 (seconds-per-frame))) + (seek f28-0 (the-as float 0.0) (* 3072.0 (seconds-per-frame))))) + (set! (-> self root trans y) (+ (-> self base y) (* 2867.2 (sin f28-0)))) + (let ((f30-1 (lerp-scale (the-as float 0.6) (the-as float 0.5) f30-0 (the-as float 8192.0) (-> *FACT-bank* suck-suck-dist)))) + (transform-post) + (fuel-cell-animate) + (suspend) + (ja :num! (loop! f30-1)))))))) + +(defstate pickup (fuel-cell) + :virtual #t + :enter + (behavior ((arg0 object) (arg1 handle)) + (set-time! (-> self state-time)) + (set! (-> self state-object) #t) + (let ((t9-1 (-> (the-as (state eco-collectable) (find-parent-state)) enter))) (if t9-1 (t9-1)))) + :trans + (behavior () + (let ((f30-0 (the-as float + (cond + ((string= (-> self victory-anim name) "fuel-cell-victory") 97.0) + ((string= (-> self victory-anim name) "fuel-cell-victory-2") 97.0) + ((string= (-> self victory-anim name) "fuel-cell-victory-3") 97.0) + ((string= (-> self victory-anim name) "fuel-cell-victory-4") 97.0) + ((string= (-> self victory-anim name) "fuel-cell-victory-5") 77.0) + ((string= (-> self victory-anim name) "fuel-cell-victory-6") 97.0) + ((string= (-> self victory-anim name) "fuel-cell-victory-7") 97.0) + ((string= (-> self victory-anim name) "fuel-cell-victory-8") 97.0) + ((string= (-> self victory-anim name) "fuel-cell-racer-victory-1") 88.0) + ((string= (-> self victory-anim name) "fuel-cell-flut-victory-1") 150.0) + (else 5000.0))))) + (when (and (logtest? (-> self skel status) (janim-status spool)) (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) (draw-status skip-bones)) + (if (not (or (logtest? (res-lump-value (-> self entity) 'options fact-options :time (the-as float -1000000000.0)) + (fact-options powerup)) + (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))))) + (send-event *camera* 'teleport-to-other-start-string))))) + :code + (behavior ((arg0 object) (arg1 handle)) + (local-vars (sv-96 res-tag)) + (sound-play "pu-powercell") + (clear-collide-with-as (-> self root)) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self draw status) (draw-status hidden)) + (process-entity-status! self (entity-perm-status dead) #t) + (stop! (-> self sound)) + (while (handle->process (-> *game-info* other-camera-handle)) + (format #t + "WARNING: fuel-cell stall ~D ~A ~A~%" + (current-time) + (handle->process (-> *game-info* other-camera-handle)) + (-> *level* loading-level)) + (spool-push *art-control* (-> self victory-anim name) 0 self (the-as float -99.0)) + (suspend)) + (while (not (send-event *target* 'clone-anim self)) + (spool-push *art-control* (-> self victory-anim name) 0 self (the-as float -99.0)) + (format #t "WARNING: fuel-cell stall on not cloning.~%") + (suspend)) + (set! sv-96 (new 'static 'res-tag)) + (let* ((v1-34 (res-lump-data (-> self entity) 'movie-pos (inline-array vector) :tag-ptr (& sv-96) :time (the-as float -1000000000.0))) + (gp-1 (if (and v1-34 (< (-> self movie-pos-index) (the-as int (-> sv-96 elt-count)))) (-> v1-34 (-> self movie-pos-index)) (the-as vector #f) ) @@ -1880,20 +1413,16 @@ (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind powerup)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (logior! (-> this mask) (process-mask actor-pause)) (set! (-> this actor-pause) #t) (set! (-> this notify-parent) #f) @@ -1902,12 +1431,9 @@ (set! (-> this base quad) (-> this root trans quad)) (set! (-> this old-base quad) (-> this root trans quad)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 63) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "powercell-idle" :fo-max 40) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "powercell-idle" :fo-max 40) (-> this root trans))) (set! (-> this victory-anim) (fuel-cell-pick-anim this)) - this - ) + this) (defmethod init-from-entity! ((this fuel-cell) (arg0 entity-actor)) (initialize this) @@ -1916,20 +1442,17 @@ (logclear! (-> this fact options) (fact-options can-collect)) (update-transforms! (-> this root)) (go (method-of-object this wait)) - (none) - ) + (none)) (defbehavior fuel-cell-init-by-other fuel-cell ((arg0 vector) (arg1 vector) (arg2 fact-info) (arg3 entity-actor)) (let ((s3-0 (-> arg2 pickup-type)) - (f30-0 (-> arg2 pickup-spawn-amount)) - ) + (f30-0 (-> arg2 pickup-spawn-amount))) (set! (-> self entity) arg3) (set! (-> self pickup-type) s3-0) (set! (-> self pickup-amount) f30-0) (initialize self) (set! (-> self fact pickup-type) s3-0) - (set! (-> self fact pickup-amount) f30-0) - ) + (set! (-> self fact pickup-amount) f30-0)) (set! (-> self fact options) (-> arg2 options)) (set! (-> self notify-parent) #t) (set! (-> self root trans quad) (-> arg0 quad)) @@ -1944,71 +1467,53 @@ ((and *debug-segment* (< (-> *fuel-cell-tune-pos* w) 1000000000.0)) (set! (-> self jump-pos quad) (-> *fuel-cell-tune-pos* quad)) (+! (-> self jump-pos y) 4096.0) - (go-virtual jump) - ) + (go-virtual jump)) ((and gp-1 (not (logtest? (res-lump-value (-> self entity) 'options fact-options :time (the-as float -1000000000.0)) - (fact-options skip-jump-anim) - ) - ) - (not (logtest? (-> self fact options) (fact-options skip-jump-anim))) - ) + (fact-options skip-jump-anim))) + (not (logtest? (-> self fact options) (fact-options skip-jump-anim)))) (set! (-> self jump-pos quad) (-> (the-as vector gp-1) quad)) (+! (-> self jump-pos y) 4096.0) - (go-virtual jump) - ) - ) - ) + (go-virtual jump)))) (set! (-> self event-hook) (-> (method-of-object self wait) event)) (go-virtual wait) - (none) - ) + (none)) (defstate fuel-cell-clone-anim (fuel-cell) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('pickup) - (when (!= (-> self next-state name) 'pickup) - (if (and (> argc 0) (-> block param 0)) - (move-to-point! (-> self root) (the-as vector (-> block param 0))) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (go-virtual pickup #f (the-as handle #f)) - ) - ) - (('trans) - (set! (-> self root trans quad) (-> (the-as vector (-> block param 0)) quad)) - (set! (-> self base quad) (-> self root trans quad)) - (update-transforms! (-> self root)) - ) - (('stop-cloning 'notify) - (set! (-> self root trans quad) (-> self draw origin quad)) - (set! (-> self base quad) (-> self root trans quad)) - (ja-channel-set! 1) - (ja :group! fuel-cell-idle-ja) - (logclear! (-> self draw status) (draw-status hidden)) - (vector-reset! (-> self draw origin)) - (go-virtual wait) - ) - ) - ) - :exit (behavior () - (if (-> self actor-pause) - (logior! (-> self mask) (process-mask actor-pause)) - ) - (logclear! (-> self skel status) (janim-status spool)) - ) - :code (behavior ((arg0 handle)) - (logclear! (-> self mask) (process-mask actor-pause)) - (clone-anim arg0 3 #t "") - (format #t "ERROR: clone-anim returned in fuel-cell~%") - (deactivate self) - ) - :post (behavior () - (update-transforms! (-> self root)) - (animate self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('pickup) + (when (!= (-> self next-state name) 'pickup) + (if (and (> argc 0) (-> block param 0)) (move-to-point! (-> self root) (the-as vector (-> block param 0)))) + (logclear! (-> self mask) (process-mask actor-pause)) + (go-virtual pickup #f (the-as handle #f)))) + (('trans) + (set! (-> self root trans quad) (-> (the-as vector (-> block param 0)) quad)) + (set! (-> self base quad) (-> self root trans quad)) + (update-transforms! (-> self root))) + (('stop-cloning 'notify) + (set! (-> self root trans quad) (-> self draw origin quad)) + (set! (-> self base quad) (-> self root trans quad)) + (ja-channel-set! 1) + (ja :group! fuel-cell-idle-ja) + (logclear! (-> self draw status) (draw-status hidden)) + (vector-reset! (-> self draw origin)) + (go-virtual wait)))) + :exit + (behavior () + (if (-> self actor-pause) (logior! (-> self mask) (process-mask actor-pause))) + (logclear! (-> self skel status) (janim-status spool))) + :code + (behavior ((arg0 handle)) + (logclear! (-> self mask) (process-mask actor-pause)) + (clone-anim arg0 3 #t "") + (format #t "ERROR: clone-anim returned in fuel-cell~%") + (deactivate self)) + :post + (behavior () + (update-transforms! (-> self root)) + (animate self))) (defbehavior fuel-cell-init-as-clone fuel-cell ((arg0 handle) (arg1 int)) (initialize self) @@ -2019,57 +1524,44 @@ (set! (-> self actor-pause) #f) (sound-play "cell-prize") (go fuel-cell-clone-anim arg0) - (none) - ) + (none)) -(defskelgroup *buzzer-sg* buzzer buzzer-lod0-jg buzzer-idle-ja - ((buzzer-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) +(defskelgroup *buzzer-sg* + buzzer + buzzer-lod0-jg + buzzer-idle-ja + ((buzzer-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) (deftype buzzer (eco-collectable) - ((victory-anim spool-anim) - ) - ) - + ((victory-anim spool-anim))) (defmethod animate ((this buzzer)) (quaternion-rotate-y! (-> this root quat) (-> this root quat) (* 40049.777 (seconds-per-frame))) (let ((a0-2 (-> this skel root-channel 0))) (set! (-> a0-2 param 0) 1.0) - (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-loop!) - ) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-loop!)) (let ((f0-3 (y-angle (-> this root)))) (set! (-> *part-id-table* 239 init-specs 4 initial-valuef) (+ 16384.0 f0-3)) - (set! (-> *part-id-table* 240 init-specs 4 initial-valuef) (+ 16384.0 f0-3)) - ) + (set! (-> *part-id-table* 240 init-specs 4 initial-valuef) (+ 16384.0 f0-3))) (spawn (-> this part) (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 15))) - (if (nonzero? (-> this sound)) - (update! (-> this sound)) - ) + (if (nonzero? (-> this sound)) (update! (-> this sound))) (if (and *target* (>= (-> *target* fact buzzer) 6.0)) - (spool-push *art-control* (-> this victory-anim name) 0 this (the-as float -99.0)) - ) + (spool-push *art-control* (-> this victory-anim name) 0 this (the-as float -99.0))) 0 - (none) - ) + (none)) (defstate wait (buzzer) :virtual #t - :code (behavior () - (case (get-reminder (get-task-control (the-as game-task (logand (the int (-> self fact pickup-amount)) #xffff))) 0) - ((127) - (go-virtual pickup #t (the-as handle #f)) - ) - ) - (loop - (transform-post) - (animate self) - (suspend) - ) - ) - ) + :code + (behavior () + (case (get-reminder (get-task-control (the-as game-task (logand (the int (-> self fact pickup-amount)) #xffff))) 0) + ((127) (go-virtual pickup #t (the-as handle #f)))) + (loop + (transform-post) + (animate self) + (suspend)))) (defstate pickup (buzzer) :virtual #t @@ -2184,31 +1676,24 @@ (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 2457.6 0.0 4915.2) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (logior! (-> this mask) (process-mask actor-pause)) (set! (-> this actor-pause) #t) (set! (-> this notify-parent) #f) (set! (-> this fact) (new 'process 'fact-info this (pickup-type buzzer) (the-as float 0.0))) (initialize-skeleton this *buzzer-sg* '()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 65) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "buzzer" :fo-max 40) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "buzzer" :fo-max 40) (-> this root trans))) (set! (-> this victory-anim) (fuel-cell-pick-anim this)) - this - ) + this) (defmethod init-from-entity! ((this buzzer) (arg0 entity-actor)) (initialize this) @@ -2218,23 +1703,19 @@ (update-transforms! (-> this root)) (update-trans! (-> this sound) (-> this root trans)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go (method-of-object this wait)) - (go (method-of-object this pickup) #t (the-as handle #f)) - ) - (none) - ) + (go (method-of-object this wait)) + (go (method-of-object this pickup) #t (the-as handle #f))) + (none)) (defbehavior buzzer-init-by-other buzzer ((arg0 vector) (arg1 vector) (arg2 fact-info) (arg3 entity-actor)) (let ((s3-0 (-> arg2 pickup-type)) - (f30-0 (-> arg2 pickup-spawn-amount)) - ) + (f30-0 (-> arg2 pickup-spawn-amount))) (set! (-> self entity) arg3) (set! (-> self pickup-type) s3-0) (set! (-> self pickup-amount) f30-0) (initialize self) (set! (-> self fact pickup-type) s3-0) - (set! (-> self fact pickup-amount) f30-0) - ) + (set! (-> self fact pickup-amount) f30-0)) (set! (-> self fact options) (-> arg2 options)) (set! (-> self notify-parent) #t) (set! (-> self root trans quad) (-> arg0 quad)) @@ -2246,42 +1727,22 @@ (update-trans! (-> self sound) (-> self root trans)) (set! (-> self event-hook) (-> (method-of-object self wait) event)) (go-virtual wait) - (none) - ) + (none)) (defmethod init-from-entity! ((this eco) (arg0 entity-actor)) (let ((v1-2 (res-lump-value (-> this entity) 'eco-info pickup-type :time (the-as float -1000000000.0)))) - (set! (-> this type) (cond - ((= v1-2 (pickup-type eco-blue)) - eco-blue - ) - ((= v1-2 (pickup-type eco-red)) - eco-red - ) - ((= v1-2 (pickup-type eco-yellow)) - eco-yellow - ) - ((= v1-2 (pickup-type eco-green)) - health - ) - ((= v1-2 (pickup-type money)) - money - ) - ((= v1-2 (pickup-type fuel-cell)) - fuel-cell - ) - ((= v1-2 (pickup-type buzzer)) - buzzer - ) - (else - eco-pill - ) - ) - ) - ) + (set! (-> this type) + (cond + ((= v1-2 (pickup-type eco-blue)) eco-blue) + ((= v1-2 (pickup-type eco-red)) eco-red) + ((= v1-2 (pickup-type eco-yellow)) eco-yellow) + ((= v1-2 (pickup-type eco-green)) health) + ((= v1-2 (pickup-type money)) money) + ((= v1-2 (pickup-type fuel-cell)) fuel-cell) + ((= v1-2 (pickup-type buzzer)) buzzer) + (else eco-pill)))) (init-from-entity! this arg0) - (none) - ) + (none)) (defbehavior birth-pickup-at-point process ((arg0 vector) (arg1 pickup-type) (arg2 float) (arg3 symbol) (arg4 process-tree) (arg5 fact-info)) (local-vars @@ -2304,191 +1765,132 @@ (sv-144 process) (sv-160 process) (sv-176 process) - (sv-192 (pointer process)) - ) + (sv-192 (pointer process))) (set! sv-32 arg5) (let ((s1-0 (new-stack-vector0)) - (t9-0 (method-of-type res-lump get-property-value-float)) - ) - (let ((v1-1 sv-32)) - (b! (not v1-1) cfg-3 :likely-delay (set! v1-2 sv-32)) - ) + (t9-0 (method-of-type res-lump get-property-value-float))) + (let ((v1-1 sv-32)) (b! (not v1-1) cfg-3 :likely-delay (set! v1-2 sv-32))) (set! v1-2 (nonzero? (-> sv-32 process))) (label cfg-3) - (let ((f30-0 (t9-0 - (if v1-2 - (-> sv-32 process entity) - ) - 'pickup-radius - 'interp - (the-as float -1000000000.0) - (the-as float (cond - ((= arg1 (pickup-type buzzer)) - 0.0 - ) - ((= arg2 1.0) - 409.6 - ) - (else - 8192.0 - ) - ) - ) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (let ((f30-0 (t9-0 (if v1-2 (-> sv-32 process entity)) + 'pickup-radius + 'interp + (the-as float -1000000000.0) + (the-as float + (cond + ((= arg1 (pickup-type buzzer)) 0.0) + ((= arg2 1.0) 409.6) + (else 8192.0))) + (the-as (pointer res-tag) #f) + *res-static-buf*))) (set! sv-192 (the-as (pointer process) #f)) (set! sv-48 (the int arg2)) (let ((s0-0 (new 'static 'fact-info))) (set! (-> s0-0 options) (fact-options)) - (if sv-32 - (mem-copy! (&-> s0-0 type) (&-> sv-32 type) 40) - ) + (if sv-32 (mem-copy! (&-> s0-0 type) (&-> sv-32 type) 40)) (set! (-> s0-0 pickup-type) arg1) (set! (-> s0-0 pickup-spawn-amount) 1.0) (while (> sv-48 0) (set! sv-48 (+ sv-48 -1)) (when arg3 (set-vector! s1-0 0.0 57001.605 f30-0 1.0) - (vector-rotate-around-y! s1-0 s1-0 (/ (* 65536.0 (the float sv-48)) arg2)) - ) + (vector-rotate-around-y! s1-0 s1-0 (/ (* 65536.0 (the float sv-48)) arg2))) (let ((v1-25 arg1)) (cond ((= v1-25 (pickup-type eco-yellow)) (set! sv-64 (get-process *pickup-dead-pool* eco-yellow #x4000)) - (set! v1-28 (when sv-64 - (set! sv-192 (the-as (pointer process) v1-28)) - (let ((t9-4 (method-of-type eco-yellow activate))) - (t9-4 (the-as eco-yellow sv-64) arg4 'eco-yellow (the-as pointer #x70004000)) - ) - (run-now-in-process sv-64 initialize-eco-by-other arg0 s1-0 s0-0) - (set! sv-192 (-> sv-64 ppointer)) - v1-28 - ) - ) - sv-192 - ) + (set! v1-28 + (when sv-64 + (set! sv-192 (the-as (pointer process) v1-28)) + (let ((t9-4 (method-of-type eco-yellow activate))) + (t9-4 (the-as eco-yellow sv-64) arg4 'eco-yellow (the-as pointer #x70004000))) + (run-now-in-process sv-64 initialize-eco-by-other arg0 s1-0 s0-0) + (set! sv-192 (-> sv-64 ppointer)) + v1-28)) + sv-192) ((= v1-25 (pickup-type eco-red)) (set! sv-80 (get-process *pickup-dead-pool* eco-red #x4000)) - (set! v1-34 (when sv-80 - (set! sv-192 (the-as (pointer process) v1-34)) - (let ((t9-7 (method-of-type eco-red activate))) - (t9-7 (the-as eco-red sv-80) arg4 'eco-red (the-as pointer #x70004000)) - ) - (run-now-in-process sv-80 initialize-eco-by-other arg0 s1-0 s0-0) - (set! sv-192 (-> sv-80 ppointer)) - v1-34 - ) - ) - (level-hint-spawn (text-id misty-eco-red-hint) "sksp0071" (the-as entity #f) *entity-pool* (game-task none)) - ) + (set! v1-34 + (when sv-80 + (set! sv-192 (the-as (pointer process) v1-34)) + (let ((t9-7 (method-of-type eco-red activate))) (t9-7 (the-as eco-red sv-80) arg4 'eco-red (the-as pointer #x70004000))) + (run-now-in-process sv-80 initialize-eco-by-other arg0 s1-0 s0-0) + (set! sv-192 (-> sv-80 ppointer)) + v1-34)) + (level-hint-spawn (text-id misty-eco-red-hint) "sksp0071" (the-as entity #f) *entity-pool* (game-task none))) ((= v1-25 (pickup-type eco-blue)) (set! sv-96 (get-process *pickup-dead-pool* eco-blue #x4000)) - (set! v1-40 (when sv-96 - (set! sv-192 (the-as (pointer process) v1-40)) - (let ((t9-11 (method-of-type eco-blue activate))) - (t9-11 (the-as eco-blue sv-96) arg4 'eco-blue (the-as pointer #x70004000)) - ) - (run-now-in-process sv-96 initialize-eco-by-other arg0 s1-0 s0-0) - (set! sv-192 (-> sv-96 ppointer)) - v1-40 - ) - ) - sv-192 - ) + (set! v1-40 + (when sv-96 + (set! sv-192 (the-as (pointer process) v1-40)) + (let ((t9-11 (method-of-type eco-blue activate))) + (t9-11 (the-as eco-blue sv-96) arg4 'eco-blue (the-as pointer #x70004000))) + (run-now-in-process sv-96 initialize-eco-by-other arg0 s1-0 s0-0) + (set! sv-192 (-> sv-96 ppointer)) + v1-40)) + sv-192) ((= v1-25 (pickup-type eco-green)) (set! sv-112 (get-process *pickup-dead-pool* health #x4000)) - (set! v1-46 (when sv-112 - (set! sv-192 (the-as (pointer process) v1-46)) - (let ((t9-14 (method-of-type health activate))) - (t9-14 (the-as health sv-112) arg4 'health (the-as pointer #x70004000)) - ) - (run-now-in-process sv-112 initialize-eco-by-other arg0 s1-0 s0-0) - (set! sv-192 (-> sv-112 ppointer)) - v1-46 - ) - ) - sv-192 - ) + (set! v1-46 + (when sv-112 + (set! sv-192 (the-as (pointer process) v1-46)) + (let ((t9-14 (method-of-type health activate))) (t9-14 (the-as health sv-112) arg4 'health (the-as pointer #x70004000))) + (run-now-in-process sv-112 initialize-eco-by-other arg0 s1-0 s0-0) + (set! sv-192 (-> sv-112 ppointer)) + v1-46)) + sv-192) ((= v1-25 (pickup-type eco-pill)) (set! sv-128 (get-process *pickup-dead-pool* eco-pill #x4000)) - (set! v1-52 (when sv-128 - (set! sv-192 (the-as (pointer process) v1-52)) - (let ((t9-17 (method-of-type eco-pill activate))) - (t9-17 (the-as eco-pill sv-128) arg4 'eco-pill (the-as pointer #x70004000)) - ) - (run-now-in-process sv-128 initialize-eco-by-other arg0 s1-0 s0-0) - (set! sv-192 (-> sv-128 ppointer)) - v1-52 - ) - ) - sv-192 - ) + (set! v1-52 + (when sv-128 + (set! sv-192 (the-as (pointer process) v1-52)) + (let ((t9-17 (method-of-type eco-pill activate))) + (t9-17 (the-as eco-pill sv-128) arg4 'eco-pill (the-as pointer #x70004000))) + (run-now-in-process sv-128 initialize-eco-by-other arg0 s1-0 s0-0) + (set! sv-192 (-> sv-128 ppointer)) + v1-52)) + sv-192) ((= v1-25 (pickup-type money)) (set! sv-144 (get-process *pickup-dead-pool* money #x4000)) - (set! v1-58 (when sv-144 - (set! sv-192 (the-as (pointer process) v1-58)) - (let ((t9-20 (method-of-type money activate))) - (t9-20 (the-as money sv-144) arg4 'money (the-as pointer #x70004000)) - ) - (run-now-in-process sv-144 money-init-by-other arg0 s1-0 s0-0 (-> self entity)) - (set! sv-192 (-> sv-144 ppointer)) - v1-58 - ) - ) - sv-192 - ) + (set! v1-58 + (when sv-144 + (set! sv-192 (the-as (pointer process) v1-58)) + (let ((t9-20 (method-of-type money activate))) (t9-20 (the-as money sv-144) arg4 'money (the-as pointer #x70004000))) + (run-now-in-process sv-144 money-init-by-other arg0 s1-0 s0-0 (-> self entity)) + (set! sv-192 (-> sv-144 ppointer)) + v1-58)) + sv-192) ((= v1-25 (pickup-type fuel-cell)) (set! (-> s0-0 pickup-spawn-amount) arg2) (set! sv-160 (get-process *pickup-dead-pool* fuel-cell #x4000)) - (set! v1-64 (when sv-160 - (set! sv-192 (the-as (pointer process) v1-64)) - (let ((t9-23 (method-of-type fuel-cell activate))) - (t9-23 (the-as fuel-cell sv-160) arg4 'fuel-cell (the-as pointer #x70004000)) - ) - (run-now-in-process sv-160 fuel-cell-init-by-other arg0 s1-0 s0-0 (-> self entity)) - (set! sv-192 (-> sv-160 ppointer)) - v1-64 - ) - ) + (set! v1-64 + (when sv-160 + (set! sv-192 (the-as (pointer process) v1-64)) + (let ((t9-23 (method-of-type fuel-cell activate))) + (t9-23 (the-as fuel-cell sv-160) arg4 'fuel-cell (the-as pointer #x70004000))) + (run-now-in-process sv-160 fuel-cell-init-by-other arg0 s1-0 s0-0 (-> self entity)) + (set! sv-192 (-> sv-160 ppointer)) + v1-64)) (set! sv-48 0) - sv-48 - ) + sv-48) ((= v1-25 (pickup-type buzzer)) (set! (-> s0-0 pickup-spawn-amount) arg2) (set! sv-176 (get-process *pickup-dead-pool* buzzer #x4000)) - (set! v1-71 (when sv-176 - (set! sv-192 (the-as (pointer process) v1-71)) - (let ((t9-26 (method-of-type buzzer activate))) - (t9-26 (the-as buzzer sv-176) arg4 'buzzer (the-as pointer #x70004000)) - ) - (run-now-in-process sv-176 buzzer-init-by-other arg0 s1-0 s0-0 (-> self entity)) - (set! sv-192 (-> sv-176 ppointer)) - v1-71 - ) - ) + (set! v1-71 + (when sv-176 + (set! sv-192 (the-as (pointer process) v1-71)) + (let ((t9-26 (method-of-type buzzer activate))) (t9-26 (the-as buzzer sv-176) arg4 'buzzer (the-as pointer #x70004000))) + (run-now-in-process sv-176 buzzer-init-by-other arg0 s1-0 s0-0 (-> self entity)) + (set! sv-192 (-> sv-176 ppointer)) + v1-71)) (set! sv-48 0) - sv-48 - ) - (else - (format 0 "ERROR: unknown type of eco ~d~%" arg1) - #f - ) - ) - ) - ) - ) - ) - ) - sv-192 - ) + sv-48) + (else (format 0 "ERROR: unknown type of eco ~d~%" arg1) #f))))))) + sv-192) (defmethod drop-pickup ((this fact-info) (arg0 symbol) (arg1 process-tree) (arg2 fact-info) (arg3 int)) (let ((s3-0 (-> this pickup-type)) - (f30-0 (-> this pickup-amount)) - ) + (f30-0 (-> this pickup-amount))) (when (= s3-0 (pickup-type eco-pill-random)) f30-0 (let ((s1-0 (get-death-count *game-info* #f))) @@ -2497,106 +1899,70 @@ (cond ((and (= s1-0 1) *target* (and (>= 1.0 (-> *target* fact health)) (rand-vu-percent? (the-as float 0.1)))) (set! s3-0 (pickup-type eco-green)) - 1.0 - ) + 1.0) ((and (< 1 s1-0) *target* (and (>= 2.0 (-> *target* fact health)) (rand-vu-percent? (the-as float 0.05)))) (set! s3-0 (pickup-type eco-green)) - 1.0 - ) - ((< 20 *eco-pill-count*) - (return (the-as (pointer process) #f)) - f30-0 - ) - ((< 10 *eco-pill-count*) - 1.0 - ) + 1.0) + ((< 20 *eco-pill-count*) (return (the-as (pointer process) #f)) f30-0) + ((< 10 *eco-pill-count*) 1.0) ((type-type? (-> this type) fact-info-enemy) - (+ (rand-vu-float-range (the-as float 3.0) (+ 5.0 f30-0)) (the float arg3)) - ) - (else - (+ (rand-vu-float-range (the-as float 2.0) (+ 3.0 f30-0)) (the float arg3)) - ) - ) - ) - ) - ) + (+ (rand-vu-float-range (the-as float 3.0) (+ 5.0 f30-0)) (the float arg3))) + (else (+ (rand-vu-float-range (the-as float 2.0) (+ 3.0 f30-0)) (the float arg3))))))) (let ((s2-1 (new 'stack-no-clear 'vector))) (set! (-> s2-1 quad) (-> this process root trans quad)) (+! (-> s2-1 y) 12288.0) (let ((s1-1 (new 'stack-no-clear 'collide-tri-result))) - (if (>= (fill-and-probe-using-y-probe - *collide-cache* - s2-1 - (the-as float 81920.0) - (collide-kind background) - (the-as process-drawable #f) - s1-1 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (set! (-> s2-1 quad) (-> s1-1 intersect quad)) - (set! (-> s2-1 quad) (-> this process root trans quad)) - ) - ) - (if (= (the-as int s3-0) 6) - (+! (-> s2-1 y) 6144.0) - ) - (birth-pickup-at-point s2-1 (the-as pickup-type s3-0) f30-0 arg0 arg1 this) - ) - ) - ) + (if (>= (fill-and-probe-using-y-probe *collide-cache* + s2-1 + (the-as float 81920.0) + (collide-kind background) + (the-as process-drawable #f) + s1-1 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (set! (-> s2-1 quad) (-> s1-1 intersect quad)) + (set! (-> s2-1 quad) (-> this process root trans quad)))) + (if (= (the-as int s3-0) 6) (+! (-> s2-1 y) 6144.0)) + (birth-pickup-at-point s2-1 (the-as pickup-type s3-0) f30-0 arg0 arg1 this)))) (deftype ecovalve (process-drawable) - ((root collide-shape-moving :override) - (offset vector :inline) - (offset-target vector :inline) - (block-func (function vent symbol)) - ) + ((root collide-shape-moving :override) + (offset vector :inline) + (offset-target vector :inline) + (block-func (function vent symbol))) (:states - ecovalve-idle - ) - ) - + ecovalve-idle)) -(defskelgroup *ecovalve-sg* ecovalve ecovalve-geo-jg ecovalve-idle-ja - ((ecovalve-geo-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) +(defskelgroup *ecovalve-sg* + ecovalve + ecovalve-geo-jg + ecovalve-idle-ja + ((ecovalve-geo-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) (defstate ecovalve-idle (ecovalve) - :code (behavior () - (transform-post) - (suspend) - (transform-post) - (loop - (if (not ((-> self block-func) (the-as vent (ppointer->process (-> self parent))))) - (set-vector! (-> self offset-target) 0.0 0.0 0.0 1.0) - ) - (when (!= (-> self offset-target y) (-> self offset y)) - (vector-seek! (-> self offset) (-> self offset-target) (* 4096.0 (seconds-per-frame))) - (move-to-point! (-> self root) (vector+! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable (-> self parent 0)) root trans) - (-> self offset) - ) - ) - (transform-post) - ) + :code + (behavior () + (transform-post) (suspend) - ) - ) - ) + (transform-post) + (loop + (if (not ((-> self block-func) (the-as vent (ppointer->process (-> self parent))))) + (set-vector! (-> self offset-target) 0.0 0.0 0.0 1.0)) + (when (!= (-> self offset-target y) (-> self offset y)) + (vector-seek! (-> self offset) (-> self offset-target) (* 4096.0 (seconds-per-frame))) + (move-to-point! (-> self root) + (vector+! (new 'stack-no-clear 'vector) (-> (the-as process-drawable (-> self parent 0)) root trans) (-> self offset))) + (transform-post)) + (suspend)))) (defbehavior ecovalve-init-by-other ecovalve ((arg0 (function vent symbol))) (stack-size-set! (-> self main-thread) 128) (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) - ) + (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) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -2604,53 +1970,39 @@ (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4 0.0 6144.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (clear-collide-with-as (-> self root)) - ) + (clear-collide-with-as (-> self root))) (set! (-> self block-func) arg0) (set! (-> self root trans quad) (-> (the-as process-drawable (-> self parent 0)) root trans quad)) (set-vector! (-> self offset-target) 0.0 -2252.8 0.0 1.0) (if (not ((-> self block-func) (the-as vent (ppointer->process (-> self parent))))) - (set-vector! (-> self offset-target) 0.0 0.0 0.0 1.0) - ) + (set-vector! (-> self offset-target) 0.0 0.0 0.0 1.0)) (set! (-> self offset quad) (-> self offset-target quad)) (initialize-skeleton self *ecovalve-sg* '()) - (move-to-point! (-> self root) (vector+! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable (-> self parent 0)) root trans) - (-> self offset) - ) - ) + (move-to-point! (-> self root) + (vector+! (new 'stack-no-clear 'vector) (-> (the-as process-drawable (-> self parent 0)) root trans) (-> self offset))) (go ecovalve-idle) - (none) - ) + (none)) (deftype vent (process-drawable) - ((root collide-shape :override) - (show-particles symbol) - (collect-effect sparticle-launch-group) - (collect-effect2 sparticle-launch-group) - (collect-effect-time time-frame) - (blocker entity-actor) - (block-func (function vent symbol)) - (pickup-handle handle) - ) + ((root collide-shape :override) + (show-particles symbol) + (collect-effect sparticle-launch-group) + (collect-effect2 sparticle-launch-group) + (collect-effect-time time-frame) + (blocker entity-actor) + (block-func (function vent symbol)) + (pickup-handle handle)) (:methods - (initialize (_type_ entity-actor pickup-type) none) - ) + (initialize (_type_ entity-actor pickup-type) none)) (:states - vent-blocked - (vent-pickup handle) - vent-wait-for-touch - ) - ) - + vent-blocked + (vent-pickup handle) + vent-wait-for-touch)) (defmethod initialize ((this vent) (arg0 entity-actor) (arg1 pickup-type)) (stack-size-set! (-> this main-thread) 128) @@ -2660,12 +2012,10 @@ (set! (-> s2-0 prim-core collide-as) (collide-kind powerup)) (set! (-> s2-0 collide-with) (collide-kind target)) (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 6553.6) - (set-root-prim! s3-0 s2-0) - ) + (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! (-> this root) s3-0) - ) + (set! (-> this root) s3-0)) (set! (-> this root trans quad) (-> arg0 extra trans quad)) (update-transforms! (-> this root)) (set! (-> this root pause-adjust-distance) 409600.0) @@ -2676,78 +2026,51 @@ (set! (-> this part) (create-launch-control (-> *part-group-id-table* 44) this)) (set! (-> this collect-effect) (-> *part-group-id-table* 67)) (set! (-> this collect-effect2) (-> *part-group-id-table* 43)) - (set! (-> this sound) (new 'process 'ambient-sound 'eco-bg-blue (-> this root trans))) - ) + (set! (-> this sound) (new 'process 'ambient-sound 'eco-bg-blue (-> this root trans)))) (((pickup-type eco-red)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 50) this)) (set! (-> this collect-effect) (-> *part-group-id-table* 69)) (set! (-> this collect-effect2) (-> *part-group-id-table* 49)) - (set! (-> this sound) (new 'process 'ambient-sound 'eco-bg-red (-> this root trans))) - ) + (set! (-> this sound) (new 'process 'ambient-sound 'eco-bg-red (-> this root trans)))) (((pickup-type eco-green)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 62) this)) (set! (-> this collect-effect) (-> *part-group-id-table* 66)) (set! (-> this collect-effect2) (-> *part-group-id-table* 61)) - (set! (-> this sound) (new 'process 'ambient-sound 'eco-bg-green (-> this root trans))) - ) + (set! (-> this sound) (new 'process 'ambient-sound 'eco-bg-green (-> this root trans)))) (((pickup-type eco-yellow)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 52) this)) (set! (-> this collect-effect) (-> *part-group-id-table* 68)) (set! (-> this collect-effect2) (-> *part-group-id-table* 57)) - (set! (-> this sound) (new 'process 'ambient-sound 'eco-bg-yellow (-> this root trans))) - ) - ) + (set! (-> this sound) (new 'process 'ambient-sound 'eco-bg-yellow (-> this root trans))))) (set! (-> this blocker) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (when (-> this blocker) (logior! (-> this fact options) (fact-options vent-blocked)) (set! (-> this block-func) - (lambda ((arg0 vent)) (not (logtest? (-> arg0 blocker extra perm status) (entity-perm-status complete)))) - ) - ) + (lambda ((arg0 vent)) + (not (logtest? (-> arg0 blocker extra perm status) (entity-perm-status complete)))))) (set! (-> this show-particles) #t) (when (logtest? (-> this fact options) (fact-options vent-blocked)) (when (logtest? (-> this fact options) (fact-options vent-valve)) (case (-> this fact pickup-type) (((pickup-type eco-blue)) (set! (-> this block-func) - (the-as (function vent symbol) (lambda () (not (task-complete? *game-info* (game-task jungle-eggtop))))) - ) - ) + (the-as (function vent symbol) (lambda () (not (task-complete? *game-info* (game-task jungle-eggtop))))))) (((pickup-type eco-red)) (set! (-> this block-func) - (the-as (function vent symbol) (lambda () (not (task-complete? *game-info* (game-task red-eggtop))))) - ) - ) + (the-as (function vent symbol) (lambda () (not (task-complete? *game-info* (game-task red-eggtop))))))) (((pickup-type eco-yellow)) (set! (-> this block-func) - (the-as (function vent symbol) (lambda () (not (task-complete? *game-info* (game-task snow-eggtop))))) - ) - ) - ) - (process-spawn ecovalve (-> this block-func) :from *pickup-dead-pool* :to this) - ) - (if ((-> this block-func) this) - (go vent-blocked) - ) - ) + (the-as (function vent symbol) (lambda () (not (task-complete? *game-info* (game-task snow-eggtop)))))))) + (process-spawn ecovalve (-> this block-func) :from *pickup-dead-pool* :to this)) + (if ((-> this block-func) this) (go vent-blocked))) (go vent-wait-for-touch) - (none) - ) + (none)) (defbehavior vent-standard-event-handler vent ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('show-particles) - (let ((v0-0 (the-as object (-> arg3 param 0)))) - (set! (-> self show-particles) (the-as symbol v0-0)) - v0-0 - ) - ) - (('hide) - (set! (-> self block-func) (the-as (function vent symbol) true-func)) - (go vent-blocked) - ) - ) - ) + (let ((v0-0 (the-as object (-> arg3 param 0)))) (set! (-> self show-particles) (the-as symbol v0-0)) v0-0)) + (('hide) (set! (-> self block-func) (the-as (function vent symbol) true-func)) (go vent-blocked)))) (defstate vent-wait-for-touch (vent) :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) @@ -2787,110 +2110,72 @@ ) (defstate vent-blocked (vent) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('show) - (go vent-wait-for-touch) - ) - ) - ) - :code (behavior () - (loop - (if (not ((-> self block-func) self)) - (go vent-wait-for-touch) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('show) (go vent-wait-for-touch)))) + :code + (behavior () + (loop + (if (not ((-> self block-func) self)) (go vent-wait-for-touch)) + (suspend)))) (defstate vent-pickup (vent) :event vent-standard-event-handler - :code (behavior ((arg0 handle)) - (when (-> self show-particles) - (when (nonzero? (-> self collect-effect)) - (let* ((s5-0 (handle->process arg0)) - (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - s5-0 - ) - ) - ) - (when gp-0 - (let* ((s4-0 (-> (the-as process-drawable gp-0) root)) - (s5-1 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) collide-shape)) - s4-0 - ) - ) - ) - (when s5-1 - (process-spawn - part-tracker - :init part-tracker-init - (-> self collect-effect) - -1 - part-tracker-track-target - #f - #f - (-> (the-as collide-shape s5-1) root-prim prim-core) - :to gp-0 - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> self collect-effect2) - -1 - part-tracker-move-to-target - #f - #f - (-> self root root-prim prim-core) - :to self - ) - ) - ) - ) - ) - ) - ) - (go vent-wait-for-touch) - ) - ) - -(deftype ventyellow (vent) - () - ) - + :code + (behavior ((arg0 handle)) + (when (-> self show-particles) + (when (nonzero? (-> self collect-effect)) + (let* ((s5-0 (handle->process arg0)) + (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) s5-0))) + (when gp-0 + (let* ((s4-0 (-> (the-as process-drawable gp-0) root)) + (s5-1 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) collide-shape)) s4-0))) + (when s5-1 + (process-spawn part-tracker + :init + part-tracker-init + (-> self collect-effect) + -1 + part-tracker-track-target + #f + #f + (-> (the-as collide-shape s5-1) root-prim prim-core) + :to + gp-0) + (process-spawn part-tracker + :init + part-tracker-init + (-> self collect-effect2) + -1 + part-tracker-move-to-target + #f + #f + (-> self root root-prim prim-core) + :to + self))))))) + (go vent-wait-for-touch))) + +(deftype ventyellow (vent) ()) (defmethod init-from-entity! ((this ventyellow) (arg0 entity-actor)) (initialize this arg0 (pickup-type eco-yellow)) - (none) - ) - -(deftype ventred (vent) - () - ) + (none)) +(deftype ventred (vent) ()) (defmethod init-from-entity! ((this ventred) (arg0 entity-actor)) (initialize this arg0 (pickup-type eco-red)) - (none) - ) - -(deftype ventblue (vent) - () - ) + (none)) +(deftype ventblue (vent) ()) (defmethod init-from-entity! ((this ventblue) (arg0 entity-actor)) (initialize this arg0 (pickup-type eco-blue)) - (none) - ) - -(deftype ecovent (vent) - () - ) + (none)) +(deftype ecovent (vent) ()) (defmethod init-from-entity! ((this ecovent) (arg0 entity-actor)) (initialize this arg0 (pickup-type eco-blue)) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/common-obs/crates.gc b/goal_src/jak1/engine/common-obs/crates.gc index f3cf77d864..a41cbf0ceb 100644 --- a/goal_src/jak1/engine/common-obs/crates.gc +++ b/goal_src/jak1/engine/common-obs/crates.gc @@ -1,976 +1,751 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/collectables.gc") - -;; name: crates.gc -;; name in dgo: crates -;; dgos: GAME, ENGINE - (declare-type crate process-drawable) + (declare-type crate-buzzer crate) ;; DECOMP BEGINS -(defskelgroup *crate-barrel-sg* crate crate-barrel-lod0-jg crate-barrel-idle-ja - ((crate-barrel-lod0-mg (meters 20)) (crate-barrel-lod1-mg (meters 40)) (crate-barrel-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) - -(defskelgroup *crate-bucket-sg* crate crate-bucket-lod0-jg crate-bucket-idle-ja - ((crate-bucket-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :texture-level 2 - ) - -(defskelgroup *crate-wood-sg* crate crate-wood-lod0-jg crate-idle-ja - ((crate-wood-lod0-mg (meters 20)) (crate-wood-lod1-mg (meters 40)) (crate-wood-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) - -(defskelgroup *crate-iron-sg* crate crate-iron-lod0-jg crate-idle-ja - ((crate-iron-lod0-mg (meters 20)) (crate-iron-lod1-mg (meters 40)) (crate-iron-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) - -(defskelgroup *crate-steel-sg* crate crate-steel-lod0-jg crate-idle-ja - ((crate-steel-lod0-mg (meters 20)) (crate-steel-lod1-mg (meters 40)) (crate-steel-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) - -(defskelgroup *crate-darkeco-sg* crate crate-darkeco-lod0-jg crate-idle-ja - ((crate-darkeco-lod0-mg (meters 20)) - (crate-darkeco-lod1-mg (meters 40)) - (crate-darkeco-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) +(defskelgroup *crate-barrel-sg* + crate + crate-barrel-lod0-jg + crate-barrel-idle-ja + ((crate-barrel-lod0-mg (meters 20)) (crate-barrel-lod1-mg (meters 40)) (crate-barrel-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) + +(defskelgroup *crate-bucket-sg* + crate + crate-bucket-lod0-jg + crate-bucket-idle-ja + ((crate-bucket-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :texture-level 2) + +(defskelgroup *crate-wood-sg* + crate + crate-wood-lod0-jg + crate-idle-ja + ((crate-wood-lod0-mg (meters 20)) (crate-wood-lod1-mg (meters 40)) (crate-wood-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) + +(defskelgroup *crate-iron-sg* + crate + crate-iron-lod0-jg + crate-idle-ja + ((crate-iron-lod0-mg (meters 20)) (crate-iron-lod1-mg (meters 40)) (crate-iron-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) + +(defskelgroup *crate-steel-sg* + crate + crate-steel-lod0-jg + crate-idle-ja + ((crate-steel-lod0-mg (meters 20)) (crate-steel-lod1-mg (meters 40)) (crate-steel-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) + +(defskelgroup *crate-darkeco-sg* + crate + crate-darkeco-lod0-jg + crate-idle-ja + ((crate-darkeco-lod0-mg (meters 20)) (crate-darkeco-lod1-mg (meters 40)) (crate-darkeco-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) (deftype crate-bank (basic) - ((COLLIDE_YOFF float) - (COLLIDE_RADIUS float) - (DARKECO_EXPLODE_RADIUS float) - ) - ) - + ((COLLIDE_YOFF float) + (COLLIDE_RADIUS float) + (DARKECO_EXPLODE_RADIUS float))) (define *CRATE-bank* - (new 'static 'crate-bank :COLLIDE_YOFF 4096.0 :COLLIDE_RADIUS 4915.2 :DARKECO_EXPLODE_RADIUS 16384.0) - ) + (new 'static 'crate-bank :COLLIDE_YOFF 4096.0 :COLLIDE_RADIUS 4915.2 :DARKECO_EXPLODE_RADIUS 16384.0)) (deftype crate (process-drawable) - ((root collide-shape-moving :override) - (smush smush-control :inline) - (base vector :inline) - (look symbol) - (defense symbol) - (incomming-attack-id uint64) - (target handle) - (child-count int32) - (victory-anim spool-anim) - ) + ((root collide-shape-moving :override) + (smush smush-control :inline) + (base vector :inline) + (look symbol) + (defense symbol) + (incomming-attack-id uint64) + (target handle) + (child-count int32) + (victory-anim spool-anim)) (:state-methods - wait - (die symbol int) - special-contents-die - bounce-on - (notice-blue handle) - ) + wait + (die symbol int) + special-contents-die + bounce-on + (notice-blue handle)) (:methods - (params-init (_type_ entity) none) - (art-init (_type_) crate) - (params-set! (_type_ symbol symbol) none) - (check-dead (_type_) none) - (smush-update! (_type_) none) - ) - ) - + (params-init (_type_ entity) none) + (art-init (_type_) crate) + (params-set! (_type_ symbol symbol) none) + (check-dead (_type_) none) + (smush-update! (_type_) none))) (method-set! crate 12 (method-of-type process run-logic?)) (defbehavior crate-post crate () (rider-trans) (smush-update! self) - (rider-post) - ) + (rider-post)) (defpart 281 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 128.0 32.0) - (:b 128.0 32.0) - (:a 32.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:accel-y (meters 0.00066666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 282) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 128.0 32.0) + (:b 128.0 32.0) + (:a 32.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:accel-y (meters 0.00066666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 282) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 282 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 283 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 4.0) - (:y (meters 0.75)) - (:scale-x (meters 6)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3) (meters 1)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 284) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 4.0) + (:y (meters 0.75)) + (:scale-x (meters 6)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3) (meters 1)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 284) + (:rotate-y (degrees 0)))) (defpart 284 - :init-specs ((:fade-a -2.1333334)) - ) + :init-specs ((:fade-a -2.1333334))) (defpart 285 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 28.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 28.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)))) (defpart 286 - :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x2)) - (:num 5.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.6) 2.0 (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 160.0) - (:g 160.0) - (:b 160.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 2 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 287) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6 :page #x2)) + (:num 5.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.6) 2.0 (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 160.0) + (:g 160.0) + (:b 160.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 2 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 287) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 287 - :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4)) - ) + :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4))) (defpart 288 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x2)) - (:num 4.5) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.3) 1 (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 100.0) - (:g 100.0) - (:b 100.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 3 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 287) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x2)) + (:num 4.5) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.3) 1 (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 100.0) + (:g 100.0) + (:b 100.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 3 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 287) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-crate-explode :id 71 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 281) (sp-item 283) (sp-item 285) (sp-item 286) (sp-item 288)) - ) + :parts ((sp-item 281) (sp-item 283) (sp-item 285) (sp-item 286) (sp-item 288))) (defpartgroup group-crate-steel-explode :id 72 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 281) (sp-item 283) (sp-item 285) (sp-item 288) (sp-item 288) (sp-item 288)) - ) + :parts ((sp-item 281) (sp-item 283) (sp-item 285) (sp-item 288) (sp-item 288) (sp-item 288))) (defpartgroup group-dark-eco-box-explosion :id 73 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 295 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 292 :fade-after (meters 160) :period (seconds 2) :length (seconds 0.017)) - (sp-item 2095 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2096 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) - (sp-item 2097 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2098 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 295 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 292 :fade-after (meters 160) :period (seconds 2) :length (seconds 0.017)) + (sp-item 2095 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2096 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) + (sp-item 2097 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2098 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.067)))) (defpart 2096 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:scale-x (meters 0.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 96.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2099) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:scale-x (meters 0.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 96.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2099) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2099 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223))) (defpart 2098 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:scale-x (meters 0.2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 8)) - (:r 64.0 192.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.42666668)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 8)) + (:r 64.0 192.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.42666668)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2095 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 16)) - (:scale-y :copy scale-x) - (:r 64.0 192.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 96.0) - (:fade-a -1.7454545) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 16)) + (:scale-y :copy scale-x) + (:r 64.0 192.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 96.0) + (:fade-a -1.7454545) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2097 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 110)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 110)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 295 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 16.0) - (:y (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:accel-y (meters -0.00033333333)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3 bit14)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 16.0) + (:y (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:accel-y (meters -0.00033333333)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3 bit14)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 296 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.3) (meters 0.3)) - (:scale-x (meters 0.3) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters -0.000909091)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.26666668) - (:fade-a -0.19393939) - (:timer (seconds 0.3) (seconds 0.497)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3) (meters 0.3)) + (:scale-x (meters 0.3) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters -0.000909091)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.26666668) + (:fade-a -0.19393939) + (:timer (seconds 0.3) (seconds 0.497)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 297 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 32.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0006190476)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.01904762) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 32.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpart 292 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x2)) - (:num 8.0 16.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.3) 1 (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 128.0) - (:g 64.0 1 32.0) - (:b 32.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 3 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 301) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x2)) + (:num 8.0 16.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.3) 1 (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 128.0) + (:g 64.0 1 32.0) + (:b 32.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 3 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 301) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 301 - :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4)) - ) + :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4))) (defbehavior crate-standard-event-handler crate ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('attack) (let ((s4-0 (-> arg3 param 2)) - (s5-0 (-> arg3 param 3)) - ) + (s5-0 (-> arg3 param 3))) (case (-> self defense) (('iron) (case (-> arg3 param 1) (('flop 'uppercut 'explode 'darkeco 'eco-yellow 'bonk 'racer 'tube 'flut-bonk 'flut-attack) (if (and (logtest? (-> self fact options) (fact-options require-zoomer)) *target* - (not (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - ) - (return #f) - ) + (not (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) + (return #f)) (increment-success-for-hint (text-id sidekick-hint-crate-iron)) (increment-success-for-hint (text-id training-ironcrate)) (send-event arg0 'get-attack-count 1) - (go-virtual die #f (the-as int s5-0)) - ) + (go-virtual die #f (the-as int s5-0))) (else - (when (and (!= s4-0 (-> self incomming-attack-id)) (= (-> self root trans y) (-> self base y))) - (if (not (and (!= *kernel-boot-message* 'play) (= (-> *setting-control* current language) (language-enum japanese))) - ) - (level-hint-spawn (text-id training-ironcrate) "sagevb36" (the-as entity #f) *entity-pool* (game-task none)) - ) - (case (-> (level-get-target-inside *level*) name) - (('training) - (if (and (can-hint-be-played? (text-id zero) (the-as entity #f) (the-as string #f)) (rand-vu-percent? 0.2)) - (clear-text-seen! *game-info* (text-id sidekick-hint-crate-iron)) - ) - ) - ) - (level-hint-spawn - (text-id sidekick-hint-crate-iron) - "sksp0005" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (set! (-> self incomming-attack-id) s4-0) - (if (not (!= (-> self smush amp) 0.0)) - (sound-play "icrate-nobreak") - ) - (activate! (-> self smush) 0.1 90 150 1.0 1.0) - (go-virtual bounce-on) - ) - #f - ) - ) - ) + (when (and (!= s4-0 (-> self incomming-attack-id)) (= (-> self root trans y) (-> self base y))) + (if (not (and (!= *kernel-boot-message* 'play) (= (-> *setting-control* current language) (language-enum japanese)))) + (level-hint-spawn (text-id training-ironcrate) "sagevb36" (the-as entity #f) *entity-pool* (game-task none))) + (case (-> (level-get-target-inside *level*) name) + (('training) + (if (and (can-hint-be-played? (text-id zero) (the-as entity #f) (the-as string #f)) (rand-vu-percent? 0.2)) + (clear-text-seen! *game-info* (text-id sidekick-hint-crate-iron))))) + (level-hint-spawn (text-id sidekick-hint-crate-iron) "sksp0005" (the-as entity #f) *entity-pool* (game-task none)) + (set! (-> self incomming-attack-id) s4-0) + (if (not (!= (-> self smush amp) 0.0)) (sound-play "icrate-nobreak")) + (activate! (-> self smush) 0.1 90 150 1.0 1.0) + (go-virtual bounce-on)) + #f))) (('steel) (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) (draw-status was-drawn)) (increment-success-for-hint (text-id sidekick-hint-crate-steel)) - (level-hint-spawn - (text-id sidekick-hint-crate-steel-break1) - "sksp0004" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id sidekick-hint-crate-steel-break2) - "sksp009b" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (go-virtual die #f (the-as int s5-0)) - ) + (level-hint-spawn (text-id sidekick-hint-crate-steel-break1) + "sksp0004" + (the-as entity #f) + *entity-pool* + (game-task none)) + (level-hint-spawn (text-id sidekick-hint-crate-steel-break2) + "sksp009b" + (the-as entity #f) + *entity-pool* + (game-task none))) + (go-virtual die #f (the-as int s5-0))) (else - (when (and (!= s4-0 (-> self incomming-attack-id)) (= (-> self root trans y) (-> self base y))) - (level-hint-spawn - (text-id sidekick-hint-crate-steel) - "sksp0006" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (set! (-> self incomming-attack-id) s4-0) - (if (not (!= (-> self smush amp) 0.0)) - (sound-play "scrate-nobreak") - ) - (activate! (-> self smush) 0.1 90 150 1.0 1.0) - (go-virtual bounce-on) - ) - #f - ) - ) - ) + (when (and (!= s4-0 (-> self incomming-attack-id)) (= (-> self root trans y) (-> self base y))) + (level-hint-spawn (text-id sidekick-hint-crate-steel) "sksp0006" (the-as entity #f) *entity-pool* (game-task none)) + (set! (-> self incomming-attack-id) s4-0) + (if (not (!= (-> self smush amp) 0.0)) (sound-play "scrate-nobreak")) + (activate! (-> self smush) 0.1 90 150 1.0 1.0) + (go-virtual bounce-on)) + #f))) (('darkeco) (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'darkeco)))) (when (= (-> arg0 type) target) - (level-hint-spawn - (text-id sidekick-hint-crate-darkeco2) - "sksp009c" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id sidekick-hint-crate-darkeco1) - "sksp0002" - (the-as entity #f) - *entity-pool* - (game-task none) - ) + (level-hint-spawn (text-id sidekick-hint-crate-darkeco2) "sksp009c" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id sidekick-hint-crate-darkeco1) "sksp0002" (the-as entity #f) *entity-pool* (game-task none)) (case (-> (level-get-target-inside *level*) name) (('rolling) - (level-hint-spawn - (text-id sidekick-hint-crate-darkeco-rolling) - "sksp0110" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) + (level-hint-spawn (text-id sidekick-hint-crate-darkeco-rolling) + "sksp0110" + (the-as entity #f) + *entity-pool* + (game-task none))) (('firecanyon) - (level-hint-spawn - (text-id firecanyon-crate-darkeco2) - "sksp0082" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id firecanyon-crate-darkeco1) - "sksp0081" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - (go-virtual die #f (the-as int s5-0)) - ) - (else - (send-event arg0 'get-attack-count 1) - (go-virtual die #f (the-as int s5-0)) - ) - ) - ) - ) + (level-hint-spawn (text-id firecanyon-crate-darkeco2) "sksp0082" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id firecanyon-crate-darkeco1) "sksp0081" (the-as entity #f) *entity-pool* (game-task none))))) + (go-virtual die #f (the-as int s5-0))) + (else (send-event arg0 'get-attack-count 1) (go-virtual die #f (the-as int s5-0)))))) (('touch) (case (-> self defense) - (('darkeco) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'darkeco)))) - (go-virtual die #f 0) - ) - ) - ) + (('darkeco) (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'darkeco)))) (go-virtual die #f 0)))) (('bonk) (when (= (-> self root trans y) (-> self base y)) (activate! (-> self smush) -0.1 75 150 1.0 1.0) - (go-virtual bounce-on) - ) - ) + (go-virtual bounce-on))) (('wake) (let ((v0-0 (the-as object (logclear (-> self mask) (process-mask sleep))))) (set! (-> self mask) (the-as process-mask v0-0)) - v0-0 - ) - ) + v0-0)) (('eco-blue) (if (not (or (= (-> self defense) 'darkeco) (or (= (-> self next-state name) 'notice-blue) (= (-> self next-state name) 'die)) - (!= (-> self root trans y) (-> self base y)) - ) - ) - (go-virtual notice-blue (process->handle arg0)) - ) - ) - ) - ) + (!= (-> self root trans y) (-> self base y)))) + (go-virtual notice-blue (process->handle arg0)))))) (defstate wait (crate) :virtual #t :event crate-standard-event-handler - :code (behavior () - (suspend) - (update-transforms! (-> self root)) - (logior! (-> self mask) (process-mask sleep)) - (loop + :code + (behavior () (suspend) - ) - ) - :post ja-post - ) + (update-transforms! (-> self root)) + (logior! (-> self mask) (process-mask sleep)) + (loop + (suspend))) + :post ja-post) (defstate bounce-on (crate) :virtual #t :event crate-standard-event-handler - :code (behavior () - (while (!= (-> self smush amp) 0.0) - (suspend) - ) - (go-virtual wait) - ) - :post crate-post - ) + :code + (behavior () + (while (!= (-> self smush amp) 0.0) + (suspend)) + (go-virtual wait)) + :post crate-post) (defstate notice-blue (crate) :virtual #t :event crate-standard-event-handler - :trans (behavior () - (cond - ((not (send-event *target* 'query 'powerup (pickup-type eco-blue))) - (logior! (-> self mask) (process-mask sleep-code)) - (if (not (!= (-> self smush amp) 0.0)) - (go-virtual wait) - ) - ) - (else - (logclear! (-> self mask) (process-mask sleep-code)) - ) - ) - ) - :code (behavior ((arg0 handle)) - (set! (-> self target) arg0) - (loop - (let* ((gp-0 (handle->process (-> self target))) - (v1-4 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - ) - (when v1-4 - (let* ((gp-1 (-> (the-as process-drawable v1-4) root)) - (v1-6 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) - gp-1 - ) - ) - ) - (when v1-6 - (let* ((gp-2 (-> self root root-prim prim-core)) - (a1-3 (-> (the-as collide-shape v1-6) root-prim prim-core)) - (f30-0 (vector-vector-distance (the-as vector gp-2) (the-as vector a1-3))) - ) - (when (and (< f30-0 (-> *FACT-bank* suck-suck-dist)) (!= (-> self defense) 'steel)) - (logior! (-> self fact options) (fact-options can-collect)) - (go-virtual die #f 0) - ) - (when (rand-vu-percent? 0.5) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> gp-2 world-sphere quad)) - (dotimes (gp-3 3) - (+! (-> s5-0 data gp-3) (rand-vu-float-range -5324.8 5324.8)) - ) - (eco-blue-glow s5-0) - ) - ) - (activate! - (-> self smush) - (lerp-scale - (rand-vu-float-range 0.1 0.3) - (rand-vu-float-range 0.0 0.02) - f30-0 - (-> *FACT-bank* suck-suck-dist) - (-> *FACT-bank* suck-bounce-dist) - ) - 60 - 60 - 1.0 - 1.0 - ) - ) - ) - ) - ) - ) - (suspend) - ) - ) - :post crate-post - ) + :trans + (behavior () + (cond + ((not (send-event *target* 'query 'powerup (pickup-type eco-blue))) + (logior! (-> self mask) (process-mask sleep-code)) + (if (not (!= (-> self smush amp) 0.0)) (go-virtual wait))) + (else (logclear! (-> self mask) (process-mask sleep-code))))) + :code + (behavior ((arg0 handle)) + (set! (-> self target) arg0) + (loop + (let* ((gp-0 (handle->process (-> self target))) + (v1-4 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0))) + (when v1-4 + (let* ((gp-1 (-> (the-as process-drawable v1-4) root)) + (v1-6 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) gp-1))) + (when v1-6 + (let* ((gp-2 (-> self root root-prim prim-core)) + (a1-3 (-> (the-as collide-shape v1-6) root-prim prim-core)) + (f30-0 (vector-vector-distance (the-as vector gp-2) (the-as vector a1-3)))) + (when (and (< f30-0 (-> *FACT-bank* suck-suck-dist)) (!= (-> self defense) 'steel)) + (logior! (-> self fact options) (fact-options can-collect)) + (go-virtual die #f 0)) + (when (rand-vu-percent? 0.5) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> gp-2 world-sphere quad)) + (dotimes (gp-3 3) + (+! (-> s5-0 data gp-3) (rand-vu-float-range -5324.8 5324.8))) + (eco-blue-glow s5-0))) + (activate! (-> self smush) + (lerp-scale (rand-vu-float-range 0.1 0.3) + (rand-vu-float-range 0.0 0.02) + f30-0 + (-> *FACT-bank* suck-suck-dist) + (-> *FACT-bank* suck-bounce-dist)) + 60 + 60 + 1.0 + 1.0)))))) + (suspend))) + :post crate-post) (defstate die (crate) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (case (-> self defense) - (('darkeco) - (cond - ((= (-> proc type) target) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'darkeco)))) - ) - (else - (let ((a1-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-5 from) self) - (set! (-> a1-5 num-params) 4) - (set! (-> a1-5 message) 'attack) - (set! (-> a1-5 param 0) (-> block param 0)) - (set! (-> a1-5 param 1) (the-as uint 'darkeco)) - (let ((v1-12 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-12) - (set! (-> a1-5 param 2) (the-as uint v1-12)) - ) - (set! (-> a1-5 param 3) (the-as uint 0)) - (send-event-function proc a1-5) - ) - ) - ) - ) - ) - ) - ) - ) - :trans (behavior () - (case (-> self type) - ((crate-buzzer) - (if (and *target* (>= (-> *target* fact buzzer) 6.0)) - (spool-push *art-control* (-> self victory-anim name) 0 self -99.0) - ) - ) - ) - ) - :code (behavior ((arg0 symbol) (arg1 int)) - (clear-collide-with-as (-> self root)) - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (if (and *target* - (and (logtest? (-> *target* control root-prim prim-core action) (collide-action racer snowball tube flut)) - (!= (-> self fact pickup-type) 6) - (not arg0) - ) - ) - (logior! (-> self fact options) (fact-options instant-collect)) - ) - (when (not arg0) - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 (seconds 0.04)) - (suspend) - ) - ) - (logior! (-> self draw status) (draw-status hidden)) - (case (-> self look) - (('iron) - (sound-play "icrate-break") - ) - (('steel) - (sound-play "scrate-break") - ) - (('darkeco) - (sound-play "dcrate-break") - ) - (else - (sound-play "wcrate-break") - ) - ) - (case (-> self defense) - (('darkeco) - (let ((f0-0 (lerp-scale 1.0 0.0 (vector-vector-distance (-> self root trans) (target-pos 0)) 8192.0 40960.0))) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 (the int (* 255.0 f0-0)) (seconds 0.3)) - ) - (process-spawn - touch-tracker - :init touch-tracker-init - (-> self root trans) - (-> *CRATE-bank* DARKECO_EXPLODE_RADIUS) - 30 - :to self - ) - ) - ) - (case (-> self look) - (('darkeco) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 73) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - ) - (('steel 'iron) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 72) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - ) - (else - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 71) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - ) - ) - ) - (case (-> self fact pickup-type) - (((pickup-type money) - (pickup-type buzzer) - (pickup-type eco-blue) - (pickup-type eco-yellow) - (pickup-type eco-red) - (pickup-type fuel-cell) - ) - (go-virtual special-contents-die) - ) - ) - (drop-pickup (-> self fact) #t *entity-pool* (the-as fact-info #f) arg1) - (process-entity-status! self (entity-perm-status dead) #t) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 5)) - (suspend) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (case (-> self defense) + (('darkeco) + (cond + ((= (-> proc type) target) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'darkeco))))) + (else + (let ((a1-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-5 from) self) + (set! (-> a1-5 num-params) 4) + (set! (-> a1-5 message) 'attack) + (set! (-> a1-5 param 0) (-> block param 0)) + (set! (-> a1-5 param 1) (the-as uint 'darkeco)) + (let ((v1-12 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-12) (set! (-> a1-5 param 2) (the-as uint v1-12))) + (set! (-> a1-5 param 3) (the-as uint 0)) + (send-event-function proc a1-5))))))))) + :trans + (behavior () + (case (-> self type) + ((crate-buzzer) + (if (and *target* (>= (-> *target* fact buzzer) 6.0)) (spool-push *art-control* (-> self victory-anim name) 0 self -99.0))))) + :code + (behavior ((arg0 symbol) (arg1 int)) + (clear-collide-with-as (-> self root)) + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (if (and *target* + (and (logtest? (-> *target* control root-prim prim-core action) (collide-action racer snowball tube flut)) + (!= (-> self fact pickup-type) 6) + (not arg0))) + (logior! (-> self fact options) (fact-options instant-collect))) + (when (not arg0) + (let ((s5-1 (current-time))) (until (time-elapsed? s5-1 (seconds 0.04)) (suspend))) + (logior! (-> self draw status) (draw-status hidden)) + (case (-> self look) + (('iron) (sound-play "icrate-break")) + (('steel) (sound-play "scrate-break")) + (('darkeco) (sound-play "dcrate-break")) + (else (sound-play "wcrate-break"))) + (case (-> self defense) + (('darkeco) + (let ((f0-0 (lerp-scale 1.0 0.0 (vector-vector-distance (-> self root trans) (target-pos 0)) 8192.0 40960.0))) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 (the int (* 255.0 f0-0)) (seconds 0.3))) + (process-spawn touch-tracker + :init + touch-tracker-init + (-> self root trans) + (-> *CRATE-bank* DARKECO_EXPLODE_RADIUS) + 30 + :to + self))) + (case (-> self look) + (('darkeco) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 73) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*)) + (('steel 'iron) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 72) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*)) + (else + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 71) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*)))) + (case (-> self fact pickup-type) + (((pickup-type money) + (pickup-type buzzer) + (pickup-type eco-blue) + (pickup-type eco-yellow) + (pickup-type eco-red) + (pickup-type fuel-cell)) + (go-virtual special-contents-die))) + (drop-pickup (-> self fact) #t *entity-pool* (the-as fact-info #f) arg1) + (process-entity-status! self (entity-perm-status dead) #t) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 5)) (suspend))))) (defstate special-contents-die (crate) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (case (-> block param 0) - (('pickup) - (let ((gp-0 (-> self entity extra perm))) - (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) - (set! (-> gp-0 user-int8 1) (min 127 (+ (-> gp-0 user-int8 1) 1))) - (+! (-> self child-count) -1) - (when (<= (-> self child-count) 0) - (if (or (= (-> self defense) 'iron) (= (-> self defense) 'steel)) - (process-entity-status! self (entity-perm-status bit-4) #f) - ) - (process-entity-status! self (entity-perm-status dead) #t) - (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> gp-0 user-int8 0) 2) - (let ((v0-0 (logclear (-> self mask) (process-mask sleep)))) - (set! (-> self mask) v0-0) - v0-0 - ) - ) - ) - ) - ) - ) - ) - ) - :trans (-> (method-of-type crate die) trans) - :code (behavior () - (when (or (= (-> self fact pickup-type) (pickup-type money)) - (= (-> self defense) 'iron) - (= (-> self defense) 'steel) - ) - (let ((a0-4 (-> self entity))) - (if (when a0-4 - (let ((a0-5 (-> a0-4 extra perm task))) - (if a0-5 - (= a0-5 (game-task none)) - ) - ) - ) - (set! (-> self entity extra perm task) (game-task complete)) - ) - ) - ) - (clear-collide-with-as (-> self root)) - (logior! (-> self draw status) (draw-status hidden)) - (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) - (let ((v1-21 (-> self entity extra perm))) - (logior! (-> v1-21 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-21 user-int8 0) 1) - ) - (when (-> self child) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - (while (-> self child) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (case (-> block param 0) + (('pickup) + (let ((gp-0 (-> self entity extra perm))) + (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) + (set! (-> gp-0 user-int8 1) (min 127 (+ (-> gp-0 user-int8 1) 1))) + (+! (-> self child-count) -1) + (when (<= (-> self child-count) 0) + (if (or (= (-> self defense) 'iron) (= (-> self defense) 'steel)) + (process-entity-status! self (entity-perm-status bit-4) #f)) + (process-entity-status! self (entity-perm-status dead) #t) + (process-entity-status! self (entity-perm-status complete) #t) + (set! (-> gp-0 user-int8 0) 2) + (let ((v0-0 (logclear (-> self mask) (process-mask sleep)))) (set! (-> self mask) v0-0) v0-0)))))))) + :trans + (-> (method-of-type crate die) + trans) + :code + (behavior () + (when (or (= (-> self fact pickup-type) (pickup-type money)) (= (-> self defense) 'iron) (= (-> self defense) 'steel)) + (let ((a0-4 (-> self entity))) + (if (when a0-4 + (let ((a0-5 (-> a0-4 extra perm task))) (if a0-5 (= a0-5 (game-task none))))) + (set! (-> self entity extra perm task) (game-task complete))))) + (clear-collide-with-as (-> self root)) + (logior! (-> self draw status) (draw-status hidden)) + (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) + (let ((v1-21 (-> self entity extra perm))) + (logior! (-> v1-21 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-21 user-int8 0) 1)) + (when (-> self child) + (logior! (-> self mask) (process-mask sleep)) (suspend) - ) - ) - ) - ) + (while (-> self child) + (suspend))))) (defbehavior crate-init-by-other crate ((arg0 entity) (arg1 vector) (arg2 symbol)) (params-init self arg0) @@ -979,15 +754,13 @@ (set! (-> self defense) arg2) (art-init self) (check-dead self) - (none) - ) + (none)) (defmethod init-from-entity! ((this crate) (arg0 entity-actor)) (params-init this arg0) (art-init this) (check-dead this) - (none) - ) + (none)) (defmethod params-init ((this crate) (arg0 entity)) (stack-size-set! (-> this main-thread) 128) @@ -995,9 +768,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind crate blue-eco-suck)) @@ -1006,28 +777,19 @@ (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 3072.0 0.0 6963.2) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this root) s4-0)) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (let ((v1-27 (-> this entity extra perm))) - (set! (-> this fact pickup-amount) - (fmax 0.0 (- (-> this fact pickup-amount) (the float (-> v1-27 user-int8 1)))) - ) - ) + (set! (-> this fact pickup-amount) (fmax 0.0 (- (-> this fact pickup-amount) (the float (-> v1-27 user-int8 1)))))) (when (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (set! (-> this fact pickup-type) (pickup-type eco-pill-random)) - (set! (-> this fact pickup-amount) 0.0) - ) + (set! (-> this fact pickup-amount) 0.0)) (when arg0 (process-drawable-from-entity! this (the-as entity-actor arg0)) - (logclear! (-> this mask) (process-mask actor-pause)) - ) + (logclear! (-> this mask) (process-mask actor-pause))) (let ((a0-18 ((method-of-type res-lump get-property-struct) (-> this entity) 'crate-type @@ -1035,286 +797,196 @@ -1000000000.0 'wood (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + *res-static-buf*))) (set! (-> this look) (the-as symbol a0-18)) - (set! (-> this defense) (the-as symbol a0-18)) - ) + (set! (-> this defense) (the-as symbol a0-18))) (case (-> this fact pickup-type) (((pickup-type buzzer)) (set! (-> this type) crate-buzzer) (when (= (-> this look) 'wood) (set! (-> this look) 'iron) - (set! (-> this defense) 'iron) - ) - ) - (else - (when (= (-> this look) 'iron) - (set! (-> this look) 'wood) - (set! (-> this defense) 'wood) - ) - ) - ) - (none) - ) + (set! (-> this defense) 'iron))) + (else (when (= (-> this look) 'iron) (set! (-> this look) 'wood) (set! (-> this defense) 'wood)))) + (none)) (defmethod art-init ((this crate)) (case (-> this look) (('iron) (set! (-> this root root-prim prim-core offense) (collide-offense normal-attack)) - (initialize-skeleton this *crate-iron-sg* '()) - ) + (initialize-skeleton this *crate-iron-sg* '())) (('steel) (set! (-> this root root-prim prim-core offense) (collide-offense indestructible)) - (initialize-skeleton this *crate-steel-sg* '()) - ) + (initialize-skeleton this *crate-steel-sg* '())) (('darkeco) (when (= (-> this fact pickup-type) (pickup-type eco-pill-random)) (set! (-> this fact pickup-type) (pickup-type none)) - (set! (-> this fact pickup-amount) 0.0) - ) + (set! (-> this fact pickup-amount) 0.0)) (initialize-skeleton this *crate-darkeco-sg* '()) (set-vector! (-> this draw color-mult) 0.8 0.8 0.8 1.0) - (set-vector! (-> this draw color-emissive) 0.2 0.2 0.2 1.0) - ) - (('barrel) - (initialize-skeleton this *crate-barrel-sg* '()) - ) + (set-vector! (-> this draw color-emissive) 0.2 0.2 0.2 1.0)) + (('barrel) (initialize-skeleton this *crate-barrel-sg* '())) (('bucket) (when (= (-> this fact pickup-type) (pickup-type eco-pill-random)) (set! (-> this fact pickup-type) (pickup-type none)) - (set! (-> this fact pickup-amount) 0.0) - ) - (initialize-skeleton this *crate-bucket-sg* '()) - ) - (('none) - (initialize-skeleton this *crate-wood-sg* '()) - (logior! (-> this draw status) (draw-status hidden)) - ) - (else - (initialize-skeleton this *crate-wood-sg* '()) - ) - ) + (set! (-> this fact pickup-amount) 0.0)) + (initialize-skeleton this *crate-bucket-sg* '())) + (('none) (initialize-skeleton this *crate-wood-sg* '()) (logior! (-> this draw status) (draw-status hidden))) + (else (initialize-skeleton this *crate-wood-sg* '()))) (cond ((logtest? (fact-options indestructible) (-> this fact options)) - (set! (-> this root root-prim prim-core offense) (collide-offense indestructible)) - ) + (set! (-> this root root-prim prim-core offense) (collide-offense indestructible))) ((logtest? (-> this fact options) (fact-options strong-attack)) - (set! (-> this root root-prim prim-core offense) (collide-offense strong-attack)) - ) + (set! (-> this root root-prim prim-core offense) (collide-offense strong-attack))) ((logtest? (-> this fact options) (fact-options normal-attack)) - (set! (-> this root root-prim prim-core offense) (collide-offense normal-attack)) - ) + (set! (-> this root root-prim prim-core offense) (collide-offense normal-attack))) ((logtest? (-> this fact options) (fact-options touch)) - (set! (-> this root root-prim prim-core offense) (collide-offense touch)) - ) - ) + (set! (-> this root root-prim prim-core offense) (collide-offense touch)))) (set! (-> this base quad) (-> this root trans quad)) (crate-post) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) - this - ) + this) (defmethod params-set! ((this crate) (arg0 symbol) (arg1 symbol)) - (if arg0 - (set! (-> this look) arg0) - ) - (if arg1 - (set! (-> this defense) arg1) - ) - (none) - ) + (if arg0 (set! (-> this look) arg0)) + (if arg1 (set! (-> this defense) arg1)) + (none)) (defmethod check-dead ((this crate)) - (if (>= (-> this entity extra perm user-int8 0) 1) - (go (method-of-object this die) #t 0) - ) + (if (>= (-> this entity extra perm user-int8 0) 1) (go (method-of-object this die) #t 0)) 0 (go (method-of-object this wait)) 0 - (none) - ) + (none)) (defmethod smush-update! ((this crate)) (let ((f0-0 (update! (-> this smush)))) (set! (-> this root scale x) (+ 1.0 (* -0.5 f0-0))) (set! (-> this root scale y) (+ 1.0 f0-0)) - (set! (-> this root scale z) (+ 1.0 (* -0.5 f0-0))) - ) + (set! (-> this root scale z) (+ 1.0 (* -0.5 f0-0)))) 0 - (none) - ) - -(deftype barrel (crate) - () - ) + (none)) +(deftype barrel (crate) ()) (defmethod params-init ((this barrel) (arg0 entity)) - (let ((t9-0 (method-of-type crate params-init))) - (t9-0 this arg0) - ) + (let ((t9-0 (method-of-type crate params-init))) (t9-0 this arg0)) (set! (-> this look) 'barrel) - (none) - ) - -(deftype bucket (crate) - () - ) + (none)) +(deftype bucket (crate) ()) (defmethod params-init ((this bucket) (arg0 entity)) - (let ((t9-0 (method-of-type crate params-init))) - (t9-0 this arg0) - ) + (let ((t9-0 (method-of-type crate params-init))) (t9-0 this arg0)) (set! (-> this look) 'bucket) - (none) - ) + (none)) (defpartgroup group-buzzer-crate :id 74 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 302)) - ) + :parts ((sp-item 302))) (defpart 302 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) - -(deftype crate-buzzer (crate) - () - ) - + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) + +(deftype crate-buzzer (crate) ()) (defmethod art-init ((this crate-buzzer)) - (let ((t9-0 (method-of-type crate art-init))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type crate art-init))) (t9-0 this)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 74) this)) (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "buzzer" :pitch-mod -762 :fo-max 40) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "buzzer" :pitch-mod -762 :fo-max 40) (-> this root trans))) (set! (-> this victory-anim) (fuel-cell-pick-anim this)) - (the-as crate this) - ) + (the-as crate this)) (defstate wait (crate-buzzer) :virtual #t - :trans (behavior () - (when (and (and *target* (>= 327680.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (time-elapsed? (-> self state-time) (seconds 1.5)) - (rand-vu-percent? 0.03) - ) - (spawn (-> self part) (-> self root trans)) - (activate! (-> self smush) 0.2 90 150 1.0 1.0) - (logclear! (-> self mask) (process-mask sleep-code)) - ) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (if (and *target* (>= (-> *target* fact buzzer) 6.0)) - (spool-push *art-control* (-> self victory-anim name) 0 self -99.0) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (suspend) - (update-transforms! (-> self root)) - (loop + :trans + (behavior () + (when (and (and *target* (>= 327680.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (seconds 1.5)) + (rand-vu-percent? 0.03)) + (spawn (-> self part) (-> self root trans)) + (activate! (-> self smush) 0.2 90 150 1.0 1.0) + (logclear! (-> self mask) (process-mask sleep-code))) + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (if (and *target* (>= (-> *target* fact buzzer) 6.0)) (spool-push *art-control* (-> self victory-anim name) 0 self -99.0))) + :code + (behavior () (set-time! (-> self state-time)) - (ja-post) - (logior! (-> self mask) (process-mask sleep-code)) (suspend) - (let ((f30-0 57001.605)) - (sound-play "crate-jump") - (while (or (!= (-> self smush amp) 0.0) (!= f30-0 0.0)) - (+! f30-0 (* -245760.0 (seconds-per-frame))) - (+! (-> self root trans y) (* f30-0 (seconds-per-frame))) - (when (< (-> self root trans y) (-> self base y)) - (set! (-> self root trans y) (-> self base y)) - (set! f30-0 (* -0.5 f30-0)) - (if (< (fabs f30-0) 16384.0) - (set! f30-0 0.0) - ) - ) - (crate-post) - (ja-post) - (suspend) - ) - ) - (set! (-> self root trans y) (-> self base y)) - ) - ) - :post #f - ) + (update-transforms! (-> self root)) + (loop + (set-time! (-> self state-time)) + (ja-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + (let ((f30-0 57001.605)) + (sound-play "crate-jump") + (while (or (!= (-> self smush amp) 0.0) (!= f30-0 0.0)) + (+! f30-0 (* -245760.0 (seconds-per-frame))) + (+! (-> self root trans y) (* f30-0 (seconds-per-frame))) + (when (< (-> self root trans y) (-> self base y)) + (set! (-> self root trans y) (-> self base y)) + (set! f30-0 (* -0.5 f30-0)) + (if (< (fabs f30-0) 16384.0) (set! f30-0 0.0))) + (crate-post) + (ja-post) + (suspend))) + (set! (-> self root trans y) (-> self base y)))) + :post #f) (defstate bounce-on (crate-buzzer) :virtual #t - :code (behavior () - (while (!= (-> self smush amp) 0.0) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - (go-virtual wait) - ) - ) + :code + (behavior () + (while (!= (-> self smush amp) 0.0) + (spawn (-> self part) (-> self root trans)) + (suspend)) + (go-virtual wait))) (deftype pickup-spawner (crate) - ((blocker entity-actor) - ) - ) - + ((blocker entity-actor))) (defmethod params-init ((this pickup-spawner) (arg0 entity)) - (let ((t9-0 (method-of-type crate params-init))) - (t9-0 this arg0) - ) + (let ((t9-0 (method-of-type crate params-init))) (t9-0 this arg0)) (set! (-> this look) 'none) (set! (-> this blocker) #f) (if (logtest? (-> this fact options) (fact-options vent-blocked)) - (set! (-> this blocker) (entity-actor-lookup (-> this entity) 'alt-actor 0)) - ) - (none) - ) + (set! (-> this blocker) (entity-actor-lookup (-> this entity) 'alt-actor 0))) + (none)) (defmethod check-dead ((this pickup-spawner)) (go (method-of-object this wait)) 0 - (none) - ) + (none)) (defstate wait (pickup-spawner) :virtual #t - :code (behavior () - (loop - (if (or (not (-> self blocker)) (logtest? (-> self blocker extra perm status) (entity-perm-status complete))) - (go-virtual die #t 0) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (if (or (not (-> self blocker)) (logtest? (-> self blocker extra perm status) (entity-perm-status complete))) + (go-virtual die #t 0)) + (suspend)))) diff --git a/goal_src/jak1/engine/common-obs/dark-eco-pool.gc b/goal_src/jak1/engine/common-obs/dark-eco-pool.gc index 3dffa441cd..acff3113c9 100644 --- a/goal_src/jak1/engine/common-obs/dark-eco-pool.gc +++ b/goal_src/jak1/engine/common-obs/dark-eco-pool.gc @@ -1,116 +1,111 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/water-anim.gc") -;; name: dark-eco-pool.gc -;; name in dgo: dark-eco-pool -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS -(deftype dark-eco-pool (water-anim) - () - ) - +(deftype dark-eco-pool (water-anim) ()) -(define ripple-for-misty-dark-eco-pool (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 3.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 0.5) - (new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 2.0) - (new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 2.0) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-misty-dark-eco-pool + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 3.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 0.5) + (new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 2.0) + (new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 2.0) + (new 'static 'ripple-wave)))) (define ripple-for-maincave-dark-eco-pool - (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 8.57 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 14.0 :xdiv 1 :speed 1.0) - (new 'static 'ripple-wave :scale 5.25 :xdiv -1 :zdiv 1 :speed 4.0) - (new 'static 'ripple-wave :scale 0.7 :xdiv 5 :zdiv 3 :speed 2.0) - (new 'static 'ripple-wave) - ) - ) - ) + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 8.57 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 14.0 :xdiv 1 :speed 1.0) + (new 'static 'ripple-wave :scale 5.25 :xdiv -1 :zdiv 1 :speed 4.0) + (new 'static 'ripple-wave :scale 0.7 :xdiv 5 :zdiv 3 :speed 2.0) + (new 'static 'ripple-wave)))) (define ripple-for-finalboss-dark-eco-pool - (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 25.0 :xdiv 2 :speed -2.0) - (new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 3.0) - (new 'static 'ripple-wave :scale 4.0 :xdiv 5 :zdiv 3 :speed 4.0) - (new 'static 'ripple-wave) - ) - ) - ) + (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 25.0 :xdiv 2 :speed -2.0) + (new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 3.0) + (new 'static 'ripple-wave :scale 4.0 :xdiv 5 :zdiv 3 :speed 4.0) + (new 'static 'ripple-wave)))) -(define ripple-for-dark-eco-pool (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 3.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.0) - (new 'static 'ripple-wave :scale 15.0 :xdiv -1 :zdiv 1 :speed 4.0) - (new 'static 'ripple-wave :scale 2.0 :xdiv 5 :zdiv 3 :speed 2.0) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-dark-eco-pool + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 3.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.0) + (new 'static 'ripple-wave :scale 15.0 :xdiv -1 :zdiv 1 :speed 4.0) + (new 'static 'ripple-wave :scale 2.0 :xdiv 5 :zdiv 3 :speed 2.0) + (new 'static 'ripple-wave)))) (define ripple-for-sunken-dark-eco-helix-room - (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 8.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 15.0 :xdiv 1 :speed 1.0) - (new 'static 'ripple-wave :scale 5.625 :xdiv -1 :zdiv 1 :speed 4.0) - (new 'static 'ripple-wave :scale 0.75 :xdiv 5 :zdiv 3 :speed 2.0) - (new 'static 'ripple-wave) - ) - ) - ) + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 8.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 15.0 :xdiv 1 :speed 1.0) + (new 'static 'ripple-wave :scale 5.625 :xdiv -1 :zdiv 1 :speed 4.0) + (new 'static 'ripple-wave :scale 0.75 :xdiv 5 :zdiv 3 :speed 2.0) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-25 ((this dark-eco-pool)) - (let ((t9-0 (method-of-type water-anim water-vol-method-25))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-25))) (t9-0 this)) (logclear! (-> this flags) (water-flags wt23)) (logior! (-> this flags) (water-flags wt24)) (set! (-> this attack-event) - (the-as symbol ((the-as - (function res-lump symbol symbol float structure (pointer res-tag) pointer object) - (method-of-type res-lump get-property-struct) - ) - (-> this entity) - 'attack-event - 'interp - -1000000000.0 - 'dark-eco-pool - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (none) - ) + (the-as symbol + ((the-as (function res-lump symbol symbol float structure (pointer res-tag) pointer object) + (method-of-type res-lump get-property-struct)) + (-> this entity) + 'attack-event + 'interp + -1000000000.0 + 'dark-eco-pool + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (none)) (defmethod water-vol-method-22 ((this dark-eco-pool)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((gp-0 (new 'process 'ripple-control))) (set! (-> this draw ripple) gp-0) (set! (-> gp-0 global-scale) 3072.0) @@ -119,53 +114,39 @@ (set! (-> gp-0 waveform) ripple-for-dark-eco-pool) (set! (-> gp-0 query) (new 'process 'ripple-merc-query 100)) (case (-> this look) - ((32) - (set! (-> gp-0 waveform) ripple-for-misty-dark-eco-pool) - ) - ((15 16 17 18 19 20) - (set! (-> gp-0 waveform) ripple-for-maincave-dark-eco-pool) - ) - ((40) - (set! (-> gp-0 waveform) ripple-for-sunken-dark-eco-helix-room) - ) - ((41) - (set! (-> gp-0 waveform) ripple-for-finalboss-dark-eco-pool) - ) - ) - ) - (none) - ) + ((32) (set! (-> gp-0 waveform) ripple-for-misty-dark-eco-pool)) + ((15 16 17 18 19 20) (set! (-> gp-0 waveform) ripple-for-maincave-dark-eco-pool)) + ((40) (set! (-> gp-0 waveform) ripple-for-sunken-dark-eco-helix-room)) + ((41) (set! (-> gp-0 waveform) ripple-for-finalboss-dark-eco-pool)))) + (none)) (defpartgroup group-dark-eco-nasty :id 444 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2020 :fade-after (meters 50))) - ) + :parts ((sp-item 2020 :fade-after (meters 50)))) (defpart 2020 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 1) (meters 4)) - (:scale-y (meters 0.25)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 96.0 32.0) - (:scalevel-x (meters 0.1875)) - (:scalevel-y (meters -0.001875)) - (:fade-a -3.2) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2021) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 1) (meters 4)) + (:scale-y (meters 0.25)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 96.0 32.0) + (:scalevel-x (meters 0.1875)) + (:scalevel-y (meters -0.001875)) + (:fade-a -3.2) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2021))) (defpart 2021 - :init-specs ((:r 255.0) (:g 128.0 128.0) (:b 0.0) (:fade-a -1.28)) - ) + :init-specs ((:r 255.0) (:g 128.0 128.0) (:b 0.0) (:fade-a -1.28))) (defpartgroup group-dark-eco-pool-nasty :id 445 @@ -173,211 +154,189 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2056 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017)) - (sp-item 2057 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 2052) - (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) - (sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) - (sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) - (sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) - (sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2058 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 2054) - (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) - (sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) - (sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) - (sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) - (sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - ) - ) + :parts + ((sp-item 2056 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017)) + (sp-item 2057 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 2052) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2052 :flags (start-dead launch-asap) :binding 2053) + (sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2058 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 2054) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2054 :flags (start-dead launch-asap) :binding 2055) + (sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)))) (defpart 2056 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0) - (:fade-a -1.8285716) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0) + (:fade-a -1.8285716) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2057 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 6.0) - (:y (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:accel-y (meters -0.00083333335)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 6.0) + (:y (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:accel-y (meters -0.00083333335)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2052 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.3) (meters 0.3)) - (:scale-x (meters 0.4) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters -0.000909091)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.26666668) - (:fade-a -0.19393939) - (:timer (seconds 0.2) (seconds 0.597)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3) (meters 0.3)) + (:scale-x (meters 0.4) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters -0.000909091)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.26666668) + (:fade-a -0.19393939) + (:timer (seconds 0.2) (seconds 0.597)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2053 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.4) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 32.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0006190476)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.01904762) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.797)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.4) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 32.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.797)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpart 2058 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 6.0) - (:y (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:accel-y (meters -0.00083333335)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 6.0) + (:y (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:accel-y (meters -0.00083333335)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2054 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.3) (meters 0.3)) - (:scale-x (meters 0.4) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0 32.0) - (:g 0.0 16.0) - (:b 192.0 64.0) - (:a 64.0 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters -0.000909091)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.26666668) - (:fade-a -0.19393939) - (:timer (seconds 0.2) (seconds 0.597)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3) (meters 0.3)) + (:scale-x (meters 0.4) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0 32.0) + (:g 0.0 16.0) + (:b 192.0 64.0) + (:a 64.0 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters -0.000909091)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.26666668) + (:fade-a -0.19393939) + (:timer (seconds 0.2) (seconds 0.597)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2055 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.4) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 16.0 32.0) - (:g 0.0 16.0) - (:b 192.0 64.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0006190476)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.01904762) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.797)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.4) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 16.0 32.0) + (:g 0.0 16.0) + (:b 192.0 64.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.797)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defstate water-vol-idle (dark-eco-pool) :virtual #t - :trans (behavior () - (let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans))) - (if t9-0 - (t9-0) - ) - ) - (let* ((gp-0 (-> self draw ripple)) - (f0-1 (the float (logand (current-time) #xffff))) - (f0-3 (cos (* 5.0 f0-1))) - (f30-0 (* f0-3 f0-3)) - ) - (let ((s5-0 (-> self draw ripple query))) - (set! (-> self draw ripple send-query) #t) - (set! (-> s5-0 start-vertex) (rand-vu-int-range 0 255)) - (set! (-> s5-0 vertex-skip) 256) - (when (zero? (rand-vu-int-range 0 15)) - (when (and (nonzero? (-> s5-0 vertex-count)) (< #x32000 (memory-free *nk-dead-pool*))) - (let ((s3-0 (rand-vu-int-range 0 (+ (-> s5-0 vertex-count) -1)))) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 445) - -1 - #f - #f - #f - (-> s5-0 data s3-0) - :to *entity-pool* - ) - ) - ) - ) - ) - (case (-> self look) - ((32) - (set! (-> gp-0 global-scale) (* 4096.0 (* 1.5 (+ 1.0 f30-0)))) - (set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0))) - ) - (else - (set! (-> gp-0 global-scale) (* 4096.0 (* 3.0 (+ 1.0 f30-0)))) - (set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0))) - ) - ) - ) - ) - ) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans))) (if t9-0 (t9-0))) + (let* ((gp-0 (-> self draw ripple)) + (f0-1 (the float (logand (current-time) #xffff))) + (f0-3 (cos (* 5.0 f0-1))) + (f30-0 (* f0-3 f0-3))) + (let ((s5-0 (-> self draw ripple query))) + (set! (-> self draw ripple send-query) #t) + (set! (-> s5-0 start-vertex) (rand-vu-int-range 0 255)) + (set! (-> s5-0 vertex-skip) 256) + (when (zero? (rand-vu-int-range 0 15)) + (when (and (nonzero? (-> s5-0 vertex-count)) (< #x32000 (memory-free *nk-dead-pool*))) + (let ((s3-0 (rand-vu-int-range 0 (+ (-> s5-0 vertex-count) -1)))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 445) + -1 + #f + #f + #f + (-> s5-0 data s3-0) + :to + *entity-pool*))))) + (case (-> self look) + ((32) + (set! (-> gp-0 global-scale) (* 4096.0 (* 1.5 (+ 1.0 f30-0)))) + (set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0)))) + (else + (set! (-> gp-0 global-scale) (* 4096.0 (* 3.0 (+ 1.0 f30-0)))) + (set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0)))))))) diff --git a/goal_src/jak1/engine/common-obs/generic-obs-h.gc b/goal_src/jak1/engine/common-obs/generic-obs-h.gc index 003e344347..2f46de030b 100644 --- a/goal_src/jak1/engine/common-obs/generic-obs-h.gc +++ b/goal_src/jak1/engine/common-obs/generic-obs-h.gc @@ -1,32 +1,45 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/game-h.gc") - -;; name: generic-obs-h.gc -;; name in dgo: generic-obs-h -;; dgos: GAME, ENGINE - (define-extern mistycam-spawn (function none)) + (define-extern beachcam-spawn (function none)) (declare-type camera-tracker process) + (define-extern process-grab? (function process symbol :behavior camera-tracker)) + (define-extern process-release? (function process symbol :behavior process)) (define-extern fuel-cell type) -(define-extern birth-pickup-at-point (function vector pickup-type float symbol process-tree fact-info (pointer process) :behavior process)) +(define-extern birth-pickup-at-point + (function vector pickup-type float symbol process-tree fact-info (pointer process) :behavior process)) (declare-type collide-shape trsqv) + (declare-type collide-shape-moving collide-shape) + (declare-type sparticle-launch-group basic) + (declare-type part-tracker process) + (declare-type collide-prim-core structure) -(define-extern part-tracker-init (function sparticle-launch-group time-frame (function part-tracker none) (pointer process-drawable) process collide-prim-core none :behavior part-tracker)) + +(define-extern part-tracker-init + (function sparticle-launch-group + time-frame + (function part-tracker none) + (pointer process-drawable) + process + collide-prim-core + none + :behavior + part-tracker)) (declare-type touch-tracker process-drawable) + (define-extern touch-tracker-init (function vector float time-frame none :behavior touch-tracker)) (define-extern eco-blue-glow (function vector none)) @@ -40,163 +53,132 @@ ;; A manipy is a way to draw and move something. More complicated objects that want to draw multiple ;; things may create a child manipy and then send it commands. (deftype manipy (process-drawable) - ((new-trans-hook (function none)) - (cur-trans-hook (function none)) - (cur-event-hook (function none)) - (new-joint-anim art-joint-anim) - (new-joint-anim-blend uint64) - (anim-mode symbol) - (cur-grab-handle handle) - (cur-target-handle handle) - (old-grab-pos vector :inline) - (joint joint-mod 4) - (new-post-hook (function none)) - (cur-post-hook (function none)) - (clone-copy-trans symbol) - (shadow-backup basic) - (draw? symbol) - ) + ((new-trans-hook (function none)) + (cur-trans-hook (function none)) + (cur-event-hook (function none)) + (new-joint-anim art-joint-anim) + (new-joint-anim-blend uint64) + (anim-mode symbol) + (cur-grab-handle handle) + (cur-target-handle handle) + (old-grab-pos vector :inline) + (joint joint-mod 4) + (new-post-hook (function none)) + (cur-post-hook (function none)) + (clone-copy-trans symbol) + (shadow-backup basic) + (draw? symbol)) (:states - manipy-idle - ) - ) - + manipy-idle)) (deftype part-spawner (process-drawable) - ((mode (pointer sparticle-launch-group)) - (enable symbol) - (radius meters) - (world-sphere sphere :inline) - ) + ((mode (pointer sparticle-launch-group)) + (enable symbol) + (radius meters) + (world-sphere sphere :inline)) (:methods - (is-visible? (_type_) symbol) - ) + (is-visible? (_type_) symbol)) (:states - part-spawner-active - ) - ) + part-spawner-active)) ;; a part-tracker will spawn particles, then linger for a bit, and then finally die. ;; a more complicated object can use this to manage particles that do something interesting (like follow you) (deftype part-tracker (process) - ((root trsqv) - (part sparticle-launch-control) - (target handle) - (callback (function part-tracker vector)) - (linger-callback (function part-tracker vector)) - (duration time-frame) - (linger-duration time-frame) - (start-time time-frame) - (offset vector :inline) - (userdata uint64) - (user-time time-frame 2) - (user-vector vector 2 :inline) - (user-handle uint32 2) - ) + ((root trsqv) + (part sparticle-launch-control) + (target handle) + (callback (function part-tracker vector)) + (linger-callback (function part-tracker vector)) + (duration time-frame) + (linger-duration time-frame) + (start-time time-frame) + (offset vector :inline) + (userdata uint64) + (user-time time-frame 2) + (user-vector vector 2 :inline) + (user-handle uint32 2)) (:states - part-tracker-process - ) - ) + part-tracker-process)) ;; a camera-tracker can control the camera. (deftype camera-tracker (process) - ((grab-target handle :offset 120) - (grab-event symbol) - (release-event symbol) - (old-global-mask process-mask) - (old-self-mask process-mask) - (old-parent-mask process-mask) - (look-at-target handle) - (pov-target handle) - (work-process handle) - (anim-process handle) - (start-time time-frame) - (callback basic) - (userdata basic) - (message basic) - (border-value basic) - (mask-to-clear process-mask) - (script pair) - (script-line pair) - (script-func (function none)) - ) + ((grab-target handle :offset 120) + (grab-event symbol) + (release-event symbol) + (old-global-mask process-mask) + (old-self-mask process-mask) + (old-parent-mask process-mask) + (look-at-target handle) + (pov-target handle) + (work-process handle) + (anim-process handle) + (start-time time-frame) + (callback basic) + (userdata basic) + (message basic) + (border-value basic) + (mask-to-clear process-mask) + (script pair) + (script-line pair) + (script-func (function none))) (:methods - (eval (_type_ pair) process) - ) + (eval (_type_ pair) process)) (:states - camera-tracker-process - ) - ) + camera-tracker-process)) ;; a touch tracker waits to be touched, then calls some callback function. (deftype touch-tracker (process-drawable) - ((root collide-shape-moving :override) - (duration time-frame) - (target handle) - (event symbol) - (run-function (function object)) - (callback (function touch-tracker none)) - (event-mode basic) - ) + ((root collide-shape-moving :override) + (duration time-frame) + (target handle) + (event symbol) + (run-function (function object)) + (callback (function touch-tracker none)) + (event-mode basic)) (:states - touch-tracker-idle - ) - ) + touch-tracker-idle)) ;; the classic pole (deftype swingpole (process) - ((root trsq) - (dir vector :inline) - (range meters) - (edge-length meters) - ) + ((root trsq) + (dir vector :inline) + (range meters) + (edge-length meters)) (:states - swingpole-active - swingpole-stance - ) - ) + swingpole-active + swingpole-stance)) ;; do you want to fish? (deftype gui-query (structure) - ((x-position int32) - (y-position int32) - (message string) - (decision symbol) - (only-allow-cancel symbol) - (no-msg string) - (message-space int32) - ) + ((x-position int32) + (y-position int32) + (message string) + (decision symbol) + (only-allow-cancel symbol) + (no-msg string) + (message-space int32)) :pack-me (:methods - (init! (_type_ string int int int symbol string) none) - (get-response (_type_) symbol) - ) - ) + (init! (_type_ string int int int symbol string) none) + (get-response (_type_) symbol))) ;; control the camera from something else (an animation) (deftype othercam (process) - ((hand handle) - (old-global-mask process-mask) - (mask-to-clear process-mask) - (cam-joint-index int32) - (old-pos vector :inline) - (old-mat-z vector :inline) - (had-valid-frame basic) - (border-value basic) - (die? symbol) - (survive-anim-end? symbol) - (spooling? symbol) - ) + ((hand handle) + (old-global-mask process-mask) + (mask-to-clear process-mask) + (cam-joint-index int32) + (old-pos vector :inline) + (old-mat-z vector :inline) + (had-valid-frame basic) + (border-value basic) + (die? symbol) + (survive-anim-end? symbol) + (spooling? symbol)) (:states - othercam-running - ) - ) - + othercam-running)) ;; don't draw it! I guess used to disable things during development. -(deftype process-hidden (process) - () +(deftype process-hidden (process) () (:state-methods - die - ) - ) + die)) diff --git a/goal_src/jak1/engine/common-obs/generic-obs.gc b/goal_src/jak1/engine/common-obs/generic-obs.gc index b39ed7ccc8..4069830869 100644 --- a/goal_src/jak1/engine/common-obs/generic-obs.gc +++ b/goal_src/jak1/engine/common-obs/generic-obs.gc @@ -1,16 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/process-drawable.gc") (require "engine/nav/navigate-h.gc") (require "pc/util/pc-anim-util.gc") (require "engine/level/level.gc") (require "engine/camera/camera.gc") -;; name: generic-obs.gc -;; name in dgo: generic-obs -;; dgos: GAME, ENGINE ;; note: changed for high fps (define-extern convert-to-hud-object (function process-drawable hud none :behavior process-drawable)) @@ -24,126 +20,84 @@ (define-extern beach-part-grotto-1 (state beach-part)) (defmacro manipy-spawn (trans entity skel arg &key (from *default-dead-pool*) &key (to *default-pool*) &key (name #f) &key (stack-size #x4000) &key (stack *scratch-memory-top*)) - `(process-spawn manipy :init manipy-init ,trans ,entity ,skel ,arg :from ,from :to ,to :name ,name :stack-size ,stack-size :stack ,stack) - ) + `(process-spawn manipy + :init + manipy-init + ,trans + ,entity + ,skel + ,arg + :from ,from + :to ,to + :name ,name + :stack-size ,stack-size + :stack ,stack)) ;; DECOMP BEGINS (defbehavior clone-anim-once process-drawable ((arg0 handle) (arg1 int) (arg2 symbol) (arg3 string)) (logclear! (-> self skel status) (janim-status spool)) (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)) - ) + (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 - ) - ) + ((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) - ) - ) - ) + (a0-7 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) collide-shape)) (the-as collide-shape s4-1)))) (if a0-7 - (move-to-point! 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)) - ) + (move-to-point! 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) (janim-status spool)) - (logior! (-> self skel status) (janim-status spool)) - ) + (logior! (-> self skel status) (janim-status spool))) (logclear! (-> self draw status) (draw-status hidden no-anim)) - (if (not (-> self skel root-channel 0 frame-group)) - (logior! (-> self draw status) (draw-status no-anim)) - ) + (if (not (-> self skel root-channel 0 frame-group)) (logior! (-> self draw status) (draw-status no-anim))) (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 no-anim)) - ) - ) + (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 no-anim)))) (do-joint-math! self) - (let ((a0-22 (-> self skel effect))) - (if a0-22 - (effect-control-method-9 a0-22) - ) - ) - (if (logtest? (-> self skel status) (janim-status blerc blerc-done)) - (merc-blend-shape self) - ) - (if (logtest? (-> self skel status) (janim-status eye-done eye)) - (merc-eye-anim self) - ) - ) - (else - (logior! (-> self draw status) (draw-status hidden)) - (ja-post) - ) - ) - ) - (if (>= arg1 0) - (vector<-cspace! (-> self draw origin) (-> self node-list data arg1)) - ) + (let ((a0-22 (-> self skel effect))) (if a0-22 (effect-control-method-9 a0-22))) + (if (logtest? (-> self skel status) (janim-status blerc blerc-done)) (merc-blend-shape self)) + (if (logtest? (-> self skel status) (janim-status eye-done eye)) (merc-eye-anim self))) + (else (logior! (-> self draw status) (draw-status hidden)) (ja-post)))) + (if (>= arg1 0) (vector<-cspace! (-> self draw origin) (-> self node-list data arg1))) 0 - (none) - ) + (none)) (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) - ) + (suspend)) (logclear! (-> self skel status) (janim-status spool)) 0 - (none) - ) + (none)) (defstate swingpole-stance (swingpole) - :code (behavior () - (loop - (when (and *target* - (< (vector-vector-distance (-> self root trans) (-> *target* control unknown-vector90)) (-> self range)) - (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-possible)) - (< (-> *target* control unknown-vector90 y) (+ (-> self root trans y) (* 0.5 (-> self range)))) - ) - (if (send-event *target* 'pole-grab self) - (go swingpole-active) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (when (and *target* + (< (vector-vector-distance (-> self root trans) (-> *target* control unknown-vector90)) (-> self range)) + (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-possible)) + (< (-> *target* control unknown-vector90 y) (+ (-> self root trans y) (* 0.5 (-> self range))))) + (if (send-event *target* 'pole-grab self) (go swingpole-active))) + (suspend)))) (defstate swingpole-active (swingpole) - :code (behavior () - (suspend) - (while (and *target* (= (handle->process (-> *target* control unknown-handle10)) self)) + :code + (behavior () (suspend) - ) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 0.5)) - (suspend) - ) - ) - (go swingpole-stance) - ) - ) + (while (and *target* (= (handle->process (-> *target* control unknown-handle10)) self)) + (suspend)) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 0.5)) (suspend))) + (go swingpole-stance))) (defmethod init-from-entity! ((this swingpole) (arg0 entity-actor)) "Copy defaults from the entity." @@ -159,318 +113,178 @@ (set! (-> this range) 12288.0) (set! (-> this edge-length) 8192.0) (go swingpole-stance) - (none) - ) + (none)) (defstate die (process-hidden) :virtual #t - :code nothing - ) + :code nothing) (defmethod init-from-entity! ((this process-hidden) (arg0 entity-actor)) "Copy defaults from the entity." (process-entity-status! this (entity-perm-status dead) #t) (go (method-of-object this die)) - (none) - ) - -(deftype target-start (process-hidden) - () - ) + (none)) +(deftype target-start (process-hidden) ()) -(deftype camera-start (process-hidden) - () - ) - +(deftype camera-start (process-hidden) ()) (defstate manipy-idle (manipy) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('attackable) - (cond - ((-> block param 0) - (set! v0-0 (logior (process-mask attackable) (-> self mask))) - (set! (-> self mask) (the-as process-mask v0-0)) - ) - (else - (set! v0-0 (logclear (-> self mask) (process-mask attackable))) - (set! (-> self mask) (the-as process-mask v0-0)) - ) - ) - v0-0 - ) - (('blend-shape) - (cond - ((-> block param 0) - (set! v0-0 (logior (-> self skel status) (janim-status blerc eye))) - (set! (-> self skel status) (the-as janim-status v0-0)) - ) - (else - (set! v0-0 (logclear (-> self skel status) (janim-status blerc eye))) - (set! (-> self skel status) (the-as janim-status v0-0)) - ) - ) - v0-0 - ) - (('shadow) - (cond - ((-> block param 0) - (set! v0-0 (-> self shadow-backup)) - (set! (-> self draw shadow) (the-as shadow-geo v0-0)) - v0-0 - ) - (else - (set! (-> self draw shadow) #f) - #f - ) - ) - ) - (('trans-hook) - (set! v0-0 (-> block param 0)) - (set! (-> self new-trans-hook) (the-as (function none) v0-0)) - v0-0 - ) - (('post-hook) - (set! v0-0 (-> block param 0)) - (set! (-> self new-post-hook) (the-as (function none) v0-0)) - v0-0 - ) - (('eval) - ((the-as (function manipy none) (-> block param 0)) self) - ) - (('become-hud-object) - (convert-to-hud-object self (the-as hud (-> block param 0))) - ) - (('event-hook) - (set! v0-0 (-> block param 0)) - (set! (-> self cur-event-hook) (the-as (function none) v0-0)) - v0-0 - ) - (('art-joint-anim) - (set! (-> self new-joint-anim) - (the-as - art-joint-anim - (lookup-art (-> self draw art-group) (the-as string (-> block param 0)) art-joint-anim) - ) - ) - (set! v0-0 (-> block param 1)) - (set! (-> self new-joint-anim-blend) (the-as uint v0-0)) - v0-0 - ) - (('anim-mode) - (when (nonzero? (-> self skel)) - (set! (-> self anim-mode) (the-as symbol (-> block param 0))) - (if (= (-> self anim-mode) 'clone-anim) - (ja-post) - ) - (-> self anim-mode) - ) - ) - (('origin-joint-index 'center-joint) - (set! (-> self draw origin-joint-index) (-> block param 0)) - (set! v0-0 (-> block param 0)) - (set! (-> self draw shadow-joint-index) (the-as uint v0-0)) - v0-0 - ) - (('max-vis-dist) - (set! (-> self draw lod-set lod (-> self draw lod-set max-lod) dist) (the-as float (-> block param 0))) - ) - (('grab) - (set! (-> self cur-grab-handle) (process->handle (the-as process (-> block param 0)))) - (let ((v1-30 (handle->process (-> self cur-grab-handle)))) - (when v1-30 - (set! v0-0 (-> self old-grab-pos)) - (set! (-> (the-as vector v0-0) quad) (-> (the-as process-drawable v1-30) root trans quad)) - v0-0 - ) - ) - ) - (('target) - (set! v0-0 (process->handle (the-as process (-> block param 0)))) - (set! (-> self cur-target-handle) (the-as handle v0-0)) - v0-0 - ) - (('trans) - (cond - ((type-type? (-> self root type) collide-shape) - (move-to-point! (the-as collide-shape (-> self root)) (the-as vector (-> block param 0))) - ) - (else - (set! v0-0 (-> self root trans)) - (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> block param 0)) quad)) - v0-0 - ) - ) - ) - (('rot) - (let ((s5-0 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! s5-0 (the-as float (-> block param 0))) - (matrix->quaternion (-> self root quat) s5-0) - ) - ) - (('rot-quat) - (quaternion-copy! (-> self root quat) (the-as quaternion (-> block param 0))) - ) - (('clone-copy-trans) - (set! v0-0 (-> block param 0)) - (set! (-> self clone-copy-trans) (the-as symbol v0-0)) - v0-0 - ) - (('release) - (set! (-> self cur-grab-handle) (the-as handle #f)) - #f - ) - (('draw) - (set! (-> self draw?) (the-as symbol (-> block param 0))) - (cond - ((-> block param 0) - (let ((v1-47 (logtest? (-> self draw status) (draw-status hidden)))) - (logclear! (-> self draw status) (draw-status hidden)) - (when v1-47 - (cond - ((nonzero? (-> self skel)) - (let ((gp-1 (-> self skel status))) - (logior! (-> self skel status) (janim-status inited)) - (set! v0-0 (ja-post)) - (set! (-> self skel status) gp-1) - ) - v0-0 - ) - (else - (ja-post) - ) - ) - ) - ) - ) - (else - (set! v0-0 (logior (-> self draw status) (draw-status hidden))) - (set! (-> self draw status) (the-as draw-status v0-0)) - v0-0 - ) - ) - ) - (('query) - (case (-> block param 0) - (('grab) - (handle->process (-> self cur-grab-handle)) - ) - (('done) - (case (-> self anim-mode) - (('play1 'play) - (>= (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -2))) - ) - ) - ) - ) - ) - (('set-frame-num) - (let ((v1-73 (-> self skel root-channel 0))) - (set! (-> v1-73 num-func) num-func-identity) - (set! (-> v1-73 frame-num) (the-as float (-> block param 0))) - ) - ) - (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 (!= (ja-group) (-> self new-joint-anim)) (!= (-> self anim-mode) 'clone-anim)) - ) - (ja-channel-push! 1 (the-as time-frame (-> self new-joint-anim-blend))) - (ja :group! (-> self new-joint-anim) :num! min) - ) - (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) - (move-by-vector! - (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)) - ) - :code (behavior () - (logclear! (-> self mask) (process-mask heap-shrunk)) - (loop - ((-> self cur-post-hook)) - (if (!= (-> self anim-mode) 'clone-anim) - (ja-post) - ) - (suspend) - (case (-> self anim-mode) - (('loop) - (ja :num! (loop!)) - ) - (('play) - (ja :num! (seek!)) - ) - (('copy-parent) - (ja :num-func num-func-identity - :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 - "" - ) - ) - (do-joint-math! self) - ) - (('clone-anim) - (clone-anim-once - (if (handle->process (-> self cur-target-handle)) - (the-as handle (-> self cur-target-handle)) - (ppointer->handle (-> self parent)) - ) - (the-as int (-> self draw origin-joint-index)) - (-> self clone-copy-trans) - "" - ) - ) - (('still) - ) - (('play1) - (ja :num! (seek!)) - (if (ja-done? 0) - (deactivate self) - ) - ) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('attackable) + (cond + ((-> block param 0) + (set! v0-0 (logior (process-mask attackable) (-> self mask))) + (set! (-> self mask) (the-as process-mask v0-0))) + (else (set! v0-0 (logclear (-> self mask) (process-mask attackable))) (set! (-> self mask) (the-as process-mask v0-0)))) + v0-0) + (('blend-shape) + (cond + ((-> block param 0) + (set! v0-0 (logior (-> self skel status) (janim-status blerc eye))) + (set! (-> self skel status) (the-as janim-status v0-0))) + (else + (set! v0-0 (logclear (-> self skel status) (janim-status blerc eye))) + (set! (-> self skel status) (the-as janim-status v0-0)))) + v0-0) + (('shadow) + (cond + ((-> block param 0) (set! v0-0 (-> self shadow-backup)) (set! (-> self draw shadow) (the-as shadow-geo v0-0)) v0-0) + (else (set! (-> self draw shadow) #f) #f))) + (('trans-hook) (set! v0-0 (-> block param 0)) (set! (-> self new-trans-hook) (the-as (function none) v0-0)) v0-0) + (('post-hook) (set! v0-0 (-> block param 0)) (set! (-> self new-post-hook) (the-as (function none) v0-0)) v0-0) + (('eval) ((the-as (function manipy none) (-> block param 0)) self)) + (('become-hud-object) (convert-to-hud-object self (the-as hud (-> block param 0)))) + (('event-hook) (set! v0-0 (-> block param 0)) (set! (-> self cur-event-hook) (the-as (function none) v0-0)) v0-0) + (('art-joint-anim) + (set! (-> self new-joint-anim) + (the-as art-joint-anim (lookup-art (-> self draw art-group) (the-as string (-> block param 0)) art-joint-anim))) + (set! v0-0 (-> block param 1)) + (set! (-> self new-joint-anim-blend) (the-as uint v0-0)) + v0-0) + (('anim-mode) + (when (nonzero? (-> self skel)) + (set! (-> self anim-mode) (the-as symbol (-> block param 0))) + (if (= (-> self anim-mode) 'clone-anim) (ja-post)) + (-> self anim-mode))) + (('origin-joint-index 'center-joint) + (set! (-> self draw origin-joint-index) (-> block param 0)) + (set! v0-0 (-> block param 0)) + (set! (-> self draw shadow-joint-index) (the-as uint v0-0)) + v0-0) + (('max-vis-dist) (set! (-> self draw lod-set lod (-> self draw lod-set max-lod) dist) (the-as float (-> block param 0)))) + (('grab) + (set! (-> self cur-grab-handle) (process->handle (the-as process (-> block param 0)))) + (let ((v1-30 (handle->process (-> self cur-grab-handle)))) + (when v1-30 + (set! v0-0 (-> self old-grab-pos)) + (set! (-> (the-as vector v0-0) quad) (-> (the-as process-drawable v1-30) root trans quad)) + v0-0))) + (('target) + (set! v0-0 (process->handle (the-as process (-> block param 0)))) + (set! (-> self cur-target-handle) (the-as handle v0-0)) + v0-0) + (('trans) + (cond + ((type-type? (-> self root type) collide-shape) + (move-to-point! (the-as collide-shape (-> self root)) (the-as vector (-> block param 0)))) + (else + (set! v0-0 (-> self root trans)) + (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> block param 0)) quad)) + v0-0))) + (('rot) + (let ((s5-0 (new 'stack-no-clear 'matrix))) + (matrix-rotate-y! s5-0 (the-as float (-> block param 0))) + (matrix->quaternion (-> self root quat) s5-0))) + (('rot-quat) (quaternion-copy! (-> self root quat) (the-as quaternion (-> block param 0)))) + (('clone-copy-trans) (set! v0-0 (-> block param 0)) (set! (-> self clone-copy-trans) (the-as symbol v0-0)) v0-0) + (('release) (set! (-> self cur-grab-handle) (the-as handle #f)) #f) + (('draw) + (set! (-> self draw?) (the-as symbol (-> block param 0))) + (cond + ((-> block param 0) + (let ((v1-47 (logtest? (-> self draw status) (draw-status hidden)))) + (logclear! (-> self draw status) (draw-status hidden)) + (when v1-47 + (cond + ((nonzero? (-> self skel)) + (let ((gp-1 (-> self skel status))) + (logior! (-> self skel status) (janim-status inited)) + (set! v0-0 (ja-post)) + (set! (-> self skel status) gp-1)) + v0-0) + (else (ja-post)))))) + (else + (set! v0-0 (logior (-> self draw status) (draw-status hidden))) + (set! (-> self draw status) (the-as draw-status v0-0)) + v0-0))) + (('query) + (case (-> block param 0) + (('grab) (handle->process (-> self cur-grab-handle))) + (('done) + (case (-> self anim-mode) + (('play1 'play) (>= (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -2)))))))) + (('set-frame-num) + (let ((v1-73 (-> self skel root-channel 0))) + (set! (-> v1-73 num-func) num-func-identity) + (set! (-> v1-73 frame-num) (the-as float (-> block param 0))))) + (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 (!= (ja-group) (-> self new-joint-anim)) (!= (-> self anim-mode) 'clone-anim))) + (ja-channel-push! 1 (the-as time-frame (-> self new-joint-anim-blend))) + (ja :group! (-> self new-joint-anim) :num! min)) + (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) + (move-by-vector! (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))) + :code + (behavior () + (logclear! (-> self mask) (process-mask heap-shrunk)) + (loop + ((-> self cur-post-hook)) + (if (!= (-> self anim-mode) 'clone-anim) (ja-post)) + (suspend) + (case (-> self anim-mode) + (('loop) (ja :num! (loop!))) + (('play) (ja :num! (seek!))) + (('copy-parent) + (ja :num-func + num-func-identity + :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 + "")) + (do-joint-math! self)) + (('clone-anim) + (clone-anim-once (if (handle->process (-> self cur-target-handle)) + (the-as handle (-> self cur-target-handle)) + (ppointer->handle (-> self parent))) + (the-as int (-> self draw origin-joint-index)) + (-> self clone-copy-trans) + "")) + (('still)) + (('play1) (ja :num! (seek!)) (if (ja-done? 0) (deactivate self))))))) (defbehavior manipy-init manipy ((arg0 vector) (arg1 entity-actor) (arg2 skeleton-group) (arg3 vector)) ;; og:preserve-this increased from 128 @@ -482,40 +296,27 @@ (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) - ) + (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-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) - ) - ) + (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) (collide-kind powerup blue-eco-suck)) - (set! (-> s2-0 collide-with) (collide-kind target)) - (set-vector! (-> s2-0 local-sphere) (-> arg3 x) (-> arg3 y) (-> arg3 z) (-> arg3 w)) - (set-root-prim! s4-2 s2-0) - ) - (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)) - ) - ) + (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) (collide-kind powerup blue-eco-suck)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set-vector! (-> s2-0 local-sphere) (-> arg3 x) (-> arg3 y) (-> arg3 z) (-> arg3 w)) + (set-root-prim! s4-2 s2-0)) + (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) - (update-transforms! (the-as collide-shape (-> self root))) - ) + (if (type-type? (-> self root type) collide-shape) (update-transforms! (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) @@ -532,24 +333,16 @@ (set! (-> self anim-mode) 'loop) ;; og:preserve-this (#when PC_PORT - (set! (-> self skel postbind-function) process-drawable-joint-callback-pc)) - ) - (else - (set! (-> self anim-mode) 'still) - ) - ) + (set! (-> self skel postbind-function) process-drawable-joint-callback-pc))) + (else (set! (-> self anim-mode) 'still))) (set! (-> self event-hook) (-> manipy-idle event)) (go manipy-idle) - (none) - ) + (none)) (defmethod deactivate ((this part-tracker)) - (if (nonzero? (-> this part)) - (kill-and-free-particles (-> this part)) - ) + (if (nonzero? (-> this part)) (kill-and-free-particles (-> this part))) ((method-of-type process deactivate) this) - (none) - ) + (none)) (defbehavior part-tracker-notify part-tracker () (let ((gp-0 (new 'stack-no-clear 'event-message-block))) @@ -558,61 +351,35 @@ (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 - ) - ) - ) - ) + (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-time! (-> self start-time)) - (while (not (time-elapsed? (-> self start-time) (-> 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)) - ) - ) - ) - (let ((gp-1 (-> self root trans))) - (if (-> self callback) - ((-> self callback) self) - ) - (spawn (-> self part) gp-1) - ) + :code + (behavior () + (set-time! (-> self start-time)) + (while (not (time-elapsed? (-> self start-time) (-> 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))))) + (let ((gp-1 (-> self root trans))) (if (-> self callback) ((-> self callback) self)) (spawn (-> self part) gp-1)) + (suspend)) + (let ((gp-2 (current-time))) + (until (time-elapsed? gp-2 (-> self linger-duration)) + (if (-> self linger-callback) ((-> self linger-callback) self)) + (suspend))) + (if (-> self linger-callback) ((-> self linger-callback) self)) + (part-tracker-notify) (suspend) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (-> 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 - ) - ) + 0)) (defbehavior part-tracker-init part-tracker ((arg0 sparticle-launch-group) - (arg1 time-frame) - (arg2 (function part-tracker none)) - (arg3 (pointer process-drawable)) - (arg4 process) - (arg5 collide-prim-core) - ) + (arg1 time-frame) + (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)) @@ -621,22 +388,15 @@ (set! (-> self linger-callback) #f) (set! (-> self userdata) (the-as uint arg3)) (set! (-> self target) (process->handle arg4)) - (set! arg1 (cond - ((> arg1 0) - (empty) - arg1 - ) - (else - (the-as time-frame (-> arg0 duration)) - ) - ) - ) + (set! arg1 + (cond + ((> arg1 0) (empty) arg1) + (else (the-as time-frame (-> arg0 duration))))) (set! (-> self duration) (the-as time-frame arg1)) (set! (-> self linger-duration) (the-as time-frame (-> arg0 linger-duration))) (set! (-> self part) (create-launch-control arg0 self)) (go part-tracker-process) - (none) - ) + (none)) ;; ERROR: Failed load: (set! a0-1 (l.wu (+ a0-0 -4))) at op 11 ;; WARN: disable def twice: 68. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. @@ -644,497 +404,254 @@ ;; 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)) - (the-as process (cond - ((null? arg0) - 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 - arg1 - ) - ) - ) - ) - (else - arg1 - ) - ) - ) - ) + (the-as process + (cond + ((null? arg0) 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 arg1)))) + (else arg1)))) (defun command-get-camera ((arg0 object) (arg1 state)) (cond - ((null? arg0) - 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 - arg1 - ) - ) - ) + ((null? arg0) 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 arg1))) (defun command-get-trans ((arg0 object) (arg1 vector)) (cond - ((null? arg0) - arg1 - ) - ((= arg0 'null) - *null-vector* - ) - ((= arg0 'target) - (target-pos 0) - ) + ((null? arg0) 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)) - ) + (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 - arg1 - ) - ) - ) - ) - (else - arg1 - ) - ) - ) + (s4-0 (-> (the-as target s4-0) node-list data v1-4 bone transform vector 3)) + (else arg1)))) + (else arg1))) (defbehavior process-grab? camera-tracker ((arg0 process)) (let ((gp-0 (command-get-process arg0 *target*))) - (the-as symbol (when gp-0 - (if (type-type? (-> self type) camera-tracker) - (set! (-> self grab-target) (process->handle gp-0)) - ) - (send-event gp-0 'change-mode 'grab) - ) - ) - ) - ) + (the-as symbol + (when gp-0 + (if (type-type? (-> self type) camera-tracker) (set! (-> self grab-target) (process->handle gp-0))) + (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 (send-event gp-0 'query 'mode) 'target-grab) - (send-event gp-0 'end-mode) - #t - ) - ) - ) - ) + (the-as symbol (if (and gp-0 (send-event gp-0 'query 'mode) '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 - ) + ((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 - ) - ) - ) - ) + (if arg2 (send-event *camera* 'blend-from-as-fixed)) + #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) - ) - 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)) (defun ja-anim-done? ((arg0 process)) (with-pp (let ((gp-0 (command-get-process arg0 *target*))) - (the-as - symbol - (when gp-0 - (cond - ((type-type? (-> gp-0 type) manipy) - (send-event gp-0 'query 'done) - ) - ((type-type? (-> gp-0 type) process-drawable) - (when (not (logtest? (-> (the-as process-drawable gp-0) skel status) (janim-status done))) - (let ((s5-0 pp)) - (set! pp gp-0) - (let ((v0-1 (the-as object (ja-done? 0)))) - (set! pp s5-0) - v0-1 - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (the-as symbol + (when gp-0 + (cond + ((type-type? (-> gp-0 type) manipy) (send-event gp-0 'query 'done)) + ((type-type? (-> gp-0 type) process-drawable) + (when (not (logtest? (-> (the-as process-drawable gp-0) skel status) (janim-status done))) + (let ((s5-0 pp)) (set! pp gp-0) (let ((v0-1 (the-as object (ja-done? 0)))) (set! pp s5-0) v0-1)))))))))) (defbehavior camera-pov-from camera-tracker ((arg0 pair) (arg1 uint)) (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)) - ) + (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 (lookup-art (-> (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))) - ) - ) - ) - ) - (send-event *camera* 'change-pov gp-0 arg1) - ) - gp-0 - ) - ) + (if v1-11 (set! arg1 (the-as uint (+ (-> v1-11 number) 1))))))) + (send-event *camera* 'change-pov gp-0 arg1)) + gp-0)) (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) - ) - ) - ) + #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)) - ) - gp-0 - ) - ) + (set! (-> self anim-process) (ppointer->handle gp-0))) + gp-0)) ;; ERROR: Failed load: (set! v1-42 (l.wu (+ a0-22 -4))) at op 159 (defmethod eval ((this camera-tracker) (arg0 pair)) (with-pp (let ((gp-0 (the-as object #f))) (cond - ((null? arg0) - ) + ((null? arg0)) ((pair? arg0) (let ((a2-0 (car arg0)) - (s4-0 (cdr arg0)) - ) + (s4-0 (cdr arg0))) (case a2-0 (('print) (set! gp-0 (car s4-0)) - (if (pair? gp-0) - (set! gp-0 (eval this (the-as pair gp-0))) - ) - (format #t "~A MESSAGE (~D): ~A~%" this (current-time) gp-0) - ) + (if (pair? gp-0) (set! gp-0 (eval this (the-as pair gp-0)))) + (format #t "~A MESSAGE (~D): ~A~%" this (current-time) gp-0)) (('while) (let ((s3-0 (car s4-0))) (while (eval this (the-as pair s3-0)) (let* ((s2-0 (cdr s4-0)) - (a1-3 (car s2-0)) - ) + (a1-3 (car s2-0))) (while (not (null? s2-0)) (set! gp-0 (eval this (the-as pair a1-3))) (set! s2-0 (cdr s2-0)) - (set! a1-3 (car s2-0)) - ) - ) - ) - ) - ) + (set! a1-3 (car s2-0))))))) (('until) (let ((s3-1 (car s4-0))) (while (not (eval this (the-as pair s3-1))) (let* ((s2-1 (cdr s4-0)) - (a1-5 (car s2-1)) - ) + (a1-5 (car s2-1))) (while (not (null? s2-1)) (set! gp-0 (eval this (the-as pair a1-5))) (set! s2-1 (cdr s2-1)) - (set! a1-5 (car s2-1)) - ) - ) - ) - ) - ) - (('not) - (set! gp-0 (not (eval this (the-as pair (car s4-0))))) - ) + (set! a1-5 (car s2-1))))))) + (('not) (set! gp-0 (not (eval this (the-as pair (car s4-0)))))) (('wait-for 'wait 'suspend) (let ((s5-1 (command-get-time (car s4-0) 1)) - (s4-1 (current-time)) - ) + (s4-1 (current-time))) (until (time-elapsed? s4-1 s5-1) - (suspend) - ) - ) - ) - (('message?) - (when (= (-> this message) (car s4-0)) - (set! gp-0 (-> this message)) - (set! (-> this message) #f) - ) - ) + (suspend)))) + (('message?) (when (= (-> this message) (car s4-0)) (set! gp-0 (-> this message)) (set! (-> this 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))) - ) + (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)) - ) + (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)) - ) - ) - ) - ) + (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) this)) - ) - ) - ) + (set! gp-0 ((the-as (function camera-tracker symbol) s4-3) this))))) (('work-set!) (set! gp-0 (process->handle (eval this (the-as pair (car s4-0))))) - (set! (-> this 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 (-> this grab-target)))) - ) - (('alive?) - (set! gp-0 (command-get-process (car s4-0) *target*)) - ) + (set! (-> this 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 (-> this 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)) - (logclear! (-> (the-as target gp-0) skel status) (janim-status drawn)) - (logior! (-> (the-as target gp-0) skel status) (janim-status drawn)) - ) - ) - ) + (logclear! (-> (the-as target gp-0) skel status) (janim-status drawn)) + (logior! (-> (the-as target gp-0) skel status) (janim-status drawn))))) (('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)) - ) + (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)) - ) - ) + (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)))) - ) + (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) - ) + (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! (-> this 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) this 'manipy (the-as pointer #x70004000)) - ) - (run-now-in-process s1-1 manipy-init s4-4 #f s2-3 #f) - (-> s1-1 ppointer) - ) - ) - ) + (set! gp-0 + (when s1-1 + (let ((t9-35 (method-of-type manipy activate))) (t9-35 (the-as manipy s1-1) this '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! (-> this 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) - ) - ) - ) - ) - (else - (format 0 "ERROR: camera-tracker requires a pair as a script line, not ~A.~%" arg0) - ) - ) - (the-as process gp-0) - ) - ) - ) + (set! (-> this 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))))) + (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 ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 uint)) - (case message - (('message) - (set! v0-0 (-> block param 0)) - (set! (-> self message) (the-as basic v0-0)) - v0-0 - ) - (('mask) - (set! v0-0 (-> block param 0)) - (set! (-> self mask-to-clear) (the-as process-mask v0-0)) - v0-0 - ) - (('border) - (set! v0-0 (-> block param 0)) - (set! (-> self border-value) (the-as basic v0-0)) - v0-0 - ) - ) - ) - :enter (behavior () - (if (-> self entity) - (set-or-clear-status! (-> self entity) (entity-perm-status bit-3) #t) - ) - (if (not (-> self border-value)) - (add-setting! 'border-mode (-> self border-value) 0.0 0) - ) - (add-setting! 'process-mask 'set 0.0 (-> self mask-to-clear)) - (add-setting! 'movie (process->ppointer self) 0.0 0) - (hide-hud-quick) - ) - :exit (behavior () - (if (-> self entity) - (set-or-clear-status! (-> self entity) (entity-perm-status bit-3) #f) - ) - (send-event *camera* 'clear-entity) - ) - :code (behavior () - (cond - ((-> self script-func) - ((-> self script-func)) - ) - (else - (while (not (null? (-> self script-line))) - (eval self (the-as pair (-> self script-line car))) - (set! (-> self script-line) (the-as pair (-> self script-line cdr))) - ) - ) - ) - (remove-setting! 'process-mask) - (send-event *camera* 'clear-entity) - (suspend) - (suspend) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 uint)) + (case message + (('message) (set! v0-0 (-> block param 0)) (set! (-> self message) (the-as basic v0-0)) v0-0) + (('mask) (set! v0-0 (-> block param 0)) (set! (-> self mask-to-clear) (the-as process-mask v0-0)) v0-0) + (('border) (set! v0-0 (-> block param 0)) (set! (-> self border-value) (the-as basic v0-0)) v0-0))) + :enter + (behavior () + (if (-> self entity) (set-or-clear-status! (-> self entity) (entity-perm-status bit-3) #t)) + (if (not (-> self border-value)) (add-setting! 'border-mode (-> self border-value) 0.0 0)) + (add-setting! 'process-mask 'set 0.0 (-> self mask-to-clear)) + (add-setting! 'movie (process->ppointer self) 0.0 0) + (hide-hud-quick)) + :exit + (behavior () + (if (-> self entity) (set-or-clear-status! (-> self entity) (entity-perm-status bit-3) #f)) + (send-event *camera* 'clear-entity)) + :code + (behavior () + (cond + ((-> self script-func) ((-> self script-func))) + (else + (while (not (null? (-> self script-line))) + (eval self (the-as pair (-> self script-line car))) + (set! (-> self script-line) (the-as pair (-> self script-line cdr)))))) + (remove-setting! 'process-mask) + (send-event *camera* 'clear-entity) + (suspend) + (suspend) + (suspend) + 0)) ;; ERROR: Failed load: (set! a0-3 (l.wu (+ a0-0 -4))) at op 42 (defbehavior camera-tracker-init camera-tracker ((arg0 object)) @@ -1155,98 +672,57 @@ (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 - ) - ) - ) - (if v1-17 - (set! (-> self entity) (-> (the-as process v1-17) entity)) - ) - ) + (v1-17 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) process)) gp-1))) + (if v1-17 (set! (-> self entity) (-> (the-as process v1-17) entity)))) (set! (-> self event-hook) (-> camera-tracker-process event)) - (go camera-tracker-process) - ) + (go camera-tracker-process)) (deftype med-res-level (process-drawable) - ((level symbol) - (part-mode basic) - (index int32) - ) + ((level symbol) + (part-mode basic) + (index int32)) (:states - med-res-level-idle - ) - ) - + med-res-level-idle)) (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) - (loop - (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 hidden)) - (if (nonzero? (-> self skel)) - (ja :num! (loop!)) - ) - ) - ((or (and a0-1 (= (-> a0-1 status) 'active)) (= v1-3 'firecanyon)) - (logior! (-> self draw status) (draw-status hidden)) - ) - ((and (= (-> self level) 'firecanyon) (< (-> (camera-pos) y) 327680.0)) - (logior! (-> self draw status) (draw-status hidden)) - ) - (else - (logclear! (-> self draw status) (draw-status hidden)) - (if (nonzero? (-> self part)) - (spawn (-> self part) (-> self root trans)) - ) - (if (nonzero? (-> self skel)) - (ja :num! (loop!)) - ) - ) - ) - ) - (when (not (logtest? (-> self draw status) (draw-status hidden))) - (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) - ;; og:preserve-this + :code + (behavior () + (local-vars (v1-37 float)) + (rlet ((vf0 :class vf) + (vf16 :class vf) + (vf17 :class vf)) (init-vf0-vector) - ) - ) - ) - :post ja-post - ) + (loop + (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 hidden)) + (if (nonzero? (-> self skel)) (ja :num! (loop!)))) + ((or (and a0-1 (= (-> a0-1 status) 'active)) (= v1-3 'firecanyon)) (logior! (-> self draw status) (draw-status hidden))) + ((and (= (-> self level) 'firecanyon) (< (-> (camera-pos) y) 327680.0)) + (logior! (-> self draw status) (draw-status hidden))) + (else + (logclear! (-> self draw status) (draw-status hidden)) + (if (nonzero? (-> self part)) (spawn (-> self part) (-> self root trans))) + (if (nonzero? (-> self skel)) (ja :num! (loop!)))))) + (when (not (logtest? (-> self draw status) (draw-status hidden))) + (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) + ;; og:preserve-this + (init-vf0-vector)))) + :post ja-post) (define *lev-string* (new 'global 'string 64 (the-as string #f))) @@ -1257,101 +733,55 @@ (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 symbol) :tag-ptr (& sv-16))) - (s2-0 (-> s3-0 0)) - ) + (s2-0 (-> s3-0 0))) (cond - ((not s3-0) - ) - ((part-group-pointer? (the-as pointer s2-0)) - (set! s4-0 (the-as (pointer sparticle-launch-group) (-> s3-0 0))) - ) + ((not s3-0)) + ((part-group-pointer? (the-as pointer s2-0)) (set! s4-0 (the-as (pointer sparticle-launch-group) (-> s3-0 0)))) ((= (-> s2-0 type) string) (set! s4-0 (lookup-part-group-pointer-by-name (the-as string s2-0))) - (if s4-0 - (set! (-> s3-0 0) (the-as symbol s4-0)) - ) - ) + (if s4-0 (set! (-> s3-0 0) (the-as symbol s4-0)))) ((= (-> s2-0 type) symbol) - (let ((a0-7 (symbol->string s2-0))) - (set! s4-0 (lookup-part-group-pointer-by-name a0-7)) - ) - (if s4-0 - (set! (-> s3-0 0) (the-as symbol s4-0)) - ) - ) - ) - ) + (let ((a0-7 (symbol->string s2-0))) (set! s4-0 (lookup-part-group-pointer-by-name a0-7))) + (if s4-0 (set! (-> s3-0 0) (the-as symbol s4-0)))))) (when (the-as object s4-0) (let ((a0-8 (-> s4-0 0))) - (if (and (nonzero? a0-8) (= (-> a0-8 type) sparticle-launch-group)) - (set! (-> this part) (create-launch-control a0-8 this)) - ) - ) - ) - ) + (if (and (nonzero? a0-8) (= (-> a0-8 type) sparticle-launch-group)) (set! (-> this part) (create-launch-control a0-8 this)))))) (process-entity-status! this (entity-perm-status bit-7) #t) (let ((s4-1 (res-lump-struct (-> this entity) 'level structure)) - (s3-1 (res-lump-value (-> this entity) 'index uint128)) - ) + (s3-1 (res-lump-value (-> this entity) 'index uint128))) (when s4-1 (set! (-> this level) (the-as symbol s4-1)) (set! (-> this index) (the-as int s3-1)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) - (format (clear *lev-string*) "med-res-~S~S" s4-1 (if (zero? s3-1) - "" - (* s3-1 8) - ) - ) + (format (clear *lev-string*) "med-res-~S~S" s4-1 (if (zero? s3-1) "" (* s3-1 8))) (initialize-skeleton-by-name this *lev-string* '()) (logior! (-> this draw status) (draw-status do-not-check-distance)) - (if (nonzero? (-> this draw)) - (go med-res-level-idle) - ) - ) - ) - (none) - ) + (if (nonzero? (-> this draw)) (go med-res-level-idle)))) + (none)) (defmethod is-visible? ((this part-spawner)) (sphere<-vector+r! (-> this world-sphere) (-> this root trans) (-> this radius)) - (sphere-in-view-frustum? (-> this world-sphere)) - ) + (sphere-in-view-frustum? (-> this world-sphere))) (defstate part-spawner-active (part-spawner) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('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 (-> block param 0)) quad)))) - (set! (-> self root trans quad) (the-as uint128 v0-1)) - v0-1 - ) - ) - ) - ) - :code (behavior () - (loop - (when (-> self enable) - (spawn (-> self part) (-> self root trans)) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('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 (-> block param 0)) quad)))) + (set! (-> self root trans quad) (the-as uint128 v0-1)) + v0-1)))) + :code + (behavior () + (loop + (when (-> self enable) + (spawn (-> self part) (-> self root trans)) + (if (nonzero? (-> self sound)) (update! (-> self sound)))) + (suspend)))) (defmethod init-from-entity! ((this part-spawner) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -1362,383 +792,322 @@ (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this radius) 12288.0) (set! (-> this enable) - (not (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete)))) - ) + (not (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))))) (set! (-> this sound) (new 'process 'ambient-sound (-> this entity) (-> this 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))) - (s2-0 (-> s5-1 0)) - ) + (s2-0 (-> s5-1 0))) (cond - ((part-group-pointer? s2-0) - (set! s3-0 (-> s5-1 0)) - ) + ((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! (-> this radius) 61440.0) - (go beach-part-grotto-1) - ) + (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) - ) - ) + (if s3-0 (set! (-> s5-1 0) s3-0))) ((= (-> s2-0 -1) symbol) ;; og:preserve-this (set! s4-0 (symbol->string (the-as symbol 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) - ) - ) - (else - (go process-drawable-art-error (the-as string s2-0)) - ) - ) - ) + (if s3-0 (set! (-> s5-1 0) s3-0))) + (else (go process-drawable-art-error (the-as string s2-0))))) (set! (-> this mode) s3-0) (when s3-0 (let ((a0-19 (-> s3-0 0))) (when (and (nonzero? a0-19) (= (-> a0-19 type) sparticle-launch-group)) (set! (-> this part) (create-launch-control a0-19 this)) - (go part-spawner-active) - ) - ) - ) - ) - (go process-drawable-art-error (the-as string s4-0)) - ) - (none) - ) + (go part-spawner-active))))) + (go process-drawable-art-error (the-as string s4-0))) + (none)) (deftype launcher (process-drawable) - ((root collide-shape :override) - (spring-height meters) - (camera state) - (active-distance float) - (seek-time time-frame) - (dest vector :inline) - (sound-id sound-id) - ) + ((root collide-shape :override) + (spring-height meters) + (camera state) + (active-distance float) + (seek-time time-frame) + (dest vector :inline) + (sound-id sound-id)) (:states - launcher-active - launcher-deactivated - launcher-idle - ) - ) - + launcher-active + launcher-deactivated + launcher-idle)) (defpartgroup group-beach-launcher :id 37 :bounds (static-bspherem 0 3 0 5) - :parts ((sp-item 45 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 46 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 47 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 48 :fade-after (meters 50) :falloff-to (meters 80)) - (sp-item 49 :fade-after (meters 70) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 45 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 46 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 47 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 48 :fade-after (meters 50) :falloff-to (meters 80)) + (sp-item 49 :fade-after (meters 70) :falloff-to (meters 100)))) (defpart 45 - :init-specs ((:num 1.5) - (:x (meters 1.5)) - (:y (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.9)) - (:flags (aux-list)) - (:next-time (seconds 0.6)) - (:next-launcher 50) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 1.5) + (:x (meters 1.5)) + (:y (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.9)) + (:flags (aux-list)) + (:next-time (seconds 0.6)) + (:next-launcher 50) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 50 - :init-specs ((:fade-b -4.551111)) - ) + :init-specs ((:fade-b -4.551111))) (defpart 46 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 1.8)) - (:scale-x (meters 0.2)) - (:rot-x (degrees 90)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2.5) (meters 2.5)) - (:r 0.0 1 128.0) - (:g 64.0 196.0) - (:b 128.0 128.0) - (:a 128.0) - (:scalevel-x (meters -0.0025)) - (:scalevel-y (meters 0.24414062) (meters 0.48828125)) - (:timer (seconds 0.27)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 1.8)) + (:scale-x (meters 0.2)) + (:rot-x (degrees 90)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2.5) (meters 2.5)) + (:r 0.0 1 128.0) + (:g 64.0 196.0) + (:b 128.0 128.0) + (:a 128.0) + (:scalevel-x (meters -0.0025)) + (:scalevel-y (meters 0.24414062) (meters 0.48828125)) + (:timer (seconds 0.27)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 47 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:x (meters 1.8) (meters 1)) - (:scale-x (meters 0.2)) - (:rot-x (degrees 90)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 1)) - (:r 0.0 1 128.0) - (:g 64.0 196.0) - (:b 128.0 128.0) - (:a 128.0) - (:scalevel-x (meters -0.0025)) - (:scalevel-y (meters 0.048828125) (meters 0.09765625)) - (:timer (seconds 0.27)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:x (meters 1.8) (meters 1)) + (:scale-x (meters 0.2)) + (:rot-x (degrees 90)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 0.0 1 128.0) + (:g 64.0 196.0) + (:b 128.0 128.0) + (:a 128.0) + (:scalevel-x (meters -0.0025)) + (:scalevel-y (meters 0.048828125) (meters 0.09765625)) + (:timer (seconds 0.27)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 48 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 1.5) - (:x (meters 2.9) (meters 2.5)) - (:y (meters -0.5)) - (:scale-x (meters 0.3) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1) (meters 0.1)) - (:r 10.0 6.0) - (:g 64.0 128.0) - (:b 10.0 6.0) - (:a 80.0) - (:vel-x (meters -0.011666667) (meters -0.0033333334)) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) - (:fade-a -0.2) - (:accel-y (meters 0.0016666667)) - (:friction 0.996) - (:timer (seconds 0.6) (seconds 0.397)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 1.5) + (:x (meters 2.9) (meters 2.5)) + (:y (meters -0.5)) + (:scale-x (meters 0.3) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.1)) + (:r 10.0 6.0) + (:g 64.0 128.0) + (:b 10.0 6.0) + (:a 80.0) + (:vel-x (meters -0.011666667) (meters -0.0033333334)) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:fade-a -0.2) + (:accel-y (meters 0.0016666667)) + (:friction 0.996) + (:timer (seconds 0.6) (seconds 0.397)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 49 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 2.9) (meters 2.5)) - (:y (meters -0.5)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 32.0 32.0) - (:b 10.0 5.0) - (:a 0.0) - (:vel-x (meters -0.011666667) (meters -0.0033333334)) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) - (:fade-a 0.6) - (:accel-y (meters 0.0016666667)) - (:friction 0.996) - (:timer (seconds 0.9)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.15)) - (:next-launcher 51) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 2.9) (meters 2.5)) + (:y (meters -0.5)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 32.0 32.0) + (:b 10.0 5.0) + (:a 0.0) + (:vel-x (meters -0.011666667) (meters -0.0033333334)) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:fade-a 0.6) + (:accel-y (meters 0.0016666667)) + (:friction 0.996) + (:timer (seconds 0.9)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.15)) + (:next-launcher 51) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 51 - :init-specs ((:fade-a -0.18)) - ) + :init-specs ((:fade-a -0.18))) (defpartgroup group-jungle-launcher :id 38 :bounds (static-bspherem 0 3 0 5) - :parts ((sp-item 45 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 52 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 53 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 54 :fade-after (meters 70) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 45 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 52 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 53 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 54 :fade-after (meters 70) :falloff-to (meters 100)))) (defpart 52 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 1.4)) - (:scale-x (meters 0.2)) - (:rot-x (degrees 90)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2.5) (meters 2.5)) - (:r 0.0 1 128.0) - (:g 64.0 196.0) - (:b 128.0 128.0) - (:a 128.0) - (:scalevel-x (meters -0.0025)) - (:scalevel-y (meters 0.24414062) (meters 0.48828125)) - (:timer (seconds 0.27)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 1.4)) + (:scale-x (meters 0.2)) + (:rot-x (degrees 90)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2.5) (meters 2.5)) + (:r 0.0 1 128.0) + (:g 64.0 196.0) + (:b 128.0 128.0) + (:a 128.0) + (:scalevel-x (meters -0.0025)) + (:scalevel-y (meters 0.24414062) (meters 0.48828125)) + (:timer (seconds 0.27)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 53 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:x (meters 1.4) (meters 0.9)) - (:scale-x (meters 0.2)) - (:rot-x (degrees 90)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 1)) - (:r 0.0 1 128.0) - (:g 64.0 196.0) - (:b 128.0 128.0) - (:a 128.0) - (:scalevel-x (meters -0.0025)) - (:scalevel-y (meters 0.048828125) (meters 0.09765625)) - (:timer (seconds 0.27)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:x (meters 1.4) (meters 0.9)) + (:scale-x (meters 0.2)) + (:rot-x (degrees 90)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 0.0 1 128.0) + (:g 64.0 196.0) + (:b 128.0 128.0) + (:a 128.0) + (:scalevel-x (meters -0.0025)) + (:scalevel-y (meters 0.048828125) (meters 0.09765625)) + (:timer (seconds 0.27)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 54 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 2.9) (meters 2.5)) - (:y (meters -0.5)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 32.0 32.0) - (:b 10.0 5.0) - (:a 0.0) - (:vel-x (meters -0.011666667) (meters -0.0033333334)) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) - (:fade-a 0.6) - (:accel-y (meters 0.0016666667)) - (:friction 0.996) - (:timer (seconds 0.9)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.15)) - (:next-launcher 51) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 2.9) (meters 2.5)) + (:y (meters -0.5)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 32.0 32.0) + (:b 10.0 5.0) + (:a 0.0) + (:vel-x (meters -0.011666667) (meters -0.0033333334)) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:fade-a 0.6) + (:accel-y (meters 0.0016666667)) + (:friction 0.996) + (:timer (seconds 0.9)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.15)) + (:next-launcher 51) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-swamp-launcher :id 39 :bounds (static-bspherem 0 3 0 5) - :parts ((sp-item 45 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 46 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 47 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 55 :fade-after (meters 70) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 45 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 46 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 47 :fade-after (meters 70) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 55 :fade-after (meters 70) :falloff-to (meters 100)))) (defpart 55 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 2.9) (meters 2.5)) - (:y (meters -0.5)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0 16.0) - (:g 16.0 16.0) - (:b 5.0 2.5) - (:a 0.0) - (:vel-x (meters -0.011666667) (meters -0.0033333334)) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) - (:fade-a 0.6) - (:accel-y (meters 0.0016666667)) - (:friction 0.996) - (:timer (seconds 0.9)) - (:flags (bit2)) - (:next-time (seconds 0.15)) - (:next-launcher 51) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 2.9) (meters 2.5)) + (:y (meters -0.5)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0 16.0) + (:g 16.0 16.0) + (:b 5.0 2.5) + (:a 0.0) + (:vel-x (meters -0.011666667) (meters -0.0033333334)) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:fade-a 0.6) + (:accel-y (meters 0.0016666667)) + (:friction 0.996) + (:timer (seconds 0.9)) + (:flags (bit2)) + (:next-time (seconds 0.15)) + (:next-launcher 51) + (:rotate-y (degrees 0) (degrees 360)))) (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))) - ) + (gp-0 (vector-reset! (new 'stack-no-clear 'vector)))) ;; og:preserve-this changed for pc port (let* ((f0-0 (analog-input-horizontal-third (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) - ) + (f0-2 (fmin 546.13336 (fmax -546.13336 f1-1)))) + (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)) - ) - ) - ) + (vector+! (-> self trans) gp-0 (-> *camera* tpos-curr))))) (defstate cam-launcher-shortfall (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :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) - (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 - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (let ((gp-0 (current-time))) - (loop - (when (not (paused?)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :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) - (send-event *camera* 'teleport) - (if (and (-> *camera* on-ground) (time-elapsed? gp-0 (seconds 1))) - (send-event *camera* 'change-state *camera-base-mode* (seconds 0.5)) - ) - ) - (suspend) - ) - ) - ) - ) + (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)) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (let ((gp-0 (current-time))) + (loop + (when (not (paused?)) + (vector--float*! (-> self trans) (-> *camera* tpos-curr) (-> *camera* local-down) 28672.0) + (send-event *camera* 'teleport) + (if (and (-> *camera* on-ground) (time-elapsed? gp-0 (seconds 1))) + (send-event *camera* 'change-state *camera-base-mode* (seconds 0.5)))) + (suspend))))) ;; og:preserve-this ;; blue eco launcher cam (not used for enclosed launchers like in jungle temple) @@ -1748,208 +1117,131 @@ ;; og:preserve-this changed for pc port (let* ((f0-0 (analog-input-horizontal-third (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))) - ) + (f0-2 (fmin 546.13336 (fmax -546.13336 f1-1)))) ;; og:preserve-this changed for high fps - (matrix-axis-angle! gp-0 (-> *camera* local-down) (* DISPLAY_FPS_RATIO f0-2)) - ) - (vector-matrix*! (-> self view-flat) (-> self view-flat) gp-0) - ) - (vector-normalize! (-> self view-flat) 4096.0) - ) - ) + (matrix-axis-angle! gp-0 (-> *camera* local-down) (* DISPLAY_FPS_RATIO f0-2))) + (vector-matrix*! (-> self view-flat) (-> self view-flat) gp-0)) + (vector-normalize! (-> self view-flat) 4096.0))) (defstate cam-launcher-longfall (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :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) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - (cam-launcher-long-joystick) - ) - :code (behavior () - (let ((gp-0 (current-time))) - (loop - (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+! (-> 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) (time-elapsed? gp-0 (seconds 1))) - (send-event *camera* 'change-state *camera-base-mode* (seconds 0.5)) - ) - ) - (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) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :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))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating)) + (cam-launcher-long-joystick)) + :code + (behavior () + (let ((gp-0 (current-time))) + (loop + (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+! (-> 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) (time-elapsed? gp-0 (seconds 1))) + (send-event *camera* 'change-state *camera-base-mode* (seconds 0.5)))) + (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))))) (defstate launcher-idle (launcher) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('instant-death) - (go launcher-deactivated) - ) - (('trans) - (move-to-point! (-> self root) (the-as vector (-> block param 0))) - (update-transforms! (-> self root)) - ) - ) - ) - :trans (behavior () - (when (and *target* - (>= (-> self active-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (cond - ((send-event *target* 'query 'powerup (pickup-type eco-blue)) - (go launcher-active) - ) - (else - (let ((gp-0 'target-launch)) - (if (= (send-event *target* 'query 'mode) gp-0) - (send-event *target* 'end-mode) - ) - ) - ) - ) - (if (and (and *target* (>= 32768.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (not (send-event *target* 'query 'powerup (pickup-type eco-blue))) - ) - (level-hint-spawn - (text-id sidekick-hint-launcher) - "sksp0035" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - :code anim-loop - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('instant-death) (go launcher-deactivated)) + (('trans) (move-to-point! (-> self root) (the-as vector (-> block param 0))) (update-transforms! (-> self root))))) + :trans + (behavior () + (when (and *target* (>= (-> self active-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (cond + ((send-event *target* 'query 'powerup (pickup-type eco-blue)) (go launcher-active)) + (else (let ((gp-0 'target-launch)) (if (= (send-event *target* 'query 'mode) gp-0) (send-event *target* 'end-mode))))) + (if (and (and *target* (>= 32768.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (send-event *target* 'query 'powerup (pickup-type eco-blue)))) + (level-hint-spawn (text-id sidekick-hint-launcher) "sksp0035" (the-as entity #f) *entity-pool* (game-task none))))) + :code anim-loop) (defstate launcher-active (launcher) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (or (= message 'touch) (= message 'attack)) - (set-time! (-> self state-time)) - (send-event proc 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time)) - ) - (cond - ((= message 'instant-death) - (go launcher-deactivated) - ) - ((= message 'trans) - (move-to-point! (-> self root) (the-as vector (-> block param 0))) - (update-transforms! (-> self root)) - ) - ) - ) - :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) (sound-mask volume time)) - (-> v1-0 id) - ) - ) - :trans (behavior () - (if (or (or (not *target*) - (< (-> self active-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (not (send-event *target* 'query 'powerup (pickup-type eco-blue))) - ) - (go launcher-idle) - ) - (spawn (-> self part) (-> self root trans)) - (sound-play "launch-idle" :id (-> self sound-id)) - (if (and (and *target* (>= (+ 2867.2 (-> self root root-prim prim-core world-sphere w)) - (vector-vector-distance (-> self root trans) (-> *target* control trans)) - ) - ) - (not (time-elapsed? (-> self state-time) (seconds 0.5))) - ) - (send-event *target* 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time)) - ) - ) - :code (behavior () - (sound-play "launch-start") - (anim-loop) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (or (= message 'touch) (= message 'attack)) + (set-time! (-> self state-time)) + (send-event proc 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time))) + (cond + ((= message 'instant-death) (go launcher-deactivated)) + ((= message 'trans) + (move-to-point! (-> self root) (the-as vector (-> block param 0))) + (update-transforms! (-> self root))))) + :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) (sound-mask volume time)) + (-> v1-0 id))) + :trans + (behavior () + (if (or (or (not *target*) + (< (-> self active-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (send-event *target* 'query 'powerup (pickup-type eco-blue)))) + (go launcher-idle)) + (spawn (-> self part) (-> self root trans)) + (sound-play "launch-idle" :id (-> self sound-id)) + (if (and (and *target* + (>= (+ 2867.2 (-> self root root-prim prim-core world-sphere w)) + (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (time-elapsed? (-> self state-time) (seconds 0.5)))) + (send-event *target* 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time)))) + :code + (behavior () + (sound-play "launch-start") + (anim-loop))) (defstate launcher-deactivated (launcher) - :code anim-loop - ) + :code anim-loop) (defmethod init-from-entity! ((this launcher) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 128) @@ -1958,59 +1250,35 @@ (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 13926.4) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (update-transforms! (-> this root)) (set! (-> this active-distance) 409600.0) (set! (-> this spring-height) (res-lump-float arg0 'spring-height :default 163840.0)) (let ((s4-1 (res-lump-value arg0 'mode uint128))) (let ((v1-18 (-> this entity extra level name))) - (set! (-> this 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) - ) - ) - this - ) - ) - ) + (set! (-> this 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))) + this))) (let ((v1-24 (logand (the-as int s4-1) 255))) (cond - ((= (the-as uint v1-24) 1) - (set! (-> this camera) cam-launcher-longfall) - ) - ((= (the-as uint v1-24) 2) - (set! (-> this camera) #f) - ) - (else - (set! (-> this camera) cam-launcher-shortfall) - ) - ) - ) - ) + ((= (the-as uint v1-24) 1) (set! (-> this camera) cam-launcher-longfall)) + ((= (the-as uint v1-24) 2) (set! (-> this camera) #f)) + (else (set! (-> this camera) cam-launcher-shortfall))))) (let ((v1-29 (res-lump-struct arg0 'alt-vector vector))) (when v1-29 (set-vector! (-> this dest) (-> v1-29 x) (-> v1-29 y) (-> v1-29 z) 1.0) - (set! (-> this seek-time) (the-as time-frame (the int (* 300.0 (-> v1-29 w))))) - ) - ) + (set! (-> this seek-time) (the-as time-frame (the int (* 300.0 (-> v1-29 w))))))) (set! (-> this sound-id) (new-sound-id)) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (go launcher-idle) - (none) - ) + (none)) (defbehavior launcher-init-by-other launcher ((arg0 vector) (arg1 float) (arg2 int) (arg3 float)) (stack-size-set! (-> self main-thread) 128) @@ -2019,12 +1287,10 @@ (set! (-> s1-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s1-0 collide-with) (collide-kind target)) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s2-0 s1-0) - ) + (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) s2-0) - ) + (set! (-> self root) s2-0)) (set! (-> self root trans quad) (-> arg0 quad)) (set-vector! (-> self root scale) 1.0 1.0 1.0 1.0) (set-vector! (-> self root quat) 0.0 0.0 0.0 1.0) @@ -2032,244 +1298,151 @@ (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) - (set! (-> self camera) cam-launcher-longfall) - ) - ((2) - (set! (-> self camera) #f) - ) - (else - (set! (-> self camera) cam-launcher-shortfall) - ) - ) + ((1) (set! (-> self camera) cam-launcher-longfall)) + ((2) (set! (-> self camera) #f)) + (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 time-frame (the int (* 300.0 (-> v1-34 w))))) - ) - ) + (set! (-> self seek-time) (the-as time-frame (the int (* 300.0 (-> v1-34 w))))))) (set! (-> self sound-id) (new-sound-id)) (go launcher-idle) - (none) - ) + (none)) (defstate touch-tracker-idle (touch-tracker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('touched) - (let ((v1-1 (ppointer->process (-> self parent)))) - (when (!= v1-1 proc) - (cond - ((= (-> self event) 'attack) - (cond - ((= (-> proc type) target) - (send-event - proc - (-> self event) - :from (the-as process v1-1) - #f - (static-attack-info ((mode (the-as symbol (-> self event-mode))))) - ) - ) - ((= (-> v1-1 type) target) - (send-event - proc - (-> self event) - :from (the-as process v1-1) - #f - (-> self event-mode) - (-> *target* control unknown-dword50) - (-> *target* control unknown-dword51) - ) - ) - (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 proc a1-5) - ) - ) - ) - ) - ((-> self event) - (send-event proc (-> self event) :from (the-as process v1-1)) - ) - (else - (let ((t0-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> t0-5 from) proc) - (set! (-> t0-5 num-params) argc) - (set! (-> t0-5 message) message) - (set! (-> t0-5 param 0) (-> block param 0)) - (set! (-> t0-5 param 1) (-> block param 1)) - (set! (-> t0-5 param 2) (-> block param 2)) - (set! (-> t0-5 param 3) (-> block param 3)) - (set! (-> t0-5 param 4) (-> block param 4)) - (set! (-> t0-5 param 5) (-> block param 5)) - (set! (-> t0-5 param 6) (-> block param 6)) - (send-event-function v1-1 t0-5) - ) - ) - ) - ) - ) - ) - (('target) - (set! v0-0 (process->handle (the-as process (-> block param 0)))) - (set! (-> self target) (the-as handle v0-0)) - v0-0 - ) - (('event) - (set! (-> self event) (the-as symbol (-> block param 0))) - (set! v0-0 (-> block param 1)) - (set! (-> self event-mode) (the-as basic v0-0)) - v0-0 - ) - (('exit) - (set! v0-0 (-> block param 0)) - (set! (-> self run-function) (the-as (function object) v0-0)) - v0-0 - ) - (('eval) - ((the-as (function touch-tracker none) (-> block param 0)) self) - ) - (('function) - (set! v0-0 (-> block param 0)) - (set! (-> self callback) (the-as (function touch-tracker none) v0-0)) - v0-0 - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (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 trans quad) (-> (the-as collide-shape a0-6) root-prim prim-core world-sphere quad)) - ) - ) - ) - ) - (if (-> self callback) - ((-> self callback) self) - ) - (update-transforms! (-> self root)) - (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*)) - (find-overlapping-shapes (-> self root) (the-as overlaps-others-params a1-3)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('touched) + (let ((v1-1 (ppointer->process (-> self parent)))) + (when (!= v1-1 proc) + (cond + ((= (-> self event) 'attack) + (cond + ((= (-> proc type) target) + (send-event proc + (-> self event) + :from (the-as process v1-1) + #f + (static-attack-info ((mode (the-as symbol (-> self event-mode))))))) + ((= (-> v1-1 type) target) + (send-event proc + (-> self event) + :from (the-as process v1-1) + #f + (-> self event-mode) + (-> *target* control unknown-dword50) + (-> *target* control unknown-dword51))) + (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 proc a1-5))))) + ((-> self event) (send-event proc (-> self event) :from (the-as process v1-1))) + (else + (let ((t0-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> t0-5 from) proc) + (set! (-> t0-5 num-params) argc) + (set! (-> t0-5 message) message) + (set! (-> t0-5 param 0) (-> block param 0)) + (set! (-> t0-5 param 1) (-> block param 1)) + (set! (-> t0-5 param 2) (-> block param 2)) + (set! (-> t0-5 param 3) (-> block param 3)) + (set! (-> t0-5 param 4) (-> block param 4)) + (set! (-> t0-5 param 5) (-> block param 5)) + (set! (-> t0-5 param 6) (-> block param 6)) + (send-event-function v1-1 t0-5))))))) + (('target) + (set! v0-0 (process->handle (the-as process (-> block param 0)))) + (set! (-> self target) (the-as handle v0-0)) + v0-0) + (('event) + (set! (-> self event) (the-as symbol (-> block param 0))) + (set! v0-0 (-> block param 1)) + (set! (-> self event-mode) (the-as basic v0-0)) + v0-0) + (('exit) (set! v0-0 (-> block param 0)) (set! (-> self run-function) (the-as (function object) v0-0)) v0-0) + (('eval) ((the-as (function touch-tracker none) (-> block param 0)) self)) + (('function) (set! v0-0 (-> block param 0)) (set! (-> self callback) (the-as (function touch-tracker none) v0-0)) v0-0))) + :code + (behavior () + (set-time! (-> self state-time)) + (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 trans quad) (-> (the-as collide-shape a0-6) root-prim prim-core world-sphere quad)))))) + (if (-> self callback) ((-> self callback) self)) + (update-transforms! (-> self root)) + (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*)) + (find-overlapping-shapes (-> self root) (the-as overlaps-others-params a1-3))) + (suspend)) + (clear-collide-with-as (-> self root)) (suspend) - ) - (clear-collide-with-as (-> self root)) - (suspend) - 0 - ) - ) + 0)) (defbehavior touch-tracker-init touch-tracker ((arg0 vector) (arg1 float) (arg2 time-frame)) (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) - ) + (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) (collide-kind target enemy)) (set! (-> s2-0 collide-with) (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object)) (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 arg1) - (set-root-prim! s4-0 s2-0) - ) + (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) s4-0) - ) + (set! (-> self root) s4-0)) (set! (-> self root 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) - (lambda :behavior touch-tracker () (not (time-elapsed? (-> self state-time) (-> self duration)))) - ) + (lambda :behavior touch-tracker () + (not (time-elapsed? (-> self state-time) (-> self duration))))) (set! (-> self event-hook) (-> touch-tracker-idle event)) (go touch-tracker-idle) - (none) - ) + (none)) (defun process-drawable-random-point! ((arg0 process-drawable) (arg1 vector)) (let ((v1-1 (-> arg0 node-list length)) - (s4-0 (-> arg0 root)) - ) + (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)) - ) - ) + ((>= 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))) - ) - ) - ) - arg1 - ) + (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)))))) + arg1) (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)) - ) + (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) - ) - ) + (vector-lerp! arg2 s4-0 s3-0 arg3))) (define *particle-quat* (new 'static 'quaternion :w 1.0)) @@ -2277,56 +1450,46 @@ (local-vars (a0-2 float) (a0-3 float)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((a0-1 arg2) - (v1-0 *particle-quat*) - ) + (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) - ) + (.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) - ) - ) - ) + (.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) - ) - ) + (none))) (defpart 2528 - :init-specs ((:texture (new 'static 'texture-id :index #xc :page #x2)) - (:birth-func 'birth-func-set-quat) - (:num 1.0) - (:scale-x (meters 2) (meters 0.5)) - (:scale-y (meters 5.6)) - (:r 0.0 44.0) - (:g 0.0 64.0) - (:b 128.0 32.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14 left-multiply-quat)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xc :page #x2)) + (:birth-func 'birth-func-set-quat) + (:num 1.0) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y (meters 5.6)) + (:r 0.0 44.0) + (:g 0.0 64.0) + (:b 128.0 32.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14 left-multiply-quat)))) (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)) - ) + (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)) @@ -2334,10 +1497,6 @@ (dotimes (s4-1 3) (quaternion-rotate-local-z! s5-0 s5-0 10922.667) (quaternion-copy! *particle-quat* s5-0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2528) gp-1) - ) - ) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2528) gp-1)))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/common-obs/nav-enemy-h.gc b/goal_src/jak1/engine/common-obs/nav-enemy-h.gc index 9e7da76eb9..62c6aab948 100644 --- a/goal_src/jak1/engine/common-obs/nav-enemy-h.gc +++ b/goal_src/jak1/engine/common-obs/nav-enemy-h.gc @@ -1,17 +1,15 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/game/game-h.gc") - -;; name: nav-enemy-h.gc -;; name in dgo: nav-enemy-h -;; dgos: GAME, COMMON, L1 - (declare-type nav-enemy process-drawable) + (define-extern nav-enemy-send-attack (function process touching-shapes-entry symbol object :behavior nav-enemy)) + (define-extern nav-enemy-set-hit-from-direction (function process none :behavior nav-enemy)) + (define-extern nav-enemy-get-new-patrol-point (function int :behavior nav-enemy)) + (define-extern nav-enemy-test-point-near-nav-mesh? (function vector symbol :behavior nav-enemy)) (defenum nav-enemy-flags @@ -48,153 +46,145 @@ (navenmf28 28) (navenmf29 29) (navenmf30 30) - (navenmf31 31) - ) + (navenmf31 31)) ;; DECOMP BEGINS (deftype nav-enemy-info (basic) - ((idle-anim int32) - (walk-anim int32) - (turn-anim int32) - (notice-anim int32) - (run-anim int32) - (jump-anim int32) - (jump-land-anim int32) - (victory-anim int32) - (taunt-anim int32) - (die-anim int32) - (neck-joint int32) - (player-look-at-joint int32) - (run-travel-speed meters) - (run-rotate-speed degrees) - (run-acceleration meters) - (run-turn-time seconds) - (walk-travel-speed meters) - (walk-rotate-speed degrees) - (walk-acceleration meters) - (walk-turn-time seconds) - (attack-shove-back meters) - (attack-shove-up meters) - (shadow-size meters) - (notice-nav-radius meters) - (nav-nearest-y-threshold meters) - (notice-distance meters) - (proximity-notice-distance meters) - (stop-chase-distance meters) - (frustration-distance meters) - (frustration-time time-frame) - (die-anim-hold-frame float) - (jump-anim-start-frame float) - (jump-land-anim-end-frame float) - (jump-height-min meters) - (jump-height-factor float) - (jump-start-anim-speed float) - (shadow-max-y meters) - (shadow-min-y meters) - (shadow-locus-dist meters) - (use-align symbol) - (draw-shadow symbol) - (move-to-ground symbol) - (hover-if-no-ground symbol) - (use-momentum symbol) - (use-flee symbol) - (use-proximity-notice symbol) - (use-jump-blocked symbol) - (use-jump-patrol symbol) - (gnd-collide-with collide-kind) - (debug-draw-neck symbol) - (debug-draw-jump symbol) - ) - ) - + ((idle-anim int32) + (walk-anim int32) + (turn-anim int32) + (notice-anim int32) + (run-anim int32) + (jump-anim int32) + (jump-land-anim int32) + (victory-anim int32) + (taunt-anim int32) + (die-anim int32) + (neck-joint int32) + (player-look-at-joint int32) + (run-travel-speed meters) + (run-rotate-speed degrees) + (run-acceleration meters) + (run-turn-time seconds) + (walk-travel-speed meters) + (walk-rotate-speed degrees) + (walk-acceleration meters) + (walk-turn-time seconds) + (attack-shove-back meters) + (attack-shove-up meters) + (shadow-size meters) + (notice-nav-radius meters) + (nav-nearest-y-threshold meters) + (notice-distance meters) + (proximity-notice-distance meters) + (stop-chase-distance meters) + (frustration-distance meters) + (frustration-time time-frame) + (die-anim-hold-frame float) + (jump-anim-start-frame float) + (jump-land-anim-end-frame float) + (jump-height-min meters) + (jump-height-factor float) + (jump-start-anim-speed float) + (shadow-max-y meters) + (shadow-min-y meters) + (shadow-locus-dist meters) + (use-align symbol) + (draw-shadow symbol) + (move-to-ground symbol) + (hover-if-no-ground symbol) + (use-momentum symbol) + (use-flee symbol) + (use-proximity-notice symbol) + (use-jump-blocked symbol) + (use-jump-patrol symbol) + (gnd-collide-with collide-kind) + (debug-draw-neck symbol) + (debug-draw-jump symbol))) (deftype nav-enemy (process-drawable) - ((collide-info collide-shape-moving :overlay-at root) - (enemy-info fact-info-enemy :overlay-at fact) - (hit-from-dir vector :inline) - (event-param-point vector :inline) - (frustration-point vector :inline) - (jump-dest vector :inline) - (jump-trajectory trajectory :inline) - (jump-time time-frame) - (nav-info nav-enemy-info) - (target-speed float) - (momentum-speed float) - (acceleration float) - (rotate-speed float) - (turn-time time-frame) - (frustration-time time-frame) - (speed-scale float) - (neck joint-mod) - (reaction-time time-frame) - (notice-time time-frame) - (state-timeout time-frame) - (free-time time-frame) - (touch-time time-frame) - (nav-enemy-flags nav-enemy-flags) - (incomming-attack-id handle) - (jump-return-state (state process)) - (rand-gen random-generator) - ) + ((collide-info collide-shape-moving :overlay-at root) + (enemy-info fact-info-enemy :overlay-at fact) + (hit-from-dir vector :inline) + (event-param-point vector :inline) + (frustration-point vector :inline) + (jump-dest vector :inline) + (jump-trajectory trajectory :inline) + (jump-time time-frame) + (nav-info nav-enemy-info) + (target-speed float) + (momentum-speed float) + (acceleration float) + (rotate-speed float) + (turn-time time-frame) + (frustration-time time-frame) + (speed-scale float) + (neck joint-mod) + (reaction-time time-frame) + (notice-time time-frame) + (state-timeout time-frame) + (free-time time-frame) + (touch-time time-frame) + (nav-enemy-flags nav-enemy-flags) + (incomming-attack-id handle) + (jump-return-state (state process)) + (rand-gen random-generator)) (:state-methods - nav-enemy-attack - nav-enemy-chase - nav-enemy-flee - nav-enemy-die - nav-enemy-fuel-cell - nav-enemy-give-up - nav-enemy-jump - nav-enemy-jump-land - nav-enemy-idle - nav-enemy-notice - nav-enemy-patrol - nav-enemy-stare - nav-enemy-stop-chase - nav-enemy-victory - ) + nav-enemy-attack + nav-enemy-chase + nav-enemy-flee + nav-enemy-die + nav-enemy-fuel-cell + nav-enemy-give-up + nav-enemy-jump + nav-enemy-jump-land + nav-enemy-idle + nav-enemy-notice + nav-enemy-patrol + nav-enemy-stare + nav-enemy-stop-chase + nav-enemy-victory) (:methods - (nav-enemy-method-34 (_type_) none) - (nav-enemy-wait-for-cue () _type_ :state) - (nav-enemy-jump-to-point () _type_ :state) - (nav-enemy-method-37 (_type_) none) - (nav-enemy-method-38 (_type_) none) - (common-post (_type_) none) - (nav-enemy-method-40 (_type_) none) - (nav-enemy-method-41 (_type_) none) - (new-patrol-point! (_type_) int) - (attack-handler (_type_ process event-message-block) object) - (touch-handler (_type_ process event-message-block) object) - (init-defaults! (_type_ nav-enemy-info) none) - (target-in-range? (_type_ float) basic) - (initialize-collision (_type_) none) - (nav-enemy-method-48 (_type_) none) - (init-jm! (_type_ nav-enemy-info) float) - (nav-enemy-method-50 (_type_ vector) symbol) - (nav-enemy-method-51 (_type_) none) - (nav-enemy-method-52 (_type_ vector) symbol) - (nav-enemy-method-53 (_type_) symbol) - (nav-enemy-method-54 (_type_ vector) symbol) - (nav-enemy-method-55 (_type_) symbol) - (set-jump-height-factor! (_type_ int) none) - (nav-enemy-method-57 (_type_) none) - (nav-enemy-method-58 (_type_) none) - (nav-enemy-method-59 (_type_) none) - (nav-enemy-method-60 (_type_ symbol) symbol) - (snow-bunny-attack () _type_ :state) - (snow-bunny-chase-hop () _type_ :state) - (snow-bunny-defend () _type_ :state) - (nav-enemy-method-64 () _type_ :state) - (snow-bunny-lunge () _type_ :state) - (snow-bunny-nav-resume () _type_ :state) - (snow-bunny-patrol-hop () _type_ :state) - (snow-bunny-patrol-idle () _type_ :state) - (nav-enemy-method-69 () _type_ :state) - (snow-bunny-retreat-hop () _type_ :state) - (snow-bunny-tune-spheres () _type_ :state) - (nav-enemy-touch-handler (_type_ process event-message-block) object) - (nav-enemy-attack-handler (_type_ process event-message-block) object) - (nav-enemy-jump-blocked () _type_ :state) - (nav-enemy-method-75 () _type_ :state) - ) - ) + (nav-enemy-method-34 (_type_) none) + (nav-enemy-wait-for-cue () _type_ :state) + (nav-enemy-jump-to-point () _type_ :state) + (nav-enemy-method-37 (_type_) none) + (nav-enemy-method-38 (_type_) none) + (common-post (_type_) none) + (nav-enemy-method-40 (_type_) none) + (nav-enemy-method-41 (_type_) none) + (new-patrol-point! (_type_) int) + (attack-handler (_type_ process event-message-block) object) + (touch-handler (_type_ process event-message-block) object) + (init-defaults! (_type_ nav-enemy-info) none) + (target-in-range? (_type_ float) basic) + (initialize-collision (_type_) none) + (nav-enemy-method-48 (_type_) none) + (init-jm! (_type_ nav-enemy-info) float) + (nav-enemy-method-50 (_type_ vector) symbol) + (nav-enemy-method-51 (_type_) none) + (nav-enemy-method-52 (_type_ vector) symbol) + (nav-enemy-method-53 (_type_) symbol) + (nav-enemy-method-54 (_type_ vector) symbol) + (nav-enemy-method-55 (_type_) symbol) + (set-jump-height-factor! (_type_ int) none) + (nav-enemy-method-57 (_type_) none) + (nav-enemy-method-58 (_type_) none) + (nav-enemy-method-59 (_type_) none) + (nav-enemy-method-60 (_type_ symbol) symbol) + (snow-bunny-attack () _type_ :state) + (snow-bunny-chase-hop () _type_ :state) + (snow-bunny-defend () _type_ :state) + (nav-enemy-method-64 () _type_ :state) + (snow-bunny-lunge () _type_ :state) + (snow-bunny-nav-resume () _type_ :state) + (snow-bunny-patrol-hop () _type_ :state) + (snow-bunny-patrol-idle () _type_ :state) + (nav-enemy-method-69 () _type_ :state) + (snow-bunny-retreat-hop () _type_ :state) + (snow-bunny-tune-spheres () _type_ :state) + (nav-enemy-touch-handler (_type_ process event-message-block) object) + (nav-enemy-attack-handler (_type_ process event-message-block) object) + (nav-enemy-jump-blocked () _type_ :state) + (nav-enemy-method-75 () _type_ :state))) diff --git a/goal_src/jak1/engine/common-obs/nav-enemy.gc b/goal_src/jak1/engine/common-obs/nav-enemy.gc index 539bcf31dc..5d3f7b7012 100644 --- a/goal_src/jak1/engine/common-obs/nav-enemy.gc +++ b/goal_src/jak1/engine/common-obs/nav-enemy.gc @@ -1,369 +1,226 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/nav/navigate.gc") (require "engine/common-obs/process-taskable.gc") (require "engine/anim/aligner.gc") (require "engine/geometry/path.gc") (require "engine/common-obs/nav-enemy-h.gc") - -;; name: nav-enemy.gc -;; name in dgo: nav-enemy -;; dgos: GAME, COMMON, L1 - (declare-type battlecontroller process-drawable) ;; DECOMP BEGINS (defun nav-enemy-rnd-float () - (rand-vu) - ) + (rand-vu)) (defun nav-enemy-rnd-percent? ((arg0 float)) - (>= arg0 (rand-vu)) - ) + (>= arg0 (rand-vu))) (defun nav-enemy-rnd-float-range ((arg0 float) (arg1 float)) - (+ arg0 (* (rand-vu) (- arg1 arg0))) - ) + (+ arg0 (* (rand-vu) (- arg1 arg0)))) (defun nav-enemy-rnd-int-count ((arg0 int)) - (the int (* (rand-vu) (the float arg0))) - ) + (the int (* (rand-vu) (the float arg0)))) (defun nav-enemy-rnd-int-range ((arg0 int) (arg1 int)) - (+ arg0 (the int (* (rand-vu) (the float (+ (- 1 arg0) arg1))))) - ) + (+ arg0 (the int (* (rand-vu) (the float (+ (- 1 arg0) arg1)))))) (defun nav-enemy-rnd-go-idle? ((arg0 float)) (let* ((v1-3 (-> *display* frames (-> *display* last-screen) frame run-time)) - (f1-2 (fmax 0.0 (fmin 1.0 (* 0.001 (+ -7000.0 (the float v1-3)))))) - ) - (>= (+ arg0 (* f1-2 (- 1.0 arg0))) (rand-vu)) - ) - ) + (f1-2 (fmax 0.0 (fmin 1.0 (* 0.001 (+ -7000.0 (the float v1-3))))))) + (>= (+ arg0 (* f1-2 (- 1.0 arg0))) (rand-vu)))) (defmethod eval-position! ((this trajectory) (time float) (result vector)) (vector+float*! result (-> this initial-position) (-> this initial-velocity) time) (+! (-> result y) (* 0.5 time time (-> this gravity))) - result - ) + result) (defmethod relocate ((this nav-enemy) (arg0 int)) - (if (nonzero? (-> this neck)) - (set! (-> this neck) (the-as joint-mod (+ (the-as int (-> this neck)) arg0))) - ) + (if (nonzero? (-> this neck)) (set! (-> this neck) (the-as joint-mod (+ (the-as int (-> this neck)) arg0)))) (if (nonzero? (-> this rand-gen)) - (set! (-> this rand-gen) (the-as random-generator (+ (the-as int (-> this rand-gen)) arg0))) - ) - (call-parent-method this arg0) - ) + (set! (-> this rand-gen) (the-as random-generator (+ (the-as int (-> this rand-gen)) arg0)))) + (call-parent-method this arg0)) (defmethod new-patrol-point! ((this nav-enemy)) (local-vars (v1-11 symbol)) - (if (<= (-> this path curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) + (if (<= (-> this path curve num-cverts) 0) (go process-drawable-art-error "no path")) (let ((s5-0 3)) 0 (let ((s4-0 (-> this nav destination-pos))) (until (or v1-11 (<= s5-0 0)) (let ((v1-8 (nav-enemy-rnd-int-count (-> this path curve num-cverts)))) - (eval-path-curve-div! (-> this path) s4-0 (the float v1-8) 'interp) - ) + (eval-path-curve-div! (-> this path) s4-0 (the float v1-8) 'interp)) (+! s5-0 -1) - (set! v1-11 (< 4096.0 (vector-vector-xz-distance s4-0 (-> this collide-info trans)))) - ) - ) - ) - 0 - ) + (set! v1-11 (< 4096.0 (vector-vector-xz-distance s4-0 (-> this collide-info trans))))))) + 0) (defmethod common-post ((this nav-enemy)) (when (and (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf8)) (or (not *target*) (and (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (time-elapsed? (-> this touch-time) (seconds 0.05)) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (time-elapsed? (-> this touch-time) (seconds 0.05))))) (set-collide-offense (-> this collide-info) 2 (collide-offense touch)) - (logclear! (-> this nav-enemy-flags) (nav-enemy-flags navenmf8)) - ) + (logclear! (-> this nav-enemy-flags) (nav-enemy-flags navenmf8))) (update-direction-from-time-of-day (-> this draw shadow-ctrl)) (when *target* (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> this collide-info root-prim prim-core)) - (if (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf2)) - 'attacking - ) - this - ) - ) + (look-at-enemy! (-> *target* neck) + (the-as vector (-> this collide-info root-prim prim-core)) + (if (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf2)) 'attacking) + this)) (if (and (nonzero? (-> this neck)) (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf14))) - (set-target! (-> this neck) (target-pos (-> this nav-info player-look-at-joint))) - ) - ) + (set-target! (-> this neck) (target-pos (-> this nav-info player-look-at-joint))))) (when (-> this nav-info debug-draw-neck) - (if (nonzero? (-> this neck)) - (joint-mod-debug-draw (-> this neck)) - ) - ) + (if (nonzero? (-> this neck)) (joint-mod-debug-draw (-> this neck)))) (ja-post) 0 - (none) - ) + (none)) (defmethod touch-handler ((this nav-enemy) (arg0 process) (arg1 event-message-block)) (if (and (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf6)) ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) - ) - (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) - ) - ) + (the-as uint 1))) + (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic))) (defmethod nav-enemy-touch-handler ((this nav-enemy) (arg0 process) (arg1 event-message-block)) (if (and (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf6)) ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) - ) - (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) - ) - ) + (the-as uint 1))) + (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic))) (defmethod nav-enemy-attack-handler ((this nav-enemy) (arg0 process) (arg1 event-message-block)) (send-event arg0 'get-attack-count 1) (logclear! (-> this mask) (process-mask actor-pause attackable)) (go (method-of-object this nav-enemy-die)) - 'die - ) + 'die) (defmethod attack-handler ((this nav-enemy) (arg0 process) (arg1 event-message-block)) (cond ((logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf5)) (send-event arg0 'get-attack-count 1) (logclear! (-> this mask) (process-mask actor-pause attackable)) - (go (method-of-object this nav-enemy-die)) - ) - (else - (touch-handler this arg0 arg1) - ) - ) - ) + (go (method-of-object this nav-enemy-die))) + (else (touch-handler this arg0 arg1)))) (defbehavior nav-enemy-send-attack nav-enemy ((arg0 process) (arg1 touching-shapes-entry) (arg2 symbol)) - (when (send-event - arg0 - 'attack - arg1 - (static-attack-info - ((shove-back (-> self nav-info attack-shove-back)) (shove-up (-> self nav-info attack-shove-up)) (mode arg2)) - ) - ) + (when (send-event arg0 + 'attack + arg1 + (static-attack-info ((shove-back (-> self nav-info attack-shove-back)) (shove-up (-> self nav-info attack-shove-up)) (mode arg2)))) (set-collide-offense (-> self collide-info) 2 (collide-offense no-offense)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - #t - ) - ) + #t)) (defbehavior nav-enemy-default-event-handler nav-enemy ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('touch) - (set-time! (-> self touch-time)) - (touch-handler self arg0 arg3) - ) - (('attack) - (nav-enemy-set-hit-from-direction arg0) - (attack-handler self arg0 arg3) - ) + (('touch) (set-time! (-> self touch-time)) (touch-handler self arg0 arg3)) + (('attack) (nav-enemy-set-hit-from-direction arg0) (attack-handler self arg0 arg3)) (('instant-death) (let ((gp-1 (-> self hit-from-dir))) (vector-z-quaternion! gp-1 (-> self collide-info quat)) (vector-float*! gp-1 gp-1 -1.0) - (vector-normalize! gp-1 1.0) - ) + (vector-normalize! gp-1 1.0)) (logclear! (-> self mask) (process-mask actor-pause attackable)) - (go-virtual nav-enemy-die) - ) + (go-virtual nav-enemy-die)) (('jump) (when (!= (-> self next-state name) 'nav-enemy-jump-land) (set! (-> self event-param-point quad) (-> (the-as vector (-> arg3 param 0)) quad)) (set! (-> self nav user-poly) (the-as nav-poly (-> arg3 param 1))) (set! (-> self jump-return-state) (the-as (state process) (-> self state))) - (go-virtual nav-enemy-jump) - ) - ) + (go-virtual nav-enemy-jump))) (('cue-jump-to-point) (when (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf11)) (set! (-> self event-param-point quad) (-> (the-as vector (-> arg3 param 0)) quad)) (let ((v0-0 (the-as object (logclear (-> self nav-enemy-flags) (nav-enemy-flags navenmf11))))) (set! (-> self nav-enemy-flags) (the-as nav-enemy-flags v0-0)) - v0-0 - ) - ) - ) - (('cue-chase) - (go-virtual nav-enemy-chase) - ) - (('cue-patrol) - (go-virtual nav-enemy-patrol) - ) - (('go-wait-for-cue) - (go-virtual nav-enemy-wait-for-cue) - ) - ) - ) + v0-0))) + (('cue-chase) (go-virtual nav-enemy-chase)) + (('cue-patrol) (go-virtual nav-enemy-patrol)) + (('go-wait-for-cue) (go-virtual nav-enemy-wait-for-cue)))) (defbehavior nav-enemy-jump-event-handler nav-enemy ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('touch) - (set-time! (-> self touch-time)) - (nav-enemy-touch-handler self arg0 arg3) - ) - (('attack) - (nav-enemy-set-hit-from-direction arg0) - (nav-enemy-attack-handler self arg0 arg3) - ) - ) - ) + (('touch) (set-time! (-> self touch-time)) (nav-enemy-touch-handler self arg0 arg3)) + (('attack) (nav-enemy-set-hit-from-direction arg0) (nav-enemy-attack-handler self arg0 arg3)))) (defbehavior process-drawable-death-event-handler process-drawable ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('death-start) - (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) - ) + (('death-start) (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0)) (('death-end) (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) - v0-0 - ) - ) - ) - ) + v0-0)))) nav-enemy-default-event-handler (defbehavior nav-enemy-common-post nav-enemy () (common-post self) - (none) - ) + (none)) (defbehavior nav-enemy-simple-post nav-enemy () (compute-alignment! (-> self align)) (nav-enemy-common-post) (update-transforms! (-> self collide-info)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-40 ((this nav-enemy)) (nav-control-method-11 (-> this nav) (-> this nav target-pos)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-41 ((this nav-enemy)) (cond ((-> this nav-info use-align) - (align-vel-and-quat-only! - (-> this align) - (align-opts adjust-xz-vel) - (-> this nav travel) - (the-as int 1.0) - 1.0 - (* (-> this enemy-info speed) (-> this speed-scale)) - ) - ) + (align-vel-and-quat-only! (-> this align) + (align-opts adjust-xz-vel) + (-> this nav travel) + (the-as int 1.0) + 1.0 + (* (-> this enemy-info speed) (-> this speed-scale)))) (else - (cond - ((-> this nav-info use-momentum) - (let* ((f0-3 (- (-> this target-speed) (-> this momentum-speed))) - (f1-4 (fmin (* (-> this acceleration) (seconds-per-frame)) (fabs f0-3))) - ) - (if (< f0-3 0.0) - (set! (-> this momentum-speed) (- (-> this momentum-speed) f1-4)) - (+! (-> this momentum-speed) f1-4) - ) - ) - ) - (else - (set! (-> this momentum-speed) (-> this target-speed)) - ) - ) - (let* ((f0-12 (fmin - (* (-> this speed-scale) (-> this momentum-speed)) - (* (vector-length (-> this nav travel)) (-> *display* frames-per-second)) - ) - ) - (v1-15 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> this nav travel) f0-12)) - ) - (set! (-> this collide-info transv x) (-> v1-15 x)) - (set! (-> this collide-info transv z) (-> v1-15 z)) - ) - ) - ) + (cond + ((-> this nav-info use-momentum) + (let* ((f0-3 (- (-> this target-speed) (-> this momentum-speed))) + (f1-4 (fmin (* (-> this acceleration) (seconds-per-frame)) (fabs f0-3)))) + (if (< f0-3 0.0) (set! (-> this momentum-speed) (- (-> this momentum-speed) f1-4)) (+! (-> this momentum-speed) f1-4)))) + (else (set! (-> this momentum-speed) (-> this target-speed)))) + (let* ((f0-12 (fmin (* (-> this speed-scale) (-> this momentum-speed)) + (* (vector-length (-> this nav travel)) (-> *display* frames-per-second)))) + (v1-15 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> this nav travel) f0-12))) + (set! (-> this collide-info transv x) (-> v1-15 x)) + (set! (-> this collide-info transv z) (-> v1-15 z))))) (if (-> this nav-info move-to-ground) - (vector-v++! - (-> this collide-info transv) - (compute-acc-due-to-gravity (-> this collide-info) (new-stack-vector0) 0.0) - ) - ) + (vector-v++! (-> this collide-info transv) (compute-acc-due-to-gravity (-> this collide-info) (new-stack-vector0) 0.0))) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-37 ((this nav-enemy)) (when (logtest? (-> this nav-enemy-flags) (nav-enemy-flags enable-travel)) (if (or (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf7)) - (logtest? (nav-control-flags navcf19) (-> this nav flags)) - ) - (seek-to-point-toward-point! - (-> this collide-info) - (-> this nav target-pos) - (-> this rotate-speed) - (-> this turn-time) - ) - (seek-toward-heading-vec! - (-> this collide-info) - (-> this nav travel) - (-> this rotate-speed) - (-> this turn-time) - ) - ) - ) + (logtest? (nav-control-flags navcf19) (-> this nav flags))) + (seek-to-point-toward-point! (-> this collide-info) (-> this nav target-pos) (-> this rotate-speed) (-> this turn-time)) + (seek-toward-heading-vec! (-> this collide-info) (-> this nav travel) (-> this rotate-speed) (-> this turn-time)))) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-38 ((this nav-enemy)) (if (-> this nav-info move-to-ground) - (integrate-for-enemy-with-move-to-ground! - (-> this collide-info) - (-> this collide-info transv) - (-> this nav-info gnd-collide-with) - 8192.0 - #f - (-> this nav-info hover-if-no-ground) - (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf15)) - ) - (collide-shape-moving-method-58 (-> this collide-info) (-> this collide-info transv)) - ) + (integrate-for-enemy-with-move-to-ground! (-> this collide-info) + (-> this collide-info transv) + (-> this nav-info gnd-collide-with) + 8192.0 + #f + (-> this nav-info hover-if-no-ground) + (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf15))) + (collide-shape-moving-method-58 (-> this collide-info) (-> this collide-info transv))) 0 - (none) - ) + (none)) (defbehavior nav-enemy-travel-post nav-enemy () (cond @@ -373,57 +230,40 @@ nav-enemy-default-event-handler (nav-enemy-method-41 self) (nav-enemy-method-37 self) (nav-enemy-method-38 self) - (nav-enemy-common-post) - ) + (nav-enemy-common-post)) (else - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) - (nav-enemy-simple-post) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) - ) - ) - ) + (if *debug-segment* + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) + (nav-enemy-simple-post) + (if *debug-segment* + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xff :b #xff :a #x80))))) 0 - (none) - ) + (none)) (defbehavior nav-enemy-patrol-post nav-enemy () (when (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) (< 2.0 (-> self nav block-count))) (set! (-> self nav block-count) 2.0) (logior! (-> self nav flags) (nav-control-flags navcf10)) - (nav-enemy-get-new-patrol-point) - ) - (nav-control-method-19 - (-> self nav) - (-> self nav target-pos) - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - ) - (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) - (logclear! (-> self nav flags) (nav-control-flags navcf10)) - ) + (nav-enemy-get-new-patrol-point)) + (nav-control-method-19 (-> self nav) + (-> self nav target-pos) + (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed)) + (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) (logclear! (-> self nav flags) (nav-control-flags navcf10))) (nav-enemy-travel-post) 0 - (none) - ) + (none)) (defbehavior nav-enemy-chase-post nav-enemy () (set! (-> self nav target-pos quad) (-> (target-pos 0) quad)) (nav-enemy-travel-post) 0 - (none) - ) + (none)) (defbehavior nav-enemy-flee-post nav-enemy () (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self collide-info trans) (target-pos 0)))) @@ -431,94 +271,63 @@ nav-enemy-default-event-handler 0.0 0.0 (set! (-> gp-1 y) 0.0) - (set! (-> self nav travel quad) (-> gp-1 quad)) - ) + (set! (-> self nav travel quad) (-> gp-1 quad))) (vector-normalize! (-> self nav travel) 409600.0) (nav-control-method-24 (-> self nav) 204.8 (the-as clip-travel-vector-to-mesh-return-info #f)) (vector+! (-> self nav target-pos) (-> self collide-info trans) (-> self nav travel)) (nav-enemy-travel-post) 0 - (none) - ) + (none)) (defbehavior nav-enemy-face-player-post nav-enemy () (if (and *target* (logtest? (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))) - (seek-to-point-toward-point! (-> self collide-info) (target-pos 0) (-> self rotate-speed) (-> self turn-time)) - ) + (seek-to-point-toward-point! (-> self collide-info) (target-pos 0) (-> self rotate-speed) (-> self turn-time))) (nav-enemy-simple-post) 0 - (none) - ) + (none)) (defbehavior nav-enemy-falling-post nav-enemy () - (vector-v++! - (-> self collide-info transv) - (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0) - ) - (fill-cache-integrate-and-collide! - (-> self collide-info) - (-> self collide-info transv) - (-> self collide-info root-prim collide-with) - ) + (vector-v++! (-> self collide-info transv) (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0)) + (fill-cache-integrate-and-collide! (-> self collide-info) + (-> self collide-info transv) + (-> self collide-info root-prim collide-with)) (nav-enemy-common-post) 0 - (none) - ) + (none)) (defbehavior nav-enemy-death-post nav-enemy () - (vector-v++! - (-> self collide-info transv) - (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0) - ) + (vector-v++! (-> self collide-info transv) (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0)) (integrate-no-collide! (-> self collide-info) (-> self collide-info transv)) (nav-enemy-common-post) 0 - (none) - ) + (none)) (defbehavior nav-enemy-neck-control-look-at nav-enemy () (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf14)) - (if (nonzero? (-> self neck)) - (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) - ) + (if (nonzero? (-> self neck)) (set-mode! (-> self neck) (joint-mod-handler-mode look-at))) 0 - (none) - ) + (none)) (defbehavior nav-enemy-neck-control-inactive nav-enemy () (when (and (nonzero? (-> self neck)) (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf14))) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf14)) - (shut-down! (-> self neck)) - ) + (shut-down! (-> self neck))) 0 - (none) - ) + (none)) (defun nav-enemy-player-vulnerable? () - (the-as - symbol - (and *target* - (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) - ) - ) + (the-as symbol + (and *target* + (not (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))))) (defmethod target-in-range? ((this nav-enemy) (arg0 float)) (and *target* (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) (and (or (not (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf12))) - (< (vector-vector-distance (target-pos 0) (-> this collide-info trans)) arg0) - ) - (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)) - ) - ) - ) + (< (vector-vector-distance (target-pos 0) (-> this collide-info trans)) arg0)) + (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))))) (defbehavior nav-enemy-notice-player? nav-enemy () (let ((gp-0 #f)) @@ -526,150 +335,94 @@ nav-enemy-default-event-handler ((logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)) (when (time-elapsed? (-> self notice-time) (-> self reaction-time)) (set! gp-0 #t) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)) - ) - ) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)))) (else - (when (or (target-in-range? self (-> self nav-info notice-distance)) - (and (-> self nav-info use-proximity-notice) - *target* - (>= (-> self nav-info proximity-notice-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)) - (set-time! (-> self notice-time)) - ) - ) - ) - gp-0 - ) - ) + (when (or (target-in-range? self (-> self nav-info notice-distance)) + (and (-> self nav-info use-proximity-notice) + *target* + (>= (-> self nav-info proximity-notice-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)) + (set-time! (-> self notice-time))))) + gp-0)) (defbehavior nav-enemy-facing-direction? nav-enemy ((arg0 vector) (arg1 float)) (let ((s4-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self collide-info quat))) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> arg0 quad)) (set! (-> s5-0 y) 0.0) (vector-normalize! s5-0 1.0) - (>= (vector-dot s4-0 s5-0) (cos arg1)) - ) - ) + (>= (vector-dot s4-0 s5-0) (cos arg1)))) (defbehavior nav-enemy-facing-point? nav-enemy ((arg0 vector) (arg1 float)) (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> self collide-info trans)))) - (nav-enemy-facing-direction? v1-1 arg1) - ) - ) + (nav-enemy-facing-direction? v1-1 arg1))) (defun nav-enemy-facing-player? ((arg0 float)) - (nav-enemy-facing-point? (target-pos 0) arg0) - ) + (nav-enemy-facing-point? (target-pos 0) arg0)) (defbehavior nav-enemy-test-nav-mesh-intersection-xz? nav-enemy ((arg0 vector)) - (the-as symbol (nav-control-method-16 (-> self nav) arg0)) - ) + (the-as symbol (nav-control-method-16 (-> self nav) arg0))) (defbehavior nav-enemy-test-point-in-nav-mesh? nav-enemy ((arg0 vector)) - (the-as symbol (and (nav-control-method-16 (-> self nav) arg0) - (< (-> arg0 y) (+ (-> self collide-info trans y) (-> self enemy-info notice-top))) - ) - ) - ) + (the-as symbol + (and (nav-control-method-16 (-> self nav) arg0) + (< (-> arg0 y) (+ (-> self collide-info trans y) (-> self enemy-info notice-top)))))) (defbehavior nav-enemy-test-point-near-nav-mesh? nav-enemy ((arg0 vector)) (and (is-in-mesh? (-> self nav) arg0 (-> self nav-info notice-nav-radius)) - (< (-> arg0 y) (+ (-> self collide-info trans y) (-> self enemy-info notice-top))) - ) - ) + (< (-> arg0 y) (+ (-> self collide-info trans y) (-> self enemy-info notice-top))))) (defbehavior nav-enemy-get-new-patrol-point nav-enemy () (new-patrol-point! self) - 0 - ) + 0) (defbehavior nav-enemy-set-base-collide-sphere-collide-with nav-enemy ((arg0 uint)) (let ((s5-0 (-> self collide-info root-prim))) (set! (-> s5-0 collide-with) (the-as collide-kind arg0)) - (let ((s4-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) collide-shape-prim-group)) - s5-0 - ) - ) - (s5-1 (the-as collide-shape-prim #f)) - ) + (let ((s4-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) collide-shape-prim-group)) s5-0)) + (s5-1 (the-as collide-shape-prim #f))) (when s4-0 (dotimes (s3-0 (-> (the-as collide-shape-prim-group s4-0) num-prims)) (let* ((s2-0 (-> (the-as collide-shape-prim-group (+ (* s3-0 4) (the-as int s4-0))) prims 0)) - (v1-6 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) collide-shape-prim-sphere)) - s2-0 - ) - ) - ) + (v1-6 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) collide-shape-prim-sphere)) s2-0))) (when v1-6 (if (or (not s5-1) (< (-> (the-as collide-shape-prim-sphere v1-6) transform-index) - (-> (the-as collide-shape-prim-group s5-1) transform-index) - ) + (-> (the-as collide-shape-prim-group s5-1) transform-index)) (and (= (-> (the-as collide-shape-prim-sphere v1-6) transform-index) - (-> (the-as collide-shape-prim-group s5-1) transform-index) - ) + (-> (the-as collide-shape-prim-group s5-1) transform-index)) (< (-> (the-as collide-shape-prim-sphere v1-6) local-sphere y) - (-> (the-as collide-shape-prim-group s5-1) local-sphere y) - ) - ) - ) - (set! s5-1 v1-6) - ) - ) - ) - ) - (if s5-1 - (set! (-> s5-1 collide-with) (the-as collide-kind arg0)) - ) - ) - ) - ) + (-> (the-as collide-shape-prim-group s5-1) local-sphere y)))) + (set! s5-1 v1-6))))) + (if s5-1 (set! (-> s5-1 collide-with) (the-as collide-kind arg0)))))) 0 - (none) - ) + (none)) (defbehavior nav-enemy-set-hit-from-direction nav-enemy ((arg0 process)) (let* ((gp-0 (-> self hit-from-dir)) (s5-0 arg0) - (v1-1 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - s5-0 - ) - ) - ) + (v1-1 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) s5-0))) (set! (-> gp-0 quad) (-> *null-vector* quad)) (when v1-1 (vector-! gp-0 (-> self collide-info trans) (-> (the-as process-drawable v1-1) root trans)) (set! (-> gp-0 y) 0.0) - (vector-xz-normalize! gp-0 1.0) - ) - ) + (vector-xz-normalize! gp-0 1.0))) 0 - (none) - ) + (none)) (defbehavior nav-enemy-fall-and-play-death-anim nav-enemy ((arg0 art-joint-anim) (arg1 float) (arg2 float) (arg3 float) (arg4 int)) (nav-enemy-neck-control-inactive) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self skel root-channel 0 frame-group) arg0) (let ((s4-1 #f) - (s3-0 (-> self collide-info)) - ) - (when (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape-moving)) - s3-0 - ) + (s3-0 (-> self collide-info))) + (when (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape-moving)) s3-0) (when (= (vector-xz-length-squared (-> self hit-from-dir)) 0.0) (vector-z-quaternion! (-> self hit-from-dir) (-> self collide-info quat)) (vector-negate-in-place! (-> self hit-from-dir)) (set! (-> self hit-from-dir y) 0.0) - (vector-xz-normalize! (-> self hit-from-dir) 1.0) - ) + (vector-xz-normalize! (-> self hit-from-dir) 1.0)) (set! (-> self collide-info transv y) 65502.96) (ja :num-func num-func-identity :frame-num 0.0) (set-time! (-> self state-time)) @@ -683,26 +436,15 @@ nav-enemy-default-event-handler (when (not (logtest? (-> self align flags) (align-flags disabled))) (let ((f0-6 (* (- (-> self align delta trans z)) (-> *display* frames-per-second)))) (set! (-> self collide-info transv x) (* (-> self hit-from-dir x) f0-6)) - (set! (-> self collide-info transv z) (* (-> self hit-from-dir z) f0-6)) - ) - ) - ) - ) + (set! (-> self collide-info transv z) (* (-> self hit-from-dir z) f0-6)))))) (else - (let ((f0-8 20480.0)) - (set! (-> self collide-info transv x) (* (-> self hit-from-dir x) f0-8)) - (set! (-> self collide-info transv z) (* (-> self hit-from-dir z) f0-8)) - ) - ) - ) + (let ((f0-8 20480.0)) + (set! (-> self collide-info transv x) (* (-> self hit-from-dir x) f0-8)) + (set! (-> self collide-info transv z) (* (-> self hit-from-dir z) f0-8))))) (suspend) - (ja :num! (seek! max arg2)) - ) - ) - ) + (ja :num! (seek! max arg2))))) 0 - (none) - ) + (none)) (defbehavior nav-enemy-turn-to-face-dir nav-enemy ((arg0 vector) (arg1 float)) (local-vars (v1-16 symbol)) @@ -713,659 +455,449 @@ nav-enemy-default-event-handler (seek-toward-heading-vec! (-> self collide-info) arg0 (-> self rotate-speed) (-> self turn-time)) (suspend) (ja :num! (loop! 0.75)) - (set! v1-16 (or (time-elapsed? s4-0 (seconds 10)) (nav-enemy-facing-direction? arg0 arg1))) - ) - ) + (set! v1-16 (or (time-elapsed? s4-0 (seconds 10)) (nav-enemy-facing-direction? arg0 arg1))))) (forward-up->quaternion (-> self collide-info quat) arg0 *y-vector*) 0 - (none) - ) + (none)) (defbehavior nav-enemy-turn-to-face-point nav-enemy ((arg0 vector) (arg1 float)) (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> self collide-info trans)))) (set! (-> gp-1 y) 0.0) (when (< 0.0 (vector-length gp-1)) (vector-normalize! gp-1 1.0) - (nav-enemy-turn-to-face-dir gp-1 arg1) - ) - ) + (nav-enemy-turn-to-face-dir gp-1 arg1))) 0 - (none) - ) + (none)) (defmethod run-logic? ((this nav-enemy)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (or (and (nonzero? (-> this draw)) (and (>= (+ (-> *ACTOR-bank* pause-dist) (-> this collide-info pause-adjust-distance)) - (vector-vector-distance (-> this collide-info trans) (camera-pos)) - ) - (or (logtest? (-> this draw status) (draw-status was-drawn)) (!= (-> this next-state name) 'nav-enemy-idle)) - ) - ) + (vector-vector-distance (-> this collide-info trans) (camera-pos))) + (or (logtest? (-> this draw status) (draw-status was-drawn)) (!= (-> this next-state name) 'nav-enemy-idle)))) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) (defstate nav-enemy-idle (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (nav-enemy-neck-control-inactive) - (set-time! (-> self state-time)) - (if (-> self nav-info move-to-ground) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (-> self nav-info gnd-collide-with)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1 navenmf2)) - (set! (-> self state-timeout) (seconds 1)) - ) - :trans (behavior () - (if (and (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status was-drawn)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - :post ja-post - ) + :enter + (behavior () + (nav-enemy-neck-control-inactive) + (set-time! (-> self state-time)) + (if (-> self nav-info move-to-ground) + (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (-> self nav-info gnd-collide-with))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1 navenmf2)) + (set! (-> self state-timeout) (seconds 1))) + :trans + (behavior () + (if (and (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status was-drawn))) + (go-virtual nav-enemy-patrol))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja :group! (-> self draw art-group data (-> self nav-info idle-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) (loop (suspend) (ja :num! (loop! f30-0))))) + :post ja-post) (defstate nav-enemy-patrol (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self nav flags) - (the-as nav-control-flags (the-as int (logior (nav-control-flags navcf19) (-> self nav flags)))) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (set! (-> self state-timeout) (seconds 1)) - (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) - (set! (-> self acceleration) (-> self nav-info walk-acceleration)) - (set! (-> self rotate-speed) (-> self nav-info walk-rotate-speed)) - (set! (-> self turn-time) (-> self nav-info walk-turn-time)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (when (time-elapsed? (-> self state-time) (-> self state-timeout)) - (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-status was-drawn))) - (set-time! (-> self free-time)) - ) - (if (or (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self free-time) (seconds 2)) - ) - (go-virtual nav-enemy-idle) - ) - ) - (if (and (-> self nav-info use-flee) - (and (and *target* (>= (-> self nav-info notice-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (let ((gp-0 'racer)) - (= gp-0 (send-event *target* 'query 'mode)) - ) - ) - ) - (go-virtual nav-enemy-flee) - ) - (if (nav-enemy-notice-player?) - (go-virtual nav-enemy-notice) - ) - ) - ) - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (when (nav-enemy-rnd-go-idle? 0.2) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self nav flags) + (the-as nav-control-flags (the-as int (logior (nav-control-flags navcf19) (-> self nav flags))))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (set! (-> self state-timeout) (seconds 1)) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (set! (-> self acceleration) (-> self nav-info walk-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info walk-rotate-speed)) + (set! (-> self turn-time) (-> self nav-info walk-turn-time))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 0.1)) + (when (time-elapsed? (-> self state-time) (-> self state-timeout)) + (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-status was-drawn))) + (set-time! (-> self free-time))) + (if (or (or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self free-time) (seconds 2))) + (go-virtual nav-enemy-idle))) + (if (and (-> self nav-info use-flee) + (and (and *target* + (>= (-> self nav-info notice-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (let ((gp-0 'racer)) (= gp-0 (send-event *target* 'query 'mode))))) + (go-virtual nav-enemy-flee)) + (if (nav-enemy-notice-player?) (go-virtual nav-enemy-notice)))) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (loop + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) - (ja-blend-eval) (suspend) - (ja :num! (seek! max f30-0)) - ) - (until (not (nav-enemy-rnd-go-idle? 0.2)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) + (ja :num! (seek! max f30-0))) + (when (nav-enemy-rnd-go-idle? 0.2) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.6)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) + (ja-blend-eval) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) - :post nav-enemy-patrol-post - ) + (ja :num! (seek! max f30-0))) + (until (not (nav-enemy-rnd-go-idle? 0.2)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.6)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max f30-0))))))) + :post nav-enemy-patrol-post) (defstate nav-enemy-notice (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-neck-control-look-at) - (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go-virtual nav-enemy-chase) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (let ((gp-0 (-> self nav)) - (v1-10 (target-pos 0)) - ) - (set! (-> gp-0 target-pos quad) (-> v1-10 quad)) - ) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) - (set! (-> self turn-time) (-> self nav-info run-turn-time)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek-toward-heading-vec! - (-> self collide-info) - (-> self nav travel) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-neck-control-look-at) + (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) (go-virtual nav-enemy-chase)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (let ((gp-0 (-> self nav)) + (v1-10 (target-pos 0))) + (set! (-> gp-0 target-pos quad) (-> v1-10 quad))) + (nav-control-method-11 (-> self nav) (-> self nav target-pos)) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (-> self nav-info run-turn-time))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (seek-toward-heading-vec! (-> self collide-info) (-> self nav travel) (-> self rotate-speed) (-> self turn-time)) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-chase)) + :post nav-enemy-simple-post) (defbehavior ja-group-index? nav-enemy ((arg0 int)) - (ja-group? (-> self draw art-group data arg0)) - ) + (ja-group? (-> self draw art-group data arg0))) (defstate nav-enemy-flee (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (-> self reaction-time)) - (if (or (or (not *target*) (< (-> self nav-info stop-chase-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (let ((gp-0 'racer)) - (!= gp-0 (send-event *target* 'query 'mode)) - ) - ) - (go-virtual nav-enemy-patrol) - ) - ) - ) - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (-> self reaction-time)) + (if (or (or (not *target*) + (< (-> self nav-info stop-chase-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (let ((gp-0 'racer)) (!= gp-0 (send-event *target* 'query 'mode)))) + (go-virtual nav-enemy-patrol)))) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - :post nav-enemy-face-player-post - ) + (ja :num! (seek! max f30-0))) + (ja-channel-push! 1 (seconds 0.2)) + (loop + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))))) + :post nav-enemy-face-player-post) (defbehavior nav-enemy-reset-frustration nav-enemy () (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf13)) - (if *target* - (set! (-> self frustration-point quad) (-> *target* control shadow-pos quad)) - ) + (if *target* (set! (-> self frustration-point quad) (-> *target* control shadow-pos quad))) (set-time! (-> self frustration-time)) 0 - (none) - ) + (none)) (defbehavior nav-enemy-player-at-frustration-point? nav-enemy () - (if *target* - (< (vector-vector-distance (-> *target* control shadow-pos) (-> self frustration-point)) 6144.0) - ) - ) + (if *target* (< (vector-vector-distance (-> *target* control shadow-pos) (-> self frustration-point)) 6144.0))) (defbehavior nav-enemy-frustrated? nav-enemy () - (and (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf13)) - (nav-enemy-player-at-frustration-point?) - ) - ) + (and (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf13)) (nav-enemy-player-at-frustration-point?))) (defstate nav-enemy-chase (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (nav-enemy-neck-control-look-at) - (set-time! (-> self state-time)) - (set-time! (-> self free-time)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (set! (-> self target-speed) (-> self nav-info run-travel-speed)) - (set! (-> self acceleration) (-> self nav-info run-acceleration)) - (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) - (set! (-> self turn-time) (-> self nav-info run-turn-time)) - (nav-enemy-reset-frustration) - ) - :trans (behavior () - (if (logtest? (-> *target* state-flags) (state-flags do-not-notice)) - (go-virtual nav-enemy-patrol) - ) - (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (go-virtual nav-enemy-victory) - ) - (if (or (not (nav-enemy-player-at-frustration-point?)) - (< (-> self nav-info frustration-distance) - (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)) - ) - ) - (nav-enemy-reset-frustration) - ) - (when (time-elapsed? (-> self state-time) (-> self reaction-time)) - (if (time-elapsed? (-> self frustration-time) (+ (-> self reaction-time) (-> self nav-info frustration-time))) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf13)) - ) - (if (or (not (target-in-range? self (-> self nav-info stop-chase-distance))) - (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf13)) - ) - (go-virtual nav-enemy-stop-chase) - ) - (cond - ((logtest? (nav-control-flags navcf17) (-> self nav flags)) - (if (time-elapsed? (-> self free-time) (seconds 1)) - (go-virtual nav-enemy-patrol) - ) - ) - (else - (set-time! (-> self free-time)) - ) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - :post nav-enemy-chase-post - ) + :enter + (behavior () + (nav-enemy-neck-control-look-at) + (set-time! (-> self state-time)) + (set-time! (-> self free-time)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (set! (-> self target-speed) (-> self nav-info run-travel-speed)) + (set! (-> self acceleration) (-> self nav-info run-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (-> self nav-info run-turn-time)) + (nav-enemy-reset-frustration)) + :trans + (behavior () + (if (logtest? (-> *target* state-flags) (state-flags do-not-notice)) (go-virtual nav-enemy-patrol)) + (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) (go-virtual nav-enemy-victory)) + (if (or (not (nav-enemy-player-at-frustration-point?)) + (< (-> self nav-info frustration-distance) (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)))) + (nav-enemy-reset-frustration)) + (when (time-elapsed? (-> self state-time) (-> self reaction-time)) + (if (time-elapsed? (-> self frustration-time) (+ (-> self reaction-time) (-> self nav-info frustration-time))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf13))) + (if (or (not (target-in-range? self (-> self nav-info stop-chase-distance))) + (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf13))) + (go-virtual nav-enemy-stop-chase)) + (cond + ((logtest? (nav-control-flags navcf17) (-> self nav flags)) + (if (time-elapsed? (-> self free-time) (seconds 1)) (go-virtual nav-enemy-patrol))) + (else (set-time! (-> self free-time)))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) (loop (suspend) (ja :num! (loop! f30-0))))) + :post nav-enemy-chase-post) (defstate nav-enemy-stop-chase (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (let* ((f30-0 (vector-vector-distance (-> self collide-info trans) (target-pos 0))) - (gp-1 (the int (+ (lerp-scale 600.0 1800.0 f30-0 32768.0 122880.0) (nav-enemy-rnd-float-range 0.0 30.0)))) - ) - (if (< f30-0 40960.0) - (go-virtual nav-enemy-stare) - ) - (set! (-> self state-timeout) (the-as time-frame gp-1)) - ) - (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) - (set! (-> self acceleration) (-> self nav-info walk-acceleration)) - (set! (-> self rotate-speed) (-> self nav-info walk-rotate-speed)) - (set! (-> self turn-time) (-> self nav-info walk-turn-time)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (if (logtest? (-> *target* state-flags) (state-flags do-not-notice)) - (go-virtual nav-enemy-patrol) - ) - (if (and (target-in-range? self (-> self nav-info notice-distance)) (not (nav-enemy-frustrated?))) - (go-virtual nav-enemy-chase) - ) - (if (or (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (logtest? (nav-control-flags navcf17) (-> self nav flags)) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - ) - (go-virtual nav-enemy-stare) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - :post nav-enemy-chase-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (let* ((f30-0 (vector-vector-distance (-> self collide-info trans) (target-pos 0))) + (gp-1 (the int (+ (lerp-scale 600.0 1800.0 f30-0 32768.0 122880.0) (nav-enemy-rnd-float-range 0.0 30.0))))) + (if (< f30-0 40960.0) (go-virtual nav-enemy-stare)) + (set! (-> self state-timeout) (the-as time-frame gp-1))) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (set! (-> self acceleration) (-> self nav-info walk-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info walk-rotate-speed)) + (set! (-> self turn-time) (-> self nav-info walk-turn-time))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 0.1)) + (if (logtest? (-> *target* state-flags) (state-flags do-not-notice)) (go-virtual nav-enemy-patrol)) + (if (and (target-in-range? self (-> self nav-info notice-distance)) (not (nav-enemy-frustrated?))) + (go-virtual nav-enemy-chase)) + (if (or (or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (logtest? (nav-control-flags navcf17) (-> self nav flags)) + (time-elapsed? (-> self state-time) (-> self state-timeout))) + (go-virtual nav-enemy-stare)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) (loop (suspend) (ja :num! (loop! f30-0))))) + :post nav-enemy-chase-post) (defstate nav-enemy-stare (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (let ((f0-0 (vector-vector-distance (-> self collide-info trans) (target-pos 0)))) - (set! (-> self state-timeout) - (the-as - time-frame - (the int (+ (lerp-scale 3000.0 0.0 f0-0 12288.0 122880.0) (nav-enemy-rnd-float-range 0.0 900.0))) - ) - ) - ) - (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) - (set! (-> self turn-time) (-> self nav-info run-turn-time)) - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (if (logtest? (-> *target* state-flags) (state-flags do-not-notice)) - (go-virtual nav-enemy-patrol) - ) - (cond - ((target-in-range? self (-> self nav-info notice-distance)) - (if (and (time-elapsed? (-> self notice-time) (-> self reaction-time)) (not (nav-enemy-frustrated?))) - (go-virtual nav-enemy-chase) - ) - ) - (else - (set-time! (-> self notice-time)) - ) - ) - (when (not (or (and *target* (>= 40960.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (and (-> self nav-info use-proximity-notice) - *target* - (>= (-> self nav-info proximity-notice-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - ) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (if (time-elapsed? (-> self state-time) (-> self state-timeout)) - (go-virtual nav-enemy-give-up) - ) - ) - (if (or (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (logtest? (nav-control-flags navcf17) (-> self nav flags)) - ) - (go-virtual nav-enemy-give-up) - ) - ) - ) - :code (behavior () - (go-virtual nav-enemy-give-up) - ) - :post nav-enemy-face-player-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (let ((f0-0 (vector-vector-distance (-> self collide-info trans) (target-pos 0)))) + (set! (-> self state-timeout) + (the-as time-frame (the int (+ (lerp-scale 3000.0 0.0 f0-0 12288.0 122880.0) (nav-enemy-rnd-float-range 0.0 900.0)))))) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (-> self nav-info run-turn-time)) + (set! (-> self collide-info transv quad) (-> *null-vector* quad))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 0.1)) + (if (logtest? (-> *target* state-flags) (state-flags do-not-notice)) (go-virtual nav-enemy-patrol)) + (cond + ((target-in-range? self (-> self nav-info notice-distance)) + (if (and (time-elapsed? (-> self notice-time) (-> self reaction-time)) (not (nav-enemy-frustrated?))) + (go-virtual nav-enemy-chase))) + (else (set-time! (-> self notice-time)))) + (when (not (or (and *target* (>= 40960.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (and (-> self nav-info use-proximity-notice) + *target* + (>= (-> self nav-info proximity-notice-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (if (time-elapsed? (-> self state-time) (-> self state-timeout)) (go-virtual nav-enemy-give-up))) + (if (or (or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (logtest? (nav-control-flags navcf17) (-> self nav flags))) + (go-virtual nav-enemy-give-up)))) + :code + (behavior () + (go-virtual nav-enemy-give-up)) + :post nav-enemy-face-player-post) (defstate nav-enemy-give-up (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (nav-enemy-neck-control-inactive) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (if (target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - ) - ) - ) - :code (behavior () - (go-virtual nav-enemy-patrol) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (nav-enemy-neck-control-inactive) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 0.1)) + (if (target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase)))) + :code + (behavior () + (go-virtual nav-enemy-patrol)) + :post nav-enemy-simple-post) (defstate nav-enemy-attack (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-victory) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (go-virtual nav-enemy-victory)) + :post nav-enemy-simple-post) (defstate nav-enemy-victory (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info victory-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-stare) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self collide-info transv quad) (-> *null-vector* quad))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info victory-anim)) + :num! (seek! max f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-stare)) + :post nav-enemy-simple-post) (defstate nav-enemy-die (nav-enemy) :virtual #t :event process-drawable-death-event-handler - :enter (behavior () - (send-event (ppointer->process (-> self parent)) 'child-die) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (clear-collide-with-as (-> self collide-info)) - (nav-enemy-fall-and-play-death-anim - (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) - 1.0 - 1.0 - 1000000000000000.0 - 600 - ) - (send-event self 'death-end) - (if (logtest? (-> self enemy-info options) (fact-options has-power-cell)) - (go-virtual nav-enemy-fuel-cell) - ) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - :post nav-enemy-death-post - ) + :enter + (behavior () + (send-event (ppointer->process (-> self parent)) 'child-die)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (clear-collide-with-as (-> self collide-info)) + (nav-enemy-fall-and-play-death-anim (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) + 1.0 + 1.0 + 1000000000000000.0 + 600) + (send-event self 'death-end) + (if (logtest? (-> self enemy-info options) (fact-options has-power-cell)) (go-virtual nav-enemy-fuel-cell)) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post nav-enemy-death-post) (defstate nav-enemy-fuel-cell (nav-enemy) :virtual #t :event process-drawable-fuel-cell-handler - :code (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self collide-info)) - (ja-post) - (process-entity-status! self (entity-perm-status complete) #t) - (when (not (task-complete? *game-info* (-> self entity extra perm task))) - (label cfg-1) - (birth-pickup-at-point - (-> self collide-info trans) - (pickup-type fuel-cell) - (the float (the-as int (-> self entity extra perm task))) - #f - self - (the-as fact-info #f) - ) - (when (not (-> self child)) - (suspend) - (goto cfg-1) - ) - (while (-> self child) - (suspend) - ) - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self collide-info)) + (ja-post) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (label cfg-1) + (birth-pickup-at-point (-> self collide-info trans) + (pickup-type fuel-cell) + (the float (the-as int (-> self entity extra perm task))) + #f + self + (the-as fact-info #f)) + (when (not (-> self child)) + (suspend) + (goto cfg-1)) + (while (-> self child) + (suspend))) + (cleanup-for-death self))) (defbehavior nav-enemy-jump-post nav-enemy () (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self jump-dest) - (-> self rotate-speed) - (-> self turn-time) - ) - ) + (seek-to-point-toward-point! (-> self collide-info) (-> self jump-dest) (-> self rotate-speed) (-> self turn-time))) (when (logtest? (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) (let ((f30-0 (the float (- (current-time) (-> self jump-time))))) (let ((v1-12 (eval-position! (-> self jump-trajectory) f30-0 (new 'stack-no-clear 'vector)))) - (set! (-> self collide-info trans quad) (-> v1-12 quad)) - ) - (eval-velocity! (-> self jump-trajectory) f30-0 (-> self collide-info transv)) - ) - ) + (set! (-> self collide-info trans quad) (-> v1-12 quad))) + (eval-velocity! (-> self jump-trajectory) f30-0 (-> self collide-info transv)))) (nav-enemy-simple-post) 0 - (none) - ) + (none)) (defbehavior nav-enemy-initialize-custom-jump nav-enemy ((arg0 vector) (arg1 symbol) (arg2 float) (arg3 float) (arg4 float)) (set! (-> self jump-dest quad) (-> arg0 quad)) (let* ((s4-0 (-> self collide-info trans)) (f28-0 (vector-vector-xz-distance s4-0 arg0)) - (f30-0 (fmax arg2 (* arg3 f28-0))) - ) + (f30-0 (fmax arg2 (* arg3 f28-0)))) (let ((f26-0 (- (-> arg0 y) (-> s4-0 y)))) (let ((f24-0 (vector-length (-> self collide-info transv))) (s1-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self collide-info quat))) - (s2-2 (vector-! (new 'stack-no-clear 'vector) arg0 s4-0)) - ) + (s2-2 (vector-! (new 'stack-no-clear 'vector) arg0 s4-0))) (set! (-> s1-1 y) 0.0) (set! (-> s2-2 y) 0.0) (vector-xz-normalize! s1-1 1.0) (vector-xz-normalize! s2-2 1.0) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump drop-jump)) (if (or (>= (* 0.5 (-> self nav-info run-travel-speed)) f24-0) (>= (cos 3640.889) (vector-dot s1-1 s2-2))) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)) - ) - ) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)))) (if (or (and (< f26-0 0.0) (< f28-0 (fabs f26-0))) (and (< (fabs f26-0) 12288.0) (< f28-0 20480.0))) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags drop-jump)) - ) - ) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags drop-jump)))) (when (and arg1 (logtest? (-> self nav-enemy-flags) (nav-enemy-flags drop-jump))) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)) - (set! f30-0 2048.0) - ) - (setup-from-to-height! (-> self jump-trajectory) s4-0 arg0 f30-0 (* 0.000011111111 arg4)) - ) + (set! f30-0 2048.0)) + (setup-from-to-height! (-> self jump-trajectory) s4-0 arg0 f30-0 (* 0.000011111111 arg4))) (set! (-> self nav extra-nav-sphere quad) (-> arg0 quad)) (set! (-> self nav extra-nav-sphere w) (-> self collide-info nav-radius)) (logior! (-> self collide-info nav-flags) (nav-flags navf1)) 0 - (none) - ) + (none)) (defbehavior nav-enemy-initialize-jump nav-enemy ((arg0 vector)) - (nav-enemy-initialize-custom-jump - arg0 - #t - (-> self nav-info jump-height-min) - (-> self nav-info jump-height-factor) - -409600.0 - ) + (nav-enemy-initialize-custom-jump arg0 + #t + (-> self nav-info jump-height-min) + (-> self nav-info jump-height-factor) + -409600.0) 0 - (none) - ) + (none)) (defbehavior nav-enemy-execute-custom-jump nav-enemy ((arg0 int) (arg1 float) (arg2 float)) (when (logtest? (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)) @@ -1376,271 +908,205 @@ nav-enemy-default-event-handler (until (ja-done? 0) (ja-blend-eval) (suspend) - (ja :num! (seek! (ja-aframe arg1 0) arg2)) - ) - ) + (ja :num! (seek! (ja-aframe arg1 0) arg2)))) (logclear! (-> self collide-info status) (cshape-moving-flags onsurf onground tsurf)) (set-time! (-> self jump-time)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) (cond ((logtest? (-> self nav-enemy-flags) (nav-enemy-flags drop-jump)) (cond - ((ja-group? (-> self draw art-group data (-> self nav-info run-anim))) - ) + ((ja-group? (-> self draw art-group data (-> self nav-info run-anim)))) (else - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - ) - ) - ) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) + (ja :num-func num-func-identity :frame-num 0.0)))) (else - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! (-> self draw art-group data arg0)) - (ja :num-func num-func-identity :frame-num (ja-aframe arg1 0)) - ) - ) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data arg0)) + (ja :num-func num-func-identity :frame-num (ja-aframe arg1 0)))) (while (< (the float (- (current-time) (-> self jump-time))) (-> self jump-trajectory time)) (suspend) (ja :num! (seek!)) - (ja-blend-eval) - ) + (ja-blend-eval)) (set! (-> self collide-info trans quad) (-> self jump-dest quad)) (set! (-> self collide-info transv y) 0.0) (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) 0 - (none) - ) + (none)) (defbehavior nav-enemy-execute-jump nav-enemy () - (nav-enemy-execute-custom-jump - (-> self nav-info jump-anim) - (-> self nav-info jump-anim-start-frame) - (-> self nav-info jump-start-anim-speed) - ) + (nav-enemy-execute-custom-jump (-> self nav-info jump-anim) + (-> self nav-info jump-anim-start-frame) + (-> self nav-info jump-start-anim-speed)) 0 - (none) - ) + (none)) (defbehavior nav-enemy-jump-land-anim nav-enemy () (ja-no-eval :num! (seek!)) (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info jump-land-anim)) - :num! (seek!) - :frame-num 0.0 - ) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info jump-land-anim)) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (ja-blend-eval) (suspend) - (ja :num! (seek!)) - ) + (ja :num! (seek!))) 0 - (none) - ) + (none)) (defstate nav-enemy-jump (nav-enemy) :virtual #t :event nav-enemy-jump-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (if (and (-> self nav-info use-jump-blocked) (nav-enemy-method-50 self (-> self event-param-point))) - (go-virtual nav-enemy-jump-blocked) - ) - (nav-enemy-initialize-jump (-> self event-param-point)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - ) - :code (behavior () - (nav-enemy-execute-jump) - (let ((a1-0 (-> self nav user-poly))) - (if (not a1-0) - (set! a1-0 (nav-control-method-16 (-> self nav) (-> self jump-dest))) - ) - (if a1-0 - (set-current-poly! (-> self nav) a1-0) - ) - ) - (go-virtual nav-enemy-jump-land) - ) - :post nav-enemy-jump-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (if (and (-> self nav-info use-jump-blocked) (nav-enemy-method-50 self (-> self event-param-point))) + (go-virtual nav-enemy-jump-blocked)) + (nav-enemy-initialize-jump (-> self event-param-point))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel))) + :code + (behavior () + (nav-enemy-execute-jump) + (let ((a1-0 (-> self nav user-poly))) + (if (not a1-0) (set! a1-0 (nav-control-method-16 (-> self nav) (-> self jump-dest)))) + (if a1-0 (set-current-poly! (-> self nav) a1-0))) + (go-virtual nav-enemy-jump-land)) + :post nav-enemy-jump-post) (defbehavior nav-enemy-jump-land-post nav-enemy () (compute-alignment! (-> self align)) (nav-control-method-11 (-> self nav) (-> self nav target-pos)) (seek! (-> self target-speed) (-> self nav-info run-travel-speed) 2048.0) (set! (-> self momentum-speed) (-> self target-speed)) - (let* ((f0-7 - (fmin - (* (-> self speed-scale) (-> self momentum-speed)) - (* (vector-length (-> self nav travel)) (-> *display* frames-per-second)) - ) - ) - (v1-9 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self nav travel) f0-7)) - ) + (let* ((f0-7 (fmin (* (-> self speed-scale) (-> self momentum-speed)) + (* (vector-length (-> self nav travel)) (-> *display* frames-per-second)))) + (v1-9 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self nav travel) f0-7))) (set! (-> self collide-info transv x) (-> v1-9 x)) - (set! (-> self collide-info transv z) (-> v1-9 z)) - ) + (set! (-> self collide-info transv z) (-> v1-9 z))) (if (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf7)) - (logtest? (nav-control-flags navcf19) (-> self nav flags)) - ) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav target-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (seek-toward-heading-vec! - (-> self collide-info) - (-> self nav travel) - (-> self rotate-speed) - (-> self turn-time) - ) - ) - (vector-v++! - (-> self collide-info transv) - (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (-> self nav-info gnd-collide-with) - 8192.0 - #f - (-> self nav-info hover-if-no-ground) - #f - ) + (logtest? (nav-control-flags navcf19) (-> self nav flags))) + (seek-to-point-toward-point! (-> self collide-info) (-> self nav target-pos) (-> self rotate-speed) (-> self turn-time)) + (seek-toward-heading-vec! (-> self collide-info) (-> self nav travel) (-> self rotate-speed) (-> self turn-time))) + (vector-v++! (-> self collide-info transv) (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0)) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (-> self nav-info gnd-collide-with) + 8192.0 + #f + (-> self nav-info hover-if-no-ground) + #f) (nav-enemy-common-post) - (none) - ) + (none)) (defstate nav-enemy-jump-land (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self nav flags) (nav-control-flags navcf19)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self collide-info transv quad)) - (set! (-> gp-0 y) 0.0) - (set! (-> self target-speed) (vector-length gp-0)) - (set! (-> self momentum-speed) (-> self target-speed)) - (vector-xz-normalize! gp-0 16384.0) - (vector+! (-> self nav target-pos) (-> self collide-info trans) gp-0) - ) - ) - :trans (behavior () - (if (or (time-elapsed? (-> self state-time) (seconds 0.5)) - (logtest? (nav-control-flags navcf19) (-> self nav flags)) - ) - (go-virtual nav-enemy-chase) - ) - ) - :code (behavior () - (nav-enemy-jump-land-anim) - (go (-> self jump-return-state)) - ) - :post nav-enemy-jump-land-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logclear! (-> self nav flags) (nav-control-flags navcf19)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self collide-info transv quad)) + (set! (-> gp-0 y) 0.0) + (set! (-> self target-speed) (vector-length gp-0)) + (set! (-> self momentum-speed) (-> self target-speed)) + (vector-xz-normalize! gp-0 16384.0) + (vector+! (-> self nav target-pos) (-> self collide-info trans) gp-0))) + :trans + (behavior () + (if (or (time-elapsed? (-> self state-time) (seconds 0.5)) (logtest? (nav-control-flags navcf19) (-> self nav flags))) + (go-virtual nav-enemy-chase))) + :code + (behavior () + (nav-enemy-jump-land-anim) + (go (-> self jump-return-state))) + :post nav-enemy-jump-land-post) (defstate nav-enemy-jump-blocked (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (time-elapsed? (-> self state-time) (seconds 0.5)) - (go (-> self jump-return-state)) - ) - ) - :code (behavior () - (when (not (ja-group? (-> self draw art-group data (-> self nav-info idle-anim)))) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - ) - (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (seconds 0.5)) (go (-> self jump-return-state)))) + :code + (behavior () + (when (not (ja-group? (-> self draw art-group data (-> self nav-info idle-anim)))) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! + (-> self draw art-group data (-> self nav-info idle-anim)) + :num! + (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))))) + (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) (loop (suspend) (ja :num! (loop! f30-0))))) + :post nav-enemy-simple-post) (defstate nav-enemy-wait-for-cue (nav-enemy) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf11)) - (ja-channel-push! 1 (seconds 0.1)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (while (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf11)) - (suspend) - (ja :num! (loop! f30-0)) - ) + :code + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf11)) (ja-channel-push! 1 (seconds 0.1)) - (nav-enemy-turn-to-face-point (-> self event-param-point) 910.2222) - (let ((gp-0 (nav-enemy-rnd-int-range 0 150)) - (s5-0 (current-time)) - ) - (until (time-elapsed? s5-0 gp-0) - (ja :num! (loop! f30-0)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja :group! (-> self draw art-group data (-> self nav-info idle-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (while (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf11)) (suspend) - ) - ) - ) - (go-virtual nav-enemy-jump-to-point) - ) - :post nav-enemy-simple-post - ) + (ja :num! (loop! f30-0))) + (ja-channel-push! 1 (seconds 0.1)) + (nav-enemy-turn-to-face-point (-> self event-param-point) 910.2222) + (let ((gp-0 (nav-enemy-rnd-int-range 0 150)) + (s5-0 (current-time))) + (until (time-elapsed? s5-0 gp-0) + (ja :num! (loop! f30-0)) + (suspend)))) + (go-virtual nav-enemy-jump-to-point)) + :post nav-enemy-simple-post) (defstate nav-enemy-jump-to-point (nav-enemy) :virtual #t :event nav-enemy-jump-event-handler - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - ) - :trans (behavior () - 0 - ) - :code (behavior () - (set-time! (-> self state-time)) - (nav-enemy-initialize-jump (-> self event-param-point)) - (nav-enemy-neck-control-look-at) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) - (ja-channel-push! 1 (seconds 0.2)) - (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (nav-enemy-execute-jump) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (nav-enemy-jump-land-anim) - (go-virtual nav-enemy-wait-for-cue) - ) - :post nav-enemy-jump-post - ) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel))) + :trans + (behavior () + 0) + :code + (behavior () + (set-time! (-> self state-time)) + (nav-enemy-initialize-jump (-> self event-param-point)) + (nav-enemy-neck-control-look-at) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) + (ja-channel-push! 1 (seconds 0.2)) + (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (nav-enemy-execute-jump) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (nav-enemy-jump-land-anim) + (go-virtual nav-enemy-wait-for-cue)) + :post nav-enemy-jump-post) (define *nav-enemy-dummy-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags shdf03 disable-draw) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w 4096.0) - :top-plane (new 'static 'plane :y 1.0 :w -4096.0) - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags shdf03 disable-draw) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 4096.0) + :top-plane + (new 'static 'plane :y 1.0 :w -4096.0)))) (defmethod init-defaults! ((this nav-enemy) (arg0 nav-enemy-info)) (set! (-> this rand-gen) (new 'process 'random-generator)) @@ -1648,19 +1114,15 @@ nav-enemy-default-event-handler (set! (-> this mask) (the-as process-mask (logior (process-mask enemy) (-> this mask)))) (init-jm! this arg0) (if (-> this draw shadow) - (set! (-> this draw shadow-ctrl) - (new - 'process - 'shadow-control - (-> this nav-info shadow-min-y) - (-> this nav-info shadow-max-y) - (-> this nav-info shadow-locus-dist) - (the-as float 17) - 245760.0 - ) - ) - (set! (-> this draw shadow-ctrl) *nav-enemy-dummy-shadow-control*) - ) + (set! (-> this draw shadow-ctrl) + (new 'process + 'shadow-control + (-> this nav-info shadow-min-y) + (-> this nav-info shadow-max-y) + (-> this nav-info shadow-locus-dist) + (the-as float 17) + 245760.0)) + (set! (-> this draw shadow-ctrl) *nav-enemy-dummy-shadow-control*)) (set! (-> this align) (new 'process 'align-control this)) (set! (-> this nav) (new 'process 'nav-control (-> this collide-info) 16 (-> arg0 nav-nearest-y-threshold))) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) @@ -1669,31 +1131,25 @@ nav-enemy-default-event-handler (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> this enemy-info) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this reaction-time) (nav-enemy-rnd-int-range (seconds 0.1) (seconds 0.8))) (set! (-> this speed-scale) 1.0) (logior! (-> this nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel navenmf5 navenmf6 navenmf12)) 0 - (none) - ) + (none)) (defmethod init-jm! ((this nav-enemy) (arg0 nav-enemy-info)) (set! (-> this nav-info) arg0) (set! (-> this rotate-speed) (-> this nav-info walk-rotate-speed)) (set! (-> this turn-time) (-> this nav-info walk-turn-time)) (when (and (!= (-> this nav-info neck-joint) -1) (zero? (-> this neck))) - (set! (-> this neck) - (new 'process 'joint-mod (joint-mod-handler-mode flex-blend) this (-> this nav-info neck-joint)) - ) + (set! (-> this neck) (new 'process 'joint-mod (joint-mod-handler-mode flex-blend) this (-> this nav-info neck-joint))) (set-vector! (-> this neck twist-max) 8192.0 8192.0 0.0 1.0) (set! (-> this neck up) (the-as uint 1)) (set! (-> this neck nose) (the-as uint 2)) (set! (-> this neck ear) (the-as uint 0)) (set! (-> this neck max-dist) 102400.0) - (set! (-> this neck ignore-angle) 16384.0) - ) - ) + (set! (-> this neck ignore-angle) 16384.0))) (defbehavior nav-enemy-init-by-other nav-enemy ((arg0 battlecontroller) (arg1 vector) (arg2 vector)) (initialize-collision self) @@ -1703,32 +1159,27 @@ nav-enemy-default-event-handler (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) arg2 arg1))) (set! (-> s3-1 y) 0.0) (vector-normalize! s3-1 1.0) - (forward-up->quaternion (-> self collide-info quat) s3-1 *up-vector*) - ) + (forward-up->quaternion (-> self collide-info quat) s3-1 *up-vector*)) (vector-identity! (-> self collide-info scale)) (set! (-> self entity) (-> arg0 entity)) (nav-enemy-method-48 self) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf12)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) (go-virtual nav-enemy-wait-for-cue) - (none) - ) + (none)) (defmethod initialize-collision ((this nav-enemy)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this nav-enemy)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-59 ((this nav-enemy)) (go (method-of-object this nav-enemy-idle)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this nav-enemy) (arg0 entity-actor)) (initialize-collision this) @@ -1736,8 +1187,7 @@ nav-enemy-default-event-handler (nav-enemy-method-48 this) (nav-enemy-method-59 this) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-50 ((this nav-enemy) (arg0 vector)) (let ((s4-0 (new 'stack-no-clear 'vector))) @@ -1748,21 +1198,11 @@ nav-enemy-default-event-handler (set! (-> this collide-info trans quad) (-> s4-0 quad)) (let* ((v1-8 (-> gp-0 mesh origin)) (f0-1 (- (-> arg0 x) (-> v1-8 x))) - (f1-2 (- (-> arg0 z) (-> v1-8 z))) - ) + (f1-2 (- (-> arg0 z) (-> v1-8 z)))) (countdown (v1-9 (-> gp-0 num-spheres)) (let* ((a0-10 (-> gp-0 sphere v1-9)) (f2-2 (- (-> a0-10 x) f0-1)) (f3-1 (- (-> a0-10 z) f1-2)) - (f4-0 (-> a0-10 w)) - ) - (if (>= (* f4-0 f4-0) (+ (* f2-2 f2-2) (* f3-1 f3-1))) - (return #t) - ) - ) - ) - ) - ) - ) - #f - ) + (f4-0 (-> a0-10 w))) + (if (>= (* f4-0 f4-0) (+ (* f2-2 f2-2) (* f3-1 f3-1))) (return #t))))))) + #f) diff --git a/goal_src/jak1/engine/common-obs/orb-cache.gc b/goal_src/jak1/engine/common-obs/orb-cache.gc index f86dca24ef..a1fea89f5f 100644 --- a/goal_src/jak1/engine/common-obs/orb-cache.gc +++ b/goal_src/jak1/engine/common-obs/orb-cache.gc @@ -1,121 +1,82 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/collectables.gc") (require "engine/common-obs/baseplat.gc") -;; name: orb-cache.gc -;; name in dgo: orb-cache -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (deftype orb-cache-top (baseplat) - ((active-distance float) - (inactive-distance float) - (money-list handle 60) - (money-pos-list float 60) - (money-pos-actual float 60) - (platform-pos float) - (root-pos float) - (money int32) - (activated symbol) - ) + ((active-distance float) + (inactive-distance float) + (money-list handle 60) + (money-pos-list float 60) + (money-pos-actual float 60) + (platform-pos float) + (root-pos float) + (money int32) + (activated symbol)) (:methods - (pos-logic (_type_ symbol) symbol) - (calculate-pos (_type_ symbol) none) - ) - (:states - (orb-cache-top-activate symbol) - (orb-cache-top-complete symbol) - (orb-cache-top-idle symbol) - ) - ) - + (pos-logic (_type_ symbol) symbol) + (calculate-pos (_type_ symbol) none)) + (:states (orb-cache-top-activate symbol) + (orb-cache-top-complete symbol) + (orb-cache-top-idle symbol))) -(defskelgroup *orb-cache-top-sg* orb-cache-top orb-cache-top-lod0-jg orb-cache-top-idle-ja - ((orb-cache-top-lod0-mg (meters 20)) (orb-cache-top-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *orb-cache-top-sg* + orb-cache-top + orb-cache-top-lod0-jg + orb-cache-top-idle-ja + ((orb-cache-top-lod0-mg (meters 20)) (orb-cache-top-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defstate orb-cache-top-idle (orb-cache-top) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('eco-blue) - (process-entity-status! self (entity-perm-status complete) #t) - (dotimes (gp-0 5) - (spawn-projectile-blue *target*) - ) - (increment-success-for-hint (text-id sidekick-hint-orb-cache-top)) - (go orb-cache-top-activate #f) - ) - (else - (plat-event proc argc message block) - ) - ) - ) - :trans (behavior () - (if (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (not (send-event *target* 'query 'powerup (pickup-type eco-blue))) - ) - (level-hint-spawn - (text-id sidekick-hint-orb-cache-top) - "sksp0009" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (if (and (not arg0) (-> self child)) - (sound-play "close-orb-cash") - ) - (dotimes (gp-1 (-> self money)) - (let ((a0-4 (handle->process (-> self money-list gp-1)))) - (if a0-4 - (deactivate a0-4) - ) - ) - ) - (process-entity-status! self (entity-perm-status complete) #f) - (ja :group! orb-cache-top-idle-ja :num! (identity (ja-aframe 0.0 0))) - (transform-post) - (anim-loop) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('eco-blue) + (process-entity-status! self (entity-perm-status complete) #t) + (dotimes (gp-0 5) + (spawn-projectile-blue *target*)) + (increment-success-for-hint (text-id sidekick-hint-orb-cache-top)) + (go orb-cache-top-activate #f)) + (else (plat-event proc argc message block)))) + :trans + (behavior () + (if (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (send-event *target* 'query 'powerup (pickup-type eco-blue)))) + (level-hint-spawn (text-id sidekick-hint-orb-cache-top) "sksp0009" (the-as entity #f) *entity-pool* (game-task none)))) + :code + (behavior ((arg0 symbol)) + (if (and (not arg0) (-> self child)) (sound-play "close-orb-cash")) + (dotimes (gp-1 (-> self money)) + (let ((a0-4 (handle->process (-> self money-list gp-1)))) (if a0-4 (deactivate a0-4)))) + (process-entity-status! self (entity-perm-status complete) #f) + (ja :group! orb-cache-top-idle-ja :num! (identity (ja-aframe 0.0 0))) + (transform-post) + (anim-loop))) (defmethod baseplat-method-22 ((this orb-cache-top)) (if (< 4096.0 (- (-> this basetrans y) (-> this root-pos))) - (activate! (-> this smush) -1.0 60 150 1.0 1.0) - (activate! (-> this smush) -0.5 60 150 1.0 1.0) - ) + (activate! (-> this smush) -1.0 60 150 1.0 1.0) + (activate! (-> this smush) -0.5 60 150 1.0 1.0)) (set! (-> this bouncing) #t) (logclear! (-> this mask) (process-mask sleep)) 0 - (none) - ) + (none)) (defmethod calculate-pos ((this orb-cache-top) (arg0 symbol)) (let ((f0-0 0.0)) (when arg0 (set! f0-0 (+ 10240.0 (* 6144.0 (the float (+ (-> this money) -1))))) - (if (< f0-0 2048.0) - (set! f0-0 2048.0) - ) - ) + (if (< f0-0 2048.0) (set! f0-0 2048.0))) (set! (-> this platform-pos) (+ (-> this root-pos) f0-0)) (let ((f0-2 (+ -6144.0 f0-0))) (dotimes (v1-5 (-> this money)) (set! (-> this money-pos-list v1-5) (+ (-> this root-pos) f0-2)) - (set! f0-2 (+ -6144.0 f0-2)) - ) - ) - ) + (set! f0-2 (+ -6144.0 f0-2))))) 0 - (none) - ) + (none)) (defmethod pos-logic ((this orb-cache-top) (arg0 symbol)) (dotimes (s4-0 (-> this money)) @@ -123,173 +84,109 @@ (dotimes (v1-6 (-> this money)) (when (< s4-0 v1-6) (set! (-> this money-list (+ v1-6 -1)) (-> this money-list v1-6)) - (set! (-> this money-pos-actual (+ v1-6 -1)) (-> this money-pos-actual v1-6)) - ) - ) + (set! (-> this money-pos-actual (+ v1-6 -1)) (-> this money-pos-actual v1-6)))) (+! (-> this money) -1) (calculate-pos this arg0) (+! s4-0 -1) (let ((v1-15 (-> this entity extra perm))) (logior! (-> v1-15 status) (entity-perm-status user-set-from-cstage)) - (+! (-> v1-15 user-int16 0) 1) - ) - ) - ) + (+! (-> v1-15 user-int16 0) 1)))) (let ((s4-1 (new 'stack-no-clear 'vector)) - (s5-1 #t) - ) + (s5-1 #t)) (let ((s3-0 #f)) (let ((f28-0 (- (-> this basetrans y) (-> this root-pos))) - (f30-0 (- (-> this platform-pos) (-> this root-pos))) - ) + (f30-0 (- (-> this platform-pos) (-> this root-pos)))) (when (zero? (-> this money)) (set! f30-0 2048.0) - (set! s3-0 #t) - ) + (set! s3-0 #t)) (when (and (< f30-0 15155.2) (and *target* (>= 16384.0 (vector-vector-distance (-> this root trans) (-> *target* control trans)))) - (< (-> (target-pos 0) y) (-> this basetrans y)) - ) - (set! f30-0 (if (< 14131.2 f28-0) - 15155.2 - f28-0 - ) - ) - (set! s3-0 #f) - ) + (< (-> (target-pos 0) y) (-> this basetrans y))) + (set! f30-0 (if (< 14131.2 f28-0) 15155.2 f28-0)) + (set! s3-0 #f)) (seek! (-> this basetrans y) (+ (-> this root-pos) f30-0) (* 40960.0 (seconds-per-frame))) - (if (not (= (-> this basetrans y) (+ (-> this root-pos) f30-0))) - (set! s5-1 #f) - ) - ) + (if (not (= (-> this basetrans y) (+ (-> this root-pos) f30-0))) (set! s5-1 #f))) (dotimes (s2-0 (-> this money)) - (set! (-> s4-1 quad) - (-> (the-as process-drawable (handle->process (-> this money-list s2-0))) root trans quad) - ) + (set! (-> s4-1 quad) (-> (the-as process-drawable (handle->process (-> this money-list s2-0))) root trans quad)) (seek! (-> this money-pos-actual s2-0) (-> this money-pos-list s2-0) (* 40960.0 (seconds-per-frame))) - (if (not (= (-> this money-pos-actual s2-0) (-> this money-pos-list s2-0))) - (set! s5-1 #f) - ) + (if (not (= (-> this money-pos-actual s2-0) (-> this money-pos-list s2-0))) (set! s5-1 #f)) (if (>= (-> this money-pos-actual s2-0) (+ -8192.0 (-> this root-pos))) - (set! (-> s4-1 y) (-> this money-pos-actual s2-0)) - (set! (-> s4-1 y) (+ -8192.0 (-> this root-pos))) - ) - (send-event (handle->process (-> this money-list s2-0)) 'trans s4-1) - ) + (set! (-> s4-1 y) (-> this money-pos-actual s2-0)) + (set! (-> s4-1 y) (+ -8192.0 (-> this root-pos)))) + (send-event (handle->process (-> this money-list s2-0)) 'trans s4-1)) (set! s3-0 (and s5-1 s3-0)) - (if s3-0 - (go orb-cache-top-complete #f) - ) - ) - s5-1 - ) - ) + (if s3-0 (go orb-cache-top-complete #f))) + s5-1)) (defstate orb-cache-top-activate (orb-cache-top) :event plat-event - :exit (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - ) + :exit + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f)) :trans plat-trans - :code (behavior ((arg0 symbol)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (calculate-pos self arg0) - (if arg0 - (set! (-> self basetrans y) (-> self platform-pos)) - (sound-play "open-orb-cash") - ) - (dotimes (s5-1 (-> self money)) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (set! (-> s4-1 quad) (-> self basetrans quad)) - (set! (-> s4-1 y) (-> self money-pos-list s5-1)) - (set! (-> self money-pos-actual s5-1) (-> s4-1 y)) - (set! (-> self money-list s5-1) - (ppointer->handle - (process-spawn money :init money-init-by-other-no-bob s4-1 *null-vector* 5 1.0 (-> self entity) :to self) - ) - ) - ) - ) - (loop - (calculate-pos self #t) - (while (not (or (not *target*) - (< (-> self inactive-distance) (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))) - ) - ) - (pos-logic self #t) - (suspend) - ) - (calculate-pos self #f) - (while (and (not (and (and *target* - (>= (-> self active-distance) (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))) - ) - (let ((a1-11 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-11 from) self) - (set! (-> a1-11 num-params) 2) - (set! (-> a1-11 message) 'query) - (set! (-> a1-11 param 0) (the-as uint 'powerup)) - (set! (-> a1-11 param 1) (the-as uint 3)) - (or (send-event-function *target* a1-11) (-> self activated)) - ) - ) - ) - (not (pos-logic self #f)) - ) - (suspend) - ) - (if (not (and (and *target* - (>= (-> self active-distance) (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))) - ) - (let ((a1-14 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-14 from) self) - (set! (-> a1-14 num-params) 2) - (set! (-> a1-14 message) 'query) - (set! (-> a1-14 param 0) (the-as uint 'powerup)) - (set! (-> a1-14 param 1) (the-as uint 3)) - (or (send-event-function *target* a1-14) (-> self activated)) - ) - ) - ) - (go orb-cache-top-idle arg0) - ) - ) - ) - :post plat-post - ) + :code + (behavior ((arg0 symbol)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (calculate-pos self arg0) + (if arg0 (set! (-> self basetrans y) (-> self platform-pos)) (sound-play "open-orb-cash")) + (dotimes (s5-1 (-> self money)) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (set! (-> s4-1 quad) (-> self basetrans quad)) + (set! (-> s4-1 y) (-> self money-pos-list s5-1)) + (set! (-> self money-pos-actual s5-1) (-> s4-1 y)) + (set! (-> self money-list s5-1) + (ppointer->handle (process-spawn money :init money-init-by-other-no-bob s4-1 *null-vector* 5 1.0 (-> self entity) :to self))))) + (loop + (calculate-pos self #t) + (while (not (or (not *target*) + (< (-> self inactive-distance) (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) + (pos-logic self #t) + (suspend)) + (calculate-pos self #f) + (while (and (not (and (and *target* + (>= (-> self active-distance) (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (let ((a1-11 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-11 from) self) + (set! (-> a1-11 num-params) 2) + (set! (-> a1-11 message) 'query) + (set! (-> a1-11 param 0) (the-as uint 'powerup)) + (set! (-> a1-11 param 1) (the-as uint 3)) + (or (send-event-function *target* a1-11) (-> self activated))))) + (not (pos-logic self #f))) + (suspend)) + (if (not (and (and *target* + (>= (-> self active-distance) (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (let ((a1-14 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-14 from) self) + (set! (-> a1-14 num-params) 2) + (set! (-> a1-14 message) 'query) + (set! (-> a1-14 param 0) (the-as uint 'powerup)) + (set! (-> a1-14 param 1) (the-as uint 3)) + (or (send-event-function *target* a1-14) (-> self activated))))) + (go orb-cache-top-idle arg0)))) + :post plat-post) (defstate orb-cache-top-complete (orb-cache-top) :event plat-event :trans plat-trans - :code (behavior ((arg0 symbol)) - (if (not arg0) - (sound-play "close-orb-cash") - ) - (ja :group! orb-cache-top-idle-ja :num! (identity (ja-aframe 0.0 0))) - (new 'stack-no-clear 'vector) - (set! (-> self basetrans y) (+ 2048.0 (-> self root-pos))) - (anim-loop) - ) - :post plat-post - ) + :code + (behavior ((arg0 symbol)) + (if (not arg0) (sound-play "close-orb-cash")) + (ja :group! orb-cache-top-idle-ja :num! (identity (ja-aframe 0.0 0))) + (new 'stack-no-clear 'vector) + (set! (-> self basetrans y) (+ 2048.0 (-> self root-pos))) + (anim-loop)) + :post plat-post) (defmethod init-from-entity! ((this orb-cache-top) (arg0 entity-actor)) (let ((a0-1 (-> this entity))) (if (when a0-1 - (let ((a0-2 (-> a0-1 extra perm task))) - (if a0-2 - (= a0-2 (game-task none)) - ) - ) - ) - (set! (-> this entity extra perm task) (game-task complete)) - ) - ) + (let ((a0-2 (-> a0-1 extra perm task))) (if a0-2 (= a0-2 (game-task none))))) + (set! (-> this entity extra perm task) (game-task complete)))) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object blue-eco-suck)) @@ -298,12 +195,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) - (set-root-prim! s4-0 s3-0) - ) + (set-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (initialize-skeleton this *orb-cache-top-sg* '()) @@ -316,28 +211,15 @@ (set! (-> this root-pos) (-> this basetrans y)) (set! (-> this platform-pos) (-> this root-pos)) (set! (-> this activated) - (the-as - symbol - (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - ) - ) + (the-as symbol (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))))) (let ((v1-39 (-> this entity extra perm))) (logior! (-> v1-39 status) (entity-perm-status user-set-from-cstage)) - (set! (-> this money) (- (-> this money) (-> v1-39 user-int16 0))) - ) + (set! (-> this money) (- (-> this money) (-> v1-39 user-int16 0)))) (dotimes (v1-42 (-> this money)) - (set! (-> this money-list v1-42) (the-as handle #f)) - ) + (set! (-> this money-list v1-42) (the-as handle #f))) (cond - ((zero? (-> this money)) - (go orb-cache-top-complete #t) - ) + ((zero? (-> this money)) (go orb-cache-top-complete #t)) ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go orb-cache-top-activate #t) - ) - (else - (go orb-cache-top-idle #f) - ) - ) - (none) - ) + (go orb-cache-top-activate #t)) + (else (go orb-cache-top-idle #f))) + (none)) diff --git a/goal_src/jak1/engine/common-obs/plat-button.gc b/goal_src/jak1/engine/common-obs/plat-button.gc index 7037f2403a..9a17917f6d 100644 --- a/goal_src/jak1/engine/common-obs/plat-button.gc +++ b/goal_src/jak1/engine/common-obs/plat-button.gc @@ -1,331 +1,238 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/geometry/path.gc") -;; name: plat-button.gc -;; name in dgo: plat-button -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (deftype plat-button (process-drawable) - ((root collide-shape-moving :override) - (go-back-if-lost-player? symbol) - (grab-player? symbol) - (should-grab-player? symbol) - (path-pos float) - (bidirectional? symbol) - (allow-auto-kill symbol) - (sound-id sound-id) - (trans-off vector :inline) - (spawn-pos vector :inline) - ) + ((root collide-shape-moving :override) + (go-back-if-lost-player? symbol) + (grab-player? symbol) + (should-grab-player? symbol) + (path-pos float) + (bidirectional? symbol) + (allow-auto-kill symbol) + (sound-id sound-id) + (trans-off vector :inline) + (spawn-pos vector :inline)) (:state-methods - plat-button-at-end - plat-button-idle - plat-button-pressed - plat-button-move-downward - plat-button-move-upward - plat-button-teleport-to-other-end - ) + plat-button-at-end + plat-button-idle + plat-button-pressed + plat-button-move-downward + plat-button-move-upward + plat-button-teleport-to-other-end) (:methods - (can-activate? (_type_) symbol) - (plat-button-method-27 (_type_) none) - (plat-button-method-28 (_type_) collide-shape-moving) - (can-target-move? (_type_) none) - (should-teleport? (_type_) symbol) - (plat-button-method-31 (_type_) none) - (plat-button-method-32 (_type_) none) - ) - ) + (can-activate? (_type_) symbol) + (plat-button-method-27 (_type_) none) + (plat-button-method-28 (_type_) collide-shape-moving) + (can-target-move? (_type_) none) + (should-teleport? (_type_) symbol) + (plat-button-method-31 (_type_) none) + (plat-button-method-32 (_type_) none))) - -(defskelgroup *plat-button-sg* plat-button plat-button-geo-jg plat-button-pressed-ja - ((plat-button-geo-mg (meters 999999))) - :bounds (static-spherem 0 -1 0 6.6) - ) +(defskelgroup *plat-button-sg* + plat-button + plat-button-geo-jg + plat-button-pressed-ja + ((plat-button-geo-mg (meters 999999))) + :bounds (static-spherem 0 -1 0 6.6)) (defmethod should-teleport? ((this plat-button)) - #f - ) + #f) (defmethod can-activate? ((this plat-button)) - (or (= (-> this path-pos) 0.0) (and (-> this bidirectional?) (= (-> this path-pos) 1.0))) - ) + (or (= (-> this path-pos) 0.0) (and (-> this bidirectional?) (= (-> this path-pos) 1.0)))) (defstate plat-button-idle (plat-button) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when (can-activate? self) - (if (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self root) - (the-as uint 1) - ) - (or (not (-> self should-grab-player?)) (set! (-> self grab-player?) (process-grab? *target*))) - ) - (go-virtual plat-button-pressed) - ) - ) - ) - ) - ) - :code (behavior () - (let ((gp-0 (can-activate? self))) - (if gp-0 - (ja-no-eval :num! (seek! 0.0)) - (ja-no-eval :num! (seek!)) - ) - (loop - (if (should-teleport? self) - (go-virtual plat-button-teleport-to-other-end) - ) - (let ((s5-0 (can-activate? self))) - (when (!= s5-0 gp-0) - (set! gp-0 s5-0) - (if s5-0 - (ja-no-eval :num! (seek! 0.0)) - (ja-no-eval :num! (seek!)) - ) - ) - (when (not (ja-done? 0)) - (rider-trans) - (if s5-0 - (ja :num! (seek! 0.0)) - (ja :num! (seek!)) - ) - (rider-post) - ) - ) - (suspend) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when (can-activate? self) + (if (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self root) + (the-as uint 1)) + (or (not (-> self should-grab-player?)) (set! (-> self grab-player?) (process-grab? *target*)))) + (go-virtual plat-button-pressed)))))) + :code + (behavior () + (let ((gp-0 (can-activate? self))) + (if gp-0 (ja-no-eval :num! (seek! 0.0)) (ja-no-eval :num! (seek!))) + (loop + (if (should-teleport? self) (go-virtual plat-button-teleport-to-other-end)) + (let ((s5-0 (can-activate? self))) + (when (!= s5-0 gp-0) + (set! gp-0 s5-0) + (if s5-0 (ja-no-eval :num! (seek! 0.0)) (ja-no-eval :num! (seek!)))) + (when (not (ja-done? 0)) + (rider-trans) + (if s5-0 (ja :num! (seek! 0.0)) (ja :num! (seek!))) + (rider-post))) + (suspend))))) (defstate plat-button-teleport-to-other-end (plat-button) :virtual #t - :code (behavior () - (let ((f0-0 1.0)) - (if (>= (-> self path-pos) 0.5) - (set! f0-0 0.0) - ) - (set! (-> self path-pos) f0-0) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (eval-path-curve! (-> self path) gp-0 f0-0 'interp) - (vector+! gp-0 gp-0 (-> self trans-off)) - (move-to-point! (-> self root) gp-0) - ) - ) - (ja-post) - (go-virtual plat-button-idle) - ) - ) + :code + (behavior () + (let ((f0-0 1.0)) + (if (>= (-> self path-pos) 0.5) (set! f0-0 0.0)) + (set! (-> self path-pos) f0-0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (eval-path-curve! (-> self path) gp-0 f0-0 'interp) + (vector+! gp-0 gp-0 (-> self trans-off)) + (move-to-point! (-> self root) gp-0))) + (ja-post) + (go-virtual plat-button-idle))) (defstate plat-button-pressed (plat-button) :virtual #t :trans rider-trans - :code (behavior () - (ja-no-eval :num! (seek!)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self go-back-if-lost-player?) #t) - (process-entity-status! self (entity-perm-status complete) #t) - (if (= (-> self path-pos) 0.0) - (go-virtual plat-button-move-downward) - (go-virtual plat-button-move-upward) - ) - ) - :post rider-post - ) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self go-back-if-lost-player?) #t) + (process-entity-status! self (entity-perm-status complete) #t) + (if (= (-> self path-pos) 0.0) (go-virtual plat-button-move-downward) (go-virtual plat-button-move-upward))) + :post rider-post) (defbehavior plat-button-camera-on plat-button () (let ((v1-1 (res-lump-struct (-> self entity) 'camera-name structure))) - (if v1-1 - (send-event *camera* 'change-to-entity-by-name v1-1) - ) - ) + (if v1-1 (send-event *camera* 'change-to-entity-by-name v1-1))) 0 - (none) - ) + (none)) (defbehavior plat-button-camera-off plat-button () (send-event *camera* 'clear-entity) 0 - (none) - ) + (none)) (defstate plat-button-move-downward (plat-button) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (or (= message 'touch) (= message 'attack)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (or (= message 'touch) (= message 'attack)) + (set-time! (-> self state-time)) + #f)) + :enter + (behavior () (set-time! (-> self state-time)) - #f - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (plat-button-camera-on) - (set-setting! 'allow-look-around #f 0.0 0) - ) - :exit (behavior () - (plat-button-camera-off) - (remove-setting! 'allow-look-around) - ) - :trans (behavior () - (if (= (-> self path-pos) 1.0) - (go-virtual plat-button-at-end) - ) - (rider-trans) - (when (-> self go-back-if-lost-player?) - (when (or (not *target*) - (and (time-elapsed? (-> self state-time) (seconds 4)) - (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - ) - ) - (set! (-> self go-back-if-lost-player?) #f) - (go-virtual plat-button-move-upward) - ) - ) - (let ((f0-4 (seek-with-smooth (-> self path-pos) 1.0 (* 0.1 (seconds-per-frame)) 0.25 0.001))) - (set! (-> self path-pos) f0-4) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (eval-path-curve! (-> self path) gp-0 f0-4 'interp) - (vector+! gp-0 gp-0 (-> self trans-off)) - (move-to-point! (-> self root) gp-0) - ) - ) - (sound-play "elev-loop" :id (-> self sound-id)) - (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> gp-1 command) (sound-command set-param)) - (set! (-> gp-1 id) (-> self sound-id)) - (let ((a1-6 (-> self root trans))) - (let ((s5-0 self)) - (when (= a1-6 #t) - (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> s5-0 root))) + (process-entity-status! self (entity-perm-status bit-3) #t) + (plat-button-camera-on) + (set-setting! 'allow-look-around #f 0.0 0)) + :exit + (behavior () + (plat-button-camera-off) + (remove-setting! 'allow-look-around)) + :trans + (behavior () + (if (= (-> self path-pos) 1.0) (go-virtual plat-button-at-end)) + (rider-trans) + (when (-> self go-back-if-lost-player?) + (when (or (not *target*) + (and (time-elapsed? (-> self state-time) (seconds 4)) + (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))))))) + (set! (-> self go-back-if-lost-player?) #f) + (go-virtual plat-button-move-upward))) + (let ((f0-4 (seek-with-smooth (-> self path-pos) 1.0 (* 0.1 (seconds-per-frame)) 0.25 0.001))) + (set! (-> self path-pos) f0-4) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (eval-path-curve! (-> self path) gp-0 f0-4 'interp) + (vector+! gp-0 gp-0 (-> self trans-off)) + (move-to-point! (-> self root) gp-0))) + (sound-play "elev-loop" :id (-> self sound-id)) + (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> gp-1 command) (sound-command set-param)) + (set! (-> gp-1 id) (-> self sound-id)) + (let ((a1-6 (-> self root trans))) + (let ((s5-0 self)) + (when (= a1-6 #t) + (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> s5-0 root))) (set! a1-6 (-> s5-0 root trans)) - (set! a1-6 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> gp-1 parms trans) a1-6) - ) - (set! (-> gp-1 parms mask) (sound-mask trans)) - (-> gp-1 id) - ) - (if (and (-> self grab-player?) (< 0.2 (-> self path-pos))) - (set! (-> self grab-player?) (not (process-release? *target*))) - ) - ) + (set! a1-6 (the-as vector #f))))) + (sound-trans-convert (-> gp-1 parms trans) a1-6)) + (set! (-> gp-1 parms mask) (sound-mask trans)) + (-> gp-1 id)) + (if (and (-> self grab-player?) (< 0.2 (-> self path-pos))) (set! (-> self grab-player?) (not (process-release? *target*))))) :code anim-loop - :post rider-post - ) + :post rider-post) (defstate plat-button-move-upward (plat-button) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (or (= message 'touch) (= message 'attack)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (or (= message 'touch) (= message 'attack)) + (set-time! (-> self state-time)) + #f)) + :enter + (behavior () (set-time! (-> self state-time)) - #f - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (plat-button-camera-on) - (set-setting! 'allow-look-around #f 0.0 0) - ) - :exit (behavior () - (plat-button-camera-off) - (remove-setting! 'allow-look-around) - ) - :trans (behavior () - (if (= (-> self path-pos) 0.0) - (go-virtual plat-button-at-end) - ) - (rider-trans) - (when (-> self go-back-if-lost-player?) - (when (or (not *target*) - (and (time-elapsed? (-> self state-time) (seconds 4)) - (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - ) - ) - (set! (-> self go-back-if-lost-player?) #f) - (go-virtual plat-button-move-downward) - ) - ) - (let ((f0-4 (seek-with-smooth (-> self path-pos) 0.0 (* 0.1 (seconds-per-frame)) 0.25 0.001))) - (set! (-> self path-pos) f0-4) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (eval-path-curve! (-> self path) gp-0 f0-4 'interp) - (vector+! gp-0 gp-0 (-> self trans-off)) - (move-to-point! (-> self root) gp-0) - ) - ) - (sound-play "elev-loop" :id (-> self sound-id)) - (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> gp-1 command) (sound-command set-param)) - (set! (-> gp-1 id) (-> self sound-id)) - (let ((a1-6 (-> self root trans))) - (let ((s5-0 self)) - (when (= a1-6 #t) - (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> s5-0 root))) + (process-entity-status! self (entity-perm-status bit-3) #t) + (plat-button-camera-on) + (set-setting! 'allow-look-around #f 0.0 0)) + :exit + (behavior () + (plat-button-camera-off) + (remove-setting! 'allow-look-around)) + :trans + (behavior () + (if (= (-> self path-pos) 0.0) (go-virtual plat-button-at-end)) + (rider-trans) + (when (-> self go-back-if-lost-player?) + (when (or (not *target*) + (and (time-elapsed? (-> self state-time) (seconds 4)) + (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))))))) + (set! (-> self go-back-if-lost-player?) #f) + (go-virtual plat-button-move-downward))) + (let ((f0-4 (seek-with-smooth (-> self path-pos) 0.0 (* 0.1 (seconds-per-frame)) 0.25 0.001))) + (set! (-> self path-pos) f0-4) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (eval-path-curve! (-> self path) gp-0 f0-4 'interp) + (vector+! gp-0 gp-0 (-> self trans-off)) + (move-to-point! (-> self root) gp-0))) + (sound-play "elev-loop" :id (-> self sound-id)) + (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> gp-1 command) (sound-command set-param)) + (set! (-> gp-1 id) (-> self sound-id)) + (let ((a1-6 (-> self root trans))) + (let ((s5-0 self)) + (when (= a1-6 #t) + (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> s5-0 root))) (set! a1-6 (-> s5-0 root trans)) - (set! a1-6 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> gp-1 parms trans) a1-6) - ) - (set! (-> gp-1 parms mask) (sound-mask trans)) - (-> gp-1 id) - ) - (if (and (-> self grab-player?) (< (-> self path-pos) 0.8)) - (set! (-> self grab-player?) (not (process-release? *target*))) - ) - ) + (set! a1-6 (the-as vector #f))))) + (sound-trans-convert (-> gp-1 parms trans) a1-6)) + (set! (-> gp-1 parms mask) (sound-mask trans)) + (-> gp-1 id)) + (if (and (-> self grab-player?) (< (-> self path-pos) 0.8)) (set! (-> self grab-player?) (not (process-release? *target*))))) :code anim-loop - :post rider-post - ) + :post rider-post) (defstate plat-button-at-end (plat-button) :virtual #t - :code (behavior () - (if (-> self allow-auto-kill) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (sound-stop (-> self sound-id)) - (sound-play "elev-land") - (loop - (if (or (not *target*) (< 268435460.0 (vector-vector-xz-distance-squared (-> self root trans) (target-pos 0)))) - (go-virtual plat-button-idle) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (if (-> self allow-auto-kill) (process-entity-status! self (entity-perm-status bit-3) #f)) + (sound-stop (-> self sound-id)) + (sound-play "elev-land") + (loop + (if (or (not *target*) (< 268435460.0 (vector-vector-xz-distance-squared (-> self root trans) (target-pos 0)))) + (go-virtual plat-button-idle)) + (suspend)))) (defmethod plat-button-method-28 ((this plat-button)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -341,8 +248,7 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -3072.0 0.0 7372.8) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 2)))) (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -350,81 +256,56 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 -4096.0 0.0 27033.6) - (append-prim s4-0 s3-1) - ) - ) + (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! (-> this root) s5-0) - s5-0 - ) - ) + s5-0)) (defmethod can-target-move? ((this plat-button)) 0 - (none) - ) + (none)) (defmethod plat-button-method-27 ((this plat-button)) (ja-channel-set! 1) (cond ((can-activate? this) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-0 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-0 frame-num) 0.0))) (else - (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) - ) - ) + (let ((s5-1 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)))))) (ja-post) (update-transforms! (-> this root)) - (none) - ) + (none)) (defmethod plat-button-method-31 ((this plat-button)) (initialize-skeleton this *plat-button-sg* '()) 0 - (none) - ) + (none)) (defmethod plat-button-method-32 ((this plat-button)) (go (method-of-object this plat-button-idle)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this plat-button) (arg0 entity-actor)) (set! (-> this go-back-if-lost-player?) #f) (set! (-> this grab-player?) #f) (set! (-> this should-grab-player?) #f) - (set! (-> this trans-off quad) (-> (the-as vector ((method-of-type res-lump get-property-struct) - arg0 - 'trans-offset - 'interp - -1000000000.0 - *null-vector* - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - quad - ) - ) + (set! (-> this trans-off quad) + (-> (the-as vector + ((method-of-type res-lump get-property-struct) + arg0 + 'trans-offset + 'interp + -1000000000.0 + *null-vector* + (the-as (pointer res-tag) #f) + *res-static-buf*)) + quad)) (set! (-> this bidirectional?) (nonzero? (res-lump-value arg0 'bidirectional uint128))) (plat-button-method-28 this) (process-drawable-from-entity! this arg0) @@ -437,12 +318,10 @@ (set! (-> this path-pos) 0.0) (let ((s5-1 (-> this root trans))) (eval-path-curve! (-> this path) s5-1 (-> this path-pos) 'interp) - (vector+! s5-1 s5-1 (-> this trans-off)) - ) + (vector+! s5-1 s5-1 (-> this trans-off))) (set! (-> this sound-id) (new-sound-id)) (set! (-> this allow-auto-kill) #t) (can-target-move? this) (plat-button-method-27 this) (plat-button-method-32 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/common-obs/plat-eco.gc b/goal_src/jak1/engine/common-obs/plat-eco.gc index 6df65cd3a6..f44d7e9594 100644 --- a/goal_src/jak1/engine/common-obs/plat-eco.gc +++ b/goal_src/jak1/engine/common-obs/plat-eco.gc @@ -1,226 +1,160 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/plat.gc") (require "engine/common-obs/baseplat.gc") -;; name: plat-eco.gc -;; name in dgo: plat-eco -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (deftype plat-eco (plat) - ((notice-dist float) - (sync-offset-dest float) - (sync-offset-faux float) - (sync-linear-val float) - (target handle) - (unlit-look lod-set :inline) - (lit-look lod-set :inline) - ) + ((notice-dist float) + (sync-offset-dest float) + (sync-offset-faux float) + (sync-linear-val float) + (target handle) + (unlit-look lod-set :inline) + (lit-look lod-set :inline)) (:methods - (notice-blue (handle) _type_ :state :overlay-at wad) - ) - ) - + (notice-blue (handle) _type_ :state :overlay-at wad))) -(defskelgroup *plat-eco-unlit-sg* plat-eco plat-eco-lod0-jg plat-eco-idle-ja - ((plat-eco-lod0-mg (meters 20)) (plat-eco-lod1-mg (meters 40)) (plat-eco-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *plat-eco-unlit-sg* + plat-eco + plat-eco-lod0-jg + plat-eco-idle-ja + ((plat-eco-lod0-mg (meters 20)) (plat-eco-lod1-mg (meters 40)) (plat-eco-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(defskelgroup *plat-eco-lit-sg* plat-eco plat-eco-lod0-jg plat-eco-idle-ja - ((plat-eco-lit-lod0-mg (meters 20)) (plat-eco-lit-lod1-mg (meters 40)) (plat-eco-lit-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *plat-eco-lit-sg* + plat-eco + plat-eco-lod0-jg + plat-eco-idle-ja + ((plat-eco-lit-lod0-mg (meters 20)) (plat-eco-lit-lod1-mg (meters 40)) (plat-eco-lit-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (defstate plat-idle (plat-eco) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('wake) - (go-virtual plat-path-active (the-as plat #f)) - ) - (('eco-blue) - (go-virtual notice-blue (process->handle proc)) - ) - (('ridden 'edge-grabbed) - (when (send-event *target* 'query 'powerup (pickup-type eco-blue)) - (send-to-all (-> self link) 'wake) - (go-virtual plat-path-active (the-as plat #f)) - ) - ) - ) - ) - :enter (behavior () - (lods-assign! (-> self draw) (-> self unlit-look)) - ) - :trans (behavior () - (when (and (and *target* - (>= (-> self notice-dist) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - (send-to-all (-> self link) 'wake) - (go-virtual plat-path-active (the-as plat #f)) - ) - (if (and *target* - (>= (-> self notice-dist) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (level-hint-spawn (text-id misty-eco-plat) "sksp0073" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - :code (behavior () - (ja-post) - (update-transforms! (-> self root)) - (anim-loop) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('wake) (go-virtual plat-path-active (the-as plat #f))) + (('eco-blue) (go-virtual notice-blue (process->handle proc))) + (('ridden 'edge-grabbed) + (when (send-event *target* 'query 'powerup (pickup-type eco-blue)) + (send-to-all (-> self link) 'wake) + (go-virtual plat-path-active (the-as plat #f)))))) + :enter + (behavior () + (lods-assign! (-> self draw) (-> self unlit-look))) + :trans + (behavior () + (when (and (and *target* (>= (-> self notice-dist) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (send-event *target* 'query 'powerup (pickup-type eco-blue))) + (send-to-all (-> self link) 'wake) + (go-virtual plat-path-active (the-as plat #f))) + (if (and *target* (>= (-> self notice-dist) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id misty-eco-plat) "sksp0073" (the-as entity #f) *entity-pool* (game-task none)))) + :code + (behavior () + (ja-post) + (update-transforms! (-> self root)) + (anim-loop)) + :post ja-post) (defstate notice-blue (plat-eco) :virtual override - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('wake) - (sound-play "blue-eco-on" :position (the-as symbol (-> self root trans))) - (go-virtual plat-path-active (the-as plat #f)) - ) - (('ridden 'edge-grabbed) - (when (send-event *target* 'query 'powerup (pickup-type eco-blue)) - (send-to-all (-> self link) 'wake) - (go-virtual plat-path-active (the-as plat #f)) - ) - ) - ) - ) - :trans (behavior () - ((-> (method-of-object self plat-idle) trans)) - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 2) - (set! (-> a1-0 message) 'query) - (set! (-> a1-0 param 0) (the-as uint 'powerup)) - (set! (-> a1-0 param 1) (the-as uint 3)) - (if (and (not (send-event-function *target* a1-0)) - (begin (logior! (-> self mask) (process-mask sleep-code)) (not (-> self bouncing))) - ) - (go-virtual plat-idle) - ) - ) - ) - :code (behavior ((arg0 handle)) - (set! (-> self target) arg0) - (loop - (let* ((gp-0 (handle->process (-> self target))) - (v1-4 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - ) - (when v1-4 - (let* ((gp-1 (-> (the-as process-drawable v1-4) root)) - (v1-6 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) - gp-1 - ) - ) - ) - (when v1-6 - (let* ((s5-0 (-> self root root-prim prim-core)) - (a1-3 (-> (the-as collide-shape v1-6) root-prim prim-core)) - (f30-0 (vector-vector-distance (the-as vector s5-0) (the-as vector a1-3))) - ) - (when (rand-vu-percent? 0.5) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (set! (-> gp-2 quad) (-> s5-0 world-sphere quad)) - (dotimes (s5-1 3) - (+! (-> gp-2 data s5-1) (rand-vu-float-range -5324.8 5324.8)) - ) - (eco-blue-glow gp-2) - ) - ) - (set! (-> self bouncing) #t) - (activate! - (-> self smush) - (lerp-scale - (rand-vu-float-range 1.1 1.3) - (rand-vu-float-range 1.0 1.02) - f30-0 - (-> *FACT-bank* suck-suck-dist) - (-> *FACT-bank* suck-bounce-dist) - ) - 60 - 60 - 1.0 - 1.0 - ) - ) - ) - ) - ) - ) - (suspend) - ) - ) - :post (behavior () - (plat-trans) - (plat-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('wake) + (sound-play "blue-eco-on" :position (the-as symbol (-> self root trans))) + (go-virtual plat-path-active (the-as plat #f))) + (('ridden 'edge-grabbed) + (when (send-event *target* 'query 'powerup (pickup-type eco-blue)) + (send-to-all (-> self link) 'wake) + (go-virtual plat-path-active (the-as plat #f)))))) + :trans + (behavior () + ((-> (method-of-object self plat-idle) trans)) + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 2) + (set! (-> a1-0 message) 'query) + (set! (-> a1-0 param 0) (the-as uint 'powerup)) + (set! (-> a1-0 param 1) (the-as uint 3)) + (if (and (not (send-event-function *target* a1-0)) + (begin + (logior! (-> self mask) (process-mask sleep-code)) + (not (-> self bouncing)))) + (go-virtual plat-idle)))) + :code + (behavior ((arg0 handle)) + (set! (-> self target) arg0) + (loop + (let* ((gp-0 (handle->process (-> self target))) + (v1-4 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0))) + (when v1-4 + (let* ((gp-1 (-> (the-as process-drawable v1-4) root)) + (v1-6 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) gp-1))) + (when v1-6 + (let* ((s5-0 (-> self root root-prim prim-core)) + (a1-3 (-> (the-as collide-shape v1-6) root-prim prim-core)) + (f30-0 (vector-vector-distance (the-as vector s5-0) (the-as vector a1-3)))) + (when (rand-vu-percent? 0.5) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (set! (-> gp-2 quad) (-> s5-0 world-sphere quad)) + (dotimes (s5-1 3) + (+! (-> gp-2 data s5-1) (rand-vu-float-range -5324.8 5324.8))) + (eco-blue-glow gp-2))) + (set! (-> self bouncing) #t) + (activate! (-> self smush) + (lerp-scale (rand-vu-float-range 1.1 1.3) + (rand-vu-float-range 1.0 1.02) + f30-0 + (-> *FACT-bank* suck-suck-dist) + (-> *FACT-bank* suck-bounce-dist)) + 60 + 60 + 1.0 + 1.0)))))) + (suspend))) + :post + (behavior () + (plat-trans) + (plat-post))) (defstate plat-path-active (plat-eco) :virtual #t - :enter (behavior ((arg0 plat)) - (lods-assign! (-> self draw) (-> self lit-look)) - (sync-now! (-> self sync) (-> self sync-linear-val)) - (set! (-> self sync-offset-faux) (-> self sync offset)) - (let* ((f0-3 (the float (-> self sync period))) - (f1-1 (* 0.5 f0-3)) - ) - (if (< f1-1 (- (-> self sync-offset-dest) (-> self sync-offset-faux))) - (+! (-> self sync-offset-faux) f0-3) - ) - (if (< f1-1 (- (-> self sync-offset-faux) (-> self sync-offset-dest))) - (set! (-> self sync-offset-faux) (- (-> self sync-offset-faux) f0-3)) - ) - ) - (cond - (arg0 - (let ((f0-5 (-> self sync-offset-dest))) - (set! (-> self sync offset) f0-5) - (set! (-> self sync-offset-faux) f0-5) - ) - ) - (else - (process-entity-status! self (entity-perm-status complete) #t) - (dotimes (gp-1 5) - (spawn-projectile-blue *target*) - ) - ) - ) - ) - :trans (behavior () - (when (!= (-> self sync-offset-faux) (-> self sync-offset-dest)) - (seek! (-> self sync-offset-faux) (-> self sync-offset-dest) (* 12.0 (seconds-per-frame))) - (let* ((f0-7 (the float (-> self sync period))) - (f1-3 (+ (-> self sync-offset-faux) f0-7)) - ) - (set! (-> self sync offset) (- f1-3 (* (the float (the int (/ f1-3 f0-7))) f0-7))) - ) - ) - ((-> (method-of-type plat plat-path-active) trans)) - ) - ) + :enter + (behavior ((arg0 plat)) + (lods-assign! (-> self draw) (-> self lit-look)) + (sync-now! (-> self sync) (-> self sync-linear-val)) + (set! (-> self sync-offset-faux) (-> self sync offset)) + (let* ((f0-3 (the float (-> self sync period))) + (f1-1 (* 0.5 f0-3))) + (if (< f1-1 (- (-> self sync-offset-dest) (-> self sync-offset-faux))) (+! (-> self sync-offset-faux) f0-3)) + (if (< f1-1 (- (-> self sync-offset-faux) (-> self sync-offset-dest))) + (set! (-> self sync-offset-faux) (- (-> self sync-offset-faux) f0-3)))) + (cond + (arg0 + (let ((f0-5 (-> self sync-offset-dest))) (set! (-> self sync offset) f0-5) (set! (-> self sync-offset-faux) f0-5))) + (else + (process-entity-status! self (entity-perm-status complete) #t) + (dotimes (gp-1 5) + (spawn-projectile-blue *target*))))) + :trans + (behavior () + (when (!= (-> self sync-offset-faux) (-> self sync-offset-dest)) + (seek! (-> self sync-offset-faux) (-> self sync-offset-dest) (* 12.0 (seconds-per-frame))) + (let* ((f0-7 (the float (-> self sync period))) + (f1-3 (+ (-> self sync-offset-faux) f0-7))) + (set! (-> self sync offset) (- f1-3 (* (the float (the int (/ f1-3 f0-7))) f0-7))))) + ((-> (method-of-type plat plat-path-active) trans)))) (defmethod baseplat-method-24 ((this plat-eco)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object blue-eco-suck)) @@ -229,23 +163,18 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -1228.8 0.0 13926.4) - (set-root-prim! s5-0 s4-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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod get-unlit-skel ((this plat-eco)) - *plat-eco-unlit-sg* - ) + *plat-eco-unlit-sg*) (defmethod get-lit-skel ((this plat-eco)) - *plat-eco-lit-sg* - ) + *plat-eco-lit-sg*) (defmethod init-from-entity! ((this plat-eco) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -254,20 +183,16 @@ (baseplat-method-24 this) (process-drawable-from-entity! this arg0) (let ((s4-0 (get-unlit-skel this)) - (s5-1 (get-lit-skel this)) - ) + (s5-1 (get-lit-skel this))) (initialize-skeleton this s4-0 '()) (setup-lods! (-> this unlit-look) s4-0 (-> this draw art-group) (-> this entity)) - (setup-lods! (-> this lit-look) s5-1 (-> this draw art-group) (-> this entity)) - ) + (setup-lods! (-> this lit-look) s5-1 (-> this draw art-group) (-> this entity))) (logclear! (-> this mask) (process-mask actor-pause)) (update-transforms! (-> this root)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 107) this)) (set! (-> this path) (new 'process 'curve-control this 'path -1000000000.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (load-params! (-> this sync) this (the-as uint 3000) 0.0 0.15 0.15) (set! (-> this sync-offset-dest) (-> this sync offset)) (set! (-> this sync-linear-val) (get-phase-offset (-> this sync))) @@ -279,10 +204,7 @@ (baseplat-method-26 this) (baseplat-method-21 this) (if (or (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (< (-> this notice-dist) 0.0) - ) - (go (method-of-object this plat-path-active) (the-as plat #t)) - (go (method-of-object this plat-idle)) - ) - (none) - ) + (< (-> this notice-dist) 0.0)) + (go (method-of-object this plat-path-active) (the-as plat #t)) + (go (method-of-object this plat-idle))) + (none)) diff --git a/goal_src/jak1/engine/common-obs/plat.gc b/goal_src/jak1/engine/common-obs/plat.gc index b4e83f6f28..40b85fd8c6 100644 --- a/goal_src/jak1/engine/common-obs/plat.gc +++ b/goal_src/jak1/engine/common-obs/plat.gc @@ -1,139 +1,102 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/geometry/path.gc") (require "engine/util/sync-info.gc") -;; name: plat.gc -;; name in dgo: plat -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (defpartgroup group-standard-plat :id 107 :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 363 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 364 :fade-after (meters 160) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 363 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 364 :fade-after (meters 160) :falloff-to (meters 160)))) (defpart 363 - :init-specs ((:num 1.5) - (:y (meters 1)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters 0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:conerot-x (degrees 140) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3)) - ) - ) + :init-specs + ((:num 1.5) + (:y (meters 1)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters 0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:conerot-x (degrees 140) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3)))) (defpart 364 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:y (meters 1.5)) - (:scale-x (meters 2) (meters 1)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 130) (degrees 100.00001)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:y (meters 1.5)) + (:scale-x (meters 2) (meters 1)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 130) (degrees 100.00001)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3)))) (deftype plat (baseplat) - ((path-pos float) - (sync sync-info-eased :inline) - (sound-id sound-id) - ) + ((path-pos float) + (sync sync-info-eased :inline) + (sound-id sound-id)) (:methods - (get-lit-skel (_type_) skeleton-group) - (plat-method-28 () none) - (wad () _type_ :state) - (plat-startup (plat) _type_ :state) - (plat-idle () _type_ :state) - (plat-path-active (plat) _type_ :state) - ) - ) - - -(defskelgroup *plat-sg* plat plat-lod0-jg plat-idle-ja - ((plat-lod0-mg (meters 20)) (plat-lod1-mg (meters 40)) (plat-lod2-mg (meters 999999))) - :bounds (static-spherem 0 -0.5 0 3) - ) - -(defskelgroup *plat-jungleb-sg* plat-jungleb plat-jungleb-lod0-jg plat-jungleb-idle-ja - ((plat-jungleb-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -0.5 0 3) - ) - -(defskelgroup *plat-sunken-sg* plat-sunken plat-sunken-lod0-jg plat-sunken-idle-ja - ((plat-sunken-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -0.5 0 3.2) - ) + (get-lit-skel (_type_) skeleton-group) + (plat-method-28 () none) + (wad () _type_ :state) + (plat-startup (plat) _type_ :state) + (plat-idle () _type_ :state) + (plat-path-active (plat) _type_ :state))) + +(defskelgroup *plat-sg* + plat + plat-lod0-jg + plat-idle-ja + ((plat-lod0-mg (meters 20)) (plat-lod1-mg (meters 40)) (plat-lod2-mg (meters 999999))) + :bounds (static-spherem 0 -0.5 0 3)) + +(defskelgroup *plat-jungleb-sg* + plat-jungleb + plat-jungleb-lod0-jg + plat-jungleb-idle-ja + ((plat-jungleb-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -0.5 0 3)) + +(defskelgroup *plat-sunken-sg* + plat-sunken + plat-sunken-lod0-jg + plat-sunken-idle-ja + ((plat-sunken-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -0.5 0 3.2)) (defmethod get-unlit-skel ((this plat)) (cond - ((= (-> (if (-> this entity) - (-> this entity extra level) - (-> *level* level-default) - ) - name - ) - 'jungleb - ) - *plat-jungleb-sg* - ) - ((or (= (-> (if (-> this entity) - (-> this entity extra level) - (-> *level* level-default) - ) - name - ) - 'sunken - ) - (= (-> (if (-> this entity) - (-> this entity extra level) - (-> *level* level-default) - ) - name - ) - 'sunkenb - ) - ) - *plat-sunken-sg* - ) - (else - *plat-sg* - ) - ) - ) + ((= (-> (if (-> this entity) (-> this entity extra level) (-> *level* level-default)) name) 'jungleb) *plat-jungleb-sg*) + ((or (= (-> (if (-> this entity) (-> this entity extra level) (-> *level* level-default)) name) 'sunken) + (= (-> (if (-> this entity) (-> this entity extra level) (-> *level* level-default)) name) 'sunkenb)) + *plat-sunken-sg*) + (else *plat-sg*))) (defmethod baseplat-method-24 ((this plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -142,103 +105,74 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 13107.2) - (set-root-prim! s5-0 s4-0) - ) + (set-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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod baseplat-method-26 ((this plat)) 0 - (none) - ) + (none)) (defmethod baseplat-method-25 ((this plat)) - (the-as sparticle-launch-group (when (!= (-> (if (-> this entity) - (-> this entity extra level) - (-> *level* level-default) - ) - name - ) - 'maincave - ) - (let ((v0-0 (create-launch-control (-> *part-group-id-table* 107) this))) - (set! (-> this part) v0-0) - v0-0 - ) - ) - ) - ) + (the-as sparticle-launch-group + (when (!= (-> (if (-> this entity) (-> this entity extra level) (-> *level* level-default)) name) 'maincave) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 107) this))) (set! (-> this part) v0-0) v0-0)))) (defstate plat-startup (plat) :virtual #t - :code (behavior ((arg0 plat)) - (cond - ((logtest? (-> self path flags) (path-control-flag not-found)) - (go-virtual plat-idle) - ) - ((> (-> self sync period) 0) - (go-virtual plat-path-active arg0) - ) - (else - (go-virtual plat-idle) - ) - ) - ) - ) + :code + (behavior ((arg0 plat)) + (cond + ((logtest? (-> self path flags) (path-control-flag not-found)) (go-virtual plat-idle)) + ((> (-> self sync period) 0) (go-virtual plat-path-active arg0)) + (else (go-virtual plat-idle))))) (defstate plat-idle (plat) :virtual #t :event plat-event - :trans (behavior () - (baseplat-method-20 self) - ) - :code (behavior () - (plat-trans) - (rider-post) - (suspend) - (loop - (when (not (-> self bouncing)) - (plat-trans) - (rider-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - (while (-> self bouncing) - (plat-trans) - (rider-post) - (suspend) - ) - ) - ) - ) + :trans + (behavior () + (baseplat-method-20 self)) + :code + (behavior () + (plat-trans) + (rider-post) + (suspend) + (loop + (when (not (-> self bouncing)) + (plat-trans) + (rider-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0) + (while (-> self bouncing) + (plat-trans) + (rider-post) + (suspend))))) (defstate plat-path-active (plat) :virtual #t :event plat-event - :exit (behavior () - (sound-stop (-> self sound-id)) - ) - :trans (behavior () - (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options wrap-phase)) - (get-current-phase (-> self sync)) - (get-current-phase-with-mirror (-> self sync)) - ) - ) - (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) - (if (< (vector-vector-distance (-> self root trans) (ear-trans)) 81920.0) - (sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) - ) - (plat-trans) - ) - :code (the-as (function plat object) anim-loop) - :post plat-post - ) + :exit + (behavior () + (sound-stop (-> self sound-id))) + :trans + (behavior () + (set! (-> self path-pos) + (if (logtest? (-> self fact options) (fact-options wrap-phase)) + (get-current-phase (-> self sync)) + (get-current-phase-with-mirror (-> self sync)))) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (if (< (vector-vector-distance (-> self root trans) (ear-trans)) 81920.0) + (sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans)))) + (plat-trans)) + :code + (the-as (function plat object) + anim-loop) + :post plat-post) (defmethod init-from-entity! ((this plat) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -250,40 +184,23 @@ (baseplat-method-21 this) (baseplat-method-25 this) (load-params! (-> this sync) this (the-as uint 0) 0.0 0.15 0.15) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this path) (new 'process 'curve-control this 'path -1000000000.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> this sound-id) (new-sound-id)) (cond ((logtest? (-> this path flags) (path-control-flag not-found)) (set! (-> this path-pos) 0.0) - (let ((a0-14 this)) - (baseplat-method-26 a0-14) - (go (method-of-object this plat-startup) a0-14) - ) - ) + (let ((a0-14 this)) (baseplat-method-26 a0-14) (go (method-of-object this plat-startup) a0-14))) ((> (-> this sync period) 0) - (set! (-> this path-pos) (if (logtest? (-> this fact options) (fact-options wrap-phase)) - (get-current-phase (-> this sync)) - (get-current-phase-with-mirror (-> this sync)) - ) - ) + (set! (-> this path-pos) + (if (logtest? (-> this fact options) (fact-options wrap-phase)) + (get-current-phase (-> this sync)) + (get-current-phase-with-mirror (-> this sync)))) (eval-path-curve! (-> this path) (-> this root trans) (-> this path-pos) 'interp) - (let ((a0-18 this)) - (baseplat-method-26 a0-18) - (go (method-of-object this plat-startup) a0-18) - ) - ) + (let ((a0-18 this)) (baseplat-method-26 a0-18) (go (method-of-object this plat-startup) a0-18))) (else - (set! (-> this path-pos) 0.0) - (eval-path-curve! (-> this path) (-> this root trans) (-> this path-pos) 'interp) - (let ((a0-20 this)) - (baseplat-method-26 a0-20) - (go (method-of-object this plat-startup) a0-20) - ) - ) - ) - (none) - ) + (set! (-> this path-pos) 0.0) + (eval-path-curve! (-> this path) (-> this root trans) (-> this path-pos) 'interp) + (let ((a0-20 this)) (baseplat-method-26 a0-20) (go (method-of-object this plat-startup) a0-20)))) + (none)) diff --git a/goal_src/jak1/engine/common-obs/process-drawable-h.gc b/goal_src/jak1/engine/common-obs/process-drawable-h.gc index bcdbd6ffec..f697235c6d 100644 --- a/goal_src/jak1/engine/common-obs/process-drawable-h.gc +++ b/goal_src/jak1/engine/common-obs/process-drawable-h.gc @@ -1,114 +1,74 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/anim/joint-h.gc") (require "engine/game/game-h.gc") - -;; name: process-drawable-h.gc -;; name in dgo: process-drawable-h -;; dgos: GAME, ENGINE - (define-extern cspace-index-by-name (function process-drawable string int)) + (define-extern cspace-by-name (function process-drawable string cspace)) + (define-extern joint-control-reset! (function joint-control joint-control-channel none :behavior process-drawable)) (defun cspace-by-name-no-fail ((arg0 process-drawable) (arg1 string)) "Get a cspace by name from the given process-drawable. If it fails, print an error and return the first one" (let ((result (cspace-by-name arg0 arg1))) (cond - (result - result - ) - (else - (format 0 "no cspace (~A)~%" arg1) - (-> arg0 node-list data 0) - ) - ) - ) - ) + (result result) + (else (format 0 "no cspace (~A)~%" arg1) (-> arg0 node-list data 0))))) (defun cspace-index-by-name-no-fail ((arg0 process-drawable) (arg1 string)) "Get the index of a cspace by name from the given process drawable. If it fails, print an error and return 0." (let ((v0-0 (cspace-index-by-name arg0 arg1))) (cond - ((< v0-0 0) - (format 0 "no cspace[ndx] (~A)~%" arg1) - 0 - ) - (else - v0-0 - ) - ) - ) - ) + ((< v0-0 0) (format 0 "no cspace[ndx] (~A)~%" arg1) 0) + (else v0-0)))) ;; The following functions can be applied to a joint-control-channel to change the frame number. ;; They return the resulting frame number as well. (defun num-func-none ((arg0 joint-control-channel) (arg1 float) (arg2 float)) "Don't change anything." - (-> arg0 frame-num) - ) + (-> arg0 frame-num)) (defun num-func-+! ((arg0 joint-control-channel) (arg1 float) (arg2 float)) "Increment the frame number, taking into account the animation speed and current game rate." (let ((f0-1 (+ (-> arg0 frame-num) (* arg1 (* (-> arg0 frame-group speed) (-> *display* time-adjust-ratio)))))) (set! (-> arg0 frame-num) f0-1) - f0-1 - ) - ) + f0-1)) (defun num-func--! ((arg0 joint-control-channel) (arg1 float) (arg2 float)) "Decrement the frame number, taking into account the animation speed and current game rate." (let ((f0-1 (- (-> arg0 frame-num) (* arg1 (* (-> arg0 frame-group speed) (-> *display* time-adjust-ratio)))))) (set! (-> arg0 frame-num) f0-1) - f0-1 - ) - ) + f0-1)) (defun num-func-loop! ((chan joint-control-channel) (inc float) (arg2 float)) "Like num-func-+!, but will wrap to 0 after going past the end." - ;; get the duration from the joint-animation-compressed. (let* ((duration (the float (+ (-> chan frame-group data 0 length) -1))) ;; increment (also add a full duration to it, I guess to avoid issues if inc is negative and we're near the start.) - (after-inc - (+ (-> chan frame-num) duration (* inc (* (-> chan frame-group speed) (-> *display* time-adjust-ratio)))) - ) + (after-inc (+ (-> chan frame-num) duration (* inc (* (-> chan frame-group speed) (-> *display* time-adjust-ratio))))) ;; wrap. - (wrapped (- after-inc (* (the float (the int (/ after-inc duration))) duration))) - ) + (wrapped (- after-inc (* (the float (the int (/ after-inc duration))) duration)))) (set! (-> chan frame-num) wrapped) - wrapped - ) - ) + wrapped)) (defun num-func-seek! ((arg0 joint-control-channel) (arg1 float) (arg2 float)) "Seek toward arg1 by at most arg2 (taking into account speed etc)" - (let ((f0-3 - (seek (-> arg0 frame-num) arg1 (* arg2 (* (-> arg0 frame-group speed) (-> *display* time-adjust-ratio)))) - ) - ) + (let ((f0-3 (seek (-> arg0 frame-num) arg1 (* arg2 (* (-> arg0 frame-group speed) (-> *display* time-adjust-ratio)))))) ;; set it twice, just to make sure. (set! (-> arg0 frame-num) f0-3) (set! (-> arg0 frame-num) f0-3) - f0-3 - ) - ) + f0-3)) (defun num-func-blend-in! ((arg0 joint-control-channel) (arg1 float) (arg2 float)) "Seek frame-interp toward 1. Once its there, do a joint-control-reset." (let ((f30-0 (seek (-> arg0 frame-interp) 1.0 (* arg1 (-> *display* time-adjust-ratio))))) (set! (-> arg0 frame-interp) f30-0) (set! (-> arg0 frame-interp) f30-0) - (if (= f30-0 1.0) - (joint-control-reset! (-> arg0 parent) arg0) - ) - f30-0 - ) - ) + (if (= f30-0 1.0) (joint-control-reset! (-> arg0 parent) arg0)) + f30-0)) (defun num-func-chan ((arg0 joint-control-channel) (arg1 float) (arg2 float)) "Copies the frame number from the channel arg1." @@ -120,22 +80,14 @@ (+ (the-as uint arg0) (the-as uint ;; 48 * (difference in indices) - (* 48 (- (the int arg1) (-> arg0 group-sub-index)))) - ) - ) - frame-num - ) - ) - ) + (* 48 (- (the int arg1) (-> arg0 group-sub-index)))))) + frame-num))) (set! (-> arg0 frame-num) f0-2) - f0-2 - ) - ) + f0-2)) (defun num-func-identity ((arg0 joint-control-channel) (arg1 float) (arg2 float)) "seems to be the same thing as none." - (-> arg0 frame-num) - ) + (-> arg0 frame-num)) (defenum entity-perm-status :bitfield #t @@ -150,33 +102,19 @@ (bit-7 7) (real-complete 8) (bit-9 9) - (bit-10 10) - ) + (bit-10 10)) (define-extern process-entity-status! (function process entity-perm-status symbol int)) (defmacro ja-group (&key (chan 0)) "get the frame group for self. default channel is 0, the base channel. returns #f if no frame group." - `(if (> (-> self skel active-channels) ,chan) - (-> self skel root-channel ,chan frame-group)) - ) + `(if (> (-> self skel active-channels) ,chan) (-> self skel root-channel ,chan frame-group))) (defmacro ja-group? (group &key (chan 0)) "is self in this frame group on this channel? default is channel 0, which is the base channel." - `(= (ja-group) ,group) - ) + `(= (ja-group) ,group)) -(defmacro ja (&key (chan 0) - &key (group! #f) - &key (num! #f) - &key (param0 #f) - &key (param1 #f) - &key (num-func #f) - &key (frame-num #f) - &key (frame-interp #f) - &key (dist #f) - &key (eval? #t) - ) +(defmacro ja (&key (chan 0) &key (group! #f) &key (num! #f) &key (param0 #f) &key (param1 #f) &key (num-func #f) &key (frame-num #f) &key (frame-interp #f) &key (dist #f) &key (eval? #t)) "set various joint anim parameters for self and eval them. you can use this for playing animations! @@ -205,53 +143,45 @@ - min = the start of the animation. - max = the end of the animation. " - (let* ((num-args (if (pair? num!) (cdr num!) '())) - (num! (if (pair? num!) (car num!) num!)) - (nf (cond - ((or (eq? num! 'identity) - (eq? num! 'min) - (eq? num! 'max) - ) - 'num-func-identity) - ((eq? num! 'none) 'num-func-none) - ((eq? num! '+!) 'num-func-+!) - ((eq? num! '-!) 'num-func--!) - ((eq? num! 'seek!) 'num-func-seek!) - ((eq? num! 'loop!) 'num-func-loop!) - ((eq? num! 'blend-in!) 'num-func-blend-in!) - ((eq? num! 'chan) 'num-func-chan) - )) - (p0 (if param0 param0 - (cond - ((eq? num! 'chan) `(the float ,(car num-args))) - ((eq? num! '+!) (if (null? num-args) 1.0 (car num-args))) - ((eq? num! '-!) (if (null? num-args) 1.0 (car num-args))) - ((eq? num! 'loop!) (if (null? num-args) 1.0 (if (eq? 'max (car num-args)) - (if group! - `(the float (1- (-> (the art-joint-anim ,group!) data 0 length))) - `(the float (1- (-> ja-ch frame-group data 0 length))) - ) - (car num-args)))) - ((eq? num! 'seek!) (if (or (null? num-args) (eq? (car num-args) 'max)) - (if group! - `(the float (1- (-> (the art-joint-anim ,group!) data 0 length))) - `(the float (1- (-> ja-ch frame-group data 0 length))) - ) - (car num-args))) - ))) - (p1 (if param1 param1 - (cond - ((eq? num! 'seek!) (if (or (null? num-args) (null? (cdr num-args))) 1.0 (cadr num-args))) - ))) - (frame-num (if (eq? 'max frame-num) (if group! - `(the float (1- (-> (the art-joint-anim ,group!) data 0 length))) - `(the float (1- (-> ja-ch frame-group data 0 length))) - ) - frame-num)) - (frame-group (if (or p0 p1 frame-num (not nf)) group! #f)) - ) - `(let ((ja-ch (-> self skel root-channel ,chan))) + (num! (if (pair? num!) (car num!) num!)) + (nf (cond + ((or (eq? num! 'identity) (eq? num! 'min) (eq? num! 'max)) 'num-func-identity) + ((eq? num! 'none) 'num-func-none) + ((eq? num! '+!) 'num-func-+!) + ((eq? num! '-!) 'num-func--!) + ((eq? num! 'seek!) 'num-func-seek!) + ((eq? num! 'loop!) 'num-func-loop!) + ((eq? num! 'blend-in!) 'num-func-blend-in!) + ((eq? num! 'chan) 'num-func-chan))) + (p0 (if param0 + param0 + (cond + ((eq? num! 'chan) `(the float ,(car num-args))) + ((eq? num! '+!) (if (null? num-args) 1.0 (car num-args))) + ((eq? num! '-!) (if (null? num-args) 1.0 (car num-args))) + ((eq? num! 'loop!) + (if (null? num-args) + 1.0 + (if (eq? 'max (car num-args)) + (if group! + `(the float (1- (-> (the art-joint-anim ,group!) data 0 length))) + `(the float (1- (-> ja-ch frame-group data 0 length)))) + (car num-args)))) + ((eq? num! 'seek!) + (if (or (null? num-args) (eq? (car num-args) 'max)) + (if group! + `(the float (1- (-> (the art-joint-anim ,group!) data 0 length))) + `(the float (1- (-> ja-ch frame-group data 0 length)))) + (car num-args)))))) + (p1 (if param1 param1 (cond ((eq? num! 'seek!) (if (or (null? num-args) (null? (cdr num-args))) 1.0 (cadr num-args)))))) + (frame-num (if (eq? 'max frame-num) + (if group! + `(the float (1- (-> (the art-joint-anim ,group!) data 0 length))) + `(the float (1- (-> ja-ch frame-group data 0 length)))) + frame-num)) + (frame-group (if (or p0 p1 frame-num (not nf)) group! #f))) + `(let ((ja-ch (-> self skel root-channel ,chan))) ,(if frame-interp `(set! (-> ja-ch frame-interp) ,frame-interp) `(none)) ,(if dist `(set! (-> ja-ch dist) ,dist) `(none)) ,(if frame-group `(set! (-> ja-ch frame-group) (the art-joint-anim ,frame-group)) `(none)) @@ -260,30 +190,25 @@ ,(if num-func `(set! (-> ja-ch num-func) ,num-func) `(none)) ,(if frame-num `(set! (-> ja-ch frame-num) ,frame-num) `(none)) ,(if nf - `(,(if eval? 'joint-control-channel-group-eval! 'joint-control-channel-group!) - ja-ch (the art-joint-anim ,group!) ,nf) - `(none)) + `(,(if eval? 'joint-control-channel-group-eval! 'joint-control-channel-group!) ja-ch (the art-joint-anim ,group!) ,nf) + `(none)) ,(cond ((eq? num! 'min) `(set! (-> ja-ch frame-num) 0.0)) - ((eq? num! 'max) (if group! - `(set! (-> ja-ch frame-num) (the float (1- (-> (the art-joint-anim ,group!) data 0 length)))) - `(set! (-> ja-ch frame-num) (the float (1- (-> ja-ch frame-group data 0 length)))) - )) + ((eq? num! 'max) + (if group! + `(set! (-> ja-ch frame-num) (the float (1- (-> (the art-joint-anim ,group!) data 0 length)))) + `(set! (-> ja-ch frame-num) (the float (1- (-> ja-ch frame-group data 0 length)))))) ((eq? num! 'identity) `(set! (-> ja-ch frame-num) ,(car num-args))) - (#t `(none)) - ) - )) - ) - -(defmacro ja-no-eval (&key (chan 0) - &key (group! #f) - &key (num! #f) - &key (param0 #f) - &key (param1 #f) - &key (num-func #f) - &key (frame-num #f) - &key (frame-interp #f) - &key (dist #f) - ) - `(ja :eval? #f :chan ,chan :group! ,group! :num! ,num! :param0 ,param0 :param1 ,param1 :num-func ,num-func :frame-num ,frame-num :frame-interp ,frame-interp :dist ,dist) - ) + (#t `(none)))))) + +(defmacro ja-no-eval (&key (chan 0) &key (group! #f) &key (num! #f) &key (param0 #f) &key (param1 #f) &key (num-func #f) &key (frame-num #f) &key (frame-interp #f) &key (dist #f)) + `(ja :eval? #f + :chan ,chan + :group! ,group! + :num! ,num! + :param0 ,param0 + :param1 ,param1 + :num-func ,num-func + :frame-num ,frame-num + :frame-interp ,frame-interp + :dist ,dist)) diff --git a/goal_src/jak1/engine/common-obs/process-drawable.gc b/goal_src/jak1/engine/common-obs/process-drawable.gc index 43c18175e8..a63de0a2b7 100644 --- a/goal_src/jak1/engine/common-obs/process-drawable.gc +++ b/goal_src/jak1/engine/common-obs/process-drawable.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/engine/engines.gc") (require "engine/gfx/merc/merc-blend-shape.gc") (require "engine/game/game-info.gc") @@ -10,10 +9,6 @@ (require "engine/collide/collide-shape-rider.gc") (require "engine/load/loader.gc") -;; name: process-drawable.gc -;; name in dgo: process-drawable -;; dgos: GAME, ENGINE - ;; TODO: there are some missing functions here... ;; DECOMP BEGINS @@ -21,46 +16,32 @@ (defun cspace-by-name ((arg0 process-drawable) (arg1 string)) (let* ((s4-0 (-> arg0 node-list length)) (s3-0 0) - (s2-0 (-> arg0 node-list data s3-0)) - ) + (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) - ) + (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) - ) + (set! s2-0 (-> arg0 node-list data s3-0)))) + (the-as cspace #f)) (defun cspace-index-by-name ((arg0 process-drawable) (arg1 string)) (let* ((s4-0 0) (s3-0 (-> arg0 node-list length)) (s2-0 0) - (v1-3 (-> arg0 node-list data s2-0)) - ) + (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) - ) + (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 - ) + (set! v1-3 (-> arg0 node-list data s2-0)))) + -1) (defun vector<-cspace! ((arg0 vector) (arg1 cspace)) (rlet ((Q :class vf) (vf0 :class vf) - (vf2 :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) - ;; og:preserve-this ADDED ;; there's a bug in swamp-blimp where they vector<-cspace! ;; on some default-initialized-to-zero bones @@ -69,33 +50,23 @@ (.svf (&-> temp quad) vf2) (when (= (-> temp w) 0.0) (set-vector! arg0 0. 0. 0. 1.) - (return arg0) - ) - ) + (return arg0))) (.wait.vf) (.mul.vf vf2 vf2 Q :mask #b111) (.nop.vf) (.nop.vf) (.mov.vf vf2 vf0 :mask #b1000) (.svf (&-> arg0 quad) vf2) - arg0 - ) - ) + arg0)) (defun vector<-cspace+vector! ((arg0 vector) (arg1 cspace) (arg2 vector)) - (vector-matrix*! arg0 arg2 (-> arg1 bone transform)) - ) + (vector-matrix*! arg0 arg2 (-> arg1 bone transform))) (defun-debug cspace-children ((arg0 process-drawable) (arg1 int)) (let ((a3-0 '())) (countdown (s4-0 (-> arg0 node-list length)) - (if (= (-> arg0 node-list data s4-0 parent) arg1) - (set! a3-0 (cons (-> arg0 node-list data s4-0) a3-0)) - ) - ) - a3-0 - ) - ) + (if (= (-> arg0 node-list data s4-0 parent) arg1) (set! a3-0 (cons (-> arg0 node-list data s4-0) a3-0)))) + a3-0)) ;; ERROR: function was not converted to expressions. Cannot decompile. @@ -103,71 +74,49 @@ (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 - ) - ) + v0-0)) -(defmethod lod-set! draw-control ((obj draw-control) (arg0 int)) +(defmethod lod-set! ((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 cur-lod) v1-1))) 0 - (none) - ) + (none)) -(defmethod lods-assign! draw-control ((obj draw-control) (arg0 lod-set)) +(defmethod lods-assign! ((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) - ) + (let ((a1-2 (min (-> obj cur-lod) (-> obj lod-set max-lod)))) (set! (-> obj cur-lod) -1) (lod-set! obj a1-2)) 0 - (none) - ) + (none)) -(defmethod setup-lods! lod-set ((obj lod-set) (arg0 skeleton-group) (arg1 art-group) (arg2 entity)) +(defmethod setup-lods! ((obj lod-set) (arg0 skeleton-group) (arg1 art-group) (arg2 entity)) (local-vars (sv-16 res-tag)) (let ((s4-0 arg0) - (s5-0 arg1) - ) + (s5-0 arg1)) (let ((v1-0 (-> s5-0 length)) - (s3-0 (-> s4-0 max-lod)) - ) + (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) - ) - ) + (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) - ) + (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)) - ) + (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)) - ) - ) + (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))))) - ) - ) - ) - ) - ) + (set! (-> obj lod a0-6 dist) (-> (the-as (pointer float) (&+ v1-14 (* a0-6 4)))))))))) (label cfg-16) - obj - ) + obj) (define *default-skel-template* '((align root #f) (prejoint root cspace<-parented-matrix-joint!))) @@ -179,72 +128,46 @@ (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) - ) + (goto cfg-16)) (let ((v1-10 ((method-of-type cspace reset-and-assign-geo!) (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)) - ) + (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 (reset-and-assign-geo! (-> 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)) - ) + (set! (-> v1-14 bone cache bone-matrix) (the-as uint 128))) (let ((v1-17 (reset-and-assign-geo! (-> 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 ((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 (reset-and-assign-geo! (-> gp-0 data s3-0) #f)) - ) + (s2-0 (if (-> s1-0 parent) (+ (-> s1-0 parent number) 1) 0)) + (v1-29 (reset-and-assign-geo! (-> gp-0 data s3-0) #f))) (set! (-> v1-29 joint) s1-0) (set! (-> v1-29 bone) (-> s4-1 bones s3-0)) (set! (-> v1-29 parent) (-> gp-0 data s2-0)) (set! (-> v1-29 bone cache bone-matrix) (the-as uint (* s3-0 128))) - (set! (-> v1-29 bone cache parent-matrix) (the-as uint (* s2-0 128))) - ) - (+! s3-0 1) - ) - ) - ) - ) - (add-connection - (-> (if (-> self entity) - (-> self entity extra level) - (-> *level* level-default) - ) - foreground-draw-engine - (-> self draw sink-group merc-sink foreground-texture-page) - ) - self - add-process-drawable - self - (-> self draw) - #f - ) + (set! (-> v1-29 bone cache parent-matrix) (the-as uint (* s2-0 128)))) + (+! s3-0 1))))) + (add-connection (-> (if (-> self entity) (-> self entity extra level) (-> *level* level-default)) + foreground-draw-engine + (-> self draw sink-group merc-sink foreground-texture-page)) + self + add-process-drawable + self + (-> self draw) + #f) (label cfg-16) - gp-0 - ) - ) + gp-0)) ;; WARN: Unsupported inline assembly instruction kind - [sync.l] ;; WARN: Unsupported inline assembly instruction kind - [cache dxwbin a2, 0] @@ -253,263 +176,176 @@ ;; WARN: Unsupported inline assembly instruction kind - [sync.l] (defun fill-skeleton-cache ((arg0 process-drawable)) (let ((v1-0 (-> arg0 node-list)) - (a0-2 (-> arg0 draw skeleton)) - ) + (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)))) - ) + (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))) - ) + (if (and (-> a3-0 parent) (-> a3-0 parent joint)) (set! t0-3 (-> a3-0 parent joint number))) + (set! (-> a2-3 parent-matrix) (the-as uint (* (+ t0-3 1) 128)))) (.sync.l) ;(.cache dxwbin a2-3 0) (.sync.l) ;(.cache dxwbin a2-3 1) ) (.sync.l) - 0 - ) - ) - 0 - ) + 0)) + 0) (defun execute-math-engine () (#when PC_PORT - (with-dma-buffer-add-bucket ((debug-buf (-> (current-frame) global-buf)) - (bucket-id debug-no-zbuf)) - (when *display-actor-counts* - (draw-string-xy (string-format "M: ~D/~D A: ~D" (-> *matrix-engine* length) MATRIX_ENGINE_AMOUNT (process-count *active-pool*)) debug-buf 8 (- 224 18) (font-color default) (font-flags shadow kerning)) - ) - ) - ) + (with-dma-buffer-add-bucket ((debug-buf (-> (current-frame) global-buf)) (bucket-id debug-no-zbuf)) + (when *display-actor-counts* + (draw-string-xy (string-format "M: ~D/~D A: ~D" (-> *matrix-engine* length) MATRIX_ENGINE_AMOUNT (process-count *active-pool*)) + debug-buf + 8 + (- 224 18) + (font-color default) + (font-flags shadow kerning))))) (let ((gp-0 *matrix-engine*)) (countdown (s5-0 (-> gp-0 length)) - (let ((a0-1 (handle->process (-> gp-0 s5-0)))) - (if a0-1 - (do-joint-math! (the-as process-drawable a0-1)) - ) - ) - ) - (set! (-> gp-0 length) 0) - ) - 0 + (let ((a0-1 (handle->process (-> gp-0 s5-0)))) (if a0-1 (do-joint-math! (the-as process-drawable a0-1))))) + (set! (-> gp-0 length) 0)) 0 - ) + 0) (define-extern draw-joint-spheres (function process-drawable symbol)) (#when PC_PORT - -(define *display-bones* #f) -(define *display-joint-names* #f) - -(defun-debug draw-bone-lines ((obj process-drawable)) - "Added in PC port to debug bones" - (dotimes (i (-> obj node-list length)) - (let ((parent (-> obj node-list data i parent))) - (when (and parent (nonzero? parent) (-> parent joint) (-> parent parent)) - (let ((child (vector<-cspace! (new-stack-vector0) (-> obj node-list data i))) - ) - (add-debug-line #t (bucket-id debug) child (vector<-cspace! (new-stack-vector0) parent) (new 'static 'rgba :g #xff :a #x40) #f (the rgba -1)) - ) - ) - ) - ) - )) - -(defmethod do-joint-math! process-drawable ((obj process-drawable)) + (define *display-bones* #f) + (define *display-joint-names* #f) + (defun-debug draw-bone-lines ((obj process-drawable)) + "Added in PC port to debug bones" + (dotimes (i (-> obj node-list length)) + (let ((parent (-> obj node-list data i parent))) + (when (and parent (nonzero? parent) (-> parent joint) (-> parent parent)) + (let ((child (vector<-cspace! (new-stack-vector0) (-> obj node-list data i)))) + (add-debug-line #t + (bucket-id debug) + child + (vector<-cspace! (new-stack-vector0) parent) + (new 'static 'rgba :g #xff :a #x40) + #f + (the rgba -1)))))))) + +(defmethod do-joint-math! ((obj process-drawable)) (cond - ((logtest? (-> obj draw status) (draw-status hidden no-anim)) - ) + ((logtest? (-> obj draw status) (draw-status hidden no-anim))) ((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)) - ) + (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))) - (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 (scratchpad-object int))))) - s4-0 - obj - ) - (if (-> obj skel prebind-function) - ((-> obj skel prebind-function) (the-as pointer (+ 2416 (scratchpad-object int))) 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 (scratchpad-object int))) - (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 (scratchpad-object int))) - ) - (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) - (-> (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)) - ) - ) - ) - ) - - (#when PC_PORT (when *debug-segment* - (if *display-bones* - (draw-bone-lines obj)) - (if *display-joint-names* - (draw-joint-spheres obj)) - )) - + (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 (scratchpad-object int))))) + s4-0 + obj) + (if (-> obj skel prebind-function) + ((-> obj skel prebind-function) (the-as pointer (+ 2416 (scratchpad-object int))) 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 (scratchpad-object int))) + (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 (scratchpad-object int)))) + (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) + (-> (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)))))) + (#when PC_PORT + (when *debug-segment* + (if *display-bones* (draw-bone-lines obj)) + (if *display-joint-names* (draw-joint-spheres obj)))) 0 - (none) - ) + (none)) -(defmethod cleanup-for-death process-drawable ((obj process-drawable)) - (if (type-type? (-> obj root type) collide-shape) - (clear-collide-with-as (the-as collide-shape (-> obj root))) - ) - (if (nonzero? (-> obj skel)) - (ja-channel-set! 0) - ) +(defmethod cleanup-for-death ((obj process-drawable)) + (if (type-type? (-> obj root type) collide-shape) (clear-collide-with-as (the-as collide-shape (-> obj root)))) + (if (nonzero? (-> obj skel)) (ja-channel-set! 0)) (process-entity-status! obj (entity-perm-status dead) #t) - (none) - ) + (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) a2-0 (meters 0.1) (static-rgba 0 #xff 0 #x40)) (#when PC_PORT - (add-debug-text-sphere (!= (-> arg0 node-list data s5-0 joint) #f) (bucket-id debug) a2-0 (meters 0.1) (-> arg0 node-list data s5-0 joint name) (static-rgba 0 #xff 0 #x40))) - ) - ) - #f - ) - -(defmethod deactivate process-drawable ((obj process-drawable)) - (if (nonzero? (-> obj part)) - (kill-and-free-particles (-> obj part)) - ) - (if (nonzero? (-> obj sound)) - (stop! (-> obj sound)) - ) + (add-debug-text-sphere (!= (-> arg0 node-list data s5-0 joint) #f) + (bucket-id debug) + a2-0 + (meters 0.1) + (-> arg0 node-list data s5-0 joint name) + (static-rgba 0 #xff 0 #x40))))) + #f) + +(defmethod deactivate ((obj process-drawable)) + (if (nonzero? (-> obj part)) (kill-and-free-particles (-> obj part))) + (if (nonzero? (-> obj sound)) (stop! (-> obj sound))) ((method-of-type process deactivate) obj) - (none) - ) + (none)) (defstate process-drawable-art-error (process-drawable) - :code (behavior ((arg0 string)) - (logior! (-> self entity extra perm status) (entity-perm-status bit-1)) - (loop - (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 red) - (the-as vector2h #f) - ) - ) - ) - (suspend) - ) - (none) - ) - ) + :code + (behavior ((arg0 string)) + (logior! (-> self entity extra perm status) (entity-perm-status bit-1)) + (loop + (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 red) (the-as vector2h #f)))) + (suspend)) + (none))) (define-extern ja-post (function none :behavior process-drawable)) + (define-extern anim-loop (function none :behavior process-drawable)) + (defstate process-drawable-idle (process-drawable) :code anim-loop - :post ja-post - ) + :post ja-post) ;; 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 ((obj process-drawable) (arg0 skeleton-group) (arg1 pair)) (local-vars (s3-0 draw-control) (sv-16 art-element) (sv-20 int)) (let ((s1-0 (cond - ((= (-> arg0 texture-level) 2) - (-> *level* level-default) - ) - ((-> obj entity) - (-> obj entity extra level) - ) - (else - (-> *level* level-default) - ) - ) - ) - ) + ((= (-> arg0 texture-level) 2) (-> *level* level-default)) + ((-> obj entity) (-> obj entity extra level)) + (else (-> *level* level-default))))) (let ((s4-0 (load-to-heap-by-name (-> s1-0 art-group) (-> 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) - ) + (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) - ) + (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 no-skeleton-update)) (set! (-> v1-26 art-group) s4-0) @@ -521,48 +357,22 @@ (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 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! (-> v1-26 ripple) #f)) (set! (-> s3-0 bounds quad) (-> arg0 bounds quad)) (let ((v1-28 (-> arg0 shadow))) (when (and (> v1-28 0) (< v1-28 sv-20)) (let ((s0-0 (-> s4-0 data v1-28)) - (v1-32 (res-lump-value (-> obj entity) 'options uint128)) - ) - (if (and (zero? (logand #x20000 v1-32)) (= (-> s0-0 type) shadow-geo)) - (set! (-> s3-0 shadow) (the-as shadow-geo s0-0)) - ) - ) - ) - ) - (if (not (setup-lods! (-> s3-0 lod-set) arg0 s4-0 (-> obj entity))) - (go process-drawable-art-error "mesh") - ) + (v1-32 (res-lump-value (-> obj entity) 'options uint128))) + (if (and (zero? (logand #x20000 v1-32)) (= (-> s0-0 type) shadow-geo)) (set! (-> s3-0 shadow) (the-as shadow-geo s0-0)))))) + (if (not (setup-lods! (-> 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)))) + (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) @@ -581,181 +391,99 @@ (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) - ) + (goto cfg-59)) (ja-channel-set! 1) (let ((s1-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s1-1 - (the-as art-joint-anim (-> s4-0 data (-> arg0 janim))) - num-func-identity - ) - (set! (-> s1-1 frame-num) 0.0) - ) - ) - (else - (ja-channel-set! 0) - ) - ) - (set! (-> s2-1 effect) (new 'process 'effect-control obj)) - ) - ) - ) + (joint-control-channel-group-eval! s1-1 (the-as art-joint-anim (-> s4-0 data (-> arg0 janim))) num-func-identity) + (set! (-> s1-1 frame-num) 0.0))) + (else (ja-channel-set! 0))) + (set! (-> s2-1 effect) (new 'process 'effect-control obj))))) (else - (set! (-> s3-0 skeleton bones 0 transform vector 3 quad) (-> (the-as vector (get-property-struct - (-> sv-16 extra) - 'trans-offset - 'interp - -1000000000.0 - *null-vector* - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - quad - ) - ) - ) - ) - ) - ) - ) + (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) - ) - ) + (if (and gp-1 (nonzero? gp-1) (type-type? (-> gp-1 type) collide-shape)) (find-collision-meshes gp-1))) (label cfg-59) - (none) - ) + (none)) -(defmethod initialize-skeleton-by-name process-drawable ((obj process-drawable) (arg0 string) (arg1 object)) +(defmethod initialize-skeleton-by-name ((obj process-drawable) (arg0 string) (arg1 object)) (let ((s3-0 string->symbol)) (format (clear *temp-string*) "*~S-sg*" arg0) (let ((s3-1 (-> (s3-0 *temp-string*) value))) (if (and (nonzero? s3-1) (valid? s3-1 skeleton-group #f #f 0)) - (initialize-skeleton obj (the-as skeleton-group s3-1) (the-as pair arg1)) - (go process-drawable-art-error arg0) - ) - ) - ) - obj - ) + (initialize-skeleton obj (the-as skeleton-group s3-1) (the-as pair arg1)) + (go process-drawable-art-error arg0)))) + obj) -(defmethod apply-alignment process-drawable ((obj process-drawable) (arg0 align-opts) (arg1 transformq) (arg2 vector)) +(defmethod apply-alignment ((obj process-drawable) (arg0 align-opts) (arg1 transformq) (arg2 vector)) (when (logtest? arg0 (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel)) (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 (align-opts no-gravity)) - (set-vector! grav-rt-body 0.0 0.0 0.0 1.0) - ) + (vel-rt-body (vector-matrix*! (new 'stack-no-clear 'vector) (-> obj root transv) world-T-body))) + (if (logtest? arg0 (align-opts no-gravity)) (set-vector! grav-rt-body 0.0 0.0 0.0 1.0)) (when (logtest? arg0 (align-opts adjust-x-vel)) - (set! (-> vel-rt-body x) (+ (* (-> arg1 trans x) (-> arg2 x) (-> *display* frames-per-second)) - (* (-> grav-rt-body x) (-> *display* seconds-per-frame)) - ) - ) - (if (zero? (logand arg0 (align-opts adjust-xz-vel keep-other-velocities))) - (set! (-> vel-rt-body z) 0.0) - ) - ) + (set! (-> vel-rt-body x) + (+ (* (-> arg1 trans x) (-> arg2 x) (-> *display* frames-per-second)) + (* (-> grav-rt-body x) (-> *display* seconds-per-frame)))) + (if (zero? (logand arg0 (align-opts adjust-xz-vel keep-other-velocities))) (set! (-> vel-rt-body z) 0.0))) (if (and (logtest? arg0 (align-opts adjust-y-vel)) - (not (and (logtest? arg0 (align-opts ignore-y-if-zero)) (= (-> arg1 trans y) 0.0))) - ) - (set! (-> vel-rt-body y) (+ (* (-> arg1 trans y) (-> arg2 y) (-> *display* frames-per-second)) - (* (-> grav-rt-body y) (-> *display* seconds-per-frame)) - ) - ) - ) + (not (and (logtest? arg0 (align-opts ignore-y-if-zero)) (= (-> arg1 trans y) 0.0)))) + (set! (-> vel-rt-body y) + (+ (* (-> arg1 trans y) (-> arg2 y) (-> *display* frames-per-second)) + (* (-> grav-rt-body y) (-> *display* seconds-per-frame))))) (when (logtest? arg0 (align-opts adjust-xz-vel)) - (set! (-> vel-rt-body z) (+ (* (-> arg1 trans z) (-> arg2 z) (-> *display* frames-per-second)) - (* (-> grav-rt-body z) (-> *display* seconds-per-frame)) - ) - ) - (if (zero? (logand arg0 (align-opts adjust-x-vel keep-other-velocities))) - (set! (-> vel-rt-body x) 0.0) - ) - ) - (vector-matrix*! (-> obj root transv) vel-rt-body body-T-world) - ) - ) + (set! (-> vel-rt-body z) + (+ (* (-> arg1 trans z) (-> arg2 z) (-> *display* frames-per-second)) + (* (-> grav-rt-body z) (-> *display* seconds-per-frame)))) + (if (zero? (logand arg0 (align-opts adjust-x-vel keep-other-velocities))) (set! (-> vel-rt-body x) 0.0))) + (vector-matrix*! (-> obj root transv) vel-rt-body body-T-world))) (if (logtest? arg0 (align-opts adjust-quat)) - (quaternion-normalize! (quaternion*! (-> obj root quat) (-> obj root quat) (-> arg1 quat))) - ) - (the-as collide-shape (-> obj root)) - ) - + (quaternion-normalize! (quaternion*! (-> obj root quat) (-> obj root quat) (-> arg1 quat)))) + (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 - ) - ) - ) - ) + ((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)) - (= (-> self skel root-channel arg0 frame-num) 0.0) - ) + (= (-> self skel root-channel arg0 frame-num) 0.0)) (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)) - (+ (-> self skel root-channel arg0 frame-group data 0 length) -1) - ) + (+ (-> self skel root-channel arg0 frame-group data 0 length) -1)) (defbehavior ja-frame-num process-drawable ((arg0 int)) - (-> self skel root-channel arg0 frame-num) - ) + (-> self skel root-channel arg0 frame-num)) (defbehavior ja-aframe-num process-drawable ((arg0 int)) (let* ((a0-2 (-> self skel root-channel arg0)) - (v1-2 (-> a0-2 frame-group)) - ) - (+ (* (-> a0-2 frame-num) (-> v1-2 artist-step)) (if (and v1-2 (nonzero? v1-2)) - (-> v1-2 artist-base) - 0.0 - ) - ) - ) - ) + (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)))) (defbehavior ja-aframe process-drawable ((arg0 float) (arg1 int)) (let ((v1-3 (-> self skel root-channel arg1 frame-group))) - (/ (- arg0 (if (and v1-3 (nonzero? v1-3)) - (-> v1-3 artist-base) - 0.0 - ) - ) - (if v1-3 - (-> v1-3 artist-step) - 1.0 - ) - ) - ) - ) + (/ (- arg0 (if (and v1-3 (nonzero? v1-3)) (-> v1-3 artist-base) 0.0)) (if v1-3 (-> v1-3 artist-step) 1.0)))) (defbehavior ja-speed process-drawable ((arg0 int)) - (-> self skel root-channel arg0 frame-group speed) - ) + (-> self skel root-channel arg0 frame-group speed)) (defbehavior ja-step process-drawable ((arg0 int)) - (-> self skel root-channel arg0 frame-group artist-step) - ) + (-> self skel root-channel arg0 frame-group artist-step)) (defbehavior ja-channel-set! process-drawable ((arg0 int)) (set! (-> self skel active-channels) arg0) @@ -765,177 +493,106 @@ (dotimes (v1-6 arg0) (set! (-> self skel root-channel v1-6 eval-time) (the-as uint (-> *display* base-frame-counter))) (set! (-> self skel root-channel v1-6 group-sub-index) v1-6) - (set! (-> self skel root-channel v1-6 command) (if (zero? v1-6) - 'push - 'blend - ) - ) + (set! (-> self skel root-channel v1-6 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 - ) + (set! (-> self skel root-channel v1-6 group-size) arg0)) + arg0) (defbehavior ja-channel-push! process-drawable ((arg0 int) (arg1 time-frame)) (cond ((or (zero? (-> self skel active-channels)) (zero? arg1) (when (>= (+ (-> self skel active-channels) arg0) (-> self skel allocated-length)) - (format - 0 - "WARNING: ~A could not do (ja-channel-push ~D) because it has ~D/~D channels.~%" - self - arg0 - (-> self skel active-channels) - (-> self skel allocated-length) - ) - #t - ) - ) - (ja-channel-set! arg0) - ) + (format 0 + "WARNING: ~A could not do (ja-channel-push ~D) because it has ~D/~D channels.~%" + self + arg0 + (-> self skel active-channels) + (-> self skel allocated-length)) + #t)) + (ja-channel-set! arg0)) (else - (when (not (-> self skel root-channel 0 frame-group)) - (set! (-> self skel active-channels) - (/ (&- (the-as pointer (-> self skel root-channel)) (the-as uint (the-as pointer (-> self skel channel)))) 48) - ) - (if (zero? (-> self skel active-channels)) - (return (ja-channel-set! arg0)) - ) - ) - (set! (-> self skel root-channel) - (the-as (inline-array joint-control-channel) (-> self skel channel (-> self skel active-channels))) - ) - (set! (-> self skel active-channels) (+ arg0 1 (-> self skel active-channels))) - (dotimes (v1-26 arg0) - (set! (-> self skel root-channel v1-26 eval-time) (the-as uint (-> *display* base-frame-counter))) - (set! (-> self skel root-channel v1-26 group-sub-index) v1-26) - (set! (-> self skel root-channel v1-26 command) (if (zero? v1-26) - 'push - 'blend - ) - ) - (set! (-> self skel root-channel v1-26 frame-interp) 0.0) - (set! (-> self skel root-channel v1-26 frame-num) 0.0) - (set! (-> self skel root-channel v1-26 frame-group) #f) - (set! (-> self skel root-channel v1-26 num-func) num-func-none) - (set! (-> self skel root-channel v1-26 group-size) arg0) - ) - (let ((v1-31 (-> self skel root-channel arg0))) - (set! (-> v1-31 eval-time) (the-as uint (-> *display* base-frame-counter))) - (set! (-> v1-31 group-sub-index) arg0) - (set! (-> self skel blend-index) (+ (-> self skel active-channels) -1)) - (set! (-> v1-31 frame-interp) 0.0) - (set! (-> v1-31 frame-num) 0.0) - (set! (-> v1-31 frame-group) #f) - (set! (-> v1-31 group-size) arg0) - (set! (-> v1-31 param 0) (/ 5.0 (+ 5.0 (the float arg1)))) - (set! (-> v1-31 num-func) num-func-blend-in!) - (cond - ((= arg0 1) - (set! (-> v1-31 command) 'stack1) - (set! (-> self skel root-channel 0 command) 'push1) - ) - (else - (set! (-> v1-31 command) 'stack) - ) - ) - ) - arg0 - ) - ) - ) + (when (not (-> self skel root-channel 0 frame-group)) + (set! (-> self skel active-channels) + (/ (&- (the-as pointer (-> self skel root-channel)) (the-as uint (the-as pointer (-> self skel channel)))) 48)) + (if (zero? (-> self skel active-channels)) (return (ja-channel-set! arg0)))) + (set! (-> self skel root-channel) + (the-as (inline-array joint-control-channel) (-> self skel channel (-> self skel active-channels)))) + (set! (-> self skel active-channels) (+ arg0 1 (-> self skel active-channels))) + (dotimes (v1-26 arg0) + (set! (-> self skel root-channel v1-26 eval-time) (the-as uint (-> *display* base-frame-counter))) + (set! (-> self skel root-channel v1-26 group-sub-index) v1-26) + (set! (-> self skel root-channel v1-26 command) (if (zero? v1-26) 'push 'blend)) + (set! (-> self skel root-channel v1-26 frame-interp) 0.0) + (set! (-> self skel root-channel v1-26 frame-num) 0.0) + (set! (-> self skel root-channel v1-26 frame-group) #f) + (set! (-> self skel root-channel v1-26 num-func) num-func-none) + (set! (-> self skel root-channel v1-26 group-size) arg0)) + (let ((v1-31 (-> self skel root-channel arg0))) + (set! (-> v1-31 eval-time) (the-as uint (-> *display* base-frame-counter))) + (set! (-> v1-31 group-sub-index) arg0) + (set! (-> self skel blend-index) (+ (-> self skel active-channels) -1)) + (set! (-> v1-31 frame-interp) 0.0) + (set! (-> v1-31 frame-num) 0.0) + (set! (-> v1-31 frame-group) #f) + (set! (-> v1-31 group-size) arg0) + (set! (-> v1-31 param 0) (/ 5.0 (+ 5.0 (the float arg1)))) + (set! (-> v1-31 num-func) num-func-blend-in!) + (cond + ((= arg0 1) (set! (-> v1-31 command) 'stack1) (set! (-> self skel root-channel 0 command) 'push1)) + (else (set! (-> v1-31 command) 'stack)))) + arg0))) (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)) - ) + (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 (= (-> 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) - ) + (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 () (let ((gp-0 (-> self skel root-channel 0)) (s5-0 (-> self skel channel (-> self skel active-channels))) - (s4-0 (-> *display* base-frame-counter)) - ) + (s4-0 (-> *display* base-frame-counter))) (while (< (the-as int gp-0) (the-as int s5-0)) (case (-> gp-0 command) - (('stack 'stack1) - ) - (else - (if (!= (-> gp-0 eval-time) s4-0) - (joint-control-channel-eval gp-0) - ) - ) - ) - (&+! gp-0 48) - ) - ) - 0 - ) + (('stack 'stack1)) + (else (if (!= (-> gp-0 eval-time) s4-0) (joint-control-channel-eval gp-0)))) + (&+! gp-0 48))) + 0) (defbehavior ja-blend-eval process-drawable () (let ((gp-0 (-> self skel root-channel)) (s5-0 (the-as joint-control-channel (-> self skel channel))) - (s4-0 (-> *display* base-frame-counter)) - ) + (s4-0 (-> *display* base-frame-counter))) (when (and (nonzero? (-> self skel active-channels)) (!= gp-0 s5-0)) (while (< (the-as int s5-0) (the-as int gp-0)) (case (-> s5-0 command) - (('stack 'stack1) - ) - (else - (if (!= (-> s5-0 eval-time) s4-0) - (joint-control-channel-eval s5-0) - ) - ) - ) - (&+! s5-0 48) - ) - ) - ) - 0 - ) + (('stack 'stack1)) + (else (if (!= (-> s5-0 eval-time) s4-0) (joint-control-channel-eval s5-0)))) + (&+! s5-0 48)))) + 0) ;; ERROR: Unsupported inline assembly instruction kind - [lw ra, return-from-thread(s7)] ;; ERROR: Unsupported inline assembly instruction kind - [jr ra] -(defmethod evaluate-joint-control process-drawable ((obj process-drawable)) +(defmethod evaluate-joint-control ((obj process-drawable)) (local-vars (s7-0 none) (ra-0 int)) (let ((gp-0 (-> obj skel))) (label cfg-1) @@ -951,54 +608,34 @@ (b! (!= s4-0 (-> gp-0 active-channels)) cfg-1 :delay (nop!)) (b! #t cfg-12 :delay (nop!)) (label cfg-6) - (b! (!= v1-7 'stack1) cfg-9 :delay (nop!)) - ) + (b! (!= v1-7 'stack1) cfg-9 :delay (nop!))) (joint-control-channel-eval s2-0) (b! (!= s4-0 (-> gp-0 active-channels)) cfg-1 :delay (nop!)) (set! (-> gp-0 channel (+ s3-0 -1) frame-interp) (-> s2-0 frame-interp)) (b! #t cfg-12 :delay (nop!)) (label cfg-9) (let ((s1-0 (-> s2-0 frame-group))) - (let ((v1-16 art-joint-anim)) - (b! (= (-> s1-0 type) v1-16) cfg-11) - ) + (let ((v1-16 art-joint-anim)) (b! (= (-> s1-0 type) v1-16) cfg-11)) (go process-drawable-art-error "joint-anim") (format 0 "dummy-19 bad~%") (break!) (nop!) 0 (label cfg-11) - (set! (-> s2-0 frame-num) (fmax 0.0 (fmin (-> s2-0 frame-num) (the float (+ (-> s1-0 data 0 length) -1))))) - ) - ) + (set! (-> s2-0 frame-num) (fmax 0.0 (fmin (-> s2-0 frame-num) (the float (+ (-> s1-0 data 0 length) -1))))))) (label cfg-12) (+! s3-0 1) (label cfg-13) - (b! (< s3-0 s4-0) cfg-3) - ) + (b! (< s3-0 s4-0) cfg-3)) (dotimes (v1-26 s4-0) - (set! (-> gp-0 channel v1-26 frame-interp) (fmax 0.0 (fmin 1.0 (-> gp-0 channel v1-26 frame-interp)))) - ) - (if (or (zero? s4-0) (not (-> gp-0 root-channel 0 frame-group))) - (logior! (-> obj draw status) (draw-status no-anim)) - ) - ) - (if (logtest? (-> obj skel status) (janim-status blerc blerc-done)) - (merc-blend-shape obj) - ) - (if (logtest? (-> obj skel status) (janim-status eye-done eye)) - (merc-eye-anim obj) - ) + (set! (-> gp-0 channel v1-26 frame-interp) (fmax 0.0 (fmin 1.0 (-> gp-0 channel v1-26 frame-interp))))) + (if (or (zero? s4-0) (not (-> gp-0 root-channel 0 frame-group))) (logior! (-> obj draw status) (draw-status no-anim)))) + (if (logtest? (-> obj skel status) (janim-status blerc blerc-done)) (merc-blend-shape obj)) + (if (logtest? (-> obj skel status) (janim-status eye-done eye)) (merc-eye-anim obj)) (label cfg-27) - (let ((a0-17 (-> gp-0 effect))) - (if a0-17 - (effect-control-method-9 a0-17) - ) - ) - ) + (let ((a0-17 (-> gp-0 effect))) (if a0-17 (effect-control-method-9 a0-17)))) 0 - (none) - ) + (none)) ;; WARN: Function ja-post has a return type of none, but the expression builder found a return statement. (defbehavior ja-post process-drawable () @@ -1009,173 +646,103 @@ (evaluate-joint-control self) (when (or (logtest? (-> self skel status) (janim-status inited)) gp-1) (do-joint-math! self) - (if (and gp-1 (type-type? (-> self root type) collide-shape)) - (update-transforms! (the-as collide-shape (-> self root))) - ) - (return #f) - ) - ) - ) + (if (and gp-1 (type-type? (-> self root type) collide-shape)) (update-transforms! (the-as collide-shape (-> self root)))) + (return #f)))) ;; og:preserve-this added matrix-engine check for PC port (if (< (-> *matrix-engine* length) MATRIX_ENGINE_AMOUNT) - (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) - ) + (none)) -(defmethod current-cycle-distance joint-control ((obj joint-control)) +(defmethod current-cycle-distance ((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))) - ) + (gp-0 (the-as (pointer float) (new 'stack-no-clear 'vector)))) (while (< (the-as int s4-0) (the-as int s5-0)) (case (-> s4-0 command) - (('push) - (set! (-> gp-0 0) (-> s4-0 dist)) - (set! gp-0 (&-> gp-0 1)) - ) - (('blend 'push1) - (set! (-> gp-0 -1) (lerp (-> gp-0 -1) (-> s4-0 dist) (-> s4-0 frame-interp))) - ) - (('stack) - (set! (-> gp-0 -2) (lerp (-> gp-0 -2) (-> gp-0 -1) (-> s4-0 frame-interp))) - (set! gp-0 (&-> gp-0 -1)) - ) - ) - (&+! s4-0 48) - ) - (-> gp-0 -1) - ) - ) - (else - 0.0 - ) - ) - ) + (('push) (set! (-> gp-0 0) (-> s4-0 dist)) (set! gp-0 (&-> gp-0 1))) + (('blend 'push1) (set! (-> gp-0 -1) (lerp (-> gp-0 -1) (-> s4-0 dist) (-> s4-0 frame-interp)))) + (('stack) (set! (-> gp-0 -2) (lerp (-> gp-0 -2) (-> gp-0 -1) (-> s4-0 frame-interp))) (set! gp-0 (&-> gp-0 -1)))) + (&+! s4-0 48)) + (-> gp-0 -1))) + (else 0.0))) (defbehavior anim-loop process-drawable () (logior! (-> self mask) (process-mask sleep-code)) (loop (nop!) - (suspend) - ) - (none) - ) + (suspend)) + (none)) (defbehavior transform-post process-drawable () (ja-post) (update-transforms! (the-as collide-shape (-> self root))) - 0 - ) + 0) (defbehavior rider-trans process-drawable () (detect-riders! (the-as collide-shape (-> self root))) - 0 - ) + 0) (defbehavior rider-post process-drawable () (ja-post) - (let ((gp-0 (the-as collide-shape (-> self root)))) - (update-transforms! gp-0) - (pull-riders! gp-0) - (do-push-aways! gp-0) - ) - 0 - ) + (let ((gp-0 (the-as collide-shape (-> self root)))) (update-transforms! gp-0) (pull-riders! gp-0) (do-push-aways! gp-0)) + 0) (defbehavior pusher-post process-drawable () (ja-post) - (let ((gp-0 (the-as collide-shape (-> self root)))) - (update-transforms! gp-0) - (do-push-aways! gp-0) - ) - 0 - ) + (let ((gp-0 (the-as collide-shape (-> self root)))) (update-transforms! gp-0) (do-push-aways! gp-0)) + 0) (defbehavior process-drawable-delay-player process-drawable ((arg0 time-frame)) (while (and *target* (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (suspend) - ) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (suspend)) (set! (-> self state-time) (-> *display* base-frame-counter)) (process-grab? *target*) (while (or (-> *setting-control* current talking) (-> *setting-control* current spooling) (-> *setting-control* current hint) - (-> *setting-control* current ambient) - ) - (suspend) - ) + (-> *setting-control* current ambient)) + (suspend)) (while (< (- (-> *display* base-frame-counter) (-> self state-time)) arg0) - (suspend) - ) + (suspend)) (process-release? *target*) (suspend) - 0 - ) + 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) - (if (type-type? (-> arg0 type) fuel-cell) - (process-entity-status! self (entity-perm-status dead) #t) - ) - ) - ) - ) - ) - (none) - ) + (('pickup) (if (type-type? (-> arg0 type) fuel-cell) (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)) (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)) - ) + (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)) - ) + (s4-0 (new 'static 'fact-info))) (set! (-> s4-0 options) (fact-options)) - (if arg2 - (set! (-> s4-0 options) (fact-options instant-collect)) - ) + (if arg2 (set! (-> s4-0 options) (fact-options instant-collect))) (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) - ) - ) - ) - ) + (goto cfg-12))))) 0 - (none) - ) + (none)) ;; this part is debug only (when *debug-segment* -(define *valid-con* (new 'debug 'string #x4000 (the-as string #f))) + (define *valid-con* (new 'debug 'string #x4000 (the-as string #f)))) -) (defun-debug process-drawable-valid? ((arg0 process-drawable)) (let ((s5-0 #t)) (clear *valid-con*) @@ -1184,73 +751,42 @@ (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) - ) - ) - ) - ) - ) + ((valid? (-> s3-0 geo) drawable "cspace geo" #t *valid-con*)) + (else (format *valid-con* "ERROR: ~A has an invalid geo ~A~%" s3-0 (-> s3-0 geo)) (set! s5-0 #f)))))) (let ((s4-1 (-> arg0 skel active-channels))) (when (< (-> arg0 skel allocated-length) s4-1) - (format - *valid-con* - "ERROR: ~~A has ~D joint channels, but only ~D are allowed~%" - arg0 - s4-1 - (-> arg0 skel allocated-length) - ) - (set! s5-0 #f) - ) + (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) - ) + (('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* + (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 - ) - ) - ) - ) - ) - ) - ) - ) + (+ (-> 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 - ) - ) + (format 0 "~S" *valid-con*)) + s5-0)) diff --git a/goal_src/jak1/engine/common-obs/process-taskable.gc b/goal_src/jak1/engine/common-obs/process-taskable.gc index f4610a38ad..04b2a4c9c9 100644 --- a/goal_src/jak1/engine/common-obs/process-taskable.gc +++ b/goal_src/jak1/engine/common-obs/process-taskable.gc @@ -1,43 +1,27 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/geometry/path-h.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/game/task/task-control.gc") (require "engine/common-obs/collectables.gc") (require "engine/game/main.gc") - -;; name: process-taskable.gc -;; name in dgo: process-taskable -;; dgos: GAME, ENGINE - (defmacro is-nan-hack (flt) - `(and (< 0.0 ,flt) (< ,flt 0.0)) - ) + `(and (< 0.0 ,flt) (< ,flt 0.0))) (defmacro less-than-hack (a b) - `(if (is-nan-hack ,a) - #f - (< ,a ,b) - ) - ) + `(if (is-nan-hack ,a) #f (< ,a ,b))) ;; DECOMP BEGINS (defmethod process-taskable-method-52 ((this process-taskable)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 - (let ((a0-1 v1-1)) - (set! (-> a0-1 settings bot-plane w) (- -12288.0)) - ) + (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) - ) + 0)) + (none)) (defmethod init! ((this gui-query) (arg0 string) (arg1 int) (arg2 int) (arg3 int) (arg4 symbol) (arg5 string)) (set! (-> this x-position) arg1) @@ -48,8 +32,7 @@ (set! (-> this decision) 'undecided) (set! (-> this no-msg) arg5) 0 - (none) - ) + (none)) (defmethod get-response ((this gui-query)) (kill-current-level-hint '() '(sidekick voicebox stinger) 'exit) @@ -57,910 +40,584 @@ (hide-hud) (when (hud-hidden?) (when (-> this message) - (let ((a1-2 (new - 'stack - 'font-context - *font-default-matrix* - (-> this x-position) - (-> this y-position) - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-4 a1-2)) - (set! (-> v1-4 width) (the float (- 512 (-> this 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) - ) + (let ((a1-2 (new 'stack + 'font-context + *font-default-matrix* + (-> this x-position) + (-> this y-position) + 0.0 + (font-color default) + (font-flags shadow kerning)))) + (let ((v1-4 a1-2)) (set! (-> v1-4 width) (the float (- 512 (-> this 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 middle-vert large)) - (print-game-text (-> this message) a1-2 #f 128 22) - ) - ) + (print-game-text (-> this message) a1-2 #f 128 22))) ;; og:preserve-this PAL patch here (cond ((-> this only-allow-cancel) (when (-> this no-msg) (clear *temp-string*) (format *temp-string* "; = ~S" (-> this no-msg)) - (let ((a1-5 (new - 'stack - 'font-context - *font-default-matrix* - (-> this x-position) - (+ (-> this y-position) 5 (-> this message-space)) - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-15 a1-5)) - (set! (-> v1-15 width) (the float 400)) - ) - (let ((v1-16 a1-5)) - (set! (-> v1-16 height) (the float 100)) - ) + (let ((a1-5 (new 'stack + 'font-context + *font-default-matrix* + (-> this x-position) + (+ (-> this y-position) 5 (-> this message-space)) + 0.0 + (font-color default) + (font-flags shadow kerning)))) + (let ((v1-15 a1-5)) (set! (-> v1-15 width) (the float 400))) + (let ((v1-16 a1-5)) (set! (-> v1-16 height) (the float 100))) (set! (-> a1-5 flags) (font-flags shadow kerning large)) - (print-game-text *temp-string* a1-5 #f 128 22) - ) - ) - ) + (print-game-text *temp-string* a1-5 #f 128 22)))) (else - (let ((s5-0 (new - 'stack - 'font-context - *font-default-matrix* - (-> this x-position) - (+ (-> this y-position) 5 (-> this message-space)) - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-22 s5-0)) - (set! (-> v1-22 width) (the float 400)) - ) - (let ((v1-23 s5-0)) - (set! (-> v1-23 height) (the float 100)) - ) - (set! (-> s5-0 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id confirm) #f) s5-0 #f 128 22) - ) - ) - ) + (let ((s5-0 (new 'stack + 'font-context + *font-default-matrix* + (-> this x-position) + (+ (-> this y-position) 5 (-> this message-space)) + 0.0 + (font-color default) + (font-flags shadow kerning)))) + (let ((v1-22 s5-0)) (set! (-> v1-22 width) (the float 400))) + (let ((v1-23 s5-0)) (set! (-> v1-23 height) (the float 100))) + (set! (-> s5-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id confirm) #f) s5-0 #f 128 22)))) (cond - ((!= (-> this decision) 'undecided) - ) + ((!= (-> this decision) 'undecided)) ((and (cpad-pressed? 0 x) (not (-> this 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! (-> this decision) 'yes) - ) + (set! (-> this 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! (-> this decision) 'no) - ) - ) - ) - (-> this decision) - ) + (set! (-> this decision) 'no)))) + (-> this decision)) (defmethod relocate ((this process-taskable) (arg0 int)) - (the-as process-taskable ((method-of-type process-drawable relocate) this arg0)) - ) + (the-as process-taskable ((method-of-type process-drawable relocate) this arg0))) (defmethod process-taskable-method-46 ((this process-taskable)) (when (nonzero? (-> this sound-flava)) - (let ((s5-1 - (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (the-as vector (-> this root root-prim prim-core))) - ) - ) + (let ((s5-1 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (the-as vector (-> this root root-prim prim-core))))) (set! (-> s5-1 y) (* 4.0 (-> s5-1 y))) (cond ;; og:preserve-this s5-1 can be nan on the first frame after something spawns ((less-than-hack (vector-length s5-1) 102400.0) (when (not (-> this have-flava)) (set! (-> this have-flava) #t) - (set-setting! 'sound-flava #f 20.0 (-> this sound-flava)) - ) - ) - ((-> this have-flava) - (remove-setting! 'sound-flava) - (set! (-> this have-flava) #f) - ) - ) - ) - ) + (set-setting! 'sound-flava #f 20.0 (-> this sound-flava)))) + ((-> this have-flava) (remove-setting! 'sound-flava) (set! (-> this have-flava) #f))))) (when (-> this music) - (let ((s5-3 - (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (the-as vector (-> this root root-prim prim-core))) - ) - ) + (let ((s5-3 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (the-as vector (-> this root root-prim prim-core))))) (set! (-> s5-3 y) (* 4.0 (-> s5-3 y))) (cond ((< (vector-length s5-3) 102400.0) (when (not (-> this have-music)) (set! (-> this have-music) #t) - (set-setting! 'music (-> this music) 0.0 0) - ) - ) - ((-> this have-music) - (remove-setting! 'music) - (set! (-> this have-music) #f) - ) - ) - ) - ) + (set-setting! 'music (-> this music) 0.0 0))) + ((-> this have-music) (remove-setting! 'music) (set! (-> this have-music) #f))))) 0 - (none) - ) + (none)) (defmethod get-art-elem ((this process-taskable)) - (the-as art-element (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - ) - ) + (the-as art-element (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)))) (defmethod play-anim! ((this process-taskable) (arg0 symbol)) - (the-as basic #f) - ) + (the-as basic #f)) (defmethod process-taskable-method-33 ((this process-taskable)) (let ((s5-0 (play-anim! this #f))) - (if (type-type? (-> s5-0 type) spool-anim) - (spool-push *art-control* (-> (the-as spool-anim s5-0) name) 0 this -99.0) - ) - ) + (if (type-type? (-> s5-0 type) spool-anim) (spool-push *art-control* (-> (the-as spool-anim s5-0) name) 0 this -99.0))) 0 - (none) - ) + (none)) (defmethod close-anim-file! ((this process-taskable)) (let* ((gp-0 (play-anim! this #f)) - (v1-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) spool-anim)) - gp-0 - ) - ) - ) - (if v1-2 - (file-status *art-control* (-> (the-as spool-anim v1-2) name) 0) - ) - ) - ) + (v1-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) spool-anim)) gp-0))) + (if v1-2 (file-status *art-control* (-> (the-as spool-anim v1-2) name) 0)))) (defmethod get-accept-anim ((this process-taskable) (arg0 symbol)) - (the-as spool-anim #f) - ) + (the-as spool-anim #f)) (defmethod push-accept-anim ((this process-taskable)) (let ((s5-0 (get-accept-anim this #f))) - (if (type-type? (-> s5-0 type) spool-anim) - (spool-push *art-control* (-> s5-0 name) 0 this -99.0) - ) - ) + (if (type-type? (-> s5-0 type) spool-anim) (spool-push *art-control* (-> s5-0 name) 0 this -99.0))) 0 - (none) - ) + (none)) (defmethod get-reject-anim ((this process-taskable) (arg0 symbol)) - (the-as spool-anim #f) - ) + (the-as spool-anim #f)) (defmethod push-reject-anim ((this process-taskable)) (let ((s5-0 (get-reject-anim this #f))) - (if (type-type? (-> s5-0 type) spool-anim) - (spool-push *art-control* (-> s5-0 name) 0 this -99.0) - ) - ) + (if (type-type? (-> s5-0 type) spool-anim) (spool-push *art-control* (-> s5-0 name) 0 this -99.0))) 0 - (none) - ) + (none)) (defmethod process-taskable-method-38 ((this process-taskable)) - (if (nonzero? (-> this cell-for-task)) - (go (method-of-object this give-cell)) - ) + (if (nonzero? (-> this cell-for-task)) (go (method-of-object this give-cell))) (go (method-of-object this release)) - (none) - ) + (none)) (defbehavior process-taskable-anim-loop process-taskable () (when (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (get-art-elem self)) - ) + (ja :group! (get-art-elem self))) (loop (suspend) (ja :num! (loop!)) - (if (= (-> self next-state name) 'idle) - (process-taskable-method-43 self) - ) - ) + (if (= (-> self next-state name) 'idle) (process-taskable-method-43 self))) (the-as none 0) - (none) - ) + (none)) (defstate release (process-taskable) :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) - ) - ) - (process-taskable-method-33 self) - ((-> self cur-trans-hook)) - ) + :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))) + (process-taskable-method-33 self) + ((-> self cur-trans-hook))) :code process-taskable-anim-loop - :post ja-post - ) + :post ja-post) (defstate give-cell (process-taskable) :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) - ) - ) - (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) - (process-taskable-method-33 self) - ((-> self cur-trans-hook)) - ) + :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))) + (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) + (process-taskable-method-33 self) + ((-> self cur-trans-hook))) :code process-taskable-anim-loop - :post ja-post - ) + :post ja-post) (defstate lose (process-taskable) :virtual #t - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (and (time-elapsed? (-> self state-time) (seconds 5)) - (or (not *target*) (< 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - ) - (go-virtual idle) - ) - ((-> self cur-trans-hook)) - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (and (time-elapsed? (-> self state-time) (seconds 5)) + (or (not *target*) (< 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))))) + (go-virtual idle)) + ((-> self cur-trans-hook))) :code process-taskable-anim-loop - :post ja-post - ) + :post ja-post) (defstate enter-playing (process-taskable) :virtual #t :code process-taskable-anim-loop - :post ja-post - ) + :post ja-post) (defbehavior process-taskable-play-anim-enter process-taskable () (init! (-> self query) (the-as string #f) 40 150 25 #t (the-as string #f)) (logior! (-> self skel status) (janim-status blerc)) - (set! (-> self camera) - (ppointer->handle (process-spawn othercam self (-> self cam-joint-index) #f #t :to self)) - ) + (set! (-> self camera) (ppointer->handle (process-spawn othercam self (-> self cam-joint-index) #f #t :to self))) (set! (-> self cell-for-task) (game-task none)) (set! (-> self skippable) #f) (set! (-> self blend-on-exit) #f) (set! (-> self will-talk) #f) - #f - ) + #f) (defbehavior process-taskable-play-anim-exit process-taskable () (logclear! (-> self skel status) (janim-status blerc)) - (let ((a0-4 (handle->process (-> self camera)))) - (if a0-4 - (deactivate a0-4) - ) - ) + (let ((a0-4 (handle->process (-> self camera)))) (if a0-4 (deactivate a0-4))) (set! (-> self last-talk) (-> *display* game-frame-counter)) (process-taskable-method-52 self) - (none) - ) + (none)) (defbehavior process-taskable-play-anim-trans process-taskable () - (if (nonzero? *camera-look-through-other*) - (set! *camera-look-through-other* 2) - ) + (if (nonzero? *camera-look-through-other*) (set! *camera-look-through-other* 2)) (set-letterbox-frames (seconds 0.017)) (draw-npc-shadow self) - (none) - ) + (none)) (defbehavior process-taskable-play-anim-code process-taskable ((arg0 art-joint-anim) (arg1 basic)) (when (nonzero? (-> self cell-for-task)) (if (name= (-> self state name) "play-anim") - (set! (-> self cell-x) (ppointer->handle (process-spawn - fuel-cell - :init fuel-cell-init-as-clone - (process->handle self) - (-> self cell-for-task) - :to self - ) - ) - ) - (format #t "ERROR: ~S ~S trying to give cell on release~%" (-> self name) (-> self state name)) - ) - ) + (set! (-> self cell-x) + (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) (-> self cell-for-task) :to self))) + (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 (not (send-event *target* 'clone-anim self)) (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) - ) + (suspend)) (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - ) + (send-event *target* 'blend-shape #t)) (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) (add-setting! 'ambient-volume 'rel (-> *setting-control* current ambient-volume-movie) 0) - (if (-> self blend-on-exit) - (set! (-> self blend-on-exit) arg0) - ) + (if (-> self blend-on-exit) (set! (-> self blend-on-exit) arg0)) ;; og:preserve-this allow cutscene skipping on pc port ;; save a sort of timestamp just so we know if it took at least 1 frame (#when PC_PORT - (define *play-anim-time* (current-time))) - (if (#if PC_PORT - (= (-> *pc-settings* skip-movies?) #t) - (and *debug-segment* *cheat-mode*)) - (ja-play-spooled-anim - (the-as spool-anim arg1) - arg0 - (-> self blend-on-exit) - (lambda ((arg0 process-taskable)) (= (get-response (-> arg0 query)) 'no)) - ) - (ja-play-spooled-anim - (the-as spool-anim arg1) - arg0 - (-> self blend-on-exit) - (the-as (function process-drawable symbol) false-func) - ) - ) + (define *play-anim-time* (current-time))) + (if (#if PC_PORT (= (-> *pc-settings* skip-movies?) #t) (and *debug-segment* *cheat-mode*)) + (ja-play-spooled-anim (the-as spool-anim arg1) + arg0 + (-> self blend-on-exit) + (lambda ((arg0 process-taskable)) + (= (get-response (-> arg0 query)) 'no))) + (ja-play-spooled-anim (the-as spool-anim arg1) + arg0 + (-> self blend-on-exit) + (the-as (function process-drawable symbol) false-func))) ;; og:preserve-this (#when PC_PORT - (if (= (current-time) *play-anim-time*) (suspend))) + (if (= (current-time) *play-anim-time*) (suspend))) (remove-setting! 'music-volume) (remove-setting! 'sfx-volume) (remove-setting! 'ambient-volume) - (send-event *target* 'blend-shape #f) - ) + (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 (ja-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 (ja-group)) - ) - (format #t "~S ~S anim ~S~%" (-> self name) (-> self state name) (-> (the-as art-joint-anim arg1) name)) - (ja-channel-push! 1 (seconds 0.2)) - (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim arg1)) - (when (< (ja-num-frames 0) 3) - (suspend) - (suspend) - 0 - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (and *debug-segment* (= (get-response (-> self query)) 'no)) - (ja :num-func num-func-identity :frame-num max) - ) - (suspend) - (ja :num! (seek!)) - ) - #f - ) - ) - ) + (when (not arg1) + (format #t "ERROR: ~S ~S got #f from anim picker~%" (-> self name) (-> self state name)) + (set! arg1 (ja-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 (ja-group))) + (format #t "~S ~S anim ~S~%" (-> self name) (-> self state name) (-> (the-as art-joint-anim arg1) name)) + (ja-channel-push! 1 (seconds 0.2)) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim arg1)) + (when (< (ja-num-frames 0) 3) + (suspend) + (suspend) + 0) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (and *debug-segment* (= (get-response (-> self query)) 'no)) (ja :num-func num-func-identity :frame-num max)) + (suspend) + (ja :num! (seek!))) + #f))) (defstate play-accept (process-taskable) :virtual #t :enter process-taskable-play-anim-enter :exit process-taskable-play-anim-exit - :trans (behavior () - (process-taskable-play-anim-trans) - ((-> self cur-trans-hook)) - ) - :code (behavior () - (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) - ) - :post ja-post - ) + :trans + (behavior () + (process-taskable-play-anim-trans) + ((-> self cur-trans-hook))) + :code + (behavior () + (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)) + :post ja-post) (defstate play-reject (process-taskable) :virtual #t :enter process-taskable-play-anim-enter :exit process-taskable-play-anim-exit - :trans (behavior () - (process-taskable-play-anim-trans) - ((-> self cur-trans-hook)) - ) - :code (behavior () - (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (get-reject-anim self #t)) - (go-virtual release) - ) - :post ja-post - ) + :trans + (behavior () + (process-taskable-play-anim-trans) + ((-> self cur-trans-hook))) + :code + (behavior () + (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (get-reject-anim self #t)) + (go-virtual release)) + :post ja-post) (defstate query (process-taskable) :virtual #t - :enter (behavior () - (init! - (-> self query) - (lookup-text! *common-text* (text-id confirm-play) #f) - 40 - 150 - 25 - #f - (lookup-text! *common-text* (text-id quit) #f) - ) - ) + :enter + (behavior () + (init! (-> self query) + (lookup-text! *common-text* (text-id confirm-play) #f) + 40 + 150 + 25 + #f + (lookup-text! *common-text* (text-id quit) #f))) :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) - ) - (('no) - (go-virtual play-reject) - ) - ) - (push-accept-anim self) - ) - (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) - ) - ) - ) - ) - ) - (push-reject-anim self) - (set! *camera-look-through-other* 2) - ((-> self cur-trans-hook)) - ) + :trans + (behavior () + (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))) + (push-accept-anim self)) + (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)))))) + (push-reject-anim self) + (set! *camera-look-through-other* 2) + ((-> self cur-trans-hook))) :code process-taskable-anim-loop - :post ja-post - ) + :post ja-post) (defstate play-anim (process-taskable) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('shadow) - (cond - ((-> block 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 - ) - ) - ) - (('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 (-> block param 0)))) - ) - 0 - (set! (-> v1-5 settings top-plane w) (- (the-as float (-> block param 1)))) - ) - 0 - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('shadow) + (cond + ((-> block 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))) + (('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 (-> block param 0))))) + 0 + (set! (-> v1-5 settings top-plane w) (- (the-as float (-> block param 1))))) + 0))) :enter 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) - ) - ) - ((-> self cur-trans-hook)) - ) - :code (behavior () - (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (play-anim! self #t)) - (process-taskable-method-38 self) - ) - :post ja-post - ) + :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))) + ((-> self cur-trans-hook))) + :code + (behavior () + (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (play-anim! self #t)) + (process-taskable-method-38 self)) + :post ja-post) (defbehavior process-taskable-clean-up-after-talking process-taskable () (logclear! (-> self draw status) (draw-status hidden)) (logclear! (-> self skel status) (janim-status inited)) (remove-setting! 'border-mode) (remove-setting! 'talking) - (none) - ) + (none)) (defmethod should-display? ((this process-taskable)) - #t - ) + #t) (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) - ) - (('hidden-other) - (go-virtual hidden-other) - ) - ) - ) + (('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)) + (('hidden-other) (go-virtual hidden-other)))) (defbehavior process-taskable-hide-enter process-taskable () (set-time! (-> self state-time)) - (let ((v1-3 (-> self draw shadow-ctrl))) - (logior! (-> v1-3 settings flags) (shadow-flags disable-draw)) - ) + (let ((v1-3 (-> self draw shadow-ctrl))) (logior! (-> v1-3 settings flags) (shadow-flags disable-draw))) 0 (process-taskable-clean-up-after-talking) (clear-collide-with-as (-> self root)) (ja-channel-set! 0) - (the-as int (ja-post)) - ) + (the-as int (ja-post))) (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) - (ja :group! (get-art-elem self)) - (restore-collide-with-as (-> self root)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (let ((v1-7 (-> self draw shadow-ctrl))) - (logclear! (-> v1-7 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (ja-channel-set! 1) + (ja :group! (get-art-elem self)) + (restore-collide-with-as (-> self root)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (let ((v1-7 (-> self draw shadow-ctrl))) (logclear! (-> v1-7 settings flags) (shadow-flags disable-draw))) + 0)) + (none)) (defstate hidden (process-taskable) :virtual #t :event process-taskable-hide-handler :enter process-taskable-hide-enter - :exit (behavior () - (process-taskable-hide-exit (= (-> self next-state name) 'hidden)) - ) - :trans (behavior () - (if (time-elapsed? (-> self state-time) (seconds 1)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (if (or (-> self been-kicked) (should-display? self)) - (go-virtual idle) - ) - ) - :code anim-loop - ) + :exit + (behavior () + (process-taskable-hide-exit (= (-> self next-state name) 'hidden))) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (seconds 1)) (process-entity-status! self (entity-perm-status bit-3) #f)) + (if (or (-> self been-kicked) (should-display? self)) (go-virtual idle))) + :code anim-loop) ;; 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 process-taskable-method-50 ((this process-taskable)) (if *target* - (or (not *target*) (< 245760.0 (vector-vector-distance (-> this root trans) (-> *target* control trans)))) - (< 60397978000.0 - (vector-vector-distance-squared (the-as vector (-> this root root-prim prim-core)) (camera-pos)) - ) - ) - ) + (or (not *target*) (< 245760.0 (vector-vector-distance (-> this root trans) (-> *target* control trans)))) + (< 60397978000.0 (vector-vector-distance-squared (the-as vector (-> this root root-prim prim-core)) (camera-pos))))) (defstate hidden-other (process-taskable) :virtual #t :event process-taskable-hide-handler :enter process-taskable-hide-enter - :exit (behavior () - (process-taskable-hide-exit (= (-> self next-state name) 'hidden-other)) - ) - :trans (behavior () - (if (time-elapsed? (-> self state-time) (seconds 1)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (cond - ((-> self been-kicked) - (go-virtual idle) - ) - ((process-taskable-method-50 self) - (if (should-display? self) - (go-virtual idle) - (go-virtual hidden) - ) - ) - ) - ) - :code anim-loop - ) + :exit + (behavior () + (process-taskable-hide-exit (= (-> self next-state name) 'hidden-other))) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (seconds 1)) (process-entity-status! self (entity-perm-status bit-3) #f)) + (cond + ((-> self been-kicked) (go-virtual idle)) + ((process-taskable-method-50 self) (if (should-display? self) (go-virtual idle) (go-virtual hidden))))) + :code anim-loop) (defstate be-clone (process-taskable) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (the-as shadow-geo (case message - (('shadow) - (the-as shadow-geo (cond - ((-> block 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) - ) - ) - ) - ) - (('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 (-> block param 0)))) - ) - 0 - (set! (-> v1-5 settings top-plane w) (- (the-as float (-> block param 1)))) - ) - (the-as shadow-geo 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) (janim-status blerc)) - (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)) - ) - :exit (behavior () - (logclear! (-> self skel status) (janim-status blerc spool)) - (logior! (-> self mask) (process-mask actor-pause)) - (let ((v1-6 (-> self entity extra trans))) - (if v1-6 - (set! (-> self root trans quad) (-> v1-6 quad)) - ) - ) - (ja-channel-set! 0) - ) - :trans (behavior () - (draw-npc-shadow self) - ((-> self cur-trans-hook)) - ) - :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) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (the-as shadow-geo + (case message + (('shadow) + (the-as shadow-geo + (cond + ((-> block 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))))) + (('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 (-> block param 0))))) + 0 + (set! (-> v1-5 settings top-plane w) (- (the-as float (-> block param 1))))) + (the-as shadow-geo 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) (janim-status blerc)) + (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))) + :exit + (behavior () + (logclear! (-> self skel status) (janim-status blerc spool)) + (logior! (-> self mask) (process-mask actor-pause)) + (let ((v1-6 (-> self entity extra trans))) (if v1-6 (set! (-> self root trans quad) (-> v1-6 quad)))) + (ja-channel-set! 0)) + :trans + (behavior () + (draw-npc-shadow self) + ((-> self cur-trans-hook))) + :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))) (defmethod target-above-threshold? ((this process-taskable)) - #t - ) + #t) (defstate idle (process-taskable) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (the-as - symbol - (case message - (('attack) - (the-as - symbol - (if (-> self bounce-away) - (the-as - symbol - (send-event proc 'shove #f (static-attack-info ((shove-back (meters 3)) (shove-up (meters 1))))) - ) - ) - ) - ) - (('touch) - (the-as - symbol - (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0) - ) - ) - (('clone) - (the-as symbol (go-virtual be-clone (the-as handle (-> block param 0)))) - ) - (('play-anim) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (the-as symbol + (case message + (('attack) + (the-as symbol + (if (-> self bounce-away) + (the-as symbol (send-event proc 'shove #f (static-attack-info ((shove-back (meters 3)) (shove-up (meters 1))))))))) + (('touch) + (the-as symbol + (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0))) + (('clone) (the-as symbol (go-virtual be-clone (the-as handle (-> block param 0))))) + (('play-anim) + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((v0-0 #t)) (set! (-> self been-kicked) v0-0) v0-0)) + (('hidden-other) (the-as symbol (go-virtual hidden-other)))))) + :enter + (behavior () + (set-time! (-> self state-time)) + (process-taskable-clean-up-after-talking)) + :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) (janim-status inited)) (logclear! (-> self mask) (process-mask actor-pause)) - (let ((v0-0 #t)) - (set! (-> self been-kicked) v0-0) - v0-0 - ) - ) - (('hidden-other) - (the-as symbol (go-virtual hidden-other)) - ) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (process-taskable-clean-up-after-talking) - ) - :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) (janim-status inited)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (set-setting! 'border-mode #f 0.0 0) - (set-setting! 'talking (process->ppointer self) 0.0 0) - (apply-settings *setting-control*) - ) - ) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 0.2)) - (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) (-> self last-talk)) (seconds 10)) - (set! (-> self will-talk) #t) - ) - ) - ((begin - (process-taskable-method-46 self) - (and (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - (< (-> (target-pos 0) y) (+ 8192.0 (-> self root root-prim prim-core world-sphere y))) - ;; og:preserve-this - (less-than-hack (vector-vector-distance (target-pos 0) (the-as vector (-> self root 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 middle-vert large)) - (print-game-text (lookup-text! *common-text* (-> 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)) - (process-taskable-method-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) - ) - ((-> self cur-trans-hook)) - ) + (process-entity-status! self (entity-perm-status bit-3) #t) + (set-setting! 'border-mode #f 0.0 0) + (set-setting! 'talking (process->ppointer self) 0.0 0) + (apply-settings *setting-control*)))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 0.2)) + (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) (-> self last-talk)) (seconds 10)) (set! (-> self will-talk) #t))) + ((begin + (process-taskable-method-46 self) + (and (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))))) + (< (-> (target-pos 0) y) (+ 8192.0 (-> self root root-prim prim-core world-sphere y))) + ;; og:preserve-this + (less-than-hack (vector-vector-distance (target-pos 0) (the-as vector (-> self root 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 middle-vert large)) + (print-game-text (lookup-text! *common-text* (-> 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)) (process-taskable-method-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)) + ((-> self cur-trans-hook))) :code process-taskable-anim-loop - :post (behavior () + :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) - ) - ) - ) - ) - (transform-post) - ) - ) + (if *target* (look-at-enemy! (-> *target* neck) gp-0 'nothing self))))) + (transform-post))) (defmethod initialize-collision ((this process-taskable) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -971,15 +628,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) arg0) (set-vector! (-> s4-0 local-sphere) (-> arg1 x) (-> arg1 y) (-> arg1 z) (-> arg1 w)) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod process-taskable-method-40 ((this process-taskable) (arg0 object) (arg1 skeleton-group) (arg2 int) (arg3 int) (arg4 vector) (arg5 int)) (stack-size-set! (-> this main-thread) 512) @@ -1016,221 +670,142 @@ (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0)) (process-taskable-method-52 this) 0 - (none) - ) + (none)) (defmethod process-taskable-method-42 ((this process-taskable)) (cond - ((not (should-display? this)) - (go (method-of-object this hidden)) - ) - ((= (current-status (-> this tasks)) (task-status need-resolution)) - (go (method-of-object this give-cell)) - ) - (else - (go (method-of-object this idle)) - ) - ) - (none) - ) + ((not (should-display? this)) (go (method-of-object this hidden))) + ((= (current-status (-> this tasks)) (task-status need-resolution)) (go (method-of-object this give-cell))) + (else (go (method-of-object this idle)))) + (none)) (defmethod process-taskable-method-43 ((this process-taskable)) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod ambient-control-method-9 ((this ambient-control)) (set! (-> this last-ambient-time) (-> *display* game-frame-counter)) 0 - (none) - ) + (none)) (defmethod ambient-control-method-10 ((this ambient-control) (arg0 vector) (arg1 time-frame) (arg2 float) (arg3 process-drawable)) (when (< (- (-> *display* game-frame-counter) (-> this last-ambient-time)) arg1) (set! arg0 (the-as vector #f)) - (goto cfg-6) - ) + (goto cfg-6)) (vector-for-ambient arg3 arg0) (when (< arg2 (vector-length arg0)) (set! arg0 (the-as vector #f)) - (goto cfg-6) - ) + (goto cfg-6)) (label cfg-6) - arg0 - ) + arg0) (defmethod play-ambient ((this ambient-control) (arg0 string) (arg1 symbol) (arg2 vector)) (when (and (not (string= arg0 (-> this last-ambient))) (or arg1 (can-hint-be-played? (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) - ) + (ambient-hint-spawn arg0 arg2 *entity-pool* 'ambient)) (set! (-> this last-ambient-time) (-> *display* game-frame-counter)) (set! (-> this last-ambient) arg0) - (return #t) - ) - #f - ) + (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)) - ) - arg1 - ) + (if *target* (vector-! arg1 (target-pos 0) (-> arg0 root trans)) (vector-! arg1 (camera-pos) (-> arg0 root trans))) + arg1) (defun othercam-calc ((arg0 float)) (set! (-> *camera-other-fov* data) (* 2.0 (atan (/ 14.941477 (* 20.3 arg0)) 1.0))) - (none) - ) + (none)) (defstate othercam-running (othercam) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('die) - (set! v0-0 #t) - (set! (-> self die?) (the-as symbol v0-0)) - v0-0 - ) - (('joint) - (let ((t9-0 type-type?) - (v1-1 (-> block param 0)) - ) - (cond - ((t9-0 (rtype-of v1-1) string) - (let ((v1-8 (lookup-art - (-> (the-as process-taskable (-> self hand process 0)) draw jgeo) - (the-as string (-> block 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 - ) - ) - ) - ((not (logtest? (-> block param 0) 7)) - (set! v0-0 (-> block param 0)) - (set! (-> self cam-joint-index) (the-as int v0-0)) - v0-0 - ) - ) - ) - ) - (('mask) - (set! v0-0 (-> block param 0)) - (set! (-> self mask-to-clear) (the-as process-mask v0-0)) - v0-0 - ) - ) - ) - :enter (behavior () - (hide-hud-quick) - (case (-> self spooling?) - (('logo) - ) - (else - (add-setting! 'process-mask 'set 0.0 (-> self mask-to-clear)) - (add-setting! 'movie (process->ppointer self) 0.0 0) - (if (not (-> self border-value)) - (add-setting! 'border-mode (-> self border-value) 0.0 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) - ) - ) - (apply-settings *setting-control*) - ) - :exit (behavior () - (remove-setting! 'process-mask) - (apply-settings *setting-control*) - ) - :code (behavior () - (loop - (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 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) (janim-status spool)) - ) - ) - ) - (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) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('die) (set! v0-0 #t) (set! (-> self die?) (the-as symbol v0-0)) v0-0) + (('joint) + (let ((t9-0 type-type?) + (v1-1 (-> block param 0))) + (cond + ((t9-0 (rtype-of v1-1) string) + (let ((v1-8 (lookup-art (-> (the-as process-taskable (-> self hand process 0)) draw jgeo) + (the-as string (-> block 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))) + ((not (logtest? (-> block param 0) 7)) + (set! v0-0 (-> block param 0)) + (set! (-> self cam-joint-index) (the-as int v0-0)) + v0-0)))) + (('mask) (set! v0-0 (-> block param 0)) (set! (-> self mask-to-clear) (the-as process-mask v0-0)) v0-0))) + :enter + (behavior () + (hide-hud-quick) + (case (-> self spooling?) + (('logo)) + (else + (add-setting! 'process-mask 'set 0.0 (-> self mask-to-clear)) + (add-setting! 'movie (process->ppointer self) 0.0 0) + (if (not (-> self border-value)) (add-setting! 'border-mode (-> self border-value) 0.0 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))) + (apply-settings *setting-control*)) + :exit + (behavior () + (remove-setting! 'process-mask) + (apply-settings *setting-control*)) + :code + (behavior () + (loop + (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 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) (janim-status spool))))) + (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)) - ) - (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 (current-time))) - (while (and (not (time-elapsed? gp-1 (seconds 60))) - (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) - ) - ) - ) - ) - ) + (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 (current-time))) + (while (and (not (time-elapsed? gp-1 (seconds 60))) + (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)))))) (defbehavior othercam-init-by-other othercam ((arg0 process-taskable) (arg1 symbol) (arg2 symbol) (arg3 symbol)) (set! (-> self spooling?) arg3) (case (-> self spooling?) - (('logo) - ) - (else - (set! (-> *game-info* other-camera-handle) (process->handle self)) - ) - ) + (('logo)) + (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)) @@ -1241,26 +816,13 @@ (set! (-> self event-hook) (-> othercam-running event)) (go othercam-running) 0 - (none) - ) + (none)) (defmethod draw-npc-shadow ((this process-taskable)) (let ((gp-0 (-> this draw shadow-ctrl))) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) (collide-to-find-planes gp-0 (-> this draw origin) -4096.0 4096.0 32768.0) - (update-direction-from-time-of-day gp-0) - ) - (else - (let ((v1-10 gp-0)) - (logior! (-> v1-10 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) - (none) - ) + (update-direction-from-time-of-day gp-0)) + (else (let ((v1-10 gp-0)) (logior! (-> v1-10 settings flags) (shadow-flags disable-draw))) 0))) + (none)) diff --git a/goal_src/jak1/engine/common-obs/rigid-body-h.gc b/goal_src/jak1/engine/common-obs/rigid-body-h.gc index fdd0bb60e3..113846f1e5 100644 --- a/goal_src/jak1/engine/common-obs/rigid-body-h.gc +++ b/goal_src/jak1/engine/common-obs/rigid-body-h.gc @@ -1,58 +1,47 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "kernel-defs.gc") -;; name: rigid-body-h.gc -;; name in dgo: rigid-body-h -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (deftype rigid-body (structure) - ((mass float) - (inv-mass float) - (lin-momentum-damping-factor float) - (ang-momentum-damping-factor float) - (inertial-tensor matrix :inline) - (inv-inertial-tensor matrix :inline) - (cm-offset-joint vector :inline) - (position vector :inline) - (rotation quaternion :inline) - (lin-momentum vector :inline) - (ang-momentum vector :inline) - (lin-velocity vector :inline) - (ang-velocity vector :inline) - (inv-i-world matrix :inline) - (matrix matrix :inline) - (force vector :inline) - (torque vector :inline) - (max-ang-momentum float) - (max-ang-velocity float) - ) + ((mass float) + (inv-mass float) + (lin-momentum-damping-factor float) + (ang-momentum-damping-factor float) + (inertial-tensor matrix :inline) + (inv-inertial-tensor matrix :inline) + (cm-offset-joint vector :inline) + (position vector :inline) + (rotation quaternion :inline) + (lin-momentum vector :inline) + (ang-momentum vector :inline) + (lin-velocity vector :inline) + (ang-velocity vector :inline) + (inv-i-world matrix :inline) + (matrix matrix :inline) + (force vector :inline) + (torque vector :inline) + (max-ang-momentum float) + (max-ang-velocity float)) (:methods - (rigid-body-method-9 (_type_ float float float float) none) - (rigid-body-method-10 (_type_ float) none) - (clear-force-torque! (_type_) none) - (clear-momentum! (_type_) none) - (rigid-body-method-13 (_type_ vector vector) none) - (rigid-body-method-14 (_type_ vector vector) none) - (rigid-body-method-15 (_type_ vector) none) - (rigid-body-method-16 (_type_ vector vector float) none) - (rigid-body-method-17 (_type_ vector vector) vector) - (rigid-body-method-18 (_type_ vector) vector) - (print-stats (_type_) none) - (rigid-body-method-20 (_type_) none) - (rigid-body-method-21 (_type_) none) - (rigid-body-method-22 (_type_ vector quaternion float float) none) - ) - ) - + (rigid-body-method-9 (_type_ float float float float) none) + (rigid-body-method-10 (_type_ float) none) + (clear-force-torque! (_type_) none) + (clear-momentum! (_type_) none) + (rigid-body-method-13 (_type_ vector vector) none) + (rigid-body-method-14 (_type_ vector vector) none) + (rigid-body-method-15 (_type_ vector) none) + (rigid-body-method-16 (_type_ vector vector float) none) + (rigid-body-method-17 (_type_ vector vector) vector) + (rigid-body-method-18 (_type_ vector) vector) + (print-stats (_type_) none) + (rigid-body-method-20 (_type_) none) + (rigid-body-method-21 (_type_) none) + (rigid-body-method-22 (_type_ vector quaternion float float) none))) (deftype rigid-body-control-point (structure) - ((local-pos vector :inline) - (world-pos vector :inline) - (velocity vector :inline) - ) - ) + ((local-pos vector :inline) + (world-pos vector :inline) + (velocity vector :inline))) diff --git a/goal_src/jak1/engine/common-obs/rigid-body.gc b/goal_src/jak1/engine/common-obs/rigid-body.gc index e12ad5cca3..97e0d39cff 100644 --- a/goal_src/jak1/engine/common-obs/rigid-body.gc +++ b/goal_src/jak1/engine/common-obs/rigid-body.gc @@ -1,14 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/common-obs/water-anim.gc") (require "engine/common-obs/rigid-body-h.gc") -;; name: rigid-body.gc -;; name in dgo: rigid-body -;; dgos: GAME, COMMON, L1 ;; note: changed for high fps ;; DECOMP BEGINS @@ -17,22 +13,19 @@ (set! (-> this force quad) (-> *null-vector* quad)) (set! (-> this torque quad) (-> *null-vector* quad)) 0 - (none) - ) + (none)) (defmethod clear-momentum! ((this rigid-body)) (set! (-> this lin-momentum quad) (-> *null-vector* quad)) (set! (-> this ang-momentum quad) (-> *null-vector* quad)) 0 - (none) - ) + (none)) (defmethod rigid-body-method-21 ((this rigid-body)) (quaternion->matrix (-> this matrix) (-> this rotation)) (rigid-body-method-18 this (-> this matrix vector 3)) 0 - (none) - ) + (none)) (defmethod rigid-body-method-22 ((this rigid-body) (arg0 vector) (arg1 quaternion) (arg2 float) (arg3 float)) (clear-force-torque! this) @@ -52,78 +45,48 @@ (set! (-> this max-ang-velocity) 0.0) (set! (-> this max-ang-momentum) 0.0) 0 - (none) - ) + (none)) (defmethod rigid-body-method-9 ((this rigid-body) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) (set! (-> this mass) arg0) - (let ((f0-1 arg0)) - (set! (-> this inv-mass) (/ 1.0 f0-1)) - ) + (let ((f0-1 arg0)) (set! (-> this inv-mass) (/ 1.0 f0-1))) (matrix-identity! (-> this inertial-tensor)) (matrix-identity! (-> this inv-inertial-tensor)) (let* ((f0-4 arg0) (f1-1 12.0) - (f0-5 (* f0-4 (/ 1.0 f1-1))) - ) + (f0-5 (* f0-4 (/ 1.0 f1-1)))) (let* ((f1-4 arg2) (f1-6 (* f1-4 f1-4)) - (f2-1 arg3) - ) - (set! (-> this inertial-tensor vector 0 x) (* f0-5 (+ f1-6 (* f2-1 f2-1)))) - ) + (f2-1 arg3)) + (set! (-> this inertial-tensor vector 0 x) (* f0-5 (+ f1-6 (* f2-1 f2-1))))) (let* ((f1-9 arg1) (f1-11 (* f1-9 f1-9)) - (f2-4 arg3) - ) - (set! (-> this inertial-tensor vector 1 y) (* f0-5 (+ f1-11 (* f2-4 f2-4)))) - ) + (f2-4 arg3)) + (set! (-> this inertial-tensor vector 1 y) (* f0-5 (+ f1-11 (* f2-4 f2-4))))) (let* ((f1-14 arg1) (f1-16 (* f1-14 f1-14)) - (f2-7 arg2) - ) - (set! (-> this inertial-tensor vector 2 z) (* f0-5 (+ f1-16 (* f2-7 f2-7)))) - ) - ) - (let ((f0-7 (-> this inertial-tensor vector 0 x))) - (set! (-> this inv-inertial-tensor vector 0 x) (/ 1.0 f0-7)) - ) - (let ((f0-10 (-> this inertial-tensor vector 1 y))) - (set! (-> this inv-inertial-tensor vector 1 y) (/ 1.0 f0-10)) - ) - (let ((f0-13 (-> this inertial-tensor vector 2 z))) - (set! (-> this inv-inertial-tensor vector 2 z) (/ 1.0 f0-13)) - ) + (f2-7 arg2)) + (set! (-> this inertial-tensor vector 2 z) (* f0-5 (+ f1-16 (* f2-7 f2-7)))))) + (let ((f0-7 (-> this inertial-tensor vector 0 x))) (set! (-> this inv-inertial-tensor vector 0 x) (/ 1.0 f0-7))) + (let ((f0-10 (-> this inertial-tensor vector 1 y))) (set! (-> this inv-inertial-tensor vector 1 y) (/ 1.0 f0-10))) + (let ((f0-13 (-> this inertial-tensor vector 2 z))) (set! (-> this inv-inertial-tensor vector 2 z) (/ 1.0 f0-13))) 0 - (none) - ) + (none)) (defmethod rigid-body-method-17 ((this rigid-body) (arg0 vector) (arg1 vector)) (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> this position)))) - (vector-cross! arg1 (-> this ang-velocity) v1-1) - ) + (vector-cross! arg1 (-> this ang-velocity) v1-1)) (vector+! arg1 arg1 (-> this lin-velocity)) - arg1 - ) + arg1) (defun matrix-3x3-triple-transpose-product ((arg0 matrix) (arg1 matrix) (arg2 matrix)) (let ((s2-0 (new 'stack-no-clear 'matrix)) - (s3-0 (new 'stack-no-clear 'matrix)) - ) + (s3-0 (new 'stack-no-clear 'matrix))) (matrix-transpose! s2-0 arg1) (cond - (#t - (matrix*! s3-0 arg1 arg2) - (matrix*! arg0 s3-0 s2-0) - ) - (else - (matrix*! s3-0 s2-0 arg2) - (matrix*! arg0 s3-0 arg1) - ) - ) - ) - arg0 - ) + (#t (matrix*! s3-0 arg1 arg2) (matrix*! arg0 s3-0 s2-0)) + (else (matrix*! s3-0 s2-0 arg2) (matrix*! arg0 s3-0 arg1)))) + arg0) (defmethod rigid-body-method-10 ((this rigid-body) (arg0 float)) (vector+*! (-> this lin-momentum) (-> this lin-momentum) (-> this force) arg0) @@ -143,276 +106,206 @@ (+! (-> this rotation x) (* (-> s4-0 x) arg0)) (+! (-> this rotation y) (* (-> s4-0 y) arg0)) (+! (-> this rotation z) (* (-> s4-0 z) arg0)) - (+! (-> this rotation w) (* (-> s4-0 w) arg0)) - ) + (+! (-> this rotation w) (* (-> s4-0 w) arg0))) (quaternion-normalize! (-> this rotation)) (quaternion->matrix (-> this matrix) (-> this rotation)) (rigid-body-method-18 this (-> this matrix vector 3)) 0 - (none) - ) + (none)) (defmethod rigid-body-method-13 ((this rigid-body) (arg0 vector) (arg1 vector)) (vector+! (-> this force) (-> this force) arg1) (let* ((v1-2 (vector-! (new 'stack-no-clear 'vector) arg0 (-> this position))) - (a1-2 (vector-cross! (new 'stack-no-clear 'vector) v1-2 arg1)) - ) - (vector+! (-> this torque) (-> this torque) a1-2) - ) + (a1-2 (vector-cross! (new 'stack-no-clear 'vector) v1-2 arg1))) + (vector+! (-> this torque) (-> this torque) a1-2)) 0 - (none) - ) + (none)) (defmethod rigid-body-method-16 ((this rigid-body) (arg0 vector) (arg1 vector) (arg2 float)) (vector+! (-> this force) (-> this force) arg1) (let* ((a0-3 (vector-! (new 'stack-no-clear 'vector) arg0 (-> this position))) - (s4-1 (vector-cross! (new 'stack-no-clear 'vector) a0-3 arg1)) - ) - (let ((f0-0 (vector-length a0-3))) - (if (< arg2 f0-0) - (vector-float*! s4-1 s4-1 (/ arg2 f0-0)) - ) - ) - (vector+! (-> this torque) (-> this torque) s4-1) - ) + (s4-1 (vector-cross! (new 'stack-no-clear 'vector) a0-3 arg1))) + (let ((f0-0 (vector-length a0-3))) (if (< arg2 f0-0) (vector-float*! s4-1 s4-1 (/ arg2 f0-0)))) + (vector+! (-> this torque) (-> this torque) s4-1)) 0 - (none) - ) + (none)) (defmethod rigid-body-method-14 ((this rigid-body) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (vector-rotate*! s4-0 arg1 (-> this matrix)) (vector-rotate*! s5-0 arg0 (-> this matrix)) (vector+! s5-0 s5-0 (-> this position)) - (rigid-body-method-13 this s5-0 s4-0) - ) + (rigid-body-method-13 this s5-0 s4-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-method-15 ((this rigid-body) (arg0 vector)) (vector+! (-> this force) (-> this force) arg0) 0 - (none) - ) + (none)) (defmethod rigid-body-method-18 ((this rigid-body) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-rotate*! gp-0 (-> this cm-offset-joint) (-> this matrix)) - (vector-! arg0 (-> this position) gp-0) - ) - arg0 - ) + (vector-! arg0 (-> this position) gp-0)) + arg0) (defmethod print-stats ((this rigid-body)) (format #t " force ~M ~M ~M" (-> this force x) (-> this force y) (-> this force z)) (format #t " torque ~f ~f ~f~%" (-> this torque x) (-> this torque y) (-> this torque z)) (format #t " position ~M ~M ~M" (-> this position x) (-> this position y) (-> this position z)) - (format - #t - " rotation ~f ~f ~f ~f~%" - (-> this rotation x) - (-> this rotation y) - (-> this rotation z) - (-> this rotation w) - ) + (format #t + " rotation ~f ~f ~f ~f~%" + (-> this rotation x) + (-> this rotation y) + (-> this rotation z) + (-> this rotation w)) (format #t " lin-mom ~M ~M ~M" (-> this lin-momentum x) (-> this lin-momentum y) (-> this lin-momentum z)) (format #t " ang-mom ~f ~f ~f~%" (-> this ang-momentum x) (-> this ang-momentum y) (-> this ang-momentum z)) (format #t " lin-vel ~M ~M ~M" (-> this lin-velocity x) (-> this lin-velocity y) (-> this lin-velocity z)) (format #t " ang-vel ~f ~f ~f~%" (-> this ang-velocity x) (-> this ang-velocity y) (-> this ang-velocity z)) 0 - (none) - ) + (none)) (defmethod rigid-body-method-20 ((this rigid-body)) (format #t " force ~M ~M ~M" (-> this force x) (-> this force y) (-> this force z)) (format #t " torque ~f ~f ~f~%" (-> this torque x) (-> this torque y) (-> this torque z)) 0 - (none) - ) + (none)) (deftype rigid-body-platform-constants (structure) - ((drag-factor float) - (buoyancy-factor float) - (max-buoyancy-depth meters) - (gravity-factor float) - (gravity meters) - (player-weight meters) - (player-bonk-factor float) - (player-dive-factor float) - (player-force-distance meters) - (player-force-clamp meters) - (player-force-timeout time-frame) - (explosion-force meters) - (linear-damping float) - (angular-damping float) - (control-point-count int32) - (mass float) - (inertial-tensor-x meters) - (inertial-tensor-y meters) - (inertial-tensor-z meters) - (cm-joint-x meters) - (cm-joint-y meters) - (cm-joint-z meters) - (idle-distance meters) - (platform symbol) - (sound-name string) - ) - ) - + ((drag-factor float) + (buoyancy-factor float) + (max-buoyancy-depth meters) + (gravity-factor float) + (gravity meters) + (player-weight meters) + (player-bonk-factor float) + (player-dive-factor float) + (player-force-distance meters) + (player-force-clamp meters) + (player-force-timeout time-frame) + (explosion-force meters) + (linear-damping float) + (angular-damping float) + (control-point-count int32) + (mass float) + (inertial-tensor-x meters) + (inertial-tensor-y meters) + (inertial-tensor-z meters) + (cm-joint-x meters) + (cm-joint-y meters) + (cm-joint-z meters) + (idle-distance meters) + (platform symbol) + (sound-name string))) (deftype rigid-body-control-point-inline-array (inline-array-class) - ((data rigid-body-control-point :inline :dynamic :offset 16) - ) - ) - + ((data rigid-body-control-point :inline :dynamic :offset 16))) (set! (-> rigid-body-control-point-inline-array heap-base) (the-as uint 48)) (deftype rigid-body-platform (process-drawable) - ((root-overlay collide-shape-moving :overlay-at root) - (info rigid-body-platform-constants) - (rbody rigid-body :inline) - (control-point-array rigid-body-control-point-inline-array) - (player-velocity vector :inline) - (player-velocity-prev vector :inline) - (player-force-position vector :inline) - (player-force vector :inline) - (sim-time-remaining float) - (float-height-offset float) - (player-attack-id int32) - (player-bonk-timeout time-frame) - (water-anim water-anim) - (player-contact basic) - (player-impulse collide-shape-prim-mesh) - ) + ((root-overlay collide-shape-moving :overlay-at root) + (info rigid-body-platform-constants) + (rbody rigid-body :inline) + (control-point-array rigid-body-control-point-inline-array) + (player-velocity vector :inline) + (player-velocity-prev vector :inline) + (player-force-position vector :inline) + (player-force vector :inline) + (sim-time-remaining float) + (float-height-offset float) + (player-attack-id int32) + (player-bonk-timeout time-frame) + (water-anim water-anim) + (player-contact basic) + (player-impulse collide-shape-prim-mesh)) (:state-methods - rigid-body-platform-idle - rigid-body-platform-float - ) + rigid-body-platform-idle + rigid-body-platform-float) (:methods - (rigid-body-platform-method-22 (_type_ vector float) float) - (rigid-body-platform-method-23 (_type_ float) none) - (rigid-body-platform-method-24 (_type_ rigid-body-control-point float) none) - (rigid-body-platform-method-25 (_type_) none) - (rigid-body-platform-method-26 (_type_) none) - (rigid-body-platform-method-27 (_type_ vector) none) - (rigid-body-platform-method-28 (_type_) none) - (rigid-body-platform-method-29 (_type_ rigid-body-platform-constants) none) - (rigid-body-platform-method-30 (_type_) none) - (rigid-body-platform-method-31 (_type_) none) - (rigid-body-platform-method-32 (_type_) sound-id) - (rigid-body-platform-method-33 (_type_) object) - (rigid-body-platform-method-34 (_type_) none) - ) - ) - + (rigid-body-platform-method-22 (_type_ vector float) float) + (rigid-body-platform-method-23 (_type_ float) none) + (rigid-body-platform-method-24 (_type_ rigid-body-control-point float) none) + (rigid-body-platform-method-25 (_type_) none) + (rigid-body-platform-method-26 (_type_) none) + (rigid-body-platform-method-27 (_type_ vector) none) + (rigid-body-platform-method-28 (_type_) none) + (rigid-body-platform-method-29 (_type_ rigid-body-platform-constants) none) + (rigid-body-platform-method-30 (_type_) none) + (rigid-body-platform-method-31 (_type_) none) + (rigid-body-platform-method-32 (_type_) sound-id) + (rigid-body-platform-method-33 (_type_) object) + (rigid-body-platform-method-34 (_type_) none))) (defmethod relocate ((this rigid-body-platform) (arg0 int)) (if (nonzero? (-> this control-point-array)) - (set! (-> this control-point-array) - (the-as rigid-body-control-point-inline-array (+ (the-as int (-> this control-point-array)) arg0)) - ) - ) - (call-parent-method this arg0) - ) + (set! (-> this control-point-array) + (the-as rigid-body-control-point-inline-array (+ (the-as int (-> this control-point-array)) arg0)))) + (call-parent-method this arg0)) (defmethod rigid-body-platform-method-22 ((this rigid-body-platform) (arg0 vector) (arg1 float)) (let ((v1-0 (-> this water-anim))) 0.0 - (+ (the-as float (cond - (v1-0 - (let* ((a2-1 v1-0) - (a0-1 (if a2-1 - (-> a2-1 ppointer-water-anim 3) - ) - ) - ) - (if a0-1 - (get-ripple-height a0-1 arg0) - (-> v1-0 ppointer-water-anim 9) - ) - ) - ) - (else - (ocean-get-height arg0) - ) - ) - ) - (-> this float-height-offset) - ) - ) - ) + (+ (the-as float + (cond + (v1-0 + (let* ((a2-1 v1-0) + (a0-1 (if a2-1 (-> a2-1 ppointer-water-anim 3)))) + (if a0-1 (get-ripple-height a0-1 arg0) (-> v1-0 ppointer-water-anim 9)))) + (else (ocean-get-height arg0)))) + (-> this float-height-offset)))) (defmethod rigid-body-platform-method-24 ((this rigid-body-platform) (arg0 rigid-body-control-point) (arg1 float)) (set! (-> arg0 world-pos w) (rigid-body-platform-method-22 this (-> arg0 world-pos) arg1)) (let* ((s4-0 (new 'stack-no-clear 'vector)) (f0-2 (- (-> arg0 world-pos w) (-> arg0 world-pos y))) - (f30-0 (/ f0-2 (-> this info max-buoyancy-depth))) - ) + (f30-0 (/ f0-2 (-> this info max-buoyancy-depth)))) (when (< 0.0 f0-2) - (vector-float*! s4-0 *y-vector* (* (-> this rbody mass) - (fmin 1.0 f30-0) - (/ (-> this info gravity) (the float (-> this info control-point-count))) - (-> this info gravity-factor) - (-> this info buoyancy-factor) - ) - ) + (vector-float*! s4-0 + *y-vector* + (* (-> this rbody mass) + (fmin 1.0 f30-0) + (/ (-> this info gravity) (the float (-> this info control-point-count))) + (-> this info gravity-factor) + (-> this info buoyancy-factor))) (rigid-body-method-13 (-> this rbody) (-> arg0 world-pos) s4-0) (vector-float*! s4-0 (-> arg0 velocity) (* -1.0 (-> this info drag-factor) (fmin 1.0 f30-0))) - (rigid-body-method-13 (-> this rbody) (-> arg0 world-pos) s4-0) - ) - ) + (rigid-body-method-13 (-> this rbody) (-> arg0 world-pos) s4-0))) 0 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-25 ((this rigid-body-platform)) (when (or (-> this player-impulse) (-> this player-contact)) (set! (-> this player-impulse) #f) - (rigid-body-method-16 - (-> this rbody) - (-> this player-force-position) - (-> this player-force) - (-> this info player-force-distance) - ) - ) + (rigid-body-method-16 (-> this rbody) + (-> this player-force-position) + (-> this player-force) + (-> this info player-force-distance))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-26 ((this rigid-body-platform)) (let ((a1-0 (new 'stack-no-clear 'vector))) - (vector-float*! - a1-0 - *y-vector* - (* -1.0 (-> this info gravity-factor) (-> this info gravity) (-> this rbody mass)) - ) - (rigid-body-method-15 (-> this rbody) a1-0) - ) + (vector-float*! a1-0 *y-vector* (* -1.0 (-> this info gravity-factor) (-> this info gravity) (-> this rbody mass))) + (rigid-body-method-15 (-> this rbody) a1-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-27 ((this rigid-body-platform) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-! gp-0 arg0 (-> this rbody position)) (set! (-> gp-0 y) 0.0) (let* ((f0-1 (vector-length gp-0)) - (f1-1 (* 10.0 (fmax 0.0 (fmin 4096.0 (+ -4096.0 f0-1))))) - ) + (f1-1 (* 10.0 (fmax 0.0 (fmin 4096.0 (+ -4096.0 f0-1)))))) (when (< 0.0 f1-1) (vector-float*! gp-0 gp-0 (/ f1-1 f0-1)) - (rigid-body-method-15 (-> this rbody) gp-0) - ) - ) - ) + (rigid-body-method-15 (-> this rbody) gp-0)))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-23 ((this rigid-body-platform) (arg0 float)) (let ((s4-0 (-> this rbody matrix))) @@ -420,42 +313,29 @@ (let ((s2-0 (-> this control-point-array data s3-0))) (vector-matrix*! (-> s2-0 world-pos) (-> s2-0 local-pos) s4-0) (rigid-body-method-17 (-> this rbody) (-> s2-0 world-pos) (-> s2-0 velocity)) - (rigid-body-platform-method-24 this s2-0 arg0) - ) - ) - ) + (rigid-body-platform-method-24 this s2-0 arg0)))) (rigid-body-platform-method-26 this) (rigid-body-platform-method-25 this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-28 ((this rigid-body-platform)) - (if (-> this info platform) - (detect-riders! (-> this root-overlay)) - ) + (if (-> this info platform) (detect-riders! (-> this root-overlay))) (set! (-> this player-velocity-prev quad) (-> this player-velocity quad)) (if *target* - (set! (-> this player-velocity quad) (-> *target* control transv quad)) - (set! (-> this player-velocity quad) (-> *null-vector* quad)) - ) - (+! (-> this sim-time-remaining) - (* 0.0033333334 (the float (- (current-time) (-> *display* old-base-frame-counter)))) - ) + (set! (-> this player-velocity quad) (-> *target* control transv quad)) + (set! (-> this player-velocity quad) (-> *null-vector* quad))) + (+! (-> this sim-time-remaining) (* 0.0033333334 (the float (- (current-time) (-> *display* old-base-frame-counter))))) (let ((f30-0 (* DISPLAY_FPS_RATIO 0.016666668)) ;; og:preserve-this changed for high fps - (f28-0 (* 0.0033333334 (the float (logand #xffffff (current-time))))) - ) + (f28-0 (* 0.0033333334 (the float (logand #xffffff (current-time)))))) (while (>= (-> this sim-time-remaining) (* 0.5 f30-0)) (clear-force-torque! (-> this rbody)) (rigid-body-platform-method-23 this f28-0) (rigid-body-method-10 (-> this rbody) f30-0) - (set! (-> this sim-time-remaining) (- (-> this sim-time-remaining) f30-0)) - ) - ) + (set! (-> this sim-time-remaining) (- (-> this sim-time-remaining) f30-0)))) (set! (-> this player-contact) #f) 0 - (none) - ) + (none)) (defbehavior rigid-body-platform-event-handler rigid-body-platform ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -463,30 +343,13 @@ (when (time-elapsed? (-> self player-bonk-timeout) (-> self info player-force-timeout)) (set-time! (-> self player-bonk-timeout)) (let* ((s5-0 arg0) - (v1-7 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - s5-0 - ) - ) - ) + (v1-7 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) s5-0))) (when v1-7 (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) (set! (-> self player-force-position quad) (-> (the-as process-drawable v1-7) root trans quad)) - (let ((f0-4 (fmin - (* 0.00012207031 - (the-as float (-> arg3 param 1)) - (-> self info player-bonk-factor) - (-> self info player-weight) - ) - (-> self info player-force-clamp) - ) - ) - ) - (vector-float*! (-> self player-force) *y-vector* (- f0-4)) - ) - ) - ) - ) - ) + (let ((f0-4 (fmin (* 0.00012207031 (the-as float (-> arg3 param 1)) (-> self info player-bonk-factor) (-> self info player-weight)) + (-> self info player-force-clamp)))) + (vector-float*! (-> self player-force) *y-vector* (- f0-4))))))) (('attack) (let ((v1-16 (-> arg3 param 2))) (when (!= v1-16 (-> self player-attack-id)) @@ -496,71 +359,33 @@ (when (time-elapsed? (-> self player-bonk-timeout) (-> self info player-force-timeout)) (set-time! (-> self player-bonk-timeout)) (let* ((gp-1 arg0) - (v1-24 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) process-drawable)) - gp-1 - ) - ) - ) + (v1-24 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) process-drawable)) gp-1))) (when v1-24 (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) (set! (-> self player-force-position quad) (-> (the-as process-drawable v1-24) root trans quad)) - (let ((f0-9 (fmin - (* 16.0 (-> self info player-weight) (-> self info player-dive-factor)) - (-> self info player-force-clamp) - ) - ) - ) - (vector-float*! (-> self player-force) *y-vector* (- f0-9)) - ) - ) - ) - ) - ) + (let ((f0-9 (fmin (* 16.0 (-> self info player-weight) (-> self info player-dive-factor)) (-> self info player-force-clamp)))) + (vector-float*! (-> self player-force) *y-vector* (- f0-9))))))) ((= (-> arg3 param 1) 'explode) (let* ((gp-2 arg0) - (v1-34 (if (and (nonzero? gp-2) (type-type? (-> gp-2 type) process-drawable)) - gp-2 - ) - ) - ) + (v1-34 (if (and (nonzero? gp-2) (type-type? (-> gp-2 type) process-drawable)) gp-2))) (when v1-34 (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) (set! (-> self player-force-position quad) (-> (the-as process-drawable v1-34) root trans quad)) (vector-! (-> self player-force) (-> self rbody position) (-> (the-as process-drawable v1-34) root trans)) - (vector-normalize! (-> self player-force) (-> self info explosion-force)) - ) - ) - ) - (else - (the-as vector #f) - ) - ) - ) - ) - ) + (vector-normalize! (-> self player-force) (-> self info explosion-force))))) + (else (the-as vector #f)))))) (('impulse) (let ((s5-1 arg0)) - (when (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) - s5-1 - ) + (when (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) s5-1) (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) (set! (-> self player-force-position quad) (-> self rbody position quad)) - (let ((v0-0 (-> self player-force))) - (set! (-> v0-0 quad) (-> (the-as vector (-> arg3 param 0)) quad)) - v0-0 - ) - ) - ) - ) + (let ((v0-0 (-> self player-force))) (set! (-> v0-0 quad) (-> (the-as vector (-> arg3 param 0)) quad)) v0-0)))) (('edge-grabbed) (let ((v1-44 (-> arg3 param 0))) (when (not (-> self player-impulse)) (set! (-> self player-contact) #t) (set! (-> self player-force-position quad) (-> (the-as vector (+ v1-44 32)) quad)) - (vector-float*! (-> self player-force) *y-vector* (* -1.0 (-> self info player-weight))) - ) - ) - ) + (vector-float*! (-> self player-force) *y-vector* (* -1.0 (-> self info player-weight)))))) (('ridden) (let ((v1-48 (the-as object (-> arg3 param 0)))) (when (the-as uint v1-48) @@ -570,104 +395,66 @@ (set! (-> self player-contact) #t) (set! (-> self player-force-position quad) (-> (the-as process-drawable v1-50) root trans quad)) (set! (-> self player-force quad) (-> *null-vector* quad)) - (vector+*! (-> self player-force) (-> self player-force) *y-vector* (* -1.0 (-> self info player-weight))) - ) - ) - ) - ) - ) - ) - ) - ) + (vector+*! (-> self player-force) (-> self player-force) *y-vector* (* -1.0 (-> self info player-weight))))))))))) (defbehavior rigid-body-platform-post rigid-body-platform () (set! (-> self rbody lin-momentum-damping-factor) (-> self info linear-damping)) (set! (-> self rbody ang-momentum-damping-factor) (-> self info angular-damping)) (if (-> self player-impulse) - (sound-play-by-name - (string->sound-name (-> self info sound-name)) - (new-sound-id) - 1024 - 0 - 0 - (sound-group sfx) - #t - ) - ) + (sound-play-by-name (string->sound-name (-> self info sound-name)) (new-sound-id) 1024 0 0 (sound-group sfx) #t)) (rigid-body-platform-method-28 self) (quaternion-copy! (-> self root-overlay quat) (-> self rbody rotation)) (rigid-body-method-18 (-> self rbody) (-> self root-overlay trans)) - (if (-> self info platform) - (rider-post) - (transform-post) - ) - ) + (if (-> self info platform) (rider-post) (transform-post))) (defstate rigid-body-platform-idle (rigid-body-platform) :virtual #t - :trans (behavior () - (if (and *target* (>= (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (go-virtual rigid-body-platform-float) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :trans + (behavior () + (if (and *target* + (>= (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (go-virtual rigid-body-platform-float))) + :code + (behavior () + (loop + (suspend))) + :post ja-post) (defstate rigid-body-platform-float (rigid-body-platform) :virtual #t :event rigid-body-platform-event-handler - :trans (behavior () - (if (or (not *target*) (< (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (go-virtual rigid-body-platform-idle) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post rigid-body-platform-post - ) + :trans + (behavior () + (if (or (not *target*) + (< (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (go-virtual rigid-body-platform-idle))) + :code + (behavior () + (loop + (suspend))) + :post rigid-body-platform-post) (defmethod rigid-body-platform-method-29 ((this rigid-body-platform) (arg0 rigid-body-platform-constants)) (set! (-> this info) arg0) (set! (-> this control-point-array) - (new 'process 'rigid-body-control-point-inline-array (-> this info control-point-count)) - ) + (new 'process 'rigid-body-control-point-inline-array (-> this info control-point-count))) (logior! (-> this skel status) (janim-status inited)) (update-transforms! (-> this root-overlay)) - (set-vector! - (-> this rbody cm-offset-joint) - (-> this info cm-joint-x) - (-> this info cm-joint-y) - (-> this info cm-joint-z) - 1.0 - ) - (rigid-body-method-22 - (-> this rbody) - (-> this root-overlay trans) - (-> this root-overlay quat) - (-> this info linear-damping) - (-> this info angular-damping) - ) - (rigid-body-method-9 - (-> this rbody) - (-> this info mass) - (-> this info inertial-tensor-x) - (-> this info inertial-tensor-y) - (-> this info inertial-tensor-z) - ) + (set-vector! (-> this rbody cm-offset-joint) + (-> this info cm-joint-x) + (-> this info cm-joint-y) + (-> this info cm-joint-z) + 1.0) + (rigid-body-method-22 (-> this rbody) + (-> this root-overlay trans) + (-> this root-overlay quat) + (-> this info linear-damping) + (-> this info angular-damping)) + (rigid-body-method-9 (-> this rbody) + (-> this info mass) + (-> this info inertial-tensor-x) + (-> this info inertial-tensor-y) + (-> this info inertial-tensor-z)) (set! (-> this player-impulse) #f) (set! (-> this player-contact) #f) (set-time! (-> this player-bonk-timeout)) @@ -676,16 +463,13 @@ (set! (-> this player-velocity-prev quad) (-> *null-vector* quad)) (set! (-> this water-anim) (the-as water-anim (entity-actor-lookup (-> this entity) 'water-actor 0))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-30 ((this rigid-body-platform)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -694,47 +478,43 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (set-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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) - -(define *rigid-body-platform-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 0.8 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 1.5) - :gravity-factor 1.0 - :gravity (meters 10) - :player-weight (meters 6.6) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 1 - :mass 2.0 - :inertial-tensor-x (meters 3) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 3) - :idle-distance (meters 50) - :platform #t - :sound-name #f - ) - ) + (none)) + +(define *rigid-body-platform-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 0.8 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1.5) + :gravity-factor 1.0 + :gravity (meters 10) + :player-weight (meters 6.6) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 1 + :mass 2.0 + :inertial-tensor-x (meters 3) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 3) + :idle-distance (meters 50) + :platform #t + :sound-name #f)) (defmethod rigid-body-platform-method-34 ((this rigid-body-platform)) (go (method-of-object this rigid-body-platform-idle)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this rigid-body-platform)) (set! (-> this float-height-offset) 0.0) @@ -745,15 +525,10 @@ (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) (set! (-> s3-0 local-pos x) (* 12288.0 (sin f30-0))) (set! (-> s3-0 local-pos y) -10240.0) - (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0))) - ) - (set! (-> s3-0 local-pos w) 1.0) - ) - ) - ) + (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0)))) + (set! (-> s3-0 local-pos w) 1.0)))) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this rigid-body-platform) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -762,5 +537,4 @@ (rigid-body-platform-method-31 this) (rigid-body-platform-method-34 this) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/common-obs/ropebridge.gc b/goal_src/jak1/engine/common-obs/ropebridge.gc index d5888a1f9e..2dba7a84a5 100644 --- a/goal_src/jak1/engine/common-obs/ropebridge.gc +++ b/goal_src/jak1/engine/common-obs/ropebridge.gc @@ -1,650 +1,633 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") -;; name: ropebridge.gc -;; name in dgo: ropebridge -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (deftype ropebridge-tuning (structure) - ((num-springs int32) - (num-spring-points int32) - (col-mesh-indexes (pointer uint8)) - (view-frustum-radius float) - (root-prim-radius float) - (desired-spring-len float) - (gravity float) - (spring-coefficient float) - (spring-mass float) - (friction float) - (max-influence-dist float) - (rider-max-gravity float) - (max-bonk-influence-dist float) - (rider-bonk-force float) - (rider-bonk-min float) - (rider-bonk-max float) - (normal-board-len float) - (bridge-end-to-end-len float) - (rest-state symbol) - ) - ) - - -(define *ropebridge-70-rest-state* (new 'static 'inline-array vector 35 - (new 'static 'vector :x -2361.8552 :y 8191.9688 :z -1.9208 :w -0.1275) - (new 'static 'vector :x -4584.7974 :y 16383.936 :z -3.5561 :w -0.0995) - (new 'static 'vector :x -6668.8125 :y 24575.91 :z -5.0685 :w 0.035) - (new 'static 'vector :x -8613.924 :y 32767.895 :z -6.1218 :w 0.1992) - (new 'static 'vector :x -10420.142 :y 40959.875 :z -6.9367 :w 0.0449) - (new 'static 'vector :x -12087.479 :y 49151.86 :z -8.0159 :w -0.1151) - (new 'static 'vector :x -13615.937 :y 57343.848 :z -9.2313 :w 0.1964) - (new 'static 'vector :x -15005.52 :y 65535.84 :z -9.975 :w 0.1667) - (new 'static 'vector :x -16256.195 :y 73727.84 :z -10.6569 :w -0.1727) - (new 'static 'vector :x -17367.94 :y 81919.84 :z -11.9885 :w 0.271) - (new 'static 'vector :x -18340.738 :y 90111.85 :z -13.5812 :w -0.1759) - (new 'static 'vector :x -19174.588 :y 98303.85 :z -15.0931 :w 0.363) - (new 'static 'vector :x -19869.475 :y 106495.86 :z -16.4569 :w 0.1326) - (new 'static 'vector :x -20425.404 :y 114687.86 :z -17.9534 :w 0.2799) - (new 'static 'vector :x -20842.35 :y 122879.875 :z -18.7552 :w 0.3967) - (new 'static 'vector :x -21120.309 :y 131071.88 :z -19.6815 :w -0.4682) - (new 'static 'vector :x -21259.275 :y 139263.89 :z -20.0082 :w -0.3457) - (new 'static 'vector :x -21259.275 :y 147455.9 :z -19.9398 :w -0.0757) - (new 'static 'vector :x -21120.31 :y 155647.92 :z -19.5994 :w 0.9825) - (new 'static 'vector :x -20842.354 :y 163839.92 :z -18.8809 :w 0.0018) - (new 'static 'vector :x -20425.402 :y 172031.94 :z -17.8884 :w 0.1869) - (new 'static 'vector :x -19869.475 :y 180223.95 :z -16.6081 :w 0.6356) - (new 'static 'vector :x -19174.584 :y 188415.97 :z -15.0626 :w 0.5303) - (new 'static 'vector :x -18340.738 :y 196607.98 :z -13.5152 :w 0.1638) - (new 'static 'vector :x -17367.94 :y 204799.98 :z -11.9936 :w 0.0825) - (new 'static 'vector :x -16256.193 :y 212991.98 :z -10.6949 :w 0.3726) - (new 'static 'vector :x -15005.518 :y 221183.95 :z -9.9551 :w 0.0157) - (new 'static 'vector :x -13615.937 :y 229375.98 :z -9.2192 :w 0.5676) - (new 'static 'vector :x -12087.478 :y 237568.0 :z -7.9867 :w 0.9663) - (new 'static 'vector :x -10420.145 :y 245760.0 :z -6.9835 :w -0.4067) - (new 'static 'vector :x -8613.921 :y 253952.0 :z -6.0589 :w 0.2085) - (new 'static 'vector :x -6668.8105 :y 262144.0 :z -5.0582 :w 0.8373) - (new 'static 'vector :x -4584.7974 :y 270336.0 :z -3.5881 :w 1.1422) - (new 'static 'vector :x -2361.8545 :y 278528.0 :z -1.8908 :w 1.4099) - (new 'static 'vector :y 286720.0) - ) - ) - -(define *ropebridge-52-rest-state* (new 'static 'inline-array vector 26 - (new 'static 'vector :x -1737.1892 :y 8191.979 :z 12.1884 :w 0.1708) - (new 'static 'vector :x -3335.4602 :y 16383.967 :z 25.0793 :w 0.0007) - (new 'static 'vector :x -4794.766 :y 24575.955 :z 37.6373 :w -0.0002) - (new 'static 'vector :x -6115.041 :y 32767.947 :z 50.0327 :w 0.0733) - (new 'static 'vector :x -7296.247 :y 40959.934 :z 59.5924 :w -0.033) - (new 'static 'vector :x -8338.399 :y 49151.93 :z 64.8644 :w -0.0244) - (new 'static 'vector :x -9241.526 :y 57343.938 :z 70.8964 :w 0.072) - (new 'static 'vector :x -10005.708 :y 65535.938 :z 76.9547 :w 0.0023) - (new 'static 'vector :x -10630.993 :y 73727.945 :z 79.8365 :w 0.2395) - (new 'static 'vector :x -11117.421 :y 81919.95 :z 79.5707 :w 0.0572) - (new 'static 'vector :x -11464.953 :y 90111.96 :z 78.7975 :w -0.0422) - (new 'static 'vector :x -11673.532 :y 98303.96 :z 77.7957 :w 0.019) - (new 'static 'vector :x -11743.086 :y 106495.95 :z 77.2108 :w -0.3523) - (new 'static 'vector :x -11673.532 :y 114687.96 :z 77.7399 :w 0.197) - (new 'static 'vector :x -11464.951 :y 122879.97 :z 78.838 :w 0.0763) - (new 'static 'vector :x -11117.423 :y 131071.98 :z 79.5788 :w 0.423) - (new 'static 'vector :x -10630.993 :y 139263.98 :z 79.8296 :w -0.2595) - (new 'static 'vector :x -10005.708 :y 147455.98 :z 76.9285 :w 0.7404) - (new 'static 'vector :x -9241.526 :y 155647.98 :z 70.8901 :w 0.2474) - (new 'static 'vector :x -8338.398 :y 163840.0 :z 64.9246 :w -0.0395) - (new 'static 'vector :x -7296.2456 :y 172032.0 :z 59.556 :w 0.5165) - (new 'static 'vector :x -6115.0415 :y 180224.0 :z 50.0342 :w 0.8282) - (new 'static 'vector :x -4794.7666 :y 188416.0 :z 37.644 :w 0.0407) - (new 'static 'vector :x -3335.4592 :y 196608.0 :z 25.1033 :w -0.258) - (new 'static 'vector :x -1737.1888 :y 204800.02 :z 12.1495 :w 1.1935) - (new 'static 'vector :y 212992.0) - ) - ) - -(define *ropebridge-32-rest-state* (new 'static 'inline-array vector 16 - (new 'static 'vector :x -1041.5476 :y 8191.998 :z -4.4282 :w -0.0321) - (new 'static 'vector :x -1944.2802 :y 16383.992 :z -8.0124 :w 0.0452) - (new 'static 'vector :x -2708.21 :y 24576.0 :z -11.5897 :w 0.311) - (new 'static 'vector :x -3333.2952 :y 32767.992 :z -15.9391 :w -0.1053) - (new 'static 'vector :x -3819.4963 :y 40959.984 :z -19.7012 :w -0.1924) - (new 'static 'vector :x -4166.8076 :y 49152.0 :z -22.6499 :w 0.3457) - (new 'static 'vector :x -4375.184 :y 57343.996 :z -24.2658 :w 0.0078) - (new 'static 'vector :x -4444.632 :y 65536.0 :z -24.3671 :w -0.1826) - (new 'static 'vector :x -4375.184 :y 73728.0 :z -24.2597 :w -0.0109) - (new 'static 'vector :x -4166.8076 :y 81920.0 :z -22.6363 :w 0.4393) - (new 'static 'vector :x -3819.4968 :y 90112.0 :z -19.7122 :w 0.0509) - (new 'static 'vector :x -3333.2952 :y 98304.01 :z -15.9279 :w 0.091) - (new 'static 'vector :x -2708.21 :y 106496.01 :z -11.5961 :w -0.3329) - (new 'static 'vector :x -1944.28 :y 114688.01 :z -8.0186 :w 0.2261) - (new 'static 'vector :x -1041.5474 :y 122880.016 :z -4.4277 :w 0.1558) - (new 'static 'vector :y 131072.0) - ) - ) - -(define *ropebridge-36-rest-state* (new 'static 'inline-array vector 18 - (new 'static 'vector :x -1180.706 :y 8191.9907 :z -0.027 :w -0.0559) - (new 'static 'vector :x -2222.5103 :y 16383.984 :z -0.0441 :w -0.0457) - (new 'static 'vector :x -3125.4124 :y 24575.979 :z -0.047 :w -0.004) - (new 'static 'vector :x -3889.4092 :y 32767.977 :z -0.0962 :w 0.1168) - (new 'static 'vector :x -4514.496 :y 40959.977 :z -0.1679 :w 0.2095) - (new 'static 'vector :x -5000.6753 :y 49151.977 :z -0.3088 :w 0.0938) - (new 'static 'vector :x -5347.9487 :y 57343.98 :z -0.5083 :w -0.0745) - (new 'static 'vector :x -5556.315 :y 65535.98 :z -0.6251 :w 0.2297) - (new 'static 'vector :x -5625.7715 :y 73727.984 :z -0.6877 :w -0.1315) - (new 'static 'vector :x -5556.3154 :y 81919.99 :z -0.6232 :w 0.4198) - (new 'static 'vector :x -5347.948 :y 90111.99 :z -0.5092 :w -0.0617) - (new 'static 'vector :x -5000.675 :y 98303.99 :z -0.2973 :w 0.1242) - (new 'static 'vector :x -4514.4956 :y 106496.0 :z -0.1663 :w 0.1304) - (new 'static 'vector :x -3889.4084 :y 114688.0 :z -0.0908 :w 0.3045) - (new 'static 'vector :x -3125.4133 :y 122880.0 :z -0.0447 :w 0.0666) - (new 'static 'vector :x -2222.5103 :y 131072.0 :z -0.0628 :w 0.4962) - (new 'static 'vector :x -1180.706 :y 139264.0 :z -0.0328 :w 0.6014) - (new 'static 'vector :y 147456.0) - ) - ) + ((num-springs int32) + (num-spring-points int32) + (col-mesh-indexes (pointer uint8)) + (view-frustum-radius float) + (root-prim-radius float) + (desired-spring-len float) + (gravity float) + (spring-coefficient float) + (spring-mass float) + (friction float) + (max-influence-dist float) + (rider-max-gravity float) + (max-bonk-influence-dist float) + (rider-bonk-force float) + (rider-bonk-min float) + (rider-bonk-max float) + (normal-board-len float) + (bridge-end-to-end-len float) + (rest-state symbol))) + +(define *ropebridge-70-rest-state* + (new 'static + 'inline-array + vector + 35 + (new 'static 'vector :x -2361.8552 :y 8191.9688 :z -1.9208 :w -0.1275) + (new 'static 'vector :x -4584.7974 :y 16383.936 :z -3.5561 :w -0.0995) + (new 'static 'vector :x -6668.8125 :y 24575.91 :z -5.0685 :w 0.035) + (new 'static 'vector :x -8613.924 :y 32767.895 :z -6.1218 :w 0.1992) + (new 'static 'vector :x -10420.142 :y 40959.875 :z -6.9367 :w 0.0449) + (new 'static 'vector :x -12087.479 :y 49151.86 :z -8.0159 :w -0.1151) + (new 'static 'vector :x -13615.937 :y 57343.848 :z -9.2313 :w 0.1964) + (new 'static 'vector :x -15005.52 :y 65535.84 :z -9.975 :w 0.1667) + (new 'static 'vector :x -16256.195 :y 73727.84 :z -10.6569 :w -0.1727) + (new 'static 'vector :x -17367.94 :y 81919.84 :z -11.9885 :w 0.271) + (new 'static 'vector :x -18340.738 :y 90111.85 :z -13.5812 :w -0.1759) + (new 'static 'vector :x -19174.588 :y 98303.85 :z -15.0931 :w 0.363) + (new 'static 'vector :x -19869.475 :y 106495.86 :z -16.4569 :w 0.1326) + (new 'static 'vector :x -20425.404 :y 114687.86 :z -17.9534 :w 0.2799) + (new 'static 'vector :x -20842.35 :y 122879.875 :z -18.7552 :w 0.3967) + (new 'static 'vector :x -21120.309 :y 131071.88 :z -19.6815 :w -0.4682) + (new 'static 'vector :x -21259.275 :y 139263.89 :z -20.0082 :w -0.3457) + (new 'static 'vector :x -21259.275 :y 147455.9 :z -19.9398 :w -0.0757) + (new 'static 'vector :x -21120.31 :y 155647.92 :z -19.5994 :w 0.9825) + (new 'static 'vector :x -20842.354 :y 163839.92 :z -18.8809 :w 0.0018) + (new 'static 'vector :x -20425.402 :y 172031.94 :z -17.8884 :w 0.1869) + (new 'static 'vector :x -19869.475 :y 180223.95 :z -16.6081 :w 0.6356) + (new 'static 'vector :x -19174.584 :y 188415.97 :z -15.0626 :w 0.5303) + (new 'static 'vector :x -18340.738 :y 196607.98 :z -13.5152 :w 0.1638) + (new 'static 'vector :x -17367.94 :y 204799.98 :z -11.9936 :w 0.0825) + (new 'static 'vector :x -16256.193 :y 212991.98 :z -10.6949 :w 0.3726) + (new 'static 'vector :x -15005.518 :y 221183.95 :z -9.9551 :w 0.0157) + (new 'static 'vector :x -13615.937 :y 229375.98 :z -9.2192 :w 0.5676) + (new 'static 'vector :x -12087.478 :y 237568.0 :z -7.9867 :w 0.9663) + (new 'static 'vector :x -10420.145 :y 245760.0 :z -6.9835 :w -0.4067) + (new 'static 'vector :x -8613.921 :y 253952.0 :z -6.0589 :w 0.2085) + (new 'static 'vector :x -6668.8105 :y 262144.0 :z -5.0582 :w 0.8373) + (new 'static 'vector :x -4584.7974 :y 270336.0 :z -3.5881 :w 1.1422) + (new 'static 'vector :x -2361.8545 :y 278528.0 :z -1.8908 :w 1.4099) + (new 'static 'vector :y 286720.0))) + +(define *ropebridge-52-rest-state* + (new 'static + 'inline-array + vector + 26 + (new 'static 'vector :x -1737.1892 :y 8191.979 :z 12.1884 :w 0.1708) + (new 'static 'vector :x -3335.4602 :y 16383.967 :z 25.0793 :w 0.0007) + (new 'static 'vector :x -4794.766 :y 24575.955 :z 37.6373 :w -0.0002) + (new 'static 'vector :x -6115.041 :y 32767.947 :z 50.0327 :w 0.0733) + (new 'static 'vector :x -7296.247 :y 40959.934 :z 59.5924 :w -0.033) + (new 'static 'vector :x -8338.399 :y 49151.93 :z 64.8644 :w -0.0244) + (new 'static 'vector :x -9241.526 :y 57343.938 :z 70.8964 :w 0.072) + (new 'static 'vector :x -10005.708 :y 65535.938 :z 76.9547 :w 0.0023) + (new 'static 'vector :x -10630.993 :y 73727.945 :z 79.8365 :w 0.2395) + (new 'static 'vector :x -11117.421 :y 81919.95 :z 79.5707 :w 0.0572) + (new 'static 'vector :x -11464.953 :y 90111.96 :z 78.7975 :w -0.0422) + (new 'static 'vector :x -11673.532 :y 98303.96 :z 77.7957 :w 0.019) + (new 'static 'vector :x -11743.086 :y 106495.95 :z 77.2108 :w -0.3523) + (new 'static 'vector :x -11673.532 :y 114687.96 :z 77.7399 :w 0.197) + (new 'static 'vector :x -11464.951 :y 122879.97 :z 78.838 :w 0.0763) + (new 'static 'vector :x -11117.423 :y 131071.98 :z 79.5788 :w 0.423) + (new 'static 'vector :x -10630.993 :y 139263.98 :z 79.8296 :w -0.2595) + (new 'static 'vector :x -10005.708 :y 147455.98 :z 76.9285 :w 0.7404) + (new 'static 'vector :x -9241.526 :y 155647.98 :z 70.8901 :w 0.2474) + (new 'static 'vector :x -8338.398 :y 163840.0 :z 64.9246 :w -0.0395) + (new 'static 'vector :x -7296.2456 :y 172032.0 :z 59.556 :w 0.5165) + (new 'static 'vector :x -6115.0415 :y 180224.0 :z 50.0342 :w 0.8282) + (new 'static 'vector :x -4794.7666 :y 188416.0 :z 37.644 :w 0.0407) + (new 'static 'vector :x -3335.4592 :y 196608.0 :z 25.1033 :w -0.258) + (new 'static 'vector :x -1737.1888 :y 204800.02 :z 12.1495 :w 1.1935) + (new 'static 'vector :y 212992.0))) + +(define *ropebridge-32-rest-state* + (new 'static + 'inline-array + vector + 16 + (new 'static 'vector :x -1041.5476 :y 8191.998 :z -4.4282 :w -0.0321) + (new 'static 'vector :x -1944.2802 :y 16383.992 :z -8.0124 :w 0.0452) + (new 'static 'vector :x -2708.21 :y 24576.0 :z -11.5897 :w 0.311) + (new 'static 'vector :x -3333.2952 :y 32767.992 :z -15.9391 :w -0.1053) + (new 'static 'vector :x -3819.4963 :y 40959.984 :z -19.7012 :w -0.1924) + (new 'static 'vector :x -4166.8076 :y 49152.0 :z -22.6499 :w 0.3457) + (new 'static 'vector :x -4375.184 :y 57343.996 :z -24.2658 :w 0.0078) + (new 'static 'vector :x -4444.632 :y 65536.0 :z -24.3671 :w -0.1826) + (new 'static 'vector :x -4375.184 :y 73728.0 :z -24.2597 :w -0.0109) + (new 'static 'vector :x -4166.8076 :y 81920.0 :z -22.6363 :w 0.4393) + (new 'static 'vector :x -3819.4968 :y 90112.0 :z -19.7122 :w 0.0509) + (new 'static 'vector :x -3333.2952 :y 98304.01 :z -15.9279 :w 0.091) + (new 'static 'vector :x -2708.21 :y 106496.01 :z -11.5961 :w -0.3329) + (new 'static 'vector :x -1944.28 :y 114688.01 :z -8.0186 :w 0.2261) + (new 'static 'vector :x -1041.5474 :y 122880.016 :z -4.4277 :w 0.1558) + (new 'static 'vector :y 131072.0))) + +(define *ropebridge-36-rest-state* + (new 'static + 'inline-array + vector + 18 + (new 'static 'vector :x -1180.706 :y 8191.9907 :z -0.027 :w -0.0559) + (new 'static 'vector :x -2222.5103 :y 16383.984 :z -0.0441 :w -0.0457) + (new 'static 'vector :x -3125.4124 :y 24575.979 :z -0.047 :w -0.004) + (new 'static 'vector :x -3889.4092 :y 32767.977 :z -0.0962 :w 0.1168) + (new 'static 'vector :x -4514.496 :y 40959.977 :z -0.1679 :w 0.2095) + (new 'static 'vector :x -5000.6753 :y 49151.977 :z -0.3088 :w 0.0938) + (new 'static 'vector :x -5347.9487 :y 57343.98 :z -0.5083 :w -0.0745) + (new 'static 'vector :x -5556.315 :y 65535.98 :z -0.6251 :w 0.2297) + (new 'static 'vector :x -5625.7715 :y 73727.984 :z -0.6877 :w -0.1315) + (new 'static 'vector :x -5556.3154 :y 81919.99 :z -0.6232 :w 0.4198) + (new 'static 'vector :x -5347.948 :y 90111.99 :z -0.5092 :w -0.0617) + (new 'static 'vector :x -5000.675 :y 98303.99 :z -0.2973 :w 0.1242) + (new 'static 'vector :x -4514.4956 :y 106496.0 :z -0.1663 :w 0.1304) + (new 'static 'vector :x -3889.4084 :y 114688.0 :z -0.0908 :w 0.3045) + (new 'static 'vector :x -3125.4133 :y 122880.0 :z -0.0447 :w 0.0666) + (new 'static 'vector :x -2222.5103 :y 131072.0 :z -0.0628 :w 0.4962) + (new 'static 'vector :x -1180.706 :y 139264.0 :z -0.0328 :w 0.6014) + (new 'static 'vector :y 147456.0))) (define *ropebridge-tunings* - (new 'static 'inline-array ropebridge-tuning 6 - (new 'static 'ropebridge-tuning - :num-springs 16 - :num-spring-points 17 - :col-mesh-indexes (new 'static 'array uint8 16 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3) - :view-frustum-radius 81920.0 - :root-prim-radius 81920.0 - :desired-spring-len 4096.0 - :gravity -22.755556 - :spring-coefficient 0.16384 - :spring-mass 0.018 - :friction 0.97 - :max-influence-dist 49152.0 - :rider-max-gravity -56.88889 - :max-bonk-influence-dist 49152.0 - :rider-bonk-force 49152.0 - :rider-bonk-min 8192.0 - :rider-bonk-max 77824.0 - :normal-board-len 8192.0 - :bridge-end-to-end-len 131072.0 - :rest-state '*ropebridge-32-rest-state* - ) - (new 'static 'ropebridge-tuning - :num-springs 18 - :num-spring-points 19 - :col-mesh-indexes (new 'static 'array uint8 32 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - :view-frustum-radius 98304.0 - :root-prim-radius 98304.0 - :desired-spring-len 4096.0 - :gravity -22.755556 - :spring-coefficient 0.16384 - :spring-mass 0.018 - :friction 0.97 - :max-influence-dist 49152.0 - :rider-max-gravity -56.88889 - :max-bonk-influence-dist 49152.0 - :rider-bonk-force 49152.0 - :rider-bonk-min 8192.0 - :rider-bonk-max 77824.0 - :normal-board-len 8192.0 - :bridge-end-to-end-len 147456.0 - :rest-state '*ropebridge-36-rest-state* - ) - (new 'static 'ropebridge-tuning - :num-springs 26 - :num-spring-points 27 - :col-mesh-indexes (new 'static 'array uint8 32 - #x3 - #x3 - #x3 - #x3 - #x3 - #x1 - #x4 - #x4 - #x2 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x1 - #x4 - #x4 - #x4 - #x2 - #x3 - #x3 - #x3 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - :view-frustum-radius 122880.0 - :root-prim-radius 122880.0 - :desired-spring-len 4096.0 - :gravity -22.755556 - :spring-coefficient 0.16384 - :spring-mass 0.018 - :friction 0.97 - :max-influence-dist 49152.0 - :rider-max-gravity -56.88889 - :max-bonk-influence-dist 49152.0 - :rider-bonk-force 49152.0 - :rider-bonk-min 8192.0 - :rider-bonk-max 77824.0 - :normal-board-len 8192.0 - :bridge-end-to-end-len 212992.0 - :rest-state '*ropebridge-52-rest-state* - ) - (new 'static 'ropebridge-tuning - :num-springs 35 - :num-spring-points 36 - :col-mesh-indexes (new 'static 'array uint8 48 - #x3 - #x3 - #x3 - #x3 - #x3 - #x1 - #x4 - #x4 - #x2 - #x7 - #x4 - #x4 - #x2 - #x3 - #x3 - #x1 - #x4 - #x4 - #x4 - #x2 - #x3 - #x3 - #x3 - #x6 - #x4 - #x4 - #x5 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x3 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - :view-frustum-radius 163840.0 - :root-prim-radius 163840.0 - :desired-spring-len 4096.0 - :gravity -22.755556 - :spring-coefficient 0.16384 - :spring-mass 0.018 - :friction 0.97 - :max-influence-dist 49152.0 - :rider-max-gravity -56.88889 - :max-bonk-influence-dist 49152.0 - :rider-bonk-force 49152.0 - :rider-bonk-min 8192.0 - :rider-bonk-max 77824.0 - :normal-board-len 8192.0 - :bridge-end-to-end-len 286720.0 - :rest-state '*ropebridge-70-rest-state* - ) - (new 'static 'ropebridge-tuning - :num-springs 18 - :num-spring-points 19 - :col-mesh-indexes (new 'static 'array uint8 32 - #x3 - #x3 - #x3 - #x3 - #x1 - #x4 - #x4 - #x4 - #x6 - #x3 - #x5 - #x4 - #x4 - #x4 - #x2 - #x3 - #x3 - #x3 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - :view-frustum-radius 98304.0 - :root-prim-radius 98304.0 - :desired-spring-len 4096.0 - :gravity -22.755556 - :spring-coefficient 0.16384 - :spring-mass 0.018 - :friction 0.97 - :max-influence-dist 49152.0 - :rider-max-gravity -56.88889 - :max-bonk-influence-dist 49152.0 - :rider-bonk-force 49152.0 - :rider-bonk-min 8192.0 - :rider-bonk-max 77824.0 - :normal-board-len 8192.0 - :bridge-end-to-end-len 147456.0 - :rest-state '*ropebridge-36-rest-state* - ) - (new 'static 'ropebridge-tuning - :num-springs 18 - :num-spring-points 19 - :col-mesh-indexes (new 'static 'array uint8 32 - #x3 - #x3 - #x3 - #x3 - #x1 - #x4 - #x4 - #x2 - #x1 - #x4 - #x4 - #x2 - #x3 - #x1 - #x4 - #x4 - #x2 - #x3 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - :view-frustum-radius 98304.0 - :root-prim-radius 98304.0 - :desired-spring-len 4096.0 - :gravity -22.755556 - :spring-coefficient 0.16384 - :spring-mass 0.018 - :friction 0.97 - :max-influence-dist 49152.0 - :rider-max-gravity -56.88889 - :max-bonk-influence-dist 49152.0 - :rider-bonk-force 49152.0 - :rider-bonk-min 8192.0 - :rider-bonk-max 77824.0 - :normal-board-len 8192.0 - :bridge-end-to-end-len 147456.0 - :rest-state '*ropebridge-36-rest-state* - ) - ) - ) + (new 'static + 'inline-array + ropebridge-tuning + 6 + (new 'static + 'ropebridge-tuning + :num-springs 16 + :num-spring-points 17 + :col-mesh-indexes + (new 'static 'array uint8 16 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3 #x3) + :view-frustum-radius 81920.0 + :root-prim-radius 81920.0 + :desired-spring-len 4096.0 + :gravity -22.755556 + :spring-coefficient 0.16384 + :spring-mass 0.018 + :friction 0.97 + :max-influence-dist 49152.0 + :rider-max-gravity -56.88889 + :max-bonk-influence-dist 49152.0 + :rider-bonk-force 49152.0 + :rider-bonk-min 8192.0 + :rider-bonk-max 77824.0 + :normal-board-len 8192.0 + :bridge-end-to-end-len 131072.0 + :rest-state '*ropebridge-32-rest-state*) + (new 'static + 'ropebridge-tuning + :num-springs 18 + :num-spring-points 19 + :col-mesh-indexes + (new 'static + 'array + uint8 + 32 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0) + :view-frustum-radius 98304.0 + :root-prim-radius 98304.0 + :desired-spring-len 4096.0 + :gravity -22.755556 + :spring-coefficient 0.16384 + :spring-mass 0.018 + :friction 0.97 + :max-influence-dist 49152.0 + :rider-max-gravity -56.88889 + :max-bonk-influence-dist 49152.0 + :rider-bonk-force 49152.0 + :rider-bonk-min 8192.0 + :rider-bonk-max 77824.0 + :normal-board-len 8192.0 + :bridge-end-to-end-len 147456.0 + :rest-state '*ropebridge-36-rest-state*) + (new 'static + 'ropebridge-tuning + :num-springs 26 + :num-spring-points 27 + :col-mesh-indexes + (new 'static + 'array + uint8 + 32 + #x3 + #x3 + #x3 + #x3 + #x3 + #x1 + #x4 + #x4 + #x2 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x1 + #x4 + #x4 + #x4 + #x2 + #x3 + #x3 + #x3 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0) + :view-frustum-radius 122880.0 + :root-prim-radius 122880.0 + :desired-spring-len 4096.0 + :gravity -22.755556 + :spring-coefficient 0.16384 + :spring-mass 0.018 + :friction 0.97 + :max-influence-dist 49152.0 + :rider-max-gravity -56.88889 + :max-bonk-influence-dist 49152.0 + :rider-bonk-force 49152.0 + :rider-bonk-min 8192.0 + :rider-bonk-max 77824.0 + :normal-board-len 8192.0 + :bridge-end-to-end-len 212992.0 + :rest-state '*ropebridge-52-rest-state*) + (new 'static + 'ropebridge-tuning + :num-springs 35 + :num-spring-points 36 + :col-mesh-indexes + (new 'static + 'array + uint8 + 48 + #x3 + #x3 + #x3 + #x3 + #x3 + #x1 + #x4 + #x4 + #x2 + #x7 + #x4 + #x4 + #x2 + #x3 + #x3 + #x1 + #x4 + #x4 + #x4 + #x2 + #x3 + #x3 + #x3 + #x6 + #x4 + #x4 + #x5 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x3 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0) + :view-frustum-radius 163840.0 + :root-prim-radius 163840.0 + :desired-spring-len 4096.0 + :gravity -22.755556 + :spring-coefficient 0.16384 + :spring-mass 0.018 + :friction 0.97 + :max-influence-dist 49152.0 + :rider-max-gravity -56.88889 + :max-bonk-influence-dist 49152.0 + :rider-bonk-force 49152.0 + :rider-bonk-min 8192.0 + :rider-bonk-max 77824.0 + :normal-board-len 8192.0 + :bridge-end-to-end-len 286720.0 + :rest-state '*ropebridge-70-rest-state*) + (new 'static + 'ropebridge-tuning + :num-springs 18 + :num-spring-points 19 + :col-mesh-indexes + (new 'static + 'array + uint8 + 32 + #x3 + #x3 + #x3 + #x3 + #x1 + #x4 + #x4 + #x4 + #x6 + #x3 + #x5 + #x4 + #x4 + #x4 + #x2 + #x3 + #x3 + #x3 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0) + :view-frustum-radius 98304.0 + :root-prim-radius 98304.0 + :desired-spring-len 4096.0 + :gravity -22.755556 + :spring-coefficient 0.16384 + :spring-mass 0.018 + :friction 0.97 + :max-influence-dist 49152.0 + :rider-max-gravity -56.88889 + :max-bonk-influence-dist 49152.0 + :rider-bonk-force 49152.0 + :rider-bonk-min 8192.0 + :rider-bonk-max 77824.0 + :normal-board-len 8192.0 + :bridge-end-to-end-len 147456.0 + :rest-state '*ropebridge-36-rest-state*) + (new 'static + 'ropebridge-tuning + :num-springs 18 + :num-spring-points 19 + :col-mesh-indexes + (new 'static + 'array + uint8 + 32 + #x3 + #x3 + #x3 + #x3 + #x1 + #x4 + #x4 + #x2 + #x1 + #x4 + #x4 + #x2 + #x3 + #x1 + #x4 + #x4 + #x2 + #x3 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0) + :view-frustum-radius 98304.0 + :root-prim-radius 98304.0 + :desired-spring-len 4096.0 + :gravity -22.755556 + :spring-coefficient 0.16384 + :spring-mass 0.018 + :friction 0.97 + :max-influence-dist 49152.0 + :rider-max-gravity -56.88889 + :max-bonk-influence-dist 49152.0 + :rider-bonk-force 49152.0 + :rider-bonk-min 8192.0 + :rider-bonk-max 77824.0 + :normal-board-len 8192.0 + :bridge-end-to-end-len 147456.0 + :rest-state '*ropebridge-36-rest-state*))) (deftype ropebridge-spring-point (structure) - ((local-pos vector :inline) - (vel vector :inline) - (extra-force vector :inline) - ) - :pack-me - ) - + ((local-pos vector :inline) + (vel vector :inline) + (extra-force vector :inline)) + :pack-me) (deftype ropebridge (process-drawable) - ((root collide-shape :override) - (subtype uint64) - (subtype-name string) - (agitated-time-stamp time-frame) - (bonk-time-stamp time-frame) - (attack-flop-time-stamp time-frame) - (player-attack-id uint64) - (sleep-dist float) - (do-physics? basic) - (tuning ropebridge-tuning) - (world-matrix matrix :inline) - (inv-world-matrix matrix :inline) - (extra-trans vector :inline) - (spring-point ropebridge-spring-point 36 :inline) - ) + ((root collide-shape :override) + (subtype uint64) + (subtype-name string) + (agitated-time-stamp time-frame) + (bonk-time-stamp time-frame) + (attack-flop-time-stamp time-frame) + (player-attack-id uint64) + (sleep-dist float) + (do-physics? basic) + (tuning ropebridge-tuning) + (world-matrix matrix :inline) + (inv-world-matrix matrix :inline) + (extra-trans vector :inline) + (spring-point ropebridge-spring-point 36 :inline)) (:methods - (set-vel-from-impact (_type_ uint vector int float) none) - (set-vel-from-riders (_type_) none) - (set-vel-from-rider (_type_ uint vector int) none) - (clear-spring-forces (_type_) none) - (debug-draw (_type_) none) - (set-to-rest-state (_type_) none) - (add-collision-meshes (_type_) none) - (do-integration (_type_) none) - (ropebridge-method-28 (_type_) none) - ) + (set-vel-from-impact (_type_ uint vector int float) none) + (set-vel-from-riders (_type_) none) + (set-vel-from-rider (_type_ uint vector int) none) + (clear-spring-forces (_type_) none) + (debug-draw (_type_) none) + (set-to-rest-state (_type_) none) + (add-collision-meshes (_type_) none) + (do-integration (_type_) none) + (ropebridge-method-28 (_type_) none)) (:states - ropebridge-idle - ) - ) - - -(defskelgroup *ropebridge-32-sg* ropebridge-32 ropebridge-32-lod0-jg ropebridge-32-idle-ja - ((ropebridge-32-lod0-mg (meters 20)) (ropebridge-32-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :longest-edge (meters 4) - ) - -(defskelgroup *snow-bridge-36-sg* snow-bridge-36 snow-bridge-36-lod0-jg snow-bridge-36-idle-ja - ((snow-bridge-36-lod0-mg (meters 20)) (snow-bridge-36-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :longest-edge (meters 3.8) - ) - -(defskelgroup *ropebridge-52-sg* ropebridge-52 ropebridge-52-lod0-jg ropebridge-52-idle-ja - ((ropebridge-52-lod0-mg (meters 20)) (ropebridge-52-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :longest-edge (meters 3.6) - ) - -(defskelgroup *ropebridge-70-sg* ropebridge-70 ropebridge-70-lod0-jg ropebridge-70-idle-ja - ((ropebridge-70-lod0-mg (meters 20)) (ropebridge-70-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :longest-edge (meters 3.6) - ) - -(defskelgroup *ropebridge-36-sg* ropebridge-36 ropebridge-36-lod0-jg ropebridge-36-idle-ja - ((ropebridge-36-lod0-mg (meters 20)) (ropebridge-36-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :longest-edge (meters 4) - ) - -(defskelgroup *vil3-bridge-36-sg* vil3-bridge-36 vil3-bridge-36-lod0-jg vil3-bridge-36-idle-ja - ((vil3-bridge-36-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :longest-edge (meters 3.6) - ) + ropebridge-idle)) + +(defskelgroup *ropebridge-32-sg* + ropebridge-32 + ropebridge-32-lod0-jg + ropebridge-32-idle-ja + ((ropebridge-32-lod0-mg (meters 20)) (ropebridge-32-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 4)) + +(defskelgroup *snow-bridge-36-sg* + snow-bridge-36 + snow-bridge-36-lod0-jg + snow-bridge-36-idle-ja + ((snow-bridge-36-lod0-mg (meters 20)) (snow-bridge-36-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 3.8)) + +(defskelgroup *ropebridge-52-sg* + ropebridge-52 + ropebridge-52-lod0-jg + ropebridge-52-idle-ja + ((ropebridge-52-lod0-mg (meters 20)) (ropebridge-52-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 3.6)) + +(defskelgroup *ropebridge-70-sg* + ropebridge-70 + ropebridge-70-lod0-jg + ropebridge-70-idle-ja + ((ropebridge-70-lod0-mg (meters 20)) (ropebridge-70-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 3.6)) + +(defskelgroup *ropebridge-36-sg* + ropebridge-36 + ropebridge-36-lod0-jg + ropebridge-36-idle-ja + ((ropebridge-36-lod0-mg (meters 20)) (ropebridge-36-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 4)) + +(defskelgroup *vil3-bridge-36-sg* + vil3-bridge-36 + vil3-bridge-36-lod0-jg + vil3-bridge-36-idle-ja + ((vil3-bridge-36-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 3.6)) (defstate ropebridge-idle (ropebridge) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (let ((f0-0 -1.0)) - (cond - ((= message 'bonk) - (when (time-elapsed? (-> self bonk-time-stamp) (seconds 0.2)) - (set-time! (-> self bonk-time-stamp)) - (set! f0-0 (the-as float (-> block param 1))) - (if (>= f0-0 (-> self tuning rider-bonk-max)) - (set! f0-0 (-> self tuning rider-bonk-max)) - ) - ) - ) - ((and (= message 'attack) (= (-> block param 1) 'flop)) - (let ((v1-17 (-> block param 2))) - (when (!= v1-17 (-> self player-attack-id)) - (set! (-> self player-attack-id) v1-17) - (set-time! (-> self attack-flop-time-stamp)) - (set! f0-0 (* 1.1 (-> self tuning rider-bonk-max))) - ) - ) - ) - ) - (when (and (>= f0-0 (-> self tuning rider-bonk-min)) (-> block param 0)) - (set-time! (-> self agitated-time-stamp)) - (let* ((f30-0 (/ (* (- f0-0 (-> self tuning rider-bonk-min)) (-> self tuning rider-bonk-force)) - (- (-> self tuning rider-bonk-max) (-> self tuning rider-bonk-min)) - ) - ) - (gp-0 (the-as object (-> block param 0))) - (a0-7 (-> (the-as touching-shapes-entry gp-0) head)) - (s4-0 (-> self root)) - (s5-0 (get-touched-prim a0-7 s4-0 (the-as touching-shapes-entry gp-0))) - (v1-33 ((method-of-type touching-shapes-entry get-touched-shape) (the-as touching-shapes-entry gp-0) s4-0)) - (gp-1 (new 'stack-no-clear 'vector)) - ) - (vector-matrix*! gp-1 (-> v1-33 trans) (-> self inv-world-matrix)) - (let ((s5-1 (-> s5-0 prim-id))) - (let ((v1-37 (-> self spring-point s5-1))) - (new 'stack-no-clear 'vector) - (&+ v1-37 48) - ) - (set-vel-from-impact self s5-1 gp-1 -1 f30-0) - (set-vel-from-impact self (+ s5-1 1) gp-1 1 f30-0) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (suspend) - (detect-riders! (-> self root)) - (when (-> self do-physics?) - (clear-spring-forces self) - (set-vel-from-riders self) - - ;; original - ;; (do-integration self) - - ;; og:preserve-this modified to try to fix crazy bridges - ;; instead of doing one big step when lagging, do multiple small steps. - ;; temporarily change time ratio to 1.0 (like we are 60 fps) - (let ((old-time-ratio (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - ;; then do multiple steps to simulate the same amount of time, but without longer timesteps - (dotimes (i old-time-ratio) - (do-integration self) - ) - (set-time-ratios *display* (the float old-time-ratio)) - ) - ) - ) - ) - :post (behavior () - (ja-post) - (let ((gp-0 (-> self root))) - (update-transforms! gp-0) - (when (-> self do-physics?) - (pull-riders! gp-0) - (do-push-aways! gp-0) - ) - ) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (let ((f0-0 -1.0)) + (cond + ((= message 'bonk) + (when (time-elapsed? (-> self bonk-time-stamp) (seconds 0.2)) + (set-time! (-> self bonk-time-stamp)) + (set! f0-0 (the-as float (-> block param 1))) + (if (>= f0-0 (-> self tuning rider-bonk-max)) (set! f0-0 (-> self tuning rider-bonk-max))))) + ((and (= message 'attack) (= (-> block param 1) 'flop)) + (let ((v1-17 (-> block param 2))) + (when (!= v1-17 (-> self player-attack-id)) + (set! (-> self player-attack-id) v1-17) + (set-time! (-> self attack-flop-time-stamp)) + (set! f0-0 (* 1.1 (-> self tuning rider-bonk-max))))))) + (when (and (>= f0-0 (-> self tuning rider-bonk-min)) (-> block param 0)) + (set-time! (-> self agitated-time-stamp)) + (let* ((f30-0 (/ (* (- f0-0 (-> self tuning rider-bonk-min)) (-> self tuning rider-bonk-force)) + (- (-> self tuning rider-bonk-max) (-> self tuning rider-bonk-min)))) + (gp-0 (the-as object (-> block param 0))) + (a0-7 (-> (the-as touching-shapes-entry gp-0) head)) + (s4-0 (-> self root)) + (s5-0 (get-touched-prim a0-7 s4-0 (the-as touching-shapes-entry gp-0))) + (v1-33 ((method-of-type touching-shapes-entry get-touched-shape) (the-as touching-shapes-entry gp-0) s4-0)) + (gp-1 (new 'stack-no-clear 'vector))) + (vector-matrix*! gp-1 (-> v1-33 trans) (-> self inv-world-matrix)) + (let ((s5-1 (-> s5-0 prim-id))) + (let ((v1-37 (-> self spring-point s5-1))) (new 'stack-no-clear 'vector) (&+ v1-37 48)) + (set-vel-from-impact self s5-1 gp-1 -1 f30-0) + (set-vel-from-impact self (+ s5-1 1) gp-1 1 f30-0)))))) + :code + (behavior () + (loop + (suspend) + (detect-riders! (-> self root)) + (when (-> self do-physics?) + (clear-spring-forces self) + (set-vel-from-riders self) + ;; original + ;; (do-integration self) + ;; og:preserve-this modified to try to fix crazy bridges + ;; instead of doing one big step when lagging, do multiple small steps. + ;; temporarily change time ratio to 1.0 (like we are 60 fps) + (let ((old-time-ratio (the int (-> *display* time-ratio)))) + (set-time-ratios *display* 1.0) + ;; then do multiple steps to simulate the same amount of time, but without longer timesteps + (dotimes (i old-time-ratio) + (do-integration self)) + (set-time-ratios *display* (the float old-time-ratio)))))) + :post + (behavior () + (ja-post) + (let ((gp-0 (-> self root))) + (update-transforms! gp-0) + (when (-> self do-physics?) + (pull-riders! gp-0) + (do-push-aways! gp-0))) + 0)) ;; WARN: Function (method 20 ropebridge) has a return type of none, but the expression builder found a return statement. (defmethod set-vel-from-impact ((this ropebridge) (arg0 uint) (arg1 vector) (arg2 int) (arg3 float)) (loop (let ((f0-2 (fabs (- (-> arg1 z) (-> this spring-point (the-as int arg0) local-pos z))))) - (if (< (-> this tuning max-bonk-influence-dist) f0-2) - (return #f) - ) + (if (< (-> this tuning max-bonk-influence-dist) f0-2) (return #f)) (let* ((f0-4 (/ (* 8.0 f0-2) (-> this tuning max-bonk-influence-dist))) (f0-5 (+ 1.0 f0-4)) - (f0-6 (/ 1.0 f0-5)) - ) - (set! (-> this spring-point (the-as int arg0) vel y) - (- (-> this spring-point (the-as int arg0) vel y) (* f0-6 arg3)) - ) - ) - ) + (f0-6 (/ 1.0 f0-5))) + (set! (-> this spring-point (the-as int arg0) vel y) (- (-> this spring-point (the-as int arg0) vel y) (* f0-6 arg3))))) (set! arg0 (+ arg0 arg2)) - (if (or (< (the-as int arg0) 0) (>= (the-as int arg0) (-> this tuning num-spring-points))) - (return #f) - ) - ) - (none) - ) + (if (or (< (the-as int arg0) 0) (>= (the-as int arg0) (-> this tuning num-spring-points))) (return #f))) + (none)) (defmethod clear-spring-forces ((this ropebridge)) (let ((v1-0 (the-as ropebridge-spring-point (-> this spring-point)))) @@ -652,11 +635,8 @@ (set! (-> v1-0 extra-force quad) (the-as uint128 0)) (nop!) (nop!) - (&+! v1-0 48) - ) - ) - (none) - ) + (&+! v1-0 48))) + (none)) (defmethod set-vel-from-riders ((this ropebridge)) (let ((v1-1 (-> this root riders))) @@ -666,50 +646,27 @@ (let ((v1-3 (handle->process (-> s5-0 rider-handle)))) (when v1-3 (let ((v1-5 (-> (the-as process-drawable v1-3) root)) - (s2-0 (-> s5-0 sticky-prim)) - ) + (s2-0 (-> s5-0 sticky-prim))) (when s2-0 (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-matrix*! s3-0 (-> v1-5 trans) (-> this inv-world-matrix)) - (let ((s2-1 (-> s2-0 prim-id))) - (set-vel-from-rider this s2-1 s3-0 -1) - (set-vel-from-rider this (+ s2-1 1) s3-0 1) - ) - ) - (set-time! (-> this agitated-time-stamp)) - ) - ) - ) - ) - (&+! s5-0 32) - ) - ) - ) - ) - (none) - ) + (let ((s2-1 (-> s2-0 prim-id))) (set-vel-from-rider this s2-1 s3-0 -1) (set-vel-from-rider this (+ s2-1 1) s3-0 1))) + (set-time! (-> this agitated-time-stamp)))))) + (&+! s5-0 32))))) + (none)) ;; WARN: Function (method 22 ropebridge) has a return type of none, but the expression builder found a return statement. (defmethod set-vel-from-rider ((this ropebridge) (arg0 uint) (arg1 vector) (arg2 int)) (loop (let ((f0-0 (vector-vector-distance arg1 (the-as vector (-> this spring-point (the-as int arg0)))))) - (if (< (-> this tuning max-influence-dist) f0-0) - (return #f) - ) + (if (< (-> this tuning max-influence-dist) f0-0) (return #f)) (let* ((f0-2 (/ (* 8.0 f0-0) (-> this tuning max-influence-dist))) (f0-3 (+ 1.0 f0-2)) - (f0-4 (/ 1.0 f0-3)) - ) - (+! (-> this spring-point (the-as int arg0) extra-force y) (* f0-4 (-> this tuning rider-max-gravity))) - ) - ) + (f0-4 (/ 1.0 f0-3))) + (+! (-> this spring-point (the-as int arg0) extra-force y) (* f0-4 (-> this tuning rider-max-gravity))))) (+! arg0 arg2) - (if (or (< (the-as int arg0) 0) (>= (the-as int arg0) (-> this tuning num-spring-points))) - (return #f) - ) - ) - (none) - ) + (if (or (< (the-as int arg0) 0) (>= (the-as int arg0) (-> this tuning num-spring-points))) (return #f))) + (none)) (defmethod do-integration ((this ropebridge)) (local-vars (a2-1 float) (a3-0 float)) @@ -729,31 +686,23 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) - (let ((v1-1 (-> this tuning gravity))) - (.mov vf9 v1-1) - ) + (let ((v1-1 (-> this tuning gravity))) (.mov vf9 v1-1)) (.add.x.vf vf9 vf0 vf9 :mask #b10) (.mov.vf vf9 vf0 :mask #b1101) 0 - (let ((v1-4 (-> this tuning friction))) - (.mov vf12 v1-4) - ) + (let ((v1-4 (-> this tuning friction))) (.mov vf12 v1-4)) (.add.x.vf vf12 vf0 vf12 :mask #b10) (.add.x.vf vf12 vf0 vf12 :mask #b100) 0 - (let ((v1-7 (/ 1.0 (-> this tuning spring-mass)))) - (.mov vf14 v1-7) - ) + (let ((v1-7 (/ 1.0 (-> this tuning spring-mass)))) (.mov vf14 v1-7)) (.add.x.vf vf14 vf0 vf14 :mask #b10) (.add.x.vf vf14 vf0 vf14 :mask #b100) 0 (let ((v1-11 (+ (-> this tuning num-spring-points) -2))) (let* ((a2-0 (-> this spring-point)) - (a1-1 (-> a2-0 1)) - ) + (a1-1 (-> a2-0 1))) (.lvf vf2 (&-> a2-0 0 local-pos quad)) (label cfg-1) (.lvf vf1 (&-> a1-1 extra-force quad)) @@ -769,14 +718,10 @@ (.div.vf Q vf0 vf7 :fsf #b11 :ftf #b0) (.wait.vf) (.mul.vf vf5 vf5 Q) - (let ((a2-5 (* f0-5 (-> this tuning spring-coefficient)))) - (.mov vf10 a2-5) - ) + (let ((a2-5 (* f0-5 (-> this tuning spring-coefficient)))) (.mov vf10 a2-5)) (.mul.x.vf vf10 vf5 vf10 :mask #b111) (.add.vf vf1 vf1 vf10 :mask #b111) - 0 - ) - ) + 0)) (let ((a2-8 (&+ a1-1 48))) (.lvf vf4 (&-> a2-8 local-pos quad)) (.sub.vf vf6 vf4 vf3) @@ -789,30 +734,21 @@ (.div.vf Q vf0 vf8 :fsf #b11 :ftf #b0) (.wait.vf) (.mul.vf vf6 vf6 Q) - (let ((a3-4 (* f0-8 (-> this tuning spring-coefficient)))) - (.mov vf10 a3-4) - ) + (let ((a3-4 (* f0-8 (-> this tuning spring-coefficient)))) (.mov vf10 a3-4)) (.mul.x.vf vf10 vf6 vf10 :mask #b111) (.add.vf vf1 vf1 vf10 :mask #b111) - 0 - ) - ) + 0)) (.mul.vf vf15 vf1 vf14 :mask #b111) (.lvf vf11 (&-> a1-1 vel quad)) (.add.vf vf11 vf11 vf15 :mask #b111) (.mul.vf vf11 vf11 vf12 :mask #b111) (.svf (&-> a1-1 vel quad) vf11) - (set! a1-1 a2-8) - ) - ) + (set! a1-1 a2-8))) (.mov.vf vf2 vf3) (.mov.vf vf3 vf4) (+! v1-11 -1) - (b! (> v1-11 0) cfg-1 :delay (nop!)) - ) - (let ((v1-13 (seconds-per-frame))) - (.mov vf13 v1-13) - ) + (b! (> v1-11 0) cfg-1 :delay (nop!))) + (let ((v1-13 (seconds-per-frame))) (.mov vf13 v1-13)) (.add.x.vf vf13 vf0 vf13 :mask #b10) (.add.x.vf vf13 vf0 vf13 :mask #b100) 0 @@ -824,42 +760,32 @@ (.mul.vf vf11 vf11 vf13 :mask #b111) (.add.vf vf3 vf3 vf11 :mask #b111) (.svf (&-> (the-as (inline-array vector) a0-1) 0 quad) vf3) - (set! a0-1 (-> (the-as (inline-array vector) a0-1) 3)) - ) + (set! a0-1 (-> (the-as (inline-array vector) a0-1) 3))) (+! v1-17 -1) - (b! (> v1-17 0) cfg-7 :delay (nop!)) - ) + (b! (> v1-17 0) cfg-7 :delay (nop!))) 0 - (none) - ) - ) + (none))) (defmethod debug-draw ((this ropebridge)) (let ((gp-0 (-> this node-list data 0 bone transform)) (s5-0 (the-as ropebridge-spring-point (-> this spring-point))) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (countdown (s3-0 (-> this tuning num-spring-points)) (vector-matrix*! s4-0 (-> s5-0 local-pos) gp-0) (add-debug-sphere #t (bucket-id debug) s4-0 2048.0 (new 'static 'rgba :r #xff :g #xff :b #xff :a #x40)) - (&+! s5-0 48) - ) - ) - (none) - ) + (&+! s5-0 48))) + (none)) (defmethod set-to-rest-state ((this ropebridge)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((a1-0 (the-as structure (-> this tuning rest-state)))) (cond ((the-as symbol a1-0) (let ((v1-1 (the-as ropebridge-spring-point (-> this spring-point))) - (a1-1 (the-as vector (-> (the-as vector a1-0) x))) - ) + (a1-1 (the-as vector (-> (the-as vector a1-0) x)))) (.svf (&-> v1-1 local-pos quad) vf0) (.svf (&-> v1-1 vel quad) vf0) (countdown (a0-3 (+ (-> this tuning num-spring-points) -1)) @@ -870,74 +796,50 @@ (set! (-> v1-1 local-pos z) (-> a1-1 y)) (set! (-> v1-1 vel y) (-> a1-1 z)) (set! (-> v1-1 vel z) (-> a1-1 w)) - (&+! a1-1 16) - ) - ) - ) + (&+! a1-1 16)))) (else - (let ((a1-2 8192.0)) - (.mov.vf vf1 vf0) - (let ((v1-3 (the-as ropebridge-spring-point (-> this spring-point)))) - (.mov vf2 a1-2) - (.add.x.vf vf2 vf0 vf2) - (.mov.vf vf2 vf0 :mask #b1011) - (countdown (a0-5 (-> this tuning num-spring-points)) - (.svf (&-> v1-3 local-pos quad) vf1) - (.svf (&-> v1-3 vel quad) vf0) - (.add.vf vf1 vf1 vf2 :mask #b111) - (&+! v1-3 48) - ) - ) - ) - ) - ) - ) - (none) - ) - ) + (let ((a1-2 8192.0)) + (.mov.vf vf1 vf0) + (let ((v1-3 (the-as ropebridge-spring-point (-> this spring-point)))) + (.mov vf2 a1-2) + (.add.x.vf vf2 vf0 vf2) + (.mov.vf vf2 vf0 :mask #b1011) + (countdown (a0-5 (-> this tuning num-spring-points)) + (.svf (&-> v1-3 local-pos quad) vf1) + (.svf (&-> v1-3 vel quad) vf0) + (.add.vf vf1 vf1 vf2 :mask #b111) + (&+! v1-3 48))))))) + (none))) (defun ropebridge-joint-callback ((arg0 ropebridge)) (let ((s5-0 (-> arg0 node-list data 3 bone transform))) (matrix-identity! s5-0) - (set-vector! (-> s5-0 vector 3) 0.0 0.0 (- (-> arg0 tuning normal-board-len)) 1.0) - ) + (set-vector! (-> s5-0 vector 3) 0.0 0.0 (- (-> arg0 tuning normal-board-len)) 1.0)) (let* ((s5-1 (-> arg0 spring-point)) (s3-0 (the-as object s5-1)) - (s4-0 0) - ) + (s4-0 0)) (while (< s4-0 (-> arg0 tuning num-springs)) (set! s3-0 (&+ (the-as ropebridge-spring-point s3-0) 48)) (let ((v1-4 (new 'stack-no-clear 'vector))) (vector-! v1-4 (-> (the-as ropebridge-spring-point s3-0) local-pos) (the-as vector (-> s5-1 0))) (let ((f0-8 (- (atan (-> v1-4 y) (-> v1-4 z)))) - (s2-0 (-> arg0 node-list data (+ s4-0 4) bone transform)) - ) + (s2-0 (-> arg0 node-list data (+ s4-0 4) bone transform))) (matrix-rotate-x! s2-0 f0-8) - (set! (-> s2-0 vector 3 quad) (-> s5-1 0 local-pos quad)) - ) - ) + (set! (-> s2-0 vector 3 quad) (-> s5-1 0 local-pos quad)))) (set! s5-1 (the-as (inline-array ropebridge-spring-point) (the-as ropebridge-spring-point s3-0))) - (+! s4-0 1) - ) + (+! s4-0 1)) (let ((s4-1 (-> arg0 node-list data (+ s4-0 4) bone transform))) (matrix-identity! s4-1) - (set! (-> s4-1 vector 3 quad) (-> s5-1 0 local-pos quad)) - ) - ) + (set! (-> s4-1 vector 3 quad) (-> s5-1 0 local-pos quad)))) (dotimes (s5-2 (+ (-> arg0 tuning num-springs) 2)) - (let ((a1-3 (-> arg0 node-list data (+ s5-2 3) bone transform))) - (matrix*! a1-3 a1-3 (-> arg0 world-matrix)) - ) - ) + (let ((a1-3 (-> arg0 node-list data (+ s5-2 3) bone transform))) (matrix*! a1-3 a1-3 (-> arg0 world-matrix)))) 0 - (none) - ) + (none)) (defmethod add-collision-meshes ((this ropebridge)) (let* ((s5-0 (-> this root)) (s3-0 (-> this tuning)) - (s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint (-> s3-0 num-springs)) 0)) - ) + (s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint (-> s3-0 num-springs)) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 (-> s3-0 root-prim-radius)) @@ -947,72 +849,42 @@ (let ((s3-1 (-> this tuning col-mesh-indexes))) (dotimes (s2-0 (-> this tuning num-springs)) (let* ((a3-1 (-> s3-1 s2-0)) - (a1-3 (new 'process 'collide-shape-prim-mesh s5-0 a3-1 (the-as uint s2-0))) - ) + (a1-3 (new 'process 'collide-shape-prim-mesh s5-0 a3-1 (the-as uint s2-0)))) (set! (-> a1-3 prim-core action) (collide-action solid rider-plat-sticky)) (set! (-> a1-3 prim-core collide-as) (collide-kind ground-object)) (set! (-> a1-3 collide-with) (collide-kind target)) (set! (-> a1-3 prim-core offense) (collide-offense indestructible)) (set-vector! (-> a1-3 local-sphere) 0.0 6144.0 4096.0 18022.4) (set! (-> a1-3 transform-index) (+ s2-0 4)) - (append-prim s4-0 a1-3) - ) - ) - ) - ) - (none) - ) + (append-prim s4-0 a1-3))))) + (none)) (defmethod run-logic? ((this ropebridge)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (not (time-elapsed? (-> this agitated-time-stamp) (seconds 5))) (or (>= (-> this sleep-dist) (vector-vector-distance (-> this root trans) (math-camera-pos))) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) (defmethod ropebridge-method-28 ((this ropebridge)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this ropebridge) (arg0 entity-actor)) (let ((s4-0 (res-lump-struct (-> this entity) 'art-name structure))) - (if (not s4-0) - (set! s4-0 "ropebridge-32") - ) - (if (= (-> (the-as symbol s4-0) type) symbol) - (set! s4-0 (symbol->string (the-as symbol s4-0))) - ) + (if (not s4-0) (set! s4-0 "ropebridge-32")) + (if (= (-> (the-as symbol s4-0) type) symbol) (set! s4-0 (symbol->string (the-as symbol s4-0)))) (set! (-> this subtype-name) (the-as string s4-0)) - (set! (-> this subtype) (the-as uint (cond - ((string= (the-as string s4-0) "ropebridge-32") - 0 - ) - ((string= (the-as string s4-0) "ropebridge-36") - 1 - ) - ((string= (the-as string s4-0) "ropebridge-52") - 2 - ) - ((string= (the-as string s4-0) "ropebridge-70") - 3 - ) - ((string= (the-as string s4-0) "snow-bridge-36") - 4 - ) - ((string= (the-as string s4-0) "vil3-bridge-36") - 5 - ) - (else - 0 - ) - ) - ) - ) - ) + (set! (-> this subtype) + (the-as uint + (cond + ((string= (the-as string s4-0) "ropebridge-32") 0) + ((string= (the-as string s4-0) "ropebridge-36") 1) + ((string= (the-as string s4-0) "ropebridge-52") 2) + ((string= (the-as string s4-0) "ropebridge-70") 3) + ((string= (the-as string s4-0) "snow-bridge-36") 4) + ((string= (the-as string s4-0) "vil3-bridge-36") 5) + (else 0))))) (set! (-> this tuning) (-> *ropebridge-tunings* (the-as int (-> this subtype)))) (set-time! (-> this agitated-time-stamp)) (set-time! (-> this bonk-time-stamp)) @@ -1021,8 +893,7 @@ (set! (-> this do-physics?) #t) (let ((a0-13 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) (set! (-> this root) a0-13) - (alloc-riders a0-13 3) - ) + (alloc-riders a0-13 3)) (add-collision-meshes this) (process-drawable-from-entity! this arg0) (initialize-skeleton-by-name this (-> this subtype-name) '()) @@ -1031,17 +902,10 @@ (set! (-> this draw bounds w) (-> v1-29 view-frustum-radius)) (set! (-> this sleep-dist) (+ 40960.0 (* 0.5 (-> v1-29 bridge-end-to-end-len)))) (if (or (< 35 (-> v1-29 num-springs)) (< 36 (-> v1-29 num-spring-points))) - (format 0 "ERROR: ##########~%Exceeded max # of springs in ropebridge! Stomping memory!~%##########~%") - ) - ) + (format 0 "ERROR: ##########~%Exceeded max # of springs in ropebridge! Stomping memory!~%##########~%"))) (set! (-> this skel postbind-function) ropebridge-joint-callback) - (matrix<-transformq+trans! - (-> this world-matrix) - (the-as transformq (-> this root trans)) - (-> this extra-trans) - ) + (matrix<-transformq+trans! (-> this world-matrix) (the-as transformq (-> this root trans)) (-> this extra-trans)) (matrix-4x4-inverse! (-> this inv-world-matrix) (-> this world-matrix)) (set-to-rest-state this) (go ropebridge-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/common-obs/sharkey.gc b/goal_src/jak1/engine/common-obs/sharkey.gc index d64b3026cb..8ca9a7ce87 100644 --- a/goal_src/jak1/engine/common-obs/sharkey.gc +++ b/goal_src/jak1/engine/common-obs/sharkey.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/nav-enemy.gc") (require "engine/common-obs/water.gc") -;; name: sharkey.gc -;; name in dgo: sharkey -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (defpartgroup group-sharkey-splash @@ -17,81 +12,70 @@ :linger-duration (seconds 2.6) :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) - (sp-item 125 :period (seconds 3) :length (seconds 0.05)) - (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - ) - ) + :parts + ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) + (sp-item 125 :period (seconds 3) :length (seconds 0.05)) + (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)))) (deftype sharkey (nav-enemy) - ((dir vector :inline) - (spawn-point vector :inline) - (scale float) - (anim-speed float) - (y-max meters) - (y-min meters) - (attack-time float) - (player-water-time time-frame) - (player-in-water basic) - (last-y float) - (spawn-distance meters) - (chase-speed meters) - (y-speed meters) - (sound-id sound-id) - (enable-patrol basic) - ) - ) - + ((dir vector :inline) + (spawn-point vector :inline) + (scale float) + (anim-speed float) + (y-max meters) + (y-min meters) + (attack-time float) + (player-water-time time-frame) + (player-in-water basic) + (last-y float) + (spawn-distance meters) + (chase-speed meters) + (y-speed meters) + (sound-id sound-id) + (enable-patrol basic))) -(defskelgroup *sharkey-sg* sharkey sharkey-lod0-jg sharkey-idle-ja - ((sharkey-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 6) - ) +(defskelgroup *sharkey-sg* + sharkey + sharkey-lod0-jg + sharkey-idle-ja + ((sharkey-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 6)) (defmethod touch-handler ((this sharkey) (arg0 process) (arg1 event-message-block)) - #t - ) + #t) (defmethod attack-handler ((this sharkey) (arg0 process) (arg1 event-message-block)) - #t - ) + #t) nav-enemy-default-event-handler (defmethod run-logic? ((this sharkey)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (or (>= (+ (-> *ACTOR-bank* pause-dist) (-> this collide-info pause-adjust-distance)) - (vector-vector-distance (-> this collide-info trans) (math-camera-pos)) - ) + (vector-vector-distance (-> this collide-info trans) (math-camera-pos))) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) (defmethod nav-enemy-method-40 ((this sharkey)) (nav-control-method-11 (-> this nav) (-> this nav target-pos)) (let* ((f0-0 (vector-vector-xz-distance (-> this collide-info trans) (-> this nav target-pos))) - (f30-0 (/ (- (fmin (-> this y-max) (-> this nav target-pos y)) (-> this collide-info trans y)) f0-0)) - ) - (set! (-> this nav travel y) (* 4.0 (vector-length (-> this nav travel)) f30-0)) - ) + (f30-0 (/ (- (fmin (-> this y-max) (-> this nav target-pos y)) (-> this collide-info trans y)) f0-0))) + (set! (-> this nav travel y) (* 4.0 (vector-length (-> this nav travel)) f30-0))) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-37 ((this sharkey)) (let ((s5-0 (new 'stack-no-clear 'vector))) @@ -99,86 +83,57 @@ nav-enemy-default-event-handler (vector-normalize-copy! s5-0 (-> this nav travel) 1.0) (vector-deg-seek (-> this dir) (-> this dir) s5-0 (* 65536.0 (seconds-per-frame))) (vector-normalize! (-> this dir) 1.0) - (forward-up->quaternion (-> this collide-info quat) (-> this dir) *up-vector*) - ) - ) + (forward-up->quaternion (-> this collide-info quat) (-> this dir) *up-vector*))) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-41 ((this sharkey)) (let* ((f0-1 (- (-> this target-speed) (-> this momentum-speed))) - (f1-3 (fmin (* (-> this acceleration) (seconds-per-frame)) (fabs f0-1))) - ) - (if (< f0-1 0.0) - (set! (-> this momentum-speed) (- (-> this momentum-speed) f1-3)) - (+! (-> this momentum-speed) f1-3) - ) - ) - (let ((f0-9 (fmin - (* (-> this speed-scale) (-> this momentum-speed)) - (* (vector-length (-> this nav travel)) (-> *display* frames-per-second)) - ) - ) - ) - (vector-normalize-copy! (-> this collide-info transv) (-> this nav travel) f0-9) - ) + (f1-3 (fmin (* (-> this acceleration) (seconds-per-frame)) (fabs f0-1)))) + (if (< f0-1 0.0) (set! (-> this momentum-speed) (- (-> this momentum-speed) f1-3)) (+! (-> this momentum-speed) f1-3))) + (let ((f0-9 (fmin (* (-> this speed-scale) (-> this momentum-speed)) + (* (vector-length (-> this nav travel)) (-> *display* frames-per-second))))) + (vector-normalize-copy! (-> this collide-info transv) (-> this nav travel) f0-9)) 0 - (none) - ) + (none)) (defmethod common-post ((this sharkey)) (let ((f30-0 (-> this water height)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (let* ((f3-0 (- -36864.0 (-> this collide-info trans y))) - (f0-2 (fmax 0.0 (fmin 1.0 (- 1.0 (* 0.00008138021 f3-0))))) - ) - (set-vector! (-> this draw color-mult) f0-2 f0-2 f0-2 1.0) - ) + (f0-2 (fmax 0.0 (fmin 1.0 (- 1.0 (* 0.00008138021 f3-0)))))) + (set-vector! (-> this draw color-mult) f0-2 f0-2 f0-2 1.0)) (water-control-method-10 (-> this water)) (let ((f28-0 (-> this collide-info trans y))) (when (or (and (< f30-0 f28-0) (>= f30-0 (-> this last-y))) (and (>= f30-0 f28-0) (< f30-0 (-> this last-y)))) (set! (-> s5-0 quad) (-> this collide-info trans quad)) (set! (-> s5-0 y) f30-0) - (create-splash (-> this water) 1.0 s5-0 1 (-> this collide-info transv)) - ) - (set! (-> this last-y) f28-0) - ) - ) + (create-splash (-> this water) 1.0 s5-0 1 (-> this collide-info transv))) + (set! (-> this last-y) f28-0))) (call-parent-method this) 0 - (none) - ) + (none)) (defbehavior sharkey-notice-player? sharkey () (if *target* - (and (< (- (-> *target* control trans y) (-> self y-max)) 0.0) - (let ((gp-0 'racer)) - (!= gp-0 (send-event *target* 'query 'mode)) - ) - (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)) - ) - ) - ) + (and (< (- (-> *target* control trans y) (-> self y-max)) 0.0) + (let ((gp-0 'racer)) (!= gp-0 (send-event *target* 'query 'mode))) + (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))))) (defun sharkey-get-player-position ((arg0 vector)) (set! (-> arg0 quad) (-> (target-pos 5) quad)) 0 - (none) - ) + (none)) (defbehavior sharkey-reset-position sharkey () (set! (-> self collide-info trans quad) (-> self entity extra trans quad)) 0 - (none) - ) + (none)) (defbehavior sharkey-move-to-attack-position sharkey () (let ((s5-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (let ((s4-0 (-> *target* control trans))) (let ((f30-0 4096000.0)) (set! (-> s3-0 quad) (-> self entity extra trans quad)) @@ -188,437 +143,346 @@ nav-enemy-default-event-handler (let ((f0-2 (vector-vector-xz-distance s4-0 s3-0))) (when (< f0-2 f30-0) (set! f30-0 f0-2) - (set! (-> s5-0 quad) (-> s3-0 quad)) - ) - ) - ) - ) + (set! (-> s5-0 quad) (-> s3-0 quad)))))) (vector-! (-> self dir) s4-0 s5-0) (vector-normalize! (-> self dir) 1.0) - (vector+*! gp-0 s4-0 (-> self dir) (- (-> self spawn-distance))) - ) + (vector+*! gp-0 s4-0 (-> self dir) (- (-> self spawn-distance)))) (project-onto-nav-mesh (-> self nav) gp-0 gp-0) (set! (-> gp-0 y) (-> self y-min)) - (set! (-> self spawn-point quad) (-> gp-0 quad)) - ) + (set! (-> self spawn-point quad) (-> gp-0 quad))) (set! (-> self collide-info trans quad) (-> self spawn-point quad)) (forward-up->quaternion (-> self collide-info quat) (-> self dir) *up-vector*) - (set! (-> self momentum-speed) 0.0) - ) + (set! (-> self momentum-speed) 0.0)) (defstate nav-enemy-idle (sharkey) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (cond - ((-> self enable-patrol) - (if (and (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - ((sharkey-notice-player?) - (when (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf0))) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)) - (set-time! (-> self notice-time)) - ) - (let ((a0-4 (nav-control-method-16 (-> self nav) (-> *target* control trans)))) - (when (or (and a0-4 (logtest? (-> a0-4 pat) 2)) (and (logtest? (-> self draw status) (draw-status hidden)) - (time-elapsed? (-> self notice-time) (-> self reaction-time)) - ) - ) - (sharkey-move-to-attack-position) - (set! (-> self player-in-water) #t) - (go-virtual nav-enemy-chase) - ) - ) - ) - (else - (if (time-elapsed? (-> self notice-time) (seconds 10)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)) - ) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (until (= (-> self collide-info trans y) (-> self y-min)) - (ja :num! (loop! (-> self anim-speed))) - (seek! (-> self anim-speed) 1.0 0.05) - (seek! (-> self collide-info trans y) (-> self y-min) (* (-> self y-speed) (seconds-per-frame))) - (water-control-method-10 (-> self water)) - (ja-post) - (suspend) - ) - (logior! (-> self draw status) (draw-status hidden)) - (anim-loop) - ) - :post #f - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (cond + ((-> self enable-patrol) + (if (and (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self state-timeout))) + (go-virtual nav-enemy-patrol))) + ((sharkey-notice-player?) + (when (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf0))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)) + (set-time! (-> self notice-time))) + (let ((a0-4 (nav-control-method-16 (-> self nav) (-> *target* control trans)))) + (when (or (and a0-4 (logtest? (-> a0-4 pat) 2)) + (and (logtest? (-> self draw status) (draw-status hidden)) + (time-elapsed? (-> self notice-time) (-> self reaction-time)))) + (sharkey-move-to-attack-position) + (set! (-> self player-in-water) #t) + (go-virtual nav-enemy-chase)))) + (else + (if (time-elapsed? (-> self notice-time) (seconds 10)) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf0)))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja :group! (-> self draw art-group data (-> self nav-info idle-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (until (= (-> self collide-info trans y) (-> self y-min)) + (ja :num! (loop! (-> self anim-speed))) + (seek! (-> self anim-speed) 1.0 0.05) + (seek! (-> self collide-info trans y) (-> self y-min) (* (-> self y-speed) (seconds-per-frame))) + (water-control-method-10 (-> self water)) + (ja-post) + (suspend)) + (logior! (-> self draw status) (draw-status hidden)) + (anim-loop)) + :post #f) (defstate nav-enemy-patrol (sharkey) :virtual #t :event nav-enemy-default-event-handler - :trans (behavior () - (if (sharkey-notice-player?) - (go-virtual nav-enemy-chase) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (set! (-> self nav target-pos quad) (-> self spawn-point quad)) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max (-> self anim-speed)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek! (-> self anim-speed) 1.0 0.05) - (cond - ((-> self enable-patrol) - (seek! (-> self collide-info trans y) (-> self y-max) (* (-> self y-speed) (seconds-per-frame))) - ) - (else - (if (< (- (-> self collide-info trans y) (-> self y-min)) 409.6) - (go-virtual nav-enemy-idle) - ) - ) - ) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - :post (behavior () - (nav-enemy-travel-post) - ) - ) + :trans + (behavior () + (if (sharkey-notice-player?) (go-virtual nav-enemy-chase))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (set! (-> self nav target-pos quad) (-> self spawn-point quad)) + (loop + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info walk-anim)) + :num! + (seek! max (-> self anim-speed)) + :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self anim-speed) 1.0 0.05) + (cond + ((-> self enable-patrol) + (seek! (-> self collide-info trans y) (-> self y-max) (* (-> self y-speed) (seconds-per-frame)))) + (else (if (< (- (-> self collide-info trans y) (-> self y-min)) 409.6) (go-virtual nav-enemy-idle)))) + (suspend) + (ja :num! (seek! max (-> self anim-speed)))))) + :post + (behavior () + (nav-enemy-travel-post))) (defstate nav-enemy-notice (sharkey) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (go-virtual nav-enemy-chase) - ) - :code (behavior () - (go-virtual nav-enemy-chase) - ) - ) + :enter + (behavior () + (go-virtual nav-enemy-chase)) + :code + (behavior () + (go-virtual nav-enemy-chase))) (defbehavior sharkey-follow-trajectory sharkey ((arg0 float)) (let ((gp-0 (-> self jump-trajectory))) (eval-position! gp-0 arg0 (-> self collide-info trans)) - (eval-velocity! gp-0 arg0 (-> self collide-info transv)) - ) + (eval-velocity! gp-0 arg0 (-> self collide-info transv))) (vector-normalize-copy! (-> self dir) (-> self collide-info transv) 1.0) - (forward-up->quaternion (-> self collide-info quat) (-> self dir) *up-vector*) - ) + (forward-up->quaternion (-> self collide-info quat) (-> self dir) *up-vector*)) (defstate nav-enemy-attack (sharkey) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (current-time) - (sound-play "bigshark-bite") - (set-time! (-> self state-time)) - (set! (-> gp-0 quad) (-> self collide-info trans quad)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! sharkey-chomp-ja :num! (seek! (ja-aframe 3.0 0) 2.0) :frame-num 0.0) - (until (ja-done? 0) - (sharkey-get-player-position s5-0) - (setup-from-to-duration! (-> self jump-trajectory) gp-0 s5-0 3.0 -291.27112) - (set! (-> self attack-time) (ja-aframe-num 0)) - (sharkey-follow-trajectory (-> self attack-time)) - (suspend) - (ja :num! (seek! (ja-aframe 3.0 0) 2.0)) - ) - ) - (when (send-event *target* 'attack-invinc #f (static-attack-info ((mode 'sharkey)))) - (logclear! (-> self mask) (process-mask enemy)) - (vector-float*! (-> self collide-info transv) (-> self collide-info transv) 8.0) - (set-time! (-> self state-time)) - (let ((f30-0 -409600.0) - (f28-0 (-> self collide-info transv y)) - (f26-0 (-> self collide-info trans y)) - ) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (ja-no-eval :group! sharkey-chomp-ja :num! (seek!) :frame-num (ja-aframe 3.0 0)) - (until (ja-done? 0) - (+! f28-0 (* f30-0 (seconds-per-frame))) - (+! f26-0 (* f28-0 (seconds-per-frame))) - (set! (-> self collide-info transv y) f28-0) - (when (< (-> self collide-info trans y) (-> self water height)) - (set! f28-0 (* 0.9 f28-0)) - (vector-float*! (-> self collide-info transv) (-> self collide-info transv) 0.9) - ) - (vector-normalize-copy! (-> self dir) (-> self collide-info transv) 1.0) - (forward-up->quaternion (-> self collide-info quat) (-> self dir) *up-vector*) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (set! (-> self collide-info trans y) f26-0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (send-event *target* 'end-mode) - (logior! (-> self mask) (process-mask enemy)) - ) - (sharkey-reset-position) - (logior! (-> self draw status) (draw-status hidden)) - (go-virtual nav-enemy-idle) - ) - :post (behavior () - (nav-enemy-simple-post) - ) - ) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (current-time) + (sound-play "bigshark-bite") + (set-time! (-> self state-time)) + (set! (-> gp-0 quad) (-> self collide-info trans quad)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! sharkey-chomp-ja :num! (seek! (ja-aframe 3.0 0) 2.0) :frame-num 0.0) + (until (ja-done? 0) + (sharkey-get-player-position s5-0) + (setup-from-to-duration! (-> self jump-trajectory) gp-0 s5-0 3.0 -291.27112) + (set! (-> self attack-time) (ja-aframe-num 0)) + (sharkey-follow-trajectory (-> self attack-time)) + (suspend) + (ja :num! (seek! (ja-aframe 3.0 0) 2.0)))) + (when (send-event *target* 'attack-invinc #f (static-attack-info ((mode 'sharkey)))) + (logclear! (-> self mask) (process-mask enemy)) + (vector-float*! (-> self collide-info transv) (-> self collide-info transv) 8.0) + (set-time! (-> self state-time)) + (let ((f30-0 -409600.0) + (f28-0 (-> self collide-info transv y)) + (f26-0 (-> self collide-info trans y))) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (ja-no-eval :group! sharkey-chomp-ja :num! (seek!) :frame-num (ja-aframe 3.0 0)) + (until (ja-done? 0) + (+! f28-0 (* f30-0 (seconds-per-frame))) + (+! f26-0 (* f28-0 (seconds-per-frame))) + (set! (-> self collide-info transv y) f28-0) + (when (< (-> self collide-info trans y) (-> self water height)) + (set! f28-0 (* 0.9 f28-0)) + (vector-float*! (-> self collide-info transv) (-> self collide-info transv) 0.9)) + (vector-normalize-copy! (-> self dir) (-> self collide-info transv) 1.0) + (forward-up->quaternion (-> self collide-info quat) (-> self dir) *up-vector*) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (set! (-> self collide-info trans y) f26-0) + (suspend) + (ja :num! (seek!))))) + (send-event *target* 'end-mode) + (logior! (-> self mask) (process-mask enemy))) + (sharkey-reset-position) + (logior! (-> self draw status) (draw-status hidden)) + (go-virtual nav-enemy-idle)) + :post + (behavior () + (nav-enemy-simple-post))) (defstate nav-enemy-chase (sharkey) :virtual #t :event nav-enemy-default-event-handler - :exit (behavior () - (sound-stop (-> self sound-id)) - ) - :trans (behavior () - (if (not *target*) - (go-virtual nav-enemy-patrol) - ) - (let ((gp-0 (-> *target* control trans))) - (let ((s5-0 (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))) - (s4-0 'racer) - (a1-0 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 1) - (set! (-> a1-0 message) 'query) - (set! (-> a1-0 param 0) (the-as uint 'mode)) - (if (or (= s4-0 (send-event-function *target* a1-0)) (not s5-0)) - (go-virtual nav-enemy-patrol) - ) - ) - (when (logtest? (-> *target* control status) (cshape-moving-flags onground)) - (set! (-> self player-in-water) (logtest? (-> *target* control status) (cshape-moving-flags on-water))) - (if (-> self player-in-water) - (set-time! (-> self player-water-time)) - ) - ) - (if (and *target* (>= 8192.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (go-virtual nav-enemy-attack) - ) - (cond - ((-> self player-in-water) - (set-time! (-> self free-time)) - (if (and (< (fabs (- (-> gp-0 y) (-> self collide-info trans y))) 40960.0) - (< (vector-vector-xz-distance gp-0 (-> self collide-info trans)) 24576.0) - ) - (go-virtual nav-enemy-attack) - ) - ) - (else - (if (time-elapsed? (-> self free-time) (seconds 3)) - (go-virtual nav-enemy-patrol) - ) - ) - ) - ) - (let ((a0-10 (-> self nav target-poly))) - (if (and a0-10 (logtest? (-> a0-10 pat) 2)) + :exit + (behavior () + (sound-stop (-> self sound-id))) + :trans + (behavior () + (if (not *target*) (go-virtual nav-enemy-patrol)) + (let ((gp-0 (-> *target* control trans))) + (let ((s5-0 (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))) + (s4-0 'racer) + (a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) 'query) + (set! (-> a1-0 param 0) (the-as uint 'mode)) + (if (or (= s4-0 (send-event-function *target* a1-0)) (not s5-0)) (go-virtual nav-enemy-patrol))) + (when (logtest? (-> *target* control status) (cshape-moving-flags onground)) + (set! (-> self player-in-water) (logtest? (-> *target* control status) (cshape-moving-flags on-water))) + (if (-> self player-in-water) (set-time! (-> self player-water-time)))) + (if (and *target* (>= 8192.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-attack)) + (cond + ((-> self player-in-water) + (set-time! (-> self free-time)) + (if (and (< (fabs (- (-> gp-0 y) (-> self collide-info trans y))) 40960.0) + (< (vector-vector-xz-distance gp-0 (-> self collide-info trans)) 24576.0)) + (go-virtual nav-enemy-attack))) + (else (if (time-elapsed? (-> self free-time) (seconds 3)) (go-virtual nav-enemy-patrol))))) + (let ((a0-10 (-> self nav target-poly))) + (if (and a0-10 (logtest? (-> a0-10 pat) 2)) (set! (-> self target-speed) (* 2.0 (-> self chase-speed))) - (set! (-> self target-speed) (-> self chase-speed)) - ) - ) - ) - :code (behavior () - (set-time! (-> self player-water-time)) - (ja-channel-push! 1 (seconds 0.17)) - (sound-play "bigshark-idle") - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) - :num! (seek! max (-> self anim-speed)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek! (-> self anim-speed) 1.0 (* 3.0 (seconds-per-frame))) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - :post (behavior () - (sharkey-get-player-position (-> self nav target-pos)) - (nav-enemy-travel-post) - (let* ((f3-0 (vector-vector-distance (-> self collide-info trans) (-> self nav target-pos))) - (f1-2 (fmax 0.0 (fmin 1.0 (- 1.0 (/ (+ -24576.0 f3-0) (+ -24576.0 (-> self spawn-distance))))))) - (f0-2 (+ 0.5 (* 1.5 f1-2))) - ) - (sound-play - "bigshark-alert" - :id (-> self sound-id) - :pitch f0-2 - :position (the-as symbol (-> self collide-info trans)) - ) - ) - ) - ) + (set! (-> self target-speed) (-> self chase-speed))))) + :code + (behavior () + (set-time! (-> self player-water-time)) + (ja-channel-push! 1 (seconds 0.17)) + (sound-play "bigshark-idle") + (loop + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info run-anim)) + :num! + (seek! max (-> self anim-speed)) + :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self anim-speed) 1.0 (* 3.0 (seconds-per-frame))) + (suspend) + (ja :num! (seek! max (-> self anim-speed)))))) + :post + (behavior () + (sharkey-get-player-position (-> self nav target-pos)) + (nav-enemy-travel-post) + (let* ((f3-0 (vector-vector-distance (-> self collide-info trans) (-> self nav target-pos))) + (f1-2 (fmax 0.0 (fmin 1.0 (- 1.0 (/ (+ -24576.0 f3-0) (+ -24576.0 (-> self spawn-distance))))))) + (f0-2 (+ 0.5 (* 1.5 f1-2)))) + (sound-play "bigshark-alert" :id (-> self sound-id) :pitch f0-2 :position (the-as symbol (-> self collide-info trans)))))) (defstate nav-enemy-stop-chase (sharkey) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.17)) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max (-> self anim-speed)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek! (-> self anim-speed) 1.0 0.05) - (seek! (-> self collide-info trans y) (-> self y-max) (* (-> self y-speed) (seconds-per-frame))) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.17)) + (loop + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info walk-anim)) + :num! + (seek! max (-> self anim-speed)) + :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self anim-speed) 1.0 0.05) + (seek! (-> self collide-info trans y) (-> self y-max) (* (-> self y-speed) (seconds-per-frame))) + (suspend) + (ja :num! (seek! max (-> self anim-speed))))))) (defstate nav-enemy-stare (sharkey) :virtual #t :event nav-enemy-default-event-handler - :trans (behavior () - (if (target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - ) - (if (time-elapsed? (-> self state-time) (-> self state-timeout)) - (go-virtual nav-enemy-patrol) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.17)) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (ja :num! (loop! (-> self anim-speed))) - (seek! (-> self anim-speed) 1.0 0.05) - (seek! (-> self collide-info trans y) (-> self y-max) (* (-> self y-speed) (seconds-per-frame))) - (suspend) - ) - ) - ) + :trans + (behavior () + (if (target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase)) + (if (time-elapsed? (-> self state-time) (-> self state-timeout)) (go-virtual nav-enemy-patrol))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.17)) + (ja :group! (-> self draw art-group data (-> self nav-info idle-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (loop + (ja :num! (loop! (-> self anim-speed))) + (seek! (-> self anim-speed) 1.0 0.05) + (seek! (-> self collide-info trans y) (-> self y-max) (* (-> self y-speed) (seconds-per-frame))) + (suspend)))) (defstate nav-enemy-victory (sharkey) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (dotimes (gp-0 3) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info victory-anim)) - :num! (seek! max (-> self anim-speed)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - (go-virtual nav-enemy-stare) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (dotimes (gp-0 3) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info victory-anim)) + :num! + (seek! max (-> self anim-speed)) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed))))) + (go-virtual nav-enemy-stare))) -(define *sharkey-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 2 - :walk-anim 2 - :turn-anim -1 - :notice-anim 2 - :run-anim 2 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 2 - :taunt-anim 2 - :die-anim 2 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 12) - :run-rotate-speed (degrees 1999.9999) - :run-acceleration (meters 6) - :run-turn-time (seconds 0.5) - :walk-travel-speed (meters 6) - :walk-rotate-speed (degrees 1999.9999) - :walk-acceleration (meters 6) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 1) - :attack-shove-up (meters 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 3) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 500) - :stop-chase-distance (meters 510) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #f - :move-to-ground #f - :hover-if-no-ground #f - :use-momentum #t - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *sharkey-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 2 + :walk-anim 2 + :turn-anim -1 + :notice-anim 2 + :run-anim 2 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 2 + :taunt-anim 2 + :die-anim 2 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 12) + :run-rotate-speed (degrees 1999.9999) + :run-acceleration (meters 6) + :run-turn-time (seconds 0.5) + :walk-travel-speed (meters 6) + :walk-rotate-speed (degrees 1999.9999) + :walk-acceleration (meters 6) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 1) + :attack-shove-up (meters 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 3) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 500) + :stop-chase-distance (meters 510) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #f + :move-to-ground #f + :hover-if-no-ground #f + :use-momentum #t + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this sharkey) (arg0 entity-actor)) (set! (-> this scale) (res-lump-float arg0 'scale :default 1.0)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 (* 6144.0 (-> this scale))) - (set-root-prim! s4-0 s3-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! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *sharkey-sg* '()) (init-defaults! this *sharkey-nav-enemy-info*) @@ -636,8 +500,7 @@ nav-enemy-default-event-handler (set! (-> this anim-speed) 1.0) (set-vector! (-> this collide-info scale) (-> this scale) (-> this scale) (-> this scale) 1.0) (set! (-> this reaction-time) - (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'delay :default 1.0)))) - ) + (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'delay :default 1.0))))) (set! (-> this spawn-distance) (res-lump-float (-> this entity) 'distance :default 122880.0)) (set! (-> this chase-speed) (res-lump-float (-> this entity) 'speed :default 49152.0)) (set! (-> this y-speed) (-> this chase-speed)) @@ -645,5 +508,4 @@ nav-enemy-default-event-handler (set! (-> this sound-id) (new-sound-id)) (set! (-> this enemy-info cam-vert) 49152.0) (go (method-of-object this nav-enemy-idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/common-obs/ticky.gc b/goal_src/jak1/engine/common-obs/ticky.gc index 7b12c4c40f..ea41015b06 100644 --- a/goal_src/jak1/engine/common-obs/ticky.gc +++ b/goal_src/jak1/engine/common-obs/ticky.gc @@ -1,28 +1,19 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/sound/gsound.gc") -;; name: ticky.gc -;; name in dgo: ticky -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (deftype ticky (structure) - ((delay-til-ramp time-frame) - (delay-til-timeout time-frame) - (starting-time time-frame) - (last-tick-time time-frame) - ) + ((delay-til-ramp time-frame) + (delay-til-timeout time-frame) + (starting-time time-frame) + (last-tick-time time-frame)) (:methods - (sleep (_type_ time-frame) none) - (reached-delay? (_type_ time-frame) symbol) - (completed? (_type_) symbol) - ) - ) - + (sleep (_type_ time-frame) none) + (reached-delay? (_type_ time-frame) symbol) + (completed? (_type_) symbol))) (defmethod sleep ((this ticky) (arg0 time-frame)) (set-time! (-> this starting-time)) @@ -30,36 +21,22 @@ (set! (-> this delay-til-ramp) (max 0 (+ arg0 (seconds -4)))) (set! (-> this last-tick-time) 0) 0 - (none) - ) + (none)) (defmethod completed? ((this ticky)) (let ((gp-0 #f)) (let ((v1-2 (- (current-time) (-> this starting-time)))) (cond - ((>= v1-2 (-> this delay-til-timeout)) - (set! gp-0 #t) - ) + ((>= v1-2 (-> this delay-til-timeout)) (set! gp-0 #t)) (else - (let* ((f0-1 (fmin 1.0 (/ (the float (max 0 (- v1-2 (-> this delay-til-ramp)))) - (the float (- (-> this delay-til-timeout) (-> this delay-til-ramp))) - ) - ) - ) - (v1-7 (the int (lerp 105.0 41.0 f0-1))) - ) - (when (time-elapsed? (-> this last-tick-time) v1-7) - (set-time! (-> this last-tick-time)) - (sound-play "stopwatch") - ) - ) - ) - ) - ) - gp-0 - ) - ) + (let* ((f0-1 (fmin 1.0 + (/ (the float (max 0 (- v1-2 (-> this delay-til-ramp)))) + (the float (- (-> this delay-til-timeout) (-> this delay-til-ramp)))))) + (v1-7 (the int (lerp 105.0 41.0 f0-1)))) + (when (time-elapsed? (-> this last-tick-time) v1-7) + (set-time! (-> this last-tick-time)) + (sound-play "stopwatch")))))) + gp-0)) (defmethod reached-delay? ((this ticky) (arg0 time-frame)) - (time-elapsed? (-> this starting-time) arg0) - ) + (time-elapsed? (-> this starting-time) arg0)) diff --git a/goal_src/jak1/engine/common-obs/tippy.gc b/goal_src/jak1/engine/common-obs/tippy.gc index d9bb05c6e3..3a7f6f5c08 100644 --- a/goal_src/jak1/engine/common-obs/tippy.gc +++ b/goal_src/jak1/engine/common-obs/tippy.gc @@ -1,30 +1,21 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/math/quaternion.gc") (require "engine/game/game-h.gc") -;; name: tippy.gc -;; name in dgo: tippy -;; dgos: GAME, COMMON, L1 - ;; DECOMP BEGINS (deftype tippy (structure) - ((axis vector :inline) - (angle float) - (orig quaternion :inline) - (dist-ratio float) - (damping float) - (1-damping float) - ) + ((axis vector :inline) + (angle float) + (orig quaternion :inline) + (dist-ratio float) + (damping float) + (1-damping float)) (:methods - (reset! (_type_ process-drawable float float) none) - (tippy-method-10 (_type_ process-drawable vector) symbol) - ) - ) - + (reset! (_type_ process-drawable float float) none) + (tippy-method-10 (_type_ process-drawable vector) symbol))) (defmethod reset! ((this tippy) (arg0 process-drawable) (arg1 float) (arg2 float)) (set-vector! (-> this axis) 0.0 0.0 0.0 1.0) @@ -34,40 +25,30 @@ (set! (-> this damping) arg2) (set! (-> this 1-damping) (- 1.0 arg2)) 0 - (none) - ) + (none)) (defmethod tippy-method-10 ((this tippy) (arg0 process-drawable) (arg1 vector)) (let ((s4-0 #t)) (cond (arg1 - (let ((s3-0 (new 'stack-no-clear 'vector))) - 0.0 - (set! (-> s3-0 x) (- (-> arg1 z) (-> arg0 root trans z))) - (set! (-> s3-0 y) 0.0) - (set! (-> s3-0 z) (- (-> arg0 root trans x) (-> arg1 x))) - (let ((f0-6 (vector-length s3-0))) - (vector-float*! s3-0 s3-0 (/ 1.0 f0-6)) - (let ((f30-0 (* f0-6 (-> this dist-ratio)))) - (set! (-> this axis x) (+ (* (-> this 1-damping) (-> this axis x)) (* (-> this damping) (-> s3-0 x)))) - (set! (-> this axis y) 0.0) - (set! (-> this axis z) (+ (* (-> this 1-damping) (-> this axis z)) (* (-> this damping) (-> s3-0 z)))) - (vector-normalize! (-> this axis) 1.0) - (set! (-> this angle) (+ (* (-> this 1-damping) (-> this angle)) (* (-> this damping) f30-0))) - ) - ) - ) - ) + (let ((s3-0 (new 'stack-no-clear 'vector))) + 0.0 + (set! (-> s3-0 x) (- (-> arg1 z) (-> arg0 root trans z))) + (set! (-> s3-0 y) 0.0) + (set! (-> s3-0 z) (- (-> arg0 root trans x) (-> arg1 x))) + (let ((f0-6 (vector-length s3-0))) + (vector-float*! s3-0 s3-0 (/ 1.0 f0-6)) + (let ((f30-0 (* f0-6 (-> this dist-ratio)))) + (set! (-> this axis x) (+ (* (-> this 1-damping) (-> this axis x)) (* (-> this damping) (-> s3-0 x)))) + (set! (-> this axis y) 0.0) + (set! (-> this axis z) (+ (* (-> this 1-damping) (-> this axis z)) (* (-> this damping) (-> s3-0 z)))) + (vector-normalize! (-> this axis) 1.0) + (set! (-> this angle) (+ (* (-> this 1-damping) (-> this angle)) (* (-> this damping) f30-0))))))) (else - (set! (-> this angle) (* (-> this 1-damping) (-> this angle))) - (when (< (-> this angle) 182.04445) - (set! (-> this angle) 0.0) - (set! s4-0 #f) - ) - ) - ) + (set! (-> this angle) (* (-> this 1-damping) (-> this angle))) + (when (< (-> this angle) 182.04445) + (set! (-> this angle) 0.0) + (set! s4-0 #f)))) (quaternion-vector-angle! (-> arg0 root quat) (-> this axis) (-> this angle)) (quaternion*! (-> arg0 root quat) (-> arg0 root quat) (-> this orig)) - s4-0 - ) - ) + s4-0)) diff --git a/goal_src/jak1/engine/common-obs/voicebox.gc b/goal_src/jak1/engine/common-obs/voicebox.gc index c34890c4bb..9cc57c25b3 100644 --- a/goal_src/jak1/engine/common-obs/voicebox.gc +++ b/goal_src/jak1/engine/common-obs/voicebox.gc @@ -1,190 +1,140 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/camera.gc") (require "engine/common-obs/process-drawable.gc") (require "engine/game/settings.gc") -;; name: voicebox.gc -;; name in dgo: voicebox -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(deftype camera-voicebox (camera-slave) - () +(deftype camera-voicebox (camera-slave) () (:states - cam-voicebox - ) - ) - + cam-voicebox)) (deftype voicebox (process-drawable) - ((parent-override (pointer camera-voicebox) :overlay-at parent) - (base-trans vector :inline) - (seeker cam-float-seeker :inline) - (blend float) - (twist float) - (hint handle) - ) + ((parent-override (pointer camera-voicebox) :overlay-at parent) + (base-trans vector :inline) + (seeker cam-float-seeker :inline) + (blend float) + (twist float) + (hint handle)) (:state-methods - enter - idle - exit - ) - ) - + enter + idle + exit)) (defstate empty-state (process) - :code nothing - ) + :code nothing) -(defskelgroup *voicebox-sg* speaker speaker-lod0-jg speaker-idle-ja - ((speaker-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *voicebox-sg* + speaker + speaker-lod0-jg + speaker-idle-ja + ((speaker-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defbehavior voicebox-track voicebox () (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self parent-override 0 trans quad)) (set! (-> s5-0 quad) (-> (target-pos 68) quad)) (when *target* (let ((a2-0 (vector-z-quaternion! (new-stack-vector0) (-> *target* control unknown-quaternion00)))) - (vector+float*! s5-0 s5-0 a2-0 (* -16384.0 (- 1.0 (-> self blend)))) - ) - ) - (vector-lerp! (-> self root trans) gp-0 s5-0 (-> self blend)) - ) + (vector+float*! s5-0 s5-0 a2-0 (* -16384.0 (- 1.0 (-> self blend)))))) + (vector-lerp! (-> self root trans) gp-0 s5-0 (-> self blend))) (+! (-> self root trans y) (* 1638.4 (sin (* 54.613335 (the float (mod (current-time) 1200)))))) (let ((gp-1 (new 'stack-no-clear 'quaternion))) - (forward-up->quaternion - gp-1 - (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (target-pos 37) (-> self root trans)) 1.0) - (new 'static 'vector :y 1.0 :w 1.0) - ) - (rotate-toward-orientation! (-> self root) gp-1 65536.0 5461.3335) - ) + (forward-up->quaternion gp-1 + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (target-pos 37) (-> self root trans)) 1.0) + (new 'static 'vector :y 1.0 :w 1.0)) + (rotate-toward-orientation! (-> self root) gp-1 65536.0 5461.3335)) (when *target* (let* ((gp-2 (-> *target* control)) (s4-2 (-> self root trans)) - (f0-8 - (deg-diff (y-angle gp-2) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-2 (-> gp-2 trans)))) - ) - ) + (f0-8 (deg-diff (y-angle gp-2) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-2 (-> gp-2 trans)))))) (if (< 0.0 f0-8) - (seek! (-> self twist) -0.4 (* 0.3 (seconds-per-frame))) - (seek! (-> self twist) 0.4 (* 0.3 (seconds-per-frame))) - ) - ) + (seek! (-> self twist) -0.4 (* 0.3 (seconds-per-frame))) + (seek! (-> self twist) 0.4 (* 0.3 (seconds-per-frame))))) (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) 'blocked-side?) (case (send-event-function (ppointer->process (-> self parent-override)) a1-9) - ((1) - (set! (-> self twist) 0.5) - ) - ((2) - (set! (-> self twist) -0.5) - ) - ((3) - (set! (-> self twist) 0.0) - ) - ) - ) - (send-event (ppointer->process (-> self parent-override)) 'joystick (-> self twist) -1.0) - ) + ((1) (set! (-> self twist) 0.5)) + ((2) (set! (-> self twist) -0.5)) + ((3) (set! (-> self twist) 0.0)))) + (send-event (ppointer->process (-> self parent-override)) 'joystick (-> self twist) -1.0)) (set! (-> self root scale x) (lerp-scale 1.0 0.0 (-> self blend) 0.8 1.0)) (set! (-> self root scale y) (-> self root scale x)) (set! (-> self root scale z) (-> self root scale x)) 0 - (none) - ) + (none)) (defstate enter (voicebox) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (go-virtual exit) - ) - ) - ) - :trans (behavior () - (voicebox-track) - (if (< 0.1 (-> self blend)) - (point-toward-point-clear-roll-pitch! (-> self root) (target-pos 0)) - ) - ) - :code (behavior () - (set-setting! 'sound-flava #f 20.0 (music-flava assistant)) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (send-event - (ppointer->process (-> self parent-override)) - 'set-dist - (new 'static 'vector :z 8192.0 :w 1.0) - (new 'static 'vector :y 20480.0 :z 12288.0 :w 1.0) - ) - (send-event - (ppointer->process (-> self parent-override)) - 'set-dist - (new 'static 'vector :z 16384.0 :w 1.0) - (new 'static 'vector :y 20480.0 :z 40960.0 :w 1.0) - ) - ) - (init-cam-float-seeker (-> self seeker) 1.0 0.01 0.022222223 0.1) - (set! (-> self seeker target) 0.0) - (while (< 0.0001 (-> self blend)) - (update! (-> self seeker) 0.0) - (set! (-> self blend) (-> self seeker value)) - (suspend) - ) - (set! (-> self blend) 0.0) - (go-virtual idle) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) (go-virtual exit)))) + :trans + (behavior () + (voicebox-track) + (if (< 0.1 (-> self blend)) (point-toward-point-clear-roll-pitch! (-> self root) (target-pos 0)))) + :code + (behavior () + (set-setting! 'sound-flava #f 20.0 (music-flava assistant)) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (send-event (ppointer->process (-> self parent-override)) + 'set-dist + (new 'static 'vector :z 8192.0 :w 1.0) + (new 'static 'vector :y 20480.0 :z 12288.0 :w 1.0)) + (send-event (ppointer->process (-> self parent-override)) + 'set-dist + (new 'static 'vector :z 16384.0 :w 1.0) + (new 'static 'vector :y 20480.0 :z 40960.0 :w 1.0))) + (init-cam-float-seeker (-> self seeker) 1.0 0.01 0.022222223 0.1) + (set! (-> self seeker target) 0.0) + (while (< 0.0001 (-> self blend)) + (update! (-> self seeker) 0.0) + (set! (-> self blend) (-> self seeker value)) + (suspend)) + (set! (-> self blend) 0.0) + (go-virtual idle)) + :post ja-post) (defstate idle (voicebox) :virtual #t - :event (-> (method-of-type voicebox enter) event) + :event + (-> (method-of-type voicebox enter) + event) :trans voicebox-track - :code (behavior () - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (suspend) + (ja :num! (loop!)))) + :post ja-post) (defstate exit (voicebox) :virtual #t :trans voicebox-track - :code (behavior () - (remove-setting! 'sound-flava) - (set-time! (-> self state-time)) - (set! (-> self seeker target) 1.0) - (while (and (< (-> self blend) 0.9999) (not (and (not (handle->process (-> self hint))) - (time-elapsed? (-> self state-time) (seconds 0.05)) - (-> *setting-control* current hint) - ) - ) - ) - (update! (-> self seeker) 0.0) - (set! (-> self blend) (-> self seeker value)) + :code + (behavior () + (remove-setting! 'sound-flava) + (set-time! (-> self state-time)) + (set! (-> self seeker target) 1.0) + (while (and (< (-> self blend) 0.9999) + (not (and (not (handle->process (-> self hint))) + (time-elapsed? (-> self state-time) (seconds 0.05)) + (-> *setting-control* current hint)))) + (update! (-> self seeker) 0.0) + (set! (-> self blend) (-> self seeker value)) + (suspend)) + (set! (-> self blend) 1.0) + (send-event (ppointer->process (-> self parent-override)) 'go empty-state) (suspend) - ) - (set! (-> self blend) 1.0) - (send-event (ppointer->process (-> self parent-override)) 'go empty-state) - (suspend) - 0 - ) - :post ja-post - ) + 0) + :post ja-post) (defbehavior voicebox-init-by-other voicebox ((arg0 vector) (arg1 handle)) (set! (-> self root) (new 'process 'trsqv)) @@ -194,27 +144,23 @@ (initialize-skeleton self *voicebox-sg* '()) (set! (-> self blend) 1.0) (go-virtual enter) - (none) - ) + (none)) (defstate cam-voicebox (camera-voicebox) - :event (-> cam-string event) - :enter (-> cam-string enter) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (deactivate self) - ) - ) - :code (-> cam-string code) - ) + :event + (-> cam-string + event) + :enter + (-> cam-string + enter) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (deactivate self))) + :code + (-> cam-string + code)) (defun voicebox-spawn ((arg0 process) (arg1 vector)) (with-pp - (let ((s4-0 (process-spawn camera-voicebox :init cam-slave-init cam-voicebox #f :from *camera-dead-pool* :to arg0)) - ) - (if s4-0 - (process-spawn voicebox arg1 (process->handle pp) :to (ppointer->process s4-0)) - ) - ) - ) - ) + (let ((s4-0 (process-spawn camera-voicebox :init cam-slave-init cam-voicebox #f :from *camera-dead-pool* :to arg0))) + (if s4-0 (process-spawn voicebox arg1 (process->handle pp) :to (ppointer->process s4-0)))))) diff --git a/goal_src/jak1/engine/common-obs/water-anim.gc b/goal_src/jak1/engine/common-obs/water-anim.gc index cb8d99983c..ec0fd32abf 100644 --- a/goal_src/jak1/engine/common-obs/water-anim.gc +++ b/goal_src/jak1/engine/common-obs/water-anim.gc @@ -1,521 +1,556 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/common-obs/process-drawable.gc") (require "engine/gfx/foreground/ripple.gc") (require "engine/common-obs/water-h.gc") -;; name: water-anim.gc -;; name in dgo: water-anim -;; dgos: GAME, COMMON, L1, WATER-AN - ;; DECOMP BEGINS (deftype water-anim (water-vol) - ((ppointer-water-anim (pointer water-anim) :overlay-at ppointer) - (look int32) - (play-ambient-sound? symbol) - ) - ) - - -(defskelgroup *water-anim-sunken-dark-eco-qbert-sg* water-anim-sunken-dark-eco water-anim-sunken-dark-eco-qbert-lod0-jg -1 - ((water-anim-sunken-dark-eco-qbert-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 40) - ) - -(defskelgroup *water-anim-sunken-dark-eco-platform-room-sg* water-anim-sunken-dark-eco water-anim-sunken-dark-eco-platform-room-lod0-jg -1 - ((water-anim-sunken-dark-eco-platform-room-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 22) - ) - -(defskelgroup *water-anim-sunken-dark-eco-helix-room-sg* water-anim-sunken-dark-eco water-anim-sunken-dark-eco-helix-room-lod0-jg -1 - ((water-anim-sunken-dark-eco-helix-room-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 21) - ) - -(defskelgroup *water-anim-sunken-big-room-sg* water-anim-sunken water-anim-sunken-big-room-lod0-jg -1 - ((water-anim-sunken-big-room-lod0-mg (meters 999999))) - :bounds (static-spherem 15 0 -36 70) - ) - -(defskelgroup *water-anim-sunken-first-room-from-entrance-sg* water-anim-sunken water-anim-sunken-first-room-from-entrance-lod0-jg -1 - ((water-anim-sunken-first-room-from-entrance-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 50) - ) - -(defskelgroup *water-anim-sunken-qbert-room-sg* water-anim-sunken water-anim-sunken-qbert-room-lod0-jg -1 - ((water-anim-sunken-qbert-room-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 48) - ) - -(defskelgroup *water-anim-sunken-first-right-branch-sg* water-anim-sunken water-anim-sunken-first-right-branch-lod0-jg -1 - ((water-anim-sunken-first-right-branch-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) - -(defskelgroup *water-anim-sunken-circular-with-bullys-sg* water-anim-sunken water-anim-sunken-circular-with-bullys-lod0-jg -1 - ((water-anim-sunken-circular-with-bullys-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 15) - ) - -(defskelgroup *water-anim-sunken-hall-with-one-whirlpool-sg* water-anim-sunken water-anim-sunken-hall-with-one-whirlpool-lod0-jg -1 - ((water-anim-sunken-hall-with-one-whirlpool-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 27) - ) - -(defskelgroup *water-anim-sunken-hall-with-three-whirlpools-sg* water-anim-sunken water-anim-sunken-hall-with-three-whirlpools-lod0-jg -1 - ((water-anim-sunken-hall-with-three-whirlpools-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 26) - ) - -(defskelgroup *water-anim-sunken-start-of-helix-slide-sg* water-anim-sunken water-anim-sunken-start-of-helix-slide-lod0-jg -1 - ((water-anim-sunken-start-of-helix-slide-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 25) - ) - -(defskelgroup *water-anim-sunken-room-above-exit-chamber-sg* water-anim-sunken water-anim-sunken-room-above-exit-chamber-lod0-jg -1 - ((water-anim-sunken-room-above-exit-chamber-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 45) - ) - -(defskelgroup *water-anim-sunken-hall-before-big-room-sg* water-anim-sunken water-anim-sunken-hall-before-big-room-lod0-jg -1 - ((water-anim-sunken-hall-before-big-room-lod0-mg (meters 999999))) - :bounds (static-spherem 5 0 -3 24) - ) - -(defskelgroup *water-anim-sunken-short-piece-sg* water-anim-sunken water-anim-sunken-short-piece-lod0-jg -1 - ((water-anim-sunken-short-piece-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 20) - ) - -(defskelgroup *water-anim-sunken-big-room-upper-water-sg* water-anim-sunken water-anim-sunken-big-room-upper-water-lod0-jg -1 - ((water-anim-sunken-big-room-upper-water-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 27) - ) - -(defskelgroup *water-anim-maincave-center-pool-sg* water-anim-maincave water-anim-maincave-center-pool-lod0-jg -1 - ((water-anim-maincave-center-pool-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 70) - ) - -(defskelgroup *water-anim-maincave-lower-right-pool-sg* water-anim-maincave water-anim-maincave-lower-right-pool-lod0-jg -1 - ((water-anim-maincave-lower-right-pool-lod0-mg (meters 999999))) - :bounds (static-spherem 6 0 5 61) - ) - -(defskelgroup *water-anim-maincave-mid-right-pool-sg* water-anim-maincave water-anim-maincave-mid-right-pool-lod0-jg -1 - ((water-anim-maincave-mid-right-pool-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 37) - ) - -(defskelgroup *water-anim-maincave-lower-left-pool-sg* water-anim-maincave water-anim-maincave-lower-left-pool-lod0-jg -1 - ((water-anim-maincave-lower-left-pool-lod0-mg (meters 999999))) - :bounds (static-spherem -1 0 0 20) - ) - -(defskelgroup *water-anim-maincave-mid-left-pool-sg* water-anim-maincave water-anim-maincave-mid-left-pool-lod0-jg -1 - ((water-anim-maincave-mid-left-pool-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 51) - ) - -(defskelgroup *water-anim-maincave-water-with-crystal-sg* water-anim-maincave-water water-anim-maincave-water-with-crystal-lod0-jg -1 - ((water-anim-maincave-water-with-crystal-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -3 22) - ) - -(defskelgroup *water-anim-robocave-main-pool-sg* water-anim-robocave water-anim-robocave-main-pool-lod0-jg -1 - ((water-anim-robocave-main-pool-lod0-mg (meters 20)) (water-anim-robocave-main-pool-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 54) - ) - -(defskelgroup *water-anim-misty-mud-by-arena-sg* water-anim-misty water-anim-misty-mud-by-arena-lod0-jg -1 - ((water-anim-misty-mud-by-arena-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -2.5 19) - ) - -(defskelgroup *water-anim-misty-mud-above-skeleton-sg* water-anim-misty water-anim-misty-mud-above-skeleton-lod0-jg -1 - ((water-anim-misty-mud-above-skeleton-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 14) - ) - -(defskelgroup *water-anim-misty-mud-behind-skeleton-sg* water-anim-misty water-anim-misty-mud-behind-skeleton-lod0-jg -1 - ((water-anim-misty-mud-behind-skeleton-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 4 25) - ) - -(defskelgroup *water-anim-misty-mud-above-skull-back-sg* water-anim-misty water-anim-misty-mud-above-skull-back-lod0-jg -1 - ((water-anim-misty-mud-above-skull-back-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 14) - ) - -(defskelgroup *water-anim-misty-mud-above-skull-front-sg* water-anim-misty water-anim-misty-mud-above-skull-front-lod0-jg -1 - ((water-anim-misty-mud-above-skull-front-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 16) - ) - -(defskelgroup *water-anim-misty-mud-other-near-skull-sg* water-anim-misty water-anim-misty-mud-other-near-skull-lod0-jg -1 - ((water-anim-misty-mud-other-near-skull-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 13) - ) - -(defskelgroup *water-anim-misty-mud-near-skull-sg* water-anim-misty water-anim-misty-mud-near-skull-lod0-jg -1 - ((water-anim-misty-mud-near-skull-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 15) - ) - -(defskelgroup *water-anim-misty-mud-under-spine-sg* water-anim-misty water-anim-misty-mud-under-spine-lod0-jg -1 - ((water-anim-misty-mud-under-spine-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 16) - ) - -(defskelgroup *water-anim-misty-mud-by-dock-sg* water-anim-misty water-anim-misty-mud-by-dock-lod0-jg -1 - ((water-anim-misty-mud-by-dock-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 21) - ) - -(defskelgroup *water-anim-misty-mud-island-near-dock-sg* water-anim-misty water-anim-misty-mud-island-near-dock-lod0-jg -1 - ((water-anim-misty-mud-island-near-dock-lod0-mg (meters 999999))) - :bounds (static-spherem -1 0 -1 15) - ) - -(defskelgroup *water-anim-misty-mud-lonely-island-sg* water-anim-misty water-anim-misty-mud-lonely-island-lod0-jg -1 - ((water-anim-misty-mud-lonely-island-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) - -(defskelgroup *water-anim-misty-dark-eco-pool-sg* water-anim-misty water-anim-misty-dark-eco-pool-lod0-jg -1 - ((water-anim-misty-dark-eco-pool-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 17) - ) - -(defskelgroup *water-anim-ogre-lava-sg* water-anim-ogre water-anim-ogre-lava-lod0-jg -1 - ((water-anim-ogre-lava-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 112) - ) - -(defskelgroup *water-anim-jungle-river-sg* water-anim-jungle water-anim-jungle-river-lod0-jg -1 - ((water-anim-jungle-river-lod0-mg (meters 20)) (water-anim-jungle-river-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 91) - ) - -(defskelgroup *water-anim-village3-lava-sg* water-anim-village3 water-anim-village3-lava-lod0-jg -1 - ((water-anim-village3-lava-lod0-mg (meters 20)) (water-anim-village3-lava-lod1-mg (meters 999999))) - :bounds (static-spherem 15 0 10 163) - ) - -(defskelgroup *water-anim-training-lake-sg* water-anim-training water-anim-training-lake-lod0-jg -1 - ((water-anim-training-lake-lod0-mg (meters 999999))) - :bounds (static-spherem -18 0 0 52) - ) - -(defskelgroup *water-anim-darkcave-water-with-crystal-sg* water-anim-darkcave water-anim-darkcave-water-with-crystal-lod0-jg -1 - ((water-anim-darkcave-water-with-crystal-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 19) - ) - -(defskelgroup *water-anim-rolling-water-back-sg* water-anim-rolling water-anim-rolling-water-back-lod0-jg -1 - ((water-anim-rolling-water-back-lod0-mg (meters 999999))) - :bounds (static-spherem -10 0 0 70) - ) - -(defskelgroup *water-anim-rolling-water-front-sg* water-anim-rolling water-anim-rolling-water-front-lod0-jg -1 - ((water-anim-rolling-water-front-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 70) - ) - -(defskelgroup *water-anim-finalboss-dark-eco-pool-sg* water-anim-finalboss water-anim-finalboss-dark-eco-pool-lod0-jg -1 - ((water-anim-finalboss-dark-eco-pool-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 19) - ) - -(defskelgroup *water-anim-lavatube-energy-lava-sg* water-anim-lavatube water-anim-lavatube-energy-lava-lod0-jg -1 - ((water-anim-lavatube-energy-lava-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -7 0 25) - ) - -(defskelgroup *water-anim-village1-rice-paddy-sg* water-anim-village1 water-anim-village1-rice-paddy-lod0-jg -1 - ((water-anim-village1-rice-paddy-lod0-mg (meters 999999))) - :bounds (static-spherem -15 0 0 27) - ) - -(defskelgroup *water-anim-village1-fountain-sg* water-anim-village1 water-anim-village1-fountain-lod0-jg -1 - ((water-anim-village1-fountain-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4.5) - ) - -(defskelgroup *water-anim-village1-rice-paddy-mid-sg* water-anim-village1 water-anim-village1-rice-paddy-mid-lod0-jg -1 - ((water-anim-village1-rice-paddy-mid-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 35) - ) - -(defskelgroup *water-anim-village1-rice-paddy-top-sg* water-anim-village1 water-anim-village1-rice-paddy-top-lod0-jg -1 - ((water-anim-village1-rice-paddy-top-lod0-mg (meters 999999))) - :bounds (static-spherem 6 0 -17 20) - ) - -(defskelgroup *water-anim-village2-bucket-sg* water-anim-village2 water-anim-village2-bucket-lod0-jg -1 - ((water-anim-village2-bucket-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 0.7) - ) + ((ppointer-water-anim (pointer water-anim) :overlay-at ppointer) + (look int32) + (play-ambient-sound? symbol))) + +(defskelgroup *water-anim-sunken-dark-eco-qbert-sg* + water-anim-sunken-dark-eco + water-anim-sunken-dark-eco-qbert-lod0-jg + -1 + ((water-anim-sunken-dark-eco-qbert-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 40)) + +(defskelgroup *water-anim-sunken-dark-eco-platform-room-sg* + water-anim-sunken-dark-eco + water-anim-sunken-dark-eco-platform-room-lod0-jg + -1 + ((water-anim-sunken-dark-eco-platform-room-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 22)) + +(defskelgroup *water-anim-sunken-dark-eco-helix-room-sg* + water-anim-sunken-dark-eco + water-anim-sunken-dark-eco-helix-room-lod0-jg + -1 + ((water-anim-sunken-dark-eco-helix-room-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 21)) + +(defskelgroup *water-anim-sunken-big-room-sg* + water-anim-sunken + water-anim-sunken-big-room-lod0-jg + -1 + ((water-anim-sunken-big-room-lod0-mg (meters 999999))) + :bounds (static-spherem 15 0 -36 70)) + +(defskelgroup *water-anim-sunken-first-room-from-entrance-sg* + water-anim-sunken + water-anim-sunken-first-room-from-entrance-lod0-jg + -1 + ((water-anim-sunken-first-room-from-entrance-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 50)) + +(defskelgroup *water-anim-sunken-qbert-room-sg* + water-anim-sunken + water-anim-sunken-qbert-room-lod0-jg + -1 + ((water-anim-sunken-qbert-room-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 48)) + +(defskelgroup *water-anim-sunken-first-right-branch-sg* + water-anim-sunken + water-anim-sunken-first-right-branch-lod0-jg + -1 + ((water-anim-sunken-first-right-branch-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) + +(defskelgroup *water-anim-sunken-circular-with-bullys-sg* + water-anim-sunken + water-anim-sunken-circular-with-bullys-lod0-jg + -1 + ((water-anim-sunken-circular-with-bullys-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 15)) + +(defskelgroup *water-anim-sunken-hall-with-one-whirlpool-sg* + water-anim-sunken + water-anim-sunken-hall-with-one-whirlpool-lod0-jg + -1 + ((water-anim-sunken-hall-with-one-whirlpool-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 27)) + +(defskelgroup *water-anim-sunken-hall-with-three-whirlpools-sg* + water-anim-sunken + water-anim-sunken-hall-with-three-whirlpools-lod0-jg + -1 + ((water-anim-sunken-hall-with-three-whirlpools-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 26)) + +(defskelgroup *water-anim-sunken-start-of-helix-slide-sg* + water-anim-sunken + water-anim-sunken-start-of-helix-slide-lod0-jg + -1 + ((water-anim-sunken-start-of-helix-slide-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 25)) + +(defskelgroup *water-anim-sunken-room-above-exit-chamber-sg* + water-anim-sunken + water-anim-sunken-room-above-exit-chamber-lod0-jg + -1 + ((water-anim-sunken-room-above-exit-chamber-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 45)) + +(defskelgroup *water-anim-sunken-hall-before-big-room-sg* + water-anim-sunken + water-anim-sunken-hall-before-big-room-lod0-jg + -1 + ((water-anim-sunken-hall-before-big-room-lod0-mg (meters 999999))) + :bounds (static-spherem 5 0 -3 24)) + +(defskelgroup *water-anim-sunken-short-piece-sg* + water-anim-sunken + water-anim-sunken-short-piece-lod0-jg + -1 + ((water-anim-sunken-short-piece-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 20)) + +(defskelgroup *water-anim-sunken-big-room-upper-water-sg* + water-anim-sunken + water-anim-sunken-big-room-upper-water-lod0-jg + -1 + ((water-anim-sunken-big-room-upper-water-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 27)) + +(defskelgroup *water-anim-maincave-center-pool-sg* + water-anim-maincave + water-anim-maincave-center-pool-lod0-jg + -1 + ((water-anim-maincave-center-pool-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 70)) + +(defskelgroup *water-anim-maincave-lower-right-pool-sg* + water-anim-maincave + water-anim-maincave-lower-right-pool-lod0-jg + -1 + ((water-anim-maincave-lower-right-pool-lod0-mg (meters 999999))) + :bounds (static-spherem 6 0 5 61)) + +(defskelgroup *water-anim-maincave-mid-right-pool-sg* + water-anim-maincave + water-anim-maincave-mid-right-pool-lod0-jg + -1 + ((water-anim-maincave-mid-right-pool-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 37)) + +(defskelgroup *water-anim-maincave-lower-left-pool-sg* + water-anim-maincave + water-anim-maincave-lower-left-pool-lod0-jg + -1 + ((water-anim-maincave-lower-left-pool-lod0-mg (meters 999999))) + :bounds (static-spherem -1 0 0 20)) + +(defskelgroup *water-anim-maincave-mid-left-pool-sg* + water-anim-maincave + water-anim-maincave-mid-left-pool-lod0-jg + -1 + ((water-anim-maincave-mid-left-pool-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 51)) + +(defskelgroup *water-anim-maincave-water-with-crystal-sg* + water-anim-maincave-water + water-anim-maincave-water-with-crystal-lod0-jg + -1 + ((water-anim-maincave-water-with-crystal-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -3 22)) + +(defskelgroup *water-anim-robocave-main-pool-sg* + water-anim-robocave + water-anim-robocave-main-pool-lod0-jg + -1 + ((water-anim-robocave-main-pool-lod0-mg (meters 20)) (water-anim-robocave-main-pool-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 54)) + +(defskelgroup *water-anim-misty-mud-by-arena-sg* + water-anim-misty + water-anim-misty-mud-by-arena-lod0-jg + -1 + ((water-anim-misty-mud-by-arena-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -2.5 19)) + +(defskelgroup *water-anim-misty-mud-above-skeleton-sg* + water-anim-misty + water-anim-misty-mud-above-skeleton-lod0-jg + -1 + ((water-anim-misty-mud-above-skeleton-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 14)) + +(defskelgroup *water-anim-misty-mud-behind-skeleton-sg* + water-anim-misty + water-anim-misty-mud-behind-skeleton-lod0-jg + -1 + ((water-anim-misty-mud-behind-skeleton-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 4 25)) + +(defskelgroup *water-anim-misty-mud-above-skull-back-sg* + water-anim-misty + water-anim-misty-mud-above-skull-back-lod0-jg + -1 + ((water-anim-misty-mud-above-skull-back-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 14)) + +(defskelgroup *water-anim-misty-mud-above-skull-front-sg* + water-anim-misty + water-anim-misty-mud-above-skull-front-lod0-jg + -1 + ((water-anim-misty-mud-above-skull-front-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 16)) + +(defskelgroup *water-anim-misty-mud-other-near-skull-sg* + water-anim-misty + water-anim-misty-mud-other-near-skull-lod0-jg + -1 + ((water-anim-misty-mud-other-near-skull-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 13)) + +(defskelgroup *water-anim-misty-mud-near-skull-sg* + water-anim-misty + water-anim-misty-mud-near-skull-lod0-jg + -1 + ((water-anim-misty-mud-near-skull-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 15)) + +(defskelgroup *water-anim-misty-mud-under-spine-sg* + water-anim-misty + water-anim-misty-mud-under-spine-lod0-jg + -1 + ((water-anim-misty-mud-under-spine-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 16)) + +(defskelgroup *water-anim-misty-mud-by-dock-sg* + water-anim-misty + water-anim-misty-mud-by-dock-lod0-jg + -1 + ((water-anim-misty-mud-by-dock-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 21)) + +(defskelgroup *water-anim-misty-mud-island-near-dock-sg* + water-anim-misty + water-anim-misty-mud-island-near-dock-lod0-jg + -1 + ((water-anim-misty-mud-island-near-dock-lod0-mg (meters 999999))) + :bounds (static-spherem -1 0 -1 15)) + +(defskelgroup *water-anim-misty-mud-lonely-island-sg* + water-anim-misty + water-anim-misty-mud-lonely-island-lod0-jg + -1 + ((water-anim-misty-mud-lonely-island-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) + +(defskelgroup *water-anim-misty-dark-eco-pool-sg* + water-anim-misty + water-anim-misty-dark-eco-pool-lod0-jg + -1 + ((water-anim-misty-dark-eco-pool-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 17)) + +(defskelgroup *water-anim-ogre-lava-sg* + water-anim-ogre + water-anim-ogre-lava-lod0-jg + -1 + ((water-anim-ogre-lava-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 112)) + +(defskelgroup *water-anim-jungle-river-sg* + water-anim-jungle + water-anim-jungle-river-lod0-jg + -1 + ((water-anim-jungle-river-lod0-mg (meters 20)) (water-anim-jungle-river-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 91)) + +(defskelgroup *water-anim-village3-lava-sg* + water-anim-village3 + water-anim-village3-lava-lod0-jg + -1 + ((water-anim-village3-lava-lod0-mg (meters 20)) (water-anim-village3-lava-lod1-mg (meters 999999))) + :bounds (static-spherem 15 0 10 163)) + +(defskelgroup *water-anim-training-lake-sg* + water-anim-training + water-anim-training-lake-lod0-jg + -1 + ((water-anim-training-lake-lod0-mg (meters 999999))) + :bounds (static-spherem -18 0 0 52)) + +(defskelgroup *water-anim-darkcave-water-with-crystal-sg* + water-anim-darkcave + water-anim-darkcave-water-with-crystal-lod0-jg + -1 + ((water-anim-darkcave-water-with-crystal-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 19)) + +(defskelgroup *water-anim-rolling-water-back-sg* + water-anim-rolling + water-anim-rolling-water-back-lod0-jg + -1 + ((water-anim-rolling-water-back-lod0-mg (meters 999999))) + :bounds (static-spherem -10 0 0 70)) + +(defskelgroup *water-anim-rolling-water-front-sg* + water-anim-rolling + water-anim-rolling-water-front-lod0-jg + -1 + ((water-anim-rolling-water-front-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 70)) + +(defskelgroup *water-anim-finalboss-dark-eco-pool-sg* + water-anim-finalboss + water-anim-finalboss-dark-eco-pool-lod0-jg + -1 + ((water-anim-finalboss-dark-eco-pool-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 19)) + +(defskelgroup *water-anim-lavatube-energy-lava-sg* + water-anim-lavatube + water-anim-lavatube-energy-lava-lod0-jg + -1 + ((water-anim-lavatube-energy-lava-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -7 0 25)) + +(defskelgroup *water-anim-village1-rice-paddy-sg* + water-anim-village1 + water-anim-village1-rice-paddy-lod0-jg + -1 + ((water-anim-village1-rice-paddy-lod0-mg (meters 999999))) + :bounds (static-spherem -15 0 0 27)) + +(defskelgroup *water-anim-village1-fountain-sg* + water-anim-village1 + water-anim-village1-fountain-lod0-jg + -1 + ((water-anim-village1-fountain-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4.5)) + +(defskelgroup *water-anim-village1-rice-paddy-mid-sg* + water-anim-village1 + water-anim-village1-rice-paddy-mid-lod0-jg + -1 + ((water-anim-village1-rice-paddy-mid-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 35)) + +(defskelgroup *water-anim-village1-rice-paddy-top-sg* + water-anim-village1 + water-anim-village1-rice-paddy-top-lod0-jg + -1 + ((water-anim-village1-rice-paddy-top-lod0-mg (meters 999999))) + :bounds (static-spherem 6 0 -17 20)) + +(defskelgroup *water-anim-village2-bucket-sg* + water-anim-village2 + water-anim-village2-bucket-lod0-jg + -1 + ((water-anim-village2-bucket-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 0.7)) (deftype water-anim-look (structure) - ((skel-group symbol) - (anim int32) - (ambient-sound-spec sound-spec) - ) - ) - + ((skel-group symbol) + (anim int32) + (ambient-sound-spec sound-spec))) (define *water-anim-look* - (new 'static 'boxed-array :type water-anim-look - (new 'static 'water-anim-look - :skel-group '*water-anim-sunken-big-room-sg* - :anim 24 - :ambient-sound-spec (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :fo-min 50 :fo-max 60) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-sunken-qbert-room-sg* - :anim 24 - :ambient-sound-spec (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :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 (static-sound-spec "darkeco-pool" :fo-min 40 :fo-max 50) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-sunken-short-piece-sg* - :anim 24 - :ambient-sound-spec (static-sound-spec "water-loop" :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 (static-sound-spec "water-loop" :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 (static-sound-spec "darkeco-pool" :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 (static-sound-spec "darkeco-pool" :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 (static-sound-spec "darkeco-pool" :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 (static-sound-spec "darkeco-pool" :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 (static-sound-spec "darkeco-pool" :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 (static-sound-spec "darkeco-pool" :fo-min 51 :fo-max 61) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-robocave-main-pool-sg* - :anim 3 - :ambient-sound-spec (static-sound-spec "darkeco-pool" :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 (static-sound-spec "darkeco-pool" :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 (static-sound-spec "helix-dark-eco" :fo-min 120 :fo-max 130) - ) - (new 'static 'water-anim-look - :skel-group '*water-anim-finalboss-dark-eco-pool-sg* - :anim 2 - :ambient-sound-spec (static-sound-spec "darkeco-pool" :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 + 'boxed-array + :type + water-anim-look + (new 'static + 'water-anim-look + :skel-group '*water-anim-sunken-big-room-sg* + :anim 24 + :ambient-sound-spec + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :fo-min 50 :fo-max 60)) + (new 'static + 'water-anim-look + :skel-group '*water-anim-sunken-qbert-room-sg* + :anim 24 + :ambient-sound-spec + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :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 + (static-sound-spec "darkeco-pool" :fo-min 40 :fo-max 50)) + (new 'static + 'water-anim-look + :skel-group '*water-anim-sunken-short-piece-sg* + :anim 24 + :ambient-sound-spec + (static-sound-spec "water-loop" :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 + (static-sound-spec "water-loop" :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 + (static-sound-spec "darkeco-pool" :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 + (static-sound-spec "darkeco-pool" :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 + (static-sound-spec "darkeco-pool" :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 + (static-sound-spec "darkeco-pool" :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 + (static-sound-spec "darkeco-pool" :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 + (static-sound-spec "darkeco-pool" :fo-min 51 :fo-max 61)) + (new 'static + 'water-anim-look + :skel-group '*water-anim-robocave-main-pool-sg* + :anim 3 + :ambient-sound-spec + (static-sound-spec "darkeco-pool" :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 + (static-sound-spec "darkeco-pool" :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 + (static-sound-spec "helix-dark-eco" :fo-min 120 :fo-max 130)) + (new 'static + 'water-anim-look + :skel-group '*water-anim-finalboss-dark-eco-pool-sg* + :anim 2 + :ambient-sound-spec + (static-sound-spec "darkeco-pool" :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 ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('move-to) - (set! (-> self root trans quad) (-> (the-as vector (-> block 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) - ) - ) - (if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('move-to) + (set! (-> self root trans quad) (-> (the-as vector (-> block 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))) + (if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y))) (logior! (-> self draw status) (draw-status hidden)) - (logclear! (-> self draw status) (draw-status hidden)) - ) - (if (and (-> self play-ambient-sound?) (nonzero? (-> self sound))) - (update! (-> self sound)) - ) - ) - :code (behavior () - (loop - (ja-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + (logclear! (-> self draw status) (draw-status hidden))) + (if (and (-> self play-ambient-sound?) (nonzero? (-> self sound))) (update! (-> self sound)))) + :code + (behavior () + (loop + (ja-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod get-ripple-height ((this water-anim) (arg0 vector)) - (ripple-find-height this 0 arg0) - ) + (ripple-find-height this 0 arg0)) (defmethod set-stack-size! ((this water-anim)) - (none) - ) + (none)) (defmethod water-vol-method-25 ((this water-anim)) (local-vars (sv-16 res-tag)) @@ -526,53 +561,30 @@ (when v1-3 (+! (-> this root trans x) (-> v1-3 0)) (+! (-> this root trans y) (-> v1-3 1)) - (+! (-> this root trans z) (-> v1-3 2)) - ) - ) + (+! (-> this root trans z) (-> v1-3 2)))) (let ((f0-6 (res-lump-float (-> this entity) 'rotoffset))) - (if (!= f0-6 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-6) - ) - ) - (none) - ) + (if (!= f0-6 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-6))) + (none)) (defmethod water-vol-method-22 ((this water-anim)) (let ((s5-0 (-> this look))) - (if (or (< s5-0 0) (>= s5-0 (-> *water-anim-look* length))) - (go process-drawable-art-error "skel group") - ) + (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 this (the-as skeleton-group 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 this (the-as skeleton-group s4-0) '())) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data (-> s5-1 anim))) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 + (the-as art-joint-anim (-> this 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 (-> this root trans) (-> this draw bounds)) - (set! (-> this sound) (new 'process 'ambient-sound a2-2 a3-0)) - ) - ) - ) - ) - ) + (set! (-> this sound) (new 'process 'ambient-sound a2-2 a3-0))))))) (ja-post) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/common-obs/water-h.gc b/goal_src/jak1/engine/common-obs/water-h.gc index f93d0508d4..c994133ca1 100644 --- a/goal_src/jak1/engine/common-obs/water-h.gc +++ b/goal_src/jak1/engine/common-obs/water-h.gc @@ -1,15 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/main-h.gc") (require "engine/game/game-h.gc") (require "kernel/gkernel-h.gc") - -;; name: water-h.gc -;; name in dgo: water-h -;; dgos: GAME, ENGINE - (defenum water-flags :bitfield #t :type uint32 @@ -44,64 +38,58 @@ (wt28) (wt29) (wt30) - (wt31) - ) + (wt31)) ;; DECOMP BEGINS (deftype water-control (basic) - ((flags water-flags) - (process process-drawable) - (joint-index int32) - (top-y-offset float) - (ripple-size meters) - (enter-water-time time-frame) - (wade-time time-frame) - (on-water-time time-frame) - (enter-swim-time time-frame) - (swim-time time-frame) - (base-height meters) - (wade-height meters) - (swim-height meters) - (surface-height meters) - (bottom-height meters) - (height meters) - (height-offset float 4) - (real-ocean-offset meters :overlay-at (-> height-offset 0)) - (ocean-offset meters :overlay-at (-> height-offset 1)) - (bob-offset meters :overlay-at (-> height-offset 2)) - (align-offset meters :overlay-at (-> height-offset 3)) - (swim-depth meters) - (bob smush-control :inline) - (volume handle) - (bottom vector 2 :inline) - (top vector 2 :inline) - (enter-water-pos vector :inline) - (drip-old-pos vector :inline) - (drip-joint-index int32) - (drip-wetness float) - (drip-time time-frame) - (drip-speed float) - (drip-height meters) - (drip-mult float) - ) + ((flags water-flags) + (process process-drawable) + (joint-index int32) + (top-y-offset float) + (ripple-size meters) + (enter-water-time time-frame) + (wade-time time-frame) + (on-water-time time-frame) + (enter-swim-time time-frame) + (swim-time time-frame) + (base-height meters) + (wade-height meters) + (swim-height meters) + (surface-height meters) + (bottom-height meters) + (height meters) + (height-offset float 4) + (real-ocean-offset meters :overlay-at (-> height-offset 0)) + (ocean-offset meters :overlay-at (-> height-offset 1)) + (bob-offset meters :overlay-at (-> height-offset 2)) + (align-offset meters :overlay-at (-> height-offset 3)) + (swim-depth meters) + (bob smush-control :inline) + (volume handle) + (bottom vector 2 :inline) + (top vector 2 :inline) + (enter-water-pos vector :inline) + (drip-old-pos vector :inline) + (drip-joint-index int32) + (drip-wetness float) + (drip-time time-frame) + (drip-speed float) + (drip-height meters) + (drip-mult float)) (:methods - (new (symbol type process int float float float) _type_) - (water-control-method-9 (_type_) none) - (water-control-method-10 (_type_) none) - (start-bobbing! (_type_ float int int) none) - (distance-from-surface (_type_) float) - (create-splash (_type_ float vector int vector) none) - (display-water-marks? (_type_) symbol) - (water-control-method-15 (_type_) none) - (water-control-method-16 (_type_) none) - ) - ) - + (new (symbol type process int float float float) _type_) + (water-control-method-9 (_type_) none) + (water-control-method-10 (_type_) none) + (start-bobbing! (_type_ float int int) none) + (distance-from-surface (_type_) float) + (create-splash (_type_ float vector int vector) none) + (display-water-marks? (_type_) symbol) + (water-control-method-15 (_type_) none) + (water-control-method-16 (_type_) none))) (defmethod display-water-marks? ((this water-control)) - (and *display-water-marks* (logtest? (-> this flags) (water-flags wt00))) - ) + (and *display-water-marks* (logtest? (-> this flags) (water-flags wt00)))) (defmethod new water-control ((allocation symbol) (type-to-make type) (arg0 process) (arg1 int) (arg2 float) (arg3 float) (arg4 float)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -114,35 +102,28 @@ (set! (-> v0-0 volume) (the-as handle #f)) (set! (-> v0-0 drip-mult) 1.0) (set! (-> v0-0 top-y-offset) arg2) - v0-0 - ) - ) + v0-0)) (defmethod distance-from-surface ((this water-control)) - (- (-> this top 0 y) (-> this height)) - ) + (- (-> this top 0 y) (-> this height))) (deftype water-vol (process-drawable) - ((water-height meters) - (wade-height meters) - (swim-height meters) - (bottom-height meters) - (attack-event symbol) - (target handle) - (flags water-flags) - ) + ((water-height meters) + (wade-height meters) + (swim-height meters) + (bottom-height meters) + (attack-event symbol) + (target handle) + (flags water-flags)) (:state-methods - water-vol-idle - water-vol-startup - ) + water-vol-idle + water-vol-startup) (:methods - (water-vol-method-22 (_type_) none) - (reset-root! (_type_) none) - (set-stack-size! (_type_) none) - (water-vol-method-25 (_type_) none) - (update! (_type_) none) - (on-exit-water (_type_) none) - (get-ripple-height (_type_ vector) float) - (init! (_type_) none) - ) - ) + (water-vol-method-22 (_type_) none) + (reset-root! (_type_) none) + (set-stack-size! (_type_) none) + (water-vol-method-25 (_type_) none) + (update! (_type_) none) + (on-exit-water (_type_) none) + (get-ripple-height (_type_ vector) float) + (init! (_type_) none))) diff --git a/goal_src/jak1/engine/common-obs/water.gc b/goal_src/jak1/engine/common-obs/water.gc index ffceb88a98..3adb9d2e18 100644 --- a/goal_src/jak1/engine/common-obs/water.gc +++ b/goal_src/jak1/engine/common-obs/water.gc @@ -1,53 +1,44 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/effect-control.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/gfx/foreground/ripple.gc") (require "engine/common-obs/water-h.gc") (require "engine/geometry/vol.gc") -;; name: water.gc -;; name in dgo: water -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defpart 108 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 0.6)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:scalevel-x (meters 0.0016666667) (meters 0.001)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 109) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.6)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.0016666667) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 109))) (defpart 109 - :init-specs ((:fade-a -0.2)) - ) + :init-specs ((:fade-a -0.2))) (defun birth-func-y->userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (+! (-> arg1 user-float) (-> arg2 vector 0 y)) 0 - (none) - ) + (none)) (defun birth-func-ocean-height ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 0 y) (+ (ocean-get-height (the-as vector (-> arg2 vector))) (-> arg1 user-float))) 0 - (none) - ) + (none)) (defun check-water-level-drop ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (and (< (-> arg2 y) (-> arg1 user-float)) (< (-> arg1 vel-sxvel y) 0.0)) @@ -55,591 +46,535 @@ (sp-kill-particle arg0 arg1) (set-vector! s5-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (sound-play "water-drop" :position (the-as symbol s5-0)) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 108) s5-0) - ) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 108) s5-0))) 0 - (none) - ) + (none)) (defun check-water-level-drop-and-die ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (if (and (< (-> arg2 y) (-> arg1 user-float)) (< (-> arg1 vel-sxvel y) 0.0)) - (sp-kill-particle arg0 arg1) - ) - (none) - ) + (if (and (< (-> arg2 y) (-> arg1 user-float)) (< (-> arg1 vel-sxvel y) 0.0)) (sp-kill-particle arg0 arg1)) + (none)) (defun check-water-level-above-and-die ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (if (>= (-> arg2 y) (-> arg1 user-float)) - (sp-kill-particle arg0 arg1) - ) - (none) - ) + (if (>= (-> arg2 y) (-> arg1 user-float)) (sp-kill-particle arg0 arg1)) + (none)) (defpart 110 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 12.0) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.05) (meters 0.1)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 0.05) (meters 0.05)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0 40.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.96) - (:timer (seconds 5)) - (:flags (bit2 bit3)) - (:userdata 0.0) - (:func 'check-water-level-above-and-die) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 12.0) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.05) (meters 0.1)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 0.05) (meters 0.05)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0 40.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (bit2 bit3)) + (:userdata 0.0) + (:func 'check-water-level-above-and-die) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 111 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -0.25) (meters 0.5)) - (:y (meters 0.15)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y (meters 0.15) (meters 0.05)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:accel-y (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 5)) - (:flags (bit2 bit3)) - (:userdata 0.0) - (:func 'check-water-level-above-and-die) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -0.25) (meters 0.5)) + (:y (meters 0.15)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y (meters 0.15) (meters 0.05)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:accel-y (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (bit2 bit3)) + (:userdata 0.0) + (:func 'check-water-level-above-and-die) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 112 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.2) (meters 0.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.0016666667) (meters 0.001)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.42666668) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 113) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.2) (meters 0.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.0016666667) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.42666668) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 113))) (defpart 113 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 114)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 114))) (defpart 114 - :init-specs ((:fade-a -0.7111111)) - ) + :init-specs ((:fade-a -0.7111111))) (defpart 115 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.04 0.03) - (:x (meters -0.2) (meters 0.4)) - (:z (meters -0.2) (meters 0.4)) - (:scale-x (meters 0.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.008333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.64) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 116) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.04 0.03) + (:x (meters -0.2) (meters 0.4)) + (:z (meters -0.2) (meters 0.4)) + (:scale-x (meters 0.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.008333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.64) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 116))) (defpart 116 - :init-specs ((:scalevel-x (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.0) - (:next-time (seconds 0.5)) - (:next-launcher 117) - ) - ) + :init-specs + ((:scalevel-x (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.0) + (:next-time (seconds 0.5)) + (:next-launcher 117))) (defpart 117 - :init-specs ((:scalevel-x (meters 0.005)) (:scalevel-y :copy scalevel-x) (:fade-a -0.32)) - ) + :init-specs ((:scalevel-x (meters 0.005)) (:scalevel-y :copy scalevel-x) (:fade-a -0.32))) (defpart 118 - :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x2)) - (:num 0.06) - (:x (meters 10)) - (:scale-x (meters 0.75) (meters 1.5)) - (:rot-y (degrees 0)) - (:scale-y (meters 0.75) (meters 1.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0033333334) (meters 0.004333333)) - (:scalevel-y (meters 0.0033333334) (meters 0.004333333)) - (:fade-a 0.7111111) - (:friction 0.94) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.3)) - (:next-launcher 119) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xa :page #x2)) + (:num 0.06) + (:x (meters 10)) + (:scale-x (meters 0.75) (meters 1.5)) + (:rot-y (degrees 0)) + (:scale-y (meters 0.75) (meters 1.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.004333333)) + (:scalevel-y (meters 0.0033333334) (meters 0.004333333)) + (:fade-a 0.7111111) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.3)) + (:next-launcher 119) + (:rotate-y (degrees 0)))) (defpart 119 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.3) (seconds 0.397)) (:next-launcher 120)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.3) (seconds 0.397)) (:next-launcher 120))) (defpart 120 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpart 121 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05 0.4) - (:x (meters -0.5) (meters 1)) - (:z (meters 0.5) (meters 1.5)) - (:scale-x (meters 0.2) (meters 0.7)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.0016666667) (meters 0.003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.42666668) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 122) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05 0.4) + (:x (meters -0.5) (meters 1)) + (:z (meters 0.5) (meters 1.5)) + (:scale-x (meters 0.2) (meters 0.7)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.0016666667) (meters 0.003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.42666668) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 122) + (:rotate-y (degrees 0)))) (defpart 122 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 123)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 123))) (defpart 123 - :init-specs ((:fade-a -0.7111111)) - ) + :init-specs ((:fade-a -0.7111111))) (defpartgroup group-part-water-splash :id 40 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) - (sp-item 125 :period (seconds 3) :length (seconds 0.05)) - (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 128 :period (seconds 3) :length (seconds 0.05) :binding 129) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 130 :flags (is-3d) :period (seconds 3) :length (seconds 0.05) :offset 840) - (sp-item 131 :flags (is-3d) :period (seconds 3) :length (seconds 0.2) :offset 840) - (sp-item 132 :period (seconds 3) :length (seconds 0.035) :offset 840 :binding 133) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) - ) - ) + :parts + ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) + (sp-item 125 :period (seconds 3) :length (seconds 0.05)) + (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 128 :period (seconds 3) :length (seconds 0.05) :binding 129) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 130 :flags (is-3d) :period (seconds 3) :length (seconds 0.05) :offset 840) + (sp-item 131 :flags (is-3d) :period (seconds 3) :length (seconds 0.2) :offset 840) + (sp-item 132 :period (seconds 3) :length (seconds 0.035) :offset 840 :binding 133) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840) + (sp-item 133 :flags (start-dead) :period (seconds 3) :length (seconds 0.4) :offset 840))) (defpartgroup group-part-water-splash-small :id 41 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) - (sp-item 125 :period (seconds 3) :length (seconds 0.05)) - (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - ) - ) + :parts + ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) + (sp-item 125 :period (seconds 3) :length (seconds 0.05)) + (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)))) (defpart 129 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.4) - (:x (meters -0.2) (meters 0.4)) - (:y (meters -0.2) (meters 0.4)) - (:scale-x (meters 0.05) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:scalevel-x (meters 0.000033333334)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00040000002) (meters -0.00020000001)) - (:timer (seconds 1.5)) - (:flags (bit3)) - (:userdata 0.0) - (:func 'check-water-level-drop-and-die) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.4) + (:x (meters -0.2) (meters 0.4)) + (:y (meters -0.2) (meters 0.4)) + (:scale-x (meters 0.05) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:scalevel-x (meters 0.000033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00040000002) (meters -0.00020000001)) + (:timer (seconds 1.5)) + (:flags (bit3)) + (:userdata 0.0) + (:func 'check-water-level-drop-and-die))) (defpart 133 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.4) - (:x (meters -0.2) (meters 0.4)) - (:y (meters -0.2) (meters 0.4)) - (:scale-x (meters 0.05) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:scalevel-x (meters 0.000033333334)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00040000002) (meters -0.00020000001)) - (:timer (seconds 1.5)) - (:flags (bit3)) - (:userdata 0.0) - (:func 'check-water-level-drop-and-die) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.4) + (:x (meters -0.2) (meters 0.4)) + (:y (meters -0.2) (meters 0.4)) + (:scale-x (meters 0.05) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:scalevel-x (meters 0.000033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00040000002) (meters -0.00020000001)) + (:timer (seconds 1.5)) + (:flags (bit3)) + (:userdata 0.0) + (:func 'check-water-level-drop-and-die))) (defpart 131 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.3) - (:scale-x (meters 0.080000006) (meters 0.32000002)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y (meters 0.080000006) (meters 0.32000002)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.004) (meters 0.0090666665)) - (:scalevel-y (meters 0.004) (meters 0.0090666665)) - (:fade-a 0.32) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 134) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.3) + (:scale-x (meters 0.080000006) (meters 0.32000002)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y (meters 0.080000006) (meters 0.32000002)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.004) (meters 0.0090666665)) + (:scalevel-y (meters 0.004) (meters 0.0090666665)) + (:fade-a 0.32) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 134))) (defpart 132 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 3.2) - (:x (meters -0.2) (meters 0.4)) - (:y (meters -0.2) (meters 0.4)) - (:scale-x (meters 0.35) (meters 0.075)) - (:scale-y (meters 0.2) (meters 0.075)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:vel-x (meters -0.002) (meters 0.004)) - (:vel-y (meters 0.018666666) (meters 0.0053333333)) - (:vel-z (meters -0.002) (meters 0.004)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00080000004) (meters -0.00020000001)) - (:timer (seconds 3)) - (:flags (bit3)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:next-time (seconds 0.4)) - (:next-launcher 135) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 3.2) + (:x (meters -0.2) (meters 0.4)) + (:y (meters -0.2) (meters 0.4)) + (:scale-x (meters 0.35) (meters 0.075)) + (:scale-y (meters 0.2) (meters 0.075)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:vel-x (meters -0.002) (meters 0.004)) + (:vel-y (meters 0.018666666) (meters 0.0053333333)) + (:vel-z (meters -0.002) (meters 0.004)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00080000004) (meters -0.00020000001)) + (:timer (seconds 3)) + (:flags (bit3)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:next-time (seconds 0.4)) + (:next-launcher 135))) (defpart 130 - :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.24000001) (meters 0.71999997)) - (:rot-x (degrees 90)) - (:rot-y (degrees 0) (degrees 360)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.8) (meters 1.7600001)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:scalevel-y (meters 0.053333335) (meters 0.013333334)) - (:timer (seconds 0.8)) - (:flags (bit2 bit3 left-multiply-quat set-conerot)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x10 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.24000001) (meters 0.71999997)) + (:rot-x (degrees 90)) + (:rot-y (degrees 0) (degrees 360)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.8) (meters 1.7600001)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:scalevel-y (meters 0.053333335) (meters 0.013333334)) + (:timer (seconds 0.8)) + (:flags (bit2 bit3 left-multiply-quat set-conerot)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 136))) (defpart 136 - :init-specs ((:scalevel-y (meters 0.026666667)) (:next-time (seconds 0.067)) (:next-launcher 137)) - ) + :init-specs ((:scalevel-y (meters 0.026666667)) (:next-time (seconds 0.067)) (:next-launcher 137))) (defpart 137 - :init-specs ((:scalevel-y (meters 0)) (:fade-a -0.64) (:next-time (seconds 0.067)) (:next-launcher 138)) - ) + :init-specs ((:scalevel-y (meters 0)) (:fade-a -0.64) (:next-time (seconds 0.067)) (:next-launcher 138))) (defpart 138 - :init-specs ((:scalevel-x (meters 0.0016666667)) - (:scalevel-y (meters -0.026666667)) - (:next-time (seconds 0.067)) - (:next-launcher 139) - ) - ) + :init-specs + ((:scalevel-x (meters 0.0016666667)) + (:scalevel-y (meters -0.026666667)) + (:next-time (seconds 0.067)) + (:next-launcher 139))) (defpart 139 - :init-specs ((:scalevel-x (meters 0.0033333334)) (:scalevel-y (meters -0.053333335))) - ) + :init-specs ((:scalevel-x (meters 0.0033333334)) (:scalevel-y (meters -0.053333335)))) (defpart 126 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 2.4) (meters 1.6)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y (meters 2.4) (meters 1.6)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.004) (meters 0.0037333334)) - (:scalevel-y (meters 0.004) (meters 0.0037333334)) - (:fade-a 0.32) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 134) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 2.4) (meters 1.6)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y (meters 2.4) (meters 1.6)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.004) (meters 0.0037333334)) + (:scalevel-y (meters 0.004) (meters 0.0037333334)) + (:fade-a 0.32) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 134))) (defpart 134 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 140)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 140))) (defpart 140 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 127 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.5 1.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.4) (meters 0.8)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.8)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.004) (meters 0.0026666666)) - (:scalevel-y (meters 0.004) (meters 0.0026666666)) - (:fade-a 0.32) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 134) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.5 1.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.4) (meters 0.8)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.8)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.004) (meters 0.0026666666)) + (:scalevel-y (meters 0.004) (meters 0.0026666666)) + (:fade-a 0.32) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 134))) (defpart 128 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 3.2) - (:x (meters 0.96000004)) - (:scale-x (meters 0.35) (meters 0.075)) - (:scale-y (meters 0.2) (meters 0.075)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:vel-x (meters 0.0026666666) (meters 0.0053333333)) - (:vel-y (meters 0.016) (meters 0.0053333333)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00080000004) (meters -0.00020000001)) - (:timer (seconds 3)) - (:flags (bit3)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:next-time (seconds 0.4)) - (:next-launcher 135) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 3.2) + (:x (meters 0.96000004)) + (:scale-x (meters 0.35) (meters 0.075)) + (:scale-y (meters 0.2) (meters 0.075)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:vel-x (meters 0.0026666666) (meters 0.0053333333)) + (:vel-y (meters 0.016) (meters 0.0053333333)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00080000004) (meters -0.00020000001)) + (:timer (seconds 3)) + (:flags (bit3)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:next-time (seconds 0.4)) + (:next-launcher 135) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 135 - :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x)) - ) + :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x))) (defpart 125 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 8.0) - (:x (meters 0.8)) - (:scale-x (meters 0.15) (meters 0.05)) - (:scale-y (meters 0.15) (meters 0.05)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:vel-x (meters 0.0026666666) (meters 0.0053333333)) - (:vel-y (meters 0.0053333333) (meters 0.0053333333)) - (:scalevel-x (meters -0.00033333333)) - (:scalevel-y (meters -0.00033333333)) - (:accel-y (meters -0.0005333334) (meters -0.00013333335)) - (:timer (seconds 1.25)) - (:flags (bit2 bit3)) - (:userdata 0.0) - (:func 'check-water-level-drop-and-die) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 8.0) + (:x (meters 0.8)) + (:scale-x (meters 0.15) (meters 0.05)) + (:scale-y (meters 0.15) (meters 0.05)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:vel-x (meters 0.0026666666) (meters 0.0053333333)) + (:vel-y (meters 0.0053333333) (meters 0.0053333333)) + (:scalevel-x (meters -0.00033333333)) + (:scalevel-y (meters -0.00033333333)) + (:accel-y (meters -0.0005333334) (meters -0.00013333335)) + (:timer (seconds 1.25)) + (:flags (bit2 bit3)) + (:userdata 0.0) + (:func 'check-water-level-drop-and-die) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 124 - :init-specs ((:texture (new 'static 'texture-id :index #x10 :page #x2)) - (:num 1.5) - (:x (meters 0.96000004) (meters 0.16000001)) - (:scale-x (meters 0.32000002) (meters 0.96000004)) - (:rot-x (degrees 90)) - (:rot-y (degrees 90)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.16000001) (meters 1.7600001)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 48.0 24.0) - (:vel-x (meters 0.0026666666)) - (:scalevel-x (meters 0) (meters 0.0016666667)) - (:rotvel-x (degrees 0.2)) - (:scalevel-y (meters 0.04)) - (:timer (seconds 0.8)) - (:flags (bit2 bit3 left-multiply-quat set-conerot)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 141) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x10 :page #x2)) + (:num 1.5) + (:x (meters 0.96000004) (meters 0.16000001)) + (:scale-x (meters 0.32000002) (meters 0.96000004)) + (:rot-x (degrees 90)) + (:rot-y (degrees 90)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.16000001) (meters 1.7600001)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 48.0 24.0) + (:vel-x (meters 0.0026666666)) + (:scalevel-x (meters 0) (meters 0.0016666667)) + (:rotvel-x (degrees 0.2)) + (:scalevel-y (meters 0.04)) + (:timer (seconds 0.8)) + (:flags (bit2 bit3 left-multiply-quat set-conerot)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 141) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 141 - :init-specs ((:scalevel-x (meters 0)) - (:rotvel-x (degrees 0.16666667)) - (:scalevel-y (meters 0.016666668)) - (:next-time (seconds 0.067)) - (:next-launcher 142) - ) - ) + :init-specs + ((:scalevel-x (meters 0)) + (:rotvel-x (degrees 0.16666667)) + (:scalevel-y (meters 0.016666668)) + (:next-time (seconds 0.067)) + (:next-launcher 142))) (defpart 142 - :init-specs ((:rotvel-x (degrees 0.13333334)) - (:scalevel-y (meters 0)) - (:fade-a -0.64) - (:next-time (seconds 0.067)) - (:next-launcher 143) - ) - ) + :init-specs + ((:rotvel-x (degrees 0.13333334)) + (:scalevel-y (meters 0)) + (:fade-a -0.64) + (:next-time (seconds 0.067)) + (:next-launcher 143))) (defpart 143 - :init-specs ((:rotvel-x (degrees 0.1)) - (:scalevel-y (meters -0.016666668)) - (:next-time (seconds 0.067)) - (:next-launcher 144) - ) - ) + :init-specs ((:rotvel-x (degrees 0.1)) (:scalevel-y (meters -0.016666668)) (:next-time (seconds 0.067)) (:next-launcher 144))) (defpart 144 - :init-specs ((:rotvel-x (degrees 0.06666667)) (:scalevel-y (meters -0.033333335))) - ) + :init-specs ((:rotvel-x (degrees 0.06666667)) (:scalevel-y (meters -0.033333335)))) (defpart 145 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.15) (meters 0.05)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:vel-x (meters -0.016666668) (meters 0.0016666667)) - (:vel-y (meters 0.016666668)) - (:vel-z (meters -0.016666668) (meters 0.0016666667)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:userdata 0.0) - (:func 'check-water-level-drop-and-die) - (:next-time (seconds 0.75)) - (:next-launcher 114) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.15) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:vel-x (meters -0.016666668) (meters 0.0016666667)) + (:vel-y (meters 0.016666668)) + (:vel-z (meters -0.016666668) (meters 0.0016666667)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:userdata 0.0) + (:func 'check-water-level-drop-and-die) + (:next-time (seconds 0.75)) + (:next-launcher 114))) (defmethod water-control-method-9 ((this water-control)) 0 - (none) - ) + (none)) (defmethod water-control-method-10 ((this water-control)) (with-pp (let ((s5-0 (-> this flags))) (cond ((not (logtest? (-> this flags) (water-flags wt01))) - (logclear! (-> this flags) (water-flags wt09 wt10 wt11 wt12 wt13 wt14 wt16)) - ) - ((and (logtest? (water-flags wt21) (-> this flags)) - (logtest? (-> this process state-flags) (state-flags grabbed)) - ) - (logior! (-> this flags) (water-flags wt16)) - ) + (logclear! (-> this flags) (water-flags wt09 wt10 wt11 wt12 wt13 wt14 wt16))) + ((and (logtest? (water-flags wt21) (-> this flags)) (logtest? (-> this process state-flags) (state-flags grabbed))) + (logior! (-> this flags) (water-flags wt16))) ((begin (set! (-> this top 1 quad) (-> this top 0 quad)) (vector<-cspace! (the-as vector (-> this top)) (-> this process node-list data (-> this joint-index))) @@ -650,62 +585,32 @@ (set! (-> this bob-offset) (update! (-> this bob))) (cond ((and (logtest? (-> this flags) (water-flags wt08)) - (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) root-prim prim-core action) - (collide-action racer) - ) - ) - ) - (set! (-> this real-ocean-offset) - (- (ocean-get-height (the-as vector (-> this bottom))) (-> this base-height)) - ) + (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) root-prim prim-core action) (collide-action racer)))) + (set! (-> this real-ocean-offset) (- (ocean-get-height (the-as vector (-> this bottom))) (-> this base-height))) (if (not (logtest? (-> this flags) (water-flags wt09))) - (set! (-> this ocean-offset) (-> this real-ocean-offset)) - (set! (-> this ocean-offset) (lerp (-> this ocean-offset) (-> this real-ocean-offset) 0.2)) - ) - ) + (set! (-> this ocean-offset) (-> this real-ocean-offset)) + (set! (-> this ocean-offset) (lerp (-> this ocean-offset) (-> this real-ocean-offset) 0.2)))) ((logtest? (water-flags wt20) (-> this flags)) (let* ((a0-26 (-> this volume process 0)) - (f30-0 (ripple-find-height (the-as process-drawable a0-26) 0 (the-as vector (-> this bottom)))) - ) + (f30-0 (ripple-find-height (the-as process-drawable a0-26) 0 (the-as vector (-> this bottom))))) (set! (-> this real-ocean-offset) (- f30-0 (-> this base-height))) (if (not (logtest? (-> this flags) (water-flags wt09))) - (set! (-> this ocean-offset) (-> this real-ocean-offset)) - (set! (-> this ocean-offset) (lerp (-> this ocean-offset) (-> this real-ocean-offset) 0.2)) - ) - (let ((v1-36 (new 'stack-no-clear 'vector))) - (set! (-> v1-36 quad) (-> this bottom 0 quad)) - (set! (-> v1-36 y) f30-0) - ) - ) - ) - (else - (set! (-> this real-ocean-offset) 0.0) - (set! (-> this ocean-offset) 0.0) - ) - ) - (if (logtest? (-> (the-as collide-shape-moving (-> this process root)) root-prim prim-core action) - (collide-action racer) - ) - (set! (-> this bob-offset) 0.0) - ) - (set! (-> this height) - (+ (-> this base-height) (-> this ocean-offset) (-> this bob-offset) (-> this align-offset)) - ) + (set! (-> this ocean-offset) (-> this real-ocean-offset)) + (set! (-> this ocean-offset) (lerp (-> this ocean-offset) (-> this real-ocean-offset) 0.2))) + (let ((v1-36 (new 'stack-no-clear 'vector))) (set! (-> v1-36 quad) (-> this bottom 0 quad)) (set! (-> v1-36 y) f30-0)))) + (else (set! (-> this real-ocean-offset) 0.0) (set! (-> this ocean-offset) 0.0))) + (if (logtest? (-> (the-as collide-shape-moving (-> this process root)) root-prim prim-core action) (collide-action racer)) + (set! (-> this bob-offset) 0.0)) + (set! (-> this height) (+ (-> this base-height) (-> this ocean-offset) (-> this bob-offset) (-> this align-offset))) (set! (-> this surface-height) (+ (-> this base-height) (-> this real-ocean-offset))) - (set! (-> this swim-depth) - (fmax 0.0 (- (- (-> this surface-height) (-> this swim-height)) (-> this bottom 0 y))) - ) - (>= (-> this height) (-> this bottom 0 y)) - ) + (set! (-> this swim-depth) (fmax 0.0 (- (- (-> this surface-height) (-> this swim-height)) (-> this bottom 0 y)))) + (>= (-> this height) (-> this bottom 0 y))) (if (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) (cshape-moving-flags on-water)) - (set-time! (-> this on-water-time)) - ) + (set-time! (-> this on-water-time))) (set! (-> this drip-wetness) 1.0) (set! (-> this drip-height) (fmax (- (-> this surface-height) (-> this bottom 0 y)) (-> this drip-height))) (set! (-> this drip-speed) 15.0) - (if (not (logtest? (-> this flags) (water-flags wt09))) - (water-control-method-15 this) - ) + (if (not (logtest? (-> this flags) (water-flags wt09))) (water-control-method-15 this)) (cond ((>= (-> this top 0 y) (-> this height)) (let ((s4-0 (new 'stack-no-clear 'vector))) @@ -715,11 +620,9 @@ (when (and (logtest? (-> this process draw status) (draw-status was-drawn)) (zero? (-> this process draw cur-lod)) (logtest? (water-flags wt22) (-> this flags)) - (logtest? (water-flags wt23) (-> this flags)) - ) + (logtest? (water-flags wt23) (-> this flags))) (let ((f30-1 (y-angle (-> this process root))) - (f28-0 (vector-xz-length (-> this process root transv))) - ) + (f28-0 (vector-xz-length (-> this process root transv)))) (set! (-> *part-id-table* 118 init-specs 4 initial-valuef) (+ 24576.0 f30-1)) (set! (-> *part-id-table* 118 init-specs 19 initial-valuef) (+ 49152.0 f30-1)) (set! (-> *part-id-table* 118 init-specs 1 initial-valuef) (* 0.0000036621095 f28-0)) @@ -732,54 +635,27 @@ (when (< f28-0 4096.0) (set! (-> *part-id-table* 112 init-specs 4 random-rangef) (-> this ripple-size)) (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 112) s4-0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 115) s4-0) - ) - ) - ) - (if (< (-> this top 1 y) (-> this height)) - (create-splash this 0.2 s4-0 1 (-> this process root transv)) - ) - ) - ) - (else - (logior! (-> this flags) (water-flags wt13)) - ) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 115) s4-0)))) + (if (< (-> this top 1 y) (-> this height)) (create-splash this 0.2 s4-0 1 (-> this process root transv))))) + (else (logior! (-> this flags) (water-flags wt13)))) (when (and (logtest? (-> this flags) (water-flags wt05)) (logtest? (water-flags wt23) (-> this flags))) (let* ((v1-124 (rand-vu-int-range 3 (+ (-> this process node-list length) -1))) - (s4-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data v1-124))) - ) + (s4-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data v1-124)))) (set! (-> *part-id-table* 110 init-specs 16 initial-valuef) (-> this surface-height)) (set! (-> *part-id-table* 110 init-specs 1 initial-valuef) (+ (lerp-scale 12.0 0.4 (the float (- (current-time) (-> this enter-water-time))) 0.0 600.0) - (* 0.00012207031 (vector-xz-length (-> this process root transv))) - ) - ) + (* 0.00012207031 (vector-xz-length (-> this process root transv))))) (launch-particles (-> *part-id-table* 110) s4-1) (set! (-> *part-id-table* 111 init-specs 16 initial-valuef) (-> this surface-height)) - (launch-particles (-> *part-id-table* 111) s4-1) - ) - ) - (let ((f30-3 (- (+ (-> this base-height) (-> this ocean-offset) (-> this bob-offset) (-> this align-offset)) - (-> this swim-height) - ) - ) - ) + (launch-particles (-> *part-id-table* 111) s4-1))) + (let ((f30-3 (- (+ (-> this base-height) (-> this ocean-offset) (-> this bob-offset) (-> this align-offset)) (-> this swim-height)))) (let* ((s4-2 (-> this process root)) - (v1-146 (if (and (nonzero? s4-2) (type-type? (-> s4-2 type) control-info)) - s4-2 - ) - ) - (s4-3 (and v1-146 (not (time-elapsed? (-> (the-as control-info v1-146) unknown-dword11) (seconds 0.5))))) - ) + (v1-146 (if (and (nonzero? s4-2) (type-type? (-> s4-2 type) control-info)) s4-2)) + (s4-3 (and v1-146 (not (time-elapsed? (-> (the-as control-info v1-146) unknown-dword11) (seconds 0.5)))))) (if (and (logtest? (-> this flags) (water-flags wt04)) (and s4-3 - (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) (cshape-moving-flags on-water)) - ) - ) - ) - (set! (-> this bob amp) (* 0.8 (-> this bob amp))) - ) + (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) (cshape-moving-flags on-water))))) + (set! (-> this bob amp) (* 0.8 (-> this bob amp)))) (cond ((and (logtest? (-> this flags) (water-flags wt03)) (or (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) (cshape-moving-flags on-water)) @@ -787,68 +663,45 @@ (and (logtest? s5-0 (water-flags wt11)) (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) (cshape-moving-flags tsurf)) (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) (cshape-moving-flags onsurf))) - (>= (+ 204.8 f30-3) (-> this bottom 0 y)) - ) - ) + (>= (+ 204.8 f30-3) (-> this bottom 0 y)))) (or (logtest? s5-0 (water-flags wt11)) (< 12288.0 (vector-xz-length (-> this process root transv))) (< (+ (current-time) (seconds -0.2)) (-> this enter-water-time)) (>= (+ (- 204.8 (fmin 6144.0 (+ (-> this ocean-offset) (-> this bob-offset) (-> this align-offset)))) f30-3) - (-> this bottom 0 y) - ) - ) - ) + (-> this bottom 0 y)))) (set-time! (-> this swim-time)) (send-event (-> this process) 'swim) (logior! (-> this flags) (water-flags wt11)) - (if (not (logtest? s5-0 (water-flags wt11))) - (set-time! (-> this enter-swim-time)) - ) + (if (not (logtest? s5-0 (water-flags wt11))) (set-time! (-> this enter-swim-time))) (cond ((and (logtest? (-> this flags) (water-flags wt04)) (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) (cshape-moving-flags tsurf)) - (not (logtest? (water-flags wt16) (-> this flags))) - ) + (not (logtest? (water-flags wt16) (-> this flags)))) (let ((v1-200 (new 'stack-no-clear 'vector))) (set! (-> v1-200 quad) (-> this bottom 0 quad)) (set! (-> v1-200 y) (- (-> this height) (-> this swim-height))) (let ((s4-4 (-> this process root))) (when (and (not (logtest? (-> (the-as collide-shape-moving s4-4) status) (cshape-moving-flags csmf12))) (logtest? (-> this flags) (water-flags wt11)) - (not (logtest? (-> (the-as collide-shape-moving s4-4) root-prim prim-core action) (collide-action racer))) - ) + (not (logtest? (-> (the-as collide-shape-moving s4-4) root-prim prim-core action) (collide-action racer)))) (let ((a1-27 (vector-! (new 'stack-no-clear 'vector) v1-200 (-> s4-4 trans)))) (vector-float*! a1-27 a1-27 (-> *display* frames-per-second)) - (integrate-and-collide! (the-as collide-shape-moving s4-4) a1-27) - ) - (logior! (-> (the-as collide-shape-moving s4-4) status) (cshape-moving-flags onsurf onground tsurf on-water)) - ) - ) - ) - ) + (integrate-and-collide! (the-as collide-shape-moving s4-4) a1-27)) + (logior! (-> (the-as collide-shape-moving s4-4) status) (cshape-moving-flags onsurf onground tsurf on-water)))))) ((and (< (-> this bottom 0 y) f30-3) (not (logtest? (water-flags wt16) (-> this flags)))) - (logior! (-> this flags) (water-flags wt12)) - ) - ) - ) + (logior! (-> this flags) (water-flags wt12))))) ((begin - (set! s4-3 (and (logtest? (-> this flags) (water-flags wt02)) - (or (not (!= (-> this bob amp) 0.0)) (time-elapsed? (-> this swim-time) (seconds 0.05))) - (and (>= (- (-> this height) (-> this wade-height)) (-> this bottom 0 y)) s4-3) - ) - ) - s4-3 - ) + (set! s4-3 + (and (logtest? (-> this flags) (water-flags wt02)) + (or (not (!= (-> this bob amp) 0.0)) (time-elapsed? (-> this swim-time) (seconds 0.05))) + (and (>= (- (-> this height) (-> this wade-height)) (-> this bottom 0 y)) s4-3))) + s4-3) (set-time! (-> this wade-time)) (send-event (-> this process) 'wade) - (logior! (-> this flags) (water-flags wt10)) - ) - ) - ) + (logior! (-> this flags) (water-flags wt10))))) (when (and (logtest? (-> this flags) (water-flags wt03)) (< (-> this bottom 1 y) f30-3) - (and (< f30-3 (-> this bottom 0 y)) (logtest? s5-0 (water-flags wt12))) - ) + (and (< f30-3 (-> this bottom 0 y)) (logtest? s5-0 (water-flags wt12)))) (logior! (-> this flags) (water-flags wt11)) (let ((a1-30 (new 'stack-no-clear 'vector))) (set! (-> a1-30 quad) (-> this bottom 0 quad)) @@ -858,132 +711,71 @@ (let ((f30-4 (-> (the-as collide-shape-moving s5-1) ground-impact-vel))) (move-to-ground-point! (the-as collide-shape-moving s5-1) a1-30 (-> s5-1 transv) *up-vector*) (logior! (-> (the-as collide-shape-moving s5-1) status) (cshape-moving-flags on-water)) - (set! (-> (the-as collide-shape-moving s5-1) ground-impact-vel) f30-4) - ) - ) - ) - ) - ) - ) + (set! (-> (the-as collide-shape-moving s5-1) ground-impact-vel) f30-4))))))) (when (and (logtest? (water-flags wt17) (-> this flags)) (= (-> this process type) target)) - (when (and (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) - (cshape-moving-flags onsurf on-water) - ) - (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) root-prim prim-core action) - (collide-action racer) - ) - ) - ) + (when (and (logtest? (-> (the-as collide-shape-moving (-> this process root)) status) (cshape-moving-flags onsurf on-water)) + (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) root-prim prim-core action) (collide-action racer)))) (when (< (-> this process root trans y) -409.6) (send-event (-> this process) 'no-look-around (seconds 1.5)) - (when (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) root-prim prim-core action) - (collide-action flut) - ) - ) + (when (not (logtest? (-> (the-as collide-shape-moving (-> this process root)) root-prim prim-core action) (collide-action flut))) (cond ((= (-> this process type) target) - (send-event - (-> this process) - 'attack - #f - (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 0)) (mode 'tar))) - ) - ) + (send-event (-> this process) + 'attack + #f + (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 0)) (mode 'tar))))) (else - (let ((a1-33 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-33 from) pp) - (set! (-> a1-33 num-params) 4) - (set! (-> a1-33 message) 'attack) - (set! (-> a1-33 param 0) (the-as uint #f)) - (set! (-> a1-33 param 1) (the-as uint 'tar)) - (let ((v1-281 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-281) - (set! (-> a1-33 param 2) (the-as uint v1-281)) - ) - (set! (-> a1-33 param 3) (the-as uint 0)) - (send-event-function (-> this process) a1-33) - ) - ) - ) - ) + (let ((a1-33 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-33 from) pp) + (set! (-> a1-33 num-params) 4) + (set! (-> a1-33 message) 'attack) + (set! (-> a1-33 param 0) (the-as uint #f)) + (set! (-> a1-33 param 1) (the-as uint 'tar)) + (let ((v1-281 (+ *global-attack-id* 1))) + (set! *global-attack-id* v1-281) + (set! (-> a1-33 param 2) (the-as uint v1-281))) + (set! (-> a1-33 param 3) (the-as uint 0)) + (send-event-function (-> this process) a1-33))))) (let ((v1-283 (-> this process))) (set! (-> (the-as collide-shape-moving (-> v1-283 root)) surf) *tar-surface*) - (set! (-> (the-as collide-shape-moving (-> v1-283 root)) ground-pat material) 4) - ) - ) - (set! (-> this swim-height) (lerp (-> this swim-height) 7372.8 0.05)) - ) - ) - ) - (else - (if (logtest? (-> this flags) (water-flags wt09)) - (water-control-method-16 this) - ) - ) - ) - ) + (set! (-> (the-as collide-shape-moving (-> v1-283 root)) ground-pat material) 4))) + (set! (-> this swim-height) (lerp (-> this swim-height) 7372.8 0.05))))) + (else (if (logtest? (-> this flags) (water-flags wt09)) (water-control-method-16 this))))) (when (not (or (not (logtest? (-> this flags) (water-flags wt06))) (not (logtest? (water-flags wt23) (-> this flags))) - (= (-> this drip-wetness) 0.0) - ) - ) + (= (-> this drip-wetness) 0.0))) (cond ((logtest? (-> this flags) (water-flags wt15)) - (let ((a2-15 - (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data (-> this drip-joint-index))) - ) - ) - (set! (-> *part-id-table* 145 init-specs 16 initial-valuef) - (fmax (-> this surface-height) (-> this bottom 0 y)) - ) + (let ((a2-15 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data (-> this drip-joint-index))))) + (set! (-> *part-id-table* 145 init-specs 16 initial-valuef) (fmax (-> this surface-height) (-> this bottom 0 y))) (set! (-> *part-id-table* 145 init-specs 8 initial-valuef) (* 0.05 (- (-> a2-15 x) (-> this drip-old-pos x)))) (set! (-> *part-id-table* 145 init-specs 9 initial-valuef) (* 0.05 (- (-> a2-15 y) (-> this drip-old-pos y)))) - (set! (-> *part-id-table* 145 init-specs 10 initial-valuef) - (* 0.05 (- (-> a2-15 z) (-> this drip-old-pos z))) - ) - (launch-particles (-> *part-id-table* 145) a2-15) - ) + (set! (-> *part-id-table* 145 init-specs 10 initial-valuef) (* 0.05 (- (-> a2-15 z) (-> this drip-old-pos z)))) + (launch-particles (-> *part-id-table* 145) a2-15)) (set-time! (-> this drip-time)) (logclear! (-> this flags) (water-flags wt15)) (seek! (-> this drip-wetness) 0.0 (* 0.001 (-> this drip-speed))) (set! (-> this drip-speed) (* 1.05 (-> this drip-speed))) - (if (= (-> this drip-wetness) 0.0) - (set! (-> this drip-height) 0.0) - ) - ) - ((time-elapsed? - (the-as time-frame (the int (/ (the float (-> this drip-time)) (-> this drip-mult)))) - (the int (-> this drip-speed)) - ) + (if (= (-> this drip-wetness) 0.0) (set! (-> this drip-height) 0.0))) + ((time-elapsed? (the-as time-frame (the int (/ (the float (-> this drip-time)) (-> this drip-mult)))) + (the int (-> this drip-speed))) (let* ((s5-2 (rand-vu-int-range 3 (+ (-> this process node-list length) -1))) - (v1-328 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data s5-2))) - ) - (when (and (< (- (-> v1-328 y) (-> this process root trans y)) (-> this drip-height)) - (< (-> this height) (-> v1-328 y)) - ) + (v1-328 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data s5-2)))) + (when (and (< (- (-> v1-328 y) (-> this process root trans y)) (-> this drip-height)) (< (-> this height) (-> v1-328 y))) (set! (-> this drip-joint-index) s5-2) (set! (-> this drip-old-pos quad) (-> v1-328 quad)) - (logior! (-> this flags) (water-flags wt15)) - ) - ) - ) - ) - ) + (logior! (-> this flags) (water-flags wt15))))))) 0 - (none) - ) - ) + (none))) (defmethod start-bobbing! ((this water-control) (arg0 float) (arg1 int) (arg2 int)) (activate! (-> this bob) (- arg0) arg1 arg2 0.9 1.0) 0 - (none) - ) + (none)) (defun part-water-splash-callback ((arg0 part-tracker)) (let ((f1-0 (-> arg0 root trans y)) - (f0-0 (the-as float (-> arg0 userdata))) - ) + (f0-0 (the-as float (-> arg0 userdata)))) (set! (-> *part-id-table* 128 init-specs 16 initial-valuef) f1-0) (set! (-> *part-id-table* 132 init-specs 18 initial-valuef) f1-0) (set! (-> *part-id-table* 125 init-specs 16 initial-valuef) f1-0) @@ -1065,11 +857,9 @@ (set! (-> *part-id-table* 130 init-specs 2 initial-valuef) (* 4096.0 (* 0.3 f0-0))) (set! (-> *part-id-table* 130 init-specs 2 random-rangef) (* 4096.0 (* 0.9 f0-0))) (set! (-> *part-id-table* 130 init-specs 6 initial-valuef) (* 4096.0 f0-0)) - (set! (-> *part-id-table* 130 init-specs 6 random-rangef) (* 4096.0 (* 2.2 f0-0))) - ) + (set! (-> *part-id-table* 130 init-specs 6 random-rangef) (* 4096.0 (* 2.2 f0-0)))) 0 - (none) - ) + (none)) (defmethod water-control-method-15 ((this water-control)) (with-pp @@ -1084,127 +874,80 @@ (set! (-> a1-1 message) 'query) (set! (-> a1-1 param 0) (the-as uint 'ground-height)) (let* ((f0-4 (the-as float (send-event-function (-> this process) a1-1))) - (f30-0 (lerp-scale 0.3 1.0 f0-4 2048.0 24576.0)) - ) - (if (nonzero? (-> this process skel effect)) - (effect-control-method-10 (-> this process skel effect) 'swim-stroke 0.0 -1) - ) - (create-splash this f30-0 (-> this enter-water-pos) 1 (-> this process root transv)) - ) - ) - ) - (if (logtest? (water-flags wt17) (-> this flags)) - (set! (-> this swim-height) 2867.2) - ) + (f30-0 (lerp-scale 0.3 1.0 f0-4 2048.0 24576.0))) + (if (nonzero? (-> this process skel effect)) (effect-control-method-10 (-> this process skel effect) 'swim-stroke 0.0 -1)) + (create-splash this f30-0 (-> this enter-water-pos) 1 (-> this process root transv))))) + (if (logtest? (water-flags wt17) (-> this flags)) (set! (-> this swim-height) 2867.2)) 0 - (none) - ) - ) + (none))) (defmethod water-control-method-16 ((this water-control)) (logclear! (-> this flags) (water-flags wt09)) (set-zero! (-> this bob)) - (if (logtest? (water-flags wt17) (-> this flags)) - (set! (-> this swim-height) 2867.2) - ) + (if (logtest? (water-flags wt17) (-> this flags)) (set! (-> this swim-height) 2867.2)) 0 - (none) - ) + (none)) (defun splash-spawn ((arg0 basic) (arg1 basic) (arg2 int)) - (process-spawn - part-tracker - :init part-tracker-init - (if (zero? arg2) - (-> *part-group-id-table* 41) - (-> *part-group-id-table* 40) - ) - -1 - part-water-splash-callback - arg0 - #f - arg1 - :to *entity-pool* - ) + (process-spawn part-tracker + :init + part-tracker-init + (if (zero? arg2) (-> *part-group-id-table* 41) (-> *part-group-id-table* 40)) + -1 + part-water-splash-callback + arg0 + #f + arg1 + :to + *entity-pool*) 0 - (none) - ) + (none)) (defmethod create-splash ((this water-control) (arg0 float) (arg1 vector) (arg2 int) (arg3 vector)) (when (and (logtest? (-> this flags) (water-flags wt05)) (logtest? (water-flags wt23) (-> this flags))) (let ((a1-3 (vector+float*! (new 'stack-no-clear 'vector) arg1 arg3 0.05))) (set! (-> a1-3 y) (-> this surface-height)) - (splash-spawn (the-as basic arg0) (the-as basic a1-3) arg2) - ) - ) + (splash-spawn (the-as basic arg0) (the-as basic a1-3) arg2))) 0 - (none) - ) + (none)) (defmethod on-exit-water ((this water-vol)) (when (handle->process (-> this target)) (let ((v1-7 (-> (the-as target (-> this target process 0)) water))) (logclear! (-> v1-7 flags) (water-flags wt01 wt02 wt03 wt08 wt17 wt18 wt19 wt20 wt21 wt23 wt24 wt25 wt26)) - (set! (-> v1-7 volume) (the-as handle #f)) - ) + (set! (-> v1-7 volume) (the-as handle #f))) (set! (-> this target) (the-as handle #f)) - (iterate-process-tree - *entity-pool* - (lambda ((arg0 water-vol)) (with-pp - (if (and (type-type? (-> arg0 type) water-vol) (!= arg0 pp)) - (send-event arg0 'update) - ) - ) - ) - *null-kernel-context* - ) - (process-entity-status! this (entity-perm-status bit-3) #f) - ) + (iterate-process-tree *entity-pool* + (lambda ((arg0 water-vol)) + (with-pp + (if (and (type-type? (-> arg0 type) water-vol) (!= arg0 pp)) (send-event arg0 'update)))) + *null-kernel-context*) + (process-entity-status! this (entity-perm-status bit-3) #f)) 0 - (none) - ) + (none)) (defmethod update! ((this water-vol)) (cond ((handle->process (-> this target)) (cond - ((not (point-in-vol? (-> this vol) (-> (the-as target (-> this target process 0)) control trans))) - (on-exit-water this) - ) + ((not (point-in-vol? (-> this vol) (-> (the-as target (-> this target process 0)) control trans))) (on-exit-water this)) (else - (let ((v1-15 (-> (the-as target (-> this target process 0)) water))) - (when (and (logtest? (water-flags wt19) (-> this flags)) - (logtest? (-> v1-15 flags) (water-flags wt09)) - (>= (-> v1-15 surface-height) (-> v1-15 bottom 0 y)) - ) - (let ((v1-18 (-> this attack-event))) - (case v1-18 - ((#f) - ) - (('heat) - (send-event (handle->process (-> this target)) 'heat (* 10.0 (seconds-per-frame))) - ) - (('drown-death 'lava 'dark-eco-pool) - (if (send-event (handle->process (-> this target)) 'attack-invinc #f (static-attack-info ((mode v1-18)))) - (send-event this 'notify 'attack) - ) - ) - (else - (if (send-event (handle->process (-> this target)) 'attack #f (static-attack-info ((mode v1-18)))) - (send-event this 'notify 'attack) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ((and *target* (and (not (handle->process (-> *target* water volume))) - (point-in-vol? (-> this vol) (-> *target* control trans)) - ) - ) + (let ((v1-15 (-> (the-as target (-> this target process 0)) water))) + (when (and (logtest? (water-flags wt19) (-> this flags)) + (logtest? (-> v1-15 flags) (water-flags wt09)) + (>= (-> v1-15 surface-height) (-> v1-15 bottom 0 y))) + (let ((v1-18 (-> this attack-event))) + (case v1-18 + ((#f)) + (('heat) (send-event (handle->process (-> this target)) 'heat (* 10.0 (seconds-per-frame)))) + (('drown-death 'lava 'dark-eco-pool) + (if (send-event (handle->process (-> this target)) 'attack-invinc #f (static-attack-info ((mode v1-18)))) + (send-event this 'notify 'attack))) + (else + (if (send-event (handle->process (-> this target)) 'attack #f (static-attack-info ((mode v1-18)))) + (send-event this 'notify 'attack)))))))))) + ((and *target* + (and (not (handle->process (-> *target* water volume))) (point-in-vol? (-> this vol) (-> *target* control trans)))) (let ((s5-0 (-> *target* water))) (process-entity-status! this (entity-perm-status bit-3) #t) (set! (-> s5-0 volume) (process->handle this)) @@ -1213,76 +956,57 @@ (set! (-> s5-0 base-height) (-> this water-height)) (set! (-> s5-0 ocean-offset) 0.0) (logior! (-> s5-0 flags) (-> this flags)) - (if (< 0.0 (-> this wade-height)) - (set! (-> s5-0 wade-height) (-> this wade-height)) - ) - (if (< 0.0 (-> this swim-height)) - (set! (-> s5-0 swim-height) (-> this swim-height)) - ) - (if (< 0.0 (-> this bottom-height)) - (set! (-> s5-0 bottom-height) (-> this bottom-height)) - ) - (set-zero! (-> s5-0 bob)) - ) - ) - ) + (if (< 0.0 (-> this wade-height)) (set! (-> s5-0 wade-height) (-> this wade-height))) + (if (< 0.0 (-> this swim-height)) (set! (-> s5-0 swim-height) (-> this swim-height))) + (if (< 0.0 (-> this bottom-height)) (set! (-> s5-0 bottom-height) (-> this bottom-height))) + (set-zero! (-> s5-0 bob))))) 0 - (none) - ) + (none)) (defstate water-vol-startup (water-vol) :virtual #t - :code (behavior () - (go-virtual water-vol-idle) - ) - ) + :code + (behavior () + (go-virtual water-vol-idle))) (defstate water-vol-idle (water-vol) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('update) - (update! self) - ) - ) - ) - :exit (behavior () - (on-exit-water self) - ) - :trans (behavior () - (update! self) - ) - :code anim-loop - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('update) (update! self)))) + :exit + (behavior () + (on-exit-water self)) + :trans + (behavior () + (update! self)) + :code anim-loop) (defmethod set-stack-size! ((this water-vol)) (stack-size-set! (-> this main-thread) 128) - (none) - ) + (none)) (defmethod reset-root! ((this water-vol)) (set! (-> this root) (new 'process 'trsqv)) - (none) - ) + (none)) (defmethod water-vol-method-25 ((this water-vol)) 0 - (none) - ) + (none)) (defmethod init! ((this water-vol)) (local-vars (sv-16 res-tag)) - (set! (-> this attack-event) (the-as symbol ((method-of-type res-lump get-property-struct) - (-> this entity) - 'attack-event - 'interp - -1000000000.0 - 'drown - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) + (set! (-> this attack-event) + (the-as symbol + ((method-of-type res-lump get-property-struct) + (-> this entity) + 'attack-event + 'interp + -1000000000.0 + 'drown + (the-as (pointer res-tag) #f) + *res-static-buf*))) (process-drawable-from-entity! this (-> this entity)) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this vol) (new 'process 'vol-control this)) @@ -1290,50 +1014,32 @@ (set! (-> this bottom-height) 32768.0) (set! (-> this target) (the-as handle #f)) (set! sv-16 (new 'static 'res-tag)) - (let ((v1-8 (the-as (pointer float) ((method-of-type res-lump get-property-data) - (-> this entity) - 'water-height - 'exact - -1000000000.0 - (the-as pointer #f) - (& sv-16) - *res-static-buf* - ) - ) - ) - ) + (let ((v1-8 (the-as (pointer float) + ((method-of-type res-lump get-property-data) + (-> this entity) + 'water-height + 'exact + -1000000000.0 + (the-as pointer #f) + (& sv-16) + *res-static-buf*)))) (when v1-8 (set! (-> this water-height) (-> v1-8 0)) (set! (-> this wade-height) (-> v1-8 1)) (set! (-> this swim-height) (-> v1-8 2)) - (if (>= (-> sv-16 elt-count) (the-as uint 4)) - (set! (-> this flags) (the-as water-flags (the int (-> v1-8 3)))) - ) - (if (>= (-> sv-16 elt-count) (the-as uint 5)) - (set! (-> this bottom-height) (-> v1-8 4)) - ) - ) - ) + (if (>= (-> sv-16 elt-count) (the-as uint 4)) (set! (-> this flags) (the-as water-flags (the int (-> v1-8 3))))) + (if (>= (-> sv-16 elt-count) (the-as uint 5)) (set! (-> this bottom-height) (-> v1-8 4))))) (logior! (-> this flags) (water-flags wt23)) (cond ((zero? (-> this flags)) - (if (< 0.0 (-> this wade-height)) - (logior! (-> this flags) (water-flags wt02)) - ) - (if (< 0.0 (-> this swim-height)) - (logior! (-> this flags) (water-flags wt03)) - ) - ) - (else - ) - ) - (none) - ) + (if (< 0.0 (-> this wade-height)) (logior! (-> this flags) (water-flags wt02))) + (if (< 0.0 (-> this swim-height)) (logior! (-> this flags) (water-flags wt03)))) + (else)) + (none)) (defmethod water-vol-method-22 ((this water-vol)) 0 - (none) - ) + (none)) (defbehavior water-vol-init-by-other water-vol ((arg0 entity-actor)) (set! (-> self entity) arg0) @@ -1343,8 +1049,7 @@ (water-vol-method-25 self) (water-vol-method-22 self) (go-virtual water-vol-startup) - (none) - ) + (none)) (defmethod init-from-entity! ((this water-vol) (arg0 entity-actor)) (set-stack-size! this) @@ -1353,5 +1058,4 @@ (water-vol-method-25 this) (water-vol-method-22 this) (go (method-of-object this water-vol-startup)) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/data/art-elts.gc b/goal_src/jak1/engine/data/art-elts.gc index e656082a26..d08afdc62f 100644 --- a/goal_src/jak1/engine/data/art-elts.gc +++ b/goal_src/jak1/engine/data/art-elts.gc @@ -2542,5 +2542,3 @@ (def-art-elt yeti-ag yeti-jump-ja 10) (def-art-elt yeti-ag yeti-jump-land-ja 11) (def-art-elt yeti-ag yeti-turn-ja 12) - - diff --git a/goal_src/jak1/engine/data/art-h.gc b/goal_src/jak1/engine/data/art-h.gc index ef9fae9b45..92baeb1cad 100644 --- a/goal_src/jak1/engine/data/art-h.gc +++ b/goal_src/jak1/engine/data/art-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: art-h.gc -;; name in dgo: art-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -17,99 +12,73 @@ ;; base type for all joint animations ;; note that this refers to an animation for a single joint. (deftype joint-anim (basic) - ((name string) - (number int16) - (length int16) - ) - ) + ((name string) + (number int16) + (length int16))) ;; unused? joint-anims (deftype joint-anim-matrix (joint-anim) - ((data matrix :inline :dynamic :offset 16) - ) - ) + ((data matrix :inline :dynamic :offset 16))) (deftype joint-anim-transformq (joint-anim) - ((data transformq :inline :dynamic :offset 16) - ) - ) + ((data transformq :inline :dynamic :offset 16))) (deftype joint-anim-drawable (joint-anim) - ((data drawable :dynamic) - ) - ) + ((data drawable :dynamic))) ;; joint-anim-compressed is the only type of joint-anim actually used. ;; the actual data isn't in here, this is just some metadata ;; again, this refers to a single joint (deftype joint-anim-compressed (joint-anim) - ((data uint32 :dynamic) - ) - ) + ((data uint32 :dynamic))) ;; a single "frame" in an animation, consists of matrices for each joint. ;; unlike the previous types, this is for all of the joints involved in an animation. (deftype joint-anim-frame (structure) - ((matrices matrix 2 :inline) - (data matrix :inline :dynamic) - ) + ((matrices matrix 2 :inline) + (data matrix :inline :dynamic)) (:methods - (new (symbol type int) _type_) - ) - ) - + (new (symbol type int) _type_))) (defmethod new joint-anim-frame ((allocation symbol) (type-to-make type) (arg0 int)) "Create a new joint-anim-frame with enough room for arg0 matrices" (let ((v1-1 (max 0 (+ arg0 -2)))) - (the-as - joint-anim-frame - (new-dynamic-structure allocation type-to-make (the-as int (+ (-> type-to-make size) (* 48 v1-1)))) - ) - ) - ) + (the-as joint-anim-frame + (new-dynamic-structure allocation type-to-make (the-as int (+ (-> type-to-make size) (* 48 v1-1))))))) ;; compression header - has info used by decompression algorithm (deftype joint-anim-compressed-hdr (structure) - ((control-bits uint32 14) - (num-joints uint32) - (matrix-bits uint32) - ) - ) + ((control-bits uint32 14) + (num-joints uint32) + (matrix-bits uint32))) ;; this has the data needed to initialize the decompressor - I believe this ;; contains the starting poisition of the joints. (deftype joint-anim-compressed-fixed (structure) - ((hdr joint-anim-compressed-hdr :inline) - (offset-64 uint32) - (offset-32 uint32) - (offset-16 uint32) - (reserved uint32) - (data vector 133 :inline) - ) - ) + ((hdr joint-anim-compressed-hdr :inline) + (offset-64 uint32) + (offset-32 uint32) + (offset-16 uint32) + (reserved uint32) + (data vector 133 :inline))) ;; these are the actual compressed data frames. ;; dynamically sized, depends on the number of joints and the decompression. (deftype joint-anim-compressed-frame (structure) - ((offset-64 uint32) - (offset-32 uint32) - (offset-16 uint32) - (reserved uint32) - (data vector 133 :inline) - ) - ) + ((offset-64 uint32) + (offset-32 uint32) + (offset-16 uint32) + (reserved uint32) + (data vector 133 :inline))) ;; table of frames (deftype joint-anim-compressed-control (structure) - ((num-frames uint32) - (fixed-qwc uint32) - (frame-qwc uint32) - (fixed joint-anim-compressed-fixed) - (data joint-anim-compressed-frame 1) - ) - ) + ((num-frames uint32) + (fixed-qwc uint32) + (frame-qwc uint32) + (fixed joint-anim-compressed-fixed) + (data joint-anim-compressed-frame 1))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ART @@ -118,90 +87,74 @@ ;; "art" is an overly general parent class of all art data. ;; it can be either a container of arts (art-group) or a single art (art-element) (declare-type res-lump basic) + (deftype art (basic) - ((name string :offset 8) - (length int32) - (extra res-lump) - ) + ((name string :offset 8) + (length int32) + (extra res-lump)) (:methods - (login (_type_) _type_) - (lookup-art (_type_ string type) joint) - (lookup-idx-of-art (_type_ string type) int) - (needs-link? (_type_) symbol) - ) - ) + (login (_type_) _type_) + (lookup-art (_type_ string type) joint) + (lookup-idx-of-art (_type_ string type) int) + (needs-link? (_type_) symbol))) ;; parent class of all single art things. (deftype art-element (art) - ((pad uint8 12) - ) - ) + ((pad uint8 12))) ;; unused. all animations use joints/skeletons. (deftype art-mesh-anim (art-element) - ((data basic :dynamic) - ) - ) + ((data basic :dynamic))) ;; joint animation. (declare-type merc-eye-anim-block structure) + (deftype art-joint-anim (art-element) - ((eye-anim-data merc-eye-anim-block :offset 4) - (speed float :overlay-at (-> pad 0)) - (artist-base float :overlay-at (-> pad 4)) - (artist-step float :overlay-at (-> pad 8)) - (master-art-group-name string :offset 32) - (master-art-group-index int32 :offset 36) - (blerc-data (pointer uint8) :offset 40) - (frames joint-anim-compressed-control :offset 44) - (data joint-anim-compressed :dynamic) - ) - ) + ((eye-anim-data merc-eye-anim-block :offset 4) + (speed float :overlay-at (-> pad 0)) + (artist-base float :overlay-at (-> pad 4)) + (artist-step float :overlay-at (-> pad 8)) + (master-art-group-name string :offset 32) + (master-art-group-index int32 :offset 36) + (blerc-data (pointer uint8) :offset 40) + (frames joint-anim-compressed-control :offset 44) + (data joint-anim-compressed :dynamic))) ;; a collection of arts. ;; this is often stored as a -ag file in static level data. (deftype art-group (art) - ((info file-info :offset 4) - (data art-element :dynamic :offset 32) - ) + ((info file-info :offset 4) + (data art-element :dynamic :offset 32)) (:methods - (relocate (_type_ kheap (pointer uint8)) none :replace) - (link-art! (_type_) art-group) - (unlink-art! (_type_) int) - ) - ) + (relocate (_type_ kheap (pointer uint8)) none :replace) + (link-art! (_type_) art-group) + (unlink-art! (_type_) int))) ;; unused (deftype art-mesh-geo (art-element) - ((data basic :dynamic) - ) - ) + ((data basic :dynamic))) ;; unused (deftype art-joint-geo (art-element) - ((data joint :dynamic) - ) - ) + ((data joint :dynamic))) ;; the "skeleton group" is defined in code and tells the engine ;; how to actually use the art from the level data for this object. (deftype skeleton-group (basic) - ((art-group-name string) - (jgeo int32) - (janim int32) - (bounds vector :inline) - (radius meters :overlay-at (-> bounds w)) - (mgeo int16 4) - (max-lod int32) - (lod-dist float 4) - (longest-edge meters) - (texture-level int8) - (version int8) - (shadow int8) - (sort int8) - (_pad uint8 4) - ) - ) + ((art-group-name string) + (jgeo int32) + (janim int32) + (bounds vector :inline) + (radius meters :overlay-at (-> bounds w)) + (mgeo int16 4) + (max-lod int32) + (lod-dist float 4) + (longest-edge meters) + (texture-level int8) + (version int8) + (shadow int8) + (sort int8) + (_pad uint8 4))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Draw Control @@ -213,37 +166,32 @@ ;; a merc level of detail (deftype lod-group (structure) - ((geo merc-ctrl) - (dist meters) - ) - :pack-me - ) + ((geo merc-ctrl) + (dist meters)) + :pack-me) ;; the 4 levels of detail. the max-lod is the index of the highest lod that's actually used. ;; it is the lowest detail. (deftype lod-set (structure) - ((lod lod-group 4 :inline) - (max-lod int8) - ) + ((lod lod-group 4 :inline) + (max-lod int8)) :pack-me (:methods - (setup-lods! (_type_ skeleton-group art-group entity) _type_) - ) - ) + (setup-lods! (_type_ skeleton-group art-group entity) _type_))) ;; the draw statuses are somewhat confusing, as some are set by the engine ;; and some are set by the game object code. (defenum draw-status :type uint8 :bitfield #t - (needs-clip 0) ;; set by engine, determines if object should be clipped - (hidden 1) ;; set by user, can disable drawing and animation codes - (no-anim 2) ;; set by engine, if there is no active joint animation - (was-drawn 3) ;; set by engine, if we were drawn (passed cull checks) - (no-skeleton-update 4) ;; set by engine, if our transforms are not valid - (skip-bones 5) ;; set by user, skips call to draw-bones but does everything else + (needs-clip 0) ;; set by engine, determines if object should be clipped + (hidden 1) ;; set by user, can disable drawing and animation codes + (no-anim 2) ;; set by engine, if there is no active joint animation + (was-drawn 3) ;; set by engine, if we were drawn (passed cull checks) + (no-skeleton-update 4) ;; set by engine, if our transforms are not valid + (skip-bones 5) ;; set by user, skips call to draw-bones but does everything else (do-not-check-distance 6) ;; set by user, ignore in finding closest object for texture calcs - (has-joint-channels 7) ;; set by engine, if the object has joint channels. + (has-joint-channels 7) ;; set by engine, if the object has joint channels. ) ;; only title seems to be used? @@ -256,143 +204,113 @@ (drweff4 4) (drweff5 5) (drweff6 6) - (drweff7 7) - ) + (drweff7 7)) (declare-type ripple-control basic) + (declare-type shadow-geo basic) + (declare-type shadow-control basic) ;; the actual draw-control - this is just a collection of references to all info ;; needed to do drawing. (deftype draw-control (basic) - ((status draw-status) - (matrix-type uint8) - (data-format uint8) - (global-effect draw-effect) - (art-group art-group) - (jgeo art-joint-geo) - (mgeo merc-ctrl) - (dma-add-func (function process-drawable draw-control symbol object none)) - (skeleton skeleton) - (lod-set lod-set :inline) - (lod lod-group 4 :inline :overlay-at (-> lod-set lod 0)) - (max-lod int8 :overlay-at (-> lod-set max-lod)) - (force-lod int8) - (cur-lod int8) - (desired-lod int8) - (ripple ripple-control) - (longest-edge meters) - (longest-edge? uint32 :overlay-at longest-edge) - (light-index uint8) - (dummy uint8 2) - (death-draw-overlap uint8) - (death-timer uint8) - (death-timer-org uint8) - (death-vertex-skip uint16) - (death-effect uint32) - (sink-group dma-foreground-sink-group) - (process process) - (shadow shadow-geo) - (shadow-ctrl shadow-control) - (origin vector :inline) - (bounds vector :inline) - (radius meters :overlay-at (-> bounds w)) - (color-mult rgbaf :inline) - (color-emissive rgbaf :inline) - (secondary-interp float) - (current-secondary-interp float) - (shadow-mask uint8) - (level-index uint8) - (origin-joint-index uint8) - (shadow-joint-index uint8) - ) + ((status draw-status) + (matrix-type uint8) + (data-format uint8) + (global-effect draw-effect) + (art-group art-group) + (jgeo art-joint-geo) + (mgeo merc-ctrl) + (dma-add-func (function process-drawable draw-control symbol object none)) + (skeleton skeleton) + (lod-set lod-set :inline) + (lod lod-group 4 :inline :overlay-at (-> lod-set lod 0)) + (max-lod int8 :overlay-at (-> lod-set max-lod)) + (force-lod int8) + (cur-lod int8) + (desired-lod int8) + (ripple ripple-control) + (longest-edge meters) + (longest-edge? uint32 :overlay-at longest-edge) + (light-index uint8) + (dummy uint8 2) + (death-draw-overlap uint8) + (death-timer uint8) + (death-timer-org uint8) + (death-vertex-skip uint16) + (death-effect uint32) + (sink-group dma-foreground-sink-group) + (process process) + (shadow shadow-geo) + (shadow-ctrl shadow-control) + (origin vector :inline) + (bounds vector :inline) + (radius meters :overlay-at (-> bounds w)) + (color-mult rgbaf :inline) + (color-emissive rgbaf :inline) + (secondary-interp float) + (current-secondary-interp float) + (shadow-mask uint8) + (level-index uint8) + (origin-joint-index uint8) + (shadow-joint-index uint8)) (:methods - (new (symbol type process art-joint-geo) _type_) - (get-skeleton-origin (_type_) vector) - (lod-set! (_type_ int) none) - (lods-assign! (_type_ lod-set) none) - ) - ) + (new (symbol type process art-joint-geo) _type_) + (get-skeleton-origin (_type_) vector) + (lod-set! (_type_ int) none) + (lods-assign! (_type_ lod-set) none))) (defmethod get-skeleton-origin ((this draw-control)) "Get the origin of the skeleton. Must have up-to-date bones." - (-> this skeleton bones 0 position) - ) + (-> this skeleton bones 0 position)) ;; look up the index of an art element in an art group. (desfun art-elt-index (ag-name elt-name) (if (number? elt-name) - elt-name - (let ((ag-info (hash-table-try-ref *art-info* (symbol->string ag-name)))) - (if (not (car ag-info)) - -1 - (let ((elt-info (hash-table-try-ref (cdr ag-info) (symbol->string elt-name)))) - (if (not (car elt-info)) - -1 - (cadr (cdr elt-info))) - ) - ) - ) - ) - ) + elt-name + (let ((ag-info (hash-table-try-ref *art-info* (symbol->string ag-name)))) + (if (not (car ag-info)) + -1 + (let ((elt-info (hash-table-try-ref (cdr ag-info) (symbol->string elt-name)))) + (if (not (car elt-info)) -1 (cadr (cdr elt-info)))))))) (defmacro joint-node-index (jg-name name) (let ((jg-info (hash-table-try-ref *jg-info* (symbol->string jg-name)))) - (if (not (car jg-info)) - -1 - (let ((joint-node (hash-table-try-ref (cdr jg-info) (if (integer? name) (int->string name) (symbol->string name))))) - (if (not (car joint-node)) - -1 - (cadr (cdr joint-node))) - ) - ) - ) - ) + (if (not (car jg-info)) + -1 + (let ((joint-node (hash-table-try-ref (cdr jg-info) (if (integer? name) (int->string name) (symbol->string name))))) + (if (not (car joint-node)) -1 (cadr (cdr joint-node))))))) (defmacro joint-node (jg name) - `(-> self node-list data (joint-node-index ,jg ,name)) - ) - -(defmacro defskelgroup (name art-name joint-geom joint-anim lods - &key (shadow 0) - &key bounds - &key (longest-edge 0.0) - &key (texture-level 0) - &key (sort 0) - &key (version 6) ;; do NOT use this! - ) + `(-> self node-list data (joint-node-index ,jg ,name))) +(defmacro defskelgroup (name art-name joint-geom joint-anim lods &key (shadow 0) &key bounds &key (longest-edge 0.0) &key (texture-level 0) &key (sort 0)) "define a new static skeleton group" - - `(let ((skel (new 'static 'skeleton-group - :art-group-name ,(symbol->string art-name) - :bounds ,bounds - :longest-edge ,longest-edge - :version ,version - :max-lod ,(- (length lods) 1) - :shadow ,(art-elt-index (string->symbol-format "{}-ag" art-name) shadow) - :texture-level ,texture-level - :sort ,sort - ))) - ;; set joint geometry and joint bones - (set! (-> skel jgeo) ,(art-elt-index (string->symbol-format "{}-ag" art-name) joint-geom)) - (set! (-> skel janim) ,(art-elt-index (string->symbol-format "{}-ag" art-name) joint-anim)) - - ;; set lods - ,@(apply-i (lambda (x i) - `(begin - (set! (-> skel mgeo ,i) ,(art-elt-index (string->symbol-format "{}-ag" art-name) (car x))) - (set! (-> skel lod-dist ,i) ,(cadr x)) - ) - ) lods) - - ;; define skel group - (define ,name skel) - ) - ) - - + `(let ((skel (new 'static + 'skeleton-group + :art-group-name ,(symbol->string art-name) + :bounds ,bounds + :longest-edge ,longest-edge + :version 6 + :max-lod + ,(- (length lods) 1) + :shadow + ,(art-elt-index (string->symbol-format "{}-ag" art-name) shadow) + :texture-level ,texture-level + :sort ,sort))) + ;; set joint geometry and joint bones + (set! (-> skel jgeo) ,(art-elt-index (string->symbol-format "{}-ag" art-name) joint-geom)) + (set! (-> skel janim) ,(art-elt-index (string->symbol-format "{}-ag" art-name) joint-anim)) + ;; set lods + ,@(apply-i (lambda (x i) + `(begin + (set! (-> skel mgeo ,i) ,(art-elt-index (string->symbol-format "{}-ag" art-name) (car x))) + (set! (-> skel lod-dist ,i) ,(cadr x)))) + lods) + ;; define skel group + (define ,name skel))) (import "goal_src/jak1/engine/data/art-elts.gc") + (import "goal_src/jak1/engine/data/joint-nodes.gc") diff --git a/goal_src/jak1/engine/data/joint-nodes.gc b/goal_src/jak1/engine/data/joint-nodes.gc index 322bda2bf1..c89a4fc756 100644 --- a/goal_src/jak1/engine/data/joint-nodes.gc +++ b/goal_src/jak1/engine/data/joint-nodes.gc @@ -20,7 +20,6 @@ (def-joint-node vil3-bridge-36-lod0-jg "board08" 11) (def-joint-node vil3-bridge-36-lod0-jg "board09" 12) (def-joint-node vil3-bridge-36-lod0-jg "board10" 13) - (def-joint-node sage-village3-lod0-jg "belly" 74) (def-joint-node sage-village3-lod0-jg "Rball" 73) (def-joint-node sage-village3-lod0-jg "Rbigtoe" 72) @@ -95,7 +94,6 @@ (def-joint-node sage-village3-lod0-jg "LringB" 57) (def-joint-node sage-village3-lod0-jg "LpinkyA" 58) (def-joint-node sage-village3-lod0-jg "LpinkyB" 59) - (def-joint-node pistons-lod0-jg "piston4A" 15) (def-joint-node pistons-lod0-jg "piston4B" 14) (def-joint-node pistons-lod0-jg "align" 1) @@ -111,7 +109,6 @@ (def-joint-node pistons-lod0-jg "piston2A" 11) (def-joint-node pistons-lod0-jg "piston3B" 12) (def-joint-node pistons-lod0-jg "piston3A" 13) - (def-joint-node minertall-lod0-jg "shovel3" 72) (def-joint-node minertall-lod0-jg "shovel2" 71) (def-joint-node minertall-lod0-jg "dynoC" 70) @@ -184,26 +181,21 @@ (def-joint-node minertall-lod0-jg "RthumbB" 57) (def-joint-node minertall-lod0-jg "RthumbC" 58) (def-joint-node minertall-lod0-jg "RmiddleA" 59) - (def-joint-node medres-ogre3-lod0-jg "boneless" 3) (def-joint-node medres-ogre3-lod0-jg "prejoint" 2) (def-joint-node medres-ogre3-lod0-jg "align" 1) - (def-joint-node medres-ogre2-lod0-jg "boneless" 3) (def-joint-node medres-ogre2-lod0-jg "prejoint" 2) (def-joint-node medres-ogre2-lod0-jg "align" 1) - (def-joint-node medres-finalboss-lod0-jg "boneless" 3) (def-joint-node medres-finalboss-lod0-jg "prejoint" 2) (def-joint-node medres-finalboss-lod0-jg "align" 1) - (def-joint-node minecartsteel-lod0-jg "frontAxle" 6) (def-joint-node minecartsteel-lod0-jg "rearAxle" 5) (def-joint-node minecartsteel-lod0-jg "cart" 4) (def-joint-node minecartsteel-lod0-jg "main" 3) (def-joint-node minecartsteel-lod0-jg "prejoint" 2) (def-joint-node minecartsteel-lod0-jg "align" 1) - (def-joint-node lavaspoutdrip-lod0-jg "threetwo" 9) (def-joint-node lavaspoutdrip-lod0-jg "twotwo" 8) (def-joint-node lavaspoutdrip-lod0-jg "onetwo" 7) @@ -213,12 +205,10 @@ (def-joint-node lavaspoutdrip-lod0-jg "main" 3) (def-joint-node lavaspoutdrip-lod0-jg "prejoint" 2) (def-joint-node lavaspoutdrip-lod0-jg "align" 1) - (def-joint-node gondola-lod0-jg "camera" 4) (def-joint-node gondola-lod0-jg "main" 3) (def-joint-node gondola-lod0-jg "prejoint" 2) (def-joint-node gondola-lod0-jg "align" 1) - (def-joint-node evilsis-village3-lod0-jg "RringB" 75) (def-joint-node evilsis-village3-lod0-jg "RringA" 74) (def-joint-node evilsis-village3-lod0-jg "RmiddleB" 73) @@ -294,7 +284,6 @@ (def-joint-node evilsis-village3-lod0-jg "r_flap1" 57) (def-joint-node evilsis-village3-lod0-jg "r_flap2" 58) (def-joint-node evilsis-village3-lod0-jg "ponytail3" 59) - (def-joint-node evilbro-village3-lod0-jg "rball3" 75) (def-joint-node evilbro-village3-lod0-jg "rball2" 74) (def-joint-node evilbro-village3-lod0-jg "fball3" 73) @@ -370,15 +359,12 @@ (def-joint-node evilbro-village3-lod0-jg "RmiddleA" 57) (def-joint-node evilbro-village3-lod0-jg "RmiddleB" 58) (def-joint-node evilbro-village3-lod0-jg "RringA" 59) - (def-joint-node cavegem-lod0-jg "boneless" 3) (def-joint-node cavegem-lod0-jg "prejoint" 2) (def-joint-node cavegem-lod0-jg "align" 1) - (def-joint-node water-anim-village2-bucket-lod0-jg "boneless" 3) (def-joint-node water-anim-village2-bucket-lod0-jg "prejoint" 2) (def-joint-node water-anim-village2-bucket-lod0-jg "align" 1) - (def-joint-node warrior-lod0-jg "RpinkyB" 59) (def-joint-node warrior-lod0-jg "RpinkyA" 58) (def-joint-node warrior-lod0-jg "RringB" 57) @@ -438,12 +424,10 @@ (def-joint-node warrior-lod0-jg "Lankle" 27) (def-joint-node warrior-lod0-jg "Lball" 28) (def-joint-node warrior-lod0-jg "Rthigh" 29) - (def-joint-node village2cam-lod0-jg "camera" 4) (def-joint-node village2cam-lod0-jg "beachcam" 3) (def-joint-node village2cam-lod0-jg "prejoint" 2) (def-joint-node village2cam-lod0-jg "align" 1) - (def-joint-node swamp-tetherrock-explode-lod0-jg "camera" 8) (def-joint-node swamp-tetherrock-explode-lod0-jg "5" 7) (def-joint-node swamp-tetherrock-explode-lod0-jg "4" 6) @@ -452,7 +436,6 @@ (def-joint-node swamp-tetherrock-explode-lod0-jg "1" 3) (def-joint-node swamp-tetherrock-explode-lod0-jg "prejoint" 2) (def-joint-node swamp-tetherrock-explode-lod0-jg "align" 1) - (def-joint-node swamp-blimp-lod0-jg "ropefrontright" 10) (def-joint-node swamp-blimp-lod0-jg "ropefrontleft" 9) (def-joint-node swamp-blimp-lod0-jg "ropecenter" 8) @@ -463,12 +446,10 @@ (def-joint-node swamp-blimp-lod0-jg "blimp" 3) (def-joint-node swamp-blimp-lod0-jg "prejoint" 2) (def-joint-node swamp-blimp-lod0-jg "align" 1) - (def-joint-node sunken-elevator-lod0-jg "button" 4) (def-joint-node sunken-elevator-lod0-jg "main" 3) (def-joint-node sunken-elevator-lod0-jg "prejoint" 2) (def-joint-node sunken-elevator-lod0-jg "align" 1) - (def-joint-node sage-bluehut-lod0-jg "belly" 74) (def-joint-node sage-bluehut-lod0-jg "Rball" 73) (def-joint-node sage-bluehut-lod0-jg "Rbigtoe" 72) @@ -543,7 +524,6 @@ (def-joint-node sage-bluehut-lod0-jg "LringB" 57) (def-joint-node sage-bluehut-lod0-jg "LpinkyA" 58) (def-joint-node sage-bluehut-lod0-jg "LpinkyB" 59) - (def-joint-node ogreboss-village2-lod0-jg "Rball" 75) (def-joint-node ogreboss-village2-lod0-jg "Lball" 74) (def-joint-node ogreboss-village2-lod0-jg "RchestDangleA" 73) @@ -619,7 +599,6 @@ (def-joint-node ogreboss-village2-lod0-jg "LmiddleA" 57) (def-joint-node ogreboss-village2-lod0-jg "LmiddleB" 58) (def-joint-node ogreboss-village2-lod0-jg "LringA" 59) - (def-joint-node gambler-lod0-jg "hair" 72) (def-joint-node gambler-lod0-jg "RpinkyC" 71) (def-joint-node gambler-lod0-jg "RpinkyB" 70) @@ -692,7 +671,6 @@ (def-joint-node gambler-lod0-jg "RringB" 57) (def-joint-node gambler-lod0-jg "rArmStrap" 58) (def-joint-node gambler-lod0-jg "lLegStrap" 59) - (def-joint-node flutflut-bluehut-lod0-jg "rWingF2" 49) (def-joint-node flutflut-bluehut-lod0-jg "rWing2" 48) (def-joint-node flutflut-bluehut-lod0-jg "rWing1" 47) @@ -742,12 +720,10 @@ (def-joint-node flutflut-bluehut-lod0-jg "neck" 27) (def-joint-node flutflut-bluehut-lod0-jg "head" 28) (def-joint-node flutflut-bluehut-lod0-jg "ploom1" 29) - (def-joint-node fireboulder-lod0-jg "bouldercenter" 4) (def-joint-node fireboulder-lod0-jg "main" 3) (def-joint-node fireboulder-lod0-jg "prejoint" 2) (def-joint-node fireboulder-lod0-jg "align" 1) - (def-joint-node yakow-lod0-jg "RmiddleA" 33) (def-joint-node yakow-lod0-jg "LmiddleA" 32) (def-joint-node yakow-lod0-jg "rightEAREND" 31) @@ -781,24 +757,19 @@ (def-joint-node yakow-lod0-jg "jawEND" 27) (def-joint-node yakow-lod0-jg "leftEAR" 28) (def-joint-node yakow-lod0-jg "leftEAREND" 29) - (def-joint-node water-anim-village1-rice-paddy-top-lod0-jg "boneless" 3) (def-joint-node water-anim-village1-rice-paddy-top-lod0-jg "prejoint" 2) (def-joint-node water-anim-village1-rice-paddy-top-lod0-jg "align" 1) - (def-joint-node water-anim-village1-rice-paddy-mid-lod0-jg "boneless" 3) (def-joint-node water-anim-village1-rice-paddy-mid-lod0-jg "prejoint" 2) (def-joint-node water-anim-village1-rice-paddy-mid-lod0-jg "align" 1) - (def-joint-node village1cam-lod0-jg "camera" 4) (def-joint-node village1cam-lod0-jg "beachcam" 3) (def-joint-node village1cam-lod0-jg "prejoint" 2) (def-joint-node village1cam-lod0-jg "align" 1) - (def-joint-node sagesail-lod0-jg "boneless" 3) (def-joint-node sagesail-lod0-jg "prejoint" 2) (def-joint-node sagesail-lod0-jg "align" 1) - (def-joint-node ropebridge-32-lod0-jg "board17" 20) (def-joint-node ropebridge-32-lod0-jg "board16" 19) (def-joint-node ropebridge-32-lod0-jg "board15" 18) @@ -819,38 +790,30 @@ (def-joint-node ropebridge-32-lod0-jg "board8" 11) (def-joint-node ropebridge-32-lod0-jg "board9" 12) (def-joint-node ropebridge-32-lod0-jg "board10" 13) - (def-joint-node revcycleprop-lod0-jg "boneless" 3) (def-joint-node revcycleprop-lod0-jg "prejoint" 2) (def-joint-node revcycleprop-lod0-jg "align" 1) - (def-joint-node pontoonten-lod0-jg "boneless" 3) (def-joint-node pontoonten-lod0-jg "prejoint" 2) (def-joint-node pontoonten-lod0-jg "align" 1) - (def-joint-node reflector-middle-geo-jg "boneless" 3) (def-joint-node reflector-middle-geo-jg "prejoint" 2) (def-joint-node reflector-middle-geo-jg "align" 1) - (def-joint-node oracle-lod0-jg "oracleleye" 6) (def-joint-node oracle-lod0-jg "oraclereye" 5) (def-joint-node oracle-lod0-jg "camera" 4) (def-joint-node oracle-lod0-jg "oracle" 3) (def-joint-node oracle-lod0-jg "prejoint" 2) (def-joint-node oracle-lod0-jg "align" 1) - (def-joint-node medres-village13-lod0-jg "boneless" 3) (def-joint-node medres-village13-lod0-jg "prejoint" 2) (def-joint-node medres-village13-lod0-jg "align" 1) - (def-joint-node medres-village12-lod0-jg "boneless" 3) (def-joint-node medres-village12-lod0-jg "prejoint" 2) (def-joint-node medres-village12-lod0-jg "align" 1) - (def-joint-node medres-training-lod0-jg "boneless" 3) (def-joint-node medres-training-lod0-jg "prejoint" 2) (def-joint-node medres-training-lod0-jg "align" 1) - (def-joint-node geologist-lod0-jg "RringB" 78) (def-joint-node geologist-lod0-jg "RringA" 77) (def-joint-node geologist-lod0-jg "LringB" 76) @@ -929,23 +892,18 @@ (def-joint-node geologist-lod0-jg "mBraid3" 57) (def-joint-node geologist-lod0-jg "mBraid4" 58) (def-joint-node geologist-lod0-jg "LthumbB" 59) - (def-joint-node medres-misty-lod0-jg "boneless" 3) (def-joint-node medres-misty-lod0-jg "prejoint" 2) (def-joint-node medres-misty-lod0-jg "align" 1) - (def-joint-node medres-jungle2-lod0-jg "boneless" 3) (def-joint-node medres-jungle2-lod0-jg "prejoint" 2) (def-joint-node medres-jungle2-lod0-jg "align" 1) - (def-joint-node medres-beach1-lod0-jg "boneless" 3) (def-joint-node medres-beach1-lod0-jg "prejoint" 2) (def-joint-node medres-beach1-lod0-jg "align" 1) - (def-joint-node mayorgears-geo-jg "mayorgears" 3) (def-joint-node mayorgears-geo-jg "prejoint" 2) (def-joint-node mayorgears-geo-jg "align" 1) - (def-joint-node farmer-lod0-jg "RpinkyC" 63) (def-joint-node farmer-lod0-jg "RpinkyB" 62) (def-joint-node farmer-lod0-jg "RpinkyA" 61) @@ -1009,7 +967,6 @@ (def-joint-node farmer-lod0-jg "RmiddleC" 57) (def-joint-node farmer-lod0-jg "RringA" 58) (def-joint-node farmer-lod0-jg "RringB" 59) - (def-joint-node explorer-lod0-jg "RankleStrap" 58) (def-joint-node explorer-lod0-jg "LankleStrap" 57) (def-joint-node explorer-lod0-jg "rArmStrap" 56) @@ -1068,7 +1025,6 @@ (def-joint-node explorer-lod0-jg "RpinkyB" 27) (def-joint-node explorer-lod0-jg "pouch" 28) (def-joint-node explorer-lod0-jg "Lcollar1" 29) - (def-joint-node assistant-lod0-jg "belt" 96) (def-joint-node assistant-lod0-jg "RpantFlap" 95) (def-joint-node assistant-lod0-jg "LpantFlap" 94) @@ -1165,16 +1121,13 @@ (def-joint-node assistant-lod0-jg "LpinkyB" 57) (def-joint-node assistant-lod0-jg "LpinkyC" 58) (def-joint-node assistant-lod0-jg "lGlove" 59) - (def-joint-node water-anim-training-lake-lod0-jg "boneless" 3) (def-joint-node water-anim-training-lake-lod0-jg "prejoint" 2) (def-joint-node water-anim-training-lake-lod0-jg "align" 1) - (def-joint-node trainingcam-lod0-jg "camera" 4) (def-joint-node trainingcam-lod0-jg "trainingcam" 3) (def-joint-node trainingcam-lod0-jg "prejoint" 2) (def-joint-node trainingcam-lod0-jg "align" 1) - (def-joint-node scarecrow-b-lod0-jg "hairA" 22) (def-joint-node scarecrow-b-lod0-jg "hairB" 21) (def-joint-node scarecrow-b-lod0-jg "Rhand_straw" 20) @@ -1197,11 +1150,9 @@ (def-joint-node scarecrow-b-lod0-jg "jaw" 11) (def-joint-node scarecrow-b-lod0-jg "hay" 12) (def-joint-node scarecrow-b-lod0-jg "Lleg" 13) - (def-joint-node medres-beach3-lod0-jg "boneless" 3) (def-joint-node medres-beach3-lod0-jg "prejoint" 2) (def-joint-node medres-beach3-lod0-jg "align" 1) - (def-joint-node scarecrow-a-lod0-jg "Rleg_straw" 22) (def-joint-node scarecrow-a-lod0-jg "Lleg_straw" 21) (def-joint-node scarecrow-a-lod0-jg "hairB" 20) @@ -1224,15 +1175,12 @@ (def-joint-node scarecrow-a-lod0-jg "jaw" 11) (def-joint-node scarecrow-a-lod0-jg "hay" 12) (def-joint-node scarecrow-a-lod0-jg "Lleg" 13) - (def-joint-node pontoonfive-lod0-jg "boneless" 3) (def-joint-node pontoonfive-lod0-jg "prejoint" 2) (def-joint-node pontoonfive-lod0-jg "align" 1) - (def-joint-node medres-ogre-lod0-jg "boneless" 3) (def-joint-node medres-ogre-lod0-jg "prejoint" 2) (def-joint-node medres-ogre-lod0-jg "align" 1) - (def-joint-node ndi-volumes-lod0-jg "whiteClaw_paw" 30) (def-joint-node ndi-volumes-lod0-jg "h_vol" 13) (def-joint-node ndi-volumes-lod0-jg "h" 12) @@ -1263,12 +1211,10 @@ (def-joint-node ndi-volumes-lod0-jg "white_vol" 27) (def-joint-node ndi-volumes-lod0-jg "whiteClaw_four" 28) (def-joint-node ndi-volumes-lod0-jg "whiteClaw_three" 29) - (def-joint-node ndi-cam-lod0-jg "dummy" 4) (def-joint-node ndi-cam-lod0-jg "camera" 3) (def-joint-node ndi-cam-lod0-jg "prejoint" 2) (def-joint-node ndi-cam-lod0-jg "align" 1) - (def-joint-node logo-volumes-english-lod0-jg "wall39" 51) (def-joint-node logo-volumes-english-lod0-jg "wall38" 50) (def-joint-node logo-volumes-english-lod0-jg "wall37" 49) @@ -1320,7 +1266,6 @@ (def-joint-node logo-volumes-english-lod0-jg "wall14" 27) (def-joint-node logo-volumes-english-lod0-jg "wall15" 28) (def-joint-node logo-volumes-english-lod0-jg "wall16" 29) - (def-joint-node logo-black-lod0-jg "volume4" 51) (def-joint-node logo-black-lod0-jg "volume3" 50) (def-joint-node logo-black-lod0-jg "volume2" 49) @@ -1372,7 +1317,6 @@ (def-joint-node logo-black-lod0-jg "wall23" 27) (def-joint-node logo-black-lod0-jg "wall24" 28) (def-joint-node logo-black-lod0-jg "wall25" 29) - (def-joint-node logo-japan-lod0-jg "wall39" 51) (def-joint-node logo-japan-lod0-jg "wall38" 50) (def-joint-node logo-japan-lod0-jg "wall37" 49) @@ -1424,11 +1368,9 @@ (def-joint-node logo-japan-lod0-jg "wall14" 27) (def-joint-node logo-japan-lod0-jg "wall15" 28) (def-joint-node logo-japan-lod0-jg "wall16" 29) - (def-joint-node swamp-rock-lod0-jg "rock" 3) (def-joint-node swamp-rock-lod0-jg "prejoint" 2) (def-joint-node swamp-rock-lod0-jg "align" 1) - (def-joint-node swamp-rat-nest-b-lod0-jg "top_right" 10) (def-joint-node swamp-rat-nest-b-lod0-jg "top_mid" 9) (def-joint-node swamp-rat-nest-b-lod0-jg "back" 8) @@ -1439,7 +1381,6 @@ (def-joint-node swamp-rat-nest-b-lod0-jg "spine1" 3) (def-joint-node swamp-rat-nest-b-lod0-jg "prejoint" 2) (def-joint-node swamp-rat-nest-b-lod0-jg "align" 1) - (def-joint-node swamp-rat-nest-a-lod0-jg "back" 10) (def-joint-node swamp-rat-nest-a-lod0-jg "mid" 9) (def-joint-node swamp-rat-nest-a-lod0-jg "bot" 8) @@ -1450,7 +1391,6 @@ (def-joint-node swamp-rat-nest-a-lod0-jg "spine1" 3) (def-joint-node swamp-rat-nest-a-lod0-jg "prejoint" 2) (def-joint-node swamp-rat-nest-a-lod0-jg "align" 1) - (def-joint-node swamp-rat-lod0-jg "tail3" 16) (def-joint-node swamp-rat-lod0-jg "EARS" 15) (def-joint-node swamp-rat-lod0-jg "ring" 14) @@ -1467,7 +1407,6 @@ (def-joint-node swamp-rat-lod0-jg "Lankle" 11) (def-joint-node swamp-rat-lod0-jg "Rankle" 12) (def-joint-node swamp-rat-lod0-jg "jaw" 13) - (def-joint-node kermit-lod0-jg "ReyeBALL" 28) (def-joint-node kermit-lod0-jg "tongueD" 27) (def-joint-node kermit-lod0-jg "tongueC" 26) @@ -1496,11 +1435,9 @@ (def-joint-node kermit-lod0-jg "rHand" 11) (def-joint-node kermit-lod0-jg "hips" 12) (def-joint-node kermit-lod0-jg "lThigh" 13) - (def-joint-node farthy-snack-lod0-jg "muffin" 3) (def-joint-node farthy-snack-lod0-jg "prejoint" 2) (def-joint-node farthy-snack-lod0-jg "align" 1) - (def-joint-node billy-sidekick-lod0-jg "rightbackfur1" 39) (def-joint-node billy-sidekick-lod0-jg "leftbackfur1" 38) (def-joint-node billy-sidekick-lod0-jg "Rball_rear" 37) @@ -1540,24 +1477,19 @@ (def-joint-node billy-sidekick-lod0-jg "Lknee" 27) (def-joint-node billy-sidekick-lod0-jg "Lankle" 28) (def-joint-node billy-sidekick-lod0-jg "Lball_rear" 29) - (def-joint-node balance-plat-lod0-jg "balanceplat" 3) (def-joint-node balance-plat-lod0-jg "prejoint" 2) (def-joint-node balance-plat-lod0-jg "align" 1) - (def-joint-node whirlpool-lod0-jg "base" 4) (def-joint-node whirlpool-lod0-jg "whirlpool" 3) (def-joint-node whirlpool-lod0-jg "prejoint" 2) (def-joint-node whirlpool-lod0-jg "align" 1) - (def-joint-node wedge-plat-outer-lod0-jg "wedgeplatouter" 3) (def-joint-node wedge-plat-outer-lod0-jg "prejoint" 2) (def-joint-node wedge-plat-outer-lod0-jg "align" 1) - (def-joint-node wedge-plat-lod0-jg "plat" 3) (def-joint-node wedge-plat-lod0-jg "prejoint" 2) (def-joint-node wedge-plat-lod0-jg "align" 1) - (def-joint-node sun-iris-door-lod0-jg "rote8" 11) (def-joint-node sun-iris-door-lod0-jg "rote1" 10) (def-joint-node sun-iris-door-lod0-jg "rote7" 9) @@ -1569,19 +1501,15 @@ (def-joint-node sun-iris-door-lod0-jg "base" 3) (def-joint-node sun-iris-door-lod0-jg "prejoint" 2) (def-joint-node sun-iris-door-lod0-jg "align" 1) - (def-joint-node square-platform-lod0-jg "plat" 3) (def-joint-node square-platform-lod0-jg "prejoint" 2) (def-joint-node square-platform-lod0-jg "align" 1) - (def-joint-node side-to-side-plat-lod0-jg "plat" 3) (def-joint-node side-to-side-plat-lod0-jg "prejoint" 2) (def-joint-node side-to-side-plat-lod0-jg "align" 1) - (def-joint-node qbert-plat-on-lod0-jg "boneless" 3) (def-joint-node qbert-plat-on-lod0-jg "prejoint" 2) (def-joint-node qbert-plat-on-lod0-jg "align" 1) - (def-joint-node double-lurker-lod0-jg "RthumbB" 32) (def-joint-node double-lurker-lod0-jg "LthumbB" 31) (def-joint-node double-lurker-lod0-jg "Rball" 30) @@ -1614,23 +1542,18 @@ (def-joint-node double-lurker-lod0-jg "Rthigh" 27) (def-joint-node double-lurker-lod0-jg "Rknee" 28) (def-joint-node double-lurker-lod0-jg "Rankle" 29) - (def-joint-node water-anim-sunken-dark-eco-helix-room-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-dark-eco-helix-room-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-dark-eco-helix-room-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-dark-eco-platform-room-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-dark-eco-platform-room-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-dark-eco-platform-room-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-dark-eco-qbert-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-dark-eco-qbert-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-dark-eco-qbert-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-big-room-upper-water-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-big-room-upper-water-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-big-room-upper-water-lod0-jg "align" 1) - (def-joint-node billy-lod0-jg "RpinkyB" 59) (def-joint-node billy-lod0-jg "RpinkyA" 58) (def-joint-node billy-lod0-jg "RmiddleB" 57) @@ -1690,35 +1613,27 @@ (def-joint-node billy-lod0-jg "Lthigh" 27) (def-joint-node billy-lod0-jg "Lknee" 28) (def-joint-node billy-lod0-jg "Lankle" 29) - (def-joint-node water-anim-sunken-short-piece-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-short-piece-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-short-piece-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-hall-with-three-whirlpools-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-hall-with-three-whirlpools-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-hall-with-three-whirlpools-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-hall-with-one-whirlpool-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-hall-with-one-whirlpool-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-hall-with-one-whirlpool-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-circular-with-bullys-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-circular-with-bullys-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-circular-with-bullys-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-first-right-branch-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-first-right-branch-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-first-right-branch-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-first-room-from-entrance-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-first-room-from-entrance-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-first-room-from-entrance-lod0-jg "align" 1) - (def-joint-node wall-plat-lod0-jg "boneless" 3) (def-joint-node wall-plat-lod0-jg "prejoint" 2) (def-joint-node wall-plat-lod0-jg "align" 1) - (def-joint-node sunkenfisha-yellow-blue-lod0-jg "Rfin" 7) (def-joint-node sunkenfisha-yellow-blue-lod0-jg "tail2" 6) (def-joint-node sunkenfisha-yellow-blue-lod0-jg "tail1" 5) @@ -1726,11 +1641,9 @@ (def-joint-node sunkenfisha-yellow-blue-lod0-jg "top" 3) (def-joint-node sunkenfisha-yellow-blue-lod0-jg "prejoint" 2) (def-joint-node sunkenfisha-yellow-blue-lod0-jg "align" 1) - (def-joint-node floating-launcher-lod0-jg "boneless" 3) (def-joint-node floating-launcher-lod0-jg "prejoint" 2) (def-joint-node floating-launcher-lod0-jg "align" 1) - (def-joint-node bully-lod0-jg "RpinkyB" 44) (def-joint-node bully-lod0-jg "RpinkyA" 43) (def-joint-node bully-lod0-jg "RringB" 42) @@ -1775,7 +1688,6 @@ (def-joint-node bully-lod0-jg "RthumbA" 27) (def-joint-node bully-lod0-jg "RthumbB" 28) (def-joint-node bully-lod0-jg "RmiddleA" 29) - (def-joint-node sunkenfisha-red-yellow-lod0-jg "Rfin" 7) (def-joint-node sunkenfisha-red-yellow-lod0-jg "tail2" 6) (def-joint-node sunkenfisha-red-yellow-lod0-jg "tail1" 5) @@ -1783,7 +1695,6 @@ (def-joint-node sunkenfisha-red-yellow-lod0-jg "top" 3) (def-joint-node sunkenfisha-red-yellow-lod0-jg "prejoint" 2) (def-joint-node sunkenfisha-red-yellow-lod0-jg "align" 1) - (def-joint-node yeti-lod0-jg "Larmhair" 47) (def-joint-node yeti-lod0-jg "Rleghair" 46) (def-joint-node yeti-lod0-jg "Rball" 45) @@ -1831,33 +1742,26 @@ (def-joint-node yeti-lod0-jg "RthumbC" 27) (def-joint-node yeti-lod0-jg "RindexA" 28) (def-joint-node yeti-lod0-jg "RindexB" 29) - (def-joint-node snowpusher-lod0-jg "main" 3) (def-joint-node snowpusher-lod0-jg "prejoint" 2) (def-joint-node snowpusher-lod0-jg "align" 1) - (def-joint-node snowcam-lod0-jg "camera" 4) (def-joint-node snowcam-lod0-jg "snowcam" 3) (def-joint-node snowcam-lod0-jg "prejoint" 2) (def-joint-node snowcam-lod0-jg "align" 1) - (def-joint-node water-anim-village1-fountain-lod0-jg "boneless" 3) (def-joint-node water-anim-village1-fountain-lod0-jg "prejoint" 2) (def-joint-node water-anim-village1-fountain-lod0-jg "align" 1) - (def-joint-node snow-spatula-lod0-jg "boneless" 3) (def-joint-node snow-spatula-lod0-jg "prejoint" 2) (def-joint-node snow-spatula-lod0-jg "align" 1) - (def-joint-node swampcam-lod0-jg "camera" 4) (def-joint-node swampcam-lod0-jg "beachcam" 3) (def-joint-node swampcam-lod0-jg "prejoint" 2) (def-joint-node swampcam-lod0-jg "align" 1) - (def-joint-node snow-log-lod0-jg "log" 3) (def-joint-node snow-log-lod0-jg "prejoint" 2) (def-joint-node snow-log-lod0-jg "align" 1) - (def-joint-node snow-gears-lod0-jg "chain2" 7) (def-joint-node snow-gears-lod0-jg "chain1" 6) (def-joint-node snow-gears-lod0-jg "gear2" 5) @@ -1865,12 +1769,10 @@ (def-joint-node snow-gears-lod0-jg "main" 3) (def-joint-node snow-gears-lod0-jg "prejoint" 2) (def-joint-node snow-gears-lod0-jg "align" 1) - (def-joint-node snow-eggtop-lod0-jg "eggtop" 4) (def-joint-node snow-eggtop-lod0-jg "main" 3) (def-joint-node snow-eggtop-lod0-jg "prejoint" 2) (def-joint-node snow-eggtop-lod0-jg "align" 1) - (def-joint-node snow-bunny-lod0-jg "Rball" 21) (def-joint-node snow-bunny-lod0-jg "Rankle" 20) (def-joint-node snow-bunny-lod0-jg "Rknee" 19) @@ -1892,22 +1794,18 @@ (def-joint-node snow-bunny-lod0-jg "Rshoulder" 11) (def-joint-node snow-bunny-lod0-jg "Rebow" 12) (def-joint-node snow-bunny-lod0-jg "Rhand" 13) - (def-joint-node water-anim-sunken-start-of-helix-slide-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-start-of-helix-slide-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-start-of-helix-slide-lod0-jg "align" 1) - (def-joint-node snow-bumper-lod0-jg "button" 6) (def-joint-node snow-bumper-lod0-jg "top" 5) (def-joint-node snow-bumper-lod0-jg "lower" 4) (def-joint-node snow-bumper-lod0-jg "main" 3) (def-joint-node snow-bumper-lod0-jg "prejoint" 2) (def-joint-node snow-bumper-lod0-jg "align" 1) - (def-joint-node snow-ball-shadow-lod0-jg "boneless" 3) (def-joint-node snow-ball-shadow-lod0-jg "prejoint" 2) (def-joint-node snow-ball-shadow-lod0-jg "align" 1) - (def-joint-node ndi-lod0-jg "stamp" 19) (def-joint-node ndi-lod0-jg "whiteClaw_paw" 18) (def-joint-node ndi-lod0-jg "whiteClaw_three" 17) @@ -1927,11 +1825,9 @@ (def-joint-node ndi-lod0-jg "d" 11) (def-joint-node ndi-lod0-jg "o" 12) (def-joint-node ndi-lod0-jg "g1" 13) - (def-joint-node snow-ball-lod0-jg "boneless" 3) (def-joint-node snow-ball-lod0-jg "prejoint" 2) (def-joint-node snow-ball-lod0-jg "align" 1) - (def-joint-node ram-boss-lod0-jg "Rball" 44) (def-joint-node ram-boss-lod0-jg "Rankle" 43) (def-joint-node ram-boss-lod0-jg "Rknee" 42) @@ -1976,7 +1872,6 @@ (def-joint-node ram-boss-lod0-jg "RindexB" 27) (def-joint-node ram-boss-lod0-jg "RindexC" 28) (def-joint-node ram-boss-lod0-jg "RmiddleA" 29) - (def-joint-node ram-lod0-jg "lever" 10) (def-joint-node ram-lod0-jg "ramboss" 9) (def-joint-node ram-lod0-jg "ramlog" 8) @@ -1987,7 +1882,6 @@ (def-joint-node ram-lod0-jg "main" 3) (def-joint-node ram-lod0-jg "prejoint" 2) (def-joint-node ram-lod0-jg "align" 1) - (def-joint-node ice-cube-break-lod0-jg "cluster_r_leg2" 55) (def-joint-node ice-cube-break-lod0-jg "cluster_l_leg1" 54) (def-joint-node ice-cube-break-lod0-jg "Lball" 53) @@ -2043,7 +1937,6 @@ (def-joint-node ice-cube-break-lod0-jg "Rankle" 27) (def-joint-node ice-cube-break-lod0-jg "Rball" 28) (def-joint-node ice-cube-break-lod0-jg "cluster_r_leg1" 29) - (def-joint-node swamp-rope-lod0-jg "ropeF" 8) (def-joint-node swamp-rope-lod0-jg "ropeE" 7) (def-joint-node swamp-rope-lod0-jg "ropeD" 6) @@ -2052,7 +1945,6 @@ (def-joint-node swamp-rope-lod0-jg "ropeA" 3) (def-joint-node swamp-rope-lod0-jg "prejoint" 2) (def-joint-node swamp-rope-lod0-jg "align" 1) - (def-joint-node ice-cube-lod0-jg "cluster_r_leg1" 55) (def-joint-node ice-cube-lod0-jg "cluster_r_leg2" 54) (def-joint-node ice-cube-lod0-jg "cluster_l_leg1" 53) @@ -2108,28 +2000,22 @@ (def-joint-node ice-cube-lod0-jg "Rknee" 27) (def-joint-node ice-cube-lod0-jg "Rankle" 28) (def-joint-node ice-cube-lod0-jg "Rball" 29) - (def-joint-node flutflut-plat-small-lod0-jg "boneless" 3) (def-joint-node flutflut-plat-small-lod0-jg "prejoint" 2) (def-joint-node flutflut-plat-small-lod0-jg "align" 1) - (def-joint-node flutflut-plat-med-lod0-jg "boneless" 3) (def-joint-node flutflut-plat-med-lod0-jg "prejoint" 2) (def-joint-node flutflut-plat-med-lod0-jg "align" 1) - (def-joint-node flutflut-plat-large-lod0-jg "boneless" 3) (def-joint-node flutflut-plat-large-lod0-jg "prejoint" 2) (def-joint-node flutflut-plat-large-lod0-jg "align" 1) - (def-joint-node water-anim-rolling-water-back-lod0-jg "boneless" 3) (def-joint-node water-anim-rolling-water-back-lod0-jg "prejoint" 2) (def-joint-node water-anim-rolling-water-back-lod0-jg "align" 1) - (def-joint-node rollingcam-lod0-jg "camera" 4) (def-joint-node rollingcam-lod0-jg "beachcam" 3) (def-joint-node rollingcam-lod0-jg "prejoint" 2) (def-joint-node rollingcam-lod0-jg "align" 1) - (def-joint-node rolling-start-whole-lod0-jg "banner5" 9) (def-joint-node rolling-start-whole-lod0-jg "banner3" 8) (def-joint-node rolling-start-whole-lod0-jg "banner6" 7) @@ -2139,7 +2025,6 @@ (def-joint-node rolling-start-whole-lod0-jg "main" 3) (def-joint-node rolling-start-whole-lod0-jg "prejoint" 2) (def-joint-node rolling-start-whole-lod0-jg "align" 1) - (def-joint-node happy-plant-lod0-jg "vine11" 38) (def-joint-node happy-plant-lod0-jg "vine10" 37) (def-joint-node happy-plant-lod0-jg "vine9" 36) @@ -2178,7 +2063,6 @@ (def-joint-node happy-plant-lod0-jg "leaves" 27) (def-joint-node happy-plant-lod0-jg "vine1" 28) (def-joint-node happy-plant-lod0-jg "vine2" 29) - (def-joint-node water-anim-ogre-lava-lod0-jg "boulder_two" 12) (def-joint-node water-anim-ogre-lava-lod0-jg "boulder_one" 11) (def-joint-node water-anim-ogre-lava-lod0-jg "boulder" 10) @@ -2191,7 +2075,6 @@ (def-joint-node water-anim-ogre-lava-lod0-jg "main" 3) (def-joint-node water-anim-ogre-lava-lod0-jg "prejoint" 2) (def-joint-node water-anim-ogre-lava-lod0-jg "align" 1) - (def-joint-node shortcut-boulder-broken-lod0-jg "8" 12) (def-joint-node shortcut-boulder-broken-lod0-jg "7" 11) (def-joint-node shortcut-boulder-broken-lod0-jg "6" 10) @@ -2204,7 +2087,6 @@ (def-joint-node shortcut-boulder-broken-lod0-jg "main" 3) (def-joint-node shortcut-boulder-broken-lod0-jg "prejoint" 2) (def-joint-node shortcut-boulder-broken-lod0-jg "align" 1) - (def-joint-node shortcut-boulder-whole-lod0-jg "8" 12) (def-joint-node shortcut-boulder-whole-lod0-jg "7" 11) (def-joint-node shortcut-boulder-whole-lod0-jg "6" 10) @@ -2217,7 +2099,6 @@ (def-joint-node shortcut-boulder-whole-lod0-jg "main" 3) (def-joint-node shortcut-boulder-whole-lod0-jg "prejoint" 2) (def-joint-node shortcut-boulder-whole-lod0-jg "align" 1) - (def-joint-node plunger-lurker-lod0-jg "bellyEND" 65) (def-joint-node plunger-lurker-lod0-jg "RpinkyC" 64) (def-joint-node plunger-lurker-lod0-jg "RringC" 63) @@ -2283,13 +2164,11 @@ (def-joint-node plunger-lurker-lod0-jg "LmiddleC" 57) (def-joint-node plunger-lurker-lod0-jg "LringC" 58) (def-joint-node plunger-lurker-lod0-jg "LpinkyC" 59) - (def-joint-node ogrecam-lod0-jg "cameraB" 5) (def-joint-node ogrecam-lod0-jg "cameraA" 4) (def-joint-node ogrecam-lod0-jg "ogrecam" 3) (def-joint-node ogrecam-lod0-jg "prejoint" 2) (def-joint-node ogrecam-lod0-jg "align" 1) - (def-joint-node sunkenfisha-yellow-eye-lod0-jg "Rfin" 7) (def-joint-node sunkenfisha-yellow-eye-lod0-jg "tail2" 6) (def-joint-node sunkenfisha-yellow-eye-lod0-jg "tail1" 5) @@ -2297,22 +2176,18 @@ (def-joint-node sunkenfisha-yellow-eye-lod0-jg "top" 3) (def-joint-node sunkenfisha-yellow-eye-lod0-jg "prejoint" 2) (def-joint-node sunkenfisha-yellow-eye-lod0-jg "align" 1) - (def-joint-node tntbarrel-lod0-jg "tntb" 3) (def-joint-node tntbarrel-lod0-jg "prejoint" 2) (def-joint-node tntbarrel-lod0-jg "align" 1) - (def-joint-node ogreboss-column-lod0-jg "bottom" 6) (def-joint-node ogreboss-column-lod0-jg "top" 5) (def-joint-node ogreboss-column-lod0-jg "mid" 4) (def-joint-node ogreboss-column-lod0-jg "main" 3) (def-joint-node ogreboss-column-lod0-jg "prejoint" 2) (def-joint-node ogreboss-column-lod0-jg "align" 1) - (def-joint-node ogreboss-super-boulder-lod0-jg "main" 3) (def-joint-node ogreboss-super-boulder-lod0-jg "prejoint" 2) (def-joint-node ogreboss-super-boulder-lod0-jg "align" 1) - (def-joint-node ogreboss-shoot-boulder-break-lod0-jg "F" 9) (def-joint-node ogreboss-shoot-boulder-break-lod0-jg "E" 8) (def-joint-node ogreboss-shoot-boulder-break-lod0-jg "D" 7) @@ -2322,19 +2197,15 @@ (def-joint-node ogreboss-shoot-boulder-break-lod0-jg "main" 3) (def-joint-node ogreboss-shoot-boulder-break-lod0-jg "prejoint" 2) (def-joint-node ogreboss-shoot-boulder-break-lod0-jg "align" 1) - (def-joint-node ogreboss-shoot-boulder-lod0-jg "main" 3) (def-joint-node ogreboss-shoot-boulder-lod0-jg "prejoint" 2) (def-joint-node ogreboss-shoot-boulder-lod0-jg "align" 1) - (def-joint-node water-anim-finalboss-dark-eco-pool-lod0-jg "boneless" 3) (def-joint-node water-anim-finalboss-dark-eco-pool-lod0-jg "prejoint" 2) (def-joint-node water-anim-finalboss-dark-eco-pool-lod0-jg "align" 1) - (def-joint-node citb-disc-c-lod0-jg "boneless" 3) (def-joint-node citb-disc-c-lod0-jg "prejoint" 2) (def-joint-node citb-disc-c-lod0-jg "align" 1) - (def-joint-node ceilingflag-geo-jg "5" 7) (def-joint-node ceilingflag-geo-jg "4" 6) (def-joint-node ceilingflag-geo-jg "3" 5) @@ -2342,7 +2213,6 @@ (def-joint-node ceilingflag-geo-jg "main" 3) (def-joint-node ceilingflag-geo-jg "prejoint" 2) (def-joint-node ceilingflag-geo-jg "align" 1) - (def-joint-node robotboss-blueeco-lod0-jg "blue_ecoE" 8) (def-joint-node robotboss-blueeco-lod0-jg "blue_ecoD" 7) (def-joint-node robotboss-blueeco-lod0-jg "blue_ecoC" 6) @@ -2351,16 +2221,13 @@ (def-joint-node robotboss-blueeco-lod0-jg "blue_eco_piece" 3) (def-joint-node robotboss-blueeco-lod0-jg "prejoint" 2) (def-joint-node robotboss-blueeco-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-room-above-exit-chamber-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-room-above-exit-chamber-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-room-above-exit-chamber-lod0-jg "align" 1) - (def-joint-node snow-button-lod0-jg "button" 4) (def-joint-node snow-button-lod0-jg "main" 3) (def-joint-node snow-button-lod0-jg "prejoint" 2) (def-joint-node snow-button-lod0-jg "align" 1) - (def-joint-node robotboss-redeco-lod0-jg "top" 10) (def-joint-node robotboss-redeco-lod0-jg "junk" 9) (def-joint-node robotboss-redeco-lod0-jg "dishD" 8) @@ -2371,7 +2238,6 @@ (def-joint-node robotboss-redeco-lod0-jg "main" 3) (def-joint-node robotboss-redeco-lod0-jg "prejoint" 2) (def-joint-node robotboss-redeco-lod0-jg "align" 1) - (def-joint-node robotboss-cinematic-lod0-jg "Lfoot" 29) (def-joint-node robotboss-cinematic-lod0-jg "Lheel" 28) (def-joint-node robotboss-cinematic-lod0-jg "RindexA" 27) @@ -2401,11 +2267,9 @@ (def-joint-node robotboss-cinematic-lod0-jg "Lyellow_ecoTubeD" 11) (def-joint-node robotboss-cinematic-lod0-jg "Lyellow_ecoTubeB" 12) (def-joint-node robotboss-cinematic-lod0-jg "Lyellow_ecoTubeA" 13) - (def-joint-node water-anim-maincave-lower-right-pool-lod0-jg "boneless" 3) (def-joint-node water-anim-maincave-lower-right-pool-lod0-jg "prejoint" 2) (def-joint-node water-anim-maincave-lower-right-pool-lod0-jg "align" 1) - (def-joint-node robotboss-basic-lod0-jg "camera" 88) (def-joint-node robotboss-basic-lod0-jg "interesting" 87) (def-joint-node robotboss-basic-lod0-jg "Rfoot_back" 86) @@ -2494,11 +2358,9 @@ (def-joint-node robotboss-basic-lod0-jg "darkbombA" 57) (def-joint-node robotboss-basic-lod0-jg "darkbombB" 58) (def-joint-node robotboss-basic-lod0-jg "darkbombC" 59) - (def-joint-node plat-eco-finalboss-lit-lod0-jg "main" 3) (def-joint-node plat-eco-finalboss-lit-lod0-jg "prejoint" 2) (def-joint-node plat-eco-finalboss-lit-lod0-jg "align" 1) - (def-joint-node evilsis-lod0-jg "RringB" 75) (def-joint-node evilsis-lod0-jg "RringA" 74) (def-joint-node evilsis-lod0-jg "RmiddleB" 73) @@ -2574,15 +2436,12 @@ (def-joint-node evilsis-lod0-jg "r_flap1" 57) (def-joint-node evilsis-lod0-jg "r_flap2" 58) (def-joint-node evilsis-lod0-jg "ponytail3" 59) - (def-joint-node citb-drop-plat-red-lod0-jg "boneless" 3) (def-joint-node citb-drop-plat-red-lod0-jg "prejoint" 2) (def-joint-node citb-drop-plat-red-lod0-jg "align" 1) - (def-joint-node plat-eco-finalboss-lod0-jg "main" 3) (def-joint-node plat-eco-finalboss-lod0-jg "prejoint" 2) (def-joint-node plat-eco-finalboss-lod0-jg "align" 1) - (def-joint-node light-eco-small-lod0-jg "6" 8) (def-joint-node light-eco-small-lod0-jg "5" 7) (def-joint-node light-eco-small-lod0-jg "4" 6) @@ -2591,7 +2450,6 @@ (def-joint-node light-eco-small-lod0-jg "1" 3) (def-joint-node light-eco-small-lod0-jg "prejoint" 2) (def-joint-node light-eco-small-lod0-jg "align" 1) - (def-joint-node energybase-lod0-jg "disk" 24) (def-joint-node energybase-lod0-jg "box" 23) (def-joint-node energybase-lod0-jg "one_a" 22) @@ -2616,11 +2474,9 @@ (def-joint-node energybase-lod0-jg "three_b" 11) (def-joint-node energybase-lod0-jg "three_a" 12) (def-joint-node energybase-lod0-jg "ball1" 13) - (def-joint-node plat-sunken-lod0-jg "boneless" 3) (def-joint-node plat-sunken-lod0-jg "prejoint" 2) (def-joint-node plat-sunken-lod0-jg "align" 1) - (def-joint-node spider-egg-broken-lod0-jg "blackpoly" 18) (def-joint-node spider-egg-broken-lod0-jg "p6B" 17) (def-joint-node spider-egg-broken-lod0-jg "p5B" 16) @@ -2639,27 +2495,21 @@ (def-joint-node spider-egg-broken-lod0-jg "p10" 11) (def-joint-node spider-egg-broken-lod0-jg "p11" 12) (def-joint-node spider-egg-broken-lod0-jg "p12" 13) - (def-joint-node ogre-step-c-lod0-jg "step6" 3) (def-joint-node ogre-step-c-lod0-jg "prejoint" 2) (def-joint-node ogre-step-c-lod0-jg "align" 1) - (def-joint-node plat-jungleb-lod0-jg "boneless" 3) (def-joint-node plat-jungleb-lod0-jg "prejoint" 2) (def-joint-node plat-jungleb-lod0-jg "align" 1) - (def-joint-node dark-crystal-lod0-jg "crystal" 3) (def-joint-node dark-crystal-lod0-jg "prejoint" 2) (def-joint-node dark-crystal-lod0-jg "align" 1) - (def-joint-node cavetrapdoor-lod0-jg "trapdoor_" 3) (def-joint-node cavetrapdoor-lod0-jg "prejoint" 2) (def-joint-node cavetrapdoor-lod0-jg "align" 1) - (def-joint-node cavecrystal-lod0-jg "boneless" 3) (def-joint-node cavecrystal-lod0-jg "prejoint" 2) (def-joint-node cavecrystal-lod0-jg "align" 1) - (def-joint-node seagull-lod0-jg "head" 10) (def-joint-node seagull-lod0-jg "Rwingtip" 9) (def-joint-node seagull-lod0-jg "RWing" 8) @@ -2670,30 +2520,24 @@ (def-joint-node seagull-lod0-jg "main" 3) (def-joint-node seagull-lod0-jg "prejoint" 2) (def-joint-node seagull-lod0-jg "align" 1) - (def-joint-node spiderwebs-good-lod0-jg "web" 4) (def-joint-node spiderwebs-good-lod0-jg "main" 3) (def-joint-node spiderwebs-good-lod0-jg "prejoint" 2) (def-joint-node spiderwebs-good-lod0-jg "align" 1) - (def-joint-node gondolacables-lod0-jg "boneless" 3) (def-joint-node gondolacables-lod0-jg "prejoint" 2) (def-joint-node gondolacables-lod0-jg "align" 1) - (def-joint-node cavespatula-darkcave-lod0-jg "boneless" 3) (def-joint-node cavespatula-darkcave-lod0-jg "prejoint" 2) (def-joint-node cavespatula-darkcave-lod0-jg "align" 1) - (def-joint-node sunkencam-lod0-jg "camera" 4) (def-joint-node sunkencam-lod0-jg "beachcam" 3) (def-joint-node sunkencam-lod0-jg "prejoint" 2) (def-joint-node sunkencam-lod0-jg "align" 1) - (def-joint-node darkecocan-glow-lod0-jg "center" 4) (def-joint-node darkecocan-glow-lod0-jg "main" 3) (def-joint-node darkecocan-glow-lod0-jg "prejoint" 2) (def-joint-node darkecocan-glow-lod0-jg "align" 1) - (def-joint-node silodoor-lod0-jg "door_c" 7) (def-joint-node silodoor-lod0-jg "door_d" 6) (def-joint-node silodoor-lod0-jg "door_a" 5) @@ -2701,11 +2545,9 @@ (def-joint-node silodoor-lod0-jg "main" 3) (def-joint-node silodoor-lod0-jg "prejoint" 2) (def-joint-node silodoor-lod0-jg "align" 1) - (def-joint-node plat-eco-citb-lit-lod0-jg "main" 3) (def-joint-node plat-eco-citb-lit-lod0-jg "prejoint" 2) (def-joint-node plat-eco-citb-lit-lod0-jg "align" 1) - (def-joint-node evilbro-citadel-lod0-jg "rball3" 75) (def-joint-node evilbro-citadel-lod0-jg "rball2" 74) (def-joint-node evilbro-citadel-lod0-jg "fball3" 73) @@ -2781,19 +2623,15 @@ (def-joint-node evilbro-citadel-lod0-jg "RmiddleA" 57) (def-joint-node evilbro-citadel-lod0-jg "RmiddleB" 58) (def-joint-node evilbro-citadel-lod0-jg "RringA" 59) - (def-joint-node citb-rotatebox-lod0-jg "main" 3) (def-joint-node citb-rotatebox-lod0-jg "prejoint" 2) (def-joint-node citb-rotatebox-lod0-jg "align" 1) - (def-joint-node helix-slide-door-lod0-jg "helixdoor" 3) (def-joint-node helix-slide-door-lod0-jg "prejoint" 2) (def-joint-node helix-slide-door-lod0-jg "align" 1) - (def-joint-node orb-cache-top-lod0-jg "boneless" 3) (def-joint-node orb-cache-top-lod0-jg "prejoint" 2) (def-joint-node orb-cache-top-lod0-jg "align" 1) - (def-joint-node citb-iris-door-lod0-jg "rote8" 11) (def-joint-node citb-iris-door-lod0-jg "rote1" 10) (def-joint-node citb-iris-door-lod0-jg "rote7" 9) @@ -2805,15 +2643,12 @@ (def-joint-node citb-iris-door-lod0-jg "base" 3) (def-joint-node citb-iris-door-lod0-jg "prejoint" 2) (def-joint-node citb-iris-door-lod0-jg "align" 1) - (def-joint-node citb-robotboss-leftshoulder-lod0-jg "main" 3) (def-joint-node citb-robotboss-leftshoulder-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-leftshoulder-lod0-jg "align" 1) - (def-joint-node citb-robotboss-nose-lod0-jg "main" 3) (def-joint-node citb-robotboss-nose-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-nose-lod0-jg "align" 1) - (def-joint-node citb-hose-lod0-jg "4" 8) (def-joint-node citb-hose-lod0-jg "3" 7) (def-joint-node citb-hose-lod0-jg "2" 6) @@ -2822,11 +2657,9 @@ (def-joint-node citb-hose-lod0-jg "main" 3) (def-joint-node citb-hose-lod0-jg "prejoint" 2) (def-joint-node citb-hose-lod0-jg "align" 1) - (def-joint-node citb-robotboss-belly-lod0-jg "main" 3) (def-joint-node citb-robotboss-belly-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-belly-lod0-jg "align" 1) - (def-joint-node eichar-lod0-jg "eyeR" 83) (def-joint-node eichar-lod0-jg "eyeL" 82) (def-joint-node eichar-lod0-jg "belt" 81) @@ -2910,24 +2743,19 @@ (def-joint-node eichar-lod0-jg "rmidB" 57) (def-joint-node eichar-lod0-jg "rringA" 58) (def-joint-node eichar-lod0-jg "rringB" 59) - (def-joint-node water-anim-sunken-qbert-room-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-qbert-room-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-qbert-room-lod0-jg "align" 1) - (def-joint-node grottopole-lod0-jg "main" 3) (def-joint-node grottopole-lod0-jg "prejoint" 2) (def-joint-node grottopole-lod0-jg "align" 1) - (def-joint-node citb-generator-lod0-jg "boneless" 3) (def-joint-node citb-generator-lod0-jg "prejoint" 2) (def-joint-node citb-generator-lod0-jg "align" 1) - (def-joint-node citb-exit-plat-lod0-jg "button" 4) (def-joint-node citb-exit-plat-lod0-jg "main_" 3) (def-joint-node citb-exit-plat-lod0-jg "prejoint" 2) (def-joint-node citb-exit-plat-lod0-jg "align" 1) - (def-joint-node sage-lod0-jg "belly" 74) (def-joint-node sage-lod0-jg "Rball" 73) (def-joint-node sage-lod0-jg "Rbigtoe" 72) @@ -3002,22 +2830,18 @@ (def-joint-node sage-lod0-jg "LringB" 57) (def-joint-node sage-lod0-jg "LpinkyA" 58) (def-joint-node sage-lod0-jg "LpinkyB" 59) - (def-joint-node eggtop-lod0-jg "eggtop" 4) (def-joint-node eggtop-lod0-jg "main" 3) (def-joint-node eggtop-lod0-jg "prejoint" 2) (def-joint-node eggtop-lod0-jg "align" 1) - (def-joint-node race-ring-lod0-jg "fuelcell" 5) (def-joint-node race-ring-lod0-jg "camera" 4) (def-joint-node race-ring-lod0-jg "racering" 3) (def-joint-node race-ring-lod0-jg "prejoint" 2) (def-joint-node race-ring-lod0-jg "align" 1) - (def-joint-node plat-eco-lit-lod0-jg "main" 3) (def-joint-node plat-eco-lit-lod0-jg "prejoint" 2) (def-joint-node plat-eco-lit-lod0-jg "align" 1) - (def-joint-node robber-lod0-jg "flap2" 59) (def-joint-node robber-lod0-jg "rArmFur" 58) (def-joint-node robber-lod0-jg "RpinkyB" 57) @@ -3077,41 +2901,32 @@ (def-joint-node robber-lod0-jg "lLegFur" 27) (def-joint-node robber-lod0-jg "Rthigh" 28) (def-joint-node robber-lod0-jg "Rknee" 29) - (def-joint-node powercellalt-lod0-jg "boneless" 3) (def-joint-node powercellalt-lod0-jg "prejoint" 2) (def-joint-node powercellalt-lod0-jg "align" 1) - (def-joint-node citb-drop-plat-yellow-lod0-jg "boneless" 3) (def-joint-node citb-drop-plat-yellow-lod0-jg "prejoint" 2) (def-joint-node citb-drop-plat-yellow-lod0-jg "align" 1) - (def-joint-node tar-plat-lod0-jg "tarplat" 3) (def-joint-node tar-plat-lod0-jg "prejoint" 2) (def-joint-node tar-plat-lod0-jg "align" 1) - (def-joint-node swamp-spike-lod0-jg "spike_1" 3) (def-joint-node swamp-spike-lod0-jg "prejoint" 2) (def-joint-node swamp-spike-lod0-jg "align" 1) - (def-joint-node warp-gate-switch-lod0-jg "button" 4) (def-joint-node warp-gate-switch-lod0-jg "main" 3) (def-joint-node warp-gate-switch-lod0-jg "prejoint" 2) (def-joint-node warp-gate-switch-lod0-jg "align" 1) - (def-joint-node citb-drop-plat-blue-lod0-jg "boneless" 3) (def-joint-node citb-drop-plat-blue-lod0-jg "prejoint" 2) (def-joint-node citb-drop-plat-blue-lod0-jg "align" 1) - (def-joint-node precursor-arm-lod0-jg "ropearm" 4) (def-joint-node precursor-arm-lod0-jg "arm" 3) (def-joint-node precursor-arm-lod0-jg "prejoint" 2) (def-joint-node precursor-arm-lod0-jg "align" 1) - (def-joint-node water-anim-rolling-water-front-lod0-jg "boneless" 3) (def-joint-node water-anim-rolling-water-front-lod0-jg "prejoint" 2) (def-joint-node water-anim-rolling-water-front-lod0-jg "align" 1) - (def-joint-node fuelcell-naked-lod0-jg "orbit2" 9) (def-joint-node fuelcell-naked-lod0-jg "orbit" 8) (def-joint-node fuelcell-naked-lod0-jg "piece4" 7) @@ -3121,40 +2936,32 @@ (def-joint-node fuelcell-naked-lod0-jg "main" 3) (def-joint-node fuelcell-naked-lod0-jg "prejoint" 2) (def-joint-node fuelcell-naked-lod0-jg "align" 1) - (def-joint-node water-anim-sunken-hall-before-big-room-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-hall-before-big-room-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-hall-before-big-room-lod0-jg "align" 1) - (def-joint-node water-anim-maincave-water-with-crystal-lod0-jg "boneless" 3) (def-joint-node water-anim-maincave-water-with-crystal-lod0-jg "prejoint" 2) (def-joint-node water-anim-maincave-water-with-crystal-lod0-jg "align" 1) - (def-joint-node keg-conveyor-lod0-jg "spindle" 4) (def-joint-node keg-conveyor-lod0-jg "main" 3) (def-joint-node keg-conveyor-lod0-jg "prejoint" 2) (def-joint-node keg-conveyor-lod0-jg "align" 1) - (def-joint-node citb-donut-lod0-jg "boneless" 3) (def-joint-node citb-donut-lod0-jg "prejoint" 2) (def-joint-node citb-donut-lod0-jg "align" 1) - (def-joint-node citb-robotboss-head-lod0-jg "main" 3) (def-joint-node citb-robotboss-head-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-head-lod0-jg "align" 1) - (def-joint-node darkecocan-lod0-jg "center" 4) (def-joint-node darkecocan-lod0-jg "main" 3) (def-joint-node darkecocan-lod0-jg "prejoint" 2) (def-joint-node darkecocan-lod0-jg "align" 1) - (def-joint-node redring-lod0-jg "tail" 6) (def-joint-node redring-lod0-jg "inring" 5) (def-joint-node redring-lod0-jg "outring" 4) (def-joint-node redring-lod0-jg "main" 3) (def-joint-node redring-lod0-jg "prejoint" 2) (def-joint-node redring-lod0-jg "align" 1) - (def-joint-node greenshot-lod0-jg "rightbot" 9) (def-joint-node greenshot-lod0-jg "rightmid" 8) (def-joint-node greenshot-lod0-jg "righttop" 7) @@ -3164,27 +2971,21 @@ (def-joint-node greenshot-lod0-jg "main" 3) (def-joint-node greenshot-lod0-jg "prejoint" 2) (def-joint-node greenshot-lod0-jg "align" 1) - (def-joint-node citb-drop-plat-lod0-jg "boneless" 3) (def-joint-node citb-drop-plat-lod0-jg "prejoint" 2) (def-joint-node citb-drop-plat-lod0-jg "align" 1) - (def-joint-node citb-robotboss-rightshoulder-lod0-jg "main" 3) (def-joint-node citb-robotboss-rightshoulder-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-rightshoulder-lod0-jg "align" 1) - (def-joint-node crate-darkeco-lod0-jg "crate" 3) (def-joint-node crate-darkeco-lod0-jg "prejoint" 2) (def-joint-node crate-darkeco-lod0-jg "align" 1) - (def-joint-node water-anim-misty-mud-other-near-skull-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-other-near-skull-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-other-near-skull-lod0-jg "align" 1) - (def-joint-node water-anim-lavatube-energy-lava-lod0-jg "boneless" 3) (def-joint-node water-anim-lavatube-energy-lava-lod0-jg "prejoint" 2) (def-joint-node water-anim-lavatube-energy-lava-lod0-jg "align" 1) - (def-joint-node lurkercrab-lod0-jg "rKnee3" 25) (def-joint-node lurkercrab-lod0-jg "rThigh3" 24) (def-joint-node lurkercrab-lod0-jg "rKnee2" 23) @@ -3210,7 +3011,6 @@ (def-joint-node lurkercrab-lod0-jg "lKnee2" 11) (def-joint-node lurkercrab-lod0-jg "lShoulder" 12) (def-joint-node lurkercrab-lod0-jg "lElbow" 13) - (def-joint-node assistant-lavatube-start-lod0-jg "belt" 94) (def-joint-node assistant-lavatube-start-lod0-jg "RpantFlap" 93) (def-joint-node assistant-lavatube-start-lod0-jg "LpantFlap" 92) @@ -3305,7 +3105,6 @@ (def-joint-node assistant-lavatube-start-lod0-jg "lGlove" 57) (def-joint-node assistant-lavatube-start-lod0-jg "lTopStrap2" 58) (def-joint-node assistant-lavatube-start-lod0-jg "RthumbA" 59) - (def-joint-node spider-egg-unbroken-lod0-jg "blackpoly" 18) (def-joint-node spider-egg-unbroken-lod0-jg "p6B" 17) (def-joint-node spider-egg-unbroken-lod0-jg "p5B" 16) @@ -3324,11 +3123,9 @@ (def-joint-node spider-egg-unbroken-lod0-jg "p10" 11) (def-joint-node spider-egg-unbroken-lod0-jg "p11" 12) (def-joint-node spider-egg-unbroken-lod0-jg "p12" 13) - (def-joint-node ecoventrock-lod0-jg "boneless" 3) (def-joint-node ecoventrock-lod0-jg "prejoint" 2) (def-joint-node ecoventrock-lod0-jg "align" 1) - (def-joint-node dark-crystal-explode-lod0-jg "crystl_15" 17) (def-joint-node dark-crystal-explode-lod0-jg "crystl_14" 16) (def-joint-node dark-crystal-explode-lod0-jg "crystl_13" 15) @@ -3346,11 +3143,9 @@ (def-joint-node dark-crystal-explode-lod0-jg "crystl_9" 11) (def-joint-node dark-crystal-explode-lod0-jg "crystl_10" 12) (def-joint-node dark-crystal-explode-lod0-jg "crystl_11" 13) - (def-joint-node water-anim-darkcave-water-with-crystal-lod0-jg "boneless" 3) (def-joint-node water-anim-darkcave-water-with-crystal-lod0-jg "prejoint" 2) (def-joint-node water-anim-darkcave-water-with-crystal-lod0-jg "align" 1) - (def-joint-node plant-boss-main-lod0-jg "lowerTeeth" 43) (def-joint-node plant-boss-main-lod0-jg "tongueTIP" 42) (def-joint-node plant-boss-main-lod0-jg "tongueMID1" 41) @@ -3394,7 +3189,6 @@ (def-joint-node plant-boss-main-lod0-jg "back" 27) (def-joint-node plant-boss-main-lod0-jg "camera" 28) (def-joint-node plant-boss-main-lod0-jg "camera2" 29) - (def-joint-node lightning-mole-lod0-jg "rightEAR2" 36) (def-joint-node lightning-mole-lod0-jg "rightEAR1" 35) (def-joint-node lightning-mole-lod0-jg "leftEAR2" 34) @@ -3431,28 +3225,23 @@ (def-joint-node lightning-mole-lod0-jg "tail4" 27) (def-joint-node lightning-mole-lod0-jg "Rthigh" 28) (def-joint-node lightning-mole-lod0-jg "Rknee" 29) - (def-joint-node chainmine-lod0-jg "mine" 6) (def-joint-node chainmine-lod0-jg "chainB" 5) (def-joint-node chainmine-lod0-jg "chainA" 4) (def-joint-node chainmine-lod0-jg "main" 3) (def-joint-node chainmine-lod0-jg "prejoint" 2) (def-joint-node chainmine-lod0-jg "align" 1) - (def-joint-node beachcam-lod0-jg "camera" 4) (def-joint-node beachcam-lod0-jg "beachcam" 3) (def-joint-node beachcam-lod0-jg "prejoint" 2) (def-joint-node beachcam-lod0-jg "align" 1) - (def-joint-node village-cam-lod0-jg "camera" 4) (def-joint-node village-cam-lod0-jg "beachcam" 3) (def-joint-node village-cam-lod0-jg "prejoint" 2) (def-joint-node village-cam-lod0-jg "align" 1) - (def-joint-node bladeassm-lod0-jg "master" 3) (def-joint-node bladeassm-lod0-jg "prejoint" 2) (def-joint-node bladeassm-lod0-jg "align" 1) - (def-joint-node seaweed-lod0-jg "9" 11) (def-joint-node seaweed-lod0-jg "8" 10) (def-joint-node seaweed-lod0-jg "7" 9) @@ -3464,7 +3253,6 @@ (def-joint-node seaweed-lod0-jg "1" 3) (def-joint-node seaweed-lod0-jg "prejoint" 2) (def-joint-node seaweed-lod0-jg "align" 1) - (def-joint-node rolling-start-broken-lod0-jg "banner5" 9) (def-joint-node rolling-start-broken-lod0-jg "banner3" 8) (def-joint-node rolling-start-broken-lod0-jg "banner6" 7) @@ -3474,7 +3262,6 @@ (def-joint-node rolling-start-broken-lod0-jg "main" 3) (def-joint-node rolling-start-broken-lod0-jg "prejoint" 2) (def-joint-node rolling-start-broken-lod0-jg "align" 1) - (def-joint-node ropebridge-70-lod0-jg "tail" 39) (def-joint-node ropebridge-70-lod0-jg "board35" 38) (def-joint-node ropebridge-70-lod0-jg "board34" 37) @@ -3514,17 +3301,14 @@ (def-joint-node ropebridge-70-lod0-jg "board24" 27) (def-joint-node ropebridge-70-lod0-jg "board25" 28) (def-joint-node ropebridge-70-lod0-jg "board26" 29) - (def-joint-node swamp-tetherrock-lod0-jg "camera" 5) (def-joint-node swamp-tetherrock-lod0-jg "roperock" 4) (def-joint-node swamp-tetherrock-lod0-jg "rock" 3) (def-joint-node swamp-tetherrock-lod0-jg "prejoint" 2) (def-joint-node swamp-tetherrock-lod0-jg "align" 1) - (def-joint-node medres-village2-lod0-jg "boneless" 3) (def-joint-node medres-village2-lod0-jg "prejoint" 2) (def-joint-node medres-village2-lod0-jg "align" 1) - (def-joint-node precurbridge-geo-jg "walksec_8" 19) (def-joint-node precurbridge-geo-jg "egg_8" 18) (def-joint-node precurbridge-geo-jg "walksec_7" 17) @@ -3544,20 +3328,16 @@ (def-joint-node precurbridge-geo-jg "walksec_4" 11) (def-joint-node precurbridge-geo-jg "egg_5" 12) (def-joint-node precurbridge-geo-jg "walksec_5" 13) - (def-joint-node ogre-step-d-lod0-jg "step5" 3) (def-joint-node ogre-step-d-lod0-jg "prejoint" 2) (def-joint-node ogre-step-d-lod0-jg "align" 1) - (def-joint-node warpgate-lod0-jg "camera" 4) (def-joint-node warpgate-lod0-jg "beachcam" 3) (def-joint-node warpgate-lod0-jg "prejoint" 2) (def-joint-node warpgate-lod0-jg "align" 1) - (def-joint-node citb-robotboss-leftarm-lod0-jg "main" 3) (def-joint-node citb-robotboss-leftarm-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-leftarm-lod0-jg "align" 1) - (def-joint-node swamp-rat-nest-c-lod0-jg "mid" 10) (def-joint-node swamp-rat-nest-c-lod0-jg "top_right" 9) (def-joint-node swamp-rat-nest-c-lod0-jg "top_mid" 8) @@ -3568,14 +3348,12 @@ (def-joint-node swamp-rat-nest-c-lod0-jg "spine1" 3) (def-joint-node swamp-rat-nest-c-lod0-jg "prejoint" 2) (def-joint-node swamp-rat-nest-c-lod0-jg "align" 1) - (def-joint-node logtrap-lod0-jg "log" 6) (def-joint-node logtrap-lod0-jg "ropeknot" 5) (def-joint-node logtrap-lod0-jg "logmid" 4) (def-joint-node logtrap-lod0-jg "logtop" 3) (def-joint-node logtrap-lod0-jg "prejoint" 2) (def-joint-node logtrap-lod0-jg "align" 1) - (def-joint-node sidedoor-geo-jg "door6" 9) (def-joint-node sidedoor-geo-jg "door5" 8) (def-joint-node sidedoor-geo-jg "door4" 7) @@ -3585,7 +3363,6 @@ (def-joint-node sidedoor-geo-jg "main" 3) (def-joint-node sidedoor-geo-jg "prejoint" 2) (def-joint-node sidedoor-geo-jg "align" 1) - (def-joint-node babak-lod0-jg "RmiddleC" 47) (def-joint-node babak-lod0-jg "RindexC" 46) (def-joint-node babak-lod0-jg "RthumbC" 45) @@ -3633,17 +3410,14 @@ (def-joint-node babak-lod0-jg "LthumbA" 27) (def-joint-node babak-lod0-jg "LthumbB" 28) (def-joint-node babak-lod0-jg "LindexA" 29) - (def-joint-node mother-spider-leg-lod0-jg "lmidlegB" 4) (def-joint-node mother-spider-leg-lod0-jg "lmidlegA" 3) (def-joint-node mother-spider-leg-lod0-jg "prejoint" 2) (def-joint-node mother-spider-leg-lod0-jg "align" 1) - (def-joint-node villa-starfish-lod0-jg "bod" 4) (def-joint-node villa-starfish-lod0-jg "main" 3) (def-joint-node villa-starfish-lod0-jg "prejoint" 2) (def-joint-node villa-starfish-lod0-jg "align" 1) - (def-joint-node logo-volumes-japan-lod0-jg "wall39" 51) (def-joint-node logo-volumes-japan-lod0-jg "wall38" 50) (def-joint-node logo-volumes-japan-lod0-jg "wall37" 49) @@ -3695,12 +3469,10 @@ (def-joint-node logo-volumes-japan-lod0-jg "wall14" 27) (def-joint-node logo-volumes-japan-lod0-jg "wall15" 28) (def-joint-node logo-volumes-japan-lod0-jg "wall16" 29) - (def-joint-node maincavecam-lod0-jg "camera" 4) (def-joint-node maincavecam-lod0-jg "cavecam" 3) (def-joint-node maincavecam-lod0-jg "prejoint" 2) (def-joint-node maincavecam-lod0-jg "align" 1) - (def-joint-node citb-coil-lod0-jg "four" 7) (def-joint-node citb-coil-lod0-jg "three" 6) (def-joint-node citb-coil-lod0-jg "two" 5) @@ -3708,11 +3480,9 @@ (def-joint-node citb-coil-lod0-jg "main_" 3) (def-joint-node citb-coil-lod0-jg "prejoint" 2) (def-joint-node citb-coil-lod0-jg "align" 1) - (def-joint-node citb-robotboss-lod0-jg "main" 3) (def-joint-node citb-robotboss-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-lod0-jg "align" 1) - (def-joint-node light-eco-big-lod0-jg "6" 9) (def-joint-node light-eco-big-lod0-jg "5" 8) (def-joint-node light-eco-big-lod0-jg "4" 7) @@ -3722,11 +3492,9 @@ (def-joint-node light-eco-big-lod0-jg "main" 3) (def-joint-node light-eco-big-lod0-jg "prejoint" 2) (def-joint-node light-eco-big-lod0-jg "align" 1) - (def-joint-node citb-robotboss-gun-lod0-jg "main" 3) (def-joint-node citb-robotboss-gun-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-gun-lod0-jg "align" 1) - (def-joint-node mother-spider-lod0-jg "hair" 29) (def-joint-node mother-spider-lod0-jg "ring" 28) (def-joint-node mother-spider-lod0-jg "webStart" 27) @@ -3756,7 +3524,6 @@ (def-joint-node mother-spider-lod0-jg "lfrontlegA" 11) (def-joint-node mother-spider-lod0-jg "lfrontlegB" 12) (def-joint-node mother-spider-lod0-jg "rrearlegA" 13) - (def-joint-node pelican-lod0-jg "lBall" 32) (def-joint-node pelican-lod0-jg "rBall" 31) (def-joint-node pelican-lod0-jg "neckFur" 30) @@ -3789,7 +3556,6 @@ (def-joint-node pelican-lod0-jg "lKnee" 27) (def-joint-node pelican-lod0-jg "lAnkle" 28) (def-joint-node pelican-lod0-jg "hair" 29) - (def-joint-node bully-broken-cage-lod0-jg "backspike" 12) (def-joint-node bully-broken-cage-lod0-jg "frontsupport" 11) (def-joint-node bully-broken-cage-lod0-jg "rsupport" 10) @@ -3802,11 +3568,9 @@ (def-joint-node bully-broken-cage-lod0-jg "back" 3) (def-joint-node bully-broken-cage-lod0-jg "prejoint" 2) (def-joint-node bully-broken-cage-lod0-jg "align" 1) - (def-joint-node citb-generator-broken-lod0-jg "boneless" 3) (def-joint-node citb-generator-broken-lod0-jg "prejoint" 2) (def-joint-node citb-generator-broken-lod0-jg "align" 1) - (def-joint-node buzzer-lod0-jg "wings" 15) (def-joint-node buzzer-lod0-jg "rLegs" 14) (def-joint-node buzzer-lod0-jg "align" 1) @@ -3822,24 +3586,20 @@ (def-joint-node buzzer-lod0-jg "lLens" 11) (def-joint-node buzzer-lod0-jg "lower" 12) (def-joint-node buzzer-lod0-jg "lLegs" 13) - (def-joint-node citb-arm-shoulder-a-lod0-jg "center_" 4) (def-joint-node citb-arm-shoulder-a-lod0-jg "boneless" 3) (def-joint-node citb-arm-shoulder-a-lod0-jg "prejoint" 2) (def-joint-node citb-arm-shoulder-a-lod0-jg "align" 1) - (def-joint-node jaws-lod0-jg "topjaw" 6) (def-joint-node jaws-lod0-jg "botjaw" 5) (def-joint-node jaws-lod0-jg "tail" 4) (def-joint-node jaws-lod0-jg "main" 3) (def-joint-node jaws-lod0-jg "prejoint" 2) (def-joint-node jaws-lod0-jg "align" 1) - (def-joint-node pusher-lod0-jg "pusherfront" 4) (def-joint-node pusher-lod0-jg "pusher" 3) (def-joint-node pusher-lod0-jg "prejoint" 2) (def-joint-node pusher-lod0-jg "align" 1) - (def-joint-node racer-explode-lod0-jg "16" 18) (def-joint-node racer-explode-lod0-jg "15" 17) (def-joint-node racer-explode-lod0-jg "14" 16) @@ -3858,16 +3618,13 @@ (def-joint-node racer-explode-lod0-jg "9" 11) (def-joint-node racer-explode-lod0-jg "10" 12) (def-joint-node racer-explode-lod0-jg "11" 13) - (def-joint-node medres-village11-lod0-jg "windmill" 4) (def-joint-node medres-village11-lod0-jg "main" 3) (def-joint-node medres-village11-lod0-jg "prejoint" 2) (def-joint-node medres-village11-lod0-jg "align" 1) - (def-joint-node blue-eco-charger-orb-lod0-jg "boneless" 3) (def-joint-node blue-eco-charger-orb-lod0-jg "prejoint" 2) (def-joint-node blue-eco-charger-orb-lod0-jg "align" 1) - (def-joint-node evilsis-citadel-lod0-jg "RringB" 75) (def-joint-node evilsis-citadel-lod0-jg "RringA" 74) (def-joint-node evilsis-citadel-lod0-jg "RmiddleB" 73) @@ -3943,32 +3700,25 @@ (def-joint-node evilsis-citadel-lod0-jg "r_flap1" 57) (def-joint-node evilsis-citadel-lod0-jg "r_flap2" 58) (def-joint-node evilsis-citadel-lod0-jg "ponytail3" 59) - (def-joint-node qbert-plat-lod0-jg "boneless" 3) (def-joint-node qbert-plat-lod0-jg "prejoint" 2) (def-joint-node qbert-plat-lod0-jg "align" 1) - (def-joint-node finalbosscam-lod0-jg "camera" 4) (def-joint-node finalbosscam-lod0-jg "beachcam" 3) (def-joint-node finalbosscam-lod0-jg "prejoint" 2) (def-joint-node finalbosscam-lod0-jg "align" 1) - (def-joint-node crate-wood-lod0-jg "crate" 3) (def-joint-node crate-wood-lod0-jg "prejoint" 2) (def-joint-node crate-wood-lod0-jg "align" 1) - (def-joint-node medres-snow-lod0-jg "boneless" 3) (def-joint-node medres-snow-lod0-jg "prejoint" 2) (def-joint-node medres-snow-lod0-jg "align" 1) - (def-joint-node crate-bucket-lod0-jg "bucket" 3) (def-joint-node crate-bucket-lod0-jg "prejoint" 2) (def-joint-node crate-bucket-lod0-jg "align" 1) - (def-joint-node money-lod0-jg "egg" 3) (def-joint-node money-lod0-jg "prejoint" 2) (def-joint-node money-lod0-jg "align" 1) - (def-joint-node minershort-lod0-jg "rStrapBot" 65) (def-joint-node minershort-lod0-jg "lStrapBot" 64) (def-joint-node minershort-lod0-jg "rStrapTop" 63) @@ -4034,7 +3784,6 @@ (def-joint-node minershort-lod0-jg "RmiddleB" 57) (def-joint-node minershort-lod0-jg "RringA" 58) (def-joint-node minershort-lod0-jg "RringB" 59) - (def-joint-node jak-white-lod0-jg "eyeR" 83) (def-joint-node jak-white-lod0-jg "eyeL" 82) (def-joint-node jak-white-lod0-jg "belt" 81) @@ -4118,28 +3867,22 @@ (def-joint-node jak-white-lod0-jg "packStrapMid" 57) (def-joint-node jak-white-lod0-jg "hips" 58) (def-joint-node jak-white-lod0-jg "Lthigh" 59) - (def-joint-node windspinner-lod0-jg "boneless" 3) (def-joint-node windspinner-lod0-jg "prejoint" 2) (def-joint-node windspinner-lod0-jg "align" 1) - (def-joint-node citb-arm-b-lod0-jg "center_" 4) (def-joint-node citb-arm-b-lod0-jg "boneless" 3) (def-joint-node citb-arm-b-lod0-jg "prejoint" 2) (def-joint-node citb-arm-b-lod0-jg "align" 1) - (def-joint-node crate-steel-lod0-jg "crate" 3) (def-joint-node crate-steel-lod0-jg "prejoint" 2) (def-joint-node crate-steel-lod0-jg "align" 1) - (def-joint-node ogre-step-a-lod0-jg "step8" 3) (def-joint-node ogre-step-a-lod0-jg "prejoint" 2) (def-joint-node ogre-step-a-lod0-jg "align" 1) - (def-joint-node water-anim-maincave-center-pool-lod0-jg "boneless" 3) (def-joint-node water-anim-maincave-center-pool-lod0-jg "prejoint" 2) (def-joint-node water-anim-maincave-center-pool-lod0-jg "align" 1) - (def-joint-node redsage-lod0-jg "headLamp" 69) (def-joint-node redsage-lod0-jg "RlegFlapB" 68) (def-joint-node redsage-lod0-jg "RlegFlapA" 67) @@ -4209,11 +3952,9 @@ (def-joint-node redsage-lod0-jg "RarmFlapB" 57) (def-joint-node redsage-lod0-jg "RarmFlapA" 58) (def-joint-node redsage-lod0-jg "LtubeFront" 59) - (def-joint-node water-anim-maincave-lower-left-pool-lod0-jg "boneless" 3) (def-joint-node water-anim-maincave-lower-left-pool-lod0-jg "prejoint" 2) (def-joint-node water-anim-maincave-lower-left-pool-lod0-jg "align" 1) - (def-joint-node lurkerpuppy-lod0-jg "Rball" 31) (def-joint-node lurkerpuppy-lod0-jg "Lball" 30) (def-joint-node lurkerpuppy-lod0-jg "Rshoulder" 13) @@ -4245,11 +3986,9 @@ (def-joint-node lurkerpuppy-lod0-jg "jaw" 27) (def-joint-node lurkerpuppy-lod0-jg "LthumbA" 28) (def-joint-node lurkerpuppy-lod0-jg "RthumbA" 29) - (def-joint-node medres-jungle-lod0-jg "boneless" 3) (def-joint-node medres-jungle-lod0-jg "prejoint" 2) (def-joint-node medres-jungle-lod0-jg "align" 1) - (def-joint-node balloonlurker-pilot-lod0-jg "Rankle" 21) (def-joint-node balloonlurker-pilot-lod0-jg "Rknee" 20) (def-joint-node balloonlurker-pilot-lod0-jg "Rthigh" 19) @@ -4271,7 +4010,6 @@ (def-joint-node balloonlurker-pilot-lod0-jg "Lhand" 11) (def-joint-node balloonlurker-pilot-lod0-jg "Rshoulder" 12) (def-joint-node balloonlurker-pilot-lod0-jg "Relbow" 13) - (def-joint-node lurkerworm-lod0-jg "ringRIGHT" 15) (def-joint-node lurkerworm-lod0-jg "ringLEFT" 14) (def-joint-node lurkerworm-lod0-jg "align" 1) @@ -4287,19 +4025,15 @@ (def-joint-node lurkerworm-lod0-jg "jaw" 11) (def-joint-node lurkerworm-lod0-jg "chinFur" 12) (def-joint-node lurkerworm-lod0-jg "ringTOP" 13) - (def-joint-node citb-sagecage-lod0-jg "main" 3) (def-joint-node citb-sagecage-lod0-jg "prejoint" 2) (def-joint-node citb-sagecage-lod0-jg "align" 1) - (def-joint-node medres-beach2-lod0-jg "boneless" 3) (def-joint-node medres-beach2-lod0-jg "prejoint" 2) (def-joint-node medres-beach2-lod0-jg "align" 1) - (def-joint-node citb-disc-a-lod0-jg "boneless" 3) (def-joint-node citb-disc-a-lod0-jg "prejoint" 2) (def-joint-node citb-disc-a-lod0-jg "align" 1) - (def-joint-node mayor-lod0-jg "RringC" 73) (def-joint-node mayor-lod0-jg "RmiddleC" 72) (def-joint-node mayor-lod0-jg "RthumbC" 71) @@ -4373,7 +4107,6 @@ (def-joint-node mayor-lod0-jg "Rtie3" 57) (def-joint-node mayor-lod0-jg "LthumbB" 58) (def-joint-node mayor-lod0-jg "LmiddleA" 59) - (def-joint-node lavaballoon-lod0-jg "rightbot" 9) (def-joint-node lavaballoon-lod0-jg "rightmid" 8) (def-joint-node lavaballoon-lod0-jg "leftbot" 7) @@ -4383,16 +4116,13 @@ (def-joint-node lavaballoon-lod0-jg "main" 3) (def-joint-node lavaballoon-lod0-jg "prejoint" 2) (def-joint-node lavaballoon-lod0-jg "align" 1) - (def-joint-node crate-barrel-lod0-jg "crate" 3) (def-joint-node crate-barrel-lod0-jg "prejoint" 2) (def-joint-node crate-barrel-lod0-jg "align" 1) - (def-joint-node citb-arm-shoulder-b-lod0-jg "center_" 4) (def-joint-node citb-arm-shoulder-b-lod0-jg "boneless" 3) (def-joint-node citb-arm-shoulder-b-lod0-jg "prejoint" 2) (def-joint-node citb-arm-shoulder-b-lod0-jg "align" 1) - (def-joint-node ogreboss-lod0-jg "Rball" 73) (def-joint-node ogreboss-lod0-jg "Rankle" 72) (def-joint-node ogreboss-lod0-jg "Rknee" 71) @@ -4466,7 +4196,6 @@ (def-joint-node ogreboss-lod0-jg "RchestDanglerC" 57) (def-joint-node ogreboss-lod0-jg "LchestDanglerA" 58) (def-joint-node ogreboss-lod0-jg "LchestDanglerB" 59) - (def-joint-node blue-eco-charger-lod0-jg "four" 7) (def-joint-node blue-eco-charger-lod0-jg "three" 6) (def-joint-node blue-eco-charger-lod0-jg "two" 5) @@ -4474,7 +4203,6 @@ (def-joint-node blue-eco-charger-lod0-jg "base" 3) (def-joint-node blue-eco-charger-lod0-jg "prejoint" 2) (def-joint-node blue-eco-charger-lod0-jg "align" 1) - (def-joint-node mistycannon-lod0-jg "lfwheel" 9) (def-joint-node mistycannon-lod0-jg "rfwheel" 8) (def-joint-node mistycannon-lod0-jg "rrwheel" 7) @@ -4484,7 +4212,6 @@ (def-joint-node mistycannon-lod0-jg "main" 3) (def-joint-node mistycannon-lod0-jg "prejoint" 2) (def-joint-node mistycannon-lod0-jg "align" 1) - (def-joint-node sculptor-muse-lod0-jg "fur" 45) (def-joint-node sculptor-muse-lod0-jg "jawEND" 44) (def-joint-node sculptor-muse-lod0-jg "Rball" 43) @@ -4530,11 +4257,9 @@ (def-joint-node sculptor-muse-lod0-jg "Lthigh" 27) (def-joint-node sculptor-muse-lod0-jg "Lknee" 28) (def-joint-node sculptor-muse-lod0-jg "Lankle" 29) - (def-joint-node lavashortcut-lod0-jg "boneless" 3) (def-joint-node lavashortcut-lod0-jg "prejoint" 2) (def-joint-node lavashortcut-lod0-jg "align" 1) - (def-joint-node lrocklrg-lod0-jg "fuelcell" 8) (def-joint-node lrocklrg-lod0-jg "camera" 7) (def-joint-node lrocklrg-lod0-jg "smlrock" 6) @@ -4543,11 +4268,9 @@ (def-joint-node lrocklrg-lod0-jg "Lrocklrg" 3) (def-joint-node lrocklrg-lod0-jg "prejoint" 2) (def-joint-node lrocklrg-lod0-jg "align" 1) - (def-joint-node revcycle-geo-jg "revcycle" 3) (def-joint-node revcycle-geo-jg "prejoint" 2) (def-joint-node revcycle-geo-jg "align" 1) - (def-joint-node sidekick-human-lod0-jg "RpinkyC" 75) (def-joint-node sidekick-human-lod0-jg "RmiddleC" 74) (def-joint-node sidekick-human-lod0-jg "RindexC" 73) @@ -4623,7 +4346,6 @@ (def-joint-node sidekick-human-lod0-jg "LpinkyB" 57) (def-joint-node sidekick-human-lod0-jg "RthumbA" 58) (def-joint-node sidekick-human-lod0-jg "RthumbB" 59) - (def-joint-node citb-bunny-lod0-jg "Rball" 21) (def-joint-node citb-bunny-lod0-jg "Rankle" 20) (def-joint-node citb-bunny-lod0-jg "Rknee" 19) @@ -4645,13 +4367,11 @@ (def-joint-node citb-bunny-lod0-jg "Rshoulder" 11) (def-joint-node citb-bunny-lod0-jg "Rebow" 12) (def-joint-node citb-bunny-lod0-jg "Rhand" 13) - (def-joint-node catch-fisha-lod0-jg "tail" 5) (def-joint-node catch-fisha-lod0-jg "mid" 4) (def-joint-node catch-fisha-lod0-jg "main" 3) (def-joint-node catch-fisha-lod0-jg "prejoint" 2) (def-joint-node catch-fisha-lod0-jg "align" 1) - (def-joint-node maindoor-lod0-jg "door6" 9) (def-joint-node maindoor-lod0-jg "door5" 8) (def-joint-node maindoor-lod0-jg "door4" 7) @@ -4661,7 +4381,6 @@ (def-joint-node maindoor-lod0-jg "master" 3) (def-joint-node maindoor-lod0-jg "prejoint" 2) (def-joint-node maindoor-lod0-jg "align" 1) - (def-joint-node yellowsage-lod0-jg "caneSpec" 79) (def-joint-node yellowsage-lod0-jg "caneTubeC" 78) (def-joint-node yellowsage-lod0-jg "caneTankTubeB" 77) @@ -4741,7 +4460,6 @@ (def-joint-node yellowsage-lod0-jg "caneTubeA" 57) (def-joint-node yellowsage-lod0-jg "caneTubeB" 58) (def-joint-node yellowsage-lod0-jg "Lspec" 59) - (def-joint-node flut-saddle-lod0-jg "tongue" 49) (def-joint-node flut-saddle-lod0-jg "rWingF2" 48) (def-joint-node flut-saddle-lod0-jg "rWing2" 47) @@ -4791,17 +4509,14 @@ (def-joint-node flut-saddle-lod0-jg "neck" 27) (def-joint-node flut-saddle-lod0-jg "head" 28) (def-joint-node flut-saddle-lod0-jg "ploom1" 29) - (def-joint-node ecovalve-geo-jg "boneless" 3) (def-joint-node ecovalve-geo-jg "prejoint" 2) (def-joint-node ecovalve-geo-jg "align" 1) - (def-joint-node plant-boss-root-lod0-jg "rootC" 5) (def-joint-node plant-boss-root-lod0-jg "rootB" 4) (def-joint-node plant-boss-root-lod0-jg "rootA" 3) (def-joint-node plant-boss-root-lod0-jg "prejoint" 2) (def-joint-node plant-boss-root-lod0-jg "align" 1) - (def-joint-node logo-english-lod0-jg "wall39" 51) (def-joint-node logo-english-lod0-jg "wall38" 50) (def-joint-node logo-english-lod0-jg "wall37" 49) @@ -4853,7 +4568,6 @@ (def-joint-node logo-english-lod0-jg "wall14" 27) (def-joint-node logo-english-lod0-jg "wall15" 28) (def-joint-node logo-english-lod0-jg "wall16" 29) - (def-joint-node green-eco-lurker-lod0-jg "RmiddleC" 49) (def-joint-node green-eco-lurker-lod0-jg "RindexC" 48) (def-joint-node green-eco-lurker-lod0-jg "RthumbC" 47) @@ -4903,25 +4617,20 @@ (def-joint-node green-eco-lurker-lod0-jg "Rleghair" 27) (def-joint-node green-eco-lurker-lod0-jg "Rankle" 28) (def-joint-node green-eco-lurker-lod0-jg "Rball" 29) - (def-joint-node citb-launcher-lod0-jg "boneless" 3) (def-joint-node citb-launcher-lod0-jg "prejoint" 2) (def-joint-node citb-launcher-lod0-jg "align" 1) - (def-joint-node reflector-mirror-lod0-jg "boneless" 3) (def-joint-node reflector-mirror-lod0-jg "prejoint" 2) (def-joint-node reflector-mirror-lod0-jg "align" 1) - (def-joint-node water-anim-village3-lava-lod0-jg "boneless" 3) (def-joint-node water-anim-village3-lava-lod0-jg "prejoint" 2) (def-joint-node water-anim-village3-lava-lod0-jg "align" 1) - (def-joint-node catch-fishb-lod0-jg "tail" 5) (def-joint-node catch-fishb-lod0-jg "mid" 4) (def-joint-node catch-fishb-lod0-jg "main" 3) (def-joint-node catch-fishb-lod0-jg "prejoint" 2) (def-joint-node catch-fishb-lod0-jg "align" 1) - (def-joint-node sack-lod0-jg "sparks" 7) (def-joint-node sack-lod0-jg "fuse_bot" 6) (def-joint-node sack-lod0-jg "neck" 5) @@ -4929,11 +4638,9 @@ (def-joint-node sack-lod0-jg "top" 3) (def-joint-node sack-lod0-jg "prejoint" 2) (def-joint-node sack-lod0-jg "align" 1) - (def-joint-node citb-disc-b-lod0-jg "boneless" 3) (def-joint-node citb-disc-b-lod0-jg "prejoint" 2) (def-joint-node citb-disc-b-lod0-jg "align" 1) - (def-joint-node ecoclaw-lod0-jg "arm_4" 7) (def-joint-node ecoclaw-lod0-jg "arm_3" 6) (def-joint-node ecoclaw-lod0-jg "arm_2" 5) @@ -4941,11 +4648,9 @@ (def-joint-node ecoclaw-lod0-jg "main" 3) (def-joint-node ecoclaw-lod0-jg "prejoint" 2) (def-joint-node ecoclaw-lod0-jg "align" 1) - (def-joint-node plat-eco-citb-lod0-jg "main" 3) (def-joint-node plat-eco-citb-lod0-jg "prejoint" 2) (def-joint-node plat-eco-citb-lod0-jg "align" 1) - (def-joint-node sculptor-lod0-jg "LringC" 65) (def-joint-node sculptor-lod0-jg "LmiddleC" 64) (def-joint-node sculptor-lod0-jg "LthumbC" 63) @@ -5011,7 +4716,6 @@ (def-joint-node sculptor-lod0-jg "scarf2" 57) (def-joint-node sculptor-lod0-jg "hammer" 58) (def-joint-node sculptor-lod0-jg "chisel" 59) - (def-joint-node teetertotter-lod0-jg "lside" 7) (def-joint-node teetertotter-lod0-jg "rside" 6) (def-joint-node teetertotter-lod0-jg "rock" 5) @@ -5019,7 +4723,6 @@ (def-joint-node teetertotter-lod0-jg "main" 3) (def-joint-node teetertotter-lod0-jg "prejoint" 2) (def-joint-node teetertotter-lod0-jg "align" 1) - (def-joint-node fuel-cell-lod0-jg "camera" 10) (def-joint-node fuel-cell-lod0-jg "orbitEND" 9) (def-joint-node fuel-cell-lod0-jg "orbit" 8) @@ -5030,7 +4733,6 @@ (def-joint-node fuel-cell-lod0-jg "main" 3) (def-joint-node fuel-cell-lod0-jg "prejoint" 2) (def-joint-node fuel-cell-lod0-jg "align" 1) - (def-joint-node double-lurker-top-lod0-jg "RthumbB" 30) (def-joint-node double-lurker-top-lod0-jg "hair" 13) (def-joint-node double-lurker-top-lod0-jg "LmiddleB" 12) @@ -5061,16 +4763,13 @@ (def-joint-node double-lurker-top-lod0-jg "Rankle" 27) (def-joint-node double-lurker-top-lod0-jg "Rball" 28) (def-joint-node double-lurker-top-lod0-jg "LthumbB" 29) - (def-joint-node water-anim-misty-dark-eco-pool-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-dark-eco-pool-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-dark-eco-pool-lod0-jg "align" 1) - (def-joint-node steam-cap-lod0-jg "cap" 4) (def-joint-node steam-cap-lod0-jg "steamcap" 3) (def-joint-node steam-cap-lod0-jg "prejoint" 2) (def-joint-node steam-cap-lod0-jg "align" 1) - (def-joint-node assistant-lavatube-end-lod0-jg "belt" 94) (def-joint-node assistant-lavatube-end-lod0-jg "RpantFlap" 93) (def-joint-node assistant-lavatube-end-lod0-jg "LpantFlap" 92) @@ -5165,20 +4864,16 @@ (def-joint-node assistant-lavatube-end-lod0-jg "lGlove" 57) (def-joint-node assistant-lavatube-end-lod0-jg "lTopStrap2" 58) (def-joint-node assistant-lavatube-end-lod0-jg "RthumbA" 59) - (def-joint-node citb-chain-plat-lod0-jg "boneless" 3) (def-joint-node citb-chain-plat-lod0-jg "prejoint" 2) (def-joint-node citb-chain-plat-lod0-jg "align" 1) - (def-joint-node orbit-plat-lod0-jg "button" 4) (def-joint-node orbit-plat-lod0-jg "main" 3) (def-joint-node orbit-plat-lod0-jg "prejoint" 2) (def-joint-node orbit-plat-lod0-jg "align" 1) - (def-joint-node shover-lod0-jg "boneless" 3) (def-joint-node shover-lod0-jg "prejoint" 2) (def-joint-node shover-lod0-jg "align" 1) - (def-joint-node bird-lady-beach-lod0-jg "rBoob" 68) (def-joint-node bird-lady-beach-lod0-jg "lBoob" 67) (def-joint-node bird-lady-beach-lod0-jg "LringC" 66) @@ -5247,7 +4942,6 @@ (def-joint-node bird-lady-beach-lod0-jg "RmiddleC" 57) (def-joint-node bird-lady-beach-lod0-jg "RringA" 58) (def-joint-node bird-lady-beach-lod0-jg "RringB" 59) - (def-joint-node evilbro-lod0-jg "rball3" 75) (def-joint-node evilbro-lod0-jg "rball2" 74) (def-joint-node evilbro-lod0-jg "fball3" 73) @@ -5323,24 +5017,19 @@ (def-joint-node evilbro-lod0-jg "RmiddleA" 57) (def-joint-node evilbro-lod0-jg "RmiddleB" 58) (def-joint-node evilbro-lod0-jg "RringA" 59) - (def-joint-node water-anim-sunken-big-room-lod0-jg "boneless" 3) (def-joint-node water-anim-sunken-big-room-lod0-jg "prejoint" 2) (def-joint-node water-anim-sunken-big-room-lod0-jg "align" 1) - (def-joint-node citb-arm-c-lod0-jg "center_" 4) (def-joint-node citb-arm-c-lod0-jg "boneless" 3) (def-joint-node citb-arm-c-lod0-jg "prejoint" 2) (def-joint-node citb-arm-c-lod0-jg "align" 1) - (def-joint-node snow-switch-lod0-jg "boneless" 3) (def-joint-node snow-switch-lod0-jg "prejoint" 2) (def-joint-node snow-switch-lod0-jg "align" 1) - (def-joint-node water-anim-misty-mud-lonely-island-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-lonely-island-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-lonely-island-lod0-jg "align" 1) - (def-joint-node power-left-lod0-jg "150" 53) (def-joint-node power-left-lod0-jg "149" 52) (def-joint-node power-left-lod0-jg "148" 51) @@ -5394,15 +5083,12 @@ (def-joint-node power-left-lod0-jg "124" 27) (def-joint-node power-left-lod0-jg "125" 28) (def-joint-node power-left-lod0-jg "126" 29) - (def-joint-node crate-iron-lod0-jg "crate" 3) (def-joint-node crate-iron-lod0-jg "prejoint" 2) (def-joint-node crate-iron-lod0-jg "align" 1) - (def-joint-node medres-firecanyon-lod0-jg "boneless" 3) (def-joint-node medres-firecanyon-lod0-jg "prejoint" 2) (def-joint-node medres-firecanyon-lod0-jg "align" 1) - (def-joint-node launcherdoor-geo-jg "slice12" 15) (def-joint-node launcherdoor-geo-jg "slice11" 14) (def-joint-node launcherdoor-geo-jg "align" 1) @@ -5418,13 +5104,11 @@ (def-joint-node launcherdoor-geo-jg "slice8" 11) (def-joint-node launcherdoor-geo-jg "slice9" 12) (def-joint-node launcherdoor-geo-jg "slice10" 13) - (def-joint-node caveelevator-lod0-jg "frontaxle" 5) (def-joint-node caveelevator-lod0-jg "backaxle" 4) (def-joint-node caveelevator-lod0-jg "main" 3) (def-joint-node caveelevator-lod0-jg "prejoint" 2) (def-joint-node caveelevator-lod0-jg "align" 1) - (def-joint-node racer-geo-jg "bootAnkleL" 16) (def-joint-node racer-geo-jg "left_shoe" 15) (def-joint-node racer-geo-jg "bootAnkleR" 14) @@ -5441,11 +5125,9 @@ (def-joint-node racer-geo-jg "leftStick" 11) (def-joint-node racer-geo-jg "rightStick" 12) (def-joint-node racer-geo-jg "right_shoe" 13) - (def-joint-node citb-button-lod0-jg "main_" 3) (def-joint-node citb-button-lod0-jg "prejoint" 2) (def-joint-node citb-button-lod0-jg "align" 1) - (def-joint-node citb-chains-lod0-jg "six_" 9) (def-joint-node citb-chains-lod0-jg "five_" 8) (def-joint-node citb-chains-lod0-jg "four_" 7) @@ -5455,25 +5137,20 @@ (def-joint-node citb-chains-lod0-jg "main_" 3) (def-joint-node citb-chains-lod0-jg "prejoint" 2) (def-joint-node citb-chains-lod0-jg "align" 1) - (def-joint-node water-anim-village1-rice-paddy-lod0-jg "boneless" 3) (def-joint-node water-anim-village1-rice-paddy-lod0-jg "prejoint" 2) (def-joint-node water-anim-village1-rice-paddy-lod0-jg "align" 1) - (def-joint-node barrel-lod0-jg "crate" 3) (def-joint-node barrel-lod0-jg "prejoint" 2) (def-joint-node barrel-lod0-jg "align" 1) - (def-joint-node windturbine-lod0-jg "main" 3) (def-joint-node windturbine-lod0-jg "prejoint" 2) (def-joint-node windturbine-lod0-jg "align" 1) - (def-joint-node citb-firehose-lod0-jg "hosehead" 5) (def-joint-node citb-firehose-lod0-jg "hose" 4) (def-joint-node citb-firehose-lod0-jg "main" 3) (def-joint-node citb-firehose-lod0-jg "prejoint" 2) (def-joint-node citb-firehose-lod0-jg "align" 1) - (def-joint-node aphid-lurker-lod0-jg "ring" 36) (def-joint-node aphid-lurker-lod0-jg "head_spike" 35) (def-joint-node aphid-lurker-lod0-jg "r_antenna2" 34) @@ -5510,7 +5187,6 @@ (def-joint-node aphid-lurker-lod0-jg "rleg_a2" 27) (def-joint-node aphid-lurker-lod0-jg "spike2" 28) (def-joint-node aphid-lurker-lod0-jg "spike8" 29) - (def-joint-node puffer-main-lod0-jg "spike9" 60) (def-joint-node puffer-main-lod0-jg "lwingC" 29) (def-joint-node puffer-main-lod0-jg "lwingB" 28) @@ -5571,12 +5247,10 @@ (def-joint-node puffer-main-lod0-jg "spike4" 57) (def-joint-node puffer-main-lod0-jg "spike13" 58) (def-joint-node puffer-main-lod0-jg "spike1" 59) - (def-joint-node citb-arm-a-lod0-jg "center_" 4) (def-joint-node citb-arm-a-lod0-jg "boneless" 3) (def-joint-node citb-arm-a-lod0-jg "prejoint" 2) (def-joint-node citb-arm-a-lod0-jg "align" 1) - (def-joint-node darkvine-lod0-jg "plantE" 8) (def-joint-node darkvine-lod0-jg "plantD" 7) (def-joint-node darkvine-lod0-jg "plantC" 6) @@ -5585,12 +5259,10 @@ (def-joint-node darkvine-lod0-jg "BASE" 3) (def-joint-node darkvine-lod0-jg "prejoint" 2) (def-joint-node darkvine-lod0-jg "align" 1) - (def-joint-node deathcam-lod0-jg "camera" 4) (def-joint-node deathcam-lod0-jg "deathcam" 3) (def-joint-node deathcam-lod0-jg "prejoint" 2) (def-joint-node deathcam-lod0-jg "align" 1) - (def-joint-node lavabase-lod0-jg "six" 9) (def-joint-node lavabase-lod0-jg "four" 8) (def-joint-node lavabase-lod0-jg "two" 7) @@ -5600,7 +5272,6 @@ (def-joint-node lavabase-lod0-jg "main" 3) (def-joint-node lavabase-lod0-jg "prejoint" 2) (def-joint-node lavabase-lod0-jg "align" 1) - (def-joint-node flutflut-lod0-jg "tailFR" 41) (def-joint-node flutflut-lod0-jg "tailFL" 40) (def-joint-node flutflut-lod0-jg "rWingF2" 39) @@ -5642,11 +5313,9 @@ (def-joint-node flutflut-lod0-jg "ploom1" 27) (def-joint-node flutflut-lod0-jg "ploom2" 28) (def-joint-node flutflut-lod0-jg "ploom3" 29) - (def-joint-node water-anim-misty-mud-under-spine-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-under-spine-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-under-spine-lod0-jg "align" 1) - (def-joint-node jng-iris-door-lod0-jg "rote8" 11) (def-joint-node jng-iris-door-lod0-jg "rote1" 10) (def-joint-node jng-iris-door-lod0-jg "rote7" 9) @@ -5658,7 +5327,6 @@ (def-joint-node jng-iris-door-lod0-jg "base" 3) (def-joint-node jng-iris-door-lod0-jg "prejoint" 2) (def-joint-node jng-iris-door-lod0-jg "align" 1) - (def-joint-node evilplant-lod0-jg "bottomleafrear" 15) (def-joint-node evilplant-lod0-jg "bottomleaffront" 14) (def-joint-node evilplant-lod0-jg "align" 1) @@ -5674,13 +5342,11 @@ (def-joint-node evilplant-lod0-jg "jaw" 11) (def-joint-node evilplant-lod0-jg "bottomleafl" 12) (def-joint-node evilplant-lod0-jg "bottomleafr" 13) - (def-joint-node harvester-lod0-jg "balloon" 5) (def-joint-node harvester-lod0-jg "top" 4) (def-joint-node harvester-lod0-jg "main" 3) (def-joint-node harvester-lod0-jg "prejoint" 2) (def-joint-node harvester-lod0-jg "align" 1) - (def-joint-node plant-boss-arms-lod0-jg "armEND" 10) (def-joint-node plant-boss-arms-lod0-jg "armE" 9) (def-joint-node plant-boss-arms-lod0-jg "armD" 8) @@ -5691,11 +5357,9 @@ (def-joint-node plant-boss-arms-lod0-jg "armNEW" 3) (def-joint-node plant-boss-arms-lod0-jg "prejoint" 2) (def-joint-node plant-boss-arms-lod0-jg "align" 1) - (def-joint-node water-anim-maincave-mid-right-pool-lod0-jg "boneless" 3) (def-joint-node water-anim-maincave-mid-right-pool-lod0-jg "prejoint" 2) (def-joint-node water-anim-maincave-mid-right-pool-lod0-jg "align" 1) - (def-joint-node assistant-village3-lod0-jg "belt" 96) (def-joint-node assistant-village3-lod0-jg "RpantFlap" 95) (def-joint-node assistant-village3-lod0-jg "LpantFlap" 94) @@ -5792,11 +5456,9 @@ (def-joint-node assistant-village3-lod0-jg "LpinkyB" 57) (def-joint-node assistant-village3-lod0-jg "LpinkyC" 58) (def-joint-node assistant-village3-lod0-jg "lGlove" 59) - (def-joint-node mis-bone-platform-lod0-jg "main" 3) (def-joint-node mis-bone-platform-lod0-jg "prejoint" 2) (def-joint-node mis-bone-platform-lod0-jg "align" 1) - (def-joint-node plant-boss-back-arms-lod0-jg "plugE" 9) (def-joint-node plant-boss-back-arms-lod0-jg "plugD" 8) (def-joint-node plant-boss-back-arms-lod0-jg "plugC" 7) @@ -5806,15 +5468,12 @@ (def-joint-node plant-boss-back-arms-lod0-jg "BASE" 3) (def-joint-node plant-boss-back-arms-lod0-jg "prejoint" 2) (def-joint-node plant-boss-back-arms-lod0-jg "align" 1) - (def-joint-node orbit-plat-bottom-lod0-jg "boneless" 3) (def-joint-node orbit-plat-bottom-lod0-jg "prejoint" 2) (def-joint-node orbit-plat-bottom-lod0-jg "align" 1) - (def-joint-node lurkerm-piston-geo-jg "main" 3) (def-joint-node lurkerm-piston-geo-jg "prejoint" 2) (def-joint-node lurkerm-piston-geo-jg "align" 1) - (def-joint-node bird-lady-lod0-jg "rBoob" 68) (def-joint-node bird-lady-lod0-jg "lBoob" 67) (def-joint-node bird-lady-lod0-jg "LringC" 66) @@ -5883,7 +5542,6 @@ (def-joint-node bird-lady-lod0-jg "RmiddleC" 57) (def-joint-node bird-lady-lod0-jg "RringA" 58) (def-joint-node bird-lady-lod0-jg "RringB" 59) - (def-joint-node plant-boss-leaf-lod0-jg "RleafPlat" 10) (def-joint-node plant-boss-leaf-lod0-jg "LleafPlat" 9) (def-joint-node plant-boss-leaf-lod0-jg "leafPlat" 8) @@ -5894,15 +5552,12 @@ (def-joint-node plant-boss-leaf-lod0-jg "leafArmBASE" 3) (def-joint-node plant-boss-leaf-lod0-jg "prejoint" 2) (def-joint-node plant-boss-leaf-lod0-jg "align" 1) - (def-joint-node medres-rolling1-lod0-jg "boneless" 3) (def-joint-node medres-rolling1-lod0-jg "prejoint" 2) (def-joint-node medres-rolling1-lod0-jg "align" 1) - (def-joint-node kickrock-lod0-jg "boneless" 3) (def-joint-node kickrock-lod0-jg "prejoint" 2) (def-joint-node kickrock-lod0-jg "align" 1) - (def-joint-node energydoor-lod0-jg "Door" 8) (def-joint-node energydoor-lod0-jg "dustB" 7) (def-joint-node energydoor-lod0-jg "dustA" 6) @@ -5911,15 +5566,12 @@ (def-joint-node energydoor-lod0-jg "main" 3) (def-joint-node energydoor-lod0-jg "prejoint" 2) (def-joint-node energydoor-lod0-jg "align" 1) - (def-joint-node ogre-isle-d-lod0-jg "isle4" 3) (def-joint-node ogre-isle-d-lod0-jg "prejoint" 2) (def-joint-node ogre-isle-d-lod0-jg "align" 1) - (def-joint-node exit-chamber-dummy-lod0-jg "main" 3) (def-joint-node exit-chamber-dummy-lod0-jg "prejoint" 2) (def-joint-node exit-chamber-dummy-lod0-jg "align" 1) - (def-joint-node plant-boss-vine-lod0-jg "topvineD" 12) (def-joint-node plant-boss-vine-lod0-jg "topvineC" 11) (def-joint-node plant-boss-vine-lod0-jg "topvineB" 10) @@ -5932,7 +5584,6 @@ (def-joint-node plant-boss-vine-lod0-jg "vineBASE" 3) (def-joint-node plant-boss-vine-lod0-jg "prejoint" 2) (def-joint-node plant-boss-vine-lod0-jg "align" 1) - (def-joint-node accordian-lod0-jg "three" 22) (def-joint-node accordian-lod0-jg "two" 21) (def-joint-node accordian-lod0-jg "one" 20) @@ -5955,7 +5606,6 @@ (def-joint-node accordian-lod0-jg "threetwo" 11) (def-joint-node accordian-lod0-jg "twistytop" 12) (def-joint-node accordian-lod0-jg "twistyone" 13) - (def-joint-node allpontoons-lod0-jg "6" 9) (def-joint-node allpontoons-lod0-jg "camera" 8) (def-joint-node allpontoons-lod0-jg "5" 7) @@ -5965,12 +5615,10 @@ (def-joint-node allpontoons-lod0-jg "1" 3) (def-joint-node allpontoons-lod0-jg "prejoint" 2) (def-joint-node allpontoons-lod0-jg "align" 1) - (def-joint-node bounceytarp-lod0-jg "tarp" 4) (def-joint-node bounceytarp-lod0-jg "base" 3) (def-joint-node bounceytarp-lod0-jg "prejoint" 2) (def-joint-node bounceytarp-lod0-jg "align" 1) - (def-joint-node catch-fishc-lod0-jg "Rfintip" 15) (def-joint-node catch-fishc-lod0-jg "Rfin" 14) (def-joint-node catch-fishc-lod0-jg "align" 1) @@ -5986,27 +5634,22 @@ (def-joint-node catch-fishc-lod0-jg "head" 11) (def-joint-node catch-fishc-lod0-jg "jaw" 12) (def-joint-node catch-fishc-lod0-jg "jawbot" 13) - (def-joint-node hutlamp-lod0-jg "hutlamp" 3) (def-joint-node hutlamp-lod0-jg "prejoint" 2) (def-joint-node hutlamp-lod0-jg "align" 1) - (def-joint-node plat-flip-geo-jg "main" 3) (def-joint-node plat-flip-geo-jg "prejoint" 2) (def-joint-node plat-flip-geo-jg "align" 1) - (def-joint-node junglecam-lod0-jg "camera" 4) (def-joint-node junglecam-lod0-jg "junglecam" 3) (def-joint-node junglecam-lod0-jg "prejoint" 2) (def-joint-node junglecam-lod0-jg "align" 1) - (def-joint-node fish-net-lod0-jg "basket" 6) (def-joint-node fish-net-lod0-jg "hinge" 5) (def-joint-node fish-net-lod0-jg "mid" 4) (def-joint-node fish-net-lod0-jg "hold" 3) (def-joint-node fish-net-lod0-jg "prejoint" 2) (def-joint-node fish-net-lod0-jg "align" 1) - (def-joint-node fisher-lod0-jg "basket" 88) (def-joint-node fisher-lod0-jg "hinge" 87) (def-joint-node fisher-lod0-jg "mid" 86) @@ -6095,7 +5738,6 @@ (def-joint-node fisher-lod0-jg "fishbasket" 57) (def-joint-node fisher-lod0-jg "fishtop" 58) (def-joint-node fisher-lod0-jg "scaleFISH" 59) - (def-joint-node hopper-lod0-jg "RthumbC" 39) (def-joint-node hopper-lod0-jg "LthumbC" 38) (def-joint-node hopper-lod0-jg "RlegFur" 37) @@ -6135,11 +5777,9 @@ (def-joint-node hopper-lod0-jg "Lankle" 27) (def-joint-node hopper-lod0-jg "Lball" 28) (def-joint-node hopper-lod0-jg "Rthigh" 29) - (def-joint-node ogre-isle-a-lod0-jg "isle3" 3) (def-joint-node ogre-isle-a-lod0-jg "prejoint" 2) (def-joint-node ogre-isle-a-lod0-jg "align" 1) - (def-joint-node junglefish-lod0-jg "Lfin2" 14) (def-joint-node junglefish-lod0-jg "align" 1) (def-joint-node junglefish-lod0-jg "prejoint" 2) @@ -6154,7 +5794,6 @@ (def-joint-node junglefish-lod0-jg "jaw" 11) (def-joint-node junglefish-lod0-jg "Rfin1" 12) (def-joint-node junglefish-lod0-jg "Rfin2" 13) - (def-joint-node junglesnake-lod0-jg "Aring" 26) (def-joint-node junglesnake-lod0-jg "Ajaw" 25) (def-joint-node junglesnake-lod0-jg "Ahead" 24) @@ -6181,19 +5820,15 @@ (def-joint-node junglesnake-lod0-jg "main" 11) (def-joint-node junglesnake-lod0-jg "Pbod1" 12) (def-joint-node junglesnake-lod0-jg "Pbod2" 13) - (def-joint-node medres-beach-lod0-jg "boneless" 3) (def-joint-node medres-beach-lod0-jg "prejoint" 2) (def-joint-node medres-beach-lod0-jg "align" 1) - (def-joint-node lurkerm-tall-sail-lod0-jg "center" 3) (def-joint-node lurkerm-tall-sail-lod0-jg "prejoint" 2) (def-joint-node lurkerm-tall-sail-lod0-jg "align" 1) - (def-joint-node medres-rolling-lod0-jg "boneless" 3) (def-joint-node medres-rolling-lod0-jg "prejoint" 2) (def-joint-node medres-rolling-lod0-jg "align" 1) - (def-joint-node periscope-base-lod0-jg "plug" 7) (def-joint-node periscope-base-lod0-jg "mirror" 6) (def-joint-node periscope-base-lod0-jg "mirrorbase" 5) @@ -6201,11 +5836,9 @@ (def-joint-node periscope-base-lod0-jg "pole" 3) (def-joint-node periscope-base-lod0-jg "prejoint" 2) (def-joint-node periscope-base-lod0-jg "align" 1) - (def-joint-node periscope-mirror-lod0-jg "mirror" 3) (def-joint-node periscope-mirror-lod0-jg "prejoint" 2) (def-joint-node periscope-mirror-lod0-jg "align" 1) - (def-joint-node flutflutegg-lod0-jg "blackpoly" 18) (def-joint-node flutflutegg-lod0-jg "p6B" 17) (def-joint-node flutflutegg-lod0-jg "p6" 16) @@ -6224,33 +5857,26 @@ (def-joint-node flutflutegg-lod0-jg "p9" 11) (def-joint-node flutflutegg-lod0-jg "p10" 12) (def-joint-node flutflutegg-lod0-jg "p11" 13) - (def-joint-node water-anim-misty-mud-by-dock-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-by-dock-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-by-dock-lod0-jg "align" 1) - (def-joint-node citb-robotboss-rightarm-lod0-jg "main" 3) (def-joint-node citb-robotboss-rightarm-lod0-jg "prejoint" 2) (def-joint-node citb-robotboss-rightarm-lod0-jg "align" 1) - (def-joint-node water-anim-misty-mud-by-arena-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-by-arena-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-by-arena-lod0-jg "align" 1) - (def-joint-node citb-arm-d-lod0-jg "center_" 4) (def-joint-node citb-arm-d-lod0-jg "boneless" 3) (def-joint-node citb-arm-d-lod0-jg "prejoint" 2) (def-joint-node citb-arm-d-lod0-jg "align" 1) - (def-joint-node plat-button-geo-jg "button" 4) (def-joint-node plat-button-geo-jg "main" 3) (def-joint-node plat-button-geo-jg "prejoint" 2) (def-joint-node plat-button-geo-jg "align" 1) - (def-joint-node plat-eco-lod0-jg "main" 3) (def-joint-node plat-eco-lod0-jg "prejoint" 2) (def-joint-node plat-eco-lod0-jg "align" 1) - (def-joint-node driller-lurker-lod0-jg "lHandle" 67) (def-joint-node driller-lurker-lod0-jg "drillHoseC" 66) (def-joint-node driller-lurker-lod0-jg "drillHoseB" 65) @@ -6318,11 +5944,9 @@ (def-joint-node driller-lurker-lod0-jg "tankHoseC" 57) (def-joint-node driller-lurker-lod0-jg "l_shoulderGuard" 58) (def-joint-node driller-lurker-lod0-jg "r_shoulderGuard" 59) - (def-joint-node citb-disc-d-lod0-jg "boneless" 3) (def-joint-node citb-disc-d-lod0-jg "prejoint" 2) (def-joint-node citb-disc-d-lod0-jg "align" 1) - (def-joint-node reflector-mirror-break-lod0-jg "wishbone" 10) (def-joint-node reflector-mirror-break-lod0-jg "bottomlegright" 9) (def-joint-node reflector-mirror-break-lod0-jg "bottomlegmiddle" 8) @@ -6333,17 +5957,14 @@ (def-joint-node reflector-mirror-break-lod0-jg "toplegleft" 3) (def-joint-node reflector-mirror-break-lod0-jg "prejoint" 2) (def-joint-node reflector-mirror-break-lod0-jg "align" 1) - (def-joint-node breakaway-mid-lod0-jg "breakaway_" 3) (def-joint-node breakaway-mid-lod0-jg "prejoint" 2) (def-joint-node breakaway-mid-lod0-jg "align" 1) - (def-joint-node fishermans-boat-lod0-jg "camera" 5) (def-joint-node fishermans-boat-lod0-jg "prop" 4) (def-joint-node fishermans-boat-lod0-jg "main" 3) (def-joint-node fishermans-boat-lod0-jg "prejoint" 2) (def-joint-node fishermans-boat-lod0-jg "align" 1) - (def-joint-node ropebridge-52-lod0-jg "tail" 30) (def-joint-node ropebridge-52-lod0-jg "board10" 13) (def-joint-node ropebridge-52-lod0-jg "board9" 12) @@ -6374,7 +5995,6 @@ (def-joint-node ropebridge-52-lod0-jg "board24" 27) (def-joint-node ropebridge-52-lod0-jg "board25" 28) (def-joint-node ropebridge-52-lod0-jg "board26" 29) - (def-joint-node towertop-lod0-jg "planetR" 8) (def-joint-node towertop-lod0-jg "planet" 7) (def-joint-node towertop-lod0-jg "outerR" 6) @@ -6383,7 +6003,6 @@ (def-joint-node towertop-lod0-jg "master" 3) (def-joint-node towertop-lod0-jg "prejoint" 2) (def-joint-node towertop-lod0-jg "align" 1) - (def-joint-node robotboss-yelloweco-lod0-jg "Lyellow_ecoGlobeA1" 19) (def-joint-node robotboss-yelloweco-lod0-jg "Lyellow_FrontRing" 18) (def-joint-node robotboss-yelloweco-lod0-jg "Lyellow_ecoTopRing" 17) @@ -6403,11 +6022,9 @@ (def-joint-node robotboss-yelloweco-lod0-jg "Lyellow_ropeBracketA" 11) (def-joint-node robotboss-yelloweco-lod0-jg "Lyellow_pole" 12) (def-joint-node robotboss-yelloweco-lod0-jg "Lyellow_ropeBracketB" 13) - (def-joint-node water-anim-jungle-river-lod0-jg "boneless" 3) (def-joint-node water-anim-jungle-river-lod0-jg "prejoint" 2) (def-joint-node water-anim-jungle-river-lod0-jg "align" 1) - (def-joint-node medres-jungle1-lod0-jg "planet" 8) (def-joint-node medres-jungle1-lod0-jg "planetR" 7) (def-joint-node medres-jungle1-lod0-jg "outerR" 6) @@ -6416,11 +6033,9 @@ (def-joint-node medres-jungle1-lod0-jg "master" 3) (def-joint-node medres-jungle1-lod0-jg "prejoint" 2) (def-joint-node medres-jungle1-lod0-jg "align" 1) - (def-joint-node energyball-lod0-jg "boneless" 3) (def-joint-node energyball-lod0-jg "prejoint" 2) (def-joint-node energyball-lod0-jg "align" 1) - (def-joint-node assistant-firecanyon-lod0-jg "belt" 94) (def-joint-node assistant-firecanyon-lod0-jg "RpantFlap" 93) (def-joint-node assistant-firecanyon-lod0-jg "LpantFlap" 92) @@ -6515,7 +6130,6 @@ (def-joint-node assistant-firecanyon-lod0-jg "lGlove" 57) (def-joint-node assistant-firecanyon-lod0-jg "lTopStrap2" 58) (def-joint-node assistant-firecanyon-lod0-jg "RthumbA" 59) - (def-joint-node sidekick-lod0-jg "Reye" 49) (def-joint-node sidekick-lod0-jg "Leye" 48) (def-joint-node sidekick-lod0-jg "RthumbB" 47) @@ -6565,12 +6179,10 @@ (def-joint-node sidekick-lod0-jg "Rhand" 27) (def-joint-node sidekick-lod0-jg "RmiddleA" 28) (def-joint-node sidekick-lod0-jg "RmiddleB" 29) - (def-joint-node speaker-lod0-jg "speaker" 4) (def-joint-node speaker-lod0-jg "main" 3) (def-joint-node speaker-lod0-jg "prejoint" 2) (def-joint-node speaker-lod0-jg "align" 1) - (def-joint-node balloon-lod0-jg "rightbot" 12) (def-joint-node balloon-lod0-jg "rightmid" 11) (def-joint-node balloon-lod0-jg "leftbot" 10) @@ -6583,26 +6195,21 @@ (def-joint-node balloon-lod0-jg "main" 3) (def-joint-node balloon-lod0-jg "prejoint" 2) (def-joint-node balloon-lod0-jg "align" 1) - (def-joint-node crate-darkeco-cluster-lod0-jg "crate" 3) (def-joint-node crate-darkeco-cluster-lod0-jg "prejoint" 2) (def-joint-node crate-darkeco-cluster-lod0-jg "align" 1) - (def-joint-node logo-cam-lod0-jg "camera" 4) (def-joint-node logo-cam-lod0-jg "titlecam" 3) (def-joint-node logo-cam-lod0-jg "prejoint" 2) (def-joint-node logo-cam-lod0-jg "align" 1) - (def-joint-node darkecobarrel-lod0-jg "swinger" 4) (def-joint-node darkecobarrel-lod0-jg "main" 3) (def-joint-node darkecobarrel-lod0-jg "prejoint" 2) (def-joint-node darkecobarrel-lod0-jg "align" 1) - (def-joint-node keg-conveyor-paddle-lod0-jg "barrell" 4) (def-joint-node keg-conveyor-paddle-lod0-jg "paddle1" 3) (def-joint-node keg-conveyor-paddle-lod0-jg "prejoint" 2) (def-joint-node keg-conveyor-paddle-lod0-jg "align" 1) - (def-joint-node assistant-village2-lod0-jg "belt" 96) (def-joint-node assistant-village2-lod0-jg "RpantFlap" 95) (def-joint-node assistant-village2-lod0-jg "LpantFlap" 94) @@ -6699,18 +6306,15 @@ (def-joint-node assistant-village2-lod0-jg "Rhair1" 57) (def-joint-node assistant-village2-lod0-jg "Rhair2" 58) (def-joint-node assistant-village2-lod0-jg "LthumbC" 59) - (def-joint-node windmill-sail-lod0-jg "boneless" 3) (def-joint-node windmill-sail-lod0-jg "prejoint" 2) (def-joint-node windmill-sail-lod0-jg "align" 1) - (def-joint-node energyarm-lod0-jg "zapa" 6) (def-joint-node energyarm-lod0-jg "zapb" 5) (def-joint-node energyarm-lod0-jg "zapc" 4) (def-joint-node energyarm-lod0-jg "main" 3) (def-joint-node energyarm-lod0-jg "prejoint" 2) (def-joint-node energyarm-lod0-jg "align" 1) - (def-joint-node snow-bridge-36-lod0-jg "end" 22) (def-joint-node snow-bridge-36-lod0-jg "board18" 21) (def-joint-node snow-bridge-36-lod0-jg "board17" 20) @@ -6733,11 +6337,9 @@ (def-joint-node snow-bridge-36-lod0-jg "board08" 11) (def-joint-node snow-bridge-36-lod0-jg "board09" 12) (def-joint-node snow-bridge-36-lod0-jg "board10" 13) - (def-joint-node energyhub-lod0-jg "boneless" 3) (def-joint-node energyhub-lod0-jg "prejoint" 2) (def-joint-node energyhub-lod0-jg "align" 1) - (def-joint-node lavafall-lod0-jg "five" 8) (def-joint-node lavafall-lod0-jg "four" 7) (def-joint-node lavafall-lod0-jg "three" 6) @@ -6746,15 +6348,12 @@ (def-joint-node lavafall-lod0-jg "main" 3) (def-joint-node lavafall-lod0-jg "prejoint" 2) (def-joint-node lavafall-lod0-jg "align" 1) - (def-joint-node lavafallsewera-lod0-jg "boneless" 3) (def-joint-node lavafallsewera-lod0-jg "prejoint" 2) (def-joint-node lavafallsewera-lod0-jg "align" 1) - (def-joint-node lavafallsewerb-lod0-jg "boneless" 3) (def-joint-node lavafallsewerb-lod0-jg "prejoint" 2) (def-joint-node lavafallsewerb-lod0-jg "align" 1) - (def-joint-node swamp-bat-lod0-jg "tailEND" 16) (def-joint-node swamp-bat-lod0-jg "Rhand" 15) (def-joint-node swamp-bat-lod0-jg "Lhand" 14) @@ -6771,7 +6370,6 @@ (def-joint-node swamp-bat-lod0-jg "thigh" 11) (def-joint-node swamp-bat-lod0-jg "ankle" 12) (def-joint-node swamp-bat-lod0-jg "tailMid" 13) - (def-joint-node bluesage-lod0-jg "staff3" 92) (def-joint-node bluesage-lod0-jg "staff2" 91) (def-joint-node bluesage-lod0-jg "brleg_strap2" 90) @@ -6864,14 +6462,12 @@ (def-joint-node bluesage-lod0-jg "head_tubej2" 57) (def-joint-node bluesage-lod0-jg "head_tube3" 58) (def-joint-node bluesage-lod0-jg "arm_tube2" 59) - (def-joint-node lavayellowtarp-lod0-jg "tarpD" 6) (def-joint-node lavayellowtarp-lod0-jg "tarpC" 5) (def-joint-node lavayellowtarp-lod0-jg "tarpB" 4) (def-joint-node lavayellowtarp-lod0-jg "main" 3) (def-joint-node lavayellowtarp-lod0-jg "prejoint" 2) (def-joint-node lavayellowtarp-lod0-jg "align" 1) - (def-joint-node gnawer-lod0-jg "antennaeR" 36) (def-joint-node gnawer-lod0-jg "antennaeL" 35) (def-joint-node gnawer-lod0-jg "nandibleR" 34) @@ -6908,22 +6504,18 @@ (def-joint-node gnawer-lod0-jg "segFleg_r" 27) (def-joint-node gnawer-lod0-jg "tailleg_l" 28) (def-joint-node gnawer-lod0-jg "tailleg_r" 29) - (def-joint-node gnawer-segment-lod0-jg "segAleg_r" 6) (def-joint-node gnawer-segment-lod0-jg "segAleg_l" 5) (def-joint-node gnawer-segment-lod0-jg "segA" 4) (def-joint-node gnawer-segment-lod0-jg "main" 3) (def-joint-node gnawer-segment-lod0-jg "prejoint" 2) (def-joint-node gnawer-segment-lod0-jg "align" 1) - (def-joint-node cavespatulatwo-lod0-jg "boneless" 3) (def-joint-node cavespatulatwo-lod0-jg "prejoint" 2) (def-joint-node cavespatulatwo-lod0-jg "align" 1) - (def-joint-node citb-stopbox-lod0-jg "boneless" 3) (def-joint-node citb-stopbox-lod0-jg "prejoint" 2) (def-joint-node citb-stopbox-lod0-jg "align" 1) - (def-joint-node launcherdoor-maincave-geo-jg "slice12" 15) (def-joint-node launcherdoor-maincave-geo-jg "slice11" 14) (def-joint-node launcherdoor-maincave-geo-jg "align" 1) @@ -6939,19 +6531,15 @@ (def-joint-node launcherdoor-maincave-geo-jg "slice8" 11) (def-joint-node launcherdoor-maincave-geo-jg "slice9" 12) (def-joint-node launcherdoor-maincave-geo-jg "slice10" 13) - (def-joint-node plat-lod0-jg "boneless" 3) (def-joint-node plat-lod0-jg "prejoint" 2) (def-joint-node plat-lod0-jg "align" 1) - (def-joint-node plat-citb-lod0-jg "boneless" 3) (def-joint-node plat-citb-lod0-jg "prejoint" 2) (def-joint-node plat-citb-lod0-jg "align" 1) - (def-joint-node water-anim-maincave-mid-left-pool-lod0-jg "boneless" 3) (def-joint-node water-anim-maincave-mid-left-pool-lod0-jg "prejoint" 2) (def-joint-node water-anim-maincave-mid-left-pool-lod0-jg "align" 1) - (def-joint-node balloonlurker-lod0-jg "pedLEFT" 20) (def-joint-node balloonlurker-lod0-jg "pedRIGHT" 19) (def-joint-node balloonlurker-lod0-jg "Lpulley1" 18) @@ -6972,27 +6560,21 @@ (def-joint-node balloonlurker-lod0-jg "poleTop" 11) (def-joint-node balloonlurker-lod0-jg "Rudder" 12) (def-joint-node balloonlurker-lod0-jg "poleBot" 13) - (def-joint-node exit-chamber-lod0-jg "main" 3) (def-joint-node exit-chamber-lod0-jg "prejoint" 2) (def-joint-node exit-chamber-lod0-jg "align" 1) - (def-joint-node cavecrusher-lod0-jg "roller_" 3) (def-joint-node cavecrusher-lod0-jg "prejoint" 2) (def-joint-node cavecrusher-lod0-jg "align" 1) - (def-joint-node boatpaddle-lod0-jg "wheel" 3) (def-joint-node boatpaddle-lod0-jg "prejoint" 2) (def-joint-node boatpaddle-lod0-jg "align" 1) - (def-joint-node helix-button-lod0-jg "boneless" 3) (def-joint-node helix-button-lod0-jg "prejoint" 2) (def-joint-node helix-button-lod0-jg "align" 1) - (def-joint-node wheel-geo-jg "main" 3) (def-joint-node wheel-geo-jg "prejoint" 2) (def-joint-node wheel-geo-jg "align" 1) - (def-joint-node windmill-one-lod0-jg "belttwo" 11) (def-joint-node windmill-one-lod0-jg "beltone" 10) (def-joint-node windmill-one-lod0-jg "plat1" 9) @@ -7004,12 +6586,10 @@ (def-joint-node windmill-one-lod0-jg "main" 3) (def-joint-node windmill-one-lod0-jg "prejoint" 2) (def-joint-node windmill-one-lod0-jg "align" 1) - (def-joint-node citadelcam-lod0-jg "camera" 4) (def-joint-node citadelcam-lod0-jg "beachcam" 3) (def-joint-node citadelcam-lod0-jg "prejoint" 2) (def-joint-node citadelcam-lod0-jg "align" 1) - (def-joint-node bonelurker-lod0-jg "RringC" 58) (def-joint-node bonelurker-lod0-jg "RringB" 57) (def-joint-node bonelurker-lod0-jg "RringA" 56) @@ -7068,35 +6648,27 @@ (def-joint-node bonelurker-lod0-jg "RpinkyB" 27) (def-joint-node bonelurker-lod0-jg "RpinkyC" 28) (def-joint-node bonelurker-lod0-jg "club" 29) - (def-joint-node ogre-bridgeend-lod0-jg "boneless" 3) (def-joint-node ogre-bridgeend-lod0-jg "prejoint" 2) (def-joint-node ogre-bridgeend-lod0-jg "align" 1) - (def-joint-node water-anim-robocave-main-pool-lod0-jg "boneless" 3) (def-joint-node water-anim-robocave-main-pool-lod0-jg "prejoint" 2) (def-joint-node water-anim-robocave-main-pool-lod0-jg "align" 1) - (def-joint-node spike-lod0-jg "big" 3) (def-joint-node spike-lod0-jg "prejoint" 2) (def-joint-node spike-lod0-jg "align" 1) - (def-joint-node ef-plane-lod0-jg "plane" 3) (def-joint-node ef-plane-lod0-jg "prejoint" 2) (def-joint-node ef-plane-lod0-jg "align" 1) - (def-joint-node breakaway-left-lod0-jg "breakleft" 3) (def-joint-node breakaway-left-lod0-jg "prejoint" 2) (def-joint-node breakaway-left-lod0-jg "align" 1) - (def-joint-node water-anim-misty-mud-island-near-dock-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-island-near-dock-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-island-near-dock-lod0-jg "align" 1) - (def-joint-node breakaway-right-lod0-jg "breakaway_" 3) (def-joint-node breakaway-right-lod0-jg "prejoint" 2) (def-joint-node breakaway-right-lod0-jg "align" 1) - (def-joint-node puffer-mean-lod0-jg "spike9" 60) (def-joint-node puffer-mean-lod0-jg "lwingC" 29) (def-joint-node puffer-mean-lod0-jg "lwingB" 28) @@ -7157,16 +6729,13 @@ (def-joint-node puffer-mean-lod0-jg "spike4" 57) (def-joint-node puffer-mean-lod0-jg "spike13" 58) (def-joint-node puffer-mean-lod0-jg "spike1" 59) - (def-joint-node keg-lod0-jg "main" 3) (def-joint-node keg-lod0-jg "prejoint" 2) (def-joint-node keg-lod0-jg "align" 1) - (def-joint-node mis-bone-bridge-lod0-jg "log" 4) (def-joint-node mis-bone-bridge-lod0-jg "main" 3) (def-joint-node mis-bone-bridge-lod0-jg "prejoint" 2) (def-joint-node mis-bone-bridge-lod0-jg "align" 1) - (def-joint-node ogre-bridge-lod0-jg "bridgestart" 20) (def-joint-node ogre-bridge-lod0-jg "walk_16" 19) (def-joint-node ogre-bridge-lod0-jg "walk_15" 18) @@ -7187,12 +6756,10 @@ (def-joint-node ogre-bridge-lod0-jg "walk_8" 11) (def-joint-node ogre-bridge-lod0-jg "walk_9" 12) (def-joint-node ogre-bridge-lod0-jg "walk_10" 13) - (def-joint-node mistycam-lod0-jg "camera" 4) (def-joint-node mistycam-lod0-jg "beachcam" 3) (def-joint-node mistycam-lod0-jg "prejoint" 2) (def-joint-node mistycam-lod0-jg "align" 1) - (def-joint-node dark-plant-lod0-jg "leaf_a3" 15) (def-joint-node dark-plant-lod0-jg "leaf_a2" 14) (def-joint-node dark-plant-lod0-jg "align" 1) @@ -7208,7 +6775,6 @@ (def-joint-node dark-plant-lod0-jg "leaf_c2" 11) (def-joint-node dark-plant-lod0-jg "leaf_c3" 12) (def-joint-node dark-plant-lod0-jg "leaf_a1" 13) - (def-joint-node green-sagecage-lod0-jg "belly" 74) (def-joint-node green-sagecage-lod0-jg "Rbigtoe" 73) (def-joint-node green-sagecage-lod0-jg "Rtoes" 72) @@ -7283,7 +6849,6 @@ (def-joint-node green-sagecage-lod0-jg "BIRDhead1" 57) (def-joint-node green-sagecage-lod0-jg "BIRDR1" 58) (def-joint-node green-sagecage-lod0-jg "BIRDL1" 59) - (def-joint-node muse-lod0-jg "jawEND" 45) (def-joint-node muse-lod0-jg "tail_END" 44) (def-joint-node muse-lod0-jg "tail8" 43) @@ -7329,7 +6894,6 @@ (def-joint-node muse-lod0-jg "tail2" 27) (def-joint-node muse-lod0-jg "tail3" 28) (def-joint-node muse-lod0-jg "tail4" 29) - (def-joint-node quicksandlurker-lod0-jg "Rball" 49) (def-joint-node quicksandlurker-lod0-jg "Rankle" 48) (def-joint-node quicksandlurker-lod0-jg "Rknee" 47) @@ -7379,11 +6943,9 @@ (def-joint-node quicksandlurker-lod0-jg "Relbow" 27) (def-joint-node quicksandlurker-lod0-jg "Rhand" 28) (def-joint-node quicksandlurker-lod0-jg "RthumbA" 29) - (def-joint-node snow-fort-gate-lod0-jg "boneless" 3) (def-joint-node snow-fort-gate-lod0-jg "prejoint" 2) (def-joint-node snow-fort-gate-lod0-jg "align" 1) - (def-joint-node sharkey-lod0-jg "RmidFin" 13) (def-joint-node sharkey-lod0-jg "Rshoulder" 12) (def-joint-node sharkey-lod0-jg "LmidFin" 11) @@ -7397,7 +6959,6 @@ (def-joint-node sharkey-lod0-jg "main" 3) (def-joint-node sharkey-lod0-jg "prejoint" 2) (def-joint-node sharkey-lod0-jg "align" 1) - (def-joint-node ropebridge-36-lod0-jg "end" 22) (def-joint-node ropebridge-36-lod0-jg "board18" 21) (def-joint-node ropebridge-36-lod0-jg "board17" 20) @@ -7420,12 +6981,10 @@ (def-joint-node ropebridge-36-lod0-jg "board8" 11) (def-joint-node ropebridge-36-lod0-jg "board9" 12) (def-joint-node ropebridge-36-lod0-jg "board10" 13) - (def-joint-node generic-button-lod0-jg "button" 4) (def-joint-node generic-button-lod0-jg "main" 3) (def-joint-node generic-button-lod0-jg "prejoint" 2) (def-joint-node generic-button-lod0-jg "align" 1) - (def-joint-node rounddoor-lod0-jg "door6" 9) (def-joint-node rounddoor-lod0-jg "door5" 8) (def-joint-node rounddoor-lod0-jg "door4" 7) @@ -7435,28 +6994,22 @@ (def-joint-node rounddoor-lod0-jg "master" 3) (def-joint-node rounddoor-lod0-jg "prejoint" 2) (def-joint-node rounddoor-lod0-jg "align" 1) - (def-joint-node ogreboss-bounce-boulder-lod0-jg "main" 3) (def-joint-node ogreboss-bounce-boulder-lod0-jg "prejoint" 2) (def-joint-node ogreboss-bounce-boulder-lod0-jg "align" 1) - (def-joint-node silostep-lod0-jg "step5" 4) (def-joint-node silostep-lod0-jg "main" 3) (def-joint-node silostep-lod0-jg "prejoint" 2) (def-joint-node silostep-lod0-jg "align" 1) - (def-joint-node water-anim-misty-mud-near-skull-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-near-skull-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-near-skull-lod0-jg "align" 1) - (def-joint-node citb-drop-plat-green-lod0-jg "boneless" 3) (def-joint-node citb-drop-plat-green-lod0-jg "prejoint" 2) (def-joint-node citb-drop-plat-green-lod0-jg "align" 1) - (def-joint-node water-anim-misty-mud-above-skeleton-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-above-skeleton-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-above-skeleton-lod0-jg "align" 1) - (def-joint-node darkecobomb-lod0-jg "botSpike" 15) (def-joint-node darkecobomb-lod0-jg "rightSpike" 14) (def-joint-node darkecobomb-lod0-jg "align" 1) @@ -7472,7 +7025,6 @@ (def-joint-node darkecobomb-lod0-jg "Button" 11) (def-joint-node darkecobomb-lod0-jg "leftSpike" 12) (def-joint-node darkecobomb-lod0-jg "topSpike" 13) - (def-joint-node power-right-lod0-jg "1" 53) (def-joint-node power-right-lod0-jg "2" 52) (def-joint-node power-right-lod0-jg "3" 51) @@ -7526,15 +7078,12 @@ (def-joint-node power-right-lod0-jg "27" 27) (def-joint-node power-right-lod0-jg "26" 28) (def-joint-node power-right-lod0-jg "25" 29) - (def-joint-node water-anim-misty-mud-behind-skeleton-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-behind-skeleton-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-behind-skeleton-lod0-jg "align" 1) - (def-joint-node water-anim-misty-mud-above-skull-back-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-above-skull-back-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-above-skull-back-lod0-jg "align" 1) - (def-joint-node baby-spider-lod0-jg "hair" 21) (def-joint-node baby-spider-lod0-jg "ring" 20) (def-joint-node baby-spider-lod0-jg "jaw" 19) @@ -7556,15 +7105,12 @@ (def-joint-node baby-spider-lod0-jg "bodB" 11) (def-joint-node baby-spider-lod0-jg "rfrontlegA" 12) (def-joint-node baby-spider-lod0-jg "rfrontlegB" 13) - (def-joint-node water-anim-misty-mud-above-skull-front-lod0-jg "boneless" 3) (def-joint-node water-anim-misty-mud-above-skull-front-lod0-jg "prejoint" 2) (def-joint-node water-anim-misty-mud-above-skull-front-lod0-jg "align" 1) - (def-joint-node ogre-isle-b-lod0-jg "isle2" 3) (def-joint-node ogre-isle-b-lod0-jg "prejoint" 2) (def-joint-node ogre-isle-b-lod0-jg "align" 1) - (def-joint-node flying-lurker-lod0-jg "rWing3" 72) (def-joint-node flying-lurker-lod0-jg "lWing3" 71) (def-joint-node flying-lurker-lod0-jg "lWing2" 70) @@ -7637,18 +7183,13 @@ (def-joint-node flying-lurker-lod0-jg "lLegFur" 57) (def-joint-node flying-lurker-lod0-jg "rLegFur" 58) (def-joint-node flying-lurker-lod0-jg "flap2" 59) - (def-joint-node ogre-isle-c-lod0-jg "isle1" 3) (def-joint-node ogre-isle-c-lod0-jg "prejoint" 2) (def-joint-node ogre-isle-c-lod0-jg "align" 1) - (def-joint-node ogre-step-b-lod0-jg "step7" 3) (def-joint-node ogre-step-b-lod0-jg "prejoint" 2) (def-joint-node ogre-step-b-lod0-jg "align" 1) - (def-joint-node ogreboss-cam-lod0-jg "camera" 4) (def-joint-node ogreboss-cam-lod0-jg "ogrebosscamera" 3) (def-joint-node ogreboss-cam-lod0-jg "prejoint" 2) (def-joint-node ogreboss-cam-lod0-jg "align" 1) - - diff --git a/goal_src/jak1/engine/debug/anim-tester.gc b/goal_src/jak1/engine/debug/anim-tester.gc index 1428e80525..0f7ee0f954 100644 --- a/goal_src/jak1/engine/debug/anim-tester.gc +++ b/goal_src/jak1/engine/debug/anim-tester.gc @@ -1,19 +1,16 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/util/glist-h.gc") (require "engine/anim/aligner.gc") -;; name: anim-tester.gc -;; name in dgo: anim-tester -;; dgos: GAME, ENGINE - ;; NOTES - removed one of the 2 inspects ;; - also fixed up a basic file-stream constructor on the stack (declare-type list-control structure) + (define-extern anim-test-anim-list-handler (function int list-control symbol)) + (define-extern anim-test-edit-sequence-list-handler (function int list-control symbol)) (declare-type anim-tester process-drawable) @@ -28,8 +25,7 @@ (fanimt2) (fanimt3) (fanimt4) - (fanimt5) - ) + (fanimt5)) ;; DECOMP BEGINS @@ -37,186 +33,124 @@ (declare-file (debug)) (deftype list-control (structure) - ((listfunc (function int list-control symbol)) - (list-owner uint32) - (top int32) - (left int32) - (list glst-list) - (the-node glst-node) - (top-index int32) - (the-index int32) - (the-disp-line int32) - (highlight-index int32) - (current-index int32) - (numlines int32) - (lines-to-disp int32) - (charswide int32) - (highlight-disp-line int32) - (field-id int32) - (xpos int32) - (ypos int32) - (user-info int32) - (user-info-u uint32 :overlay-at user-info) - (return-int int32) - ) - :allow-misaligned - ) - + ((listfunc (function int list-control symbol)) + (list-owner uint32) + (top int32) + (left int32) + (list glst-list) + (the-node glst-node) + (top-index int32) + (the-index int32) + (the-disp-line int32) + (highlight-index int32) + (current-index int32) + (numlines int32) + (lines-to-disp int32) + (charswide int32) + (highlight-disp-line int32) + (field-id int32) + (xpos int32) + (ypos int32) + (user-info int32) + (user-info-u uint32 :overlay-at user-info) + (return-int int32)) + :allow-misaligned) (deftype list-field (structure) - ((left int32) - (width int32) - ) - ) - + ((left int32) + (width int32))) (deftype DISP_LIST-bank (basic) - ((TV_SPACING int32) - (BORDER_WIDTH int32) - (BORDER_HEIGHT int32) - (MAX_LINES int32) - (CHAR_WIDTH int32) - (INC_DELAY int32) - (BORDER_LINES int32) - (CXOFF int32) - (CYOFF int32) - (BXOFF int32) - (BYOFF int32) - ) - ) - - -(define *DISP_LIST-bank* (new 'static 'DISP_LIST-bank - :TV_SPACING 8 - :BORDER_WIDTH 4 - :BORDER_HEIGHT 4 - :MAX_LINES 12 - :CHAR_WIDTH 10 - :INC_DELAY 20 - :BORDER_LINES 3 - ) - ) + ((TV_SPACING int32) + (BORDER_WIDTH int32) + (BORDER_HEIGHT int32) + (MAX_LINES int32) + (CHAR_WIDTH int32) + (INC_DELAY int32) + (BORDER_LINES int32) + (CXOFF int32) + (CYOFF int32) + (BXOFF int32) + (BYOFF int32))) + +(define *DISP_LIST-bank* + (new 'static + 'DISP_LIST-bank + :TV_SPACING 8 + :BORDER_WIDTH 4 + :BORDER_HEIGHT 4 + :MAX_LINES 12 + :CHAR_WIDTH 10 + :INC_DELAY 20 + :BORDER_LINES 3)) (defun display-list-control ((arg0 list-control)) (when (< (-> arg0 current-index) 0) (set! (-> arg0 current-index) 0) - 0 - ) - (if (>= (-> arg0 current-index) (glst-num-elements (-> arg0 list))) - (set! (-> arg0 current-index) -1) - ) + 0) + (if (>= (-> arg0 current-index) (glst-num-elements (-> arg0 list))) (set! (-> arg0 current-index) -1)) (when (< (-> arg0 highlight-index) 0) (set! (-> arg0 highlight-index) 0) - 0 - ) + 0) (if (>= (-> arg0 highlight-index) (glst-num-elements (-> arg0 list))) - (set! (-> arg0 highlight-index) (+ (glst-num-elements (-> arg0 list)) -1)) - ) + (set! (-> arg0 highlight-index) (+ (glst-num-elements (-> arg0 list)) -1))) (set! (-> arg0 the-index) (-> arg0 highlight-index)) (set! (-> arg0 the-node) (glst-get-node-by-index (-> arg0 list) (-> arg0 highlight-index))) (when (not ((-> arg0 listfunc) 1 arg0)) (set! (-> arg0 the-index) 0) - (let ((v1-12 (-> arg0 list))) - "return the start of the list" - (set! (-> arg0 the-node) (-> v1-12 head)) - ) - (while (let ((v1-22 (-> arg0 the-node))) - "is this node the end of the list. #t = end" - (not (not (-> v1-22 next))) - ) + (let ((v1-12 (-> arg0 list))) "return the start of the list" (set! (-> arg0 the-node) (-> v1-12 head))) + (while (let ((v1-22 (-> arg0 the-node))) "is this node the end of the list. #t = end" (not (not (-> v1-22 next)))) (when ((-> arg0 listfunc) 1 arg0) (set! (-> arg0 highlight-index) (-> arg0 the-index)) - (goto cfg-18) - ) + (goto cfg-18)) (+! (-> arg0 the-index) 1) - (let ((v1-20 (-> arg0 the-node))) - "return the next node in the list" - (set! (-> arg0 the-node) (-> v1-20 next)) - ) - ) + (let ((v1-20 (-> arg0 the-node))) "return the next node in the list" (set! (-> arg0 the-node) (-> v1-20 next)))) (set! (-> arg0 highlight-index) 0) - 0 - ) + 0) (label cfg-18) (set! (-> arg0 the-index) (-> arg0 highlight-index)) (set! (-> arg0 the-node) (glst-get-node-by-index (-> arg0 list) (-> arg0 the-index))) ((-> arg0 listfunc) 4 arg0) (let ((s5-2 #f) - (s4-0 #f) - ) + (s4-0 #f)) (set! (-> arg0 numlines) 0) (set! (-> arg0 charswide) 0) (set! (-> arg0 the-index) 0) (set! (-> arg0 the-disp-line) 0) - (let ((v1-29 (-> arg0 list))) - "return the start of the list" - (set! (-> arg0 the-node) (-> v1-29 head)) - ) - (while (let ((v1-52 (-> arg0 the-node))) - "is this node the end of the list. #t = end" - (not (not (-> v1-52 next))) - ) + (let ((v1-29 (-> arg0 list))) "return the start of the list" (set! (-> arg0 the-node) (-> v1-29 head))) + (while (let ((v1-52 (-> arg0 the-node))) "is this node the end of the list. #t = end" (not (not (-> v1-52 next)))) (when ((-> arg0 listfunc) 1 arg0) - (if (and (not s5-2) (>= (-> arg0 the-index) (-> arg0 top-index))) - (set! s5-2 #t) - ) + (if (and (not s5-2) (>= (-> arg0 the-index) (-> arg0 top-index))) (set! s5-2 #t)) (when (and (not s4-0) (>= (-> arg0 the-index) (-> arg0 highlight-index))) (set! s4-0 #t) - (set! (-> arg0 highlight-disp-line) (-> arg0 the-disp-line)) - ) + (set! (-> arg0 highlight-disp-line) (-> arg0 the-disp-line))) ((-> arg0 listfunc) 2 arg0) - (if (< (-> arg0 charswide) (-> arg0 return-int)) - (set! (-> arg0 charswide) (-> arg0 return-int)) - ) - (if s5-2 - (+! (-> arg0 the-disp-line) 1) - ) - (+! (-> arg0 numlines) 1) - ) + (if (< (-> arg0 charswide) (-> arg0 return-int)) (set! (-> arg0 charswide) (-> arg0 return-int))) + (if s5-2 (+! (-> arg0 the-disp-line) 1)) + (+! (-> arg0 numlines) 1)) (+! (-> arg0 the-index) 1) - (let ((v1-50 (-> arg0 the-node))) - "return the next node in the list" - (set! (-> arg0 the-node) (-> v1-50 next)) - ) - ) - ) - (set! (-> arg0 lines-to-disp) (if (< (-> *DISP_LIST-bank* MAX_LINES) (-> arg0 numlines)) - (-> *DISP_LIST-bank* MAX_LINES) - (-> arg0 numlines) - ) - ) - (if (> (-> arg0 lines-to-disp) 0) - (-> arg0 lines-to-disp) - 1 - ) + (let ((v1-50 (-> arg0 the-node))) "return the next node in the list" (set! (-> arg0 the-node) (-> v1-50 next))))) + (set! (-> arg0 lines-to-disp) + (if (< (-> *DISP_LIST-bank* MAX_LINES) (-> arg0 numlines)) (-> *DISP_LIST-bank* MAX_LINES) (-> arg0 numlines))) + (if (> (-> arg0 lines-to-disp) 0) (-> arg0 lines-to-disp) 1) (let* ((s4-1 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s5-3 (-> s4-1 base)) - ) - (draw-sprite2d-xy - s4-1 - (-> arg0 left) - (-> arg0 top) - (+ (* (-> arg0 charswide) (-> *DISP_LIST-bank* CHAR_WIDTH)) (* (-> *DISP_LIST-bank* BORDER_WIDTH) 2)) - (+ (* (+ (-> arg0 lines-to-disp) 1) (-> *DISP_LIST-bank* TV_SPACING)) - (* (-> *DISP_LIST-bank* BORDER_WIDTH) 2) - ) - (new 'static 'rgba :a #x40) - ) + (s5-3 (-> s4-1 base))) + (draw-sprite2d-xy s4-1 + (-> arg0 left) + (-> arg0 top) + (+ (* (-> arg0 charswide) (-> *DISP_LIST-bank* CHAR_WIDTH)) (* (-> *DISP_LIST-bank* BORDER_WIDTH) 2)) + (+ (* (+ (-> arg0 lines-to-disp) 1) (-> *DISP_LIST-bank* TV_SPACING)) (* (-> *DISP_LIST-bank* BORDER_WIDTH) 2)) + (new 'static 'rgba :a #x40)) (let ((a3-6 (-> s4-1 base))) (let ((v1-72 (the-as object (-> s4-1 base)))) (set! (-> (the-as dma-packet v1-72) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-72) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-72) vif1) (new 'static 'vif-tag)) - (set! (-> s4-1 base) (&+ (the-as pointer v1-72) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s5-3 - (the-as (pointer dma-tag) a3-6) - ) - ) - ) + (set! (-> s4-1 base) (&+ (the-as pointer v1-72) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s5-3 + (the-as (pointer dma-tag) a3-6)))) (set! (-> arg0 xpos) (+ (-> arg0 left) (-> *DISP_LIST-bank* BORDER_WIDTH))) (set! (-> arg0 ypos) (+ (-> arg0 top) (-> *DISP_LIST-bank* BORDER_HEIGHT))) ((-> arg0 listfunc) 3 arg0) @@ -234,34 +168,16 @@ (let ((v1-92 (-> arg0 the-node))) "return the previous node in the list" (let ((v1-93 (-> v1-92 prev))) - (let ((a0-41 v1-93)) - "is this node the start of the list. #t = start" - (if (not (-> a0-41 prev)) - (goto cfg-61) - ) - ) - (set! (-> arg0 the-node) v1-93) - ) - ) + (let ((a0-41 v1-93)) "is this node the start of the list. #t = start" (if (not (-> a0-41 prev)) (goto cfg-61))) + (set! (-> arg0 the-node) v1-93))) (+! (-> arg0 the-index) -1) (when ((-> arg0 listfunc) 1 arg0) (set! (-> arg0 top-index) (-> arg0 the-index)) (+! s5-4 -1) - (if (<= s5-4 0) - (goto cfg-61) - ) - ) - ) - ) - ) - ) - (label cfg-61) - ) + (if (<= s5-4 0) (goto cfg-61))))))) + (label cfg-61)) ((>= (-> arg0 highlight-disp-line) (- (-> *DISP_LIST-bank* MAX_LINES) (-> *DISP_LIST-bank* BORDER_LINES))) - (let ((s5-5 - (- (-> arg0 highlight-disp-line) (- (-> *DISP_LIST-bank* MAX_LINES) (-> *DISP_LIST-bank* BORDER_LINES))) - ) - ) + (let ((s5-5 (- (-> arg0 highlight-disp-line) (- (-> *DISP_LIST-bank* MAX_LINES) (-> *DISP_LIST-bank* BORDER_LINES))))) (set! (-> arg0 the-node) (glst-get-node-by-index (-> arg0 list) (-> arg0 top-index))) (set! (-> arg0 the-index) (-> arg0 top-index)) (let ((v1-107 (-> arg0 the-node))) @@ -271,185 +187,129 @@ (let ((v1-111 (-> arg0 the-node))) "return the next node in the list" (let ((v1-112 (-> v1-111 next))) - (let ((a0-55 v1-112)) - "is this node the end of the list. #t = end" - (if (not (-> a0-55 next)) - (goto cfg-77) - ) - ) - (set! (-> arg0 the-node) v1-112) - ) - ) + (let ((a0-55 v1-112)) "is this node the end of the list. #t = end" (if (not (-> a0-55 next)) (goto cfg-77))) + (set! (-> arg0 the-node) v1-112))) (+! (-> arg0 the-index) 1) (when ((-> arg0 listfunc) 1 arg0) (set! (-> arg0 top-index) (-> arg0 the-index)) (+! s5-5 -1) - (if (<= s5-5 0) - (goto cfg-77) - ) - ) - ) - ) - ) - ) - ) - ) + (if (<= s5-5 0) (goto cfg-77))))))))) (label cfg-77) (set! (-> arg0 the-disp-line) 0) (set! (-> arg0 the-index) (-> arg0 top-index)) (set! (-> arg0 the-node) (glst-get-node-by-index (-> arg0 list) (-> arg0 top-index))) (while (let ((v1-135 (-> arg0 the-node))) "is this node the end of the list. #t = end" - (not (or (not (-> v1-135 next)) (>= (-> arg0 the-disp-line) (-> *DISP_LIST-bank* MAX_LINES)))) - ) + (not (or (not (-> v1-135 next)) (>= (-> arg0 the-disp-line) (-> *DISP_LIST-bank* MAX_LINES))))) (when ((-> arg0 listfunc) 1 arg0) (set! (-> arg0 xpos) (+ (-> arg0 left) (-> *DISP_LIST-bank* BORDER_WIDTH))) - (set! (-> arg0 ypos) (+ (-> arg0 top) - (-> *DISP_LIST-bank* BORDER_HEIGHT) - (* (+ (-> arg0 the-disp-line) 1) (-> *DISP_LIST-bank* TV_SPACING)) - ) - ) + (set! (-> arg0 ypos) + (+ (-> arg0 top) (-> *DISP_LIST-bank* BORDER_HEIGHT) (* (+ (-> arg0 the-disp-line) 1) (-> *DISP_LIST-bank* TV_SPACING)))) ((-> arg0 listfunc) 0 arg0) - (+! (-> arg0 the-disp-line) 1) - ) + (+! (-> arg0 the-disp-line) 1)) (+! (-> arg0 the-index) 1) - (let ((v1-133 (-> arg0 the-node))) - "return the next node in the list" - (set! (-> arg0 the-node) (-> v1-133 next)) - ) - ) - ) + (let ((v1-133 (-> arg0 the-node))) "return the next node in the list" (set! (-> arg0 the-node) (-> v1-133 next))))) (else - (let* ((s4-2 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s5-6 (-> s4-2 base)) - ) - (draw-string-xy - "**NONE**" - s4-2 - (+ (-> arg0 left) (-> *DISP_LIST-bank* BORDER_WIDTH)) - (+ (-> arg0 top) (-> *DISP_LIST-bank* BORDER_HEIGHT) (-> *DISP_LIST-bank* TV_SPACING)) - (font-color menu) - (font-flags shadow kerning) - ) - (let ((a3-12 (-> s4-2 base))) - (let ((v1-147 (the-as object (-> s4-2 base)))) - (set! (-> (the-as dma-packet v1-147) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-147) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-147) vif1) (new 'static 'vif-tag)) - (set! (-> s4-2 base) (&+ (the-as pointer v1-147) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s5-6 - (the-as (pointer dma-tag) a3-12) - ) - ) - ) - ) - ) - (none) - ) + (let* ((s4-2 (-> *display* frames (-> *display* on-screen) frame debug-buf)) + (s5-6 (-> s4-2 base))) + (draw-string-xy "**NONE**" + s4-2 + (+ (-> arg0 left) (-> *DISP_LIST-bank* BORDER_WIDTH)) + (+ (-> arg0 top) (-> *DISP_LIST-bank* BORDER_HEIGHT) (-> *DISP_LIST-bank* TV_SPACING)) + (font-color menu) + (font-flags shadow kerning)) + (let ((a3-12 (-> s4-2 base))) + (let ((v1-147 (the-as object (-> s4-2 base)))) + (set! (-> (the-as dma-packet v1-147) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-147) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-147) vif1) (new 'static 'vif-tag)) + (set! (-> s4-2 base) (&+ (the-as pointer v1-147) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s5-6 + (the-as (pointer dma-tag) a3-12)))))) + (none)) (deftype anim-tester-bank (basic) - ((ANIM_SPEED float) - (BLEND float) - (OBJECT_LIST_X int32) - (OBJECT_LIST_Y int32) - (OBJECT_LIST_MIN_WIDTH int32) - (ANIM_LIST_X int32) - (ANIM_LIST_Y int32) - (ANIM_LIST_MIN_WIDTH int32) - (PICK_LIST_X int32) - (PICK_LIST_Y int32) - (PICK_LIST_MIN_WIDTH int32) - (EDIT_LIST_X int32) - (EDIT_LIST_Y int32) - (EDIT_STATS_X int32) - (EDIT_LIST_MIN_WIDTH int32) - (EDIT_PICK_X int32) - ) - ) - - -(define *ANIM_TESTER-bank* (new 'static 'anim-tester-bank - :ANIM_SPEED 1.0 - :BLEND 1.0 - :OBJECT_LIST_X 10 - :OBJECT_LIST_Y 50 - :OBJECT_LIST_MIN_WIDTH 18 - :ANIM_LIST_X 10 - :ANIM_LIST_Y 50 - :ANIM_LIST_MIN_WIDTH 17 - :PICK_LIST_X 10 - :PICK_LIST_Y 50 - :PICK_LIST_MIN_WIDTH 21 - :EDIT_LIST_X 10 - :EDIT_LIST_Y 50 - :EDIT_STATS_X 30 - :EDIT_LIST_MIN_WIDTH 64 - :EDIT_PICK_X 30 - ) - ) + ((ANIM_SPEED float) + (BLEND float) + (OBJECT_LIST_X int32) + (OBJECT_LIST_Y int32) + (OBJECT_LIST_MIN_WIDTH int32) + (ANIM_LIST_X int32) + (ANIM_LIST_Y int32) + (ANIM_LIST_MIN_WIDTH int32) + (PICK_LIST_X int32) + (PICK_LIST_Y int32) + (PICK_LIST_MIN_WIDTH int32) + (EDIT_LIST_X int32) + (EDIT_LIST_Y int32) + (EDIT_STATS_X int32) + (EDIT_LIST_MIN_WIDTH int32) + (EDIT_PICK_X int32))) + +(define *ANIM_TESTER-bank* + (new 'static + 'anim-tester-bank + :ANIM_SPEED 1.0 + :BLEND 1.0 + :OBJECT_LIST_X 10 + :OBJECT_LIST_Y 50 + :OBJECT_LIST_MIN_WIDTH 18 + :ANIM_LIST_X 10 + :ANIM_LIST_Y 50 + :ANIM_LIST_MIN_WIDTH 17 + :PICK_LIST_X 10 + :PICK_LIST_Y 50 + :PICK_LIST_MIN_WIDTH 21 + :EDIT_LIST_X 10 + :EDIT_LIST_Y 50 + :EDIT_STATS_X 30 + :EDIT_LIST_MIN_WIDTH 64 + :EDIT_PICK_X 30)) (deftype anim-tester (process-drawable) - ((flags anim-tester-flags) - (obj-list glst-list :inline) - (current-obj string) - (speed int32) - (list-con list-control :inline) - (pick-con list-control :inline) - (item-field int64) - (inc-delay int32) - (inc-timer int32) - (edit-mode int32) - (old-mode int32) - (anim-speed float) - (anim-gspeed float) - (anim-first float) - (anim-last float) - ) + ((flags anim-tester-flags) + (obj-list glst-list :inline) + (current-obj string) + (speed int32) + (list-con list-control :inline) + (pick-con list-control :inline) + (item-field int64) + (inc-delay int32) + (inc-timer int32) + (edit-mode int32) + (old-mode int32) + (anim-speed float) + (anim-gspeed float) + (anim-first float) + (anim-last float)) (:states - anim-tester-process - ) - ) - + anim-tester-process)) (defun anim-tester-num-print ((arg0 basic) (arg1 float)) (cond - ((= arg1 -2.0) - (format arg0 "max") - ) - ((= arg1 -1.0) - (format arg0 "min") - ) - (else - (format arg0 "~f" arg1) - ) - ) - (none) - ) + ((= arg1 -2.0) (format arg0 "max")) + ((= arg1 -1.0) (format arg0 "min")) + (else (format arg0 "~f" arg1))) + (none)) (define-perm *anim-tester* (pointer anim-tester) #f) (deftype anim-test-obj (glst-named-node) - ((obj-art-group art-group) - (seq-list glst-list :inline) - (flags int32) - (mesh-geo merc-ctrl) - (joint-geo art-joint-geo) - (list-con list-control :inline) - (parent uint32) - (anim-index int32) - (anim-hindex int32) - (seq-index int32) - (seq-hindex int32) - ) + ((obj-art-group art-group) + (seq-list glst-list :inline) + (flags int32) + (mesh-geo merc-ctrl) + (joint-geo art-joint-geo) + (list-con list-control :inline) + (parent uint32) + (anim-index int32) + (anim-hindex int32) + (seq-index int32) + (seq-hindex int32)) (:methods - (new (symbol type int string basic) _type_) - ) - ) - + (new (symbol type int string basic) _type_))) (defun anim-test-obj-init ((arg0 anim-test-obj) (arg1 list-control)) (set! (-> arg0 mesh-geo) #f) @@ -459,42 +319,27 @@ (set! (-> arg0 list-con top) (-> *ANIM_TESTER-bank* ANIM_LIST_Y)) (set! (-> arg0 list-con list) (-> arg0 seq-list)) (set! (-> arg0 list-con list-owner) (the-as uint arg0)) - (let ((v1-6 arg1)) - (set! (-> arg0 parent) (the-as uint (if v1-6 - (-> v1-6 the-node) - ) - ) - ) - ) - (none) - ) + (let ((v1-6 arg1)) (set! (-> arg0 parent) (the-as uint (if v1-6 (-> v1-6 the-node))))) + (none)) (defmethod new anim-test-obj ((allocation symbol) (type-to-make type) (arg0 int) (arg1 string) (arg2 basic)) (let ((t9-0 (method-of-type structure new)) - (v1-1 type-to-make) - ) + (v1-1 type-to-make)) (-> type-to-make size) (let ((s4-0 (the-as anim-test-obj (t9-0 allocation v1-1)))) (set! (-> s4-0 obj-art-group) (the-as art-group arg2)) (set! (-> s4-0 privname) arg1) (glst-init-list! (-> s4-0 seq-list)) - s4-0 - ) - ) - ) + s4-0))) (deftype anim-test-sequence (glst-named-node) - ((item-list glst-list :inline) - (playing-item int32) - (flags int32) - (list-con list-control :inline) - (parent anim-test-obj) - ) + ((item-list glst-list :inline) + (playing-item int32) + (flags int32) + (list-con list-control :inline) + (parent anim-test-obj)) (:methods - (new (symbol type int string) _type_) - ) - ) - + (new (symbol type int string) _type_))) (defun anim-test-sequence-init ((arg0 anim-test-sequence) (arg1 anim-test-obj)) (set! (-> arg0 list-con listfunc) anim-test-edit-sequence-list-handler) @@ -503,42 +348,32 @@ (set! (-> arg0 list-con list) (-> arg0 item-list)) (set! (-> arg0 list-con list-owner) (the-as uint arg0)) (set! (-> arg0 parent) arg1) - (none) - ) + (none)) (defmethod new anim-test-sequence ((allocation symbol) (type-to-make type) (arg0 int) (arg1 string)) (let ((t9-0 (method-of-type structure new)) - (v1-1 type-to-make) - ) + (v1-1 type-to-make)) (-> type-to-make size) (let ((s5-0 (the-as anim-test-sequence (t9-0 allocation v1-1)))) (set! (-> s5-0 privname) arg1) (glst-init-list! (-> s5-0 item-list)) - s5-0 - ) - ) - ) + s5-0))) (deftype anim-test-seq-item (glst-named-node) - ((speed int32) - (blend int32) - (first-frame float) - (last-frame float) - (num-frames float) - (artist-base float) - (flags int32) - (parent anim-test-sequence) - ) + ((speed int32) + (blend int32) + (first-frame float) + (last-frame float) + (num-frames float) + (artist-base float) + (flags int32) + (parent anim-test-sequence)) (:methods - (new (symbol type int string) _type_) - ) - ) - + (new (symbol type int string) _type_))) (defmethod new anim-test-seq-item ((allocation symbol) (type-to-make type) (arg0 int) (arg1 string)) (let ((t9-0 (method-of-type structure new)) - (v1-1 type-to-make) - ) + (v1-1 type-to-make)) (-> type-to-make size) (let ((v0-0 (t9-0 allocation v1-1))) (set! (-> (the-as anim-test-seq-item v0-0) privname) arg1) @@ -546,15 +381,10 @@ (set! (-> (the-as anim-test-seq-item v0-0) blend) 0) (set! (-> (the-as anim-test-seq-item v0-0) first-frame) -1.0) (set! (-> (the-as anim-test-seq-item v0-0) last-frame) -2.0) - (the-as anim-test-seq-item v0-0) - ) - ) - ) + (the-as anim-test-seq-item v0-0)))) (defun anim-test-seq-item-copy! ((arg0 anim-test-seq-item) (arg1 anim-test-seq-item)) - (let ((v1-0 arg0)) - (set! (-> v1-0 privname) (-> arg1 privname)) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 privname) (-> arg1 privname))) (set! (-> arg0 speed) (-> arg1 speed)) (set! (-> arg0 blend) (-> arg1 blend)) (set! (-> arg0 first-frame) (-> arg1 first-frame)) @@ -562,43 +392,26 @@ (set! (-> arg0 num-frames) (-> arg1 num-frames)) (set! (-> arg0 artist-base) (-> arg1 artist-base)) (set! (-> arg0 flags) (-> arg1 flags)) - (let ((v0-0 (-> arg1 parent))) - (set! (-> arg0 parent) v0-0) - v0-0 - ) - ) - + (let ((v0-0 (-> arg1 parent))) (set! (-> arg0 parent) v0-0) v0-0)) (defun anim-test-obj-item-valid? ((arg0 anim-test-obj) (arg1 anim-test-seq-item)) (let ((v1-0 (-> arg0 seq-list))) "return the start of the list" (let ((s5-0 (the-as anim-test-sequence (-> v1-0 head)))) - (while (let ((v1-13 s5-0)) - "is this node the end of the list. #t = end" - (not (not (-> v1-13 next))) - ) + (while (let ((v1-13 s5-0)) "is this node the end of the list. #t = end" (not (not (-> v1-13 next)))) (when (and (logtest? (-> s5-0 flags) 2) (name= (-> arg1 privname) (-> s5-0 privname))) (let ((v1-7 (-> s5-0 item-list))) "return the start of the list" (let* ((v1-8 (the-as anim-test-seq-item (-> v1-7 head))) - (a0-4 v1-8) - ) + (a0-4 v1-8)) "is this node the end of the list. #t = end" (when (not (not (-> a0-4 next))) (set! (-> arg1 num-frames) (-> v1-8 num-frames)) - (set! (-> arg1 artist-base) (-> v1-8 artist-base)) - ) - ) - ) - (return #t) - ) + (set! (-> arg1 artist-base) (-> v1-8 artist-base))))) + (return #t)) "return the next node in the list" - (set! s5-0 (the-as anim-test-sequence (-> s5-0 next))) - ) - ) - ) - #f - ) + (set! s5-0 (the-as anim-test-sequence (-> s5-0 next)))))) + #f) (defun anim-test-obj-remove-invalid ((arg0 anim-test-obj)) (local-vars (v1-19 symbol)) @@ -607,8 +420,7 @@ (let ((s5-0 (-> v1-0 head))) (while (let ((v1-25 (the-as anim-test-sequence s5-0))) "is this node the end of the list. #t = end" - (not (not (-> v1-25 next))) - ) + (not (not (-> v1-25 next)))) (let ((v1-1 (the-as anim-test-sequence s5-0))) "return the next node in the list" (let ((s4-0 (-> v1-1 next))) @@ -616,87 +428,48 @@ (let ((v1-5 (-> (the-as anim-test-sequence s5-0) item-list))) "return the start of the list" (let ((s3-0 (the-as anim-test-seq-item (-> v1-5 head)))) - (while (let ((v1-13 s3-0)) - "is this node the end of the list. #t = end" - (not (not (-> v1-13 next))) - ) + (while (let ((v1-13 s3-0)) "is this node the end of the list. #t = end" (not (not (-> v1-13 next)))) (let ((v1-6 s3-0)) "return the next node in the list" (let ((s2-0 (the-as anim-test-seq-item (-> v1-6 next)))) (if (and (not (logtest? (-> s3-0 flags) 1)) (not (anim-test-obj-item-valid? arg0 s3-0))) - (glst-remove (-> (the-as anim-test-sequence s5-0) item-list) s3-0) - ) - (set! s3-0 s2-0) - ) - ) - ) - ) - ) - ) + (glst-remove (-> (the-as anim-test-sequence s5-0) item-list) s3-0)) + (set! s3-0 s2-0))))))) (let ((v1-18 (-> (the-as anim-test-sequence s5-0) item-list))) "is the list empty, #t = empty" (if (or (= (-> v1-18 tailpred) v1-18) (and (= (glst-num-elements (-> (the-as anim-test-sequence s5-0) item-list)) 1) (begin (let ((v1-21 #t) - (a0-13 (-> (the-as anim-test-sequence s5-0) item-list)) - ) + (a0-13 (-> (the-as anim-test-sequence s5-0) item-list))) "return the start of the list" (let ((a0-16 (the-as int (logand (-> (the-as anim-test-seq-item (-> a0-13 head)) flags) 1)))) - (cmove-#f-zero v1-19 a0-16 v1-21) - ) - ) - v1-19 - ) - ) - ) - (glst-remove (-> arg0 seq-list) (the-as anim-test-sequence s5-0)) - ) - ) - (set! s5-0 (the-as anim-test-sequence s4-0)) - ) - ) - ) - ) - ) + (cmove-#f-zero v1-19 a0-16 v1-21))) + v1-19))) + (glst-remove (-> arg0 seq-list) (the-as anim-test-sequence s5-0)))) + (set! s5-0 (the-as anim-test-sequence s4-0))))))) (let ((v1-30 (-> arg0 seq-list))) "return the start of the list" (let ((v1-31 (the-as anim-test-sequence (-> v1-30 head)))) - (while (let ((a0-23 v1-31)) - "is this node the end of the list. #t = end" - (not (not (-> a0-23 next))) - ) + (while (let ((a0-23 v1-31)) "is this node the end of the list. #t = end" (not (not (-> a0-23 next)))) (let ((a0-20 v1-31)) "return the next node in the list" - (let ((a0-21 (-> a0-20 next))) - (logand! (-> v1-31 flags) -3) - (set! v1-31 (the-as anim-test-sequence a0-21)) - ) - ) - ) - ) - ) - #f - ) + (let ((a0-21 (-> a0-20 next))) (logand! (-> v1-31 flags) -3) (set! v1-31 (the-as anim-test-sequence a0-21))))))) + #f) (defbehavior anim-tester-real-post anim-tester () (when (logtest? (-> self flags) (anim-tester-flags fanimt0)) (if (logtest? (-> self flags) (anim-tester-flags fanimt5)) - (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) - ) + (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv))) (ja-post) (when (logtest? (-> self flags) (anim-tester-flags fanimt4)) (draw-joint-spheres self) - (debug-print-channels (-> self skel) (the-as symbol *stdcon*)) - ) - ) - (none) - ) + (debug-print-channels (-> self skel) (the-as symbol *stdcon*)))) + (none)) (defbehavior anim-tester-post anim-tester () (anim-tester-real-post) - (none) - ) + (none)) (defbehavior anim-tester-update-anim-info anim-tester ((arg0 anim-test-seq-item)) (set! (-> self anim-first) (-> arg0 first-frame)) @@ -705,129 +478,84 @@ (set! (-> self anim-speed) (* 0.01 (-> self anim-gspeed) (the float (-> arg0 speed)))) (when (< (-> self anim-speed) 0.0) (set! (-> self anim-first) (-> arg0 last-frame)) - (set! (-> self anim-last) (-> arg0 first-frame)) - ) + (set! (-> self anim-last) (-> arg0 first-frame))) (set! (-> self anim-gspeed) (fabs (-> self anim-gspeed))) - (set! (-> self anim-speed) (fabs (-> self anim-speed))) - ) + (set! (-> self anim-speed) (fabs (-> self anim-speed)))) (defbehavior anim-tester-reset anim-tester () (let ((v1-0 (-> self obj-list))) "is the list empty, #t = empty" (cond - ((= (-> v1-0 tailpred) v1-0) - (set! (-> self list-con current-index) 0) - (set! (-> self current-obj) "") - ) + ((= (-> v1-0 tailpred) v1-0) (set! (-> self list-con current-index) 0) (set! (-> self current-obj) "")) (else - (let ((v1-1 (the-as anim-test-obj (glst-find-node-by-name (-> self obj-list) (-> self current-obj))))) - ;; og:preserve-this added this if, sometimes the value is -1 which just crashes the game after here. nice work! - (if (< (-> self list-con current-index) 0) - (set! (-> self list-con current-index) 0)) - - (when (not v1-1) - (if (>= (-> self list-con current-index) (glst-num-elements (-> self obj-list))) - (set! (-> self list-con current-index) (+ (glst-num-elements (-> self obj-list)) -1)) - ) - (set! v1-1 - (the-as anim-test-obj (glst-get-node-by-index (-> self obj-list) (-> self list-con current-index))) - ) - (set! (-> self current-obj) (-> v1-1 privname)) - ) - (cond - ((or (not (-> v1-1 joint-geo)) (not (-> v1-1 mesh-geo))) - (format #t "what's this? ~A~%" (-> v1-1 privname)) - (format #t "it's missing a joint-geo, or a mesh-geo or a mesh-anim~%") - ) - (else - (let ((a0-15 (-> v1-1 joint-geo))) - (let ((a1-4 (-> v1-1 mesh-geo))) - (set! (-> self draw art-group) (-> v1-1 obj-art-group)) - (set! (-> self draw cur-lod) -1) - (set! (-> self draw jgeo) a0-15) - (set! (-> self draw sink-group) (-> *level* level-default pris-tex-foreground-sink-group)) - (set! (-> self draw lod-set lod 0 geo) a1-4) - ) - (set! (-> self draw lod-set lod 0 dist) 4095996000.0) - (set! (-> self draw bounds w) 40960.0) - (set! (-> self draw data-format) (the-as uint 1)) - (let ((v1-16 (-> (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) quad))) - (set! (-> self draw color-mult quad) v1-16) - ) - (let ((v1-18 (-> (new 'static 'vector) quad))) - (set! (-> self draw color-emissive quad) v1-18) - ) - (set! (-> self draw secondary-interp) 0.0) - (set! (-> self draw shadow) #f) - (set! (-> self draw shadow-ctrl) #f) - (set! (-> self draw ripple) #f) - (set! (-> self draw level-index) (the-as uint 2)) - (set! (-> self node-list) (make-nodes-from-jg a0-15 *default-skel-template* 'debug)) - ) - (set! (-> self skel effect) (new 'process 'effect-control self)) - (fill-skeleton-cache self) - (lod-set! (-> self draw) 0) - (ja-channel-set! 0) - (ja-post) - ) - ) - ) - ) - ) - ) - (none) - ) + (let ((v1-1 (the-as anim-test-obj (glst-find-node-by-name (-> self obj-list) (-> self current-obj))))) + ;; og:preserve-this added this if, sometimes the value is -1 which just crashes the game after here. nice work! + (if (< (-> self list-con current-index) 0) (set! (-> self list-con current-index) 0)) + (when (not v1-1) + (if (>= (-> self list-con current-index) (glst-num-elements (-> self obj-list))) + (set! (-> self list-con current-index) (+ (glst-num-elements (-> self obj-list)) -1))) + (set! v1-1 (the-as anim-test-obj (glst-get-node-by-index (-> self obj-list) (-> self list-con current-index)))) + (set! (-> self current-obj) (-> v1-1 privname))) + (cond + ((or (not (-> v1-1 joint-geo)) (not (-> v1-1 mesh-geo))) + (format #t "what's this? ~A~%" (-> v1-1 privname)) + (format #t "it's missing a joint-geo, or a mesh-geo or a mesh-anim~%")) + (else + (let ((a0-15 (-> v1-1 joint-geo))) + (let ((a1-4 (-> v1-1 mesh-geo))) + (set! (-> self draw art-group) (-> v1-1 obj-art-group)) + (set! (-> self draw cur-lod) -1) + (set! (-> self draw jgeo) a0-15) + (set! (-> self draw sink-group) (-> *level* level-default pris-tex-foreground-sink-group)) + (set! (-> self draw lod-set lod 0 geo) a1-4)) + (set! (-> self draw lod-set lod 0 dist) 4095996000.0) + (set! (-> self draw bounds w) 40960.0) + (set! (-> self draw data-format) (the-as uint 1)) + (let ((v1-16 (-> (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) quad))) (set! (-> self draw color-mult quad) v1-16)) + (let ((v1-18 (-> (new 'static 'vector) quad))) (set! (-> self draw color-emissive quad) v1-18)) + (set! (-> self draw secondary-interp) 0.0) + (set! (-> self draw shadow) #f) + (set! (-> self draw shadow-ctrl) #f) + (set! (-> self draw ripple) #f) + (set! (-> self draw level-index) (the-as uint 2)) + (set! (-> self node-list) (make-nodes-from-jg a0-15 *default-skel-template* 'debug))) + (set! (-> self skel effect) (new 'process 'effect-control self)) + (fill-skeleton-cache self) + (lod-set! (-> self draw) 0) + (ja-channel-set! 0) + (ja-post))))))) + (none)) (defun anim-tester-disp-frame-num ((arg0 string) (arg1 float) (arg2 float) (arg3 font-context)) ;; this function does not work (return (the pointer #f)) (local-vars (sv-16 (function _varargs_ object))) (let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (gp-0 (-> s3-0 base)) - ) + (gp-0 (-> s3-0 base))) (cond ((= arg1 -1.0) - (let ((s2-1 draw-string-adv)) - (format (clear *temp-string*) "~Smin" arg0) - (s2-1 *temp-string* s3-0 arg3) - ) - ) + (let ((s2-1 draw-string-adv)) (format (clear *temp-string*) "~Smin" arg0) (s2-1 *temp-string* s3-0 arg3))) ((= arg1 -2.0) - (let ((s2-2 draw-string-adv)) - (format (clear *temp-string*) "~Smax" arg0) - (s2-2 *temp-string* s3-0 arg3) - ) - ) + (let ((s2-2 draw-string-adv)) (format (clear *temp-string*) "~Smax" arg0) (s2-2 *temp-string* s3-0 arg3))) (else - (let ((s0-0 draw-string-adv)) - (set! sv-16 format) - (let ((a0-11 (clear *temp-string*)) - (a1-5 "~S~3,,0f") - (a2-5 arg0) - (a3-1 (+ arg1 arg2)) - ) - (sv-16 a0-11 a1-5 a2-5 a3-1) - ) - (s0-0 *temp-string* s3-0 arg3) - ) - ) - ) + (let ((s0-0 draw-string-adv)) + (set! sv-16 format) + (let ((a0-11 (clear *temp-string*)) + (a1-5 "~S~3,,0f") + (a2-5 arg0) + (a3-1 (+ arg1 arg2))) + (sv-16 a0-11 a1-5 a2-5 a3-1)) + (s0-0 *temp-string* s3-0 arg3)))) (let ((a3-2 (-> s3-0 base))) (let ((v1-6 (the-as object (-> s3-0 base)))) (set! (-> (the-as dma-packet v1-6) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-6) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-6) vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-6) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-0 - (the-as (pointer dma-tag) a3-2) - ) - ) - ) - ) + (set! (-> s3-0 base) (&+ (the-as pointer v1-6) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-0 + (the-as (pointer dma-tag) a3-2))))) (defbehavior anim-tester-standard-event-handler anim-tester ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -837,221 +565,115 @@ (when (!= (-> *anim-tester* 0 edit-mode) 1) (set! (-> *debug-menu-context* is-hidden) #f) (set! (-> *anim-tester* 0 edit-mode) 0) - (set! *camera-read-buttons* #t) - ) + (set! *camera-read-buttons* #t)) (anim-tester-reset) - (go anim-tester-process) - ) - (('change-anim) - (go anim-tester-process) - ) - (('pick-object) - (set! (-> self edit-mode) 1) - (set! *camera-read-buttons* #f) - #f - ) - (('pick-joint-anim) - (set! (-> self edit-mode) 2) - (set! *camera-read-buttons* #f) - #f - ) - (('pick-sequence) - (set! (-> self edit-mode) 3) - (set! *camera-read-buttons* #f) - #f - ) - (('edit-sequence) - (set! (-> self edit-mode) 4) - (set! *camera-read-buttons* #f) - #f - ) - (('save-sequences) - (anim-tester-save-all-objects self) - ) - ) - ) + (go anim-tester-process)) + (('change-anim) (go anim-tester-process)) + (('pick-object) (set! (-> self edit-mode) 1) (set! *camera-read-buttons* #f) #f) + (('pick-joint-anim) (set! (-> self edit-mode) 2) (set! *camera-read-buttons* #f) #f) + (('pick-sequence) (set! (-> self edit-mode) 3) (set! *camera-read-buttons* #f) #f) + (('edit-sequence) (set! (-> self edit-mode) 4) (set! *camera-read-buttons* #f) #f) + (('save-sequences) (anim-tester-save-all-objects self)))) (defun anim-test-obj-list-handler ((arg0 int) (arg1 list-control)) (let ((s5-0 (-> arg1 the-node)) - (v1-0 arg0) - ) + (v1-0 arg0)) (cond ((zero? v1-0) (let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s4-0 (-> s3-0 base)) - ) + (s4-0 (-> s3-0 base))) (let ((s2-0 draw-string-xy)) - (format - (clear *temp-string*) - "~S~S~S" - (if (= (-> arg1 the-index) (-> arg1 highlight-index)) - ">" - " " - ) - (if (logtest? (-> (the-as anim-test-obj s5-0) flags) 1) - "*" - " " - ) - (-> (the-as anim-test-obj s5-0) privname) - ) - (s2-0 - *temp-string* - s3-0 - (-> arg1 xpos) - (-> arg1 ypos) - (if (= (-> arg1 the-index) (-> arg1 current-index)) - (font-color menu-flag-on) - (font-color menu) - ) - (font-flags shadow kerning) - ) - ) + (format (clear *temp-string*) + "~S~S~S" + (if (= (-> arg1 the-index) (-> arg1 highlight-index)) ">" " ") + (if (logtest? (-> (the-as anim-test-obj s5-0) flags) 1) "*" " ") + (-> (the-as anim-test-obj s5-0) privname)) + (s2-0 *temp-string* + s3-0 + (-> arg1 xpos) + (-> arg1 ypos) + (if (= (-> arg1 the-index) (-> arg1 current-index)) (font-color menu-flag-on) (font-color menu)) + (font-flags shadow kerning))) (let ((a3-2 (-> s3-0 base))) (let ((v1-8 (the-as object (-> s3-0 base)))) (set! (-> (the-as dma-packet v1-8) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-8) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-8) vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-8) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s4-0 - (the-as (pointer dma-tag) a3-2) - ) - ) - ) - ) - ((= v1-0 1) - (return #t) - ) + (set! (-> s3-0 base) (&+ (the-as pointer v1-8) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s4-0 + (the-as (pointer dma-tag) a3-2))))) + ((= v1-0 1) (return #t)) ((= v1-0 4) (cond - ((cpad-pressed? 0 up) - (if (> (-> arg1 highlight-index) 0) - (+! (-> arg1 highlight-index) -1) - ) - ) + ((cpad-pressed? 0 up) (if (> (-> arg1 highlight-index) 0) (+! (-> arg1 highlight-index) -1))) ((cpad-pressed? 0 down) - (if (< (-> arg1 highlight-index) (glst-num-elements (-> arg1 list))) - (+! (-> arg1 highlight-index) 1) - ) - ) + (if (< (-> arg1 highlight-index) (glst-num-elements (-> arg1 list))) (+! (-> arg1 highlight-index) 1))) ((cpad-pressed? 0 x) (let ((v1-38 (the-as object (-> arg1 list-owner)))) (set! (-> arg1 current-index) (-> arg1 the-index)) - (set! (-> (the-as anim-tester v1-38) current-obj) (-> (the-as anim-test-obj s5-0) privname)) - ) - (send-event (ppointer->process *anim-tester*) 'reset #f) - ) + (set! (-> (the-as anim-tester v1-38) current-obj) (-> (the-as anim-test-obj s5-0) privname))) + (send-event (ppointer->process *anim-tester*) 'reset #f)) ((cpad-pressed? 0 square) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square)) (set! (-> *debug-menu-context* is-hidden) #f) (set! (-> *anim-tester* 0 edit-mode) 0) (set! *camera-read-buttons* #t) - (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2)) - ) - ) - ) + (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2))))) ((= v1-0 2) (let ((v1-64 (+ (length (-> (the-as anim-test-obj s5-0) privname)) 2))) - (set! v1-64 (cond - ((< (-> *ANIM_TESTER-bank* OBJECT_LIST_MIN_WIDTH) v1-64) - (empty) - v1-64 - ) - (else - (-> *ANIM_TESTER-bank* OBJECT_LIST_MIN_WIDTH) - ) - ) - ) - (set! (-> arg1 return-int) v1-64) - ) - ) + (set! v1-64 + (cond + ((< (-> *ANIM_TESTER-bank* OBJECT_LIST_MIN_WIDTH) v1-64) (empty) v1-64) + (else (-> *ANIM_TESTER-bank* OBJECT_LIST_MIN_WIDTH)))) + (set! (-> arg1 return-int) v1-64))) ((= v1-0 3) (let* ((s4-1 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s5-2 (-> s4-1 base)) - ) - (draw-string-xy - "----pick-object---" - s4-1 - (-> arg1 xpos) - (-> arg1 ypos) - (font-color menu) - (font-flags shadow kerning) - ) + (s5-2 (-> s4-1 base))) + (draw-string-xy "----pick-object---" s4-1 (-> arg1 xpos) (-> arg1 ypos) (font-color menu) (font-flags shadow kerning)) (let ((a3-4 (-> s4-1 base))) (let ((v1-70 (the-as object (-> s4-1 base)))) (set! (-> (the-as dma-packet v1-70) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-70) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-70) vif1) (new 'static 'vif-tag)) - (set! (-> s4-1 base) (&+ (the-as pointer v1-70) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s5-2 - (the-as (pointer dma-tag) a3-4) - ) - ) - ) - ) - ) - ) - #f - ) + (set! (-> s4-1 base) (&+ (the-as pointer v1-70) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s5-2 + (the-as (pointer dma-tag) a3-4))))))) + #f) (defun anim-test-anim-list-handler ((arg0 int) (arg1 list-control)) (let* ((s5-0 (the-as anim-test-obj (-> arg1 the-node))) - (v1-0 (the-as object (-> s5-0 list-con user-info-u))) - ) + (v1-0 (the-as object (-> s5-0 list-con user-info-u)))) (cond ((zero? arg0) (let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s4-0 (-> s3-0 base)) - ) + (s4-0 (-> s3-0 base))) (let ((s2-0 draw-string-xy)) - (format - (clear *temp-string*) - "~S~S" - (if (= (-> arg1 the-index) (-> arg1 highlight-index)) - "> " - " " - ) - (-> s5-0 privname) - ) - (s2-0 - *temp-string* - s3-0 - (-> arg1 xpos) - (-> arg1 ypos) - (if (= (-> arg1 the-index) (-> arg1 current-index)) - (font-color menu-flag-on) - (font-color menu) - ) - (font-flags shadow kerning) - ) - ) + (format (clear *temp-string*) + "~S~S" + (if (= (-> arg1 the-index) (-> arg1 highlight-index)) "> " " ") + (-> s5-0 privname)) + (s2-0 *temp-string* + s3-0 + (-> arg1 xpos) + (-> arg1 ypos) + (if (= (-> arg1 the-index) (-> arg1 current-index)) (font-color menu-flag-on) (font-color menu)) + (font-flags shadow kerning))) (let ((a3-2 (-> s3-0 base))) (let ((v1-6 (the-as object (-> s3-0 base)))) (set! (-> (the-as dma-packet v1-6) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-6) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-6) vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-6) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s4-0 - (the-as (pointer dma-tag) a3-2) - ) - ) - ) - ) - ((= arg0 1) - (return (not (logtest? (-> s5-0 flags) 1))) - ) + (set! (-> s3-0 base) (&+ (the-as pointer v1-6) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s4-0 + (the-as (pointer dma-tag) a3-2))))) + ((= arg0 1) (return (not (logtest? (-> s5-0 flags) 1)))) ((= arg0 4) (cond ((cpad-pressed? 0 up) @@ -1064,20 +686,11 @@ (set! v1-17 (-> (the-as anim-test-obj v1-17) prev)) (let ((a0-23 (the-as anim-test-obj v1-17))) "is this node the start of the list. #t = start" - (if (not (-> a0-23 prev)) - (goto cfg-25) - ) - ) + (if (not (-> a0-23 prev)) (goto cfg-25))) (when (not (logtest? (-> (the-as anim-test-obj v1-17) flags) 1)) (set! (-> arg1 highlight-index) (glst-get-node-index (-> arg1 list) (the-as anim-test-obj v1-17))) - (goto cfg-25) - ) - ) - ) - ) - ) - (label cfg-25) - ) + (goto cfg-25)))))) + (label cfg-25)) ((cpad-pressed? 0 down) (let ((v1-21 (-> arg1 list))) "is the list empty, #t = empty" @@ -1088,145 +701,85 @@ (set! v1-23 (-> (the-as anim-test-obj v1-23) next)) (let ((a0-40 (the-as anim-test-obj v1-23))) "is this node the end of the list. #t = end" - (if (not (-> a0-40 next)) - (goto cfg-39) - ) - ) + (if (not (-> a0-40 next)) (goto cfg-39))) (when (not (logtest? (-> (the-as anim-test-obj v1-23) flags) 1)) (set! (-> arg1 highlight-index) (glst-get-node-index (-> arg1 list) (the-as anim-test-obj v1-23))) - (goto cfg-39) - ) - ) - ) - ) - ) - (label cfg-39) - ) - ((= (-> arg1 user-info) 1) - ) + (goto cfg-39)))))) + (label cfg-39)) + ((= (-> arg1 user-info) 1)) (else - (cond - ((cpad-pressed? 0 x) - (set! (-> arg1 current-index) (-> arg1 the-index)) - (set! (-> (the-as anim-test-obj v1-0) anim-index) (-> arg1 current-index)) - (set! (-> (the-as anim-test-obj v1-0) anim-hindex) (-> arg1 highlight-index)) - (logand! (-> (the-as anim-test-obj v1-0) flags) -3) - (send-event (ppointer->process *anim-tester*) 'change-anim #f) - ) - ((cpad-pressed? 0 square) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square)) - (set! (-> *debug-menu-context* is-hidden) #f) - (set! (-> *anim-tester* 0 edit-mode) 0) - (set! *camera-read-buttons* #t) - (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2)) - ) - ) - ) - ) - ) + (cond + ((cpad-pressed? 0 x) + (set! (-> arg1 current-index) (-> arg1 the-index)) + (set! (-> (the-as anim-test-obj v1-0) anim-index) (-> arg1 current-index)) + (set! (-> (the-as anim-test-obj v1-0) anim-hindex) (-> arg1 highlight-index)) + (logand! (-> (the-as anim-test-obj v1-0) flags) -3) + (send-event (ppointer->process *anim-tester*) 'change-anim #f)) + ((cpad-pressed? 0 square) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square)) + (set! (-> *debug-menu-context* is-hidden) #f) + (set! (-> *anim-tester* 0 edit-mode) 0) + (set! *camera-read-buttons* #t) + (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2))))))) ((= arg0 2) (let ((v1-55 (+ (length (-> s5-0 privname)) 2))) - (set! v1-55 (cond - ((< (-> *ANIM_TESTER-bank* ANIM_LIST_MIN_WIDTH) v1-55) - (empty) - v1-55 - ) - (else - (-> *ANIM_TESTER-bank* ANIM_LIST_MIN_WIDTH) - ) - ) - ) - (set! (-> arg1 return-int) v1-55) - ) - ) + (set! v1-55 + (cond + ((< (-> *ANIM_TESTER-bank* ANIM_LIST_MIN_WIDTH) v1-55) (empty) v1-55) + (else (-> *ANIM_TESTER-bank* ANIM_LIST_MIN_WIDTH)))) + (set! (-> arg1 return-int) v1-55))) ((= arg0 3) (let* ((s4-1 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s5-1 (-> s4-1 base)) - ) - (draw-string-xy - "----pick-joint-anim----" - s4-1 - (-> arg1 xpos) - (-> arg1 ypos) - (font-color menu) - (font-flags shadow kerning) - ) + (s5-1 (-> s4-1 base))) + (draw-string-xy "----pick-joint-anim----" + s4-1 + (-> arg1 xpos) + (-> arg1 ypos) + (font-color menu) + (font-flags shadow kerning)) (let ((a3-4 (-> s4-1 base))) (let ((v1-62 (the-as object (-> s4-1 base)))) (set! (-> (the-as dma-packet v1-62) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-62) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-62) vif1) (new 'static 'vif-tag)) - (set! (-> s4-1 base) (&+ (the-as pointer v1-62) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s5-1 - (the-as (pointer dma-tag) a3-4) - ) - ) - ) - ) - ) - ) - #f - ) + (set! (-> s4-1 base) (&+ (the-as pointer v1-62) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s5-1 + (the-as (pointer dma-tag) a3-4))))))) + #f) (defun anim-test-sequence-list-handler ((arg0 int) (arg1 list-control)) (let* ((s5-0 (the-as anim-test-sequence (-> arg1 the-node))) - (v1-0 (-> s5-0 parent)) - ) + (v1-0 (-> s5-0 parent))) (cond ((zero? arg0) (let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s4-0 (-> s3-0 base)) - ) + (s4-0 (-> s3-0 base))) (let ((s2-0 draw-string-xy)) - (format - (clear *temp-string*) - "~S~S~S" - (if (= (-> arg1 the-index) (-> arg1 highlight-index)) - ">" - " " - ) - (if (logtest? (-> s5-0 flags) 4) - "*" - " " - ) - (-> s5-0 privname) - ) - (s2-0 - *temp-string* - s3-0 - (-> arg1 xpos) - (-> arg1 ypos) - (if (= (-> arg1 the-index) (-> arg1 current-index)) - (font-color menu-flag-on) - (font-color menu) - ) - (font-flags shadow kerning) - ) - ) + (format (clear *temp-string*) + "~S~S~S" + (if (= (-> arg1 the-index) (-> arg1 highlight-index)) ">" " ") + (if (logtest? (-> s5-0 flags) 4) "*" " ") + (-> s5-0 privname)) + (s2-0 *temp-string* + s3-0 + (-> arg1 xpos) + (-> arg1 ypos) + (if (= (-> arg1 the-index) (-> arg1 current-index)) (font-color menu-flag-on) (font-color menu)) + (font-flags shadow kerning))) (let ((a3-2 (-> s3-0 base))) (let ((v1-8 (the-as object (-> s3-0 base)))) (set! (-> (the-as dma-packet v1-8) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-8) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-8) vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-8) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s4-0 - (the-as (pointer dma-tag) a3-2) - ) - ) - ) - ) - ((= arg0 1) - (return (logtest? (-> s5-0 flags) 1)) - ) + (set! (-> s3-0 base) (&+ (the-as pointer v1-8) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s4-0 + (the-as (pointer dma-tag) a3-2))))) + ((= arg0 1) (return (logtest? (-> s5-0 flags) 1))) ((= arg0 4) (cond ((cpad-pressed? 0 up) @@ -1239,20 +792,11 @@ (set! v1-19 (-> (the-as anim-test-sequence v1-19) prev)) (let ((a0-24 (the-as anim-test-sequence v1-19))) "is this node the start of the list. #t = start" - (if (not (-> a0-24 prev)) - (goto cfg-28) - ) - ) + (if (not (-> a0-24 prev)) (goto cfg-28))) (when (logtest? (-> (the-as anim-test-sequence v1-19) flags) 1) (set! (-> arg1 highlight-index) (glst-get-node-index (-> arg1 list) (the-as anim-test-sequence v1-19))) - (goto cfg-28) - ) - ) - ) - ) - ) - (label cfg-28) - ) + (goto cfg-28)))))) + (label cfg-28)) ((cpad-pressed? 0 down) (let ((v1-23 (-> arg1 list))) "is the list empty, #t = empty" @@ -1263,142 +807,83 @@ (set! v1-25 (-> (the-as anim-test-sequence v1-25) next)) (let ((a0-42 (the-as anim-test-sequence v1-25))) "is this node the end of the list. #t = end" - (if (not (-> a0-42 next)) - (goto cfg-42) - ) - ) + (if (not (-> a0-42 next)) (goto cfg-42))) (when (logtest? (-> (the-as anim-test-sequence v1-25) flags) 1) (set! (-> arg1 highlight-index) (glst-get-node-index (-> arg1 list) (the-as anim-test-sequence v1-25))) - (goto cfg-42) - ) - ) - ) - ) - ) - (label cfg-42) - ) + (goto cfg-42)))))) + (label cfg-42)) ((cpad-pressed? 0 x) (set! (-> arg1 current-index) (-> arg1 the-index)) (set! (-> v1-0 seq-index) (-> arg1 current-index)) (set! (-> v1-0 seq-hindex) (-> arg1 highlight-index)) (logior! (-> v1-0 flags) 2) (set! (-> *anim-tester* 0 edit-mode) 4) - (send-event (ppointer->process *anim-tester*) 'change-anim #f) - ) + (send-event (ppointer->process *anim-tester*) 'change-anim #f)) ((cpad-pressed? 0 square) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square)) (set! (-> *debug-menu-context* is-hidden) #f) (set! (-> *anim-tester* 0 edit-mode) 0) (set! *camera-read-buttons* #t) - (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2)) - ) - ) - ) + (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2))))) ((= arg0 2) (let ((v1-57 (+ (length (-> s5-0 privname)) 2))) - (set! v1-57 (cond - ((< (-> *ANIM_TESTER-bank* PICK_LIST_MIN_WIDTH) v1-57) - (empty) - v1-57 - ) - (else - (-> *ANIM_TESTER-bank* PICK_LIST_MIN_WIDTH) - ) - ) - ) - (set! (-> arg1 return-int) v1-57) - ) - ) + (set! v1-57 + (cond + ((< (-> *ANIM_TESTER-bank* PICK_LIST_MIN_WIDTH) v1-57) (empty) v1-57) + (else (-> *ANIM_TESTER-bank* PICK_LIST_MIN_WIDTH)))) + (set! (-> arg1 return-int) v1-57))) ((= arg0 3) (let* ((s4-1 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s5-1 (-> s4-1 base)) - ) - (draw-string-xy - "----pick-sequence---" - s4-1 - (-> arg1 xpos) - (-> arg1 ypos) - (font-color menu) - (font-flags shadow kerning) - ) + (s5-1 (-> s4-1 base))) + (draw-string-xy "----pick-sequence---" s4-1 (-> arg1 xpos) (-> arg1 ypos) (font-color menu) (font-flags shadow kerning)) (let ((a3-4 (-> s4-1 base))) (let ((v1-64 (the-as object (-> s4-1 base)))) (set! (-> (the-as dma-packet v1-64) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-64) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-64) vif1) (new 'static 'vif-tag)) - (set! (-> s4-1 base) (&+ (the-as pointer v1-64) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s5-1 - (the-as (pointer dma-tag) a3-4) - ) - ) - ) - ) - ) - ) - #f - ) - -(define anim-test-field-highlight-lw (new 'static 'inline-array list-field 12 - (new 'static 'list-field :left 2 :width 20) - (new 'static 'list-field :left 30 :width 4) - (new 'static 'list-field :left 35 :width 4) - (new 'static 'list-field :left 40 :width 3) - (new 'static 'list-field :left 44 :width 3) - (new 'static 'list-field :left 48 :width 1) - (new 'static 'list-field :left 49 :width 1) - (new 'static 'list-field :left 50 :width 1) - (new 'static 'list-field :left 51 :width 1) - (new 'static 'list-field :left 53 :width 1) - (new 'static 'list-field :left 54 :width 1) - (new 'static 'list-field :left 55 :width 1) - ) - ) + (set! (-> s4-1 base) (&+ (the-as pointer v1-64) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s5-1 + (the-as (pointer dma-tag) a3-4))))))) + #f) + +(define anim-test-field-highlight-lw + (new 'static + 'inline-array + list-field + 12 + (new 'static 'list-field :left 2 :width 20) + (new 'static 'list-field :left 30 :width 4) + (new 'static 'list-field :left 35 :width 4) + (new 'static 'list-field :left 40 :width 3) + (new 'static 'list-field :left 44 :width 3) + (new 'static 'list-field :left 48 :width 1) + (new 'static 'list-field :left 49 :width 1) + (new 'static 'list-field :left 50 :width 1) + (new 'static 'list-field :left 51 :width 1) + (new 'static 'list-field :left 53 :width 1) + (new 'static 'list-field :left 54 :width 1) + (new 'static 'list-field :left 55 :width 1))) (defun anim-tester-adjust-frame ((arg0 float) (arg1 float)) (cond ((cpad-hold? 0 down) (cond - ((= arg0 -2.0) - (set! arg0 (+ -1.0 arg1)) - ) - ((!= arg0 -1.0) - (set! arg0 (+ -1.0 arg0)) - (if (< arg0 0.0) - (set! arg0 (the-as float -1.0)) - ) - ) - ) - ) + ((= arg0 -2.0) (set! arg0 (+ -1.0 arg1))) + ((!= arg0 -1.0) (set! arg0 (+ -1.0 arg0)) (if (< arg0 0.0) (set! arg0 (the-as float -1.0)))))) ((cpad-hold? 0 up) (cond - ((= arg0 -1.0) - (set! arg0 (the-as float 0.0)) - ) - ((!= arg0 -2.0) - (set! arg0 (+ 1.0 arg0)) - (if (>= arg0 arg1) - (set! arg0 (the-as float -2.0)) - ) - ) - ) - ) - ) - (the-as float arg0) - ) + ((= arg0 -1.0) (set! arg0 (the-as float 0.0))) + ((!= arg0 -2.0) (set! arg0 (+ 1.0 arg0)) (if (>= arg0 arg1) (set! arg0 (the-as float -2.0))))))) + (the-as float arg0)) (defun anim-tester-pick-item-setup ((arg0 anim-test-seq-item) (arg1 anim-test-sequence)) (let ((gp-0 (-> arg1 parent))) (set! (-> *anim-tester* 0 pick-con listfunc) anim-test-anim-list-handler) (set! (-> *anim-tester* 0 pick-con left) - (+ (-> *ANIM_TESTER-bank* EDIT_LIST_X) - (* (-> *ANIM_TESTER-bank* EDIT_PICK_X) (-> *DISP_LIST-bank* CHAR_WIDTH)) - ) - ) + (+ (-> *ANIM_TESTER-bank* EDIT_LIST_X) (* (-> *ANIM_TESTER-bank* EDIT_PICK_X) (-> *DISP_LIST-bank* CHAR_WIDTH)))) (set! (-> *anim-tester* 0 pick-con top) (-> *ANIM_TESTER-bank* EDIT_LIST_Y)) (set! (-> *anim-tester* 0 pick-con list) (-> gp-0 seq-list)) (set! (-> *anim-tester* 0 pick-con list-owner) (the-as uint gp-0)) @@ -1406,31 +891,20 @@ (let ((v1-10 (-> gp-0 seq-list))) "return the start of the list" (let ((v1-11 (-> v1-10 head))) - (while (let ((a1-16 v1-11)) - "is this node the end of the list. #t = end" - (not (not (-> a1-16 next))) - ) + (while (let ((a1-16 v1-11)) "is this node the end of the list. #t = end" (not (not (-> a1-16 next)))) "return the next node in the list" - (set! v1-11 (-> v1-11 next)) - ) - ) - ) + (set! v1-11 (-> v1-11 next))))) (let ((a1-20 (glst-find-node-by-name (-> gp-0 seq-list) (-> arg0 privname)))) (when a1-20 (set! (-> *anim-tester* 0 pick-con highlight-index) (glst-get-node-index (-> gp-0 seq-list) a1-20)) - (set! (-> *anim-tester* 0 pick-con current-index) (-> *anim-tester* 0 pick-con highlight-index)) - ) - ) - ) + (set! (-> *anim-tester* 0 pick-con current-index) (-> *anim-tester* 0 pick-con highlight-index))))) (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) - (none) - ) + (none)) (defun anim-test-seq-mark-as-edited ((arg0 anim-test-sequence)) (logior! (-> arg0 parent flags) 1) (logior! (-> arg0 flags) 1) - (none) - ) + (none)) (defun anim-test-edit-seq-insert-item ((arg0 anim-test-seq-item) (arg1 anim-test-sequence)) (let ((s4-0 (new 'debug 'anim-test-seq-item 1 ""))) @@ -1438,227 +912,142 @@ (when (logtest? (-> s4-0 flags) 1) (logand! (-> s4-0 flags) -2) (logior! (-> s4-0 flags) 4) - (let ((v1-8 s4-0)) - (set! (-> v1-8 privname) "--blank--") - ) - ) - (glst-insert-before (-> arg1 item-list) arg0 s4-0) - ) + (let ((v1-8 s4-0)) (set! (-> v1-8 privname) "--blank--"))) + (glst-insert-before (-> arg1 item-list) arg0 s4-0)) (anim-test-seq-mark-as-edited arg1) (send-event (ppointer->process *anim-tester*) 'change-anim) - (none) - ) + (none)) (defun anim-test-edit-sequence-list-handler ((arg0 int) (arg1 list-control)) (local-vars (sv-192 (function string dma-buffer int int font-color font-flags float)) - (sv-208 (function _varargs_ object)) - ) + (sv-208 (function _varargs_ object))) (let ((gp-0 (-> arg1 the-node)) (s4-0 (the-as object (-> arg1 list-owner))) - (s2-0 (and (logtest? (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) - (zero? (-> *anim-tester* 0 item-field)) - ) - ) - ) + (s2-0 (and (logtest? (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) (zero? (-> *anim-tester* 0 item-field))))) (cond ((zero? arg0) - (let ((s3-0 (new - 'stack - 'font-context - *font-default-matrix* - (-> arg1 xpos) - (-> arg1 ypos) - (the-as float 0.0) - (if (= (-> arg1 the-index) (-> arg1 current-index)) - (font-color menu-flag-on) - (font-color menu) - ) - (font-flags shadow kerning) - ) - ) - ) + (let ((s3-0 (new 'stack + 'font-context + *font-default-matrix* + (-> arg1 xpos) + (-> arg1 ypos) + (the-as float 0.0) + (if (= (-> arg1 the-index) (-> arg1 current-index)) (font-color menu-flag-on) (font-color menu)) + (font-flags shadow kerning)))) (when (not s2-0) (when (= (-> arg1 the-index) (-> arg1 highlight-index)) (let* ((a1-2 (-> anim-test-field-highlight-lw (-> *anim-tester* 0 item-field) left)) (v1-24 (-> anim-test-field-highlight-lw (-> *anim-tester* 0 item-field) width)) (s0-0 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s1-0 (-> s0-0 base)) - ) - (draw-sprite2d-xy - s0-0 - (+ (* a1-2 (-> *DISP_LIST-bank* CHAR_WIDTH)) 2 (-> arg1 xpos)) - (+ (-> arg1 ypos) -1) - (+ (* v1-24 (-> *DISP_LIST-bank* CHAR_WIDTH)) 4) - (+ (-> *DISP_LIST-bank* TV_SPACING) 1) - (new 'static 'rgba :r #xc0 :g #xc0 :a #xff) - ) + (s1-0 (-> s0-0 base))) + (draw-sprite2d-xy s0-0 + (+ (* a1-2 (-> *DISP_LIST-bank* CHAR_WIDTH)) 2 (-> arg1 xpos)) + (+ (-> arg1 ypos) -1) + (+ (* v1-24 (-> *DISP_LIST-bank* CHAR_WIDTH)) 4) + (+ (-> *DISP_LIST-bank* TV_SPACING) 1) + (new 'static 'rgba :r #xc0 :g #xc0 :a #xff)) (let ((a3-4 (-> s0-0 base))) (let ((v1-29 (the-as object (-> s0-0 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! (-> s0-0 base) (&+ (the-as pointer v1-29) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s1-0 - (the-as (pointer dma-tag) a3-4) - ) - ) - ) - ) - ) + (set! (-> s0-0 base) (&+ (the-as pointer v1-29) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s1-0 + (the-as (pointer dma-tag) a3-4)))))) (let* ((s0-1 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s1-1 (-> s0-1 base)) - ) + (s1-1 (-> s0-1 base))) (set! sv-192 draw-string-xy) (set! sv-208 format) (let ((a0-18 (clear *temp-string*)) (a1-7 "~S~S~-27S") - (a2-11 (if (= (-> arg1 the-index) (-> arg1 highlight-index)) - ">" - " " - ) - ) - (a3-6 (if (= (-> arg1 the-index) (-> (the-as anim-test-sequence s4-0) playing-item)) - "*" - " " - ) - ) - (t0-2 (-> (the-as anim-test-seq-item gp-0) privname)) - ) - (sv-208 a0-18 a1-7 a2-11 a3-6 t0-2) - ) + (a2-11 (if (= (-> arg1 the-index) (-> arg1 highlight-index)) ">" " ")) + (a3-6 (if (= (-> arg1 the-index) (-> (the-as anim-test-sequence s4-0) playing-item)) "*" " ")) + (t0-2 (-> (the-as anim-test-seq-item gp-0) privname))) + (sv-208 a0-18 a1-7 a2-11 a3-6 t0-2)) (let ((a0-19 *temp-string*) (a1-8 s0-1) (a2-12 (-> arg1 xpos)) (a3-7 (-> arg1 ypos)) - (t0-4 (if (= (-> arg1 the-index) (-> arg1 current-index)) - 15 - 12 - ) - ) - (t1-2 3) - ) - (sv-192 a0-19 a1-8 a2-12 a3-7 (the-as font-color t0-4) (the-as font-flags t1-2)) - ) + (t0-4 (if (= (-> arg1 the-index) (-> arg1 current-index)) 15 12)) + (t1-2 3)) + (sv-192 a0-19 a1-8 a2-12 a3-7 (the-as font-color t0-4) (the-as font-flags t1-2))) (let ((a3-8 (-> s0-1 base))) (let ((v1-44 (the-as object (-> s0-1 base)))) (set! (-> (the-as dma-packet v1-44) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-44) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-44) vif1) (new 'static 'vif-tag)) - (set! (-> s0-1 base) (&+ (the-as pointer v1-44) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s1-1 - (the-as (pointer dma-tag) a3-8) - ) - ) - ) + (set! (-> s0-1 base) (&+ (the-as pointer v1-44) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s1-1 + (the-as (pointer dma-tag) a3-8)))) (when (not s2-0) (let* ((s2-2 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (s4-1 (the-as anim-test-sequence (-> s2-2 base))) - ) + (s4-1 (the-as anim-test-sequence (-> s2-2 base)))) (when (not (logtest? (-> (the-as anim-test-seq-item gp-0) flags) 1)) (let ((v1-57 s3-0) (a1-13 (+ (-> arg1 xpos) (* (-> *ANIM_TESTER-bank* EDIT_STATS_X) (-> *DISP_LIST-bank* CHAR_WIDTH)))) - (a0-29 (-> arg1 ypos)) - ) + (a0-29 (-> arg1 ypos))) (set! (-> v1-57 origin x) (the float a1-13)) - (set! (-> v1-57 origin y) (the float a0-29)) - ) + (set! (-> v1-57 origin y) (the float a0-29))) (cond ((and (< (-> (the-as anim-test-seq-item gp-0) speed) 0) (< -100 (-> (the-as anim-test-seq-item gp-0) speed))) (let ((s1-2 draw-string-adv)) (let ((s0-2 format) (a0-33 (clear *temp-string*)) (a1-14 "-0.~1d") - (v1-61 (abs (-> (the-as anim-test-seq-item gp-0) speed))) - ) - (s0-2 a0-33 a1-14 (/ (mod v1-61 100) 10)) - ) - (s1-2 *temp-string* s2-2 s3-0) - ) - ) + (v1-61 (abs (-> (the-as anim-test-seq-item gp-0) speed)))) + (s0-2 a0-33 a1-14 (/ (mod v1-61 100) 10))) + (s1-2 *temp-string* s2-2 s3-0))) (else - (let ((s1-3 draw-string-adv)) - (let ((s0-3 format) - (a0-36 (clear *temp-string*)) - (a1-16 "~2d.~1d") - (a2-21 (/ (-> (the-as anim-test-seq-item gp-0) speed) 100)) - (v1-64 (abs (-> (the-as anim-test-seq-item gp-0) speed))) - ) - (s0-3 a0-36 a1-16 a2-21 (/ (mod v1-64 100) 10)) - ) - (s1-3 *temp-string* s2-2 s3-0) - ) - ) - ) + (let ((s1-3 draw-string-adv)) + (let ((s0-3 format) + (a0-36 (clear *temp-string*)) + (a1-16 "~2d.~1d") + (a2-21 (/ (-> (the-as anim-test-seq-item gp-0) speed) 100)) + (v1-64 (abs (-> (the-as anim-test-seq-item gp-0) speed)))) + (s0-3 a0-36 a1-16 a2-21 (/ (mod v1-64 100) 10))) + (s1-3 *temp-string* s2-2 s3-0)))) (let ((s1-4 draw-string-adv)) (format (clear *temp-string*) " ~4d" (-> (the-as anim-test-seq-item gp-0) blend)) - (s1-4 *temp-string* s2-2 s3-0) - ) - (anim-tester-disp-frame-num - " " - (-> (the-as anim-test-seq-item gp-0) first-frame) - (-> (the-as anim-test-seq-item gp-0) artist-base) - s3-0 - ) - (anim-tester-disp-frame-num - " " - (-> (the-as anim-test-seq-item gp-0) last-frame) - (-> (the-as anim-test-seq-item gp-0) artist-base) - s3-0 - ) + (s1-4 *temp-string* s2-2 s3-0)) + (anim-tester-disp-frame-num " " + (-> (the-as anim-test-seq-item gp-0) first-frame) + (-> (the-as anim-test-seq-item gp-0) artist-base) + s3-0) + (anim-tester-disp-frame-num " " + (-> (the-as anim-test-seq-item gp-0) last-frame) + (-> (the-as anim-test-seq-item gp-0) artist-base) + s3-0) (let ((s1-5 draw-string-adv)) - (format - (clear *temp-string*) - " ~S~S~S~S" - (if (logtest? (-> (the-as anim-test-seq-item gp-0) flags) 2) - "B" - "-" - ) - "-" - "-" - "-" - ) - (s1-5 *temp-string* s2-2 s3-0) - ) - ) + (format (clear *temp-string*) + " ~S~S~S~S" + (if (logtest? (-> (the-as anim-test-seq-item gp-0) flags) 2) "B" "-") + "-" + "-" + "-") + (s1-5 *temp-string* s2-2 s3-0))) (let* ((a1-24 (-> anim-test-field-highlight-lw 9 left)) (v1-69 s3-0) (a1-26 (+ (-> arg1 xpos) (* a1-24 (-> *DISP_LIST-bank* CHAR_WIDTH)))) - (a0-47 (-> arg1 ypos)) - ) + (a0-47 (-> arg1 ypos))) (set! (-> v1-69 origin x) (the float a1-26)) - (set! (-> v1-69 origin y) (the float a0-47)) - ) + (set! (-> v1-69 origin y) (the float a0-47))) (draw-string-adv "MID" s2-2 s3-0) (let ((a3-15 (-> s2-2 base))) (let ((v1-70 (the-as object (-> s2-2 base)))) (set! (-> (the-as dma-packet v1-70) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-70) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-70) vif1) (new 'static 'vif-tag)) - (set! (-> s2-2 base) (&+ (the-as pointer v1-70) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - (the-as pointer s4-1) - (the-as (pointer dma-tag) a3-15) - ) - ) - ) - ) - ) - ) - ((= arg0 1) - (return #t) - ) + (set! (-> s2-2 base) (&+ (the-as pointer v1-70) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + (the-as pointer s4-1) + (the-as (pointer dma-tag) a3-15))))))) + ((= arg0 1) (return #t)) ((= arg0 4) (cond ((logtest? (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) @@ -1668,44 +1057,23 @@ (cond ((cpad-pressed? 0 x) (logclear! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) - (let ((v0-24 - (the-as - anim-test-obj - (glst-get-node-by-index (-> *anim-tester* 0 pick-con list) (-> *anim-tester* 0 pick-con highlight-index)) - ) - ) - ) - (when (and v0-24 (let ((v1-101 (&-> v0-24 obj-art-group))) - "is the list empty, #t = empty" - (not (= (-> v1-101 2) v1-101)) - ) - ) + (let ((v0-24 (the-as anim-test-obj + (glst-get-node-by-index (-> *anim-tester* 0 pick-con list) (-> *anim-tester* 0 pick-con highlight-index))))) + (when (and v0-24 (let ((v1-101 (&-> v0-24 obj-art-group))) "is the list empty, #t = empty" (not (= (-> v1-101 2) v1-101)))) (let ((v1-103 (&-> v0-24 obj-art-group))) "return the start of the list" (let ((a1-30 (-> v1-103 0))) - (anim-test-seq-item-copy! (the-as anim-test-seq-item gp-0) (the-as anim-test-seq-item a1-30)) - ) - ) - (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - ) - ) - ) - ((cpad-pressed? 0 square) - (logclear! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) - ) - ) - ) + (anim-test-seq-item-copy! (the-as anim-test-seq-item gp-0) (the-as anim-test-seq-item a1-30)))) + (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0))))) + ((cpad-pressed? 0 square) (logclear! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3))))) ((= v1-88 9) (cond - ((not (cpad-hold? 0 x)) - (logclear! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) - ) + ((not (cpad-hold? 0 x)) (logclear! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3))) ((cpad-pressed? 0 up) (let ((v1-124 (the-as anim-test-seq-item gp-0))) "return the previous node in the list" (let* ((s3-1 (-> v1-124 prev)) - (v1-125 s3-1) - ) + (v1-125 s3-1)) "is this node the start of the list. #t = start" (when (not (not (-> v1-125 prev))) (glst-remove (-> (the-as anim-test-sequence s4-0) item-list) (the-as anim-test-seq-item gp-0)) @@ -1713,17 +1081,12 @@ (+! (-> arg1 current-index) -1) (+! (-> arg1 highlight-index) -1) (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - (send-event (ppointer->process *anim-tester*) 'change-anim) - ) - ) - ) - ) + (send-event (ppointer->process *anim-tester*) 'change-anim))))) ((cpad-pressed? 0 down) (let ((v1-142 (the-as anim-test-seq-item gp-0))) "return the next node in the list" (let* ((s3-2 (the-as anim-test-seq-item (-> v1-142 next))) - (v1-143 s3-2) - ) + (v1-143 s3-2)) "is this node the end of the list. #t = end" (when (and (not (not (-> v1-143 next))) (not (logtest? (-> s3-2 flags) 1))) (glst-remove (-> (the-as anim-test-sequence s4-0) item-list) (the-as anim-test-seq-item gp-0)) @@ -1731,22 +1094,14 @@ (+! (-> arg1 current-index) 1) (+! (-> arg1 highlight-index) 1) (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - (send-event (ppointer->process *anim-tester*) 'change-anim) - ) - ) - ) - ) - ) - ) + (send-event (ppointer->process *anim-tester*) 'change-anim))))))) ((or (= v1-88 1) (= v1-88 2) (= v1-88 3) (= v1-88 4)) (cond - ((not (cpad-hold? 0 x)) - (logclear! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) - ) - ((begin (set! (-> arg1 current-index) (-> arg1 the-index)) (<= (-> *anim-tester* 0 inc-timer) 0)) - (if (> (-> *anim-tester* 0 inc-delay) 0) - (+! (-> *anim-tester* 0 inc-delay) -1) - ) + ((not (cpad-hold? 0 x)) (logclear! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3))) + ((begin + (set! (-> arg1 current-index) (-> arg1 the-index)) + (<= (-> *anim-tester* 0 inc-timer) 0)) + (if (> (-> *anim-tester* 0 inc-delay) 0) (+! (-> *anim-tester* 0 inc-delay) -1)) (set! (-> *anim-tester* 0 inc-timer) (-> *anim-tester* 0 inc-delay)) (case (-> *anim-tester* 0 item-field) ((1) @@ -1754,19 +1109,11 @@ ((cpad-hold? 0 down) (+! (-> (the-as anim-test-seq-item gp-0) speed) -10) (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - (if (< (-> (the-as anim-test-seq-item gp-0) speed) -300) - (set! (-> (the-as anim-test-seq-item gp-0) speed) -300) - ) - ) + (if (< (-> (the-as anim-test-seq-item gp-0) speed) -300) (set! (-> (the-as anim-test-seq-item gp-0) speed) -300))) ((cpad-hold? 0 up) (+! (-> (the-as anim-test-seq-item gp-0) speed) 10) (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - (if (< 1000 (-> (the-as anim-test-seq-item gp-0) speed)) - (set! (-> (the-as anim-test-seq-item gp-0) speed) 1000) - ) - ) - ) - ) + (if (< 1000 (-> (the-as anim-test-seq-item gp-0) speed)) (set! (-> (the-as anim-test-seq-item gp-0) speed) 1000))))) ((2) (cond ((cpad-hold? 0 down) @@ -1774,220 +1121,121 @@ (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) (when (< (-> (the-as anim-test-seq-item gp-0) blend) 0) (set! (-> (the-as anim-test-seq-item gp-0) blend) 0) - 0 - ) - ) + 0)) ((cpad-hold? 0 up) (+! (-> (the-as anim-test-seq-item gp-0) blend) 1) (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - (if (< 9999 (-> (the-as anim-test-seq-item gp-0) blend)) - (set! (-> (the-as anim-test-seq-item gp-0) blend) 9999) - ) - ) - ) - ) + (if (< 9999 (-> (the-as anim-test-seq-item gp-0) blend)) (set! (-> (the-as anim-test-seq-item gp-0) blend) 9999))))) ((3) (let ((f30-0 (-> (the-as anim-test-seq-item gp-0) first-frame))) - (set! (-> (the-as anim-test-seq-item gp-0) first-frame) (anim-tester-adjust-frame - (-> (the-as anim-test-seq-item gp-0) first-frame) - (-> (the-as anim-test-seq-item gp-0) num-frames) - ) - ) + (set! (-> (the-as anim-test-seq-item gp-0) first-frame) + (anim-tester-adjust-frame (-> (the-as anim-test-seq-item gp-0) first-frame) + (-> (the-as anim-test-seq-item gp-0) num-frames))) (if (!= f30-0 (-> (the-as anim-test-seq-item gp-0) first-frame)) - (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - ) - ) - ) + (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0))))) ((4) (let ((f30-1 (-> (the-as anim-test-seq-item gp-0) last-frame))) - (set! (-> (the-as anim-test-seq-item gp-0) last-frame) (anim-tester-adjust-frame - (-> (the-as anim-test-seq-item gp-0) last-frame) - (-> (the-as anim-test-seq-item gp-0) num-frames) - ) - ) + (set! (-> (the-as anim-test-seq-item gp-0) last-frame) + (anim-tester-adjust-frame (-> (the-as anim-test-seq-item gp-0) last-frame) + (-> (the-as anim-test-seq-item gp-0) num-frames))) (if (!= f30-1 (-> (the-as anim-test-seq-item gp-0) last-frame)) - (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - ) - ) - ) - ) - ) - (else - (+! (-> *anim-tester* 0 inc-timer) -1) - ) - ) + (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0))))))) + (else (+! (-> *anim-tester* 0 inc-timer) -1))) (when (or (cpad-pressed? 0 down) (cpad-pressed? 0 up)) (set! (-> *anim-tester* 0 inc-delay) (-> *DISP_LIST-bank* INC_DELAY)) (set! (-> *anim-tester* 0 inc-timer) 0) - 0 - ) - ) - ) - ) - ) + 0))))) (else - (cond - ((cpad-pressed? 0 up) - (if (> (-> arg1 highlight-index) 0) - (+! (-> arg1 highlight-index) -1) - ) - ) - ((cpad-pressed? 0 down) - (if (< (the-as int (the-as anim-test-seq-item (-> arg1 highlight-index))) (glst-num-elements (-> arg1 list))) - (+! (-> arg1 highlight-index) 1) - ) - ) - ((cpad-pressed? 0 left) - (+! (-> *anim-tester* 0 item-field) -1) - (if (< (-> *anim-tester* 0 item-field) 0) - (set! (-> *anim-tester* 0 item-field) 11) - ) - (if (= (-> *anim-tester* 0 item-field) 8) - (set! (-> *anim-tester* 0 item-field) 5) - ) - ) - ((cpad-pressed? 0 right) - (+! (-> *anim-tester* 0 item-field) 1) - (when (>= (-> *anim-tester* 0 item-field) 12) - (set! (-> *anim-tester* 0 item-field) 0) - 0 - ) - (if (= (-> *anim-tester* 0 item-field) 6) - (set! (-> *anim-tester* 0 item-field) 9) - ) - ) - ((cpad-pressed? 0 square) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square)) - (set! (-> *anim-tester* 0 edit-mode) 3) - (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2)) - ) - ((cpad-pressed? 0 x) - (cond - ((logtest? (-> (the-as anim-test-seq-item gp-0) flags) 1) - (let ((v1-318 (-> *anim-tester* 0 item-field))) - (if (= v1-318 10) - (anim-test-edit-seq-insert-item (the-as anim-test-seq-item gp-0) (the-as anim-test-sequence s4-0)) - ) - ) - ) - (else - (let ((v1-322 (-> *anim-tester* 0 item-field))) - (cond - ((zero? v1-322) - (anim-tester-pick-item-setup (the-as anim-test-seq-item gp-0) (the-as anim-test-sequence s4-0)) - ) - ((= v1-322 10) - (anim-test-edit-seq-insert-item (the-as anim-test-seq-item gp-0) (the-as anim-test-sequence s4-0)) - ) - ((= v1-322 11) - (when (not (logtest? (-> (the-as anim-test-seq-item gp-0) flags) 1)) - (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - (glst-remove (-> (the-as anim-test-sequence s4-0) item-list) (the-as anim-test-seq-item gp-0)) - ) - (send-event (ppointer->process *anim-tester*) 'change-anim) - ) - (else - (when (not (logtest? (-> (the-as anim-test-seq-item gp-0) flags) 4)) - (case (-> *anim-tester* 0 item-field) - ((5) - (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) - (let ((v1-331 (logxor (-> (the-as anim-test-seq-item gp-0) flags) 2))) - (set! (-> (the-as anim-test-seq-item gp-0) flags) v1-331) - v1-331 - ) - ) - ((6) - (the-as int #f) - ) - ((7) - (the-as int #f) - ) - ((8) - (the-as int #f) - ) - (else - (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) - (set! (-> *anim-tester* 0 inc-delay) (-> *DISP_LIST-bank* INC_DELAY)) - (set! (-> *anim-tester* 0 inc-timer) 0) - 0 - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ((= arg0 2) - (set! (-> arg1 return-int) (-> *ANIM_TESTER-bank* EDIT_LIST_MIN_WIDTH)) - ) + (cond + ((cpad-pressed? 0 up) (if (> (-> arg1 highlight-index) 0) (+! (-> arg1 highlight-index) -1))) + ((cpad-pressed? 0 down) + (if (< (the-as int (the-as anim-test-seq-item (-> arg1 highlight-index))) (glst-num-elements (-> arg1 list))) + (+! (-> arg1 highlight-index) 1))) + ((cpad-pressed? 0 left) + (+! (-> *anim-tester* 0 item-field) -1) + (if (< (-> *anim-tester* 0 item-field) 0) (set! (-> *anim-tester* 0 item-field) 11)) + (if (= (-> *anim-tester* 0 item-field) 8) (set! (-> *anim-tester* 0 item-field) 5))) + ((cpad-pressed? 0 right) + (+! (-> *anim-tester* 0 item-field) 1) + (when (>= (-> *anim-tester* 0 item-field) 12) + (set! (-> *anim-tester* 0 item-field) 0) + 0) + (if (= (-> *anim-tester* 0 item-field) 6) (set! (-> *anim-tester* 0 item-field) 9))) + ((cpad-pressed? 0 square) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square)) + (set! (-> *anim-tester* 0 edit-mode) 3) + (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2))) + ((cpad-pressed? 0 x) + (cond + ((logtest? (-> (the-as anim-test-seq-item gp-0) flags) 1) + (let ((v1-318 (-> *anim-tester* 0 item-field))) + (if (= v1-318 10) (anim-test-edit-seq-insert-item (the-as anim-test-seq-item gp-0) (the-as anim-test-sequence s4-0))))) + (else + (let ((v1-322 (-> *anim-tester* 0 item-field))) + (cond + ((zero? v1-322) (anim-tester-pick-item-setup (the-as anim-test-seq-item gp-0) (the-as anim-test-sequence s4-0))) + ((= v1-322 10) (anim-test-edit-seq-insert-item (the-as anim-test-seq-item gp-0) (the-as anim-test-sequence s4-0))) + ((= v1-322 11) + (when (not (logtest? (-> (the-as anim-test-seq-item gp-0) flags) 1)) + (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) + (glst-remove (-> (the-as anim-test-sequence s4-0) item-list) (the-as anim-test-seq-item gp-0))) + (send-event (ppointer->process *anim-tester*) 'change-anim)) + (else + (when (not (logtest? (-> (the-as anim-test-seq-item gp-0) flags) 4)) + (case (-> *anim-tester* 0 item-field) + ((5) + (anim-test-seq-mark-as-edited (the-as anim-test-sequence s4-0)) + (let ((v1-331 (logxor (-> (the-as anim-test-seq-item gp-0) flags) 2))) + (set! (-> (the-as anim-test-seq-item gp-0) flags) v1-331) + v1-331)) + ((6) (the-as int #f)) + ((7) (the-as int #f)) + ((8) (the-as int #f)) + (else + (logior! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt3)) + (set! (-> *anim-tester* 0 inc-delay) (-> *DISP_LIST-bank* INC_DELAY)) + (set! (-> *anim-tester* 0 inc-timer) 0) + 0))))))))))))) + ((= arg0 2) (set! (-> arg1 return-int) (-> *ANIM_TESTER-bank* EDIT_LIST_MIN_WIDTH))) ((= arg0 3) (let* ((s3-3 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (gp-2 (-> s3-3 base)) - ) + (gp-2 (-> s3-3 base))) (let ((s1-6 draw-string-xy)) (format (clear *temp-string*) "--Seq--(~-17S)--" (-> (the-as anim-test-sequence s4-0) privname)) - (s1-6 *temp-string* s3-3 (-> arg1 xpos) (-> arg1 ypos) (font-color menu) (font-flags shadow kerning)) - ) + (s1-6 *temp-string* s3-3 (-> arg1 xpos) (-> arg1 ypos) (font-color menu) (font-flags shadow kerning))) (let ((a3-17 (-> s3-3 base))) (let ((v1-355 (the-as object (-> s3-3 base)))) (set! (-> (the-as dma-packet v1-355) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-355) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-355) vif1) (new 'static 'vif-tag)) - (set! (-> s3-3 base) (&+ (the-as pointer v1-355) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-2 - (the-as (pointer dma-tag) a3-17) - ) - ) - ) + (set! (-> s3-3 base) (&+ (the-as pointer v1-355) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-2 + (the-as (pointer dma-tag) a3-17)))) (cond - (s2-0 - (display-list-control (-> *anim-tester* 0 pick-con)) - ) + (s2-0 (display-list-control (-> *anim-tester* 0 pick-con))) (else - (let* ((s4-2 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (gp-3 (-> s4-2 base)) - ) - (draw-string-xy - "-spd-blnd-1st-lst-flgs-mov-" - s4-2 - (+ (-> arg1 xpos) (* (-> *ANIM_TESTER-bank* EDIT_STATS_X) (-> *DISP_LIST-bank* CHAR_WIDTH))) - (-> arg1 ypos) - (font-color menu) - (font-flags shadow kerning) - ) - (let ((a3-21 (-> s4-2 base))) - (let ((v1-367 (the-as object (-> s4-2 base)))) - (set! (-> (the-as dma-packet v1-367) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-367) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-367) vif1) (new 'static 'vif-tag)) - (set! (-> s4-2 base) (&+ (the-as pointer v1-367) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-3 - (the-as (pointer dma-tag) a3-21) - ) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (let* ((s4-2 (-> *display* frames (-> *display* on-screen) frame debug-buf)) + (gp-3 (-> s4-2 base))) + (draw-string-xy "-spd-blnd-1st-lst-flgs-mov-" + s4-2 + (+ (-> arg1 xpos) (* (-> *ANIM_TESTER-bank* EDIT_STATS_X) (-> *DISP_LIST-bank* CHAR_WIDTH))) + (-> arg1 ypos) + (font-color menu) + (font-flags shadow kerning)) + (let ((a3-21 (-> s4-2 base))) + (let ((v1-367 (the-as object (-> s4-2 base)))) + (set! (-> (the-as dma-packet v1-367) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-367) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-367) vif1) (new 'static 'vif-tag)) + (set! (-> s4-2 base) (&+ (the-as pointer v1-367) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-3 + (the-as (pointer dma-tag) a3-21))))))))) + #f) (defbehavior anim-tester-interface anim-tester () (let ((v1-0 (-> self edit-mode))) @@ -1995,386 +1243,235 @@ ((zero? v1-0) (when (logtest? (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2)) (logclear! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt2)) - (set-master-mode 'menu) - ) - ) - ((= v1-0 1) - (display-list-control (-> self list-con)) - ) + (set-master-mode 'menu))) + ((= v1-0 1) (display-list-control (-> self list-con))) ((= v1-0 2) (let ((gp-0 (the-as anim-test-obj (glst-find-node-by-name (-> self obj-list) (-> self current-obj))))) (cond (gp-0 - (set! (-> gp-0 list-con listfunc) anim-test-anim-list-handler) - (set! (-> gp-0 list-con current-index) (-> gp-0 anim-index)) - (set! (-> gp-0 list-con highlight-index) (-> gp-0 anim-hindex)) - (display-list-control (-> gp-0 list-con)) - (set! (-> gp-0 anim-index) (-> gp-0 list-con current-index)) - (set! (-> gp-0 anim-hindex) (-> gp-0 list-con highlight-index)) - ) + (set! (-> gp-0 list-con listfunc) anim-test-anim-list-handler) + (set! (-> gp-0 list-con current-index) (-> gp-0 anim-index)) + (set! (-> gp-0 list-con highlight-index) (-> gp-0 anim-hindex)) + (display-list-control (-> gp-0 list-con)) + (set! (-> gp-0 anim-index) (-> gp-0 list-con current-index)) + (set! (-> gp-0 anim-hindex) (-> gp-0 list-con highlight-index))) (else - (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (gp-1 (-> s5-0 base)) - ) - (draw-string-xy - "ERROR: current object not found" - s5-0 - (-> *ANIM_TESTER-bank* ANIM_LIST_X) - (-> *ANIM_TESTER-bank* ANIM_LIST_Y) - (font-color menu-func-bad) - (font-flags shadow kerning) - ) - (let ((a3-1 (-> s5-0 base))) - (let ((v1-20 (the-as object (-> s5-0 base)))) - (set! (-> (the-as dma-packet v1-20) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-20) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-20) vif1) (new 'static 'vif-tag)) - (set! (-> s5-0 base) (&+ (the-as pointer v1-20) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-1 - (the-as (pointer dma-tag) a3-1) - ) - ) - ) - ) - ) - ) - ) + (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame debug-buf)) + (gp-1 (-> s5-0 base))) + (draw-string-xy "ERROR: current object not found" + s5-0 + (-> *ANIM_TESTER-bank* ANIM_LIST_X) + (-> *ANIM_TESTER-bank* ANIM_LIST_Y) + (font-color menu-func-bad) + (font-flags shadow kerning)) + (let ((a3-1 (-> s5-0 base))) + (let ((v1-20 (the-as object (-> s5-0 base)))) + (set! (-> (the-as dma-packet v1-20) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-20) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-20) vif1) (new 'static 'vif-tag)) + (set! (-> s5-0 base) (&+ (the-as pointer v1-20) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-1 + (the-as (pointer dma-tag) a3-1)))))))) ((= v1-0 3) (let ((gp-2 (the-as anim-test-obj (glst-find-node-by-name (-> self obj-list) (-> self current-obj))))) (cond (gp-2 - (set! (-> gp-2 list-con listfunc) anim-test-sequence-list-handler) - (set! (-> gp-2 list-con current-index) (-> gp-2 seq-index)) - (set! (-> gp-2 list-con highlight-index) (-> gp-2 seq-hindex)) - (display-list-control (-> gp-2 list-con)) - (set! (-> gp-2 seq-index) (-> gp-2 list-con current-index)) - (set! (-> gp-2 seq-hindex) (-> gp-2 list-con highlight-index)) - ) + (set! (-> gp-2 list-con listfunc) anim-test-sequence-list-handler) + (set! (-> gp-2 list-con current-index) (-> gp-2 seq-index)) + (set! (-> gp-2 list-con highlight-index) (-> gp-2 seq-hindex)) + (display-list-control (-> gp-2 list-con)) + (set! (-> gp-2 seq-index) (-> gp-2 list-con current-index)) + (set! (-> gp-2 seq-hindex) (-> gp-2 list-con highlight-index))) (else - (let* ((s5-1 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (gp-3 (-> s5-1 base)) - ) - (draw-string-xy - "ERROR: current object not found" - s5-1 - (-> *ANIM_TESTER-bank* ANIM_LIST_X) - (-> *ANIM_TESTER-bank* ANIM_LIST_Y) - (font-color menu-func-bad) - (font-flags shadow kerning) - ) - (let ((a3-3 (-> s5-1 base))) - (let ((v1-36 (the-as object (-> s5-1 base)))) - (set! (-> (the-as dma-packet v1-36) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-36) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-36) vif1) (new 'static 'vif-tag)) - (set! (-> s5-1 base) (&+ (the-as pointer v1-36) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-3 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - ) - ) - ) - ) + (let* ((s5-1 (-> *display* frames (-> *display* on-screen) frame debug-buf)) + (gp-3 (-> s5-1 base))) + (draw-string-xy "ERROR: current object not found" + s5-1 + (-> *ANIM_TESTER-bank* ANIM_LIST_X) + (-> *ANIM_TESTER-bank* ANIM_LIST_Y) + (font-color menu-func-bad) + (font-flags shadow kerning)) + (let ((a3-3 (-> s5-1 base))) + (let ((v1-36 (the-as object (-> s5-1 base)))) + (set! (-> (the-as dma-packet v1-36) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-36) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-36) vif1) (new 'static 'vif-tag)) + (set! (-> s5-1 base) (&+ (the-as pointer v1-36) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-3 + (the-as (pointer dma-tag) a3-3)))))))) ((= v1-0 4) (let ((v1-43 (the-as anim-test-obj (glst-find-node-by-name (-> self obj-list) (-> self current-obj))))) (cond (v1-43 - (let ((v1-44 - (the-as anim-test-sequence (glst-get-node-by-index (-> v1-43 seq-list) (-> v1-43 list-con current-index))) - ) - ) - (cond - (v1-44 - (display-list-control (-> v1-44 list-con)) - ) - (else - (let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (gp-4 (-> s5-2 base)) - ) - (draw-string-xy - "ERROR: current sequence not found" - s5-2 - (-> *ANIM_TESTER-bank* EDIT_LIST_X) - (-> *ANIM_TESTER-bank* EDIT_LIST_Y) - (font-color menu-func-bad) - (font-flags shadow kerning) - ) - (let ((a3-5 (-> s5-2 base))) - (let ((v1-51 (the-as object (-> s5-2 base)))) - (set! (-> (the-as dma-packet v1-51) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-51) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-51) vif1) (new 'static 'vif-tag)) - (set! (-> s5-2 base) (&+ (the-as pointer v1-51) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-4 - (the-as (pointer dma-tag) a3-5) - ) - ) - ) - ) - ) - ) - ) + (let ((v1-44 (the-as anim-test-sequence (glst-get-node-by-index (-> v1-43 seq-list) (-> v1-43 list-con current-index))))) + (cond + (v1-44 (display-list-control (-> v1-44 list-con))) + (else + (let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame debug-buf)) + (gp-4 (-> s5-2 base))) + (draw-string-xy "ERROR: current sequence not found" + s5-2 + (-> *ANIM_TESTER-bank* EDIT_LIST_X) + (-> *ANIM_TESTER-bank* EDIT_LIST_Y) + (font-color menu-func-bad) + (font-flags shadow kerning)) + (let ((a3-5 (-> s5-2 base))) + (let ((v1-51 (the-as object (-> s5-2 base)))) + (set! (-> (the-as dma-packet v1-51) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-51) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-51) vif1) (new 'static 'vif-tag)) + (set! (-> s5-2 base) (&+ (the-as pointer v1-51) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-4 + (the-as (pointer dma-tag) a3-5)))))))) (else - (let* ((s5-3 (-> *display* frames (-> *display* on-screen) frame debug-buf)) - (gp-5 (-> s5-3 base)) - ) - (draw-string-xy - "ERROR: current object not found" - s5-3 - (-> *ANIM_TESTER-bank* EDIT_LIST_X) - (-> *ANIM_TESTER-bank* EDIT_LIST_Y) - (font-color menu-func-bad) - (font-flags shadow kerning) - ) - (let ((a3-7 (-> s5-3 base))) - (let ((v1-62 (the-as object (-> s5-3 base)))) - (set! (-> (the-as dma-packet v1-62) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-62) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-62) vif1) (new 'static 'vif-tag)) - (set! (-> s5-3 base) (&+ (the-as pointer v1-62) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-5 - (the-as (pointer dma-tag) a3-7) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (let* ((s5-3 (-> *display* frames (-> *display* on-screen) frame debug-buf)) + (gp-5 (-> s5-3 base))) + (draw-string-xy "ERROR: current object not found" + s5-3 + (-> *ANIM_TESTER-bank* EDIT_LIST_X) + (-> *ANIM_TESTER-bank* EDIT_LIST_Y) + (font-color menu-func-bad) + (font-flags shadow kerning)) + (let ((a3-7 (-> s5-3 base))) + (let ((v1-62 (the-as object (-> s5-3 base)))) + (set! (-> (the-as dma-packet v1-62) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-62) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-62) vif1) (new 'static 'vif-tag)) + (set! (-> s5-3 base) (&+ (the-as pointer v1-62) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-5 + (the-as (pointer dma-tag) a3-7)))))))))) (set! (-> self old-mode) (-> self edit-mode)) - (none) - ) + (none)) (defun anim-tester-get-playing-item ((arg0 anim-test-sequence)) - (let ((v0-0 ((the-as (function glst-list int anim-test-seq-item) glst-get-node-by-index) - (-> arg0 item-list) - (-> arg0 playing-item) - ) - ) - ) + (let ((v0-0 ((the-as (function glst-list int anim-test-seq-item) glst-get-node-by-index) (-> arg0 item-list) (-> arg0 playing-item)))) (let ((s5-0 v0-0) - (s4-0 (-> arg0 playing-item)) - ) + (s4-0 (-> arg0 playing-item))) (when (logtest? (-> v0-0 flags) 5) (loop (+! s4-0 1) - (if (>= s4-0 (glst-num-elements (-> arg0 item-list))) - (set! s4-0 0) - ) - (set! v0-0 - ((the-as (function glst-list int anim-test-seq-item) glst-get-node-by-index) (-> arg0 item-list) s4-0) - ) + (if (>= s4-0 (glst-num-elements (-> arg0 item-list))) (set! s4-0 0)) + (set! v0-0 ((the-as (function glst-list int anim-test-seq-item) glst-get-node-by-index) (-> arg0 item-list) s4-0)) (when (or (= v0-0 s5-0) (not (logtest? (-> v0-0 flags) 5))) (set! (-> arg0 playing-item) s4-0) - (return v0-0) - ) - ) - ) - ) - v0-0 - ) - ) + (return v0-0))))) + v0-0)) (defstate anim-tester-process (anim-tester) :event anim-tester-standard-event-handler - :enter (behavior () - (logior! (-> self flags) (anim-tester-flags fanimt1)) - ) - :trans (behavior () - (if (and (not (logtest? (-> self flags) (anim-tester-flags fanimt1))) (= *master-mode* 'menu)) - (anim-tester-interface) - ) - (logclear! (-> self flags) (anim-tester-flags fanimt1)) - (when (!= *master-mode* 'menu) - (debug-print-channels (-> self skel) (the-as symbol *stdcon*)) - (add-debug-x - #t - (bucket-id debug-no-zbuf) - (-> self root trans) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - ) - ) - :code (behavior () - (local-vars (s4-0 glst-node) (s5-1 anim-test-seq-item) (gp-2 anim-test-sequence)) - (loop - (logclear! (-> self flags) (anim-tester-flags fanimt0)) - (let ((v1-2 (-> self obj-list))) - "is the list empty, #t = empty" - (cond - ((= (-> v1-2 tailpred) v1-2) - (format *stdcon* "anim-tester:no objects loaded~%") - (set! (-> self list-con current-index) 0) - (set! (-> self current-obj) "") - (suspend) - 0 - ) - ((begin - (set! s4-0 (glst-find-node-by-name (-> self obj-list) (-> self current-obj))) - (when (not s4-0) - (if (>= (-> self list-con current-index) (glst-num-elements (-> self obj-list))) - (set! (-> self list-con current-index) (+ (glst-num-elements (-> self obj-list)) -1)) - ) - (set! s4-0 (glst-get-node-by-index (-> self obj-list) (-> self list-con current-index))) - (set! (-> self current-obj) (-> (the-as anim-test-obj s4-0) privname)) - ) - (let ((v1-10 (the-as structure (-> (the-as anim-test-obj s4-0) seq-list)))) - "is the list empty, #t = empty" - (= (-> (the-as anim-test-obj v1-10) privname) (the-as glst-list v1-10)) - ) - ) - (format *stdcon* "anim-tester:no anims loaded~%") - (format *stdcon* "displaying without anim not yet implement~%") - (logclear! (-> self flags) (anim-tester-flags fanimt0)) - (suspend) - 0 - ) - ((begin - (if (>= (-> (the-as anim-test-obj s4-0) list-con current-index) - (glst-num-elements (-> (the-as anim-test-obj s4-0) seq-list)) - ) + :enter + (behavior () + (logior! (-> self flags) (anim-tester-flags fanimt1))) + :trans + (behavior () + (if (and (not (logtest? (-> self flags) (anim-tester-flags fanimt1))) (= *master-mode* 'menu)) (anim-tester-interface)) + (logclear! (-> self flags) (anim-tester-flags fanimt1)) + (when (!= *master-mode* 'menu) + (debug-print-channels (-> self skel) (the-as symbol *stdcon*)) + (add-debug-x #t (bucket-id debug-no-zbuf) (-> self root trans) (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)))) + :code + (behavior () + (local-vars (s4-0 glst-node) (s5-1 anim-test-seq-item) (gp-2 anim-test-sequence)) + (loop + (logclear! (-> self flags) (anim-tester-flags fanimt0)) + (let ((v1-2 (-> self obj-list))) + "is the list empty, #t = empty" + (cond + ((= (-> v1-2 tailpred) v1-2) + (format *stdcon* "anim-tester:no objects loaded~%") + (set! (-> self list-con current-index) 0) + (set! (-> self current-obj) "") + (suspend) + 0) + ((begin + (set! s4-0 (glst-find-node-by-name (-> self obj-list) (-> self current-obj))) + (when (not s4-0) + (if (>= (-> self list-con current-index) (glst-num-elements (-> self obj-list))) + (set! (-> self list-con current-index) (+ (glst-num-elements (-> self obj-list)) -1))) + (set! s4-0 (glst-get-node-by-index (-> self obj-list) (-> self list-con current-index))) + (set! (-> self current-obj) (-> (the-as anim-test-obj s4-0) privname))) + (let ((v1-10 (the-as structure (-> (the-as anim-test-obj s4-0) seq-list)))) + "is the list empty, #t = empty" + (= (-> (the-as anim-test-obj v1-10) privname) (the-as glst-list v1-10)))) + (format *stdcon* "anim-tester:no anims loaded~%") + (format *stdcon* "displaying without anim not yet implement~%") + (logclear! (-> self flags) (anim-tester-flags fanimt0)) + (suspend) + 0) + ((begin + (if (>= (-> (the-as anim-test-obj s4-0) list-con current-index) + (glst-num-elements (-> (the-as anim-test-obj s4-0) seq-list))) (set! (-> (the-as anim-test-obj s4-0) list-con current-index) - (+ (glst-num-elements (-> (the-as anim-test-obj s4-0) seq-list)) -1) - ) - ) - (set! gp-2 (the-as anim-test-sequence (glst-get-node-by-index - (-> (the-as anim-test-obj s4-0) seq-list) + (+ (glst-num-elements (-> (the-as anim-test-obj s4-0) seq-list)) -1))) + (set! gp-2 + (the-as anim-test-sequence + (glst-get-node-by-index (-> (the-as anim-test-obj s4-0) seq-list) (if (logtest? (-> (the-as anim-test-obj s4-0) flags) 2) - (-> (the-as anim-test-obj s4-0) seq-index) - (-> (the-as anim-test-obj s4-0) anim-index) - ) - ) - ) - ) - (let ((v1-18 (-> gp-2 item-list))) - "is the list empty, #t = empty" - (= (-> v1-18 tailpred) v1-18) - ) - ) - (format *stdcon* "anim-tester:no items in sequence ~A~%" (-> gp-2 privname)) - (format *stdcon* "displaying without anim not yet implement~%") - (suspend) - 0 - ) - ((begin - (when (>= (-> gp-2 playing-item) (glst-num-elements (-> gp-2 item-list))) - (set! (-> gp-2 playing-item) 0) - 0 - ) - (set! s5-1 (anim-tester-get-playing-item gp-2)) - s5-1 - ) - (let ((s4-1 (the-as - art-joint-anim - (lookup-art (-> (the-as anim-test-obj s4-0) obj-art-group) (-> s5-1 privname) art-joint-anim) - ) - ) - ) - (anim-tester-update-anim-info s5-1) - (cond - (s4-1 - (logior! (-> self flags) (anim-tester-flags fanimt0)) - (if (nonzero? (-> s5-1 blend)) - (ja-channel-push! 1 (the-as time-frame (the int (* (the float (-> s5-1 blend)) (-> self anim-gspeed))))) - (ja-channel-set! 1) - ) - (cond - ((= (-> self anim-first) -1.0) - (ja :group! s4-1 :num! min) - ) - ((= (-> self anim-first) -2.0) - (ja :group! s4-1 :num! max) - ) - (else - (ja :group! s4-1 :num! (identity (-> self anim-first))) - ) - ) - (when (nonzero? (-> s5-1 blend)) - (while (and (!= (-> self skel root-channel 0) (-> self skel channel)) (logtest? (-> s5-1 flags) 2)) - (when (logtest? (-> self flags) (anim-tester-flags fanimt5)) - (compute-alignment! (-> self align)) - (align! - (-> self align) - (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) - (the-as float 1.0) - (the-as float 1.0) - (the-as float 1.0) - ) - ) - (suspend) - ) - ) - (until (ja-done? 0) - (when (logtest? (-> self flags) (anim-tester-flags fanimt5)) - (compute-alignment! (-> self align)) - (align! - (-> self align) - (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) - (the-as float 1.0) - (the-as float 1.0) - (the-as float 1.0) - ) - ) - (suspend) - (anim-tester-update-anim-info s5-1) - (let ((v1-73 (= (-> self anim-last) -2.0))) - (cond - ((or v1-73 (>= (-> self anim-last) (-> self anim-first))) - (if (= (-> self anim-last) -2.0) - (ja :num! (seek! max (-> self anim-speed))) - (ja :num! (seek! (-> self anim-last) (-> self anim-speed))) - ) - ) - ((= (-> self anim-last) -1.0) - (ja :num! (seek! 0.0 (-> self anim-speed))) - ) - (else - (ja :num! (seek! (-> self anim-last) (-> self anim-speed))) - ) - ) - ) - ) - (+! (-> gp-2 playing-item) 1) - ) - (else - (format *stdcon* "anim ~A not found~%" (-> s5-1 privname)) - (suspend) - 0 - ) - ) - ) - ) - (else - (format *stdcon* "no anims~%") - (suspend) - 0 - ) - ) - ) - ) - ) - :post anim-tester-post - ) + (-> (the-as anim-test-obj s4-0) seq-index) + (-> (the-as anim-test-obj s4-0) anim-index))))) + (let ((v1-18 (-> gp-2 item-list))) "is the list empty, #t = empty" (= (-> v1-18 tailpred) v1-18))) + (format *stdcon* "anim-tester:no items in sequence ~A~%" (-> gp-2 privname)) + (format *stdcon* "displaying without anim not yet implement~%") + (suspend) + 0) + ((begin + (when (>= (-> gp-2 playing-item) (glst-num-elements (-> gp-2 item-list))) + (set! (-> gp-2 playing-item) 0) + 0) + (set! s5-1 (anim-tester-get-playing-item gp-2)) + s5-1) + (let ((s4-1 (the-as art-joint-anim (lookup-art (-> (the-as anim-test-obj s4-0) obj-art-group) (-> s5-1 privname) art-joint-anim)))) + (anim-tester-update-anim-info s5-1) + (cond + (s4-1 + (logior! (-> self flags) (anim-tester-flags fanimt0)) + (if (nonzero? (-> s5-1 blend)) + (ja-channel-push! 1 (the-as time-frame (the int (* (the float (-> s5-1 blend)) (-> self anim-gspeed))))) + (ja-channel-set! 1)) + (cond + ((= (-> self anim-first) -1.0) (ja :group! s4-1 :num! min)) + ((= (-> self anim-first) -2.0) (ja :group! s4-1 :num! max)) + (else (ja :group! s4-1 :num! (identity (-> self anim-first))))) + (when (nonzero? (-> s5-1 blend)) + (while (and (!= (-> self skel root-channel 0) (-> self skel channel)) (logtest? (-> s5-1 flags) 2)) + (when (logtest? (-> self flags) (anim-tester-flags fanimt5)) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) + (the-as float 1.0) + (the-as float 1.0) + (the-as float 1.0))) + (suspend))) + (until (ja-done? 0) + (when (logtest? (-> self flags) (anim-tester-flags fanimt5)) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) + (the-as float 1.0) + (the-as float 1.0) + (the-as float 1.0))) + (suspend) + (anim-tester-update-anim-info s5-1) + (let ((v1-73 (= (-> self anim-last) -2.0))) + (cond + ((or v1-73 (>= (-> self anim-last) (-> self anim-first))) + (if (= (-> self anim-last) -2.0) + (ja :num! (seek! max (-> self anim-speed))) + (ja :num! (seek! (-> self anim-last) (-> self anim-speed))))) + ((= (-> self anim-last) -1.0) (ja :num! (seek! 0.0 (-> self anim-speed)))) + (else (ja :num! (seek! (-> self anim-last) (-> self anim-speed))))))) + (+! (-> gp-2 playing-item) 1)) + (else (format *stdcon* "anim ~A not found~%" (-> s5-1 privname)) (suspend) 0)))) + (else (format *stdcon* "no anims~%") (suspend) 0))))) + :post anim-tester-post) (defbehavior initialize-anim-tester anim-tester () (glst-init-list! (-> self obj-list)) @@ -2397,172 +1494,101 @@ (set! (-> self event-hook) anim-tester-standard-event-handler) (anim-tester-reset) (go anim-tester-process) - (none) - ) + (none)) (defun anim-tester-string-get-frame!! ((arg0 list-field) (arg1 string)) (cond ((string-get-arg!! *temp-string* arg1) (cond - ((or (string= *temp-string* "max") (string= *temp-string* "MAX")) - (set! (-> arg0 left) -2) - ) - ((or (string= *temp-string* "min") (string= *temp-string* "MIN")) - (set! (-> arg0 left) -1) - ) - (else - (set! (-> arg0 left) (string->int *temp-string*)) - ) - ) - #t - ) - (else - #f - ) - ) - ) + ((or (string= *temp-string* "max") (string= *temp-string* "MAX")) (set! (-> arg0 left) -2)) + ((or (string= *temp-string* "min") (string= *temp-string* "MIN")) (set! (-> arg0 left) -1)) + (else (set! (-> arg0 left) (string->int *temp-string*)))) + #t) + (else #f))) (defun anim-tester-load-object-seqs ((arg0 anim-tester) (arg1 string)) - #f - ) + #f) (defun anim-tester-save-object-seqs ((arg0 anim-test-obj)) (let ((gp-0 format) (s4-0 0) (s3-0 "saving object ~s to ~s~%") - (s2-0 (-> arg0 privname)) - ) + (s2-0 (-> arg0 privname))) (format (clear *temp-string*) "data/~s.obinf" (-> arg0 privname)) - (gp-0 s4-0 s3-0 s2-0 *temp-string*) - ) + (gp-0 s4-0 s3-0 s2-0 *temp-string*)) ;; og:preserve-this hack - (let ((gp-2 (new 'stack 'file-stream (string-format "data/~s.obinf" (-> arg0 privname)) 'write))) - (format gp-2 "major-version 0~%") - (format gp-2 "minor-version 0~%") - (format gp-2 "Object \"~S\" ~d~%" (-> arg0 privname) 0) - (let ((v1-5 (-> arg0 seq-list))) - "return the start of the list" - (let ((s5-1 (-> v1-5 head))) - (while (let ((v1-30 (the-as anim-test-sequence s5-1))) - "is this node the end of the list. #t = end" - (not (not (-> v1-30 next))) - ) - (logand! (-> (the-as anim-test-sequence s5-1) flags) -5) - (format - gp-2 - " ~S \"~S\" ~d~%" - (if (logtest? (-> (the-as anim-test-sequence s5-1) flags) 1) - "Sequence" - "Anim" - ) - (-> (the-as anim-test-sequence s5-1) privname) - 0 - ) - (let ((v1-11 (-> (the-as anim-test-sequence s5-1) item-list))) - "return the start of the list" - (let ((s4-2 (the-as anim-test-seq-item (-> v1-11 head)))) - (while (let ((v1-21 s4-2)) - "is this node the end of the list. #t = end" - (not (not (-> v1-21 next))) - ) - (when (not (logtest? (-> s4-2 flags) 5)) - (format gp-2 " Item \"~S\" ~d ~d " (-> s4-2 privname) (-> s4-2 speed) (-> s4-2 blend)) - (anim-tester-num-print gp-2 (-> s4-2 first-frame)) - (format gp-2 " ") - (anim-tester-num-print gp-2 (-> s4-2 last-frame)) - (format gp-2 " ~S~%" (if (logtest? (-> s4-2 flags) 2) - "B" - "-" - ) - ) - ) - "return the next node in the list" - (set! s4-2 (the-as anim-test-seq-item (-> s4-2 next))) - ) - ) - ) - (format gp-2 " ~S~%" (if (logtest? (-> (the-as anim-test-sequence s5-1) flags) 1) - "EndSequence" - "EndAnim" - ) - ) - "return the next node in the list" - (set! s5-1 (-> (the-as anim-test-sequence s5-1) next)) - ) - ) - ) - (format gp-2 "EndObject~%") - (file-stream-close gp-2) - ) - ) + (let ((gp-2 (new 'stack 'file-stream (string-format "data/~s.obinf" (-> arg0 privname)) 'write))) + (format gp-2 "major-version 0~%") + (format gp-2 "minor-version 0~%") + (format gp-2 "Object \"~S\" ~d~%" (-> arg0 privname) 0) + (let ((v1-5 (-> arg0 seq-list))) + "return the start of the list" + (let ((s5-1 (-> v1-5 head))) + (while (let ((v1-30 (the-as anim-test-sequence s5-1))) + "is this node the end of the list. #t = end" + (not (not (-> v1-30 next)))) + (logand! (-> (the-as anim-test-sequence s5-1) flags) -5) + (format gp-2 + " ~S \"~S\" ~d~%" + (if (logtest? (-> (the-as anim-test-sequence s5-1) flags) 1) "Sequence" "Anim") + (-> (the-as anim-test-sequence s5-1) privname) + 0) + (let ((v1-11 (-> (the-as anim-test-sequence s5-1) item-list))) + "return the start of the list" + (let ((s4-2 (the-as anim-test-seq-item (-> v1-11 head)))) + (while (let ((v1-21 s4-2)) "is this node the end of the list. #t = end" (not (not (-> v1-21 next)))) + (when (not (logtest? (-> s4-2 flags) 5)) + (format gp-2 " Item \"~S\" ~d ~d " (-> s4-2 privname) (-> s4-2 speed) (-> s4-2 blend)) + (anim-tester-num-print gp-2 (-> s4-2 first-frame)) + (format gp-2 " ") + (anim-tester-num-print gp-2 (-> s4-2 last-frame)) + (format gp-2 " ~S~%" (if (logtest? (-> s4-2 flags) 2) "B" "-"))) + "return the next node in the list" + (set! s4-2 (the-as anim-test-seq-item (-> s4-2 next)))))) + (format gp-2 " ~S~%" (if (logtest? (-> (the-as anim-test-sequence s5-1) flags) 1) "EndSequence" "EndAnim")) + "return the next node in the list" + (set! s5-1 (-> (the-as anim-test-sequence s5-1) next))))) + (format gp-2 "EndObject~%") + (file-stream-close gp-2))) (defun anim-tester-save-all-objects ((arg0 anim-tester)) (let ((v1-0 (-> arg0 obj-list))) "return the start of the list" (let ((gp-0 (-> v1-0 head))) - (while (let ((v1-9 (the-as anim-test-obj gp-0))) - "is this node the end of the list. #t = end" - (not (not (-> v1-9 next))) - ) + (while (let ((v1-9 (the-as anim-test-obj gp-0))) "is this node the end of the list. #t = end" (not (not (-> v1-9 next)))) (when (logtest? (-> (the-as anim-test-obj gp-0) flags) 1) (logand! (-> (the-as anim-test-obj gp-0) flags) -2) - (anim-tester-save-object-seqs (the-as anim-test-obj gp-0)) - ) + (anim-tester-save-object-seqs (the-as anim-test-obj gp-0))) "return the next node in the list" - (set! gp-0 (-> (the-as anim-test-obj gp-0) next)) - ) - ) - ) - #f - ) + (set! gp-0 (-> (the-as anim-test-obj gp-0) next))))) + #f) (defun anim-tester-add-newobj ((arg0 anim-tester) (arg1 string) (arg2 art-group)) (local-vars (sv-96 art-element) (sv-112 art-element) (sv-128 anim-test-obj)) (let ((s2-0 (the-as anim-test-obj #f)) - (s5-0 (the-as anim-test-obj #f)) - ) + (s5-0 (the-as anim-test-obj #f))) (let ((s1-0 (the-as art-element #f)) - (s0-0 (the-as structure #f)) - ) + (s0-0 (the-as structure #f))) (dotimes (s3-0 (-> arg2 length)) (cond ((and (= (-> arg2 data s3-0 type) merc-ctrl) (not s2-0)) (set! sv-96 (-> arg2 data s3-0)) (set! s0-0 (and s2-0 s0-0)) - (if s0-0 - (anim-test-obj-remove-invalid s2-0) - ) + (if s0-0 (anim-test-obj-remove-invalid s2-0)) (anim-tester-load-object-seqs arg0 (-> sv-96 name)) (set! s2-0 (the-as anim-test-obj (glst-find-node-by-name (-> arg0 obj-list) (-> sv-96 name)))) - (set! s0-0 (if s2-0 - #t - #f - ) - ) + (set! s0-0 (if s2-0 #t #f)) (cond - ((the-as symbol s0-0) - ) - (else - (set! s2-0 (new 'global 'anim-test-obj 1 (-> sv-96 name) arg2)) - (glst-add-tail (-> arg0 obj-list) s2-0) - ) - ) + ((the-as symbol s0-0)) + (else (set! s2-0 (new 'global 'anim-test-obj 1 (-> sv-96 name) arg2)) (glst-add-tail (-> arg0 obj-list) s2-0))) (anim-test-obj-init s2-0 (the-as list-control arg0)) (set! (-> s2-0 obj-art-group) arg2) (set! (-> s2-0 mesh-geo) (the-as merc-ctrl sv-96)) (set! (-> s2-0 joint-geo) (the-as art-joint-geo s1-0)) - (if (not s5-0) - (set! s5-0 s2-0) - ) - ) + (if (not s5-0) (set! s5-0 s2-0))) ((= (-> arg2 data s3-0 type) art-joint-geo) - (if (and s2-0 (not (-> s2-0 joint-geo))) - (set! (-> s2-0 joint-geo) (the-as art-joint-geo (-> arg2 data s3-0))) - ) - (if (not s1-0) - (set! s1-0 (-> arg2 data s3-0)) - ) - ) + (if (and s2-0 (not (-> s2-0 joint-geo))) (set! (-> s2-0 joint-geo) (the-as art-joint-geo (-> arg2 data s3-0)))) + (if (not s1-0) (set! s1-0 (-> arg2 data s3-0)))) ((= (-> arg2 data s3-0 type) art-joint-anim) (when s2-0 (set! sv-112 (-> arg2 data s3-0)) @@ -2572,9 +1598,7 @@ (glst-add-tail (-> s2-0 seq-list) sv-128) (anim-test-sequence-init (the-as anim-test-sequence sv-128) s2-0) (let ((a1-11 (new 'debug 'anim-test-seq-item 1 (-> sv-112 name)))) - (glst-add-tail (the-as glst-list (&-> sv-128 obj-art-group)) a1-11) - ) - ) + (glst-add-tail (the-as glst-list (&-> sv-128 obj-art-group)) a1-11))) (set! (-> sv-128 list-con user-info) (the-as int s2-0)) (set! (-> sv-128 flags) (logior (-> (the-as anim-test-sequence sv-128) flags) 2)) (let ((v1-48 (-> (the-as anim-test-sequence sv-128) item-list))) @@ -2583,190 +1607,98 @@ (let ((v1-51 (-> (the-as anim-test-sequence sv-128) item-list))) "return the start of the list" (let ((v1-52 (-> v1-51 head))) - (set! (-> (the-as anim-test-seq-item v1-52) num-frames) - (the float (-> (the-as art-joint-anim sv-112) data 0 length)) - ) + (set! (-> (the-as anim-test-seq-item v1-52) num-frames) (the float (-> (the-as art-joint-anim sv-112) data 0 length))) (set! (-> (the-as anim-test-seq-item v1-52) artist-base) (-> (the-as art-joint-anim sv-112) artist-base)) - (set! (-> (the-as anim-test-seq-item v1-52) parent) (the-as anim-test-sequence sv-128)) - ) - ) - sv-128 - ) - ) - ) - ) - (else - ) - ) - ) - ) - (if s2-0 - (anim-test-obj-remove-invalid s2-0) - ) + (set! (-> (the-as anim-test-seq-item v1-52) parent) (the-as anim-test-sequence sv-128)))) + sv-128)))) + (else)))) + (if s2-0 (anim-test-obj-remove-invalid s2-0)) (when s5-0 (set! (-> arg0 current-obj) (-> s5-0 privname)) - (set! (-> arg0 list-con current-index) (glst-get-node-index (-> arg0 obj-list) s5-0)) - ) - ) - (send-event arg0 'reset #f) - ) + (set! (-> arg0 list-con current-index) (glst-get-node-index (-> arg0 obj-list) s5-0)))) + (send-event arg0 'reset #f)) (defun anim-tester-stop () (when *anim-tester* (kill-by-name 'anim-tester *active-pool*) (set! *anim-tester* (the-as (pointer anim-tester) #f)) - #f - ) - ) + #f)) (defun anim-tester-start () (anim-tester-stop) (set! *anim-tester* (process-spawn anim-tester :init initialize-anim-tester :from *16k-dead-pool*)) (set! *camera-orbit-target* *anim-tester*) (send-event *camera* 'change-state cam-orbit 0) - #f - ) + #f) (defun anim-tester-add-object ((arg0 string)) (let ((s5-0 (load-to-heap-by-name (-> *level* level-default art-group) arg0 #t global 0))) (cond (s5-0 - (if (not *anim-tester*) - (anim-tester-start) - ) - (if *anim-tester* - (anim-tester-add-newobj (the-as anim-tester (ppointer->process *anim-tester*)) arg0 s5-0) - ) - ) - (else - (format 0 "ERROR:no object (~A)n" arg0) - ) - ) - ) - (none) - ) + (if (not *anim-tester*) (anim-tester-start)) + (if *anim-tester* (anim-tester-add-newobj (the-as anim-tester (ppointer->process *anim-tester*)) arg0 s5-0))) + (else (format 0 "ERROR:no object (~A)n" arg0)))) + (none)) (defun anim-tester-set-name ((arg0 string)) (cond - ((zero? (length arg0)) - (format #t "ERROR: no name~%") - ) - ((and *anim-tester* (let ((v1-6 (-> *anim-tester* 0 obj-list))) - "is the list empty, #t = empty" - (not (= (-> v1-6 tailpred) v1-6)) - ) - ) - (let ((s3-0 - (the-as anim-test-obj (glst-find-node-by-name (-> *anim-tester* 0 obj-list) (-> *anim-tester* 0 current-obj))) - ) - ) + ((zero? (length arg0)) (format #t "ERROR: no name~%")) + ((and *anim-tester* + (let ((v1-6 (-> *anim-tester* 0 obj-list))) "is the list empty, #t = empty" (not (= (-> v1-6 tailpred) v1-6)))) + (let ((s3-0 (the-as anim-test-obj (glst-find-node-by-name (-> *anim-tester* 0 obj-list) (-> *anim-tester* 0 current-obj))))) (cond (s3-0 - (let ((s5-0 - (the-as anim-test-sequence (glst-get-node-by-index (-> s3-0 seq-list) (-> s3-0 list-con current-index))) - ) - ) - (cond - (s5-0 - (cond - ((logtest? (-> s5-0 flags) 1) - (let ((s4-0 (the-as object (-> s5-0 privname)))) - (let ((v1-14 s5-0)) - (set! (-> v1-14 privname) "") - ) - (cond - ((glst-find-node-by-name (-> s3-0 seq-list) arg0) - (format #t "ERROR: another sequence is already using that name (~S)~%" arg0) - (set! (-> s5-0 privname) (the-as string s4-0)) - ) - (else - (set! s4-0 arg0) - (set! (-> s5-0 privname) (the-as string s4-0)) - ) - ) - s4-0 - ) - ) - (else - (format #t "ERROR: no sequence selected~%") - ) - ) - ) - (else - (format #t "ERROR: no sequence selected~%") - ) - ) - ) - ) - (else - (format #t "ERROR:no object selected~%") - ) - ) - ) - ) - (else - (format #t "ERROR:no object loaded~%") - ) - ) - ) + (let ((s5-0 (the-as anim-test-sequence (glst-get-node-by-index (-> s3-0 seq-list) (-> s3-0 list-con current-index))))) + (cond + (s5-0 + (cond + ((logtest? (-> s5-0 flags) 1) + (let ((s4-0 (the-as object (-> s5-0 privname)))) + (let ((v1-14 s5-0)) (set! (-> v1-14 privname) "")) + (cond + ((glst-find-node-by-name (-> s3-0 seq-list) arg0) + (format #t "ERROR: another sequence is already using that name (~S)~%" arg0) + (set! (-> s5-0 privname) (the-as string s4-0))) + (else (set! s4-0 arg0) (set! (-> s5-0 privname) (the-as string s4-0)))) + s4-0)) + (else (format #t "ERROR: no sequence selected~%")))) + (else (format #t "ERROR: no sequence selected~%"))))) + (else (format #t "ERROR:no object selected~%"))))) + (else (format #t "ERROR:no object loaded~%")))) (defun anim-tester-add-sequence ((arg0 string)) (cond - ((zero? (length arg0)) - (format #t "ERROR: no name~%") - ) - ((and *anim-tester* (let ((v1-6 (-> *anim-tester* 0 obj-list))) - "is the list empty, #t = empty" - (not (= (-> v1-6 tailpred) v1-6)) - ) - ) - (let ((s5-0 - (the-as anim-test-obj (glst-find-node-by-name (-> *anim-tester* 0 obj-list) (-> *anim-tester* 0 current-obj))) - ) - ) + ((zero? (length arg0)) (format #t "ERROR: no name~%")) + ((and *anim-tester* + (let ((v1-6 (-> *anim-tester* 0 obj-list))) "is the list empty, #t = empty" (not (= (-> v1-6 tailpred) v1-6)))) + (let ((s5-0 (the-as anim-test-obj (glst-find-node-by-name (-> *anim-tester* 0 obj-list) (-> *anim-tester* 0 current-obj))))) (cond (s5-0 - (let ((s4-0 (glst-find-node-by-name (-> s5-0 seq-list) arg0))) - (cond - (s4-0 - (format #t "ERROR: there is already a sequence with the name ~S~%" arg0) - (set! (-> s5-0 list-con current-index) (glst-get-node-index (-> s5-0 seq-list) s4-0)) - (send-event (ppointer->process *anim-tester*) 'edit-sequence) - ) - (else - (let ((gp-1 (new 'global 'anim-test-sequence 1 arg0))) - (glst-add-tail (-> s5-0 seq-list) gp-1) - (set! (-> gp-1 list-con listfunc) anim-test-edit-sequence-list-handler) - (set! (-> gp-1 list-con left) (-> *ANIM_TESTER-bank* EDIT_LIST_X)) - (set! (-> gp-1 list-con top) (-> *ANIM_TESTER-bank* EDIT_LIST_Y)) - (set! (-> gp-1 list-con list) (-> gp-1 item-list)) - (set! (-> gp-1 list-con list-owner) (the-as uint gp-1)) - (set! (-> gp-1 parent) s5-0) - (anim-test-seq-mark-as-edited gp-1) - (logior! (-> gp-1 flags) 1) - (set! (-> s5-0 list-con current-index) (glst-get-node-index (-> s5-0 seq-list) gp-1)) - (set! (-> s5-0 seq-index) (-> s5-0 list-con current-index)) - (set! (-> s5-0 seq-hindex) (-> s5-0 list-con current-index)) - (let ((s5-1 (new 'debug 'anim-test-seq-item 1 "**END**"))) - (logior! (-> s5-1 flags) 1) - (glst-add-tail (-> gp-1 item-list) s5-1) - (set! (-> s5-1 parent) gp-1) - ) - ) - (send-event (ppointer->process *anim-tester*) 'edit-sequence) - ) - ) - ) - ) - (else - (format #t "ERROR:no object selected~%") - ) - ) - ) - ) - (else - (format #t "ERROR:no object loaded~%") - ) - ) - (none) - ) + (let ((s4-0 (glst-find-node-by-name (-> s5-0 seq-list) arg0))) + (cond + (s4-0 + (format #t "ERROR: there is already a sequence with the name ~S~%" arg0) + (set! (-> s5-0 list-con current-index) (glst-get-node-index (-> s5-0 seq-list) s4-0)) + (send-event (ppointer->process *anim-tester*) 'edit-sequence)) + (else + (let ((gp-1 (new 'global 'anim-test-sequence 1 arg0))) + (glst-add-tail (-> s5-0 seq-list) gp-1) + (set! (-> gp-1 list-con listfunc) anim-test-edit-sequence-list-handler) + (set! (-> gp-1 list-con left) (-> *ANIM_TESTER-bank* EDIT_LIST_X)) + (set! (-> gp-1 list-con top) (-> *ANIM_TESTER-bank* EDIT_LIST_Y)) + (set! (-> gp-1 list-con list) (-> gp-1 item-list)) + (set! (-> gp-1 list-con list-owner) (the-as uint gp-1)) + (set! (-> gp-1 parent) s5-0) + (anim-test-seq-mark-as-edited gp-1) + (logior! (-> gp-1 flags) 1) + (set! (-> s5-0 list-con current-index) (glst-get-node-index (-> s5-0 seq-list) gp-1)) + (set! (-> s5-0 seq-index) (-> s5-0 list-con current-index)) + (set! (-> s5-0 seq-hindex) (-> s5-0 list-con current-index)) + (let ((s5-1 (new 'debug 'anim-test-seq-item 1 "**END**"))) + (logior! (-> s5-1 flags) 1) + (glst-add-tail (-> gp-1 item-list) s5-1) + (set! (-> s5-1 parent) gp-1))) + (send-event (ppointer->process *anim-tester*) 'edit-sequence))))) + (else (format #t "ERROR:no object selected~%"))))) + (else (format #t "ERROR:no object loaded~%"))) + (none)) diff --git a/goal_src/jak1/engine/debug/assert-h.gc b/goal_src/jak1/engine/debug/assert-h.gc index d3a2a17ea8..b13fdc2b73 100644 --- a/goal_src/jak1/engine/debug/assert-h.gc +++ b/goal_src/jak1/engine/debug/assert-h.gc @@ -1,37 +1,26 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: assert-h.gc -;; name in dgo: assert-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype __assert-info-private-struct (structure) - ((filename string) - (line-num uint16) - (column-num uint16) - ) + ((filename string) + (line-num uint16) + (column-num uint16)) (:methods - (set-pos (_type_ string uint uint) int) - (print-pos (_type_) int) - ) - ) - + (set-pos (_type_ string uint uint) int) + (print-pos (_type_) int))) (defmethod set-pos ((this __assert-info-private-struct) (filename string) (line-num uint) (column-num uint)) (set! (-> this filename) filename) (set! (-> this line-num) line-num) (set! (-> this column-num) column-num) - 0 - ) + 0) (defmethod print-pos ((this __assert-info-private-struct)) (format #t "file ~S.gc, line ~D, col ~D.~%" (-> this filename) (-> this line-num) (-> this column-num)) - 0 - ) + 0) (define *__private-assert-info* (new 'static '__assert-info-private-struct)) diff --git a/goal_src/jak1/engine/debug/assert.gc b/goal_src/jak1/engine/debug/assert.gc index ce1992f839..43c385948f 100644 --- a/goal_src/jak1/engine/debug/assert.gc +++ b/goal_src/jak1/engine/debug/assert.gc @@ -1,60 +1,49 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/debug/assert-h.gc") - -;; name: assert.gc -;; name in dgo: assert -;; dgos: GAME, ENGINE - - (define *run-time-assert-enable* #t) ;; TODO macros (defun __assert ((expr symbol) (msg string)) "Assert that expr is truthy, print assert information otherwise" - (when (not expr) (format #t "(ASSERT ~S) FAILED in " msg) - (print-pos *__private-assert-info*) - ) - 0 - ) + (print-pos *__private-assert-info*)) + 0) (defun __assert-min-max-range-float ((expr float) (minimum float) (maximum float) (msg-expr string) (msg-min string) (msg-max string)) "Assert that float expr is a larger value than minimum and smaller than maximum, print assert information otherwise" - (when (or (< expr minimum) (< maximum expr)) - (format #t "(ASSERT_MIN_MAX_RANGE_FLOAT ~S ~S ~S) FAILED (values ~F ~F ~F) in " - msg-expr msg-min msg-max - expr minimum maximum) - (print-pos *__private-assert-info*) - ) - 0 - ) + (format #t + "(ASSERT_MIN_MAX_RANGE_FLOAT ~S ~S ~S) FAILED (values ~F ~F ~F) in " + msg-expr + msg-min + msg-max + expr + minimum + maximum) + (print-pos *__private-assert-info*)) + 0) (defun __assert-min-max-range-int ((expr int) (minimum int) (maximum int) (msg-expr string) (msg-min string) (msg-max string)) "Assert that integer expr is a larger value than minimum and smaller than maximum, print assert information otherwise" - (when (or (< expr minimum) (< maximum expr)) - (format #t "(ASSERT_MIN_MAX_RANGE_INT ~S ~S ~S) FAILED (values ~D ~D ~D) in " - msg-expr msg-min msg-max - expr minimum maximum) - (print-pos *__private-assert-info*) - ) - 0 - ) + (format #t + "(ASSERT_MIN_MAX_RANGE_INT ~S ~S ~S) FAILED (values ~D ~D ~D) in " + msg-expr + msg-min + msg-max + expr + minimum + maximum) + (print-pos *__private-assert-info*)) + 0) (defun __assert-zero-lim-range-int ((expr int) (maximum int) (msg-expr string) (msg-max string)) "Assert that integer expr is a larger value than zero and smaller than maximum, print assert information otherwise" - (when (or (< expr 0) (>= expr max)) - (format #t "(ASSERT_ZERO_LIM_RANGE_INT ~S ~S) FAILED (values ~D ~D) in " - msg-expr msg-max - expr maximum) - (print-pos *__private-assert-info*) - ) - 0 - ) + (format #t "(ASSERT_ZERO_LIM_RANGE_INT ~S ~S) FAILED (values ~D ~D) in " msg-expr msg-max expr maximum) + (print-pos *__private-assert-info*)) + 0) diff --git a/goal_src/jak1/engine/debug/debug-h.gc b/goal_src/jak1/engine/debug/debug-h.gc index 54843f0b4b..a2ff784bea 100644 --- a/goal_src/jak1/engine/debug/debug-h.gc +++ b/goal_src/jak1/engine/debug/debug-h.gc @@ -1,18 +1,15 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: debug-h.gc -;; name in dgo: debug-h -;; dgos: GAME, ENGINE - ;; TODO - for anim-tester (define-extern *debug-menu-context* debug-menu-context) (define-extern add-debug-matrix (function symbol bucket-id matrix matrix)) + (define-extern add-debug-text-sphere (function symbol bucket-id vector float string rgba symbol)) + ;; TODO - for trajectory.gc (define-extern add-debug-line (function symbol bucket-id vector vector rgba symbol rgba symbol)) @@ -22,26 +19,20 @@ ;; circular buffer of positions to draw. (deftype pos-history (structure) - ((points (inline-array vector)) - (num-points int32) - (h-first int32) - (h-last int32) - ) - ) + ((points (inline-array vector)) + (num-points int32) + (h-first int32) + (h-last int32))) ;; unused vertex type? (deftype debug-vertex (structure) - ((trans vector4w :inline) - (normal vector3h :inline) - (st vector2h :inline) - (color uint32) - ) - ) + ((trans vector4w :inline) + (normal vector3h :inline) + (st vector2h :inline) + (color uint32))) ;; buffer of debug vertices (unused?) (deftype debug-vertex-stats (basic) - ((length int32) - (pos-count int32) - (vertex debug-vertex 600 :inline) - ) - ) + ((length int32) + (pos-count int32) + (vertex debug-vertex 600 :inline))) diff --git a/goal_src/jak1/engine/debug/debug-sphere.gc b/goal_src/jak1/engine/debug/debug-sphere.gc index 13e0bc8685..25d6af3daf 100644 --- a/goal_src/jak1/engine/debug/debug-sphere.gc +++ b/goal_src/jak1/engine/debug/debug-sphere.gc @@ -1,65 +1,52 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/debug/debug-h.gc") (require "engine/math/math.gc") - -;; name: debug-sphere.gc -;; name in dgo: debug-sphere -;; dgos: GAME, ENGINE - (defconstant DEBUG_SPHERE_SEC_AMT (#if (user? dass) 5 10)) + (defconstant DEBUG_SPHERE_SEC_H DEBUG_SPHERE_SEC_AMT) + (defconstant DEBUG_SPHERE_SEC_W DEBUG_SPHERE_SEC_AMT) ;; DECOMP BEGINS (deftype debug-sphere-table (basic) - ((point vector 300 :inline) - ) - ) - + ((point vector 300 :inline))) (defun make-debug-sphere-table ((arg0 debug-sphere-table)) (local-vars (sv-80 int)) (let ((s5-0 (new-stack-vector0)) (f30-0 1.0) - (s4-0 0) - ) - (set-vector! s5-0 0.0 0.0 0.0 1.0) - (dotimes (s3-0 DEBUG_SPHERE_SEC_H) - (let ((f28-0 (* f30-0 (sin (* (degrees (/ 180 DEBUG_SPHERE_SEC_H)) (the float s3-0))))) - (f26-0 (* f30-0 (sin (* (degrees (/ 180 DEBUG_SPHERE_SEC_H)) (the float (+ s3-0 1)))))) - (s2-0 (new-stack-vector0)) - (s1-0 (new-stack-vector0)) - (s0-0 (new-stack-vector0)) - ) - (set! (-> s2-0 y) (+ (-> s5-0 y) (* (cos (* (degrees (/ 180 DEBUG_SPHERE_SEC_H)) (the float s3-0))) f30-0))) - (set! (-> s1-0 y) (-> s2-0 y)) - (set! (-> s0-0 y) (+ (-> s5-0 y) (* (cos (* (degrees (/ 180 DEBUG_SPHERE_SEC_H)) (the float (+ s3-0 1)))) f30-0))) - (set! sv-80 0) - (while (< sv-80 DEBUG_SPHERE_SEC_W) - (set! (-> s2-0 x) (+ (-> s5-0 x) (* (cos (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float sv-80))) f28-0))) - (set! (-> s2-0 z) (+ (-> s5-0 z) (* (sin (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float sv-80))) f28-0))) - (set! (-> s1-0 x) (+ (-> s5-0 x) (* (cos (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float (+ sv-80 1)))) f28-0))) - (set! (-> s1-0 z) (+ (-> s5-0 z) (* (sin (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float (+ sv-80 1)))) f28-0))) - (set! (-> s0-0 x) (+ (-> s5-0 x) (* (cos (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float sv-80))) f26-0))) - (set! (-> s0-0 z) (+ (-> s5-0 z) (* (sin (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float sv-80))) f26-0))) - (set! (-> arg0 point s4-0 quad) (-> s2-0 quad)) - (set! (-> arg0 point (+ s4-0 1) quad) (-> s1-0 quad)) - (set! (-> arg0 point (+ s4-0 2) quad) (-> s0-0 quad)) - (+! s4-0 3) - (set! sv-80 (+ sv-80 1)) - ) - ) - ) - ) - (none) - ) + (s4-0 0)) + (set-vector! s5-0 0.0 0.0 0.0 1.0) + (dotimes (s3-0 DEBUG_SPHERE_SEC_H) + (let ((f28-0 (* f30-0 (sin (* (degrees (/ 180 DEBUG_SPHERE_SEC_H)) (the float s3-0))))) + (f26-0 (* f30-0 (sin (* (degrees (/ 180 DEBUG_SPHERE_SEC_H)) (the float (+ s3-0 1)))))) + (s2-0 (new-stack-vector0)) + (s1-0 (new-stack-vector0)) + (s0-0 (new-stack-vector0))) + (set! (-> s2-0 y) (+ (-> s5-0 y) (* (cos (* (degrees (/ 180 DEBUG_SPHERE_SEC_H)) (the float s3-0))) f30-0))) + (set! (-> s1-0 y) (-> s2-0 y)) + (set! (-> s0-0 y) (+ (-> s5-0 y) (* (cos (* (degrees (/ 180 DEBUG_SPHERE_SEC_H)) (the float (+ s3-0 1)))) f30-0))) + (set! sv-80 0) + (while (< sv-80 DEBUG_SPHERE_SEC_W) + (set! (-> s2-0 x) (+ (-> s5-0 x) (* (cos (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float sv-80))) f28-0))) + (set! (-> s2-0 z) (+ (-> s5-0 z) (* (sin (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float sv-80))) f28-0))) + (set! (-> s1-0 x) (+ (-> s5-0 x) (* (cos (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float (+ sv-80 1)))) f28-0))) + (set! (-> s1-0 z) (+ (-> s5-0 z) (* (sin (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float (+ sv-80 1)))) f28-0))) + (set! (-> s0-0 x) (+ (-> s5-0 x) (* (cos (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float sv-80))) f26-0))) + (set! (-> s0-0 z) (+ (-> s5-0 z) (* (sin (* (degrees (/ 360 DEBUG_SPHERE_SEC_W)) (the float sv-80))) f26-0))) + (set! (-> arg0 point s4-0 quad) (-> s2-0 quad)) + (set! (-> arg0 point (+ s4-0 1) quad) (-> s1-0 quad)) + (set! (-> arg0 point (+ s4-0 2) quad) (-> s0-0 quad)) + (+! s4-0 3) + (set! sv-80 (+ sv-80 1)))))) + (none)) (define *debug-sphere-table* (new 'static 'debug-sphere-table)) + (make-debug-sphere-table *debug-sphere-table*) (defun add-debug-sphere-from-table ((arg0 bucket-id) (arg1 vector) (arg2 float) (arg3 rgba)) @@ -68,13 +55,11 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (let ((s4-0 (new-stack-vector0)) (s3-0 (new-stack-vector0)) (s2-0 (new-stack-vector0)) - (points (-> *debug-sphere-table* point)) - ) + (points (-> *debug-sphere-table* point))) (.lvf vf1 (&-> arg1 quad)) (.mov vf2 arg2) (dotimes (s0-0 (* DEBUG_SPHERE_SEC_W DEBUG_SPHERE_SEC_H)) @@ -92,10 +77,6 @@ (.svf (&-> s3-0 quad) vf4) (.svf (&-> s2-0 quad) vf5) (add-debug-line #t arg0 s4-0 s3-0 arg3 #f (the-as rgba -1)) - (add-debug-line #t arg0 s4-0 s2-0 arg3 #f (the-as rgba -1)) - ) - ) + (add-debug-line #t arg0 s4-0 s2-0 arg3 #f (the-as rgba -1)))) 0 - (none) - ) - ) + (none))) diff --git a/goal_src/jak1/engine/debug/debug.gc b/goal_src/jak1/engine/debug/debug.gc index 93723b63df..aeb8d1d507 100644 --- a/goal_src/jak1/engine/debug/debug.gc +++ b/goal_src/jak1/engine/debug/debug.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/draw/drawable-group-h.gc") (require "engine/gfx/math-camera.gc") @@ -11,10 +10,6 @@ (require "engine/gfx/lights-h.gc") (require "engine/math/vector.gc") -;; name: debug.gc -;; name in dgo: debug -;; dgos: GAME, ENGINE - ;; This file contains functions for debug drawing. ;; In general, the 3d functions draw using the camera and the 2d functions draw in screen coordinated. ;; Most functions take a boolean as their first argument. If the boolean is set to #f, it will skip drawing the point. @@ -29,8 +24,7 @@ (with-vf (vf4 vf1 vf2 vf3 vf9 vf8 vf6) (rlet ((acc :class vf) (Q :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (.lvf vf5 (&-> in quad)) (.mul.w.vf acc vf4 vf5) (.add.mul.x.vf acc vf1 vf5 acc) @@ -44,12 +38,7 @@ (.min.x.vf vf5 vf5 vf6 :mask #b1000) (vftoi4.xyzw vf5 vf5) (.svf (&-> out quad) vf5) - out - ) - ) - ) - ) - + out)))) ;;;;;;;;;;;;;;;;;; ;; Debug Draw @@ -61,68 +50,41 @@ (defun-debug add-debug-point ((enable-draw symbol) (bucket bucket-id) (pt vector)) "Draw a point. The point is actually a pretty large square with some weird rgb gradient." - (if (not enable-draw) - (return #f) - ) + (if (not enable-draw) (return #f)) (let ((s5-0 (new 'stack 'vector4w-2))) ;; transform the input point and convert to fixed point (set! (-> pt w) 1.0) (when (transform-point-qword! (-> s5-0 vector 0) pt) - (with-dma-buffer-add-bucket ((v1-7 (-> (current-frame) debug-buf)) bucket) - (with-cnt-vif-block (v1-7) - (dma-buffer-add-gif-tag v1-7 - (new 'static 'gif-tag64 :nloop 1 :eop 1 :pre 1 :nreg 8 :prim (gif-prim tri-strip)) - (gs-reg-list rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2) - ) - - ;; upper point is red - (set! (-> s5-0 vector 1 x) 255) ;; r - (set! (-> s5-0 vector 1 y) 128) - (set! (-> s5-0 vector 1 z) 128) - (set! (-> s5-0 vector 1 w) 128) - (+! (-> s5-0 vector 0 y) 160) - (dma-buffer-add-uint128 v1-7 - (-> s5-0 quad 1) - (-> s5-0 quad 0) - ) - - ;; left point is green - (+! (-> s5-0 vector 0 x) -256) - (+! (-> s5-0 vector 0 y) -160) - (set! (-> s5-0 vector 1 x) 128) - (set! (-> s5-0 vector 1 y) 255) ;; g - (dma-buffer-add-uint128 v1-7 - (-> s5-0 quad 1) - (-> s5-0 quad 0) - ) - - ;; right point is blue - (+! (-> s5-0 vector 0 x) 512) - (set! (-> s5-0 vector 1 y) 128) - (set! (-> s5-0 vector 1 z) 255) - (dma-buffer-add-uint128 v1-7 - (-> s5-0 quad 1) - (-> s5-0 quad 0) - ) - - ;; bottom point is red again - (+! (-> s5-0 vector 0 x) -256) - (+! (-> s5-0 vector 0 y) -160) - (set! (-> s5-0 vector 1 x) 255) - (set! (-> s5-0 vector 1 y) 128) - (dma-buffer-add-uint128 v1-7 - (-> s5-0 quad 1) - (-> s5-0 quad 0) - ) - ) - ) - ) - ) - #f - ) - + (dma-buffer-add-gif-tag v1-7 + (new 'static 'gif-tag64 :nloop 1 :eop 1 :pre 1 :nreg 8 :prim (gif-prim tri-strip)) + (gs-reg-list rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2)) + ;; upper point is red + (set! (-> s5-0 vector 1 x) 255) ;; r + (set! (-> s5-0 vector 1 y) 128) + (set! (-> s5-0 vector 1 z) 128) + (set! (-> s5-0 vector 1 w) 128) + (+! (-> s5-0 vector 0 y) 160) + (dma-buffer-add-uint128 v1-7 (-> s5-0 quad 1) (-> s5-0 quad 0)) + ;; left point is green + (+! (-> s5-0 vector 0 x) -256) + (+! (-> s5-0 vector 0 y) -160) + (set! (-> s5-0 vector 1 x) 128) + (set! (-> s5-0 vector 1 y) 255) ;; g + (dma-buffer-add-uint128 v1-7 (-> s5-0 quad 1) (-> s5-0 quad 0)) + ;; right point is blue + (+! (-> s5-0 vector 0 x) 512) + (set! (-> s5-0 vector 1 y) 128) + (set! (-> s5-0 vector 1 z) 255) + (dma-buffer-add-uint128 v1-7 (-> s5-0 quad 1) (-> s5-0 quad 0)) + ;; bottom point is red again + (+! (-> s5-0 vector 0 x) -256) + (+! (-> s5-0 vector 0 y) -160) + (set! (-> s5-0 vector 1 x) 255) + (set! (-> s5-0 vector 1 y) 128) + (dma-buffer-add-uint128 v1-7 (-> s5-0 quad 1) (-> s5-0 quad 0)))))) + #f) (defun-debug internal-draw-debug-line ((bucket bucket-id) (p0 vector) (p1 vector) (first-color rgba) (mode symbol) (second-color rgba)) "Draw a debug line from p0 to p1. Mode can be: @@ -131,160 +93,113 @@ " (let ((a0-4 (-> (current-frame) debug-buf))) (if (< (the-as uint (shr (+ (&- (-> a0-4 end) (the-as uint (-> a0-4 base))) 15) 4)) (the-as uint #x8000)) - (return (the-as pointer #f)) - ) - ) - (if (or (zero? (+ second-color (the-as uint 1))) - (= second-color (static-rgba #xff #xff #xff #xff)) - ) - (set! second-color first-color) - ) + (return (the-as pointer #f)))) + (if (or (zero? (+ second-color (the-as uint 1))) (= second-color (static-rgba #xff #xff #xff #xff))) + (set! second-color first-color)) (case mode - (('fade) - (set! second-color (new 'static 'rgba - :r (shr (-> second-color r) 1) - :g (shr (-> second-color g) 1) - :b (shr (-> second-color b) 1) - :a (-> second-color a) - )) - ) - ) + (('fade) + (set! second-color + (new 'static + 'rgba + :r + (shr (-> second-color r) 1) + :g + (shr (-> second-color g) 1) + :b + (shr (-> second-color b) 1) + :a (-> second-color a))))) (let ((s4-0 (new 'stack 'vector4w-2)) - (s1-0 (new 'stack 'vector4w-2)) - ) + (s1-0 (new 'stack 'vector4w-2))) (set! (-> p0 w) 1.0) (set! (-> p1 w) 1.0) - - (when (and (transform-point-qword! (-> s4-0 vector 0) p0) - (transform-point-qword! (-> s4-0 vector 1) p1) - ) + (when (and (transform-point-qword! (-> s4-0 vector 0) p0) (transform-point-qword! (-> s4-0 vector 1) p1)) (with-dma-buffer-add-bucket ((v1-28 (-> (current-frame) debug-buf)) bucket) (with-cnt-vif-block (v1-28) - (dma-buffer-add-gif-tag v1-28 (new 'static 'gif-tag64 :nloop 1 :eop 1 :pre 1 :nreg 4 - :prim (gif-prim line)) - (gs-reg-list rgbaq xyzf2 rgbaq xyzf2) - ) + (dma-buffer-add-gif-tag v1-28 + (new 'static 'gif-tag64 :nloop 1 :eop 1 :pre 1 :nreg 4 :prim (gif-prim line)) + (gs-reg-list rgbaq xyzf2 rgbaq xyzf2)) (case mode - (('fade-depth) - (let ((f0-3 (fminmax (* (1/ #xffffff) (the float (-> s4-0 vector 0 z))) 0.2 1.0))) - (set! (-> s1-0 vector 0 x) (the int (* (the float (-> first-color r)) f0-3))) - (set! (-> s1-0 vector 0 y) (the int (* (the float (-> first-color g)) f0-3))) - (set! (-> s1-0 vector 0 z) (the int (* (the float (-> first-color b)) f0-3))) - ) - (set! (-> s1-0 vector 0 w) (the-as int (-> first-color a))) - ) - (else - (set! (-> s1-0 vector 0 x) (the-as int (-> first-color r))) - (set! (-> s1-0 vector 0 y) (the-as int (-> first-color g))) - (set! (-> s1-0 vector 0 z) (the-as int (-> first-color b))) - (set! (-> s1-0 vector 0 w) (the-as int (-> first-color a))) - ) - ) + (('fade-depth) + (let ((f0-3 (fminmax (* (1/ #xffffff) (the float (-> s4-0 vector 0 z))) 0.2 1.0))) + (set! (-> s1-0 vector 0 x) (the int (* (the float (-> first-color r)) f0-3))) + (set! (-> s1-0 vector 0 y) (the int (* (the float (-> first-color g)) f0-3))) + (set! (-> s1-0 vector 0 z) (the int (* (the float (-> first-color b)) f0-3)))) + (set! (-> s1-0 vector 0 w) (the-as int (-> first-color a)))) + (else + (set! (-> s1-0 vector 0 x) (the-as int (-> first-color r))) + (set! (-> s1-0 vector 0 y) (the-as int (-> first-color g))) + (set! (-> s1-0 vector 0 z) (the-as int (-> first-color b))) + (set! (-> s1-0 vector 0 w) (the-as int (-> first-color a))))) (cond ((= mode 'fade-depth) (let ((f0-7 (fminmax (* (1/ #xffffff) (the float (-> s4-0 vector 1 z))) 0.2 1.0))) (set! (-> s1-0 vector 1 x) (the int (* (the float (-> second-color r)) f0-7))) (set! (-> s1-0 vector 1 y) (the int (* (the float (-> second-color g)) f0-7))) - (set! (-> s1-0 vector 1 z) (the int (* (the float (-> second-color b)) f0-7))) - ) - (set! (-> s1-0 vector 1 w) (the-as int (-> second-color a))) - ) + (set! (-> s1-0 vector 1 z) (the int (* (the float (-> second-color b)) f0-7)))) + (set! (-> s1-0 vector 1 w) (the-as int (-> second-color a)))) (else - (set! (-> s1-0 vector 1 x) (the-as int (-> second-color r))) - (set! (-> s1-0 vector 1 y) (the-as int (-> second-color g))) - (set! (-> s1-0 vector 1 z) (the-as int (-> second-color b))) - (set! (-> s1-0 vector 1 w) (the-as int (-> second-color a))) - ) - ) + (set! (-> s1-0 vector 1 x) (the-as int (-> second-color r))) + (set! (-> s1-0 vector 1 y) (the-as int (-> second-color g))) + (set! (-> s1-0 vector 1 z) (the-as int (-> second-color b))) + (set! (-> s1-0 vector 1 w) (the-as int (-> second-color a))))) (+! (-> s4-0 vector 0 z) -8192) (+! (-> s4-0 vector 1 z) -8192) - (dma-buffer-add-uint128 v1-28 (-> s1-0 quad 0) - (-> s4-0 quad 0) - (-> s1-0 quad 1) - (-> s4-0 quad 1) - ) - ) - ) - ) - ) - ) - + (dma-buffer-add-uint128 v1-28 (-> s1-0 quad 0) (-> s4-0 quad 0) (-> s1-0 quad 1) (-> s4-0 quad 1))))))) (defun-debug internal-draw-debug-text-3d ((bucket bucket-id) (str string) (location vector) (font-color-id font-color) (offset vector2h)) "Draw text at the given location (in 3D), with a 2D offset." (let ((s2-0 (new 'stack-no-clear 'vector4w))) (set! (-> s2-0 quad) (the-as uint128 0)) (when (transform-point-qword! (the-as vector4w s2-0) location) - (with-dma-buffer-add-bucket ((s3-0 (-> (current-frame) debug-buf)) bucket) - - (let ((a2-2 (new 'stack 'font-context *font-default-matrix* + (let ((a2-2 (new 'stack + 'font-context + *font-default-matrix* (+ (+ (-> offset x) -1792) (/ (-> s2-0 x) 16)) - (- (+ (+ (-> offset y) -8) (/ (-> s2-0 y) 16)) - (-> *video-parms* screen-miny) - ) + (- (+ (+ (-> offset y) -8) (/ (-> s2-0 y) 16)) (-> *video-parms* screen-miny)) 0.0 font-color-id - (font-flags shadow kerning) - ))) - (let ((v1-9 a2-2)) - (set! (-> v1-9 origin z) (the float (/ (-> s2-0 z) 16))) - ) - (draw-string str s3-0 a2-2) - ) - ) - ) - ) - ) + (font-flags shadow kerning)))) + (let ((v1-9 a2-2)) (set! (-> v1-9 origin z) (the float (/ (-> s2-0 z) 16)))) + (draw-string str s3-0 a2-2)))))) (defun-debug add-debug-outline-triangle ((enable symbol) (bucket bucket-id) (p0 vector) (p1 vector) (p2 vector) (color rgba)) "Draw outline of a triangle using lines." (when enable - (add-debug-line #t bucket p0 p1 color #f (the-as rgba -1)) - (add-debug-line #t bucket p1 p2 color #f (the-as rgba -1)) - (add-debug-line #t bucket p2 p0 color #f (the-as rgba -1)) - ) - #f - ) + (add-debug-line #t bucket p0 p1 color #f (the-as rgba -1)) + (add-debug-line #t bucket p1 p2 color #f (the-as rgba -1)) + (add-debug-line #t bucket p2 p0 color #f (the-as rgba -1))) + #f) (defun-debug add-debug-triangle-normal ((enable symbol) (bucket bucket-id) (p0 vector) (p1 vector) (p2 vector) (color rgba)) "Draw the normal of a triangle, with length of 1 meter." (when enable - (let ((s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (vector-3pt-cross! (new 'stack-no-clear 'vector) p0 p1 p2)) - ) - (vector-float/! s3-0 s3-0 (* (1/ METER_LENGTH) (vector-length s3-0))) - (vector+! s4-0 p0 p1) - (vector+! s4-0 s4-0 p2) - (vector-float/! s4-0 s4-0 3.0) - (vector+! s3-0 s3-0 s4-0) - (add-debug-line #t bucket s4-0 s3-0 color #f (the-as rgba -1)) - ) - ) - #f - ) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s3-0 (vector-3pt-cross! (new 'stack-no-clear 'vector) p0 p1 p2))) + (vector-float/! s3-0 s3-0 (* (1/ METER_LENGTH) (vector-length s3-0))) + (vector+! s4-0 p0 p1) + (vector+! s4-0 s4-0 p2) + (vector-float/! s4-0 s4-0 3.0) + (vector+! s3-0 s3-0 s4-0) + (add-debug-line #t bucket s4-0 s3-0 color #f (the-as rgba -1)))) + #f) (defun-debug add-debug-flat-triangle ((enable-draw symbol) (bucket bucket-id) (p0 vector) (p1 vector) (p2 vector) (color rgba)) "Draw a triangle with flat shading" - (if (not enable-draw) - (return #f) - ) + (if (not enable-draw) (return #f)) (let ((s5-0 (new 'stack 'vector4w-3)) - (s4-0 (new 'stack 'vector4w-3)) - ) + (s4-0 (new 'stack 'vector4w-3))) (set! (-> p0 w) 1.0) (set! (-> p1 w) 1.0) (set! (-> p2 w) 1.0) (when (and (transform-point-qword! (-> s5-0 vector 0) p0) (transform-point-qword! (-> s5-0 vector 1) p1) - (transform-point-qword! (-> s5-0 vector 2) p2) - ) + (transform-point-qword! (-> s5-0 vector 2) p2)) (with-dma-buffer-add-bucket ((v1-9 (-> (current-frame) debug-buf)) bucket) - (with-cnt-vif-block (v1-9) - (dma-buffer-add-gif-tag v1-9 (new 'static 'gif-tag64 :nloop 1 :eop 1 :pre 1 :nreg 6 :prim (gif-prim tri)) - (gs-reg-list rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2) - ) + (dma-buffer-add-gif-tag v1-9 + (new 'static 'gif-tag64 :nloop 1 :eop 1 :pre 1 :nreg 6 :prim (gif-prim tri)) + (gs-reg-list rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2)) (set! (-> s4-0 vector 0 x) (the-as int (-> color r))) (set! (-> s4-0 vector 0 y) (the-as int (-> color g))) (set! (-> s4-0 vector 0 z) (the-as int (-> color b))) @@ -292,20 +207,15 @@ (set! (-> s5-0 vector 0 z) (+ (-> s5-0 vector 0 z) -8192)) (set! (-> s5-0 vector 1 z) (+ (-> s5-0 vector 1 z) -8192)) (set! (-> s5-0 vector 2 z) (+ (-> s5-0 vector 2 z) -8192)) - (dma-buffer-add-uint128 v1-9 (-> s4-0 quad 0) - (-> s5-0 quad 0) ;; xyz 1 - (-> s4-0 quad 0) - (-> s5-0 quad 1) ;; xyz 2 - (-> s4-0 quad 0) - (-> s5-0 quad 2) ;; xyz 3 - ) - ) - ) - ) - ) - #f - ) - + (dma-buffer-add-uint128 v1-9 + (-> s4-0 quad 0) + (-> s5-0 quad 0) ;; xyz 1 + (-> s4-0 quad 0) + (-> s5-0 quad 1) ;; xyz 2 + (-> s4-0 quad 0) + (-> s5-0 quad 2) ;; xyz 3 + ))))) + #f) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Buffered debug draw @@ -315,147 +225,90 @@ ;; This is used when pausing - the actual calls to debug-draw-line won't happen, but ;; we won't clear the debug draw buffer so they will still be drawn. - (when *debug-segment* -(deftype debug-line (structure) - ((flags int32) - (bucket bucket-id) - (v1 vector :inline) - (v2 vector :inline) - (color rgba) - (mode symbol) - (color2 rgba) - ) - ) - - -(deftype debug-text-3d (structure) - ((flags int32) - (bucket bucket-id) - (pos vector :inline) - (color font-color) - (offset vector2h :inline) - (str string) - ) - ) - - -(deftype debug-tracking-thang (basic) - ((length int32) - (allocated-length int32) - ) - ) - -;; allocate debug draw buffers -(define *debug-lines* (the (inline-array debug-line) (malloc 'debug #x100000))) -(define *debug-lines-trk* (new 'debug 'debug-tracking-thang)) -(set! (-> *debug-lines-trk* allocated-length) 16384) -(define *debug-text-3ds* (the (inline-array debug-text-3d) (malloc 'debug #x6000))) -(define *debug-text-3d-trk* (new 'debug 'debug-tracking-thang)) -(set! (-> *debug-text-3d-trk* allocated-length) 512) - -(dotimes (i (-> *debug-text-3d-trk* allocated-length)) - (set! (-> *debug-text-3ds* i str) (new 'debug 'string 80 (the string #f))) - ) -) - + (deftype debug-line (structure) + ((flags int32) + (bucket bucket-id) + (v1 vector :inline) + (v2 vector :inline) + (color rgba) + (mode symbol) + (color2 rgba))) + (deftype debug-text-3d (structure) + ((flags int32) + (bucket bucket-id) + (pos vector :inline) + (color font-color) + (offset vector2h :inline) + (str string))) + (deftype debug-tracking-thang (basic) + ((length int32) + (allocated-length int32))) + ;; allocate debug draw buffers + (define *debug-lines* (the (inline-array debug-line) (malloc 'debug #x100000))) + (define *debug-lines-trk* (new 'debug 'debug-tracking-thang)) + (set! (-> *debug-lines-trk* allocated-length) 16384) + (define *debug-text-3ds* (the (inline-array debug-text-3d) (malloc 'debug #x6000))) + (define *debug-text-3d-trk* (new 'debug 'debug-tracking-thang)) + (set! (-> *debug-text-3d-trk* allocated-length) 512) + (dotimes (i (-> *debug-text-3d-trk* allocated-length)) + (set! (-> *debug-text-3ds* i str) (new 'debug 'string 80 (the string #f))))) (defun-debug get-debug-line () "Allocate a debug-line from the list." (cond - ((< (-> *debug-lines-trk* length) (-> *debug-lines-trk* allocated-length)) - (+! (-> *debug-lines-trk* length) 1) - (-> *debug-lines* (+ (-> *debug-lines-trk* length) -1)) - ) - (else - (the-as debug-line #f) - ) - ) - ) + ((< (-> *debug-lines-trk* length) (-> *debug-lines-trk* allocated-length)) + (+! (-> *debug-lines-trk* length) 1) + (-> *debug-lines* (+ (-> *debug-lines-trk* length) -1))) + (else (the-as debug-line #f)))) (defun-debug get-debug-text-3d () "Allocate a debug text 3d from the list." (cond - ((< (-> *debug-text-3d-trk* length) (-> *debug-text-3d-trk* allocated-length)) - (+! (-> *debug-text-3d-trk* length) 1) - (-> *debug-text-3ds* (+ (-> *debug-text-3d-trk* length) -1)) - ) - (else - (the-as debug-text-3d #f) - ) - ) - ) + ((< (-> *debug-text-3d-trk* length) (-> *debug-text-3d-trk* allocated-length)) + (+! (-> *debug-text-3d-trk* length) 1) + (-> *debug-text-3ds* (+ (-> *debug-text-3d-trk* length) -1))) + (else (the-as debug-text-3d #f)))) (defun-debug debug-reset-buffers () "Clear all allocated debug things" (set! (-> *debug-lines-trk* length) 0) (set! (-> *debug-text-3d-trk* length) 0) (set! *debug-draw-pauseable* #f) - #f - ) + #f) (defun-debug debug-draw-buffers () "Draw all debug lines and debug text." (dotimes (gp-0 (-> *debug-lines-trk* length)) - (let ((v1-1 (-> *debug-lines* gp-0))) - (internal-draw-debug-line - (-> v1-1 bucket) - (-> v1-1 v1) - (-> v1-1 v2) - (-> v1-1 color) - (-> v1-1 mode) - (-> v1-1 color2) - ) - ) - ) + (let ((v1-1 (-> *debug-lines* gp-0))) + (internal-draw-debug-line (-> v1-1 bucket) (-> v1-1 v1) (-> v1-1 v2) (-> v1-1 color) (-> v1-1 mode) (-> v1-1 color2)))) (dotimes (gp-1 (-> *debug-text-3d-trk* length)) - (let ((v1-8 (-> *debug-text-3ds* gp-1))) - (internal-draw-debug-text-3d - (-> v1-8 bucket) - (-> v1-8 str) - (-> v1-8 pos) - (-> v1-8 color) - (-> v1-8 offset) - ) - ) - ) - #f - ) + (let ((v1-8 (-> *debug-text-3ds* gp-1))) + (internal-draw-debug-text-3d (-> v1-8 bucket) (-> v1-8 str) (-> v1-8 pos) (-> v1-8 color) (-> v1-8 offset)))) + #f) (defun-debug add-debug-line ((enable-draw symbol) (bucket bucket-id) (p0 vector) (p1 vector) (color rgba) (mode symbol) (color2 rgba)) "Draw a debug line between p0 and p1, in 3D." (when enable-draw - (cond - (*debug-draw-pauseable* - (let ((v1-2 (get-debug-line))) - (when v1-2 - (set! (-> v1-2 bucket) bucket) - (set! (-> v1-2 v1 quad) (-> p0 quad)) - (set! (-> v1-2 v2 quad) (-> p1 quad)) - (set! (-> v1-2 color) color) - (set! (-> v1-2 color2) color2) - (set! (-> v1-2 mode) mode) - ) - ) - ) - (else - (internal-draw-debug-line bucket p0 p1 color mode color2) - ) - ) - ) - #f - ) + (cond + (*debug-draw-pauseable* + (let ((v1-2 (get-debug-line))) + (when v1-2 + (set! (-> v1-2 bucket) bucket) + (set! (-> v1-2 v1 quad) (-> p0 quad)) + (set! (-> v1-2 v2 quad) (-> p1 quad)) + (set! (-> v1-2 color) color) + (set! (-> v1-2 color2) color2) + (set! (-> v1-2 mode) mode)))) + (else (internal-draw-debug-line bucket p0 p1 color mode color2)))) + #f) (defun-debug add-debug-line2d ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 vector) (arg4 vector)) "Draw a line in screen coordinates" - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (with-dma-buffer-add-bucket ((s4-0 (-> (current-frame) debug-buf)) arg1) - (let ((s2-0 (new 'stack 'vector4w)) - (v1-7 (new 'stack 'vector4w)) - ) + (v1-7 (new 'stack 'vector4w))) (set! (-> s2-0 quad) (-> arg2 quad)) (set! (-> v1-7 quad) (-> arg3 quad)) (set! (-> s2-0 x) (* (+ (-> s2-0 x) 2048) 16)) @@ -464,89 +317,71 @@ (set! (-> v1-7 x) (* (+ (-> v1-7 x) 2048) 16)) (set! (-> v1-7 y) (* -16 (- 2048 (-> v1-7 y)))) (set! (-> v1-7 z) #x7fffff) - (with-cnt-vif-block (s4-0) - (dma-buffer-add-gif-tag s4-0 (new 'static 'gif-tag64 :nloop 1 :eop 1 :pre 1 :nreg 4 :prim (gif-prim line)) - (gs-reg-list rgbaq xyzf2 rgbaq xyzf2) - ) - (dma-buffer-add-uint128 s4-0 (-> arg4 quad) - (-> s2-0 quad) - ) - (dma-buffer-add-uint128 s4-0 (-> arg4 quad) - (-> v1-7 quad) - ) - ) - ) - ) - #f - ) + (dma-buffer-add-gif-tag s4-0 + (new 'static 'gif-tag64 :nloop 1 :eop 1 :pre 1 :nreg 4 :prim (gif-prim line)) + (gs-reg-list rgbaq xyzf2 rgbaq xyzf2)) + (dma-buffer-add-uint128 s4-0 (-> arg4 quad) (-> s2-0 quad)) + (dma-buffer-add-uint128 s4-0 (-> arg4 quad) (-> v1-7 quad))))) + #f) (defun-debug add-debug-box ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 vector) (arg4 rgba)) "Draw an axis-aligned box" (let ((s5-0 (new-stack-vector0))) - (set! (-> s5-0 quad) (-> arg2 quad)) - (let ((s1-0 (new-stack-vector0))) - (set! (-> s1-0 quad) (-> arg2 quad)) - (when arg0 - (set! (-> s1-0 x) (-> arg3 x)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s1-0 x) (-> arg2 x)) - (set! (-> s1-0 y) (-> arg3 y)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s1-0 y) (-> arg2 y)) - (set! (-> s1-0 z) (-> arg3 z)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s5-0 y) (-> arg3 y)) - (set! (-> s1-0 y) (-> arg3 y)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s1-0 z) (-> arg2 z)) - (set! (-> s1-0 x) (-> arg3 x)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s1-0 y) (-> arg2 y)) - (set! (-> s5-0 x) (-> arg3 x)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s5-0 quad) (-> arg3 quad)) - (set! (-> s1-0 quad) (-> arg3 quad)) - (set! (-> s1-0 x) (-> arg2 x)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s1-0 x) (-> arg3 x)) - (set! (-> s1-0 y) (-> arg2 y)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s1-0 y) (-> arg3 y)) - (set! (-> s1-0 z) (-> arg2 z)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s5-0 y) (-> arg2 y)) - (set! (-> s1-0 y) (-> arg2 y)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s1-0 z) (-> arg3 z)) - (set! (-> s1-0 x) (-> arg2 x)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - (set! (-> s1-0 y) (-> arg3 y)) - (set! (-> s5-0 x) (-> arg2 x)) - (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) - ) - ) - ) - #f - ) + (set! (-> s5-0 quad) (-> arg2 quad)) + (let ((s1-0 (new-stack-vector0))) + (set! (-> s1-0 quad) (-> arg2 quad)) + (when arg0 + (set! (-> s1-0 x) (-> arg3 x)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s1-0 x) (-> arg2 x)) + (set! (-> s1-0 y) (-> arg3 y)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s1-0 y) (-> arg2 y)) + (set! (-> s1-0 z) (-> arg3 z)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s5-0 y) (-> arg3 y)) + (set! (-> s1-0 y) (-> arg3 y)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s1-0 z) (-> arg2 z)) + (set! (-> s1-0 x) (-> arg3 x)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s1-0 y) (-> arg2 y)) + (set! (-> s5-0 x) (-> arg3 x)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s5-0 quad) (-> arg3 quad)) + (set! (-> s1-0 quad) (-> arg3 quad)) + (set! (-> s1-0 x) (-> arg2 x)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s1-0 x) (-> arg3 x)) + (set! (-> s1-0 y) (-> arg2 y)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s1-0 y) (-> arg3 y)) + (set! (-> s1-0 z) (-> arg2 z)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s5-0 y) (-> arg2 y)) + (set! (-> s1-0 y) (-> arg2 y)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s1-0 z) (-> arg3 z)) + (set! (-> s1-0 x) (-> arg2 x)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1)) + (set! (-> s1-0 y) (-> arg3 y)) + (set! (-> s5-0 x) (-> arg2 x)) + (add-debug-line #t arg1 s5-0 s1-0 arg4 #f (the-as rgba -1))))) + #f) (defun-debug add-debug-x ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 rgba)) "Draw an X in the xz plane" - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (let ((s3-0 (new-stack-vector0)) - (s2-0 (new-stack-vector0)) - ) - (vector+! s3-0 arg2 (new 'static 'vector :x -1228.8)) - (vector+! s2-0 arg2 (new 'static 'vector :x 1228.8)) - (add-debug-line #t arg1 s3-0 s2-0 arg3 #f (the-as rgba -1)) - (vector+! s3-0 arg2 (new 'static 'vector :z -1228.8)) - (vector+! s2-0 arg2 (new 'static 'vector :z 1228.8)) - (add-debug-line #t arg1 s3-0 s2-0 arg3 #f (the-as rgba -1)) - ) - #f - ) + (s2-0 (new-stack-vector0))) + (vector+! s3-0 arg2 (new 'static 'vector :x -1228.8)) + (vector+! s2-0 arg2 (new 'static 'vector :x 1228.8)) + (add-debug-line #t arg1 s3-0 s2-0 arg3 #f (the-as rgba -1)) + (vector+! s3-0 arg2 (new 'static 'vector :z -1228.8)) + (vector+! s2-0 arg2 (new 'static 'vector :z 1228.8)) + (add-debug-line #t arg1 s3-0 s2-0 arg3 #f (the-as rgba -1))) + #f) (defun-debug add-debug-text-3d ((arg0 symbol) (arg1 bucket-id) (arg2 string) (arg3 vector) (arg4 font-color) (arg5 vector2h)) "Draw text at the given point. arg4 is the font-color index. arg5 is an offset and can be #f." @@ -554,57 +389,32 @@ (#when PC_PORT ;; Check to see if the string should be filtered or not (when (pc-filter-debug-string? arg2 (vector-vector-distance arg3 (target-pos 0))) - ;;(format #t "got: ~S~%" arg2) + ;;(format #t "got: ~S~%" arg2) ;; no-op the function! - (return #f) - ) - ) - (cond - (*debug-draw-pauseable* - (let ((v1-2 (get-debug-text-3d))) - (when v1-2 - (set! (-> v1-2 flags) 0) - (set! (-> v1-2 bucket) arg1) - (set! (-> v1-2 pos quad) (-> arg3 quad)) - (cond - (arg5 - (set! (-> v1-2 offset x) (-> arg5 x)) - (set! (-> v1-2 offset y) (-> arg5 y)) - ) - (else - (set! (-> v1-2 offset x) 0) - (set! (-> v1-2 offset y) 0) - 0 - ) - ) - (set! (-> v1-2 color) arg4) - (let ((a0-6 0) - (a1-2 (-> arg2 data)) - (v1-4 (-> v1-2 str data)) - ) - (while (and (nonzero? (-> a1-2 0)) (< a0-6 79)) - (set! (-> v1-4 0) (-> a1-2 0)) - (set! a1-2 (&-> a1-2 1)) - (set! v1-4 (&-> v1-4 1)) - (+! a0-6 1) - ) - (set! (-> v1-4 0) (the-as uint 0)) - ) - 0 - ) - ) - ) - (else - (internal-draw-debug-text-3d arg1 arg2 arg3 arg4 (if arg5 - arg5 - (new 'static 'vector2h) - ) - ) - ) - ) - ) - #f - ) + (return #f))) + (cond + (*debug-draw-pauseable* + (let ((v1-2 (get-debug-text-3d))) + (when v1-2 + (set! (-> v1-2 flags) 0) + (set! (-> v1-2 bucket) arg1) + (set! (-> v1-2 pos quad) (-> arg3 quad)) + (cond + (arg5 (set! (-> v1-2 offset x) (-> arg5 x)) (set! (-> v1-2 offset y) (-> arg5 y))) + (else (set! (-> v1-2 offset x) 0) (set! (-> v1-2 offset y) 0) 0)) + (set! (-> v1-2 color) arg4) + (let ((a0-6 0) + (a1-2 (-> arg2 data)) + (v1-4 (-> v1-2 str data))) + (while (and (nonzero? (-> a1-2 0)) (< a0-6 79)) + (set! (-> v1-4 0) (-> a1-2 0)) + (set! a1-2 (&-> a1-2 1)) + (set! v1-4 (&-> v1-4 1)) + (+! a0-6 1)) + (set! (-> v1-4 0) (the-as uint 0))) + 0))) + (else (internal-draw-debug-text-3d arg1 arg2 arg3 arg4 (if arg5 arg5 (new 'static 'vector2h)))))) + #f) (defun-debug add-debug-sphere-with-transform ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 meters) (arg4 matrix) (arg5 rgba)) "Transform the given point by the given transform, then draw a debug sphere there. The orientation of the debug sphere itself @@ -615,459 +425,315 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) - (init-vf0-vector) - (when arg0 - (.lvf vf5 (&-> arg2 quad)) - (.lvf vf1 (&-> arg4 vector 0 quad)) - (.lvf vf2 (&-> arg4 vector 1 quad)) - (.lvf vf3 (&-> arg4 vector 2 quad)) - (.lvf vf4 (&-> arg4 vector 3 quad)) - (.mul.w.vf acc vf4 vf0) - (.add.mul.x.vf acc vf1 vf5 acc) - (.add.mul.y.vf acc vf2 vf5 acc) - (.add.mul.z.vf vf5 vf3 vf5 acc) - (let ((a2-1 (new 'stack-no-clear 'vector))) - (.svf (&-> a2-1 quad) vf5) - (add-debug-sphere arg0 arg1 a2-1 arg3 arg5) - ) - ) - #f - ) - ) + (vf5 :class vf)) + (init-vf0-vector) + (when arg0 + (.lvf vf5 (&-> arg2 quad)) + (.lvf vf1 (&-> arg4 vector 0 quad)) + (.lvf vf2 (&-> arg4 vector 1 quad)) + (.lvf vf3 (&-> arg4 vector 2 quad)) + (.lvf vf4 (&-> arg4 vector 3 quad)) + (.mul.w.vf acc vf4 vf0) + (.add.mul.x.vf acc vf1 vf5 acc) + (.add.mul.y.vf acc vf2 vf5 acc) + (.add.mul.z.vf vf5 vf3 vf5 acc) + (let ((a2-1 (new 'stack-no-clear 'vector))) (.svf (&-> a2-1 quad) vf5) (add-debug-sphere arg0 arg1 a2-1 arg3 arg5))) + #f)) (defun-debug add-debug-sphere ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 meters) (arg4 rgba)) "Add a debug sphere at the given point. arg3 is radius." - (if arg0 - (add-debug-sphere-from-table arg1 arg2 arg3 arg4) - ) - #f - ) + (if arg0 (add-debug-sphere-from-table arg1 arg2 arg3 arg4)) + #f) (defun-debug add-debug-text-sphere ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 meters) (arg4 string) (arg5 rgba)) "Add a debug sphere at the given point, with some text. The color is for the sphere - the text is color 0." (add-debug-sphere arg0 arg1 arg2 arg3 arg5) (add-debug-text-3d arg0 arg1 arg4 arg2 (font-color default) (the-as vector2h #f)) - #f - ) + #f) (defun-debug add-debug-spheres ((arg0 symbol) (arg1 bucket-id) (arg2 (inline-array vector)) (arg3 int) (arg4 rgba)) "Add a bunch of spheres. The radius is taken from the w component of the origin." (when arg0 - (let ((s4-0 (-> arg2 0))) - (countdown (s3-0 arg3) - (add-debug-sphere #t arg1 s4-0 (-> s4-0 w) arg4) - (&+! s4-0 16) - ) - ) - ) - #f - ) + (let ((s4-0 (-> arg2 0))) (countdown (s3-0 arg3) (add-debug-sphere #t arg1 s4-0 (-> s4-0 w) arg4) (&+! s4-0 16)))) + #f) (defun-debug add-debug-circle ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 float) (arg4 rgba) (arg5 matrix)) "" "note: you may pass #f for orientation" - - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (let ((f30-0 0.0) (s1-0 (new-stack-vector0)) - (s0-0 (new-stack-vector0)) - ) - (dotimes (sv-48 12) - (set-vector! s1-0 (* arg3 (cos f30-0)) - 0.0 - (* arg3 (sin f30-0)) - 1.0) - (set! f30-0 (+ 5461.3335 f30-0)) - (set-vector! s0-0 (* arg3 (cos f30-0)) - 0.0 - (* arg3 (sin f30-0)) - 1.0) - (when arg5 - (vector-matrix*! s1-0 s1-0 arg5) - (vector-matrix*! s0-0 s0-0 arg5) - ) - (vector+! s1-0 s1-0 arg2) - (vector+! s0-0 s0-0 arg2) - (add-debug-line #t arg1 s1-0 s0-0 arg4 #f (the-as rgba -1)) - ) - ) - #f - ) + (s0-0 (new-stack-vector0))) + (dotimes (sv-48 12) + (set-vector! s1-0 (* arg3 (cos f30-0)) 0.0 (* arg3 (sin f30-0)) 1.0) + (set! f30-0 (+ 5461.3335 f30-0)) + (set-vector! s0-0 (* arg3 (cos f30-0)) 0.0 (* arg3 (sin f30-0)) 1.0) + (when arg5 + (vector-matrix*! s1-0 s1-0 arg5) + (vector-matrix*! s0-0 s0-0 arg5)) + (vector+! s1-0 s1-0 arg2) + (vector+! s0-0 s0-0 arg2) + (add-debug-line #t arg1 s1-0 s0-0 arg4 #f (the-as rgba -1)))) + #f) (defun-debug add-debug-vector ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 vector) (arg4 meters) (arg5 rgba)) - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (let ((v1-2 (new-stack-vector0))) - (set! (-> v1-2 x) (+ (-> arg2 x) (* (-> arg3 x) arg4))) - (set! (-> v1-2 y) (+ (-> arg2 y) (* (-> arg3 y) arg4))) - (set! (-> v1-2 z) (+ (-> arg2 z) (* (-> arg3 z) arg4))) - (add-debug-line #t arg1 arg2 v1-2 arg5 #f (the-as rgba -1)) - ) - #f - ) + (set! (-> v1-2 x) (+ (-> arg2 x) (* (-> arg3 x) arg4))) + (set! (-> v1-2 y) (+ (-> arg2 y) (* (-> arg3 y) arg4))) + (set! (-> v1-2 z) (+ (-> arg2 z) (* (-> arg3 z) arg4))) + (add-debug-line #t arg1 arg2 v1-2 arg5 #f (the-as rgba -1))) + #f) (defun-debug add-debug-matrix ((arg0 symbol) (arg1 bucket-id) (arg2 matrix)) (add-debug-vector arg0 arg1 (-> arg2 vector 3) (-> arg2 vector 0) (meters 2) (new 'static 'rgba :r #xff :a #x80)) (add-debug-vector arg0 arg1 (-> arg2 vector 3) (-> arg2 vector 1) (meters 2) (new 'static 'rgba :g #xff :a #x80)) (add-debug-vector arg0 arg1 (-> arg2 vector 3) (-> arg2 vector 2) (meters 2) (new 'static 'rgba :b #xff :a #x80)) - arg2 - ) + arg2) (defun-debug add-debug-rot-matrix ((arg0 symbol) (arg1 bucket-id) (arg2 matrix) (arg3 vector)) (add-debug-vector arg0 arg1 arg3 (-> arg2 vector 0) (meters 2) (new 'static 'rgba :r #xff :a #x80)) (add-debug-vector arg0 arg1 arg3 (-> arg2 vector 1) (meters 2) (new 'static 'rgba :g #xff :a #x80)) (add-debug-vector arg0 arg1 arg3 (-> arg2 vector 2) (meters 2) (new 'static 'rgba :b #xff :a #x80)) - arg2 - ) + arg2) (defun-debug add-debug-yrot-vector ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 float) (arg4 float) (arg5 rgba)) - (let ((sv-32 arg3) (s0-0 arg4) - (s3-0 arg5) - ) - (if (not arg0) - (return #f) - ) - (let ((s1-0 (new-stack-vector0))) - (set-vector! s1-0 (+ (-> arg2 x) (* (sin sv-32) s0-0)) - (-> arg2 y) - (+ (-> arg2 z) (* (cos sv-32) s0-0)) - 1.0 - ) - (add-debug-line arg0 arg1 s1-0 arg2 s3-0 #f (the-as rgba -1)) - ) - ) - #f - ) + (s3-0 arg5)) + (if (not arg0) (return #f)) + (let ((s1-0 (new-stack-vector0))) + (set-vector! s1-0 (+ (-> arg2 x) (* (sin sv-32) s0-0)) (-> arg2 y) (+ (-> arg2 z) (* (cos sv-32) s0-0)) 1.0) + (add-debug-line arg0 arg1 s1-0 arg2 s3-0 #f (the-as rgba -1)))) + #f) (defun-debug add-debug-arc ((arg0 symbol) (arg1 bucket-id) (arg2 vector) (arg3 float) (arg4 float) (arg5 float) (arg6 rgba) (arg7 matrix)) "" "note: you may pass #f for orientation" - - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (let ((f30-0 arg3) (sv-48 (new-stack-vector0)) - (sv-64 (new-stack-vector0)) - ) - (dotimes (sv-80 12) - (set-vector! sv-48 (* arg5 (sin f30-0)) - 0.0 - (* arg5 (cos f30-0)) - 1.0) - (+! f30-0 (the float (/ (the int (- arg4 arg3)) 12))) - (set-vector! sv-64 (* arg5 (sin f30-0)) - 0.0 - (* arg5 (cos f30-0)) - 1.0) - (when arg7 - (vector-matrix*! sv-48 sv-48 arg7) - (vector-matrix*! sv-64 sv-64 arg7) - ) - (vector+! sv-48 sv-48 arg2) - (vector+! sv-64 sv-64 arg2) - (add-debug-line #t arg1 sv-48 sv-64 arg6 #f (the-as rgba -1)) - (cond - ((zero? sv-80) - (add-debug-line #t arg1 sv-48 arg2 arg6 #f (the-as rgba -1)) - ) - ((= sv-80 11) - (add-debug-line #t arg1 sv-64 arg2 arg6 #f (the-as rgba -1)) - ) - ) - ) - ) - #f - ) + (sv-64 (new-stack-vector0))) + (dotimes (sv-80 12) + (set-vector! sv-48 (* arg5 (sin f30-0)) 0.0 (* arg5 (cos f30-0)) 1.0) + (+! f30-0 (the float (/ (the int (- arg4 arg3)) 12))) + (set-vector! sv-64 (* arg5 (sin f30-0)) 0.0 (* arg5 (cos f30-0)) 1.0) + (when arg7 + (vector-matrix*! sv-48 sv-48 arg7) + (vector-matrix*! sv-64 sv-64 arg7)) + (vector+! sv-48 sv-48 arg2) + (vector+! sv-64 sv-64 arg2) + (add-debug-line #t arg1 sv-48 sv-64 arg6 #f (the-as rgba -1)) + (cond + ((zero? sv-80) (add-debug-line #t arg1 sv-48 arg2 arg6 #f (the-as rgba -1))) + ((= sv-80 11) (add-debug-line #t arg1 sv-64 arg2 arg6 #f (the-as rgba -1)))))) + #f) (defun-debug add-debug-curve ((arg0 symbol) (arg1 bucket-id) (arg2 (inline-array vector)) (arg3 int) (arg4 (pointer float)) (arg5 int) (arg6 rgba)) - - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (let ((s0-0 (new-stack-vector0)) (sv-48 (new-stack-vector0)) - (sv-64 (* arg3 4)) - ) - (curve-evaluate! sv-48 (-> arg4 0) arg2 arg3 arg4 arg5) - (let ((sv-80 0)) - (while (< sv-80 sv-64) - (set! (-> s0-0 quad) (-> sv-48 quad)) - (curve-evaluate! sv-48 (/ (the float (+ sv-80 1)) (the float sv-64)) arg2 arg3 arg4 arg5) - (add-debug-line #t arg1 s0-0 sv-48 arg6 #f (the-as rgba -1)) - (set! sv-80 (+ sv-80 1)) - ) - ) - ) - #f - ) + (sv-64 (* arg3 4))) + (curve-evaluate! sv-48 (-> arg4 0) arg2 arg3 arg4 arg5) + (let ((sv-80 0)) + (while (< sv-80 sv-64) + (set! (-> s0-0 quad) (-> sv-48 quad)) + (curve-evaluate! sv-48 (/ (the float (+ sv-80 1)) (the float sv-64)) arg2 arg3 arg4 arg5) + (add-debug-line #t arg1 s0-0 sv-48 arg6 #f (the-as rgba -1)) + (set! sv-80 (+ sv-80 1))))) + #f) (defun-debug add-debug-curve2 ((arg0 symbol) (arg1 bucket-id) (arg2 curve) (arg3 rgba) (arg4 symbol)) - (if arg0 - (add-debug-curve #t arg1 - (-> arg2 cverts) - (-> arg2 num-cverts) - (-> arg2 knots) - (-> arg2 num-knots) - arg3 - ) - ) - #f - ) + (if arg0 (add-debug-curve #t arg1 (-> arg2 cverts) (-> arg2 num-cverts) (-> arg2 knots) (-> arg2 num-knots) arg3)) + #f) (defun-debug add-debug-points ((arg0 symbol) (arg1 bucket-id) (arg2 (inline-array vector)) (arg3 int) (arg4 rgba) (arg5 float) (arg6 int)) - (when arg0 (dotimes (s0-0 arg3) (let ((sv-96 (new 'stack-no-clear 'vector))) (set! (-> sv-96 quad) (the-as uint128 0)) (set! (-> sv-96 quad) (-> arg2 s0-0 quad)) - (if (!= arg5 0.0) - (set! (-> sv-96 y) arg5) - ) + (if (!= arg5 0.0) (set! (-> sv-96 y) arg5)) (add-debug-text-3d #t arg1 (string-format "~d" s0-0) sv-96 (font-color white) (the vector2h #f)) - (add-debug-x #t arg1 sv-96 (if (= s0-0 arg6) - (static-rgba #xff #xff #xff #x80) - arg4 - )) - ) - ) - ) - #f - ) + (add-debug-x #t arg1 sv-96 (if (= s0-0 arg6) (static-rgba #xff #xff #xff #x80) arg4))))) + #f) (defun-debug debug-percent-bar ((arg0 symbol) (arg1 bucket-id) (arg2 int) (arg3 int) (arg4 float) (arg5 rgba)) - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (with-dma-buffer-add-bucket ((s0-0 (-> (current-frame) debug-buf)) arg1) - (draw-sprite2d-xy s0-0 arg2 arg3 255 14 (new 'static 'rgba :a #x40)) - (draw-sprite2d-xy s0-0 arg2 (+ arg3 2) (the int (* 255.0 arg4)) 10 arg5) - ) - #f - ) + (draw-sprite2d-xy s0-0 arg2 arg3 255 14 (new 'static 'rgba :a #x40)) + (draw-sprite2d-xy s0-0 arg2 (+ arg3 2) (the int (* 255.0 arg4)) 10 arg5)) + #f) ;; this function is broken and unused ;; TODO fix it (expand array) (defun-debug debug-pad-display ((arg0 cpad-info)) - (let - ((gp-0 - ;; og:preserve-this - (new 'static 'inline-array vector 32 ;; was originally 8, which is too small and would cause memory corruption - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - ;; added - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - (new 'static 'vector) - ) - ) - ) - (let ((v1-0 31)) - (while (nonzero? v1-0) - (+! v1-0 -1) - (set! (-> gp-0 (+ v1-0 1) quad) (-> gp-0 v1-0 quad)) - ) - ) - (set! (-> gp-0 0 x) (* (sin (-> arg0 stick0-dir)) (-> arg0 stick0-speed))) - (set! (-> gp-0 0 y) (* (cos (-> arg0 stick0-dir)) (-> arg0 stick0-speed))) - (dotimes (s5-1 32) - (with-dma-buffer-add-bucket ((s3-0 (-> (current-frame) debug-buf)) (bucket-id debug)) - (draw-sprite2d-xy s3-0 - (the int (* 120.0 (-> gp-0 s5-1 x))) - (the int (* 144.0 (-> gp-0 s5-1 y))) - 10 10 (new 'static 'rgba :a #x80 :r (- 255 (* 7 s5-1)))) - ) - ) - ) - #f - ) + (let ((gp-0 + ;; og:preserve-this + (new 'static + 'inline-array + vector + 32 ;; was originally 8, which is too small and would cause memory corruption + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + ;; added + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector) + (new 'static 'vector)))) + (let ((v1-0 31)) (while (nonzero? v1-0) (+! v1-0 -1) (set! (-> gp-0 (+ v1-0 1) quad) (-> gp-0 v1-0 quad)))) + (set! (-> gp-0 0 x) (* (sin (-> arg0 stick0-dir)) (-> arg0 stick0-speed))) + (set! (-> gp-0 0 y) (* (cos (-> arg0 stick0-dir)) (-> arg0 stick0-speed))) + (dotimes (s5-1 32) + (with-dma-buffer-add-bucket ((s3-0 (-> (current-frame) debug-buf)) (bucket-id debug)) + (draw-sprite2d-xy s3-0 + (the int (* 120.0 (-> gp-0 s5-1 x))) + (the int (* 144.0 (-> gp-0 s5-1 y))) + 10 + 10 + (new 'static 'rgba :a #x80 :r (- 255 (* 7 s5-1))))))) + #f) (defun-debug add-debug-light ((arg0 symbol) (arg1 bucket-id) (arg2 light) (arg3 vector) (arg4 string)) - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (when (!= (-> arg2 levels x) 0.0) (add-debug-vector arg0 arg1 arg3 (-> arg2 direction) (meters 3) (static-rgba #xff #xff #xff #x80)) (let ((light-vec-end (vector+*! (new-stack-vector0) arg3 (-> arg2 direction) (* (meters 3) (-> arg2 levels x)))) ;; the original code here uses w for alpha but that looks terrible - (light-rgba (new 'static 'rgba :r (the int (* 128.0 (-> arg2 color x))) - :g (the int (* 128.0 (-> arg2 color y))) - :b (the int (* 128.0 (-> arg2 color z))) - :a 128 - ))) - (add-debug-text-sphere arg0 arg1 light-vec-end (* (meters 0.5) (-> arg2 levels x)) (string-format "~S ~,,2f" arg4 (-> arg2 levels x)) light-rgba) - ) - ) - #f - ) + (light-rgba (new 'static + 'rgba + :r + (the int (* 128.0 (-> arg2 color x))) + :g + (the int (* 128.0 (-> arg2 color y))) + :b + (the int (* 128.0 (-> arg2 color z))) + :a 128))) + (add-debug-text-sphere arg0 + arg1 + light-vec-end + (* (meters 0.5) (-> arg2 levels x)) + (string-format "~S ~,,2f" arg4 (-> arg2 levels x)) + light-rgba))) + #f) (defun-debug add-debug-lights ((arg0 symbol) (arg1 bucket-id) (arg2 (inline-array light)) (arg3 vector)) - (if (not arg0) - (return #f) - ) + (if (not arg0) (return #f)) (add-debug-light arg0 arg1 (-> arg2 0) arg3 "dir0") (add-debug-light arg0 arg1 (-> arg2 1) arg3 "dir1") (add-debug-light arg0 arg1 (-> arg2 2) arg3 "dir2") (add-debug-light arg0 arg1 (-> arg2 3) arg3 "ambi") - #f - ) + #f) (defun-extern drawable-frag-count drawable int) + (defun-debug drawable-frag-count ((arg0 drawable)) (let ((gp-0 0)) - (cond - ((not arg0) - ) - ((type-type? (-> arg0 type) drawable-group) - (dotimes (s4-0 (-> (the drawable-group arg0) length)) - (+! gp-0 (drawable-frag-count (-> (the drawable-group arg0) data s4-0))) - ) - ) - (else - (+! gp-0 1) - ) - ) - gp-0 - ) - ) - -(defmethod inspect debug-vertex-stats ((obj debug-vertex-stats)) + (cond + ((not arg0)) + ((type-type? (-> arg0 type) drawable-group) + (dotimes (s4-0 (-> (the drawable-group arg0) length)) + (+! gp-0 (drawable-frag-count (-> (the drawable-group arg0) data s4-0))))) + (else (+! gp-0 1))) + gp-0)) + +(defmethod inspect ((obj debug-vertex-stats)) (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Tlength: ~D~%" (-> obj length)) (format #t "~Tpos-count: ~D~%" (-> obj pos-count)) (format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj vertex)) (dotimes (s5-0 (-> obj length)) - (let ((s4-0 (-> obj vertex s5-0))) - (format #t " ~D : trans: ~D ~D ~D ~D" s5-0 - (-> s4-0 trans x) - (-> s4-0 trans y) - (-> s4-0 trans z) - (-> s4-0 trans w) - ) - (format #t " st: ~D ~D~%" (-> s4-0 st x) (-> s4-0 st y)) - (format #t " col: ~X norm: ~D ~D ~D~%" - (-> s4-0 color) - (-> s4-0 normal x) - (-> s4-0 normal y) - (-> s4-0 normal z) - ) - ) - ) - obj - ) + (let ((s4-0 (-> obj vertex s5-0))) + (format #t " ~D : trans: ~D ~D ~D ~D" s5-0 (-> s4-0 trans x) (-> s4-0 trans y) (-> s4-0 trans z) (-> s4-0 trans w)) + (format #t " st: ~D ~D~%" (-> s4-0 st x) (-> s4-0 st y)) + (format #t " col: ~X norm: ~D ~D ~D~%" (-> s4-0 color) (-> s4-0 normal x) (-> s4-0 normal y) (-> s4-0 normal z)))) + obj) (defun-debug history-init ((arg0 pos-history) (arg1 int)) (set! (-> arg0 num-points) arg1) (set! (-> arg0 points) (the (inline-array vector) #f)) - arg0 - ) + arg0) (defun-debug history-draw-and-update ((arg0 pos-history) (arg1 int) (arg2 vector)) (if (and arg1 (not (-> arg0 points))) - (set! (-> arg0 points) (the (inline-array vector) (malloc 'debug (* (-> arg0 num-points) 16)))) - ) + (set! (-> arg0 points) (the (inline-array vector) (malloc 'debug (* (-> arg0 num-points) 16))))) (when (-> arg0 points) (set! (-> (-> arg0 points) (-> arg0 h-first) quad) (-> arg2 quad)) (set! (-> arg0 h-first) (+ (-> arg0 h-first) 1)) (when (>= (-> arg0 h-first) (-> arg0 num-points)) - (set! (-> arg0 h-first) 0) - ) - ) + (set! (-> arg0 h-first) 0))) (when arg1 - (dotimes (s5-1 (1- (-> arg0 num-points))) - (if (!= (+ s5-1 1) (-> arg0 h-first)) - (add-debug-line #t (bucket-id debug-no-zbuf) - (-> arg0 points s5-1) - (-> arg0 points (1+ s5-1)) - (static-rgba #x80 #xc0 #x80 #x80) #f (the-as rgba -1)) - ) - ) - ) - #f - ) + (dotimes (s5-1 (1- (-> arg0 num-points))) + (if (!= (+ s5-1 1) (-> arg0 h-first)) + (add-debug-line #t + (bucket-id debug-no-zbuf) + (-> arg0 points s5-1) + (-> arg0 points (1+ s5-1)) + (static-rgba #x80 #xc0 #x80 #x80) + #f + (the-as rgba -1))))) + #f) (defun-debug dma-timeout-cam () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) - (set! (-> a0-0 x) -666764.4) - (set! (-> a0-0 y) 21102.984) - (set! (-> a0-0 z) 51613.348) - (set! (-> a0-0 w) 1.0) - (set! (-> a1-0 vector 0 x) -0.911) - (set! (-> a1-0 vector 0 y) 0.0) - (set! (-> a1-0 vector 0 z) 0.4122) - (set! (-> a1-0 vector 0 w) 0.0) - (set! (-> a1-0 vector 1 x) -0.0984) - (set! (-> a1-0 vector 1 y) 0.971) - (set! (-> a1-0 vector 1 z) -0.2174) - (set! (-> a1-0 vector 1 w) 0.0) - (set! (-> a1-0 vector 2 x) -0.4003) - (set! (-> a1-0 vector 2 y) -0.2387) - (set! (-> a1-0 vector 2 z) -0.8847) - (set! (-> a1-0 vector 2 w) 0.0) - (set! (-> a1-0 vector 3 x) 0.0) - (set! (-> a1-0 vector 3 y) 0.0) - (set! (-> a1-0 vector 3 z) 0.0) - (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) - ) + (a1-0 (new-stack-matrix0))) + (set! (-> a0-0 x) -666764.4) + (set! (-> a0-0 y) 21102.984) + (set! (-> a0-0 z) 51613.348) + (set! (-> a0-0 w) 1.0) + (set! (-> a1-0 vector 0 x) -0.911) + (set! (-> a1-0 vector 0 y) 0.0) + (set! (-> a1-0 vector 0 z) 0.4122) + (set! (-> a1-0 vector 0 w) 0.0) + (set! (-> a1-0 vector 1 x) -0.0984) + (set! (-> a1-0 vector 1 y) 0.971) + (set! (-> a1-0 vector 1 z) -0.2174) + (set! (-> a1-0 vector 1 w) 0.0) + (set! (-> a1-0 vector 2 x) -0.4003) + (set! (-> a1-0 vector 2 y) -0.2387) + (set! (-> a1-0 vector 2 z) -0.8847) + (set! (-> a1-0 vector 2 w) 0.0) + (set! (-> a1-0 vector 3 x) 0.0) + (set! (-> a1-0 vector 3 y) 0.0) + (set! (-> a1-0 vector 3 z) 0.0) + (set! (-> a1-0 vector 3 w) 1.0) + (debug-set-camera-pos-rot! a0-0 a1-0))) (defun-debug display-file-info () (when (and *display-file-info* (!= *master-mode* 'menu)) - (dotimes (gp-0 (-> *level* length)) - (let ((v1-7 (-> *level* level gp-0))) - (when (= (-> v1-7 status) 'active) - (let ((s5-0 (-> v1-7 bsp))) - (format *stdcon* "file name: ~S~%" (-> s5-0 info file-name)) - (format *stdcon* "version: ~D.~D~%" (-> s5-0 info major-version) (-> s5-0 info minor-version)) - (format *stdcon* "maya file: ~S~%" (-> s5-0 info maya-file-name)) - (format *stdcon* "mdb file: ~S~%" (-> s5-0 info mdb-file-name)) - (format *stdcon* "~S" (-> s5-0 info tool-debug)) - ) - ) - ) - ) - ) - 0 - ) - - - - + (dotimes (gp-0 (-> *level* length)) + (let ((v1-7 (-> *level* level gp-0))) + (when (= (-> v1-7 status) 'active) + (let ((s5-0 (-> v1-7 bsp))) + (format *stdcon* "file name: ~S~%" (-> s5-0 info file-name)) + (format *stdcon* "version: ~D.~D~%" (-> s5-0 info major-version) (-> s5-0 info minor-version)) + (format *stdcon* "maya file: ~S~%" (-> s5-0 info maya-file-name)) + (format *stdcon* "mdb file: ~S~%" (-> s5-0 info mdb-file-name)) + (format *stdcon* "~S" (-> s5-0 info tool-debug))))))) + 0) diff --git a/goal_src/jak1/engine/debug/default-menu.gc b/goal_src/jak1/engine/debug/default-menu.gc index 731453bdee..341c997ed9 100644 --- a/goal_src/jak1/engine/debug/default-menu.gc +++ b/goal_src/jak1/engine/debug/default-menu.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/cam-update.gc") (require "engine/game/task/task-control.gc") (require "engine/draw/drawable.gc") @@ -10,10 +9,6 @@ (require "engine/debug/memory-usage.gc") (require "engine/debug/menu.gc") -;; name: default-menu.gc -;; name in dgo: default-menu -;; dgos: GAME, ENGINE - ;; Forward declarations for stuff we haven't written yet: (define-extern *edit-instance* string) @@ -29,167 +24,62 @@ (define *dm-cam-mode-interpolation* 0) (defun dm-cam-mode-func ((arg0 (state camera-slave)) (arg1 debug-menu-msg)) - (if (and (= arg1 (debug-menu-msg press)) arg0) - (send-event *camera* 'change-state arg0 *dm-cam-mode-interpolation*) - ) - (if *camera* - (send-event *camera* 'query-state arg0) - (not arg0) - ) - ) + (if (and (= arg1 (debug-menu-msg press)) arg0) (send-event *camera* 'change-state arg0 *dm-cam-mode-interpolation*)) + (if *camera* (send-event *camera* 'query-state arg0) (not arg0))) (defun dm-cam-settings-func ((arg0 int) (arg1 debug-menu-msg)) (when (and (= arg1 (debug-menu-msg press)) *camera*) (cond - ((zero? arg0) - (send-event *camera* 'toggle-slave-option 1) - ) - ((= arg0 13) - (send-event *camera* 'toggle-slave-option 8192) - ) - ((= arg0 1) - (send-event *camera* 'toggle-slave-option 2) - ) - ((= arg0 2) - (send-event *camera* 'toggle-slave-option 4) - ) - ((= arg0 3) - (send-event *camera* 'toggle-slave-option 128) - ) - ((= arg0 4) - (send-event *camera* 'toggle-slave-option 8) - ) - ((= arg0 7) - (send-event *camera* 'toggle-slave-option 16) - ) - ((= arg0 8) - (send-event *camera* 'toggle-slave-option 64) - ) - ((= arg0 6) - (send-event *camera* 'reset-root) - ) - ((= arg0 9) - (logxor! (-> *camera* master-options) 1) - ) - ((= arg0 10) - (logxor! (-> *camera* master-options) 4) - ) - ((= arg0 11) - (send-event *camera* 'toggle-slave-option 32) - ) - ((= arg0 12) - (send-event *camera* 'toggle-slave-option 512) - ) - ((= arg0 14) - (send-event *camera* 'toggle-slave-option #x8000) - ) - ((= arg0 15) - (send-event *camera* 'toggle-slave-option #x10000) - ) - ) - ) + ((zero? arg0) (send-event *camera* 'toggle-slave-option 1)) + ((= arg0 13) (send-event *camera* 'toggle-slave-option 8192)) + ((= arg0 1) (send-event *camera* 'toggle-slave-option 2)) + ((= arg0 2) (send-event *camera* 'toggle-slave-option 4)) + ((= arg0 3) (send-event *camera* 'toggle-slave-option 128)) + ((= arg0 4) (send-event *camera* 'toggle-slave-option 8)) + ((= arg0 7) (send-event *camera* 'toggle-slave-option 16)) + ((= arg0 8) (send-event *camera* 'toggle-slave-option 64)) + ((= arg0 6) (send-event *camera* 'reset-root)) + ((= arg0 9) (logxor! (-> *camera* master-options) 1)) + ((= arg0 10) (logxor! (-> *camera* master-options) 4)) + ((= arg0 11) (send-event *camera* 'toggle-slave-option 32)) + ((= arg0 12) (send-event *camera* 'toggle-slave-option 512)) + ((= arg0 14) (send-event *camera* 'toggle-slave-option #x8000)) + ((= arg0 15) (send-event *camera* 'toggle-slave-option #x10000)))) (cond (*camera* - (cond - ((zero? arg0) - (logtest? (-> *camera* slave-options) 1) - ) - ((= arg0 13) - (logtest? (-> *camera* slave-options) 8192) - ) - ((= arg0 1) - (logtest? (-> *camera* slave-options) 2) - ) - ((= arg0 2) - (logtest? (-> *camera* slave-options) 4) - ) - ((= arg0 3) - (logtest? (-> *camera* slave-options) 128) - ) - ((= arg0 4) - (logtest? (-> *camera* slave-options) 8) - ) - ((= arg0 7) - (logtest? (-> *camera* slave-options) 16) - ) - ((= arg0 8) - (logtest? (-> *camera* slave-options) 64) - ) - ((= arg0 11) - (logtest? (-> *camera* slave-options) 32) - ) - ((= arg0 12) - (logtest? (-> *camera* slave-options) 512) - ) - ((= arg0 14) - (logtest? (-> *camera* slave-options) #x8000) - ) - ((= arg0 15) - (logtest? #x10000 (-> *camera* slave-options)) - ) - ((= arg0 9) - (logtest? (-> *camera* master-options) 1) - ) - ((= arg0 10) - (logtest? (-> *camera* master-options) 4) - ) - (else - #f - ) - ) - ) - (else - #f - ) - ) - ) + (cond + ((zero? arg0) (logtest? (-> *camera* slave-options) 1)) + ((= arg0 13) (logtest? (-> *camera* slave-options) 8192)) + ((= arg0 1) (logtest? (-> *camera* slave-options) 2)) + ((= arg0 2) (logtest? (-> *camera* slave-options) 4)) + ((= arg0 3) (logtest? (-> *camera* slave-options) 128)) + ((= arg0 4) (logtest? (-> *camera* slave-options) 8)) + ((= arg0 7) (logtest? (-> *camera* slave-options) 16)) + ((= arg0 8) (logtest? (-> *camera* slave-options) 64)) + ((= arg0 11) (logtest? (-> *camera* slave-options) 32)) + ((= arg0 12) (logtest? (-> *camera* slave-options) 512)) + ((= arg0 14) (logtest? (-> *camera* slave-options) #x8000)) + ((= arg0 15) (logtest? #x10000 (-> *camera* slave-options))) + ((= arg0 9) (logtest? (-> *camera* master-options) 1)) + ((= arg0 10) (logtest? (-> *camera* master-options) 4)) + (else #f))) + (else #f))) (defun dm-cam-settings-func-int ((arg0 int) (arg1 debug-menu-msg) (arg2 int) (arg3 int)) (when (and (= arg1 (debug-menu-msg press)) *camera*) - (if (= (/ arg0 8) 5) - (set! *dm-cam-mode-interpolation* arg2) - ) - ) + (if (= (/ arg0 8) 5) (set! *dm-cam-mode-interpolation* arg2))) (cond - (*camera* - (if (= (/ arg0 8) 5) - *dm-cam-mode-interpolation* - arg3 - ) - ) - (else - arg3 - ) - ) - ) + (*camera* (if (= (/ arg0 8) 5) *dm-cam-mode-interpolation* arg3)) + (else arg3))) (defun dm-cam-externalize ((arg0 symbol) (arg1 debug-menu-msg)) (when (= arg1 (debug-menu-msg press)) (cond - ((= arg0 'reset) - (if (!= *external-cam-mode* 'locked) - (external-cam-reset!) - ) - ) - ((= arg0 'allow-z) - (set! *external-cam-options* (logxor *external-cam-options* (external-cam-option allow-z))) - ) - ((= *external-cam-mode* arg0) - (set! *external-cam-mode* #f) - ) - (else - (if (not *external-cam-mode*) - (external-cam-reset!) - ) - (set! *external-cam-mode* arg0) - ) - ) - ) - (if (= arg0 'allow-z) - (logtest? *external-cam-options* (external-cam-option allow-z)) - (= *external-cam-mode* arg0) - ) - ) + ((= arg0 'reset) (if (!= *external-cam-mode* 'locked) (external-cam-reset!))) + ((= arg0 'allow-z) (set! *external-cam-options* (logxor *external-cam-options* (external-cam-option allow-z)))) + ((= *external-cam-mode* arg0) (set! *external-cam-mode* #f)) + (else (if (not *external-cam-mode*) (external-cam-reset!)) (set! *external-cam-mode* arg0)))) + (if (= arg0 'allow-z) (logtest? *external-cam-options* (external-cam-option allow-z)) (= *external-cam-mode* arg0))) (defun dm-cam-render-float ((arg0 int) (arg1 debug-menu-msg) (arg2 float) (arg3 float)) (when (= arg1 (debug-menu-msg press)) @@ -197,332 +87,167 @@ ((zero? (/ arg0 8)) (when *math-camera* (set! (-> *math-camera* fov) (* 182.04445 arg2)) - (update-math-camera - *math-camera* - (-> *setting-control* current video-mode) - (-> *setting-control* current aspect-ratio) - ) - ) - ) - ((= (/ arg0 8) 1) - (if *camera* - (send-event *camera* 'set-fov (* 182.04445 arg2)) - ) - ) - ) - ) + (update-math-camera *math-camera* (-> *setting-control* current video-mode) (-> *setting-control* current aspect-ratio)))) + ((= (/ arg0 8) 1) (if *camera* (send-event *camera* 'set-fov (* 182.04445 arg2)))))) (cond ((zero? (/ arg0 8)) (cond - (*math-camera* - (* 0.005493164 (-> *math-camera* fov)) - ) - (else - (empty) - arg3 - ) - ) - ) + (*math-camera* (* 0.005493164 (-> *math-camera* fov))) + (else (empty) arg3))) ((= (/ arg0 8) 1) (cond - (*camera* - (let ((f30-0 0.005493164)) - (* f30-0 (the-as float (send-event *camera* 'query-fov))) - ) - ) - (else - (empty) - arg3 - ) - ) - ) - (else - (empty) - arg3 - ) - ) - ) + (*camera* (let ((f30-0 0.005493164)) (* f30-0 (the-as float (send-event *camera* 'query-fov))))) + (else (empty) arg3))) + (else (empty) arg3))) (defun dm-subdiv-float ((arg0 symbol) (arg1 debug-menu-msg) (arg2 float) (arg3 float)) (when (= arg1 (debug-menu-msg press)) (case arg0 - (('close) - (if (and *math-camera* *subdivide-settings*) - (set! (-> *subdivide-settings* close 3) (* 4096.0 arg2)) - ) - ) - (('far) - (if (and *math-camera* *subdivide-settings*) - (set! (-> *subdivide-settings* far 3) (* 4096.0 arg2)) - ) - ) - ) - ) + (('close) (if (and *math-camera* *subdivide-settings*) (set! (-> *subdivide-settings* close 3) (* 4096.0 arg2)))) + (('far) (if (and *math-camera* *subdivide-settings*) (set! (-> *subdivide-settings* far 3) (* 4096.0 arg2)))))) (case arg0 - (('close) - (if (and *math-camera* *subdivide-settings*) - (* 0.00024414062 (-> *subdivide-settings* close 3)) - arg3 - ) - ) - (('far) - (if (and *math-camera* *subdivide-settings*) - (* 0.00024414062 (-> *subdivide-settings* far 3)) - arg3 - ) - ) - (else - arg3 - ) - ) - ) + (('close) (if (and *math-camera* *subdivide-settings*) (* 0.00024414062 (-> *subdivide-settings* close 3)) arg3)) + (('far) (if (and *math-camera* *subdivide-settings*) (* 0.00024414062 (-> *subdivide-settings* far 3)) arg3)) + (else arg3))) (defun dm-subdiv-int ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 int)) (when (= arg1 (debug-menu-msg press)) (case arg0 - (('anim-speed) - (if *anim-tester* - (set! (-> *anim-tester* 0 speed) arg2) - ) - ) - ) - ) + (('anim-speed) (if *anim-tester* (set! (-> *anim-tester* 0 speed) arg2))))) (case arg0 - (('anim-speed) - (if *anim-tester* - (-> *anim-tester* 0 speed) - arg3 - ) - ) - (else - arg3 - ) - ) - ) + (('anim-speed) (if *anim-tester* (-> *anim-tester* 0 speed) arg3)) + (else arg3))) (defun dm-setting-language ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default language) (the-as language-enum (/ arg0 8))) - ) - (= (-> *setting-control* default language) (/ arg0 8)) - ) + (if (= arg1 (debug-menu-msg press)) (set! (-> *setting-control* default language) (the-as language-enum (/ arg0 8)))) + (= (-> *setting-control* default language) (/ arg0 8))) (defun dm-current-continue ((arg0 string) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (start 'play (get-continue-by-name *game-info* arg0)) - ) - (string= (-> (get-or-create-continue! *game-info*) name) arg0) - ) + (if (= arg1 (debug-menu-msg press)) (start 'play (get-continue-by-name *game-info* arg0))) + (string= (-> (get-or-create-continue! *game-info*) name) arg0)) (defun dm-subdiv-draw-func ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *subdivide-draw-mode* (/ arg0 8)) - ) - (= (/ arg0 8) *subdivide-draw-mode*) - ) + (if (= arg1 (debug-menu-msg press)) (set! *subdivide-draw-mode* (/ arg0 8))) + (= (/ arg0 8) *subdivide-draw-mode*)) (defun dm-ocean-subdiv-draw-func ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *ocean-subdivide-draw-mode* (/ arg0 8)) - ) - (= (/ arg0 8) *ocean-subdivide-draw-mode*) - ) + (if (= arg1 (debug-menu-msg press)) (set! *ocean-subdivide-draw-mode* (/ arg0 8))) + (= (/ arg0 8) *ocean-subdivide-draw-mode*)) (defun dm-time-of-day-func ((arg0 int) (arg1 debug-menu-msg)) (when (= arg1 (debug-menu-msg press)) (set! *time-of-day-mode* (/ arg0 8)) (set! (-> *time-of-day-proc* 0 minute) 0) (cond - ((zero? (/ arg0 8)) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 7) - ) - ((= (/ arg0 8) 1) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 9) - ) - ((= (/ arg0 8) 2) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 12) - ) - ((= (/ arg0 8) 3) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 15) - ) - ((= (/ arg0 8) 4) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 18) - ) - ((= (/ arg0 8) 5) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 19) - ) - ((= (/ arg0 8) 6) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 23) - ) - ((= (/ arg0 8) 7) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 4) - ) + ((zero? (/ arg0 8)) (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) (set! (-> *time-of-day-proc* 0 hour) 7)) + ((= (/ arg0 8) 1) (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) (set! (-> *time-of-day-proc* 0 hour) 9)) + ((= (/ arg0 8) 2) (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) (set! (-> *time-of-day-proc* 0 hour) 12)) + ((= (/ arg0 8) 3) (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) (set! (-> *time-of-day-proc* 0 hour) 15)) + ((= (/ arg0 8) 4) (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) (set! (-> *time-of-day-proc* 0 hour) 18)) + ((= (/ arg0 8) 5) (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) (set! (-> *time-of-day-proc* 0 hour) 19)) + ((= (/ arg0 8) 6) (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) (set! (-> *time-of-day-proc* 0 hour) 23)) + ((= (/ arg0 8) 7) (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) (set! (-> *time-of-day-proc* 0 hour) 4)) ((= (/ arg0 8) 8) - (if *time-of-day-fast* - (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) - (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) - ) - ) - ) - ) - (= (/ arg0 8) *time-of-day-mode*) - ) + (if *time-of-day-fast* (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0))))) + (= (/ arg0 8) *time-of-day-mode*)) (defun dm-time-of-day-func2 ((arg0 (pointer symbol)) (arg1 debug-menu-msg)) (when (= arg1 (debug-menu-msg press)) (set! (-> arg0 0) (not (-> arg0 0))) (when (!= (-> *time-of-day-proc* 0 time-ratio) 0.0) - (if *time-of-day-fast* - (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) - (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) - ) - ) - ) - (-> arg0 0) - ) + (if *time-of-day-fast* (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0)))) + (-> arg0 0)) (defun dm-boolean-toggle-pick-func ((arg0 (pointer symbol)) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> arg0 0) (not (-> arg0 0))) - ) - (-> arg0 0) - ) + (if (= arg1 (debug-menu-msg press)) (set! (-> arg0 0) (not (-> arg0 0)))) + (-> arg0 0)) (defun dm-time-of-day-pick-func ((arg0 symbol) (arg1 debug-menu-msg)) (time-of-day-setup (= arg1 (debug-menu-msg press))) - (none) - ) + (none)) (defun dm-actor-marks-pick-func ((arg0 symbol) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *display-actor-marks* arg0) - ) - (= *display-actor-marks* arg0) - ) + (if (= arg1 (debug-menu-msg press)) (set! *display-actor-marks* arg0)) + (= *display-actor-marks* arg0)) (defun dm-compact-actor-pick-func ((arg0 symbol) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *compact-actors* arg0) - ) - (= *compact-actors* arg0) - ) + (if (= arg1 (debug-menu-msg press)) (set! *compact-actors* arg0)) + (= *compact-actors* arg0)) (defun dm-actor-vis-pick-func ((arg0 symbol) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *display-actor-vis* arg0) - ) - (= *display-actor-vis* arg0) - ) + (if (= arg1 (debug-menu-msg press)) (set! *display-actor-vis* arg0)) + (= *display-actor-vis* arg0)) (defun dm-game-mode-pick-func ((arg0 symbol) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *game-info* mode) arg0) - ) - (= (-> *game-info* mode) arg0) - ) + (if (= arg1 (debug-menu-msg press)) (set! (-> *game-info* mode) arg0)) + (= (-> *game-info* mode) arg0)) (defun dm-vu1-user-toggle-pick-func ((arg0 vu1-renderer-mask) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *vu1-enable-user-menu* (logxor *vu1-enable-user-menu* (the-as uint arg0))) - ) - (logtest? *vu1-enable-user-menu* arg0) - ) + (if (= arg1 (debug-menu-msg press)) (set! *vu1-enable-user-menu* (logxor *vu1-enable-user-menu* (the-as uint arg0)))) + (logtest? *vu1-enable-user-menu* arg0)) (defun dm-vu1-user-set-pick-func ((arg0 vu1-renderer-mask) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *vu1-enable-user-menu* arg0) - ) - (= *vu1-enable-user-menu* arg0) - ) + (if (= arg1 (debug-menu-msg press)) (set! *vu1-enable-user-menu* arg0)) + (= *vu1-enable-user-menu* arg0)) (defun dm-texture-user-toggle-pick-func ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *texture-enable-user-menu* (logxor *texture-enable-user-menu* arg0)) - ) - (logtest? *texture-enable-user-menu* arg0) - ) + (if (= arg1 (debug-menu-msg press)) (set! *texture-enable-user-menu* (logxor *texture-enable-user-menu* arg0))) + (logtest? *texture-enable-user-menu* arg0)) (defun dm-texture-user-set-pick-func ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *texture-enable-user-menu* arg0) - ) - (= *texture-enable-user-menu* arg0) - ) + (if (= arg1 (debug-menu-msg press)) (set! *texture-enable-user-menu* arg0)) + (= *texture-enable-user-menu* arg0)) (defun dm-strip-lines-toggle-pick-func ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *display-strip-lines* (logxor *display-strip-lines* (/ arg0 8))) - ) - (logtest? *display-strip-lines* (/ arg0 8)) - ) + (if (= arg1 (debug-menu-msg press)) (set! *display-strip-lines* (logxor *display-strip-lines* (/ arg0 8)))) + (logtest? *display-strip-lines* (/ arg0 8))) (defun dm-strip-lines-set-pick-func ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! *display-strip-lines* (/ arg0 8)) - ) - (= *display-strip-lines* (/ arg0 8)) - ) + (if (= arg1 (debug-menu-msg press)) (set! *display-strip-lines* (/ arg0 8))) + (= *display-strip-lines* (/ arg0 8))) (defun dm-edit-instance-toggle-pick-func ((arg0 int) (arg1 debug-menu-msg)) (let ((v1-0 (find-instance-by-name *edit-instance*))) (when v1-0 - (if (= arg1 (debug-menu-msg press)) - (logxor! (-> v1-0 flags) (the-as uint arg0)) - ) - (logtest? (-> v1-0 flags) arg0) - ) - ) - ) + (if (= arg1 (debug-menu-msg press)) (logxor! (-> v1-0 flags) (the-as uint arg0))) + (logtest? (-> v1-0 flags) arg0)))) (defun all-texture-tweak-adjust ((arg0 texture-page-dir) (arg1 float)) - ; (dotimes (s4-0 (-> arg0 length)) - ; (let ((s3-0 (-> arg0 entries s4-0 page))) - ; (dotimes (s2-0 (min (-> s3-0 length) (-> arg0 entries s4-0 length))) - ; (when (-> arg0 entries s4-0 link) - ; (let ((v1-12 (+ (the-as uint (-> arg0 entries s4-0 link)) (* s2-0 4))) - ; (s1-0 (-> arg0 entries s4-0 page data s2-0)) - ; ) - ; (+! (-> s1-0 uv-dist) arg1) - ; (+ v1-12 0) - ; (let ((s0-0 (the-as object (* (-> (dynamic-array-field-access v1-12 next PLACEHOLDER) shader) 16)))) - ; (while (nonzero? (the-as uint s0-0)) - ; (adgif-shader-update! (the-as adgif-shader s0-0) s1-0) - ; (+ (the-as uint s0-0) 40) - ; (set! s0-0 (* (-> (the-as adgif-shader s0-0) next shader) 16)) - ; ) - ; ) - ; ) - ; ) - ; ) - ; ) - ; ) + ;; (dotimes (s4-0 (-> arg0 length)) + ;; (let ((s3-0 (-> arg0 entries s4-0 page))) + ;; (dotimes (s2-0 (min (-> s3-0 length) (-> arg0 entries s4-0 length))) + ;; (when (-> arg0 entries s4-0 link) + ;; (let ((v1-12 (+ (the-as uint (-> arg0 entries s4-0 link)) (* s2-0 4))) + ;; (s1-0 (-> arg0 entries s4-0 page data s2-0)) + ;; ) + ;; (+! (-> s1-0 uv-dist) arg1) + ;; (+ v1-12 0) + ;; (let ((s0-0 (the-as object (* (-> (dynamic-array-field-access v1-12 next PLACEHOLDER) shader) 16)))) + ;; (while (nonzero? (the-as uint s0-0)) + ;; (adgif-shader-update! (the-as adgif-shader s0-0) s1-0) + ;; (+ (the-as uint s0-0) 40) + ;; (set! s0-0 (* (-> (the-as adgif-shader s0-0) next shader) 16)) + ;; ) + ;; ) + ;; ) + ;; ) + ;; ) + ;; ) + ;; ) 0 - (none) - ) + (none)) (defun debug-menu-node arg0 name) (-> arg1 name)) - ) + (string<=? (-> arg0 name) (-> arg1 name))) (defun dm-shader-pick-func ((arg0 texture-id) (arg1 debug-menu-msg)) (if (and (= arg1 (debug-menu-msg press)) *texture-page-dir* (-> *texture-page-dir* entries (-> arg0 page) page) (-> *texture-page-dir* entries (-> arg0 page) link) - (nonzero? (-> *texture-page-dir* entries (-> arg0 page) link next (-> arg0 index))) - ) - (set! *edit-shader* arg0) - ) - (and (nonzero? *edit-shader*) (= arg0 *edit-shader*)) - ) + (nonzero? (-> *texture-page-dir* entries (-> arg0 page) link next (-> arg0 index)))) + (set! *edit-shader* arg0)) + (and (nonzero? *edit-shader*) (= arg0 *edit-shader*))) (define *shader-pick-menu* (the-as debug-menu #f)) @@ -531,57 +256,29 @@ (when *texture-page-dir* (dotimes (gp-0 (-> *texture-page-dir* length)) (let ((s5-0 (-> *texture-page-dir* entries gp-0 page)) - (s4-0 (-> *texture-page-dir* entries gp-0 link)) - ) + (s4-0 (-> *texture-page-dir* entries gp-0 link))) (when (and s5-0 s4-0) (dotimes (s3-0 (-> s5-0 length)) (when (and (-> s5-0 data s3-0) (nonzero? (-> s4-0 next s3-0))) - (let ((a1-1 (new - 'debug - 'debug-menu-item-flag - (-> s5-0 data s3-0 name) - (logior (shr (shl s3-0 52) 44) (shr (shl gp-0 52) 32)) - dm-shader-pick-func - ) - ) - ) - (debug-menu-append-item *shader-pick-menu* a1-1) - ) - ) - ) - ) - ) - ) - ) + (let ((a1-1 (new 'debug + 'debug-menu-item-flag + (-> s5-0 data s3-0 name) + (logior (shr (shl s3-0 52) 44) (shr (shl gp-0 52) 32)) + dm-shader-pick-func))) + (debug-menu-append-item *shader-pick-menu* a1-1)))))))) (set! (-> *shader-pick-menu* items) (sort (-> *shader-pick-menu* items) debug-menu-node v1-0 flags) 1) - ) - (not (logtest? (-> v1-0 flags) 1)) - ) - (else - #f - ) - ) - ) - ) + (v1-0 (if (= arg1 (debug-menu-msg press)) (logxor! (-> v1-0 flags) 1)) (not (logtest? (-> v1-0 flags) 1))) + (else #f)))) (define *instance-shrub-menu* (the-as debug-menu #f)) @@ -604,2496 +301,1745 @@ ((drawable-tree-instance-shrub) (let ((s3-0 (-> (the-as drawable-tree-instance-shrub v1-7) info prototype-inline-array-shrub))) (dotimes (s2-0 (-> s3-0 length)) - (let ((a1-4 - (new 'debug 'debug-menu-item-flag (-> s3-0 data s2-0 name) (-> s3-0 data s2-0 name) dm-instance-pick-func) - ) - ) - (debug-menu-append-item *instance-shrub-menu* a1-4) - ) - ) - ) - ) + (let ((a1-4 (new 'debug 'debug-menu-item-flag (-> s3-0 data s2-0 name) (-> s3-0 data s2-0 name) dm-instance-pick-func))) + (debug-menu-append-item *instance-shrub-menu* a1-4))))) ((drawable-tree-instance-tie) (let ((s3-1 (-> (the-as drawable-tree-instance-tie v1-7) prototypes prototype-array-tie))) (dotimes (s2-1 (-> s3-1 length)) - (let ((a1-7 - (new - 'debug - 'debug-menu-item-flag - (-> s3-1 array-data s2-1 name) - (-> s3-1 array-data s2-1 name) - dm-instance-pick-func - ) - ) - ) - (debug-menu-append-item *instance-tie-menu* a1-7) - ) - (let ((a1-9 - (new - 'debug - 'debug-menu-item-flag - (-> s3-1 array-data s2-1 name) - (-> s3-1 array-data s2-1 name) - dm-enable-instance-func - ) - ) - ) + (let ((a1-7 (new 'debug 'debug-menu-item-flag (-> s3-1 array-data s2-1 name) (-> s3-1 array-data s2-1 name) dm-instance-pick-func))) + (debug-menu-append-item *instance-tie-menu* a1-7)) + (let ((a1-9 (new 'debug 'debug-menu-item-flag (-> s3-1 array-data s2-1 name) (-> s3-1 array-data s2-1 name) dm-enable-instance-func))) (set! (-> a1-9 is-on) #t) - (debug-menu-append-item *enable-instance-tie-menu* a1-9) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (debug-menu-append-item *enable-instance-tie-menu* a1-9)))))))))))) (set! (-> *instance-shrub-menu* items) - (sort - (-> *instance-shrub-menu* items) - (lambda ((arg0 debug-menu) (arg1 debug-menu)) (string<=? (-> arg0 name) (-> arg1 name))) - ) - ) + (sort (-> *instance-shrub-menu* items) + (lambda ((arg0 debug-menu) (arg1 debug-menu)) + (string<=? (-> arg0 name) (-> arg1 name))))) (set! (-> *instance-tie-menu* items) - (sort - (-> *instance-tie-menu* items) - (lambda ((arg0 debug-menu) (arg1 debug-menu)) (string<=? (-> arg0 name) (-> arg1 name))) - ) - ) + (sort (-> *instance-tie-menu* items) + (lambda ((arg0 debug-menu) (arg1 debug-menu)) + (string<=? (-> arg0 name) (-> arg1 name))))) (set! (-> *enable-instance-tie-menu* items) - (sort - (-> *enable-instance-tie-menu* items) - (lambda ((arg0 debug-menu) (arg1 debug-menu)) (string<=? (-> arg0 name) (-> arg1 name))) - ) - ) + (sort (-> *enable-instance-tie-menu* items) + (lambda ((arg0 debug-menu) (arg1 debug-menu)) + (string<=? (-> arg0 name) (-> arg1 name))))) 0 - (none) - ) + (none)) (defun debug-create-cam-restore () (cond (*math-camera* - (format #t "(defun-debug cam-restore ()~%") - (format #t " ;;this function is a hack, don't use it as an example~%") - (format #t " (let ((pos (new 'stack 'vector))~%") - (format #t " (rot (new 'stack 'matrix)))~%") - (format #t " (set! (-> pos x) ~12F)~%" (-> *math-camera* trans x)) - (format #t " (set! (-> pos y) ~12F)~%" (-> *math-camera* trans y)) - (format #t " (set! (-> pos z) ~12F)~%" (-> *math-camera* trans z)) - (format #t " (set! (-> pos w) 1.0)~%") - (format #t " (set! (-> rot data 0) ~12F)~%" (-> *math-camera* inv-camera-rot vector 0 x)) - (format #t " (set! (-> rot data 1) ~12F)~%" (-> *math-camera* inv-camera-rot vector 0 y)) - (format #t " (set! (-> rot data 2) ~12F)~%" (-> *math-camera* inv-camera-rot vector 0 z)) - (format #t " (set! (-> rot data 3) ~12F)~%" (-> *math-camera* inv-camera-rot vector 0 w)) - (format #t " (set! (-> rot data 4) ~12F)~%" (-> *math-camera* inv-camera-rot vector 1 x)) - (format #t " (set! (-> rot data 5) ~12F)~%" (-> *math-camera* inv-camera-rot vector 1 y)) - (format #t " (set! (-> rot data 6) ~12F)~%" (-> *math-camera* inv-camera-rot vector 1 z)) - (format #t " (set! (-> rot data 7) ~12F)~%" (-> *math-camera* inv-camera-rot vector 1 w)) - (format #t " (set! (-> rot data 8) ~12F)~%" (-> *math-camera* inv-camera-rot vector 2 x)) - (format #t " (set! (-> rot data 9) ~12F)~%" (-> *math-camera* inv-camera-rot vector 2 y)) - (format #t " (set! (-> rot data 10) ~12F)~%" (-> *math-camera* inv-camera-rot vector 2 z)) - (format #t " (set! (-> rot data 11) ~12F)~%" (-> *math-camera* inv-camera-rot vector 2 w)) - (format #t " (set! (-> rot data 12) ~12F)~%" 0.0) - (format #t " (set! (-> rot data 13) ~12F)~%" 0.0) - (format #t " (set! (-> rot data 14) ~12F)~%" 0.0) - (format #t " (set! (-> rot data 15) ~12F)~%" 1.0) - (let ((gp-0 (new 'stack-no-clear 'euler-angles))) - (matrix->eul gp-0 (-> *math-camera* inv-camera-rot) 21) - (format #t " ;; euler angles (xyz order degrees) x ~R y ~R z ~R~%" (-> gp-0 x) (-> gp-0 y) (-> gp-0 z)) - (format - #t - " ;; MAYA euler angles (xyz order degrees) x ~R y ~R z ~R~%" - (-> gp-0 x) - (- 32768.0 (-> gp-0 y)) - (-> gp-0 z) - ) - ) - (format #t " (debug-set-camera-pos-rot! pos rot)~%") - (format #t " (send-event *camera* 'set-fov (deg ~f))~%" (* 0.005493164 (-> *math-camera* fov))) - (format #t " (clear *camera-old-level*)~%") - (format #t " (format *camera-old-level* \"~A\")~%" (-> *level* level0 name)) - (let ((t9-31 format) - (a0-31 #t) - (a1-31 " (set! *camera-old-cpu* ~D)~%") - (v1-29 (-> *display* frames (-> *display* last-screen) frame profile-bar 0)) - ) - (t9-31 a0-31 a1-31 (-> v1-29 data (+ (-> v1-29 profile-frame-count) -2) time-stamp)) - ) - (let ((t9-32 format) - (a0-32 #t) - (a1-32 " (set! *camera-old-vu* ~D)~%") - (v1-34 (-> *display* frames (-> *display* last-screen) frame profile-bar 1)) - ) - (t9-32 a0-32 a1-32 (-> v1-34 data (+ (-> v1-34 profile-frame-count) -2) time-stamp)) - ) - (compute-memory-usage (-> *level* level0) #f) - (format #t " (set! *camera-old-tfrag-bytes* ~D)~%" (+ (-> *level* level0 mem-usage-block data 1 total) - (-> *level* level0 mem-usage-block data 2 total) - (-> *level* level0 mem-usage-block data 3 total) - (-> *level* level0 mem-usage-block data 4 total) - (-> *level* level0 mem-usage-block data 5 total) - (-> *level* level0 mem-usage-block data 6 total) - (-> *level* level0 mem-usage-block data 7 total) - (-> *level* level0 mem-usage-block data 8 total) - ) - ) - (format #t " (clear *camera-old-stat-string-tfrag*)~%") - (format #t " (clear *camera-old-stat-string-tfrag-near*)~%") - (format #t " (clear *camera-old-stat-string-total*)~%") - (when *stats-poly* - (format #t " (format *camera-old-stat-string-tfrag* \"~S\")~%" *stat-string-tfrag*) - (format #t " (format *camera-old-stat-string-tfrag-near* \"~S\")~%" *stat-string-tfrag-near*) - (format #t " (format *camera-old-stat-string-total* \"~S\")~%" *stat-string-total*) - ) - (format #t " (set! *display-camera-old-stats* #t)~%") - (format #t " )~%") - (format #t " )~%") - ) - (else - (format #t "camera save failed~%") - ) - ) - (none) - ) + (format #t "(defun-debug cam-restore ()~%") + (format #t " ;;this function is a hack, don't use it as an example~%") + (format #t " (let ((pos (new 'stack 'vector))~%") + (format #t " (rot (new 'stack 'matrix)))~%") + (format #t " (set! (-> pos x) ~12F)~%" (-> *math-camera* trans x)) + (format #t " (set! (-> pos y) ~12F)~%" (-> *math-camera* trans y)) + (format #t " (set! (-> pos z) ~12F)~%" (-> *math-camera* trans z)) + (format #t " (set! (-> pos w) 1.0)~%") + (format #t " (set! (-> rot data 0) ~12F)~%" (-> *math-camera* inv-camera-rot vector 0 x)) + (format #t " (set! (-> rot data 1) ~12F)~%" (-> *math-camera* inv-camera-rot vector 0 y)) + (format #t " (set! (-> rot data 2) ~12F)~%" (-> *math-camera* inv-camera-rot vector 0 z)) + (format #t " (set! (-> rot data 3) ~12F)~%" (-> *math-camera* inv-camera-rot vector 0 w)) + (format #t " (set! (-> rot data 4) ~12F)~%" (-> *math-camera* inv-camera-rot vector 1 x)) + (format #t " (set! (-> rot data 5) ~12F)~%" (-> *math-camera* inv-camera-rot vector 1 y)) + (format #t " (set! (-> rot data 6) ~12F)~%" (-> *math-camera* inv-camera-rot vector 1 z)) + (format #t " (set! (-> rot data 7) ~12F)~%" (-> *math-camera* inv-camera-rot vector 1 w)) + (format #t " (set! (-> rot data 8) ~12F)~%" (-> *math-camera* inv-camera-rot vector 2 x)) + (format #t " (set! (-> rot data 9) ~12F)~%" (-> *math-camera* inv-camera-rot vector 2 y)) + (format #t " (set! (-> rot data 10) ~12F)~%" (-> *math-camera* inv-camera-rot vector 2 z)) + (format #t " (set! (-> rot data 11) ~12F)~%" (-> *math-camera* inv-camera-rot vector 2 w)) + (format #t " (set! (-> rot data 12) ~12F)~%" 0.0) + (format #t " (set! (-> rot data 13) ~12F)~%" 0.0) + (format #t " (set! (-> rot data 14) ~12F)~%" 0.0) + (format #t " (set! (-> rot data 15) ~12F)~%" 1.0) + (let ((gp-0 (new 'stack-no-clear 'euler-angles))) + (matrix->eul gp-0 (-> *math-camera* inv-camera-rot) 21) + (format #t " ;; euler angles (xyz order degrees) x ~R y ~R z ~R~%" (-> gp-0 x) (-> gp-0 y) (-> gp-0 z)) + (format #t + " ;; MAYA euler angles (xyz order degrees) x ~R y ~R z ~R~%" + (-> gp-0 x) + (- 32768.0 (-> gp-0 y)) + (-> gp-0 z))) + (format #t " (debug-set-camera-pos-rot! pos rot)~%") + (format #t " (send-event *camera* 'set-fov (deg ~f))~%" (* 0.005493164 (-> *math-camera* fov))) + (format #t " (clear *camera-old-level*)~%") + (format #t " (format *camera-old-level* \"~A\")~%" (-> *level* level0 name)) + (let ((t9-31 format) + (a0-31 #t) + (a1-31 " (set! *camera-old-cpu* ~D)~%") + (v1-29 (-> *display* frames (-> *display* last-screen) frame profile-bar 0))) + (t9-31 a0-31 a1-31 (-> v1-29 data (+ (-> v1-29 profile-frame-count) -2) time-stamp))) + (let ((t9-32 format) + (a0-32 #t) + (a1-32 " (set! *camera-old-vu* ~D)~%") + (v1-34 (-> *display* frames (-> *display* last-screen) frame profile-bar 1))) + (t9-32 a0-32 a1-32 (-> v1-34 data (+ (-> v1-34 profile-frame-count) -2) time-stamp))) + (compute-memory-usage (-> *level* level0) #f) + (format #t + " (set! *camera-old-tfrag-bytes* ~D)~%" + (+ (-> *level* level0 mem-usage-block data 1 total) + (-> *level* level0 mem-usage-block data 2 total) + (-> *level* level0 mem-usage-block data 3 total) + (-> *level* level0 mem-usage-block data 4 total) + (-> *level* level0 mem-usage-block data 5 total) + (-> *level* level0 mem-usage-block data 6 total) + (-> *level* level0 mem-usage-block data 7 total) + (-> *level* level0 mem-usage-block data 8 total))) + (format #t " (clear *camera-old-stat-string-tfrag*)~%") + (format #t " (clear *camera-old-stat-string-tfrag-near*)~%") + (format #t " (clear *camera-old-stat-string-total*)~%") + (when *stats-poly* + (format #t " (format *camera-old-stat-string-tfrag* \"~S\")~%" *stat-string-tfrag*) + (format #t " (format *camera-old-stat-string-tfrag-near* \"~S\")~%" *stat-string-tfrag-near*) + (format #t " (format *camera-old-stat-string-total* \"~S\")~%" *stat-string-total*)) + (format #t " (set! *display-camera-old-stats* #t)~%") + (format #t " )~%") + (format #t " )~%")) + (else (format #t "camera save failed~%"))) + (none)) (defun debug-menu-make-camera-mode-menu ((arg0 debug-menu) (arg1 debug-menu)) (new 'debug 'debug-menu-item-submenu "Camera" arg0) - (let ((a1-3 (new 'debug 'debug-menu-item-submenu "Mode" arg1))) - (debug-menu-append-item arg0 a1-3) - ) - (let ((a1-5 (new 'debug 'debug-menu-item-flag "Off" #f dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-5) - ) + (let ((a1-3 (new 'debug 'debug-menu-item-submenu "Mode" arg1))) (debug-menu-append-item arg0 a1-3)) + (let ((a1-5 (new 'debug 'debug-menu-item-flag "Off" #f dm-cam-mode-func))) (debug-menu-append-item arg1 a1-5)) (let ((a1-7 (new 'debug 'debug-menu-item-flag "Free-floating" cam-free-floating dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-7) - ) - (let ((a1-9 (new 'debug 'debug-menu-item-flag "Fixed" cam-fixed dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-9) - ) - (let ((a1-11 (new 'debug 'debug-menu-item-flag "Pov" cam-pov dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-11) - ) + (debug-menu-append-item arg1 a1-7)) + (let ((a1-9 (new 'debug 'debug-menu-item-flag "Fixed" cam-fixed dm-cam-mode-func))) (debug-menu-append-item arg1 a1-9)) + (let ((a1-11 (new 'debug 'debug-menu-item-flag "Pov" cam-pov dm-cam-mode-func))) (debug-menu-append-item arg1 a1-11)) (let ((a1-13 (new 'debug 'debug-menu-item-flag "Pov180" cam-pov180 dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-13) - ) - (let ((a1-15 (new 'debug 'debug-menu-item-flag "Billy" cam-billy dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-15) - ) + (debug-menu-append-item arg1 a1-13)) + (let ((a1-15 (new 'debug 'debug-menu-item-flag "Billy" cam-billy dm-cam-mode-func))) (debug-menu-append-item arg1 a1-15)) (let ((a1-17 (new 'debug 'debug-menu-item-flag "Pov-track" cam-pov-track dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-17) - ) - (let ((a1-19 (new 'debug 'debug-menu-item-flag "Decel" cam-decel dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-19) - ) + (debug-menu-append-item arg1 a1-17)) + (let ((a1-19 (new 'debug 'debug-menu-item-flag "Decel" cam-decel dm-cam-mode-func))) (debug-menu-append-item arg1 a1-19)) (let ((a1-21 (new 'debug 'debug-menu-item-flag "Endless fall" cam-endlessfall dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-21) - ) - (let ((a1-23 (new 'debug 'debug-menu-item-flag "Eye" cam-eye dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-23) - ) - (let ((a1-25 (new 'debug 'debug-menu-item-flag "Stick" cam-stick dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-25) - ) + (debug-menu-append-item arg1 a1-21)) + (let ((a1-23 (new 'debug 'debug-menu-item-flag "Eye" cam-eye dm-cam-mode-func))) (debug-menu-append-item arg1 a1-23)) + (let ((a1-25 (new 'debug 'debug-menu-item-flag "Stick" cam-stick dm-cam-mode-func))) (debug-menu-append-item arg1 a1-25)) (let ((a1-27 (new 'debug 'debug-menu-item-flag "String" cam-string dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-27) - ) + (debug-menu-append-item arg1 a1-27)) (let ((a1-29 (new 'debug 'debug-menu-item-flag "Standoff" cam-standoff dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-29) - ) + (debug-menu-append-item arg1 a1-29)) (let ((a1-31 (new 'debug 'debug-menu-item-flag "Circular" cam-circular dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-31) - ) + (debug-menu-append-item arg1 a1-31)) (let ((a1-33 (new 'debug 'debug-menu-item-flag "Look At" cam-lookat dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-33) - ) + (debug-menu-append-item arg1 a1-33)) (let ((a1-35 (new 'debug 'debug-menu-item-flag "Center of world" cam-point-watch dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-35) - ) + (debug-menu-append-item arg1 a1-35)) (let ((a1-37 (new 'debug 'debug-menu-item-flag "Spline" cam-spline dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-37) - ) - (let ((a1-39 (new 'debug 'debug-menu-item-flag "Bike" cam-bike dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-39) - ) + (debug-menu-append-item arg1 a1-37)) + (let ((a1-39 (new 'debug 'debug-menu-item-flag "Bike" cam-bike dm-cam-mode-func))) (debug-menu-append-item arg1 a1-39)) (let ((a1-41 (new 'debug 'debug-menu-item-flag "Robotboss" cam-robotboss dm-cam-mode-func))) - (debug-menu-append-item arg1 a1-41) - ) - (let ((a1-43 - (new 'debug 'debug-menu-item-function "Reset Free" 6 (the-as (function object object) dm-cam-settings-func)) - ) - ) - (debug-menu-append-item arg1 a1-43) - ) - (none) - ) + (debug-menu-append-item arg1 a1-41)) + (let ((a1-43 (new 'debug 'debug-menu-item-function "Reset Free" 6 (the-as (function object object) dm-cam-settings-func)))) + (debug-menu-append-item arg1 a1-43)) + (none)) (defun debug-menu-make-camera-menu ((arg0 debug-menu-context)) (let* ((gp-0 (new 'debug 'debug-menu arg0 "Camera menu")) - (s5-0 (new 'debug 'debug-menu-item-submenu "Camera" gp-0)) - ) - (let ((a1-3 (new 'debug 'debug-menu arg0 "Camera mode menu"))) - (debug-menu-make-camera-mode-menu gp-0 a1-3) - ) + (s5-0 (new 'debug 'debug-menu-item-submenu "Camera" gp-0))) + (let ((a1-3 (new 'debug 'debug-menu arg0 "Camera mode menu"))) (debug-menu-make-camera-mode-menu gp-0 a1-3)) (let ((s3-0 (new 'debug 'debug-menu arg0 "Camera externalize menu"))) - (let ((a1-6 (new 'debug 'debug-menu-item-submenu "External" s3-0))) - (debug-menu-append-item gp-0 a1-6) - ) - (let ((a1-8 (new 'debug 'debug-menu-item-flag "CPad 0" 'pad-0 dm-cam-externalize))) - (debug-menu-append-item s3-0 a1-8) - ) - (let ((a1-10 (new 'debug 'debug-menu-item-flag "CPad 1" 'pad-1 dm-cam-externalize))) - (debug-menu-append-item s3-0 a1-10) - ) - (let ((a1-12 (new 'debug 'debug-menu-item-flag "Lock" 'locked dm-cam-externalize))) - (debug-menu-append-item s3-0 a1-12) - ) - (let ((a1-14 (new 'debug 'debug-menu-item-flag "Reset" 'reset dm-cam-externalize))) - (debug-menu-append-item s3-0 a1-14) - ) + (let ((a1-6 (new 'debug 'debug-menu-item-submenu "External" s3-0))) (debug-menu-append-item gp-0 a1-6)) + (let ((a1-8 (new 'debug 'debug-menu-item-flag "CPad 0" 'pad-0 dm-cam-externalize))) (debug-menu-append-item s3-0 a1-8)) + (let ((a1-10 (new 'debug 'debug-menu-item-flag "CPad 1" 'pad-1 dm-cam-externalize))) (debug-menu-append-item s3-0 a1-10)) + (let ((a1-12 (new 'debug 'debug-menu-item-flag "Lock" 'locked dm-cam-externalize))) (debug-menu-append-item s3-0 a1-12)) + (let ((a1-14 (new 'debug 'debug-menu-item-flag "Reset" 'reset dm-cam-externalize))) (debug-menu-append-item s3-0 a1-14)) (let ((a1-16 (new 'debug 'debug-menu-item-flag "Allow z rot" 'allow-z dm-cam-externalize))) - (debug-menu-append-item s3-0 a1-16) - ) + (debug-menu-append-item s3-0 a1-16)) (let ((s2-0 (new 'debug 'debug-menu-item-var "Fov" 0 80))) - (debug-menu-item-var-make-float - s2-0 - dm-cam-render-float - (the-as float 1.0) - #t - (the-as float 15.0) - (the-as float 180.0) - 1 - ) - (debug-menu-append-item s3-0 s2-0) - ) - ) + (debug-menu-item-var-make-float s2-0 + dm-cam-render-float + (the-as float 1.0) + #t + (the-as float 15.0) + (the-as float 180.0) + 1) + (debug-menu-append-item s3-0 s2-0))) (let ((s3-1 (new 'debug 'debug-menu arg0 "Camera collision menu"))) - (let ((a1-22 (new 'debug 'debug-menu-item-submenu "Collision" s3-1))) - (debug-menu-append-item gp-0 a1-22) - ) - (let ((a1-24 (new 'debug 'debug-menu-item-flag "Record" '*record-cam-collide-history* dm-boolean-toggle-pick-func)) - ) - (debug-menu-append-item s3-1 a1-24) - ) - (let ((a1-26 - (new 'debug 'debug-menu-item-flag "Display" '*display-cam-collide-history* dm-boolean-toggle-pick-func) - ) - ) - (debug-menu-append-item s3-1 a1-26) - ) - ) + (let ((a1-22 (new 'debug 'debug-menu-item-submenu "Collision" s3-1))) (debug-menu-append-item gp-0 a1-22)) + (let ((a1-24 (new 'debug 'debug-menu-item-flag "Record" '*record-cam-collide-history* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s3-1 a1-24)) + (let ((a1-26 (new 'debug 'debug-menu-item-flag "Display" '*display-cam-collide-history* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s3-1 a1-26))) (let ((s4-1 (new 'debug 'debug-menu arg0 "Camera settings menu"))) - (let ((a1-29 (new 'debug 'debug-menu-item-submenu "Settings" s4-1))) - (debug-menu-append-item gp-0 a1-29) - ) - (let ((a1-31 (new 'debug 'debug-menu-item-flag "Butt cam" 0 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-31) - ) + (let ((a1-29 (new 'debug 'debug-menu-item-submenu "Settings" s4-1))) (debug-menu-append-item gp-0 a1-29)) + (let ((a1-31 (new 'debug 'debug-menu-item-flag "Butt cam" 0 dm-cam-settings-func))) (debug-menu-append-item s4-1 a1-31)) (let ((a1-33 (new 'debug 'debug-menu-item-flag "Block shift buttons" 13 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-33) - ) - (let ((a1-35 (new 'debug 'debug-menu-item-flag "Same side" 1 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-35) - ) + (debug-menu-append-item s4-1 a1-33)) + (let ((a1-35 (new 'debug 'debug-menu-item-flag "Same side" 1 dm-cam-settings-func))) (debug-menu-append-item s4-1 a1-35)) (let ((a1-37 (new 'debug 'debug-menu-item-flag "Move spherical" 2 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-37) - ) - (let ((a1-39 (new 'debug 'debug-menu-item-flag "Drag" 3 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-39) - ) + (debug-menu-append-item s4-1 a1-37)) + (let ((a1-39 (new 'debug 'debug-menu-item-flag "Drag" 3 dm-cam-settings-func))) (debug-menu-append-item s4-1 a1-39)) (let ((a1-41 (new 'debug 'debug-menu-item-flag "Allow Z rot" 4 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-41) - ) + (debug-menu-append-item s4-1 a1-41)) (let ((a1-43 (new 'debug 'debug-menu-item-flag "Pitch for jump" 7 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-43) - ) + (debug-menu-append-item s4-1 a1-43)) (let ((a1-45 (new 'debug 'debug-menu-item-flag "Find hidden target" 8 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-45) - ) - (let ((a1-47 - (new 'debug 'debug-menu-item-flag "Move along camera Z" '*cam-free-move-along-z* dm-boolean-toggle-pick-func) - ) - ) - (debug-menu-append-item s4-1 a1-47) - ) + (debug-menu-append-item s4-1 a1-45)) + (let ((a1-47 (new 'debug 'debug-menu-item-flag "Move along camera Z" '*cam-free-move-along-z* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s4-1 a1-47)) (let ((a1-49 (new 'debug 'debug-menu-item-flag "Ignore regions" 9 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-49) - ) + (debug-menu-append-item s4-1 a1-49)) (let ((a1-51 (new 'debug 'debug-menu-item-flag "Switch only on ground" 10 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-51) - ) - (let ((a1-53 (new 'debug 'debug-menu-item-flag "Collide" 11 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-53) - ) + (debug-menu-append-item s4-1 a1-51)) + (let ((a1-53 (new 'debug 'debug-menu-item-flag "Collide" 11 dm-cam-settings-func))) (debug-menu-append-item s4-1 a1-53)) (let ((a1-55 (new 'debug 'debug-menu-item-flag "Line of Sight" 12 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-55) - ) - (let ((a1-57 (new 'debug 'debug-menu-item-flag "No Rotate" 14 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-57) - ) + (debug-menu-append-item s4-1 a1-55)) + (let ((a1-57 (new 'debug 'debug-menu-item-flag "No Rotate" 14 dm-cam-settings-func))) (debug-menu-append-item s4-1 a1-57)) (let ((a1-59 (new 'debug 'debug-menu-item-flag "Sticky Angle" 15 dm-cam-settings-func))) - (debug-menu-append-item s4-1 a1-59) - ) + (debug-menu-append-item s4-1 a1-59)) (let ((s3-2 (new 'debug 'debug-menu-item-var "Interp Frms" 40 80))) (debug-menu-item-var-make-int s3-2 dm-cam-settings-func-int 1 #f 0 0 #f) - (debug-menu-append-item s4-1 s3-2) - ) + (debug-menu-append-item s4-1 s3-2)) (let ((s3-3 (new 'debug 'debug-menu-item-var "Fov" 8 80))) - (debug-menu-item-var-make-float - s3-3 - dm-cam-render-float - (the-as float 1.0) - #t - (the-as float 15.0) - (the-as float 180.0) - 1 - ) - (debug-menu-append-item s4-1 s3-3) - ) - (let ((a1-67 (new - 'debug - 'debug-menu-item-flag - "no mip/lod correction" - '*camera-no-mip-correction* - dm-boolean-toggle-pick-func - ) - ) - ) - (debug-menu-append-item s4-1 a1-67) - ) - (let ((a1-69 - (new 'debug 'debug-menu-item-flag "last attacker" '*display-camera-last-attacker* dm-boolean-toggle-pick-func) - ) - ) - (debug-menu-append-item s4-1 a1-69) - ) - (let ((a1-71 (new 'debug 'debug-menu-item-flag "old stats" '*display-camera-old-stats* dm-boolean-toggle-pick-func)) - ) - (debug-menu-append-item s4-1 a1-71) - ) + (debug-menu-item-var-make-float s3-3 + dm-cam-render-float + (the-as float 1.0) + #t + (the-as float 15.0) + (the-as float 180.0) + 1) + (debug-menu-append-item s4-1 s3-3)) + (let ((a1-67 (new 'debug 'debug-menu-item-flag "no mip/lod correction" '*camera-no-mip-correction* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s4-1 a1-67)) + (let ((a1-69 (new 'debug 'debug-menu-item-flag "last attacker" '*display-camera-last-attacker* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s4-1 a1-69)) + (let ((a1-71 (new 'debug 'debug-menu-item-flag "old stats" '*display-camera-old-stats* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s4-1 a1-71)) (let ((a1-73 (new 'debug 'debug-menu-item-flag "xyz axes" '*display-xyz-axes* dm-boolean-toggle-pick-func))) - (debug-menu-append-item s4-1 a1-73) - ) - (let ((a1-75 - (new 'debug 'debug-menu-item-flag "Master Marks" '*display-cam-master-marks* dm-boolean-toggle-pick-func) - ) - ) - (debug-menu-append-item s4-1 a1-75) - ) + (debug-menu-append-item s4-1 a1-73)) + (let ((a1-75 (new 'debug 'debug-menu-item-flag "Master Marks" '*display-cam-master-marks* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s4-1 a1-75)) (let ((a1-77 (new 'debug 'debug-menu-item-flag "Other Marks" '*display-cam-other* dm-boolean-toggle-pick-func))) - (debug-menu-append-item s4-1 a1-77) - ) + (debug-menu-append-item s4-1 a1-77)) (let ((a1-79 (new 'debug 'debug-menu-item-flag "los debug" '*display-cam-los-debug* dm-boolean-toggle-pick-func))) - (debug-menu-append-item s4-1 a1-79) - ) + (debug-menu-append-item s4-1 a1-79)) (let ((a1-81 (new 'debug 'debug-menu-item-flag "los info" '*display-cam-los-info* dm-boolean-toggle-pick-func))) - (debug-menu-append-item s4-1 a1-81) - ) + (debug-menu-append-item s4-1 a1-81)) (let ((a1-83 (new 'debug 'debug-menu-item-flag "los Marks" '*display-cam-los-marks* dm-boolean-toggle-pick-func))) - (debug-menu-append-item s4-1 a1-83) - ) - (let ((a1-85 (new 'debug 'debug-menu-item-flag "coll Marks" '*display-cam-coll-marks* dm-boolean-toggle-pick-func)) - ) - (debug-menu-append-item s4-1 a1-85) - ) - (let ((a1-87 (new 'debug 'debug-menu-item-flag "Camera Marks" '*display-camera-marks* dm-boolean-toggle-pick-func)) - ) - (debug-menu-append-item s4-1 a1-87) - ) - ) - (let ((a1-89 (new 'debug 'debug-menu-item-flag "Edit" '*cam-layout* (lambda ((arg0 symbol) (arg1 debug-menu-msg)) - (when (= arg1 (debug-menu-msg press)) - (if (-> arg0 value) - (cam-layout-stop) - (cam-layout-start) - ) - ) - (-> arg0 value) - ) - ) - ) - ) - (debug-menu-append-item gp-0 a1-89) - ) - (let ((a1-91 (new - 'debug - 'debug-menu-item-function - "Save Pos" - #f - (the-as (function object object) debug-create-cam-restore) - ) - ) - ) - (debug-menu-append-item gp-0 a1-91) - ) - s5-0 - ) - ) + (debug-menu-append-item s4-1 a1-83)) + (let ((a1-85 (new 'debug 'debug-menu-item-flag "coll Marks" '*display-cam-coll-marks* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s4-1 a1-85)) + (let ((a1-87 (new 'debug 'debug-menu-item-flag "Camera Marks" '*display-camera-marks* dm-boolean-toggle-pick-func))) + (debug-menu-append-item s4-1 a1-87))) + (let ((a1-89 (new 'debug + 'debug-menu-item-flag + "Edit" + '*cam-layout* + (lambda ((arg0 symbol) (arg1 debug-menu-msg)) + (when (= arg1 (debug-menu-msg press)) + (if (-> arg0 value) (cam-layout-stop) (cam-layout-start))) + (-> arg0 value))))) + (debug-menu-append-item gp-0 a1-89)) + (let ((a1-91 (new 'debug 'debug-menu-item-function "Save Pos" #f (the-as (function object object) debug-create-cam-restore)))) + (debug-menu-append-item gp-0 a1-91)) + s5-0)) (defun debug-menu-make-shader-menu ((arg0 debug-menu-context)) (let* ((gp-0 (new 'debug 'debug-menu arg0 "Shader menu")) - (s5-0 (new 'debug 'debug-menu-item-submenu "Shader" gp-0)) - ) + (s5-0 (new 'debug 'debug-menu-item-submenu "Shader" gp-0))) (let ((a3-3 (new 'debug 'debug-menu arg0 "Shader pick menu"))) (set! *shader-pick-menu* a3-3) - (let ((a1-4 (new 'debug 'debug-menu-item-submenu "Pick Shader" a3-3))) - (debug-menu-append-item gp-0 a1-4) - ) - ) - (let ((a1-6 (new 'debug 'debug-menu-item-function "Refresh" #f (the-as (function object object) build-shader-list))) - ) - (debug-menu-append-item gp-0 a1-6) - ) + (let ((a1-4 (new 'debug 'debug-menu-item-submenu "Pick Shader" a3-3))) (debug-menu-append-item gp-0 a1-4))) + (let ((a1-6 (new 'debug 'debug-menu-item-function "Refresh" #f (the-as (function object object) build-shader-list)))) + (debug-menu-append-item gp-0 a1-6)) (let ((s4-1 (new 'debug 'debug-menu-item-var "tweak" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-float - s4-1 - (the-as - (function int debug-menu-msg float float float) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 float) (arg3 float)) - (set! arg3 (cond - (*texture-page-dir* - (let* ((s4-0 (the-as texture-id (-> arg0 value))) - (gp-0 (lookup-texture-by-id (the-as texture-id s4-0))) - (v1-3 (-> *texture-page-dir* entries (-> s4-0 page) link)) - ) - (cond - ((and gp-0 v1-3) - (when (= arg1 (debug-menu-msg press)) - (set! (-> gp-0 uv-dist) arg2) - (let ((s5-1 (the-as object (* (-> v1-3 next (-> s4-0 index) shader) 16)))) - (while (nonzero? (the-as uint s5-1)) - (adgif-shader-update! (the-as adgif-shader s5-1) gp-0) - (set! s5-1 (* (-> (the-as adgif-shader s5-1) next shader) 16)) - ) - ) - ) - (-> gp-0 uv-dist) - ) - (else - (empty) - arg3 - ) - ) - ) - ) - (else - (empty) - arg3 - ) - ) - ) - (none) - ) - ) - (the-as float 0.1) - #t - (the-as float 0.1) - (the-as float 30.0) - 1 - ) - (debug-menu-append-item gp-0 s4-1) - ) - (let ((a1-11 (new - 'debug - 'debug-menu-item-function - "all tweak+" - #f - (lambda ((arg0 object)) (all-texture-tweak-adjust *texture-page-dir* (the-as float 0.1))) - ) - ) - ) - (debug-menu-append-item gp-0 a1-11) - ) - (let ((a1-13 (new - 'debug - 'debug-menu-item-function - "all tweak-" - #f - (lambda ((arg0 object)) (all-texture-tweak-adjust *texture-page-dir* (the-as float -0.1))) - ) - ) - ) - (debug-menu-append-item gp-0 a1-13) - ) + (debug-menu-item-var-make-float s4-1 + (the-as (function int debug-menu-msg float float float) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 float) (arg3 float)) + (set! arg3 + (cond + (*texture-page-dir* + (let* ((s4-0 (the-as texture-id (-> arg0 value))) + (gp-0 (lookup-texture-by-id (the-as texture-id s4-0))) + (v1-3 (-> *texture-page-dir* entries (-> s4-0 page) link))) + (cond + ((and gp-0 v1-3) + (when (= arg1 (debug-menu-msg press)) + (set! (-> gp-0 uv-dist) arg2) + (let ((s5-1 (the-as object (* (-> v1-3 next (-> s4-0 index) shader) 16)))) + (while (nonzero? (the-as uint s5-1)) + (adgif-shader-update! (the-as adgif-shader s5-1) gp-0) + (set! s5-1 (* (-> (the-as adgif-shader s5-1) next shader) 16))))) + (-> gp-0 uv-dist)) + (else (empty) arg3)))) + (else (empty) arg3))) + (none))) + (the-as float 0.1) + #t + (the-as float 0.1) + (the-as float 30.0) + 1) + (debug-menu-append-item gp-0 s4-1)) + (let ((a1-11 (new 'debug + 'debug-menu-item-function + "all tweak+" + #f + (lambda ((arg0 object)) + (all-texture-tweak-adjust *texture-page-dir* (the-as float 0.1)))))) + (debug-menu-append-item gp-0 a1-11)) + (let ((a1-13 (new 'debug + 'debug-menu-item-function + "all tweak-" + #f + (lambda ((arg0 object)) + (all-texture-tweak-adjust *texture-page-dir* (the-as float -0.1)))))) + (debug-menu-append-item gp-0 a1-13)) (let ((s4-2 (new 'debug 'debug-menu-item-var "l" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-2 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex1 l) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex1 l) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 3 - #f - ) - (debug-menu-append-item gp-0 s4-2) - ) + (debug-menu-item-var-make-int s4-2 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex1 l) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex1 l) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 3 + #f) + (debug-menu-append-item gp-0 s4-2)) (let ((s4-3 (new 'debug 'debug-menu-item-var "k" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-3 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex1 k) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex1 k) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - -2048 - 2047 - #f - ) - (debug-menu-append-item gp-0 s4-3) - ) + (debug-menu-item-var-make-int s4-3 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex1 k) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex1 k) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + -2048 + 2047 + #f) + (debug-menu-append-item gp-0 s4-3)) (let ((s4-4 (new 'debug 'debug-menu-item-var "mmin" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-4 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex1 mmin) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex1 mmin) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 5 - #t - ) - (debug-menu-append-item gp-0 s4-4) - ) + (debug-menu-item-var-make-int s4-4 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex1 mmin) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex1 mmin) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 5 + #t) + (debug-menu-append-item gp-0 s4-4)) (let ((s4-5 (new 'debug 'debug-menu-item-var "mmag" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-5 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex1 mmag) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex1 mmag) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 1 - #t - ) - (debug-menu-append-item gp-0 s4-5) - ) + (debug-menu-item-var-make-int s4-5 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex1 mmag) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex1 mmag) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 1 + #t) + (debug-menu-append-item gp-0 s4-5)) (let ((s4-6 (new 'debug 'debug-menu-item-var "lcm" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-6 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex1 lcm) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex1 lcm) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 1 - #t - ) - (debug-menu-append-item gp-0 s4-6) - ) + (debug-menu-item-var-make-int s4-6 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex1 lcm) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex1 lcm) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 1 + #t) + (debug-menu-append-item gp-0 s4-6)) (let ((s4-7 (new 'debug 'debug-menu-item-var "tfx" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-7 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex0 tfx) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex0 tfx) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 3 - #t - ) - (debug-menu-append-item gp-0 s4-7) - ) + (debug-menu-item-var-make-int s4-7 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex0 tfx) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex0 tfx) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 3 + #t) + (debug-menu-append-item gp-0 s4-7)) (let ((s4-8 (new 'debug 'debug-menu-item-var "tbp" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-8 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex0 tbp0) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex0 tbp0) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - #x4000 - #t - ) - (debug-menu-append-item gp-0 s4-8) - ) + (debug-menu-item-var-make-int s4-8 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex0 tbp0) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex0 tbp0) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + #x4000 + #t) + (debug-menu-append-item gp-0 s4-8)) (let ((s4-9 (new 'debug 'debug-menu-item-var "tbw" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-9 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex0 tbw) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex0 tbw) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 15 - #t - ) - (debug-menu-append-item gp-0 s4-9) - ) + (debug-menu-item-var-make-int s4-9 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex0 tbw) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex0 tbw) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 15 + #t) + (debug-menu-append-item gp-0 s4-9)) (let ((s4-10 (new 'debug 'debug-menu-item-var "tw" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-10 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex0 tw) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex0 tw) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 10 - #t - ) - (debug-menu-append-item gp-0 s4-10) - ) + (debug-menu-item-var-make-int s4-10 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex0 tw) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex0 tw) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 10 + #t) + (debug-menu-append-item gp-0 s4-10)) (let ((s4-11 (new 'debug 'debug-menu-item-var "th" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-11 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex0 th) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex0 th) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 10 - #t - ) - (debug-menu-append-item gp-0 s4-11) - ) + (debug-menu-item-var-make-int s4-11 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex0 th) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex0 th) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 10 + #t) + (debug-menu-append-item gp-0 s4-11)) (let ((s4-12 (new 'debug 'debug-menu-item-var "mxl" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-12 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) tex1 mxl) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) tex1 mxl) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 6 - #t - ) - (debug-menu-append-item gp-0 s4-12) - ) + (debug-menu-item-var-make-int s4-12 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) tex1 mxl) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) tex1 mxl) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 6 + #t) + (debug-menu-append-item gp-0 s4-12)) (let ((s4-13 (new 'debug 'debug-menu-item-var "wms" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-13 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) clamp wms) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) clamp wms) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 3 - #t - ) - (debug-menu-append-item gp-0 s4-13) - ) + (debug-menu-item-var-make-int s4-13 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) clamp wms) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) clamp wms) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 3 + #t) + (debug-menu-append-item gp-0 s4-13)) (let ((s4-14 (new 'debug 'debug-menu-item-var "wmt" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-14 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) clamp wmt) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) clamp wmt) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 3 - #t - ) - (debug-menu-append-item gp-0 s4-14) - ) + (debug-menu-item-var-make-int s4-14 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) clamp wmt) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) clamp wmt) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 3 + #t) + (debug-menu-append-item gp-0 s4-14)) (let ((s4-15 (new 'debug 'debug-menu-item-var "minu" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-15 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) clamp minu) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) clamp minu) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 511 - #t - ) - (debug-menu-append-item gp-0 s4-15) - ) + (debug-menu-item-var-make-int s4-15 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) clamp minu) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) clamp minu) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 511 + #t) + (debug-menu-append-item gp-0 s4-15)) (let ((s4-16 (new 'debug 'debug-menu-item-var "maxu" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-16 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) clamp maxu) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) clamp maxu) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 511 - #t - ) - (debug-menu-append-item gp-0 s4-16) - ) + (debug-menu-item-var-make-int s4-16 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) clamp maxu) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) clamp maxu) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 511 + #t) + (debug-menu-append-item gp-0 s4-16)) (let ((s4-17 (new 'debug 'debug-menu-item-var "minv" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-17 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) clamp minv) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) clamp minv) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 511 - #t - ) - (debug-menu-append-item gp-0 s4-17) - ) + (debug-menu-item-var-make-int s4-17 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) clamp minv) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) clamp minv) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 511 + #t) + (debug-menu-append-item gp-0 s4-17)) (let ((s4-18 (new 'debug 'debug-menu-item-var "maxv" (the-as int '*edit-shader*) 80))) - (debug-menu-item-var-make-int - s4-18 - (the-as - (function int debug-menu-msg int int int) - (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) - (cond - (*texture-page-dir* - (let* ((v1-1 (the-as texture-id (-> arg0 value))) - (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link)) - ) - (cond - (a0-3 - (when (= arg1 (debug-menu-msg press)) - (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (while (nonzero? (the-as uint a1-8)) - (set! (-> (the-as adgif-shader a1-8) clamp maxv) arg2) - (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16)) - ) - ) - ) - (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) - (if (nonzero? (the-as uint v1-8)) - (-> (the-as adgif-shader v1-8) clamp maxv) - arg3 - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - (else - arg3 - ) - ) - ) - ) - 1 - #t - 0 - 511 - #t - ) - (debug-menu-append-item gp-0 s4-18) - ) - s5-0 - ) - ) + (debug-menu-item-var-make-int s4-18 + (the-as (function int debug-menu-msg int int int) + (lambda ((arg0 symbol) (arg1 debug-menu-msg) (arg2 int) (arg3 basic)) + (cond + (*texture-page-dir* + (let* ((v1-1 (the-as texture-id (-> arg0 value))) + (a0-3 (-> *texture-page-dir* entries (-> v1-1 page) link))) + (cond + (a0-3 + (when (= arg1 (debug-menu-msg press)) + (let ((a1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (while (nonzero? (the-as uint a1-8)) + (set! (-> (the-as adgif-shader a1-8) clamp maxv) arg2) + (set! a1-8 (* (-> (the-as adgif-shader a1-8) next shader) 16))))) + (let ((v1-8 (the-as object (* (-> a0-3 next (-> v1-1 index) shader) 16)))) + (if (nonzero? (the-as uint v1-8)) (-> (the-as adgif-shader v1-8) clamp maxv) arg3))) + (else arg3)))) + (else arg3)))) + 1 + #t + 0 + 511 + #t) + (debug-menu-append-item gp-0 s4-18)) + s5-0)) (defun debug-menu-make-instance-menu ((arg0 debug-menu-context)) (let* ((gp-0 (new 'debug 'debug-menu arg0 "Instance menu")) - (s5-0 (new 'debug 'debug-menu-item-submenu "Instance" gp-0)) - ) + (s5-0 (new 'debug 'debug-menu-item-submenu "Instance" gp-0))) (let ((a3-3 (new 'debug 'debug-menu arg0 "Instance shrub menu"))) (set! *instance-shrub-menu* a3-3) - (let ((a1-4 (new 'debug 'debug-menu-item-submenu "Pick Shrub" a3-3))) - (debug-menu-append-item gp-0 a1-4) - ) - ) + (let ((a1-4 (new 'debug 'debug-menu-item-submenu "Pick Shrub" a3-3))) (debug-menu-append-item gp-0 a1-4))) (let ((a3-5 (new 'debug 'debug-menu arg0 "Instance tie menu"))) (set! *instance-tie-menu* a3-5) - (let ((a1-7 (new 'debug 'debug-menu-item-submenu "Pick Tie" a3-5))) - (debug-menu-append-item gp-0 a1-7) - ) - ) - (let ((a1-9 (new 'debug 'debug-menu-item-function "Refresh" #f build-instance-list))) - (debug-menu-append-item gp-0 a1-9) - ) + (let ((a1-7 (new 'debug 'debug-menu-item-submenu "Pick Tie" a3-5))) (debug-menu-append-item gp-0 a1-7))) + (let ((a1-9 (new 'debug 'debug-menu-item-function "Refresh" #f build-instance-list))) (debug-menu-append-item gp-0 a1-9)) (let ((s3-0 (new 'debug 'debug-menu-item-var "near" (the-as int '*edit-instance*) 80))) - (debug-menu-item-var-make-float - s3-0 - (the-as - (function int debug-menu-msg float float float) - (lambda ((arg0 debug-menu) (arg1 debug-menu-msg) (arg2 float) (arg3 float)) - (let ((gp-0 (find-instance-by-name (-> arg0 name)))) - (cond - (gp-0 - (when (= arg1 (debug-menu-msg press)) - (set! (-> gp-0 dists x) (* 4096.0 arg2)) - (prototype-bucket-recalc-fields gp-0) - ) - (* 0.00024414062 (-> gp-0 dists x)) - ) - (else - (empty) - arg3 - ) - ) - ) - ) - ) - (the-as float 1.0) - #t - (the-as float 10.0) - (the-as float 250.0) - 1 - ) - (debug-menu-append-item gp-0 s3-0) - ) + (debug-menu-item-var-make-float s3-0 + (the-as (function int debug-menu-msg float float float) + (lambda ((arg0 debug-menu) (arg1 debug-menu-msg) (arg2 float) (arg3 float)) + (let ((gp-0 (find-instance-by-name (-> arg0 name)))) + (cond + (gp-0 + (when (= arg1 (debug-menu-msg press)) + (set! (-> gp-0 dists x) (* 4096.0 arg2)) + (prototype-bucket-recalc-fields gp-0)) + (* 0.00024414062 (-> gp-0 dists x))) + (else (empty) arg3))))) + (the-as float 1.0) + #t + (the-as float 10.0) + (the-as float 250.0) + 1) + (debug-menu-append-item gp-0 s3-0)) (let ((s3-1 (new 'debug 'debug-menu-item-var "far" (the-as int '*edit-instance*) 80))) - (debug-menu-item-var-make-float - s3-1 - (the-as - (function int debug-menu-msg float float float) - (lambda ((arg0 debug-menu) (arg1 debug-menu-msg) (arg2 float) (arg3 float)) - (let ((gp-0 (find-instance-by-name (-> arg0 name)))) - (cond - (gp-0 - (when (= arg1 (debug-menu-msg press)) - (set! (-> gp-0 dists w) (* 4096.0 arg2)) - (prototype-bucket-recalc-fields gp-0) - ) - (* 0.00024414062 (-> gp-0 dists w)) - ) - (else - (empty) - arg3 - ) - ) - ) - ) - ) - (the-as float 1.0) - #t - (the-as float 10.0) - (the-as float 250.0) - 1 - ) - (debug-menu-append-item gp-0 s3-1) - ) + (debug-menu-item-var-make-float s3-1 + (the-as (function int debug-menu-msg float float float) + (lambda ((arg0 debug-menu) (arg1 debug-menu-msg) (arg2 float) (arg3 float)) + (let ((gp-0 (find-instance-by-name (-> arg0 name)))) + (cond + (gp-0 + (when (= arg1 (debug-menu-msg press)) + (set! (-> gp-0 dists w) (* 4096.0 arg2)) + (prototype-bucket-recalc-fields gp-0)) + (* 0.00024414062 (-> gp-0 dists w))) + (else (empty) arg3))))) + (the-as float 1.0) + #t + (the-as float 10.0) + (the-as float 250.0) + 1) + (debug-menu-append-item gp-0 s3-1)) (let ((a1-17 (new 'debug 'debug-menu-item-flag "invisible" 1 dm-edit-instance-toggle-pick-func))) - (debug-menu-append-item gp-0 a1-17) - ) + (debug-menu-append-item gp-0 a1-17)) (let ((a3-13 (new 'debug 'debug-menu arg0 "Enable Instance Tie Menu"))) (set! *enable-instance-tie-menu* a3-13) - (let ((a1-20 (new 'debug 'debug-menu-item-submenu "Enable Tie" a3-13))) - (debug-menu-append-item gp-0 a1-20) - ) - ) - (let ((a1-22 - (new 'debug 'debug-menu-item-flag "Instance Info" '*display-instance-info* dm-boolean-toggle-pick-func) - ) - ) - (debug-menu-append-item gp-0 a1-22) - ) - s5-0 - ) - ) + (let ((a1-20 (new 'debug 'debug-menu-item-submenu "Enable Tie" a3-13))) (debug-menu-append-item gp-0 a1-20))) + (let ((a1-22 (new 'debug 'debug-menu-item-flag "Instance Info" '*display-instance-info* dm-boolean-toggle-pick-func))) + (debug-menu-append-item gp-0 a1-22)) + s5-0)) (defun dm-task-unknown ((arg0 int) (arg1 debug-menu-msg)) (let ((gp-0 (/ arg0 8))) - (if (not (task-exists? (the-as game-task gp-0) (task-status unknown))) - (return 'invalid) - ) - (if (= arg1 (debug-menu-msg press)) - (close-specific-task! (the-as game-task gp-0) (task-status unknown)) - ) - (task-closed? (the-as game-task gp-0) (task-status unknown)) - ) - ) + (if (not (task-exists? (the-as game-task gp-0) (task-status unknown))) (return 'invalid)) + (if (= arg1 (debug-menu-msg press)) (close-specific-task! (the-as game-task gp-0) (task-status unknown))) + (task-closed? (the-as game-task gp-0) (task-status unknown)))) (defun dm-task-hint ((arg0 int) (arg1 debug-menu-msg)) (let ((gp-0 (/ arg0 8))) - (if (not (task-exists? (the-as game-task gp-0) (task-status need-hint))) - (return 'invalid) - ) - (if (= arg1 (debug-menu-msg press)) - (close-specific-task! (the-as game-task gp-0) (task-status need-hint)) - ) - (task-closed? (the-as game-task gp-0) (task-status need-hint)) - ) - ) + (if (not (task-exists? (the-as game-task gp-0) (task-status need-hint))) (return 'invalid)) + (if (= arg1 (debug-menu-msg press)) (close-specific-task! (the-as game-task gp-0) (task-status need-hint))) + (task-closed? (the-as game-task gp-0) (task-status need-hint)))) (defun dm-task-introduction ((arg0 int) (arg1 debug-menu-msg)) (let ((gp-0 (/ arg0 8))) - (if (not (task-exists? (the-as game-task gp-0) (task-status need-introduction))) - (return 'invalid) - ) - (if (= arg1 (debug-menu-msg press)) - (close-specific-task! (the-as game-task gp-0) (task-status need-introduction)) - ) - (task-closed? (the-as game-task gp-0) (task-status need-introduction)) - ) - ) + (if (not (task-exists? (the-as game-task gp-0) (task-status need-introduction))) (return 'invalid)) + (if (= arg1 (debug-menu-msg press)) (close-specific-task! (the-as game-task gp-0) (task-status need-introduction))) + (task-closed? (the-as game-task gp-0) (task-status need-introduction)))) (defun dm-task-reminder-a ((arg0 int) (arg1 debug-menu-msg)) (let ((gp-0 (/ arg0 8))) - (if (not (task-exists? (the-as game-task gp-0) (task-status need-reminder-a))) - (return 'invalid) - ) - (if (= arg1 (debug-menu-msg press)) - (close-specific-task! (the-as game-task gp-0) (task-status need-reminder-a)) - ) - (task-closed? (the-as game-task gp-0) (task-status need-reminder-a)) - ) - ) + (if (not (task-exists? (the-as game-task gp-0) (task-status need-reminder-a))) (return 'invalid)) + (if (= arg1 (debug-menu-msg press)) (close-specific-task! (the-as game-task gp-0) (task-status need-reminder-a))) + (task-closed? (the-as game-task gp-0) (task-status need-reminder-a)))) (defun dm-task-reminder ((arg0 int) (arg1 debug-menu-msg)) (let ((gp-0 (/ arg0 8))) - (if (not (task-exists? (the-as game-task gp-0) (task-status need-reminder))) - (return 'invalid) - ) - (if (= arg1 (debug-menu-msg press)) - (close-specific-task! (the-as game-task gp-0) (task-status need-reminder)) - ) - (task-closed? (the-as game-task gp-0) (task-status need-reminder)) - ) - ) + (if (not (task-exists? (the-as game-task gp-0) (task-status need-reminder))) (return 'invalid)) + (if (= arg1 (debug-menu-msg press)) (close-specific-task! (the-as game-task gp-0) (task-status need-reminder))) + (task-closed? (the-as game-task gp-0) (task-status need-reminder)))) (defun dm-task-reward-speech ((arg0 int) (arg1 debug-menu-msg)) (let ((gp-0 (/ arg0 8))) - (if (not (task-exists? (the-as game-task gp-0) (task-status need-reward-speech))) - (return 'invalid) - ) - (if (= arg1 (debug-menu-msg press)) - (close-specific-task! (the-as game-task gp-0) (task-status need-reward-speech)) - ) - (task-closed? (the-as game-task gp-0) (task-status need-reward-speech)) - ) - ) + (if (not (task-exists? (the-as game-task gp-0) (task-status need-reward-speech))) (return 'invalid)) + (if (= arg1 (debug-menu-msg press)) (close-specific-task! (the-as game-task gp-0) (task-status need-reward-speech))) + (task-closed? (the-as game-task gp-0) (task-status need-reward-speech)))) (defun dm-task-resolution ((arg0 int) (arg1 debug-menu-msg)) (let ((gp-0 (/ arg0 8))) - (if (not (task-exists? (the-as game-task gp-0) (task-status need-resolution))) - (return 'invalid) - ) + (if (not (task-exists? (the-as game-task gp-0) (task-status need-resolution))) (return 'invalid)) (when (= arg1 (debug-menu-msg press)) (send-event *target* 'get-pickup 6 (the float gp-0)) - (close-specific-task! (the-as game-task gp-0) (task-status need-resolution)) - ) - (task-closed? (the-as game-task gp-0) (task-status need-resolution)) - ) - ) + (close-specific-task! (the-as game-task gp-0) (task-status need-resolution))) + (task-closed? (the-as game-task gp-0) (task-status need-resolution)))) (defun debug-menu-make-task-unknown-menu ((arg0 debug-menu) (arg1 debug-menu-context)) - (debug-menu-append-item - arg0 - (debug-menu-make-from-template arg1 '(menu - "unknown" - #f - #f - (flag "jungle-eggtop" 2 dm-task-unknown) - (flag "jungle-lurkerm" 3 dm-task-unknown) - (flag "jungle-tower" 4 dm-task-unknown) - (flag "jungle-fishgame" 5 dm-task-unknown) - (flag "jungle-plant" 6 dm-task-unknown) - (flag "jungle-buzzer" 7 dm-task-unknown) - (flag "jungle-canyon-end" 8 dm-task-unknown) - (flag "jungle-temple-door" 9 dm-task-unknown) - (flag "village1-yakow" 10 dm-task-unknown) - (flag "village1-mayor-money" 11 dm-task-unknown) - (flag "village1-uncle-money" 12 dm-task-unknown) - (flag "village1-oracle-money1" 13 dm-task-unknown) - (flag "village1-oracle-money2" 14 dm-task-unknown) - (flag "beach-ecorocks" 15 dm-task-unknown) - (flag "beach-pelican" 16 dm-task-unknown) - (flag "beach-flutflut" 17 dm-task-unknown) - (flag "beach-seagull" 18 dm-task-unknown) - (flag "beach-cannon" 19 dm-task-unknown) - (flag "beach-buzzer" 20 dm-task-unknown) - (flag "beach-gimmie" 21 dm-task-unknown) - (flag "beach-sentinel" 22 dm-task-unknown) - (flag "misty-muse" 23 dm-task-unknown) - (flag "misty-boat" 24 dm-task-unknown) - (flag "misty-warehouse" 25 dm-task-unknown) - (flag "misty-cannon" 26 dm-task-unknown) - (flag "misty-bike" 27 dm-task-unknown) - (flag "misty-buzzer" 28 dm-task-unknown) - (flag "misty-bike-jump" 29 dm-task-unknown) - (flag "misty-eco-challenge" 30 dm-task-unknown) - (flag "village2-gambler-money" 31 dm-task-unknown) - (flag "village2-geologist-money" 32 dm-task-unknown) - (flag "village2-warrior-money" 33 dm-task-unknown) - (flag "village2-oracle-money1" 34 dm-task-unknown) - (flag "village2-oracle-money2" 35 dm-task-unknown) - (flag "swamp-billy" 36 dm-task-unknown) - (flag "swamp-flutflut" 37 dm-task-unknown) - (flag "swamp-battle" 38 dm-task-unknown) - (flag "swamp-tether-1" 39 dm-task-unknown) - (flag "swamp-tether-2" 40 dm-task-unknown) - (flag "swamp-tether-3" 41 dm-task-unknown) - (flag "swamp-tether-4" 42 dm-task-unknown) - (flag "swamp-buzzer" 43 dm-task-unknown) - (flag "sunken-platforms" 44 dm-task-unknown) - (flag "sunken-pipe" 45 dm-task-unknown) - (flag "sunken-slide" 46 dm-task-unknown) - (flag "sunken-room" 47 dm-task-unknown) - (flag "sunken-sharks" 48 dm-task-unknown) - (flag "sunken-buzzer" 49 dm-task-unknown) - (flag "sunken-top-of-helix" 50 dm-task-unknown) - (flag "sunken-spinning-room" 51 dm-task-unknown) - (flag "rolling-race" 52 dm-task-unknown) - (flag "rolling-robbers" 53 dm-task-unknown) - (flag "rolling-moles" 54 dm-task-unknown) - (flag "rolling-plants" 55 dm-task-unknown) - (flag "rolling-lake" 56 dm-task-unknown) - (flag "rolling-buzzer" 57 dm-task-unknown) - (flag "rolling-ring-chase-1" 58 dm-task-unknown) - (flag "rolling-ring-chase-2" 59 dm-task-unknown) - (flag "snow-eggtop" 60 dm-task-unknown) - (flag "snow-ram" 61 dm-task-unknown) - (flag "snow-fort" 62 dm-task-unknown) - (flag "snow-ball" 63 dm-task-unknown) - (flag "snow-bunnies" 64 dm-task-unknown) - (flag "snow-buzzer" 65 dm-task-unknown) - (flag "snow-bumpers" 66 dm-task-unknown) - (flag "snow-cage" 67 dm-task-unknown) - (flag "firecanyon-buzzer" 68 dm-task-unknown) - (flag "firecanyon-end" 69 dm-task-unknown) - (flag "citadel-sage-green" 70 dm-task-unknown) - (flag "citadel-sage-blue" 71 dm-task-unknown) - (flag "citadel-sage-red" 72 dm-task-unknown) - (flag "citadel-sage-yellow" 73 dm-task-unknown) - (flag "village3-extra1" 74 dm-task-unknown) - (flag "village1-buzzer" 75 dm-task-unknown) - (flag "village2-buzzer" 76 dm-task-unknown) - (flag "village3-buzzer" 77 dm-task-unknown) - (flag "cave-gnawers" 78 dm-task-unknown) - (flag "cave-dark-crystals" 79 dm-task-unknown) - (flag "cave-dark-climb" 80 dm-task-unknown) - (flag "cave-robot-climb" 81 dm-task-unknown) - (flag "cave-swing-poles" 82 dm-task-unknown) - (flag "cave-spider-tunnel" 83 dm-task-unknown) - (flag "cave-platforms" 84 dm-task-unknown) - (flag "cave-buzzer" 85 dm-task-unknown) - (flag "ogre-boss" 86 dm-task-unknown) - (flag "ogre-end" 87 dm-task-unknown) - (flag "ogre-buzzer" 88 dm-task-unknown) - (flag "lavatube-end" 89 dm-task-unknown) - (flag "lavatube-buzzer" 90 dm-task-unknown) - (flag "citadel-buzzer" 91 dm-task-unknown) - (flag "training-gimmie" 92 dm-task-unknown) - (flag "training-door" 93 dm-task-unknown) - (flag "training-climb" 94 dm-task-unknown) - (flag "training-buzzer" 95 dm-task-unknown) - (flag "village3-miner-money1" 96 dm-task-unknown) - (flag "village3-miner-money2" 97 dm-task-unknown) - (flag "village3-miner-money3" 98 dm-task-unknown) - (flag "village3-miner-money4" 99 dm-task-unknown) - (flag "village3-oracle-money1" 100 dm-task-unknown) - (flag "village3-oracle-money2" 101 dm-task-unknown) - (flag "firecanyon-assistant" 102 dm-task-unknown) - (flag "village2-levitator" 103 dm-task-unknown) - (flag "swamp-arm" 104 dm-task-unknown) - (flag "village3-button" 105 dm-task-unknown) - (flag "red-eggtop" 106 dm-task-unknown) - (flag "lavatube-balls" 107 dm-task-unknown) - (flag "lavatube-start" 108 dm-task-unknown) - (flag "intro" 109 dm-task-unknown) - (flag "ogre-secret" 110 dm-task-unknown) - (flag "village4-button" 111 dm-task-unknown) - (flag "finalboss-movies" 112 dm-task-unknown) - (flag "plunger-lurker-hit" 113 dm-task-unknown) - (flag "leaving-misty" 114 dm-task-unknown) - (flag "assistant-village3" 115 dm-task-unknown) - #f - #f - #f - #f - #f - #f - #f - #f - ) - ) - ) - (none) - ) + (debug-menu-append-item arg0 + (debug-menu-make-from-template arg1 + '(menu "unknown" + #f + #f + (flag "jungle-eggtop" 2 dm-task-unknown) + (flag "jungle-lurkerm" 3 dm-task-unknown) + (flag "jungle-tower" 4 dm-task-unknown) + (flag "jungle-fishgame" 5 dm-task-unknown) + (flag "jungle-plant" 6 dm-task-unknown) + (flag "jungle-buzzer" 7 dm-task-unknown) + (flag "jungle-canyon-end" 8 dm-task-unknown) + (flag "jungle-temple-door" 9 dm-task-unknown) + (flag "village1-yakow" 10 dm-task-unknown) + (flag "village1-mayor-money" 11 dm-task-unknown) + (flag "village1-uncle-money" 12 dm-task-unknown) + (flag "village1-oracle-money1" 13 dm-task-unknown) + (flag "village1-oracle-money2" 14 dm-task-unknown) + (flag "beach-ecorocks" 15 dm-task-unknown) + (flag "beach-pelican" 16 dm-task-unknown) + (flag "beach-flutflut" 17 dm-task-unknown) + (flag "beach-seagull" 18 dm-task-unknown) + (flag "beach-cannon" 19 dm-task-unknown) + (flag "beach-buzzer" 20 dm-task-unknown) + (flag "beach-gimmie" 21 dm-task-unknown) + (flag "beach-sentinel" 22 dm-task-unknown) + (flag "misty-muse" 23 dm-task-unknown) + (flag "misty-boat" 24 dm-task-unknown) + (flag "misty-warehouse" 25 dm-task-unknown) + (flag "misty-cannon" 26 dm-task-unknown) + (flag "misty-bike" 27 dm-task-unknown) + (flag "misty-buzzer" 28 dm-task-unknown) + (flag "misty-bike-jump" 29 dm-task-unknown) + (flag "misty-eco-challenge" 30 dm-task-unknown) + (flag "village2-gambler-money" 31 dm-task-unknown) + (flag "village2-geologist-money" 32 dm-task-unknown) + (flag "village2-warrior-money" 33 dm-task-unknown) + (flag "village2-oracle-money1" 34 dm-task-unknown) + (flag "village2-oracle-money2" 35 dm-task-unknown) + (flag "swamp-billy" 36 dm-task-unknown) + (flag "swamp-flutflut" 37 dm-task-unknown) + (flag "swamp-battle" 38 dm-task-unknown) + (flag "swamp-tether-1" 39 dm-task-unknown) + (flag "swamp-tether-2" 40 dm-task-unknown) + (flag "swamp-tether-3" 41 dm-task-unknown) + (flag "swamp-tether-4" 42 dm-task-unknown) + (flag "swamp-buzzer" 43 dm-task-unknown) + (flag "sunken-platforms" 44 dm-task-unknown) + (flag "sunken-pipe" 45 dm-task-unknown) + (flag "sunken-slide" 46 dm-task-unknown) + (flag "sunken-room" 47 dm-task-unknown) + (flag "sunken-sharks" 48 dm-task-unknown) + (flag "sunken-buzzer" 49 dm-task-unknown) + (flag "sunken-top-of-helix" 50 dm-task-unknown) + (flag "sunken-spinning-room" 51 dm-task-unknown) + (flag "rolling-race" 52 dm-task-unknown) + (flag "rolling-robbers" 53 dm-task-unknown) + (flag "rolling-moles" 54 dm-task-unknown) + (flag "rolling-plants" 55 dm-task-unknown) + (flag "rolling-lake" 56 dm-task-unknown) + (flag "rolling-buzzer" 57 dm-task-unknown) + (flag "rolling-ring-chase-1" 58 dm-task-unknown) + (flag "rolling-ring-chase-2" 59 dm-task-unknown) + (flag "snow-eggtop" 60 dm-task-unknown) + (flag "snow-ram" 61 dm-task-unknown) + (flag "snow-fort" 62 dm-task-unknown) + (flag "snow-ball" 63 dm-task-unknown) + (flag "snow-bunnies" 64 dm-task-unknown) + (flag "snow-buzzer" 65 dm-task-unknown) + (flag "snow-bumpers" 66 dm-task-unknown) + (flag "snow-cage" 67 dm-task-unknown) + (flag "firecanyon-buzzer" 68 dm-task-unknown) + (flag "firecanyon-end" 69 dm-task-unknown) + (flag "citadel-sage-green" 70 dm-task-unknown) + (flag "citadel-sage-blue" 71 dm-task-unknown) + (flag "citadel-sage-red" 72 dm-task-unknown) + (flag "citadel-sage-yellow" 73 dm-task-unknown) + (flag "village3-extra1" 74 dm-task-unknown) + (flag "village1-buzzer" 75 dm-task-unknown) + (flag "village2-buzzer" 76 dm-task-unknown) + (flag "village3-buzzer" 77 dm-task-unknown) + (flag "cave-gnawers" 78 dm-task-unknown) + (flag "cave-dark-crystals" 79 dm-task-unknown) + (flag "cave-dark-climb" 80 dm-task-unknown) + (flag "cave-robot-climb" 81 dm-task-unknown) + (flag "cave-swing-poles" 82 dm-task-unknown) + (flag "cave-spider-tunnel" 83 dm-task-unknown) + (flag "cave-platforms" 84 dm-task-unknown) + (flag "cave-buzzer" 85 dm-task-unknown) + (flag "ogre-boss" 86 dm-task-unknown) + (flag "ogre-end" 87 dm-task-unknown) + (flag "ogre-buzzer" 88 dm-task-unknown) + (flag "lavatube-end" 89 dm-task-unknown) + (flag "lavatube-buzzer" 90 dm-task-unknown) + (flag "citadel-buzzer" 91 dm-task-unknown) + (flag "training-gimmie" 92 dm-task-unknown) + (flag "training-door" 93 dm-task-unknown) + (flag "training-climb" 94 dm-task-unknown) + (flag "training-buzzer" 95 dm-task-unknown) + (flag "village3-miner-money1" 96 dm-task-unknown) + (flag "village3-miner-money2" 97 dm-task-unknown) + (flag "village3-miner-money3" 98 dm-task-unknown) + (flag "village3-miner-money4" 99 dm-task-unknown) + (flag "village3-oracle-money1" 100 dm-task-unknown) + (flag "village3-oracle-money2" 101 dm-task-unknown) + (flag "firecanyon-assistant" 102 dm-task-unknown) + (flag "village2-levitator" 103 dm-task-unknown) + (flag "swamp-arm" 104 dm-task-unknown) + (flag "village3-button" 105 dm-task-unknown) + (flag "red-eggtop" 106 dm-task-unknown) + (flag "lavatube-balls" 107 dm-task-unknown) + (flag "lavatube-start" 108 dm-task-unknown) + (flag "intro" 109 dm-task-unknown) + (flag "ogre-secret" 110 dm-task-unknown) + (flag "village4-button" 111 dm-task-unknown) + (flag "finalboss-movies" 112 dm-task-unknown) + (flag "plunger-lurker-hit" 113 dm-task-unknown) + (flag "leaving-misty" 114 dm-task-unknown) + (flag "assistant-village3" 115 dm-task-unknown) + #f + #f + #f + #f + #f + #f + #f + #f))) + (none)) (defun debug-menu-make-task-need-hint-menu ((arg0 debug-menu) (arg1 debug-menu-context)) - (debug-menu-append-item - arg0 - (debug-menu-make-from-template arg1 '(menu - "need-hint" - #f - #f - (flag "jungle-eggtop" 2 dm-task-hint) - (flag "jungle-lurkerm" 3 dm-task-hint) - (flag "jungle-tower" 4 dm-task-hint) - (flag "jungle-fishgame" 5 dm-task-hint) - (flag "jungle-plant" 6 dm-task-hint) - (flag "jungle-buzzer" 7 dm-task-hint) - (flag "jungle-canyon-end" 8 dm-task-hint) - (flag "jungle-temple-door" 9 dm-task-hint) - (flag "village1-yakow" 10 dm-task-hint) - (flag "village1-mayor-money" 11 dm-task-hint) - (flag "village1-uncle-money" 12 dm-task-hint) - (flag "village1-oracle-money1" 13 dm-task-hint) - (flag "village1-oracle-money2" 14 dm-task-hint) - (flag "beach-ecorocks" 15 dm-task-hint) - (flag "beach-pelican" 16 dm-task-hint) - (flag "beach-flutflut" 17 dm-task-hint) - (flag "beach-seagull" 18 dm-task-hint) - (flag "beach-cannon" 19 dm-task-hint) - (flag "beach-buzzer" 20 dm-task-hint) - (flag "beach-gimmie" 21 dm-task-hint) - (flag "beach-sentinel" 22 dm-task-hint) - (flag "misty-muse" 23 dm-task-hint) - (flag "misty-boat" 24 dm-task-hint) - (flag "misty-warehouse" 25 dm-task-hint) - (flag "misty-cannon" 26 dm-task-hint) - (flag "misty-bike" 27 dm-task-hint) - (flag "misty-buzzer" 28 dm-task-hint) - (flag "misty-bike-jump" 29 dm-task-hint) - (flag "misty-eco-challenge" 30 dm-task-hint) - (flag "village2-gambler-money" 31 dm-task-hint) - (flag "village2-geologist-money" 32 dm-task-hint) - (flag "village2-warrior-money" 33 dm-task-hint) - (flag "village2-oracle-money1" 34 dm-task-hint) - (flag "village2-oracle-money2" 35 dm-task-hint) - (flag "swamp-billy" 36 dm-task-hint) - (flag "swamp-flutflut" 37 dm-task-hint) - (flag "swamp-battle" 38 dm-task-hint) - (flag "swamp-tether-1" 39 dm-task-hint) - (flag "swamp-tether-2" 40 dm-task-hint) - (flag "swamp-tether-3" 41 dm-task-hint) - (flag "swamp-tether-4" 42 dm-task-hint) - (flag "swamp-buzzer" 43 dm-task-hint) - (flag "sunken-platforms" 44 dm-task-hint) - (flag "sunken-pipe" 45 dm-task-hint) - (flag "sunken-slide" 46 dm-task-hint) - (flag "sunken-room" 47 dm-task-hint) - (flag "sunken-sharks" 48 dm-task-hint) - (flag "sunken-buzzer" 49 dm-task-hint) - (flag "sunken-top-of-helix" 50 dm-task-hint) - (flag "sunken-spinning-room" 51 dm-task-hint) - (flag "rolling-race" 52 dm-task-hint) - (flag "rolling-robbers" 53 dm-task-hint) - (flag "rolling-moles" 54 dm-task-hint) - (flag "rolling-plants" 55 dm-task-hint) - (flag "rolling-lake" 56 dm-task-hint) - (flag "rolling-buzzer" 57 dm-task-hint) - (flag "rolling-ring-chase-1" 58 dm-task-hint) - (flag "rolling-ring-chase-2" 59 dm-task-hint) - (flag "snow-eggtop" 60 dm-task-hint) - (flag "snow-ram" 61 dm-task-hint) - (flag "snow-fort" 62 dm-task-hint) - (flag "snow-ball" 63 dm-task-hint) - (flag "snow-bunnies" 64 dm-task-hint) - (flag "snow-buzzer" 65 dm-task-hint) - (flag "snow-bumpers" 66 dm-task-hint) - (flag "snow-cage" 67 dm-task-hint) - (flag "firecanyon-buzzer" 68 dm-task-hint) - (flag "firecanyon-end" 69 dm-task-hint) - (flag "citadel-sage-green" 70 dm-task-hint) - (flag "citadel-sage-blue" 71 dm-task-hint) - (flag "citadel-sage-red" 72 dm-task-hint) - (flag "citadel-sage-yellow" 73 dm-task-hint) - (flag "village3-extra1" 74 dm-task-hint) - (flag "village1-buzzer" 75 dm-task-hint) - (flag "village2-buzzer" 76 dm-task-hint) - (flag "village3-buzzer" 77 dm-task-hint) - (flag "cave-gnawers" 78 dm-task-hint) - (flag "cave-dark-crystals" 79 dm-task-hint) - (flag "cave-dark-climb" 80 dm-task-hint) - (flag "cave-robot-climb" 81 dm-task-hint) - (flag "cave-swing-poles" 82 dm-task-hint) - (flag "cave-spider-tunnel" 83 dm-task-hint) - (flag "cave-platforms" 84 dm-task-hint) - (flag "cave-buzzer" 85 dm-task-hint) - (flag "ogre-boss" 86 dm-task-hint) - (flag "ogre-end" 87 dm-task-hint) - (flag "ogre-buzzer" 88 dm-task-hint) - (flag "lavatube-end" 89 dm-task-hint) - (flag "lavatube-buzzer" 90 dm-task-hint) - (flag "citadel-buzzer" 91 dm-task-hint) - (flag "training-gimmie" 92 dm-task-hint) - (flag "training-door" 93 dm-task-hint) - (flag "training-climb" 94 dm-task-hint) - (flag "training-buzzer" 95 dm-task-hint) - (flag "village3-miner-money1" 96 dm-task-hint) - (flag "village3-miner-money2" 97 dm-task-hint) - (flag "village3-miner-money3" 98 dm-task-hint) - (flag "village3-miner-money4" 99 dm-task-hint) - (flag "village3-oracle-money1" 100 dm-task-hint) - (flag "village3-oracle-money2" 101 dm-task-hint) - (flag "firecanyon-assistant" 102 dm-task-hint) - (flag "village2-levitator" 103 dm-task-hint) - (flag "swamp-arm" 104 dm-task-hint) - (flag "village3-button" 105 dm-task-hint) - (flag "red-eggtop" 106 dm-task-hint) - (flag "lavatube-balls" 107 dm-task-hint) - (flag "lavatube-start" 108 dm-task-hint) - (flag "intro" 109 dm-task-hint) - (flag "ogre-secret" 110 dm-task-hint) - (flag "village4-button" 111 dm-task-hint) - (flag "finalboss-movies" 112 dm-task-hint) - (flag "plunger-lurker-hit" 113 dm-task-hint) - (flag "leaving-misty" 114 dm-task-hint) - (flag "assistant-village3" 115 dm-task-hint) - #f - #f - #f - #f - #f - #f - #f - #f - ) - ) - ) - (none) - ) + (debug-menu-append-item arg0 + (debug-menu-make-from-template arg1 + '(menu "need-hint" + #f + #f + (flag "jungle-eggtop" 2 dm-task-hint) + (flag "jungle-lurkerm" 3 dm-task-hint) + (flag "jungle-tower" 4 dm-task-hint) + (flag "jungle-fishgame" 5 dm-task-hint) + (flag "jungle-plant" 6 dm-task-hint) + (flag "jungle-buzzer" 7 dm-task-hint) + (flag "jungle-canyon-end" 8 dm-task-hint) + (flag "jungle-temple-door" 9 dm-task-hint) + (flag "village1-yakow" 10 dm-task-hint) + (flag "village1-mayor-money" 11 dm-task-hint) + (flag "village1-uncle-money" 12 dm-task-hint) + (flag "village1-oracle-money1" 13 dm-task-hint) + (flag "village1-oracle-money2" 14 dm-task-hint) + (flag "beach-ecorocks" 15 dm-task-hint) + (flag "beach-pelican" 16 dm-task-hint) + (flag "beach-flutflut" 17 dm-task-hint) + (flag "beach-seagull" 18 dm-task-hint) + (flag "beach-cannon" 19 dm-task-hint) + (flag "beach-buzzer" 20 dm-task-hint) + (flag "beach-gimmie" 21 dm-task-hint) + (flag "beach-sentinel" 22 dm-task-hint) + (flag "misty-muse" 23 dm-task-hint) + (flag "misty-boat" 24 dm-task-hint) + (flag "misty-warehouse" 25 dm-task-hint) + (flag "misty-cannon" 26 dm-task-hint) + (flag "misty-bike" 27 dm-task-hint) + (flag "misty-buzzer" 28 dm-task-hint) + (flag "misty-bike-jump" 29 dm-task-hint) + (flag "misty-eco-challenge" 30 dm-task-hint) + (flag "village2-gambler-money" 31 dm-task-hint) + (flag "village2-geologist-money" 32 dm-task-hint) + (flag "village2-warrior-money" 33 dm-task-hint) + (flag "village2-oracle-money1" 34 dm-task-hint) + (flag "village2-oracle-money2" 35 dm-task-hint) + (flag "swamp-billy" 36 dm-task-hint) + (flag "swamp-flutflut" 37 dm-task-hint) + (flag "swamp-battle" 38 dm-task-hint) + (flag "swamp-tether-1" 39 dm-task-hint) + (flag "swamp-tether-2" 40 dm-task-hint) + (flag "swamp-tether-3" 41 dm-task-hint) + (flag "swamp-tether-4" 42 dm-task-hint) + (flag "swamp-buzzer" 43 dm-task-hint) + (flag "sunken-platforms" 44 dm-task-hint) + (flag "sunken-pipe" 45 dm-task-hint) + (flag "sunken-slide" 46 dm-task-hint) + (flag "sunken-room" 47 dm-task-hint) + (flag "sunken-sharks" 48 dm-task-hint) + (flag "sunken-buzzer" 49 dm-task-hint) + (flag "sunken-top-of-helix" 50 dm-task-hint) + (flag "sunken-spinning-room" 51 dm-task-hint) + (flag "rolling-race" 52 dm-task-hint) + (flag "rolling-robbers" 53 dm-task-hint) + (flag "rolling-moles" 54 dm-task-hint) + (flag "rolling-plants" 55 dm-task-hint) + (flag "rolling-lake" 56 dm-task-hint) + (flag "rolling-buzzer" 57 dm-task-hint) + (flag "rolling-ring-chase-1" 58 dm-task-hint) + (flag "rolling-ring-chase-2" 59 dm-task-hint) + (flag "snow-eggtop" 60 dm-task-hint) + (flag "snow-ram" 61 dm-task-hint) + (flag "snow-fort" 62 dm-task-hint) + (flag "snow-ball" 63 dm-task-hint) + (flag "snow-bunnies" 64 dm-task-hint) + (flag "snow-buzzer" 65 dm-task-hint) + (flag "snow-bumpers" 66 dm-task-hint) + (flag "snow-cage" 67 dm-task-hint) + (flag "firecanyon-buzzer" 68 dm-task-hint) + (flag "firecanyon-end" 69 dm-task-hint) + (flag "citadel-sage-green" 70 dm-task-hint) + (flag "citadel-sage-blue" 71 dm-task-hint) + (flag "citadel-sage-red" 72 dm-task-hint) + (flag "citadel-sage-yellow" 73 dm-task-hint) + (flag "village3-extra1" 74 dm-task-hint) + (flag "village1-buzzer" 75 dm-task-hint) + (flag "village2-buzzer" 76 dm-task-hint) + (flag "village3-buzzer" 77 dm-task-hint) + (flag "cave-gnawers" 78 dm-task-hint) + (flag "cave-dark-crystals" 79 dm-task-hint) + (flag "cave-dark-climb" 80 dm-task-hint) + (flag "cave-robot-climb" 81 dm-task-hint) + (flag "cave-swing-poles" 82 dm-task-hint) + (flag "cave-spider-tunnel" 83 dm-task-hint) + (flag "cave-platforms" 84 dm-task-hint) + (flag "cave-buzzer" 85 dm-task-hint) + (flag "ogre-boss" 86 dm-task-hint) + (flag "ogre-end" 87 dm-task-hint) + (flag "ogre-buzzer" 88 dm-task-hint) + (flag "lavatube-end" 89 dm-task-hint) + (flag "lavatube-buzzer" 90 dm-task-hint) + (flag "citadel-buzzer" 91 dm-task-hint) + (flag "training-gimmie" 92 dm-task-hint) + (flag "training-door" 93 dm-task-hint) + (flag "training-climb" 94 dm-task-hint) + (flag "training-buzzer" 95 dm-task-hint) + (flag "village3-miner-money1" 96 dm-task-hint) + (flag "village3-miner-money2" 97 dm-task-hint) + (flag "village3-miner-money3" 98 dm-task-hint) + (flag "village3-miner-money4" 99 dm-task-hint) + (flag "village3-oracle-money1" 100 dm-task-hint) + (flag "village3-oracle-money2" 101 dm-task-hint) + (flag "firecanyon-assistant" 102 dm-task-hint) + (flag "village2-levitator" 103 dm-task-hint) + (flag "swamp-arm" 104 dm-task-hint) + (flag "village3-button" 105 dm-task-hint) + (flag "red-eggtop" 106 dm-task-hint) + (flag "lavatube-balls" 107 dm-task-hint) + (flag "lavatube-start" 108 dm-task-hint) + (flag "intro" 109 dm-task-hint) + (flag "ogre-secret" 110 dm-task-hint) + (flag "village4-button" 111 dm-task-hint) + (flag "finalboss-movies" 112 dm-task-hint) + (flag "plunger-lurker-hit" 113 dm-task-hint) + (flag "leaving-misty" 114 dm-task-hint) + (flag "assistant-village3" 115 dm-task-hint) + #f + #f + #f + #f + #f + #f + #f + #f))) + (none)) (defun debug-menu-make-task-need-introduction-menu ((arg0 debug-menu) (arg1 debug-menu-context)) - (debug-menu-append-item - arg0 - (debug-menu-make-from-template arg1 '(menu - "need-introduction" - #f - #f - (flag "jungle-eggtop" 2 dm-task-introduction) - (flag "jungle-lurkerm" 3 dm-task-introduction) - (flag "jungle-tower" 4 dm-task-introduction) - (flag "jungle-fishgame" 5 dm-task-introduction) - (flag "jungle-plant" 6 dm-task-introduction) - (flag "jungle-buzzer" 7 dm-task-introduction) - (flag "jungle-canyon-end" 8 dm-task-introduction) - (flag "jungle-temple-door" 9 dm-task-introduction) - (flag "village1-yakow" 10 dm-task-introduction) - (flag "village1-mayor-money" 11 dm-task-introduction) - (flag "village1-uncle-money" 12 dm-task-introduction) - (flag "village1-oracle-money1" 13 dm-task-introduction) - (flag "village1-oracle-money2" 14 dm-task-introduction) - (flag "beach-ecorocks" 15 dm-task-introduction) - (flag "beach-pelican" 16 dm-task-introduction) - (flag "beach-flutflut" 17 dm-task-introduction) - (flag "beach-seagull" 18 dm-task-introduction) - (flag "beach-cannon" 19 dm-task-introduction) - (flag "beach-buzzer" 20 dm-task-introduction) - (flag "beach-gimmie" 21 dm-task-introduction) - (flag "beach-sentinel" 22 dm-task-introduction) - (flag "misty-muse" 23 dm-task-introduction) - (flag "misty-boat" 24 dm-task-introduction) - (flag "misty-warehouse" 25 dm-task-introduction) - (flag "misty-cannon" 26 dm-task-introduction) - (flag "misty-bike" 27 dm-task-introduction) - (flag "misty-buzzer" 28 dm-task-introduction) - (flag "misty-bike-jump" 29 dm-task-introduction) - (flag "misty-eco-challenge" 30 dm-task-introduction) - (flag "village2-gambler-money" 31 dm-task-introduction) - (flag "village2-geologist-money" 32 dm-task-introduction) - (flag "village2-warrior-money" 33 dm-task-introduction) - (flag "village2-oracle-money1" 34 dm-task-introduction) - (flag "village2-oracle-money2" 35 dm-task-introduction) - (flag "swamp-billy" 36 dm-task-introduction) - (flag "swamp-flutflut" 37 dm-task-introduction) - (flag "swamp-battle" 38 dm-task-introduction) - (flag "swamp-tether-1" 39 dm-task-introduction) - (flag "swamp-tether-2" 40 dm-task-introduction) - (flag "swamp-tether-3" 41 dm-task-introduction) - (flag "swamp-tether-4" 42 dm-task-introduction) - (flag "swamp-buzzer" 43 dm-task-introduction) - (flag "sunken-platforms" 44 dm-task-introduction) - (flag "sunken-pipe" 45 dm-task-introduction) - (flag "sunken-slide" 46 dm-task-introduction) - (flag "sunken-room" 47 dm-task-introduction) - (flag "sunken-sharks" 48 dm-task-introduction) - (flag "sunken-buzzer" 49 dm-task-introduction) - (flag "sunken-top-of-helix" 50 dm-task-introduction) - (flag "sunken-spinning-room" 51 dm-task-introduction) - (flag "rolling-race" 52 dm-task-introduction) - (flag "rolling-robbers" 53 dm-task-introduction) - (flag "rolling-moles" 54 dm-task-introduction) - (flag "rolling-plants" 55 dm-task-introduction) - (flag "rolling-lake" 56 dm-task-introduction) - (flag "rolling-buzzer" 57 dm-task-introduction) - (flag "rolling-ring-chase-1" 58 dm-task-introduction) - (flag "rolling-ring-chase-2" 59 dm-task-introduction) - (flag "snow-eggtop" 60 dm-task-introduction) - (flag "snow-ram" 61 dm-task-introduction) - (flag "snow-fort" 62 dm-task-introduction) - (flag "snow-ball" 63 dm-task-introduction) - (flag "snow-bunnies" 64 dm-task-introduction) - (flag "snow-buzzer" 65 dm-task-introduction) - (flag "snow-bumpers" 66 dm-task-introduction) - (flag "snow-cage" 67 dm-task-introduction) - (flag "firecanyon-buzzer" 68 dm-task-introduction) - (flag "firecanyon-end" 69 dm-task-introduction) - (flag "citadel-sage-green" 70 dm-task-introduction) - (flag "citadel-sage-blue" 71 dm-task-introduction) - (flag "citadel-sage-red" 72 dm-task-introduction) - (flag "citadel-sage-yellow" 73 dm-task-introduction) - (flag "village3-extra1" 74 dm-task-introduction) - (flag "village1-buzzer" 75 dm-task-introduction) - (flag "village2-buzzer" 76 dm-task-introduction) - (flag "village3-buzzer" 77 dm-task-introduction) - (flag "cave-gnawers" 78 dm-task-introduction) - (flag "cave-dark-crystals" 79 dm-task-introduction) - (flag "cave-dark-climb" 80 dm-task-introduction) - (flag "cave-robot-climb" 81 dm-task-introduction) - (flag "cave-swing-poles" 82 dm-task-introduction) - (flag "cave-spider-tunnel" 83 dm-task-introduction) - (flag "cave-platforms" 84 dm-task-introduction) - (flag "cave-buzzer" 85 dm-task-introduction) - (flag "ogre-boss" 86 dm-task-introduction) - (flag "ogre-end" 87 dm-task-introduction) - (flag "ogre-buzzer" 88 dm-task-introduction) - (flag "lavatube-end" 89 dm-task-introduction) - (flag "lavatube-buzzer" 90 dm-task-introduction) - (flag "citadel-buzzer" 91 dm-task-introduction) - (flag "training-gimmie" 92 dm-task-introduction) - (flag "training-door" 93 dm-task-introduction) - (flag "training-climb" 94 dm-task-introduction) - (flag "training-buzzer" 95 dm-task-introduction) - (flag "village3-miner-money1" 96 dm-task-introduction) - (flag "village3-miner-money2" 97 dm-task-introduction) - (flag "village3-miner-money3" 98 dm-task-introduction) - (flag "village3-miner-money4" 99 dm-task-introduction) - (flag "village3-oracle-money1" 100 dm-task-introduction) - (flag "village3-oracle-money2" 101 dm-task-introduction) - (flag "firecanyon-assistant" 102 dm-task-introduction) - (flag "village2-levitator" 103 dm-task-introduction) - (flag "swamp-arm" 104 dm-task-introduction) - (flag "village3-button" 105 dm-task-introduction) - (flag "red-eggtop" 106 dm-task-introduction) - (flag "lavatube-balls" 107 dm-task-introduction) - (flag "lavatube-start" 108 dm-task-introduction) - (flag "intro" 109 dm-task-introduction) - (flag "ogre-secret" 110 dm-task-introduction) - (flag "village4-button" 111 dm-task-introduction) - (flag "finalboss-movies" 112 dm-task-introduction) - (flag "plunger-lurker-hit" 113 dm-task-introduction) - (flag "leaving-misty" 114 dm-task-introduction) - (flag "assistant-village3" 115 dm-task-introduction) - #f - #f - #f - #f - #f - #f - #f - #f - ) - ) - ) - (none) - ) + (debug-menu-append-item arg0 + (debug-menu-make-from-template arg1 + '(menu "need-introduction" + #f + #f + (flag "jungle-eggtop" 2 dm-task-introduction) + (flag "jungle-lurkerm" 3 dm-task-introduction) + (flag "jungle-tower" 4 dm-task-introduction) + (flag "jungle-fishgame" 5 dm-task-introduction) + (flag "jungle-plant" 6 dm-task-introduction) + (flag "jungle-buzzer" 7 dm-task-introduction) + (flag "jungle-canyon-end" 8 dm-task-introduction) + (flag "jungle-temple-door" 9 dm-task-introduction) + (flag "village1-yakow" 10 dm-task-introduction) + (flag "village1-mayor-money" 11 dm-task-introduction) + (flag "village1-uncle-money" 12 dm-task-introduction) + (flag "village1-oracle-money1" 13 dm-task-introduction) + (flag "village1-oracle-money2" 14 dm-task-introduction) + (flag "beach-ecorocks" 15 dm-task-introduction) + (flag "beach-pelican" 16 dm-task-introduction) + (flag "beach-flutflut" 17 dm-task-introduction) + (flag "beach-seagull" 18 dm-task-introduction) + (flag "beach-cannon" 19 dm-task-introduction) + (flag "beach-buzzer" 20 dm-task-introduction) + (flag "beach-gimmie" 21 dm-task-introduction) + (flag "beach-sentinel" 22 dm-task-introduction) + (flag "misty-muse" 23 dm-task-introduction) + (flag "misty-boat" 24 dm-task-introduction) + (flag "misty-warehouse" 25 dm-task-introduction) + (flag "misty-cannon" 26 dm-task-introduction) + (flag "misty-bike" 27 dm-task-introduction) + (flag "misty-buzzer" 28 dm-task-introduction) + (flag "misty-bike-jump" 29 dm-task-introduction) + (flag "misty-eco-challenge" 30 dm-task-introduction) + (flag "village2-gambler-money" 31 dm-task-introduction) + (flag "village2-geologist-money" 32 dm-task-introduction) + (flag "village2-warrior-money" 33 dm-task-introduction) + (flag "village2-oracle-money1" 34 dm-task-introduction) + (flag "village2-oracle-money2" 35 dm-task-introduction) + (flag "swamp-billy" 36 dm-task-introduction) + (flag "swamp-flutflut" 37 dm-task-introduction) + (flag "swamp-battle" 38 dm-task-introduction) + (flag "swamp-tether-1" 39 dm-task-introduction) + (flag "swamp-tether-2" 40 dm-task-introduction) + (flag "swamp-tether-3" 41 dm-task-introduction) + (flag "swamp-tether-4" 42 dm-task-introduction) + (flag "swamp-buzzer" 43 dm-task-introduction) + (flag "sunken-platforms" 44 dm-task-introduction) + (flag "sunken-pipe" 45 dm-task-introduction) + (flag "sunken-slide" 46 dm-task-introduction) + (flag "sunken-room" 47 dm-task-introduction) + (flag "sunken-sharks" 48 dm-task-introduction) + (flag "sunken-buzzer" 49 dm-task-introduction) + (flag "sunken-top-of-helix" 50 dm-task-introduction) + (flag "sunken-spinning-room" 51 dm-task-introduction) + (flag "rolling-race" 52 dm-task-introduction) + (flag "rolling-robbers" 53 dm-task-introduction) + (flag "rolling-moles" 54 dm-task-introduction) + (flag "rolling-plants" 55 dm-task-introduction) + (flag "rolling-lake" 56 dm-task-introduction) + (flag "rolling-buzzer" 57 dm-task-introduction) + (flag "rolling-ring-chase-1" 58 dm-task-introduction) + (flag "rolling-ring-chase-2" 59 dm-task-introduction) + (flag "snow-eggtop" 60 dm-task-introduction) + (flag "snow-ram" 61 dm-task-introduction) + (flag "snow-fort" 62 dm-task-introduction) + (flag "snow-ball" 63 dm-task-introduction) + (flag "snow-bunnies" 64 dm-task-introduction) + (flag "snow-buzzer" 65 dm-task-introduction) + (flag "snow-bumpers" 66 dm-task-introduction) + (flag "snow-cage" 67 dm-task-introduction) + (flag "firecanyon-buzzer" 68 dm-task-introduction) + (flag "firecanyon-end" 69 dm-task-introduction) + (flag "citadel-sage-green" 70 dm-task-introduction) + (flag "citadel-sage-blue" 71 dm-task-introduction) + (flag "citadel-sage-red" 72 dm-task-introduction) + (flag "citadel-sage-yellow" 73 dm-task-introduction) + (flag "village3-extra1" 74 dm-task-introduction) + (flag "village1-buzzer" 75 dm-task-introduction) + (flag "village2-buzzer" 76 dm-task-introduction) + (flag "village3-buzzer" 77 dm-task-introduction) + (flag "cave-gnawers" 78 dm-task-introduction) + (flag "cave-dark-crystals" 79 dm-task-introduction) + (flag "cave-dark-climb" 80 dm-task-introduction) + (flag "cave-robot-climb" 81 dm-task-introduction) + (flag "cave-swing-poles" 82 dm-task-introduction) + (flag "cave-spider-tunnel" 83 dm-task-introduction) + (flag "cave-platforms" 84 dm-task-introduction) + (flag "cave-buzzer" 85 dm-task-introduction) + (flag "ogre-boss" 86 dm-task-introduction) + (flag "ogre-end" 87 dm-task-introduction) + (flag "ogre-buzzer" 88 dm-task-introduction) + (flag "lavatube-end" 89 dm-task-introduction) + (flag "lavatube-buzzer" 90 dm-task-introduction) + (flag "citadel-buzzer" 91 dm-task-introduction) + (flag "training-gimmie" 92 dm-task-introduction) + (flag "training-door" 93 dm-task-introduction) + (flag "training-climb" 94 dm-task-introduction) + (flag "training-buzzer" 95 dm-task-introduction) + (flag "village3-miner-money1" 96 dm-task-introduction) + (flag "village3-miner-money2" 97 dm-task-introduction) + (flag "village3-miner-money3" 98 dm-task-introduction) + (flag "village3-miner-money4" 99 dm-task-introduction) + (flag "village3-oracle-money1" 100 dm-task-introduction) + (flag "village3-oracle-money2" 101 dm-task-introduction) + (flag "firecanyon-assistant" 102 dm-task-introduction) + (flag "village2-levitator" 103 dm-task-introduction) + (flag "swamp-arm" 104 dm-task-introduction) + (flag "village3-button" 105 dm-task-introduction) + (flag "red-eggtop" 106 dm-task-introduction) + (flag "lavatube-balls" 107 dm-task-introduction) + (flag "lavatube-start" 108 dm-task-introduction) + (flag "intro" 109 dm-task-introduction) + (flag "ogre-secret" 110 dm-task-introduction) + (flag "village4-button" 111 dm-task-introduction) + (flag "finalboss-movies" 112 dm-task-introduction) + (flag "plunger-lurker-hit" 113 dm-task-introduction) + (flag "leaving-misty" 114 dm-task-introduction) + (flag "assistant-village3" 115 dm-task-introduction) + #f + #f + #f + #f + #f + #f + #f + #f))) + (none)) (defun debug-menu-make-task-need-reminder-a-menu ((arg0 debug-menu) (arg1 debug-menu-context)) - (debug-menu-append-item - arg0 - (debug-menu-make-from-template arg1 '(menu - "need-reminder-a" - #f - #f - (flag "jungle-eggtop" 2 dm-task-reminder-a) - (flag "jungle-lurkerm" 3 dm-task-reminder-a) - (flag "jungle-tower" 4 dm-task-reminder-a) - (flag "jungle-fishgame" 5 dm-task-reminder-a) - (flag "jungle-plant" 6 dm-task-reminder-a) - (flag "jungle-buzzer" 7 dm-task-reminder-a) - (flag "jungle-canyon-end" 8 dm-task-reminder-a) - (flag "jungle-temple-door" 9 dm-task-reminder-a) - (flag "village1-yakow" 10 dm-task-reminder-a) - (flag "village1-mayor-money" 11 dm-task-reminder-a) - (flag "village1-uncle-money" 12 dm-task-reminder-a) - (flag "village1-oracle-money1" 13 dm-task-reminder-a) - (flag "village1-oracle-money2" 14 dm-task-reminder-a) - (flag "beach-ecorocks" 15 dm-task-reminder-a) - (flag "beach-pelican" 16 dm-task-reminder-a) - (flag "beach-flutflut" 17 dm-task-reminder-a) - (flag "beach-seagull" 18 dm-task-reminder-a) - (flag "beach-cannon" 19 dm-task-reminder-a) - (flag "beach-buzzer" 20 dm-task-reminder-a) - (flag "beach-gimmie" 21 dm-task-reminder-a) - (flag "beach-sentinel" 22 dm-task-reminder-a) - (flag "misty-muse" 23 dm-task-reminder-a) - (flag "misty-boat" 24 dm-task-reminder-a) - (flag "misty-warehouse" 25 dm-task-reminder-a) - (flag "misty-cannon" 26 dm-task-reminder-a) - (flag "misty-bike" 27 dm-task-reminder-a) - (flag "misty-buzzer" 28 dm-task-reminder-a) - (flag "misty-bike-jump" 29 dm-task-reminder-a) - (flag "misty-eco-challenge" 30 dm-task-reminder-a) - (flag "village2-gambler-money" 31 dm-task-reminder-a) - (flag "village2-geologist-money" 32 dm-task-reminder-a) - (flag "village2-warrior-money" 33 dm-task-reminder-a) - (flag "village2-oracle-money1" 34 dm-task-reminder-a) - (flag "village2-oracle-money2" 35 dm-task-reminder-a) - (flag "swamp-billy" 36 dm-task-reminder-a) - (flag "swamp-flutflut" 37 dm-task-reminder-a) - (flag "swamp-battle" 38 dm-task-reminder-a) - (flag "swamp-tether-1" 39 dm-task-reminder-a) - (flag "swamp-tether-2" 40 dm-task-reminder-a) - (flag "swamp-tether-3" 41 dm-task-reminder-a) - (flag "swamp-tether-4" 42 dm-task-reminder-a) - (flag "swamp-buzzer" 43 dm-task-reminder-a) - (flag "sunken-platforms" 44 dm-task-reminder-a) - (flag "sunken-pipe" 45 dm-task-reminder-a) - (flag "sunken-slide" 46 dm-task-reminder-a) - (flag "sunken-room" 47 dm-task-reminder-a) - (flag "sunken-sharks" 48 dm-task-reminder-a) - (flag "sunken-buzzer" 49 dm-task-reminder-a) - (flag "sunken-top-of-helix" 50 dm-task-reminder-a) - (flag "sunken-spinning-room" 51 dm-task-reminder-a) - (flag "rolling-race" 52 dm-task-reminder-a) - (flag "rolling-robbers" 53 dm-task-reminder-a) - (flag "rolling-moles" 54 dm-task-reminder-a) - (flag "rolling-plants" 55 dm-task-reminder-a) - (flag "rolling-lake" 56 dm-task-reminder-a) - (flag "rolling-buzzer" 57 dm-task-reminder-a) - (flag "rolling-ring-chase-1" 58 dm-task-reminder-a) - (flag "rolling-ring-chase-2" 59 dm-task-reminder-a) - (flag "snow-eggtop" 60 dm-task-reminder-a) - (flag "snow-ram" 61 dm-task-reminder-a) - (flag "snow-fort" 62 dm-task-reminder-a) - (flag "snow-ball" 63 dm-task-reminder-a) - (flag "snow-bunnies" 64 dm-task-reminder-a) - (flag "snow-buzzer" 65 dm-task-reminder-a) - (flag "snow-bumpers" 66 dm-task-reminder-a) - (flag "snow-cage" 67 dm-task-reminder-a) - (flag "firecanyon-buzzer" 68 dm-task-reminder-a) - (flag "firecanyon-end" 69 dm-task-reminder-a) - (flag "citadel-sage-green" 70 dm-task-reminder-a) - (flag "citadel-sage-blue" 71 dm-task-reminder-a) - (flag "citadel-sage-red" 72 dm-task-reminder-a) - (flag "citadel-sage-yellow" 73 dm-task-reminder-a) - (flag "village3-extra1" 74 dm-task-reminder-a) - (flag "village1-buzzer" 75 dm-task-reminder-a) - (flag "village2-buzzer" 76 dm-task-reminder-a) - (flag "village3-buzzer" 77 dm-task-reminder-a) - (flag "cave-gnawers" 78 dm-task-reminder-a) - (flag "cave-dark-crystals" 79 dm-task-reminder-a) - (flag "cave-dark-climb" 80 dm-task-reminder-a) - (flag "cave-robot-climb" 81 dm-task-reminder-a) - (flag "cave-swing-poles" 82 dm-task-reminder-a) - (flag "cave-spider-tunnel" 83 dm-task-reminder-a) - (flag "cave-platforms" 84 dm-task-reminder-a) - (flag "cave-buzzer" 85 dm-task-reminder-a) - (flag "ogre-boss" 86 dm-task-reminder-a) - (flag "ogre-end" 87 dm-task-reminder-a) - (flag "ogre-buzzer" 88 dm-task-reminder-a) - (flag "lavatube-end" 89 dm-task-reminder-a) - (flag "lavatube-buzzer" 90 dm-task-reminder-a) - (flag "citadel-buzzer" 91 dm-task-reminder-a) - (flag "training-gimmie" 92 dm-task-reminder-a) - (flag "training-door" 93 dm-task-reminder-a) - (flag "training-climb" 94 dm-task-reminder-a) - (flag "training-buzzer" 95 dm-task-reminder-a) - (flag "village3-miner-money1" 96 dm-task-reminder-a) - (flag "village3-miner-money2" 97 dm-task-reminder-a) - (flag "village3-miner-money3" 98 dm-task-reminder-a) - (flag "village3-miner-money4" 99 dm-task-reminder-a) - (flag "village3-oracle-money1" 100 dm-task-reminder-a) - (flag "village3-oracle-money2" 101 dm-task-reminder-a) - (flag "firecanyon-assistant" 102 dm-task-reminder-a) - (flag "village2-levitator" 103 dm-task-reminder-a) - (flag "swamp-arm" 104 dm-task-reminder-a) - (flag "village3-button" 105 dm-task-reminder-a) - (flag "red-eggtop" 106 dm-task-reminder-a) - (flag "lavatube-balls" 107 dm-task-reminder-a) - (flag "lavatube-start" 108 dm-task-reminder-a) - (flag "intro" 109 dm-task-reminder-a) - (flag "ogre-secret" 110 dm-task-reminder-a) - (flag "village4-button" 111 dm-task-reminder-a) - (flag "finalboss-movies" 112 dm-task-reminder-a) - (flag "plunger-lurker-hit" 113 dm-task-reminder-a) - (flag "leaving-misty" 114 dm-task-reminder-a) - (flag "assistant-village3" 115 dm-task-reminder-a) - #f - #f - #f - #f - #f - #f - #f - #f - ) - ) - ) - (none) - ) + (debug-menu-append-item arg0 + (debug-menu-make-from-template arg1 + '(menu "need-reminder-a" + #f + #f + (flag "jungle-eggtop" 2 dm-task-reminder-a) + (flag "jungle-lurkerm" 3 dm-task-reminder-a) + (flag "jungle-tower" 4 dm-task-reminder-a) + (flag "jungle-fishgame" 5 dm-task-reminder-a) + (flag "jungle-plant" 6 dm-task-reminder-a) + (flag "jungle-buzzer" 7 dm-task-reminder-a) + (flag "jungle-canyon-end" 8 dm-task-reminder-a) + (flag "jungle-temple-door" 9 dm-task-reminder-a) + (flag "village1-yakow" 10 dm-task-reminder-a) + (flag "village1-mayor-money" 11 dm-task-reminder-a) + (flag "village1-uncle-money" 12 dm-task-reminder-a) + (flag "village1-oracle-money1" 13 dm-task-reminder-a) + (flag "village1-oracle-money2" 14 dm-task-reminder-a) + (flag "beach-ecorocks" 15 dm-task-reminder-a) + (flag "beach-pelican" 16 dm-task-reminder-a) + (flag "beach-flutflut" 17 dm-task-reminder-a) + (flag "beach-seagull" 18 dm-task-reminder-a) + (flag "beach-cannon" 19 dm-task-reminder-a) + (flag "beach-buzzer" 20 dm-task-reminder-a) + (flag "beach-gimmie" 21 dm-task-reminder-a) + (flag "beach-sentinel" 22 dm-task-reminder-a) + (flag "misty-muse" 23 dm-task-reminder-a) + (flag "misty-boat" 24 dm-task-reminder-a) + (flag "misty-warehouse" 25 dm-task-reminder-a) + (flag "misty-cannon" 26 dm-task-reminder-a) + (flag "misty-bike" 27 dm-task-reminder-a) + (flag "misty-buzzer" 28 dm-task-reminder-a) + (flag "misty-bike-jump" 29 dm-task-reminder-a) + (flag "misty-eco-challenge" 30 dm-task-reminder-a) + (flag "village2-gambler-money" 31 dm-task-reminder-a) + (flag "village2-geologist-money" 32 dm-task-reminder-a) + (flag "village2-warrior-money" 33 dm-task-reminder-a) + (flag "village2-oracle-money1" 34 dm-task-reminder-a) + (flag "village2-oracle-money2" 35 dm-task-reminder-a) + (flag "swamp-billy" 36 dm-task-reminder-a) + (flag "swamp-flutflut" 37 dm-task-reminder-a) + (flag "swamp-battle" 38 dm-task-reminder-a) + (flag "swamp-tether-1" 39 dm-task-reminder-a) + (flag "swamp-tether-2" 40 dm-task-reminder-a) + (flag "swamp-tether-3" 41 dm-task-reminder-a) + (flag "swamp-tether-4" 42 dm-task-reminder-a) + (flag "swamp-buzzer" 43 dm-task-reminder-a) + (flag "sunken-platforms" 44 dm-task-reminder-a) + (flag "sunken-pipe" 45 dm-task-reminder-a) + (flag "sunken-slide" 46 dm-task-reminder-a) + (flag "sunken-room" 47 dm-task-reminder-a) + (flag "sunken-sharks" 48 dm-task-reminder-a) + (flag "sunken-buzzer" 49 dm-task-reminder-a) + (flag "sunken-top-of-helix" 50 dm-task-reminder-a) + (flag "sunken-spinning-room" 51 dm-task-reminder-a) + (flag "rolling-race" 52 dm-task-reminder-a) + (flag "rolling-robbers" 53 dm-task-reminder-a) + (flag "rolling-moles" 54 dm-task-reminder-a) + (flag "rolling-plants" 55 dm-task-reminder-a) + (flag "rolling-lake" 56 dm-task-reminder-a) + (flag "rolling-buzzer" 57 dm-task-reminder-a) + (flag "rolling-ring-chase-1" 58 dm-task-reminder-a) + (flag "rolling-ring-chase-2" 59 dm-task-reminder-a) + (flag "snow-eggtop" 60 dm-task-reminder-a) + (flag "snow-ram" 61 dm-task-reminder-a) + (flag "snow-fort" 62 dm-task-reminder-a) + (flag "snow-ball" 63 dm-task-reminder-a) + (flag "snow-bunnies" 64 dm-task-reminder-a) + (flag "snow-buzzer" 65 dm-task-reminder-a) + (flag "snow-bumpers" 66 dm-task-reminder-a) + (flag "snow-cage" 67 dm-task-reminder-a) + (flag "firecanyon-buzzer" 68 dm-task-reminder-a) + (flag "firecanyon-end" 69 dm-task-reminder-a) + (flag "citadel-sage-green" 70 dm-task-reminder-a) + (flag "citadel-sage-blue" 71 dm-task-reminder-a) + (flag "citadel-sage-red" 72 dm-task-reminder-a) + (flag "citadel-sage-yellow" 73 dm-task-reminder-a) + (flag "village3-extra1" 74 dm-task-reminder-a) + (flag "village1-buzzer" 75 dm-task-reminder-a) + (flag "village2-buzzer" 76 dm-task-reminder-a) + (flag "village3-buzzer" 77 dm-task-reminder-a) + (flag "cave-gnawers" 78 dm-task-reminder-a) + (flag "cave-dark-crystals" 79 dm-task-reminder-a) + (flag "cave-dark-climb" 80 dm-task-reminder-a) + (flag "cave-robot-climb" 81 dm-task-reminder-a) + (flag "cave-swing-poles" 82 dm-task-reminder-a) + (flag "cave-spider-tunnel" 83 dm-task-reminder-a) + (flag "cave-platforms" 84 dm-task-reminder-a) + (flag "cave-buzzer" 85 dm-task-reminder-a) + (flag "ogre-boss" 86 dm-task-reminder-a) + (flag "ogre-end" 87 dm-task-reminder-a) + (flag "ogre-buzzer" 88 dm-task-reminder-a) + (flag "lavatube-end" 89 dm-task-reminder-a) + (flag "lavatube-buzzer" 90 dm-task-reminder-a) + (flag "citadel-buzzer" 91 dm-task-reminder-a) + (flag "training-gimmie" 92 dm-task-reminder-a) + (flag "training-door" 93 dm-task-reminder-a) + (flag "training-climb" 94 dm-task-reminder-a) + (flag "training-buzzer" 95 dm-task-reminder-a) + (flag "village3-miner-money1" 96 dm-task-reminder-a) + (flag "village3-miner-money2" 97 dm-task-reminder-a) + (flag "village3-miner-money3" 98 dm-task-reminder-a) + (flag "village3-miner-money4" 99 dm-task-reminder-a) + (flag "village3-oracle-money1" 100 dm-task-reminder-a) + (flag "village3-oracle-money2" 101 dm-task-reminder-a) + (flag "firecanyon-assistant" 102 dm-task-reminder-a) + (flag "village2-levitator" 103 dm-task-reminder-a) + (flag "swamp-arm" 104 dm-task-reminder-a) + (flag "village3-button" 105 dm-task-reminder-a) + (flag "red-eggtop" 106 dm-task-reminder-a) + (flag "lavatube-balls" 107 dm-task-reminder-a) + (flag "lavatube-start" 108 dm-task-reminder-a) + (flag "intro" 109 dm-task-reminder-a) + (flag "ogre-secret" 110 dm-task-reminder-a) + (flag "village4-button" 111 dm-task-reminder-a) + (flag "finalboss-movies" 112 dm-task-reminder-a) + (flag "plunger-lurker-hit" 113 dm-task-reminder-a) + (flag "leaving-misty" 114 dm-task-reminder-a) + (flag "assistant-village3" 115 dm-task-reminder-a) + #f + #f + #f + #f + #f + #f + #f + #f))) + (none)) (defun debug-menu-make-task-need-reminder-menu ((arg0 debug-menu) (arg1 debug-menu-context)) - (debug-menu-append-item - arg0 - (debug-menu-make-from-template arg1 '(menu - "need-reminder" - #f - #f - (flag "jungle-eggtop" 2 dm-task-reminder) - (flag "jungle-lurkerm" 3 dm-task-reminder) - (flag "jungle-tower" 4 dm-task-reminder) - (flag "jungle-fishgame" 5 dm-task-reminder) - (flag "jungle-plant" 6 dm-task-reminder) - (flag "jungle-buzzer" 7 dm-task-reminder) - (flag "jungle-canyon-end" 8 dm-task-reminder) - (flag "jungle-temple-door" 9 dm-task-reminder) - (flag "village1-yakow" 10 dm-task-reminder) - (flag "village1-mayor-money" 11 dm-task-reminder) - (flag "village1-uncle-money" 12 dm-task-reminder) - (flag "village1-oracle-money1" 13 dm-task-reminder) - (flag "village1-oracle-money2" 14 dm-task-reminder) - (flag "beach-ecorocks" 15 dm-task-reminder) - (flag "beach-pelican" 16 dm-task-reminder) - (flag "beach-flutflut" 17 dm-task-reminder) - (flag "beach-seagull" 18 dm-task-reminder) - (flag "beach-cannon" 19 dm-task-reminder) - (flag "beach-buzzer" 20 dm-task-reminder) - (flag "beach-gimmie" 21 dm-task-reminder) - (flag "beach-sentinel" 22 dm-task-reminder) - (flag "misty-muse" 23 dm-task-reminder) - (flag "misty-boat" 24 dm-task-reminder) - (flag "misty-warehouse" 25 dm-task-reminder) - (flag "misty-cannon" 26 dm-task-reminder) - (flag "misty-bike" 27 dm-task-reminder) - (flag "misty-buzzer" 28 dm-task-reminder) - (flag "misty-bike-jump" 29 dm-task-reminder) - (flag "misty-eco-challenge" 30 dm-task-reminder) - (flag "village2-gambler-money" 31 dm-task-reminder) - (flag "village2-geologist-money" 32 dm-task-reminder) - (flag "village2-warrior-money" 33 dm-task-reminder) - (flag "village2-oracle-money1" 34 dm-task-reminder) - (flag "village2-oracle-money2" 35 dm-task-reminder) - (flag "swamp-billy" 36 dm-task-reminder) - (flag "swamp-flutflut" 37 dm-task-reminder) - (flag "swamp-battle" 38 dm-task-reminder) - (flag "swamp-tether-1" 39 dm-task-reminder) - (flag "swamp-tether-2" 40 dm-task-reminder) - (flag "swamp-tether-3" 41 dm-task-reminder) - (flag "swamp-tether-4" 42 dm-task-reminder) - (flag "swamp-buzzer" 43 dm-task-reminder) - (flag "sunken-platforms" 44 dm-task-reminder) - (flag "sunken-pipe" 45 dm-task-reminder) - (flag "sunken-slide" 46 dm-task-reminder) - (flag "sunken-room" 47 dm-task-reminder) - (flag "sunken-sharks" 48 dm-task-reminder) - (flag "sunken-buzzer" 49 dm-task-reminder) - (flag "sunken-top-of-helix" 50 dm-task-reminder) - (flag "sunken-spinning-room" 51 dm-task-reminder) - (flag "rolling-race" 52 dm-task-reminder) - (flag "rolling-robbers" 53 dm-task-reminder) - (flag "rolling-moles" 54 dm-task-reminder) - (flag "rolling-plants" 55 dm-task-reminder) - (flag "rolling-lake" 56 dm-task-reminder) - (flag "rolling-buzzer" 57 dm-task-reminder) - (flag "rolling-ring-chase-1" 58 dm-task-reminder) - (flag "rolling-ring-chase-2" 59 dm-task-reminder) - (flag "snow-eggtop" 60 dm-task-reminder) - (flag "snow-ram" 61 dm-task-reminder) - (flag "snow-fort" 62 dm-task-reminder) - (flag "snow-ball" 63 dm-task-reminder) - (flag "snow-bunnies" 64 dm-task-reminder) - (flag "snow-buzzer" 65 dm-task-reminder) - (flag "snow-bumpers" 66 dm-task-reminder) - (flag "snow-cage" 67 dm-task-reminder) - (flag "firecanyon-buzzer" 68 dm-task-reminder) - (flag "firecanyon-end" 69 dm-task-reminder) - (flag "citadel-sage-green" 70 dm-task-reminder) - (flag "citadel-sage-blue" 71 dm-task-reminder) - (flag "citadel-sage-red" 72 dm-task-reminder) - (flag "citadel-sage-yellow" 73 dm-task-reminder) - (flag "village3-extra1" 74 dm-task-reminder) - (flag "village1-buzzer" 75 dm-task-reminder) - (flag "village2-buzzer" 76 dm-task-reminder) - (flag "village3-buzzer" 77 dm-task-reminder) - (flag "cave-gnawers" 78 dm-task-reminder) - (flag "cave-dark-crystals" 79 dm-task-reminder) - (flag "cave-dark-climb" 80 dm-task-reminder) - (flag "cave-robot-climb" 81 dm-task-reminder) - (flag "cave-swing-poles" 82 dm-task-reminder) - (flag "cave-spider-tunnel" 83 dm-task-reminder) - (flag "cave-platforms" 84 dm-task-reminder) - (flag "cave-buzzer" 85 dm-task-reminder) - (flag "ogre-boss" 86 dm-task-reminder) - (flag "ogre-end" 87 dm-task-reminder) - (flag "ogre-buzzer" 88 dm-task-reminder) - (flag "lavatube-end" 89 dm-task-reminder) - (flag "lavatube-buzzer" 90 dm-task-reminder) - (flag "citadel-buzzer" 91 dm-task-reminder) - (flag "training-gimmie" 92 dm-task-reminder) - (flag "training-door" 93 dm-task-reminder) - (flag "training-climb" 94 dm-task-reminder) - (flag "training-buzzer" 95 dm-task-reminder) - (flag "village3-miner-money1" 96 dm-task-reminder) - (flag "village3-miner-money2" 97 dm-task-reminder) - (flag "village3-miner-money3" 98 dm-task-reminder) - (flag "village3-miner-money4" 99 dm-task-reminder) - (flag "village3-oracle-money1" 100 dm-task-reminder) - (flag "village3-oracle-money2" 101 dm-task-reminder) - (flag "firecanyon-assistant" 102 dm-task-reminder) - (flag "village2-levitator" 103 dm-task-reminder) - (flag "swamp-arm" 104 dm-task-reminder) - (flag "village3-button" 105 dm-task-reminder) - (flag "red-eggtop" 106 dm-task-reminder) - (flag "lavatube-balls" 107 dm-task-reminder) - (flag "lavatube-start" 108 dm-task-reminder) - (flag "intro" 109 dm-task-reminder) - (flag "ogre-secret" 110 dm-task-reminder) - (flag "village4-button" 111 dm-task-reminder) - (flag "finalboss-movies" 112 dm-task-reminder) - (flag "plunger-lurker-hit" 113 dm-task-reminder) - (flag "leaving-misty" 114 dm-task-reminder) - (flag "assistant-village3" 115 dm-task-reminder) - #f - #f - #f - #f - #f - #f - #f - #f - ) - ) - ) - (none) - ) + (debug-menu-append-item arg0 + (debug-menu-make-from-template arg1 + '(menu "need-reminder" + #f + #f + (flag "jungle-eggtop" 2 dm-task-reminder) + (flag "jungle-lurkerm" 3 dm-task-reminder) + (flag "jungle-tower" 4 dm-task-reminder) + (flag "jungle-fishgame" 5 dm-task-reminder) + (flag "jungle-plant" 6 dm-task-reminder) + (flag "jungle-buzzer" 7 dm-task-reminder) + (flag "jungle-canyon-end" 8 dm-task-reminder) + (flag "jungle-temple-door" 9 dm-task-reminder) + (flag "village1-yakow" 10 dm-task-reminder) + (flag "village1-mayor-money" 11 dm-task-reminder) + (flag "village1-uncle-money" 12 dm-task-reminder) + (flag "village1-oracle-money1" 13 dm-task-reminder) + (flag "village1-oracle-money2" 14 dm-task-reminder) + (flag "beach-ecorocks" 15 dm-task-reminder) + (flag "beach-pelican" 16 dm-task-reminder) + (flag "beach-flutflut" 17 dm-task-reminder) + (flag "beach-seagull" 18 dm-task-reminder) + (flag "beach-cannon" 19 dm-task-reminder) + (flag "beach-buzzer" 20 dm-task-reminder) + (flag "beach-gimmie" 21 dm-task-reminder) + (flag "beach-sentinel" 22 dm-task-reminder) + (flag "misty-muse" 23 dm-task-reminder) + (flag "misty-boat" 24 dm-task-reminder) + (flag "misty-warehouse" 25 dm-task-reminder) + (flag "misty-cannon" 26 dm-task-reminder) + (flag "misty-bike" 27 dm-task-reminder) + (flag "misty-buzzer" 28 dm-task-reminder) + (flag "misty-bike-jump" 29 dm-task-reminder) + (flag "misty-eco-challenge" 30 dm-task-reminder) + (flag "village2-gambler-money" 31 dm-task-reminder) + (flag "village2-geologist-money" 32 dm-task-reminder) + (flag "village2-warrior-money" 33 dm-task-reminder) + (flag "village2-oracle-money1" 34 dm-task-reminder) + (flag "village2-oracle-money2" 35 dm-task-reminder) + (flag "swamp-billy" 36 dm-task-reminder) + (flag "swamp-flutflut" 37 dm-task-reminder) + (flag "swamp-battle" 38 dm-task-reminder) + (flag "swamp-tether-1" 39 dm-task-reminder) + (flag "swamp-tether-2" 40 dm-task-reminder) + (flag "swamp-tether-3" 41 dm-task-reminder) + (flag "swamp-tether-4" 42 dm-task-reminder) + (flag "swamp-buzzer" 43 dm-task-reminder) + (flag "sunken-platforms" 44 dm-task-reminder) + (flag "sunken-pipe" 45 dm-task-reminder) + (flag "sunken-slide" 46 dm-task-reminder) + (flag "sunken-room" 47 dm-task-reminder) + (flag "sunken-sharks" 48 dm-task-reminder) + (flag "sunken-buzzer" 49 dm-task-reminder) + (flag "sunken-top-of-helix" 50 dm-task-reminder) + (flag "sunken-spinning-room" 51 dm-task-reminder) + (flag "rolling-race" 52 dm-task-reminder) + (flag "rolling-robbers" 53 dm-task-reminder) + (flag "rolling-moles" 54 dm-task-reminder) + (flag "rolling-plants" 55 dm-task-reminder) + (flag "rolling-lake" 56 dm-task-reminder) + (flag "rolling-buzzer" 57 dm-task-reminder) + (flag "rolling-ring-chase-1" 58 dm-task-reminder) + (flag "rolling-ring-chase-2" 59 dm-task-reminder) + (flag "snow-eggtop" 60 dm-task-reminder) + (flag "snow-ram" 61 dm-task-reminder) + (flag "snow-fort" 62 dm-task-reminder) + (flag "snow-ball" 63 dm-task-reminder) + (flag "snow-bunnies" 64 dm-task-reminder) + (flag "snow-buzzer" 65 dm-task-reminder) + (flag "snow-bumpers" 66 dm-task-reminder) + (flag "snow-cage" 67 dm-task-reminder) + (flag "firecanyon-buzzer" 68 dm-task-reminder) + (flag "firecanyon-end" 69 dm-task-reminder) + (flag "citadel-sage-green" 70 dm-task-reminder) + (flag "citadel-sage-blue" 71 dm-task-reminder) + (flag "citadel-sage-red" 72 dm-task-reminder) + (flag "citadel-sage-yellow" 73 dm-task-reminder) + (flag "village3-extra1" 74 dm-task-reminder) + (flag "village1-buzzer" 75 dm-task-reminder) + (flag "village2-buzzer" 76 dm-task-reminder) + (flag "village3-buzzer" 77 dm-task-reminder) + (flag "cave-gnawers" 78 dm-task-reminder) + (flag "cave-dark-crystals" 79 dm-task-reminder) + (flag "cave-dark-climb" 80 dm-task-reminder) + (flag "cave-robot-climb" 81 dm-task-reminder) + (flag "cave-swing-poles" 82 dm-task-reminder) + (flag "cave-spider-tunnel" 83 dm-task-reminder) + (flag "cave-platforms" 84 dm-task-reminder) + (flag "cave-buzzer" 85 dm-task-reminder) + (flag "ogre-boss" 86 dm-task-reminder) + (flag "ogre-end" 87 dm-task-reminder) + (flag "ogre-buzzer" 88 dm-task-reminder) + (flag "lavatube-end" 89 dm-task-reminder) + (flag "lavatube-buzzer" 90 dm-task-reminder) + (flag "citadel-buzzer" 91 dm-task-reminder) + (flag "training-gimmie" 92 dm-task-reminder) + (flag "training-door" 93 dm-task-reminder) + (flag "training-climb" 94 dm-task-reminder) + (flag "training-buzzer" 95 dm-task-reminder) + (flag "village3-miner-money1" 96 dm-task-reminder) + (flag "village3-miner-money2" 97 dm-task-reminder) + (flag "village3-miner-money3" 98 dm-task-reminder) + (flag "village3-miner-money4" 99 dm-task-reminder) + (flag "village3-oracle-money1" 100 dm-task-reminder) + (flag "village3-oracle-money2" 101 dm-task-reminder) + (flag "firecanyon-assistant" 102 dm-task-reminder) + (flag "village2-levitator" 103 dm-task-reminder) + (flag "swamp-arm" 104 dm-task-reminder) + (flag "village3-button" 105 dm-task-reminder) + (flag "red-eggtop" 106 dm-task-reminder) + (flag "lavatube-balls" 107 dm-task-reminder) + (flag "lavatube-start" 108 dm-task-reminder) + (flag "intro" 109 dm-task-reminder) + (flag "ogre-secret" 110 dm-task-reminder) + (flag "village4-button" 111 dm-task-reminder) + (flag "finalboss-movies" 112 dm-task-reminder) + (flag "plunger-lurker-hit" 113 dm-task-reminder) + (flag "leaving-misty" 114 dm-task-reminder) + (flag "assistant-village3" 115 dm-task-reminder) + #f + #f + #f + #f + #f + #f + #f + #f))) + (none)) (defun debug-menu-make-task-need-reward-speech-menu ((arg0 debug-menu) (arg1 debug-menu-context)) - (debug-menu-append-item - arg0 - (debug-menu-make-from-template arg1 '(menu - "need-reward-speech" - #f - #f - (flag "jungle-eggtop" 2 dm-task-reward-speech) - (flag "jungle-lurkerm" 3 dm-task-reward-speech) - (flag "jungle-tower" 4 dm-task-reward-speech) - (flag "jungle-fishgame" 5 dm-task-reward-speech) - (flag "jungle-plant" 6 dm-task-reward-speech) - (flag "jungle-buzzer" 7 dm-task-reward-speech) - (flag "jungle-canyon-end" 8 dm-task-reward-speech) - (flag "jungle-temple-door" 9 dm-task-reward-speech) - (flag "village1-yakow" 10 dm-task-reward-speech) - (flag "village1-mayor-money" 11 dm-task-reward-speech) - (flag "village1-uncle-money" 12 dm-task-reward-speech) - (flag "village1-oracle-money1" 13 dm-task-reward-speech) - (flag "village1-oracle-money2" 14 dm-task-reward-speech) - (flag "beach-ecorocks" 15 dm-task-reward-speech) - (flag "beach-pelican" 16 dm-task-reward-speech) - (flag "beach-flutflut" 17 dm-task-reward-speech) - (flag "beach-seagull" 18 dm-task-reward-speech) - (flag "beach-cannon" 19 dm-task-reward-speech) - (flag "beach-buzzer" 20 dm-task-reward-speech) - (flag "beach-gimmie" 21 dm-task-reward-speech) - (flag "beach-sentinel" 22 dm-task-reward-speech) - (flag "misty-muse" 23 dm-task-reward-speech) - (flag "misty-boat" 24 dm-task-reward-speech) - (flag "misty-warehouse" 25 dm-task-reward-speech) - (flag "misty-cannon" 26 dm-task-reward-speech) - (flag "misty-bike" 27 dm-task-reward-speech) - (flag "misty-buzzer" 28 dm-task-reward-speech) - (flag "misty-bike-jump" 29 dm-task-reward-speech) - (flag "misty-eco-challenge" 30 dm-task-reward-speech) - (flag "village2-gambler-money" 31 dm-task-reward-speech) - (flag "village2-geologist-money" 32 dm-task-reward-speech) - (flag "village2-warrior-money" 33 dm-task-reward-speech) - (flag "village2-oracle-money1" 34 dm-task-reward-speech) - (flag "village2-oracle-money2" 35 dm-task-reward-speech) - (flag "swamp-billy" 36 dm-task-reward-speech) - (flag "swamp-flutflut" 37 dm-task-reward-speech) - (flag "swamp-battle" 38 dm-task-reward-speech) - (flag "swamp-tether-1" 39 dm-task-reward-speech) - (flag "swamp-tether-2" 40 dm-task-reward-speech) - (flag "swamp-tether-3" 41 dm-task-reward-speech) - (flag "swamp-tether-4" 42 dm-task-reward-speech) - (flag "swamp-buzzer" 43 dm-task-reward-speech) - (flag "sunken-platforms" 44 dm-task-reward-speech) - (flag "sunken-pipe" 45 dm-task-reward-speech) - (flag "sunken-slide" 46 dm-task-reward-speech) - (flag "sunken-room" 47 dm-task-reward-speech) - (flag "sunken-sharks" 48 dm-task-reward-speech) - (flag "sunken-buzzer" 49 dm-task-reward-speech) - (flag "sunken-top-of-helix" 50 dm-task-reward-speech) - (flag "sunken-spinning-room" 51 dm-task-reward-speech) - (flag "rolling-race" 52 dm-task-reward-speech) - (flag "rolling-robbers" 53 dm-task-reward-speech) - (flag "rolling-moles" 54 dm-task-reward-speech) - (flag "rolling-plants" 55 dm-task-reward-speech) - (flag "rolling-lake" 56 dm-task-reward-speech) - (flag "rolling-buzzer" 57 dm-task-reward-speech) - (flag "rolling-ring-chase-1" 58 dm-task-reward-speech) - (flag "rolling-ring-chase-2" 59 dm-task-reward-speech) - (flag "snow-eggtop" 60 dm-task-reward-speech) - (flag "snow-ram" 61 dm-task-reward-speech) - (flag "snow-fort" 62 dm-task-reward-speech) - (flag "snow-ball" 63 dm-task-reward-speech) - (flag "snow-bunnies" 64 dm-task-reward-speech) - (flag "snow-buzzer" 65 dm-task-reward-speech) - (flag "snow-bumpers" 66 dm-task-reward-speech) - (flag "snow-cage" 67 dm-task-reward-speech) - (flag "firecanyon-buzzer" 68 dm-task-reward-speech) - (flag "firecanyon-end" 69 dm-task-reward-speech) - (flag "citadel-sage-green" 70 dm-task-reward-speech) - (flag "citadel-sage-blue" 71 dm-task-reward-speech) - (flag "citadel-sage-red" 72 dm-task-reward-speech) - (flag "citadel-sage-yellow" 73 dm-task-reward-speech) - (flag "village3-extra1" 74 dm-task-reward-speech) - (flag "village1-buzzer" 75 dm-task-reward-speech) - (flag "village2-buzzer" 76 dm-task-reward-speech) - (flag "village3-buzzer" 77 dm-task-reward-speech) - (flag "cave-gnawers" 78 dm-task-reward-speech) - (flag "cave-dark-crystals" 79 dm-task-reward-speech) - (flag "cave-dark-climb" 80 dm-task-reward-speech) - (flag "cave-robot-climb" 81 dm-task-reward-speech) - (flag "cave-swing-poles" 82 dm-task-reward-speech) - (flag "cave-spider-tunnel" 83 dm-task-reward-speech) - (flag "cave-platforms" 84 dm-task-reward-speech) - (flag "cave-buzzer" 85 dm-task-reward-speech) - (flag "ogre-boss" 86 dm-task-reward-speech) - (flag "ogre-end" 87 dm-task-reward-speech) - (flag "ogre-buzzer" 88 dm-task-reward-speech) - (flag "lavatube-end" 89 dm-task-reward-speech) - (flag "lavatube-buzzer" 90 dm-task-reward-speech) - (flag "citadel-buzzer" 91 dm-task-reward-speech) - (flag "training-gimmie" 92 dm-task-reward-speech) - (flag "training-door" 93 dm-task-reward-speech) - (flag "training-climb" 94 dm-task-reward-speech) - (flag "training-buzzer" 95 dm-task-reward-speech) - (flag "village3-miner-money1" 96 dm-task-reward-speech) - (flag "village3-miner-money2" 97 dm-task-reward-speech) - (flag "village3-miner-money3" 98 dm-task-reward-speech) - (flag "village3-miner-money4" 99 dm-task-reward-speech) - (flag "village3-oracle-money1" 100 dm-task-reward-speech) - (flag "village3-oracle-money2" 101 dm-task-reward-speech) - (flag "firecanyon-assistant" 102 dm-task-reward-speech) - (flag "village2-levitator" 103 dm-task-reward-speech) - (flag "swamp-arm" 104 dm-task-reward-speech) - (flag "village3-button" 105 dm-task-reward-speech) - (flag "red-eggtop" 106 dm-task-reward-speech) - (flag "lavatube-balls" 107 dm-task-reward-speech) - (flag "lavatube-start" 108 dm-task-reward-speech) - (flag "intro" 109 dm-task-reward-speech) - (flag "ogre-secret" 110 dm-task-reward-speech) - (flag "village4-button" 111 dm-task-reward-speech) - (flag "finalboss-movies" 112 dm-task-reward-speech) - (flag "plunger-lurker-hit" 113 dm-task-reward-speech) - (flag "leaving-misty" 114 dm-task-reward-speech) - (flag "assistant-village3" 115 dm-task-reward-speech) - #f - #f - #f - #f - #f - #f - #f - #f - ) - ) - ) - (none) - ) + (debug-menu-append-item arg0 + (debug-menu-make-from-template arg1 + '(menu "need-reward-speech" + #f + #f + (flag "jungle-eggtop" 2 dm-task-reward-speech) + (flag "jungle-lurkerm" 3 dm-task-reward-speech) + (flag "jungle-tower" 4 dm-task-reward-speech) + (flag "jungle-fishgame" 5 dm-task-reward-speech) + (flag "jungle-plant" 6 dm-task-reward-speech) + (flag "jungle-buzzer" 7 dm-task-reward-speech) + (flag "jungle-canyon-end" 8 dm-task-reward-speech) + (flag "jungle-temple-door" 9 dm-task-reward-speech) + (flag "village1-yakow" 10 dm-task-reward-speech) + (flag "village1-mayor-money" 11 dm-task-reward-speech) + (flag "village1-uncle-money" 12 dm-task-reward-speech) + (flag "village1-oracle-money1" 13 dm-task-reward-speech) + (flag "village1-oracle-money2" 14 dm-task-reward-speech) + (flag "beach-ecorocks" 15 dm-task-reward-speech) + (flag "beach-pelican" 16 dm-task-reward-speech) + (flag "beach-flutflut" 17 dm-task-reward-speech) + (flag "beach-seagull" 18 dm-task-reward-speech) + (flag "beach-cannon" 19 dm-task-reward-speech) + (flag "beach-buzzer" 20 dm-task-reward-speech) + (flag "beach-gimmie" 21 dm-task-reward-speech) + (flag "beach-sentinel" 22 dm-task-reward-speech) + (flag "misty-muse" 23 dm-task-reward-speech) + (flag "misty-boat" 24 dm-task-reward-speech) + (flag "misty-warehouse" 25 dm-task-reward-speech) + (flag "misty-cannon" 26 dm-task-reward-speech) + (flag "misty-bike" 27 dm-task-reward-speech) + (flag "misty-buzzer" 28 dm-task-reward-speech) + (flag "misty-bike-jump" 29 dm-task-reward-speech) + (flag "misty-eco-challenge" 30 dm-task-reward-speech) + (flag "village2-gambler-money" 31 dm-task-reward-speech) + (flag "village2-geologist-money" 32 dm-task-reward-speech) + (flag "village2-warrior-money" 33 dm-task-reward-speech) + (flag "village2-oracle-money1" 34 dm-task-reward-speech) + (flag "village2-oracle-money2" 35 dm-task-reward-speech) + (flag "swamp-billy" 36 dm-task-reward-speech) + (flag "swamp-flutflut" 37 dm-task-reward-speech) + (flag "swamp-battle" 38 dm-task-reward-speech) + (flag "swamp-tether-1" 39 dm-task-reward-speech) + (flag "swamp-tether-2" 40 dm-task-reward-speech) + (flag "swamp-tether-3" 41 dm-task-reward-speech) + (flag "swamp-tether-4" 42 dm-task-reward-speech) + (flag "swamp-buzzer" 43 dm-task-reward-speech) + (flag "sunken-platforms" 44 dm-task-reward-speech) + (flag "sunken-pipe" 45 dm-task-reward-speech) + (flag "sunken-slide" 46 dm-task-reward-speech) + (flag "sunken-room" 47 dm-task-reward-speech) + (flag "sunken-sharks" 48 dm-task-reward-speech) + (flag "sunken-buzzer" 49 dm-task-reward-speech) + (flag "sunken-top-of-helix" 50 dm-task-reward-speech) + (flag "sunken-spinning-room" 51 dm-task-reward-speech) + (flag "rolling-race" 52 dm-task-reward-speech) + (flag "rolling-robbers" 53 dm-task-reward-speech) + (flag "rolling-moles" 54 dm-task-reward-speech) + (flag "rolling-plants" 55 dm-task-reward-speech) + (flag "rolling-lake" 56 dm-task-reward-speech) + (flag "rolling-buzzer" 57 dm-task-reward-speech) + (flag "rolling-ring-chase-1" 58 dm-task-reward-speech) + (flag "rolling-ring-chase-2" 59 dm-task-reward-speech) + (flag "snow-eggtop" 60 dm-task-reward-speech) + (flag "snow-ram" 61 dm-task-reward-speech) + (flag "snow-fort" 62 dm-task-reward-speech) + (flag "snow-ball" 63 dm-task-reward-speech) + (flag "snow-bunnies" 64 dm-task-reward-speech) + (flag "snow-buzzer" 65 dm-task-reward-speech) + (flag "snow-bumpers" 66 dm-task-reward-speech) + (flag "snow-cage" 67 dm-task-reward-speech) + (flag "firecanyon-buzzer" 68 dm-task-reward-speech) + (flag "firecanyon-end" 69 dm-task-reward-speech) + (flag "citadel-sage-green" 70 dm-task-reward-speech) + (flag "citadel-sage-blue" 71 dm-task-reward-speech) + (flag "citadel-sage-red" 72 dm-task-reward-speech) + (flag "citadel-sage-yellow" 73 dm-task-reward-speech) + (flag "village3-extra1" 74 dm-task-reward-speech) + (flag "village1-buzzer" 75 dm-task-reward-speech) + (flag "village2-buzzer" 76 dm-task-reward-speech) + (flag "village3-buzzer" 77 dm-task-reward-speech) + (flag "cave-gnawers" 78 dm-task-reward-speech) + (flag "cave-dark-crystals" 79 dm-task-reward-speech) + (flag "cave-dark-climb" 80 dm-task-reward-speech) + (flag "cave-robot-climb" 81 dm-task-reward-speech) + (flag "cave-swing-poles" 82 dm-task-reward-speech) + (flag "cave-spider-tunnel" 83 dm-task-reward-speech) + (flag "cave-platforms" 84 dm-task-reward-speech) + (flag "cave-buzzer" 85 dm-task-reward-speech) + (flag "ogre-boss" 86 dm-task-reward-speech) + (flag "ogre-end" 87 dm-task-reward-speech) + (flag "ogre-buzzer" 88 dm-task-reward-speech) + (flag "lavatube-end" 89 dm-task-reward-speech) + (flag "lavatube-buzzer" 90 dm-task-reward-speech) + (flag "citadel-buzzer" 91 dm-task-reward-speech) + (flag "training-gimmie" 92 dm-task-reward-speech) + (flag "training-door" 93 dm-task-reward-speech) + (flag "training-climb" 94 dm-task-reward-speech) + (flag "training-buzzer" 95 dm-task-reward-speech) + (flag "village3-miner-money1" 96 dm-task-reward-speech) + (flag "village3-miner-money2" 97 dm-task-reward-speech) + (flag "village3-miner-money3" 98 dm-task-reward-speech) + (flag "village3-miner-money4" 99 dm-task-reward-speech) + (flag "village3-oracle-money1" 100 dm-task-reward-speech) + (flag "village3-oracle-money2" 101 dm-task-reward-speech) + (flag "firecanyon-assistant" 102 dm-task-reward-speech) + (flag "village2-levitator" 103 dm-task-reward-speech) + (flag "swamp-arm" 104 dm-task-reward-speech) + (flag "village3-button" 105 dm-task-reward-speech) + (flag "red-eggtop" 106 dm-task-reward-speech) + (flag "lavatube-balls" 107 dm-task-reward-speech) + (flag "lavatube-start" 108 dm-task-reward-speech) + (flag "intro" 109 dm-task-reward-speech) + (flag "ogre-secret" 110 dm-task-reward-speech) + (flag "village4-button" 111 dm-task-reward-speech) + (flag "finalboss-movies" 112 dm-task-reward-speech) + (flag "plunger-lurker-hit" 113 dm-task-reward-speech) + (flag "leaving-misty" 114 dm-task-reward-speech) + (flag "assistant-village3" 115 dm-task-reward-speech) + #f + #f + #f + #f + #f + #f + #f + #f))) + (none)) (defun debug-menu-make-task-need-resolution-menu ((arg0 debug-menu) (arg1 debug-menu-context)) - (debug-menu-append-item - arg0 - (debug-menu-make-from-template arg1 '(menu - "need-resolution" - #f - #f - (flag "jungle-eggtop" 2 dm-task-resolution) - (flag "jungle-lurkerm" 3 dm-task-resolution) - (flag "jungle-tower" 4 dm-task-resolution) - (flag "jungle-fishgame" 5 dm-task-resolution) - (flag "jungle-plant" 6 dm-task-resolution) - (flag "jungle-buzzer" 7 dm-task-resolution) - (flag "jungle-canyon-end" 8 dm-task-resolution) - (flag "jungle-temple-door" 9 dm-task-resolution) - (flag "village1-yakow" 10 dm-task-resolution) - (flag "village1-mayor-money" 11 dm-task-resolution) - (flag "village1-uncle-money" 12 dm-task-resolution) - (flag "village1-oracle-money1" 13 dm-task-resolution) - (flag "village1-oracle-money2" 14 dm-task-resolution) - (flag "beach-ecorocks" 15 dm-task-resolution) - (flag "beach-pelican" 16 dm-task-resolution) - (flag "beach-flutflut" 17 dm-task-resolution) - (flag "beach-seagull" 18 dm-task-resolution) - (flag "beach-cannon" 19 dm-task-resolution) - (flag "beach-buzzer" 20 dm-task-resolution) - (flag "beach-gimmie" 21 dm-task-resolution) - (flag "beach-sentinel" 22 dm-task-resolution) - (flag "misty-muse" 23 dm-task-resolution) - (flag "misty-boat" 24 dm-task-resolution) - (flag "misty-warehouse" 25 dm-task-resolution) - (flag "misty-cannon" 26 dm-task-resolution) - (flag "misty-bike" 27 dm-task-resolution) - (flag "misty-buzzer" 28 dm-task-resolution) - (flag "misty-bike-jump" 29 dm-task-resolution) - (flag "misty-eco-challenge" 30 dm-task-resolution) - (flag "village2-gambler-money" 31 dm-task-resolution) - (flag "village2-geologist-money" 32 dm-task-resolution) - (flag "village2-warrior-money" 33 dm-task-resolution) - (flag "village2-oracle-money1" 34 dm-task-resolution) - (flag "village2-oracle-money2" 35 dm-task-resolution) - (flag "swamp-billy" 36 dm-task-resolution) - (flag "swamp-flutflut" 37 dm-task-resolution) - (flag "swamp-battle" 38 dm-task-resolution) - (flag "swamp-tether-1" 39 dm-task-resolution) - (flag "swamp-tether-2" 40 dm-task-resolution) - (flag "swamp-tether-3" 41 dm-task-resolution) - (flag "swamp-tether-4" 42 dm-task-resolution) - (flag "swamp-buzzer" 43 dm-task-resolution) - (flag "sunken-platforms" 44 dm-task-resolution) - (flag "sunken-pipe" 45 dm-task-resolution) - (flag "sunken-slide" 46 dm-task-resolution) - (flag "sunken-room" 47 dm-task-resolution) - (flag "sunken-sharks" 48 dm-task-resolution) - (flag "sunken-buzzer" 49 dm-task-resolution) - (flag "sunken-top-of-helix" 50 dm-task-resolution) - (flag "sunken-spinning-room" 51 dm-task-resolution) - (flag "rolling-race" 52 dm-task-resolution) - (flag "rolling-robbers" 53 dm-task-resolution) - (flag "rolling-moles" 54 dm-task-resolution) - (flag "rolling-plants" 55 dm-task-resolution) - (flag "rolling-lake" 56 dm-task-resolution) - (flag "rolling-buzzer" 57 dm-task-resolution) - (flag "rolling-ring-chase-1" 58 dm-task-resolution) - (flag "rolling-ring-chase-2" 59 dm-task-resolution) - (flag "snow-eggtop" 60 dm-task-resolution) - (flag "snow-ram" 61 dm-task-resolution) - (flag "snow-fort" 62 dm-task-resolution) - (flag "snow-ball" 63 dm-task-resolution) - (flag "snow-bunnies" 64 dm-task-resolution) - (flag "snow-buzzer" 65 dm-task-resolution) - (flag "snow-bumpers" 66 dm-task-resolution) - (flag "snow-cage" 67 dm-task-resolution) - (flag "firecanyon-buzzer" 68 dm-task-resolution) - (flag "firecanyon-end" 69 dm-task-resolution) - (flag "citadel-sage-green" 70 dm-task-resolution) - (flag "citadel-sage-blue" 71 dm-task-resolution) - (flag "citadel-sage-red" 72 dm-task-resolution) - (flag "citadel-sage-yellow" 73 dm-task-resolution) - (flag "village3-extra1" 74 dm-task-resolution) - (flag "village1-buzzer" 75 dm-task-resolution) - (flag "village2-buzzer" 76 dm-task-resolution) - (flag "village3-buzzer" 77 dm-task-resolution) - (flag "cave-gnawers" 78 dm-task-resolution) - (flag "cave-dark-crystals" 79 dm-task-resolution) - (flag "cave-dark-climb" 80 dm-task-resolution) - (flag "cave-robot-climb" 81 dm-task-resolution) - (flag "cave-swing-poles" 82 dm-task-resolution) - (flag "cave-spider-tunnel" 83 dm-task-resolution) - (flag "cave-platforms" 84 dm-task-resolution) - (flag "cave-buzzer" 85 dm-task-resolution) - (flag "ogre-boss" 86 dm-task-resolution) - (flag "ogre-end" 87 dm-task-resolution) - (flag "ogre-buzzer" 88 dm-task-resolution) - (flag "lavatube-end" 89 dm-task-resolution) - (flag "lavatube-buzzer" 90 dm-task-resolution) - (flag "citadel-buzzer" 91 dm-task-resolution) - (flag "training-gimmie" 92 dm-task-resolution) - (flag "training-door" 93 dm-task-resolution) - (flag "training-climb" 94 dm-task-resolution) - (flag "training-buzzer" 95 dm-task-resolution) - (flag "village3-miner-money1" 96 dm-task-resolution) - (flag "village3-miner-money2" 97 dm-task-resolution) - (flag "village3-miner-money3" 98 dm-task-resolution) - (flag "village3-miner-money4" 99 dm-task-resolution) - (flag "village3-oracle-money1" 100 dm-task-resolution) - (flag "village3-oracle-money2" 101 dm-task-resolution) - (flag "firecanyon-assistant" 102 dm-task-resolution) - (flag "village2-levitator" 103 dm-task-resolution) - (flag "swamp-arm" 104 dm-task-resolution) - (flag "village3-button" 105 dm-task-resolution) - (flag "red-eggtop" 106 dm-task-resolution) - (flag "lavatube-balls" 107 dm-task-resolution) - (flag "lavatube-start" 108 dm-task-resolution) - (flag "intro" 109 dm-task-resolution) - (flag "ogre-secret" 110 dm-task-resolution) - (flag "village4-button" 111 dm-task-resolution) - (flag "finalboss-movies" 112 dm-task-resolution) - (flag "plunger-lurker-hit" 113 dm-task-resolution) - (flag "leaving-misty" 114 dm-task-resolution) - (flag "assistant-village3" 115 dm-task-resolution) - #f - #f - #f - #f - #f - #f - #f - #f - ) - ) - ) - (none) - ) + (debug-menu-append-item arg0 + (debug-menu-make-from-template arg1 + '(menu "need-resolution" + #f + #f + (flag "jungle-eggtop" 2 dm-task-resolution) + (flag "jungle-lurkerm" 3 dm-task-resolution) + (flag "jungle-tower" 4 dm-task-resolution) + (flag "jungle-fishgame" 5 dm-task-resolution) + (flag "jungle-plant" 6 dm-task-resolution) + (flag "jungle-buzzer" 7 dm-task-resolution) + (flag "jungle-canyon-end" 8 dm-task-resolution) + (flag "jungle-temple-door" 9 dm-task-resolution) + (flag "village1-yakow" 10 dm-task-resolution) + (flag "village1-mayor-money" 11 dm-task-resolution) + (flag "village1-uncle-money" 12 dm-task-resolution) + (flag "village1-oracle-money1" 13 dm-task-resolution) + (flag "village1-oracle-money2" 14 dm-task-resolution) + (flag "beach-ecorocks" 15 dm-task-resolution) + (flag "beach-pelican" 16 dm-task-resolution) + (flag "beach-flutflut" 17 dm-task-resolution) + (flag "beach-seagull" 18 dm-task-resolution) + (flag "beach-cannon" 19 dm-task-resolution) + (flag "beach-buzzer" 20 dm-task-resolution) + (flag "beach-gimmie" 21 dm-task-resolution) + (flag "beach-sentinel" 22 dm-task-resolution) + (flag "misty-muse" 23 dm-task-resolution) + (flag "misty-boat" 24 dm-task-resolution) + (flag "misty-warehouse" 25 dm-task-resolution) + (flag "misty-cannon" 26 dm-task-resolution) + (flag "misty-bike" 27 dm-task-resolution) + (flag "misty-buzzer" 28 dm-task-resolution) + (flag "misty-bike-jump" 29 dm-task-resolution) + (flag "misty-eco-challenge" 30 dm-task-resolution) + (flag "village2-gambler-money" 31 dm-task-resolution) + (flag "village2-geologist-money" 32 dm-task-resolution) + (flag "village2-warrior-money" 33 dm-task-resolution) + (flag "village2-oracle-money1" 34 dm-task-resolution) + (flag "village2-oracle-money2" 35 dm-task-resolution) + (flag "swamp-billy" 36 dm-task-resolution) + (flag "swamp-flutflut" 37 dm-task-resolution) + (flag "swamp-battle" 38 dm-task-resolution) + (flag "swamp-tether-1" 39 dm-task-resolution) + (flag "swamp-tether-2" 40 dm-task-resolution) + (flag "swamp-tether-3" 41 dm-task-resolution) + (flag "swamp-tether-4" 42 dm-task-resolution) + (flag "swamp-buzzer" 43 dm-task-resolution) + (flag "sunken-platforms" 44 dm-task-resolution) + (flag "sunken-pipe" 45 dm-task-resolution) + (flag "sunken-slide" 46 dm-task-resolution) + (flag "sunken-room" 47 dm-task-resolution) + (flag "sunken-sharks" 48 dm-task-resolution) + (flag "sunken-buzzer" 49 dm-task-resolution) + (flag "sunken-top-of-helix" 50 dm-task-resolution) + (flag "sunken-spinning-room" 51 dm-task-resolution) + (flag "rolling-race" 52 dm-task-resolution) + (flag "rolling-robbers" 53 dm-task-resolution) + (flag "rolling-moles" 54 dm-task-resolution) + (flag "rolling-plants" 55 dm-task-resolution) + (flag "rolling-lake" 56 dm-task-resolution) + (flag "rolling-buzzer" 57 dm-task-resolution) + (flag "rolling-ring-chase-1" 58 dm-task-resolution) + (flag "rolling-ring-chase-2" 59 dm-task-resolution) + (flag "snow-eggtop" 60 dm-task-resolution) + (flag "snow-ram" 61 dm-task-resolution) + (flag "snow-fort" 62 dm-task-resolution) + (flag "snow-ball" 63 dm-task-resolution) + (flag "snow-bunnies" 64 dm-task-resolution) + (flag "snow-buzzer" 65 dm-task-resolution) + (flag "snow-bumpers" 66 dm-task-resolution) + (flag "snow-cage" 67 dm-task-resolution) + (flag "firecanyon-buzzer" 68 dm-task-resolution) + (flag "firecanyon-end" 69 dm-task-resolution) + (flag "citadel-sage-green" 70 dm-task-resolution) + (flag "citadel-sage-blue" 71 dm-task-resolution) + (flag "citadel-sage-red" 72 dm-task-resolution) + (flag "citadel-sage-yellow" 73 dm-task-resolution) + (flag "village3-extra1" 74 dm-task-resolution) + (flag "village1-buzzer" 75 dm-task-resolution) + (flag "village2-buzzer" 76 dm-task-resolution) + (flag "village3-buzzer" 77 dm-task-resolution) + (flag "cave-gnawers" 78 dm-task-resolution) + (flag "cave-dark-crystals" 79 dm-task-resolution) + (flag "cave-dark-climb" 80 dm-task-resolution) + (flag "cave-robot-climb" 81 dm-task-resolution) + (flag "cave-swing-poles" 82 dm-task-resolution) + (flag "cave-spider-tunnel" 83 dm-task-resolution) + (flag "cave-platforms" 84 dm-task-resolution) + (flag "cave-buzzer" 85 dm-task-resolution) + (flag "ogre-boss" 86 dm-task-resolution) + (flag "ogre-end" 87 dm-task-resolution) + (flag "ogre-buzzer" 88 dm-task-resolution) + (flag "lavatube-end" 89 dm-task-resolution) + (flag "lavatube-buzzer" 90 dm-task-resolution) + (flag "citadel-buzzer" 91 dm-task-resolution) + (flag "training-gimmie" 92 dm-task-resolution) + (flag "training-door" 93 dm-task-resolution) + (flag "training-climb" 94 dm-task-resolution) + (flag "training-buzzer" 95 dm-task-resolution) + (flag "village3-miner-money1" 96 dm-task-resolution) + (flag "village3-miner-money2" 97 dm-task-resolution) + (flag "village3-miner-money3" 98 dm-task-resolution) + (flag "village3-miner-money4" 99 dm-task-resolution) + (flag "village3-oracle-money1" 100 dm-task-resolution) + (flag "village3-oracle-money2" 101 dm-task-resolution) + (flag "firecanyon-assistant" 102 dm-task-resolution) + (flag "village2-levitator" 103 dm-task-resolution) + (flag "swamp-arm" 104 dm-task-resolution) + (flag "village3-button" 105 dm-task-resolution) + (flag "red-eggtop" 106 dm-task-resolution) + (flag "lavatube-balls" 107 dm-task-resolution) + (flag "lavatube-start" 108 dm-task-resolution) + (flag "intro" 109 dm-task-resolution) + (flag "ogre-secret" 110 dm-task-resolution) + (flag "village4-button" 111 dm-task-resolution) + (flag "finalboss-movies" 112 dm-task-resolution) + (flag "plunger-lurker-hit" 113 dm-task-resolution) + (flag "leaving-misty" 114 dm-task-resolution) + (flag "assistant-village3" 115 dm-task-resolution) + #f + #f + #f + #f + #f + #f + #f + #f))) + (none)) (defun dm-task-get-money ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (send-event *target* 'get-pickup 5 (-> *GAME-bank* money-task-inc)) - ) - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) + (if (= arg1 (debug-menu-msg press)) (send-event *target* 'get-pickup 5 (-> *GAME-bank* money-task-inc))) + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc))) (defun dm-give-all-cells ((arg0 int) (arg1 debug-menu-msg)) (when (= arg1 (debug-menu-msg press)) (dotimes (gp-0 100) (send-event *target* 'get-pickup 6 (the float (+ gp-0 2))) - (close-specific-task! (the-as game-task (+ gp-0 2)) (task-status need-resolution)) - ) - ) + (close-specific-task! (the-as game-task (+ gp-0 2)) (task-status need-resolution)))) (dotimes (gp-1 100) - (if (not (task-closed? (the-as game-task (+ gp-1 2)) (task-status need-resolution))) - (return #f) - ) - ) - #t - ) + (if (not (task-closed? (the-as game-task (+ gp-1 2)) (task-status need-resolution))) (return #f))) + #t) (defun dm-give-cell ((arg0 game-task)) (send-event *target* 'get-pickup 6 (the float arg0)) (close-specific-task! arg0 (task-status need-resolution)) - (none) - ) + (none)) (defun dm-levitator-ready ((arg0 int) (arg1 debug-menu-msg)) (when (= arg1 (debug-menu-msg press)) @@ -3144,10 +2090,8 @@ (dm-give-cell (game-task sunken-pipe)) (dm-give-cell (game-task sunken-slide)) (dm-give-cell (game-task sunken-room)) - (dm-give-cell (game-task sunken-sharks)) - ) - (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) - ) + (dm-give-cell (game-task sunken-sharks))) + (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech))) (defun dm-lavabike-ready ((arg0 int) (arg1 debug-menu-msg)) (when (= arg1 (debug-menu-msg press)) @@ -3225,15 +2169,12 @@ (dm-give-cell (game-task citadel-sage-yellow)) (dm-give-cell (game-task village3-extra1)) (dm-give-cell (game-task village1-buzzer)) - (dm-give-cell (game-task village2-buzzer)) - ) - (= (get-task-status (game-task lavatube-start)) (task-status need-reward-speech)) - ) + (dm-give-cell (game-task village2-buzzer))) + (= (get-task-status (game-task lavatube-start)) (task-status need-reward-speech))) (defun debug-menu-make-task-menu ((arg0 debug-menu-context)) (let* ((s5-0 (new 'debug 'debug-menu arg0 "Task menu")) - (s4-0 (new 'debug 'debug-menu-item-submenu "Task" s5-0)) - ) + (s4-0 (new 'debug 'debug-menu-item-submenu "Task" s5-0))) (debug-menu-append-item s5-0 (new 'debug 'debug-menu-item-flag "enough money" #f dm-task-get-money)) (debug-menu-append-item s5-0 (new 'debug 'debug-menu-item-flag "levitator ready" #f dm-levitator-ready)) (debug-menu-append-item s5-0 (new 'debug 'debug-menu-item-flag "lavabike ready" #f dm-lavabike-ready)) @@ -3245,62 +2186,36 @@ (debug-menu-make-task-need-reminder-menu s5-0 arg0) (debug-menu-make-task-need-reward-speech-menu s5-0 arg0) (debug-menu-make-task-need-resolution-menu s5-0 arg0) - s4-0 - ) - ) + s4-0)) (defun dm-anim-tester-flag-func ((arg0 int) (arg1 debug-menu-msg)) (when *anim-tester* (case arg0 (('at-apply-align) - (if (= arg1 (debug-menu-msg press)) - (logxor! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt5)) - ) - (return (logtest? (-> *anim-tester* 0 flags) (anim-tester-flags fanimt5))) - ) + (if (= arg1 (debug-menu-msg press)) (logxor! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt5))) + (return (logtest? (-> *anim-tester* 0 flags) (anim-tester-flags fanimt5)))) (('at-show-joint-info) - (if (= arg1 (debug-menu-msg press)) - (logxor! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt4)) - ) - (return (logtest? (-> *anim-tester* 0 flags) (anim-tester-flags fanimt4))) - ) - ) - ) - #f - ) + (if (= arg1 (debug-menu-msg press)) (logxor! (-> *anim-tester* 0 flags) (anim-tester-flags fanimt4))) + (return (logtest? (-> *anim-tester* 0 flags) (anim-tester-flags fanimt4)))))) + #f) (defun dm-anim-tester-func ((arg0 int) (arg1 debug-menu-msg)) - (if (not *anim-tester*) - (anim-tester-start) - ) + (if (not *anim-tester*) (anim-tester-start)) (when *anim-tester* (cond ((= arg0 'at-pick-object) (send-event (ppointer->process *anim-tester*) 'pick-object) - (set! (-> *debug-menu-context* is-hidden) #t) - ) + (set! (-> *debug-menu-context* is-hidden) #t)) ((= arg0 'at-pick-joint-anim) (send-event (ppointer->process *anim-tester*) 'pick-joint-anim) - (set! (-> *debug-menu-context* is-hidden) #t) - ) + (set! (-> *debug-menu-context* is-hidden) #t)) ((= arg0 'at-pick-sequence) (send-event (ppointer->process *anim-tester*) 'pick-sequence) - (set! (-> *debug-menu-context* is-hidden) #t) - ) - ((= arg0 'at-save-sequences) - (send-event (ppointer->process *anim-tester*) 'save-sequences) - ) - ((= arg0 'at-cam-stick) - (set! *camera-orbit-target* *anim-tester*) - (send-event *camera* 'change-state cam-orbit 0) - ) - ((= arg0 'at-cam-free-floating) - (send-event *camera* 'change-state cam-free-floating 0) - ) - ) - ) - (none) - ) + (set! (-> *debug-menu-context* is-hidden) #t)) + ((= arg0 'at-save-sequences) (send-event (ppointer->process *anim-tester*) 'save-sequences)) + ((= arg0 'at-cam-stick) (set! *camera-orbit-target* *anim-tester*) (send-event *camera* 'change-state cam-orbit 0)) + ((= arg0 'at-cam-free-floating) (send-event *camera* 'change-state cam-free-floating 0)))) + (none)) (defun build-continue-menu ((arg0 debug-menu) (arg1 game-info)) (let ((s5-0 *level-load-list*)) @@ -3308,585 +2223,400 @@ (let ((s4-0 (-> (the-as level-load-info (-> (the-as symbol (car s5-0)) value)) continues))) (while (not (null? s4-0)) (let* ((v1-2 (the-as level-load-info (car s4-0))) - (a1-2 (new 'debug 'debug-menu-item-flag (the-as string (-> v1-2 name)) (-> v1-2 name) dm-current-continue)) - ) - (debug-menu-append-item arg0 a1-2) - ) - (set! s4-0 (cdr s4-0)) - ) - ) - (set! s5-0 (cdr s5-0)) - ) - ) - (the-as debug-menu-context arg0) - ) + (a1-2 (new 'debug 'debug-menu-item-flag (the-as string (-> v1-2 name)) (-> v1-2 name) dm-current-continue))) + (debug-menu-append-item arg0 a1-2)) + (set! s4-0 (cdr s4-0)))) + (set! s5-0 (cdr s5-0)))) + (the-as debug-menu-context arg0)) (defun debug-menu-context-make-default-menus ((arg0 debug-menu-context)) (let ((s5-0 (new 'debug 'debug-menu arg0 "Main menu"))) (debug-menu-context-set-root-menu arg0 s5-0) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Artist" - (flag "Poly Stats" *stats-poly* dm-boolean-toggle-pick-func) - (flag "Memory Stats" *stats-memory* dm-boolean-toggle-pick-func) - (flag "Memory Stats Short" *stats-memory-short* dm-boolean-toggle-pick-func) - (flag "Ground Stats" *display-ground-stats* dm-boolean-toggle-pick-func) - (flag "All Visible" *artist-all-visible* dm-boolean-toggle-pick-func) - (flag "Flip Visible" *artist-flip-visible* dm-boolean-toggle-pick-func) - (flag "Fix Visible" *artist-fix-visible* dm-boolean-toggle-pick-func) - (flag "Fix Frustum" *artist-fix-frustum* dm-boolean-toggle-pick-func) - (flag "Error Spheres" *artist-error-spheres* dm-boolean-toggle-pick-func) - (flag "Use menu subdiv" *artist-use-menu-subdiv* dm-boolean-toggle-pick-func) - (float-var "Subdiv Close" close dm-subdiv-float 10 1 #t 1 200 1) - (float-var "Subdiv Far" far dm-subdiv-float 10 1 #t 1 200 1) - (function "Target Start" #f ,(lambda () (start 'debug (get-or-create-continue! *game-info*)))) - (function "Target Stop" #f ,(lambda () (stop 'debug))) - (menu - "Anim Tester" - (int-var "Speed" anim-speed dm-subdiv-int 10 10 #t -300 1000) - (flag "Apply Align" at-apply-align dm-anim-tester-flag-func) - (flag "Show Joint Inf" at-show-joint-info dm-anim-tester-flag-func) - (function "Camera Face" at-cam-stick dm-anim-tester-func) - (function "Camera Free" at-cam-free-floating dm-anim-tester-func) - (function "Pick Object" at-pick-object dm-anim-tester-func) - (function "Pick Joint Anim" at-pick-joint-anim dm-anim-tester-func) - (function "Pick Sequence" at-pick-sequence dm-anim-tester-func) - (function "Save Sequences" at-save-sequences dm-anim-tester-func) - ) - (flag "Show Entity Errors" *display-entity-errors* dm-boolean-toggle-pick-func) - (flag "Sprite Info" *display-sprite-info* dm-boolean-toggle-pick-func) - (flag "Time of Day" #f dm-time-of-day-pick-func) - (flag "Preload Anims" *preload-spool-anims* dm-boolean-toggle-pick-func) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Game" - (function - "New Game" - #f - ,(lambda () (initialize! *game-info* 'game (the-as game-save #f) (the-as string #f)) (none)) - ) - (function - "New Life" - #f - ,(lambda () (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) (none)) - ) - (function - "Reset Game" - #f - ,(lambda () - (set! (-> *game-info* mode) 'debug) - (initialize! *game-info* 'game (the-as game-save #f) (the-as string #f)) - (none) - ) - ) - (function "Reset Actors" #f ,(lambda () (reset-actors 'debug) (none))) - (function "Save Game" #f ,(lambda () (auto-save-command 'save 0 0 *default-pool*) (none))) - (function "Load Game" #f ,(lambda () (auto-save-command 'restore 0 0 *default-pool*) (none))) - (flag "Target" #f ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (when (= arg1 (debug-menu-msg press)) - (if *target* - (stop 'debug) - (start 'debug (get-or-create-continue! *game-info*)) - ) - ) - *target* - ) - ) - (flag "Game Mode" play dm-game-mode-pick-func) - (flag "Debug Mode" debug dm-game-mode-pick-func) - (menu "Continue") - (menu - "Settings" - (float-var - "sfx-volume" - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg) (arg2 float)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default sfx-volume) arg2) - (-> *setting-control* default sfx-volume) - ) - ) - 2 - 1 - #t - 0 - 100 - 0 - ) - (float-var - "music-volume" - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg) (arg2 float)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default music-volume) arg2) - (-> *setting-control* default music-volume) - ) - ) - 2 - 1 - #t - 0 - 100 - 0 - ) - (float-var - "dialog-volume" - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg) (arg2 float)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default dialog-volume) arg2) - (-> *setting-control* default dialog-volume) - ) - ) - 2 - 1 - #t - 0 - 100 - 0 - ) - (menu - "Language" - (flag "english" 0 dm-setting-language) - (flag "japanese" 5 dm-setting-language) - (flag "french" 1 dm-setting-language) - (flag "german" 2 dm-setting-language) - (flag "spanish" 3 dm-setting-language) - (flag "italian" 4 dm-setting-language) - (flag "uk-english" 6 dm-setting-language) - ) - (flag - "play-hints " - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default play-hints) (not (-> *setting-control* default play-hints))) - ) - (-> *setting-control* default play-hints) - ) - ) - (flag - "vibration" - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default vibration) (not (-> *setting-control* default vibration))) - ) - (-> *setting-control* default vibration) - ) - ) - (flag - "border-mode" - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default border-mode) (not (-> *setting-control* default border-mode))) - ) - (-> *setting-control* default border-mode) - ) - ) - ) - ) - ) - ) - (let ((a0-8 (debug-menu-find-from-template arg0 '("Game" "Continue")))) - (build-continue-menu a0-8 *game-info*) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Stats" - (flag "Poly" *stats-poly* dm-boolean-toggle-pick-func) - (flag "Collide" *stats-collide* dm-boolean-toggle-pick-func) - (flag "Bsp" *stats-bsp* dm-boolean-toggle-pick-func) - (flag "Buffer" *stats-buffer* dm-boolean-toggle-pick-func) - (flag "Target" *stats-target* dm-boolean-toggle-pick-func) - (flag "Dma test" *stats-dma-test* dm-boolean-toggle-pick-func) - (flag "Blerc" *stats-blerc* dm-boolean-toggle-pick-func) - (flag "Perf" *display-perf-stats* dm-boolean-toggle-pick-func) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Render" - (flag "sky" 1 dm-vu1-user-toggle-pick-func) - (flag "ocean" 2 dm-vu1-user-toggle-pick-func) - (flag "ocean-wave" 4 dm-vu1-user-toggle-pick-func) - (flag "TFRAG TIE TEXTURES" #x1 dm-texture-user-toggle-pick-func) - (flag "tfrag" 8 dm-vu1-user-toggle-pick-func) - (flag "tie-near" 16 dm-vu1-user-toggle-pick-func) - (flag "tie" 32 dm-vu1-user-toggle-pick-func) - (flag "generic" 64 dm-vu1-user-toggle-pick-func) - (flag "generic-tie" *generic-tie* dm-boolean-toggle-pick-func) - (flag "PRIS TEXTURES" #x2 dm-texture-user-toggle-pick-func) - (flag "merc" 128 dm-vu1-user-toggle-pick-func) - (flag "SHRUB TEXTURES" #x4 dm-texture-user-toggle-pick-func) - (flag "shrub-near" 512 dm-vu1-user-toggle-pick-func) - (flag "shrubbery" 256 dm-vu1-user-toggle-pick-func) - (flag "billboard" 1024 dm-vu1-user-toggle-pick-func) - (flag "trans-shrubbery" 2048 dm-vu1-user-toggle-pick-func) - (flag "ALPHA TEXTURES" 1 dm-texture-user-toggle-pick-func) - (flag "trans-tfrag" 4096 dm-vu1-user-toggle-pick-func) - (flag "sprite" 8192 dm-vu1-user-toggle-pick-func) - (flag "shadow" 16384 dm-vu1-user-toggle-pick-func) - (flag "shadow-debug" *shadow-debug* dm-boolean-toggle-pick-func) - (flag "WATER TEXTURES" 2 dm-texture-user-toggle-pick-func) - (flag "depth-cue" 32768 dm-vu1-user-toggle-pick-func) - (flag "all on" 262143 dm-vu1-user-set-pick-func) - (flag "all off" 196608 dm-vu1-user-set-pick-func) - (flag "all textures on" #x1f dm-texture-user-set-pick-func) - (flag "all textures off" 0 dm-texture-user-set-pick-func) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Collision" - (flag "Collide Stats" *stats-collide* dm-boolean-toggle-pick-func) - (flag "Collision Marks" *display-collision-marks* dm-boolean-toggle-pick-func) - (flag "Collision Cache" *display-collide-cache* dm-boolean-toggle-pick-func) - (flag "Render Collision" *display-render-collision* dm-boolean-toggle-pick-func) - (flag "Hipri Collision Marks" *display-hipri-collision-marks* dm-boolean-toggle-pick-func) - (flag "Edge Collision Marks" *display-edge-collision-marks* dm-boolean-toggle-pick-func) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Display" - (flag "Input Display" *show-input-display* dm-boolean-toggle-pick-func) - (flag "Profile" *display-profile* dm-boolean-toggle-pick-func) - (flag "Ticks" *profile-ticks* dm-boolean-toggle-pick-func) - (flag "File Info" *display-file-info* dm-boolean-toggle-pick-func) - (flag "Level Spheres" *display-level-spheres* dm-boolean-toggle-pick-func) - (flag "Collision Marks" *display-collision-marks* dm-boolean-toggle-pick-func) - (flag "Collision Cache" *display-collide-cache* dm-boolean-toggle-pick-func) - (flag "Hipri Collision Marks" *display-hipri-collision-marks* dm-boolean-toggle-pick-func) - (flag "Edge Collision Marks" *display-edge-collision-marks* dm-boolean-toggle-pick-func) - (flag "Target Marks" *display-target-marks* dm-boolean-toggle-pick-func) - (flag "Target Stats" *stats-target* dm-boolean-toggle-pick-func) - (flag "Entity Lights" *display-lights* dm-boolean-toggle-pick-func) - (flag "Camera Marks" *display-camera-marks* dm-boolean-toggle-pick-func) - (flag "Camera Info" *display-camera-info* dm-boolean-toggle-pick-func) - (flag "Geometry Marks" *display-geo-marks* dm-boolean-toggle-pick-func) - (flag "Nav Marks" *display-nav-marks* dm-boolean-toggle-pick-func) - (flag "Path Marks" *display-path-marks* dm-boolean-toggle-pick-func) - (flag "Vol Marks" *display-vol-marks* dm-boolean-toggle-pick-func) - (menu - "Ambient Marks" - (flag "Ambient Hint Marks" *display-ambient-hint-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Sound Marks" *display-ambient-sound-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Poi Marks" *display-ambient-poi-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Light Marks" *display-ambient-light-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Dark Marks" *display-ambient-dark-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Weather Off Marks" *display-ambient-weather-off-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Ocean Off Marks" *display-ambient-ocean-off-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Ocean Near Off Marks" *display-ambient-ocean-near-off-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Music" *display-ambient-music-marks* dm-boolean-toggle-pick-func) - ) - (menu - "Actor Marks" - (flag "off" #f dm-actor-marks-pick-func) - (flag "on" #t dm-actor-marks-pick-func) - (flag "full" full dm-actor-marks-pick-func) - (flag "process" process dm-actor-marks-pick-func) - ) - (menu - "Actor Vis" - (flag "off" #f dm-actor-vis-pick-func) - (flag "box" box dm-actor-vis-pick-func) - (flag "sphere" sphere dm-actor-vis-pick-func) - (flag "all" #t dm-actor-vis-pick-func) - ) - (flag "Art Control" *display-art-control* dm-boolean-toggle-pick-func) - (flag "Instance Info" *display-instance-info* dm-boolean-toggle-pick-func) - (menu - "strip lines" - (flag "strippable" 1 dm-strip-lines-toggle-pick-func) - (flag "convertible" 2 dm-strip-lines-toggle-pick-func) - (flag "edgeable" 4 dm-strip-lines-toggle-pick-func) - (flag "ordinary" 8 dm-strip-lines-toggle-pick-func) - (flag "color mismatch" 16 dm-strip-lines-toggle-pick-func) - (flag "shader mismatch" 32 dm-strip-lines-toggle-pick-func) - (flag "uv mismatch" 64 dm-strip-lines-toggle-pick-func) - (flag "too big" 128 dm-strip-lines-toggle-pick-func) - (flag "good" 3 dm-strip-lines-set-pick-func) - (flag "bad" 240 dm-strip-lines-set-pick-func) - (flag "all edges" 255 dm-strip-lines-set-pick-func) - (flag "strips" 256 dm-strip-lines-set-pick-func) - (flag "frags" 512 dm-strip-lines-set-pick-func) - (flag "none" 0 dm-strip-lines-set-pick-func) - ) - (menu - "collision mesh" - (flag "wall" 1024 dm-strip-lines-toggle-pick-func) - (flag "ground" 2048 dm-strip-lines-toggle-pick-func) - (flag "all" 3072 dm-strip-lines-set-pick-func) - (flag "none" 0 dm-strip-lines-set-pick-func) - ) - (flag "Texture Download" *display-texture-download* dm-boolean-toggle-pick-func) - (flag "Level Border" *display-level-border* dm-boolean-toggle-pick-func) - (flag "Split Boxes" *display-split-boxes* dm-boolean-toggle-pick-func) - (flag "Split Box Info" *display-split-box-info* dm-boolean-toggle-pick-func) - (flag "Load boundaries" *display-load-boundaries* dm-boolean-toggle-pick-func) - (flag "Memcard Info" *display-memcard-info* dm-boolean-toggle-pick-func) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Actor" - (flag "Spawn Actors" *spawn-actors* dm-boolean-toggle-pick-func) - (function "Reset Actors" #f ,(lambda () (reset-actors 'debug) (none))) - (menu - "Actor Compaction" - (flag "off" #f dm-compact-actor-pick-func) - (flag "on" #t dm-compact-actor-pick-func) - (flag "debug" debug dm-compact-actor-pick-func) - ) - (flag "Ambients" *execute-ambients* dm-boolean-toggle-pick-func) - (flag "Ambient Hint Marks" *display-ambient-hint-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Sound Marks" *display-ambient-sound-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Poi Marks" *display-ambient-poi-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Light Marks" *display-ambient-light-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Dark Marks" *display-ambient-dark-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Weather Off Marks" *display-ambient-weather-off-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Ocean Off Marks" *display-ambient-ocean-off-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Ocean Near Off Marks" *display-ambient-ocean-near-off-marks* dm-boolean-toggle-pick-func) - (flag "Ambient Music" *display-ambient-music-marks* dm-boolean-toggle-pick-func) - (menu - "Actor Marks" - (flag "off" #f dm-actor-marks-pick-func) - (flag "on" #t dm-actor-marks-pick-func) - (flag "full" full dm-actor-marks-pick-func) - (flag "process" process dm-actor-marks-pick-func) - ) - (menu - "Actor Vis" - (flag "off" #f dm-actor-vis-pick-func) - (flag "box" box dm-actor-vis-pick-func) - (flag "sphere" sphere dm-actor-vis-pick-func) - (flag "all" #t dm-actor-vis-pick-func) - ) - (flag "Actor Vis" *vis-actors* dm-boolean-toggle-pick-func) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Target" - (flag "Target Stats" *stats-target* dm-boolean-toggle-pick-func) - (function "Play" #f ,(lambda () (play #t #t))) - (function "Start" #f ,(lambda () (the-as int (start 'debug (get-or-create-continue! *game-info*))))) - (function "Stop" #f ,(lambda () (stop 'debug))) - (flag - "Invulnerable" - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (when (= arg1 (debug-menu-msg press)) - (if *target* - (logxor! (-> *target* state-flags) (state-flags invulnerable)) - ) - ) - (the-as symbol (and *target* (logtest? (-> *target* state-flags) (state-flags invulnerable)))) - ) - ) - (function - "Reset Trans" - #f - ,(lambda () (when *target* - (position-in-front-of-camera! (target-pos 0) (the-as float 40960.0) (the-as float 4096.0)) - (set! (-> *target* control transv quad) (the-as uint128 0)) - (quaternion-identity! (-> *target* control quat)) - (quaternion-identity! (-> *target* control unknown-quaternion00)) - (quaternion-identity! (-> *target* control dir-targ)) - ) - ) - ) - (function "Zero Trans" #f ,(lambda () (when *target* - (set-vector! (-> *target* control trans) 0.0 163840.0 0.0 1.0) - (set! (-> *target* control transv quad) (the-as uint128 0)) - (quaternion-identity! (-> *target* control quat)) - (quaternion-identity! (-> *target* control unknown-quaternion00)) - (quaternion-identity! (-> *target* control dir-targ)) - ) - ) - ) - (menu - "Mode" - (function "normal" #f ,(lambda () (send-event *target* 'end-mode))) - (function "racing" #f ,(lambda () (send-event *target* 'change-mode 'racing #f))) - (function "flut" #f ,(lambda () (send-event *target* 'change-mode 'flut #f))) - (function "snowball" #f ,(lambda () (send-event *target* 'change-mode 'snowball #f))) - ) - (flag "Slow Frame Rate" *slow-frame-rate* dm-boolean-toggle-pick-func) - (function "Print Pos" #f ,(lambda () - (let ((v1-0 (target-pos 0))) - (format #t "~6,,2m ~6,,2m ~6,,2m~%" (-> v1-0 x) (-> v1-0 y) (-> v1-0 z)) - ) - 0 - (none) - ) - ) - (function "Save Continue" #f ,(lambda () - (if *target* - (trsq->continue-point (-> *target* control)) - ) - (none) - ) - ) - ) - ) - ) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Artist" + (flag "Poly Stats" *stats-poly* dm-boolean-toggle-pick-func) + (flag "Memory Stats" *stats-memory* dm-boolean-toggle-pick-func) + (flag "Memory Stats Short" *stats-memory-short* dm-boolean-toggle-pick-func) + (flag "Ground Stats" *display-ground-stats* dm-boolean-toggle-pick-func) + (flag "All Visible" *artist-all-visible* dm-boolean-toggle-pick-func) + (flag "Flip Visible" *artist-flip-visible* dm-boolean-toggle-pick-func) + (flag "Fix Visible" *artist-fix-visible* dm-boolean-toggle-pick-func) + (flag "Fix Frustum" *artist-fix-frustum* dm-boolean-toggle-pick-func) + (flag "Error Spheres" *artist-error-spheres* dm-boolean-toggle-pick-func) + (flag "Use menu subdiv" *artist-use-menu-subdiv* dm-boolean-toggle-pick-func) + (float-var "Subdiv Close" close dm-subdiv-float 10 1 #t 1 200 1) + (float-var "Subdiv Far" far dm-subdiv-float 10 1 #t 1 200 1) + (function "Target Start" #f ,(lambda () (start 'debug (get-or-create-continue! *game-info*)))) + (function "Target Stop" #f ,(lambda () (stop 'debug))) + (menu "Anim Tester" + (int-var "Speed" anim-speed dm-subdiv-int 10 10 #t -300 1000) + (flag "Apply Align" at-apply-align dm-anim-tester-flag-func) + (flag "Show Joint Inf" at-show-joint-info dm-anim-tester-flag-func) + (function "Camera Face" at-cam-stick dm-anim-tester-func) + (function "Camera Free" at-cam-free-floating dm-anim-tester-func) + (function "Pick Object" at-pick-object dm-anim-tester-func) + (function "Pick Joint Anim" at-pick-joint-anim dm-anim-tester-func) + (function "Pick Sequence" at-pick-sequence dm-anim-tester-func) + (function "Save Sequences" at-save-sequences dm-anim-tester-func)) + (flag "Show Entity Errors" *display-entity-errors* dm-boolean-toggle-pick-func) + (flag "Sprite Info" *display-sprite-info* dm-boolean-toggle-pick-func) + (flag "Time of Day" #f dm-time-of-day-pick-func) + (flag "Preload Anims" *preload-spool-anims* dm-boolean-toggle-pick-func)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Game" + (function "New Game" #f ,(lambda () (initialize! *game-info* 'game (the-as game-save #f) (the-as string #f)) (none))) + (function "New Life" #f ,(lambda () (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) (none))) + (function "Reset Game" + #f + ,(lambda () + (set! (-> *game-info* mode) 'debug) + (initialize! *game-info* 'game (the-as game-save #f) (the-as string #f)) + (none))) + (function "Reset Actors" #f ,(lambda () (reset-actors 'debug) (none))) + (function "Save Game" #f ,(lambda () (auto-save-command 'save 0 0 *default-pool*) (none))) + (function "Load Game" #f ,(lambda () (auto-save-command 'restore 0 0 *default-pool*) (none))) + (flag "Target" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (when (= arg1 (debug-menu-msg press)) + (if *target* (stop 'debug) (start 'debug (get-or-create-continue! *game-info*)))) + *target*)) + (flag "Game Mode" play dm-game-mode-pick-func) + (flag "Debug Mode" debug dm-game-mode-pick-func) + (menu "Continue") + (menu "Settings" + (float-var "sfx-volume" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg) (arg2 float)) + (if (= arg1 (debug-menu-msg press)) + (set! (-> *setting-control* default sfx-volume) arg2) + (-> *setting-control* default sfx-volume))) + 2 + 1 + #t + 0 + 100 + 0) + (float-var "music-volume" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg) (arg2 float)) + (if (= arg1 (debug-menu-msg press)) + (set! (-> *setting-control* default music-volume) arg2) + (-> *setting-control* default music-volume))) + 2 + 1 + #t + 0 + 100 + 0) + (float-var "dialog-volume" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg) (arg2 float)) + (if (= arg1 (debug-menu-msg press)) + (set! (-> *setting-control* default dialog-volume) arg2) + (-> *setting-control* default dialog-volume))) + 2 + 1 + #t + 0 + 100 + 0) + (menu "Language" + (flag "english" 0 dm-setting-language) + (flag "japanese" 5 dm-setting-language) + (flag "french" 1 dm-setting-language) + (flag "german" 2 dm-setting-language) + (flag "spanish" 3 dm-setting-language) + (flag "italian" 4 dm-setting-language) + (flag "uk-english" 6 dm-setting-language)) + (flag "play-hints " + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (if (= arg1 (debug-menu-msg press)) + (set! (-> *setting-control* default play-hints) (not (-> *setting-control* default play-hints)))) + (-> *setting-control* default play-hints))) + (flag "vibration" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (if (= arg1 (debug-menu-msg press)) + (set! (-> *setting-control* default vibration) (not (-> *setting-control* default vibration)))) + (-> *setting-control* default vibration))) + (flag "border-mode" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (if (= arg1 (debug-menu-msg press)) + (set! (-> *setting-control* default border-mode) (not (-> *setting-control* default border-mode)))) + (-> *setting-control* default border-mode))))))) + (let ((a0-8 (debug-menu-find-from-template arg0 '("Game" "Continue")))) (build-continue-menu a0-8 *game-info*)) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Stats" + (flag "Poly" *stats-poly* dm-boolean-toggle-pick-func) + (flag "Collide" *stats-collide* dm-boolean-toggle-pick-func) + (flag "Bsp" *stats-bsp* dm-boolean-toggle-pick-func) + (flag "Buffer" *stats-buffer* dm-boolean-toggle-pick-func) + (flag "Target" *stats-target* dm-boolean-toggle-pick-func) + (flag "Dma test" *stats-dma-test* dm-boolean-toggle-pick-func) + (flag "Blerc" *stats-blerc* dm-boolean-toggle-pick-func) + (flag "Perf" *display-perf-stats* dm-boolean-toggle-pick-func)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Render" + (flag "sky" 1 dm-vu1-user-toggle-pick-func) + (flag "ocean" 2 dm-vu1-user-toggle-pick-func) + (flag "ocean-wave" 4 dm-vu1-user-toggle-pick-func) + (flag "TFRAG TIE TEXTURES" #x1 dm-texture-user-toggle-pick-func) + (flag "tfrag" 8 dm-vu1-user-toggle-pick-func) + (flag "tie-near" 16 dm-vu1-user-toggle-pick-func) + (flag "tie" 32 dm-vu1-user-toggle-pick-func) + (flag "generic" 64 dm-vu1-user-toggle-pick-func) + (flag "generic-tie" *generic-tie* dm-boolean-toggle-pick-func) + (flag "PRIS TEXTURES" #x2 dm-texture-user-toggle-pick-func) + (flag "merc" 128 dm-vu1-user-toggle-pick-func) + (flag "SHRUB TEXTURES" #x4 dm-texture-user-toggle-pick-func) + (flag "shrub-near" 512 dm-vu1-user-toggle-pick-func) + (flag "shrubbery" 256 dm-vu1-user-toggle-pick-func) + (flag "billboard" 1024 dm-vu1-user-toggle-pick-func) + (flag "trans-shrubbery" 2048 dm-vu1-user-toggle-pick-func) + (flag "ALPHA TEXTURES" 1 dm-texture-user-toggle-pick-func) + (flag "trans-tfrag" 4096 dm-vu1-user-toggle-pick-func) + (flag "sprite" 8192 dm-vu1-user-toggle-pick-func) + (flag "shadow" 16384 dm-vu1-user-toggle-pick-func) + (flag "shadow-debug" *shadow-debug* dm-boolean-toggle-pick-func) + (flag "WATER TEXTURES" 2 dm-texture-user-toggle-pick-func) + (flag "depth-cue" 32768 dm-vu1-user-toggle-pick-func) + (flag "all on" 262143 dm-vu1-user-set-pick-func) + (flag "all off" 196608 dm-vu1-user-set-pick-func) + (flag "all textures on" #x1f dm-texture-user-set-pick-func) + (flag "all textures off" 0 dm-texture-user-set-pick-func)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Collision" + (flag "Collide Stats" *stats-collide* dm-boolean-toggle-pick-func) + (flag "Collision Marks" *display-collision-marks* dm-boolean-toggle-pick-func) + (flag "Collision Cache" *display-collide-cache* dm-boolean-toggle-pick-func) + (flag "Render Collision" *display-render-collision* dm-boolean-toggle-pick-func) + (flag "Hipri Collision Marks" *display-hipri-collision-marks* dm-boolean-toggle-pick-func) + (flag "Edge Collision Marks" *display-edge-collision-marks* dm-boolean-toggle-pick-func)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Display" + (flag "Profile" *display-profile* dm-boolean-toggle-pick-func) + (flag "Ticks" *profile-ticks* dm-boolean-toggle-pick-func) + (flag "File Info" *display-file-info* dm-boolean-toggle-pick-func) + (flag "Level Spheres" *display-level-spheres* dm-boolean-toggle-pick-func) + (flag "Collision Marks" *display-collision-marks* dm-boolean-toggle-pick-func) + (flag "Collision Cache" *display-collide-cache* dm-boolean-toggle-pick-func) + (flag "Hipri Collision Marks" *display-hipri-collision-marks* dm-boolean-toggle-pick-func) + (flag "Edge Collision Marks" *display-edge-collision-marks* dm-boolean-toggle-pick-func) + (flag "Target Marks" *display-target-marks* dm-boolean-toggle-pick-func) + (flag "Target Stats" *stats-target* dm-boolean-toggle-pick-func) + (flag "Entity Lights" *display-lights* dm-boolean-toggle-pick-func) + (flag "Camera Marks" *display-camera-marks* dm-boolean-toggle-pick-func) + (flag "Camera Info" *display-camera-info* dm-boolean-toggle-pick-func) + (flag "Geometry Marks" *display-geo-marks* dm-boolean-toggle-pick-func) + (flag "Nav Marks" *display-nav-marks* dm-boolean-toggle-pick-func) + (flag "Path Marks" *display-path-marks* dm-boolean-toggle-pick-func) + (flag "Vol Marks" *display-vol-marks* dm-boolean-toggle-pick-func) + (menu "Ambient Marks" + (flag "Ambient Hint Marks" *display-ambient-hint-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Sound Marks" *display-ambient-sound-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Poi Marks" *display-ambient-poi-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Light Marks" *display-ambient-light-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Dark Marks" *display-ambient-dark-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Weather Off Marks" *display-ambient-weather-off-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Ocean Off Marks" *display-ambient-ocean-off-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Ocean Near Off Marks" *display-ambient-ocean-near-off-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Music" *display-ambient-music-marks* dm-boolean-toggle-pick-func)) + (menu "Actor Marks" + (flag "off" #f dm-actor-marks-pick-func) + (flag "on" #t dm-actor-marks-pick-func) + (flag "full" full dm-actor-marks-pick-func) + (flag "process" process dm-actor-marks-pick-func)) + (menu "Actor Vis" + (flag "off" #f dm-actor-vis-pick-func) + (flag "box" box dm-actor-vis-pick-func) + (flag "sphere" sphere dm-actor-vis-pick-func) + (flag "all" #t dm-actor-vis-pick-func)) + (flag "Art Control" *display-art-control* dm-boolean-toggle-pick-func) + (flag "Instance Info" *display-instance-info* dm-boolean-toggle-pick-func) + (menu "strip lines" + (flag "strippable" 1 dm-strip-lines-toggle-pick-func) + (flag "convertible" 2 dm-strip-lines-toggle-pick-func) + (flag "edgeable" 4 dm-strip-lines-toggle-pick-func) + (flag "ordinary" 8 dm-strip-lines-toggle-pick-func) + (flag "color mismatch" 16 dm-strip-lines-toggle-pick-func) + (flag "shader mismatch" 32 dm-strip-lines-toggle-pick-func) + (flag "uv mismatch" 64 dm-strip-lines-toggle-pick-func) + (flag "too big" 128 dm-strip-lines-toggle-pick-func) + (flag "good" 3 dm-strip-lines-set-pick-func) + (flag "bad" 240 dm-strip-lines-set-pick-func) + (flag "all edges" 255 dm-strip-lines-set-pick-func) + (flag "strips" 256 dm-strip-lines-set-pick-func) + (flag "frags" 512 dm-strip-lines-set-pick-func) + (flag "none" 0 dm-strip-lines-set-pick-func)) + (menu "collision mesh" + (flag "wall" 1024 dm-strip-lines-toggle-pick-func) + (flag "ground" 2048 dm-strip-lines-toggle-pick-func) + (flag "all" 3072 dm-strip-lines-set-pick-func) + (flag "none" 0 dm-strip-lines-set-pick-func)) + (flag "Texture Download" *display-texture-download* dm-boolean-toggle-pick-func) + (flag "Level Border" *display-level-border* dm-boolean-toggle-pick-func) + (flag "Split Boxes" *display-split-boxes* dm-boolean-toggle-pick-func) + (flag "Split Box Info" *display-split-box-info* dm-boolean-toggle-pick-func) + (flag "Load boundaries" *display-load-boundaries* dm-boolean-toggle-pick-func) + (flag "Memcard Info" *display-memcard-info* dm-boolean-toggle-pick-func)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Actor" + (flag "Spawn Actors" *spawn-actors* dm-boolean-toggle-pick-func) + (function "Reset Actors" #f ,(lambda () (reset-actors 'debug) (none))) + (menu "Actor Compaction" + (flag "off" #f dm-compact-actor-pick-func) + (flag "on" #t dm-compact-actor-pick-func) + (flag "debug" debug dm-compact-actor-pick-func)) + (flag "Ambients" *execute-ambients* dm-boolean-toggle-pick-func) + (flag "Ambient Hint Marks" *display-ambient-hint-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Sound Marks" *display-ambient-sound-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Poi Marks" *display-ambient-poi-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Light Marks" *display-ambient-light-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Dark Marks" *display-ambient-dark-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Weather Off Marks" *display-ambient-weather-off-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Ocean Off Marks" *display-ambient-ocean-off-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Ocean Near Off Marks" *display-ambient-ocean-near-off-marks* dm-boolean-toggle-pick-func) + (flag "Ambient Music" *display-ambient-music-marks* dm-boolean-toggle-pick-func) + (menu "Actor Marks" + (flag "off" #f dm-actor-marks-pick-func) + (flag "on" #t dm-actor-marks-pick-func) + (flag "full" full dm-actor-marks-pick-func) + (flag "process" process dm-actor-marks-pick-func)) + (menu "Actor Vis" + (flag "off" #f dm-actor-vis-pick-func) + (flag "box" box dm-actor-vis-pick-func) + (flag "sphere" sphere dm-actor-vis-pick-func) + (flag "all" #t dm-actor-vis-pick-func)) + (flag "Actor Vis" *vis-actors* dm-boolean-toggle-pick-func)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Target" + (flag "Target Stats" *stats-target* dm-boolean-toggle-pick-func) + (function "Play" #f ,(lambda () (play #t #t))) + (function "Start" #f ,(lambda () (the-as int (start 'debug (get-or-create-continue! *game-info*))))) + (function "Stop" #f ,(lambda () (stop 'debug))) + (flag "Invulnerable" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (when (= arg1 (debug-menu-msg press)) + (if *target* (logxor! (-> *target* state-flags) (state-flags invulnerable)))) + (the-as symbol (and *target* (logtest? (-> *target* state-flags) (state-flags invulnerable)))))) + (function "Reset Trans" + #f + ,(lambda () + (when *target* + (position-in-front-of-camera! (target-pos 0) (the-as float 40960.0) (the-as float 4096.0)) + (set! (-> *target* control transv quad) (the-as uint128 0)) + (quaternion-identity! (-> *target* control quat)) + (quaternion-identity! (-> *target* control unknown-quaternion00)) + (quaternion-identity! (-> *target* control dir-targ))))) + (function "Zero Trans" + #f + ,(lambda () + (when *target* + (set-vector! (-> *target* control trans) 0.0 163840.0 0.0 1.0) + (set! (-> *target* control transv quad) (the-as uint128 0)) + (quaternion-identity! (-> *target* control quat)) + (quaternion-identity! (-> *target* control unknown-quaternion00)) + (quaternion-identity! (-> *target* control dir-targ))))) + (menu "Mode" + (function "normal" #f ,(lambda () (send-event *target* 'end-mode))) + (function "racing" #f ,(lambda () (send-event *target* 'change-mode 'racing #f))) + (function "snowball" #f ,(lambda () (send-event *target* 'change-mode 'snowball #f)))) + (flag "Slow Frame Rate" *slow-frame-rate* dm-boolean-toggle-pick-func) + (function "Print Pos" + #f + ,(lambda () + (let ((v1-0 (target-pos 0))) (format #t "~6,,2m ~6,,2m ~6,,2m~%" (-> v1-0 x) (-> v1-0 y) (-> v1-0 z))) + 0 + (none))) + (function "Save Continue" #f ,(lambda () (if *target* (trsq->continue-point (-> *target* control))) (none)))))) (debug-menu-append-item s5-0 (debug-menu-make-camera-menu arg0)) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Subdiv" - (flag "Textured" 0 dm-subdiv-draw-func) - (flag "Outline" 1 dm-subdiv-draw-func) - (flag "Gouraud" 2 dm-subdiv-draw-func) - (flag "Hack" 3 dm-subdiv-draw-func) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Ocean Subdiv" - (flag "Textured" 0 dm-ocean-subdiv-draw-func) - (flag "Outline" 1 dm-ocean-subdiv-draw-func) - (flag "Gouraud" 2 dm-ocean-subdiv-draw-func) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Time of day" - (flag "7am sunrise" 0 dm-time-of-day-func) - (flag "9am morning" 1 dm-time-of-day-func) - (flag "12pm noon" 2 dm-time-of-day-func) - (flag "3pm afternoon" 3 dm-time-of-day-func) - (flag "6pm sunset" 4 dm-time-of-day-func) - (flag "7pm twilight" 5 dm-time-of-day-func) - (flag "11pm evening" 6 dm-time-of-day-func) - (flag "4am green sun" 7 dm-time-of-day-func) - (flag "on" 8 dm-time-of-day-func) - (flag "Effects" *time-of-day-effects* dm-boolean-toggle-pick-func) - (flag "Fast" *time-of-day-fast* dm-time-of-day-func2) - ) - ) - ) - (debug-menu-append-item - s5-0 - (debug-menu-make-from-template - arg0 - '(menu - "Sound" - (flag "Effect Debug" *debug-effect-control* dm-boolean-toggle-pick-func) - (flag "Amb Snd Marks" *display-ambient-sound-marks* dm-boolean-toggle-pick-func) - (flag "Amb Snd Class" *ambient-sound-class* dm-boolean-toggle-pick-func) - (flag "Amb Spheres" *execute-ambients* dm-boolean-toggle-pick-func) - (flag "Sound channels" *display-iop-info* dm-boolean-toggle-pick-func) - (function "List Sounds" #f ,(lambda () (list-sounds))) - ) - ) - ) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Subdiv" + (flag "Textured" 0 dm-subdiv-draw-func) + (flag "Outline" 1 dm-subdiv-draw-func) + (flag "Gouraud" 2 dm-subdiv-draw-func) + (flag "Hack" 3 dm-subdiv-draw-func)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Ocean Subdiv" + (flag "Textured" 0 dm-ocean-subdiv-draw-func) + (flag "Outline" 1 dm-ocean-subdiv-draw-func) + (flag "Gouraud" 2 dm-ocean-subdiv-draw-func)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Time of day" + (flag "7am sunrise" 0 dm-time-of-day-func) + (flag "9am morning" 1 dm-time-of-day-func) + (flag "12pm noon" 2 dm-time-of-day-func) + (flag "3pm afternoon" 3 dm-time-of-day-func) + (flag "6pm sunset" 4 dm-time-of-day-func) + (flag "7pm twilight" 5 dm-time-of-day-func) + (flag "11pm evening" 6 dm-time-of-day-func) + (flag "4am green sun" 7 dm-time-of-day-func) + (flag "on" 8 dm-time-of-day-func) + (flag "Effects" *time-of-day-effects* dm-boolean-toggle-pick-func) + (flag "Fast" *time-of-day-fast* dm-time-of-day-func2)))) + (debug-menu-append-item s5-0 + (debug-menu-make-from-template arg0 + '(menu "Sound" + (flag "Effect Debug" *debug-effect-control* dm-boolean-toggle-pick-func) + (flag "Amb Snd Marks" *display-ambient-sound-marks* dm-boolean-toggle-pick-func) + (flag "Amb Snd Class" *ambient-sound-class* dm-boolean-toggle-pick-func) + (flag "Amb Spheres" *execute-ambients* dm-boolean-toggle-pick-func) + (flag "Sound channels" *display-iop-info* dm-boolean-toggle-pick-func) + (function "List Sounds" #f ,(lambda () (list-sounds)))))) (debug-menu-append-item s5-0 (debug-menu-make-shader-menu arg0)) (debug-menu-append-item s5-0 (debug-menu-make-instance-menu arg0)) - (debug-menu-append-item s5-0 (debug-menu-make-task-menu arg0)) - ) - arg0 - ) + (debug-menu-append-item s5-0 (debug-menu-make-task-menu arg0))) + arg0) (define *popup-menu-context* (new 'debug 'debug-menu-context)) (defun popup-menu-context-make-default-menus ((arg0 debug-menu-context)) - (debug-menu-make-from-template - arg0 - '(main-menu - "Popup" - (flag "Cam 1" pad-1 dm-cam-externalize) - (flag "Target" #f ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (when (= arg1 (debug-menu-msg press)) - (if *target* - (stop 'debug) - (start 'debug (get-or-create-continue! *game-info*)) - ) - ) - *target* - ) - ) - (flag "Game" #f ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (when (= arg1 (debug-menu-msg press)) - (let ((v1-3 (-> *game-info* mode))) - (set! (-> *game-info* mode) (cond - ((= v1-3 'play) - 'debug - ) - ((= v1-3 'debug) - 'play - ) - (else - (-> *game-info* mode) - ) - ) - ) - ) - ) - (= (-> *game-info* mode) 'play) - ) - ) - (function "Clean" #f ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (if (time-of-day-setup #f) - (time-of-day-setup #t) - ) - (set! *display-entity-errors* #f) - (set! *display-profile* #f) - (set! *display-actor-marks* #f) - #f - ) - ) - (flag "Stats" *stats-target* dm-boolean-toggle-pick-func) - (function "Reset" #f ,(lambda () (reset-actors 'debug) (none))) - ) - ) - arg0 - ) + (debug-menu-make-from-template arg0 + '(main-menu "Popup" + (flag "Cam 1" pad-1 dm-cam-externalize) + (flag "Target" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (when (= arg1 (debug-menu-msg press)) + (if *target* (stop 'debug) (start 'debug (get-or-create-continue! *game-info*)))) + *target*)) + (flag "Game" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (when (= arg1 (debug-menu-msg press)) + (let ((v1-3 (-> *game-info* mode))) + (set! (-> *game-info* mode) + (cond + ((= v1-3 'play) 'debug) + ((= v1-3 'debug) 'play) + (else (-> *game-info* mode)))))) + (= (-> *game-info* mode) 'play))) + (function "Clean" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (if (time-of-day-setup #f) (time-of-day-setup #t)) + (set! *display-entity-errors* #f) + (set! *display-profile* #f) + (set! *display-actor-marks* #f) + #f)) + (flag "Stats" *stats-target* dm-boolean-toggle-pick-func) + (function "Reset" #f ,(lambda () (reset-actors 'debug) (none))))) + arg0) (debug-menu-context-make-default-menus *debug-menu-context*) @@ -3896,19 +2626,13 @@ (case *master-mode* (('menu) (if (cpad-hold? 0 l3) - (debug-menu-context-send-msg *popup-menu-context* (debug-menu-msg activate) (debug-menu-dest activation)) - (debug-menu-context-send-msg *debug-menu-context* (debug-menu-msg activate) (debug-menu-dest activation)) - ) - ) + (debug-menu-context-send-msg *popup-menu-context* (debug-menu-msg activate) (debug-menu-dest activation)) + (debug-menu-context-send-msg *debug-menu-context* (debug-menu-msg activate) (debug-menu-dest activation)))) (else - (debug-menu-context-send-msg *debug-menu-context* (debug-menu-msg deactivate) (debug-menu-dest activation)) - (debug-menu-context-send-msg *popup-menu-context* (debug-menu-msg deactivate) (debug-menu-dest activation)) - ) - ) - #f - ) + (debug-menu-context-send-msg *debug-menu-context* (debug-menu-msg deactivate) (debug-menu-dest activation)) + (debug-menu-context-send-msg *popup-menu-context* (debug-menu-msg deactivate) (debug-menu-dest activation)))) + #f) (defun *menu-hook* () (debug-menus-handler *debug-menu-context*) - (debug-menus-handler *popup-menu-context*) - ) + (debug-menus-handler *popup-menu-context*)) diff --git a/goal_src/jak1/engine/debug/memory-usage-h.gc b/goal_src/jak1/engine/debug/memory-usage-h.gc index d6790e1766..181646bf6b 100644 --- a/goal_src/jak1/engine/debug/memory-usage-h.gc +++ b/goal_src/jak1/engine/debug/memory-usage-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: memory-usage-h.gc -;; name in dgo: memory-usage-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; this file is debug only @@ -23,26 +18,20 @@ ;; Information for a single category. (deftype memory-usage-info (structure) - ((name string) - (count int32) - (used int32) - (total int32) - ) - ) + ((name string) + (count int32) + (used int32) + (total int32))) ;; Memory info for all categories (deftype memory-usage-block (basic) - ((work-bsp basic) - (length int32) - (data memory-usage-info 109 :inline) - ) + ((work-bsp basic) + (length int32) + (data memory-usage-info 109 :inline)) (:methods - (reset! (_type_) _type_) - (calculate-total (_type_) int) - (print-mem-usage (_type_ level object) none) - ) - ) - + (reset! (_type_) _type_) + (calculate-total (_type_) int) + (print-mem-usage (_type_ level object) none))) ;; The main RAM usage memory info (define *mem-usage* (new 'debug 'memory-usage-block)) @@ -63,115 +52,113 @@ ;; Memory usage stats are organized by the type of object. ;; This enum allows you to go from type to the index in the memory-usage-block's data array. (defenum mem-usage-id - :bitfield #f - :type uint32 - (drawable-group 0) - (tfragment 1) - (tfragment-base 2) - (tfragment-common 3) - (tfragment-level0 4) - (tfragment-level1 5) - (tfragment-color 6) - (tfragment-debug 7) - (tfragment-pal 8) - (tie-fragment 9) - (tie-gif 10) - (tie-points 11) - (tie-colors 12) - (tie-draw-points 13) - (tie-debug 14) - (tie-near 15) - (tie-pal 16) - (tie-generic 17) - (instance-tie 18) - (instance-tie-colors0 19) - (instance-tie-colors1 20) - (instance-tie-colors2 21) - (instance-tie-colors3 22) - (instance-tie-colors* 23) - (prototype-bucket-shrub 24) - (generic-shrub 25) - (generic-shrub-data 26) - (shrubbery 27) - (shrubbery-object 28) - (shrubbery-vertex 29) - (shrubbery-color 30) - (shrubbery-stq 31) - (shrubbery-pal 32) - (billboard 33) - (instance-shrubbery 34) - (pris-fragment 35) - ;; ?? - (entity 43) - (camera 44) - (nav-mesh 45) - ;; ?? - (res 48) - (ambient 49) - (collide-fragment-0 50) - (collision-poly-0 51) - (collision-vertex-0 52) - (collide-fragment-1 53) - (collision-poly-1 54) - (collision-vertex-1 55) - (bsp-main 56) - (bsp-misc 57) - (bsp-node 58) - (bsp-leaf-vis-self 59) - (bsp-leaf-vis-adj 60) - (draw-node 61) - (pat 62) - (level-code 63) - (entity-links 64) ;; or ambient links, its messed up - (joint 65) - (joint-anim-compressed 66) - (joint-anim-compressed-control 67) - (joint-anim-fixed 68) - (joint-anim-frame 69) - (art-group 70) - (art-mesh-anim 71) - (art-mesh-geo 72) - (art-joint-geo 73) - (art-joint-anim 74) - (merc-ctrl 75) - (joint-anim-drawable 76) - (blend-shape 77) - (collide-mesh 78) - (texture 79) - (string 80) - (array 81) - (sprite 82) - (depth-cue 83) - (debug-dma 84) ;; maybe - (sky-dma 85) ;; maybe - (pris-generic) - (4k-dead-pool 87) - (8k-dead-pool 88) - (16k-dead-pool 89) - (nk-dead-pool 90) - (target-dead-pool 91) - (camera-dead-pool 92) - (debug-dead-pool 93) - (process-active 94) - (heap-total 95) - (heap-process 96) - (heap-header 97) - (heap-thread 98) - (heap-root 99) - (heap-draw-control 100) - (heap-joint-control 101) - (heap-cspace 102) - (heap-bone 103) - (heap-part 104) - (heap-collide-prim 105) - (heap-misc 106) - (shadow-geo 107) - (eye-anim 108) - ) + :bitfield #f + :type uint32 + (drawable-group 0) + (tfragment 1) + (tfragment-base 2) + (tfragment-common 3) + (tfragment-level0 4) + (tfragment-level1 5) + (tfragment-color 6) + (tfragment-debug 7) + (tfragment-pal 8) + (tie-fragment 9) + (tie-gif 10) + (tie-points 11) + (tie-colors 12) + (tie-draw-points 13) + (tie-debug 14) + (tie-near 15) + (tie-pal 16) + (tie-generic 17) + (instance-tie 18) + (instance-tie-colors0 19) + (instance-tie-colors1 20) + (instance-tie-colors2 21) + (instance-tie-colors3 22) + (instance-tie-colors* 23) + (prototype-bucket-shrub 24) + (generic-shrub 25) + (generic-shrub-data 26) + (shrubbery 27) + (shrubbery-object 28) + (shrubbery-vertex 29) + (shrubbery-color 30) + (shrubbery-stq 31) + (shrubbery-pal 32) + (billboard 33) + (instance-shrubbery 34) + (pris-fragment 35) + ;; ?? + (entity 43) + (camera 44) + (nav-mesh 45) + ;; ?? + (res 48) + (ambient 49) + (collide-fragment-0 50) + (collision-poly-0 51) + (collision-vertex-0 52) + (collide-fragment-1 53) + (collision-poly-1 54) + (collision-vertex-1 55) + (bsp-main 56) + (bsp-misc 57) + (bsp-node 58) + (bsp-leaf-vis-self 59) + (bsp-leaf-vis-adj 60) + (draw-node 61) + (pat 62) + (level-code 63) + (entity-links 64) ;; or ambient links, its messed up + (joint 65) + (joint-anim-compressed 66) + (joint-anim-compressed-control 67) + (joint-anim-fixed 68) + (joint-anim-frame 69) + (art-group 70) + (art-mesh-anim 71) + (art-mesh-geo 72) + (art-joint-geo 73) + (art-joint-anim 74) + (merc-ctrl 75) + (joint-anim-drawable 76) + (blend-shape 77) + (collide-mesh 78) + (texture 79) + (string 80) + (array 81) + (sprite 82) + (depth-cue 83) + (debug-dma 84) ;; maybe + (sky-dma 85) ;; maybe + (pris-generic) + (4k-dead-pool 87) + (8k-dead-pool 88) + (16k-dead-pool 89) + (nk-dead-pool 90) + (target-dead-pool 91) + (camera-dead-pool 92) + (debug-dead-pool 93) + (process-active 94) + (heap-total 95) + (heap-process 96) + (heap-header 97) + (heap-thread 98) + (heap-root 99) + (heap-draw-control 100) + (heap-joint-control 101) + (heap-cspace 102) + (heap-bone 103) + (heap-part 104) + (heap-collide-prim 105) + (heap-misc 106) + (shadow-geo 107) + (eye-anim 108)) ;; get a memory usage id as an integer. (defmacro mem-usage-id-int (kind) - `(the int (mem-usage-id ,kind)) - ) + `(the int (mem-usage-id ,kind))) (defun-extern mem-size basic symbol int int) diff --git a/goal_src/jak1/engine/debug/memory-usage.gc b/goal_src/jak1/engine/debug/memory-usage.gc index ac14bf264f..2bbd6c56af 100644 --- a/goal_src/jak1/engine/debug/memory-usage.gc +++ b/goal_src/jak1/engine/debug/memory-usage.gc @@ -1,63 +1,37 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/level.gc") -;; name: memory-usage.gc -;; name in dgo: memory-usage -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; this file is debug only (declare-file (debug)) - (defmethod inspect ((this memory-usage-block)) "Print the memory-usage by category. This is a large print." (format #t "-------------------------------------------------------------~%") (format #t " # name count bytes used aligned bytes~%") (format #t "-------------------------------------------------------------~%") (let ((s5-0 0) - (s4-0 0) - ) + (s4-0 0)) (dotimes (s3-0 (-> this length)) (let ((v1-2 (-> this data s3-0))) (+! s5-0 (-> v1-2 used)) (+! s4-0 (-> v1-2 total)) - (format #t "~3D: ~20S ~7D ~8D ~8D~%" - s3-0 - (-> v1-2 name) - (-> v1-2 count) - (-> v1-2 used) - (-> v1-2 total) - ) - ) - ) - (format #t "total: ~8D ~8D~%" s5-0 s4-0) - ) + (format #t "~3D: ~20S ~7D ~8D ~8D~%" s3-0 (-> v1-2 name) (-> v1-2 count) (-> v1-2 used) (-> v1-2 total)))) + (format #t "total: ~8D ~8D~%" s5-0 s4-0)) (format #t "-------------------------------------------------------------~%") - this - ) + this) (defmethod mem-usage ((this object) (arg0 memory-usage-block) (arg1 int)) "Most general mem-usage message. Just prints a warning, in case you expect this to do something." - (if this - (format #t "WARNING: mem-usage called on object, probably not what was wanted for ~A~%" this) - ) - this - ) + (if this (format #t "WARNING: mem-usage called on object, probably not what was wanted for ~A~%" this)) + this) (defmethod calculate-total ((this memory-usage-block)) "Compute the total memory usage of everything in the block." - (let ((v0-0 0)) - (dotimes (v1-0 (-> this length)) - (+! v0-0 (-> this data v1-0 total)) - ) - v0-0 - ) - ) + (let ((v0-0 0)) (dotimes (v1-0 (-> this length)) (+! v0-0 (-> this data v1-0 total))) v0-0)) (defmethod reset! ((this memory-usage-block)) "Reset all memory stats to 0." @@ -65,333 +39,223 @@ (dotimes (v1-0 109) (set! (-> this data v1-0 used) 0) (set! (-> this data v1-0 total) 0) - (set! (-> this data v1-0 count) 0) - ) - this - ) + (set! (-> this data v1-0 count) 0)) + this) (defun mem-size ((arg0 basic) (arg1 symbol) (arg2 int)) "Compute the size of arg0. If arg1, then print the result. Arg2 is flags" - (let ((gp-0 (new 'stack 'memory-usage-block))) - (mem-usage arg0 gp-0 arg2) - (if arg1 - (inspect gp-0) - ) - (calculate-total gp-0) - ) - ) + (let ((gp-0 (new 'stack 'memory-usage-block))) (mem-usage arg0 gp-0 arg2) (if arg1 (inspect gp-0)) (calculate-total gp-0))) (defmethod compute-memory-usage ((this level) (arg0 object)) "Compute the memory usage of a level. arg0 will force a recalculation." - (if (zero? (-> this mem-usage-block)) - (set! (-> this mem-usage-block) (new 'debug 'memory-usage-block)) - ) + (if (zero? (-> this mem-usage-block)) (set! (-> this mem-usage-block) (new 'debug 'memory-usage-block))) (set! arg0 (or (zero? (-> this mem-usage-block length)) arg0)) (when arg0 (mem-usage this (reset! (-> this mem-usage-block)) 0) - (set! (-> this mem-usage) (calculate-total (-> this mem-usage-block))) - ) - (-> this mem-usage-block) - ) + (set! (-> this mem-usage) (calculate-total (-> this mem-usage-block)))) + (-> this mem-usage-block)) (defmethod mem-usage ((this process-tree) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of a process tree." (let ((v1-0 87)) (let* ((a0-1 *dead-pool-list*) - (a3-0 (car a0-1)) - ) + (a3-0 (car a0-1))) (while (not (null? a0-1)) (set! (-> arg0 data v1-0 name) (symbol->string (the-as symbol a3-0))) (+! v1-0 1) (set! a0-1 (cdr a0-1)) - (set! a3-0 (car a0-1)) - ) - ) - (set! (-> arg0 length) (max (-> arg0 length) v1-0)) - ) + (set! a3-0 (car a0-1)))) + (set! (-> arg0 length) (max (-> arg0 length) v1-0))) (set! (-> arg0 data 93 name) "*debug-dead-pool*") (set! *temp-mem-usage* arg0) (when (logtest? arg1 32) (let* ((s5-0 87) (s4-0 *dead-pool-list*) - (v1-4 (car s4-0)) - ) + (v1-4 (car s4-0))) (while (not (null? s4-0)) (let ((a0-5 (-> (the-as symbol v1-4) value))) (set! *global-search-count* s5-0) - (iterate-process-tree - (the-as process-tree a0-5) - (lambda ((arg0 basic)) - (let ((gp-0 *temp-mem-usage*) - (s5-0 *global-search-count*) - ) - (+! (-> gp-0 data s5-0 used) 1) - (+! (-> gp-0 data s5-0 total) (logand -16 (+ (asize-of arg0) 15))) - ) - #t - ) - *null-kernel-context* - ) - ) + (iterate-process-tree (the-as process-tree a0-5) + (lambda ((arg0 basic)) + (let ((gp-0 *temp-mem-usage*) + (s5-0 *global-search-count*)) + (+! (-> gp-0 data s5-0 used) 1) + (+! (-> gp-0 data s5-0 total) (logand -16 (+ (asize-of arg0) 15)))) + #t) + *null-kernel-context*)) (+! s5-0 1) (set! s4-0 (cdr s4-0)) - (set! v1-4 (car s4-0)) - ) - ) - ) - (iterate-process-tree - this - (lambda ((arg0 process)) - (let ((gp-0 *temp-mem-usage*)) - (let ((s4-0 (cond - ((= (-> arg0 pool) *8k-dead-pool*) - 88 - ) - ((= (-> arg0 pool) *16k-dead-pool*) - 89 - ) - ((= (-> arg0 pool) *nk-dead-pool*) - 90 - ) - ((= (-> arg0 pool) *target-dead-pool*) - 91 - ) - ((= (-> arg0 pool) *camera-dead-pool*) - 92 - ) - ((= (-> arg0 pool) *debug-dead-pool*) - 93 - ) - (else - 87 - ) - ) - ) - ) - (+! (-> gp-0 data s4-0 count) 1) - (+! (-> gp-0 data s4-0 total) (logand -16 (+ (asize-of arg0) 15))) - ) - (set! (-> gp-0 length) (max 95 (-> gp-0 length))) - (set! (-> gp-0 data 94 name) "process-active") - (+! (-> gp-0 data 94 count) 1) - (let ((v1-23 (asize-of arg0))) - (+! (-> gp-0 data 94 used) v1-23) - (+! (-> gp-0 data 94 total) (logand -16 (+ v1-23 15))) - ) - (set! (-> gp-0 length) (max 96 (-> gp-0 length))) - (set! (-> gp-0 data 95 name) "heap-total") - (+! (-> gp-0 data 95 count) 1) - (let ((v1-34 (+ (- -4 (the-as int arg0)) (the-as int (-> arg0 heap-cur))))) - (+! (-> gp-0 data 95 used) v1-34) - (+! (-> gp-0 data 95 total) (logand -16 (+ v1-34 15))) - ) - (set! (-> gp-0 length) (max 97 (-> gp-0 length))) - (set! (-> gp-0 data 96 name) "heap-process") - (+! (-> gp-0 data 96 count) 1) - (let ((v1-45 (- (-> arg0 type size) (-> arg0 type heap-base)))) - (+! (-> gp-0 data 96 used) v1-45) - (+! (-> gp-0 data 96 total) (logand -16 (+ v1-45 15))) - ) - (set! (-> gp-0 length) (max 98 (-> gp-0 length))) - (set! (-> gp-0 data 97 name) "heap-header") - (+! (-> gp-0 data 97 count) 1) - (let ((v1-55 (-> arg0 type heap-base))) - (+! (-> gp-0 data 97 used) v1-55) - (+! (-> gp-0 data 97 total) (logand -16 (+ v1-55 15))) - ) - (set! (-> gp-0 length) (max 99 (-> gp-0 length))) - (set! (-> gp-0 data 98 name) "heap-thread") - (+! (-> gp-0 data 98 count) 1) - (let ((v1-65 (asize-of (-> arg0 main-thread)))) - (+! (-> gp-0 data 98 used) v1-65) - (+! (-> gp-0 data 98 total) (logand -16 (+ v1-65 15))) - ) - (when (type-type? (-> arg0 type) process-drawable) - (when (nonzero? (-> (the-as process-drawable arg0) root)) - (set! (-> gp-0 length) (max 100 (-> gp-0 length))) - (set! (-> gp-0 data 99 name) "heap-root") - (+! (-> gp-0 data 99 count) 1) - (let ((v1-78 (asize-of (-> (the-as process-drawable arg0) root)))) - (+! (-> gp-0 data 99 used) v1-78) - (+! (-> gp-0 data 99 total) (logand -16 (+ v1-78 15))) - ) - (when (type-type? (-> (the-as process-drawable arg0) root type) collide-shape) - (set! (-> gp-0 length) (max 106 (-> gp-0 length))) - (set! (-> gp-0 data 105 name) "heap-collide-prim") - (+! (-> gp-0 data 105 count) 1) - (let ((v1-91 (asize-of (-> (the-as collide-shape (-> (the-as process-drawable arg0) root)) root-prim)))) - (+! (-> gp-0 data 105 used) v1-91) - (+! (-> gp-0 data 105 total) (logand -16 (+ v1-91 15))) - ) - ) - ) - (when (nonzero? (-> (the-as process-drawable arg0) node-list)) - (set! (-> gp-0 length) (max 103 (-> gp-0 length))) - (set! (-> gp-0 data 102 name) "heap-cspace") - (+! (-> gp-0 data 102 count) 1) - (let ((v1-103 (asize-of (-> (the-as process-drawable arg0) node-list)))) - (+! (-> gp-0 data 102 used) v1-103) - (+! (-> gp-0 data 102 total) (logand -16 (+ v1-103 15))) - ) - ) - (when (nonzero? (-> (the-as process-drawable arg0) draw)) - (set! (-> gp-0 length) (max 101 (-> gp-0 length))) - (set! (-> gp-0 data 100 name) "heap-draw-control") - (+! (-> gp-0 data 100 count) 1) - (let ((v1-115 (asize-of (-> (the-as process-drawable arg0) draw)))) - (+! (-> gp-0 data 100 used) v1-115) - (+! (-> gp-0 data 100 total) (logand -16 (+ v1-115 15))) - ) - (when (nonzero? (-> (the-as process-drawable arg0) draw skeleton)) - (set! (-> gp-0 length) (max 104 (-> gp-0 length))) - (set! (-> gp-0 data 103 name) "heap-bone") - (+! (-> gp-0 data 103 count) 1) - (let ((v1-129 (asize-of (-> (the-as process-drawable arg0) draw skeleton)))) - (+! (-> gp-0 data 103 used) v1-129) - (+! (-> gp-0 data 103 total) (logand -16 (+ v1-129 15))) - ) - ) - ) - (when (nonzero? (-> (the-as process-drawable arg0) skel)) - (set! (-> gp-0 length) (max 102 (-> gp-0 length))) - (set! (-> gp-0 data 101 name) "heap-joint-control") - (+! (-> gp-0 data 101 count) 1) - (let ((v1-141 (asize-of (-> (the-as process-drawable arg0) skel)))) - (+! (-> gp-0 data 101 used) v1-141) - (+! (-> gp-0 data 101 total) (logand -16 (+ v1-141 15))) - ) - ) - (when (nonzero? (-> (the-as process-drawable arg0) part)) - (set! (-> gp-0 length) (max 105 (-> gp-0 length))) - (set! (-> gp-0 data 104 name) "heap-part") - (+! (-> gp-0 data 104 count) 1) - (let ((v1-153 (asize-of (-> (the-as process-drawable arg0) part)))) - (+! (-> gp-0 data 104 used) v1-153) - (+! (-> gp-0 data 104 total) (logand -16 (+ v1-153 15))) - ) - ) - (when (nonzero? (-> (the-as process-drawable arg0) nav)) - (set! (-> gp-0 length) (max 107 (-> gp-0 length))) - (set! (-> gp-0 data 106 name) "heap-misc") - (+! (-> gp-0 data 106 count) 1) - (let ((v1-165 (asize-of (-> (the-as process-drawable arg0) nav)))) - (+! (-> gp-0 data 106 used) v1-165) - (+! (-> gp-0 data 106 total) (logand -16 (+ v1-165 15))) - ) - ) - (when (nonzero? (-> (the-as process-drawable arg0) path)) - (set! (-> gp-0 length) (max 107 (-> gp-0 length))) - (set! (-> gp-0 data 106 name) "heap-misc") - (+! (-> gp-0 data 106 count) 1) - (let ((v1-177 (asize-of (-> (the-as process-drawable arg0) path)))) - (+! (-> gp-0 data 106 used) v1-177) - (+! (-> gp-0 data 106 total) (logand -16 (+ v1-177 15))) - ) - ) - (when (nonzero? (-> (the-as process-drawable arg0) vol)) - (set! (-> gp-0 length) (max 107 (-> gp-0 length))) - (set! (-> gp-0 data 106 name) "heap-misc") - (+! (-> gp-0 data 106 count) 1) - (let ((v1-189 (asize-of (-> (the-as process-drawable arg0) vol)))) - (+! (-> gp-0 data 106 used) v1-189) - (+! (-> gp-0 data 106 total) (logand -16 (+ v1-189 15))) - ) - ) - ) - ) - #t - ) - *null-kernel-context* - ) - this - ) + (set! v1-4 (car s4-0))))) + (iterate-process-tree this + (lambda ((arg0 process)) + (let ((gp-0 *temp-mem-usage*)) + (let ((s4-0 (cond + ((= (-> arg0 pool) *8k-dead-pool*) 88) + ((= (-> arg0 pool) *16k-dead-pool*) 89) + ((= (-> arg0 pool) *nk-dead-pool*) 90) + ((= (-> arg0 pool) *target-dead-pool*) 91) + ((= (-> arg0 pool) *camera-dead-pool*) 92) + ((= (-> arg0 pool) *debug-dead-pool*) 93) + (else 87)))) + (+! (-> gp-0 data s4-0 count) 1) + (+! (-> gp-0 data s4-0 total) (logand -16 (+ (asize-of arg0) 15)))) + (set! (-> gp-0 length) (max 95 (-> gp-0 length))) + (set! (-> gp-0 data 94 name) "process-active") + (+! (-> gp-0 data 94 count) 1) + (let ((v1-23 (asize-of arg0))) (+! (-> gp-0 data 94 used) v1-23) (+! (-> gp-0 data 94 total) (logand -16 (+ v1-23 15)))) + (set! (-> gp-0 length) (max 96 (-> gp-0 length))) + (set! (-> gp-0 data 95 name) "heap-total") + (+! (-> gp-0 data 95 count) 1) + (let ((v1-34 (+ (- -4 (the-as int arg0)) (the-as int (-> arg0 heap-cur))))) + (+! (-> gp-0 data 95 used) v1-34) + (+! (-> gp-0 data 95 total) (logand -16 (+ v1-34 15)))) + (set! (-> gp-0 length) (max 97 (-> gp-0 length))) + (set! (-> gp-0 data 96 name) "heap-process") + (+! (-> gp-0 data 96 count) 1) + (let ((v1-45 (- (-> arg0 type size) (-> arg0 type heap-base)))) + (+! (-> gp-0 data 96 used) v1-45) + (+! (-> gp-0 data 96 total) (logand -16 (+ v1-45 15)))) + (set! (-> gp-0 length) (max 98 (-> gp-0 length))) + (set! (-> gp-0 data 97 name) "heap-header") + (+! (-> gp-0 data 97 count) 1) + (let ((v1-55 (-> arg0 type heap-base))) + (+! (-> gp-0 data 97 used) v1-55) + (+! (-> gp-0 data 97 total) (logand -16 (+ v1-55 15)))) + (set! (-> gp-0 length) (max 99 (-> gp-0 length))) + (set! (-> gp-0 data 98 name) "heap-thread") + (+! (-> gp-0 data 98 count) 1) + (let ((v1-65 (asize-of (-> arg0 main-thread)))) + (+! (-> gp-0 data 98 used) v1-65) + (+! (-> gp-0 data 98 total) (logand -16 (+ v1-65 15)))) + (when (type-type? (-> arg0 type) process-drawable) + (when (nonzero? (-> (the-as process-drawable arg0) root)) + (set! (-> gp-0 length) (max 100 (-> gp-0 length))) + (set! (-> gp-0 data 99 name) "heap-root") + (+! (-> gp-0 data 99 count) 1) + (let ((v1-78 (asize-of (-> (the-as process-drawable arg0) root)))) + (+! (-> gp-0 data 99 used) v1-78) + (+! (-> gp-0 data 99 total) (logand -16 (+ v1-78 15)))) + (when (type-type? (-> (the-as process-drawable arg0) root type) collide-shape) + (set! (-> gp-0 length) (max 106 (-> gp-0 length))) + (set! (-> gp-0 data 105 name) "heap-collide-prim") + (+! (-> gp-0 data 105 count) 1) + (let ((v1-91 (asize-of (-> (the-as collide-shape (-> (the-as process-drawable arg0) root)) root-prim)))) + (+! (-> gp-0 data 105 used) v1-91) + (+! (-> gp-0 data 105 total) (logand -16 (+ v1-91 15)))))) + (when (nonzero? (-> (the-as process-drawable arg0) node-list)) + (set! (-> gp-0 length) (max 103 (-> gp-0 length))) + (set! (-> gp-0 data 102 name) "heap-cspace") + (+! (-> gp-0 data 102 count) 1) + (let ((v1-103 (asize-of (-> (the-as process-drawable arg0) node-list)))) + (+! (-> gp-0 data 102 used) v1-103) + (+! (-> gp-0 data 102 total) (logand -16 (+ v1-103 15))))) + (when (nonzero? (-> (the-as process-drawable arg0) draw)) + (set! (-> gp-0 length) (max 101 (-> gp-0 length))) + (set! (-> gp-0 data 100 name) "heap-draw-control") + (+! (-> gp-0 data 100 count) 1) + (let ((v1-115 (asize-of (-> (the-as process-drawable arg0) draw)))) + (+! (-> gp-0 data 100 used) v1-115) + (+! (-> gp-0 data 100 total) (logand -16 (+ v1-115 15)))) + (when (nonzero? (-> (the-as process-drawable arg0) draw skeleton)) + (set! (-> gp-0 length) (max 104 (-> gp-0 length))) + (set! (-> gp-0 data 103 name) "heap-bone") + (+! (-> gp-0 data 103 count) 1) + (let ((v1-129 (asize-of (-> (the-as process-drawable arg0) draw skeleton)))) + (+! (-> gp-0 data 103 used) v1-129) + (+! (-> gp-0 data 103 total) (logand -16 (+ v1-129 15)))))) + (when (nonzero? (-> (the-as process-drawable arg0) skel)) + (set! (-> gp-0 length) (max 102 (-> gp-0 length))) + (set! (-> gp-0 data 101 name) "heap-joint-control") + (+! (-> gp-0 data 101 count) 1) + (let ((v1-141 (asize-of (-> (the-as process-drawable arg0) skel)))) + (+! (-> gp-0 data 101 used) v1-141) + (+! (-> gp-0 data 101 total) (logand -16 (+ v1-141 15))))) + (when (nonzero? (-> (the-as process-drawable arg0) part)) + (set! (-> gp-0 length) (max 105 (-> gp-0 length))) + (set! (-> gp-0 data 104 name) "heap-part") + (+! (-> gp-0 data 104 count) 1) + (let ((v1-153 (asize-of (-> (the-as process-drawable arg0) part)))) + (+! (-> gp-0 data 104 used) v1-153) + (+! (-> gp-0 data 104 total) (logand -16 (+ v1-153 15))))) + (when (nonzero? (-> (the-as process-drawable arg0) nav)) + (set! (-> gp-0 length) (max 107 (-> gp-0 length))) + (set! (-> gp-0 data 106 name) "heap-misc") + (+! (-> gp-0 data 106 count) 1) + (let ((v1-165 (asize-of (-> (the-as process-drawable arg0) nav)))) + (+! (-> gp-0 data 106 used) v1-165) + (+! (-> gp-0 data 106 total) (logand -16 (+ v1-165 15))))) + (when (nonzero? (-> (the-as process-drawable arg0) path)) + (set! (-> gp-0 length) (max 107 (-> gp-0 length))) + (set! (-> gp-0 data 106 name) "heap-misc") + (+! (-> gp-0 data 106 count) 1) + (let ((v1-177 (asize-of (-> (the-as process-drawable arg0) path)))) + (+! (-> gp-0 data 106 used) v1-177) + (+! (-> gp-0 data 106 total) (logand -16 (+ v1-177 15))))) + (when (nonzero? (-> (the-as process-drawable arg0) vol)) + (set! (-> gp-0 length) (max 107 (-> gp-0 length))) + (set! (-> gp-0 data 106 name) "heap-misc") + (+! (-> gp-0 data 106 count) 1) + (let ((v1-189 (asize-of (-> (the-as process-drawable arg0) vol)))) + (+! (-> gp-0 data 106 used) v1-189) + (+! (-> gp-0 data 106 total) (logand -16 (+ v1-189 15))))))) + #t) + *null-kernel-context*) + this) ;; the max dma ever (excluding debug) (define *max-dma* 0) (defmethod print-mem-usage ((this memory-usage-block) (arg0 level) (arg1 object)) "Print memory usage. Uses a foramt that will fit on screen." - ;; print header (same in normal and compact mode) (let ((s3-0 (&- (-> arg0 heap current) (the-as uint (-> arg0 heap base))))) - (let ((v1-2 (+ (-> this data 59 total) (-> this data 60 total)))) - (< #x10000 v1-2) - ) + (let ((v1-2 (+ (-> this data 59 total) (-> this data 60 total)))) (< #x10000 v1-2)) ;; note: this uses a value that's slightly smaller than the real size. ;; so this may show that you are using more memory you have, but this not true. (let ((s2-0 #xa1a333) - (s1-0 (* (dma-buffer-length (-> *display* frames (-> *display* last-screen) frame global-buf)) 16)) - ) + (s1-0 (* (dma-buffer-length (-> *display* frames (-> *display* last-screen) frame global-buf)) 16))) (set! *max-dma* (max s1-0 *max-dma*)) - ;; turns memory usage red if you're using too much. This uses the sum of memory-usage blocks, which as far ;; as I can tell, is not accurate (textures are negative, for example, but don't seem to be double counted (or even counted) elsewhere). - (if (< s2-0 (-> arg0 mem-usage)) - (format arg1 "~3L") - ) - + (if (< s2-0 (-> arg0 mem-usage)) (format arg1 "~3L")) ;; Format is: ;; --LevelName---ActualLevelHeapUseKB--of--SlightlyTooSmallHeapSizeKB---ActorHeapUseKB--of---ActorHeapSizeKb---DmaThisFrameKB/--MaxDmaKbEver - (format arg1 "~0K~10,'-S--~5,'-DK-of-~5,'-DK--~5,'-DK-of-~5,'-DK--" + (format arg1 + "~0K~10,'-S--~5,'-DK-of-~5,'-DK--~5,'-DK-of-~5,'-DK--" (-> arg0 name) (sar s3-0 10) (sar s2-0 10) (sar (memory-used *nk-dead-pool*) 10) - (sar (memory-total *nk-dead-pool*) 10) - ) - - (format arg1 "~5,'-DK/~5,'-DK--~%" (shr s1-0 10) (sar *max-dma* 10)) - ) - ) - - + (sar (memory-total *nk-dead-pool*) 10)) + (format arg1 "~5,'-DK/~5,'-DK--~%" (shr s1-0 10) (sar *max-dma* 10)))) (when *stats-memory-short* - (let ((s2-2 (if (cpad-hold? 1 l3) - #t - arg1 - ) - ) - ) + (let ((s2-2 (if (cpad-hold? 1 l3) #t arg1))) ;; print actor heap stats. - (format s2-2 "heap-~5,'-DK/~5,'-DK----~D---~D/~D~%" + (format s2-2 + "heap-~5,'-DK/~5,'-DK----~D---~D/~D~%" (sar (memory-used *nk-dead-pool*) 10) (sar (memory-total *nk-dead-pool*) 10) (compact-time *nk-dead-pool*) (-> *nk-dead-pool* compact-count) - (-> *nk-dead-pool* compact-count-targ) - ) - ) - ) - - + (-> *nk-dead-pool* compact-count-targ)))) (when (not *stats-memory-short*) ;; print the table - ;; compute debug dma usage. (set! (-> *dma-mem-usage* data 84 total) - (* (dma-buffer-length (-> *display* frames (-> *display* last-screen) frame debug-buf)) 16) - ) - + (* (dma-buffer-length (-> *display* frames (-> *display* last-screen) frame debug-buf)) 16)) ;; the left column is level heap, the right column is non-debug dma. - - (format arg1 " bsp ~192H~5DK ~280Hdebug~456H~5DK~%" + (format arg1 + " bsp ~192H~5DK ~280Hdebug~456H~5DK~%" (sar (+ (-> this data 56 total) (-> this data 57 total) (-> this data 58 total)) 10) - (sar (-> *dma-mem-usage* data 84 total) 10) - ) - - (format arg1 " bsp-leaf-vis-iop ~192H~5DK~%" - (sar (if (-> arg0 vis-info (-> arg0 vis-self-index)) - (the-as int (-> arg0 vis-info (-> arg0 vis-self-index) allocated-length)) - 0 - ) - 10 - ) - ) - + (sar (-> *dma-mem-usage* data 84 total) 10)) + (format arg1 + " bsp-leaf-vis-iop ~192H~5DK~%" + (sar (if (-> arg0 vis-info (-> arg0 vis-self-index)) (the-as int (-> arg0 vis-info (-> arg0 vis-self-index) allocated-length)) 0) + 10)) (format arg1 " bsp-leaf-vis-adj ~192H~5DK~%" (sar (+ (-> this data 59 total) (-> this data 60 total)) 10)) (format arg1 " level-code ~192H~5DK~%" (sar (-> this data 63 total) 10)) - - (format arg1 " tfrag ~192H~5DK ~280Htfragment~456H~5DK~%" + (format arg1 + " tfrag ~192H~5DK ~280Htfragment~456H~5DK~%" (sar (+ (-> this data 1 total) (-> this data 2 total) (-> this data 3 total) @@ -399,14 +263,11 @@ (-> this data 5 total) (-> this data 6 total) (-> this data 7 total) - (-> this data 8 total) - ) - 10 - ) - (sar (-> *dma-mem-usage* data 1 total) 10) - ) - - (format arg1 " tie-proto ~192H~5DK ~280Hsky~456H~5DK~%" + (-> this data 8 total)) + 10) + (sar (-> *dma-mem-usage* data 1 total) 10)) + (format arg1 + " tie-proto ~192H~5DK ~280Hsky~456H~5DK~%" (sar (+ (-> this data 9 total) (-> this data 10 total) (-> this data 11 total) @@ -414,25 +275,15 @@ (-> this data 13 total) (-> this data 14 total) (-> this data 16 total) - (-> this data 17 total) - ) - 10 - ) - (sar (-> *dma-mem-usage* data 85 total) 10) - ) - - (format arg1 " tie-instance ~192H~5DK ~280Htie-fragment~456H~5DK~%" - (sar (+ (-> this data 18 total) - (-> this data 20 total) - (-> this data 21 total) - (-> this data 22 total) - ) - 10 - ) - (sar (-> *dma-mem-usage* data 9 total) 10) - ) - - (format arg1 " shrub-proto ~192H~5DK ~280Htie-near~456H~5DK~%" + (-> this data 17 total)) + 10) + (sar (-> *dma-mem-usage* data 85 total) 10)) + (format arg1 + " tie-instance ~192H~5DK ~280Htie-fragment~456H~5DK~%" + (sar (+ (-> this data 18 total) (-> this data 20 total) (-> this data 21 total) (-> this data 22 total)) 10) + (sar (-> *dma-mem-usage* data 9 total) 10)) + (format arg1 + " shrub-proto ~192H~5DK ~280Htie-near~456H~5DK~%" (sar (+ (-> this data 25 total) (-> this data 26 total) (-> this data 27 total) @@ -441,32 +292,25 @@ (-> this data 30 total) (-> this data 31 total) (-> this data 32 total) - (-> this data 33 total) - ) - 10 - ) - (sar (-> *dma-mem-usage* data 15 total) 10) - ) - - (format arg1 " shrub-instance ~192H~5DK ~280Hshrubbery~456H~5DK~%" + (-> this data 33 total)) + 10) + (sar (-> *dma-mem-usage* data 15 total) 10)) + (format arg1 + " shrub-instance ~192H~5DK ~280Hshrubbery~456H~5DK~%" (sar (-> this data 34 total) 10) - (sar (-> *dma-mem-usage* data 27 total) 10) - ) - - (format arg1 " collision ~192H~5DK ~280Htie-generic~456H~5DK~%" + (sar (-> *dma-mem-usage* data 27 total) 10)) + (format arg1 + " collision ~192H~5DK ~280Htie-generic~456H~5DK~%" (sar (+ (-> this data 50 total) (-> this data 51 total) (-> this data 52 total) (-> this data 53 total) (-> this data 54 total) - (-> this data 55 total) - ) - 10 - ) - (sar (-> *dma-mem-usage* data 17 total) 10) - ) - - (format arg1 " pris-geo ~192H~5DK ~280Hpris-fragment~456H~5DK~%" + (-> this data 55 total)) + 10) + (sar (-> *dma-mem-usage* data 17 total) 10)) + (format arg1 + " pris-geo ~192H~5DK ~280Hpris-fragment~456H~5DK~%" (sar (+ (-> this data 35 total) (-> this data 36 total) (-> this data 37 total) @@ -482,33 +326,26 @@ (-> this data 75 total) (-> this data 78 total) (-> this data 77 total) - (-> this data 108 total) - ) - 10 - ) - (sar (-> *dma-mem-usage* data 35 total) 10) - ) - - (format arg1 " pris-anim ~192H~5DK ~280Hpris-generic~456H~5DK~%" + (-> this data 108 total)) + 10) + (sar (-> *dma-mem-usage* data 35 total) 10)) + (format arg1 + " pris-anim ~192H~5DK ~280Hpris-generic~456H~5DK~%" (sar (+ (-> this data 65 total) (-> this data 66 total) (-> this data 67 total) (-> this data 68 total) (-> this data 69 total) (-> this data 74 total) - (-> this data 76 total) - ) - 10 - ) - (sar (-> *dma-mem-usage* data 86 total) 10) - ) - - (format arg1 " textures ~192H~5DK ~280Htextures~456H~5DK~%" + (-> this data 76 total)) + 10) + (sar (-> *dma-mem-usage* data 86 total) 10)) + (format arg1 + " textures ~192H~5DK ~280Htextures~456H~5DK~%" (sar (-> this data 79 total) 10) - (sar (-> *dma-mem-usage* data 79 total) 10) - ) - - (format arg1 " entity ~192H~5DK~%" + (sar (-> *dma-mem-usage* data 79 total) 10)) + (format arg1 + " entity ~192H~5DK~%" (sar (+ (-> this data 64 total) (-> this data 43 total) (-> this data 44 total) @@ -516,29 +353,16 @@ (-> this data 49 total) (-> this data 48 total) (-> this data 46 total) - (-> this data 47 total) - ) - 10 - ) - ) - - (format arg1 " misc ~192H~5DK ~280Hsprite~456H~5DK~%" + (-> this data 47 total)) + 10)) + (format arg1 + " misc ~192H~5DK ~280Hsprite~456H~5DK~%" (sar (+ (-> this data 0 total) (-> this data 61 total) (-> this data 62 total) (-> this data 80 total) - (-> this data 81 total) - ) - 10 - ) - (sar (-> *dma-mem-usage* data 82 total) 10) - ) - - (format arg1 "~1K~0L") - ) - (none) - ) - - - - + (-> this data 81 total)) + 10) + (sar (-> *dma-mem-usage* data 82 total) 10)) + (format arg1 "~1K~0L")) + (none)) diff --git a/goal_src/jak1/engine/debug/menu.gc b/goal_src/jak1/engine/debug/menu.gc index 82a797a282..ea1f137223 100644 --- a/goal_src/jak1/engine/debug/menu.gc +++ b/goal_src/jak1/engine/debug/menu.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/gfx/font.gc") -;; name: menu.gc -;; name in dgo: menu -;; dgos: GAME, ENGINE - ;; This file contains the UI and rendering for the debug menu, but not the actual menu layout and callbacks. ;; The "context" is the entire multi-level debug menu. There's a separate context for the main debug and the "popup" menu. @@ -16,6 +11,7 @@ ;; An item is a line in the menu. It can be a flag, function, or variable. (declare-type debug-menu basic) + (declare-type debug-menu-item basic) ;; DECOMP BEGINS @@ -27,25 +23,21 @@ ;; context, menu, and item ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; There is one for the normal menu, and one for the "popup" one that appears when you press L3/R3 ;; This stores a stack of open menus in sel-menu. ;; The 0th index is the selection in the root-menu. (deftype debug-menu-context (basic) - ((is-active symbol) ;; should we draw? - (sel-length int32) ;; depth of open menus - (sel-menu debug-menu 8) ;; at each level, what is selected? - (root-menu debug-menu) ;; the top level menu - (joypad-func (function basic none)) ;; if not, #f, callback for getting joystick inputs - (joypad-item basic) ;; object passed as arg to joypad-func - (font font-context) ;; font rendering settings - (is-hidden symbol) ;; set to #t to temporarily hide. + ((is-active symbol) ;; should we draw? + (sel-length int32) ;; depth of open menus + (sel-menu debug-menu 8) ;; at each level, what is selected? + (root-menu debug-menu) ;; the top level menu + (joypad-func (function basic none)) ;; if not, #f, callback for getting joystick inputs + (joypad-item basic) ;; object passed as arg to joypad-func + (font font-context) ;; font rendering settings + (is-hidden symbol) ;; set to #t to temporarily hide. ) (:methods - (new (symbol type) _type_) - ) - ) - + (new (symbol type) _type_))) (defmethod new debug-menu-context ((allocation symbol) (type-to-make type)) "Create a new debug-menu-context" @@ -57,12 +49,8 @@ (set! (-> gp-0 joypad-func) #f) (set! (-> gp-0 joypad-item) #f) (set! (-> gp-0 font) - (new 'debug 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning pc-hack)) - ) - gp-0 - ) - ) - + (new 'debug 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning pc-hack))) + gp-0)) ;; Parent type for entrees in the debug-menu tree. ;; This is used for both entries and menus. @@ -71,65 +59,46 @@ ;; Updating every item on every frame would be slow, so you can set a nonzero value in refresh-delay ;; to only run the refresh every refresh-delay frames. (deftype debug-menu-node (basic) - ((name string) - (parent debug-menu) - (refresh-delay int32) - (refresh-ctr int32) - ) - ) - + ((name string) + (parent debug-menu) + (refresh-delay int32) + (refresh-ctr int32))) (defmethod print ((this debug-menu-node)) (format #t "#<~A ~A @ #x~X>" (-> this type) (-> this name) this) - this - ) + this) ;; Parent type for a menu (list of things) (deftype debug-menu (debug-menu-node) - ((context debug-menu-context) - (selected-item debug-menu-item) - (pix-width int32) - (pix-height int32) - (items pair) - ) + ((context debug-menu-context) + (selected-item debug-menu-item) + (pix-width int32) + (pix-height int32) + (items pair)) (:methods - (new (symbol type debug-menu-context string) _type_) - ) - ) - + (new (symbol type debug-menu-context string) _type_))) (defmethod new debug-menu ((allocation symbol) (type-to-make type) (arg0 debug-menu-context) (name string)) "Create a new debug-menu" - (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> v0-0 context) arg0) (set! (-> v0-0 name) name) (set! (-> v0-0 parent) #f) (set! (-> v0-0 selected-item) #f) (set! (-> v0-0 items) '()) - v0-0 - ) - ) + v0-0)) ;; Parent type for an item (an individual, selectable entry within a menu) (deftype debug-menu-item (debug-menu-node) - ((id int32) - ) - ) - + ((id int32))) (deftype debug-menu-item-submenu (debug-menu-item) - ((submenu debug-menu) - ) + ((submenu debug-menu)) (:methods - (new (symbol type string debug-menu) _type_) - ) - ) - + (new (symbol type string debug-menu) _type_))) (defmethod new debug-menu-item-submenu ((allocation symbol) (type-to-make type) (arg0 string) (menu debug-menu)) "Create an item that opens the given menu." - (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> v0-0 name) arg0) (set! (-> v0-0 parent) #f) @@ -139,9 +108,7 @@ ;; in this case, the submenu's parent is set to the item, not a menu. ;; it's possible that the type of parent here is just debug-menu-node, but this value is never used. (set! (-> v0-0 submenu parent) (the-as debug-menu v0-0)) - v0-0 - ) - ) + v0-0)) ;;;;;;;;;;;;;;;;;;;;;;;; ;; Items @@ -151,19 +118,15 @@ (activate 1) (deactivate 2) (update 3) - (press 4) - ) + (press 4)) ;; An item that calls a function when you select it. (deftype debug-menu-item-function (debug-menu-item) - ((activate-func (function object object)) - (hilite-timer int8) ;; how much longer to stay highlighted for. + ((activate-func (function object object)) + (hilite-timer int8) ;; how much longer to stay highlighted for. ) (:methods - (new (symbol type string object (function object object)) _type_) - ) - ) - + (new (symbol type string object (function object object)) _type_))) (defmethod new debug-menu-item-function ((allocation symbol) (type-to-make type) (arg0 string) (arg1 object) (arg2 (function object object))) "Create an item for a function." @@ -175,27 +138,16 @@ (set! (-> v0-0 id) (the-as int arg1)) (set! (-> v0-0 activate-func) arg2) (set! (-> v0-0 hilite-timer) 0) - v0-0 - ) - ) + v0-0)) ;; An item with on/off state. (deftype debug-menu-item-flag (debug-menu-item) - ((activate-func (function object debug-menu-msg object)) - (is-on object) - ) + ((activate-func (function object debug-menu-msg object)) + (is-on object)) (:methods - (new (symbol type string object (function object debug-menu-msg object)) _type_) - ) - ) - + (new (symbol type string object (function object debug-menu-msg object)) _type_))) -(defmethod new debug-menu-item-flag ((allocation symbol) - (type-to-make type) - (arg0 string) - (arg1 object) - (arg2 (function object debug-menu-msg object)) - ) +(defmethod new debug-menu-item-flag ((allocation symbol) (type-to-make type) (arg0 string) (arg1 object) (arg2 (function object debug-menu-msg object))) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> v0-0 name) arg0) (set! (-> v0-0 parent) #f) @@ -204,100 +156,76 @@ (set! (-> v0-0 id) (the-as int arg1)) (set! (-> v0-0 activate-func) arg2) (set! (-> v0-0 is-on) (the-as object #f)) - v0-0 - ) - ) + v0-0)) (deftype debug-menu-item-var (debug-menu-item) - ((display-str string) - (grabbed-joypad-p symbol) - (float-p symbol) - (range-p symbol) - (show-len int32) - (inc-delay int32) - (inc-delay-ctr int32) - (step-delay-ctr int32) - (inc-dir int32) - (fval float) - (fundo-val float) - (frange-min float) - (frange-max float) - (fstart-inc float) - (fstep float) - (fprecision int32) - (factivate-func (function int debug-menu-msg float float float)) - (ival int32 :overlay-at fval) - (iundo-val int32 :overlay-at fundo-val) - (irange-min int32 :overlay-at frange-min) - (irange-max int32 :overlay-at frange-max) - (istart-inc int32 :overlay-at fstart-inc) - (istep int32 :overlay-at fstep) - (ihex-p symbol) - (iactivate-func (function int debug-menu-msg int int int) :overlay-at factivate-func) - (ifloat-p symbol) - ) + ((display-str string) + (grabbed-joypad-p symbol) + (float-p symbol) + (range-p symbol) + (show-len int32) + (inc-delay int32) + (inc-delay-ctr int32) + (step-delay-ctr int32) + (inc-dir int32) + (fval float) + (fundo-val float) + (frange-min float) + (frange-max float) + (fstart-inc float) + (fstep float) + (fprecision int32) + (factivate-func (function int debug-menu-msg float float float)) + (ival int32 :overlay-at fval) + (iundo-val int32 :overlay-at fundo-val) + (irange-min int32 :overlay-at frange-min) + (irange-max int32 :overlay-at frange-max) + (istart-inc int32 :overlay-at fstart-inc) + (istep int32 :overlay-at fstep) + (ihex-p symbol) + (iactivate-func (function int debug-menu-msg int int int) :overlay-at factivate-func) + (ifloat-p symbol)) (:methods - (new (symbol type string int int) _type_) - ) - ) + (new (symbol type string int int) _type_))) (defenum debug-menu-dest :type int32 (root 1) (open-menus 2) (current-selection 3) - (activation 0) - ) + (activation 0)) +(define-extern debug-menu-context-send-msg + (function debug-menu-context debug-menu-msg debug-menu-dest debug-menu-context)) -(define-extern debug-menu-context-send-msg (function debug-menu-context debug-menu-msg debug-menu-dest debug-menu-context)) (define-extern debug-menu-item-send-msg (function debug-menu-item debug-menu-msg debug-menu-item)) - - ;;;;;;;;;;;;;;;;;;;;;;;; ;; Variable Menu Setup ;;;;;;;;;;;;;;;;;;;;;;;; - (defun debug-menu-item-var-update-display-str ((arg0 debug-menu-item-var)) "Update display-str to the current value of the variable" (cond - ((-> arg0 float-p) - (format (clear (-> arg0 display-str)) "~f" (-> arg0 fval)) - ) - ((-> arg0 ihex-p) - (format (clear (-> arg0 display-str)) "x~X" (-> arg0 fval)) - ) + ((-> arg0 float-p) (format (clear (-> arg0 display-str)) "~f" (-> arg0 fval))) + ((-> arg0 ihex-p) (format (clear (-> arg0 display-str)) "x~X" (-> arg0 fval))) ((-> arg0 ifloat-p) (cond ((and (< (the-as int (-> arg0 fval)) 0) (< -100 (the-as int (-> arg0 fval)))) - (let ((v1-8 (abs (the-as int (-> arg0 fval))))) - (format (clear (-> arg0 display-str)) "-0.~1d" (/ (mod v1-8 100) 10)) - ) - ) + (let ((v1-8 (abs (the-as int (-> arg0 fval))))) (format (clear (-> arg0 display-str)) "-0.~1d" (/ (mod v1-8 100) 10)))) (else - (let ((v1-12 (abs (the-as int (-> arg0 fval))))) - (format (clear (-> arg0 display-str)) "~2d.~1d" (/ (the-as int (-> arg0 fval)) 100) (/ (mod v1-12 100) 10)) - ) - ) - ) - ) - (else - (format (clear (-> arg0 display-str)) "~D" (-> arg0 fval)) - ) - ) - arg0 - ) + (let ((v1-12 (abs (the-as int (-> arg0 fval))))) + (format (clear (-> arg0 display-str)) "~2d.~1d" (/ (the-as int (-> arg0 fval)) 100) (/ (mod v1-12 100) 10)))))) + (else (format (clear (-> arg0 display-str)) "~D" (-> arg0 fval)))) + arg0) (defun debug-menu-item-var-make-int ((item debug-menu-item-var) - (callback (function int debug-menu-msg int int int)) - (inc int) - (has-range symbol) - (range-min int) - (range-max int) - (hex symbol) - ) + (callback (function int debug-menu-msg int int int)) + (inc int) + (has-range symbol) + (range-min int) + (range-max int) + (hex symbol)) "Set up the given item as an integer variable" (set! (-> item float-p) #f) (set! (-> item range-p) has-range) @@ -308,30 +236,20 @@ (set! (-> item ihex-p) hex) (set! (-> item iactivate-func) callback) (cond - (has-range - (set! (-> item fval) (the-as float range-min)) - ) - (else - (set! (-> item fval) (the-as float 0)) - 0 - ) - ) + (has-range (set! (-> item fval) (the-as float range-min))) + (else (set! (-> item fval) (the-as float 0)) 0)) ;; initialize with the callback. - (if callback - (set! (-> item ival) (callback (-> item id) (debug-menu-msg update) (-> item ival) (-> item ival))) - ) + (if callback (set! (-> item ival) (callback (-> item id) (debug-menu-msg update) (-> item ival) (-> item ival)))) (debug-menu-item-var-update-display-str item) - item - ) + item) (defun debug-menu-item-var-make-float ((item debug-menu-item-var) - (callback (function int debug-menu-msg float float float)) - (inc float) - (has-range symbol) - (range-min float) - (range-max float) - (precision int) - ) + (callback (function int debug-menu-msg float float float)) + (inc float) + (has-range symbol) + (range-min float) + (range-max float) + (precision int)) "Set up the given item as a float variable" (set! (-> item float-p) #t) (set! (-> item range-p) has-range) @@ -341,20 +259,12 @@ (set! (-> item fstep) inc) (set! (-> item fprecision) precision) (set! (-> item factivate-func) callback) - (if has-range - (set! (-> item fval) range-min) - (set! (-> item fval) 0.0) - ) - + (if has-range (set! (-> item fval) range-min) (set! (-> item fval) 0.0)) ;; note: the return value of the callback is treated as an integer and int->float converted. This is a bug in the original code. (if callback - (set! (-> item fval) - (the float (callback (-> item id) (debug-menu-msg update) (-> item fval) (-> item fval))) - ) - ) + (set! (-> item fval) (the float (callback (-> item id) (debug-menu-msg update) (-> item fval) (-> item fval))))) (debug-menu-item-var-update-display-str item) - item - ) + item) (defmethod new debug-menu-item-var ((allocation symbol) (type-to-make type) (name string) (id int) (max-width int)) "Create a new item for modifying a variable. Will default to int." @@ -365,22 +275,13 @@ (set! (-> gp-0 refresh-delay) (#if PC_PORT 1 31)) (set! (-> gp-0 refresh-ctr) (-> gp-0 refresh-delay)) (set! (-> gp-0 id) id) - (set! max-chars - (if (< 3 max-chars) - max-chars - 3 - ) - ) - (set! (-> gp-0 show-len) max-chars) - ) + (set! max-chars (if (< 3 max-chars) max-chars 3)) + (set! (-> gp-0 show-len) max-chars)) (set! (-> gp-0 grabbed-joypad-p) #f) (set! (-> gp-0 ifloat-p) #f) (set! (-> gp-0 display-str) (new 'debug 'string 64 (the-as string #f))) (debug-menu-item-var-make-int gp-0 (the-as (function int debug-menu-msg int int int) #f) 1 #t 0 0 #f) - gp-0 - ) - ) - + gp-0)) ;;;;;;;;;;;;;;;;;;;;;;;; ;; joypad grabbing @@ -389,24 +290,14 @@ (defun debug-menu-context-grab-joypad ((ctxt debug-menu-context) (callback-arg basic) (callback-func (function basic none))) "Set up this context to be controlled from a joypad. If we are already, return #f, otherwise return #t" (cond - ((-> ctxt joypad-func) - #f - ) - (else - (set! (-> ctxt joypad-func) callback-func) - (set! (-> ctxt joypad-item) callback-arg) - #t - ) - ) - ) + ((-> ctxt joypad-func) #f) + (else (set! (-> ctxt joypad-func) callback-func) (set! (-> ctxt joypad-item) callback-arg) #t))) (defun debug-menu-context-release-joypad ((ctxt debug-menu-context)) "Remove joypad control from this context" (set! (-> ctxt joypad-func) #f) (set! (-> ctxt joypad-item) #f) - #f - ) - + #f) ;;;;;;;;;;;;;;;;;;;;;;;; ;; menu building @@ -416,22 +307,14 @@ "Determine the width, in screen units" 0 (cond - ((= (-> arg0 type) debug-menu-item-submenu) - (+ (the int (get-string-length (-> arg0 name) (-> arg1 context font))) 16) - ) + ((= (-> arg0 type) debug-menu-item-submenu) (+ (the int (get-string-length (-> arg0 name) (-> arg1 context font))) 16)) ((= (-> arg0 type) debug-menu-item-var) - (the int (get-string-length (-> (the-as debug-menu-item-var arg0) display-str) (-> arg1 context font))) - ) - (else - (+ (the int (get-string-length (-> arg0 name) (-> arg1 context font))) 6) - ) - ) - ) + (the int (get-string-length (-> (the-as debug-menu-item-var arg0) display-str) (-> arg1 context font)))) + (else (+ (the int (get-string-length (-> arg0 name) (-> arg1 context font))) 6)))) (defun debug-menu-context-default-selection ((ctxt debug-menu-context) (keep-current symbol)) "Set the menu to a default selection. If keep-current-selection is set to #t, this will only change the selection if nothing is selected yet." - ;; sel-length = 0 means nothing is selected (when (or (zero? (-> ctxt sel-length)) (not keep-current)) (let ((menu (-> ctxt root-menu))) @@ -439,126 +322,80 @@ (when (and menu (not (null? (-> menu items)))) (let ((currently-active (-> ctxt is-active))) ;; if we're active, deactivate it - (if currently-active - (debug-menu-context-send-msg ctxt (debug-menu-msg deactivate) (debug-menu-dest activation)) - ) + (if currently-active (debug-menu-context-send-msg ctxt (debug-menu-msg deactivate) (debug-menu-dest activation))) ;; reset the selection stack down to a single thing, just the root menu. (set! (-> ctxt sel-length) 1) (set! (-> ctxt sel-menu 0) menu) ;; select the first thing within the root menu (set! (-> menu selected-item) (the-as debug-menu-item (car (-> menu items)))) ;; if we were active, activate again. - (if currently-active - (debug-menu-context-send-msg ctxt (debug-menu-msg activate) (debug-menu-dest activation)) - ) - ) - ) - ) - ) - ctxt - ) + (if currently-active (debug-menu-context-send-msg ctxt (debug-menu-msg activate) (debug-menu-dest activation))))))) + ctxt) (defun debug-menu-rebuild ((menu debug-menu)) "Set the width and height of the background. If needed, completely reset the menu." (let ((max-width 0) - (entry-count 0) - ) + (entry-count 0)) ;; loop over entries (let* ((iter (-> menu items)) - (current-item (car iter)) - ) + (current-item (car iter))) (while (not (null? iter)) (+! entry-count 1) ;; link to parent (set! (-> (the-as debug-menu-item current-item) parent) menu) (set! max-width (max max-width (debug-menu-item-get-max-width (the-as debug-menu-item current-item) menu))) (set! iter (cdr iter)) - (set! current-item (car iter)) - ) - ) + (set! current-item (car iter)))) (set! (-> menu pix-width) (+ max-width 18)) - (set! (-> menu pix-height) (+ (* entry-count 8) 6)) - ) + (set! (-> menu pix-height) (+ (* entry-count 8) 6))) (let ((a0-2 (-> menu context))) ;; will only reset to default if nothing is selected. - (debug-menu-context-default-selection a0-2 #t) - ) - menu - ) + (debug-menu-context-default-selection a0-2 #t)) + menu) (defun debug-menu-context-set-root-menu ((context debug-menu-context) (menu debug-menu)) "Set the root menu and reset everything." - ;; deactivate, if we are active (let ((active (-> context is-active))) - (if active - (debug-menu-context-send-msg context (debug-menu-msg deactivate) (debug-menu-dest activation))) + (if active (debug-menu-context-send-msg context (debug-menu-msg deactivate) (debug-menu-dest activation))) ;; the actual set (set! (-> context root-menu) menu) ;; reset (debug-menu-context-default-selection context #f) ;; activate if needed - (if active - (debug-menu-context-send-msg context (debug-menu-msg activate) (debug-menu-dest activation)) - ) - ) - context - ) + (if active (debug-menu-context-send-msg context (debug-menu-msg activate) (debug-menu-dest activation)))) + context) (defun debug-menu-append-item ((menu debug-menu) (item debug-menu-node)) "Add an entry to the debug menu." (let* ((context (-> menu context)) - (was-active (-> context is-active)) - ) - (if was-active - (debug-menu-context-send-msg context (debug-menu-msg deactivate) (debug-menu-dest activation)) - ) + (was-active (-> context is-active))) + (if was-active (debug-menu-context-send-msg context (debug-menu-msg deactivate) (debug-menu-dest activation))) (set! (-> item parent) menu) (set! (-> menu items) (the-as pair (append! (-> menu items) (dcons item '())))) ;; was normal cons (debug-menu-rebuild menu) - (if was-active - (debug-menu-context-send-msg context (debug-menu-msg activate) (debug-menu-dest activation)) - ) - ) - item - ) + (if was-active (debug-menu-context-send-msg context (debug-menu-msg activate) (debug-menu-dest activation)))) + item) (defun debug-menu-remove-all-items ((arg0 debug-menu)) "Remove all the items from a menu" (let* ((gp-0 (-> arg0 context)) - (s4-0 (-> gp-0 is-active)) - ) - (if s4-0 - (debug-menu-context-send-msg gp-0 (debug-menu-msg deactivate) (debug-menu-dest activation)) - ) + (s4-0 (-> gp-0 is-active))) + (if s4-0 (debug-menu-context-send-msg gp-0 (debug-menu-msg deactivate) (debug-menu-dest activation))) (set! (-> arg0 items) '()) (set! (-> arg0 selected-item) #f) (debug-menu-rebuild arg0) - (if s4-0 - (debug-menu-context-send-msg gp-0 (debug-menu-msg activate) (debug-menu-dest activation)) - ) - ) - arg0 - ) - + (if s4-0 (debug-menu-context-send-msg gp-0 (debug-menu-msg activate) (debug-menu-dest activation)))) + arg0) (defun debug-menu-func-decode ((arg0 object)) "Get a function. The input can be a symbol or a function. Otherwise it will give you the nothing function." (let ((v1-1 (rtype-of arg0))) - (the-as function (cond - ((or (= v1-1 symbol) (= v1-1 type)) - (the-as symbol (-> (the-as symbol arg0) value)) - ) - ((= v1-1 function) - (the-as symbol arg0) - ) - (else - (the-as symbol nothing) - ) - ) - ) - ) - ) + (the-as function + (cond + ((or (= v1-1 symbol) (= v1-1 type)) (the-as symbol (-> (the-as symbol arg0) value))) + ((= v1-1 function) (the-as symbol arg0)) + (else (the-as symbol nothing)))))) (defun-recursive debug-menu-make-from-template debug-menu-node ((arg0 debug-menu-context) (arg1 pair)) "Make a debug menu from static layout data. The keys are: @@ -570,161 +407,87 @@ (local-vars (s5-0 basic) (sv-16 object) (sv-32 int) (sv-48 float) (sv-64 float) (sv-80 float) (sv-96 float)) (when (or (not arg1) (null? arg1)) (set! s5-0 #f) - (goto cfg-41) - ) + (goto cfg-41)) (let ((s4-0 (car arg1)) - (s5-1 (the-as string (car (cdr arg1)))) - ) + (s5-1 (the-as string (car (cdr arg1))))) (cond ((= s4-0 'menu) (let ((s4-1 (new 'debug 'debug-menu arg0 s5-1))) (set! s5-0 (new 'debug 'debug-menu-item-submenu s5-1 s4-1)) (let* ((gp-1 (cdr (cdr arg1))) - (a1-3 (car gp-1)) - ) + (a1-3 (car gp-1))) (while (not (null? gp-1)) - (let ((a1-4 (debug-menu-make-from-template arg0 (the-as pair a1-3)))) - (if a1-4 - (debug-menu-append-item s4-1 a1-4) - ) - ) + (let ((a1-4 (debug-menu-make-from-template arg0 (the-as pair a1-3)))) (if a1-4 (debug-menu-append-item s4-1 a1-4))) (set! gp-1 (cdr gp-1)) - (set! a1-3 (car gp-1)) - ) - ) - ) - ) + (set! a1-3 (car gp-1)))))) ((= s4-0 'main-menu) (set! s5-0 (new 'debug 'debug-menu arg0 s5-1)) (let* ((gp-2 (cdr (cdr arg1))) - (a1-6 (car gp-2)) - ) + (a1-6 (car gp-2))) (while (not (null? gp-2)) (let ((a1-7 (debug-menu-make-from-template arg0 (the-as pair a1-6)))) - (if a1-7 - (debug-menu-append-item (the-as debug-menu s5-0) a1-7) - ) - ) + (if a1-7 (debug-menu-append-item (the-as debug-menu s5-0) a1-7))) (set! gp-2 (cdr gp-2)) - (set! a1-6 (car gp-2)) - ) - ) - (debug-menu-context-set-root-menu arg0 (the-as debug-menu s5-0)) - ) + (set! a1-6 (car gp-2)))) + (debug-menu-context-set-root-menu arg0 (the-as debug-menu s5-0))) (else - (set! s5-0 - (cond - ((= s4-0 'flag) - (new - 'debug - 'debug-menu-item-flag - s5-1 - (car (cdr (cdr arg1))) - (the-as (function object debug-menu-msg object) (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))) - ) - ) - ((or (= s4-0 0) (= s4-0 'function)) - (new - 'debug - 'debug-menu-item-function - s5-1 - (car (cdr (cdr arg1))) - (the-as (function object object) (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))) - ) - ) - ((= s4-0 'var) - (new - 'debug - 'debug-menu-item-var - s5-1 - (the-as int (car (cdr (cdr arg1)))) - (the-as int (car (cdr (cdr (cdr arg1))))) - ) - ) - ((or (= s4-0 'int-var) (= s4-0 'int-var-gat1) (= s4-0 'hex-var)) - (set! s5-0 - (new 'debug 'debug-menu-item-var s5-1 (the-as int (car (cdr (cdr arg1)))) (the-as int (ref arg1 4))) - ) - (let ((s3-4 debug-menu-item-var-make-int) - (s2-3 (the-as debug-menu-item-var s5-0)) - (s1-3 (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))) - (s0-1 (/ (the-as int (ref arg1 5)) 8)) - ) - (set! sv-16 (ref arg1 6)) - (set! sv-32 (/ (the-as int (ref arg1 7)) 8)) - (let ((t1-0 (/ (the-as int (ref arg1 8)) 8)) - (t2-0 (= s4-0 'hex-var)) - ) - (s3-4 s2-3 (the-as (function int debug-menu-msg int int int) s1-3) s0-1 (the-as symbol sv-16) sv-32 t1-0 t2-0) - ) - ) - ;; changed... i have no idea what they were trying to do here - (set! (-> (the-as debug-menu-item-var s5-0) ifloat-p) (= s4-0 'int-var-gat1));;#t) - s5-0 - ) - ((= s4-0 'float-var) - (set! s5-0 - (new 'debug 'debug-menu-item-var s5-1 (the-as int (car (cdr (cdr arg1)))) (the-as int (ref arg1 4))) - ) - (let ((s4-5 debug-menu-item-var-make-float) - (s3-6 (the-as debug-menu-item-var s5-0)) - (s2-5 (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))) - (s1-5 (the float (/ (the-as int (ref arg1 5)) 8))) - (s0-2 (ref arg1 6)) - ) - (set! sv-48 (the float (/ (the-as int (ref arg1 7)) 8))) - (set! sv-64 (the float (/ (the-as int (ref arg1 8)) 8))) - (let ((t2-1 (/ (the-as int (ref arg1 9)) 8))) - (s4-5 - s3-6 - (the-as (function int debug-menu-msg float float float) s2-5) - s1-5 - (the-as symbol s0-2) - sv-48 - sv-64 - t2-1 - ) - ) - ) - s5-0 - ) - ((= s4-0 'float-fixed-var) - (set! s5-0 - (new 'debug 'debug-menu-item-var s5-1 (the-as int (car (cdr (cdr arg1)))) (the-as int (ref arg1 4))) - ) - (let ((s4-7 debug-menu-item-var-make-float) - (s3-8 (the-as debug-menu-item-var s5-0)) - (s2-7 (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))) - (s1-7 (* 0.001 (the float (/ (the-as int (ref arg1 5)) 8)))) - (s0-3 (ref arg1 6)) - ) - (set! sv-80 (* 0.001 (the float (/ (the-as int (ref arg1 7)) 8)))) - (set! sv-96 (* 0.001 (the float (/ (the-as int (ref arg1 8)) 8)))) - (let ((t2-2 (/ (the-as int (ref arg1 9)) 8))) - (s4-7 - s3-8 - (the-as (function int debug-menu-msg float float float) s2-7) - s1-7 - (the-as symbol s0-3) - sv-80 - sv-96 - t2-2 - ) - ) - ) - s5-0 - ) - (else - #f - ) - ) - ) - ) - ) - ) + (set! s5-0 + (cond + ((= s4-0 'flag) + (new 'debug + 'debug-menu-item-flag + s5-1 + (car (cdr (cdr arg1))) + (the-as (function object debug-menu-msg object) (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))))) + ((or (= s4-0 0) (= s4-0 'function)) + (new 'debug + 'debug-menu-item-function + s5-1 + (car (cdr (cdr arg1))) + (the-as (function object object) (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))))) + ((= s4-0 'var) + (new 'debug 'debug-menu-item-var s5-1 (the-as int (car (cdr (cdr arg1)))) (the-as int (car (cdr (cdr (cdr arg1))))))) + ((or (= s4-0 'int-var) (= s4-0 'int-var-gat1) (= s4-0 'hex-var)) + (set! s5-0 (new 'debug 'debug-menu-item-var s5-1 (the-as int (car (cdr (cdr arg1)))) (the-as int (ref arg1 4)))) + (let ((s3-4 debug-menu-item-var-make-int) + (s2-3 (the-as debug-menu-item-var s5-0)) + (s1-3 (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))) + (s0-1 (/ (the-as int (ref arg1 5)) 8))) + (set! sv-16 (ref arg1 6)) + (set! sv-32 (/ (the-as int (ref arg1 7)) 8)) + (let ((t1-0 (/ (the-as int (ref arg1 8)) 8)) + (t2-0 (= s4-0 'hex-var))) + (s3-4 s2-3 (the-as (function int debug-menu-msg int int int) s1-3) s0-1 (the-as symbol sv-16) sv-32 t1-0 t2-0))) + ;; changed... i have no idea what they were trying to do here + (set! (-> (the-as debug-menu-item-var s5-0) ifloat-p) (= s4-0 'int-var-gat1)) ;;#t) + s5-0) + ((= s4-0 'float-var) + (set! s5-0 (new 'debug 'debug-menu-item-var s5-1 (the-as int (car (cdr (cdr arg1)))) (the-as int (ref arg1 4)))) + (let ((s4-5 debug-menu-item-var-make-float) + (s3-6 (the-as debug-menu-item-var s5-0)) + (s2-5 (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))) + (s1-5 (the float (/ (the-as int (ref arg1 5)) 8))) + (s0-2 (ref arg1 6))) + (set! sv-48 (the float (/ (the-as int (ref arg1 7)) 8))) + (set! sv-64 (the float (/ (the-as int (ref arg1 8)) 8))) + (let ((t2-1 (/ (the-as int (ref arg1 9)) 8))) + (s4-5 s3-6 (the-as (function int debug-menu-msg float float float) s2-5) s1-5 (the-as symbol s0-2) sv-48 sv-64 t2-1))) + s5-0) + ((= s4-0 'float-fixed-var) + (set! s5-0 (new 'debug 'debug-menu-item-var s5-1 (the-as int (car (cdr (cdr arg1)))) (the-as int (ref arg1 4)))) + (let ((s4-7 debug-menu-item-var-make-float) + (s3-8 (the-as debug-menu-item-var s5-0)) + (s2-7 (debug-menu-func-decode (car (cdr (cdr (cdr arg1)))))) + (s1-7 (* 0.001 (the float (/ (the-as int (ref arg1 5)) 8)))) + (s0-3 (ref arg1 6))) + (set! sv-80 (* 0.001 (the float (/ (the-as int (ref arg1 7)) 8)))) + (set! sv-96 (* 0.001 (the float (/ (the-as int (ref arg1 8)) 8)))) + (let ((t2-2 (/ (the-as int (ref arg1 9)) 8))) + (s4-7 s3-8 (the-as (function int debug-menu-msg float float float) s2-7) s1-7 (the-as symbol s0-3) sv-80 sv-96 t2-2))) + s5-0) + (else #f)))))) (label cfg-41) - (the-as debug-menu-node s5-0) - ) + (the-as debug-menu-node s5-0)) (defun debug-menu-find-from-template ((arg0 debug-menu-context) (arg1 pair)) "Find a debug-menu that was added by a template. This could be used to modify it after, @@ -732,33 +495,23 @@ (let ((s4-0 (the-as object (-> arg0 root-menu)))) (while (begin (label cfg-17) - (and s4-0 (type-type? (-> (the-as debug-menu-node s4-0) type) debug-menu) (not (null? arg1))) - ) + (and s4-0 (type-type? (-> (the-as debug-menu-node s4-0) type) debug-menu) (not (null? arg1)))) (let ((s3-0 (-> (the-as debug-menu s4-0) items)) - (s4-1 (car arg1)) - ) + (s4-1 (car arg1))) (set! arg1 (cdr arg1)) (let ((s5-0 (car s3-0))) (while (not (null? s3-0)) (when (string= (the-as string s4-1) (-> (the-as debug-menu-item s5-0) name)) (if (type-type? (rtype-of s5-0) debug-menu-item-submenu) - (set! s4-0 (-> (the-as debug-menu-item-submenu s5-0) submenu)) - (set! s4-0 s5-0) - ) - (goto cfg-17) - ) + (set! s4-0 (-> (the-as debug-menu-item-submenu s5-0) submenu)) + (set! s4-0 s5-0)) + (goto cfg-17)) (set! s3-0 (cdr s3-0)) - (set! s5-0 (car s3-0)) - ) - ) - ) + (set! s5-0 (car s3-0))))) (set! s4-0 #f) - (goto cfg-24) - ) + (goto cfg-24)) (label cfg-24) - (the-as debug-menu s4-0) - ) - ) + (the-as debug-menu s4-0))) ;;;;;;;;;;;;;;;;;;;;;;;; ;; rendering @@ -769,18 +522,16 @@ The submenus parameter is the number of _open_ menus below the one containing this item" (let ((s5-0 (-> item parent context font))) (set-origin! s5-0 x y) - (set! (-> s5-0 color) (cond ((zero? submenus) (font-color menu)) ;; in the active menu, white - (selected (font-color menu-selected-parent)) ;; a parent, but selected - (else (font-color menu-parent)) ;; a parent, but not selected - )) - (with-dma-buffer-add-bucket ((s3-0 (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) + (set! (-> s5-0 color) + (cond + ((zero? submenus) (font-color menu)) ;; in the active menu, white + (selected (font-color menu-selected-parent)) ;; a parent, but selected + (else (font-color menu-parent)) ;; a parent, but not selected + )) + (with-dma-buffer-add-bucket ((s3-0 (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) (draw-string-adv (-> item name) s3-0 s5-0) - (draw-string-adv "..." s3-0 s5-0) - ) - ) - item - ) + (draw-string-adv "..." s3-0 s5-0))) + item) (defun debug-menu-item-function-render ((item debug-menu-item-function) (x int) (y int) (submenus int) (selected symbol)) "Draw the text for a function entry. Also updates the timer for the highlight." @@ -791,30 +542,20 @@ ((> (-> item hilite-timer) 0) ;; if the hilite is >0, we ran the function successfully, so we hilite in blue for a bit (1-! (-> item hilite-timer)) - (font-color menu-selected) - ) + (font-color menu-selected)) ((< (-> item hilite-timer) 0) ;; if we're negative, it failed, so hilite in red (1+! (-> item hilite-timer)) - (font-color menu-func-bad) - ) + (font-color menu-func-bad)) ((nonzero? submenus) ;; in a parent menu - (font-color menu-parent) - ) + (font-color menu-parent)) (else - ;; option in the active menu. - (font-color menu) - ) - ) - ) - (with-dma-buffer-add-bucket ((s4-0 (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string (-> item name) s4-0 v1-2) - ) - ) - item - ) + ;; option in the active menu. + (font-color menu)))) + (with-dma-buffer-add-bucket ((s4-0 (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string (-> item name) s4-0 v1-2))) + item) (defun debug-menu-item-flag-render ((item debug-menu-item-flag) (x int) (y int) (submenus int) (arg4 symbol)) "Draw the text for a flag." @@ -827,25 +568,18 @@ ) ((-> item is-on) (if (zero? submenus) - (font-color menu-flag-on) ;; on, and in active menu - (font-color menu-flag-on-parent) ;; on, and in parent menu - ) - ) + (font-color menu-flag-on) ;; on, and in active menu + (font-color menu-flag-on-parent) ;; on, and in parent menu + )) ((zero? submenus) - (font-color menu-flag-off) ;; off, and in active menu + (font-color menu-flag-off) ;; off, and in active menu ) (else - (font-color menu-flag-off-parent) ;; off, and in parent menu - ) - ) - ) - (with-dma-buffer-add-bucket ((s4-0 (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string (-> item name) s4-0 v1-2) - ) - ) - item - ) + (font-color menu-flag-off-parent) ;; off, and in parent menu + ))) + (with-dma-buffer-add-bucket ((s4-0 (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string (-> item name) s4-0 v1-2))) + item) (defun debug-menu-item-var-render ((item debug-menu-item-var) (x int) (y int) (submenus int) (selected symbol)) "Draw the text for a variable" @@ -855,143 +589,95 @@ (cond ((zero? submenus) (if (-> item grabbed-joypad-p) - (font-color menu-selected) ;; active menu, using joypad - (font-color menu) ;; active menu, but not grabbed - ) - ) + (font-color menu-selected) ;; active menu, using joypad + (font-color menu) ;; active menu, but not grabbed + )) (selected - (font-color menu-selected-parent) ;; not sure how this case can happen - ) - (else - (font-color menu-parent) - ) - ) - ) - (with-dma-buffer-add-bucket ((s1-0 (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) + (font-color menu-selected-parent) ;; not sure how this case can happen + ) + (else (font-color menu-parent)))) + (with-dma-buffer-add-bucket ((s1-0 (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) (draw-string-adv (-> item name) s1-0 s5-0) (draw-string-adv ":" s1-0 s5-0) (cond ((>= (-> item show-len) (length (-> item display-str))) ;; enough room to just draw the whole thing - (draw-string (-> item display-str) s1-0 s5-0) - ) + (draw-string (-> item display-str) s1-0 s5-0)) (else - ;; not enough room. normally just draw ... - (draw-string "..." s1-0 s5-0) - - ;; display the whole thing if: we're selected and there are no submenus. - (set! selected (and (zero? submenus) selected)) - (when selected - (set-origin! s5-0 20 204) - (draw-string-adv (-> item name) s1-0 s5-0) - (draw-string-adv ":" s1-0 s5-0) - (draw-string (-> item display-str) s1-0 s5-0) - ) - ) - ) - ) - ) - item - ) + ;; not enough room. normally just draw ... + (draw-string "..." s1-0 s5-0) + ;; display the whole thing if: we're selected and there are no submenus. + (set! selected (and (zero? submenus) selected)) + (when selected + (set-origin! s5-0 20 204) + (draw-string-adv (-> item name) s1-0 s5-0) + (draw-string-adv ":" s1-0 s5-0) + (draw-string (-> item display-str) s1-0 s5-0)))))) + item) (defun debug-menu-item-render ((item debug-menu-item) (x int) (y int) (submenus int) (selected symbol)) "Draw an item. This feels like it should have been a method..." - ;; do a refresh, if it's time. (when (> (-> item refresh-delay) 0) (+! (-> item refresh-ctr) -1) (when (<= (-> item refresh-ctr) 0) (set! (-> item refresh-ctr) (-> item refresh-delay)) - (debug-menu-item-send-msg item (debug-menu-msg update)) - ) - ) - + (debug-menu-item-send-msg item (debug-menu-msg update)))) ;; call the appropriate render function. (cond ((= (-> item type) debug-menu-item-submenu) - (debug-menu-item-submenu-render (the-as debug-menu-item-submenu item) x y submenus selected) - ) + (debug-menu-item-submenu-render (the-as debug-menu-item-submenu item) x y submenus selected)) ((= (-> item type) debug-menu-item-function) - (debug-menu-item-function-render (the-as debug-menu-item-function item) x y submenus selected) - ) + (debug-menu-item-function-render (the-as debug-menu-item-function item) x y submenus selected)) ((= (-> item type) debug-menu-item-flag) - (debug-menu-item-flag-render (the-as debug-menu-item-flag item) x y submenus selected) - ) + (debug-menu-item-flag-render (the-as debug-menu-item-flag item) x y submenus selected)) ((= (-> item type) debug-menu-item-var) - (debug-menu-item-var-render (the-as debug-menu-item-var item) x y submenus selected) - ) - (else - (format 0 "ERROR: Found unknown item type!~%") - ) - ) - item - ) + (debug-menu-item-var-render (the-as debug-menu-item-var item) x y submenus selected)) + (else (format 0 "ERROR: Found unknown item type!~%"))) + item) (defun debug-menu-render ((menu debug-menu) (x-pos int) (y-pos int) (selected debug-menu-node) (submenus int)) "Render a menu." - ;; draw the background (let ((v1-0 0)) (let* ((a0-1 (-> menu items)) - (a1-1 (car a0-1)) - ) + (a1-1 (car a0-1))) (while (not (null? a0-1)) - (if (= a1-1 selected) - (goto cfg-7) - ) + (if (= a1-1 selected) (goto cfg-7)) (+! v1-0 1) (set! a0-1 (cdr a0-1)) - (set! a1-1 (car a0-1)) - ) - ) + (set! a1-1 (car a0-1)))) (label cfg-7) - (if (< 16 v1-0) - (set! y-pos (- y-pos (* (+ v1-0 -16) 8))) - ) - ) - (with-dma-buffer-add-bucket ((s0-0 (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) + (if (< 16 v1-0) (set! y-pos (- y-pos (* (+ v1-0 -16) 8))))) + (with-dma-buffer-add-bucket ((s0-0 (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) ;; og:preserve-this fixed for widescreen - (draw-sprite2d-xy s0-0 (correct-x-int x-pos) y-pos (correct-x-int (-> menu pix-width)) (-> menu pix-height) (static-rgba #x00 #x00 #x00 #x40)) - ) - + (draw-sprite2d-xy s0-0 + (correct-x-int x-pos) + y-pos + (correct-x-int (-> menu pix-width)) + (-> menu pix-height) + (static-rgba #x00 #x00 #x00 #x40))) ;; draw each item (let* ((s3-1 (+ x-pos 3)) (s2-1 (+ y-pos 3)) (s1-1 (-> menu items)) - (s0-1 (car s1-1)) - ) + (s0-1 (car s1-1))) (while (not (null? s1-1)) - ;; draw > on the selected object (when (= s0-1 selected) ;; dim it if it's in a parent menu. - (set! (-> menu context font color) - (if (nonzero? submenus) - (font-color menu-parent) - (font-color menu) - ) - ) + (set! (-> menu context font color) (if (nonzero? submenus) (font-color menu-parent) (font-color menu))) (set-origin! (-> menu context font) s3-1 s2-1) - (with-dma-buffer-add-bucket ((sv-16 (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string ">" sv-16 (-> menu context font)) - ) - ) - + (with-dma-buffer-add-bucket ((sv-16 (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string ">" sv-16 (-> menu context font)))) ;; actually draw the item. ;; og:preserve-this do not render if text is out of bounds... (when (and (< -20 s2-1) (> 256 s2-1)) - (debug-menu-item-render (the-as debug-menu-item s0-1) (+ s3-1 12) s2-1 submenus (= s0-1 selected)) - ) + (debug-menu-item-render (the-as debug-menu-item s0-1) (+ s3-1 12) s2-1 submenus (= s0-1 selected))) (+! s2-1 8) (set! s1-1 (cdr s1-1)) - (set! s0-1 (car s1-1)) - ) - ) - menu - ) + (set! s0-1 (car s1-1)))) + menu) (defun debug-menu-context-render ((arg0 debug-menu-context)) "Render all menus" @@ -1002,14 +688,9 @@ (let ((menu (-> arg0 sel-menu stack-idx))) ;; the thing that's selected at this depth. (let ((selection (-> menu selected-item))) - (debug-menu-render menu x-pos 28 selection (+ (- -1 stack-idx) (-> arg0 sel-length))) - ) - (set! x-pos (+ x-pos 3 (-> menu pix-width))) - ) - ) - ) - arg0 - ) + (debug-menu-render menu x-pos 28 selection (+ (- -1 stack-idx) (-> arg0 sel-length)))) + (set! x-pos (+ x-pos 3 (-> menu pix-width)))))) + arg0) ;;;;;;;;;;;;;;;;;;;;;;;; ;; navigate @@ -1018,7 +699,6 @@ (defun debug-menu-context-select-next-or-prev-item ((arg0 debug-menu-context) (arg1 int)) "Go up or down 1 in the currently open thing. The sign of arg1 determines direction" (local-vars (v1-6 object)) - ;; search for the currently selected thing. (let ((s5-0 (-> arg0 sel-menu (+ (-> arg0 sel-length) -1)))) (let ((a2-0 (-> s5-0 selected-item)) @@ -1029,118 +709,69 @@ (while (not (null? a3-0)) (when (= (car a3-0) a2-0) (set! v1-4 a3-0) - (goto cfg-7) - ) + (goto cfg-7)) (set! a0-1 a3-0) - (set! a3-0 (cdr a3-0)) - ) - ) + (set! a3-0 (cdr a3-0)))) (label cfg-7) (when (null? v1-4) (format 0 "ERROR: Couldn't find selected item in menu.~%") (set! arg0 arg0) - (goto cfg-19) - ) + (goto cfg-19)) (cond - ((>= arg1 0) - (if (null? (cdr v1-4)) - (set! v1-6 (car (-> s5-0 items))) - (set! v1-6 (car (cdr v1-4))) - ) - ) - ((null? a0-1) - (set! v1-6 (car (last (-> s5-0 items)))) - ) - (else - (set! v1-6 (car a0-1)) - ) - ) - ) - (set! (-> s5-0 selected-item) (the-as debug-menu-item v1-6)) - ) + ((>= arg1 0) (if (null? (cdr v1-4)) (set! v1-6 (car (-> s5-0 items))) (set! v1-6 (car (cdr v1-4))))) + ((null? a0-1) (set! v1-6 (car (last (-> s5-0 items))))) + (else (set! v1-6 (car a0-1))))) + (set! (-> s5-0 selected-item) (the-as debug-menu-item v1-6))) (label cfg-19) - arg0 - ) + arg0) (defun debug-menu-context-select-new-item ((arg0 debug-menu-context) (arg1 int)) (let* ((a2-0 (-> arg0 sel-menu (+ (-> arg0 sel-length) -1))) (a1-1 (-> a2-0 selected-item)) (a0-1 0) - (v1-4 -1) - ) + (v1-4 -1)) (let ((a2-1 (-> a2-0 items))) (while (not (null? a2-1)) - (if (= (car a2-1) a1-1) - (set! v1-4 a0-1) - ) + (if (= (car a2-1) a1-1) (set! v1-4 a0-1)) (set! a2-1 (cdr a2-1)) - (+! a0-1 1) - ) - ) + (+! a0-1 1))) (when (= v1-4 -1) (format 0 "ERROR: Couldn't find selected item in menu.~%") (set! arg0 arg0) - (goto cfg-25) - ) + (goto cfg-25)) (cond ((>= arg1 0) (cond - ((= v1-4 (+ a0-1 -1)) - (set! arg1 1) - ) - ((>= (+ v1-4 arg1) a0-1) - (set! arg1 (+ (- -1 v1-4) a0-1)) - ) - ) + ((= v1-4 (+ a0-1 -1)) (set! arg1 1)) + ((>= (+ v1-4 arg1) a0-1) (set! arg1 (+ (- -1 v1-4) a0-1)))) (dotimes (s4-0 arg1) - (debug-menu-context-select-next-or-prev-item arg0 1) - ) - ) + (debug-menu-context-select-next-or-prev-item arg0 1))) (else - (cond - ((zero? v1-4) - (set! arg1 -1) - ) - ((< (+ v1-4 arg1) 0) - (set! arg1 (- v1-4)) - ) - ) - (dotimes (s4-1 (- arg1)) - (debug-menu-context-select-next-or-prev-item arg0 -1) - ) - ) - ) - ) + (cond + ((zero? v1-4) (set! arg1 -1)) + ((< (+ v1-4 arg1) 0) (set! arg1 (- v1-4)))) + (dotimes (s4-1 (- arg1)) + (debug-menu-context-select-next-or-prev-item arg0 -1))))) (label cfg-25) - arg0 - ) + arg0) (defun debug-menu-context-open-submenu ((arg0 debug-menu-context) (arg1 debug-menu)) (let ((v1-0 (-> arg0 sel-length))) (when (>= v1-0 8) (format 0 "ERROR: Trying to exceed maximum menu depth!") - (return arg1) - ) + (return arg1)) (when (null? (-> arg1 items)) (format 0 "ERROR: Submenu has no items!") - (return arg1) - ) + (return arg1)) (set! (-> arg0 sel-menu v1-0) arg1) - (if (not (-> arg1 selected-item)) - (set! (-> arg1 selected-item) (the-as debug-menu-item (-> arg1 items car))) - ) - (set! (-> arg0 sel-length) (+ v1-0 1)) - ) - (debug-menu-context-send-msg arg0 (debug-menu-msg activate) (debug-menu-dest current-selection)) - ) + (if (not (-> arg1 selected-item)) (set! (-> arg1 selected-item) (the-as debug-menu-item (-> arg1 items car)))) + (set! (-> arg0 sel-length) (+ v1-0 1))) + (debug-menu-context-send-msg arg0 (debug-menu-msg activate) (debug-menu-dest current-selection))) (defun debug-menu-context-close-submenu ((arg0 debug-menu-context)) (debug-menu-context-send-msg arg0 (debug-menu-msg deactivate) (debug-menu-dest current-selection)) - (if (< 1 (-> arg0 sel-length)) - (+! (-> arg0 sel-length) -1) - ) - arg0 - ) + (if (< 1 (-> arg0 sel-length)) (+! (-> arg0 sel-length) -1)) + arg0) ;;;;;;;;;;;;;;;;;;;;;;;; ;; message handling @@ -1151,12 +782,8 @@ (defun debug-menu-item-submenu-msg ((arg0 debug-menu-item-submenu) (arg1 debug-menu-msg)) ;; on press, open the submenu (when (= arg1 (debug-menu-msg press)) - (let ((a0-1 (-> arg0 parent context))) - (debug-menu-context-open-submenu a0-1 (-> arg0 submenu)) - ) - ) - arg0 - ) + (let ((a0-1 (-> arg0 parent context))) (debug-menu-context-open-submenu a0-1 (-> arg0 submenu)))) + arg0) (defun debug-menu-item-function-msg ((arg0 debug-menu-item-function) (arg1 debug-menu-msg)) (cond @@ -1164,48 +791,28 @@ ;; on press, call the function! (cond ((-> arg0 activate-func) - (if ((-> arg0 activate-func) (-> arg0 id)) - (set! (-> arg0 hilite-timer) 6) - (set! (-> arg0 hilite-timer) -6) - ) - ) - (else - (set! (-> arg0 hilite-timer) -6) - ) - ) - ) + (if ((-> arg0 activate-func) (-> arg0 id)) (set! (-> arg0 hilite-timer) 6) (set! (-> arg0 hilite-timer) -6))) + (else (set! (-> arg0 hilite-timer) -6)))) ((= arg1 (debug-menu-msg deactivate)) ;; on deactivate, clear hilite. (set! (-> arg0 hilite-timer) 0) - 0 - ) - ) - arg0 - ) + 0)) + arg0) (defun debug-menu-item-flag-msg ((arg0 debug-menu-item-flag) (arg1 debug-menu-msg)) (cond ((= arg1 (debug-menu-msg press)) ;; on press, call the function. - (if (-> arg0 activate-func) - (set! (-> arg0 is-on) ((-> arg0 activate-func) (-> arg0 id) (debug-menu-msg press))) - ) + (if (-> arg0 activate-func) (set! (-> arg0 is-on) ((-> arg0 activate-func) (-> arg0 id) (debug-menu-msg press)))) ;; also update all open menus. (let ((a0-2 (-> arg0 parent context))) - (debug-menu-context-send-msg a0-2 (debug-menu-msg update) (debug-menu-dest open-menus)) - ) - ) + (debug-menu-context-send-msg a0-2 (debug-menu-msg update) (debug-menu-dest open-menus)))) ((or (= arg1 (debug-menu-msg update)) (= arg1 (debug-menu-msg activate))) ;; just query the value. - (if (-> arg0 activate-func) - (set! (-> arg0 is-on) ((-> arg0 activate-func) (-> arg0 id) (debug-menu-msg update))) - ) + (if (-> arg0 activate-func) (set! (-> arg0 is-on) ((-> arg0 activate-func) (-> arg0 id) (debug-menu-msg update)))) ;; update the refresh counter. - (set! (-> arg0 refresh-ctr) (-> arg0 refresh-delay)) - ) - ) - arg0 - ) + (set! (-> arg0 refresh-ctr) (-> arg0 refresh-delay)))) + arg0) ;;;;;;;;;;;;;;;;;;;;;;;; ;; joypad handling @@ -1215,149 +822,77 @@ "Handle joypad inputs for a variable" (cond ((not (cpad-hold? 0 x)) - (let ((a0-1 (-> arg0 parent context))) - (debug-menu-context-release-joypad a0-1) - ) + (let ((a0-1 (-> arg0 parent context))) (debug-menu-context-release-joypad a0-1)) (set! (-> arg0 grabbed-joypad-p) #f) (when (cpad-pressed? 0 circle) (cond ((-> arg0 float-p) (if (-> arg0 factivate-func) - (set! (-> arg0 fval) - ((-> arg0 factivate-func) (-> arg0 id) (debug-menu-msg press) (-> arg0 fundo-val) (-> arg0 fval)) - ) - ) - ) + (set! (-> arg0 fval) ((-> arg0 factivate-func) (-> arg0 id) (debug-menu-msg press) (-> arg0 fundo-val) (-> arg0 fval))))) (else - (if (-> arg0 factivate-func) - (set! (-> arg0 fval) (the-as float ((the-as (function int int int int int) (-> arg0 factivate-func)) - (-> arg0 id) - 4 - (the-as int (-> arg0 fundo-val)) - (the-as int (-> arg0 fval)) - ) - ) - ) - ) - ) - ) - (debug-menu-item-var-update-display-str arg0) - ) + (if (-> arg0 factivate-func) + (set! (-> arg0 fval) + (the-as float + ((the-as (function int int int int int) (-> arg0 factivate-func)) + (-> arg0 id) + 4 + (the-as int (-> arg0 fundo-val)) + (the-as int (-> arg0 fval)))))))) + (debug-menu-item-var-update-display-str arg0)) (let ((a0-5 (-> arg0 parent context))) - (debug-menu-context-send-msg a0-5 (debug-menu-msg update) (debug-menu-dest open-menus)) - ) - ) + (debug-menu-context-send-msg a0-5 (debug-menu-msg update) (debug-menu-dest open-menus)))) ((or (cpad-hold? 0 right) (cpad-hold? 0 left) (cpad-hold? 0 down) (cpad-hold? 0 up)) (let ((v1-39 (cond - ((cpad-hold? 0 right) - 10 - ) - ((cpad-hold? 0 up) - 1 - ) - ((cpad-hold? 0 down) - -1 - ) - (else - -10 - ) - ) - ) - ) + ((cpad-hold? 0 right) 10) + ((cpad-hold? 0 up) 1) + ((cpad-hold? 0 down) -1) + (else -10)))) (when (!= v1-39 (-> arg0 inc-dir)) (set! (-> arg0 inc-dir) v1-39) (set! (-> arg0 inc-delay) 15) (set! (-> arg0 inc-delay-ctr) 0) (set! (-> arg0 step-delay-ctr) 30) (set! (-> arg0 fstep) (-> arg0 fstart-inc)) - (set! (-> arg0 fstep) (-> arg0 fstart-inc)) - ) - ) + (set! (-> arg0 fstep) (-> arg0 fstart-inc)))) (cond ((<= (-> arg0 inc-delay-ctr) 0) - (if (> (-> arg0 inc-delay) 0) - (+! (-> arg0 inc-delay) -1) - ) + (if (> (-> arg0 inc-delay) 0) (+! (-> arg0 inc-delay) -1)) (when (zero? (-> arg0 inc-delay)) (cond ((<= (-> arg0 step-delay-ctr) 0) (set! (-> arg0 step-delay-ctr) 30) (cond - ((-> arg0 float-p) - (if (< (-> arg0 fstep) 10000000.0) - (set! (-> arg0 fstep) (* 2.0 (-> arg0 fstep))) - ) - ) + ((-> arg0 float-p) (if (< (-> arg0 fstep) 10000000.0) (set! (-> arg0 fstep) (* 2.0 (-> arg0 fstep))))) (else - (if (< (the-as int (-> arg0 fstep)) #x989680) - (set! (-> arg0 fstep) (the-as float (* (the-as int (-> arg0 fstep)) 2))) - ) - ) - ) - ) - (else - (+! (-> arg0 step-delay-ctr) -1) - ) - ) - ) + (if (< (the-as int (-> arg0 fstep)) #x989680) (set! (-> arg0 fstep) (the-as float (* (the-as int (-> arg0 fstep)) 2))))))) + (else (+! (-> arg0 step-delay-ctr) -1)))) (set! (-> arg0 inc-delay-ctr) (-> arg0 inc-delay)) (cond ((-> arg0 float-p) (when (-> arg0 factivate-func) (let ((f0-8 (+ (-> arg0 fval) (* (the float (-> arg0 inc-dir)) (-> arg0 fstep))))) - (if (-> arg0 range-p) - (set! f0-8 (fmin (fmax f0-8 (-> arg0 frange-min)) (-> arg0 frange-max))) - ) - (set! (-> arg0 fval) ((-> arg0 factivate-func) (-> arg0 id) (debug-menu-msg press) f0-8 (-> arg0 fval))) - ) - ) - ) + (if (-> arg0 range-p) (set! f0-8 (fmin (fmax f0-8 (-> arg0 frange-min)) (-> arg0 frange-max)))) + (set! (-> arg0 fval) ((-> arg0 factivate-func) (-> arg0 id) (debug-menu-msg press) f0-8 (-> arg0 fval)))))) (else - (when (-> arg0 factivate-func) - (let ((a2-4 (+ (the-as int (-> arg0 fval)) (* (-> arg0 inc-dir) (the-as int (-> arg0 fstep)))))) - (if (-> arg0 range-p) - (set! a2-4 (min (max a2-4 (the-as int (-> arg0 frange-min))) (the-as int (-> arg0 frange-max)))) - ) - (set! (-> arg0 fval) (the-as float ((the-as (function int int int int int) (-> arg0 factivate-func)) - (-> arg0 id) - 4 - a2-4 - (the-as int (-> arg0 fval)) - ) - ) - ) - ) - ) - ) - ) + (when (-> arg0 factivate-func) + (let ((a2-4 (+ (the-as int (-> arg0 fval)) (* (-> arg0 inc-dir) (the-as int (-> arg0 fstep)))))) + (if (-> arg0 range-p) (set! a2-4 (min (max a2-4 (the-as int (-> arg0 frange-min))) (the-as int (-> arg0 frange-max))))) + (set! (-> arg0 fval) + (the-as float + ((the-as (function int int int int int) (-> arg0 factivate-func)) (-> arg0 id) 4 a2-4 (the-as int (-> arg0 fval))))))))) (debug-menu-item-var-update-display-str arg0) (let ((a0-20 (-> arg0 parent context))) - (debug-menu-context-send-msg a0-20 (debug-menu-msg update) (debug-menu-dest current-selection)) - ) - ) - (else - (+! (-> arg0 inc-delay-ctr) -1) - ) - ) - ) - (else - (set! (-> arg0 inc-dir) 0) - 0 - ) - ) - arg0 - ) + (debug-menu-context-send-msg a0-20 (debug-menu-msg update) (debug-menu-dest current-selection)))) + (else (+! (-> arg0 inc-delay-ctr) -1)))) + (else (set! (-> arg0 inc-dir) 0) 0)) + arg0) (defun debug-menu-item-var-msg ((arg0 debug-menu-item-var) (arg1 debug-menu-msg)) (cond ((= arg1 (debug-menu-msg deactivate)) (when (-> arg0 grabbed-joypad-p) - (let ((a0-1 (-> arg0 parent context))) - (debug-menu-context-release-joypad a0-1) - ) - (set! (-> arg0 grabbed-joypad-p) #f) - ) - ) + (let ((a0-1 (-> arg0 parent context))) (debug-menu-context-release-joypad a0-1)) + (set! (-> arg0 grabbed-joypad-p) #f))) ((= arg1 (debug-menu-msg press)) (when (not (-> arg0 grabbed-joypad-p)) (let ((a0-2 (-> arg0 parent context))) @@ -1366,181 +901,107 @@ (set! (-> arg0 fundo-val) (-> arg0 fval)) (set! (-> arg0 fundo-val) (-> arg0 fval)) (set! (-> arg0 inc-dir) 0) - 0 - ) - ) - ) - ) + 0)))) ((or (= arg1 (debug-menu-msg update)) (= arg1 (debug-menu-msg activate))) (cond ((-> arg0 float-p) (if (-> arg0 factivate-func) - (set! (-> arg0 fval) - ((-> arg0 factivate-func) (-> arg0 id) (debug-menu-msg update) (-> arg0 fval) (-> arg0 fval)) - ) - ) - ) + (set! (-> arg0 fval) ((-> arg0 factivate-func) (-> arg0 id) (debug-menu-msg update) (-> arg0 fval) (-> arg0 fval))))) (else - (if (-> arg0 factivate-func) - (set! (-> arg0 fval) (the-as float ((the-as (function int int int int int) (-> arg0 factivate-func)) - (-> arg0 id) - 3 - (the-as int (-> arg0 fval)) - (the-as int (-> arg0 fval)) - ) - ) - ) - ) - ) - ) + (if (-> arg0 factivate-func) + (set! (-> arg0 fval) + (the-as float + ((the-as (function int int int int int) (-> arg0 factivate-func)) + (-> arg0 id) + 3 + (the-as int (-> arg0 fval)) + (the-as int (-> arg0 fval)))))))) (debug-menu-item-var-update-display-str arg0) - (set! (-> arg0 refresh-ctr) (-> arg0 refresh-delay)) - ) - ) - arg0 - ) + (set! (-> arg0 refresh-ctr) (-> arg0 refresh-delay)))) + arg0) (defun debug-menu-item-send-msg ((arg0 debug-menu-item) (arg1 debug-menu-msg)) "Call the appropriate message handler for the given item." (cond - ((= (-> arg0 type) debug-menu-item-submenu) - (debug-menu-item-submenu-msg (the-as debug-menu-item-submenu arg0) arg1) - ) - ((= (-> arg0 type) debug-menu-item-function) - (debug-menu-item-function-msg (the-as debug-menu-item-function arg0) arg1) - ) - ((= (-> arg0 type) debug-menu-item-flag) - (debug-menu-item-flag-msg (the-as debug-menu-item-flag arg0) arg1) - ) - ((= (-> arg0 type) debug-menu-item-var) - (debug-menu-item-var-msg (the-as debug-menu-item-var arg0) arg1) - ) - (else - (format 0 "ERROR: Found unknown item type!~%") - ) - ) - arg0 - ) + ((= (-> arg0 type) debug-menu-item-submenu) (debug-menu-item-submenu-msg (the-as debug-menu-item-submenu arg0) arg1)) + ((= (-> arg0 type) debug-menu-item-function) (debug-menu-item-function-msg (the-as debug-menu-item-function arg0) arg1)) + ((= (-> arg0 type) debug-menu-item-flag) (debug-menu-item-flag-msg (the-as debug-menu-item-flag arg0) arg1)) + ((= (-> arg0 type) debug-menu-item-var) (debug-menu-item-var-msg (the-as debug-menu-item-var arg0) arg1)) + (else (format 0 "ERROR: Found unknown item type!~%"))) + arg0) (defun-recursive debug-menu-send-msg debug-menu ((arg0 debug-menu) (arg1 debug-menu-msg) (arg2 symbol)) "Send to all items in menu. Arg2 picks if we are recursive or not." (let* ((s3-0 (-> arg0 items)) - (s2-0 (car s3-0)) - ) + (s2-0 (car s3-0))) (while (not (null? s3-0)) (debug-menu-item-send-msg (the-as debug-menu-item s2-0) arg1) (if (and arg2 (= (-> (the-as debug-menu-item s2-0) type) debug-menu-item-submenu)) - (debug-menu-send-msg (-> (the-as debug-menu-item-submenu s2-0) submenu) arg1 #t) - ) + (debug-menu-send-msg (-> (the-as debug-menu-item-submenu s2-0) submenu) arg1 #t)) (set! s3-0 (cdr s3-0)) - (set! s2-0 (car s3-0)) - ) - ) - arg0 - ) + (set! s2-0 (car s3-0)))) + arg0) (defun debug-menu-context-send-msg ((arg0 debug-menu-context) (arg1 debug-menu-msg) (arg2 debug-menu-dest)) "Send the arg1 message to the given place." (cond ((= arg2 (debug-menu-dest root)) ;; sent to root, recursively. This will hit the whole menu. - (debug-menu-send-msg (-> arg0 root-menu) arg1 #t) - ) + (debug-menu-send-msg (-> arg0 root-menu) arg1 #t)) ((= arg2 (debug-menu-dest open-menus)) ;; only send to open things (when (-> arg0 is-active) ;; only if context is open (dotimes (s4-0 (-> arg0 sel-length)) ;; go through stack (let ((a0-2 (-> arg0 sel-menu s4-0))) ;; send, not recursive - (debug-menu-send-msg a0-2 arg1 #f) - ) - ) - ) - ) + (debug-menu-send-msg a0-2 arg1 #f))))) ((= arg2 (debug-menu-dest current-selection)) (when (-> arg0 is-active) ;; context open (if (nonzero? (-> arg0 sel-length)) ;; something in the stack - (debug-menu-send-msg (-> arg0 sel-menu (+ (-> arg0 sel-length) -1)) arg1 #f) ;; send to that. - ) - ) - ) + (debug-menu-send-msg (-> arg0 sel-menu (+ (-> arg0 sel-length) -1)) arg1 #f) ;; send to that. + ))) ((= arg2 (debug-menu-dest activation)) ;; this is a special case for when we want to activate or deactivate something. (cond ((= arg1 (debug-menu-msg activate)) (when (not (-> arg0 is-active)) (set! (-> arg0 is-active) #t) - (debug-menu-context-send-msg arg0 (debug-menu-msg activate) (debug-menu-dest open-menus)) - ) - ) + (debug-menu-context-send-msg arg0 (debug-menu-msg activate) (debug-menu-dest open-menus)))) ((= arg1 (debug-menu-msg deactivate)) (when (-> arg0 is-active) (debug-menu-context-send-msg arg0 (debug-menu-msg deactivate) (debug-menu-dest open-menus)) - (set! (-> arg0 is-active) #f) - ) - ) - ) - ) - ) - arg0 - ) + (set! (-> arg0 is-active) #f)))))) + arg0) (defun debug-menu-context-activate-selection ((arg0 debug-menu-context)) "Press on the selected thing. Note that we named this enum press, not activate." (let ((a0-1 (-> arg0 sel-menu (+ (-> arg0 sel-length) -1) selected-item))) - (debug-menu-item-send-msg a0-1 (debug-menu-msg press)) - ) - arg0 - ) + (debug-menu-item-send-msg a0-1 (debug-menu-msg press))) + arg0) (defun debug-menus-default-joypad-func ((arg0 debug-menu-context)) "Control the menu from the joystick" (cond ((cpad-pressed? 0 square) (cond - ((< 1 (-> arg0 sel-length)) - (debug-menu-context-close-submenu arg0) - ) - (else - ) - ) - ) - ((cpad-pressed? 0 x) - (debug-menu-context-activate-selection arg0) - ) - ((cpad-pressed? 0 up) - (debug-menu-context-select-new-item arg0 -1) - ) - ((cpad-pressed? 0 down) - (debug-menu-context-select-new-item arg0 1) - ) - ((cpad-pressed? 0 left) - (debug-menu-context-select-new-item arg0 -5) - ) - ((cpad-pressed? 0 right) - (debug-menu-context-select-new-item arg0 5) - ) - ) - arg0 - ) + ((< 1 (-> arg0 sel-length)) (debug-menu-context-close-submenu arg0)) + (else))) + ((cpad-pressed? 0 x) (debug-menu-context-activate-selection arg0)) + ((cpad-pressed? 0 up) (debug-menu-context-select-new-item arg0 -1)) + ((cpad-pressed? 0 down) (debug-menu-context-select-new-item arg0 1)) + ((cpad-pressed? 0 left) (debug-menu-context-select-new-item arg0 -5)) + ((cpad-pressed? 0 right) (debug-menu-context-select-new-item arg0 5))) + arg0) (defun debug-menus-active ((arg0 debug-menu-context)) "Run the menu context" (when (not (-> arg0 is-hidden)) ;; grab inputs - (if (-> arg0 joypad-func) - ((-> arg0 joypad-func) (-> arg0 joypad-item)) - (debug-menus-default-joypad-func arg0) - ) + (if (-> arg0 joypad-func) ((-> arg0 joypad-func) (-> arg0 joypad-item)) (debug-menus-default-joypad-func arg0)) ;; render - (debug-menu-context-render arg0) - ) - arg0 - ) + (debug-menu-context-render arg0)) + arg0) (defun debug-menus-handler ((arg0 debug-menu-context)) - (if (-> arg0 is-active) - (debug-menus-active arg0) - ) - arg0 - ) + (if (-> arg0 is-active) (debug-menus-active arg0)) + arg0) diff --git a/goal_src/jak1/engine/debug/part-tester.gc b/goal_src/jak1/engine/debug/part-tester.gc index 84c807f7c0..b5ecd2db18 100644 --- a/goal_src/jak1/engine/debug/part-tester.gc +++ b/goal_src/jak1/engine/debug/part-tester.gc @@ -1,122 +1,85 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") (require "engine/debug/debug.gc") - -;; name: part-tester.gc -;; name in dgo: part-tester -;; dgos: GAME, ENGINE - (#when PC_PORT - (define *part-tester-id* 105) - ) + (define *part-tester-id* 105)) ;; DECOMP BEGINS ;; this file is debug only (declare-file (debug)) -(defpartgroup group-part-tester :id 105 :bounds (static-bspherem 0 0 0 1) :parts ((sp-item 56) (sp-item 57))) +(defpartgroup group-part-tester + :id 105 + :bounds (static-bspherem 0 0 0 1) + :parts ((sp-item 56) (sp-item 57))) (deftype part-tester (process) - ((root trsqv) - (part sparticle-launch-control) - (old-group sparticle-launch-group) - ) - :heap-base #x100 - ) + ((root trsqv) + (part sparticle-launch-control) + (old-group sparticle-launch-group)) + :heap-base #x100) (define-extern *part-tester* part-tester) + (define *part-tester-name* (the-as string #f)) (defmethod deactivate ((this part-tester)) - (if (nonzero? (-> this part)) - (kill-and-free-particles (-> this part)) - ) + (if (nonzero? (-> this part)) (kill-and-free-particles (-> this part))) ((method-of-type process deactivate) this) - (none) - ) + (none)) (defstate part-tester-idle (part-tester) - :code (behavior () - (loop - (let ((gp-0 (entity-by-name *part-tester-name*))) - (when gp-0 - (let ((s5-0 (-> gp-0 extra process))) - (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> (the-as process-drawable s5-0) root))) + :code + (behavior () + (loop + (let ((gp-0 (entity-by-name *part-tester-name*))) + (when gp-0 + (let ((s5-0 (-> gp-0 extra process))) + (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> (the-as process-drawable s5-0) root))) (set! (-> self root trans quad) (-> (the-as process-drawable s5-0) root trans quad)) - (set! (-> self root trans quad) (-> gp-0 extra trans quad)) - ) - ) - ) - ) - (add-debug-x - #t - (bucket-id debug-no-zbuf) - (-> self root trans) - (the-as rgba (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) - ) - - ;; og:preserve-this - ;; change this line to change the particle group to test - ;; notes: - ;; - particles that use aux list won't work (warp parts) - ;; - some particles may have callbacks that won't work yet - (let ((gp-1 (-> *part-group-id-table* 105))) - (#when PC_PORT - (if (nonzero? (-> *part-group-id-table* *part-tester-id*)) - (set! gp-1 (-> *part-group-id-table* *part-tester-id*)) - ) - ) - (let ((s5-1 (-> self root trans))) - (when (!= gp-1 (-> self old-group)) - (when (nonzero? (-> self part)) - (kill-and-free-particles (-> self part)) - (set! (-> self heap-cur) (&-> (-> self part) type)) - ) - (set! (-> self part) (create-launch-control gp-1 self)) - ) - (if (nonzero? (-> self part)) - (spawn (-> self part) (cond - ((logtest? (-> gp-1 flags) (sp-group-flag screen-space)) - *zero-vector* - ) - (else - (empty) - s5-1 - ) - ) - ) - ) - ) - (set! (-> self old-group) gp-1) - ) - (suspend) - ) - ) - ) + (set! (-> self root trans quad) (-> gp-0 extra trans quad)))))) + (add-debug-x #t + (bucket-id debug-no-zbuf) + (-> self root trans) + (the-as rgba (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80))) + ;; og:preserve-this + ;; change this line to change the particle group to test + ;; notes: + ;; - particles that use aux list won't work (warp parts) + ;; - some particles may have callbacks that won't work yet + (let ((gp-1 (-> *part-group-id-table* 105))) + (#when PC_PORT + (if (nonzero? (-> *part-group-id-table* *part-tester-id*)) (set! gp-1 (-> *part-group-id-table* *part-tester-id*)))) + (let ((s5-1 (-> self root trans))) + (when (!= gp-1 (-> self old-group)) + (when (nonzero? (-> self part)) + (kill-and-free-particles (-> self part)) + (set! (-> self heap-cur) (&-> (-> self part) type))) + (set! (-> self part) (create-launch-control gp-1 self))) + (if (nonzero? (-> self part)) + (spawn (-> self part) + (cond + ((logtest? (-> gp-1 flags) (sp-group-flag screen-space)) *zero-vector*) + (else (empty) s5-1))))) + (set! (-> self old-group) gp-1)) + (suspend)))) (defbehavior part-tester-init-by-other process-drawable ((arg0 vector)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> arg0 quad)) (set! *part-tester* (the-as part-tester (process->ppointer self))) (go part-tester-idle) - (none) - ) + (none)) (define-perm *debug-part-dead-pool* dead-pool (new 'debug 'dead-pool 1 #x10000 '*debug-part-dead-pool*)) (defun start-part () (kill-by-type part-tester *active-pool*) - (process-spawn - part-tester - (if *anim-tester* - (-> *anim-tester* 0 root trans) - (target-pos 0) - ) - :from *debug-part-dead-pool* - ) - (none) - ) + (process-spawn part-tester + (if *anim-tester* (-> *anim-tester* 0 root trans) (target-pos 0)) + :from + *debug-part-dead-pool*) + (none)) diff --git a/goal_src/jak1/engine/debug/stats-h.gc b/goal_src/jak1/engine/debug/stats-h.gc index d1916682cf..25b0ff59f9 100644 --- a/goal_src/jak1/engine/debug/stats-h.gc +++ b/goal_src/jak1/engine/debug/stats-h.gc @@ -1,63 +1,46 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: stats-h.gc -;; name in dgo: stats-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype tr-stat (structure) - ((groups uint16) - (fragments uint16) - (tris uint32) - (dverts uint32) - (instances uint16) - (pad uint16) - ) - ) - + ((groups uint16) + (fragments uint16) + (tris uint32) + (dverts uint32) + (instances uint16) + (pad uint16))) (deftype merc-global-stats (structure) - ((merc tr-stat :inline) - (mercneric tr-stat :inline) - ) - ) - + ((merc tr-stat :inline) + (mercneric tr-stat :inline))) (deftype perf-stat (structure) - ((frame-number uint32) - (count uint32) - (cycles uint32) - (instructions uint32) - (icache uint32) - (dcache uint32) - (select uint32) - (ctrl uint32) - (accum0 uint32) - (accum1 uint32) - (to-vu0-waits uint32) - (to-spr-waits uint32) - (from-spr-waits uint32) - ) + ((frame-number uint32) + (count uint32) + (cycles uint32) + (instructions uint32) + (icache uint32) + (dcache uint32) + (select uint32) + (ctrl uint32) + (accum0 uint32) + (accum1 uint32) + (to-vu0-waits uint32) + (to-spr-waits uint32) + (from-spr-waits uint32)) :pack-me (:methods - (perf-stat-method-9 (_type_) none) - (print-to-stream (_type_ string basic) none) - (reset! (_type_) none) - (read! (_type_) none) - (update-wait-stats (_type_ uint uint uint) none) - ) - ) - + (perf-stat-method-9 (_type_) none) + (print-to-stream (_type_ string basic) none) + (reset! (_type_) none) + (read! (_type_) none) + (update-wait-stats (_type_ uint uint uint) none))) (deftype perf-stat-array (inline-array-class) - ((data perf-stat :inline :dynamic) - ) - ) + ((data perf-stat :inline :dynamic))) (set! (-> perf-stat-array heap-base) (the-as uint 52)) @@ -67,8 +50,7 @@ "Perfomance counters are partially implemented, they just count cycles." (+! (-> this count) 1) (when (nonzero? (-> this ctrl)) - (set! *pc-perf-stat-counter* (get-cpu-clock)) - ) + (set! *pc-perf-stat-counter* (get-cpu-clock))) #| (let ((v1-0 (-> this ctrl))) (+! (-> this count) 1) @@ -87,16 +69,13 @@ (label cfg-2) |# 0 - (none) - ) + (none)) (defmethod read! ((this perf-stat)) "Perfomance counters are partially implemented, they just count cycles." (when (nonzero? (-> this ctrl)) (+! (-> this accum0) (- (get-cpu-clock) *pc-perf-stat-counter*)) - (set! (-> this accum1) 0) - ) - + (set! (-> this accum1) 0)) #| (local-vars (v1-1 int) (v1-3 int)) (b! (zero? (-> this ctrl)) cfg-2 :delay (nop!)) @@ -110,21 +89,17 @@ (label cfg-2) |# 0 - (none) - ) + (none)) (defmethod update-wait-stats ((this perf-stat) (arg0 uint) (arg1 uint) (arg2 uint)) (when (nonzero? (-> this ctrl)) (+! (-> this to-vu0-waits) arg0) (+! (-> this to-spr-waits) arg1) - (+! (-> this from-spr-waits) arg2) - ) + (+! (-> this from-spr-waits) arg2)) 0 - (none) - ) + (none)) (when (not *debug-segment*) (set! (-> perf-stat method-table 11) nothing) (set! (-> perf-stat method-table 12) nothing) - (set! (-> perf-stat method-table 13) nothing) - ) + (set! (-> perf-stat method-table 13) nothing)) diff --git a/goal_src/jak1/engine/debug/viewer.gc b/goal_src/jak1/engine/debug/viewer.gc index 0d1febb15c..454818dc67 100644 --- a/goal_src/jak1/engine/debug/viewer.gc +++ b/goal_src/jak1/engine/debug/viewer.gc @@ -1,57 +1,42 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/anim/aligner.gc") (require "engine/entity/entity.gc") -;; name: viewer.gc -;; name in dgo: viewer -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(define *viewer-sg* (new 'static 'skeleton-group - :bounds (new 'static 'vector :w 16384.0) - :lod-dist (new 'static 'array float 4 4095996000.0 0.0 0.0 0.0) - ) - ) +(define *viewer-sg* + (new 'static + 'skeleton-group + :bounds + (new 'static 'vector :w 16384.0) + :lod-dist + (new 'static 'array float 4 4095996000.0 0.0 0.0 0.0))) (deftype viewer (process-drawable) - ((janim art-joint-anim) - ) + ((janim art-joint-anim)) (:states - viewer-process - ) - ) - + viewer-process)) (define-extern *viewer* viewer) (defstate viewer-process (viewer) - :code (behavior () - (loop - (ja-no-eval :group! (-> self janim) - :num! (seek! (the float (+ (-> self janim data 0 length) -1))) - :frame-num 0.0 - ) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (align! - (-> self align) - (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) - 1.0 - 1.0 - 1.0 - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (-> self janim) :num! (seek! (the float (+ (-> self janim data 0 length) -1))) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) + 1.0 + 1.0 + 1.0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (define viewer-string (new 'global 'string 64 (the-as string #f))) @@ -61,98 +46,58 @@ (defun actor-get-arg! ((arg0 string) (arg1 string) (arg2 string)) (let ((s5-0 (-> arg2 data)) - (gp-0 (-> arg0 data)) - ) + (gp-0 (-> arg0 data))) (set! (-> gp-0 0) (the-as uint 0)) (dotimes (s2-0 (- (length arg2) (+ (length arg1) 2))) (when (= (-> s5-0 0) 45) (let ((s1-0 #f)) (dotimes (s0-0 (length arg1)) - (if (!= (-> s5-0 (+ s0-0 1)) (-> arg1 data s0-0)) - (goto cfg-10) - ) - ) - (if (= (-> s5-0 (+ (length arg1) 1)) 45) - (set! s1-0 #t) - ) + (if (!= (-> s5-0 (+ s0-0 1)) (-> arg1 data s0-0)) (goto cfg-10))) + (if (= (-> s5-0 (+ (length arg1) 1)) 45) (set! s1-0 #t)) (label cfg-10) (when s1-0 (let ((v1-22 (&+ s5-0 (+ (length arg1) 2)))) (while (and (!= (-> v1-22 0) 45) (nonzero? (-> v1-22 0))) (set! (-> gp-0 0) (-> v1-22 0)) (set! v1-22 (&-> v1-22 1)) - (set! gp-0 (&-> gp-0 1)) - ) - ) + (set! gp-0 (&-> gp-0 1)))) (set! (-> gp-0 0) (the-as uint 0)) - (return #t) - ) - ) - ) - (set! s5-0 (&-> s5-0 1)) - ) - ) - #f - ) + (return #t)))) + (set! s5-0 (&-> s5-0 1)))) + #f) (defun art-part-name ((arg0 string)) (let ((gp-0 (-> arg0 data))) (while (nonzero? (-> gp-0 0)) (when (= (-> gp-0 0) 45) - (copyn-string<-charp - viewer-string - (&-> gp-0 1) - (- (length arg0) (the-as int (+ (- -1 (the-as int (-> arg0 data))) (the-as int gp-0)))) - ) - (return viewer-string) - ) - (set! gp-0 (&-> gp-0 1)) - ) - ) - (clear viewer-string) - ) + (copyn-string<-charp viewer-string + (&-> gp-0 1) + (- (length arg0) (the-as int (+ (- -1 (the-as int (-> arg0 data))) (the-as int gp-0))))) + (return viewer-string)) + (set! gp-0 (&-> gp-0 1)))) + (clear viewer-string)) (defbehavior init-viewer viewer ((arg0 string)) - (let ((s2-0 (load-to-heap-by-name - (-> (if (-> self entity) - (-> self entity extra level) - (-> *level* level-default) - ) - art-group - ) - arg0 - #f - global - 0 - ) - ) + (let ((s2-0 (load-to-heap-by-name (-> (if (-> self entity) (-> self entity extra level) (-> *level* level-default)) art-group) + arg0 + #f + global + 0)) (s5-0 (the-as int #f)) (s4-0 (the-as int #f)) - (s3-0 (the-as int #f)) - ) + (s3-0 (the-as int #f))) (when s2-0 (dotimes (s1-0 (-> s2-0 length)) (cond ((and (not s4-0) (= (-> s2-0 data s1-0 type) merc-ctrl) - (or (zero? (length viewer-geo-name)) (string= (art-part-name (-> s2-0 data s1-0 name)) viewer-geo-name)) - ) - (set! s4-0 s1-0) - ) - ((= (-> s2-0 data s1-0 type) art-joint-geo) - (set! s3-0 s1-0) - ) + (or (zero? (length viewer-geo-name)) (string= (art-part-name (-> s2-0 data s1-0 name)) viewer-geo-name))) + (set! s4-0 s1-0)) + ((= (-> s2-0 data s1-0 type) art-joint-geo) (set! s3-0 s1-0)) ((and (= (-> s2-0 data s1-0 type) art-joint-anim) - (or (zero? (length viewer-ja-name)) (string= (art-part-name (-> s2-0 data s1-0 name)) viewer-ja-name)) - ) - (set! s5-0 s1-0) - ) - ) - (if (and s4-0 s3-0 s5-0) - (goto cfg-34) - ) - ) - ) + (or (zero? (length viewer-ja-name)) (string= (art-part-name (-> s2-0 data s1-0 name)) viewer-ja-name))) + (set! s5-0 s1-0))) + (if (and s4-0 s3-0 s5-0) (goto cfg-34)))) (label cfg-34) (cond ((and s4-0 s3-0 s5-0) @@ -162,17 +107,10 @@ (set! (-> a1-3 jgeo) s3-0) (set! (-> a1-3 janim) s5-0) (set! (-> a1-3 mgeo 0) s4-0) - (initialize-skeleton self a1-3 '()) - ) + (initialize-skeleton self a1-3 '())) (set! (-> self align) (new 'process 'align-control self)) - (go viewer-process) - ) - (else - (go process-drawable-art-error arg0) - ) - ) - ) - ) + (go viewer-process)) + (else (go process-drawable-art-error arg0))))) (defmethod init-from-entity! ((this viewer) (arg0 entity-actor)) (set! *viewer* this) @@ -181,13 +119,8 @@ (actor-get-arg! viewer-ja-name "ja" (res-lump-struct arg0 'name string)) (actor-get-arg! viewer-geo-name "geo" (res-lump-struct arg0 'name string)) (let ((gp-1 (-> arg0 etype))) - (if (valid? gp-1 type #f #f 0) - (init-viewer (symbol->string (-> gp-1 symbol))) - (go process-drawable-art-error "unknown") - ) - ) - (none) - ) + (if (valid? gp-1 type #f #f 0) (init-viewer (symbol->string (-> gp-1 symbol))) (go process-drawable-art-error "unknown"))) + (none)) (defbehavior init-viewer-for-other viewer ((arg0 string) (arg1 vector)) (set! *viewer* self) @@ -198,8 +131,7 @@ (actor-get-arg! viewer-ja-name "ja" arg0) (actor-get-arg! viewer-geo-name "geo" arg0) (init-viewer arg0) - (none) - ) + (none)) (defun add-a-bunch ((arg0 string) (arg1 int) (arg2 int) (arg3 float)) (local-vars (sv-32 process)) @@ -212,22 +144,12 @@ (set! sv-32 (get-process *default-dead-pool* viewer #x4000)) (when sv-32 (let ((t9-2 (method-of-type viewer activate))) - (t9-2 (the-as viewer sv-32) *entity-pool* 'viewer (the-as pointer #x70004000)) - ) + (t9-2 (the-as viewer sv-32) *entity-pool* 'viewer (the-as pointer #x70004000))) (run-now-in-process sv-32 init-viewer-for-other arg0 s0-0) - (-> sv-32 ppointer) - ) - ) - ) - ) - #f - ) + (-> sv-32 ppointer))))) + #f) (defun birth-viewer ((arg0 process) (arg1 entity-actor)) (set! (-> arg0 type) viewer) - (let ((t9-0 init-entity)) - viewer - (t9-0 arg0 arg1) - ) - #t - ) + (let ((t9-0 init-entity)) viewer (t9-0 arg0 arg1)) + #t) diff --git a/goal_src/jak1/engine/dma/dma-bucket.gc b/goal_src/jak1/engine/dma/dma-bucket.gc index 3514474f6d..7311ccb7e3 100644 --- a/goal_src/jak1/engine/dma/dma-bucket.gc +++ b/goal_src/jak1/engine/dma/dma-bucket.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/dma/dma-buffer.gc") -;; name: dma-bucket.gc -;; name in dgo: dma-bucket -;; dgos: GAME, ENGINE - ;; A dma-bucket is used to organize dma data. ;; When an object is drawn, it may add data to multiple buckets. ;; When the dma data is transferred, it is transferred bucket by bucket. @@ -37,29 +32,21 @@ "Add count buckets. Each bucket is initialized as empty and won't transfer anything." (let* ((initial-bucket (the-as dma-bucket (-> dma-buf base))) (current-bucket initial-bucket)) - - ;;(let ((current-bucket (the-as dma-bucket (-> dma-buf base)))) + ;;(let ((current-bucket (the-as dma-bucket (-> dma-buf base)))) (dotimes (i count) ;; set the DMA tag to next, with a qwc of zero. ;; the address is set to the next bucket. ;; By default, this will do no transfer and just move on in the dma-buf. ;; Data will be added to the bucket later. (set! (-> current-bucket tag) - (new 'static 'dma-tag - :id (dma-tag-id next) - :addr (the-as int (&+ (the-as pointer current-bucket) 16)) - ) - ) + (new 'static 'dma-tag :id (dma-tag-id next) :addr (the-as int (&+ (the-as pointer current-bucket) 16)))) ;; Set the last pointer to point to this tag (this lives in the 8 byte gap) (set! (-> current-bucket last) (the-as (pointer dma-tag) current-bucket)) ;; Advance to next bucket. - (&+! current-bucket 16) - ) + (&+! current-bucket 16)) ;; update base ptr of dma-buffer to point after the buckets. (set! (-> dma-buf base) (the-as pointer current-bucket)) - (the (inline-array dma-bucket) initial-bucket) - ) - ) + (the (inline-array dma-bucket) initial-bucket))) (defun dma-buffer-patch-buckets ((bucket (inline-array dma-bucket)) (count int)) "After adding all data to buckets, call this to stitch together the chains for @@ -71,11 +58,8 @@ ;; clear last pointer. (set! (-> bucket 0 last) (the-as (pointer dma-tag) 0)) ;; next bucket - (set! bucket (the-as (inline-array dma-bucket) (-> bucket 1))) - ) - ) - bucket - ) + (set! bucket (the-as (inline-array dma-bucket) (-> bucket 1))))) + bucket) (defun dma-bucket-insert-tag ((base (inline-array dma-bucket)) (idx bucket-id) (tag-start pointer) (tag-end (pointer dma-tag))) "Add a DMA chain to the bucket" @@ -85,8 +69,5 @@ ;; this is abusing the dma-bucket type to set the "addr" field of the dma-tag. (set! (-> (the-as dma-bucket (-> bucket last)) next) (the-as uint tag-start)) ;; remember this as the last tag in the bucket. - (set! (-> bucket last) tag-end) - ) - tag-start - ) - + (set! (-> bucket last) tag-end)) + tag-start) diff --git a/goal_src/jak1/engine/dma/dma-buffer.gc b/goal_src/jak1/engine/dma/dma-buffer.gc index aa68769c11..0b3af410fe 100644 --- a/goal_src/jak1/engine/dma/dma-buffer.gc +++ b/goal_src/jak1/engine/dma/dma-buffer.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/dma/dma.gc") -;; name: dma-buffer.gc -;; name in dgo: dma-buffer -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; DMA buffers store data to be sent over DMA. @@ -29,53 +24,42 @@ ;; the dma transfer has tte set. ;; note that the second vifcode can also hold other stuff depending on the mode. - ;; A dma-tag plus two vif-tags in a single quadword. ;; Most DMA stuff goes directly to the VIF, so this is the ;; most common. (deftype dma-packet (structure) - ((dma dma-tag) - (vif0 vif-tag) - (vif1 vif-tag) - (quad uint128 :overlay-at dma) - ) - ) + ((dma dma-tag) + (vif0 vif-tag) + (vif1 vif-tag) + (quad uint128 :overlay-at dma))) ;; seems to be unused? Also, it seems to be broken. Do not use this. -(deftype dma-packet-array (inline-array-class) - () - ) - +(deftype dma-packet-array (inline-array-class) ()) (set! (-> dma-packet-array heap-base) (the-as uint 16)) ;; For doing a dma -> vif -> gif (path 2) transfer. (deftype dma-gif-packet (structure) - ((dma-vif dma-packet :inline) - (gif uint64 2) + ((dma-vif dma-packet :inline) + (gif uint64 2) ;; these two were added to make it easier. - (gif0 uint64 :overlay-at (-> gif 0)) - (gif1 uint64 :overlay-at (-> gif 1)) - (quad uint128 2 :overlay-at (-> dma-vif dma)) - ) - ) + (gif0 uint64 :overlay-at (-> gif 0)) + (gif1 uint64 :overlay-at (-> gif 1)) + (quad uint128 2 :overlay-at (-> dma-vif dma)))) ;; dma-buffer is a dynamically sized container for storing DMA data. ;; It seems like this was not actually implemented as a proper dynamic type. ;; I added a data-buffer field that overlaps with data to get at the array of ;; bytes more easily. (deftype dma-buffer (basic) - ((allocated-length int32) ;; number of bytes. - (base pointer) ;; first unused memory. - (end pointer) ;; ?? unused ?? - (data uint64 1) ;; start of memory. - (data-buffer uint8 :dynamic :overlay-at (-> data 0)) ;; the actual dynamic array backing it. + ((allocated-length int32) ;; number of bytes. + (base pointer) ;; first unused memory. + (end pointer) ;; ?? unused ?? + (data uint64 1) ;; start of memory. + (data-buffer uint8 :dynamic :overlay-at (-> data 0)) ;; the actual dynamic array backing it. ) (:methods - (new (symbol type int) _type_) - ) - ) - + (new (symbol type int) _type_))) (defmethod new dma-buffer ((allocation symbol) (type-to-make type) (arg0 int)) "Create a new dma-buffer with enough room to store arg0 bytes. @@ -83,148 +67,98 @@ (let ((v0-0 (object-new allocation type-to-make (+ arg0 -4 (-> type-to-make size))))) (set! (-> v0-0 base) (-> v0-0 data)) (set! (-> v0-0 allocated-length) arg0) - v0-0 - ) - ) + v0-0)) (defun dma-buffer-inplace-new ((arg0 dma-buffer) (arg1 int)) "Create a dma-buffer in-place. Does not set the type of the dma-buffer object." (set! (-> arg0 base) (-> arg0 data)) (set! (-> arg0 allocated-length) arg1) - arg0 - ) + arg0) (defmethod length ((this dma-buffer)) "Get the amount of data the buffer can hold, in bytes." - (-> this allocated-length) - ) + (-> this allocated-length)) (defmethod asize-of ((this dma-buffer)) "Get the size in memory of the object" - (+ (-> this allocated-length) -4 (-> dma-buffer size)) - ) + (+ (-> this allocated-length) -4 (-> dma-buffer size))) (defun dma-buffer-length ((arg0 dma-buffer)) "Get length used in quadwords, rounded down" - (shr (+ (&- (-> arg0 base) (the-as uint (-> arg0 data))) 15) 4) - ) + (shr (+ (&- (-> arg0 base) (the-as uint (-> arg0 data))) 15) 4)) (defun dma-buffer-free ((arg0 dma-buffer)) "Get the number of free quadwords, rounded down, between base and end pointers." - (shr (+ (&- (-> arg0 end) (the-as uint (-> arg0 base))) 15) 4) - ) + (shr (+ (&- (-> arg0 end) (the-as uint (-> arg0 base))) 15) 4)) (defmacro dma-buffer-add-base-type (buf pkt dma-type &rest body) "Base macro for adding stuff to a dma-buffer. Don't use this directly!" - (with-gensyms (dma-buf) `(let* ((,dma-buf ,buf) - (,pkt (the-as ,dma-type (-> ,dma-buf base)))) - - ,@body - - (set! (-> ,dma-buf base) (&+ (the-as pointer ,pkt) (size-of ,dma-type))) - - ) - ) - ) + (,pkt (the-as ,dma-type (-> ,dma-buf base)))) + ,@body + (set! (-> ,dma-buf base) (&+ (the-as pointer ,pkt) (size-of ,dma-type)))))) (defmacro dma-buffer-add-base-data (buf data-type forms) "Base macro for adding data words to a dma-buffer. Each form in forms is converted into data-type and added to the buffer. NO TYPE CHECKING is performed, so be careful!" - (with-gensyms (dma-buf ptr) `(let* ((,dma-buf ,buf) - (,ptr (the-as (pointer ,data-type) (-> ,dma-buf base)))) - - ,@(apply-i (lambda (x i) `(set! (-> ,ptr ,i) (the-as ,data-type ,x))) forms) - - (set! (-> ,dma-buf base) (&+ (the-as pointer ,ptr) (* ,(length forms) (size-of ,data-type)))) - - ) - ) - ) + (,ptr (the-as (pointer ,data-type) (-> ,dma-buf base)))) + ,@(apply-i (lambda (x i) `(set! (-> ,ptr ,i) (the-as ,data-type ,x))) forms) + (set! (-> ,dma-buf base) (&+ (the-as pointer ,ptr) (* ,(length forms) (size-of ,data-type))))))) (defmacro dma-buffer-add-cnt-vif2 (buf qwc vif0 vif1) "Add a dma-packet to a dma-buffer. The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data after the tag and continue from after that point) and includes two vif-tags for vifcode, or something else if needed." - (with-gensyms (pkt) - `(dma-buffer-add-base-type ,buf ,pkt dma-packet - - (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,qwc)) - - (set! (-> ,pkt vif0) ,vif0) - (set! (-> ,pkt vif1) ,vif1) - - ) - ) - ) + `(dma-buffer-add-base-type ,buf + ,pkt + dma-packet + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,qwc)) + (set! (-> ,pkt vif0) ,vif0) + (set! (-> ,pkt vif1) ,vif1)))) (defmacro dma-buffer-add-ref-vif2 (buf qwc addr vif0 vif1) "Add a dma-packet to a dma-buffer. The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data at addr and continue from after the tag) and includes two vif-tags for vifcode, or something else if needed." - (with-gensyms (pkt) - `(dma-buffer-add-base-type ,buf ,pkt dma-packet - - (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc ,qwc :addr (the-as int ,addr))) - - (set! (-> ,pkt vif0) ,vif0) - (set! (-> ,pkt vif1) ,vif1) - - ) - ) - ) + `(dma-buffer-add-base-type ,buf + ,pkt + dma-packet + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc ,qwc :addr (the-as int ,addr))) + (set! (-> ,pkt vif0) ,vif0) + (set! (-> ,pkt vif1) ,vif1)))) (defmacro dma-buffer-add-ret (buf) "Add a dma-packet to a dma-buffer. This packet simply does a DMA 'return' " - (with-gensyms (pkt) - `(dma-buffer-add-base-type ,buf ,pkt dma-packet - - (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ret) :qwc 0)) - - (set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop))) - (set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop))) - - ) - ) - ) + `(dma-buffer-add-base-type ,buf + ,pkt + dma-packet + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ret) :qwc 0)) + (set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop))) + (set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop)))))) (defmacro dma-buffer-add-gif-tag (buf giftag gifregs) "Add a giftag to a dma-buffer." - (with-gensyms (pkt) - `(dma-buffer-add-base-type ,buf ,pkt gs-gif-tag - - (set! (-> ,pkt tag) ,giftag) - - (set! (-> ,pkt regs) ,gifregs) - - ) - ) - ) + `(dma-buffer-add-base-type ,buf ,pkt gs-gif-tag (set! (-> ,pkt tag) ,giftag) (set! (-> ,pkt regs) ,gifregs)))) (defmacro dma-buffer-add-uint64 (buf &rest body) "Add 64-bit words to a dma-buffer. See dma-buffer-add-base-data" - - `(dma-buffer-add-base-data ,buf uint64 ,body) - ) + `(dma-buffer-add-base-data ,buf uint64 ,body)) (defmacro dma-buffer-add-uint128 (buf &rest body) "Add 128-bit words to a dma-buffer. See dma-buffer-add-base-data" - - `(dma-buffer-add-base-data ,buf uint128 ,body) - ) + `(dma-buffer-add-base-data ,buf uint128 ,body)) (defun dma-buffer-add-vu-function ((dma-buf dma-buffer) (vu-func vu-function) (flush-path-3 int)) "Add DMA tags to load the given VU function. The destination in vu instruction memory is specific inside the vu-function. This does NOT copy the vu-function into the buffer, but creates a reference to the existing VU function." - ;; The first 4 bytes of a vu-function object's data are discarded because they aren't aligned. (let ((func-ptr (the-as pointer (&-> vu-func data 4))) (qlen (-> vu-func qlength)) ;; number of quadwords @@ -236,60 +170,44 @@ (let ((qwc-now (min 127 qlen))) ;; Set up DMA to transfer the data from the vu-function ;; ref id = reference to data outside of the buffer. - (dma-buffer-add-ref-vif2 dma-buf qwc-now func-ptr - ;; Set up first vifcode as a flush. - (new 'static 'vif-tag :cmd (if (zero? flush-path-3) (vif-cmd flushe) (vif-cmd flusha))) - ;; next vifcode, transfer microprogram. This is in 64-bit units (VU instructions) - (new 'static 'vif-tag :cmd (vif-cmd mpg) :num (shl qwc-now 1) :imm origin) - ) + (dma-buffer-add-ref-vif2 dma-buf + qwc-now + func-ptr + ;; Set up first vifcode as a flush. + (new 'static 'vif-tag :cmd (if (zero? flush-path-3) (vif-cmd flushe) (vif-cmd flusha))) + ;; next vifcode, transfer microprogram. This is in 64-bit units (VU instructions) + (new 'static 'vif-tag :cmd (vif-cmd mpg) :num (shl qwc-now 1) :imm origin)) ;; increment by qwc-now quadwords. (&+! func-ptr (* qwc-now 16)) (set! qlen (- qlen qwc-now)) - (+! origin (* qwc-now 2)) - ) - ) - ) - #f - ) - + (+! origin (* qwc-now 2))))) + #f) (defun dma-buffer-send ((chan dma-bank) (buf dma-buffer)) "Send the DMA buffer! DOES NOT TRANSFER TAG, you probably want dma-buffer-send-chain instead." (when (< (-> buf allocated-length) (&- (-> buf base) (-> buf data))) ;; oops. we overflowed the DMA buffer. die. - (segfault) - ) - (dma-send chan (the-as uint (-> buf data)) (the-as uint (dma-buffer-length buf))) - ) + (segfault)) + (dma-send chan (the-as uint (-> buf data)) (the-as uint (dma-buffer-length buf)))) (defun dma-buffer-send-chain ((chan dma-bank-source) (buf dma-buffer)) "Send the DMA buffer! Sends the tags" (when (< (-> buf allocated-length) (&- (-> buf base) (-> buf data))) ;; oops. we overflowed the DMA buffer. die. - (segfault) - ) - (dma-send-chain chan (the-as uint (-> buf data))) - ) + (segfault)) + (dma-send-chain chan (the-as uint (-> buf data)))) (defmacro with-cnt-vif-block (bindings &rest body) "Start a cnt w/ vif direct to gif dma packet setup for the dma-buffer in bindings. With this, you can transfer data through PATH2 without having to setup the tag yourself. The qwc of the transfer is determined at runtime at the end of this block." - (let ((buf (first bindings))) - - (with-gensyms (buf-start buf-qwc) - `(let ((,buf-start (-> ,buf base))) - + (with-gensyms (buf-start buf-qwc) + `(let ((,buf-start (-> ,buf base))) ;; setup the dmatag for PATH2 transfer, qwc is 0 (patched later) - (dma-buffer-add-cnt-vif2 ,buf 0 - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd direct)) - ) - + (dma-buffer-add-cnt-vif2 ,buf 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd direct))) ;; things with this buffer! ,@body - ;; patch qwc! just do the difference between the current ptr and the old one and turn it into qwords. ;; we take one qword out because it's the initial dmatag which isnt part of the count. ;; this rounds *down*, so make sure to fill the buffer in 128-bit boundaries. @@ -299,96 +217,55 @@ ;; patch the DMA tag (logior! (-> (the-as (pointer dma-tag) ,buf-start) 0) (the-as uint (new 'static 'dma-tag :qwc ,buf-qwc))) ;; patch the 2nd vifcode's imm field (qwc) - (logior! (-> (the-as (pointer dma-tag) ,buf-start) 1) (the-as uint (shl (shr (shl ,buf-qwc 48) 48) 32))) - ) + (logior! (-> (the-as (pointer dma-tag) ,buf-start) 1) (the-as uint (shl (shr (shl ,buf-qwc 48) 48) 32)))) (else ;; nothing was added to the buffer. delete the dmatag, you cannot transfer 0 qwords. - (set! (-> ,buf base) ,buf-start) - ) - ) - ) - ) - - )) - ) + (set! (-> ,buf base) ,buf-start)))))))) (defmacro with-cnt-vif-block-qwc (bindings &rest body) "Start a cnt w/ vif direct to gif dma packet setup for the dma-buffer in bindings. With this, you can transfer data through PATH2 without having to setup the tag yourself. The qwc of the transfer is determined at runtime at the end of this block. WARNING: You MUST guarantee that the resulting qwc is NOT zero!" - (let ((buf (first bindings))) - - (with-gensyms (buf-start buf-qwc) - `(let ((,buf-start (the-as dma-packet (-> ,buf base)))) + (with-gensyms (buf-start buf-qwc) + `(let ((,buf-start (the-as dma-packet (-> ,buf base)))) ;; dmatag will be added at the end so we reserve (&+! (-> ,buf base) 16) - ;; setup the dmatag for PATH2 transfer, qwc is 0 (patched later) - (dma-buffer-add-cnt-vif2 ,buf 0 - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd direct)) - ) - + (dma-buffer-add-cnt-vif2 ,buf 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd direct))) ;; things with this buffer! ,@body - ;; we make the dmatag now! its at the start. (let ((,buf-qwc (/ (+ (- -16 (the-as int ,buf-start)) (the-as int (-> ,buf base))) 16))) (set! (-> ,buf-start dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,buf-qwc)) (set! (-> ,buf-start vif0) (new 'static 'vif-tag)) - (set! (-> ,buf-start vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm ,buf-qwc)) - ) - ) - - )) - ) + (set! (-> ,buf-start vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm ,buf-qwc))))))) (defmacro with-dma-bucket (bindings &rest body) "Start a new dma-bucket in body that will be finished at the end. The bindings are the dma-buffer, dma-bucket and bucket-id respectively." - (let ((buf (first bindings)) (bucket (second bindings)) - (bucket-id (third bindings)) - ) - - (with-gensyms (buf-start bucket-edge pkt) - `(let ((,buf-start (-> ,buf base))) - - ,@body - - ;; we end the chain with a next. The bucket system will patch the next chain to this, - ;; and then patch all the buckets togehter before sending the DMA. - (let ((,bucket-edge (the (pointer dma-tag) (-> ,buf base)))) - (let ((,pkt (the-as dma-packet (-> ,buf base)))) - - (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop))) - (set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop))) - - (set! (-> ,buf base) (&+ (the-as pointer ,pkt) (size-of dma-packet))) - - ) - (dma-bucket-insert-tag ,bucket ,bucket-id - ,buf-start ;; the first thing in this chain, bucket will patch previous to this - ,bucket-edge ;; end of this chain (ptr to next tag) - ) - ) - ) - ) - - ) - ) + (bucket-id (third bindings))) + (with-gensyms (buf-start bucket-edge pkt) + `(let ((,buf-start (-> ,buf base))) + ,@body + ;; we end the chain with a next. The bucket system will patch the next chain to this, + ;; and then patch all the buckets togehter before sending the DMA. + (let ((,bucket-edge (the (pointer dma-tag) (-> ,buf base)))) + (let ((,pkt (the-as dma-packet (-> ,buf base)))) + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop))) + (set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop))) + (set! (-> ,buf base) (&+ (the-as pointer ,pkt) (size-of dma-packet)))) + (dma-bucket-insert-tag ,bucket + ,bucket-id + ,buf-start ;; the first thing in this chain, bucket will patch previous to this + ,bucket-edge ;; end of this chain (ptr to next tag) + )))))) (defmacro with-dma-buffer-add-bucket (bindings &key (bucket-group (-> (current-frame) bucket-group)) &rest body) "Bind a dma-buffer to a variable and use it on a block to allow adding things to a new bucket. usage: (with-dma-buffer-add-bucket ((buffer-name buffer) bucket-id) &rest body) example: (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) ...)" - - `(let ((,(caar bindings) ,(cadar bindings))) - (with-dma-bucket (,(caar bindings) ,bucket-group ,(cadr bindings)) - ,@body - ) - ) - ) + `(let ((,(caar bindings) ,(cadar bindings))) (with-dma-bucket (,(caar bindings) ,bucket-group ,(cadr bindings)) ,@body))) diff --git a/goal_src/jak1/engine/dma/dma-disasm.gc b/goal_src/jak1/engine/dma/dma-disasm.gc index 50745b03dc..db36cb2e70 100644 --- a/goal_src/jak1/engine/dma/dma-disasm.gc +++ b/goal_src/jak1/engine/dma/dma-disasm.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/dma/dma-buffer.gc") -;; name: dma-disasm.gc -;; name in dgo: dma-disasm -;; dgos: GAME, ENGINE - ;; Debug tool to print out a DMA list. ;; DECOMP BEGINS @@ -16,168 +11,130 @@ (declare-file (debug)) (deftype vif-disasm-element (structure) - ((mask uint32) - (tag vif-cmd-32) - (val uint32) - (print uint32) - (string1 string) - (string2 string) - ) - ) + ((mask uint32) + (tag vif-cmd-32) + (val uint32) + (print uint32) + (string1 string) + (string2 string))) (define *vif-disasm-table* - (new 'static 'boxed-array :type vif-disasm-element :length 34 - (new 'static 'vif-disasm-element :mask #x7f :string1 "nop") - (new 'static 'vif-disasm-element :mask #x7f :tag #x1 :print #x2 :string1 "stcycl") - (new 'static 'vif-disasm-element :mask #x7f :tag #x2 :print #x1 :string1 "offset" :string2 "offset") - (new 'static 'vif-disasm-element :mask #x7f :tag #x3 :print #x1 :string1 "base" :string2 "base") - (new 'static 'vif-disasm-element :mask #x7f :tag #x4 :print #x1 :string1 "itop" :string2 "addr") - (new 'static 'vif-disasm-element :mask #x7f :tag #x5 :print #x1 :string1 "stmod" :string2 "mode") - (new 'static 'vif-disasm-element :mask #x7f :tag #x6 :print #x1 :string1 "mskpath3" :string2 "mask") - (new 'static 'vif-disasm-element :mask #x7f :tag #x7 :print #x1 :string1 "mark" :string2 "mark") - (new 'static 'vif-disasm-element :mask #x7f :tag #x10 :string1 "flushe") - (new 'static 'vif-disasm-element :mask #x7f :tag #x11 :string1 "flush") - (new 'static 'vif-disasm-element :mask #x7f :tag #x13 :string1 "flusha") - (new 'static 'vif-disasm-element :mask #x7f :tag #x14 :print #x1 :string1 "mscal" :string2 "addr") - (new 'static 'vif-disasm-element :mask #x7f :tag #x17 :string1 "mscnt") - (new 'static 'vif-disasm-element :mask #x7f :tag #x15 :print #x1 :string1 "mscalf" :string2 "addr") - (new 'static 'vif-disasm-element :mask #x7f :tag #x20 :print #x3 :string1 "stmask" :string2 "mask") - (new 'static 'vif-disasm-element :mask #x7f :tag #x30 :print #x4 :string1 "strow" :string2 "row") - (new 'static 'vif-disasm-element :mask #x7f :tag #x31 :print #x4 :string1 "stcol" :string2 "col") - (new 'static 'vif-disasm-element :mask #x7f :tag #x4a :print #x5 :string1 "mpg") - (new 'static 'vif-disasm-element :mask #x7f :tag #x50 :print #x6 :string1 "direct") - (new 'static 'vif-disasm-element :mask #x7f :tag #x51 :print #x6 :string1 "directhl") - (new 'static 'vif-disasm-element :mask #x6f :tag #x60 :val #x10 :print #x7 :string1 "unpack-s-32") - (new 'static 'vif-disasm-element :mask #x6f :tag #x61 :val #x8 :print #x7 :string1 "unpack-s-16") - (new 'static 'vif-disasm-element :mask #x6f :tag #x62 :val #x4 :print #x7 :string1 "unpack-s-8") - (new 'static 'vif-disasm-element :mask #x6f :tag #x64 :val #x8 :print #x7 :string1 "unpack-v2-32") - (new 'static 'vif-disasm-element :mask #x6f :tag #x65 :val #x4 :print #x7 :string1 "unpack-v2-16") - (new 'static 'vif-disasm-element :mask #x6f :tag #x66 :val #x2 :print #x7 :string1 "unpack-v2-8") - (new 'static 'vif-disasm-element :mask #x6f :tag #x68 :val #xc :print #x7 :string1 "unpack-v3-32") - (new 'static 'vif-disasm-element :mask #x6f :tag #x69 :val #x6 :print #x7 :string1 "unpack-v3-16") - (new 'static 'vif-disasm-element :mask #x6f :tag #x6a :val #x3 :print #x7 :string1 "unpack-v3-8") - (new 'static 'vif-disasm-element :mask #x6f :tag #x6c :val #x10 :print #x7 :string1 "unpack-v4-32") - (new 'static 'vif-disasm-element :mask #x6f :tag #x6d :val #x8 :print #x7 :string1 "unpack-v4-16") - (new 'static 'vif-disasm-element :mask #x6f :tag #x6e :val #x4 :print #x7 :string1 "unpack-v4-8") - (new 'static 'vif-disasm-element :mask #x6f :tag #x6f :val #x2 :print #x7 :string1 "unpack-v4-5") - (new 'static 'vif-disasm-element :print #x8))) - - + (new 'static + 'boxed-array + :type + vif-disasm-element + :length 34 + (new 'static 'vif-disasm-element :mask #x7f :string1 "nop") + (new 'static 'vif-disasm-element :mask #x7f :tag #x1 :print #x2 :string1 "stcycl") + (new 'static 'vif-disasm-element :mask #x7f :tag #x2 :print #x1 :string1 "offset" :string2 "offset") + (new 'static 'vif-disasm-element :mask #x7f :tag #x3 :print #x1 :string1 "base" :string2 "base") + (new 'static 'vif-disasm-element :mask #x7f :tag #x4 :print #x1 :string1 "itop" :string2 "addr") + (new 'static 'vif-disasm-element :mask #x7f :tag #x5 :print #x1 :string1 "stmod" :string2 "mode") + (new 'static 'vif-disasm-element :mask #x7f :tag #x6 :print #x1 :string1 "mskpath3" :string2 "mask") + (new 'static 'vif-disasm-element :mask #x7f :tag #x7 :print #x1 :string1 "mark" :string2 "mark") + (new 'static 'vif-disasm-element :mask #x7f :tag #x10 :string1 "flushe") + (new 'static 'vif-disasm-element :mask #x7f :tag #x11 :string1 "flush") + (new 'static 'vif-disasm-element :mask #x7f :tag #x13 :string1 "flusha") + (new 'static 'vif-disasm-element :mask #x7f :tag #x14 :print #x1 :string1 "mscal" :string2 "addr") + (new 'static 'vif-disasm-element :mask #x7f :tag #x17 :string1 "mscnt") + (new 'static 'vif-disasm-element :mask #x7f :tag #x15 :print #x1 :string1 "mscalf" :string2 "addr") + (new 'static 'vif-disasm-element :mask #x7f :tag #x20 :print #x3 :string1 "stmask" :string2 "mask") + (new 'static 'vif-disasm-element :mask #x7f :tag #x30 :print #x4 :string1 "strow" :string2 "row") + (new 'static 'vif-disasm-element :mask #x7f :tag #x31 :print #x4 :string1 "stcol" :string2 "col") + (new 'static 'vif-disasm-element :mask #x7f :tag #x4a :print #x5 :string1 "mpg") + (new 'static 'vif-disasm-element :mask #x7f :tag #x50 :print #x6 :string1 "direct") + (new 'static 'vif-disasm-element :mask #x7f :tag #x51 :print #x6 :string1 "directhl") + (new 'static 'vif-disasm-element :mask #x6f :tag #x60 :val #x10 :print #x7 :string1 "unpack-s-32") + (new 'static 'vif-disasm-element :mask #x6f :tag #x61 :val #x8 :print #x7 :string1 "unpack-s-16") + (new 'static 'vif-disasm-element :mask #x6f :tag #x62 :val #x4 :print #x7 :string1 "unpack-s-8") + (new 'static 'vif-disasm-element :mask #x6f :tag #x64 :val #x8 :print #x7 :string1 "unpack-v2-32") + (new 'static 'vif-disasm-element :mask #x6f :tag #x65 :val #x4 :print #x7 :string1 "unpack-v2-16") + (new 'static 'vif-disasm-element :mask #x6f :tag #x66 :val #x2 :print #x7 :string1 "unpack-v2-8") + (new 'static 'vif-disasm-element :mask #x6f :tag #x68 :val #xc :print #x7 :string1 "unpack-v3-32") + (new 'static 'vif-disasm-element :mask #x6f :tag #x69 :val #x6 :print #x7 :string1 "unpack-v3-16") + (new 'static 'vif-disasm-element :mask #x6f :tag #x6a :val #x3 :print #x7 :string1 "unpack-v3-8") + (new 'static 'vif-disasm-element :mask #x6f :tag #x6c :val #x10 :print #x7 :string1 "unpack-v4-32") + (new 'static 'vif-disasm-element :mask #x6f :tag #x6d :val #x8 :print #x7 :string1 "unpack-v4-16") + (new 'static 'vif-disasm-element :mask #x6f :tag #x6e :val #x4 :print #x7 :string1 "unpack-v4-8") + (new 'static 'vif-disasm-element :mask #x6f :tag #x6f :val #x2 :print #x7 :string1 "unpack-v4-5") + (new 'static 'vif-disasm-element :print #x8))) (defun disasm-vif-details ((stream symbol) (data (pointer uint8)) (kind vif-cmd) (count int)) (cond ((= kind (vif-cmd unpack-v4-8)) (let ((data-ptr (&-> data 4))) (dotimes (i count) - (format stream " #x~X: #x~2X #x~2X #x~2X #x~2X~%" + (format stream + " #x~X: #x~2X #x~2X #x~2X #x~2X~%" (+ (+ (shl i 2) 4) (the-as int data)) (-> data-ptr (shl i 2)) (-> data-ptr (+ (shl i 2) 1)) (-> data-ptr (+ (shl i 2) 2)) - (-> data-ptr (+ (shl i 2) 3)) - ) - ) - ) - ) + (-> data-ptr (+ (shl i 2) 3)))))) ((= kind (vif-cmd unpack-s-8)) (let ((s3-1 (&-> data 4))) (dotimes (s2-1 count) ;; this is messed up and I think somebody put a parenthesis in ;; the wrong spot. I believe the format below only has one ;; format argument but should have 2. - (format stream " #x~X: #x~2x~%" - (+ (+ s2-1 4) (the-as int data)) - count - ) + (format stream " #x~X: #x~2x~%" (+ (+ s2-1 4) (the-as int data)) count) ;; the actual assembly is very strange here. - (let ((v1-21 (-> s3-1 (* 3 s2-1)))) - ) - (let ((v1-26 (-> s3-1 (+ (* 3 s2-1) 1)))) - ) - ) - ) - ) + (let ((v1-21 (-> s3-1 (* 3 s2-1))))) + (let ((v1-26 (-> s3-1 (+ (* 3 s2-1) 1)))))))) ((= kind (vif-cmd unpack-v4-32)) (let ((s3-2 (the-as (pointer uint32) (&-> data 4)))) (dotimes (s2-2 count) - (format stream " #x~X: #x~8x #x~8x #x~8x #x~8x~%" - (+ (+ (shl s2-2 4) 4) (the-as int data)) - (-> s3-2 (shl s2-2 2)) - (-> s3-2 (+ (shl s2-2 2) 1)) - (-> s3-2 (+ (shl s2-2 2) 2)) - (-> s3-2 (+ (shl s2-2 2) 3)) - ) - ) - ) - ) + (format stream + " #x~X: #x~8x #x~8x #x~8x #x~8x~%" + (+ (+ (shl s2-2 4) 4) (the-as int data)) + (-> s3-2 (shl s2-2 2)) + (-> s3-2 (+ (shl s2-2 2) 1)) + (-> s3-2 (+ (shl s2-2 2) 2)) + (-> s3-2 (+ (shl s2-2 2) 3)))))) ((= kind (vif-cmd unpack-v4-16)) (let ((s3-3 (the-as (pointer uint16) (&-> data 4)))) (dotimes (s2-3 count) - (format stream " #x~X: #x~4x #x~4x #x~4x #x~4x~%" - (+ (+ (shl s2-3 3) 4) (the-as int data)) - (-> s3-3 (shl s2-3 2)) - (-> s3-3 (+ (shl s2-3 2) 1)) - (-> s3-3 (+ (shl s2-3 2) 2)) - (-> s3-3 (+ (shl s2-3 2) 3)) - ) - ) - ) - ) + (format stream + " #x~X: #x~4x #x~4x #x~4x #x~4x~%" + (+ (+ (shl s2-3 3) 4) (the-as int data)) + (-> s3-3 (shl s2-3 2)) + (-> s3-3 (+ (shl s2-3 2) 1)) + (-> s3-3 (+ (shl s2-3 2) 2)) + (-> s3-3 (+ (shl s2-3 2) 3)))))) ((= kind (vif-cmd unpack-v3-32)) (let ((s3-4 (the-as (pointer uint32) (&-> data 4)))) (dotimes (s2-4 count) - (format stream " #x~X: #x~8x #x~8x #x~8x~%" - (+ (+ (* 12 s2-4) 4) (the-as int data)) - (-> (&+ s3-4 (* 12 s2-4)) 0) - (-> s3-4 (+ (* 3 s2-4) 1)) - (-> s3-4 (+ (* 3 s2-4) 2)) - ) - ) - ) - ) + (format stream + " #x~X: #x~8x #x~8x #x~8x~%" + (+ (+ (* 12 s2-4) 4) (the-as int data)) + (-> (&+ s3-4 (* 12 s2-4)) 0) + (-> s3-4 (+ (* 3 s2-4) 1)) + (-> s3-4 (+ (* 3 s2-4) 2)))))) ((= kind (vif-cmd unpack-v3-16)) (let ((s3-5 (the-as (pointer uint16) (&-> data 4)))) (dotimes (s2-5 count) - (format stream " #x~X: #x~4x #x~4x #x~4x~%" - (+ (+ (* 6 s2-5) 4) (the-as int data)) - (-> (&+ s3-5 (* 6 s2-5)) 0) - (-> s3-5 (+ (* 3 s2-5) 1)) - (-> s3-5 (+ (* 3 s2-5) 2)) - ) - ) - ) - ) + (format stream + " #x~X: #x~4x #x~4x #x~4x~%" + (+ (+ (* 6 s2-5) 4) (the-as int data)) + (-> (&+ s3-5 (* 6 s2-5)) 0) + (-> s3-5 (+ (* 3 s2-5) 1)) + (-> s3-5 (+ (* 3 s2-5) 2)))))) ((= kind (vif-cmd unpack-v2-16)) (let ((s3-6 (the-as (pointer uint16) (&-> data 4)))) (dotimes (s2-6 count) - (format stream " #x~X: #x~4x #x~4x~%" - (+ (+ (shl s2-6 2) 4) (the-as int data)) - (-> (&+ s3-6 (* 6 s2-6)) 0) - (-> s3-6 (+ (* 3 s2-6) 1)) - ) - ) - ) - ) - (else - (format stream " #x~X: Data format #b~b not yet supported, add it for yourself!~%" - (&-> data 4) - kind - ) - ) - ) - #f - ) + (format stream + " #x~X: #x~4x #x~4x~%" + (+ (+ (shl s2-6 2) 4) (the-as int data)) + (-> (&+ s3-6 (* 6 s2-6)) 0) + (-> s3-6 (+ (* 3 s2-6) 1)))))) + (else (format stream " #x~X: Data format #b~b not yet supported, add it for yourself!~%" (&-> data 4) kind))) + #f) (defun disasm-vif-tag ((data (pointer vif-tag)) (words int) (stream symbol) (details symbol)) "Print out a vif code and the immediate data. Will print stuff until the number of words has been reached. Returns how many bytes we overshot by." - (local-vars - (cmd vif-cmd) - (data-ptr (pointer vif-tag)) - (data-idx int) - (unpack-imm vif-unpack-imm) - ) + (local-vars (cmd vif-cmd) (data-ptr (pointer vif-tag)) (data-idx int) (unpack-imm vif-unpack-imm)) (let ((byte-idx 0)) (while (< byte-idx (shl words 2)) (let ((packet-size 4)) ;; default packet size is 32-bits. @@ -189,223 +146,149 @@ (set! cmd (-> first-tag cmd)) ;; check the command against the table's mask and tag (when (= (logand cmd (the-as uint (-> *vif-disasm-table* cmd-template-idx mask))) - (-> *vif-disasm-table* cmd-template-idx tag) - ) + (-> *vif-disasm-table* cmd-template-idx tag)) (let* ((print-kind (-> *vif-disasm-table* cmd-template-idx print)) (v0-1 (cond ((zero? print-kind) ;; just the name and irq bit. - (format stream " (~s :irq ~D)~%" - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - ) - ) + (format stream " (~s :irq ~D)~%" (-> *vif-disasm-table* cmd-template-idx string1) (-> first-tag irq))) ((= print-kind 1) ;; name and immediate register value. - (format stream " (~s :irq ~D :~s #x~X)~%" + (format stream + " (~s :irq ~D :~s #x~X)~%" (-> *vif-disasm-table* cmd-template-idx string1) (-> first-tag irq) (-> *vif-disasm-table* cmd-template-idx string2) - (-> first-tag imm) - ) - ) + (-> first-tag imm))) ((= print-kind 2) ;; name and stcycl immediate (let ((stcycl-imm (the-as vif-stcycl-imm (-> first-tag imm)))) - (format stream " (~s :irq ~D :wl ~D :cl ~D)~%" + (format stream + " (~s :irq ~D :wl ~D :cl ~D)~%" (-> *vif-disasm-table* cmd-template-idx string1) (-> first-tag irq) (-> stcycl-imm wl) - (-> stcycl-imm cl) - ) - ) - ) + (-> stcycl-imm cl)))) ((= print-kind 3) ;; name and a single word of extra data (set! packet-size 8) ;; 4 + 4 = 8 byte packet. - (format stream " (~s :irq ~D :~s #x~X)~%" + (format stream + " (~s :irq ~D :~s #x~X)~%" (-> *vif-disasm-table* cmd-template-idx string1) (-> first-tag irq) (-> *vif-disasm-table* cmd-template-idx string2) - (-> data 1) - ) - ) + (-> data 1))) ((= print-kind 4) ;; 4x 1 word extra data (set! packet-size 20) ;; 4 + 16 = 20 byte packet. - (format stream " (~s :irq ~D :~s " + (format stream + " (~s :irq ~D :~s " (-> *vif-disasm-table* cmd-template-idx string1) (-> first-tag irq) - (-> *vif-disasm-table* cmd-template-idx string2) - ) - (format stream "#x~X #x~X #x~X #x~X)~%" - (-> data 1) - (-> data 2) - (-> data 3) - (-> data 4) - ) - ) + (-> *vif-disasm-table* cmd-template-idx string2)) + (format stream "#x~X #x~X #x~X #x~X)~%" (-> data 1) (-> data 2) (-> data 3) (-> data 4))) ((= print-kind 5) - (format stream " (~s :irq ~D :instructions #x~D :addr #x~X)~%" + (format stream + " (~s :irq ~D :instructions #x~D :addr #x~X)~%" (-> *vif-disasm-table* cmd-template-idx string1) (-> first-tag irq) (-> first-tag num) - (-> first-tag imm) - ) - ) + (-> first-tag imm))) ((= print-kind 6) ;; imm is quadword count. ;; This packet size calculation is wrong. ;; this doesn't seem to be a decompiler error, this matches ;; the assembly, but makes no sense. - (set! packet-size - (the-as int (if (-> first-tag imm) - #x100000 - (shl (-> first-tag imm) 4) - ) - ) - ) - (format stream " (~s :irq ~D :qwc #x~D)~%" - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> first-tag imm) - ) - + (set! packet-size (the-as int (if (-> first-tag imm) #x100000 (shl (-> first-tag imm) 4)))) + (format stream + " (~s :irq ~D :qwc #x~D)~%" + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> first-tag imm)) ;; loop over data and print it. (set! data-ptr (&-> data 1)) (set! data-idx 0) (while (< data-idx (the-as int (-> first-tag imm))) - (format stream " #x~X: #x~8x #x~8x #x~8x #x~8x~%" - (+ (+ (shl data-idx 4) 4) (the-as int data)) - (-> data-ptr (shl data-idx 2)) - (-> data-ptr (+ (shl data-idx 2) 1)) - (-> data-ptr (+ (shl data-idx 2) 2)) - (-> data-ptr (+ (shl data-idx 2) 3)) - ) - (set! data-idx (+ data-idx 1)) - ) - #f - ) + (format stream + " #x~X: #x~8x #x~8x #x~8x #x~8x~%" + (+ (+ (shl data-idx 4) 4) (the-as int data)) + (-> data-ptr (shl data-idx 2)) + (-> data-ptr (+ (shl data-idx 2) 1)) + (-> data-ptr (+ (shl data-idx 2) 2)) + (-> data-ptr (+ (shl data-idx 2) 3))) + (set! data-idx (+ data-idx 1))) + #f) ((= print-kind 7) (set! packet-size - (the-as int - (+ - (logand - -4 - (+ (* (-> *vif-disasm-table* cmd-template-idx val) - (the-as uint (-> first-tag num))) - 3 - ) - ) - 4 - ) - ) - ) + (the-as int (+ (logand -4 (+ (* (-> *vif-disasm-table* cmd-template-idx val) (the-as uint (-> first-tag num))) 3)) 4))) (set! unpack-imm (the-as vif-unpack-imm (-> first-tag imm))) - (format stream " (~s :irq ~D :num ~D :addr #x~X " - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> first-tag num) - (-> unpack-imm addr) - ) - (format stream ":msk ~D :flg ~D :usn ~D [skip ~d])~%" - (-> first-tag msk) - (-> unpack-imm flg) - (-> unpack-imm usn) - (the-as uint packet-size) - ) + (format stream + " (~s :irq ~D :num ~D :addr #x~X " + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> first-tag num) + (-> unpack-imm addr)) + (format stream + ":msk ~D :flg ~D :usn ~D [skip ~d])~%" + (-> first-tag msk) + (-> unpack-imm flg) + (-> unpack-imm usn) + (the-as uint packet-size)) (if details - (disasm-vif-details - stream - (the-as (pointer uint8) data) - (logand cmd (vif-cmd cmd-mask)) - (the-as int (-> first-tag num)) - ) - ) - ) - ((= print-kind 8) - (format stream " (*unknown* vif-tag #x~X)~%" - (-> first-tag cmd) - ) - ) - ) - ) - ) - ) + (disasm-vif-details stream + (the-as (pointer uint8) data) + (logand cmd (vif-cmd cmd-mask)) + (the-as int (-> first-tag num))))) + ((= print-kind 8) (format stream " (*unknown* vif-tag #x~X)~%" (-> first-tag cmd))))))) ;; we matched, skip to the end. - (set! cmd-template-idx (-> *vif-disasm-table* length)) - ) - ) - ) + (set! cmd-template-idx (-> *vif-disasm-table* length))))) ;; increment counters. (+! byte-idx packet-size) - (&+! data packet-size) - ) - ) - (- byte-idx (shl words 2)) - ) - ) + (&+! data packet-size))) + (- byte-idx (shl words 2)))) (defun disasm-dma-tag ((arg0 dma-tag) (arg1 symbol)) (format arg1 "(dma-tag ") (format arg1 "~s" (enum->string dma-tag-id (-> arg0 id))) - (if (> (the-as uint (-> arg0 addr)) 0) - (format arg1 " :addr #x~8x" (-> arg0 addr)) - ) - (if (> (the-as uint (-> arg0 qwc)) 0) - (format arg1 " :qwc ~d" (-> arg0 qwc)) - ) - (if (> (the-as uint (-> arg0 spr)) 0) - (format arg1 " :spr ~d" (-> arg0 spr)) - ) - (if (> (the-as uint (-> arg0 irq)) 0) - (format arg1 " :irq ~d" (-> arg0 irq)) - ) - (if (> (the-as uint (-> arg0 pce)) 0) - (format arg1 " :pce ~d" (-> arg0 pce)) - ) + (if (> (the-as uint (-> arg0 addr)) 0) (format arg1 " :addr #x~8x" (-> arg0 addr))) + (if (> (the-as uint (-> arg0 qwc)) 0) (format arg1 " :qwc ~d" (-> arg0 qwc))) + (if (> (the-as uint (-> arg0 spr)) 0) (format arg1 " :spr ~d" (-> arg0 spr))) + (if (> (the-as uint (-> arg0 irq)) 0) (format arg1 " :irq ~d" (-> arg0 irq))) + (if (> (the-as uint (-> arg0 pce)) 0) (format arg1 " :pce ~d" (-> arg0 pce))) (format arg1 ")~%") - (none) - ) + (none)) ;; this is unused. (define *dma-disasm* #t) (defmacro disasm-dma-buffer (buff) - `(disasm-dma-list (the dma-packet (-> ,buff data-buffer)) 'details #t #t 0) - ) - + `(disasm-dma-list (the dma-packet (-> ,buff data-buffer)) 'details #t #t 0)) ;; NOTE: the decompiler currently outputs something nicer looking for the nexted conds, ;; but keeping the old version with nicer comments for now. (defun disasm-dma-list ((data dma-packet) (mode symbol) (verbose symbol) (stream symbol) (expected-size int)) "Disassemble a dma list, starting from the given packet." (local-vars - (addr object) - (data-2 dma-packet) - (qwc int) - (ra-1 object) - (ra-2 object) - (call-depth int) - (current-tag dma-tag) - ) + (addr object) + (data-2 dma-packet) + (qwc int) + (ra-1 object) + (ra-2 object) + (call-depth int) + (current-tag dma-tag)) ;; this is a little messed up because of stack spills. (set! data-2 data) (let ((mode-2 mode) (verbose-2 verbose) (stream-2 stream) - (expected-size-2 expected-size) - ) - (if verbose-2 - (format stream-2 "~%--- ~X -----------------------------~%" data-2) - ) + (expected-size-2 expected-size)) + (if verbose-2 (format stream-2 "~%--- ~X -----------------------------~%" data-2)) ;; the end-condition will get set to #t when the end of the chain is reached, ;; or 'error if invalid data is found. (let ((end-condition #f)) ;; statistics (let ((total-qwc 0) - (total-tags 0) - ) + (total-tags 0)) (set! addr 0) (set! qwc 0) ;; for the "call" feature @@ -420,214 +303,136 @@ (cond ((not (valid? data-2 (the-as type #f) "dma-list tag pointer" #t stream-2)) (format stream-2 "ERROR: dma-list tag pointer invalid~%") - (set! end-condition 'error) - ) + (set! end-condition 'error)) (else ;; load the tag (set! current-tag (-> data-2 dma)) ;; check the address. it is unset on the first pass so we skip this check then. - (when (not (or (zero? total-tags) - (valid? addr (the-as type #f) "dma-list data pointer" #t stream-2) - ) - ) + (when (not (or (zero? total-tags) (valid? addr (the-as type #f) "dma-list data pointer" #t stream-2))) (format stream-2 "ERROR: dma-list data pointer invalid~%") - (set! end-condition 'error) - ) + (set! end-condition 'error)) ;; check that the tag's value makes sense. (when (nonzero? (logand #x3ff0000 (the-as int current-tag))) (format stream-2 "ERROR: dma tag has data in reserved bits ~X~%") - (set! end-condition 'error) - ) - ) - ) - + (set! end-condition 'error)))) ;; next, disassembly the dma-tag. ;; only do it if verbose is set, or we have encountered an error. (when (or verbose-2 (= end-condition 'error)) (format stream-2 "#x~8x: " data-2) (cond - ((zero? call-depth) - (format stream-2 " ") - ) - ((= call-depth 1) - (format stream-2 " ") - ) - ) - (disasm-dma-tag current-tag stream-2) - ) - + ((zero? call-depth) (format stream-2 " ")) + ((= call-depth 1) (format stream-2 " "))) + (disasm-dma-tag current-tag stream-2)) ;; now the dma data. (if end-condition - (none) ;; do nothing if we want to end. - (cond - ;; check if we are an addr in addr field dma tag. - ((or (zero? (+ (the-as uint (-> current-tag id)) (the-as uint -3))) ;; ref - (zero? (+ (the-as uint (-> current-tag id)) (the-as uint -4))) ;; refs - (zero? (-> current-tag id)) ;; refe - ) - ;; set addresss and qwc from the tag. - (set! addr (-> current-tag addr)) - (set! qwc (the-as int (-> current-tag qwc))) - ;; optionally disassemble vif tags. - (if mode-2 - ;; I don't quite understand this. The first thing is for the tag transferred due to tte. - ;; but I don't understand what the v0-9 offset is. - (let ((v0-9 (disasm-vif-tag (&-> data-2 vif0) 2 stream-2 (= mode-2 'details)))) - (disasm-vif-tag - (the-as (pointer vif-tag) (+ (the-as uint addr) (the-as uint v0-9))) - (the-as int (- (shl (the-as int qwc) 2) (the-as uint (sar v0-9 2)))) - stream-2 - (= mode-2 'details) - ) - ) - ) - ;; move on to next dma-packet. it is adjacent in memory for these modes. - (set! data-2 (the-as dma-packet (&-> (the-as (pointer uint64) data-2) 2))) - ;; if we were a refe, it is now the end! - (if (zero? (-> current-tag id)) ;; check refe. - (set! end-condition #t) - ) - ) - (else - (cond - ((= (-> current-tag id) (dma-tag-id cnt)) - ;; cnt: address is after tag, next tag is after data. - ;; get the address from after the tag - (set! addr (&-> (the-as (pointer uint64) data-2) 2)) - ;; qwc from the tag - (set! qwc (the-as int (-> current-tag qwc))) - ;; disassemble vif. - (if mode-2 - (disasm-vif-tag - (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) - (the-as int (+ (shl (the-as int qwc) 2) 2)) - stream-2 - (= mode-2 'details) - ) - ) - ;; next data is after vif data. - (set! data-2 (the-as dma-packet (+ (the-as uint data-2) - (the-as uint (shl (the-as int (+ (the-as uint qwc) - (the-as uint 1))) - 4) - ) - ) - ) - ) - ) - ((= (-> current-tag id) (dma-tag-id next)) - ;; address after tag and qwc in tag. - (set! addr (&-> (the-as (pointer uint64) data-2) 2)) - (set! qwc (the-as int (-> current-tag qwc))) - (if mode-2 - (disasm-vif-tag - (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) - (the-as int (+ (shl (the-as int qwc) 2) 2)) - stream-2 - (= mode-2 'details) - ) - ) - ;; addr is the next tag. check for infinite loop before continuing. - (when (= data-2 (-> current-tag addr)) - (format stream-2 "ERROR: next tag creates infinite loop.~%") - (set! end-condition 'error) - ) - (set! data-2 (the-as dma-packet (-> current-tag addr))) - ) - (else - (cond - ((= (-> current-tag id) (dma-tag-id call)) - ;; this "calls" a DMA chain, which should then return to here. - ;; the stack is only two deep. - (set! addr (&-> (the-as (pointer uint64) data-2) 2)) - (set! qwc (the-as int (-> current-tag qwc))) - (if mode-2 - (disasm-vif-tag (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) - (the-as int (+ (shl (the-as int qwc) 2) 2)) - stream-2 - (= mode-2 'details) - ) - ) - (set! data-2 (the-as dma-packet (-> current-tag addr))) - ;; increment stack - (set! call-depth (+ call-depth 1)) - ;; and store the return. - (cond - ((zero? call-depth) - (set! ra-1 (&+ (the pointer addr) qwc)) - ) - (else - (set! ra-2 (&+ (the pointer addr) qwc)) - ) - ) - ) - ((= (-> current-tag id) (dma-tag-id ret)) - ;; return from a "called" dma chain. - (set! addr (&-> (the-as (pointer uint64) data-2) 2)) - (set! qwc (the-as int (-> current-tag qwc))) - (if mode-2 - (disasm-vif-tag (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) - (the-as int (+ (shl (the-as int qwc) 2) 2)) - stream-2 - (= mode-2 'details) - ) - ) - - ;; restore the address from the stack - ;; likely a case. - (let ((v1-123 call-depth)) - (cond - ((zero? v1-123) - (set! data-2 (the-as dma-packet ra-1)) - ) - ((= v1-123 1) - (set! data-2 (the-as dma-packet ra-2)) - ) - (else - (set! end-condition #t) - ) - ) - ) - (set! call-depth (+ call-depth -1)) - ) - ((= (-> current-tag id) (dma-tag-id end)) - (set! addr (&-> (the-as (pointer uint64) data-2) 2)) - (set! qwc (the-as int (-> current-tag qwc))) - (set! end-condition #t) - (if mode-2 - (disasm-vif-tag (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) - (the-as int (+ (shl (the-as int qwc) 2) 2)) - stream-2 - (= mode-2 'details) - ) - ) - - ) - (else - (format stream-2 "ERROR: Unknown DMA TAG command.~%") - (set! end-condition 'error) - ) - ) - ) + (none) ;; do nothing if we want to end. + (cond + ;; check if we are an addr in addr field dma tag. + ((or (zero? (+ (the-as uint (-> current-tag id)) (the-as uint -3))) ;; ref + (zero? (+ (the-as uint (-> current-tag id)) (the-as uint -4))) ;; refs + (zero? (-> current-tag id)) ;; refe ) - ) - ) - ) + ;; set addresss and qwc from the tag. + (set! addr (-> current-tag addr)) + (set! qwc (the-as int (-> current-tag qwc))) + ;; optionally disassemble vif tags. + (if mode-2 + ;; I don't quite understand this. The first thing is for the tag transferred due to tte. + ;; but I don't understand what the v0-9 offset is. + (let ((v0-9 (disasm-vif-tag (&-> data-2 vif0) 2 stream-2 (= mode-2 'details)))) + (disasm-vif-tag (the-as (pointer vif-tag) (+ (the-as uint addr) (the-as uint v0-9))) + (the-as int (- (shl (the-as int qwc) 2) (the-as uint (sar v0-9 2)))) + stream-2 + (= mode-2 'details)))) + ;; move on to next dma-packet. it is adjacent in memory for these modes. + (set! data-2 (the-as dma-packet (&-> (the-as (pointer uint64) data-2) 2))) + ;; if we were a refe, it is now the end! + (if (zero? (-> current-tag id)) ;; check refe. + (set! end-condition #t))) + (else + (cond + ((= (-> current-tag id) (dma-tag-id cnt)) + ;; cnt: address is after tag, next tag is after data. + ;; get the address from after the tag + (set! addr (&-> (the-as (pointer uint64) data-2) 2)) + ;; qwc from the tag + (set! qwc (the-as int (-> current-tag qwc))) + ;; disassemble vif. + (if mode-2 + (disasm-vif-tag (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) + (the-as int (+ (shl (the-as int qwc) 2) 2)) + stream-2 + (= mode-2 'details))) + ;; next data is after vif data. + (set! data-2 + (the-as dma-packet (+ (the-as uint data-2) (the-as uint (shl (the-as int (+ (the-as uint qwc) (the-as uint 1))) 4)))))) + ((= (-> current-tag id) (dma-tag-id next)) + ;; address after tag and qwc in tag. + (set! addr (&-> (the-as (pointer uint64) data-2) 2)) + (set! qwc (the-as int (-> current-tag qwc))) + (if mode-2 + (disasm-vif-tag (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) + (the-as int (+ (shl (the-as int qwc) 2) 2)) + stream-2 + (= mode-2 'details))) + ;; addr is the next tag. check for infinite loop before continuing. + (when (= data-2 (-> current-tag addr)) + (format stream-2 "ERROR: next tag creates infinite loop.~%") + (set! end-condition 'error)) + (set! data-2 (the-as dma-packet (-> current-tag addr)))) + (else + (cond + ((= (-> current-tag id) (dma-tag-id call)) + ;; this "calls" a DMA chain, which should then return to here. + ;; the stack is only two deep. + (set! addr (&-> (the-as (pointer uint64) data-2) 2)) + (set! qwc (the-as int (-> current-tag qwc))) + (if mode-2 + (disasm-vif-tag (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) + (the-as int (+ (shl (the-as int qwc) 2) 2)) + stream-2 + (= mode-2 'details))) + (set! data-2 (the-as dma-packet (-> current-tag addr))) + ;; increment stack + (set! call-depth (+ call-depth 1)) + ;; and store the return. + (cond + ((zero? call-depth) (set! ra-1 (&+ (the pointer addr) qwc))) + (else (set! ra-2 (&+ (the pointer addr) qwc))))) + ((= (-> current-tag id) (dma-tag-id ret)) + ;; return from a "called" dma chain. + (set! addr (&-> (the-as (pointer uint64) data-2) 2)) + (set! qwc (the-as int (-> current-tag qwc))) + (if mode-2 + (disasm-vif-tag (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) + (the-as int (+ (shl (the-as int qwc) 2) 2)) + stream-2 + (= mode-2 'details))) + ;; restore the address from the stack + ;; likely a case. + (let ((v1-123 call-depth)) + (cond + ((zero? v1-123) (set! data-2 (the-as dma-packet ra-1))) + ((= v1-123 1) (set! data-2 (the-as dma-packet ra-2))) + (else (set! end-condition #t)))) + (set! call-depth (+ call-depth -1))) + ((= (-> current-tag id) (dma-tag-id end)) + (set! addr (&-> (the-as (pointer uint64) data-2) 2)) + (set! qwc (the-as int (-> current-tag qwc))) + (set! end-condition #t) + (if mode-2 + (disasm-vif-tag (the-as (pointer vif-tag) (&-> (the-as (pointer uint64) data-2) 1)) + (the-as int (+ (shl (the-as int qwc) 2) 2)) + stream-2 + (= mode-2 'details)))) + (else (format stream-2 "ERROR: Unknown DMA TAG command.~%") (set! end-condition 'error)))))))) ;; increment stats (+! total-qwc qwc) (+! total-tags 1) ;; end, if we hit the tag limit. - (if (and (>= expected-size-2 0) (>= total-tags expected-size-2)) - (set! end-condition #t) - ) - ) + (if (and (>= expected-size-2 0) (>= total-tags expected-size-2)) (set! end-condition #t))) (when (or verbose-2 (= end-condition 'error)) (format stream-2 "NOTICE: Total tags: ~d~%" total-tags) (format stream-2 "NOTICE: Total QWC: ~d~%" total-qwc) - (format stream-2 "--------------------------------~%~%") - ) - ) - (!= end-condition 'error) - ) - ) - ) + (format stream-2 "--------------------------------~%~%"))) + (!= end-condition 'error)))) diff --git a/goal_src/jak1/engine/dma/dma-h.gc b/goal_src/jak1/engine/dma/dma-h.gc index 09f808cfc1..98b41daed8 100644 --- a/goal_src/jak1/engine/dma/dma-h.gc +++ b/goal_src/jak1/engine/dma/dma-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: dma-h.gc -;; name in dgo: dma-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; Constants/type for the PS2 DMA hardware @@ -38,11 +33,9 @@ (tte uint8 :offset 6 :size 1) ;; transfer tag (sc only) (tie uint8 :offset 7 :size 1) ;; tag interrupt (str uint8 :offset 8 :size 1) ;; start! - (tag uint16 :offset 16) - ) - ) + (tag uint16 :offset 16))) -(defmethod inspect dma-chcr ((obj dma-chcr)) +(defmethod inspect ((obj dma-chcr)) (format #t "~Tdir: ~D~%" (-> obj dir)) (format #t "~Tmod: ~D~%" (-> obj mod)) (format #t "~Tasp: ~D~%" (-> obj asp)) @@ -50,91 +43,83 @@ (format #t "~Ttie: ~D~%" (-> obj tie)) (format #t "~Tstr: ~D~%" (-> obj str)) (format #t "~Ttag: #x~X~%" (-> obj tag)) - obj - ) + obj) ;; Each DMA Channel has a bank of registers with the following layout. ;; Some channels have more advanced features, but all support at least these three. (deftype dma-bank (structure) - ((chcr dma-chcr :offset 0) ;; control register - (madr uint32 :offset 16) ;; memory address - (qwc uint32 :offset 32) ;; quadword count - ) - ) + ((chcr dma-chcr :offset 0) ;; control register + (madr uint32 :offset 16) ;; memory address + (qwc uint32 :offset 32) ;; quadword count + )) ;; DMA register layout for channels supporting source-chain (deftype dma-bank-source (dma-bank) - ((tadr uint32 :offset 48) ;; tag address - ) - ) + ((tadr uint32 :offset 48) ;; tag address + )) ;; The DMA source chain supports a two-entry "call stack" of tags. ;; The tag addresses are stored here. (deftype dma-bank-vif (dma-bank-source) - ((as0 uint32 :offset 64) ;; pushed tag register - (as1 uint32 :offset 80) ;; pushed tag register - ) - ) + ((as0 uint32 :offset 64) ;; pushed tag register + (as1 uint32 :offset 80) ;; pushed tag register + )) ;; The toSPR and fromSPR DMA channels require a second address in the scratchpad. ;; This is an offset from the start of SPR. (deftype dma-bank-spr (dma-bank-source) - ((sadr uint32 :offset 128) ;; spad address. - ) - ) + ((sadr uint32 :offset 128) ;; spad address. + )) ;; These addresses are the location of DMA banks for each channel. ;; These do not exist in OpenGOAL. (defconstant VIF0_DMA_BANK (the dma-bank-vif (get-vm-ptr #x10008000))) + (defconstant VIF1_DMA_BANK (the dma-bank-vif (get-vm-ptr #x10009000))) + (defconstant GIF_DMA_BANK (the dma-bank (get-vm-ptr #x1000a000))) + ;; ipuFrom, ipTop, sif0, sif1, sif2 believed unused. (defconstant SPR_FROM_BANK (the dma-bank-spr (get-vm-ptr #x1000d000))) + (defconstant SPR_TO_BANK (the dma-bank-spr (get-vm-ptr #x1000d400))) (defconstant VU0_DATA_MEM_MAP (the (pointer uint32) #x11004000)) -(defconstant VU1_DATA_MEM_MAP (the (pointer uint32) #x1100c000)) +(defconstant VU1_DATA_MEM_MAP (the (pointer uint32) #x1100c000)) ;; The DMA system also has some shared control registers that ;; apply to all channels. ;; D_CTRL, master DMA control register, shared for all channels. (deftype dma-ctrl (uint32) - ((dmae uint8 :offset 0 :size 1) - (rele uint8 :offset 1 :size 1) - (mfd uint8 :offset 2 :size 2) - (sts uint8 :offset 4 :size 2) - (std uint8 :offset 6 :size 2) - (rcyc uint8 :offset 8 :size 3) - ) - ) + ((dmae uint8 :offset 0 :size 1) + (rele uint8 :offset 1 :size 1) + (mfd uint8 :offset 2 :size 2) + (sts uint8 :offset 4 :size 2) + (std uint8 :offset 6 :size 2) + (rcyc uint8 :offset 8 :size 3))) ;; D_ENABLEW, D_ENABLER? (deftype dma-enable (uint32) - ((cpnd uint8 :offset 16 :size 1)) - ) + ((cpnd uint8 :offset 16 :size 1))) ;; D_SQWC (deftype dma-sqwc (uint32) - ((sqwc uint8 :offset 0 :size 8) - (tqwc uint8 :offset 16 :size 8) - ) - ) + ((sqwc uint8 :offset 0 :size 8) + (tqwc uint8 :offset 16 :size 8))) ;; Shared DMA control registers. (deftype dma-bank-control (structure) - ((ctrl dma-ctrl :offset 0) - (stat uint32 :offset 16) - (pcr uint32 :offset 32) - (sqwc dma-sqwc :offset 48) - (rbsr uint32 :offset 64) - (rbor uint32 :offset 80) - (stadr uint32 :offset 96) - (enabler uint32 :offset 5408) - (enablew uint32 :offset 5520) - ) - ) + ((ctrl dma-ctrl :offset 0) + (stat uint32 :offset 16) + (pcr uint32 :offset 32) + (sqwc dma-sqwc :offset 48) + (rbsr uint32 :offset 64) + (rbor uint32 :offset 80) + (stadr uint32 :offset 96) + (enabler uint32 :offset 5408) + (enablew uint32 :offset 5520))) (defconstant DMA_CONTROL_BANK (the dma-bank-control (get-vm-ptr #x1000e000))) @@ -143,42 +128,35 @@ ((name basic) (code uint32) (size int32) - (dest-address uint32) - ) - ) + (dest-address uint32))) ;; ?? not sure what this is. -(deftype vu-stat (uint64) - () - ) - +(deftype vu-stat (uint64) ()) (defenum dma-tag-id - :bitfield #f - :type uint8 - (refe 0) ;; addr=ADDR, ends after this transfer - (cnt 1) ;; addr=after tag, next-tag=after data - (next 2) ;; addr=after tag, next-tag=ADDR - (ref 3) ;; addr=ADDR, next-tag=after tag - (refs 4) ;; ref, but stall controled - (call 5) ;; - (ret 6) ;; - (end 7) ;; next, but ends. - ) + :bitfield #f + :type uint8 + (refe 0) ;; addr=ADDR, ends after this transfer + (cnt 1) ;; addr=after tag, next-tag=after data + (next 2) ;; addr=after tag, next-tag=ADDR + (ref 3) ;; addr=ADDR, next-tag=after tag + (refs 4) ;; ref, but stall controled + (call 5) ;; + (ret 6) ;; + (end 7) ;; next, but ends. + ) ;; In source chain mode, the DMA controller reads "DMAtag"s to determine addresses ;; sizes, and the next thing to transfer. ;; A tag is 8 bytes. (deftype dma-tag (uint64) - ((qwc uint16 :offset 0) ;; quadword count - (pce uint8 :offset 26 :size 2) ;; priority (source mode) - (id dma-tag-id :offset 28 :size 3) ;; ID (what the tag means) - (irq uint8 :offset 31 :size 1) ;; interrupt at the end? - (addr uint32 :offset 32 :size 31) ;; address (31 bits) - (spr uint8 :offset 63 :size 1) ;; spr or not flag. - ) - ) - + ((qwc uint16 :offset 0) ;; quadword count + (pce uint8 :offset 26 :size 2) ;; priority (source mode) + (id dma-tag-id :offset 28 :size 3) ;; ID (what the tag means) + (irq uint8 :offset 31 :size 1) ;; interrupt at the end? + (addr uint32 :offset 32 :size 31) ;; address (31 bits) + (spr uint8 :offset 63 :size 1) ;; spr or not flag. + )) ;; DMA data is divided into buckets. ;; At the end of a frame, the buckets are all connected together in order and sent. @@ -187,118 +165,100 @@ ;; there is typically a texture upload bucket followed by renderer-specific draw buckets. (defconstant BUCKET_COUNT (#if PC_PORT 70 69)) + (defenum bucket-id - :type int32 - :bitfield #f - - ;; 0 - ;; 1 - ;; 2 - (sky-draw 3) ;; actual sky and cloud framebuffer draws - (ocean-mid-and-far 4) ;; actual ocean framebuffer draws for mid/transition/far - - (tfrag-tex0 5) ;; tfrag texture upload, level 0 - (tfrag-0 6) ;; tfrag draw, level 0 - (tfrag-near-0 7) ;; tfrag near draw, level 0 - (tie-near-0 8) ;; tie near draw, level 0 - (tie-0 9) ;; tie draw, level 0 - (merc-tfrag-tex0 10) ;; merc, with tfrag textures, level 0 - (generic-tfrag-tex0 11) ;; generic merc, with tfrag textures, level 0 - - (tfrag-tex1 12) ;; tfrag texture upload, level 1 - (tfrag-1 13) ;; tfrag draw, level 1 - (tfrag-near-1 14) ;; tfrag near draw, level 1 - (tie-near-1 15) ;; tie near draw, level 1 - (tie-1 16) ;; tie draw, level 1 - (merc-tfrag-tex1 17) ;; merc, with tfrag textures, level 1 - (generic-tfrag-tex1 18) ;; generic merc, with tfrag textures, level 1 - - (shrub-tex0 19) - (shrub0 20) - ;; 21 (likely shrub near) - (shrub-billboard0 22) - (shrub-trans0 23) - (shrub-generic0 24) ;; note: all shrub seems to go in shrub-generic1 - - (shrub-tex1 25) - (shrub1 26) - ;; 27 (likely shrub near) - (shrub-billboard1 28) - (shrub-trans1 29) - (shrub-generic1 30) - - (alpha-tex0 31) - (tfrag-trans-0 32) ;; also sky blend - (tfrag-trans-near-0 33) - (tfrag-dirt-0 34) - (tfrag-dirt-near-0 35) - (tfrag-ice-0 36) - (tfrag-ice-near-0 37) - - (alpha-tex1 38) - (tfrag-trans-1 39) ;; also sky blend - (tfrag-trans-near-1 40) - (tfrag-dirt-1 41) - (tfrag-dirt-near-1 42) - (tfrag-ice-1 43) - (tfrag-ice-near-1 44) - - (merc-alpha-tex 45) - (generic-alpha-tex 46) - - (shadow 47) - - (pris-tex0 48) - (merc-pris0 49) - (generic-pris0 50) - - (pris-tex1 51) - (merc-pris1 52) - (generic-pris1 53) - - (eyes 54) - - (merc-pris-common 55) - (generic-pris-common 56) - - (water-tex0 57) - (merc-water0 58) - (generic-water0 59) - - (water-tex1 60) - (merc-water1 61) - (generic-water1 62) - - (ocean-near 63) ; ocean - (depth-cue 64) - (common-page-tex 65) - (sprite 66) - (debug 67) - (debug-no-zbuf 68) - - ;; extra buckets for pc port - (subtitle 69) - ) + :type int32 + :bitfield #f + ;; 0 + ;; 1 + ;; 2 + (sky-draw 3) ;; actual sky and cloud framebuffer draws + (ocean-mid-and-far 4) ;; actual ocean framebuffer draws for mid/transition/far + (tfrag-tex0 5) ;; tfrag texture upload, level 0 + (tfrag-0 6) ;; tfrag draw, level 0 + (tfrag-near-0 7) ;; tfrag near draw, level 0 + (tie-near-0 8) ;; tie near draw, level 0 + (tie-0 9) ;; tie draw, level 0 + (merc-tfrag-tex0 10) ;; merc, with tfrag textures, level 0 + (generic-tfrag-tex0 11) ;; generic merc, with tfrag textures, level 0 + (tfrag-tex1 12) ;; tfrag texture upload, level 1 + (tfrag-1 13) ;; tfrag draw, level 1 + (tfrag-near-1 14) ;; tfrag near draw, level 1 + (tie-near-1 15) ;; tie near draw, level 1 + (tie-1 16) ;; tie draw, level 1 + (merc-tfrag-tex1 17) ;; merc, with tfrag textures, level 1 + (generic-tfrag-tex1 18) ;; generic merc, with tfrag textures, level 1 + (shrub-tex0 19) + (shrub0 20) + ;; 21 (likely shrub near) + (shrub-billboard0 22) + (shrub-trans0 23) + (shrub-generic0 24) ;; note: all shrub seems to go in shrub-generic1 + (shrub-tex1 25) + (shrub1 26) + ;; 27 (likely shrub near) + (shrub-billboard1 28) + (shrub-trans1 29) + (shrub-generic1 30) + (alpha-tex0 31) + (tfrag-trans-0 32) ;; also sky blend + (tfrag-trans-near-0 33) + (tfrag-dirt-0 34) + (tfrag-dirt-near-0 35) + (tfrag-ice-0 36) + (tfrag-ice-near-0 37) + (alpha-tex1 38) + (tfrag-trans-1 39) ;; also sky blend + (tfrag-trans-near-1 40) + (tfrag-dirt-1 41) + (tfrag-dirt-near-1 42) + (tfrag-ice-1 43) + (tfrag-ice-near-1 44) + (merc-alpha-tex 45) + (generic-alpha-tex 46) + (shadow 47) + (pris-tex0 48) + (merc-pris0 49) + (generic-pris0 50) + (pris-tex1 51) + (merc-pris1 52) + (generic-pris1 53) + (eyes 54) + (merc-pris-common 55) + (generic-pris-common 56) + (water-tex0 57) + (merc-water0 58) + (generic-water0 59) + (water-tex1 60) + (merc-water1 61) + (generic-water1 62) + (ocean-near 63) ; ocean + (depth-cue 64) + (common-page-tex 65) + (sprite 66) + (debug 67) + (debug-no-zbuf 68) + ;; extra buckets for pc port + (subtitle 69)) ;; A DMA bucket is a way of sorting data within a dma buffer. ;; The buckets themselves live inside in the dma buffer. ;; the addr field of their tag should point to the next bucket. ;; This is not a PS2 hardware thing (deftype dma-bucket (structure) - ((tag dma-tag :offset-assert 0) ;; the DMA tag to transfer the bucket's data - (last (pointer dma-tag)) ;; the last tag of this bucket. - (dummy uint32) ;; empty space. - (next uint32 :offset 4) ;; this overlaps with the addr bit-field of the dma-tag - ) - ) + ((tag dma-tag :offset-assert 0) ;; the DMA tag to transfer the bucket's data + (last (pointer dma-tag)) ;; the last tag of this bucket. + (dummy uint32) ;; empty space. + (next uint32 :offset 4) ;; this overlaps with the addr bit-field of the dma-tag + )) ;; guess - VIF_MASK register? (deftype vif-mask (uint32) - ((m0 uint8 :offset 0 :size 2) - (m1 uint8 :offset 2 :size 2) - (m2 uint8 :offset 4 :size 2) - (m3 uint8 :offset 6 :size 2) - (m4 uint8 :offset 8 :size 2) + ((m0 uint8 :offset 0 :size 2) + (m1 uint8 :offset 2 :size 2) + (m2 uint8 :offset 4 :size 2) + (m3 uint8 :offset 6 :size 2) + (m4 uint8 :offset 8 :size 2) (m5 uint8 :offset 10 :size 2) (m6 uint8 :offset 12 :size 2) (m7 uint8 :offset 14 :size 2) @@ -309,96 +269,85 @@ (m12 uint8 :offset 24 :size 2) (m13 uint8 :offset 26 :size 2) (m14 uint8 :offset 28 :size 2) - (m15 uint8 :offset 30 :size 2) - ) - ) + (m15 uint8 :offset 30 :size 2))) ;; the IMM field of a VIF STCYCL instruction (deftype vif-stcycl-imm (uint16) - ((cl uint8 :offset 0 :size 8) - (wl uint8 :offset 8 :size 8) - ) - ) + ((cl uint8 :offset 0 :size 8) + (wl uint8 :offset 8 :size 8))) ;; the IMM field of a VIF UNPACK instruction (deftype vif-unpack-imm (uint16) - ((addr uint16 :offset 0 :size 10) - (usn uint8 :offset 14 :size 1) - (flg uint8 :offset 15 :size 1) - ) - ) - + ((addr uint16 :offset 0 :size 10) + (usn uint8 :offset 14 :size 1) + (flg uint8 :offset 15 :size 1))) ;; all these have mask (only applies to unpacks) and interrupt not set. (defenum vif-cmd - :bitfield #f - :type uint8 - (nop 0) ;; no-op, can still have irq set. - (stcycl 1) ;; set write recycle register - (offset 2) ;; set offset register - (base 3) ;; set base register - (itop 4) ;; set data pointer register (itops) - (stmod 5) ;; set mode register - (mskpath3 6) ;; set path 3 mask - (mark 7) ;; set mark register - (pc-port 8) ;; special tag for PC Port data. - (flushe 16) ;; wait for end of microprogram - (flush 17) ;; wait for end of microprogram and transfer (path1/path2) - (flusha 19) ;; wait for end of microprogram and transfer (path1/path2/path3) - (mscal 20) ;; activate microprogram (call) - (mscalf 21) ;; flushe and activate (call) - (mscnt 23) ;; activate microprogram (continue) - (stmask 32) ;; set MASK register. - (strow 48) ;; set filling data - (stcol 49) ;; set filling data - (mpg 74) ;; transfer microprogram - (direct 80) ;; straight to GIF. - (directhl 81) - (unpack-s-32 96) - (unpack-s-16 97) - (unpack-s-8 98) - ;; 99 is invllid - (unpack-v2-32 100) - (unpack-v2-16 101) - (unpack-v2-8 102) - ;; 103 is invalid - (unpack-v3-32 104) - (unpack-v3-16 105) - (unpack-v3-8 106) - ;; 107 is invalid - (unpack-v4-32 108) - (unpack-v4-16 109) - (unpack-v4-8 110) - (unpack-v4-5 111) - (cmd-mask 239) ;; not sure what this is. - ) + :bitfield #f + :type uint8 + (nop 0) ;; no-op, can still have irq set. + (stcycl 1) ;; set write recycle register + (offset 2) ;; set offset register + (base 3) ;; set base register + (itop 4) ;; set data pointer register (itops) + (stmod 5) ;; set mode register + (mskpath3 6) ;; set path 3 mask + (mark 7) ;; set mark register + (pc-port 8) ;; special tag for PC Port data. + (flushe 16) ;; wait for end of microprogram + (flush 17) ;; wait for end of microprogram and transfer (path1/path2) + (flusha 19) ;; wait for end of microprogram and transfer (path1/path2/path3) + (mscal 20) ;; activate microprogram (call) + (mscalf 21) ;; flushe and activate (call) + (mscnt 23) ;; activate microprogram (continue) + (stmask 32) ;; set MASK register. + (strow 48) ;; set filling data + (stcol 49) ;; set filling data + (mpg 74) ;; transfer microprogram + (direct 80) ;; straight to GIF. + (directhl 81) + (unpack-s-32 96) + (unpack-s-16 97) + (unpack-s-8 98) + ;; 99 is invllid + (unpack-v2-32 100) + (unpack-v2-16 101) + (unpack-v2-8 102) + ;; 103 is invalid + (unpack-v3-32 104) + (unpack-v3-16 105) + (unpack-v3-8 106) + ;; 107 is invalid + (unpack-v4-32 108) + (unpack-v4-16 109) + (unpack-v4-8 110) + (unpack-v4-5 111) + (cmd-mask 239) ;; not sure what this is. + ) ;; this makes a copy of the above type, but uses a uint32. (defenum vif-cmd-32 - :bitfield #f - :type uint32 - :copy-entries vif-cmd - ) + :bitfield #f + :type uint32 + :copy-entries vif-cmd) ;; The VIF also has tags to control it. ;; Different VIF commands (called VIFcode) have different tag layouts. (deftype vif-tag (uint32) - ((imm uint16 :offset 0 :size 16) - (num uint8 :offset 16 :size 8) + ((imm uint16 :offset 0 :size 16) + (num uint8 :offset 16 :size 8) (cmd vif-cmd :offset 24 :size 7) - (irq uint8 :offset 31 :size 1) - (msk uint8 :offset 28 :size 1) - ) - ) + (irq uint8 :offset 31 :size 1) + (msk uint8 :offset 28 :size 1))) -(defmethod inspect vif-tag ((obj vif-tag)) +(defmethod inspect ((obj vif-tag)) (format #t "~Timm: #x~X~%" (-> obj imm)) (format #t "~Tnum: ~D~%" (-> obj num)) (format #t "~Tcmd: ~D~%" (-> obj cmd)) (format #t "~Tirq: ~D~%" (-> obj irq)) (format #t "~Tmsk: ~D~%" (-> obj msk)) - obj - ) + obj) ;; NOTE: these functions are never called ;; so they are not really modified for x86-64 @@ -411,23 +360,16 @@ (#cond (INSTANT_DMA ;; nothing to do. - 0 - ) + 0) (#t (while (nonzero? (-> bank chcr str)) ;; they had a precise number of nops here. ;; it turns out that spamming the DMA registers is not a good idea ;; because it uses the main bus that the DMA is possibly also trying to use. - (nop!) - ) - ) - ) - (none) - ) + (nop!)))) + (none)) -(defun dma-send-no-scratch ((bank dma-bank) - (madr uint32) - (qwc uint32)) +(defun dma-send-no-scratch ((bank dma-bank) (madr uint32) (qwc uint32)) "Begin a DMA transfer, directly to the bank. Makes sure any ongoing transfer on the channel is done Flushes the cache. Sets dir to 0, so I don't expect @@ -440,53 +382,26 @@ (set! (-> bank madr) madr) (set! (-> bank qwc) qwc) (.sync.l) - ;; this seems wrong, they set everything to 0, ;; including dir, which is the to-memory direction - (set! (-> bank chcr) - (new 'static 'dma-chcr :str 1) - ) - (none) - ) + (set! (-> bank chcr) (new 'static 'dma-chcr :str 1)) + (none)) -(defun dma-sync-with-count ((bank dma-bank) - (count (pointer int32))) +(defun dma-sync-with-count ((bank dma-bank) (count (pointer int32))) "Wait for DMA to finish, incrementing count. This doesn't seem like a very accurate way to find out how long it takes... This function is unused." (#cond - (INSTANT_DMA - (set! (-> count) INSTANT_DMA_COUNT) - 0 - ) + (INSTANT_DMA (set! (-> count) INSTANT_DMA_COUNT) 0) (#t (when (nonzero? (-> bank chcr str)) - (let ((x (-> count))) - (while (nonzero? (-> bank chcr str)) - (+! x 1) - (set! (-> count) x) - ) - ) - ) - 0 - ) - ) - ) + (let ((x (-> count))) (while (nonzero? (-> bank chcr str)) (+! x 1) (set! (-> count) x)))) + 0))) -(defun dma-count-until-done ((bank dma-bank) - (count (pointer int32))) +(defun dma-count-until-done ((bank dma-bank) (count (pointer int32))) "Like the previous one, kinda. This function is unused." (#cond - (INSTANT_DMA - (set! (-> count) INSTANT_DMA_COUNT) - 0 - ) - (#t - (while (nonzero? (-> bank chcr str)) - (set! (-> count) (+ 1 (-> count))) - ) - ) - ) - ) + (INSTANT_DMA (set! (-> count) INSTANT_DMA_COUNT) 0) + (#t (while (nonzero? (-> bank chcr str)) (set! (-> count) (+ 1 (-> count))))))) diff --git a/goal_src/jak1/engine/dma/dma.gc b/goal_src/jak1/engine/dma/dma.gc index fcbfaba895..3b6d64b57f 100644 --- a/goal_src/jak1/engine/dma/dma.gc +++ b/goal_src/jak1/engine/dma/dma.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/dma/dma-h.gc") (require "engine/ps2/vif-h.gc") -;; name: dma.gc -;; name in dgo: dma -;; dgos: GAME, ENGINE - ;; DMA send and sync functions: ;; These functions transfer existing DMA chains and buffers. ;; In general, there are two types: @@ -28,50 +23,26 @@ the speed of the DMA transfer. This function is unused." (#cond - (INSTANT_DMA - 0) - (#t - (while (nonzero? (-> bank chcr str)) - (nop!) - ) - ) - ) - (none) - ) + (INSTANT_DMA 0) + (#t (while (nonzero? (-> bank chcr str)) (nop!)))) + (none)) (defun dma-sync-crash ((arg0 dma-bank)) "Wait for DMA to finish for a while, then crash if we can't. This function is unused." (#cond - (INSTANT_DMA - (return 0) - ) - ) - (let ((v1-0 5000000)) - (while (nonzero? (-> arg0 chcr str)) - (if (zero? v1-0) - (crash!) - (+! v1-0 -1) - ) - ) - (none) - ) - ) + (INSTANT_DMA (return 0))) + (let ((v1-0 5000000)) (while (nonzero? (-> arg0 chcr str)) (if (zero? v1-0) (crash!) (+! v1-0 -1))) (none))) (defmacro make-madr-addr (addr) "Convert an address to one suitable for MADR. This works with Main RAM (all mappings) and for spad" `(let ((int-addr (the-as int ,addr))) - (logior (logand #xfffffff int-addr) ;; mask off spad/mapping bits - (if (= (logand #x70000000 int-addr) #x70000000) - #x80000000 ;; if we're in spad, set high bit. - 0 ;; otherwise nothing. - ) - ) - ) - ) - - + (logior (logand #xfffffff int-addr) ;; mask off spad/mapping bits + (if (= (logand #x70000000 int-addr) #x70000000) + #x80000000 ;; if we're in spad, set high bit. + 0 ;; otherwise nothing. + )))) (defun dma-send ((arg0 dma-bank) (madr uint) (qwc uint)) "Send DMA given an address and a quadword count. @@ -88,8 +59,7 @@ ;; begin DMA! (set! (-> arg0 chcr) (new 'static 'dma-chcr :str 1)) (.sync.l) - (none) - ) + (none)) (defun dma-send-chain ((arg0 dma-bank-source) (tadr uint)) "Send DMA! tadr should be a tag address, possibly in spad ram. @@ -105,16 +75,18 @@ (.sync.l) ;;(set! (-> arg0 chcr) 325) (set! (-> arg0 chcr) - (new 'static 'dma-chcr - :dir 1 ;; from memory - :mod 1 ;; source chain - :tte 1 ;; send tags - :str 1) ;; go! + (new 'static + 'dma-chcr + :dir 1 + ;; from memory + :mod 1 + ;; source chain + :tte 1 + ;; send tags + :str 1) ;; go! ) (.sync.l) - (none) - ) - + (none)) (defun dma-send-chain-no-tte ((arg0 dma-bank-source) (arg1 uint)) "Send DMA chain! TTE bit is not set, don't transfer tags. @@ -126,15 +98,18 @@ (set! (-> arg0 tadr) (make-madr-addr arg1)) (.sync.l) (set! (-> arg0 chcr) - (new 'static 'dma-chcr - :dir 1 ;; from memory - :mod 1 ;; source chain - :tte 0 ;; no tags + (new 'static + 'dma-chcr + :dir 1 + ;; from memory + :mod 1 + ;; source chain + :tte 0 + ;; no tags :str 1) ;; go! ) (.sync.l) - (none) - ) + (none)) (defun dma-send-chain-no-flush ((arg0 dma-bank-source) (arg1 uint)) "Send DMA chain! But don't flush the cache, so be careful here. TTE enable." @@ -145,25 +120,15 @@ (set! (-> arg0 tadr) arg1) (.sync.l) ;;(set! (-> arg0 chcr) 325) - (set! (-> arg0 chcr) - (new 'static 'dma-chcr - :dir 1 - :mod 1 - :tte 1 - :str 1) - ) + (set! (-> arg0 chcr) (new 'static 'dma-chcr :dir 1 :mod 1 :tte 1 :str 1)) (.sync.l) - (none) - ) + (none)) (defun dma-send-to-spr ((sadr uint) (madr uint) (qwc uint) (sync symbol)) "Transfer data to spr" (local-vars (s5-0 dma-bank-spr)) - (#when PC_PORT - (return 0) - ) - + (return 0)) (set! s5-0 SPR_TO_BANK) (dma-sync (the-as pointer s5-0) 0 0) (flush-cache 0) @@ -174,18 +139,14 @@ (.sync.l) (set! (-> s5-0 chcr) (new 'static 'dma-chcr :str 1)) (.sync.l) - (if sync - (dma-sync (the-as pointer s5-0) 0 0)) - (none) - ) + (if sync (dma-sync (the-as pointer s5-0) 0 0)) + (none)) (defun dma-send-to-spr-no-flush ((sadr uint) (madr uint) (qwc uint) (sync symbol)) "Transfer to spr. Doesn't flush the cache first, so be careful." (local-vars (s5-0 dma-bank-spr)) (#when PC_PORT - (return 0) - ) - + (return 0)) (set! s5-0 SPR_TO_BANK) (dma-sync (the-as pointer s5-0) 0 0) (.sync.l) @@ -196,16 +157,13 @@ (set! (-> s5-0 chcr) (new 'static 'dma-chcr :str 1)) (.sync.l) (if sync (dma-sync (the-as pointer s5-0) 0 0)) - (none) - ) + (none)) (defun dma-send-from-spr ((madr uint) (sadr uint) (qwc uint) (sync symbol)) "Transfer from spr." (local-vars (s5-0 dma-bank-spr)) (#when PC_PORT - (return 0) - ) - + (return 0)) (set! s5-0 SPR_FROM_BANK) (dma-sync (the-as pointer s5-0) 0 0) (flush-cache 0) @@ -217,16 +175,13 @@ (set! (-> s5-0 chcr) (new 'static 'dma-chcr :str 1)) (.sync.l) (if sync (dma-sync (the-as pointer s5-0) 0 0)) - (none) - ) + (none)) (defun dma-send-from-spr-no-flush ((madr uint) (sadr uint) (qwc uint) (sync symbol)) "Transfer from spr, don't flush the cache." (local-vars (s5-0 dma-bank-spr)) (#when PC_PORT - (return 0) - ) - + (return 0)) (set! s5-0 SPR_FROM_BANK) (dma-sync (the-as pointer s5-0) 0 0) (.sync.l) @@ -237,43 +192,28 @@ (set! (-> s5-0 chcr) (new 'static 'dma-chcr :str 1)) (.sync.l) (if sync (dma-sync (the-as pointer s5-0) 0 0)) - (none) - ) + (none)) (defun dma-initialize () "Due to a bug in the PS2 hardware, you must always disable the DMAtag mismatch error. This is done here." - (#when PC_PORT - (return 0) - ) - + (return 0)) (set! (-> (the-as vif-bank #x10003800) err me0) 1) (set! (-> (the-as vif-bank #x10003c00) err me0) 1) - (none) - ) + (none)) (defun clear-vu0-mem () "Set the vu0 data memory to 0xabadbeef. This uses the slow EE mapping of VU memory. Will crash on PC Port." - (let ((v1-0 VU0_DATA_MEM_MAP)) - (dotimes (a0-0 1024) - (set! (-> v1-0 a0-0) #xabadbeef) - ) - ) - (none) - ) + (let ((v1-0 VU0_DATA_MEM_MAP)) (dotimes (a0-0 1024) (set! (-> v1-0 a0-0) #xabadbeef))) + (none)) (defun clear-vu1-mem () "Set the vu1 data memory to 0xabadbeef. This uses the slow EE mapping of VU memory. Will crash on PC Port." - (let ((v1-0 VU1_DATA_MEM_MAP)) - (dotimes (a0-0 4096) - (set! (-> v1-0 a0-0) #xabadbeef) - ) - ) - (none) - ) + (let ((v1-0 VU1_DATA_MEM_MAP)) (dotimes (a0-0 4096) (set! (-> v1-0 a0-0) #xabadbeef))) + (none)) (defun dump-vu1-mem () "Print VU1 memory to runtime stdout. @@ -282,23 +222,21 @@ (set! gp-0 (the (pointer uint32) #x1100c000)) (set! s5-0 0) (while (< s5-0 1024) ;; 1k quadwords - (format 0 "~4,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X" + (format 0 + "~4,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X" s5-0 (-> gp-0 (shl s5-0 2)) (-> gp-0 (+ (shl s5-0 2) 1)) (-> gp-0 (+ (shl s5-0 2) 2)) - (-> gp-0 (+ (shl s5-0 2) 3)) - ) - (format 0 " ~F ~F ~F ~F ~%" + (-> gp-0 (+ (shl s5-0 2) 3))) + (format 0 + " ~F ~F ~F ~F ~%" (-> gp-0 (shl s5-0 2)) (-> gp-0 (+ (shl s5-0 2) 1)) (-> gp-0 (+ (shl s5-0 2) 2)) - (-> gp-0 (+ (shl s5-0 2) 3)) - ) - (set! s5-0 (+ s5-0 1)) - ) - (none) - ) + (-> gp-0 (+ (shl s5-0 2) 3))) + (set! s5-0 (+ s5-0 1))) + (none)) (defun dump-vu1-range ((start uint) (total-count uint)) "Print part of VU1 memory to runtime stdout. @@ -307,24 +245,22 @@ (set! s4-0 (the (pointer uint32) #x1100c000)) (set! s3-0 0) (while (< s3-0 (the-as int total-count)) - (set! s2-0 (+ s3-0 (the-as int start))) - (format 0 "~4,'0X: ~8x ~8x ~8x ~8x" - s2-0 - (-> s4-0 (shl s2-0 2)) - (-> s4-0 (+ (shl s2-0 2) 1)) - (-> s4-0 (+ (shl s2-0 2) 2)) - (-> s4-0 (+ (shl s2-0 2) 3)) - ) - (format 0 " ~F ~F ~F ~F ~%" - (-> s4-0 (shl s2-0 2)) - (-> s4-0 (+ (shl s2-0 2) 1)) - (-> s4-0 (+ (shl s2-0 2) 2)) - (-> s4-0 (+ (shl s2-0 2) 3)) - ) - (set! s3-0 (+ s3-0 1)) - ) - '#f - ) + (set! s2-0 (+ s3-0 (the-as int start))) + (format 0 + "~4,'0X: ~8x ~8x ~8x ~8x" + s2-0 + (-> s4-0 (shl s2-0 2)) + (-> s4-0 (+ (shl s2-0 2) 1)) + (-> s4-0 (+ (shl s2-0 2) 2)) + (-> s4-0 (+ (shl s2-0 2) 3))) + (format 0 + " ~F ~F ~F ~F ~%" + (-> s4-0 (shl s2-0 2)) + (-> s4-0 (+ (shl s2-0 2) 1)) + (-> s4-0 (+ (shl s2-0 2) 2)) + (-> s4-0 (+ (shl s2-0 2) 3))) + (set! s3-0 (+ s3-0 1))) + '#f) ;; if we send junk DMA data due to an engine bug, the PS2 will eventually time out the transfer. ;; in this case, the main loop will attempt to reset everything to hopefully recover. @@ -337,50 +273,40 @@ ;; inspect the banks (#unless PC_PORT ((method-of-type dma-bank-vif inspect) VIF1_DMA_BANK) - ((method-of-type vif-bank inspect) VIF1_BANK) - ) + ((method-of-type vif-bank inspect) VIF1_BANK)) ;; sceGsResetPath (reset-path) ;; sceGsResetGraph (reset-graph 1 1 *video-reset-parm* 1) (format 0 "gkernel: vif1 path reset!~%") - (none) - ) + (none)) (defun ultimate-memcpy ((dst pointer) (src pointer) (size-bytes uint)) "The Fastest Memory Copy, for larger transfers. Memory is copied in ascending order, in 4 kB blocks. The size should be a multiple of 16 bytes." - (#cond (PC_PORT ;; og:preserve-this on PC Port, just call C mem-move, it's the fastest. - (__mem-move dst src size-bytes) - ) + (__mem-move dst src size-bytes)) (else - ;; ultimate-memcpy works by DMAing to the scratchpad and back. ;; surprisingly this seems to be the fastest memcpy on larger ;; transfers. This is a nice example of how DMA is used from GOAL. (let ((spr-to-bank (the-as dma-bank-spr #x1000d400)) (spr-from-bank (the-as dma-bank-spr #x1000d000)) - (qwc-remaining (shr size-bytes 4)) - ) - + (qwc-remaining (shr size-bytes 4))) ;; Flush all data in the dcache to main memory. DMA bypasses the dcache. (flush-cache 0) ;; Complete all pending DMA transfers using the spad. ;; (this uses the Sony library DMA sync, which is bad) (dma-sync (the-as pointer spr-to-bank) 0 0) (dma-sync (the-as pointer spr-from-bank) 0 0) - ;; transfer loop (while (> qwc-remaining 0) ;; copy up to 1024 quadwords - limited by the 4kB spad size. (let ((qwc-transferred-now (the-as int qwc-remaining))) - (if (< (the-as uint 1024) (the-as uint qwc-transferred-now)) - (set! qwc-transferred-now 1024) - ) + (if (< (the-as uint 1024) (the-as uint qwc-transferred-now)) (set! qwc-transferred-now 1024)) (set! qwc-remaining (- qwc-remaining (the-as uint qwc-transferred-now))) ;; set up the "to spad" transfer (.sync.l) @@ -402,33 +328,22 @@ (set! (-> spr-from-bank chcr) (new 'static 'dma-chcr :str #x1)) (.sync.l) (dma-sync (the-as pointer spr-from-bank) 0 0) - (&+! dst (shl qwc-transferred-now 4)) - ) - ) - ) - (let ((v0-4 0)) - ) - ) - ) - (none) - ) - - + (&+! dst (shl qwc-transferred-now 4))))) + (let ((v0-4 0))))) + (none)) (defun symlink2 () "symlink2 is a handwritten assembly version of the v2 linking routine. it is not ported because the OpenGOAL linker has its own implementation already." (segfault) - (none) - ) + (none)) (defun symlink3 () "symlink3 is a handwritten assembly version of the v3 linking routine. OpenGOAL uses a different format for v3, customized for x86-64, so this is not needed. The C++ implementation is plenty fast enough" (segfault) - (none) - ) + (none)) ;; configuration required to work around hardware bug on the PS2. ;; doesn't do anything important diff --git a/goal_src/jak1/engine/draw/draw-node-h.gc b/goal_src/jak1/engine/draw/draw-node-h.gc index 2062b15883..700dbafe0c 100644 --- a/goal_src/jak1/engine/draw/draw-node-h.gc +++ b/goal_src/jak1/engine/draw/draw-node-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-inline-array-h.gc") -;; name: draw-node-h.gc -;; name in dgo: draw-node-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; A "draw-node" is a way to group together a bunch of drawables (possibly other draw-nodes) in a BVH @@ -22,25 +17,18 @@ ;; may occur at any depth, and nothing has visibility ids. (deftype draw-node (drawable) - ((child-count uint8 :offset 6) - (flags uint8 :offset 7) - (child drawable :offset 8) - (distance float :offset 12) - ) - ) - + ((child-count uint8 :offset 6) + (flags uint8 :offset 7) + (child drawable :offset 8) + (distance float :offset 12))) ;; for non-shrub uses of draw-node, this is used to store all the draw-nodes at a given depth. (deftype drawable-inline-array-node (drawable-inline-array) - ((data draw-node 1 :inline) - (pad uint32) - ) - ) + ((data draw-node 1 :inline) + (pad uint32))) ;; the types of these fields are a guess for now. ;; used for draw-node-cull function (deftype draw-node-dma (structure) - ((banka draw-node 32 :inline) - (bankb draw-node 32 :inline) - ) - ) + ((banka draw-node 32 :inline) + (bankb draw-node 32 :inline))) diff --git a/goal_src/jak1/engine/draw/draw-node.gc b/goal_src/jak1/engine/draw/draw-node.gc index dd3fa4188b..94d7b16ba6 100644 --- a/goal_src/jak1/engine/draw/draw-node.gc +++ b/goal_src/jak1/engine/draw/draw-node.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/bsp.gc") (require "engine/draw/draw-node-h.gc") -;; name: draw-node.gc -;; name in dgo: draw-node -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -25,52 +20,38 @@ (defmethod collide-with-box ((this draw-node) (arg0 int) (arg1 collide-list)) "Find collisions with the box in the current collision query, add results to collide-list." - ;; loop over ourself and our brothers (dotimes (s3-0 arg0) (if (collide-cache-using-box-test (-> this bsphere)) ;; do we collide with the bounding sphere? - ;; if so, do the collision check with the geometry. - (collide-with-box (-> this child) (the-as int (-> this child-count)) arg1) - ) - (&+! this 32) - ) + ;; if so, do the collision check with the geometry. + (collide-with-box (-> this child) (the-as int (-> this child-count)) arg1)) + (&+! this 32)) 0 - (none) - ) + (none)) (defmethod collide-y-probe ((this draw-node) (arg0 int) (arg1 collide-list)) (dotimes (s3-0 arg0) (if (collide-cache-using-y-probe-test (-> this bsphere)) - (collide-y-probe (-> this child) (the-as int (-> this child-count)) arg1) - ) - (&+! this 32) - ) + (collide-y-probe (-> this child) (the-as int (-> this child-count)) arg1)) + (&+! this 32)) 0 - (none) - ) + (none)) (defmethod collide-ray ((this draw-node) (arg0 int) (arg1 collide-list)) (dotimes (s3-0 arg0) (if (collide-cache-using-line-sphere-test (-> this bsphere)) - (collide-ray (-> this child) (the-as int (-> this child-count)) arg1) - ) - (&+! this 32) - ) + (collide-ray (-> this child) (the-as int (-> this child-count)) arg1)) + (&+! this 32)) 0 - (none) - ) + (none)) (defmethod collect-ambients ((this draw-node) (arg0 sphere) (arg1 int) (arg2 ambient-list)) (dotimes (s2-0 arg1) (if (spheres-overlap? arg0 (the-as sphere (-> this bsphere))) - (collect-ambients (-> this child) arg0 (the-as int (-> this child-count)) arg2) - ) - (&+! this 32) - ) + (collect-ambients (-> this child) arg0 (the-as int (-> this child-count)) arg2)) + (&+! this 32)) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Drawable Inline Array Node @@ -79,62 +60,50 @@ ;; This class is a convenient wrapper around an inline-array of draw-nodes. ;; It lets you treat this array like a normal drawable (at least for collisions). -(defmethod inspect drawable-inline-array-node ((this drawable-inline-array-node)) +(defmethod inspect ((this drawable-inline-array-node)) "Custom inspect for drawable-inline-array-node to print our nodes." (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tlength: ~D~%" (-> this length)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) (dotimes (s5-0 (-> this length)) - (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0)) - ) - this - ) + (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0))) + this) (defmethod mem-usage ((this drawable-inline-array-node) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of a drawable-inline-array-node. Only counts the nodes, doesn't count the node children." (set! (-> arg0 length) (max 62 (-> arg0 length))) (set! (-> arg0 data 61 name) "draw-node") (+! (-> arg0 data 61 count) (-> this length)) - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 61 used) v1-6) - (+! (-> arg0 data 61 total) (logand -16 (+ v1-6 15))) - ) - this - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 61 used) v1-6) (+! (-> arg0 data 61 total) (logand -16 (+ v1-6 15)))) + this) (defmethod asize-of ((this drawable-inline-array-node)) - (the-as int (+ (-> drawable-inline-array-node size) (* (+ (-> this length) -1) 32))) - ) + (the-as int (+ (-> drawable-inline-array-node size) (* (+ (-> this length) -1) 32)))) (defmethod collide-with-box ((this drawable-inline-array-node) (arg0 int) (arg1 collide-list)) ;; call on the first in the array, then it will loop through all the brothers. (collide-with-box (the-as drawable (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-y-probe ((this drawable-inline-array-node) (arg0 int) (arg1 collide-list)) (collide-y-probe (the-as drawable (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-ray ((this drawable-inline-array-node) (arg0 int) (arg1 collide-list)) (collide-ray (the-as drawable (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collect-ambients ((this drawable-inline-array-node) (arg0 sphere) (arg1 int) (arg2 ambient-list)) (collect-ambients (the-as drawable (-> this data)) arg0 (-> this length) arg2) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;;;;;; ;; DRAW NODE CULL ;;;;;;;;;;;;;;;;;;;;;;;; ;; TODO: waiting on tfrag/tie stuff to worry about this. -(define-extern draw-node-cull (function pointer pointer (inline-array draw-node) int none)) \ No newline at end of file +(define-extern draw-node-cull (function pointer pointer (inline-array draw-node) int none)) diff --git a/goal_src/jak1/engine/draw/drawable-actor-h.gc b/goal_src/jak1/engine/draw/drawable-actor-h.gc index 553697f323..db9fc4dc6f 100644 --- a/goal_src/jak1/engine/draw/drawable-actor-h.gc +++ b/goal_src/jak1/engine/draw/drawable-actor-h.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/draw/drawable-tree-h.gc") (require "engine/draw/drawable-inline-array-h.gc") -;; name: drawable-actor-h.gc -;; name in dgo: drawable-actor-h -;; dgos: GAME, ENGINE - ;; the actors are also stored in a drawable-tree, but they use almost none of the features of drawable. ;; it's just a way to iterate over all actor data. @@ -19,23 +14,16 @@ ;; the actual drawable is just a reference to the actor itself. (deftype drawable-actor (drawable) - ((actor entity-actor :offset 8) - ) - ) + ((actor entity-actor :offset 8))) ;; the tree of drawable-actors -(deftype drawable-tree-actor (drawable-tree) - () - ) +(deftype drawable-tree-actor (drawable-tree) ()) (deftype drawable-inline-array-actor (drawable-inline-array) - ((data drawable-actor 1 :inline) - (pad uint8 4) - ) - ) + ((data drawable-actor 1 :inline) + (pad uint8 4))) (defmethod draw ((this drawable-tree-actor) (arg0 drawable-tree-actor) (arg1 display-frame)) "Do nothing, actor data is not drawn." 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/draw/drawable-ambient-h.gc b/goal_src/jak1/engine/draw/drawable-ambient-h.gc index 0dba1e81bf..315c7f7c62 100644 --- a/goal_src/jak1/engine/draw/drawable-ambient-h.gc +++ b/goal_src/jak1/engine/draw/drawable-ambient-h.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/draw/drawable-tree-h.gc") (require "engine/draw/drawable-inline-array-h.gc") - -;; name: drawable-ambient-h.gc -;; name in dgo: drawable-ambient-h -;; dgos: GAME, ENGINE - (declare-type entity-ambient basic) + (define-extern vector-for-ambient (function process-drawable vector vector)) ;; DECOMP BEGINS @@ -20,71 +15,53 @@ ;; each ambient also has a simple drawable that just contains a reference to the entity. ;; this is basically only used to collect the currently active ambients. (deftype drawable-ambient (drawable) - ((ambient entity-ambient :offset 8) - ) + ((ambient entity-ambient :offset 8)) (:methods - (execute-ambient (_type_ vector) none) - ) - ) + (execute-ambient (_type_ vector) none))) ;; a drawable-tree of all the ambients in a level. -(deftype drawable-tree-ambient (drawable-tree) - () - ) +(deftype drawable-tree-ambient (drawable-tree) ()) (deftype drawable-inline-array-ambient (drawable-inline-array) - ((data drawable-ambient 1 :inline) - (pad uint32) - ) - ) + ((data drawable-ambient 1 :inline) + (pad uint32))) (defmethod draw ((this drawable-tree-ambient) (arg0 drawable-tree-ambient) (arg1 display-frame)) "Do nothing - ambients are not drawn." 0 - (none) - ) + (none)) (defmethod unpack-vis ((this drawable-tree-ambient) (arg0 (pointer int8)) (arg1 (pointer int8))) "Do nothing - ambients do not use vis." - arg1 - ) - + arg1) ;; one of the more common ambients is a "level hint". This can be a few things: ;; - on screen text (level names) ;; - daxter audio (sidekick) ;; - voicebox audio (also called sidekick in some places...) (deftype level-hint (process) - ((text-id-to-display text-id) - (sound-to-play string) - (trans vector) - (sound-id sound-id) - (mode symbol) - (total-time time-frame) - (total-off-time time-frame) - (last-time time-frame) - (voicebox handle) - ) + ((text-id-to-display text-id) + (sound-to-play string) + (trans vector) + (sound-id sound-id) + (mode symbol) + (total-time time-frame) + (total-off-time time-frame) + (last-time time-frame) + (voicebox handle)) (:methods - (print-text (_type_) none) - (appeared-for-long-enough? (_type_) symbol) - ) - (:states - (level-hint-ambient-sound string) - (level-hint-error string string) - level-hint-exit - level-hint-normal - (level-hint-sidekick string) - ) - ) + (print-text (_type_) none) + (appeared-for-long-enough? (_type_) symbol)) + (:states (level-hint-ambient-sound string) + (level-hint-error string string) + level-hint-exit + level-hint-normal + (level-hint-sidekick string))) ;; a list of ambients that are currently active. (deftype ambient-list (structure) - ((num-items int32) - (items drawable-ambient 2048) - ) - ) - + ((num-items int32) + (items drawable-ambient 2048))) (define-extern *hint-semaphore* (pointer level-hint)) diff --git a/goal_src/jak1/engine/draw/drawable-group-h.gc b/goal_src/jak1/engine/draw/drawable-group-h.gc index 04cab0e296..bde6d399f9 100644 --- a/goal_src/jak1/engine/draw/drawable-group-h.gc +++ b/goal_src/jak1/engine/draw/drawable-group-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-h.gc") -;; name: drawable-group-h.gc -;; name in dgo: drawable-group-h -;; dgos: GAME, ENGINE - ;; drawable-group is the base class for some drawable containers. ;; it is itself a drawable, though it typically doesn't have an ID. ;; it contains a dynamically sized array of drawables (in GOAL this means references to drawable objects). @@ -19,13 +14,11 @@ ;; decomp begins (deftype drawable-group (drawable) - ((length int16 :offset 6) - (data drawable 1) ;; note that you get 1 drawable in the type, the rest run off the end. + ((length int16 :offset 6) + (data drawable 1) ;; note that you get 1 drawable in the type, the rest run off the end. ) (:methods - (new (symbol type int) _type_) - ) - ) + (new (symbol type int) _type_))) ;; unused (define *collide-nodes* 0) diff --git a/goal_src/jak1/engine/draw/drawable-group.gc b/goal_src/jak1/engine/draw/drawable-group.gc index 5844e4400b..0078668687 100644 --- a/goal_src/jak1/engine/draw/drawable-group.gc +++ b/goal_src/jak1/engine/draw/drawable-group.gc @@ -1,111 +1,77 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable.gc") -;; name: drawable-group.gc -;; name in dgo: drawable-group -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod new drawable-group ((allocation symbol) (type-to-make type) (arg0 int)) "Allocate a drawable-group with enough room for arg0 drawables" (let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* (+ arg0 -1) 4)))))) (set! (-> v0-0 length) arg0) - v0-0 - ) - ) + v0-0)) -(defmethod inspect drawable-group ((this drawable-group)) +(defmethod inspect ((this drawable-group)) (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tid: ~D~%" (-> this id)) (format #t "~Tlength: ~D~%" (-> this length)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) (dotimes (s5-0 (-> this length)) - (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0)) - ) - this - ) + (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0))) + this) (defmethod print ((this drawable-group)) (format #t "#<~A @ #x~X [~D]" (-> this type) this (-> this length)) (dotimes (s5-0 (-> this length)) - (format #t " ~A" (-> this data s5-0)) - ) + (format #t " ~A" (-> this data s5-0))) (format #t ">") - this - ) + this) (defmethod length ((this drawable-group)) - (-> this length) - ) + (-> this length)) (defmethod asize-of ((this drawable-group)) - (the-as int (+ (-> drawable-group size) (* (+ (-> this length) -1) 4))) - ) + (the-as int (+ (-> drawable-group size) (* (+ (-> this length) -1) 4)))) (defmethod mem-usage ((this drawable-group) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) "drawable-group") (+! (-> arg0 data 0 count) 1) - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 0 used) v1-6) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 0 used) v1-6) (+! (-> arg0 data 0 total) (logand -16 (+ v1-6 15)))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) (defmethod login ((this drawable-group)) (dotimes (s5-0 (-> this length)) - (login (-> this data s5-0)) - ) - this - ) + (login (-> this data s5-0))) + this) (defmethod draw ((this drawable-group) (arg0 drawable-group) (arg1 display-frame)) (when (vis-cull (-> this id)) (when (sphere-cull (-> this bsphere)) (dotimes (s3-0 (-> this length)) - (draw (-> this data s3-0) (-> arg0 data s3-0) arg1) - ) - ) - ) + (draw (-> this data s3-0) (-> arg0 data s3-0) arg1)))) 0 - (none) - ) + (none)) (defmethod collect-stats ((this drawable-group)) (when (vis-cull (-> this id)) (when (sphere-cull (-> this bsphere)) (dotimes (s5-0 (-> this length)) - (collect-stats (-> this data s5-0)) - ) - ) - ) + (collect-stats (-> this data s5-0))))) 0 - (none) - ) + (none)) (defmethod debug-draw ((this drawable-group) (arg0 drawable) (arg1 display-frame)) (when (vis-cull (-> this id)) (when (sphere-cull (-> this bsphere)) (dotimes (s3-0 (-> this length)) - (debug-draw (-> this data s3-0) (-> (the-as drawable-group arg0) data s3-0) arg1) - ) - ) - ) + (debug-draw (-> this data s3-0) (-> (the-as drawable-group arg0) data s3-0) arg1)))) 0 - (none) - ) + (none)) (defmethod unpack-vis ((this drawable-group) (arg0 (pointer int8)) (arg1 (pointer int8))) (dotimes (s4-0 (-> this length)) - (set! arg1 (unpack-vis (-> this data s4-0) arg0 arg1)) - ) - arg1 - ) + (set! arg1 (unpack-vis (-> this data s4-0) arg0 arg1))) + arg1) diff --git a/goal_src/jak1/engine/draw/drawable-h.gc b/goal_src/jak1/engine/draw/drawable-h.gc index eb1c8354d9..3eb8561713 100644 --- a/goal_src/jak1/engine/draw/drawable-h.gc +++ b/goal_src/jak1/engine/draw/drawable-h.gc @@ -1,15 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gkernel-h.gc") - -;; name: drawable-h.gc -;; name in dgo: drawable-h -;; dgos: GAME, ENGINE - (declare-type ambient-list structure) + (declare-type collide-list structure) + (declare-type drawable-error drawable) ;; These is the base class for the scene graph node. @@ -19,54 +15,54 @@ ;; In many cases, "draw" simply adds data to a buffer that must later be converted to dma in finish-background ;; or similar. Or just does nothing. - ;; DECOMP BEGINS (deftype drawable (basic) - ((id int16) ;; ID number for visibility (not always used) - (bsphere vector :inline) ;; bounding sphere + ((id int16) ;; ID number for visibility (not always used) + (bsphere vector :inline) ;; bounding sphere ) (:methods - ;; initialize the drawable after it has been loaded. - (login (_type_) _type_) - ;; do some sort of drawing... this really does different things for different types. - (draw (_type_ _type_ display-frame) none) - ;; add collision meshes to the given collide list if they intersect the bounding box in *collide-work* - ;; the integer argument can be used to call this method on an inline-array of drawables (only some support this) - ;; this avoids the dynamic dispatch on each element of the array. - (collide-with-box (_type_ int collide-list) none) - ;; similar to above, but only add if the collision mesh intersects with a "y probe" - (collide-y-probe (_type_ int collide-list) none) - ;; similar to above, but only add if the collision mesh intersects a ray of spheres. - (collide-ray (_type_ int collide-list) none) - ;; different for different types, but generally collects debug statistics like numbers of triangles - (collect-stats (_type_) none) - ;; different for different types, but usually does nothing. - (debug-draw (_type_ drawable display-frame) none) - ;; given VIS data (uncompressed), compute the visiblity bit string. - (unpack-vis (_type_ (pointer int8) (pointer int8)) (pointer int8)) - ;; find "ambients" inside the given sphere and add to list. - (collect-ambients (_type_ sphere int ambient-list) none) - ) - ) - - + ;; initialize the drawable after it has been loaded. + (login (_type_) _type_) + ;; do some sort of drawing... this really does different things for different types. + (draw (_type_ _type_ display-frame) none) + ;; add collision meshes to the given collide list if they intersect the bounding box in *collide-work* + ;; the integer argument can be used to call this method on an inline-array of drawables (only some support this) + ;; this avoids the dynamic dispatch on each element of the array. + (collide-with-box (_type_ int collide-list) none) + ;; similar to above, but only add if the collision mesh intersects with a "y probe" + (collide-y-probe (_type_ int collide-list) none) + ;; similar to above, but only add if the collision mesh intersects a ray of spheres. + (collide-ray (_type_ int collide-list) none) + ;; different for different types, but generally collects debug statistics like numbers of triangles + (collect-stats (_type_) none) + ;; different for different types, but usually does nothing. + (debug-draw (_type_ drawable display-frame) none) + ;; given VIS data (uncompressed), compute the visiblity bit string. + (unpack-vis (_type_ (pointer int8) (pointer int8)) (pointer int8)) + ;; find "ambients" inside the given sphere and add to list. + (collect-ambients (_type_ sphere int ambient-list) none))) ;; A drawable that simply draws a sphere and an error message at the origin of the bounding sphere. (deftype drawable-error (drawable) - ((name string) - ) - ) + ((name string))) (declare-type process-drawable process) + (define-extern process-drawable-art-error (state string process-drawable)) + (define-extern foreground-engine-execute (function engine display-frame int int none)) + (define-extern sphere-in-view-frustum? (function sphere symbol)) (declare-type draw-control basic) + (define-extern add-process-drawable (function process-drawable draw-control symbol dma-buffer none)) + (define-extern dma-add-process-drawable-hud (function process-drawable draw-control symbol dma-buffer none)) + (define-extern dma-add-process-drawable (function process-drawable draw-control symbol dma-buffer none)) + (define-extern vis-cull (function int symbol)) (define-extern line-in-view-frustum? (function vector vector symbol)) ;; TODO - not confirmed diff --git a/goal_src/jak1/engine/draw/drawable-inline-array-h.gc b/goal_src/jak1/engine/draw/drawable-inline-array-h.gc index 0983f1cfaa..3239cdb8a8 100644 --- a/goal_src/jak1/engine/draw/drawable-inline-array-h.gc +++ b/goal_src/jak1/engine/draw/drawable-inline-array-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-h.gc") -;; name: drawable-inline-array-h.gc -;; name in dgo: drawable-inline-array-h -;; dgos: GAME, ENGINE - ;; the drawable-inline-array is the other base class for a drawable container. ;; like drawable-group, it is a drawable itself. ;; it's used over drawable-group when there are a lot of drawables to iterate over because it is faster. @@ -18,6 +13,4 @@ ;; DECOMP BEGINS (deftype drawable-inline-array (drawable) - ((length int16 :offset 6) - ) - ) + ((length int16 :offset 6))) diff --git a/goal_src/jak1/engine/draw/drawable-inline-array.gc b/goal_src/jak1/engine/draw/drawable-inline-array.gc index 7ca14c37c3..02033e5b7f 100644 --- a/goal_src/jak1/engine/draw/drawable-inline-array.gc +++ b/goal_src/jak1/engine/draw/drawable-inline-array.gc @@ -1,37 +1,27 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/draw/drawable-inline-array-h.gc") -;; name: drawable-inline-array.gc -;; name in dgo: drawable-inline-array -;; dgos: GAME, ENGINE - ;; - All these methods are stubs ;; DECOMP BEGINS (defmethod length ((this drawable-inline-array)) - (-> this length) - ) + (-> this length)) (defmethod login ((this drawable-inline-array)) - this - ) + this) (defmethod draw ((this drawable-inline-array) (arg0 drawable-inline-array) (arg1 display-frame)) 0 - (none) - ) + (none)) (defmethod collect-stats ((this drawable-inline-array)) 0 - (none) - ) + (none)) (defmethod debug-draw ((this drawable-inline-array) (arg0 drawable) (arg1 display-frame)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/draw/drawable-tree-h.gc b/goal_src/jak1/engine/draw/drawable-tree-h.gc index b7963497e9..b4f6cde290 100644 --- a/goal_src/jak1/engine/draw/drawable-tree-h.gc +++ b/goal_src/jak1/engine/draw/drawable-tree-h.gc @@ -1,24 +1,15 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-group-h.gc") -;; name: drawable-tree-h.gc -;; name in dgo: drawable-tree-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; a drawable-tree is a top level grouping for all the drawables in a certain category. ;; for example, there might be a drawable-tree for all the tfrags, one for all the ties, etc. -(deftype drawable-tree (drawable-group) - () - ) +(deftype drawable-tree (drawable-group) ()) ;; a drawable-tree-array contains all the drawable-trees in a level. ;; usually there aren't too many drawable trees (~5-15) (deftype drawable-tree-array (drawable-group) - ((trees drawable-tree 1 :overlay-at (-> data 0)) - ) - ) + ((trees drawable-tree 1 :overlay-at (-> data 0)))) diff --git a/goal_src/jak1/engine/draw/drawable-tree.gc b/goal_src/jak1/engine/draw/drawable-tree.gc index 0ad503d95a..5a3d512e81 100644 --- a/goal_src/jak1/engine/draw/drawable-tree.gc +++ b/goal_src/jak1/engine/draw/drawable-tree.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/bsp.gc") (require "engine/draw/draw-node-h.gc") -;; name: drawable-tree.gc -;; name in dgo: drawable-tree -;; dgos: GAME, ENGINE - ;; The "drawable tree" represents a BVH for a specific render. ;; Typically, levels will have ~10 drawable trees. There will be a tree for ;; tfrag, a tree for actors, a tree for tie, @@ -21,39 +16,26 @@ "Draw a drawable tree array. If the current level is set to special or special-vis, the draw is skipped." (let ((v1-1 (-> (scratchpad-object terrain-context) bsp lev-index))) (case (-> *level* level v1-1 display?) - (('special 'special-vis #f) - ) - (else - (dotimes (s3-0 (-> this length)) - (draw (-> this trees s3-0) (-> arg0 trees s3-0) arg1) - ) - ) - ) - ) + (('special 'special-vis #f)) + (else (dotimes (s3-0 (-> this length)) (draw (-> this trees s3-0) (-> arg0 trees s3-0) arg1))))) 0 - (none) - ) + (none)) (defmethod collect-stats ((this drawable-tree-array)) (dotimes (s5-0 (-> this length)) - (collect-stats (-> this trees s5-0)) - ) + (collect-stats (-> this trees s5-0))) 0 - (none) - ) + (none)) (defmethod debug-draw ((this drawable-tree-array) (arg0 drawable) (arg1 display-frame)) (dotimes (s3-0 (-> this length)) - (debug-draw (-> this trees s3-0) (-> (the-as drawable-tree-array arg0) trees s3-0) arg1) - ) + (debug-draw (-> this trees s3-0) (-> (the-as drawable-tree-array arg0) trees s3-0) arg1)) 0 - (none) - ) + (none)) (defmethod unpack-vis ((this drawable-tree) (arg0 (pointer int8)) (arg1 (pointer int8))) "Copy our visibility data from arg1 to arg0, unpacking it." (local-vars (t5-1 int)) - ;; grab the first array (let* ((v1-0 (the-as drawable-inline-array-node (-> this data 0))) ;; first elt in top array @@ -63,19 +45,15 @@ ;; offset in destination (v1-1 (&+ arg0 a3-1)) ;; number of bytes - (a3-3 (/ (+ t0-0 7) 8)) - ) + (a3-3 (/ (+ t0-0 7) 8))) ;; copy the data! ;;(mem-print (the (pointer uint32) arg1) 10) (dotimes (t0-1 a3-3) (let ((t1-0 (-> arg1 0))) ;;(format 0 "top-copy: #x~X~%" t1-0) (set! arg1 (&-> arg1 1)) - (set! (-> v1-1 0) t1-0) - ) - (set! v1-1 (&-> v1-1 1)) - ) - ) + (set! (-> v1-1 0) t1-0)) + (set! v1-1 (&-> v1-1 1)))) ;; now, the remaining arrays, excluding the final which isn't a draw node array. (let ((v1-5 (+ (-> this length) -1))) (when (nonzero? v1-5) @@ -93,8 +71,7 @@ ;; output for prev level (t1-6 (&+ arg0 t1-5)) ;; output for next level - (t2-3 (&+ arg0 t2-2)) - ) + (t2-3 (&+ arg0 t2-2))) (while #t ;; load the vis byte for the one in this array (let ((t3-0 (-> t1-6 0))) @@ -113,16 +90,8 @@ ;; check if we've done all nodes (b! (zero? t0-5) cfg-12 :delay (.sra t4-0 t4-0 1)) ;; check if we're done with this byte and inc output. - (b! (nonzero? t4-0) cfg-7 :delay (set! t2-3 (&-> t2-3 1))) - ) - ) - ) - ) + (b! (nonzero? t4-0) cfg-7 :delay (set! t2-3 (&-> t2-3 1))))))) (label cfg-12) (nop!) - 0 - ) - ) - ) - arg1 - ) + 0))) + arg1) diff --git a/goal_src/jak1/engine/draw/drawable.gc b/goal_src/jak1/engine/draw/drawable.gc index 98f83c2df8..ff2f1ac747 100644 --- a/goal_src/jak1/engine/draw/drawable.gc +++ b/goal_src/jak1/engine/draw/drawable.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/engine/engines.gc") (require "engine/gfx/tie/tie-methods.gc") (require "engine/level/load-boundary.gc") @@ -11,10 +10,6 @@ (require "engine/collide/collide-shape.gc") (require "engine/gfx/generic/generic-merc.gc") -;; name: drawable.gc -;; name in dgo: drawable -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun sphere-cull ((arg0 vector)) @@ -31,28 +26,24 @@ (vf21 :class vf) (vf22 :class vf) (vf23 :class vf) - (vf9 :class vf) - ) - (init-vf0-vector) - ;; og:preserve-this manually added - (let ((at-0 *math-camera*)) - (.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 vf10 (&-> arg0 quad)) - (.mul.x.vf acc vf20 vf10) - (.add.mul.y.vf acc vf21 vf10 acc) - (.add.mul.z.vf acc vf22 vf10 acc) - (.sub.mul.w.vf vf9 vf23 vf0 acc) - (.sub.w.vf vf9 vf9 vf10) - (.mov v1-0 vf9) - (.pcgtw v1-1 0 v1-0) - (.ppach v1-2 (the-as uint128 0) v1-1) - (nonzero? (the-as int v1-2)) - ) - ) + (vf9 :class vf)) + (init-vf0-vector) + ;; og:preserve-this manually added + (let ((at-0 *math-camera*)) + (.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 vf10 (&-> arg0 quad)) + (.mul.x.vf acc vf20 vf10) + (.add.mul.y.vf acc vf21 vf10 acc) + (.add.mul.z.vf acc vf22 vf10 acc) + (.sub.mul.w.vf vf9 vf23 vf0 acc) + (.sub.w.vf vf9 vf9 vf10) + (.mov v1-0 vf9) + (.pcgtw v1-1 0 v1-0) + (.ppach v1-2 (the-as uint128 0) v1-1) + (nonzero? (the-as int v1-2)))) (defun sphere-in-view-frustum? ((arg0 sphere)) (local-vars (r0-0 uint128) (v1-1 uint128) (v1-2 uint128) (v1-3 uint128)) @@ -63,28 +54,24 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (set! r0-0 (the uint128 0)) - (let ((v1-0 *math-camera*)) - (.lvf vf6 (&-> arg0 quad)) - (.lvf vf1 (&-> v1-0 plane 0 quad)) - (.lvf vf2 (&-> v1-0 plane 1 quad)) - (.lvf vf3 (&-> v1-0 plane 2 quad)) - (.lvf vf4 (&-> v1-0 plane 3 quad)) - ) - (.mul.x.vf acc vf1 vf6) - (.add.mul.y.vf acc vf2 vf6 acc) - (.add.mul.z.vf acc vf3 vf6 acc) - (.sub.mul.w.vf vf5 vf4 vf0 acc) - (.add.w.vf vf5 vf5 vf6) - (.mov v1-1 vf5) - (.pcgtw v1-2 r0-0 v1-1) - (.ppach v1-3 r0-0 v1-2) - (zero? (the-as int v1-3)) - ) - ) + (vf6 :class vf)) + (init-vf0-vector) + (set! r0-0 (the uint128 0)) + (let ((v1-0 *math-camera*)) + (.lvf vf6 (&-> arg0 quad)) + (.lvf vf1 (&-> v1-0 plane 0 quad)) + (.lvf vf2 (&-> v1-0 plane 1 quad)) + (.lvf vf3 (&-> v1-0 plane 2 quad)) + (.lvf vf4 (&-> v1-0 plane 3 quad))) + (.mul.x.vf acc vf1 vf6) + (.add.mul.y.vf acc vf2 vf6 acc) + (.add.mul.z.vf acc vf3 vf6 acc) + (.sub.mul.w.vf vf5 vf4 vf0 acc) + (.add.w.vf vf5 vf5 vf6) + (.mov v1-1 vf5) + (.pcgtw v1-2 r0-0 v1-1) + (.ppach v1-3 r0-0 v1-2) + (zero? (the-as int v1-3)))) (defun line-in-view-frustum? ((arg0 vector) (arg1 vector)) (local-vars (v1-1 uint128) (v1-2 uint128) (v1-3 uint128) (a0-1 uint128) (a0-2 uint128) (a0-3 uint128)) @@ -95,8 +82,7 @@ (vf17 :class vf) (vf18 :class vf) (vf19 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (let ((v1-0 *math-camera*)) (.lvf vf9 (&-> arg0 quad)) @@ -104,8 +90,7 @@ (.lvf vf16 (&-> v1-0 plane 0 quad)) (.lvf vf17 (&-> v1-0 plane 1 quad)) (.lvf vf18 (&-> v1-0 plane 2 quad)) - (.lvf vf19 (&-> v1-0 plane 3 quad)) - ) + (.lvf vf19 (&-> v1-0 plane 3 quad))) (.mul.x.vf acc vf16 vf9) (.add.mul.y.vf acc vf17 vf9 acc) (.add.mul.z.vf acc vf18 vf9 acc) @@ -120,15 +105,12 @@ (.mov a0-1 vf10) (.pcgtw a0-2 0 a0-1) (.ppach a0-3 (the-as uint128 0) a0-2) - (zero? (logand (the-as int v1-3) (the-as int a0-3))) - ) - ) + (zero? (logand (the-as int v1-3) (the-as int a0-3))))) (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 @@ -137,81 +119,60 @@ ) (< shifted 0) ) - |# + |# ) (defun error-sphere ((arg0 drawable-error) (arg1 string)) (when *artist-error-spheres* (when (vis-cull (-> arg0 id)) (when (sphere-cull (-> arg0 bsphere)) - (add-debug-sphere - #t - (bucket-id debug) - (-> arg0 bsphere) - (-> arg0 bsphere w) - (new 'static 'rgba :r #x80 :a #x80) - ) - (add-debug-text-3d #t (bucket-id debug-no-zbuf) arg1 (-> arg0 bsphere) (font-color white) (the-as vector2h #f)) - ) - ) - ) + (add-debug-sphere #t (bucket-id debug) (-> arg0 bsphere) (-> arg0 bsphere w) (new 'static 'rgba :r #x80 :a #x80)) + (add-debug-text-3d #t (bucket-id debug-no-zbuf) arg1 (-> arg0 bsphere) (font-color white) (the-as vector2h #f))))) 0 - (none) - ) + (none)) (defmethod login ((this drawable)) - this - ) + this) (defmethod draw ((this drawable) (arg0 drawable) (arg1 display-frame)) 0 - (none) - ) + (none)) (defmethod collide-with-box ((this drawable) (arg0 int) (arg1 collide-list)) 0 - (none) - ) + (none)) (defmethod collide-y-probe ((this drawable) (arg0 int) (arg1 collide-list)) 0 - (none) - ) + (none)) (defmethod collide-ray ((this drawable) (arg0 int) (arg1 collide-list)) 0 - (none) - ) + (none)) (defmethod collect-ambients ((this drawable) (arg0 sphere) (arg1 int) (arg2 ambient-list)) 0 - (none) - ) + (none)) (defmethod collect-stats ((this drawable)) 0 - (none) - ) + (none)) (defmethod debug-draw ((this drawable) (arg0 drawable) (arg1 display-frame)) 0 - (none) - ) + (none)) (defmethod draw ((this drawable-error) (arg0 drawable-error) (arg1 display-frame)) (error-sphere arg0 (-> arg0 name)) - (none) - ) + (none)) (defmethod unpack-vis ((this drawable) (arg0 (pointer int8)) (arg1 (pointer int8))) - arg1 - ) + arg1) (define *edit-instance* (the-as string #f)) (when *debug-segment* - (define *instance-mem-usage* (new 'debug 'memory-usage-block)) - ) + (define *instance-mem-usage* (new 'debug 'memory-usage-block))) (defun-debug find-instance-by-name ((arg0 string)) (dotimes (s5-0 (-> *level* length)) @@ -224,30 +185,12 @@ ((drawable-tree-instance-shrub) (let ((s2-0 (-> (the-as drawable-tree-instance-shrub v1-7) info prototype-inline-array-shrub))) (dotimes (s1-0 (-> s2-0 length)) - (if (string= arg0 (the-as string (-> s2-0 data s1-0 name))) - (return (-> s2-0 data s1-0)) - ) - ) - ) - ) + (if (string= arg0 (the-as string (-> s2-0 data s1-0 name))) (return (-> s2-0 data s1-0)))))) ((drawable-tree-instance-tie) (let ((s2-1 (-> (the-as drawable-tree-instance-tie v1-7) prototypes prototype-array-tie))) (dotimes (s1-1 (-> s2-1 length)) - (if (string= arg0 (the-as string (-> s2-1 array-data s1-1 name))) - (return (-> s2-1 array-data s1-1)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (the-as prototype-bucket #f) - ) + (if (string= arg0 (the-as string (-> s2-1 array-data s1-1 name))) (return (-> s2-1 array-data s1-1))))))))))))) + (the-as prototype-bucket #f)) (defun-debug find-instance-by-index ((arg0 type) (arg1 int) (arg2 bsp-header)) (dotimes (v1-0 (-> *level* length)) @@ -262,56 +205,28 @@ ((drawable-tree-instance-shrub) (when (= arg0 (-> t1-3 type)) (let ((v1-2 (-> (the-as drawable-tree-instance-shrub t1-3) info prototype-inline-array-shrub))) - (return (-> v1-2 data arg1)) - ) - ) - ) + (return (-> v1-2 data arg1))))) ((drawable-tree-instance-tie) (when (= arg0 (-> t1-3 type)) (let ((v1-5 (-> (the-as drawable-tree-instance-tie t1-3) prototypes prototype-array-tie))) - (return (-> v1-5 array-data arg1)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (the-as prototype-bucket #f) - ) + (return (-> v1-5 array-data arg1)))))))))))))) + (the-as prototype-bucket #f)) (defun-debug prototype-bucket-type ((arg0 prototype-bucket)) (case (-> arg0 geometry 1 type) - ((prototype-shrubbery shrubbery) - instance-shrubbery - ) - ((prototype-tie prototype-tie tie-fragment) - instance-tie - ) - ) - ) + ((prototype-shrubbery shrubbery) instance-shrubbery) + ((prototype-tie prototype-tie tie-fragment) instance-tie))) (defun-debug prototype-bucket-recalc-fields ((arg0 prototype-bucket)) (case (prototype-bucket-type arg0) - ((instance-shrubbery) - (set! (-> arg0 rdists x) (/ 1.0 (- (-> arg0 dists w) (-> arg0 dists x)))) - ) + ((instance-shrubbery) (set! (-> arg0 rdists x) (/ 1.0 (- (-> arg0 dists w) (-> arg0 dists x))))) (else - (set! (-> arg0 dists z) (+ (-> arg0 dists x) (* 0.33333334 (- (-> arg0 dists w) (-> arg0 dists x))))) - (set! (-> arg0 rdists x) (/ 1.0 (- (-> arg0 dists z) (-> arg0 dists x)))) - ) - ) + (set! (-> arg0 dists z) (+ (-> arg0 dists x) (* 0.33333334 (- (-> arg0 dists w) (-> arg0 dists x))))) + (set! (-> arg0 rdists x) (/ 1.0 (- (-> arg0 dists z) (-> arg0 dists x)))))) (set! (-> arg0 rdists z) (/ 1.0 (- (-> arg0 dists w) (-> arg0 dists z)))) (set! (-> arg0 dists y) (* 0.5 (-> arg0 dists x))) (set! (-> arg0 rdists y) (/ 1.0 (-> arg0 dists y))) - arg0 - ) - + arg0) #| (defun-debug draw-instance-info ((arg0 string)) @@ -526,16 +441,14 @@ (vf29 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (set! sv-16 arg0) (logclear! (-> arg1 status) (draw-status was-drawn)) (when (zero? (logand (-> arg1 status) (draw-status hidden no-anim no-skeleton-update))) (let ((s4-0 (the-as vector (+ 48 (the-as int (scratchpad-object int))))) (vu-lgt (the-as vu-lights (+ 64 (the-as int (scratchpad-object int))))) - (tod *time-of-day-context*) - ) + (tod *time-of-day-context*)) (.lvf vf16 (&-> arg1 origin quad)) (.lvf vf17 (&-> arg1 bounds quad)) (.mul.x.vf vf16 vf16 vf0 :mask #b1000) @@ -550,127 +463,83 @@ (set! (-> tod 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)) - ) + (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 (-> tod title-light-group)) a1-1 s0-0) - (vector-matrix*! (the-as vector (-> tod 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! vu-lgt (-> tod title-light-group)) - ) + (vector-matrix*! (the-as vector (-> tod 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! vu-lgt (-> tod title-light-group))) (else - (let ((interp (-> arg1 secondary-interp)) - (cur-interp (-> arg1 current-secondary-interp)) - (shadow-msk (-> arg1 shadow-mask)) - (lev-idx (-> arg1 level-index)) - (lgt (-> tod light-group (-> *target* draw light-index))) - (cur-lgt (new 'stack-no-clear 'light-group)) - ) - (cond - ((= (-> arg1 light-index) 255) - ) - ((= lev-idx 2) - (set! lgt (-> tod light-group (-> arg1 light-index))) - ) - (else - (set! lgt (-> tod moods lev-idx light-group (-> arg1 light-index))) - ) - ) - (when (not (or (= lev-idx 2) (zero? shadow-msk))) - (let* ((lgt-msk-0 (-> tod light-masks-0 lev-idx)) - (lgt-msk-1 (-> tod light-masks-1 lev-idx)) - (lgt-interp (-> tod light-interp lev-idx)) - (a0-13 (logand lgt-msk-0 shadow-msk)) - (v1-18 (logand lgt-msk-1 shadow-msk)) - ) - (cond - ((and (zero? a0-13) (zero? v1-18)) - ) - (else - (set! interp (cond - ((and (nonzero? a0-13) (nonzero? v1-18)) - 1.0 - ) - ((zero? a0-13) - (quad-copy! (the-as pointer cur-lgt) (the-as pointer lgt) 12) - (set! lgt cur-lgt) - (set! (-> lgt dir1 levels x) 0.0) - lgt-interp - ) - (else - (quad-copy! (the-as pointer cur-lgt) (the-as pointer lgt) 12) - (set! lgt cur-lgt) - (set! (-> lgt dir0 levels x) 0.0) - (- 1.0 lgt-interp) - ) - ) - ) - ) - ) - ) - ) - (if *teleport* - (set! cur-interp interp) - ) - (when (not (or (paused?) (= interp cur-interp))) - (let ((f0-15 (- cur-interp interp))) - (set! cur-interp (cond - ((< (fabs f0-15) 0.2) - interp - ) - ((< f0-15 0.0) - (+ 0.2 cur-interp) - ) - (else - (+ -0.2 cur-interp) - ) - ) - ) - ) - (set! (-> arg1 current-secondary-interp) cur-interp) - ) - (cond - ((= cur-interp 0.0) - (vu-lights<-light-group! vu-lgt lgt) - ) - (else - (if (!= lgt cur-lgt) - (quad-copy! (the-as pointer cur-lgt) (the-as pointer lgt) 12) - ) - (let ((f0-20 (- 1.0 cur-interp))) - (set! (-> cur-lgt dir0 levels x) (* (-> cur-lgt dir0 levels x) f0-20)) - (set! (-> cur-lgt dir0 levels y) (* (-> cur-lgt dir0 levels y) f0-20)) - (set! (-> cur-lgt dir1 levels x) (* (-> cur-lgt dir1 levels x) f0-20)) - (set! (-> cur-lgt dir1 levels y) (* (-> cur-lgt dir1 levels y) f0-20)) - (set! (-> cur-lgt dir2 levels x) (* (-> cur-lgt dir2 levels x) f0-20)) - (set! (-> cur-lgt dir2 levels y) (* (-> cur-lgt dir2 levels y) f0-20)) - ) - (vu-lights<-light-group! vu-lgt cur-lgt) - ) - ) - ) - (.lvf vf2 (&-> vu-lgt color 0 quad)) - (.lvf vf3 (&-> vu-lgt color 1 quad)) - (.lvf vf4 (&-> vu-lgt color 2 quad)) - (.lvf vf5 (&-> vu-lgt 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 (&-> vu-lgt color 0 quad) vf2) - (.svf (&-> vu-lgt color 1 quad) vf3) - (.svf (&-> vu-lgt color 2 quad) vf4) - (.svf (&-> vu-lgt ambient quad) vf5) - (.mov v1-37 vf5) - ) - ) + (let ((interp (-> arg1 secondary-interp)) + (cur-interp (-> arg1 current-secondary-interp)) + (shadow-msk (-> arg1 shadow-mask)) + (lev-idx (-> arg1 level-index)) + (lgt (-> tod light-group (-> *target* draw light-index))) + (cur-lgt (new 'stack-no-clear 'light-group))) + (cond + ((= (-> arg1 light-index) 255)) + ((= lev-idx 2) (set! lgt (-> tod light-group (-> arg1 light-index)))) + (else (set! lgt (-> tod moods lev-idx light-group (-> arg1 light-index))))) + (when (not (or (= lev-idx 2) (zero? shadow-msk))) + (let* ((lgt-msk-0 (-> tod light-masks-0 lev-idx)) + (lgt-msk-1 (-> tod light-masks-1 lev-idx)) + (lgt-interp (-> tod light-interp lev-idx)) + (a0-13 (logand lgt-msk-0 shadow-msk)) + (v1-18 (logand lgt-msk-1 shadow-msk))) + (cond + ((and (zero? a0-13) (zero? v1-18))) + (else + (set! interp + (cond + ((and (nonzero? a0-13) (nonzero? v1-18)) 1.0) + ((zero? a0-13) + (quad-copy! (the-as pointer cur-lgt) (the-as pointer lgt) 12) + (set! lgt cur-lgt) + (set! (-> lgt dir1 levels x) 0.0) + lgt-interp) + (else + (quad-copy! (the-as pointer cur-lgt) (the-as pointer lgt) 12) + (set! lgt cur-lgt) + (set! (-> lgt dir0 levels x) 0.0) + (- 1.0 lgt-interp)))))))) + (if *teleport* (set! cur-interp interp)) + (when (not (or (paused?) (= interp cur-interp))) + (let ((f0-15 (- cur-interp interp))) + (set! cur-interp + (cond + ((< (fabs f0-15) 0.2) interp) + ((< f0-15 0.0) (+ 0.2 cur-interp)) + (else (+ -0.2 cur-interp))))) + (set! (-> arg1 current-secondary-interp) cur-interp)) + (cond + ((= cur-interp 0.0) (vu-lights<-light-group! vu-lgt lgt)) + (else + (if (!= lgt cur-lgt) (quad-copy! (the-as pointer cur-lgt) (the-as pointer lgt) 12)) + (let ((f0-20 (- 1.0 cur-interp))) + (set! (-> cur-lgt dir0 levels x) (* (-> cur-lgt dir0 levels x) f0-20)) + (set! (-> cur-lgt dir0 levels y) (* (-> cur-lgt dir0 levels y) f0-20)) + (set! (-> cur-lgt dir1 levels x) (* (-> cur-lgt dir1 levels x) f0-20)) + (set! (-> cur-lgt dir1 levels y) (* (-> cur-lgt dir1 levels y) f0-20)) + (set! (-> cur-lgt dir2 levels x) (* (-> cur-lgt dir2 levels x) f0-20)) + (set! (-> cur-lgt dir2 levels y) (* (-> cur-lgt dir2 levels y) f0-20))) + (vu-lights<-light-group! vu-lgt cur-lgt)))) + (.lvf vf2 (&-> vu-lgt color 0 quad)) + (.lvf vf3 (&-> vu-lgt color 1 quad)) + (.lvf vf4 (&-> vu-lgt color 2 quad)) + (.lvf vf5 (&-> vu-lgt 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 (&-> vu-lgt color 0 quad) vf2) + (.svf (&-> vu-lgt color 1 quad) vf3) + (.svf (&-> vu-lgt color 2 quad) vf4) + (.svf (&-> vu-lgt ambient quad) vf5) + (.mov v1-37 vf5))) (if *display-lights* - (add-debug-lights #t (bucket-id debug) (the-as (inline-array light) (-> tod light-group)) (-> arg1 origin)) - ) + (add-debug-lights #t (bucket-id debug) (the-as (inline-array light) (-> tod light-group)) (-> arg1 origin))) (let ((at-0 *math-camera*)) (.lvf vf16 (&-> at-0 plane 0 quad)) (.lvf vf17 (&-> at-0 plane 1 quad)) @@ -683,8 +552,7 @@ (.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)) - ) + (.lvf vf27 (&-> at-0 camera-rot vector 3 quad))) (let ((v1-42 (the-as vector (+ 176 (the-as int (scratchpad-object int)))))) (.lvf vf15 (&-> s4-0 quad)) (.mul.w.vf acc vf27 vf0) @@ -708,137 +576,92 @@ ((>= (-> arg1 force-lod) 0) (set! lod-to-use (-> arg1 force-lod)) (if (#if (not PC_PORT) - (< (-> arg1 lod-set lod (-> arg1 lod-set max-lod) dist) cam-dist) - (and (-> *pc-settings* ps2-lod-dist?) (< (-> arg1 lod-set lod (-> arg1 lod-set max-lod) dist) cam-dist))) - (return #f) - ) - ) + (< (-> arg1 lod-set lod (-> arg1 lod-set max-lod) dist) cam-dist) + (and (-> *pc-settings* ps2-lod-dist?) (< (-> 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) - ) - ) - ) - ) + (while (and (< lod-to-use (-> arg1 lod-set max-lod)) (< (-> arg1 lod-set lod lod-to-use dist) cam-dist)) + (+! lod-to-use 1))))) ;; og:preserve-this lod hacks! (with-pc (if (not (-> *pc-settings* ps2-lod-dist?)) - (set! lod-to-use (minmax (-> *pc-settings* lod-force-actor) 0 (-> arg1 lod-set max-lod)))) - ) + (set! lod-to-use (minmax (-> *pc-settings* lod-force-actor) 0 (-> arg1 lod-set max-lod))))) (if (#if (not PC_PORT) - (and (< (-> arg1 lod-set lod lod-to-use dist) cam-dist) (< (-> arg1 force-lod) 0)) - (and (-> *pc-settings* ps2-lod-dist?) (< (-> arg1 lod-set lod lod-to-use dist) cam-dist) (< (-> arg1 force-lod) 0)) - ) - (return #f) - ) + (and (< (-> arg1 lod-set lod lod-to-use dist) cam-dist) (< (-> arg1 force-lod) 0)) + (and (-> *pc-settings* ps2-lod-dist?) (< (-> 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)) - ) + (a0-26 (+ (-> arg1 sink-group merc-sink foreground-texture-page) 6))) (when (#if (not PC_PORT) - (not (logtest? (-> arg1 status) (draw-status do-not-check-distance))) - (and (-> *pc-settings* ps2-lod-dist?) (not (logtest? (-> arg1 status) (draw-status do-not-check-distance)))) - ) - (if (< cam-dist (-> v1-64 closest-object a0-26)) - (set! (-> v1-64 closest-object a0-26) cam-dist) - ) + (not (logtest? (-> arg1 status) (draw-status do-not-check-distance))) + (and (-> *pc-settings* ps2-lod-dist?) (not (logtest? (-> arg1 status) (draw-status do-not-check-distance))))) + (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) - ) - ) - ) - ) + ((< 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 needs-clip)) - (logclear! (-> arg1 status) (draw-status needs-clip)) - ) + (logior! (-> arg1 status) (draw-status needs-clip)) + (logclear! (-> arg1 status) (draw-status needs-clip))) (logior! (-> arg1 status) (draw-status was-drawn)) - (if (logtest? (-> arg1 status) (draw-status skip-bones)) - (return #f) - ) - (draw-bones arg1 arg3 cam-dist) - ) + (if (logtest? (-> arg1 status) (draw-status skip-bones)) (return #f)) + (draw-bones arg1 arg3 cam-dist)) (when (and (< lod-to-use (-> arg1 cur-lod)) (logtest? (-> arg1 status) (draw-status has-joint-channels))) ;; og:preserve-this added this check for PC port to prevent memory corruption (if (< (-> *matrix-engine* length) MATRIX_ENGINE_AMOUNT) - (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) - ) - ) - ) - ) - ) - ) + (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))))))) 0 - (none) - ) - ) + (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 was-drawn)) (when (zero? (logand (-> arg1 status) (draw-status hidden no-anim no-skeleton-update))) (let ((v1-6 (the-as vu-lights (+ 64 (scratchpad-object int)))) - (a0-3 *hud-lights*) - ) + (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)) - ) + (set! (-> v1-6 ambient quad) (-> a0-3 ambient quad))) (lod-set! arg1 0) (logior! (-> arg1 status) (draw-status was-drawn)) - (draw-bones-hud arg1 arg3) - ) + (draw-bones-hud arg1 arg3)) 0 - (none) - ) + (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) - ) + (none)) (defun foreground-engine-execute ((arg0 engine) (arg1 display-frame) (arg2 int) (arg3 int)) (let ((s4-0 (-> *display* frames (-> *display* on-screen) frame global-buf base))) (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))) (let ((a1-2 (+ (+ (* arg3 32) 272 (* 2608 arg2)) (the-as int *level*))) - (s2-1 (-> arg1 global-buf)) - ) + (s2-1 (-> arg1 global-buf))) ; (let ((v1-14 (-> s2-1 base))) ; (.sync.l) ; (.cache dxwbin v1-14 0) @@ -848,65 +671,45 @@ ; (.sync.l) 0 (bones-init s2-1 (the-as dma-foreground-sink-group a1-2)) - (execute-connections arg0 s2-1) - ) + (execute-connections arg0 s2-1)) (bones-wrapup) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #xbe :g #x55 :b #x82 :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xbe :g #x55 :b #x82 :a #x80))) (let ((v1-24 *dma-mem-usage*)) (when (nonzero? v1-24) (set! (-> v1-24 length) (max 36 (-> v1-24 length))) (set! (-> v1-24 data 35 name) "pris-fragment") (+! (-> v1-24 data 35 count) 1) (+! (-> v1-24 data 35 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s4-0)) - ) - (set! (-> v1-24 data 35 total) (-> v1-24 data 35 used)) - ) - ) - ) + (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s4-0))) + (set! (-> v1-24 data 35 total) (-> v1-24 data 35 used))))) ;; todo (when (logtest? *vu1-enable-user* (vu1-renderer-mask generic)) (when (nonzero? (-> *merc-globals* first)) (let ((s4-1 (-> *display* frames (-> *display* on-screen) frame global-buf base))) (let ((a0-25 (-> (the-as (pointer uint32) (+ (the-as uint *level*) (* 2608 arg2) (* arg3 32))) 69))) - (generic-merc-add-to-cue (the-as generic-dma-foreground-sink a0-25)) - ) + (generic-merc-add-to-cue (the-as generic-dma-foreground-sink a0-25))) (let ((a0-26 *dma-mem-usage*)) (when (nonzero? a0-26) (set! (-> a0-26 length) (max 87 (-> a0-26 length))) (set! (-> a0-26 data 86 name) "pris-generic") (+! (-> a0-26 data 86 count) 1) (+! (-> a0-26 data 86 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s4-1)) - ) - (set! (-> a0-26 data 86 total) (-> a0-26 data 86 used)) - ) - ) - ) - ) - ) + (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s4-1))) + (set! (-> a0-26 data 86 total) (-> a0-26 data 86 used))))))) (when #t - (let ((v1-41 *shadow-queue*)) - (+! (-> v1-41 cur-run) 1) - ) - ) + (let ((v1-41 *shadow-queue*)) (+! (-> v1-41 cur-run) 1))) 0 - (none) - ) + (none)) (defun-debug main-debug-hook () (when (not (or (= *master-mode* 'menu) (= *master-mode* 'progress))) (execute-connections *debug-engine* #f) ;; (draw-instance-info *stdcon*) ) - (none) - ) + (none)) (define *debug-hook* main-debug-hook) @@ -924,76 +727,41 @@ (nop!) (nop!) (nop!) - (nop!) - ) - ) + (nop!))) "Function to be executed to set up for engine dma" ;; accidental docstring from the original game - ;; update render enables from the debug menu (set! *vu1-enable-user* *vu1-enable-user-menu*) (set! *texture-enable-user* *texture-enable-user-menu*) - ;; reset and display dma memory stats. (when *debug-segment* (when (or *stats-memory* *stats-memory-short*) (dotimes (gp-0 (-> *level* length)) (let ((s5-0 (-> *level* level gp-0))) - (if (= (-> s5-0 status) 'active) - (print-mem-usage (compute-memory-usage s5-0 #f) s5-0 *stdcon*) - ) - ) - ) - ) - (reset! *dma-mem-usage*) - ) - + (if (= (-> s5-0 status) 'active) (print-mem-usage (compute-memory-usage s5-0 #f) s5-0 *stdcon*))))) + (reset! *dma-mem-usage*)) ;; todo shrub matrix - ;; initialize dma buckets that are generic sinks. ;; other renderers may output to these, so do them first. (generic-init-buffers) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; texture uploads ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; next we use the texture system to build DMA commands to load texture. ;; internally, add-tex-to-dma! has special logic to avoid loading textures ;; that won't be used. (though it's pretty basic, it doesn't actually track per-texture usage) - ;; level tfrag's upload if the level is running. (with-profiler "texture-upload" (when (logtest? *texture-enable-user* 1) (dotimes (gp-1 (-> *level* length)) - (let ((a1-2 (-> *level* level gp-1))) - (if (= (-> a1-2 status) 'active) - (add-tex-to-dma! *texture-pool* a1-2 0) - ) - ) - ) - ) + (let ((a1-2 (-> *level* level gp-1))) (if (= (-> a1-2 status) 'active) (add-tex-to-dma! *texture-pool* a1-2 0))))) ;; level pris's upload if the level is running. (when (logtest? *texture-enable-user* 2) (dotimes (gp-2 (-> *level* length)) - (let ((a1-3 (-> *level* level gp-2))) - (if (= (-> a1-3 status) 'active) - (add-tex-to-dma! *texture-pool* a1-3 1) - ) - ) - ) - ) - + (let ((a1-3 (-> *level* level gp-2))) (if (= (-> a1-3 status) 'active) (add-tex-to-dma! *texture-pool* a1-3 1))))) ;; level shrubs upload if the level is loading. (when (logtest? *texture-enable-user* 4) (dotimes (gp-3 (-> *level* length)) - (let ((a1-4 (-> *level* level gp-3))) - (if (= (-> a1-4 status) 'active) - (add-tex-to-dma! *texture-pool* a1-4 2) - ) - ) - ) - ) - + (let ((a1-4 (-> *level* level gp-3))) (if (= (-> a1-4 status) 'active) (add-tex-to-dma! *texture-pool* a1-4 2))))) ;; alpha and common. (when (logtest? *texture-enable-user* 8) (let ((uploaded-common #f)) @@ -1003,30 +771,14 @@ (add-tex-to-dma! *texture-pool* a1-5 3) (when (not uploaded-common) (upload-one-common! *texture-pool* (-> *level* level0)) - (set! uploaded-common #t) - ) - ) - ) - ) + (set! uploaded-common #t))))) (when (not uploaded-common) (upload-one-common! *texture-pool* (-> *level* level0)) - #t - ) - ) - ) - + #t))) ;; water. (when (logtest? *texture-enable-user* 16) (dotimes (gp-5 (-> *level* length)) - (let ((a1-8 (-> *level* level gp-5))) - (if (= (-> a1-8 status) 'active) - (add-tex-to-dma! *texture-pool* a1-8 4) - ) - ) - ) - ) - ) - + (let ((a1-8 (-> *level* level gp-5))) (if (= (-> a1-8 status) 'active) (add-tex-to-dma! *texture-pool* a1-8 4)))))) ;;;;;;;;;;;;; ;; sky ;;;;;;;;;;;;; @@ -1037,50 +789,33 @@ (dma-buffer-add-gs-set dma-buf (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) - (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) - ) - (screen-gradient - dma-buf - (-> *display* bg-clear-color 0) - (-> *display* bg-clear-color 1) - (-> *display* bg-clear-color 2) - (-> *display* bg-clear-color 3) - ) - ) - ) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) + (screen-gradient dma-buf + (-> *display* bg-clear-color 0) + (-> *display* bg-clear-color 1) + (-> *display* bg-clear-color 2) + (-> *display* bg-clear-color 3)))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask sky)) ;; check if we want the sky, and if we actually have textures ready. ;; we generate sky textures on the previous frame and they sit in vram (8160) until the next frame. ;; on the first frame after we request sky, we draw the textures, but they aren't ready until the next frame. (cond - ((and (-> *time-of-day-context* sky) *sky-drawn*) - (render-sky-tng *time-of-day-context*) - ) + ((and (-> *time-of-day-context* sky) *sky-drawn*) (render-sky-tng *time-of-day-context*)) (else - ;; todo - (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) (bucket-id sky-draw)) - (dma-buffer-add-gs-set dma-buf - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) - (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) - (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) - ) - (screen-gradient - dma-buf - (-> *time-of-day-context* erase-color) - (-> *time-of-day-context* erase-color) - (-> *time-of-day-context* erase-color) - (-> *time-of-day-context* erase-color) - ) - ) - ) - ) - ) - ) - - + ;; todo + (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) (bucket-id sky-draw)) + (dma-buffer-add-gs-set dma-buf + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) + (screen-gradient dma-buf + (-> *time-of-day-context* erase-color) + (-> *time-of-day-context* erase-color) + (-> *time-of-day-context* erase-color) + (-> *time-of-day-context* erase-color))))))) ;; update mood lighting, draw sky textures. - (with-profiler "time-of-day" (update-time-of-day *time-of-day-context*)) - + (with-profiler "time-of-day" + (update-time-of-day *time-of-day-context*)) ;; reset the closest object and desired texture masks for all levels. ; (dotimes (v1-150 (-> *level* length)) ; (let ((a0-59 (-> *level* level v1-150))) @@ -1093,241 +828,170 @@ ; ) ; ) (add-ee-profile-frame 'draw :r #x40 :b #x40 :a #x80) - ;;;;;;; OCEAN (with-profiler "ocean" (update-ocean) ;; ocean map update - (draw-ocean) ;; far, mid, near, transition, and texture. + (draw-ocean) ;; far, mid, near, transition, and texture. ) (add-ee-profile-frame 'draw :b #xff :a #x80) - ;; reset MERC (with-profiler "merc" (set! (-> *merc-global-array* count) (the-as uint 0)) (set! *merc-globals* (the-as merc-globals (-> *merc-global-array* globals))) - (set! (-> *shadow-queue* cur-run) (the-as uint 0)) - ) - + (set! (-> *shadow-queue* cur-run) (the-as uint 0))) ;; draw the background! (with-profiler "background" (init-background) (execute-connections *background-draw-engine* (-> *display* frames (-> *display* on-screen) frame)) - ;; finish bg (most of the work is here) (reset! (-> *perf-stats* data 3)) (finish-background) (read! (-> *perf-stats* data 3)) - (update-wait-stats (-> *perf-stats* data 3) (-> *background-work* wait-to-vu0) (the-as uint 0) (the-as uint 0)) - ) - + (update-wait-stats (-> *perf-stats* data 3) (-> *background-work* wait-to-vu0) (the-as uint 0) (the-as uint 0))) ;; perf stats are printed and restarted here, for some reason. (with-profiler "stats" (end-perf-stat-collection) (when (not (paused?)) (when *stats-poly* (dotimes (gp-8 (-> *level* length)) - (let ((v1-193 (-> *level* level gp-8))) - (if (= (-> v1-193 status) 'active) - (collect-stats (-> v1-193 bsp)) - ) - ) - ) - (print-terrain-stats) - ) - (if *display-perf-stats* - (print-perf-stats) - ) - ) - (start-perf-stat-collection) - ) - + (let ((v1-193 (-> *level* level gp-8))) (if (= (-> v1-193 status) 'active) (collect-stats (-> v1-193 bsp))))) + (print-terrain-stats)) + (if *display-perf-stats* (print-perf-stats))) + (start-perf-stat-collection)) ;; draw the foreground engines. (with-profiler "foreground-engines" - (foreground-engine-execute - (-> *level* level-default foreground-draw-engine 0) - (-> *display* frames (-> *display* on-screen) frame) - 2 - 0 - ) - (foreground-engine-execute - (-> *level* level-default foreground-draw-engine 1) - (-> *display* frames (-> *display* on-screen) frame) - 2 - 1 - ) - ) - + (foreground-engine-execute (-> *level* level-default foreground-draw-engine 0) + (-> *display* frames (-> *display* on-screen) frame) + 2 + 0) + (foreground-engine-execute (-> *level* level-default foreground-draw-engine 1) + (-> *display* frames (-> *display* on-screen) frame) + 2 + 1)) ;; handle extra processing for foreground - (let ((gp-9 (-> *display* frames (-> *display* on-screen) frame global-buf))) - (with-profiler "bones" (bones-mtx-calc-execute)) ;; skinning matrix calculation - (with-profiler "gmerc" (generic-merc-execute-all gp-9)) ;; mercneric conversion. - (with-profiler "shadow" (shadow-execute-all gp-9 *shadow-queue*)) - (with-profiler "eyes" (update-eyes)) - ) - + (with-profiler "bones" + (bones-mtx-calc-execute)) ;; skinning matrix calculation + (with-profiler "gmerc" + (generic-merc-execute-all gp-9)) ;; mercneric conversion. + (with-profiler "shadow" + (shadow-execute-all gp-9 *shadow-queue*)) + (with-profiler "eyes" + (update-eyes))) ;; sprite draw (when (logtest? (vu1-renderer-mask sprite) *vu1-enable-user*) (with-profiler "sprite" (swap-fake-shadow-buffers) - (sprite-draw *display*) - ) - ) + (sprite-draw *display*))) ;; debug drawing (with-profiler "debug-draw" (when *debug-segment* (debug-draw-actors *level* *display-actor-marks*) - (collide-shape-draw-debug-marks) - ) - (render-boundaries) - ) - + (collide-shape-draw-debug-marks)) + (render-boundaries)) ;; for some reason we clear the touching list here... (with-profiler "touching" (send-events-for-touching-shapes *touching-list*) - (free-all-prim-nodes *touching-list*) - ) - + (free-all-prim-nodes *touching-list*)) (add-ee-profile-frame 'draw :r #x40 :b #x40 :a #x80) ;; spawn actors, compact heaps, etc. (with-profiler "actors-update" - (actors-update *level*) - ) - (add-ee-profile-frame 'draw :r #x80 :a #x80) - + (actors-update *level*)) + (add-ee-profile-frame 'draw :r #x80 :a #x80) (when (not (paused?)) - (if *stats-collide* - (print-collide-stats) - ) - ) - - (none) - ) + (if *stats-collide* (print-collide-stats))) + (none)) (defun main-draw-hook () "Nice." (real-main-draw-hook) - (none) - ) + (none)) (define *draw-hook* main-draw-hook) - - (defun debug-init-buffer ((arg0 bucket-id) (arg1 gs-zbuf) (arg2 gs-test)) "Initialize a bucket for debug draw with the given zbuf and test settings" (let* ((t0-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (v1-3 (-> t0-0 base)) - ) + (v1-3 (-> t0-0 base))) (let* ((a3-3 t0-0) - (t1-0 (the-as object (-> a3-3 base))) - ) + (t1-0 (the-as object (-> a3-3 base)))) (set! (-> (the-as dma-packet t1-0) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t1-0) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet t1-0) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a3-3 base) (&+ (the-as pointer t1-0) 16)) - ) + (set! (-> a3-3 base) (&+ (the-as pointer t1-0) 16))) (let* ((a3-4 t0-0) - (t1-2 (the-as object (-> a3-4 base))) - ) - (set! (-> (the-as gs-gif-tag t1-2) tag) - (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2) - ) + (t1-2 (the-as object (-> a3-4 base)))) + (set! (-> (the-as gs-gif-tag t1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) (set! (-> (the-as gs-gif-tag t1-2) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a3-4 base) (&+ (the-as pointer t1-2) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a3-4 base) (&+ (the-as pointer t1-2) 16))) (let* ((a3-5 t0-0) - (t1-4 (-> a3-5 base)) - ) + (t1-4 (-> a3-5 base))) (set! (-> (the-as (pointer gs-zbuf) t1-4) 0) arg1) (set! (-> (the-as (pointer gs-reg64) t1-4) 1) (gs-reg64 zbuf-1)) (set! (-> (the-as (pointer gs-test) t1-4) 2) arg2) (set! (-> (the-as (pointer gs-reg64) t1-4) 3) (gs-reg64 test-1)) - (set! (-> a3-5 base) (&+ t1-4 32)) - ) + (set! (-> a3-5 base) (&+ t1-4 32))) (let ((a3-6 (-> t0-0 base))) (let ((a1-4 (the-as object (-> t0-0 base)))) (set! (-> (the-as dma-packet a1-4) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet a1-4) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a1-4) vif1) (new 'static 'vif-tag)) - (set! (-> t0-0 base) (&+ (the-as pointer a1-4) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - arg0 - v1-3 - (the-as (pointer dma-tag) a3-6) - ) - ) - ) - (none) - ) + (set! (-> t0-0 base) (&+ (the-as pointer a1-4) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + arg0 + v1-3 + (the-as (pointer dma-tag) a3-6)))) + (none)) (define *screen-shot* #f) + (defun display-frame-start ((disp display) (new-frame-idx int) (odd-even int)) "Set up a new frame. Call this before drawing anything. new-frame-idx is the display frame that will be set up. odd-even is the odd-even of the new frame" - - ;; due to a HW bug in the PS2, you must set this. ;;(set! (-> (the-as vif-bank #x10003c00) err me0) 1) - ;; figure out how fast we're going compared to the desired. ;; larger = slower than we should. ;; due to vsync, we should never go too fast. (let ((time-ratio (the float (+ (/ (timer-count (the-as timer-bank #x10000800)) (the-as uint *ticks-per-frame*)) 1 ;; so we round up. - ) - ) - - ) - ) - + )))) (let ((float-time-ratio (/ (the float (timer-count (the-as timer-bank #x10000800))) (the float *ticks-per-frame*)))) ;; on the PS2, if you have > 1/60 seconds between frames, it means you missed a vsync. ;; this doesn't seem to be the case on my machine. It appears that glfwSwapBuffers sometimes returns ~1 ms early, ;; making the next frame ~1 ms too long. - ;; to work around with, we internally run the game at 60 fps if it appears to be slightly too slow. ;; if we actually do miss a frame, the time ratio will be around 2. - (#when PC_PORT - (if (< float-time-ratio 1.3) - (set! time-ratio 1.0) - ) + (if (< float-time-ratio 1.3) (set! time-ratio 1.0)) #| (if (> time-ratio 1.) (format #t "LAG ~f frames~%" (- time-ratio 1.)) ) |# - ) - ) - - + )) ;; inform display system of our speed. This will adjust the scaling used in all physics calculations (set-time-ratios *display* time-ratio) - ;; set our "old" counters. In the event of a game load/save, these will not jump (set! (-> disp old-base-frame-counter) (-> disp base-frame-counter)) (set! (-> disp old-game-frame-counter) (-> disp game-frame-counter)) @@ -1337,12 +1001,10 @@ (set! (-> disp old-part-frame-counter) (-> disp part-frame-counter)) (set! (-> disp old-actual-frame-counter) (-> disp actual-frame-counter)) (set! (-> disp old-real-actual-frame-counter) (-> disp real-actual-frame-counter)) - ;; get the increment in seconds unit. (let ((scaled-seconds (* (the int time-ratio) (the int (-> disp time-factor))))) ;; tell the sparticle system (set-particle-frame-time (min (seconds 0.04) scaled-seconds)) - ;; the "not real" frame counters only count when unpaused (when (not (paused?)) ;; these count by scaled time @@ -1353,188 +1015,119 @@ ;; this counts actual frames, not doubling for lag. Will count 1 per frame drawn (+! (-> disp actual-frame-counter) 1) ;; game counter will count seconds that we're not in a movie - (if (not (movie?)) - (+! (-> disp game-frame-counter) scaled-seconds) - ) - ) + (if (not (movie?)) (+! (-> disp game-frame-counter) scaled-seconds))) ;; real counts like base, but increments when paused - (+! (-> disp real-frame-counter) scaled-seconds) - ) + (+! (-> disp real-frame-counter) scaled-seconds)) ;; actual frames, lag counts as 2x - (+! (-> disp real-integral-frame-counter) (the int time-ratio)) - ) + (+! (-> disp real-integral-frame-counter) (the int time-ratio))) ;; actual real frames (for real) (+! (-> disp real-actual-frame-counter) 1) - ;; reset the timer. (timer-reset (the-as timer-bank #x10000800)) - ;; take a screenshot, if desired (when *screen-shot* - (if *debug-segment* - (store-image odd-even) - ) - (set! *screen-shot* #f) - ) - + (if *debug-segment* (store-image odd-even)) + (set! *screen-shot* #f)) ;; set up the frame object. (let ((new-frame (-> disp frames new-frame-idx frame))) ;; profile setup (when *debug-segment* (dotimes (s2-0 2) - (reset (-> new-frame profile-bar s2-0)) - ) - ) + (reset (-> new-frame profile-bar s2-0)))) ;; right now, the old frame is being rendered. ;; if we set *sync-dma*, we will wait here until it finishes rendering. - (if *sync-dma* - (sync-path 0 0) - ) - + (if *sync-dma* (sync-path 0 0)) ;; reset the global dma buffer. (let ((v1-56 (-> new-frame global-buf))) (set! (-> v1-56 base) (-> v1-56 data)) - (set! (-> v1-56 end) (&-> v1-56 data-buffer (-> v1-56 allocated-length))) - ) - + (set! (-> v1-56 end) (&-> v1-56 data-buffer (-> v1-56 allocated-length)))) ;; reset the debug dma buffer (when *debug-segment* (let ((v1-59 (-> new-frame debug-buf))) (set! (-> v1-59 base) (-> v1-59 data)) - (set! (-> v1-59 end) (&-> v1-59 data-buffer (-> v1-59 allocated-length))) - ) - ) - + (set! (-> v1-59 end) (&-> v1-59 data-buffer (-> v1-59 allocated-length))))) ;; reset the calc buffer. This holds the buckets themselves and what is sent ;; to actually draw the frame. (let ((v1-60 (-> new-frame calc-buf))) (set! (-> v1-60 base) (-> v1-60 data)) - (set! (-> v1-60 end) (&-> v1-60 data-buffer (-> v1-60 allocated-length))) - ) - + (set! (-> v1-60 end) (&-> v1-60 data-buffer (-> v1-60 allocated-length)))) ;; the default buffer holds a DMA chain to fully reset the GS. ;; reinitialize it, just to be safe (default-buffer-init *default-regs-buffer*) ;; and add it to the very beginning of the calc buf (let* ((v1-61 (-> new-frame calc-buf)) (a2-1 *default-regs-buffer*) - (a0-28 (the-as object (-> v1-61 base))) - ) - (set! (-> (the-as dma-packet a0-28) dma) - (new 'static 'dma-tag - :id (dma-tag-id call) - :addr (the-as int (-> a2-1 data)) - ) - ) + (a0-28 (the-as object (-> v1-61 base)))) + (set! (-> (the-as dma-packet a0-28) dma) (new 'static 'dma-tag :id (dma-tag-id call) :addr (the-as int (-> a2-1 data)))) (set! (-> (the-as dma-packet a0-28) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-28) vif1) (new 'static 'vif-tag)) - (set! (-> v1-61 base) (&+ (the-as pointer a0-28) 16)) - ) - + (set! (-> v1-61 base) (&+ (the-as pointer a0-28) 16))) ;; could be used for debugging or something, but is set to nothing. (*pre-draw-hook* (-> new-frame calc-buf)) - ;; reset debugging stuff (when (not (paused?)) (clear *stdcon1*) - (debug-reset-buffers) - ) - + (debug-reset-buffers)) ;; add the buckets - (set! (-> new-frame bucket-group) (dma-buffer-add-buckets (-> new-frame calc-buf) BUCKET_COUNT)) - ) - + (set! (-> new-frame bucket-group) (dma-buffer-add-buckets (-> new-frame calc-buf) BUCKET_COUNT))) ;; initialize the debug bucket (debug-init-buffer (bucket-id debug-no-zbuf) - (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1) - (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)) - ) - + (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1) + (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) ;; setup our drawing offset for even/odd offset (set-draw-env-offset (-> disp frames new-frame-idx draw) 2048 2048 odd-even) - ;; read controllers (service-cpads) ;; now we are ready to run a frame! - (none) - ) + (none)) (defun display-frame-finish ((disp display)) "End drawing. Call this after drawing everything. Note that this does not start a DMA transfer, just finishes up the buffered data for the frame." (let* ((this-frame (-> disp frames (-> disp on-screen) frame)) - (this-calc-buf (-> this-frame calc-buf)) - ) + (this-calc-buf (-> this-frame calc-buf))) ;; post draw stuff (tie-init-buffers this-calc-buf) (merc-vu1-init-buffers) (*post-draw-hook* (-> disp frames (-> disp on-screen) frame calc-buf)) - ;; iterate through all buckets and append a final GS state reset. (dotimes (bucket-idx BUCKET_COUNT) (let* ((this-global-buf (-> this-frame global-buf)) - (a2-0 (-> this-global-buf base)) - ) + (a2-0 (-> this-global-buf base))) ;; clear GS state after the bucket (let* ((a0-3 this-global-buf) (t0-0 *default-regs-buffer*) - (a1-0 (the-as object (-> a0-3 base))) - ) - (set! (-> (the-as dma-packet a1-0) dma) - (new 'static 'dma-tag - :id (dma-tag-id call) - :addr (the-as int (-> t0-0 data)) - ) - ) + (a1-0 (the-as object (-> a0-3 base)))) + (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :id (dma-tag-id call) :addr (the-as int (-> t0-0 data)))) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag :irq #x1)) (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag)) - (set! (-> a0-3 base) (&+ (the-as pointer a1-0) 16)) - ) + (set! (-> a0-3 base) (&+ (the-as pointer a1-0) 16))) (let ((a3-4 (-> this-global-buf base))) (let ((a0-4 (the-as object (-> this-global-buf base)))) - (set! - (-> (the-as dma-packet a0-4) dma) - (new 'static 'dma-tag :id (dma-tag-id next)) - ) + (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag)) - (set! (-> this-global-buf base) (&+ (the-as pointer a0-4) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (the-as bucket-id bucket-idx) - a2-0 - (the-as (pointer dma-tag) a3-4) - ) - ) - ) - ) + (set! (-> this-global-buf base) (&+ (the-as pointer a0-4) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (the-as bucket-id bucket-idx) + a2-0 + (the-as (pointer dma-tag) a3-4))))) ;; append a FLUSHE and IRQ to end the calc-buf (let* ((v1-14 this-calc-buf) - (a0-10 (the-as object (-> v1-14 base))) - ) - (set! (-> (the-as dma-packet a0-10) dma) - (new 'static 'dma-tag :id (dma-tag-id cnt)) - ) - (set! (-> (the-as dma-packet a0-10) vif0) - (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1) - ) + (a0-10 (the-as object (-> v1-14 base)))) + (set! (-> (the-as dma-packet a0-10) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-10) vif0) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) (set! (-> (the-as dma-packet a0-10) vif1) (new 'static 'vif-tag :irq #x1)) - (set! (-> v1-14 base) (&+ (the-as pointer a0-10) 16)) - ) + (set! (-> v1-14 base) (&+ (the-as pointer a0-10) 16))) ;; patch the buckets. Now sending the calc buf will send everything! (dma-buffer-patch-buckets (-> this-frame bucket-group) BUCKET_COUNT) ;; append the final END. (let* ((v1-15 this-calc-buf) - (a0-13 (the-as object (-> v1-15 base))) - ) - (set! (-> (the-as dma-packet a0-13) dma) - (new 'static 'dma-tag :id (dma-tag-id end)) - ) + (a0-13 (the-as object (-> v1-15 base)))) + (set! (-> (the-as dma-packet a0-13) dma) (new 'static 'dma-tag :id (dma-tag-id end))) (set! (-> (the-as (pointer uint64) a0-13) 1) (the-as uint 0)) - (set! (-> v1-15 base) (&+ (the-as pointer a0-13) 16)) - ) + (set! (-> v1-15 base) (&+ (the-as pointer a0-13) 16))) ;; final cache flush after finishing DMA chains (flush-cache 0) ;; print debug stats. @@ -1545,33 +1138,23 @@ (calc-start (-> this-calc-buf data)) (global-current (-> global-buf base)) (global-start (-> global-buf data)) - (global-end (-> global-buf end)) - ) + (global-end (-> global-buf end))) (format *stdcon* "~0kvu1 buf = ~d~%" (&- calc-current (the-as uint calc-start))) (format *stdcon* "~0kglobal buf = ~d~%" (&- global-current (the-as uint global-start))) (format *stdcon* "~0kbase = #x~x~%" global-current) - (format *stdcon* "~0kend = #x~x~%" global-end) - ) - ) - ) - ) - disp - ) + (format *stdcon* "~0kend = #x~x~%" global-end))))) + disp) (defun determine-pause-mode () "Update pause system" - ;; debug frame advance (when (and *debug-pause* (= *master-mode* 'pause)) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons start r2)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons start r2)) - (while (and (= *master-mode* 'pause) - (not (cpad-pressed? 0 start r2))) + (while (and (= *master-mode* 'pause) (not (cpad-pressed? 0 start r2))) (sync-path 0 0) - (service-cpads) - ) - (toggle-pause) - ) + (service-cpads)) + (toggle-pause)) (when (or (not *progress-process*) (can-go-back? (-> *progress-process* 0))) (if (or (cpad-pressed? 0 select r3 start) ;; push pause (and (logtest? (-> *cpad-list* cpads 0 valid) 128) ;; controller lost @@ -1579,30 +1162,20 @@ (>= (-> *display* base-frame-counter) (-> *game-info* blackout-time)) ;; this is a hack. this is initialized to (seconds 1000). It prevents controller-loss pause from ;; triggering in the first few seconds of gameplay. - (< (seconds 1003) (-> *display* real-frame-counter)) - ) + (< (seconds 1003) (-> *display* real-frame-counter))) (and (cpad-pressed? 0 r2) (paused?)) ;; debug press - *pause-lock* - ) - (toggle-pause) - ) - ) + *pause-lock*) + (toggle-pause))) ;; if we toggled out of pause, kill it. - (if (!= *master-mode* 'progress) - (deactivate-progress) - ) - 0 - ) + (if (!= *master-mode* 'progress) (deactivate-progress)) + 0) (define *surrogate-dma-buffer* (the dma-buffer #f)) (#when PC_PORT (define *disasm-count* 0) - (defmacro disasm-next-dma (&key (count 1)) - `(set! *disasm-count* ,count) - ) - ) + `(set! *disasm-count* ,count))) (defun display-sync ((disp display)) "Switch frames! This assumes that you have called display-frame-finish on the current frame. @@ -1613,23 +1186,19 @@ as soon as we don't fit into 60 fps) - start rendering the current frame - initialize DMA buffers for the next frame drawing, advance to next frame" - ;; wait for rendering to finish. (sync-path 0 0) ;; remember when. ;; og:preserve-this setting this to 0 to get rid of lag compensation in PC port, since it's not helpful - (set! (-> disp frames (-> disp on-screen) frame run-time) (#if PC_PORT 0 (the-as int (timer-count (the-as timer-bank #x10000800))))) - + (set! (-> disp frames (-> disp on-screen) frame run-time) + (#if PC_PORT 0 (the-as int (timer-count (the-as timer-bank #x10000800))))) ;; now, do a vsync. If we finished rendering in time, this will just wait until the next. (let ((frame-idx (-> disp on-screen)) - (syncv-result (syncv 0)) - ) - + (syncv-result (syncv 0))) ;; starting here, we are in a new frame ;; syncv returns odd/even (if you miss multiple syncv's due to the sync-path above taking many ;; frames, this will get us back on the correct field) (set! *oddeven* syncv-result) - ;; if we need to change video modes: (when (-> *video-parms* set-video-mode) ;; to GS @@ -1642,17 +1211,12 @@ ;; also stash this parameter so that if things go really wrong and our DMA transfer ;; times out, we can reset-graph to the appropriate video mode (if (or (= (-> *setting-control* current video-mode) 'ntsc) (= (-> *setting-control* current video-mode) 'custom)) - (set! *video-reset-parm* 2) - (set! *video-reset-parm* 3) - ) - (reset-graph 0 1 *video-reset-parm* 1) - ) - ) - + (set! *video-reset-parm* 2) + (set! *video-reset-parm* 3)) + (reset-graph 0 1 *video-reset-parm* 1))) ;; setup the env (Sony functions) (put-display-env (-> disp frames frame-idx display)) (put-draw-env (the-as (pointer gif-tag) (-> disp frames frame-idx gif))) - ;; begin rendering the next frame (let ((dma-buf-to-send (-> disp frames frame-idx frame calc-buf))) (when (nonzero? (dma-buffer-length dma-buf-to-send)) @@ -1660,39 +1224,21 @@ (#when PC_PORT (when (> *disasm-count* 0) (disasm-dma-list (the-as dma-packet (-> dma-buf-to-send data-buffer)) 'details #t #t -1) - (-! *disasm-count* 1) - ) - ) + (-! *disasm-count* 1))) (__send-gfx-dma-chain (the-as dma-bank-source #x10009000) - (cond - ;; some buffer for debugging, not used - (*surrogate-dma-buffer* - *surrogate-dma-buffer* - ) - (else - (-> dma-buf-to-send data-buffer) - ) - ) - ) - ) - ) - + (cond + ;; some buffer for debugging, not used + (*surrogate-dma-buffer* *surrogate-dma-buffer*) + (else (-> dma-buf-to-send data-buffer)))))) (determine-pause-mode) - ;; update display frame (let ((next-frame (+ frame-idx 1))) - (if (< 1 next-frame) - (set! next-frame 0) - ) + (if (< 1 next-frame) (set! next-frame 0)) (set! (-> disp last-screen) (-> disp on-screen)) (set! (-> disp on-screen) next-frame) - ;; initialize next frame - (display-frame-start disp next-frame syncv-result) - ) - ) - (none) - ) + (display-frame-start disp next-frame syncv-result))) + (none)) (defun swap-display ((disp display)) "Swap frames! Synchronizes with rendering and vsync, kicks off the next render, and initializes the @@ -1703,8 +1249,7 @@ (defun-debug marks-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) 1672489.2) (set! (-> a0-0 y) 60862.703) (set! (-> a0-0 z) -13051605.0) @@ -1725,8 +1270,7 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) (send-event *camera* 'set-fov 17294.205) (clear *camera-old-level*) (format *camera-old-level* "village3") @@ -1737,13 +1281,11 @@ (clear *camera-old-stat-string-tfrag-near*) (clear *camera-old-stat-string-total*) (set! *display-camera-old-stats* #t) - (none) - ) + (none)) (defun-debug eddie-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) -427963.66) (set! (-> a0-0 y) 24967.182) (set! (-> a0-0 z) 339465.53) @@ -1764,15 +1306,12 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) - (none) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) + (none)) (defun-debug gregs-jungle-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) 1399233.0) (set! (-> a0-0 y) 39027.11) (set! (-> a0-0 z) -1485580.1) @@ -1793,8 +1332,7 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) (send-event *camera* 'set-fov 11650.845) (clear *camera-old-level*) (format *camera-old-level* "jungle") @@ -1804,13 +1342,11 @@ (clear *camera-old-stat-string-tfrag*) (clear *camera-old-stat-string-tfrag-near*) (clear *camera-old-stat-string-total*) - (none) - ) + (none)) (defun-debug gregs-village1-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) -511224.06) (set! (-> a0-0 y) 157579.95) (set! (-> a0-0 z) 764585.25) @@ -1831,8 +1367,7 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) (send-event *camera* 'set-fov 11650.845) (clear *camera-old-level*) (format *camera-old-level* "village1") @@ -1842,13 +1377,11 @@ (clear *camera-old-stat-string-tfrag*) (clear *camera-old-stat-string-tfrag-near*) (clear *camera-old-stat-string-total*) - (none) - ) + (none)) (defun-debug gregs-texture-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) 1103816.0) (set! (-> a0-0 y) 96275.71) (set! (-> a0-0 z) -632064.5) @@ -1869,8 +1402,7 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) (send-event *camera* 'set-fov 11650.845) (clear *camera-old-level*) (format *camera-old-level* "village1") @@ -1880,13 +1412,11 @@ (clear *camera-old-stat-string-tfrag*) (clear *camera-old-stat-string-tfrag-near*) (clear *camera-old-stat-string-total*) - (none) - ) + (none)) (defun-debug gregs-texture2-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) 1954572.9) (set! (-> a0-0 y) 135123.98) (set! (-> a0-0 z) -1028725.44) @@ -1907,8 +1437,7 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) (send-event *camera* 'set-fov 11650.845) (clear *camera-old-level*) (format *camera-old-level* "village1") @@ -1918,13 +1447,11 @@ (clear *camera-old-stat-string-tfrag*) (clear *camera-old-stat-string-tfrag-near*) (clear *camera-old-stat-string-total*) - (none) - ) + (none)) (defun-debug cave-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) -1449013.1) (set! (-> a0-0 y) 15114.015) (set! (-> a0-0 z) -1621305.5) @@ -1945,15 +1472,12 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) - (none) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) + (none)) (defun-debug paals-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) -791260.7) (set! (-> a0-0 y) 50858.62) (set! (-> a0-0 z) -163715.47) @@ -1974,7 +1498,5 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) - (none) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) + (none)) diff --git a/goal_src/jak1/engine/engine/connect.gc b/goal_src/jak1/engine/engine/connect.gc index 8679f9f799..877db6ba6c 100644 --- a/goal_src/jak1/engine/engine/connect.gc +++ b/goal_src/jak1/engine/engine/connect.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") -;; name: connect.gc -;; name in dgo: connect -;; dgos: GAME, ENGINE - ;; This extremely confusing "connection system" allows the connection between ;; "engines" and "processes". Basically, a process can "register" itself with any number of "engines". ;; The "engines" can then iterate through all the connected processes. If a process is destroyed, it will @@ -41,13 +36,10 @@ ;; These terminate on both ends with #f. (deftype connectable (structure) - ((next0 connectable) - (prev0 connectable) - (next1 connectable) - (prev1 connectable) - ) - ) - + ((next0 connectable) + (prev0 connectable) + (next1 connectable) + (prev1 connectable))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; connection @@ -59,21 +51,19 @@ ;; in some cases, the return value is checked for 'dead. (declare-type engine basic) + (deftype connection (connectable) - ((param0 basic) - (param1 int32) - (param2 int32) - (param3 int32) - (quad uint128 2 :overlay-at next0) - ) + ((param0 basic) + (param1 int32) + (param2 int32) + (param3 int32) + (quad uint128 2 :overlay-at next0)) (:methods - (get-engine (connection) engine) - (get-process (connection) process) - (belongs-to-engine? (connection engine) symbol) - (belongs-to-process? (connection process) symbol) - (move-to-dead (connection) connection) - ) - ) + (get-engine (connection) engine) + (get-process (connection) process) + (belongs-to-engine? (connection engine) symbol) + (belongs-to-process? (connection process) symbol) + (move-to-dead (connection) connection))) (defmethod inspect ((this connection)) (format #t "[~8x] ~A~%" this 'connection) @@ -86,8 +76,7 @@ (format #t "~Tparam2: ~A~%" (-> this param2)) (format #t "~Tparam3: ~A~%" (-> this param3)) (format #t "~Tquad[2] @ #x~X~%" (&-> this next0)) - this - ) + this) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; engine @@ -97,124 +86,101 @@ ;; you can iterate over the connections, or run them. ;; the engine is dynamically sized based on how many connections it can store. - - (deftype engine (basic) - ((name basic) - (length int16) - (allocated-length int16) - (engine-time time-frame) ;; frame that we last executed - + ((name basic) + (length int16) + (allocated-length int16) + (engine-time time-frame) ;; frame that we last executed ;; terminating nodes for the next0/prev0 linked lists - (alive-list connectable :inline) - (alive-list-end connectable :inline) - (dead-list connectable :inline) - (dead-list-end connectable :inline) - + (alive-list connectable :inline) + (alive-list-end connectable :inline) + (dead-list connectable :inline) + (dead-list-end connectable :inline) ;; storage for nodes. this is dynamically sized. - (data connection 1 :inline) - ) + (data connection 1 :inline)) (:methods - (new (symbol type basic int) _type_) - (inspect-all-connections (engine) engine) - (apply-to-connections (engine (function connectable none)) int) - (apply-to-connections-reverse (engine (function connectable none)) int) - (execute-connections (engine object) int) - (execute-connections-and-move-to-dead (engine object) int) - (execute-connections-if-needed (engine object) int) - (add-connection (engine process object object object object) connection) - (remove-from-process (engine process) int) - (remove-matching (engine (function connection engine symbol)) int) - (remove-all (engine) int) - (remove-by-param1 (engine object) int) - (remove-by-param2 (engine int) int) - (get-first-connectable (engine) connectable) - (get-last-connectable (engine) connectable) - (unknown-1 (engine (pointer uint32)) uint) - ) - ) + (new (symbol type basic int) _type_) + (inspect-all-connections (engine) engine) + (apply-to-connections (engine (function connectable none)) int) + (apply-to-connections-reverse (engine (function connectable none)) int) + (execute-connections (engine object) int) + (execute-connections-and-move-to-dead (engine object) int) + (execute-connections-if-needed (engine object) int) + (add-connection (engine process object object object object) connection) + (remove-from-process (engine process) int) + (remove-matching (engine (function connection engine symbol)) int) + (remove-all (engine) int) + (remove-by-param1 (engine object) int) + (remove-by-param2 (engine int) int) + (get-first-connectable (engine) connectable) + (get-last-connectable (engine) connectable) + (unknown-1 (engine (pointer uint32)) uint))) (defmethod belongs-to-process? ((this connection) (arg0 process)) "Does this connection belong to the given process?" - (= arg0 ((method-of-type connection get-process) this)) - ) + (= arg0 ((method-of-type connection get-process) this))) (defmethod print ((this connection)) "Print a connection and its parameters" - (format #t "#" - (-> this param0) - (-> this param1) - (-> this param2) - (-> this param3) - this - ) - this - ) + (format #t + "#" + (-> this param0) + (-> this param1) + (-> this param2) + (-> this param3) + this) + this) (defmethod get-engine ((this connection)) "Get the engine for this connection. This must be used on a live connection." - ;; back up, until we get to the node that's inline on the engine. (while (-> this prev0) (nop!) (nop!) - (set! this (the connection (-> this prev0))) - ) + (set! this (the connection (-> this prev0)))) ;; this is now alive-list field in an engine, so we can do an offset trick: - (the-as engine (&+ this -28)) - ) + (the-as engine (&+ this -28))) (defmethod get-process ((this connection)) "Get the process for this connection" - ;; same trick as get-engine, but backs up using prev1 until we hit the process. (while (-> this prev1) - (nop!) - (nop!) - (set! this (the connection (-> this prev1))) - ) + (nop!) + (nop!) + (set! this (the connection (-> this prev1)))) ;; got to the root connection-list in the process. - (the-as process (&+ this -92)) - ) + (the-as process (&+ this -92))) (defmethod belongs-to-engine? ((this connection) (arg0 engine)) "Check to see if this connection is located in the data section of the engine. This works on dead or alive connections." ;; we can be clever and just see if it has the right address. (and (< (the-as int arg0) (the-as int this)) - (< (the-as int this) (the-as int (-> arg0 data (-> arg0 allocated-length)))) - ) - ) + (< (the-as int this) (the-as int (-> arg0 data (-> arg0 allocated-length)))))) (defmethod get-first-connectable ((this engine)) "Get the first connectable on the alive list. This should be a valid connection." - (-> this alive-list next0) - ) + (-> this alive-list next0)) (defmethod get-last-connectable ((this engine)) "Get the last connectable on the alive list. I think the returned connectable is invalid." - (-> this alive-list-end) - ) + (-> this alive-list-end)) (defmethod unknown-1 ((this engine) (arg0 (pointer uint32))) "Not clear what this does. Possibly get next." - (the-as uint32 (-> arg0 0)) - ) + (the-as uint32 (-> arg0 0))) (defmethod new engine ((allocation symbol) (type-to-make type) (name basic) (length int)) "Allocate a new engine with enough room for length connections." (local-vars (this engine) (idx-to-link int) (end-idx int)) - (set! this (object-new allocation type-to-make - (the-as int (+ (-> type-to-make size) (the-as uint (shl (+ length -1) 5)))) - ) - ) + (set! this + (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (the-as uint (shl (+ length -1) 5)))))) (set! (-> this allocated-length) length) ;; in use (set! (-> this length) 0) (set! (-> this name) name) - ;; link the alive list first/last with next0/prev0 ;; alive-list <-> alive-list-end (set! (-> this alive-list next0) (-> this alive-list-end)) @@ -225,10 +191,8 @@ (set! (-> this alive-list-end prev0) (-> this alive-list)) (set! (-> this alive-list-end next1) #f) (set! (-> this alive-list-end prev1) #f) - ;; link the dead list first/last with the stuff in data. ;; dead-list <-> (-> data 0) ... dead-list-end - ;; dead-list to data[0] (set! (-> this dead-list next0) (-> this data 0)) (set! (-> this dead-list prev0) #f) @@ -239,34 +203,27 @@ (set! (-> this dead-list-end prev0) (-> this data (+ length -1))) (set! (-> this dead-list-end next1) #f) (set! (-> this dead-list-end prev1) #f) - ;; data[0] to dead-list (set! (-> this data 0 prev0) (-> this dead-list)) - ;; data[0] to data[1] (set! (-> this data 0 next0) (the connectable (&+ this 124))) - ;; loop over datas. (set! idx-to-link 1) (set! end-idx (+ length -2)) (while (>= end-idx idx-to-link) (set! (-> this data idx-to-link prev0) (-> this data (+ idx-to-link -1))) (set! (-> this data idx-to-link next0) (-> this data (+ idx-to-link 1))) - (+! idx-to-link 1) - ) - + (+! idx-to-link 1)) ;; data[-1] to data[-2] (set! (-> this data (+ length -1) prev0) (-> this data (+ length -2))) ;; data[-1] to dead-list-end (set! (-> this data (+ length -1) next0) (-> this dead-list-end)) - this - ) + this) (defmethod print ((this engine)) "Print an engine and its name" (format #t "#<~A ~A @ #x~X>" (-> this type) (-> this name) this) - this - ) + this) (defmethod inspect ((this engine)) (format #t "[~8x] ~A~%" this (-> this type)) @@ -278,56 +235,43 @@ (let ((s5-0 *print-column*)) (set! *print-column* (+ *print-column* 8)) ((method-of-type connectable inspect) (-> this alive-list)) - (set! *print-column* s5-0) - ) + (set! *print-column* s5-0)) (format #t "~Talive-list-end:~%") (let ((s5-1 *print-column*)) (set! *print-column* (+ *print-column* 8)) ((method-of-type connectable inspect) (-> this alive-list-end)) - (set! *print-column* s5-1) - ) + (set! *print-column* s5-1)) (format #t "~Tdead-list:~%") (let ((s5-2 *print-column*)) (set! *print-column* (+ *print-column* 8)) ((method-of-type connectable inspect) (-> this dead-list)) - (set! *print-column* s5-2) - ) + (set! *print-column* s5-2)) (format #t "~Tdead-list-end:~%") (let ((s5-3 *print-column*)) (set! *print-column* (+ *print-column* 8)) ((method-of-type connectable inspect) (-> this dead-list-end)) - (set! *print-column* s5-3) - ) + (set! *print-column* s5-3)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this allocated-length) (-> this data)) - this - ) + this) (defmethod length ((this engine)) "Get the in-use length of an engine" - (-> this length) - ) + (-> this length)) (defmethod asize-of ((this engine)) "Get the size in memory of an engine" - (the-as int - (+ (-> engine size) (the-as uint (shl (+ (-> this allocated-length) -1) 5))) - ) - ) + (the-as int (+ (-> engine size) (the-as uint (shl (+ (-> this allocated-length) -1) 5))))) (defmethod apply-to-connections ((this engine) (f (function connectable none))) "Apply f to all connections for the engine. It's okay to have f remove the connection." (let* ((current (-> this alive-list next0)) ;; need to get this _before_ running f, in case we remove. - (next (-> current next0)) - ) + (next (-> current next0))) (while (!= current (-> this alive-list-end)) (f current) (set! current next) - (set! next (-> next next0)) - ) - ) - 0 - ) + (set! next (-> next next0)))) + 0) (defmethod apply-to-connections-reverse ((this engine) (f (function connectable none))) "Apply f to all connections, reverse order. @@ -335,15 +279,11 @@ (let ((iter (-> this alive-list-end prev0))) (while (!= iter (-> this alive-list)) (f iter) - (set! iter (-> iter prev0)) - ) - ) - 0 - ) + (set! iter (-> iter prev0)))) + 0) (defmethod execute-connections ((this engine) (arg0 object)) "Run the engine!" - ;; remember when (set! (-> this engine-time) (-> *display* real-frame-counter)) ;; go through the connection list, in reverse. @@ -352,11 +292,8 @@ ;; execute! ((the-as (function int int int object object) (-> ct param0)) (-> ct param1) (-> ct param2) (-> ct param3) arg0) ;; advance to previous. - (set! ct (the-as connection (-> ct prev0))) - ) - ) - 0 - ) + (set! ct (the-as connection (-> ct prev0))))) + 0) (defmethod execute-connections-and-move-to-dead ((this engine) (arg0 object)) "Run the engine! If any objects return 'dead, then remove them" @@ -368,62 +305,39 @@ ;; set the next one, _before_ removing (set! ct (the-as connection (-> ct prev0))) ;; remove if desired. - (if (= result 'dead) - ((method-of-type connection move-to-dead) (the-as connection (-> ct next0))) - ) - ) - ) - ) - 0 - ) + (if (= result 'dead) ((method-of-type connection move-to-dead) (the-as connection (-> ct next0))))))) + 0) (defmethod execute-connections-if-needed ((this engine) (arg0 object)) "Execute connections, but only if it hasn't been done on this frame." (when (!= (-> *display* real-frame-counter) (-> this engine-time)) - (execute-connections this arg0) - ) - ) + (execute-connections this arg0))) (defun connection-process-apply ((proc process) (func (function object none))) "Apply a function to all connectables of a process." (when proc ;; iterate with next1 to stay in the process list. - (let ((iter (-> proc connection-list next1))) - (while iter - (func iter) - (set! iter (-> iter next1)) - ) - ) - #f - ) - ) + (let ((iter (-> proc connection-list next1))) (while iter (func iter) (set! iter (-> iter next1)))) + #f)) (when *debug-segment* (defmethod inspect-all-connections ((this engine)) - "inspect all of the connections." - (apply-to-connections this - (the (function connection none) (method-of-type connection inspect))) - this - ) - ) - - -(defmethod add-connection engine - ((this engine) - (proc process) - (func object) ;; not always a function, you can technically put whatever - (p1 object) - (p2 object) - (p3 object) - ) + "inspect all of the connections." + (apply-to-connections this (the (function connection none) (method-of-type connection inspect))) + this)) + +(defmethod add-connection ((this engine) + (proc process) + (func object) ;; not always a function, you can technically put whatever + (p1 object) + (p2 object) + (p3 object)) "Add a connection between this engine and a given process." (local-vars (con connectable)) ;; grab a connection from the dead list (set! con (-> this dead-list next0)) - ;; when we have both a valid process and a valid connectable - (when (not (or (not proc) - (= con (-> this dead-list-end)))) + (when (not (or (not proc) (= con (-> this dead-list-end)))) (let ((con (the connection con))) ;; set the params of the connection (set! (-> con param0) (the basic func)) @@ -441,16 +355,11 @@ ;; also splice into the process list (set! (-> con next1) (-> proc connection-list next1)) (when (-> con next1) - (set! (-> con next1 prev1) con) - ) + (set! (-> con next1 prev1) con)) (set! (-> con prev1) (-> proc connection-list)) (set! (-> proc connection-list next1) con) (set! (-> this length) (+ (-> this length) 1)) - con - ) - ) - ) - + con))) (defmethod move-to-dead ((this connection)) "Move this connection from the alive list to the dead list" @@ -463,9 +372,7 @@ ;; splice us out of the process list list (set! (-> this prev1 next1) (-> this next1)) ;; next can be #f for process list! - (if (-> this next1) - (set! (-> this next1 prev1) (-> this prev1)) - ) + (if (-> this next1) (set! (-> this next1 prev1) (-> this prev1))) ;; insert to the beginning of the deat list (set! (-> this next0) (-> v1-1 dead-list next0)) (set! (-> this next0 prev0) this) @@ -473,8 +380,7 @@ (set! (-> v1-1 dead-list next0) this) ;; decrement the length. (set! (-> v1-1 length) (+ (-> v1-1 length) -1)) - this - ) + this) (defun process-disconnect ((arg0 process)) "Disconnect all connections for the given process." @@ -484,91 +390,63 @@ (set! gp-0 (-> arg0 connection-list next1)) (while gp-0 (move-to-dead (the-as connection gp-0)) - (set! gp-0 (-> gp-0 next1)) - ) - ) - (set! v0-1 0) - ) + (set! gp-0 (-> gp-0 next1)))) + (set! v0-1 0)) (defmethod remove-from-process ((this engine) (proc process)) "Remove all connections from process for this engine" - (local-vars (iter connection)) + (local-vars (iter connection)) (when proc (set! iter (the connection (-> proc connection-list next1))) (while iter ;; only delete ones for this engine. - (if (belongs-to-engine? iter this) - (move-to-dead iter) - ) + (if (belongs-to-engine? iter this) (move-to-dead iter)) ;; through process list - (set! iter (the connection (-> iter next1))) - ) - ) + (set! iter (the connection (-> iter next1))))) 0) (defmethod remove-matching ((this engine) (arg0 (function connection engine symbol))) "call the given function on each connection and the engine. if it returns truthy, move to dead that connection." - (local-vars - (s3-0 connectable) - (s4-0 connectable) - ) + (local-vars (s3-0 connectable) (s4-0 connectable)) ;; tricky iteration because of deleting. (set! s4-0 (-> this alive-list next0)) (set! s3-0 (-> s4-0 next0)) (while (!= s4-0 (-> this alive-list-end)) - (if (arg0 (the-as connection s4-0) this) - ((method-of-type connection move-to-dead) (the-as connection s4-0)) - ) + (if (arg0 (the-as connection s4-0) this) ((method-of-type connection move-to-dead) (the-as connection s4-0))) (set! s4-0 s3-0) - (set! s3-0 (-> s3-0 next0)) - ) + (set! s3-0 (-> s3-0 next0))) 0) (defmethod remove-all ((this engine)) "Remove all connections from an engine" - (local-vars - (a0-1 connectable) - (s5-0 connectable) - ) + (local-vars (a0-1 connectable) (s5-0 connectable)) (set! a0-1 (-> this alive-list next0)) (set! s5-0 (-> a0-1 next0)) - (while - (!= a0-1 (-> this alive-list-end)) - ((method-of-type connection move-to-dead) (the-as connection a0-1)) - (set! a0-1 s5-0) - (set! s5-0 (-> s5-0 next0)) - ) + (while (!= a0-1 (-> this alive-list-end)) + ((method-of-type connection move-to-dead) (the-as connection a0-1)) + (set! a0-1 s5-0) + (set! s5-0 (-> s5-0 next0))) 0) (defmethod remove-by-param1 ((this engine) (p1-value object)) "Remove all connections with param1 matching arg0" (let* ((current (-> this alive-list next0)) - (next (-> current next0)) - ) - (while (!= current (-> this alive-list-end)) - (if (= (-> (the-as connection current) param1) p1-value) - ((method-of-type connection move-to-dead) (the-as connection current)) - ) - (set! current next) - (set! next (-> next next0)) - ) - ) - 0 - ) + (next (-> current next0))) + (while (!= current (-> this alive-list-end)) + (if (= (-> (the-as connection current) param1) p1-value) + ((method-of-type connection move-to-dead) (the-as connection current))) + (set! current next) + (set! next (-> next next0)))) + 0) (defmethod remove-by-param2 ((this engine) (p2-value int)) "Remove all connections with param2 matching p2-value" (let* ((current (-> this alive-list next0)) - (next (-> current next0)) - ) + (next (-> current next0))) (while (!= current (-> this alive-list-end)) (if (= (-> (the-as connection current) param2) p2-value) - ((method-of-type connection move-to-dead) (the-as connection current)) - ) + ((method-of-type connection move-to-dead) (the-as connection current))) (set! current next) - (set! next (-> next next0)) - ) - ) - 0 - ) + (set! next (-> next next0)))) + 0) diff --git a/goal_src/jak1/engine/engine/engines.gc b/goal_src/jak1/engine/engine/engines.gc index 91ae577950..e395073785 100644 --- a/goal_src/jak1/engine/engine/engines.gc +++ b/goal_src/jak1/engine/engine/engines.gc @@ -1,15 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gkernel-h.gc") (require "engine/engine/connect.gc") -;; name: engines.gc -;; name in dgo: engines -;; dgos: GAME, ENGINE - - ;; Allocate some engines. (defconstant MATRIX_ENGINE_AMOUNT (* 1024 PROCESS_HEAP_MULT)) @@ -20,12 +14,11 @@ ;; The matrix engine is not actually an engine, but instead an array of handles to processes that ;; need to have their joint math done and bones updated. (define *matrix-engine* (new 'global 'boxed-array handle MATRIX_ENGINE_AMOUNT)) + (set! (-> *matrix-engine* length) 0) ;; the camera engine contains all currently running camera entities. (define *camera-engine* (new 'global 'engine 'camera-eng 128)) ;; the debug engine is rarely used, but it allows you to add code to the debug hook for a process. -(if *debug-segment* - (define *debug-engine* (new 'debug 'engine 'debug 512)) - ) +(if *debug-segment* (define *debug-engine* (new 'debug 'engine 'debug 512))) diff --git a/goal_src/jak1/engine/entity/actor-link-h.gc b/goal_src/jak1/engine/entity/actor-link-h.gc index a63d41edde..5f4eb8365e 100644 --- a/goal_src/jak1/engine/entity/actor-link-h.gc +++ b/goal_src/jak1/engine/entity/actor-link-h.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/res.gc") (require "kernel/gstate.gc") (require "engine/entity/entity-h.gc") (require "engine/game/game-h.gc") -;; name: actor-link-h.gc -;; name in dgo: actor-link-h -;; dgos: GAME, ENGINE - ;; The exact details of actor-link-h are not yet understood, but this system caches lookups for entities/process. ;; Some entities may reference other entities. This is done with an element in a res-lump/entity that contains ;; named lists (possibly of size 1) of other entities. These lists may store entities by a name, or by an @@ -33,7 +28,6 @@ "Given an entity (the res-lump), look up a reference to another entity and return that entity." (local-vars (sv-16 res-tag)) (set! sv-16 (new 'static 'res-tag)) - ;; look up the reference (let ((v1-1 (res-lump-data lump name (pointer uint32) :tag-ptr (& sv-16)))) (the-as entity-actor @@ -41,24 +35,15 @@ (when (and v1-1 (< idx (the-as int (-> sv-16 elt-count)))) ;; pick between string and aid lookup. (if (= (-> sv-16 elt-type) string) - (entity-by-name (-> (the-as (pointer string) v1-1) idx)) - (entity-by-aid (-> (the-as (pointer uint32) v1-1) idx)) - ) - ) - ) - ) - ) + (entity-by-name (-> (the-as (pointer string) v1-1) idx)) + (entity-by-aid (-> (the-as (pointer uint32) v1-1) idx))))))) (defun entity-actor-count ((res res-lump) (name symbol)) "Get the number of entities that this res references under the name. This works on more than just next/prev." (local-vars (tag res-tag)) (set! tag (new 'static 'res-tag)) - (if (res-lump-data res name pointer :tag-ptr (& tag)) - (the-as int (-> tag elt-count)) - 0 - ) - ) + (if (res-lump-data res name pointer :tag-ptr (& tag)) (the-as int (-> tag elt-count)) 0)) ;; entity-actors are part of a linked list of entities. ;; these prevent you from looking up next-actor, prev-actor again and again to iterate. @@ -68,31 +53,28 @@ ;; These are allocated on the process heap of the entity's process. (deftype actor-link-info (basic) - ((process process) - (next entity-actor) - (prev entity-actor) - ) + ((process process) + (next entity-actor) + (prev entity-actor)) (:methods - (new (symbol type process) _type_) - (get-matching-actor-type-mask (_type_ type) int) - (actor-count-before (_type_) int) - (link-to-next-and-prev-actor (_type_) entity-actor) - (get-next (_type_) entity-actor) - (get-prev (_type_) entity-actor) - (get-next-process (_type_) process) - (get-prev-process (_type_) process) - (apply-function-forward (_type_ (function entity-actor object object) object) int) - (apply-function-reverse (_type_ (function entity-actor object object) object) int) - (apply-all (_type_ (function entity-actor object object) object) int) - (send-to-all (_type_ symbol) none) - (send-to-all-after (_type_ symbol) object) - (send-to-all-before (_type_ symbol) object) - (send-to-next-and-prev (_type_ symbol) none) - (send-to-next (_type_ symbol) none) - (send-to-prev (_type_ symbol) none) - (actor-count (_type_) int) - ) - ) + (new (symbol type process) _type_) + (get-matching-actor-type-mask (_type_ type) int) + (actor-count-before (_type_) int) + (link-to-next-and-prev-actor (_type_) entity-actor) + (get-next (_type_) entity-actor) + (get-prev (_type_) entity-actor) + (get-next-process (_type_) process) + (get-prev-process (_type_) process) + (apply-function-forward (_type_ (function entity-actor object object) object) int) + (apply-function-reverse (_type_ (function entity-actor object object) object) int) + (apply-all (_type_ (function entity-actor object object) object) int) + (send-to-all (_type_ symbol) none) + (send-to-all-after (_type_ symbol) object) + (send-to-all-before (_type_ symbol) object) + (send-to-next-and-prev (_type_ symbol) none) + (send-to-next (_type_ symbol) none) + (send-to-prev (_type_ symbol) none) + (actor-count (_type_) int))) ;;;;;;;;;;;;;;;; ;; Link Setup @@ -102,27 +84,22 @@ "Utility function to look up the next actor in the list, assuming we don't have actor-link-info yet." (declare (inline)) ;; look up reference to next-actor - this is slow. - (entity-actor-lookup this 'next-actor 0) - ) + (entity-actor-lookup this 'next-actor 0)) (defmethod prev-actor ((this entity-actor)) "Look up previous actor in the list" (declare (inline)) - (entity-actor-lookup this 'prev-actor 0) - ) + (entity-actor-lookup this 'prev-actor 0)) (defmethod new actor-link-info ((allocation symbol) (type-to-make type) (proc process)) "Set up an actor-link-info for the given process. The entity of this process should be the entity-actor that will get this actor-link-info" (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> this process) proc) - ;; set next and prev (set! (-> this next) (next-actor (-> proc entity))) (set! (-> this prev) (prev-actor (-> proc entity))) - this - ) - ) + this)) ;;;;;;;;;;;;;;;;;;;; ;; Access @@ -130,61 +107,37 @@ ;; These methods can now be used to get next/prev more efficiently, without having to do a res lookup. (defmethod get-next ((this actor-link-info)) - (-> this next) - ) + (-> this next)) (defmethod get-prev ((this actor-link-info)) - (-> this prev) - ) + (-> this prev)) (defmethod get-next-process ((this actor-link-info)) "Get the process for the next, if it exists." ;; we can't easily get to the actor-link-info of the next, so we have to grab it from entity-links. - (the-as process (and (-> this next) (-> this next extra process))) - ) + (the-as process (and (-> this next) (-> this next extra process)))) (defmethod get-prev-process ((this actor-link-info)) "Get the process for the prev, if it exists" - (the-as process (and (-> this prev) (-> this prev extra process))) - ) + (the-as process (and (-> this prev) (-> this prev extra process)))) (defmethod link-to-next-and-prev-actor ((this actor-link-info)) "Redo the linking in the constructor by looking up the next/prev actor." (set! (-> this next) (next-actor (-> this process entity))) (set! (-> this prev) (prev-actor (-> this process entity))) - (-> this next) - ) - + (-> this next)) -(defmethod apply-function-forward actor-link-info - ((this actor-link-info) (arg0 (function entity-actor object object)) (arg1 object)) +(defmethod apply-function-forward ((this actor-link-info) (arg0 (function entity-actor object object)) (arg1 object)) "Iterate forward through actors, and apply this function. Starts at (-> this next) If the function returns truthy, stop iterating." - (let ((s3-0 (-> this next))) - (while s3-0 - (if (arg0 s3-0 arg1) - (return (the-as int #f)) - ) - (set! s3-0 (next-actor s3-0)) - ) - ) - 0 - ) - -(defmethod apply-function-reverse actor-link-info - ((this actor-link-info) (arg0 (function entity-actor object object)) (arg1 object)) + (let ((s3-0 (-> this next))) (while s3-0 (if (arg0 s3-0 arg1) (return (the-as int #f))) (set! s3-0 (next-actor s3-0)))) + 0) + +(defmethod apply-function-reverse ((this actor-link-info) (arg0 (function entity-actor object object)) (arg1 object)) "Iterate backward through actors and apply function. If the function returns truth, stop iterating." - (let ((s3-0 (-> this prev))) - (while s3-0 - (if (arg0 s3-0 arg1) - (return (the-as int #f)) - ) - (set! s3-0 (prev-actor s3-0)) - ) - ) - 0 - ) + (let ((s3-0 (-> this prev))) (while s3-0 (if (arg0 s3-0 arg1) (return (the-as int #f))) (set! s3-0 (prev-actor s3-0)))) + 0) (defmethod apply-all ((this actor-link-info) (arg0 (function entity-actor object object)) (arg1 object)) "Apply to all entities. Starts at the back and hits everyone, including this object." @@ -193,57 +146,37 @@ ;; while there is a prev... (while (prev-actor s4-0) ;; set prev (this is stupid, they do the slow lookup twice!) - (set! s4-0 (prev-actor s4-0)) - ) - + (set! s4-0 (prev-actor s4-0))) ;; now iterate forward. (while s4-0 - (if (arg0 s4-0 arg1) - (return (the-as int #f)) - ) - (set! s4-0 (next-actor s4-0)) - ) - ) - 0 - ) + (if (arg0 s4-0 arg1) (return (the-as int #f))) + (set! s4-0 (next-actor s4-0)))) + 0) (defmethod send-to-all-after ((this actor-link-info) (message symbol)) "Send an event to all processes after this link with no parameters." - (let ((iter (-> this next)) (result (the object #f))) (while iter (let ((proc (-> iter extra process))) (when proc - (set! result (or (send-event proc message) result)) - ) - (set! iter (next-actor iter)) - ) - ) - result - ) - ) + (set! result (or (send-event proc message) result))) + (set! iter (next-actor iter)))) + result)) (defmethod send-to-all-before ((this actor-link-info) (message symbol)) "Send an event to all processes before this link with no parameters." - (let ((iter (-> this prev)) (result (the object #f))) (while iter (let ((proc (-> iter extra process))) (when proc - (set! result (or (send-event proc message) result)) - ) - (set! iter (prev-actor iter)) - ) - ) - result - ) - ) + (set! result (or (send-event proc message) result))) + (set! iter (prev-actor iter)))) + result)) (defmethod send-to-next ((this actor-link-info) (message symbol)) "Send event arg0 to the next actor's process" - (let ((a0-1 (-> this next))) ;; do we have a next? (when a0-1 @@ -251,154 +184,90 @@ (let ((a0-2 (-> a0-1 extra process))) ;; do we have a process? (when a0-2 - (send-event a0-2 message) - ) - ) - ) - ) - (none) - ) + (send-event a0-2 message))))) + (none)) (defmethod send-to-prev ((this actor-link-info) (message symbol)) "Send event arg1 to the next actor's process." - - (let ((a0-1 (-> this prev))) - (when a0-1 - (let ((a0-2 (-> a0-1 extra process))) - (when a0-2 - (send-event a0-2 message) - ) - ) - ) - ) - (none) - ) + (let ((a0-1 (-> this prev))) (when a0-1 (let ((a0-2 (-> a0-1 extra process))) (when a0-2 (send-event a0-2 message))))) + (none)) (defmethod send-to-next-and-prev ((this actor-link-info) (msg symbol)) "Send an event to both next and prev with no params." - (send-to-next this msg) (send-to-prev this msg) - (none) - ) + (none)) (defmethod send-to-all ((this actor-link-info) (msg symbol)) (send-to-all-after this msg) (send-to-all-before this msg) - (none) - ) + (none)) (defmethod actor-count ((this actor-link-info)) "Count the number of actors in the entire list" (let ((actor (-> this process entity)) - (count 0) - ) + (count 0)) ;; get back to the beginning. (while (prev-actor actor) - (set! actor (prev-actor actor)) - ) + (set! actor (prev-actor actor))) ;; iterate and set the count (while actor (+! count 1) - (set! actor (next-actor actor)) - ) - count - ) - ) + (set! actor (next-actor actor))) + count)) (defmethod get-matching-actor-type-mask ((this actor-link-info) (matching-type type)) "Iterate through _all_ actors that are part of this actor list. If the nth actor is type matching-type, then set the nth bit of the result." (let ((actor (the-as entity-actor (-> this process entity))) - (mask 0) - ) + (mask 0)) (let ((current-bit 1)) - ;; seek to beginning (while (prev-actor actor) - (set! actor (prev-actor actor)) - ) - + (set! actor (prev-actor actor))) ;; loop over actors (while actor ;; if we match, set the bit - (if (= (-> actor etype) matching-type) - (set! mask (logior mask current-bit)) - ) + (if (= (-> actor etype) matching-type) (set! mask (logior mask current-bit))) ;; next (set! actor (next-actor actor)) ;; next bit - (set! current-bit (ash current-bit 1)) - ) - ) - mask - ) - ) + (set! current-bit (ash current-bit 1)))) + mask)) (defmethod actor-count-before ((this actor-link-info)) "Get the number of actors _before_ this actor in the list." (let* ((this-actor (-> this process entity)) (actor this-actor) - (count 0) - ) + (count 0)) ;; go to beginning (why not count here???) (while (prev-actor actor) - (set! actor (prev-actor actor)) - ) + (set! actor (prev-actor actor))) ;; go forward, until we hit this actor (while (!= actor this-actor) (+! count 1) - (set! actor (next-actor actor)) - ) - count - ) - ) + (set! actor (next-actor actor))) + count)) (defun actor-link-subtask-complete-hook ((arg0 entity-actor) (arg1 (pointer symbol))) "Sets arg1 if the thing is complete. Does not continue the apply if the complete perm is set." (cond - ((logtest? (-> arg0 extra perm status) (entity-perm-status complete)) - (set! (-> arg1 0) #t) - #f - ) - (else - (set! (-> arg1 0) #f) - #t - ) - ) - ) + ((logtest? (-> arg0 extra perm status) (entity-perm-status complete)) (set! (-> arg1 0) #t) #f) + (else (set! (-> arg1 0) #f) #t))) (defun actor-link-dead-hook ((arg0 entity-actor) (arg1 (pointer symbol))) "Sets arg1 is the thing is dead. Does not continue the apply if the dead perm is set." (cond - ((logtest? (-> arg0 extra perm status) (entity-perm-status dead)) - (set! (-> arg1 0) #t) - #f - ) - (else - (set! (-> arg1 0) #f) - #t - ) - ) - ) + ((logtest? (-> arg0 extra perm status) (entity-perm-status dead)) (set! (-> arg1 0) #t) #f) + (else (set! (-> arg1 0) #f) #t))) (defun alt-actor-list-subtask-incomplete-count ((arg0 process-drawable)) "Get the number of alt-actors which do not have the complete bit set in their perm." (let ((alt-actor-count (entity-actor-count (the-as res-lump (-> arg0 entity)) 'alt-actor)) - (incomplete-count 0) - ) - + (incomplete-count 0)) ;; iterate over all alt actors (dotimes (alt-actor-idx alt-actor-count) ;; look up the alt actor (let ((a0-3 (entity-actor-lookup (the-as res-lump (-> arg0 entity)) 'alt-actor alt-actor-idx))) - (if (or (not a0-3) - (zero? (logand (-> a0-3 extra perm status) (entity-perm-status complete))) - ) - (+! incomplete-count 1) - ) - ) - ) - incomplete-count - ) - ) + (if (or (not a0-3) (zero? (logand (-> a0-3 extra perm status) (entity-perm-status complete)))) (+! incomplete-count 1)))) + incomplete-count)) diff --git a/goal_src/jak1/engine/entity/ambient.gc b/goal_src/jak1/engine/entity/ambient.gc index 1bdac6c996..355b248e7a 100644 --- a/goal_src/jak1/engine/entity/ambient.gc +++ b/goal_src/jak1/engine/entity/ambient.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/bsp.gc") (require "engine/ui/text.gc") (require "engine/game/task/hint-control.gc") (require "engine/game/settings.gc") - -;; name: ambient.gc -;; name in dgo: ambient -;; dgos: GAME, ENGINE - (define-extern level-hint-init-by-other (function text-id string entity none :behavior level-hint)) + (define-extern ambient-hint-init-by-other (function string vector symbol none :behavior level-hint)) ;; DECOMP BEGINS @@ -20,166 +15,71 @@ (set! (-> arg0 length) (max 50 (-> arg0 length))) (set! (-> arg0 data 49 name) "ambient") (+! (-> arg0 data 49 count) 1) - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 49 used) v1-6) - (+! (-> arg0 data 49 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 49 used) v1-6) (+! (-> arg0 data 49 total) (logand -16 (+ v1-6 15)))) (mem-usage (-> this ambient) arg0 (logior arg1 128)) - (the-as drawable-ambient 0) - ) + (the-as drawable-ambient 0)) (defmethod mem-usage ((this drawable-inline-array-ambient) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - (the-as drawable-inline-array-ambient 0) - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + (the-as drawable-inline-array-ambient 0)) (define *hint-semaphore* (the-as (pointer level-hint) #f)) (defun level-hint-process-cmd ((arg0 (pointer int32)) (arg1 int) (arg2 int)) (let ((v1-2 (-> arg0 arg1)) - (gp-0 (+ arg1 1)) - ) + (gp-0 (+ arg1 1))) (cond ((< gp-0 arg2) (let ((a0-2 (-> arg0 gp-0)) - (a1-2 v1-2) - ) + (a1-2 v1-2)) (cond - ((zero? a1-2) - (if (task-known? (the-as game-task a0-2)) - (set! gp-0 -1) - ) - ) - ((= a1-2 1) - (if (not (task-known? (the-as game-task a0-2))) - (set! gp-0 -1) - ) - ) - ((= a1-2 2) - (if (nonzero? (get-task-status (the-as game-task a0-2))) - (set! gp-0 -1) - ) - ) - ((= a1-2 3) - (if (!= (get-task-status (the-as game-task a0-2)) (task-status need-introduction)) - (set! gp-0 -1) - ) - ) - ((= a1-2 4) - (if (!= (get-task-status (the-as game-task a0-2)) (task-status need-reminder)) - (set! gp-0 -1) - ) - ) - ((= a1-2 5) - (if (!= (get-task-status (the-as game-task a0-2)) (task-status need-reminder-a)) - (set! gp-0 -1) - ) - ) + ((zero? a1-2) (if (task-known? (the-as game-task a0-2)) (set! gp-0 -1))) + ((= a1-2 1) (if (not (task-known? (the-as game-task a0-2))) (set! gp-0 -1))) + ((= a1-2 2) (if (nonzero? (get-task-status (the-as game-task a0-2))) (set! gp-0 -1))) + ((= a1-2 3) (if (!= (get-task-status (the-as game-task a0-2)) (task-status need-introduction)) (set! gp-0 -1))) + ((= a1-2 4) (if (!= (get-task-status (the-as game-task a0-2)) (task-status need-reminder)) (set! gp-0 -1))) + ((= a1-2 5) (if (!= (get-task-status (the-as game-task a0-2)) (task-status need-reminder-a)) (set! gp-0 -1))) ((= a1-2 13) (let ((v1-15 (get-task-status (the-as game-task a0-2)))) - (if (or (< (the-as int v1-15) 2) (< 4 (the-as int v1-15))) - (set! gp-0 -1) - ) - ) - ) - ((= a1-2 6) - (if (!= (get-task-status (the-as game-task a0-2)) (task-status need-reward-speech)) - (set! gp-0 -1) - ) - ) - ((= a1-2 7) - (close-specific-task! (the-as game-task a0-2) (task-status need-hint)) - ) - ((= a1-2 8) - (close-specific-task! (the-as game-task a0-2) (task-status need-introduction)) - ) - ((= a1-2 9) - (close-specific-task! (the-as game-task a0-2) (task-status need-reminder)) - ) - ((= a1-2 10) - (close-specific-task! (the-as game-task a0-2) (task-status need-reminder-a)) - ) - ((= a1-2 11) - (close-specific-task! (the-as game-task a0-2) (task-status need-reward-speech)) - ) - ((= a1-2 12) - (close-specific-task! (the-as game-task a0-2) (task-status need-resolution)) - ) - (else - (format #t "Unknown hint command ~D~%" v1-2) - ) - ) - ) - ) + (if (or (< (the-as int v1-15) 2) (< 4 (the-as int v1-15))) (set! gp-0 -1)))) + ((= a1-2 6) (if (!= (get-task-status (the-as game-task a0-2)) (task-status need-reward-speech)) (set! gp-0 -1))) + ((= a1-2 7) (close-specific-task! (the-as game-task a0-2) (task-status need-hint))) + ((= a1-2 8) (close-specific-task! (the-as game-task a0-2) (task-status need-introduction))) + ((= a1-2 9) (close-specific-task! (the-as game-task a0-2) (task-status need-reminder))) + ((= a1-2 10) (close-specific-task! (the-as game-task a0-2) (task-status need-reminder-a))) + ((= a1-2 11) (close-specific-task! (the-as game-task a0-2) (task-status need-reward-speech))) + ((= a1-2 12) (close-specific-task! (the-as game-task a0-2) (task-status need-resolution))) + (else (format #t "Unknown hint command ~D~%" v1-2))))) (else - (format #t "Missing task ID for hint command ~S~%" (cond - ((= v1-2 13) - "if-at-most-need-reminder-a" - ) - ((= v1-2 12) - "close-need-resolution" - ) - ((= v1-2 11) - "close-need-reward-speech" - ) - ((= v1-2 10) - "close-need-reminder-a" - ) - ((= v1-2 9) - "close-need-reminder" - ) - ((= v1-2 8) - "close-need-introduction" - ) - ((= v1-2 7) - "close-need-hint" - ) - ((= v1-2 6) - "if-need-reward-speech" - ) - ((= v1-2 5) - "if-need-reminder-a" - ) - ((= v1-2 4) - "if-need-reminder" - ) - ((= v1-2 3) - "if-need-introduction" - ) - ((= v1-2 2) - "if-resolved" - ) - ((= v1-2 1) - "if-known" - ) - ((zero? v1-2) - "if-unknown" - ) - (else - "*unknown*" - ) - ) - ) - ) - ) - gp-0 - ) - ) + (format #t + "Missing task ID for hint command ~S~%" + (cond + ((= v1-2 13) "if-at-most-need-reminder-a") + ((= v1-2 12) "close-need-resolution") + ((= v1-2 11) "close-need-reward-speech") + ((= v1-2 10) "close-need-reminder-a") + ((= v1-2 9) "close-need-reminder") + ((= v1-2 8) "close-need-introduction") + ((= v1-2 7) "close-need-hint") + ((= v1-2 6) "if-need-reward-speech") + ((= v1-2 5) "if-need-reminder-a") + ((= v1-2 4) "if-need-reminder") + ((= v1-2 3) "if-need-introduction") + ((= v1-2 2) "if-resolved") + ((= v1-2 1) "if-known") + ((zero? v1-2) "if-unknown") + (else "*unknown*"))))) + gp-0)) (defun level-hint-task-process ((arg0 entity) (arg1 uint128) (arg2 string)) (local-vars (sv-16 res-tag)) (let ((gp-0 (res-lump-value arg0 'text-id int :default arg1)) - (s5-0 0) - ) + (s5-0 0)) (cond ((can-hint-be-played? (the-as text-id gp-0) arg0 arg2) (set! sv-16 (new 'static 'res-tag)) @@ -190,42 +90,21 @@ -1000000000.0 (the-as pointer #f) (& sv-16) - *res-static-buf* - ) - ) - ) + *res-static-buf*))) (when s4-1 (while (and (>= s5-0 0) (< s5-0 (the-as int (-> sv-16 elt-count)))) (set! s5-0 (level-hint-process-cmd (the-as (pointer int32) s4-1) s5-0 (the-as int (-> sv-16 elt-count)))) - (if (>= s5-0 0) - (set! s5-0 (+ s5-0 1)) - ) - ) - ) - ) - 0 - ) - (else - (set! s5-0 -1) - ) - ) + (if (>= s5-0 0) (set! s5-0 (+ s5-0 1)))))) + 0) + (else (set! s5-0 -1))) (cond - ((>= s5-0 0) - (empty) - gp-0 - ) - (else - -1 - ) - ) - ) - ) + ((>= s5-0 0) (empty) gp-0) + (else -1)))) (defun level-hint-surpress! () (set-time! (-> *game-info* hint-play-time)) 0 - (none) - ) + (none)) (defun can-grab-display? ((arg0 process)) (let ((v1-2 (handle->process (-> *game-info* display-text-handle)))) @@ -233,69 +112,45 @@ (and *target* (!= (-> *target* next-state name) 'target-look-around) (not (logtest? (-> *target* state-flags) (state-flags being-attacked dying))) - (= *master-mode* 'game) - ) - ) + (= *master-mode* 'game))) (set! (-> *game-info* display-text-handle) (process->handle arg0)) (set-time! (-> *game-info* display-text-time)) - #t - ) - ) - ) + #t))) (defun level-hint-displayed? () (let ((a0-0 (ppointer->process *hint-semaphore*))) - (the-as - symbol - (and (the-as level-hint a0-0) (and (= (-> (the-as level-hint a0-0) next-state name) 'level-hint-normal) - (not (appeared-for-long-enough? (the-as level-hint a0-0))) - ) - ) - ) - ) - ) + (the-as symbol + (and (the-as level-hint a0-0) + (and (= (-> (the-as level-hint a0-0) next-state name) 'level-hint-normal) + (not (appeared-for-long-enough? (the-as level-hint a0-0)))))))) (defun level-hint-spawn ((arg0 text-id) (arg1 string) (arg2 entity) (arg3 process-tree) (arg4 game-task)) - (if (< (the-as uint 1) (the-as uint arg4)) - (close-specific-task! arg4 (task-status need-hint)) - ) + (if (< (the-as uint 1) (the-as uint arg4)) (close-specific-task! arg4 (task-status need-hint))) (let ((s3-1 (level-hint-task-process arg2 (the-as uint128 arg0) arg1))) (when (!= s3-1 -1) (kill-current-level-hint '() '() 'exit) - (process-spawn level-hint s3-1 arg1 arg2 :to arg3) - ) - ) + (process-spawn level-hint s3-1 arg1 arg2 :to arg3))) 0 - (none) - ) + (none)) (defun ambient-hint-spawn ((arg0 string) (arg1 vector) (arg2 process-tree) (arg3 symbol)) (case arg3 - (('camera) - (kill-current-level-hint '() '() 'exit) - ) - ) - (and (not *hint-semaphore*) - (process-spawn level-hint :init ambient-hint-init-by-other arg0 arg1 arg3 :to arg2) - ) - ) + (('camera) (kill-current-level-hint '() '() 'exit))) + (and (not *hint-semaphore*) (process-spawn level-hint :init ambient-hint-init-by-other arg0 arg1 arg3 :to arg2))) (defun kill-current-level-hint ((arg0 pair) (arg1 pair) (arg2 symbol)) (when *hint-semaphore* (let ((s4-0 (ppointer->process *hint-semaphore*))) (if (and (or (null? arg0) (member (-> (the-as level-hint s4-0) mode) arg0)) - (not (member (-> (the-as level-hint s4-0) mode) arg1)) - ) - (send-event (the-as level-hint s4-0) arg2) - ) - ) - ) + (not (member (-> (the-as level-hint s4-0) mode) arg1))) + (send-event (the-as level-hint s4-0) arg2)))) 0 - (none) - ) + (none)) ;; og:preserve-this -(#when PC_PORT (define *level-hint-spool-name* (the string #f))) +(#when PC_PORT + (define *level-hint-spool-name* (the string #f))) + (defbehavior level-hint-init-by-other level-hint ((arg0 text-id) (arg1 string) (arg2 entity)) (mark-text-as-seen *game-info* arg0) (set! (-> self text-id-to-display) arg0) @@ -307,36 +162,25 @@ (add-setting! 'hint (process->ppointer self) 0.0 0) (set! (-> self voicebox) (the-as handle #f)) (let ((s5-1 (res-lump-struct arg2 'play-mode structure)) - (a0-6 (the-as string ((method-of-type res-lump get-property-struct) - arg2 - 'sound-name - 'interp - -1000000000.0 - (-> self sound-to-play) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - ) + (a0-6 (the-as string + ((method-of-type res-lump get-property-struct) + arg2 + 'sound-name + 'interp + -1000000000.0 + (-> self sound-to-play) + (the-as (pointer res-tag) #f) + *res-static-buf*)))) (if (and (not s5-1) a0-6) - (set! s5-1 (if (or (and (= (-> a0-6 data 0) 115) (= (-> a0-6 data 1) 97)) - (and (= (-> a0-6 data 0) 97) (= (-> a0-6 data 1) 115)) - ) - 'voicebox - 'sidekick - ) - ) - ) + (set! s5-1 + (if (or (and (= (-> a0-6 data 0) 115) (= (-> a0-6 data 1) 97)) (and (= (-> a0-6 data 0) 97) (= (-> a0-6 data 1) 115))) + 'voicebox + 'sidekick))) (set! (-> self mode) (the-as symbol s5-1)) - (if (or (= s5-1 'sidekick) (= s5-1 'voicebox)) - (go level-hint-sidekick a0-6) - ) - ) + (if (or (= s5-1 'sidekick) (= s5-1 'voicebox)) (go level-hint-sidekick a0-6))) (go level-hint-normal) 0 - (none) - ) + (none)) (defbehavior ambient-hint-init-by-other level-hint ((arg0 string) (arg1 vector) (arg2 symbol)) (set! (-> self sound-to-play) arg0) @@ -347,354 +191,215 @@ (set! *hint-semaphore* (the-as (pointer level-hint) (process->ppointer self))) (add-setting! 'hint (process->ppointer self) 0.0 0) (set! (-> self mode) arg2) - (if (or (= arg2 'camera) (= arg2 'ambient) (= arg2 'stinger)) - (add-setting! 'ambient (process->ppointer self) 0.0 0) - ) + (if (or (= arg2 'camera) (= arg2 'ambient) (= arg2 'stinger)) (add-setting! 'ambient (process->ppointer self) 0.0 0)) (apply-settings *setting-control*) - (set! (-> self event-hook) (lambda :behavior level-hint - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('die 'exit) - (if (= (ppointer->process *hint-semaphore*) self) - (set! *hint-semaphore* (the-as (pointer level-hint) #f)) - ) - (deactivate self) - ) - ) - ) - ) + (set! (-> self event-hook) + (lambda :behavior level-hint ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('die 'exit) + (if (= (ppointer->process *hint-semaphore*) self) (set! *hint-semaphore* (the-as (pointer level-hint) #f))) + (deactivate self))))) (go level-hint-ambient-sound arg0) 0 - (none) - ) + (none)) (defmethod print-text ((this level-hint)) (when (!= *common-text* #f) - (let ((s5-0 - (new 'stack 'font-context *font-default-matrix* 56 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-3 s5-0)) - (set! (-> v1-3 width) (the float 400)) - ) - (let ((v1-4 s5-0)) - (set! (-> v1-4 height) (the float 96)) - ) + (let ((s5-0 (new 'stack 'font-context *font-default-matrix* 56 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-3 s5-0)) (set! (-> v1-3 width) (the float 400))) + (let ((v1-4 s5-0)) (set! (-> v1-4 height) (the float 96))) (set! (-> s5-0 flags) (font-flags shadow kerning middle large)) - (print-game-text (lookup-text! *common-text* (-> this text-id-to-display) #f) s5-0 #f 128 22) - ) - ) + (print-game-text (lookup-text! *common-text* (-> this text-id-to-display) #f) s5-0 #f 128 22))) 0 - (none) - ) + (none)) (defmethod appeared-for-long-enough? ((this level-hint)) - (and (!= (-> this next-state name) 'level-hint-sidekick) (< (seconds 5) (-> this total-time))) - ) + (and (!= (-> this next-state name) 'level-hint-sidekick) (< (seconds 5) (-> this total-time)))) (defstate level-hint-normal (level-hint) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('exit) - (go level-hint-exit) - ) - (('die) - (deactivate self) - ) - ) - ) - :exit (behavior () - (if (= (ppointer->process *hint-semaphore*) self) - (set! *hint-semaphore* (the-as (pointer level-hint) #f)) - ) - ) - :code (behavior () - (cond - ((= (-> self text-id-to-display) (text-id zero)) - (if *debug-segment* - (go level-hint-error "UNKNOWN TEXT ID" "") - ) - ) - (else - (while (>= (seconds 8) (-> self total-time)) - (hide-bottom-hud) - (suspend) - (cond - ((and (bottom-hud-hidden?) - (not (paused?)) - (not (movie?)) - (= *master-mode* 'game) - (or (not *target*) (!= (-> *target* cam-user-mode) 'look-around)) - (not (-> *hud-parts* money-all)) - ) - (print-text self) - (+! (-> self total-time) (- (current-time) (-> self last-time))) - (set-time! (-> self last-time)) - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('exit) (go level-hint-exit)) + (('die) (deactivate self)))) + :exit + (behavior () + (if (= (ppointer->process *hint-semaphore*) self) (set! *hint-semaphore* (the-as (pointer level-hint) #f)))) + :code + (behavior () + (cond + ((= (-> self text-id-to-display) (text-id zero)) (if *debug-segment* (go level-hint-error "UNKNOWN TEXT ID" ""))) + (else + (while (>= (seconds 8) (-> self total-time)) + (hide-bottom-hud) + (suspend) + (cond + ((and (bottom-hud-hidden?) + (not (paused?)) + (not (movie?)) + (= *master-mode* 'game) + (or (not *target*) (!= (-> *target* cam-user-mode) 'look-around)) + (not (-> *hud-parts* money-all))) + (print-text self) + (+! (-> self total-time) (- (current-time) (-> self last-time))) + (set-time! (-> self last-time))) + (else (+! (-> self total-off-time) (- (current-time) (-> self last-time))) - (if (or (< (seconds 6) (-> self total-time)) (< (seconds 10) (-> self total-off-time))) - (go level-hint-exit) - ) - ) - ) - (set-time! (-> self last-time)) - ) - ) - ) - (go level-hint-exit) - ) - ) + (if (or (< (seconds 6) (-> self total-time)) (< (seconds 10) (-> self total-off-time))) (go level-hint-exit)))) + (set-time! (-> self last-time))))) + (go level-hint-exit))) (defstate level-hint-sidekick (level-hint) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('exit) - (when (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - (set! (-> self sound-id) (new 'static 'sound-id)) - 0 - ) - (go level-hint-exit) - ) - (('die) - (deactivate self) - ) - ) - ) - :exit (behavior () - ;; og:preserve-this - (#when PC_PORT (set! *level-hint-spool-name* #f)) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (remove-setting! 'music-volume) - (remove-setting! 'sfx-volume) - (remove-setting! 'dialog-volume) - (if (= (ppointer->process *hint-semaphore*) self) - (set! *hint-semaphore* (the-as (pointer level-hint) #f)) - ) - (send-event (handle->process (-> self voicebox)) 'die) - ) - :code (behavior ((arg0 string)) - ;; og:preserve-this - (#when PC_PORT (set! *level-hint-spool-name* arg0)) - (when (and (-> *setting-control* current play-hints) (< 0.0 (-> *setting-control* current dialog-volume))) - (case (-> self mode) - (('voicebox) - (if *target* - (set! (-> self voicebox) (ppointer->handle (voicebox-spawn *target* (target-pos 0)))) - ) - ) - ) - (while (handle->process (-> *game-info* auto-save-proc)) - (suspend) - ) - (while (not *sound-player-enable*) - (suspend) - ) - (let ((s5-1 sound-play-by-name) - (s4-1 string->sound-name) - ) - (format (clear *temp-string*) "spool-~S" arg0) - (let ((s5-2 (s5-1 (s4-1 *temp-string*) (new-sound-id) 1024 0 0 (sound-group sfx) #t))) - (set! (-> self sound-id) s5-2) - (let ((s4-3 (current-time))) - (while (and (!= (current-str-id) s5-2) (not (time-elapsed? s4-3 (seconds 5)))) - (suspend) - ) - ) - (cond - ((= (current-str-id) s5-2) - (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) - (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) - (add-setting! 'dialog-volume 'rel (-> *setting-control* current dialog-volume-hint) 0) - ;; og:preserve-this PAL patch here - (let ((s5-1 -1) - (s3-1 (current-time)) - (s4-4 (current-time)) - ) - (label cfg-27) - (let ((v1-36 (current-str-pos s5-2))) - (when (< s5-1 v1-36) - (if (> v1-36 0) - (set! s5-1 v1-36) - ) - (set! s3-1 (-> *display* base-frame-counter)) - ) - (when (not (and (or (< v1-36 0) - (time-elapsed? s3-1 (seconds 3)) - (time-elapsed? s4-4 (seconds 60)) - ) - *sound-player-enable* - ) - ) - (suspend) - (goto cfg-27) - ) - ) - ) - ) - (else - (go level-hint-error "NO SOUND " arg0) - ) - ) - ) - ) - ) - (go level-hint-exit) - ) - ) - -(defstate level-hint-ambient-sound (level-hint) - :event (-> level-hint-sidekick event) - :exit (behavior () - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (remove-setting! 'music-volume) - (remove-setting! 'sfx-volume) - (if (= (ppointer->process *hint-semaphore*) self) - (set! *hint-semaphore* (the-as (pointer level-hint) #f)) - ) - ) - :code (behavior ((arg0 string)) - (while (not *sound-player-enable*) - (suspend) - ) - (cond - ((-> self trans) - (let ((s5-0 sound-play-by-name) - (s4-0 string->sound-name) - ) - (format (clear *temp-string*) "spool-~S" arg0) - (set! (-> self sound-id) - (s5-0 (s4-0 *temp-string*) (new-sound-id) 1024 1 0 (sound-group sfx) (the-as symbol (-> self trans))) - ) - ) - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('exit) + (when (nonzero? (-> self sound-id)) + (sound-stop (-> self sound-id)) + (set! (-> self sound-id) (new 'static 'sound-id)) + 0) + (go level-hint-exit)) + (('die) (deactivate self)))) + :exit + (behavior () + ;; og:preserve-this + (#when PC_PORT + (set! *level-hint-spool-name* #f)) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (remove-setting! 'music-volume) + (remove-setting! 'sfx-volume) + (remove-setting! 'dialog-volume) + (if (= (ppointer->process *hint-semaphore*) self) (set! *hint-semaphore* (the-as (pointer level-hint) #f))) + (send-event (handle->process (-> self voicebox)) 'die)) + :code + (behavior ((arg0 string)) + ;; og:preserve-this + (#when PC_PORT + (set! *level-hint-spool-name* arg0)) + (when (and (-> *setting-control* current play-hints) (< 0.0 (-> *setting-control* current dialog-volume))) + (case (-> self mode) + (('voicebox) (if *target* (set! (-> self voicebox) (ppointer->handle (voicebox-spawn *target* (target-pos 0))))))) + (while (handle->process (-> *game-info* auto-save-proc)) + (suspend)) + (while (not *sound-player-enable*) + (suspend)) (let ((s5-1 sound-play-by-name) - (s4-2 string->sound-name) - ) + (s4-1 string->sound-name)) (format (clear *temp-string*) "spool-~S" arg0) - (set! (-> self sound-id) (s5-1 (s4-2 *temp-string*) (new-sound-id) 1024 0 0 (sound-group sfx) #t)) - ) - ) - ) - (let ((s5-2 (current-time))) - (while (and (!= (current-str-id) (-> self sound-id)) (not (time-elapsed? s5-2 (seconds 5)))) - (suspend) - ) - ) - (cond - ((= (current-str-id) (-> self sound-id)) - (when (or (= (-> self mode) 'stinger) (= (-> self mode) 'camera)) - (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) - (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) - ) - ;; og:preserve-this PAL patch here - (let ((gp-1 -1) - (s4-4 (-> *display* base-frame-counter)) - (s5-4 (-> *display* base-frame-counter)) - ) - (label cfg-19) - (let ((v1-24 (current-str-pos (-> self sound-id)))) - (when (< gp-1 v1-24) - (if (> v1-24 0) - (set! gp-1 v1-24) - ) - (set! s4-4 (-> *display* base-frame-counter)) - ) - (when (not (and (or (< v1-24 0) - (>= (- (-> *display* base-frame-counter) s4-4) (seconds 3)) - (>= (- (-> *display* base-frame-counter) s5-4) (seconds 60)) - ) - *sound-player-enable* - ) - ) - (suspend) - (goto cfg-19) - ) - ) - ) - ) - (else - (go level-hint-error "NO SOUND " arg0) - ) - ) - (go level-hint-exit) - ) - ) + (let ((s5-2 (s5-1 (s4-1 *temp-string*) (new-sound-id) 1024 0 0 (sound-group sfx) #t))) + (set! (-> self sound-id) s5-2) + (let ((s4-3 (current-time))) (while (and (!= (current-str-id) s5-2) (not (time-elapsed? s4-3 (seconds 5)))) (suspend))) + (cond + ((= (current-str-id) s5-2) + (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) + (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) + (add-setting! 'dialog-volume 'rel (-> *setting-control* current dialog-volume-hint) 0) + ;; og:preserve-this PAL patch here + (let ((s5-1 -1) + (s3-1 (current-time)) + (s4-4 (current-time))) + (label cfg-27) + (let ((v1-36 (current-str-pos s5-2))) + (when (< s5-1 v1-36) + (if (> v1-36 0) (set! s5-1 v1-36)) + (set! s3-1 (-> *display* base-frame-counter))) + (when (not (and (or (< v1-36 0) (time-elapsed? s3-1 (seconds 3)) (time-elapsed? s4-4 (seconds 60))) *sound-player-enable*)) + (suspend) + (goto cfg-27))))) + (else (go level-hint-error "NO SOUND " arg0)))))) + (go level-hint-exit))) + +(defstate level-hint-ambient-sound (level-hint) + :event + (-> level-hint-sidekick + event) + :exit + (behavior () + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (remove-setting! 'music-volume) + (remove-setting! 'sfx-volume) + (if (= (ppointer->process *hint-semaphore*) self) (set! *hint-semaphore* (the-as (pointer level-hint) #f)))) + :code + (behavior ((arg0 string)) + (while (not *sound-player-enable*) + (suspend)) + (cond + ((-> self trans) + (let ((s5-0 sound-play-by-name) + (s4-0 string->sound-name)) + (format (clear *temp-string*) "spool-~S" arg0) + (set! (-> self sound-id) + (s5-0 (s4-0 *temp-string*) (new-sound-id) 1024 1 0 (sound-group sfx) (the-as symbol (-> self trans)))))) + (else + (let ((s5-1 sound-play-by-name) + (s4-2 string->sound-name)) + (format (clear *temp-string*) "spool-~S" arg0) + (set! (-> self sound-id) (s5-1 (s4-2 *temp-string*) (new-sound-id) 1024 0 0 (sound-group sfx) #t))))) + (let ((s5-2 (current-time))) + (while (and (!= (current-str-id) (-> self sound-id)) (not (time-elapsed? s5-2 (seconds 5)))) + (suspend))) + (cond + ((= (current-str-id) (-> self sound-id)) + (when (or (= (-> self mode) 'stinger) (= (-> self mode) 'camera)) + (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) + (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0)) + ;; og:preserve-this PAL patch here + (let ((gp-1 -1) + (s4-4 (-> *display* base-frame-counter)) + (s5-4 (-> *display* base-frame-counter))) + (label cfg-19) + (let ((v1-24 (current-str-pos (-> self sound-id)))) + (when (< gp-1 v1-24) + (if (> v1-24 0) (set! gp-1 v1-24)) + (set! s4-4 (-> *display* base-frame-counter))) + (when (not (and (or (< v1-24 0) + (>= (- (-> *display* base-frame-counter) s4-4) (seconds 3)) + (>= (- (-> *display* base-frame-counter) s5-4) (seconds 60))) + *sound-player-enable*)) + (suspend) + (goto cfg-19))))) + (else (go level-hint-error "NO SOUND " arg0))) + (go level-hint-exit))) (defstate level-hint-error (level-hint) - :event (-> level-hint-normal event) - :code (behavior ((arg0 string) (arg1 string)) - (remove-setting! 'hint) - (let ((s4-0 (current-time))) - (until (time-elapsed? s4-0 (seconds 1)) - (when (and *debug-segment* (not (paused?)) (not (str-is-playing?)) (bottom-hud-hidden?)) - (let ((s3-0 - (new 'stack 'font-context *font-default-matrix* 56 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-7 s3-0)) - (set! (-> v1-7 width) (the float 400)) - ) - (let ((v1-8 s3-0)) - (set! (-> v1-8 height) (the float 96)) - ) - (set! (-> s3-0 flags) (font-flags shadow kerning middle)) - (let ((s2-0 print-game-text)) - (format (clear *temp-string*) "~S~S" arg0 arg1) - (s2-0 *temp-string* s3-0 #f 128 22) - ) - ) - ) - (suspend) - ) - ) - (go level-hint-exit) - ) - ) + :event + (-> level-hint-normal + event) + :code + (behavior ((arg0 string) (arg1 string)) + (remove-setting! 'hint) + (let ((s4-0 (current-time))) + (until (time-elapsed? s4-0 (seconds 1)) + (when (and *debug-segment* (not (paused?)) (not (str-is-playing?)) (bottom-hud-hidden?)) + (let ((s3-0 (new 'stack 'font-context *font-default-matrix* 56 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-7 s3-0)) (set! (-> v1-7 width) (the float 400))) + (let ((v1-8 s3-0)) (set! (-> v1-8 height) (the float 96))) + (set! (-> s3-0 flags) (font-flags shadow kerning middle)) + (let ((s2-0 print-game-text)) (format (clear *temp-string*) "~S~S" arg0 arg1) (s2-0 *temp-string* s3-0 #f 128 22)))) + (suspend))) + (go level-hint-exit))) (defstate level-hint-exit (level-hint) - :code (behavior () - (if (= (ppointer->process *hint-semaphore*) self) - (set! *hint-semaphore* (the-as (pointer level-hint) #f)) - ) - ) - ) + :code + (behavior () + (if (= (ppointer->process *hint-semaphore*) self) (set! *hint-semaphore* (the-as (pointer level-hint) #f))))) (defun ambient-type-error ((arg0 drawable-ambient) (arg1 vector)) (when *display-entity-errors* (let ((s2-0 (-> arg0 ambient))) - (format - (clear *temp-string*) - "~2j~s art error for ~s ~s" - (res-lump-struct s2-0 'effect-name structure :time 0.0) - (res-lump-struct s2-0 'type structure) - (res-lump-struct s2-0 'name structure) - ) - ) + (format (clear *temp-string*) + "~2j~s art error for ~s ~s" + (res-lump-struct s2-0 'effect-name structure :time 0.0) + (res-lump-struct s2-0 'type structure) + (res-lump-struct s2-0 'name structure))) *temp-string* - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - *temp-string* - (-> arg0 bsphere) - (font-color red) - (the-as vector2h #f) - ) - ) + (add-debug-text-3d #t (bucket-id debug-no-zbuf) *temp-string* (-> arg0 bsphere) (font-color red) (the-as vector2h #f))) 0 - (none) - ) + (none)) (defun ambient-type-poi ((arg0 drawable-ambient) (arg1 vector)) 0 - (none) - ) + (none)) (defun ambient-type-hint ((arg0 drawable-ambient) (arg1 vector)) (with-pp @@ -702,47 +407,26 @@ (cond ((zero? s5-0) (when (and *debug-segment* (not (paused?)) (not (str-is-playing?)) (bottom-hud-hidden?)) - (let ((a1-3 - (new 'stack 'font-context *font-default-matrix* 56 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-5 a1-3)) - (set! (-> v1-5 width) (the float 400)) - ) - (let ((v1-6 a1-3)) - (set! (-> v1-6 height) (the float 96)) - ) + (let ((a1-3 (new 'stack 'font-context *font-default-matrix* 56 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-5 a1-3)) (set! (-> v1-5 width) (the float 400))) + (let ((v1-6 a1-3)) (set! (-> v1-6 height) (the float 96))) (set! (-> a1-3 flags) (font-flags shadow kerning middle large)) - (print-game-text "AS: UNKNOWN ID" a1-3 #f 128 22) - ) - ) - ) - ((!= s5-0 -1) - (kill-current-level-hint '() '() 'exit) - (process-spawn level-hint s5-0 #f (-> arg0 ambient) :to pp) - ) - ) - ) + (print-game-text "AS: UNKNOWN ID" a1-3 #f 128 22)))) + ((!= s5-0 -1) (kill-current-level-hint '() '() 'exit) (process-spawn level-hint s5-0 #f (-> arg0 ambient) :to pp)))) 0 - (none) - ) - ) + (none))) (defun ambient-type-sound ((arg0 drawable-ambient) (arg1 vector)) (local-vars (sv-16 string) (sv-112 res-tag)) (let* ((s5-0 (-> arg0 ambient)) - (s4-0 (-> s5-0 ambient-data user-uint64 0)) - ) + (s4-0 (-> s5-0 ambient-data user-uint64 0))) (when (>= (current-time) (the-as time-frame s4-0)) (let ((v1-5 (res-lump-data s5-0 'cycle-speed pointer))) (set! (-> s5-0 ambient-data user-uint64 0) - (the-as uint (+ (current-time) - (the int (* 300.0 (-> (the-as (pointer float) v1-5) 0))) - (rand-vu-int-count (the int (* 300.0 (-> (the-as (pointer float) v1-5) 1)))) - ) - ) - ) - ) + (the-as uint + (+ (current-time) + (the int (* 300.0 (-> (the-as (pointer float) v1-5) 0))) + (rand-vu-int-count (the int (* 300.0 (-> (the-as (pointer float) v1-5) 1)))))))) (when (< (the-as uint (- (current-time) (the-as int s4-0))) (the-as uint 300)) (let ((f30-0 (the float (rand-vu-int-count (the-as int (-> s5-0 ambient-data user-float 2)))))) (set! sv-16 (symbol->string (res-lump-struct s5-0 'effect-name symbol :time f30-0))) @@ -760,39 +444,23 @@ f30-0 (the-as pointer #f) (& sv-112) - *res-static-buf* - ) - ) - ) - (if a1-7 - (effect-param->sound-spec s4-2 (the-as (pointer float) a1-7) (the-as int (-> sv-112 elt-count))) - ) - ) + *res-static-buf*))) + (if a1-7 (effect-param->sound-spec s4-2 (the-as (pointer float) a1-7) (the-as int (-> sv-112 elt-count))))) (when *debug-effect-control* (format #t "(~5D) effect sound ~A ~S " (current-time) (res-lump-struct s5-0 'name structure) sv-16) - (format - #t - "volume: ~f pitch-mod: ~f~%" - (* 0.09765625 (the float (-> s4-2 volume))) - (* 0.000656168 (the float (-> s4-2 pitch-mod))) - ) - ) - (sound-play-by-spec s4-2 (new-sound-id) (-> arg0 bsphere)) - ) - ) - ) - ) - ) + (format #t + "volume: ~f pitch-mod: ~f~%" + (* 0.09765625 (the float (-> s4-2 volume))) + (* 0.000656168 (the float (-> s4-2 pitch-mod))))) + (sound-play-by-spec s4-2 (new-sound-id) (-> arg0 bsphere))))))) 0 - (none) - ) + (none)) (defun ambient-type-sound-loop ((arg0 drawable-ambient) (arg1 vector)) (let* ((s5-0 (-> arg0 ambient)) (s2-0 (symbol->string (the-as symbol (-> s5-0 ambient-data user-float 2)))) (s3-0 (the-as object (-> s5-0 ambient-data user-float 1))) - (s4-0 (new 'stack 'sound-spec)) - ) + (s4-0 (new 'stack 'sound-spec))) (set! (-> s4-0 sound-name) (string->sound-name s2-0)) (logior! (-> s4-0 mask) (sound-mask volume)) (set! (-> s4-0 volume) 1024) @@ -800,206 +468,133 @@ (let ((t9-2 effect-param->sound-spec) (a0-5 s4-0) (v1-8 (-> arg0 ambient)) - (a1-2 (-> (the-as (pointer res-tag) s3-0) 0)) - ) - (t9-2 - a0-5 - (the-as (pointer float) (&+ (-> v1-8 data-base) (-> a1-2 data-offset))) - (the-as int (-> (the-as (pointer res-tag) s3-0) 0 elt-count)) - ) - ) - ) - (sound-play-by-spec s4-0 (the-as sound-id (-> s5-0 ambient-data user-float 0)) (-> arg0 bsphere)) - ) + (a1-2 (-> (the-as (pointer res-tag) s3-0) 0))) + (t9-2 a0-5 + (the-as (pointer float) (&+ (-> v1-8 data-base) (-> a1-2 data-offset))) + (the-as int (-> (the-as (pointer res-tag) s3-0) 0 elt-count))))) + (sound-play-by-spec s4-0 (the-as sound-id (-> s5-0 ambient-data user-float 0)) (-> arg0 bsphere))) 0 - (none) - ) + (none)) (defun ambient-type-light ((arg0 drawable-ambient) (arg1 vector)) (when *target* (let ((s4-0 (-> arg0 ambient)) - (s5-0 #t) - ) + (s5-0 #t)) (let ((s3-0 (-> ((method-of-type res-lump lookup-tag-idx) s4-0 'vol 'exact 0.0) lo))) (when (>= (the-as int s3-0) 0) (let ((s2-0 (the-as int s3-0)) - (s1-0 (-> s4-0 tag s3-0)) - ) + (s1-0 (-> s4-0 tag s3-0))) 0 (while (= (-> s1-0 name) (-> s4-0 tag s3-0 name)) (let ((v1-8 (the-as object (make-property-data s4-0 0.0 (the-as res-tag-pair s2-0) (the-as pointer #f))))) (set! s5-0 #t) (countdown (a0-6 (-> s1-0 elt-count)) - (when (< (-> arg1 w) (- (vector-dot arg1 (-> (the-as (inline-array vector) v1-8) a0-6)) - (-> (the-as (inline-array vector) v1-8) a0-6 w) - ) - ) + (when (< (-> arg1 w) + (- (vector-dot arg1 (-> (the-as (inline-array vector) v1-8) a0-6)) (-> (the-as (inline-array vector) v1-8) a0-6 w))) (set! s5-0 #f) - (goto cfg-9) - ) - ) - ) + (goto cfg-9)))) (label cfg-9) - (if s5-0 - (goto cfg-15) - ) + (if s5-0 (goto cfg-15)) (+! s2-0 1) - (set! s1-0 (-> s4-0 tag s2-0)) - ) - ) - ) - ) + (set! s1-0 (-> s4-0 tag s2-0)))))) (label cfg-15) - (when s5-0 - ) - ) - ) + (when s5-0))) 0 - (none) - ) + (none)) (defun ambient-type-dark ((arg0 drawable-ambient) (arg1 vector)) (when *target* (let ((s4-0 (-> arg0 ambient)) - (s5-0 #t) - ) + (s5-0 #t)) (let ((s3-0 (-> ((method-of-type res-lump lookup-tag-idx) s4-0 'vol 'exact 0.0) lo))) (when (>= (the-as int s3-0) 0) (let ((s2-0 (the-as int s3-0)) - (s1-0 (-> s4-0 tag s3-0)) - ) + (s1-0 (-> s4-0 tag s3-0))) 0 (while (= (-> s1-0 name) (-> s4-0 tag s3-0 name)) (let ((v1-8 (the-as object (make-property-data s4-0 0.0 (the-as res-tag-pair s2-0) (the-as pointer #f))))) (set! s5-0 #t) (countdown (a0-6 (-> s1-0 elt-count)) - (when (< (-> arg1 w) (- (vector-dot arg1 (-> (the-as (inline-array vector) v1-8) a0-6)) - (-> (the-as (inline-array vector) v1-8) a0-6 w) - ) - ) + (when (< (-> arg1 w) + (- (vector-dot arg1 (-> (the-as (inline-array vector) v1-8) a0-6)) (-> (the-as (inline-array vector) v1-8) a0-6 w))) (set! s5-0 #f) - (goto cfg-9) - ) - ) - ) + (goto cfg-9)))) (label cfg-9) - (if s5-0 - (goto cfg-15) - ) + (if s5-0 (goto cfg-15)) (+! s2-0 1) - (set! s1-0 (-> s4-0 tag s2-0)) - ) - ) - ) - ) + (set! s1-0 (-> s4-0 tag s2-0)))))) (label cfg-15) - (if s5-0 - (set! (-> *target* draw secondary-interp) 1.0) - ) - ) - ) + (if s5-0 (set! (-> *target* draw secondary-interp) 1.0)))) 0 - (none) - ) + (none)) (defun ambient-type-weather-off ((arg0 drawable-ambient) (arg1 vector)) (when *target* (let ((s4-0 (-> arg0 ambient)) - (s5-0 #t) - ) + (s5-0 #t)) (let ((s3-0 (-> ((method-of-type res-lump lookup-tag-idx) s4-0 'vol 'exact 0.0) lo))) (when (>= (the-as int s3-0) 0) (let ((s2-0 (the-as int s3-0)) - (s1-0 (-> s4-0 tag s3-0)) - ) + (s1-0 (-> s4-0 tag s3-0))) 0 (while (= (-> s1-0 name) (-> s4-0 tag s3-0 name)) (let ((v1-8 (the-as object (make-property-data s4-0 0.0 (the-as res-tag-pair s2-0) (the-as pointer #f))))) (set! s5-0 #t) (countdown (a0-6 (-> s1-0 elt-count)) - (when (< (-> arg1 w) (- (vector-dot arg1 (-> (the-as (inline-array vector) v1-8) a0-6)) - (-> (the-as (inline-array vector) v1-8) a0-6 w) - ) - ) + (when (< (-> arg1 w) + (- (vector-dot arg1 (-> (the-as (inline-array vector) v1-8) a0-6)) (-> (the-as (inline-array vector) v1-8) a0-6 w))) (set! s5-0 #f) - (goto cfg-9) - ) - ) - ) + (goto cfg-9)))) (label cfg-9) - (if s5-0 - (goto cfg-15) - ) + (if s5-0 (goto cfg-15)) (+! s2-0 1) - (set! s1-0 (-> s4-0 tag s2-0)) - ) - ) - ) - ) + (set! s1-0 (-> s4-0 tag s2-0)))))) (label cfg-15) - (if s5-0 - (set! *weather-off* #t) - ) - ) - ) + (if s5-0 (set! *weather-off* #t)))) 0 - (none) - ) + (none)) (defun ambient-type-ocean-off ((arg0 drawable-ambient) (arg1 vector)) (set! *ocean-off* #t) 0 - (none) - ) + (none)) (defun ambient-type-ocean-near-off ((arg0 drawable-ambient) (arg1 vector)) (set! *ocean-near-off* #t) 0 - (none) - ) + (none)) (defun ambient-type-music ((arg0 drawable-ambient) (arg1 vector)) (let ((gp-0 (-> arg0 ambient))) (if (-> gp-0 ambient-data user-float 0) - (set! (-> *setting-control* default music) (the-as symbol (-> gp-0 ambient-data user-float 0))) - ) + (set! (-> *setting-control* default music) (the-as symbol (-> gp-0 ambient-data user-float 0)))) (when (nonzero? (-> gp-0 ambient-data user-float 1)) (let ((f0-0 (res-lump-float gp-0 'priority :default 10.0))) (when (>= f0-0 (-> *setting-control* default sound-flava-priority)) ;; og:preserve-this TODO this following form has been manually modified to work (set! (-> *setting-control* default sound-flava) (the-as uint (-> gp-0 ambient-data user-int32 1))) - (set! (-> *setting-control* default sound-flava-priority) f0-0) - ) - ) - ) - ) + (set! (-> *setting-control* default sound-flava-priority) f0-0))))) 0 - (none) - ) + (none)) (defmethod collect-ambients ((this drawable-ambient) (arg0 sphere) (arg1 int) (arg2 ambient-list)) (dotimes (s2-0 arg1) (when (spheres-overlap? arg0 (the-as sphere (-> this bsphere))) (set! (-> arg2 items (-> arg2 num-items)) this) - (+! (-> arg2 num-items) 1) - ) - (&+! this 32) - ) + (+! (-> arg2 num-items) 1)) + (&+! this 32)) 0 - (none) - ) + (none)) (defmethod collect-ambients ((this drawable-inline-array-ambient) (arg0 sphere) (arg1 int) (arg2 ambient-list)) (collect-ambients (the-as drawable-ambient (-> this data)) arg0 (-> this length) arg2) 0 - (none) - ) + (none)) (defmethod collect-ambients ((this drawable-tree-ambient) (arg0 sphere) (arg1 int) (arg2 ambient-list)) (collect-ambients (-> this data 0) arg0 (-> this length) arg2) 0 - (none) - ) + (none)) (defmethod birth-ambient! ((this entity-ambient)) (set! (-> this ambient-data quad) (the-as uint128 0)) @@ -1007,8 +602,7 @@ (case (res-lump-struct this 'type structure) (('sound) (let ((s5-0 (res-lump-struct this 'effect-name structure :time 0.0)) - (a0-7 (res-lump-data this 'cycle-speed pointer)) - ) + (a0-7 (res-lump-data this 'cycle-speed pointer))) (when (and s5-0 a0-7) (cond ((>= (-> (the-as (pointer float) a0-7)) 0.0) @@ -1017,91 +611,58 @@ (let ((s5-1 (-> ((method-of-type res-lump lookup-tag-idx) this 'effect-name 'exact 0.0) lo))) (when (>= (the-as int s5-1) 0) (let ((s4-0 (the-as int s5-1)) - (v1-14 (-> this tag s5-1)) - ) + (v1-14 (-> this tag s5-1))) 0 (while (= (-> v1-14 name) (-> this tag s5-1 name)) (make-property-data this 0.0 (the-as res-tag-pair s4-0) (the-as pointer #f)) - (set! (-> this ambient-data user-float 2) - (the-as float (+ (the-as int (-> this ambient-data user-float 2)) 1)) - ) + (set! (-> this ambient-data user-float 2) (the-as float (+ (the-as int (-> this ambient-data user-float 2)) 1))) (+! s4-0 1) - (set! v1-14 (-> this tag s4-0)) - ) - ) - ) - ) - ) + (set! v1-14 (-> this tag s4-0))))))) (else - (set! (-> this ambient-data user-float 0) (the-as float (new-sound-id))) - (let ((v1-28 ((method-of-type res-lump lookup-tag-idx) this 'effect-param 'exact 0.0))) - (set! (-> this ambient-data user-float 1) (the-as float (if (< (the-as int v1-28) 0) - (the-as (pointer res-tag) #f) - (&-> (-> this tag) (-> v1-28 lo)) - ) - ) - ) - ) - (set! (-> this ambient-data user-float 2) (the-as float s5-0)) - (set! (-> this ambient-data function) ambient-type-sound-loop) - ) - ) - ) - ) - ) + (set! (-> this ambient-data user-float 0) (the-as float (new-sound-id))) + (let ((v1-28 ((method-of-type res-lump lookup-tag-idx) this 'effect-param 'exact 0.0))) + (set! (-> this ambient-data user-float 1) + (the-as float (if (< (the-as int v1-28) 0) (the-as (pointer res-tag) #f) (&-> (-> this tag) (-> v1-28 lo)))))) + (set! (-> this ambient-data user-float 2) (the-as float s5-0)) + (set! (-> this ambient-data function) ambient-type-sound-loop)))))) (('poi) (let ((s5-2 (res-lump-struct this 'effect-name structure :time 0.0))) (when (res-lump-value this 'loc-name-id uint128) (set! (-> this ambient-data user-float 2) (the-as float s5-2)) - (set! (-> this ambient-data function) ambient-type-poi) - ) - ) - ) + (set! (-> this ambient-data function) ambient-type-poi)))) (('hint) (let ((s5-3 (res-lump-struct this 'effect-name structure :time 0.0))) (when (res-lump-value this 'text-id uint128) (set! (-> this ambient-data user-float 2) (the-as float s5-3)) - (set! (-> this ambient-data function) ambient-type-hint) - ) - ) - ) + (set! (-> this ambient-data function) ambient-type-hint)))) (('light) (set! (-> this ambient-data user-float 2) (res-lump-struct this 'effect-name float :time 0.0)) - (set! (-> this ambient-data function) ambient-type-light) - ) + (set! (-> this ambient-data function) ambient-type-light)) (('dark) (set! (-> this ambient-data user-float 2) (res-lump-struct this 'effect-name float :time 0.0)) - (set! (-> this ambient-data function) ambient-type-dark) - ) + (set! (-> this ambient-data function) ambient-type-dark)) (('weather-off) (set! (-> this ambient-data user-float 2) (res-lump-struct this 'effect-name float :time 0.0)) - (set! (-> this ambient-data function) ambient-type-weather-off) - ) + (set! (-> this ambient-data function) ambient-type-weather-off)) (('ocean-off) (set! (-> this ambient-data user-float 2) (res-lump-struct this 'effect-name float :time 0.0)) - (set! (-> this ambient-data function) ambient-type-ocean-off) - ) + (set! (-> this ambient-data function) ambient-type-ocean-off)) (('ocean-near-off) (set! (-> this ambient-data user-float 2) (res-lump-struct this 'effect-name float :time 0.0)) - (set! (-> this ambient-data function) ambient-type-ocean-near-off) - ) + (set! (-> this ambient-data function) ambient-type-ocean-near-off)) (('music) (set! (-> this ambient-data user-float 2) (res-lump-struct this 'effect-name float :time 0.0)) (set! (-> this ambient-data user-float 0) (res-lump-struct this 'music float)) (set! (-> this ambient-data user-float 1) (res-lump-value this 'flava float)) - (set! (-> this ambient-data function) ambient-type-music) - ) - ) - (none) - ) + (set! (-> this ambient-data function) ambient-type-music))) + (none)) (define *execute-ambients* #t) (defmethod execute-ambient ((this drawable-ambient) (arg0 vector)) ((-> this ambient ambient-data function) this arg0) 0 - (none) - ) + (none)) ;; ERROR: function was not converted to expressions. Cannot decompile. @@ -1109,122 +670,69 @@ (local-vars (sv-16 uint128)) (let ((gp-0 (-> this trans)) (s5-0 (res-lump-struct this 'type symbol)) - (s3-0 #f) - ) + (s3-0 #f)) (cond ((= s5-0 'sound) (when *display-ambient-sound-marks* - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (symbol->string (res-lump-struct this 'effect-name symbol :time 0.0)) - gp-0 - (font-color white) - (new 'static 'vector2h :y 24) - ) - (set! s3-0 #t) - ) - ) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (symbol->string (res-lump-struct this 'effect-name symbol :time 0.0)) + gp-0 + (font-color white) + (new 'static 'vector2h :y 24)) + (set! s3-0 #t))) ((= s5-0 'hint) (when *display-ambient-hint-marks* (set! sv-16 (res-lump-value this 'text-id uint128)) (let ((s3-2 add-debug-text-3d) (s2-1 #t) - (s1-1 68) - ) + (s1-1 68)) (format (clear *temp-string*) "TEXT ID #x~X" sv-16) - (s3-2 s2-1 (the-as bucket-id s1-1) *temp-string* gp-0 (font-color white) (new 'static 'vector2h :y 24)) - ) - (set! s3-0 #t) - ) - ) + (s3-2 s2-1 (the-as bucket-id s1-1) *temp-string* gp-0 (font-color white) (new 'static 'vector2h :y 24))) + (set! s3-0 #t))) ((= s5-0 'poi) (when *display-ambient-poi-marks* (let ((a1-7 (res-lump-value this 'loc-name-id uint128))) (when (and (nonzero? a1-7) *common-text*) - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (lookup-text! *common-text* (the-as text-id a1-7) #f) - gp-0 - (font-color white) - (new 'static 'vector2h :y 24) - ) - (set! s3-0 #t) - ) - ) - ) - ) - ((= s5-0 'light) - (if *display-ambient-light-marks* - (set! s3-0 #t) - ) - ) - ((= s5-0 'dark) - (if *display-ambient-dark-marks* - (set! s3-0 #t) - ) - ) - ((= s5-0 'weather-off) - (if *display-ambient-weather-off-marks* - (set! s3-0 #t) - ) - ) - ((= s5-0 'ocean-off) - (if *display-ambient-ocean-off-marks* - (set! s3-0 #t) - ) - ) - ((= s5-0 'ocean-near-off) - (if *display-ambient-ocean-near-off-marks* - (set! s3-0 #t) - ) - ) - ((= s5-0 'music) - (if *display-ambient-music-marks* - (set! s3-0 #t) - ) - ) - ) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (lookup-text! *common-text* (the-as text-id a1-7) #f) + gp-0 + (font-color white) + (new 'static 'vector2h :y 24)) + (set! s3-0 #t))))) + ((= s5-0 'light) (if *display-ambient-light-marks* (set! s3-0 #t))) + ((= s5-0 'dark) (if *display-ambient-dark-marks* (set! s3-0 #t))) + ((= s5-0 'weather-off) (if *display-ambient-weather-off-marks* (set! s3-0 #t))) + ((= s5-0 'ocean-off) (if *display-ambient-ocean-off-marks* (set! s3-0 #t))) + ((= s5-0 'ocean-near-off) (if *display-ambient-ocean-near-off-marks* (set! s3-0 #t))) + ((= s5-0 'music) (if *display-ambient-music-marks* (set! s3-0 #t)))) (when s3-0 (let ((t9-10 add-debug-sphere) (a0-11 #t) (a1-9 67) (a2-9 gp-0) (a3-7 (-> gp-0 w)) - (v1-53 s5-0) - ) - (t9-10 a0-11 (the-as bucket-id a1-9) a2-9 a3-7 (cond - ((= v1-53 'sound) - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ((= v1-53 'poi) - (new 'static 'rgba :g #x80 :b #xff :a #x80) - ) - (else - (new 'static 'rgba :r #xff :a #x80) - ) - ) - ) - ) - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (res-lump-struct this 'name string) - gp-0 - (font-color white) - (new 'static 'vector2h :y 8) - ) - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (symbol->string s5-0) - gp-0 - (font-color white) - (new 'static 'vector2h :y 16) - ) - ) - ) + (v1-53 s5-0)) + (t9-10 a0-11 + (the-as bucket-id a1-9) + a2-9 + a3-7 + (cond + ((= v1-53 'sound) (new 'static 'rgba :r #xff :g #xff :a #x80)) + ((= v1-53 'poi) (new 'static 'rgba :g #x80 :b #xff :a #x80)) + (else (new 'static 'rgba :r #xff :a #x80))))) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (res-lump-struct this 'name string) + gp-0 + (font-color white) + (new 'static 'vector2h :y 8)) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (symbol->string s5-0) + gp-0 + (font-color white) + (new 'static 'vector2h :y 16)))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/entity/entity-h.gc b/goal_src/jak1/engine/entity/entity-h.gc index 3d725cdbda..53d357df3b 100644 --- a/goal_src/jak1/engine/entity/entity-h.gc +++ b/goal_src/jak1/engine/entity/entity-h.gc @@ -1,23 +1,24 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/res-h.gc") (require "kernel/gcommon.gc") (require "engine/util/types-h.gc") - -;; name: entity-h.gc -;; name in dgo: entity-h -;; dgos: GAME, ENGINE - (defun-extern entity-by-name string entity) + (defun-extern entity-by-type type entity-actor) + (defun-extern entity-by-aid uint entity) + (define-extern reset-actors (function symbol none)) + (define-extern *spawn-actors* symbol) + ;; TODO - for cam-start (define-extern reset-cameras (function none)) + (define-extern process-by-ename (function string process)) + (define-extern entity-birth-no-kill (function entity none)) ;; DECOMP BEGINS @@ -29,152 +30,115 @@ (define *generate-actor-vis-output* #f) (deftype entity-perm (structure) - ((user-object object 2) - (user-uint64 uint64 :overlay-at (-> user-object 0)) - (user-float float 2 :overlay-at (-> user-object 0)) - (user-int32 int32 2 :overlay-at (-> user-object 0)) - (user-uint32 uint32 2 :overlay-at (-> user-object 0)) - (user-int16 int16 4 :overlay-at (-> user-object 0)) - (user-uint16 uint16 4 :overlay-at (-> user-object 0)) - (user-int8 int8 8 :overlay-at (-> user-object 0)) - (user-uint8 uint8 8 :overlay-at (-> user-object 0)) - (status entity-perm-status) - (dummy uint8 1) - (task game-task) - (aid actor-id) - (quad uint128 :overlay-at (-> user-object 0)) - ) + ((user-object object 2) + (user-uint64 uint64 :overlay-at (-> user-object 0)) + (user-float float 2 :overlay-at (-> user-object 0)) + (user-int32 int32 2 :overlay-at (-> user-object 0)) + (user-uint32 uint32 2 :overlay-at (-> user-object 0)) + (user-int16 int16 4 :overlay-at (-> user-object 0)) + (user-uint16 uint16 4 :overlay-at (-> user-object 0)) + (user-int8 int8 8 :overlay-at (-> user-object 0)) + (user-uint8 uint8 8 :overlay-at (-> user-object 0)) + (status entity-perm-status) + (dummy uint8 1) + (task game-task) + (aid actor-id) + (quad uint128 :overlay-at (-> user-object 0))) :pack-me (:methods - (update-perm! (_type_ symbol entity-perm-status) _type_) - ) - ) - + (update-perm! (_type_ symbol entity-perm-status) _type_))) (deftype entity-links (structure) - ((prev-link entity-links) - (next-link entity-links) - (entity entity) - (process process) - (level level) - (vis-id int32) - (trans vector :inline) - (perm entity-perm :inline) - (status uint16 :overlay-at (-> perm status)) - (aid actor-id :overlay-at (-> perm aid)) - (task game-task :overlay-at (-> perm task)) - ) + ((prev-link entity-links) + (next-link entity-links) + (entity entity) + (process process) + (level level) + (vis-id int32) + (trans vector :inline) + (perm entity-perm :inline) + (status uint16 :overlay-at (-> perm status)) + (aid actor-id :overlay-at (-> perm aid)) + (task game-task :overlay-at (-> perm task))) (:methods - (birth? (_type_ vector) symbol) - ) - ) - + (birth? (_type_ vector) symbol))) (deftype entity-perm-array (inline-array-class) - ((data entity-perm :inline :dynamic) - ) - ) - + ((data entity-perm :inline :dynamic))) (set! (-> entity-perm-array heap-base) (the-as uint 16)) (deftype entity-links-array (inline-array-class) - ((data entity-links :inline :dynamic) - ) - ) - + ((data entity-links :inline :dynamic))) (set! (-> entity-links-array heap-base) (the-as uint 64)) (deftype entity (res-lump) - ((trans vector :inline) - (aid uint32) - ) + ((trans vector :inline) + (aid uint32)) (:methods - (birth! (_type_) _type_) - (kill! (_type_) _type_) - (add-to-level! (_type_ level-group level actor-id) none) - (remove-from-level! (_type_ level-group) _type_) - (get-level (_type_) level) - ) - ) + (birth! (_type_) _type_) + (kill! (_type_) _type_) + (add-to-level! (_type_ level-group level actor-id) none) + (remove-from-level! (_type_ level-group) _type_) + (get-level (_type_) level))) (deftype entity-camera (entity) - ((connect connectable :inline) - ) - ) + ((connect connectable :inline))) (deftype entity-ambient-data (structure) - ((user-object object 3) - (function (function drawable-ambient vector none)) - (quad uint128 :overlay-at (-> user-object 0)) - (user-uint64 uint64 1 :overlay-at (-> user-object 0)) - (user-float float 3 :overlay-at (-> user-object 0)) - (user-int32 int32 3 :overlay-at (-> user-object 0)) - (user-uint32 uint32 3 :overlay-at (-> user-object 0)) - (user-int16 int16 6 :overlay-at (-> user-object 0)) - (user-uint16 uint16 6 :overlay-at (-> user-object 0)) - (user-int8 int8 12 :overlay-at (-> user-object 0)) - (user-uint8 uint8 12 :overlay-at (-> user-object 0)) - ) - ) - + ((user-object object 3) + (function (function drawable-ambient vector none)) + (quad uint128 :overlay-at (-> user-object 0)) + (user-uint64 uint64 1 :overlay-at (-> user-object 0)) + (user-float float 3 :overlay-at (-> user-object 0)) + (user-int32 int32 3 :overlay-at (-> user-object 0)) + (user-uint32 uint32 3 :overlay-at (-> user-object 0)) + (user-int16 int16 6 :overlay-at (-> user-object 0)) + (user-uint16 uint16 6 :overlay-at (-> user-object 0)) + (user-int8 int8 12 :overlay-at (-> user-object 0)) + (user-uint8 uint8 12 :overlay-at (-> user-object 0)))) (deftype entity-ambient-data-array (inline-array-class) - ((data entity-ambient-data :inline :dynamic) - ) - ) - + ((data entity-ambient-data :inline :dynamic))) (set! (-> entity-ambient-data-array heap-base) (the-as uint 16)) (deftype entity-ambient (entity) - ((ambient-data entity-ambient-data :overlay-at extra) - ) + ((ambient-data entity-ambient-data :overlay-at extra)) (:methods - (draw-debug (_type_) none) - (birth-ambient! (_type_) none) - ) - ) + (draw-debug (_type_) none) + (birth-ambient! (_type_) none))) (deftype entity-actor (entity) - ((nav-mesh nav-mesh) - (etype type) - (task game-task) - (vis-id uint16) - (vis-id-signed int16 :overlay-at vis-id) - (quat quaternion :inline) - ) + ((nav-mesh nav-mesh) + (etype type) + (task game-task) + (vis-id uint16) + (vis-id-signed int16 :overlay-at vis-id) + (quat quaternion :inline)) (:methods - (next-actor (_type_) entity-actor) - (prev-actor (_type_) entity-actor) - (debug-print (_type_ symbol type) none) - (set-or-clear-status! (_type_ entity-perm-status symbol) none) - ) - ) + (next-actor (_type_) entity-actor) + (prev-actor (_type_) entity-actor) + (debug-print (_type_ symbol type) none) + (set-or-clear-status! (_type_ entity-perm-status symbol) none))) (deftype entity-info (basic) - ((ptype type) - (package basic) - (art-group pair) - (pool basic) - (heap-size int32) - ) - ) + ((ptype type) + (package basic) + (art-group pair) + (pool basic) + (heap-size int32))) ;; NOTE - this is a strange pattern...this symbol isn't defined until a later file 'navigate' ;; But this seems to be setting the symbol to nothing if it's not found, but of course, our compiler freaks out (define-extern entity-nav-login (function entity-actor none)) -(if (zero? entity-nav-login) - (set! entity-nav-login (the-as (function entity-actor none) nothing)) - ) -(deftype actor-bank (basic) - ((pause-dist float) - (birth-dist float) - (birth-max int32) - ) - ) +(if (zero? entity-nav-login) (set! entity-nav-login (the-as (function entity-actor none) nothing))) +(deftype actor-bank (basic) + ((pause-dist float) + (birth-dist float) + (birth-max int32))) (define *ACTOR-bank* (new 'static 'actor-bank :pause-dist (meters 50) :birth-dist (meters 220) :birth-max 10)) diff --git a/goal_src/jak1/engine/entity/entity-table.gc b/goal_src/jak1/engine/entity/entity-table.gc index 47fd500658..af43dc066d 100644 --- a/goal_src/jak1/engine/entity/entity-table.gc +++ b/goal_src/jak1/engine/entity/entity-table.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/entity-h.gc") -;; name: entity-table.gc -;; name in dgo: entity-table -;; dgos: GAME, ENGINE - ;; The *entity-info* table contains some simple information that can be used to ;; spawn a process for an entity. ;; :ptype the type of the process @@ -21,147 +16,185 @@ ;; and this may not even be used. (define *entity-info* - (new 'static 'boxed-array :type entity-info :length 19 :allocated-length 19 - (new 'static 'entity-info - :ptype - (type-ref sage-finalboss :method-count 53) - :package "l1" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x8000 - ) - (new 'static 'entity-info - :ptype (type-ref robotboss :method-count 21) - :package "l1" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x8000 - ) - (new 'static 'entity-info - :ptype - (type-ref assistant-levitator :method-count 53) - :package "l1" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x8000 - ) - (new 'static 'entity-info - :ptype (type-ref babak :method-count 76) - :package "l1" - :art-group '("babak") - :pool '*16k-dead-pool* - :heap-size #x2800 - ) - (new 'static 'entity-info - :ptype (type-ref racer :method-count 24) - :package "game" - :art-group '("racer") - :pool '*16k-dead-pool* - :heap-size #x4000 - ) - (new 'static 'entity-info - :ptype (type-ref springbox :method-count 20) - :package "game" - :art-group '("bounceytarp") - :pool '*16k-dead-pool* - :heap-size #x1400 - ) - (new 'static 'entity-info - :ptype (type-ref launcher :method-count 20) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x400 - ) - (new 'static 'entity-info - :ptype - (type-ref pickup-spawner :method-count 30) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #xc00 - ) - (new 'static 'entity-info - :ptype (type-ref bucket :method-count 30) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #xc00 - ) - (new 'static 'entity-info - :ptype (type-ref barrel :method-count 30) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #xc00 - ) - (new 'static 'entity-info - :ptype (type-ref crate :method-count 30) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #xc00 - ) - (new 'static 'entity-info - :ptype - (type-ref orb-cache-top :method-count 29) - :package "game" - :art-group '("orb-cache-top") - :pool '*16k-dead-pool* - :heap-size #x1000 - ) - (new 'static 'entity-info - :ptype (type-ref eco :method-count 31) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x1000 - ) - (new 'static 'entity-info - :ptype (type-ref ecovent :method-count 21) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x1000 - ) - (new 'static 'entity-info - :ptype (type-ref fuel-cell :method-count 31) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x1400 - ) - (new 'static 'entity-info - :ptype (type-ref buzzer :method-count 31) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x1000 - ) - (new 'static 'entity-info - :ptype (type-ref money :method-count 31) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #xc00 ;; og:preserve-this CHANGED from 2k!! - ) - (new 'static 'entity-info - :ptype (type-ref water-vol :method-count 30) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #xc00 - ) - (new 'static 'entity-info - :ptype - (type-ref target-start :method-count 15) - :package "game" - :art-group '() - :pool '*16k-dead-pool* - :heap-size #x400 - ) - ) - ) + (new 'static + 'boxed-array + :type + entity-info + :length 19 + :allocated-length 19 + (new 'static + 'entity-info + :ptype + (type-ref sage-finalboss :method-count 53) + :package "l1" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x8000) + (new 'static + 'entity-info + :ptype + (type-ref robotboss :method-count 21) + :package "l1" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x8000) + (new 'static + 'entity-info + :ptype + (type-ref assistant-levitator :method-count 53) + :package "l1" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x8000) + (new 'static + 'entity-info + :ptype + (type-ref babak :method-count 76) + :package "l1" + :art-group + '("babak") + :pool '*16k-dead-pool* + :heap-size #x2800) + (new 'static + 'entity-info + :ptype + (type-ref racer :method-count 24) + :package "game" + :art-group + '("racer") + :pool '*16k-dead-pool* + :heap-size #x4000) + (new 'static + 'entity-info + :ptype + (type-ref springbox :method-count 20) + :package "game" + :art-group + '("bounceytarp") + :pool '*16k-dead-pool* + :heap-size #x1400) + (new 'static + 'entity-info + :ptype + (type-ref launcher :method-count 20) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x400) + (new 'static + 'entity-info + :ptype + (type-ref pickup-spawner :method-count 30) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #xc00) + (new 'static + 'entity-info + :ptype + (type-ref bucket :method-count 30) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #xc00) + (new 'static + 'entity-info + :ptype + (type-ref barrel :method-count 30) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #xc00) + (new 'static + 'entity-info + :ptype + (type-ref crate :method-count 30) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #xc00) + (new 'static + 'entity-info + :ptype + (type-ref orb-cache-top :method-count 29) + :package "game" + :art-group + '("orb-cache-top") + :pool '*16k-dead-pool* + :heap-size #x1000) + (new 'static + 'entity-info + :ptype + (type-ref eco :method-count 31) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x1000) + (new 'static + 'entity-info + :ptype + (type-ref ecovent :method-count 21) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x1000) + (new 'static + 'entity-info + :ptype + (type-ref fuel-cell :method-count 31) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x1400) + (new 'static + 'entity-info + :ptype + (type-ref buzzer :method-count 31) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x1000) + (new 'static + 'entity-info + :ptype + (type-ref money :method-count 31) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #xc00 + ;; og:preserve-this CHANGED from 2k!! + ) + (new 'static + 'entity-info + :ptype + (type-ref water-vol :method-count 30) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #xc00) + (new 'static + 'entity-info + :ptype + (type-ref target-start :method-count 15) + :package "game" + :art-group + '() + :pool '*16k-dead-pool* + :heap-size #x400))) (defun entity-info-lookup ((arg0 type)) "Look up the entity-info for a given type. @@ -171,28 +204,15 @@ (cond ((nonzero? (-> arg0 method-table 13)) ;; we already cached the type in the method table - (-> arg0 method-table 13) - ) + (-> arg0 method-table 13)) (else ;; search the table (let ((v1-1 *entity-info*)) (dotimes (a1-0 (-> v1-1 length)) (when (= arg0 (-> v1-1 a1-0 ptype)) ;; found it, cache it in the method table - (set! (-> arg0 method-table 13) - (the-as function (-> v1-1 a1-0)) - ) - (return (-> v1-1 a1-0)) - ) - ) - ) - + (set! (-> arg0 method-table 13) (the-as function (-> v1-1 a1-0))) + (return (-> v1-1 a1-0))))) ;; didn't find it, cache and return #f (set! (-> arg0 method-table 13) #f) - #f - ) - ) - ) - ) - - + #f)))) diff --git a/goal_src/jak1/engine/entity/entity.gc b/goal_src/jak1/engine/entity/entity.gc index a3cb33073b..d79d0865e0 100644 --- a/goal_src/jak1/engine/entity/entity.gc +++ b/goal_src/jak1/engine/entity/entity.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/actor-link-h.gc") (require "engine/entity/ambient.gc") (require "engine/level/level.gc") @@ -9,10 +8,6 @@ (require "engine/common-obs/process-drawable.gc") (require "engine/entity/entity-table.gc") -;; name: entity.gc -;; name in dgo: entity -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -20,9 +15,10 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define *spawn-actors* #t) + (define *compact-actors* #t) -(define *vis-actors* #t) +(define *vis-actors* #t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; entity basic methods @@ -33,65 +29,49 @@ (set! (-> arg0 length) (max 44 (-> arg0 length))) (set! (-> arg0 data 43 name) "entity") (+! (-> arg0 data 43 count) 1) - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 43 used) v1-6) - (+! (-> arg0 data 43 total) (logand -16 (+ v1-6 15))) - ) - + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 43 used) v1-6) (+! (-> arg0 data 43 total) (logand -16 (+ v1-6 15)))) ;; note: does something with flags here. (mem-usage (-> this actor) arg0 (logior arg1 64)) - (the-as drawable-actor 0) - ) + (the-as drawable-actor 0)) (defmethod mem-usage ((this drawable-inline-array-actor) (arg0 memory-usage-block) (arg1 int)) "update memory use for a group of drawable actors." (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - (the-as drawable-inline-array-actor 0) - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + (the-as drawable-inline-array-actor 0)) (defmethod print ((this entity-links)) (format #t "#" (-> this process) this) - this - ) + this) (defmethod print ((this entity-perm)) - (format #t "#" + (format #t + "#" (-> this aid) (-> this task) (-> this status) (-> this user-uint64) - this - ) - this - ) + this) + this) (defmethod birth! ((this entity)) "children of entity should override this." (format #t "birth ~A~%" this) - this - ) + this) (defmethod kill! ((this entity)) "children of entity should override this." (format #t "kill ~A~%" this) - this - ) + this) (defmethod print ((this entity)) "print an entity, with its name from the res." (format #t "#<~A :name ~S @ #x~X>" (-> this type) (res-lump-struct this 'name structure) this) - this - ) - + this) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; entity finding @@ -99,23 +79,15 @@ (defmethod get-level ((this entity)) "Get the level that the entity belongs to." - ;; loop over levels (dotimes (v1-0 (-> *level* length)) (let ((a1-3 (-> *level* level v1-0))) ;; only if the level is active (when (= (-> a1-3 status) 'active) ;; check if we are inside the heap - (if (and (>= (the-as int this) (the-as int (-> a1-3 heap base))) - (< (the-as int this) (the-as int (-> a1-3 heap top-base))) - ) - (return a1-3) - ) - ) - ) - ) - (-> *level* level-default) - ) + (if (and (>= (the-as int this) (the-as int (-> a1-3 heap base))) (< (the-as int this) (the-as int (-> a1-3 heap top-base)))) + (return a1-3))))) + (-> *level* level-default)) (defun entity-by-name ((arg0 string)) "Get an entity with the given name. Will search in @@ -129,41 +101,16 @@ (let ((s3-0 (-> s4-0 bsp actors))) (when (nonzero? s3-0) (dotimes (s2-0 (-> s3-0 length)) - (let ((s1-0 (-> s3-0 data s2-0 actor))) - (if (name= (res-lump-struct s1-0 'name basic) arg0) - (return s1-0) - ) - ) - ) - ) - ) + (let ((s1-0 (-> s3-0 data s2-0 actor))) (if (name= (res-lump-struct s1-0 'name basic) arg0) (return s1-0)))))) (let ((s3-1 (-> s4-0 bsp ambients))) (when (nonzero? s3-1) (dotimes (s2-1 (-> s3-1 length)) - (let ((s1-1 (-> s3-1 data s2-1 ambient))) - (if (name= (res-lump-struct s1-1 'name basic) arg0) - (return s1-1) - ) - ) - ) - ) - ) + (let ((s1-1 (-> s3-1 data s2-1 ambient))) (if (name= (res-lump-struct s1-1 'name basic) arg0) (return s1-1)))))) (let ((s4-1 (-> s4-0 bsp cameras))) (when (nonzero? s4-1) (dotimes (s3-2 (-> s4-1 length)) - (let ((s2-2 (-> s4-1 s3-2))) - (if (name= (res-lump-struct s2-2 'name basic) arg0) - (return s2-2) - ) - ) - ) - ) - ) - ) - ) - ) - (the-as entity #f) - ) + (let ((s2-2 (-> s4-1 s3-2))) (if (name= (res-lump-struct s2-2 'name basic) arg0) (return s2-2))))))))) + (the-as entity #f)) (defun entity-by-type ((arg0 type)) "Get an entity-actor with the _exactly_ the given type. @@ -175,18 +122,8 @@ (when (nonzero? s4-0) (dotimes (s3-0 (-> s4-0 length)) (let ((s2-0 (-> s4-0 data s3-0 actor))) - (if (and (type-type? (-> s2-0 type) entity-actor) (= (-> s2-0 etype) arg0)) - (return s2-0) - ) - ) - ) - ) - ) - ) - ) - ) - (the-as entity-actor #f) - ) + (if (and (type-type? (-> s2-0 type) entity-actor) (= (-> s2-0 etype) arg0)) (return s2-0))))))))) + (the-as entity-actor #f)) (defun entity-by-aid ((arg0 uint)) "Get an entity by actor-id. This looks through the entity-links-array, so it @@ -197,35 +134,17 @@ (let ((a1-4 (-> a1-3 entity))) (when (nonzero? a1-4) (let ((a2-4 0) - (a3-2 (+ (-> a1-4 length) -1)) - ) + (a3-2 (+ (-> a1-4 length) -1))) 0 (while (>= a3-2 a2-4) (let* ((t0-3 (+ a2-4 (/ (- a3-2 a2-4) 2))) (t1-2 (-> a1-4 data t0-3)) - (t2-0 (-> t1-2 perm aid)) - ) + (t2-0 (-> t1-2 perm aid))) (cond - ((= t2-0 arg0) - (return (-> t1-2 entity)) - ) - ((< (the-as uint t2-0) arg0) - (set! a2-4 (+ t0-3 1)) - ) - (else - (set! a3-2 (+ t0-3 -1)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (the-as entity #f) - ) + ((= t2-0 arg0) (return (-> t1-2 entity))) + ((< (the-as uint t2-0) arg0) (set! a2-4 (+ t0-3 1))) + (else (set! a3-2 (+ t0-3 -1)))))))))))) + (the-as entity #f)) (defun entity-by-meters ((arg0 float) (arg1 float) (arg2 float)) "Get an entity by position. The coordinate are rounded to the nearest 1/4096th of a meter." @@ -236,32 +155,16 @@ (when (nonzero? a3-5) (dotimes (t0-4 (-> a3-5 length)) (let* ((t1-3 (-> a3-5 data t0-4 actor)) - (t2-1 (-> t1-3 extra trans)) - ) + (t2-1 (-> t1-3 extra trans))) (if (and (= (the float (the int (-> t2-1 x))) arg0) (= (the float (the int (-> t2-1 y))) arg1) - (= (the float (the int (-> t2-1 z))) arg2) - ) - (return t1-3) - ) - ) - ) - ) - ) - ) - ) - ) - (the-as entity-actor #f) - ) + (= (the float (the int (-> t2-1 z))) arg2)) + (return t1-3))))))))) + (the-as entity-actor #f)) (defun process-by-ename ((arg0 string)) "Get the process for the entity with the given name. If there is no entity or process, #f." - (let ((v1-0 (entity-by-name arg0))) - (if v1-0 - (-> v1-0 extra process) - ) - ) - ) + (let ((v1-0 (entity-by-name arg0))) (if v1-0 (-> v1-0 extra process)))) (defun entity-process-count ((arg0 symbol)) "Count the number of entities with a process. If arg0 is 'vis, will count visible entities." @@ -273,26 +176,9 @@ (dotimes (s1-0 (-> s2-0 length)) (let ((v1-9 (-> s2-0 data s1-0 entity))) (case arg0 - (('vis) - (if (is-object-visible? s3-0 (-> v1-9 extra vis-id)) - (+! gp-0 1) - ) - ) - (else - (if (-> v1-9 extra process) - (+! gp-0 1) - ) - ) - ) - ) - ) - ) - ) - ) - ) - gp-0 - ) - ) + (('vis) (if (is-object-visible? s3-0 (-> v1-9 extra vis-id)) (+! gp-0 1))) + (else (if (-> v1-9 extra process) (+! gp-0 1)))))))))) + gp-0)) (defun entity-count () "Count the number of entities. Uses the entity-links" @@ -303,44 +189,26 @@ (let ((a0-6 (-> a0-3 bsp level entity))) (dotimes (a1-3 (-> a0-6 length)) (-> a0-6 data a1-3 entity) ;; value is unused. - (+! v0-0 1) - ) - ) - ) - ) - ) - v0-0 - ) - ) + (+! v0-0 1)))))) + v0-0)) (defun entity-remap-names ((arg0 pair)) "Rename entities by location. Changes their res." (let ((s5-0 (car arg0))) (while (not (null? arg0)) ;; look up by the given position. - (let ((a0-2 (entity-by-meters - (the float (/ (the-as int (car (cdr s5-0))) 8)) - (the float (/ (the-as int (car (cdr (cdr s5-0)))) 8)) - (the float (/ (the-as int (car (cdr (cdr (cdr s5-0))))) 8)) - ) - ) - ) + (let ((a0-2 (entity-by-meters (the float (/ (the-as int (car (cdr s5-0))) 8)) + (the float (/ (the-as int (car (cdr (cdr s5-0)))) 8)) + (the float (/ (the-as int (car (cdr (cdr (cdr s5-0))))) 8))))) (if a0-2 - ;; if we found an entity, modify its res. - (add-data! - a0-2 - (new 'static 'res-tag :name 'name :key-frame -1000000000.0 :elt-count #x1 :elt-type string) - (the-as pointer (car s5-0)) - ) - ) - ) + ;; if we found an entity, modify its res. + (add-data! a0-2 + (new 'static 'res-tag :name 'name :key-frame -1000000000.0 :elt-count #x1 :elt-type string) + (the-as pointer (car s5-0))))) (set! arg0 (cdr arg0)) - (set! s5-0 (car arg0)) - ) - ) + (set! s5-0 (car arg0)))) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;; ;; entity inspection @@ -350,8 +218,7 @@ (call-parent-method this) (format #t "~Ttrans: ~`vector`P~%" (-> this trans)) (format #t "~Taid: ~A~%" (-> this aid)) - this - ) + this) (defmethod inspect ((this entity-actor)) (call-parent-method this) @@ -360,8 +227,7 @@ (format #t "~Ttask: ~d~%" (-> this task)) (format #t "~Tvis-id: ~d~%" (-> this vis-id-signed)) (format #t "~Tquat: ~`vector`P~%" (-> this quat)) - this - ) + this) (defun-debug process-status-bits ((arg0 process) (arg1 symbol)) "Print to arg1 three characters representing the status of a process @@ -369,68 +235,48 @@ The second is a d, if we draw (only if we are process-drawable) The third is the LOD of the drawing. (also only for process-drawable)" (let* ((s5-0 arg0) - (proc-draw (the-as process-drawable (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - (the-as process-drawable s5-0) - ) - ) - ) - ) - (if (and (the-as process proc-draw) (zero? (-> proc-draw draw))) - (set! proc-draw (the-as process-drawable #f)) - ) - + (proc-draw (the-as process-drawable + (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) (the-as process-drawable s5-0))))) + (if (and (the-as process proc-draw) (zero? (-> proc-draw draw))) (set! proc-draw (the-as process-drawable #f))) ;; first char is r or ' '. r for run. ;; second char is d or ' '. I think d is draw. ;; third char is a number 0-4 or a ' '. This is the lod. - (format arg1 "~C~C~C" - (if (and arg0 (zero? (logand (-> *kernel-context* prevent-from-run) (-> arg0 mask))) - (run-logic? arg0) - ) - #\r - #\\s ;; space - ) - (if (and proc-draw (logtest? (-> proc-draw draw status) 8)) - #\d - #\\s - ) + (format arg1 + "~C~C~C" + (if (and arg0 (zero? (logand (-> *kernel-context* prevent-from-run) (-> arg0 mask))) (run-logic? arg0)) + #\r + #\\s ;; space + ) + (if (and proc-draw (logtest? (-> proc-draw draw status) 8)) #\d #\\s) (cond ((and proc-draw (logtest? (-> proc-draw draw status) 8)) (case (-> proc-draw draw cur-lod) - ((0) #\0) - ((1) #\1) - ((2) #\2) - ((3) #\3) - ((4) #\4) - ) - ) - (else - #\\s - ) - ) - ) - ) + ((0) #\0) + ((1) #\1) + ((2) #\2) + ((3) #\3) + ((4) #\4))) + (else #\\s)))) 0 - (none) - ) + (none)) (defmethod print ((this process)) "Fancier print for process that can also print status of process drawables." - (format #t "#<~A ~S ~A :state ~S :flags " (-> this type) (-> this name) (-> this status) (if (-> this state) - (-> this state name) - ) - ) + (format #t + "#<~A ~S ~A :state ~S :flags " + (-> this type) + (-> this name) + (-> this status) + (if (-> this state) (-> this state name))) (process-status-bits this #t) - (format #t " :stack ~D/~D :heap ~D/~D @ #x~X>" + (format #t + " :stack ~D/~D :heap ~D/~D @ #x~X>" (&- (-> this top-thread stack-top) (the-as uint (-> this top-thread sp))) (-> this main-thread stack-size) (- (-> this allocated-length) (&- (-> this heap-top) (the-as uint (-> this heap-cur)))) (-> this allocated-length) - this - ) - this - ) - - + this) + this) (defmethod debug-print ((this entity-actor) (mode symbol) (expected-type type)) "Debug print info about an entity-actor. This is designed to generate rows for the table @@ -439,67 +285,33 @@ (when (or (not expected-type) (and s4-0 (valid? s4-0 type #f #f 0) (type-type? s4-0 expected-type))) (format #t "~5D #x~8X ~-21S" (-> this extra vis-id) this (res-lump-struct this 'name structure)) (let ((t0-3 (-> this extra level nickname))) - (set! t0-3 (cond - (t0-3 - t0-3 - ) - (else - (-> this extra level name) - ) - ) - ) - (format #t "~8D ~3D ~-4S #x~4X" (-> this extra perm aid) (-> this extra perm task) t0-3 (-> this extra perm status)) - ) - + (set! t0-3 + (cond + (t0-3 t0-3) + (else (-> this extra level name)))) + (format #t "~8D ~3D ~-4S #x~4X" (-> this extra perm aid) (-> this extra perm task) t0-3 (-> this extra perm status))) ;; location (if (= mode 'entity-meters) - (format #t " :trans ~14m ~14m ~14m " (-> this extra trans x) (-> this extra trans y) (-> this extra trans z)) - (format #t " :trans ~14f ~14f ~14f " (-> this extra trans x) (-> this extra trans y) (-> this extra trans z)) - ) - + (format #t " :trans ~14m ~14m ~14m " (-> this extra trans x) (-> this extra trans y) (-> this extra trans z)) + (format #t " :trans ~14f ~14f ~14f " (-> this extra trans x) (-> this extra trans y) (-> this extra trans z))) ;; if we have an associated process, print info. (let* ((s3-2 (-> this extra process)) - (s4-2 (if (and (nonzero? s3-2) (type-type? (-> s3-2 type) process-drawable)) - s3-2 - ) - ) - ) - (format #t ":pr #x~8X ~-12S ~-21S ~-5S/~-5S " - (if (-> this extra process) - (-> this extra process) - 0 - ) - (if (-> this extra process) - (-> this extra process name) - "" - ) - (if (and (-> this extra process) (-> this extra process state)) - (-> this extra process state name) - "" - ) - (if (-> this extra process) - (* (- (-> this extra process allocated-length) - (&- (-> this extra process heap-top) (the-as uint (-> this extra process heap-cur))) - ) - 8 - ) - "" - ) - (if (-> this extra process) - (* (-> this extra process allocated-length) 8) - "" - ) - ) - (process-status-bits s4-2 #t) - ) + (s4-2 (if (and (nonzero? s3-2) (type-type? (-> s3-2 type) process-drawable)) s3-2))) + (format #t + ":pr #x~8X ~-12S ~-21S ~-5S/~-5S " + (if (-> this extra process) (-> this extra process) 0) + (if (-> this extra process) (-> this extra process name) "") + (if (and (-> this extra process) (-> this extra process state)) (-> this extra process state name) "") + (if (-> this extra process) + (* (- (-> this extra process allocated-length) + (&- (-> this extra process heap-top) (the-as uint (-> this extra process heap-cur)))) + 8) + "") + (if (-> this extra process) (* (-> this extra process allocated-length) 8) "")) + (process-status-bits s4-2 #t)) (format #t "~%") - (if (= mode 'entity-perm) - (format #t " ~`entity-perm`P~%" (-> this extra perm)) - ) - ) - ) - (none) - ) + (if (= mode 'entity-perm) (format #t " ~`entity-perm`P~%" (-> this extra perm))))) + (none)) (defmethod debug-print-entities ((this level-group) (mode symbol) (expected-type type)) "Print a table of entities. If expected-type is #f, print all. Otherwise, print only entities of the given type. @@ -507,9 +319,12 @@ 'art-group: print art groups instead. 'entity-meters: print entity location in meters. 'entity-perm: also print entity-perm values." - ;; no way this fit on their screen back in ~2000. - (format #t " id address name aid tsk lev status x y z address name state heap flags~%" 0 0 0) + (format #t + " id address name aid tsk lev status x y z address name state heap flags~%" + 0 + 0 + 0) (dotimes (s3-0 (-> this length)) (let ((s2-0 (-> this level s3-0))) (when (= (-> s2-0 status) 'active) @@ -517,25 +332,13 @@ (('art-group) (format #t "level ~A~%" (-> s2-0 name)) (dotimes (s1-0 (-> s2-0 art-group art-group-array length)) - (format #t "~T~2D ~S~%" s1-0 (-> s2-0 art-group art-group-array s1-0 name)) - ) - ) + (format #t "~T~2D ~S~%" s1-0 (-> s2-0 art-group art-group-array s1-0 name)))) (else - (let ((s2-1 (-> s2-0 bsp level entity))) - (dotimes (s1-1 (-> s2-1 length)) - (debug-print (the-as entity-actor (-> s2-1 data s1-1 entity)) mode expected-type) - ) - ) - ) - ) - ) - ) - ) + (let ((s2-1 (-> s2-0 bsp level entity))) + (dotimes (s1-1 (-> s2-1 length)) + (debug-print (the-as entity-actor (-> s2-1 data s1-1 entity)) mode expected-type)))))))) 0 - (none) - ) - - + (none)) ;;;;;;;;;;;;;;;;;; ;; entity setup @@ -543,11 +346,9 @@ (defmethod add-to-level! ((this entity) (lev-group level-group) (lev level) (aid actor-id)) "Add us to a level." - ;; grab the first free link (let ((level-link (-> lev entity data (-> lev entity length)))) (+! (-> lev entity length) 1) - ;; attach the entity to the link (set! (-> level-link process) #f) (set! (-> level-link entity) this) @@ -556,63 +357,39 @@ ((-> lev-group entity-link) ;; add to linked list of existing (let* ((other-prev (-> lev-group entity-link)) - (other-front (-> other-prev next-link)) - ) + (other-front (-> other-prev next-link))) (set! (-> other-prev next-link) level-link) (set! (-> level-link prev-link) other-prev) (set! (-> level-link next-link) other-front) - (set! (-> other-front prev-link) level-link) - ) - ) + (set! (-> other-front prev-link) level-link))) (else - ;; we're the first in the level. - (set! (-> level-link prev-link) level-link) - (set! (-> level-link next-link) level-link) - ) - ) - + ;; we're the first in the level. + (set! (-> level-link prev-link) level-link) + (set! (-> level-link next-link) level-link))) ;; remember the start of the list (set! (-> lev-group entity-link) level-link) ;; update the trans. - (set! (-> level-link trans quad) (-> this trans quad)) - ) - + (set! (-> level-link trans quad) (-> this trans quad))) ;; set us up (set! (-> this extra perm aid) aid) (set! (-> this extra level) lev) (cond ((= (-> this type) entity-actor) (set! (-> (the-as entity-actor this) extra perm task) (-> (the-as entity-actor this) task)) - (set! (-> (the-as entity-actor this) extra vis-id) (-> (the-as entity-actor this) vis-id-signed)) - ) - (else - (set! (-> this extra perm task) (game-task none)) - (set! (-> this extra vis-id) 0) - 0 - ) - ) - (none) - ) + (set! (-> (the-as entity-actor this) extra vis-id) (-> (the-as entity-actor this) vis-id-signed))) + (else (set! (-> this extra perm task) (game-task none)) (set! (-> this extra vis-id) 0) 0)) + (none)) (defmethod remove-from-level! ((this entity) (arg0 level-group)) "Remove us from the level." (let ((v1-0 (-> this extra))) (cond - ((= (-> v1-0 next-link) v1-0) - (set! (-> arg0 entity-link) #f) - ) + ((= (-> v1-0 next-link) v1-0) (set! (-> arg0 entity-link) #f)) (else - (set! (-> v1-0 next-link prev-link) (-> v1-0 prev-link)) - (set! (-> v1-0 prev-link next-link) (-> v1-0 next-link)) - (if (= (-> arg0 entity-link) v1-0) - (set! (-> arg0 entity-link) (-> v1-0 prev-link)) - ) - ) - ) - ) - this - ) - + (set! (-> v1-0 next-link prev-link) (-> v1-0 prev-link)) + (set! (-> v1-0 prev-link next-link) (-> v1-0 next-link)) + (if (= (-> arg0 entity-link) v1-0) (set! (-> arg0 entity-link) (-> v1-0 prev-link)))))) + this) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; visibility update @@ -627,28 +404,18 @@ (when (and proc (nonzero? (-> proc draw))) ;; add the draw origin offset. (let ((world-bounds-origin (vector+! (new 'stack-no-clear 'vector) (-> proc draw origin) (-> proc draw bounds))) - (radius (-> proc draw bounds w)) - ) + (radius (-> proc draw bounds w))) (set! (-> min-pt x) (fmin (-> min-pt x) (- (-> world-bounds-origin x) radius))) (set! (-> min-pt y) (fmin (-> min-pt y) (- (-> world-bounds-origin y) radius))) (set! (-> min-pt z) (fmin (-> min-pt z) (- (-> world-bounds-origin z) radius))) (set! (-> max-pt x) (fmax (-> max-pt x) (+ (-> world-bounds-origin x) radius))) (set! (-> max-pt y) (fmax (-> max-pt y) (+ (-> world-bounds-origin y) radius))) - (set! (-> max-pt z) (fmax (-> max-pt z) (+ (-> world-bounds-origin z) radius))) - ) - ) + (set! (-> max-pt z) (fmax (-> max-pt z) (+ (-> world-bounds-origin z) radius))))) 0 - (none) - ) + (none)) (defmethod update-vis-volumes ((this level-group)) - (local-vars - (v1-10 symbol) - (sv-16 process) - (sv-32 (function process-drawable vector vector none)) - (sv-48 process-tree) - ) - + (local-vars (v1-10 symbol) (sv-16 process) (sv-32 (function process-drawable vector vector none)) (sv-48 process-tree)) (format 0 "call to update-vis-volumes, which may have a compiler bug.~%") (dotimes (s5-0 (-> this length)) (let ((v1-3 (-> this level s5-0))) @@ -658,52 +425,32 @@ (let* ((s0-0 (-> s4-0 data s3-0 entity)) (v0-0 (res-lump-data s0-0 'visvol (inline-array vector))) (s2-0 (-> v0-0 0)) - (s1-0 (-> v0-0 1)) - ) + (s1-0 (-> v0-0 1))) (let ((s0-1 (-> s0-0 extra process))) ;; I am pretty sure there is a GOAL compiler bug here. ;; the output makes zero sense, but I don't think it matters: ;; this function doesn't seem like it should ever be run outside of development ;; and the compiler bug has no effect? - (set! - v1-10 - (when (and (nonzero? s0-1) (type-type? (-> s0-1 type) process-drawable)) - ;; i think it spills the wrong variable here - (set! sv-16 (the-as process v1-10)) - ;; then immediate spills the right one. - (set! sv-16 s0-1) - v1-10 - ) - ) - ) + (set! v1-10 + (when (and (nonzero? s0-1) (type-type? (-> s0-1 type) process-drawable)) + ;; i think it spills the wrong variable here + (set! sv-16 (the-as process v1-10)) + ;; then immediate spills the right one. + (set! sv-16 s0-1) + v1-10))) (when sv-16 (update-actor-vis-box (the-as process-drawable sv-16) s2-0 s1-0) (let ((s0-2 (-> sv-16 child))) (while s0-2 (set! sv-32 update-actor-vis-box) (set! sv-48 (-> s0-2 0)) - (let ((a0-7 (if (and (nonzero? sv-48) (type-type? (-> sv-48 type) process-drawable)) - sv-48 - ) - ) + (let ((a0-7 (if (and (nonzero? sv-48) (type-type? (-> sv-48 type) process-drawable)) sv-48)) (a1-5 s2-0) - (a2-2 s1-0) - ) - (sv-32 (the-as process-drawable a0-7) a1-5 a2-2) - ) - (set! s0-2 (-> s0-2 0 brother)) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (a2-2 s1-0)) + (sv-32 (the-as process-drawable a0-7) a1-5 a2-2)) + (set! s0-2 (-> s0-2 0 brother))))))))))) 0 - (none) - ) + (none)) (defmethod update-vis-volumes-from-nav-mesh ((this level-group)) "Update the visvol to fit the entire nav-mesh. Does this for all actors in bsps. @@ -720,59 +467,39 @@ ;; look up the bounding box. (let* ((v0-0 (res-lump-data sv-32 'visvol (inline-array vector))) (s1-0 (-> v0-0 0)) - (s2-0 (-> v0-0 1)) - ) + (s2-0 (-> v0-0 1))) (let ((s0-0 (-> sv-32 extra trans))) - ;; sometimes the nav-mesh may be in a different actor, I guess. ;; so try to look that up. (set! sv-16 sv-32) - (let* ((v0-1 (entity-actor-lookup sv-32 'nav-mesh-actor 0))) - (when v0-1 - (set! sv-16 v0-1) - ) - ) - + (let* ((v0-1 (entity-actor-lookup sv-32 'nav-mesh-actor 0))) (when v0-1 (set! sv-16 v0-1))) (cond ((and (type-type? (-> sv-16 type) entity-actor) (nonzero? (-> (the-as entity-actor sv-16) nav-mesh))) ;; we got a nav-mesh! compute the bounding box - (compute-bounding-box (-> (the-as entity-actor sv-16) nav-mesh) s1-0 s2-0) - ) + (compute-bounding-box (-> (the-as entity-actor sv-16) nav-mesh) s1-0 s2-0)) (else - ;; no nav-mesh found, just use the default position - (set! (-> s1-0 quad) (-> s0-0 quad)) - (set! (-> s2-0 quad) (-> s0-0 quad)) - ) - ) - ) - + ;; no nav-mesh found, just use the default position + (set! (-> s1-0 quad) (-> s0-0 quad)) + (set! (-> s2-0 quad) (-> s0-0 quad))))) ;; add some padding to make a 6x6 meter box. (let ((f1-0 -12288.0) - (f0-0 12288.0) - ) + (f0-0 12288.0)) (+! (-> s1-0 x) f1-0) (+! (-> s1-0 y) f1-0) (+! (-> s1-0 z) f1-0) (+! (-> s2-0 x) f0-0) (+! (-> s2-0 y) f0-0) - (+! (-> s2-0 z) f0-0) - ) - ) - ) - ) - ) - ) - ) + (+! (-> s2-0 z) f0-0)))))))) 0 - (none) - ) + (none)) (define-extern money type) + (define-extern crate type) -(define-extern springbox type) -(define-extern fuel-cell type) +(define-extern springbox type) +(define-extern fuel-cell type) (defmethod print-volume-sizes ((this level-group)) "Loop through all entities and print their visibility. @@ -787,63 +514,41 @@ ;; lookup volume and dist. (let ((s1-0 (res-lump-data sv-80 'visvol (inline-array vector))) (f30-0 (res-lump-float sv-80 'vis-dist :default 409600.0)) - (s2-0 (-> sv-80 extra trans)) - ) + (s2-0 (-> sv-80 extra trans))) (if (type-type? (-> sv-80 type) entity-actor) - (set! sv-16 (-> (the-as entity-actor sv-80) etype)) - (set! sv-16 (the-as type #f)) - ) + (set! sv-16 (-> (the-as entity-actor sv-80) etype)) + (set! sv-16 (the-as type #f))) (let ((s0-0 (-> s1-0 0)) - (s1-1 (-> s1-0 1)) - ) - + (s1-1 (-> s1-0 1))) ;; This technically will work on type objects because it just checks for value equality. ;; the code here is super weird. I have no idea what was going on, or why there are two or's. - (when (not (or (name= sv-16 money) - (or (name= sv-16 crate) (name= sv-16 fuel-cell) (name= sv-16 springbox)) - ) - ) + (when (not (or (name= sv-16 money) (or (name= sv-16 crate) (name= sv-16 fuel-cell) (name= sv-16 springbox)))) (format #t "actor-vis ~S ~6,,1M " (res-lump-struct sv-80 'name basic) f30-0) - (format #t "~6,,1M ~6,,1M ~6,,1M ~6,,1M ~6,,1M ~6,,1M~%" + (format #t + "~6,,1M ~6,,1M ~6,,1M ~6,,1M ~6,,1M ~6,,1M~%" (- (-> s0-0 x) (-> s2-0 x)) (- (-> s0-0 y) (-> s2-0 y)) (- (-> s0-0 z) (-> s2-0 z)) (- (-> s1-1 x) (-> s2-0 x)) (- (-> s1-1 y) (-> s2-0 y)) - (- (-> s1-1 z) (-> s2-0 z)) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (- (-> s1-1 z) (-> s2-0 z))))))))))) 0 - (none) - ) + (none)) (defun expand-vis-box-with-point ((arg0 entity) (arg1 vector)) "Expand the visibility box of the given entity to include the given point." (let ((v1-1 (res-lump-data arg0 'visvol (inline-array vector)))) (when v1-1 (let ((a0-2 (-> v1-1 0)) - (v1-2 (-> v1-1 1)) - ) + (v1-2 (-> v1-1 1))) (set! (-> a0-2 x) (fmin (-> a0-2 x) (-> arg1 x))) (set! (-> a0-2 y) (fmin (-> a0-2 y) (-> arg1 y))) (set! (-> a0-2 z) (fmin (-> a0-2 z) (-> arg1 z))) (set! (-> v1-2 x) (fmax (-> v1-2 x) (-> arg1 x))) (set! (-> v1-2 y) (fmax (-> v1-2 y) (-> arg1 y))) - (set! (-> v1-2 z) (fmax (-> v1-2 z) (-> arg1 z))) - ) - ) - ) + (set! (-> v1-2 z) (fmax (-> v1-2 z) (-> arg1 z)))))) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; The Debug Draw Method @@ -867,8 +572,7 @@ (sv-256 symbol) (sv-272 int) (sv-288 pointer) - (sv-304 pointer) - ) + (sv-304 pointer)) (when (and arg0 (not (or (= *master-mode* 'menu) (= *master-mode* 'progress)))) (dotimes (s4-0 (-> this length)) (let ((v1-8 (-> this level s4-0))) @@ -876,35 +580,25 @@ (let ((s3-0 (-> v1-8 bsp level entity))) (dotimes (s2-0 (-> s3-0 length)) (let* ((s0-0 (-> s3-0 data s2-0 entity)) - (s1-0 (-> s0-0 extra trans)) - ) + (s1-0 (-> s0-0 extra trans))) (cond ((and (= arg0 'process) (-> s0-0 extra process) (type-type? (-> s0-0 extra process type) process-drawable)) (let ((s1-1 (the-as process-drawable (-> s0-0 extra process)))) - (add-debug-x - #t - (bucket-id debug-no-zbuf) - (-> s1-1 root trans) - (new 'static 'rgba :r #x80 :g #xff :b #x80 :a #x80) - ) + (add-debug-x #t (bucket-id debug-no-zbuf) (-> s1-1 root trans) (new 'static 'rgba :r #x80 :g #xff :b #x80 :a #x80)) (set! sv-48 add-debug-text-3d) (set! sv-64 #t) (set! sv-80 68) (let ((a2-2 (res-lump-struct s0-0 'name structure)) (a3-2 (-> s1-1 root trans)) (t0-1 1) - (t1-1 (new 'static 'vector2h :y 8)) - ) - (sv-48 sv-64 (the-as bucket-id sv-80) (the-as string a2-2) a3-2 (the-as font-color t0-1) t1-1) - ) - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (symbol->string (-> s1-1 state name)) - (-> s1-1 root trans) - (font-color white) - (new 'static 'vector2h :y 16) - ) + (t1-1 (new 'static 'vector2h :y 8))) + (sv-48 sv-64 (the-as bucket-id sv-80) (the-as string a2-2) a3-2 (the-as font-color t0-1) t1-1)) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (symbol->string (-> s1-1 state name)) + (-> s1-1 root trans) + (font-color white) + (new 'static 'vector2h :y 16)) (let ((s0-1 (res-lump-data (-> s1-1 entity) 'eco-info (pointer int32) :time 0.0))) (when s0-1 (set! sv-96 add-debug-text-3d) @@ -914,61 +608,33 @@ (set! sv-160 (clear *temp-string*)) (set! sv-176 "~S ~D~%") (let ((a2-7 (pickup-type->string (the-as pickup-type (-> s0-1 0)))) - (a3-5 (-> s0-1 1)) - ) - (sv-144 sv-160 sv-176 a2-7 a3-5) - ) + (a3-5 (-> s0-1 1))) + (sv-144 sv-160 sv-176 a2-7 a3-5)) (let ((a2-8 *temp-string*) (a3-6 (-> s1-1 root trans)) (t0-4 1) - (t1-4 (new 'static 'vector2h :y 24)) - ) - (sv-96 sv-112 (the-as bucket-id sv-128) a2-8 a3-6 (the-as font-color t0-4) t1-4) - ) - ) - ) + (t1-4 (new 'static 'vector2h :y 24))) + (sv-96 sv-112 (the-as bucket-id sv-128) a2-8 a3-6 (the-as font-color t0-4) t1-4)))) (let ((v0-10 (res-lump-struct (-> s1-1 entity) 'art-name symbol))) (if (and (the-as structure v0-10) (= (-> v0-10 type) symbol)) - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (symbol->string v0-10) - (-> s1-1 root trans) - (font-color white) - (new 'static 'vector2h :y 24) - ) - ) - ) - ) - ) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (symbol->string v0-10) + (-> s1-1 root trans) + (font-color white) + (new 'static 'vector2h :y 24)))))) ((or (= arg0 'full) (-> s0-0 extra process)) - (add-debug-x #t (bucket-id debug-no-zbuf) s1-0 (if (-> s0-0 extra process) - (new 'static 'rgba :r #x80 :g #xff :b #x80 :a #x80) - (new 'static 'rgba :r #xff :a #x80) - ) - ) + (add-debug-x #t + (bucket-id debug-no-zbuf) + s1-0 + (if (-> s0-0 extra process) (new 'static 'rgba :r #x80 :g #xff :b #x80 :a #x80) (new 'static 'rgba :r #xff :a #x80))) (set! sv-192 add-debug-text-3d) (set! sv-208 #t) (set! sv-224 68) (let ((a2-13 (res-lump-struct s0-0 'name structure)) - (t0-8 (if (logtest? (-> s0-0 extra perm status) (entity-perm-status bit-0 bit-1)) - 1 - 5 - ) - ) - (t1-8 (new 'static 'vector2h :y 8)) - ) - (sv-192 sv-208 (the-as bucket-id sv-224) (the-as string a2-13) s1-0 (the-as font-color t0-8) t1-8) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (t0-8 (if (logtest? (-> s0-0 extra perm status) (entity-perm-status bit-0 bit-1)) 1 5)) + (t1-8 (new 'static 'vector2h :y 8))) + (sv-192 sv-208 (the-as bucket-id sv-224) (the-as string a2-13) s1-0 (the-as font-color t0-8) t1-8))))))))))) (when (and *display-actor-vis* (not (or *display-actor-anim* *display-process-anim*))) (let ((s5-1 *display-actor-vis*)) (dotimes (s4-1 (-> this length)) @@ -978,173 +644,95 @@ (dotimes (s1-2 (-> s2-1 length)) (let ((s0-2 (-> s2-1 data s1-2 entity))) (let ((v0-15 (res-lump-data s0-2 'visvol pointer)) - (a1-16 (-> s0-2 extra vis-id)) - ) + (a1-16 (-> s0-2 extra vis-id))) (when (and v0-15 (or (= s5-1 #t) (= s5-1 'box))) (set! sv-240 add-debug-box) (set! sv-256 #t) (set! sv-272 68) (set! sv-288 (&+ v0-15 0)) (set! sv-304 (&+ v0-15 16)) - (let ((t0-10 (if (is-object-visible? s3-1 a1-16) - (the-as uint #x80808000) - (the-as uint #x80800080) - ) - ) - ) - (sv-240 sv-256 (the-as bucket-id sv-272) (the-as vector sv-288) (the-as vector sv-304) (the-as rgba t0-10)) - ) - ) - ) + (let ((t0-10 (if (is-object-visible? s3-1 a1-16) (the-as uint #x80808000) (the-as uint #x80800080)))) + (sv-240 sv-256 (the-as bucket-id sv-272) (the-as vector sv-288) (the-as vector sv-304) (the-as rgba t0-10))))) (when (or (= s5-1 #t) (= s5-1 'sphere)) (let ((s0-3 (-> s0-2 extra process))) (when s0-3 (when (and (type-type? (-> s0-3 type) process-drawable) (nonzero? (-> (the-as process-drawable s0-3) draw))) - (add-debug-x - #t - (bucket-id debug-no-zbuf) - (-> (the-as process-drawable s0-3) root trans) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug) - (vector+! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable s0-3) draw origin) - (-> (the-as process-drawable s0-3) draw bounds) - ) - (-> (the-as process-drawable s0-3) draw bounds w) - (new 'static 'rgba :r #x80 :a #x80) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (if *generate-actor-vis* - (update-vis-volumes this) - ) + (add-debug-x #t + (bucket-id debug-no-zbuf) + (-> (the-as process-drawable s0-3) root trans) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) + (add-debug-sphere #t + (bucket-id debug) + (vector+! (new 'stack-no-clear 'vector) + (-> (the-as process-drawable s0-3) draw origin) + (-> (the-as process-drawable s0-3) draw bounds)) + (-> (the-as process-drawable s0-3) draw bounds w) + (new 'static 'rgba :r #x80 :a #x80)))))))))))))) + (if *generate-actor-vis* (update-vis-volumes this)) (when (or *display-actor-anim* *display-process-anim*) (let ((s5-2 (ppointer->process *display-process-anim*))) - (if (not s5-2) - (set! s5-2 (process-by-name *display-actor-anim* *active-pool*)) - ) + (if (not s5-2) (set! s5-2 (process-by-name *display-actor-anim* *active-pool*))) (when (and s5-2 (type-type? (-> s5-2 type) process-drawable)) (let ((s3-2 (-> (the-as process-drawable s5-2) entity)) - (s4-2 (-> (the-as process-drawable s5-2) root trans)) - ) + (s4-2 (-> (the-as process-drawable s5-2) root trans))) (when s3-2 - (add-debug-x #t (bucket-id debug-no-zbuf) s4-2 (if (-> s3-2 extra process) - (new 'static 'rgba :r #x80 :g #xff :b #x80 :a #x80) - (new 'static 'rgba :r #xff :a #x80) - ) - ) - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (res-lump-struct s3-2 'name string) - s4-2 - (if (logtest? (-> s3-2 extra perm status) (entity-perm-status bit-0 bit-1)) - (font-color white) - (font-color white) - ) - (new 'static 'vector2h :y 8) - ) - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (symbol->string (-> (the-as process-drawable s5-2) state name)) - s4-2 - (font-color white) - (new 'static 'vector2h :y 16) - ) - ) - ) + (add-debug-x #t + (bucket-id debug-no-zbuf) + s4-2 + (if (-> s3-2 extra process) (new 'static 'rgba :r #x80 :g #xff :b #x80 :a #x80) (new 'static 'rgba :r #xff :a #x80))) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (res-lump-struct s3-2 'name string) + s4-2 + (if (logtest? (-> s3-2 extra perm status) (entity-perm-status bit-0 bit-1)) (font-color white) (font-color white)) + (new 'static 'vector2h :y 8)) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (symbol->string (-> (the-as process-drawable s5-2) state name)) + s4-2 + (font-color white) + (new 'static 'vector2h :y 16)))) (if (nonzero? (-> (the-as process-drawable s5-2) skel)) - (debug-print-channels (-> (the-as process-drawable s5-2) skel) (the-as symbol *stdcon*)) - ) - (if (nonzero? (-> (the-as process-drawable s5-2) nav)) - (debug-draw (-> (the-as process-drawable s5-2) nav)) - ) - (if (nonzero? (-> (the-as process-drawable s5-2) path)) - (debug-draw (-> (the-as process-drawable s5-2) path)) - ) - (if (nonzero? (-> (the-as process-drawable s5-2) vol)) - (init! (-> (the-as process-drawable s5-2) vol)) - ) - ) + (debug-print-channels (-> (the-as process-drawable s5-2) skel) (the-as symbol *stdcon*))) + (if (nonzero? (-> (the-as process-drawable s5-2) nav)) (debug-draw (-> (the-as process-drawable s5-2) nav))) + (if (nonzero? (-> (the-as process-drawable s5-2) path)) (debug-draw (-> (the-as process-drawable s5-2) path))) + (if (nonzero? (-> (the-as process-drawable s5-2) vol)) (init! (-> (the-as process-drawable s5-2) vol)))) (if (and (the-as process-drawable s5-2) (type-type? (-> (the-as process-drawable s5-2) type) process-drawable) (nonzero? (-> (the-as process-drawable s5-2) draw)) - *display-actor-vis* - ) - (add-debug-sphere - #t - (bucket-id debug) - (vector+! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable s5-2) draw origin) - (-> (the-as process-drawable s5-2) draw bounds) - ) - (-> (the-as process-drawable s5-2) draw bounds w) - (new 'static 'rgba :r #x80 :a #x80) - ) - ) - ) + *display-actor-vis*) + (add-debug-sphere #t + (bucket-id debug) + (vector+! (new 'stack-no-clear 'vector) + (-> (the-as process-drawable s5-2) draw origin) + (-> (the-as process-drawable s5-2) draw bounds)) + (-> (the-as process-drawable s5-2) draw bounds w) + (new 'static 'rgba :r #x80 :a #x80)))) (when (and *display-actor-vis* *display-actor-anim*) (let ((s5-3 (entity-by-name *display-actor-anim*))) (when s5-3 (let ((v0-35 (res-lump-data s5-3 'visvol pointer)) - (a1-31 (-> s5-3 extra vis-id)) - ) + (a1-31 (-> s5-3 extra vis-id))) (if v0-35 - (add-debug-box - #t - (bucket-id debug-no-zbuf) - (the-as vector (&+ v0-35 0)) - (the-as vector (&+ v0-35 16)) - (if (is-object-visible? (-> s5-3 extra level) a1-31) - (new 'static 'rgba :g #x80 :b #x80 :a #x80) - (new 'static 'rgba :r #x80 :b #x80 :a #x80) - ) - ) - ) - ) - ) - ) - ) - ) + (add-debug-box #t + (bucket-id debug-no-zbuf) + (the-as vector (&+ v0-35 0)) + (the-as vector (&+ v0-35 16)) + (if (is-object-visible? (-> s5-3 extra level) a1-31) + (new 'static 'rgba :g #x80 :b #x80 :a #x80) + (new 'static 'rgba :r #x80 :b #x80 :a #x80))))))))) (if (and (or *display-nav-marks* *display-path-marks* *display-vol-marks*) - (not (or *display-actor-anim* *display-process-anim*)) - ) - (iterate-process-tree - *active-pool* - (lambda ((arg0 process-drawable)) - (when (type-type? (-> arg0 type) process-drawable) - (if (nonzero? (-> arg0 nav)) - (debug-draw (-> arg0 nav)) - ) - (if (nonzero? (-> arg0 path)) - (debug-draw (-> arg0 path)) - ) - (if (nonzero? (-> arg0 vol)) - (init! (-> arg0 vol)) - ) - ) - (none) - ) - *null-kernel-context* - ) - ) - #| This is where the "actor graph" is drawn, but the plot functions don't do anything. + (not (or *display-actor-anim* *display-process-anim*))) + (iterate-process-tree *active-pool* + (lambda ((arg0 process-drawable)) + (when (type-type? (-> arg0 type) process-drawable) + (if (nonzero? (-> arg0 nav)) (debug-draw (-> arg0 nav))) + (if (nonzero? (-> arg0 path)) (debug-draw (-> arg0 path))) + (if (nonzero? (-> arg0 vol)) (init! (-> arg0 vol)))) + (none)) + *null-kernel-context*)) + #| + This is where the "actor graph" is drawn, but the plot functions don't do anything. (when (and *display-actor-graph* (not (or (= *master-mode* 'menu) (= *master-mode* 'progress)))) (if (not (paused?)) (float-save-timeplot (if (< (the int (the float (mod (-> *display* base-frame-counter) 600))) 300) @@ -1167,23 +755,11 @@ (when (nonzero? (-> s4-4 bsp boxes)) (let ((s3-4 (-> s4-4 bsp boxes))) (countdown (s2-4 (-> s3-4 length)) - (add-debug-box - #t - (bucket-id debug) - (the-as vector (-> s3-4 data s2-4)) - (the-as vector (+ (the-as uint (-> s3-4 data 0 max)) (* s2-4 32))) - (if (zero? (-> s4-4 index)) - (new 'static 'rgba :g #x80 :b #x80 :a #x80) - (new 'static 'rgba :r #xff :g #x80 :b #x80 :a #x80) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (add-debug-box #t + (bucket-id debug) + (the-as vector (-> s3-4 data s2-4)) + (the-as vector (+ (the-as uint (-> s3-4 data 0 max)) (* s2-4 32))) + (if (zero? (-> s4-4 index)) (new 'static 'rgba :g #x80 :b #x80 :a #x80) (new 'static 'rgba :r #xff :g #x80 :b #x80 :a #x80)))))))))) (when (or *display-ambient-hint-marks* *display-ambient-sound-marks* *display-ambient-poi-marks* @@ -1192,25 +768,16 @@ *display-ambient-weather-off-marks* *display-ambient-ocean-off-marks* *display-ambient-ocean-near-off-marks* - *display-ambient-music-marks* - ) + *display-ambient-music-marks*) (dotimes (s5-5 (-> this length)) (let ((v1-214 (-> this level s5-5))) (when (= (-> v1-214 status) 'active) (let ((s4-5 (-> v1-214 bsp ambients))) (when (nonzero? s4-5) (dotimes (s3-5 (-> s4-5 length)) - (draw-debug (-> s4-5 data s3-5 ambient)) - ) - ) - ) - ) - ) - ) - ) + (draw-debug (-> s4-5 data s3-5 ambient))))))))) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Camera Birthing @@ -1218,19 +785,16 @@ (defmethod birth! ((this entity-camera)) (add-connection *camera-engine* *camera* nothing this #f #f) - this - ) + this) (defmethod kill! ((this entity-camera)) (remove-by-param1 *camera-engine* this) - this - ) + this) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Actor Birthing ;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmacro birth-log (str &rest args) "Debug print to stdout of runtime for debugging actor inits." `(format 0 ,(string-append "[BIRTH] " str) ,@args) @@ -1240,221 +804,129 @@ (defun init-entity ((proc process) (ent entity-actor)) "This function starts up an entity! The process should not be activated yet." - ;;(birth-log "(init-entity ~A)~%" ent) - ;; activate the process. It goes in the entity-pool, which is a child of the main active-pool. (activate proc *entity-pool* (res-lump-struct ent 'name basic) (the-as pointer #x70004000)) - ;; link the entity and the process (set! (-> proc entity) ent) (set! (-> ent extra process) proc) - ;;(birth-log "activated: ~A ~A, now doing init ~A~%" proc ent (method-of-object proc init-from-entity!)) - ;; run the initializer (run-now-in-process proc (method-of-object proc init-from-entity!) proc ent) - - (none) - ) - + (none)) ;; TODO (define-extern birth-viewer (function process entity-actor object)) (defmacro this-etype? (&rest types) - `(or ,@(apply (lambda (x) `(begin (define-extern ,x type) (type-type? (-> this etype) ,x))) types)) - ) + `(or ,@(apply (lambda (x) `(begin (define-extern ,x type) (type-type? (-> this etype) ,x))) types))) (defmethod birth! ((this entity-actor)) "Create a process for this entity and start it." - ;; temp - ; (when (or (not (this-etype? process)) - ; ;; disallowed types - ; ;(this-etype?) - ; (zero? (-> this etype))) - ; (when (nonzero? (-> this etype)) - ; (birth-log "rejecting etype ~A birth~%" (-> this etype)) - ; ) - ; (logior! (-> this extra perm status) (entity-perm-status bit-0)) - ; (return this) - ; ) - + ;; (when (or (not (this-etype? process)) + ;; ;disallowed types + ;; ;(this-etype?) + ;; (zero? (-> this etype))) + ;; (when (nonzero? (-> this etype)) + ;; (birth-log "rejecting etype ~A birth~%" (-> this etype)) + ;; ) + ;; (logior! (-> this extra perm status) (entity-perm-status bit-0)) + ;; (return this) + ;; ) ;;(birth-log "call to birth! on ~A~%" this) - (let* ((entity-type (-> this etype)) (info (entity-info-lookup entity-type)) - (entity-process (get-process *default-dead-pool* entity-type (if info - (-> info heap-size) - #x4000 - ) - ) - ) - ) + (entity-process (get-process *default-dead-pool* entity-type (if info (-> info heap-size) #x4000)))) (cond - ((not entity-process) - (birth-log "could not birth because there is no process.~%") - ) + ((not entity-process) (birth-log "could not birth because there is no process.~%")) ((begin (set! (-> entity-process type) entity-type) (and entity-type (valid? entity-type type #f #f 0) - (valid? (method-of-object entity-process init-from-entity!) function #f #f 0) - ) - ) - (init-entity entity-process this) - ) + (valid? (method-of-object entity-process init-from-entity!) function #f #f 0))) + (init-entity entity-process this)) (else - (when (not (birth-viewer entity-process this)) - (format 0 "ERROR: no proper process type named ~A exists in the code, could not start ~A~%" entity-type this) - (logior! (-> this extra perm status) (entity-perm-status bit-0)) - ) - ) - ) - ) - this - ) + (when (not (birth-viewer entity-process this)) + (format 0 "ERROR: no proper process type named ~A exists in the code, could not start ~A~%" entity-type this) + (logior! (-> this extra perm status) (entity-perm-status bit-0)))))) + this) (defun entity-deactivate-handler ((arg0 process) (arg1 entity-actor)) "Handle a deactivation in the entity. The entity directly stores a process so it should remove that after deactivating." (when (= arg0 (-> arg1 extra process)) (logclear! (-> arg1 extra perm status) (entity-perm-status bit-1 bit-3)) - (set! (-> arg1 extra process) #f) - ) - (none) - ) + (set! (-> arg1 extra process) #f)) + (none)) (defmethod kill! ((this entity-actor)) "Kill an actor." - (let ((a0-1 (-> this extra process))) - (if a0-1 - (deactivate a0-1) - (entity-deactivate-handler a0-1 this) - ) - ) - this - ) + (let ((a0-1 (-> this extra process))) (if a0-1 (deactivate a0-1) (entity-deactivate-handler a0-1 this))) + this) (defmethod birth ((this bsp-header)) "Birth everything in the level." ;; (local-vars (v1-71 int) (s5-0 int)) ;; (.mfc0 s5-0 Count) - ;; how many actors do we need? - (let ((actor-count (if (nonzero? (-> this actors)) - (-> this actors length) - 0 - ) - ) - ) + (let ((actor-count (if (nonzero? (-> this actors)) (-> this actors length) 0))) (cond ((not (-> this level entity)) ;; we don't have an array of entity-links. allocate one. - (set! (-> this level entity) (new 'loading-level 'entity-links-array actor-count)) - ) + (set! (-> this level entity) (new 'loading-level 'entity-links-array actor-count))) ((< (-> this level entity allocated-length) actor-count) ;; we do, but it's not big enough. Complain. - (format 0 "ERROR: Attempting to rebirth level ~A with incorrect entity table size ~D/~D~%" - (-> this level) - actor-count - (-> this level entity allocated-length) - ) - ) - ) - ) - + (format 0 + "ERROR: Attempting to rebirth level ~A with incorrect entity table size ~D/~D~%" + (-> this level) + actor-count + (-> this level entity allocated-length))))) ;; reset our entity links array to 0. (set! (-> this level entity length) 0) - ;; NOTE: we don't actually birth the actors. It is too slow. ;; so it gets spread over multiple frames later. (when (nonzero? (-> this actors)) (dotimes (birth-idx (-> this actors length)) (let* ((idx-to-birth (-> this actor-birth-order birth-idx)) - (actor-to-birth (-> this actors data (logand idx-to-birth #xffff) actor)) - ) - (add-to-level! actor-to-birth *level* (-> this level) (the-as actor-id (-> actor-to-birth aid))) - ) - ) - ) - - (let ((existing-amb-count (if (nonzero? (-> this ambients)) - (-> this ambients length) - 0 - ) - ) - ) + (actor-to-birth (-> this actors data (logand idx-to-birth #xffff) actor))) + (add-to-level! actor-to-birth *level* (-> this level) (the-as actor-id (-> actor-to-birth aid)))))) + (let ((existing-amb-count (if (nonzero? (-> this ambients)) (-> this ambients length) 0))) (cond ((not (-> this level ambient)) - (set! (-> this level ambient) (new 'loading-level 'entity-ambient-data-array existing-amb-count)) - ) + (set! (-> this level ambient) (new 'loading-level 'entity-ambient-data-array existing-amb-count))) ((< (-> this level ambient allocated-length) existing-amb-count) - (format - 0 - "ERROR: Attempting to rebirth level ~A with incorrect ambient table size ~D/~D~%" - (-> this level) - existing-amb-count - (-> this level ambient allocated-length) - ) - ) - ) - ) - + (format 0 + "ERROR: Attempting to rebirth level ~A with incorrect ambient table size ~D/~D~%" + (-> this level) + existing-amb-count + (-> this level ambient allocated-length))))) (set! (-> this level ambient length) 0) 0 (let ((amb-array (-> this level ambient)) - (bsp-ambs (-> this ambients)) - ) + (bsp-ambs (-> this ambients))) (when (nonzero? bsp-ambs) (dotimes (s2-0 (-> bsp-ambs length)) (let ((amb-to-birth (-> bsp-ambs data s2-0 ambient))) (set! (-> amb-to-birth ambient-data) (-> amb-array data (-> amb-array length))) - (birth-ambient! amb-to-birth) - ) - (+! (-> amb-array length) 1) - ) - ) - ) - (let ((cams (-> this cameras))) - (when (nonzero? cams) - (dotimes (s3-1 (-> cams length)) - (birth! (-> cams s3-1)) - ) - ) - ) - + (birth-ambient! amb-to-birth)) + (+! (-> amb-array length) 1)))) + (let ((cams (-> this cameras))) (when (nonzero? cams) (dotimes (s3-1 (-> cams length)) (birth! (-> cams s3-1))))) ; (.mfc0 v1-71 Count) ; (let ((a3-3 (- v1-71 s5-0))) ; (format 0 "Done ~S in ~D~%" "birth" a3-3) ; ) - (none) - ) - + (none)) (defmethod deactivate-entities ((this bsp-header)) (let ((s5-0 (-> this actors))) (when (nonzero? s5-0) (dotimes (s4-0 (-> s5-0 length)) - (let ((s3-0 (-> s5-0 data s4-0 actor))) - (kill! s3-0) - (remove-from-level! s3-0 *level*) - ) - ) - ) - ) - (let ((s5-1 (-> this cameras))) - (when (nonzero? s5-1) - (dotimes (s4-1 (-> s5-1 length)) - (kill! (-> s5-1 s4-1)) - ) - ) - ) + (let ((s3-0 (-> s5-0 data s4-0 actor))) (kill! s3-0) (remove-from-level! s3-0 *level*))))) + (let ((s5-1 (-> this cameras))) (when (nonzero? s5-1) (dotimes (s4-1 (-> s5-1 length)) (kill! (-> s5-1 s4-1))))) (let ((s5-2 (-> *entity-pool* child)) (s4-2 (-> this level heap base)) - (s3-1 (-> this level heap top-base)) - ) + (s3-1 (-> this level heap top-base))) (while s5-2 (let ((s2-0 (ppointer->process s5-2))) (set! s5-2 (-> s5-2 0 brother)) @@ -1462,121 +934,63 @@ ((-> (the-as process s2-0) entity) (when (= (-> (the-as process s2-0) entity extra level) (-> this level)) (format #t "NOTICE: rogue level entity ~A~% still alive~%" s2-0) - (deactivate s2-0) - ) - ) + (deactivate s2-0))) ((= (-> s2-0 type) part-tracker) (let ((v1-28 (the-as part-tracker s2-0))) (if (and (nonzero? (-> v1-28 part)) (>= (the-as int (-> v1-28 part group)) (the-as int s4-2)) - (< (the-as int (-> v1-28 part group)) (the-as int s3-1)) - ) - (deactivate s2-0) - ) - ) - ) + (< (the-as int (-> v1-28 part group)) (the-as int s3-1))) + (deactivate s2-0)))) (else - (let* ((s1-0 s2-0) - (v1-34 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) process-drawable)) - s1-0 - ) - ) - ) - (when v1-34 - (cond - ((and (nonzero? (-> (the-as process-drawable v1-34) part)) - (>= (the-as int (-> (the-as process-drawable v1-34) part group)) (the-as int s4-2)) - (< (the-as int (-> (the-as process-drawable v1-34) part group)) (the-as int s3-1)) - ) - (format - #t - "NOTICE: rogue null level entity (using part ~A) ~A~% still alive~%" - (-> (the-as process-drawable (-> (the-as process-drawable v1-34) part)) brother) - s2-0 - ) - (deactivate s2-0) - ) - ((and (nonzero? (-> (the-as process-drawable v1-34) draw)) - (>= (the-as int (-> (the-as process-drawable v1-34) draw art-group)) (the-as int s4-2)) - (< (the-as int (-> (the-as process-drawable v1-34) draw art-group)) (the-as int s3-1)) - ) - (format - #t - "NOTICE: rogue null level entity (using art ~A) ~A~% still alive~%" - (-> (the-as process-drawable (-> (the-as process-drawable v1-34) draw)) mask) - s2-0 - ) - (deactivate s2-0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (let* ((s1-0 s2-0) + (v1-34 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) process-drawable)) s1-0))) + (when v1-34 + (cond + ((and (nonzero? (-> (the-as process-drawable v1-34) part)) + (>= (the-as int (-> (the-as process-drawable v1-34) part group)) (the-as int s4-2)) + (< (the-as int (-> (the-as process-drawable v1-34) part group)) (the-as int s3-1))) + (format #t + "NOTICE: rogue null level entity (using part ~A) ~A~% still alive~%" + (-> (the-as process-drawable (-> (the-as process-drawable v1-34) part)) brother) + s2-0) + (deactivate s2-0)) + ((and (nonzero? (-> (the-as process-drawable v1-34) draw)) + (>= (the-as int (-> (the-as process-drawable v1-34) draw art-group)) (the-as int s4-2)) + (< (the-as int (-> (the-as process-drawable v1-34) draw art-group)) (the-as int s3-1))) + (format #t + "NOTICE: rogue null level entity (using art ~A) ~A~% still alive~%" + (-> (the-as process-drawable (-> (the-as process-drawable v1-34) draw)) mask) + s2-0) + (deactivate s2-0)))))))))) + (none)) (defun process-drawable-from-entity! ((arg0 process-drawable) (arg1 entity-actor)) (logior! (-> arg0 mask) (process-mask actor-pause)) (set! (-> arg0 root trans quad) (-> arg1 extra trans quad)) (quaternion-copy! (-> arg0 root quat) (-> arg1 quat)) (vector-identity! (-> arg0 root scale)) - (none) - ) + (none)) (defmethod update-perm! ((this entity-perm) (arg0 symbol) (arg1 entity-perm-status)) (cond - ((= arg0 'game) - (logclear! (-> this status) arg1) - ) + ((= arg0 'game) (logclear! (-> this status) arg1)) ((nonzero? (-> this task)) - (logclear! (-> this status) (logior (if (logtest? (-> this status) (entity-perm-status bit-4)) - 524 - 0 - ) - 515 - ) - ) - ) - (else - (logclear! (-> this status) (logior arg1 (if (logtest? (-> this status) (entity-perm-status bit-4)) - 524 - 0 - ) - ) - ) - ) - ) + (logclear! (-> this status) (logior (if (logtest? (-> this status) (entity-perm-status bit-4)) 524 0) 515))) + (else (logclear! (-> this status) (logior arg1 (if (logtest? (-> this status) (entity-perm-status bit-4)) 524 0))))) (when (not (logtest? (-> this status) (entity-perm-status user-set-from-cstage))) (set! (-> this user-uint64) (the-as uint 0)) - 0 - ) - this - ) + 0) + this) (defun reset-actors ((arg0 symbol)) (set! *display-process-anim* (the-as (pointer process) #f)) (let* ((v1-0 arg0) (s5-0 (cond - ((or (= v1-0 'life) (= v1-0 'debug)) - 623 - ) - ((= v1-0 'try) - 623 - ) - ((= v1-0 'game) - 1919 - ) - (else - 1663 - ) - ) - ) - (s4-0 *game-info*) - ) + ((or (= v1-0 'life) (= v1-0 'debug)) 623) + ((= v1-0 'try) 623) + ((= v1-0 'game) 1919) + (else 1663))) + (s4-0 *game-info*)) (dotimes (s3-0 (-> *level* length)) (let ((v1-4 (-> *level* level s3-0))) (when (= (-> v1-4 status) 'active) @@ -1584,101 +998,54 @@ (dotimes (s1-0 (-> s2-0 length)) (let ((s0-0 (-> s2-0 data s1-0 entity))) (kill! s0-0) - (update-perm! (-> s0-0 extra perm) arg0 (the-as entity-perm-status s5-0)) - ) - ) - ) - ) - ) - ) + (update-perm! (-> s0-0 extra perm) arg0 (the-as entity-perm-status s5-0)))))))) (let ((s3-1 (-> s4-0 task-perm-list))) (dotimes (s2-1 (-> s3-1 length)) - (update-perm! (-> s3-1 data s2-1) arg0 (the-as entity-perm-status s5-0)) - ) - (logior! (-> s3-1 data 1 status) (entity-perm-status real-complete)) - ) + (update-perm! (-> s3-1 data s2-1) arg0 (the-as entity-perm-status s5-0))) + (logior! (-> s3-1 data 1 status) (entity-perm-status real-complete))) (let ((s4-1 (-> s4-0 perm-list))) (dotimes (s3-2 (-> s4-1 length)) - (update-perm! (-> s4-1 data s3-2) arg0 (the-as entity-perm-status s5-0)) - ) - ) - ) - (iterate-process-tree - *entity-pool* - (lambda ((arg0 process-drawable)) (deactivate arg0) (none)) - *null-kernel-context* - ) - (if (= arg0 'game) - (task-control-reset arg0) - ) + (update-perm! (-> s4-1 data s3-2) arg0 (the-as entity-perm-status s5-0))))) + (iterate-process-tree *entity-pool* (lambda ((arg0 process-drawable)) (deactivate arg0) (none)) *null-kernel-context*) + (if (= arg0 'game) (task-control-reset arg0)) (set! (-> *ACTOR-bank* birth-max) 1000) 0 - (none) - ) + (none)) (defun reset-cameras () (remove-all *camera-engine*) (dotimes (gp-0 (-> *level* length)) (let ((v1-5 (-> *level* level gp-0))) (when (= (-> v1-5 status) 'active) - (let ((s5-0 (-> v1-5 bsp cameras))) - (when (nonzero? s5-0) - (dotimes (s4-0 (-> s5-0 length)) - (birth! (-> s5-0 s4-0)) - ) - ) - ) - ) - ) - ) + (let ((s5-0 (-> v1-5 bsp cameras))) (when (nonzero? s5-0) (dotimes (s4-0 (-> s5-0 length)) (birth! (-> s5-0 s4-0)))))))) 0 - (none) - ) + (none)) (defmethod run-logic? ((this process-drawable)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (or (>= (+ (-> *ACTOR-bank* pause-dist) (-> this root pause-adjust-distance)) - (vector-vector-distance (-> this root trans) (math-camera-pos)) - ) + (vector-vector-distance (-> this root trans) (math-camera-pos))) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) (defmethod birth? ((this entity-links) (arg0 vector)) (and (not (logtest? (-> this perm status) (entity-perm-status bit-0 dead))) - (< (vector-vector-distance (-> this trans) arg0) (-> *ACTOR-bank* birth-dist)) - ) - ) + (< (vector-vector-distance (-> this trans) arg0) (-> *ACTOR-bank* birth-dist)))) (defmethod actors-update ((this level-group)) (local-vars (sv-16 vector) (sv-24 int) (sv-32 entity-links) (sv-48 int) (sv-64 string) (sv-80 int)) (when *compact-actors* (if (and (= *compact-actors* 'debug) (= (-> *nk-dead-pool* alive-list prev) (-> *nk-dead-pool* first-gap))) - (churn *nk-dead-pool* 1) - ) - (if (nonzero? *debug-dead-pool*) - (compact *debug-dead-pool* 10) - ) - (compact - *nk-dead-pool* - (the int - (lerp-scale 8.0 1.0 (the float (-> *display* frames (-> *display* last-screen) frame run-time)) 2000.0 8000.0) - ) - ) - ) + (churn *nk-dead-pool* 1)) + (if (nonzero? *debug-dead-pool*) (compact *debug-dead-pool* 10)) + (compact *nk-dead-pool* + (the int (lerp-scale 8.0 1.0 (the float (-> *display* frames (-> *display* last-screen) frame run-time)) 2000.0 8000.0)))) (when (not (paused?)) (let ((s5-1 (-> *display* frames (-> *display* last-screen) frame run-time))) (let ((f0-5 (fmax (meters 80) (fmin (+ (meters 80) (* (meters 0.05) (the float (- 7000 s5-1)))) (-> *ACTOR-bank* birth-dist))))) - (seek! (-> *ACTOR-bank* pause-dist) f0-5 (* 81920.0 (-> *display* seconds-per-frame))) - ) - (seekl! (-> *ACTOR-bank* birth-max) (the int (lerp-scale 25.0 1.0 (the float s5-1) 2000.0 7000.0)) 10) - ) - (if (movie?) - (set! (-> *ACTOR-bank* birth-max) 1000) - ) - ) + (seek! (-> *ACTOR-bank* pause-dist) f0-5 (* 81920.0 (-> *display* seconds-per-frame)))) + (seekl! (-> *ACTOR-bank* birth-max) (the int (lerp-scale 25.0 1.0 (the float s5-1) 2000.0 7000.0)) 10)) + (if (movie?) (set! (-> *ACTOR-bank* birth-max) 1000))) (when *spawn-actors* (set! sv-16 (camera-pos)) (set! sv-24 0) @@ -1688,8 +1055,7 @@ (cond ((= (-> s4-2 display?) 'special) (let* ((s4-3 (-> s4-2 entity)) - (s3-1 (-> s4-3 length)) - ) + (s3-1 (-> s4-3 length))) (dotimes (s2-0 s3-1) (let ((v1-44 (-> s4-3 data s2-0))) (cond @@ -1697,212 +1063,111 @@ (when (not (or (-> v1-44 process) (logtest? (-> v1-44 perm status) (entity-perm-status bit-0 dead)))) (birth! (-> v1-44 entity)) (set! sv-24 (+ sv-24 1)) - (if (>= sv-24 (-> *ACTOR-bank* birth-max)) - (return (the-as object #f)) - ) - ) - ) + (if (>= sv-24 (-> *ACTOR-bank* birth-max)) (return (the-as object #f))))) (else - (if (and (-> v1-44 process) (not (logtest? (-> v1-44 perm status) (entity-perm-status bit-3)))) - (kill! (-> v1-44 entity)) - ) - ) - ) - ) - ) - ) - ) + (if (and (-> v1-44 process) (not (logtest? (-> v1-44 perm status) (entity-perm-status bit-3)))) (kill! (-> v1-44 entity))))))))) ((= (-> s4-2 display?) 'special-vis) (let* ((s3-2 (-> s4-2 entity)) - (s2-1 (-> s3-2 length)) - ) + (s2-1 (-> s3-2 length))) (dotimes (s1-0 s2-1) (let ((s0-0 (-> s3-2 data s1-0))) (cond ((and (logtest? (-> s0-0 perm status) (entity-perm-status bit-7)) (is-object-visible? s4-2 (-> s0-0 vis-id))) (when (not (or (-> s0-0 process) (logtest? (-> s0-0 perm status) (entity-perm-status bit-0 dead)))) (birth! (-> s0-0 entity)) - (set! sv-24 (+ sv-24 1)) - ) - ) + (set! sv-24 (+ sv-24 1)))) (else - (when (and (-> s0-0 process) (not (logtest? (-> s0-0 perm status) (entity-perm-status bit-3)))) - (kill! (-> s0-0 entity)) - (set! sv-24 (+ sv-24 1)) - ) - ) - ) - ) - (if (>= sv-24 (-> *ACTOR-bank* birth-max)) - (return (the-as object #f)) - ) - ) - ) - ) + (when (and (-> s0-0 process) (not (logtest? (-> s0-0 perm status) (entity-perm-status bit-3)))) + (kill! (-> s0-0 entity)) + (set! sv-24 (+ sv-24 1)))))) + (if (>= sv-24 (-> *ACTOR-bank* birth-max)) (return (the-as object #f)))))) ((= (-> s4-2 display?) 'actor) (let* ((s4-4 (-> s4-2 entity)) - (s3-3 (-> s4-4 length)) - ) + (s3-3 (-> s4-4 length))) (dotimes (s2-2 s3-3) (let ((v1-84 (-> s4-4 data s2-2))) (cond (#t - (when (not (or (-> v1-84 process) (logtest? (-> v1-84 perm status) (entity-perm-status bit-0 dead)))) - (birth! (-> v1-84 entity)) - (set! sv-24 (+ sv-24 1)) - (if (>= sv-24 (-> *ACTOR-bank* birth-max)) - (return (the-as object #f)) - ) - ) - ) + (when (not (or (-> v1-84 process) (logtest? (-> v1-84 perm status) (entity-perm-status bit-0 dead)))) + (birth! (-> v1-84 entity)) + (set! sv-24 (+ sv-24 1)) + (if (>= sv-24 (-> *ACTOR-bank* birth-max)) (return (the-as object #f))))) (else - (if (and (-> v1-84 process) (not (logtest? (-> v1-84 perm status) (entity-perm-status bit-3)))) - (kill! (-> v1-84 entity)) - ) - ) - ) - ) - ) - ) - ) + (if (and (-> v1-84 process) (not (logtest? (-> v1-84 perm status) (entity-perm-status bit-3)))) (kill! (-> v1-84 entity))))))))) ((not *vis-actors*) (let* ((s4-5 (-> s4-2 entity)) - (s3-4 (-> s4-5 length)) - ) + (s3-4 (-> s4-5 length))) (dotimes (s2-3 s3-4) (let ((s1-1 (-> s4-5 data s2-3))) (cond ((and (< (vector-vector-distance (-> s1-1 trans) sv-16) (-> *ACTOR-bank* birth-dist)) - (not (logtest? (-> s1-1 perm status) (entity-perm-status bit-9 bit-10))) - ) + (not (logtest? (-> s1-1 perm status) (entity-perm-status bit-9 bit-10)))) (when (not (or (-> s1-1 process) (logtest? (-> s1-1 perm status) (entity-perm-status bit-0 dead)))) (birth! (-> s1-1 entity)) (set! sv-24 (+ sv-24 1)) - (if (>= sv-24 (-> *ACTOR-bank* birth-max)) - (return (the-as object #f)) - ) - ) - ) + (if (>= sv-24 (-> *ACTOR-bank* birth-max)) (return (the-as object #f))))) (else - (if (and (-> s1-1 process) (not (logtest? (-> s1-1 perm status) (entity-perm-status bit-3)))) - (kill! (-> s1-1 entity)) - ) - ) - ) - ) - ) - ) - ) + (if (and (-> s1-1 process) (not (logtest? (-> s1-1 perm status) (entity-perm-status bit-3)))) (kill! (-> s1-1 entity))))))))) (*vis-actors* - (when (not (and (-> s4-2 vis-info 0) (-> s4-2 all-visible?))) - (let* ((s3-5 (-> s4-2 entity)) - (s2-4 (-> s3-5 length)) - (s0-1 #f) - ) - (dotimes (s1-2 s2-4) - (set! sv-32 (-> s3-5 data s1-2)) - (cond - ((and (#if PC_PORT - (or (with-pc (not (-> *pc-settings* ps2-actor-vis?))) (is-object-visible? s4-2 (-> sv-32 vis-id))) - (is-object-visible? s4-2 (-> sv-32 vis-id)) - ) - (zero? (logand (-> sv-32 perm status) (entity-perm-status bit-9 bit-10))) - ) - (when (not (or (-> sv-32 process) (logtest? (-> sv-32 perm status) (entity-perm-status bit-0 dead)) s0-1)) - (birth! (-> sv-32 entity)) - (set! sv-24 (+ sv-24 1)) - (when (< (/ (the float (memory-free *nk-dead-pool*)) (the float (memory-total *nk-dead-pool*))) 0.1) - (let ((s0-2 format)) - (set! sv-48 0) - (set! sv-64 "WARNING: low actor memory, no birth triggered!!! ~D/~D~%") - (set! sv-80 (memory-free *nk-dead-pool*)) - (let ((a3-2 (memory-total *nk-dead-pool*))) - (s0-2 sv-48 sv-64 sv-80 a3-2) - ) - ) - (set! s0-1 #t) - ) - ) - ) - (else - (when (and (-> sv-32 process) (not (logtest? (-> sv-32 perm status) (entity-perm-status bit-3)))) - (kill! (-> sv-32 entity)) - (set! sv-24 (+ sv-24 1)) - ) - ) - ) - (if (>= sv-24 (-> *ACTOR-bank* birth-max)) - (return (the-as object #f)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - 0 - ) + (when (not (and (-> s4-2 vis-info 0) (-> s4-2 all-visible?))) + (let* ((s3-5 (-> s4-2 entity)) + (s2-4 (-> s3-5 length)) + (s0-1 #f)) + (dotimes (s1-2 s2-4) + (set! sv-32 (-> s3-5 data s1-2)) + (cond + ((and (#if PC_PORT + (or (with-pc (not (-> *pc-settings* ps2-actor-vis?))) (is-object-visible? s4-2 (-> sv-32 vis-id))) + (is-object-visible? s4-2 (-> sv-32 vis-id))) + (zero? (logand (-> sv-32 perm status) (entity-perm-status bit-9 bit-10)))) + (when (not (or (-> sv-32 process) (logtest? (-> sv-32 perm status) (entity-perm-status bit-0 dead)) s0-1)) + (birth! (-> sv-32 entity)) + (set! sv-24 (+ sv-24 1)) + (when (< (/ (the float (memory-free *nk-dead-pool*)) (the float (memory-total *nk-dead-pool*))) 0.1) + (let ((s0-2 format)) + (set! sv-48 0) + (set! sv-64 "WARNING: low actor memory, no birth triggered!!! ~D/~D~%") + (set! sv-80 (memory-free *nk-dead-pool*)) + (let ((a3-2 (memory-total *nk-dead-pool*))) (s0-2 sv-48 sv-64 sv-80 a3-2))) + (set! s0-1 #t)))) + (else + (when (and (-> sv-32 process) (not (logtest? (-> sv-32 perm status) (entity-perm-status bit-3)))) + (kill! (-> sv-32 entity)) + (set! sv-24 (+ sv-24 1))))) + (if (>= sv-24 (-> *ACTOR-bank* birth-max)) (return (the-as object #f)))))))))))) + 0) (defun entity-birth-no-kill ((arg0 entity)) (let ((gp-0 (-> arg0 extra))) (logior! (-> gp-0 perm status) (entity-perm-status bit-3)) - (if (not (or (-> gp-0 process) (logtest? (-> gp-0 perm status) (entity-perm-status bit-0 dead)))) - (birth! (-> gp-0 entity)) - ) - (-> gp-0 process) - ) - (none) - ) + (if (not (or (-> gp-0 process) (logtest? (-> gp-0 perm status) (entity-perm-status bit-0 dead)))) (birth! (-> gp-0 entity))) + (-> gp-0 process)) + (none)) (defun entity-task-complete-on ((arg0 entity)) (let ((v1-0 (-> arg0 extra))) (if (nonzero? (-> v1-0 perm task)) - (logior! (-> *game-info* task-perm-list data (-> v1-0 perm task) status) (entity-perm-status real-complete)) - ) - ) + (logior! (-> *game-info* task-perm-list data (-> v1-0 perm task) status) (entity-perm-status real-complete)))) 0 - (none) - ) + (none)) (defun entity-task-complete-off ((arg0 entity)) (let ((v1-0 (-> arg0 extra))) (if (!= (-> v1-0 perm task) (game-task complete)) - (logclear! (-> *game-info* task-perm-list data (-> v1-0 perm task) status) (entity-perm-status real-complete)) - ) - ) + (logclear! (-> *game-info* task-perm-list data (-> v1-0 perm task) status) (entity-perm-status real-complete)))) 0 - (none) - ) + (none)) (defmethod set-or-clear-status! ((this entity-actor) (arg0 entity-perm-status) (arg1 symbol)) (let ((v1-0 (-> this extra))) - (if arg1 - (logior! (-> v1-0 perm status) arg0) - (logclear! (-> v1-0 perm status) arg0) - ) - (-> v1-0 perm status) - ) - (none) - ) + (if arg1 (logior! (-> v1-0 perm status) arg0) (logclear! (-> v1-0 perm status) arg0)) + (-> v1-0 perm status)) + (none)) (defun process-entity-status! ((arg0 process) (arg1 entity-perm-status) (arg2 symbol)) (cond ((and (-> arg0 entity) (= arg0 (-> arg0 entity extra process))) (let ((v1-6 (-> arg0 entity extra))) - (if arg2 - (logior! (-> v1-6 perm status) arg1) - (logclear! (-> v1-6 perm status) arg1) - ) - (the-as int (-> v1-6 perm status)) - ) - ) - (else - 0 - ) - ) - ) - - + (if arg2 (logior! (-> v1-6 perm status) arg1) (logclear! (-> v1-6 perm status) arg1)) + (the-as int (-> v1-6 perm status)))) + (else 0))) diff --git a/goal_src/jak1/engine/entity/relocate.gc b/goal_src/jak1/engine/entity/relocate.gc index 2fb3340b5d..0cfbb42df1 100644 --- a/goal_src/jak1/engine/entity/relocate.gc +++ b/goal_src/jak1/engine/entity/relocate.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/anim/aligner-h.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/common-obs/generic-obs-h.gc") @@ -13,10 +12,6 @@ (require "engine/data/art-h.gc") (require "engine/common-obs/water-h.gc") -;; name: relocate.gc -;; name in dgo: relocate -;; dgos: GAME, ENGINE - ;; note: the while loop in this is changed to include a cast to basic. ;; DECOMP BEGINS @@ -25,376 +20,221 @@ (let ((v1-0 *kernel-context*)) (set! (-> v1-0 relocating-process) this) (set! (-> v1-0 relocating-min) (the-as int (&-> this type))) - (set! (-> v1-0 relocating-max) - (the-as int (+ (+ (-> this allocated-length) -4 (-> process size)) (the-as int this))) - ) - (set! (-> v1-0 relocating-offset) arg0) - ) + (set! (-> v1-0 relocating-max) (the-as int (+ (+ (-> this allocated-length) -4 (-> process size)) (the-as int this)))) + (set! (-> v1-0 relocating-offset) arg0)) (&+! (-> this ppointer 0) arg0) - (let ((v1-5 (-> this entity))) - (if (and v1-5 (= (-> v1-5 extra process) this)) - (&+! (-> v1-5 extra process) arg0) - ) - ) + (let ((v1-5 (-> this entity))) (if (and v1-5 (= (-> v1-5 extra process) this)) (&+! (-> v1-5 extra process) arg0))) (let ((v1-7 (-> this connection-list next1))) (while (the-as connection v1-7) (let ((a0-14 (-> v1-7 prev1))) (if (and (>= (the-as int a0-14) (-> *kernel-context* relocating-min)) - (< (the-as int a0-14) (-> *kernel-context* relocating-max)) - ) - (&+! (-> v1-7 prev1) arg0) - ) - ) + (< (the-as int a0-14) (-> *kernel-context* relocating-max))) + (&+! (-> v1-7 prev1) arg0))) (let ((a0-19 (-> (the-as connection v1-7) param1))) (if (and (>= a0-19 (-> *kernel-context* relocating-min)) (< a0-19 (-> *kernel-context* relocating-max))) - (+! (-> (the-as connection v1-7) param1) arg0) - ) - ) + (+! (-> (the-as connection v1-7) param1) arg0))) (let ((a0-24 (-> (the-as connection v1-7) param2))) (if (and (>= a0-24 (-> *kernel-context* relocating-min)) (< a0-24 (-> *kernel-context* relocating-max))) - (+! (-> (the-as connection v1-7) param2) arg0) - ) - ) + (+! (-> (the-as connection v1-7) param2) arg0))) (let ((a0-29 (-> (the-as connection v1-7) param3))) (if (and (>= a0-29 (-> *kernel-context* relocating-min)) (< a0-29 (-> *kernel-context* relocating-max))) - (+! (-> (the-as connection v1-7) param3) arg0) - ) - ) - (set! v1-7 (-> (the-as connection v1-7) next1)) - ) - ) + (+! (-> (the-as connection v1-7) param3) arg0))) + (set! v1-7 (-> (the-as connection v1-7) next1)))) (let ((v1-10 (-> this self))) (if (and (>= (the-as int v1-10) (-> *kernel-context* relocating-min)) - (< (the-as int v1-10) (-> *kernel-context* relocating-max)) - ) - (&+! (-> this self) arg0) - ) - ) + (< (the-as int v1-10) (-> *kernel-context* relocating-max))) + (&+! (-> this self) arg0))) (let ((v1-15 (-> this ppointer))) (if (and (>= (the-as int v1-15) (-> *kernel-context* relocating-min)) - (< (the-as int v1-15) (-> *kernel-context* relocating-max)) - ) - (&+! (-> this ppointer) arg0) - ) - ) + (< (the-as int v1-15) (-> *kernel-context* relocating-max))) + (&+! (-> this ppointer) arg0))) ;; og:preserve-this (let ((s4-0 (the basic (&+ (-> this heap-base) 4)))) (while (< (the-as int s4-0) (the-as int (-> this heap-cur))) (relocate s4-0 arg0) - (&+! s4-0 (logand -16 (+ (asize-of s4-0) 15))) - ) - ) + (&+! s4-0 (logand -16 (+ (asize-of s4-0) 15))))) (&+! (-> this main-thread) arg0) (&+! (-> this top-thread) arg0) (&+! (-> this heap-base) arg0) (&+! (-> this heap-cur) arg0) (&+! (-> this heap-top) arg0) (let ((a2-4 (asize-of this)) - (a1-22 (&-> this type)) - ) + (a1-22 (&-> this type))) (cond - ((>= arg0 0) - (qmem-copy->! (&+ a1-22 arg0) a1-22 a2-4) - ) - ((< a2-4 2560) - (qmem-copy<-! (&+ a1-22 arg0) a1-22 a2-4) - ) - (else - (ultimate-memcpy (&+ a1-22 arg0) a1-22 (the-as uint a2-4)) - ) - ) - ) + ((>= arg0 0) (qmem-copy->! (&+ a1-22 arg0) a1-22 a2-4)) + ((< a2-4 2560) (qmem-copy<-! (&+ a1-22 arg0) a1-22 a2-4)) + (else (ultimate-memcpy (&+ a1-22 arg0) a1-22 (the-as uint a2-4))))) (set! (-> *kernel-context* relocating-process) #f) - (&+ this arg0) - ) + (&+ this arg0)) (defmethod relocate ((this cpu-thread) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this process-drawable) (arg0 int)) (let ((v1-0 *kernel-context*)) (set! (-> v1-0 relocating-process) this) (set! (-> v1-0 relocating-min) (the-as int (&-> this type))) - (set! (-> v1-0 relocating-max) - (the-as int (+ (+ (-> this allocated-length) -4 (-> process size)) (the-as int this))) - ) - (set! (-> v1-0 relocating-offset) arg0) - ) - (if (nonzero? (-> this root)) - (&+! (-> this root) arg0) - ) - (if (nonzero? (-> this node-list)) - (&+! (-> this node-list) arg0) - ) - (if (nonzero? (-> this draw)) - (&+! (-> this draw) arg0) - ) - (if (nonzero? (-> this skel)) - (&+! (-> this skel) arg0) - ) - (if (nonzero? (-> this nav)) - (&+! (-> this nav) arg0) - ) - (if (nonzero? (-> this align)) - (&+! (-> this align) arg0) - ) - (if (nonzero? (-> this path)) - (&+! (-> this path) arg0) - ) - (if (nonzero? (-> this vol)) - (&+! (-> this vol) arg0) - ) - (if (nonzero? (-> this fact)) - (&+! (-> this fact) arg0) - ) - (if (nonzero? (-> this link)) - (&+! (-> this link) arg0) - ) - (if (nonzero? (-> this part)) - (&+! (-> this part) arg0) - ) - (if (nonzero? (-> this water)) - (&+! (-> this water) arg0) - ) - (if (nonzero? (-> this sound)) - (&+! (-> this sound) arg0) - ) - (the-as process-drawable ((method-of-type process relocate) this arg0)) - ) + (set! (-> v1-0 relocating-max) (the-as int (+ (+ (-> this allocated-length) -4 (-> process size)) (the-as int this)))) + (set! (-> v1-0 relocating-offset) arg0)) + (if (nonzero? (-> this root)) (&+! (-> this root) arg0)) + (if (nonzero? (-> this node-list)) (&+! (-> this node-list) arg0)) + (if (nonzero? (-> this draw)) (&+! (-> this draw) arg0)) + (if (nonzero? (-> this skel)) (&+! (-> this skel) arg0)) + (if (nonzero? (-> this nav)) (&+! (-> this nav) arg0)) + (if (nonzero? (-> this align)) (&+! (-> this align) arg0)) + (if (nonzero? (-> this path)) (&+! (-> this path) arg0)) + (if (nonzero? (-> this vol)) (&+! (-> this vol) arg0)) + (if (nonzero? (-> this fact)) (&+! (-> this fact) arg0)) + (if (nonzero? (-> this link)) (&+! (-> this link) arg0)) + (if (nonzero? (-> this part)) (&+! (-> this part) arg0)) + (if (nonzero? (-> this water)) (&+! (-> this water) arg0)) + (if (nonzero? (-> this sound)) (&+! (-> this sound) arg0)) + (the-as process-drawable ((method-of-type process relocate) this arg0))) (defmethod relocate ((this collide-shape) (arg0 int)) (&+! (-> this process) arg0) (&+! (-> this root-prim) arg0) - (if (-> this riders) - (&+! (-> this riders) arg0) - ) - this - ) + (if (-> this riders) (&+! (-> this riders) arg0)) + this) (defmethod relocate ((this collide-shape-moving) (arg0 int)) - (if (-> this dynam) - (&+! (-> this dynam) arg0) - ) - (the-as collide-shape-moving ((method-of-type collide-shape relocate) this arg0)) - ) + (if (-> this dynam) (&+! (-> this dynam) arg0)) + (the-as collide-shape-moving ((method-of-type collide-shape relocate) this arg0))) (defmethod relocate ((this collide-sticky-rider-group) (arg0 int)) (countdown (v1-0 (-> this num-riders)) - (let ((a2-2 (-> this rider v1-0))) - (if (-> a2-2 sticky-prim) - (&+! (-> a2-2 sticky-prim) arg0) - ) - ) - ) - this - ) + (let ((a2-2 (-> this rider v1-0))) (if (-> a2-2 sticky-prim) (&+! (-> a2-2 sticky-prim) arg0)))) + this) (defmethod relocate ((this collide-shape-prim) (arg0 int)) (&+! (-> this cshape) arg0) - this - ) + this) (defmethod relocate ((this collide-shape-prim-group) (arg0 int)) (&+! (-> this cshape) arg0) (countdown (v1-2 (-> this num-prims)) - (&+! (-> this prims v1-2) arg0) - ) - this - ) + (&+! (-> this prims v1-2) arg0)) + this) (defmethod relocate ((this fact-info) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this draw-control) (arg0 int)) (&+! (-> this skeleton) arg0) (&+! (-> this process) arg0) (when (-> this ripple) - (if (-> this ripple query) - (&+! (-> this ripple query) arg0) - ) - (&+! (-> this ripple) arg0) - ) + (if (-> this ripple query) (&+! (-> this ripple query) arg0)) + (&+! (-> this ripple) arg0)) (let ((v1-14 (-> this shadow-ctrl))) (if (and (>= (the-as int v1-14) (-> *kernel-context* relocating-min)) - (< (the-as int v1-14) (-> *kernel-context* relocating-max)) - ) - (&+! (-> this shadow-ctrl) arg0) - ) - ) - this - ) + (< (the-as int v1-14) (-> *kernel-context* relocating-max))) + (&+! (-> this shadow-ctrl) arg0))) + this) (defmethod relocate ((this joint-control) (arg0 int)) - (if (-> this effect) - (&+! (-> this effect) arg0) - ) + (if (-> this effect) (&+! (-> this effect) arg0)) (set! (-> this root-channel) (the-as (inline-array joint-control-channel) (&+ (-> this root-channel) arg0))) (countdown (v1-6 (-> this allocated-length)) - (&+! (-> this channel v1-6 parent) arg0) - ) - this - ) + (&+! (-> this channel v1-6 parent) arg0)) + this) (defmethod relocate ((this cspace-array) (arg0 int)) (countdown (v1-0 (-> this length)) (let ((a2-2 (-> this data v1-0))) - (if (-> a2-2 parent) - (&+! (-> a2-2 parent) arg0) - ) + (if (-> a2-2 parent) (&+! (-> a2-2 parent) arg0)) (&+! (-> a2-2 bone) arg0) (let ((a3-6 (-> a2-2 param1))) (if (and (>= (the-as int a3-6) (-> *kernel-context* relocating-min)) - (< (the-as int a3-6) (-> *kernel-context* relocating-max)) - ) - (&+! (-> a2-2 param1) arg0) - ) - ) + (< (the-as int a3-6) (-> *kernel-context* relocating-max))) + (&+! (-> a2-2 param1) arg0))) (let ((a3-11 (-> a2-2 param2))) (if (and (>= (the-as int a3-11) (-> *kernel-context* relocating-min)) - (< (the-as int a3-11) (-> *kernel-context* relocating-max)) - ) - (&+! (-> a2-2 param2) arg0) - ) - ) - ) - ) - this - ) + (< (the-as int a3-11) (-> *kernel-context* relocating-max))) + (&+! (-> a2-2 param2) arg0))))) + this) (defmethod relocate ((this nav-control) (arg0 int)) (&+! (-> this process) arg0) (&+! (-> this shape) arg0) - this - ) + this) (defmethod relocate ((this path-control) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this vol-control) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this water-control) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this actor-link-info) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this align-control) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this joint-mod) (arg0 int)) (&+! (-> this process) arg0) (&+! (-> this joint) arg0) - this - ) + this) (defmethod relocate ((this joint-mod-wheel) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this effect-control) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defmethod relocate ((this sparticle-launch-control) (arg0 int)) (&+! (-> this proc) arg0) (countdown (v1-2 (-> this length)) (let* ((a0-3 (-> this data v1-2)) - (a2-0 (-> a0-3 origin)) - ) + (a2-0 (-> a0-3 origin))) (if (and (>= (the-as int a2-0) (-> *kernel-context* relocating-min)) - (< (the-as int a2-0) (-> *kernel-context* relocating-max)) - ) - (&+! (-> a0-3 origin) arg0) - ) - ) - ) - (forall-particles-with-key - this - (lambda ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) - (let ((v1-1 (-> *kernel-context* relocating-offset))) - (set! (-> arg1 key) (the-as sparticle-launch-control (+ (the-as int (-> arg1 key)) v1-1))) - (if (-> arg1 binding) - (set! (-> arg1 binding) (the-as sparticle-launch-state (+ (the-as int (-> arg1 binding)) v1-1))) - ) - ) - 0 - (none) - ) - #t - #t - ) - this - ) + (< (the-as int a2-0) (-> *kernel-context* relocating-max))) + (&+! (-> a0-3 origin) arg0)))) + (forall-particles-with-key this + (lambda ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) + (let ((v1-1 (-> *kernel-context* relocating-offset))) + (set! (-> arg1 key) (the-as sparticle-launch-control (+ (the-as int (-> arg1 key)) v1-1))) + (if (-> arg1 binding) (set! (-> arg1 binding) (the-as sparticle-launch-state (+ (the-as int (-> arg1 binding)) v1-1))))) + 0 + (none)) + #t + #t) + this) (defmethod relocate ((this camera-master) (arg0 int)) - (if (nonzero? (-> this water-drip)) - (&+! (-> this water-drip) arg0) - ) - (the-as camera-master ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this water-drip)) (&+! (-> this water-drip) arg0)) + (the-as camera-master ((method-of-type process relocate) this arg0))) (defmethod relocate ((this time-of-day-proc) (arg0 int)) - (if (nonzero? (-> this stars)) - (&+! (-> this stars) arg0) - ) - (if (nonzero? (-> this sun)) - (&+! (-> this sun) arg0) - ) - (if (nonzero? (-> this green-sun)) - (&+! (-> this green-sun) arg0) - ) - (if (nonzero? (-> this moon)) - (&+! (-> this moon) arg0) - ) - (the-as time-of-day-proc ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this stars)) (&+! (-> this stars) arg0)) + (if (nonzero? (-> this sun)) (&+! (-> this sun) arg0)) + (if (nonzero? (-> this green-sun)) (&+! (-> this green-sun) arg0)) + (if (nonzero? (-> this moon)) (&+! (-> this moon) arg0)) + (the-as time-of-day-proc ((method-of-type process relocate) this arg0))) (defmethod relocate ((this swingpole) (arg0 int)) - (if (nonzero? (-> this root)) - (&+! (-> this root) arg0) - ) - (the-as swingpole ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this root)) (&+! (-> this root) arg0)) + (the-as swingpole ((method-of-type process relocate) this arg0))) (defmethod relocate ((this part-tracker) (arg0 int)) - (if (nonzero? (-> this root)) - (&+! (-> this root) arg0) - ) - (if (nonzero? (-> this part)) - (&+! (-> this part) arg0) - ) - (the-as part-tracker ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this root)) (&+! (-> this root) arg0)) + (if (nonzero? (-> this part)) (&+! (-> this part) arg0)) + (the-as part-tracker ((method-of-type process relocate) this arg0))) (defmethod relocate ((this manipy) (arg0 int)) - (if (nonzero? (-> this joint 0)) - (&+! (-> this joint 0) arg0) - ) - (if (nonzero? (-> this joint 1)) - (&+! (-> this joint 1) arg0) - ) - (if (nonzero? (-> this joint 2)) - (&+! (-> this joint 2) arg0) - ) - (if (nonzero? (-> this joint 3)) - (&+! (-> this joint 3) arg0) - ) - (the-as manipy ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this joint 0)) (&+! (-> this joint 0) arg0)) + (if (nonzero? (-> this joint 1)) (&+! (-> this joint 1) arg0)) + (if (nonzero? (-> this joint 2)) (&+! (-> this joint 2) arg0)) + (if (nonzero? (-> this joint 3)) (&+! (-> this joint 3) arg0)) + (the-as manipy ((method-of-type process-drawable relocate) this arg0))) diff --git a/goal_src/jak1/engine/entity/res-h.gc b/goal_src/jak1/engine/entity/res-h.gc index fb68560f00..d3e904461e 100644 --- a/goal_src/jak1/engine/entity/res-h.gc +++ b/goal_src/jak1/engine/entity/res-h.gc @@ -1,66 +1,57 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: res-h.gc -;; name in dgo: res-h -;; dgos: GAME, ENGINE - ;; res is the very generic resource storage system. See res.gc for more information. ;; DECOMP BEGINS ;; the res-tag describes some data (deftype res-tag (uint128) - ((name symbol :offset 0) ;; name used for lookups - (key-frame float :offset 32) ;; if it has a time value associated with it - (elt-type type :offset 64) ;; the type of the data stored - (data-offset uint16 :offset 96) ;; offset to our data within our lump - (elt-count uint32 :offset 112 :size 15) ;; if we're an array - (inlined? uint8 :offset 127 :size 1) ;; if our data is an inline array or not. - ) - ) + ((name symbol :offset 0) ;; name used for lookups + (key-frame float :offset 32) ;; if it has a time value associated with it + (elt-type type :offset 64) ;; the type of the data stored + (data-offset uint16 :offset 96) ;; offset to our data within our lump + (elt-count uint32 :offset 112 :size 15) ;; if we're an array + (inlined? uint8 :offset 127 :size 1) ;; if our data is an inline array or not. + )) ;; the indices of two res tags. If the specific key-frame time is in between two ;; res-tags, this type is used to return the indices of the first res tag before and after ;; the specified time. (deftype res-tag-pair (uint64) - ((lo int32 :offset 0) - (hi int32 :offset 32) - ) + ((lo int32 :offset 0) + (hi int32 :offset 32)) ;; made-up type ) ;; a res-lump is a collection of res-tags and the associated data. ;; it's used as the base type for entities where the res stores various parameters. (deftype res-lump (basic) - ((length int32) - (allocated-length int32) - (data-base pointer) - (data-top pointer) - (data-size int32) - (extra entity-links) - (tag (pointer res-tag)) - ) + ((length int32) + (allocated-length int32) + (data-base pointer) + (data-top pointer) + (data-size int32) + (extra entity-links) + (tag (pointer res-tag))) (:methods - (new (symbol type int int) _type_) - (get-property-data (_type_ symbol symbol float pointer (pointer res-tag) pointer) pointer :no-virtual) - (get-property-struct (_type_ symbol symbol float structure (pointer res-tag) pointer) structure :no-virtual) - (get-property-value (_type_ symbol symbol float uint128 (pointer res-tag) pointer) uint128 :no-virtual) - (get-property-value-float (_type_ symbol symbol float float (pointer res-tag) pointer) float :no-virtual) - (get-tag-index-data (_type_ int) pointer) - (get-tag-data (_type_ res-tag) pointer) - (allocate-data-memory-for-tag! (_type_ res-tag) res-tag) - (sort! (_type_) _type_) - (add-data! (_type_ res-tag pointer) res-lump) - (add-32bit-data! (_type_ res-tag object) res-lump) - (lookup-tag-idx (_type_ symbol symbol float) res-tag-pair :no-virtual) - (make-property-data (_type_ float res-tag-pair pointer) pointer) - (get-curve-data! (_type_ curve symbol symbol float) symbol) - ) - ) + (new (symbol type int int) _type_) + (get-property-data (_type_ symbol symbol float pointer (pointer res-tag) pointer) pointer :no-virtual) + (get-property-struct (_type_ symbol symbol float structure (pointer res-tag) pointer) structure :no-virtual) + (get-property-value (_type_ symbol symbol float uint128 (pointer res-tag) pointer) uint128 :no-virtual) + (get-property-value-float (_type_ symbol symbol float float (pointer res-tag) pointer) float :no-virtual) + (get-tag-index-data (_type_ int) pointer) + (get-tag-data (_type_ res-tag) pointer) + (allocate-data-memory-for-tag! (_type_ res-tag) res-tag) + (sort! (_type_) _type_) + (add-data! (_type_ res-tag pointer) res-lump) + (add-32bit-data! (_type_ res-tag object) res-lump) + (lookup-tag-idx (_type_ symbol symbol float) res-tag-pair :no-virtual) + (make-property-data (_type_ float res-tag-pair pointer) pointer) + (get-curve-data! (_type_ curve symbol symbol float) symbol))) (define *res-key-string* (new 'global 'string 64 (the-as string #f))) ;; why 64? + (define-extern *res-static-buf* pointer) diff --git a/goal_src/jak1/engine/entity/res.gc b/goal_src/jak1/engine/entity/res.gc index 4db9d0d378..0210eddccd 100644 --- a/goal_src/jak1/engine/entity/res.gc +++ b/goal_src/jak1/engine/entity/res.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/geometry/geometry-h.gc") (require "engine/entity/res-h.gc") (require "engine/gfx/texture/texture.gc") -;; name: res.gc -;; name in dgo: res -;; dgos: GAME, ENGINE - #| res is a generic storage system for not very large data, used mostly for the game entities. These res files store collections of data, which can be as values (int8, int16, int32, int64, uint8, uint16, uint32, uint64, float, vector), or any structure (as references), which are tagged and identified with a res-tag. @@ -37,92 +32,66 @@ This is updated from the entity system used in Crash 2, which had most of these (defmacro res-ref? (tag) "Checks resource tag, and returns #t if resource data is a reference type, #f if it is inlined." - - `(zero? (-> ,tag inlined?)) - ) + `(zero? (-> ,tag inlined?))) ;; DECOMP BEGINS (defmethod print ((this res-tag)) "print a res-tag." - - (if (res-ref? this) - - (format #t "#" - (-> this name) - (-> this key-frame) - (-> this elt-type) - (-> this elt-count) - ) - - (format #t "#" - (-> this name) - (-> this key-frame) - (-> this elt-type) - (-> this elt-count) - ) - ) - - this - ) + (if (res-ref? this) + (format #t + "#" + (-> this name) + (-> this key-frame) + (-> this elt-type) + (-> this elt-count)) + (format #t + "#" + (-> this name) + (-> this key-frame) + (-> this elt-type) + (-> this elt-count))) + this) (defmethod length ((this res-tag)) "get the length in bytes of this tag's resource." - (the int - (if (res-ref? this) - - (* (-> this elt-count) 4) ;; elements are pointers/references to data. - - (* (-> this elt-count) (-> this elt-type size)) - ) - ) - ) + (if (res-ref? this) + (* (-> this elt-count) 4) ;; elements are pointers/references to data. + (* (-> this elt-count) (-> this elt-type size))))) (defmethod get-tag-index-data ((this res-lump) (n int)) "get the data address of the n'th tag." (declare (inline)) - - (&+ (-> this data-base) - (-> this tag n data-offset)) - ) + (&+ (-> this data-base) (-> this tag n data-offset))) (defmethod get-tag-data ((this res-lump) (tag res-tag)) "get the data address of the specified tag." (declare (inline)) - - (&+ (-> this data-base) - (-> tag data-offset)) - ) + (&+ (-> this data-base) (-> tag data-offset))) (defmethod new res-lump ((allocation symbol) (type-to-make type) (data-count int) (data-size int)) "Allocate a new res-lump." - - (let ((this (object-new allocation type-to-make (the int (+ (-> type-to-make size) - (* (1- data-count) (size-of res-tag)) - data-size))))) - (set! (-> this allocated-length) data-count) - (set! (-> this data-size) data-size) - (set! (-> this length) 0) - (set! (-> this data-base) (&-> (-> this tag) data-count)) - (set! (-> this data-top) (&-> (-> this tag) data-count)) - this - ) - ) + (let ((this (object-new allocation + type-to-make + (the int (+ (-> type-to-make size) (* (1- data-count) (size-of res-tag)) data-size))))) + (set! (-> this allocated-length) data-count) + (set! (-> this data-size) data-size) + (set! (-> this length) 0) + (set! (-> this data-base) (&-> (-> this tag) data-count)) + (set! (-> this data-top) (&-> (-> this tag) data-count)) + this)) (defmethod length ((this res-lump)) "get the amount of resources in a res-lump." - - (-> this length) - ) + (-> this length)) (defmethod asize-of ((this res-lump)) "get the allocated size of a res-lump." - - (the int (+ (-> this type psize) ;; psize is used here, but size is used in the allocation? - (* (-> this allocated-length) (size-of res-tag)) - (-> this data-size))) - ) + (the int + (+ (-> this type psize) ;; psize is used here, but size is used in the allocation? + (* (-> this allocated-length) (size-of res-tag)) + (-> this data-size)))) (defmethod inspect ((this res-lump)) (format #t "[~8x] ~A~%" this (-> this type)) @@ -138,16 +107,9 @@ This is updated from the entity system used in Crash 2, which had most of these (print (-> (-> this tag) i)) (format #t " @ #x~X" (get-tag-index-data this i)) (cond - ((res-ref? (-> this tag i)) - (format #t " = ~A~%" (deref basic (get-tag-index-data this i))) - ) - (else - (format #t "~%") - ) - ) - ) - this - ) + ((res-ref? (-> this tag i)) (format #t " = ~A~%" (deref basic (get-tag-index-data this i)))) + (else (format #t "~%")))) + this) (defmethod lookup-tag-idx ((this res-lump) (name-sym symbol) (mode symbol) (time float)) "Look up the index of the tag containing with the given name and timestamp. @@ -163,127 +125,80 @@ This is updated from the entity system used in Crash 2, which had most of these If things go wrong, returns a negative number" (local-vars (tag-idx int)) ;; for some unknown reason, these names cannot be looked up with this method. - (when (or - (= name-sym 'id) - (= name-sym 'aid) - (= name-sym 'trans) - (= name-sym 'rot) - (= name-sym 'nav-mesh) - (= name-sym 'process-type) - (= name-sym 'task) - ) - (crash!) - ) - + (when (or (= name-sym 'id) + (= name-sym 'aid) + (= name-sym 'trans) + (= name-sym 'rot) + (= name-sym 'nav-mesh) + (= name-sym 'process-type) + (= name-sym 'task)) + (crash!)) ;; check that we are valid. - (if (or (not this) (zero? this) (<= (-> this length) 0)) - (return (the res-tag-pair -1)) - ) - + (if (or (not this) (zero? this) (<= (-> this length) 0)) (return (the res-tag-pair -1))) ;; these are the outputs of the function. (let ((hi-tag-idx-out -1) - (lo-tag-idx-out -1) - ) + (lo-tag-idx-out -1)) ;; this value is the index of the most recently passed tag with an "invalid" timestamp (let ((most-recent-invalid-time-idx -1) ;; read 8 chars of the name we want - (type-chars (-> (the-as (pointer uint64) (-> (symbol->string name-sym) data)) 0)) - ) - + (type-chars (-> (the-as (pointer uint64) (-> (symbol->string name-sym) data)) 0))) ;; now we will do a binary search. The names are stored in ascending order if you ;; treat the first 8 chars as an integer ;; min/max are inclusive. (let ((max-search (+ (-> this length) -1)) - (min-search 0) - ) + (min-search 0)) ;; inclusive, so >= is correct (while (>= max-search min-search) ;; check in the middle of the range to bisect it. (let* ((check-idx (+ min-search (/ (- max-search min-search) 2))) ;; subtract the two words. The sign of this tells us if we are too high or too low - (diff (- type-chars - (-> (the-as (pointer uint64) (-> (symbol->string (-> (-> this tag) check-idx name)) data)) 0) - ) - ) - ) + (diff (- type-chars (-> (the-as (pointer uint64) (-> (symbol->string (-> (-> this tag) check-idx name)) data)) 0)))) (cond ((zero? diff) ;; perfect match! we are done, set the tag-idx and get out of here. (set! tag-idx check-idx) - (goto cfg-32) - ) + (goto cfg-32)) (else ;; didn't match. pick the appropriate half of the remaining tags - (if (< (the-as int diff) 0) - (set! max-search (+ check-idx -1)) - (set! min-search (+ check-idx 1)) - ) - ) - ) - ) - ) - ) + (if (< (the-as int diff) 0) (set! max-search (+ check-idx -1)) (set! min-search (+ check-idx 1)))))))) ;; got to the end of the loop without finding the answer. Set a negative tag (set! tag-idx -1) - (label cfg-32) - (if (< tag-idx 0) - (return (the res-tag-pair tag-idx)) - ) - + (if (< tag-idx 0) (return (the res-tag-pair tag-idx))) ;; if there are multiple tags with the same name and different timesteps, we can't be sure which we ended on. ;; this loop brings us to the first tag with the correct name. (while (and (> tag-idx 0) - (= type-chars - (-> (the-as (pointer uint64) (-> (symbol->string (-> (-> this tag) (+ tag-idx -1) name)) data)) 0) - ) - ) - (+! tag-idx -1) - ) - + (= type-chars (-> (the-as (pointer uint64) (-> (symbol->string (-> (-> this tag) (+ tag-idx -1) name)) data)) 0))) + (+! tag-idx -1)) ;; in 'base mode, we just want the earliest tag with the right name. ;; tags are in increasing timestamps, so we found it! (if (= mode 'base) - (begin - ;; both lo and hi are the same - (set! lo-tag-idx-out tag-idx) - (set! hi-tag-idx-out tag-idx) - (goto cfg-73) - ) - ) - + (begin + ;; both lo and hi are the same + (set! lo-tag-idx-out tag-idx) + (set! hi-tag-idx-out tag-idx) + (goto cfg-73))) ;; next we will iterate through tags with the right name and find the one(s) with the right timestamp ;; interp-tag-idx is the index of tag-ptr always ;; (the fact that they keep a pointer to a tag and not actually load the tag makes it seem like ;; they ran into some 128-bit integer issues here...) (let ((interp-tag-idx tag-idx) - (tag-ptr (&-> (-> this tag) tag-idx)) - ) + (tag-ptr (&-> (-> this tag) tag-idx))) ;; loop, until we reach another name or the end of the table - (while (not (or - (>= interp-tag-idx (-> this length)) - ;; < is correct here because we are incrementing and names get larger - (< type-chars - (-> (the-as (pointer uint64) (-> (symbol->string (-> tag-ptr 0 name)) data)) 0) - ) - ) - ) + (while (not (or (>= interp-tag-idx (-> this length)) + ;; < is correct here because we are incrementing and names get larger + (< type-chars (-> (the-as (pointer uint64) (-> (symbol->string (-> tag-ptr 0 name)) data)) 0)))) (cond ;; The checks above only made sure that the first 8 chars were correct. ;; This skips items with matching first 8 chars, but differences after that. - ((!= name-sym (-> tag-ptr 0 name)) - ) - + ((!= name-sym (-> tag-ptr 0 name))) ;; check for exact match ((= (-> tag-ptr 0 key-frame) time) ;; in all cases, just return the exact match. (begin - (set! lo-tag-idx-out interp-tag-idx) - (set! hi-tag-idx-out interp-tag-idx) - (goto cfg-73) - ) - ) - + (set! lo-tag-idx-out interp-tag-idx) + (set! hi-tag-idx-out interp-tag-idx) + (goto cfg-73))) ;; check for being not far enough ((and (>= time (-> tag-ptr 0 key-frame)) (!= mode 'exact)) ;; in all cases, except for exact, we'll want to remember this. @@ -291,136 +206,74 @@ This is updated from the entity system used in Crash 2, which had most of these (set! lo-tag-idx-out interp-tag-idx) (set! hi-tag-idx-out interp-tag-idx) ;; also remember if we hit an invalid one - (if (= (-> tag-ptr 0 key-frame) -1000000000.0) - (set! most-recent-invalid-time-idx interp-tag-idx) - ) - ) - + (if (= (-> tag-ptr 0 key-frame) -1000000000.0) (set! most-recent-invalid-time-idx interp-tag-idx))) ;; check for being too far (passed the time) ((< time (-> tag-ptr 0 key-frame)) (begin - ;; if we're interpolation mode and valid, set the high one. - ;; not sure what the invalid time thing is about. - (if (and (!= lo-tag-idx-out most-recent-invalid-time-idx) (= mode 'interp)) - (set! hi-tag-idx-out interp-tag-idx) - ) - (goto cfg-73) - ) - ) - ) - + ;; if we're interpolation mode and valid, set the high one. + ;; not sure what the invalid time thing is about. + (if (and (!= lo-tag-idx-out most-recent-invalid-time-idx) (= mode 'interp)) (set! hi-tag-idx-out interp-tag-idx)) + (goto cfg-73)))) ;; advance to next tag (+! interp-tag-idx 1) - (set! tag-ptr (&-> tag-ptr 1)) - ) - ) - ) + (set! tag-ptr (&-> tag-ptr 1))))) (label cfg-73) ;; end: return the tags. - (the-as res-tag-pair - (logior - (logand #xffffffff (the-as uint lo-tag-idx-out)) - (the-as uint (shl hi-tag-idx-out 32)) - ) - ) - ) - ) + (the-as res-tag-pair (logior (logand #xffffffff (the-as uint lo-tag-idx-out)) (the-as uint (shl hi-tag-idx-out 32)))))) (defmacro make-res-int-data (interp elt-count buf src-lo src-hi ty) `(let ((fixed-pt (the int (* 4096.0 ,interp)))) (dotimes (i ,elt-count) - (set! (deref ,ty ,buf 0) (ash (+ (* (deref ,ty ,src-lo i) (- 4096 fixed-pt)) - (* (deref ,ty ,src-hi i) fixed-pt)) - -12)) - ) - buf - ) - ) + (set! (deref ,ty ,buf 0) (ash (+ (* (deref ,ty ,src-lo i) (- 4096 fixed-pt)) (* (deref ,ty ,src-hi i) fixed-pt)) -12))) + buf)) (defmethod make-property-data ((this res-lump) (time float) (tag-pair res-tag-pair) (buf pointer)) "Returns (a pointer to) the value data of a property with the tag-pair. If tag-pair does not represent an exact point in the timeline, then the data is interpolated based on time with the result written into buf. buf must have enough space to copy all of the data. Otherwise, simply returns an address to the resource binary." - (let* ((tag-lo (-> this tag (-> tag-pair lo))) (tag-hi (-> this tag (-> tag-pair hi))) - (elt-count (-> tag-lo elt-count)) - ) + (elt-count (-> tag-lo elt-count))) (cond - ((res-ref? tag-lo) - (get-tag-data this tag-lo) - ) + ((res-ref? tag-lo) (get-tag-data this tag-lo)) ((or (not buf) (= (-> tag-pair lo) (-> tag-pair hi)) (!= elt-count (-> tag-hi elt-count)) (!= (-> tag-lo elt-type) (-> tag-hi elt-type))) - (get-tag-data this tag-lo) - ) + (get-tag-data this tag-lo)) (else - (let ((interp (/ (- time (-> tag-lo key-frame)) - (- (-> tag-hi key-frame) (-> tag-lo key-frame)))) ;; DBZ - (src-lo (get-tag-data this tag-lo)) - (src-hi (get-tag-data this tag-hi)) - ) - (case (-> tag-lo elt-type symbol) - (('float) + (let ((interp (/ (- time (-> tag-lo key-frame)) (- (-> tag-hi key-frame) (-> tag-lo key-frame)))) ;; DBZ + (src-lo (get-tag-data this tag-lo)) + (src-hi (get-tag-data this tag-hi))) + (case (-> tag-lo elt-type symbol) + (('float) + (dotimes (i elt-count) + (set! (deref float buf 0) (+ (* (deref float src-lo i) (- 1.0 interp)) (* (deref float src-hi i) interp)))) + buf) + (('integer 'sinteger 'uinteger 'int64 'uint64) (make-res-int-data interp elt-count buf src-lo src-hi uint64)) + (('int8) (make-res-int-data interp elt-count buf src-lo src-hi int8)) + (('uint8) (make-res-int-data interp elt-count buf src-lo src-hi uint8)) + (('int16) (make-res-int-data interp elt-count buf src-lo src-hi int16)) + (('uint16) (make-res-int-data interp elt-count buf src-lo src-hi uint16)) + (('int32) (make-res-int-data interp elt-count buf src-lo src-hi int32)) + (('uint32) (make-res-int-data interp elt-count buf src-lo src-hi uint32)) + (('vector) + (rlet ((vf1 :class vf) + (vf2 :class vf) + (vf3 :class vf) + (vf4 :class vf)) + (.mov vf3 interp) + (.mov vf4 (- 1.0 interp)) (dotimes (i elt-count) - (set! (deref float buf 0) (+ (* (deref float src-lo i) (- 1.0 interp)) - (* (deref float src-hi i) interp) - )) - ) - buf - ) - (('integer 'sinteger 'uinteger 'int64 'uint64) - (make-res-int-data interp elt-count buf src-lo src-hi uint64) - ) - (('int8) - (make-res-int-data interp elt-count buf src-lo src-hi int8) - ) - (('uint8) - (make-res-int-data interp elt-count buf src-lo src-hi uint8) - ) - (('int16) - (make-res-int-data interp elt-count buf src-lo src-hi int16) - ) - (('uint16) - (make-res-int-data interp elt-count buf src-lo src-hi uint16) - ) - (('int32) - (make-res-int-data interp elt-count buf src-lo src-hi int32) - ) - (('uint32) - (make-res-int-data interp elt-count buf src-lo src-hi uint32) - ) - (('vector) - (rlet ((vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (.mov vf3 interp) - (.mov vf4 (- 1.0 interp)) - (dotimes (i elt-count) - (.lvf vf1 (&deref int128 src-lo i)) - (.lvf vf2 (&deref int128 src-hi i)) - (.mul.x.vf vf1 vf1 vf4) - (.mul.x.vf vf2 vf2 vf3) - (.add.vf vf1 vf1 vf2) - (.svf (&deref int128 buf i) vf1) - ) - ) - buf - ) - (else - (get-tag-data this tag-lo) - ) - ) - ) - ) - ) - ) - ) + (.lvf vf1 (&deref int128 src-lo i)) + (.lvf vf2 (&deref int128 src-hi i)) + (.mul.x.vf vf1 vf1 vf4) + (.mul.x.vf vf2 vf2 vf3) + (.add.vf vf1 vf1 vf2) + (.svf (&deref int128 buf i) vf1))) + buf) + (else (get-tag-data this tag-lo)))))))) (defmethod get-property-data ((this res-lump) (name symbol) (mode symbol) (time float) (default pointer) (tag-addr (pointer res-tag)) (buf-addr pointer)) "Returns an address to a given property's data at a specific time stamp, or default on error. @@ -428,24 +281,13 @@ This is updated from the entity system used in Crash 2, which had most of these default is the default result returned in the case of an error. tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode." - (let ((tag-pair (lookup-tag-idx this name mode time))) - (cond - ((< (the-as int tag-pair) 0) - (empty) - ) - (else - (set! default (make-property-data this time tag-pair buf-addr)) - (if tag-addr - (set! (-> tag-addr) (-> this tag (-> tag-pair lo))) - ) - ) - ) - ) - default - ) - - + (cond + ((< (the-as int tag-pair) 0) (empty)) + (else + (set! default (make-property-data this time tag-pair buf-addr)) + (if tag-addr (set! (-> tag-addr) (-> this tag (-> tag-pair lo))))))) + default) (defmethod get-property-struct ((this res-lump) (name symbol) (mode symbol) (time float) (default structure) (tag-addr (pointer res-tag)) (buf-addr pointer)) "Returns a given struct property's value at a specific time stamp, or default on error. @@ -453,30 +295,15 @@ This is updated from the entity system used in Crash 2, which had most of these default is the default result returned in the case of an error. tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode." - (let ((tag-pair (lookup-tag-idx this name mode time))) - (cond - ((< (the-as int tag-pair) 0) - (empty) - ) - (else - (set! default (the-as structure (make-property-data this time tag-pair buf-addr))) - (let ((tag (-> this tag (-> tag-pair lo)))) - (if tag-addr - (set! (-> tag-addr 0) tag) - ) - (if (res-ref? tag) - (set! default (deref structure default)) - (empty) - ) - ) - ) - ) - ) - default - ) - - + (cond + ((< (the-as int tag-pair) 0) (empty)) + (else + (set! default (the-as structure (make-property-data this time tag-pair buf-addr))) + (let ((tag (-> this tag (-> tag-pair lo)))) + (if tag-addr (set! (-> tag-addr 0) tag)) + (if (res-ref? tag) (set! default (deref structure default)) (empty)))))) + default) (defmethod get-property-value ((this res-lump) (name symbol) (mode symbol) (time float) (default uint128) (tag-addr (pointer res-tag)) (buf-addr pointer)) "Returns a given value property's value at a specific time stamp, or default on error. @@ -484,131 +311,80 @@ This is updated from the entity system used in Crash 2, which had most of these default is the default result returned in the case of an error. tag-addr is an address to a res-tag. The current base tag is written to this. Ignored if tag-addr is #f buf-addr is an address to the data buffer used to write interpolated data to. It must have enough space! Only necessary for 'interp mode." - (let ((tag-pair (lookup-tag-idx this name mode time))) - (cond - ((< (the-as int tag-pair) 0) - ) - (else - (let* ((tag (-> this tag (-> tag-pair lo))) - (tag-type (-> tag elt-type)) - (data (make-property-data this time tag-pair buf-addr)) - ) - (if tag-addr - (set! (-> tag-addr 0) tag) - ) - (cond - ((type-type? tag-type uinteger) - (case (-> tag elt-type size) - ((1) (set! default (the-as uint128 (deref uint8 data)))) - ((2) (set! default (the-as uint128 (deref uint16 data)))) - ((4) (set! default (the-as uint128 (deref uint32 data)))) - ((16) (set! default (the-as uint128 (deref uint128 data)))) - (else (set! default (the-as uint128 (deref uint64 data)))) - ) - ) - ((type-type? tag-type integer) - (case (-> tag elt-type size) - ((1) (set! default (the-as uint128 (deref int8 data)))) - ((2) (set! default (the-as uint128 (deref int16 data)))) - ((4) (set! default (the-as uint128 (deref int32 data)))) - ((16) (set! default (the-as uint128 (deref uint128 data)))) - (else (set! default (the-as uint128 (deref uint64 data)))) - ) - ) - ((type-type? tag-type float) - (set! default (the-as uint128 (deref float data))) - ) - (else - ) - ) - ) - ) - ) - ) - default - ) - + (cond + ((< (the-as int tag-pair) 0)) + (else + (let* ((tag (-> this tag (-> tag-pair lo))) + (tag-type (-> tag elt-type)) + (data (make-property-data this time tag-pair buf-addr))) + (if tag-addr (set! (-> tag-addr 0) tag)) + (cond + ((type-type? tag-type uinteger) + (case (-> tag elt-type size) + ((1) (set! default (the-as uint128 (deref uint8 data)))) + ((2) (set! default (the-as uint128 (deref uint16 data)))) + ((4) (set! default (the-as uint128 (deref uint32 data)))) + ((16) (set! default (the-as uint128 (deref uint128 data)))) + (else (set! default (the-as uint128 (deref uint64 data)))))) + ((type-type? tag-type integer) + (case (-> tag elt-type size) + ((1) (set! default (the-as uint128 (deref int8 data)))) + ((2) (set! default (the-as uint128 (deref int16 data)))) + ((4) (set! default (the-as uint128 (deref int32 data)))) + ((16) (set! default (the-as uint128 (deref uint128 data)))) + (else (set! default (the-as uint128 (deref uint64 data)))))) + ((type-type? tag-type float) (set! default (the-as uint128 (deref float data)))) + (else)))))) + default) (defmethod get-property-value-float ((this res-lump) (name symbol) (mode symbol) (time float) (default float) (tag-addr (pointer res-tag)) (buf-addr pointer)) "same as get-property-value but float type is checked first?" - (let ((tag-pair (lookup-tag-idx this name mode time))) - (cond - ((< (the-as int tag-pair) 0) - (empty) - ) - (else - (let* ((tag (-> this tag (-> tag-pair lo))) - (tag-type (-> tag elt-type)) - (data (make-property-data this time tag-pair buf-addr)) - ) - (if tag-addr - (set! (-> tag-addr 0) tag) - ) - (cond - ((type-type? tag-type float) - (set! default (deref float data)) - ) - ((type-type? tag-type uinteger) - (case (-> tag elt-type size) - ((1) (set! default (the float (deref uint8 data)))) - ((2) (set! default (the float (deref uint16 data)))) - ((4) (set! default (the float (deref uint32 data)))) - ((16) (set! default (the float (deref uint128 data)))) - (else (set! default (the float (deref uint64 data)))) - ) - ) - ((type-type? tag-type integer) - (case (-> tag elt-type size) - ((1) (set! default (the float (deref int8 data)))) - ((2) (set! default (the float (deref int16 data)))) - ((4) (set! default (the float (deref int32 data)))) - ((16) (set! default (the float (deref uint128 data)))) - (else (set! default (the float (deref uint64 data)))) - ) - ) - (else - (empty) - ) - ) - ) - ) - ) - ) - default - ) + (cond + ((< (the-as int tag-pair) 0) (empty)) + (else + (let* ((tag (-> this tag (-> tag-pair lo))) + (tag-type (-> tag elt-type)) + (data (make-property-data this time tag-pair buf-addr))) + (if tag-addr (set! (-> tag-addr 0) tag)) + (cond + ((type-type? tag-type float) (set! default (deref float data))) + ((type-type? tag-type uinteger) + (case (-> tag elt-type size) + ((1) (set! default (the float (deref uint8 data)))) + ((2) (set! default (the float (deref uint16 data)))) + ((4) (set! default (the float (deref uint32 data)))) + ((16) (set! default (the float (deref uint128 data)))) + (else (set! default (the float (deref uint64 data)))))) + ((type-type? tag-type integer) + (case (-> tag elt-type size) + ((1) (set! default (the float (deref int8 data)))) + ((2) (set! default (the float (deref int16 data)))) + ((4) (set! default (the float (deref int32 data)))) + ((16) (set! default (the float (deref uint128 data)))) + (else (set! default (the float (deref uint64 data)))))) + (else (empty))))))) + default) (defmethod sort! ((this res-lump)) "Sort all tags based on name, then key-frame." - (let ((tags-sorted -1)) - (while (nonzero? tags-sorted) - (set! tags-sorted 0) - (let ((i 0) - (tag-stop (+ (-> this length) -2)) - ) - (while (>= tag-stop i) - (let* ((tag1 (-> this tag i)) - (tag2 (-> this tag (1+ i))) - (tag-name1 (deref uint64 (-> (symbol->string (-> tag1 name)) data))) - (tag-name2 (deref uint64 (-> (symbol->string (-> tag2 name)) data))) - ) - (when (or (< tag-name2 tag-name1) - (and (= tag-name1 tag-name2) - (< (-> tag2 key-frame) (-> tag1 key-frame)))) - (1+! tags-sorted) - (set! (-> this tag i) tag2) - (set! (-> this tag (1+ i)) tag1) - ) - ) - (1+! i) - ) - ) - ) - ) - this - ) + (while (nonzero? tags-sorted) + (set! tags-sorted 0) + (let ((i 0) + (tag-stop (+ (-> this length) -2))) + (while (>= tag-stop i) + (let* ((tag1 (-> this tag i)) + (tag2 (-> this tag (1+ i))) + (tag-name1 (deref uint64 (-> (symbol->string (-> tag1 name)) data))) + (tag-name2 (deref uint64 (-> (symbol->string (-> tag2 name)) data)))) + (when (or (< tag-name2 tag-name1) (and (= tag-name1 tag-name2) (< (-> tag2 key-frame) (-> tag1 key-frame)))) + (1+! tags-sorted) + (set! (-> this tag i) tag2) + (set! (-> this tag (1+ i)) tag1))) + (1+! i))))) + this) (defmethod allocate-data-memory-for-tag! ((this res-lump) (arg0 res-tag)) "Find space for the data described by arg0 in `this`. @@ -617,7 +393,6 @@ This is updated from the entity system used in Crash 2, which had most of these it will be reused. Alignment will be at least 8 bytes. If the input tag has elt-count = 0, it will return a tag for elt-count = 1." (local-vars (resource-mem pointer)) - ;; first, look up the tag to see if it already exists in this res-lump (let ((tag-pair (lookup-tag-idx this (-> arg0 name) 'exact (-> arg0 key-frame)))) (let ((existing-tag (-> this tag (-> tag-pair lo)))) @@ -625,56 +400,36 @@ This is updated from the entity system used in Crash 2, which had most of these (if (and (>= (the-as int tag-pair) 0) (!= (-> arg0 key-frame) (-> arg0 key-frame)) ;; check for NaN ) - (set! tag-pair (new 'static 'res-tag-pair :lo #xffffffff :hi #xffffffff)) - ) - + (set! tag-pair (new 'static 'res-tag-pair :lo #xffffffff :hi #xffffffff))) ;; modify the input to have at least one element - (if (zero? (-> arg0 elt-count)) - (set! (-> arg0 elt-count) 1) - ) - + (if (zero? (-> arg0 elt-count)) (set! (-> arg0 elt-count) 1)) ;; next, we try to find some memory (let ((data-size (length arg0))) ;; size in bytes to store the data. (cond - ((and (>= (the-as int tag-pair) 0) - (>= (the-as uint (length existing-tag)) (the-as uint data-size)) - ) + ((and (>= (the-as int tag-pair) 0) (>= (the-as uint (length existing-tag)) (the-as uint data-size))) ;; we have enough memory in the existing tag. ;; so we can just reuse it. (set! resource-mem (&+ (-> this data-base) (-> existing-tag data-offset))) - ;; but we want at least 8 byte alignment. If this fails, allocate with 16-byte alignment from the top. (when (nonzero? (logand (the-as int resource-mem) 7)) (set! resource-mem (logand -16 (&+ (-> this data-top) 15))) - (set! (-> this data-top) (&+ resource-mem data-size)) - ) - ) + (set! (-> this data-top) (&+ resource-mem data-size)))) (else ;; the existing tag wasn't there, or it wasn't big enough. ;; just allocate new memory. (set! resource-mem (logand -16 (&+ (-> this data-top) 15))) - (set! (-> this data-top) (&+ resource-mem data-size)) - ) - ) - + (set! (-> this data-top) (&+ resource-mem data-size)))) ;; set our data offset. (set! (-> arg0 data-offset) (&- resource-mem (the-as uint (-> this data-base)))) - ;; check for overflow of the data memory ;; this will leave things in a bad state. - (when (>= (the-as int (&+ resource-mem data-size)) - (the-as int (&+ (-> this data-base) (-> this data-size))) - ) - (format 0 "ERROR: attempting to a new tag ~`res-tag`P data of #x~X bytes to ~A, but data memory is full.~%" - arg0 - data-size - this - ) - (return (the-as res-tag #f)) - ) - ) - ) - + (when (>= (the-as int (&+ resource-mem data-size)) (the-as int (&+ (-> this data-base) (-> this data-size)))) + (format 0 + "ERROR: attempting to a new tag ~`res-tag`P data of #x~X bytes to ~A, but data memory is full.~%" + arg0 + data-size + this) + (return (the-as res-tag #f))))) ;; next step is to add us to the list of tags. (cond ((< (the-as int tag-pair) 0) @@ -682,60 +437,38 @@ This is updated from the entity system used in Crash 2, which had most of these (cond ((>= (-> this length) (-> this allocated-length)) ;; but there isn't room for another tag. - (format 0 "ERROR: attempting to a new tag ~`res-tag`P to ~A, but tag memory is full.~%" - arg0 - this - ) - (return (the-as res-tag #f)) - ) + (format 0 "ERROR: attempting to a new tag ~`res-tag`P to ~A, but tag memory is full.~%" arg0 this) + (return (the-as res-tag #f))) (else ;; allocate a new tag and sort, so the binary search works properly. (set! (-> this tag (-> this length)) arg0) (set! (-> this length) (+ (-> this length) 1)) - (sort! this) - ) - ) - ) + (sort! this)))) (else ;; reuse the existing tag. - (set! (-> this tag (-> tag-pair lo)) arg0) - ) - ) - ) - arg0 - ) + (set! (-> this tag (-> tag-pair lo)) arg0)))) + arg0) (defmethod add-data! ((this res-lump) (arg0 res-tag) (arg1 pointer)) "Given a tag and a pointer to its data, copy it to this res-lump. This doesn't seem to do the right thing if the given tag is a non-inline tag with > 1 element." - ;; get a tag for this lump with memory for the given tag. (let ((new-tag (allocate-data-memory-for-tag! this arg0))) (when new-tag ;; get pointer to new tag's memory (let* ((v1-2 this) (a1-1 new-tag) - (tag-mem (&+ (-> v1-2 data-base) (-> a1-1 data-offset))) - ) + (tag-mem (&+ (-> v1-2 data-base) (-> a1-1 data-offset)))) (cond ((zero? (-> new-tag inlined?)) ;; this seems wrong, it should loop over the length maybe? (length new-tag) ;; unused? - (set! (-> (the-as (pointer pointer) tag-mem)) arg1) - ) + (set! (-> (the-as (pointer pointer) tag-mem)) arg1)) (else ;; otherwise, copy the memory. - (let ((a2-1 (length new-tag))) - (mem-copy! tag-mem arg1 a2-1) - ) - ) - ) - ) - ) - ) - this - ) + (let ((a2-1 (length new-tag))) (mem-copy! tag-mem arg1 a2-1))))))) + this) (defmethod add-32bit-data! ((this res-lump) (arg0 res-tag) (arg1 object)) "Add a single 32-bit value using add-data." @@ -749,178 +482,103 @@ This is updated from the entity system used in Crash 2, which had most of these ) (add-data! this a1-4 (& sv-16)) ) - |# + |# ) (defmethod get-curve-data! ((this res-lump) (curve-target curve) (points-name symbol) (knots-name symbol) (time float)) "Read curve data and write it to curve-target. Return #t if both control points and knots data was succesfully read, #f otherwise." - (let ((result #f)) - ;; there's some macro here - (let* ((points-tag (new 'static 'res-tag)) - (curve-data (get-property-data this points-name 'exact time (the pointer #f) (& points-tag) *res-static-buf*))) - + ;; there's some macro here + (let* ((points-tag (new 'static 'res-tag)) + (curve-data (get-property-data this points-name 'exact time (the pointer #f) (& points-tag) *res-static-buf*))) + (when curve-data + (set! (-> curve-target cverts) (the-as (inline-array vector) curve-data)) + (set! (-> curve-target num-cverts) (the int (-> points-tag elt-count))) + (when (< MAX_CURVE_CONTROL_POINTS (-> curve-target num-cverts)) + (format 0 + "ERROR: curve has ~D control points--only ~D are allowed. Increase MAX-CURVE-CONTROL-POINTS or shorten the curve.~%" + (-> curve-target num-cverts) + MAX_CURVE_CONTROL_POINTS) + (set! (-> curve-target num-cverts) MAX_CURVE_CONTROL_POINTS)) + (let ((knots-tag (new 'static 'res-tag))) + (set! curve-data (get-property-data this knots-name 'exact time (the pointer #f) (& knots-tag) *res-static-buf*)) (when curve-data - (set! (-> curve-target cverts) (the-as (inline-array vector) curve-data)) - (set! (-> curve-target num-cverts) (the int (-> points-tag elt-count))) - - (when (< MAX_CURVE_CONTROL_POINTS (-> curve-target num-cverts)) - (format 0 "ERROR: curve has ~D control points--only ~D are allowed. Increase MAX-CURVE-CONTROL-POINTS or shorten the curve.~%" - (-> curve-target num-cverts) - MAX_CURVE_CONTROL_POINTS - ) - (set! (-> curve-target num-cverts) MAX_CURVE_CONTROL_POINTS) - ) - - (let ((knots-tag (new 'static 'res-tag))) - (set! curve-data (get-property-data this knots-name 'exact time (the pointer #f) (& knots-tag) *res-static-buf*)) - - (when curve-data - (set! (-> curve-target knots) (the (pointer float) curve-data)) - (set! (-> curve-target num-knots) (the int (-> knots-tag elt-count))) - (set! result #t) - ) - ) - ) - ) - result - ) - ) + (set! (-> curve-target knots) (the (pointer float) curve-data)) + (set! (-> curve-target num-knots) (the int (-> knots-tag elt-count))) + (set! result #t))))) + result)) (define-extern part-group-pointer? (function pointer symbol)) + (declare-type nav-mesh basic) + (declare-type collide-mesh basic) + (defmethod mem-usage ((this res-lump) (block memory-usage-block) (flags int)) "Get the memory usage of this lump and its data" (local-vars (sv-16 int)) - ;; get the name and ID (let ((mem-use-id (mem-usage-id res)) - (mem-use-name "res") - ) + (mem-use-name "res")) (cond - ((nonzero? (logand flags 256)) - (set! mem-use-id (mem-usage-id camera)) - (set! mem-use-name "camera") - ) - ((nonzero? (logand flags 64)) - (set! mem-use-id (mem-usage-id entity)) - (set! mem-use-name "entity") - ) - ((nonzero? (logand flags 128)) - (set! mem-use-id (mem-usage-id ambient)) - (set! mem-use-name "ambient") - ) - ((nonzero? (logand flags 512)) - (set! mem-use-id (mem-usage-id art-joint-geo)) - (set! mem-use-name "art-joint-geo") - ) - ) - + ((nonzero? (logand flags 256)) (set! mem-use-id (mem-usage-id camera)) (set! mem-use-name "camera")) + ((nonzero? (logand flags 64)) (set! mem-use-id (mem-usage-id entity)) (set! mem-use-name "entity")) + ((nonzero? (logand flags 128)) (set! mem-use-id (mem-usage-id ambient)) (set! mem-use-name "ambient")) + ((nonzero? (logand flags 512)) (set! mem-use-id (mem-usage-id art-joint-geo)) (set! mem-use-name "art-joint-geo"))) ;; set up the block (set! (-> block length) (max (-> block length) (+ mem-use-id 1))) (set! (-> block data mem-use-id name) mem-use-name) - ;; the lump counts as 1 in the count field (set! (-> block data mem-use-id count) (+ (-> block data mem-use-id count) 1)) - ;; add the size of the lump itself. (let ((obj-size (asize-of this))) - (set! (-> block data mem-use-id used) - (+ (-> block data mem-use-id used) obj-size) - ) - (set! (-> block data mem-use-id total) - (+ (-> block data mem-use-id total) (logand -16 (+ obj-size 15))) - ) - ) - + (set! (-> block data mem-use-id used) (+ (-> block data mem-use-id used) obj-size)) + (set! (-> block data mem-use-id total) (+ (-> block data mem-use-id total) (logand -16 (+ obj-size 15))))) ;; add the tags (dotimes (tag-idx (-> this length)) (when (zero? (-> this tag tag-idx inlined?)) (let* ((a1-4 this) (a0-15 tag-idx) - (tag-data - (the-as basic - (-> (the-as (pointer uint32) (&+ (-> a1-4 data-base) (-> a1-4 tag a0-15 data-offset))) - ) - ) - ) - ) + (tag-data (the-as basic (-> (the-as (pointer uint32) (&+ (-> a1-4 data-base) (-> a1-4 tag a0-15 data-offset))))))) ;; ref to non-inline data. Inline data would have been counted above. (when (not (part-group-pointer? (the-as pointer tag-data))) (case (-> (the-as basic tag-data) type) - ((symbol type) - ) + ((symbol type)) ((string) ;; strings add like a normal object. ;; this seems identical to the else case. (set! (-> block length) (max (-> block length) (+ mem-use-id 1))) (set! (-> block data mem-use-id name) mem-use-name) - (set! (-> block data mem-use-id count) - (+ (-> block data mem-use-id count) 1) - ) + (set! (-> block data mem-use-id count) (+ (-> block data mem-use-id count) 1)) (let ((v1-47 (asize-of tag-data))) - (set! (-> block data mem-use-id used) - (+ (-> block data mem-use-id used) v1-47) - ) - (set! (-> block data mem-use-id total) - (+ (-> block data mem-use-id total) (logand -16 (+ v1-47 15))) - ) - ) - ) + (set! (-> block data mem-use-id used) (+ (-> block data mem-use-id used) v1-47)) + (set! (-> block data mem-use-id total) (+ (-> block data mem-use-id total) (logand -16 (+ v1-47 15)))))) ((nav-mesh collide-mesh) ;; these have their own implementation. - (mem-usage tag-data block flags) - ) + (mem-usage tag-data block flags)) ((array) (set! (-> block length) (max (-> block length) (+ mem-use-id 1))) (set! (-> block data mem-use-id name) mem-use-name) - (set! (-> block data mem-use-id count) - (+ (-> block data mem-use-id count) 1) - ) + (set! (-> block data mem-use-id count) (+ (-> block data mem-use-id count) 1)) (let ((v1-63 (asize-of (the-as (array object) tag-data)))) - (set! (-> block data mem-use-id used) - (+ (-> block data mem-use-id used) v1-63) - ) - (set! (-> block data mem-use-id total) - (+ (-> block data mem-use-id total) (logand -16 (+ v1-63 15))) - ) - ) + (set! (-> block data mem-use-id used) (+ (-> block data mem-use-id used) v1-63)) + (set! (-> block data mem-use-id total) (+ (-> block data mem-use-id total) (logand -16 (+ v1-63 15))))) ;; call mem usage on all of our children. (set! sv-16 0) (while (< sv-16 (-> (the-as array tag-data) length)) (let ((a0-58 (-> (the-as (array object) tag-data) sv-16))) - ((method-of-type (rtype-of a0-58) mem-usage) a0-58 block flags) - ) - (set! sv-16 (+ sv-16 1)) - ) - ) + ((method-of-type (rtype-of a0-58) mem-usage) a0-58 block flags)) + (set! sv-16 (+ sv-16 1)))) (else ;; unknown type. ;; we assume its nothing fancy and use the asize of. (set! (-> block length) (max (-> block length) (+ mem-use-id 1))) (set! (-> block data mem-use-id name) mem-use-name) - (set! (-> block data mem-use-id count) - (+ (-> block data mem-use-id count) 1) - ) + (set! (-> block data mem-use-id count) (+ (-> block data mem-use-id count) 1)) (let ((v1-88 (asize-of tag-data))) - (set! (-> block data mem-use-id used) - (+ (-> block data mem-use-id used) v1-88) - ) - (set! (-> block data mem-use-id total) - (+ (-> block data mem-use-id total) (logand -16 (+ v1-88 15))) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (the-as res-lump 0) - ) - + (set! (-> block data mem-use-id used) (+ (-> block data mem-use-id used) v1-88)) + (set! (-> block data mem-use-id total) (+ (-> block data mem-use-id total) (logand -16 (+ v1-88 15)))))))))))) + (the-as res-lump 0)) (define *res-static-buf* (malloc 'global 128)) @@ -932,81 +590,26 @@ This is updated from the entity system used in Crash 2, which had most of these (defmacro res-lump-data (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (time -1000000000.0)) "Helper macro to get data from a res-lump without interpolation." - `(the-as ,type ((method-of-type res-lump get-property-data) - ,lump - ,name - 'interp - ,time - (the-as pointer #f) - ,tag-ptr - *res-static-buf* - ) - ) - ) + `(the-as ,type + ((method-of-type res-lump get-property-data) ,lump ,name 'interp ,time (the-as pointer #f) ,tag-ptr *res-static-buf*))) (defmacro res-lump-data-exact (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (time 0.0)) "Helper macro to get start of data from a res-lump." - `(the-as ,type ((method-of-type res-lump get-property-data) - ,lump - ,name - 'exact - ,time - (the-as pointer #f) - ,tag-ptr - *res-static-buf* - ) - ) - ) + `(the-as ,type + ((method-of-type res-lump get-property-data) ,lump ,name 'exact ,time (the-as pointer #f) ,tag-ptr *res-static-buf*))) (defmacro res-lump-struct (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (time -1000000000.0)) - `(the-as ,type ((method-of-type res-lump get-property-struct) - ,lump - ,name - 'interp - ,time - (the-as structure #f) - ,tag-ptr - *res-static-buf* - ) - ) - ) + `(the-as ,type + ((method-of-type res-lump get-property-struct) ,lump ,name 'interp ,time (the-as structure #f) ,tag-ptr *res-static-buf*))) (defmacro res-lump-struct-exact (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (time 0.0)) - `(the-as ,type ((method-of-type res-lump get-property-struct) - ,lump - ,name - 'exact - ,time - (the-as structure #f) - ,tag-ptr - *res-static-buf* - ) - ) - ) + `(the-as ,type + ((method-of-type res-lump get-property-struct) ,lump ,name 'exact ,time (the-as structure #f) ,tag-ptr *res-static-buf*))) (defmacro res-lump-value (lump name type &key (tag-ptr (the-as (pointer res-tag) #f)) &key (default (the-as uint128 0)) &key (time -1000000000.0)) "Helper macro to get a value from a res-lump with no interpolation." - `(the-as ,type ((method-of-type res-lump get-property-value) - ,lump - ,name - 'interp - ,time - ,default - ,tag-ptr - *res-static-buf* - ) - ) - ) + `(the-as ,type ((method-of-type res-lump get-property-value) ,lump ,name 'interp ,time ,default ,tag-ptr *res-static-buf*))) (defmacro res-lump-float (lump name &key (tag-ptr (the-as (pointer res-tag) #f)) &key (default 0.0) &key (time -1000000000.0)) "Helper macro to get a float from a res-lump with no interpolation." - `((method-of-type res-lump get-property-value-float) - ,lump - ,name - 'interp - ,time - ,default - ,tag-ptr - *res-static-buf* - ) - ) + `((method-of-type res-lump get-property-value-float) ,lump ,name 'interp ,time ,default ,tag-ptr *res-static-buf*)) diff --git a/goal_src/jak1/engine/game/effect-control-h.gc b/goal_src/jak1/engine/game/effect-control-h.gc index f77761352d..d632ed3289 100644 --- a/goal_src/jak1/engine/game/effect-control-h.gc +++ b/goal_src/jak1/engine/game/effect-control-h.gc @@ -1,39 +1,29 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/res.gc") (require "engine/game/game-h.gc") - -;; name: effect-control-h.gc -;; name in dgo: effect-control-h -;; dgos: GAME, ENGINE - (define-extern effect-param->sound-spec (function sound-spec (pointer float) int sound-spec)) ;; DECOMP BEGINS (deftype effect-control (basic) - ((process process-drawable) - (flags uint32) - (last-frame-group art-joint-anim) - (last-frame-num float) - (channel-offset int32) - (res res-lump) - (name (pointer res-tag)) - (param uint32) - ) + ((process process-drawable) + (flags uint32) + (last-frame-group art-joint-anim) + (last-frame-num float) + (channel-offset int32) + (res res-lump) + (name (pointer res-tag)) + (param uint32)) (:methods - (new (symbol type process-drawable) _type_) - (effect-control-method-9 (_type_) none) - (effect-control-method-10 (_type_ symbol float int) object) - (effect-control-method-11 (_type_ symbol float int basic pat-surface) none) - (effect-control-method-12 (_type_ symbol float int basic sound-name) int) - (set-channel-offset! (_type_ int) none) - (effect-control-method-14 (_type_ float float float) none) - ) - ) - + (new (symbol type process-drawable) _type_) + (effect-control-method-9 (_type_) none) + (effect-control-method-10 (_type_ symbol float int) object) + (effect-control-method-11 (_type_ symbol float int basic pat-surface) none) + (effect-control-method-12 (_type_ symbol float int basic sound-name) int) + (set-channel-offset! (_type_ int) none) + (effect-control-method-14 (_type_ float float float) none))) (defmethod new effect-control ((allocation symbol) (type-to-make type) (arg0 process-drawable)) (cond @@ -41,17 +31,10 @@ (let ((v0-1 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> v0-1 process) arg0) (set! (-> v0-1 last-frame-group) #f) - v0-1 - ) - ) - (else - (the-as effect-control #f) - ) - ) - ) + v0-1)) + (else (the-as effect-control #f)))) (defmethod set-channel-offset! ((this effect-control) (arg0 int)) (set! (-> this channel-offset) arg0) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/game/effect-control.gc b/goal_src/jak1/engine/game/effect-control.gc index 0a6987891f..847cb9cd6a 100644 --- a/goal_src/jak1/engine/game/effect-control.gc +++ b/goal_src/jak1/engine/game/effect-control.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/merc/merc-death.gc") (require "engine/common-obs/process-drawable-h.gc") -;; name: effect-control.gc -;; name in dgo: effect-control -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define *footstep-surface* 448) @@ -17,158 +12,76 @@ (define *debug-effect-control* #f) (defun sound-name-with-material ((arg0 symbol) (arg1 pat-surface) (arg2 string)) - (string->sound-name (string-format "~S-~S~S" arg0 (enum->string pat-material (-> arg1 material)) arg2)) - ) + (string->sound-name (string-format "~S-~S~S" arg0 (enum->string pat-material (-> arg1 material)) arg2))) (defun effect-param->sound-spec ((arg0 sound-spec) (arg1 (pointer float)) (arg2 int)) (while (> arg2 0) (case (the int (-> arg1 0)) - ((3) - (logior! (-> arg0 mask) (sound-mask volume)) - (set! (-> arg0 volume) (the int (* 10.24 (-> arg1 1)))) - ) - ((4) - (logior! (-> arg0 mask) (sound-mask volume)) - (+! (-> arg0 volume) (the int (* 10.24 (* (-> arg1 1) (rand-vu))))) - ) - ((5) - (logior! (-> arg0 mask) (sound-mask pitch)) - (set! (-> arg0 pitch-mod) (the int (* 1524.0 (-> arg1 1)))) - ) + ((3) (logior! (-> arg0 mask) (sound-mask volume)) (set! (-> arg0 volume) (the int (* 10.24 (-> arg1 1))))) + ((4) (logior! (-> arg0 mask) (sound-mask volume)) (+! (-> arg0 volume) (the int (* 10.24 (* (-> arg1 1) (rand-vu)))))) + ((5) (logior! (-> arg0 mask) (sound-mask pitch)) (set! (-> arg0 pitch-mod) (the int (* 1524.0 (-> arg1 1))))) ((6) (logior! (-> arg0 mask) (sound-mask pitch)) - (+! (-> arg0 pitch-mod) (the int (* 1524.0 (* (-> arg1 1) (rand-vu))))) - ) - ((9) - (logior! (-> arg0 mask) (sound-mask bend)) - (set! (-> arg0 bend) (the int (* 327.66998 (-> arg1 1)))) - ) - ((10) - (logior! (-> arg0 mask) (sound-mask bend)) - (+! (-> arg0 bend) (the int (* 327.66998 (* (-> arg1 1) (rand-vu))))) - ) - ((11) - (logior! (-> arg0 mask) (sound-mask fo-min)) - (set! (-> arg0 fo-min) (the int (-> arg1 1))) - ) - ((12) - (logior! (-> arg0 mask) (sound-mask fo-max)) - (set! (-> arg0 fo-max) (the int (-> arg1 1))) - ) - ((13) - (logior! (-> arg0 mask) (sound-mask fo-curve)) - (set! (-> arg0 fo-curve) (the int (-> arg1 1))) - ) - ((19) - (set! (-> arg0 priority) (the int (-> arg1 1))) - ) - ) + (+! (-> arg0 pitch-mod) (the int (* 1524.0 (* (-> arg1 1) (rand-vu)))))) + ((9) (logior! (-> arg0 mask) (sound-mask bend)) (set! (-> arg0 bend) (the int (* 327.66998 (-> arg1 1))))) + ((10) (logior! (-> arg0 mask) (sound-mask bend)) (+! (-> arg0 bend) (the int (* 327.66998 (* (-> arg1 1) (rand-vu)))))) + ((11) (logior! (-> arg0 mask) (sound-mask fo-min)) (set! (-> arg0 fo-min) (the int (-> arg1 1)))) + ((12) (logior! (-> arg0 mask) (sound-mask fo-max)) (set! (-> arg0 fo-max) (the int (-> arg1 1)))) + ((13) (logior! (-> arg0 mask) (sound-mask fo-curve)) (set! (-> arg0 fo-curve) (the int (-> arg1 1)))) + ((19) (set! (-> arg0 priority) (the int (-> arg1 1))))) (+! arg2 -2) - (set! arg1 (&-> arg1 2)) - ) - arg0 - ) + (set! arg1 (&-> arg1 2))) + arg0) (defmethod effect-control-method-9 ((this effect-control)) (let* ((a0-1 (-> this process skel)) (v1-3 (if (< (-> this channel-offset) (-> a0-1 active-channels)) - (-> a0-1 root-channel (-> this channel-offset)) - (the-as joint-control-channel #f) - ) - ) - ) + (-> a0-1 root-channel (-> this channel-offset)) + (the-as joint-control-channel #f)))) (cond ((and v1-3 (-> v1-3 frame-group)) (let* ((s5-0 (-> v1-3 frame-group)) - (f30-0 (+ (* (-> v1-3 frame-num) (-> s5-0 artist-step)) (-> s5-0 artist-base))) - ) + (f30-0 (+ (* (-> v1-3 frame-num) (-> s5-0 artist-step)) (-> s5-0 artist-base)))) (let ((a0-3 (-> a0-1 root-channel 0 num-func))) (cond ((!= s5-0 (-> this last-frame-group)) (set! (-> this res) (-> s5-0 extra)) (let ((v1-6 (-> (lookup-tag-idx (-> s5-0 extra) 'effect-name 'base -1000000000.0) lo))) - (set! (-> this name) (if (>= (the-as int v1-6) 0) - (&-> (-> s5-0 extra tag) v1-6) - (the-as (pointer res-tag) #f) - ) - ) - ) - (if (and (-> this name) (= (-> this name 0 key-frame) -1000000000.0)) - (set! (-> this name) (&-> (-> this name) 1)) - ) - (effect-control-method-14 this f30-0 f30-0 f30-0) - ) - ((or (not (-> this name)) (= f30-0 (-> this last-frame-num))) - ) + (set! (-> this name) (if (>= (the-as int v1-6) 0) (&-> (-> s5-0 extra tag) v1-6) (the-as (pointer res-tag) #f)))) + (if (and (-> this name) (= (-> this name 0 key-frame) -1000000000.0)) (set! (-> this name) (&-> (-> this name) 1))) + (effect-control-method-14 this f30-0 f30-0 f30-0)) + ((or (not (-> this name)) (= f30-0 (-> this last-frame-num)))) (else - (let ((f28-0 (-> this last-frame-num)) - (f26-0 f30-0) - ) - (cond - ((= a0-3 num-func-seek!) - (let ((f0-6 (+ (* (-> v1-3 param 0) (-> s5-0 artist-step)) (-> s5-0 artist-base)))) + (let ((f28-0 (-> this last-frame-num)) + (f26-0 f30-0)) + (cond + ((= a0-3 num-func-seek!) + (let ((f0-6 (+ (* (-> v1-3 param 0) (-> s5-0 artist-step)) (-> s5-0 artist-base)))) + (cond + ((< f26-0 f28-0) (if (>= f28-0 f0-6) (effect-control-method-14 this f26-0 f28-0 f30-0))) + (else (if (>= f0-6 f28-0) (effect-control-method-14 this f28-0 f26-0 f30-0)))))) + ((= a0-3 num-func-loop!) + (cond + ((>= (-> v1-3 param 0) 0.0) (cond ((< f26-0 f28-0) - (if (>= f28-0 f0-6) - (effect-control-method-14 this f26-0 f28-0 f30-0) - ) - ) - (else - (if (>= f0-6 f28-0) - (effect-control-method-14 this f28-0 f26-0 f30-0) - ) - ) - ) - ) - ) - ((= a0-3 num-func-loop!) - (cond - ((>= (-> v1-3 param 0) 0.0) - (cond - ((< f26-0 f28-0) - (effect-control-method-14 this f28-0 9999999.0 f30-0) - (effect-control-method-14 this -100000000.0 f26-0 9999999.0) - ) - (else - (effect-control-method-14 this f28-0 f26-0 f30-0) - ) - ) - ) - ((< f28-0 f26-0) - (effect-control-method-14 this f26-0 9999999.0 f30-0) - (effect-control-method-14 this -100000000.0 f28-0 9999999.0) - ) - (else - (effect-control-method-14 this f26-0 f28-0 f30-0) - ) - ) - ) - ((= a0-3 num-func-+!) - (if (>= (-> v1-3 param 0) 0.0) - (effect-control-method-14 this f28-0 f26-0 f30-0) - (effect-control-method-14 this f26-0 f28-0 f30-0) - ) - ) - ((= a0-3 num-func-identity) - (effect-control-method-14 this f30-0 f30-0 f30-0) - ) - ) - ) - ) - ) - ) + (effect-control-method-14 this f28-0 9999999.0 f30-0) + (effect-control-method-14 this -100000000.0 f26-0 9999999.0)) + (else (effect-control-method-14 this f28-0 f26-0 f30-0)))) + ((< f28-0 f26-0) + (effect-control-method-14 this f26-0 9999999.0 f30-0) + (effect-control-method-14 this -100000000.0 f28-0 9999999.0)) + (else (effect-control-method-14 this f26-0 f28-0 f30-0)))) + ((= a0-3 num-func-+!) + (if (>= (-> v1-3 param 0) 0.0) + (effect-control-method-14 this f28-0 f26-0 f30-0) + (effect-control-method-14 this f26-0 f28-0 f30-0))) + ((= a0-3 num-func-identity) (effect-control-method-14 this f30-0 f30-0 f30-0))))))) (set! (-> this last-frame-group) s5-0) - (set! (-> this last-frame-num) f30-0) - ) - ) - (else - (set! (-> this last-frame-group) #f) - ) - ) - ) + (set! (-> this last-frame-num) f30-0))) + (else (set! (-> this last-frame-group) #f)))) 0 - (none) - ) + (none)) (defmethod effect-control-method-14 ((this effect-control) (arg0 float) (arg1 float) (arg2 float)) ;; note: this check was added. I believe in the original game name could be false, and then the @@ -180,26 +93,13 @@ (let ((f0-0 (-> s2-0 0 key-frame))) (when (or (and (< f0-0 arg1) (< arg0 f0-0)) (= f0-0 arg2)) (let* ((a0-1 this) - (t9-0 (method-of-object a0-1 effect-control-method-10)) - (v1-7 (-> this res)) - (a1-1 (-> s2-0 0)) - ) - (t9-0 - a0-1 - (the-as symbol (-> (the-as (pointer uint32) (&+ (-> v1-7 data-base) (-> a1-1 data-offset))))) - f0-0 - -1 - ) - ) - ) - ) - (set! s2-0 (&-> s2-0 1)) - ) - ) - ) + (t9-0 (method-of-object a0-1 effect-control-method-10)) + (v1-7 (-> this res)) + (a1-1 (-> s2-0 0))) + (t9-0 a0-1 (the-as symbol (-> (the-as (pointer uint32) (&+ (-> v1-7 data-base) (-> a1-1 data-offset))))) f0-0 -1)))) + (set! s2-0 (&-> s2-0 1))))) 0 - (none) - ) + (none)) (defmethod effect-control-method-10 ((this effect-control) (arg0 symbol) (arg1 float) (arg2 int)) (local-vars @@ -211,40 +111,21 @@ (sv-240 symbol) (sv-256 symbol) (sv-272 symbol) - (sv-288 res-lump) - ) + (sv-288 res-lump)) (let ((s3-0 (-> arg0 value)) (s5-0 (cond ((< arg2 0) - (let ((v0-0 (get-property-value - (-> this res) - 'effect-joint - 'exact - arg1 - (the-as uint128 0) - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - ) - (if (zero? v0-0) - 0 - (the-as int (+ v0-0 1)) - ) - ) - ) - (else - (empty) - arg2 - ) - ) - ) - ) + (let ((v0-0 (get-property-value (-> this res) + 'effect-joint + 'exact + arg1 + (the-as uint128 0) + (the-as (pointer res-tag) #f) + *res-static-buf*))) + (if (zero? v0-0) 0 (the-as int (+ v0-0 1))))) + (else (empty) arg2)))) (when (logtest? (-> this flags) 1) - (if (send-event (-> this process) 'effect arg0 arg1 s5-0) - (return (the-as object 0)) - ) - ) + (if (send-event (-> this process) 'effect arg0 arg1 s5-0) (return (the-as object 0)))) (let ((v1-10 (symbol->string arg0))) (cond ((and (= (-> v1-10 data 0) 101) @@ -253,67 +134,37 @@ (= (-> v1-10 data 3) 101) (= (-> v1-10 data 4) 99) (= (-> v1-10 data 5) 116) - (= (-> v1-10 data 6) 45) - ) + (= (-> v1-10 data 6) 45)) (let* ((s3-1 (-> this process root)) - (v1-14 (if (and (nonzero? s3-1) (type-type? (-> s3-1 type) collide-shape-moving)) - s3-1 - ) - ) - (t1-1 (if v1-14 - (the-as int (-> (the-as collide-shape-moving v1-14) ground-pat)) - *footstep-surface* - ) - ) - ) - (effect-control-method-11 this arg0 arg1 s5-0 (-> this res) (the-as pat-surface t1-1)) - ) - ) + (v1-14 (if (and (nonzero? s3-1) (type-type? (-> s3-1 type) collide-shape-moving)) s3-1)) + (t1-1 (if v1-14 (the-as int (-> (the-as collide-shape-moving v1-14) ground-pat)) *footstep-surface*))) + (effect-control-method-11 this arg0 arg1 s5-0 (-> this res) (the-as pat-surface t1-1)))) ((let ((v1-18 (symbol->string arg0))) (and (= (-> v1-18 data 0) 103) (= (-> v1-18 data 1) 114) (= (-> v1-18 data 2) 111) (= (-> v1-18 data 3) 117) (= (-> v1-18 data 4) 112) - (= (-> v1-18 data 5) 45) - ) - ) - (set! s3-0 (cond - ((zero? s3-0) - (let ((v0-5 (lookup-part-group-pointer-by-name (symbol->string arg0)))) - (when v0-5 - (set! (-> arg0 value) v0-5) - (set! s3-0 (-> v0-5 0)) - ) - ) - s3-0 - ) - (else - (-> (the-as (pointer sparticle-launch-group) s3-0) 0) - ) - ) - ) + (= (-> v1-18 data 5) 45))) + (set! s3-0 + (cond + ((zero? s3-0) + (let ((v0-5 (lookup-part-group-pointer-by-name (symbol->string arg0)))) + (when v0-5 + (set! (-> arg0 value) v0-5) + (set! s3-0 (-> v0-5 0)))) + s3-0) + (else (-> (the-as (pointer sparticle-launch-group) s3-0) 0)))) (when (and (nonzero? s3-0) (= (-> (the-as sparticle-launch-group s3-0) type) sparticle-launch-group)) (if *debug-effect-control* - (format - #t - "(~5D) effect group ~A ~A frame ~F joint ~D~%" - (current-time) - (-> this process name) - arg0 - arg1 - s5-0 - ) - ) + (format #t "(~5D) effect group ~A ~A frame ~F joint ~D~%" (current-time) (-> this process name) arg0 arg1 s5-0)) (let ((s4-1 (get-process *default-dead-pool* part-tracker #x4000))) (when s4-1 (let ((t9-7 (method-of-type part-tracker activate))) - (t9-7 (the-as part-tracker s4-1) (-> this process) 'part-tracker (the-as pointer #x70004000)) - ) + (t9-7 (the-as part-tracker s4-1) (-> this process) 'part-tracker (the-as pointer #x70004000))) (let ((s2-1 run-function-in-process) (s1-0 s4-1) - (s0-0 part-tracker-init) - ) + (s0-0 part-tracker-init)) (set! sv-160 -1) (set! sv-176 (the-as symbol #f)) (set! sv-192 (the-as symbol #f)) @@ -327,68 +178,26 @@ sv-176 sv-192 sv-208 - t3-0 - ) - ) - ) - (-> s4-1 ppointer) - ) - ) - ) - ) - ((= arg0 'camera-shake) - (activate! *camera-smush-control* 819.2 37 600 1.0 0.995) - ) - ((zero? s3-0) - (effect-control-method-12 this arg0 arg1 s5-0 (-> this res) (string->sound-name (symbol->string arg0))) - ) + t3-0))) + (-> s4-1 ppointer))))) + ((= arg0 'camera-shake) (activate! *camera-smush-control* 819.2 37 600 1.0 0.995)) + ((zero? s3-0) (effect-control-method-12 this arg0 arg1 s5-0 (-> this res) (string->sound-name (symbol->string arg0)))) ((= (-> (the-as basic s3-0) type) sparticle-launcher) (if *debug-effect-control* - (format - #t - "(~5D) effect part ~A ~A frame ~F joint ~D~%" - (current-time) - (-> this process name) - arg0 - arg1 - s5-0 - ) - ) - (format - #t - "-----> (~5D) effect part ~A ~A frame ~F joint ~D~%" - (current-time) - (-> this process name) - arg0 - arg1 - s5-0 - ) - (launch-particles - (the-as sparticle-launcher s3-0) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data s5-0)) - ) - ) + (format #t "(~5D) effect part ~A ~A frame ~F joint ~D~%" (current-time) (-> this process name) arg0 arg1 s5-0)) + (format #t "-----> (~5D) effect part ~A ~A frame ~F joint ~D~%" (current-time) (-> this process name) arg0 arg1 s5-0) + (launch-particles (the-as sparticle-launcher s3-0) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data s5-0)))) ((= (-> (the-as basic s3-0) type) sparticle-launch-group) (if *debug-effect-control* - (format - #t - "(~5D) effect group ~A ~A frame ~F joint ~D~%" - (current-time) - (-> this process name) - arg0 - arg1 - s5-0 - ) - ) + (format #t "(~5D) effect group ~A ~A frame ~F joint ~D~%" (current-time) (-> this process name) arg0 arg1 s5-0)) (let ((s4-3 (get-process *default-dead-pool* part-tracker #x4000))) (when s4-3 (let ((t9-19 (method-of-type part-tracker activate))) - (t9-19 (the-as part-tracker s4-3) (-> this process) 'part-tracker (the-as pointer #x70004000)) - ) + (t9-19 (the-as part-tracker s4-3) (-> this process) 'part-tracker (the-as pointer #x70004000))) (let ((s2-3 run-function-in-process) (s1-2 s4-3) - (s0-2 part-tracker-init) - ) + (s0-2 part-tracker-init)) (set! sv-224 -1) (set! sv-240 (the-as symbol #f)) (set! sv-256 (the-as symbol #f)) @@ -402,605 +211,249 @@ sv-240 sv-256 sv-272 - t3-1 - ) - ) - ) - (-> s4-3 ppointer) - ) - ) - ) + t3-1))) + (-> s4-3 ppointer)))) ((= (-> (the-as basic s3-0) type) sound-spec) - (sound-play-by-spec - (the-as sound-spec s3-0) - (new-sound-id) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data s5-0)) - ) - ) + (sound-play-by-spec (the-as sound-spec s3-0) + (new-sound-id) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data s5-0)))) ((= (-> (the-as basic s3-0) type) death-info) (let ((v1-67 (-> this process draw))) (let ((a1-42 (-> (the-as death-info s3-0) vertex-skip)) - (a0-55 - (max - 2 - (the-as int (/ (-> (the-as death-info s3-0) timer) (the-as uint (the int (-> *display* time-factor))))) - ) - ) - ) + (a0-55 (max 2 (the-as int (/ (-> (the-as death-info s3-0) timer) (the-as uint (the int (-> *display* time-factor)))))))) (when (= (-> *setting-control* current video-mode) 'pal) - (if (< (the-as uint 1) a1-42) - (set! a1-42 (/ (the-as uint (* (the-as uint 50) a1-42)) (the-as uint 60))) - ) - ) + (if (< (the-as uint 1) a1-42) (set! a1-42 (/ (the-as uint (* (the-as uint 50) a1-42)) (the-as uint 60))))) (let ((a2-29 (-> *display* frames (-> *display* last-screen) frame run-time))) (cond - ((< 9000 a2-29) - (set! a1-42 (* a1-42 4)) - ) - ((< 7000 a2-29) - (set! a1-42 (* a1-42 2)) - ) - ) - ) + ((< 9000 a2-29) (set! a1-42 (* a1-42 4))) + ((< 7000 a2-29) (set! a1-42 (* a1-42 2))))) (set! (-> v1-67 death-vertex-skip) a1-42) (set! (-> v1-67 death-effect) (-> (the-as death-info s3-0) effect)) - (set! (-> v1-67 death-timer) (+ a0-55 1)) - ) + (set! (-> v1-67 death-timer) (+ a0-55 1))) (set! (-> v1-67 death-timer-org) (-> v1-67 death-timer)) - (set! (-> v1-67 death-draw-overlap) (-> (the-as death-info s3-0) overlap)) - ) + (set! (-> v1-67 death-draw-overlap) (-> (the-as death-info s3-0) overlap))) (when (-> (the-as death-info s3-0) sound) (let* ((s2-5 this) (s1-3 (method-of-object s2-5 effect-control-method-12)) - (s0-3 (-> (the-as death-info s3-0) sound)) - ) + (s0-3 (-> (the-as death-info s3-0) sound))) (set! sv-288 (-> this res)) (let ((t1-11 (string->sound-name (symbol->string (-> (the-as death-info s3-0) sound))))) - (s1-3 s2-5 s0-3 arg1 s5-0 sv-288 t1-11) - ) - ) - ) - (send-event (-> this process) 'death-start (the-as death-info s3-0)) - ) - (else - (effect-control-method-12 this arg0 arg1 s5-0 (-> this res) (string->sound-name (symbol->string arg0))) - ) - ) - ) - ) - 0 - ) + (s1-3 s2-5 s0-3 arg1 s5-0 sv-288 t1-11)))) + (send-event (-> this process) 'death-start (the-as death-info s3-0))) + (else (effect-control-method-12 this arg0 arg1 s5-0 (-> this res) (string->sound-name (symbol->string arg0))))))) + 0) (defmethod effect-control-method-11 ((this effect-control) (arg0 symbol) (arg1 float) (arg2 int) (arg3 basic) (arg4 pat-surface)) (local-vars - (sv-48 - (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none) - ) + (sv-48 (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none)) (sv-64 sparticle-system) - (sv-80 - (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none) - ) - (sv-96 sparticle-system) - ) + (sv-80 (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none)) + (sv-96 sparticle-system)) (let ((s1-0 (the-as sound-name #f))) (let ((a0-4 (-> *display* frames (-> *display* last-screen) frame run-time))) (case arg0 - (('effect-walk-step-left 'effect-run-step-left) - (set! s1-0 (sound-name-with-material 'walk arg4 "1")) - ) - (('effect-walk-step-right 'effect-run-step-right) - (set! s1-0 (sound-name-with-material 'walk arg4 "2")) - ) - (('effect-roll) - (set! s1-0 (sound-name-with-material 'roll arg4 "")) - ) - (('effect-slide) - (set! s1-0 (sound-name-with-material 'slide arg4 "")) - ) - (('effect-land) - (set! s1-0 (sound-name-with-material 'land arg4 "")) - ) - (('effect-zoom-land) - (set! s1-0 (sound-name-with-material 'zoom-land arg4 "")) - ) - (('effect-zoom-hit) - (set! s1-0 (sound-name-with-material 'zoom-hit arg4 "")) - ) - (('effect-flut-land) - (set! s1-0 (sound-name-with-material 'flut-land arg4 "")) - ) + (('effect-walk-step-left 'effect-run-step-left) (set! s1-0 (sound-name-with-material 'walk arg4 "1"))) + (('effect-walk-step-right 'effect-run-step-right) (set! s1-0 (sound-name-with-material 'walk arg4 "2"))) + (('effect-roll) (set! s1-0 (sound-name-with-material 'roll arg4 ""))) + (('effect-slide) (set! s1-0 (sound-name-with-material 'slide arg4 ""))) + (('effect-land) (set! s1-0 (sound-name-with-material 'land arg4 ""))) + (('effect-zoom-land) (set! s1-0 (sound-name-with-material 'zoom-land arg4 ""))) + (('effect-zoom-hit) (set! s1-0 (sound-name-with-material 'zoom-hit arg4 ""))) + (('effect-flut-land) (set! s1-0 (sound-name-with-material 'flut-land arg4 ""))) (('effect-land-poof) (when (< a0-4 9000) (let* ((a0-13 this) (t9-8 (method-of-object a0-13 effect-control-method-10)) - (v1-15 (-> arg4 material)) - ) - (t9-8 - a0-13 - (cond - ((= v1-15 (pat-material sand)) - 'group-land-poof-sand - ) - ((= v1-15 (pat-material wood)) - 'group-land-poof-wood - ) - ((= v1-15 (pat-material crwood)) - 'group-land-poof-crwood - ) - ((or (= v1-15 (pat-material tube)) (= v1-15 (pat-material pcmetal))) - 'group-land-poof-pcmetal - ) - ((or (= v1-15 (pat-material metal)) (= v1-15 (pat-material rotate))) - 'group-land-poof-metal - ) - ((= v1-15 (pat-material ice)) - 'group-land-poof-ice - ) - ((= v1-15 (pat-material snow)) - 'group-land-poof-snow - ) - ((= v1-15 (pat-material deepsnow)) - 'group-land-poof-dpsnow - ) - ((= v1-15 (pat-material gravel)) - 'group-land-poof-gravel - ) - ((= v1-15 (pat-material dirt)) - 'group-land-poof-dirt - ) - ((= v1-15 (pat-material stone)) - 'group-land-poof-stone - ) - ((= v1-15 (pat-material waterbottom)) - 'group-land-poof-water - ) - ((= v1-15 (pat-material tar)) - 'group-land-poof-tar - ) - ((= v1-15 (pat-material straw)) - 'group-land-poof-straw - ) - ((= v1-15 (pat-material swamp)) - 'group-land-poof-swamp - ) - ((= v1-15 (pat-material neutral)) - 'group-land-poof-neutral - ) - (else - 'group-land-poof-grass - ) - ) - arg1 - -1 - ) - ) - ) - ) + (v1-15 (-> arg4 material))) + (t9-8 a0-13 + (cond + ((= v1-15 (pat-material sand)) 'group-land-poof-sand) + ((= v1-15 (pat-material wood)) 'group-land-poof-wood) + ((= v1-15 (pat-material crwood)) 'group-land-poof-crwood) + ((or (= v1-15 (pat-material tube)) (= v1-15 (pat-material pcmetal))) 'group-land-poof-pcmetal) + ((or (= v1-15 (pat-material metal)) (= v1-15 (pat-material rotate))) 'group-land-poof-metal) + ((= v1-15 (pat-material ice)) 'group-land-poof-ice) + ((= v1-15 (pat-material snow)) 'group-land-poof-snow) + ((= v1-15 (pat-material deepsnow)) 'group-land-poof-dpsnow) + ((= v1-15 (pat-material gravel)) 'group-land-poof-gravel) + ((= v1-15 (pat-material dirt)) 'group-land-poof-dirt) + ((= v1-15 (pat-material stone)) 'group-land-poof-stone) + ((= v1-15 (pat-material waterbottom)) 'group-land-poof-water) + ((= v1-15 (pat-material tar)) 'group-land-poof-tar) + ((= v1-15 (pat-material straw)) 'group-land-poof-straw) + ((= v1-15 (pat-material swamp)) 'group-land-poof-swamp) + ((= v1-15 (pat-material neutral)) 'group-land-poof-neutral) + (else 'group-land-poof-grass)) + arg1 + -1)))) (('effect-run-poof) (when (< a0-4 9000) (let* ((a0-14 this) (t9-9 (method-of-object a0-14 effect-control-method-10)) - (v1-20 (-> arg4 material)) - ) - (t9-9 - a0-14 - (cond - ((= v1-20 (pat-material sand)) - 'group-run-poof-sand - ) - ((= v1-20 (pat-material wood)) - 'group-run-poof-wood - ) - ((= v1-20 (pat-material crwood)) - 'group-run-poof-crwood - ) - ((or (= v1-20 (pat-material tube)) (= v1-20 (pat-material pcmetal))) - 'group-run-poof-pcmetal - ) - ((or (= v1-20 (pat-material metal)) (= v1-20 (pat-material rotate))) - 'group-run-poof-metal - ) - ((= v1-20 (pat-material ice)) - 'group-run-poof-ice - ) - ((= v1-20 (pat-material snow)) - 'group-run-poof-snow - ) - ((= v1-20 (pat-material deepsnow)) - 'group-run-poof-dpsnow - ) - ((= v1-20 (pat-material gravel)) - 'group-run-poof-gravel - ) - ((= v1-20 (pat-material dirt)) - 'group-run-poof-dirt - ) - ((= v1-20 (pat-material stone)) - 'group-run-poof-stone - ) - ((= v1-20 (pat-material waterbottom)) - 'group-run-poof-water - ) - ((= v1-20 (pat-material tar)) - 'group-run-poof-tar - ) - ((= v1-20 (pat-material straw)) - 'group-run-poof-straw - ) - ((= v1-20 (pat-material swamp)) - 'group-run-poof-swamp - ) - ((= v1-20 (pat-material neutral)) - 'group-run-poof-neutral - ) - (else - 'group-run-poof-grass - ) - ) - arg1 - -1 - ) - ) - ) - ) + (v1-20 (-> arg4 material))) + (t9-9 a0-14 + (cond + ((= v1-20 (pat-material sand)) 'group-run-poof-sand) + ((= v1-20 (pat-material wood)) 'group-run-poof-wood) + ((= v1-20 (pat-material crwood)) 'group-run-poof-crwood) + ((or (= v1-20 (pat-material tube)) (= v1-20 (pat-material pcmetal))) 'group-run-poof-pcmetal) + ((or (= v1-20 (pat-material metal)) (= v1-20 (pat-material rotate))) 'group-run-poof-metal) + ((= v1-20 (pat-material ice)) 'group-run-poof-ice) + ((= v1-20 (pat-material snow)) 'group-run-poof-snow) + ((= v1-20 (pat-material deepsnow)) 'group-run-poof-dpsnow) + ((= v1-20 (pat-material gravel)) 'group-run-poof-gravel) + ((= v1-20 (pat-material dirt)) 'group-run-poof-dirt) + ((= v1-20 (pat-material stone)) 'group-run-poof-stone) + ((= v1-20 (pat-material waterbottom)) 'group-run-poof-water) + ((= v1-20 (pat-material tar)) 'group-run-poof-tar) + ((= v1-20 (pat-material straw)) 'group-run-poof-straw) + ((= v1-20 (pat-material swamp)) 'group-run-poof-swamp) + ((= v1-20 (pat-material neutral)) 'group-run-poof-neutral) + (else 'group-run-poof-grass)) + arg1 + -1)))) (('effect-just-footprint) (let* ((a0-15 this) (t9-10 (method-of-object a0-15 effect-control-method-10)) - (v1-24 (-> arg4 material)) - ) - (t9-10 - a0-15 - (cond - ((= v1-24 (pat-material sand)) - 'group-just-footprint-sand - ) - ((= v1-24 (pat-material wood)) - 'group-just-footprint-wood - ) - ((= v1-24 (pat-material crwood)) - 'group-just-footprint-crwood - ) - ((or (= v1-24 (pat-material tube)) (= v1-24 (pat-material pcmetal))) - 'group-just-footprint-pcmetal - ) - ((or (= v1-24 (pat-material metal)) (= v1-24 (pat-material rotate))) - 'group-just-footprint-metal - ) - ((= v1-24 (pat-material ice)) - 'group-just-footprint-ice - ) - ((= v1-24 (pat-material snow)) - 'group-just-footprint-snow - ) - ((= v1-24 (pat-material deepsnow)) - 'group-just-footprint-dpsnow - ) - ((= v1-24 (pat-material gravel)) - 'group-just-footprint-gravel - ) - ((= v1-24 (pat-material dirt)) - 'group-just-footprint-dirt - ) - ((= v1-24 (pat-material stone)) - 'group-just-footprint-stone - ) - ((= v1-24 (pat-material waterbottom)) - 'group-just-footprint-water - ) - ((= v1-24 (pat-material tar)) - 'group-just-footprint-tar - ) - ((= v1-24 (pat-material straw)) - 'group-just-footprint-straw - ) - ((= v1-24 (pat-material swamp)) - 'group-just-footprint-swamp - ) - ((= v1-24 (pat-material neutral)) - 'group-just-footprint-neutral - ) - (else - 'group-just-footprint-grass - ) - ) - arg1 - -1 - ) - ) - ) + (v1-24 (-> arg4 material))) + (t9-10 a0-15 + (cond + ((= v1-24 (pat-material sand)) 'group-just-footprint-sand) + ((= v1-24 (pat-material wood)) 'group-just-footprint-wood) + ((= v1-24 (pat-material crwood)) 'group-just-footprint-crwood) + ((or (= v1-24 (pat-material tube)) (= v1-24 (pat-material pcmetal))) 'group-just-footprint-pcmetal) + ((or (= v1-24 (pat-material metal)) (= v1-24 (pat-material rotate))) 'group-just-footprint-metal) + ((= v1-24 (pat-material ice)) 'group-just-footprint-ice) + ((= v1-24 (pat-material snow)) 'group-just-footprint-snow) + ((= v1-24 (pat-material deepsnow)) 'group-just-footprint-dpsnow) + ((= v1-24 (pat-material gravel)) 'group-just-footprint-gravel) + ((= v1-24 (pat-material dirt)) 'group-just-footprint-dirt) + ((= v1-24 (pat-material stone)) 'group-just-footprint-stone) + ((= v1-24 (pat-material waterbottom)) 'group-just-footprint-water) + ((= v1-24 (pat-material tar)) 'group-just-footprint-tar) + ((= v1-24 (pat-material straw)) 'group-just-footprint-straw) + ((= v1-24 (pat-material swamp)) 'group-just-footprint-swamp) + ((= v1-24 (pat-material neutral)) 'group-just-footprint-neutral) + (else 'group-just-footprint-grass)) + arg1 + -1))) (('effect-just-poof) (when (< a0-4 9000) (let* ((a0-16 this) (t9-11 (method-of-object a0-16 effect-control-method-10)) - (v1-29 (-> arg4 material)) - ) - (t9-11 - a0-16 - (cond - ((= v1-29 (pat-material sand)) - 'group-just-poof-sand - ) - ((= v1-29 (pat-material wood)) - 'group-just-poof-wood - ) - ((= v1-29 (pat-material crwood)) - 'group-just-poof-crwood - ) - ((or (= v1-29 (pat-material tube)) (= v1-29 (pat-material pcmetal))) - 'group-just-poof-pcmetal - ) - ((or (= v1-29 (pat-material metal)) (= v1-29 (pat-material rotate))) - 'group-just-poof-metal - ) - ((= v1-29 (pat-material ice)) - 'group-just-poof-ice - ) - ((= v1-29 (pat-material snow)) - 'group-just-poof-snow - ) - ((= v1-29 (pat-material deepsnow)) - 'group-just-poof-dpsnow - ) - ((= v1-29 (pat-material gravel)) - 'group-just-poof-gravel - ) - ((= v1-29 (pat-material dirt)) - 'group-just-poof-dirt - ) - ((= v1-29 (pat-material stone)) - 'group-just-poof-stone - ) - ((= v1-29 (pat-material waterbottom)) - 'group-just-poof-water - ) - ((= v1-29 (pat-material tar)) - 'group-just-poof-tar - ) - ((= v1-29 (pat-material straw)) - 'group-just-poof-straw - ) - ((= v1-29 (pat-material swamp)) - 'group-just-poof-swamp - ) - ((= v1-29 (pat-material neutral)) - 'group-just-poof-neutral - ) - (else - 'group-just-poof-grass - ) - ) - arg1 - -1 - ) - ) - ) - ) + (v1-29 (-> arg4 material))) + (t9-11 a0-16 + (cond + ((= v1-29 (pat-material sand)) 'group-just-poof-sand) + ((= v1-29 (pat-material wood)) 'group-just-poof-wood) + ((= v1-29 (pat-material crwood)) 'group-just-poof-crwood) + ((or (= v1-29 (pat-material tube)) (= v1-29 (pat-material pcmetal))) 'group-just-poof-pcmetal) + ((or (= v1-29 (pat-material metal)) (= v1-29 (pat-material rotate))) 'group-just-poof-metal) + ((= v1-29 (pat-material ice)) 'group-just-poof-ice) + ((= v1-29 (pat-material snow)) 'group-just-poof-snow) + ((= v1-29 (pat-material deepsnow)) 'group-just-poof-dpsnow) + ((= v1-29 (pat-material gravel)) 'group-just-poof-gravel) + ((= v1-29 (pat-material dirt)) 'group-just-poof-dirt) + ((= v1-29 (pat-material stone)) 'group-just-poof-stone) + ((= v1-29 (pat-material waterbottom)) 'group-just-poof-water) + ((= v1-29 (pat-material tar)) 'group-just-poof-tar) + ((= v1-29 (pat-material straw)) 'group-just-poof-straw) + ((= v1-29 (pat-material swamp)) 'group-just-poof-swamp) + ((= v1-29 (pat-material neutral)) 'group-just-poof-neutral) + (else 'group-just-poof-grass)) + arg1 + -1)))) (('effect-slide-poof) (let* ((a0-19 this) (t9-12 (method-of-object a0-19 effect-control-method-10)) - (v1-33 (-> arg4 material)) - ) - (t9-12 - a0-19 - (cond - ((= v1-33 (pat-material sand)) - 'group-slide-poof-sand - ) - ((= v1-33 (pat-material wood)) - 'group-slide-poof-wood - ) - ((= v1-33 (pat-material crwood)) - 'group-slide-poof-crwood - ) - ((or (= v1-33 (pat-material tube)) (= v1-33 (pat-material pcmetal))) - 'group-slide-poof-pcmetal - ) - ((or (= v1-33 (pat-material metal)) (= v1-33 (pat-material rotate))) - 'group-slide-poof-metal - ) - ((= v1-33 (pat-material ice)) - 'group-slide-poof-ice - ) - ((= v1-33 (pat-material snow)) - 'group-slide-poof-snow - ) - ((= v1-33 (pat-material deepsnow)) - 'group-slide-poof-dpsnow - ) - ((= v1-33 (pat-material gravel)) - 'group-slide-poof-gravel - ) - ((= v1-33 (pat-material dirt)) - 'group-slide-poof-dirt - ) - ((= v1-33 (pat-material stone)) - 'group-slide-poof-stone - ) - ((= v1-33 (pat-material waterbottom)) - 'group-slide-poof-water - ) - ((= v1-33 (pat-material tar)) - 'group-slide-poof-tar - ) - ((= v1-33 (pat-material straw)) - 'group-slide-poof-straw - ) - ((= v1-33 (pat-material swamp)) - 'group-slide-poof-swamp - ) - ((= v1-33 (pat-material neutral)) - 'group-slide-poof-neutral - ) - (else - 'group-slide-poof-grass - ) - ) - arg1 - -1 - ) - ) - ) + (v1-33 (-> arg4 material))) + (t9-12 a0-19 + (cond + ((= v1-33 (pat-material sand)) 'group-slide-poof-sand) + ((= v1-33 (pat-material wood)) 'group-slide-poof-wood) + ((= v1-33 (pat-material crwood)) 'group-slide-poof-crwood) + ((or (= v1-33 (pat-material tube)) (= v1-33 (pat-material pcmetal))) 'group-slide-poof-pcmetal) + ((or (= v1-33 (pat-material metal)) (= v1-33 (pat-material rotate))) 'group-slide-poof-metal) + ((= v1-33 (pat-material ice)) 'group-slide-poof-ice) + ((= v1-33 (pat-material snow)) 'group-slide-poof-snow) + ((= v1-33 (pat-material deepsnow)) 'group-slide-poof-dpsnow) + ((= v1-33 (pat-material gravel)) 'group-slide-poof-gravel) + ((= v1-33 (pat-material dirt)) 'group-slide-poof-dirt) + ((= v1-33 (pat-material stone)) 'group-slide-poof-stone) + ((= v1-33 (pat-material waterbottom)) 'group-slide-poof-water) + ((= v1-33 (pat-material tar)) 'group-slide-poof-tar) + ((= v1-33 (pat-material straw)) 'group-slide-poof-straw) + ((= v1-33 (pat-material swamp)) 'group-slide-poof-swamp) + ((= v1-33 (pat-material neutral)) 'group-slide-poof-neutral) + (else 'group-slide-poof-grass)) + arg1 + -1))) (('effect-droppings) (let* ((v1-36 (-> arg4 material)) (s0-0 (cond - ((= v1-36 (pat-material sand)) - (-> *part-id-table* 95) - ) - ((= v1-36 (pat-material wood)) - (-> *part-id-table* 97) - ) - ((= v1-36 (pat-material crwood)) - (-> *part-id-table* 99) - ) - ((or (= v1-36 (pat-material tube)) (= v1-36 (pat-material pcmetal))) - (-> *part-id-table* 2248) - ) - ((or (= v1-36 (pat-material metal)) (= v1-36 (pat-material rotate))) - (-> *part-id-table* 2334) - ) - ((= v1-36 (pat-material ice)) - (-> *part-id-table* 2249) - ) - ((= v1-36 (pat-material snow)) - (-> *part-id-table* 2250) - ) - ((= v1-36 (pat-material deepsnow)) - (-> *part-id-table* 2251) - ) - ((= v1-36 (pat-material gravel)) - (-> *part-id-table* 2252) - ) - ((= v1-36 (pat-material dirt)) - (-> *part-id-table* 2253) - ) - ((= v1-36 (pat-material stone)) - (-> *part-id-table* 98) - ) - ((= v1-36 (pat-material waterbottom)) - (-> *part-id-table* 2254) - ) - ((= v1-36 (pat-material tar)) - (-> *part-id-table* 2255) - ) - ((= v1-36 (pat-material straw)) - (-> *part-id-table* 2256) - ) - ((= v1-36 (pat-material swamp)) - (-> *part-id-table* 2257) - ) - ((= v1-36 (pat-material neutral)) - (-> *part-id-table* 2773) - ) - (else - (-> *part-id-table* 96) - ) - ) - ) - ) + ((= v1-36 (pat-material sand)) (-> *part-id-table* 95)) + ((= v1-36 (pat-material wood)) (-> *part-id-table* 97)) + ((= v1-36 (pat-material crwood)) (-> *part-id-table* 99)) + ((or (= v1-36 (pat-material tube)) (= v1-36 (pat-material pcmetal))) (-> *part-id-table* 2248)) + ((or (= v1-36 (pat-material metal)) (= v1-36 (pat-material rotate))) (-> *part-id-table* 2334)) + ((= v1-36 (pat-material ice)) (-> *part-id-table* 2249)) + ((= v1-36 (pat-material snow)) (-> *part-id-table* 2250)) + ((= v1-36 (pat-material deepsnow)) (-> *part-id-table* 2251)) + ((= v1-36 (pat-material gravel)) (-> *part-id-table* 2252)) + ((= v1-36 (pat-material dirt)) (-> *part-id-table* 2253)) + ((= v1-36 (pat-material stone)) (-> *part-id-table* 98)) + ((= v1-36 (pat-material waterbottom)) (-> *part-id-table* 2254)) + ((= v1-36 (pat-material tar)) (-> *part-id-table* 2255)) + ((= v1-36 (pat-material straw)) (-> *part-id-table* 2256)) + ((= v1-36 (pat-material swamp)) (-> *part-id-table* 2257)) + ((= v1-36 (pat-material neutral)) (-> *part-id-table* 2773)) + (else (-> *part-id-table* 96))))) (when (nonzero? s0-0) (set! sv-48 sp-launch-particles-var) (set! sv-64 *sp-particle-system-2d*) (let ((a2-36 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2))) (a3-6 #f) (t0-1 #f) - (t1-1 1.0) - ) - (sv-48 sv-64 s0-0 a2-36 (the-as sparticle-launch-state a3-6) (the-as sparticle-launch-control t0-1) t1-1) - ) - ) - ) - ) + (t1-1 1.0)) + (sv-48 sv-64 s0-0 a2-36 (the-as sparticle-launch-state a3-6) (the-as sparticle-launch-control t0-1) t1-1))))) (('effect-jump-droppings) (let* ((v1-61 (-> arg4 material)) (s0-1 (cond - ((= v1-61 (pat-material sand)) - (-> *part-id-table* 106) - ) - ((= v1-61 (pat-material wood)) - (-> *part-id-table* 2258) - ) - ((= v1-61 (pat-material crwood)) - (-> *part-id-table* 2259) - ) - ((or (= v1-61 (pat-material tube)) (= v1-61 (pat-material pcmetal))) - (-> *part-id-table* 2260) - ) - ((or (= v1-61 (pat-material metal)) (= v1-61 (pat-material rotate))) - (-> *part-id-table* 2335) - ) - ((= v1-61 (pat-material ice)) - (-> *part-id-table* 2261) - ) - ((= v1-61 (pat-material snow)) - (-> *part-id-table* 2262) - ) - ((= v1-61 (pat-material deepsnow)) - (-> *part-id-table* 2263) - ) - ((= v1-61 (pat-material gravel)) - (-> *part-id-table* 2264) - ) - ((= v1-61 (pat-material dirt)) - (-> *part-id-table* 2265) - ) - ((= v1-61 (pat-material stone)) - (-> *part-id-table* 2266) - ) - ((= v1-61 (pat-material waterbottom)) - (-> *part-id-table* 2267) - ) - ((= v1-61 (pat-material tar)) - (-> *part-id-table* 2268) - ) - ((= v1-61 (pat-material straw)) - (-> *part-id-table* 2269) - ) - ((= v1-61 (pat-material swamp)) - (-> *part-id-table* 2270) - ) - ((= v1-61 (pat-material neutral)) - (-> *part-id-table* 2774) - ) - (else - (-> *part-id-table* 107) - ) - ) - ) - ) + ((= v1-61 (pat-material sand)) (-> *part-id-table* 106)) + ((= v1-61 (pat-material wood)) (-> *part-id-table* 2258)) + ((= v1-61 (pat-material crwood)) (-> *part-id-table* 2259)) + ((or (= v1-61 (pat-material tube)) (= v1-61 (pat-material pcmetal))) (-> *part-id-table* 2260)) + ((or (= v1-61 (pat-material metal)) (= v1-61 (pat-material rotate))) (-> *part-id-table* 2335)) + ((= v1-61 (pat-material ice)) (-> *part-id-table* 2261)) + ((= v1-61 (pat-material snow)) (-> *part-id-table* 2262)) + ((= v1-61 (pat-material deepsnow)) (-> *part-id-table* 2263)) + ((= v1-61 (pat-material gravel)) (-> *part-id-table* 2264)) + ((= v1-61 (pat-material dirt)) (-> *part-id-table* 2265)) + ((= v1-61 (pat-material stone)) (-> *part-id-table* 2266)) + ((= v1-61 (pat-material waterbottom)) (-> *part-id-table* 2267)) + ((= v1-61 (pat-material tar)) (-> *part-id-table* 2268)) + ((= v1-61 (pat-material straw)) (-> *part-id-table* 2269)) + ((= v1-61 (pat-material swamp)) (-> *part-id-table* 2270)) + ((= v1-61 (pat-material neutral)) (-> *part-id-table* 2774)) + (else (-> *part-id-table* 107))))) (when (nonzero? s0-1) (set! sv-80 sp-launch-particles-var) (set! sv-96 *sp-particle-system-2d*) (let ((a2-37 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2))) (a3-7 #f) (t0-2 #f) - (t1-2 1.0) - ) - (sv-80 sv-96 s0-1 a2-37 (the-as sparticle-launch-state a3-7) (the-as sparticle-launch-control t0-2) t1-2) - ) - ) - ) - ) - ) - ) - (if s1-0 - (effect-control-method-12 this arg0 arg1 arg2 arg3 s1-0) - ) - ) + (t1-2 1.0)) + (sv-80 sv-96 s0-1 a2-37 (the-as sparticle-launch-state a3-7) (the-as sparticle-launch-control t0-2) t1-2))))))) + (if s1-0 (effect-control-method-12 this arg0 arg1 arg2 arg3 s1-0))) 0 - (none) - ) + (none)) (defmethod effect-control-method-12 ((this effect-control) (arg0 symbol) (arg1 float) (arg2 int) (arg3 basic) (arg4 sound-name)) (local-vars (sv-112 res-tag) (sv-128 sound-name) (sv-144 basic) (sv-160 (function vector vector float))) (set! sv-144 arg3) (let ((s0-0 arg4) (gp-0 (new 'stack 'sound-spec)) - (s5-0 (if (< arg2 0) - (the-as vector #f) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2)) - ) - ) - ) + (s5-0 (if (< arg2 0) (the-as vector #f) (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2))))) (set! (-> gp-0 sound-name) s0-0) (logior! (-> gp-0 mask) (sound-mask volume)) (set! (-> gp-0 volume) 1024) @@ -1014,75 +467,50 @@ (t0-1 #f) (t1-1 (the-as (pointer res-tag) (& sv-112))) (t2-0 *res-static-buf*) - (a1-7 (t9-3 (the-as res-lump sv-144) a1-6 a2-1 a3-1 (the-as pointer t0-1) t1-1 t2-0)) - ) - (if a1-7 - (effect-param->sound-spec gp-0 (the-as (pointer float) a1-7) (the-as int (-> sv-112 elt-count))) - ) - ) - (if (and (nonzero? (-> gp-0 fo-max)) (let ((f30-1 (* 4096.0 (the float (-> gp-0 fo-max))))) - (set! sv-160 vector-vector-distance) - (let ((a0-6 (ear-trans)) - (a1-8 s5-0) - ) - (< f30-1 (sv-160 a0-6 a1-8)) - ) - ) - ) - (return 0) - ) + (a1-7 (t9-3 (the-as res-lump sv-144) a1-6 a2-1 a3-1 (the-as pointer t0-1) t1-1 t2-0))) + (if a1-7 (effect-param->sound-spec gp-0 (the-as (pointer float) a1-7) (the-as int (-> sv-112 elt-count))))) + (if (and (nonzero? (-> gp-0 fo-max)) + (let ((f30-1 (* 4096.0 (the float (-> gp-0 fo-max))))) + (set! sv-160 vector-vector-distance) + (let ((a0-6 (ear-trans)) + (a1-8 s5-0)) + (< f30-1 (sv-160 a0-6 a1-8))))) + (return 0)) (when *debug-effect-control* (set! sv-128 s0-0) (string<-charp (clear *temp-string*) (the-as (pointer uint8) (& sv-128))) - (format - #t - "(~5D) effect sound ~A ~A (~S) frame ~F joint ~D " - (current-time) - (-> this process name) - arg0 - *temp-string* - arg1 - arg2 - ) - (format - #t - "volume: ~f pitch-mod: ~f~%" - (* 0.09765625 (the float (-> gp-0 volume))) - (* 0.000656168 (the float (-> gp-0 pitch-mod))) - ) - ) - (sound-play-by-spec gp-0 (new-sound-id) s5-0) - ) - 0 - ) + (format #t + "(~5D) effect sound ~A ~A (~S) frame ~F joint ~D " + (current-time) + (-> this process name) + arg0 + *temp-string* + arg1 + arg2) + (format #t + "volume: ~f pitch-mod: ~f~%" + (* 0.09765625 (the float (-> gp-0 volume))) + (* 0.000656168 (the float (-> gp-0 pitch-mod))))) + (sound-play-by-spec gp-0 (new-sound-id) s5-0)) + 0) (defbehavior target-land-effect target () (cond ((logtest? (-> self control root-prim prim-core action) (collide-action flut)) (effect-control-method-10 (-> self skel effect) 'effect-land-poof -1.0 -1) - (effect-control-method-10 (-> self skel effect) 'effect-flut-land -1.0 -1) - ) + (effect-control-method-10 (-> self skel effect) 'effect-flut-land -1.0 -1)) ((logtest? (-> self control root-prim prim-core action) (collide-action racer)) - (sound-play-by-name - (sound-name-with-material 'zoom-land (-> self control ground-pat) "") - (new-sound-id) - (the int - (* 10.24 (* 100.0 (the float (the int (* 10.24 (* 0.000016276043 (-> self control ground-impact-vel))))))) - ) - 0 - 0 - (sound-group sfx) - #t - ) - ) + (sound-play-by-name (sound-name-with-material 'zoom-land (-> self control ground-pat) "") + (new-sound-id) + (the int (* 10.24 (* 100.0 (the float (the int (* 10.24 (* 0.000016276043 (-> self control ground-impact-vel)))))))) + 0 + 0 + (sound-group sfx) + #t)) ((logtest? (-> self water flags) (water-flags wt09)) - (effect-control-method-10 (-> self skel effect) 'effect-land-water -1.0 -1) - ) + (effect-control-method-10 (-> self skel effect) 'effect-land-water -1.0 -1)) (else - (effect-control-method-10 (-> self skel effect) 'effect-land-poof -1.0 -1) - (effect-control-method-10 (-> self skel effect) 'effect-land -1.0 -1) - ) - ) + (effect-control-method-10 (-> self skel effect) 'effect-land-poof -1.0 -1) + (effect-control-method-10 (-> self skel effect) 'effect-land -1.0 -1))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/game/fact-h.gc b/goal_src/jak1/engine/game/fact-h.gc index 56d4daf976..6ecc4cb9aa 100644 --- a/goal_src/jak1/engine/game/fact-h.gc +++ b/goal_src/jak1/engine/game/fact-h.gc @@ -1,57 +1,49 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/res.gc") (require "kernel/gstate.gc") (require "engine/draw/drawable-h.gc") -;; name: fact-h.gc -;; name in dgo: fact-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; The fact bank is a single static object containing health/eco parameters ;; All game code should reference *FACT-bank* to determine these parameters (deftype fact-bank (basic) - ((eco-level-max float) - (eco-single-inc float) - (eco-full-inc float) - (eco-single-timeout seconds) - (eco-full-timeout seconds) - (dummy seconds) - (health-max-default float) - (health-single-inc float) - (eco-pill-max-default float) - (health-small-inc float) - (buzzer-max-default float) - (buzzer-single-inc float) - (suck-bounce-dist meters) - (suck-suck-dist meters) - (default-pill-inc float) - ) - ) - - -(define *FACT-bank* (new 'static 'fact-bank - :eco-level-max 2.0 - :eco-single-inc 1.0 - :eco-full-inc 5.0 - :eco-single-timeout (seconds 5) - :eco-full-timeout (seconds 20) - :dummy (seconds 15) - :health-max-default 3.0 - :health-single-inc 1.0 - :eco-pill-max-default 50.0 - :health-small-inc 1.0 - :buzzer-max-default 7.0 - :buzzer-single-inc 1.0 - :suck-bounce-dist (meters 18) - :suck-suck-dist (meters 7.5) - ) - ) + ((eco-level-max float) + (eco-single-inc float) + (eco-full-inc float) + (eco-single-timeout seconds) + (eco-full-timeout seconds) + (dummy seconds) + (health-max-default float) + (health-single-inc float) + (eco-pill-max-default float) + (health-small-inc float) + (buzzer-max-default float) + (buzzer-single-inc float) + (suck-bounce-dist meters) + (suck-suck-dist meters) + (default-pill-inc float))) + +(define *FACT-bank* + (new 'static + 'fact-bank + :eco-level-max 2.0 + :eco-single-inc 1.0 + :eco-full-inc 5.0 + :eco-single-timeout (seconds 5) + :eco-full-timeout (seconds 20) + :dummy (seconds 15) + :health-max-default 3.0 + :health-single-inc 1.0 + :eco-pill-max-default 50.0 + :health-small-inc 1.0 + :buzzer-max-default 7.0 + :buzzer-single-inc 1.0 + :suck-bounce-dist (meters 18) + :suck-suck-dist (meters 7.5))) (defenum pickup-type :type int32 @@ -64,12 +56,10 @@ (fuel-cell) (eco-pill) (buzzer) - (eco-pill-random) - ) + (eco-pill-random)) (defun pickup-type->string ((arg0 pickup-type)) - (enum->string pickup-type arg0) - ) + (enum->string pickup-type arg0)) (defenum fact-options :bitfield #t @@ -77,9 +67,9 @@ (vent-blocked 0) (has-power-cell 1) ;; should spawn power cell on death (vent-valve 2) - (wrap-phase 3) ;; phase should wrap from 1 to 0 instead of mirroring. - (fop4 4) ;; unused? - (fop5 5) ;; wait-for-cue after death? nothing sets this. + (wrap-phase 3) ;; phase should wrap from 1 to 0 instead of mirroring. + (fop4 4) ;; unused? + (fop5 5) ;; wait-for-cue after death? nothing sets this. (instant-collect 6) ;; set on balloon lurker, puffer (skip-jump-anim 7) ;; skips fuel cell "jump" animation (can-collect 8) @@ -92,10 +82,9 @@ (normal-attack 14) (strong-attack 15) (indestructible 16) - (fop17 17) ;; engine doesn't check it, set on babak near jungleb exit and in robot room. + (fop17 17) ;; engine doesn't check it, set on babak near jungleb exit and in robot room. (eco-blocked 18) - (respawn 19) - ) + (respawn 19)) ;; Each individual enemy and pickup process will allocate a fact-info on its process heap. ;; The constructor will read the res-lump stored in the entity to pick reasonable defaults. @@ -103,60 +92,49 @@ ;; amounts or timings ;; The fact-info class stores data that is common to all fact-infos. (deftype fact-info (basic) - ((process process-drawable) - (pickup-type pickup-type) - (pickup-amount float) - (pickup-spawn-amount float) - (options fact-options) - (fade-time time-frame) - ) + ((process process-drawable) + (pickup-type pickup-type) + (pickup-amount float) + (pickup-spawn-amount float) + (options fact-options) + (fade-time time-frame)) (:methods - (new (symbol type process-drawable pickup-type float) _type_) - (drop-pickup (_type_ symbol process-tree fact-info int) (pointer process)) - (reset! (_type_ symbol) none) - (pickup-collectable! (_type_ pickup-type float handle) float) - ) - ) - + (new (symbol type process-drawable pickup-type float) _type_) + (drop-pickup (_type_ symbol process-tree fact-info int) (pointer process)) + (reset! (_type_ symbol) none) + (pickup-collectable! (_type_ pickup-type float handle) float))) (deftype fact-info-target (fact-info) - ((eco-type pickup-type) - (eco-level float) - (eco-pickup-time time-frame) - (eco-timeout seconds) - (health float) - (health-max float) - (buzzer float) - (buzzer-max float) - (eco-pill float) - (eco-pill-max float) - (health-pickup-time time-frame) - (eco-source handle) - (eco-source-time time-frame) - (money-pickup-time time-frame) - (buzzer-pickup-time time-frame) - (fuel-cell-pickup-time time-frame) - (eco-pill-pickup-time time-frame) - ) + ((eco-type pickup-type) + (eco-level float) + (eco-pickup-time time-frame) + (eco-timeout seconds) + (health float) + (health-max float) + (buzzer float) + (buzzer-max float) + (eco-pill float) + (eco-pill-max float) + (health-pickup-time time-frame) + (eco-source handle) + (eco-source-time time-frame) + (money-pickup-time time-frame) + (buzzer-pickup-time time-frame) + (fuel-cell-pickup-time time-frame) + (eco-pill-pickup-time time-frame)) (:methods - (new (symbol type process-drawable pickup-type float) _type_) - ) - ) - + (new (symbol type process-drawable pickup-type float) _type_))) (deftype fact-info-enemy (fact-info) - ((speed float) - (idle-distance meters) - (notice-top meters) - (notice-bottom meters) - (cam-horz meters) - (cam-vert meters) - (cam-notice-dist meters) - ) + ((speed float) + (idle-distance meters) + (notice-top meters) + (notice-bottom meters) + (cam-horz meters) + (cam-vert meters) + (cam-notice-dist meters)) (:methods - (new (symbol type process-drawable pickup-type float) _type_) - ) - ) + (new (symbol type process-drawable pickup-type float) _type_))) (declare-type process-drawable process) @@ -173,13 +151,10 @@ (go process-drawable-art-error "memory") ;; this is already true... (set! this (the-as fact-info 0)) - (goto cfg-10) - ) - + (goto cfg-10)) ;; remember who we belong to (set! (-> this process) proc) (set! tag (new 'static 'res-tag)) - ;; eco may override the pickup type and amount, so try to get this. (let ((v1-6 (res-lump-data ent 'eco-info (pointer int32) :tag-ptr (& tag) :time 0.0))) (cond @@ -189,39 +164,22 @@ ;; first thing is pickup type, it's always there (set! (-> this pickup-type) (the-as pickup-type (-> v1-6 0))) ;; pickup amount is optional. - (set! pkup-amount (if (< (the-as uint 1) (the-as uint a0-6)) - (the float (-> v1-6 1)) - pkup-amount - ) - ) - ) - (set! (-> this pickup-amount) pkup-amount) - ) + (set! pkup-amount (if (< (the-as uint 1) (the-as uint a0-6)) (the float (-> v1-6 1)) pkup-amount))) + (set! (-> this pickup-amount) pkup-amount)) (else ;; no eco-info, use stuff from args (set! (-> this pickup-type) pkup-type) - (set! (-> this pickup-amount) pkup-amount) - ) - ) - ) - + (set! (-> this pickup-amount) pkup-amount)))) ;; read the options (set! (-> this options) (res-lump-value ent 'options fact-options)) - ;; read fade time, if we have fade or respawn (if (logtest? (fact-options fade respawn) (-> this options)) - (set! (-> this fade-time) (the int (* 300.0 (res-lump-float ent 'timeout)))) - ) - ) - + (set! (-> this fade-time) (the int (* 300.0 (res-lump-float ent 'timeout)))))) (label cfg-10) - this - ) - ) + this)) (defmethod pickup-collectable! ((this fact-info) (arg0 pickup-type) (arg1 float) (arg2 handle)) - 0.0 - ) + 0.0) (defmethod new fact-info-enemy ((allocation symbol) (type-to-make type) (proc process-drawable) (kind pickup-type) (amount float)) "Create information about an enemy. Possibly includes what the enemy will drop when it is killed?" @@ -235,17 +193,12 @@ (set! (-> this notice-bottom) (res-lump-float entity 'notice-bottom :default 4096000.0)) (set! (-> this cam-horz) (res-lump-float entity 'cam-horz)) (set! (-> this cam-vert) (res-lump-float entity 'cam-vert)) - (set! (-> this cam-notice-dist) (res-lump-float entity 'cam-notice-dist :default -4096.0)) - ) - this - ) - ) + (set! (-> this cam-notice-dist) (res-lump-float entity 'cam-notice-dist :default -4096.0))) + this)) (defmethod new fact-info-target ((allocation symbol) (type-to-make type) (arg0 process-drawable) (arg1 pickup-type) (arg2 float)) "Create information about target. Not sure why this has stuff like pickup-type." (let ((this (the-as fact-info-target ((method-of-type fact-info new) allocation type-to-make arg0 arg1 arg2)))) (set! (-> this eco-source) (the-as handle #f)) (reset! this #f) - this - ) - ) + this)) diff --git a/goal_src/jak1/engine/game/game-h.gc b/goal_src/jak1/engine/game/game-h.gc index b11b40d64d..0c3f2a51bf 100644 --- a/goal_src/jak1/engine/game/game-h.gc +++ b/goal_src/jak1/engine/game/game-h.gc @@ -1,23 +1,25 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") - -;; name: game-h.gc -;; name in dgo: game-h -;; dgos: GAME, ENGINE - (declare-type target process-drawable) + (declare-type voicebox process-drawable) + (defun-extern voicebox-spawn process vector (pointer process)) (declare-type nav-control basic) + (declare-type path-control basic) + (declare-type vol-control basic) + (declare-type actor-link-info basic) + (declare-type sparticle-launch-control basic) + (declare-type water-control basic) + (declare-type collide-shape basic) (defenum attack-mask @@ -36,8 +38,7 @@ (control) (angle) (rotate-to) - (atki13) - ) + (atki13)) ;; These flags are a bit of a hack and are mostly only meaningful on *target* ;; except for "fade-out-particles" which is meaninful for eco only. @@ -45,190 +46,155 @@ :bitfield #t :type uint32 (fade-out-particles) ;; set so particle callbacks can fade out before death - (dangerous) ;; set on jak if he is "dangerous" (currently attacking) - (sf02) ;; never sent, blocks tripping - (being-attacked) ;; set when attacked - (invulnerable) ;; set from the debug menu + (dangerous) ;; set on jak if he is "dangerous" (currently attacking) + (sf02) ;; never sent, blocks tripping + (being-attacked) ;; set when attacked + (invulnerable) ;; set from the debug menu (timed-invulnerable) ;; after being attacked - (invuln-powerup) ;; unused invulnerable mode from powerup - (do-not-notice) ;; enemies etc shouldn't notice jak - (grabbed) ;; something else has "grabbed" control of jak - (first-person-mode) ;; triangle, billy game - (use-alt-cam-pos) ;; target-cam-pos should use an alternate position (jumping in warp gate, on to flutflut...) - (prevent-jump) ;; target cannot do any jumps - (prevent-attack) ;; target cannot do attacks - (prevent-duck) ;; can't duck or roll - (remove-prevents) ;; when set, removes the previous 3 prevents on the next frame. - (dying) ;; set during death anim - (sf16) ;; unused - (has-saved-position) ;; is there a saved position? - (looking-at-enemy) ;; neck mod active to look at enemy + (invuln-powerup) ;; unused invulnerable mode from powerup + (do-not-notice) ;; enemies etc shouldn't notice jak + (grabbed) ;; something else has "grabbed" control of jak + (first-person-mode) ;; triangle, billy game + (use-alt-cam-pos) ;; target-cam-pos should use an alternate position (jumping in warp gate, on to flutflut...) + (prevent-jump) ;; target cannot do any jumps + (prevent-attack) ;; target cannot do attacks + (prevent-duck) ;; can't duck or roll + (remove-prevents) ;; when set, removes the previous 3 prevents on the next frame. + (dying) ;; set during death anim + (sf16) ;; unused + (has-saved-position) ;; is there a saved position? + (looking-at-enemy) ;; neck mod active to look at enemy (falling-into-pool-of-bad) ;; falling into lava, dark eco, or melt - (flop-hit-ground) ;; set when ground pound hit ground + (flop-hit-ground) ;; set when ground pound hit ground ) (defmacro static-attack-info (&key (mask ()) args) (let ((mask-actual mask)) (dolist (it args) (when (not (member (caar it) mask-actual)) - (cons! mask-actual (caar it)) - ) - ) + (cons! mask-actual (caar it)))) `(let ((atk (new 'static 'attack-info :mask (attack-mask ,@mask-actual)))) - ,@(apply (lambda (x) (if (eq? (car x) 'vector) - `(vector-copy! (-> atk ,(car x)) ,(cadr x)) - `(set! (-> atk ,(car x)) ,(cadr x)) - )) args) - atk) - ) - ) + ,@(apply (lambda (x) + (if (eq? (car x) 'vector) `(vector-copy! (-> atk ,(car x)) ,(cadr x)) `(set! (-> atk ,(car x)) ,(cadr x)))) + args) + atk))) ;; DECOMP BEGINS - ;; Process drawable is the parent type of most game objects. (deftype process-drawable (process) ;; The "root" is the location of the process-drawable. ;; It may be a more specific type, and often contains the collision geometry. - ((root trsqv) + ((root trsqv) ;; The node-list is a list of all the joints and bones, and how ;; joints update bones. - - (node-list cspace-array) - + (node-list cspace-array) ;; the draw-control contains references to all data required for drawing - (draw draw-control) - + (draw draw-control) ;; The skel is a joint-control which combines animations to control joints - (skel joint-control) - + (skel joint-control) ;; The nav-control allows enemies to navigate on a nav mesh. - (nav nav-control) - + (nav nav-control) ;; alignment of animation to our position - (align align-control) - + (align align-control) ;; our path (like if we are a platform or enemy that moves along a fixed path) - (path path-control) - + (path path-control) ;; associated volumes (for water) - (vol vol-control) - + (vol vol-control) ;; our settings - (fact fact-info) - + (fact fact-info) ;; reference to our entity - (link actor-link-info) - + (link actor-link-info) ;; our particles - (part sparticle-launch-control) - + (part sparticle-launch-control) ;; state related to entering and being in water - (water water-control) - + (water water-control) ;; any sound that we're playing - (sound ambient-sound) - + (sound ambient-sound) ;; seems to only be used in target? - (state-flags state-flags) - + (state-flags state-flags) ;; the time when we last did something. Used for different things in different objects - (state-time time-frame) - ) + (state-time time-frame)) (:methods - (initialize-skeleton (_type_ skeleton-group pair) none) - (initialize-skeleton-by-name (_type_ string object) _type_) - (apply-alignment (_type_ align-opts transformq vector) collide-shape) - (do-joint-math! (_type_) none) - (cleanup-for-death (_type_) none) - (evaluate-joint-control (_type_) none) - ) - (:states - (process-drawable-art-error string) - process-drawable-idle - ) - ) + (initialize-skeleton (_type_ skeleton-group pair) none) + (initialize-skeleton-by-name (_type_ string object) _type_) + (apply-alignment (_type_ align-opts transformq vector) collide-shape) + (do-joint-math! (_type_) none) + (cleanup-for-death (_type_) none) + (evaluate-joint-control (_type_) none)) + (:states (process-drawable-art-error string) process-drawable-idle)) ;; This is unused. Maybe it was useful in development, where it might be slow to add ;; methods to a type? -(deftype process-drawable-reserved (process-drawable) - () +(deftype process-drawable-reserved (process-drawable) () (:methods - (process-drawable-reserved-method-20 () none) - (process-drawable-reserved-method-21 () none) - (process-drawable-reserved-method-22 () none) - (process-drawable-reserved-method-23 () none) - (process-drawable-reserved-method-24 () none) - (process-drawable-reserved-method-25 () none) - (process-drawable-reserved-method-26 () none) - (process-drawable-reserved-method-27 () none) - (process-drawable-reserved-method-28 () none) - (process-drawable-reserved-method-29 () none) - (process-drawable-reserved-method-30 () none) - (process-drawable-reserved-method-31 () none) - (process-drawable-reserved-method-32 () none) - (process-drawable-reserved-method-33 () none) - (process-drawable-reserved-method-34 () none) - (process-drawable-reserved-method-35 () none) - (process-drawable-reserved-method-36 () none) - (process-drawable-reserved-method-37 () none) - (process-drawable-reserved-method-38 () none) - (process-drawable-reserved-method-39 () none) - (process-drawable-reserved-method-40 () none) - (process-drawable-reserved-method-41 () none) - (process-drawable-reserved-method-42 () none) - (process-drawable-reserved-method-43 () none) - (process-drawable-reserved-method-44 () none) - (process-drawable-reserved-method-45 () none) - (process-drawable-reserved-method-46 () none) - (process-drawable-reserved-method-47 () none) - (process-drawable-reserved-method-48 () none) - (process-drawable-reserved-method-49 () none) - (process-drawable-reserved-method-50 () none) - (process-drawable-reserved-method-51 () none) - (process-drawable-reserved-method-52 () none) - (process-drawable-reserved-method-53 () none) - (process-drawable-reserved-method-54 () none) - (process-drawable-reserved-method-55 () none) - (process-drawable-reserved-method-56 () none) - (process-drawable-reserved-method-57 () none) - (process-drawable-reserved-method-58 () none) - (process-drawable-reserved-method-59 () none) - (process-drawable-reserved-method-60 () none) - (process-drawable-reserved-method-61 () none) - (process-drawable-reserved-method-62 () none) - ) - ) + (process-drawable-reserved-method-20 () none) + (process-drawable-reserved-method-21 () none) + (process-drawable-reserved-method-22 () none) + (process-drawable-reserved-method-23 () none) + (process-drawable-reserved-method-24 () none) + (process-drawable-reserved-method-25 () none) + (process-drawable-reserved-method-26 () none) + (process-drawable-reserved-method-27 () none) + (process-drawable-reserved-method-28 () none) + (process-drawable-reserved-method-29 () none) + (process-drawable-reserved-method-30 () none) + (process-drawable-reserved-method-31 () none) + (process-drawable-reserved-method-32 () none) + (process-drawable-reserved-method-33 () none) + (process-drawable-reserved-method-34 () none) + (process-drawable-reserved-method-35 () none) + (process-drawable-reserved-method-36 () none) + (process-drawable-reserved-method-37 () none) + (process-drawable-reserved-method-38 () none) + (process-drawable-reserved-method-39 () none) + (process-drawable-reserved-method-40 () none) + (process-drawable-reserved-method-41 () none) + (process-drawable-reserved-method-42 () none) + (process-drawable-reserved-method-43 () none) + (process-drawable-reserved-method-44 () none) + (process-drawable-reserved-method-45 () none) + (process-drawable-reserved-method-46 () none) + (process-drawable-reserved-method-47 () none) + (process-drawable-reserved-method-48 () none) + (process-drawable-reserved-method-49 () none) + (process-drawable-reserved-method-50 () none) + (process-drawable-reserved-method-51 () none) + (process-drawable-reserved-method-52 () none) + (process-drawable-reserved-method-53 () none) + (process-drawable-reserved-method-54 () none) + (process-drawable-reserved-method-55 () none) + (process-drawable-reserved-method-56 () none) + (process-drawable-reserved-method-57 () none) + (process-drawable-reserved-method-58 () none) + (process-drawable-reserved-method-59 () none) + (process-drawable-reserved-method-60 () none) + (process-drawable-reserved-method-61 () none) + (process-drawable-reserved-method-62 () none))) ;; The attack-info is generated by attackers and sent to target. (deftype attack-info (structure) - ((trans vector :inline) - (vector vector :inline) - (intersection vector :inline) - (attacker handle) - (invinc-time time-frame) - (mask attack-mask) - (mode symbol) - (shove-back meters) - (shove-up meters) - (speed meters) - (dist meters) - (control float) - (angle symbol) - (rotate-to degrees) - (prev-state state) - ) + ((trans vector :inline) + (vector vector :inline) + (intersection vector :inline) + (attacker handle) + (invinc-time time-frame) + (mask attack-mask) + (mode symbol) + (shove-back meters) + (shove-up meters) + (speed meters) + (dist meters) + (control float) + (angle symbol) + (rotate-to degrees) + (prev-state state)) (:methods - (combine! (_type_ attack-info) none) - ) - ) - + (combine! (_type_ attack-info) none))) (define *global-attack-id* 0) (deftype ground-tween-info (structure) - ((chan uint8 3) - (blend float 3) - (group uint32 5) - ) - ) + ((chan uint8 3) + (blend float 3) + (group uint32 5))) diff --git a/goal_src/jak1/engine/game/game-info-h.gc b/goal_src/jak1/engine/game/game-info-h.gc index 12c0190eec..93a6f59ddd 100644 --- a/goal_src/jak1/engine/game/game-info-h.gc +++ b/goal_src/jak1/engine/game/game-info-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/util/types-h.gc") -;; name: game-info-h.gc -;; name in dgo: game-info-h -;; dgos: GAME, ENGINE - ;; This file contains types for: ;; - the full game state (game-info) ;; - the "load state" @@ -17,28 +12,23 @@ ;; Game parameters. (deftype game-bank (basic) - ((life-max-default float) ;; yes this life system works, but does nothing - (life-start-default float) - (life-single-inc float) - (money-task-inc float) - (money-oracle-inc float) - ) - ) - - -(define *GAME-bank* (new 'static 'game-bank - :life-max-default 99.0 - :life-start-default 5.0 - :life-single-inc 1.0 - :money-task-inc 90.0 - :money-oracle-inc 120.0 - ) - ) + ((life-max-default float) ;; yes this life system works, but does nothing + (life-start-default float) + (life-single-inc float) + (money-task-inc float) + (money-oracle-inc float))) + +(define *GAME-bank* + (new 'static + 'game-bank + :life-max-default 99.0 + :life-start-default 5.0 + :life-single-inc 1.0 + :money-task-inc 90.0 + :money-oracle-inc 120.0)) ;; aid -(deftype actor-id (uint32) - () - ) +(deftype actor-id (uint32) ()) ;;;;;;;;;;;;;;; ;; Load State @@ -49,49 +39,40 @@ ;; the possible load state for a level. (deftype level-buffer-state (structure) - ((name symbol) - (display? symbol) - (force-vis? symbol) - (force-inside? symbol) - ) - :pack-me - ) + ((name symbol) + (display? symbol) + (force-vis? symbol) + (force-inside? symbol)) + :pack-me) ;; This includes more state than just "loading" - it also has a list of commands to execute and ;; other random state. (deftype load-state (basic) - ((want level-buffer-state 2 :inline) - (vis-nick symbol) - (command-list pair) - (object-name symbol 256) - (object-status basic 256) - ) + ((want level-buffer-state 2 :inline) + (vis-nick symbol) + (command-list pair) + (object-name symbol 256) + (object-status basic 256)) (:methods - (new (symbol type) _type_) - (reset! (_type_) _type_) - (update! (_type_) int) - (want-levels (_type_ symbol symbol) int) - (want-display-level (_type_ symbol symbol) int) - (want-vis (_type_ symbol) int) - (want-force-vis (_type_ symbol symbol) int) - (execute-command (_type_ pair) none) - (execute-commands-up-to (_type_ float) int) - (backup-load-state-and-set-cmds (_type_ pair) int) - (restore-load-state-and-cleanup (_type_) int) - (restore-load-state (_type_) int) - (set-force-inside! (_type_ symbol symbol) none) - ) - ) + (new (symbol type) _type_) + (reset! (_type_) _type_) + (update! (_type_) int) + (want-levels (_type_ symbol symbol) int) + (want-display-level (_type_ symbol symbol) int) + (want-vis (_type_ symbol) int) + (want-force-vis (_type_ symbol symbol) int) + (execute-command (_type_ pair) none) + (execute-commands-up-to (_type_ float) int) + (backup-load-state-and-set-cmds (_type_ pair) int) + (restore-load-state-and-cleanup (_type_) int) + (restore-load-state (_type_) int) + (set-force-inside! (_type_ symbol symbol) none))) (defmethod new load-state ((allocation symbol) (type-to-make type)) - (reset! - (object-new allocation type-to-make (the-as int (-> type-to-make size))) - ) - ) + (reset! (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (define-extern *load-state* load-state) - ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Game Info ;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -110,114 +91,109 @@ (contf08) (contf09) (game-start) - (sage-ecorocks) - ) + (sage-ecorocks)) ;; static data for a continue point (deftype continue-point (basic) - ((name string) - (level symbol) - (flags continue-flags) - (trans vector :inline) - (quat quaternion :inline) - (camera-trans vector :inline) - (camera-rot float 9) - (load-commands pair) - (vis-nick symbol) - (lev0 symbol) - (disp0 symbol) - (lev1 symbol) - (disp1 symbol) - ) + ((name string) + (level symbol) + (flags continue-flags) + (trans vector :inline) + (quat quaternion :inline) + (camera-trans vector :inline) + (camera-rot float 9) + (load-commands pair) + (vis-nick symbol) + (lev0 symbol) + (disp0 symbol) + (lev1 symbol) + (disp1 symbol)) (:methods - (debug-draw! (_type_) none) - ) - ) + (debug-draw! (_type_) none))) (declare-type entity-perm structure) + (declare-type entity-perm-array basic) + (declare-type game-save basic) + ;; Game Info is the full state of the game ;; this information can be saved/loaded from a game save. ;; also, it must be manually synchronized with entity permanent state in the levels (deftype game-info (basic) - ((mode symbol) - (save-name basic) - (life float) - (life-max float) - (money float) - (money-total float) - (money-per-level uint8 32) - (deaths-per-level uint8 32) - (buzzer-total float) - (fuel float) - (perm-list entity-perm-array) - (task-perm-list entity-perm-array) - (current-continue continue-point) - (text-ids-seen bit-array) - (level-opened uint8 32) - (hint-control (array level-hint-control)) - (task-hint-control (array task-hint-control-group)) - (total-deaths int32) - (continue-deaths int32) - (fuel-cell-deaths int32) - (game-start-time time-frame) - (continue-time time-frame) - (death-time time-frame) - (hit-time time-frame) - (fuel-cell-pickup-time time-frame) - (fuel-cell-time (array time-frame)) - (enter-level-time (array time-frame)) - (in-level-time (array time-frame)) - (blackout-time time-frame) - (letterbox-time time-frame) - (hint-play-time time-frame) - (display-text-time time-frame) - (display-text-handle handle) - (death-movie-tick int32) - (want-auto-save symbol) - (auto-save-proc handle) - (auto-save-status mc-status-code) - (auto-save-card int32) - (auto-save-which int32) - (pov-camera-handle handle) - (other-camera-handle handle) - (death-pos vector-array) - (dummy basic) - (auto-save-count int32) - ) + ((mode symbol) + (save-name basic) + (life float) + (life-max float) + (money float) + (money-total float) + (money-per-level uint8 32) + (deaths-per-level uint8 32) + (buzzer-total float) + (fuel float) + (perm-list entity-perm-array) + (task-perm-list entity-perm-array) + (current-continue continue-point) + (text-ids-seen bit-array) + (level-opened uint8 32) + (hint-control (array level-hint-control)) + (task-hint-control (array task-hint-control-group)) + (total-deaths int32) + (continue-deaths int32) + (fuel-cell-deaths int32) + (game-start-time time-frame) + (continue-time time-frame) + (death-time time-frame) + (hit-time time-frame) + (fuel-cell-pickup-time time-frame) + (fuel-cell-time (array time-frame)) + (enter-level-time (array time-frame)) + (in-level-time (array time-frame)) + (blackout-time time-frame) + (letterbox-time time-frame) + (hint-play-time time-frame) + (display-text-time time-frame) + (display-text-handle handle) + (death-movie-tick int32) + (want-auto-save symbol) + (auto-save-proc handle) + (auto-save-status mc-status-code) + (auto-save-card int32) + (auto-save-which int32) + (pov-camera-handle handle) + (other-camera-handle handle) + (death-pos vector-array) + (dummy basic) + (auto-save-count int32)) (:methods - (initialize! (_type_ symbol game-save string) _type_) - (adjust (_type_ symbol float handle) float) - (task-complete? (_type_ game-task) symbol) - (lookup-entity-perm-by-aid (_type_ actor-id) entity-perm) - (get-entity-task-perm (_type_ game-task) entity-perm) - (copy-perms-from-level! (_type_ level) none) - (copy-perms-to-level! (_type_ level) none) - (debug-print (_type_ symbol) _type_) - (get-or-create-continue! (_type_) continue-point) - (get-continue-by-name (_type_ string) continue-point) - (set-continue! (_type_ basic) continue-point) - (buzzer-count (_type_ game-task) int) - (seen-text? (_type_ text-id) symbol) - (mark-text-as-seen (_type_ text-id) none) - (got-buzzer? (_type_ game-task int) symbol) - (save-game! (_type_ game-save string) none) - (load-game! (_type_ game-save) game-save) - (clear-text-seen! (_type_ text-id) none) - (get-death-count (_type_ symbol) int) - (get-health-percent-lost (_type_ symbol) float) - ) - ) + (initialize! (_type_ symbol game-save string) _type_) + (adjust (_type_ symbol float handle) float) + (task-complete? (_type_ game-task) symbol) + (lookup-entity-perm-by-aid (_type_ actor-id) entity-perm) + (get-entity-task-perm (_type_ game-task) entity-perm) + (copy-perms-from-level! (_type_ level) none) + (copy-perms-to-level! (_type_ level) none) + (debug-print (_type_ symbol) _type_) + (get-or-create-continue! (_type_) continue-point) + (get-continue-by-name (_type_ string) continue-point) + (set-continue! (_type_ basic) continue-point) + (buzzer-count (_type_ game-task) int) + (seen-text? (_type_ text-id) symbol) + (mark-text-as-seen (_type_ text-id) none) + (got-buzzer? (_type_ game-task int) symbol) + (save-game! (_type_ game-save string) none) + (load-game! (_type_ game-save) game-save) + (clear-text-seen! (_type_ text-id) none) + (get-death-count (_type_ symbol) int) + (get-health-percent-lost (_type_ symbol) float))) (define-extern *game-info* game-info) + (when (or (not *game-info*) (zero? *game-info*)) (let ((temp (new 'static 'game-info :mode 'debug :current-continue #f))) (set! (-> temp fuel-cell-time) (new 'global 'boxed-array time-frame (the int (game-task max)))) ;; changed from hard-coded 116 to (game-task max) (set! (-> temp enter-level-time) (new 'global 'boxed-array time-frame 32)) (set! (-> temp in-level-time) (new 'global 'boxed-array time-frame 32)) - (set! *game-info* temp) - ) - ) + (set! *game-info* temp))) (define-extern game-task->string (function game-task string)) diff --git a/goal_src/jak1/engine/game/game-info.gc b/goal_src/jak1/engine/game/game-info.gc index a3323cb47f..a0e31f0961 100644 --- a/goal_src/jak1/engine/game/game-info.gc +++ b/goal_src/jak1/engine/game/game-info.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/generic-obs-h.gc") (require "pc/features/speedruns-h.gc") (require "engine/game/task/hint-control-h.gc") @@ -14,10 +13,6 @@ (require "engine/debug/debug.gc") (require "engine/game/game-info-h.gc") -;; name: game-info.gc -;; name in dgo: game-info -;; dgos: GAME, ENGINE - ;; The game-info is the logic for pickups/lives/eco/tasks/collectables/check points/saved data ;; The *game-info* object constains the "game state", like how many lives you have etc. @@ -41,47 +36,41 @@ "Debug draw a border plane with a vector and text." (let* ((v1-0 (-> this action)) ;; pick color based on action - (s5-0 (if (= v1-0 'load) - (new 'static 'rgba :g #xff :a #x80) - (new 'static 'rgba :r #xff :a #x80) - ) - ) - ) - + (s5-0 (if (= v1-0 'load) (new 'static 'rgba :g #xff :a #x80) (new 'static 'rgba :r #xff :a #x80)))) ;; add text and vector (add-debug-text-sphere #t (bucket-id debug-no-zbuf) (-> this trans) 819.2 (symbol->string (-> this name)) s5-0) - (add-debug-vector #t (bucket-id debug-no-zbuf) (-> this trans) (-> this normal) (meters 2) s5-0) - ) + (add-debug-vector #t (bucket-id debug-no-zbuf) (-> this trans) (-> this normal) (meters 2) s5-0)) 0 - (none) - ) + (none)) (defmethod point-past-plane? ((this border-plane) (arg0 vector)) "Which side of the plane is the given point on? #t = on the plane, or on the side the normal points toward." - (>= (vector-dot (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) (-> this normal)) 0.0) - ) + (>= (vector-dot (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) (-> this normal)) 0.0)) (defmethod task-complete? ((this game-info) (arg0 game-task)) "Likely closed, or in the process of closing" - (logtest? (-> this task-perm-list data arg0 status) (entity-perm-status real-complete)) - ) + (logtest? (-> this task-perm-list data arg0 status) (entity-perm-status real-complete))) ;; set up a static continue point that can be used as a temporary continue point. -(define *default-continue* (new 'static 'continue-point - :name "default" - :level #f - :trans (new 'static 'vector :w 1.0) - :quat (new 'static 'quaternion :w 1.0) - :camera-trans (new 'static 'vector :w 1.0) - :load-commands '() - :vis-nick #f - :lev0 #f - :disp0 #f - :lev1 #f - :disp1 #f - ) - ) +(define *default-continue* + (new 'static + 'continue-point + :name "default" + :level #f + :trans + (new 'static 'vector :w 1.0) + :quat + (new 'static 'quaternion :w 1.0) + :camera-trans + (new 'static 'vector :w 1.0) + :load-commands + '() + :vis-nick #f + :lev0 #f + :disp0 #f + :lev1 #f + :disp1 #f)) (defmethod get-or-create-continue! ((this game-info)) "Attempt to get a continue point, if it doesn't exist set the @@ -89,8 +78,7 @@ (cond ((and (= (-> this mode) 'play) (-> this current-continue)) ;; we have a continue. - (-> this current-continue) - ) + (-> this current-continue)) (else ;; need to make one (let ((gp-0 *default-continue*)) @@ -101,11 +89,7 @@ (set! (-> gp-0 disp0) (-> *load-state* want 0 display?)) (set! (-> gp-0 lev1) (-> *load-state* want 1 name)) (set! (-> gp-0 disp1) (-> *load-state* want 1 display?)) - gp-0 - ) - ) - ) - ) + gp-0)))) (defmethod get-continue-by-name ((this game-info) (arg0 string)) "Look up a continue point by string name" @@ -117,18 +101,11 @@ (while (not (null? s4-0)) (let ((s3-0 (car s4-0))) (if (string= arg0 (-> (the-as continue-point s3-0) name)) - ;; match! - (return (the-as continue-point s3-0)) - ) - ) - (set! s4-0 (cdr s4-0)) - ) - ) - (set! s5-0 (cdr s5-0)) - ) - ) - (the-as continue-point #f) - ) + ;; match! + (return (the-as continue-point s3-0)))) + (set! s4-0 (cdr s4-0)))) + (set! s5-0 (cdr s5-0)))) + (the-as continue-point #f)) (defmethod set-continue! ((this game-info) (arg0 basic)) "Set the current continue point to to arg0. @@ -143,52 +120,35 @@ If the continue is changed, resets the death and time counters " (let ((s5-0 (-> this current-continue))) - (if (null? arg0) - (set! arg0 #f) - ) + (if (null? arg0) (set! arg0 #f)) (case (-> arg0 type) ((string) - (let ((v1-5 (get-continue-by-name this (the-as string arg0)))) - (if v1-5 - (set! (-> this current-continue) v1-5) - ) - ) - ) - ((continue-point) - (set! (-> this current-continue) (the-as continue-point arg0)) - ) + (let ((v1-5 (get-continue-by-name this (the-as string arg0)))) (if v1-5 (set! (-> this current-continue) v1-5)))) + ((continue-point) (set! (-> this current-continue) (the-as continue-point arg0))) (else - (let ((s4-3 *default-continue*)) - (position-in-front-of-camera! (-> s4-3 trans) 40960.0 4096.0) - (quaternion-identity! (-> s4-3 quat)) - (set! (-> s4-3 vis-nick) (-> *load-state* vis-nick)) - (set! (-> s4-3 lev0) (-> *load-state* want 0 name)) - (set! (-> s4-3 disp0) (-> *load-state* want 0 display?)) - (set! (-> s4-3 lev1) (-> *load-state* want 1 name)) - (set! (-> s4-3 disp1) (-> *load-state* want 1 display?)) - (set! (-> this current-continue) s4-3) - ) - ) - ) + (let ((s4-3 *default-continue*)) + (position-in-front-of-camera! (-> s4-3 trans) 40960.0 4096.0) + (quaternion-identity! (-> s4-3 quat)) + (set! (-> s4-3 vis-nick) (-> *load-state* vis-nick)) + (set! (-> s4-3 lev0) (-> *load-state* want 0 name)) + (set! (-> s4-3 disp0) (-> *load-state* want 0 display?)) + (set! (-> s4-3 lev1) (-> *load-state* want 1 name)) + (set! (-> s4-3 disp1) (-> *load-state* want 1 display?)) + (set! (-> this current-continue) s4-3)))) (when (!= s5-0 (-> this current-continue)) (set! (-> this continue-deaths) 0) - (set-time! (-> this continue-time)) - ) - ) - (-> this current-continue) - ) + (set-time! (-> this continue-time)))) + (-> this current-continue)) (defmethod get-entity-task-perm ((this game-info) (arg0 game-task)) "Get the permanent storage for a game-task" - (-> this task-perm-list data arg0) - ) + (-> this task-perm-list data arg0)) (defmethod initialize! ((this game-info) (cause symbol) (save-to-load game-save) (continue-point-override string)) "Initialize the game-info. The cause can be 'dead if you die, or 'game to reset everything. If save-to-load is not #f will load data from that. If continue-point-override is not #f, will use that." - (local-vars (v0-0 int) (sv-96 symbol)) (case cause (('dead) @@ -202,31 +162,19 @@ (when (>= (-> *level-task-data-remap* length) (-> lev-info index)) ;; update death per level. (set! v0-0 - (seekl (the-as int (-> this deaths-per-level (-> *level-task-data-remap* (+ (-> lev-info index) -1)))) 255 1) - ) + (seekl (the-as int (-> this deaths-per-level (-> *level-task-data-remap* (+ (-> lev-info index) -1)))) 255 1)) (set! (-> this deaths-per-level (-> *level-task-data-remap* (+ (-> lev-info index) -1))) (the-as uint v0-0)) - v0-0 - ) - ) - ) - ) + v0-0)))) (case (-> this mode) (('play) ;; now pick between life/try depending on if we ran out of lives or not. (this isnt really used) - (if (< 0.0 (-> this life)) - (set! cause 'life) - (set! cause 'try) - ) - ) + (if (< 0.0 (-> this life)) (set! cause 'life) (set! cause 'try))) (else - ;; not in play mode, we're done. - (set! this this) - (goto cfg-50) - ) - ) - (runs-on-jak-death 'blackout) - ) - ) + ;; not in play mode, we're done. + (set! this this) + (goto cfg-50)) + ))) + (runs-on-jak-death 'blackout) (kill-current-level-hint '() '() 'die) (case cause (('game) @@ -272,108 +220,75 @@ (set-time! (-> this hit-time)) (dotimes (v1-50 (the int (game-task max))) ;; changed from hard-coded 116 to (game-task max) (set! (-> this fuel-cell-time 0) 0) - (nop!) - ) + (nop!)) (dotimes (v1-53 32) (set! (-> this money-per-level v1-53) (the-as uint 0)) (set! (-> this deaths-per-level v1-53) (the-as uint 0)) (set! (-> this enter-level-time v1-53) 0) (set! (-> this in-level-time v1-53) 0) (set! (-> this level-opened v1-53) (the-as uint 0)) - (nop!) - ) - ) - ) + (nop!)))) (case cause (('game 'try) ;; full restart, or ran out of lives (case (-> this mode) - (('play) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - ) - ) + (('play) (set! *display-profile* #f) (set! *display-entity-errors* #f))) (set! (-> this life-max) (-> *GAME-bank* life-max-default)) - (set! (-> this life) (-> *GAME-bank* life-start-default)) - ) - ) - + (set! (-> this life) (-> *GAME-bank* life-start-default)))) (let ((v1-65 (-> this mode))) (cond ((= v1-65 'debug) ;; in debug, we didn't kill things so we don't need to restart them (reset-actors cause) - (if save-to-load - (load-game! this save-to-load) - ) - ) + (if save-to-load (load-game! this save-to-load))) ((= v1-65 'play) ;; don't allow pausing/start menu (when *target* (set-setting *setting-control* *target* 'allow-pause #f 0.0 0) (set-setting *setting-control* *target* 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - ) - + (apply-settings *setting-control*)) ;; send the auto-save process a 'die message (send-event (handle->process (-> *game-info* auto-save-proc)) 'die) - ;; black screen, stop spawning actors (set! (-> *level* border?) #f) (set! (-> *setting-control* default border-mode) #f) (set! *spawn-actors* #f) (set-blackout-frames (seconds 0.1)) - ;; send target a 'reset message. (send-event *target* 'reset) ;; start a temporary process to restart things - (process-spawn-function process (lambda ((arg0 symbol) (arg1 symbol) (arg2 continue-point) (arg3 game-save)) - (stop arg0) - (reset-actors arg1) - (set-continue! *game-info* arg2) - (when arg3 - (load-game! *game-info* arg3) - (set! arg2 (get-or-create-continue! *game-info*)) - ) - (suspend) - (start arg0 arg2) - (none) - ) - (-> this mode) cause (get-or-create-continue! this) save-to-load - :from *4k-dead-pool* - ) - (set-master-mode 'game) - ) - ) - ) + (process-spawn-function process + (lambda ((arg0 symbol) (arg1 symbol) (arg2 continue-point) (arg3 game-save)) + (stop arg0) + (reset-actors arg1) + (set-continue! *game-info* arg2) + (when arg3 + (load-game! *game-info* arg3) + (set! arg2 (get-or-create-continue! *game-info*))) + (suspend) + (start arg0 arg2) + (none)) + (-> this mode) + cause + (get-or-create-continue! this) + save-to-load + :from + *4k-dead-pool*) + (set-master-mode 'game)))) (label cfg-50) - this - ) - + this) (defmethod adjust ((this game-info) (item symbol) (amount float) (source handle)) "Adjust the number of items by amount." (case item (('life) ;; get/lose a life, just modify the life field - (if (>= amount 0.0) - (seek! (-> this life) (-> this life-max) amount) - (seek! (-> this life) 0.0 (- amount)) - ) - (-> this life) - ) + (if (>= amount 0.0) (seek! (-> this life) (-> this life-max) amount) (seek! (-> this life) 0.0 (- amount))) + (-> this life)) (('money) (if (and (< 0.0 amount) (= (+ (-> this money) amount) (-> *GAME-bank* money-task-inc))) - ;; got enough orbs to trade, display a hint - (level-hint-spawn - (text-id sidekick-reminder-money) - "sksp0014" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - + ;; got enough orbs to trade, display a hint + (level-hint-spawn (text-id sidekick-reminder-money) "sksp0014" (the-as entity #f) *entity-pool* (game-task none))) ;; need to update the various orb counters (when (< 0.0 amount) (let ((proc (handle->process source))) @@ -387,18 +302,9 @@ ;; increment our total money in the game (out of the 2000 max orbs) (+! (-> this money-total) amount) ;; if we have all the money in our level, display the all orbs graphic - (if (= (-> this money-per-level level-idx) (-> (get-game-count level-idx) money-count)) - (activate-orb-all level-idx) - ) - ) - ) - ) - ) - ) - + (if (= (-> this money-per-level level-idx) (-> (get-game-count level-idx) money-count)) (activate-orb-all level-idx))))))) ;; increment our current money count - (+! (-> this money) amount) - ) + (+! (-> this money) amount)) (('fuel-cell) ;; got a power cell! ;; in this case, the amount is actually the index of the power cell's task @@ -416,18 +322,14 @@ ;; unused. (get-task-control (the-as game-task s5-1)) ;; close the task! - (close-specific-task! (the-as game-task s5-1) (task-status need-resolution)) - ) - ) - (-> this fuel) - ) + (close-specific-task! (the-as game-task s5-1) (task-status need-resolution)))) + (-> this fuel)) (('buzzer) ;; got a scout fly. In this case, the amount is actually two 16 bit numbers ;; the lower 16 bits are the task, and the upper is which buzzer (let ((buzz-task (logand (the int amount) #xffff)) (buzz-index (sar (the int amount) 16)) - (buzz-count 0.0) - ) + (buzz-count 0.0)) (when (> (the-as uint buzz-task) 0) ;; valid task (let* ((ctrl (get-task-control (the-as game-task buzz-task))) @@ -435,98 +337,67 @@ ) (when (and (>= buzz-index 0) (< buzz-index (the int (-> *FACT-bank* buzzer-max-default)))) ;; valid fly index - ;; increment total if we haven't collected it before - (if (not (logtest? buzz-bits (ash 1 buzz-index))) - (+! (-> this buzzer-total) 1.0) - ) - + (if (not (logtest? buzz-bits (ash 1 buzz-index))) (+! (-> this buzzer-total) 1.0)) ;; set the updated bits (let ((t9-10 (method-of-object ctrl save-reminder))) (set! buzz-bits (logior buzz-bits (ash 1 buzz-index))) - (t9-10 ctrl buzz-bits 0) - ) - ) - + (t9-10 ctrl buzz-bits 0))) ;; recompute the total count (countdown (v1-58 (the int (-> *FACT-bank* buzzer-max-default))) - (if (logtest? buzz-bits (ash 1 v1-58)) - (set! buzz-count (+ 1.0 buzz-count)) - ) - ) - ) - ) - buzz-count - ) - ) - ) - ) + (if (logtest? buzz-bits (ash 1 v1-58)) (set! buzz-count (+ 1.0 buzz-count)))))) + buzz-count)))) (defmethod got-buzzer? ((this game-info) (arg0 game-task) (arg1 int)) "Do we have the arg1-th buzzer for the given buzzer task?" ;; buzzers mis-use their reminder bits as a bitfield of which ones have been collected - (logtest? (get-reminder (get-task-control arg0) 0) (ash 1 arg1)) - ) + (logtest? (get-reminder (get-task-control arg0) 0) (ash 1 arg1))) (defmethod buzzer-count ((this game-info) (arg0 game-task)) "How many buzzers do we have for this task?" (let ((v1-1 (get-reminder (get-task-control arg0) 0)) ;; buzzer bitmask - (v0-2 0) ;; count + (v0-2 0) ;; count ) (countdown (a0-4 (the int (-> *FACT-bank* buzzer-max-default))) - (if (logtest? v1-1 (ash 1 a0-4)) - (+! v0-2 1) - ) - ) - v0-2 - ) - ) + (if (logtest? v1-1 (ash 1 a0-4)) (+! v0-2 1))) + v0-2)) (defmethod seen-text? ((this game-info) (arg0 text-id)) "Have we already displayed this text? This is used to display level names on only the first enter. It seems like hints could also display text on screen at one point in time." - (get-bit (-> this text-ids-seen) (the-as int arg0)) - ) + (get-bit (-> this text-ids-seen) (the-as int arg0))) (defmethod mark-text-as-seen ((this game-info) (arg0 text-id)) "Mark the game text as seen. This only works if the text id < 4096, and ignores otherwise" (if (and (< (the-as uint arg0) (the-as uint 4095)) (> (the-as uint arg0) 0)) - (set-bit (-> this text-ids-seen) (the-as int arg0)) - ) + (set-bit (-> this text-ids-seen) (the-as int arg0))) 0 - (none) - ) + (none)) (defmethod clear-text-seen! ((this game-info) (arg0 text-id)) "Mark text as unseen. MUST be a valid text id" (clear-bit (-> this text-ids-seen) (the-as int arg0)) 0 - (none) - ) + (none)) (defmethod reset! ((this fact-info-target) (arg0 symbol)) "Reset the facts for a given thing" (when (or (not arg0) (= arg0 'eco)) (set! (-> this eco-timeout) 0) (set! (-> this eco-level) 0.0) - (set! (-> this eco-pickup-time) (-> *display* game-frame-counter)) - ) + (set! (-> this eco-pickup-time) (-> *display* game-frame-counter))) (when (or (not arg0) (= arg0 'health)) (set! (-> this health-max) (-> *FACT-bank* health-max-default)) (set! (-> this health) (-> this health-max)) - (set! (-> this health-pickup-time) (seconds -100)) - ) + (set! (-> this health-pickup-time) (seconds -100))) (when (or (not arg0) (= arg0 'buzzer)) (set! (-> this buzzer-max) (-> *FACT-bank* buzzer-max-default)) - (set! (-> this buzzer) 0.0) - ) + (set! (-> this buzzer) 0.0)) (when (or (not arg0) (= arg0 'eco-pill)) (set! (-> this eco-pill-max) (-> *FACT-bank* eco-pill-max-default)) - (set! (-> this eco-pill) 0.0) - ) - (none) - ) + (set! (-> this eco-pill) 0.0)) + (none)) (declare-type vent process-drawable) @@ -542,284 +413,169 @@ ;; when we get a different source, OR we it's been more than 0.5 seconds since we last got eco ;; from this source. (if (or (!= (handle->process source-handle) (handle->process (-> this eco-source))) - (time-elapsed? (-> this eco-source-time) (seconds 0.5)) - ) - - ;; play the sound! - (sound-play "get-green-eco") - ) - + (time-elapsed? (-> this eco-source-time) (seconds 0.5))) + ;; play the sound! + (sound-play "get-green-eco")) ;; remember the source. (when (handle->process source-handle) (set! (-> this eco-source) source-handle) - (set-time! (-> this eco-source-time)) - ) - ) - + (set-time! (-> this eco-source-time)))) ;; if we are at max health (3), and collect additional an additional big green eco, ;; then max out the little green ecos. (if (= (-> this health) (-> this health-max)) - (pickup-collectable! - this - (pickup-type eco-pill) - (-> *FACT-bank* eco-pill-max-default) - (process->handle (-> this process)) - ) - ) - + (pickup-collectable! this + (pickup-type eco-pill) + (-> *FACT-bank* eco-pill-max-default) + (process->handle (-> this process)))) ;; remember when (set-time! (-> this health-pickup-time)) ;; increase the health! - (seek! (-> this health) (-> this health-max) amount) - ) + (seek! (-> this health) (-> this health-max) amount)) (else - ;; negative health. Subtract. - (seek! (-> this health) 0.0 (- amount)) - - ;; not sure why we do this. But this will set the eco pill collection time. - (if (>= amount -10.0) - (pickup-collectable! this (pickup-type eco-pill) 0.0 source-handle) - ) - - ;; subtract lives. - (if (= (-> this health) 0.0) - (adjust (-> (the-as target (-> this process)) game) 'life (- (-> *GAME-bank* life-single-inc)) source-handle) - ) - ) - ) - + ;; negative health. Subtract. + (seek! (-> this health) 0.0 (- amount)) + ;; not sure why we do this. But this will set the eco pill collection time. + (if (>= amount -10.0) (pickup-collectable! this (pickup-type eco-pill) 0.0 source-handle)) + ;; subtract lives. + (if (= (-> this health) 0.0) + (adjust (-> (the-as target (-> this process)) game) 'life (- (-> *GAME-bank* life-single-inc)) source-handle)))) ;; some sort of hack for eco vents. - (b! - (and (logtest? (-> (the-as collide-shape (-> this process root)) root-prim prim-core action) - (collide-action racer) - ) - (type-type? (-> (handle->process source-handle) type) vent) - ) - cfg-80 - :delay (nop!) - ) - (-> this health) - ) - + (b! (and (logtest? (-> (the-as collide-shape (-> this process root)) root-prim prim-core action) (collide-action racer)) + (type-type? (-> (handle->process source-handle) type) vent)) + cfg-80 + :delay (nop!)) + (-> this health)) (((pickup-type eco-pill)) ;; collect small green eco (when (>= amount 0.0) ;; update small eco count (set-time! (-> this eco-pill-pickup-time)) (seek! (-> this eco-pill) (-> this eco-pill-max) amount) - ;; increment big health if needed (when (and (>= (-> this eco-pill) (-> *FACT-bank* eco-pill-max-default)) (< (-> this health) (-> this health-max))) ;; decrease eco pills (set! (-> this eco-pill) (- (-> this eco-pill) (-> *FACT-bank* eco-pill-max-default))) ;; get a big health. - (pickup-collectable! - this - (pickup-type eco-green) - (-> *FACT-bank* health-small-inc) - (process->handle (-> this process)) - ) - ) - ) - (-> this eco-pill) - ) - + (pickup-collectable! this (pickup-type eco-green) (-> *FACT-bank* health-small-inc) (process->handle (-> this process))))) + (-> this eco-pill)) (((pickup-type money)) ;; get money. (when (< 0.0 amount) (#when PC_PORT - ;; make sure any speedrun display is hidden - (hide-speedrun-display) - ) + ;; make sure any speedrun display is hidden + (hide-speedrun-display)) ;; play sound. - (if (time-elapsed? (-> this money-pickup-time) (seconds 0.05)) - (sound-play "money-pickup") - ) - (set-time! (-> this money-pickup-time)) - ) - (adjust (-> (the-as target (-> this process)) game) 'money amount source-handle) - ) + (if (time-elapsed? (-> this money-pickup-time) (seconds 0.05)) (sound-play "money-pickup")) + (set-time! (-> this money-pickup-time))) + (adjust (-> (the-as target (-> this process)) game) 'money amount source-handle)) (((pickup-type fuel-cell)) ;; the amount is actually the index of the task. (let ((s4-2 (the int amount))) (when (not (or (task-complete? (-> (the-as target (-> this process)) game) (the-as game-task s4-2)) - (>= (the-as uint 1) (the-as uint s4-2)) - ) - ) - ;; og:preserve-this - (#when PC_PORT - ;; make sure any speedrun display is hidden - (hide-speedrun-display) - ) - (set-time! (-> this fuel-cell-pickup-time)) - ) - ) - (adjust (-> (the-as target (-> this process)) game) 'fuel-cell amount source-handle) - ) + (>= (the-as uint 1) (the-as uint s4-2)))) + ;; og:preserve-this + (#when PC_PORT + ;; make sure any speedrun display is hidden + (hide-speedrun-display)) + (set-time! (-> this fuel-cell-pickup-time)))) + (adjust (-> (the-as target (-> this process)) game) 'fuel-cell amount source-handle)) (((pickup-type buzzer)) ;; buzzer (let ((buzz-count (adjust (-> (the-as target (-> this process)) game) 'buzzer amount source-handle))) (when (!= buzz-count (-> this buzzer)) - ;; og:preserve-this - (#when PC_PORT - ;; make sure any speedrun display is hidden - (hide-speedrun-display) - ) - (set-time! (-> this buzzer-pickup-time)) - ) - (set! (-> this buzzer) buzz-count) - ) - (-> this buzzer) - ) + ;; og:preserve-this + (#when PC_PORT + ;; make sure any speedrun display is hidden + (hide-speedrun-display)) + (set-time! (-> this buzzer-pickup-time))) + (set! (-> this buzzer) buzz-count)) + (-> this buzzer)) (((pickup-type eco-red) (pickup-type eco-blue) (pickup-type eco-yellow)) ;; the green vent jumps here. (label cfg-80) - ;; if the amount is zero, we just want to know how much eco there is. (if (= amount 0.0) - (return (if (= (-> this eco-type) kind) - (-> this eco-level) - 0.0 ;; we don't have this kind of eco. - ) - ) - ) - + (return (if (= (-> this eco-type) kind) + (-> this eco-level) + 0.0 ;; we don't have this kind of eco. + ))) ;; new type of eco. Reset and use the new type. (when (!= (-> this eco-type) kind) ;; as far as I can tell, the eco-level isn't really used other than just 1 or 0. (set! (-> this eco-level) 0.0) - (set! (-> this eco-timeout) 0) - ) + (set! (-> this eco-timeout) 0)) (set! (-> this eco-type) kind) - - (let ((eco-lev (-> this eco-level))) (set! (-> this eco-level) 1.0) ;; just set to 1. - ;; this check now doesn't make much sense... (when (and (= eco-lev 0.0) (< 0.0 (-> this eco-level))) ;; didn't have eco and now we do, remember when (set! (-> this eco-pickup-time) (-> *display* game-frame-counter)) - ;; send a reset-collide message. Not sure why we do this. - (send-event (-> this process) 'reset-collide) - ) - + (send-event (-> this process) 'reset-collide)) ;; this logic prevents eco from respawning before you are out. ;; the time until respawn is min(full_eco_time, old_time + single_timeout) (set! (-> this eco-timeout) (the-as seconds (min (the-as int (+ (-> this eco-timeout) (* (the-as int (-> *FACT-bank* eco-single-timeout)) (the int amount)))) - (the-as int (+ (-> *FACT-bank* eco-full-timeout) (- (-> *display* game-frame-counter) (-> this eco-pickup-time)))) - ) - ) - ) - + (the-as int (+ (-> *FACT-bank* eco-full-timeout) (- (-> *display* game-frame-counter) (-> this eco-pickup-time))))))) ;; if you max out the eco, this should trigger (if (>= (the-as int (- (-> this eco-timeout) (the-as uint (- (-> *display* game-frame-counter) (-> this eco-pickup-time))))) - (the-as int (-> *FACT-bank* eco-full-timeout)) - ) - (set! (-> this eco-level) 2.0) - ) - - + (the-as int (-> *FACT-bank* eco-full-timeout))) + (set! (-> this eco-level) 2.0)) ;; sound and controller vibration. (when (not (and (= (handle->process source-handle) (handle->process (-> this eco-source))) - (not (time-elapsed? (-> this eco-source-time) (seconds 0.5))) - ) - ) + (not (time-elapsed? (-> this eco-source-time) (seconds 0.5))))) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 127 (seconds 0.2)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 17 (seconds 0.2)) (case kind - (((pickup-type eco-blue)) - (sound-play "get-blue-eco") - ) - (((pickup-type eco-green)) - (sound-play "get-green-eco") - ) - (((pickup-type eco-yellow)) - (sound-play "get-yellow-eco") - ) - (((pickup-type eco-red)) - (sound-play "get-red-eco") - ) - ) - ) - + (((pickup-type eco-blue)) (sound-play "get-blue-eco")) + (((pickup-type eco-green)) (sound-play "get-green-eco")) + (((pickup-type eco-yellow)) (sound-play "get-yellow-eco")) + (((pickup-type eco-red)) (sound-play "get-red-eco")))) (set! (-> this eco-source) source-handle) (set-time! (-> this eco-source-time)) - ;; special case for blue eco magnet effect (when (= kind (pickup-type eco-blue)) (when (= eco-lev 0.0) (let ((s5-1 (-> this process))) - (let ((s4-3 - (process-spawn - touch-tracker - :init touch-tracker-init - (-> s5-1 root trans) - (-> *FACT-bank* suck-bounce-dist) - (seconds 1) - :to s5-1 - ) - ) - ) + (let ((s4-3 (process-spawn touch-tracker + :init + touch-tracker-init + (-> s5-1 root trans) + (-> *FACT-bank* suck-bounce-dist) + (seconds 1) + :to + s5-1))) (send-event (ppointer->process s4-3) 'target s5-1) (send-event (ppointer->process s4-3) 'event 'eco-blue) (send-event (ppointer->process s4-3) 'exit (lambda () (send-event *target* 'query 'powerup (pickup-type eco-blue)))) - (send-event - (ppointer->process s4-3) - 'eval - (lambda :behavior process-drawable - () - (set! (-> (the-as collide-shape (-> self root)) root-prim collide-with) - (collide-kind cak-1 cak-2 cak-3 blue-eco-suck) - ) - (none) - ) - ) - ) - (process-spawn-function - process + (send-event (ppointer->process s4-3) + 'eval + (lambda :behavior process-drawable () + (set! (-> (the-as collide-shape (-> self root)) root-prim collide-with) (collide-kind cak-1 cak-2 cak-3 blue-eco-suck)) + (none)))) + (process-spawn-function process (lambda ((arg0 process-drawable)) - (let ((s5-0 (current-time))) - (until (time-elapsed? s5-0 (seconds 0.6)) - (send-event arg0 'effect 'eco-blue) - (suspend) - ) - ) - (none) - ) + (let ((s5-0 (current-time))) (until (time-elapsed? s5-0 (seconds 0.6)) (send-event arg0 'effect 'eco-blue) (suspend))) + (none)) s5-1 - :from *4k-dead-pool* - :to s5-1 - ) - ) - ) - ) - ) - (-> this eco-level) - ) - (else - ((method-of-type fact-info pickup-collectable!) this kind amount source-handle) - ) - ) - ) + :from + *4k-dead-pool* + :to + s5-1))))) + (-> this eco-level)) + (else ((method-of-type fact-info pickup-collectable!) this kind amount source-handle)))) (defmethod lookup-entity-perm-by-aid ((this game-info) (aid actor-id)) (let ((v1-0 (-> this perm-list))) (countdown (a0-1 (-> v1-0 length)) - (if (= aid (-> v1-0 data a0-1 aid)) - (return (-> v1-0 data a0-1)) - ) - ) - ) - (the-as entity-perm #f) - ) + (if (= aid (-> v1-0 data a0-1 aid)) (return (-> v1-0 data a0-1))))) + (the-as entity-perm #f)) (defmethod copy-perms-from-level! ((this game-info) (lev level)) "Iterate through entities in the level and copy their perms into game-info" - (let ((perms (-> this perm-list)) ;; our perms + (let ((perms (-> this perm-list)) ;; our perms (lev-entities (-> lev bsp level entity)) ;; entities in the level ) ;; loop over every entity in the level @@ -832,125 +588,88 @@ (let ((info-entity-perm (lookup-entity-perm-by-aid this (-> lev-entity-perm aid)))) (cond (info-entity-perm - ;; it exists, set it to the value from the level - (set! (-> info-entity-perm quad) (-> lev-entity-perm quad)) - ) + ;; it exists, set it to the value from the level + (set! (-> info-entity-perm quad) (-> lev-entity-perm quad))) ((< (-> perms length) (-> perms allocated-length)) ;; nope, doesn't exist, but we have room for another, so add it to the back (set! (-> perms data (-> perms length) quad) (-> lev-entity-perm quad)) - (+! (-> perms length) 1) - ) - ) - ) - ) - ) - ) - ) + (+! (-> perms length) 1)))))))) 0 - (none) - ) + (none)) (defmethod copy-perms-to-level! ((this game-info) (lev level)) "Does the opposite of the previous, copies perms from game-info to level entities" (let ((lev-entities (-> lev bsp level entity))) (dotimes (lev-entity-idx (-> lev-entities length)) (let* ((lev-entity-perm (-> lev-entities data lev-entity-idx entity extra perm)) - (info-entity-perm (lookup-entity-perm-by-aid this (-> lev-entity-perm aid))) - ) + (info-entity-perm (lookup-entity-perm-by-aid this (-> lev-entity-perm aid)))) (when info-entity-perm ;; found the level entity in game-info, copy (set! (-> lev-entity-perm quad) (-> info-entity-perm quad)) ;; and also do this thing, not sure exactly what, but updates the status bits - (update-perm! - lev-entity-perm - 'try - (entity-perm-status bit-0 bit-1 dead bit-3 user-set-from-cstage complete bit-9) - ) - ) - ) - ) - ) + (update-perm! lev-entity-perm 'try (entity-perm-status bit-0 bit-1 dead bit-3 user-set-from-cstage complete bit-9)))))) 0 - (none) - ) + (none)) (defmethod print ((this continue-point)) (format #t "#<~A ~S @ #x~X>" (-> this type) (-> this name) this) - this - ) - + this) (defmethod debug-draw! ((this continue-point)) "Draw a continue point." (add-debug-x #t (bucket-id debug-no-zbuf) (-> this trans) (new 'static 'rgba :r #xff :a #x80)) - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - (-> this name) - (-> this trans) - (font-color white) - (new 'static 'vector2h :y 8) - ) + (add-debug-text-3d #t + (bucket-id debug-no-zbuf) + (-> this name) + (-> this trans) + (font-color white) + (new 'static 'vector2h :y 8)) (let ((a3-2 (vector-z-quaternion! (new-stack-vector0) (-> this quat)))) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - (-> this trans) - a3-2 - (meters 2) - (new 'static 'rgba :r #xff :g #x80 :a #x80) - ) - ) + (add-debug-vector #t + (bucket-id debug-no-zbuf) + (-> this trans) + a3-2 + (meters 2) + (new 'static 'rgba :r #xff :g #x80 :a #x80))) 0 - (none) - ) + (none)) (defun-debug trsq->continue-point ((arg0 trsq)) "Print out a continue point." (let ((a2-0 (level-get-target-inside *level*))) - (format #t "~%(static-continue-point ~A ()~%" (symbol->string (-> a2-0 name))) - ) + (format #t "~%(static-continue-point ~A ()~%" (symbol->string (-> a2-0 name)))) (format #t " (target ~m ~m ~m " (-> arg0 trans x) (-> arg0 trans y) (-> arg0 trans z)) (format #t "~f ~f ~f ~f)~%" (-> arg0 quat x) (-> arg0 quat y) (-> arg0 quat z) (-> arg0 quat w)) (let ((gp-1 *math-camera*)) - (format - #t - " (camera ~m ~m ~m ~f ~f ~f " - (-> gp-1 trans x) - (-> gp-1 trans y) - (-> gp-1 trans z) - (-> gp-1 inv-camera-rot vector 0 x) - (-> gp-1 inv-camera-rot vector 0 y) - (-> gp-1 inv-camera-rot vector 0 z) - ) - (format - #t - "~f ~f ~f ~f ~f ~f)~%" - (-> gp-1 inv-camera-rot vector 1 x) - (-> gp-1 inv-camera-rot vector 1 y) - (-> gp-1 inv-camera-rot vector 1 z) - (-> gp-1 inv-camera-rot vector 2 x) - (-> gp-1 inv-camera-rot vector 2 y) - (-> gp-1 inv-camera-rot vector 2 z) - ) - ) - (format - #t - " (load '~A '~A '~A '~A '~A)~%" - (-> *load-state* vis-nick) - (-> *load-state* want 0 name) - (-> *load-state* want 0 display?) - (-> *load-state* want 1 name) - (-> *load-state* want 1 display?) - ) + (format #t + " (camera ~m ~m ~m ~f ~f ~f " + (-> gp-1 trans x) + (-> gp-1 trans y) + (-> gp-1 trans z) + (-> gp-1 inv-camera-rot vector 0 x) + (-> gp-1 inv-camera-rot vector 0 y) + (-> gp-1 inv-camera-rot vector 0 z)) + (format #t + "~f ~f ~f ~f ~f ~f)~%" + (-> gp-1 inv-camera-rot vector 1 x) + (-> gp-1 inv-camera-rot vector 1 y) + (-> gp-1 inv-camera-rot vector 1 z) + (-> gp-1 inv-camera-rot vector 2 x) + (-> gp-1 inv-camera-rot vector 2 y) + (-> gp-1 inv-camera-rot vector 2 z))) + (format #t + " (load '~A '~A '~A '~A '~A)~%" + (-> *load-state* vis-nick) + (-> *load-state* want 0 name) + (-> *load-state* want 0 display?) + (-> *load-state* want 1 name) + (-> *load-state* want 1 display?)) (format #t " )~%") 0 - (none) - ) + (none)) (defun-debug game-task->string ((arg0 game-task)) - (enum->string game-task arg0) - ) + (enum->string game-task arg0)) (defmethod debug-print ((this game-info) (arg0 symbol)) (inspect this) @@ -966,12 +685,8 @@ (format #t "~Tentity-perm:~%") (let ((s5-1 (-> this perm-list))) (dotimes (s4-1 (-> s5-1 length)) - (format #t "~T~T~`entity-perm`P~%" (-> s5-1 data s4-1)) - ) - ) - ) - this - ) + (format #t "~T~T~`entity-perm`P~%" (-> s5-1 data s4-1))))) + this) ;; allocate storage for game info (let ((gp-0 *game-info*)) @@ -979,64 +694,38 @@ (when (zero? (-> gp-0 perm-list)) (set! (-> gp-0 perm-list) (new 'global 'entity-perm-array 4096)) (set! (-> gp-0 perm-list length) 0) - 0 - ) - + 0) ;; task perms (when (zero? (-> gp-0 task-perm-list)) (let ((v1-15 (new 'global 'entity-perm-array (the int (game-task max))))) ;; changed from hard-coded 116 to (game-task max) (set! (-> gp-0 task-perm-list) v1-15) (dotimes (a0-24 (-> v1-15 length)) - (set! (-> v1-15 data a0-24 task) (the-as game-task a0-24)) - ) - (logior! (-> v1-15 data 1 status) (entity-perm-status real-complete)) - ) - ) - + (set! (-> v1-15 data a0-24 task) (the-as game-task a0-24))) + (logior! (-> v1-15 data 1 status) (entity-perm-status real-complete)))) ;; text idx - (if (zero? (-> gp-0 text-ids-seen)) - (set! (-> gp-0 text-ids-seen) (new 'global 'bit-array 4095)) - ) - + (if (zero? (-> gp-0 text-ids-seen)) (set! (-> gp-0 text-ids-seen) (new 'global 'bit-array 4095))) ;; death locations (when (zero? (-> gp-0 death-pos)) (set! (-> gp-0 death-pos) (new 'global 'vector-array 64)) (set! (-> gp-0 death-pos length) 0) - 0 - ) - + 0) ;; initialize some fields - (if (zero? (-> gp-0 display-text-handle)) - (set! (-> gp-0 display-text-handle) (the-as handle #f)) - ) - (if (not (-> gp-0 current-continue)) - (set-continue! gp-0 *default-continue*) - ) + (if (zero? (-> gp-0 display-text-handle)) (set! (-> gp-0 display-text-handle) (the-as handle #f))) + (if (not (-> gp-0 current-continue)) (set-continue! gp-0 *default-continue*)) (set! (-> gp-0 want-auto-save) #f) (set! (-> gp-0 auto-save-proc) (the-as handle #f)) (set! (-> gp-0 auto-save-status) (mc-status-code ok)) (set! (-> gp-0 auto-save-card) 0) (set! (-> gp-0 auto-save-which) -1) (set! (-> gp-0 pov-camera-handle) (the-as handle #f)) - (set! (-> gp-0 other-camera-handle) (the-as handle #f)) - ) + (set! (-> gp-0 other-camera-handle) (the-as handle #f))) (defmethod get-death-count ((this game-info) (arg0 symbol)) - (let ((v1-13 - (if (and arg0 *target* (>= (-> *level-task-data-remap* length) (-> *target* current-level info index))) - (the-as - int - (-> this deaths-per-level (-> *level-task-data-remap* (+ (-> *target* current-level info index) -1))) - ) - (-> this fuel-cell-deaths) - ) - ) - ) + (let ((v1-13 (if (and arg0 *target* (>= (-> *level-task-data-remap* length) (-> *target* current-level info index))) + (the-as int (-> this deaths-per-level (-> *level-task-data-remap* (+ (-> *target* current-level info index) -1)))) + (-> this fuel-cell-deaths)))) 0 - (min 4 (/ v1-13 5)) - ) - ) + (min 4 (/ v1-13 5)))) (defmethod get-health-percent-lost ((this game-info) (arg0 symbol)) - (* 0.25 (the float (get-death-count this #f))) - ) + (* 0.25 (the float (get-death-count this #f)))) diff --git a/goal_src/jak1/engine/game/game-save.gc b/goal_src/jak1/engine/game/game-save.gc index d85e68f99f..43f0444d67 100644 --- a/goal_src/jak1/engine/game/game-save.gc +++ b/goal_src/jak1/engine/game/game-save.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/game-info.gc") (require "engine/ui/text-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") (require "engine/ps2/memcard-h.gc") (require "engine/load/loader.gc") -;; name: game-save.gc -;; name in dgo: game-save -;; dgos: GAME, ENGINE - ;; The game-save system implements the "background autosave" feature. ;; The process works like this: @@ -46,9 +41,7 @@ (no-space 14) (bad-version 15) (no-process 16) - (no-auto-save 17) - ) - + (no-auto-save 17)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; state serialization @@ -56,51 +49,50 @@ ;; identifier for game save fields (defenum game-save-elt - :type uint16 - (name 100) - (base-time 101) - (real-time 102) - (game-time 103) - (integral-time 104) - (continue 200) - (life 201) - (money 202) - (money-total 203) - (money-per-level 204) - (buzzer-total 205) - (fuel-cell 206) - (death-movie-tick 207) - (task-list 300) - (perm-list 301) - (hint-list 303) - (text-list 304) - (level-open-list 305) - (total-deaths 400) - (continue-deaths 401) - (fuel-cell-deaths 402) - (game-start-time 403) - (continue-timke 404) ;; typo in game - (death-time 405) - (hit-time 406) - (fuel-cell-pickup-time 407) - (continue-time 408) - (fuel-cell-time 409) - (enter-level-time 410) - (deaths-per-level 411) - (death-pos 412) - (auto-save-count 413) - (in-level-time 414) - (sfx-volume 500) - (music-volume 501) - (dialog-volume 502) - (language 503) - (screenx 504) - (screeny 505) - (vibration 506) - (play-hints 507) - (video-mode 508) - (aspect-ratio 509) - ) + :type uint16 + (name 100) + (base-time 101) + (real-time 102) + (game-time 103) + (integral-time 104) + (continue 200) + (life 201) + (money 202) + (money-total 203) + (money-per-level 204) + (buzzer-total 205) + (fuel-cell 206) + (death-movie-tick 207) + (task-list 300) + (perm-list 301) + (hint-list 303) + (text-list 304) + (level-open-list 305) + (total-deaths 400) + (continue-deaths 401) + (fuel-cell-deaths 402) + (game-start-time 403) + (continue-timke 404) ;; typo in game + (death-time 405) + (hit-time 406) + (fuel-cell-pickup-time 407) + (continue-time 408) + (fuel-cell-time 409) + (enter-level-time 410) + (deaths-per-level 411) + (death-pos 412) + (auto-save-count 413) + (in-level-time 414) + (sfx-volume 500) + (music-volume 501) + (dialog-volume 502) + (language 503) + (screenx 504) + (screeny 505) + (vibration 506) + (play-hints 507) + (video-mode 508) + (aspect-ratio 509)) ;; DECOMP BEGINS @@ -111,82 +103,71 @@ ;; the count/size fields determine how big it is. (deftype game-save-tag (structure) - ((user-object object 2) - (user-uint64 uint64 :overlay-at (-> user-object 0)) - (user-float0 float :overlay-at (-> user-object 0)) - (user-float float 2 :overlay-at (-> user-object 0)) - (user-int32 int32 2 :overlay-at (-> user-object 0)) - (user-uint32 uint32 2 :overlay-at (-> user-object 0)) - (user-int16 int16 4 :overlay-at (-> user-object 0)) - (user-uint16 uint16 4 :overlay-at (-> user-object 0)) - (user-int8 int8 8 :overlay-at (-> user-object 0)) - (user-int80 int8 :overlay-at (-> user-object 0)) - (user-int81 int8 :overlay-at (-> user-int8 1)) - (user-uint8 uint8 8 :overlay-at (-> user-object 0)) - (elt-count int32) - (elt-size uint16) - (elt-type game-save-elt) - ) - ) + ((user-object object 2) + (user-uint64 uint64 :overlay-at (-> user-object 0)) + (user-float0 float :overlay-at (-> user-object 0)) + (user-float float 2 :overlay-at (-> user-object 0)) + (user-int32 int32 2 :overlay-at (-> user-object 0)) + (user-uint32 uint32 2 :overlay-at (-> user-object 0)) + (user-int16 int16 4 :overlay-at (-> user-object 0)) + (user-uint16 uint16 4 :overlay-at (-> user-object 0)) + (user-int8 int8 8 :overlay-at (-> user-object 0)) + (user-int80 int8 :overlay-at (-> user-object 0)) + (user-int81 int8 :overlay-at (-> user-int8 1)) + (user-uint8 uint8 8 :overlay-at (-> user-object 0)) + (elt-count int32) + (elt-size uint16) + (elt-type game-save-elt))) ;; A game-save is a dynamic type that contains the full save. ;; it contains common metadata plus all the tags ;; the common metadata is used to display info about a save, without needing to ;; fully unpack the data stored in the tags. (deftype game-save (basic) - ((version int32) - (allocated-length int32) - (length int32) - (info-int32 int32 16) - (info-int8 int8 64 :overlay-at (-> info-int32 0)) - (level-index int32 :overlay-at (-> info-int32 0)) - (fuel-cell-count float :overlay-at (-> info-int32 1)) - (money-count float :overlay-at (-> info-int32 2)) - (buzzer-count float :overlay-at (-> info-int32 3)) - (completion-percentage float :overlay-at (-> info-int32 4)) - (minute uint8 :overlay-at (-> info-int32 5)) - (hour uint8 :overlay-at (-> info-int8 21)) - (week uint8 :overlay-at (-> info-int8 22)) - (day uint8 :overlay-at (-> info-int8 23)) - (month uint8 :overlay-at (-> info-int32 6)) - (year uint8 :overlay-at (-> info-int8 25)) - (new-game int32 :overlay-at (-> info-int32 7)) - (tag game-save-tag :inline :dynamic) - ) + ((version int32) + (allocated-length int32) + (length int32) + (info-int32 int32 16) + (info-int8 int8 64 :overlay-at (-> info-int32 0)) + (level-index int32 :overlay-at (-> info-int32 0)) + (fuel-cell-count float :overlay-at (-> info-int32 1)) + (money-count float :overlay-at (-> info-int32 2)) + (buzzer-count float :overlay-at (-> info-int32 3)) + (completion-percentage float :overlay-at (-> info-int32 4)) + (minute uint8 :overlay-at (-> info-int32 5)) + (hour uint8 :overlay-at (-> info-int8 21)) + (week uint8 :overlay-at (-> info-int8 22)) + (day uint8 :overlay-at (-> info-int8 23)) + (month uint8 :overlay-at (-> info-int32 6)) + (year uint8 :overlay-at (-> info-int8 25)) + (new-game int32 :overlay-at (-> info-int32 7)) + (tag game-save-tag :inline :dynamic)) (:methods - (new (symbol type int) _type_) - (save-to-file (_type_ string) _type_) - (load-from-file! (_type_ string) _type_) - (debug-print (_type_ symbol) _type_) - ) - ) + (new (symbol type int) _type_) + (save-to-file (_type_ string) _type_) + (load-from-file! (_type_ string) _type_) + (debug-print (_type_ symbol) _type_))) (defmethod asize-of ((this game-save)) "Get the size in memory of the save" - (the-as int (+ (-> game-save size) (the-as uint (-> this allocated-length)))) - ) + (the-as int (+ (-> game-save size) (the-as uint (-> this allocated-length))))) (defmethod new game-save ((allocation symbol) (type-to-make type) (arg0 int)) "Allocate a game save. arg0 is the number of bytes for tags." (let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (the-as uint arg0)))))) (set! (-> v0-0 version) SAVE_VERSION) (set! (-> v0-0 allocated-length) arg0) - v0-0 - ) - ) + v0-0)) (defun-debug game-save-elt->string ((arg0 game-save-elt)) - (enum->string game-save-elt arg0) - ) + (enum->string game-save-elt arg0)) (defun progress-level-index->string ((arg0 int)) "Convert an index for a level in the progress menu (not actual data levels) to a string (translated)." (if (< arg0 (-> *level-task-data* length)) - (lookup-text! *common-text* (-> *level-task-data* arg0 level-name-id) #f) - (the-as string #f) - ) - ) + (lookup-text! *common-text* (-> *level-task-data* arg0 level-name-id) #f) + (the-as string #f))) (defmethod debug-print ((this game-save) (detail symbol)) "Print a save to #t" @@ -199,162 +180,123 @@ (format #t "~Tmoney-count: ~f~%" (-> this money-count)) (format #t "~Tbuzzer-count: ~f~%" (-> this buzzer-count)) (format #t "~Tcompletion-percentage: ~f~%" (-> this completion-percentage)) - (format #t "~Tsave-time: ~x:~x ~x/~x/~x~%" - (-> this hour) - (-> this minute) - (-> this day) - (-> this month) - (-> this year) - ) + (format #t "~Tsave-time: ~x:~x ~x/~x/~x~%" (-> this hour) (-> this minute) (-> this day) (-> this month) (-> this year)) (format #t "~Ttag[]: @ #x~X~%" (-> this tag)) - ;; loop through tags (let ((tag (the-as game-save-tag (-> this tag))) - (tag-idx 0) - ) + (tag-idx 0)) (while (< (the-as int tag) (the-as int (&-> this tag 0 user-int8 (-> this length)))) (let ((a3-2 (game-save-elt->string (-> tag elt-type))) (t0-1 (-> tag elt-count)) (t1-1 (-> tag elt-size)) (t2-1 (-> tag user-uint64)) - (t3-0 (-> tag user-float0)) - ) - (format #t "~T [~3D] ~-32S [~3D/~3D] ~12D ~8f " - tag-idx - (game-save-elt->string (-> tag elt-type)) - (-> tag elt-count) - (-> tag elt-size) - (-> tag user-uint64) - (-> tag user-float0)) - ) + (t3-0 (-> tag user-float0))) + (format #t + "~T [~3D] ~-32S [~3D/~3D] ~12D ~8f " + tag-idx + (game-save-elt->string (-> tag elt-type)) + (-> tag elt-count) + (-> tag elt-size) + (-> tag user-uint64) + (-> tag user-float0))) (let ((v1-0 (-> tag elt-type))) (if (or (= v1-0 (game-save-elt name)) (= v1-0 (game-save-elt continue))) - (format #t "= \"~G\"~%" (&+ (the-as pointer tag) 16)) - (format #t "~%") - ) - ) + (format #t "= \"~G\"~%" (&+ (the-as pointer tag) 16)) + (format #t "~%"))) (when detail (case (-> tag elt-type) - (((game-save-elt money-per-level) (game-save-elt deaths-per-level) - ;; added in pc port + (((game-save-elt money-per-level) + (game-save-elt deaths-per-level) + ;; added in pc port (game-save-elt level-open-list)) (dotimes (prog-lev-idx (-> tag elt-count)) (let ((lev-name (progress-level-index->string prog-lev-idx))) (if lev-name - (format - #t - " ~-32S: ~D~%" - lev-name - (-> (the-as (pointer uint8) (&+ (the-as pointer (&-> (the-as (pointer uint8) tag) 16)) prog-lev-idx))) - ) - ) - ) - ) - ) + (format #t + " ~-32S: ~D~%" + lev-name + (-> (the-as (pointer uint8) (&+ (the-as pointer (&-> (the-as (pointer uint8) tag) 16)) prog-lev-idx)))))))) (((game-save-elt enter-level-time)) (dotimes (s2-2 (-> tag elt-count)) (let ((a2-14 (progress-level-index->string s2-2))) (if a2-14 - (format - #t - " ~-32S: ~D~%" - a2-14 - (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* s2-2 8)))) - ) - ) - ) - ) - ) + (format #t + " ~-32S: ~D~%" + a2-14 + (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* s2-2 8))))))))) (((game-save-elt in-level-time)) (dotimes (s2-3 (-> tag elt-count)) (let ((a2-15 (progress-level-index->string s2-3))) (if a2-15 - (format - #t - " ~-32S: ~D~%" - a2-15 - (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* s2-3 8)))) - ) - ) - ) - ) - ) + (format #t + " ~-32S: ~D~%" + a2-15 + (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* s2-3 8))))))))) (((game-save-elt fuel-cell-time)) (dotimes (s2-4 (-> tag elt-count)) (let ((a2-16 (game-task->string (the-as game-task s2-4)))) (if a2-16 - (format - #t - " ~-32S: ~D~%" - a2-16 - (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* s2-4 8)))) - ) - ) - ) - ) - ) + (format #t + " ~-32S: ~D~%" + a2-16 + (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* s2-4 8))))))))) ;; below here were added for pc port - (((game-save-elt hint-list)) - (dotimes (i (-> tag elt-count)) - (awhen (text-id->string (-> *game-info* hint-control i id)) - (format #t " ~-32S [~D]~%" it i) - (format #t " ~-32S: ~D~%" "start-time" (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* i (-> tag elt-size)))) 0)) - (format #t " ~-32S: ~D~%" "last-time-called" (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* i (-> tag elt-size)))) 1)) - (format #t " ~-32S: ~D~%" "num-attempts" (-> (the-as (pointer uint8) (&+ (&+ (the-as pointer tag) 16) (* i (-> tag elt-size)))) 16)) - (format #t " ~-32S: ~D~%" "num-success" (-> (the-as (pointer uint8) (&+ (&+ (the-as pointer tag) 16) (* i (-> tag elt-size)))) 17)) - ) - ) - ) + (dotimes (i (-> tag elt-count)) + (awhen (text-id->string (-> *game-info* hint-control i id)) + (format #t " ~-32S [~D]~%" it i) + (format #t + " ~-32S: ~D~%" + "start-time" + (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* i (-> tag elt-size)))) 0)) + (format #t + " ~-32S: ~D~%" + "last-time-called" + (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer tag) 16) (* i (-> tag elt-size)))) 1)) + (format #t + " ~-32S: ~D~%" + "num-attempts" + (-> (the-as (pointer uint8) (&+ (&+ (the-as pointer tag) 16) (* i (-> tag elt-size)))) 16)) + (format #t + " ~-32S: ~D~%" + "num-success" + (-> (the-as (pointer uint8) (&+ (&+ (the-as pointer tag) 16) (* i (-> tag elt-size)))) 17))))) (((game-save-elt text-list)) - (dotimes (i (* 8 (-> tag elt-count))) - (awhen (text-id->string (the text-id i)) - (unless (string= it "*unknown*") - (format #t " ~-32S: ~A~%" it (logtest? (-> (the-as (pointer uint8) (&+ (the-as pointer tag) 16)) (/ i 8)) (ash 1 (mod i 8)))) - )) - ) - ) + (dotimes (i (* 8 (-> tag elt-count))) + (awhen (text-id->string (the text-id i)) + (unless (string= it "*unknown*") + (format #t + " ~-32S: ~A~%" + it + (logtest? (-> (the-as (pointer uint8) (&+ (the-as pointer tag) 16)) (/ i 8)) (ash 1 (mod i 8)))))))) (((game-save-elt task-list) (game-save-elt perm-list)) - (dotimes (i (-> tag elt-count)) - (let ((perm (the-as entity-perm (&+ (the-as pointer tag) 16 (* i 16))))) - (format #t "~T ~-4D: ~20D/#x~16x[~8f/~8f]" i (-> perm user-uint64) (-> perm user-uint64) (-> perm user-float 0) (-> perm user-float 1)) - (format #t " task: ~-32S #x~4x~%" (game-task->string (-> perm task)) (-> perm aid)) - (format #t "~T~T (entity-perm-status ") - (bit-enum->string entity-perm-status (-> perm status) #t) - (format #t ")~%") - ) - ) - ) - ) - ) + (dotimes (i (-> tag elt-count)) + (let ((perm (the-as entity-perm (&+ (the-as pointer tag) 16 (* i 16))))) + (format #t + "~T ~-4D: ~20D/#x~16x[~8f/~8f]" + i + (-> perm user-uint64) + (-> perm user-uint64) + (-> perm user-float 0) + (-> perm user-float 1)) + (format #t " task: ~-32S #x~4x~%" (game-task->string (-> perm task)) (-> perm aid)) + (format #t "~T~T (entity-perm-status ") + (bit-enum->string entity-perm-status (-> perm status) #t) + (format #t ")~%")))))) (set! tag - (the-as - game-save-tag - (&+ (the-as pointer tag) (logand -16 (+ (* (the-as int (-> tag elt-size)) (-> tag elt-count)) 31))) - ) - ) - (+! tag-idx 1) - ) - ) - this - ) + (the-as game-save-tag + (&+ (the-as pointer tag) (logand -16 (+ (* (the-as int (-> tag elt-size)) (-> tag elt-count)) 31))))) + (+! tag-idx 1))) + this) (defmethod inspect ((this game-save)) - (debug-print this #f) - ) + (debug-print this #f)) (defmethod save-game! ((this game-info) (arg0 game-save) (arg1 string)) "Update the game-save to have the info from the current game state" - ;; some stuff lives in the levels and needs to be copied into game-info. (dotimes (s3-0 (-> *level* length)) - (let ((a1-1 (-> *level* level s3-0))) - (if (= (-> a1-1 status) 'active) - (copy-perms-from-level! this a1-1) - ) - ) - ) - + (let ((a1-1 (-> *level* level s3-0))) (if (= (-> a1-1 status) 'active) (copy-perms-from-level! this a1-1)))) ;; set common data (set! (-> arg0 length) 0) (set! (-> arg0 version) 1) @@ -369,8 +311,7 @@ (set! (-> arg0 fuel-cell-count) 0.0) (set! (-> arg0 money-count) 0.0) (set! (-> arg0 buzzer-count) 0.0) - (set! (-> arg0 completion-percentage) 0.0) - ) + (set! (-> arg0 completion-percentage) 0.0)) (let ((s3-1 (new 'stack 'scf-time))) (scf-get-time s3-1) (when (zero? (-> s3-1 stat)) @@ -379,432 +320,273 @@ (set! (-> arg0 day) (-> s3-1 day)) (set! (-> arg0 week) (-> s3-1 week)) (set! (-> arg0 month) (-> s3-1 month)) - (set! (-> arg0 year) (-> s3-1 year)) - ) - ) + (set! (-> arg0 year) (-> s3-1 year)))) (let ((s3-2 (the-as object (-> arg0 tag)))) (let ((s2-0 (-> (the-as (inline-array game-save-tag) s3-2) 0))) (set! (-> s2-0 elt-type) (game-save-elt name)) (set! (-> s2-0 elt-count) (+ (length arg1) 1)) - (set! (-> s2-0 elt-size) (the-as uint 1)) - ) + (set! (-> s2-0 elt-size) (the-as uint 1))) (copy-charp<-charp (the-as (pointer uint8) (-> (the-as (inline-array game-save-tag) s3-2) 1)) (-> arg1 data)) - (let ((v1-37 (&+ - (the-as pointer s3-2) - (+ (logand -16 (+ (-> (the-as (inline-array game-save-tag) s3-2) 0 elt-count) 15)) 16) - ) - ) - ) + (let ((v1-37 (&+ (the-as pointer s3-2) (+ (logand -16 (+ (-> (the-as (inline-array game-save-tag) s3-2) 0 elt-count) 15)) 16)))) (let ((a0-15 (the-as game-save-tag (&+ v1-37 0)))) (set! (-> a0-15 elt-type) (game-save-elt base-time)) (set! (-> a0-15 elt-count) 0) - (set! (-> a0-15 user-uint64) (the-as uint (current-time))) - ) + (set! (-> a0-15 user-uint64) (the-as uint (current-time)))) (let ((v1-38 (&+ v1-37 16))) (let ((a0-16 (the-as game-save-tag (&+ v1-38 0)))) (set! (-> a0-16 elt-type) (game-save-elt real-time)) (set! (-> a0-16 elt-count) 0) - (set! (-> a0-16 user-uint64) (the-as uint (-> *display* real-frame-counter))) - ) + (set! (-> a0-16 user-uint64) (the-as uint (-> *display* real-frame-counter)))) (let ((v1-39 (&+ v1-38 16))) (let ((a0-17 (the-as game-save-tag (&+ v1-39 0)))) (set! (-> a0-17 elt-type) (game-save-elt game-time)) (set! (-> a0-17 elt-count) 0) - (set! (-> a0-17 user-uint64) (the-as uint (-> *display* game-frame-counter))) - ) + (set! (-> a0-17 user-uint64) (the-as uint (-> *display* game-frame-counter)))) (let ((v1-40 (&+ v1-39 16))) (let ((a0-18 (the-as game-save-tag (&+ v1-40 0)))) (set! (-> a0-18 elt-type) (game-save-elt integral-time)) (set! (-> a0-18 elt-count) 0) - (set! (-> a0-18 user-uint64) (the-as uint (-> *display* integral-frame-counter))) - ) + (set! (-> a0-18 user-uint64) (the-as uint (-> *display* integral-frame-counter)))) (let ((s4-1 (the-as object (&+ v1-40 16)))) (let ((s3-3 (-> this current-continue name))) (let ((s2-1 (the-as game-save-tag (-> (the-as game-save-tag s4-1) user-object)))) (set! (-> s2-1 elt-type) (game-save-elt continue)) (set! (-> s2-1 elt-count) (+ ((method-of-type string length) s3-3) 1)) - (set! (-> s2-1 elt-size) (the-as uint 1)) - ) - (copy-charp<-charp - (the-as (pointer uint8) (the-as game-save-tag (&+ (the-as game-save-tag s4-1) 16))) - (-> s3-3 data) - ) - ) + (set! (-> s2-1 elt-size) (the-as uint 1))) + (copy-charp<-charp (the-as (pointer uint8) (the-as game-save-tag (&+ (the-as game-save-tag s4-1) 16))) (-> s3-3 data))) (let ((v1-50 (&+ (the-as pointer s4-1) (+ (logand -16 (+ (-> (the-as game-save-tag s4-1) elt-count) 15)) 16)))) (let ((a0-24 (the-as game-save-tag (&+ v1-50 0)))) (set! (-> a0-24 elt-type) (game-save-elt life)) (set! (-> a0-24 elt-count) 0) - (set! (-> a0-24 user-float0) (-> this life)) - ) + (set! (-> a0-24 user-float0) (-> this life))) (let ((v1-51 (&+ v1-50 16))) (let ((a0-25 (the-as game-save-tag (&+ v1-51 0)))) (set! (-> a0-25 elt-type) (game-save-elt buzzer-total)) (set! (-> a0-25 elt-count) 0) - (set! (-> a0-25 user-float0) (-> this buzzer-total)) - ) + (set! (-> a0-25 user-float0) (-> this buzzer-total))) (let ((v1-52 (&+ v1-51 16))) (let ((a0-26 (the-as game-save-tag (&+ v1-52 0)))) (set! (-> a0-26 elt-type) (game-save-elt fuel-cell)) (set! (-> a0-26 elt-count) 0) - (set! (-> a0-26 user-float0) (-> this fuel)) - ) + (set! (-> a0-26 user-float0) (-> this fuel))) (let ((v1-53 (&+ v1-52 16))) (let ((a0-27 (the-as game-save-tag (&+ v1-53 0)))) (set! (-> a0-27 elt-type) (game-save-elt death-movie-tick)) (set! (-> a0-27 elt-count) 0) - (set! (-> a0-27 user-uint64) (the-as uint (-> this death-movie-tick))) - ) + (set! (-> a0-27 user-uint64) (the-as uint (-> this death-movie-tick)))) (let ((v1-54 (&+ v1-53 16))) (let ((a0-28 (the-as game-save-tag (&+ v1-54 0)))) (set! (-> a0-28 elt-type) (game-save-elt money)) (set! (-> a0-28 elt-count) 0) - (set! (-> a0-28 user-float0) (-> this money)) - ) + (set! (-> a0-28 user-float0) (-> this money))) (let ((v1-55 (&+ v1-54 16))) (let ((a0-29 (the-as game-save-tag (&+ v1-55 0)))) (set! (-> a0-29 elt-type) (game-save-elt money-total)) (set! (-> a0-29 elt-count) 0) - (set! (-> a0-29 user-float0) (-> this money-total)) - ) + (set! (-> a0-29 user-float0) (-> this money-total))) (let ((v1-56 (&+ v1-55 16))) (let ((a0-30 (the-as game-save-tag (&+ v1-56 0)))) (set! (-> a0-30 elt-type) (game-save-elt money-per-level)) (set! (-> a0-30 elt-count) 32) - (set! (-> a0-30 elt-size) (the-as uint 1)) - ) + (set! (-> a0-30 elt-size) (the-as uint 1))) (let ((v1-57 (&+ v1-56 16))) (dotimes (a0-31 32) - (set! (-> (the-as (pointer uint8) (&+ v1-57 a0-31))) (-> this money-per-level a0-31)) - ) + (set! (-> (the-as (pointer uint8) (&+ v1-57 a0-31))) (-> this money-per-level a0-31))) (let ((v1-58 (&+ v1-57 32))) (let ((a0-34 (the-as object (&+ v1-58 0)))) (set! (-> (the-as game-save-tag a0-34) elt-type) (game-save-elt level-open-list)) (set! (-> (the-as game-save-tag a0-34) elt-count) 32) - (set! (-> (the-as game-save-tag a0-34) elt-size) (the-as uint 1)) - ) + (set! (-> (the-as game-save-tag a0-34) elt-size) (the-as uint 1))) (let ((v1-59 (&+ v1-58 16))) (dotimes (a0-35 32) - (set! (-> (the-as (pointer uint8) (&+ v1-59 a0-35))) (-> this level-opened a0-35)) - ) + (set! (-> (the-as (pointer uint8) (&+ v1-59 a0-35))) (-> this level-opened a0-35))) (let ((v1-60 (&+ v1-59 32)) - (s4-2 (-> (the-as (pointer int32) (-> this perm-list)) 0)) - ) + (s4-2 (-> (the-as (pointer int32) (-> this perm-list)) 0))) (let ((a0-39 (the-as game-save-tag (&+ v1-60 0)))) (set! (-> a0-39 elt-type) (game-save-elt perm-list)) (set! (-> a0-39 elt-count) s4-2) - (set! (-> a0-39 elt-size) (the-as uint 16)) - ) + (set! (-> a0-39 elt-size) (the-as uint 16))) (let ((s3-4 (&+ v1-60 16))) (dotimes (s2-2 s4-2) - (mem-copy! - (the-as pointer (the-as game-save-tag (&+ s3-4 (* s2-2 16)))) - (the-as pointer (-> this perm-list data s2-2)) - 16 - ) - ) + (mem-copy! (the-as pointer (the-as game-save-tag (&+ s3-4 (* s2-2 16)))) + (the-as pointer (-> this perm-list data s2-2)) + 16)) (let ((v1-68 (&+ s3-4 (logand -16 (+ (* s4-2 16) 15)))) - (s4-3 (-> this task-perm-list length)) - ) + (s4-3 (-> this task-perm-list length))) (let ((a0-45 (the-as game-save-tag (&+ v1-68 0)))) (set! (-> a0-45 elt-type) (game-save-elt task-list)) (set! (-> a0-45 elt-count) s4-3) - (set! (-> a0-45 elt-size) (the-as uint 16)) - ) + (set! (-> a0-45 elt-size) (the-as uint 16))) (let ((s3-5 (&+ v1-68 16))) (dotimes (s2-3 s4-3) - (mem-copy! - (the-as pointer (the-as game-save-tag (&+ s3-5 (* s2-3 16)))) - (the-as pointer (-> this task-perm-list data s2-3)) - 16 - ) - ) + (mem-copy! (the-as pointer (the-as game-save-tag (&+ s3-5 (* s2-3 16)))) + (the-as pointer (-> this task-perm-list data s2-3)) + 16)) (let ((a0-49 (&+ s3-5 (logand -16 (+ (* s4-3 16) 15)))) - (v1-79 (/ (logand -8 (+ (-> this text-ids-seen allocated-length) 7)) 8)) - ) + (v1-79 (/ (logand -8 (+ (-> this text-ids-seen allocated-length) 7)) 8))) (let ((a1-46 (the-as object (&+ a0-49 0)))) (set! (-> (the-as game-save-tag a1-46) elt-type) (game-save-elt text-list)) (set! (-> (the-as game-save-tag a1-46) elt-count) v1-79) - (set! (-> (the-as game-save-tag a1-46) elt-size) (the-as uint 1)) - ) + (set! (-> (the-as game-save-tag a1-46) elt-size) (the-as uint 1))) (let ((a0-50 (&+ a0-49 16))) (dotimes (a1-47 v1-79) - (set! (-> (the-as (pointer uint8) (&+ a0-50 a1-47))) (-> this text-ids-seen bytes a1-47)) - ) + (set! (-> (the-as (pointer uint8) (&+ a0-50 a1-47))) (-> this text-ids-seen bytes a1-47))) (let ((a0-51 (&+ a0-50 (logand -16 (+ v1-79 15)))) - (v1-84 (-> this hint-control length)) - ) + (v1-84 (-> this hint-control length))) (let ((a1-51 (the-as game-save-tag (&+ a0-51 0)))) (set! (-> a1-51 elt-type) (game-save-elt hint-list)) (set! (-> a1-51 elt-count) v1-84) - (set! (-> a1-51 elt-size) (the-as uint 32)) - ) + (set! (-> a1-51 elt-size) (the-as uint 32))) (let ((a0-52 (&+ a0-51 16))) (dotimes (a1-52 v1-84) (set! (-> (the-as (pointer int64) (&+ a0-52 (* (* a1-52 4) 8)))) (-> this hint-control a1-52 start-time)) - (set! (-> (the-as (pointer int64) (&+ a0-52 (* (+ (* a1-52 4) 1) 8)))) - (-> this hint-control a1-52 last-time-called) - ) + (set! (-> (the-as (pointer int64) (&+ a0-52 (* (+ (* a1-52 4) 1) 8)))) (-> this hint-control a1-52 last-time-called)) (set! (-> (the-as (pointer int8) (&+ a0-52 (+ (* a1-52 32) 16)))) (-> this hint-control a1-52 num-attempts)) - (set! (-> (the-as (pointer int8) (&+ a0-52 (+ (* a1-52 32) 17)))) (-> this hint-control a1-52 num-success)) - ) + (set! (-> (the-as (pointer int8) (&+ a0-52 (+ (* a1-52 32) 17)))) (-> this hint-control a1-52 num-success))) (let ((v1-86 (&+ a0-52 (* v1-84 32)))) (let ((a0-54 (the-as game-save-tag (&+ v1-86 0)))) (set! (-> a0-54 elt-type) (game-save-elt auto-save-count)) (set! (-> a0-54 elt-count) 0) - (set! (-> a0-54 user-uint64) (the-as uint (-> this auto-save-count))) - ) + (set! (-> a0-54 user-uint64) (the-as uint (-> this auto-save-count)))) (let ((v1-87 (&+ v1-86 16))) (let ((a0-55 (the-as game-save-tag (&+ v1-87 0)))) (set! (-> a0-55 elt-type) (game-save-elt total-deaths)) (set! (-> a0-55 elt-count) 0) - (set! (-> a0-55 user-uint64) (the-as uint (-> this total-deaths))) - ) + (set! (-> a0-55 user-uint64) (the-as uint (-> this total-deaths)))) (let ((v1-88 (&+ v1-87 16))) (let ((a0-56 (the-as game-save-tag (&+ v1-88 0)))) (set! (-> a0-56 elt-type) (game-save-elt continue-deaths)) (set! (-> a0-56 elt-count) 0) - (set! (-> a0-56 user-uint64) (the-as uint (-> this continue-deaths))) - ) + (set! (-> a0-56 user-uint64) (the-as uint (-> this continue-deaths)))) (let ((v1-89 (&+ v1-88 16))) (let ((a0-57 (the-as game-save-tag (&+ v1-89 0)))) (set! (-> a0-57 elt-type) (game-save-elt fuel-cell-deaths)) (set! (-> a0-57 elt-count) 0) - (set! (-> a0-57 user-uint64) (the-as uint (-> this fuel-cell-deaths))) - ) + (set! (-> a0-57 user-uint64) (the-as uint (-> this fuel-cell-deaths)))) (let ((v1-90 (&+ v1-89 16))) (let ((a0-58 (the-as game-save-tag (&+ v1-90 0)))) (set! (-> a0-58 elt-type) (game-save-elt game-start-time)) (set! (-> a0-58 elt-count) 0) - (set! (-> a0-58 user-uint64) (the-as uint (-> this game-start-time))) - ) + (set! (-> a0-58 user-uint64) (the-as uint (-> this game-start-time)))) (let ((v1-91 (&+ v1-90 16))) (let ((a0-59 (the-as game-save-tag (&+ v1-91 0)))) (set! (-> a0-59 elt-type) (game-save-elt continue-time)) (set! (-> a0-59 elt-count) 0) - (set! (-> a0-59 user-uint64) (the-as uint (-> this continue-time))) - ) + (set! (-> a0-59 user-uint64) (the-as uint (-> this continue-time)))) (let ((v1-92 (&+ v1-91 16))) (let ((a0-60 (the-as game-save-tag (&+ v1-92 0)))) (set! (-> a0-60 elt-type) (game-save-elt death-time)) (set! (-> a0-60 elt-count) 0) - (set! (-> a0-60 user-uint64) (the-as uint (-> this death-time))) - ) + (set! (-> a0-60 user-uint64) (the-as uint (-> this death-time)))) (let ((v1-93 (&+ v1-92 16))) (let ((a0-61 (the-as game-save-tag (&+ v1-93 0)))) (set! (-> a0-61 elt-type) (game-save-elt hit-time)) (set! (-> a0-61 elt-count) 0) - (set! (-> a0-61 user-uint64) (the-as uint (-> this hit-time))) - ) + (set! (-> a0-61 user-uint64) (the-as uint (-> this hit-time)))) (let ((v1-94 (&+ v1-93 16))) (let ((a0-62 (the-as game-save-tag (&+ v1-94 0)))) (set! (-> a0-62 elt-type) (game-save-elt fuel-cell-pickup-time)) (set! (-> a0-62 elt-count) 0) - (set! (-> a0-62 user-uint64) (the-as uint (-> this fuel-cell-pickup-time))) - ) + (set! (-> a0-62 user-uint64) (the-as uint (-> this fuel-cell-pickup-time)))) (let ((v1-95 (&+ v1-94 16))) (let ((a0-63 (the-as game-save-tag (&+ v1-95 0)))) (set! (-> a0-63 elt-type) (game-save-elt fuel-cell-time)) (set! (-> a0-63 elt-count) (the int (game-task max))) ;; changed from hard-coded 116 to (game-task max) - (set! (-> a0-63 elt-size) (the-as uint 8)) - ) + (set! (-> a0-63 elt-size) (the-as uint 8))) (let ((v1-96 (&+ v1-95 16))) (let ((a0-64 (the-as object 0))) (while (< (the-as int a0-64) (the int (game-task max))) ;; changed from hard-coded 116 to (game-task max) - (set! (-> (the-as (pointer int64) (&+ v1-96 (* (the-as int a0-64) 8)))) - (-> this fuel-cell-time (the-as int a0-64)) - ) - (set! a0-64 (+ (the-as int a0-64) 1)) - ) - ) + (set! (-> (the-as (pointer int64) (&+ v1-96 (* (the-as int a0-64) 8)))) (-> this fuel-cell-time (the-as int a0-64))) + (set! a0-64 (+ (the-as int a0-64) 1)))) (let ((v1-97 (&+ v1-96 928))) (let ((a0-67 (the-as game-save-tag (&+ v1-97 0)))) (set! (-> a0-67 elt-type) (game-save-elt deaths-per-level)) (set! (-> a0-67 elt-count) 32) - (set! (-> a0-67 elt-size) (the-as uint 1)) - ) + (set! (-> a0-67 elt-size) (the-as uint 1))) (let ((v1-98 (&+ v1-97 16))) (dotimes (a0-68 32) - (set! (-> (the-as (pointer uint8) (&+ v1-98 a0-68))) (-> this deaths-per-level a0-68)) - ) + (set! (-> (the-as (pointer uint8) (&+ v1-98 a0-68))) (-> this deaths-per-level a0-68))) (let ((v1-99 (&+ v1-98 32))) (let ((a0-71 (the-as game-save-tag (&+ v1-99 0)))) (set! (-> a0-71 elt-type) (game-save-elt enter-level-time)) (set! (-> a0-71 elt-count) 32) - (set! (-> a0-71 elt-size) (the-as uint 8)) - ) + (set! (-> a0-71 elt-size) (the-as uint 8))) (let ((v1-100 (&+ v1-99 16))) (dotimes (a0-72 32) - (set! (-> (the-as (pointer int64) (&+ v1-100 (* a0-72 8)))) (-> this enter-level-time a0-72)) - ) + (set! (-> (the-as (pointer int64) (&+ v1-100 (* a0-72 8)))) (-> this enter-level-time a0-72))) (let ((v1-101 (&+ v1-100 256))) (let ((a0-75 (the-as game-save-tag (&+ v1-101 0)))) (set! (-> a0-75 elt-type) (game-save-elt in-level-time)) (set! (-> a0-75 elt-count) 32) - (set! (-> a0-75 elt-size) (the-as uint 8)) - ) + (set! (-> a0-75 elt-size) (the-as uint 8))) (let ((v1-102 (&+ v1-101 16))) (dotimes (a0-76 32) - (set! (-> (the-as (pointer int64) (&+ v1-102 (* a0-76 8)))) (-> this in-level-time a0-76)) - ) + (set! (-> (the-as (pointer int64) (&+ v1-102 (* a0-76 8)))) (-> this in-level-time a0-76))) (let ((v1-103 (&+ v1-102 256))) (let ((a0-79 (the-as game-save-tag (&+ v1-103 0)))) (set! (-> a0-79 elt-type) (game-save-elt sfx-volume)) (set! (-> a0-79 elt-count) 0) - (set! (-> a0-79 user-float0) (-> *setting-control* default sfx-volume)) - ) + (set! (-> a0-79 user-float0) (-> *setting-control* default sfx-volume))) (let ((v1-104 (&+ v1-103 16))) (let ((a0-80 (the-as game-save-tag (&+ v1-104 0)))) (set! (-> a0-80 elt-type) (game-save-elt music-volume)) (set! (-> a0-80 elt-count) 0) - (set! (-> a0-80 user-float0) (-> *setting-control* default music-volume)) - ) + (set! (-> a0-80 user-float0) (-> *setting-control* default music-volume))) (let ((v1-105 (&+ v1-104 16))) (let ((a0-81 (the-as game-save-tag (&+ v1-105 0)))) (set! (-> a0-81 elt-type) (game-save-elt dialog-volume)) (set! (-> a0-81 elt-count) 0) - (set! (-> a0-81 user-float0) (-> *setting-control* default dialog-volume)) - ) + (set! (-> a0-81 user-float0) (-> *setting-control* default dialog-volume))) (let ((v1-106 (&+ v1-105 16))) (let ((a0-82 (the-as game-save-tag (&+ v1-106 0)))) (set! (-> a0-82 elt-type) (game-save-elt language)) (set! (-> a0-82 elt-count) 0) - (set! (-> a0-82 user-uint64) (the-as uint (-> *setting-control* default language))) - ) + (set! (-> a0-82 user-uint64) (the-as uint (-> *setting-control* default language)))) (let ((v1-107 (&+ v1-106 16))) (let ((a0-83 (the-as game-save-tag (&+ v1-107 0)))) (set! (-> a0-83 elt-type) (game-save-elt screenx)) (set! (-> a0-83 elt-count) 0) - (set! (-> a0-83 user-float0) (the float (-> *setting-control* default screenx))) - ) + (set! (-> a0-83 user-float0) (the float (-> *setting-control* default screenx)))) (let ((v1-108 (&+ v1-107 16))) (let ((a0-84 (the-as game-save-tag (&+ v1-108 0)))) (set! (-> a0-84 elt-type) (game-save-elt screeny)) (set! (-> a0-84 elt-count) 0) - (set! (-> a0-84 user-float0) (the float (-> *setting-control* default screeny))) - ) + (set! (-> a0-84 user-float0) (the float (-> *setting-control* default screeny)))) (let ((v1-109 (&+ v1-108 16))) (let ((a0-85 (the-as game-save-tag (&+ v1-109 0)))) (set! (-> a0-85 elt-type) (game-save-elt vibration)) (set! (-> a0-85 elt-count) 0) - (set! (-> a0-85 user-uint64) (the-as uint (if (-> *setting-control* default vibration) - 1 - 0 - ) - ) - ) - ) + (set! (-> a0-85 user-uint64) (the-as uint (if (-> *setting-control* default vibration) 1 0)))) (let ((v1-110 (&+ v1-109 16))) (let ((a0-86 (the-as game-save-tag (&+ v1-110 0)))) (set! (-> a0-86 elt-type) (game-save-elt play-hints)) (set! (-> a0-86 elt-count) 0) - (set! (-> a0-86 user-uint64) (the-as uint (if (-> *setting-control* default play-hints) - 1 - 0 - ) - ) - ) - ) + (set! (-> a0-86 user-uint64) (the-as uint (if (-> *setting-control* default play-hints) 1 0)))) (let ((v1-111 (&+ v1-110 16))) (let ((a0-87 (the-as game-save-tag (&+ v1-111 0)))) (set! (-> a0-87 elt-type) (game-save-elt video-mode)) (set! (-> a0-87 elt-count) 0) (let ((a1-121 (-> *setting-control* default video-mode))) - (set! (-> a0-87 user-uint64) (the-as uint (cond - ((= a1-121 'ntsc) - 1 - ) - ((= a1-121 'pal) - 2 - ) - (else - 0 - ) - ) - ) - ) - ) - ) + (set! (-> a0-87 user-uint64) + (the-as uint + (cond + ((= a1-121 'ntsc) 1) + ((= a1-121 'pal) 2) + (else 0)))))) (let ((v1-112 (&+ v1-111 16))) (let ((a0-88 (the-as object (&+ v1-112 0)))) (set! (-> (the-as game-save-tag a0-88) elt-type) (game-save-elt aspect-ratio)) (set! (-> (the-as game-save-tag a0-88) elt-count) 0) (let ((a1-125 (-> *setting-control* default aspect-ratio))) - (set! (-> (the-as (pointer int64) a0-88)) (cond - ((= a1-125 'aspect4x3) - 1 - ) - ((= a1-125 'aspect16x9) - 2 - ) - (else - 0 - ) - ) - ) - ) - ) - (set! (-> arg0 length) (&- (&+ v1-112 16) (the-as uint (the-as pointer (-> arg0 tag))))) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (set! (-> (the-as (pointer int64) a0-88)) + (cond + ((= a1-125 'aspect4x3) 1) + ((= a1-125 'aspect16x9) 2) + (else 0))))) + (set! (-> arg0 length) (&- (&+ v1-112 16) (the-as uint (the-as pointer (-> arg0 tag)))))))))))))))))))))))))))))))))))))))))))))))))))))))) (if (< (-> arg0 allocated-length) (-> arg0 length)) - (format - 0 - "ERROR: SAVEGAME: fatal error, save is using ~D of ~D bytes." - (-> arg0 length) - (-> arg0 allocated-length) - ) - ) - (none) - ) + (format 0 "ERROR: SAVEGAME: fatal error, save is using ~D of ~D bytes." (-> arg0 length) (-> arg0 allocated-length))) + (none)) (defmethod load-game! ((this game-info) (save game-save)) "Copy save data from a game-save to a game-info" @@ -813,42 +595,21 @@ (while (< (the-as int save-data) (the-as int (+ (+ (-> save length) 76) (the-as int save)))) (let ((a0-1 (-> save-data elt-type))) (cond - ((= a0-1 (game-save-elt sfx-volume)) - (set! (-> *setting-control* default sfx-volume) (-> save-data user-float0)) - ) - ((= a0-1 (game-save-elt music-volume)) - (set! (-> *setting-control* default music-volume) (-> save-data user-float0)) - ) - ((= a0-1 (game-save-elt dialog-volume)) - (set! (-> *setting-control* default dialog-volume) (-> save-data user-float0)) - ) + ((= a0-1 (game-save-elt sfx-volume)) (set! (-> *setting-control* default sfx-volume) (-> save-data user-float0))) + ((= a0-1 (game-save-elt music-volume)) (set! (-> *setting-control* default music-volume) (-> save-data user-float0))) + ((= a0-1 (game-save-elt dialog-volume)) (set! (-> *setting-control* default dialog-volume) (-> save-data user-float0))) ((= a0-1 (game-save-elt language)) - (set! (-> *setting-control* default language) (the-as language-enum (-> save-data user-uint64))) - ) - ((= a0-1 (game-save-elt vibration)) - (set! (-> *setting-control* default vibration) (= (-> save-data user-uint64) 1)) - ) - ((= a0-1 (game-save-elt play-hints)) - (set! (-> *setting-control* default play-hints) (= (-> save-data user-uint64) 1)) - ) - ) - ) - (set! save-data (the-as game-save-tag - (&+ (the-as pointer save-data) - (logand -16 (+ (* (the-as int (-> save-data elt-size)) (-> save-data elt-count)) 31)) - ) - ) - ) - ) - ) - + (set! (-> *setting-control* default language) (the-as language-enum (-> save-data user-uint64)))) + ((= a0-1 (game-save-elt vibration)) (set! (-> *setting-control* default vibration) (= (-> save-data user-uint64) 1))) + ((= a0-1 (game-save-elt play-hints)) (set! (-> *setting-control* default play-hints) (= (-> save-data user-uint64) 1))))) + (set! save-data + (the-as game-save-tag + (&+ (the-as pointer save-data) (logand -16 (+ (* (the-as int (-> save-data elt-size)) (-> save-data elt-count)) 31))))))) ;; if we're a new game, set our checkpoint. (when (nonzero? (-> save new-game)) (set-continue! this "game-start") (set! save save) - (goto cfg-134) - ) - + (goto cfg-134)) ;; loop over all tags (let ((data (the-as game-save-tag (-> save tag)))) (while (< (the-as int data) (the-as int (&-> save tag 0 user-int8 (-> save length)))) @@ -858,210 +619,103 @@ (set! (current-time) (the-as time-frame (-> data user-uint64))) (set! (-> *display* old-base-frame-counter) (+ (current-time) -1)) (let ((frame-counter-diff (- (current-time) old-base-frame))) - (if (nonzero? (-> this blackout-time)) - (+! (-> this blackout-time) frame-counter-diff) - ) - (if (nonzero? (-> this letterbox-time)) - (+! (-> this letterbox-time) frame-counter-diff) - ) - (if (nonzero? (-> this hint-play-time)) - (+! (-> this hint-play-time) frame-counter-diff) - ) - (if (nonzero? (-> this display-text-time)) - (+! (-> this display-text-time) frame-counter-diff) - ) - ) - ) - (buzz-stop! 0) - ) + (if (nonzero? (-> this blackout-time)) (+! (-> this blackout-time) frame-counter-diff)) + (if (nonzero? (-> this letterbox-time)) (+! (-> this letterbox-time) frame-counter-diff)) + (if (nonzero? (-> this hint-play-time)) (+! (-> this hint-play-time) frame-counter-diff)) + (if (nonzero? (-> this display-text-time)) (+! (-> this display-text-time) frame-counter-diff)))) + (buzz-stop! 0)) (((game-save-elt game-time)) (set! (-> *display* game-frame-counter) (the-as time-frame (-> data user-uint64))) - (set! (-> *display* old-game-frame-counter) (+ (-> *display* game-frame-counter) -1)) - ) + (set! (-> *display* old-game-frame-counter) (+ (-> *display* game-frame-counter) -1))) (((game-save-elt real-time)) (set! (-> *display* real-frame-counter) (the-as time-frame (-> data user-uint64))) - (set! (-> *display* old-real-frame-counter) (+ (-> *display* real-frame-counter) -1)) - ) + (set! (-> *display* old-real-frame-counter) (+ (-> *display* real-frame-counter) -1))) (((game-save-elt integral-time)) (set! (-> *display* integral-frame-counter) (the-as time-frame (-> data user-uint64))) - (set! (-> *display* old-integral-frame-counter) (+ (-> *display* integral-frame-counter) -1)) - ) + (set! (-> *display* old-integral-frame-counter) (+ (-> *display* integral-frame-counter) -1))) (((game-save-elt continue)) (format (clear *temp-string*) "~G" (&+ (the-as pointer data) 16)) - (set-continue! this *temp-string*) - ) - (((game-save-elt life)) - (set! (-> this life) (-> data user-float0)) - ) - (((game-save-elt buzzer-total)) - (set! (-> this buzzer-total) (-> data user-float0)) - ) - (((game-save-elt fuel-cell)) - (set! (-> this fuel) (-> data user-float0)) - ) - (((game-save-elt death-movie-tick)) - (set! (-> this death-movie-tick) (the-as int (-> data user-uint64))) - ) - (((game-save-elt money)) - (set! (-> this money) (-> data user-float0)) - ) - (((game-save-elt money-total)) - (set! (-> this money-total) (-> data user-float0)) - ) + (set-continue! this *temp-string*)) + (((game-save-elt life)) (set! (-> this life) (-> data user-float0))) + (((game-save-elt buzzer-total)) (set! (-> this buzzer-total) (-> data user-float0))) + (((game-save-elt fuel-cell)) (set! (-> this fuel) (-> data user-float0))) + (((game-save-elt death-movie-tick)) (set! (-> this death-movie-tick) (the-as int (-> data user-uint64)))) + (((game-save-elt money)) (set! (-> this money) (-> data user-float0))) + (((game-save-elt money-total)) (set! (-> this money-total) (-> data user-float0))) (((game-save-elt money-per-level)) (let ((v1-34 (min 32 (-> data elt-count)))) (dotimes (a0-76 v1-34) - (set! (-> this money-per-level a0-76) (-> (the-as (pointer uint8) (&+ (the-as pointer data) 16)) a0-76)) - ) - ) - ) + (set! (-> this money-per-level a0-76) (-> (the-as (pointer uint8) (&+ (the-as pointer data) 16)) a0-76))))) (((game-save-elt level-open-list)) (let ((v1-38 (min 32 (-> data elt-count)))) (dotimes (a0-80 v1-38) - (set! (-> this level-opened a0-80) (-> (the-as (pointer uint8) (&+ (the-as pointer data) 16)) a0-80)) - ) - ) - ) + (set! (-> this level-opened a0-80) (-> (the-as (pointer uint8) (&+ (the-as pointer data) 16)) a0-80))))) (((game-save-elt perm-list)) (let ((s3-2 (min (-> data elt-count) (-> this perm-list allocated-length)))) (set! (-> this perm-list length) s3-2) (dotimes (s2-0 s3-2) - (mem-copy! (the-as pointer (-> this perm-list data s2-0)) (&+ (&+ (the-as pointer data) 16) (* s2-0 16)) 16) - ) - ) - ) + (mem-copy! (the-as pointer (-> this perm-list data s2-0)) (&+ (&+ (the-as pointer data) 16) (* s2-0 16)) 16)))) (((game-save-elt task-list)) (let ((s3-4 (min (-> data elt-count) (-> this task-perm-list allocated-length)))) (set! (-> this task-perm-list length) s3-4) (dotimes (s2-1 s3-4) - (mem-copy! - (the-as pointer (-> this task-perm-list data s2-1)) - (&+ (&+ (the-as pointer data) 16) (* s2-1 16)) - 16 - ) - ) - ) - ) + (mem-copy! (the-as pointer (-> this task-perm-list data s2-1)) (&+ (&+ (the-as pointer data) 16) (* s2-1 16)) 16)))) (((game-save-elt text-list)) (let ((v1-61 (/ (logand -8 (+ (-> this text-ids-seen allocated-length) 7)) 8)) - (a0-94 (-> data elt-count)) - ) + (a0-94 (-> data elt-count))) (dotimes (a1-35 v1-61) (cond - ((>= a1-35 a0-94) - (set! (-> this text-ids-seen bytes a1-35) (the-as uint 0)) - 0 - ) - (else - (set! (-> this text-ids-seen bytes a1-35) (-> (the-as (pointer uint8) (&+ (the-as pointer data) 16)) a1-35)) - ) - ) - ) - ) - ) + ((>= a1-35 a0-94) (set! (-> this text-ids-seen bytes a1-35) (the-as uint 0)) 0) + (else (set! (-> this text-ids-seen bytes a1-35) (-> (the-as (pointer uint8) (&+ (the-as pointer data) 16)) a1-35))))))) (((game-save-elt hint-list)) (cond ((= (-> this hint-control length) (-> data elt-count)) (let ((v1-65 (&+ (the-as pointer data) 16))) (dotimes (a0-99 (-> data elt-count)) (set! (-> this hint-control a0-99 start-time) - (the-as time-frame (-> (the-as (pointer uint64) (&+ v1-65 (* (* a0-99 4) 8))))) - ) + (the-as time-frame (-> (the-as (pointer uint64) (&+ v1-65 (* (* a0-99 4) 8)))))) (set! (-> this hint-control a0-99 last-time-called) - (the-as time-frame (-> (the-as (pointer uint64) (&+ v1-65 (* (+ (* a0-99 4) 1) 8))))) - ) + (the-as time-frame (-> (the-as (pointer uint64) (&+ v1-65 (* (+ (* a0-99 4) 1) 8)))))) (set! (-> this hint-control a0-99 num-attempts) - (-> (the-as (pointer int8) (&+ (the-as (pointer uint8) v1-65) (+ (* a0-99 32) 16)))) - ) + (-> (the-as (pointer int8) (&+ (the-as (pointer uint8) v1-65) (+ (* a0-99 32) 16))))) (set! (-> this hint-control a0-99 num-success) - (-> (the-as (pointer int8) (&+ (the-as (pointer uint8) v1-65) (+ (* a0-99 32) 17)))) - ) - ) - ) - ) - (else - (format 0 "WARNING: SAVEGAME: hint control list did not match current, ignoring~%") - ) - ) - ) - (((game-save-elt auto-save-count)) - (set! (-> this auto-save-count) (the-as int (-> data user-uint64))) - ) - (((game-save-elt total-deaths)) - (set! (-> this total-deaths) (the-as int (-> data user-uint64))) - ) - (((game-save-elt continue-deaths)) - (set! (-> this continue-deaths) (the-as int (-> data user-uint64))) - ) - (((game-save-elt fuel-cell-deaths)) - (set! (-> this fuel-cell-deaths) (the-as int (-> data user-uint64))) - ) - (((game-save-elt game-start-time)) - (set! (-> this game-start-time) (the-as time-frame (-> data user-uint64))) - ) - (((game-save-elt continue-time)) - (set! (-> this continue-time) (the-as time-frame (-> data user-uint64))) - ) - (((game-save-elt death-time)) - (set! (-> this death-time) (the-as time-frame (-> data user-uint64))) - ) - (((game-save-elt hit-time)) - (set! (-> this hit-time) (the-as time-frame (-> data user-uint64))) - ) + (-> (the-as (pointer int8) (&+ (the-as (pointer uint8) v1-65) (+ (* a0-99 32) 17)))))))) + (else (format 0 "WARNING: SAVEGAME: hint control list did not match current, ignoring~%")))) + (((game-save-elt auto-save-count)) (set! (-> this auto-save-count) (the-as int (-> data user-uint64)))) + (((game-save-elt total-deaths)) (set! (-> this total-deaths) (the-as int (-> data user-uint64)))) + (((game-save-elt continue-deaths)) (set! (-> this continue-deaths) (the-as int (-> data user-uint64)))) + (((game-save-elt fuel-cell-deaths)) (set! (-> this fuel-cell-deaths) (the-as int (-> data user-uint64)))) + (((game-save-elt game-start-time)) (set! (-> this game-start-time) (the-as time-frame (-> data user-uint64)))) + (((game-save-elt continue-time)) (set! (-> this continue-time) (the-as time-frame (-> data user-uint64)))) + (((game-save-elt death-time)) (set! (-> this death-time) (the-as time-frame (-> data user-uint64)))) + (((game-save-elt hit-time)) (set! (-> this hit-time) (the-as time-frame (-> data user-uint64)))) (((game-save-elt fuel-cell-pickup-time)) - (set! (-> this fuel-cell-pickup-time) (the-as time-frame (-> data user-uint64))) - ) + (set! (-> this fuel-cell-pickup-time) (the-as time-frame (-> data user-uint64)))) (((game-save-elt deaths-per-level)) (let ((v1-79 (min 32 (-> data elt-count)))) (dotimes (a0-122 v1-79) - (set! (-> this deaths-per-level a0-122) (-> (the-as (pointer uint8) (&+ (the-as pointer data) 16)) a0-122)) - ) - ) - ) + (set! (-> this deaths-per-level a0-122) (-> (the-as (pointer uint8) (&+ (the-as pointer data) 16)) a0-122))))) (((game-save-elt enter-level-time)) (let ((v1-83 (min 32 (-> data elt-count)))) (dotimes (a0-126 v1-83) (set! (-> this enter-level-time a0-126) - (the-as time-frame (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer data) 16) (* a0-126 8))))) - ) - ) - ) - ) + (the-as time-frame (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer data) 16) (* a0-126 8))))))))) (((game-save-elt in-level-time)) (let ((v1-87 (min 32 (-> data elt-count)))) (dotimes (a0-130 v1-87) (set! (-> this in-level-time a0-130) - (the-as time-frame (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer data) 16) (* a0-130 8))))) - ) - ) - ) - ) + (the-as time-frame (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer data) 16) (* a0-130 8))))))))) (((game-save-elt fuel-cell-time)) (let ((v1-92 (min 32 (-> data elt-count)))) (dotimes (a0-133 v1-92) (set! (-> this fuel-cell-time a0-133) - (the-as time-frame (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer data) 16) (* a0-133 8))))) - ) - ) - ) - ) - ) + (the-as time-frame (-> (the-as (pointer uint64) (&+ (&+ (the-as pointer data) 16) (* a0-133 8)))))))))) (set! data - (the-as - game-save-tag - (&+ (the-as pointer data) (logand -16 (+ (* (the-as int (-> data elt-size)) (-> data elt-count)) 31))) - ) - ) - ) - ) + (the-as game-save-tag + (&+ (the-as pointer data) (logand -16 (+ (* (the-as int (-> data elt-size)) (-> data elt-count)) 31))))))) ;; update entity stuff in levels that are active (dotimes (s4-1 (-> *level* length)) - (let ((a1-68 (-> *level* level s4-1))) - (if (= (-> a1-68 status) 'active) - (copy-perms-to-level! this a1-68) - ) - ) - ) + (let ((a1-68 (-> *level* level s4-1))) (if (= (-> a1-68 status) 'active) (copy-perms-to-level! this a1-68)))) ;; update tasks (let ((s5-1 2) ;; jungle eggtop ;; changed to use enum @@ -1070,64 +724,49 @@ (while (>= (the-as uint s4-2) (the-as uint s5-1)) ;; calling this will run the function to see if the task is done or not (get-task-status (the-as game-task s5-1)) - (+! s5-1 1) - ) - ) + (+! s5-1 1))) (label cfg-134) - save - ) + save) (defmethod save-to-file ((this game-save) (arg0 string)) "Write a game save to a file for debugging" (let ((s5-0 (new 'stack 'file-stream arg0 'write))) - (file-stream-write s5-0 - (&-> this type) - (+ (-> this type size) (the-as uint (-> this length))) - ) - (file-stream-close s5-0) - ) - this - ) + (file-stream-write s5-0 (&-> this type) (+ (-> this type size) (the-as uint (-> this length)))) + (file-stream-close s5-0)) + this) (defmethod load-from-file! ((this game-save) (filename string)) "Load a game save from a file for debugging" (let ((stream (new 'stack 'file-stream filename 'read))) (let ((in-size (file-stream-length stream)) - (my-size (-> this allocated-length)) - ) + (my-size (-> this allocated-length))) (cond ((>= (asize-of this) in-size) ;; thing in file is not bigger than we are, safe to read. (cond ((= (file-stream-read stream (&-> this type) in-size) in-size) ;; read success! set the type tag - (set! (-> this type) game-save) - ) + (set! (-> this type) game-save)) (else ;; fail. (format 0 "ERROR: SAVEGAME: save file ~A did not read correctly.~%" stream) (set! (-> this length) 0) - 0 - ) - ) - ) + 0))) (else ;; file is bigger than we are, just give up because we don't have ;; enough room to put the save - (format 0 "ERROR: SAVEGAME: save file ~A is too big~%" stream) - ) - ) - (set! (-> this allocated-length) my-size) - ) + (format 0 "ERROR: SAVEGAME: save file ~A is too big~%" stream))) + (set! (-> this allocated-length) my-size)) (when (!= (-> this version) SAVE_VERSION) ;; uh-oh, the version is wrong - (format 0 "ERROR: SAVEGAME: save file ~A was version ~d, but only ~d is supported.~%" stream (-> this version) SAVE_VERSION) - (set! (-> this length) 0) - ) - (file-stream-close stream) - ) - this - ) + (format 0 + "ERROR: SAVEGAME: save file ~A was version ~d, but only ~d is supported.~%" + stream + (-> this version) + SAVE_VERSION) + (set! (-> this length) 0)) + (file-stream-close stream)) + this) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; particles @@ -1139,22 +778,20 @@ :id 656 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 2662)) - ) + :parts ((sp-item 2662))) (defpart 2662 - :init-specs ((:texture (new 'static 'texture-id :index #x6b :page #x1cf)) - (:num 1.0) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6b :page #x1cf)) + (:num 1.0) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit13)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; auto-save process @@ -1164,157 +801,100 @@ (define *auto-save-info* (new 'global 'mc-slot-info)) (deftype auto-save (process) - ((card int32) - (slot int32) - (which int32) - (buffer kheap) - (mode basic) - (result mc-status-code) - (save game-save) - (info mc-slot-info :inline) - (notify handle) - (state-time time-frame) - (part sparticle-launch-control) - ) + ((card int32) + (slot int32) + (which int32) + (buffer kheap) + (mode basic) + (result mc-status-code) + (save game-save) + (info mc-slot-info :inline) + (notify handle) + (state-time time-frame) + (part sparticle-launch-control)) (:state-methods - get-heap - get-card - format-card - create-file - save - restore - (error mc-status-code) - done - unformat-card - ) - ) + get-heap + get-card + format-card + create-file + save + restore + (error mc-status-code) + done + unformat-card)) (defmethod deactivate ((this auto-save)) "Deactivate the auto-save process." ;; kill the particles - (if (nonzero? (-> this part)) - (kill-and-free-particles (-> this part)) - ) + (if (nonzero? (-> this part)) (kill-and-free-particles (-> this part))) ;; and do a normal deactivate. ((method-of-type process deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this auto-save) (arg0 int)) "Relocate an auto-save process by arg0 bytes." - ;; update our reference particle launch control, which is allocated on our process heap - (if (nonzero? (-> this part)) - (&+! (-> this part) arg0) - ) - + (if (nonzero? (-> this part)) (&+! (-> this part) arg0)) ;; then relocate the process. This will relocate the heap (memory, and basics on it). - (the-as auto-save ((method-of-type process relocate) this arg0)) - ) + (the-as auto-save ((method-of-type process relocate) this arg0))) (defbehavior auto-save-post auto-save () ;; debug text - (when (and (= *cheat-mode* 'debug) - (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3)) - ) + (when (and (= *cheat-mode* 'debug) (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3))) (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) - (let ((v1-5 gp-0)) - (set! (-> v1-5 width) (the float 440)) - ) - (let ((v1-6 gp-0)) - (set! (-> v1-6 height) (the float 80)) - ) + (let ((v1-5 gp-0)) (set! (-> v1-5 width) (the float 440))) + (let ((v1-6 gp-0)) (set! (-> v1-6 height) (the float 80))) (set! (-> gp-0 flags) (font-flags shadow kerning)) (format (clear *temp-string*) "~S / ~S ~D~%" (-> self mode) (-> self state name) (-> self which)) - (print-game-text *temp-string* gp-0 #f 128 22) - ) - ) - + (print-game-text *temp-string* gp-0 #f 128 22))) ;; auto-save drawing (when (and (= (-> self mode) 'auto-save) (!= (-> self next-state name) 'done)) - (let ((gp-1 - (new 'stack 'font-context *font-default-matrix* 20 40 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-15 gp-1)) - (set! (-> v1-15 scale) 0.8) - ) - (let ((v1-16 gp-1)) - (set! (-> v1-16 width) (the float 472)) - ) - (let ((v1-17 gp-1)) - (set! (-> v1-17 height) (the float 20)) - ) + (let ((gp-1 (new 'stack 'font-context *font-default-matrix* 20 40 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-15 gp-1)) (set! (-> v1-15 scale) 0.8)) + (let ((v1-16 gp-1)) (set! (-> v1-16 width) (the float 472))) + (let ((v1-17 gp-1)) (set! (-> v1-17 height) (the float 20))) (set! (-> gp-1 flags) (font-flags shadow kerning middle middle-vert large)) - ;; if this is the first time saving, display a warning. (when (zero? (-> *game-info* auto-save-count)) (print-game-text (lookup-text! *common-text* (text-id saving-data) #f) gp-1 #f 128 22) (set! (-> gp-1 origin x) 20.0) (set! (-> gp-1 origin y) 130.0) - (let ((v1-23 gp-1)) - (set! (-> v1-23 scale) 0.7) - ) - (let ((v1-24 gp-1)) - (set! (-> v1-24 height) (the float 40)) - ) + (let ((v1-23 gp-1)) (set! (-> v1-23 scale) 0.7)) + (let ((v1-24 gp-1)) (set! (-> v1-24 height) (the float 40))) (let ((s5-2 print-game-text)) ((the-as (function object string object none) format) (clear *temp-string*) (lookup-text! *common-text* (text-id memcard-do-not-remove) #f) - 1 - ) - (s5-2 *temp-string* gp-1 #f 128 22) - ) - ) - ) - + 1) + (s5-2 *temp-string* gp-1 #f 128 22)))) ;; flash the icon. (when (< (mod (-> *display* real-frame-counter) 300) 270) (if (> (-> self part matrix) 0) - (set-vector! - (sprite-get-user-hvdf (-> self part matrix)) - 1842.0 - (the float (+ (the int (* 0.5 (- (* (if (= (get-aspect-ratio) 'aspect16x9) - 370.0 - 360.0 - ) - (-> *video-parms* relative-y-scale) - ) - (the float (-> *video-parms* screen-sy)) - ) - ) - ) - 2048 - ) - ) - (+ -1024.0 (-> *math-camera* hvdf-off z)) - (-> *math-camera* hvdf-off w) - ) - ) - (spawn (-> self part) *zero-vector*) - ) - ) - (none) - ) + (set-vector! (sprite-get-user-hvdf (-> self part matrix)) + 1842.0 + (the float + (+ (the int + (* 0.5 + (- (* (if (= (get-aspect-ratio) 'aspect16x9) 370.0 360.0) (-> *video-parms* relative-y-scale)) + (the float (-> *video-parms* screen-sy))))) + 2048)) + (+ -1024.0 (-> *math-camera* hvdf-off z)) + (-> *math-camera* hvdf-off w))) + (spawn (-> self part) *zero-vector*))) + (none)) (defstatehandler auto-save :post auto-save-post) - - (defbehavior auto-save-init-by-other auto-save ((desired-mode symbol) (notify-proc process-tree) (card-idx int) (file-idx int)) ;; trying to create multiple auto save procs, bad idea. (when (handle->process (-> *game-info* auto-save-proc)) (send-event notify-proc 'notify 'error 16) - (return #f) - ) - + (return #f)) ;; set us as the auto save proc (set! (-> *game-info* auto-save-proc) (process->handle self)) (set! (-> *game-info* auto-save-status) (mc-status-code ok)) (stack-size-set! (-> self main-thread) 512) (logclear! (-> self mask) (process-mask pause menu progress)) - ;; setup ourself (set! (-> self card) card-idx) (set! (-> self which) file-idx) @@ -1329,456 +909,284 @@ ((= desired-mode 'auto-save) ;; also save pc settings. (with-pc - (commit-to-file *pc-settings*)) - (if (not (-> *setting-control* current auto-save)) - (go-virtual error (mc-status-code no-auto-save)) - ) + (commit-to-file *pc-settings*)) + (if (not (-> *setting-control* current auto-save)) (go-virtual error (mc-status-code no-auto-save))) (when (and (zero? (-> self card)) (-> *setting-control* current auto-save)) (set! (-> self card) (-> *game-info* auto-save-card)) - (set! (-> self which) (-> *game-info* auto-save-which)) - ) - ) - ((= desired-mode 'error) - (set! (-> *setting-control* default auto-save) #f) - (go-virtual error (mc-status-code no-card)) - ) - ) + (set! (-> self which) (-> *game-info* auto-save-which)))) + ((= desired-mode 'error) (set! (-> *setting-control* default auto-save) #f) (go-virtual error (mc-status-code no-card)))) (set! (-> *setting-control* default auto-save) #f) (go-virtual get-heap) - (none) - ) + (none)) ;; Get heap memory. (defstate get-heap (auto-save) :virtual #t - :code (behavior () - (set! (-> self state-time) (-> *display* real-frame-counter)) - (let ((a0-1 (reserve-alloc *art-control*))) - (while (not a0-1) - (if (>= (- (-> *display* real-frame-counter) (-> self state-time)) (seconds 60)) - (go-virtual error (mc-status-code no-memory)) - ) - (suspend) - (set! a0-1 (reserve-alloc *art-control*)) - ) - (set! (-> self buffer) a0-1) - ) - (go-virtual get-card) - ) - ) + :code + (behavior () + (set! (-> self state-time) (-> *display* real-frame-counter)) + (let ((a0-1 (reserve-alloc *art-control*))) + (while (not a0-1) + (if (>= (- (-> *display* real-frame-counter) (-> self state-time)) (seconds 60)) + (go-virtual error (mc-status-code no-memory))) + (suspend) + (set! a0-1 (reserve-alloc *art-control*))) + (set! (-> self buffer) a0-1)) + (go-virtual get-card))) (defstate get-card (auto-save) :virtual #t - :code (behavior () - (label cfg-0) - (mc-get-slot-info (-> self slot) (-> self info)) - (when (zero? (-> self info known)) - (suspend) - (goto cfg-0) - ) - (cond - ((zero? (-> self info handle)) - (go-virtual error (mc-status-code no-card)) - ) - ((zero? (-> self card)) - (set! (-> self card) (-> self info handle)) - ) - ((!= (-> self info handle) (-> self card)) - (go-virtual error (mc-status-code bad-handle)) - ) - ) - (case (-> self mode) - (('save 'auto-save) - (go-virtual save) - ) - (('save-last) - (set! (-> self which) (-> self info last-file)) - (if (= (-> self which) -1) - (go-virtual error (mc-status-code no-last)) - (go-virtual save) - ) - ) - (('restore) - (go-virtual restore) - ) - (('format-card) - (go-virtual format-card) - ) - (('unformat-card) - (go-virtual unformat-card) - ) - (('create-file) - (go-virtual create-file) - ) - (else - (go-virtual done) - ) - ) - ) - ) + :code + (behavior () + (label cfg-0) + (mc-get-slot-info (-> self slot) (-> self info)) + (when (zero? (-> self info known)) + (suspend) + (goto cfg-0)) + (cond + ((zero? (-> self info handle)) (go-virtual error (mc-status-code no-card))) + ((zero? (-> self card)) (set! (-> self card) (-> self info handle))) + ((!= (-> self info handle) (-> self card)) (go-virtual error (mc-status-code bad-handle)))) + (case (-> self mode) + (('save 'auto-save) (go-virtual save)) + (('save-last) + (set! (-> self which) (-> self info last-file)) + (if (= (-> self which) -1) (go-virtual error (mc-status-code no-last)) (go-virtual save))) + (('restore) (go-virtual restore)) + (('format-card) (go-virtual format-card)) + (('unformat-card) (go-virtual unformat-card)) + (('create-file) (go-virtual create-file)) + (else (go-virtual done))))) (defstate format-card (auto-save) :virtual #t - :code (behavior () - (when (zero? (-> self info formatted)) - (label cfg-1) - (set! (-> self result) (mc-format (-> self card))) - (when (!= (-> self result) (mc-status-code ok)) - (suspend) - (goto cfg-1) - ) - (label cfg-3) - (set! (-> self result) (the-as mc-status-code (mc-check-result))) - (let ((v1-4 (-> self result))) - (b! (nonzero? v1-4) cfg-5 :delay (nop!)) + :code + (behavior () + (when (zero? (-> self info formatted)) + (label cfg-1) + (set! (-> self result) (mc-format (-> self card))) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-1)) + (label cfg-3) + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (let ((v1-4 (-> self result))) + (b! (nonzero? v1-4) cfg-5 :delay (nop!)) + (b! #t cfg-10 :delay (nop!)) + (label cfg-5) + (b! (= v1-4 (mc-status-code format-failed)) cfg-1 :delay (nop!)) + (nop!) + (b! (!= v1-4 (mc-status-code ok)) cfg-9 :delay (nop!))) + (b! #t cfg-12 :delay (nop!)) + (the-as none 0) (b! #t cfg-10 :delay (nop!)) - (label cfg-5) - (b! (= v1-4 (mc-status-code format-failed)) cfg-1 :delay (nop!)) - (nop!) - (b! (!= v1-4 (mc-status-code ok)) cfg-9 :delay (nop!)) - ) - (b! #t cfg-12 :delay (nop!)) - (the-as none 0) - (b! #t cfg-10 :delay (nop!)) - (label cfg-9) - (go-virtual error (-> self result)) - (label cfg-10) - (suspend) - (b! #t cfg-3 :delay (nop!)) - ) - (label cfg-12) - (case (-> self mode) - (('create-file 'save 'save-last 'auto-save 'restore) - (go-virtual create-file) - ) - ) - (go-virtual done) - ) - ) + (label cfg-9) + (go-virtual error (-> self result)) + (label cfg-10) + (suspend) + (b! #t cfg-3 :delay (nop!))) + (label cfg-12) + (case (-> self mode) + (('create-file 'save 'save-last 'auto-save 'restore) (go-virtual create-file))) + (go-virtual done))) (defstate unformat-card (auto-save) :virtual #t - :code (behavior () - (when (nonzero? (-> self info formatted)) - (label cfg-1) - (set! (-> self result) (mc-unformat (-> self card))) - (when (!= (-> self result) (mc-status-code ok)) - (suspend) - (goto cfg-1) - ) - (loop - (set! (-> self result) (the-as mc-status-code (mc-check-result))) - (case (-> self result) - (((mc-status-code busy)) - ) - (((mc-status-code ok)) - (goto cfg-11) - ) - (else - (go-virtual error (-> self result)) - ) - ) - (suspend) - ) - ) - (label cfg-11) - (go-virtual done) - ) - ) + :code + (behavior () + (when (nonzero? (-> self info formatted)) + (label cfg-1) + (set! (-> self result) (mc-unformat (-> self card))) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-1)) + (loop + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (case (-> self result) + (((mc-status-code busy))) + (((mc-status-code ok)) (goto cfg-11)) + (else (go-virtual error (-> self result)))) + (suspend))) + (label cfg-11) + (go-virtual done))) (defstate create-file (auto-save) :virtual #t - :code (behavior () - (cond - ((zero? (-> self info formatted)) - (go-virtual error (mc-status-code no-format)) - ) - ((zero? (-> self info inited)) - (if (< (-> self info mem-actual) (-> self info mem-required)) - (go-virtual error (mc-status-code no-space)) - ) - (let ((v1-12 (-> self buffer))) - (set! (-> v1-12 current) (-> v1-12 base)) - ) - (label cfg-6) - (set! (-> self result) (mc-create-file (-> self card) (the-as uint (-> self buffer base)))) - (when (!= (-> self result) (mc-status-code ok)) - (suspend) - (goto cfg-6) - ) - (loop - (set! (-> self result) (the-as mc-status-code (mc-check-result))) - (case (-> self result) - (((mc-status-code busy)) - ) - (((mc-status-code ok)) - (goto cfg-16) - ) - (else - (go-virtual error (-> self result)) - ) - ) - (suspend) - ) - ) - ) - (label cfg-16) - (case (-> self mode) - (('restore) - (go-virtual restore) - ) - (('save 'save-last 'auto-save) - (go-virtual save) - ) - ) - (go-virtual done) - ) - ) + :code + (behavior () + (cond + ((zero? (-> self info formatted)) (go-virtual error (mc-status-code no-format))) + ((zero? (-> self info inited)) + (if (< (-> self info mem-actual) (-> self info mem-required)) (go-virtual error (mc-status-code no-space))) + (let ((v1-12 (-> self buffer))) (set! (-> v1-12 current) (-> v1-12 base))) + (label cfg-6) + (set! (-> self result) (mc-create-file (-> self card) (the-as uint (-> self buffer base)))) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-6)) + (loop + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (case (-> self result) + (((mc-status-code busy))) + (((mc-status-code ok)) (goto cfg-16)) + (else (go-virtual error (-> self result)))) + (suspend)))) + (label cfg-16) + (case (-> self mode) + (('restore) (go-virtual restore)) + (('save 'save-last 'auto-save) (go-virtual save))) + (go-virtual done))) (defstate save (auto-save) :virtual #t - :code (behavior () - (cond - ((zero? (-> self info formatted)) - (go-virtual error (mc-status-code no-format)) - ) - ((zero? (-> self info inited)) - (go-virtual error (mc-status-code no-file)) - ) - ) - (case (-> self mode) - (('auto-save) - (+! (-> *game-info* auto-save-count) 1) - ) - ) - (let ((v1-14 (-> self buffer))) - (set! (-> v1-14 current) (-> v1-14 base)) - ) - (let ((gp-0 (the-as object loading-level))) - (set! loading-level (-> self buffer)) - ;; og:preserve-this - ;; pc port note : the original game used 64K here's which is slightly too small for the save file. - ;; the buffer being used here is one of the spool buffers which are much larger - ;; this means that the original game only cleared the first 64K of that buffer when allocating - ;; a new save file which would leave the last parts to be filled with garbage, which may or may not cause issues. - ;; for the port we clear the entire spool buffer instead, entirely bypassing this potential issue. - (set! (-> self save) (new 'loading-level 'game-save (- SPOOL_HEAP_SIZE (psize-of game-save)))) - (save-game! *game-info* (-> self save) "save") - (set! loading-level (the-as kheap gp-0)) - ;0 - (when *debug-segment* - (debug-print (-> self save) (user? dass))) + :code + (behavior () + (cond + ((zero? (-> self info formatted)) (go-virtual error (mc-status-code no-format))) + ((zero? (-> self info inited)) (go-virtual error (mc-status-code no-file)))) + (case (-> self mode) + (('auto-save) (+! (-> *game-info* auto-save-count) 1))) + (let ((v1-14 (-> self buffer))) (set! (-> v1-14 current) (-> v1-14 base))) + (let ((gp-0 (the-as object loading-level))) + (set! loading-level (-> self buffer)) + ;; og:preserve-this + ;; pc port note : the original game used 64K here's which is slightly too small for the save file. + ;; the buffer being used here is one of the spool buffers which are much larger + ;; this means that the original game only cleared the first 64K of that buffer when allocating + ;; a new save file which would leave the last parts to be filled with garbage, which may or may not cause issues. + ;; for the port we clear the entire spool buffer instead, entirely bypassing this potential issue. + (set! (-> self save) (new 'loading-level 'game-save (- SPOOL_HEAP_SIZE (psize-of game-save)))) + (save-game! *game-info* (-> self save) "save") + (set! loading-level (the-as kheap gp-0)) + ;0 + (when *debug-segment* + (debug-print (-> self save) (user? dass))) + (label cfg-7) + (set! (-> self result) + (mc-save (-> self card) (-> self which) (&-> (-> self save) type) (the-as int (-> self save info-int32)))) + (when (!= (-> self result) (mc-status-code ok)) + (suspend) + (goto cfg-7)) + (loop + (set! (-> self result) (the-as mc-status-code (mc-check-result))) + (let ((v1-24 (-> self result))) + (set! gp-0 + (cond + ((= v1-24 (mc-status-code busy)) #f) + ((= v1-24 (mc-status-code ok)) (goto cfg-21) gp-0) + ((= v1-24 (mc-status-code write-error)) (suspend) gp-0) + (else + (case (-> self mode) + (('auto-save) (seekl! (-> *game-info* auto-save-count) 0 1))) + (go-virtual error (-> self result)))))) + (suspend))) + (label cfg-21) + (go-virtual done))) - (label cfg-7) - (set! (-> self result) - (mc-save (-> self card) (-> self which) (&-> (-> self save) type) (the-as int (-> self save info-int32))) - ) +(defstate restore (auto-save) + :virtual #t + :code + (behavior () + (local-vars (gp-0 object)) + (cond + ((zero? (-> self info formatted)) (go-virtual error (mc-status-code no-format))) + ((zero? (-> self info inited)) (go-virtual error (mc-status-code no-file)))) + (let ((v1-10 (-> self buffer))) (set! (-> v1-10 current) (-> v1-10 base))) + (if (zero? (-> self info file (-> self which) present)) (go-virtual error (mc-status-code no-save))) + (label cfg-6) + (set! (-> self result) (mc-load (-> self card) (-> self which) (-> self buffer base))) (when (!= (-> self result) (mc-status-code ok)) (suspend) - (goto cfg-7) - ) + (goto cfg-6)) (loop (set! (-> self result) (the-as mc-status-code (mc-check-result))) - (let ((v1-24 (-> self result))) - (set! gp-0 (cond - ((= v1-24 (mc-status-code busy)) - #f - ) - ((= v1-24 (mc-status-code ok)) - (goto cfg-21) - gp-0 - ) - ((= v1-24 (mc-status-code write-error)) - (suspend) - gp-0 - ) - (else - (case (-> self mode) - (('auto-save) - (seekl! (-> *game-info* auto-save-count) 0 1) - ) - ) - (go-virtual error (-> self result)) - ) - ) - ) - ) - (suspend) - ) - ) - (label cfg-21) - (go-virtual done) - ) - ) - -(defstate restore (auto-save) - :virtual #t - :code (behavior () - (local-vars (gp-0 object)) - (cond - ((zero? (-> self info formatted)) - (go-virtual error (mc-status-code no-format)) - ) - ((zero? (-> self info inited)) - (go-virtual error (mc-status-code no-file)) - ) - ) - (let ((v1-10 (-> self buffer))) - (set! (-> v1-10 current) (-> v1-10 base)) - ) - (if (zero? (-> self info file (-> self which) present)) - (go-virtual error (mc-status-code no-save)) - ) - (label cfg-6) - (set! (-> self result) (mc-load (-> self card) (-> self which) (-> self buffer base))) - (when (!= (-> self result) (mc-status-code ok)) - (suspend) - (goto cfg-6) - ) - (loop - (set! (-> self result) (the-as mc-status-code (mc-check-result))) - (let ((v1-22 (-> self result))) - (set! gp-0 (cond - ((= v1-22 (mc-status-code busy)) - #f - ) - ((= v1-22 (mc-status-code ok)) - (goto cfg-20) - gp-0 - ) - ((= v1-22 (mc-status-code read-error)) - (suspend) - gp-0 - ) - ((= v1-22 (mc-status-code new-game)) - (go-virtual error (mc-status-code no-save)) - ) - (else - (go-virtual error (-> self result)) - ) - ) - ) - ) - (suspend) - ) - (label cfg-20) - (set! (-> self save) (the-as game-save (&+ (-> self buffer base) 4))) - (let ((v1-34 (-> self save))) - (set! (-> v1-34 type) game-save) - (if (!= (-> v1-34 version) 1) - (go-virtual error (mc-status-code bad-version)) - ) - ) - (set-setting! 'music-volume 'abs 0.0 0) - (set-setting! 'sfx-volume 'abs 0.0 0) - (set! (-> *game-info* mode) 'play) - (initialize! *game-info* 'game (-> self save) (the-as string #f)) - (set-master-mode 'game) - (add-setting! 'process-mask 'set 0.0 (process-mask progress)) - (apply-settings *setting-control*) - (dotimes (gp-1 15) - (suspend) - ) - (go-virtual done) - ) - ) + (let ((v1-22 (-> self result))) + (set! gp-0 + (cond + ((= v1-22 (mc-status-code busy)) #f) + ((= v1-22 (mc-status-code ok)) (goto cfg-20) gp-0) + ((= v1-22 (mc-status-code read-error)) (suspend) gp-0) + ((= v1-22 (mc-status-code new-game)) (go-virtual error (mc-status-code no-save))) + (else (go-virtual error (-> self result)))))) + (suspend)) + (label cfg-20) + (set! (-> self save) (the-as game-save (&+ (-> self buffer base) 4))) + (let ((v1-34 (-> self save))) + (set! (-> v1-34 type) game-save) + (if (!= (-> v1-34 version) 1) (go-virtual error (mc-status-code bad-version)))) + (set-setting! 'music-volume 'abs 0.0 0) + (set-setting! 'sfx-volume 'abs 0.0 0) + (set! (-> *game-info* mode) 'play) + (initialize! *game-info* 'game (-> self save) (the-as string #f)) + (set-master-mode 'game) + (add-setting! 'process-mask 'set 0.0 (process-mask progress)) + (apply-settings *setting-control*) + (dotimes (gp-1 15) + (suspend)) + (go-virtual done))) (defstate error (auto-save) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('progress-allowed?) - #t - ) - (('die) - (deactivate self) - ) - ) - ) - :code (behavior ((arg0 mc-status-code)) - (if (-> self buffer) - (reserve-free *art-control* (-> self buffer)) - ) - (set! (-> self result) arg0) - (let ((s5-0 *auto-save-info*)) - (mem-copy! (the-as pointer s5-0) (the-as pointer (-> self info)) 300) - (send-event (handle->process (-> self notify)) 'notify 'error (-> self result) s5-0) - ) - (format #t "SAVE ERROR: ~A~%" (enum->string mc-status-code (-> self result))) - (if (= (-> self result) (mc-status-code no-auto-save)) - (return #f) - ) - (case (-> self mode) - (('auto-save 'error) - (set! (-> self state-time) (-> *display* real-frame-counter)) - (set! (-> *game-info* auto-save-status) arg0) - (while (< (- (-> *display* real-frame-counter) (-> self state-time)) (seconds 0.2)) - (if (not (progress-allowed?)) - (set! (-> self state-time) (-> *display* real-frame-counter)) - ) - (suspend) - ) - (if (= arg0 (mc-status-code no-card)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('progress-allowed?) #t) + (('die) (deactivate self)))) + :code + (behavior ((arg0 mc-status-code)) + (if (-> self buffer) (reserve-free *art-control* (-> self buffer))) + (set! (-> self result) arg0) + (let ((s5-0 *auto-save-info*)) + (mem-copy! (the-as pointer s5-0) (the-as pointer (-> self info)) 300) + (send-event (handle->process (-> self notify)) 'notify 'error (-> self result) s5-0)) + (format #t "SAVE ERROR: ~A~%" (enum->string mc-status-code (-> self result))) + (if (= (-> self result) (mc-status-code no-auto-save)) (return #f)) + (case (-> self mode) + (('auto-save 'error) + (set! (-> self state-time) (-> *display* real-frame-counter)) + (set! (-> *game-info* auto-save-status) arg0) + (while (< (- (-> *display* real-frame-counter) (-> self state-time)) (seconds 0.2)) + (if (not (progress-allowed?)) (set! (-> self state-time) (-> *display* real-frame-counter))) + (suspend)) + (if (= arg0 (mc-status-code no-card)) (activate-progress *dproc* (progress-screen memcard-removed)) - (activate-progress *dproc* (progress-screen memcard-auto-save-error)) - ) - ) - ) - ) - ) + (activate-progress *dproc* (progress-screen memcard-auto-save-error))))))) (defstate done (auto-save) :virtual #t - :code (behavior () - (if (and (-> self buffer) (-> *art-control* reserve-buffer)) - (reserve-free *art-control* (-> self buffer)) - ) - (set! (-> *game-info* auto-save-status) (mc-status-code ok)) - (case (-> self mode) - (('save 'save-last 'auto-save 'restore) - (set! (-> *setting-control* default auto-save) #t) - (set! (-> *game-info* auto-save-card) (-> self card)) - (set! (-> *game-info* auto-save-which) (-> self which)) - ) - ) - (let ((gp-0 *auto-save-info*)) - (mem-copy! (the-as pointer gp-0) (the-as pointer (-> self info)) 300) - (send-event (handle->process (-> self notify)) 'notify 'done 1 gp-0) - ) - (case (-> self mode) - (('auto-save) - (when (= (-> *game-info* auto-save-count) 1) - (set! (-> self event-hook) (-> (method-of-object self error) event)) - (set! (-> self state-time) (-> *display* real-frame-counter)) - (while (< (- (-> *display* real-frame-counter) (-> self state-time)) (seconds 0.2)) - (if (not (progress-allowed?)) - (set! (-> self state-time) (-> *display* real-frame-counter)) - ) - (suspend) - ) - ;; Don't display the auto-save warning prompt if speedrunning - (when (= (-> *pc-settings* speedrunner-mode?) #f) - (activate-progress *dproc* (progress-screen auto-save))) - ) - ) - ) - ) - ) + :code + (behavior () + (if (and (-> self buffer) (-> *art-control* reserve-buffer)) (reserve-free *art-control* (-> self buffer))) + (set! (-> *game-info* auto-save-status) (mc-status-code ok)) + (case (-> self mode) + (('save 'save-last 'auto-save 'restore) + (set! (-> *setting-control* default auto-save) #t) + (set! (-> *game-info* auto-save-card) (-> self card)) + (set! (-> *game-info* auto-save-which) (-> self which)))) + (let ((gp-0 *auto-save-info*)) + (mem-copy! (the-as pointer gp-0) (the-as pointer (-> self info)) 300) + (send-event (handle->process (-> self notify)) 'notify 'done 1 gp-0)) + (case (-> self mode) + (('auto-save) + (when (= (-> *game-info* auto-save-count) 1) + (set! (-> self event-hook) (-> (method-of-object self error) event)) + (set! (-> self state-time) (-> *display* real-frame-counter)) + (while (< (- (-> *display* real-frame-counter) (-> self state-time)) (seconds 0.2)) + (if (not (progress-allowed?)) (set! (-> self state-time) (-> *display* real-frame-counter))) + (suspend)) + ;; Don't display the auto-save warning prompt if speedrunning + (when (= (-> *pc-settings* speedrunner-mode?) #f) + (activate-progress *dproc* (progress-screen auto-save)))))))) (defun auto-save-command ((arg0 symbol) (arg1 int) (arg2 int) (arg3 process-tree)) (process-spawn auto-save arg0 arg3 arg1 arg2) - (none) - ) + (none)) (defun auto-save-check () (when (and (-> *setting-control* current auto-save) (not (handle->process (-> *game-info* auto-save-proc)))) (mc-get-slot-info 0 *auto-save-info*) (if (and (nonzero? (-> *auto-save-info* known)) - (or (zero? (-> *auto-save-info* handle)) (!= (-> *auto-save-info* handle) (-> *game-info* auto-save-card))) - ) - (auto-save-command 'error 0 0 *default-pool*) - ) - ) + (or (zero? (-> *auto-save-info* handle)) (!= (-> *auto-save-info* handle) (-> *game-info* auto-save-card)))) + (auto-save-command 'error 0 0 *default-pool*))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/game/main-h.gc b/goal_src/jak1/engine/game/main-h.gc index 5d919a147e..a3f5d03bc4 100644 --- a/goal_src/jak1/engine/game/main-h.gc +++ b/goal_src/jak1/engine/game/main-h.gc @@ -1,100 +1,179 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: main-h.gc -;; name in dgo: main-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; Global engine settings: (define *stats-poly* #f) + (define *stats-memory* #f) + (define *stats-memory-short* #f) + (define *stats-collide* #f) + (define *stats-bsp* #f) + (define *stats-buffer* #f) + (define *stats-target* #f) + (define *stats-dma-test* #f) + (define *artist-all-visible* #f) + (define *artist-flip-visible* #f) + (define *artist-fix-visible* #f) + (define *artist-fix-frustum* #f) + (define *artist-error-spheres* #f) + (define *artist-use-menu-subdiv* #f) + (define *display-profile* #t) + (define *display-sidekick-stats* #f) + (define *display-quad-stats* #f) + (define *display-tri-stats* #f) + (define *display-perf-stats* #f) + (define *display-ground-stats* #f) + (define *display-collision-marks* #f) + (define *display-collide-cache* #f) + (define *display-render-collision* #f) + (define *display-hipri-collision-marks* #f) + (define *display-edge-collision-marks* #f) + (define *display-geo-marks* #f) + (define *display-target-marks* #f) + (define *display-collide-history* 0) + (define *display-xyz-axes* #f) + (define *display-cam-collide-history* #f) + (define *record-cam-collide-history* #f) + (define *display-cam-master-marks* #f) + (define *display-cam-other* #f) + (define *display-camera-marks* #f) + (define *camera-no-mip-correction* #f) + (define *display-cam-los-info* #f) + (define *display-cam-los-debug* #f) + (define *display-cam-los-marks* #f) + (define *display-cam-coll-marks* #f) + (define *display-camera-info* #f) + (define *display-camera-old-stats* #f) + (define *display-camera-last-attacker* #f) + (define *display-file-info* #f) + (define *display-actor-marks* #f) + (define *display-ambient-hint-marks* #f) + (define *display-ambient-sound-marks* #f) + (define *display-ambient-poi-marks* #f) + (define *display-ambient-light-marks* #f) + (define *display-ambient-dark-marks* #f) + (define *display-ambient-weather-off-marks* #f) + (define *display-ambient-ocean-off-marks* #f) + (define *display-ambient-ocean-near-off-marks* #f) + (define *display-ambient-music-marks* #f) + (define *display-sprite-info* #f) + (define *display-entity-errors* #t) + (define *display-lights* #f) + (define *display-instance-info* #f) + (define *display-deci-count* #f) + (define *sync-dma* #f) + (define *display-strip-lines* 0) + (define *display-nav-marks* #f) + (define *display-path-marks* #f) + (define *display-vol-marks* #f) + (define *display-water-marks* #f) + (define *display-actor-anim* (the string #f)) + (define *display-process-anim* (the-as (pointer process) #f)) + (define *display-actor-vis* #f) + (define *display-actor-graph* #f) + (define *display-level-border* #f) + (define *display-load-boundaries* #f) + (define *display-memcard-info* #f) + (define *display-split-boxes* #f) + (define *display-split-box-info* #f) + (define *display-texture-download* #f) + (define *display-art-control* #f) + (define *display-level-spheres* #f) + (define *time-of-day-effects* #t) + (define *time-of-day-fast* #t) + (define *display-iop-info* #f) + (define *ambient-sound-class* #t) + (define *slow-frame-rate* #f) + (define *weather-off* #f) + (define *debug-pause* #f) + (define *subdivide-draw-mode* 0) + (define *ocean-subdivide-draw-mode* 0) ;;;;;;;;;;;;;;;;;;;;;;; @@ -124,6 +203,7 @@ ;; function to call in the main loop to run the debug menu (declare-type debug-menu-context basic) + (define *menu-hook* (the (function debug-menu-context) nothing)) ;; function to call in the main loop to run the progress menu @@ -132,32 +212,32 @@ ;; function to call if main DMA transfer times out, to attempt to recover. (define *dma-timeout-hook* nothing) - ;; unused. (deftype frame-stats (structure) - ((field-time time-frame 2) - (field int32) - ) - ) + ((field-time time-frame 2) + (field int32))) (define *frame-stats* (new 'static 'frame-stats)) ;; full screen "filter" (just a giant quad over the whole screen) (deftype screen-filter (basic) - ((draw? basic) - (color rgba) - ) + ((draw? basic) + (color rgba)) (:methods - (draw (_type_) none) - ) - ) + (draw (_type_) none))) (defun-extern movie? symbol) + (defun-extern set-blackout-frames time-frame none) + (defun-extern on symbol process) + (defun-extern off int) + (define-extern set-master-mode (function symbol none)) (define-extern paused? (function symbol)) + (define-extern toggle-pause (function int)) -(defun-extern menu-respond-to-pause symbol) \ No newline at end of file + +(defun-extern menu-respond-to-pause symbol) diff --git a/goal_src/jak1/engine/game/main.gc b/goal_src/jak1/engine/game/main.gc index 666fd888f1..7bc8e409ec 100644 --- a/goal_src/jak1/engine/game/main.gc +++ b/goal_src/jak1/engine/game/main.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/ambient.gc") (require "pc/debug/pc-debug-methods.gc") (require "engine/draw/drawable.gc") @@ -11,10 +10,6 @@ (require "engine/common-obs/generic-obs.gc") (require "pc/pckernel.gc") -;; name: main.gc -;; name in dgo: main -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -25,75 +20,50 @@ (defun set-letterbox-frames ((arg0 time-frame)) "Set the letterbox frame counter for arg0 frames in the future" (set! (-> *game-info* letterbox-time) (+ (current-time) arg0)) - (none) - ) + (none)) (defun letterbox () "Draw the letterbox black rectangles" - (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) - (bucket-id debug-no-zbuf)) ;; debug-no-zbuf is one of the last buckets + (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) (bucket-id debug-no-zbuf)) ;; debug-no-zbuf is one of the last buckets ;; draw the two sprites (#cond ((not PC_PORT) - (draw-sprite2d-xy dma-buf 0 0 512 25 (new 'static 'rgba :a #x80)) - (draw-sprite2d-xy dma-buf 0 199 512 26 (new 'static 'rgba :a #x80)) - ) + (draw-sprite2d-xy dma-buf 0 0 512 25 (new 'static 'rgba :a #x80)) + (draw-sprite2d-xy dma-buf 0 199 512 26 (new 'static 'rgba :a #x80))) (#t - (if (-> *pc-settings* use-vis?) - ;; original game mode. dont do anything. - (begin - (draw-sprite2d-xy dma-buf 0 0 512 25 (new 'static 'rgba :a #x80)) - (draw-sprite2d-xy dma-buf 0 199 512 26 (new 'static 'rgba :a #x80))) - ;; native mode. force 16x9 letterboxing always. - (begin - (cond - ((< (-> *pc-settings* aspect-ratio) ASPECT_16X9) - ;; too tall. needs vertical letterboxing. - (let ((lbx-h (the int (* 112.0 (- 1.0 (/ (-> *pc-settings* aspect-ratio) ASPECT_16X9)))))) - (draw-sprite2d-xy dma-buf 0 0 512 lbx-h (new 'static 'rgba :a #x80)) - (draw-sprite2d-xy dma-buf 0 (- 224 lbx-h) 512 lbx-h (new 'static 'rgba :a #x80)) - ) - ) - ((> (-> *pc-settings* aspect-ratio) ASPECT_16X9) - ;; too wide. needs horizontal letterboxing. - (let ((lbx-w (the int (* 256.0 (- 1.0 (/ ASPECT_16X9 (-> *pc-settings* aspect-ratio))))))) - (draw-sprite2d-xy dma-buf 0 0 lbx-w 224 (new 'static 'rgba :a #x80)) - (draw-sprite2d-xy dma-buf (- 512 lbx-w) 0 lbx-w 224 (new 'static 'rgba :a #x80)) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (if (-> *pc-settings* use-vis?) + ;; original game mode. dont do anything. + (begin + (draw-sprite2d-xy dma-buf 0 0 512 25 (new 'static 'rgba :a #x80)) + (draw-sprite2d-xy dma-buf 0 199 512 26 (new 'static 'rgba :a #x80))) + ;; native mode. force 16x9 letterboxing always. + (begin + (cond + ((< (-> *pc-settings* aspect-ratio) ASPECT_16X9) + ;; too tall. needs vertical letterboxing. + (let ((lbx-h (the int (* 112.0 (- 1.0 (/ (-> *pc-settings* aspect-ratio) ASPECT_16X9)))))) + (draw-sprite2d-xy dma-buf 0 0 512 lbx-h (new 'static 'rgba :a #x80)) + (draw-sprite2d-xy dma-buf 0 (- 224 lbx-h) 512 lbx-h (new 'static 'rgba :a #x80)))) + ((> (-> *pc-settings* aspect-ratio) ASPECT_16X9) + ;; too wide. needs horizontal letterboxing. + (let ((lbx-w (the int (* 256.0 (- 1.0 (/ ASPECT_16X9 (-> *pc-settings* aspect-ratio))))))) + (draw-sprite2d-xy dma-buf 0 0 lbx-w 224 (new 'static 'rgba :a #x80)) + (draw-sprite2d-xy dma-buf (- 512 lbx-w) 0 lbx-w 224 (new 'static 'rgba :a #x80)))))))))) + (none)) (defun set-blackout-frames ((arg0 time-frame)) "Set the blackout frame counter. If arg0 is 0, disables blackout immediately. Otherwise, this can only be used to increase the blackout period." (cond - ((zero? arg0) - (set! (-> *game-info* blackout-time) (current-time)) - ) - (else - (set! (-> *game-info* blackout-time) (max (-> *game-info* blackout-time) - (+ (current-time) arg0))) - ) - ) - (none) - ) + ((zero? arg0) (set! (-> *game-info* blackout-time) (current-time))) + (else (set! (-> *game-info* blackout-time) (max (-> *game-info* blackout-time) (+ (current-time) arg0))))) + (none)) (defun blackout () "Draw the blackout rectangle, convering the entire screen in darkness." - (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) - (bucket-id debug-no-zbuf)) ;; debug-no-zbuf is one of the last buckets - (draw-sprite2d-xy dma-buf 0 0 512 224 (new 'static 'rgba :a #x80)) - ) - (none) - ) - + (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) (bucket-id debug-no-zbuf)) ;; debug-no-zbuf is one of the last buckets + (draw-sprite2d-xy dma-buf 0 0 512 224 (new 'static 'rgba :a #x80))) + (none)) ;;;;;;;;;;;;;;;;;;;;; ;; Pause/Master Mode @@ -103,85 +73,57 @@ "Are we paused? True if *master-mode* = pause, progress is not hidden, or *master-mode* = menu" (the-as symbol (or (= *master-mode* 'pause) - (or (and *progress-process* (not (hidden? (-> *progress-process* 0)))) - (= *master-mode* 'menu) - ) - ) - ) - ) + (or (and *progress-process* (not (hidden? (-> *progress-process* 0)))) (= *master-mode* 'menu))))) (defun movie? () "Are we in a movie?" - (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie)) - ) + (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie))) (defun set-master-mode ((new-mode symbol)) "Update pause masks for the given mode, and set *master-mode*" ;; og:preserve-this PAL patch here (let ((gp-0 *master-mode*)) (set! *master-mode* new-mode) - (if *debug-segment* - (menu-respond-to-pause) - ) + (if *debug-segment* (menu-respond-to-pause)) (case *master-mode* (('pause) - ;; request the pause mask to be set in prevent-from-run. ;; this will block any process with pause from running, pausing most game objects. - (if (not *debug-pause*) - (logior! (-> *setting-control* default process-mask) (process-mask pause)) - ) - + (if (not *debug-pause*) (logior! (-> *setting-control* default process-mask) (process-mask pause))) ;; allow the menu to run. (logclear! (-> *setting-control* default process-mask) (process-mask menu)) - ;; ?? (set! *pause-lock* #f) (sound-group-pause (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7)) ;; modified for PC port - show hidden speedrun progress menu if L1+R1+X are held (if (and PC_PORT (-> *pc-settings* speedrunner-mode?) (cpad-hold? 0 l1) (cpad-hold? 0 r1) (cpad-hold? 0 x)) - (activate-progress *dproc* (progress-screen speedrun-options)) - (hide-progress-screen) - ) - ) + (activate-progress *dproc* (progress-screen speedrun-options)) + (hide-progress-screen))) (('menu) ;; I believe these masks are just to make the progress go away work. (logior! (-> *setting-control* default process-mask) (process-mask menu)) (logclear! (-> *setting-control* default process-mask) (process-mask pause progress)) (set! *pause-lock* #f) - (hide-progress-screen) - ) + (hide-progress-screen)) (('progress) ;; allow menu to run while in progress. (logclear! (-> *setting-control* default process-mask) (process-mask menu)) - ;; activate the progress menu. (when (not *progress-process*) ;; modified for PC port - show hidden speedrun progress menu if L1+R1+X are held (if (and PC_PORT (-> *pc-settings* speedrunner-mode?) (cpad-hold? 0 l1) (cpad-hold? 0 r1) (cpad-hold? 0 x)) (activate-progress *dproc* (progress-screen speedrun-options)) - (activate-progress *dproc* (progress-screen fuel-cell)) - ) - (if (not *progress-process*) - (set-master-mode 'game) - ) - ) - ) + (activate-progress *dproc* (progress-screen fuel-cell))) + (if (not *progress-process*) (set-master-mode 'game)))) (('game) ;; allow pausable/menu to run. (logclear! (-> *setting-control* default process-mask) (process-mask pause menu)) - (if (!= gp-0 *master-mode*) - (sound-group-continue (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7)) - ) - (hide-progress-screen) - ) - ) - ) + (if (!= gp-0 *master-mode*) (sound-group-continue (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7))) + (hide-progress-screen)))) ;; apply settings now. (apply-settings *setting-control*) 0 - (none) - ) + (none)) (define *last-master-mode* 'game) @@ -191,216 +133,123 @@ (('game) ;; coming from normal gameplay (set! *last-master-mode* *master-mode*) - (set-master-mode - (cond - ;; first, check if the controller fell out, and jak is spawned - ((and (nonzero? (logand (-> *cpad-list* cpads 0 valid) 128)) *target*) - (if (or *progress-process* (not (-> *setting-control* current allow-pause))) - *master-mode* - 'pause ;; no controller, jak spawned, no progress open, pause allowed. - ) - ) - (else - (cond - ;; try to open the debug menu: - ((cpad-hold? 0 r3) - ;; R3 pushed, no target. - (if *debug-segment* - 'menu ;; go to debug menu, when in debug mode. - *master-mode* - ) - ) - (else - (cond - ;; debug mode pause allowed with select or R2. - ;; og:preserve-this allow select outside debug mode - ((or (cpad-hold? 0 select) - (and *debug-segment* (cpad-hold? 0 r2))) - ;; pushing select or R2, and debug. allow pause. - 'pause - ) - (else - (cond - ;; ignore anything below here, unless we are pressing start, or debug. - ((and (not *debug-segment*) - (not (cpad-hold? 0 start)) - ) - *master-mode* - ) - - ;; if you pressed start, and progress isn't allowed, but pause is, do a pause. - ((not (progress-allowed?)) - (if (pause-allowed?) - 'pause - *master-mode* - ) - ) - - ;; pushing start. - ((cpad-hold? 0 start) - ;; toggle between progress/game - (if *progress-process* - 'game - 'progress - ) - ) - (else - ;; nothing requested, stay in game. - *master-mode* - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (set-master-mode (cond + ;; first, check if the controller fell out, and jak is spawned + ((and (nonzero? (logand (-> *cpad-list* cpads 0 valid) 128)) *target*) + (if (or *progress-process* (not (-> *setting-control* current allow-pause))) + *master-mode* + 'pause ;; no controller, jak spawned, no progress open, pause allowed. + )) + (else + (cond + ;; try to open the debug menu: + ((cpad-hold? 0 r3) + ;; R3 pushed, no target. + (if *debug-segment* + 'menu ;; go to debug menu, when in debug mode. + *master-mode*)) + (else + (cond + ;; debug mode pause allowed with select or R2. + ;; og:preserve-this allow select outside debug mode + ((or (cpad-hold? 0 select) (and *debug-segment* (cpad-hold? 0 r2))) + ;; pushing select or R2, and debug. allow pause. + 'pause) + (else + (cond + ;; ignore anything below here, unless we are pressing start, or debug. + ((and (not *debug-segment*) (not (cpad-hold? 0 start))) *master-mode*) + ;; if you pressed start, and progress isn't allowed, but pause is, do a pause. + ((not (progress-allowed?)) (if (pause-allowed?) 'pause *master-mode*)) + ;; pushing start. + ((cpad-hold? 0 start) + ;; toggle between progress/game + (if *progress-process* 'game 'progress)) + (else + ;; nothing requested, stay in game. + *master-mode*)))))))))) (('menu) ;; in debug menu - (set-master-mode - (cond - ;; push R3 to exit to previous master mode. - ((cpad-hold? 0 r3) - *last-master-mode* - ) - ;; select/R2 to pause. - ((cpad-hold? 0 select r2) - (if *debug-segment* - 'pause - *master-mode* ;; not sure we can get to menu in non-debug... - ) - ) - (else - (cond - ((and (not (movie?)) (not *progress-process*)) - (if (not *target*) - 'pause - 'progress - ) - ) - (else - 'game - ) - ) - ) - ) - ) - (set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2))) - ) + (set-master-mode (cond + ;; push R3 to exit to previous master mode. + ((cpad-hold? 0 r3) *last-master-mode*) + ;; select/R2 to pause. + ((cpad-hold? 0 select r2) + (if *debug-segment* + 'pause + *master-mode* ;; not sure we can get to menu in non-debug... + )) + (else + (cond + ((and (not (movie?)) (not *progress-process*)) (if (not *target*) 'pause 'progress)) + (else 'game))))) + (set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2)))) (('pause) (set! *last-master-mode* *master-mode*) - (set-master-mode - (cond - ;; pause -> debug menu - ((cpad-hold? 0 r3) - (if *debug-segment* - 'menu - *master-mode* - ) - ) - (else - (cond - ;; pause -> single frame advance (R2) - ((and *cheat-mode* - (cpad-hold? 0 select r2) - ) - 'game - ) - ;; pause -> game - ;; og:preserve-this changed to allow select pause in retail - ((cpad-hold? 0 start select) - 'game - ) - (else - *master-mode* - ) - ) - ) - ) - ) - (set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2))) - ) + (set-master-mode (cond + ;; pause -> debug menu + ((cpad-hold? 0 r3) (if *debug-segment* 'menu *master-mode*)) + (else + (cond + ;; pause -> single frame advance (R2) + ((and *cheat-mode* (cpad-hold? 0 select r2)) 'game) + ;; pause -> game + ;; og:preserve-this changed to allow select pause in retail + ((cpad-hold? 0 start select) 'game) + (else *master-mode*))))) + (set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2)))) (('progress) - (set-master-mode - (cond - ;; progress -> debug - ((cpad-hold? 0 r3) - (if *debug-segment* - 'menu - *master-mode* - ) - ) - (else - ;; un-progress - (if (cpad-hold? 0 start) - *last-master-mode* - *master-mode* - ) - ) - ) - ) - (set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2))) - ) - ) - 0 - ) + (set-master-mode (cond + ;; progress -> debug + ((cpad-hold? 0 r3) (if *debug-segment* 'menu *master-mode*)) + (else + ;; un-progress + (if (cpad-hold? 0 start) *last-master-mode* *master-mode*)))) + (set! *pause-lock* (and *cheat-mode* (cpad-hold? 0 r2))))) + 0) -(define *screen-filter* - (new 'static 'screen-filter - :draw? #f - :color (new 'static 'rgba :g #x20 :b #x40 :a #x50) - ) - ) +(define *screen-filter* (new 'static 'screen-filter :draw? #f :color (new 'static 'rgba :g #x20 :b #x40 :a #x50))) (defmethod draw ((this screen-filter)) (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id debug-no-zbuf)) - (draw-sprite2d-xy buf -256 (- (-> *video-parms* screen-hy)) 512 (-> *video-parms* screen-sy) (-> this color)) - ) - (none) - ) + (draw-sprite2d-xy buf -256 (- (-> *video-parms* screen-hy)) 512 (-> *video-parms* screen-sy) (-> this color))) + (none)) ;;;;;;;;;;;;;;;;;;;;;; ;; Cheat Codes ;;;;;;;;;;;;;;;;;;;;;; (define *cheat-temp* (the-as (pointer int32) (malloc 'global 20))) ;; 16 -> 20 (PAL) + (define *master-exit* #f) + (define *progress-cheat* #f) + (define *first-boot* #t) ;; PAL (defun main-cheats () "Handle cheat codes and timeout" - ;; look for codes when L3 is pushed (when (and (cpad-hold? 0 l3) (or *cheat-mode* (= *kernel-boot-message* 'play)) ;; not in demo ) - ;; cheat mode - (check-cheat-code (-> *cheat-temp* 0) 0 - (up up down down left right left right x x square circle square circle) - (cpad-clear! 0 r1) - ;; toggle! - (not! *cheat-mode*) - (cheats-sound-play *cheat-mode*) - ) - + (check-cheat-code (-> *cheat-temp* 0) + 0 + (up up down down left right left right x x square circle square circle) + (cpad-clear! 0 r1) + ;; toggle! + (not! *cheat-mode*) + (cheats-sound-play *cheat-mode*)) ;; debug mode (when *cheat-mode* - (check-cheat-code (-> *cheat-temp* 1) 0 - (circle square circle square x x right left right left down down up up) - (cpad-clear! 0 r1) - ;; toggle between #t and debug. - (set! *cheat-mode* (if (= *cheat-mode* 'debug) - #t - 'debug - )) - (cheats-sound-play *cheat-mode*) - ) - ) - + (check-cheat-code (-> *cheat-temp* 1) + 0 + (circle square circle square x x right left right left down down up up) + (cpad-clear! 0 r1) + ;; toggle between #t and debug. + (set! *cheat-mode* (if (= *cheat-mode* 'debug) #t 'debug)) + (cheats-sound-play *cheat-mode*))) ;; language cheat, REMOVED IN PC PORT because it's literally useless #| (case (scf-get-territory) @@ -416,120 +265,62 @@ (cheats-sound-play *progress-cheat*) ) ) - )|# - - + ) + |# ;; debug only PAL cheat (when *debug-segment* - (check-cheat-code (-> *cheat-temp* 3) 0 - (x square triangle circle x square triangle circle) - (cpad-clear! 0 r1) - (set! *progress-cheat* (if *progress-cheat* - #f - 'pal - )) - (cheats-sound-play *progress-cheat*) - ) - + (check-cheat-code (-> *cheat-temp* 3) + 0 + (x square triangle circle x square triangle circle) + (cpad-clear! 0 r1) + (set! *progress-cheat* (if *progress-cheat* #f 'pal)) + (cheats-sound-play *progress-cheat*)) ;; added in PAL - (check-cheat-code (-> *cheat-temp* 4) 0 ;; they erroneously used (-> *cheat-temp* 5) here! - (triangle x circle square triangle x circle square) - (cpad-clear! 0 r1) - (set! *cheat-mode* (if (= *cheat-mode* 'camera) - #f - 'camera - )) - (cond - (*cheat-mode* - (if (not *external-cam-mode*) - (external-cam-reset!) - ) - (set! *external-cam-mode* 'pad-1) - (sound-play "select-menu") - ) - (else - (set! *external-cam-mode* #f) - (sound-play "cursor-options") - ) - ) - ) - ) - ) - - + (check-cheat-code (-> *cheat-temp* 4) + 0 ;; they erroneously used (-> *cheat-temp* 5) here! + (triangle x circle square triangle x circle square) + (cpad-clear! 0 r1) + (set! *cheat-mode* (if (= *cheat-mode* 'camera) #f 'camera)) + (cond + (*cheat-mode* + (if (not *external-cam-mode*) (external-cam-reset!)) + (set! *external-cam-mode* 'pad-1) + (sound-play "select-menu")) + (else (set! *external-cam-mode* #f) (sound-play "cursor-options")))))) ;; debug cheats on retail builds (when (and (= *cheat-mode* 'debug) (not *debug-segment*)) - ;; target start/stop with l1/r1/l2/r2 - (when (and (cpad-hold? 0 l1) - (cpad-hold? 0 l2) - (cpad-hold? 0 r1) - (cpad-pressed? 0 r2) - ) - (if *target* - (stop 'debug) - (start 'play (get-or-create-continue! *game-info*)) - ) - ) - - + (when (and (cpad-hold? 0 l1) (cpad-hold? 0 l2) (cpad-hold? 0 r1) (cpad-pressed? 0 r2)) + (if *target* (stop 'debug) (start 'play (get-or-create-continue! *game-info*)))) ;; reinitialize to title-start with left, up, select - (if (and (cpad-hold? 0 left) - (cpad-hold? 0 up) - (cpad-pressed? 0 select) - ) - (initialize! *game-info* 'game (the-as game-save #f) "title-start") - ) - + (if (and (cpad-hold? 0 left) (cpad-hold? 0 up) (cpad-pressed? 0 select)) + (initialize! *game-info* 'game (the-as game-save #f) "title-start")) ;; push R3 to print global heap status. not very useful. - (if (cpad-pressed? 1 r3) - (inspect global) - ) - + (if (cpad-pressed? 1 r3) (inspect global)) ;; push R3 to display IOP memory stats (when (cpad-hold? 1 r3) ;; grab a dma buffer - (with-dma-buffer-add-bucket ((dma-buff (if *debug-segment* - (-> (current-frame) debug-buf) - (-> (current-frame) global-buf) - )) - (bucket-id debug)) - (show-iop-memory dma-buff) - ) - ) - - + (with-dma-buffer-add-bucket ((dma-buff (if *debug-segment* (-> (current-frame) debug-buf) (-> (current-frame) global-buf))) (bucket-id debug)) + (show-iop-memory dma-buff))) ;; push triangle to see level info - (if (cpad-pressed? 1 triangle) - (not! *display-level-border*) - ) - ) - + (if (cpad-pressed? 1 triangle) (not! *display-level-border*))) ;; handle timeouts (when (!= *kernel-boot-message* 'play) ;; not regular game mode? (let ((timeout (scf-get-timeout)) - (inactive-timeout (scf-get-inactive-timeout)) - ) + (inactive-timeout (scf-get-inactive-timeout))) (when (and (or - ;; aboslute timout elapsed. - (and (nonzero? timeout) - (>= (the-as int (+ -300000 (the-as int (-> *display* real-frame-counter)))) - (the int (* 300.0 (the float timeout))) - ) - ) - (and (nonzero? inactive-timeout) - (>= (the-as int (- (current-time) (cpad-change-time 0))) - (the int (* 300.0 (the float inactive-timeout))) - ) - ) - (= *master-exit* 'force) - ) + ;; aboslute timout elapsed. + (and (nonzero? timeout) + (>= (the-as int (+ -300000 (the-as int (-> *display* real-frame-counter)))) (the int (* 300.0 (the float timeout))))) + (and (nonzero? inactive-timeout) + (>= (the-as int (- (current-time) (cpad-change-time 0))) (the int (* 300.0 (the float inactive-timeout))))) + (= *master-exit* 'force)) (progress-allowed?) - (!= *master-exit* #t) - ) - + (!= *master-exit* #t)) ;; spawn a process that blacks out the screen, turns things off, and kills the game. - (if (process-spawn-function process :stack *scratch-memory-top* + (if (process-spawn-function process + :stack + *scratch-memory-top* (lambda :behavior process () (set-blackout-frames (seconds 100)) (set! (-> *setting-control* default allow-pause) #f) @@ -539,35 +330,21 @@ (set! (-> *setting-control* default music-volume) 0.0) (set! (-> *setting-control* default dialog-volume) 0.0) (set! (-> *setting-control* default ambient-volume) 0.0) - (let ((gp-0 (current-time))) - (until (>= (the-as int (- (current-time) gp-0)) (seconds 0.1)) - (suspend) - ) - ) + (let ((gp-0 (current-time))) (until (>= (the-as int (- (current-time) gp-0)) (seconds 0.1)) (suspend))) (kernel-shutdown) - (none) - ) - ) - - (set! *master-exit* #t) ;; process created successfully, set to exit - ) - ) - ) - ) - 0 - ) + (none))) + (set! *master-exit* #t) ;; process created successfully, set to exit + )))) + 0) (defbehavior display-loop process () "the main 'display loop' in GOAL. v-sync is done in this function, so all frames start and end here." - ;; increase our stack size. - (stack-size-set! (-> self main-thread) 1024) - + (stack-size-set! (-> self main-thread) 512) (let ((disp *display*)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Pre loop initialization - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; the size is 0, so this doesn't actually do anything. ;; (dma-send-to-spr (the-as uint #x70000000) (the-as uint *terrain-context*) (the-as uint 0) #t) (set! *teleport* #t) @@ -579,31 +356,24 @@ (blerc-init) ;; collide dma (suspend) - - (while *run* - + (runs-every-frame) ;; trigger hook for mod base - + ;; start immediately after all process updates finish. (profiler-instant-event "display-loop-top") - ;; drawing effects to be used in foreground drawing. (with-profiler "foreground-effects" ;; with FP blerc, the vertices are modified in the PC renderer, so we can just skip ;; this call to save time. (unless *use-fp-blerc* - (blerc-execute) - ) + (blerc-execute)) (blerc-init) (texscroll-execute) - (ripple-execute) - ) - + (ripple-execute)) ;;;;;;;;;;;;;;;;;;;; ;; AMBIENT ;;;;;;;;;;;;;;;;;;;; - ;; set defaults for weather/music/flava. (with-profiler "ambients" (set! *weather-off* #f) @@ -611,255 +381,173 @@ (dotimes (a0-8 (-> *level* length)) (let ((a1-6 (-> *level* level a0-8))) (when (= (-> a1-6 status) 'active) - (if (and (= (-> a1-6 name) v1-13) (-> *level* play?)) - (set! (-> *setting-control* default music) (-> a1-6 info music-bank)) - ) - ) - ) - ) - ) - + (if (and (= (-> a1-6 name) v1-13) (-> *level* play?)) (set! (-> *setting-control* default music) (-> a1-6 info music-bank))))))) (set! (-> *setting-control* default sound-flava) (the-as uint 49)) (set! (-> *setting-control* default sound-flava-priority) 0.0) - ;; find any ambients, and execute them. (when (and *execute-ambients* (not (paused?))) - (if *target* - (set! (-> *target* draw secondary-interp) 0.0) - ) + (if *target* (set! (-> *target* draw secondary-interp) 0.0)) (let ((s5-1 (sphere<-vector+r! (new 'stack 'sphere) (ear-trans) 0.0))) - (let ((v1-28 (scratchpad-object terrain-context))) - (set! (-> v1-28 work ambient ambient-list num-items) 0) - ) + (let ((v1-28 (scratchpad-object terrain-context))) (set! (-> v1-28 work ambient ambient-list num-items) 0)) (dotimes (s4-1 (-> *level* length)) (let ((v1-32 (-> *level* level s4-1))) (when (= (-> v1-32 status) 'active) - (collect-ambients (-> v1-32 bsp) s5-1 0 (-> (scratchpad-object terrain-context) work ambient ambient-list)) - ) - ) - ) - + (collect-ambients (-> v1-32 bsp) s5-1 0 (-> (scratchpad-object terrain-context) work ambient ambient-list))))) (countdown (s4-2 (-> (scratchpad-object terrain-context) work ambient ambient-list num-items)) - (execute-ambient (-> (scratchpad-object terrain-context) work ambient ambient-list items s4-2) s5-1) - ) - ) - ) - ) + (execute-ambient (-> (scratchpad-object terrain-context) work ambient ambient-list items s4-2) s5-1))))) (add-ee-profile-frame 'draw :r #x40 :b #x40) ;; actor update - ;; do math, before drawing - (with-profiler "math-engine" (execute-math-engine)) + (with-profiler "math-engine" + (execute-math-engine)) ;; DEBUG PROF (add-ee-profile-frame 'draw :r #x80) (add-ee-profile-frame 'draw :r #x40 :b #x40) ;; debug hook - (with-profiler "debug" (*debug-hook*) (main-cheats)) + (with-profiler "debug" + (*debug-hook*) + (main-cheats)) (add-ee-profile-frame 'draw :r #x20 :g #x20) - (with-profiler "camera" (update-camera)) + (with-profiler "camera" + (update-camera)) (add-ee-profile-frame 'draw :r #x40 :b #x40) - (with-profiler "draw-hook" (*draw-hook*)) + (with-profiler "draw-hook" + (*draw-hook*)) (add-ee-profile-frame 'draw :g #x80) - (with-profiler "menu" (#when PC_PORT - (if (and *display-sha* *debug-segment*) - (draw-build-revision))) + (if (and *display-sha* *debug-segment*) (draw-build-revision))) (*menu-hook*) (add-ee-profile-frame 'draw :g #x40) - ;; finally, update hints/text (make-current-level-available-to-progress) (update-task-hints) (load-level-text-files -1) - (add-ee-profile-frame 'unknown-cpu-time) ;; collect perf stats - (read! (-> *perf-stats* data (perf-stat-bucket all-code))) - ) - + (read! (-> *perf-stats* data (perf-stat-bucket all-code)))) (with-profiler "dma-sync" (when (nonzero? (sync-path 0 0)) (*dma-timeout-hook*) (reset-vif1-path) - (if *debug-segment* - (format 0 "profile bar at ~D.~%" (-> (current-frame) profile-bar 1 profile-frame-count)) - ) - ) - (reset! (-> *perf-stats* data (perf-stat-bucket all-code))) - ) - + (if *debug-segment* (format 0 "profile bar at ~D.~%" (-> (current-frame) profile-bar 1 profile-frame-count)))) + (reset! (-> *perf-stats* data (perf-stat-bucket all-code)))) ;; depth cue - (if (not *progress-process*) - (depth-cue disp) - ) - + (if (not *progress-process*) (depth-cue disp)) ;; screen filter - (with-profiler "post-sync-draw" - ;; add letterbox effect - (when (or (movie?) (< (current-time) (-> *game-info* letterbox-time))) - (if (< (-> *game-info* letterbox-time) (current-time)) - (set! (-> *game-info* letterbox-time) (current-time)) - ) - (if (#if (not PC_PORT) - (= (-> *setting-control* current aspect-ratio) 'aspect4x3) - (or (= (-> *setting-control* current aspect-ratio) 'aspect4x3) (not (-> *pc-settings* use-vis?)))) - (letterbox) - ) - ) - - ;; add blackout effect - (if (< (current-time) (-> *game-info* blackout-time)) + ;; add letterbox effect + (when (or (movie?) (< (current-time) (-> *game-info* letterbox-time))) + (if (< (-> *game-info* letterbox-time) (current-time)) (set! (-> *game-info* letterbox-time) (current-time))) + (if (#if (not PC_PORT) + (= (-> *setting-control* current aspect-ratio) 'aspect4x3) + (or (= (-> *setting-control* current aspect-ratio) 'aspect4x3) (not (-> *pc-settings* use-vis?)))) + (letterbox))) + ;; add blackout effect + (if (< (current-time) (-> *game-info* blackout-time)) (set! (-> *setting-control* default bg-a-force) 1.0) - (set! (-> *setting-control* default bg-a-force) 0.0) - ) - (read! (-> *perf-stats* data (perf-stat-bucket all-code))) - - ;; grab a buffer for drawing debug stuff. - ;; we might draw even outside of debug mode if cheat-mode is disabled. - (let ((debug-txt-buf - (-> (if *debug-segment* - (-> disp frames (-> disp on-screen) frame debug-buf) - (-> disp frames (-> disp on-screen) frame global-buf) - ) - base - ) - ) - ) - - ;; debug drawing - (when *debug-segment* - (#when PC_PORT - (if *display-pad-debug* - (debug-pad-display (-> *cpad-list* cpads 0)) - ) - (when (and (or (= *master-mode* 'game) (= *master-mode* 'pause)) (-> *entity-debug-inspect* entity)) - (define-extern entity-inspect-draw (function entity-debug-inspect object)) - (entity-inspect-draw *entity-debug-inspect*) - ) - ) - - (debug-draw-buffers) ;; lines/text - - ;; debug dma - (with-dma-buffer-add-bucket ((debug-buf (-> disp frames (-> disp on-screen) frame debug-buf)) - (bucket-id debug-no-zbuf)) - (when *display-profile* - (dma-buffer-add-gs-set debug-buf - (alpha-1 (new 'static 'gs-alpha :b 1 :d 1)) - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk 1)) - (test-1 (new 'static 'gs-test :zte 1 :ztst (gs-ztest always))) - (pabe 0) - (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) - (tex1-1 (new 'static 'gs-tex1 :mmag 1 :mmin 1)) - (texa (new 'static 'gs-texa :ta1 #x80)) - (texclut (new 'static 'gs-texclut :cbw 4)) - (fogcol *fog-color*) - ) - - ;; draw the profile bars - (dotimes (s2-0 2) - (let ((s1-0 (-> disp frames (-> disp on-screen) frame profile-bar s2-0))) - (add-end-frame s1-0 'end-draw (static-rgba #x40 #x40 #x40 #x40)) - (draw s1-0 debug-buf (* 10 s2-0)) - ) - 0 - ) - ) ;; end profiler draw - - - (when *display-deci-count* - (draw-string-xy (string-format "~D" *deci-count*) debug-buf 448 210 (font-color default) (font-flags shadow kerning)) - ) - - ;; added + (set! (-> *setting-control* default bg-a-force) 0.0)) + (read! (-> *perf-stats* data (perf-stat-bucket all-code))) + ;; grab a buffer for drawing debug stuff. + ;; we might draw even outside of debug mode if cheat-mode is disabled. + (let ((debug-txt-buf (-> (if *debug-segment* + (-> disp frames (-> disp on-screen) frame debug-buf) + (-> disp frames (-> disp on-screen) frame global-buf)) + base))) + ;; debug drawing + (when *debug-segment* (#when PC_PORT - (draw *pc-settings* debug-buf) - (draw-memory *pc-settings* debug-buf) - (print-debug-misc *pc-settings*) - ) - - (display-file-info) - ) ;; end dma let - ) ;; end debug-segment - - ;; draw pause text. - (with-dma-buffer-add-bucket ((s3-1 (if *debug-segment* + (if *display-pad-debug* (debug-pad-display (-> *cpad-list* cpads 0))) + (when (and (or (= *master-mode* 'game) (= *master-mode* 'pause)) (-> *entity-debug-inspect* entity)) + (define-extern entity-inspect-draw (function entity-debug-inspect object)) + (entity-inspect-draw *entity-debug-inspect*))) + (debug-draw-buffers) ;; lines/text + ;; debug dma + (with-dma-buffer-add-bucket ((debug-buf (-> disp frames (-> disp on-screen) frame debug-buf)) (bucket-id debug-no-zbuf)) + (when *display-profile* + (dma-buffer-add-gs-set debug-buf + (alpha-1 (new 'static 'gs-alpha :b 1 :d 1)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk 1)) + (test-1 (new 'static 'gs-test :zte 1 :ztst (gs-ztest always))) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag 1 :mmin 1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw 4)) + (fogcol *fog-color*)) + ;; draw the profile bars + (dotimes (s2-0 2) + (let ((s1-0 (-> disp frames (-> disp on-screen) frame profile-bar s2-0))) + (add-end-frame s1-0 'end-draw (static-rgba #x40 #x40 #x40 #x40)) + (draw s1-0 debug-buf (* 10 s2-0))) + 0)) ;; end profiler draw + (when *display-deci-count* + (draw-string-xy (string-format "~D" *deci-count*) debug-buf 448 210 (font-color default) (font-flags shadow kerning))) + ;; added + (#when PC_PORT + (draw *pc-settings* debug-buf) + (draw-memory *pc-settings* debug-buf) + (print-debug-misc *pc-settings*)) + (display-file-info)) ;; end dma let + ) ;; end debug-segment + ;; draw pause text. + (with-dma-buffer-add-bucket ((s3-1 (if *debug-segment* (-> disp frames (-> disp on-screen) frame debug-buf) - (-> disp frames (-> disp on-screen) frame global-buf) - )) - (bucket-id debug)) - (if (and (= *master-mode* 'pause) (!= *cheat-mode* 'camera)) + (-> disp frames (-> disp on-screen) frame global-buf))) + (bucket-id debug)) + (if (and (= *master-mode* 'pause) (!= *cheat-mode* 'camera)) (draw-string-xy (lookup-text! *common-text* (text-id pause) #f) - s3-1 256 160 (font-color red) (font-flags shadow kerning middle large)) - ) - - ;; draw console text on screen - (let ((a3-8 (the int (draw-string *stdcon0* s3-1 *font-context*)))) - (draw-string-xy *stdcon1* s3-1 (the int (-> *font-context* origin x)) a3-8 (font-color default) (font-flags shadow kerning)) - ) - - ;; draw misc info - (if *display-iop-info* - (show-iop-info s3-1) - ) - (if *display-memcard-info* - (show-mc-info s3-1) - ) - ) - (let ((v1-220 *dma-mem-usage*)) - (when (nonzero? v1-220) - (set! (-> v1-220 length) (max 85 (-> v1-220 length))) - (set! (-> v1-220 data 84 name) "debug") - (+! (-> v1-220 data 84 count) 1) - (+! (-> v1-220 data 84 used) - (&- (-> (if *debug-segment* + s3-1 + 256 + 160 + (font-color red) + (font-flags shadow kerning middle large))) + ;; draw console text on screen + (let ((a3-8 (the int (draw-string *stdcon0* s3-1 *font-context*)))) + (draw-string-xy *stdcon1* + s3-1 + (the int (-> *font-context* origin x)) + a3-8 + (font-color default) + (font-flags shadow kerning))) + ;; draw misc info + (if *display-iop-info* (show-iop-info s3-1)) + (if *display-memcard-info* (show-mc-info s3-1))) + (let ((v1-220 *dma-mem-usage*)) + (when (nonzero? v1-220) + (set! (-> v1-220 length) (max 85 (-> v1-220 length))) + (set! (-> v1-220 data 84 name) "debug") + (+! (-> v1-220 data 84 count) 1) + (+! (-> v1-220 data 84 used) + (&- (-> (if *debug-segment* (-> disp frames (-> disp on-screen) frame debug-buf) - (-> disp frames (-> disp on-screen) frame global-buf) - ) - base - ) - (the-as uint debug-txt-buf) - ) - ) - (set! (-> v1-220 data 84 total) (-> v1-220 data 84 used)) - ) - ) - ) - - ;; console buffers - (set! *stdcon* (clear *stdcon0*)) - ) - + (-> disp frames (-> disp on-screen) frame global-buf)) + base) + (the-as uint debug-txt-buf))) + (set! (-> v1-220 data 84 total) (-> v1-220 data 84 used))))) + ;; console buffers + (set! *stdcon* (clear *stdcon0*))) ;; <--------------------------- SWAP DISPLAY! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (with-profiler "swap-display" (swap-display disp)) + (with-profiler "swap-display" + (swap-display disp)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (set! (-> *time-of-day-context* title-updated) #f) (set! *teleport* #f) (when (nonzero? *teleport-count*) (set! *teleport* #t) - (set! *teleport-count* (+ *teleport-count* -1)) - ) - + (set! *teleport-count* (+ *teleport-count* -1))) ;; perf stats - - (with-profiler "process-particles" (process-particles)) - + (with-profiler "process-particles" + (process-particles)) ;; vif0 collide - (with-profiler "sound-update" - (swap-sound-buffers (ear-trans) (camera-pos) (camera-angle)) - (str-play-kick) - ) - + (swap-sound-buffers (ear-trans) (camera-pos) (camera-angle)) + (str-play-kick)) (with-profiler "level-update" (level-update *level*) ;; also updates settings. ) (with-profiler "mc-run" - (mc-run) - ) + (mc-run)) ;; og:preserve-this ;; PC port note : this function checks to see if the memory card has been removed or swapped ;; and disabled auto-save if it has. the pc port can only disable auto-save manually through the menu option. @@ -867,73 +555,36 @@ ;; it runs some C kernel functions which in the port also do some I/O which gets very slow very quickly. ;; we're just not gonna run it. ; (auto-save-check) - (with-profiler "update-pc" (#when PC_PORT - (update *pc-settings*) - ) - ) - - + (update *pc-settings*))) ;; suspend - (suspend) - ) - ) - - - 0 - ) + (suspend))) + 0) (defun on ((release-mode symbol)) "Turn the game on." - (when (not *dproc*) (unless release-mode - (if (= (-> *level* level0 status) 'inactive) - (bg 'halfpipe) - ) - ) + (if (= (-> *level* level0 status) 'inactive) (bg 'halfpipe))) (set! *run* #t) - (let ((new-dproc (process-spawn-function process display-loop :name 'display - :from *4k-dead-pool* :to *display-pool*))) - (set! *dproc* (the process (ppointer->process new-dproc))) - ) + (let ((new-dproc (process-spawn-function process display-loop :name 'display :from *4k-dead-pool* :to *display-pool*))) + (set! *dproc* (the process (ppointer->process new-dproc)))) (cond - ((or (level-get-with-status *level* 'loaded) - (level-get-with-status *level* 'alive) - (level-get-with-status *level* 'active) - ) + ((or (level-get-with-status *level* 'loaded) (level-get-with-status *level* 'alive) (level-get-with-status *level* 'active)) (activate-levels! *level*) (when (not release-mode) (let ((entity-cam (entity-by-type camera-start))) - (if (and entity-cam (type-type? (-> entity-cam type) entity-actor)) - (camera-teleport-to-entity entity-cam) - ) - ) - ) - ) - (else - (kill-by-name 'display *active-pool*) - (set! *dproc* #f) - ) - ) - *dproc* - ) - ) + (if (and entity-cam (type-type? (-> entity-cam type) entity-actor)) (camera-teleport-to-entity entity-cam))))) + (else (kill-by-name 'display *active-pool*) (set! *dproc* #f))) + *dproc*)) (defun off () "Turn the game off." - ;; stop the game and set the mode to debug (stop 'debug) ;; deactivate the levels (dotimes (i (-> *level* length)) - (let ((lev (-> *level* level i))) - (if (= (-> lev status) 'active) - (deactivate lev) - ) - ) - ) + (let ((lev (-> *level* level i))) (if (= (-> lev status) 'active) (deactivate lev)))) (set! *run* #f) - 0 - ) + 0) diff --git a/goal_src/jak1/engine/game/powerups.gc b/goal_src/jak1/engine/game/powerups.gc index 330d45dde2..16c4fade94 100644 --- a/goal_src/jak1/engine/game/powerups.gc +++ b/goal_src/jak1/engine/game/powerups.gc @@ -1,575 +1,487 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/mood/weather-part.gc") (require "engine/common-obs/water.gc") (require "engine/target/target-util.gc") -;; name: powerups.gc -;; name in dgo: powerups -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defbehavior cloud-track process ((arg0 process-tree) - (arg1 process-tree) - (arg2 (function vector none)) - (arg3 time-frame) - (arg4 time-frame) - (arg5 time-frame) - ) + (arg1 process-tree) + (arg2 (function vector none)) + (arg3 time-frame) + (arg4 time-frame) + (arg5 time-frame)) (change-parent self arg0) (let ((s1-1 (process->handle arg0)) - (s2-1 (process->handle arg1)) - ) + (s2-1 (process->handle arg1))) (let ((s0-0 (current-time))) (until (time-elapsed? s0-0 (+ arg3 arg4)) - (let ((v1-8 (or (not (handle->process s1-1)) (not (handle->process s2-1))))) - (if v1-8 - (deactivate self) - ) - ) + (let ((v1-8 (or (not (handle->process s1-1)) (not (handle->process s2-1))))) (if v1-8 (deactivate self))) (let* ((f0-1 (fmax 0.0 (fmin 1.0 (/ (- (the float (- (current-time) s0-0)) (the float arg3)) (the float arg4))))) - (a0-18 (process-drawable-pair-random-point! - (the-as process-drawable (-> s1-1 process 0)) - (the-as process-drawable (-> s2-1 process 0)) - (new-stack-vector0) - f0-1 - ) - ) - ) - (arg2 a0-18) - ) - (suspend) - ) - ) + (a0-18 (process-drawable-pair-random-point! (the-as process-drawable (-> s1-1 process 0)) + (the-as process-drawable (-> s2-1 process 0)) + (new-stack-vector0) + f0-1))) + (arg2 a0-18)) + (suspend))) (cond - ((zero? arg5) - (loop - (suspend) - ) - ) + ((zero? arg5) (loop (suspend))) (else - (let ((s4-1 (current-time))) - (until (time-elapsed? s4-1 arg5) - (let ((a0-21 (process-drawable-random-point! (the-as process-drawable (-> s2-1 process 0)) (new-stack-vector0)))) - (arg2 a0-21) - ) - (suspend) - ) - ) - ) - ) - ) - (none) - ) + (let ((s4-1 (current-time))) + (until (time-elapsed? s4-1 arg5) + (let ((a0-21 (process-drawable-random-point! (the-as process-drawable (-> s2-1 process 0)) (new-stack-vector0)))) + (arg2 a0-21)) + (suspend)))))) + (none)) (defpart 255 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 192.0) - (:a 64.0) - (:fade-a -1.0666667) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 192.0) + (:a 64.0) + (:fade-a -1.0666667) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 256 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 192.0) - (:a 64.0) - (:fade-a -1.0666667) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 192.0) + (:a 64.0) + (:fade-a -1.0666667) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 257 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0 3.0) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 258) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0 3.0) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 258))) (defpart 259 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.0 3.0) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.305)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 258) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.0 3.0) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.305)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 258))) (defpart 258 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -0.4) (:fade-a -2.0)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -0.4) (:fade-a -2.0))) (defpart 260 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0 64.0) - (:b 192.0 64.0) - (:a 64.0 128.0) - (:scalevel-x (meters -0.00033333333)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.2) - (:accel-y (meters -0.000016666667)) - (:timer (seconds 1.5)) - (:flags (bit0 bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0 64.0) + (:b 192.0 64.0) + (:a 64.0 128.0) + (:scalevel-x (meters -0.00033333333)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.2) + (:accel-y (meters -0.000016666667)) + (:timer (seconds 1.5)) + (:flags (bit0 bit2 bit3)))) (defpartgroup group-blue-hit-ground-effect :id 70 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 261) (sp-item 262) (sp-item 263 :flags (is-3d)) (sp-item 264) (sp-item 265 :flags (is-3d))) - ) + :parts ((sp-item 261) (sp-item 262) (sp-item 263 :flags (is-3d)) (sp-item 264) (sp-item 265 :flags (is-3d)))) (defpart 264 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:y (meters 0.5)) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 32.0 32.0) - (:b 192.0 63.0) - (:a 0.0 63 1.0) - (:vel-y (meters 0.093333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 0.5)) - (:flags (bit3)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 266) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:y (meters 0.5)) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 32.0 32.0) + (:b 192.0 63.0) + (:a 0.0 63 1.0) + (:vel-y (meters 0.093333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 0.5)) + (:flags (bit3)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 266) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 266 - :init-specs ((:r 0.0) - (:g 32.0 32.0) - (:b 192.0 63.0) - (:a 0.0 63 1.0) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 266) - ) - ) + :init-specs + ((:r 0.0) + (:g 32.0 32.0) + (:b 192.0 63.0) + (:a 0.0 63 1.0) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 266))) (defpart 265 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.5)) - (:scale-x (meters 0)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 32.0 32.0) - (:b 192.0 63.0) - (:a 96.0 32.0) - (:scalevel-x (meters 0.21333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.2)) - (:next-launcher 267) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.5)) + (:scale-x (meters 0)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 32.0 32.0) + (:b 192.0 63.0) + (:a 96.0 32.0) + (:scalevel-x (meters 0.21333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.2)) + (:next-launcher 267))) (defpart 267 - :init-specs ((:fade-a -2.1333334)) - ) + :init-specs ((:fade-a -2.1333334))) (defpart 263 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:y (meters 0.5)) - (:scale-x (meters 0)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 32.0 32.0) - (:b 192.0 63.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.22666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.7111111) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.15)) - (:next-launcher 268) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:y (meters 0.5)) + (:scale-x (meters 0)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 32.0 32.0) + (:b 192.0 63.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.22666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.7111111) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.15)) + (:next-launcher 268))) (defpart 268 - :init-specs ((:fade-a -1.4222223)) - ) + :init-specs ((:fade-a -1.4222223))) (defpart 261 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 32.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 32.0 32.0) - (:b 192.0 63.0) - (:a 16.0 32.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 32.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 32.0 32.0) + (:b 192.0 63.0) + (:a 16.0 32.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 262 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 32.0 32.0) - (:b 192.0 63.0) - (:a 16.0 16.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 32.0 32.0) + (:b 192.0 63.0) + (:a 16.0 16.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 269 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 92.0 32.0) - (:g 32.0 92.0) - (:b 0.0) - (:a 64.0) - (:fade-a -1.0) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 92.0 32.0) + (:g 32.0 92.0) + (:b 0.0) + (:a 64.0) + (:fade-a -1.0) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 270 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 92.0 32.0) - (:g 32.0 92.0) - (:b 0.0) - (:a 64.0) - (:fade-a -1.0) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 92.0 32.0) + (:g 32.0 92.0) + (:b 0.0) + (:a 64.0) + (:fade-a -1.0) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 271 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.5 2.0) - (:y (meters -0.05)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0023333333) (meters 0.0016666667)) - (:scalevel-x (meters -0.00083333335)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.024242423) - (:accel-y (meters -0.000100000005) (meters -0.0003)) - (:friction 0.93) - (:timer (seconds 0.1) (seconds 0.697)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 272) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.05)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.5 2.0) + (:y (meters -0.05)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0023333333) (meters 0.0016666667)) + (:scalevel-x (meters -0.00083333335)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.024242423) + (:accel-y (meters -0.000100000005) (meters -0.0003)) + (:friction 0.93) + (:timer (seconds 0.1) (seconds 0.697)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 272) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.05)))) (defpart 272 - :init-specs ((:fade-r 0.0)) - ) + :init-specs ((:fade-r 0.0))) (defpart 273 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 92.0 32.0) - (:g 0.0) - (:b 0.0) - (:a 64.0) - (:fade-a -1.0) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 92.0 32.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:fade-a -1.0) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 274 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 92.0 32.0) - (:g 0.0) - (:b 0.0) - (:a 64.0) - (:fade-a -1.0) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 92.0 32.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:fade-a -1.0) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 275 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.5 2.0) - (:y (meters -0.05)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 0.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0023333333) (meters 0.0016666667)) - (:scalevel-x (meters -0.00083333335)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.024242423) - (:accel-y (meters -0.000100000005) (meters -0.0003)) - (:friction 0.93) - (:timer (seconds 0.1) (seconds 0.697)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 276) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.05)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.5 2.0) + (:y (meters -0.05)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 0.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0023333333) (meters 0.0016666667)) + (:scalevel-x (meters -0.00083333335)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.024242423) + (:accel-y (meters -0.000100000005) (meters -0.0003)) + (:friction 0.93) + (:timer (seconds 0.1) (seconds 0.697)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 276) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.05)))) (defpart 276 - :init-specs ((:fade-r 0.0)) - ) + :init-specs ((:fade-r 0.0))) (defpart 277 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 92.0 32.0) - (:b 0.0) - (:a 64.0) - (:fade-a -1.0) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 92.0 32.0) + (:b 0.0) + (:a 64.0) + (:fade-a -1.0) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 278 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 92.0 32.0) - (:b 0.0) - (:a 64.0) - (:fade-a -1.0) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 92.0 32.0) + (:b 0.0) + (:a 64.0) + (:fade-a -1.0) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 279 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.5 2.0) - (:y (meters -0.05)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 100.0 28.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0023333333) (meters 0.0016666667)) - (:scalevel-x (meters -0.00083333335)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.024242423) - (:accel-y (meters -0.000100000005) (meters -0.0003)) - (:friction 0.93) - (:timer (seconds 0.1) (seconds 0.697)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 280) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.05)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.5 2.0) + (:y (meters -0.05)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 100.0 28.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0023333333) (meters 0.0016666667)) + (:scalevel-x (meters -0.00083333335)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.024242423) + (:accel-y (meters -0.000100000005) (meters -0.0003)) + (:friction 0.93) + (:timer (seconds 0.1) (seconds 0.697)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 280) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.05)))) (defpart 280 - :init-specs ((:fade-g 0.0)) - ) + :init-specs ((:fade-g 0.0))) (defun eco-blue-glow ((arg0 vector)) (launch-particles (-> *part-id-table* 255) arg0) - (if (rand-vu-percent? 0.5) - (launch-particles (-> *part-id-table* 257) arg0) - ) + (if (rand-vu-percent? 0.5) (launch-particles (-> *part-id-table* 257) arg0)) 0 - (none) - ) + (none)) (defbehavior target-powerup-process target () (water-control-method-10 (-> self water)) (when (not *weather-off*) (case (-> self current-level name) - (('swamp) - (update-rain self) - ) - (('snow) - (update-snow self) - ) - ) - ) + (('swamp) (update-rain self)) + (('snow) (update-snow self)))) (cond ((and (= (-> self control ground-pat material) (pat-material ice)) (and (>= (-> self control unknown-float01) 204.8) - (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.05))) - ) - ) + (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.05))))) (let ((gp-0 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg RbigToe)))) - (if (and (< (fabs (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) gp-0 (-> self control trans)) - ) - ) - 819.2 - ) - (rand-vu-percent? 0.5) - ) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2391) gp-0) - ) - ) + (if (and (< (fabs (vector-dot (-> self control dynam gravity-normal) (vector-! (new 'stack-no-clear 'vector) gp-0 (-> self control trans)))) + 819.2) + (rand-vu-percent? 0.5)) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2391) gp-0))) (let ((gp-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg LbigToe)))) - (if (and (< (fabs (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self control trans)) - ) - ) - 819.2 - ) - (rand-vu-percent? 0.5) - ) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2391) gp-1) - ) - ) + (if (and (< (fabs (vector-dot (-> self control dynam gravity-normal) (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self control trans)))) + 819.2) + (rand-vu-percent? 0.5)) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2391) gp-1))) ;; og:preserve-this PAL patch here (let ((f0-8 (lerp-scale 80.0 100.0 (-> self control unknown-float01) 0.0 81920.0))) - (if (not (ja-group? eichar-ice-stance-ja)) - (set! f0-8 (* 0.8 f0-8)) - ) - (seek! (-> self control unknown-float141) f0-8 (* 100.0 (seconds-per-frame))) - ) + (if (not (ja-group? eichar-ice-stance-ja)) (set! f0-8 (* 0.8 f0-8))) + (seek! (-> self control unknown-float141) f0-8 (* 100.0 (seconds-per-frame)))) (let ((f30-0 (-> self control unknown-float141)) - (f0-13 (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 81920.0)) - ) - (sound-play - "ice-loop" - :id (-> self control unknown-soundid00) - :vol f30-0 - :pitch f0-13 - :position (the-as symbol (-> self control trans)) - ) - ) - ) + (f0-13 (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 81920.0))) + (sound-play "ice-loop" + :id (-> self control unknown-soundid00) + :vol + f30-0 + :pitch + f0-13 + :position + (the-as symbol (-> self control trans))))) ((< 0.0 (-> self control unknown-float141)) (set! (-> self control unknown-float141) 0.0) (let ((v1-64 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) @@ -579,178 +491,96 @@ (set! (-> v1-64 auto-time) 48) (set! (-> v1-64 auto-from) 2) (set! (-> v1-64 parms mask) (sound-mask volume time)) - (-> v1-64 id) - ) - ) - ) + (-> v1-64 id)))) (let ((v1-67 (-> *time-of-day-context* current-shadow)) - (a0-33 (-> self draw shadow-ctrl)) - ) + (a0-33 (-> self draw shadow-ctrl))) (set! (-> a0-33 settings shadow-dir x) (-> v1-67 x)) (set! (-> a0-33 settings shadow-dir y) (-> v1-67 y)) - (set! (-> a0-33 settings shadow-dir z) (-> v1-67 z)) - ) + (set! (-> a0-33 settings shadow-dir z) (-> v1-67 z))) (when (and (!= (-> self fact eco-level) 0.0) - (>= (- (-> *display* game-frame-counter) (-> self fact eco-pickup-time)) - (the-as time-frame (-> self fact eco-timeout)) - ) - ) + (>= (- (-> *display* game-frame-counter) (-> self fact eco-pickup-time)) (the-as time-frame (-> self fact eco-timeout)))) (set! (-> self fact eco-level) 0.0) (set! (-> self fact eco-timeout) 0) (logclear! (-> self state-flags) (state-flags invuln-powerup)) (send-event self 'reset-collide) - (stop! (-> self sound)) - ) + (stop! (-> self sound))) (when (and (< 0.0 (-> self fact eco-level)) (not (logtest? (-> self state-flags) (state-flags first-person-mode))) (not (logtest? (-> self draw status) (draw-status hidden no-anim))) (not (movie?)) - (rand-vu-percent? - (lerp-scale - 0.0 - 1.0 - (the float (- (-> self fact eco-timeout) - (the-as uint (- (-> *display* game-frame-counter) (-> self fact eco-pickup-time))) - ) - ) - 0.0 - 900.0 - ) - ) - ) + (rand-vu-percent? (lerp-scale 0.0 + 1.0 + (the float + (- (-> self fact eco-timeout) (the-as uint (- (-> *display* game-frame-counter) (-> self fact eco-pickup-time))))) + 0.0 + 900.0))) (case (-> self fact eco-type) (((pickup-type eco-yellow)) (change-sound! (-> self sound) (static-sound-name "yel-eco-jak")) (let ((s4-0 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* (if (rand-vu-percent? 0.5) - 269 - 270 - ) - ) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-0)) - ) - ) + (launch-particles (-> *part-id-table* (if (rand-vu-percent? 0.5) 269 270)) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-0)))) (dotimes (gp-4 2) (let ((v1-111 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* 271) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-111)) - ) - ) - ) - ) + (launch-particles (-> *part-id-table* 271) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-111)))))) (((pickup-type eco-red)) (target-danger-set! (-> self control unknown-symbol30) #t) (update-transforms! (-> self control)) (let ((a1-23 (new 'stack-no-clear 'touching-shapes-entry))) (set! (-> a1-23 cshape1) (the-as collide-shape 0)) (set! (-> a1-23 cshape2) (the-as collide-shape *touching-list*)) - (find-overlapping-shapes (-> self control) (the-as overlaps-others-params a1-23)) - ) + (find-overlapping-shapes (-> self control) (the-as overlaps-others-params a1-23))) (target-danger-set! (-> self control unknown-symbol30) #f) (update-transforms! (-> self control)) (change-sound! (-> self sound) (static-sound-name "red-eco-jak")) (let ((s4-2 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* (if (rand-vu-percent? 0.5) - 273 - 274 - ) - ) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-2)) - ) - ) + (launch-particles (-> *part-id-table* (if (rand-vu-percent? 0.5) 273 274)) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-2)))) (dotimes (gp-6 2) (let ((v1-139 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* 275) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-139)) - ) - ) - ) - ) + (launch-particles (-> *part-id-table* 275) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-139)))))) (((pickup-type eco-blue)) (change-sound! (-> self sound) (static-sound-name "blue-eco-jak")) (let ((v1-150 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) (cond ((and (logtest? (-> self control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - ) + (not (logtest? (-> self control status) (cshape-moving-flags onsurf)))) (set! (-> *part-id-table* 259 init-specs 4 initial-valuef) 0.0) - (set! (-> *part-id-table* 259 init-specs 4 random-rangef) 65536.0) - ) + (set! (-> *part-id-table* 259 init-specs 4 random-rangef) 65536.0)) (else - (set! (-> *part-id-table* 259 init-specs 4 initial-valuef) 40960.0) - (set! (-> *part-id-table* 259 init-specs 4 random-rangef) 16384.0) - ) - ) - (launch-particles - (-> *part-id-table* 259) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-150)) - ) - ) + (set! (-> *part-id-table* 259 init-specs 4 initial-valuef) 40960.0) + (set! (-> *part-id-table* 259 init-specs 4 random-rangef) 16384.0))) + (launch-particles (-> *part-id-table* 259) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-150)))) (let ((gp-8 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* (if (rand-vu-percent? 0.5) - 255 - 256 - ) - ) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data gp-8)) - ) + (launch-particles (-> *part-id-table* (if (rand-vu-percent? 0.5) 255 256)) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data gp-8))) (if (rand-vu-percent? 0.5) - (launch-particles - (-> *part-id-table* 257) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data gp-8)) - ) - ) - ) + (launch-particles (-> *part-id-table* 257) (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data gp-8))))) (let ((v1-168 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* 260) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-168)) - ) - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 1 (seconds 0.1)) - ) + (launch-particles (-> *part-id-table* 260) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-168)))) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 1 (seconds 0.1))) (((pickup-type eco-green)) (change-sound! (-> self sound) (static-sound-name "green-eco-jak")) (let ((s4-8 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* (if (rand-vu-percent? 0.5) - 277 - 278 - ) - ) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-8)) - ) - ) + (launch-particles (-> *part-id-table* (if (rand-vu-percent? 0.5) 277 278)) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-8)))) (dotimes (gp-11 2) (let ((v1-188 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* 279) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-188)) - ) - ) - ) - ) - ) + (launch-particles (-> *part-id-table* 279) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-188))))))) (update-trans! (-> self sound) (-> self control trans)) - (update! (-> self sound)) - ) + (update! (-> self sound))) 0 - (none) - ) + (none)) (defbehavior target-powerup-effect target ((arg0 symbol)) (case arg0 (('eco-blue) (let ((v1-4 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (eco-blue-glow (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-4))) - ) - ) - ) + (eco-blue-glow (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-4)))))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/game/projectiles-h.gc b/goal_src/jak1/engine/game/projectiles-h.gc index d957f088de..f867ba2403 100644 --- a/goal_src/jak1/engine/game/projectiles-h.gc +++ b/goal_src/jak1/engine/game/projectiles-h.gc @@ -1,68 +1,53 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/game-h.gc") - -;; name: projectiles-h.gc -;; name in dgo: projectiles-h -;; dgos: GAME, ENGINE - (declare-type projectile process-drawable) + (define-extern projectile-init-by-other (function entity-actor vector vector uint handle none :behavior projectile)) ;; 4th arg is `options`, 5th is `last-target` ;; DECOMP BEGINS (deftype projectile (process-drawable) - ((root collide-shape-moving :override) - (base-trans vector :inline) - (target vector :inline) - (target-base vector :inline) - (parent-base vector :inline) - (parent-quat vector :inline) - (base-vector vector :inline) - (timeout time-frame) - (options uint64) - (last-target handle) - (notify-handle handle) - (max-speed float) - (max-turn float) - (old-dist float 16) - (old-dist-count int32) - (hits int32) - (max-hits int32) - (tween float) - (attack-mode symbol) - (update-velocity (function projectile none)) - (counter int32) - (target-count int32) - (sound-id sound-id) - ) + ((root collide-shape-moving :override) + (base-trans vector :inline) + (target vector :inline) + (target-base vector :inline) + (parent-base vector :inline) + (parent-quat vector :inline) + (base-vector vector :inline) + (timeout time-frame) + (options uint64) + (last-target handle) + (notify-handle handle) + (max-speed float) + (max-turn float) + (old-dist float 16) + (old-dist-count int32) + (hits int32) + (max-hits int32) + (tween float) + (attack-mode symbol) + (update-velocity (function projectile none)) + (counter int32) + (target-count int32) + (sound-id sound-id)) (:state-methods - projectile-die - projectile-dissipate - projectile-impact - projectile-moving - ) + projectile-die + projectile-dissipate + projectile-impact + projectile-moving) (:methods - (projectile-method-24 (_type_) none) - (projectile-method-25 (_type_) none) - (projectile-method-26 (_type_) none) - (projectile-method-27 (_type_) none) - (projectile-method-28 (_type_) none) - ) - ) - + (projectile-method-24 (_type_) none) + (projectile-method-25 (_type_) none) + (projectile-method-26 (_type_) none) + (projectile-method-27 (_type_) none) + (projectile-method-28 (_type_) none))) (deftype projectile-yellow (projectile) - ((mode int32) - (angle float) - ) - ) - + ((mode int32) + (angle float))) (deftype projectile-blue (projectile) - ((mode int32) - (joint-num int32) - ) - ) + ((mode int32) + (joint-num int32))) diff --git a/goal_src/jak1/engine/game/projectiles.gc b/goal_src/jak1/engine/game/projectiles.gc index fcbee89b2e..0784020074 100644 --- a/goal_src/jak1/engine/game/projectiles.gc +++ b/goal_src/jak1/engine/game/projectiles.gc @@ -1,34 +1,27 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/projectiles-h.gc") (require "engine/common-obs/water-h.gc") (require "engine/target/target-util.gc") (require "engine/common-obs/process-drawable.gc") -;; name: projectiles.gc -;; name in dgo: projectiles -;; dgos: GAME, ENGINE ;; note: changed for high fps ;; DECOMP BEGINS (deftype search-info (structure) - ((point vector :inline) - (best-point vector :inline) - (match-handle handle) - (match projectile) - (best float) - (radius float) - (rating uint32) - (require uint32) - (mask uint32) - (rot-base vector :inline) - (rot-range float) - ) - ) - + ((point vector :inline) + (best-point vector :inline) + (match-handle handle) + (match projectile) + (best float) + (radius float) + (rating uint32) + (require uint32) + (mask uint32) + (rot-base vector :inline) + (rot-range float))) (define *search-info* (new 'global 'search-info)) @@ -42,69 +35,35 @@ (set! (-> gp-0 require) arg3) (set! (-> gp-0 mask) arg2) (set! (-> gp-0 rot-base quad) (-> arg4 quad)) - (set! (-> gp-0 rot-range) (if (= arg5 65536.0) - -2.0 - (cos arg5) - ) - ) - (iterate-process-tree - *entity-pool* - (lambda ((arg0 projectile)) - (when (logtest? (process-mask crate enemy attackable) (-> arg0 mask)) - (let* ((gp-0 *search-info*) - (s4-0 arg0) - (s5-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) - (when s5-0 - (let* ((s3-0 (-> s5-0 root)) - (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape)) - s3-0 - ) - ) - ) - (when (the-as collide-shape-moving s4-1) - (let* ((s3-1 (-> s4-1 root-prim prim-core)) - (f30-0 (- (vector-vector-distance (-> gp-0 point) (the-as vector s3-1)) (-> s3-1 world-sphere w))) - ) - (when (nonzero? (-> s4-1 root-prim prim-core collide-as)) - (let ((s4-2 0) - (v1-8 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (the-as vector s3-1) (-> gp-0 point)) 1.0)) - ) - (if (logtest? (process-mask enemy) (-> s5-0 mask)) - (set! s4-2 (logior s4-2 1)) - ) - (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) (draw-status was-drawn))) - (set! s4-2 (logior s4-2 2)) - ) - (let ((a0-16 (logand s4-2 (-> gp-0 mask)))) - (when (and (>= a0-16 (the-as int (-> gp-0 rating))) - (or (zero? (-> gp-0 require)) (logtest? a0-16 (-> gp-0 require))) - (< f30-0 (-> gp-0 best)) - (>= (vector-dot v1-8 (-> gp-0 rot-base)) (-> gp-0 rot-range)) - ) - (set! (-> gp-0 match) s5-0) - (set! (-> gp-0 best) f30-0) - (set! (-> gp-0 rating) (the-as uint a0-16)) - a0-16 - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - *null-kernel-context* - ) - (-> gp-0 match) - ) - ) + (set! (-> gp-0 rot-range) (if (= arg5 65536.0) -2.0 (cos arg5))) + (iterate-process-tree *entity-pool* + (lambda ((arg0 projectile)) + (when (logtest? (process-mask crate enemy attackable) (-> arg0 mask)) + (let* ((gp-0 *search-info*) + (s4-0 arg0) + (s5-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) + (when s5-0 + (let* ((s3-0 (-> s5-0 root)) + (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape)) s3-0))) + (when (the-as collide-shape-moving s4-1) + (let* ((s3-1 (-> s4-1 root-prim prim-core)) + (f30-0 (- (vector-vector-distance (-> gp-0 point) (the-as vector s3-1)) (-> s3-1 world-sphere w)))) + (when (nonzero? (-> s4-1 root-prim prim-core collide-as)) + (let ((s4-2 0) + (v1-8 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (the-as vector s3-1) (-> gp-0 point)) 1.0))) + (if (logtest? (process-mask enemy) (-> s5-0 mask)) (set! s4-2 (logior s4-2 1))) + (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) (draw-status was-drawn))) (set! s4-2 (logior s4-2 2))) + (let ((a0-16 (logand s4-2 (-> gp-0 mask)))) + (when (and (>= a0-16 (the-as int (-> gp-0 rating))) + (or (zero? (-> gp-0 require)) (logtest? a0-16 (-> gp-0 require))) + (< f30-0 (-> gp-0 best)) + (>= (vector-dot v1-8 (-> gp-0 rot-base)) (-> gp-0 rot-range))) + (set! (-> gp-0 match) s5-0) + (set! (-> gp-0 best) f30-0) + (set! (-> gp-0 rating) (the-as uint a0-16)) + a0-16))))))))))) + *null-kernel-context*) + (-> gp-0 match))) (defun projectile-collision-reaction ((arg0 collide-shape-moving) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) (local-vars (sv-64 vector) (sv-68 vector) (sv-72 matrix) (sv-80 int) (sv-224 symbol)) @@ -115,725 +74,608 @@ (set! (-> sv-72 vector 0 quad) (-> arg3 quad)) (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (move-by-vector! arg0 a1-1) - ) + (move-by-vector! arg0 a1-1)) (set-and-handle-pat! arg0 (-> arg1 best-tri pat)) (case (-> arg1 best-tri pat material) - (((pat-material stopproj)) - (send-event (-> arg0 process) 'die) - ) - ) + (((pat-material stopproj)) (send-event (-> arg0 process) 'die))) (vector-! sv-64 (the-as vector (-> arg1 best-from-prim prim-core)) (-> arg1 best-tri intersect)) (set! (-> sv-64 w) 1.0) (vector-normalize! sv-64 1.0) (set! (-> arg0 coverage) (vector-dot sv-64 (-> arg1 best-tri normal))) - (let ((v1-22 (-> sv-64 quad))) - (set! (-> sv-68 quad) v1-22) - ) + (let ((v1-22 (-> sv-64 quad))) (set! (-> sv-68 quad) v1-22)) (when (= (-> arg1 best-u) 0.0) - (let ((a1-7 (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0))) - (move-by-vector! arg0 a1-7) - ) - ) + (let ((a1-7 (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0))) (move-by-vector! arg0 a1-7))) (set! (-> arg0 surface-normal quad) (-> sv-68 quad)) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) (set! (-> arg0 surface-angle) (vector-dot sv-68 (-> arg0 dynam gravity-normal))) (set! (-> arg0 poly-angle) (vector-dot (-> arg0 poly-normal) (-> arg0 dynam gravity-normal))) (set! (-> arg0 touch-angle) - (vector-dot sv-68 (vector-normalize! (vector-negate! (new-stack-vector0) (the-as vector sv-72)) 1.0)) - ) - (if (< (-> arg0 poly-angle) -0.2) - (set! sv-80 (logior sv-80 16)) - ) + (vector-dot sv-68 (vector-normalize! (vector-negate! (new-stack-vector0) (the-as vector sv-72)) 1.0))) + (if (< (-> arg0 poly-angle) -0.2) (set! sv-80 (logior sv-80 16))) (set! sv-224 (< (fabs (-> arg0 surface-angle)) (-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle))) (if (not (logtest? (-> arg0 prev-status) (cshape-moving-flags onsurf))) - (set! (-> arg0 ground-impact-vel) (- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal)))) - ) + (set! (-> arg0 ground-impact-vel) (- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal))))) (set! sv-80 (logior sv-80 4)) - (if (-> arg1 best-to-prim) - (set! sv-80 (logior sv-80 32)) - ) + (if (-> arg1 best-to-prim) (set! sv-80 (logior sv-80 32))) (cond (sv-224 - (set! sv-80 (logior sv-80 8)) - (set! (-> arg0 cur-pat mode) 1) - (set! (-> arg0 local-normal quad) (-> sv-68 quad)) - ) - (else - (set! sv-80 (logior sv-80 1)) - (set! (-> arg0 local-normal quad) (-> sv-68 quad)) - ) - ) + (set! sv-80 (logior sv-80 8)) + (set! (-> arg0 cur-pat mode) 1) + (set! (-> arg0 local-normal quad) (-> sv-68 quad))) + (else (set! sv-80 (logior sv-80 1)) (set! (-> arg0 local-normal quad) (-> sv-68 quad)))) (vector-reflect-flat-above! arg2 (the-as vector sv-72) sv-68) (when (and (not sv-224) (>= (-> arg0 coverage) 0.9)) (set! sv-80 (logior sv-80 2)) (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) (when (!= (-> arg0 poly-pat mode) (pat-mode wall)) (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) - (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) - ) - ) + (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)))) (logior! (-> arg0 status) sv-80) - (the-as cshape-moving-flags sv-80) - ) + (the-as cshape-moving-flags sv-80)) (defpartgroup group-yellow-eco-fireball :id 102 :duration (seconds 1) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 349 :flags (launch-asap) :binding 350) - (sp-item 350 :flags (start-dead launch-asap) :binding 351) - (sp-item 351 :flags (start-dead launch-asap) :binding 352) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - ) - ) + :parts + ((sp-item 349 :flags (launch-asap) :binding 350) + (sp-item 350 :flags (start-dead launch-asap) :binding 351) + (sp-item 351 :flags (start-dead launch-asap) :binding 352) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)))) (defpart 349 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3)) + (:func 'sparticle-track-root-prim))) (defpart 350 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 4) (meters 16)) - (:z (meters 0)) - (:scale-x (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 32.0) - (:vel-x (meters -0.10666667) 1 (meters 0.21333334)) - (:rotvel-z (degrees -0.4) 1 (degrees 0.8)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 4) (meters 16)) + (:z (meters 0)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 32.0) + (:vel-x (meters -0.10666667) 1 (meters 0.21333334)) + (:rotvel-z (degrees -0.4) 1 (degrees 0.8)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7)))) (defpart 351 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:y (meters 0) (meters 16)) - (:z (meters 0)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.11259259)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:y (meters 0) (meters 16)) + (:z (meters 0)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.11259259)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7)))) (defpart 352 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:a 64.0) - (:scalevel-x (meters -0.02)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.0) - (:timer (seconds 0.18)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:a 64.0) + (:scalevel-x (meters -0.02)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.0) + (:timer (seconds 0.18)) + (:flags (bit2 bit3)))) (defpart 353 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.5 0.5) - (:y (meters -0.05)) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 96.0) - (:vel-y (meters 0.005) (meters 0.011666667)) - (:scalevel-x (meters -0.000909091)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.024242423) - (:accel-y (meters -0.000100000005) (meters -0.0003)) - (:friction 0.93) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 354) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.5 0.5) + (:y (meters -0.05)) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 96.0) + (:vel-y (meters 0.005) (meters 0.011666667)) + (:scalevel-x (meters -0.000909091)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.024242423) + (:accel-y (meters -0.000100000005) (meters -0.0003)) + (:friction 0.93) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 354) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.3)))) (defpart 354 - :init-specs ((:fade-r 0.0)) - ) + :init-specs ((:fade-r 0.0))) (defpartgroup group-part-yellow-eco-fireball-launcher :id 103 :duration (seconds 2) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 355 :flags (launch-asap)) - (sp-item 356 :flags (bit1) :period (seconds 2.1) :length (seconds 0.05)) - (sp-item 357 :flags (launch-asap)) - (sp-item 358 :flags (launch-asap) :binding 359) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 355 :flags (launch-asap)) + (sp-item 356 :flags (bit1) :period (seconds 2.1) :length (seconds 0.05)) + (sp-item 357 :flags (launch-asap)) + (sp-item 358 :flags (launch-asap) :binding 359) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)))) (defpart 355 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0) - (:a 64.0) - (:scalevel-x (meters -0.06666667)) - (:rotvel-z (degrees -204.8) 1 (degrees 409.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.0) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:a 64.0) + (:scalevel-x (meters -0.06666667)) + (:rotvel-z (degrees -204.8) 1 (degrees 409.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.0) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)))) (defpart 357 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 5.0) - (:x (meters -0.6) (meters 1.2)) - (:y (meters -0.6) (meters 1.2)) - (:z (meters -0.6) (meters 1.2)) - (:scale-x (meters 1.5) (meters 0.75)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 32.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.0044444446)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.14222223) - (:fade-a -0.14222223) - (:accel-y (meters -0.000016666667)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 5.0) + (:x (meters -0.6) (meters 1.2)) + (:y (meters -0.6) (meters 1.2)) + (:z (meters -0.6) (meters 1.2)) + (:scale-x (meters 1.5) (meters 0.75)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 32.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.0044444446)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.14222223) + (:fade-a -0.14222223) + (:accel-y (meters -0.000016666667)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3)))) (defpart 356 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 12.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0) (meters 0.053333335)) - (:scalevel-x (meters -0.0025000002)) - (:scalevel-y :copy scalevel-x) - (:fade-g -1.0666667) - (:fade-a -0.17777778) - (:accel-y (meters -0.001)) - (:friction 0.99) - (:timer (seconds 0.2) (seconds 0.197)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 90) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 12.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0) (meters 0.053333335)) + (:scalevel-x (meters -0.0025000002)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.0666667) + (:fade-a -0.17777778) + (:accel-y (meters -0.001)) + (:friction 0.99) + (:timer (seconds 0.2) (seconds 0.197)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 90) (degrees 180)))) (defpart 360 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 24.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0) (meters 0.053333335)) - (:scalevel-x (meters -0.0025000002)) - (:scalevel-y :copy scalevel-x) - (:fade-g -1.0666667) - (:fade-a -0.17777778) - (:accel-y (meters -0.001)) - (:friction 0.99) - (:timer (seconds 0.2) (seconds 0.197)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 24.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0) (meters 0.053333335)) + (:scalevel-x (meters -0.0025000002)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.0666667) + (:fade-a -0.17777778) + (:accel-y (meters -0.001)) + (:friction 0.99) + (:timer (seconds 0.2) (seconds 0.197)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 358 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 16.0) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 1.0) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:accel-y (meters -0.0005)) - (:friction 0.99) - (:timer (seconds 1.1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 100.00001)) - (:conerot-y (degrees 90) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 16.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 1.0) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:accel-y (meters -0.0005)) + (:friction 0.99) + (:timer (seconds 1.1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 100.00001)) + (:conerot-y (degrees 90) (degrees 180)))) (defpart 361 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 1.0) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:accel-y (meters -0.0005)) - (:friction 0.99) - (:timer (seconds 1.1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 1.0) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:accel-y (meters -0.0005)) + (:friction 0.99) + (:timer (seconds 1.1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 359 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.1) (meters 0.2)) - (:scale-x (meters 0.3) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.10666667)) - (:scalevel-x (meters -0.000909091)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.26666668) - (:fade-a -0.19393939) - (:timer (seconds 0.3) (seconds 0.797)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.1) (meters 0.2)) + (:scale-x (meters 0.3) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.10666667)) + (:scalevel-x (meters -0.000909091)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.26666668) + (:fade-a -0.19393939) + (:timer (seconds 0.3) (seconds 0.797)) + (:flags (bit2 bit3 bit7)))) (defpartgroup group-part-yellow-eco-fireball-hit :id 104 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 2059 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2060 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) - (sp-item 2061 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2062 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2059 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2060 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) + (sp-item 2061 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2062 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.067)))) (defpart 2060 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:scale-x (meters 0.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2063) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:scale-x (meters 0.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2063) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2063 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223))) (defpart 2062 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:scale-x (meters 0.2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 8)) - (:r 255.0) - (:g 196.0) - (:b 0.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.42666668)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 8)) + (:r 255.0) + (:g 196.0) + (:b 0.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.42666668)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2059 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 16)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 0.0) - (:a 96.0) - (:fade-a -1.7454545) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 16)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 0.0) + (:a 96.0) + (:fade-a -1.7454545) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2061 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.6) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2064) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.6) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2064) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2064 - :init-specs ((:fade-r -0.53333336) (:fade-g -0.53333336) (:fade-b -1.0666667) (:fade-a -0.53333336)) - ) + :init-specs ((:fade-r -0.53333336) (:fade-g -0.53333336) (:fade-b -1.0666667) (:fade-a -0.53333336))) (defmethod projectile-method-24 ((this projectile)) (spawn (-> this part) (the-as vector (-> this root root-prim prim-core))) 0 - (none) - ) + (none)) (defmethod projectile-method-28 ((this projectile)) 0 - (none) - ) + (none)) (defstate projectile-moving (projectile) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (when (-> self attack-mode) - (when (cond - ((= (-> proc type) target) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode (-> self attack-mode))))) - ) - (else - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 4) - (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (-> block param 0)) - (set! (-> a1-2 param 1) (the-as uint (-> self attack-mode))) - (let ((v1-13 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-13) - (set! (-> a1-2 param 2) (the-as uint v1-13)) - ) - (set! (-> a1-2 param 3) (the-as uint 0)) - (send-event-function proc a1-2) - ) - ) - ) - (let ((v1-14 (-> self notify-handle))) - (if (handle->process v1-14) - (send-event (-> v1-14 process 0) 'notify 'attack proc) - ) - ) - (+! (-> self hits) 1) - (if (>= (-> self hits) (-> self max-hits)) - (go-virtual projectile-impact) - ) - ) - ) - ) - (('die) - (go-virtual projectile-impact) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :code (behavior () - (let ((gp-0 #f)) - (while (not (time-elapsed? (-> self state-time) (-> self timeout))) - (let ((s5-0 (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - (countdown (s4-0 s5-0) - (if gp-0 - (go-virtual projectile-impact) - ) - (projectile-method-28 self) - ((-> self update-velocity) self) - (when (logtest? (-> self options) 2) - (seek! (-> self tween) 1.0 (* 0.5 (seconds-per-frame))) - (let ((f0-6 (vector-vector-distance (-> self root trans) (-> self target)))) - (cond - ((< f0-6 20480.0) - (seek! (-> self tween) 1.0 (* 3.0 (seconds-per-frame))) - ) - ((< f0-6 40960.0) - (seek! (-> self tween) 1.0 (seconds-per-frame)) - ) - ) - ) - ) - (let ((s3-0 (new 'stack-no-clear 'vector))) - (set! (-> s3-0 quad) (-> self root trans quad)) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) - (set! (-> self old-dist (-> self old-dist-count)) - (* 0.0625 (vector-vector-distance s3-0 (-> self root trans))) - ) - ) - (set! (-> self old-dist-count) (logand (+ (-> self old-dist-count) 1) 15)) - (let ((f0-16 0.0)) - (countdown (v1-35 16) - (+! f0-16 (-> self old-dist v1-35)) - ) - ;; og:preserve-this changed for high fps. This fixes projectile collision issues - (if (or (and (logtest? (-> self root status) (cshape-moving-flags twall)) (< f0-16 (* (-> *display* time-adjust-ratio) (meters 0.5)))) - (< f0-16 (* (-> *display* time-adjust-ratio) (meters 0.05)))) - (set! gp-0 #t) - ) - ) - ) - (set-time-ratios *display* (the float s5-0)) - ) - (projectile-method-24 self) - (suspend) - ) - ) - (go-virtual projectile-dissipate) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (when (-> self attack-mode) + (when (cond + ((= (-> proc type) target) + (send-event proc 'attack (-> block param 0) (static-attack-info ((mode (-> self attack-mode)))))) + (else + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 4) + (set! (-> a1-2 message) 'attack) + (set! (-> a1-2 param 0) (-> block param 0)) + (set! (-> a1-2 param 1) (the-as uint (-> self attack-mode))) + (let ((v1-13 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-13) (set! (-> a1-2 param 2) (the-as uint v1-13))) + (set! (-> a1-2 param 3) (the-as uint 0)) + (send-event-function proc a1-2)))) + (let ((v1-14 (-> self notify-handle))) + (if (handle->process v1-14) (send-event (-> v1-14 process 0) 'notify 'attack proc))) + (+! (-> self hits) 1) + (if (>= (-> self hits) (-> self max-hits)) (go-virtual projectile-impact))))) + (('die) (go-virtual projectile-impact)))) + :enter + (behavior () + (set-time! (-> self state-time))) + :code + (behavior () + (let ((gp-0 #f)) + (while (not (time-elapsed? (-> self state-time) (-> self timeout))) + (let ((s5-0 (the int (-> *display* time-ratio)))) + (set-time-ratios *display* 1.0) + (countdown (s4-0 s5-0) + (if gp-0 (go-virtual projectile-impact)) + (projectile-method-28 self) + ((-> self update-velocity) self) + (when (logtest? (-> self options) 2) + (seek! (-> self tween) 1.0 (* 0.5 (seconds-per-frame))) + (let ((f0-6 (vector-vector-distance (-> self root trans) (-> self target)))) + (cond + ((< f0-6 20480.0) (seek! (-> self tween) 1.0 (* 3.0 (seconds-per-frame)))) + ((< f0-6 40960.0) (seek! (-> self tween) 1.0 (seconds-per-frame)))))) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (set! (-> s3-0 quad) (-> self root trans quad)) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) + (set! (-> self old-dist (-> self old-dist-count)) (* 0.0625 (vector-vector-distance s3-0 (-> self root trans))))) + (set! (-> self old-dist-count) (logand (+ (-> self old-dist-count) 1) 15)) + (let ((f0-16 0.0)) + (countdown (v1-35 16) + (+! f0-16 (-> self old-dist v1-35))) + ;; og:preserve-this changed for high fps. This fixes projectile collision issues + (if (or (and (logtest? (-> self root status) (cshape-moving-flags twall)) + (< f0-16 (* (-> *display* time-adjust-ratio) (meters 0.5)))) + (< f0-16 (* (-> *display* time-adjust-ratio) (meters 0.05)))) + (set! gp-0 #t)))) + (set-time-ratios *display* (the float s5-0))) + (projectile-method-24 self) + (suspend))) + (go-virtual projectile-dissipate))) (defun projectile-update-velocity-space-wars ((arg0 projectile)) (let ((s5-1 (vector-! (new 'stack-no-clear 'vector) (-> arg0 target) (-> arg0 root trans)))) (let ((s4-0 (new 'stack-no-clear 'vector)) (s3-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root transv) 1.0)) - (f30-0 (vector-length (-> arg0 root transv))) - ) - (if (logtest? (-> arg0 root status) (cshape-moving-flags tsurf)) - (vector-flatten! s5-1 s5-1 (-> arg0 root local-normal)) - ) + (f30-0 (vector-length (-> arg0 root transv)))) + (if (logtest? (-> arg0 root status) (cshape-moving-flags tsurf)) (vector-flatten! s5-1 s5-1 (-> arg0 root local-normal))) (vector-normalize-copy! s4-0 s5-1 1.0) (if (and (or (not (handle->process (-> arg0 last-target))) - (zero? (-> (the-as target (handle->process (-> arg0 last-target))) control root-prim prim-core collide-as)) - ) - (< (vector-dot s4-0 s3-0) 0.0) - ) - (go (method-of-object arg0 projectile-dissipate)) - ) + (zero? (-> (the-as target (handle->process (-> arg0 last-target))) control root-prim prim-core collide-as))) + (< (vector-dot s4-0 s3-0) 0.0)) + (go (method-of-object arg0 projectile-dissipate))) (vector-deg-slerp (-> arg0 root transv) s3-0 s4-0 (-> arg0 tween)) - (vector-normalize! (-> arg0 root transv) f30-0) - ) - (vector+! (-> arg0 root transv) (-> arg0 root transv) s5-1) - ) + (vector-normalize! (-> arg0 root transv) f30-0)) + (vector+! (-> arg0 root transv) (-> arg0 root transv) s5-1)) (vector-v++! (-> arg0 root transv) (compute-acc-due-to-gravity (-> arg0 root) (new-stack-vector0) 0.0)) (if (< (-> arg0 max-speed) (vector-length (-> arg0 root transv))) - (vector-normalize! (-> arg0 root transv) (-> arg0 max-speed)) - ) - (if (logtest? (-> arg0 options) 1) - (set! (-> arg0 root transv y) -40960.0) - ) + (vector-normalize! (-> arg0 root transv) (-> arg0 max-speed))) + (if (logtest? (-> arg0 options) 1) (set! (-> arg0 root transv y) -40960.0)) 0 - (none) - ) + (none)) (defstate projectile-impact (projectile) :virtual #t - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 104) - -1 - #f - #f - #f - (-> self root root-prim prim-core) - :to *entity-pool* - ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (sound-play "yellow-explode") - (suspend) - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 104) + -1 + #f + #f + #f + (-> self root root-prim prim-core) + :to + *entity-pool*) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (sound-play "yellow-explode") + (suspend) + (go-virtual projectile-die))) (defstate projectile-dissipate (projectile) :virtual #t - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 104) - -1 - #f - #f - #f - (-> self root root-prim prim-core) - :to *entity-pool* - ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (sound-play "yellow-fizzle") - (suspend) - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 104) + -1 + #f + #f + #f + (-> self root root-prim prim-core) + :to + *entity-pool*) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (sound-play "yellow-fizzle") + (suspend) + (go-virtual projectile-die))) (defmethod projectile-method-27 ((this projectile)) 0 - (none) - ) + (none)) (defmethod projectile-method-26 ((this projectile)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 crate enemy wall-object ground-object)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod projectile-method-25 ((this projectile)) (go (method-of-object this projectile-moving)) 0 - (none) - ) + (none)) (defstate projectile-die (projectile) :virtual #t - :code (behavior () - (let ((v1-0 (-> self notify-handle))) - (if (handle->process v1-0) - (send-event (-> v1-0 process 0) 'notify 'die) - ) - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (let ((v1-0 (-> self notify-handle))) (if (handle->process v1-0) (send-event (-> v1-0 process 0) 'notify 'die))) + (cleanup-for-death self))) (defmethod deactivate ((this projectile)) - (if (nonzero? (-> this sound-id)) - (sound-stop (-> this sound-id)) - ) + (if (nonzero? (-> this sound-id)) (sound-stop (-> this sound-id))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defbehavior projectile-init-by-other projectile ((arg0 entity-actor) (arg1 vector) (arg2 vector) (arg3 uint) (arg4 handle)) (stack-size-set! (-> self main-thread) 512) @@ -848,8 +690,7 @@ (set! (-> self options) arg3) (set! (-> self notify-handle) (the-as handle #f)) (countdown (v1-4 16) - (set! (-> self old-dist v1-4) 4095996000.0) - ) + (set! (-> self old-dist v1-4) 4095996000.0)) (projectile-method-26 self) (set! (-> self root dynam gravity y) 1228800.0) (set! (-> self root dynam gravity-length) 1228800.0) @@ -858,10 +699,7 @@ (set! (-> self base-trans quad) (-> arg1 quad)) (set! (-> self parent-base quad) (-> arg1 quad)) (quaternion-copy! (-> self root quat) (-> (the-as process-drawable (-> self parent 0)) root quat)) - (quaternion-copy! - (the-as quaternion (-> self parent-quat)) - (-> (the-as process-drawable (-> self parent 0)) root quat) - ) + (quaternion-copy! (the-as quaternion (-> self parent-quat)) (-> (the-as process-drawable (-> self parent 0)) root quat)) (vector-identity! (-> self root scale)) (set! (-> self root transv quad) (-> arg2 quad)) (vector-normalize-copy! (-> self base-vector) arg2 1.0) @@ -873,13 +711,10 @@ (let ((a1-8 (new 'stack-no-clear 'overlaps-others-params))) (set! (-> a1-8 options) (the-as uint 1)) (set! (-> a1-8 tlist) *touching-list*) - (find-overlapping-shapes (-> self root) a1-8) - ) - ) + (find-overlapping-shapes (-> self root) a1-8))) (set! (-> self event-hook) (-> (method-of-object self projectile-moving) event)) (projectile-method-25 self) - (none) - ) + (none)) (defmethod projectile-method-27 ((this projectile-yellow)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 204 (seconds 0.1)) @@ -897,79 +732,53 @@ (set! (-> this target-base quad) (-> this target quad)) (let ((f30-0 (the float (sar (shl (the int (y-angle (-> this root))) 48) 48)))) (set! (-> this mask) (the-as process-mask (logior (process-mask projectile) (-> this mask)))) - (if (logtest? (-> this options) 16) - (set! (-> this max-hits) 1) - ) - (set! (-> *part-id-table* 356 init-specs 18 initial-valuef) - (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48)) - ) - (set! (-> *part-id-table* 358 init-specs 11 initial-valuef) - (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48)) - ) + (if (logtest? (-> this options) 16) (set! (-> this max-hits) 1)) + (set! (-> *part-id-table* 356 init-specs 18 initial-valuef) (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48))) + (set! (-> *part-id-table* 358 init-specs 11 initial-valuef) (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48))) (sound-play "yellow-fire") (set! (-> this sound-id) (sound-play "yellow-buzz")) (if (not (logtest? (-> this options) 416)) - (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 103) -1 #f #f #f s5-0 :to this) - ) - (set! (-> *part-id-table* 350 init-specs 2 initial-valuef) f30-0) - ) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 103) -1 #f #f #f s5-0 :to this)) + (set! (-> *part-id-table* 350 init-specs 2 initial-valuef) f30-0))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 102) this)) (when *target* (case (-> *target* current-level name) (('swamp) (set! (-> this water) (new 'process 'water-control this 0 0.0 8192.0 2048.0)) (set! (-> this water flags) (water-flags wt01 wt04 wt07)) - (set! (-> this water height) (if (logtest? (-> this options) 64) - 8192.0 - 10240.0 - ) - ) - (logior! (-> this root root-prim collide-with) (collide-kind water)) - ) + (set! (-> this water height) (if (logtest? (-> this options) 64) 8192.0 10240.0)) + (logior! (-> this root root-prim collide-with) (collide-kind water))) (('ogre) (when (not (logtest? (-> this options) 128)) (set! (-> this water) (new 'process 'water-control this 0 0.0 8192.0 2048.0)) (set! (-> this water flags) (water-flags wt01 wt04 wt07)) (set! (-> this water height) 129024.0) - (logior! (-> this root root-prim collide-with) (collide-kind water)) - ) - ) + (logior! (-> this root root-prim collide-with) (collide-kind water)))) (('finalboss) (+! (-> this root trans y) 4096.0) (set! (-> this water) (new 'process 'water-control this 0 0.0 8192.0 2048.0)) (set! (-> this water flags) (water-flags wt01 wt04 wt07)) (set! (-> this water height) 1977958.4) - (logior! (-> this root root-prim collide-with) (collide-kind water)) - ) - ) - ) + (logior! (-> this root root-prim collide-with) (collide-kind water))))) 0 - (none) - ) + (none)) (defmethod projectile-method-26 ((this projectile-yellow)) - (let ((t9-0 (method-of-type projectile projectile-method-26))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type projectile projectile-method-26))) (t9-0 this)) (logior! (-> this root root-prim collide-with) (collide-kind mother-spider)) - (none) - ) + (none)) (defmethod projectile-method-24 ((this projectile-yellow)) (with-pp - (find-ground-and-draw-shadow - (-> this root trans) - (-> this root shadow-pos) - 8192.0 - (collide-kind background) - (the-as process-drawable #f) - 12288.0 - 81920.0 - ) + (find-ground-and-draw-shadow (-> this root trans) + (-> this root shadow-pos) + 8192.0 + (collide-kind background) + (the-as process-drawable #f) + 12288.0 + 81920.0) (if (< (-> this root trans y) (-> this root shadow-pos y)) - (set! (-> this root trans y) (+ 1228.8 (-> this root shadow-pos y))) - ) + (set! (-> this root trans y) (+ 1228.8 (-> this root shadow-pos y)))) (update-transforms! (-> this root)) (set! (-> *part-id-table* 353 init-specs 16 initial-valuef) (the-as float 30)) (set! (-> *part-id-table* 353 init-specs 16 random-rangef) (the-as float 300)) @@ -979,15 +788,9 @@ (when (not (time-elapsed? (-> this state-time) (seconds 0.5))) (set! (-> *part-id-table* 353 init-specs 16 initial-valuef) (the-as float 0)) (set! (-> *part-id-table* 353 init-specs 16 random-rangef) (the-as float 0)) - 0 - ) - (spawn (-> this part) (the-as vector (-> this root root-prim prim-core))) - ) - ) - (else - (spawn (-> this part) (the-as vector (-> this root root-prim prim-core))) - ) - ) + 0) + (spawn (-> this part) (the-as vector (-> this root root-prim prim-core))))) + (else (spawn (-> this part) (the-as vector (-> this root root-prim prim-core))))) (let ((s5-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> s5-0 command) (sound-command set-param)) (set! (-> s5-0 id) (-> this sound-id)) @@ -995,99 +798,49 @@ (let ((gp-1 pp)) (when (= a1-3 #t) (if (and gp-1 (type-type? (-> gp-1 type) process-drawable) (nonzero? (-> (the-as process-drawable gp-1) root))) - (set! a1-3 (-> (the-as process-drawable gp-1) root trans)) - (set! a1-3 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> s5-0 parms trans) a1-3) - ) + (set! a1-3 (-> (the-as process-drawable gp-1) root trans)) + (set! a1-3 (the-as vector #f))))) + (sound-trans-convert (-> s5-0 parms trans) a1-3)) (set! (-> s5-0 parms mask) (sound-mask trans)) - (-> s5-0 id) - ) + (-> s5-0 id)) 0 - (none) - ) - ) + (none))) (defmethod projectile-method-28 ((this projectile-yellow)) (cond ((or (not (handle->process (-> this last-target))) - (zero? (-> (the-as target (handle->process (-> this last-target))) control root-prim prim-core collide-as)) - ) + (zero? (-> (the-as target (handle->process (-> this last-target))) control root-prim prim-core collide-as))) (cond ((zero? (-> this target-count)) - (let ((s5-0 (find-nearest-attackable - (-> this parent-base) - 409600.0 - (the-as uint 0) - (the-as uint 0) - (-> this base-vector) - (if (logtest? (-> this options) 160) - 546.13336 - 8192.0 - ) - ) - ) - ) - (let ((s4-0 (find-nearest-attackable - (-> this parent-base) - 163840.0 - (the-as uint 1) - (the-as uint 0) - (-> this base-vector) - (if (logtest? (-> this options) 160) - 910.2222 - 8192.0 - ) - ) - ) - (v1-10 (find-nearest-attackable - (-> this parent-base) - 28672.0 - (the-as uint 1) - (the-as uint 0) - (-> this base-vector) - 16384.0 - ) - ) - ) - (if s4-0 - (set! s5-0 s4-0) - ) - (if v1-10 - (set! s5-0 v1-10) - ) - ) + (let ((s5-0 (find-nearest-attackable (-> this parent-base) + 409600.0 + (the-as uint 0) + (the-as uint 0) + (-> this base-vector) + (if (logtest? (-> this options) 160) 546.13336 8192.0)))) + (let ((s4-0 (find-nearest-attackable (-> this parent-base) + 163840.0 + (the-as uint 1) + (the-as uint 0) + (-> this base-vector) + (if (logtest? (-> this options) 160) 910.2222 8192.0))) + (v1-10 (find-nearest-attackable (-> this parent-base) 28672.0 (the-as uint 1) (the-as uint 0) (-> this base-vector) 16384.0))) + (if s4-0 (set! s5-0 s4-0)) + (if v1-10 (set! s5-0 v1-10))) (set! (-> this last-target) (process->handle s5-0)) (when s5-0 (set! (-> this target quad) (-> s5-0 root root-prim prim-core world-sphere quad)) - (if (= (-> s5-0 type symbol) 'mother-spider) - (logand! (-> this options) -2) - ) - ) - ) - ) - (else - (set! (-> this target quad) (-> this target-base quad)) - ) - ) - ) + (if (= (-> s5-0 type symbol) 'mother-spider) (logand! (-> this options) -2))))) + (else (set! (-> this target quad) (-> this target-base quad))))) (else - (let ((a1-8 (handle->process (-> this last-target)))) - (set! (-> this target quad) (-> (the-as target a1-8) control root-prim prim-core world-sphere quad)) - ) - (if (and (< (vector-vector-xz-distance (-> this root trans) (-> this target)) 20480.0) - (< 24576.0 (fabs (- (-> this target y) (-> this root trans y)))) - ) - (set! (-> this last-target) (the-as handle #f)) - ) - ) - ) + (let ((a1-8 (handle->process (-> this last-target)))) + (set! (-> this target quad) (-> (the-as target a1-8) control root-prim prim-core world-sphere quad))) + (if (and (< (vector-vector-xz-distance (-> this root trans) (-> this target)) 20480.0) + (< 24576.0 (fabs (- (-> this target y) (-> this root trans y))))) + (set! (-> this last-target) (the-as handle #f))))) (+! (-> this target-count) 1) 0 - (none) - ) + (none)) (defmethod projectile-method-27 ((this projectile-blue)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 204 (seconds 0.1)) @@ -1102,72 +855,53 @@ (set! (-> this part) (create-launch-control (-> *part-group-id-table* 42) this)) (set! (-> this root root-prim collide-with) (collide-kind background)) (let* ((s5-1 (handle->process (-> this last-target))) - (v1-20 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) - s5-1 - ) - ) - ) - (if v1-20 - (set! (-> this joint-num) (rand-vu-int-range 3 (+ (-> (the-as process-drawable v1-20) node-list length) -1))) - ) - ) + (v1-20 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) s5-1))) + (if v1-20 (set! (-> this joint-num) (rand-vu-int-range 3 (+ (-> (the-as process-drawable v1-20) node-list length) -1))))) 0 - (none) - ) + (none)) (defmethod projectile-method-26 ((this projectile-blue)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) (set! (-> s4-0 collide-with) (collide-kind background)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defun spawn-projectile-blue ((arg0 target)) (local-vars (sv-48 entity-actor)) (with-pp (when arg0 (let ((s3-0 (rand-vu-int-range 3 (+ (-> arg0 node-list length) -1))) - (gp-0 (new-stack-vector0)) - ) - (set-vector! - gp-0 - (rand-vu-float-range -81920.0 81920.0) - (rand-vu-float-range -81920.0 81920.0) - (rand-vu-float-range -81920.0 81920.0) - 1.0 - ) + (gp-0 (new-stack-vector0))) + (set-vector! gp-0 + (rand-vu-float-range -81920.0 81920.0) + (rand-vu-float-range -81920.0 81920.0) + (rand-vu-float-range -81920.0 81920.0) + 1.0) (let ((s4-1 (get-process *default-dead-pool* projectile-blue #x4000))) (when s4-1 (let ((t9-5 (method-of-type projectile-blue activate))) - (t9-5 (the-as projectile-blue s4-1) pp 'projectile-blue (the-as pointer #x70004000)) - ) + (t9-5 (the-as projectile-blue s4-1) pp 'projectile-blue (the-as pointer #x70004000))) (let ((s2-0 run-function-in-process) (s1-0 s4-1) - (s0-0 projectile-init-by-other) - ) + (s0-0 projectile-init-by-other)) (set! sv-48 (-> pp entity)) (let ((a3-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> arg0 node-list data s3-0))) (t1-0 8) - (t2-0 (process->handle pp)) - ) + (t2-0 (process->handle pp))) ((the-as (function process function object object object object object object) s2-0) s1-0 s0-0 @@ -1175,56 +909,33 @@ a3-1 gp-0 t1-0 - t2-0 - ) - ) - ) - (-> s4-1 ppointer) - ) - ) - ) - ) + t2-0))) + (-> s4-1 ppointer))))) 0 - (none) - ) - ) + (none))) (defmethod projectile-method-28 ((this projectile-blue)) (let* ((s5-0 (handle->process (-> this last-target))) - (v1-4 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - s5-0 - ) - ) - ) - (if v1-4 - (vector<-cspace! (-> this target) (-> (the-as process-drawable v1-4) node-list data (-> this joint-num))) - ) - ) + (v1-4 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) s5-0))) + (if v1-4 (vector<-cspace! (-> this target) (-> (the-as process-drawable v1-4) node-list data (-> this joint-num))))) (if (< (vector-vector-distance (-> this target) (-> this root trans)) 4096.0) - (go (method-of-object this projectile-impact)) - ) + (go (method-of-object this projectile-impact))) 0 - (none) - ) + (none)) (defmethod projectile-method-24 ((this projectile-blue)) - (if (rand-vu-percent? 0.75) - (eco-blue-glow (the-as vector (-> this root root-prim prim-core))) - ) + (if (rand-vu-percent? 0.75) (eco-blue-glow (the-as vector (-> this root root-prim prim-core)))) 0 - (none) - ) + (none)) (defstate projectile-impact (projectile-blue) :virtual #t - :code (behavior () - (cleanup-for-death self) - ) - ) + :code + (behavior () + (cleanup-for-death self))) (defstate projectile-dissipate (projectile-blue) :virtual #t - :code (behavior () - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (go-virtual projectile-die))) diff --git a/goal_src/jak1/engine/game/settings-h.gc b/goal_src/jak1/engine/game/settings-h.gc index b371f3f673..72f71fbf44 100644 --- a/goal_src/jak1/engine/game/settings-h.gc +++ b/goal_src/jak1/engine/game/settings-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gkernel-h.gc") (require "engine/engine/connect.gc") -;; name: settings-h.gc -;; name in dgo: settings-h -;; dgos: GAME, ENGINE - ;; The settings system manages the state of settings like volume, language, and some other game state. ;; There are two special features of settings: ;; - To avoid changing a setting and forgetting to restore it, all changes must have an associated process. When that process dies, the settings is reverted. @@ -19,49 +14,46 @@ ;; The full setting state. (deftype setting-data (structure) - ((border-mode symbol) - (sfx-volume float) - (music-volume float) - (dialog-volume float) - (process-mask process-mask) - (common-page int32) - (language language-enum) - (screenx int32) - (screeny int32) - (vibration symbol) - (play-hints symbol) - (movie (pointer process)) - (talking (pointer process)) - (spooling (pointer process)) - (hint (pointer process)) - (ambient (pointer process)) - (video-mode symbol) - (aspect-ratio symbol) - (sound-flava uint8) - (auto-save symbol) - (music-volume-movie float) - (sfx-volume-movie float) - (music symbol) - (bg-r float) - (bg-g float) - (bg-b float) - (bg-a float) - (bg-a-speed float) - (bg-a-force float) - (allow-progress symbol) - (allow-pause symbol) - (sound-flava-priority float) - (ocean-off symbol) - (allow-look-around symbol) - (ambient-volume float) - (ambient-volume-movie float) - (dialog-volume-hint float) - (dummy uint32 11) - ) + ((border-mode symbol) + (sfx-volume float) + (music-volume float) + (dialog-volume float) + (process-mask process-mask) + (common-page int32) + (language language-enum) + (screenx int32) + (screeny int32) + (vibration symbol) + (play-hints symbol) + (movie (pointer process)) + (talking (pointer process)) + (spooling (pointer process)) + (hint (pointer process)) + (ambient (pointer process)) + (video-mode symbol) + (aspect-ratio symbol) + (sound-flava uint8) + (auto-save symbol) + (music-volume-movie float) + (sfx-volume-movie float) + (music symbol) + (bg-r float) + (bg-g float) + (bg-b float) + (bg-a float) + (bg-a-speed float) + (bg-a-force float) + (allow-progress symbol) + (allow-pause symbol) + (sound-flava-priority float) + (ocean-off symbol) + (allow-look-around symbol) + (ambient-volume float) + (ambient-volume-movie float) + (dialog-volume-hint float) + (dummy uint32 11)) (:methods - (update-from-engine (_type_ engine) setting-data) - ) - ) + (update-from-engine (_type_ engine) setting-data))) ;; There are three copies of setting data: ;; - default - if nothing is requesting a setting to be set, you end up with this value. @@ -71,28 +63,23 @@ ;; The setting-control manages the current/target/default system. ;; The setting requests are managed by the engine. (deftype setting-control (basic) - ((current setting-data :inline) - (target setting-data :inline) - (default setting-data :inline) - (engine engine) - ) + ((current setting-data :inline) + (target setting-data :inline) + (default setting-data :inline) + (engine engine)) (:methods - (new (symbol type int) _type_) - (add-setting (_type_ process symbol object object object) none) - (set-setting (_type_ process symbol object object object) none) - (remove-setting (_type_ process symbol) none) - (apply-settings (_type_) setting-data) - (update (_type_) setting-data) - ) - ) + (new (symbol type int) _type_) + (add-setting (_type_ process symbol object object object) none) + (set-setting (_type_ process symbol object object object) none) + (remove-setting (_type_ process symbol) none) + (apply-settings (_type_) setting-data) + (update (_type_) setting-data))) (defmethod new setting-control ((allocation symbol) (type-to-make type) (max-connections int)) "Allocate a new setting-control and its engine" (let ((s4-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> s4-0 engine) ((method-of-type engine new) allocation engine 'setting-control max-connections)) - s4-0 - ) - ) + s4-0)) (defmacro setting-control-func! (func s &rest args) (let ((argb #f) @@ -100,90 +87,80 @@ (argf 0.0) (setting (car s))) (cond - ; ((or (eq? setting 'border-mode) - ; (eq? setting 'allow-look-around) - ; (eq? setting 'ocean-off) - ; (eq? setting 'music) - ; (eq? setting 'vibration) - ; (eq? setting 'auto-save) - ; (eq? setting 'allow-pause) - ; (eq? setting 'allow-progress) - ; (eq? setting 'play-hints) - ; (eq? setting 'movie) - ; (eq? setting 'talking) - ; (eq? setting 'spooling) - ; (eq? setting 'hint) - ; (eq? setting 'ambient) - ; ) - ; (set! argb (car args)) - ; ) - ; ((or (eq? setting 'bg-r) - ; (eq? setting 'bg-g) - ; (eq? setting 'bg-b) - ; (eq? setting 'bg-a) - ; (eq? setting 'bg-a-speed) - ; (eq? setting 'bg-a-force) - ; ) - ; (set! argf (car args)) - ; ) - ; ((or (eq? setting 'language) - ; ) - ; (set! argi (car args)) - ; ) - ; ((or (eq? setting 'sound-flava) - ; ) - ; (set! argi (car args)) - ; (set! argf (cadr args)) - ; ) - ; ((or (eq? setting 'process-mask) - ; (eq? setting 'common-page) - ; ) - ; (set! argb (car args)) - ; (set! argi (cadr args)) - ; ) - ; ((or (eq? setting 'sfx-volume) - ; (eq? setting 'music-volume) - ; (eq? setting 'ambient-volume) - ; (eq? setting 'dialog-volume) - ; (eq? setting 'sfx-volume-movie) - ; (eq? setting 'music-volume-movie) - ; (eq? setting 'ambient-volume-movie) - ; (eq? setting 'dialog-volume-hint) - ; ) - ; (set! argb (car args)) - ; (set! argf (cadr args)) - ; ) - (#t - (set! argb (car args)) - (set! argf (cadr args)) - (set! argi (caddr args)) - ) - ) - `(,func *setting-control* (with-pp pp) ,s ,argb ,argf ,argi) - ) - ) + ;; ((or (eq? setting 'border-mode) + ;; (eq? setting 'allow-look-around) + ;; (eq? setting 'ocean-off) + ;; (eq? setting 'music) + ;; (eq? setting 'vibration) + ;; (eq? setting 'auto-save) + ;; (eq? setting 'allow-pause) + ;; (eq? setting 'allow-progress) + ;; (eq? setting 'play-hints) + ;; (eq? setting 'movie) + ;; (eq? setting 'talking) + ;; (eq? setting 'spooling) + ;; (eq? setting 'hint) + ;; (eq? setting 'ambient) + ;; ) + ;; (set! argb (car args)) + ;; ) + ;; ((or (eq? setting 'bg-r) + ;; (eq? setting 'bg-g) + ;; (eq? setting 'bg-b) + ;; (eq? setting 'bg-a) + ;; (eq? setting 'bg-a-speed) + ;; (eq? setting 'bg-a-force) + ;; ) + ;; (set! argf (car args)) + ;; ) + ;; ((or (eq? setting 'language) + ;; ) + ;; (set! argi (car args)) + ;; ) + ;; ((or (eq? setting 'sound-flava) + ;; ) + ;; (set! argi (car args)) + ;; (set! argf (cadr args)) + ;; ) + ;; ((or (eq? setting 'process-mask) + ;; (eq? setting 'common-page) + ;; ) + ;; (set! argb (car args)) + ;; (set! argi (cadr args)) + ;; ) + ;; ((or (eq? setting 'sfx-volume) + ;; (eq? setting 'music-volume) + ;; (eq? setting 'ambient-volume) + ;; (eq? setting 'dialog-volume) + ;; (eq? setting 'sfx-volume-movie) + ;; (eq? setting 'music-volume-movie) + ;; (eq? setting 'ambient-volume-movie) + ;; (eq? setting 'dialog-volume-hint) + ;; ) + ;; (set! argb (car args)) + ;; (set! argf (cadr args)) + ;; ) + (#t (set! argb (car args)) (set! argf (cadr args)) (set! argi (caddr args)))) + `(,func *setting-control* (with-pp pp) ,s ,argb ,argf ,argi))) (defmacro add-setting! (s &rest args) - `(setting-control-func! add-setting ,s ,@args) - ) + `(setting-control-func! add-setting ,s ,@args)) + (defmacro set-setting! (s &rest args) - `(setting-control-func! set-setting ,s ,@args) - ) + `(setting-control-func! set-setting ,s ,@args)) + (defmacro remove-setting! (s) - `(remove-setting *setting-control* (with-pp pp) ,s) - ) + `(remove-setting *setting-control* (with-pp pp) ,s)) ;; used for memory card time information (deftype scf-time (structure) - ((stat uint8) - (second uint8) - (minute uint8) - (hour uint8) - (week uint8) - (day uint8) - (month uint8) - (year uint8) - ) - ) + ((stat uint8) + (second uint8) + (minute uint8) + (hour uint8) + (week uint8) + (day uint8) + (month uint8) + (year uint8))) -(define-extern *setting-control* setting-control) \ No newline at end of file +(define-extern *setting-control* setting-control) diff --git a/goal_src/jak1/engine/game/settings.gc b/goal_src/jak1/engine/game/settings.gc index b0ed0e3af4..f68f209d8e 100644 --- a/goal_src/jak1/engine/game/settings.gc +++ b/goal_src/jak1/engine/game/settings.gc @@ -1,17 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ps2/pad.gc") (require "engine/gfx/ocean/ocean-h.gc") - -;; name: settings.gc -;; name in dgo: settings -;; dgos: GAME, ENGINE - (#when PC_PORT - (define *progress-flava* -1) - ) + (define *progress-flava* -1)) ;; DECOMP BEGINS @@ -19,229 +12,106 @@ "this goes through the list of desired setting changes in the engine/connection list and updates the setting-data" (let ((conn (the-as connection (-> arg0 alive-list-end))) - (s4-0 (-> arg0 alive-list-end prev0)) - ) + (s4-0 (-> arg0 alive-list-end prev0))) (while (!= (the-as connectable conn) (-> arg0 alive-list)) (case (-> conn param0) - (('border-mode) - (set! (-> this border-mode) (the-as symbol (-> conn param1))) - ) - (('allow-look-around) - (set! (-> this allow-look-around) (the-as symbol (-> conn param1))) - ) - (('ocean-off) - (set! (-> this ocean-off) (the-as symbol (-> conn param1))) - ) - (('music) - (set! (-> this music) (the-as symbol (-> conn param1))) - ) + (('border-mode) (set! (-> this border-mode) (the-as symbol (-> conn param1)))) + (('allow-look-around) (set! (-> this allow-look-around) (the-as symbol (-> conn param1)))) + (('ocean-off) (set! (-> this ocean-off) (the-as symbol (-> conn param1)))) + (('music) (set! (-> this music) (the-as symbol (-> conn param1)))) (('process-mask) (case (the-as object (-> conn param1)) - (('set) - (logior! (-> this process-mask) (the-as int (-> conn param3))) - ) - (('clear) - (logclear! (-> this process-mask) (the-as uint (-> conn param3))) - ) - (('abs) - (set! (-> this process-mask) (the-as process-mask (the-as int (-> conn param3)))) - ) - ) - ) + (('set) (logior! (-> this process-mask) (the-as int (-> conn param3)))) + (('clear) (logclear! (-> this process-mask) (the-as uint (-> conn param3)))) + (('abs) (set! (-> this process-mask) (the-as process-mask (the-as int (-> conn param3))))))) (('sfx-volume) (when (or (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask progress))) - (= (get-process conn) (ppointer->process *progress-process*)) - ) + (= (get-process conn) (ppointer->process *progress-process*))) (case (the-as symbol (-> conn param1)) - (('rel) - (set! (-> this sfx-volume) (* 0.01 (the-as float (-> conn param2)) (-> this sfx-volume))) - ) - (else - (set! (-> this sfx-volume) (the-as float (-> conn param2))) - ) - ) - ) - ) + (('rel) (set! (-> this sfx-volume) (* 0.01 (the-as float (-> conn param2)) (-> this sfx-volume)))) + (else (set! (-> this sfx-volume) (the-as float (-> conn param2))))))) (('music-volume) (case (the-as symbol (-> conn param1)) - (('rel) - (set! (-> this music-volume) (* 0.01 (the-as float (-> conn param2)) (-> this music-volume))) - ) - (else - (set! (-> this music-volume) (the-as float (-> conn param2))) - ) - ) - ) + (('rel) (set! (-> this music-volume) (* 0.01 (the-as float (-> conn param2)) (-> this music-volume)))) + (else (set! (-> this music-volume) (the-as float (-> conn param2)))))) (('ambient-volume) (case (the-as symbol (-> conn param1)) - (('rel) - (set! (-> this ambient-volume) (* 0.01 (the-as float (-> conn param2)) (-> this ambient-volume))) - ) - (else - (set! (-> this ambient-volume) (the-as float (-> conn param2))) - ) - ) - ) + (('rel) (set! (-> this ambient-volume) (* 0.01 (the-as float (-> conn param2)) (-> this ambient-volume)))) + (else (set! (-> this ambient-volume) (the-as float (-> conn param2)))))) (('dialog-volume) (case (the-as symbol (-> conn param1)) - (('rel) - (set! (-> this dialog-volume) (* 0.01 (the-as float (-> conn param2)) (-> this dialog-volume))) - ) - (else - (set! (-> this dialog-volume) (the-as float (-> conn param2))) - ) - ) - ) + (('rel) (set! (-> this dialog-volume) (* 0.01 (the-as float (-> conn param2)) (-> this dialog-volume)))) + (else (set! (-> this dialog-volume) (the-as float (-> conn param2)))))) (('sfx-volume-movie) (case (the-as symbol (-> conn param1)) - (('rel) - (set! (-> this sfx-volume-movie) (* 0.01 (the-as float (-> conn param2)) (-> this sfx-volume-movie))) - ) - (else - (set! (-> this sfx-volume-movie) (the-as float (-> conn param2))) - ) - ) - ) + (('rel) (set! (-> this sfx-volume-movie) (* 0.01 (the-as float (-> conn param2)) (-> this sfx-volume-movie)))) + (else (set! (-> this sfx-volume-movie) (the-as float (-> conn param2)))))) (('music-volume-movie) (case (the-as symbol (-> conn param1)) - (('rel) - (set! (-> this music-volume-movie) (* 0.01 (the-as float (-> conn param2)) (-> this music-volume-movie))) - ) - (else - (set! (-> this music-volume-movie) (the-as float (-> conn param2))) - ) - ) - ) + (('rel) (set! (-> this music-volume-movie) (* 0.01 (the-as float (-> conn param2)) (-> this music-volume-movie)))) + (else (set! (-> this music-volume-movie) (the-as float (-> conn param2)))))) (('ambient-volume-movie) (case (the-as symbol (-> conn param1)) - (('rel) - (set! (-> this ambient-volume-movie) (* 0.01 (the-as float (-> conn param2)) (-> this ambient-volume-movie))) - ) - (else - (set! (-> this ambient-volume-movie) (the-as float (-> conn param2))) - ) - ) - ) + (('rel) (set! (-> this ambient-volume-movie) (* 0.01 (the-as float (-> conn param2)) (-> this ambient-volume-movie)))) + (else (set! (-> this ambient-volume-movie) (the-as float (-> conn param2)))))) (('dialog-volume-hint) (case (the-as symbol (-> conn param1)) - (('rel) - (set! (-> this dialog-volume-hint) (* 0.01 (the-as float (-> conn param2)) (-> this dialog-volume-hint))) - ) - (else - (set! (-> this dialog-volume-hint) (the-as float (-> conn param2))) - ) - ) - ) + (('rel) (set! (-> this dialog-volume-hint) (* 0.01 (the-as float (-> conn param2)) (-> this dialog-volume-hint)))) + (else (set! (-> this dialog-volume-hint) (the-as float (-> conn param2)))))) (('sound-flava) (when (>= (the-as float (-> conn param2)) (-> this sound-flava-priority)) (set! (-> this sound-flava) (the-as uint (the-as int (-> conn param3)))) - (set! (-> this sound-flava-priority) (the-as float (-> conn param2))) - ) - ) - (('bg-r) - (set! (-> this bg-r) (the-as float (-> conn param2))) - ) - (('bg-g) - (set! (-> this bg-g) (the-as float (-> conn param2))) - ) - (('bg-b) - (set! (-> this bg-b) (the-as float (-> conn param2))) - ) - (('bg-a) - (set! (-> this bg-a) (the-as float (-> conn param2))) - ) - (('bg-a-speed) - (set! (-> this bg-a-speed) (the-as float (-> conn param2))) - ) - (('bg-a-force) - (set! (-> this bg-a-force) (the-as float (-> conn param2))) - ) - (('language) - (set! (-> this language) (the-as language-enum (the-as int (-> conn param3)))) - ) - (('vibration) - (set! (-> this vibration) (the-as symbol (-> conn param1))) - ) - (('auto-save) - (set! (-> this auto-save) (the-as symbol (-> conn param1))) - ) - (('allow-pause) - (set! (-> this allow-pause) (the-as symbol (-> conn param1))) - ) - (('allow-progress) - (set! (-> this allow-progress) (the-as symbol (-> conn param1))) - ) - (('play-hints) - (set! (-> this play-hints) (the-as symbol (-> conn param1))) - ) - (('movie) - (set! (-> this movie) (the-as (pointer progress) (-> conn param1))) - ) - (('talking) - (set! (-> this talking) (the-as (pointer progress) (-> conn param1))) - ) - (('spooling) - (set! (-> this spooling) (the-as (pointer progress) (-> conn param1))) - ) - (('hint) - (set! (-> this hint) (the-as (pointer process) (-> conn param1))) - ) - (('ambient) - (set! (-> this ambient) (the-as (pointer progress) (-> conn param1))) - ) + (set! (-> this sound-flava-priority) (the-as float (-> conn param2))))) + (('bg-r) (set! (-> this bg-r) (the-as float (-> conn param2)))) + (('bg-g) (set! (-> this bg-g) (the-as float (-> conn param2)))) + (('bg-b) (set! (-> this bg-b) (the-as float (-> conn param2)))) + (('bg-a) (set! (-> this bg-a) (the-as float (-> conn param2)))) + (('bg-a-speed) (set! (-> this bg-a-speed) (the-as float (-> conn param2)))) + (('bg-a-force) (set! (-> this bg-a-force) (the-as float (-> conn param2)))) + (('language) (set! (-> this language) (the-as language-enum (the-as int (-> conn param3))))) + (('vibration) (set! (-> this vibration) (the-as symbol (-> conn param1)))) + (('auto-save) (set! (-> this auto-save) (the-as symbol (-> conn param1)))) + (('allow-pause) (set! (-> this allow-pause) (the-as symbol (-> conn param1)))) + (('allow-progress) (set! (-> this allow-progress) (the-as symbol (-> conn param1)))) + (('play-hints) (set! (-> this play-hints) (the-as symbol (-> conn param1)))) + (('movie) (set! (-> this movie) (the-as (pointer progress) (-> conn param1)))) + (('talking) (set! (-> this talking) (the-as (pointer progress) (-> conn param1)))) + (('spooling) (set! (-> this spooling) (the-as (pointer progress) (-> conn param1)))) + (('hint) (set! (-> this hint) (the-as (pointer process) (-> conn param1)))) + (('ambient) (set! (-> this ambient) (the-as (pointer progress) (-> conn param1)))) (('common-page) (case (the-as object (-> conn param1)) - (('set) - (logior! (-> this common-page) (the-as int (-> conn param3))) - ) - (('clear) - (logclear! (-> this common-page) (the-as uint (-> conn param3))) - ) - ) - ) - ) + (('set) (logior! (-> this common-page) (the-as int (-> conn param3)))) + (('clear) (logclear! (-> this common-page) (the-as uint (-> conn param3))))))) (set! conn (the-as connection s4-0)) - (set! s4-0 (-> (the-as connectable conn) prev0)) - ) - ) - this - ) + (set! s4-0 (-> (the-as connectable conn) prev0)))) + this) (defmethod add-setting ((this setting-control) (arg0 process) (arg1 symbol) (arg2 object) (arg3 object) (arg4 object)) "add a setting for the process." (add-connection (-> this engine) arg0 arg1 arg2 arg3 arg4) 0 - (none) - ) + (none)) (defmethod set-setting ((this setting-control) (arg0 process) (arg1 symbol) (arg2 object) (arg3 object) (arg4 object)) "(re-)sets a setting for the process." (remove-setting this arg0 arg1) (add-connection (-> this engine) arg0 arg1 arg2 arg3 arg4) 0 - (none) - ) + (none)) (defmethod remove-setting ((this setting-control) (arg0 process) (arg1 symbol)) "remove a setting from the specified process. if arg1 = #t then remove ALL settings for that process" (when arg0 (let ((s5-0 (-> this engine)) - (s4-0 (-> arg0 connection-list next1)) - ) + (s4-0 (-> arg0 connection-list next1))) (while s4-0 - (if (and (belongs-to-engine? (the-as connection s4-0) s5-0) - (or (= arg1 #t) (= arg1 (-> (the-as connection s4-0) param0))) - ) - (move-to-dead (the-as connection s4-0)) - ) - (set! s4-0 (-> s4-0 next1)) - ) - ) - ) + (if (and (belongs-to-engine? (the-as connection s4-0) s5-0) (or (= arg1 #t) (= arg1 (-> (the-as connection s4-0) param0)))) + (move-to-dead (the-as connection s4-0))) + (set! s4-0 (-> s4-0 next1))))) 0 - (none) - ) + (none)) (defmethod apply-settings ((this setting-control)) "Update the current settings. This only updates settings that are 'safe' to do multiple times per frame." @@ -250,9 +120,7 @@ ;; set the settings to default (mem-copy! (the-as pointer s5-0) (the-as pointer (-> this default)) 196) ;; hack - (set! (-> s5-0 ambient-volume) - (* (* 0.01 (-> this default ambient-volume)) (-> this default sfx-volume)) - ) + (set! (-> s5-0 ambient-volume) (* (* 0.01 (-> this default ambient-volume)) (-> this default sfx-volume))) ;; apply requesting changes (update-from-engine s5-0 (-> this engine)) ;; copy those settings to current. @@ -274,18 +142,14 @@ (set! (-> gp-0 music-volume-movie) (-> s5-0 music-volume-movie)) (set! (-> gp-0 sfx-volume-movie) (-> s5-0 sfx-volume-movie)) (set! (-> gp-0 dialog-volume-hint) (-> s5-0 dialog-volume-hint)) - (set! (-> gp-0 process-mask) (-> s5-0 process-mask)) - ) + (set! (-> gp-0 process-mask) (-> s5-0 process-mask))) (set! (-> *kernel-context* prevent-from-run) (-> gp-0 process-mask)) - gp-0 - ) - ) + gp-0)) (defmethod update ((this setting-control)) "Do a per-frame update of all settings" ;; compute all settings (apply-settings this) - ;; now handle the special ones. (let ((gp-0 (-> this current))) (let ((s5-1 (-> this target))) @@ -293,136 +157,90 @@ (when *sound-player-enable* (when (!= (-> gp-0 sfx-volume) (-> s5-1 sfx-volume)) (seek! (-> gp-0 sfx-volume) (-> s5-1 sfx-volume) (* 100.0 (seconds-per-frame))) - (sound-set-volume (sound-group sfx) (-> gp-0 sfx-volume)) - ) + (sound-set-volume (sound-group sfx) (-> gp-0 sfx-volume))) (when (!= (-> gp-0 music-volume) (-> s5-1 music-volume)) (seek! (-> gp-0 music-volume) (-> s5-1 music-volume) (* 100.0 (seconds-per-frame))) - (sound-set-volume (sound-group music) (-> gp-0 music-volume)) - ) + (sound-set-volume (sound-group music) (-> gp-0 music-volume))) (when (!= (-> gp-0 dialog-volume) (-> s5-1 dialog-volume)) (seek! (-> gp-0 dialog-volume) (-> s5-1 dialog-volume) (* 100.0 (seconds-per-frame))) - (sound-set-volume (sound-group dialog) (-> gp-0 dialog-volume)) - ) + (sound-set-volume (sound-group dialog) (-> gp-0 dialog-volume))) (when (!= (-> gp-0 ambient-volume) (-> s5-1 ambient-volume)) (seek! (-> gp-0 ambient-volume) (-> s5-1 ambient-volume) (* 100.0 (seconds-per-frame))) - (sound-set-volume (sound-group ambient) (-> gp-0 ambient-volume)) - ) - ) + (sound-set-volume (sound-group ambient) (-> gp-0 ambient-volume)))) ;; send language change to the IOP. (when (!= (-> gp-0 language) (-> s5-1 language)) ;; og:preserve-this pc port added this (#when PC_PORT (cond - ((not *jak1-full-game*) - ) + ((not *jak1-full-game*)) ((= (language-enum japanese) (-> s5-1 language)) ;; old lang wasnt japanese (sound-bank-unload (static-sound-name "common")) - (sound-bank-load (static-sound-name "commonj")) - ) + (sound-bank-load (static-sound-name "commonj"))) ((= (language-enum japanese) (-> gp-0 language)) ;; old lang was japanese (sound-bank-unload (static-sound-name "commonj")) - (sound-bank-load (static-sound-name "common")) - ) - ) - ) + (sound-bank-load (static-sound-name "common"))))) (set! (-> gp-0 language) (-> s5-1 language)) - (set-language (-> gp-0 language)) - ) - + (set-language (-> gp-0 language))) ;; try to load music (when (and (!= (-> s5-1 music) (-> gp-0 music)) - (and (< 0.0 (-> *setting-control* current music-volume)) (zero? (rpc-busy? 1)) *sound-bank-1* *sound-bank-2*) - ) + (and (< 0.0 (-> *setting-control* current music-volume)) (zero? (rpc-busy? 1)) *sound-bank-1* *sound-bank-2*)) (cond ((-> s5-1 music) (format 0 "Load music ~A~%" (-> s5-1 music)) - (sound-music-load (string->sound-name (symbol->string (-> s5-1 music)))) - ) - (else - (format 0 "Unload music~%") - (sound-music-unload) - ) - ) - (set! (-> gp-0 music) (-> s5-1 music)) - ) - + (sound-music-load (string->sound-name (symbol->string (-> s5-1 music))))) + (else (format 0 "Unload music~%") (sound-music-unload))) + (set! (-> gp-0 music) (-> s5-1 music))) ;; set sound flava (set! (-> s5-1 sound-flava) (the-as uint (flava-lookup (-> gp-0 music) (the-as music-flava (-> s5-1 sound-flava))))) (set! (-> gp-0 sound-flava) (-> s5-1 sound-flava)) (if *sound-player-enable* - (#if PC_PORT - (sound-set-flava (if (>= *progress-flava* 0) (the uint *progress-flava*) (-> gp-0 sound-flava))) - (sound-set-flava (-> gp-0 sound-flava)) - ) - ) - + (#if PC_PORT + (sound-set-flava (if (>= *progress-flava* 0) (the uint *progress-flava*) (-> gp-0 sound-flava))) + (sound-set-flava (-> gp-0 sound-flava)))) ;; update display settings (when (!= (-> gp-0 aspect-ratio) (-> s5-1 aspect-ratio)) (set! (-> gp-0 aspect-ratio) (-> s5-1 aspect-ratio)) - (set-aspect-ratio (-> gp-0 aspect-ratio)) - ) + (set-aspect-ratio (-> gp-0 aspect-ratio))) (when (!= (-> gp-0 video-mode) (-> s5-1 video-mode)) (set! (-> gp-0 video-mode) (-> s5-1 video-mode)) - (set-video-mode (-> gp-0 video-mode)) - ) + (set-video-mode (-> gp-0 video-mode))) (when (!= (-> gp-0 screenx) (-> s5-1 screenx)) (set! (-> gp-0 screenx) (-> s5-1 screenx)) (set! (-> *video-parms* display-dx) (/ (-> s5-1 screenx) 2)) - (set! (-> *video-parms* set-video-mode) #t) - ) + (set! (-> *video-parms* set-video-mode) #t)) (when (!= (-> gp-0 screeny) (-> s5-1 screeny)) (set! (-> gp-0 screeny) (-> s5-1 screeny)) (set! (-> *video-parms* display-dy) (* (/ (-> s5-1 screeny) 2) 2)) - (set! (-> *video-parms* set-video-mode) #t) - ) - + (set! (-> *video-parms* set-video-mode) #t)) ;; update display bg color (set! (-> gp-0 bg-a-speed) (-> s5-1 bg-a-speed)) (set! (-> gp-0 bg-a-force) (-> s5-1 bg-a-force)) (set! (-> gp-0 bg-r) (-> s5-1 bg-r)) (set! (-> gp-0 bg-g) (-> s5-1 bg-g)) (set! (-> gp-0 bg-b) (-> s5-1 bg-b)) - (seek! (-> gp-0 bg-a) (-> s5-1 bg-a) (* (-> s5-1 bg-a-speed) (seconds-per-frame))) - ) + (seek! (-> gp-0 bg-a) (-> s5-1 bg-a) (* (-> s5-1 bg-a-speed) (seconds-per-frame)))) (let ((v1-60 (-> *display* frames (-> *display* on-screen) display)) - (f0-39 (-> gp-0 bg-a)) - ) - (if (!= (-> gp-0 bg-a-force) 0.0) - (set! f0-39 (-> gp-0 bg-a-force)) - ) + (f0-39 (-> gp-0 bg-a))) + (if (!= (-> gp-0 bg-a-force) 0.0) (set! f0-39 (-> gp-0 bg-a-force))) (set! (-> v1-60 bgcolor r) (the int (* 255.0 (-> gp-0 bg-r)))) (set! (-> v1-60 bgcolor g) (the int (* 255.0 (-> gp-0 bg-g)))) (set! (-> v1-60 bgcolor b) (the int (* 255.0 (-> gp-0 bg-b)))) - (set! (-> v1-60 pmode alp) (the int (* 255.0 (- 1.0 f0-39)))) - ) - + (set! (-> v1-60 pmode alp) (the int (* 255.0 (- 1.0 f0-39))))) ;; ?? (set! (-> *level* border?) (-> gp-0 border-mode)) ;; common pool texture page mask (set! (-> *texture-pool* common-page-mask) (-> gp-0 common-page)) (set! (-> *cpad-list* cpads 0 buzz) (-> gp-0 vibration)) - (case (-> gp-0 ocean-off) - ((#t) - (set! *ocean-off* #t) - ) - (('mid) - (set! *ocean-mid-off* #t) - ) - (('near) - (set! *ocean-near-off* #t) - ) - ) - gp-0 - ) - ) - + ((#t) (set! *ocean-off* #t)) + (('mid) (set! *ocean-mid-off* #t)) + (('near) (set! *ocean-near-off* #t))) + gp-0)) (when (zero? *setting-control*) (set! *setting-control* (new 'global 'setting-control 32)) (let ((gp-0 (-> *setting-control* default)) - (s5-0 (-> *setting-control* current)) - ) + (s5-0 (-> *setting-control* current))) (let ((f0-2 (* 0.01 (the float (scf-get-volume))))) (set! (-> gp-0 ocean-off) #f) (set! (-> gp-0 allow-look-around) #t) @@ -434,8 +252,7 @@ (set! (-> gp-0 sfx-volume-movie) (the float (* 5 (the int (+ 0.5 (* 11.0 f0-2)))))) (set! (-> gp-0 music-volume-movie) (the float (* 5 (the int (+ 0.5 (* 13.0 f0-2)))))) (set! (-> gp-0 ambient-volume-movie) (the float (* 5 (the int (+ 0.5 (* 11.0 f0-2)))))) - (set! (-> gp-0 dialog-volume-hint) (the float (* 5 (the int (+ 0.5 (* 16.0 f0-2)))))) - ) + (set! (-> gp-0 dialog-volume-hint) (the float (* 5 (the int (+ 0.5 (* 16.0 f0-2))))))) (set! (-> gp-0 language) (scf-get-language)) (set! (-> gp-0 process-mask) (process-mask execute sleep)) (set! (-> gp-0 screenx) 0) @@ -455,17 +272,9 @@ (set! (-> gp-0 allow-pause) #t) (set! (-> gp-0 allow-progress) #t) (case (scf-get-aspect) - ((2) - (set! (-> gp-0 aspect-ratio) 'aspect16x9) - ) - (else - (set! (-> gp-0 aspect-ratio) 'aspect4x3) - ) - ) - (if (zero? *boot-video-mode*) - (set! (-> gp-0 video-mode) 'ntsc) - (set! (-> gp-0 video-mode) 'pal) - ) + ((2) (set! (-> gp-0 aspect-ratio) 'aspect16x9)) + (else (set! (-> gp-0 aspect-ratio) 'aspect4x3))) + (if (zero? *boot-video-mode*) (set! (-> gp-0 video-mode) 'ntsc) (set! (-> gp-0 video-mode) 'pal)) (set! (-> s5-0 sfx-volume) (+ -1.0 (-> gp-0 sfx-volume))) (set! (-> s5-0 music-volume) (+ -1.0 (-> gp-0 music-volume))) (set! (-> s5-0 dialog-volume) (+ -1.0 (-> gp-0 dialog-volume))) @@ -482,7 +291,4 @@ (set! (-> s5-0 allow-pause) (-> gp-0 allow-pause)) (set! (-> s5-0 allow-progress) (-> gp-0 allow-progress)) (set! (-> s5-0 allow-look-around) (-> gp-0 allow-look-around)) - (set! (-> s5-0 ocean-off) (-> gp-0 ocean-off)) - ) - ) - + (set! (-> s5-0 ocean-off) (-> gp-0 ocean-off)))) diff --git a/goal_src/jak1/engine/game/task/game-task-h.gc b/goal_src/jak1/engine/game/task/game-task-h.gc index 17b2955a3d..361bc7321c 100644 --- a/goal_src/jak1/engine/game/task/game-task-h.gc +++ b/goal_src/jak1/engine/game/task/game-task-h.gc @@ -2,11 +2,6 @@ (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - -;; name: game-task-h.gc -;; name in dgo: game-task-h -;; dgos: GAME, ENGINE - ;; this file has no code. ;; List of each task in the game. @@ -129,5 +124,4 @@ (plunger-lurker-hit 113) (leaving-misty 114) (assistant-village3 115) - (max 116) - ) + (max 116)) diff --git a/goal_src/jak1/engine/game/task/hint-control-h.gc b/goal_src/jak1/engine/game/task/hint-control-h.gc index b332f94938..c6566d5a44 100644 --- a/goal_src/jak1/engine/game/task/hint-control-h.gc +++ b/goal_src/jak1/engine/game/task/hint-control-h.gc @@ -1,19 +1,16 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: hint-control-h.gc -;; name in dgo: hint-control-h -;; dgos: GAME, ENGINE - ;; The "hint" system is used to give the player hints if they appear to be stuck ;; Hints can belong to either a level or a task. The hint-control types have ;; parameters about how often the hints should come, and what they are tied to. (define-extern reset-all-hint-controls (function none)) + (define-extern kill-current-level-hint (function pair pair symbol none)) + (define-extern level-hint-spawn (function text-id string entity process-tree game-task none)) (defenum hint-command @@ -30,33 +27,25 @@ (close-need-reminder-a 10) (close-need-reward-speech 11) (close-need-resolution 12) - (if-at-most-need-reminder-a 13) - ) + (if-at-most-need-reminder-a 13)) ;; DECOMP BEGINS ;; information about an in-level hint. These aren't tied to a specific object or task. (deftype level-hint-control (structure) - ((delay-before-playing time-frame) - (id text-id) - (num-attempts-before-playing int8) - (num-success-before-killing int8) - (num-attempts int8) - (num-success int8) - (start-time time-frame) - (last-time-called time-frame) - ) - ) + ((delay-before-playing time-frame) + (id text-id) + (num-attempts-before-playing int8) + (num-success-before-killing int8) + (num-attempts int8) + (num-success int8) + (start-time time-frame) + (last-time-called time-frame))) ;; a "task hint" is explicitly tied to an in-game task. (deftype task-hint-control (structure) - ((task game-task) - (delay time-frame) - ) - ) - + ((task game-task) + (delay time-frame))) (deftype task-hint-control-group (structure) - ((tasks (array task-hint-control)) - ) - ) + ((tasks (array task-hint-control)))) diff --git a/goal_src/jak1/engine/game/task/hint-control.gc b/goal_src/jak1/engine/game/task/hint-control.gc index bf2bf0009f..ce36da82f3 100644 --- a/goal_src/jak1/engine/game/task/hint-control.gc +++ b/goal_src/jak1/engine/game/task/hint-control.gc @@ -1,238 +1,269 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/task/game-task-h.gc") (require "engine/game/game-info.gc") (require "engine/draw/drawable-ambient-h.gc") (require "engine/ui/text-h.gc") -;; name: hint-control.gc -;; name in dgo: hint-control -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(set! (-> *game-info* hint-control) (new 'static 'boxed-array :type level-hint-control - (new 'static 'level-hint-control - :id (text-id training-ironcrate) - :num-attempts-before-playing 1 - :num-success-before-killing 3 - ) - (new 'static 'level-hint-control - :id (text-id training-eco-reminder) - :num-attempts-before-playing 3 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :id (text-id sidekick-hint-crate-iron) - :num-attempts-before-playing 3 - :num-success-before-killing 3 - ) - (new 'static 'level-hint-control - :id (text-id sidekick-hint-crate-steel) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :id (text-id sidekick-hint-orb-cache-top) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :id (text-id beach-grottopole-increment) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 3) - :id (text-id sidekick-hint-ecorocks) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 5) - :id (text-id sidekick-hint-reflector-mirror) - :num-attempts-before-playing 1 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 3) - :id (text-id sidekick-hint-precurbridge) - :num-attempts-before-playing 1 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :id (text-id misty-teetertotter) - :num-attempts-before-playing 3 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 3) - :id (text-id misty-bone-bridge-hint) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 5) - :id (text-id rolling-plants-hint-eco-green) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 15) - :id (text-id sunken-bully-dive-hint) - :num-attempts-before-playing 3 - :num-success-before-killing 2 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 60) - :id (text-id sunken-qbert-plat-hint) - :num-attempts-before-playing 3 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :id (text-id sunken-blue-eco-charger-all-hint) - :num-attempts-before-playing 3 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :id (text-id sunken-blue-eco-charger-hint) - :num-attempts-before-playing 3 - :num-success-before-killing 2 - ) - (new 'static 'level-hint-control - :id (text-id swamp-tetherrock-eco-yellow-hint) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 30) - :id (text-id sunken-double-lurker-hint) - :num-attempts-before-playing 3 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :id (text-id sunken-hotpipes) - :num-attempts-before-playing 3 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :id (text-id snow-ram-boss-red-eco-hint) - :num-attempts-before-playing 5 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 3) - :id (text-id darkcave-light-hint) - :num-attempts-before-playing 1 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :id (text-id cave-gnawers-look-around) - :num-attempts-before-playing 4 - :num-success-before-killing -1 - ) - (new 'static 'level-hint-control - :id (text-id lavatube-balls) - :num-attempts-before-playing 1 - :num-success-before-killing 2 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 5) - :id (text-id citadel-generator) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - (new 'static 'level-hint-control - :delay-before-playing (seconds 5) - :id (text-id citadel-generator-no-mushroom) - :num-attempts-before-playing 1 - :num-success-before-killing 1 - ) - ) - ) +(set! (-> *game-info* hint-control) + (new 'static + 'boxed-array + :type + level-hint-control + (new 'static + 'level-hint-control + :id (text-id training-ironcrate) + :num-attempts-before-playing 1 + :num-success-before-killing 3) + (new 'static + 'level-hint-control + :id (text-id training-eco-reminder) + :num-attempts-before-playing 3 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :id (text-id sidekick-hint-crate-iron) + :num-attempts-before-playing 3 + :num-success-before-killing 3) + (new 'static + 'level-hint-control + :id (text-id sidekick-hint-crate-steel) + :num-attempts-before-playing 1 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :id (text-id sidekick-hint-orb-cache-top) + :num-attempts-before-playing 1 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :id (text-id beach-grottopole-increment) + :num-attempts-before-playing 1 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 3) + :id (text-id sidekick-hint-ecorocks) + :num-attempts-before-playing 1 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 5) + :id (text-id sidekick-hint-reflector-mirror) + :num-attempts-before-playing 1 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 3) + :id (text-id sidekick-hint-precurbridge) + :num-attempts-before-playing 1 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :id (text-id misty-teetertotter) + :num-attempts-before-playing 3 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 3) + :id (text-id misty-bone-bridge-hint) + :num-attempts-before-playing 1 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 5) + :id (text-id rolling-plants-hint-eco-green) + :num-attempts-before-playing 1 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 15) + :id (text-id sunken-bully-dive-hint) + :num-attempts-before-playing 3 + :num-success-before-killing 2) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 60) + :id (text-id sunken-qbert-plat-hint) + :num-attempts-before-playing 3 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :id (text-id sunken-blue-eco-charger-all-hint) + :num-attempts-before-playing 3 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :id (text-id sunken-blue-eco-charger-hint) + :num-attempts-before-playing 3 + :num-success-before-killing 2) + (new 'static + 'level-hint-control + :id (text-id swamp-tetherrock-eco-yellow-hint) + :num-attempts-before-playing 1 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 30) + :id (text-id sunken-double-lurker-hint) + :num-attempts-before-playing 3 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :id (text-id sunken-hotpipes) + :num-attempts-before-playing 3 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :id (text-id snow-ram-boss-red-eco-hint) + :num-attempts-before-playing 5 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 3) + :id (text-id darkcave-light-hint) + :num-attempts-before-playing 1 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :id (text-id cave-gnawers-look-around) + :num-attempts-before-playing 4 + :num-success-before-killing -1) + (new 'static + 'level-hint-control + :id (text-id lavatube-balls) + :num-attempts-before-playing 1 + :num-success-before-killing 2) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 5) + :id (text-id citadel-generator) + :num-attempts-before-playing 1 + :num-success-before-killing 1) + (new 'static + 'level-hint-control + :delay-before-playing (seconds 5) + :id (text-id citadel-generator-no-mushroom) + :num-attempts-before-playing 1 + :num-success-before-killing 1))) (set! (-> *game-info* task-hint-control) - (new 'static 'boxed-array :type task-hint-control-group - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task training-gimmie) :delay (seconds 600)) - (new 'static 'task-hint-control :task (game-task training-door) :delay (seconds 1200)) - (new 'static 'task-hint-control :task (game-task training-climb) :delay (seconds 1800)) - ) - ) - (new 'static 'task-hint-control-group) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task beach-gimmie) :delay (seconds 900)) - (new 'static 'task-hint-control :task (game-task beach-sentinel) :delay (seconds 1800)) - (new 'static 'task-hint-control :task (game-task beach-cannon) :delay (seconds 2700)) - ) - ) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task jungle-plant) :delay (seconds 1200)) - (new 'static 'task-hint-control :task (game-task jungle-canyon-end) :delay (seconds 2400)) - ) - ) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task misty-boat) :delay (seconds 1200)) - (new 'static 'task-hint-control :task (game-task misty-warehouse) :delay (seconds 1800)) - (new 'static 'task-hint-control :task (game-task misty-bike-jump) :delay (seconds 2400)) - (new 'static 'task-hint-control :task (game-task misty-eco-challenge) :delay (seconds 3000)) - ) - ) - (new 'static 'task-hint-control-group) - (new 'static 'task-hint-control-group) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task sunken-spinning-room) :delay (seconds 1200)) - (new 'static 'task-hint-control :task (game-task sunken-sharks) :delay (seconds 1800)) - (new 'static 'task-hint-control :task (game-task sunken-slide) :delay (seconds 2400)) - ) - ) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task swamp-battle) :delay (seconds 2400)) - ) - ) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task rolling-lake) :delay (seconds 2400)) - ) - ) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task ogre-secret) :delay (seconds 3600)) - ) - ) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task village3-extra1) :delay (seconds 3600)) - ) - ) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task snow-bumpers) :delay (seconds 1200)) - (new 'static 'task-hint-control :task (game-task snow-cage) :delay (seconds 1800)) - (new 'static 'task-hint-control :task (game-task snow-ball) :delay (seconds 2400)) - (new 'static 'task-hint-control :task (game-task snow-bunnies) :delay (seconds 3000)) - ) - ) - (new 'static 'task-hint-control-group - :tasks (new 'static 'boxed-array :type task-hint-control - (new 'static 'task-hint-control :task (game-task cave-dark-climb) :delay (seconds 1200)) - (new 'static 'task-hint-control :task (game-task cave-robot-climb) :delay (seconds 1800)) - (new 'static 'task-hint-control :task (game-task cave-swing-poles) :delay (seconds 2400)) - (new 'static 'task-hint-control :task (game-task cave-platforms) :delay (seconds 3000)) - ) - ) - (new 'static 'task-hint-control-group) - (new 'static 'task-hint-control-group) - ) - ) + (new 'static + 'boxed-array + :type + task-hint-control-group + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task training-gimmie) :delay (seconds 600)) + (new 'static 'task-hint-control :task (game-task training-door) :delay (seconds 1200)) + (new 'static 'task-hint-control :task (game-task training-climb) :delay (seconds 1800)))) + (new 'static 'task-hint-control-group) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task beach-gimmie) :delay (seconds 900)) + (new 'static 'task-hint-control :task (game-task beach-sentinel) :delay (seconds 1800)) + (new 'static 'task-hint-control :task (game-task beach-cannon) :delay (seconds 2700)))) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task jungle-plant) :delay (seconds 1200)) + (new 'static 'task-hint-control :task (game-task jungle-canyon-end) :delay (seconds 2400)))) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task misty-boat) :delay (seconds 1200)) + (new 'static 'task-hint-control :task (game-task misty-warehouse) :delay (seconds 1800)) + (new 'static 'task-hint-control :task (game-task misty-bike-jump) :delay (seconds 2400)) + (new 'static 'task-hint-control :task (game-task misty-eco-challenge) :delay (seconds 3000)))) + (new 'static 'task-hint-control-group) + (new 'static 'task-hint-control-group) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task sunken-spinning-room) :delay (seconds 1200)) + (new 'static 'task-hint-control :task (game-task sunken-sharks) :delay (seconds 1800)) + (new 'static 'task-hint-control :task (game-task sunken-slide) :delay (seconds 2400)))) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task swamp-battle) :delay (seconds 2400)))) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task rolling-lake) :delay (seconds 2400)))) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task ogre-secret) :delay (seconds 3600)))) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task village3-extra1) :delay (seconds 3600)))) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task snow-bumpers) :delay (seconds 1200)) + (new 'static 'task-hint-control :task (game-task snow-cage) :delay (seconds 1800)) + (new 'static 'task-hint-control :task (game-task snow-ball) :delay (seconds 2400)) + (new 'static 'task-hint-control :task (game-task snow-bunnies) :delay (seconds 3000)))) + (new 'static + 'task-hint-control-group + :tasks + (new 'static + 'boxed-array + :type + task-hint-control + (new 'static 'task-hint-control :task (game-task cave-dark-climb) :delay (seconds 1200)) + (new 'static 'task-hint-control :task (game-task cave-robot-climb) :delay (seconds 1800)) + (new 'static 'task-hint-control :task (game-task cave-swing-poles) :delay (seconds 2400)) + (new 'static 'task-hint-control :task (game-task cave-platforms) :delay (seconds 3000)))) + (new 'static 'task-hint-control-group) + (new 'static 'task-hint-control-group))) (defun find-hint-control-index ((arg0 text-id)) (let ((gp-0 -1)) @@ -240,121 +271,74 @@ (dotimes (a0-2 v1-2) (when (= (-> *game-info* hint-control a0-2 id) arg0) (set! gp-0 a0-2) - (set! a0-2 v1-2) - ) - ) - ) - gp-0 - ) - ) + (set! a0-2 v1-2)))) + gp-0)) (defun start-hint-timer ((arg0 text-id)) (let ((v1-0 (find-hint-control-index arg0))) (when (and (>= v1-0 0) (zero? (-> *game-info* hint-control v1-0 start-time)) - (!= (-> *game-info* hint-control v1-0 num-attempts-before-playing) 1) - ) + (!= (-> *game-info* hint-control v1-0 num-attempts-before-playing) 1)) (set-time! (-> *game-info* hint-control v1-0 start-time)) - 0 - ) - ) + 0)) 0 - (none) - ) + (none)) (defun increment-success-for-hint ((arg0 text-id)) (let ((gp-0 (find-hint-control-index arg0))) (when (>= gp-0 0) (seekl! (-> *game-info* hint-control gp-0 num-success) 127 1) - 0 - ) - ) + 0)) 0 - (none) - ) + (none)) ;; WARN: disable def twice: 139. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defun can-hint-be-played? ((arg0 text-id) (arg1 entity) (arg2 string)) (let ((v1-0 (not (str-is-playing?)))) - (if (and v1-0 (nonzero? arg0)) - (set! v1-0 (not (seen-text? *game-info* arg0))) - ) + (if (and v1-0 (nonzero? arg0)) (set! v1-0 (not (seen-text? *game-info* arg0)))) (when v1-0 (when *hint-semaphore* (set! v1-0 (appeared-for-long-enough? (the-as level-hint (ppointer->process *hint-semaphore*)))) - 0 - ) + 0) (when (and v1-0 (not (time-elapsed? (-> *game-info* hint-play-time) (seconds 0.1)))) (set! v1-0 #f) - 0 - ) - (set! v1-0 (and v1-0 - (not (-> *setting-control* current talking)) - (not (-> *setting-control* current spooling)) - (not (-> *setting-control* current hint)) - (not (-> *setting-control* current ambient)) - (>= (current-time) (-> *game-info* blackout-time)) - ) - ) - 0 - ) + 0) + (set! v1-0 + (and v1-0 + (not (-> *setting-control* current talking)) + (not (-> *setting-control* current spooling)) + (not (-> *setting-control* current hint)) + (not (-> *setting-control* current ambient)) + (>= (current-time) (-> *game-info* blackout-time)))) + 0) (cond (v1-0 - (let ((v1-16 (find-hint-control-index arg0))) - (cond - ((< v1-16 0) - #t - ) - (else - (let ((gp-1 (-> *game-info* hint-control v1-16)) - (a0-24 (- (current-time) (-> *game-info* hint-control v1-16 last-time-called))) - (v1-21 #t) - ) - (if (and (= (-> gp-1 num-attempts-before-playing) 1) (< a0-24 (seconds 0.1))) - (+! (-> gp-1 start-time) a0-24) - ) - (cond - ((and (!= (-> gp-1 num-attempts-before-playing) 1) - (nonzero? (-> gp-1 last-time-called)) - (not (time-elapsed? (-> gp-1 last-time-called) (seconds 0.5))) - ) - (set-time! (-> gp-1 last-time-called)) - #f - ) - (else - (set-time! (-> gp-1 last-time-called)) - (when (nonzero? (-> gp-1 delay-before-playing)) - (if (< (-> gp-1 start-time) (-> gp-1 delay-before-playing)) - (set! v1-21 #f) - ) - 0 - ) - (cond - (v1-21 - (seekl! (-> gp-1 num-attempts) 127 1) - (and (>= (-> gp-1 num-attempts) (-> gp-1 num-attempts-before-playing)) - (or (= (-> gp-1 num-success-before-killing) -1) - (< (-> gp-1 num-success) (-> gp-1 num-success-before-killing)) - ) - ) - ) - (else - #f - ) - ) - ) - ) - ) - ) - ) - ) - ) - (else - #f - ) - ) - ) - ) + (let ((v1-16 (find-hint-control-index arg0))) + (cond + ((< v1-16 0) #t) + (else + (let ((gp-1 (-> *game-info* hint-control v1-16)) + (a0-24 (- (current-time) (-> *game-info* hint-control v1-16 last-time-called))) + (v1-21 #t)) + (if (and (= (-> gp-1 num-attempts-before-playing) 1) (< a0-24 (seconds 0.1))) (+! (-> gp-1 start-time) a0-24)) + (cond + ((and (!= (-> gp-1 num-attempts-before-playing) 1) + (nonzero? (-> gp-1 last-time-called)) + (not (time-elapsed? (-> gp-1 last-time-called) (seconds 0.5)))) + (set-time! (-> gp-1 last-time-called)) + #f) + (else + (set-time! (-> gp-1 last-time-called)) + (when (nonzero? (-> gp-1 delay-before-playing)) + (if (< (-> gp-1 start-time) (-> gp-1 delay-before-playing)) (set! v1-21 #f)) + 0) + (cond + (v1-21 + (seekl! (-> gp-1 num-attempts) 127 1) + (and (>= (-> gp-1 num-attempts) (-> gp-1 num-attempts-before-playing)) + (or (= (-> gp-1 num-success-before-killing) -1) (< (-> gp-1 num-success) (-> gp-1 num-success-before-killing))))) + (else #f))))))))) + (else #f)))) (defun reset-all-hint-controls () (let ((v1-2 (length (-> *game-info* hint-control)))) @@ -363,20 +347,15 @@ (set! (-> a1-2 start-time) 0) (set! (-> a1-2 last-time-called) 0) (set! (-> a1-2 num-attempts) 0) - (set! (-> a1-2 num-success) 0) - ) - 0 - ) - ) + (set! (-> a1-2 num-success) 0)) + 0)) 0 - (none) - ) + (none)) (defun update-task-hints () (when *target* (let ((a0-0 (+ (-> *target* current-level info index) -1)) - (v1-7 (-> *game-info* task-hint-control)) - ) + (v1-7 (-> *game-info* task-hint-control))) (when (and (>= a0-0 0) (< a0-0 (-> *level-task-data-remap* length))) (let ((a0-3 (-> *level-task-data-remap* a0-0))) (when (< a0-3 (-> v1-7 length)) @@ -387,19 +366,6 @@ (case (get-task-status (-> gp-0 s4-0 task)) (((task-status need-hint) (task-status unknown)) (if (< (the-as uint (-> gp-0 s4-0 delay)) (the-as uint s5-0)) - (close-specific-task! (-> gp-0 s4-0 task) (task-status need-hint)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (close-specific-task! (-> gp-0 s4-0 task) (task-status need-hint)))))))))))))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/game/task/task-control-h.gc b/goal_src/jak1/engine/game/task/task-control-h.gc index 1f2fdd73d7..505e7e2e3f 100644 --- a/goal_src/jak1/engine/game/task/task-control-h.gc +++ b/goal_src/jak1/engine/game/task/task-control-h.gc @@ -1,15 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/game-h.gc") -;; name: task-control-h.gc -;; name in dgo: task-control-h -;; dgos: GAME, ENGINE - ;; for process-taskable (declare-type process-taskable process-drawable) + (define-extern othercam-init-by-other (function process-taskable symbol symbol symbol none :behavior othercam)) ;; There are a fixed number of game tasks. Most are just getting a power cell, @@ -36,8 +32,7 @@ (need-reminder-a 4) (need-reminder 5) (need-reward-speech 6) - (need-resolution 7) - ) + (need-resolution 7)) ;; our names (defenum task-flags @@ -45,135 +40,122 @@ :bitfield #t (closed 0) (has-entity 1) - (closed-by-default 2) - ) + (closed-by-default 2)) (declare-type task-control basic) ;; DECOMP BEGINS (deftype task-cstage (structure) - ((game-task game-task) - (status task-status) - (flags task-flags) - (condition (function task-control symbol)) - ) + ((game-task game-task) + (status task-status) + (flags task-flags) + (condition (function task-control symbol))) (:methods - (get-task (_type_) game-task) - (get-status (_type_) task-status) - (task-available? (_type_ task-control) symbol) - (closed? (_type_) symbol) - (closed-by-default? (_type_) symbol) - (close-task! (_type_) int) - (open-task! (_type_) int) - ) - ) - + (get-task (_type_) game-task) + (get-status (_type_) task-status) + (task-available? (_type_ task-control) symbol) + (closed? (_type_) symbol) + (closed-by-default? (_type_) symbol) + (close-task! (_type_) int) + (open-task! (_type_) int))) (deftype task-control (basic) - ((current-stage int16) - (stage (array task-cstage)) - ) + ((current-stage int16) + (stage (array task-cstage))) (:methods - (current-task (_type_) game-task) - (current-status (_type_) task-status) - (close-current! (_type_) game-task) - (close-status! (_type_ task-status) game-task) - (first-any (_type_ symbol) game-task) - (reset! (_type_ symbol symbol) int) - (closed? (_type_ game-task task-status) symbol) - (get-reminder (_type_ int) int) - (save-reminder (_type_ int int) int) - (exists? (_type_ game-task task-status) symbol) - ) - ) - + (current-task (_type_) game-task) + (current-status (_type_) task-status) + (close-current! (_type_) game-task) + (close-status! (_type_ task-status) game-task) + (first-any (_type_ symbol) game-task) + (reset! (_type_ symbol symbol) int) + (closed? (_type_ game-task task-status) symbol) + (get-reminder (_type_ int) int) + (save-reminder (_type_ int int) int) + (exists? (_type_ game-task task-status) symbol))) (deftype ambient-control (structure) - ((last-ambient-time time-frame) - (last-ambient string) - (last-ambient-id sound-id) - ) + ((last-ambient-time time-frame) + (last-ambient string) + (last-ambient-id sound-id)) :pack-me (:methods - (ambient-control-method-9 (_type_) none) - (ambient-control-method-10 (_type_ vector time-frame float process-drawable) vector) - (play-ambient (_type_ string symbol vector) symbol) - ) - ) - + (ambient-control-method-9 (_type_) none) + (ambient-control-method-10 (_type_ vector time-frame float process-drawable) vector) + (play-ambient (_type_ string symbol vector) symbol))) (deftype process-taskable (process-drawable) - ((root collide-shape :override) - (tasks task-control) - (query gui-query :inline) - (old-target-pos transformq :inline) - (cell-for-task game-task) - (cell-x handle) - (cam-joint-index int32) - (skippable symbol) - (blend-on-exit art-joint-anim) - (camera handle) - (will-talk symbol) - (talk-message text-id) - (last-talk time-frame) - (bounce-away symbol) - (ambient ambient-control :inline) - (center-joint-index int32) - (draw-bounds-y-offset float) - (neck-joint-index int32) - (fuel-cell-anim spool-anim) - (sound-flava music-flava) - (have-flava symbol) - (music symbol) - (have-music symbol) - (been-kicked symbol) - (cur-trans-hook (function none)) - (shadow-backup shadow-geo) - ) + ((root collide-shape :override) + (tasks task-control) + (query gui-query :inline) + (old-target-pos transformq :inline) + (cell-for-task game-task) + (cell-x handle) + (cam-joint-index int32) + (skippable symbol) + (blend-on-exit art-joint-anim) + (camera handle) + (will-talk symbol) + (talk-message text-id) + (last-talk time-frame) + (bounce-away symbol) + (ambient ambient-control :inline) + (center-joint-index int32) + (draw-bounds-y-offset float) + (neck-joint-index int32) + (fuel-cell-anim spool-anim) + (sound-flava music-flava) + (have-flava symbol) + (music symbol) + (have-music symbol) + (been-kicked symbol) + (cur-trans-hook (function none)) + (shadow-backup shadow-geo)) (:state-methods - release - give-cell - lose - enter-playing - play-accept - play-reject - query - play-anim - hidden - (be-clone handle) - idle - ) + release + give-cell + lose + enter-playing + play-accept + play-reject + query + play-anim + hidden + (be-clone handle) + idle) (:methods - (get-art-elem (_type_) art-element) - (play-anim! (_type_ symbol) basic) - (process-taskable-method-33 (_type_) none) - (get-accept-anim (_type_ symbol) spool-anim) - (push-accept-anim (_type_) none) - (get-reject-anim (_type_ symbol) spool-anim) - (push-reject-anim (_type_) none) - (process-taskable-method-38 (_type_) none) - (should-display? (_type_) symbol) - (process-taskable-method-40 (_type_ object skeleton-group int int vector int) none) - (initialize-collision (_type_ int vector) none) - (process-taskable-method-42 (_type_) none) - (process-taskable-method-43 (_type_) symbol) - (play-reminder (_type_) symbol) - (process-taskable-method-45 (_type_) symbol) - (process-taskable-method-46 (_type_) none) - (target-above-threshold? (_type_) symbol) - (draw-npc-shadow (_type_) none) - (hidden-other () _type_ :state) - (process-taskable-method-50 (_type_) symbol) - (close-anim-file! (_type_) symbol) - (process-taskable-method-52 (_type_) none) - ) - ) + (get-art-elem (_type_) art-element) + (play-anim! (_type_ symbol) basic) + (process-taskable-method-33 (_type_) none) + (get-accept-anim (_type_ symbol) spool-anim) + (push-accept-anim (_type_) none) + (get-reject-anim (_type_ symbol) spool-anim) + (push-reject-anim (_type_) none) + (process-taskable-method-38 (_type_) none) + (should-display? (_type_) symbol) + (process-taskable-method-40 (_type_ object skeleton-group int int vector int) none) + (initialize-collision (_type_ int vector) none) + (process-taskable-method-42 (_type_) none) + (process-taskable-method-43 (_type_) symbol) + (play-reminder (_type_) symbol) + (process-taskable-method-45 (_type_) symbol) + (process-taskable-method-46 (_type_) none) + (target-above-threshold? (_type_) symbol) + (draw-npc-shadow (_type_) none) + (hidden-other () _type_ :state) + (process-taskable-method-50 (_type_) symbol) + (close-anim-file! (_type_) symbol) + (process-taskable-method-52 (_type_) none))) (defun-extern task-known? game-task symbol) + (defun-extern task-control-reset symbol none) (define-extern task-closed? (function game-task task-status symbol)) + (define-extern get-task-status (function game-task task-status)) + (define-extern get-task-control (function game-task task-control)) + (define-extern close-specific-task! (function game-task task-status game-task)) diff --git a/goal_src/jak1/engine/game/task/task-control.gc b/goal_src/jak1/engine/game/task/task-control.gc index 91cde7f906..644b512aac 100644 --- a/goal_src/jak1/engine/game/task/task-control.gc +++ b/goal_src/jak1/engine/game/task/task-control.gc @@ -1,125 +1,88 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/game-info.gc") (require "engine/game/task/game-task-h.gc") -;; name: task-control.gc -;; name in dgo: task-control -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun-debug task-status->string ((arg0 task-status)) - (enum->string task-status arg0) - ) + (enum->string task-status arg0)) (defmethod get-task ((this task-cstage)) "Get the game task for this cstage" - (-> this game-task) - ) + (-> this game-task)) (defmethod get-status ((this task-cstage)) "Get the status for this cstage" - (-> this status) - ) + (-> this status)) (defmethod closed? ((this task-cstage)) "Is the closed flag set?" (declare (inline)) - - (logtest? (-> this flags) (task-flags closed)) - ) + (logtest? (-> this flags) (task-flags closed))) (defmethod closed-by-default? ((this task-cstage)) "Is the closed-by-default flag set?" (declare (inline)) - - (logtest? (-> this flags) (task-flags closed-by-default)) - ) + (logtest? (-> this flags) (task-flags closed-by-default))) (defmethod task-available? ((this task-cstage) (arg0 task-control)) "Is this task available to be the current task?" (cond ((closed? this) ;; we're already closed. - #f - ) - ((>= (the-as int (-> (get-entity-task-perm *game-info* (-> this game-task)) user-uint8 0)) - (the-as int (-> this status)) - ) + #f) + ((>= (the-as int (-> (get-entity-task-perm *game-info* (-> this game-task)) user-uint8 0)) (the-as int (-> this status))) ;; the permanent entity for this task has stored that we have progresssed past ;; our status. Remember that we are closed, and return #f. (logior! (-> this flags) (task-flags closed)) - #f - ) + #f) ((task-complete? *game-info* (-> this game-task)) ;; the game-info thinks that we have completed this task already. ;; remember we are closed and return #f (logior! (-> this flags) (task-flags closed)) - #f - ) + #f) (else ;; we aren't closed. Check the condition. - ((-> this condition) arg0) - ) - ) - ) + ((-> this condition) arg0)))) (defmethod close-task! ((this task-cstage)) "Close this task!" (if (= (-> this game-task) (game-task none)) - ;; invalid task. - (return (the-as int #f)) - ) - + ;; invalid task. + (return (the-as int #f))) ;; flag as closed (logior! (-> this flags) (task-flags closed)) ;; do we have an entity to update? (when (logtest? (-> this flags) (task-flags has-entity)) - ;; look up the permanent storage for the entity associated with our task (let ((v1-9 (get-entity-task-perm *game-info* (-> this game-task)))) ;; we set a bit to indicate that we are storing a non-default status (logior! (-> v1-9 status) (entity-perm-status user-set-from-cstage)) ;; and store the actual status (only increment) - (if (< (-> v1-9 user-uint8 0) (the-as uint (-> this status))) - (set! (-> v1-9 user-int8 0) (the-as int (-> this status))) - ) - ) - ) - 0 - ) + (if (< (-> v1-9 user-uint8 0) (the-as uint (-> this status))) (set! (-> v1-9 user-int8 0) (the-as int (-> this status)))))) + 0) (defmethod open-task! ((this task-cstage)) "Clear the closed flag." (logclear! (-> this flags) (task-flags closed)) - 0 - ) + 0) ;; a task-control containing no cstages (define *null-task-control* - (new 'static 'task-control :current-stage -1 :stage (new 'static 'boxed-array :type task-cstage)) - ) + (new 'static 'task-control :current-stage -1 :stage (new 'static 'boxed-array :type task-cstage))) (defmethod current-task ((this task-control)) "Get the current task that is being played. If unknown returns the none task" (cond - ((= this *null-task-control*) - (format 0 "ERROR: current-task received *null-task-control*~%") - (game-task none) - ) + ((= this *null-task-control*) (format 0 "ERROR: current-task received *null-task-control*~%") (game-task none)) ((= (-> this current-stage) -1) ;; state unknown - (game-task none) - ) + (game-task none)) (else ;; look up the current cstage's task - (-> this stage (-> this current-stage) game-task) - ) - ) - ) + (-> this stage (-> this current-stage) game-task)))) (defmethod current-status ((this task-control)) "Get the status of the cstage that is being played. @@ -127,32 +90,19 @@ (cond ((= this *null-task-control*) (format 0 "ERROR: current-status received self of *null-task-control*~%~%") - (task-status invalid) - ) - ((= (-> this current-stage) -1) - (task-status invalid) - ) - (else - (-> this stage (-> this current-stage) status) - ) - ) - ) + (task-status invalid)) + ((= (-> this current-stage) -1) (task-status invalid)) + (else (-> this stage (-> this current-stage) status)))) (defmethod close-current! ((this task-control)) (cond - ((= this *null-task-control*) - (format 0 "ERROR: close-current! received self of *null-task-control*~%~%") - ) + ((= this *null-task-control*) (format 0 "ERROR: close-current! received self of *null-task-control*~%~%")) ((= (-> this current-stage) -1) ;; no current stage, do nothing ) - (else - (close-task! (-> this stage (-> this current-stage))) - ) - ) + (else (close-task! (-> this stage (-> this current-stage))))) ;; attempt to update the current task - (first-any this #t) - ) + (first-any this #t)) (defmethod close-status! ((this task-control) (arg0 task-status)) "Close the cstage that: @@ -165,3928 +115,4864 @@ (when (and (= a0-2 (-> this stage v1-1 game-task)) (= arg0 (-> this stage v1-1 status))) ;; found it! close and update current stage (close-task! (-> this stage v1-1)) - (return (first-any this #t)) - ) - ) + (return (first-any this #t)))) ;; nope, complain. - (format 0 "ERROR: close-status! received non-existent task-cstage(~S ~S)--returning #t.~%" + (format 0 + "ERROR: close-status! received non-existent task-cstage(~S ~S)--returning #t.~%" (game-task->string a0-2) - (task-status->string arg0) - ) - ) - (game-task none) - ) + (task-status->string arg0))) + (game-task none)) (defmethod first-any ((this task-control) (arg0 symbol)) "Iterate through tasks, finding an unclosed one to mark as current If arg0 is #t, warn on receiving null-task-control" - ;; check for null (when (= this *null-task-control*) - (if arg0 - (format 0 "ERROR: first-any received self of *null-task-control*~%~%") - ) - (return (game-task none)) - ) - + (if arg0 (format 0 "ERROR: first-any received self of *null-task-control*~%~%")) + (return (game-task none))) ;; iterate through all tasks (dotimes (s5-0 (-> this stage length)) (when (task-available? (-> this stage s5-0) this) ;; found an available task, set it. (set! (-> this current-stage) s5-0) - (return (-> this stage s5-0 game-task)) - ) - ) + (return (-> this stage s5-0 game-task)))) ;; none available. (set! (-> this current-stage) -1) - (game-task none) - ) + (game-task none)) (defmethod reset! ((this task-control) (reset-mode symbol) (arg1 symbol)) "Reset a task control. arg1 to warn on null, reset-mode 'game for a game reset" - (when (= this *null-task-control*) - (if arg1 - (format 0 "ERROR: reset! received self of *null-task-control*~%~%") - ) - (return 0) - ) + (if arg1 (format 0 "ERROR: reset! received self of *null-task-control*~%~%")) + (return 0)) (dotimes (s4-0 (-> this stage length)) ;; do we open the task? (if (or (= reset-mode 'game) ;; open every task on game reset (not (closed-by-default? (-> this stage s4-0))) ;; todo this flag? ) - (open-task! (-> this stage s4-0)) - ) - + (open-task! (-> this stage s4-0))) ;; call close-task! to send closed stuff to entities - (if (closed? (-> this stage s4-0)) - (close-task! (-> this stage s4-0)) - ) - ) - (the-as int #f) - ) - + (if (closed? (-> this stage s4-0)) (close-task! (-> this stage s4-0)))) + (the-as int #f)) (defmethod closed? ((this task-control) (arg0 game-task) (arg1 task-status)) "Is the given task/status cstage closed?" - (when (= this *null-task-control*) (format 0 "ERROR: closed? received self of *null-task-control*~%~%") - (return #f) - ) + (return #f)) ;; iterate all and check for match (dotimes (v1-3 (-> this stage length)) - (when (and (= arg0 (-> this stage v1-3 game-task)) - (= arg1 (-> this stage v1-3 status)) - ) - (return (closed? (-> this stage v1-3))) - ) - ) - (format 0 "ERROR: closed? received non-existent task-cstage(~S ~S)--returning #t.~%" + (when (and (= arg0 (-> this stage v1-3 game-task)) (= arg1 (-> this stage v1-3 status))) + (return (closed? (-> this stage v1-3))))) + (format 0 + "ERROR: closed? received non-existent task-cstage(~S ~S)--returning #t.~%" (game-task->string arg0) - (task-status->string arg1) - ) - #t - ) + (task-status->string arg1)) + #t) (defmethod exists? ((this task-control) (arg0 game-task) (arg1 task-status)) "Is there a cstage for the given task and status?" (when (= this *null-task-control*) (format 0 "ERROR: exists? received self of *null-task-control*~%~%") - (return #f) - ) + (return #f)) (dotimes (v1-3 (-> this stage length)) - (if (and (= arg0 (-> this stage v1-3 game-task)) (= arg1 (-> this stage v1-3 status))) - (return #t) - ) - ) - #f - ) + (if (and (= arg0 (-> this stage v1-3 game-task)) (= arg1 (-> this stage v1-3 status))) (return #t))) + #f) (defmethod get-reminder ((this task-control) (arg0 int)) "Get the arg0th reminder. " (when (= this *null-task-control*) (format 0 "ERROR: get-reminder received self of *null-task-control*~%~%") - (return 0) - ) + (return 0)) (let ((v1-4 (get-entity-task-perm *game-info* (-> this stage 0 game-task)))) - (the-as int (-> v1-4 user-uint8 (+ arg0 1))) - ) - ) + (the-as int (-> v1-4 user-uint8 (+ arg0 1))))) (defmethod save-reminder ((this task-control) (arg0 int) (arg1 int)) "Set the arg1th reminder to arg0" (when (= this *null-task-control*) (format 0 "ERROR: save-reminder received self of *null-task-control*~%~%") - (return 0) - ) + (return 0)) (let ((v1-4 (get-entity-task-perm *game-info* (-> this stage 0 game-task)))) ;; remember that we have a change. (logior! (-> v1-4 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-4 user-int8 (+ arg1 1)) arg0) - ) - 0 - ) - + (set! (-> v1-4 user-int8 (+ arg1 1)) arg0)) + 0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Task Control Definitions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; tasks for assistant (note: keira) (define *assistant-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task jungle-eggtop) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-eggtop) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (or (closed? arg0 (game-task jungle-eggtop) (task-status need-reminder)) - (and (closed? arg0 (game-task jungle-eggtop) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (or (closed? arg0 (game-task jungle-eggtop) (task-status need-reminder)) - (and (closed? arg0 (game-task jungle-eggtop) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-eggtop) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike) - :status (task-status need-reminder-a) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :status (task-status unknown) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (task-closed? (game-task village4-button) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-eggtop) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task jungle-eggtop) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-eggtop) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-bike) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (or (closed? arg0 (game-task jungle-eggtop) (task-status need-reminder)) + (and (closed? arg0 (game-task jungle-eggtop) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task misty-bike) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (or (closed? arg0 (game-task jungle-eggtop) (task-status need-reminder)) + (and (closed? arg0 (game-task jungle-eggtop) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task jungle-eggtop) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-bike) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-bike) + :status (task-status need-reminder-a) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-bike) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :status (task-status unknown) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (task-closed? (game-task village4-button) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-eggtop) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-bike) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *assistant-village2-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village2-levitator) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-levitator) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-levitator) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-levitator) - :status (task-status need-reminder-a) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-levitator) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 45) - ) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-room) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-room) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-flutflut) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (and (task-closed? (game-task beach-flutflut) (task-status need-reminder)) - (or (closed? arg0 (game-task sunken-room) (task-status need-reminder)) - (and (closed? arg0 (game-task sunken-room) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-flutflut) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (and (task-closed? (game-task beach-flutflut) (task-status need-reminder)) - (or (closed? arg0 (game-task sunken-room) (task-status need-reminder)) - (and (closed? arg0 (game-task sunken-room) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-robbers) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (if (task-closed? (game-task beach-flutflut) (task-status need-reminder)) - (or (closed? arg0 (game-task swamp-flutflut) (task-status need-reminder)) - (and (closed? arg0 (game-task swamp-flutflut) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - (or (closed? arg0 (game-task sunken-room) (task-status need-reminder)) - (and (closed? arg0 (game-task sunken-room) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-robbers) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (if (task-closed? (game-task beach-flutflut) (task-status need-reminder)) - (or (closed? arg0 (game-task swamp-flutflut) (task-status need-reminder)) - (and (closed? arg0 (game-task swamp-flutflut) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - (or (closed? arg0 (game-task sunken-room) (task-status need-reminder)) - (and (closed? arg0 (game-task sunken-room) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-room) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-room) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-flutflut) - :status (task-status unknown) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (task-closed? (game-task beach-flutflut) (task-status need-reminder)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-flutflut) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (task-closed? (game-task beach-flutflut) (task-status need-reminder)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-robbers) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-robbers) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-room) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-robbers) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-flutflut) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-levitator) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village2-levitator) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-levitator) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-levitator) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-levitator) + :status (task-status need-reminder-a) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-levitator) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 45))) + (new 'static + 'task-cstage + :game-task (game-task sunken-room) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-room) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-flutflut) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (and (task-closed? (game-task beach-flutflut) (task-status need-reminder)) + (or (closed? arg0 (game-task sunken-room) (task-status need-reminder)) + (and (closed? arg0 (game-task sunken-room) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3))))))) + (new 'static + 'task-cstage + :game-task (game-task swamp-flutflut) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (and (task-closed? (game-task beach-flutflut) (task-status need-reminder)) + (or (closed? arg0 (game-task sunken-room) (task-status need-reminder)) + (and (closed? arg0 (game-task sunken-room) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3))))))) + (new 'static + 'task-cstage + :game-task (game-task rolling-robbers) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (if (task-closed? (game-task beach-flutflut) (task-status need-reminder)) + (or (closed? arg0 (game-task swamp-flutflut) (task-status need-reminder)) + (and (closed? arg0 (game-task swamp-flutflut) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))) + (or (closed? arg0 (game-task sunken-room) (task-status need-reminder)) + (and (closed? arg0 (game-task sunken-room) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3))))))) + (new 'static + 'task-cstage + :game-task (game-task rolling-robbers) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (if (task-closed? (game-task beach-flutflut) (task-status need-reminder)) + (or (closed? arg0 (game-task swamp-flutflut) (task-status need-reminder)) + (and (closed? arg0 (game-task swamp-flutflut) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))) + (or (closed? arg0 (game-task sunken-room) (task-status need-reminder)) + (and (closed? arg0 (game-task sunken-room) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3))))))) + (new 'static + 'task-cstage + :game-task (game-task sunken-room) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-room) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-flutflut) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (task-closed? (game-task beach-flutflut) (task-status need-reminder)))) + (new 'static + 'task-cstage + :game-task (game-task swamp-flutflut) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (task-closed? (game-task beach-flutflut) (task-status need-reminder)))) + (new 'static + 'task-cstage + :game-task (game-task rolling-robbers) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-robbers) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-room) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-robbers) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-flutflut) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-levitator) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *gambler-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task rolling-race) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-race) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-gambler-money) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-gambler-money) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-race) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task rolling-race) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-gambler-money) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task village2-gambler-money) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-race) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task rolling-race) (task-status need-reminder)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-gambler-money) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-race) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task rolling-race) (task-status need-introduction)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-gambler-money) - :status (task-status need-reminder) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task rolling-race) (task-status need-introduction)) - ) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task rolling-race) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-race) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-gambler-money) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-gambler-money) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-race) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task rolling-race) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :game-task (game-task village2-gambler-money) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task village2-gambler-money) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :game-task (game-task rolling-race) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task rolling-race) (task-status need-reminder)))) + (new 'static + 'task-cstage + :game-task (game-task village2-gambler-money) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task rolling-race) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task rolling-race) (task-status need-introduction)))) + (new 'static + 'task-cstage + :game-task (game-task village2-gambler-money) + :status (task-status need-reminder) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task rolling-race) (task-status need-introduction))))))) (define *geologist-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task rolling-moles) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-moles) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-geologist-money) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-geologist-money) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-moles) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task rolling-moles) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-geologist-money) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task village2-geologist-money) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-moles) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task rolling-moles) (task-status need-reminder)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-geologist-money) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-moles) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task rolling-moles) (task-status need-introduction)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-geologist-money) - :status (task-status need-reminder) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task rolling-moles) (task-status need-introduction)) - ) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task rolling-moles) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-moles) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-geologist-money) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-geologist-money) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-moles) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task rolling-moles) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :game-task (game-task village2-geologist-money) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task village2-geologist-money) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :game-task (game-task rolling-moles) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task rolling-moles) (task-status need-reminder)))) + (new 'static + 'task-cstage + :game-task (game-task village2-geologist-money) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task rolling-moles) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task rolling-moles) (task-status need-introduction)))) + (new 'static + 'task-cstage + :game-task (game-task village2-geologist-money) + :status (task-status need-reminder) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task rolling-moles) (task-status need-introduction))))))) (define *mayor-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task jungle-lurkerm) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-lurkerm) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-mayor-money) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-mayor-money) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-lurkerm) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task jungle-lurkerm) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village1-mayor-money) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task village1-mayor-money) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-lurkerm) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task jungle-lurkerm) (task-status need-reminder)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village1-mayor-money) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-lurkerm) - :status (task-status need-reminder-a) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task jungle-lurkerm) (task-status need-introduction)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-lurkerm) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task jungle-lurkerm) (task-status need-introduction)) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village1-mayor-money) - :status (task-status need-reminder) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (closed? arg0 (game-task jungle-lurkerm) (task-status need-introduction)) - ) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task jungle-lurkerm) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-lurkerm) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-mayor-money) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-mayor-money) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-lurkerm) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task jungle-lurkerm) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :game-task (game-task village1-mayor-money) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task village1-mayor-money) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :game-task (game-task jungle-lurkerm) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task jungle-lurkerm) (task-status need-reminder)))) + (new 'static + 'task-cstage + :game-task (game-task village1-mayor-money) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task jungle-lurkerm) + :status (task-status need-reminder-a) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task jungle-lurkerm) (task-status need-introduction)))) + (new 'static + 'task-cstage + :game-task (game-task jungle-lurkerm) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task jungle-lurkerm) (task-status need-introduction)))) + (new 'static + 'task-cstage + :game-task (game-task village1-mayor-money) + :status (task-status need-reminder) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (closed? arg0 (game-task jungle-lurkerm) (task-status need-introduction))))))) (define *sage-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task intro) - :status (task-status need-introduction) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task intro) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task intro) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-ecorocks) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-ecorocks) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-cannon) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task beach-ecorocks) (task-status need-reminder)) - (and (closed? arg0 (game-task beach-ecorocks) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task misty-cannon) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task beach-ecorocks) (task-status need-reminder)) - (and (closed? arg0 (game-task beach-ecorocks) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task beach-ecorocks) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-cannon) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-cannon) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :status (task-status unknown) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (task-closed? (game-task village4-button) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-ecorocks) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-cannon) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task intro) + :status (task-status need-introduction) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task intro) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task intro) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-ecorocks) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-ecorocks) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-cannon) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task beach-ecorocks) (task-status need-reminder)) + (and (closed? arg0 (game-task beach-ecorocks) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task misty-cannon) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task beach-ecorocks) (task-status need-reminder)) + (and (closed? arg0 (game-task beach-ecorocks) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task beach-ecorocks) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-cannon) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-cannon) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :status (task-status unknown) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (task-closed? (game-task village4-button) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-ecorocks) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-cannon) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *sage-bluehut-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task rolling-plants) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-plants) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-arm) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task rolling-plants) (task-status need-reminder)) - (and (closed? arg0 (game-task rolling-plants) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-arm) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task rolling-plants) (task-status need-reminder)) - (and (closed? arg0 (game-task rolling-plants) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-plants) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-arm) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-arm) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-plants) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-arm) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task rolling-plants) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-plants) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-arm) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task rolling-plants) (task-status need-reminder)) + (and (closed? arg0 (game-task rolling-plants) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task swamp-arm) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task rolling-plants) (task-status need-reminder)) + (and (closed? arg0 (game-task rolling-plants) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task rolling-plants) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-arm) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-arm) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-plants) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-arm) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *oracle-village1-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money1) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money1) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money2) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money2) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money1) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money1) - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money1) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money2) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money2) - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-oracle-money2) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money1) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money1) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money2) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money2) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money1) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money1) + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money1) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money2) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money2) + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-oracle-money2) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *oracle-village2-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money1) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money1) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money2) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money2) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money1) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money1) - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money1) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money2) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money2) - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-oracle-money2) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money1) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money1) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money2) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money2) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money1) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money1) + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money1) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money2) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money2) + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-oracle-money2) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *oracle-village3-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money1) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money1) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money2) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money2) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money1) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money1) - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money1) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money2) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money2) - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-oracle-money2) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money1) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money1) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money2) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money2) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money1) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money1) + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money1) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money2) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-oracle-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money2) + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-oracle-money2) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *miners-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village3-miner-money1) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money1) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money2) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money2) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money3) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money3) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money4) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money4) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money1) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money2) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money3) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money4) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task cave-gnawers) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task village3-miner-money4) (task-status need-reminder)) - (and (closed? arg0 (game-task village3-miner-money4) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task cave-gnawers) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task village3-miner-money4) (task-status need-reminder)) - (and (closed? arg0 (game-task village3-miner-money4) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task snow-eggtop) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task cave-gnawers) (task-status need-reminder)) - (and (closed? arg0 (game-task cave-gnawers) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task snow-eggtop) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task cave-gnawers) (task-status need-reminder)) - (and (closed? arg0 (game-task cave-gnawers) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money1) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money1) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money2) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money2) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money3) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money3) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money4) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money4) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-gnawers) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-gnawers) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-eggtop) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-eggtop) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money1) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money2) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money3) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-miner-money4) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-gnawers) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-eggtop) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money1) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money1) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money2) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money2) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money3) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money3) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money4) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money4) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money1) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money2) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money3) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money4) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task cave-gnawers) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task village3-miner-money4) (task-status need-reminder)) + (and (closed? arg0 (game-task village3-miner-money4) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task cave-gnawers) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task village3-miner-money4) (task-status need-reminder)) + (and (closed? arg0 (game-task village3-miner-money4) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task snow-eggtop) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task cave-gnawers) (task-status need-reminder)) + (and (closed? arg0 (game-task cave-gnawers) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task snow-eggtop) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task cave-gnawers) (task-status need-reminder)) + (and (closed? arg0 (game-task cave-gnawers) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money1) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money1) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money2) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money2) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money3) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money3) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money4) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money4) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-gnawers) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-gnawers) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-eggtop) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-eggtop) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money1) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money2) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money3) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-miner-money4) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-gnawers) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-eggtop) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *sage-villagec-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village3-button) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-button) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-button) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-dark-crystals) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-dark-crystals) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ram) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task cave-dark-crystals) (task-status need-reminder)) - (and (closed? arg0 (game-task cave-dark-crystals) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ram) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda ((arg0 task-control) (arg1 task-control)) - (or (closed? arg0 (game-task cave-dark-crystals) (task-status need-reminder)) - (and (closed? arg0 (game-task cave-dark-crystals) (task-status need-introduction)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) - (+ (get-reminder arg0 1) 3) - ) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task cave-dark-crystals) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ram) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ram) - :status (task-status need-reminder-a) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ram) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-dark-crystals) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ram) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village3-button) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-button) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-button) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-dark-crystals) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-dark-crystals) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-ram) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task cave-dark-crystals) (task-status need-reminder)) + (and (closed? arg0 (game-task cave-dark-crystals) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task snow-ram) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda ((arg0 task-control) (arg1 task-control)) + (or (closed? arg0 (game-task cave-dark-crystals) (task-status need-reminder)) + (and (closed? arg0 (game-task cave-dark-crystals) (task-status need-introduction)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) (+ (get-reminder arg0 1) 3)))))) + (new 'static + 'task-cstage + :game-task (game-task cave-dark-crystals) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-ram) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-ram) + :status (task-status need-reminder-a) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-ram) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-dark-crystals) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-ram) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) -(define *citb-greensage-tasks* (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task citadel-sage-green) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task citadel-sage-green) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) +(define *citb-greensage-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task citadel-sage-green) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task citadel-sage-green) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) -(define *citb-bluesage-tasks* (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task citadel-sage-blue) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task citadel-sage-blue) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) +(define *citb-bluesage-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task citadel-sage-blue) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task citadel-sage-blue) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) -(define *citb-redsage-tasks* (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task citadel-sage-red) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task citadel-sage-red) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) +(define *citb-redsage-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task citadel-sage-red) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task citadel-sage-red) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) -(define *citb-yellowsage-tasks* (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task citadel-sage-yellow) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task citadel-sage-yellow) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) +(define *citb-yellowsage-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task citadel-sage-yellow) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task citadel-sage-yellow) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))) (define *task-controls* (the-as (array task-control) - (new 'static 'boxed-array :type basic - '*null-task-control* - '*null-task-control* - '*assistant-tasks* - '*mayor-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task jungle-tower) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-tower) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-tower) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-tower) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task jungle-fishgame) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-fishgame) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-fishgame) - :status (task-status need-reminder-a) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-fishgame) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-fishgame) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-fishgame) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task jungle-plant) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-plant) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-plant) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-plant) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task jungle-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task jungle-canyon-end) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-canyon-end) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-canyon-end) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-canyon-end) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task jungle-temple-door) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-temple-door) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-temple-door) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task jungle-temple-door) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village1-yakow) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-yakow) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-yakow) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-yakow) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-yakow) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*mayor-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village1-uncle-money) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-uncle-money) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-uncle-money) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village1-uncle-money) - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-uncle-money) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*oracle-village1-tasks* - '*oracle-village1-tasks* - '*sage-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task beach-pelican) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-pelican) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-pelican) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-pelican) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task beach-flutflut) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-flutflut) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-flutflut) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-flutflut) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-flutflut) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task beach-seagull) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-seagull) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-seagull) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-seagull) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task beach-cannon) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-cannon) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-cannon) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-cannon) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task beach-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task beach-gimmie) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-gimmie) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-gimmie) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-gimmie) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task beach-sentinel) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-sentinel) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-sentinel) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task beach-sentinel) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task misty-muse) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-muse) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-muse) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-muse) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-muse) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task misty-boat) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-boat) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-boat) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-boat) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task misty-warehouse) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-warehouse) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-warehouse) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-warehouse) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*sage-tasks* - '*assistant-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task misty-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task misty-bike-jump) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike-jump) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike-jump) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-bike-jump) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task misty-eco-challenge) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-eco-challenge) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-eco-challenge) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task misty-eco-challenge) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*gambler-tasks* - '*geologist-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village2-warrior-money) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (and (not (task-closed? (game-task ogre-boss) (task-status need-reminder))) - (not (task-closed? (game-task village2-levitator) (task-status need-reward-speech))) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-warrior-money) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (and (not (task-closed? (game-task ogre-boss) (task-status need-reminder))) - (not (task-closed? (game-task village2-levitator) (task-status need-reward-speech))) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-warrior-money) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (the-as - symbol - (and *target* - (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)) - ) - ) - ) - ) - (new 'static 'task-cstage - :game-task (game-task village2-warrior-money) - :status (task-status need-reminder) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-warrior-money) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*oracle-village2-tasks* - '*oracle-village2-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task swamp-billy) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-billy) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-billy) - :status (task-status need-reminder-a) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-billy) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-billy) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-billy) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*assistant-village2-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task swamp-battle) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-battle) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-battle) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-battle) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task swamp-tether-1) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-1) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-1) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-1) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task swamp-tether-2) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-2) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-2) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-2) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task swamp-tether-3) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-3) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-3) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-3) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task swamp-tether-4) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-4) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-4) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-tether-4) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task swamp-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task swamp-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task sunken-platforms) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-platforms) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-platforms) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-platforms) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task sunken-pipe) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-pipe) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-pipe) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-pipe) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task sunken-slide) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-slide) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-slide) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-slide) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*assistant-village2-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task sunken-sharks) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-sharks) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-sharks) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-sharks) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task sunken-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task sunken-top-of-helix) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-top-of-helix) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-top-of-helix) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-top-of-helix) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task sunken-spinning-room) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-spinning-room) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-spinning-room) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task sunken-spinning-room) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*gambler-tasks* - '*assistant-village2-tasks* - '*geologist-tasks* - '*sage-bluehut-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task rolling-lake) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-lake) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-lake) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-lake) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task rolling-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task rolling-ring-chase-1) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-ring-chase-1) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-ring-chase-1) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-ring-chase-1) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task rolling-ring-chase-2) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-ring-chase-2) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-ring-chase-2) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task rolling-ring-chase-2) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*miners-tasks* - '*sage-villagec-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task snow-fort) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-fort) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-fort) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-fort) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task snow-ball) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ball) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ball) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-ball) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task snow-bunnies) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-bunnies) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-bunnies) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-bunnies) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task snow-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task snow-bumpers) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-bumpers) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-bumpers) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-bumpers) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task snow-cage) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-cage) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-cage) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task snow-cage) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task firecanyon-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task firecanyon-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task firecanyon-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task firecanyon-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task firecanyon-end) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task firecanyon-end) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task firecanyon-end) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task firecanyon-end) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*citb-greensage-tasks* - '*citb-bluesage-tasks* - '*citb-redsage-tasks* - '*citb-yellowsage-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village3-extra1) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-extra1) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-extra1) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-extra1) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village1-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village1-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village2-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village2-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village3-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village3-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*miners-tasks* - '*sage-villagec-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task cave-dark-climb) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-dark-climb) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-dark-climb) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-dark-climb) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task cave-robot-climb) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-robot-climb) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-robot-climb) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-robot-climb) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task cave-swing-poles) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-swing-poles) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-swing-poles) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-swing-poles) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task cave-spider-tunnel) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-spider-tunnel) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-spider-tunnel) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-spider-tunnel) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task cave-platforms) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-platforms) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-platforms) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-platforms) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task cave-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task cave-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task ogre-boss) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-boss) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-boss) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-boss) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task ogre-end) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-end) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-end) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-end) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task ogre-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task lavatube-end) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-end) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-end) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-end) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task lavatube-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task citadel-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task citadel-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task citadel-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task citadel-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task training-gimmie) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-gimmie) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-gimmie) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-gimmie) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task training-door) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-door) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-door) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-door) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task training-climb) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-climb) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-climb) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-climb) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task training-buzzer) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-buzzer) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-buzzer) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task training-buzzer) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*miners-tasks* - '*miners-tasks* - '*miners-tasks* - '*miners-tasks* - '*oracle-village3-tasks* - '*oracle-village3-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task firecanyon-assistant) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 20) - ) - ) - (new 'static 'task-cstage - :game-task (game-task firecanyon-assistant) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*assistant-village2-tasks* - '*sage-bluehut-tasks* - '*sage-villagec-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task red-eggtop) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task red-eggtop) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task red-eggtop) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task red-eggtop) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task lavatube-balls) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-balls) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-balls) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-balls) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task lavatube-start) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 72) - ) - ) - (new 'static 'task-cstage - :game-task (game-task lavatube-start) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - '*sage-tasks* - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task ogre-secret) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-secret) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-secret) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task ogre-secret) - :status (task-status need-resolution) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task village4-button) - :status (task-status unknown) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village4-button) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task village4-button) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task finalboss-movies) - :status (task-status unknown) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task finalboss-movies) - :status (task-status need-introduction) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task finalboss-movies) - :status (task-status need-reminder-a) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task finalboss-movies) - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task finalboss-movies) - :status (task-status need-reward-speech) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task plunger-lurker-hit) - :status (task-status unknown) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task plunger-lurker-hit) - :status (task-status need-hint) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :game-task (game-task leaving-misty) - :status (task-status need-introduction) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - (new 'static 'task-cstage - :game-task (game-task leaving-misty) - :status (task-status need-reminder) - :flags (task-flags has-entity closed-by-default) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - (new 'static 'task-control - :current-stage -1 - :stage (new 'static 'boxed-array :type task-cstage - (new 'static 'task-cstage - :status (task-status unknown) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable - ((arg0 task-control)) - (task-closed? (game-task village4-button) (task-status need-reward-speech)) - ) - ) - (new 'static 'task-cstage - :status (task-status need-reminder) - :flags (task-flags has-entity) - :condition (lambda :behavior process-taskable ((arg0 task-control)) #t) - ) - ) - ) - ) - ) - ) + (new 'static + 'boxed-array + :type + basic + '*null-task-control* + '*null-task-control* + '*assistant-tasks* + '*mayor-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task jungle-tower) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-tower) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-tower) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-tower) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task jungle-fishgame) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-fishgame) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-fishgame) + :status (task-status need-reminder-a) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-fishgame) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-fishgame) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-fishgame) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task jungle-plant) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-plant) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-plant) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-plant) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task jungle-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task jungle-canyon-end) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-canyon-end) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-canyon-end) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-canyon-end) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task jungle-temple-door) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-temple-door) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-temple-door) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task jungle-temple-door) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village1-yakow) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-yakow) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-yakow) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-yakow) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-yakow) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*mayor-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village1-uncle-money) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-uncle-money) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-uncle-money) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village1-uncle-money) + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-uncle-money) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*oracle-village1-tasks* + '*oracle-village1-tasks* + '*sage-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task beach-pelican) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-pelican) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-pelican) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-pelican) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task beach-flutflut) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-flutflut) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-flutflut) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-flutflut) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-flutflut) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task beach-seagull) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-seagull) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-seagull) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-seagull) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task beach-cannon) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-cannon) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-cannon) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-cannon) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task beach-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task beach-gimmie) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-gimmie) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-gimmie) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-gimmie) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task beach-sentinel) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-sentinel) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-sentinel) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task beach-sentinel) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task misty-muse) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-muse) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-muse) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-muse) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-muse) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task misty-boat) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-boat) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-boat) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-boat) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task misty-warehouse) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-warehouse) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-warehouse) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-warehouse) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*sage-tasks* + '*assistant-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task misty-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task misty-bike-jump) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-bike-jump) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-bike-jump) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-bike-jump) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task misty-eco-challenge) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-eco-challenge) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-eco-challenge) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task misty-eco-challenge) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*gambler-tasks* + '*geologist-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village2-warrior-money) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (and (not (task-closed? (game-task ogre-boss) (task-status need-reminder))) + (not (task-closed? (game-task village2-levitator) (task-status need-reward-speech)))))) + (new 'static + 'task-cstage + :game-task (game-task village2-warrior-money) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (and (not (task-closed? (game-task ogre-boss) (task-status need-reminder))) + (not (task-closed? (game-task village2-levitator) (task-status need-reward-speech)))))) + (new 'static + 'task-cstage + :game-task (game-task village2-warrior-money) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (the-as symbol + (and *target* + (>= (the-as float (send-event *target* 'query 'pickup (pickup-type money))) (-> *GAME-bank* money-task-inc)))))) + (new 'static + 'task-cstage + :game-task (game-task village2-warrior-money) + :status (task-status need-reminder) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-warrior-money) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*oracle-village2-tasks* + '*oracle-village2-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task swamp-billy) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-billy) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-billy) + :status (task-status need-reminder-a) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-billy) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-billy) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-billy) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*assistant-village2-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task swamp-battle) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-battle) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-battle) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-battle) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-1) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-1) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-1) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-1) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-2) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-2) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-2) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-2) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-3) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-3) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-3) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-3) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-4) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-4) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-4) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-tether-4) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task swamp-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task swamp-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task sunken-platforms) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-platforms) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-platforms) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-platforms) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task sunken-pipe) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-pipe) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-pipe) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-pipe) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task sunken-slide) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-slide) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-slide) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-slide) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*assistant-village2-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task sunken-sharks) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-sharks) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-sharks) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-sharks) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task sunken-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task sunken-top-of-helix) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-top-of-helix) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-top-of-helix) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-top-of-helix) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task sunken-spinning-room) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-spinning-room) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-spinning-room) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task sunken-spinning-room) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*gambler-tasks* + '*assistant-village2-tasks* + '*geologist-tasks* + '*sage-bluehut-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task rolling-lake) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-lake) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-lake) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-lake) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task rolling-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task rolling-ring-chase-1) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-ring-chase-1) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-ring-chase-1) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-ring-chase-1) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task rolling-ring-chase-2) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-ring-chase-2) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-ring-chase-2) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task rolling-ring-chase-2) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*miners-tasks* + '*sage-villagec-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task snow-fort) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-fort) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-fort) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-fort) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task snow-ball) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-ball) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-ball) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-ball) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task snow-bunnies) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-bunnies) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-bunnies) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-bunnies) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task snow-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task snow-bumpers) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-bumpers) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-bumpers) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-bumpers) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task snow-cage) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-cage) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-cage) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task snow-cage) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task firecanyon-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task firecanyon-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task firecanyon-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task firecanyon-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task firecanyon-end) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task firecanyon-end) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task firecanyon-end) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task firecanyon-end) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*citb-greensage-tasks* + '*citb-bluesage-tasks* + '*citb-redsage-tasks* + '*citb-yellowsage-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village3-extra1) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-extra1) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-extra1) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-extra1) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village1-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village1-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village2-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village2-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village3-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village3-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*miners-tasks* + '*sage-villagec-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task cave-dark-climb) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-dark-climb) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-dark-climb) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-dark-climb) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task cave-robot-climb) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-robot-climb) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-robot-climb) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-robot-climb) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task cave-swing-poles) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-swing-poles) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-swing-poles) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-swing-poles) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task cave-spider-tunnel) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-spider-tunnel) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-spider-tunnel) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-spider-tunnel) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task cave-platforms) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-platforms) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-platforms) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-platforms) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task cave-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task cave-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task ogre-boss) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-boss) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-boss) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-boss) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task ogre-end) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-end) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-end) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-end) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task ogre-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task lavatube-end) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-end) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-end) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-end) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task lavatube-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task citadel-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task citadel-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task citadel-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task citadel-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task training-gimmie) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-gimmie) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-gimmie) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-gimmie) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task training-door) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-door) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-door) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-door) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task training-climb) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-climb) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-climb) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-climb) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task training-buzzer) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-buzzer) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-buzzer) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task training-buzzer) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*miners-tasks* + '*miners-tasks* + '*miners-tasks* + '*miners-tasks* + '*oracle-village3-tasks* + '*oracle-village3-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task firecanyon-assistant) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 20))) + (new 'static + 'task-cstage + :game-task (game-task firecanyon-assistant) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*assistant-village2-tasks* + '*sage-bluehut-tasks* + '*sage-villagec-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task red-eggtop) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task red-eggtop) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task red-eggtop) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task red-eggtop) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task lavatube-balls) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-balls) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-balls) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task lavatube-balls) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task lavatube-start) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (>= (the int (the float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 72))) + (new 'static + 'task-cstage + :game-task (game-task lavatube-start) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + '*sage-tasks* + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task ogre-secret) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-secret) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-secret) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task ogre-secret) + :status (task-status need-resolution) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task village4-button) + :status (task-status unknown) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village4-button) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task village4-button) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task finalboss-movies) + :status (task-status unknown) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task finalboss-movies) + :status (task-status need-introduction) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task finalboss-movies) + :status (task-status need-reminder-a) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task finalboss-movies) + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task finalboss-movies) + :status (task-status need-reward-speech) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task plunger-lurker-hit) + :status (task-status unknown) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task plunger-lurker-hit) + :status (task-status need-hint) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :game-task (game-task leaving-misty) + :status (task-status need-introduction) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)) + (new 'static + 'task-cstage + :game-task (game-task leaving-misty) + :status (task-status need-reminder) + :flags (task-flags has-entity closed-by-default) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t)))) + (new 'static + 'task-control + :current-stage -1 + :stage + (new 'static + 'boxed-array + :type + task-cstage + (new 'static + 'task-cstage + :status (task-status unknown) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + (task-closed? (game-task village4-button) (task-status need-reward-speech)))) + (new 'static + 'task-cstage + :status (task-status need-reminder) + :flags (task-flags has-entity) + :condition + (lambda :behavior process-taskable ((arg0 task-control)) + #t))))))) (defun task-control-reset ((arg0 symbol)) "Reset all task controls and set their current stage" (let ((s5-0 *task-controls*)) (countdown (s4-0 (-> s5-0 length)) (reset! (-> s5-0 s4-0) arg0 #f) - (first-any (-> s5-0 s4-0) #f) - ) - ) + (first-any (-> s5-0 s4-0) #f))) 0 - (none) - ) + (none)) (defun get-task-control ((arg0 game-task)) "Get the task control for a given game-task" @@ -4094,14 +4980,10 @@ ((or (>= (the-as uint 1) (the-as uint arg0)) (>= (the-as uint arg0) (the-as uint (game-task max)))) ;; changed from hard-coded 116 to (game-task max) ;; invalid game task (format 0 "ERROR: get-task-control received invalid task ~D/~S~%" arg0 (game-task->string arg0)) - *null-task-control* - ) + *null-task-control*) (else ;; otherwise look up in table - (-> *task-controls* arg0) - ) - ) - ) + (-> *task-controls* arg0)))) (defun get-task-status ((arg0 game-task)) "Get the staus of a game-task" @@ -4110,14 +4992,9 @@ (dotimes (s5-0 (-> gp-0 stage length)) (when (and (= arg0 (-> gp-0 stage s5-0 game-task)) (task-available? (-> gp-0 stage s5-0) gp-0)) (first-any gp-0 #t) - (return (the-as task-status (-> gp-0 stage s5-0 status))) - ) - ) - ) - (first-any gp-0 #t) - ) - (task-status invalid) - ) + (return (the-as task-status (-> gp-0 stage s5-0 status)))))) + (first-any gp-0 #t)) + (task-status invalid)) (defun close-specific-task! ((arg0 game-task) (arg1 task-status)) "Close a cstage for a game-task" @@ -4126,19 +5003,12 @@ (dotimes (v1-1 (-> gp-0 stage length)) (when (and (= arg0 (-> gp-0 stage v1-1 game-task)) (= arg1 (-> gp-0 stage v1-1 status))) (close-task! (-> gp-0 stage v1-1)) - (return (first-any gp-0 #t)) - ) - ) - (format - 0 - "ERROR: close-specific! received non-existent task-cstage(~S ~S)--returning #t.~%" - (game-task->string arg0) - (task-status->string arg1) - ) - ) - ) - (game-task none) - ) + (return (first-any gp-0 #t)))) + (format 0 + "ERROR: close-specific! received non-existent task-cstage(~S ~S)--returning #t.~%" + (game-task->string arg0) + (task-status->string arg1)))) + (game-task none)) (defun open-specific-task! ((arg0 game-task) (arg1 task-status)) "Open a cstage for a game-task" @@ -4147,27 +5017,18 @@ (dotimes (v1-1 (-> gp-0 stage length)) (when (and (= arg0 (-> gp-0 stage v1-1 game-task)) (= arg1 (-> gp-0 stage v1-1 status))) (open-task! (-> gp-0 stage v1-1)) - (return (first-any gp-0 #t)) - ) - ) - (format - 0 - "ERROR: open-specific! received non-existent task-cstage(~S ~S)--returning #t.~%" - (game-task->string arg0) - (task-status->string arg1) - ) - ) - ) - (game-task none) - ) + (return (first-any gp-0 #t)))) + (format 0 + "ERROR: open-specific! received non-existent task-cstage(~S ~S)--returning #t.~%" + (game-task->string arg0) + (task-status->string arg1)))) + (game-task none)) (defun task-closed? ((arg0 game-task) (arg1 task-status)) - (closed? (get-task-control arg0) arg0 arg1) - ) + (closed? (get-task-control arg0) arg0 arg1)) (defun task-exists? ((arg0 game-task) (arg1 task-status)) - (exists? (get-task-control arg0) arg0 arg1) - ) + (exists? (get-task-control arg0) arg0 arg1)) (defun task-known? ((arg0 game-task)) "Is there a cstage with a non-unknown status?" @@ -4177,20 +5038,12 @@ (task-status need-reminder) (task-status need-reminder-a) (task-status need-resolution) - (task-status invalid) - ) - #t - ) - (else - #f - ) - ) - ) + (task-status invalid)) + #t) + (else #f))) (defun sages-kidnapped? () - (task-closed? (game-task village4-button) (task-status need-reward-speech)) - ) - + (task-closed? (game-task village4-button) (task-status need-reward-speech))) ;; replace symbols in task-controls with their value. (let ((gp-0 *task-controls*)) @@ -4201,21 +5054,10 @@ (cond ((and (nonzero? s4-0) (type-type? (rtype-of s4-0) task-control)) ;; symbol holds a task-control, replace it - (set! (-> gp-0 s5-0) (the-as task-control s4-0)) - ) + (set! (-> gp-0 s5-0) (the-as task-control s4-0))) (else ;; invalid symbol (format 0 "ERROR: value of symbol ~A in task-controls is not a task-control~%") - (set! (-> gp-0 s5-0) (the-as task-control '*null-task-control*)) - ) - ) - ) - ) - ) - ) + (set! (-> gp-0 s5-0) (the-as task-control '*null-task-control*)))))))) (task-control-reset 'game) - - - - diff --git a/goal_src/jak1/engine/geometry/bounding-box-h.gc b/goal_src/jak1/engine/geometry/bounding-box-h.gc index 6286fa1b06..3fbd97000b 100644 --- a/goal_src/jak1/engine/geometry/bounding-box-h.gc +++ b/goal_src/jak1/engine/geometry/bounding-box-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: bounding-box-h.gc -;; name in dgo: bounding-box-h -;; dgos: GAME, ENGINE - ;; Types related to bounding boxes. ;; DECOMP BEGINS @@ -17,31 +12,24 @@ ;; max is the corner with highest x,y,z values. ;; the w value should be 1 in both min and max. (deftype bounding-box (structure) - ((min vector :inline) - (max vector :inline) - ) + ((min vector :inline) + (max vector :inline)) (:methods - (add-spheres! (_type_ (inline-array sphere) int) int) - (add-point! (_type_ vector3s) int) - (set-from-point-offset! (_type_ vector3s vector3s) int) - (set-from-point-offset-pad! (_type_ vector3s vector3s float) int) - (set-from-sphere! (_type_ sphere) int) - (set-from-spheres! (_type_ (inline-array sphere) int) int) - (add-box! (_type_ bounding-box) int) - ) - ) + (add-spheres! (_type_ (inline-array sphere) int) int) + (add-point! (_type_ vector3s) int) + (set-from-point-offset! (_type_ vector3s vector3s) int) + (set-from-point-offset-pad! (_type_ vector3s vector3s float) int) + (set-from-sphere! (_type_ sphere) int) + (set-from-spheres! (_type_ (inline-array sphere) int) int) + (add-box! (_type_ bounding-box) int))) ;; integer (word) bounding box. (deftype bounding-box4w (structure) - ((min vector4w :inline) - (max vector4w :inline) - ) - ) + ((min vector4w :inline) + (max vector4w :inline))) ;; bounding both that has both a box and box4w. ;; these are used in the collision system where it is useful to have both float/int versions. (deftype bounding-box-both (structure) - ((box bounding-box :inline) - (box4w bounding-box4w :inline) - ) - ) + ((box bounding-box :inline) + (box4w bounding-box4w :inline))) diff --git a/goal_src/jak1/engine/geometry/bounding-box.gc b/goal_src/jak1/engine/geometry/bounding-box.gc index 243d9f22b7..f3a7d21d3d 100644 --- a/goal_src/jak1/engine/geometry/bounding-box.gc +++ b/goal_src/jak1/engine/geometry/bounding-box.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/geometry/bounding-box-h.gc") -;; name: bounding-box.gc -;; name in dgo: bounding-box -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun box-vector-enside? ((box bounding-box) (pt vector)) @@ -18,9 +13,7 @@ (< (-> box min z) (-> pt z)) (< (-> pt x) (-> box max x)) (< (-> pt y) (-> box max y)) - (< (-> pt z) (-> box max z)) - ) - ) + (< (-> pt z) (-> box max z)))) (defun box-vector-inside? ((box bounding-box) (pt vector)) "Is the point in the box? On the edge counts." @@ -29,9 +22,7 @@ (>= (-> pt z) (-> box min z)) (>= (-> box max x) (-> pt x)) (>= (-> box max y) (-> pt y)) - (>= (-> box max z) (-> pt z)) - ) - ) + (>= (-> box max z) (-> pt z)))) (defmethod set-from-point-offset! ((this bounding-box) (arg0 vector3s) (arg1 vector3s)) "Set box to smallest containing the points arg0, (arg0 + arg1)" @@ -40,8 +31,7 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (.lvf vf3 arg1) (.lvf vf4 arg0) @@ -52,16 +42,13 @@ (.mov.vf vf2 vf0 :mask #b1000) (.svf (&-> this min quad) vf1) (.svf (&-> this max quad) vf2) - 0 - ) - ) + 0)) (defmethod add-point! ((this bounding-box) (arg0 vector3s)) "Expand the box if needed to contain the given point" (rlet ((vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (.lvf vf1 (&-> this min quad)) (.lvf vf2 (&-> this max quad)) (.lvf vf3 arg0) @@ -69,17 +56,14 @@ (.max.vf vf2 vf2 vf3) (.svf (&-> this min quad) vf1) (.svf (&-> this max quad) vf2) - 0 - ) - ) + 0)) (defmethod add-box! ((this bounding-box) (arg0 bounding-box)) "Expand the box if needed to contain the given box" (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (.lvf vf1 (&-> this min quad)) (.lvf vf2 (&-> this max quad)) (.lvf vf3 (&-> arg0 min quad)) @@ -88,9 +72,7 @@ (.max.vf vf2 vf2 vf4) (.svf (&-> this min quad) vf1) (.svf (&-> this max quad) vf2) - 0 - ) - ) + 0)) (defmethod set-from-point-offset-pad! ((this bounding-box) (arg0 vector3s) (arg1 vector3s) (arg2 float)) "Set the box size to contain pt, pt + offset, with some padding" @@ -100,8 +82,7 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (.lvf vf4 arg1) (.lvf vf5 arg0) @@ -115,28 +96,23 @@ (.mov.vf vf3 vf0 :mask #b1000) (.svf (&-> this min quad) vf2) (.svf (&-> this max quad) vf3) - 0 - ) - ) + 0)) (defmethod set-from-sphere! ((this bounding-box) (arg0 sphere)) "Set the box size to contain the given sphere" (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) - (init-vf0-vector) - (.lvf vf1 arg0) - (.sub.w.vf vf2 vf1 vf1 :mask #b111) - (.add.w.vf vf3 vf1 vf1 :mask #b111) - (.mov.vf vf2 vf0 :mask #b1000) - (.mov.vf vf3 vf0 :mask #b1000) - (.svf this vf2) - (.svf this vf3 :offset 16) - 0 - ) - ) + (vf3 :class vf)) + (init-vf0-vector) + (.lvf vf1 arg0) + (.sub.w.vf vf2 vf1 vf1 :mask #b111) + (.add.w.vf vf3 vf1 vf1 :mask #b111) + (.mov.vf vf2 vf0 :mask #b1000) + (.mov.vf vf3 vf0 :mask #b1000) + (.svf this vf2) + (.svf this vf3 :offset 16) + 0)) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; multi-sphere methods @@ -144,7 +120,7 @@ ;; these are used in the collision system to build bounding boxes around collision geometries, so they are quite optimized. -(defmethod add-spheres! bounding-box ((this bounding-box) (spheres (inline-array sphere)) (count int)) +(defmethod add-spheres! ((this bounding-box) (spheres (inline-array sphere)) (count int)) "Add count spheres." ;; the PS2 implementation is very optimized ;; It is unrolled and 'software pipelined' to do 4 at a time. @@ -154,28 +130,21 @@ (sph-min :class vf) (sph-max :class vf) (sph :class vf)) - (when (nonzero? count) ;; load these outside the loop (.lvf current-min (-> this min)) (.lvf current-max (-> this max)) - (dotimes (i count) (.lvf sph (-> spheres i)) (.sub.w.vf sph-min sph sph :mask #b111) (.add.w.vf sph-max sph sph :mask #b111) (.min.vf current-min current-min sph-min :mask #b111) - (.max.vf current-max current-max sph-max :mask #b111) - ) - + (.max.vf current-max current-max sph-max :mask #b111)) (.svf (-> this min) current-min) - (.svf (-> this max) current-max) - ) - ) - 0 - ) + (.svf (-> this max) current-max))) + 0) -(defmethod set-from-spheres! bounding-box ((this bounding-box) (spheres (inline-array sphere)) (count int)) +(defmethod set-from-spheres! ((this bounding-box) (spheres (inline-array sphere)) (count int)) "Reset box to hold the given spheres. Note: this implementation could be optimized." ;; This is also unrolled, but does 7 at a time. (rlet ((vf0 :class vf) @@ -189,25 +158,13 @@ ;; init min/max. in the case we don't have any spheres, we should return (0,0,0,1) for min/max. (set! current-min vf0) (set! current-max vf0) - (dotimes (i count) (.lvf sph (-> spheres i)) (.sub.w.vf sph-min sph sph :mask #b111) (.add.w.vf sph-max sph sph :mask #b111) (cond - ((zero? i) - (set! current-min sph-min) - (set! current-max sph-max) - ) - (else - (.min.vf current-min current-min sph-min :mask #b111) - (.max.vf current-max current-max sph-max :mask #b111) - ) - ) - ) - + ((zero? i) (set! current-min sph-min) (set! current-max sph-max)) + (else (.min.vf current-min current-min sph-min :mask #b111) (.max.vf current-max current-max sph-max :mask #b111)))) (.svf (-> this min) current-min) - (.svf (-> this max) current-max) - ) - 0 - ) + (.svf (-> this max) current-max)) + 0) diff --git a/goal_src/jak1/engine/geometry/cylinder.gc b/goal_src/jak1/engine/geometry/cylinder.gc index 9347bf9d1f..e7a2c520fa 100644 --- a/goal_src/jak1/engine/geometry/cylinder.gc +++ b/goal_src/jak1/engine/geometry/cylinder.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/collide-func.gc") (require "engine/camera/cam-debug-h.gc") (require "engine/math/matrix.gc") -;; name: cylinder.gc -;; name in dgo: cylinder -;; dgos: GAME, ENGINE - ;; Note: "cylinder" refers to a capsule, "cylinder-flat" refers to a real cylinder with end caps. ;; DECOMP BEGINS @@ -17,47 +12,24 @@ (defmethod ray-capsule-intersect ((this cylinder) (probe-origin vector) (probe-dir vector)) "Intersect a ray with a capsule." (let ((t2-0 (new 'stack-no-clear 'vector)) - (end-pt (new 'stack-no-clear 'vector)) - ) + (end-pt (new 'stack-no-clear 'vector))) ;; first intersect with the cylinder part. - (let ((result (ray-cylinder-intersect - probe-origin - probe-dir - (-> this origin) - (-> this axis) - (-> this radius) - (-> this length) - t2-0 - ) - ) - ) + (let ((result (ray-cylinder-intersect probe-origin probe-dir (-> this origin) (-> this axis) (-> this radius) (-> this length) t2-0))) ;; next, intersect with the sphere at the origin. (let ((u-origin-sph (ray-sphere-intersect probe-origin probe-dir (-> this origin) (-> this radius)))) ;; if that was closer, we went through both the sphere and the wall, and we want the sphere. - (if (and (>= u-origin-sph 0.0) (or (< result 0.0) (< u-origin-sph result))) - (set! result u-origin-sph) - ) - ) + (if (and (>= u-origin-sph 0.0) (or (< result 0.0) (< u-origin-sph result))) (set! result u-origin-sph))) ;; compute the location of the other end's sphere's origin (vector+float*! end-pt (-> this origin) (-> this axis) (-> this length)) ;; intersect that (let ((u-end-sphere (ray-sphere-intersect probe-origin probe-dir end-pt (-> this radius)))) ;; and pick it if it's closer. - (if (and (>= u-end-sphere 0.0) (or (< result 0.0) (< u-end-sphere result))) - (set! result u-end-sphere) - ) - ) - result - ) - ) - ) + (if (and (>= u-end-sphere 0.0) (or (< result 0.0) (< u-end-sphere result))) (set! result u-end-sphere))) + result))) ;; This is used to hold vertices for debug-drawing cylinders. (deftype cylinder-verts (structure) - ((vert vector 24 :inline) - ) - ) - + ((vert vector 24 :inline))) (defmethod debug-draw ((this cylinder) (arg0 vector4w)) "Debug draw a cylinder. This is slow and ugly" @@ -79,27 +51,22 @@ (sv-1120 (function vector vector vector float vector)) (sv-1136 vector) (sv-1152 vector) - (sv-1168 vector) - ) + (sv-1168 vector)) (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (let ((s1-0 (new 'stack-no-clear 'vector)) - (s0-0 (new 'stack-no-clear 'vector)) - ) + (s0-0 (new 'stack-no-clear 'vector))) (if (< 0.999 (fabs (-> this axis y))) - (vector-cross! s1-0 (-> this axis) (new 'static 'vector :z 1.0)) - (vector-cross! s1-0 (-> this axis) (new 'static 'vector :y 1.0)) - ) + (vector-cross! s1-0 (-> this axis) (new 'static 'vector :z 1.0)) + (vector-cross! s1-0 (-> this axis) (new 'static 'vector :y 1.0))) (vector-normalize! s1-0 (-> this radius)) (vector-float*! s0-0 (-> this axis) (* 0.125 (-> this length))) (let ((s5-0 (new 'stack-no-clear 'cylinder-verts)) (s4-0 (new 'stack-no-clear 'cylinder-verts)) - (s3-0 (new 'stack-no-clear 'matrix)) - ) + (s3-0 (new 'stack-no-clear 'matrix))) (matrix-axis-angle! s3-0 (-> this axis) 4096.0) (set! sv-896 (new 'stack-no-clear 'matrix)) (vector-matrix*! (the-as vector sv-896) (-> this origin) s3-0) @@ -108,158 +75,98 @@ (.lvf vf5 (&-> sv-896 vector 0 quad)) (.mov.vf vf6 vf0 :mask #b1000) (.sub.vf vf6 vf4 vf5 :mask #b111) - (.svf (&-> v1-5 quad) vf6) - ) + (.svf (&-> v1-5 quad) vf6)) (set! sv-912 0) (while (< sv-912 8) (vector+! (-> s5-0 vert (+ sv-912 8)) (-> this origin) s1-0) (vector+float*! (-> s5-0 vert (+ sv-912 8)) (-> s5-0 vert (+ sv-912 8)) s0-0 (the float sv-912)) - (set! sv-912 (+ sv-912 1)) - ) + (set! sv-912 (+ sv-912 1))) (dotimes (s0-1 8) (set! sv-928 vector+float*!) (set! sv-944 (-> s5-0 vert s0-1)) (set! sv-960 (-> this origin)) (set! sv-976 s1-0) - (let ((a3-1 (cos (* 2048.0 (the float (- 7 s0-1)))))) - (sv-928 sv-944 sv-960 sv-976 a3-1) - ) + (let ((a3-1 (cos (* 2048.0 (the float (- 7 s0-1)))))) (sv-928 sv-944 sv-960 sv-976 a3-1)) (set! sv-992 vector+float*!) (set! sv-1008 (-> s5-0 vert s0-1)) (set! sv-1024 (-> s5-0 vert s0-1)) (set! sv-1040 (-> this axis)) - (let ((a3-2 (* (- (-> this radius)) (sin (* 2048.0 (the float (- 7 s0-1))))))) - (sv-992 sv-1008 sv-1024 sv-1040 a3-2) - ) + (let ((a3-2 (* (- (-> this radius)) (sin (* 2048.0 (the float (- 7 s0-1))))))) (sv-992 sv-1008 sv-1024 sv-1040 a3-2)) (set! sv-1056 vector+float*!) (set! sv-1072 (-> s5-0 vert (+ s0-1 16))) (set! sv-1088 (-> this origin)) (set! sv-1104 s1-0) - (let ((a3-3 (cos (* 2048.0 (the float s0-1))))) - (sv-1056 sv-1072 sv-1088 sv-1104 a3-3) - ) + (let ((a3-3 (cos (* 2048.0 (the float s0-1))))) (sv-1056 sv-1072 sv-1088 sv-1104 a3-3)) (set! sv-1120 vector+float*!) (set! sv-1136 (-> s5-0 vert (+ s0-1 16))) (set! sv-1152 (-> s5-0 vert (+ s0-1 16))) (set! sv-1168 (-> this axis)) (let ((a3-4 (+ (-> this length) (* (-> this radius) (sin (* 2048.0 (the float s0-1))))))) - (sv-1120 sv-1136 sv-1152 sv-1168 a3-4) - ) - ) + (sv-1120 sv-1136 sv-1152 sv-1168 a3-4))) (dotimes (s2-1 16) (dotimes (s1-1 24) (vector-matrix*! (-> s4-0 vert s1-1) (-> s5-0 vert s1-1) s3-0) (camera-line (-> s5-0 vert s1-1) (-> s4-0 vert s1-1) arg0) - (if (nonzero? s1-1) - (camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0) - ) - ) - (let ((v1-77 s5-0)) - (set! s5-0 s4-0) - (set! s4-0 v1-77) - ) - ) - ) - ) + (if (nonzero? s1-1) (camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0))) + (let ((v1-77 s5-0)) (set! s5-0 s4-0) (set! s4-0 v1-77))))) 0 - (none) - ) - ) + (none))) (defun ray-arbitrary-circle-intersect ((probe-origin vector) (probe-dir vector) (circle-origin vector) (circle-normal vector) (radius float)) "Intersect a ray with a non-axis-aligned circle." (let* ((v1-1 (vector-! (new 'stack-no-clear 'vector) circle-origin probe-origin)) ;; circle -> probe offset - (f0-2 (/ (vector-dot v1-1 circle-normal) (vector-dot probe-dir circle-normal))) - ) + (f0-2 (/ (vector-dot v1-1 circle-normal) (vector-dot probe-dir circle-normal)))) (cond - ((or (< 1.0 f0-2) (< f0-2 0.0)) - -100000000.0 - ) + ((or (< 1.0 f0-2) (< f0-2 0.0)) -100000000.0) ((let ((a0-7 (new 'stack-no-clear 'vector))) (vector-float*! a0-7 probe-dir f0-2) (vector-! a0-7 a0-7 v1-1) - (< (vector-dot a0-7 a0-7) (* radius radius)) - ) - f0-2 - ) - (else - -100000000.0 - ) - ) - ) - ) + (< (vector-dot a0-7 a0-7) (* radius radius))) + f0-2) + (else -100000000.0)))) (defmethod ray-flat-cyl-intersect ((this cylinder-flat) (probe-origin vector) (probe-dir vector)) "Intersect with a real cylinder." (let ((gp-0 (new 'stack-no-clear 'vector)) - (end-pt (new 'stack-no-clear 'vector)) - ) + (end-pt (new 'stack-no-clear 'vector))) 0.0 0.0 ;; walls - (let ((result (ray-cylinder-intersect - probe-origin - probe-dir - (-> this origin) - (-> this axis) - (-> this radius) - (-> this length) - gp-0 - ) - ) - ) + (let ((result (ray-cylinder-intersect probe-origin probe-dir (-> this origin) (-> this axis) (-> this radius) (-> this length) gp-0))) ;; one end cap - (let ((u-origin-circle - (ray-arbitrary-circle-intersect probe-origin probe-dir (-> this origin) (-> this axis) (-> this radius)) - ) - ) + (let ((u-origin-circle (ray-arbitrary-circle-intersect probe-origin probe-dir (-> this origin) (-> this axis) (-> this radius)))) (when (and (>= u-origin-circle 0.0) (or (< result 0.0) (< u-origin-circle result))) (set! result u-origin-circle) - (set! (-> gp-0 quad) (-> this origin quad)) - ) - ) + (set! (-> gp-0 quad) (-> this origin quad)))) ;; get other end cap (vector+float*! end-pt (-> this origin) (-> this axis) (-> this length)) - (let ((u-end-circle (ray-arbitrary-circle-intersect probe-origin probe-dir end-pt (-> this axis) (-> this radius))) - ) + (let ((u-end-circle (ray-arbitrary-circle-intersect probe-origin probe-dir end-pt (-> this axis) (-> this radius)))) (when (and (>= u-end-circle 0.0) (or (< result 0.0) (< u-end-circle result))) (set! result u-end-circle) - (set! (-> gp-0 quad) (-> end-pt quad)) - ) - ) - result - ) - ) - ) + (set! (-> gp-0 quad) (-> end-pt quad)))) + result))) ;; debug draw for cylinder flat. (deftype cylinder-flat-verts (structure) - ((vert vector 10 :inline) - ) - ) - + ((vert vector 10 :inline))) (defmethod debug-draw ((this cylinder-flat) (arg0 vector4w)) (local-vars (sv-448 vector) (sv-464 int)) (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (let ((s1-0 (new 'stack-no-clear 'vector)) - (s0-0 (new 'stack-no-clear 'vector)) - ) + (s0-0 (new 'stack-no-clear 'vector))) (if (< 0.999 (fabs (-> this axis y))) - (vector-cross! s1-0 (-> this axis) (new 'static 'vector :z 1.0)) - (vector-cross! s1-0 (-> this axis) (new 'static 'vector :y 1.0)) - ) + (vector-cross! s1-0 (-> this axis) (new 'static 'vector :z 1.0)) + (vector-cross! s1-0 (-> this axis) (new 'static 'vector :y 1.0))) (vector-normalize! s1-0 (-> this radius)) (vector-float*! s0-0 (-> this axis) (* 0.14285715 (-> this length))) (let ((s5-0 (new 'stack-no-clear 'cylinder-flat-verts)) (s4-0 (new 'stack-no-clear 'cylinder-flat-verts)) - (s3-0 (new 'stack-no-clear 'matrix)) - ) + (s3-0 (new 'stack-no-clear 'matrix))) (matrix-axis-angle! s3-0 (-> this axis) 4096.0) (set! sv-448 (new 'stack-no-clear 'vector)) (vector-matrix*! sv-448 (-> this origin) s3-0) @@ -268,32 +175,19 @@ (.lvf vf5 (&-> sv-448 quad)) (.mov.vf vf6 vf0 :mask #b1000) (.sub.vf vf6 vf4 vf5 :mask #b111) - (.svf (&-> v1-5 quad) vf6) - ) + (.svf (&-> v1-5 quad) vf6)) (set! sv-464 0) (while (< sv-464 8) (vector+! (-> s5-0 vert (+ sv-464 1)) (-> this origin) s1-0) (vector+float*! (-> s5-0 vert (+ sv-464 1)) (-> s5-0 vert (+ sv-464 1)) s0-0 (the float sv-464)) - (set! sv-464 (+ sv-464 1)) - ) + (set! sv-464 (+ sv-464 1))) (set! (-> s5-0 vert 0 quad) (-> this origin quad)) (vector+float*! (-> s5-0 vert 9) (-> this origin) (-> this axis) (-> this length)) (dotimes (s2-1 16) (dotimes (s1-1 10) (vector-matrix*! (-> s4-0 vert s1-1) (-> s5-0 vert s1-1) s3-0) (camera-line (-> s5-0 vert s1-1) (-> s4-0 vert s1-1) arg0) - (if (nonzero? s1-1) - (camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0) - ) - ) - (let ((v1-43 s5-0)) - (set! s5-0 s4-0) - (set! s4-0 v1-43) - ) - ) - ) - ) + (if (nonzero? s1-1) (camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0))) + (let ((v1-43 s5-0)) (set! s5-0 s4-0) (set! s4-0 v1-43))))) 0 - (none) - ) - ) + (none))) diff --git a/goal_src/jak1/engine/geometry/geometry-h.gc b/goal_src/jak1/engine/geometry/geometry-h.gc index d65a39ce39..3a4bfa3ee9 100644 --- a/goal_src/jak1/engine/geometry/geometry-h.gc +++ b/goal_src/jak1/engine/geometry/geometry-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") - -;; name: geometry-h.gc -;; name in dgo: geometry-h -;; dgos: GAME, ENGINE - (defconstant MAX_CURVE_CONTROL_POINTS 256) + (defun-extern quaternion-from-two-vectors-max-angle! quaternion vector vector float quaternion) ;; DECOMP BEGINS @@ -16,24 +11,19 @@ ;; A 3 dimensional polynomial spline with arbitrarily placed knot points ;; It's used for camera paths and similar and can be generated by offline tools. (deftype curve (structure) - ((cverts (inline-array vector)) - (num-cverts int32) - (knots (pointer float)) - (num-knots int32) - (length float) - ) - ) + ((cverts (inline-array vector)) + (num-cverts int32) + (knots (pointer float)) + (num-knots int32) + (length float))) ;; unused plane type that would likely trigger some action on crossing. (deftype border-plane (basic) - ((name symbol) - (action basic) - (slot int8) - (trans vector :inline) - (normal vector :inline) - ) + ((name symbol) + (action basic) + (slot int8) + (trans vector :inline) + (normal vector :inline)) (:methods - (debug-draw! (_type_) none) - (point-past-plane? (_type_ vector) symbol) - ) - ) + (debug-draw! (_type_) none) + (point-past-plane? (_type_ vector) symbol))) diff --git a/goal_src/jak1/engine/geometry/geometry.gc b/goal_src/jak1/engine/geometry/geometry.gc index 191e81f5df..b5c182b8f7 100644 --- a/goal_src/jak1/engine/geometry/geometry.gc +++ b/goal_src/jak1/engine/geometry/geometry.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/geometry/geometry-h.gc") (require "engine/math/quaternion.gc") (require "engine/gfx/font.gc") -;; name: geometry.gc -;; name in dgo: geometry -;; dgos: GAME, ENGINE - ;; Geometry functions are common vector/plane utilities + the "curve" stuff (defun vector-flatten! ((dst vector) (src vector) (plane-normal vector)) @@ -19,8 +14,7 @@ (vf0 :class vf) (vf1 :class vf) ;; src (vf2 :class vf) ;; normal - (vf3 :class vf) - ) + (vf3 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> src quad)) (.lvf vf2 (&-> plane-normal quad)) @@ -32,9 +26,7 @@ (.outer.product.a.vf acc vf2 vf3) (.outer.product.b.vf vf3 vf3 vf2 acc) (.svf (&-> dst quad) vf3) - dst - ) - ) + dst)) (defun vector-reflect! ((dst vector) (src vector) (plane-normal vector)) "Reflect a vector off of a plane." @@ -42,8 +34,7 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) ;; we want to split the vector into normal / tangent components. ;; let src = T + N, where T dot plane-normal = 0. ;; then the reflection is T - N = 2 * T - src. @@ -60,9 +51,7 @@ (.add.vf acc vf3 vf3 :mask #b111) ;; double that part (.sub.mul.w.vf vf3 vf1 vf0 acc :mask #b111) ;; and subtract the original (.svf (&-> dst quad) vf3) - dst - ) - ) + dst)) (defun vector-reflect-flat! ((dst vector) (src vector) (plane-normal vector)) "This is a weird one. It doesn't care about the value of src dot normal @@ -75,8 +64,7 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> src quad)) (.lvf vf2 (&-> plane-normal quad)) @@ -88,9 +76,7 @@ (.outer.product.b.vf vf3 vf3 vf2 acc) (.add.vf vf3 vf3 vf2 :mask #b111) ;; add normal to that. (.svf (&-> dst quad) vf3) - dst - ) - ) + dst)) (defun vector-reflect-true-flat! ((dst vector) (src vector) (plane-normal vector)) "Not really a reflect. Same as flatten" @@ -98,8 +84,7 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> src quad)) (.lvf vf2 (&-> plane-normal quad)) @@ -109,9 +94,7 @@ (.outer.product.a.vf acc vf2 vf3) (.outer.product.b.vf vf3 vf3 vf2 acc) (.svf (&-> dst quad) vf3) - dst - ) - ) + dst)) (defun vector-reflect-flat-above! ((dst vector) (src vector) (plane-normal vector)) "A hacked up version of reflect, probably to make their collision system work. @@ -121,8 +104,7 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> src quad)) (.lvf vf2 (&-> plane-normal quad)) @@ -132,19 +114,13 @@ (.outer.product.a.vf acc vf2 vf3) (.outer.product.b.vf vf3 vf3 vf2 acc) (.svf (&-> dst quad) vf3) - ;; dst is now the normal part of src (let* ((f0-0 (vector-length dst)) ;; len of normal component (f1-1 (vector-dot dst plane-normal)) ;; always zero? ;; f1-3 = .02 * length of normal. f1-2 is always zero here - (f1-2 (- (* 0.02 f0-0) f1-1)) - ) - + (f1-2 (- (* 0.02 f0-0) f1-1))) ;; scale down and limit the normal component - (vector+float*! dst dst plane-normal (fmin 16384.0 (* 16.0 f1-2))) - ) - ) - ) + (vector+float*! dst dst plane-normal (fmin 16384.0 (* 16.0 f1-2)))))) (defun vector-segment-distance-point! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) "Compute the distance from a point to the closest point on the line segment. @@ -161,8 +137,7 @@ (vf5 :class vf) (vf6 :class vf) (vf7 :class vf) - (vf8 :class vf) - ) + (vf8 :class vf)) (init-vf0-vector) (nop!) (.lvf vf3 (&-> arg1 quad)) @@ -193,12 +168,7 @@ (b! (< f0-0 f1-0) cfg-4 :likely-delay (set! f0-0 f1-0)) (b! (< f2-0 f0-0) cfg-4 :likely-delay (set! f0-0 f2-0)) (label cfg-4) - (let ((v1-2 f0-0)) - (.mov vf7 v1-2) - ) - ) - ) - ) + (let ((v1-2 f0-0)) (.mov vf7 v1-2))))) (.mul.x.vf vf1 vf1 vf7) (b! (= arg3 #f) cfg-6 :delay (.mov.vf vf8 vf0 :mask #b1000)) (.add.vf vf8 vf3 vf1 :mask #b111) @@ -214,9 +184,7 @@ (.add.vf vf2 vf0 Q :mask #b1) (.nop.vf) (.mov v0-0 vf2) - v0-0 - ) - ) + v0-0)) (defun vector-line-distance ((arg0 vector) (arg1 vector) (arg2 vector)) "Weird function: given a point arg1, and an infinite line connecting arg2 and arg1, compute the distance @@ -224,25 +192,17 @@ (let* ((a1-3 (vector-normalize! (vector-! (new-stack-vector0) arg2 arg1) 1.0)) (gp-1 (vector-! (new-stack-vector0) arg0 arg1)) (f0-1 (vector-dot a1-3 gp-1)) - (v1-3 (vector-float*! (new-stack-vector0) a1-3 f0-1)) - ) - (vector-length (vector-! (new-stack-vector0) gp-1 v1-3)) - ) - ) + (v1-3 (vector-float*! (new-stack-vector0) a1-3 f0-1))) + (vector-length (vector-! (new-stack-vector0) gp-1 v1-3)))) (defun vector-line-distance-point! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) "Same as above function, but returns the point on arg2/arg1 in arg3 (ignored if #f)" (let* ((a1-3 (vector-normalize! (vector-! (new-stack-vector0) arg2 arg1) 1.0)) (s4-1 (vector-! (new-stack-vector0) arg0 arg1)) (f0-1 (vector-dot a1-3 s4-1)) - (v1-4 (vector-float*! (new-stack-vector0) a1-3 f0-1)) - ) - (if arg3 - (vector+! arg3 arg1 v1-4) - ) - (vector-length (vector-! (new-stack-vector0) s4-1 v1-4)) - ) - ) + (v1-4 (vector-float*! (new-stack-vector0) a1-3 f0-1))) + (if arg3 (vector+! arg3 arg1 v1-4)) + (vector-length (vector-! (new-stack-vector0) s4-1 v1-4)))) (defun vector-orient-by-quat! ((arg0 vector) (arg1 vector) (arg2 quaternion)) "Rotate a vector by a quaternion." @@ -253,8 +213,7 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg2 vec quad)) (.lvf vf6 (&-> arg1 quad)) @@ -285,9 +244,7 @@ (.add.mul.y.vf acc vf3 vf6 acc) (.add.mul.z.vf vf6 vf4 vf6 acc) (.svf (&-> arg0 quad) vf6) - arg0 - ) - ) + arg0)) ;; The "forward down" function take a direction for forward (+z) and down (-y) ;; and convert to a transform. @@ -307,8 +264,7 @@ (set! (-> arg0 vector 1 w) 0.0) (set! (-> arg0 vector 2 w) 0.0) (set! (-> arg0 vector 3 w) 1.0) - arg0 - ) + arg0) (defun forward-down-nopitch->inv-matrix ((arg0 matrix) (arg1 vector) (arg2 vector)) "Create a matrix representing an inverse transform where arg1 is forward (+z) and arg2 is down (-y). Will not use the pitch of forward" @@ -316,83 +272,55 @@ (vector-negate! (-> arg0 vector 1) (-> arg0 vector 1)) (vector-cross! (the-as vector (-> arg0 vector)) (-> arg0 vector 1) arg1) (vector-normalize! (the-as vector (-> arg0 vector)) 1.0) - (vector-cross! - (-> arg0 vector 2) - (the-as vector (-> arg0 vector)) - (-> arg0 vector 1) - ) + (vector-cross! (-> arg0 vector 2) (the-as vector (-> arg0 vector)) (-> arg0 vector 1)) (vector-normalize! (-> arg0 vector 2) 1.0) (set! (-> arg0 vector 3 quad) (the-as uint128 0)) (set! (-> arg0 vector 0 w) 0.0) (set! (-> arg0 vector 1 w) 0.0) (set! (-> arg0 vector 2 w) 0.0) (set! (-> arg0 vector 3 w) 1.0) - arg0 - ) + arg0) (defun forward-up-nopitch->inv-matrix ((arg0 matrix) (arg1 vector) (arg2 vector)) "Create a matrix representing an inverse transform where arg1 is forward (+z) and arg2 is up (+y). Will not use the pitch of forward" - (forward-down-nopitch->inv-matrix arg0 arg1 (vector-negate! (new-stack-vector0) arg2)) - ) + (forward-down-nopitch->inv-matrix arg0 arg1 (vector-negate! (new-stack-vector0) arg2))) (defun forward-up-nopitch->quaternion ((arg0 quaternion) (arg1 vector) (arg2 vector)) "Create a quaternion representing a transform where arg1 is forward (+z) and arg2 is up (+y). Will not use the pitch of forward" - (matrix->quaternion arg0 (forward-up-nopitch->inv-matrix (new-stack-matrix0) arg1 arg2)) - ) + (matrix->quaternion arg0 (forward-up-nopitch->inv-matrix (new-stack-matrix0) arg1 arg2))) (defun forward-up->quaternion ((arg0 quaternion) (arg1 vector) (arg2 vector)) "Create a quaternion representing a transform where arg1 is forward (+z) and arg2 is up (+y). Will use the pitch of forward" (matrix->quaternion arg0 - (forward-down->inv-matrix - (new-stack-matrix0) - arg1 - (vector-negate! (new 'stack-no-clear 'vector) arg2) - ) - ) - ) + (forward-down->inv-matrix (new-stack-matrix0) arg1 (vector-negate! (new 'stack-no-clear 'vector) arg2)))) (defun quaternion-from-two-vectors! ((arg0 quaternion) (arg1 vector) (arg2 vector)) "Create a quaternion representing the rotation between two vectors" (let* ((s5-0 (vector-cross! (new-stack-vector0) arg1 arg2)) (f0-0 (vector-length s5-0)) - (f1-1 (vector-dot arg1 arg2)) - ) + (f1-1 (vector-dot arg1 arg2))) (let ((f0-1 (/ (sqrtf (* 0.5 (- 1.0 f1-1))) f0-0))) (set! (-> arg0 x) (* (-> s5-0 x) f0-1)) (set! (-> arg0 y) (* (-> s5-0 y) f0-1)) - (set! (-> arg0 z) (* (-> s5-0 z) f0-1)) - ) - (set! (-> arg0 w) (sqrtf (* 0.5 (+ 1.0 f1-1)))) - ) - arg0 - ) + (set! (-> arg0 z) (* (-> s5-0 z) f0-1))) + (set! (-> arg0 w) (sqrtf (* 0.5 (+ 1.0 f1-1))))) + arg0) (defun quaternion-from-two-vectors-max-angle! ((arg0 quaternion) (arg1 vector) (arg2 vector) (arg3 float)) "Create a quaternion representing the rotation between two vectors, allowing at most a rotation of arg3 degrees" (let* ((s5-0 (vector-cross! (new-stack-vector0) arg1 arg2)) (f30-0 (vector-length s5-0)) (f26-0 (vector-dot arg1 arg2)) - (f28-0 (sqrtf (* 0.5 (- 1.0 f26-0)))) - ) + (f28-0 (sqrtf (* 0.5 (- 1.0 f26-0))))) (let ((f0-5 (sin (* 0.5 arg3)))) (cond - ((< f0-5 f28-0) - (set! f28-0 f0-5) - (set! (-> arg0 w) (cos (* 0.5 arg3))) - ) - (else - (set! (-> arg0 w) (sqrtf (* 0.5 (+ 1.0 f26-0)))) - ) - ) - ) + ((< f0-5 f28-0) (set! f28-0 f0-5) (set! (-> arg0 w) (cos (* 0.5 arg3)))) + (else (set! (-> arg0 w) (sqrtf (* 0.5 (+ 1.0 f26-0))))))) (let ((f0-12 (/ f28-0 f30-0))) (set! (-> arg0 x) (* (-> s5-0 x) f0-12)) (set! (-> arg0 y) (* (-> s5-0 y) f0-12)) - (set! (-> arg0 z) (* (-> s5-0 z) f0-12)) - ) - ) - arg0 - ) + (set! (-> arg0 z) (* (-> s5-0 z) f0-12)))) + arg0) (defun matrix-from-two-vectors! ((arg0 matrix) (arg1 vector) (arg2 vector)) "Create a rotation matrix representing the rotation between two vectors" @@ -400,38 +328,24 @@ (f0-1 (vector-dot arg1 arg2)) (f1-0 1.0) (f2-0 f0-1) - (f1-2 (sqrtf (- f1-0 (* f2-0 f2-0)))) - ) - (matrix-axis-sin-cos! arg0 a1-3 f1-2 f0-1) - ) - ) + (f1-2 (sqrtf (- f1-0 (* f2-0 f2-0))))) + (matrix-axis-sin-cos! arg0 a1-3 f1-2 f0-1))) (defun matrix-from-two-vectors-max-angle! ((arg0 matrix) (arg1 vector) (arg2 vector) (arg3 float)) "Create a rotation matrix representing the rotation between two vectors, allowing at most a rotation of arg3 degrees" - (let - ((s4-1 (vector-normalize! (vector-cross! (new-stack-vector0) arg2 arg1) 1.0)) - (f30-0 (vector-dot arg1 arg2)) - (f28-0 (cos arg3)) - ) + (let ((s4-1 (vector-normalize! (vector-cross! (new-stack-vector0) arg2 arg1) 1.0)) + (f30-0 (vector-dot arg1 arg2)) + (f28-0 (cos arg3))) (cond - ((< f30-0 f28-0) - (matrix-axis-sin-cos! arg0 s4-1 (sin arg3) f28-0) - ) + ((< f30-0 f28-0) (matrix-axis-sin-cos! arg0 s4-1 (sin arg3) f28-0)) (else ;; todo looks bad because of inline (square x) (let ((t9-5 matrix-axis-sin-cos!) (a0-6 arg0) (a1-4 s4-1) (f0-1 1.0) - (f1-0 f30-0) - ) - (t9-5 a0-6 a1-4 (sqrtf (- f0-1 (* f1-0 f1-0))) f30-0) - ) - ) - ) - ) - ) - + (f1-0 f30-0)) + (t9-5 a0-6 a1-4 (sqrtf (- f0-1 (* f1-0 f1-0))) f30-0)))))) ;; ;; note: these two interpolation functions may be equivalent to slerp. @@ -442,49 +356,31 @@ (let* ((s4-1 (vector-normalize! (vector-cross! (new-stack-vector0) arg2 arg1) 1.0)) (f28-0 (vector-dot arg1 arg2)) (f30-0 (cos arg3)) - (f0-2 (+ 1.0 (* (+ -1.0 f28-0) arg4))) - ) + (f0-2 (+ 1.0 (* (+ -1.0 f28-0) arg4)))) (cond - ((< f0-2 f30-0) - (matrix-axis-sin-cos! arg0 s4-1 (sin arg3) f30-0) - ) + ((< f0-2 f30-0) (matrix-axis-sin-cos! arg0 s4-1 (sin arg3) f30-0)) (else ;; todo looks bad because of inline (square x) (let ((t9-5 matrix-axis-sin-cos!) (a0-6 arg0) (a1-4 s4-1) (f1-3 1.0) - (f2-1 f0-2) - ) - (t9-5 a0-6 a1-4 (sqrtf (- f1-3 (* f2-1 f2-1))) f0-2) - ) - ) - ) - ) - ) + (f2-1 f0-2)) + (t9-5 a0-6 a1-4 (sqrtf (- f1-3 (* f2-1 f2-1))) f0-2)))))) (defun matrix-from-two-vectors-partial-linear! ((arg0 matrix) (arg1 vector) (arg2 vector) (arg3 float)) "Create a rotation matrix representing doing arg3 fraction of the rotation between two vectors" (let ((gp-1 (vector-normalize! (vector-cross! (new-stack-vector0) arg2 arg1) 1.0)) - (f0-1 (vector-dot arg1 arg2)) - ) + (f0-1 (vector-dot arg1 arg2))) (cond - ((< 0.9999 (fabs f0-1)) - (matrix-identity! arg0) - ) + ((< 0.9999 (fabs f0-1)) (matrix-identity! arg0)) (else (let* ((f0-4 (cos (* arg3 (acos f0-1)))) (t9-5 matrix-axis-sin-cos!) (a0-6 arg0) (f1-1 1.0) - (f2-1 f0-4) - ) - (t9-5 a0-6 gp-1 (sqrtf (- f1-1 (* f2-1 f2-1))) f0-4) - ) - ) - ) - ) - ) + (f2-1 f0-4)) + (t9-5 a0-6 gp-1 (sqrtf (- f1-1 (* f2-1 f2-1))) f0-4)))))) (defun matrix-remove-z-rot ((arg0 matrix) (arg1 matrix)) "Remove the z rotation component of a rotation." @@ -499,130 +395,77 @@ (when (< f30-0 0.99999) (vector-cross! s4-0 (-> arg0 vector 1) s4-0) (let ((f0-4 (vector-length s4-0))) - (if (< 0.0 (vector-dot s4-0 (-> arg0 vector 2))) - (set! f0-4 (- f0-4)) - ) - (matrix-axis-sin-cos! s5-0 (-> arg0 vector 2) f0-4 f30-0) - ) - (matrix*! arg0 arg0 s5-0) - ) - ) - ) - ) - arg0 - ) + (if (< 0.0 (vector-dot s4-0 (-> arg0 vector 2))) (set! f0-4 (- f0-4))) + (matrix-axis-sin-cos! s5-0 (-> arg0 vector 2) f0-4 f30-0)) + (matrix*! arg0 arg0 s5-0))))) + arg0) (defun matrix-rot-diff! ((arg0 vector) (arg1 matrix) (arg2 matrix)) "Get the difference of rotation between two matrices, expressed as a quaternion." (let ((s3-0 (new-stack-quaternion0)) (s2-0 (new-stack-quaternion0)) - (s5-0 (new-stack-quaternion0)) - ) + (s5-0 (new-stack-quaternion0))) 0.0 (matrix->quaternion s3-0 arg1) (matrix->quaternion s2-0 arg2) (quaternion-conjugate! s5-0 s3-0) (quaternion*! s5-0 s2-0 s5-0) (quaternion-normalize! s5-0) - (if (< (-> s5-0 w) 0.0) - (quaternion-negate! s5-0 s5-0) - ) + (if (< (-> s5-0 w) 0.0) (quaternion-negate! s5-0 s5-0)) (let ((f30-1 (* 2.0 (acos (-> s5-0 w))))) (set! (-> arg0 quad) (-> s5-0 vec quad)) (vector-negate! arg0 arg0) - (if (= (vector-normalize-ret-len! arg0 1.0) 0.0) - (set! (-> arg0 y) 1.0) - ) - f30-1 - ) - ) - ) - + (if (= (vector-normalize-ret-len! arg0 1.0) 0.0) (set! (-> arg0 y) 1.0)) + f30-1))) (defun quaternion-seek ((arg0 quaternion) (arg1 quaternion) (arg2 quaternion) (arg3 float) (arg4 float)) "Strange quaternion rotate toward function. Arg3 is ignored. Arg4 is the max seek amount." (let ((s5-0 (new-stack-matrix0)) - (s4-0 (new-stack-matrix0)) - ) + (s4-0 (new-stack-matrix0))) (quaternion->matrix s5-0 arg1) (quaternion->matrix s4-0 arg2) (let ((s2-1 (new-stack-quaternion0))) - (quaternion-from-two-vectors-max-angle! - s2-1 - (-> s5-0 vector 2) - (-> s4-0 vector 2) - arg4 - ) - (quaternion-normalize! (quaternion*! arg0 arg0 s2-1)) - ) - ) - ) + (quaternion-from-two-vectors-max-angle! s2-1 (-> s5-0 vector 2) (-> s4-0 vector 2) arg4) + (quaternion-normalize! (quaternion*! arg0 arg0 s2-1))))) (defun vector-deg-seek ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) "Make one vector closer to another, doing at most a rotation by arg3 degrees." (let ((s4-0 (new-stack-matrix0))) (matrix-from-two-vectors-max-angle! s4-0 arg1 arg2 arg3) - (vector-matrix*! arg0 arg1 s4-0) - ) - ) + (vector-matrix*! arg0 arg1 s4-0))) (defun vector-deg-slerp ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) "Slerp for vectors. (imagine that they are the z axis of two frames)" (cond - ((>= 0.0 arg3) - (set! (-> arg0 quad) (-> arg1 quad)) - arg0 - ) - ((>= arg3 1.0) - (set! (-> arg0 quad) (-> arg2 quad)) - arg0 - ) + ((>= 0.0 arg3) (set! (-> arg0 quad) (-> arg1 quad)) arg0) + ((>= arg3 1.0) (set! (-> arg0 quad) (-> arg2 quad)) arg0) (else (let ((s1-0 (new-stack-matrix0))) - (let - ((s2-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)) - (a2-3 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg2 1.0)) - ) - (matrix-from-two-vectors-partial-linear! s1-0 s2-0 a2-3 arg3) - ) - (vector-matrix*! arg0 arg1 s1-0) - ) - ) - ) - ) + (let ((s2-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)) + (a2-3 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg2 1.0))) + (matrix-from-two-vectors-partial-linear! s1-0 s2-0 a2-3 arg3)) + (vector-matrix*! arg0 arg1 s1-0))))) (defun vector-vector-deg-slerp! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float) (arg4 vector)) "unused. no clue what this does." (local-vars (sv-112 (function float float float float))) (cond - ((>= 0.0 arg3) - (set! (-> arg0 quad) (-> arg1 quad)) - ) - ((>= arg3 1.0) - (set! (-> arg0 quad) (-> arg2 quad)) - ) + ((>= 0.0 arg3) (set! (-> arg0 quad) (-> arg1 quad))) + ((>= arg3 1.0) (set! (-> arg0 quad) (-> arg2 quad))) (else - (let* - ((s0-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)) - (s1-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg2 1.0)) - (s0-1 (forward-up->quaternion (new 'stack-no-clear 'quaternion) s0-0 arg4)) - (a2-5 (forward-up->quaternion (new 'stack-no-clear 'quaternion) s1-0 arg4)) - (a1-6 (quaternion-slerp! (new 'stack-no-clear 'quaternion) s0-1 a2-5 arg3)) - (s2-1 vector-normalize-copy!) - (s1-1 arg0) - (s0-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) a1-6)) - ) + (let* ((s0-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg1 1.0)) + (s1-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg2 1.0)) + (s0-1 (forward-up->quaternion (new 'stack-no-clear 'quaternion) s0-0 arg4)) + (a2-5 (forward-up->quaternion (new 'stack-no-clear 'quaternion) s1-0 arg4)) + (a1-6 (quaternion-slerp! (new 'stack-no-clear 'quaternion) s0-1 a2-5 arg3)) + (s2-1 vector-normalize-copy!) + (s1-1 arg0) + (s0-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) a1-6))) (set! sv-112 lerp) (let ((s3-1 (vector-length arg1)) - (a1-7 (vector-length arg2)) - ) - (s2-1 s1-1 s0-2 (sv-112 s3-1 a1-7 arg3)) - ) - ) - ) - ) - arg0 - ) + (a1-7 (vector-length arg2))) + (s2-1 s1-1 s0-2 (sv-112 s3-1 a1-7 arg3)))))) + arg0) (defun normal-of-plane ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) "Given three points on a plane, compute the plane's normal" @@ -633,29 +476,26 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) - (init-vf0-vector) - (.lvf vf3 (&-> arg2 quad)) - (.lvf vf1 (&-> arg1 quad)) - (.lvf vf2 (&-> arg3 quad)) - (.sub.vf vf1 vf3 vf1) - (.sub.vf vf2 vf3 vf2) - (.outer.product.a.vf acc vf2 vf1) - (.outer.product.b.vf vf4 vf1 vf2 acc) - (.mul.vf vf5 vf4 vf4) - (.add.y.vf vf5 vf5 vf5 :mask #b1) - (.add.z.vf vf5 vf5 vf5 :mask #b1) - (.isqrt.vf Q vf0 vf5 :fsf #b11 :ftf #b0) - (.mov.vf vf4 vf0 :mask #b1000) - (.wait.vf) - (.mul.vf vf4 vf4 Q :mask #b111) - (.nop.vf) - (.nop.vf) - (.svf (&-> arg0 quad) vf4) - arg0 - ) - ) + (vf5 :class vf)) + (init-vf0-vector) + (.lvf vf3 (&-> arg2 quad)) + (.lvf vf1 (&-> arg1 quad)) + (.lvf vf2 (&-> arg3 quad)) + (.sub.vf vf1 vf3 vf1) + (.sub.vf vf2 vf3 vf2) + (.outer.product.a.vf acc vf2 vf1) + (.outer.product.b.vf vf4 vf1 vf2 acc) + (.mul.vf vf5 vf4 vf4) + (.add.y.vf vf5 vf5 vf5 :mask #b1) + (.add.z.vf vf5 vf5 vf5 :mask #b1) + (.isqrt.vf Q vf0 vf5 :fsf #b11 :ftf #b0) + (.mov.vf vf4 vf0 :mask #b1000) + (.wait.vf) + (.mul.vf vf4 vf4 Q :mask #b111) + (.nop.vf) + (.nop.vf) + (.svf (&-> arg0 quad) vf4) + arg0)) (defun vector-3pt-cross! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) "Cross product of 2 - 1 and 3 - 1. (will give a normal to the plane, but not of magnitude 1)" @@ -664,8 +504,7 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg1 quad)) (.lvf vf2 (&-> arg2 quad)) @@ -676,23 +515,12 @@ (.outer.product.a.vf acc vf2 vf3) (.outer.product.b.vf vf4 vf3 vf2 acc) (.svf (&-> arg0 quad) vf4) - arg0 - ) - ) + arg0)) (defun closest-pt-in-triangle ((arg0 vector) (arg1 vector) (arg2 matrix) (arg3 vector)) "arg2 is the vertices of the triangle, arg3 is the normal, arg1 is the input point, arg0 is the output." ;; (declare (print-asm)) - (local-vars - (v1-0 uint) - (v1-4 uint) - (v1-5 uint) - (v1-6 uint) - (v1-7 uint) - (v1-10 uint) - (a0-1 uint) - (a1-1 uint) - ) + (local-vars (v1-0 uint) (v1-4 uint) (v1-5 uint) (v1-6 uint) (v1-7 uint) (v1-10 uint) (a0-1 uint) (a1-1 uint)) (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) @@ -712,8 +540,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (nop!) (nop!) @@ -753,10 +580,8 @@ (a0-2 (shr (the-as int a0-1) 63)) (a1-3 (* a1-2 2)) (a0-3 (* a0-2 4)) - (v1-3 (logior (logior v1-1 a1-3) a0-3)) - ) - (b! (nonzero? v1-3) cfg-3 :delay (set! v1-4 (the-as uint (+ v1-3 -1)))) - ) + (v1-3 (logior (logior v1-1 a1-3) a0-3))) + (b! (nonzero? v1-3) cfg-3 :delay (set! v1-4 (the-as uint (+ v1-3 -1))))) (.sub.vf vf17 vf5 vf2) (.mov.vf vf18 vf0 :mask #b1000) (.outer.product.a.vf acc vf17 vf1) @@ -768,103 +593,38 @@ (nop!) (label cfg-3) (b! (nonzero? v1-4) cfg-6 :delay (set! v1-5 (the-as uint (+ v1-4 -1)))) - (vector-segment-distance-point! - arg1 - (the-as vector (-> arg2 vector)) - (-> arg2 vector 1) - arg0 - ) + (vector-segment-distance-point! arg1 (the-as vector (-> arg2 vector)) (-> arg2 vector 1) arg0) (goto cfg-24) (label cfg-6) (b! (nonzero? v1-5) cfg-9 :delay (set! v1-6 (the-as uint (+ v1-5 -1)))) - (vector-segment-distance-point! - arg1 - (-> arg2 vector 1) - (-> arg2 vector 2) - arg0 - ) + (vector-segment-distance-point! arg1 (-> arg2 vector 1) (-> arg2 vector 2) arg0) (goto cfg-24) (label cfg-9) (b! (nonzero? v1-6) cfg-14 :delay (set! v1-7 (the-as uint (+ v1-6 -1)))) - (let ((f30-0 (vector-segment-distance-point! - arg1 - (-> arg2 vector 1) - (the-as vector (-> arg2 vector)) - arg0 - ) - ) - (s3-0 (new 'stack-no-clear 'vector)) - ) - (if (< (vector-segment-distance-point! - arg1 - (-> arg2 vector 1) - (-> arg2 vector 2) - s3-0 - ) - f30-0 - ) - (set! (-> arg0 quad) (-> s3-0 quad)) - ) - ) + (let ((f30-0 (vector-segment-distance-point! arg1 (-> arg2 vector 1) (the-as vector (-> arg2 vector)) arg0)) + (s3-0 (new 'stack-no-clear 'vector))) + (if (< (vector-segment-distance-point! arg1 (-> arg2 vector 1) (-> arg2 vector 2) s3-0) f30-0) + (set! (-> arg0 quad) (-> s3-0 quad)))) (goto cfg-24) (label cfg-14) (b! (nonzero? v1-7) cfg-17 :delay (set! v1-10 (the-as uint (+ v1-7 -1)))) - (vector-segment-distance-point! - arg1 - (-> arg2 vector 2) - (the-as vector (-> arg2 vector)) - arg0 - ) + (vector-segment-distance-point! arg1 (-> arg2 vector 2) (the-as vector (-> arg2 vector)) arg0) (goto cfg-24) (label cfg-17) (b! (nonzero? v1-10) cfg-22) - (let ((f30-1 (vector-segment-distance-point! - arg1 - (the-as vector (-> arg2 vector)) - (-> arg2 vector 1) - arg0 - ) - ) - (s3-1 (new 'stack-no-clear 'vector)) - ) - (if (< (vector-segment-distance-point! - arg1 - (the-as vector (-> arg2 vector)) - (-> arg2 vector 2) - s3-1 - ) - f30-1 - ) - (set! (-> arg0 quad) (-> s3-1 quad)) - ) - ) + (let ((f30-1 (vector-segment-distance-point! arg1 (the-as vector (-> arg2 vector)) (-> arg2 vector 1) arg0)) + (s3-1 (new 'stack-no-clear 'vector))) + (if (< (vector-segment-distance-point! arg1 (the-as vector (-> arg2 vector)) (-> arg2 vector 2) s3-1) f30-1) + (set! (-> arg0 quad) (-> s3-1 quad)))) (goto cfg-24) (label cfg-22) - (let ((f30-2 (vector-segment-distance-point! - arg1 - (-> arg2 vector 2) - (the-as vector (-> arg2 vector)) - arg0 - ) - ) - (s3-2 (new 'stack-no-clear 'vector)) - ) - (if (< (vector-segment-distance-point! - arg1 - (-> arg2 vector 2) - (-> arg2 vector 1) - s3-2 - ) - f30-2 - ) - (set! (-> arg0 quad) (-> s3-2 quad)) - ) - ) + (let ((f30-2 (vector-segment-distance-point! arg1 (-> arg2 vector 2) (the-as vector (-> arg2 vector)) arg0)) + (s3-2 (new 'stack-no-clear 'vector))) + (if (< (vector-segment-distance-point! arg1 (-> arg2 vector 2) (-> arg2 vector 1) s3-2) f30-2) + (set! (-> arg0 quad) (-> s3-2 quad)))) (label cfg-24) 0 - (none) - ) - ) + (none))) (defun point-in-triangle-cross ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 vector)) "Check if point is in the triangle using cross product check (so you have to get the order of points right)" @@ -879,105 +639,67 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) - (.lvf vf3 (&-> arg3 quad)) - (.lvf vf4 (&-> arg4 quad)) - (.lvf vf5 (&-> arg0 quad)) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg1 quad)) - (.sub.vf vf6 vf3 vf4) - (.sub.vf vf7 vf3 vf5) - (.sub.vf vf8 vf3 vf2) - (.sub.vf vf9 vf5 vf4) - (.sub.vf vf10 vf5 vf2) - (.outer.product.a.vf acc vf6 vf7) - (.outer.product.b.vf vf2 vf7 vf6 acc) - (.outer.product.a.vf acc vf7 vf8) - (.outer.product.b.vf vf3 vf8 vf7 acc) - (.outer.product.a.vf acc vf9 vf10) - (.outer.product.b.vf vf4 vf10 vf9 acc) - (.mul.vf vf2 vf2 vf1) - (.mul.vf vf3 vf3 vf1) - (.nop.vf) - (.mul.vf vf4 vf4 vf1) - (.add.x.vf vf2 vf2 vf2 :mask #b10) - (.add.x.vf vf3 vf3 vf3 :mask #b10) - (.add.x.vf vf4 vf4 vf4 :mask #b10) - (.nop.vf) - (.add.z.vf vf2 vf2 vf2 :mask #b10) - (.add.z.vf vf3 vf3 vf3 :mask #b10) - (.add.z.vf vf4 vf4 vf4 :mask #b10) - (.nop.vf) - (.mov a0-1 vf2) - (.mov a1-1 vf3) - (.mov v1-0 vf4) - (>= (the-as int (logior (logior a0-1 a1-1) v1-0)) 0) - ) - ) + (vf9 :class vf)) + (.lvf vf3 (&-> arg3 quad)) + (.lvf vf4 (&-> arg4 quad)) + (.lvf vf5 (&-> arg0 quad)) + (.lvf vf2 (&-> arg2 quad)) + (.lvf vf1 (&-> arg1 quad)) + (.sub.vf vf6 vf3 vf4) + (.sub.vf vf7 vf3 vf5) + (.sub.vf vf8 vf3 vf2) + (.sub.vf vf9 vf5 vf4) + (.sub.vf vf10 vf5 vf2) + (.outer.product.a.vf acc vf6 vf7) + (.outer.product.b.vf vf2 vf7 vf6 acc) + (.outer.product.a.vf acc vf7 vf8) + (.outer.product.b.vf vf3 vf8 vf7 acc) + (.outer.product.a.vf acc vf9 vf10) + (.outer.product.b.vf vf4 vf10 vf9 acc) + (.mul.vf vf2 vf2 vf1) + (.mul.vf vf3 vf3 vf1) + (.nop.vf) + (.mul.vf vf4 vf4 vf1) + (.add.x.vf vf2 vf2 vf2 :mask #b10) + (.add.x.vf vf3 vf3 vf3 :mask #b10) + (.add.x.vf vf4 vf4 vf4 :mask #b10) + (.nop.vf) + (.add.z.vf vf2 vf2 vf2 :mask #b10) + (.add.z.vf vf3 vf3 vf3 :mask #b10) + (.add.z.vf vf4 vf4 vf4 :mask #b10) + (.nop.vf) + (.mov a0-1 vf2) + (.mov a1-1 vf3) + (.mov v1-0 vf4) + (>= (the-as int (logior (logior a0-1 a1-1) v1-0)) 0))) (defun point-in-plane-<-point+normal! ((arg0 vector) (arg1 vector) (arg2 vector)) "This function looks wrong and is unused." - (let - ((f0-3 - (+ - (+ (* (-> arg2 x) (-> arg1 x)) (* (-> arg2 y) (-> arg1 y))) - (* (-> arg2 z) (-> arg1 z)) - ) - ) - ) - (set! (-> arg0 w) 1.0) - (let ((f1-7 (fabs (-> arg2 x))) - (f2-3 (fabs (-> arg2 y))) - (f3-1 (fabs (-> arg2 z))) - ) - (cond - ((and (< f2-3 f1-7) (< f3-1 f1-7)) - (set! (-> arg0 y) (+ 4096.0 (-> arg1 y))) - (set! (-> arg0 z) (+ 4096.0 (-> arg1 z))) - (set! - (-> arg0 x) - (/ - (+ (- (- (* (-> arg2 y) (-> arg0 y))) (* (-> arg2 z) (-> arg0 z))) f0-3) - (-> arg2 x) - ) - ) - ) - ((and (< f1-7 f2-3) (< f3-1 f2-3)) - (set! (-> arg0 x) (+ 4096.0 (-> arg1 x))) - (set! (-> arg0 z) (+ 4096.0 (-> arg1 z))) - (set! - (-> arg0 y) - (/ - (- (- f0-3 (* (-> arg2 x) (-> arg0 x))) (* (-> arg2 z) (-> arg0 z))) - (-> arg2 y) - ) - ) - ) - (else - (set! (-> arg0 x) (+ 4096.0 (-> arg1 x))) - (set! (-> arg0 y) (+ 4096.0 (-> arg1 y))) - (set! - (-> arg0 z) - (/ - (+ (- (- (* (-> arg2 x) (-> arg0 x))) (* (-> arg2 y) (-> arg0 y))) f0-3) - (-> arg2 z) - ) - ) - ) - ) - ) - ) - arg0 - ) - + (let ((f0-3 (+ (+ (* (-> arg2 x) (-> arg1 x)) (* (-> arg2 y) (-> arg1 y))) (* (-> arg2 z) (-> arg1 z))))) + (set! (-> arg0 w) 1.0) + (let ((f1-7 (fabs (-> arg2 x))) + (f2-3 (fabs (-> arg2 y))) + (f3-1 (fabs (-> arg2 z)))) + (cond + ((and (< f2-3 f1-7) (< f3-1 f1-7)) + (set! (-> arg0 y) (+ 4096.0 (-> arg1 y))) + (set! (-> arg0 z) (+ 4096.0 (-> arg1 z))) + (set! (-> arg0 x) (/ (+ (- (- (* (-> arg2 y) (-> arg0 y))) (* (-> arg2 z) (-> arg0 z))) f0-3) (-> arg2 x)))) + ((and (< f1-7 f2-3) (< f3-1 f2-3)) + (set! (-> arg0 x) (+ 4096.0 (-> arg1 x))) + (set! (-> arg0 z) (+ 4096.0 (-> arg1 z))) + (set! (-> arg0 y) (/ (- (- f0-3 (* (-> arg2 x) (-> arg0 x))) (* (-> arg2 z) (-> arg0 z))) (-> arg2 y)))) + (else + (set! (-> arg0 x) (+ 4096.0 (-> arg1 x))) + (set! (-> arg0 y) (+ 4096.0 (-> arg1 y))) + (set! (-> arg0 z) (/ (+ (- (- (* (-> arg2 x) (-> arg0 x))) (* (-> arg2 y) (-> arg0 y))) f0-3) (-> arg2 z))))))) + arg0) (defun circle-circle-xz-intersect ((arg0 sphere) (arg1 sphere) (arg2 vector) (arg3 vector)) ;; this function is unused and really complicated, so not implementing it for now. (format 0 "circle-circle-xz-intersect~%") (crash!) - 0 - ) + 0) (defun circle-test () "Test the circle-circle-xz-intersect function." @@ -985,19 +707,13 @@ (let ((s4-0 (new 'stack 'sphere)) (a1-2 (new 'stack 'sphere)) (s5-0 (new-stack-vector0)) - (gp-0 (new-stack-vector0)) - ) + (gp-0 (new-stack-vector0))) (set-vector! s4-0 0.0 0.0 0.0 1.0) (set-vector! a1-2 100.0 0.0 0.0 10000.0) - (let ((a2-1 (circle-circle-xz-intersect s4-0 a1-2 s5-0 gp-0))) - (format #t "res = ~d~%" a2-1) - ) + (let ((a2-1 (circle-circle-xz-intersect s4-0 a1-2 s5-0 gp-0))) (format #t "res = ~d~%" a2-1)) (format #t "(~f, ~f)~%" (-> s5-0 x) (-> s5-0 z)) - (format #t "(~f, ~f)~%" (-> gp-0 x) (-> gp-0 z)) - ) - (none) - ) - + (format #t "(~f, ~f)~%" (-> gp-0 x) (-> gp-0 z))) + (none)) (defun vector-circle-tangent-new ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) "Unused." @@ -1007,42 +723,34 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) - (init-vf0-vector) - (let ((a1-2 (new 'stack 'sphere))) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (let ((v1-3 0.5)) - (.lvf vf3 (&-> arg1 quad)) - (.mov vf2 v1-3) - ) - (.lvf vf4 (&-> arg0 quad)) - (.add.vf vf1 vf3 vf4) - (.sub.vf vf5 vf4 vf3) - (.mul.x.vf vf1 vf1 vf2) - (.mul.x.vf vf5 vf5 vf2) - (.mul.vf vf5 vf5 vf5 :mask #b101) - (.add.z.vf vf5 vf5 vf5 :mask #b1) - (.sqrt.vf Q vf5 :ftf #b0) - (.wait.vf) - (.mul.vf vf1 vf0 Q :mask #b1000) - (.nop.vf) - (.nop.vf) - (.svf (&-> a1-2 quad) vf1) - (circle-circle-xz-intersect (the-as sphere arg1) a1-2 arg2 arg3) - ) - 0 - (none) - ) - ) + (vf5 :class vf)) + (init-vf0-vector) + (let ((a1-2 (new 'stack 'sphere))) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (let ((v1-3 0.5)) (.lvf vf3 (&-> arg1 quad)) (.mov vf2 v1-3)) + (.lvf vf4 (&-> arg0 quad)) + (.add.vf vf1 vf3 vf4) + (.sub.vf vf5 vf4 vf3) + (.mul.x.vf vf1 vf1 vf2) + (.mul.x.vf vf5 vf5 vf2) + (.mul.vf vf5 vf5 vf5 :mask #b101) + (.add.z.vf vf5 vf5 vf5 :mask #b1) + (.sqrt.vf Q vf5 :ftf #b0) + (.wait.vf) + (.mul.vf vf1 vf0 Q :mask #b1000) + (.nop.vf) + (.nop.vf) + (.svf (&-> a1-2 quad) vf1) + (circle-circle-xz-intersect (the-as sphere arg1) a1-2 arg2 arg3)) + 0 + (none))) (defun vector-circle-tangent ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) "Also unused." (let* ((s3-1 (vector-! (the-as vector (new 'stack-no-clear 'sphere)) arg1 arg0)) (f0-0 (vector-xz-length s3-1)) - (f28-0 (acos (/ (-> arg1 w) f0-0))) - ) + (f28-0 (acos (/ (-> arg1 w) f0-0)))) (cond ((>= 546.13336 f28-0) ;; 2/15 of a meter... (set! (-> arg2 x) (- (-> arg0 x) (-> s3-1 z))) @@ -1050,32 +758,22 @@ (set! (-> arg2 z) (+ (-> arg0 z) (-> s3-1 x))) (set! (-> arg3 x) (+ (-> arg0 x) (-> s3-1 z))) (set! (-> arg3 y) 0.0) - (set! (-> arg3 z) (- (-> arg0 z) (-> s3-1 x))) - ) + (set! (-> arg3 z) (- (-> arg0 z) (-> s3-1 x)))) (else (let ((f0-15 (atan (-> s3-1 z) (-> s3-1 x))) (f30-0 (- (-> arg1 w))) - (s3-2 (new 'stack-no-clear 'vector)) - ) + (s3-2 (new 'stack-no-clear 'vector))) (let ((s2-1 (new 'stack-no-clear 'vector))) (let ((a2-1 (new 'stack-no-clear 'vector))) (set! (-> a2-1 x) (- f0-15 f28-0)) (set! (-> a2-1 y) (+ f0-15 f28-0)) - (vector-sincos! s3-2 s2-1 a2-1) - ) + (vector-sincos! s3-2 s2-1 a2-1)) (set! (-> arg2 x) (+ (-> arg1 x) (* f30-0 (-> s2-1 x)))) (set! (-> arg2 z) (+ (-> arg1 z) (* f30-0 (-> s3-2 x)))) - (set! (-> arg3 x) (+ (-> arg1 x) (* f30-0 (-> s2-1 y)))) - ) - (set! (-> arg3 z) (+ (-> arg1 z) (* f30-0 (-> s3-2 y)))) - ) - ) - ) - ) + (set! (-> arg3 x) (+ (-> arg1 x) (* f30-0 (-> s2-1 y))))) + (set! (-> arg3 z) (+ (-> arg1 z) (* f30-0 (-> s3-2 y)))))))) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;; ;; curve @@ -1088,10 +786,8 @@ (defun find-knot-span ((arg0 int) (arg1 int) (arg2 float) (arg3 (inline-array vector))) "Binary serach over knots to find which contains the value float in (arg0 arg1). Unused." (local-vars (v0-0 int)) - ;; if the knot after this, is exactly target value, return that. (b! (= arg2 (-> arg3 (+ arg0 1))) cfg-11 :delay (set! v0-0 arg0)) - ;; convert to int? (let ((v1-3 (the int arg2))) (let* ((a2-1 (+ v1-3 3)) @@ -1099,43 +795,32 @@ (t0-1 (&-> arg3 0 data a2-1)) ;;(f1-2 (dynamic-array-field-access t0-1 PLACEHOLDER)) (f1-2 (-> t0-1 0)) - (f2-0 (-> t0-1 1)) - ) + (f2-0 (-> t0-1 1))) (b! (> f1-2 arg2) cfg-4) - (b! (>= arg2 f2-0) cfg-4 :delay (set! v0-0 a2-1)) - ) - + (b! (>= arg2 f2-0) cfg-4 :delay (set! v0-0 a2-1))) ;; don't think this is hit normally. (b! #t cfg-11) - ;; loop setup (label cfg-4) - (let ((a1-1 arg1) ;; current + (let ((a1-1 arg1) ;; current (a0-1 (+ arg0 1)) ;; next ) - ;; loop top (label cfg-5) - (let ((a2-3 (/ (+ a1-1 a0-1) 2))) (let ((t0-3 (&-> arg3 0 data a2-3))) (b! (>= arg2 (-> t0-3 0)) cfg-7) (b! #t cfg-5 :delay (set! a0-1 a2-3)) (label cfg-7) - (b! (< arg2 (-> t0-3 1)) cfg-9) - ) + (b! (< arg2 (-> t0-3 1)) cfg-9)) (b! #t cfg-5 :delay (set! a1-1 a2-3)) (label cfg-9) - (set! v0-0 a2-3) - ) - ) - (b! (= v0-0 v1-3) cfg-11) - ) + (set! v0-0 a2-3))) + (b! (= v0-0 v1-3) cfg-11)) (nop!) (nop!) (label cfg-11) - v0-0 - ) + v0-0) (defun calculate-basis-functions-vector! ((arg0 vector) (arg1 int) (arg2 float) (arg3 (pointer float))) "Calculate polynomial basis for a given control point." @@ -1143,13 +828,11 @@ ;;(.sll v1-0 arg1 2) (set! v1-0 (* 4 arg1)) ;; originally used 32-bit asm (let ((a1-1 #x3f800000) - (f3-0 arg2) - ) + (f3-0 arg2)) ;;(.addu v1-1 arg3 v1-0) (set! v1-1 (&+ arg3 v1-0)) (let* ((f1-0 (the-as float a1-1)) ;; trick to load float constant. - (f5-0 f1-0) - ) + (f5-0 f1-0)) 0.0 0.0 (let* ((f0-2 (-> (the-as (pointer float) v1-1) 0)) @@ -1185,17 +868,12 @@ (f2-4 (* f2-3 f7-6)) (f1-2 (* f8-3 (the-as float (/ f1-0 (+ f3-1 f0-3))))) (f2-5 (+ (* f3-1 f1-2) f2-4)) - (f0-4 (* f0-3 f1-2)) - ) + (f0-4 (* f0-3 f1-2))) (set! (-> arg0 x) f4-1) (set! (-> arg0 y) f5-4) (set! (-> arg0 z) f2-5) - (set! (-> arg0 w) f0-4) - ) - ) - ) - arg0 - ) + (set! (-> arg0 w) f0-4)))) + arg0) (defun curve-evaluate! ((arg0 vector) (arg1 float) (arg2 (inline-array vector)) (arg3 int) (arg4 (pointer float)) (arg5 int)) "Evaluate a curve. @@ -1214,142 +892,104 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 (new 'static 'vector))) - 0 - ;; lookup knot - (let* ((f0-0 (-> arg4 0)) - (f1-0 (-> (&-> arg4 (+ arg5 -1)) 0)) - (a2-1 (fmax (fmin (* arg1 f1-0) f1-0) f0-0)) - ) - (let* ((a1-1 (+ arg5 -5)) - (a3-1 3) - (f0-2 a2-1) - (v1-5 arg4) - (f0-3 f0-2) - ) - (b! (= f0-3 (-> (&-> v1-5 (+ a1-1 1)) 0)) - cfg-11 - :delay (set! s3-0 a1-1) - ) - (let ((a0-4 (the int f0-3))) - (let* ((t1-1 (+ a0-4 3)) - (t2-1 (&-> v1-5 t1-1)) - (f1-4 (-> t2-1 0)) - (f2-3 (-> t2-1 1)) - ) - (b! (> f1-4 f0-3) cfg-4) - (b! (>= f0-3 f2-3) cfg-4 :delay (set! s3-0 t1-1)) - ) - (b! #t cfg-11) - (label cfg-4) - (let ((a3-2 a3-1) - (a1-2 (+ a1-1 1)) - ) - (label cfg-5) - (let ((t1-3 (/ (+ a3-2 a1-2) 2))) - (let ((t2-3 (&-> v1-5 t1-3))) - (b! (>= f0-3 (-> t2-3 0)) cfg-7) - (b! #t cfg-5 :delay (set! a1-2 t1-3)) - (label cfg-7) - (b! (< f0-3 (-> t2-3 1)) cfg-9) - ) - (b! #t cfg-5 :delay (set! a3-2 t1-3)) - (label cfg-9) - (set! s3-0 t1-3) - ) - ) - (b! (= s3-0 a0-4) cfg-11) - ) - ) - (nop!) - (nop!) - (label cfg-11) - ;; calculate coefficients for this knot's polynomial, store in s4-0 - (calculate-basis-functions-vector! - s4-0 - s3-0 - a2-1 - (the-as (pointer float) arg4) - ) - ) - ;;(.addiu v1-7 s3-0 -3) - (set! v1-7 (- s3-0 3)) - (.lvf vf6 s4-0) - ) - ;; evaluate polynomial! - ;;(.sll v1-8 v1-7 4) - (set! v1-8 (* v1-7 16)) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (let ((v1-9 (+ v1-8 (the-as int arg2)))) + (vf6 :class vf)) + (init-vf0-vector) + (let ((s4-0 (new 'static 'vector))) + 0 + ;; lookup knot + (let* ((f0-0 (-> arg4 0)) + (f1-0 (-> (&-> arg4 (+ arg5 -1)) 0)) + (a2-1 (fmax (fmin (* arg1 f1-0) f1-0) f0-0))) + (let* ((a1-1 (+ arg5 -5)) + (a3-1 3) + (f0-2 a2-1) + (v1-5 arg4) + (f0-3 f0-2)) + (b! (= f0-3 (-> (&-> v1-5 (+ a1-1 1)) 0)) cfg-11 :delay (set! s3-0 a1-1)) + (let ((a0-4 (the int f0-3))) + (let* ((t1-1 (+ a0-4 3)) + (t2-1 (&-> v1-5 t1-1)) + (f1-4 (-> t2-1 0)) + (f2-3 (-> t2-1 1))) + (b! (> f1-4 f0-3) cfg-4) + (b! (>= f0-3 f2-3) cfg-4 :delay (set! s3-0 t1-1))) + (b! #t cfg-11) + (label cfg-4) + (let ((a3-2 a3-1) + (a1-2 (+ a1-1 1))) + (label cfg-5) + (let ((t1-3 (/ (+ a3-2 a1-2) 2))) + (let ((t2-3 (&-> v1-5 t1-3))) + (b! (>= f0-3 (-> t2-3 0)) cfg-7) + (b! #t cfg-5 :delay (set! a1-2 t1-3)) + (label cfg-7) + (b! (< f0-3 (-> t2-3 1)) cfg-9)) + (b! #t cfg-5 :delay (set! a3-2 t1-3)) + (label cfg-9) + (set! s3-0 t1-3))) + (b! (= s3-0 a0-4) cfg-11))) + (nop!) + (nop!) + (label cfg-11) + ;; calculate coefficients for this knot's polynomial, store in s4-0 + (calculate-basis-functions-vector! s4-0 s3-0 a2-1 (the-as (pointer float) arg4))) + ;;(.addiu v1-7 s3-0 -3) + (set! v1-7 (- s3-0 3)) + (.lvf vf6 s4-0)) + ;; evaluate polynomial! + ;;(.sll v1-8 v1-7 4) + (set! v1-8 (* v1-7 16)) + (.add.x.vf vf1 vf0 vf0 :mask #b1000) + (let ((v1-9 (+ v1-8 (the-as int arg2)))) + (nop!) + (nop!) + (.lvf vf2 (&-> (the-as (pointer int128) v1-9))) + (nop!) + (.lvf vf3 (+ v1-9 16)) + (nop!) + (.lvf vf4 (+ v1-9 32)) + (nop!) + (.lvf vf5 (+ v1-9 48))) + (.mul.x.vf acc vf2 vf6) + (nop!) + (.add.mul.y.vf acc vf3 vf6 acc :mask #b111) + (nop!) + (.add.mul.z.vf acc vf4 vf6 acc :mask #b111) + (nop!) + (.add.mul.w.vf vf1 vf5 vf6 acc :mask #b111) (nop!) (nop!) - (.lvf vf2 (&-> (the-as (pointer int128) v1-9))) (nop!) - (.lvf vf3 (+ v1-9 16)) (nop!) - (.lvf vf4 (+ v1-9 32)) (nop!) - (.lvf vf5 (+ v1-9 48)) - ) - (.mul.x.vf acc vf2 vf6) - (nop!) - (.add.mul.y.vf acc vf3 vf6 acc :mask #b111) - (nop!) - (.add.mul.z.vf acc vf4 vf6 acc :mask #b111) - (nop!) - (.add.mul.w.vf vf1 vf5 vf6 acc :mask #b111) - (nop!) - (nop!) - (nop!) - (nop!) - (nop!) - (nop!) - (nop!) - (nop!) - (.svf (&-> arg0 quad) vf1) - (.mov v1-10 vf1) - arg0 - ) - ) + (nop!) + (nop!) + (nop!) + (.svf (&-> arg0 quad) vf1) + (.mov v1-10 vf1) + arg0)) (defun curve-get-pos! ((arg0 vector) (arg1 float) (arg2 curve)) "Get the position on the curve at the given input." - (curve-evaluate! arg0 arg1 (-> arg2 cverts) (-> arg2 num-cverts) (-> arg2 knots) (-> arg2 num-knots)) - ) + (curve-evaluate! arg0 arg1 (-> arg2 cverts) (-> arg2 num-cverts) (-> arg2 knots) (-> arg2 num-knots))) (defun curve-length ((arg0 curve)) "Compute the approximate curve length as the sum of distances between knots." (let ((s5-0 (new-stack-vector0)) (s4-0 (new-stack-vector0)) (s3-0 (* 3 (-> arg0 num-cverts))) - (f30-0 0.0) - ) - (curve-evaluate! - s4-0 - (-> arg0 knots 0) - (-> arg0 cverts) - (-> arg0 num-cverts) - (-> arg0 knots) - (-> arg0 num-knots) - ) + (f30-0 0.0)) + (curve-evaluate! s4-0 (-> arg0 knots 0) (-> arg0 cverts) (-> arg0 num-cverts) (-> arg0 knots) (-> arg0 num-knots)) (dotimes (s2-0 s3-0) (set! (-> s5-0 quad) (-> s4-0 quad)) - (curve-evaluate! - s4-0 - (/ (the float (+ s2-0 1)) (the float s3-0)) - (-> arg0 cverts) - (-> arg0 num-cverts) - (-> arg0 knots) - (-> arg0 num-knots) - ) - (+! f30-0 (vector-vector-distance s5-0 s4-0)) - ) - f30-0 - ) - ) + (curve-evaluate! s4-0 + (/ (the float (+ s2-0 1)) (the float s3-0)) + (-> arg0 cverts) + (-> arg0 num-cverts) + (-> arg0 knots) + (-> arg0 num-knots)) + (+! f30-0 (vector-vector-distance s5-0 s4-0))) + f30-0)) (defun curve-copy! ((arg0 curve) (arg1 curve)) "Shallow copy a curve." @@ -1358,8 +998,7 @@ (set! (-> arg0 knots) (-> arg1 knots)) (set! (-> arg0 num-knots) (-> arg1 num-knots)) (set! (-> arg0 length) (-> arg1 length)) - arg0 - ) + arg0) (defun curve-closest-point ((arg0 curve) (arg1 vector) (arg2 float) (arg3 float) (arg4 int) (arg5 float)) "Get the input value for the point on the curve. Approximate! And is O(n_knots)" @@ -1369,26 +1008,21 @@ (gp-0 arg5) (f30-0 (curve-length arg0)) (s2-0 (new 'stack-no-clear 'vector)) - (s1-0 (new 'stack-no-clear 'vector)) - ) + (s1-0 (new 'stack-no-clear 'vector))) 0.0 0.0 0.0 0.0 (let ((f28-0 0.5)) 0.0 - (if (< 0.0 sv-48) - (set! f28-0 (/ sv-48 f30-0)) - ) + (if (< 0.0 sv-48) (set! f28-0 (/ sv-48 f30-0))) (let* ((s0-1 (- arg2 (/ gp-0 f30-0))) (f26-0 (- s0-1 f28-0)) - (f24-0 (+ s0-1 f28-0)) - ) + (f24-0 (+ s0-1 f28-0))) (curve-get-pos! s2-0 f26-0 arg0) (curve-get-pos! s1-0 f24-0 arg0) (let ((f22-0 (vector-vector-distance-squared s2-0 arg1)) - (f20-0 (vector-vector-distance-squared s1-0 arg1)) - ) + (f20-0 (vector-vector-distance-squared s1-0 arg1))) (while (> s3-0 0) (+! s3-0 -1) (set! f28-0 (* 0.5 f28-0)) @@ -1397,36 +1031,15 @@ (curve-get-pos! s1-0 s0-1 arg0) (set! f20-0 (vector-vector-distance-squared s1-0 arg1)) (set! f24-0 s0-1) - (- s0-1 f28-0) - ) + (- s0-1 f28-0)) (else (curve-get-pos! s2-0 s0-1 arg0) (set! f22-0 (vector-vector-distance-squared s2-0 arg1)) (set! f26-0 s0-1) - (+ s0-1 f28-0) - ) - ) - ) - ) - (set! s0-1 (fmin 1.0 (fmax 0.0 v1-4))) - ) - ) - (+ (if (< f22-0 f20-0) - f26-0 - f24-0 - ) - (/ gp-0 f30-0) - ) - ) - ) - ) - ) - ) + (+ s0-1 f28-0))))) + (set! s0-1 (fmin 1.0 (fmax 0.0 v1-4))))) + (+ (if (< f22-0 f20-0) f26-0 f24-0) (/ gp-0 f30-0))))))) (defun vector-plane-distance ((arg0 vector) (arg1 plane) (arg2 vector)) "Unused." - (vector-dot - (vector-! (new 'stack-no-clear 'vector) arg0 (the-as vector (&-> arg1 x))) - arg2 - ) - ) + (vector-dot (vector-! (new 'stack-no-clear 'vector) arg0 (the-as vector (&-> arg1 x))) arg2)) diff --git a/goal_src/jak1/engine/geometry/path-h.gc b/goal_src/jak1/engine/geometry/path-h.gc index 73fe95a4e9..510fb6b90f 100644 --- a/goal_src/jak1/engine/geometry/path-h.gc +++ b/goal_src/jak1/engine/geometry/path-h.gc @@ -1,15 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-h.gc") (require "engine/game/main-h.gc") (require "engine/entity/actor-link-h.gc") - -;; name: path-h.gc -;; name in dgo: path-h -;; dgos: GAME, ENGINE - (defenum path-control-flag :bitfield #t :type uint32 @@ -17,107 +11,81 @@ (draw-line 1) ;; TODO - only seen it used to control debug drawing so far (draw-point 2) ;; TODO - only seen it used to control debug drawing so far (draw-text 3) ;; TODO - only seen it used to control debug drawing so far - (not-found 4) - ) + (not-found 4)) ;; DECOMP BEGINS ;; A path-control is a curve that can be loaded from res-lump/entities. (deftype path-control (basic) - ((flags path-control-flag) - (name symbol) - (process process-drawable) - (curve curve :inline) - (num-cverts int32 :overlay-at (-> curve num-cverts)) - (cverts (inline-array vector) :overlay-at (-> curve cverts)) - ) + ((flags path-control-flag) + (name symbol) + (process process-drawable) + (curve curve :inline) + (num-cverts int32 :overlay-at (-> curve num-cverts)) + (cverts (inline-array vector) :overlay-at (-> curve cverts))) (:methods - (new (symbol type process symbol float) _type_) - (debug-draw (_type_) none) - (eval-path-curve-div! (_type_ vector float symbol) vector) - (get-random-point (_type_ vector) vector) - (path-control-method-12 (_type_ vector float) vector) - (eval-path-curve! (_type_ vector float symbol) vector) - (path-control-method-14 (_type_ vector float) vector) - (length-as-float (_type_) float) - (path-distance (_type_) float) - (get-num-verts (_type_) int) - (should-display? (_type_) symbol) - (path-control-method-19 (_type_) float) - (path-control-method-20 (_type_) float) - ) - ) + (new (symbol type process symbol float) _type_) + (debug-draw (_type_) none) + (eval-path-curve-div! (_type_ vector float symbol) vector) + (get-random-point (_type_ vector) vector) + (path-control-method-12 (_type_ vector float) vector) + (eval-path-curve! (_type_ vector float symbol) vector) + (path-control-method-14 (_type_ vector float) vector) + (length-as-float (_type_) float) + (path-distance (_type_) float) + (get-num-verts (_type_) int) + (should-display? (_type_) symbol) + (path-control-method-19 (_type_) float) + (path-control-method-20 (_type_) float))) ;; A curve-control is very similar, but also gets knots. -(deftype curve-control (path-control) - () +(deftype curve-control (path-control) () (:methods - (new (symbol type process symbol float) _type_) - ) - ) - + (new (symbol type process symbol float) _type_))) (defmethod new path-control ((allocation symbol) (type-to-make type) (proc process) (name symbol) (time float)) (local-vars (tag res-tag)) (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - (when (zero? this) ;; allocation failed. (go process-drawable-art-error "memory") (set! this (the-as path-control 0)) - (goto cfg-9) - ) - + (goto cfg-9)) (set! (-> this process) (the-as process-drawable proc)) (set! (-> this name) name) (let ((ent (-> proc entity))) (when (= name 'path) ;; if we are a path, try to look up the path-actor. (let ((lookup-entity (entity-actor-lookup (the-as res-lump ent) 'path-actor 0))) - (if lookup-entity - (set! ent lookup-entity) - ) - ) - ) - + (if lookup-entity (set! ent lookup-entity)))) ;; look up the curve data (set! tag (new 'static 'res-tag)) (let ((data (res-lump-data ent name pointer :tag-ptr (& tag) :time time))) (cond (data - ;; success, we got some data - (set! (-> this cverts) (the-as (inline-array vector) data)) - (set! (-> this curve num-cverts) (the-as int (-> tag elt-count))) - ) + ;; success, we got some data + (set! (-> this cverts) (the-as (inline-array vector) data)) + (set! (-> this curve num-cverts) (the-as int (-> tag elt-count)))) (else - ;; did not find the data. Set flags and zero stuff - (logior! (-> this flags) (path-control-flag not-found)) - (set! (-> this cverts) (the-as (inline-array vector) #f)) - (set! (-> this curve num-cverts) 0) - 0 - ) - ) - ) - ) + ;; did not find the data. Set flags and zero stuff + (logior! (-> this flags) (path-control-flag not-found)) + (set! (-> this cverts) (the-as (inline-array vector) #f)) + (set! (-> this curve num-cverts) 0) + 0)))) (label cfg-9) - (the-as path-control this) - ) - ) + (the-as path-control this))) (defmethod should-display? ((this path-control)) "Should we display path marks?" - (and *display-path-marks* (logtest? (-> this flags) (path-control-flag display))) - ) + (and *display-path-marks* (logtest? (-> this flags) (path-control-flag display)))) (defmethod length-as-float ((this path-control)) "Get the number of edges as a float" - (the float (+ (-> this curve num-cverts) -1)) - ) + (the float (+ (-> this curve num-cverts) -1))) (defmethod get-num-verts ((this path-control)) "Get the number of vertices" - (-> this curve num-cverts) - ) + (-> this curve num-cverts)) (defmethod new curve-control ((allocation symbol) (type-to-make type) (proc process) (name symbol) (time float)) (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -130,36 +98,18 @@ 'path-k ;; for knots? ) (else - ;; appends a -k to the symbol name. - (let ((s2-1 string->symbol)) - (format (clear *temp-string*) "~A-k" name) - (s2-1 *temp-string*) - ) - ) - ) - ) - ) - (let ((lookup-entity (entity-actor-lookup ent 'path-actor 0))) - (if lookup-entity - (set! ent lookup-entity) - ) - ) + ;; appends a -k to the symbol name. + (let ((s2-1 string->symbol)) (format (clear *temp-string*) "~A-k" name) (s2-1 *temp-string*)))))) + (let ((lookup-entity (entity-actor-lookup ent 'path-actor 0))) (if lookup-entity (set! ent lookup-entity))) (when (not (get-curve-data! ent (-> this curve) name s2-0 time)) (cond ((> (-> this curve num-cverts) 0) ;; downgrade us to a path-control, we got cverts but no knots. - (set! (-> this type) path-control) - ) + (set! (-> this type) path-control)) (else - ;; couldn't get anything, mark as bad. - (logior! (-> this flags) (path-control-flag not-found)) - (set! (-> this cverts) (the-as (inline-array vector) #f)) - (set! (-> this curve num-cverts) 0) - 0 - ) - ) - ) - ) - this - ) - ) + ;; couldn't get anything, mark as bad. + (logior! (-> this flags) (path-control-flag not-found)) + (set! (-> this cverts) (the-as (inline-array vector) #f)) + (set! (-> this curve num-cverts) 0) + 0)))) + this)) diff --git a/goal_src/jak1/engine/geometry/path.gc b/goal_src/jak1/engine/geometry/path.gc index 6081403bc2..d8005f55d0 100644 --- a/goal_src/jak1/engine/geometry/path.gc +++ b/goal_src/jak1/engine/geometry/path.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/geometry/path-h.gc") (require "engine/debug/debug.gc") (require "engine/debug/assert.gc") -;; name: path.gc -;; name in dgo: path -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod debug-draw ((this path-control)) @@ -18,96 +13,53 @@ (when (and (type-type? (-> this process type) process-drawable) *display-entity-errors*) (let ((s5-0 add-debug-text-3d) (s4-0 #t) - (s3-0 68) - ) + (s3-0 68)) (format (clear *temp-string*) "path data error in ~S" (-> this process name)) - (s5-0 - s4-0 - (the-as bucket-id s3-0) - *temp-string* - (-> this process root trans) - (font-color red) - (the-as vector2h #f) - ) - ) - ) - ) - ((let ((a0-5 this)) - (and *display-path-marks* (logtest? (-> a0-5 flags) (path-control-flag display))) - ) + (s5-0 s4-0 (the-as bucket-id s3-0) *temp-string* (-> this process root trans) (font-color red) (the-as vector2h #f))))) + ((let ((a0-5 this)) (and *display-path-marks* (logtest? (-> a0-5 flags) (path-control-flag display)))) (dotimes (s5-1 (-> this curve num-cverts)) (let ((s4-1 (-> this cverts s5-1))) (if (and (logtest? (-> this flags) (path-control-flag draw-line)) (< s5-1 (+ (-> this curve num-cverts) -1))) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - s4-1 - (-> this cverts (+ s5-1 1)) - (new 'static 'rgba :r #xff :g #x80 :a #x80) - #f - (the-as rgba -1) - ) - ) + (add-debug-line #t + (bucket-id debug-no-zbuf) + s4-1 + (-> this cverts (+ s5-1 1)) + (new 'static 'rgba :r #xff :g #x80 :a #x80) + #f + (the-as rgba -1))) (if (logtest? (-> this flags) (path-control-flag draw-point)) - (add-debug-x #t (bucket-id debug-no-zbuf) s4-1 (new 'static 'rgba :r #xff :a #x80)) - ) + (add-debug-x #t (bucket-id debug-no-zbuf) s4-1 (new 'static 'rgba :r #xff :a #x80))) (when (logtest? (-> this flags) (path-control-flag draw-text)) (let ((s3-1 add-debug-text-3d) (s2-1 #t) - (s1-0 68) - ) + (s1-0 68)) (format (clear *temp-string*) "~D" s5-1) - (s3-1 s2-1 (the-as bucket-id s1-0) *temp-string* s4-1 (font-color orange) (the-as vector2h #f)) - ) - ) - ) - ) - ) - ) + (s3-1 s2-1 (the-as bucket-id s1-0) *temp-string* s4-1 (font-color orange) (the-as vector2h #f)))))))) 0 - (none) - ) + (none)) (defmethod path-distance ((this path-control)) (let ((f30-0 0.0)) (dotimes (s5-0 (+ (-> this curve num-cverts) -1)) - (+! f30-0 (vector-vector-distance (-> this cverts s5-0) (-> this cverts (+ s5-0 1)))) - ) - f30-0 - ) - ) + (+! f30-0 (vector-vector-distance (-> this cverts s5-0) (-> this cverts (+ s5-0 1))))) + f30-0)) (defmethod path-distance ((this curve-control)) (let ((f0-0 (-> this curve length))) (when (= f0-0 0.0) (set! f0-0 (curve-length (the-as curve (&-> this cverts)))) - (set! (-> this curve length) f0-0) - ) - f0-0 - ) - ) + (set! (-> this curve length) f0-0)) + f0-0)) (defmethod eval-path-curve-div! ((this path-control) (arg0 vector) (arg1 float) (arg2 symbol)) (let ((a1-1 (-> this curve num-cverts)) - (f0-3 (the float (the int arg1))) - ) + (f0-3 (the float (the int arg1)))) (cond - ((< arg1 0.0) - (set! (-> arg0 quad) (-> this cverts 0 quad)) - ) - ((>= f0-3 (the float (+ a1-1 -1))) - (set! (-> arg0 quad) (-> this cverts (+ a1-1 -1) quad)) - ) - ((or (= arg2 'exact) (= f0-3 arg1)) - (set! (-> arg0 quad) (-> this cverts (the int f0-3) quad)) - ) - (else - (vector-lerp! arg0 (-> this cverts (the int f0-3)) (-> this cverts (the int (+ 1.0 f0-3))) (- arg1 f0-3)) - ) - ) - ) - arg0 - ) + ((< arg1 0.0) (set! (-> arg0 quad) (-> this cverts 0 quad))) + ((>= f0-3 (the float (+ a1-1 -1))) (set! (-> arg0 quad) (-> this cverts (+ a1-1 -1) quad))) + ((or (= arg2 'exact) (= f0-3 arg1)) (set! (-> arg0 quad) (-> this cverts (the int f0-3) quad))) + (else (vector-lerp! arg0 (-> this cverts (the int f0-3)) (-> this cverts (the int (+ 1.0 f0-3))) (- arg1 f0-3))))) + arg0) (defmethod get-random-point ((this path-control) (arg0 vector)) (with-pp @@ -116,134 +68,81 @@ (let ((s4-0 (rand-vu-int-count (-> this curve num-cverts)))) (when *run-time-assert-enable* (set-pos *__private-assert-info* "path" (the-as uint 83) (the-as uint 6)) - (__assert-zero-lim-range-int s4-0 (-> this curve num-cverts) "rand-index" "(-> obj num-cverts)") - ) - (set! (-> arg0 quad) (-> this cverts s4-0 quad)) - ) - ) + (__assert-zero-lim-range-int s4-0 (-> this curve num-cverts) "rand-index" "(-> obj num-cverts)")) + (set! (-> arg0 quad) (-> this cverts s4-0 quad)))) (else - (format #t "WARNING: method get-random-point called on a path-control object with no vertices.~%") - (if pp - (format #t "current process is ~A~%" (-> pp name)) - ) - (set! (-> arg0 quad) (-> *null-vector* quad)) - ) - ) - arg0 - ) - ) + (format #t "WARNING: method get-random-point called on a path-control object with no vertices.~%") + (if pp (format #t "current process is ~A~%" (-> pp name))) + (set! (-> arg0 quad) (-> *null-vector* quad)))) + arg0)) (defmethod eval-path-curve! ((this path-control) (arg0 vector) (arg1 float) (arg2 symbol)) - (eval-path-curve-div! this arg0 (* arg1 (the float (+ (-> this curve num-cverts) -1))) arg2) - ) + (eval-path-curve-div! this arg0 (* arg1 (the float (+ (-> this curve num-cverts) -1))) arg2)) (defmethod eval-path-curve! ((this curve-control) (arg0 vector) (arg1 float) (arg2 symbol)) - (the-as vector (if (logtest? (-> this flags) (path-control-flag not-found)) - 0.0 - (curve-evaluate! - arg0 - arg1 - (-> this cverts) - (-> this curve num-cverts) - (-> this curve knots) - (-> this curve num-knots) - ) - ) - ) - ) + (the-as vector + (if (logtest? (-> this flags) (path-control-flag not-found)) + 0.0 + (curve-evaluate! arg0 arg1 (-> this cverts) (-> this curve num-cverts) (-> this curve knots) (-> this curve num-knots))))) (defmethod eval-path-curve-div! ((this curve-control) (arg0 vector) (arg1 float) (arg2 symbol)) - (the-as vector (if (logtest? (-> this flags) (path-control-flag not-found)) - 0.0 - (curve-evaluate! - arg0 - (/ arg1 (the float (+ (-> this curve num-cverts) -1))) - (-> this cverts) - (-> this curve num-cverts) - (-> this curve knots) - (-> this curve num-knots) - ) - ) - ) - ) + (the-as vector + (if (logtest? (-> this flags) (path-control-flag not-found)) + 0.0 + (curve-evaluate! arg0 + (/ arg1 (the float (+ (-> this curve num-cverts) -1))) + (-> this cverts) + (-> this curve num-cverts) + (-> this curve knots) + (-> this curve num-knots))))) (defmethod path-control-method-12 ((this path-control) (arg0 vector) (arg1 float)) (when (not (logtest? (-> this flags) (path-control-flag not-found))) (let ((v1-3 (-> this curve num-cverts)) - (f0-3 (the float (the int arg1))) - ) + (f0-3 (the float (the int arg1)))) (cond - ((< v1-3 2) - ) - ((< arg1 0.0) - (vector-! arg0 (-> this cverts 1) (-> this cverts 0)) - ) + ((< v1-3 2)) + ((< arg1 0.0) (vector-! arg0 (-> this cverts 1) (-> this cverts 0))) (else - (let ((f0-4 (fmin f0-3 (the float (+ v1-3 -2))))) - (vector-! arg0 (-> this cverts (the int (+ 1.0 f0-4))) (-> this cverts (the int f0-4))) - ) - ) - ) - ) - ) - (vector-normalize! arg0 1.0) - ) + (let ((f0-4 (fmin f0-3 (the float (+ v1-3 -2))))) + (vector-! arg0 (-> this cverts (the int (+ 1.0 f0-4))) (-> this cverts (the int f0-4)))))))) + (vector-normalize! arg0 1.0)) (defmethod path-control-method-14 ((this path-control) (arg0 vector) (arg1 float)) - (path-control-method-12 this arg0 (* arg1 (the float (+ (-> this curve num-cverts) -1)))) - ) + (path-control-method-12 this arg0 (* arg1 (the float (+ (-> this curve num-cverts) -1))))) (defmethod path-control-method-14 ((this curve-control) (arg0 vector) (arg1 float)) (when (not (logtest? (-> this flags) (path-control-flag not-found))) (let ((s4-0 (new 'stack-no-clear 'vector))) - (curve-evaluate! - arg0 - arg1 - (-> this cverts) - (-> this curve num-cverts) - (-> this curve knots) - (-> this curve num-knots) - ) + (curve-evaluate! arg0 arg1 (-> this cverts) (-> this curve num-cverts) (-> this curve knots) (-> this curve num-knots)) (cond ((< arg1 0.99) - (curve-evaluate! - s4-0 - (+ 0.01 arg1) - (-> this cverts) - (-> this curve num-cverts) - (-> this curve knots) - (-> this curve num-knots) - ) - (vector-! arg0 s4-0 arg0) - ) + (curve-evaluate! s4-0 + (+ 0.01 arg1) + (-> this cverts) + (-> this curve num-cverts) + (-> this curve knots) + (-> this curve num-knots)) + (vector-! arg0 s4-0 arg0)) (else - (curve-evaluate! - s4-0 - (+ -0.01 arg1) - (-> this cverts) - (-> this curve num-cverts) - (-> this curve knots) - (-> this curve num-knots) - ) - (vector-! arg0 arg0 s4-0) - ) - ) - ) - ) - (vector-normalize! arg0 1.0) - ) + (curve-evaluate! s4-0 + (+ -0.01 arg1) + (-> this cverts) + (-> this curve num-cverts) + (-> this curve knots) + (-> this curve num-knots)) + (vector-! arg0 arg0 s4-0))))) + (vector-normalize! arg0 1.0)) (defmethod path-control-method-12 ((this curve-control) (arg0 vector) (arg1 float)) - (path-control-method-14 this arg0 (/ arg1 (the float (+ (-> this curve num-cverts) -1)))) - ) + (path-control-method-14 this arg0 (/ arg1 (the float (+ (-> this curve num-cverts) -1))))) (defmethod path-control-method-19 ((this path-control)) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'vector)) (f30-0 4096000000.0) - (f28-0 0.0) - ) + (f28-0 0.0)) (let ((s2-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> (target-pos 0) quad)) (set! (-> s3-0 y) 0.0) @@ -256,20 +155,11 @@ (let ((f0-5 (vector-segment-distance-point! s3-0 s5-0 s4-0 s2-0))) (when (< f0-5 f30-0) (set! f30-0 f0-5) - (set! f28-0 - (+ (/ (vector-vector-xz-distance s2-0 s5-0) (vector-vector-xz-distance s4-0 s5-0)) (the float s1-1)) - ) - ) - ) - ) - ) - f28-0 - ) - ) + (set! f28-0 (+ (/ (vector-vector-xz-distance s2-0 s5-0) (vector-vector-xz-distance s4-0 s5-0)) (the float s1-1))))))) + f28-0)) (defmethod path-control-method-20 ((this path-control)) - (/ (path-control-method-19 this) (the float (+ (-> this curve num-cverts) -1))) - ) + (/ (path-control-method-19 this) (the float (+ (-> this curve num-cverts) -1)))) (defmethod debug-draw ((this curve-control)) (cond @@ -277,50 +167,25 @@ (when (and (type-type? (-> this process type) process-drawable) *display-entity-errors*) (let ((s5-0 add-debug-text-3d) (s4-0 #t) - (s3-0 68) - ) + (s3-0 68)) (format (clear *temp-string*) "curve data error in ~S" (-> this process name)) - (s5-0 - s4-0 - (the-as bucket-id s3-0) - *temp-string* - (-> this process root trans) - (font-color red) - (the-as vector2h #f) - ) - ) - ) - ) - ((let ((a0-5 this)) - (and *display-path-marks* (logtest? (-> a0-5 flags) (path-control-flag display))) - ) + (s5-0 s4-0 (the-as bucket-id s3-0) *temp-string* (-> this process root trans) (font-color red) (the-as vector2h #f))))) + ((let ((a0-5 this)) (and *display-path-marks* (logtest? (-> a0-5 flags) (path-control-flag display)))) (if (and (logtest? (-> this flags) (path-control-flag draw-line)) (> (-> this curve num-cverts) 0)) - (add-debug-curve2 - #t - (bucket-id debug-no-zbuf) - (the-as curve (&-> this cverts)) - (new 'static 'rgba :r #xff :g #x80 :a #x80) - #f - ) - ) + (add-debug-curve2 #t + (bucket-id debug-no-zbuf) + (the-as curve (&-> this cverts)) + (new 'static 'rgba :r #xff :g #x80 :a #x80) + #f)) (dotimes (s5-1 (-> this curve num-cverts)) (let ((s4-1 (-> this cverts s5-1))) (if (logtest? (-> this flags) (path-control-flag draw-point)) - (add-debug-x #t (bucket-id debug-no-zbuf) s4-1 (new 'static 'rgba :r #xff :a #x80)) - ) + (add-debug-x #t (bucket-id debug-no-zbuf) s4-1 (new 'static 'rgba :r #xff :a #x80))) (when (logtest? (-> this flags) (path-control-flag draw-text)) (let ((s3-1 add-debug-text-3d) (s2-1 #t) - (s1-0 68) - ) + (s1-0 68)) (format (clear *temp-string*) "~D" s5-1) - (s3-1 s2-1 (the-as bucket-id s1-0) *temp-string* s4-1 (font-color orange) (the-as vector2h #f)) - ) - ) - ) - ) - ) - ) + (s3-1 s2-1 (the-as bucket-id s1-0) *temp-string* s4-1 (font-color orange) (the-as vector2h #f)))))))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/geometry/vol-h.gc b/goal_src/jak1/engine/geometry/vol-h.gc index 90524e40cc..bc8ae45ddf 100644 --- a/goal_src/jak1/engine/geometry/vol-h.gc +++ b/goal_src/jak1/engine/geometry/vol-h.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/res.gc") (require "kernel/gstate.gc") (require "engine/draw/drawable-h.gc") @@ -9,107 +8,74 @@ (require "engine/entity/entity-h.gc") (require "engine/game/game-h.gc") -;; name: vol-h.gc -;; name in dgo: vol-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype plane-volume (structure) - ((volume-type symbol) - (point-count int16) - (normal-count int16) - (first-point (pointer vector)) - (first-normal (pointer vector)) - (num-planes int32) - (plane (inline-array plane)) - ) + ((volume-type symbol) + (point-count int16) + (normal-count int16) + (first-point (pointer vector)) + (first-normal (pointer vector)) + (num-planes int32) + (plane (inline-array plane))) :pack-me (:methods - (init-vol! (_type_ symbol vector-array vector-array) symbol) - (debug-draw (_type_) none) - (point-in-vol? (_type_ vector float) symbol) - ) - ) - + (init-vol! (_type_ symbol vector-array vector-array) symbol) + (debug-draw (_type_) none) + (point-in-vol? (_type_ vector float) symbol))) (deftype vol-control (basic) - ((flags uint32) - (process process-drawable) - (pos-vol-count int32) - (pos-vol plane-volume 32 :inline) - (neg-vol-count int32) - (neg-vol plane-volume 32 :inline) - (debug-point vector-array) - (debug-normal vector-array) - ) + ((flags uint32) + (process process-drawable) + (pos-vol-count int32) + (pos-vol plane-volume 32 :inline) + (neg-vol-count int32) + (neg-vol plane-volume 32 :inline) + (debug-point vector-array) + (debug-normal vector-array)) (:methods - (new (symbol type process-drawable) _type_) - (init! (_type_) symbol) - (point-in-vol? (_type_ vector) symbol) - (vol-control-method-11 (_type_) symbol) - ) - ) - + (new (symbol type process-drawable) _type_) + (init! (_type_) symbol) + (point-in-vol? (_type_ vector) symbol) + (vol-control-method-11 (_type_) symbol))) (defmethod new vol-control ((allocation symbol) (type-to-make type) (arg0 process-drawable)) (let ((gp-0 (the-as object (object-new allocation type-to-make (the-as int (-> type-to-make size)))))) (when (zero? (the-as vol-control gp-0)) (go process-drawable-art-error "memory") (set! gp-0 0) - (goto cfg-13) - ) + (goto cfg-13)) (set! (-> (the-as vol-control gp-0) process) arg0) (let* ((s5-1 (the-as res-lump (-> (the-as vol-control gp-0) process entity))) - ;; note: changed 'exact to 'base - (s4-0 (-> ((method-of-type res-lump lookup-tag-idx) (the-as entity-actor s5-1) 'vol 'base 0.0) lo)) - ) + (s4-0 (-> ((method-of-type res-lump lookup-tag-idx) (the-as entity-actor s5-1) 'vol 'exact 0.0) lo))) (when (>= (the-as int s4-0) 0) (let ((s3-0 (the-as int s4-0)) - (s2-0 (-> s5-1 tag s4-0)) - ) + (s2-0 (-> s5-1 tag s4-0))) 0 (while (= (-> s2-0 name) (-> s5-1 tag s4-0 name)) (let ((v1-12 (make-property-data s5-1 0.0 (the-as res-tag-pair s3-0) (the-as pointer #f))) - (a0-8 (-> (the-as vol-control gp-0) pos-vol (-> (the-as vol-control gp-0) pos-vol-count))) - ) + (a0-8 (-> (the-as vol-control gp-0) pos-vol (-> (the-as vol-control gp-0) pos-vol-count)))) (set! (-> a0-8 num-planes) (the-as int (-> s2-0 elt-count))) - (set! (-> a0-8 plane) (the-as (inline-array plane) v1-12)) - ) + (set! (-> a0-8 plane) (the-as (inline-array plane) v1-12))) (+! (-> (the-as vol-control gp-0) pos-vol-count) 1) (+! s3-0 1) - (set! s2-0 (-> s5-1 tag s3-0)) - ) - ) - ) - ) + (set! s2-0 (-> s5-1 tag s3-0)))))) (let* ((s5-2 (the-as res-lump (-> (the-as vol-control gp-0) process entity))) - (s4-1 (-> ((method-of-type res-lump lookup-tag-idx) (the-as entity-actor s5-2) 'cutoutvol 'exact 0.0) lo)) - ) + (s4-1 (-> ((method-of-type res-lump lookup-tag-idx) (the-as entity-actor s5-2) 'cutoutvol 'exact 0.0) lo))) (when (>= (the-as int s4-1) 0) (let ((s3-1 (the-as int s4-1)) - (s2-1 (-> s5-2 tag s4-1)) - ) + (s2-1 (-> s5-2 tag s4-1))) 0 (while (= (-> s2-1 name) (-> s5-2 tag s4-1 name)) (let ((v1-31 (make-property-data s5-2 0.0 (the-as res-tag-pair s3-1) (the-as pointer #f))) - (a0-19 (-> (the-as vol-control gp-0) neg-vol (-> (the-as vol-control gp-0) neg-vol-count))) - ) + (a0-19 (-> (the-as vol-control gp-0) neg-vol (-> (the-as vol-control gp-0) neg-vol-count)))) (set! (-> a0-19 num-planes) (the-as int (-> s2-1 elt-count))) - (set! (-> a0-19 plane) (the-as (inline-array plane) v1-31)) - ) + (set! (-> a0-19 plane) (the-as (inline-array plane) v1-31))) (+! (-> (the-as vol-control gp-0) neg-vol-count) 1) (+! s3-1 1) - (set! s2-1 (-> s5-2 tag s3-1)) - ) - ) - ) - ) + (set! s2-1 (-> s5-2 tag s3-1)))))) (label cfg-13) - (the-as vol-control gp-0) - ) - ) + (the-as vol-control gp-0))) (defmethod vol-control-method-11 ((this vol-control)) - (and *display-vol-marks* (logtest? (-> this flags) 1)) - ) + (and *display-vol-marks* (logtest? (-> this flags) 1))) diff --git a/goal_src/jak1/engine/geometry/vol.gc b/goal_src/jak1/engine/geometry/vol.gc index 14e2288f23..6dc262415e 100644 --- a/goal_src/jak1/engine/geometry/vol.gc +++ b/goal_src/jak1/engine/geometry/vol.gc @@ -1,27 +1,16 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/debug/debug-h.gc") (require "engine/geometry/vol-h.gc") (require "engine/geometry/cylinder.gc") -;; name: vol.gc -;; name in dgo: vol -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun plane-volume-intersect-dist ((arg0 vector) (arg1 vector) (arg2 vector)) (let ((f0-1 (vector-dot arg1 arg0)) - (f1-1 (vector-dot arg2 arg0)) - ) - (if (< 0.00001 (fabs f1-1)) - (/ (- (-> arg0 w) f0-1) f1-1) - 409600000.0 - ) - ) - ) + (f1-1 (vector-dot arg2 arg0))) + (if (< 0.00001 (fabs f1-1)) (/ (- (-> arg0 w) f0-1) f1-1) 409600000.0))) (defmethod init-vol! ((this plane-volume) (arg0 symbol) (arg1 vector-array) (arg2 vector-array)) (local-vars @@ -34,8 +23,7 @@ (sv-208 vector) (sv-224 vector) (sv-240 int) - (sv-256 int) - ) + (sv-256 int)) (set! (-> this volume-type) arg0) (set! (-> this point-count) 0) (set! (-> this first-point) (the-as (pointer vector) (-> arg1 data (-> arg1 length)))) @@ -56,8 +44,7 @@ (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) (let ((s1-0 (new-stack-vector0)) (s0-0 0) - (s2-0 (-> this plane)) - ) + (s2-0 (-> this plane))) (set! sv-240 0) (while (< sv-240 (-> this num-planes)) (when (!= s3-0 sv-240) @@ -79,132 +66,79 @@ (when (and (!= sv-256 s3-0) (!= sv-256 sv-240)) (let ((f30-0 (plane-volume-intersect-dist (-> s2-0 sv-256) sv-144 sv-192))) (cond - ((= f30-0 409600000.0) - ) + ((= f30-0 409600000.0)) ((zero? sv-152) (vector+float*! sv-144 sv-144 sv-192 f30-0) (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) (set! sv-148 8192000.0) - (set! sv-152 1) - ) - ((begin (vector-float*! sv-224 sv-192 f30-0) (>= (vector-dot sv-224 sv-160) 0.0)) - ) + (set! sv-152 1)) + ((begin (vector-float*! sv-224 sv-192 f30-0) (>= (vector-dot sv-224 sv-160) 0.0))) ((>= (vector-dot sv-224 (the-as vector (-> s2-0 sv-256))) 0.0) (when (< (fabs f30-0) (fabs sv-148)) (set! sv-148 f30-0) - (set! sv-152 (+ sv-152 1)) - ) - ) + (set! sv-152 (+ sv-152 1)))) (else - (vector+float*! sv-144 sv-144 sv-192 f30-0) - (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) - (set! sv-152 (+ sv-152 1)) - (if (< (fabs f30-0) (fabs sv-148)) - (set! sv-148 (- sv-148 f30-0)) - (set! sv-148 0.0) - ) - ) - ) - ) - ) - (set! sv-256 (+ sv-256 1)) - ) + (vector+float*! sv-144 sv-144 sv-192 f30-0) + (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) + (set! sv-152 (+ sv-152 1)) + (if (< (fabs f30-0) (fabs sv-148)) (set! sv-148 (- sv-148 f30-0)) (set! sv-148 0.0)))))) + (set! sv-256 (+ sv-256 1))) (cond - ((zero? sv-152) - ) - ((= sv-148 0.0) - ) + ((zero? sv-152)) + ((= sv-148 0.0)) (else - (dotimes (v1-70 (-> this num-planes)) - (when (and (!= v1-70 s3-0) (!= v1-70 sv-240)) - (if (< 4096.0 (- (vector-dot sv-144 (the-as vector (-> s2-0 v1-70))) (the-as float (-> s2-0 v1-70 w)))) - (goto cfg-42) - ) - ) - ) - (vector+float*! sv-224 sv-144 sv-192 sv-148) - (cond - ((< (-> arg1 allocated-length) (+ (-> arg1 length) 2)) - (format 0 "ERROR : vol-control #x~X out of volume points~%" this) - ) - (else - (set! (-> arg1 data (-> arg1 length) quad) (-> sv-144 quad)) - (set! (-> arg1 data (+ (-> arg1 length) 1) quad) (-> sv-224 quad)) - (+! (-> arg1 length) 2) - (+! (-> this point-count) 2) - ) - ) - (vector+! s1-0 s1-0 sv-144) - (vector+! s1-0 s1-0 sv-224) - (+! s0-0 2) - ) - ) - ) - ) - ) + (dotimes (v1-70 (-> this num-planes)) + (when (and (!= v1-70 s3-0) (!= v1-70 sv-240)) + (if (< 4096.0 (- (vector-dot sv-144 (the-as vector (-> s2-0 v1-70))) (the-as float (-> s2-0 v1-70 w)))) (goto cfg-42)))) + (vector+float*! sv-224 sv-144 sv-192 sv-148) + (cond + ((< (-> arg1 allocated-length) (+ (-> arg1 length) 2)) + (format 0 "ERROR : vol-control #x~X out of volume points~%" this)) + (else + (set! (-> arg1 data (-> arg1 length) quad) (-> sv-144 quad)) + (set! (-> arg1 data (+ (-> arg1 length) 1) quad) (-> sv-224 quad)) + (+! (-> arg1 length) 2) + (+! (-> this point-count) 2))) + (vector+! s1-0 s1-0 sv-144) + (vector+! s1-0 s1-0 sv-224) + (+! s0-0 2)))))) (label cfg-42) - (set! sv-240 (+ sv-240 1)) - ) + (set! sv-240 (+ sv-240 1))) (when (nonzero? s0-0) (vector-float*! s1-0 s1-0 (/ 1.0 (the float s0-0))) (cond ((< (-> arg2 allocated-length) (+ (-> arg2 length) 2)) - (format 0 "ERROR : vol-control #x~X out of volume normals~%" this) - ) + (format 0 "ERROR : vol-control #x~X out of volume normals~%" this)) (else - (set! (-> arg2 data (-> arg2 length) quad) (-> s1-0 quad)) - (set! (-> arg2 data (+ (-> arg2 length) 1) quad) (-> s2-0 s3-0 quad)) - (+! (-> arg2 length) 2) - (set! (-> this normal-count) (+ (-> this normal-count) 2)) - ) - ) - ) - ) - ) - #f - ) + (set! (-> arg2 data (-> arg2 length) quad) (-> s1-0 quad)) + (set! (-> arg2 data (+ (-> arg2 length) 1) quad) (-> s2-0 s3-0 quad)) + (+! (-> arg2 length) 2) + (set! (-> this normal-count) (+ (-> this normal-count) 2))))))) + #f) (defmethod debug-draw ((this plane-volume)) (let* ((v1-0 (-> this volume-type)) (s5-0 (cond - ((= v1-0 'vol) - (the-as uint #x8000c000) - ) - ((= v1-0 'pvol) - (the-as uint #x80808080) - ) - (else - (the-as uint #x800000c0) - ) - ) - ) - (s4-0 (-> this first-point)) - ) + ((= v1-0 'vol) (the-as uint #x8000c000)) + ((= v1-0 'pvol) (the-as uint #x80808080)) + (else (the-as uint #x800000c0)))) + (s4-0 (-> this first-point))) (dotimes (s3-0 (/ (-> this point-count) 2)) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - (the-as vector s4-0) - (the-as vector (&-> s4-0 4)) - (the-as rgba s5-0) - #f - (the-as rgba -1) - ) - (set! s4-0 (&-> s4-0 8)) - ) - ) + (add-debug-line #t + (bucket-id debug-no-zbuf) + (the-as vector s4-0) + (the-as vector (&-> s4-0 4)) + (the-as rgba s5-0) + #f + (the-as rgba -1)) + (set! s4-0 (&-> s4-0 8)))) 0 - (none) - ) + (none)) (defmethod point-in-vol? ((this plane-volume) (arg0 vector) (arg1 float)) (dotimes (v1-0 (-> this num-planes)) - (if (< arg1 (- (vector-dot arg0 (the-as vector (-> this plane v1-0))) (the-as float (-> this plane v1-0 w)))) - (return #f) - ) - ) - #t - ) + (if (< arg1 (- (vector-dot arg0 (the-as vector (-> this plane v1-0))) (the-as float (-> this plane v1-0 w)))) (return #f))) + #t) (defmethod init! ((this vol-control)) (with-pp @@ -215,47 +149,27 @@ (set! pp (-> this process)) (let ((s4-0 0)) (dotimes (v1-8 (-> this pos-vol-count)) - (+! s4-0 (-> this pos-vol v1-8 num-planes)) - ) + (+! s4-0 (-> this pos-vol v1-8 num-planes))) (dotimes (v1-11 (-> this neg-vol-count)) - (+! s4-0 (-> this neg-vol v1-11 num-planes)) - ) + (+! s4-0 (-> this neg-vol v1-11 num-planes))) (set! (-> this debug-point) (new 'debug 'vector-array (* 10 s4-0))) - (set! (-> this debug-normal) (new 'debug 'vector-array (* 10 s4-0))) - ) - (set! pp s5-0) - ) + (set! (-> this debug-normal) (new 'debug 'vector-array (* 10 s4-0)))) + (set! pp s5-0)) (set! (-> this debug-point length) 0) (set! (-> this debug-normal length) 0) (dotimes (s5-1 (-> this pos-vol-count)) - (init-vol! (-> this pos-vol s5-1) 'vol (-> this debug-point) (-> this debug-normal)) - ) + (init-vol! (-> this pos-vol s5-1) 'vol (-> this debug-point) (-> this debug-normal))) (dotimes (s5-2 (-> this neg-vol-count)) - (init-vol! (-> this neg-vol s5-2) 'vol (-> this debug-point) (-> this debug-normal)) - ) - ) + (init-vol! (-> this neg-vol s5-2) 'vol (-> this debug-point) (-> this debug-normal)))) (dotimes (s5-3 (-> this pos-vol-count)) - (debug-draw (-> this pos-vol s5-3)) - ) + (debug-draw (-> this pos-vol s5-3))) (dotimes (s5-4 (-> this neg-vol-count)) - (debug-draw (-> this neg-vol s5-4)) - ) - ) - ) - (the-as symbol 0) - ) - ) + (debug-draw (-> this neg-vol s5-4))))) + (the-as symbol 0))) (defmethod point-in-vol? ((this vol-control) (arg0 vector)) (dotimes (s4-0 (-> this neg-vol-count)) - (if (point-in-vol? (-> this neg-vol s4-0) arg0 0.0) - (return #f) - ) - ) + (if (point-in-vol? (-> this neg-vol s4-0) arg0 0.0) (return #f))) (dotimes (s4-1 (-> this pos-vol-count)) - (if (point-in-vol? (-> this pos-vol s4-1) arg0 0.0) - (return #t) - ) - ) - #f - ) + (if (point-in-vol? (-> this pos-vol s4-1) arg0 0.0) (return #t))) + #f) diff --git a/goal_src/jak1/engine/gfx/background/background-h.gc b/goal_src/jak1/engine/gfx/background/background-h.gc index befa5cd824..e789c6942f 100644 --- a/goal_src/jak1/engine/gfx/background/background-h.gc +++ b/goal_src/jak1/engine/gfx/background/background-h.gc @@ -1,44 +1,36 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: background-h.gc -;; name in dgo: background-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype background-work (basic) - ((tfrag-tree-count int32) - (tfrag-trees drawable-tree-tfrag 8) - (tfrag-levels level 8) - (trans-tfrag-tree-count int32) - (trans-tfrag-trees drawable-tree-trans-tfrag 8) - (trans-tfrag-levels level 8) - (dirt-tfrag-tree-count int32) - (dirt-tfrag-trees drawable-tree-dirt-tfrag 8) - (dirt-tfrag-levels level 8) - (ice-tfrag-tree-count int32) - (ice-tfrag-trees drawable-tree-ice-tfrag 8) - (ice-tfrag-levels level 8) - (lowres-tfrag-tree-count int32) - (lowres-tfrag-trees drawable-tree-lowres-tfrag 8) - (lowres-tfrag-levels level 8) - (lowres-trans-tfrag-tree-count int32) - (lowres-trans-tfrag-trees drawable-tree-trans-tfrag 8) - (lowres-trans-tfrag-levels level 8) - (shrub-tree-count int32) - (shrub-trees drawable-tree-instance-shrub 8) - (shrub-levels level 8) - (tie-tree-count int32) - (tie-trees drawable-tree-instance-tie 8) - (tie-levels level 8) - (tie-generic basic 8) - (wait-to-vu0 uint32) - ) - ) - + ((tfrag-tree-count int32) + (tfrag-trees drawable-tree-tfrag 8) + (tfrag-levels level 8) + (trans-tfrag-tree-count int32) + (trans-tfrag-trees drawable-tree-trans-tfrag 8) + (trans-tfrag-levels level 8) + (dirt-tfrag-tree-count int32) + (dirt-tfrag-trees drawable-tree-dirt-tfrag 8) + (dirt-tfrag-levels level 8) + (ice-tfrag-tree-count int32) + (ice-tfrag-trees drawable-tree-ice-tfrag 8) + (ice-tfrag-levels level 8) + (lowres-tfrag-tree-count int32) + (lowres-tfrag-trees drawable-tree-lowres-tfrag 8) + (lowres-tfrag-levels level 8) + (lowres-trans-tfrag-tree-count int32) + (lowres-trans-tfrag-trees drawable-tree-trans-tfrag 8) + (lowres-trans-tfrag-levels level 8) + (shrub-tree-count int32) + (shrub-trees drawable-tree-instance-shrub 8) + (shrub-levels level 8) + (tie-tree-count int32) + (tie-trees drawable-tree-instance-tie 8) + (tie-levels level 8) + (tie-generic basic 8) + (wait-to-vu0 uint32))) (define-extern add-pc-tfrag3-data (function dma-buffer level pointer)) diff --git a/goal_src/jak1/engine/gfx/background/background.gc b/goal_src/jak1/engine/gfx/background/background.gc index c0fdf00b23..17acaaac6f 100644 --- a/goal_src/jak1/engine/gfx/background/background.gc +++ b/goal_src/jak1/engine/gfx/background/background.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/gfx/tie/generic-tie-h.gc") (require "engine/gfx/tie/tie-h.gc") @@ -12,10 +11,6 @@ (require "engine/gfx/shrub/shrubbery-h.gc") (require "engine/ps2/vu1-macros.gc") -;; name: background.gc -;; name in dgo: background -;; dgos: GAME, ENGINE - ;; The "background" is a collection of renderers. ;; The recursive draw call through the drawable trees will add drawables to various lists. ;; After this, (finish-background) is called to finalize DMA lists. @@ -24,47 +19,39 @@ (defun background-upload-vu0 () "Set up VU0 for background." - ;; We set up VU0 with some code and data. ;; It looks like the intended use is to be able to do something like ;; vcallms , and then some point stored in a vf register will be transformed. ;; But I honestly - ;; would upload to vu0 program memory ;; (upload-vu-program background-vu0-block (&-> *background-work* wait-to-vu0)) - ;; set up math-camera registers: (let ((at-0 *math-camera*)) (with-vf (vf16 vf17 vf18 vf19 vf20 vf21 vf22 vf23 vf24 vf25 vf26 vf27 vf28 vf29 vf30 vf31) - :rw 'write - (.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 shrub-mat vector 0 quad)) - (.lvf vf21 (&-> at-0 shrub-mat vector 1 quad)) - (.lvf vf22 (&-> at-0 shrub-mat vector 2 quad)) - (.lvf vf23 (&-> at-0 shrub-mat vector 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)) - (.lvf vf28 (&-> at-0 camera-temp vector 0 quad)) - (.lvf vf29 (&-> at-0 camera-temp vector 1 quad)) - (.lvf vf30 (&-> at-0 camera-temp vector 2 quad)) - (.lvf vf31 (&-> at-0 camera-temp vector 3 quad)) - ) - ) - + :rw 'write + (.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 shrub-mat vector 0 quad)) + (.lvf vf21 (&-> at-0 shrub-mat vector 1 quad)) + (.lvf vf22 (&-> at-0 shrub-mat vector 2 quad)) + (.lvf vf23 (&-> at-0 shrub-mat vector 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)) + (.lvf vf28 (&-> at-0 camera-temp vector 0 quad)) + (.lvf vf29 (&-> at-0 camera-temp vector 1 quad)) + (.lvf vf30 (&-> at-0 camera-temp vector 2 quad)) + (.lvf vf31 (&-> at-0 camera-temp vector 3 quad)))) ;; here there would be a loop that waits for VIF0 DMA to be complete. - ;; now a vcallms 0. TODO: this will store all of the above data. But camera-rot premultiplies all values by z's. ;; It's used in shrubbery (at least). ;; I suspect it will be easier to modify specific renderers than to try to implement this in a general way. ;; (but this is likely still a good spot to set things up.) ) - (defun init-background () "Initialize the global *background-work*" (dotimes (v1-0 8) @@ -73,8 +60,7 @@ (set! (-> *background-work* dirt-tfrag-trees v1-0) #f) (set! (-> *background-work* ice-tfrag-trees v1-0) #f) (set! (-> *background-work* lowres-tfrag-trees v1-0) #f) - (set! (-> *background-work* lowres-trans-tfrag-trees v1-0) #f) - ) + (set! (-> *background-work* lowres-trans-tfrag-trees v1-0) #f)) (set! (-> *background-work* tfrag-tree-count) 0) (set! (-> *background-work* trans-tfrag-tree-count) 0) (set! (-> *background-work* dirt-tfrag-tree-count) 0) @@ -85,9 +71,7 @@ (set! (-> *background-work* tie-tree-count) 0) (set! (-> *background-work* wait-to-vu0) (the-as uint 0)) 0 - (none) - ) - + (none)) (defun upload-vis-bits ((arg0 level) (arg1 level) (arg2 bsp-header)) "Upload visibility data to the scratchpad." @@ -95,9 +79,7 @@ (let ((lev-vis-bits (the-as (pointer uint128) (-> arg0 vis-bits))) (all-vis (the-as (pointer uint128) (-> arg2 all-visible-list))) ;;(spad-vis (the-as (pointer uint128) (+ #x38b0 #x70000000))) - (spad-vis (scratchpad-ptr uint128 :offset VISIBLE_LIST_SCRATCHPAD)) - ) - + (spad-vis (scratchpad-ptr uint128 :offset VISIBLE_LIST_SCRATCHPAD))) (b! (not *artist-flip-visible*) cfg-5 :delay (nop!)) (nop!) (nop!) @@ -110,12 +92,7 @@ (nop!) (nop!) ;; xor with all visible to flip the bits of the things that exist. - (let ((a3-3 (logxor a3-2 (the-as uint t0-0)))) - (+! qwc -1) - (set! (-> spad-vis 0) a3-3) - ) - ) - ) + (let ((a3-3 (logxor a3-2 (the-as uint t0-0)))) (+! qwc -1) (set! (-> spad-vis 0) a3-3)))) (set! spad-vis (&-> spad-vis 1)) (b! (> qwc 0) cfg-2 :delay (nop!)) 0 @@ -130,16 +107,12 @@ (set! lev-vis-bits (&-> lev-vis-bits 1)) (nop!) (+! qwc -1) - (set! (-> spad-vis 0) a1-2) - ) - (set! spad-vis (&-> spad-vis 1)) - ) - (b! (> qwc 0) cfg-6 :delay (nop!)) - ) + (set! (-> spad-vis 0) a1-2)) + (set! spad-vis (&-> spad-vis 1))) + (b! (> qwc 0) cfg-6 :delay (nop!))) 0 (label cfg-8) - (none) - ) + (none)) (defun add-pc-port-background-data ((dma-buf dma-buffer)) ;; loop over levels @@ -153,44 +126,27 @@ (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 128)) (set! (-> packet vif0) (new 'static 'vif-tag)) (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) - (set! (-> dma-buf base) (the pointer (&+ packet 16))) - ) + (set! (-> dma-buf base) (the pointer (&+ packet 16)))) (quad-copy! (-> dma-buf base) (-> lev vis-bits) 128) - (&+! (-> dma-buf base) (* 16 128)) - ) + (&+! (-> dma-buf base) (* 16 128))) (else - (let ((packet (the-as dma-packet (-> dma-buf base)))) - (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 1)) - (set! (-> packet vif0) (new 'static 'vif-tag)) - (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) - (set! (-> dma-buf base) (the pointer (&+ packet 16))) - ) - (set! (-> (the (pointer uint128) (-> dma-buf base))) (the uint128 0)) - (&+! (-> dma-buf base) (* 16 1)) - ) - ) - - + (let ((packet (the-as dma-packet (-> dma-buf base)))) + (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 1)) + (set! (-> packet vif0) (new 'static 'vif-tag)) + (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) + (set! (-> dma-buf base) (the pointer (&+ packet 16)))) + (set! (-> (the (pointer uint128) (-> dma-buf base))) (the uint128 0)) + (&+! (-> dma-buf base) (* 16 1)))) (let ((a3-3 (-> dma-buf base))) (let ((v1-38 (the-as object (-> dma-buf base)))) (set! (-> (the-as dma-packet v1-38) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-38) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-38) vif1) (new 'static 'vif-tag)) - (set! (-> dma-buf base) (&+ (the-as pointer v1-38) 16)) - ) + (set! (-> dma-buf base) (&+ (the-as pointer v1-38) 16))) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) - - (bucket-id tfrag-0) - - + (bucket-id tfrag-0) dma-start - (the-as (pointer dma-tag) a3-3) - ) - ) - - ) - ) - ) + (the-as (pointer dma-tag) a3-3)))))) (define *use-etie* #t) @@ -198,38 +154,26 @@ "Complete the background drawing. This function should run after the background engine has executed. " - ;; set up common VU0 stuff for background. (background-upload-vu0) - (#when PC_PORT - (add-pc-port-background-data - (-> *display* frames (-> *display* on-screen) frame global-buf) - ) - ) - + (add-pc-port-background-data (-> *display* frames (-> *display* on-screen) frame global-buf))) ;;;;;;;;;;;;;;;; ;; shrubbery ;;;;;;;;;;;;;;;; - - (set! (-> *instance-shrub-work* paused) (paused?)) (when (nonzero? (-> *background-work* shrub-tree-count)) (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))) ;; iterate over all drawable trees (dotimes (gp-0 (-> *background-work* shrub-tree-count)) ;; update the level index in the scratchpad (set! (-> (scratchpad-object terrain-context) bsp lev-index) (-> *background-work* shrub-levels gp-0 index)) (flush-cache 0) (let ((s5-0 (-> *background-work* shrub-trees gp-0)) - (s4-0 (-> *background-work* shrub-levels gp-0)) - ) + (s4-0 (-> *background-work* shrub-levels gp-0))) ;; setup colors for shrub (skipping because I don't think we'll need it here...) ; (if (nonzero? (-> s5-0 colors-added)) ; (time-of-day-interp-colors @@ -239,78 +183,55 @@ ; ) ; ) ;; and draw! - (draw-drawable-tree-instance-shrub s5-0 s4-0) - ) - ) + (draw-drawable-tree-instance-shrub s5-0 s4-0))) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :g #x60 :b #x80 :a #x80) - ) - ) - ) - - - + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :g #x60 :b #x80 :a #x80)))) (let ((gp-1 (the-as level #f))) (when (or (nonzero? (-> *background-work* tfrag-tree-count)) (nonzero? (-> *background-work* trans-tfrag-tree-count)) (nonzero? (-> *background-work* dirt-tfrag-tree-count)) (nonzero? (-> *background-work* ice-tfrag-tree-count)) (nonzero? (-> *background-work* lowres-tfrag-tree-count)) - (nonzero? (-> *background-work* lowres-trans-tfrag-tree-count)) - ) + (nonzero? (-> *background-work* lowres-trans-tfrag-tree-count))) ;; setup the vf's for transformation again (not sure why we don't use the VU0 program...) (let ((v1-48 *math-camera*)) (with-vf (vf16 vf17 vf18 vf19 vf20 vf21 vf22 vf23 vf24 vf25 vf26 vf27 vf28 vf29 vf30 vf31) - :rw 'write - (.lvf vf16 (&-> v1-48 plane 0 quad)) - (.lvf vf17 (&-> v1-48 plane 1 quad)) - (.lvf vf18 (&-> v1-48 plane 2 quad)) - (.lvf vf19 (&-> v1-48 plane 3 quad)) - (.lvf vf20 (&-> v1-48 shrub-mat vector 0 quad)) - (.lvf vf21 (&-> v1-48 shrub-mat vector 1 quad)) - (.lvf vf22 (&-> v1-48 shrub-mat vector 2 quad)) - (.lvf vf23 (&-> v1-48 shrub-mat vector 3 quad)) - (.lvf vf24 (&-> v1-48 camera-rot vector 0 quad)) - (.lvf vf25 (&-> v1-48 camera-rot vector 1 quad)) - (.lvf vf26 (&-> v1-48 camera-rot vector 2 quad)) - (.lvf vf27 (&-> v1-48 camera-rot vector 3 quad)) - (.lvf vf28 (&-> v1-48 camera-temp vector 0 quad)) - (.lvf vf29 (&-> v1-48 camera-temp vector 1 quad)) - (.lvf vf30 (&-> v1-48 camera-temp vector 2 quad)) - (.lvf vf31 (&-> v1-48 camera-temp vector 3 quad)) - (.lvf vf31 (&-> v1-48 camera-temp vector 3 quad)) - ) - ) - + :rw 'write + (.lvf vf16 (&-> v1-48 plane 0 quad)) + (.lvf vf17 (&-> v1-48 plane 1 quad)) + (.lvf vf18 (&-> v1-48 plane 2 quad)) + (.lvf vf19 (&-> v1-48 plane 3 quad)) + (.lvf vf20 (&-> v1-48 shrub-mat vector 0 quad)) + (.lvf vf21 (&-> v1-48 shrub-mat vector 1 quad)) + (.lvf vf22 (&-> v1-48 shrub-mat vector 2 quad)) + (.lvf vf23 (&-> v1-48 shrub-mat vector 3 quad)) + (.lvf vf24 (&-> v1-48 camera-rot vector 0 quad)) + (.lvf vf25 (&-> v1-48 camera-rot vector 1 quad)) + (.lvf vf26 (&-> v1-48 camera-rot vector 2 quad)) + (.lvf vf27 (&-> v1-48 camera-rot vector 3 quad)) + (.lvf vf28 (&-> v1-48 camera-temp vector 0 quad)) + (.lvf vf29 (&-> v1-48 camera-temp vector 1 quad)) + (.lvf vf30 (&-> v1-48 camera-temp vector 2 quad)) + (.lvf vf31 (&-> v1-48 camera-temp vector 3 quad)) + (.lvf vf31 (&-> v1-48 camera-temp vector 3 quad)))) ;; TFRAG (let* ((v1-52 (max (-> *background-work* tfrag-tree-count) (-> *background-work* trans-tfrag-tree-count))) (s4-1 (the-as time-of-day-palette #f)) - (s5-2 (max (max v1-52 - (-> *background-work* lowres-tfrag-tree-count)) - (-> *background-work* lowres-trans-tfrag-tree-count) - ) - ) - ) + (s5-2 (max (max v1-52 (-> *background-work* lowres-tfrag-tree-count)) (-> *background-work* lowres-trans-tfrag-tree-count)))) (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))) ;; loop over all tfrag trees (dotimes (s3-0 s5-2) - ;;;;;;;;;;;;;; Normal TFRAG (let ((s2-0 (-> *background-work* tfrag-trees s3-0))) (when s2-0 (let ((s1-0 (-> *background-work* tfrag-levels s3-0))) (let ((a2-4 (-> s1-0 bsp)) - (s0-0 (-> s2-0 time-of-day-pal)) - ) + (s0-0 (-> s2-0 time-of-day-pal))) ;; load visibility data (upload-vis-bits s1-0 gp-1 a2-4) ;; update colors, but only if needed @@ -318,182 +239,109 @@ (flush-cache 0) ;;(time-of-day-interp-colors-scratch (scratchpad-ptr rgba :offset 6160) s0-0 (-> s1-0 mood)) ;; remember the previous colors - (set! s4-1 s0-0) - ) - ) + (set! s4-1 s0-0))) ;; set the level. (set! (-> (scratchpad-object terrain-context) bsp lev-index) (-> s1-0 index)) - - (set! (-> *tfrag-work* min-dist z) 4095996000.0) - ;; draw! - (draw-drawable-tree-tfrag s2-0 s1-0) - ) + (set! (-> *tfrag-work* min-dist z) 4095996000.0) + ;; draw! + (draw-drawable-tree-tfrag s2-0 s1-0)) ;; remember closest. (set! (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 0) - (-> *tfrag-work* min-dist z) - ) - ) - ) - + (-> *tfrag-work* min-dist z)))) ;;;;;;;;;;;;;; Trans TFRAG (let ((s2-1 (-> *background-work* trans-tfrag-trees s3-0))) (when s2-1 (let ((s1-1 (-> *background-work* trans-tfrag-levels s3-0))) (let ((a2-6 (-> s1-1 bsp)) - (s0-1 (-> s2-1 time-of-day-pal)) - ) + (s0-1 (-> s2-1 time-of-day-pal))) (upload-vis-bits s1-1 gp-1 a2-6) (when (not (or (zero? s0-1) (= s4-1 s0-1))) (flush-cache 0) ;;(time-of-day-interp-colors-scratch (scratchpad-ptr rgba :offset 6160) s0-1 (-> s1-1 mood)) - (set! s4-1 s0-1) - ) - ) + (set! s4-1 s0-1))) (set! (-> (scratchpad-object terrain-context) bsp lev-index) (-> s1-1 index)) - - (set! (-> *tfrag-work* min-dist z) 4095996000.0) - (draw-drawable-tree-trans-tfrag s2-1 s1-1) - ) + (set! (-> *tfrag-work* min-dist z) 4095996000.0) + (draw-drawable-tree-trans-tfrag s2-1 s1-1)) (set! (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) - (-> *tfrag-work* min-dist z) - ) - ) - ) - - + (-> *tfrag-work* min-dist z)))) ;;;;;;;;;;;;;; DIRT TFRAG (let ((s2-2 (-> *background-work* dirt-tfrag-trees s3-0))) (when s2-2 (let ((s1-2 (-> *background-work* dirt-tfrag-levels s3-0))) (let ((a2-8 (-> s1-2 bsp)) - (s0-2 (-> s2-2 time-of-day-pal)) - ) + (s0-2 (-> s2-2 time-of-day-pal))) (upload-vis-bits s1-2 gp-1 a2-8) (when (not (or (zero? s0-2) (= s4-1 s0-2))) (flush-cache 0) ;;(time-of-day-interp-colors-scratch (scratchpad-ptr rgba :offset 6160) s0-2 (-> s1-2 mood)) - (set! s4-1 s0-2) - ) - ) + (set! s4-1 s0-2))) (set! (-> (scratchpad-object terrain-context) bsp lev-index) (-> s1-2 index)) - - (set! (-> *tfrag-work* min-dist z) 4095996000.0) - (draw-drawable-tree-dirt-tfrag s2-2 s1-2) - ) + (set! (-> *tfrag-work* min-dist z) 4095996000.0) + (draw-drawable-tree-dirt-tfrag s2-2 s1-2)) (set! (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) (fmin (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) - (-> *tfrag-work* min-dist z) - ) - ) - ) - ) - - + (-> *tfrag-work* min-dist z))))) ;;;;;;;;;;;;;; ICE TFRAG (let ((s2-3 (-> *background-work* ice-tfrag-trees s3-0))) (when s2-3 (let ((s1-3 (-> *background-work* ice-tfrag-levels s3-0))) (let ((a2-10 (-> s1-3 bsp)) - (s0-3 (-> s2-3 time-of-day-pal)) - ) + (s0-3 (-> s2-3 time-of-day-pal))) (upload-vis-bits s1-3 gp-1 a2-10) (when (not (or (zero? s0-3) (= s4-1 s0-3))) (flush-cache 0) ;;(time-of-day-interp-colors-scratch (scratchpad-ptr rgba :offset 6160) s0-3 (-> s1-3 mood)) - (set! s4-1 s0-3) - ) - ) + (set! s4-1 s0-3))) (set! (-> (scratchpad-object terrain-context) bsp lev-index) (-> s1-3 index)) - - (set! (-> *tfrag-work* min-dist z) 4095996000.0) - (draw-drawable-tree-ice-tfrag s2-3 s1-3) - ) + (set! (-> *tfrag-work* min-dist z) 4095996000.0) + (draw-drawable-tree-ice-tfrag s2-3 s1-3)) (set! (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) - (fmin (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) - (-> *tfrag-work* min-dist z) - ) - ) - ) - ) - - - + (fmin (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) + (-> *tfrag-work* min-dist z))))) ;;;;;;;;;;;;;; LOWRES TFRAG (let ((s2-4 (-> *background-work* lowres-tfrag-trees s3-0))) (when s2-4 (let ((s1-4 (-> *background-work* lowres-tfrag-levels s3-0))) (let ((a2-12 (-> s1-4 bsp)) - (s0-4 (-> s2-4 time-of-day-pal)) - ) + (s0-4 (-> s2-4 time-of-day-pal))) (upload-vis-bits s1-4 gp-1 a2-12) (when (not (or (zero? s0-4) (= s4-1 s0-4))) (flush-cache 0) ;;(time-of-day-interp-colors-scratch (scratchpad-ptr rgba :offset 6160) s0-4 (-> s1-4 mood)) - (set! s4-1 s0-4) - ) - ) + (set! s4-1 s0-4))) (set! (-> (scratchpad-object terrain-context) bsp lev-index) (-> s1-4 index)) - - ;;(format 0 "draw ~A~%" s2-4) - (draw-drawable-tree-tfrag s2-4 s1-4) - ) - ) - ) - + ;;(format 0 "draw ~A~%" s2-4) + (draw-drawable-tree-tfrag s2-4 s1-4)))) ;;;;;;;;;;;;;; LOWRES TRANS TFRAG (let ((s2-5 (-> *background-work* lowres-trans-tfrag-trees s3-0))) (when s2-5 (let ((s1-5 (-> *background-work* lowres-trans-tfrag-levels s3-0))) (let ((a2-14 (-> s1-5 bsp)) - (s0-5 (-> s2-5 time-of-day-pal)) - ) + (s0-5 (-> s2-5 time-of-day-pal))) (upload-vis-bits s1-5 gp-1 a2-14) (when (not (or (zero? s0-5) (= s4-1 s0-5))) (flush-cache 0) ;;(time-of-day-interp-colors-scratch (scratchpad-ptr rgba :offset 6160) s0-5 (-> s1-5 mood)) - (set! s4-1 s0-5) - ) - ) + (set! s4-1 s0-5))) (set! (-> (scratchpad-object terrain-context) bsp lev-index) (-> s1-5 index)) - - (set! (-> *tfrag-work* min-dist z) 4095996000.0) - (draw-drawable-tree-trans-tfrag s2-5 s1-5) - ) + (set! (-> *tfrag-work* min-dist z) 4095996000.0) + (draw-drawable-tree-trans-tfrag s2-5 s1-5)) (set! (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) - (fmin (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) - (-> *tfrag-work* min-dist z) - ) - ) - ) - ) - ) - ) + (fmin (-> *level* level (-> (scratchpad-object terrain-context) bsp lev-index) closest-object 3) + (-> *tfrag-work* min-dist z))))))) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :g #x80 :b #x60 :a #x80) - ) - ) - ) - - + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :g #x80 :b #x60 :a #x80)))) ;;;;;;;;;; TIE (TFRAG Instance Engine) - ;; common setup (set! (-> *instance-tie-work* paused) (paused?)) (when (nonzero? (-> *background-work* tie-tree-count)) - (tie-near-make-perspective-matrix - (-> *instance-tie-work* tie-near-perspective-matrix) - ) + (tie-near-make-perspective-matrix (-> *instance-tie-work* tie-near-perspective-matrix)) (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))) ;;;;;;;;;; Normal TIE (dotimes (s5-3 (-> *background-work* tie-tree-count)) (let ((s4-2 (-> *background-work* tie-levels s5-3))) @@ -501,26 +349,16 @@ (when (!= s4-2 gp-1) (set! (-> *instance-tie-work* min-dist x) 4095996000.0) (upload-vis-bits s4-2 gp-1 a2-18) - (set! gp-1 s4-2) - ) - ) + (set! gp-1 s4-2))) (set! (-> (scratchpad-object terrain-context) bsp lev-index) (-> s4-2 index)) (set! (-> (scratchpad-object terrain-context) bsp mood) (-> s4-2 mood)) - (draw-drawable-tree-instance-tie (-> *background-work* tie-trees s5-3) s4-2) - ) + (draw-drawable-tree-instance-tie (-> *background-work* tie-trees s5-3) s4-2)) ;; todo, type here probably wrong. - (set! (-> *background-work* tie-generic s5-3) - (the-as basic (-> *instance-tie-work* first-generic-prototype)) - ) - ) + (set! (-> *background-work* tie-generic s5-3) (the-as basic (-> *instance-tie-work* first-generic-prototype)))) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #x20 :b #x60 :a #x80) - ) - ) - + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #x20 :b #x60 :a #x80))) ;; TIE Generic (when (not *use-etie*) (dotimes (gp-2 (-> *background-work* tie-tree-count)) @@ -528,30 +366,17 @@ ;; send to the generic foreground with tfrag textures bucket for this level (let* ((s5-4 (-> *background-work* tie-levels gp-2 tfrag-tex-foreground-sink-group generic-sink)) (s3-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s4-3 (-> s3-1 base)) - ) + (s4-3 (-> s3-1 base))) (generic-tie-execute s5-4 s3-1 (-> *background-work* tie-generic gp-2)) (let ((a3-0 (-> s3-1 base))) (let ((v1-219 (the-as object (-> s3-1 base)))) (set! (-> (the-as dma-packet v1-219) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-219) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-219) vif1) (new 'static 'vif-tag)) - (set! (-> s3-1 base) (&+ (the-as pointer v1-219) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (-> s5-4 bucket) - s4-3 - (the-as (pointer dma-tag) a3-0) - ) - ) - ) - ) - ) - ) - ) - - ) + (set! (-> s3-1 base) (&+ (the-as pointer v1-219) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (-> s5-4 bucket) + s4-3 + (the-as (pointer dma-tag) a3-0))))))))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/background/prototype-h.gc b/goal_src/jak1/engine/gfx/background/prototype-h.gc index 2cf7eb9bf0..f4e2b71218 100644 --- a/goal_src/jak1/engine/gfx/background/prototype-h.gc +++ b/goal_src/jak1/engine/gfx/background/prototype-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-h.gc") -;; name: prototype-h.gc -;; name in dgo: prototype-h -;; dgos: GAME, ENGINE - ;; The "prototype" system is used for instanced background rendering (shrub and tie). ;; DECOMP BEGINS @@ -18,33 +13,30 @@ ;; a geom, based on distance from the camera (or other settings) and will add itself to the list ;; for that geom. (deftype prototype-bucket (basic) - ((name string) - (flags uint32) - (in-level uint16) - (utextures uint16) - (geometry drawable 4) ;; the 4 levels of detail - (dists vector :inline) ;; lod settings - (rdists vector :inline) ;; lod settings - (next uint32 4) ;; linked list of instances of each geom. - (count uint16 4) ;; number of each instance with each geom. - + ((name string) + (flags uint32) + (in-level uint16) + (utextures uint16) + (geometry drawable 4) ;; the 4 levels of detail + (dists vector :inline) ;; lod settings + (rdists vector :inline) ;; lod settings + (next uint32 4) ;; linked list of instances of each geom. + (count uint16 4) ;; number of each instance with each geom. ;; overlays - (near-plane meters :overlay-at (-> dists x)) - (near-stiff meters :overlay-at (-> dists y)) - (mid-plane meters :overlay-at (-> dists z)) - (far-plane meters :overlay-at (-> dists w)) - (rlength-near float :overlay-at (-> rdists x)) - (rlength-stiff float :overlay-at (-> rdists y)) - (rlength-mid float :overlay-at (-> rdists z)) - (stiffness float :overlay-at (-> rdists w)) - (next-clear uint128 :overlay-at (-> next 0)) - (next-clear-1 int32 :overlay-at (-> next 0)) - (next-clear-2 int32 :overlay-at (-> next 1)) - (next-clear-3 int32 :overlay-at (-> next 2)) - (next-clear-4 int32 :overlay-at (-> next 3)) - (count-clear uint64 :overlay-at (-> count 0)) - ) - ) + (near-plane meters :overlay-at (-> dists x)) + (near-stiff meters :overlay-at (-> dists y)) + (mid-plane meters :overlay-at (-> dists z)) + (far-plane meters :overlay-at (-> dists w)) + (rlength-near float :overlay-at (-> rdists x)) + (rlength-stiff float :overlay-at (-> rdists y)) + (rlength-mid float :overlay-at (-> rdists z)) + (stiffness float :overlay-at (-> rdists w)) + (next-clear uint128 :overlay-at (-> next 0)) + (next-clear-1 int32 :overlay-at (-> next 0)) + (next-clear-2 int32 :overlay-at (-> next 1)) + (next-clear-3 int32 :overlay-at (-> next 2)) + (next-clear-4 int32 :overlay-at (-> next 3)) + (count-clear uint64 :overlay-at (-> count 0)))) ;;;;;;;;;;;;;;; ;; shrub @@ -52,27 +44,21 @@ ;; specialization for shrub. We keep the end of the linked list too. (deftype prototype-bucket-shrub (prototype-bucket) - ((mod-count uint16 4) - (last dma-packet 4) - (count-clear-qword uint128 :overlay-at (-> count 0)) - (last-clear uint128 :overlay-at (-> last 0)) - ) - ) + ((mod-count uint16 4) + (last dma-packet 4) + (count-clear-qword uint128 :overlay-at (-> count 0)) + (last-clear uint128 :overlay-at (-> last 0)))) ;; array of all the prototypes in a shrub tree. (deftype prototype-inline-array-shrub (drawable) - ((length int16 :offset 6) - (data prototype-bucket-shrub 1 :inline :offset 32) - (_pad uint32) - ) - ) + ((length int16 :offset 6) + (data prototype-bucket-shrub 1 :inline :offset 32) + (_pad uint32))) ;; shrub prototypes, plus a pointer to the level's wind data. (deftype prototype-array-shrub-info (basic) - ((prototype-inline-array-shrub prototype-inline-array-shrub) - (wind-vectors uint32) - ) - ) + ((prototype-inline-array-shrub prototype-inline-array-shrub) + (wind-vectors uint32))) ;;;;;;;;;;;;;;; ;; tie @@ -84,43 +70,38 @@ ;; - instanced collision (declare-type drawable-inline-array-collide-fragment drawable-inline-array) + (declare-type prototype-tie drawable) + ;; prototype for a TIE (deftype prototype-bucket-tie (prototype-bucket) - ((generic-count uint16 4) - (generic-next uint32 4) - (frag-count uint8 4) - (index-start uint8 4) - (base-qw uint16 4) - (envmap-rfade float) - (envmap-fade-far float) - (envmap-shader adgif-shader) - (collide-frag drawable-inline-array-collide-fragment) - (tie-colors time-of-day-palette) - (data uint32 :dynamic) - (color-index-qwc uint32 :dynamic) - (generic-next-clear uint128 :overlay-at (-> generic-next 0)) - (generic-count-clear uint128 :overlay-at (-> count 0)) - (geometry-override prototype-tie 4 :overlay-at (-> geometry 0)) - ) - ) + ((generic-count uint16 4) + (generic-next uint32 4) + (frag-count uint8 4) + (index-start uint8 4) + (base-qw uint16 4) + (envmap-rfade float) + (envmap-fade-far float) + (envmap-shader adgif-shader) + (collide-frag drawable-inline-array-collide-fragment) + (tie-colors time-of-day-palette) + (data uint32 :dynamic) + (color-index-qwc uint32 :dynamic) + (generic-next-clear uint128 :overlay-at (-> generic-next 0)) + (generic-count-clear uint128 :overlay-at (-> count 0)) + (geometry-override prototype-tie 4 :overlay-at (-> geometry 0)))) ;; all tie prototypes in a tie tree. (note, not inline like shrub) (deftype prototype-array-tie (array) - ((array-data prototype-bucket-tie :dynamic :offset 16) - ) + ((array-data prototype-bucket-tie :dynamic :offset 16)) (:methods - (login (_type_) none) - ) - ) + (login (_type_) none))) ;; all tie prototypes and pointer to level's wind data. ;; in practice, they are shared with all tie/shrub trees in the level (deftype proxy-prototype-array-tie (basic) - ((prototype-array-tie prototype-array-tie) - (wind-vectors uint32) - ) - ) + ((prototype-array-tie prototype-array-tie) + (wind-vectors uint32))) ;;;;;;;;;;;; ;; instance @@ -129,10 +110,8 @@ ;; note: more specific instances are available in tie/shrub files. (deftype instance (drawable) - ((bucket-index uint16 :offset 6) - (error (pointer drawable-error) :offset 8) - (origin matrix4h :inline) - (unknown-vector vector :inline :overlay-at (-> origin data 0)) - (wind-index uint16 :overlay-at (-> origin data 15)) - ) - ) + ((bucket-index uint16 :offset 6) + (error (pointer drawable-error) :offset 8) + (origin matrix4h :inline) + (unknown-vector vector :inline :overlay-at (-> origin data 0)) + (wind-index uint16 :overlay-at (-> origin data 15)))) diff --git a/goal_src/jak1/engine/gfx/background/prototype.gc b/goal_src/jak1/engine/gfx/background/prototype.gc index 134aa21405..b5c31a5218 100644 --- a/goal_src/jak1/engine/gfx/background/prototype.gc +++ b/goal_src/jak1/engine/gfx/background/prototype.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/collide-frag.gc") (require "engine/draw/drawable.gc") -;; name: prototype.gc -;; name in dgo: prototype -;; dgos: GAME, ENGINE - ;; shared code for the tie and shrub prototypes ;; DECOMP BEGINS @@ -17,12 +12,7 @@ (dotimes (s5-0 (-> this length)) (let ((s4-0 (-> this array-data s5-0))) (dotimes (s3-0 4) - (let ((a0-1 (-> s4-0 geometry s3-0))) - (if (nonzero? a0-1) - (login a0-1) - ) - ) - ) + (let ((a0-1 (-> s4-0 geometry s3-0))) (if (nonzero? a0-1) (login a0-1)))) (let ((s4-1 (-> s4-0 envmap-shader))) (when (nonzero? s4-1) (adgif-shader-login-no-remap s4-1) @@ -33,108 +23,64 @@ (set! (-> s4-1 prims 3) (gs-reg64 tex1-1)) (set! (-> s4-1 prims 5) (gs-reg64 miptbp1-1)) (set! (-> s4-1 clamp-reg) (gs-reg64 clamp-1)) - (set! (-> s4-1 prims 9) (gs-reg64 alpha-1)) - ) - ) - ) - ) - (none) - ) + (set! (-> s4-1 prims 9) (gs-reg64 alpha-1)))))) + (none)) (defmethod login ((this prototype-inline-array-shrub)) (dotimes (s5-0 (-> this length)) (let ((s4-0 (-> this data s5-0))) (dotimes (s3-0 4) - (let ((a0-1 (-> s4-0 geometry s3-0))) - (if (nonzero? a0-1) - (login a0-1) - ) - ) - ) - ) - ) - this - ) + (let ((a0-1 (-> s4-0 geometry s3-0))) (if (nonzero? a0-1) (login a0-1)))))) + this) (defmethod mem-usage ((this prototype-array-tie) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-8 (asize-of this))) - (+! (-> arg0 data 0 used) v1-8) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-8 15))) - ) + (let ((v1-8 (asize-of this))) (+! (-> arg0 data 0 used) v1-8) (+! (-> arg0 data 0 total) (logand -16 (+ v1-8 15)))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this array-data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this array-data s3-0) arg0 arg1)) + this) (defmethod mem-usage ((this prototype-bucket-tie) (arg0 memory-usage-block) (arg1 int)) (dotimes (s3-0 4) - (let ((a0-1 (-> this geometry s3-0))) - (if (nonzero? a0-1) - (mem-usage a0-1 arg0 (logior arg1 1)) - ) - ) - ) + (let ((a0-1 (-> this geometry s3-0))) (if (nonzero? a0-1) (mem-usage a0-1 arg0 (logior arg1 1))))) (set! (-> arg0 length) (max 81 (-> arg0 length))) (set! (-> arg0 data 80 name) "string") (+! (-> arg0 data 80 count) 1) (let ((v1-13 (asize-of (-> this name)))) (+! (-> arg0 data 80 used) v1-13) - (+! (-> arg0 data 80 total) (logand -16 (+ v1-13 15))) - ) + (+! (-> arg0 data 80 total) (logand -16 (+ v1-13 15)))) (when (nonzero? (-> this tie-colors)) (set! (-> arg0 length) (max 17 (-> arg0 length))) (set! (-> arg0 data 16 name) "tie-pal") (+! (-> arg0 data 16 count) 1) (let ((v1-25 (asize-of (-> this tie-colors)))) (+! (-> arg0 data 16 used) v1-25) - (+! (-> arg0 data 16 total) (logand -16 (+ v1-25 15))) - ) - ) - (if (nonzero? (-> this collide-frag)) - (mem-usage (-> this collide-frag) arg0 (logior arg1 1)) - ) - this - ) + (+! (-> arg0 data 16 total) (logand -16 (+ v1-25 15))))) + (if (nonzero? (-> this collide-frag)) (mem-usage (-> this collide-frag) arg0 (logior arg1 1))) + this) (defmethod mem-usage ((this prototype-inline-array-shrub) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-8 (asize-of this))) - (+! (-> arg0 data 0 used) v1-8) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-8 15))) - ) + (let ((v1-8 (asize-of this))) (+! (-> arg0 data 0 used) v1-8) (+! (-> arg0 data 0 total) (logand -16 (+ v1-8 15)))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) (defmethod mem-usage ((this prototype-bucket-shrub) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 25 (-> arg0 length))) (set! (-> arg0 data 24 name) "prototype-bucket-shrub") (+! (-> arg0 data 24 count) 1) - (let ((v1-5 112)) - (+! (-> arg0 data 24 used) v1-5) - (+! (-> arg0 data 24 total) (logand -16 (+ v1-5 15))) - ) + (let ((v1-5 112)) (+! (-> arg0 data 24 used) v1-5) (+! (-> arg0 data 24 total) (logand -16 (+ v1-5 15)))) (dotimes (s3-0 4) - (let ((a0-5 (-> this geometry s3-0))) - (if (nonzero? a0-5) - (mem-usage a0-5 arg0 (logior arg1 1)) - ) - ) - ) + (let ((a0-5 (-> this geometry s3-0))) (if (nonzero? a0-5) (mem-usage a0-5 arg0 (logior arg1 1))))) (set! (-> arg0 length) (max 81 (-> arg0 length))) (set! (-> arg0 data 80 name) "string") (+! (-> arg0 data 80 count) 1) (let ((v1-22 (asize-of (-> this name)))) (+! (-> arg0 data 80 used) v1-22) - (+! (-> arg0 data 80 total) (logand -16 (+ v1-22 15))) - ) - this - ) + (+! (-> arg0 data 80 total) (logand -16 (+ v1-22 15)))) + this) diff --git a/goal_src/jak1/engine/gfx/background/subdivide-h.gc b/goal_src/jak1/engine/gfx/background/subdivide-h.gc index ff9497ff85..92c1a4a9c3 100644 --- a/goal_src/jak1/engine/gfx/background/subdivide-h.gc +++ b/goal_src/jak1/engine/gfx/background/subdivide-h.gc @@ -1,172 +1,120 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/bsp-h.gc") (require "engine/util/types-h.gc") -;; name: subdivide-h.gc -;; name in dgo: subdivide-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype subdivide-settings (basic) - ((dist float 5) - (meters float 5) - (close float 4) - (far float 4) - ) + ((dist float 5) + (meters float 5) + (close float 4) + (far float 4)) (:methods - (new (symbol type meters meters) _type_) - ) - ) - + (new (symbol type meters meters) _type_))) (defmethod new subdivide-settings ((allocation symbol) (type-to-make type) (arg0 meters) (arg1 meters)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (dotimes (v1-2 3) (set! (-> v0-0 close v1-2) arg0) - (set! (-> v0-0 far v1-2) arg1) - ) - v0-0 - ) - ) + (set! (-> v0-0 far v1-2) arg1)) + v0-0)) (deftype subdivide-dists (structure) - ((data uint32 32 :offset 0) - (vector vector 8 :inline :overlay-at (-> data 0)) - (k0s uint128 4 :overlay-at vector) - (k1s uint128 4 :overlay-at (-> data 16)) - ) - ) - + ((data uint32 32 :offset 0) + (vector vector 8 :inline :overlay-at (-> data 0)) + (k0s uint128 4 :overlay-at vector) + (k1s uint128 4 :overlay-at (-> data 16)))) (deftype gs-packed-rgba (structure) - ((data int32 4) - (red int32 :overlay-at (-> data 0)) - (green int32 :overlay-at (-> data 1)) - (blue int32 :overlay-at (-> data 2)) - (alpha int32 :overlay-at (-> data 3)) - ) - ) - + ((data int32 4) + (red int32 :overlay-at (-> data 0)) + (green int32 :overlay-at (-> data 1)) + (blue int32 :overlay-at (-> data 2)) + (alpha int32 :overlay-at (-> data 3)))) (deftype gs-packed-xyzw (structure) - ((data int32 4) - (x int32 :overlay-at (-> data 0)) - (y int32 :overlay-at (-> data 1)) - (z int32 :overlay-at (-> data 2)) - (w int32 :overlay-at (-> data 3)) - (quad uint128 :overlay-at (-> data 0)) - ) - ) - + ((data int32 4) + (x int32 :overlay-at (-> data 0)) + (y int32 :overlay-at (-> data 1)) + (z int32 :overlay-at (-> data 2)) + (w int32 :overlay-at (-> data 3)) + (quad uint128 :overlay-at (-> data 0)))) (deftype gs-packed-stq (structure) - ((data float 4) - (tex-s float :overlay-at (-> data 0)) - (tex-t float :overlay-at (-> data 1)) - (tex-q float :overlay-at (-> data 2)) - (quad uint128 :overlay-at (-> data 0)) - ) - ) - + ((data float 4) + (tex-s float :overlay-at (-> data 0)) + (tex-t float :overlay-at (-> data 1)) + (tex-q float :overlay-at (-> data 2)) + (quad uint128 :overlay-at (-> data 0)))) (deftype gs-packed-gt (structure) - ((stq gs-packed-stq :inline) - (rgba gs-packed-rgba :inline) - (xyzw gs-packed-xyzw :inline) - ) - ) - + ((stq gs-packed-stq :inline) + (rgba gs-packed-rgba :inline) + (xyzw gs-packed-xyzw :inline))) (deftype gs-packed-gt4 (structure) - ((data gs-packed-gt 4 :inline) - ) - ) - + ((data gs-packed-gt 4 :inline))) (deftype terrain-bsp (structure) - ((lev-index int32) - (mood basic) - ) - ) - + ((lev-index int32) + (mood basic))) (deftype terrain-stats (structure) - ((pris tr-stat :inline) - (tie-generic tr-stat :inline) - (tie tr-stat :inline) - (tie-near tr-stat :inline) - (shrub-near tr-stat :inline) - (shrub tr-stat :inline) - (tfrag-near tr-stat :inline) - (tfrag tr-stat :inline) - (billboard tr-stat :inline) - (trans-tfrag tr-stat :inline) - (trans-tfrag-near tr-stat :inline) - (trans-pris tr-stat :inline) - (trans-shrub tr-stat :inline) - (ocean-mid tr-stat :inline) - (ocean-near tr-stat :inline) - (total tr-stat :inline) - ) - ) - + ((pris tr-stat :inline) + (tie-generic tr-stat :inline) + (tie tr-stat :inline) + (tie-near tr-stat :inline) + (shrub-near tr-stat :inline) + (shrub tr-stat :inline) + (tfrag-near tr-stat :inline) + (tfrag tr-stat :inline) + (billboard tr-stat :inline) + (trans-tfrag tr-stat :inline) + (trans-tfrag-near tr-stat :inline) + (trans-pris tr-stat :inline) + (trans-shrub tr-stat :inline) + (ocean-mid tr-stat :inline) + (ocean-near tr-stat :inline) + (total tr-stat :inline))) (deftype dma-area (structure) - ((draw-node-dma draw-node-dma :inline :offset 0) - (tfrag-dma tfrag-dma :inline :offset 0) - (instance-shrub-dma instance-shrub-dma :inline :offset 0) - (instance-tie-dma instance-tie-dma :inline :offset 0) - (prototype-tie-dma prototype-tie-dma :inline :offset 0) - (time-of-day-dma time-of-day-dma :inline :offset 0) - (decomp-work decomp-work :inline :offset 0) - (ocean-vertex ocean-vertex 4 :inline :offset 0) - ) - ) - + ((draw-node-dma draw-node-dma :inline :offset 0) + (tfrag-dma tfrag-dma :inline :offset 0) + (instance-shrub-dma instance-shrub-dma :inline :offset 0) + (instance-tie-dma instance-tie-dma :inline :offset 0) + (prototype-tie-dma prototype-tie-dma :inline :offset 0) + (time-of-day-dma time-of-day-dma :inline :offset 0) + (decomp-work decomp-work :inline :offset 0) + (ocean-vertex ocean-vertex 4 :inline :offset 0))) (deftype background-area (structure) - ((dma-area dma-area :inline) - (vis-list uint8 2048) - ) - ) - + ((dma-area dma-area :inline) + (vis-list uint8 2048))) (deftype foreground-area (structure) - ((joint-work joint-work :inline) - (generic-work generic-work :inline :overlay-at (-> joint-work temp-mtx data 0)) - (bone-mem bone-memory :inline :overlay-at (-> joint-work temp-mtx data 0)) - (shadow-work shadow-work :inline :overlay-at (-> joint-work temp-mtx data 0)) - ) - ) - + ((joint-work joint-work :inline) + (generic-work generic-work :inline :overlay-at (-> joint-work temp-mtx data 0)) + (bone-mem bone-memory :inline :overlay-at (-> joint-work temp-mtx data 0)) + (shadow-work shadow-work :inline :overlay-at (-> joint-work temp-mtx data 0)))) (deftype ambient-area (structure) - ((ambient-list ambient-list :inline) - ) - ) - + ((ambient-list ambient-list :inline))) (deftype work-area (structure) - ((background background-area :inline) - (foreground foreground-area :inline :offset 0) - (ambient ambient-area :inline :offset 0) - ) - ) - + ((background background-area :inline) + (foreground foreground-area :inline :offset 0) + (ambient ambient-area :inline :offset 0))) (deftype terrain-context (structure) - ((bsp terrain-bsp :inline) - (work work-area :inline) - ) - ) - + ((bsp terrain-bsp :inline) + (work work-area :inline))) (define *terrain-stats* (new 'global 'terrain-stats)) (define *collide-stats* (new 'global 'collide-stats)) + (define-extern *subdivide-settings* subdivide-settings) + (define-extern update-subdivide-settings! (function subdivide-settings math-camera int none)) diff --git a/goal_src/jak1/engine/gfx/background/subdivide.gc b/goal_src/jak1/engine/gfx/background/subdivide.gc index 561e2850f2..d1474db5fb 100644 --- a/goal_src/jak1/engine/gfx/background/subdivide.gc +++ b/goal_src/jak1/engine/gfx/background/subdivide.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/gfx/tfrag/tfrag-h.gc") (require "engine/debug/stats-h.gc") (require "engine/gfx/background/subdivide-h.gc") -;; name: subdivide.gc -;; name in dgo: subdivide -;; dgos: GAME, ENGINE - ;; This file mainly contains statistics stuff for the background renderers. ;; And the mysterious "gomi stats hack", abbreviated GSH. @@ -25,12 +20,13 @@ (set! (-> arg0 dverts) (the-as uint 0)) (set! (-> arg0 instances) (the-as uint 0)) 0 - (none) - ) + (none)) ;; These contain the groups/frags/tris/dverts/insts statistics. (define *stat-string-tfrag* (new 'global 'string 128 (the-as string #f))) + (define *stat-string-tfrag-near* (new 'global 'string 128 (the-as string #f))) + (define *stat-string-total* (new 'global 'string 128 (the-as string #f))) (defun-debug print-tr-stat ((stat tr-stat) (name string) (dest string)) @@ -38,7 +34,11 @@ (clear dest) (when (nonzero? (+ (-> stat groups) (-> stat fragments) (-> stat tris) (-> stat dverts) (-> stat instances))) (format dest "~0k~4d ~5d ~6d ~6d" (-> stat groups) (-> stat fragments) (-> stat tris) (-> stat dverts)) - (format dest "~0k ~7f ~5d ~s" (/ (* 2.0 (the float (-> stat tris))) (the float (- (-> stat dverts) (-> stat tris)))) (-> stat instances) name) + (format dest + "~0k ~7f ~5d ~s" + (/ (* 2.0 (the float (-> stat tris))) (the float (- (-> stat dverts) (-> stat tris)))) + (-> stat instances) + name) ;; print to the screen (format *stdcon* "~S~%" dest) ;; update total @@ -46,37 +46,25 @@ (+! (-> *terrain-stats* total fragments) (-> stat fragments)) (+! (-> *terrain-stats* total tris) (-> stat tris)) (+! (-> *terrain-stats* total dverts) (-> stat dverts)) - (+! (-> *terrain-stats* total instances) (-> stat instances)) - ) - (none) - ) + (+! (-> *terrain-stats* total instances) (-> stat instances))) + (none)) (defun-debug print-terrain-stats () "Print all terrain statistics" - ;; make our own profile thing. (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))) (dotimes (gp-0 (-> *level* length)) (let ((s5-0 (-> *level* level gp-0))) (when (= (-> s5-0 status) 'active) (compute-memory-usage s5-0 #f) - (format - *stdcon* - "~0k~D ~A ~,,2fK + textures~%" - (-> s5-0 index) - (-> s5-0 name) - (* 0.0009765625 (the float (-> s5-0 mem-usage))) - ) - ) - ) - ) - + (format *stdcon* + "~0k~D ~A ~,,2fK + textures~%" + (-> s5-0 index) + (-> s5-0 name) + (* 0.0009765625 (the float (-> s5-0 mem-usage))))))) ;; print all stats (format *stdcon* "~0k~%grps frags tris dverts strip insts~%") (print-tr-stat (-> *terrain-stats* pris) "pris" *temp-string*) @@ -98,7 +86,6 @@ (print-tr-stat (-> *terrain-stats* ocean-near) "ocean-near" *temp-string*) (format *stdcon* "~0k---------------------------------------------------------------~%") (print-tr-stat (-> *terrain-stats* total) "total" *stat-string-total*) - (clear-tr-stat (-> *terrain-stats* pris)) (clear-tr-stat (-> *merc-global-stats* merc)) (clear-tr-stat (-> *merc-global-stats* mercneric)) @@ -118,15 +105,9 @@ (clear-tr-stat (-> *terrain-stats* ocean-near)) (clear-tr-stat (-> *terrain-stats* total)) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :b #xff :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) 'draw (new 'static 'rgba :b #xff :a #x80))) 0 - (none) - ) + (none)) (defun update-subdivide-settings! ((settings subdivide-settings) (math-cam math-camera) (idx int)) "Change the subdivide settings." @@ -135,49 +116,38 @@ (let ((f0-3 (* 0.14285715 (- (-> settings meters 0) (-> settings meters 4))))) (set! (-> settings meters 3) (+ (-> settings meters 4) (* 0.5 f0-3))) (set! (-> settings meters 2) (+ (-> settings meters 3) f0-3)) - (set! (-> settings meters 1) (+ (-> settings meters 2) (* 2.0 f0-3))) - ) + (set! (-> settings meters 1) (+ (-> settings meters 2) (* 2.0 f0-3)))) (let ((f0-7 (/ (-> math-cam inv-hmge-scale w) (-> math-cam d)))) (dotimes (v1-5 5) - (set! (-> settings dist v1-5) (* f0-7 (-> settings meters v1-5))) - ) - ) + (set! (-> settings dist v1-5) (* f0-7 (-> settings meters v1-5))))) (set! (-> *tfrag-work* frag-dists x) (- (-> settings meters 0))) (set! (-> *tfrag-work* frag-dists y) (- (-> settings meters 1))) (set! (-> *tfrag-work* frag-dists z) (- (-> settings meters 2))) (set! (-> *tfrag-work* frag-dists w) (- (-> settings meters 4))) 0 - (none) - ) + (none)) (define *subdivide-settings* (new 'global 'subdivide-settings (meters 30) (meters 70))) (defun set-tfrag-dists! ((arg0 tfrag-dists)) (let ((f2-0 (-> *subdivide-settings* dist 0)) (f1-0 (-> *subdivide-settings* dist 1)) - (f0-0 (-> *subdivide-settings* dist 2)) - ) + (f0-0 (-> *subdivide-settings* dist 2))) (set! (-> arg0 k0s 0 w) f2-0) (set! (-> arg0 k0s 1 w) f1-0) (let ((f4-1 (/ 1.0 (- f2-0 f1-0))) - (f3-2 (/ 1.0 (- f1-0 f0-0))) - ) + (f3-2 (/ 1.0 (- f1-0 f0-0)))) (set! (-> arg0 k0s 0 y) (- f4-1)) (set! (-> arg0 k0s 1 y) (- f3-2)) (set! (-> arg0 k0s 0 x) (* 0.5 f4-1)) (set! (-> arg0 k0s 1 x) (* 0.5 f3-2)) (let ((f2-1 (* f2-0 f4-1)) - (f5-7 (* f1-0 f3-2)) - ) + (f5-7 (* f1-0 f3-2))) (set! (-> arg0 k1s 0 y) f2-1) - (set! (-> arg0 k1s 1 y) f5-7) - ) + (set! (-> arg0 k1s 1 y) f5-7)) (set! (-> arg0 k1s 0 x) (* -0.5 f4-1 f1-0)) - (set! (-> arg0 k1s 1 x) (* -0.5 f3-2 f0-0)) - ) - ) - (none) - ) + (set! (-> arg0 k1s 1 x) (* -0.5 f3-2 f0-0)))) + (none)) (define *terrain-context* (new 'global 'terrain-context)) @@ -187,19 +157,16 @@ (defmethod print-to-stream ((this perf-stat) (arg0 string) (arg1 basic)) "Print performance info to a stream. But the stream is ignored and it is printed to the screen." - (format - *stdcon* - "~3d ~8d ~8d ~6d ~6d" - (-> this count) - (-> this cycles) - (-> this instructions) - (-> this icache) - (-> this dcache) - ) + (format *stdcon* + "~3d ~8d ~8d ~6d ~6d" + (-> this count) + (-> this cycles) + (-> this instructions) + (-> this icache) + (-> this dcache)) (format *stdcon* " ~2d ~2d ~2d" (-> this to-vu0-waits) (-> this to-spr-waits) (-> this from-spr-waits)) (format *stdcon* " ~s~%" arg0) - (none) - ) + (none)) (defenum perf-stat-bucket (all-code 0) @@ -221,15 +188,17 @@ (camera 16)) (defun-debug perf-stat-bucket->string ((arg0 perf-stat-bucket)) - (enum->string perf-stat-bucket arg0) - ) - + (enum->string perf-stat-bucket arg0)) ;; Set up for the GOMI STATS HACK (define GSH_ENABLE #f) + (define GSH_BUCKET (bucket-id sky-draw)) + (define GSH_WHICH_STAT 1) + (define GSH_MAX_DISPLAY (the-as basic #f)) + (define GSH_TIME 64) (define *gomi-stats-hack* (the-as (inline-array perf-stat) (malloc 'debug (* 52 (+ GSH_TIME 1))))) @@ -240,9 +209,7 @@ (let ((gp-0 (mod frame-idx (the-as uint 34)))) (when GSH_ENABLE (let ((bucket GSH_BUCKET)) - (let ((which-stat GSH_WHICH_STAT)) - (set! gp-0 (+ (* (the-as uint bucket) 2) which-stat)) - ) + (let ((which-stat GSH_WHICH_STAT)) (set! gp-0 (+ (* (the-as uint bucket) 2) which-stat))) (when GSH_MAX_DISPLAY (let ((stat-idx (logand (-> *perf-stats* data 0 frame-number) (+ GSH_TIME -1)))) (set! (-> *gomi-stats-hack* stat-idx cycles) (-> *perf-stats* data (the-as int bucket) cycles)) @@ -256,65 +223,38 @@ (set! (-> *gomi-stats-hack* GSH_TIME dcache) (the-as uint 0)) (dotimes (v1-22 GSH_TIME) (if (< (-> *gomi-stats-hack* GSH_TIME cycles) (-> *gomi-stats-hack* v1-22 cycles)) - (set! (-> *gomi-stats-hack* GSH_TIME cycles) (-> *gomi-stats-hack* v1-22 cycles)) - ) + (set! (-> *gomi-stats-hack* GSH_TIME cycles) (-> *gomi-stats-hack* v1-22 cycles))) (if (< (-> *gomi-stats-hack* GSH_TIME instructions) (-> *gomi-stats-hack* v1-22 instructions)) - (set! (-> *gomi-stats-hack* GSH_TIME instructions) (-> *gomi-stats-hack* v1-22 instructions)) - ) + (set! (-> *gomi-stats-hack* GSH_TIME instructions) (-> *gomi-stats-hack* v1-22 instructions))) (if (< (-> *gomi-stats-hack* GSH_TIME icache) (-> *gomi-stats-hack* v1-22 icache)) - (set! (-> *gomi-stats-hack* GSH_TIME icache) (-> *gomi-stats-hack* v1-22 icache)) - ) + (set! (-> *gomi-stats-hack* GSH_TIME icache) (-> *gomi-stats-hack* v1-22 icache))) (if (< (-> *gomi-stats-hack* GSH_TIME dcache) (-> *gomi-stats-hack* v1-22 dcache)) - (set! (-> *gomi-stats-hack* GSH_TIME dcache) (-> *gomi-stats-hack* v1-22 dcache)) - ) - ) - ) - ) + (set! (-> *gomi-stats-hack* GSH_TIME dcache) (-> *gomi-stats-hack* v1-22 dcache)))))) (format *stdcon* "~%") - (print-to-stream (-> *gomi-stats-hack* GSH_TIME) "max-value" *stdcon*) - ) - ) - ) + (print-to-stream (-> *gomi-stats-hack* GSH_TIME) "max-value" *stdcon*)))) (dotimes (v1-27 17) (set! (-> *perf-stats* data v1-27 count) (the-as uint 0)) (cond - ((!= v1-27 (shr gp-0 1)) - (set! (-> *perf-stats* data v1-27 ctrl) (the-as uint 0)) - 0 - ) + ((!= v1-27 (shr gp-0 1)) (set! (-> *perf-stats* data v1-27 ctrl) (the-as uint 0)) 0) (else - (let ((a1-63 (logand gp-0 1)) - (a0-64 (the-as uint #x80004010)) - ) - (cond - ((zero? a1-63) - (set! a0-64 (the-as uint (+ #x60020 a0-64))) - ) - ((= a1-63 1) - (set! a0-64 (the-as uint (+ #x300c0 a0-64))) - ) - ) - (set! (-> *perf-stats* data v1-27 select) a1-63) - (set! (-> *perf-stats* data v1-27 ctrl) a0-64) - ) - (set! (-> *perf-stats* data v1-27 accum0) (the-as uint 0)) - (set! (-> *perf-stats* data v1-27 accum1) (the-as uint 0)) - (set! (-> *perf-stats* data v1-27 to-vu0-waits) (the-as uint 0)) - (set! (-> *perf-stats* data v1-27 to-spr-waits) (the-as uint 0)) - (set! (-> *perf-stats* data v1-27 from-spr-waits) (the-as uint 0)) - 0 - ) - ) - ) - ) - ) + (let ((a1-63 (logand gp-0 1)) + (a0-64 (the-as uint #x80004010))) + (cond + ((zero? a1-63) (set! a0-64 (the-as uint (+ #x60020 a0-64)))) + ((= a1-63 1) (set! a0-64 (the-as uint (+ #x300c0 a0-64))))) + (set! (-> *perf-stats* data v1-27 select) a1-63) + (set! (-> *perf-stats* data v1-27 ctrl) a0-64)) + (set! (-> *perf-stats* data v1-27 accum0) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 accum1) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 to-vu0-waits) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 to-spr-waits) (the-as uint 0)) + (set! (-> *perf-stats* data v1-27 from-spr-waits) (the-as uint 0)) + 0))))) (let* ((v1-31 (-> *perf-stats* data)) - (a0-76 (-> v1-31 0 ctrl)) - ) + (a0-76 (-> v1-31 0 ctrl))) (+! (-> v1-31 0 count) 1) (b! (zero? a0-76) cfg-28 :delay (nop!)) (set! *pc-perf-stat-counter* (get-cpu-clock)) ;; patched - #| (.mtc0 Perf 0) (.sync.l) @@ -331,8 +271,7 @@ (label cfg-28) 0 0 - (none) - ) + (none)) (defun-debug end-perf-stat-collection () (local-vars (a0-1 int) (a0-3 int)) @@ -344,11 +283,9 @@ ;;(.mfpc a0-1 pcr0) ;; (+! (-> v1-1 0 accum0) (the-as uint a0-1)) (+! (-> v1-1 0 accum0) (- (get-cpu-clock) *pc-perf-stat-counter*)) ;; patched - ;;(.mfpc a0-3 pcr1) ;; (+! (-> v1-1 0 accum1) (the-as uint a0-3)) (set! (-> v1-1 0 accum1) 0) ;; ;; patched - ) (label cfg-2) 0 @@ -356,36 +293,17 @@ (when (nonzero? (-> *perf-stats* data v1-3 ctrl)) (let ((a2-0 (-> *perf-stats* data v1-3 select)) (a1-8 (-> *perf-stats* data v1-3 accum0)) - (a0-15 (-> *perf-stats* data v1-3 accum1)) - ) + (a0-15 (-> *perf-stats* data v1-3 accum1))) (cond - ((zero? a2-0) - (set! (-> *perf-stats* data v1-3 cycles) a1-8) - (set! (-> *perf-stats* data v1-3 instructions) a0-15) - ) - ((= a2-0 1) - (set! (-> *perf-stats* data v1-3 icache) a1-8) - (set! (-> *perf-stats* data v1-3 dcache) a0-15) - ) - ) - ) - ) - ) + ((zero? a2-0) (set! (-> *perf-stats* data v1-3 cycles) a1-8) (set! (-> *perf-stats* data v1-3 instructions) a0-15)) + ((= a2-0 1) (set! (-> *perf-stats* data v1-3 icache) a1-8) (set! (-> *perf-stats* data v1-3 dcache) a0-15)))))) 0 - (none) - ) + (none)) (defun-debug print-perf-stats () (format *stdcon* "~0k~%count cycles instr icache dcache vu0/to/from~%") (dotimes (gp-0 17) (if (nonzero? (-> *perf-stats* data gp-0 count)) - (print-to-stream - (-> *perf-stats* data gp-0) - (perf-stat-bucket->string (the-as perf-stat-bucket gp-0)) - *stdcon* - ) - ) - ) + (print-to-stream (-> *perf-stats* data gp-0) (perf-stat-bucket->string (the-as perf-stat-bucket gp-0)) *stdcon*))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/background/wind-h.gc b/goal_src/jak1/engine/gfx/background/wind-h.gc index 73e1ee5c37..7d59bdb201 100644 --- a/goal_src/jak1/engine/gfx/background/wind-h.gc +++ b/goal_src/jak1/engine/gfx/background/wind-h.gc @@ -1,49 +1,65 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") -;; name: wind-h.gc -;; name in dgo: wind-h -;; dgos: GAME, ENGINE - ;; These "wind" types are used in the tie/shrub renderers to make things sway in the breeze. ;; It generates vectors that are applied as shear to the instance matrices. ;; DECOMP BEGINS (deftype wind-vector (structure) - ((wind-pos vector2w :inline) - (wind-vel vector2w :inline) - ) - ) + ((wind-pos vector2w :inline) + (wind-vel vector2w :inline))) - (define *wind-scales* (new 'static 'boxed-array :type uint8 - #x2 #x5 #x2 #x3 - #x2 #x2 #x3 #x10 - #xa #x2 #x4 #x2 - #x8 #x2 #x2 #x10 - #x2 #x2 #x8 #x2 - #x10 #x2 #x4 #x10 - #xa #x2 #x4 #x2 - #x8 #x2 #x2 #x10 - ) - ) +(define *wind-scales* + (new 'static + 'boxed-array + :type + uint8 + #x2 + #x5 + #x2 + #x3 + #x2 + #x2 + #x3 + #x10 + #xa + #x2 + #x4 + #x2 + #x8 + #x2 + #x2 + #x10 + #x2 + #x2 + #x8 + #x2 + #x10 + #x2 + #x4 + #x10 + #xa + #x2 + #x4 + #x2 + #x8 + #x2 + #x2 + #x10)) (deftype wind-work (basic) - ((wind-array vector 64 :inline) - (wind-normal vector :inline) - (wind-temp vector :inline) - (wind-force float 64) - (wind-time uint32) - ) - ) + ((wind-array vector 64 :inline) + (wind-normal vector :inline) + (wind-temp vector :inline) + (wind-force float 64) + (wind-time uint32))) ; This was likely originally defined inside `wind-h` ; but the decompiler won't output it, so we have to manually define it (define-extern *wind-work* wind-work) (defun wind-get-hashed-index ((arg0 vector)) - (logand (+ (the int (-> arg0 x)) (the int (-> arg0 z)) (-> *wind-work* wind-time)) 63) - ) + (logand (+ (the int (-> arg0 x)) (the int (-> arg0 z)) (-> *wind-work* wind-time)) 63)) diff --git a/goal_src/jak1/engine/gfx/background/wind.gc b/goal_src/jak1/engine/gfx/background/wind.gc index bd79202906..4d5e7d2870 100644 --- a/goal_src/jak1/engine/gfx/background/wind.gc +++ b/goal_src/jak1/engine/gfx/background/wind.gc @@ -1,13 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/background/wind-h.gc") (require "engine/gfx/hw/display-h.gc") -;; name: wind.gc -;; name in dgo: wind -;; dgos: GAME, ENGINE ;; note: modified for high fps ;; definition for symbol *wind-work*, type wind-work @@ -17,41 +13,21 @@ ;; INFO: Return type mismatch int vs none. (defun update-wind ((arg0 wind-work) (arg1 (array uint8))) (let* ((f0-1 (+ (-> arg0 wind-normal w) (rand-vu-float-range -1024.0 1024.0))) - (f30-1 (- f0-1 (* (the float (the int (/ f0-1 65536.0))) 65536.0))) - ) + (f30-1 (- f0-1 (* (the float (the int (/ f0-1 65536.0))) 65536.0)))) (set! (-> arg0 wind-normal w) f30-1) (set! (-> arg0 wind-normal x) (cos f30-1)) - (set! (-> arg0 wind-normal z) (sin f30-1)) - ) + (set! (-> arg0 wind-normal z) (sin f30-1))) (set! (-> arg0 wind-time) (+ (-> arg0 wind-time) 1)) (let* ((s4-0 (logand (the int (* (-> *display* time-adjust-ratio) (-> arg0 wind-time))) 63)) ;; og:preserve-this changed for high fps (f0-4 (rand-vu-float-range 0.0 100.0)) (v1-5 (/ (* (-> *display* time-adjust-ratio) (-> arg0 wind-time)) (the-as uint 120))) ;; og:preserve-this changed for high fps (f1-6 (* 0.008333334 (the float (mod (the uint (* (-> *display* time-adjust-ratio) (-> arg0 wind-time))) (the-as uint 120))) ;; og:preserve-this changed for high fps - ) - ) - (f2-4 (* 0.0625 - (the float (-> arg1 (mod (the-as int v1-5) (-> arg1 length)))) - ) - ) - (f0-5 (* (+ (* (- (* 0.0625 - (the float (-> arg1 (mod (the-as int (+ v1-5 1)) (-> arg1 length))) - ) - ) - f2-4 - ) - f1-6 - ) - f2-4 - ) - f0-4 - ) - ) - ) + )) + (f2-4 (* 0.0625 (the float (-> arg1 (mod (the-as int v1-5) (-> arg1 length)))))) + (f0-5 (* (+ (* (- (* 0.0625 (the float (-> arg1 (mod (the-as int (+ v1-5 1)) (-> arg1 length))))) f2-4) f1-6) f2-4) f0-4))) (set! (-> *wind-work* wind-force s4-0) (* (-> *display* time-adjust-ratio) f0-5)) ;; changed for high fps (vector-float*! (-> *wind-work* wind-array s4-0) (-> arg0 wind-normal) (* (-> *display* time-adjust-ratio) f0-5)) ;; changed for high fps ) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/depth-cue-h.gc b/goal_src/jak1/engine/gfx/depth-cue-h.gc index a6d99ed2c0..1c63fabf46 100644 --- a/goal_src/jak1/engine/gfx/depth-cue-h.gc +++ b/goal_src/jak1/engine/gfx/depth-cue-h.gc @@ -1,33 +1,23 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: depth-cue-h.gc -;; name in dgo: depth-cue-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype depth-cue-data (structure) - ((data vector :inline) - (sharpness float :overlay-at (-> data x)) - (alpha float :overlay-at (-> data y)) - (distance float :overlay-at (-> data z)) - (w float :overlay-at (-> data w)) - ) - ) - + ((data vector :inline) + (sharpness float :overlay-at (-> data x)) + (alpha float :overlay-at (-> data y)) + (distance float :overlay-at (-> data z)) + (w float :overlay-at (-> data w)))) (deftype depth-cue-work (structure) - ((texture-strip-tmpl dma-gif-packet :inline) - (temp-strip-tmpl dma-gif-packet :inline) - (stencil-tmpl dma-gif-packet :inline) - (clear-color vector4w :inline) - (set-color vector4w :inline) - (draw-color vector4w :inline) - (depth depth-cue-data) - (front depth-cue-data) - ) - ) + ((texture-strip-tmpl dma-gif-packet :inline) + (temp-strip-tmpl dma-gif-packet :inline) + (stencil-tmpl dma-gif-packet :inline) + (clear-color vector4w :inline) + (set-color vector4w :inline) + (draw-color vector4w :inline) + (depth depth-cue-data) + (front depth-cue-data))) diff --git a/goal_src/jak1/engine/gfx/depth-cue.gc b/goal_src/jak1/engine/gfx/depth-cue.gc index e555b9980f..fc558648ca 100644 --- a/goal_src/jak1/engine/gfx/depth-cue.gc +++ b/goal_src/jak1/engine/gfx/depth-cue.gc @@ -1,125 +1,134 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/gfx/depth-cue-h.gc") -;; name: depth-cue.gc -;; name in dgo: depth-cue -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define *depth-cue-work* - (new 'static 'depth-cue-work - :texture-strip-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif0 (new 'static 'gif-tag64 - :nloop 1 - :eop 1 - :pre 1 - :prim (gs-prim-type sprite) ;; actually #b001101010110 - :flg (gif-flag packed) - :nreg 5 - ) - :gif1 (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id uv) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id uv) - :regs4 (gif-reg-id xyzf2) - ) - ) - :temp-strip-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif0 (new 'static 'gif-tag64 - :nloop 1 - :eop 1 - :pre 1 - :prim (gs-prim-type sprite) ;; actually #b00100010110 - :flg (gif-flag packed) - :nreg 5 - ) - :gif1 (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id uv) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id uv) - :regs4 (gif-reg-id xyzf2) - ) - ) - :stencil-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x17 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x17 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #xb003400000008002 #x44444444441) - ) - :set-color (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80) - :draw-color (new 'static 'vector4w :x #x84 :y #x84 :z #x84 :w #x80) - :depth (new 'static 'depth-cue-data :data (new 'static 'vector :x 1.0 :z 163840.0)) - :front (new 'static 'depth-cue-data :data (new 'static 'vector :x 0.999 :y 0.4 :z 4096.0 :w 1.0)) - ) - ) + (new 'static + 'depth-cue-work + :texture-strip-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif0 + (new 'static + 'gif-tag64 + :nloop 1 + :eop 1 + :pre 1 + :prim (gs-prim-type sprite) + ;; actually #b001101010110 + :flg (gif-flag packed) + :nreg 5) + :gif1 + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id uv) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id uv) + :regs4 (gif-reg-id xyzf2))) + :temp-strip-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif0 + (new 'static + 'gif-tag64 + :nloop 1 + :eop 1 + :pre 1 + :prim (gs-prim-type sprite) + ;; actually #b00100010110 + :flg (gif-flag packed) + :nreg 5) + :gif1 + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id uv) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id uv) + :regs4 (gif-reg-id xyzf2))) + :stencil-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x17 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x17 :cmd (vif-cmd direct) :msk #x1)) + :gif + (new 'static 'array uint64 2 #xb003400000008002 #x44444444441)) + :set-color + (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80) + :draw-color + (new 'static 'vector4w :x #x84 :y #x84 :z #x84 :w #x80) + :depth + (new 'static 'depth-cue-data :data (new 'static 'vector :x 1.0 :z 163840.0)) + :front + (new 'static 'depth-cue-data :data (new 'static 'vector :x 0.999 :y 0.4 :z 4096.0 :w 1.0)))) (defun depth-cue-set-stencil ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 dma-gif-packet)) (let* ((v1-0 arg0) - (t1-0 (the-as object (-> v1-0 base))) - ) + (t1-0 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet t1-0) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t1-0) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet t1-0) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer t1-0) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer t1-0) 16))) (let* ((v1-1 arg0) - (t1-2 (the-as object (-> v1-1 base))) - ) + (t1-2 (the-as object (-> v1-1 base)))) (set! (-> (the-as gs-gif-tag t1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag t1-2) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-1 base) (&+ (the-as pointer t1-2) 16)) - ) + (set! (-> (the-as gs-gif-tag t1-2) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-1 base) (&+ (the-as pointer t1-2) 16))) (let* ((v1-2 arg0) - (t1-4 (-> v1-2 base)) - ) + (t1-4 (-> v1-2 base))) (set! (-> (the-as (pointer gs-xy-offset) t1-4) 0) - (new 'static 'gs-xy-offset :ofx #x7000 :ofy (+ (* (-> *video-parms* screen-miny) 16) arg3)) - ) + (new 'static 'gs-xy-offset :ofx #x7000 :ofy (+ (* (-> *video-parms* screen-miny) 16) arg3))) (set! (-> (the-as (pointer gs-reg64) t1-4) 1) (gs-reg64 xyoffset-1)) (set! (-> (the-as (pointer gs-frame) t1-4) 2) (new 'static 'gs-frame :fbw #x8 :fbmsk #xffffff :fbp arg1)) (set! (-> (the-as (pointer gs-reg64) t1-4) 3) (gs-reg64 frame-1)) (set! (-> (the-as (pointer gs-test) t1-4) 4) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) (set! (-> (the-as (pointer gs-reg64) t1-4) 5) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ t1-4 48)) - ) + (set! (-> v1-2 base) (&+ t1-4 48))) (let ((a3-7 (the-as (inline-array vector4w) (-> arg0 base))) (v1-3 #x7000) - (a1-8 1024) - ) + (a1-8 1024)) (set! (-> a3-7 0 quad) (-> *depth-cue-work* stencil-tmpl dma-vif quad)) (set! (-> a3-7 1 quad) (-> *depth-cue-work* stencil-tmpl quad 1)) (let ((v0-0 (the-as object (-> a3-7 2)))) @@ -128,22 +137,15 @@ (set! v0-0 (-> (the-as (inline-array vector4w) v0-0) 1)) (dotimes (t1-10 5) (set-vector! (-> (the-as (inline-array vector4w) v0-0) 0) v1-3 (* (-> *video-parms* screen-miny) 16) arg2 0) - (set-vector! - (-> (the-as (inline-array vector4w) v0-0) 1) - (+ v1-3 a1-8) - (* (-> *video-parms* screen-maxy) 16) - arg2 - #x10000 - ) + (set-vector! (-> (the-as (inline-array vector4w) v0-0) 1) + (+ v1-3 a1-8) + (* (-> *video-parms* screen-maxy) 16) + arg2 + #x10000) (+! v1-3 a1-8) - (set! v0-0 (-> (the-as (inline-array vector4w) v0-0) 2)) - ) - ) + (set! v0-0 (-> (the-as (inline-array vector4w) v0-0) 2)))) (set! (-> arg0 base) (the-as pointer v0-0)) - (the-as vector4w v0-0) - ) - ) - ) + (the-as vector4w v0-0)))) (defun depth-cue-draw-depth ((arg0 dma-buffer) (arg1 int) (arg2 float) (arg3 float) (arg4 int) (arg5 int)) (set! (-> *depth-cue-work* draw-color w) (the int (* 128.0 arg3))) @@ -151,58 +153,48 @@ (a2-1 (the int (* (the float (* (-> *video-parms* screen-sy) 16)) arg2))) (a3-4 0) (t2-0 512) - (t3-0 *depth-cue-base-page*) - ) + (t3-0 *depth-cue-base-page*)) (dotimes (t4-0 16) (let* ((t5-0 arg0) - (t6-0 (the-as object (-> t5-0 base))) - ) + (t6-0 (the-as object (-> t5-0 base)))) (set! (-> (the-as dma-packet t6-0) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t6-0) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet t6-0) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t5-0 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer t6-0) 16)))) - ) + (set! (-> t5-0 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer t6-0) 16))))) (let* ((t5-1 arg0) - (t6-2 (the-as object (-> t5-1 base))) - ) + (t6-2 (the-as object (-> t5-1 base)))) (set! (-> (the-as gs-gif-tag t6-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) (set! (-> (the-as gs-gif-tag t6-2) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> t5-1 base) (&+ (the-as pointer t6-2) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> t5-1 base) (&+ (the-as pointer t6-2) 16))) (let* ((t5-2 arg0) - (t6-4 (-> t5-2 base)) - ) + (t6-4 (-> t5-2 base))) (set! (-> (the-as (pointer gs-xy-offset) t6-4) 0) (new 'static 'gs-xy-offset :ofy (- 8 arg5))) (set! (-> (the-as (pointer gs-reg64) t6-4) 1) (gs-reg64 xyoffset-1)) (set! (-> (the-as (pointer gs-frame) t6-4) 2) (new 'static 'gs-frame :fbw #x1 :fbp t3-0)) (set! (-> (the-as (pointer gs-reg64) t6-4) 3) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-tex0) t6-4) 4) - (new 'static 'gs-tex0 :tbw #x8 :tw #xa :th #x8 :tcc #x1 :tbp0 (* arg4 32)) - ) + (set! (-> (the-as (pointer gs-tex0) t6-4) 4) (new 'static 'gs-tex0 :tbw #x8 :tw #xa :th #x8 :tcc #x1 :tbp0 (* arg4 32))) (set! (-> (the-as (pointer gs-reg64) t6-4) 5) (gs-reg64 tex0-1)) (set! (-> (the-as (pointer gs-test) t6-4) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) t6-4) 7) (gs-reg64 test-1)) - (set! (-> t5-2 base) (&+ t6-4 64)) - ) + (set! (-> t5-2 base) (&+ t6-4 64))) (let ((t5-3 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> t5-3 0 quad) (-> *depth-cue-work* temp-strip-tmpl dma-vif quad)) (set! (-> t5-3 1 quad) (-> *depth-cue-work* temp-strip-tmpl quad 1)) @@ -210,249 +202,201 @@ (set-vector! (-> t5-3 3) a3-4 0 0 0) (set-vector! (-> t5-3 4) 0 0 0 0) (set-vector! (-> t5-3 5) (+ a3-4 t2-0) (* (-> *video-parms* screen-sy) 16) 0 0) - (set-vector! (-> t5-3 6) v1-1 a2-1 0 #x10000) - ) + (set-vector! (-> t5-3 6) v1-1 a2-1 0 #x10000)) (set! (-> arg0 base) (the-as pointer (-> (the-as depth-cue-work (-> arg0 base)) set-color))) (let* ((t5-7 arg0) - (t6-16 (the-as object (-> t5-7 base))) - ) + (t6-16 (the-as object (-> t5-7 base)))) (set! (-> (the-as dma-packet t6-16) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t6-16) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet t6-16) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t5-7 base) (&+ (the-as pointer t6-16) 16)) - ) + (set! (-> t5-7 base) (&+ (the-as pointer t6-16) 16))) (let* ((t5-8 arg0) - (t6-18 (the-as object (-> t5-8 base))) - ) + (t6-18 (the-as object (-> t5-8 base)))) (set! (-> (the-as gs-gif-tag t6-18) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag t6-18) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> t5-8 base) (&+ (the-as pointer t6-18) 16)) - ) + (set! (-> (the-as gs-gif-tag t6-18) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> t5-8 base) (&+ (the-as pointer t6-18) 16))) (let* ((t5-9 arg0) - (t6-20 (-> t5-9 base)) - ) + (t6-20 (-> t5-9 base))) (set! (-> (the-as (pointer gs-xy-offset) t6-20) 0) (new 'static 'gs-xy-offset :ofy (+ arg5 4))) (set! (-> (the-as (pointer gs-reg64) t6-20) 1) (gs-reg64 xyoffset-1)) (set! (-> (the-as (pointer gs-frame) t6-20) 2) (new 'static 'gs-frame :fbw #x8 :fbmsk #xff000000 :fbp arg4)) (set! (-> (the-as (pointer gs-reg64) t6-20) 3) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-tex0) t6-20) 4) - (new 'static 'gs-tex0 :tbw #x1 :tw #x5 :th #x8 :tcc #x1 :tbp0 (* t3-0 32)) - ) + (set! (-> (the-as (pointer gs-tex0) t6-20) 4) (new 'static 'gs-tex0 :tbw #x1 :tw #x5 :th #x8 :tcc #x1 :tbp0 (* t3-0 32))) (set! (-> (the-as (pointer gs-reg64) t6-20) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-test) t6-20) 6) - (new 'static 'gs-test :date #x1 :datm #x1 :zte #x1 :ztst (gs-ztest always)) - ) + (set! (-> (the-as (pointer gs-test) t6-20) 6) (new 'static 'gs-test :date #x1 :datm #x1 :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) t6-20) 7) (gs-reg64 test-1)) - (set! (-> t5-9 base) (&+ t6-20 64)) - ) + (set! (-> t5-9 base) (&+ t6-20 64))) (let ((t5-10 (the-as object (-> arg0 base)))) - (set! (-> (the-as (inline-array vector4w) t5-10) 0 quad) - (-> *depth-cue-work* texture-strip-tmpl dma-vif quad) - ) + (set! (-> (the-as (inline-array vector4w) t5-10) 0 quad) (-> *depth-cue-work* texture-strip-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) t5-10) 1 quad) (-> *depth-cue-work* texture-strip-tmpl quad 1)) (set! (-> (the-as (inline-array vector4w) t5-10) 2 quad) (-> *depth-cue-work* draw-color quad)) (set-vector! (-> (the-as (inline-array vector4w) t5-10) 3) 0 0 0 0) (set-vector! (-> (the-as (inline-array vector4w) t5-10) 4) a3-4 0 0 0) (set-vector! (-> (the-as (inline-array vector4w) t5-10) 5) v1-1 a2-1 0 0) - (set-vector! - (the-as vector4w (&+ (the-as pointer t5-10) 96)) - (+ a3-4 t2-0) - (* (-> *video-parms* screen-sy) 16) - arg1 - #x10000 - ) - ) + (set-vector! (the-as vector4w (&+ (the-as pointer t5-10) 96)) + (+ a3-4 t2-0) + (* (-> *video-parms* screen-sy) 16) + arg1 + #x10000)) (set! (-> arg0 base) (the-as pointer (-> (the-as depth-cue-work (-> arg0 base)) set-color))) - (+! a3-4 t2-0) - ) - ) - #f - ) + (+! a3-4 t2-0))) + #f) (defun depth-cue-draw-front ((dma-buff dma-buffer) (depth int) (sharpness float) (alpha float) (on-screen-fbp uint) (oddeven int)) ;; set draw-color alpha (set! (-> *depth-cue-work* draw-color w) (the int (* 128.0 alpha))) - ;; sample the framebuffer in 16 vertical strips shrinking each a little, ;; then overlay them back onto the framebuffer (let ((strip-w (the int (* 512.0 sharpness))) (strip-h (the int (* (the float (* (-> *video-parms* screen-sy) 16)) sharpness))) (x-offset 0) ;; incremented by 512 each loop - (strip-max-w 512) - ) + (strip-max-w 512)) ;; repeat for each strip (dotimes (i 16) ;; sample strip from framebuffer to depth-cue-base-page ;; ------------------------------------------------------ ;; update GS registers (dma-buffer-add-gs-set dma-buff - ;; set vertex position offset - (xyoffset-1 (new 'static 'gs-xy-offset :ofy (- 8 oddeven))) - ;; draw to depth-cue-base-page (64px wide) - (frame-1 (new 'static 'gs-frame :fbw #x1 :fbp *depth-cue-base-page*)) - ;; use on-screen framebuffer as texture 0 - ;; buffer width = 512 pixels - ;; USIZE = 1024 texels - ;; VSIZE = 256 texels - ;; RGBA - (tex0-1 (new 'static 'gs-tex0 :tbw #x8 :tw #xa :th #x8 :tcc #x1 :tbp0 (* on-screen-fbp 32))) - ;; enable depth test, all pixels pass - (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) - ;; keep source rgb, no blending - (alpha-1 (new 'static 'gs-alpha)) - ) + ;; set vertex position offset + (xyoffset-1 (new 'static 'gs-xy-offset :ofy (- 8 oddeven))) + ;; draw to depth-cue-base-page (64px wide) + (frame-1 (new 'static 'gs-frame :fbw #x1 :fbp *depth-cue-base-page*)) + ;; use on-screen framebuffer as texture 0 + ;; buffer width = 512 pixels + ;; USIZE = 1024 texels + ;; VSIZE = 256 texels + ;; RGBA + (tex0-1 (new 'static 'gs-tex0 :tbw #x8 :tw #xa :th #x8 :tcc #x1 :tbp0 (* on-screen-fbp 32))) + ;; enable depth test, all pixels pass + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + ;; keep source rgb, no blending + (alpha-1 (new 'static 'gs-alpha))) ;; draw sprite (let ((t5-3 (the-as (inline-array vector4w) (-> dma-buff base)))) - (set! (-> t5-3 0 quad) (-> *depth-cue-work* temp-strip-tmpl dma-vif quad)) ;; cnt direct - (set! (-> t5-3 1 quad) (-> *depth-cue-work* temp-strip-tmpl quad 1)) ;; draw sprite, 5 regs - (set! (-> t5-3 2 quad) (-> *depth-cue-work* set-color quad)) ;; rgbaq - (set-vector! (-> t5-3 3) x-offset 0 0 0) ;; uv - (set-vector! (-> t5-3 4) 0 0 0 0) ;; xyzf2 - (set-vector! (-> t5-3 5) (+ x-offset strip-max-w) (* (-> *video-parms* screen-sy) 16) 0 0) ;; uv - (set-vector! (-> t5-3 6) strip-w strip-h 0 #x10000) ;; xyzf2 + (set! (-> t5-3 0 quad) (-> *depth-cue-work* temp-strip-tmpl dma-vif quad)) ;; cnt direct + (set! (-> t5-3 1 quad) (-> *depth-cue-work* temp-strip-tmpl quad 1)) ;; draw sprite, 5 regs + (set! (-> t5-3 2 quad) (-> *depth-cue-work* set-color quad)) ;; rgbaq + (set-vector! (-> t5-3 3) x-offset 0 0 0) ;; uv + (set-vector! (-> t5-3 4) 0 0 0 0) ;; xyzf2 + (set-vector! (-> t5-3 5) (+ x-offset strip-max-w) (* (-> *video-parms* screen-sy) 16) 0 0) ;; uv + (set-vector! (-> t5-3 6) strip-w strip-h 0 #x10000) ;; xyzf2 ) (&+! (-> dma-buff base) 112) - ;; overlay strip back onto the on-screen framebuffer ;; ------------------------------------------------------ ;; update GS registers (dma-buffer-add-gs-set dma-buff - ;; set vertex position offset - (xyoffset-1 (new 'static 'gs-xy-offset :ofy (+ oddeven 4))) - ;; draw to on-screen-fbp but only the alpha channel - (frame-1 (new 'static 'gs-frame :fbw #x8 :fbmsk #xff000000 :fbp on-screen-fbp)) - ;; use an alpha value of 128 - (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - ;; use depth-cue-base-page as texture 0 - ;; buffer width = 64 pixels - ;; format = PSMCT24 - ;; USIZE = 32 texels - ;; VSIZE = 256 texels - ;; RGB - (tex0-1 (new 'static 'gs-tex0 :tbw #x1 :psm #x1 :tw #x5 :th #x8 :tbp0 (* *depth-cue-base-page* 32))) - ;; blend source and framebuffer RGB - (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) - ) + ;; set vertex position offset + (xyoffset-1 (new 'static 'gs-xy-offset :ofy (+ oddeven 4))) + ;; draw to on-screen-fbp but only the alpha channel + (frame-1 (new 'static 'gs-frame :fbw #x8 :fbmsk #xff000000 :fbp on-screen-fbp)) + ;; use an alpha value of 128 + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + ;; use depth-cue-base-page as texture 0 + ;; buffer width = 64 pixels + ;; format = PSMCT24 + ;; USIZE = 32 texels + ;; VSIZE = 256 texels + ;; RGB + (tex0-1 (new 'static 'gs-tex0 :tbw #x1 :psm #x1 :tw #x5 :th #x8 :tbp0 (* *depth-cue-base-page* 32))) + ;; blend source and framebuffer RGB + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) ;; draw sprite (let ((t5-10 (the-as object (-> dma-buff base)))) - (set! (-> (the-as (inline-array vector4w) t5-10) 0 quad) - (-> *depth-cue-work* texture-strip-tmpl dma-vif quad) - ) + (set! (-> (the-as (inline-array vector4w) t5-10) 0 quad) (-> *depth-cue-work* texture-strip-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) t5-10) 1 quad) (-> *depth-cue-work* texture-strip-tmpl quad 1)) (set! (-> (the-as (inline-array vector4w) t5-10) 2 quad) (-> *depth-cue-work* draw-color quad)) ;; rgbaq - (set-vector! (-> (the-as (inline-array vector4w) t5-10) 3) 0 0 0 0) ;; uv - (set-vector! (-> (the-as (inline-array vector4w) t5-10) 4) x-offset 0 0 0) ;; xyzf2 - (set-vector! (-> (the-as (inline-array vector4w) t5-10) 5) strip-w strip-h 0 0) ;; uv - (set-vector! ;; xyzf2 + (set-vector! (-> (the-as (inline-array vector4w) t5-10) 3) 0 0 0 0) ;; uv + (set-vector! (-> (the-as (inline-array vector4w) t5-10) 4) x-offset 0 0 0) ;; xyzf2 + (set-vector! (-> (the-as (inline-array vector4w) t5-10) 5) strip-w strip-h 0 0) ;; uv + (set-vector! ;; xyzf2 (the-as vector4w (&+ (the-as pointer t5-10) 96)) (+ x-offset strip-max-w) (* (-> *video-parms* screen-sy) 16) depth - #x10000 - ) - ) + #x10000)) (&+! (-> dma-buff base) 112) - ;; next strip ;; ------------------------------------------------------ - (+! x-offset strip-max-w) - ) - ) - #f - ) + (+! x-offset strip-max-w))) + #f) (defun depth-cue-calc-z ((arg0 float)) (+ (* (+ (* arg0 (-> *math-camera* perspective vector 2 z)) (-> *math-camera* perspective vector 3 z)) - (/ (-> *math-camera* d) arg0) - ) - (-> *math-camera* hvdf-off z) - ) - ) + (/ (-> *math-camera* d) arg0)) + (-> *math-camera* hvdf-off z))) (defun depth-cue ((disp display)) ;; is depth-cue enabled? (when (logtest? (vu1-renderer-mask depth-cue) *vu1-enable-user*) (let* ((dma-start (-> *display* frames (-> *display* on-screen) frame global-buf base)) (dma-buff (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s5-0 (-> dma-buff base)) - ) + (s5-0 (-> dma-buff base))) (let ((v1-9 (-> disp on-screen))) ;; initial GS register setup (dma-buffer-add-gs-set dma-buff - ;; depth test on, all pixels pass - (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) - ;; don't write to depth buffer - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1)) - ;; bilinear texture sampling - (tex1-1 (new 'static 'gs-tex1 :mmag 1 :mmin 1)) - ;; no mip - (miptbp1-1 (new 'static 'gs-miptbp)) - ;; set texture wrap mode to clamp - (clamp-1 (new 'static 'gs-clamp - :wms (gs-tex-wrap-mode clamp) - :wmt (gs-tex-wrap-mode clamp) - :maxu #x1ff - :maxv (-> *video-parms* screen-masky) - )) - ;; blend source and dest - (alpha-1 (new 'static 'gs-alpha :b 1 :d 1)) - ) - + ;; depth test on, all pixels pass + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + ;; don't write to depth buffer + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1)) + ;; bilinear texture sampling + (tex1-1 (new 'static 'gs-tex1 :mmag 1 :mmin 1)) + ;; no mip + (miptbp1-1 (new 'static 'gs-miptbp)) + ;; set texture wrap mode to clamp + (clamp-1 (new 'static + 'gs-clamp + :wms (gs-tex-wrap-mode clamp) + :wmt (gs-tex-wrap-mode clamp) + :maxu #x1ff + :maxv (-> *video-parms* screen-masky))) + ;; blend source and dest + (alpha-1 (new 'static 'gs-alpha :b 1 :d 1))) (let ((s3-0 (* *oddeven* 8)) - (on-screen-fbp (-> disp frames v1-9 draw frame1 fbp)) - ) + (on-screen-fbp (-> disp frames v1-9 draw frame1 fbp))) ;; draw - (depth-cue-draw-front - dma-buff ;; dma-buff - #xffffff ;; depth - (-> *depth-cue-work* front data x) ;; sharpness - (-> *depth-cue-work* front data y) ;; alpha - on-screen-fbp ;; on-screen frame pointer - s3-0 ;; oddeven * 8 - ) + (depth-cue-draw-front dma-buff ;; dma-buff + #xffffff ;; depth + (-> *depth-cue-work* front data x) ;; sharpness + (-> *depth-cue-work* front data y) ;; alpha + on-screen-fbp ;; on-screen frame pointer + s3-0 ;; oddeven * 8 + ) ;; restore GS registers (dma-buffer-add-gs-set dma-buff - ;; restore xyoffset register - (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy (+ (* (-> *video-parms* screen-miny) 16) s3-0))) - ;; restore drawing destination to on-screen framebuffer - (frame-1 (new 'static 'gs-frame :fbw #x8 :fbp on-screen-fbp)) - ) - ) - ) + ;; restore xyoffset register + (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy (+ (* (-> *video-parms* screen-miny) 16) s3-0))) + ;; restore drawing destination to on-screen framebuffer + (frame-1 (new 'static 'gs-frame :fbw #x8 :fbp on-screen-fbp))))) (let ((a3-18 (-> dma-buff base))) ;; add DMA chain (let ((v1-22 (the-as object (-> dma-buff base)))) (set! (-> (the-as dma-packet v1-22) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-22) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-22) vif1) (new 'static 'vif-tag)) - (set! (-> dma-buff base) (&+ (the-as pointer v1-22) 16)) - ) - (let ((v0-0 (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id depth-cue) - s5-0 - (the-as (pointer dma-tag) a3-18) - ) - ) - ) + (set! (-> dma-buff base) (&+ (the-as pointer v1-22) 16))) + (let ((v0-0 (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id depth-cue) + s5-0 + (the-as (pointer dma-tag) a3-18)))) ;; record memory usage (let ((v1-27 *dma-mem-usage*)) (when (nonzero? v1-27) @@ -460,18 +404,6 @@ (set! (-> v1-27 data 83 name) "depth-cue") (+! (-> v1-27 data 83 count) 1) (+! (-> v1-27 data 83 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint dma-start)) - ) - (set! (-> v1-27 data 83 total) (-> v1-27 data 83 used)) - ) - ) - v0-0 - ) - ) - ) - ) - ) - - - - + (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint dma-start))) + (set! (-> v1-27 data 83 total) (-> v1-27 data 83 used)))) + v0-0))))) diff --git a/goal_src/jak1/engine/gfx/font-h.gc b/goal_src/jak1/engine/gfx/font-h.gc index 9539dbb24c..4332df3fd3 100644 --- a/goal_src/jak1/engine/gfx/font-h.gc +++ b/goal_src/jak1/engine/gfx/font-h.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/math/matrix-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/math-camera-h.gc") (require "engine/gfx/hw/gs.gc") -;; name: font-h.gc -;; name in dgo: font-h -;; dgos: GAME, ENGINE - ;; The font system draws all of the strings. ;; The font textures live in the upper 8 bits of the 24-bit texture format depth buffer. @@ -53,8 +48,7 @@ (progress-percent 31) (credits 32) (red-reverse 33) - (red-obverse 34) - ) + (red-obverse 34)) (defenum font-flags :type uint32 @@ -69,727 +63,784 @@ ) (deftype char-verts (structure) - ((pos vector 4 :inline) - (color vector 4 :inline) - (tex-st vector 4 :inline) - ) - ) - + ((pos vector 4 :inline) + (color vector 4 :inline) + (tex-st vector 4 :inline))) (deftype char-color (structure) - ((color rgba 4) - ) - ) - - -(define *font-default-matrix* (new 'static 'matrix :vector (new 'static 'inline-array vector 4 - (new 'static 'vector :x 1.0) - (new 'static 'vector :y 1.0) - (new 'static 'vector :z 1.0) - (new 'static 'vector :x -256.0 :w 1.0) - ) - ) - ) + ((color rgba 4))) + +(define *font-default-matrix* + (new 'static + 'matrix + :vector + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :x 1.0) + (new 'static 'vector :y 1.0) + (new 'static 'vector :z 1.0) + (new 'static 'vector :x -256.0 :w 1.0)))) ;; font settings that can be passed to draw-string (deftype font-context (basic) - ((origin vector :inline) - (strip-gif vector :inline) - (width float) - (height float) - (projection float) - (context-vec vector :inline :overlay-at width) - (color font-color) - (color-s32 int32 :overlay-at color) - (flags font-flags) - (flags-signed int32 :overlay-at flags) - (mat matrix) - (start-line uint32) - (scale float) - ) + ((origin vector :inline) + (strip-gif vector :inline) + (width float) + (height float) + (projection float) + (context-vec vector :inline :overlay-at width) + (color font-color) + (color-s32 int32 :overlay-at color) + (flags font-flags) + (flags-signed int32 :overlay-at flags) + (mat matrix) + (start-line uint32) + (scale float)) (:methods - (new (symbol type matrix int int float font-color font-flags) _type_) - (set-mat! (font-context matrix) font-context) - (set-origin! (font-context int int) font-context) - (set-depth! (font-context int) font-context) - (set-w! (font-context float) font-context) - (set-width! (font-context int) font-context) - (set-height! (font-context int) font-context) - (set-projection! (font-context float) font-context) - (set-color! (font-context font-color) font-context) - (set-flags! (font-context font-flags) font-context) - (set-start-line! (font-context uint) font-context) - (set-scale! (font-context float) font-context) - ) - ) + (new (symbol type matrix int int float font-color font-flags) _type_) + (set-mat! (font-context matrix) font-context) + (set-origin! (font-context int int) font-context) + (set-depth! (font-context int) font-context) + (set-w! (font-context float) font-context) + (set-width! (font-context int) font-context) + (set-height! (font-context int) font-context) + (set-projection! (font-context float) font-context) + (set-color! (font-context font-color) font-context) + (set-flags! (font-context font-flags) font-context) + (set-start-line! (font-context uint) font-context) + (set-scale! (font-context float) font-context))) ;; I don't believe these methods are called, so they might be inlined (defmethod set-mat! ((this font-context) (mat matrix)) + ;; TODO - perhaps a keyword arg on `defmethod` would be better? (declare (inline)) - (set! (-> this mat) mat) - this - ) + this) (defmethod set-origin! ((this font-context) (x int) (y int)) (declare (inline)) - (set! (-> this origin x) (the float x)) (set! (-> this origin y) (the float y)) - this - ) + this) (defmethod set-depth! ((this font-context) (z int)) (declare (inline)) - (set! (-> this origin z) (the float z)) - this - ) + this) (defmethod set-w! ((this font-context) (w float)) (declare (inline)) - (set! (-> this origin w) w) - this - ) + this) (defmethod set-width! ((this font-context) (width int)) (declare (inline)) - (set! (-> this width) (the float width)) - this - ) + this) (defmethod set-height! ((this font-context) (height int)) (declare (inline)) - (set! (-> this height) (the float height)) - this - ) + this) (defmethod set-projection! ((this font-context) (proj float)) (declare (inline)) - (set! (-> this projection) proj) - this - ) + this) (defmethod set-color! ((this font-context) (color font-color)) (declare (inline)) - (set! (-> this color) color) - this - ) + this) (defmethod set-flags! ((this font-context) (flags font-flags)) (declare (inline)) - (set! (-> this flags) flags) - this - ) + this) (defmethod set-start-line! ((this font-context) (start-line uint)) (declare (inline)) - (set! (-> this start-line) start-line) - this - ) + this) (defmethod set-scale! ((this font-context) (scale float)) (declare (inline)) - (set! (-> this scale) scale) - this - ) + this) -(defmethod new font-context ((allocation symbol) - (type-to-make type) - (mat matrix) - (x int) - (y int) - (z float) - (color font-color) - (flags font-flags) - ) +(defmethod new font-context ((allocation symbol) (type-to-make type) (mat matrix) (x int) (y int) (z float) (color font-color) (flags font-flags)) (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> this mat) mat) - (let ((v1-3 this)) - (set! (-> v1-3 origin x) (the float x)) - (set! (-> v1-3 origin y) (the float y)) - ) + (let ((v1-3 this)) (set! (-> v1-3 origin x) (the float x)) (set! (-> v1-3 origin y) (the float y))) (cond - ((= z 0.0) - (let ((v1-4 this)) - (set! (-> v1-4 origin z) (-> *math-camera* isometric vector 3 z)) - ) - ) - (else - (let ((v1-5 this)) - (set! (-> v1-5 origin z) z) - ) - ) - ) - (let ((v1-6 this)) - (set! (-> v1-6 origin w) 1.0) - ) - (let ((v1-7 this)) - (set! (-> v1-7 width) (the float 512)) - ) - (let ((v1-8 this)) - (set! (-> v1-8 height) (the float 256)) - ) - (let ((v1-9 this)) - (set! (-> v1-9 projection) 1.0) - ) + ((= z 0.0) (let ((v1-4 this)) (set! (-> v1-4 origin z) (-> *math-camera* isometric vector 3 z)))) + (else (let ((v1-5 this)) (set! (-> v1-5 origin z) z)))) + (let ((v1-6 this)) (set! (-> v1-6 origin w) 1.0)) + (let ((v1-7 this)) (set! (-> v1-7 width) (the float 512))) + (let ((v1-8 this)) (set! (-> v1-8 height) (the float 256))) + (let ((v1-9 this)) (set! (-> v1-9 projection) 1.0)) (set! (-> this color) color) (set! (-> this flags) flags) - (let ((a0-4 this)) - (set! (-> a0-4 start-line) (the-as uint 0)) - ) - (let ((v1-13 this)) - (set! (-> v1-13 scale) 1.0) - ) - this - ) - ) + (let ((a0-4 this)) (set! (-> a0-4 start-line) (the-as uint 0))) + (let ((v1-13 this)) (set! (-> v1-13 scale) 1.0)) + this)) ;; Data used by the font-renderer. (deftype font-work (structure) - ((font-tmpl dma-gif-packet :inline) - (char-tmpl dma-gif-packet :inline) - (tex1-tmpl uint64 2) - (small-font-lo-tmpl uint64 2) - (small-font-lo-tmpl-qw uint128 :overlay-at (-> small-font-lo-tmpl 0)) - (small-font-hi-tmpl uint64 2) - (small-font-hi-tmpl-qw uint128 :overlay-at (-> small-font-hi-tmpl 0)) - (large-font-lo-tmpl uint64 2) - (large-font-lo-tmpl-qw uint128 :overlay-at (-> large-font-lo-tmpl 0)) - (large-font-hi-tmpl uint64 2) - (large-font-hi-tmpl-qw uint128 :overlay-at (-> large-font-hi-tmpl 0)) - (size1-small vector :inline) - (size2-small vector :inline) - (size3-small vector :inline) - (size1-large vector :inline) - (size2-large vector :inline) - (size3-large vector :inline) - (size-st1 vector :inline) - (size-st2 vector :inline) - (size-st3 vector :inline) - (save vector :inline) - (save-color vector 4 :inline) - (current-verts char-verts :inline) - (src-verts char-verts :inline) - (dest-verts char-verts :inline) - (justify vector 64 :inline) - (color-shadow vector4w :inline) - (color-table char-color 64 :inline) - (last-color font-color) - (last-color-32 int32 :overlay-at last-color) - (save-last-color font-color) - (save-last-color-32 int32 :overlay-at save-last-color) - (buf basic) - (str-ptr uint32) - (str-ptr-signed (pointer uint8) :overlay-at str-ptr) - (flags font-flags) - (flags-signed int32 :overlay-at flags) - (reg-save uint32 5) - ) - ) - - -(define *font-work* (new 'static 'font-work - :font-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (gif-tag->static-array - (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 :prim #x5c :nreg #x1) ;; (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip 1 :tme 1 :abe 1) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - )) - ) - :char-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #xe :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #xe :cmd (vif-cmd direct) :msk #x1) - ) - :gif (gif-tag->static-array - (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 :prim #x5c :nreg #xd) ;; (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip 1 :tme 1 :abe 1) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id st) - :regs2 (gif-reg-id rgbaq) - :regs3 (gif-reg-id xyzf2) - :regs4 (gif-reg-id st) - :regs5 (gif-reg-id rgbaq) - :regs6 (gif-reg-id xyzf2) - :regs7 (gif-reg-id st) - :regs8 (gif-reg-id rgbaq) - :regs9 (gif-reg-id xyzf2) - :regs10 (gif-reg-id st) - :regs11 (gif-reg-id rgbaq) - :regs12 (gif-reg-id xyzf2) - )) - ) - :tex1-tmpl (new 'static 'array uint64 2 #x60 #x14) - :small-font-lo-tmpl (new 'static 'array uint64 2 #x0 #x6) - :small-font-hi-tmpl (new 'static 'array uint64 2 #x0 #x6) - :large-font-lo-tmpl (new 'static 'array uint64 2 #x0 #x6) - :large-font-hi-tmpl (new 'static 'array uint64 2 #x0 #x6) - :size1-small (new 'static 'vector :x 12.0 :y 0.0 :w 0.5) - :size2-small (new 'static 'vector :x 0.0 :y 8.0 :w 8.0) - :size3-small (new 'static 'vector :x 12.0 :y 8.0 :w 8.0) - :size1-large (new 'static 'vector :x 24.0 :y 0.0 :w 1.0) - :size2-large (new 'static 'vector :x 0.0 :y 16.0 :w 16.0) - :size3-large (new 'static 'vector :x 24.0 :y 16.0 :w 16.0) - :size-st1 (new 'static 'vector :x 0.08985 :y 0.0 :w 0.5) - :size-st2 (new 'static 'vector :x 0.0 :y 0.06153846 :w 0.5) - :size-st3 (new 'static 'vector :x 0.08985 :y 0.06153846 :w 0.5) - :current-verts (new 'static 'char-verts - :pos (new 'static 'inline-array vector 4 - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - ) - :tex-st (new 'static 'inline-array vector 4 - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - ) - ) - :src-verts (new 'static 'char-verts - :pos (new 'static 'inline-array vector 4 - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - ) - :tex-st (new 'static 'inline-array vector 4 - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - ) - ) - :dest-verts (new 'static 'char-verts - :pos (new 'static 'inline-array vector 4 - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - (new 'static 'vector :w 1.0) - ) - :tex-st (new 'static 'inline-array vector 4 - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - (new 'static 'vector :z 1.0) - ) - ) - :color-shadow (new 'static 'vector4w :x #x00 :y #x00 :z #x00 :w #x80) - ;; TODO - make enum for this - :color-table (new 'static 'inline-array char-color 64 - ;; 00 - default (menu and HUD) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x70 #x78 #x70 #x80) - (static-rgba #x70 #x78 #x70 #x80) - (static-rgba #x30 #x38 #x30 #x80) - (static-rgba #x30 #x38 #x30 #x80) - ) - ) - ;; 01 - white (debug, camera settings, actor marks) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x80 #x80 #x80) - (static-rgba #x80 #x80 #x80 #x80) - (static-rgba #x60 #x60 #x60 #x80) - (static-rgba #x60 #x60 #x60 #x80) - ) - ) - ;; 02 - transparent - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x80 #x80 #x40) - (static-rgba #x80 #x80 #x80 #x40) - (static-rgba #x60 #x60 #x60 #x40) - (static-rgba #x60 #x60 #x60 #x40) - ) - ) - ;; 03 - red (debug values, subtitles - character names) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x60 #x20 #x80) - (static-rgba #x80 #x60 #x20 #x80) - (static-rgba #x60 #x00 #x00 #x80) - (static-rgba #x60 #x00 #x00 #x80) - ) - ) - ;; 04 - orange (debug, path marks numbers) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x64 #x00 #x80) - (static-rgba #x80 #x64 #x00 #x80) - (static-rgba #x80 #x00 #x00 #x80) - (static-rgba #x80 #x00 #x00 #x80) - ) - ) - ;; 05 - yellow (HUD, other numbers) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x80 #x00 #x80) - (static-rgba #x80 #x80 #x00 #x80) - (static-rgba #x28 #x28 #x00 #x80) - (static-rgba #x28 #x28 #x00 #x80) - ) - ) - ;; 06 - green (HUD, health numbers) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x20 #x80 #x20 #x80) - (static-rgba #x20 #x80 #x20 #x80) - (static-rgba #x00 #x30 #x00 #x80) - (static-rgba #x00 #x30 #x00 #x80) - ) - ) - ;; 07 - blue - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x40 #x40 #x80 #x80) - (static-rgba #x40 #x40 #x80 #x80) - (static-rgba #x00 #x00 #x60 #x80) - (static-rgba #x00 #x00 #x60 #x80) - ) - ) - ;; 08 - cyan - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x00 #x80 #x80 #x80) - (static-rgba #x00 #x80 #x80 #x80) - (static-rgba #x00 #x20 #x50 #x80) - (static-rgba #x00 #x20 #x50 #x80) - ) - ) - ;; 09 - pink - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x40 #x80 #x80) - (static-rgba #x80 #x40 #x80 #x80) - (static-rgba #x30 #x00 #x30 #x80) - (static-rgba #x30 #x00 #x30 #x80) - ) - ) - ;; 10 - menu-selected (debug, selected using joypad) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x60 #x80 #x80 #x80) - (static-rgba #x60 #x80 #x80 #x80) - (static-rgba #x00 #x40 #x60 #x80) - (static-rgba #x00 #x40 #x60 #x80) - ) - ) - ;; 11 - menu-selected-parent (debug, parent of active menu) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x40 #x60 #x60 #x80) - (static-rgba #x40 #x60 #x60 #x80) - (static-rgba #x00 #x20 #x40 #x80) - (static-rgba #x00 #x20 #x40 #x80) - ) - ) - ;; 12 - menu (debug, active menu, regular) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x80 #x80 #x80) - (static-rgba #x80 #x80 #x80 #x80) - (static-rgba #x50 #x50 #x50 #x80) - (static-rgba #x50 #x50 #x50 #x80) - ) - ) - ;; 13 - menu-parent (debug, parent menu, regular) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x50 #x50 #x50 #x80) - (static-rgba #x50 #x50 #x50 #x80) - (static-rgba #x28 #x28 #x28 #x80) - (static-rgba #x28 #x28 #x28 #x80) - ) - ) - ;; 14 - menu-func-bad (debug, anim-tester) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x54 #x00 #x80) - (static-rgba #x80 #x54 #x00 #x80) - (static-rgba #x60 #x00 #x00 #x80) - (static-rgba #x60 #x00 #x00 #x80) - ) - ) - ;; 15 - menu-flag-on (debug, active menu, enabled) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x70 #x80 #x30 #x80) - (static-rgba #x70 #x80 #x30 #x80) - (static-rgba #x00 #x60 #x00 #x80) - (static-rgba #x00 #x60 #x00 #x80) - ) - ) - ;; 16 - menu-flag-on-parent (debug, parent menu, enabled) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x48 #x58 #x8 #x80) - (static-rgba #x48 #x58 #x10 #x80) - (static-rgba #x00 #x38 #x00 #x80) - (static-rgba #x00 #x38 #x00 #x80) - ) - ) - ;; 17 - menu-flag-off (debug, active menu, disabled) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x58 #x60 #x58 #x80) - (static-rgba #x58 #x60 #x58 #x80) - (static-rgba #x30 #x40 #x30 #x80) - (static-rgba #x30 #x40 #x30 #x80) - ) - ) - ;; 18 - menu-flag-off-parent (debug, parent menu, disabled) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x40 #x48 #x40 #x80) - (static-rgba #x40 #x48 #x40 #x80) - (static-rgba #x18 #x28 #x18 #x80) - (static-rgba #x18 #x28 #x18 #x80) - ) - ) - ;; 19 - menu-invalid (menu and debug, grayed out option) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x30 #x20 #x30 #x80) - (static-rgba #x30 #x20 #x30 #x80) - (static-rgba #x30 #x20 #x30 #x80) - (static-rgba #x30 #x20 #x30 #x80) - ) - ) - ;; 20 - flat-yellow (debug, rev.) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x79 #x48 #x80) - (static-rgba #x80 #x79 #x48 #x80) - (static-rgba #x80 #x79 #x48 #x80) - (static-rgba #x80 #x79 #x48 #x80) - ) - ) - ;; 21 - progress-memcard (menu, under percentage, save slot stats) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x20 #x5e #x78 #x80) - (static-rgba #x20 #x5e #x78 #x80) - (static-rgba #x80 #x7d #x4f #x80) - (static-rgba #x80 #x7d #x4f #x80) - ) - ) - ;; 22 - pad-back - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x1d #x1d #x1d #x80) - (static-rgba #x1d #x1d #x1d #x80) - (static-rgba #x1d #x1d #x1d #x80) - (static-rgba #x1d #x1d #x1d #x80) - ) - ) - ;; 23 - pad-shine - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x40 #x40 #x40 #x80) - (static-rgba #x40 #x40 #x40 #x80) - (static-rgba #x40 #x40 #x40 #x80) - (static-rgba #x40 #x40 #x40 #x80) - ) - ) - ;; 24 - pad-square - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x7a #x4d #x65 #x80) - (static-rgba #x7a #x4d #x65 #x80) - (static-rgba #x7a #x4d #x65 #x80) - (static-rgba #x7a #x4d #x65 #x80) - ) - ) - ;; 25 - pad-circle - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x7a #x34 #x34 #x80) - (static-rgba #x7a #x34 #x34 #x80) - (static-rgba #x7a #x34 #x34 #x80) - (static-rgba #x7a #x34 #x34 #x80) - ) - ) - ;; 26 - pad-triangle - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x10 #x65 #x4c #x80) - (static-rgba #x10 #x65 #x4c #x80) - (static-rgba #x10 #x65 #x4c #x80) - (static-rgba #x10 #x65 #x4c #x80) - ) - ) - ;; 27 - pad-x - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x46 #x4a #x78 #x80) - (static-rgba #x46 #x4a #x78 #x80) - (static-rgba #x46 #x4a #x78 #x80) - (static-rgba #x46 #x4a #x78 #x80) - ) - ) - ;; 28 - progress-blue (menu, location name, task status) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x57 #x7e #x80 #x80) - (static-rgba #x57 #x7e #x80 #x80) - (static-rgba #x29 #x63 #x79 #x80) - (static-rgba #x29 #x63 #x70 #x80) - ) - ) - ;; 29 - progress-yellow (menu, power cell description) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x7f #x7b #x33 #x80) - (static-rgba #x7f #x7b #x33 #x80) - (static-rgba #x76 #x40 #x14 #x80) - (static-rgba #x76 #x40 #x14 #x80) - ) - ) - ;; 30 - progress-selected (menu, selected) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x79 #x79 #x2 #x80) - (static-rgba #x79 #x79 #x2 #x80) - (static-rgba #x1b #x51 #x20 #x80) - (static-rgba #x1b #x51 #x20 #x80) - ) - ) - ;; 31 - progress-percent (menu, completion percentage) - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x47 #x68 #x7a #x80) - (static-rgba #x47 #x68 #x7a #x80) - (static-rgba #x00 #x3c #x4f #x80) - (static-rgba #x00 #x3c #x4f #x80) - ) - ) - ;; 32 - credits - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x70 #x78 #x70 #x80) - (static-rgba #x70 #x78 #x70 #x80) - (static-rgba #x30 #x38 #x30 #x80) - (static-rgba #x30 #x38 #x30 #x80) - ) - ) - ;; 33 - red-reverse - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x60 #x00 #x00 #x80) - (static-rgba #x60 #x00 #x00 #x80) - (static-rgba #x80 #x60 #x20 #x80) - (static-rgba #x80 #x60 #x20 #x80) - ) - ) - ;; 34 - red-obverse - (new 'static 'char-color - :color - (new 'static 'array rgba 4 - (static-rgba #x80 #x60 #x20 #x80) - (static-rgba #x80 #x60 #x20 #x80) - (static-rgba #x60 #x00 #x00 #x80) - (static-rgba #x60 #x00 #x00 #x80) - ) - ) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - (new 'static 'char-color) - ) - ) - ) + ((font-tmpl dma-gif-packet :inline) + (char-tmpl dma-gif-packet :inline) + (tex1-tmpl uint64 2) + (small-font-lo-tmpl uint64 2) + (small-font-lo-tmpl-qw uint128 :overlay-at (-> small-font-lo-tmpl 0)) + (small-font-hi-tmpl uint64 2) + (small-font-hi-tmpl-qw uint128 :overlay-at (-> small-font-hi-tmpl 0)) + (large-font-lo-tmpl uint64 2) + (large-font-lo-tmpl-qw uint128 :overlay-at (-> large-font-lo-tmpl 0)) + (large-font-hi-tmpl uint64 2) + (large-font-hi-tmpl-qw uint128 :overlay-at (-> large-font-hi-tmpl 0)) + (size1-small vector :inline) + (size2-small vector :inline) + (size3-small vector :inline) + (size1-large vector :inline) + (size2-large vector :inline) + (size3-large vector :inline) + (size-st1 vector :inline) + (size-st2 vector :inline) + (size-st3 vector :inline) + (save vector :inline) + (save-color vector 4 :inline) + (current-verts char-verts :inline) + (src-verts char-verts :inline) + (dest-verts char-verts :inline) + (justify vector 64 :inline) + (color-shadow vector4w :inline) + (color-table char-color 64 :inline) + (last-color font-color) + (last-color-32 int32 :overlay-at last-color) + (save-last-color font-color) + (save-last-color-32 int32 :overlay-at save-last-color) + (buf basic) + (str-ptr uint32) + (str-ptr-signed (pointer uint8) :overlay-at str-ptr) + (flags font-flags) + (flags-signed int32 :overlay-at flags) + (reg-save uint32 5))) + +(define *font-work* + (new 'static + 'font-work + :font-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + :gif + (gif-tag->static-array (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 :prim #x5c :nreg #x1) ;; (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip 1 :tme 1 :abe 1) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)))) + :char-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #xe :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #xe :cmd (vif-cmd direct) :msk #x1)) + :gif + (gif-tag->static-array (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 :prim #x5c :nreg #xd) ;; (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip 1 :tme 1 :abe 1) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id st) + :regs2 (gif-reg-id rgbaq) + :regs3 (gif-reg-id xyzf2) + :regs4 (gif-reg-id st) + :regs5 (gif-reg-id rgbaq) + :regs6 (gif-reg-id xyzf2) + :regs7 (gif-reg-id st) + :regs8 (gif-reg-id rgbaq) + :regs9 (gif-reg-id xyzf2) + :regs10 (gif-reg-id st) + :regs11 (gif-reg-id rgbaq) + :regs12 (gif-reg-id xyzf2)))) + :tex1-tmpl + (new 'static 'array uint64 2 #x60 #x14) + :small-font-lo-tmpl + (new 'static 'array uint64 2 #x0 #x6) + :small-font-hi-tmpl + (new 'static 'array uint64 2 #x0 #x6) + :large-font-lo-tmpl + (new 'static 'array uint64 2 #x0 #x6) + :large-font-hi-tmpl + (new 'static 'array uint64 2 #x0 #x6) + :size1-small + (new 'static 'vector :x 12.0 :y 0.0 :w 0.5) + :size2-small + (new 'static 'vector :x 0.0 :y 8.0 :w 8.0) + :size3-small + (new 'static 'vector :x 12.0 :y 8.0 :w 8.0) + :size1-large + (new 'static 'vector :x 24.0 :y 0.0 :w 1.0) + :size2-large + (new 'static 'vector :x 0.0 :y 16.0 :w 16.0) + :size3-large + (new 'static 'vector :x 24.0 :y 16.0 :w 16.0) + :size-st1 + (new 'static 'vector :x 0.08985 :y 0.0 :w 0.5) + :size-st2 + (new 'static 'vector :x 0.0 :y 0.06153846 :w 0.5) + :size-st3 + (new 'static 'vector :x 0.08985 :y 0.06153846 :w 0.5) + :current-verts + (new 'static + 'char-verts + :pos + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0)) + :tex-st + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0))) + :src-verts + (new 'static + 'char-verts + :pos + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0)) + :tex-st + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0))) + :dest-verts + (new 'static + 'char-verts + :pos + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0) + (new 'static 'vector :w 1.0)) + :tex-st + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0) + (new 'static 'vector :z 1.0))) + :color-shadow + (new 'static 'vector4w :x #x00 :y #x00 :z #x00 :w #x80) + ;; TODO - make enum for this + :color-table + (new 'static + 'inline-array + char-color + 64 + ;; 00 - default (menu and HUD) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x70 #x78 #x70 #x80) + (static-rgba #x70 #x78 #x70 #x80) + (static-rgba #x30 #x38 #x30 #x80) + (static-rgba #x30 #x38 #x30 #x80))) + ;; 01 - white (debug, camera settings, actor marks) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x80 #x80 #x80) + (static-rgba #x80 #x80 #x80 #x80) + (static-rgba #x60 #x60 #x60 #x80) + (static-rgba #x60 #x60 #x60 #x80))) + ;; 02 - transparent + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x80 #x80 #x40) + (static-rgba #x80 #x80 #x80 #x40) + (static-rgba #x60 #x60 #x60 #x40) + (static-rgba #x60 #x60 #x60 #x40))) + ;; 03 - red (debug values, subtitles - character names) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x60 #x20 #x80) + (static-rgba #x80 #x60 #x20 #x80) + (static-rgba #x60 #x00 #x00 #x80) + (static-rgba #x60 #x00 #x00 #x80))) + ;; 04 - orange (debug, path marks numbers) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x64 #x00 #x80) + (static-rgba #x80 #x64 #x00 #x80) + (static-rgba #x80 #x00 #x00 #x80) + (static-rgba #x80 #x00 #x00 #x80))) + ;; 05 - yellow (HUD, other numbers) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x80 #x00 #x80) + (static-rgba #x80 #x80 #x00 #x80) + (static-rgba #x28 #x28 #x00 #x80) + (static-rgba #x28 #x28 #x00 #x80))) + ;; 06 - green (HUD, health numbers) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x20 #x80 #x20 #x80) + (static-rgba #x20 #x80 #x20 #x80) + (static-rgba #x00 #x30 #x00 #x80) + (static-rgba #x00 #x30 #x00 #x80))) + ;; 07 - blue + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x40 #x40 #x80 #x80) + (static-rgba #x40 #x40 #x80 #x80) + (static-rgba #x00 #x00 #x60 #x80) + (static-rgba #x00 #x00 #x60 #x80))) + ;; 08 - cyan + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x00 #x80 #x80 #x80) + (static-rgba #x00 #x80 #x80 #x80) + (static-rgba #x00 #x20 #x50 #x80) + (static-rgba #x00 #x20 #x50 #x80))) + ;; 09 - pink + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x40 #x80 #x80) + (static-rgba #x80 #x40 #x80 #x80) + (static-rgba #x30 #x00 #x30 #x80) + (static-rgba #x30 #x00 #x30 #x80))) + ;; 10 - menu-selected (debug, selected using joypad) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x60 #x80 #x80 #x80) + (static-rgba #x60 #x80 #x80 #x80) + (static-rgba #x00 #x40 #x60 #x80) + (static-rgba #x00 #x40 #x60 #x80))) + ;; 11 - menu-selected-parent (debug, parent of active menu) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x40 #x60 #x60 #x80) + (static-rgba #x40 #x60 #x60 #x80) + (static-rgba #x00 #x20 #x40 #x80) + (static-rgba #x00 #x20 #x40 #x80))) + ;; 12 - menu (debug, active menu, regular) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x80 #x80 #x80) + (static-rgba #x80 #x80 #x80 #x80) + (static-rgba #x50 #x50 #x50 #x80) + (static-rgba #x50 #x50 #x50 #x80))) + ;; 13 - menu-parent (debug, parent menu, regular) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x50 #x50 #x50 #x80) + (static-rgba #x50 #x50 #x50 #x80) + (static-rgba #x28 #x28 #x28 #x80) + (static-rgba #x28 #x28 #x28 #x80))) + ;; 14 - menu-func-bad (debug, anim-tester) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x54 #x00 #x80) + (static-rgba #x80 #x54 #x00 #x80) + (static-rgba #x60 #x00 #x00 #x80) + (static-rgba #x60 #x00 #x00 #x80))) + ;; 15 - menu-flag-on (debug, active menu, enabled) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x70 #x80 #x30 #x80) + (static-rgba #x70 #x80 #x30 #x80) + (static-rgba #x00 #x60 #x00 #x80) + (static-rgba #x00 #x60 #x00 #x80))) + ;; 16 - menu-flag-on-parent (debug, parent menu, enabled) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x48 #x58 #x8 #x80) + (static-rgba #x48 #x58 #x10 #x80) + (static-rgba #x00 #x38 #x00 #x80) + (static-rgba #x00 #x38 #x00 #x80))) + ;; 17 - menu-flag-off (debug, active menu, disabled) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x58 #x60 #x58 #x80) + (static-rgba #x58 #x60 #x58 #x80) + (static-rgba #x30 #x40 #x30 #x80) + (static-rgba #x30 #x40 #x30 #x80))) + ;; 18 - menu-flag-off-parent (debug, parent menu, disabled) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x40 #x48 #x40 #x80) + (static-rgba #x40 #x48 #x40 #x80) + (static-rgba #x18 #x28 #x18 #x80) + (static-rgba #x18 #x28 #x18 #x80))) + ;; 19 - menu-invalid (menu and debug, grayed out option) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x30 #x20 #x30 #x80) + (static-rgba #x30 #x20 #x30 #x80) + (static-rgba #x30 #x20 #x30 #x80) + (static-rgba #x30 #x20 #x30 #x80))) + ;; 20 - flat-yellow (debug, rev.) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x79 #x48 #x80) + (static-rgba #x80 #x79 #x48 #x80) + (static-rgba #x80 #x79 #x48 #x80) + (static-rgba #x80 #x79 #x48 #x80))) + ;; 21 - progress-memcard (menu, under percentage, save slot stats) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x20 #x5e #x78 #x80) + (static-rgba #x20 #x5e #x78 #x80) + (static-rgba #x80 #x7d #x4f #x80) + (static-rgba #x80 #x7d #x4f #x80))) + ;; 22 - pad-back + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x1d #x1d #x1d #x80) + (static-rgba #x1d #x1d #x1d #x80) + (static-rgba #x1d #x1d #x1d #x80) + (static-rgba #x1d #x1d #x1d #x80))) + ;; 23 - pad-shine + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x40 #x40 #x40 #x80) + (static-rgba #x40 #x40 #x40 #x80) + (static-rgba #x40 #x40 #x40 #x80) + (static-rgba #x40 #x40 #x40 #x80))) + ;; 24 - pad-square + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x7a #x4d #x65 #x80) + (static-rgba #x7a #x4d #x65 #x80) + (static-rgba #x7a #x4d #x65 #x80) + (static-rgba #x7a #x4d #x65 #x80))) + ;; 25 - pad-circle + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x7a #x34 #x34 #x80) + (static-rgba #x7a #x34 #x34 #x80) + (static-rgba #x7a #x34 #x34 #x80) + (static-rgba #x7a #x34 #x34 #x80))) + ;; 26 - pad-triangle + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x10 #x65 #x4c #x80) + (static-rgba #x10 #x65 #x4c #x80) + (static-rgba #x10 #x65 #x4c #x80) + (static-rgba #x10 #x65 #x4c #x80))) + ;; 27 - pad-x + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x46 #x4a #x78 #x80) + (static-rgba #x46 #x4a #x78 #x80) + (static-rgba #x46 #x4a #x78 #x80) + (static-rgba #x46 #x4a #x78 #x80))) + ;; 28 - progress-blue (menu, location name, task status) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x57 #x7e #x80 #x80) + (static-rgba #x57 #x7e #x80 #x80) + (static-rgba #x29 #x63 #x79 #x80) + (static-rgba #x29 #x63 #x70 #x80))) + ;; 29 - progress-yellow (menu, power cell description) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x7f #x7b #x33 #x80) + (static-rgba #x7f #x7b #x33 #x80) + (static-rgba #x76 #x40 #x14 #x80) + (static-rgba #x76 #x40 #x14 #x80))) + ;; 30 - progress-selected (menu, selected) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x79 #x79 #x2 #x80) + (static-rgba #x79 #x79 #x2 #x80) + (static-rgba #x1b #x51 #x20 #x80) + (static-rgba #x1b #x51 #x20 #x80))) + ;; 31 - progress-percent (menu, completion percentage) + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x47 #x68 #x7a #x80) + (static-rgba #x47 #x68 #x7a #x80) + (static-rgba #x00 #x3c #x4f #x80) + (static-rgba #x00 #x3c #x4f #x80))) + ;; 32 - credits + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x70 #x78 #x70 #x80) + (static-rgba #x70 #x78 #x70 #x80) + (static-rgba #x30 #x38 #x30 #x80) + (static-rgba #x30 #x38 #x30 #x80))) + ;; 33 - red-reverse + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x60 #x00 #x00 #x80) + (static-rgba #x60 #x00 #x00 #x80) + (static-rgba #x80 #x60 #x20 #x80) + (static-rgba #x80 #x60 #x20 #x80))) + ;; 34 - red-obverse + (new 'static + 'char-color + :color + (new 'static + 'array + rgba + 4 + (static-rgba #x80 #x60 #x20 #x80) + (static-rgba #x80 #x60 #x20 #x80) + (static-rgba #x60 #x00 #x00 #x80) + (static-rgba #x60 #x00 #x00 #x80))) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color) + (new 'static 'char-color)))) (defun font-set-tex0 ((ptr-tex0 (pointer gs-tex0)) (tex texture) (tex-addr uint) (psm uint) (clut-addr uint)) - (set! (-> ptr-tex0 0) (new 'static 'gs-tex0 - :tcc #x1 - :cld #x1 - :cbp clut-addr - :th (log2 (-> tex h)) - :tw (log2 (-> tex w)) - :tbw (-> tex width 0) - :tbp0 (/ (the-as int tex-addr) 64) - :psm psm - ) - ) - (none) - ) - + (set! (-> ptr-tex0 0) + (new 'static + 'gs-tex0 + :tcc #x1 + :cld #x1 + :cbp + clut-addr + :th + (log2 (-> tex h)) + :tw + (log2 (-> tex w)) + :tbw + (-> tex width 0) + :tbp0 + (/ (the-as int tex-addr) 64) + :psm + psm)) + (none)) (define-extern draw-string (function string dma-buffer font-context float)) + (define-extern draw-string-xy (function string dma-buffer int int font-color font-flags float)) diff --git a/goal_src/jak1/engine/gfx/font.gc b/goal_src/jak1/engine/gfx/font.gc index d02a8ee92f..43a4bce335 100644 --- a/goal_src/jak1/engine/gfx/font.gc +++ b/goal_src/jak1/engine/gfx/font.gc @@ -1,615 +1,592 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/font-h.gc") (require "engine/ps2/vu1-macros.gc") -;; name: font.gc -;; name in dgo: font -;; dgos: GAME, ENGINE - ;; Font asm macros: ;; these could likely be reimplemented within the OpenGOAL compiler and be faster. (defmacro .sll (result in sa) - `(set! ,result (sext32 (the-as int (shl (logand ,in #xffffffff) ,sa)))) - ) + `(set! ,result (sext32 (the-as int (shl (logand ,in #xffffffff) ,sa))))) (defmacro .movz (result value check original) - `(if (= ,check 0) - (set! ,result (the-as int ,value)) - (set! ,result (the-as int ,original)) - ) - ) + `(if (= ,check 0) (set! ,result (the-as int ,value)) (set! ,result (the-as int ,original)))) (defmacro .movz-128 (result value check original) "movz, but keeps the upper 64 bits of a 128-bit register the same. This is undocumented, but the game depends on it." `(let ((temp (new 'stack 'array 'uint64 2))) - (set! (-> (the (pointer uint128) temp)) ,original) - (if (= ,check 0) - (set! (-> temp 0) ,value) - ) - (set! ,result (-> (the (pointer uint128) temp))) - ) - ) + (set! (-> (the (pointer uint128) temp)) ,original) + (if (= ,check 0) (set! (-> temp 0) ,value)) + (set! ,result (-> (the (pointer uint128) temp))))) (defmacro .movn (result value check original) - `(if (!= ,check 0) - (set! ,result (the-as int ,value)) - (set! ,result (the-as int ,original)) - ) - ) + `(if (!= ,check 0) (set! ,result (the-as int ,value)) (set! ,result (the-as int ,original)))) (defmacro .movn-128 (result value check original) `(let ((temp (new 'stack-no-clear 'array 'uint64 2))) - (set! (-> (the (pointer uint128) temp)) ,original) - (if (!= ,check 0) - (set! (-> temp 0) (the uint ,value)) - ) - (set! ,result (-> (the (pointer uint128) temp))) - ) - ) + (set! (-> (the (pointer uint128) temp)) ,original) + (if (!= ,check 0) (set! (-> temp 0) (the uint ,value))) + (set! ,result (-> (the (pointer uint128) temp))))) (defmacro .addu (result a b) - `(set! ,result (sext32 (logand (+ (the-as int ,a) (the-as int ,b)) #xffffffff))) - ) + `(set! ,result (sext32 (logand (+ (the-as int ,a) (the-as int ,b)) #xffffffff)))) (defmacro .sra (result in sa) - `(set! ,result (sext32 (sar (logand #xffffffff (the-as int ,in)) ,sa))) - ) - + `(set! ,result (sext32 (sar (logand #xffffffff (the-as int ,in)) ,sa)))) ;; font vertex table. (define *font12-table* - (new 'static 'inline-array vector 250 - (new 'static 'vector :x 0.0039 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.0019 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.7539 :y 0.0019 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.8476 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.0644 :z 1.0 :w 22.5) - (new 'static 'vector :x 0.1914 :y 0.0644 :z 1.0 :w 19.5) - (new 'static 'vector :x 0.2851 :y 0.0644 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.3789 :y 0.0644 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.4726 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.0644 :z 1.0 :w 10.5) - (new 'static 'vector :x 0.6601 :y 0.0644 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.7539 :y 0.0644 :z 1.0 :w 10.5) - (new 'static 'vector :x 0.8476 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.1269 :z 1.0 :w 16.5) - (new 'static 'vector :x 0.0976 :y 0.1269 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.1914 :y 0.1269 :z 1.0 :w 10.5) - (new 'static 'vector :x 0.2851 :y 0.1269 :z 1.0 :w 7.5) - (new 'static 'vector :x 0.3789 :y 0.1269 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.4726 :y 0.1269 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.5664 :y 0.1269 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.6601 :y 0.1269 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.7539 :y 0.1269 :z 1.0 :w 7.5) - (new 'static 'vector :x 0.8476 :y 0.1269 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.0039 :y 0.1894 :z 1.0 :w 7.5) - (new 'static 'vector :x 0.0976 :y 0.1894 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.1914 :y 0.1894 :z 1.0 :w 16.5) - (new 'static 'vector :x 0.2851 :y 0.1894 :z 1.0 :w 11.25) - (new 'static 'vector :x 0.3789 :y 0.1894 :z 1.0 :w 16.5) - (new 'static 'vector :x 0.4726 :y 0.1894 :z 1.0 :w 16.5) - (new 'static 'vector :x 0.5664 :y 0.1894 :z 1.0 :w 16.5) - (new 'static 'vector :x 0.6601 :y 0.1894 :z 1.0 :w 16.5) - (new 'static 'vector :x 0.7539 :y 0.1894 :z 1.0 :w 16.5) - (new 'static 'vector :x 0.8476 :y 0.1894 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.0039 :y 0.2519 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.0976 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.2519 :z 1.0 :w 7.5) - (new 'static 'vector :x 0.2851 :y 0.2519 :z 1.0 :w 7.5) - (new 'static 'vector :x 0.3789 :y 0.2519 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.4726 :y 0.2519 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.5664 :y 0.2519 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.6601 :y 0.2519 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.7539 :y 0.2519 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.8476 :y 0.2519 :z 1.0 :w 17.25) - (new 'static 'vector :x 0.0039 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.3144 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.1914 :y 0.3144 :z 1.0 :w 15.75) - (new 'static 'vector :x 0.2851 :y 0.3144 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.3789 :y 0.3144 :z 1.0 :w 14.25) - (new 'static 'vector :x 0.4726 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.3144 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.6601 :y 0.3144 :z 1.0 :w 7.5) - (new 'static 'vector :x 0.7539 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.3769 :z 1.0 :w 15.75) - (new 'static 'vector :x 0.0976 :y 0.3769 :z 1.0 :w 19.5) - (new 'static 'vector :x 0.1914 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.3769 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.4726 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.3769 :z 1.0 :w 15.75) - (new 'static 'vector :x 0.6601 :y 0.3769 :z 1.0 :w 12.75) - (new 'static 'vector :x 0.7539 :y 0.3769 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.8476 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.4394 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.1914 :y 0.4394 :z 1.0 :w 17.25) - (new 'static 'vector :x 0.2851 :y 0.4394 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.3789 :y 0.4394 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.4726 :y 0.4394 :z 1.0 :w 9.0) - (new 'static 'vector :x 0.5664 :y 0.4394 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.6601 :y 0.4394 :z 1.0 :w 10.5) - (new 'static 'vector :x 0.7539 :y 0.4394 :z 1.0 :w 19.5) - (new 'static 'vector :x 0.8476 :y 0.4394 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.0039 :y 0.5019 :z 1.0 :w 6.0) - (new 'static 'vector :x 0.0976 :y 0.5019 :z 1.0 :w 14.25) - (new 'static 'vector :x 0.1914 :y 0.5019 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.2851 :y 0.5019 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.3789 :y 0.5019 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.4726 :y 0.5019 :z 1.0 :w 12.75) - (new 'static 'vector :x 0.5664 :y 0.5019 :z 1.0 :w 12.75) - (new 'static 'vector :x 0.6601 :y 0.5019 :z 1.0 :w 17.25) - (new 'static 'vector :x 0.7539 :y 0.5019 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.8476 :y 0.5019 :z 1.0 :w 9.0) - (new 'static 'vector :x 0.0039 :y 0.5644 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.0976 :y 0.5644 :z 1.0 :w 14.25) - (new 'static 'vector :x 0.1914 :y 0.5644 :z 1.0 :w 9.75) - (new 'static 'vector :x 0.2851 :y 0.5644 :z 1.0 :w 18.5) - (new 'static 'vector :x 0.3789 :y 0.5644 :z 1.0 :w 14.25) - (new 'static 'vector :x 0.4726 :y 0.5644 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.5664 :y 0.5644 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.6601 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.5644 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.8476 :y 0.5644 :z 1.0 :w 10.5) - (new 'static 'vector :x 0.0039 :y 0.6269 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.0976 :y 0.6269 :z 1.0 :w 12.75) - (new 'static 'vector :x 0.1914 :y 0.6269 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.2851 :y 0.6269 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.3789 :y 0.6269 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.4726 :y 0.6269 :z 1.0 :w 16.5) - (new 'static 'vector :x 0.5664 :y 0.6269 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.6601 :y 0.6269 :z 1.0 :w 10.5) - (new 'static 'vector :x 0.7539 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.6269 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.0039 :y 0.6894 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.0976 :y 0.6894 :z 1.0 :w 13.5) - (new 'static 'vector :x 0.0039 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.7519 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.2851 :y 0.7519 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.3789 :y 0.7519 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.4726 :y 0.7519 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.5664 :y 0.7519 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.6601 :y 0.7519 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.0039 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.1269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.2519 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.3144 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.3769 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.4394 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.5019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.5644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.2851 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.4726 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.7539 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.8476 :y 0.6269 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.6894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0976 :y 0.6894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.0039 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.7519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.8769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.8769 :z 1.0 :w 24.0) - ) - ) + (new 'static + 'inline-array + vector + 250 + (new 'static 'vector :x 0.0039 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.0019 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.7539 :y 0.0019 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.8476 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.0644 :z 1.0 :w 22.5) + (new 'static 'vector :x 0.1914 :y 0.0644 :z 1.0 :w 19.5) + (new 'static 'vector :x 0.2851 :y 0.0644 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.3789 :y 0.0644 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.4726 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.0644 :z 1.0 :w 10.5) + (new 'static 'vector :x 0.6601 :y 0.0644 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.7539 :y 0.0644 :z 1.0 :w 10.5) + (new 'static 'vector :x 0.8476 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.1269 :z 1.0 :w 16.5) + (new 'static 'vector :x 0.0976 :y 0.1269 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.1914 :y 0.1269 :z 1.0 :w 10.5) + (new 'static 'vector :x 0.2851 :y 0.1269 :z 1.0 :w 7.5) + (new 'static 'vector :x 0.3789 :y 0.1269 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.4726 :y 0.1269 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.5664 :y 0.1269 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.6601 :y 0.1269 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.7539 :y 0.1269 :z 1.0 :w 7.5) + (new 'static 'vector :x 0.8476 :y 0.1269 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.0039 :y 0.1894 :z 1.0 :w 7.5) + (new 'static 'vector :x 0.0976 :y 0.1894 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.1914 :y 0.1894 :z 1.0 :w 16.5) + (new 'static 'vector :x 0.2851 :y 0.1894 :z 1.0 :w 11.25) + (new 'static 'vector :x 0.3789 :y 0.1894 :z 1.0 :w 16.5) + (new 'static 'vector :x 0.4726 :y 0.1894 :z 1.0 :w 16.5) + (new 'static 'vector :x 0.5664 :y 0.1894 :z 1.0 :w 16.5) + (new 'static 'vector :x 0.6601 :y 0.1894 :z 1.0 :w 16.5) + (new 'static 'vector :x 0.7539 :y 0.1894 :z 1.0 :w 16.5) + (new 'static 'vector :x 0.8476 :y 0.1894 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.0039 :y 0.2519 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.0976 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.2519 :z 1.0 :w 7.5) + (new 'static 'vector :x 0.2851 :y 0.2519 :z 1.0 :w 7.5) + (new 'static 'vector :x 0.3789 :y 0.2519 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.4726 :y 0.2519 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.5664 :y 0.2519 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.6601 :y 0.2519 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.7539 :y 0.2519 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.8476 :y 0.2519 :z 1.0 :w 17.25) + (new 'static 'vector :x 0.0039 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.3144 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.1914 :y 0.3144 :z 1.0 :w 15.75) + (new 'static 'vector :x 0.2851 :y 0.3144 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.3789 :y 0.3144 :z 1.0 :w 14.25) + (new 'static 'vector :x 0.4726 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.3144 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.6601 :y 0.3144 :z 1.0 :w 7.5) + (new 'static 'vector :x 0.7539 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.3769 :z 1.0 :w 15.75) + (new 'static 'vector :x 0.0976 :y 0.3769 :z 1.0 :w 19.5) + (new 'static 'vector :x 0.1914 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.3769 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.4726 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.3769 :z 1.0 :w 15.75) + (new 'static 'vector :x 0.6601 :y 0.3769 :z 1.0 :w 12.75) + (new 'static 'vector :x 0.7539 :y 0.3769 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.8476 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.4394 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.1914 :y 0.4394 :z 1.0 :w 17.25) + (new 'static 'vector :x 0.2851 :y 0.4394 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.3789 :y 0.4394 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.4726 :y 0.4394 :z 1.0 :w 9.0) + (new 'static 'vector :x 0.5664 :y 0.4394 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.6601 :y 0.4394 :z 1.0 :w 10.5) + (new 'static 'vector :x 0.7539 :y 0.4394 :z 1.0 :w 19.5) + (new 'static 'vector :x 0.8476 :y 0.4394 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.0039 :y 0.5019 :z 1.0 :w 6.0) + (new 'static 'vector :x 0.0976 :y 0.5019 :z 1.0 :w 14.25) + (new 'static 'vector :x 0.1914 :y 0.5019 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.2851 :y 0.5019 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.3789 :y 0.5019 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.4726 :y 0.5019 :z 1.0 :w 12.75) + (new 'static 'vector :x 0.5664 :y 0.5019 :z 1.0 :w 12.75) + (new 'static 'vector :x 0.6601 :y 0.5019 :z 1.0 :w 17.25) + (new 'static 'vector :x 0.7539 :y 0.5019 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.8476 :y 0.5019 :z 1.0 :w 9.0) + (new 'static 'vector :x 0.0039 :y 0.5644 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.0976 :y 0.5644 :z 1.0 :w 14.25) + (new 'static 'vector :x 0.1914 :y 0.5644 :z 1.0 :w 9.75) + (new 'static 'vector :x 0.2851 :y 0.5644 :z 1.0 :w 18.5) + (new 'static 'vector :x 0.3789 :y 0.5644 :z 1.0 :w 14.25) + (new 'static 'vector :x 0.4726 :y 0.5644 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.5664 :y 0.5644 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.6601 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.5644 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.8476 :y 0.5644 :z 1.0 :w 10.5) + (new 'static 'vector :x 0.0039 :y 0.6269 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.0976 :y 0.6269 :z 1.0 :w 12.75) + (new 'static 'vector :x 0.1914 :y 0.6269 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.2851 :y 0.6269 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.3789 :y 0.6269 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.4726 :y 0.6269 :z 1.0 :w 16.5) + (new 'static 'vector :x 0.5664 :y 0.6269 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.6601 :y 0.6269 :z 1.0 :w 10.5) + (new 'static 'vector :x 0.7539 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.6269 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.0039 :y 0.6894 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.0976 :y 0.6894 :z 1.0 :w 13.5) + (new 'static 'vector :x 0.0039 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.7519 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.2851 :y 0.7519 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.3789 :y 0.7519 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.4726 :y 0.7519 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.5664 :y 0.7519 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.6601 :y 0.7519 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.0039 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.1269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.2519 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.3144 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.3769 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.4394 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.5019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.5644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.2851 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.4726 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.7539 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.8476 :y 0.6269 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.6894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0976 :y 0.6894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.0039 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.7519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.8769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.8769 :z 1.0 :w 24.0))) (define *font24-table* - (new 'static 'inline-array vector 289 - (new 'static 'vector :x 0.0039 :y 0.0019 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.0976 :y 0.0019 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.1914 :y 0.0019 :z 1.0 :w 19.5) - (new 'static 'vector :x 0.2851 :y 0.0019 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.3789 :y 0.0019 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.4726 :y 0.0019 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.5664 :y 0.0019 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.6601 :y 0.0019 :z 1.0 :w 9.0) - (new 'static 'vector :x 0.7539 :y 0.0019 :z 1.0 :w 19.0) - (new 'static 'vector :x 0.8476 :y 0.0019 :z 1.0 :w 12.0) - (new 'static 'vector :x 0.0039 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.0644 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.3789 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.0644 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.5664 :y 0.0644 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.6601 :y 0.0644 :z 1.0 :w 8.0) - (new 'static 'vector :x 0.7539 :y 0.0644 :z 1.0 :w 10.0) - (new 'static 'vector :x 0.8476 :y 0.0644 :z 1.0 :w 22.5) - (new 'static 'vector :x 0.0039 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.1269 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.1914 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.1269 :z 1.0 :w 10.0) - (new 'static 'vector :x 0.4726 :y 0.1269 :z 1.0 :w 9.0) - (new 'static 'vector :x 0.5664 :y 0.1269 :z 1.0 :w 22.5) - (new 'static 'vector :x 0.6601 :y 0.1269 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.7539 :y 0.1269 :z 1.0 :w 7.0) - (new 'static 'vector :x 0.8476 :y 0.1269 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.0039 :y 0.1894 :z 1.0 :w 9.0) - (new 'static 'vector :x 0.0976 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.1914 :y 0.1894 :z 1.0 :w 22.0) - (new 'static 'vector :x 0.2851 :y 0.1894 :z 1.0 :w 10.0) - (new 'static 'vector :x 0.3789 :y 0.1894 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.4726 :y 0.1894 :z 1.0 :w 15.0) - (new 'static 'vector :x 0.5664 :y 0.1894 :z 1.0 :w 19.0) - (new 'static 'vector :x 0.6601 :y 0.1894 :z 1.0 :w 19.0) - (new 'static 'vector :x 0.7539 :y 0.1894 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.8476 :y 0.1894 :z 1.0 :w 17.0) - (new 'static 'vector :x 0.0039 :y 0.2519 :z 1.0 :w 17.0) - (new 'static 'vector :x 0.0976 :y 0.2519 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.1914 :y 0.2519 :z 1.0 :w 8.0) - (new 'static 'vector :x 0.2851 :y 0.2519 :z 1.0 :w 22.5) - (new 'static 'vector :x 0.3789 :y 0.2519 :z 1.0 :w 9.0) - (new 'static 'vector :x 0.4726 :y 0.2519 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.5664 :y 0.2519 :z 1.0 :w 9.0) - (new 'static 'vector :x 0.6601 :y 0.2519 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.7539 :y 0.2519 :z 1.0 :w 22.5) - (new 'static 'vector :x 0.8476 :y 0.2519 :z 1.0 :w 19.0) - (new 'static 'vector :x 0.0039 :y 0.3144 :z 1.0 :w 19.0) - (new 'static 'vector :x 0.0976 :y 0.3144 :z 1.0 :w 19.0) - (new 'static 'vector :x 0.1914 :y 0.3144 :z 1.0 :w 21.0) - (new 'static 'vector :x 0.2851 :y 0.3144 :z 1.0 :w 19.0) - (new 'static 'vector :x 0.3789 :y 0.3144 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.4726 :y 0.3144 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.5664 :y 0.3144 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.6601 :y 0.3144 :z 1.0 :w 11.0) - (new 'static 'vector :x 0.7539 :y 0.3144 :z 1.0 :w 16.0) - (new 'static 'vector :x 0.8476 :y 0.3144 :z 1.0 :w 21.0) - (new 'static 'vector :x 0.0039 :y 0.3769 :z 1.0 :w 17.0) - (new 'static 'vector :x 0.0976 :y 0.3769 :z 1.0 :w 23.0) - (new 'static 'vector :x 0.1914 :y 0.3769 :z 1.0 :w 18.0) - (new 'static 'vector :x 0.2851 :y 0.3769 :z 1.0 :w 21.0) - (new 'static 'vector :x 0.3789 :y 0.3769 :z 1.0 :w 19.0) - (new 'static 'vector :x 0.4726 :y 0.3769 :z 1.0 :w 22.0) - (new 'static 'vector :x 0.5664 :y 0.3769 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.6601 :y 0.3769 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.7539 :y 0.3769 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.8476 :y 0.3769 :z 1.0 :w 22.0) - (new 'static 'vector :x 0.0039 :y 0.4394 :z 1.0 :w 23.0) - (new 'static 'vector :x 0.0976 :y 0.4394 :z 1.0 :w 23.0) - (new 'static 'vector :x 0.1914 :y 0.4394 :z 1.0 :w 23.0) - (new 'static 'vector :x 0.2851 :y 0.4394 :z 1.0 :w 23.0) - (new 'static 'vector :x 0.3789 :y 0.4394 :z 1.0 :w 20.0) - (new 'static 'vector :x 0.4726 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.0019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.0644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.1269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.1894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.2519 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.3144 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.3769 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.4394 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.5019 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.5644 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.6269 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.6894 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0039 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.0976 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.1914 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.2851 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.3789 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.4726 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.5664 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.6601 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.7539 :y 0.7512 :z 1.0 :w 24.0) - (new 'static 'vector :x 0.8476 :y 0.7512 :z 1.0 :w 5.0) - ) - ) + (new 'static + 'inline-array + vector + 289 + (new 'static 'vector :x 0.0039 :y 0.0019 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.0976 :y 0.0019 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.1914 :y 0.0019 :z 1.0 :w 19.5) + (new 'static 'vector :x 0.2851 :y 0.0019 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.3789 :y 0.0019 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.4726 :y 0.0019 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.5664 :y 0.0019 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.6601 :y 0.0019 :z 1.0 :w 9.0) + (new 'static 'vector :x 0.7539 :y 0.0019 :z 1.0 :w 19.0) + (new 'static 'vector :x 0.8476 :y 0.0019 :z 1.0 :w 12.0) + (new 'static 'vector :x 0.0039 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.0644 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.3789 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.0644 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.5664 :y 0.0644 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.6601 :y 0.0644 :z 1.0 :w 8.0) + (new 'static 'vector :x 0.7539 :y 0.0644 :z 1.0 :w 10.0) + (new 'static 'vector :x 0.8476 :y 0.0644 :z 1.0 :w 22.5) + (new 'static 'vector :x 0.0039 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.1269 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.1914 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.1269 :z 1.0 :w 10.0) + (new 'static 'vector :x 0.4726 :y 0.1269 :z 1.0 :w 9.0) + (new 'static 'vector :x 0.5664 :y 0.1269 :z 1.0 :w 22.5) + (new 'static 'vector :x 0.6601 :y 0.1269 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.7539 :y 0.1269 :z 1.0 :w 7.0) + (new 'static 'vector :x 0.8476 :y 0.1269 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.0039 :y 0.1894 :z 1.0 :w 9.0) + (new 'static 'vector :x 0.0976 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.1914 :y 0.1894 :z 1.0 :w 22.0) + (new 'static 'vector :x 0.2851 :y 0.1894 :z 1.0 :w 10.0) + (new 'static 'vector :x 0.3789 :y 0.1894 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.4726 :y 0.1894 :z 1.0 :w 15.0) + (new 'static 'vector :x 0.5664 :y 0.1894 :z 1.0 :w 19.0) + (new 'static 'vector :x 0.6601 :y 0.1894 :z 1.0 :w 19.0) + (new 'static 'vector :x 0.7539 :y 0.1894 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.8476 :y 0.1894 :z 1.0 :w 17.0) + (new 'static 'vector :x 0.0039 :y 0.2519 :z 1.0 :w 17.0) + (new 'static 'vector :x 0.0976 :y 0.2519 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.1914 :y 0.2519 :z 1.0 :w 8.0) + (new 'static 'vector :x 0.2851 :y 0.2519 :z 1.0 :w 22.5) + (new 'static 'vector :x 0.3789 :y 0.2519 :z 1.0 :w 9.0) + (new 'static 'vector :x 0.4726 :y 0.2519 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.5664 :y 0.2519 :z 1.0 :w 9.0) + (new 'static 'vector :x 0.6601 :y 0.2519 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.7539 :y 0.2519 :z 1.0 :w 22.5) + (new 'static 'vector :x 0.8476 :y 0.2519 :z 1.0 :w 19.0) + (new 'static 'vector :x 0.0039 :y 0.3144 :z 1.0 :w 19.0) + (new 'static 'vector :x 0.0976 :y 0.3144 :z 1.0 :w 19.0) + (new 'static 'vector :x 0.1914 :y 0.3144 :z 1.0 :w 21.0) + (new 'static 'vector :x 0.2851 :y 0.3144 :z 1.0 :w 19.0) + (new 'static 'vector :x 0.3789 :y 0.3144 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.4726 :y 0.3144 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.5664 :y 0.3144 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.6601 :y 0.3144 :z 1.0 :w 11.0) + (new 'static 'vector :x 0.7539 :y 0.3144 :z 1.0 :w 16.0) + (new 'static 'vector :x 0.8476 :y 0.3144 :z 1.0 :w 21.0) + (new 'static 'vector :x 0.0039 :y 0.3769 :z 1.0 :w 17.0) + (new 'static 'vector :x 0.0976 :y 0.3769 :z 1.0 :w 23.0) + (new 'static 'vector :x 0.1914 :y 0.3769 :z 1.0 :w 18.0) + (new 'static 'vector :x 0.2851 :y 0.3769 :z 1.0 :w 21.0) + (new 'static 'vector :x 0.3789 :y 0.3769 :z 1.0 :w 19.0) + (new 'static 'vector :x 0.4726 :y 0.3769 :z 1.0 :w 22.0) + (new 'static 'vector :x 0.5664 :y 0.3769 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.6601 :y 0.3769 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.7539 :y 0.3769 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.8476 :y 0.3769 :z 1.0 :w 22.0) + (new 'static 'vector :x 0.0039 :y 0.4394 :z 1.0 :w 23.0) + (new 'static 'vector :x 0.0976 :y 0.4394 :z 1.0 :w 23.0) + (new 'static 'vector :x 0.1914 :y 0.4394 :z 1.0 :w 23.0) + (new 'static 'vector :x 0.2851 :y 0.4394 :z 1.0 :w 23.0) + (new 'static 'vector :x 0.3789 :y 0.4394 :z 1.0 :w 20.0) + (new 'static 'vector :x 0.4726 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.0019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.0644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.1269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.1894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.2519 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.3144 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.3769 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.4394 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.5019 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.5644 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.6269 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7505 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.6894 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0039 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.0976 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.1914 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.2851 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.3789 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.4726 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.5664 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.6601 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.7539 :y 0.7512 :z 1.0 :w 24.0) + (new 'static 'vector :x 0.8476 :y 0.7512 :z 1.0 :w 5.0))) ;; we have both GOAL and mips2c versions of this function @@ -619,24 +596,137 @@ (defun draw-string ((str-in string) (context dma-buffer) (arg2 font-context)) "Draw a string. Writes dma to the given buffer." (local-vars - (r0 uint128) (v0-0 float) (a0-2 int) (font-table-12 (inline-array vector)) (a3-6 (inline-array vector)) - (a3-8 (inline-array vector)) (t0-1 int) (q-hi-tmpl uint128) (color-array-prod int) (q-verts-2t uint128) - (q-verts-2 uint128) (q-verts-3t uint128) (q-verts-3 uint128) (t4-6 int) (fc-cr uint) (t4-16 int) (t4-17 int) - (t4-18 int) (t4-19 int) (t4-23 int) (t4-32 int) (t4-33 int) (t4-36 uint128) (t4-37 uint128) (q-verts-1t uint128) - (q-verts-1 uint128) (not-sc-lit1 uint) (not-sc-~ uint) (t5-6 int) (t5-7 int) (t5-9 int) (t5-10 uint) (t5-11 uint) - (t5-13 int) (t5-14 int) (t5-17 int) (t5-18 int) (t5-19 int) (t5-20 int) (t5-23 uint128) (t5-24 uint) (t5-25 uint) - (t5-27 int) (t5-28 int) (t5-32 uint128) (t5-33 uint128) (t5-35 uint128) (t5-36 uint128) (t5-39 int) (t5-40 int) - (t5-41 int) (t5-42 int) (t5-45 uint128) (q-verts-0t uint128) (q-verts-0 uint128) (t6-3 uint) (t6-4 uint) (t6-5 uint) - (t6-6 uint) (t6-7 uint) (t6-10 uint) (t6-11 uint) (t6-12 uint) (t6-13 uint) (t6-14 uint) (t6-16 uint) (t6-20 uint) - (t6-21 uint) (t6-22 uint) (t6-23 uint) (t6-24 uint) (t6-28 uint128) (t6-29 uint128) (t6-31 uint) (t7-0 uint) - (t7-2 uint) (t7-3 uint) (t7-4 uint) (t7-5 uint) (t7-6 uint) (t7-7 uint) (t7-8 uint) (t7-9 uint) (t7-10 uint) - (t7-11 uint) (t7-12 uint) (t7-13 uint) (t7-14 uint) (t7-15 uint) (t7-16 uint) (t7-17 uint) (t7-18 uint) (t7-20 uint) - (t7-21 uint) (t7-22 uint) (t7-23 uint) (t7-24 uint) (t7-25 uint) (t7-26 uint) (t7-27 uint) (t7-28 uint) (t7-29 uint) - (t7-30 uint) (t7-31 uint) (t7-32 uint) (t7-33 uint) (t7-34 uint) (t7-35 uint) (t7-36 uint) (t7-38 uint) (t7-39 uint) - (t7-40 uint) (t7-41 uint) (t7-42 uint) (t7-43 uint) (t7-44 uint) (t7-45 uint) (t7-46 uint) (t7-47 uint) (t7-48 uint) - (t7-49 uint) (t7-50 uint) (t7-51 uint) (t7-52 uint) (t7-53 uint) (t8-0 uint) (t8-1 int) (t8-2 uint) (t8-3 int) - (t8-4 uint) (t8-5 int)) - + (r0 uint128) + (v0-0 float) + (a0-2 int) + (font-table-12 (inline-array vector)) + (a3-6 (inline-array vector)) + (a3-8 (inline-array vector)) + (t0-1 int) + (q-hi-tmpl uint128) + (color-array-prod int) + (q-verts-2t uint128) + (q-verts-2 uint128) + (q-verts-3t uint128) + (q-verts-3 uint128) + (t4-6 int) + (fc-cr uint) + (t4-16 int) + (t4-17 int) + (t4-18 int) + (t4-19 int) + (t4-23 int) + (t4-32 int) + (t4-33 int) + (t4-36 uint128) + (t4-37 uint128) + (q-verts-1t uint128) + (q-verts-1 uint128) + (not-sc-lit1 uint) + (not-sc-~ uint) + (t5-6 int) + (t5-7 int) + (t5-9 int) + (t5-10 uint) + (t5-11 uint) + (t5-13 int) + (t5-14 int) + (t5-17 int) + (t5-18 int) + (t5-19 int) + (t5-20 int) + (t5-23 uint128) + (t5-24 uint) + (t5-25 uint) + (t5-27 int) + (t5-28 int) + (t5-32 uint128) + (t5-33 uint128) + (t5-35 uint128) + (t5-36 uint128) + (t5-39 int) + (t5-40 int) + (t5-41 int) + (t5-42 int) + (t5-45 uint128) + (q-verts-0t uint128) + (q-verts-0 uint128) + (t6-3 uint) + (t6-4 uint) + (t6-5 uint) + (t6-6 uint) + (t6-7 uint) + (t6-10 uint) + (t6-11 uint) + (t6-12 uint) + (t6-13 uint) + (t6-14 uint) + (t6-16 uint) + (t6-20 uint) + (t6-21 uint) + (t6-22 uint) + (t6-23 uint) + (t6-24 uint) + (t6-28 uint128) + (t6-29 uint128) + (t6-31 uint) + (t7-0 uint) + (t7-2 uint) + (t7-3 uint) + (t7-4 uint) + (t7-5 uint) + (t7-6 uint) + (t7-7 uint) + (t7-8 uint) + (t7-9 uint) + (t7-10 uint) + (t7-11 uint) + (t7-12 uint) + (t7-13 uint) + (t7-14 uint) + (t7-15 uint) + (t7-16 uint) + (t7-17 uint) + (t7-18 uint) + (t7-20 uint) + (t7-21 uint) + (t7-22 uint) + (t7-23 uint) + (t7-24 uint) + (t7-25 uint) + (t7-26 uint) + (t7-27 uint) + (t7-28 uint) + (t7-29 uint) + (t7-30 uint) + (t7-31 uint) + (t7-32 uint) + (t7-33 uint) + (t7-34 uint) + (t7-35 uint) + (t7-36 uint) + (t7-38 uint) + (t7-39 uint) + (t7-40 uint) + (t7-41 uint) + (t7-42 uint) + (t7-43 uint) + (t7-44 uint) + (t7-45 uint) + (t7-46 uint) + (t7-47 uint) + (t7-48 uint) + (t7-49 uint) + (t7-50 uint) + (t7-51 uint) + (t7-52 uint) + (t7-53 uint) + (t8-0 uint) + (t8-1 int) + (t8-2 uint) + (t8-3 int) + (t8-4 uint) + (t8-5 int)) (set! r0 (the-as uint128 0)) (rlet ((acc :class vf) (Q :class vf) @@ -668,975 +758,720 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 *math-camera*)) - (.lvf vf26 (&-> v1-0 hvdf-off quad)) - (.lvf vf27 (&-> v1-0 hvdf-off quad)) - ) - ;; og:preserve-this PC port modification: adjust shadow x to account for widescreen - (let ((shadow-x 2.) - (shadow-y 1.) - (correction (-> *video-parms* relative-x-scale)) - (temp-vec (new-stack-vector0))) - (set! (-> temp-vec quad) (-> *math-camera* hvdf-off quad)) - (+! (-> temp-vec x) (* correction shadow-x)) - (+! (-> temp-vec y) shadow-y) - (.lvf vf26 (&-> temp-vec quad)) - ) - ;; original version - ; (.add.w.vf vf26 vf26 vf0 :mask #b11) - ; (.add.w.vf vf26 vf26 vf0 :mask #b1) - (let ((v1-1 (-> arg2 mat))) - (.lvf vf25 (&-> arg2 context-vec quad)) - (.lvf vf23 (&-> arg2 origin quad)) - (.lvf vf24 (&-> arg2 origin quad)) - (.lvf vf28 (&-> v1-1 vector 0 quad)) - (.lvf vf29 (&-> v1-1 vector 1 quad)) - (.lvf vf30 (&-> v1-1 vector 2 quad)) - (.lvf vf31 (&-> v1-1 vector 3 quad)) - ) - (let ((v1-3 *video-parms*)) - (.lvf vf1 (+ (the-as int v1-3) 64)) - ) - (.mul.vf vf25 vf25 vf1 :mask #b11) - (.mul.vf vf23 vf23 vf1 :mask #b11) - ;; hack! fixes small font widescreen - (unless (logtest? (-> arg2 flags) (font-flags pc-hack)) - (.mul.vf vf24 vf24 vf1 :mask #b11) - ) - (let ((fw *font-work*)) - (set! (-> fw buf) context) - (let ((dma-out (-> context base))) - (set! (-> fw str-ptr) (the-as uint str-in)) - (let ((flags (-> arg2 flags-signed))) - (.mov.vf vf1 vf0) - (.mov.vf vf2 vf0) - (.mov.vf vf3 vf0) - (.mov.vf vf4 vf0) - (set! (-> fw flags) (the-as font-flags flags)) - (.lvf vf16 (&-> fw size-st1 quad)) - (.lvf vf17 (&-> fw size-st2 quad)) - (.lvf vf18 (&-> fw size-st3 quad)) - (let ((has-flag-size24 (logand flags 32))) - (b! - (nonzero? has-flag-size24) - cfg-2 - :delay - (set! font-table-12 *font12-table*) - ) - ) - (let ((font-table-to-use font-table-12)) - (.lvf vf13 (&-> fw size1-small quad)) - (.lvf vf14 (&-> fw size2-small quad)) - (.lvf vf15 (&-> fw size3-small quad)) - (let ((q-lo-tmpl (-> fw small-font-lo-tmpl-qw))) - (b! #t cfg-3 :delay (set! q-hi-tmpl (-> fw small-font-hi-tmpl-qw))) - (label cfg-2) - (set! font-table-to-use *font24-table*) - (.lvf vf13 (&-> fw size1-large quad)) - (.lvf vf14 (&-> fw size2-large quad)) - (.lvf vf15 (&-> fw size3-large quad)) - (set! q-lo-tmpl (-> fw large-font-lo-tmpl-qw)) - (set! q-hi-tmpl (-> fw large-font-hi-tmpl-qw)) - (label cfg-3) - (let ((in-color (-> arg2 color-s32))) - (set! (-> fw last-color-32) in-color) - (.sll color-array-prod in-color 4) - ) - (let ((fw+col (the-as object (+ color-array-prod (the-as int fw))))) - (let ((q-verts-0p (the-as uint128 (-> (the-as (pointer uint32) fw+col) 496)))) - (let ((q-verts-1p (the-as uint128 (-> (the-as (pointer uint32) fw+col) 497)))) - (.pextlb q-verts-0t r0 q-verts-0p) - (let ((q-verts-2p (the-as uint128 (-> (the-as (pointer uint32) fw+col) 498)))) - (.pextlh q-verts-0 r0 q-verts-0t) - (let ((q-verts-3p (the-as uint128 (-> (the-as (pointer uint32) fw+col) 499)))) - (.pextlb q-verts-1t r0 q-verts-1p) - (set! (-> fw current-verts color 0 quad) (the-as uint128 q-verts-0)) - (.pextlh q-verts-1 r0 q-verts-1t) - (set! (-> fw dest-verts color 0 quad) (the-as uint128 q-verts-0)) - (.pextlb q-verts-2t r0 q-verts-2p) - (set! (-> fw current-verts color 1 quad) (the-as uint128 q-verts-1)) - (.pextlh q-verts-2 r0 q-verts-2t) - (set! (-> fw dest-verts color 1 quad) (the-as uint128 q-verts-1)) - (.pextlb q-verts-3t r0 q-verts-3p) - ) - ) - ) - ) - ) - (set! (-> fw current-verts color 2 quad) (the-as uint128 q-verts-2)) - (.pextlh q-verts-3 r0 q-verts-3t) - (set! (-> fw dest-verts color 2 quad) (the-as uint128 q-verts-2)) - (set! (-> fw current-verts color 3 quad) (the-as uint128 q-verts-3)) - (set! (-> fw dest-verts color 3 quad) (the-as uint128 q-verts-3)) - (let ((fw2 (the-as object fw))) - (label cfg-4) - (let ((str-char (-> (the-as (pointer uint8) str-in) 4))) - (set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1))) - (b! (zero? str-char) cfg-67 :delay (set! not-sc-lit1 (+ str-char -1))) - (b! (zero? not-sc-lit1) cfg-54 - :delay (set! not-sc-~ (+ str-char -126)) - ) - (b! (nonzero? not-sc-~) cfg-55) - (set! str-char (-> (the-as (pointer uint8) str-in) 4)) - (set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1))) - (let ((t5-5 0) - (t6-2 0) - ) - (b! (zero? str-char) cfg-67 :delay (set! t7-0 (+ str-char -43))) - (.movz t5-6 str-char t7-0 t5-5) - (let ((t7-1 (+ str-char -45))) - (.movz t5-7 str-char t7-1 t5-6) - ) - (b! (nonzero? t5-7) cfg-15 :delay (set! t7-2 (+ str-char -121))) - (b! (zero? t7-2) cfg-52 :delay (set! t6-3 (+ str-char -89))) - (b! (zero? t6-3) cfg-52 :delay (set! t6-4 (+ str-char -122))) - (b! (zero? t6-4) cfg-53 :delay (set! t6-5 (+ str-char -90))) - (b! (zero? t6-5) cfg-53 :delay (set! t6-6 (+ str-char -48))) - (b! (< (the-as int t6-6) 0) - cfg-55 - :delay (set! t6-7 (+ str-char -57)) - ) - (b! (> (the-as int t6-7) 0) - cfg-55 - :delay (set! t6-2 (the-as int (+ str-char -48))) - ) - (label cfg-15) - (set! str-char (-> (the-as (pointer uint8) str-in) 4)) - (set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1))) - (b! (zero? str-char) cfg-67 :delay (set! t7-3 (+ str-char -110))) - (b! (zero? t7-3) cfg-33 :delay (set! t7-4 (+ str-char -78))) - (b! (zero? t7-4) cfg-33 :delay (set! t7-5 (+ str-char -108))) - (b! (zero? t7-5) cfg-4 :delay (set! t7-6 (+ str-char -76))) - (b! (zero? t7-6) cfg-4 :delay (set! t7-7 (+ str-char -119))) - (b! (zero? t7-7) cfg-4 :delay (set! t7-8 (+ str-char -87))) - (b! (zero? t7-8) cfg-4 :delay (set! t7-9 (+ str-char -107))) - (b! (zero? t7-9) cfg-36 :delay (set! t7-10 (+ str-char -75))) - (b! (zero? t7-10) cfg-36 :delay (set! t7-11 (+ str-char -106))) - (b! (zero? t7-11) cfg-38 :delay (set! t7-12 (+ str-char -74))) - (b! (zero? t7-12) cfg-38 :delay (set! t7-13 (+ str-char -104))) - (b! (zero? t7-13) cfg-42 :delay (set! t7-14 (+ str-char -72))) - (b! (zero? t7-14) cfg-42 :delay (set! t7-15 (+ str-char -118))) - (b! (zero? t7-15) cfg-47 :delay (set! t7-16 (+ str-char -86))) - (b! (zero? t7-16) cfg-47 :delay (set! t7-17 (+ str-char -48))) - (b! (< (the-as int t7-17) 0) - cfg-55 - :delay (set! t8-0 (+ str-char -57)) - ) - (b! (> (the-as int t8-0) 0) cfg-55 :delay (.sll t8-1 t6-2 2)) - (let ((t4-5 (+ t6-2 t8-1))) - (.sll t4-6 t4-5 1) - ) - (b! #t cfg-15 :delay (set! t6-2 (+ t4-6 t7-17))) - (label cfg-33) - (b! (nonzero? t6-2) cfg-35 :delay (set! t0-1 -33)) - (set! font-table-to-use *font12-table*) + (vf9 :class vf)) + (init-vf0-vector) + (let ((v1-0 *math-camera*)) (.lvf vf26 (&-> v1-0 hvdf-off quad)) (.lvf vf27 (&-> v1-0 hvdf-off quad))) + ;; og:preserve-this PC port modification: adjust shadow x to account for widescreen + (let ((shadow-x 2.) + (shadow-y 1.) + (correction (-> *video-parms* relative-x-scale)) + (temp-vec (new-stack-vector0))) + (set! (-> temp-vec quad) (-> *math-camera* hvdf-off quad)) + (+! (-> temp-vec x) (* correction shadow-x)) + (+! (-> temp-vec y) shadow-y) + (.lvf vf26 (&-> temp-vec quad))) + ;; original version + ; (.add.w.vf vf26 vf26 vf0 :mask #b11) + ; (.add.w.vf vf26 vf26 vf0 :mask #b1) + (let ((v1-1 (-> arg2 mat))) + (.lvf vf25 (&-> arg2 context-vec quad)) + (.lvf vf23 (&-> arg2 origin quad)) + (.lvf vf24 (&-> arg2 origin quad)) + (.lvf vf28 (&-> v1-1 vector 0 quad)) + (.lvf vf29 (&-> v1-1 vector 1 quad)) + (.lvf vf30 (&-> v1-1 vector 2 quad)) + (.lvf vf31 (&-> v1-1 vector 3 quad))) + (let ((v1-3 *video-parms*)) (.lvf vf1 (+ (the-as int v1-3) 64))) + (.mul.vf vf25 vf25 vf1 :mask #b11) + (.mul.vf vf23 vf23 vf1 :mask #b11) + ;; hack! fixes small font widescreen + (unless (logtest? (-> arg2 flags) (font-flags pc-hack)) + (.mul.vf vf24 vf24 vf1 :mask #b11)) + (let ((fw *font-work*)) + (set! (-> fw buf) context) + (let ((dma-out (-> context base))) + (set! (-> fw str-ptr) (the-as uint str-in)) + (let ((flags (-> arg2 flags-signed))) + (.mov.vf vf1 vf0) + (.mov.vf vf2 vf0) + (.mov.vf vf3 vf0) + (.mov.vf vf4 vf0) + (set! (-> fw flags) (the-as font-flags flags)) + (.lvf vf16 (&-> fw size-st1 quad)) + (.lvf vf17 (&-> fw size-st2 quad)) + (.lvf vf18 (&-> fw size-st3 quad)) + (let ((has-flag-size24 (logand flags 32))) + (b! (nonzero? has-flag-size24) cfg-2 :delay (set! font-table-12 *font12-table*))) + (let ((font-table-to-use font-table-12)) + (.lvf vf13 (&-> fw size1-small quad)) + (.lvf vf14 (&-> fw size2-small quad)) + (.lvf vf15 (&-> fw size3-small quad)) + (let ((q-lo-tmpl (-> fw small-font-lo-tmpl-qw))) + (b! #t cfg-3 :delay (set! q-hi-tmpl (-> fw small-font-hi-tmpl-qw))) + (label cfg-2) + (set! font-table-to-use *font24-table*) + (.lvf vf13 (&-> fw size1-large quad)) + (.lvf vf14 (&-> fw size2-large quad)) + (.lvf vf15 (&-> fw size3-large quad)) + (set! q-lo-tmpl (-> fw large-font-lo-tmpl-qw)) + (set! q-hi-tmpl (-> fw large-font-hi-tmpl-qw)) + (label cfg-3) + (let ((in-color (-> arg2 color-s32))) (set! (-> fw last-color-32) in-color) (.sll color-array-prod in-color 4)) + (let ((fw+col (the-as object (+ color-array-prod (the-as int fw))))) + (let ((q-verts-0p (the-as uint128 (-> (the-as (pointer uint32) fw+col) 496)))) + (let ((q-verts-1p (the-as uint128 (-> (the-as (pointer uint32) fw+col) 497)))) + (.pextlb q-verts-0t r0 q-verts-0p) + (let ((q-verts-2p (the-as uint128 (-> (the-as (pointer uint32) fw+col) 498)))) + (.pextlh q-verts-0 r0 q-verts-0t) + (let ((q-verts-3p (the-as uint128 (-> (the-as (pointer uint32) fw+col) 499)))) + (.pextlb q-verts-1t r0 q-verts-1p) + (set! (-> fw current-verts color 0 quad) (the-as uint128 q-verts-0)) + (.pextlh q-verts-1 r0 q-verts-1t) + (set! (-> fw dest-verts color 0 quad) (the-as uint128 q-verts-0)) + (.pextlb q-verts-2t r0 q-verts-2p) + (set! (-> fw current-verts color 1 quad) (the-as uint128 q-verts-1)) + (.pextlh q-verts-2 r0 q-verts-2t) + (set! (-> fw dest-verts color 1 quad) (the-as uint128 q-verts-1)) + (.pextlb q-verts-3t r0 q-verts-3p)))))) + (set! (-> fw current-verts color 2 quad) (the-as uint128 q-verts-2)) + (.pextlh q-verts-3 r0 q-verts-3t) + (set! (-> fw dest-verts color 2 quad) (the-as uint128 q-verts-2)) + (set! (-> fw current-verts color 3 quad) (the-as uint128 q-verts-3)) + (set! (-> fw dest-verts color 3 quad) (the-as uint128 q-verts-3)) + (let ((fw2 (the-as object fw))) + (label cfg-4) + (let ((str-char (-> (the-as (pointer uint8) str-in) 4))) + (set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1))) + (b! (zero? str-char) cfg-67 :delay (set! not-sc-lit1 (+ str-char -1))) + (b! (zero? not-sc-lit1) cfg-54 :delay (set! not-sc-~ (+ str-char -126))) + (b! (nonzero? not-sc-~) cfg-55) + (set! str-char (-> (the-as (pointer uint8) str-in) 4)) + (set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1))) + (let ((t5-5 0) + (t6-2 0)) + (b! (zero? str-char) cfg-67 :delay (set! t7-0 (+ str-char -43))) + (.movz t5-6 str-char t7-0 t5-5) + (let ((t7-1 (+ str-char -45))) (.movz t5-7 str-char t7-1 t5-6)) + (b! (nonzero? t5-7) cfg-15 :delay (set! t7-2 (+ str-char -121))) + (b! (zero? t7-2) cfg-52 :delay (set! t6-3 (+ str-char -89))) + (b! (zero? t6-3) cfg-52 :delay (set! t6-4 (+ str-char -122))) + (b! (zero? t6-4) cfg-53 :delay (set! t6-5 (+ str-char -90))) + (b! (zero? t6-5) cfg-53 :delay (set! t6-6 (+ str-char -48))) + (b! (< (the-as int t6-6) 0) cfg-55 :delay (set! t6-7 (+ str-char -57))) + (b! (> (the-as int t6-7) 0) cfg-55 :delay (set! t6-2 (the-as int (+ str-char -48)))) + (label cfg-15) + (set! str-char (-> (the-as (pointer uint8) str-in) 4)) + (set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1))) + (b! (zero? str-char) cfg-67 :delay (set! t7-3 (+ str-char -110))) + (b! (zero? t7-3) cfg-33 :delay (set! t7-4 (+ str-char -78))) + (b! (zero? t7-4) cfg-33 :delay (set! t7-5 (+ str-char -108))) + (b! (zero? t7-5) cfg-4 :delay (set! t7-6 (+ str-char -76))) + (b! (zero? t7-6) cfg-4 :delay (set! t7-7 (+ str-char -119))) + (b! (zero? t7-7) cfg-4 :delay (set! t7-8 (+ str-char -87))) + (b! (zero? t7-8) cfg-4 :delay (set! t7-9 (+ str-char -107))) + (b! (zero? t7-9) cfg-36 :delay (set! t7-10 (+ str-char -75))) + (b! (zero? t7-10) cfg-36 :delay (set! t7-11 (+ str-char -106))) + (b! (zero? t7-11) cfg-38 :delay (set! t7-12 (+ str-char -74))) + (b! (zero? t7-12) cfg-38 :delay (set! t7-13 (+ str-char -104))) + (b! (zero? t7-13) cfg-42 :delay (set! t7-14 (+ str-char -72))) + (b! (zero? t7-14) cfg-42 :delay (set! t7-15 (+ str-char -118))) + (b! (zero? t7-15) cfg-47 :delay (set! t7-16 (+ str-char -86))) + (b! (zero? t7-16) cfg-47 :delay (set! t7-17 (+ str-char -48))) + (b! (< (the-as int t7-17) 0) cfg-55 :delay (set! t8-0 (+ str-char -57))) + (b! (> (the-as int t8-0) 0) cfg-55 :delay (.sll t8-1 t6-2 2)) + (let ((t4-5 (+ t6-2 t8-1))) (.sll t4-6 t4-5 1)) + (b! #t cfg-15 :delay (set! t6-2 (+ t4-6 t7-17))) + (label cfg-33) + (b! (nonzero? t6-2) cfg-35 :delay (set! t0-1 -33)) + (set! font-table-to-use *font12-table*) + (.lvf vf13 (&-> fw size1-small quad)) + (.lvf vf14 (&-> fw size2-small quad)) + (.lvf vf15 (&-> fw size3-small quad)) + (set! flags (logand flags t0-1)) + (set! q-lo-tmpl (-> fw small-font-lo-tmpl-qw)) + (b! #t cfg-4 :delay (set! q-hi-tmpl (-> fw small-font-hi-tmpl-qw))) + (label cfg-35) + (set! font-table-to-use *font24-table*) + (.lvf vf13 (&-> fw size1-large quad)) + (.lvf vf14 (&-> fw size2-large quad)) + (.lvf vf15 (&-> fw size3-large quad)) + (set! flags (logior flags 32)) + (set! q-lo-tmpl (-> fw large-font-lo-tmpl-qw)) + (b! #t cfg-4 :delay (set! q-hi-tmpl (-> fw large-font-hi-tmpl-qw))) + (label cfg-36) + (let ((t4-7 -3)) (b! (zero? t6-2) cfg-4 :delay (set! flags (logand flags t4-7)))) + (b! #t cfg-4 :delay (set! flags (logior flags 2))) + (label cfg-38) + (let ((t4-8 -21) + (t5-8 (+ t6-2 -2))) + (b! (zero? t6-2) cfg-4 :delay (set! flags (logand flags t4-8))) + (b! (zero? t5-8) cfg-41)) + (b! #t cfg-4 :delay (set! flags (logior flags 16))) + (label cfg-41) + (b! #t cfg-4 :delay (set! flags (logior flags 4))) + (label cfg-42) + (.mov vf1 t6-2) + (let ((t4-9 (+ t5-7 -45))) (b! (zero? t5-7) cfg-46 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-9) cfg-45)) + (b! #t cfg-4 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1)) + (label cfg-45) + (b! #t cfg-4 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1)) + (label cfg-46) + (b! #t cfg-4 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1)) + (label cfg-47) + (.mov vf1 t6-2)) + (let ((t4-10 (+ t5-7 -45))) (b! (zero? t5-7) cfg-51 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-10) cfg-50)) + (b! #t cfg-4 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10)) + (label cfg-50) + (b! #t cfg-4 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10)) + (label cfg-51) + (b! #t cfg-4 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10)) + (label cfg-52) + (b! #t cfg-4 :delay (.svf (&-> fw save quad) vf23)) + (label cfg-53) + (b! #t cfg-4 :delay (.lvf vf23 (&-> fw save quad))) + (label cfg-54) + (let ((t4-11 (-> (the-as (pointer uint8) str-in) 4))) + (set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1))) + (.add.vf vf4 vf23 vf15 :mask #b111) + (let ((t4-12 (logand t4-11 127))) + (.sub.vf vf1 vf25 vf23) + (let ((t4-13 (+ t4-12 255))) (b! #t cfg-62 :delay (.sll t5-9 t4-13 4))))) + (label cfg-55) + (.add.vf vf4 vf23 vf15 :mask #b111) + (.sll t5-9 str-char 4) + (.sub.vf vf1 vf25 vf23) + (b! (= str-char 10) cfg-57 :delay (set! fc-cr (+ str-char -13)))) + (b! (nonzero? fc-cr) cfg-62) + (label cfg-57) + (.sub.vf vf1 vf23 vf24) + (b! (logtest? flags 16) cfg-60 :delay (set! t4-16 (logand flags 4))) + (b! (nonzero? t4-16) cfg-61) + (.add.x.vf vf23 vf0 vf24 :mask #b1) + (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) + (.add.w.vf vf23 vf23 vf15 :mask #b10) + (b! #t cfg-4 :delay (set! fw2 (-> (the-as font-work fw2) font-tmpl gif))) + (label cfg-60) + (.sub.vf vf23 vf24 vf1 :mask #b1) + (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) + (.add.x.vf vf23 vf0 vf24 :mask #b1) + (.add.w.vf vf23 vf23 vf15 :mask #b10) + (b! #t cfg-4 :delay (set! fw2 (-> (the-as font-work fw2) font-tmpl gif))) + (label cfg-61) + (.mul.w.vf vf1 vf1 vf16 :mask #b1) + (.sub.vf vf23 vf24 vf1 :mask #b1) + (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) + (.add.x.vf vf23 vf0 vf24 :mask #b1) + (.add.w.vf vf23 vf23 vf15 :mask #b10) + (b! #t cfg-4 :delay (set! fw2 (-> (the-as font-work fw2) font-tmpl gif))) + (label cfg-62) + (.addu t4-17 t5-9 font-table-to-use) + (.lvf vf5 (+ t4-17 -256)) + (.mov t4-18 vf1) + (b! (< (the-as int t4-18) 0) cfg-67 :delay (.sra t4-19 t4-18 31)) + (.mul.vf vf19 vf5 vf13) + (b! (zero? (logand flags 2)) cfg-65) + (b! #t cfg-66 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1)) + (label cfg-65) + (.add.w.vf vf23 vf23 vf14 :mask #b1) + (label cfg-66) + (b! #t cfg-4) + (label cfg-67) + (.sub.vf vf1 vf23 vf24) + (b! (logtest? flags 16) cfg-70 :delay (set! a0-2 (logand flags 4))) + (b! (nonzero? a0-2) cfg-71) + (.add.x.vf vf23 vf0 vf24 :mask #b1) + (b! #t cfg-72 :delay (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23)) + (label cfg-70) + (.sub.vf vf23 vf24 vf1 :mask #b1) + (b! #t cfg-72 :delay (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23)) + (label cfg-71) + (.mul.w.vf vf1 vf1 vf16 :mask #b1) + (.sub.vf vf23 vf24 vf1 :mask #b1) + (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23)) + (label cfg-72) + (let ((a0-3 (-> fw flags-signed))) + (let ((t2-1 (the-as object fw)) + (t3-7 (-> fw str-ptr-signed))) + (.lvf vf23 (&-> (the-as font-work t2-1) justify 0 quad)) + (label cfg-73) + (let ((t4-21 (-> t3-7 4))) + (set! t3-7 (&-> t3-7 1)) + (b! (zero? t4-21) cfg-131 :delay (set! t5-10 (+ t4-21 -1))) + (b! (zero? t5-10) cfg-121 :delay (set! t5-11 (+ t4-21 -126))) + (b! (nonzero? t5-11) cfg-122) + (set! t4-21 (-> t3-7 4)) + (set! t3-7 (&-> t3-7 1)) + (let ((t5-12 0) + (t6-9 0)) + (b! (zero? t4-21) cfg-131 :delay (set! t7-18 (+ t4-21 -43))) + (.movz t5-13 t4-21 t7-18 t5-12) + (let ((t7-19 (+ t4-21 -45))) (.movz t5-14 t4-21 t7-19 t5-13)) + (b! (nonzero? t5-14) cfg-84 :delay (set! t7-20 (+ t4-21 -121))) + (b! (zero? t7-20) cfg-119 :delay (set! t6-10 (+ t4-21 -89))) + (b! (zero? t6-10) cfg-119 :delay (set! t6-11 (+ t4-21 -122))) + (b! (zero? t6-11) cfg-120 :delay (set! t6-12 (+ t4-21 -90))) + (b! (zero? t6-12) cfg-120 :delay (set! t6-13 (+ t4-21 -48))) + (b! (< (the-as int t6-13) 0) cfg-122 :delay (set! t6-14 (+ t4-21 -57))) + (b! (> (the-as int t6-14) 0) cfg-122 :delay (set! t6-9 (the-as int (+ t4-21 -48)))) + (label cfg-84) + (set! t4-21 (-> t3-7 4)) + (set! t3-7 (&-> t3-7 1)) + (b! (zero? t4-21) cfg-131 :delay (set! t7-21 (+ t4-21 -110))) + (b! (zero? t7-21) cfg-102 :delay (set! t7-22 (+ t4-21 -78))) + (b! (zero? t7-22) cfg-102 :delay (set! t7-23 (+ t4-21 -108))) + (b! (zero? t7-23) cfg-73 :delay (set! t7-24 (+ t4-21 -76))) + (b! (zero? t7-24) cfg-73 :delay (set! t7-25 (+ t4-21 -119))) + (b! (zero? t7-25) cfg-105 :delay (set! t7-26 (+ t4-21 -87))) + (b! (zero? t7-26) cfg-105 :delay (set! t7-27 (+ t4-21 -107))) + (b! (zero? t7-27) cfg-107 :delay (set! t7-28 (+ t4-21 -75))) + (b! (zero? t7-28) cfg-107 :delay (set! t7-29 (+ t4-21 -106))) + (b! (zero? t7-29) cfg-73 :delay (set! t7-30 (+ t4-21 -74))) + (b! (zero? t7-30) cfg-73 :delay (set! t7-31 (+ t4-21 -104))) + (b! (zero? t7-31) cfg-109 :delay (set! t7-32 (+ t4-21 -72))) + (b! (zero? t7-32) cfg-109 :delay (set! t7-33 (+ t4-21 -118))) + (b! (zero? t7-33) cfg-114 :delay (set! t7-34 (+ t4-21 -86))) + (b! (zero? t7-34) cfg-114 :delay (set! t7-35 (+ t4-21 -48))) + (b! (< (the-as int t7-35) 0) cfg-122 :delay (set! t8-2 (+ t4-21 -57))) + (b! (> (the-as int t8-2) 0) cfg-122 :delay (.sll t8-3 t6-9 2)) + (let ((t4-22 (+ t6-9 t8-3))) (.sll t4-23 t4-22 1)) + (b! #t cfg-84 :delay (set! t6-9 (+ t4-23 t7-35))) + (label cfg-102) + (b! (nonzero? t6-9) cfg-104 :delay (set! a3-6 *font12-table*)) + (set! font-table-to-use a3-6) + (let ((t0-2 -33)) (.lvf vf13 (&-> fw size1-small quad)) (.lvf vf14 (&-> fw size2-small quad)) (.lvf vf15 (&-> fw size3-small quad)) - (set! flags (logand flags t0-1)) - (set! q-lo-tmpl (-> fw small-font-lo-tmpl-qw)) - (b! #t cfg-4 :delay (set! q-hi-tmpl (-> fw small-font-hi-tmpl-qw))) - (label cfg-35) - (set! font-table-to-use *font24-table*) - (.lvf vf13 (&-> fw size1-large quad)) - (.lvf vf14 (&-> fw size2-large quad)) - (.lvf vf15 (&-> fw size3-large quad)) - (set! flags (logior flags 32)) - (set! q-lo-tmpl (-> fw large-font-lo-tmpl-qw)) - (b! #t cfg-4 :delay (set! q-hi-tmpl (-> fw large-font-hi-tmpl-qw))) - (label cfg-36) - (let ((t4-7 -3)) - (b! (zero? t6-2) cfg-4 :delay (set! flags (logand flags t4-7))) - ) - (b! #t cfg-4 :delay (set! flags (logior flags 2))) - (label cfg-38) - (let ((t4-8 -21) - (t5-8 (+ t6-2 -2)) - ) - (b! (zero? t6-2) cfg-4 :delay (set! flags (logand flags t4-8))) - (b! (zero? t5-8) cfg-41) - ) - (b! #t cfg-4 :delay (set! flags (logior flags 16))) - (label cfg-41) - (b! #t cfg-4 :delay (set! flags (logior flags 4))) - (label cfg-42) - (.mov vf1 t6-2) - (let ((t4-9 (+ t5-7 -45))) - (b! (zero? t5-7) cfg-46 :delay (.itof.vf vf1 vf1)) - (b! (zero? t4-9) cfg-45) - ) - (b! #t cfg-4 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1)) - (label cfg-45) - (b! #t cfg-4 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1)) - (label cfg-46) - (b! #t cfg-4 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1)) - (label cfg-47) - (.mov vf1 t6-2) - ) - (let ((t4-10 (+ t5-7 -45))) - (b! (zero? t5-7) cfg-51 :delay (.itof.vf vf1 vf1)) - (b! (zero? t4-10) cfg-50) - ) - (b! #t cfg-4 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10)) - (label cfg-50) - (b! #t cfg-4 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10)) - (label cfg-51) - (b! #t cfg-4 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10)) - (label cfg-52) - (b! #t cfg-4 :delay (.svf (&-> fw save quad) vf23)) - (label cfg-53) - (b! #t cfg-4 :delay (.lvf vf23 (&-> fw save quad))) - (label cfg-54) - (let ((t4-11 (-> (the-as (pointer uint8) str-in) 4))) - (set! str-in (the-as string (&-> (the-as (pointer uint8) str-in) 1))) - (.add.vf vf4 vf23 vf15 :mask #b111) - (let ((t4-12 (logand t4-11 127))) - (.sub.vf vf1 vf25 vf23) - (let ((t4-13 (+ t4-12 255))) - (b! #t cfg-62 :delay (.sll t5-9 t4-13 4)) - ) - ) - ) - (label cfg-55) - (.add.vf vf4 vf23 vf15 :mask #b111) - (.sll t5-9 str-char 4) + (set! a0-3 (logand a0-3 t0-2))) + (set! q-lo-tmpl (-> fw small-font-lo-tmpl-qw)) + (b! #t cfg-73 :delay (set! q-hi-tmpl (-> fw small-font-hi-tmpl-qw))) + (label cfg-104) + (set! font-table-to-use *font24-table*) + (.lvf vf13 (&-> fw size1-large quad)) + (.lvf vf14 (&-> fw size2-large quad)) + (.lvf vf15 (&-> fw size3-large quad)) + (set! a0-3 (logior a0-3 32)) + (set! q-lo-tmpl (-> fw large-font-lo-tmpl-qw)) + (b! #t cfg-73 :delay (set! q-hi-tmpl (-> fw large-font-hi-tmpl-qw))) + (label cfg-105) + (let ((t4-24 -2)) (b! (zero? t6-9) cfg-73 :delay (set! a0-3 (logand a0-3 t4-24)))) + (b! #t cfg-73 :delay (set! a0-3 (logior a0-3 1))) + (label cfg-107) + (let ((t4-25 -3)) (b! (zero? t6-9) cfg-73 :delay (set! a0-3 (logand a0-3 t4-25)))) + (b! #t cfg-73 :delay (set! a0-3 (logior a0-3 2))) + (label cfg-109) + (.mov vf1 t6-9) + (let ((t4-26 (+ t5-14 -45))) (b! (zero? t5-14) cfg-113 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-26) cfg-112)) + (b! #t cfg-73 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1)) + (label cfg-112) + (b! #t cfg-73 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1)) + (label cfg-113) + (b! #t cfg-73 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1)) + (label cfg-114) + (.mov vf1 t6-9)) + (let ((t4-27 (+ t5-14 -45))) (b! (zero? t5-14) cfg-118 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-27) cfg-117)) + (b! #t cfg-73 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10)) + (label cfg-117) + (b! #t cfg-73 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10)) + (label cfg-118) + (b! #t cfg-73 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10)) + (label cfg-119) + (b! #t cfg-73 :delay (.svf (&-> fw save quad) vf23)) + (label cfg-120) + (b! #t cfg-73 :delay (.lvf vf23 (&-> fw save quad))) + (label cfg-121) + (set! t4-21 (-> t3-7 4)) + (set! t3-7 (&-> t3-7 1)) + (.add.vf vf4 vf23 vf15 :mask #b111) + (let ((t5-15 (logand t4-21 127))) (.sub.vf vf1 vf25 vf23) - (b! (= str-char 10) cfg-57 :delay (set! fc-cr (+ str-char -13))) - ) - (b! (nonzero? fc-cr) cfg-62) - (label cfg-57) - (.sub.vf vf1 vf23 vf24) - (b! (logtest? flags 16) cfg-60 :delay (set! t4-16 (logand flags 4))) - (b! (nonzero? t4-16) cfg-61) - (.add.x.vf vf23 vf0 vf24 :mask #b1) - (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) - (.add.w.vf vf23 vf23 vf15 :mask #b10) - (b! - #t - cfg-4 - :delay - (set! fw2 (-> (the-as font-work fw2) font-tmpl gif)) - ) - (label cfg-60) - (.sub.vf vf23 vf24 vf1 :mask #b1) - (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) - (.add.x.vf vf23 vf0 vf24 :mask #b1) - (.add.w.vf vf23 vf23 vf15 :mask #b10) - (b! - #t - cfg-4 - :delay - (set! fw2 (-> (the-as font-work fw2) font-tmpl gif)) - ) - (label cfg-61) - (.mul.w.vf vf1 vf1 vf16 :mask #b1) - (.sub.vf vf23 vf24 vf1 :mask #b1) - (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) - (.add.x.vf vf23 vf0 vf24 :mask #b1) - (.add.w.vf vf23 vf23 vf15 :mask #b10) - (b! - #t - cfg-4 - :delay - (set! fw2 (-> (the-as font-work fw2) font-tmpl gif)) - ) - (label cfg-62) - (.addu t4-17 t5-9 font-table-to-use) - (.lvf vf5 (+ t4-17 -256)) - (.mov t4-18 vf1) - (b! (< (the-as int t4-18) 0) cfg-67 :delay (.sra t4-19 t4-18 31)) + (let ((t5-16 (+ t5-15 255))) (b! #t cfg-125 :delay (.sll t5-17 t5-16 4)))) + (label cfg-122) + (.add.vf vf4 vf23 vf15 :mask #b111) + (.sll t5-17 t4-21 4) + (.sub.vf vf1 vf25 vf23) + (b! (= t4-21 10) cfg-124 :delay (set! t6-16 (+ t4-21 -13))) + (b! (nonzero? t6-16) cfg-125 :delay (logand a0-3 1)) + (label cfg-124) + (set! t2-1 (&-> (the-as (pointer uint64) t2-1) 2)) + (b! #t cfg-73 :delay (.lvf vf23 (+ (the-as int t2-1) 944))) + (label cfg-125) + (.addu t5-18 t5-17 font-table-to-use) + (.lvf vf5 (+ t5-18 -256)) + (.mov t5-19 vf1) + (b! (< (the-as int t5-19) 0) cfg-131 :delay (.add.vf vf6 vf5 vf16 :mask #b111)) + (.sra t5-20 t5-19 31) + (.add.vf vf7 vf5 vf17 :mask #b111) + (b! (< t5-20 0) cfg-73 :delay (.add.vf vf8 vf5 vf18 :mask #b111)) + (.add.vf vf1 vf23 vf0 :mask #b111) + (.add.vf vf2 vf23 vf13 :mask #b111) + (.svf (&-> fw current-verts tex-st 0 quad) vf5) + (.add.vf vf3 vf23 vf14 :mask #b111) + (.svf (&-> fw current-verts tex-st 1 quad) vf6) (.mul.vf vf19 vf5 vf13) - (b! (zero? (logand flags 2)) cfg-65) - (b! #t cfg-66 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1)) - (label cfg-65) - (.add.w.vf vf23 vf23 vf14 :mask #b1) - (label cfg-66) - (b! #t cfg-4) - (label cfg-67) - (.sub.vf vf1 vf23 vf24) - (b! (logtest? flags 16) cfg-70 :delay (set! a0-2 (logand flags 4))) - (b! (nonzero? a0-2) cfg-71) - (.add.x.vf vf23 vf0 vf24 :mask #b1) - (b! - #t - cfg-72 - :delay - (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) - ) - (label cfg-70) - (.sub.vf vf23 vf24 vf1 :mask #b1) - (b! - #t - cfg-72 - :delay - (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) - ) - (label cfg-71) - (.mul.w.vf vf1 vf1 vf16 :mask #b1) - (.sub.vf vf23 vf24 vf1 :mask #b1) - (.svf (&-> (the-as font-work fw2) justify 0 quad) vf23) - ) - (label cfg-72) - (let ((a0-3 (-> fw flags-signed))) - (let ((t2-1 (the-as object fw)) - (t3-7 (-> fw str-ptr-signed)) - ) - (.lvf vf23 (&-> (the-as font-work t2-1) justify 0 quad)) - (label cfg-73) - (let ((t4-21 (-> t3-7 4))) - (set! t3-7 (&-> t3-7 1)) - (b! (zero? t4-21) cfg-131 :delay (set! t5-10 (+ t4-21 -1))) - (b! (zero? t5-10) cfg-121 :delay (set! t5-11 (+ t4-21 -126))) - (b! (nonzero? t5-11) cfg-122) - (set! t4-21 (-> t3-7 4)) - (set! t3-7 (&-> t3-7 1)) - (let ((t5-12 0) - (t6-9 0) - ) - (b! (zero? t4-21) cfg-131 :delay (set! t7-18 (+ t4-21 -43))) - (.movz t5-13 t4-21 t7-18 t5-12) - (let ((t7-19 (+ t4-21 -45))) - (.movz t5-14 t4-21 t7-19 t5-13) - ) - (b! (nonzero? t5-14) cfg-84 :delay (set! t7-20 (+ t4-21 -121))) - (b! (zero? t7-20) cfg-119 :delay (set! t6-10 (+ t4-21 -89))) - (b! (zero? t6-10) cfg-119 :delay (set! t6-11 (+ t4-21 -122))) - (b! (zero? t6-11) cfg-120 :delay (set! t6-12 (+ t4-21 -90))) - (b! (zero? t6-12) cfg-120 :delay (set! t6-13 (+ t4-21 -48))) - (b! - (< (the-as int t6-13) 0) - cfg-122 - :delay - (set! t6-14 (+ t4-21 -57)) - ) - (b! - (> (the-as int t6-14) 0) - cfg-122 - :delay - (set! t6-9 (the-as int (+ t4-21 -48))) - ) - (label cfg-84) - (set! t4-21 (-> t3-7 4)) - (set! t3-7 (&-> t3-7 1)) - (b! (zero? t4-21) cfg-131 :delay (set! t7-21 (+ t4-21 -110))) - (b! (zero? t7-21) cfg-102 :delay (set! t7-22 (+ t4-21 -78))) - (b! (zero? t7-22) cfg-102 :delay (set! t7-23 (+ t4-21 -108))) - (b! (zero? t7-23) cfg-73 :delay (set! t7-24 (+ t4-21 -76))) - (b! (zero? t7-24) cfg-73 :delay (set! t7-25 (+ t4-21 -119))) - (b! (zero? t7-25) cfg-105 :delay (set! t7-26 (+ t4-21 -87))) - (b! (zero? t7-26) cfg-105 :delay (set! t7-27 (+ t4-21 -107))) - (b! (zero? t7-27) cfg-107 :delay (set! t7-28 (+ t4-21 -75))) - (b! (zero? t7-28) cfg-107 :delay (set! t7-29 (+ t4-21 -106))) - (b! (zero? t7-29) cfg-73 :delay (set! t7-30 (+ t4-21 -74))) - (b! (zero? t7-30) cfg-73 :delay (set! t7-31 (+ t4-21 -104))) - (b! (zero? t7-31) cfg-109 :delay (set! t7-32 (+ t4-21 -72))) - (b! (zero? t7-32) cfg-109 :delay (set! t7-33 (+ t4-21 -118))) - (b! (zero? t7-33) cfg-114 :delay (set! t7-34 (+ t4-21 -86))) - (b! (zero? t7-34) cfg-114 :delay (set! t7-35 (+ t4-21 -48))) - (b! - (< (the-as int t7-35) 0) - cfg-122 - :delay - (set! t8-2 (+ t4-21 -57)) - ) - (b! (> (the-as int t8-2) 0) cfg-122 :delay (.sll t8-3 t6-9 2)) - (let ((t4-22 (+ t6-9 t8-3))) - (.sll t4-23 t4-22 1) - ) - (b! #t cfg-84 :delay (set! t6-9 (+ t4-23 t7-35))) - (label cfg-102) - (b! (nonzero? t6-9) cfg-104 :delay (set! a3-6 *font12-table*)) - (set! font-table-to-use a3-6) - (let ((t0-2 -33)) - (.lvf vf13 (&-> fw size1-small quad)) - (.lvf vf14 (&-> fw size2-small quad)) - (.lvf vf15 (&-> fw size3-small quad)) - (set! a0-3 (logand a0-3 t0-2)) - ) - (set! q-lo-tmpl (-> fw small-font-lo-tmpl-qw)) - (b! #t cfg-73 :delay (set! q-hi-tmpl (-> fw small-font-hi-tmpl-qw))) - (label cfg-104) - (set! font-table-to-use *font24-table*) - (.lvf vf13 (&-> fw size1-large quad)) - (.lvf vf14 (&-> fw size2-large quad)) - (.lvf vf15 (&-> fw size3-large quad)) - (set! a0-3 (logior a0-3 32)) - (set! q-lo-tmpl (-> fw large-font-lo-tmpl-qw)) - (b! #t cfg-73 :delay (set! q-hi-tmpl (-> fw large-font-hi-tmpl-qw))) - (label cfg-105) - (let ((t4-24 -2)) - (b! (zero? t6-9) cfg-73 :delay (set! a0-3 (logand a0-3 t4-24))) - ) - (b! #t cfg-73 :delay (set! a0-3 (logior a0-3 1))) - (label cfg-107) - (let ((t4-25 -3)) - (b! (zero? t6-9) cfg-73 :delay (set! a0-3 (logand a0-3 t4-25))) - ) - (b! #t cfg-73 :delay (set! a0-3 (logior a0-3 2))) - (label cfg-109) - (.mov vf1 t6-9) - (let ((t4-26 (+ t5-14 -45))) - (b! (zero? t5-14) cfg-113 :delay (.itof.vf vf1 vf1)) - (b! (zero? t4-26) cfg-112) - ) - (b! #t cfg-73 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1)) - (label cfg-112) - (b! #t cfg-73 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1)) - (label cfg-113) - (b! #t cfg-73 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1)) - (label cfg-114) - (.mov vf1 t6-9) - ) - (let ((t4-27 (+ t5-14 -45))) - (b! (zero? t5-14) cfg-118 :delay (.itof.vf vf1 vf1)) - (b! (zero? t4-27) cfg-117) - ) - (b! #t cfg-73 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10)) - (label cfg-117) - (b! #t cfg-73 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10)) - (label cfg-118) - (b! #t cfg-73 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10)) - (label cfg-119) - (b! #t cfg-73 :delay (.svf (&-> fw save quad) vf23)) - (label cfg-120) - (b! #t cfg-73 :delay (.lvf vf23 (&-> fw save quad))) - (label cfg-121) - (set! t4-21 (-> t3-7 4)) - (set! t3-7 (&-> t3-7 1)) - (.add.vf vf4 vf23 vf15 :mask #b111) - (let ((t5-15 (logand t4-21 127))) - (.sub.vf vf1 vf25 vf23) - (let ((t5-16 (+ t5-15 255))) - (b! #t cfg-125 :delay (.sll t5-17 t5-16 4)) - ) - ) - (label cfg-122) - (.add.vf vf4 vf23 vf15 :mask #b111) - (.sll t5-17 t4-21 4) - (.sub.vf vf1 vf25 vf23) - (b! (= t4-21 10) cfg-124 :delay (set! t6-16 (+ t4-21 -13))) - (b! (nonzero? t6-16) cfg-125 :delay (logand a0-3 1)) - (label cfg-124) - (set! t2-1 (&-> (the-as (pointer uint64) t2-1) 2)) - (b! - #t - cfg-73 - :delay - (.lvf vf23 (+ (the-as int t2-1) 944)) - ) - (label cfg-125) - (.addu t5-18 t5-17 font-table-to-use) - (.lvf vf5 (+ t5-18 -256)) - (.mov t5-19 vf1) - (b! - (< (the-as int t5-19) 0) - cfg-131 - :delay - (.add.vf vf6 vf5 vf16 :mask #b111) - ) - (.sra t5-20 t5-19 31) - (.add.vf vf7 vf5 vf17 :mask #b111) - (b! (< t5-20 0) cfg-73 :delay (.add.vf vf8 vf5 vf18 :mask #b111)) - (.add.vf vf1 vf23 vf0 :mask #b111) - (.add.vf vf2 vf23 vf13 :mask #b111) - (.svf (&-> fw current-verts tex-st 0 quad) vf5) - (.add.vf vf3 vf23 vf14 :mask #b111) - (.svf (&-> fw current-verts tex-st 1 quad) vf6) - (.mul.vf vf19 vf5 vf13) - (.svf (&-> fw current-verts tex-st 2 quad) vf7) - (.svf (&-> fw current-verts tex-st 3 quad) vf8) - (.svf (&-> fw current-verts pos 0 quad) vf1) - (.svf (&-> fw current-verts pos 1 quad) vf2) - (.svf (&-> fw current-verts pos 2 quad) vf3) - (.svf (&-> fw current-verts pos 3 quad) vf4) - (.lvf vf1 (&-> fw current-verts pos 0 quad)) - (.lvf vf2 (&-> fw current-verts pos 1 quad)) - (.mul.w.vf acc vf31 vf0) - (.lvf vf3 (&-> fw current-verts pos 2 quad)) - (.add.mul.x.vf acc vf28 vf1 acc) - (.lvf vf4 (&-> fw current-verts pos 3 quad)) - (.add.mul.y.vf acc vf29 vf1 acc) - (.add.mul.z.vf vf1 vf30 vf1 acc) - (.mul.w.vf acc vf31 vf0) - (.add.mul.x.vf acc vf28 vf2 acc) - (.add.mul.y.vf acc vf29 vf2 acc) - (.add.mul.z.vf vf2 vf30 vf2 acc) - (.mul.w.vf acc vf31 vf0) - (.add.mul.x.vf acc vf28 vf3 acc) - (.add.mul.y.vf acc vf29 vf3 acc) - (.add.mul.z.vf vf3 vf30 vf3 acc) - (.mul.w.vf acc vf31 vf0) - (.add.mul.x.vf acc vf28 vf4 acc) - (.add.mul.y.vf acc vf29 vf4 acc) - (.add.mul.z.vf vf4 vf30 vf4 acc) - (.div.vf Q vf25 vf1 :fsf #b10 :ftf #b11) - (let ((t5-21 (-> fw char-tmpl dma-vif quad))) - (let ((t6-18 (-> fw char-tmpl quad 1))) - (set! (-> (the-as (pointer uint128) dma-out) 0) t5-21) - (set! (-> (the-as (pointer uint128) dma-out) 1) t6-18) - ) - ) - (.lvf vf5 (&-> fw current-verts tex-st 0 quad)) - (let ((t5-22 q-lo-tmpl)) - (.lvf vf6 (&-> fw current-verts tex-st 1 quad)) - (let ((t4-28 (logand t4-21 128))) - (.lvf vf7 (&-> fw current-verts tex-st 2 quad)) - ;; note: this relies on (somewhat) undefined behavior that the upper 64-bits of a - ;; gpr aren't changed during movn. - (.movn-128 t5-23 q-hi-tmpl t4-28 t5-22) - ) - ) - ) - ) - (.mul.vf vf1 vf1 Q :mask #b111) - (set! (-> (the-as (pointer uint128) dma-out) 2) (the-as uint128 t5-23)) - (.mul.vf vf5 vf5 Q :mask #b111) - (.nop.vf) - (.nop.vf) - (.div.vf Q vf25 vf2 :fsf #b10 :ftf #b11) - (.lvf vf8 (&-> fw current-verts tex-st 3 quad)) - (.add.vf vf1 vf1 vf26) - (.lvf vf9 (&-> fw color-shadow quad)) - (vftoi4.xyzw vf1 vf1) - (.mul.vf vf2 vf2 Q :mask #b111) - (.mul.vf vf6 vf6 Q :mask #b111) - (.svf (&-> (the-as (pointer uint128) dma-out) 3) vf5) - (.nop.vf) - (.nop.vf) - (.div.vf Q vf25 vf3 :fsf #b10 :ftf #b11) - (.svf (&-> (the-as (pointer uint128) dma-out) 4) vf9) - (.svf (&-> (the-as (pointer uint128) dma-out) 5) vf1) - (.add.vf vf2 vf2 vf26) - (vftoi4.xyzw vf2 vf2) - (.mul.vf vf3 vf3 Q :mask #b111) - (.mul.vf vf7 vf7 Q :mask #b111) - (.svf (&-> (the-as (pointer uint128) dma-out) 6) vf6) - (.nop.vf) - (.nop.vf) - (.div.vf Q vf25 vf4 :fsf #b10 :ftf #b11) - (.svf (&-> (the-as (pointer uint128) dma-out) 7) vf9) - (.svf (&-> (the-as (pointer uint128) dma-out) 8) vf2) - (.add.vf vf3 vf3 vf26) - (vftoi4.xyzw vf3 vf3) - (.mul.vf vf4 vf4 Q :mask #b111) - (.mul.vf vf8 vf8 Q :mask #b111) - (.svf (&-> (the-as (pointer uint128) dma-out) 9) vf7) - (.svf (&-> (the-as (pointer uint128) dma-out) 10) vf9) - (.add.vf vf4 vf4 vf26) - (.svf (&-> (the-as (pointer uint128) dma-out) 11) vf3) - (let ((t4-29 (logand a0-3 2))) - (b! (zero? t4-29) cfg-129) - ) - ) - (b! #t cfg-130 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1)) - (label cfg-129) - (.add.w.vf vf23 vf23 vf14 :mask #b1) - (label cfg-130) - (vftoi4.xyzw vf4 vf4) - (.svf (&-> (the-as (pointer uint128) dma-out) 12) vf8) - (.svf (&-> (the-as (pointer uint128) dma-out) 13) vf9) - (.svf (&-> (the-as (pointer uint128) dma-out) 14) vf4) - (b! - #t - cfg-73 - :delay - (set! dma-out (&-> (the-as (pointer uint128) dma-out) 15)) - ) - (label cfg-131) - (let ((a0-4 (-> fw flags-signed))) - (let ((t2-2 (the-as object fw)) - (t3-8 (-> fw str-ptr-signed)) - ) - (.lvf vf23 (&-> (the-as font-work t2-2) justify 0 quad)) - (label cfg-132) - (let ((t4-30 (-> t3-8 4))) - (set! t3-8 (&-> t3-8 1)) - (b! (zero? t4-30) cfg-189 :delay (set! t5-24 (+ t4-30 -1))) - (b! (zero? t5-24) cfg-179 :delay (set! t5-25 (+ t4-30 -126))) - (b! (nonzero? t5-25) cfg-180) - (set! t4-30 (-> t3-8 4)) - (set! t3-8 (&-> t3-8 1)) - (let ((t5-26 0) - (t6-19 0) - ) - (b! (zero? t4-30) cfg-189 :delay (set! t7-36 (+ t4-30 -43))) - (.movz t5-27 t4-30 t7-36 t5-26) - (let ((t7-37 (+ t4-30 -45))) - (.movz t5-28 t4-30 t7-37 t5-27) - ) - (b! (nonzero? t5-28) cfg-143 :delay (set! t7-38 (+ t4-30 -121))) - (b! (zero? t7-38) cfg-177 :delay (set! t6-20 (+ t4-30 -89))) - (b! (zero? t6-20) cfg-177 :delay (set! t6-21 (+ t4-30 -122))) - (b! (zero? t6-21) cfg-178 :delay (set! t6-22 (+ t4-30 -90))) - (b! (zero? t6-22) cfg-178 :delay (set! t6-23 (+ t4-30 -48))) - (b! - (< (the-as int t6-23) 0) - cfg-180 - :delay - (set! t6-24 (+ t4-30 -57)) - ) - (b! - (> (the-as int t6-24) 0) - cfg-180 - :delay - (set! t6-19 (the-as int (+ t4-30 -48))) - ) - (label cfg-143) - (set! t4-30 (-> t3-8 4)) - (set! t3-8 (&-> t3-8 1)) - (b! (zero? t4-30) cfg-189 :delay (set! t7-39 (+ t4-30 -110))) - (b! (zero? t7-39) cfg-161 :delay (set! t7-40 (+ t4-30 -78))) - (b! (zero? t7-40) cfg-161 :delay (set! t7-41 (+ t4-30 -108))) - (b! (zero? t7-41) cfg-164 :delay (set! t7-42 (+ t4-30 -76))) - (b! (zero? t7-42) cfg-164 :delay (set! t7-43 (+ t4-30 -119))) - (b! (zero? t7-43) cfg-132 :delay (set! t7-44 (+ t4-30 -87))) - (b! (zero? t7-44) cfg-132 :delay (set! t7-45 (+ t4-30 -107))) - (b! (zero? t7-45) cfg-165 :delay (set! t7-46 (+ t4-30 -75))) - (b! (zero? t7-46) cfg-165 :delay (set! t7-47 (+ t4-30 -106))) - (b! (zero? t7-47) cfg-132 :delay (set! t7-48 (+ t4-30 -74))) - (b! (zero? t7-48) cfg-132 :delay (set! t7-49 (+ t4-30 -104))) - (b! (zero? t7-49) cfg-167 :delay (set! t7-50 (+ t4-30 -72))) - (b! (zero? t7-50) cfg-167 :delay (set! t7-51 (+ t4-30 -118))) - (b! (zero? t7-51) cfg-172 :delay (set! t7-52 (+ t4-30 -86))) - (b! (zero? t7-52) cfg-172 :delay (set! t7-53 (+ t4-30 -48))) - (b! - (< (the-as int t7-53) 0) - cfg-180 - :delay - (set! t8-4 (+ t4-30 -57)) - ) - (b! (> (the-as int t8-4) 0) cfg-180 :delay (.sll t8-5 t6-19 2)) - (let ((t4-31 (+ t6-19 t8-5))) - (.sll t4-32 t4-31 1) - ) - (b! #t cfg-143 :delay (set! t6-19 (+ t4-32 t7-53))) - (label cfg-161) - (b! (nonzero? t6-19) cfg-163 :delay (set! a3-8 *font12-table*)) - (set! font-table-to-use a3-8) - (let ((t0-3 -33)) - (.lvf vf13 (&-> fw size1-small quad)) - (.lvf vf14 (&-> fw size2-small quad)) - (.lvf vf15 (&-> fw size3-small quad)) - (set! a0-4 (logand a0-4 t0-3)) - ) - (set! q-lo-tmpl (-> fw small-font-lo-tmpl-qw)) - (b! - #t - cfg-132 - :delay - (set! q-hi-tmpl (-> fw small-font-hi-tmpl-qw)) - ) - (label cfg-163) - (set! font-table-to-use *font24-table*) - (.lvf vf13 (&-> fw size1-large quad)) - (.lvf vf14 (&-> fw size2-large quad)) - (.lvf vf15 (&-> fw size3-large quad)) - (set! a0-4 (logior a0-4 32)) - (set! q-lo-tmpl (-> fw large-font-lo-tmpl-qw)) - (b! - #t - cfg-132 - :delay - (set! q-hi-tmpl (-> fw large-font-hi-tmpl-qw)) - ) - (label cfg-164) - (set! (-> fw last-color-32) t6-19) - (.sll t4-33 t6-19 4) - (let ((t5-29 (-> fw current-verts color 0 quad)) - (t4-34 (the-as object (+ t4-33 (the-as int fw)))) - ) - (let ((t6-25 (-> fw current-verts color 1 quad))) - (set! (-> fw src-verts color 0 quad) t5-29) - (set! (-> fw src-verts color 1 quad) t6-25) - ) - (let ((t5-30 (-> fw current-verts color 2 quad))) - (let ((t6-26 (-> fw current-verts color 3 quad))) - (set! (-> fw src-verts color 2 quad) t5-30) - (set! (-> fw src-verts color 3 quad) t6-26) - ) - ) - (let ((t6-27 (the-as uint128 (deref uint32 (+ (the-as int t4-34) 1984))))) - (let - ((t5-31 - (the-as - uint128 - (-> (the-as font-work t4-34) color-table 0 color 1) - ) - ) - ) - (.pextlb t6-28 r0 t6-27) - (.pextlh t6-29 r0 t6-28) - (.pextlb t5-32 r0 t5-31) - ) - ) - (set! (-> fw current-verts color 0 quad) (the-as uint128 t6-29)) - (.pextlh t5-33 r0 t5-32) - (set! (-> fw dest-verts color 0 quad) (the-as uint128 t6-29)) - (set! (-> fw current-verts color 1 quad) (the-as uint128 t5-33)) - (set! (-> fw dest-verts color 1 quad) (the-as uint128 t5-33)) - (let - ((t5-34 - (the-as - uint128 - (-> (the-as font-work t4-34) color-table 0 color 2) - ) - ) - ) - (let - ((t4-35 - (the-as - uint128 - (-> (the-as font-work t4-34) color-table 0 color 3) - ) - ) - ) - (.pextlb t5-35 r0 t5-34) - (.pextlh t5-36 r0 t5-35) - (.pextlb t4-36 r0 t4-35) - ) - ) - ) - (set! (-> fw current-verts color 2 quad) (the-as uint128 t5-36)) - (.pextlh t4-37 r0 t4-36) - (set! (-> fw dest-verts color 2 quad) (the-as uint128 t5-36)) - (set! (-> fw current-verts color 3 quad) (the-as uint128 t4-37)) - (b! - #t - cfg-132 - :delay - (set! - (-> fw dest-verts color 3 quad) - (the-as uint128 (the-as int t4-37)) - ) - ) - (label cfg-165) - (let ((t4-38 -3)) - (b! (zero? t6-19) cfg-132 :delay (set! a0-4 (logand a0-4 t4-38))) - ) - (b! #t cfg-132 :delay (set! a0-4 (logior a0-4 2))) - (label cfg-167) - (.mov vf1 t6-19) - (let ((t4-39 (+ t5-28 -45))) - (b! (zero? t5-28) cfg-171 :delay (.itof.vf vf1 vf1)) - (b! (zero? t4-39) cfg-170) - ) - (b! #t cfg-132 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1)) - (label cfg-170) - (b! #t cfg-132 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1)) - (label cfg-171) - (b! #t cfg-132 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1)) - (label cfg-172) - (.mov vf1 t6-19) - ) - (let ((t4-40 (+ t5-28 -45))) - (b! (zero? t5-28) cfg-176 :delay (.itof.vf vf1 vf1)) - (b! (zero? t4-40) cfg-175) - ) - (b! #t cfg-132 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10)) - (label cfg-175) - (b! #t cfg-132 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10)) - (label cfg-176) - (b! #t cfg-132 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10)) - (label cfg-177) - (let ((t4-41 (-> fw last-color-32))) - (.lvf vf9 (&-> fw current-verts color 0 quad)) - (.lvf vf10 (&-> fw current-verts color 1 quad)) - (.lvf vf11 (&-> fw current-verts color 2 quad)) - (.lvf vf12 (&-> fw current-verts color 3 quad)) - (set! (-> fw save-last-color-32) t4-41) - ) - (.svf (&-> fw save-color 0 quad) vf9) - (.svf (&-> fw save-color 1 quad) vf10) - (.svf (&-> fw save-color 2 quad) vf11) - (.svf (&-> fw save-color 3 quad) vf12) - (b! #t cfg-132 :delay (.svf (&-> fw save quad) vf23)) - (label cfg-178) - (let ((t4-42 (-> fw save-last-color-32))) - (.lvf vf9 (&-> fw save-color 0 quad)) - (.lvf vf10 (&-> fw save-color 1 quad)) - (.lvf vf11 (&-> fw save-color 2 quad)) - (.lvf vf12 (&-> fw save-color 3 quad)) - (set! (-> fw last-color-32) t4-42) - ) - (.svf (&-> fw current-verts color 0 quad) vf9) - (.svf (&-> fw dest-verts color 0 quad) vf9) - (.svf (&-> fw current-verts color 1 quad) vf10) - (.svf (&-> fw dest-verts color 1 quad) vf10) - (.svf (&-> fw current-verts color 2 quad) vf11) - (.svf (&-> fw dest-verts color 2 quad) vf11) - (.svf (&-> fw current-verts color 3 quad) vf12) - (.svf (&-> fw dest-verts color 3 quad) vf12) - (b! #t cfg-132 :delay (.lvf vf23 (&-> fw save quad))) - (label cfg-179) - (set! t4-30 (-> t3-8 4)) - (set! t3-8 (&-> t3-8 1)) - (.add.vf vf4 vf23 vf15 :mask #b111) - (let ((t5-37 (logand t4-30 127))) - (.sub.vf vf1 vf25 vf23) - (let ((t5-38 (+ t5-37 255))) - (b! #t cfg-183 :delay (.sll t5-39 t5-38 4)) - ) - ) - (label cfg-180) - (.add.vf vf4 vf23 vf15 :mask #b111) - (.sll t5-39 t4-30 4) - (.sub.vf vf1 vf25 vf23) - (b! (= t4-30 10) cfg-182 :delay (set! t6-31 (+ t4-30 -13))) - (b! (nonzero? t6-31) cfg-183) - (label cfg-182) - (set! t2-2 (&-> (the-as (pointer uint64) t2-2) 2)) - (b! - #t - cfg-132 - :delay - (.lvf vf23 (+ (the-as int t2-2) 944)) - ) - (label cfg-183) - (.addu t5-40 t5-39 font-table-to-use) - (.lvf vf5 (+ t5-40 -256)) - (.mov t5-41 vf1) - (b! - (< (the-as int t5-41) 0) - cfg-189 - :delay - (.add.vf vf6 vf5 vf16 :mask #b111) - ) - (.sra t5-42 t5-41 31) - (.add.vf vf7 vf5 vf17 :mask #b111) - (b! (< t5-42 0) cfg-132 :delay (.add.vf vf8 vf5 vf18 :mask #b111)) - (.add.vf vf1 vf23 vf0 :mask #b111) - (.add.vf vf2 vf23 vf13 :mask #b111) - (.add.vf vf3 vf23 vf14 :mask #b111) - (.svf (&-> fw current-verts tex-st 0 quad) vf5) - (.add.vf vf4 vf23 vf15 :mask #b111) - (.svf (&-> fw current-verts tex-st 1 quad) vf6) - (.mul.vf vf19 vf5 vf13) - (.svf (&-> fw current-verts tex-st 2 quad) vf7) - (.svf (&-> fw current-verts tex-st 3 quad) vf8) - (.svf (&-> fw current-verts pos 0 quad) vf1) - (.svf (&-> fw current-verts pos 1 quad) vf2) - (.svf (&-> fw current-verts pos 2 quad) vf3) - (.svf (&-> fw current-verts pos 3 quad) vf4) - (.lvf vf1 (&-> fw current-verts pos 0 quad)) - (.lvf vf2 (&-> fw current-verts pos 1 quad)) - (.mul.w.vf acc vf31 vf0) - (.lvf vf3 (&-> fw current-verts pos 2 quad)) - (.add.mul.x.vf acc vf28 vf1 acc) - (.lvf vf4 (&-> fw current-verts pos 3 quad)) - (.add.mul.y.vf acc vf29 vf1 acc) - (.add.mul.z.vf vf1 vf30 vf1 acc) - (.mul.w.vf acc vf31 vf0) - (.add.mul.x.vf acc vf28 vf2 acc) - (.add.mul.y.vf acc vf29 vf2 acc) - (.add.mul.z.vf vf2 vf30 vf2 acc) - (.mul.w.vf acc vf31 vf0) - (.add.mul.x.vf acc vf28 vf3 acc) - (.add.mul.y.vf acc vf29 vf3 acc) - (.add.mul.z.vf vf3 vf30 vf3 acc) - (.mul.w.vf acc vf31 vf0) - (.add.mul.x.vf acc vf28 vf4 acc) - (.add.mul.y.vf acc vf29 vf4 acc) - (.add.mul.z.vf vf4 vf30 vf4 acc) - (.div.vf Q vf25 vf1 :fsf #b10 :ftf #b11) - (let ((t5-43 (-> fw char-tmpl dma-vif quad))) - (let ((t6-32 (-> fw char-tmpl quad 1))) - (set! (-> (the-as (pointer uint128) dma-out) 0) t5-43) - (set! (-> (the-as (pointer uint128) dma-out) 1) t6-32) - ) - ) - (.lvf vf5 (&-> fw current-verts tex-st 0 quad)) - (let ((t5-44 q-lo-tmpl)) - (.lvf vf6 (&-> fw current-verts tex-st 1 quad)) - (let ((t4-43 (logand t4-30 128))) - (.lvf vf7 (&-> fw current-verts tex-st 2 quad)) - (.movn-128 t5-45 q-hi-tmpl t4-43 t5-44) - ) - ) - ) - ) - (.mul.vf vf1 vf1 Q :mask #b111) - (set! (-> (the-as (pointer uint128) dma-out) 2) (the uint128 t5-45)) - (.mul.vf vf5 vf5 Q :mask #b111) - (.nop.vf) - (.nop.vf) - (.div.vf Q vf25 vf2 :fsf #b10 :ftf #b11) - (.lvf vf8 (&-> fw current-verts tex-st 3 quad)) - (.add.vf vf1 vf1 vf27) - (.lvf vf9 (&-> fw current-verts color 0 quad)) - (.lvf vf10 (&-> fw current-verts color 1 quad)) - (.lvf vf11 (&-> fw current-verts color 2 quad)) - (vftoi4.xyzw vf1 vf1) - (.mul.vf vf2 vf2 Q :mask #b111) - (.mul.vf vf6 vf6 Q :mask #b111) - (.svf (&-> (the-as (pointer uint128) dma-out) 3) vf5) - (.nop.vf) - (.nop.vf) - (.div.vf Q vf25 vf3 :fsf #b10 :ftf #b11) - (.svf (&-> (the-as (pointer uint128) dma-out) 4) vf9) - (.lvf vf12 (&-> fw current-verts color 3 quad)) - (.svf (&-> (the-as (pointer uint128) dma-out) 5) vf1) - (.add.vf vf2 vf2 vf27) - (vftoi4.xyzw vf2 vf2) - (.mul.vf vf3 vf3 Q :mask #b111) - (.mul.vf vf7 vf7 Q :mask #b111) - (.svf (&-> (the-as (pointer uint128) dma-out) 6) vf6) - (.nop.vf) - (.nop.vf) - (.div.vf Q vf25 vf4 :fsf #b10 :ftf #b11) - (.svf (&-> (the-as (pointer uint128) dma-out) 7) vf10) - (.svf (&-> (the-as (pointer uint128) dma-out) 8) vf2) - (.add.vf vf3 vf3 vf27) - (vftoi4.xyzw vf3 vf3) - (.mul.vf vf4 vf4 Q :mask #b111) - (.mul.vf vf8 vf8 Q :mask #b111) - (.svf (&-> (the-as (pointer uint128) dma-out) 9) vf7) - (.svf (&-> (the-as (pointer uint128) dma-out) 10) vf11) - (.add.vf vf4 vf4 vf27) - ;;(s.vf! (+ dma-out 176) vf3) - (.svf (+ (the-as int dma-out) 176) vf3) - (let ((t4-44 (logand a0-4 2))) - (b! (zero? t4-44) cfg-187) - ) - ) - ) - ) - ) - (b! #t cfg-188 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1)) - (label cfg-187) - (.add.w.vf vf23 vf23 vf14 :mask #b1) - (label cfg-188) - (vftoi4.xyzw vf4 vf4) - ;;(s.vf! (+ dma-out 192) vf8) - (.svf (+ (the-as int dma-out) 192) vf8) - ;;(s.vf! (+ dma-out 208) vf12) - (.svf (+ (the-as int dma-out) 208) vf12) - ;;(s.vf! (+ dma-out 224) vf4) - (.svf (+ (the-as int dma-out) 224) vf4) - (b! #t cfg-132 :delay (set! dma-out (&+ dma-out 240))) - (label cfg-189) - (let ((v1-6 (-> fw buf))) - ;;(s.w! (+ v1-6 4) dma-out) - (set! (-> (the-as (pointer pointer) v1-6) 1) dma-out) - ) - ) - ) - (.lvf vf24 (&-> arg2 origin quad)) - (.sub.vf vf23 vf23 vf24) - (.mov v0-0 vf23) - v0-0 - ) - ) - - + (.svf (&-> fw current-verts tex-st 2 quad) vf7) + (.svf (&-> fw current-verts tex-st 3 quad) vf8) + (.svf (&-> fw current-verts pos 0 quad) vf1) + (.svf (&-> fw current-verts pos 1 quad) vf2) + (.svf (&-> fw current-verts pos 2 quad) vf3) + (.svf (&-> fw current-verts pos 3 quad) vf4) + (.lvf vf1 (&-> fw current-verts pos 0 quad)) + (.lvf vf2 (&-> fw current-verts pos 1 quad)) + (.mul.w.vf acc vf31 vf0) + (.lvf vf3 (&-> fw current-verts pos 2 quad)) + (.add.mul.x.vf acc vf28 vf1 acc) + (.lvf vf4 (&-> fw current-verts pos 3 quad)) + (.add.mul.y.vf acc vf29 vf1 acc) + (.add.mul.z.vf vf1 vf30 vf1 acc) + (.mul.w.vf acc vf31 vf0) + (.add.mul.x.vf acc vf28 vf2 acc) + (.add.mul.y.vf acc vf29 vf2 acc) + (.add.mul.z.vf vf2 vf30 vf2 acc) + (.mul.w.vf acc vf31 vf0) + (.add.mul.x.vf acc vf28 vf3 acc) + (.add.mul.y.vf acc vf29 vf3 acc) + (.add.mul.z.vf vf3 vf30 vf3 acc) + (.mul.w.vf acc vf31 vf0) + (.add.mul.x.vf acc vf28 vf4 acc) + (.add.mul.y.vf acc vf29 vf4 acc) + (.add.mul.z.vf vf4 vf30 vf4 acc) + (.div.vf Q vf25 vf1 :fsf #b10 :ftf #b11) + (let ((t5-21 (-> fw char-tmpl dma-vif quad))) + (let ((t6-18 (-> fw char-tmpl quad 1))) + (set! (-> (the-as (pointer uint128) dma-out) 0) t5-21) + (set! (-> (the-as (pointer uint128) dma-out) 1) t6-18))) + (.lvf vf5 (&-> fw current-verts tex-st 0 quad)) + (let ((t5-22 q-lo-tmpl)) + (.lvf vf6 (&-> fw current-verts tex-st 1 quad)) + (let ((t4-28 (logand t4-21 128))) + (.lvf vf7 (&-> fw current-verts tex-st 2 quad)) + ;; note: this relies on (somewhat) undefined behavior that the upper 64-bits of a + ;; gpr aren't changed during movn. + (.movn-128 t5-23 q-hi-tmpl t4-28 t5-22))))) + (.mul.vf vf1 vf1 Q :mask #b111) + (set! (-> (the-as (pointer uint128) dma-out) 2) (the-as uint128 t5-23)) + (.mul.vf vf5 vf5 Q :mask #b111) + (.nop.vf) + (.nop.vf) + (.div.vf Q vf25 vf2 :fsf #b10 :ftf #b11) + (.lvf vf8 (&-> fw current-verts tex-st 3 quad)) + (.add.vf vf1 vf1 vf26) + (.lvf vf9 (&-> fw color-shadow quad)) + (vftoi4.xyzw vf1 vf1) + (.mul.vf vf2 vf2 Q :mask #b111) + (.mul.vf vf6 vf6 Q :mask #b111) + (.svf (&-> (the-as (pointer uint128) dma-out) 3) vf5) + (.nop.vf) + (.nop.vf) + (.div.vf Q vf25 vf3 :fsf #b10 :ftf #b11) + (.svf (&-> (the-as (pointer uint128) dma-out) 4) vf9) + (.svf (&-> (the-as (pointer uint128) dma-out) 5) vf1) + (.add.vf vf2 vf2 vf26) + (vftoi4.xyzw vf2 vf2) + (.mul.vf vf3 vf3 Q :mask #b111) + (.mul.vf vf7 vf7 Q :mask #b111) + (.svf (&-> (the-as (pointer uint128) dma-out) 6) vf6) + (.nop.vf) + (.nop.vf) + (.div.vf Q vf25 vf4 :fsf #b10 :ftf #b11) + (.svf (&-> (the-as (pointer uint128) dma-out) 7) vf9) + (.svf (&-> (the-as (pointer uint128) dma-out) 8) vf2) + (.add.vf vf3 vf3 vf26) + (vftoi4.xyzw vf3 vf3) + (.mul.vf vf4 vf4 Q :mask #b111) + (.mul.vf vf8 vf8 Q :mask #b111) + (.svf (&-> (the-as (pointer uint128) dma-out) 9) vf7) + (.svf (&-> (the-as (pointer uint128) dma-out) 10) vf9) + (.add.vf vf4 vf4 vf26) + (.svf (&-> (the-as (pointer uint128) dma-out) 11) vf3) + (let ((t4-29 (logand a0-3 2))) (b! (zero? t4-29) cfg-129))) + (b! #t cfg-130 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1)) + (label cfg-129) + (.add.w.vf vf23 vf23 vf14 :mask #b1) + (label cfg-130) + (vftoi4.xyzw vf4 vf4) + (.svf (&-> (the-as (pointer uint128) dma-out) 12) vf8) + (.svf (&-> (the-as (pointer uint128) dma-out) 13) vf9) + (.svf (&-> (the-as (pointer uint128) dma-out) 14) vf4) + (b! #t cfg-73 :delay (set! dma-out (&-> (the-as (pointer uint128) dma-out) 15))) + (label cfg-131) + (let ((a0-4 (-> fw flags-signed))) + (let ((t2-2 (the-as object fw)) + (t3-8 (-> fw str-ptr-signed))) + (.lvf vf23 (&-> (the-as font-work t2-2) justify 0 quad)) + (label cfg-132) + (let ((t4-30 (-> t3-8 4))) + (set! t3-8 (&-> t3-8 1)) + (b! (zero? t4-30) cfg-189 :delay (set! t5-24 (+ t4-30 -1))) + (b! (zero? t5-24) cfg-179 :delay (set! t5-25 (+ t4-30 -126))) + (b! (nonzero? t5-25) cfg-180) + (set! t4-30 (-> t3-8 4)) + (set! t3-8 (&-> t3-8 1)) + (let ((t5-26 0) + (t6-19 0)) + (b! (zero? t4-30) cfg-189 :delay (set! t7-36 (+ t4-30 -43))) + (.movz t5-27 t4-30 t7-36 t5-26) + (let ((t7-37 (+ t4-30 -45))) (.movz t5-28 t4-30 t7-37 t5-27)) + (b! (nonzero? t5-28) cfg-143 :delay (set! t7-38 (+ t4-30 -121))) + (b! (zero? t7-38) cfg-177 :delay (set! t6-20 (+ t4-30 -89))) + (b! (zero? t6-20) cfg-177 :delay (set! t6-21 (+ t4-30 -122))) + (b! (zero? t6-21) cfg-178 :delay (set! t6-22 (+ t4-30 -90))) + (b! (zero? t6-22) cfg-178 :delay (set! t6-23 (+ t4-30 -48))) + (b! (< (the-as int t6-23) 0) cfg-180 :delay (set! t6-24 (+ t4-30 -57))) + (b! (> (the-as int t6-24) 0) cfg-180 :delay (set! t6-19 (the-as int (+ t4-30 -48)))) + (label cfg-143) + (set! t4-30 (-> t3-8 4)) + (set! t3-8 (&-> t3-8 1)) + (b! (zero? t4-30) cfg-189 :delay (set! t7-39 (+ t4-30 -110))) + (b! (zero? t7-39) cfg-161 :delay (set! t7-40 (+ t4-30 -78))) + (b! (zero? t7-40) cfg-161 :delay (set! t7-41 (+ t4-30 -108))) + (b! (zero? t7-41) cfg-164 :delay (set! t7-42 (+ t4-30 -76))) + (b! (zero? t7-42) cfg-164 :delay (set! t7-43 (+ t4-30 -119))) + (b! (zero? t7-43) cfg-132 :delay (set! t7-44 (+ t4-30 -87))) + (b! (zero? t7-44) cfg-132 :delay (set! t7-45 (+ t4-30 -107))) + (b! (zero? t7-45) cfg-165 :delay (set! t7-46 (+ t4-30 -75))) + (b! (zero? t7-46) cfg-165 :delay (set! t7-47 (+ t4-30 -106))) + (b! (zero? t7-47) cfg-132 :delay (set! t7-48 (+ t4-30 -74))) + (b! (zero? t7-48) cfg-132 :delay (set! t7-49 (+ t4-30 -104))) + (b! (zero? t7-49) cfg-167 :delay (set! t7-50 (+ t4-30 -72))) + (b! (zero? t7-50) cfg-167 :delay (set! t7-51 (+ t4-30 -118))) + (b! (zero? t7-51) cfg-172 :delay (set! t7-52 (+ t4-30 -86))) + (b! (zero? t7-52) cfg-172 :delay (set! t7-53 (+ t4-30 -48))) + (b! (< (the-as int t7-53) 0) cfg-180 :delay (set! t8-4 (+ t4-30 -57))) + (b! (> (the-as int t8-4) 0) cfg-180 :delay (.sll t8-5 t6-19 2)) + (let ((t4-31 (+ t6-19 t8-5))) (.sll t4-32 t4-31 1)) + (b! #t cfg-143 :delay (set! t6-19 (+ t4-32 t7-53))) + (label cfg-161) + (b! (nonzero? t6-19) cfg-163 :delay (set! a3-8 *font12-table*)) + (set! font-table-to-use a3-8) + (let ((t0-3 -33)) + (.lvf vf13 (&-> fw size1-small quad)) + (.lvf vf14 (&-> fw size2-small quad)) + (.lvf vf15 (&-> fw size3-small quad)) + (set! a0-4 (logand a0-4 t0-3))) + (set! q-lo-tmpl (-> fw small-font-lo-tmpl-qw)) + (b! #t cfg-132 :delay (set! q-hi-tmpl (-> fw small-font-hi-tmpl-qw))) + (label cfg-163) + (set! font-table-to-use *font24-table*) + (.lvf vf13 (&-> fw size1-large quad)) + (.lvf vf14 (&-> fw size2-large quad)) + (.lvf vf15 (&-> fw size3-large quad)) + (set! a0-4 (logior a0-4 32)) + (set! q-lo-tmpl (-> fw large-font-lo-tmpl-qw)) + (b! #t cfg-132 :delay (set! q-hi-tmpl (-> fw large-font-hi-tmpl-qw))) + (label cfg-164) + (set! (-> fw last-color-32) t6-19) + (.sll t4-33 t6-19 4) + (let ((t5-29 (-> fw current-verts color 0 quad)) + (t4-34 (the-as object (+ t4-33 (the-as int fw))))) + (let ((t6-25 (-> fw current-verts color 1 quad))) + (set! (-> fw src-verts color 0 quad) t5-29) + (set! (-> fw src-verts color 1 quad) t6-25)) + (let ((t5-30 (-> fw current-verts color 2 quad))) + (let ((t6-26 (-> fw current-verts color 3 quad))) + (set! (-> fw src-verts color 2 quad) t5-30) + (set! (-> fw src-verts color 3 quad) t6-26))) + (let ((t6-27 (the-as uint128 (deref uint32 (+ (the-as int t4-34) 1984))))) + (let ((t5-31 (the-as uint128 (-> (the-as font-work t4-34) color-table 0 color 1)))) + (.pextlb t6-28 r0 t6-27) + (.pextlh t6-29 r0 t6-28) + (.pextlb t5-32 r0 t5-31))) + (set! (-> fw current-verts color 0 quad) (the-as uint128 t6-29)) + (.pextlh t5-33 r0 t5-32) + (set! (-> fw dest-verts color 0 quad) (the-as uint128 t6-29)) + (set! (-> fw current-verts color 1 quad) (the-as uint128 t5-33)) + (set! (-> fw dest-verts color 1 quad) (the-as uint128 t5-33)) + (let ((t5-34 (the-as uint128 (-> (the-as font-work t4-34) color-table 0 color 2)))) + (let ((t4-35 (the-as uint128 (-> (the-as font-work t4-34) color-table 0 color 3)))) + (.pextlb t5-35 r0 t5-34) + (.pextlh t5-36 r0 t5-35) + (.pextlb t4-36 r0 t4-35)))) + (set! (-> fw current-verts color 2 quad) (the-as uint128 t5-36)) + (.pextlh t4-37 r0 t4-36) + (set! (-> fw dest-verts color 2 quad) (the-as uint128 t5-36)) + (set! (-> fw current-verts color 3 quad) (the-as uint128 t4-37)) + (b! #t cfg-132 :delay (set! (-> fw dest-verts color 3 quad) (the-as uint128 (the-as int t4-37)))) + (label cfg-165) + (let ((t4-38 -3)) (b! (zero? t6-19) cfg-132 :delay (set! a0-4 (logand a0-4 t4-38)))) + (b! #t cfg-132 :delay (set! a0-4 (logior a0-4 2))) + (label cfg-167) + (.mov vf1 t6-19) + (let ((t4-39 (+ t5-28 -45))) (b! (zero? t5-28) cfg-171 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-39) cfg-170)) + (b! #t cfg-132 :delay (.add.x.vf vf23 vf23 vf1 :mask #b1)) + (label cfg-170) + (b! #t cfg-132 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b1)) + (label cfg-171) + (b! #t cfg-132 :delay (.add.x.vf vf23 vf0 vf1 :mask #b1)) + (label cfg-172) + (.mov vf1 t6-19)) + (let ((t4-40 (+ t5-28 -45))) (b! (zero? t5-28) cfg-176 :delay (.itof.vf vf1 vf1)) (b! (zero? t4-40) cfg-175)) + (b! #t cfg-132 :delay (.add.x.vf vf23 vf23 vf1 :mask #b10)) + (label cfg-175) + (b! #t cfg-132 :delay (.sub.x.vf vf23 vf23 vf1 :mask #b10)) + (label cfg-176) + (b! #t cfg-132 :delay (.add.x.vf vf23 vf0 vf1 :mask #b10)) + (label cfg-177) + (let ((t4-41 (-> fw last-color-32))) + (.lvf vf9 (&-> fw current-verts color 0 quad)) + (.lvf vf10 (&-> fw current-verts color 1 quad)) + (.lvf vf11 (&-> fw current-verts color 2 quad)) + (.lvf vf12 (&-> fw current-verts color 3 quad)) + (set! (-> fw save-last-color-32) t4-41)) + (.svf (&-> fw save-color 0 quad) vf9) + (.svf (&-> fw save-color 1 quad) vf10) + (.svf (&-> fw save-color 2 quad) vf11) + (.svf (&-> fw save-color 3 quad) vf12) + (b! #t cfg-132 :delay (.svf (&-> fw save quad) vf23)) + (label cfg-178) + (let ((t4-42 (-> fw save-last-color-32))) + (.lvf vf9 (&-> fw save-color 0 quad)) + (.lvf vf10 (&-> fw save-color 1 quad)) + (.lvf vf11 (&-> fw save-color 2 quad)) + (.lvf vf12 (&-> fw save-color 3 quad)) + (set! (-> fw last-color-32) t4-42)) + (.svf (&-> fw current-verts color 0 quad) vf9) + (.svf (&-> fw dest-verts color 0 quad) vf9) + (.svf (&-> fw current-verts color 1 quad) vf10) + (.svf (&-> fw dest-verts color 1 quad) vf10) + (.svf (&-> fw current-verts color 2 quad) vf11) + (.svf (&-> fw dest-verts color 2 quad) vf11) + (.svf (&-> fw current-verts color 3 quad) vf12) + (.svf (&-> fw dest-verts color 3 quad) vf12) + (b! #t cfg-132 :delay (.lvf vf23 (&-> fw save quad))) + (label cfg-179) + (set! t4-30 (-> t3-8 4)) + (set! t3-8 (&-> t3-8 1)) + (.add.vf vf4 vf23 vf15 :mask #b111) + (let ((t5-37 (logand t4-30 127))) + (.sub.vf vf1 vf25 vf23) + (let ((t5-38 (+ t5-37 255))) (b! #t cfg-183 :delay (.sll t5-39 t5-38 4)))) + (label cfg-180) + (.add.vf vf4 vf23 vf15 :mask #b111) + (.sll t5-39 t4-30 4) + (.sub.vf vf1 vf25 vf23) + (b! (= t4-30 10) cfg-182 :delay (set! t6-31 (+ t4-30 -13))) + (b! (nonzero? t6-31) cfg-183) + (label cfg-182) + (set! t2-2 (&-> (the-as (pointer uint64) t2-2) 2)) + (b! #t cfg-132 :delay (.lvf vf23 (+ (the-as int t2-2) 944))) + (label cfg-183) + (.addu t5-40 t5-39 font-table-to-use) + (.lvf vf5 (+ t5-40 -256)) + (.mov t5-41 vf1) + (b! (< (the-as int t5-41) 0) cfg-189 :delay (.add.vf vf6 vf5 vf16 :mask #b111)) + (.sra t5-42 t5-41 31) + (.add.vf vf7 vf5 vf17 :mask #b111) + (b! (< t5-42 0) cfg-132 :delay (.add.vf vf8 vf5 vf18 :mask #b111)) + (.add.vf vf1 vf23 vf0 :mask #b111) + (.add.vf vf2 vf23 vf13 :mask #b111) + (.add.vf vf3 vf23 vf14 :mask #b111) + (.svf (&-> fw current-verts tex-st 0 quad) vf5) + (.add.vf vf4 vf23 vf15 :mask #b111) + (.svf (&-> fw current-verts tex-st 1 quad) vf6) + (.mul.vf vf19 vf5 vf13) + (.svf (&-> fw current-verts tex-st 2 quad) vf7) + (.svf (&-> fw current-verts tex-st 3 quad) vf8) + (.svf (&-> fw current-verts pos 0 quad) vf1) + (.svf (&-> fw current-verts pos 1 quad) vf2) + (.svf (&-> fw current-verts pos 2 quad) vf3) + (.svf (&-> fw current-verts pos 3 quad) vf4) + (.lvf vf1 (&-> fw current-verts pos 0 quad)) + (.lvf vf2 (&-> fw current-verts pos 1 quad)) + (.mul.w.vf acc vf31 vf0) + (.lvf vf3 (&-> fw current-verts pos 2 quad)) + (.add.mul.x.vf acc vf28 vf1 acc) + (.lvf vf4 (&-> fw current-verts pos 3 quad)) + (.add.mul.y.vf acc vf29 vf1 acc) + (.add.mul.z.vf vf1 vf30 vf1 acc) + (.mul.w.vf acc vf31 vf0) + (.add.mul.x.vf acc vf28 vf2 acc) + (.add.mul.y.vf acc vf29 vf2 acc) + (.add.mul.z.vf vf2 vf30 vf2 acc) + (.mul.w.vf acc vf31 vf0) + (.add.mul.x.vf acc vf28 vf3 acc) + (.add.mul.y.vf acc vf29 vf3 acc) + (.add.mul.z.vf vf3 vf30 vf3 acc) + (.mul.w.vf acc vf31 vf0) + (.add.mul.x.vf acc vf28 vf4 acc) + (.add.mul.y.vf acc vf29 vf4 acc) + (.add.mul.z.vf vf4 vf30 vf4 acc) + (.div.vf Q vf25 vf1 :fsf #b10 :ftf #b11) + (let ((t5-43 (-> fw char-tmpl dma-vif quad))) + (let ((t6-32 (-> fw char-tmpl quad 1))) + (set! (-> (the-as (pointer uint128) dma-out) 0) t5-43) + (set! (-> (the-as (pointer uint128) dma-out) 1) t6-32))) + (.lvf vf5 (&-> fw current-verts tex-st 0 quad)) + (let ((t5-44 q-lo-tmpl)) + (.lvf vf6 (&-> fw current-verts tex-st 1 quad)) + (let ((t4-43 (logand t4-30 128))) + (.lvf vf7 (&-> fw current-verts tex-st 2 quad)) + (.movn-128 t5-45 q-hi-tmpl t4-43 t5-44))))) + (.mul.vf vf1 vf1 Q :mask #b111) + (set! (-> (the-as (pointer uint128) dma-out) 2) (the uint128 t5-45)) + (.mul.vf vf5 vf5 Q :mask #b111) + (.nop.vf) + (.nop.vf) + (.div.vf Q vf25 vf2 :fsf #b10 :ftf #b11) + (.lvf vf8 (&-> fw current-verts tex-st 3 quad)) + (.add.vf vf1 vf1 vf27) + (.lvf vf9 (&-> fw current-verts color 0 quad)) + (.lvf vf10 (&-> fw current-verts color 1 quad)) + (.lvf vf11 (&-> fw current-verts color 2 quad)) + (vftoi4.xyzw vf1 vf1) + (.mul.vf vf2 vf2 Q :mask #b111) + (.mul.vf vf6 vf6 Q :mask #b111) + (.svf (&-> (the-as (pointer uint128) dma-out) 3) vf5) + (.nop.vf) + (.nop.vf) + (.div.vf Q vf25 vf3 :fsf #b10 :ftf #b11) + (.svf (&-> (the-as (pointer uint128) dma-out) 4) vf9) + (.lvf vf12 (&-> fw current-verts color 3 quad)) + (.svf (&-> (the-as (pointer uint128) dma-out) 5) vf1) + (.add.vf vf2 vf2 vf27) + (vftoi4.xyzw vf2 vf2) + (.mul.vf vf3 vf3 Q :mask #b111) + (.mul.vf vf7 vf7 Q :mask #b111) + (.svf (&-> (the-as (pointer uint128) dma-out) 6) vf6) + (.nop.vf) + (.nop.vf) + (.div.vf Q vf25 vf4 :fsf #b10 :ftf #b11) + (.svf (&-> (the-as (pointer uint128) dma-out) 7) vf10) + (.svf (&-> (the-as (pointer uint128) dma-out) 8) vf2) + (.add.vf vf3 vf3 vf27) + (vftoi4.xyzw vf3 vf3) + (.mul.vf vf4 vf4 Q :mask #b111) + (.mul.vf vf8 vf8 Q :mask #b111) + (.svf (&-> (the-as (pointer uint128) dma-out) 9) vf7) + (.svf (&-> (the-as (pointer uint128) dma-out) 10) vf11) + (.add.vf vf4 vf4 vf27) + ;;(s.vf! (+ dma-out 176) vf3) + (.svf (+ (the-as int dma-out) 176) vf3) + (let ((t4-44 (logand a0-4 2))) (b! (zero? t4-44) cfg-187)))))) + (b! #t cfg-188 :delay (.add.w.vf vf23 vf23 vf19 :mask #b1)) + (label cfg-187) + (.add.w.vf vf23 vf23 vf14 :mask #b1) + (label cfg-188) + (vftoi4.xyzw vf4 vf4) + ;;(s.vf! (+ dma-out 192) vf8) + (.svf (+ (the-as int dma-out) 192) vf8) + ;;(s.vf! (+ dma-out 208) vf12) + (.svf (+ (the-as int dma-out) 208) vf12) + ;;(s.vf! (+ dma-out 224) vf4) + (.svf (+ (the-as int dma-out) 224) vf4) + (b! #t cfg-132 :delay (set! dma-out (&+ dma-out 240))) + (label cfg-189) + (let ((v1-6 (-> fw buf))) + ;;(s.w! (+ v1-6 4) dma-out) + (set! (-> (the-as (pointer pointer) v1-6) 1) dma-out)))) + (.lvf vf24 (&-> arg2 origin quad)) + (.sub.vf vf23 vf23 vf24) + (.mov v0-0 vf23) + v0-0)) (defun draw-string-adv ((str string) (buf dma-buffer) (ctxt font-context)) "Draw a string and advance the position of the context." (+! (-> ctxt origin x) (draw-string str buf ctxt)) - (none) - ) + (none)) (defun get-string-length ((arg0 string) (arg1 font-context)) (local-vars (v0-0 float)) @@ -1648,8 +1483,7 @@ (vf23 :class vf) (vf24 :class vf) (vf25 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (.lvf vf25 (&-> arg1 context-vec quad)) (.lvf vf23 (&-> arg1 origin quad)) @@ -1661,21 +1495,16 @@ (.mul.vf vf23 vf23 vf1 :mask #b11) ;; hack! fixes small font widescreen (unless (logtest? (-> arg1 flags) (font-flags pc-hack)) - (.mul.vf vf24 vf24 vf1 :mask #b11) - ) + (.mul.vf vf24 vf24 vf1 :mask #b11)) (set! (-> work str-ptr) (the-as uint arg0)) (set! (-> work flags) flags) (.mov.vf vf1 vf0) - (let ((kerning-table (cond - ((logtest? flags (font-flags large)) - (.lvf vf13 (&-> work size1-large quad)) - (.lvf vf14 (&-> work size2-large quad)) - *font24-table*) - (else - (.lvf vf13 (&-> work size1-small quad)) - (.lvf vf14 (&-> work size2-small quad)) - *font12-table*) - ))) + (let ((kerning-table (cond + ((logtest? flags (font-flags large)) + (.lvf vf13 (&-> work size1-large quad)) + (.lvf vf14 (&-> work size2-large quad)) + *font24-table*) + (else (.lvf vf13 (&-> work size1-small quad)) (.lvf vf14 (&-> work size2-small quad)) *font12-table*)))) (label cfg-3) (let ((cur-char (-> arg0 data 0))) (set! arg0 (the-as string (&-> (the-as (pointer uint8) arg0) 1))) @@ -1684,9 +1513,7 @@ (let ((a3-6 (-> arg0 data 0))) (set! arg0 (the-as string (&-> (the-as (pointer uint8) arg0) 1))) (set! cur-char (+ (logand a3-6 127) 255)) - (goto cfg-48) - ) - ) + (goto cfg-48))) (when (= cur-char #\~) (set! cur-char (-> arg0 data 0)) (set! arg0 (the-as string (&-> (the-as (pointer uint8) arg0) 1))) @@ -1699,91 +1526,56 @@ (goto cfg-3)) (let ((sign-char (if (or (= cur-char #\-) (= cur-char #\+)) cur-char 0)) (arg-val 0)) - (when (or (nonzero? sign-char) - (and (>= cur-char #\0) (<= cur-char #\9))) + (when (or (nonzero? sign-char) (and (>= cur-char #\0) (<= cur-char #\9))) (label cfg-14) (set! cur-char (-> arg0 data 0)) (set! arg0 (the-as string (&-> (the-as (pointer uint8) arg0) 1))) (if (zero? cur-char) (goto cfg-51)) (case cur-char ((#\n #\N) - (cond - ((nonzero? arg-val) - (.lvf vf13 (&-> work size1-large quad)) - (.lvf vf14 (&-> work size2-large quad)) - (set! kerning-table *font24-table*) - (logior! flags (font-flags large))) - (else - (.lvf vf13 (&-> work size1-small quad)) - (.lvf vf14 (&-> work size2-small quad)) - (set! kerning-table *font12-table*) - (logclear! flags (font-flags large))) - ) - (goto cfg-3) - ) - ((#\l #\L #\w #\W #\j #\J #\v #\V) - (goto cfg-3) - ) + (cond + ((nonzero? arg-val) + (.lvf vf13 (&-> work size1-large quad)) + (.lvf vf14 (&-> work size2-large quad)) + (set! kerning-table *font24-table*) + (logior! flags (font-flags large))) + (else + (.lvf vf13 (&-> work size1-small quad)) + (.lvf vf14 (&-> work size2-small quad)) + (set! kerning-table *font12-table*) + (logclear! flags (font-flags large)))) + (goto cfg-3)) + ((#\l #\L #\w #\W #\j #\J #\v #\V) (goto cfg-3)) ((#\k #\K) - (if (zero? arg-val) - (logclear! flags (font-flags kerning)) - (logior! flags (font-flags kerning))) - (goto cfg-3) - ) + (if (zero? arg-val) (logclear! flags (font-flags kerning)) (logior! flags (font-flags kerning))) + (goto cfg-3)) ((#\h #\H) - (.mov vf1 arg-val) - (.itof.vf vf1 vf1) - (cond - ((zero? sign-char) - (.add.x.vf vf23 vf0 vf1 :mask #b1) - ) - ((= sign-char #\-) - (.sub.x.vf vf23 vf23 vf1 :mask #b1) - ) - (else - (.add.x.vf vf23 vf23 vf1 :mask #b1) - ) - ) - (goto cfg-3) - ) - ) + (.mov vf1 arg-val) + (.itof.vf vf1 vf1) + (cond + ((zero? sign-char) (.add.x.vf vf23 vf0 vf1 :mask #b1)) + ((= sign-char #\-) (.sub.x.vf vf23 vf23 vf1 :mask #b1)) + (else (.add.x.vf vf23 vf23 vf1 :mask #b1))) + (goto cfg-3))) (when (and (>= cur-char #\0) (<= cur-char #\9)) (set! arg-val (+ (* arg-val 10) (- cur-char #\0))) - (goto cfg-14) - ) - ) - ) - ) + (goto cfg-14))))) (cond ((and (!= cur-char 10) (!= cur-char 13)) - (label cfg-48) - (.lvf vf5 (&-> kerning-table (- cur-char 16) quad)) - (.mul.vf vf19 vf5 vf13) - (if (logtest? flags (font-flags kerning)) - (.add.w.vf vf23 vf23 vf19 :mask #b1) - (.add.w.vf vf23 vf23 vf14 :mask #b1)) - ) - (else - (.add.x.vf vf23 vf0 vf24 :mask #b1) - ) - ) - (goto cfg-3) - ) - ) - ) + (label cfg-48) + (.lvf vf5 (&-> kerning-table (- cur-char 16) quad)) + (.mul.vf vf19 vf5 vf13) + (if (logtest? flags (font-flags kerning)) (.add.w.vf vf23 vf23 vf19 :mask #b1) (.add.w.vf vf23 vf23 vf14 :mask #b1))) + (else (.add.x.vf vf23 vf0 vf24 :mask #b1))) + (goto cfg-3)))) (label cfg-51) (.sub.vf vf23 vf23 vf24) (.mov v0-0 vf23) - v0-0 - ) - ) + v0-0)) (defun draw-string-xy ((str string) (buf dma-buffer) (x int) (y int) (color font-color) (flags font-flags)) "Draw a string at the given xy location." - (let ((context (new 'stack 'font-context *font-default-matrix* x y 0.0 color flags))) - (draw-string str buf context) - ) - ) + (let ((context (new 'stack 'font-context *font-default-matrix* x y 0.0 color flags))) (draw-string str buf context))) ;; Added for PC port (defun draw-string-xy-scaled ((str string) (buf dma-buffer) (x int) (y int) (color font-color) (flags font-flags) (scale float)) @@ -1794,8 +1586,7 @@ (orig-mat-x-scale (-> font-ctxt mat vector 0 x)) (orig-mat-y-scale (-> font-ctxt mat vector 1 y)) (orig-vid-parms-x-scale (-> *video-parms* relative-x-scale)) - (orig-vid-parms-y-scale (-> *video-parms* relative-y-scale)) - ) + (orig-vid-parms-y-scale (-> *video-parms* relative-y-scale))) ;; scaling globals *font-default-matrix*, *video-parms* (based on print-game-text scaling) (*! (-> *font-default-matrix* vector 0 x) scale) (*! (-> *font-default-matrix* vector 1 y) scale) @@ -1803,16 +1594,12 @@ (*! (-> *video-parms* relative-y-scale) scale) (set! (-> *video-parms* relative-x-scale-reciprical) (/ 1.0 (-> *video-parms* relative-x-scale))) (set! (-> *video-parms* relative-y-scale-reciprical) (/ 1.0 (-> *video-parms* relative-y-scale))) - (draw-string str buf font-ctxt) - ;; un-scaling globals *font-default-matrix*, *video-params* (set! (-> *font-default-matrix* vector 0 x) orig-mat-x-scale) (set! (-> *font-default-matrix* vector 1 y) orig-mat-y-scale) (set! (-> *video-parms* relative-x-scale) orig-vid-parms-x-scale) (set! (-> *video-parms* relative-y-scale) orig-vid-parms-y-scale) (set! (-> *video-parms* relative-x-scale-reciprical) (/ 1.0 (-> *video-parms* relative-x-scale))) - (set! (-> *video-parms* relative-y-scale-reciprical) (/ 1.0 (-> *video-parms* relative-y-scale))) - ) - (none) - ) + (set! (-> *video-parms* relative-y-scale-reciprical) (/ 1.0 (-> *video-parms* relative-y-scale)))) + (none)) diff --git a/goal_src/jak1/engine/gfx/foreground/bones-h.gc b/goal_src/jak1/engine/gfx/foreground/bones-h.gc index e44a8add4f..d15ecf7d97 100644 --- a/goal_src/jak1/engine/gfx/foreground/bones-h.gc +++ b/goal_src/jak1/engine/gfx/foreground/bones-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/shadow/shadow-cpu-h.gc") -;; name: bones-h.gc -;; name in dgo: bones-h -;; dgos: GAME, ENGINE - ;; The "bone" system computes bone matrices from joint animations. ;; It looks like it also expanded to do most of the DMA generation ;; for the foreground renderers. @@ -15,103 +10,75 @@ ;; DECOMP BEGINS (deftype bone-buffer (structure) - ((joint joint-anim-compressed-hdr 16 :inline) - (bone bone 16 :inline) - (_pad uint8 2048) - ) - ) - + ((joint joint-anim-compressed-hdr 16 :inline) + (bone bone 16 :inline) + (_pad uint8 2048))) (deftype bone-layout (structure) - ((joint joint 2) - (bone bone 2) - (data uint16 8 :overlay-at (-> joint 0)) - (output uint32 2) - (cache uint32 2) - ) - ) - + ((joint joint 2) + (bone bone 2) + (data uint16 8 :overlay-at (-> joint 0)) + (output uint32 2) + (cache uint32 2))) (deftype bone-regs (structure) - ((joint-ptr (inline-array joint)) - (bone-ptr (inline-array bone)) - (num-bones uint32) - ) - ) - + ((joint-ptr (inline-array joint)) + (bone-ptr (inline-array bone)) + (num-bones uint32))) (deftype bone-work (structure) - ((layout bone-layout :inline) - (bounds sphere :inline) - (lights vu-lights :inline) - (distance vector :inline) - (next-tag dma-packet :inline) - (dma-buf dma-buffer) - (sink-group dma-foreground-sink-group) - (next-pris dma-packet) - (next-merc dma-packet) - (wait-count uint32) - (in-count uint32) - (sp-size uint32) - (sp-bufnum uint32) - (regs bone-regs :inline) - ) - ) - + ((layout bone-layout :inline) + (bounds sphere :inline) + (lights vu-lights :inline) + (distance vector :inline) + (next-tag dma-packet :inline) + (dma-buf dma-buffer) + (sink-group dma-foreground-sink-group) + (next-pris dma-packet) + (next-merc dma-packet) + (wait-count uint32) + (in-count uint32) + (sp-size uint32) + (sp-bufnum uint32) + (regs bone-regs :inline))) (deftype bone-debug (structure) - ((time-ctr uint32) - (timing uint32 360) - ) - ) - + ((time-ctr uint32) + (timing uint32 360))) (deftype bone-memory (structure) - ((work bone-work :inline) - (buffer bone-buffer 2 :inline) - (dma-list dma-packet :inline :overlay-at (-> buffer 0 joint 0 control-bits 0)) - ) - ) + ((work bone-work :inline) + (buffer bone-buffer 2 :inline) + (dma-list dma-packet :inline :overlay-at (-> buffer 0 joint 0 control-bits 0)))) (defun invalidate-cache-line ((arg0 pointer)) "Invalidate a single cache line. Won't be used in PC" - (#unless PC_PORT (.sync.l) (.cache dxwbin arg0 0) (.sync.l) (.cache dxwbin arg0 1) - (.sync.l) - ) - 0 - ) + (.sync.l)) + 0) (deftype merc-globals (structure) - ((first uint32) - (next (pointer uint32)) - (sink generic-dma-foreground-sink) - ) - :allow-misaligned - ) - + ((first uint32) + (next (pointer uint32)) + (sink generic-dma-foreground-sink)) + :allow-misaligned) (deftype merc-global-array (structure) - ((count uint32) - (globals merc-globals 8 :inline) - ) - ) - + ((count uint32) + (globals merc-globals 8 :inline))) (define *merc-globals* (the-as merc-globals #f)) (deftype shadow-dma-packet (structure) - ((tag generic-merc-tag :inline) - (settings shadow-settings :inline) - (geo-ref dma-packet :inline) - (mtx-ref dma-packet :inline) - (end-tag dma-packet :inline) - ) - ) + ((tag generic-merc-tag :inline) + (settings shadow-settings :inline) + (geo-ref dma-packet :inline) + (mtx-ref dma-packet :inline) + (end-tag dma-packet :inline))) (define-extern vu-lights<-light-group! (function vu-lights light-group none)) diff --git a/goal_src/jak1/engine/gfx/foreground/bones.gc b/goal_src/jak1/engine/gfx/foreground/bones.gc index 937a2a00d9..f16cd1bbcb 100644 --- a/goal_src/jak1/engine/gfx/foreground/bones.gc +++ b/goal_src/jak1/engine/gfx/foreground/bones.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/background/subdivide.gc") (require "engine/gfx/foreground/bones-h.gc") (require "engine/gfx/mood/time-of-day-h.gc") @@ -14,9 +13,6 @@ (require "engine/anim/mspace-h.gc") (require "engine/collide/collide-shape-h.gc") -;; name: bones.gc -;; name in dgo: bones -;; dgos: GAME, ENGINE ;; note: changed for high fps ;; Bones. @@ -39,7 +35,7 @@ :type uint16 :bitfield #t (bncfl00 0) - (bncfl01 1) ;; use identity matrix in bone matrix calc instead of cam rot (effectively screen-space bones?) + (bncfl01 1) ;; use identity matrix in bone matrix calc instead of cam rot (effectively screen-space bones?) (bncfl02 2) (bncfl03 3) (bncfl04 4) @@ -53,40 +49,35 @@ (bncfl12 12) (bncfl13 13) (bncfl14 14) - (bncfl15 15) - ) + (bncfl15 15)) ;; this type represents a "calculation" that will be performed at later time. (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) - ) + ((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 - ) + :size-assert #x30 + :flag-assert #x900000030) ;; linked list of bone-calculations. ;; you have to bring your own bone-calculations (deftype bone-calculation-list (structure) - ((first bone-calculation :offset-assert 0) - (next bone-calculation :offset-assert 4) - ) + ((first bone-calculation :offset-assert 0) + (next bone-calculation :offset-assert 4)) :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 - ) + :size-assert #x8 + :flag-assert #x900000008) ;; the global calculation list. (define *bone-calculation-list* (new 'global 'bone-calculation-list)) @@ -95,10 +86,8 @@ "Reset the bone list to have nothing." (let ((v1-0 *bone-calculation-list*)) (set! (-> v1-0 first) (the-as bone-calculation 0)) - (set! (-> v1-0 next) (the-as bone-calculation 0)) - ) - (none) - ) + (set! (-> v1-0 next) (the-as bone-calculation 0))) + (none)) (bone-list-init) @@ -110,13 +99,11 @@ ;; list of all texture scroll effects. (deftype texscroll-globals (structure) - ((requests int32 :offset-assert 0) - (effects merc-effect 32 :offset-assert 4) - ) + ((requests int32 :offset-assert 0) + (effects merc-effect 32 :offset-assert 4)) :method-count-assert 9 - :size-assert #x84 - :flag-assert #x900000084 - ) + :size-assert #x84 + :flag-assert #x900000084) (define *texscroll-globals* (new 'global 'texscroll-globals)) @@ -125,29 +112,19 @@ Note: only call this if you actually have a texture scroll effect!" (let* ((v1-1 (-> *texscroll-globals* requests)) (a1-0 (-> arg0 extra-info)) - (a1-1 (the-as mei-texture-scroll (+ (the-as uint a1-0) (* (-> a1-0 texture-scroll-offset) 16)))) - ) + (a1-1 (the-as mei-texture-scroll (+ (the-as uint a1-0) (* (-> a1-0 texture-scroll-offset) 16))))) (when (< v1-1 32) (let* ((a3-1 (the int (* (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter)))) ;; changed for high fps (a2-3 (-> a1-1 time-factor)) - (t0-2 (+ (ash 1 a2-3) -1)) - ) - (if (zero? (-> a1-1 scroll-dir)) - (set! a3-1 (- a3-1)) - ) + (t0-2 (+ (ash 1 a2-3) -1))) + (if (zero? (-> a1-1 scroll-dir)) (set! a3-1 (- a3-1))) (let ((a2-5 (ash (ash (logand a3-1 t0-2) (- 12 (the-as int (-> a1-1 st-int-scale)))) (- (the-as int a2-3))))) (when (!= a2-5 (-> a1-1 cached-time)) (set! (-> a1-1 time-delta) (the-as uint (- a2-5 (the-as int (-> a1-1 cached-time))))) (set! (-> a1-1 cached-time) (the-as uint a2-5)) (set! (-> *texscroll-globals* effects v1-1) arg0) - (+! (-> *texscroll-globals* requests) 1) - ) - ) - ) - ) - ) - (none) - ) + (+! (-> *texscroll-globals* requests) 1)))))) + (none)) (defun texscroll-execute () "Do all requested texture scroll updates." @@ -157,44 +134,27 @@ (a1-1 (-> a2-0 extra-info)) (a1-2 (the-as mei-texture-scroll (+ (the-as uint a1-1) (* (-> a1-1 texture-scroll-offset) 16)))) (t1-0 (-> a2-0 frag-geo)) - (a2-1 (-> a2-0 frag-ctrl)) - ) + (a2-1 (-> a2-0 frag-ctrl))) (dotimes (a3-2 (the-as int a0-2)) (let ((t0-4 (&+ (the-as pointer t1-0) (logand (* (+ (-> a2-1 unsigned-four-count) 3) 4) #xfff0)))) (let ((t2-2 (+ (-> t1-0 header mat1-cnt) (-> t1-0 header mat2-cnt) (-> t1-0 header mat3-cnt)))) (the-as (pointer int8) (-> a1-2 time-delta)) (let* ((t1-3 (the-as (pointer int8) (&+ t0-4 9))) (t2-4 (&+ t1-3 (* (the-as uint 12) t2-2))) - (t3-3 (-> a1-2 time-delta)) - ) + (t3-3 (-> a1-2 time-delta))) (nop!) (label cfg-3) (let ((t4-0 (-> t1-3 0))) (nop!) (nop!) (nop!) - (let ((t4-1 (+ t4-0 t3-3))) - (set! t1-3 (&-> t1-3 12)) - (b! (!= t1-3 t2-4) cfg-3 :delay (set! (-> t1-3 -12) t4-1)) - ) - ) - ) - ) - (set! t1-0 (the-as - merc-fragment - (&+ (&+ t0-4 (logand (* (+ (-> a2-1 lump-four-count) 3) 4) #xfff0)) (* (-> a2-1 fp-qwc) 16)) - ) - ) - ) - (set! a2-1 (the-as merc-fragment-control (+ (the-as uint a2-1) (* (-> a2-1 mat-xfer-count) 2) 4))) - ) - ) - ) + (let ((t4-1 (+ t4-0 t3-3))) (set! t1-3 (&-> t1-3 12)) (b! (!= t1-3 t2-4) cfg-3 :delay (set! (-> t1-3 -12) t4-1)))))) + (set! t1-0 + (the-as merc-fragment (&+ (&+ t0-4 (logand (* (+ (-> a2-1 lump-four-count) 3) 4) #xfff0)) (* (-> a2-1 fp-qwc) 16))))) + (set! a2-1 (the-as merc-fragment-control (+ (the-as uint a2-1) (* (-> a2-1 mat-xfer-count) 2) 4)))))) (set! (-> *texscroll-globals* requests) 0) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;; ;; Merc Submission @@ -205,30 +165,26 @@ ;; per-effect information (deftype merc-effect-bucket-info (structure) - ((color-fade rgba :offset-assert 0) - (use-mercneric uint8 :offset-assert 4) - (ignore-alpha uint8 :offset-assert 5) - (pad0 uint8 :offset-assert 6) - (pad1 uint8 :offset-assert 7) - ) + ((color-fade rgba :offset-assert 0) + (use-mercneric uint8 :offset-assert 4) + (ignore-alpha uint8 :offset-assert 5) + (pad0 uint8 :offset-assert 6) + (pad1 uint8 :offset-assert 7)) :pack-me :method-count-assert 9 - :size-assert #x8 - :flag-assert #x900000008 - ) + :size-assert #x8 + :flag-assert #x900000008) ;; information for everything being submitted. (deftype merc-bucket-info (structure) - ((light vu-lights :inline :offset-assert 0) - (needs-clip int32 :offset-assert 112) - (need-mercprime-if-merc int32 :offset-assert 116) - (must-use-mercneric-for-clip int32 :offset-assert 120) - (effect merc-effect-bucket-info 16 :inline :offset-assert 124) - ) + ((light vu-lights :inline :offset-assert 0) + (needs-clip int32 :offset-assert 112) + (need-mercprime-if-merc int32 :offset-assert 116) + (must-use-mercneric-for-clip int32 :offset-assert 120) + (effect merc-effect-bucket-info 16 :inline :offset-assert 124)) :method-count-assert 9 - :size-assert #xfc - :flag-assert #x9000000fc - ) + :size-assert #xfc + :flag-assert #x9000000fc) (define *merc-bucket-info* (new 'global 'merc-bucket-info)) @@ -239,26 +195,26 @@ ;; VU / DMA ;;;;;;;;;;;;;;;; -(define bones-vu0-block (new 'static 'vu-function #|:length 63 :qlength 32|#)) +(define bones-vu0-block + (new 'static + 'vu-function + #| :length 63 :qlength 32 |# + )) ;; these changes only matter if transferring in _interleave_ mode. (defun bones-set-sqwc () ;; transfer 4, skip 1. (#unless PC_PORT - (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x4)) - ) - (none) - ) + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x4))) + (none)) (defun bones-reset-sqwc () ;; transfer 1, skip 1 ;; og:preserve-this not sure what uses this mode?? (#unless PC_PORT - (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x1)) - ) - (none) - ) + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x1))) + (none)) ;; ?? used by generic merc (define *merc-global-array* (new 'global 'merc-global-array)) @@ -274,8 +230,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (nop!) (let ((a3-0 (the-as uint128 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)))) @@ -291,11 +246,7 @@ (.lvf vf8 (&-> arg1 dir0 levels quad)) (.pextlw t1-1 a3-0 t0-0) (.lvf vf5 (&-> arg1 dir1 color quad)) - (.pextuw t0-1 a3-0 t0-0) - ) - ) - ) - ) + (.pextuw t0-1 a3-0 t0-0))))) (.lvf vf9 (&-> arg1 dir1 levels quad)) (let ((a3-1 (the uint128 (make-u128 t1-1 v1-0)))) (.lvf vf6 (&-> arg1 dir2 color quad)) @@ -310,9 +261,7 @@ (.mul.x.vf vf6 vf6 vf10) (set! (-> arg0 direction 1 quad) v1-1) (.mul.x.vf vf7 vf7 vf11) - (set! (-> arg0 direction 2 quad) (the-as uint128 a2-2)) - ) - ) + (set! (-> arg0 direction 2 quad) (the-as uint128 a2-2)))) (.min.x.vf vf4 vf0 vf0 :mask #b1000) (nop!) (.min.x.vf vf5 vf0 vf0 :mask #b1000) @@ -330,9 +279,7 @@ (nop!) (.svf (&-> arg0 ambient quad) vf7) 0 - (none) - ) - ) + (none))) ;;;;;;;;;;;;;;;;;;;; ;; BONE @@ -342,9 +289,7 @@ "Initialize the scratchpad and VU0 for bone work." (scratchpad-object int) (let ((a2-1 (the-as bone-memory (+ 16 (scratchpad-object int)))) - (v1-2 (the-as bone-memory (+ 16 (scratchpad-object int)))) - ) - + (v1-2 (the-as bone-memory (+ 16 (scratchpad-object int))))) ;; layout joints, bones, and outputs (set! (-> a2-1 work layout joint 0) (the-as joint (+ 256 (scratchpad-object int)))) (set! (-> a2-1 work layout joint 1) (the-as joint (+ 4864 (scratchpad-object int)))) @@ -352,95 +297,66 @@ (set! (-> a2-1 work layout bone 1) (the-as bone (+ 5888 (scratchpad-object int)))) (set! (-> a2-1 work layout output 0) (the-as uint (+ 2816 (scratchpad-object int)))) (set! (-> a2-1 work layout output 1) (the-as uint (+ 7424 (scratchpad-object int)))) - ;; set up work (set! (-> v1-2 work next-tag dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> v1-2 work next-tag vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> v1-2 work next-tag vif1) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> v1-2 work dma-buf) arg0) (set! (-> v1-2 work sink-group) arg1) - (set! (-> v1-2 work next-merc) (the-as dma-packet 0)) - ) - + (set! (-> v1-2 work next-merc) (the-as dma-packet 0))) ;; reset globals - (let ((v1-3 *merc-globals*)) - (set! (-> v1-3 first) (the-as uint 0)) - (set! (-> v1-3 next) (the-as (pointer uint32) 0)) - ) - + (let ((v1-3 *merc-globals*)) (set! (-> v1-3 first) (the-as uint 0)) (set! (-> v1-3 next) (the-as (pointer uint32) 0))) ;; upload bones program. (#unless PC_PORT - (let ((gp-0 *vu0-dma-list*)) - (let ((v1-4 gp-0)) - (set! (-> v1-4 base) (-> v1-4 data)) - (set! (-> v1-4 end) (&-> v1-4 data-buffer (-> v1-4 allocated-length))) - ) - (dma-buffer-add-vu-function gp-0 bones-vu0-block 0) - (let* ((v1-5 gp-0) - (a0-6 (-> v1-5 base)) - ) - (set! (-> (the-as (pointer int64) a0-6)) #x70000000) - (set! (-> (the-as (pointer int64) a0-6) 1) 0) - (set! (-> v1-5 base) (&+ a0-6 16)) - ) - (.sync.l) - (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0) - ) - ) - + (let ((gp-0 *vu0-dma-list*)) + (let ((v1-4 gp-0)) + (set! (-> v1-4 base) (-> v1-4 data)) + (set! (-> v1-4 end) (&-> v1-4 data-buffer (-> v1-4 allocated-length)))) + (dma-buffer-add-vu-function gp-0 bones-vu0-block 0) + (let* ((v1-5 gp-0) + (a0-6 (-> v1-5 base))) + (set! (-> (the-as (pointer int64) a0-6)) #x70000000) + (set! (-> (the-as (pointer int64) a0-6) 1) 0) + (set! (-> v1-5 base) (&+ a0-6 16))) + (.sync.l) + (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0))) ;; we will use "run" in the shadow queue. Reset that (but don't increment yet, just in case we don't draw shadows) (let ((gp-1 *shadow-queue*)) - (if (>= (-> gp-1 cur-run) (the-as uint 15)) - (format #t "Too many shadow-queues!!~%") - ) + (if (>= (-> gp-1 cur-run) (the-as uint 15)) (format #t "Too many shadow-queues!!~%")) (let ((v1-13 (-> gp-1 run (-> gp-1 cur-run)))) (set! (-> v1-13 first) (the-as dma-packet 0)) - (set! (-> v1-13 next) (the-as (pointer dma-packet) 0)) - ) - ) + (set! (-> v1-13 next) (the-as (pointer dma-packet) 0)))) 0 - (none) - ) + (none)) (defun draw-bones-mtx-calc ((arg0 bone-calculation) (arg1 int) (arg2 bone-calc-flags)) "Add the current work to the bone calculation list." (let ((t2-0 (the-as bone-memory (+ 16 (scratchpad-object int)))) (v1-1 *bone-calculation-list*) - (a3-1 arg0) - ) + (a3-1 arg0)) ;; grab active buffers (let ((t0-0 (-> t2-0 work regs joint-ptr)) (t1-0 (-> t2-0 work regs bone-ptr)) (t2-1 (-> t2-0 work regs num-bones)) - (t3-0 a3-1) - ) + (t3-0 a3-1)) (set! (-> t3-0 flags) arg2) (set! (-> t3-0 num-bones) t2-1) (set! (-> t3-0 matrix-area) (the-as (inline-array matrix) arg1)) (set! (-> t3-0 joints) t0-0) (set! (-> t3-0 bones) t1-0) - (set! (-> t3-0 next) (the-as bone-calculation 0)) - ) + (set! (-> t3-0 next) (the-as bone-calculation 0))) ;; splice into list - (if (nonzero? (-> v1-1 next)) - (set! (-> v1-1 next next) a3-1) - ) - (if (zero? (-> v1-1 first)) - (set! (-> v1-1 first) a3-1) - ) - (set! (-> v1-1 next) a3-1) - ) - (the-as object (&+ arg0 48)) - ) + (if (nonzero? (-> v1-1 next)) (set! (-> v1-1 next next) a3-1)) + (if (zero? (-> v1-1 first)) (set! (-> v1-1 first) a3-1)) + (set! (-> v1-1 next) a3-1)) + (the-as object (&+ arg0 48))) (def-mips2c bones-mtx-calc (function int pointer pointer int object none)) (defmacro .cross.vf (out a b) `(begin - (.outer.product.a.vf acc ,a ,b) - (.outer.product.b.vf ,out ,b ,a acc) - ) - ) + (.outer.product.a.vf acc ,a ,b) + (.outer.product.b.vf ,out ,b ,a acc))) (defun new-bones-mtx-calc-asm ((output (inline-array pris-mtx)) (joints (inline-array joint)) (bones (inline-array bone)) (cam matrix) (count int)) "Compute skinning matrices." @@ -448,10 +364,8 @@ (dotimes (i (- count 1)) (let ((b (-> bones (+ i 1) transform)) (j (-> joints i bind-pose)) - (out (-> output (+ i 1))) - ) - (rlet ( - (tmat0 :class vf) + (out (-> output (+ i 1)))) + (rlet ((tmat0 :class vf) (tmat1 :class vf) (tmat2 :class vf) (tmat3 :class vf) @@ -459,114 +373,96 @@ (nmat1 :class vf) (nmat2 :class vf) (nmat3 :class vf) - (acc :class vf ) - (vf0 :class vf ) - (cam0 :class vf ) - (cam1 :class vf ) - (cam2 :class vf ) - (cam3 :class vf ) - ) - - (init-vf0-vector) - - ;; load bind-pose to tmat: - (.lvf tmat0 (&-> j quad 0)) - (.lvf tmat1 (&-> j quad 1)) - (.lvf tmat2 (&-> j quad 2)) - (.lvf tmat3 (&-> j quad 3)) - - ;; load bone to nmat - (.lvf nmat0 (&-> b quad 0)) - (.lvf nmat1 (&-> b quad 1)) - (.lvf nmat2 (&-> b quad 2)) - (.lvf nmat3 (&-> b quad 3)) - - ;; multiply bone and bind pose, store in tmat - (.mul.x.vf acc nmat0 tmat0) - (.add.mul.y.vf acc nmat1 tmat0 acc) - (.add.mul.z.vf acc nmat2 tmat0 acc) - (.add.mul.w.vf tmat0 nmat3 tmat0 acc) - (.mul.x.vf acc nmat0 tmat1) - (.add.mul.y.vf acc nmat1 tmat1 acc) - (.add.mul.z.vf acc nmat2 tmat1 acc) - (.add.mul.w.vf tmat1 nmat3 tmat1 acc) - (.mul.x.vf acc nmat0 tmat2) - (.add.mul.y.vf acc nmat1 tmat2 acc) - (.add.mul.z.vf acc nmat2 tmat2 acc) - (.add.mul.w.vf tmat2 nmat3 tmat2 acc) - (.mul.x.vf acc nmat0 tmat3) - (.add.mul.y.vf acc nmat1 tmat3 acc) - (.add.mul.z.vf acc nmat2 tmat3 acc) - (.add.mul.w.vf tmat3 nmat3 tmat3 acc) - - ;; compute inverse transpose, storing in nmat. - (.cross.vf nmat0 tmat1 tmat2) - (.cross.vf nmat1 tmat2 tmat0) - (.cross.vf nmat2 tmat0 tmat1) - - ;; dot nmat0 and tmat0 - (.mul.vf acc nmat0 tmat0) - (.add.y.vf acc acc acc :mask #b1) - (.add.z.vf acc acc acc :mask #b1) - - ;; divide! - (.div.vf acc vf0 acc :fsf #b11 :ftf #b0) - - ;; scale nmat: - (.mul.x.vf nmat0 nmat0 acc) - (.mul.x.vf nmat1 nmat1 acc) - (.mul.x.vf nmat2 nmat2 acc) - - ;; load camera - (.lvf cam0 (&-> cam quad 0)) - (.lvf cam1 (&-> cam quad 1)) - (.lvf cam2 (&-> cam quad 2)) - (.lvf cam3 (&-> cam quad 3)) - - ;; multiply tmat by camera - (.mul.x.vf acc cam0 tmat0) - (.add.mul.y.vf acc cam1 tmat0 acc) - (.add.mul.z.vf acc cam2 tmat0 acc) - (.add.mul.w.vf tmat0 cam3 tmat0 acc) - (.mul.x.vf acc cam0 tmat1) - (.add.mul.y.vf acc cam1 tmat1 acc) - (.add.mul.z.vf acc cam2 tmat1 acc) - (.add.mul.w.vf tmat1 cam3 tmat1 acc) - (.mul.x.vf acc cam0 tmat2) - (.add.mul.y.vf acc cam1 tmat2 acc) - (.add.mul.z.vf acc cam2 tmat2 acc) - (.add.mul.w.vf tmat2 cam3 tmat2 acc) - (.mul.x.vf acc cam0 tmat3) - (.add.mul.y.vf acc cam1 tmat3 acc) - (.add.mul.z.vf acc cam2 tmat3 acc) - (.add.mul.w.vf tmat3 cam3 tmat3 acc) - - ;; store tmat - (.svf (&-> out t-mtx quad 0) tmat0) - (.svf (&-> out t-mtx quad 1) tmat1) - (.svf (&-> out t-mtx quad 2) tmat2) - (.svf (&-> out t-mtx quad 3) tmat3) - - ;; multiply nmat - (.mul.x.vf acc cam0 nmat0) - (.add.mul.y.vf acc cam1 nmat0 acc) - (.add.mul.z.vf nmat0 cam2 nmat0 acc) - (.mul.x.vf acc cam0 nmat1) - (.add.mul.y.vf acc cam1 nmat1 acc) - (.add.mul.z.vf nmat1 cam2 nmat1 acc) - (.mul.x.vf acc cam0 nmat2) - (.add.mul.y.vf acc cam1 nmat2 acc) - (.add.mul.z.vf nmat2 cam2 nmat2 acc) - - ;; store nmat - (.svf (&-> out n-mtx quad 0) nmat0) - (.svf (&-> out n-mtx quad 1) nmat1) - (.svf (&-> out n-mtx quad 2) nmat2) - ) - ) - ) - (none) - ) + (acc :class vf) + (vf0 :class vf) + (cam0 :class vf) + (cam1 :class vf) + (cam2 :class vf) + (cam3 :class vf)) + (init-vf0-vector) + ;; load bind-pose to tmat: + (.lvf tmat0 (&-> j quad 0)) + (.lvf tmat1 (&-> j quad 1)) + (.lvf tmat2 (&-> j quad 2)) + (.lvf tmat3 (&-> j quad 3)) + ;; load bone to nmat + (.lvf nmat0 (&-> b quad 0)) + (.lvf nmat1 (&-> b quad 1)) + (.lvf nmat2 (&-> b quad 2)) + (.lvf nmat3 (&-> b quad 3)) + ;; multiply bone and bind pose, store in tmat + (.mul.x.vf acc nmat0 tmat0) + (.add.mul.y.vf acc nmat1 tmat0 acc) + (.add.mul.z.vf acc nmat2 tmat0 acc) + (.add.mul.w.vf tmat0 nmat3 tmat0 acc) + (.mul.x.vf acc nmat0 tmat1) + (.add.mul.y.vf acc nmat1 tmat1 acc) + (.add.mul.z.vf acc nmat2 tmat1 acc) + (.add.mul.w.vf tmat1 nmat3 tmat1 acc) + (.mul.x.vf acc nmat0 tmat2) + (.add.mul.y.vf acc nmat1 tmat2 acc) + (.add.mul.z.vf acc nmat2 tmat2 acc) + (.add.mul.w.vf tmat2 nmat3 tmat2 acc) + (.mul.x.vf acc nmat0 tmat3) + (.add.mul.y.vf acc nmat1 tmat3 acc) + (.add.mul.z.vf acc nmat2 tmat3 acc) + (.add.mul.w.vf tmat3 nmat3 tmat3 acc) + ;; compute inverse transpose, storing in nmat. + (.cross.vf nmat0 tmat1 tmat2) + (.cross.vf nmat1 tmat2 tmat0) + (.cross.vf nmat2 tmat0 tmat1) + ;; dot nmat0 and tmat0 + (.mul.vf acc nmat0 tmat0) + (.add.y.vf acc acc acc :mask #b1) + (.add.z.vf acc acc acc :mask #b1) + ;; divide! + (.div.vf acc vf0 acc :fsf #b11 :ftf #b0) + ;; scale nmat: + (.mul.x.vf nmat0 nmat0 acc) + (.mul.x.vf nmat1 nmat1 acc) + (.mul.x.vf nmat2 nmat2 acc) + ;; load camera + (.lvf cam0 (&-> cam quad 0)) + (.lvf cam1 (&-> cam quad 1)) + (.lvf cam2 (&-> cam quad 2)) + (.lvf cam3 (&-> cam quad 3)) + ;; multiply tmat by camera + (.mul.x.vf acc cam0 tmat0) + (.add.mul.y.vf acc cam1 tmat0 acc) + (.add.mul.z.vf acc cam2 tmat0 acc) + (.add.mul.w.vf tmat0 cam3 tmat0 acc) + (.mul.x.vf acc cam0 tmat1) + (.add.mul.y.vf acc cam1 tmat1 acc) + (.add.mul.z.vf acc cam2 tmat1 acc) + (.add.mul.w.vf tmat1 cam3 tmat1 acc) + (.mul.x.vf acc cam0 tmat2) + (.add.mul.y.vf acc cam1 tmat2 acc) + (.add.mul.z.vf acc cam2 tmat2 acc) + (.add.mul.w.vf tmat2 cam3 tmat2 acc) + (.mul.x.vf acc cam0 tmat3) + (.add.mul.y.vf acc cam1 tmat3 acc) + (.add.mul.z.vf acc cam2 tmat3 acc) + (.add.mul.w.vf tmat3 cam3 tmat3 acc) + ;; store tmat + (.svf (&-> out t-mtx quad 0) tmat0) + (.svf (&-> out t-mtx quad 1) tmat1) + (.svf (&-> out t-mtx quad 2) tmat2) + (.svf (&-> out t-mtx quad 3) tmat3) + ;; multiply nmat + (.mul.x.vf acc cam0 nmat0) + (.add.mul.y.vf acc cam1 nmat0 acc) + (.add.mul.z.vf nmat0 cam2 nmat0 acc) + (.mul.x.vf acc cam0 nmat1) + (.add.mul.y.vf acc cam1 nmat1 acc) + (.add.mul.z.vf nmat1 cam2 nmat1 acc) + (.mul.x.vf acc cam0 nmat2) + (.add.mul.y.vf acc cam1 nmat2 acc) + (.add.mul.z.vf nmat2 cam2 nmat2 acc) + ;; store nmat + (.svf (&-> out n-mtx quad 0) nmat0) + (.svf (&-> out n-mtx quad 1) nmat1) + (.svf (&-> out n-mtx quad 2) nmat2)))) + (none)) (define *use-new-bones* #t) @@ -587,15 +483,11 @@ (vf5 :class vf) (vf6 :class vf) (vf7 :class vf) - (vf8 :class vf) - ) + (vf8 :class vf)) (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))) (let ((v1-8 (the-as bone-memory (+ 16 (scratchpad-object int))))) (+ 16 #x70000000) (set! (-> v1-8 work layout joint 0) (the-as joint (+ 256 (scratchpad-object int)))) @@ -603,21 +495,15 @@ (set! (-> v1-8 work layout bone 0) (the-as bone (+ 1280 (scratchpad-object int)))) (set! (-> v1-8 work layout bone 1) (the-as bone (+ 5888 (scratchpad-object int)))) (set! (-> v1-8 work layout output 0) (the-as uint (+ 2816 (scratchpad-object int)))) - (set! (-> v1-8 work layout output 1) (the-as uint (+ 7424 (scratchpad-object int)))) - ) - (#unless PC_PORT (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x4))) + (set! (-> v1-8 work layout output 1) (the-as uint (+ 7424 (scratchpad-object int))))) + (#unless PC_PORT + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x4))) (let* ((v1-10 *bone-calculation-list*) (gp-0 *identity-matrix*) (s5-0 (-> *math-camera* camera-rot)) - (s4-0 (-> v1-10 first)) - ) + (s4-0 (-> v1-10 first))) (while (nonzero? s4-0) - (let ((v1-13 (if (logtest? (-> s4-0 flags) (bone-calc-flags bncfl01)) - gp-0 - s5-0 - ) - ) - ) + (let ((v1-13 (if (logtest? (-> s4-0 flags) (bone-calc-flags bncfl01)) gp-0 s5-0))) (.lvf vf28 (&-> v1-13 vector 0 quad)) (.lvf vf29 (&-> v1-13 vector 1 quad)) (.lvf vf30 (&-> v1-13 vector 2 quad)) @@ -625,43 +511,30 @@ (.lvf vf25 (&-> v1-13 vector 0 quad)) (.lvf vf26 (&-> v1-13 vector 1 quad)) (.lvf vf27 (&-> v1-13 vector 2 quad)) - - (.mov v1-14 vf27) - ;; hack?? - - (if *use-new-bones* - (new-bones-mtx-calc-asm - (the (inline-array pris-mtx) (-> s4-0 matrix-area)) - (-> s4-0 joints) - (-> s4-0 bones) - v1-13 - (the int (-> s4-0 num-bones))) - (bones-mtx-calc - (the-as int (-> s4-0 matrix-area)) - (the-as pointer (-> s4-0 joints)) - (the-as pointer (-> s4-0 bones)) - (the-as int (-> s4-0 num-bones)) - v1-13 ;; hack, added - ) - ) - ) + (.mov v1-14 vf27) + ;; hack?? + (if *use-new-bones* + (new-bones-mtx-calc-asm (the (inline-array pris-mtx) (-> s4-0 matrix-area)) + (-> s4-0 joints) + (-> s4-0 bones) + v1-13 + (the int (-> s4-0 num-bones))) + (bones-mtx-calc (the-as int (-> s4-0 matrix-area)) + (the-as pointer (-> s4-0 joints)) + (the-as pointer (-> s4-0 bones)) + (the-as int (-> s4-0 num-bones)) + v1-13 ;; hack, added + ))) (when (logtest? (-> s4-0 flags) (bone-calc-flags bncfl00)) (let ((v1-18 (-> s4-0 matrix-area)) (a0-22 (-> s4-0 num-bones)) (f1-0 (-> s4-0 ripple-scale)) (f2-0 (-> s4-0 ripple-y-scale)) (f0-0 (-> s4-0 ripple-normal-scale)) - (a1-9 (-> s4-0 ripple-area)) - ) - (let ((a2-2 f2-0)) - (.mov vf1 a2-2) - ) - (let ((a2-3 f1-0)) - (.mov vf2 a2-3) - ) - (let ((a2-4 f0-0)) - (.mov vf3 a2-4) - ) + (a1-9 (-> s4-0 ripple-area))) + (let ((a2-2 f2-0)) (.mov vf1 a2-2)) + (let ((a2-3 f1-0)) (.mov vf2 a2-3)) + (let ((a2-4 f0-0)) (.mov vf3 a2-4)) (label cfg-8) (.lvf vf5 (&-> v1-18 0 vector 1 quad)) (.lvf vf6 (&-> v1-18 0 vector 3 quad)) @@ -678,10 +551,7 @@ (.sub.vf vf6 vf6 vf4) (set! (-> a1-9 2 quad) a2-6) (.svf (&-> a1-9 1 quad) vf5) - (set! (-> a1-9 5 quad) a3-2) - ) - ) - ) + (set! (-> a1-9 5 quad) a3-2)))) (+! a0-22 -1) (.svf (&-> a1-9 4 quad) vf7) ;(.addiu v1-18 (the-as object v1-18) 128) @@ -689,51 +559,35 @@ (.svf (&-> a1-9 3 quad) vf6) ;;(.addiu (the-as (inline-array vector) a1-9) a1-9 128) (&+! a1-9 128) - (b! (nonzero? a0-22) cfg-8 :delay (.svf (&-> a1-9 -2 quad) vf8)) - ) - 0 - ) - (set! s4-0 (-> s4-0 next)) - ) - ) - (#unless PC_PORT (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x1))) + (b! (nonzero? a0-22) cfg-8 :delay (.svf (&-> a1-9 -2 quad) vf8))) + 0) + (set! s4-0 (-> s4-0 next)))) + (#unless PC_PORT + (set! (-> (the-as dma-bank-control #x1000e000) sqwc) (new 'static 'dma-sqwc :sqwc #x1 :tqwc #x1))) (bone-list-init) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x7b :g #x7b :b #x7b :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x7b :g #x7b :b #x7b :a #x80))) 0 - (none) - ) - ) + (none))) (defun bones-wrapup () (let ((v1-1 (the-as bone-memory (+ 16 (scratchpad-object int))))) (when (nonzero? (-> v1-1 work next-merc)) ;; only add if we actually drew with merc. (let* ((a0-2 (-> v1-1 work dma-buf)) - (a3-0 (-> a0-2 base)) - ) + (a3-0 (-> a0-2 base))) (let ((a1-0 (the-as object (-> a0-2 base)))) (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag)) - (set! (-> a0-2 base) (&+ (the-as pointer a1-0) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (-> v1-1 work sink-group merc-sink bucket) - (the-as pointer (-> v1-1 work next-merc)) - (the-as (pointer dma-tag) a3-0) - ) - ) - ) - ) - (none) - ) + (set! (-> a0-2 base) (&+ (the-as pointer a1-0) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (-> v1-1 work sink-group merc-sink bucket) + (the-as pointer (-> v1-1 work next-merc)) + (the-as (pointer dma-tag) a3-0))))) + (none)) ;;;;;;;;;;;;;;; ;; bone debug @@ -743,48 +597,37 @@ (defun-debug dump-qword ((arg0 qword)) (let ((v1-0 arg0)) - (format - 0 - "~8,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X~%" - v1-0 - (-> v1-0 data 0) - (-> v1-0 data 1) - (-> v1-0 data 2) - (-> v1-0 data 3) - ) - ) + (format 0 + "~8,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X~%" + v1-0 + (-> v1-0 data 0) + (-> v1-0 data 1) + (-> v1-0 data 2) + (-> v1-0 data 3))) 0 - (none) - ) + (none)) (defun-debug dump-mem ((arg0 pointer) (arg1 int)) (dotimes (s4-0 arg1) - (format - 0 - "~8,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X" - (&+ arg0 (* (* s4-0 4) 4)) - (-> (the-as (pointer uint32) (&+ arg0 (* (* s4-0 4) 4)))) - (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 1) 4)))) - (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 2) 4)))) - (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 3) 4)))) - ) - (format - 0 - " ~F ~F ~F ~F ~%" - (-> (the-as (pointer uint32) (&+ arg0 (* (* s4-0 4) 4)))) - (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 1) 4)))) - (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 2) 4)))) - (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 3) 4)))) - ) - ) + (format 0 + "~8,'0X: ~8,'0X ~8,'0X ~8,'0X ~8,'0X" + (&+ arg0 (* (* s4-0 4) 4)) + (-> (the-as (pointer uint32) (&+ arg0 (* (* s4-0 4) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 1) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 2) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 3) 4))))) + (format 0 + " ~F ~F ~F ~F ~%" + (-> (the-as (pointer uint32) (&+ arg0 (* (* s4-0 4) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 1) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 2) 4)))) + (-> (the-as (pointer uint32) (&+ arg0 (* (+ (* s4-0 4) 3) 4)))))) 0 - (none) - ) + (none)) (defun-debug bones-debug () 0 - (none) - ) + (none)) (defun-debug dump-bone-mem () (format 0 "== joints 0 ===========~%") @@ -804,21 +647,21 @@ (dump-mem (the-as pointer (+ 256 #x70000000)) 90) (format 0 "========================~%~%") 0 - (none) - ) - -(define *default-shadow-settings* (new 'static 'shadow-settings - :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) - :fade-dist 409600.0 - ) - ) + (none)) + +(define *default-shadow-settings* + (new 'static + 'shadow-settings + :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) + :fade-dist 409600.0)) (defun draw-bones-shadow ((arg0 draw-control) (arg1 pointer) (arg2 pointer)) ;; (local-vars (ra-0 int)) - ;; the dma packet we'll use for shadow in the end. (let* ((v1-0 (the-as dma-packet (&+ arg2 0))) ;; the shadow to draw @@ -833,71 +676,44 @@ (t0-2 (the-as shadow-dma-packet a2-1)) (t2-0 (-> t1-0 header num-joints)) (t3-0 (-> a3-4 next)) - (t5-2 (if (-> arg0 shadow-ctrl) - (-> arg0 shadow-ctrl settings) - *default-shadow-settings* - ) - ) - (t6-0 (-> t5-2 flags)) - ) + (t5-2 (if (-> arg0 shadow-ctrl) (-> arg0 shadow-ctrl settings) *default-shadow-settings*)) + (t6-0 (-> t5-2 flags))) (-> arg0 cur-lod) (when (zero? (logand t6-0 (shadow-flags disable-fade))) - (if (< (-> t5-2 fade-dist) t4-0) - (set! t6-0 (logior t6-0 (shadow-flags disable-draw))) - ) - ) + (if (< (-> t5-2 fade-dist) t4-0) (set! t6-0 (logior t6-0 (shadow-flags disable-draw))))) (cond ((zero? (logand t6-0 (shadow-flags disable-draw))) (let ((t2-1 (* t2-0 8)) - (t4-4 (-> t1-0 total-size)) - ) + (t4-4 (-> t1-0 total-size))) 0 (set! (-> t0-2 tag dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) (set! (-> t0-2 tag vif0) (new 'static 'vif-tag)) (set! (-> t0-2 tag vif1) (new 'static 'vif-tag)) - (if (nonzero? t3-0) - (set! (-> t3-0 0) (the-as dma-packet t0-2)) - ) - (if (zero? (-> a3-4 first)) - (set! (-> a3-4 first) (the-as dma-packet t0-2)) - ) + (if (nonzero? t3-0) (set! (-> t3-0 0) (the-as dma-packet t0-2))) + (if (zero? (-> a3-4 first)) (set! (-> a3-4 first) (the-as dma-packet t0-2))) (let ((t3-5 (&-> t0-2 tag vif1))) (let ((t6-4 (the-as (inline-array vector) (-> t0-2 settings))) (t7-3 (-> t5-2 center quad)) (t8-0 (-> t5-2 shadow-dir quad)) (t9-0 (-> t5-2 bot-plane quad)) - (ra-0 (-> t5-2 top-plane quad)) - ) + (ra-0 (-> t5-2 top-plane quad))) ;; (.lq ra-0 48 t5-2) (let ((t5-3 (-> t5-2 fade-vec quad))) (set! (-> t6-4 0 quad) t7-3) (set! (-> t6-4 1 quad) t8-0) (set! (-> t6-4 2 quad) t9-0) (set! (-> t6-4 3 quad) ra-0) - (set! (-> t6-4 4 quad) t5-3) - ) - ) - (let ((a0-3 - (the-as - vector - (+ (the-as uint (-> arg0 skeleton bones 0 transform vector 3)) - (* (the-as uint 96) (-> arg0 shadow-joint-index)) - ) - ) - ) - ) + (set! (-> t6-4 4 quad) t5-3))) + (let ((a0-3 (the-as vector + (+ (the-as uint (-> arg0 skeleton bones 0 transform vector 3)) (* (the-as uint 96) (-> arg0 shadow-joint-index)))))) (set! (-> t0-2 settings center x) (-> a0-3 x)) (set! (-> t0-2 settings center y) (-> a0-3 y)) - (set! (-> t0-2 settings center z) (-> a0-3 z)) - ) + (set! (-> t0-2 settings center z) (-> a0-3 z))) (set! (-> t0-2 geo-ref dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int (&-> t1-0 total-size)) :qwc t4-4) - ) + (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int (&-> t1-0 total-size)) :qwc t4-4)) (set! (-> t0-2 geo-ref vif0) (new 'static 'vif-tag)) (set! (-> t0-2 geo-ref vif1) (new 'static 'vif-tag)) - (set! (-> t0-2 mtx-ref dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int (&+ arg1 256)) :qwc t2-1) - ) + (set! (-> t0-2 mtx-ref dma) (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int (&+ arg1 256)) :qwc t2-1)) (set! (-> t0-2 mtx-ref vif0) (new 'static 'vif-tag)) (set! (-> t0-2 mtx-ref vif1) (new 'static 'vif-tag)) (set! (-> t0-2 end-tag dma) (new 'static 'dma-tag :id (dma-tag-id end))) @@ -908,17 +724,8 @@ (set! (-> v1-0 dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (the-as int v0-0))) (set! (-> v1-0 vif0) (new 'static 'vif-tag)) (set! (-> v1-0 vif1) (new 'static 'vif-tag)) - v0-0 - ) - ) - ) - ) - (else - (the-as pointer v1-0) - ) - ) - ) - ) + v0-0)))) + (else (the-as pointer v1-0))))) ;(def-mips2c draw-bones-generic-merc (function draw-control pointer pointer int pointer)) (defun draw-bones-generic-merc ((arg0 draw-control) (arg1 pointer) (arg2 pointer) (arg3 int)) @@ -934,12 +741,10 @@ (sv-96 uint) (sv-112 int) (sv-128 int) - (sv-144 generic-merc-ctrl) - ) + (sv-144 generic-merc-ctrl)) (let ((gp-0 (the-as object (&+ arg2 0)))) (let ((s2-0 (-> arg0 lod-set lod (-> arg0 cur-lod) geo)) - (s0-0 (-> *merc-globals* next)) - ) + (s0-0 (-> *merc-globals* next))) (set! sv-144 (the-as generic-merc-ctrl (&+ arg2 16))) (dotimes (s1-0 (the-as int (-> s2-0 header effect-count))) (when (nonzero? (-> *merc-bucket-info* effect s1-0 use-mercneric)) @@ -950,12 +755,10 @@ (+! (-> *merc-global-stats* mercneric dverts) (-> sv-32 dvert-count)) (when (nonzero? s0-0) (set! (-> s0-0 0) (the-as uint sv-16)) - sv-16 - ) + sv-16) (when (zero? (-> *merc-globals* first)) (set! (-> *merc-globals* first) (the-as uint sv-16)) - sv-16 - ) + sv-16) (set! s0-0 (&-> sv-16 tag vif1)) (quad-copy! (the-as pointer (-> sv-16 lights)) (the-as pointer (-> *merc-bucket-info* light)) 7) (quad-copy! (the-as pointer (-> sv-16 header)) (the-as pointer (-> s2-0 header)) 5) @@ -964,56 +767,34 @@ (set! (-> sv-16 header use-isometric) (the-as uint arg3)) (when (nonzero? arg3) (set! (-> sv-16 header needs-clip) (the-as uint 0)) - 0 - ) + 0) (set! (-> sv-16 header use-attached-shader) (the-as uint 0)) (set! (-> sv-16 header display-triangles) (the-as uint 1)) (set! (-> sv-16 header two-mat-count) (the-as uint 0)) - (set! (-> sv-16 header shader-upload-count) (the-as uint (if (logtest? (-> sv-32 effect-bits) 2) - 1 - 0 - ) - ) - ) + (set! (-> sv-16 header shader-upload-count) (the-as uint (if (logtest? (-> sv-32 effect-bits) 2) 1 0))) (when (nonzero? (-> arg0 death-timer)) - (when (>= (the-as int (- (-> arg0 death-timer-org) (-> arg0 death-timer))) - (the-as int (-> arg0 death-draw-overlap)) - ) + (when (>= (the-as int (- (-> arg0 death-timer-org) (-> arg0 death-timer))) (the-as int (-> arg0 death-draw-overlap))) (set! (-> sv-16 header display-triangles) (the-as uint 0)) - 0 - ) + 0) (when (not (paused?)) (set! (-> sv-16 header two-mat-count) (-> arg0 death-vertex-skip)) (set! (-> sv-16 header death-effect) (-> arg0 death-effect)) (set! (-> sv-16 header two-mat-reuse-count) - (/ (* (-> arg0 death-vertex-skip) (- (-> arg0 death-timer-org) (-> arg0 death-timer))) - (-> arg0 death-timer-org) - ) - ) - ) - ) + (/ (* (-> arg0 death-vertex-skip) (- (-> arg0 death-timer-org) (-> arg0 death-timer))) (-> arg0 death-timer-org))))) (set! (-> sv-16 header query) (the-as basic 0)) (when (logtest? (-> sv-32 effect-bits) 4) (when (-> arg0 ripple) - (if (-> arg0 ripple send-query) - (set! (-> sv-16 header query) (-> arg0 ripple query)) - ) - ) - ) + (if (-> arg0 ripple send-query) (set! (-> sv-16 header query) (-> arg0 ripple query))))) (quad-copy! (the-as pointer (-> sv-16 effect)) (the-as pointer sv-32) 2) (set! sv-48 15) (when (nonzero? (-> sv-32 extra-info)) (when (nonzero? (-> sv-32 extra-info shader-offset)) (set! (-> sv-16 header use-attached-shader) (the-as uint 1)) - (quad-copy! - (the-as pointer (&+ sv-16 240)) - (the-as pointer (+ (the-as uint (-> sv-32 extra-info)) (* (-> sv-32 extra-info shader-offset) 16))) - 5 - ) + (quad-copy! (the-as pointer (&+ sv-16 240)) + (the-as pointer (+ (the-as uint (-> sv-32 extra-info)) (* (-> sv-32 extra-info shader-offset) 16))) + 5) (set! sv-48 (+ sv-48 5)) - sv-48 - ) - ) + sv-48)) (set! (-> sv-16 tag dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc (+ sv-48 -1))) (set! (-> sv-16 tag vif0) (the-as vif-tag sv-48)) (set! (-> sv-16 tag vif1) (new 'static 'vif-tag)) @@ -1027,54 +808,38 @@ (set! sv-128 (asize-of sv-80)) (let ((v1-104 (asize-of sv-64))) ;; (format 0 "~D TAG at #x~X merc size ~D bytes ~D qw~%" sv-112 sv-144 v1-104 (shr v1-104 4)) - (set! (-> sv-144 tag dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int sv-64) :qwc (shr v1-104 4)) - ) + (set! (-> sv-144 tag dma) (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int sv-64) :qwc (shr v1-104 4))) (set! (-> sv-144 tag vif0) (new 'static 'vif-tag)) (set! (-> sv-144 tag vif1) (new 'static 'vif-tag)) (when (nonzero? sv-112) (set! (-> (the-as (pointer vif-tag) s0-0) 0) (the-as vif-tag sv-144)) - (set! s0-0 (&-> sv-144 tag vif1)) - ) + (set! s0-0 (&-> sv-144 tag vif1))) (let ((a0-55 (the-as structure (-> sv-144 lights)))) (dotimes (a1-17 (the-as int (-> sv-80 mat-xfer-count))) (let ((a3-2 (&+ arg1 (* (-> sv-80 mat-dest-data a1-17 matrix-number) 128)))) - (set! (-> (the-as dma-packet a0-55) dma) - (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id ref) :addr (the-as int a3-2)) - ) + (set! (-> (the-as dma-packet a0-55) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id ref) :addr (the-as int a3-2))) ; (let ((vec (the vector (+ (the-as int a3-2) 16)))) ; (format 0 "#x~X #x~X mat ~D: ~f ~f ~f~%" a0-55 a3-2 a1-17 (-> vec x) (-> vec y) (-> vec z)) ; ) - ) (set! (-> (the-as dma-packet a0-55) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-55) vif1) (new 'static 'vif-tag)) - (set! a0-55 (&+ (the-as dma-packet a0-55) 16)) - ) + (set! a0-55 (&+ (the-as dma-packet a0-55) 16))) (set! (-> (the-as dma-packet a0-55) dma) (new 'static 'dma-tag :id (dma-tag-id end))) (set! (-> (the-as dma-packet a0-55) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-55) vif1) (new 'static 'vif-tag)) - (set! sv-144 (the-as generic-merc-ctrl (&+ (the-as dma-packet a0-55) 16))) - ) + (set! sv-144 (the-as generic-merc-ctrl (&+ (the-as dma-packet a0-55) 16)))) (set! sv-80 (the-as merc-fragment-control (&+ (the-as pointer sv-80) sv-128))) - (set! sv-64 (the-as merc-fragment (&+ (the-as pointer sv-64) v1-104))) - ) + (set! sv-64 (the-as merc-fragment (&+ (the-as pointer sv-64) v1-104)))) sv-64 - (set! sv-112 (+ sv-112 1)) - ) - ) - ) - (set! (-> *merc-globals* next) s0-0) - ) - (set! (-> (the-as dma-packet gp-0) dma) - (new 'static 'dma-tag :id (dma-tag-id next) :addr (the-as int sv-144)) - ) + (set! sv-112 (+ sv-112 1))))) + (set! (-> *merc-globals* next) s0-0)) + (set! (-> (the-as dma-packet gp-0) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (the-as int sv-144))) (set! (-> (the-as dma-packet gp-0) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet gp-0) vif1) (new 'static 'vif-tag)) - ) + (set! (-> (the-as dma-packet gp-0) vif1) (new 'static 'vif-tag))) 0 - (the-as pointer sv-144) - ) + (the-as pointer sv-144)) + ;; draw-boes-merc ;; draw-bones-check-longest-edge ;; draw-bones-check-longest-edgei-asm @@ -1082,15 +847,14 @@ ;; draw-bones-hud (def-mips2c draw-bones-merc (function draw-control object object int int pointer)) + (def-mips2c draw-bones-check-longest-edge-asm (function draw-control float symbol)) (defmacro store-qw (addr val) - `(set! (-> (the-as (pointer uint128) ,addr)) (the-as uint128 ,val)) - ) + `(set! (-> (the-as (pointer uint128) ,addr)) (the-as uint128 ,val))) (defmacro store-u32 (addr val) - `(set! (-> (the-as (pointer uint32) ,addr)) ,val) - ) + `(set! (-> (the-as (pointer uint32) ,addr)) ,val)) (defun pc-merc-blend-shape ((pd process-drawable) (blerc-weights-out (pointer float))) "PC implementation to get blerc weights as floats and avoid the u16 rounding. @@ -1099,21 +863,15 @@ after the animation finishes - it leaves `blend-shape-valid` set after `blend-shape` is cleared causing one more round of merc-blend-shape to run with hardcoded weights of 0. " - (when (or (not (-> pd skel)) - (zero? (-> pd skel)) - ) - (return #f) - ) - + (when (or (not (-> pd skel)) (zero? (-> pd skel))) + (return #f)) (let* ((jc-channel (-> pd skel root-channel 0)) (anim (-> jc-channel frame-group)) - (got-weights #f) - ) + (got-weights #f)) (when (and anim (> (-> pd skel active-channels) 0) (zero? (-> pd draw cur-lod)) - (logtest? (-> pd skel status) (janim-status blerc)) - ) + (logtest? (-> pd skel status) (janim-status blerc))) (let ((shape-anim (-> anim blerc-data))) (when shape-anim (let* ((mctrl (-> pd draw mgeo)) @@ -1128,34 +886,16 @@ ((< frame-i (+ (-> anim data 0 length) -1)) (let* ((frame-2-data (&+ frame-1-data a2-1)) (frame-2-mult (* 64.0 (- frame-f (the float frame-i)))) - (frame-1-mult (- 64.0 frame-2-mult)) - ) + (frame-1-mult (- 64.0 frame-2-mult))) (set! got-weights #t) (dotimes (i (the-as int a2-1)) (set! (-> blerc-weights-out i) - (+ (* (the float (- (-> frame-1-data i) 64)) frame-1-mult) - (* (the float (- (-> frame-2-data i) 64)) frame-2-mult) - ) - ) - ) - ) - ) + (+ (* (the float (- (-> frame-1-data i) 64)) frame-1-mult) (* (the float (- (-> frame-2-data i) 64)) frame-2-mult)))))) (else - (set! got-weights #t) - (dotimes (a3-7 num-targets) - (set! (-> blerc-weights-out a3-7) (the float (* (+ (-> (the-as (pointer uint8) (&+ frame-1-data a3-7))) -64) 64))) - ) - ) - ) - ) - ) - - ) - ) - ) - got-weights - ) - ) + (set! got-weights #t) + (dotimes (a3-7 num-targets) + (set! (-> blerc-weights-out a3-7) (the float (* (+ (-> (the-as (pointer uint8) (&+ frame-1-data a3-7))) -64) 64))))))))))) + got-weights)) ;; name (128 char, 8 qw) ;; lights (7 qw x 1) @@ -1169,92 +909,67 @@ :bitfield #t (update-verts 0) (disable-fog 1) - (pc-blerc 2) - ) + (pc-blerc 2)) (deftype pc-merc-flags (structure) - ((enable-mask uint64) + ((enable-mask uint64) (ignore-alpha-mask uint64) - (effect-count uint8) - (bit-flags pc-merc-bits) - ) - ) + (effect-count uint8) + (bit-flags pc-merc-bits))) (defun draw-control-uses-water-bucket ((dc draw-control)) "Does this draw control use a water bucket?" (let ((sg (-> dc sink-group))) (dotimes (i 3) - (let ((lev (-> *level* level i))) - (when lev - (when (= sg (-> lev water-tex-foreground-sink-group)) - (return #t) - ) - ) - ) - ) - #f - ) - ) + (let ((lev (-> *level* level i))) (when lev (when (= sg (-> lev water-tex-foreground-sink-group)) (return #t))))) + #f)) (defun pc-merc-draw-request ((dc draw-control) (dma-buf pointer) (matrix-buf pointer) (update-verts symbol) (blercs (pointer float))) (let ((start-packet (the-as dma-packet dma-buf)) (qwc-total 0)) ;; merc draw asm will check this. (when (zero? (-> (scratchpad-object terrain-context) work foreground bone-mem work next-merc)) - (set! (-> (scratchpad-object terrain-context) work foreground bone-mem work next-merc) start-packet) - ) + (set! (-> (scratchpad-object terrain-context) work foreground bone-mem work next-merc) start-packet)) (set! (-> start-packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> start-packet vif0) (new 'static 'vif-tag)) (set! (-> start-packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) (set! dma-buf (the pointer (&+ start-packet 16))) - - ;; NAME: 128 char, 8 qw (let ((data-ptr (the-as (pointer uint128) dma-buf))) - (charp<-string (the (pointer uint8) (&-> data-ptr 0)) (-> dc mgeo name)) - ) + (charp<-string (the (pointer uint8) (&-> data-ptr 0)) (-> dc mgeo name))) (&+! dma-buf (* 16 8)) (+! qwc-total 8) - ;; LIGHTS: (quad-copy! dma-buf (the pointer (-> *merc-bucket-info* light)) 7) (&+! dma-buf (* 16 7)) (+! qwc-total 7) - (let ((uses-water (draw-control-uses-water-bucket dc))) ;; tell PC renderer if we're in a water bucket or not (has different settings.) (set! (-> (the (pointer uint64) dma-buf)) (if uses-water 1 0)) (&+! dma-buf 16) - (+! qwc-total 1) - ) + (+! qwc-total 1)) (let ((matrix-slot-string (the (pointer uint8) dma-buf)) ;; matrix slot list (so PC knows what order they come in) (enable-mask 0) (ignore-alpha-mask 0) - (matrix-out-idx 0) - ) + (matrix-out-idx 0)) (&+! dma-buf (* 16 8)) (+! qwc-total 8) ;; flag of matrices we've already transferred and can de-dup (let ((transferred-matrices (new 'stack-no-clear 'array 'uint8 128))) - (dotimes (i 128) (set! (-> transferred-matrices i) 0)) - + (dotimes (i 128) + (set! (-> transferred-matrices i) 0)) (let ((merc-ctrl (-> dc lod (-> dc cur-lod) geo))) - ;; loop to: grab matrices and populate flags (dotimes (effect-idx (-> merc-ctrl header effect-count)) (when (zero? (-> *merc-bucket-info* effect effect-idx use-mercneric)) (logior! enable-mask (ash 1 effect-idx)) (when (nonzero? (-> *merc-bucket-info* effect effect-idx ignore-alpha)) - (logior! ignore-alpha-mask (ash 1 effect-idx)) - ) + (logior! ignore-alpha-mask (ash 1 effect-idx))) (let* ((effect (-> merc-ctrl effect effect-idx)) - (frag (-> effect frag-ctrl)) - ) + (frag (-> effect frag-ctrl))) (dotimes (frag-idx (-> effect frag-count)) (dotimes (mat-xfer-idx (-> frag mat-xfer-count)) (let ((mat-idx (-> frag mat-dest-data mat-xfer-idx matrix-number))) - (if (>= mat-idx 128) - (break!) - ) + (if (>= mat-idx 128) (break!)) (when (zero? (-> transferred-matrices mat-idx)) ;; transfer it! (set! (-> transferred-matrices mat-idx) 1) @@ -1263,85 +978,52 @@ (set! (-> (the (pointer pointer) dma-buf)) (&+ matrix-buf (* 128 mat-idx))) ;(quad-copy! dma-buf (&+ matrix-buf (* 128 mat-idx)) 7) (&+! dma-buf 16) - (+! qwc-total 1) - ) - ) - ) + (+! qwc-total 1)))) (&+! frag (* 2 (-> frag mat-xfer-count))) - (&+! frag (size-of merc-fragment-control)) - ) - ) - ) - ) ;; end effect loop - + (&+! frag (size-of merc-fragment-control)))))) ;; end effect loop ;; end matrix string (while (< matrix-out-idx 128) (set! (-> matrix-slot-string matrix-out-idx) #xff) - (+! matrix-out-idx 1) - ) - + (+! matrix-out-idx 1)) ;; flags (let ((flags (the (pc-merc-flags) dma-buf))) (set! (-> flags effect-count) (-> merc-ctrl header effect-count)) (set! (-> flags bit-flags) (the pc-merc-bits 0)) (when update-verts (if (= update-verts 'blerc) - (logior! (-> flags bit-flags) (pc-merc-bits pc-blerc)) - (logior! (-> flags bit-flags) (pc-merc-bits update-verts)) - ) - ) + (logior! (-> flags bit-flags) (pc-merc-bits pc-blerc)) + (logior! (-> flags bit-flags) (pc-merc-bits update-verts)))) (set! (-> flags enable-mask) enable-mask) - (set! (-> flags ignore-alpha-mask) ignore-alpha-mask) - ) + (set! (-> flags ignore-alpha-mask) ignore-alpha-mask)) (&+! dma-buf (* 16 2)) (+! qwc-total 2) - ;; include blerc weights. (when (= update-verts 'blerc) (mem-copy! dma-buf blercs (* 40 4)) (&+! dma-buf (* 40 4)) - (+! qwc-total 10) - ) - + (+! qwc-total 10)) ;; fades (let ((fades (the (pointer uint32) dma-buf))) (dotimes (i (-> merc-ctrl header effect-count)) - (set! (-> fades i) (the-as uint (-> *merc-bucket-info* effect i color-fade))) - ) - ) + (set! (-> fades i) (the-as uint (-> *merc-bucket-info* effect i color-fade))))) (let ((num-fades (/ (+ (-> merc-ctrl header effect-count) 3) 4))) (&+! dma-buf (* 16 num-fades)) - (+! qwc-total num-fades) - ) - + (+! qwc-total num-fades)) ;; merc ptrs (let ((merc-ptrs (the (pointer object) dma-buf))) (dotimes (i (-> merc-ctrl header effect-count)) - (set! (-> merc-ptrs i) (-> merc-ctrl effect i)) - ) - ) + (set! (-> merc-ptrs i) (-> merc-ctrl effect i)))) (let ((num-fades (/ (+ (-> merc-ctrl header effect-count) 3) 4))) (&+! dma-buf (* 16 num-fades)) - (+! qwc-total num-fades) - ) - - ) - ) - ) - + (+! qwc-total num-fades))))) (set! (-> start-packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc qwc-total)) - ;; merc linking needs this. (let ((packet (the-as dma-packet dma-buf))) (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 0)) (set! (-> packet vif0) (new 'static 'vif-tag)) (set! (-> packet vif1) (new 'static 'vif-tag)) - (set! dma-buf (the pointer (&+ packet 16))) - ) - - dma-buf - ) - ) + (set! dma-buf (the pointer (&+ packet 16)))) + dma-buf)) ;; when set, render some environment mapped stuff with jak 2's emerc. ;; this is much faster, and does significantly speed up the game thread on finalboss. @@ -1354,28 +1036,40 @@ (define *use-fp-blerc* #t) (define *texscroll-force-generic* #f) + (define *ripple-force-generic* #f) (defun draw-bones ((arg0 draw-control) (dma-buf dma-buffer) (arg2 float)) "Main draw function for all bone-related renderers. Will set up merc, generic and shadow. and also add the bones to the calculation list." - (local-vars (a0-16 int) (a0-17 int) (a0-62 int) (a2-10 int) (a2-12 int) - (used-merc int) (used-mercneric int) (sv-144 ripple-control)) - (rlet ((vf1 :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) (acc :class vf)) - + (local-vars + (a0-16 int) + (a0-17 int) + (a0-62 int) + (a2-10 int) + (a2-12 int) + (used-merc int) + (used-mercneric int) + (sv-144 ripple-control)) + (rlet ((vf1 :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) + (acc :class vf)) ;; compute the number of bones. I believe this num-joints doesn't count align/prejoint/main, so each needs a bone (let* ((num-bones (+ (-> arg0 mgeo num-joints) 3)) ;; we'll use 128-bytes/bone. (bone-data-size (* num-bones 128)) ;; temp work - (spr-work (scratchpad-object terrain-context)) - ) - + (spr-work (scratchpad-object terrain-context))) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; BONE CALC SETUP ;;;;;;;;;;;;;;;;;;;;;;;;; - ;; next, grab some DMA data. ;; we'll also use this for storing bone calculation entries. (let* ((dma-data-start (-> dma-buf base)) @@ -1383,23 +1077,18 @@ (bone-calc-entry (the-as bone-calculation (&+ dma-data-start 16))) ;; after that we'll use the space for storing bone matrices. ;; we won't calculate them now, but instead we'll tell the *bone-calculation-list* to put them here later. - (matrix-data (the-as object (&+ dma-data-start 64))) - ) - + (matrix-data (the-as object (&+ dma-data-start 64)))) ;; align the matrix data to 64 bytes (we know it is at least 16 byte aligned) (let ((a2-1 (logand (the-as int matrix-data) 48))) (b! (zero? a2-1) cfg-2 :delay (nop!)) - (set! matrix-data (&- (&+ (the-as pointer matrix-data) 64) (the-as uint a2-1))) - ) + (set! matrix-data (&- (&+ (the-as pointer matrix-data) 64) (the-as uint a2-1)))) (label cfg-2) - ;; start recording perf stats. ;; this just counts the stats for adding the calculation to the linked list. ;; which is really fast and not worth profiling. ;; I suspect the bone calculation originally was here, ;; but they moved it and forgot to move the performance counters too. (reset! (-> *perf-stats* data (perf-stat-bucket bones))) - ;; figure out where everything will be (let ((a2-6 (the-as bone-regs (+ 240 (scratchpad-object int))))) ;; the joints are stored in the static art data @@ -1407,99 +1096,77 @@ ;; the final bones output used by the rest of the engine is stored in ;; the process-drawable's skeleton (set! (-> a2-6 bone-ptr) (-> arg0 skeleton bones)) - (set! (-> a2-6 num-bones) (the-as uint num-bones)) - ) - + (set! (-> a2-6 num-bones) (the-as uint num-bones))) ;; Add the bone calculation to the list, to be done later. ;; this will write to both the "matrix data" and the bones array. (let ((t0-2 matrix-data) (t1-0 0) (t4-0 (the-as bone-memory (+ 16 (scratchpad-object int)))) (a2-8 *bone-calculation-list*) - (a3-8 bone-calc-entry) - ) + (a3-8 bone-calc-entry)) (let ((t2-0 (-> t4-0 work regs joint-ptr)) (t3-0 (-> t4-0 work regs bone-ptr)) (t4-1 (-> t4-0 work regs num-bones)) - (t5-0 a3-8) - ) + (t5-0 a3-8)) (set! (-> t5-0 flags) (the-as bone-calc-flags t1-0)) (set! (-> t5-0 num-bones) t4-1) (set! (-> t5-0 matrix-area) (the-as (inline-array matrix) t0-2)) (set! (-> t5-0 joints) t2-0) (set! (-> t5-0 bones) t3-0) - (set! (-> t5-0 next) (the-as bone-calculation 0)) - ) - (if (nonzero? (-> a2-8 next)) - (set! (-> a2-8 next next) a3-8) - ) - (if (zero? (-> a2-8 first)) - (set! (-> a2-8 first) a3-8) - ) - (set! (-> a2-8 next) a3-8) - ) + (set! (-> t5-0 next) (the-as bone-calculation 0))) + (if (nonzero? (-> a2-8 next)) (set! (-> a2-8 next next) a3-8)) + (if (zero? (-> a2-8 first)) (set! (-> a2-8 first) a3-8)) + (set! (-> a2-8 next) a3-8)) (&+ bone-calc-entry 48) ;; end stat collection (read! (-> *perf-stats* data (perf-stat-bucket bones))) - ;; set up the dma buffer (let ((s2-0 (the-as object (+ (the-as uint matrix-data) bone-data-size)))) (let ((a0-2 (shl (the-as int s2-0) 32))) (set! (-> (the-as (pointer uint128) dma-data-start)) - (logior (-> spr-work work foreground bone-mem work next-tag quad) a0-2) - ) + (logior (-> spr-work work foreground bone-mem work next-tag quad) a0-2)) ;; NOTE: does this work correctly for the upper 64 bits?? ) - ;; only data-format 1 is supported. (when (= (-> arg0 data-format) 1) - ;; we'll be filling out the *merc-bucket-info*, then calling the draw asm functions ;; the asm functions read *merc-bucket-info* and generate DMA data as needed. - ;;;;;;;;;;;;;;;;;;;;;;;;; ;; LIGHT SETUP ;;;;;;;;;;;;;;;;;;;;;;;;; - ;; lights should be converted to a single vu-lights already, by the drawing code. ;; it stashes lights on the scratchpad. We'll load these here and transform them. ;; the result goes in the merc-bucket-info. (let ((v1-6 (the-as vu-lights (+ 64 (scratchpad-object int)))) - (a0-7 (-> *merc-bucket-info* light)) - ) + (a0-7 (-> *merc-bucket-info* light))) ;; merc does drawing in a camera rotated frame, so multiply by inv-rot to have the right directions ;; relative to the camera. (let ((a1-8 (-> *math-camera* inv-camera-rot))) (.lvf vf4 (&-> a1-8 vector 0 quad)) (.lvf vf5 (&-> a1-8 vector 1 quad)) - (.lvf vf6 (&-> a1-8 vector 2 quad)) - ) + (.lvf vf6 (&-> a1-8 vector 2 quad))) (.lvf vf1 (&-> v1-6 direction 0 quad)) (.lvf vf2 (&-> v1-6 direction 1 quad)) (.lvf vf3 (&-> v1-6 direction 2 quad)) ;;(.vcallms 54) ;; manually ported to goal here. - ;mulax.xyzw ACC, vf01, vf04 (.mul.x.vf acc vf1 vf4) ;madday.xyzw ACC, vf02, vf04 (.add.mul.y.vf acc vf2 vf4 acc) ;maddz.xyzw vf07, vf03, vf04 (.add.mul.z.vf vf7 vf3 vf4 acc) - ;mulax.xyzw ACC, vf01, vf05 (.mul.x.vf acc vf1 vf5) ;madday.xyzw ACC, vf02, vf05 (.add.mul.y.vf acc vf2 vf5 acc) ;maddz.xyzw vf08, vf03, vf05 (.add.mul.z.vf vf8 vf3 vf5 acc) - ;mulax.xyzw ACC, vf01, vf06 (.mul.x.vf acc vf1 vf6) ;madday.xyzw ACC, vf02, vf06 :e (.add.mul.y.vf acc vf2 vf6 acc) ;maddz.xyzw vf09, vf03, vf06 (.add.mul.z.vf vf9 vf3 vf6 acc) - (let ((a1-9 (-> v1-6 color 0 quad))) (let ((a2-14 (-> v1-6 color 1 quad))) (let ((a3-11 (-> v1-6 color 2 quad))) @@ -1507,27 +1174,15 @@ (set! (-> a0-7 color 0 quad) a1-9) (set! (-> a0-7 color 1 quad) a2-14) (set! (-> a0-7 color 2 quad) a3-11) - (set! (-> a0-7 ambient quad) v1-7) - ) - ) - ) - ) + (set! (-> a0-7 ambient quad) v1-7))))) (.svf (&-> a0-7 direction 0 quad) vf7) (.svf (&-> a0-7 direction 1 quad) vf8) (.svf (&-> a0-7 direction 2 quad) vf9) - (set! (-> a0-7 direction 1 w) (the-as float 0)) - ) - + (set! (-> a0-7 direction 1 w) (the-as float 0))) ;; the drawable system's culling already knows if we need clipping or not, ;; we just trust it. Anything needing clip will have this set. It might set it for ;; meshes that actually don't need clipping. - (set! (-> *merc-bucket-info* needs-clip) - (if (logtest? (-> arg0 status) (draw-status needs-clip)) - 1 - 0 - ) - ) - + (set! (-> *merc-bucket-info* needs-clip) (if (logtest? (-> arg0 status) (draw-status needs-clip)) 1 0)) ;; Now, we need to decide on merc settings. Default to nothing. (set! used-merc 0) (set! used-mercneric 0) @@ -1538,108 +1193,82 @@ ;; if we're really out of bounds, mercprime will fail, and we need to fall back to mercneric ;; in order to do clipping. (set! (-> *merc-bucket-info* must-use-mercneric-for-clip) 0) - ;;;;;;;;;;;;;;;;;;; ;; CLIPPING TEST ;; in the PC port merc2 renderer, we handle clipping perfectly without any special flags, and it's the fastest. ;; so we only need to worry about mercneric/mercprime if we want to maintain backward compatibility with original merc (#when BACKWARD_COMPAT_MERC_CLIP - (when (logtest? (-> arg0 status) (draw-status needs-clip)) - ;; we can either clip with "mercprime" (part of merc), or fall back to generic. - ;; the generic approach always works, but is slower, so we try to use mercprime. - ;; the user must provide a longest edge length, and we must pass an edge check (fails if close to camera) - (cond - ((nonzero? (-> arg0 longest-edge)) - ;; check to see if the edge will be too long: - (if (draw-bones-check-longest-edge-asm arg0 arg2) - (set! (-> *merc-bucket-info* need-mercprime-if-merc) 1) ;; use mercprime! - (set! (-> *merc-bucket-info* must-use-mercneric-for-clip) 1) ;; failed, use generic and actually scissor - ) - ) - (else - ;; in cases where no longest edge is set, fall back to mercneric for clipping always - (set! (-> *merc-bucket-info* must-use-mercneric-for-clip) 1) - ) - ) - ) - ) - + (when (logtest? (-> arg0 status) (draw-status needs-clip)) + ;; we can either clip with "mercprime" (part of merc), or fall back to generic. + ;; the generic approach always works, but is slower, so we try to use mercprime. + ;; the user must provide a longest edge length, and we must pass an edge check (fails if close to camera) + (cond + ((nonzero? (-> arg0 longest-edge)) + ;; check to see if the edge will be too long: + (if (draw-bones-check-longest-edge-asm arg0 arg2) + (set! (-> *merc-bucket-info* need-mercprime-if-merc) 1) ;; use mercprime! + (set! (-> *merc-bucket-info* must-use-mercneric-for-clip) 1) ;; failed, use generic and actually scissor + )) + (else + ;; in cases where no longest edge is set, fall back to mercneric for clipping always + (set! (-> *merc-bucket-info* must-use-mercneric-for-clip) 1))))) ;; grab the geometry at the appropriate level of detail. (let ((geom (-> arg0 lod-set lod (-> arg0 cur-lod) geo)) ;; merc2 can't handle all cases of the original merc, so we add this fallback on PC. (pc-force-mercneric #f) ;; if pc rendering code needs to update merc vertices (pc-merc-vtx-update #f) - (blerc-weights (new 'stack-no-clear 'array 'float 40)) - ) + (blerc-weights (new 'stack-no-clear 'array 'float 40))) ;; loop over effects, and set them up/pick renderers. (dotimes (effect-idx (the-as int (-> geom header effect-count))) - ;; check if this "effect" uses texture scrolling (when (logtest? (-> geom effect effect-idx effect-bits) 1) ;; grab the extra info for it: (let* ((v1-35 (-> geom effect effect-idx extra-info)) - (v1-36 (the-as mei-texture-scroll (+ (the-as uint v1-35) (* (-> v1-35 texture-scroll-offset) 16)))) - ) + (v1-36 (the-as mei-texture-scroll (+ (the-as uint v1-35) (* (-> v1-35 texture-scroll-offset) 16))))) (when (< arg2 (-> v1-36 max-dist)) ;; in range to draw? ;; do scrolling. (if *texscroll-force-generic* - (set! pc-force-mercneric #t) ;; use generic for texscroll - (set! pc-merc-vtx-update #t) ;; use merc2 for texscroll - ) - (texscroll-make-request (-> geom effect effect-idx)) + (set! pc-force-mercneric #t) ;; use generic for texscroll + (set! pc-merc-vtx-update #t) ;; use merc2 for texscroll ) - ) - ) - + (texscroll-make-request (-> geom effect effect-idx))))) ;; check if this effect uses "ripple" (when (logtest? (-> geom effect effect-idx effect-bits) 4) (when (-> arg0 ripple) ;; fall back to generic if there's a ripple query to respond to. - (if (or *ripple-force-generic* (-> arg0 ripple query)) - (set! pc-force-mercneric #t) - (set! pc-merc-vtx-update #t) - ) + (if (or *ripple-force-generic* (-> arg0 ripple query)) (set! pc-force-mercneric #t) (set! pc-merc-vtx-update #t)) (set! sv-144 (-> arg0 ripple)) (let* ((f1-4 (/ (- (-> sv-144 far-fade-dist) arg2) (- (-> sv-144 far-fade-dist) (-> sv-144 close-fade-dist)))) - (f1-6 (#if PC_PORT (if (and *pc-settings* (-> *pc-settings* force-envmap?)) 1.0 (fmax 0.0 (fmin 1.0 f1-4))) - (fmax 0.0 (fmin 1.0 f1-4)))) + (f1-6 (#if PC_PORT + (if (and *pc-settings* (-> *pc-settings* force-envmap?)) 1.0 (fmax 0.0 (fmin 1.0 f1-4))) + (fmax 0.0 (fmin 1.0 f1-4)))) (f0-4 f1-6) - (f30-0 (* f1-6 (-> sv-144 global-scale))) - ) + (f30-0 (* f1-6 (-> sv-144 global-scale)))) (set! (-> sv-144 faded-scale) f30-0) (let ((f1-9 (/ f30-0 (* 128.0 (-> geom header xyz-scale))))) 0 (set! a0-16 (* num-bones 128)) (let ((v1-56 #x20000000)) - (set! a0-17 (+ a0-16 (the-as int s2-0)));(.addu a0-17 a0-16 s2-0) + (set! a0-17 (+ a0-16 (the-as int s2-0))) ;(.addu a0-17 a0-16 s2-0) (logand! a0-17 #xffffffff) ;(s.q! s2-0 v1-56) - (store-qw s2-0 v1-56) - ) + (store-qw s2-0 v1-56)) (let ((v1-57 (+ a0-17 16))) ;(s.w! (+ s2-0 4) v1-57) - (store-u32 (&+ (the pointer s2-0) 4) v1-57) - ) + (store-u32 (&+ (the pointer s2-0) 4) v1-57)) (set! matrix-data (&+ (the pointer s2-0) 16)) (let ((v1-59 (-> *bone-calculation-list* next))) (logior! (-> v1-59 flags) (bone-calc-flags bncfl00)) (set! (-> v1-59 ripple-scale) f30-0) (set! (-> v1-59 ripple-y-scale) f1-9) (set! (-> v1-59 ripple-normal-scale) (* f0-4 (-> sv-144 individual-normal-scale))) - (set! (-> v1-59 ripple-area) (the-as (inline-array vector) matrix-data)) - ) - ) + (set! (-> v1-59 ripple-area) (the-as (inline-array vector) matrix-data)))) (set! (-> dma-buf base) (the-as pointer (-> (the-as (pointer uint32) s2-0) 1))) (set! s2-0 (-> dma-buf base)) (if (not (and (= f30-0 0.0) (= (-> sv-144 last-frame-scale) 0.0))) - (ripple-make-request (the-as ripple-wave (-> sv-144 waveform)) (-> geom effect effect-idx)) - ) - (set! (-> sv-144 last-frame-scale) f30-0) - ) - ) - ) - + (ripple-make-request (the-as ripple-wave (-> sv-144 waveform)) (-> geom effect effect-idx))) + (set! (-> sv-144 last-frame-scale) f30-0)))) ;; additional check on PC to force mercneric for blend shapes (#when PC_PORT (let* ((pd (the process-drawable (-> arg0 process))) @@ -1647,40 +1276,26 @@ (when (nonzero? jc) (when (logtest? (-> jc status) (janim-status blerc)) (if *blerc-hack* - (if *use-fp-blerc* - (set! pc-merc-vtx-update 'blerc) ;; C++ blerc - (set! pc-merc-vtx-update #t) ;; GOAL blerc + merc - ) - (set! pc-force-mercneric #t) ;; GOAL blerc + generic + (if *use-fp-blerc* + (set! pc-merc-vtx-update 'blerc) ;; C++ blerc + (set! pc-merc-vtx-update #t) ;; GOAL blerc + merc ) - ) - ) - ) - + (set! pc-force-mercneric #t) ;; GOAL blerc + generic + )))) (when (= pc-merc-vtx-update 'blerc) - (unless - (pc-merc-blend-shape (the process-drawable (-> arg0 process)) blerc-weights) - (set! pc-merc-vtx-update #f) - ) - ) - ) - + (unless (pc-merc-blend-shape (the process-drawable (-> arg0 process)) blerc-weights) + (set! pc-merc-vtx-update #f)))) ;; additional in pc to make envmap fade 0 when envmap is not used (let ((a0-36 (the-as object (-> *merc-bucket-info* effect effect-idx)))) (dotimes (a2-15 4) - (set! (-> (the-as (pointer int8) a0-36) a2-15) 0) - ) - ) - - + (set! (-> (the-as (pointer int8) a0-36) a2-15) 0))) ;; final mercneric checks (cond ((nonzero? (-> arg0 death-timer)) ;; death effect? ;; use mercneric always! (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 1)) (set! used-mercneric 1) - used-mercneric - ) + used-mercneric) ((nonzero? (-> geom effect effect-idx envmap-usage)) ;; if we need envmap, set it up. (let* ((v1-83 (-> geom effect effect-idx extra-info)) @@ -1688,108 +1303,68 @@ (v1-84 (the-as structure (+ (the-as uint v1-83) (* (-> v1-83 envmap-tint-offset) 16)))) ;; the envmap effect fades away at a certain distance (f1-12 (-> (the-as mei-envmap-tint v1-84) fade0)) - (f0-8 (-> (the-as mei-envmap-tint v1-84) fade1)) - ) + (f0-8 (-> (the-as mei-envmap-tint v1-84) fade1))) ;; compute and saturate the envmap effect strength (let ((f0-9 (+ (* f1-12 arg2) f0-8))) - (if (< 1.0 f0-9) - (set! f0-9 1.0) - ) - (if (< f0-9 0.0) - (set! f0-9 0.0) - ) + (if (< 1.0 f0-9) (set! f0-9 1.0)) + (if (< f0-9 0.0) (set! f0-9 0.0)) (with-pc - (if (-> *pc-settings* force-envmap?) - (set! f0-9 1.0))) - + (if (-> *pc-settings* force-envmap?) (set! f0-9 1.0))) (cond ;; do envmap stuff if we are using generic anyway, or our strength is > 0. ((or (nonzero? (-> *merc-bucket-info* must-use-mercneric-for-clip)) (< 0.0 f0-9) pc-force-mercneric) - ;; multiply colors by sun tint. (let ((v1-85 (&-> (the-as merc-extra-info v1-84) dummy 4)) - (a0-36 (the-as object (-> *merc-bucket-info* effect effect-idx))) - ) + (a0-36 (the-as object (-> *merc-bucket-info* effect effect-idx)))) (let ((a1-16 (-> *time-of-day-context* current-sun env-color)) - (f0-10 (* 0.0078125 f0-9)) - ) + (f0-10 (* 0.0078125 f0-9))) (dotimes (a2-15 3) - (set! (-> (the-as (pointer int8) a0-36) a2-15) - (the int (* f0-10 (-> a1-16 data a2-15) (the float (-> v1-85 a2-15)))) - ) - ) - ) - (set! (-> (the-as (pointer uint8) a0-36) 3) (the-as uint 0)) - ) + (set! (-> (the-as (pointer int8) a0-36) a2-15) (the int (* f0-10 (-> a1-16 data a2-15) (the float (-> v1-85 a2-15))))))) + (set! (-> (the-as (pointer uint8) a0-36) 3) (the-as uint 0))) (cond ((and *emerc-hack* (not pc-force-mercneric)) - (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 0)) - (set! (-> *merc-bucket-info* effect effect-idx ignore-alpha) (the-as uint 1)) - (set! used-merc 1) - ) + (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 0)) + (set! (-> *merc-bucket-info* effect effect-idx ignore-alpha) (the-as uint 1)) + (set! used-merc 1)) (else - ;; env mapping, so use mercneric. - (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 1)) - (set! used-mercneric 1) - used-mercneric - ) - ) - - ) + ;; env mapping, so use mercneric. + (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 1)) + (set! used-mercneric 1) + used-mercneric))) (else - ;; no env map, don't use mercneric. - (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 0)) - (set! (-> *merc-bucket-info* effect effect-idx ignore-alpha) (the-as uint 1)) - (set! used-merc 1) - ;; note sure what this is exactly... - (when (logtest? (-> geom effect effect-idx effect-bits) 2) - (let ((v1-102 (-> *merc-bucket-info* light))) - (set! (-> v1-102 direction 1 w) 0.000000000000000000000000000000000000011755039) - ) - ) - ) - ) - ) - ) - ) + ;; no env map, don't use mercneric. + (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 0)) + (set! (-> *merc-bucket-info* effect effect-idx ignore-alpha) (the-as uint 1)) + (set! used-merc 1) + ;; note sure what this is exactly... + (when (logtest? (-> geom effect effect-idx effect-bits) 2) + (let ((v1-102 (-> *merc-bucket-info* light))) + (set! (-> v1-102 direction 1 w) 0.000000000000000000000000000000000000011755039)))))))) ;; final two cases are for all other effects that don't matter generic/normal ((or (nonzero? (-> *merc-bucket-info* must-use-mercneric-for-clip)) pc-force-mercneric) (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 1)) (set! used-mercneric 1) - used-mercneric - ) + used-mercneric) (else - (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 0)) - (set! (-> *merc-bucket-info* effect effect-idx ignore-alpha) (the-as uint 0)) - (set! used-merc 1) - used-merc - ) - ) - + (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 0)) + (set! (-> *merc-bucket-info* effect effect-idx ignore-alpha) (the-as uint 0)) + (set! used-merc 1) + used-merc)) ;; final force to mercneric for ps (when pc-force-mercneric (set! (-> *merc-bucket-info* effect effect-idx use-mercneric) (the-as uint 1)) - (set! used-mercneric 1) - ) - ) ;; end effect loop - + (set! used-mercneric 1))) ;; end effect loop ;; draw generic! ;; note: this doesn't do the fully draw, there's some other stuff in process-drawable.gc to actually execute. (when (nonzero? used-mercneric) (when (logtest? *vu1-enable-user* (vu1-renderer-mask generic)) (set! (-> dma-buf base) (draw-bones-generic-merc arg0 (the pointer matrix-data) (the pointer s2-0) 0)) - (set! s2-0 (-> dma-buf base)) - ) - ) - + (set! s2-0 (-> dma-buf base)))) ;; draw shadow! (when (-> arg0 shadow) (when #t (set! s2-0 (draw-bones-shadow arg0 (the pointer matrix-data) (the pointer s2-0))) - (set! (-> dma-buf base) (the-as pointer s2-0)) - ) - ) - + (set! (-> dma-buf base) (the-as pointer s2-0)))) ;; draw merc! (when (nonzero? used-merc) (when (logtest? *vu1-enable-user* (vu1-renderer-mask merc)) @@ -1799,36 +1374,22 @@ (when (zero? (logand (-> geom effect 0 effect-bits) 2)) (let* ((a1-25 (the int (* 0.0015625 f0-13))) (v1-147 (min 128 (max 0 a1-25))) - (a0-56 (-> *merc-bucket-info* light)) - ) + (a0-56 (-> *merc-bucket-info* light))) (set! (-> a0-56 direction 1 w) 0.000000000000000000000000000000000000011755084) - (set! (-> a0-56 direction 2 w) (the-as float v1-147)) - ) - 0 - ) - ) - ) - ) + (set! (-> a0-56 direction 2 w) (the-as float v1-147))) + 0)))) (set! s2-0 (pc-merc-draw-request arg0 (the pointer s2-0) (the pointer matrix-data) pc-merc-vtx-update blerc-weights)) ; (if (nonzero? (-> *merc-bucket-info* need-mercprime-if-merc)) ; (set! (-> dma-buf base) (draw-bones-merc arg0 matrix-data s2-0 32 17)) ; (set! (-> dma-buf base) (draw-bones-merc arg0 matrix-data s2-0 35 20)) ; ) ; (set! s2-0 (-> dma-buf base)) - ) - ) - ) ;; end geom processing - + ))) ;; end geom processing ;; advance death timer. (when (nonzero? (-> arg0 death-timer)) (when (not (paused?)) (+! (-> arg0 death-timer) -1) - (if (>= (the-as uint 1) (-> arg0 death-timer)) - (send-event (-> arg0 process) 'death-end arg0) - ) - ) - ) - ) + (if (>= (the-as uint 1) (-> arg0 death-timer)) (send-event (-> arg0 process) 'death-end arg0))))) (let ((v1-164 (logand (the-as int s2-0) 48))) 0 (b! (zero? v1-164) cfg-83 :delay (set! a0-62 #x20000000)) @@ -1837,77 +1398,48 @@ (let ((a0-63 s2-0)) (set! s2-0 (+ (- (the-as int s2-0) v1-164) 64)) ;;(s.w! (+ a0-63 4) (the-as int s2-0)) - (set! (-> (the (pointer int32) (+ (the-as uint a0-63) 4))) (the-as int s2-0)) - ) - ) + (set! (-> (the (pointer int32) (+ (the-as uint a0-63) 4))) (the-as int s2-0)))) (label cfg-83) - (set! (-> dma-buf base) (the-as pointer (logand (the-as uint s2-0) (the-as uint #xfffffff)))) - ) - ) - ) + (set! (-> dma-buf base) (the-as pointer (logand (the-as uint s2-0) (the-as uint #xfffffff))))))) 0 - (none) - ) - ) + (none))) ;; TODO (defun draw-bones-hud ((arg0 draw-control) (arg1 dma-buffer)) - (local-vars - (at-0 object) - (at-2 int) - (t2-10 vu-lights) - (t3-3 uint128) - (t3-4 uint128) - (t3-5 uint128) - (t3-6 uint128) - ) + (local-vars (at-0 object) (at-2 int) (t2-10 vu-lights) (t3-3 uint128) (t3-4 uint128) (t3-5 uint128) (t3-6 uint128)) (let ((v1-0 arg0) - (gp-0 arg1) - ) + (gp-0 arg1)) ;; (.lui at-0 28672) (set! at-0 (scratchpad-object object)) (let* ((a3-0 (-> gp-0 base)) (a0-3 (+ (-> v1-0 mgeo num-joints) 3)) (a2-0 (the-as object (&+ a3-0 16))) - (a1-1 (&+ a3-0 64)) - ) + (a1-1 (&+ a3-0 64))) (let ((t0-1 (scratchpad-object bone-regs :offset 240))) (set! (-> t0-1 joint-ptr) (the-as (inline-array joint) (-> v1-0 jgeo data 0))) (set! (-> t0-1 bone-ptr) (-> v1-0 skeleton bones)) - (set! (-> t0-1 num-bones) (the-as uint a0-3)) - ) + (set! (-> t0-1 num-bones) (the-as uint a0-3))) (let ((t2-0 a1-1) (t3-0 2) (t6-0 (scratchpad-object bone-memory :offset 16)) (t0-3 *bone-calculation-list*) - (t1-6 (the-as bone-calculation a2-0)) - ) + (t1-6 (the-as bone-calculation a2-0))) (let ((t4-0 (-> t6-0 work regs joint-ptr)) (t5-0 (-> t6-0 work regs bone-ptr)) (t6-1 (-> t6-0 work regs num-bones)) - (t7-0 t1-6) - ) + (t7-0 t1-6)) (set! (-> t7-0 flags) (the-as bone-calc-flags t3-0)) (set! (-> t7-0 num-bones) t6-1) (set! (-> t7-0 matrix-area) (the-as (inline-array matrix) t2-0)) (set! (-> t7-0 joints) t4-0) (set! (-> t7-0 bones) t5-0) - (set! (-> t7-0 next) (the-as bone-calculation 0)) - ) - (if (nonzero? (-> t0-3 next)) - (set! (-> t0-3 next next) t1-6) - ) - (if (zero? (-> t0-3 first)) - (set! (-> t0-3 first) t1-6) - ) - (set! (-> t0-3 next) t1-6) - ) + (set! (-> t7-0 next) (the-as bone-calculation 0))) + (if (nonzero? (-> t0-3 next)) (set! (-> t0-3 next next) t1-6)) + (if (zero? (-> t0-3 first)) (set! (-> t0-3 first) t1-6)) + (set! (-> t0-3 next) t1-6)) (let ((a2-2 (the-as object (&+ (&+ (the-as pointer a2-0) 48) (* a0-3 128))))) (set! (-> (the-as (pointer uint128) a3-0)) - (logior (-> (the-as terrain-context at-0) work foreground generic-work saves envmap verts 4) - (shl (the-as int a2-2) 32) - ) - ) + (logior (-> (the-as terrain-context at-0) work foreground generic-work saves envmap verts 4) (shl (the-as int a2-2) 32))) (when (= (-> v1-0 data-format) 1) (let ((a0-9 (-> v1-0 lod-set lod 0 geo))) (dotimes (a3-2 (the-as int (-> a0-9 header effect-count))) @@ -1916,8 +1448,7 @@ (let* ((t1-7 (-> *merc-bucket-info* light)) (t2-9 (+ 64 (scratchpad-object int))) (t0-10 7) - (t1-8 (the-as object t1-7)) - ) + (t1-8 (the-as object t1-7))) (b! (< (+ t0-10 -4) 0) cfg-9 :delay (set! t2-10 (the-as vu-lights t2-9))) (nop!) (label cfg-8) @@ -1934,73 +1465,44 @@ (store-qw (&+ (the-as pointer t1-8) -48) t3-2) (nop!) (store-qw (&+ (the-as pointer t1-8) -32) t4-1) - (b! (>= t6-3 0) cfg-8 :delay (store-qw (&+ (the-as pointer t1-8) -16) t5-1)) - ) - ) - ) - ) - ) + (b! (>= t6-3 0) cfg-8 :delay (store-qw (&+ (the-as pointer t1-8) -16) t5-1))))))) (label cfg-9) (b! (zero? t0-10) cfg-14 :delay (set! t3-3 (-> t2-10 direction 0 quad))) (let ((t2-11 (-> t2-10 direction 1)) (t1-9 (-> (the-as vu-lights t1-8) direction 1)) - (t0-11 (+ t0-10 -1)) - ) + (t0-11 (+ t0-10 -1))) (store-qw (&+ t1-9 -16) t3-3) (b! (zero? t0-11) cfg-14 :delay (set! t3-4 (-> t2-11 quad))) (let ((t2-12 (&+ t2-11 16)) (t1-10 (&+ t1-9 16)) - (t0-12 (+ t0-11 -1)) - ) + (t0-12 (+ t0-11 -1))) (store-qw (&+ t1-10 -16) t3-4) (b! (zero? t0-12) cfg-14 :delay (set! t3-5 (-> t2-12 quad))) (let ((t2-13 (&+ t2-12 16)) (t1-11 (&+ t1-10 16)) - (t0-13 (+ t0-12 -1)) - ) + (t0-13 (+ t0-12 -1))) (store-qw (&+ t1-11 -16) t3-5) (b! (zero? t0-13) cfg-14 :delay (set! t3-6 (-> t2-13 quad))) (&+ t2-13 16) - (let ((t1-12 (&+ t1-11 16))) - (+ t0-13 -1) - (store-qw (&+ t1-12 -16) t3-6) - ) - ) - ) - ) - ) + (let ((t1-12 (&+ t1-11 16))) (+ t0-13 -1) (store-qw (&+ t1-12 -16) t3-6)))))) (label cfg-14) 0 (set! (-> *merc-bucket-info* effect a3-2 color-fade) (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)) - (set! (-> *merc-bucket-info* effect a3-2 use-mercneric) (the-as uint 1)) - ) - (else - (set! (-> *merc-bucket-info* effect a3-2 use-mercneric) (the-as uint 1)) - ) - ) - ) - ) + (set! (-> *merc-bucket-info* effect a3-2 use-mercneric) (the-as uint 1))) + (else (set! (-> *merc-bucket-info* effect a3-2 use-mercneric) (the-as uint 1)))))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask generic)) (set! (-> gp-0 base) (draw-bones-generic-merc v1-0 a1-1 (the-as pointer a2-2) 1)) - (set! a2-2 (-> gp-0 base)) - ) - ) + (set! a2-2 (-> gp-0 base)))) (let ((a0-17 (logand (the-as int a2-2) 48))) 0 (b! (zero? a0-17) cfg-22 :delay (set! at-2 #x20000000)) (set! (-> (the-as (pointer int128) a2-2)) (the-as int128 at-2)) (let ((v1-2 (the-as pointer a2-2))) (set! a2-2 (+ (&- (the-as pointer a2-2) (the-as uint a0-17)) 64)) - (store-u32 (&+ v1-2 4) (the-as int a2-2)) - ) - ) + (store-u32 (&+ v1-2 4) (the-as int a2-2)))) (label cfg-22) - (set! (-> gp-0 base) (the-as pointer a2-2)) - ) - ) - ) + (set! (-> gp-0 base) (the-as pointer a2-2))))) 0 - (none) - ) + (none)) (define-extern draw-bones-hud (function draw-control dma-buffer none)) diff --git a/goal_src/jak1/engine/gfx/foreground/eye-h.gc b/goal_src/jak1/engine/gfx/foreground/eye-h.gc index d2b6387b69..e7666823e3 100644 --- a/goal_src/jak1/engine/gfx/foreground/eye-h.gc +++ b/goal_src/jak1/engine/gfx/foreground/eye-h.gc @@ -1,57 +1,41 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gkernel-h.gc") - -;; name: eye-h.gc -;; name in dgo: eye-h -;; dgos: GAME, ENGINE - (define-extern get-eye-block (function int int int)) + (define-extern merc-eye-anim (function process-drawable none)) + (define-extern update-eyes (function none)) ;; DECOMP BEGINS (deftype eye (structure) - ((data vector 2 :inline) - (x float :overlay-at (-> data 0 x)) - (y float :overlay-at (-> data 0 y)) - (lid float :overlay-at (-> data 0 z)) - (iris-scale float :offset 16) - (pupil-scale float :offset 20) - (lid-scale float :offset 24) - ) - ) - + ((data vector 2 :inline) + (x float :overlay-at (-> data 0 x)) + (y float :overlay-at (-> data 0 y)) + (lid float :overlay-at (-> data 0 z)) + (iris-scale float :offset 16) + (pupil-scale float :offset 20) + (lid-scale float :offset 24))) (deftype eye-control (structure) - ((process handle) - (random-time uint16) - (level uint16) - (blink float) - (shaders (inline-array adgif-shader)) - (left eye :inline) - (right eye :inline) - ) - ) - + ((process handle) + (random-time uint16) + (level uint16) + (blink float) + (shaders (inline-array adgif-shader)) + (left eye :inline) + (right eye :inline))) (deftype eye-control-array (basic) - ((data eye-control 11 :inline) - ) - ) - + ((data eye-control 11 :inline))) (deftype eye-work (structure) - ((sprite-tmpl dma-gif-packet :inline) - (sprite-tmpl2 dma-gif-packet :inline) - (adgif-tmpl dma-gif-packet :inline) - (blink-table float 10) - ) - ) - + ((sprite-tmpl dma-gif-packet :inline) + (sprite-tmpl2 dma-gif-packet :inline) + (adgif-tmpl dma-gif-packet :inline) + (blink-table float 10))) (define *eye-control-array* (new 'static 'eye-control-array)) @@ -59,5 +43,4 @@ (set! (-> *eye-control-array* data v1-5 process) (the-as handle #f)) (set! (-> *eye-control-array* data v1-5 shaders) (the-as (inline-array adgif-shader) #f)) (set! (-> *eye-control-array* data v1-5 random-time) (the-as uint 60)) - (set! (-> *eye-control-array* data v1-5 blink) 0.0) - ) + (set! (-> *eye-control-array* data v1-5 blink) 0.0)) diff --git a/goal_src/jak1/engine/gfx/foreground/eye.gc b/goal_src/jak1/engine/gfx/foreground/eye.gc index a3b803ded6..6fa27af8ff 100644 --- a/goal_src/jak1/engine/gfx/foreground/eye.gc +++ b/goal_src/jak1/engine/gfx/foreground/eye.gc @@ -1,44 +1,56 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/gfx/foreground/eye-h.gc") (require "engine/ps2/vu1-macros.gc") (require "engine/math/vector.gc") -;; name: eye.gc -;; name in dgo: eye -;; dgos: GAME, ENGINE ;; note: changed for high fps ;; DECOMP BEGINS -(define *eye-work* (new 'static 'eye-work - :sprite-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x508b400000008001 #x53531) - ) - :sprite-tmpl2 (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x50ab400000008001 #x53531) - ) - :adgif-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x1000000000008005 #xe) - ) - :blink-table (new 'static 'array float 10 0.0 0.667 0.9 1.0 1.0 1.0 1.0 0.333 0.1 0.0) - ) - ) +(define *eye-work* + (new 'static + 'eye-work + :sprite-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif + (new 'static 'array uint64 2 #x508b400000008001 #x53531)) + :sprite-tmpl2 + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif + (new 'static 'array uint64 2 #x50ab400000008001 #x53531)) + :adgif-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif + (new 'static 'array uint64 2 #x1000000000008005 #xe)) + :blink-table + (new 'static 'array float 10 0.0 0.667 0.9 1.0 1.0 1.0 1.0 0.333 0.1 0.0))) ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch @@ -48,12 +60,10 @@ (local-vars (sv-16 float)) (let ((s4-0 32) (s3-0 (+ (* arg2 32) 32)) - (s2-0 (* arg2 32)) - ) + (s2-0 (* arg2 32))) (let ((f28-0 (* 16.0 (+ (the float (+ s4-0 16)) (* 32.0 (-> arg1 left x))))) (f26-0 (* 16.0 (+ (the float (+ s3-0 16)) (* 32.0 (-> arg1 left y))))) - (f30-0 (* 16.0 (+ (the float (+ s4-0 48)) (* 32.0 (-> arg1 right x))))) - ) + (f30-0 (* 16.0 (+ (the float (+ s4-0 48)) (* 32.0 (-> arg1 right x)))))) (set! sv-16 (* 16.0 (+ (the float (+ s3-0 16)) (* 32.0 (-> arg1 right y))))) (let ((s1-0 (-> arg1 shaders 0))) ;; ADGIF 0 @@ -63,57 +73,45 @@ (let ((s0-0 (the-as adgif-shader (&+ (the-as pointer v1-6) 32)))) (quad-copy! (the-as pointer s0-0) (the-as pointer s1-0) 5) (set! (-> s0-0 clamp) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) - ) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f)) (set! (-> s0-0 alpha) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> s0-0 prims 9) (gs-reg64 alpha-1)) - ) - ) + (set! (-> s0-0 prims 9) (gs-reg64 alpha-1)))) (&+! (-> arg0 base) 112) ;; SCISSOR0 (let* ((v1-12 arg0) - (a0-6 (the-as object (-> v1-12 base))) - ) + (a0-6 (the-as object (-> v1-12 base)))) (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-12 base) (&+ (the-as pointer a0-6) 16)) - ) + (set! (-> v1-12 base) (&+ (the-as pointer a0-6) 16))) (let* ((v1-13 arg0) - (a0-8 (the-as object (-> v1-13 base))) - ) + (a0-8 (the-as object (-> v1-13 base)))) (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-8) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-13 base) (&+ (the-as pointer a0-8) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-13 base) (&+ (the-as pointer a0-8) 16))) (let* ((v1-14 arg0) - (a0-10 (-> v1-14 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) + (a0-10 (-> v1-14 base))) + (set! (-> (the-as (pointer gs-scissor) a0-10) 0) (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-14 base) (&+ a0-10 16)) - ) + (set! (-> v1-14 base) (&+ a0-10 16))) ;; SPRITE0 (let ((v1-15 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-15 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) @@ -122,179 +120,145 @@ (set-vector! (-> v1-15 3) 0 0 0 0) (set-vector! (-> v1-15 4) (* s4-0 16) (* s3-0 16) #xffffff 0) (set-vector! (-> v1-15 5) 0 0 0 0) - (set-vector! (-> v1-15 6) (* (+ s4-0 64) 16) (* (+ s3-0 32) 16) #xffffff 0) - ) + (set-vector! (-> v1-15 6) (* (+ s4-0 64) 16) (* (+ s3-0 32) 16) #xffffff 0)) (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) (let ((v1-20 (ash 16 (-> s1-0 tex0 tw))) - (a0-30 (ash 16 (-> s1-0 tex0 th))) - ) + (a0-30 (ash 16 (-> s1-0 tex0 th)))) ;; SCISSOR1 (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) + (a2-7 (the-as object (-> a1-22 base)))) (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) + (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16))) (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) + (a2-9 (the-as object (-> a1-23 base)))) (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a2-9) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16))) (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) + (a2-11 (-> a1-24 base))) + (set! (-> (the-as (pointer gs-scissor) a2-11) 0) (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0)) (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (set! (-> a1-24 base) (&+ a2-11 16))) ;; SPRITE1 (let* ((f0-6 (* 256.0 (-> arg1 left iris-scale))) (a1-25 (the-as (inline-array vector4w) (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) (t0-5 (the int (- f26-0 f0-6))) (a3-9 (the int (+ f28-0 f0-6))) - (t1-0 (the int (+ f26-0 f0-6))) - ) + (t1-0 (the int (+ f26-0 f0-6)))) (set! (-> a1-25 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> a1-25 1 quad) (-> *eye-work* sprite-tmpl quad 1)) (set-vector! (-> a1-25 2) 128 128 128 128) (set-vector! (-> a1-25 3) 0 0 0 0) (set-vector! (-> a1-25 4) a2-13 t0-5 #xffffff 0) (set-vector! (-> a1-25 5) v1-20 a0-30 0 0) - (set-vector! (-> a1-25 6) a3-9 t1-0 #xffffff 0) - ) + (set-vector! (-> a1-25 6) a3-9 t1-0 #xffffff 0)) (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) ;; SCISSOR2 (let* ((a1-29 arg0) - (a2-17 (the-as object (-> a1-29 base))) - ) + (a2-17 (the-as object (-> a1-29 base)))) (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-29 base) (&+ (the-as pointer a2-17) 16)) - ) + (set! (-> a1-29 base) (&+ (the-as pointer a2-17) 16))) (let* ((a1-30 arg0) - (a2-19 (the-as object (-> a1-30 base))) - ) + (a2-19 (the-as object (-> a1-30 base)))) (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a2-19) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a1-30 base) (&+ (the-as pointer a2-19) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a1-30 base) (&+ (the-as pointer a2-19) 16))) (let* ((a1-31 arg0) - (a2-21 (-> a1-31 base)) - ) + (a2-21 (-> a1-31 base))) (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) + (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-31 base) (&+ a2-21 16)) - ) + (set! (-> a1-31 base) (&+ a2-21 16))) ;; SPRITE2 (let* ((f0-10 (* 256.0 (-> arg1 right iris-scale))) (a1-32 (the-as (inline-array vector4w) (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) (t0-11 (the int (- sv-16 f0-10))) (a3-20 (the int (+ f30-0 f0-10))) - (t1-2 (the int (+ sv-16 f0-10))) - ) + (t1-2 (the int (+ sv-16 f0-10)))) (set! (-> a1-32 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> a1-32 1 quad) (-> *eye-work* sprite-tmpl quad 1)) (set-vector! (-> a1-32 2) 128 128 128 128) (set-vector! (-> a1-32 3) 0 0 0 0) (set-vector! (-> a1-32 4) a2-23 t0-11 #xffffff 0) (set-vector! (-> a1-32 5) v1-20 a0-30 0 0) - (set-vector! (-> a1-32 6) a3-20 t1-2 #xffffff 0) - ) - ) - ) + (set-vector! (-> a1-32 6) a3-20 t1-2 #xffffff 0)))) (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) (let* ((v1-24 arg0) - (a0-32 (the-as object (-> v1-24 base))) - ) + (a0-32 (the-as object (-> v1-24 base)))) (set! (-> (the-as dma-packet a0-32) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-32) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-32) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-24 base) (&+ (the-as pointer a0-32) 16)) - ) + (set! (-> v1-24 base) (&+ (the-as pointer a0-32) 16))) (let* ((v1-25 arg0) - (a0-34 (the-as object (-> v1-25 base))) - ) + (a0-34 (the-as object (-> v1-25 base)))) (set! (-> (the-as gs-gif-tag a0-34) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-34) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-25 base) (&+ (the-as pointer a0-34) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-25 base) (&+ (the-as pointer a0-34) 16))) (let* ((v1-26 arg0) - (a0-36 (-> v1-26 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-36) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) + (a0-36 (-> v1-26 base))) + (set! (-> (the-as (pointer gs-test) a0-36) 0) (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) a0-36) 1) (gs-reg64 test-1)) - (set! (-> v1-26 base) (&+ a0-36 16)) - ) + (set! (-> v1-26 base) (&+ a0-36 16))) (let ((s1-1 (-> arg1 shaders 1))) (let ((v1-28 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-28) 0 quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -302,66 +266,52 @@ (let ((s0-1 (the-as adgif-shader (&+ (the-as pointer v1-28) 32)))) (quad-copy! (the-as pointer s0-1) (the-as pointer s1-1) 5) (set! (-> s0-1 clamp) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) - ) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f)) (set! (-> s0-1 alpha) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> s0-1 prims 9) (gs-reg64 alpha-1)) - ) - ) + (set! (-> s0-1 prims 9) (gs-reg64 alpha-1)))) (&+! (-> arg0 base) 112) (let ((v1-35 (ash 16 (-> s1-1 tex0 tw))) - (a0-48 (ash 16 (-> s1-1 tex0 th))) - ) + (a0-48 (ash 16 (-> s1-1 tex0 th)))) (let* ((a1-45 arg0) - (a2-27 (the-as object (-> a1-45 base))) - ) + (a2-27 (the-as object (-> a1-45 base)))) (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-45 base) (&+ (the-as pointer a2-27) 16)) - ) + (set! (-> a1-45 base) (&+ (the-as pointer a2-27) 16))) (let* ((a1-46 arg0) - (a2-29 (the-as object (-> a1-46 base))) - ) + (a2-29 (the-as object (-> a1-46 base)))) (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a2-29) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a1-46 base) (&+ (the-as pointer a2-29) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a1-46 base) (&+ (the-as pointer a2-29) 16))) (let* ((a1-47 arg0) - (a2-31 (-> a1-47 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) + (a2-31 (-> a1-47 base))) + (set! (-> (the-as (pointer gs-scissor) a2-31) 0) (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0)) (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-47 base) (&+ a2-31 16)) - ) + (set! (-> a1-47 base) (&+ a2-31 16))) (let* ((f0-14 (* 256.0 (-> arg1 left pupil-scale))) (a1-48 (the-as (inline-array vector4w) (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) (t0-17 (the int (- f26-0 f0-14))) (a3-30 (the int (+ f28-0 f0-14))) - (t1-3 (the int (+ f26-0 f0-14))) - ) + (t1-3 (the int (+ f26-0 f0-14)))) (set! (-> a1-48 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) (set! (-> a1-48 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) (set-vector! (-> a1-48 2) 128 128 128 128) @@ -372,114 +322,92 @@ (set! (-> a1-49 0 x) a3-30) (set! (-> a1-49 0 y) t1-3) (set! (-> a1-49 0 z) #xffffff) - (set! (-> a1-49 0 w) 0) - ) - ) + (set! (-> a1-49 0 w) 0))) (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) (let* ((a1-52 arg0) - (a2-37 (the-as object (-> a1-52 base))) - ) + (a2-37 (the-as object (-> a1-52 base)))) (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-52 base) (&+ (the-as pointer a2-37) 16)) - ) + (set! (-> a1-52 base) (&+ (the-as pointer a2-37) 16))) (let* ((a1-53 arg0) - (a2-39 (the-as object (-> a1-53 base))) - ) + (a2-39 (the-as object (-> a1-53 base)))) (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a2-39) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a1-53 base) (&+ (the-as pointer a2-39) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a1-53 base) (&+ (the-as pointer a2-39) 16))) (let* ((a1-54 arg0) - (a2-41 (-> a1-54 base)) - ) + (a2-41 (-> a1-54 base))) (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) + (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-54 base) (&+ a2-41 16)) - ) + (set! (-> a1-54 base) (&+ a2-41 16))) (let* ((f0-18 (* 256.0 (-> arg1 right pupil-scale))) (a1-55 (the-as (inline-array vector4w) (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) (t0-23 (the int (- sv-16 f0-18))) (a3-41 (the int (+ f30-0 f0-18))) - (t1-5 (the int (+ sv-16 f0-18))) - ) + (t1-5 (the int (+ sv-16 f0-18)))) (set! (-> a1-55 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) (set! (-> a1-55 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) (set-vector! (-> a1-55 2) 128 128 128 128) (set-vector! (-> a1-55 3) 0 0 0 0) (set-vector! (-> a1-55 4) a2-43 t0-23 #xffffff 0) (set-vector! (-> a1-55 5) v1-35 a0-48 0 0) - (set-vector! (-> a1-55 6) a3-41 t1-5 #xffffff 0) - ) - ) - ) - ) + (set-vector! (-> a1-55 6) a3-41 t1-5 #xffffff 0))))) (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) (let* ((v1-39 arg0) - (a0-50 (the-as object (-> v1-39 base))) - ) + (a0-50 (the-as object (-> v1-39 base)))) (set! (-> (the-as dma-packet a0-50) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-50) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-50) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-39 base) (&+ (the-as pointer a0-50) 16)) - ) + (set! (-> v1-39 base) (&+ (the-as pointer a0-50) 16))) (let* ((v1-40 arg0) - (a0-52 (the-as object (-> v1-40 base))) - ) + (a0-52 (the-as object (-> v1-40 base)))) (set! (-> (the-as gs-gif-tag a0-52) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-52) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-40 base) (&+ (the-as pointer a0-52) 16)) - ) + (set! (-> (the-as gs-gif-tag a0-52) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-40 base) (&+ (the-as pointer a0-52) 16))) (let* ((v1-41 arg0) - (a0-54 (-> v1-41 base)) - ) + (a0-54 (-> v1-41 base))) (set! (-> (the-as (pointer gs-test) a0-54) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) a0-54) 1) (gs-reg64 test-1)) - (set! (-> v1-41 base) (&+ a0-54 16)) - ) + (set! (-> v1-41 base) (&+ a0-54 16))) (let ((s1-2 (-> arg1 shaders 2))) (let ((v1-43 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-43) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -487,638 +415,477 @@ (let ((s0-2 (the-as adgif-shader (&+ (the-as pointer v1-43) 32)))) (quad-copy! (the-as pointer s0-2) (the-as pointer s1-2) 5) (set! (-> s0-2 clamp) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) - ) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f)) (set! (-> s0-2 alpha) (new 'static 'gs-alpha :a #x1)) - (set! (-> s0-2 prims 9) (gs-reg64 alpha-1)) - ) - ) + (set! (-> s0-2 prims 9) (gs-reg64 alpha-1)))) (set! (-> arg0 base) (-> (the-as (inline-array dma-gif-packet) (-> arg0 base)) 3 gif)) (let ((v1-50 (ash 16 (-> s1-2 tex0 tw))) - (a0-66 (ash 16 (-> s1-2 tex0 th))) - ) + (a0-66 (ash 16 (-> s1-2 tex0 th)))) (when (< (-> arg1 left lid) 0.0) - (let ((f0-23 (+ 1.0 (-> arg1 left lid)))) - (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) - ) - ) + (let ((f0-23 (+ 1.0 (-> arg1 left lid)))) (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))))) (let* ((a1-70 arg0) - (a2-47 (the-as object (-> a1-70 base))) - ) + (a2-47 (the-as object (-> a1-70 base)))) (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-70 base) (&+ (the-as pointer a2-47) 16)) - ) + (set! (-> a1-70 base) (&+ (the-as pointer a2-47) 16))) (let* ((a1-71 arg0) - (a2-49 (the-as object (-> a1-71 base))) - ) + (a2-49 (the-as object (-> a1-71 base)))) (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a2-49) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a1-71 base) (&+ (the-as pointer a2-49) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a1-71 base) (&+ (the-as pointer a2-49) 16))) (let* ((a1-72 arg0) - (a2-51 (-> a1-72 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) + (a2-51 (-> a1-72 base))) + (set! (-> (the-as (pointer gs-scissor) a2-51) 0) (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0)) (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-72 base) (&+ a2-51 16)) - ) + (set! (-> a1-72 base) (&+ a2-51 16))) (let* ((f0-27 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 left lid)))) (a1-74 (the-as (inline-array vector4w) (-> arg0 base))) (a2-53 (* s4-0 16)) (t0-29 (the int (* 16.0 f0-27))) (a3-52 (* (+ s4-0 32) 16)) - (t1-6 (the int (* 16.0 (+ f0-27 (* 32.0 (-> arg1 left lid-scale)))))) - ) + (t1-6 (the int (* 16.0 (+ f0-27 (* 32.0 (-> arg1 left lid-scale))))))) (set! (-> a1-74 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) (set! (-> a1-74 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) (set-vector! (-> a1-74 2) 128 128 128 0) (set-vector! (-> a1-74 3) 0 0 0 0) (set-vector! (-> a1-74 4) a2-53 t0-29 #xffffff 0) (set-vector! (-> a1-74 5) v1-50 a0-66 0 0) - (set-vector! (-> a1-74 6) a3-52 t1-6 #xffffff 0) - ) + (set-vector! (-> a1-74 6) a3-52 t1-6 #xffffff 0)) (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) (when (< (-> arg1 right lid) 0.0) - (let ((f0-33 (+ 1.0 (-> arg1 right lid)))) - (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) - ) - ) + (let ((f0-33 (+ 1.0 (-> arg1 right lid)))) (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))))) (let* ((a1-80 arg0) - (a2-57 (the-as object (-> a1-80 base))) - ) + (a2-57 (the-as object (-> a1-80 base)))) (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-80 base) (&+ (the-as pointer a2-57) 16)) - ) + (set! (-> a1-80 base) (&+ (the-as pointer a2-57) 16))) (let* ((a1-81 arg0) - (a2-59 (the-as object (-> a1-81 base))) - ) + (a2-59 (the-as object (-> a1-81 base)))) (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a1-81 base) (&+ (the-as pointer a2-59) 16)) - ) + (set! (-> (the-as gs-gif-tag a2-59) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a1-81 base) (&+ (the-as pointer a2-59) 16))) (let* ((a1-82 arg0) - (a2-61 (-> a1-82 base)) - ) + (a2-61 (-> a1-82 base))) (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) + (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-82 base) (&+ a2-61 16)) - ) + (set! (-> a1-82 base) (&+ a2-61 16))) (let* ((f0-37 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 right lid)))) (a1-84 (the-as (inline-array vector4w) (-> arg0 base))) (a2-64 (* (+ s4-0 64) 16)) (t0-35 (the int (* 16.0 f0-37))) (a3-63 (* (+ s4-0 32) 16)) - (t1-7 (the int (* 16.0 (+ f0-37 (* 32.0 (-> arg1 left lid-scale)))))) - ) + (t1-7 (the int (* 16.0 (+ f0-37 (* 32.0 (-> arg1 left lid-scale))))))) (set! (-> a1-84 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) (set! (-> a1-84 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) (set-vector! (-> a1-84 2) 128 128 128 0) (set-vector! (-> a1-84 3) 0 0 0 0) (set-vector! (-> a1-84 4) a2-64 t0-35 #xffffff 0) (set-vector! (-> a1-84 5) v1-50 a0-66 0 0) - (set-vector! (-> a1-84 6) a3-63 t1-7 #xffffff 0) - ) - ) - ) - ) + (set-vector! (-> a1-84 6) a3-63 t1-7 #xffffff 0))))) (let ((v0-3 (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) (set! (-> arg0 base) (the-as pointer v0-3)) - (the-as pointer v0-3) - ) - ) + (the-as pointer v0-3))) (defun update-eyes () ;; Setup GS for level 0 eyes (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-0 (-> s5-0 base)) - ) + (gp-0 (-> s5-0 base))) (set-display-gs-state-offset s5-0 *eyes-base-page* 64 352 0 0 32 32) (let* ((v1-3 s5-0) - (a0-4 (the-as object (-> v1-3 base))) - ) + (a0-4 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-3 base) (&+ (the-as pointer a0-4) 16)) - ) + (set! (-> v1-3 base) (&+ (the-as pointer a0-4) 16))) (let* ((v1-4 s5-0) - (a0-6 (the-as object (-> v1-4 base))) - ) + (a0-6 (the-as object (-> v1-4 base)))) (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-6) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-4 base) (&+ (the-as pointer a0-6) 16)) - ) + (set! (-> (the-as gs-gif-tag a0-6) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-4 base) (&+ (the-as pointer a0-6) 16))) (let* ((v1-5 s5-0) - (a0-8 (-> v1-5 base)) - ) + (a0-8 (-> v1-5 base))) (set! (-> (the-as (pointer gs-test) a0-8) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> v1-5 base) (&+ a0-8 16)) - ) + (set! (-> v1-5 base) (&+ a0-8 16))) (let ((a3-1 (-> s5-0 base))) (let ((v1-6 (the-as object (-> s5-0 base)))) (set! (-> (the-as dma-packet v1-6) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-6) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-6) vif1) (new 'static 'vif-tag)) - (set! (-> s5-0 base) (&+ (the-as pointer v1-6) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id pris-tex0) - gp-0 - (the-as (pointer dma-tag) a3-1) - ) - ) - ) - + (set! (-> s5-0 base) (&+ (the-as pointer v1-6) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex0) + gp-0 + (the-as (pointer dma-tag) a3-1)))) ;; Setup GS for level 1 eyes (let* ((s5-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-1 (-> s5-1 base)) - ) + (gp-1 (-> s5-1 base))) (set-display-gs-state-offset s5-1 *eyes-base-page* 64 352 0 0 32 32) (let* ((v1-15 s5-1) - (a0-19 (the-as object (-> v1-15 base))) - ) + (a0-19 (the-as object (-> v1-15 base)))) (set! (-> (the-as dma-packet a0-19) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-19) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-19) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-15 base) (&+ (the-as pointer a0-19) 16)) - ) + (set! (-> v1-15 base) (&+ (the-as pointer a0-19) 16))) (let* ((v1-16 s5-1) - (a0-21 (the-as object (-> v1-16 base))) - ) + (a0-21 (the-as object (-> v1-16 base)))) (set! (-> (the-as gs-gif-tag a0-21) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-21) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-16 base) (&+ (the-as pointer a0-21) 16)) - ) + (set! (-> (the-as gs-gif-tag a0-21) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-16 base) (&+ (the-as pointer a0-21) 16))) (let* ((v1-17 s5-1) - (a0-23 (-> v1-17 base)) - ) + (a0-23 (-> v1-17 base))) (set! (-> (the-as (pointer gs-test) a0-23) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) a0-23) 1) (gs-reg64 test-1)) - (set! (-> v1-17 base) (&+ a0-23 16)) - ) + (set! (-> v1-17 base) (&+ a0-23 16))) (let ((a3-3 (-> s5-1 base))) (let ((v1-18 (the-as object (-> s5-1 base)))) (set! (-> (the-as dma-packet v1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-18) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-18) vif1) (new 'static 'vif-tag)) - (set! (-> s5-1 base) (&+ (the-as pointer v1-18) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id pris-tex1) - gp-1 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - + (set! (-> s5-1 base) (&+ (the-as pointer v1-18) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex1) + gp-1 + (the-as (pointer dma-tag) a3-3)))) ;; Setup GS for common eyes (let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-2 (-> s5-2 base)) - ) + (gp-2 (-> s5-2 base))) (set-display-gs-state-offset s5-2 *eyes-base-page* 64 352 0 0 32 32) (let* ((v1-27 s5-2) - (a0-34 (the-as object (-> v1-27 base))) - ) + (a0-34 (the-as object (-> v1-27 base)))) (set! (-> (the-as dma-packet a0-34) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-34) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-34) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-27 base) (&+ (the-as pointer a0-34) 16)) - ) + (set! (-> v1-27 base) (&+ (the-as pointer a0-34) 16))) (let* ((v1-28 s5-2) - (a0-36 (the-as object (-> v1-28 base))) - ) + (a0-36 (the-as object (-> v1-28 base)))) (set! (-> (the-as gs-gif-tag a0-36) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-36) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-28 base) (&+ (the-as pointer a0-36) 16)) - ) + (set! (-> (the-as gs-gif-tag a0-36) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-28 base) (&+ (the-as pointer a0-36) 16))) (let* ((v1-29 s5-2) - (a0-38 (-> v1-29 base)) - ) + (a0-38 (-> v1-29 base))) (set! (-> (the-as (pointer gs-test) a0-38) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) a0-38) 1) (gs-reg64 test-1)) - (set! (-> v1-29 base) (&+ a0-38 16)) - ) + (set! (-> v1-29 base) (&+ a0-38 16))) (let ((a3-5 (-> s5-2 base))) (let ((v1-30 (the-as object (-> s5-2 base)))) (set! (-> (the-as dma-packet v1-30) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-30) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-30) vif1) (new 'static 'vif-tag)) - (set! (-> s5-2 base) (&+ (the-as pointer v1-30) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id eyes) - gp-2 - (the-as (pointer dma-tag) a3-5) - ) - ) - ) - + (set! (-> s5-2 base) (&+ (the-as pointer v1-30) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id eyes) + gp-2 + (the-as (pointer dma-tag) a3-5)))) ;; rendering of eyes. (dotimes (gp-3 11) - ;; grab the eye and the process (let* ((s5-3 (-> *eye-control-array* data gp-3)) - (v1-40 (handle->process (-> s5-3 process))) - ) + (v1-40 (handle->process (-> s5-3 process)))) ;; see if we need the eye (when (and v1-40 (logtest? (-> (the-as process-drawable v1-40) skel status) (janim-status eye)) - (logtest? (-> (the-as process-drawable v1-40) draw status) (draw-status was-drawn)) - ) + (logtest? (-> (the-as process-drawable v1-40) draw status) (draw-status was-drawn))) (when (-> s5-3 shaders) ;; update blinking (when (not (paused?)) (cond ((and (>= (-> s5-3 left lid) 0.0) (>= (-> s5-3 right lid) 0.0)) - (set! (-> s5-3 random-time) (the int (* (/ 1.0 (-> *display* time-adjust-ratio)) ;; og:preserve-this changed for high fps - (the-as uint 60)))) - (set! (-> s5-3 blink) 0.0) - ) + (set! (-> s5-3 random-time) + (the int + (* (/ 1.0 (-> *display* time-adjust-ratio)) ;; og:preserve-this changed for high fps + (the-as uint 60)))) + (set! (-> s5-3 blink) 0.0)) (else - (+! (-> s5-3 random-time) -1) - (let ((v1-54 (-> s5-3 random-time))) - (when (< v1-54 (the-as uint 10)) - (set! (-> s5-3 blink) (-> *eye-work* blink-table v1-54)) - (if (zero? v1-54) - (set! (-> s5-3 random-time) (the-as uint (the int (* (1/ DISPLAY_FPS_RATIO) (rand-vu-float-range 60.0 240.0))))) - ) - ) - ) - ) - ) - ) + (+! (-> s5-3 random-time) -1) + (let ((v1-54 (-> s5-3 random-time))) + (when (< v1-54 (the-as uint 10)) + (set! (-> s5-3 blink) (-> *eye-work* blink-table v1-54)) + (if (zero? v1-54) + (set! (-> s5-3 random-time) (the-as uint (the int (* (1/ DISPLAY_FPS_RATIO) (rand-vu-float-range 60.0 240.0))))))))))) ;; pick between level and common eyes (cond ((>= (the-as uint 1) (-> s5-3 level)) ;; level eyes (let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s4-0 (-> s3-0 base)) - ) + (s4-0 (-> s3-0 base))) (render-eyes s3-0 s5-3 gp-3) (let ((a3-6 (-> s3-0 base))) (let ((v1-59 (the-as object (-> s3-0 base)))) (set! (-> (the-as dma-packet v1-59) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-59) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-59) vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-59) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (the-as bucket-id (if (zero? (-> s5-3 level)) - (bucket-id pris-tex0) - (bucket-id pris-tex1) - ) - ) - s4-0 - (the-as (pointer dma-tag) a3-6) - ) - ) - ) - ) + (set! (-> s3-0 base) (&+ (the-as pointer v1-59) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (the-as bucket-id (if (zero? (-> s5-3 level)) (bucket-id pris-tex0) (bucket-id pris-tex1))) + s4-0 + (the-as (pointer dma-tag) a3-6))))) (else - (let* ((s3-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s4-1 (-> s3-1 base)) - ) - (render-eyes s3-1 s5-3 gp-3) - (let ((a3-7 (-> s3-1 base))) - (let ((v1-69 (the-as object (-> s3-1 base)))) - (set! (-> (the-as dma-packet v1-69) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-69) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-69) vif1) (new 'static 'vif-tag)) - (set! (-> s3-1 base) (&+ (the-as pointer v1-69) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id eyes) - s4-1 - (the-as (pointer dma-tag) a3-7) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (let* ((s3-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s4-1 (-> s3-1 base))) + (render-eyes s3-1 s5-3 gp-3) + (let ((a3-7 (-> s3-1 base))) + (let ((v1-69 (the-as object (-> s3-1 base)))) + (set! (-> (the-as dma-packet v1-69) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-69) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-69) vif1) (new 'static 'vif-tag)) + (set! (-> s3-1 base) (&+ (the-as pointer v1-69) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id eyes) + s4-1 + (the-as (pointer dma-tag) a3-7)))))))))) (let* ((s5-4 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-4 (-> s5-4 base)) - ) + (gp-4 (-> s5-4 base))) (reset-display-gs-state *display* s5-4 *oddeven*) (let* ((v1-80 s5-4) - (a0-85 (the-as object (-> v1-80 base))) - ) + (a0-85 (the-as object (-> v1-80 base)))) (set! (-> (the-as dma-packet a0-85) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-85) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-85) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-80 base) (&+ (the-as pointer a0-85) 16)) - ) + (set! (-> v1-80 base) (&+ (the-as pointer a0-85) 16))) (let* ((v1-81 s5-4) - (a0-87 (the-as object (-> v1-81 base))) - ) + (a0-87 (the-as object (-> v1-81 base)))) (set! (-> (the-as gs-gif-tag a0-87) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-87) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-81 base) (&+ (the-as pointer a0-87) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-81 base) (&+ (the-as pointer a0-87) 16))) (let* ((v1-82 s5-4) - (a0-89 (-> v1-82 base)) - ) + (a0-89 (-> v1-82 base))) (set! (-> (the-as (pointer gs-reg64) a0-89) 0) (gs-reg64 dimx)) (set! (-> (the-as (pointer gs-reg64) a0-89) 1) (gs-reg64 alpha-1)) - (set! (-> v1-82 base) (&+ a0-89 16)) - ) + (set! (-> v1-82 base) (&+ a0-89 16))) (let ((a3-8 (-> s5-4 base))) (let ((v1-83 (the-as object (-> s5-4 base)))) (set! (-> (the-as dma-packet v1-83) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-83) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-83) vif1) (new 'static 'vif-tag)) - (set! (-> s5-4 base) (&+ (the-as pointer v1-83) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id pris-tex0) - gp-4 - (the-as (pointer dma-tag) a3-8) - ) - ) - ) + (set! (-> s5-4 base) (&+ (the-as pointer v1-83) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex0) + gp-4 + (the-as (pointer dma-tag) a3-8)))) (let* ((s5-5 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-5 (-> s5-5 base)) - ) + (gp-5 (-> s5-5 base))) (reset-display-gs-state *display* s5-5 *oddeven*) (let* ((v1-92 s5-5) - (a0-100 (the-as object (-> v1-92 base))) - ) + (a0-100 (the-as object (-> v1-92 base)))) (set! (-> (the-as dma-packet a0-100) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-100) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-100) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-92 base) (&+ (the-as pointer a0-100) 16)) - ) + (set! (-> v1-92 base) (&+ (the-as pointer a0-100) 16))) (let* ((v1-93 s5-5) - (a0-102 (the-as object (-> v1-93 base))) - ) + (a0-102 (the-as object (-> v1-93 base)))) (set! (-> (the-as gs-gif-tag a0-102) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-102) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-93 base) (&+ (the-as pointer a0-102) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-93 base) (&+ (the-as pointer a0-102) 16))) (let* ((v1-94 s5-5) - (a0-104 (-> v1-94 base)) - ) + (a0-104 (-> v1-94 base))) (set! (-> (the-as (pointer gs-reg64) a0-104) 0) (gs-reg64 dimx)) (set! (-> (the-as (pointer gs-reg64) a0-104) 1) (gs-reg64 alpha-1)) - (set! (-> v1-94 base) (&+ a0-104 16)) - ) + (set! (-> v1-94 base) (&+ a0-104 16))) (let ((a3-9 (-> s5-5 base))) (let ((v1-95 (the-as object (-> s5-5 base)))) (set! (-> (the-as dma-packet v1-95) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-95) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-95) vif1) (new 'static 'vif-tag)) - (set! (-> s5-5 base) (&+ (the-as pointer v1-95) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id pris-tex1) - gp-5 - (the-as (pointer dma-tag) a3-9) - ) - ) - ) + (set! (-> s5-5 base) (&+ (the-as pointer v1-95) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex1) + gp-5 + (the-as (pointer dma-tag) a3-9)))) (let* ((s5-6 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-6 (-> s5-6 base)) - ) + (gp-6 (-> s5-6 base))) (reset-display-gs-state *display* s5-6 *oddeven*) (let* ((v1-104 s5-6) - (a0-115 (the-as object (-> v1-104 base))) - ) + (a0-115 (the-as object (-> v1-104 base)))) (set! (-> (the-as dma-packet a0-115) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-115) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-115) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-104 base) (&+ (the-as pointer a0-115) 16)) - ) + (set! (-> v1-104 base) (&+ (the-as pointer a0-115) 16))) (let* ((v1-105 s5-6) - (a0-117 (the-as object (-> v1-105 base))) - ) + (a0-117 (the-as object (-> v1-105 base)))) (set! (-> (the-as gs-gif-tag a0-117) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-117) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-105 base) (&+ (the-as pointer a0-117) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-105 base) (&+ (the-as pointer a0-117) 16))) (let* ((v1-106 s5-6) - (a0-119 (-> v1-106 base)) - ) + (a0-119 (-> v1-106 base))) (set! (-> (the-as (pointer gs-reg64) a0-119) 0) (gs-reg64 dimx)) (set! (-> (the-as (pointer gs-reg64) a0-119) 1) (gs-reg64 alpha-1)) - (set! (-> v1-106 base) (&+ a0-119 16)) - ) + (set! (-> v1-106 base) (&+ a0-119 16))) (let ((a3-10 (-> s5-6 base))) (let ((v1-107 (the-as object (-> s5-6 base)))) (set! (-> (the-as dma-packet v1-107) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-107) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-107) vif1) (new 'static 'vif-tag)) - (set! (-> s5-6 base) (&+ (the-as pointer v1-107) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id eyes) - gp-6 - (the-as (pointer dma-tag) a3-10) - ) - ) - ) + (set! (-> s5-6 base) (&+ (the-as pointer v1-107) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id eyes) + gp-6 + (the-as (pointer dma-tag) a3-10)))) 0 - (none) - ) + (none)) (defun get-eye-block ((arg0 int) (arg1 int)) (#when PC_PORT ;; hack to make this easier to figure out on the PC side. - (return (+ *eyes-base-block* (* arg0 2) arg1)) - ) + (return (+ *eyes-base-block* (* arg0 2) arg1))) (let ((v1-0 arg0) - (a0-4 (-> ct32-24-block-table (* arg1 4))) - ) - (+ *eyes-base-block* (* v1-0 32) a0-4) - ) - ) + (a0-4 (-> ct32-24-block-table (* arg1 4)))) + (+ *eyes-base-block* (* v1-0 32) a0-4))) (defun convert-eye-data ((arg0 eye) (arg1 uint)) - (local-vars - (v0-0 float) - (v1-0 uint128) - (v1-1 uint128) - (v1-2 uint128) - (v1-3 uint128) - (v1-4 uint128) - (v1-5 uint128) - ) + (local-vars (v0-0 float) (v1-0 uint128) (v1-1 uint128) (v1-2 uint128) (v1-3 uint128) (v1-4 uint128) (v1-5 uint128)) (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (.pextlb v1-0 arg1 0) (.pextlh v1-1 v1-0 0) (.pw.sra v1-2 v1-1 16) @@ -1132,100 +899,65 @@ (.svf (&-> arg0 data 0 quad) vf1) (.svf (&-> arg0 data 1 quad) vf2) (.mov v0-0 vf2) - v0-0 - ) - ) + v0-0)) (defun merc-eye-anim ((arg0 process-drawable)) (let* ((s5-0 (-> arg0 draw mgeo header eye-ctrl)) (a0-1 (-> arg0 skel root-channel 0)) - (s4-0 (-> a0-1 frame-group)) - ) + (s4-0 (-> a0-1 frame-group))) (when (and (logtest? (-> arg0 skel status) (janim-status eye)) (nonzero? s5-0) (> (-> arg0 skel active-channels) 0) s4-0 - (nonzero? (-> s4-0 eye-anim-data)) - ) + (nonzero? (-> s4-0 eye-anim-data))) (let* ((v1-15 (-> *eye-control-array* data (-> s5-0 eye-slot))) (s3-1 (min (the int (-> a0-1 frame-num)) (-> s4-0 eye-anim-data max-frame))) (s2-1 (min (+ (the int (-> a0-1 frame-num)) 1) (-> s4-0 eye-anim-data max-frame))) (f0-4 (-> a0-1 frame-num)) - (f30-0 (- f0-4 (* (the float (the int (/ f0-4 1.0))) 1.0))) - ) + (f30-0 (- f0-4 (* (the float (the int (/ f0-4 1.0))) 1.0)))) (set! (-> v1-15 process) (process->handle arg0)) (set! (-> v1-15 shaders) (the-as (inline-array adgif-shader) (-> s5-0 iris-shader))) - (set! (-> v1-15 level) (the-as uint (-> (if (-> arg0 entity) - (-> arg0 entity extra level) - (-> *level* level-default) - ) - index - ) - ) - ) + (set! (-> v1-15 level) + (the-as uint (-> (if (-> arg0 entity) (-> arg0 entity extra level) (-> *level* level-default)) index))) (let ((s1-0 (new 'stack-no-clear 'eye)) - (s0-0 (new 'stack-no-clear 'eye)) - ) + (s0-0 (new 'stack-no-clear 'eye))) (cond ((-> s4-0 eye-anim-data) (convert-eye-data s1-0 (-> s4-0 eye-anim-data data (* s3-1 2) dword)) (convert-eye-data s0-0 (-> s4-0 eye-anim-data data (* s2-1 2) dword)) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 left)) (* 96 (-> s5-0 eye-slot)))) - (the-as vector (-> s1-0 data)) - (the-as vector (-> s0-0 data)) - f30-0 - ) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 left data 1)) (* 96 (-> s5-0 eye-slot)))) - (-> s1-0 data 1) - (-> s0-0 data 1) - f30-0 - ) + (vector4-lerp! (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 left)) (* 96 (-> s5-0 eye-slot)))) + (the-as vector (-> s1-0 data)) + (the-as vector (-> s0-0 data)) + f30-0) + (vector4-lerp! (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 left data 1)) (* 96 (-> s5-0 eye-slot)))) + (-> s1-0 data 1) + (-> s0-0 data 1) + f30-0) (convert-eye-data s1-0 (-> s4-0 eye-anim-data data (+ (* s3-1 2) 1) dword)) (convert-eye-data s0-0 (-> s4-0 eye-anim-data data (+ (* s2-1 2) 1) dword)) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 right)) (* 96 (-> s5-0 eye-slot)))) - (the-as vector (-> s1-0 data)) - (the-as vector (-> s0-0 data)) - f30-0 - ) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 right data 1)) (* 96 (-> s5-0 eye-slot)))) - (-> s1-0 data 1) - (-> s0-0 data 1) - f30-0 - ) - ) + (vector4-lerp! (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 right)) (* 96 (-> s5-0 eye-slot)))) + (the-as vector (-> s1-0 data)) + (the-as vector (-> s0-0 data)) + f30-0) + (vector4-lerp! (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 right data 1)) (* 96 (-> s5-0 eye-slot)))) + (-> s1-0 data 1) + (-> s0-0 data 1) + f30-0)) (else - (let ((v1-37 (-> *eye-control-array* data (-> s5-0 eye-slot)))) - (set! (-> v1-37 left data 0 x) 0.0) - (set! (-> v1-37 left data 0 y) 0.0) - (set! (-> v1-37 left data 0 z) -1.0) - (set! (-> v1-37 left data 1 x) 1.0) - (set! (-> v1-37 left data 1 y) 1.0) - (set! (-> v1-37 left data 1 z) 1.0) - (set! (-> v1-37 right data 0 x) 0.0) - (set! (-> v1-37 right data 0 y) 0.0) - (set! (-> v1-37 right data 0 z) -1.0) - (set! (-> v1-37 right data 1 x) 1.0) - (set! (-> v1-37 right data 1 y) 1.0) - (set! (-> v1-37 right data 1 z) 1.0) - ) - ) - ) - ) - ) - (logior! (-> arg0 skel status) (janim-status eye-done)) - ) - ) - (if (logtest? (-> arg0 skel status) (janim-status eye-done)) - (logclear! (-> arg0 skel status) (janim-status eye-done)) - ) + (let ((v1-37 (-> *eye-control-array* data (-> s5-0 eye-slot)))) + (set! (-> v1-37 left data 0 x) 0.0) + (set! (-> v1-37 left data 0 y) 0.0) + (set! (-> v1-37 left data 0 z) -1.0) + (set! (-> v1-37 left data 1 x) 1.0) + (set! (-> v1-37 left data 1 y) 1.0) + (set! (-> v1-37 left data 1 z) 1.0) + (set! (-> v1-37 right data 0 x) 0.0) + (set! (-> v1-37 right data 0 y) 0.0) + (set! (-> v1-37 right data 0 z) -1.0) + (set! (-> v1-37 right data 1 x) 1.0) + (set! (-> v1-37 right data 1 y) 1.0) + (set! (-> v1-37 right data 1 z) 1.0)))))) + (logior! (-> arg0 skel status) (janim-status eye-done)))) + (if (logtest? (-> arg0 skel status) (janim-status eye-done)) (logclear! (-> arg0 skel status) (janim-status eye-done))) 0 - (none) - ) - - - - + (none)) diff --git a/goal_src/jak1/engine/gfx/foreground/ripple.gc b/goal_src/jak1/engine/gfx/foreground/ripple.gc index 4404e577b4..3e3aab2b19 100644 --- a/goal_src/jak1/engine/gfx/foreground/ripple.gc +++ b/goal_src/jak1/engine/gfx/foreground/ripple.gc @@ -1,60 +1,41 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/math/quaternion.gc") (require "engine/gfx/merc/merc-h.gc") (require "kernel/gkernel-h.gc") (require "engine/game/game-h.gc") - -;; name: ripple.gc -;; name in dgo: ripple -;; dgos: GAME, ENGINE - (define-extern ripple-create-wave-table (function ripple-wave-set int)) + (define-extern ripple-apply-wave-table (function merc-effect symbol)) ;; DECOMP BEGINS (deftype ripple-request (structure) - ((waveform ripple-wave) - (effect merc-effect) - ) - :pack-me - ) - + ((waveform ripple-wave) + (effect merc-effect)) + :pack-me) (deftype ripple-globals (structure) - ((count int32) - (requests ripple-request 16 :inline) - ) - ) - + ((count int32) + (requests ripple-request 16 :inline))) (define *ripple-globals* (new 'global 'ripple-globals)) (defun ripple-make-request ((arg0 ripple-wave) (arg1 merc-effect)) (let ((v1-1 (-> *ripple-globals* count)) (a2-1 (-> *ripple-globals* requests)) - (a3-0 0) - ) + (a3-0 0)) (when (< v1-1 16) (dotimes (t0-1 v1-1) - (if (= arg1 (-> a2-1 t0-1 effect)) - (set! a3-0 1) - ) - ) + (if (= arg1 (-> a2-1 t0-1 effect)) (set! a3-0 1))) (when (zero? a3-0) (set! (-> a2-1 v1-1 effect) arg1) (set! (-> a2-1 v1-1 waveform) arg0) - (+! (-> *ripple-globals* count) 1) - ) - ) - ) + (+! (-> *ripple-globals* count) 1)))) 0 - (none) - ) + (none)) (defun ripple-update-waveform-offs ((arg0 ripple-wave-set)) (let ((f0-1 (the float (- (-> *display* integral-frame-counter) (the-as int (-> arg0 frame-save)))))) @@ -62,15 +43,10 @@ (dotimes (v1-4 (-> arg0 count)) (let ((a1-4 (-> arg0 wave v1-4))) (+! (-> a1-4 offs) (* f0-1 (-> a1-4 delta))) - (set! (-> a1-4 offs) (the float (logand (the int (-> a1-4 offs)) #xffff))) - ) - ) - (set! (-> arg0 frame-save) (the-as uint (-> *display* integral-frame-counter))) - ) - ) + (set! (-> a1-4 offs) (the float (logand (the int (-> a1-4 offs)) #xffff))))) + (set! (-> arg0 frame-save) (the-as uint (-> *display* integral-frame-counter))))) 0 - (none) - ) + (none)) (def-mips2c ripple-execute-init (function none)) @@ -83,85 +59,57 @@ (ripple-execute-init) (let ((gp-0 0) (s5-0 (-> *ripple-globals* count)) - (s4-0 (-> *ripple-globals* requests)) - ) + (s4-0 (-> *ripple-globals* requests))) (while (!= gp-0 s5-0) (when (-> s4-0 gp-0 waveform) (let ((s3-0 gp-0) - (s2-0 (-> s4-0 gp-0 waveform)) - ) + (s2-0 (-> s4-0 gp-0 waveform))) (ripple-create-wave-table (the-as ripple-wave-set s2-0)) (while (!= s3-0 s5-0) (when (= s2-0 (-> s4-0 s3-0 waveform)) (ripple-apply-wave-table (-> s4-0 s3-0 effect)) - (set! (-> s4-0 s3-0 waveform) #f) - ) - (+! s3-0 1) - ) - ) - ) - (+! gp-0 1) - ) - ) + (set! (-> s4-0 s3-0 waveform) #f)) + (+! s3-0 1)))) + (+! gp-0 1))) (set! (-> *ripple-globals* count) 0) - 0 - ) - (none) - ) + 0) + (none)) (def-mips2c ripple-matrix-scale function) (defun-debug ripple-add-debug-sphere ((arg0 process-drawable) (arg1 vector) (arg2 float) (arg3 float)) (let ((f30-0 (- (quaternion-y-angle (-> arg0 root quat)))) - (s5-0 (new-stack-vector0)) - ) + (s5-0 (new-stack-vector0))) (let ((f28-0 (+ (-> arg1 x) (* arg2 (-> arg1 z)))) - (f26-0 (+ (-> arg1 y) (* arg3 (-> arg1 z)))) - ) + (f26-0 (+ (-> arg1 y) (* arg3 (-> arg1 z))))) (set! (-> s5-0 x) (- (* f28-0 (cos f30-0)) (* f26-0 (sin f30-0)))) (set! (-> s5-0 y) 0.0) - (set! (-> s5-0 z) (+ (* f26-0 (cos f30-0)) (* f28-0 (sin f30-0)))) - ) + (set! (-> s5-0 z) (+ (* f26-0 (cos f30-0)) (* f28-0 (sin f30-0))))) (set! (-> s5-0 w) 0.0) (vector+! s5-0 s5-0 (-> arg0 root trans)) - (add-debug-sphere #t (bucket-id debug) s5-0 2048.0 (new 'static 'rgba :r #xff :g #xff :a #x80)) - ) - (none) - ) + (add-debug-sphere #t (bucket-id debug) s5-0 2048.0 (new 'static 'rgba :r #xff :g #xff :a #x80))) + (none)) (defun ripple-slow-add-sine-waves ((arg0 ripple-wave-set) (arg1 float) (arg2 float)) (let ((f30-0 0.0)) (dotimes (s3-0 (-> arg0 count)) (let* ((v1-3 (-> arg0 wave s3-0)) - (f0-2 (+ (-> v1-3 offs) (* arg1 (-> v1-3 xmul)) (* arg2 (-> v1-3 zmul)))) - ) - (+! f30-0 (* (-> v1-3 scale) (cos f0-2))) - ) - ) - (fmax -127.0 (fmin 127.0 f30-0)) - ) - ) + (f0-2 (+ (-> v1-3 offs) (* arg1 (-> v1-3 xmul)) (* arg2 (-> v1-3 zmul))))) + (+! f30-0 (* (-> v1-3 scale) (cos f0-2))))) + (fmax -127.0 (fmin 127.0 f30-0)))) (defun ripple-find-height ((arg0 process-drawable) (arg1 int) (arg2 vector)) (local-vars (sv-16 float) (sv-32 float)) (let* ((f30-0 (-> arg0 root trans y)) (v1-1 (-> arg0 draw)) - (a1-5 (-> v1-1 lod-set lod (-> v1-1 cur-lod) geo effect)) - ) - (if (or (not (logtest? (-> a1-5 0 effect-bits) 4)) (not (-> v1-1 ripple))) - (return f30-0) - ) + (a1-5 (-> v1-1 lod-set lod (-> v1-1 cur-lod) geo effect))) + (if (or (not (logtest? (-> a1-5 0 effect-bits) 4)) (not (-> v1-1 ripple))) (return f30-0)) (let* ((a1-6 (-> a1-5 0 extra-info)) (s4-0 (the-as mei-ripple (+ (the-as uint a1-6) (* (-> a1-6 ripple-offset) 16)))) (gp-0 (-> v1-1 ripple)) - (s5-0 (-> gp-0 waveform)) - ) - (if (not (-> gp-0 waveform)) - (return f30-0) - ) - (if (not (-> s5-0 converted)) - (return f30-0) - ) + (s5-0 (-> gp-0 waveform))) + (if (not (-> gp-0 waveform)) (return f30-0)) + (if (not (-> s5-0 converted)) (return f30-0)) (let* ((f28-0 (- (-> arg2 x) (-> arg0 root trans x))) (f26-0 (- (-> arg2 z) (-> arg0 root trans z))) (f22-0 (+ (quaternion-y-angle (-> arg0 root quat)) (-> s4-0 angle))) @@ -171,28 +119,17 @@ (f1-5 (+ (* f26-0 f24-0) (* f28-0 f1-3))) (f2-3 (/ 1.0 (-> s4-0 grid-size))) (f28-1 (* f2-3 (- f0-4 (-> s4-0 x-base)))) - (f26-1 (* f2-3 (- f1-5 (-> s4-0 z-base)))) - ) + (f26-1 (* f2-3 (- f1-5 (-> s4-0 z-base))))) (ripple-update-waveform-offs s5-0) (let* ((f22-1 (the float (the int f28-1))) (f24-1 (the float (the int f26-1))) - (f20-0 (ripple-slow-add-sine-waves s5-0 f22-1 f24-1)) - ) + (f20-0 (ripple-slow-add-sine-waves s5-0 f22-1 f24-1))) (set! sv-16 (ripple-slow-add-sine-waves s5-0 (+ 1.0 f22-1) f24-1)) (set! sv-32 (ripple-slow-add-sine-waves s5-0 f22-1 (+ 1.0 f24-1))) (let* ((f1-6 (ripple-slow-add-sine-waves s5-0 (+ 1.0 f22-1) (+ 1.0 f24-1))) (f0-22 (+ f20-0 (* (- f28-1 f22-1) (- sv-16 f20-0)))) (f1-9 (+ sv-32 (* (- f28-1 f22-1) (- f1-6 sv-32)))) (f1-12 (+ f0-22 (* (- f26-1 f24-1) (- f1-9 f0-22)))) - (f0-23 (-> gp-0 faded-scale)) - ) - (if (< f0-23 0.0) - (set! f0-23 (-> gp-0 global-scale)) - ) - (+ f30-0 (* 0.0078125 f1-12 f0-23)) - ) - ) - ) - ) - ) - ) + (f0-23 (-> gp-0 faded-scale))) + (if (< f0-23 0.0) (set! f0-23 (-> gp-0 global-scale))) + (+ f30-0 (* 0.0078125 f1-12 f0-23)))))))) diff --git a/goal_src/jak1/engine/gfx/generic/generic-effect.gc b/goal_src/jak1/engine/gfx/generic/generic-effect.gc index a23dea4ef2..c0343e6ea7 100644 --- a/goal_src/jak1/engine/gfx/generic/generic-effect.gc +++ b/goal_src/jak1/engine/gfx/generic/generic-effect.gc @@ -1,80 +1,75 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/lights-h.gc") (require "engine/gfx/generic/generic-vu0.gc") (require "engine/gfx/texture/texture.gc") (require "engine/gfx/background/subdivide-h.gc") (require "engine/gfx/generic/generic-h.gc") - -;; name: generic-effect.gc -;; name in dgo: generic-effect -;; dgos: GAME, ENGINE - (define-extern *generic-envmap-texture* texture) (define *target-lock* (the-as symbol 0)) (define *generic-consts* - (new 'static 'generic-consts - :dma-header - (new 'static 'dma-packet - :dma - (new 'static 'dma-tag :id (dma-tag-id cnt)) - :vif0 - (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) - ) - :vif-header - (new 'static 'array uint32 4 #x1000404 #x1000404 #x1000404 #x6c000000) - :dma-ref-vtxs - (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) - :dma-cnt-call - (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id cnt))) - :matrix - (new 'static 'matrix - :vector - (new 'static 'inline-array vector 4 - (new 'static 'vector :x 1.0) - (new 'static 'vector :y 1.0) - (new 'static 'vector :z 1.0) - (new 'static 'vector :w 1.0) - ) - ) - :base-strgif - (new 'static 'generic-gif-tag :data (new 'static 'array uint32 4 #x303ec000 #x303e4000 #x412 #x0)) - :alpha-opaque - (new 'static 'ad-cmd :word (new 'static 'array uint32 4 #x0 #x0 #x42 #x0)) - :alpha-translucent - (new 'static 'ad-cmd :word (new 'static 'array uint32 4 #x44 #x0 #x42 #x0)) - :ztest-normal - (new 'static 'ad-cmd :word (new 'static 'array uint32 4 #x5026b #x0 #x47 #x0)) - :ztest-opaque - (new 'static 'ad-cmd :word (new 'static 'array uint32 4 #x5000a #x0 #x47 #x0)) - :adcmd-offsets - (new 'static 'array uint8 16 #x0 #x20 #x10 #x20 #x0 #x30 #x20 #x20 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0) - :stcycle-tag #x1000103 - :unpack-vtx-tag #x68000000 - :unpack-clr-tag #x6e004000 - :unpack-tex-tag #x65000000 - :mscal-tag #x14000006 - :reset-cycle-tag #x1000404 - :dma-tag-cnt #x10000000 - :envmap - (new 'static 'generic-envmap-consts - :consts - (new 'static 'vector :x 1.0 :z 0.5 :w 0.5) - :strgif - (new 'static 'generic-gif-tag :data (new 'static 'array uint32 4 #x302ec000 #x302e4000 #x412 #x0)) - :colors - (new 'static 'vector4w :x -2139062144 :y -2139062144 :z -2139062144 :w -2139062144) - ) - :light-consts - (new 'static 'vector :x 255.0 :y 8388608.0) - ) - ) + (new 'static + 'generic-consts + :dma-header + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32))) + :vif-header + (new 'static 'array uint32 4 #x1000404 #x1000404 #x1000404 #x6c000000) + :dma-ref-vtxs + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :dma-cnt-call + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id cnt))) + :matrix + (new 'static + 'matrix + :vector + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :x 1.0) + (new 'static 'vector :y 1.0) + (new 'static 'vector :z 1.0) + (new 'static 'vector :w 1.0))) + :base-strgif + (new 'static 'generic-gif-tag :data (new 'static 'array uint32 4 #x303ec000 #x303e4000 #x412 #x0)) + :alpha-opaque + (new 'static 'ad-cmd :word (new 'static 'array uint32 4 #x0 #x0 #x42 #x0)) + :alpha-translucent + (new 'static 'ad-cmd :word (new 'static 'array uint32 4 #x44 #x0 #x42 #x0)) + :ztest-normal + (new 'static 'ad-cmd :word (new 'static 'array uint32 4 #x5026b #x0 #x47 #x0)) + :ztest-opaque + (new 'static 'ad-cmd :word (new 'static 'array uint32 4 #x5000a #x0 #x47 #x0)) + :adcmd-offsets + (new 'static 'array uint8 16 #x0 #x20 #x10 #x20 #x0 #x30 #x20 #x20 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0) + :stcycle-tag #x1000103 + :unpack-vtx-tag #x68000000 + :unpack-clr-tag #x6e004000 + :unpack-tex-tag #x65000000 + :mscal-tag #x14000006 + :reset-cycle-tag #x1000404 + :dma-tag-cnt #x10000000 + :envmap + (new 'static + 'generic-envmap-consts + :consts + (new 'static 'vector :x 1.0 :z 0.5 :w 0.5) + :strgif + (new 'static 'generic-gif-tag :data (new 'static 'array uint32 4 #x302ec000 #x302e4000 #x412 #x0)) + :colors + (new 'static 'vector4w :x -2139062144 :y -2139062144 :z -2139062144 :w -2139062144)) + :light-consts + (new 'static 'vector :x 255.0 :y 8388608.0))) (defun generic-work-init ((arg0 generic-dma-foreground-sink)) "Initialize generic-work." @@ -83,21 +78,13 @@ (the-as pointer *generic-consts*) 27) ;; set buffer addresses - (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves gifbuf-adr) - (-> arg0 state gifbuf-adr) - ) - (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves inbuf-adr) - (-> arg0 state inbuf-adr) - ) + (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves gifbuf-adr) (-> arg0 state gifbuf-adr)) + (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves inbuf-adr) (-> arg0 state inbuf-adr)) (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves cur-outbuf) - (the-as uint (+ 8192 (scratchpad-object int))) - ) - + (the-as uint (+ 8192 (scratchpad-object int)))) ;; initialize the environment map "shader". This isn't a real shader, but just texturing settings. (let ((gp-1 (-> (scratchpad-object terrain-context) work foreground generic-work fx-buf work consts envmap shader))) - (let ((a1-1 *generic-envmap-texture*)) - (adgif-shader<-texture! gp-1 a1-1) - ) + (let ((a1-1 *generic-envmap-texture*)) (adgif-shader<-texture! gp-1 a1-1)) (set! (-> gp-1 tex1) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) (set! (-> gp-1 clamp) (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) (set! (-> gp-1 alpha) (new 'static 'gs-alpha :b #x2 :c #x1 :d #x1)) @@ -105,22 +92,18 @@ (set! (-> gp-1 prims 3) (gs-reg64 tex1-1)) (set! (-> gp-1 prims 5) (gs-reg64 miptbp1-1)) (set! (-> gp-1 clamp-reg) (gs-reg64 clamp-1)) - (set! (-> gp-1 prims 9) (gs-reg64 alpha-1)) - ) - (none) - ) + (set! (-> gp-1 prims 9) (gs-reg64 alpha-1))) + (none)) (defun upload-vu0-program ((func vu-function) (wait-ptr pointer)) "Upload and block until done. Generating the DMA is highly optimized." - (none) - ) + (none)) (defun generic-upload-vu0 () "Start upload, but don't sync yet. Generating the DMA chain is not as optimized." - (none) - ) + (none)) (defun generic-initialize-without-sink ((arg0 matrix) (arg1 vu-lights)) "Prepare for Generic. @@ -132,8 +115,7 @@ (v1-1 (-> arg0 vector 0 quad)) (a0-3 (-> arg0 vector 1 quad)) (a1-2 (-> arg0 vector 2 quad)) - (a3-0 (-> arg0 vector 3 quad)) - ) + (a3-0 (-> arg0 vector 3 quad))) ;;(set! (-> (the-as (pointer uint128) a2-0)) v1-1) (set! (-> a2-0 vector 0 quad) v1-1) ;;(s.q! (+ a2-0 16) a0-3) @@ -141,16 +123,14 @@ ;; (s.q! (+ a2-0 32) a1-2) (set! (-> a2-0 vector 2 quad) a1-2) ;;(s.q! (+ a2-0 48) a3-0) - (set! (-> a2-0 vector 3 quad) a3-0) - ) - + (set! (-> a2-0 vector 3 quad) a3-0)) (if arg1 - ;;(quad-copy! (the-as pointer (+ #x3190 #x70000000)) (the-as pointer arg1) 7) - (quad-copy! (the pointer (-> (scratchpad-object terrain-context) work foreground generic-work fx-buf work lights)) (the-as pointer arg1) 7) - ) + ;;(quad-copy! (the-as pointer (+ #x3190 #x70000000)) (the-as pointer arg1) 7) + (quad-copy! (the pointer (-> (scratchpad-object terrain-context) work foreground generic-work fx-buf work lights)) + (the-as pointer arg1) + 7)) 0 - (none) - ) + (none)) (defun generic-initialize ((arg0 generic-dma-foreground-sink) (arg1 matrix) (arg2 vu-lights)) (generic-work-init arg0) @@ -160,27 +140,27 @@ (v1-1 (-> arg1 vector 0 quad)) (a0-2 (-> arg1 vector 1 quad)) (a1-1 (-> arg1 vector 2 quad)) - (a3-0 (-> arg1 vector 3 quad)) - ) + (a3-0 (-> arg1 vector 3 quad))) (set! (-> a2-1 vector 0 quad) v1-1) (set! (-> a2-1 vector 1 quad) a0-2) (set! (-> a2-1 vector 2 quad) a1-1) - (set! (-> a2-1 vector 3 quad) a3-0) - ) + (set! (-> a2-1 vector 3 quad) a3-0)) (if arg2 - (quad-copy! (the-as pointer (-> (scratchpad-object terrain-context) work foreground generic-work fx-buf work lights)) (the-as pointer arg2) 7) - ) + (quad-copy! (the-as pointer (-> (scratchpad-object terrain-context) work foreground generic-work fx-buf work lights)) + (the-as pointer arg2) + 7)) 0 - (none) - ) + (none)) (defun generic-wrapup ((arg0 generic-dma-foreground-sink)) (set! (-> arg0 state gifbuf-adr) (-> (scratchpad-object terrain-context) work foreground generic-work saves gifbuf-adr)) (set! (-> arg0 state inbuf-adr) (-> (scratchpad-object terrain-context) work foreground generic-work saves inbuf-adr)) - (none) - ) + (none)) (def-mips2c generic-prepare-dma-single function) + (def-mips2c generic-prepare-dma-double function) + (def-mips2c generic-light-proc function) -(def-mips2c generic-envmap-proc function) \ No newline at end of file + +(def-mips2c generic-envmap-proc function) diff --git a/goal_src/jak1/engine/gfx/generic/generic-h.gc b/goal_src/jak1/engine/gfx/generic/generic-h.gc index b099f5fe06..db2caaaf59 100644 --- a/goal_src/jak1/engine/gfx/generic/generic-h.gc +++ b/goal_src/jak1/engine/gfx/generic/generic-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: generic-h.gc -;; name in dgo: generic-h -;; dgos: GAME, ENGINE - ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; GENERIC RENDERER ;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -33,208 +28,154 @@ ;; gsf, what does it stand for? (deftype gsf-vertex (structure) - ((data uint32 8) - (byte uint8 32 :overlay-at (-> data 0)) - (quad uint128 2 :overlay-at (-> data 0)) - (vt qword :inline :overlay-at (-> data 0)) - (pos vector3s :inline :overlay-at (-> data 0)) - (tex vector2uh :inline :overlay-at (-> data 3)) - (nrm vector3s :inline :overlay-at (-> data 4)) - (nc qword :inline :overlay-at (-> data 4)) - (clr vector4ub :inline :overlay-at (-> data 7)) - (dtex vector2uh :inline :overlay-at (-> data 4)) - (dclr vector4ub :inline :overlay-at (-> data 5)) - ) - :pack-me - ) - + ((data uint32 8) + (byte uint8 32 :overlay-at (-> data 0)) + (quad uint128 2 :overlay-at (-> data 0)) + (vt qword :inline :overlay-at (-> data 0)) + (pos vector3s :inline :overlay-at (-> data 0)) + (tex vector2uh :inline :overlay-at (-> data 3)) + (nrm vector3s :inline :overlay-at (-> data 4)) + (nc qword :inline :overlay-at (-> data 4)) + (clr vector4ub :inline :overlay-at (-> data 7)) + (dtex vector2uh :inline :overlay-at (-> data 4)) + (dclr vector4ub :inline :overlay-at (-> data 5))) + :pack-me) (deftype gsf-vertex-array (structure) - ((vtx gsf-vertex :dynamic) - ) - ) - + ((vtx gsf-vertex :dynamic))) (deftype gsf-fx-vertex (structure) - ((clr vector4ub :inline) - (tex vector2uh :inline) - ) - ) - + ((clr vector4ub :inline) + (tex vector2uh :inline))) (deftype gsf-fx-vertex-array (structure) - ((data gsf-fx-vertex :dynamic) - ) - ) - + ((data gsf-fx-vertex :dynamic))) (deftype gsf-header (structure) - ((num-strips uint8) - (expanded uint8) - (num-dps uint16) - (num-vtxs uint16) - (strip-table uint8 10) - ) - ) - + ((num-strips uint8) + (expanded uint8) + (num-dps uint16) + (num-vtxs uint16) + (strip-table uint8 10))) (deftype gsf-ik (structure) - ((index uint8) - (no-kick uint8) - ) - ) - + ((index uint8) + (no-kick uint8))) (deftype gsf-info (structure) - ((ptr-iks uint32) - (ptr-verts uint32) - (ptr-fx uint32) - (dummy2 uint32) - ) - ) - + ((ptr-iks uint32) + (ptr-verts uint32) + (ptr-fx uint32) + (dummy2 uint32))) (deftype gsf-buffer (structure) - ((data uint8 8192) - (info gsf-info :inline :overlay-at (-> data 0)) - (header gsf-header :inline :overlay-at (-> data 16)) - (work-area uint8 :dynamic :overlay-at (-> data 32)) - ) - ) - + ((data uint8 8192) + (info gsf-info :inline :overlay-at (-> data 0)) + (header gsf-header :inline :overlay-at (-> data 16)) + (work-area uint8 :dynamic :overlay-at (-> data 32)))) (deftype generic-frag (structure) - ((start-pos uint16) - (end-pos uint16) - ) - ) - + ((start-pos uint16) + (end-pos uint16))) (deftype generic-strip (structure) - ((pos uint16) - (len uint16) - ) - ) - + ((pos uint16) + (len uint16))) (deftype generic-envmap-saves (structure) - ((index-mask vector4w :inline) - (verts uint128 12) - (kicks uint128 4) - ) - ) - + ((index-mask vector4w :inline) + (verts uint128 12) + (kicks uint128 4))) (deftype generic-interp-job (structure) - ((job-type uint16) - (num uint16) - (first uint16) - (pad uint16) - (ptr-data uint32) - (morph-z uint16) - (morph-w uint16) - ) - :pack-me - ) - + ((job-type uint16) + (num uint16) + (first uint16) + (pad uint16) + (ptr-data uint32) + (morph-z uint16) + (morph-w uint16)) + :pack-me) (deftype generic-saves (structure) - ((ptr-dma uint32) - (ptr-vtxs uint32) - (ptr-clrs uint32) - (ptr-texs uint32) - (ptr-env-clrs uint32) - (ptr-env-texs uint32) - (cur-outbuf uint32) - (ptr-fx-buf uint32) - (xor-outbufs uint32) - (num-dps uint32) - (qwc uint32) - (gsf-buf gsf-buffer) - (ptr-shaders uint32) - (ptr-env-shader uint32) - (is-envmap uint32) - (basep uint32) - (ptr-interp-job generic-interp-job) - (gifbuf-adr uint32) - (inbuf-adr uint32) - (fade-val uint32) - (time-of-day-color rgba) - (to-vu0-waits uint32) - (to-spr-waits uint32) - (from-spr-waits uint32) - (envmap generic-envmap-saves :inline) - ) - ) - + ((ptr-dma uint32) + (ptr-vtxs uint32) + (ptr-clrs uint32) + (ptr-texs uint32) + (ptr-env-clrs uint32) + (ptr-env-texs uint32) + (cur-outbuf uint32) + (ptr-fx-buf uint32) + (xor-outbufs uint32) + (num-dps uint32) + (qwc uint32) + (gsf-buf gsf-buffer) + (ptr-shaders uint32) + (ptr-env-shader uint32) + (is-envmap uint32) + (basep uint32) + (ptr-interp-job generic-interp-job) + (gifbuf-adr uint32) + (inbuf-adr uint32) + (fade-val uint32) + (time-of-day-color rgba) + (to-vu0-waits uint32) + (to-spr-waits uint32) + (from-spr-waits uint32) + (envmap generic-envmap-saves :inline))) (deftype generic-gif-tag (structure) - ((data uint32 4) - (qword qword :inline :overlay-at (-> data 0)) - (fan-prim uint32 :overlay-at (-> data 0)) - (str-prim uint32 :overlay-at (-> data 1)) - (regs uint32 :overlay-at (-> data 2)) - (num-strips uint32 :overlay-at (-> data 3)) - ) - ) - + ((data uint32 4) + (qword qword :inline :overlay-at (-> data 0)) + (fan-prim uint32 :overlay-at (-> data 0)) + (str-prim uint32 :overlay-at (-> data 1)) + (regs uint32 :overlay-at (-> data 2)) + (num-strips uint32 :overlay-at (-> data 3)))) (deftype ad-cmd (structure) - ((word uint32 4) - (quad uint128 :overlay-at (-> word 0)) - (data uint64 :overlay-at (-> word 0)) - (cmds uint64 :overlay-at (-> word 2)) - (cmd gs-reg :overlay-at (-> word 2)) - (x uint32 :overlay-at (-> word 0)) - (y uint32 :overlay-at (-> word 1)) - (z uint32 :overlay-at (-> word 2)) - (w uint32 :overlay-at (-> word 3)) - ) - ) - + ((word uint32 4) + (quad uint128 :overlay-at (-> word 0)) + (data uint64 :overlay-at (-> word 0)) + (cmds uint64 :overlay-at (-> word 2)) + (cmd gs-reg :overlay-at (-> word 2)) + (x uint32 :overlay-at (-> word 0)) + (y uint32 :overlay-at (-> word 1)) + (z uint32 :overlay-at (-> word 2)) + (w uint32 :overlay-at (-> word 3)))) (deftype generic-envmap-consts (structure) - ((consts vector :inline) - (strgif generic-gif-tag :inline) - (colors vector4w :inline) - (shader adgif-shader :inline) - ) - ) - + ((consts vector :inline) + (strgif generic-gif-tag :inline) + (colors vector4w :inline) + (shader adgif-shader :inline))) (deftype generic-consts (structure) - ((dma-header dma-packet :inline) - (vif-header uint32 4) - (dma-ref-vtxs dma-packet :inline) - (dma-cnt-call dma-packet :inline) - (matrix matrix :inline) - (base-strgif generic-gif-tag :inline) - (alpha-opaque ad-cmd :inline) - (alpha-translucent ad-cmd :inline) - (ztest-normal ad-cmd :inline) - (ztest-opaque ad-cmd :inline) - (adcmd-offsets uint8 16) - (adcmds ad-cmd 4 :overlay-at alpha-opaque) - (stcycle-tag uint32) - (unpack-vtx-tag uint32) - (unpack-clr-tag uint32) - (unpack-tex-tag uint32) - (mscal-tag uint32) - (flush-tag uint32) - (reset-cycle-tag uint32) - (dummy0 uint32) - (dma-tag-cnt uint64) - (envmap generic-envmap-consts :inline) - (light-consts vector :inline) - (texture-offset uint16 8) - ) - ) - + ((dma-header dma-packet :inline) + (vif-header uint32 4) + (dma-ref-vtxs dma-packet :inline) + (dma-cnt-call dma-packet :inline) + (matrix matrix :inline) + (base-strgif generic-gif-tag :inline) + (alpha-opaque ad-cmd :inline) + (alpha-translucent ad-cmd :inline) + (ztest-normal ad-cmd :inline) + (ztest-opaque ad-cmd :inline) + (adcmd-offsets uint8 16) + (adcmds ad-cmd 4 :overlay-at alpha-opaque) + (stcycle-tag uint32) + (unpack-vtx-tag uint32) + (unpack-clr-tag uint32) + (unpack-tex-tag uint32) + (mscal-tag uint32) + (flush-tag uint32) + (reset-cycle-tag uint32) + (dummy0 uint32) + (dma-tag-cnt uint64) + (envmap generic-envmap-consts :inline) + (light-consts vector :inline) + (texture-offset uint16 8))) (deftype generic-storage (structure) - ((data uint128 16) - ) - ) - + ((data uint128 16))) (define *gsf-buffer* (the-as gsf-buffer (kmalloc global 9216 (kmalloc-flags align-64) "malloc"))) diff --git a/goal_src/jak1/engine/gfx/generic/generic-merc.gc b/goal_src/jak1/engine/gfx/generic/generic-merc.gc index f3ee428ca2..8f133a9090 100644 --- a/goal_src/jak1/engine/gfx/generic/generic-merc.gc +++ b/goal_src/jak1/engine/gfx/generic/generic-merc.gc @@ -1,39 +1,33 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/lights.gc") (require "engine/gfx/generic/generic-effect.gc") (require "engine/gfx/foreground/bones.gc") -;; name: generic-merc.gc -;; name in dgo: generic-merc -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define mercneric-vu0-block (new 'static 'vu-function :length #x0 :origin #x0 :qlength #x0)) (deftype invinitdata (structure) - ((count uint8) - (init-data uint8) - (init-addr uint16) - ) - :pack-me - ) - - -(define *inv-init-table* (new 'static 'inline-array invinitdata 8 - (new 'static 'invinitdata :count #x48 :init-addr #x1) - (new 'static 'invinitdata :count #x43 :init-data #xc :init-addr #x11) - (new 'static 'invinitdata :count #x3d :init-data #x18 :init-addr #x21) - (new 'static 'invinitdata :count #x38 :init-data #x22 :init-addr #xe0) - (new 'static 'invinitdata :count #x38 :init-data #x24 :init-addr #xe1) - (new 'static 'invinitdata :count #x33 :init-data #x30 :init-addr #xf1) - (new 'static 'invinitdata :count #x2e :init-data #x3a :init-addr #x190) - (new 'static 'invinitdata :count #x2d :init-data #x3c :init-addr #x191) - ) - ) + ((count uint8) + (init-data uint8) + (init-addr uint16)) + :pack-me) + +(define *inv-init-table* + (new 'static + 'inline-array + invinitdata + 8 + (new 'static 'invinitdata :count #x48 :init-addr #x1) + (new 'static 'invinitdata :count #x43 :init-data #xc :init-addr #x11) + (new 'static 'invinitdata :count #x3d :init-data #x18 :init-addr #x21) + (new 'static 'invinitdata :count #x38 :init-data #x22 :init-addr #xe0) + (new 'static 'invinitdata :count #x38 :init-data #x24 :init-addr #xe1) + (new 'static 'invinitdata :count #x33 :init-data #x30 :init-addr #xf1) + (new 'static 'invinitdata :count #x2e :init-data #x3a :init-addr #x190) + (new 'static 'invinitdata :count #x2d :init-data #x3c :init-addr #x191))) (def-mips2c generic-merc-init-asm (function none)) @@ -47,14 +41,14 @@ ;; (def-mips2c high-speed-reject function) ;; TODO mips2c (def-mips2c high-speed-reject (function none)) + (def-mips2c generic-merc-execute-asm (function none)) ;; TODO mips2c (defun generic-merc-add-to-cue ((arg0 generic-dma-foreground-sink)) (set! (-> *merc-globals* sink) arg0) (+! (-> *merc-global-array* count) 1) (set! *merc-globals* (-> *merc-global-array* globals (-> *merc-global-array* count))) - (none) - ) + (none)) (defun generic-merc-execute-all ((arg0 dma-buffer)) "Run the EE part of the generic renderer for all generic merc stuff. @@ -62,31 +56,18 @@ (local-vars (a0-26 int) (a0-28 int)) (when (nonzero? (-> *merc-global-array* count)) (let ((gp-0 (-> *display* frames (-> *display* on-screen) frame global-buf base))) - ;; set up performance stats (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))) (reset! (-> *perf-stats* data 1)) - (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves to-vu0-waits) - (the-as uint 0) - ) - (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves to-spr-waits) - (the-as uint 0) - ) - (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves from-spr-waits) - (the-as uint 0) - ) + (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves to-vu0-waits) (the-as uint 0)) + (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves to-spr-waits) (the-as uint 0)) + (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves from-spr-waits) (the-as uint 0)) (flush-cache 0) - ;; first, initialize the generic renderer. (generic-initialize-without-sink (-> *math-camera* perspective) *default-lights*) - ;; next, initialize the merc-specific stuff. ;; this give us function pointers to ;; - mercneric-convert @@ -97,27 +78,19 @@ ;; - high-speed-reject ;; and also loads the mercneric-vu0-block block with an offset of 280. (generic-merc-init-asm) - ;; set a limit, so we don't write off the end of the dma buffer. (set! (-> (scratchpad-object terrain-context) work foreground generic-work in-buf merc shadow write-limit) - (&+ (-> arg0 end) -65536) - ) - + (&+ (-> arg0 end) -65536)) (dotimes (s4-0 (the-as int (-> *merc-global-array* count))) (set! *merc-globals* (-> *merc-global-array* globals s4-0)) (let ((s3-0 (-> *merc-globals* sink))) (when (nonzero? (-> *merc-globals* first)) (let* ((s1-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s2-0 (-> s1-0 base)) - ) + (s2-0 (-> s1-0 base))) (generic-work-init s3-0) - (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves basep) - (the-as uint (-> s1-0 base)) - ) + (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves basep) (the-as uint (-> s1-0 base))) (generic-merc-execute-asm) - (set! (-> s1-0 base) - (the-as pointer (-> (scratchpad-object terrain-context) work foreground generic-work saves basep)) - ) + (set! (-> s1-0 base) (the-as pointer (-> (scratchpad-object terrain-context) work foreground generic-work saves basep))) ;; todo: this part might be important... ; (let ((v1-36 (the-as object #x1000d000)) ; (a0-19 (the-as object #x7000006c)) @@ -142,17 +115,11 @@ (set! (-> (the-as dma-packet v1-38) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-38) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-38) vif1) (new 'static 'vif-tag)) - (set! (-> s1-0 base) (&+ (the-as pointer v1-38) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (-> s3-0 bucket) - s2-0 - (the-as (pointer dma-tag) a3-0) - ) - ) - ) - + (set! (-> s1-0 base) (&+ (the-as pointer v1-38) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (-> s3-0 bucket) + s2-0 + (the-as (pointer dma-tag) a3-0)))) ; (let ((v1-44 (-> arg0 base))) ; (.sync.l) ; (.cache dxwbin v1-44 0) @@ -160,37 +127,23 @@ ; (.cache dxwbin v1-44 1) ; ) ; (.sync.l) - 0 - ) - ) - ) + 0))) (read! (-> *perf-stats* data 1)) 0 - (update-wait-stats - (-> *perf-stats* data 1) - (-> (scratchpad-object terrain-context) work foreground generic-work saves to-vu0-waits) - (-> (scratchpad-object terrain-context) work foreground generic-work saves to-spr-waits) - (-> (scratchpad-object terrain-context) work foreground generic-work saves from-spr-waits) - ) + (update-wait-stats (-> *perf-stats* data 1) + (-> (scratchpad-object terrain-context) work foreground generic-work saves to-vu0-waits) + (-> (scratchpad-object terrain-context) work foreground generic-work saves to-spr-waits) + (-> (scratchpad-object terrain-context) work foreground generic-work saves from-spr-waits)) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80))) (let ((v1-64 *dma-mem-usage*)) (when (nonzero? v1-64) (set! (-> v1-64 length) (max 87 (-> v1-64 length))) (set! (-> v1-64 data 86 name) "pris-generic") (+! (-> v1-64 data 86 count) 1) (+! (-> v1-64 data 86 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint gp-0)) - ) - (set! (-> v1-64 data 86 total) (-> v1-64 data 86 used)) - ) - ) - ) - ) - (none) - ) + (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint gp-0))) + (set! (-> v1-64 data 86 total) (-> v1-64 data 86 used)))))) + (none)) diff --git a/goal_src/jak1/engine/gfx/generic/generic-tie.gc b/goal_src/jak1/engine/gfx/generic/generic-tie.gc index efd31d5f2e..7326804385 100644 --- a/goal_src/jak1/engine/gfx/generic/generic-tie.gc +++ b/goal_src/jak1/engine/gfx/generic/generic-tie.gc @@ -1,25 +1,22 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/background/subdivide.gc") (require "engine/gfx/mood/time-of-day-h.gc") (require "engine/gfx/lights.gc") (require "engine/gfx/generic/generic-effect.gc") (require "engine/collide/collide-shape-h.gc") - -;; name: generic-tie.gc -;; name in dgo: generic-tie -;; dgos: GAME, ENGINE - (define *generic-tie* #t) (def-mips2c generic-tie-dma-to-spad-sync (function object object none)) + (def-mips2c generic-envmap-dproc function) + (def-mips2c generic-interp-dproc function) + (def-mips2c generic-no-light-dproc function) -(def-mips2c generic-tie-convert (function none)) +(def-mips2c generic-tie-convert (function none)) (defun generic-tie-execute ((arg0 generic-dma-foreground-sink) (arg1 dma-buffer) (arg2 basic)) ;; (local-vars (v1-28 uint128) (v1-29 uint128) (v1-30 uint128) (a0-33 int) (a0-35 int)) @@ -27,21 +24,17 @@ (when (logtest? *vu1-enable-user* (vu1-renderer-mask generic)) (when *generic-tie* (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))) (reset! (-> *perf-stats* data 2)) - (when (nonzero? arg2) (let ((s4-0 (-> arg1 base))) (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves basep) (the-as uint (-> arg1 base))) (generic-initialize arg0 (-> *math-camera* perspective) *default-lights*) - (generic-tie-dma-to-spad-sync arg2 (-> (scratchpad-object terrain-context) work foreground generic-work in-buf tie input-a)) + (generic-tie-dma-to-spad-sync arg2 + (-> (scratchpad-object terrain-context) work foreground generic-work in-buf tie input-a)) ; (let ((v1-24 (+ 716 (the-as int #x70000000)))) - ;; set up tie memory layout. (let ((v1-24 (-> (scratchpad-object terrain-context) work foreground generic-work in-buf tie shadow))) (set! (-> v1-24 end-of-chain) (the-as uint 0)) @@ -50,8 +43,7 @@ (set! (-> v1-24 ptr-buf) (the-as uint (+ 768 (scratchpad-object int)))) (set! (-> v1-24 ptr-inst) (the-as uint (+ 3648 (scratchpad-object int)))) (set! (-> v1-24 inst-xor) 4640) - (set! (-> v1-24 write-limit) (the-as uint (&+ (-> arg1 end) -65536))) - ) + (set! (-> v1-24 write-limit) (the-as uint (&+ (-> arg1 end) -65536)))) ;;(let ((v1-26 (+ 748 (the-as int #x70000000)))) (let ((v1-26 (-> (scratchpad-object terrain-context) work foreground generic-work in-buf tie shadow calls))) (set! (-> v1-26 generic-prepare-dma-double) generic-prepare-dma-double) @@ -59,7 +51,6 @@ (set! (-> v1-26 generic-interp-dproc) generic-interp-dproc) ;; todo (set! (-> v1-26 generic-no-light-dproc) generic-no-light-dproc) ;; todo ) - (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves time-of-day-color r) (the int (-> *time-of-day-context* current-sun env-color x))) (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves time-of-day-color g) @@ -68,7 +59,6 @@ (the int (-> *time-of-day-context* current-sun env-color z))) (set! (-> (scratchpad-object terrain-context) work foreground generic-work saves time-of-day-color a) (the int (-> *time-of-day-context* current-sun env-color w))) - ; (let ((v1-27 *time-of-day-context*)) ; (let ((a0-26 (+ 16 (the-as int #x70000000)))) ; (.lvf vf1 (&-> v1-27 current-sun env-color quad)) @@ -80,17 +70,11 @@ ; ) ; ) (generic-tie-convert) - (set! (-> arg1 base) - (the-as pointer (-> (scratchpad-object terrain-context) work foreground generic-work saves basep)) - ) + (set! (-> arg1 base) (the-as pointer (-> (scratchpad-object terrain-context) work foreground generic-work saves basep))) (generic-wrapup arg0) (set! (-> (scratchpad-object terrain-context) work foreground generic-work fx-buf work consts mscal-tag) - (logior (logand (-> (scratchpad-object terrain-context) work foreground generic-work fx-buf work consts mscal-tag) - -65536 - ) - 6 - ) - ) + (logior (logand (-> (scratchpad-object terrain-context) work foreground generic-work fx-buf work consts mscal-tag) -65536) + 6)) ; (dma-sync (the-as pointer #x1000d000) 0 0) (let ((v1-37 *dma-mem-usage*)) (when (nonzero? v1-37) @@ -98,23 +82,14 @@ (set! (-> v1-37 data 17 name) "tie-generic") (+! (-> v1-37 data 17 count) 1) (+! (-> v1-37 data 17 used) (&- (-> arg1 base) (the-as uint s4-0))) - (set! (-> v1-37 data 17 total) (-> v1-37 data 17 used)) - ) - ) - ) - ) + (set! (-> v1-37 data 17 total) (-> v1-37 data 17 used)))))) (read! (-> *perf-stats* data 2)) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #xd2 :g #xd2 :b #x50 :a #x80) - ) - ) - ) - 0 - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xd2 :g #xd2 :b #x50 :a #x80)))) + 0) 0 (none) ;) - ) \ No newline at end of file + ) diff --git a/goal_src/jak1/engine/gfx/generic/generic-vu0.gc b/goal_src/jak1/engine/gfx/generic/generic-vu0.gc index 08e6553c4c..c65f3315bd 100644 --- a/goal_src/jak1/engine/gfx/generic/generic-vu0.gc +++ b/goal_src/jak1/engine/gfx/generic/generic-vu0.gc @@ -1,11 +1,5 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") - -;; name: generic-vu0.gc -;; name in dgo: generic-vu0 -;; dgos: GAME, ENGINE - -(define generic-vu0-block (new 'static 'vu-function :length #x0 :qlength #x0)) \ No newline at end of file +(define generic-vu0-block (new 'static 'vu-function :length #x0 :qlength #x0)) diff --git a/goal_src/jak1/engine/gfx/generic/generic-vu1-h.gc b/goal_src/jak1/engine/gfx/generic/generic-vu1-h.gc index 11a7c7480d..f47d168737 100644 --- a/goal_src/jak1/engine/gfx/generic/generic-vu1-h.gc +++ b/goal_src/jak1/engine/gfx/generic/generic-vu1-h.gc @@ -1,46 +1,35 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: generic-vu1-h.gc -;; name in dgo: generic-vu1-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; "pris" refers to foreground drawing, with normals. (deftype pris-mtx (structure) - ((data float 32 :offset 0) - (vector vector 8 :inline :overlay-at (-> data 0)) - (t-mtx matrix :inline :overlay-at (-> data 0)) - (n-mtx matrix3 :inline :overlay-at (-> data 16)) - (scale vector :inline :overlay-at (-> vector 7)) - ) - ) + ((data float 32 :offset 0) + (vector vector 8 :inline :overlay-at (-> data 0)) + (t-mtx matrix :inline :overlay-at (-> data 0)) + (n-mtx matrix3 :inline :overlay-at (-> data 16)) + (scale vector :inline :overlay-at (-> vector 7)))) ;; ?? (deftype generic-pris-mtx-save (structure) - ((loc-mtx pris-mtx :inline) - (par-mtx pris-mtx :inline) - (dif-mtx pris-mtx :inline) - ) - ) + ((loc-mtx pris-mtx :inline) + (par-mtx pris-mtx :inline) + (dif-mtx pris-mtx :inline))) ;; VU1 constants for the generic renderer. (deftype generic-constants (structure) - ((fog vector :inline) - (adgif gs-gif-tag :inline) - (giftag gs-gif-tag :inline) - (hvdf-offset vector :inline) - (hmge-scale vector :inline) - (invh-scale vector :inline) - (guard vector :inline) - (adnop qword :inline) - (flush qword :inline) - (stores qword :inline) - ) - ) + ((fog vector :inline) + (adgif gs-gif-tag :inline) + (giftag gs-gif-tag :inline) + (hvdf-offset vector :inline) + (hmge-scale vector :inline) + (invh-scale vector :inline) + (guard vector :inline) + (adnop qword :inline) + (flush qword :inline) + (stores qword :inline))) (defun-extern generic-init-buf dma-buffer int gs-zbuf none) diff --git a/goal_src/jak1/engine/gfx/generic/generic-vu1.gc b/goal_src/jak1/engine/gfx/generic/generic-vu1.gc index e1fee0a19a..fad748c8af 100644 --- a/goal_src/jak1/engine/gfx/generic/generic-vu1.gc +++ b/goal_src/jak1/engine/gfx/generic/generic-vu1.gc @@ -1,35 +1,26 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/gfx/generic/generic-vu1-h.gc") (require "engine/gfx/vu1-user-h.gc") (require "engine/gfx/math-camera-h.gc") (require "engine/gfx/hw/gs.gc") - -;; name: generic-vu1.gc -;; name in dgo: generic-vu1 -;; dgos: GAME, ENGINE - (define generic-vu1-block (new 'static 'vu-function :length #x0 :qlength #x0)) (defun generic-setup-constants ((arg0 generic-constants) (arg1 int)) - (let ((a2-0 *math-camera*)) - (set-vector! (-> arg0 fog) (-> a2-0 pfog0) (-> a2-0 fog-min) (-> a2-0 fog-max) 3071.0) - ) + (let ((a2-0 *math-camera*)) (set-vector! (-> arg0 fog) (-> a2-0 pfog0) (-> a2-0 fog-min) (-> a2-0 fog-max) 3071.0)) (set! (-> arg0 adgif tag) (new 'static 'gif-tag64 :nloop #x7 :nreg #x1)) (set! (-> arg0 adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) (set! (-> arg0 giftag tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1))) (set! (-> arg0 giftag regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 hvdf-offset quad) (-> *math-camera* hvdf-off quad)) (set! (-> arg0 hmge-scale quad) (-> *math-camera* hmge-scale quad)) (set! (-> arg0 invh-scale quad) (-> *math-camera* inv-hmge-scale quad)) @@ -38,88 +29,74 @@ (set! (-> arg0 adnop dword 1) (the-as uint 71)) (set! (-> arg0 flush dword 0) (the-as uint #x3f80000080808080)) (set! (-> arg0 flush dword 1) (the-as uint 1)) - (none) - ) + (none)) (defun generic-add-constants ((arg0 dma-buffer) (arg1 int)) (let* ((a2-0 10) (v1-0 arg0) - (a0-1 (the-as dma-packet (-> v1-0 base))) - ) + (a0-1 (the-as dma-packet (-> v1-0 base)))) (set! (-> a0-1 dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-0)) (set! (-> a0-1 vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x381 :cmd (vif-cmd unpack-v4-32) :num a2-0)) - (set! (-> v1-0 base) (the-as pointer (&+ a0-1 16))) - ) + (set! (-> v1-0 base) (the-as pointer (&+ a0-1 16)))) (generic-setup-constants (the-as generic-constants (-> arg0 base)) arg1) (&+! (-> arg0 base) 160) - (none) - ) + (none)) (defun generic-init-buf ((arg0 dma-buffer) (arg1 int) (arg2 gs-zbuf)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask generic)) (dma-buffer-add-vu-function arg0 generic-vu1-block 1) (let* ((v1-3 arg0) - (a0-2 (the-as dma-packet (-> v1-3 base))) - ) + (a0-2 (the-as dma-packet (-> v1-3 base)))) (set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) (set! (-> a0-2 vif0) (new 'static 'vif-tag)) (set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-3 base) (the-as pointer (&+ a0-2 16))) - ) + (set! (-> v1-3 base) (the-as pointer (&+ a0-2 16)))) (let* ((v1-4 arg0) - (a0-4 (the-as gs-gif-tag (-> v1-4 base))) - ) + (a0-4 (the-as gs-gif-tag (-> v1-4 base)))) (set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) (set! (-> a0-4 regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-4 base) (the-as pointer (&+ a0-4 16))) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-4 base) (the-as pointer (&+ a0-4 16)))) (let* ((v1-5 arg0) - (a0-6 (-> v1-5 base)) - ) + (a0-6 (-> v1-5 base))) (set! (-> (the-as (pointer gs-test) a0-6) 0) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) + (new 'static + 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal))) (set! (-> (the-as (pointer uint64) a0-6) 1) (the-as uint (gs-reg test-1))) (set! (-> (the-as (pointer gs-zbuf) a0-6) 2) arg2) (set! (-> (the-as (pointer uint64) a0-6) 3) (the-as uint (gs-reg zbuf-1))) - (set! (-> v1-5 base) (&+ a0-6 32)) - ) + (set! (-> v1-5 base) (&+ a0-6 32))) (generic-add-constants arg0 arg1) (let* ((v1-6 arg0) - (a0-9 (the-as dma-packet (-> v1-6 base))) - ) + (a0-9 (the-as dma-packet (-> v1-6 base)))) (set! (-> a0-9 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> a0-9 vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1)) (set! (-> a0-9 vif1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) - (set! (-> v1-6 base) (the-as pointer (&+ a0-9 16))) - ) + (set! (-> v1-6 base) (the-as pointer (&+ a0-9 16)))) (let ((v1-7 (the-as (pointer int32) (-> arg0 base)))) (set! (-> (the-as (pointer vif-tag) v1-7) 0) (new 'static 'vif-tag :cmd (vif-cmd base))) (set! (-> (the-as (pointer vif-tag) v1-7) 1) (new 'static 'vif-tag :cmd (vif-cmd offset))) @@ -129,12 +106,9 @@ (set! (-> v1-7 5) 0) (set! (-> v1-7 6) 0) (set! (-> v1-7 7) 0) - (set! (-> arg0 base) (&+ (the-as pointer v1-7) 32)) - ) - ) + (set! (-> arg0 base) (&+ (the-as pointer v1-7) 32)))) 0 - (none) - ) + (none)) ;; unused ;; (defun generic-reset-buffers ((arg0 dma-buffer) (arg1 int) (arg2 int)) @@ -174,7 +148,3 @@ ;; 0 ;; (none) ;; ) - - - - diff --git a/goal_src/jak1/engine/gfx/generic/generic-work-h.gc b/goal_src/jak1/engine/gfx/generic/generic-work-h.gc index 5eaae834f4..1b1349e731 100644 --- a/goal_src/jak1/engine/gfx/generic/generic-work-h.gc +++ b/goal_src/jak1/engine/gfx/generic/generic-work-h.gc @@ -1,89 +1,60 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: generic-work-h.gc -;; name in dgo: generic-work-h -;; dgos: GAME, ENGINE - ;; common types for internal generic work. ;; DECOMP BEGINS (deftype generic-input-buffer (structure) - ((merc generic-merc-work :inline :offset 0) - (tie generic-tie-work :inline :offset 0) - (data uint128 472 :offset 0) - ) - ) - + ((merc generic-merc-work :inline :offset 0) + (tie generic-tie-work :inline :offset 0) + (data uint128 472 :offset 0))) (deftype generic-debug (structure) - ((locks uint32 4) - (timer uint32 32) - (count uint32 32) - (vps uint32 32) - (buffer int32) - (start-addr int32) - (lock int32) - ) - ) - + ((locks uint32 4) + (timer uint32 32) + (count uint32 32) + (vps uint32 32) + (buffer int32) + (start-addr int32) + (lock int32))) (deftype generic-vu1-header (structure) - ((matrix matrix :inline) - (strgif generic-gif-tag :inline) - (adnop1 ad-cmd :inline) - (adnop2 ad-cmd :inline) - (adcmds ad-cmd 2 :inline :overlay-at adnop1) - (dps uint16 :overlay-at (-> adnop1 word 3)) - (kickoff uint16 :overlay-at (-> adnop2 word 3)) - (strips uint16 :overlay-at (-> strgif data 3)) - ) - ) - + ((matrix matrix :inline) + (strgif generic-gif-tag :inline) + (adnop1 ad-cmd :inline) + (adnop2 ad-cmd :inline) + (adcmds ad-cmd 2 :inline :overlay-at adnop1) + (dps uint16 :overlay-at (-> adnop1 word 3)) + (kickoff uint16 :overlay-at (-> adnop2 word 3)) + (strips uint16 :overlay-at (-> strgif data 3)))) (deftype generic-vu1-texbuf (structure) - ((header generic-vu1-header :inline) - (shader uint32 :dynamic) - ) - ) - + ((header generic-vu1-header :inline) + (shader uint32 :dynamic))) (deftype generic-texbuf (structure) - ((tag dma-packet :inline) - (header generic-vu1-header :inline) - (shader uint32 :dynamic) - ) - ) - + ((tag dma-packet :inline) + (header generic-vu1-header :inline) + (shader uint32 :dynamic))) (deftype generic-effect-work (structure) - ((consts generic-consts :inline) - (storage generic-storage :inline) - (storage2 generic-storage :inline) - (lights vu-lights :inline) - ) - ) - + ((consts generic-consts :inline) + (storage generic-storage :inline) + (storage2 generic-storage :inline) + (lights vu-lights :inline))) (deftype generic-effect-buffer (structure) - ((outbuf-0 uint8 3552) - (work generic-effect-work :inline) - (outbuf-1 uint8 3552) - ) - ) - + ((outbuf-0 uint8 3552) + (work generic-effect-work :inline) + (outbuf-1 uint8 3552))) (deftype generic-work (structure) - ((saves generic-saves :inline) - (storage generic-storage :inline) - (in-buf generic-input-buffer :inline) - (fx-buf generic-effect-buffer :inline) - ) - ) - + ((saves generic-saves :inline) + (storage generic-storage :inline) + (in-buf generic-input-buffer :inline) + (fx-buf generic-effect-buffer :inline))) (define *generic-debug* (new 'global 'generic-debug)) diff --git a/goal_src/jak1/engine/gfx/generic/generic.gc b/goal_src/jak1/engine/gfx/generic/generic.gc index 71c7d48f47..dabe95e391 100644 --- a/goal_src/jak1/engine/gfx/generic/generic.gc +++ b/goal_src/jak1/engine/gfx/generic/generic.gc @@ -1,59 +1,48 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/level-h.gc") (require "engine/dma/dma-bucket.gc") (require "engine/gfx/lights.gc") - -;; name: generic.gc -;; name in dgo: generic -;; dgos: GAME, ENGINE - (define *generic-foreground-sinks* - (new 'static 'boxed-array :type generic-dma-foreground-sink :length 0 :allocated-length 9)) + (new 'static 'boxed-array :type generic-dma-foreground-sink :length 0 :allocated-length 9)) (set! (-> *generic-foreground-sinks* 0) (-> *level* level0 tfrag-tex-foreground-sink-group generic-sink)) + (set! (-> *generic-foreground-sinks* 1) (-> *level* level0 pris-tex-foreground-sink-group generic-sink)) + (set! (-> *generic-foreground-sinks* 2) (-> *level* level1 tfrag-tex-foreground-sink-group generic-sink)) + (set! (-> *generic-foreground-sinks* 3) (-> *level* level1 pris-tex-foreground-sink-group generic-sink)) + (set! (-> *generic-foreground-sinks* 4) (-> *level* level-default tfrag-tex-foreground-sink-group generic-sink)) + (set! (-> *generic-foreground-sinks* 5) (-> *level* level-default pris-tex-foreground-sink-group generic-sink)) + (set! (-> *generic-foreground-sinks* 6) (new 'static 'generic-dma-foreground-sink :bucket (bucket-id shrub-generic1))) + (set! (-> *generic-foreground-sinks* 7) (-> *level* level0 water-tex-foreground-sink-group generic-sink)) + (set! (-> *generic-foreground-sinks* 8) (-> *level* level1 water-tex-foreground-sink-group generic-sink)) (defun generic-dma-foreground-sink-init ((arg0 generic-dma-foreground-sink)) (set! (-> arg0 state gifbuf-adr) (the-as uint 837)) (set! (-> arg0 state inbuf-adr) (the-as uint 9)) - (none) - ) + (none)) (defun generic-init-buffers () (vu-lights-default! *default-lights*) (let ((gp-0 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) - (s5-0 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1)) - ) - (dotimes (s4-0 9) - (let ((s1-0 (-> *generic-foreground-sinks* s4-0))) - (when s1-0 - (let ((s3-0 (-> s1-0 bucket))) - (with-dma-buffer-add-bucket ((s0-0 (-> (current-frame) global-buf)) s3-0) - (if (>= s4-0 7) - (generic-init-buf s0-0 1 s5-0) - (generic-init-buf s0-0 1 gp-0) - ) - (generic-dma-foreground-sink-init s1-0) - ) - ) - ) - ) - ) - ) - #f - ) + (s5-0 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1))) + (dotimes (s4-0 9) + (let ((s1-0 (-> *generic-foreground-sinks* s4-0))) + (when s1-0 + (let ((s3-0 (-> s1-0 bucket))) + (with-dma-buffer-add-bucket ((s0-0 (-> (current-frame) global-buf)) s3-0) + (if (>= s4-0 7) (generic-init-buf s0-0 1 s5-0) (generic-init-buf s0-0 1 gp-0)) + (generic-dma-foreground-sink-init s1-0))))))) + #f) (defun generic-sink ((i int)) "Get the generic sink i" - (-> *generic-foreground-sinks* i) - ) + (-> *generic-foreground-sinks* i)) diff --git a/goal_src/jak1/engine/gfx/hw/display-h.gc b/goal_src/jak1/engine/gfx/hw/display-h.gc index 04bad5d981..a1c96a9ab8 100644 --- a/goal_src/jak1/engine/gfx/hw/display-h.gc +++ b/goal_src/jak1/engine/gfx/hw/display-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/gs.gc") (require "engine/ps2/timer-h.gc") -;; name: display-h.gc -;; name in dgo: display-h -;; dgos: GAME, ENGINE - ;; The display system takes care of managing the contexts for settings framebuffers/display settings ;; It also handles drawing the profile bars, game engine timing, and managing the two DMA buffers for ;; the double buffered rendering system. @@ -22,71 +17,57 @@ ;; put-display-env, which is implemented in the kernel and is a wrapper ;; around a Sony function. (deftype display-env (structure) - ((pmode gs-pmode) - (smode2 gs-smode2) - (dspfb gs-display-fb) - (display gs-display) - (bgcolor gs-bgcolor) - ) - :pack-me - ) + ((pmode gs-pmode) + (smode2 gs-smode2) + (dspfb gs-display-fb) + (display gs-display) + (bgcolor gs-bgcolor)) + :pack-me) ;; draw-env stores the GS settings for drawing to somewhere in VRAM. ;; the "addr" fields represent GS register addresses ;; this is identical to the Sony sceGsDrawEnv1/2 structs ;; Internally, this is register + address GIF data. (deftype draw-env (structure) - ((frame1 gs-frame) - (frame1addr gs-reg64) - (zbuf1 gs-zbuf) - (zbuf1addr gs-reg64) - (xyoffset1 gs-xy-offset) - (xyoffset1addr gs-reg64) - (scissor1 gs-scissor) - (scissor1addr gs-reg64) - (prmodecont gs-prmode-cont) - (prmodecontaddr gs-reg64) - (colclamp gs-color-clamp) - (colclampaddr gs-reg64) - (dthe gs-dthe) - (dtheaddr gs-reg64) - (test1 gs-test) - (test1addr gs-reg64) - ) - ) + ((frame1 gs-frame) + (frame1addr gs-reg64) + (zbuf1 gs-zbuf) + (zbuf1addr gs-reg64) + (xyoffset1 gs-xy-offset) + (xyoffset1addr gs-reg64) + (scissor1 gs-scissor) + (scissor1addr gs-reg64) + (prmodecont gs-prmode-cont) + (prmodecontaddr gs-reg64) + (colclamp gs-color-clamp) + (colclampaddr gs-reg64) + (dthe gs-dthe) + (dtheaddr gs-reg64) + (test1 gs-test) + (test1addr gs-reg64))) (defun put-draw-env ((packet (pointer gif-tag))) "Begin DMA transfer to the GIF/GS to send a draw env packet. The length of the transfer is taken from the nloop field of the tag." ;; this is a workaround for OpenGOAL not supporting 128-bitfield access yet. (#when PC_PORT - (return #f) - ) + (return #f)) (let ((packet64 (the-as (pointer gif-tag64) packet))) - (dma-send GIF_DMA_BANK - (the-as uint packet) - (the-as uint (+ (the-as uint (-> packet64 0 nloop)) (the-as uint 1))) - ) - ) - (none) - ) + (dma-send GIF_DMA_BANK (the-as uint packet) (the-as uint (+ (the-as uint (-> packet64 0 nloop)) (the-as uint 1))))) + (none)) ;; Per frame data that is used by the renderers. (deftype display-frame (basic) - ((calc-buf dma-buffer :offset 8) - (vu1-buf dma-buffer :overlay-at calc-buf) - (debug-buf dma-buffer :offset 36) - (global-buf dma-buffer :offset 40) - (bucket-group (inline-array dma-bucket) :offset 44) - (buffer dma-buffer 11 :offset 4) - (profile-bar profile-bar 2 :offset 48) - (run-time int64 :offset 56) - ) + ((calc-buf dma-buffer :offset 8) + (vu1-buf dma-buffer :overlay-at calc-buf) + (debug-buf dma-buffer :offset 36) + (global-buf dma-buffer :offset 40) + (bucket-group (inline-array dma-bucket) :offset 44) + (buffer dma-buffer 11 :offset 4) + (profile-bar profile-bar 2 :offset 48) + (run-time int64 :offset 56)) (:methods - (new (symbol type) _type_) - ) - ) - + (new (symbol type) _type_))) (defmethod new display-frame ((allocation symbol) (type-to-make type)) "Allocate a new display frame" @@ -97,81 +78,71 @@ ;; allocate profile-bars in the debug heap, if we're debugging. (when *debug-segment* (set! (-> this profile-bar 0) (new 'debug 'profile-bar)) - (set! (-> this profile-bar 1) (new 'debug 'profile-bar)) - ) - this - ) - ) + (set! (-> this profile-bar 1) (new 'debug 'profile-bar))) + this)) ;; unused? (deftype virtual-frame (structure) - ((display display-env) - (display-last display-env) - (gif pointer) - (draw draw-env) - (frame display-frame) - ) - :allow-misaligned - ) - + ((display display-env) + (display-last display-env) + (gif pointer) + (draw draw-env) + (frame display-frame)) + :allow-misaligned) ;; This tracks all of the display stuff in a single global (deftype display (basic) ;; first, 3x environments. Not sure why we need 3. - ((display-env0 display-env :inline) - (display-env1 display-env :inline) - (display-env2 display-env :inline) + ((display-env0 display-env :inline) + (display-env1 display-env :inline) + (display-env2 display-env :inline) ;; the gif-tag + draw is a gif-packet to setting the draw-env. ;; the draw-env is actually just a+d data. - (gif-tag0 gs-gif-tag :inline) - (draw0 draw-env :inline) - (gif-tag1 gs-gif-tag :inline) - (draw1 draw-env :inline) - (gif-tag2 gs-gif-tag :inline) - (draw2 draw-env :inline) - + (gif-tag0 gs-gif-tag :inline) + (draw0 draw-env :inline) + (gif-tag1 gs-gif-tag :inline) + (draw1 draw-env :inline) + (gif-tag2 gs-gif-tag :inline) + (draw2 draw-env :inline) ;; frame indices - (on-screen int32) - (last-screen int32) + (on-screen int32) + (last-screen int32) ;; not sure why we have 6, it seems like only the first 2 actually ;; have valid display-frames in them. - (frames virtual-frame 6 :inline) - (bg-clear-color rgba 4) + (frames virtual-frame 6 :inline) + (bg-clear-color rgba 4) ;; counters - (real-frame-counter time-frame) - (base-frame-counter time-frame) - (game-frame-counter time-frame) - (integral-frame-counter time-frame) - (real-integral-frame-counter time-frame) - (actual-frame-counter time-frame) - (real-actual-frame-counter time-frame) - (part-frame-counter time-frame) - + (real-frame-counter time-frame) + (base-frame-counter time-frame) + (game-frame-counter time-frame) + (integral-frame-counter time-frame) + (real-integral-frame-counter time-frame) + (actual-frame-counter time-frame) + (real-actual-frame-counter time-frame) + (part-frame-counter time-frame) ;; the "old" counters are the values from the previous tick. ;; the counters above may jump during a load. - (old-real-frame-counter time-frame) - (old-base-frame-counter time-frame) - (old-game-frame-counter time-frame) - (old-integral-frame-counter time-frame) - (old-real-integral-frame-counter time-frame) - (old-actual-frame-counter time-frame) - (old-real-actual-frame-counter time-frame) - (old-part-frame-counter time-frame) - + (old-real-frame-counter time-frame) + (old-base-frame-counter time-frame) + (old-game-frame-counter time-frame) + (old-integral-frame-counter time-frame) + (old-real-integral-frame-counter time-frame) + (old-actual-frame-counter time-frame) + (old-real-actual-frame-counter time-frame) + (old-part-frame-counter time-frame) ;; timing stats for how fast the engine is currently running. - (time-ratio float) ;; engine speed, 1.0 = full speed - (seconds-per-frame float) ;; 1/fps - (frames-per-second float) ;; fps - (time-factor float) ;; 6 on PAL, 5 on NTSC, "ticks" / frame - (time-adjust-ratio float) ;; 1 on NTSC full speed, 1.2 PAL full speed. + (time-ratio float) ;; engine speed, 1.0 = full speed + (seconds-per-frame float) ;; 1/fps + (frames-per-second float) ;; fps + (time-factor float) ;; 6 on PAL, 5 on NTSC, "ticks" / frame + (time-adjust-ratio float) ;; 1 on NTSC full speed, 1.2 PAL full speed. ) (:methods - (new (symbol type int int int int int) _type_) - (set-time-ratios (_type_ float) float) - ) - ) + (new (symbol type int int int int int) _type_) + (set-time-ratios (_type_ float) float))) (define-extern *display* display) + (define-extern set-display (function display int int int int int display)) (defmethod new display ((allocation symbol) (type-to-make type) (psm int) (w int) (h int) (ztest int) (zpsm int)) @@ -217,41 +188,32 @@ (set! (-> this bg-clear-color 1) (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)) (set! (-> this bg-clear-color 2) (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)) (set! (-> this bg-clear-color 3) (new 'static 'rgba :r #x80 :g #x80 :b #x80 :a #x80)) - this - ) - ) + this)) (define *pre-draw-hook* (the (function object none) nothing)) -(define *post-draw-hook* (the-as (function dma-buffer none) nothing)) +(define *post-draw-hook* (the-as (function dma-buffer none) nothing)) (defmacro current-frame () - `(-> *display* frames (-> *display* on-screen) frame) - ) + `(-> *display* frames (-> *display* on-screen) frame)) (defmacro current-time () - `(-> *display* base-frame-counter) - ) + `(-> *display* base-frame-counter)) (defmacro integral-current-time () - `(-> *display* integral-frame-counter) - ) + `(-> *display* integral-frame-counter)) (defmacro real-current-time () - `(-> *display* real-frame-counter) - ) + `(-> *display* real-frame-counter)) (defmacro seconds-per-frame () - `(-> *display* seconds-per-frame) - ) + `(-> *display* seconds-per-frame)) (defmacro set-time! (time) - `(set! ,time (current-time)) - ) + `(set! ,time (current-time))) (defmacro time-elapsed? (time duration) - `(>= (- (current-time) ,time) ,duration) - ) + `(>= (- (current-time) ,time) ,duration)) ;; debug stuff really (defmacro get-screen-x (frac) diff --git a/goal_src/jak1/engine/gfx/hw/display.gc b/goal_src/jak1/engine/gfx/hw/display.gc index 580eae68f4..66e8e6f520 100644 --- a/goal_src/jak1/engine/gfx/hw/display.gc +++ b/goal_src/jak1/engine/gfx/hw/display.gc @@ -1,20 +1,17 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "pc/pckernel-impl.gc") (require "engine/ps2/timer.gc") +(defconstant DMA_BUFFER_GLOBAL_SIZE + (#if (not PC_PORT) + (* 1712 1024) ;; 1712K + (* PROCESS_HEAP_MULT 2664 1024))) ;; 2600K x actor heap increase (usually 3x) -;; name: display.gc -;; name in dgo: display -;; dgos: GAME, ENGINE - -(defconstant DMA_BUFFER_GLOBAL_SIZE (#if (not PC_PORT) - (* 1712 1024) ;; 1712K - (* PROCESS_HEAP_MULT 2664 1024))) ;; 2600K x actor heap increase (usually 3x) -(defconstant DMA_BUFFER_DEBUG_SIZE (#if (not PC_PORT) - (* 8 1024 1024) ;; 8M - (* 16 1024 1024))) ;; 16M +(defconstant DMA_BUFFER_DEBUG_SIZE + (#if (not PC_PORT) + (* 8 1024 1024) ;; 8M + (* 16 1024 1024))) ;; 16M ;; DECOMP BEGINS @@ -27,20 +24,17 @@ (defun get-current-time () "Get the in game time. This advances when the game is unpaused. This increases at the same rate for PAL/NTSC and if the game is lagging." - (-> *display* base-frame-counter) - ) + (-> *display* base-frame-counter)) (defun get-integral-current-time () "Get the game time as a number of frames. This advances at different rates for PAL/NTSC. This counts the number of actual vsyncs done by the PS2, including ones that are missed due to lag. " - (-> *display* integral-frame-counter) - ) + (-> *display* integral-frame-counter)) (defmethod set-time-ratios ((this display) (slowdown float)) "Set the time ratios for the current game speed. For example, set slowdown = 1.0 if the game is running at full speed or slowdown = 2.0 if the game is running at half speed." - ;; don't allow slowdowns of more than 4x. This prevents the dt's in the physics ;; calculations from getting huge. (let ((ratio (fmin 4.0 slowdown))) @@ -51,29 +45,21 @@ (set! (-> this seconds-per-frame) (* 0.02 ratio)) (set! (-> this frames-per-second) (* 50.0 (/ 1.0 ratio))) ;; 6 "ticks" per frame * 50 fps = 300 ticks per second. - (set! (-> this time-factor) 6.0) - ) + (set! (-> this time-factor) 6.0)) (('ntsc) (set! (-> this time-adjust-ratio) ratio) (set! (-> this seconds-per-frame) (* 0.016666668 ratio)) (set! (-> this frames-per-second) (* 60.0 (/ 1.0 ratio))) ;; 5 "ticks" per frame * 60 fps = 300 ticks per second. - (set! (-> this time-factor) 5.0) - ) + (set! (-> this time-factor) 5.0)) (('custom) (set! (-> this time-adjust-ratio) (* (/ 60.0 (-> *pc-settings* target-fps)) ratio)) (set! (-> this seconds-per-frame) (/ ratio (-> *pc-settings* target-fps))) (set! (-> this frames-per-second) (* (the float (-> *pc-settings* target-fps)) (/ 1.0 ratio))) ;; x "ticks" per frame * y fps = 300 ticks per second. - (set! (-> this time-factor) (/ 300.0 (-> *pc-settings* target-fps))) - ) - (else - (format #t "Warning: Tried to set unsupported video-mode") - ) - ) - ) - (-> this time-ratio) - ) + (set! (-> this time-factor) (/ 300.0 (-> *pc-settings* target-fps)))) + (else (format #t "Warning: Tried to set unsupported video-mode")))) + (-> this time-ratio)) ;; new constant for use in high FPS scenarios (defconstant DISPLAY_FPS_RATIO (/ (-> *display* time-factor) 5.0)) @@ -95,91 +81,70 @@ width/height: dimensions of the framebuffer dx/dy: location on the TV screen fpb: the framebuffer." - ;; these will eventually be consumed by a sony function. I think it just sets GS registers. - ;; set these to the mode that makes the GS actually work. Basically every game uses exactly this. (set! (-> env pmode) (new 'static 'gs-pmode :en1 #x1 :mmod #x1 :slbg #x1 :alp #xff)) (set! (-> env smode2) (new 'static 'gs-smode2 :int #x1 :ffmd #x1)) - ;; set up the framebuffer. (set! (-> env dspfb) (new 'static 'gs-display-fb :psm psm :fbw (/ width 64) :fbp fbp)) - ;; set up the display area (obscure PS2 video output junk) - (set! (-> env display) (new 'static 'gs-display - :dw #x9ff - :dy (+ dy 50) - :dx (+ (* dx (/ 2560 width)) 652) - :dh (+ (* height 2) -1) - :magh (+ (/ (+ width 2559) width) -1) - ) - ) - + (set! (-> env display) + (new 'static + 'gs-display + :dw #x9ff + :dy + (+ dy 50) + :dx + (+ (* dx (/ 2560 width)) 652) + :dh + (+ (* height 2) -1) + :magh + (+ (/ (+ width 2559) width) -1))) ;; I think bgcolor = 0 is required. (set! (-> env bgcolor) (new 'static 'gs-bgcolor)) - env - ) + env) (defun set-draw-env ((env draw-env) (psm int) (width int) (height int) (ztest int) (zpsm int) (fbp int)) "Set parameters of the draw env" - ;; each register needs address + data set. - ;; frame buffer: (set! (-> env frame1addr) (gs-reg64 frame-1)) (set! (-> env frame1) (new 'static 'gs-frame :fbw (/ width 64) :psm (logand psm 15) :fbp fbp)) - ;; dithering is enabled/disabled based on the texture format. ;; it's not allowed in psmct32 and psmct24 so I assume it's always off. (set! (-> env dtheaddr) (gs-reg64 dthe)) (cond - ((not (logtest? psm 2)) - (set! (-> env dthe) (new 'static 'gs-dthe)) - 0 - ) - (else - (set! (-> env dthe) (new 'static 'gs-dthe :dthe #x1)) - ) - ) - + ((not (logtest? psm 2)) (set! (-> env dthe) (new 'static 'gs-dthe)) 0) + (else (set! (-> env dthe) (new 'static 'gs-dthe :dthe #x1)))) ;; z buffer: (set! (-> env zbuf1addr) (gs-reg64 zbuf-1)) (set! (-> env zbuf1) (new 'static 'gs-zbuf :zbp #x1c0 :psm (logand zpsm 15) :zmsk (if (zero? ztest) 1 0))) - ;; pixel test. you only get to pick the ztst field. (set! (-> env test1addr) (gs-reg64 test-1)) (cond - ((zero? ztest) - (set! (-> env test1) (new 'static 'gs-test)) - ) - (else - (set! (-> env test1) (new 'static 'gs-test :zte #x1 :ztst ztest)) - ) - ) - + ((zero? ztest) (set! (-> env test1) (new 'static 'gs-test))) + (else (set! (-> env test1) (new 'static 'gs-test :zte #x1 :ztst ztest)))) ;; offset to window coordinate system (WCS) (set! (-> env xyoffset1addr) (gs-reg64 xyoffset-1)) (set! (-> env xyoffset1) - (new 'static 'gs-xy-offset - :ofx #x7000 ;; = 1792 px = 2048 - 256, this will make 2048 the center of the screen. - :ofy (shl (-> *video-parms* screen-miny) 4) ;; 12.4 fixed point. - ) - ) - + (new 'static + 'gs-xy-offset + :ofx #x7000 + ;; = 1792 px = 2048 - 256, this will make 2048 the center of the screen. + :ofy + (shl (-> *video-parms* screen-miny) 4) ;; 12.4 fixed point. + )) ;; scissor to the given width/height (in WCS pixels) (set! (-> env scissor1addr) (gs-reg64 scissor-1)) ;; the lower bound is set to 0: the origin of the WCS which is the xyoffset (set! (-> env scissor1) (new 'static 'gs-scissor :scax1 (+ width -1) :scay1 (+ height -1))) - ;; use the prim register for primitive settings, not prmode. (set! (-> env prmodecontaddr) (gs-reg64 prmodecont)) (set! (-> env prmodecont) (new 'static 'gs-prmode-cont :ac #x1)) - ;; clamp colors (don't wrap) (set! (-> env colclampaddr) (gs-reg64 colclamp)) (set! (-> env colclamp) (new 'static 'gs-color-clamp :clamp #x1)) - env - ) + env) (defun set-draw-env-offset ((env draw-env) (x int) (y int) (arg3 int)) "Set the drawing offset (origin of the WCS). @@ -189,23 +154,21 @@ To center things in the usual way, call with 2048, 2048, even/odd " (set! (-> env xyoffset1) - (new 'static 'gs-xy-offset - :ofx (* (- x (the-as int (shr (+ (-> env scissor1 scax1) 1) 1))) 16) - :ofy (+ (* (- y (the-as int (shr (+ (-> env scissor1 scay1) 1) 1))) 16) (if (zero? arg3) 0 8)) - ) - ) - env - ) + (new 'static + 'gs-xy-offset + :ofx + (* (- x (the-as int (shr (+ (-> env scissor1 scax1) 1) 1))) 16) + :ofy + (+ (* (- y (the-as int (shr (+ (-> env scissor1 scay1) 1) 1))) 16) (if (zero? arg3) 0 8)))) + env) (defun put-display-alpha-env ((arg0 display-env)) "Set display1 and dspfb1 directly, right now. This is unused." (let ((v1-0 (the-as gs-bank #x12000000))) (set! (-> v1-0 dspfb1) (-> arg0 dspfb)) - (set! (-> v1-0 display1) (-> arg0 display)) - ) - (none) - ) + (set! (-> v1-0 display1) (-> arg0 display))) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; DISPLAY @@ -215,26 +178,20 @@ (defun set-display ((disp display) (psm int) (w int) (h int) (ztest int) (zpsm int)) "Set up the entire display structure, both draw and display envs" - ;; set up gif-tag for the gif-packet to tset the draw env (let ((v1-0 (-> disp gif-tag0))) ;; 8x registers, data in a+d format. (set! (-> v1-0 tag) (new 'static 'gif-tag64 :nloop #x8 :eop #x1 :nreg #x1)) - (set! (-> v1-0 regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) - ) - + (set! (-> v1-0 regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)))) ;; copy to the other envs. (set! (-> disp gif-tag1 qword) (-> disp gif-tag0 qword)) (set! (-> disp gif-tag2 qword) (-> disp gif-tag0 qword)) - ;; set the display envs. (set-display-env (-> disp display-env0) psm w h (-> *video-parms* display-dx) (-> *video-parms* display-dy) 320) (set-display-env (-> disp display-env1) psm w h (-> *video-parms* display-dx) (-> *video-parms* display-dy) 384) - ;; set the draw envs (note the framebuffers are swapped - draw 0 will draw to the fb for disp 1) (set-draw-env (-> disp draw0) psm w h ztest zpsm 384) (set-draw-env (-> disp draw1) psm w h ztest zpsm 320) - ;; initialize a bunch of counters (set! (-> disp base-frame-counter) (seconds 1000)) (set! (-> disp game-frame-counter) (seconds 1000)) @@ -242,7 +199,6 @@ (set! (-> disp part-frame-counter) (seconds 1000)) (set! (-> disp integral-frame-counter) (seconds 1000)) (set! (-> disp real-integral-frame-counter) (seconds 1000)) - ;; and fake the "old" versions. These are normally set to the value on the previous frame ;; (which may jump due to saving/loading or lag) (set! (-> disp old-base-frame-counter) (+ (-> disp base-frame-counter) -1)) @@ -253,8 +209,7 @@ (set! (-> disp old-part-frame-counter) (+ (-> disp part-frame-counter) -1)) (set! (-> disp old-actual-frame-counter) (+ (-> disp actual-frame-counter) -1)) (set! (-> disp old-real-actual-frame-counter) (+ (-> disp real-actual-frame-counter) -1)) - disp - ) + disp) (defun set-display2 ((disp display) (psm int) (w int) (h int) (ztest int) (zpsm int)) "Set the display and draw envs only. This assumes you have already done a set-display and you just need to update the video mode." @@ -262,9 +217,7 @@ (set-display-env (-> disp display-env1) psm w h (-> *video-parms* display-dx) (-> *video-parms* display-dy) 384) (set-draw-env (-> disp draw0) psm w h ztest zpsm 384) (set-draw-env (-> disp draw1) psm w h ztest zpsm 320) - disp - ) - + disp) (defun allocate-dma-buffers ((arg0 display)) "Allocate the main DMA buffers!" @@ -273,29 +226,26 @@ ;; these smaller buffers are used by the engine to patch buckets and get sent directly to VU1. (set! (-> arg0 frames 0 frame calc-buf) (new 'global 'dma-buffer 10000)) (set! (-> arg0 frames 1 frame calc-buf) (new 'global 'dma-buffer 10000)) - ;; the main DMA buffers for each frame's drawing. The buckets in the calc buf will reference data in here. ;; the individual renderers use these buffers. ;; the reason for separate calc/global buf is unknown. (set! (-> arg0 frames 0 frame global-buf) (new 'global 'dma-buffer DMA_BUFFER_GLOBAL_SIZE)) (set! (-> arg0 frames 1 frame global-buf) (new 'global 'dma-buffer DMA_BUFFER_GLOBAL_SIZE)) - ;; there are separate debug buffers in debug mode that live in the debug heap. ;; these are used to draw all of the debug stuff. (when *debug-segment* (set! (-> arg0 frames 0 frame debug-buf) (new 'debug 'dma-buffer DMA_BUFFER_DEBUG_SIZE)) - (set! (-> arg0 frames 1 frame debug-buf) (new 'debug 'dma-buffer DMA_BUFFER_DEBUG_SIZE)) - ) - ) - arg0 - ) + (set! (-> arg0 frames 1 frame debug-buf) (new 'debug 'dma-buffer DMA_BUFFER_DEBUG_SIZE)))) + arg0) ;; set up the main font contexts. ;; used for debug prints -(define *font-context* (new 'global 'font-context *font-default-matrix* 0 24 0.0 (font-color default) (font-flags shadow kerning))) +(define *font-context* + (new 'global 'font-context *font-default-matrix* 0 24 0.0 (font-color default) (font-flags shadow kerning))) ;; not used, but looks like it would work for the "PAUSE" text. -(define *pause-context* (new 'global 'font-context *font-default-matrix* 256 170 0.0 (font-color red) (font-flags shadow kerning))) +(define *pause-context* + (new 'global 'font-context *font-default-matrix* 256 170 0.0 (font-color red) (font-flags shadow kerning))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; PROFILE BAR @@ -309,17 +259,13 @@ (set! (-> new-frame name) name) (set! (-> new-frame time-stamp) (timer-count (the-as timer-bank #x10000800))) (set! (-> new-frame color) color) - new-frame - ) - ) - ) + new-frame))) (defmethod reset ((this profile-bar)) "Clear all blocks from the profile bar. Adds the start block" (set! (-> this profile-frame-count) 0) (add-frame this 'start (new 'static 'rgba :r #x40 :b #x40 :a #x80)) - this - ) + this) (defmethod add-end-frame ((this profile-bar) (name symbol) (color rgba)) "Finish the frame." @@ -328,14 +274,15 @@ (set! (-> new-frame name) name) (set! (-> new-frame time-stamp) (the-as uint *ticks-per-frame*)) (set! (-> new-frame color) color) - new-frame - ) - ) + new-frame)) ;; location and size (define *profile-x* 1808) + (define *profile-y* (+ (-> *video-parms* screen-miny) 8)) + (define *profile-w* 416) + (define *profile-h* 8) ;; ticks or percent? @@ -343,7 +290,6 @@ (defmethod draw ((this profile-bar) (buf dma-buffer) (bar-pos int)) "Draw the bar! The bar pos shouldn't be changed." - ;; recompute y stuff based on the current relative-y-scale. (let ((height (the int (* 8.0 (-> *video-parms* relative-y-scale))))) (set! *profile-y* (+ (-> *video-parms* screen-miny) height)) ;; px @@ -352,97 +298,77 @@ (let ((block-idx 1) ;; block to draw (0 is 'start) (block-count (-> this profile-frame-count)) ;; total number of blocks (left (shl *profile-x* 4)) ;; x (12.4) of the current block. initialized to start of bar. - (end-time 0) ;; end of last block + (end-time 0) ;; end of last block ;; if there's a single really slow frame, we want its time to appear for ;; a little while so you can actually notice. This caches the worst time ;; over the last quarter second. It's a static array so it won't get reset ;; between runs. - (worst-time-cache (new 'static 'array uint32 2 #x0 #x0)) - ) + (worst-time-cache (new 'static 'array uint32 2 #x0 #x0))) ;; the position for this particular bar in y. (let ((screen-y (the int (* (the float bar-pos) (-> *video-parms* relative-y-scale))))) - ;; set up dma/vif tags ;; 2 qwords for each block except last one + giftag - (dma-buffer-add-cnt-vif2 buf (+ (* block-count 2) -1) (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd direct) - :imm (+ (* block-count 2) -1))) - + (dma-buffer-add-cnt-vif2 buf + (+ (* block-count 2) -1) + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm (+ (* block-count 2) -1))) ;; set up gif tag - (dma-buffer-add-gif-tag buf (new 'static 'gif-tag64 :eop 1 :flg (gif-flag reg-list) :nreg 4 :nloop (+ block-count -1)) - (gs-reg-list prim rgbaq xyzf2 xyzf2) - ) - + (dma-buffer-add-gif-tag buf + (new 'static 'gif-tag64 :eop 1 :flg (gif-flag reg-list) :nreg 4 :nloop (+ block-count -1)) + (gs-reg-list prim rgbaq xyzf2 xyzf2)) ;; loop through blocks to draw. (while (< block-idx block-count) (let ((block (-> this data block-idx))) ;; add first three regs (prim, color, one vertex) - (dma-buffer-add-uint64 buf (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe 1) - (-> block color) - (new 'static 'gs-xyzf :x left :y (* (+ *profile-y* screen-y) 16) :z #x3fffff) - ) - + (dma-buffer-add-uint64 buf + (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe 1) + (-> block color) + (new 'static 'gs-xyzf :x left :y (* (+ *profile-y* screen-y) 16) :z #x3fffff)) ;; update end-time, when the work for the frame is done. ;; don't include end-draw. - (if (!= (-> block name) 'end-draw) - (set! end-time (the-as int (-> block time-stamp))) - ) - + (if (!= (-> block name) 'end-draw) (set! end-time (the-as int (-> block time-stamp)))) ;; compute left, the end of this bar. (set! left (* (+ *profile-x* ;; bar start - (/ (* (-> block time-stamp) (the-as uint *profile-w*)) ;; fraction of ticks per frame - (the-as uint *ticks-per-frame*) - ) - ) - 16 ;; convert to 12.4 - ) - ) - ) - + (/ (* (-> block time-stamp) (the-as uint *profile-w*)) ;; fraction of ticks per frame + (the-as uint *ticks-per-frame*))) + 16 ;; convert to 12.4 + ))) ;; add other vertex to end the bar. (dma-buffer-add-uint64 buf (new 'static 'gs-xyzf :x left :y (* (+ *profile-y* screen-y *profile-h*) 16) :z #x3fffff)) - ;; next block! - (+! block-idx 1) - ) + (+! block-idx 1)) ;; end loop over blocks. ) - ;; update the worst time cache if its more than 0.25 seconds old, or we did worse ;; than the cached value. ;; we use bar-pos/10 as the index into the cache, which is kind of sketchy. (when (or (< (seconds 0.25) (- (-> *display* real-frame-counter) (-> this cache-time))) - (>= end-time (the-as int (-> worst-time-cache (/ bar-pos 10)))) - ) + (>= end-time (the-as int (-> worst-time-cache (/ bar-pos 10))))) (set! (-> worst-time-cache (/ bar-pos 10)) (the-as uint end-time)) - (set! (-> this cache-time) (-> *display* real-frame-counter)) - ) - + (set! (-> this cache-time) (-> *display* real-frame-counter))) ;; draw the time, either in ticks or percent. (cond (*profile-ticks* (draw-string-xy (string-format "~5D" (-> worst-time-cache (/ bar-pos 10))) - buf 488 (+ bar-pos 8) (font-color default) (font-flags shadow right)) - (the float (-> worst-time-cache (/ bar-pos 10))) - ) + buf + 488 + (+ bar-pos 8) + (font-color default) + (font-flags shadow right)) + (the float (-> worst-time-cache (/ bar-pos 10)))) (else ;; for some reason, they use 104% here. This means that when you see ;; 100%, it actually means ~96% of ticks-per-frame. ;; this is possibly because there's some time in between reaching here ;; and when the next one starts (in drawable.gc) - (let ((f30-0 (/ (* 104.0 (the float (-> worst-time-cache (/ bar-pos 10)))) - (the float *ticks-per-frame*) - ))) - (draw-string-xy (string-format "~5,,2f" f30-0) buf 488 (+ bar-pos 8) - (if (>= f30-0 100.0) (font-color red) (font-color default)) ;; turn red if over 100. - (font-flags shadow right) - ) - f30-0 - ) - ) - ) - ) - ) + (let ((f30-0 (/ (* 104.0 (the float (-> worst-time-cache (/ bar-pos 10)))) (the float *ticks-per-frame*)))) + (draw-string-xy (string-format "~5,,2f" f30-0) + buf + 488 + (+ bar-pos 8) + (if (>= f30-0 100.0) (font-color red) (font-color default)) ;; turn red if over 100. + (font-flags shadow right)) + f30-0))))) ;; get rid of these methods when not debugging. (when (not *debug-segment*) @@ -452,75 +378,72 @@ (set! (-> profile-bar method-table 13) nothing) ;; draw ) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; DRAWING HELPERS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun draw-sprite2d-xy ((buf dma-buffer) (x int) (y int) (w int) (h int) (color rgba)) "Draw a sprite primitive with the given color and dimensions." - ;; create context and clip dimensions. (let* ((context (new 'stack 'draw-context x y w h color)) (draw-x (max 1792 (min 2304 (+ (-> context orgx) 1792)))) - (draw-y (max (min (+ (-> context orgy) (-> *video-parms* screen-miny)) - (-> *video-parms* screen-maxy) - ) - (-> *video-parms* screen-miny) - ) - ) + (draw-y (max (min (+ (-> context orgy) (-> *video-parms* screen-miny)) (-> *video-parms* screen-maxy)) + (-> *video-parms* screen-miny))) (draw-w (-> context width)) (draw-h (-> context height)) ;; remember the address of the first dma-tag ) (with-cnt-vif-block (buf) - - (dma-buffer-add-gif-tag buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :flg (gif-flag reg-list) :nreg 4) - (gs-reg-list prim rgbaq xyzf2 xyzf2) - ) - (dma-buffer-add-uint64 buf (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe 1) + (dma-buffer-add-gif-tag buf + (new 'static 'gif-tag64 :nloop 1 :eop 1 :flg (gif-flag reg-list) :nreg 4) + (gs-reg-list prim rgbaq xyzf2 xyzf2)) + (dma-buffer-add-uint64 buf + (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe 1) (-> context color 0) (new 'static 'gs-xyzf :x (* draw-x 16) :y (* draw-y 16) :z #x3fffff) - (new 'static 'gs-xyzf :x (* (minmax (+ draw-x draw-w) 1792 2304) 16) - :y (* (minmax (+ draw-y draw-h) (-> *video-parms* screen-miny) (-> *video-parms* screen-maxy)) 16) :z #x3fffff) - ) - ) - ) - (none) - ) + (new 'static + 'gs-xyzf + :x + (* (minmax (+ draw-x draw-w) 1792 2304) 16) + :y + (* (minmax (+ draw-y draw-h) (-> *video-parms* screen-miny) (-> *video-parms* screen-maxy)) 16) + :z #x3fffff)))) + (none)) (defun draw-quad2d ((buf dma-buffer) (context draw-context)) "Draw a quad that fills the entire context" (let ((draw-x (max 1792 (min 2304 (+ (-> context orgx) 1792)))) - (draw-y (max (min (+ (-> context orgy) (-> *video-parms* screen-miny)) - (-> *video-parms* screen-maxy) - ) - (-> *video-parms* screen-miny)) - ) + (draw-y (max (min (+ (-> context orgy) (-> *video-parms* screen-miny)) (-> *video-parms* screen-maxy)) + (-> *video-parms* screen-miny))) (draw-w (-> context width)) - (draw-h (-> context height)) - ) - + (draw-h (-> context height))) (with-cnt-vif-block (buf) - (dma-buffer-add-gif-tag buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :flg (gif-flag reg-list) :nreg 9) - (gs-reg-list prim rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2) - ) - - (dma-buffer-add-uint64 buf (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip 1 :abe 1) - (-> context color 0) - (new 'static 'gs-xyzf :x (* draw-x 16) :y (* draw-y 16)) - (-> context color 1) - (new 'static 'gs-xyzf :x (* (minmax (+ draw-x draw-w) 1792 2304) 16) :y (* draw-y 16)) - (-> context color 2) - (new 'static 'gs-xyzf :x (* draw-x 16) :y (* (minmax (+ draw-y draw-h) (-> *video-parms* screen-miny) (-> *video-parms* screen-maxy)) 16)) - (-> context color 3) - (new 'static 'gs-xyzf :x (* (minmax (+ draw-x draw-w) 1792 2304) 16) :y (* (minmax (+ draw-y draw-h) (-> *video-parms* screen-miny) (-> *video-parms* screen-maxy)) 16)) - 0 ;; pad - ) - ) - ) - (none) - ) + (dma-buffer-add-gif-tag buf + (new 'static 'gif-tag64 :nloop 1 :eop 1 :flg (gif-flag reg-list) :nreg 9) + (gs-reg-list prim rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2 rgbaq xyzf2)) + (dma-buffer-add-uint64 buf + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip 1 :abe 1) + (-> context color 0) + (new 'static 'gs-xyzf :x (* draw-x 16) :y (* draw-y 16)) + (-> context color 1) + (new 'static 'gs-xyzf :x (* (minmax (+ draw-x draw-w) 1792 2304) 16) :y (* draw-y 16)) + (-> context color 2) + (new 'static + 'gs-xyzf + :x + (* draw-x 16) + :y + (* (minmax (+ draw-y draw-h) (-> *video-parms* screen-miny) (-> *video-parms* screen-maxy)) 16)) + (-> context color 3) + (new 'static + 'gs-xyzf + :x + (* (minmax (+ draw-x draw-w) 1792 2304) 16) + :y + (* (minmax (+ draw-y draw-h) (-> *video-parms* screen-miny) (-> *video-parms* screen-maxy)) 16)) + 0 ;; pad + ))) + (none)) (defun screen-gradient ((arg0 dma-buffer) (arg1 rgba) (arg2 rgba) (arg3 rgba) (arg4 rgba)) "Fill the screen with a sprite with the given colors." @@ -529,10 +452,8 @@ (set! (-> a1-2 color 1) arg2) (set! (-> a1-2 color 2) arg3) (set! (-> a1-2 color 3) arg4) - (draw-quad2d arg0 a1-2) - ) - (none) - ) + (draw-quad2d arg0 a1-2)) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; INTERRUPT HANDLERS @@ -547,26 +468,16 @@ "Add a profile bar to the VU1 profiler. This will be called from the graphics thread, which will grab it directly from the symbol table, no need to register this handler." (let ((c0 (/ (* 128 (-> *display* frames (-> *display* on-screen) frame profile-bar 1 profile-frame-count)) 69)) - (c1 (* 64 (logand (-> *display* frames (-> *display* on-screen) frame profile-bar 1 profile-frame-count) 3))) - ) - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 1) - 'end-calc - (new 'static 'rgba - :r c0 - :b (- 128 c0) - :g c1 - :a #x80))) - (none) - ) + (c1 (* 64 (logand (-> *display* frames (-> *display* on-screen) frame profile-bar 1 profile-frame-count) 3)))) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 1) + 'end-calc + (new 'static 'rgba :r c0 :b (- 128 c0) :g c1 :a #x80))) + (none)) -(if *debug-segment* - (install-handler 5 vif1-handler-debug) - ) +(if *debug-segment* (install-handler 5 vif1-handler-debug)) (define *oddeven* 0) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; More GS State Helpers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -575,53 +486,42 @@ "Set various gs state registers" (let ((fbw (sar (+ scx 63) 6))) ;; fbw is in 2^6 units. (dma-buffer-add-gs-set-flusha dma-buf - (scissor-1 (new 'static 'gs-scissor :scax1 (+ scx -1) :scay1 (+ scy -1))) - (xyoffset-1 (new 'static 'gs-xy-offset :ofx 0 :ofy 0)) - (frame-1 (new 'static 'gs-frame :fbp fbp :fbw fbw :psm psm :fbmsk fb-msk)) - (test-1 (new 'static 'gs-test :zte 1 :ztst (gs-ztest always))) - (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm 1 :zmsk 1)) - (texflush 0) - ) - ) - dma-buf - ) + (scissor-1 (new 'static 'gs-scissor :scax1 (+ scx -1) :scay1 (+ scy -1))) + (xyoffset-1 (new 'static 'gs-xy-offset :ofx 0 :ofy 0)) + (frame-1 (new 'static 'gs-frame :fbp fbp :fbw fbw :psm psm :fbmsk fb-msk)) + (test-1 (new 'static 'gs-test :zte 1 :ztst (gs-ztest always))) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm 1 :zmsk 1)) + (texflush 0))) + dma-buf) (defun set-display-gs-state-offset ((dma-buf dma-buffer) (fbp int) (width int) (height int) (fb-msk int) (psm int) (off-x int) (off-y int)) "Set various gs state registers" (let ((fbw (sar (+ width 63) 6))) (dma-buffer-add-gs-set-flusha dma-buf - (scissor-1 (new 'static 'gs-scissor :scax1 (+ width -1) :scay1 (+ height -1))) - (xyoffset-1 (new 'static 'gs-xy-offset :ofx (shl off-x 4) :ofy (shl off-y 4))) - (frame-1 (new 'static 'gs-frame :fbp fbp :fbw fbw :psm psm :fbmsk fb-msk)) - (test-1 (new 'static 'gs-test :zte 1 :ztst (gs-ztest always))) - (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm 1 :zmsk 1)) - (texflush 0) - ) - ) - dma-buf - ) + (scissor-1 (new 'static 'gs-scissor :scax1 (+ width -1) :scay1 (+ height -1))) + (xyoffset-1 (new 'static 'gs-xy-offset :ofx (shl off-x 4) :ofy (shl off-y 4))) + (frame-1 (new 'static 'gs-frame :fbp fbp :fbw fbw :psm psm :fbmsk fb-msk)) + (test-1 (new 'static 'gs-test :zte 1 :ztst (gs-ztest always))) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm 1 :zmsk 1)) + (texflush 0))) + dma-buf) (defun reset-display-gs-state ((disp display) (dma-buf dma-buffer) (oddeven int)) "Set the gs state back to something reasonable" (let* ((onscreen (-> disp on-screen)) (hoff (* oddeven 8)) ;; half pixel offset. - (fbp (-> disp frames onscreen draw frame1 fbp)) - ) + (fbp (-> disp frames onscreen draw frame1 fbp))) (dma-buffer-add-gs-set-flusha dma-buf - (scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 (-> *video-parms* screen-masky))) - (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy (+ (* (-> *video-parms* screen-miny) 16) hoff))) - (frame-1 (new 'static 'gs-frame :fbw 8 :fbp (the-as int fbp) :psm (gs-psm ct32))) - (test-1 (new 'static 'gs-test :atst (gs-atest not-equal) :zte 1 :ztst (gs-ztest greater-equal))) - (texa (new 'static 'gs-texa :ta0 #x00 :ta1 #x80)) - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) - (texflush 0) - ) - ) - disp - ) - + (scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 (-> *video-parms* screen-masky))) + (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy (+ (* (-> *video-parms* screen-miny) 16) hoff))) + (frame-1 (new 'static 'gs-frame :fbw 8 :fbp (the-as int fbp) :psm (gs-psm ct32))) + (test-1 (new 'static 'gs-test :atst (gs-atest not-equal) :zte 1 :ztst (gs-ztest greater-equal))) + (texa (new 'static 'gs-texa :ta0 #x00 :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) + (texflush 0))) + disp) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Display Setup diff --git a/goal_src/jak1/engine/gfx/hw/gs.gc b/goal_src/jak1/engine/gfx/hw/gs.gc index b101f60a49..feb38f55cb 100644 --- a/goal_src/jak1/engine/gfx/hw/gs.gc +++ b/goal_src/jak1/engine/gfx/hw/gs.gc @@ -1,21 +1,17 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/dma/dma-buffer.gc") (require "engine/gfx/hw/video-h.gc") (require "engine/math/math.gc") -;; name: gs.gc -;; name in dgo: gs -;; dgos: GAME, ENGINE - ;; Types for the GS - the PS2's GPU. ;; These are used when creating GS packets to be sent to the GIF ;; or for directly interfacing with the memory-mapped GS control registers. (defconstant GIF_REGS_ALL_AD - (new 'static 'gif-tag-regs + (new 'static + 'gif-tag-regs :regs0 (gif-reg-id a+d) :regs1 (gif-reg-id a+d) :regs2 (gif-reg-id a+d) @@ -31,92 +27,63 @@ :regs12 (gif-reg-id a+d) :regs13 (gif-reg-id a+d) :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) + :regs15 (gif-reg-id a+d))) ;; DECOMP BEGINS ;; the GS's PMODE register makes various settings for the PCRTC. (deftype gs-pmode (uint64) - ((en1 uint8 :offset 0 :size 1) - (en2 uint8 :offset 1 :size 1) - (crtmd uint8 :offset 2 :size 3) - (mmod uint8 :offset 5 :size 1) - (amod uint8 :offset 6 :size 1) - (slbg uint8 :offset 7 :size 1) - (alp uint8 :offset 8 :size 8) - ) - ) + ((en1 uint8 :offset 0 :size 1) + (en2 uint8 :offset 1 :size 1) + (crtmd uint8 :offset 2 :size 3) + (mmod uint8 :offset 5 :size 1) + (amod uint8 :offset 6 :size 1) + (slbg uint8 :offset 7 :size 1) + (alp uint8 :offset 8 :size 8))) ;; the GS's SMODE2 register makes settings related to PCRTC video synchronization. (deftype gs-smode2 (uint64) - ((int uint8 :offset 0 :size 1) - (ffmd uint8 :offset 1 :size 1) - (dpms uint8 :offset 2 :size 2) - ) - ) + ((int uint8 :offset 0 :size 1) + (ffmd uint8 :offset 1 :size 1) + (dpms uint8 :offset 2 :size 2))) ;; texture formats (defenum gs-psm - :bitfield #f - :type uint8 - (ct32 0) - (ct24 1) - (ct16 2) - (ct16s 10) - (mt8 19) - (mt4 20) - (mt8h 27) - (mt4hl 36) - (mt4hh 44) - (mz32 48) - (mz24 49) - (mz16 50) - (mz16s 58) - ) + :bitfield #f + :type uint8 + (ct32 0) + (ct24 1) + (ct16 2) + (ct16s 10) + (mt8 19) + (mt4 20) + (mt8h 27) + (mt4hl 36) + (mt4hh 44) + (mz32 48) + (mz24 49) + (mz16 50) + (mz16s 58)) (defun psm-size ((arg0 gs-psm)) "Convert texture format to some type of size." (cond - ((= arg0 (gs-psm mt8)) - 64 - ) - ((= arg0 (gs-psm mt4)) - 32 - ) - ((or (= arg0 (gs-psm ct16)) (= arg0 (gs-psm ct16s)) (= arg0 (gs-psm mz16)) (= arg0 (gs-psm mz16s))) - 128 - ) - (else - 256 - ) - ) - ) + ((= arg0 (gs-psm mt8)) 64) + ((= arg0 (gs-psm mt4)) 32) + ((or (= arg0 (gs-psm ct16)) (= arg0 (gs-psm ct16s)) (= arg0 (gs-psm mz16)) (= arg0 (gs-psm mz16s))) 128) + (else 256))) (defun psm-page-height ((arg0 gs-psm)) "Convert texture format to some type of page height" (cond - ((= arg0 (gs-psm mt8)) - 64 - ) - ((= arg0 (gs-psm mt4)) - 128 - ) - ((or (= arg0 (gs-psm ct16)) (= arg0 (gs-psm ct16s)) (= arg0 (gs-psm mz16)) (= arg0 (gs-psm mz16s))) - 64 - ) - (else - 32 - ) - ) - ) + ((= arg0 (gs-psm mt8)) 64) + ((= arg0 (gs-psm mt4)) 128) + ((or (= arg0 (gs-psm ct16)) (= arg0 (gs-psm ct16s)) (= arg0 (gs-psm mz16)) (= arg0 (gs-psm mz16s))) 64) + (else 32))) (defun psm->string ((arg0 gs-psm)) "Get the name of a texture format." - (enum->string gs-psm arg0) - ) - + (enum->string gs-psm arg0)) (defenum gs-reg :type uint8 @@ -173,143 +140,116 @@ (hwreg 84) (signal 96) (finish 97) - (label 98) - ) + (label 98)) (defenum gs-reg64 :type uint64 - :copy-entries gs-reg - ) + :copy-entries gs-reg) ;; the GS's DISPFB registers make settings for the frame buffer regarding information on ;; Rectangular Area Read Output Circuit n for the PCRTC. ;; write-only (deftype gs-display-fb (uint64) - ((fbp uint16 :offset 0 :size 9) - (fbw uint8 :offset 9 :size 6) - (psm gs-psm :offset 15 :size 5) - (dbx uint16 :offset 32 :size 11) - (dby uint16 :offset 43 :size 11) - ) - ) + ((fbp uint16 :offset 0 :size 9) + (fbw uint8 :offset 9 :size 6) + (psm gs-psm :offset 15 :size 5) + (dbx uint16 :offset 32 :size 11) + (dby uint16 :offset 43 :size 11))) ;; the GS's DISPLAY registers make settings for the display position on the screen regarding ;; information on Rectangular Area Read Output Circuit n for the PCRTC. ;; write-only (deftype gs-display (uint64) - ((dx uint16 :offset 0 :size 12) - (dy uint16 :offset 12 :size 11) - (magh uint8 :offset 23 :size 4) - (magv uint8 :offset 27 :size 2) - (dw uint16 :offset 32 :size 12) - (dh uint16 :offset 44 :size 11) - ) - ) + ((dx uint16 :offset 0 :size 12) + (dy uint16 :offset 12 :size 11) + (magh uint8 :offset 23 :size 4) + (magv uint8 :offset 27 :size 2) + (dw uint16 :offset 32 :size 12) + (dh uint16 :offset 44 :size 11))) ;; the GS's BGCOLOR register sets the background color of the PCRTC with RGB value. ;; write-only (deftype gs-bgcolor (uint64) - ((r uint8 :offset 0 :size 8) - (g uint8 :offset 8 :size 8) - (b uint8 :offset 16 :size 8) - ) - ) + ((r uint8 :offset 0 :size 8) + (g uint8 :offset 8 :size 8) + (b uint8 :offset 16 :size 8))) ;; the GS's CSR register sets and obtains various GS statuses. ;; read-write. the fields have different effects depending on whether they're being read from ;; or written to. ;; bits 5 and 6 (0x20 and 0x40) should be zero (deftype gs-csr (uint64) - ((signal uint8 :offset 0 :size 1) - (finish uint8 :offset 1 :size 1) - (hsint uint8 :offset 2 :size 1) - (vsint uint8 :offset 3 :size 1) - (edwint uint8 :offset 4 :size 1) - (flush uint8 :offset 8 :size 1) - (reset uint8 :offset 9 :size 1) - (nfield uint8 :offset 12 :size 1) - (field uint8 :offset 13 :size 1) - (fifo uint8 :offset 14 :size 2) - (rev uint8 :offset 16 :size 8) - (id uint8 :offset 24 :size 8) - ) - ) + ((signal uint8 :offset 0 :size 1) + (finish uint8 :offset 1 :size 1) + (hsint uint8 :offset 2 :size 1) + (vsint uint8 :offset 3 :size 1) + (edwint uint8 :offset 4 :size 1) + (flush uint8 :offset 8 :size 1) + (reset uint8 :offset 9 :size 1) + (nfield uint8 :offset 12 :size 1) + (field uint8 :offset 13 :size 1) + (fifo uint8 :offset 14 :size 2) + (rev uint8 :offset 16 :size 8) + (id uint8 :offset 24 :size 8))) ;; memory layout of the GS's privileged registers (mapped to EE memory) ;; it is missing the SIGLBLID/LABELID register at 4224 (useless anyway?) (deftype gs-bank (structure) - ((pmode gs-pmode) - (smode2 gs-smode2 :offset 32) - (dspfb1 gs-display-fb :offset 112) - (display1 gs-display :offset 128) - (dspfb2 gs-display-fb :offset 144) - (display2 gs-display :offset 160) - (extbuf uint64 :offset 176) - (extdata uint64 :offset 192) - (extwrite uint64 :offset 208) - (bgcolor gs-bgcolor :offset 224) - (csr gs-csr :offset 4096) - (imr uint64 :offset 4112) - (busdir uint64 :offset 4160) - ) - ) - + ((pmode gs-pmode) + (smode2 gs-smode2 :offset 32) + (dspfb1 gs-display-fb :offset 112) + (display1 gs-display :offset 128) + (dspfb2 gs-display-fb :offset 144) + (display2 gs-display :offset 160) + (extbuf uint64 :offset 176) + (extdata uint64 :offset 192) + (extwrite uint64 :offset 208) + (bgcolor gs-bgcolor :offset 224) + (csr gs-csr :offset 4096) + (imr uint64 :offset 4112) + (busdir uint64 :offset 4160))) ;; the GS's FRAME registers store various settings related to the frame buffer. (deftype gs-frame (uint64) - ((fbp uint16 :offset 0 :size 9) - (fbw uint8 :offset 16 :size 6) - (psm gs-psm :offset 24 :size 6) - (fbmsk uint32 :offset 32 :size 32) - ) - ) + ((fbp uint16 :offset 0 :size 9) + (fbw uint8 :offset 16 :size 6) + (psm gs-psm :offset 24 :size 6) + (fbmsk uint32 :offset 32 :size 32))) ;; the GS's ZBUF registers make various settings regarding Z buffer. (deftype gs-zbuf (uint64) - ((zbp uint16 :offset 0 :size 9) - (psm gs-psm :offset 24 :size 4) - (zmsk uint8 :offset 32 :size 1) - ) - ) + ((zbp uint16 :offset 0 :size 9) + (psm gs-psm :offset 24 :size 4) + (zmsk uint8 :offset 32 :size 1))) ;; the GS's XYOFFSET registers set the offset value for converting from the primitive coordinate ;; system to the window coordinate system. (deftype gs-xy-offset (uint64) - ((ofx uint16 :offset 0 :size 16) - (ofy uint16 :offset 32 :size 16) - ) - ) + ((ofx uint16 :offset 0 :size 16) + (ofy uint16 :offset 32 :size 16))) ;; the GS's SCISSOR registers specify the scissoring area. The coordinate values for ;; the upper-left/lower-right points of the enabled drawing area are specified by the window ;; coordinate system. (deftype gs-scissor (uint64) - ((scax0 uint16 :offset 0 :size 11) - (scax1 uint16 :offset 16 :size 11) - (scay0 uint16 :offset 32 :size 11) - (scay1 uint16 :offset 48 :size 11) - ) - ) + ((scax0 uint16 :offset 0 :size 11) + (scax1 uint16 :offset 16 :size 11) + (scay0 uint16 :offset 32 :size 11) + (scay1 uint16 :offset 48 :size 11))) ;; the GS's PRMODECONT register sets whether to use primitive attributes (IIP, TME, FGE, ABE, ;; AA1, FST, CTXT, FIX) specified by the PRMODE register or the PRIM register. (deftype gs-prmode-cont (uint64) - ((ac uint8 :offset 0 :size 1) - ) - ) + ((ac uint8 :offset 0 :size 1))) ;; the GS's COLCLAMP register stores settings as to whether clamping for the RGB value of the ;; pixel is performed. (deftype gs-color-clamp (uint64) - ((clamp uint8 :offset 0 :size 1) - ) - ) + ((clamp uint8 :offset 0 :size 1))) ;; the GS's DTHE register stores settings for dithering (performed/not performed). (deftype gs-dthe (uint64) - ((dthe uint8 :offset 0 :size 1) - ) - ) + ((dthe uint8 :offset 0 :size 1))) (defenum gs-atest :type uint8 @@ -320,27 +260,25 @@ (equal 4) (greater-equal 5) (greater 6) - (not-equal 7) - ) + (not-equal 7)) + (defenum gs-ztest :type uint8 (never 0) (always 1) (greater-equal 2) - (greater 3) - ) + (greater 3)) + ;; the GS's TEST register performs settings related to the pixel test. (deftype gs-test (uint64) - ((ate uint8 :offset 0 :size 1) - (atst gs-atest :offset 1 :size 3) - (aref uint8 :offset 4 :size 8) - (afail uint8 :offset 12 :size 2) - (date uint8 :offset 14 :size 1) - (datm uint8 :offset 15 :size 1) - (zte uint8 :offset 16 :size 1) - (ztst gs-ztest :offset 17 :size 2) - ) - ) + ((ate uint8 :offset 0 :size 1) + (atst gs-atest :offset 1 :size 3) + (aref uint8 :offset 4 :size 8) + (afail uint8 :offset 12 :size 2) + (date uint8 :offset 14 :size 1) + (datm uint8 :offset 15 :size 1) + (zte uint8 :offset 16 :size 1) + (ztst gs-ztest :offset 17 :size 2))) (defenum gs-prim-type :type uint8 @@ -350,176 +288,144 @@ (tri 3) (tri-strip 4) (tri-fan 5) - (sprite 6) - ) + (sprite 6)) + ;; the GS's PRIM register specifies the types of drawing primitives and various attributes, and ;; initializes the contents of the vertex queue. (deftype gs-prim (uint64) - ((prim gs-prim-type :offset 0 :size 3) - (iip uint8 :offset 3 :size 1) - (tme uint8 :offset 4 :size 1) - (fge uint8 :offset 5 :size 1) - (abe uint8 :offset 6 :size 1) - (aa1 uint8 :offset 7 :size 1) - (fst uint8 :offset 8 :size 1) - (ctxt uint8 :offset 9 :size 1) - (fix uint8 :offset 10 :size 1) - ) - ) + ((prim gs-prim-type :offset 0 :size 3) + (iip uint8 :offset 3 :size 1) + (tme uint8 :offset 4 :size 1) + (fge uint8 :offset 5 :size 1) + (abe uint8 :offset 6 :size 1) + (aa1 uint8 :offset 7 :size 1) + (fst uint8 :offset 8 :size 1) + (ctxt uint8 :offset 9 :size 1) + (fix uint8 :offset 10 :size 1))) ;; the GS's RGBAQ register sets the RGBA value of the vertex and the Q value of the normalized ;; texture coordinates. (deftype gs-rgbaq (uint64) - ((r uint8 :offset 0 :size 8) - (g uint8 :offset 8 :size 8) - (b uint8 :offset 16 :size 8) - (a uint8 :offset 24 :size 8) - (q float :offset 32 :size 32) - ) - ) + ((r uint8 :offset 0 :size 8) + (g uint8 :offset 8 :size 8) + (b uint8 :offset 16 :size 8) + (a uint8 :offset 24 :size 8) + (q float :offset 32 :size 32))) ;; GS XYZ registers (deftype gs-xyz (uint64) - ((x uint16 :offset 0 :size 16) - (y uint16 :offset 16 :size 16) - (z uint32 :offset 32 :size 32) - ) - ) + ((x uint16 :offset 0 :size 16) + (y uint16 :offset 16 :size 16) + (z uint32 :offset 32 :size 32))) ;; the GS's UV register specifies the texel coordinate (UV) values of the vertex. (deftype gs-uv (uint64) - ((u uint16 :offset 0 :size 14) - (v uint16 :offset 16 :size 14) - ) - ) + ((u uint16 :offset 0 :size 14) + (v uint16 :offset 16 :size 14))) ;; the GS's ST register sets the S and T values of the vertex texture coordinates. ;; The value Q is specified by the RGBAQ register. (deftype gs-st (uint64) - ((s float :offset 0 :size 32) - (t float :offset 32 :size 32) - ) - ) + ((s float :offset 0 :size 32) + (t float :offset 32 :size 32))) ;; GS XYZF registers (deftype gs-xyzf (uint64) - ((x uint16 :offset 0 :size 16) - (y uint16 :offset 16 :size 16) - (z uint32 :offset 32 :size 24) - (f uint8 :offset 56 :size 8) - ) - ) + ((x uint16 :offset 0 :size 16) + (y uint16 :offset 16 :size 16) + (z uint32 :offset 32 :size 24) + (f uint8 :offset 56 :size 8))) ;; the GS's TRXPOS register specifies the position and scanning direction of the rectangular area ;; in each buffer where buffer transmission is performed. (deftype gs-trxpos (uint64) - ((ssax uint16 :offset 0 :size 11) - (ssay uint16 :offset 16 :size 11) - (dsax uint16 :offset 32 :size 11) - (dsay uint16 :offset 48 :size 11) - (dir uint8 :offset 59 :size 2) - ) - ) + ((ssax uint16 :offset 0 :size 11) + (ssay uint16 :offset 16 :size 11) + (dsax uint16 :offset 32 :size 11) + (dsay uint16 :offset 48 :size 11) + (dir uint8 :offset 59 :size 2))) ;; the GS's TRXREG register specifies the size of the rectangular area, where the transmission ;; between buffers is implemented, in units of pixels. ;; The pixel mode must be the one set by the BITBLTBUF register. (deftype gs-trxreg (uint64) - ((rrw uint16 :offset 0 :size 12) - (rrh uint16 :offset 32 :size 12) - ) - ) + ((rrw uint16 :offset 0 :size 12) + (rrh uint16 :offset 32 :size 12))) ;; the GS's TRXDIR register specifies the transmission direction in the transmission between ;; buffers, and activates transmission. ;; Appropriate settings must be made by the BITBLTBUF/TRXPOS/TRXREG before activating ;; the transmission. (deftype gs-trxdir (uint64) - ((xdir uint8 :offset 0 :size 2) - ) - ) + ((xdir uint8 :offset 0 :size 2))) ;; the GS's BITBLTBUF register stores buffer-related settings for transmission source and ;; destination during transmission between buffers. (deftype gs-bitbltbuf (uint64) - ((sbp uint16 :offset 0 :size 14) - (sbw uint8 :offset 16 :size 6) - (spsm uint8 :offset 24 :size 6) - (dbp uint16 :offset 32 :size 14) - (dbw uint8 :offset 48 :size 6) - (dpsm uint8 :offset 56 :size 6) - ) - ) + ((sbp uint16 :offset 0 :size 14) + (sbw uint8 :offset 16 :size 6) + (spsm uint8 :offset 24 :size 6) + (dbp uint16 :offset 32 :size 14) + (dbw uint8 :offset 48 :size 6) + (dpsm uint8 :offset 56 :size 6))) ;; the GS's TEX0 registers set various kinds of information regarding the textures to be used. (deftype gs-tex0 (uint64) - ((tbp0 uint16 :offset 0 :size 14) - (tbw uint8 :offset 14 :size 6) - (psm uint8 :offset 20 :size 6) - (tw uint8 :offset 26 :size 4) - (th uint8 :offset 30 :size 4) - (tcc uint8 :offset 34 :size 1) - (tfx uint8 :offset 35 :size 2) - (cbp uint16 :offset 37 :size 14) - (cpsm uint8 :offset 51 :size 4) - (csm uint8 :offset 55 :size 1) - (csa uint8 :offset 56 :size 5) - (cld uint8 :offset 61 :size 3) - ) - ) + ((tbp0 uint16 :offset 0 :size 14) + (tbw uint8 :offset 14 :size 6) + (psm uint8 :offset 20 :size 6) + (tw uint8 :offset 26 :size 4) + (th uint8 :offset 30 :size 4) + (tcc uint8 :offset 34 :size 1) + (tfx uint8 :offset 35 :size 2) + (cbp uint16 :offset 37 :size 14) + (cpsm uint8 :offset 51 :size 4) + (csm uint8 :offset 55 :size 1) + (csa uint8 :offset 56 :size 5) + (cld uint8 :offset 61 :size 3))) ;; the GS's TEX1 registers set information on the sampling method of the textures. (deftype gs-tex1 (uint64) - ((lcm uint8 :offset 0 :size 1) - (mxl uint8 :offset 2 :size 3) - (mmag uint8 :offset 5 :size 1) - (mmin uint8 :offset 6 :size 3) - (mtba uint8 :offset 9 :size 1) - (l uint8 :offset 19 :size 2) - (k int16 :offset 32 :size 12) - ) - ) + ((lcm uint8 :offset 0 :size 1) + (mxl uint8 :offset 2 :size 3) + (mmag uint8 :offset 5 :size 1) + (mmin uint8 :offset 6 :size 3) + (mtba uint8 :offset 9 :size 1) + (l uint8 :offset 19 :size 2) + (k int16 :offset 32 :size 12))) ;; the GS's TEXA register sets the Alpha value to be referred to when the Alpha value of the ;; texture is not an 8-bit value. (deftype gs-texa (uint64) - ((ta0 uint8 :offset 0 :size 8) - (aem uint8 :offset 15 :size 1) - (ta1 uint8 :offset 32 :size 8) - ) - ) + ((ta0 uint8 :offset 0 :size 8) + (aem uint8 :offset 15 :size 1) + (ta1 uint8 :offset 32 :size 8))) ;; the GS's TEXCLUT register specifies the CLUT position in the buffer when the CLUT storage mode ;; is CSM=1 (CSM2 mode). (deftype gs-texclut (uint64) - ((cbw uint8 :offset 0 :size 6) - (cou uint8 :offset 6 :size 6) - (cov uint16 :offset 12 :size 10) - ) - ) + ((cbw uint8 :offset 0 :size 6) + (cou uint8 :offset 6 :size 6) + (cov uint16 :offset 12 :size 10))) ;; the GS's MIPTBP registers set the buffer pointer and buffer width of textures when performing ;; MIPMAP. ;; MIPTBP1 sets levels 1 to 3, MIPTBP2 sets levels 4 to 6. (deftype gs-miptbp (uint64) - ((tbp1 uint16 :offset 0 :size 14) - (tbw1 uint8 :offset 14 :size 6) - (tbp2 uint16 :offset 20 :size 14) - (tbw2 uint8 :offset 34 :size 6) - (tbp3 uint16 :offset 40 :size 14) - (tbw3 uint8 :offset 54 :size 6) - ) - ) + ((tbp1 uint16 :offset 0 :size 14) + (tbw1 uint8 :offset 14 :size 6) + (tbp2 uint16 :offset 20 :size 14) + (tbw2 uint8 :offset 34 :size 6) + (tbp3 uint16 :offset 40 :size 14) + (tbw3 uint8 :offset 54 :size 6))) ;; the GS's ALPHA registers define the blend function of alpha blending (deftype gs-alpha (uint64) - ((a uint8 :offset 0 :size 2) - (b uint8 :offset 2 :size 2) - (c uint8 :offset 4 :size 2) - (d uint8 :offset 6 :size 2) - (fix uint8 :offset 32 :size 8) - ) - ) + ((a uint8 :offset 0 :size 2) + (b uint8 :offset 2 :size 2) + (c uint8 :offset 4 :size 2) + (d uint8 :offset 6 :size 2) + (fix uint8 :offset 32 :size 8))) ;; the GS's CLAMP registers set the texture's wrap mode (repeating or clamping) for both S and T. (defenum gs-tex-wrap-mode @@ -527,103 +433,74 @@ (repeat 0) (clamp 1) (region-clamp 2) - (region-repeat 3) - ) - + (region-repeat 3)) (deftype gs-clamp (uint64) - ((wms gs-tex-wrap-mode :offset 0 :size 2) - (wmt gs-tex-wrap-mode :offset 2 :size 2) - (minu uint16 :offset 4 :size 10) - (maxu uint16 :offset 14 :size 10) - (minv uint16 :offset 24 :size 10) - (maxv uint16 :offset 34 :size 10) - ) - ) + ((wms gs-tex-wrap-mode :offset 0 :size 2) + (wmt gs-tex-wrap-mode :offset 2 :size 2) + (minu uint16 :offset 4 :size 10) + (maxu uint16 :offset 14 :size 10) + (minv uint16 :offset 24 :size 10) + (maxv uint16 :offset 34 :size 10))) (deftype gs-fog (uint64) - ((f uint8 :offset 56 :size 8) - ) - ) - + ((f uint8 :offset 56 :size 8))) (deftype gs-fogcol (uint64) - ((fcr uint8 :offset 0 :size 8) - (fcg uint8 :offset 8 :size 8) - (fcb uint8 :offset 16 :size 8) - ) - ) - + ((fcr uint8 :offset 0 :size 8) + (fcg uint8 :offset 8 :size 8) + (fcb uint8 :offset 16 :size 8))) (deftype gif-ctrl (uint32) - ((rst uint8 :offset 0 :size 1) - (pse uint8 :offset 3 :size 1) - ) - ) + ((rst uint8 :offset 0 :size 1) + (pse uint8 :offset 3 :size 1))) (deftype gif-mode (uint32) - ((m3r uint8 :offset 0 :size 1) - (imt uint8 :offset 2 :size 1) - ) - ) + ((m3r uint8 :offset 0 :size 1) + (imt uint8 :offset 2 :size 1))) (deftype gif-stat (uint32) - ((m3r uint8 :offset 0 :size 1) - (m3p uint8 :offset 1 :size 1) - (imt uint8 :offset 2 :size 1) - (pse uint8 :offset 3 :size 1) - (ip3 uint8 :offset 5 :size 1) - (p3q uint8 :offset 6 :size 1) - (p2q uint8 :offset 7 :size 1) - (p1q uint8 :offset 8 :size 1) - (oph uint8 :offset 9 :size 1) - (apath uint8 :offset 10 :size 2) - (dir uint8 :offset 12 :size 1) - (fqc uint8 :offset 24 :size 5) - ) - ) + ((m3r uint8 :offset 0 :size 1) + (m3p uint8 :offset 1 :size 1) + (imt uint8 :offset 2 :size 1) + (pse uint8 :offset 3 :size 1) + (ip3 uint8 :offset 5 :size 1) + (p3q uint8 :offset 6 :size 1) + (p2q uint8 :offset 7 :size 1) + (p1q uint8 :offset 8 :size 1) + (oph uint8 :offset 9 :size 1) + (apath uint8 :offset 10 :size 2) + (dir uint8 :offset 12 :size 1) + (fqc uint8 :offset 24 :size 5))) (deftype gif-cnt (uint32) - ((loopcnt uint16 :offset 0 :size 15) - (regcnt uint8 :offset 16 :size 4) - (vuaddr uint16 :offset 20 :size 10) - ) - ) + ((loopcnt uint16 :offset 0 :size 15) + (regcnt uint8 :offset 16 :size 4) + (vuaddr uint16 :offset 20 :size 10))) (deftype gif-p3cnt (uint32) - ((p3cnt uint16 :offset 0 :size 15) - ) - ) + ((p3cnt uint16 :offset 0 :size 15))) (deftype gif-p3tag (uint32) - ((loopcnt uint16 :offset 0 :size 15) - (eop uint8 :offset 15 :size 1) - ) - ) + ((loopcnt uint16 :offset 0 :size 15) + (eop uint8 :offset 15 :size 1))) (deftype gif-bank (structure) - ((ctrl gif-ctrl :offset 0) - (mode gif-mode :offset 16) - (stat gif-stat :offset 32) - (tag0 uint32 :offset 64) - (tag1 uint32 :offset 80) - (tag2 uint32 :offset 96) - (tag3 uint32 :offset 112) - (cnt gif-cnt :offset 128) - (p3cnt gif-p3cnt :offset 144) - (p3tag gif-p3tag :offset 160) - ) - ) - - -(deftype gif-tag-prim (uint32) - () - ) - -(deftype gif-tag-count (uint32) - () - :flag-assert #x900000004 - ) + ((ctrl gif-ctrl :offset 0) + (mode gif-mode :offset 16) + (stat gif-stat :offset 32) + (tag0 uint32 :offset 64) + (tag1 uint32 :offset 80) + (tag2 uint32 :offset 96) + (tag3 uint32 :offset 112) + (cnt gif-cnt :offset 128) + (p3cnt gif-p3cnt :offset 144) + (p3tag gif-p3tag :offset 160))) + +(deftype gif-tag-prim (uint32) ()) + +(deftype gif-tag-count (uint32) () + :flag-assert #x900000004) (defenum gif-reg-id :type uint8 @@ -641,110 +518,92 @@ (xyzf3 12) (xyz3 13) (a+d 14) - (nop 15) - ) + (nop 15)) (defenum gif-flag :type uint8 (packed 0) (reg-list 1) (image 2) - (disable 3) - ) + (disable 3)) (deftype gif-tag64 (uint64) - ((nloop uint16 :offset 0 :size 15) - (eop uint8 :offset 15 :size 1) - (id uint16 :offset 32 :size 14) - (pre uint8 :offset 46 :size 1) - (prim gs-prim :offset 47 :size 11) - (flg gif-flag :offset 58 :size 2) - (nreg uint8 :offset 60 :size 4) - ) - ) + ((nloop uint16 :offset 0 :size 15) + (eop uint8 :offset 15 :size 1) + (id uint16 :offset 32 :size 14) + (pre uint8 :offset 46 :size 1) + (prim gs-prim :offset 47 :size 11) + (flg gif-flag :offset 58 :size 2) + (nreg uint8 :offset 60 :size 4))) (deftype gif-tag (uint128) - ((nloop uint16 :offset 0 :size 15) - (eop uint8 :offset 15 :size 1) - (id uint16 :offset 32 :size 14) - (pre uint8 :offset 46 :size 1) - (prim uint16 :offset 47 :size 11) - (flg gif-flag :offset 58 :size 2) - (nreg uint8 :offset 60 :size 4) - (regs0 gif-reg-id :offset 64 :size 4) - (regs1 gif-reg-id :offset 68 :size 4) - (regs2 gif-reg-id :offset 72 :size 4) - (regs3 gif-reg-id :offset 76 :size 4) - (regs4 gif-reg-id :offset 80 :size 4) - (regs5 gif-reg-id :offset 84 :size 4) - (regs6 gif-reg-id :offset 88 :size 4) - (regs7 gif-reg-id :offset 92 :size 4) - (regs8 gif-reg-id :offset 96 :size 4) - (regs9 gif-reg-id :offset 100 :size 4) - (regs10 gif-reg-id :offset 104 :size 4) - (regs11 gif-reg-id :offset 108 :size 4) - (regs12 gif-reg-id :offset 112 :size 4) - (regs13 gif-reg-id :offset 116 :size 4) - (regs14 gif-reg-id :offset 120 :size 4) - (regs15 gif-reg-id :offset 124 :size 4) - ) - :flag-assert #x900000010 - ) + ((nloop uint16 :offset 0 :size 15) + (eop uint8 :offset 15 :size 1) + (id uint16 :offset 32 :size 14) + (pre uint8 :offset 46 :size 1) + (prim uint16 :offset 47 :size 11) + (flg gif-flag :offset 58 :size 2) + (nreg uint8 :offset 60 :size 4) + (regs0 gif-reg-id :offset 64 :size 4) + (regs1 gif-reg-id :offset 68 :size 4) + (regs2 gif-reg-id :offset 72 :size 4) + (regs3 gif-reg-id :offset 76 :size 4) + (regs4 gif-reg-id :offset 80 :size 4) + (regs5 gif-reg-id :offset 84 :size 4) + (regs6 gif-reg-id :offset 88 :size 4) + (regs7 gif-reg-id :offset 92 :size 4) + (regs8 gif-reg-id :offset 96 :size 4) + (regs9 gif-reg-id :offset 100 :size 4) + (regs10 gif-reg-id :offset 104 :size 4) + (regs11 gif-reg-id :offset 108 :size 4) + (regs12 gif-reg-id :offset 112 :size 4) + (regs13 gif-reg-id :offset 116 :size 4) + (regs14 gif-reg-id :offset 120 :size 4) + (regs15 gif-reg-id :offset 124 :size 4)) + :flag-assert #x900000010) (deftype gif-tag-regs (uint64) - ((regs0 gif-reg-id :offset 0 :size 4) - (regs1 gif-reg-id :offset 4 :size 4) - (regs2 gif-reg-id :offset 8 :size 4) - (regs3 gif-reg-id :offset 12 :size 4) - (regs4 gif-reg-id :offset 16 :size 4) - (regs5 gif-reg-id :offset 20 :size 4) - (regs6 gif-reg-id :offset 24 :size 4) - (regs7 gif-reg-id :offset 28 :size 4) - (regs8 gif-reg-id :offset 32 :size 4) - (regs9 gif-reg-id :offset 36 :size 4) - (regs10 gif-reg-id :offset 40 :size 4) - (regs11 gif-reg-id :offset 44 :size 4) - (regs12 gif-reg-id :offset 48 :size 4) - (regs13 gif-reg-id :offset 52 :size 4) - (regs14 gif-reg-id :offset 56 :size 4) - (regs15 gif-reg-id :offset 60 :size 4) - ) - ) + ((regs0 gif-reg-id :offset 0 :size 4) + (regs1 gif-reg-id :offset 4 :size 4) + (regs2 gif-reg-id :offset 8 :size 4) + (regs3 gif-reg-id :offset 12 :size 4) + (regs4 gif-reg-id :offset 16 :size 4) + (regs5 gif-reg-id :offset 20 :size 4) + (regs6 gif-reg-id :offset 24 :size 4) + (regs7 gif-reg-id :offset 28 :size 4) + (regs8 gif-reg-id :offset 32 :size 4) + (regs9 gif-reg-id :offset 36 :size 4) + (regs10 gif-reg-id :offset 40 :size 4) + (regs11 gif-reg-id :offset 44 :size 4) + (regs12 gif-reg-id :offset 48 :size 4) + (regs13 gif-reg-id :offset 52 :size 4) + (regs14 gif-reg-id :offset 56 :size 4) + (regs15 gif-reg-id :offset 60 :size 4))) ;; we unfortunately kind of need this (defmacro gif-tag->static-array (tag regs) "Allocates a new static array of two uint64's making up the gif-tag and the tag registers" - - `(new 'static 'array uint64 2 ,tag ,regs) - ) + `(new 'static 'array uint64 2 ,tag ,regs)) (defmacro gif-prim (prim-type) - `(new 'static 'gs-prim :prim (gs-prim-type ,prim-type) :iip 1 :abe 1) - ) + `(new 'static 'gs-prim :prim (gs-prim-type ,prim-type) :iip 1 :abe 1)) (defmacro gs-reg-list (&rest reg-ids) "Generate a giftag register descriptor list from reg-ids." - (let ((reg-count (length reg-ids))) (when (> (length reg-ids) 16) - (ferror "too many regs passed to gs-reg-list") - ) + (ferror "too many regs passed to gs-reg-list")) (let ((list-to-splice '()) (cur-lst reg-ids) (i -1)) - - ;; this is questionable. - (while (and (not (null? cur-lst)) (< i 15)) - (push! list-to-splice (cons 'gif-reg-id (cons (car cur-lst) '()))) - (push! list-to-splice (string->symbol-format ":regs{}" (inc! i))) - (pop! cur-lst) - ) - - `(new 'static 'gif-tag-regs - ,@list-to-splice - ) - ) - #| ;; the opengoal compiler does not have enough constant propagation for this for now + ;; this is questionable. + (while (and (not (null? cur-lst)) (< i 15)) + (push! list-to-splice (cons 'gif-reg-id (cons (car cur-lst) '()))) + (push! list-to-splice (string->symbol-format ":regs{}" (inc! i))) + (pop! cur-lst)) + `(new 'static 'gif-tag-regs ,@list-to-splice)) + #| + ;; the opengoal compiler does not have enough constant propagation for this for now (let ((i -1)) `(the-as gif-tag-regs (logior ,@(apply (lambda (x) @@ -752,82 +611,62 @@ ) reg-ids) )) - )|# - ) - ) + ) + |# + )) (defmacro dma-buffer-add-gs-set-flusha (buf &rest reg-list) "Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once. The packet runs the flusha command which waits for GIF transfer to end and VU1 microprogram to stop. reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register." - (let ((reg-count (length reg-list)) (qwc (+ (length reg-list) 1)) (reg-names (apply first reg-list)) - (reg-datas (apply second reg-list)) - ) + (reg-datas (apply second reg-list))) `(begin ;; dma tag - (dma-buffer-add-cnt-vif2 ,buf ,qwc - (new 'static 'vif-tag :cmd (vif-cmd flusha)) - (new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc) - ) - + (dma-buffer-add-cnt-vif2 ,buf + ,qwc + (new 'static 'vif-tag :cmd (vif-cmd flusha)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)) ;; gif tag for editing gs regs - (dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count) - (gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d) - ) - + (dma-buffer-add-gif-tag ,buf + (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count) + (gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)) ;; gs regs - (dma-buffer-add-uint64 ,buf - ,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names) - ) - ) - ) - ) + (dma-buffer-add-uint64 ,buf ,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names))))) (defmacro dma-buffer-add-gs-set (buf &rest reg-list) "Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once. reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register." - (let ((reg-count (length reg-list)) (qwc (+ (length reg-list) 1)) (reg-names (apply first reg-list)) - (reg-datas (apply second reg-list)) - ) + (reg-datas (apply second reg-list))) `(begin ;; dma tag - (dma-buffer-add-cnt-vif2 ,buf ,qwc - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc) - ) - + (dma-buffer-add-cnt-vif2 ,buf + ,qwc + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)) ;; gif tag for editing gs regs - (dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count) - (gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d) - ) - + (dma-buffer-add-gif-tag ,buf + (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count) + (gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)) ;; gs regs - (dma-buffer-add-uint64 ,buf - ,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names) - ) - ) - ) - ) + (dma-buffer-add-uint64 ,buf ,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names))))) (deftype gs-gif-tag (structure) - ((qword uint128 :offset-assert 0) ;; is "qword" and inline? in game - (tag gif-tag64 :offset 0) - (regs gif-tag-regs :offset 8) - (dword uint64 2 :offset 0) - (word uint32 4 :offset 0) - ) + ((qword uint128 :offset-assert 0) ;; is "qword" and inline? in game + (tag gif-tag64 :offset 0) + (regs gif-tag-regs :offset 8) + (dword uint64 2 :offset 0) + (word uint32 4 :offset 0)) :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 - ) + :size-assert #x10 + :flag-assert #x900000010) -(defmethod inspect gif-tag ((this gif-tag)) +(defmethod inspect ((this gif-tag)) (format #t "[~8x] gif-tag~%" this) (format #t "~Tnloop: ~4d~%" (-> this nloop)) (format #t "~Teop : ~4d~%" (-> this eop)) @@ -853,8 +692,7 @@ (format #t "~Tregs14: ~4d~%" (-> this regs14)) (format #t "~Tregs15: ~4d~%" (-> this regs15)) ;; original function failed to return this. - this - ) + this) ;; some nice blue. probably the same as the fog color for geyser/sandover/etc. ;; "default" fog color when resetting registers @@ -868,37 +706,27 @@ "Set some GS registers back to default values. Ends with a ret dma-tag. This is intended to live in its own separate dma-buffer and not be added to the global buffer. Calling this will reset this dma-buffer." - ;; reset the buffer. (let ((buff-ptr buff)) (set! (-> buff-ptr base) (-> buff-ptr data)) - (set! (-> buff-ptr end) - (&-> buff-ptr data-buffer (-> buff-ptr allocated-length)) - ) - ) - + (set! (-> buff-ptr end) (&-> buff-ptr data-buffer (-> buff-ptr allocated-length)))) ;; set up a GIF transfer (dma-buffer-add-gs-set-flusha buff - (alpha-1 (new 'static 'gs-alpha :b 1 :d 1)) - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) - (test-1 (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal))) - (pabe 0) - (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) - (tex1-1 (new 'static 'gs-tex1 :mmag 1 :mmin 1)) - (texa (new 'static 'gs-texa :ta1 #x80)) - (texclut (new 'static 'gs-texclut :cbw 4)) - (fogcol *fog-color*) - ) - + (alpha-1 (new 'static 'gs-alpha :b 1 :d 1)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal))) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag 1 :mmin 1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw 4)) + (fogcol *fog-color*)) ;; return dma-tag. (dma-buffer-add-ret buff) - (none) - ) - + (none)) (default-buffer-init *default-regs-buffer*) - ;; This isn't a dynamic type in the type system, but it's used as one. ;; the array at the end is used as a dynamic array. ;; NOTE - this gif-packet stuff seems unused. Instead dma-gif-packet is used. @@ -912,84 +740,64 @@ ;; now you have a reglist gs packet. (deftype gif-packet (basic) - ((reg-count int32) - (gif-tag gs-gif-tag :inline) - (gif-tag0 uint128 :overlay-at (-> gif-tag qword)) - (args uint64 1) - ) + ((reg-count int32) + (gif-tag gs-gif-tag :inline) + (gif-tag0 uint128 :overlay-at (-> gif-tag qword)) + (args uint64 1)) (:methods - (new (symbol type int) _type_) - ) - ) - + (new (symbol type int) _type_))) (defmethod new gif-packet ((allocation symbol) (type-to-make type) (arg0 int)) "Make a new gif packet with enough room for arg0 64-bit args" - (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* (+ arg0 -1) 8)))) - ) + (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* (+ arg0 -1) 8))))) (defun open-gif-packet ((arg0 gif-packet)) "Initialize an existing gif-packet for 0 registers" (set! (-> arg0 reg-count) 0) (set! (-> arg0 gif-tag regs) (new 'static 'gif-tag-regs)) - arg0 - ) + arg0) (defun add-reg-gif-packet ((packet gif-packet) (reg-idx int) (reg-val int)) "Add a register to the packet" (let ((tag (-> packet gif-tag))) ;; shift the register index into the right slot - (logior! (-> tag regs) (ash reg-idx (* (-> packet reg-count) 4))) - ) + (logior! (-> tag regs) (ash reg-idx (* (-> packet reg-count) 4)))) ;; set register value and increment count. (set! (-> packet args (-> packet reg-count)) (the-as uint reg-val)) (+! (-> packet reg-count) 1) - (none) - ) + (none)) (defun close-gif-packet ((arg0 gif-packet) (arg1 int)) (set! (-> arg0 gif-tag tag) - (new 'static 'gif-tag64 :nloop #x1 :flg (gif-flag reg-list) :eop arg1 :nreg (-> arg0 reg-count)) - ) - arg0 - ) + (new 'static 'gif-tag64 :nloop #x1 :flg (gif-flag reg-list) :eop arg1 :nreg (-> arg0 reg-count))) + arg0) (deftype draw-context (basic) - ((orgx int32) - (orgy int32) - (orgz int32) - (width int32) - (height int32) - (color rgba 4) - ) + ((orgx int32) + (orgy int32) + (orgz int32) + (width int32) + (height int32) + (color rgba 4)) (:methods - (new (symbol type int int int int rgba) _type_) - ) - ) - + (new (symbol type int int int int rgba) _type_))) (defmethod new draw-context ((allocation symbol) (type-to-make type) (org-x int) (org-y int) (width int) (height int) (color-0 rgba)) "Allocate and initialize a draw-context" (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (let ((v1-3 (the int (* (the float org-y) (-> *video-parms* relative-y-scale)))) - (a0-2 (the int (* (the float height) (-> *video-parms* relative-y-scale)))) - ) + (a0-2 (the int (* (the float height) (-> *video-parms* relative-y-scale))))) (set! (-> this orgx) org-x) (set! (-> this orgy) v1-3) (set! (-> this orgz) #xffffff) (set! (-> this width) width) - (set! (-> this height) a0-2) - ) + (set! (-> this height) a0-2)) (set! (-> this color 0) color-0) - this - ) - ) + this)) (defun draw-context-set-xy ((ctxt draw-context) (x int) (y int)) "Set the origin of the draw context, scaling by relative-y-scale as needed." (let ((v0-0 (the int (* (the float y) (-> *video-parms* relative-y-scale))))) (set! (-> ctxt orgx) x) - (set! (-> ctxt orgy) v0-0) - ) - (none) - ) + (set! (-> ctxt orgy) v0-0)) + (none)) diff --git a/goal_src/jak1/engine/gfx/hw/video-h.gc b/goal_src/jak1/engine/gfx/hw/video-h.gc index 72e9ccc48f..19fe72025c 100644 --- a/goal_src/jak1/engine/gfx/hw/video-h.gc +++ b/goal_src/jak1/engine/gfx/hw/video-h.gc @@ -1,14 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: video-h.gc -;; name in dgo: video-h -;; dgos: GAME, ENGINE - - ;; The "video" system manages PAL vs. NTSC and aspect ratio settings ;; (not including timing difference between PAL/NTSC) ;; These are stored in the *video-parms* global. @@ -18,52 +12,53 @@ ;; DECOMP BEGINS (deftype video-parms (structure) - ((set-video-mode basic) - (reset-video-mode basic) - (screen-sy int32) - (screen-hy int32) - (screen-miny int32) - (screen-maxy int32) - (screen-masky int32) - (display-dx int32) - (display-dy int32) - (screen-pages-high int32) - (_pad int64) - (relative-x-scale float) - (relative-y-scale float) - (_pad2 int64) - (relative-x-scale-reciprical float) - (relative-y-scale-reciprical float) - ) - ) + ((set-video-mode basic) + (reset-video-mode basic) + (screen-sy int32) + (screen-hy int32) + (screen-miny int32) + (screen-maxy int32) + (screen-masky int32) + (display-dx int32) + (display-dy int32) + (screen-pages-high int32) + (_pad int64) + (relative-x-scale float) + (relative-y-scale float) + (_pad2 int64) + (relative-x-scale-reciprical float) + (relative-y-scale-reciprical float))) ;; default to NTSC (define *video-parms* - (new 'static 'video-parms - :set-video-mode #f - :reset-video-mode #f - :screen-sy 224 - :screen-hy 112 - :screen-miny 1824 - :screen-maxy 2272 - :screen-masky #xdf - :display-dx 0 - :display-dy 8 - :screen-pages-high 7 - :relative-x-scale 1.0 - :relative-y-scale 1.0 - :relative-x-scale-reciprical 1.0 - :relative-y-scale-reciprical 0.0 ;; wrong. - ) - ) + (new 'static + 'video-parms + :set-video-mode #f + :reset-video-mode #f + :screen-sy 224 + :screen-hy 112 + :screen-miny 1824 + :screen-maxy 2272 + :screen-masky #xdf + :display-dx 0 + :display-dy 8 + :screen-pages-high 7 + :relative-x-scale 1.0 + :relative-y-scale 1.0 + :relative-x-scale-reciprical 1.0 + :relative-y-scale-reciprical 0.0 + ;; wrong. + )) (define-extern get-video-mode (function symbol)) + (define-extern get-aspect-ratio (function symbol)) + (define-extern set-hud-aspect-ratio (function symbol symbol none)) + (define-extern set-aspect-ratio (function symbol none)) + (define-extern set-video-mode (function symbol none)) (defmacro correct-x-int (pos) - `(the int (* (-> *video-parms* relative-x-scale) (the float ,pos))) - ) - + `(the int (* (-> *video-parms* relative-x-scale) (the float ,pos)))) diff --git a/goal_src/jak1/engine/gfx/hw/video.gc b/goal_src/jak1/engine/gfx/hw/video.gc index c21d174f07..81ac08205b 100644 --- a/goal_src/jak1/engine/gfx/hw/video.gc +++ b/goal_src/jak1/engine/gfx/hw/video.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/shadow/shadow-cpu.gc") -;; name: video.gc -;; name in dgo: video -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun set-video-mode ((arg0 symbol)) @@ -22,8 +17,7 @@ (set! (-> *math-camera* isometric vector 1 y) 0.5) (set! (-> *math-camera* y-pix) 112.0) (set! (-> *math-camera* y-clip) 448.0) - (set! (-> *shadow-data* texoffset y) 112.5) - ) + (set! (-> *shadow-data* texoffset y) 112.5)) (('pal) (set! (-> *video-parms* screen-sy) 256) (set! (-> *setting-control* default screenx) 0) @@ -34,8 +28,7 @@ (set! (-> *math-camera* isometric vector 1 y) 0.4375) (set! (-> *math-camera* y-pix) 128.0) (set! (-> *math-camera* y-clip) 512.0) - (set! (-> *shadow-data* texoffset y) 128.5) - ) + (set! (-> *shadow-data* texoffset y) 128.5)) (('custom) (set! (-> *video-parms* screen-sy) 224) (set! (-> *setting-control* default screenx) 0) @@ -46,9 +39,7 @@ (set! (-> *math-camera* isometric vector 1 y) 0.5) (set! (-> *math-camera* y-pix) 112.0) (set! (-> *math-camera* y-clip) 448.0) - (set! (-> *shadow-data* texoffset y) 112.5) - ) - ) + (set! (-> *shadow-data* texoffset y) 112.5))) (set-time-ratios *display* (-> *display* time-ratio)) (set! (-> *video-parms* reset-video-mode) #t) (set! (-> *video-parms* screen-hy) (/ (-> *video-parms* screen-sy) 2)) @@ -63,41 +54,24 @@ (set! *profile-y* (+ (-> *video-parms* screen-miny) 8)) (set! (-> *video-parms* set-video-mode) #t) (set-hud-aspect-ratio (get-aspect-ratio) arg0) - (if *progress-process* - (adjust-ratios (-> *progress-process* 0) (get-aspect-ratio) arg0) - ) + (if *progress-process* (adjust-ratios (-> *progress-process* 0) (get-aspect-ratio) arg0)) 0 - (none) - ) + (none)) (defun get-video-mode () - (-> *setting-control* current video-mode) - ) + (-> *setting-control* current video-mode)) (defun set-aspect-ratio ((arg0 symbol)) (case arg0 - (('aspect4x3) - (set! (-> *video-parms* relative-x-scale) 1.0) - (set! (-> *video-parms* relative-x-scale-reciprical) 1.0) - ) + (('aspect4x3) (set! (-> *video-parms* relative-x-scale) 1.0) (set! (-> *video-parms* relative-x-scale-reciprical) 1.0)) (('aspect16x9) (set! (-> *video-parms* relative-x-scale) 0.75) - (set! (-> *video-parms* relative-x-scale-reciprical) 1.3333334) - ) - ) + (set! (-> *video-parms* relative-x-scale-reciprical) 1.3333334))) (set! (-> *font-default-matrix* vector 0 x) (-> *video-parms* relative-x-scale)) (set-hud-aspect-ratio arg0 (get-video-mode)) - (if *progress-process* - (adjust-ratios (-> *progress-process* 0) arg0 (get-video-mode)) - ) + (if *progress-process* (adjust-ratios (-> *progress-process* 0) arg0 (get-video-mode))) 0 - (none) - ) + (none)) (defun get-aspect-ratio () - (-> *setting-control* current aspect-ratio) - ) - - - - + (-> *setting-control* current aspect-ratio)) diff --git a/goal_src/jak1/engine/gfx/lights-h.gc b/goal_src/jak1/engine/gfx/lights-h.gc index 1092393951..c57bc10477 100644 --- a/goal_src/jak1/engine/gfx/lights-h.gc +++ b/goal_src/jak1/engine/gfx/lights-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: lights-h.gc -;; name in dgo: lights-h -;; dgos: GAME, ENGINE - ;; It seems like some of these are unused. ;; The commonly used lights are vu-lights and light-group. @@ -18,77 +13,62 @@ ;; Note that the data is transposed to be faster for use in the VU code. ;; the w components are unused for lighting information - you can put whatever you want in them... (deftype vu-lights (structure) - ((direction vector 3 :inline) - (color vector 3 :inline) - (ambient vector :inline) - ) - ) + ((direction vector 3 :inline) + (color vector 3 :inline) + (ambient vector :inline))) ;; a single directional light. (deftype light (structure) - ((direction vector :inline) - (color rgbaf :inline) - (levels vector :inline) - (level float :overlay-at (-> levels x)) - (sort-level float :overlay-at (-> levels y)) - ) - ) + ((direction vector :inline) + (color rgbaf :inline) + (levels vector :inline) + (level float :overlay-at (-> levels x)) + (sort-level float :overlay-at (-> levels y)))) ;; unused? (deftype light-ellipse (structure) - ((matrix matrix :inline) - (color rgbaf :inline) - (name basic :overlay-at (-> matrix data 3)) - (decay-start float :overlay-at (-> matrix data 7)) - (ambient-point-ratio float :overlay-at (-> matrix data 11)) - (level float :overlay-at (-> matrix data 15)) - (func-symbol basic :overlay-at (-> color a)) - (func basic :overlay-at (-> color a)) - ) - ) + ((matrix matrix :inline) + (color rgbaf :inline) + (name basic :overlay-at (-> matrix data 3)) + (decay-start float :overlay-at (-> matrix data 7)) + (ambient-point-ratio float :overlay-at (-> matrix data 11)) + (level float :overlay-at (-> matrix data 15)) + (func-symbol basic :overlay-at (-> color a)) + (func basic :overlay-at (-> color a)))) ;; This likely doesn't work correctly in both GOAL and OpenGOAL ;; unused? -(deftype light-array (array) - () - ) +(deftype light-array (array) ()) ;; unused? (deftype light-volume (basic) - ((light-array light-array) - ) - ) + ((light-array light-array))) ;; unused? (deftype light-volume-sphere (light-volume) - ((bsphere sphere :inline) - ) - ) + ((bsphere sphere :inline))) ;; unused? (deftype light-volume-planes (light-volume) - ((planes vertical-planes) - ) - ) + ((planes vertical-planes))) ;; unused? -(deftype light-volume-array (array) - () - ) - +(deftype light-volume-array (array) ()) (defmethod print ((this light)) - (format #t "# this levels x) (-> this direction x) (-> this direction y) (-> this direction z)) - (format #t "~F ~F ~F @ #x~X>" (-> this color x) (-> this color y) (-> this color z) this) - this - ) + (format #t + "# this levels x) + (-> this direction x) + (-> this direction y) + (-> this direction z)) + (format #t "~F ~F ~F @ #x~X>" (-> this color x) (-> this color y) (-> this color z) this) + this) ;; the primary light type, used before conversion to vu-lights. (deftype light-group (structure) - ((dir0 light :inline) - (dir1 light :inline) - (dir2 light :inline) - (ambi light :inline) - (lights light 4 :inline :overlay-at dir0) - ) - ) + ((dir0 light :inline) + (dir1 light :inline) + (dir2 light :inline) + (ambi light :inline) + (lights light 4 :inline :overlay-at dir0))) diff --git a/goal_src/jak1/engine/gfx/lights.gc b/goal_src/jak1/engine/gfx/lights.gc index b6a9cdd4a4..516ee7fe99 100644 --- a/goal_src/jak1/engine/gfx/lights.gc +++ b/goal_src/jak1/engine/gfx/lights.gc @@ -1,72 +1,42 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/lights-h.gc") (require "engine/gfx/foreground/bones-h.gc") (require "engine/geometry/geometry.gc") (require "engine/math/vector.gc") - -;; name: lights.gc -;; name in dgo: lights -;; dgos: GAME, ENGINE - (defun light-slerp ((out light) (a light) (b light) (alpha float)) "Linearly interpolate between two light's vectors. Alpha is clamped between 0 - 1." - (let ((clamped-alpha (fmax 0.0 (fmin 1.0 alpha)))) - (vector-lerp! (-> out color) (-> a color) (-> b color) clamped-alpha) - (vector-deg-slerp - (-> out direction) - (-> a direction) - (-> b direction) - clamped-alpha - ) - (let ((f0-2 (-> a levels x)) - (f1-2 (-> b levels x)) - ) - (set! (-> out levels x) (+ f0-2 (* clamped-alpha (- f1-2 f0-2)))) - ) - ) - out - ) + (vector-lerp! (-> out color) (-> a color) (-> b color) clamped-alpha) + (vector-deg-slerp (-> out direction) (-> a direction) (-> b direction) clamped-alpha) + (let ((f0-2 (-> a levels x)) + (f1-2 (-> b levels x))) + (set! (-> out levels x) (+ f0-2 (* clamped-alpha (- f1-2 f0-2)))))) + out) (defun light-group-slerp ((out light-group) (a light-group) (b light-group) (alpha float)) "Linearly interpolate between each of the 4 vectors of two light-groups. Alpha is clamped between 0 - 1." - (dotimes (vec-index 4) - (light-slerp - (-> out lights vec-index) - (-> a lights vec-index) - (-> b lights vec-index) - alpha - ) - ) - out - ) + (light-slerp (-> out lights vec-index) (-> a lights vec-index) (-> b lights vec-index) alpha)) + out) (defun light-group-process! ((arg0 vu-lights) (arg1 light-group) (arg2 vector) (arg3 vector)) "unused." (rotate-y<-vector+vector arg3 arg2) (vu-lights<-light-group! arg0 arg1) - (none) - ) + (none)) (define *default-lights* (new 'global 'vu-lights)) (defun vu-lights-default! ((lights vu-lights)) "Initialize a lights object with default values" - (set-vector! (-> lights ambient) 0.3 0.3 0.3 1.0) - (set-vector! (-> lights color 0) 1.0 1.0 1.0 1.0) (set-vector! (-> lights color 1) 0.2 0.2 0.2 1.0) (set-vector! (-> lights color 2) 0.0 0.0 0.0 1.0) - (set-vector! (-> lights direction 0) 1.0 0.0 0.0 1.0) (set-vector! (-> lights direction 1) 0.0 1.0 0.0 1.0) (set-vector! (-> lights direction 2) 0.0 0.0 1.0 1.0) - - lights - ) + lights) diff --git a/goal_src/jak1/engine/gfx/math-camera-h.gc b/goal_src/jak1/engine/gfx/math-camera-h.gc index c4df535e5f..75e5f71084 100644 --- a/goal_src/jak1/engine/gfx/math-camera-h.gc +++ b/goal_src/jak1/engine/gfx/math-camera-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: math-camera-h.gc -;; name in dgo: math-camera-h -;; dgos: GAME, ENGINE - ;; The "math-camera" is responsible for computing the projection matrix used in the renderer ;; from the position of the in-game camera. It also computes some other common camera info. ;; See cam-update.gc for how the game camera updates the math-camera. @@ -19,94 +14,84 @@ ;; DECOMP BEGINS (deftype vis-gif-tag (structure) - ((fog0 uint32) - (strip uint32) - (regs uint32) - (fan uint32) - ) - ) - + ((fog0 uint32) + (strip uint32) + (regs uint32) + (fan uint32))) (deftype cull-info (structure) - ((x-fact float) - (y-fact float) - (z-fact float) - (cam-radius float) - (cam-x float) - (cam-y float) - (xz-dir-ax float) - (xz-dir-az float) - (xz-dir-bx float) - (xz-dir-bz float) - (xz-cross-ab float) - (yz-dir-ay float) - (yz-dir-az float) - (yz-dir-by float) - (yz-dir-bz float) - (yz-cross-ab float) - ) - :pack-me - ) - + ((x-fact float) + (y-fact float) + (z-fact float) + (cam-radius float) + (cam-x float) + (cam-y float) + (xz-dir-ax float) + (xz-dir-az float) + (xz-dir-bx float) + (xz-dir-bz float) + (xz-cross-ab float) + (yz-dir-ay float) + (yz-dir-az float) + (yz-dir-by float) + (yz-dir-bz float) + (yz-cross-ab float)) + :pack-me) (deftype math-camera (basic) - ((d meters) - (f meters) - (fov degrees) - (x-ratio float) - (y-ratio float) - (x-pix float) - (x-clip float) - (x-clip-ratio-in float) - (x-clip-ratio-over float) - (y-pix float) - (y-clip float) - (y-clip-ratio-in float) - (y-clip-ratio-over float) - (cull-info cull-info :inline) - (fog-start meters) - (fog-end meters) - (fog-max float) - (fog-min float) - (reset int32) - (smooth-step float) - (smooth-t float) - (perspective matrix :inline) - (isometric matrix :inline) - (sprite-2d matrix :inline) - (sprite-2d-hvdf vector :inline) - (camera-rot matrix :inline) - (inv-camera-rot matrix :inline) - (inv-camera-rot-smooth matrix :inline) - (inv-camera-rot-smooth-from quaternion :inline) + ((d meters) + (f meters) + (fov degrees) + (x-ratio float) + (y-ratio float) + (x-pix float) + (x-clip float) + (x-clip-ratio-in float) + (x-clip-ratio-over float) + (y-pix float) + (y-clip float) + (y-clip-ratio-in float) + (y-clip-ratio-over float) + (cull-info cull-info :inline) + (fog-start meters) + (fog-end meters) + (fog-max float) + (fog-min float) + (reset int32) + (smooth-step float) + (smooth-t float) + (perspective matrix :inline) + (isometric matrix :inline) + (sprite-2d matrix :inline) + (sprite-2d-hvdf vector :inline) + (camera-rot matrix :inline) + (inv-camera-rot matrix :inline) + (inv-camera-rot-smooth matrix :inline) + (inv-camera-rot-smooth-from quaternion :inline) ;; this camera-temp is the main matrix used for renderers. ;; the camera code will set this. ;; it's designed so the renderers can do a single matrix-vector multiply ;; and then get fog, clipping, and final vertex position from the result. - (camera-temp matrix :inline) - (prev-camera-temp matrix :inline) - (hmge-scale vector :inline) - (inv-hmge-scale vector :inline) - (hvdf-off vector :inline) - (guard vector :inline) - (vis-gifs vis-gif-tag 4 :inline) - (vis-gifs-quads uint128 4 :overlay-at vis-gifs) - (giftex vis-gif-tag :overlay-at (-> vis-gifs 0)) - (gifgr vis-gif-tag :overlay-at (-> vis-gifs 1)) - (giftex-trans vis-gif-tag :overlay-at (-> vis-gifs 2)) - (gifgr-trans vis-gif-tag :overlay-at (-> vis-gifs 3)) - (pfog0 float) - (pfog1 float) - (trans vector :inline) - (plane plane 4 :inline) - (guard-plane plane 4 :inline) - (shrub-mat matrix :inline) - (fov-correction-factor float) - ) + (camera-temp matrix :inline) + (prev-camera-temp matrix :inline) + (hmge-scale vector :inline) + (inv-hmge-scale vector :inline) + (hvdf-off vector :inline) + (guard vector :inline) + (vis-gifs vis-gif-tag 4 :inline) + (vis-gifs-quads uint128 4 :overlay-at vis-gifs) + (giftex vis-gif-tag :overlay-at (-> vis-gifs 0)) + (gifgr vis-gif-tag :overlay-at (-> vis-gifs 1)) + (giftex-trans vis-gif-tag :overlay-at (-> vis-gifs 2)) + (gifgr-trans vis-gif-tag :overlay-at (-> vis-gifs 3)) + (pfog0 float) + (pfog1 float) + (trans vector :inline) + (plane plane 4 :inline) + (guard-plane plane 4 :inline) + (shrub-mat matrix :inline) + (fov-correction-factor float)) (:methods - (new (symbol type) _type_) - ) - ) - + (new (symbol type) _type_))) (define-extern *math-camera* math-camera) diff --git a/goal_src/jak1/engine/gfx/math-camera.gc b/goal_src/jak1/engine/gfx/math-camera.gc index 6470334a98..607d0d50ba 100644 --- a/goal_src/jak1/engine/gfx/math-camera.gc +++ b/goal_src/jak1/engine/gfx/math-camera.gc @@ -1,18 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/quaternion-h.gc") (require "pc/pckernel-impl.gc") (require "engine/ps2/vu1-macros.gc") (require "engine/math/trigonometry.gc") (require "engine/math/transform-h.gc") -;; name: math-camera.gc -;; name in dgo: math-camera -;; dgos: GAME, ENGINE - - ;;;;;;;;;;;;;;;;;;;;;; ;; math camera basics ;;;;;;;;;;;;;;;;;;;;;; @@ -43,18 +37,14 @@ ;; The fog-corrector stores a fog-end fog-start value that is corrected for the field of view. ;; the actual correction factor is computed in cam-update.gc (deftype fog-corrector (structure) - ((fog-end float) - (fog-start float) - ) - ) - + ((fog-end float) + (fog-start float))) (defun fog-corrector-setup ((corrector fog-corrector) (math-cam math-camera)) "Set the fog corrector based on the supplied math-camera" (set! (-> corrector fog-end) (* (-> math-cam fog-end) (-> math-cam fov-correction-factor))) (set! (-> corrector fog-start) (* (-> math-cam fog-start) (-> math-cam fov-correction-factor))) - (none) - ) + (none)) (define *math-camera-fog-correction* (new 'global 'fog-corrector)) @@ -62,13 +52,11 @@ (defun update-math-camera ((math-cam math-camera) (video-mode symbol) (aspect symbol)) "Compute some one-time camera constants. These should only change when changing aspect ratio." - ;; the x/y ratio are frustum slopes (set! (-> math-cam x-ratio) (tan (* 0.5 (-> math-cam fov)))) (if (= aspect 'aspect4x3) - (set! (-> math-cam y-ratio) (* (1/ ASPECT_4X3) (-> math-cam x-ratio))) - (set! (-> math-cam y-ratio) (* (1/ ASPECT_16X9) (-> math-cam x-ratio))) - ) + (set! (-> math-cam y-ratio) (* (1/ ASPECT_4X3) (-> math-cam x-ratio))) + (set! (-> math-cam y-ratio) (* (1/ ASPECT_16X9) (-> math-cam x-ratio)))) (with-pc (cond ((-> *pc-settings* use-vis?) @@ -79,132 +67,93 @@ ((real-movie?) ;; force the original 16x9 cropping during cutscenes. (if (<= (-> *pc-settings* aspect-ratio) ASPECT_16X9) - (set! (-> math-cam y-ratio) (* (1/ (-> *pc-settings* aspect-ratio)) (-> math-cam x-ratio))) - (begin - (set! (-> math-cam y-ratio) (* (1/ ASPECT_16X9) (-> math-cam x-ratio))) - (*! (-> math-cam x-ratio) (/ (-> *pc-settings* aspect-ratio) ASPECT_16X9)) - ) - ) - ) + (set! (-> math-cam y-ratio) (* (1/ (-> *pc-settings* aspect-ratio)) (-> math-cam x-ratio))) + (begin + (set! (-> math-cam y-ratio) (* (1/ ASPECT_16X9) (-> math-cam x-ratio))) + (*! (-> math-cam x-ratio) (/ (-> *pc-settings* aspect-ratio) ASPECT_16X9))))) (else ;; not using game vis, allow *extended* aspect ratios ;; there is no vertical cropping, and you can see more of the sides (set! (-> math-cam y-ratio) (* (1/ ASPECT_4X3) (-> math-cam x-ratio))) ;; same cropping as 4x3 (*! (-> math-cam x-ratio) (/ (-> *pc-settings* aspect-ratio) ASPECT_4X3)) ;; extend fov! shows more on the sides. - ) - ) - ) - + ))) ;; compute some culling constants. Not sure what these mean yet (let ((x-rat (-> math-cam x-ratio)) (y-rat (-> math-cam y-ratio)) - (cull-info (-> math-cam cull-info)) - ) + (cull-info (-> math-cam cull-info))) (let ((x-thing (/ (+ 1.0 (* 4.0 x-rat x-rat)) (+ 1.0 (* x-rat x-rat)))) (y-thing (/ (+ 1.0 (* 4.0 y-rat y-rat)) (+ 1.0 (* y-rat y-rat))))) (set! (-> cull-info x-fact) (/ (+ 1.0 (* 4.0 x-rat x-rat)) (* x-rat (sqrtf (+ 1.0 (* 16.0 x-rat x-rat)))))) (set! (-> cull-info y-fact) (/ (+ 1.0 (* 4.0 y-rat y-rat)) (* y-rat (sqrtf (+ 1.0 (* 16.0 y-rat y-rat)))))) (set! (-> cull-info z-fact) - (sqrtf (+ (* (+ -4.0 y-thing) (+ -4.0 y-thing) y-rat y-rat) (* (+ -1.0 y-thing) (+ -1.0 y-thing)))) - ) - ) - + (sqrtf (+ (* (+ -4.0 y-thing) (+ -4.0 y-thing) y-rat y-rat) (* (+ -1.0 y-thing) (+ -1.0 y-thing)))))) ;; radius of sphere containing camera origin and intersection of near plane and frustum (let* ((near-x (* x-rat (-> math-cam d))) (near-y (* y-rat (-> math-cam d))) (near-corner-dist-sqr (+ (* near-x near-x) (* near-y near-y))) - (near-z (-> math-cam d)) - ) - (set! (-> cull-info cam-radius) (sqrtf (+ near-corner-dist-sqr (* near-z near-z)))) - ) - + (near-z (-> math-cam d))) + (set! (-> cull-info cam-radius) (sqrtf (+ near-corner-dist-sqr (* near-z near-z))))) ;; frustum plane equations coefficients? (let* ((dx-rat-2 (* (-> math-cam d) (-> math-cam x-ratio))) (d-temp-2 (-> math-cam d)) (dx-rat-times-4 (* 4.0 dx-rat-2)) - (d-temp-3 (-> math-cam d)) - ) + (d-temp-3 (-> math-cam d))) (let ((inverse-x-len (/ 1.0 (sqrtf (+ (* dx-rat-2 dx-rat-2) (* d-temp-2 d-temp-2))))) - (inverse-x-len-2 (/ 1.0 (sqrtf (+ (* dx-rat-times-4 dx-rat-times-4) (* d-temp-3 d-temp-3))))) - ) + (inverse-x-len-2 (/ 1.0 (sqrtf (+ (* dx-rat-times-4 dx-rat-times-4) (* d-temp-3 d-temp-3)))))) (set! (-> cull-info xz-dir-ax) (* dx-rat-2 inverse-x-len)) (set! (-> cull-info xz-dir-az) (* d-temp-2 inverse-x-len)) (set! (-> cull-info xz-dir-bx) (* dx-rat-times-4 inverse-x-len-2)) - (set! (-> cull-info xz-dir-bz) (* d-temp-3 inverse-x-len-2)) - ) - (set! (-> cull-info xz-cross-ab) (- (* dx-rat-2 d-temp-3) (* d-temp-2 dx-rat-times-4))) - ) - + (set! (-> cull-info xz-dir-bz) (* d-temp-3 inverse-x-len-2))) + (set! (-> cull-info xz-cross-ab) (- (* dx-rat-2 d-temp-3) (* d-temp-2 dx-rat-times-4)))) (let* ((dy-rat (* (-> math-cam d) (-> math-cam y-ratio))) (d-temp-4 (-> math-cam d)) (dy-rat-times-4 (* 4.0 dy-rat)) - (d-temp-5 (-> math-cam d)) - ) + (d-temp-5 (-> math-cam d))) (let ((inverse-y-len (/ 1.0 (sqrtf (+ (* dy-rat dy-rat) (* d-temp-4 d-temp-4))))) - (inverse-y-len-2 (/ 1.0 (sqrtf (+ (* dy-rat-times-4 dy-rat-times-4) (* d-temp-5 d-temp-5))))) - ) + (inverse-y-len-2 (/ 1.0 (sqrtf (+ (* dy-rat-times-4 dy-rat-times-4) (* d-temp-5 d-temp-5)))))) (set! (-> cull-info yz-dir-ay) (* dy-rat inverse-y-len)) (set! (-> cull-info yz-dir-az) (* d-temp-4 inverse-y-len)) (set! (-> cull-info yz-dir-by) (* dy-rat-times-4 inverse-y-len-2)) - (set! (-> cull-info yz-dir-bz) (* d-temp-5 inverse-y-len-2)) - ) - (set! (-> cull-info yz-cross-ab) (- (* dy-rat d-temp-5) (* d-temp-4 dy-rat-times-4))) - ) - ) - + (set! (-> cull-info yz-dir-bz) (* d-temp-5 inverse-y-len-2))) + (set! (-> cull-info yz-cross-ab) (- (* dy-rat d-temp-5) (* d-temp-4 dy-rat-times-4))))) ;; fog setup (fog-corrector-setup *math-camera-fog-correction* math-cam) ;; reset camera rotation (matrix-identity! (-> math-cam camera-rot)) - ;;;;;;;;;;;;;; Perspective matrix setup - ;; these min/max depths are the values we'd want to write to the 24-bit integer depth buffer (let ((min-depth 100.0) (max-depth 16760631.0) ;; almost 2^24. ) (let ((f0-21 16777115.0))) ;; unused. this is actually float closest to 2^24 - ;; next, compute the fog slope d(8bit_integer_fog_value)/d(game_world_distance). ;; the final fog values we want are an 8-bit integer. ;; note that this is the fog at the near plane too. - (let ((fog-slope - (/ (* (-> math-cam d) (- (-> math-cam fog-min) (-> math-cam fog-max))) - (- (-> *math-camera-fog-correction* fog-end) - (-> *math-camera-fog-correction* fog-start) - ) - ) - ) + (let ((fog-slope (/ (* (-> math-cam d) (- (-> math-cam fog-min) (-> math-cam fog-max))) + (- (-> *math-camera-fog-correction* fog-end) (-> *math-camera-fog-correction* fog-start)))) ;; this is half the range of the depth buffer. - (depth-buffer-half-range (* -0.5 (- max-depth min-depth))) - ) + (depth-buffer-half-range (* -0.5 (- max-depth min-depth)))) ;; this is the slope to convert game world depths to depth buffer depths (let ((half-depth-buffer-slope (/ depth-buffer-half-range (* (-> math-cam d) (- (-> math-cam f) (-> math-cam d))))) - (cam-fov-mult (-> math-cam fov-correction-factor)) - ) - + (cam-fov-mult (-> math-cam fov-correction-factor))) ;; finally, build the actual matrix. ;; x/y are just the usual scaling - (set! (-> math-cam perspective vector 0 x) (* cam-fov-mult (- (/ (-> math-cam x-pix) (* (-> math-cam x-ratio) (-> math-cam d)))))) - (set! (-> math-cam perspective vector 1 y) (* cam-fov-mult (- (/ (-> math-cam y-pix) (* (-> math-cam y-ratio) (-> math-cam d)))))) + (set! (-> math-cam perspective vector 0 x) + (* cam-fov-mult (- (/ (-> math-cam x-pix) (* (-> math-cam x-ratio) (-> math-cam d)))))) + (set! (-> math-cam perspective vector 1 y) + (* cam-fov-mult (- (/ (-> math-cam y-pix) (* (-> math-cam y-ratio) (-> math-cam d)))))) ;; depth scaling (set! (-> math-cam perspective vector 2 z) (* cam-fov-mult (+ (-> math-cam f) (-> math-cam d)) half-depth-buffer-slope)) ;; depth to fog (set! (-> math-cam perspective vector 2 w) (* (/ cam-fov-mult (-> math-cam d)) fog-slope)) - - (set! (-> math-cam perspective vector 3 z) (* -2.0 half-depth-buffer-slope (-> math-cam f) (-> math-cam d) cam-fov-mult)) - ) - + (set! (-> math-cam perspective vector 3 z) + (* -2.0 half-depth-buffer-slope (-> math-cam f) (-> math-cam d) cam-fov-mult))) ;; hvdf = horizontal, vertical, depth, fog offsets to be applied after transform. (let ((hvdf-x 2048.0) (hvdf-y 2048.0) (hvdf-w (/ (- (* (-> *math-camera-fog-correction* fog-end) (-> math-cam fog-max)) - (* (-> *math-camera-fog-correction* fog-start) (-> math-cam fog-min)) - ) - (- (-> *math-camera-fog-correction* fog-end) (-> *math-camera-fog-correction* fog-start)) - ) - ) - ) + (* (-> *math-camera-fog-correction* fog-start) (-> math-cam fog-min))) + (- (-> *math-camera-fog-correction* fog-end) (-> *math-camera-fog-correction* fog-start))))) (let ((hvdf-z (* 0.5 (+ max-depth min-depth)))) (set! (-> math-cam hmge-scale x) (/ 1.0 (-> math-cam x-clip))) (set! (-> math-cam hmge-scale y) (/ 1.0 (-> math-cam y-clip))) @@ -228,47 +177,30 @@ ;; #xffffffff, which overflows the 24-bit z buffer. ;; cheating this by 1 bit seems to fix it. (#when PC_PORT - ;; #x4b002032 -> #x4b002031 - (set! (-> math-cam isometric vector 3 z) (the-as float (1- (the-as int (-> math-cam isometric vector 3 z))))) - ;; also do mirror game check here. - (when (pc-cheats? (-> *pc-settings* cheats) mirror) - (*! (-> math-cam perspective vector 0 x) -1.) - ) - ) - ) + ;; #x4b002032 -> #x4b002031 + (set! (-> math-cam isometric vector 3 z) (the-as float (1- (the-as int (-> math-cam isometric vector 3 z))))) + ;; also do mirror game check here. + (when (pc-cheats? (-> *pc-settings* cheats) mirror) + (*! (-> math-cam perspective vector 0 x) -1.)))) (set! (-> math-cam isometric vector 3 w) fog-slope) - ;; perspective matrix (let ((persp-xx (-> math-cam perspective vector 0 x)) (persp-yy (-> math-cam perspective vector 1 y)) - (persp-x (* -1.9996 (-> math-cam perspective vector 0 x))) - ) + (persp-x (* -1.9996 (-> math-cam perspective vector 0 x)))) (let ((sprite-row-0 (-> math-cam sprite-2d))) (set! (-> sprite-row-0 vector 0 x) persp-x) (set! (-> sprite-row-0 vector 0 y) 0.0) (set! (-> sprite-row-0 vector 0 z) 0.0) - (set! (-> sprite-row-0 vector 0 w) 0.0) - ) + (set! (-> sprite-row-0 vector 0 w) 0.0)) (set-vector! (-> math-cam sprite-2d vector 1) 0.0 (- (* (/ persp-yy persp-xx) persp-x)) 0.0 0.0) (set-vector! (-> math-cam sprite-2d vector 2) 0.0 0.0 (- persp-x) 0.0) - (set-vector! - (-> math-cam sprite-2d vector 3) - 0.0 - 0.0 - (* 500000000.0 persp-x) - (* 60.0 persp-x (-> math-cam pfog0)) - ) - ) + (set-vector! (-> math-cam sprite-2d vector 3) 0.0 0.0 (* 500000000.0 persp-x) (* 60.0 persp-x (-> math-cam pfog0)))) (set! (-> math-cam sprite-2d-hvdf quad) (-> math-cam hvdf-off quad)) (set! (-> math-cam sprite-2d-hvdf x) 2048.0) (set! (-> math-cam sprite-2d-hvdf y) 2048.0) (set! (-> math-cam sprite-2d-hvdf z) (-> math-cam hvdf-off z)) (set! (-> math-cam pfog0) fog-slope) - (set! (-> math-cam pfog1) hvdf-w) - ) - ) - ) - + (set! (-> math-cam pfog1) hvdf-w)))) ;; sets up some giftags, but they are totally wrong. ;; they use 32-bit variables to store 64-bit parts of the tag. 0 @@ -279,36 +211,25 @@ (set! (-> vis-gif-0 0 fog0) (the-as uint pfog)) (set! (-> vis-gif-0 0 strip) (the-as uint #x301e4000)) (set! (-> vis-gif-0 0 regs) (the-as uint 1042)) - (set! (-> vis-gif-0 0 fan) (the-as uint #x301ec000)) - ) + (set! (-> vis-gif-0 0 fan) (the-as uint #x301ec000))) (let ((vis-gif-1 (&-> math-cam gifgr))) (set! (-> vis-gif-1 0) (the-as vis-gif-tag pfog)) (set! (-> vis-gif-1 1) (the-as vis-gif-tag (make-u128 0 (shl #x20164000 32)))) (set! (-> vis-gif-1 2) (the-as vis-gif-tag 65)) - (set! (-> vis-gif-1 3) (the-as vis-gif-tag #x301ec000)) - ) + (set! (-> vis-gif-1 3) (the-as vis-gif-tag #x301ec000))) (let ((vis-gif-1-again (-> math-cam vis-gifs))) (set! (-> vis-gif-1-again 0 fog0) (the-as uint pfog)) (set! (-> vis-gif-1-again 0 strip) (the-as uint #x303e4000)) (set! (-> vis-gif-1-again 0 regs) (the-as uint 1042)) - (set! (-> vis-gif-1-again 0 fan) (the-as uint #x303ec000)) - ) + (set! (-> vis-gif-1-again 0 fan) (the-as uint #x303ec000))) (let ((vis-gif-1-again-again (-> math-cam vis-gifs))) (set! (-> vis-gif-1-again-again 0 fog0) (the-as uint pfog)) (set! (-> vis-gif-1-again-again 0 strip) (the-as uint #x303e4000)) (set! (-> vis-gif-1-again-again 0 regs) (the-as uint 1042)) - (set! (-> vis-gif-1-again-again 0 fan) (the-as uint #x303ec000)) - ) - ) - + (set! (-> vis-gif-1-again-again 0 fan) (the-as uint #x303ec000)))) ;; update sprite distort vectors - (if (nonzero? sprite-distorter-generate-tables) - (sprite-distorter-generate-tables) - ) - math-cam - ) - - + (if (nonzero? sprite-distorter-generate-tables) (sprite-distorter-generate-tables)) + math-cam) (defmethod new math-camera ((allocation symbol) (type-to-make type)) "Set up a new math-camera in NTSC mode." @@ -333,9 +254,7 @@ (set! (-> gp-0 reset) 1) (set! (-> gp-0 smooth-step) 0.0) (set! (-> gp-0 smooth-t) 0.0) - (update-math-camera gp-0 'ntsc 'aspect4x3) - ) - ) + (update-math-camera gp-0 'ntsc 'aspect4x3))) (define *math-camera* (new 'global 'math-camera)) @@ -343,48 +262,29 @@ "Unused camera smoothing" (set! (-> *math-camera* smooth-step) (/ 1.0 arg0)) (set! (-> *math-camera* smooth-t) arg1) - (matrix->quaternion (-> *math-camera* inv-camera-rot-smooth-from) (-> *math-camera* inv-camera-rot-smooth)) - ) + (matrix->quaternion (-> *math-camera* inv-camera-rot-smooth-from) (-> *math-camera* inv-camera-rot-smooth))) (defun move-target-from-pad ((trans transform) (pad-idx int)) "Unused function to adjust trans based on inputs from the pad. This function must be extremely old because it takes a non-quaternion transform, and all target stuff uses quaternions." - ;; local-trans is the translation in the camera frame. (let ((local-trans (new-stack-vector0))) ;; circle/square move camera relative x (left and right) - (set! (-> local-trans x) (cond - ((cpad-hold? pad-idx circle) - -80.0 - ) - ((cpad-hold? pad-idx square) - 80.0 - ) - (else - 0.0 - ) - ) - ) - + (set! (-> local-trans x) + (cond + ((cpad-hold? pad-idx circle) -80.0) + ((cpad-hold? pad-idx square) 80.0) + (else 0.0))) ;; no way to move camera relative y (up/down) (set! (-> local-trans y) 0.0) - ;; in and out movement - (set! (-> local-trans z) (cond - ((cpad-hold? pad-idx down) - -80.0 - ) - ((cpad-hold? pad-idx up) - 80.0 - ) - (else - 0.0 - ) - ) - ) + (set! (-> local-trans z) + (cond + ((cpad-hold? pad-idx down) -80.0) + ((cpad-hold? pad-idx up) 80.0) + (else 0.0))) (set! (-> local-trans w) 1.0) - ;; rotate this into world frame (let ((inv-cam-rot (new-stack-vector0)) (cam-rot-mat (new-stack-matrix0))) @@ -393,39 +293,20 @@ ;; convert rotation to rotation matrix. (matrix-rotate-zyx! cam-rot-mat (-> trans rot)) ;; and rotate the translation. - (vector-matrix*! local-trans local-trans cam-rot-mat) - ) - + (vector-matrix*! local-trans local-trans cam-rot-mat)) ;; and update the transform - (vector+! (-> trans trans) (-> trans trans) local-trans) - ) - + (vector+! (-> trans trans) (-> trans trans) local-trans)) ;; don't forget to fix w. (set! (-> trans trans w) 1.0) - ;; global translation - (if (cpad-hold? pad-idx r1) - (+! (-> trans trans y) 80.0) - ) - (if (cpad-hold? pad-idx r2) - (+! (-> trans trans y) -80.0) - ) - + (if (cpad-hold? pad-idx r1) (+! (-> trans trans y) 80.0)) + (if (cpad-hold? pad-idx r2) (+! (-> trans trans y) -80.0)) ;; rotation (don't allow camera roll) - (if (cpad-hold? pad-idx x) - (+! (-> trans rot x) 546.13336) - ) - (if (cpad-hold? pad-idx triangle) - (+! (-> trans rot x) -546.13336) - ) - (if (cpad-hold? pad-idx left) - (+! (-> trans rot y) 546.13336) - ) - (if (cpad-hold? pad-idx right) - (+! (-> trans rot y) -546.13336) - ) - trans - ) + (if (cpad-hold? pad-idx x) (+! (-> trans rot x) 546.13336)) + (if (cpad-hold? pad-idx triangle) (+! (-> trans rot x) -546.13336)) + (if (cpad-hold? pad-idx left) (+! (-> trans rot y) 546.13336)) + (if (cpad-hold? pad-idx right) (+! (-> trans rot y) -546.13336)) + trans) (defun transform-point-vector! ((arg0 vector) (arg1 vector)) "Apply camera transformation to a point. Return true if it is visible or not. @@ -442,8 +323,7 @@ (vf28 :class vf) (vf29 :class vf) (vf30 :class vf) - (vf31 :class vf) - ) + (vf31 :class vf)) (init-vf0-vector) 0 (.lvf vf24 (&-> *math-camera* camera-temp vector 0 quad)) @@ -469,10 +349,7 @@ (.add.vf vf28 vf28 vf30) (.max.x.vf vf28 vf28 vf0 :mask #b1000) (.svf (&-> arg0 quad) vf28) - (zero? (logand clip 63)) - ) - ) - ) + (zero? (logand clip 63))))) (defun transform-point-qword! ((arg0 vector4w) (arg1 vector)) "Apply camera transformation to point, returning fixed point 28.4 position @@ -488,62 +365,48 @@ (vf28 :class vf) (vf29 :class vf) (vf30 :class vf) - (vf31 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 0)) - ) - - ;; this camera matrix has both the projection and camera translation/rotation - (.lvf vf24 (&-> *math-camera* camera-temp vector 0 quad)) - (.lvf vf25 (&-> *math-camera* camera-temp vector 1 quad)) - (.lvf vf26 (&-> *math-camera* camera-temp vector 2 quad)) - (.lvf vf27 (&-> *math-camera* camera-temp vector 3 quad)) - - ;; scaling - (.lvf vf29 (&-> *math-camera* hmge-scale quad)) - - ;; offset - (.lvf vf30 (&-> *math-camera* hvdf-off quad)) - - ;; input point - (.lvf vf28 (&-> arg1 quad)) - - ;; matrix multiply, result in vf28 - (.mul.x.vf acc vf24 vf28) - (.add.mul.y.vf acc vf25 vf28 acc) - (.add.mul.z.vf acc vf26 vf28 acc) - (.add.mul.w.vf vf28 vf27 vf0 acc) - - - (.add.w.vf vf23 vf0 vf0) ;; set w = 1.0 - - ;; apply hmge scaling. the result of this multiply sets clipping flags appropriately - (.mul.vf vf31 vf28 vf29) ;; scale. - ;;(TODO.VCLIP vf31 vf31) - (let ((clip (vu-clip vf31 0))) ;; clip! - - ;; perspective divide - (.div.vf Q vf0 vf31 :fsf #b11 :ftf #b11) - (.wait.vf) - ;;(.cfc2.i v1-7 Clipping) - ;; perspective - (.mul.vf vf28 vf28 Q :mask #b111) - ;; compute scale factor (w was 1.0) - (.mul.vf vf23 vf23 Q) - ;; apply hvdf offsets - (.add.vf vf28 vf28 vf30) - ;; saturate fog - (.max.x.vf vf28 vf28 vf0 :mask #b1000) - ;; convert to GS fixed point - (vftoi4.xyzw vf28 vf28) - ;; store result! - (.svf (&-> arg0 quad) vf28) - ;; return result of clipping. - (zero? (logand clip 63)) - ) - ) - ) + (vf31 :class vf)) + (init-vf0-vector) + (let ((v1-0 0))) + ;; this camera matrix has both the projection and camera translation/rotation + (.lvf vf24 (&-> *math-camera* camera-temp vector 0 quad)) + (.lvf vf25 (&-> *math-camera* camera-temp vector 1 quad)) + (.lvf vf26 (&-> *math-camera* camera-temp vector 2 quad)) + (.lvf vf27 (&-> *math-camera* camera-temp vector 3 quad)) + ;; scaling + (.lvf vf29 (&-> *math-camera* hmge-scale quad)) + ;; offset + (.lvf vf30 (&-> *math-camera* hvdf-off quad)) + ;; input point + (.lvf vf28 (&-> arg1 quad)) + ;; matrix multiply, result in vf28 + (.mul.x.vf acc vf24 vf28) + (.add.mul.y.vf acc vf25 vf28 acc) + (.add.mul.z.vf acc vf26 vf28 acc) + (.add.mul.w.vf vf28 vf27 vf0 acc) + (.add.w.vf vf23 vf0 vf0) ;; set w = 1.0 + ;; apply hmge scaling. the result of this multiply sets clipping flags appropriately + (.mul.vf vf31 vf28 vf29) ;; scale. + ;;(TODO.VCLIP vf31 vf31) + (let ((clip (vu-clip vf31 0))) ;; clip! + ;; perspective divide + (.div.vf Q vf0 vf31 :fsf #b11 :ftf #b11) + (.wait.vf) + ;;(.cfc2.i v1-7 Clipping) + ;; perspective + (.mul.vf vf28 vf28 Q :mask #b111) + ;; compute scale factor (w was 1.0) + (.mul.vf vf23 vf23 Q) + ;; apply hvdf offsets + (.add.vf vf28 vf28 vf30) + ;; saturate fog + (.max.x.vf vf28 vf28 vf0 :mask #b1000) + ;; convert to GS fixed point + (vftoi4.xyzw vf28 vf28) + ;; store result! + (.svf (&-> arg0 quad) vf28) + ;; return result of clipping. + (zero? (logand clip 63))))) (defun transform-point-vector-scale! ((arg0 vector) (arg1 vector)) "Similar to transform-point-qword! but returns the scale factor instead." @@ -559,39 +422,35 @@ (vf28 :class vf) (vf29 :class vf) (vf30 :class vf) - (vf31 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 0)) - ) - (.lvf vf24 (&-> *math-camera* camera-temp vector 0 quad)) - (.lvf vf25 (&-> *math-camera* camera-temp vector 1 quad)) - (.lvf vf26 (&-> *math-camera* camera-temp vector 2 quad)) - (.lvf vf27 (&-> *math-camera* camera-temp vector 3 quad)) - (.lvf vf29 (&-> *math-camera* hmge-scale quad)) - (.lvf vf30 (&-> *math-camera* hvdf-off quad)) - (.lvf vf28 (&-> arg1 quad)) - (.mul.x.vf acc vf24 vf28) - (.add.mul.y.vf acc vf25 vf28 acc) - (.add.mul.z.vf acc vf26 vf28 acc) - (.add.mul.w.vf vf28 vf27 vf0 acc) - (.add.w.vf vf23 vf0 vf0) - (.mul.vf vf31 vf28 vf29) - ;;(TODO.VCLIP vf31 vf31) clip result was unused - (.div.vf Q vf0 vf31 :fsf #b11 :ftf #b11) - (.wait.vf) - ;;(.cfc2.i v1-7 Clipping) - (.mul.vf vf28 vf28 Q :mask #b111) - (.mul.vf vf23 vf23 Q) - (.add.vf vf28 vf28 vf30) - (.max.x.vf vf28 vf28 vf0 :mask #b1000) - (.svf (&-> arg0 quad) vf28) - ;;(let ((a0-2 (zero? (logand v1-7 63)))) - ;; ) - (.mov v0-0 vf23) - v0-0 - ) - ) + (vf31 :class vf)) + (init-vf0-vector) + (let ((v1-0 0))) + (.lvf vf24 (&-> *math-camera* camera-temp vector 0 quad)) + (.lvf vf25 (&-> *math-camera* camera-temp vector 1 quad)) + (.lvf vf26 (&-> *math-camera* camera-temp vector 2 quad)) + (.lvf vf27 (&-> *math-camera* camera-temp vector 3 quad)) + (.lvf vf29 (&-> *math-camera* hmge-scale quad)) + (.lvf vf30 (&-> *math-camera* hvdf-off quad)) + (.lvf vf28 (&-> arg1 quad)) + (.mul.x.vf acc vf24 vf28) + (.add.mul.y.vf acc vf25 vf28 acc) + (.add.mul.z.vf acc vf26 vf28 acc) + (.add.mul.w.vf vf28 vf27 vf0 acc) + (.add.w.vf vf23 vf0 vf0) + (.mul.vf vf31 vf28 vf29) + ;;(TODO.VCLIP vf31 vf31) clip result was unused + (.div.vf Q vf0 vf31 :fsf #b11 :ftf #b11) + (.wait.vf) + ;;(.cfc2.i v1-7 Clipping) + (.mul.vf vf28 vf28 Q :mask #b111) + (.mul.vf vf23 vf23 Q) + (.add.vf vf28 vf28 vf30) + (.max.x.vf vf28 vf28 vf0 :mask #b1000) + (.svf (&-> arg0 quad) vf28) + ;;(let ((a0-2 (zero? (logand v1-7 63)))) + ;; ) + (.mov v0-0 vf23) + v0-0)) (defun init-for-transform ((arg0 matrix)) "Sets up VU0 registers with camera info. @@ -614,64 +473,49 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (let ((gp-0 (new-stack-matrix0)) (s5-0 (new-stack-matrix0)) (s4-0 (new 'stack 'vector4s-3)) (s3-0 (new-stack-vector0)) - (s2-0 (new 'stack 'vector4s-3)) - ) + (s2-0 (new 'stack 'vector4s-3))) (matrix*! s5-0 arg0 (-> *math-camera* camera-temp)) (matrix-3x3-inverse-transpose! gp-0 arg0) - (let ((v1-3 s3-0)) - (set! (-> v1-3 x) 0.4) - (set! (-> v1-3 y) 0.4) - (set! (-> v1-3 z) 0.4) - (set! (-> v1-3 w) 1.0) - ) + (let ((v1-3 s3-0)) (set! (-> v1-3 x) 0.4) (set! (-> v1-3 y) 0.4) (set! (-> v1-3 z) 0.4) (set! (-> v1-3 w) 1.0)) (let ((v1-4 (-> s4-0 data))) (set! (-> v1-4 0) 1.0) (set! (-> v1-4 1) 1.0) (set! (-> v1-4 2) 1.0) - (set! (-> v1-4 3) 1.0) - ) + (set! (-> v1-4 3) 1.0)) (let ((v1-5 (&-> s4-0 data 4))) (set! (-> v1-5 0) 0.0) (set! (-> v1-5 1) 0.0) (set! (-> v1-5 2) 0.0) - (set! (-> v1-5 3) 1.0) - ) + (set! (-> v1-5 3) 1.0)) (let ((v1-6 (&-> s4-0 data 8))) (set! (-> v1-6 0) 0.0) (set! (-> v1-6 1) 0.0) (set! (-> v1-6 2) 0.0) - (set! (-> v1-6 3) 1.0) - ) + (set! (-> v1-6 3) 1.0)) (let ((v1-7 (-> s2-0 data))) (set! (-> v1-7 0) 1.0) (set! (-> v1-7 1) 0.0) (set! (-> v1-7 2) 0.0) - (set! (-> v1-7 3) 1.0) - ) + (set! (-> v1-7 3) 1.0)) (let ((v1-8 (&-> s2-0 data 4))) (set! (-> v1-8 0) 0.0) (set! (-> v1-8 1) 1.0) (set! (-> v1-8 2) 0.0) - (set! (-> v1-8 3) 1.0) - ) + (set! (-> v1-8 3) 1.0)) (let ((v1-9 (&-> s2-0 data 8))) (set! (-> v1-9 0) 0.0) (set! (-> v1-9 1) 0.0) (set! (-> v1-9 2) 1.0) - (set! (-> v1-9 3) 1.0) - ) + (set! (-> v1-9 3) 1.0)) (.lvf vf7 (&-> *math-camera* hmge-scale quad)) (.lvf vf8 (&-> *math-camera* hvdf-off quad)) (.lvf vf9 (&-> *math-camera* giftex)) - (let ((v1-13 255)) - (.mov vf6 v1-13) - ) + (let ((v1-13 255)) (.mov vf6 v1-13)) ;;(.mov v1-14 vf6) (.itof.vf vf6 vf6) (.svf (&-> *transform-regs* vf7) vf7) @@ -688,13 +532,8 @@ (set! (-> *transform-regs* vf23) (-> s2-0 quad 0)) (set! (-> *transform-regs* vf24) (-> s2-0 quad 1)) (set! (-> *transform-regs* vf25) (-> s2-0 quad 2)) - (set! (-> *transform-regs* vf27) (-> s4-0 quad 0)) (set! (-> *transform-regs* vf28) (-> s4-0 quad 1)) (set! (-> *transform-regs* vf29) (-> s4-0 quad 2)) - (set! (-> *transform-regs* vf26) (-> s3-0 quad)) - - ) - (none) - ) - ) + (set! (-> *transform-regs* vf26) (-> s3-0 quad))) + (none))) diff --git a/goal_src/jak1/engine/gfx/merc/generic-merc-h.gc b/goal_src/jak1/engine/gfx/merc/generic-merc-h.gc index 1ca2ee3f8a..926a45c6cd 100644 --- a/goal_src/jak1/engine/gfx/merc/generic-merc-h.gc +++ b/goal_src/jak1/engine/gfx/merc/generic-merc-h.gc @@ -1,116 +1,85 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/dma/dma-buffer.gc") -;; name: generic-merc-h.gc -;; name in dgo: generic-merc-h -;; dgos: GAME, ENGINE - ;; The "generic merc" renderer converts merc data to be used by generic. ;; It is used for environment mapping and scissoring in the original game. ;; DECOMP BEGINS (deftype merc-matrix (structure) - ((quad uint128 8) - (vector vector 8 :inline :overlay-at (-> quad 0)) - (tag uint64 :overlay-at (-> quad 0)) - ) - ) - + ((quad uint128 8) + (vector vector 8 :inline :overlay-at (-> quad 0)) + (tag uint64 :overlay-at (-> quad 0)))) (deftype generic-merc-tag (dma-packet) - ((next-ptr uint32 :overlay-at vif1) - (size uint32 :overlay-at vif0) - ) - ) - + ((next-ptr uint32 :overlay-at vif1) + (size uint32 :overlay-at vif0))) (deftype generic-merc-ctrl (structure) - ((tag generic-merc-tag :inline) - (lights vu-lights :inline) - (header merc-ctrl-header :inline) - (effect merc-effect :inline) - ) - ) - + ((tag generic-merc-tag :inline) + (lights vu-lights :inline) + (header merc-ctrl-header :inline) + (effect merc-effect :inline))) (deftype generic-merc-ctrl-with-sfx (generic-merc-ctrl) - ((sfx-data uint128 11) - ) - ) - + ((sfx-data uint128 11))) (deftype generic-merc-input (structure) - ((geo-tag generic-merc-tag :inline) - (geo-block uint8 1296) - (byte-header merc-byte-header :inline :overlay-at (-> geo-block 0)) - (matrix merc-matrix 9 :inline) - (control generic-merc-ctrl-with-sfx :inline) - (end-tag generic-merc-tag :inline) - (shader adgif-shader :inline) - ) - ) - + ((geo-tag generic-merc-tag :inline) + (geo-block uint8 1296) + (byte-header merc-byte-header :inline :overlay-at (-> geo-block 0)) + (matrix merc-matrix 9 :inline) + (control generic-merc-ctrl-with-sfx :inline) + (end-tag generic-merc-tag :inline) + (shader adgif-shader :inline))) (deftype generic-merc-output (structure) - ((info gsf-info :inline) - (header gsf-header :inline) - (index-kick-table uint16 80) - (index-table uint8 160 :overlay-at (-> index-kick-table 0)) - (inverse-table uint8 256) - (vertex-table gsf-vertex 72 :inline) - ) - ) - + ((info gsf-info :inline) + (header gsf-header :inline) + (index-kick-table uint16 80) + (index-table uint8 160 :overlay-at (-> index-kick-table 0)) + (inverse-table uint8 256) + (vertex-table gsf-vertex 72 :inline))) (deftype generic-merc-dcache (structure) - ((output-a generic-merc-output :inline) - (output-b generic-merc-output :inline) - (inv-table-1 uint8 544) - (inv-table-7 uint8 544) - (inv-safety uint8 16) - (effect-data uint8 1584) - ) - ) - + ((output-a generic-merc-output :inline) + (output-b generic-merc-output :inline) + (inv-table-1 uint8 544) + (inv-table-7 uint8 544) + (inv-safety uint8 16) + (effect-data uint8 1584))) (deftype gm-shadow (structure) - ((perspective matrix :inline) - (isometric matrix :inline) - (inv-camera-rot matrix :inline) - (envmap-shader adgif-shader :inline) - (current-chain uint32) - (next-chain uint32) - (buf-index uint32) - (fragment-count uint32) - (write-limit pointer) - (indexed-input-base generic-merc-input) - (other-input-base generic-merc-input) - (indexed-output-base generic-merc-output) - (other-output-base generic-merc-output) - (p-input uint32) - (gsf-buf generic-merc-dcache) - (p-fheader merc-fp-header) - (mercneric-convert basic) - (generic-prepare-dma-single basic) - (generic-prepare-dma-double basic) - (generic-light-proc basic) - (generic-envmap-proc basic) - (high-speed-reject basic) - (hsr-xmult vector :inline) - (hsr-ymult vector :inline) - ) - ) - + ((perspective matrix :inline) + (isometric matrix :inline) + (inv-camera-rot matrix :inline) + (envmap-shader adgif-shader :inline) + (current-chain uint32) + (next-chain uint32) + (buf-index uint32) + (fragment-count uint32) + (write-limit pointer) + (indexed-input-base generic-merc-input) + (other-input-base generic-merc-input) + (indexed-output-base generic-merc-output) + (other-output-base generic-merc-output) + (p-input uint32) + (gsf-buf generic-merc-dcache) + (p-fheader merc-fp-header) + (mercneric-convert basic) + (generic-prepare-dma-single basic) + (generic-prepare-dma-double basic) + (generic-light-proc basic) + (generic-envmap-proc basic) + (high-speed-reject basic) + (hsr-xmult vector :inline) + (hsr-ymult vector :inline))) (deftype generic-merc-work (structure) - ((input-a generic-merc-input :inline) - (input-b generic-merc-input :inline) - (ctrl generic-merc-ctrl-with-sfx :inline) - (shadow gm-shadow :inline) - (stack uint128 16) - ) - ) + ((input-a generic-merc-input :inline) + (input-b generic-merc-input :inline) + (ctrl generic-merc-ctrl-with-sfx :inline) + (shadow gm-shadow :inline) + (stack uint128 16))) diff --git a/goal_src/jak1/engine/gfx/merc/merc-blend-shape.gc b/goal_src/jak1/engine/gfx/merc/merc-blend-shape.gc index 446449e81a..f7aa908b52 100644 --- a/goal_src/jak1/engine/gfx/merc/merc-blend-shape.gc +++ b/goal_src/jak1/engine/gfx/merc/merc-blend-shape.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/gfx/merc/merc-h.gc") (require "kernel/gkernel-h.gc") (require "kernel/gstring-h.gc") (require "engine/game/game-h.gc") -;; name: merc-blend-shape.gc -;; name in dgo: merc-blend-shape -;; dgos: GAME, ENGINE - ;; The merc-blend-shape renderer does face animations. ;; This is missing most functions right now, but just has the types that we need for ;; looking into merc. @@ -21,109 +16,75 @@ (define *stats-blerc* #f) (deftype blerc-block-header (structure) - ((tag generic-merc-tag :inline :offset-assert 0) - (vtx-count uint32 :offset-assert 16) - (overlap uint32 :offset-assert 20) - (lump-dest uint32 :offset-assert 24) - (lump-qwc uint32 :offset-assert 28) - ) + ((tag generic-merc-tag :inline :offset-assert 0) + (vtx-count uint32 :offset-assert 16) + (overlap uint32 :offset-assert 20) + (lump-dest uint32 :offset-assert 24) + (lump-qwc uint32 :offset-assert 28)) :method-count-assert 9 - :size-assert #x20 - :flag-assert #x900000020 - ) - + :size-assert #x20 + :flag-assert #x900000020) (deftype blerc-block (structure) - ((output uint8 848 :offset-assert 0) - (header blerc-block-header :inline :offset-assert 848) - ) + ((output uint8 848 :offset-assert 0) + (header blerc-block-header :inline :offset-assert 848)) :method-count-assert 9 - :size-assert #x370 - :flag-assert #x900000370 - ) - + :size-assert #x370 + :flag-assert #x900000370) (deftype blerc-dcache (structure) - ((repl-mult vector 40 :inline :offset-assert 0) - ) + ((repl-mult vector 40 :inline :offset-assert 0)) :method-count-assert 9 - :size-assert #x280 - :flag-assert #x900000280 - ) - + :size-assert #x280 + :flag-assert #x900000280) (deftype blerc-globals (structure) - ((first uint32 :offset-assert 0) - (next uint32 :offset-assert 4) - (min-val int16 :offset-assert 8) - (max-val int16 :offset-assert 10) - (fragment-count int32 :offset-assert 12) - (vtx-count int32 :offset-assert 16) - (target-vtx-count int32 :offset-assert 20) - ) + ((first uint32 :offset-assert 0) + (next uint32 :offset-assert 4) + (min-val int16 :offset-assert 8) + (max-val int16 :offset-assert 10) + (fragment-count int32 :offset-assert 12) + (vtx-count int32 :offset-assert 16) + (target-vtx-count int32 :offset-assert 20)) :method-count-assert 9 - :size-assert #x18 - :flag-assert #x900000018 - ) - + :size-assert #x18 + :flag-assert #x900000018) (define *blerc-globals* (new 'global 'blerc-globals)) (deftype blerc-context (structure) - ((block-a blerc-block :inline :offset-assert 0) - (dummy uint8 7312 :offset-assert 880) - (block-b blerc-block :inline :offset-assert 8192) - ) + ((block-a blerc-block :inline :offset-assert 0) + (dummy uint8 7312 :offset-assert 880) + (block-b blerc-block :inline :offset-assert 8192)) :method-count-assert 9 - :size-assert #x2370 - :flag-assert #x900002370 - ) - + :size-assert #x2370 + :flag-assert #x900002370) (defun-debug blerc-stats-init () (when *stats-blerc* (when (nonzero? (-> *blerc-globals* fragment-count)) (format *stdcon* "~%BLERC (merc blend target) STATS~%") - (format - *stdcon* - " ~D fragments, ~D vertices~%" - (-> *blerc-globals* fragment-count) - (-> *blerc-globals* vtx-count) - ) - (format - *stdcon* - " ~D blend target computations (~F average)~%" - (-> *blerc-globals* target-vtx-count) - (/ (the float (-> *blerc-globals* target-vtx-count)) (the float (-> *blerc-globals* vtx-count))) - ) - (if (< (-> *blerc-globals* min-val) 0) - (format *stdcon* "MINIMUM OUT OF RANGE: ~D~%" (-> *blerc-globals* min-val)) - ) - (if (< 255 (-> *blerc-globals* max-val)) - (format *stdcon* "MAXIMUM OUT OF RANGE: ~D~%" (-> *blerc-globals* max-val)) - ) - ) + (format *stdcon* " ~D fragments, ~D vertices~%" (-> *blerc-globals* fragment-count) (-> *blerc-globals* vtx-count)) + (format *stdcon* + " ~D blend target computations (~F average)~%" + (-> *blerc-globals* target-vtx-count) + (/ (the float (-> *blerc-globals* target-vtx-count)) (the float (-> *blerc-globals* vtx-count)))) + (if (< (-> *blerc-globals* min-val) 0) (format *stdcon* "MINIMUM OUT OF RANGE: ~D~%" (-> *blerc-globals* min-val))) + (if (< 255 (-> *blerc-globals* max-val)) (format *stdcon* "MAXIMUM OUT OF RANGE: ~D~%" (-> *blerc-globals* max-val)))) (let ((a0-7 *blerc-globals*)) (set! (-> a0-7 min-val) 255) (set! (-> a0-7 max-val) 0) (set! (-> a0-7 fragment-count) 0) (set! (-> a0-7 vtx-count) 0) - (set! (-> a0-7 target-vtx-count) 0) - ) - ) + (set! (-> a0-7 target-vtx-count) 0))) 0 - (none) - ) + (none)) (defun blerc-init () (blerc-stats-init) - (let ((v1-0 *blerc-globals*)) - (set! (-> v1-0 first) (the-as uint 0)) - (set! (-> v1-0 next) (the-as uint 0)) - ) + (let ((v1-0 *blerc-globals*)) (set! (-> v1-0 first) (the-as uint 0)) (set! (-> v1-0 next) (the-as uint 0))) 0 - (none) - ) + (none)) ;; todo blerc-a-fragment (unused) @@ -139,13 +100,11 @@ ;; todo merc-blend-shape (defun merc-blend-shape ((arg0 process-drawable)) (let* ((v1-2 (-> arg0 skel root-channel 0)) - (a3-0 (-> v1-2 frame-group)) - ) + (a3-0 (-> v1-2 frame-group))) (when (and a3-0 (> (-> arg0 skel active-channels) 0) (zero? (-> arg0 draw cur-lod)) - (logtest? (-> arg0 skel status) (janim-status blerc)) - ) + (logtest? (-> arg0 skel status) (janim-status blerc))) (let ((a1-4 (-> a3-0 blerc-data))) (when a1-4 (let* ((a0-10 (-> arg0 draw mgeo)) @@ -153,121 +112,65 @@ (t0-0 (-> v1-2 frame-num)) (t1-0 (the int t0-0)) (v1-4 (&+ a1-4 (* (the-as uint t1-0) a2-0))) - (a1-5 (new 'stack-no-clear 'array 'int16 128)) - ) + (a1-5 (new 'stack-no-clear 'array 'int16 128))) (let ((a2-1 (-> a0-10 header blend-target-count))) (cond ((< t1-0 (+ (-> a3-0 data 0 length) -1)) (let* ((a3-5 (&+ v1-4 a2-1)) (t0-1 (* 64.0 (- t0-0 (the float t1-0)))) - (t1-1 (- 64.0 t0-1)) - ) + (t1-1 (- 64.0 t0-1))) (dotimes (t2-0 (the-as int a2-1)) (set! (-> a1-5 t2-0) - (the int (+ (* (the float (+ (-> v1-4 t2-0) -64)) t1-1) (* (the float (+ (-> a3-5 t2-0) -64)) t0-1))) - ) - ) - ) - ) - (else - (dotimes (a3-6 (the-as int a2-1)) - (set! (-> a1-5 a3-6) (the-as int (* (+ (-> v1-4 a3-6) -64) 64))) - ) - ) - ) - ) - (setup-blerc-chains a0-10 a1-5 (-> *display* frames (-> *display* on-screen) frame global-buf)) - ) + (the int (+ (* (the float (+ (-> v1-4 t2-0) -64)) t1-1) (* (the float (+ (-> a3-5 t2-0) -64)) t0-1))))))) + (else (dotimes (a3-6 (the-as int a2-1)) (set! (-> a1-5 a3-6) (the-as int (* (+ (-> v1-4 a3-6) -64) 64))))))) + (setup-blerc-chains a0-10 a1-5 (-> *display* frames (-> *display* on-screen) frame global-buf))) (logior! (-> arg0 skel status) (janim-status blerc-done)) - (return (the-as object #f)) - ) - ) - ) - ) + (return (the-as object #f)))))) (when (logtest? (-> arg0 skel status) (janim-status blerc-done)) (logclear! (-> arg0 skel status) (janim-status blerc-done)) - (setup-blerc-chains - (-> arg0 draw lod-set lod 0 geo) - (new 'static 'array int16 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (-> *display* frames (-> *display* on-screen) frame global-buf) - ) - ) - 0 - ) + (setup-blerc-chains (-> arg0 draw lod-set lod 0 geo) + (new 'static 'array int16 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (-> *display* frames (-> *display* on-screen) frame global-buf))) + 0) ;; TODO setup-blerc-chains-for-one-fragment (def-mips2c setup-blerc-chains-for-one-fragment (function object object object object object object object)) (defun setup-blerc-chains ((arg0 merc-ctrl) (arg1 (pointer int16)) (arg2 dma-buffer)) - (local-vars - (sv-16 uint) - (sv-20 pointer) - (sv-24 merc-effect) - (sv-28 uint) - (sv-32 object) - (sv-48 int) - (sv-64 int) - ) + (local-vars (sv-16 uint) (sv-20 pointer) (sv-24 merc-effect) (sv-28 uint) (sv-32 object) (sv-48 int) (sv-64 int)) (set! sv-16 (-> arg0 header effect-count)) (let ((s3-0 (-> arg0 header blend-target-count)) - (v1-1 (-> arg2 base)) - ) + (v1-1 (-> arg2 base))) (set! sv-20 (&+ v1-1 0)) (let ((a2-1 (the-as object (&+ v1-1 16)))) - (if (zero? (-> *blerc-globals* first)) - (set! (-> *blerc-globals* first) (the-as uint a2-1)) - ) + (if (zero? (-> *blerc-globals* first)) (set! (-> *blerc-globals* first) (the-as uint a2-1))) (dotimes (s2-0 (the-as int sv-16)) (set! sv-24 (-> arg0 effect s2-0)) (set! sv-28 (-> sv-24 blend-frag-count)) (when (nonzero? sv-28) (let ((v1-15 (the-as object (-> sv-24 frag-geo))) (s1-0 (the-as structure (-> sv-24 frag-ctrl))) - (s0-0 (the-as object (-> sv-24 blend-data))) - ) + (s0-0 (the-as object (-> sv-24 blend-data)))) (set! sv-32 (-> sv-24 blend-ctrl)) (set! sv-48 0) (while (< sv-48 (the-as int sv-28)) - (set! sv-64 (+ (the-as int v1-15) - (logand (* (+ (-> (the-as merc-fragment-control s1-0) unsigned-four-count) 3) 4) #xfff0) - ) - ) + (set! sv-64 + (+ (the-as int v1-15) (logand (* (+ (-> (the-as merc-fragment-control s1-0) unsigned-four-count) 3) 4) #xfff0))) (if (nonzero? (-> (the-as (pointer uint8) sv-32) 0)) - (set! a2-1 (setup-blerc-chains-for-one-fragment s3-0 arg1 a2-1 s0-0 sv-32 sv-64)) - ) + (set! a2-1 (setup-blerc-chains-for-one-fragment s3-0 arg1 a2-1 s0-0 sv-32 sv-64))) (let ((a0-14 (logand (+ (* (the-as uint 6) (-> (the-as merc-blend-ctrl sv-32) blend-vtx-count)) 15) #xfff0))) (set! v1-15 (+ sv-64 (logand (* (+ (-> (the-as merc-fragment-control s1-0) lump-four-count) 3) 4) #xfff0) - (* (-> (the-as merc-fragment-control s1-0) fp-qwc) 16) - ) - ) + (* (-> (the-as merc-fragment-control s1-0) fp-qwc) 16))) (set! s1-0 (&+ s1-0 (* (-> (the-as merc-fragment-control s1-0) mat-xfer-count) 2) 4)) - (set! s0-0 - (+ (the-as int s0-0) (* (the-as uint a0-14) (+ (-> (the-as merc-blend-ctrl sv-32) nonzero-index-count) 1))) - ) - ) + (set! s0-0 (+ (the-as int s0-0) (* (the-as uint a0-14) (+ (-> (the-as merc-blend-ctrl sv-32) nonzero-index-count) 1))))) (set! sv-32 (+ (the-as int sv-32) s3-0 2)) (the-as int sv-32) - (set! sv-48 (+ sv-48 1)) - ) - ) - ) - ) + (set! sv-48 (+ sv-48 1)))))) (set! (-> (the-as (pointer int64) sv-20)) (logior #x20000000 (shr (shl (the-as int a2-1) 33) 1))) - (let ((v1-33 (the-as (pointer uint32) sv-20))) - (set! (-> (&+ v1-33 8)) 0) - ) - (let ((v1-34 (the-as (pointer uint32) sv-20))) - (set! (-> (&+ v1-34 12)) 0) - ) - (set! (-> arg2 base) (the-as pointer a2-1)) - ) - ) + (let ((v1-33 (the-as (pointer uint32) sv-20))) (set! (-> (&+ v1-33 8)) 0)) + (let ((v1-34 (the-as (pointer uint32) sv-20))) (set! (-> (&+ v1-34 12)) 0)) + (set! (-> arg2 base) (the-as pointer a2-1)))) 0 - (none) - ) - - - - + (none)) diff --git a/goal_src/jak1/engine/gfx/merc/merc-death.gc b/goal_src/jak1/engine/gfx/merc/merc-death.gc index 960a2875fd..a2f9f4cfd3 100644 --- a/goal_src/jak1/engine/gfx/merc/merc-death.gc +++ b/goal_src/jak1/engine/gfx/merc/merc-death.gc @@ -1,84 +1,62 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") -;; name: merc-death.gc -;; name in dgo: merc-death -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define *merc-death-globals* (new 'global 'vector)) (deftype death-info (basic) - ((vertex-skip uint16) - (timer uint8) - (overlap uint8) - (effect uint32) - (sound symbol) - ) - ) - + ((vertex-skip uint16) + (timer uint8) + (overlap uint8) + (effect uint32) + (sound symbol))) (defun birth-func-death-sparks () 0 - (none) - ) + (none)) (define death-beach-puppy - (new 'static 'death-info :vertex-skip #x82 :timer #x4b :overlap #x4 :effect #x29 :sound 'temp-enemy-die) - ) + (new 'static 'death-info :vertex-skip #x82 :timer #x4b :overlap #x4 :effect #x29 :sound 'temp-enemy-die)) (define death-jungle-snake - (new 'static 'death-info :vertex-skip #xa :timer #x4b :overlap #x4 :effect #x29 :sound 'temp-enemy-die) - ) + (new 'static 'death-info :vertex-skip #xa :timer #x4b :overlap #x4 :effect #x29 :sound 'temp-enemy-die)) (define death-default - (new 'static 'death-info :vertex-skip #x50 :timer #x4b :overlap #x4 :effect #x29 :sound 'temp-enemy-die) - ) + (new 'static 'death-info :vertex-skip #x50 :timer #x4b :overlap #x4 :effect #x29 :sound 'temp-enemy-die)) -(define death-warp-in - (new 'static 'death-info :vertex-skip #x96 :timer #x4b :effect #x29 :sound 'warpgate-tele) - ) +(define death-warp-in (new 'static 'death-info :vertex-skip #x96 :timer #x4b :effect #x29 :sound 'warpgate-tele)) -(define death-warp-out - (new 'static 'death-info :vertex-skip #x96 :timer #x96 :effect #x29 :sound 'warpgate-tele) - ) +(define death-warp-out (new 'static 'death-info :vertex-skip #x96 :timer #x96 :effect #x29 :sound 'warpgate-tele)) (defpart 41 - :init-specs ((:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 16.0 32.0) - (:b 48.0 32.0) - (:a 48.0 48.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y (meters 0.02)) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit12)) - (:next-time (seconds 0.05) (seconds 0.197)) - (:next-launcher 42) - ) - ) + :init-specs + ((:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 16.0 32.0) + (:b 48.0 32.0) + (:a 48.0 48.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y (meters 0.02)) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit12)) + (:next-time (seconds 0.05) (seconds 0.197)) + (:next-launcher 42))) (defpart 42 - :init-specs ((:fade-a -1.4222223) (:timer (seconds 0.15)) (:next-time (seconds 0.14)) (:next-launcher 43)) - ) + :init-specs ((:fade-a -1.4222223) (:timer (seconds 0.15)) (:next-time (seconds 0.14)) (:next-launcher 43))) (defpart 43 - :init-specs ((:scalevel-x (meters 0)) (:fade-a -0.21333334) (:timer (seconds 0) (seconds 0.987))) - ) + :init-specs ((:scalevel-x (meters 0)) (:fade-a -0.21333334) (:timer (seconds 0) (seconds 0.987)))) (defun merc-death-spawn ((arg0 int) (arg1 vector) (arg2 vector)) (let ((v1-2 (-> *part-id-table* arg0))) (if (and (nonzero? v1-2) (= (-> v1-2 type) sparticle-launcher)) - (sp-launch-particles-death *sp-particle-system-2d* v1-2 arg1) - ) - ) + (sp-launch-particles-death *sp-particle-system-2d* v1-2 arg1))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/merc/merc-h.gc b/goal_src/jak1/engine/gfx/merc/merc-h.gc index 02e2307fdf..7e6f43a174 100644 --- a/goal_src/jak1/engine/gfx/merc/merc-h.gc +++ b/goal_src/jak1/engine/gfx/merc/merc-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/data/art-h.gc") (require "engine/util/types-h.gc") -;; name: merc-h.gc -;; name in dgo: merc-h -;; dgos: GAME, ENGINE - ;; The "merc" renderer is the main foreground renderer. ;; All foreground objects are stored in merc format. ;; See bones.gc for where it's actually used and the pc port changes. @@ -18,13 +13,12 @@ ;; The "ripple" system can apply a ripple effect (for waves or similar) to merc data. ;; This defines which vertices should be rippled. (deftype ripple-merc-query (inline-array-class) - ((start-vertex int32) - (vertex-skip int32) - (vertex-count int32) - (current-loc int32) - (data vector :inline :dynamic) - ) - ) + ((start-vertex int32) + (vertex-skip int32) + (vertex-count int32) + (current-loc int32) + (data vector :inline :dynamic))) + (set! (-> ripple-merc-query heap-base) 16) ;; header to fragments uploaded to VU. @@ -34,309 +28,257 @@ ;; fragment in the same merc "effect". (deftype merc-byte-header (structure) ;; these offsets are after unpacking/upload to VU. - ((srcdest-off uint8) ;; location of srcdst table for vertex copying - (rgba-off uint8) ;; location of rgba data - (lump-off uint8) ;; location of "lump" packed vertex data - (fp-off uint8) ;; location of "fp" data (adgif shader, some floats) - (mat1-cnt uint8) ;; number of vertices influenced by one bone - (mat2-cnt uint8) ;; two bone - (mat3-cnt uint8) ;; three bone - (samecopy-cnt uint8) ;; number of vertices to copy from this fragment - (crosscopy-cnt uint8) ;; copy vertices from previous fragment count - (strip-len uint8) ;; how long is the initial strip before a shader (may be 0, if starts with shader) - (mm-quadword-fp-off uint8) ;; main memory offset of fp data - (mm-quadword-size uint8) ;; main memory size of whole fragment - (perc-off uint8) ;; bone weight table offset - (mat-slot uint8 10) ;; which matrices to upload where for this fragment - ) - ) + ((srcdest-off uint8) ;; location of srcdst table for vertex copying + (rgba-off uint8) ;; location of rgba data + (lump-off uint8) ;; location of "lump" packed vertex data + (fp-off uint8) ;; location of "fp" data (adgif shader, some floats) + (mat1-cnt uint8) ;; number of vertices influenced by one bone + (mat2-cnt uint8) ;; two bone + (mat3-cnt uint8) ;; three bone + (samecopy-cnt uint8) ;; number of vertices to copy from this fragment + (crosscopy-cnt uint8) ;; copy vertices from previous fragment count + (strip-len uint8) ;; how long is the initial strip before a shader (may be 0, if starts with shader) + (mm-quadword-fp-off uint8) ;; main memory offset of fp data + (mm-quadword-size uint8) ;; main memory size of whole fragment + (perc-off uint8) ;; bone weight table offset + (mat-slot uint8 10) ;; which matrices to upload where for this fragment + )) ;; merc VU fragment: contains the header and data. (deftype merc-fragment (structure) - ((header merc-byte-header :inline) - (rest uint8 1) - ) + ((header merc-byte-header :inline) + (rest uint8 1)) (:methods - (login-adgifs (_type_) none) - ) - ) + (login-adgifs (_type_) none))) ;; packed merc vertex, before unpack by VIF ;; the meaning of flags is situation dependent in the renderer, see extract_merc.cpp ;; for the details. (deftype merc-vtx (structure) - ((mat-0 uint8) ;; matrix number for first bone (and flags) - (mat-1 uint8) ;; matrix number for second bone (and flags) - (nrm-x uint8) ;; x component of normal - (pos-x uint8) ;; x component of position - (dst-0 uint8) ;; location to place vertex (and flags) - (dst-1 uint8) ;; location to place vertex 2 (and flags) - (nrm-y uint8) ;; normal - (pos-y uint8) ;; pos - (tex-s uint8) ;; texture coordinate - (tex-t uint8) - (nrm-z uint8) - (pos-z uint8) - ) - ) + ((mat-0 uint8) ;; matrix number for first bone (and flags) + (mat-1 uint8) ;; matrix number for second bone (and flags) + (nrm-x uint8) ;; x component of normal + (pos-x uint8) ;; x component of position + (dst-0 uint8) ;; location to place vertex (and flags) + (dst-1 uint8) ;; location to place vertex 2 (and flags) + (nrm-y uint8) ;; normal + (pos-y uint8) ;; pos + (tex-s uint8) ;; texture coordinate + (tex-t uint8) + (nrm-z uint8) + (pos-z uint8))) ;; header for fp data within a fragment. Is included in fp data. ;; adgifs come right after the header (deftype merc-fp-header (structure) - ((x-add float) - (y-add float) - (z-add float) - (shader-cnt uint8) - (kick-info-offset uint8) - (kick-info-step uint8) - (hword-cnt uint8) - ) - ) - + ((x-add float) + (y-add float) + (z-add float) + (shader-cnt uint8) + (kick-info-offset uint8) + (kick-info-step uint8) + (hword-cnt uint8))) (defun merc-fragment-fp-data ((arg0 merc-fragment)) "Get the floating-point data of a merc-fragment" - (the merc-fp-header (&+ arg0 (the-as uint (shl (-> arg0 header mm-quadword-fp-off) 4)))) - ) + (the merc-fp-header (&+ arg0 (the-as uint (shl (-> arg0 header mm-quadword-fp-off) 4))))) ;; a description of a matrix upload to merc (deftype merc-mat-dest (structure) - ((matrix-number uint8) ;; the matrix in the skeleton - (matrix-dest uint8) ;; the slot in the shader (only a small number available) + ((matrix-number uint8) ;; the matrix in the skeleton + (matrix-dest uint8) ;; the slot in the shader (only a small number available) ) - :pack-me - ) + :pack-me) ;; some info about a merc fragment that will stay on the EE. ;; the merc-effect contains a ref to one of these ;; this is all the information needed to generate merc upload dma (counts/sizes) (deftype merc-fragment-control (structure) - ((unsigned-four-count uint8) - (lump-four-count uint8) - (fp-qwc uint8) - (mat-xfer-count uint8) - (mat-dest-data merc-mat-dest :inline :dynamic) - ) - ) + ((unsigned-four-count uint8) + (lump-four-count uint8) + (fp-qwc uint8) + (mat-xfer-count uint8) + (mat-dest-data merc-mat-dest :inline :dynamic))) ;; packed blend shape data (deftype merc-blend-data (structure) - ((int8-data int8 :dynamic) - ) - ) + ((int8-data int8 :dynamic))) ;; info needed to set up blend shapes (deftype merc-blend-ctrl (structure) - ((blend-vtx-count uint8) - (nonzero-index-count uint8) - (bt-index uint8 :dynamic) - ) - ) + ((blend-vtx-count uint8) + (nonzero-index-count uint8) + (bt-index uint8 :dynamic))) ;; info for environment map "extra" (deftype mei-envmap-tint (structure) - ((fade0 float) - (fade1 float) - (tint uint32) - (dummy int32) - ) - ) + ((fade0 float) + (fade1 float) + (tint uint32) + (dummy int32))) ;; info for texture scrolling "extra" (deftype mei-texture-scroll (structure) - ((max-dist float) - (st-int-scale uint8) - (time-factor uint8) - (scroll-dir uint8) - (cached-time uint8) - (time-delta uint8) - (dummy uint8 7) - ) - ) + ((max-dist float) + (st-int-scale uint8) + (time-factor uint8) + (scroll-dir uint8) + (cached-time uint8) + (time-delta uint8) + (dummy uint8 7))) ;; info for ripple effect "extra" (deftype mei-ripple (structure) - ((x-base float) - (z-base float) - (grid-size float) - (angle float) - ) - ) + ((x-base float) + (z-base float) + (grid-size float) + (angle float))) ;; locations of the "extra"s. (deftype merc-extra-info (structure) - ((envmap-tint-offset uint8) - (shader-offset uint8) - (texture-scroll-offset uint8) - (ripple-offset uint8) - (dummy uint8 12) - ) - ) + ((envmap-tint-offset uint8) + (shader-offset uint8) + (texture-scroll-offset uint8) + (ripple-offset uint8) + (dummy uint8 12))) ;; a collection of fragments that must be sent all together. ;; and their extra effects. (deftype merc-effect (structure) - ((frag-geo merc-fragment) - (frag-ctrl merc-fragment-control) - (blend-data merc-blend-data) - (blend-ctrl merc-blend-ctrl) - (dummy0 uint8) - (effect-bits uint8) - (frag-count uint16) - (blend-frag-count uint16) - (tri-count uint16) - (dvert-count uint16) - (dummy1 uint8) - (envmap-usage uint8) - (extra-info merc-extra-info) - (data uint64 4 :overlay-at frag-geo) - ) + ((frag-geo merc-fragment) + (frag-ctrl merc-fragment-control) + (blend-data merc-blend-data) + (blend-ctrl merc-blend-ctrl) + (dummy0 uint8) + (effect-bits uint8) + (frag-count uint16) + (blend-frag-count uint16) + (tri-count uint16) + (dvert-count uint16) + (dummy1 uint8) + (envmap-usage uint8) + (extra-info merc-extra-info) + (data uint64 4 :overlay-at frag-geo)) (:methods - (login-adgifs (_type_) none) - ) - ) + (login-adgifs (_type_) none))) ;; eye info (for a single eye) ;; there's a pupil, iris, and lid. The pupil and iris can move around (together), ;; The pupil/iris can be scaled (independtenly) ;; the eyelid goes up and down (deftype merc-eye-ctrl (structure) - ((eye-slot int8) - (shader-offset int8) - (shader-count int8) - (shader adgif-shader 3 :inline) - (iris-shader adgif-shader :inline :overlay-at (-> shader 0)) - (pupil-shader adgif-shader :inline :overlay-at (-> shader 1)) - (lid-shader adgif-shader :inline :overlay-at (-> shader 2)) - ) - ) + ((eye-slot int8) + (shader-offset int8) + (shader-count int8) + (shader adgif-shader 3 :inline) + (iris-shader adgif-shader :inline :overlay-at (-> shader 0)) + (pupil-shader adgif-shader :inline :overlay-at (-> shader 1)) + (lid-shader adgif-shader :inline :overlay-at (-> shader 2)))) ;; single frame for eye animation (deftype merc-eye-anim-frame (structure) - ((pupil-trans-x int8) - (pupil-trans-y int8) - (blink int8) - (iris-scale int8 :offset 4) - (pupil-scale int8) - (lid-scale int8) - (dword uint64 :overlay-at pupil-trans-x) - ) - :pack-me - ) + ((pupil-trans-x int8) + (pupil-trans-y int8) + (blink int8) + (iris-scale int8 :offset 4) + (pupil-scale int8) + (lid-scale int8) + (dword uint64 :overlay-at pupil-trans-x)) + :pack-me) ;; just an array of eye anim frames. (deftype merc-eye-anim-block (structure) - ((max-frame int16) - (data merc-eye-anim-frame :inline :dynamic :offset 8) - ) - ) - + ((max-frame int16) + (data merc-eye-anim-frame :inline :dynamic :offset 8))) ;; metadata for merc art for a single model ;; mostly just stats and parameters used in dma/rendering. (deftype merc-ctrl-header (structure) - ((xyz-scale float) - (st-magic uint32) - (st-out-a uint32) - (st-out-b uint32) - (st-vif-add uint32) - (st-int-off uint16) - (st-int-scale uint16) - (effect-count uint32) - (blend-target-count uint32) - (fragment-count uint16) - (tri-count uint16) - (matrix-count uint8) - (shader-count uint8) - (transform-vertex-count uint16) - (dvert-count uint16) - (one-mat-count uint16) - (two-mat-count uint16) - (two-mat-reuse-count uint16) - (three-mat-count uint16) - (three-mat-reuse-count uint16) - (shader-upload-count uint8) - (matrix-upload-count uint8) - (same-copy-count uint16) - (cross-copy-count uint16) - (num-verts uint16) - (longest-edge float) - (eye-ctrl merc-eye-ctrl) - (masks uint32 3) - (dummy-bytes uint8 48 :overlay-at fragment-count) - (envmap-tint uint32 :overlay-at fragment-count) - (query basic :overlay-at matrix-count) - (needs-clip uint8 :overlay-at dvert-count) - (use-isometric uint8 :overlay-at (-> dummy-bytes 9)) - (use-attached-shader uint8 :overlay-at one-mat-count) - (display-triangles uint8 :overlay-at (-> dummy-bytes 11)) - (death-vertex-skip uint16 :overlay-at two-mat-count) - (death-start-vertex uint16 :overlay-at two-mat-reuse-count) - (death-effect uint32 :overlay-at three-mat-count) - (use-translucent uint8 :overlay-at shader-upload-count) - (display-this-fragment uint8 :overlay-at matrix-upload-count) - ) - ) + ((xyz-scale float) + (st-magic uint32) + (st-out-a uint32) + (st-out-b uint32) + (st-vif-add uint32) + (st-int-off uint16) + (st-int-scale uint16) + (effect-count uint32) + (blend-target-count uint32) + (fragment-count uint16) + (tri-count uint16) + (matrix-count uint8) + (shader-count uint8) + (transform-vertex-count uint16) + (dvert-count uint16) + (one-mat-count uint16) + (two-mat-count uint16) + (two-mat-reuse-count uint16) + (three-mat-count uint16) + (three-mat-reuse-count uint16) + (shader-upload-count uint8) + (matrix-upload-count uint8) + (same-copy-count uint16) + (cross-copy-count uint16) + (num-verts uint16) + (longest-edge float) + (eye-ctrl merc-eye-ctrl) + (masks uint32 3) + (dummy-bytes uint8 48 :overlay-at fragment-count) + (envmap-tint uint32 :overlay-at fragment-count) + (query basic :overlay-at matrix-count) + (needs-clip uint8 :overlay-at dvert-count) + (use-isometric uint8 :overlay-at (-> dummy-bytes 9)) + (use-attached-shader uint8 :overlay-at one-mat-count) + (display-triangles uint8 :overlay-at (-> dummy-bytes 11)) + (death-vertex-skip uint16 :overlay-at two-mat-count) + (death-start-vertex uint16 :overlay-at two-mat-reuse-count) + (death-effect uint32 :overlay-at three-mat-count) + (use-translucent uint8 :overlay-at shader-upload-count) + (display-this-fragment uint8 :overlay-at matrix-upload-count))) ;; the actual merc art object: a header and list of effects (deftype merc-ctrl (art-element) - ((num-joints int32 :overlay-at (-> pad 0)) - (header merc-ctrl-header :inline) - (effect merc-effect :inline :dynamic) - ) - ) + ((num-joints int32 :overlay-at (-> pad 0)) + (header merc-ctrl-header :inline) + (effect merc-effect :inline :dynamic))) ;; low memory upload to vu1 for merc (which merc later writes over) (deftype merc-vu1-low-mem (structure) - ((tri-strip-gif gs-gif-tag :inline) - (ad-gif gs-gif-tag :inline) - (hvdf-offset vector :inline) - (perspective uint128 4) - (fog vector :inline) - ) - ) - + ((tri-strip-gif gs-gif-tag :inline) + (ad-gif gs-gif-tag :inline) + (hvdf-offset vector :inline) + (perspective uint128 4) + (fog vector :inline))) (deftype ripple-wave (structure) - ((scale float) - (offs float) - (xdiv int16) - (zdiv int16) - (speed float) - (xmul float) - (zmul float) - (delta float) - ) - :pack-me - ) - + ((scale float) + (offs float) + (xdiv int16) + (zdiv int16) + (speed float) + (xmul float) + (zmul float) + (delta float)) + :pack-me) (deftype ripple-wave-set (basic) - ((count int32) - (converted basic) - (frame-save uint32) - (normal-scale float) - (wave ripple-wave 4 :inline) - ) - ) - + ((count int32) + (converted basic) + (frame-save uint32) + (normal-scale float) + (wave ripple-wave 4 :inline))) (deftype ripple-control (basic) - ((global-scale float) - (last-frame-scale float) - (close-fade-dist float) - (far-fade-dist float) - (faded-scale float) - (individual-normal-scale float) - (waveform ripple-wave-set) - (send-query symbol) - (query ripple-merc-query) - ) + ((global-scale float) + (last-frame-scale float) + (close-fade-dist float) + (far-fade-dist float) + (faded-scale float) + (individual-normal-scale float) + (waveform ripple-wave-set) + (send-query symbol) + (query ripple-merc-query)) (:methods - (new (symbol type) _type_) - ) - ) - + (new (symbol type) _type_))) (defmethod new ripple-control ((allocation symbol) (type-to-make type)) (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -349,6 +291,4 @@ (set! (-> this individual-normal-scale) 1.0) (set! (-> this send-query) #f) (set! (-> this query) #f) - this - ) - ) + this)) diff --git a/goal_src/jak1/engine/gfx/merc/merc-vu1.gc b/goal_src/jak1/engine/gfx/merc/merc-vu1.gc index c2d74ec5cc..363546e190 100644 --- a/goal_src/jak1/engine/gfx/merc/merc-vu1.gc +++ b/goal_src/jak1/engine/gfx/merc/merc-vu1.gc @@ -1,12 +1,7 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: merc-vu1.gc -;; name in dgo: merc-vu1 -;; dgos: GAME, ENGINE - ;; all this contains is the merc-vu1-block (define merc-vu1-block (new 'static 'vu-function)) diff --git a/goal_src/jak1/engine/gfx/merc/merc.gc b/goal_src/jak1/engine/gfx/merc/merc.gc index 1a040213e2..4de198829e 100644 --- a/goal_src/jak1/engine/gfx/merc/merc.gc +++ b/goal_src/jak1/engine/gfx/merc/merc.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/res.gc") (require "engine/gfx/merc/merc-h.gc") (require "engine/gfx/merc/merc-vu1.gc") (require "engine/gfx/foreground/eye-h.gc") -;; name: merc.gc -;; name in dgo: merc -;; dgos: GAME, ENGINE - ;; This file contains the EE code for MERC ;; The merc renderer is used to draw characters and other dynamic things. ;; It supports a number of effects and can interact with other renderers. @@ -27,27 +22,19 @@ (defmethod asize-of ((this merc-fragment)) "Get the size in memory of a merc-fragment" - (the-as int (* (-> this header mm-quadword-size) 16)) - ) + (the-as int (* (-> this header mm-quadword-size) 16))) (defmethod login-adgifs ((this merc-fragment)) "Set up a merc-fragment. Does adgifs and eye stuff" (let* ((fp-data (merc-fragment-fp-data this)) - (eye-ctrl (if (nonzero? (-> *merc-ctrl-header* eye-ctrl)) - (-> *merc-ctrl-header* eye-ctrl) - (the-as merc-eye-ctrl #f) - ) - ) - (shader (the-as adgif-shader (&+ fp-data 16))) - ) + (eye-ctrl (if (nonzero? (-> *merc-ctrl-header* eye-ctrl)) (-> *merc-ctrl-header* eye-ctrl) (the-as merc-eye-ctrl #f))) + (shader (the-as adgif-shader (&+ fp-data 16)))) (dotimes (s2-0 (the-as int (-> fp-data shader-cnt))) (cond ((and eye-ctrl (= (logand (the-as texture-id -256) (-> shader texture-id)) #x1cf06f00)) ;; eye slot 0 (adgif-shader-login shader) - (let ((eye-tex-block (get-eye-block (-> eye-ctrl eye-slot) 0))) - (set! (-> shader tex0 tbp0) eye-tex-block) - ) + (let ((eye-tex-block (get-eye-block (-> eye-ctrl eye-slot) 0))) (set! (-> shader tex0 tbp0) eye-tex-block)) (set! (-> shader tex0 tw) 5) (set! (-> shader tex0 th) 5) (set! (-> shader tex0 tcc) 1) @@ -55,15 +42,11 @@ (set! (-> shader tex0 psm) 0) (set! (-> shader tex1 mxl) 0) (set! (-> shader clamp) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) - ) - ) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f))) ((and eye-ctrl (= (logand (the-as texture-id -256) (-> shader texture-id)) #x1cf07000)) ;; eye slot 1 (adgif-shader-login shader) - (let ((eye-tex-block-2 (get-eye-block (-> eye-ctrl eye-slot) 1))) - (set! (-> shader tex0 tbp0) eye-tex-block-2) - ) + (let ((eye-tex-block-2 (get-eye-block (-> eye-ctrl eye-slot) 1))) (set! (-> shader tex0 tbp0) eye-tex-block-2)) (set! (-> shader tex0 tw) 5) (set! (-> shader tex0 th) 5) (set! (-> shader tex0 tcc) 1) @@ -71,31 +54,20 @@ (set! (-> shader tex0 psm) 0) (set! (-> shader tex1 mxl) 0) (set! (-> shader clamp) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f) - ) - ) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp) :maxu #x1f :maxv #x1f))) (else - ;; normal. just login and set tex masks. - (let ((tex (adgif-shader-login shader))) - (when tex - (dotimes (seg 3) - (logior! (-> *merc-ctrl-header* masks seg) (-> tex masks seg)) - ) - ) - ) - ) - ) - (&+! shader 80) - ) - ) - (none) - ) + ;; normal. just login and set tex masks. + (let ((tex (adgif-shader-login shader))) + (when tex + (dotimes (seg 3) + (logior! (-> *merc-ctrl-header* masks seg) (-> tex masks seg))))))) + (&+! shader 80))) + (none)) (defmethod asize-of ((this merc-fragment-control)) - (the-as int (+ (* (-> this mat-xfer-count) 2) 4)) - ) + (the-as int (+ (* (-> this mat-xfer-count) 2) 4))) -(defmethod inspect merc-fragment-control ((this merc-fragment-control)) +(defmethod inspect ((this merc-fragment-control)) "Debug print a merc-fragment-control" (format #t "[~8x] ~A~%" this 'merc-fragment-control) (format #t "~Tunsigned-four-count: ~D~%" (-> this unsigned-four-count)) @@ -104,15 +76,12 @@ (format #t "~Tmat-xfer-count: ~D~%" (-> this mat-xfer-count)) (dotimes (s5-0 (the-as int (-> this mat-xfer-count))) (format #t "~Tmat-dest-data[~d]:~%" s5-0) - (format #t "~T~Tmatrix-number: ~D~%"(-> this mat-dest-data s5-0 matrix-number)) - (format #t "~T~Tmatrix-dest: ~D~%" (-> this mat-dest-data s5-0 matrix-dest)) - ) - this - ) + (format #t "~T~Tmatrix-number: ~D~%" (-> this mat-dest-data s5-0 matrix-number)) + (format #t "~T~Tmatrix-dest: ~D~%" (-> this mat-dest-data s5-0 matrix-dest))) + this) (defmethod login-adgifs ((this merc-effect)) "Login everything for this merc-effect." - ;; login adgifs, if we have them. (let ((data (-> this extra-info))) (when (nonzero? data) @@ -120,32 +89,19 @@ (let ((tex (adgif-shader-login (the-as adgif-shader (+ (the-as uint data) (* (-> data shader-offset) 16)))))) (when tex (dotimes (seg 3) - (logior! (-> *merc-ctrl-header* masks seg) (-> tex masks seg)) - ) - ) - ) - ) - ) - ) - + (logior! (-> *merc-ctrl-header* masks seg) (-> tex masks seg)))))))) ;; login fragment geometry and control. ctrls don't need logins (let ((ctrl (-> this frag-ctrl)) - (geo (-> this frag-geo)) - ) + (geo (-> this frag-geo))) (dotimes (frag-idx (the-as int (-> this frag-count))) (let ((ctrl-size (asize-of ctrl))) (let ((geo-size (asize-of geo))) (login-adgifs geo) - (set! geo (the-as merc-fragment (&+ (the-as pointer geo) geo-size))) - ) - (set! ctrl (the-as merc-fragment-control (&+ (the-as pointer ctrl) ctrl-size))) - ) - ) - ) - (none) - ) + (set! geo (the-as merc-fragment (&+ (the-as pointer geo) geo-size)))) + (set! ctrl (the-as merc-fragment-control (&+ (the-as pointer ctrl) ctrl-size)))))) + (none)) -(defmethod inspect merc-ctrl ((this merc-ctrl)) +(defmethod inspect ((this merc-ctrl)) "Print a merc-ctrl" (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tname: ~A~%" (-> this name)) @@ -154,70 +110,47 @@ (format #t "~Textra: ~A~%" (-> this extra)) (inspect (-> this header)) (dotimes (s5-0 (the-as int (-> this header effect-count))) - (inspect (-> this effect s5-0)) - ) - this - ) + (inspect (-> this effect s5-0))) + this) (defmethod mem-usage ((this merc-ctrl) (arg0 memory-usage-block) (arg1 int)) "Compute memory usage stats for a merc-ctrl" - ;; do extra - (if (-> this extra) - (mem-usage (-> this extra) arg0 arg1) - ) - + (if (-> this extra) (mem-usage (-> this extra) arg0 arg1)) ;; do merc ctrls in each effect: (let ((ctrl-mem (+ 32 80 (* (-> this header effect-count) 32)))) (dotimes (effect-idx (the-as int (-> this header effect-count))) (let ((fctrl (-> this effect effect-idx frag-ctrl))) (dotimes (frag-idx (the-as int (-> this effect effect-idx frag-count))) - (set! ctrl-mem (+ ctrl-mem - (* (shr (+ (-> fctrl unsigned-four-count) 3) 2) 16) - (* (shr (+ (-> fctrl lump-four-count) 3) 2) 16) - (* (-> fctrl fp-qwc) 16) - (asize-of fctrl) - ) - ) - (set! fctrl (the-as merc-fragment-control (&+ (the-as pointer fctrl) (asize-of fctrl)))) - ) - ) - ) + (set! ctrl-mem + (+ ctrl-mem + (* (shr (+ (-> fctrl unsigned-four-count) 3) 2) 16) + (* (shr (+ (-> fctrl lump-four-count) 3) 2) 16) + (* (-> fctrl fp-qwc) 16) + (asize-of fctrl))) + (set! fctrl (the-as merc-fragment-control (&+ (the-as pointer fctrl) (asize-of fctrl))))))) (set! (-> arg0 length) (max 76 (-> arg0 length))) (set! (-> arg0 data 75 name) "merc-ctrl") (+! (-> arg0 data 75 count) 1) (+! (-> arg0 data 75 used) ctrl-mem) - (+! (-> arg0 data 75 total) (logand -16 (+ ctrl-mem 15))) - ) - + (+! (-> arg0 data 75 total) (logand -16 (+ ctrl-mem 15)))) ;; do effect blend shapes (let ((effect-mem 0)) (dotimes (effect-idx2 (the-as int (-> this header effect-count))) (when (nonzero? (-> this effect effect-idx2 blend-frag-count)) (let ((bctrl (-> this effect effect-idx2 blend-ctrl))) (dotimes (blend-frag-idx (the-as int (-> this effect effect-idx2 blend-frag-count))) - (let ((v1-36 (+ effect-mem (* (+ (-> bctrl nonzero-index-count) 1) - (the-as uint (logand (+ (* (the-as uint 6) (-> bctrl blend-vtx-count)) 15) #xfff0)) - ) - ) - ) - ) - (set! effect-mem (the-as int (+ (-> this header blend-target-count) 2 v1-36))) - ) - (set! bctrl (the-as merc-blend-ctrl (&+ (the-as pointer bctrl) (+ (-> this header blend-target-count) 2)))) - ) - ) - ) - ) + (let ((v1-36 (+ effect-mem + (* (+ (-> bctrl nonzero-index-count) 1) + (the-as uint (logand (+ (* (the-as uint 6) (-> bctrl blend-vtx-count)) 15) #xfff0)))))) + (set! effect-mem (the-as int (+ (-> this header blend-target-count) 2 v1-36)))) + (set! bctrl (the-as merc-blend-ctrl (&+ (the-as pointer bctrl) (+ (-> this header blend-target-count) 2)))))))) (when (nonzero? effect-mem) (set! (-> arg0 length) (max 78 (-> arg0 length))) (set! (-> arg0 data 77 name) "blend-shape") (+! (-> arg0 data 77 count) 1) (+! (-> arg0 data 77 used) effect-mem) - (+! (-> arg0 data 77 total) (logand -16 (+ effect-mem 15))) - ) - ) - + (+! (-> arg0 data 77 total) (logand -16 (+ effect-mem 15))))) ;; do eyes. (when (nonzero? (-> this header eye-ctrl)) (let ((a0-28 (-> this header eye-ctrl))) @@ -226,123 +159,73 @@ (+! (-> arg0 data 108 count) 1) (let ((v1-47 (asize-of a0-28))) (+! (-> arg0 data 108 used) v1-47) - (+! (-> arg0 data 108 total) (logand -16 (+ v1-47 15))) - ) - ) - ) - this - ) + (+! (-> arg0 data 108 total) (logand -16 (+ v1-47 15)))))) + this) (defmethod login ((this merc-ctrl)) "Log in a merc-ctrl." - ;; so we can find it (set! *merc-ctrl-header* (-> this header)) - ;; clear masks. logging in will set these for textures we need. (dotimes (v1-1 3) - (set! (-> *merc-ctrl-header* masks v1-1) (the-as uint 0)) - ) - + (set! (-> *merc-ctrl-header* masks v1-1) (the-as uint 0))) ;; login the effects (dotimes (effect-idx (the-as int (-> this header effect-count))) - (login-adgifs (-> this effect effect-idx)) - ) - + (login-adgifs (-> this effect effect-idx))) ;; some weird hack to swap two effects. (let ((idx-with-bit1 -1) - (a1-1 (-> this header effect-count)) - ) + (a1-1 (-> this header effect-count))) (dotimes (v1-11 (the-as int a1-1)) - (if (logtest? (-> this effect v1-11 effect-bits) 2) - (set! idx-with-bit1 v1-11) - ) - ) + (if (logtest? (-> this effect v1-11 effect-bits) 2) (set! idx-with-bit1 v1-11))) (when (!= idx-with-bit1 -1) (let ((v1-16 4) (this-effect (-> this effect idx-with-bit1)) - (last-effect (-> this effect (+ a1-1 -1))) - ) + (last-effect (-> this effect (+ a1-1 -1)))) (dotimes (copy-idx v1-16) (let ((a3-2 (-> this-effect data copy-idx))) (set! (-> this-effect data copy-idx) (-> last-effect data copy-idx)) - (set! (-> last-effect data copy-idx) a3-2) - ) - ) - ) - ) - ) - + (set! (-> last-effect data copy-idx) a3-2)))))) ;; login eye. (cond ((not (logtest? -65536 (the-as int (-> this header eye-ctrl)))) ;; no idea what this is for. (set! (-> this header eye-ctrl) (the-as merc-eye-ctrl 0)) - 0 - ) + 0) (else - (let ((s5-1 (-> this header eye-ctrl))) - ;; login and set masks - (dotimes (s4-0 3) - (let ((v1-25 (adgif-shader-login (-> s5-1 shader s4-0)))) - (when v1-25 - (dotimes (a0-11 3) - (logior! (-> *merc-ctrl-header* masks a0-11) (-> v1-25 masks a0-11)) - ) - ) - ) - ) - ) - ) - ) - this - ) + (let ((s5-1 (-> this header eye-ctrl))) + ;; login and set masks + (dotimes (s4-0 3) + (let ((v1-25 (adgif-shader-login (-> s5-1 shader s4-0)))) + (when v1-25 + (dotimes (a0-11 3) + (logior! (-> *merc-ctrl-header* masks a0-11) (-> v1-25 masks a0-11))))))))) + this) (defun-debug merc-stats-display ((arg0 merc-ctrl)) "Print debug stats to #t." (format #t "~30s:" (-> arg0 name)) (let ((s5-0 (-> arg0 header st-int-scale)) - (s4-0 (ash 1 (- 12 (the-as int (-> arg0 header st-int-scale))))) - ) + (s4-0 (ash 1 (- 12 (the-as int (-> arg0 header st-int-scale)))))) (format #t " ST ~3D, " s4-0) (cond - ((>= s5-0 (the-as uint 5)) - (format #t "RANGE ~D+," (/ 128 s4-0)) - ) - ((= s5-0 4) - (format #t "RANGE 0.5+,") - ) - ) - ) + ((>= s5-0 (the-as uint 5)) (format #t "RANGE ~D+," (/ 128 s4-0))) + ((= s5-0 4) (format #t "RANGE 0.5+,")))) (dotimes (s5-1 (the-as int (-> arg0 header effect-count))) (let ((s3-0 (-> arg0 effect s5-1))) - (if (nonzero? s5-1) - (format #t "~48s " " ") - ) + (if (nonzero? s5-1) (format #t "~48s " " ")) (let ((a2-4 (-> s3-0 frag-count)) (s4-1 (-> s3-0 tri-count)) (f30-0 (the float (-> s3-0 frag-count))) (f28-0 (the float (-> s3-0 dvert-count))) - (f26-0 (the float (-> s3-0 tri-count))) - ) + (f26-0 (the float (-> s3-0 tri-count)))) (if (>= (/ (+ 50.0 f28-0) f30-0) 50.0) - (format #t "~3D frags, ~2,,1f dverts/frag " a2-4 (/ f28-0 f30-0)) - (format #t "~3D frags, ~2,,1f ******/**** " a2-4 (/ f28-0 f30-0)) - ) - (format #t "(~4D tris, striplen ~2,,2f, ~2,,1f tris/frag)~%" - s4-1 - (/ (* 2.0 f26-0) (- f28-0 f26-0)) - (/ f26-0 f30-0) - ) - ) - ) - ) - (none) - ) + (format #t "~3D frags, ~2,,1f dverts/frag " a2-4 (/ f28-0 f30-0)) + (format #t "~3D frags, ~2,,1f ******/**** " a2-4 (/ f28-0 f30-0))) + (format #t "(~4D tris, striplen ~2,,2f, ~2,,1f tris/frag)~%" s4-1 (/ (* 2.0 f26-0) (- f28-0 f26-0)) (/ f26-0 f30-0))))) + (none)) (defun-debug merc-stats () "Iterate through all merc-ctrls and print." - (dotimes (gp-0 3) ;; levels (let ((s5-0 (-> *level* level gp-0 art-group))) (when (nonzero? s5-0) @@ -350,24 +233,10 @@ (let ((s3-0 (-> s5-0 art-group-array s4-0))) (dotimes (s2-0 (-> s3-0 length)) (let* ((s1-0 (-> s3-0 data s2-0)) - (a0-3 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) merc-ctrl)) - s1-0 - ) - ) - ) - (if a0-3 - (merc-stats-display (the-as merc-ctrl a0-3)) - ) - ) - ) - ) - ) - ) - ) - ) + (a0-3 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) merc-ctrl)) s1-0))) + (if a0-3 (merc-stats-display (the-as merc-ctrl a0-3)))))))))) 0 - (none) - ) + (none)) (defun-debug merc-edge-stats () "Print the longest edges in each." @@ -378,47 +247,26 @@ (let ((s3-0 (-> s5-0 art-group-array s4-0))) (dotimes (s2-0 (-> s3-0 length)) (let* ((s1-0 (-> s3-0 data s2-0)) - (v1-10 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) merc-ctrl)) - s1-0 - ) - ) - ) - (if v1-10 - (format #t "~30s: ~f~%" (-> (the-as merc-ctrl v1-10) name) (-> (the-as merc-ctrl v1-10) header longest-edge)) - ) - ) - ) - ) - ) - ) - ) - ) + (v1-10 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) merc-ctrl)) s1-0))) + (if v1-10 (format #t "~30s: ~f~%" (-> (the-as merc-ctrl v1-10) name) (-> (the-as merc-ctrl v1-10) header longest-edge)))))))))) 0 - (none) - ) + (none)) (defun merc-vu1-add-vu-function ((dma dma-packet) (func vu-function) (flush-mode int)) "Add a function to a dma chain. Return pointer to chain after the upload data." (let ((func-data (&-> func data 4)) (qwc (-> func qlength)) - (dst (-> func origin)) - ) + (dst (-> func origin))) (while (> qwc 0) (let ((qwc-this-time (min 127 qwc))) - (set! (-> dma dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :qwc qwc-this-time :addr (the-as int func-data)) - ) + (set! (-> dma dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc qwc-this-time :addr (the-as int func-data))) (set! (-> dma vif0) (new 'static 'vif-tag :cmd (if (zero? flush-mode) 16 19))) (set! (-> dma vif1) (new 'static 'vif-tag :cmd (vif-cmd mpg) :num (* qwc-this-time 2) :imm dst)) (&+! dma 16) (&+! func-data (* qwc-this-time 16)) (set! qwc (- qwc qwc-this-time)) - (+! dst (* qwc-this-time 2)) - ) - ) - ) - (the-as dma-gif-packet dma) - ) + (+! dst (* qwc-this-time 2))))) + (the-as dma-gif-packet dma)) (defun merc-vu1-initialize-chain ((arg0 dma-gif-packet)) "Initialize a merc chain." @@ -431,49 +279,39 @@ (set! (-> (the-as (pointer vif-tag) gp-0) 4) (new 'static 'vif-tag :imm #x1ba :cmd (vif-cmd base))) (set! (-> (the-as (pointer vif-tag) gp-0) 5) (new 'static 'vif-tag :imm #xfe46 :cmd (vif-cmd offset))) (set! (-> (the-as (pointer vif-tag) gp-0) 6) (new 'static 'vif-tag)) - ;; upload VU low memory (set! (-> (the-as (pointer vif-tag) gp-0) 7) (new 'static 'vif-tag :num #x8 :cmd (vif-cmd unpack-v4-32))) - ;; template: (let ((s5-0 (the-as merc-vu1-low-mem (&+ (the-as dma-gif-packet gp-0) 32)))) (set! (-> s5-0 tri-strip-gif tag) - (new 'static 'gif-tag64 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3)) (set! (-> s5-0 tri-strip-gif regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) ;; what is this, they snuck something in here... (set! (-> s5-0 tri-strip-gif word 3) (shr (make-u128 0 (shl #x303e4000 32)) 32)) - (set! (-> s5-0 ad-gif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) (set! (-> s5-0 ad-gif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) (set! (-> s5-0 hvdf-offset quad) (-> *math-camera* hvdf-off quad)) (quad-copy! (-> s5-0 perspective) (the-as pointer (-> *math-camera* perspective)) 4) - (set-vector! (-> s5-0 fog) (-> *math-camera* pfog0) (-> *math-camera* fog-min) (-> *math-camera* fog-max) 0.0) - ) + (set-vector! (-> s5-0 fog) (-> *math-camera* pfog0) (-> *math-camera* fog-min) (-> *math-camera* fog-max) 0.0)) ;; end. (let ((v1-20 (-> (the-as (inline-array dma-packet) gp-0) 10))) (set! (-> v1-20 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> v1-20 vif0) (new 'static 'vif-tag)) (set! (-> v1-20 vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1 :imm #x0)) - (&+ v1-20 16) - ) - ) - ) + (&+ v1-20 16)))) (defun merc-vu1-init-buffer ((dma-bucket bucket-id) (test gs-test) (arg2 int)) "Setup merc DMA buffer." - ;; This function works differently from most and splices to the beginning of the bucket, as ;; drawing has already put stuff in buckets. ;; The advantage of this is that we can check if nothing was drawn, then skip this. ;; NOTE: This runs as part of display-frame-finish, so after previous DMA is synced. - ;; grab out bucket directly. (let ((bucket (-> *display* frames (-> *display* on-screen) frame bucket-group dma-bucket))) ;; only if we draw anything. @@ -482,144 +320,75 @@ (draw-data-start (-> dma-buf base)) ;; remember old beginning ) ;; set the beginning to be the merc init stuff. - (set! (-> dma-buf base) - (the-as pointer (merc-vu1-initialize-chain (the-as dma-gif-packet (-> dma-buf base)))) - ) + (set! (-> dma-buf base) (the-as pointer (merc-vu1-initialize-chain (the-as dma-gif-packet (-> dma-buf base))))) ;; some other merc setup for the GS. (let* ((v1-8 dma-buf) - (a0-6 (the-as object (-> v1-8 base))) - ) + (a0-6 (the-as object (-> v1-8 base)))) (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-8 base) (&+ (the-as pointer a0-6) 16)) - ) + (set! (-> v1-8 base) (&+ (the-as pointer a0-6) 16))) (let* ((v1-9 dma-buf) - (a0-8 (the-as object (-> v1-9 base))) - ) + (a0-8 (the-as object (-> v1-9 base)))) (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-9 base) (&+ (the-as pointer a0-8) 16)) - ) + (set! (-> v1-9 base) (&+ (the-as pointer a0-8) 16))) (let* ((v1-10 dma-buf) - (a0-10 (-> v1-10 base)) - ) + (a0-10 (-> v1-10 base))) (set! (-> (the-as (pointer gs-test) a0-10) 0) test) (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 test-1)) - (set! (-> v1-10 base) (&+ a0-10 16)) - ) - + (set! (-> v1-10 base) (&+ a0-10 16))) ;; terminate as normal (let ((v1-11 (the-as object (-> dma-buf base)))) (set! (-> (the-as dma-packet v1-11) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next))) (set! (-> (the-as dma-packet v1-11) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-11) vif1) (new 'static 'vif-tag)) - (set! (-> dma-buf base) (&+ (the-as pointer v1-11) 16)) - ) - + (set! (-> dma-buf base) (&+ (the-as pointer v1-11) 16))) ;; but splice the existing chain. - (set! (-> bucket next) (the-as uint draw-data-start)) - ) - ) - ) + (set! (-> bucket next) (the-as uint draw-data-start))))) 0 - (none) - ) + (none)) (defun merc-vu1-init-buffers () "Setup merc DMA buffers. Call this _after_ drawing." (when (logtest? *vu1-enable-user* (vu1-renderer-mask merc)) - (merc-vu1-init-buffer - (bucket-id merc-tfrag-tex0) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 0 - ) - (merc-vu1-init-buffer - (bucket-id merc-pris0) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 0 - ) - (merc-vu1-init-buffer - (bucket-id merc-tfrag-tex1) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 0 - ) - (merc-vu1-init-buffer - (bucket-id merc-pris1) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 0 - ) - (merc-vu1-init-buffer - (bucket-id merc-alpha-tex) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 0 - ) - (merc-vu1-init-buffer - (bucket-id merc-pris-common) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 0 - ) - (merc-vu1-init-buffer - (bucket-id merc-water0) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x80 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 0 - ) - (merc-vu1-init-buffer - (bucket-id merc-water1) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x80 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 0 - ) - ) + (merc-vu1-init-buffer (bucket-id merc-tfrag-tex0) + (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)) + 0) + (merc-vu1-init-buffer (bucket-id merc-pris0) + (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)) + 0) + (merc-vu1-init-buffer (bucket-id merc-tfrag-tex1) + (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)) + 0) + (merc-vu1-init-buffer (bucket-id merc-pris1) + (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)) + 0) + (merc-vu1-init-buffer (bucket-id merc-alpha-tex) + (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)) + 0) + (merc-vu1-init-buffer (bucket-id merc-pris-common) + (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)) + 0) + (merc-vu1-init-buffer (bucket-id merc-water0) + (new 'static + 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x80 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal)) + 0) + (merc-vu1-init-buffer (bucket-id merc-water1) + (new 'static + 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x80 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal)) + 0)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/mood/mood-h.gc b/goal_src/jak1/engine/gfx/mood/mood-h.gc index 2e61f7327a..819fbe69dc 100644 --- a/goal_src/jak1/engine/gfx/mood/mood-h.gc +++ b/goal_src/jak1/engine/gfx/mood/mood-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") -;; name: mood-h.gc -;; name in dgo: mood-h -;; dgos: GAME, ENGINE - ;; the "mood" system sets the fog, lights, and sun to smoothly blend between two levels. ;; each level has 8 "moods" corresponding to the 8 times of day. ;; the mood system blends together moods to create smooth transitions between levels and times of day. @@ -16,77 +11,61 @@ ;; set of fog parameters (deftype mood-fog (structure) - ((fog-color vector :inline) - (fog-dists vector :inline) - (fog-start meters :overlay-at (-> fog-dists x)) - (fog-end meters :overlay-at (-> fog-dists y)) - (fog-max float :overlay-at (-> fog-dists z)) - (fog-min float :overlay-at (-> fog-dists w)) - (erase-color vector :inline) - ) - ) + ((fog-color vector :inline) + (fog-dists vector :inline) + (fog-start meters :overlay-at (-> fog-dists x)) + (fog-end meters :overlay-at (-> fog-dists y)) + (fog-max float :overlay-at (-> fog-dists z)) + (fog-min float :overlay-at (-> fog-dists w)) + (erase-color vector :inline))) ;; a fog pattern for each of the 8 moods (deftype mood-fog-table (structure) - ((data mood-fog 8 :inline) - ) - ) + ((data mood-fog 8 :inline))) ;; a set of light parameters (deftype mood-lights (structure) - ((direction vector :inline) - (lgt-color vector :inline) - (prt-color vector :inline) - (amb-color vector :inline) - (shadow vector :inline) - ) - ) + ((direction vector :inline) + (lgt-color vector :inline) + (prt-color vector :inline) + (amb-color vector :inline) + (shadow vector :inline))) ;; a light parameter for each of the 8 moods (deftype mood-lights-table (structure) - ((data mood-lights 8 :inline) - ) - ) + ((data mood-lights 8 :inline))) ;; settings for the sun (deftype mood-sun (structure) - ((sun-color vector :inline) - (env-color vector :inline) - ) - ) + ((sun-color vector :inline) + (env-color vector :inline))) ;; sun settings for each of the 8 moods (deftype mood-sun-table (structure) - ((data mood-sun 8 :inline) - ) - ) + ((data mood-sun 8 :inline))) ;; all the current mood settings (deftype mood-context (basic) - ((mood-fog-table mood-fog-table) - (mood-lights-table mood-lights-table) - (mood-sun-table mood-sun-table) - (fog-interp sky-color-day) - (palette-interp sky-color-day) - (sky-texture-interp sky-color-day) - (current-fog mood-fog :inline) - (current-sun mood-sun :inline) - (current-prt-color vector :inline) - (current-shadow vector :inline) - (current-shadow-color vector :inline) - (light-group light-group 8 :inline) - (times vector 8 :inline) - (sky-times float 8) - (itimes vector4w 4 :inline) - (state uint8 16) - (num-stars float) - (some-byte uint8 :offset 1939) - ) + ((mood-fog-table mood-fog-table) + (mood-lights-table mood-lights-table) + (mood-sun-table mood-sun-table) + (fog-interp sky-color-day) + (palette-interp sky-color-day) + (sky-texture-interp sky-color-day) + (current-fog mood-fog :inline) + (current-sun mood-sun :inline) + (current-prt-color vector :inline) + (current-shadow vector :inline) + (current-shadow-color vector :inline) + (light-group light-group 8 :inline) + (times vector 8 :inline) + (sky-times float 8) + (itimes vector4w 4 :inline) + (state uint8 16) + (num-stars float) + (some-byte uint8 :offset 1939)) (:methods - (new (symbol type) _type_) - ) - ) - + (new (symbol type) _type_))) (defmethod new mood-context ((allocation symbol) (type-to-make type)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -98,6 +77,4 @@ (set-vector! (-> v0-0 times 5) 1.0 1.0 1.0 0.0) (set-vector! (-> v0-0 times 6) 1.0 1.0 1.0 0.0) (set-vector! (-> v0-0 times 7) 1.0 1.0 1.0 0.0) - v0-0 - ) - ) + v0-0)) diff --git a/goal_src/jak1/engine/gfx/mood/mood-tables.gc b/goal_src/jak1/engine/gfx/mood/mood-tables.gc index 995dd0c11c..65e9ff1636 100644 --- a/goal_src/jak1/engine/gfx/mood/mood-tables.gc +++ b/goal_src/jak1/engine/gfx/mood/mood-tables.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/lights-h.gc") (require "engine/gfx/ocean/ocean-tables.gc") (require "engine/math/matrix.gc") @@ -9,10 +8,6 @@ (require "engine/math/vector.gc") (require "engine/gfx/mood/mood-h.gc") -;; name: mood-tables.gc -;; name in dgo: mood-tables -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun make-light-kit ((arg0 light-group) (arg1 float) (arg2 float) (arg3 float) (arg4 float)) @@ -22,31 +17,26 @@ (set! (-> v1-0 direction x) -0.612) (set! (-> v1-0 direction y) 0.5) (set! (-> v1-0 direction z) 0.612) - (set! (-> v1-0 direction w) 0.0) - ) + (set! (-> v1-0 direction w) 0.0)) (set-vector! (-> arg0 dir0 color) 0.8 0.775 0.7 1.0) (set! (-> arg0 dir0 levels x) arg2) (let ((v1-2 (-> arg0 dir1))) (set! (-> v1-2 direction x) 0.612) (set! (-> v1-2 direction y) 0.5) (set! (-> v1-2 direction z) -0.612) - (set! (-> v1-2 direction w) 0.0) - ) + (set! (-> v1-2 direction w) 0.0)) (set-vector! (-> arg0 dir1 color) 0.8 0.775 0.7 1.0) (set! (-> arg0 dir1 levels x) arg3) (vector-matrix*! (the-as vector (-> arg0 dir0)) (the-as vector (-> arg0 dir0)) s4-0) - (vector-matrix*! (the-as vector (-> arg0 dir1)) (the-as vector (-> arg0 dir1)) s4-0) - ) + (vector-matrix*! (the-as vector (-> arg0 dir1)) (the-as vector (-> arg0 dir1)) s4-0)) (let ((v1-4 (-> arg0 dir2))) (set! (-> v1-4 direction x) 0.0) (set! (-> v1-4 direction y) -1.0) (set! (-> v1-4 direction z) 0.0) - (set! (-> v1-4 direction w) 0.0) - ) + (set! (-> v1-4 direction w) 0.0)) (set-vector! (-> arg0 dir2 color) 0.8 0.775 0.7 1.0) (set! (-> arg0 dir2 levels x) arg4) - (none) - ) + (none)) (defun make-village1-light-kit ((arg0 mood-context)) (make-light-kit (-> arg0 light-group 1) 38229.332 0.9 0.9 0.4) @@ -56,26 +46,21 @@ (set! (-> v1-0 direction x) 0.0) (set! (-> v1-0 direction y) -1.0) (set! (-> v1-0 direction z) 0.0) - (set! (-> v1-0 direction w) 0.0) - ) - (set-vector! (-> s5-0 dir2 color) 0.75 0.375 0.0 1.0) - ) + (set! (-> v1-0 direction w) 0.0)) + (set-vector! (-> s5-0 dir2 color) 0.75 0.375 0.0 1.0)) (make-light-kit (-> arg0 light-group 3) 53703.11 0.9 0.9 0.5) (make-light-kit (-> arg0 light-group 4) 54613.332 0.9 0.9 0.4) (make-light-kit (-> arg0 light-group 5) 54613.332 0.9 0.9 0.4) (make-light-kit (-> arg0 light-group 6) 5461.3335 0.9 0.0 0.4) (make-light-kit (-> arg0 light-group 7) 41870.223 0.9 0.9 0.4) - (none) - ) + (none)) (defun make-misty-light-kit ((arg0 mood-context)) (let ((gp-0 (-> arg0 light-group 1))) (make-light-kit gp-0 24576.0 1.0 0.4 1.0) (set-vector! (-> gp-0 dir0 color) 0.75 0.3 0.0 1.0) - (set-vector! (-> gp-0 dir2 color) 0.75 0.3 0.0 1.0) - ) - (none) - ) + (set-vector! (-> gp-0 dir2 color) 0.75 0.3 0.0 1.0)) + (none)) (defun make-village2-light-kit ((arg0 mood-context)) (let ((v1-0 (-> arg0 light-group 1))) @@ -83,72 +68,59 @@ (set! (-> a0-1 direction x) 0.0) (set! (-> a0-1 direction y) 1.0) (set! (-> a0-1 direction z) 0.0) - (set! (-> a0-1 direction w) 1.0) - ) + (set! (-> a0-1 direction w) 1.0)) (set-vector! (-> v1-0 dir0 color) 0.375 0.25 0.25 1.0) (set! (-> v1-0 dir0 levels x) 1.0) (let ((a0-3 (-> v1-0 dir1))) (set! (-> a0-3 direction x) -0.6119) (set! (-> a0-3 direction y) 0.5) (set! (-> a0-3 direction z) -0.6119) - (set! (-> a0-3 direction w) 1.0) - ) + (set! (-> a0-3 direction w) 1.0)) (set-vector! (-> v1-0 dir1 color) 0.25 0.75 1.0 1.0) (set! (-> v1-0 dir1 levels x) 0.666) (let ((a0-5 (-> v1-0 dir2))) (set! (-> a0-5 direction x) 0.9961) (set! (-> a0-5 direction y) 0.0) (set! (-> a0-5 direction z) -0.0871) - (set! (-> a0-5 direction w) 1.0) - ) + (set! (-> a0-5 direction w) 1.0)) (set-vector! (-> v1-0 dir2 color) 0.0 0.25 1.0 1.0) - (set! (-> v1-0 dir2 levels x) 1.0) - ) + (set! (-> v1-0 dir2 levels x) 1.0)) (let ((v1-2 (-> arg0 light-group 2))) (let ((a0-7 (-> v1-2 dir0))) (set! (-> a0-7 direction x) 0.2239) (set! (-> a0-7 direction y) 0.5) (set! (-> a0-7 direction z) 0.836) - (set! (-> a0-7 direction w) 1.0) - ) + (set! (-> a0-7 direction w) 1.0)) (set-vector! (-> v1-2 dir0 color) 0.8 0.8 0.8 1.0) (set! (-> v1-2 dir0 levels x) 0.7) (let ((a0-9 (-> v1-2 dir1))) (set! (-> a0-9 direction x) -0.2959) (set! (-> a0-9 direction y) 0.5) (set! (-> a0-9 direction z) -0.8133) - (set! (-> a0-9 direction w) 1.0) - ) + (set! (-> a0-9 direction w) 1.0)) (set-vector! (-> v1-2 dir1 color) 0.8 0.8 0.8 1.0) - (set! (-> v1-2 dir1 levels x) 0.7) - ) + (set! (-> v1-2 dir1 levels x) 0.7)) (let ((s5-0 (-> arg0 light-group 3))) (make-light-kit s5-0 5461.3335 1.0 0.8 0.2) - (set-vector! (-> s5-0 dir0 color) 0.675 0.45 0.15 1.0) - ) + (set-vector! (-> s5-0 dir0 color) 0.675 0.45 0.15 1.0)) (let ((s5-1 (-> arg0 light-group 4))) (make-light-kit s5-1 57344.0 1.0 0.8 0.2) - (set-vector! (-> s5-1 dir0 color) 0.675 0.45 0.15 1.0) - ) + (set-vector! (-> s5-1 dir0 color) 0.675 0.45 0.15 1.0)) (let ((v1-6 (-> arg0 light-group 5))) (let ((a0-13 (-> v1-6 dir0))) (set! (-> a0-13 direction x) 0.2425) (set! (-> a0-13 direction y) -0.9701) (set! (-> a0-13 direction z) 0.0) - (set! (-> a0-13 direction w) 0.0) - ) + (set! (-> a0-13 direction w) 0.0)) (set-vector! (-> v1-6 dir0 color) 2.0 1.0 0.0 1.0) (set! (-> v1-6 dir1 levels x) 0.0) - (set! (-> v1-6 dir2 levels x) 0.0) - ) + (set! (-> v1-6 dir2 levels x) 0.0)) (let ((v1-8 (-> arg0 light-group 6))) (set-vector! (-> v1-8 dir0 color) 1.0 0.5 0.0 1.0) (set-vector! (-> v1-8 dir1 color) 0.6 0.58125 0.525 1.0) (set! (-> v1-8 dir1 levels x) 0.0) - (set! (-> v1-8 dir2 levels x) 0.0) - ) - (none) - ) + (set! (-> v1-8 dir2 levels x) 0.0)) + (none)) (defun make-rolling-light-kit ((arg0 mood-context)) (let ((s5-0 (-> arg0 light-group 1))) @@ -157,62 +129,49 @@ (set! (-> v1-0 direction x) 0.0) (set! (-> v1-0 direction y) 1.0) (set! (-> v1-0 direction z) 0.0) - (set! (-> v1-0 direction w) 1.0) - ) - (set-vector! (-> s5-0 dir0 color) 1.0 0.9 0.0 1.0) - ) + (set! (-> v1-0 direction w) 1.0)) + (set-vector! (-> s5-0 dir0 color) 1.0 0.9 0.0 1.0)) (let ((s5-1 (-> arg0 light-group 2))) (make-light-kit s5-1 0.0 1.0 0.0 0.0) (let ((v1-2 (-> s5-1 dir0))) (set! (-> v1-2 direction x) 0.0) (set! (-> v1-2 direction y) 1.0) (set! (-> v1-2 direction z) 0.0) - (set! (-> v1-2 direction w) 1.0) - ) - (set-vector! (-> s5-1 dir0 color) 1.0 0.9 0.0 1.0) - ) + (set! (-> v1-2 direction w) 1.0)) + (set-vector! (-> s5-1 dir0 color) 1.0 0.9 0.0 1.0)) (let ((s5-2 (-> arg0 light-group 3))) (make-light-kit s5-2 0.0 1.0 0.0 0.0) (let ((v1-4 (-> s5-2 dir0))) (set! (-> v1-4 direction x) 0.0) (set! (-> v1-4 direction y) 1.0) (set! (-> v1-4 direction z) 0.0) - (set! (-> v1-4 direction w) 1.0) - ) - (set-vector! (-> s5-2 dir0 color) 1.0 0.9 0.0 1.0) - ) + (set! (-> v1-4 direction w) 1.0)) + (set-vector! (-> s5-2 dir0 color) 1.0 0.9 0.0 1.0)) (let ((s5-3 (-> arg0 light-group 4))) (make-light-kit s5-3 0.0 1.0 0.0 0.0) (let ((v1-6 (-> s5-3 dir0))) (set! (-> v1-6 direction x) 0.0) (set! (-> v1-6 direction y) 1.0) (set! (-> v1-6 direction z) 0.0) - (set! (-> v1-6 direction w) 1.0) - ) - (set-vector! (-> s5-3 dir0 color) 1.0 0.9 0.0 1.0) - ) + (set! (-> v1-6 direction w) 1.0)) + (set-vector! (-> s5-3 dir0 color) 1.0 0.9 0.0 1.0)) (let ((s5-4 (-> arg0 light-group 5))) (make-light-kit s5-4 0.0 1.0 0.0 0.0) (let ((v1-8 (-> s5-4 dir0))) (set! (-> v1-8 direction x) 0.0) (set! (-> v1-8 direction y) 1.0) (set! (-> v1-8 direction z) 0.0) - (set! (-> v1-8 direction w) 1.0) - ) - (set-vector! (-> s5-4 dir0 color) 1.0 0.9 0.0 1.0) - ) + (set! (-> v1-8 direction w) 1.0)) + (set-vector! (-> s5-4 dir0 color) 1.0 0.9 0.0 1.0)) (let ((gp-1 (-> arg0 light-group 6))) (make-light-kit gp-1 0.0 1.0 0.0 0.0) (let ((v1-10 (-> gp-1 dir0))) (set! (-> v1-10 direction x) 0.0) (set! (-> v1-10 direction y) 1.0) (set! (-> v1-10 direction z) 0.0) - (set! (-> v1-10 direction w) 1.0) - ) - (set-vector! (-> gp-1 dir0 color) 1.0 0.9 0.0 1.0) - ) - (none) - ) + (set! (-> v1-10 direction w) 1.0)) + (set-vector! (-> gp-1 dir0 color) 1.0 0.9 0.0 1.0)) + (none)) (defun make-village3-light-kit ((arg0 mood-context)) (let ((v1-0 (-> arg0 light-group 1))) @@ -220,37 +179,30 @@ (set! (-> a1-0 direction x) 0.6281) (set! (-> a1-0 direction y) 0.7208) (set! (-> a1-0 direction z) 0.2929) - (set! (-> a1-0 direction w) 1.0) - ) + (set! (-> a1-0 direction w) 1.0)) (set-vector! (-> v1-0 dir0 color) 0.5 1.0 1.0 1.0) (set! (-> v1-0 dir0 levels x) 1.0) (let ((a1-2 (-> v1-0 dir2))) (set! (-> a1-2 direction x) 0.0) (set! (-> a1-2 direction y) -1.0) (set! (-> a1-2 direction z) 0.0) - (set! (-> a1-2 direction w) 1.0) - ) - (set-vector! (-> v1-0 dir2 color) 0.625 0.375 0.1 1.0) - ) + (set! (-> a1-2 direction w) 1.0)) + (set-vector! (-> v1-0 dir2 color) 0.625 0.375 0.1 1.0)) (let ((v1-2 (-> arg0 light-group 2))) (let ((a0-1 (-> v1-2 dir0))) (set! (-> a0-1 direction x) 0.6281) (set! (-> a0-1 direction y) 0.7208) (set! (-> a0-1 direction z) 0.2929) - (set! (-> a0-1 direction w) 1.0) - ) + (set! (-> a0-1 direction w) 1.0)) (set-vector! (-> v1-2 dir0 color) 0.25 0.5 0.5 1.0) (set! (-> v1-2 dir0 levels x) 1.0) (let ((a0-3 (-> v1-2 dir2))) (set! (-> a0-3 direction x) 0.0) (set! (-> a0-3 direction y) -1.0) (set! (-> a0-3 direction z) 0.0) - (set! (-> a0-3 direction w) 1.0) - ) - (set-vector! (-> v1-2 dir2 color) 0.625 0.375 0.1 1.0) - ) - (none) - ) + (set! (-> a0-3 direction w) 1.0)) + (set-vector! (-> v1-2 dir2 color) 0.625 0.375 0.1 1.0)) + (none)) (defun update-mood-shadow-direction ((arg0 mood-lights)) (let ((v1-0 (-> arg0 shadow))) @@ -262,17 +214,12 @@ (f1-1 (-> v1-0 x)) (f1-3 (* f1-1 f1-1)) (f2-0 (-> v1-0 z)) - (f0-8 (/ f0-7 (sqrtf (+ f1-3 (* f2-0 f2-0))))) - ) + (f0-8 (/ f0-7 (sqrtf (+ f1-3 (* f2-0 f2-0)))))) (set! (-> v1-0 x) (* (-> v1-0 x) f0-8)) (set! (-> v1-0 y) -0.9063) - (set! (-> v1-0 z) (* (-> v1-0 z) f0-8)) - ) - ) - ) + (set! (-> v1-0 z) (* (-> v1-0 z) f0-8))))) 0 - (none) - ) + (none)) (defun update-mood-erase-color ((arg0 mood-fog) (arg1 mood-lights)) (let ((s5-0 (-> arg0 erase-color))) @@ -281,13 +228,9 @@ (set! (-> s5-0 x) (* 2.0 (-> s5-0 x))) (set! (-> s5-0 y) (* 2.0 (-> s5-0 y))) (set! (-> s5-0 z) (* 2.0 (-> s5-0 z))) - (let ((f0-8 (* 0.003921569 (- 255.0 (-> arg0 fog-dists w))))) - (vector4-lerp! s5-0 s5-0 (-> arg0 fog-color) f0-8) - ) - ) + (let ((f0-8 (* 0.003921569 (- 255.0 (-> arg0 fog-dists w))))) (vector4-lerp! s5-0 s5-0 (-> arg0 fog-color) f0-8))) 0 - (none) - ) + (none)) (defun update-mood-erase-color2 ((arg0 mood-fog) (arg1 mood-lights) (arg2 mood-lights)) (let ((s5-0 (-> arg0 erase-color))) @@ -303,340 +246,419 @@ (set! (-> s4-0 fog-color x) (* 2.0 (-> s4-0 fog-color x))) (set! (-> s4-0 fog-color y) (* 2.0 (-> s4-0 fog-color y))) (set! (-> s4-0 fog-color z) (* 2.0 (-> s4-0 fog-color z))) - (vector4-lerp! s5-0 s5-0 (the-as vector s4-0) 0.5) - ) - (let ((f0-15 (* 0.003921569 (- 255.0 (-> arg0 fog-dists w))))) - (vector4-lerp! s5-0 s5-0 (-> arg0 fog-color) f0-15) - ) - ) + (vector4-lerp! s5-0 s5-0 (the-as vector s4-0) 0.5)) + (let ((f0-15 (* 0.003921569 (- 255.0 (-> arg0 fog-dists w))))) (vector4-lerp! s5-0 s5-0 (-> arg0 fog-color) f0-15))) 0 - (none) - ) + (none)) (define *default-interp-table* - (new 'static 'sky-color-day - :hour (new 'static 'inline-array sky-color-hour 24 - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.2 :morph-end 0.4) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.4 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.6 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.8 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.99 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.8 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.6) - (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.66 :morph-end 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-end 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.33 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.66 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.99 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.75 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.5) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 5 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.99 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.75 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.5 :morph-end 0.25) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.25) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-end 0.2) - ) - ) - ) + (new 'static + 'sky-color-day + :hour + (new 'static + 'inline-array + sky-color-hour + 24 + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.2 :morph-end 0.4) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.4 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.6 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.8 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.99 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.8 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.6) + (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.66 :morph-end 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-end 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.33 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.66 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.99 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.75 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.99 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.75 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.5 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.25) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-end 0.2)))) (define *village1-palette-interp-table* - (new 'static 'sky-color-day - :hour (new 'static 'inline-array sky-color-hour 24 - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.2 :morph-end 0.4) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.4 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.6 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.8 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.99 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.8 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.6) - (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.66 :morph-end 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-end 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.33 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.66 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.99 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.75 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.5) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-start 0.75 :morph-end 0.82) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-start 0.82 :morph-end 0.88) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-start 0.88 :morph-end 0.94) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-start 0.94 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-end 0.2) - ) - ) - ) + (new 'static + 'sky-color-day + :hour + (new 'static + 'inline-array + sky-color-hour + 24 + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.2 :morph-end 0.4) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.4 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.6 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.8 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.99 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.8 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.6) + (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.66 :morph-end 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-end 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.33 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.66 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.99 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.75 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 3 :morph-start 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-start 0.75 :morph-end 0.82) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-start 0.82 :morph-end 0.88) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-start 0.88 :morph-end 0.94) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 6 :morph-start 0.94 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-end 0.2)))) (define *misty-palette-interp-table* - (new 'static 'sky-color-day - :hour (new 'static 'inline-array sky-color-hour 24 - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.04 :morph-end 0.08) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.08 :morph-end 0.12) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.12 :morph-end 0.16) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.16 :morph-end 0.2) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.2 :morph-end 0.23) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.23 :morph-end 0.25) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.25 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.75 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.8 :morph-end 0.85) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.85 :morph-end 0.9) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.9 :morph-end 0.95) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.95 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.99 :morph-end 0.96) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.96 :morph-end 0.92) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.92 :morph-end 0.88) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.88 :morph-end 0.84) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.84 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.8 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.75 :morph-end 0.25) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.25 :morph-end 0.18) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.18 :morph-end 0.12) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.12 :morph-end 0.06) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.06) - (new 'static 'sky-color-hour :snapshot1 1 :morph-end 0.04) - ) - ) - ) + (new 'static + 'sky-color-day + :hour + (new 'static + 'inline-array + sky-color-hour + 24 + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.04 :morph-end 0.08) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.08 :morph-end 0.12) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.12 :morph-end 0.16) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.16 :morph-end 0.2) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.2 :morph-end 0.23) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.23 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.25 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.75 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.8 :morph-end 0.85) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.85 :morph-end 0.9) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.9 :morph-end 0.95) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.95 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.99 :morph-end 0.96) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.96 :morph-end 0.92) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.92 :morph-end 0.88) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.88 :morph-end 0.84) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.84 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.8 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.75 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.25 :morph-end 0.18) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.18 :morph-end 0.12) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.12 :morph-end 0.06) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.06) + (new 'static 'sky-color-hour :snapshot1 1 :morph-end 0.04)))) (define *firecanyon-palette-interp-table* - (new 'static 'sky-color-day - :hour (new 'static 'inline-array sky-color-hour 24 - (new 'static 'sky-color-hour :snapshot1 3 :morph-end 0.08) - (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.08 :morph-end 0.12) - (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.12 :morph-end 0.16) - (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.16 :morph-end 0.2) - (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.2 :morph-end 0.23) - (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.23 :morph-end 0.25) - (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.25 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.99 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.5 :morph-end 0.38) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.38 :morph-end 0.26) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.26 :morph-end 0.22) - (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.22) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-end 0.1) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.1 :morph-end 0.2) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.2 :morph-end 0.3) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.3 :morph-end 0.4) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.4 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.5 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.99 :morph-end 0.25) - (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.25 :morph-end 0.18) - (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.18 :morph-end 0.12) - (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.12 :morph-end 0.06) - (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.06) - (new 'static 'sky-color-hour :snapshot1 3 :morph-end 0.04) - ) - ) - ) + (new 'static + 'sky-color-day + :hour + (new 'static + 'inline-array + sky-color-hour + 24 + (new 'static 'sky-color-hour :snapshot1 3 :morph-end 0.08) + (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.08 :morph-end 0.12) + (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.12 :morph-end 0.16) + (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.16 :morph-end 0.2) + (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.2 :morph-end 0.23) + (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.23 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 3 :morph-start 0.25 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.99 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.5 :morph-end 0.38) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.38 :morph-end 0.26) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.26 :morph-end 0.22) + (new 'static 'sky-color-hour :snapshot1 1 :morph-start 0.22) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-end 0.1) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.1 :morph-end 0.2) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.2 :morph-end 0.3) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.3 :morph-end 0.4) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.4 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 2 :morph-start 0.5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.99 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.25 :morph-end 0.18) + (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.18 :morph-end 0.12) + (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.12 :morph-end 0.06) + (new 'static 'sky-color-hour :snapshot1 3 :snapshot2 2 :morph-start 0.06) + (new 'static 'sky-color-hour :snapshot1 3 :morph-end 0.04)))) (define *rolling-palette-interp-table* - (new 'static 'sky-color-day - :hour (new 'static 'inline-array sky-color-hour 24 - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.2 :morph-end 0.4) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.4 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.6 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.8 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.99 :morph-end 0.88) - (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.88 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.75 :morph-end 0.25) - (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.25 :morph-end 0.12) - (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.12) - (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.16) - (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.16 :morph-end 0.34) - (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.34 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.66 :morph-end 0.84) - (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.84 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.84) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.84 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.8 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.75 :morph-end 0.25) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.25 :morph-end 0.17) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.17 :morph-end 0.12) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.12 :morph-end 0.06) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.06) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-end 0.2) - ) - ) - ) + (new 'static + 'sky-color-day + :hour + (new 'static + 'inline-array + sky-color-hour + 24 + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.2 :morph-end 0.4) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.4 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.6 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-start 0.8 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.99 :morph-end 0.88) + (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.88 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.75 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.25 :morph-end 0.12) + (new 'static 'sky-color-hour :snapshot2 3 :morph-start 0.12) + (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.16) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.16 :morph-end 0.34) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.34 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.66 :morph-end 0.84) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.84 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.84) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.84 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.8 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.75 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.25 :morph-end 0.17) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.17 :morph-end 0.12) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.12 :morph-end 0.06) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.06) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 3 :morph-end 0.2)))) (define *village2-sky-texture-table* - (new 'static 'sky-color-day - :hour (new 'static 'inline-array sky-color-hour 24 - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-start 0.2 :morph-end 0.4) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-start 0.4 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-start 0.6 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-start 0.8 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 4 :morph-start 0.99 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 4 :morph-start 0.8 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 4 :morph-start 0.6) - (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 6 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 6 :morph-start 0.5 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.99 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.66 :morph-end 0.33) - (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.33) - (new 'static 'sky-color-hour :snapshot2 6 :morph-end 0.33) - (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.33 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.66 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 6 :morph-start 0.99 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 6 :morph-start 0.75 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 6 :morph-start 0.5) - (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-start 0.75 :morph-end 0.82) - (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-start 0.82 :morph-end 0.88) - (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-start 0.88 :morph-end 0.94) - (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-start 0.94 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-end 0.2) - ) - ) - ) + (new 'static + 'sky-color-day + :hour + (new 'static + 'inline-array + sky-color-hour + 24 + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-start 0.2 :morph-end 0.4) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-start 0.4 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-start 0.6 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-start 0.8 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 4 :morph-start 0.99 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 4 :morph-start 0.8 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 4 :morph-start 0.6) + (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 6 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 5 :snapshot2 6 :morph-start 0.5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.99 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.66 :morph-end 0.33) + (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.33) + (new 'static 'sky-color-hour :snapshot2 6 :morph-end 0.33) + (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.33 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot2 6 :morph-start 0.66 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 6 :morph-start 0.99 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 6 :morph-start 0.75 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 6 :morph-start 0.5) + (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-start 0.75 :morph-end 0.82) + (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-start 0.82 :morph-end 0.88) + (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-start 0.88 :morph-end 0.94) + (new 'static 'sky-color-hour :snapshot1 7 :snapshot2 1 :morph-start 0.94 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 1 :snapshot2 4 :morph-end 0.2)))) (define *finalboss-interp-table* - (new 'static 'sky-color-day - :hour (new 'static 'inline-array sky-color-hour 24 - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.2 :morph-end 0.4) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.4 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.6 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.8 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.99 :morph-end 0.8) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.8 :morph-end 0.6) - (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.6) - (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.66 :morph-end 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-end 0.33) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.33 :morph-end 0.66) - (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.66 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 1 :morph-start 0.99 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 1 :morph-start 0.75 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 1 :morph-start 0.5) - (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 5 :morph-end 0.99) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.99 :morph-end 0.75) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.75 :morph-end 0.5) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.5 :morph-end 0.25) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.25) - (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-end 0.2) - ) - ) - ) + (new 'static + 'sky-color-day + :hour + (new 'static + 'inline-array + sky-color-hour + 24 + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.2 :morph-end 0.4) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.4 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.6 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-start 0.8 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.99 :morph-end 0.8) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.8 :morph-end 0.6) + (new 'static 'sky-color-hour :snapshot2 7 :morph-start 0.6) + (new 'static 'sky-color-hour :snapshot2 1 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot2 1 :morph-start 0.5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.99 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.66 :morph-end 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-end 0.33) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.33 :morph-end 0.66) + (new 'static 'sky-color-hour :snapshot1 2 :snapshot2 1 :morph-start 0.66 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 1 :morph-start 0.99 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 1 :morph-start 0.75 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 1 :morph-start 0.5) + (new 'static 'sky-color-hour :snapshot1 4 :snapshot2 5 :morph-end 0.99) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.99 :morph-end 0.75) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.75 :morph-end 0.5) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.5 :morph-end 0.25) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 5 :morph-start 0.25) + (new 'static 'sky-color-hour :snapshot1 6 :snapshot2 7 :morph-end 0.2)))) (define *village1-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 128.0 :y 180.0 :z 243.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 16.0 :y 32.0 :z 100.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 4984832.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 80.0 :z 64.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 128.0 :y 180.0 :z 243.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 16.0 :y 32.0 :z 100.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 6717440.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 4984832.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 80.0 :z 64.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 3690496.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0))))) (define *village1-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.066987306 :y 0.25000003 :z 0.9659258) - :lgt-color (new 'static 'vector :x 1.558 :y 1.454 :z 0.228 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.4 :y 0.266 :z 0.6 :w 1.0) - :shadow (new 'static 'vector :x -0.066987306 :y 0.25000003 :z 0.9659258) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) - :lgt-color (new 'static 'vector :x 1.632 :y 1.586 :z 1.428 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.387 :y 0.387 :z 0.475 :w 1.0) - :shadow (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.25881904 :y 0.9659258) - :lgt-color (new 'static 'vector :x 1.644 :y 1.598 :z 1.438 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.362 :y 0.362 :z 0.425 :w 1.0) - :shadow (new 'static 'vector :x -0.25881904 :y 0.9659258) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.1830127 :y 0.6830127 :z -0.70710677) - :lgt-color (new 'static 'vector :x 1.632 :y 1.586 :z 1.428 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.387 :y 0.387 :z 0.475 :w 1.0) - :shadow (new 'static 'vector :x -0.1830127 :y 0.6830127 :z -0.70710677) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.066987306 :y 0.25000003 :z -0.9659258) - :lgt-color (new 'static 'vector :x 1.646 :y 1.118 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.32 :y 0.35 :z 0.6 :w 1.0) - :shadow (new 'static 'vector :x -0.066987306 :y 0.25000003 :z -0.9659258) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y 1.0) - :lgt-color (new 'static 'vector :x 0.25 :y 0.5 :z 1.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.31 :y 0.29 :z 0.35 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881907) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881907) - :lgt-color (new 'static 'vector :x 0.192 :y 0.256 :z 0.961 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.383 :y 0.439 :z 0.7 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881907) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.354 :y 0.866 :z 0.354) - :lgt-color (new 'static 'vector :x 0.0495 :y 0.62075 :z 0.326 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.25 :y 0.439 :z 0.7 :w 1.0) - :shadow (new 'static 'vector :x 0.5393 :y 0.7652 :z -0.3514) - ) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.066987306 :y 0.25000003 :z 0.9659258) + :lgt-color + (new 'static 'vector :x 1.558 :y 1.454 :z 0.228 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.4 :y 0.266 :z 0.6 :w 1.0) + :shadow + (new 'static 'vector :x -0.066987306 :y 0.25000003 :z 0.9659258)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) + :lgt-color + (new 'static 'vector :x 1.632 :y 1.586 :z 1.428 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.387 :y 0.387 :z 0.475 :w 1.0) + :shadow + (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.25881904 :y 0.9659258) + :lgt-color + (new 'static 'vector :x 1.644 :y 1.598 :z 1.438 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.362 :y 0.362 :z 0.425 :w 1.0) + :shadow + (new 'static 'vector :x -0.25881904 :y 0.9659258)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.1830127 :y 0.6830127 :z -0.70710677) + :lgt-color + (new 'static 'vector :x 1.632 :y 1.586 :z 1.428 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.387 :y 0.387 :z 0.475 :w 1.0) + :shadow + (new 'static 'vector :x -0.1830127 :y 0.6830127 :z -0.70710677)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.066987306 :y 0.25000003 :z -0.9659258) + :lgt-color + (new 'static 'vector :x 1.646 :y 1.118 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.32 :y 0.35 :z 0.6 :w 1.0) + :shadow + (new 'static 'vector :x -0.066987306 :y 0.25000003 :z -0.9659258)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y 1.0) + :lgt-color + (new 'static 'vector :x 0.25 :y 0.5 :z 1.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.31 :y 0.29 :z 0.35 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881907)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881907) + :lgt-color + (new 'static 'vector :x 0.192 :y 0.256 :z 0.961 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.383 :y 0.439 :z 0.7 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881907)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.354 :y 0.866 :z 0.354) + :lgt-color + (new 'static 'vector :x 0.0495 :y 0.62075 :z 0.326 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.25 :y 0.439 :z 0.7 :w 1.0) + :shadow + (new 'static 'vector :x 0.5393 :y 0.7652 :z -0.3514))))) (update-mood-shadow-direction (the-as mood-lights (-> *village1-mood-lights-table* data))) @@ -655,172 +677,268 @@ (update-mood-shadow-direction (-> *village1-mood-lights-table* data 7)) (define *village1-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 196.0 :z 64.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 96.0 :y 96.0 :z 196.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 64.0 :y 64.0 :z 150.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 64.0 :y 150.0 :z 196.0 :w 255.0) - ) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 196.0 :z 64.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 96.0 :y 96.0 :z 196.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 64.0 :y 64.0 :z 150.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 64.0 :y 150.0 :z 196.0 :w 255.0))))) (define *training-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 128.0 :y 180.0 :z 243.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 16.0 :y 32.0 :z 100.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 80.0 :z 64.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 128.0 :y 180.0 :z 243.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 16.0 :y 32.0 :z 100.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 80.0 :z 64.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 10240000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0))))) (define *snow-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 210.0 :y 183.0 :z 160.0 :w 128.0) - :fog-dists (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 190.25 :y 198.0 :z 195.25 :w 128.0) - :fog-dists (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 180.5 :y 203.0 :z 220.0 :w 128.0) - :fog-dists (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 192.75 :y 190.5 :z 197.75 :w 128.0) - :fog-dists (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 205.0 :y 178.0 :z 175.5 :w 128.0) - :fog-dists (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 48.0 :y 44.0 :z 64.0 :w 128.0) - :fog-dists (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 8.0 :y 16.0 :z 32.0 :w 128.0) - :fog-dists (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 16.0 :y 64.0 :z 60.0 :w 128.0) - :fog-dists (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 210.0 :y 183.0 :z 160.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 190.25 :y 198.0 :z 195.25 :w 128.0) + :fog-dists + (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 180.5 :y 203.0 :z 220.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 192.75 :y 190.5 :z 197.75 :w 128.0) + :fog-dists + (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 205.0 :y 178.0 :z 175.5 :w 128.0) + :fog-dists + (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 48.0 :y 44.0 :z 64.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 8.0 :y 16.0 :z 32.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 16.0 :y 64.0 :z 60.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 819200.0 :y 2662400.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0))))) (define *snow-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.067 :y 0.25 :z 0.966) - :lgt-color (new 'static 'vector :x 0.943 :y 0.88 :z 0.137 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.449 :y 0.35 :z 0.599 :w 1.0) - :shadow (new 'static 'vector :x -0.066987306 :y 0.25000003 :z 0.9659258) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.259 :y 0.966) - :lgt-color (new 'static 'vector :x 0.66 :y 0.436 :z 0.291 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.358 :y 0.575 :z 0.716 :w 1.0) - :shadow (new 'static 'vector :x -0.25881904 :y 0.9659258) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.067 :y 0.25 :z -0.966) - :lgt-color (new 'static 'vector :x 1.056 :y 0.747 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.383 :y 0.366 :z 0.599 :w 1.0) - :shadow (new 'static 'vector :x -0.066987306 :y 0.25000003 :z -0.9659258) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.866 :y 0.5) - :lgt-color (new 'static 'vector :x 0.067 :y 0.089 :z 0.333 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.304 :y 0.409 :z 0.76 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881907) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.067 :y 0.25 :z 0.966) + :lgt-color + (new 'static 'vector :x 0.943 :y 0.88 :z 0.137 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.449 :y 0.35 :z 0.599 :w 1.0) + :shadow + (new 'static 'vector :x -0.066987306 :y 0.25000003 :z 0.9659258)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.259 :y 0.966) + :lgt-color + (new 'static 'vector :x 0.66 :y 0.436 :z 0.291 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.358 :y 0.575 :z 0.716 :w 1.0) + :shadow + (new 'static 'vector :x -0.25881904 :y 0.9659258)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.067 :y 0.25 :z -0.966) + :lgt-color + (new 'static 'vector :x 1.056 :y 0.747 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.383 :y 0.366 :z 0.599 :w 1.0) + :shadow + (new 'static 'vector :x -0.066987306 :y 0.25000003 :z -0.9659258)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.866 :y 0.5) + :lgt-color + (new 'static 'vector :x 0.067 :y 0.089 :z 0.333 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.304 :y 0.409 :z 0.76 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881907)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *snow-mood-lights-table* data))) @@ -830,10 +948,8 @@ (update-mood-shadow-direction (-> *snow-mood-lights-table* data 3)) -(update-mood-erase-color - (the-as mood-fog (-> *snow-mood-fog-table* data)) - (the-as mood-lights (-> *snow-mood-lights-table* data)) - ) +(update-mood-erase-color (the-as mood-fog (-> *snow-mood-fog-table* data)) + (the-as mood-lights (-> *snow-mood-lights-table* data))) (update-mood-erase-color (-> *snow-mood-fog-table* data 2) (-> *snow-mood-lights-table* data 1)) @@ -841,504 +957,671 @@ (update-mood-erase-color (-> *snow-mood-fog-table* data 6) (-> *snow-mood-lights-table* data 3)) -(update-mood-erase-color2 - (-> *snow-mood-fog-table* data 1) - (the-as mood-lights (-> *snow-mood-lights-table* data)) - (-> *snow-mood-lights-table* data 1) - ) - -(update-mood-erase-color2 - (-> *snow-mood-fog-table* data 3) - (-> *snow-mood-lights-table* data 1) - (-> *snow-mood-lights-table* data 2) - ) - -(update-mood-erase-color2 - (-> *snow-mood-fog-table* data 5) - (-> *snow-mood-lights-table* data 2) - (-> *snow-mood-lights-table* data 3) - ) - -(update-mood-erase-color2 - (-> *snow-mood-fog-table* data 7) - (-> *snow-mood-lights-table* data 3) - (the-as mood-lights (-> *snow-mood-lights-table* data)) - ) - -(vector4-lerp! - (-> *snow-mood-fog-table* data 0 erase-color) - (-> *snow-mood-fog-table* data 0 erase-color) - (the-as vector (-> *snow-mood-fog-table* data)) - 0.41 - ) - -(vector4-lerp! - (-> *snow-mood-fog-table* data 1 erase-color) - (-> *snow-mood-fog-table* data 1 erase-color) - (the-as vector (-> *snow-mood-fog-table* data 1)) - 0.41 - ) - -(vector4-lerp! - (-> *snow-mood-fog-table* data 2 erase-color) - (-> *snow-mood-fog-table* data 2 erase-color) - (the-as vector (-> *snow-mood-fog-table* data 2)) - 0.41 - ) - -(vector4-lerp! - (-> *snow-mood-fog-table* data 3 erase-color) - (-> *snow-mood-fog-table* data 3 erase-color) - (the-as vector (-> *snow-mood-fog-table* data 3)) - 0.41 - ) - -(vector4-lerp! - (-> *snow-mood-fog-table* data 4 erase-color) - (-> *snow-mood-fog-table* data 4 erase-color) - (the-as vector (-> *snow-mood-fog-table* data 4)) - 0.41 - ) - -(vector4-lerp! - (-> *snow-mood-fog-table* data 5 erase-color) - (-> *snow-mood-fog-table* data 5 erase-color) - (the-as vector (-> *snow-mood-fog-table* data 5)) - 0.41 - ) - -(vector4-lerp! - (-> *snow-mood-fog-table* data 6 erase-color) - (-> *snow-mood-fog-table* data 6 erase-color) - (the-as vector (-> *snow-mood-fog-table* data 6)) - 0.41 - ) - -(vector4-lerp! - (-> *snow-mood-fog-table* data 7 erase-color) - (-> *snow-mood-fog-table* data 7 erase-color) - (the-as vector (-> *snow-mood-fog-table* data 7)) - 0.41 - ) +(update-mood-erase-color2 (-> *snow-mood-fog-table* data 1) + (the-as mood-lights (-> *snow-mood-lights-table* data)) + (-> *snow-mood-lights-table* data 1)) + +(update-mood-erase-color2 (-> *snow-mood-fog-table* data 3) + (-> *snow-mood-lights-table* data 1) + (-> *snow-mood-lights-table* data 2)) + +(update-mood-erase-color2 (-> *snow-mood-fog-table* data 5) + (-> *snow-mood-lights-table* data 2) + (-> *snow-mood-lights-table* data 3)) + +(update-mood-erase-color2 (-> *snow-mood-fog-table* data 7) + (-> *snow-mood-lights-table* data 3) + (the-as mood-lights (-> *snow-mood-lights-table* data))) + +(vector4-lerp! (-> *snow-mood-fog-table* data 0 erase-color) + (-> *snow-mood-fog-table* data 0 erase-color) + (the-as vector (-> *snow-mood-fog-table* data)) + 0.41) + +(vector4-lerp! (-> *snow-mood-fog-table* data 1 erase-color) + (-> *snow-mood-fog-table* data 1 erase-color) + (the-as vector (-> *snow-mood-fog-table* data 1)) + 0.41) + +(vector4-lerp! (-> *snow-mood-fog-table* data 2 erase-color) + (-> *snow-mood-fog-table* data 2 erase-color) + (the-as vector (-> *snow-mood-fog-table* data 2)) + 0.41) + +(vector4-lerp! (-> *snow-mood-fog-table* data 3 erase-color) + (-> *snow-mood-fog-table* data 3 erase-color) + (the-as vector (-> *snow-mood-fog-table* data 3)) + 0.41) + +(vector4-lerp! (-> *snow-mood-fog-table* data 4 erase-color) + (-> *snow-mood-fog-table* data 4 erase-color) + (the-as vector (-> *snow-mood-fog-table* data 4)) + 0.41) + +(vector4-lerp! (-> *snow-mood-fog-table* data 5 erase-color) + (-> *snow-mood-fog-table* data 5 erase-color) + (the-as vector (-> *snow-mood-fog-table* data 5)) + 0.41) + +(vector4-lerp! (-> *snow-mood-fog-table* data 6 erase-color) + (-> *snow-mood-fog-table* data 6 erase-color) + (the-as vector (-> *snow-mood-fog-table* data 6)) + 0.41) + +(vector4-lerp! (-> *snow-mood-fog-table* data 7 erase-color) + (-> *snow-mood-fog-table* data 7 erase-color) + (the-as vector (-> *snow-mood-fog-table* data 7)) + 0.41) (define *snow-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) - :env-color (new 'static 'vector :x 192.0 :y 176.5 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :w 128.0) - :env-color (new 'static 'vector :x 128.0 :y 176.0 :z 192.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :w 128.0) - :env-color (new 'static 'vector :x 128.0 :y 180.0 :z 194.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :w 128.0) - :env-color (new 'static 'vector :x 128.0 :y 176.0 :z 192.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) - :env-color (new 'static 'vector :x 192.0 :y 176.5 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :w 128.0) - :env-color (new 'static 'vector :x 80.0 :y 80.0 :z 173.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :w 128.0) - :env-color (new 'static 'vector :x 64.0 :y 64.0 :z 150.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :w 128.0) - :env-color (new 'static 'vector :x 64.0 :y 107.0 :z 173.0 :w 255.0) - ) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) + :env-color + (new 'static 'vector :x 192.0 :y 176.5 :z 96.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :w 128.0) + :env-color + (new 'static 'vector :x 128.0 :y 176.0 :z 192.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :w 128.0) + :env-color + (new 'static 'vector :x 128.0 :y 180.0 :z 194.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :w 128.0) + :env-color + (new 'static 'vector :x 128.0 :y 176.0 :z 192.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) + :env-color + (new 'static 'vector :x 192.0 :y 176.5 :z 96.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :w 128.0) + :env-color + (new 'static 'vector :x 80.0 :y 80.0 :z 173.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :w 128.0) + :env-color + (new 'static 'vector :x 64.0 :y 64.0 :z 150.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :w 128.0) + :env-color + (new 'static 'vector :x 64.0 :y 107.0 :z 173.0 :w 255.0))))) (define *jungleb-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :w 128.0) - :fog-dists (new 'static 'vector :x 98304.0 :y 3072000.0 :z 255.0 :w 150.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :w 128.0) + :fog-dists + (new 'static 'vector :x 98304.0 :y 3072000.0 :z 255.0 :w 150.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog)))) (define *jungleb-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :y 1.0) - :lgt-color (new 'static 'vector :x 0.287 :y 0.283 :z 0.4 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.14125 :y 0.1875 :z 0.375 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y 1.0) + :lgt-color + (new 'static 'vector :x 0.287 :y 0.283 :z 0.4 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.14125 :y 0.1875 :z 0.375 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (define *jungleb-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 48.0 :y 60.0 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 48.0 :y 60.0 :z 96.0 :w 255.0)) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun)))) (define *maincave-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 96.0 :z 96.0 :w 128.0) - :fog-dists (new 'static 'vector :x 434176.0 :y 1048576.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 96.0 :z 96.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 434176.0 :y 1048576.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog)))) (define *maincave-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :y 1.0) - :lgt-color (new 'static 'vector :x 0.25 :y 0.6 :z 0.75 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.15 :y 0.2 :z 0.25 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y 1.0) + :lgt-color + (new 'static 'vector :x 0.25 :y 0.6 :z 0.75 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.15 :y 0.2 :z 0.25 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (define *maincave-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 128.0 :y 255.0 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 128.0 :y 255.0 :z 255.0 :w 255.0)) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun)))) (define *robocave-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2048000.0 :z 255.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2048000.0 :z 255.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog)))) (define *darkcave-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1024000.0 :z 255.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1024000.0 :z 255.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog)))) (define *darkcave-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 0.3 :y 0.4 :z 0.5 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.3 :y 0.4 :z 0.5 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 0.3 :y 0.4 :z 0.5 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.3 :y 0.4 :z 0.5 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (define *darkcave-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 127.5 :y 255.0 :z 127.5 :w 255.0) - ) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 127.5 :y 255.0 :z 127.5 :w 255.0)) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun)))) (define *misty-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 186.0 :y 148.0 :z 164.0 :w 128.0) - :fog-dists (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 132.0 :y 140.0 :z 227.0 :w 128.0) - :fog-dists (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 132.0 :y 140.0 :z 243.0 :w 128.0) - :fog-dists (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 132.0 :y 140.0 :z 241.0 :w 128.0) - :fog-dists (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 186.0 :y 148.0 :z 164.0 :w 128.0) - :fog-dists (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 64.0 :z 152.0 :w 128.0) - :fog-dists (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 32.0 :z 96.0 :w 128.0) - :fog-dists (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 17.0 :y 119.0 :z 143.0 :w 128.0) - :fog-dists (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 186.0 :y 148.0 :z 164.0 :w 128.0) + :fog-dists + (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 132.0 :y 140.0 :z 227.0 :w 128.0) + :fog-dists + (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 132.0 :y 140.0 :z 243.0 :w 128.0) + :fog-dists + (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 132.0 :y 140.0 :z 241.0 :w 128.0) + :fog-dists + (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 186.0 :y 148.0 :z 164.0 :w 128.0) + :fog-dists + (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 64.0 :z 152.0 :w 128.0) + :fog-dists + (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 32.0 :z 96.0 :w 128.0) + :fog-dists + (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 17.0 :y 119.0 :z 143.0 :w 128.0) + :fog-dists + (new 'static 'vector :y 737280.0 :z 255.0 :w 50.0) + :erase-color + (new 'static 'vector :w 128.0))))) (define *misty-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.877 :y 0.877 :z 0.877 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.374 :y 0.374 :z 0.375 :w 1.0) - :shadow (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.334 :y 0.348 :z 0.64 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.428 :y 0.44 :z 0.55 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.877 :y 0.877 :z 0.877 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.374 :y 0.374 :z 0.375 :w 1.0) + :shadow + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.334 :y 0.348 :z 0.64 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.428 :y 0.44 :z 0.55 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *misty-mood-lights-table* data))) (update-mood-shadow-direction (-> *misty-mood-lights-table* data 1)) (define *misty-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) - :env-color (new 'static 'vector :x 186.0 :y 148.0 :z 164.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 132.0 :y 140.0 :z 227.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 132.0 :y 140.0 :z 243.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 132.0 :y 140.0 :z 241.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) - :env-color (new 'static 'vector :x 186.0 :y 148.0 :z 164.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 32.0 :y 48.0 :z 160.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 32.0 :y 48.0 :z 150.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 32.0 :y 100.0 :z 160.0 :w 255.0) - ) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) + :env-color + (new 'static 'vector :x 186.0 :y 148.0 :z 164.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 132.0 :y 140.0 :z 227.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 132.0 :y 140.0 :z 243.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 132.0 :y 140.0 :z 241.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) + :env-color + (new 'static 'vector :x 186.0 :y 148.0 :z 164.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 32.0 :y 48.0 :z 160.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 32.0 :y 48.0 :z 150.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 32.0 :y 100.0 :z 160.0 :w 255.0))))) (define *village2-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 75.0 :y 82.0 :z 96.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 100.0 :y 102.0 :z 116.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 102.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 112.0 :y 114.0 :z 132.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 100.0 :y 102.0 :z 116.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 75.0 :y 82.0 :z 96.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 27.5 :y 40.0 :z 52.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 10.0 :y 23.0 :z 28.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 5.0 :y 35.0 :z 35.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 75.0 :y 82.0 :z 96.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 100.0 :y 102.0 :z 116.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 102.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 112.0 :y 114.0 :z 132.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 100.0 :y 102.0 :z 116.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 75.0 :y 82.0 :z 96.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 27.5 :y 40.0 :z 52.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 10.0 :y 23.0 :z 28.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 5.0 :y 35.0 :z 35.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1843200.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0))))) (define *village2-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.793 :y 0.793 :z 0.793 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) - :shadow (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.173 :y 0.259 :z 0.432 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.463 :y 0.412 :z 0.55 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) - :lgt-color (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) - :lgt-color (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.793 :y 0.793 :z 0.793 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) + :shadow + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.173 :y 0.259 :z 0.432 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.463 :y 0.412 :z 0.55 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) + :lgt-color + (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) + :lgt-color + (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *village2-mood-lights-table* data))) @@ -1349,121 +1632,185 @@ (update-mood-shadow-direction (-> *village2-mood-lights-table* data 3)) (define *village2-mood-sun-table* - (new 'static 'mood-sun-table - :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 128.0 :y 133.0 :z 194.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :y 32.0 :z 76.0 :w 255.0) - ) - (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) - (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 17.0 :y 76.0 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 132.0 :y 131.0 :z 160.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 128.0 :y 126.0 :z 192.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 153.0 :y 141.0 :z 192.0 :w 255.0) - ) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 128.0 :y 133.0 :z 194.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :y 32.0 :z 76.0 :w 255.0)) + (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) + (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 17.0 :y 76.0 :z 96.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 132.0 :y 131.0 :z 160.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 128.0 :y 126.0 :z 192.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 153.0 :y 141.0 :z 192.0 :w 255.0))))) (define *swamp-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 22.0 :y 89.0 :z 101.0 :w 128.0) - :fog-dists (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 32.0 :y 105.0 :z 116.0 :w 128.0) - :fog-dists (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 36.0 :y 118.0 :z 130.0 :w 128.0) - :fog-dists (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 32.0 :y 105.0 :z 116.0 :w 128.0) - :fog-dists (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 22.0 :y 89.0 :z 101.0 :w 128.0) - :fog-dists (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 20.0 :y 60.0 :z 70.0 :w 128.0) - :fog-dists (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 12.0 :y 42.0 :z 60.0 :w 128.0) - :fog-dists (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 17.0 :y 76.0 :z 86.0 :w 128.0) - :fog-dists (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 22.0 :y 89.0 :z 101.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 32.0 :y 105.0 :z 116.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 36.0 :y 118.0 :z 130.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 32.0 :y 105.0 :z 116.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 22.0 :y 89.0 :z 101.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 20.0 :y 60.0 :z 70.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 12.0 :y 42.0 :z 60.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 17.0 :y 76.0 :z 86.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 20480.0 :y 783360.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0))))) (define *swamp-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.825 :y 0.825 :z 0.825 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) - :shadow (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.173 :y 0.259 :z 0.519 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.412 :y 0.463 :z 0.55 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.7094065 :y 0.57357645 :z -0.40957603) - :lgt-color (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :x 0.7094065 :y 0.57357645 :z -0.40957603) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.7094065 :y 0.57357645 :z 0.40957603) - :lgt-color (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :x -0.7094065 :y 0.57357645 :z 0.40957603) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.825 :y 0.825 :z 0.825 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) + :shadow + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.173 :y 0.259 :z 0.519 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.412 :y 0.463 :z 0.55 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.7094065 :y 0.57357645 :z -0.40957603) + :lgt-color + (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :x 0.7094065 :y 0.57357645 :z -0.40957603)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.7094065 :y 0.57357645 :z 0.40957603) + :lgt-color + (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :x -0.7094065 :y 0.57357645 :z 0.40957603)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *swamp-mood-lights-table* data))) @@ -1474,193 +1821,286 @@ (update-mood-shadow-direction (-> *swamp-mood-lights-table* data 3)) (define *swamp-mood-sun-table* - (new 'static 'mood-sun-table - :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 24.0 :y 133.0 :z 243.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :y 32.0 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) - (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 17.0 :y 119.0 :z 143.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 132.0 :y 131.0 :z 200.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 87.0 :y 126.0 :z 227.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 153.0 :y 141.0 :z 240.0 :w 255.0) - ) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 24.0 :y 133.0 :z 243.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :y 32.0 :z 96.0 :w 255.0)) + (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) + (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 17.0 :y 119.0 :z 143.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 132.0 :y 131.0 :z 200.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 87.0 :y 126.0 :z 227.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 153.0 :y 141.0 :z 240.0 :w 255.0))))) (define *sunken-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 16.512 :y 26.112 :z 54.912 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1351680.0 :z 255.0) - :erase-color (new 'static 'vector :x 16.512 :y 26.112 :z 54.912 :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 4.096 :y 15.744 :z 54.912 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1351680.0 :z 255.0) - :erase-color (new 'static 'vector :x 4.096 :y 15.744 :z 54.912 :w 128.0) - ) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 16.512 :y 26.112 :z 54.912 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1351680.0 :z 255.0) + :erase-color + (new 'static 'vector :x 16.512 :y 26.112 :z 54.912 :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 4.096 :y 15.744 :z 54.912 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1351680.0 :z 255.0) + :erase-color + (new 'static 'vector :x 4.096 :y 15.744 :z 54.912 :w 128.0)) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog)))) (define *sunken-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :y 1.0) - :lgt-color (new 'static 'vector :x 0.265 :y 0.387 :z 0.509 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y 1.0) - :lgt-color (new 'static 'vector :x 0.172 :y 0.185 :z 0.298 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.463 :y 0.412 :z 0.55 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y 1.0) + :lgt-color + (new 'static 'vector :x 0.265 :y 0.387 :z 0.509 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y 1.0) + :lgt-color + (new 'static 'vector :x 0.172 :y 0.185 :z 0.298 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.463 :y 0.412 :z 0.55 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *sunken-mood-lights-table* data))) (update-mood-shadow-direction (-> *sunken-mood-lights-table* data 1)) (define *sunken-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 127.5 :y 191.25 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 76.5 :y 102.0 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 127.5 :y 191.25 :z 255.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 76.5 :y 102.0 :z 255.0 :w 255.0)) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun)))) (define *rolling-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 42.0 :y 50.0 :z 68.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 94.0 :y 106.0 :z 126.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 104.0 :y 116.0 :z 136.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 94.0 :y 106.0 :z 126.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 42.0 :y 50.0 :z 68.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 17.0 :y 26.0 :z 43.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 42.0 :y 50.0 :z 68.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 94.0 :y 106.0 :z 126.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 104.0 :y 116.0 :z 136.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 94.0 :y 106.0 :z 126.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 42.0 :y 50.0 :z 68.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 17.0 :y 26.0 :z 43.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0))))) (define *rolling-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) - :lgt-color (new 'static 'vector :x 0.922 :y 0.905 :z 0.873 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.346 :y 0.359 :z 0.384 :w 1.0) - :shadow (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.24321035 :y 0.90767336 :z -0.34202015) - :lgt-color (new 'static 'vector :x 0.914 :y 0.898 :z 0.866 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.346 :y 0.359 :z 0.384 :w 1.0) - :shadow (new 'static 'vector :x -0.24321035 :y 0.90767336 :z -0.34202015) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.09 :y 0.135 :z 0.225 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.398 :y 0.398 :z 0.574 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.6262 :y 0.7098 :z 0.3222) - :lgt-color (new 'static 'vector :x 0.0464 :y 0.1344 :z 0.1254 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.398 :y 0.398 :z 0.574 :w 1.0) - :shadow (new 'static 'vector :x 0.6262 :y 0.7098 :z 0.3222) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) + :lgt-color + (new 'static 'vector :x 0.922 :y 0.905 :z 0.873 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.346 :y 0.359 :z 0.384 :w 1.0) + :shadow + (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.24321035 :y 0.90767336 :z -0.34202015) + :lgt-color + (new 'static 'vector :x 0.914 :y 0.898 :z 0.866 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.346 :y 0.359 :z 0.384 :w 1.0) + :shadow + (new 'static 'vector :x -0.24321035 :y 0.90767336 :z -0.34202015)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.09 :y 0.135 :z 0.225 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.398 :y 0.398 :z 0.574 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.6262 :y 0.7098 :z 0.3222) + :lgt-color + (new 'static 'vector :x 0.0464 :y 0.1344 :z 0.1254 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.398 :y 0.398 :z 0.574 :w 1.0) + :shadow + (new 'static 'vector :x 0.6262 :y 0.7098 :z 0.3222)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *rolling-mood-lights-table* data))) @@ -1671,126 +2111,194 @@ (update-mood-shadow-direction (-> *rolling-mood-lights-table* data 3)) (define *rolling-mood-sun-table* - (new 'static 'mood-sun-table - :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 128.0 :y 133.0 :z 194.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :y 32.0 :z 76.0 :w 255.0) - ) - (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) - (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 17.0 :y 76.0 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 132.0 :y 131.0 :z 160.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 128.0 :y 126.0 :z 192.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 153.0 :y 141.0 :z 192.0 :w 255.0) - ) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 128.0 :y 133.0 :z 194.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :y 32.0 :z 76.0 :w 255.0)) + (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) + (new 'static 'mood-sun :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 17.0 :y 76.0 :z 96.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 132.0 :y 131.0 :z 160.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 128.0 :y 126.0 :z 192.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 153.0 :y 141.0 :z 192.0 :w 255.0))))) (define *firecanyon-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) - :fog-dists (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) - :fog-dists (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) - :fog-dists (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) - :fog-dists (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) - :fog-dists (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 140.0 :y 64.5 :z 60.0 :w 128.0) - :fog-dists (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 128.0 :y 44.0 :z 40.0 :w 128.0) - :fog-dists (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 140.0 :y 50.0 :z 60.0 :w 128.0) - :fog-dists (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 180.0 :y 113.0 :z 80.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 140.0 :y 64.5 :z 60.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 128.0 :y 44.0 :z 40.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 140.0 :y 50.0 :z 60.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 131072.0 :y 2048000.0 :z 255.0 :w 119.0) + :erase-color + (new 'static 'vector :w 128.0))))) (define *firecanyon-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.0278 :y 0.6578 :z 0.7526) - :lgt-color (new 'static 'vector :x 1.0979 :y 1.0567 :z 0.4653 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.574 :y 0.32 :z 0.487 :w 1.0) - :shadow (new 'static 'vector :x -0.0278 :y 0.6578 :z 0.7526) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.25881904 :y 0.9659258) - :lgt-color (new 'static 'vector :x 1.644 :y 1.598 :z 1.438 :w 128.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.368 :y 0.368 :z 0.4 :w 1.0) - :shadow (new 'static 'vector :x -0.25881904 :y 0.9659258) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.0353 :y 0.8338 :z -0.5508 :w 1.0) - :lgt-color (new 'static 'vector :x 1.1419 :y 0.8887 :z 0.3513 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.347 :y 0.362 :z 0.487 :w 1.0) - :shadow (new 'static 'vector :x -0.0353 :y 0.8338 :z -0.5508 :w 1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365 :y 0.4829 :z 0.2588) - :lgt-color (new 'static 'vector :x 0.1824 :y 0.2574 :z 0.6964 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.434 :y 0.423 :z 0.625 :w 1.0) - :shadow (new 'static 'vector :x 0.8365 :y 0.4829 :z 0.2588) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.0278 :y 0.6578 :z 0.7526) + :lgt-color + (new 'static 'vector :x 1.0979 :y 1.0567 :z 0.4653 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.574 :y 0.32 :z 0.487 :w 1.0) + :shadow + (new 'static 'vector :x -0.0278 :y 0.6578 :z 0.7526)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.25881904 :y 0.9659258) + :lgt-color + (new 'static 'vector :x 1.644 :y 1.598 :z 1.438 :w 128.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.368 :y 0.368 :z 0.4 :w 1.0) + :shadow + (new 'static 'vector :x -0.25881904 :y 0.9659258)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.0353 :y 0.8338 :z -0.5508 :w 1.0) + :lgt-color + (new 'static 'vector :x 1.1419 :y 0.8887 :z 0.3513 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.347 :y 0.362 :z 0.487 :w 1.0) + :shadow + (new 'static 'vector :x -0.0353 :y 0.8338 :z -0.5508 :w 1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365 :y 0.4829 :z 0.2588) + :lgt-color + (new 'static 'vector :x 0.1824 :y 0.2574 :z 0.6964 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.434 :y 0.423 :z 0.625 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365 :y 0.4829 :z 0.2588)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *firecanyon-mood-lights-table* data))) @@ -1801,138 +2309,217 @@ (update-mood-shadow-direction (-> *firecanyon-mood-lights-table* data 3)) (define *firecanyon-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 200.0 :y 200.0 :z 128.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 200.0 :y 200.0 :z 200.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 200.0 :y 200.0 :z 200.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 196.0 :z 64.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 96.0 :y 96.0 :z 150.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 64.0 :y 64.0 :z 150.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 96.0 :y 200.0 :z 150.0 :w 255.0) - ) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 200.0 :y 200.0 :z 128.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 200.0 :y 200.0 :z 200.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 200.0 :y 200.0 :z 200.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 196.0 :z 64.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 96.0 :y 96.0 :z 150.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 64.0 :y 64.0 :z 150.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 96.0 :y 200.0 :z 150.0 :w 255.0))))) (define *ogre-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 64.0 :y 68.0 :z 68.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 64.0 :y 68.0 :z 68.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 18.0 :z 18.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 64.0 :y 68.0 :z 68.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 64.0 :y 68.0 :z 68.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 18.0 :z 18.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0))))) (define *ogre-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) - :lgt-color (new 'static 'vector :x 1.154 :y 1.132 :z 1.093 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.346 :y 0.359 :z 0.384 :w 1.0) - :shadow (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.24321035 :y 0.90767336 :z -0.34202015) - :lgt-color (new 'static 'vector :x 1.144 :y 1.124 :z 0.939 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.346 :y 0.359 :z 0.384 :w 1.0) - :shadow (new 'static 'vector :x -0.24321035 :y 0.90767336 :z -0.34202015) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.113 :y 0.169 :z 0.282 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.398 :y 0.398 :z 0.574 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.6262 :y 0.7098 :z 0.3222) - :lgt-color (new 'static 'vector :x 0.058 :y 0.168 :z 0.157 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.398 :y 0.398 :z 0.574 :w 1.0) - :shadow (new 'static 'vector :x 0.6262 :y 0.7098 :z 0.3222) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) - :lgt-color (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) - :lgt-color (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677) + :lgt-color + (new 'static 'vector :x 1.154 :y 1.132 :z 1.093 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.346 :y 0.359 :z 0.384 :w 1.0) + :shadow + (new 'static 'vector :x -0.1830127 :y 0.6830127 :z 0.70710677)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.24321035 :y 0.90767336 :z -0.34202015) + :lgt-color + (new 'static 'vector :x 1.144 :y 1.124 :z 0.939 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.346 :y 0.359 :z 0.384 :w 1.0) + :shadow + (new 'static 'vector :x -0.24321035 :y 0.90767336 :z -0.34202015)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.113 :y 0.169 :z 0.282 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.398 :y 0.398 :z 0.574 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.6262 :y 0.7098 :z 0.3222) + :lgt-color + (new 'static 'vector :x 0.058 :y 0.168 :z 0.157 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.398 :y 0.398 :z 0.574 :w 1.0) + :shadow + (new 'static 'vector :x 0.6262 :y 0.7098 :z 0.3222)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) + :lgt-color + (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) + :lgt-color + (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065)) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *ogre-mood-lights-table* data))) @@ -1947,54 +2534,87 @@ (update-mood-shadow-direction (-> *ogre-mood-lights-table* data 5)) (define *ogre2-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.793 :y 0.793 :z 0.793 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) - :shadow (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.793 :y 0.793 :z 0.793 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) - :shadow (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.173 :y 0.259 :z 0.432 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.463 :y 0.412 :z 0.55 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - :lgt-color (new 'static 'vector :x 0.173 :y 0.259 :z 0.432 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.463 :y 0.412 :z 0.55 :w 1.0) - :shadow (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) - :lgt-color (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) - :lgt-color (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.793 :y 0.793 :z 0.793 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) + :shadow + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.793 :y 0.793 :z 0.793 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.374 :y 0.374 :z 0.374 :w 1.0) + :shadow + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.173 :y 0.259 :z 0.432 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.463 :y 0.412 :z 0.55 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904) + :lgt-color + (new 'static 'vector :x 0.173 :y 0.259 :z 0.432 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.463 :y 0.412 :z 0.55 :w 1.0) + :shadow + (new 'static 'vector :x 0.8365163 :y 0.4829629 :z 0.25881904)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065) + :lgt-color + (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :x 0.40957603 :y 0.57357645 :z 0.7094065)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065) + :lgt-color + (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :x -0.40957603 :y 0.57357645 :z -0.7094065)) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *ogre2-mood-lights-table* data))) @@ -2009,309 +2629,464 @@ (update-mood-shadow-direction (-> *ogre2-mood-lights-table* data 5)) (define *ogre3-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 255.0 :y 96.0 :w 128.0) - :fog-dists (new 'static 'vector :x 393216.0 :y 7458816.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 255.0 :y 96.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 393216.0 :y 7458816.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog)))) (define *ogre3-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :y 0.666 :z 0.745) - :lgt-color (new 'static 'vector :x 0.6 :y 0.51 :z 0.51 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.313 :y 0.375 :z 0.375 :w 1.0) - :shadow (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y 0.666 :z 0.745) + :lgt-color + (new 'static 'vector :x 0.6 :y 0.51 :z 0.51 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.313 :y 0.375 :z 0.375 :w 1.0) + :shadow + (new 'static 'vector :x -0.25 :y 0.9330127 :z 0.25881904)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (update-mood-shadow-direction (the-as mood-lights (-> *ogre3-mood-lights-table* data))) (define *village3-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 64.0 :y 68.0 :z 68.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 64.0 :y 68.0 :z 68.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 18.0 :z 18.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 64.0 :y 68.0 :z 68.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 74.0 :y 86.0 :z 106.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 64.0 :y 68.0 :z 68.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 12.0 :z 18.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 18.0 :z 18.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2236416.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0))))) (define *village3-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.067 :y 0.25 :z 0.966) - :lgt-color (new 'static 'vector :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.449 :y 0.35 :z 0.599 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.259 :y 0.966) - :lgt-color (new 'static 'vector :x 0.66 :y 0.436 :z 0.291 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.358 :y 0.575 :z 0.716 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x -0.067 :y 0.25 :z -0.966) - :lgt-color (new 'static 'vector :x 1.056 :y 0.747 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.383 :y 0.366 :z 0.599 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :x 0.866 :y 0.5) - :lgt-color (new 'static 'vector :x 0.067 :y 0.089 :z 0.333 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.304 :y 0.409 :z 0.76 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.067 :y 0.25 :z 0.966) + :lgt-color + (new 'static 'vector :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.449 :y 0.35 :z 0.599 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.259 :y 0.966) + :lgt-color + (new 'static 'vector :x 0.66 :y 0.436 :z 0.291 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.358 :y 0.575 :z 0.716 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x -0.067 :y 0.25 :z -0.966) + :lgt-color + (new 'static 'vector :x 1.056 :y 0.747 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.383 :y 0.366 :z 0.599 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :x 0.866 :y 0.5) + :lgt-color + (new 'static 'vector :x 0.067 :y 0.089 :z 0.333 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.304 :y 0.409 :z 0.76 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (define *lavatube-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 255.0 :y 96.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 1851392.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 255.0 :y 96.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 1851392.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog)))) (define *lavatube-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :y 1.0) - :lgt-color (new 'static 'vector :x 0.19 :y 0.128 :z 0.128 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.31 :y 0.372 :z 0.372 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights - :direction (new 'static 'vector :y -1.0) - :lgt-color (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y 1.0) + :lgt-color + (new 'static 'vector :x 0.19 :y 0.128 :z 0.128 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.31 :y 0.372 :z 0.372 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y -1.0) + :lgt-color + (new 'static 'vector :x 1.0 :y 0.364 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :shadow + (new 'static 'vector :y -1.0))))) (update-mood-shadow-direction (the-as mood-lights (-> *lavatube-mood-lights-table* data))) (define *lavatube-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 175.0 :z 128.0 :w 255.0) - ) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 175.0 :z 128.0 :w 255.0)) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun)))) (define *finalboss-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 109.0 :y 64.0 :z 160.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) - :env-color (new 'static 'vector :x 255.0 :y 196.0 :z 64.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 96.0 :y 96.0 :z 196.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 64.0 :y 64.0 :z 150.0 :w 255.0) - ) - (new 'static 'mood-sun - :sun-color (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) - :env-color (new 'static 'vector :x 64.0 :y 150.0 :z 196.0 :w 255.0) - ) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 109.0 :y 64.0 :z 160.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 128.0 :w 128.0) + :env-color + (new 'static 'vector :x 255.0 :y 196.0 :z 64.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 96.0 :y 96.0 :z 196.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 64.0 :y 64.0 :z 150.0 :w 255.0)) + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :x 255.0 :y 225.0 :z 96.0 :w 128.0) + :env-color + (new 'static 'vector :x 64.0 :y 150.0 :z 196.0 :w 255.0))))) (define *finalboss-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 128.0 :y 180.0 :z 243.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 45.0 :z 96.0 :w 128.0) - :fog-dists (new 'static 'vector :x 909312.0 :y 1912832.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :x 16.0 :y 32.0 :z 100.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 51.0) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog - :fog-color (new 'static 'vector :y 80.0 :z 64.0 :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - ) - ) - ) - -(update-mood-erase-color - (the-as mood-fog (-> *finalboss-mood-fog-table* data)) - (the-as mood-lights (-> *village1-mood-lights-table* data)) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 150.0 :y 165.0 :z 220.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 128.0 :y 180.0 :z 243.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 45.0 :z 96.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 909312.0 :y 1912832.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 160.0 :y 150.0 :z 200.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :x 16.0 :y 32.0 :z 100.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 51.0) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :y 80.0 :z 64.0 :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 22528000.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0))))) + +(update-mood-erase-color (the-as mood-fog (-> *finalboss-mood-fog-table* data)) + (the-as mood-lights (-> *village1-mood-lights-table* data))) (update-mood-erase-color (-> *finalboss-mood-fog-table* data 1) (-> *village1-mood-lights-table* data 1)) @@ -2325,123 +3100,124 @@ (update-mood-erase-color (-> *finalboss-mood-fog-table* data 7) (-> *village1-mood-lights-table* data 7)) -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 5 erase-color) - (-> *finalboss-mood-fog-table* data 4 erase-color) - (-> *finalboss-mood-fog-table* data 6 erase-color) - 0.5 - ) - -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 0 erase-color) - (-> *finalboss-mood-fog-table* data 0 erase-color) - (the-as vector (-> *finalboss-mood-fog-table* data)) - 0.41 - ) - -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 1 erase-color) - (-> *finalboss-mood-fog-table* data 1 erase-color) - (the-as vector (-> *finalboss-mood-fog-table* data 1)) - 0.41 - ) - -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 2 erase-color) - (-> *finalboss-mood-fog-table* data 2 erase-color) - (the-as vector (-> *finalboss-mood-fog-table* data 2)) - 0.41 - ) - -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 3 erase-color) - (-> *finalboss-mood-fog-table* data 3 erase-color) - (the-as vector (-> *finalboss-mood-fog-table* data 3)) - 1.0 - ) - -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 4 erase-color) - (-> *finalboss-mood-fog-table* data 4 erase-color) - (the-as vector (-> *finalboss-mood-fog-table* data 4)) - 0.41 - ) - -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 5 erase-color) - (-> *finalboss-mood-fog-table* data 5 erase-color) - (the-as vector (-> *finalboss-mood-fog-table* data 5)) - 0.41 - ) - -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 6 erase-color) - (-> *finalboss-mood-fog-table* data 6 erase-color) - (the-as vector (-> *finalboss-mood-fog-table* data 6)) - 0.41 - ) - -(vector4-lerp! - (-> *finalboss-mood-fog-table* data 7 erase-color) - (-> *finalboss-mood-fog-table* data 7 erase-color) - (the-as vector (-> *finalboss-mood-fog-table* data 7)) - 0.41 - ) +(vector4-lerp! (-> *finalboss-mood-fog-table* data 5 erase-color) + (-> *finalboss-mood-fog-table* data 4 erase-color) + (-> *finalboss-mood-fog-table* data 6 erase-color) + 0.5) + +(vector4-lerp! (-> *finalboss-mood-fog-table* data 0 erase-color) + (-> *finalboss-mood-fog-table* data 0 erase-color) + (the-as vector (-> *finalboss-mood-fog-table* data)) + 0.41) + +(vector4-lerp! (-> *finalboss-mood-fog-table* data 1 erase-color) + (-> *finalboss-mood-fog-table* data 1 erase-color) + (the-as vector (-> *finalboss-mood-fog-table* data 1)) + 0.41) + +(vector4-lerp! (-> *finalboss-mood-fog-table* data 2 erase-color) + (-> *finalboss-mood-fog-table* data 2 erase-color) + (the-as vector (-> *finalboss-mood-fog-table* data 2)) + 0.41) + +(vector4-lerp! (-> *finalboss-mood-fog-table* data 3 erase-color) + (-> *finalboss-mood-fog-table* data 3 erase-color) + (the-as vector (-> *finalboss-mood-fog-table* data 3)) + 1.0) + +(vector4-lerp! (-> *finalboss-mood-fog-table* data 4 erase-color) + (-> *finalboss-mood-fog-table* data 4 erase-color) + (the-as vector (-> *finalboss-mood-fog-table* data 4)) + 0.41) + +(vector4-lerp! (-> *finalboss-mood-fog-table* data 5 erase-color) + (-> *finalboss-mood-fog-table* data 5 erase-color) + (the-as vector (-> *finalboss-mood-fog-table* data 5)) + 0.41) + +(vector4-lerp! (-> *finalboss-mood-fog-table* data 6 erase-color) + (-> *finalboss-mood-fog-table* data 6 erase-color) + (the-as vector (-> *finalboss-mood-fog-table* data 6)) + 0.41) + +(vector4-lerp! (-> *finalboss-mood-fog-table* data 7 erase-color) + (-> *finalboss-mood-fog-table* data 7 erase-color) + (the-as vector (-> *finalboss-mood-fog-table* data 7)) + 0.41) (define *citadel-mood-fog-table* - (new 'static 'mood-fog-table :data (new 'static 'inline-array mood-fog 8 - (new 'static 'mood-fog - :fog-color (new 'static 'vector :w 128.0) - :fog-dists (new 'static 'vector :x 262144.0 :y 2252800.0 :z 255.0 :w 25.5) - :erase-color (new 'static 'vector :w 128.0) - ) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - (new 'static 'mood-fog) - ) - ) - ) + (new 'static + 'mood-fog-table + :data + (new 'static + 'inline-array + mood-fog + 8 + (new 'static + 'mood-fog + :fog-color + (new 'static 'vector :w 128.0) + :fog-dists + (new 'static 'vector :x 262144.0 :y 2252800.0 :z 255.0 :w 25.5) + :erase-color + (new 'static 'vector :w 128.0)) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog) + (new 'static 'mood-fog)))) (define *citadel-mood-lights-table* - (new 'static 'mood-lights-table :data (new 'static 'inline-array mood-lights 8 - (new 'static 'mood-lights - :direction (new 'static 'vector :y 1.0) - :lgt-color (new 'static 'vector :x 0.75 :y 0.725 :z 0.5 :w 1.0) - :prt-color (new 'static 'vector :w 1.0) - :amb-color (new 'static 'vector :x 0.3 :y 0.3 :z 0.3 :w 1.0) - :shadow (new 'static 'vector :y -1.0) - ) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - (new 'static 'mood-lights) - ) - ) - ) + (new 'static + 'mood-lights-table + :data + (new 'static + 'inline-array + mood-lights + 8 + (new 'static + 'mood-lights + :direction + (new 'static 'vector :y 1.0) + :lgt-color + (new 'static 'vector :x 0.75 :y 0.725 :z 0.5 :w 1.0) + :prt-color + (new 'static 'vector :w 1.0) + :amb-color + (new 'static 'vector :x 0.3 :y 0.3 :z 0.3 :w 1.0) + :shadow + (new 'static 'vector :y -1.0)) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights) + (new 'static 'mood-lights)))) (define *citadel-mood-sun-table* - (new 'static 'mood-sun-table :data (new 'static 'inline-array mood-sun 8 - (new 'static 'mood-sun - :sun-color (new 'static 'vector :w 128.0) - :env-color (new 'static 'vector :x 96.0 :y 96.0 :z 96.0 :w 255.0) - ) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - (new 'static 'mood-sun) - ) - ) - ) + (new 'static + 'mood-sun-table + :data + (new 'static + 'inline-array + mood-sun + 8 + (new 'static + 'mood-sun + :sun-color + (new 'static 'vector :w 128.0) + :env-color + (new 'static 'vector :x 96.0 :y 96.0 :z 96.0 :w 255.0)) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun) + (new 'static 'mood-sun)))) (define *default-mood* (new 'global 'mood-context)) @@ -2854,7 +3630,3 @@ (set! (-> *citadel-mood* sky-texture-interp) *default-interp-table*) (set! (-> *citadel-mood* num-stars) 0.0) - - - - diff --git a/goal_src/jak1/engine/gfx/mood/mood.gc b/goal_src/jak1/engine/gfx/mood/mood.gc index 790aaf12ad..00331a0139 100644 --- a/goal_src/jak1/engine/gfx/mood/mood.gc +++ b/goal_src/jak1/engine/gfx/mood/mood.gc @@ -1,41 +1,31 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/game-info.gc") (require "engine/gfx/mood/time-of-day-h.gc") (require "engine/gfx/foreground/bones-h.gc") (require "engine/gfx/mood/mood-tables.gc") -;; name: mood.gc -;; name in dgo: mood -;; dgos: GAME, ENGINE ;; note: modified for high fps ;; DECOMP BEGINS (defun clear-mood-times ((arg0 mood-context)) (dotimes (v1-0 8) - (set! (-> arg0 times v1-0 w) 0.0) - ) - #f - ) + (set! (-> arg0 times v1-0 w) 0.0)) + #f) (defun update-light-kit ((arg0 light-group) (arg1 light) (arg2 float)) (set! (-> arg0 ambi color quad) (-> arg1 color quad)) (set! (-> arg0 ambi levels x) (* (-> arg1 levels x) arg2)) - (none) - ) + (none)) (defun set-target-light-index ((arg0 int)) (when *target* (set! (-> *target* draw light-index) (the-as uint arg0)) (when (-> *target* sidekick) (set! (-> *target* sidekick 0 draw light-index) (the-as uint arg0)) - arg0 - ) - ) - ) + arg0))) (defun update-mood-itimes ((arg0 mood-context)) (local-vars @@ -58,19 +48,12 @@ (t2-0 uint128) (t2-1 uint128) (t3-0 uint128) - (t3-1 uint128) - ) - ;; og:preserve-this pc mood debug - (with-pc - (case *mood-override-debug* - (('copy #t) - (dotimes (mti 8) - (set! (-> arg0 times mti w) (-> *mood-override-table* mti))) - ) - (('mult) - (dotimes (mti 8) - (*! (-> arg0 times mti w) (-> *mood-override-table* mti))) - ))) + (t3-1 uint128)) + ;; og:preserve-this pc mood debug + (with-pc + (case *mood-override-debug* + (('copy #t) (dotimes (mti 8) (set! (-> arg0 times mti w) (-> *mood-override-table* mti)))) + (('mult) (dotimes (mti 8) (*! (-> arg0 times mti w) (-> *mood-override-table* mti)))))) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) @@ -78,8 +61,7 @@ (vf5 :class vf) (vf6 :class vf) (vf7 :class vf) - (vf8 :class vf) - ) + (vf8 :class vf)) (nop!) (nop!) (.lvf vf1 (&-> arg0 times 0 quad)) @@ -148,33 +130,24 @@ (nop!) (set! (-> arg0 itimes 3 quad) a1-3) 0 - (none) - ) - ) + (none))) (defun update-mood-prt-color ((arg0 mood-context)) (let* ((v1-0 (-> arg0 light-group)) (s4-0 (-> v1-0 0 ambi color)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (vector4-lerp! s5-0 (-> v1-0 0 dir0 color) (-> v1-0 0 dir1 color) (-> v1-0 0 dir1 levels x)) (set! (-> arg0 current-prt-color x) (* 0.5 (+ (-> s4-0 x) (* 0.5 (+ (-> s4-0 x) (-> s5-0 x)))))) (set! (-> arg0 current-prt-color y) (* 0.5 (+ (-> s4-0 y) (* 0.5 (+ (-> s4-0 y) (-> s5-0 y)))))) (set! (-> arg0 current-prt-color z) (* 0.5 (+ (-> s4-0 z) (* 0.5 (+ (-> s4-0 z) (-> s5-0 z)))))) - (set! (-> arg0 current-prt-color w) (* 0.5 (+ (-> s4-0 w) (* 0.5 (+ (-> s4-0 w) (-> s5-0 w)))))) - ) - (let ((v0-1 (-> arg0 current-shadow-color))) - (set! (-> v0-1 quad) (-> arg0 current-prt-color quad)) - v0-1 - ) - ) + (set! (-> arg0 current-prt-color w) (* 0.5 (+ (-> s4-0 w) (* 0.5 (+ (-> s4-0 w) (-> s5-0 w))))))) + (let ((v0-1 (-> arg0 current-shadow-color))) (set! (-> v0-1 quad) (-> arg0 current-prt-color quad)) v0-1)) (defun update-mood-palette ((arg0 mood-context) (arg1 float) (arg2 int)) (let ((v1-0 (-> arg0 light-group))) (set! (-> v1-0 0 dir0 levels x) 0.0) (set! (-> v1-0 0 dir1 levels x) 0.0) - (set! (-> v1-0 0 dir2 levels x) 0.0) - ) + (set! (-> v1-0 0 dir2 levels x) 0.0)) 0 0 0.0 @@ -186,8 +159,7 @@ (v1-7 (-> arg0 palette-interp hour (- v1-3 (* 24 a0-2)))) (s3-0 (-> v1-7 snapshot1)) (s2-0 (-> v1-7 snapshot2)) - (f30-0 (+ (* f1-3 (-> v1-7 morph-start)) (* f0-7 (-> v1-7 morph-end)))) - ) + (f30-0 (+ (* f1-3 (-> v1-7 morph-start)) (* f0-7 (-> v1-7 morph-end))))) (cond ((= s3-0 s2-0) (let ((v1-12 (-> arg0 mood-lights-table data s3-0))) @@ -200,59 +172,40 @@ (set! (-> s4-0 0 dir0 direction quad) (-> v1-12 direction quad)) (set! (-> s4-0 0 dir0 color quad) (-> v1-12 lgt-color quad)) (set! (-> s4-0 0 dir0 levels x) 1.0) - (set! (-> s4-0 0 dir0 levels y) f0-14) - ) - ) + (set! (-> s4-0 0 dir0 levels y) f0-14))) (set! (-> *time-of-day-context* light-masks-0 arg2) (the-as uint (ash 1 s3-0))) (set! (-> *time-of-day-context* light-masks-1 arg2) (the-as uint 0)) - (set! (-> *time-of-day-context* light-interp arg2) 0.0) - ) + (set! (-> *time-of-day-context* light-interp arg2) 0.0)) (else - (let ((s0-0 (-> arg0 mood-lights-table data s3-0)) - (s1-0 (-> arg0 mood-lights-table data s2-0)) - ) - (let ((v1-29 (the int (+ 0.5 (* 64.0 f30-0))))) - (set! (-> arg0 times s3-0 w) (* 0.015625 (the float (- 64 v1-29)))) - (set! (-> arg0 times s2-0 w) (* 0.015625 (the float v1-29))) - ) - (vector4-lerp! (-> arg0 current-prt-color) (-> s0-0 prt-color) (-> s1-0 prt-color) f30-0) - (vector4-lerp! (-> s4-0 0 ambi color) (-> s0-0 amb-color) (-> s1-0 amb-color) f30-0) - (set! (-> s4-0 0 ambi levels x) 1.0) - (vector4-lerp! (-> arg0 current-shadow) (-> s0-0 shadow) (-> s1-0 shadow) f30-0) - (let ((f0-28 - (* (+ (* 2.0 (-> s0-0 lgt-color x)) (* 4.0 (-> s0-0 lgt-color y)) (-> s0-0 lgt-color z)) (- 1.0 f30-0)) - ) - (f1-26 (* (+ (* 2.0 (-> s1-0 lgt-color x)) (* 4.0 (-> s1-0 lgt-color y)) (-> s1-0 lgt-color z)) f30-0)) - ) - (set! (-> s4-0 0 dir0 direction quad) (-> s0-0 direction quad)) - (set! (-> s4-0 0 dir0 color quad) (-> s0-0 lgt-color quad)) - (set! (-> s4-0 0 dir0 levels x) (- 1.0 f30-0)) - (set! (-> s4-0 0 dir0 levels y) f0-28) - (set! (-> s4-0 0 dir1 direction quad) (-> s1-0 direction quad)) - (set! (-> s4-0 0 dir1 color quad) (-> s1-0 lgt-color quad)) - (set! (-> s4-0 0 dir1 levels x) f30-0) - (set! (-> s4-0 0 dir1 levels y) f1-26) - ) - ) - (set! (-> *time-of-day-context* light-masks-0 arg2) (the-as uint (ash 1 s3-0))) - (set! (-> *time-of-day-context* light-masks-1 arg2) (the-as uint (ash 1 s2-0))) - (set! (-> *time-of-day-context* light-interp arg2) f30-0) - ) - ) - (if (and (= (-> arg0 current-prt-color x) 0.0) - (= (-> arg0 current-prt-color y) 0.0) - (= (-> arg0 current-prt-color z) 0.0) - ) - (update-mood-prt-color arg0) - ) - f30-0 - ) - ) + (let ((s0-0 (-> arg0 mood-lights-table data s3-0)) + (s1-0 (-> arg0 mood-lights-table data s2-0))) + (let ((v1-29 (the int (+ 0.5 (* 64.0 f30-0))))) + (set! (-> arg0 times s3-0 w) (* 0.015625 (the float (- 64 v1-29)))) + (set! (-> arg0 times s2-0 w) (* 0.015625 (the float v1-29)))) + (vector4-lerp! (-> arg0 current-prt-color) (-> s0-0 prt-color) (-> s1-0 prt-color) f30-0) + (vector4-lerp! (-> s4-0 0 ambi color) (-> s0-0 amb-color) (-> s1-0 amb-color) f30-0) + (set! (-> s4-0 0 ambi levels x) 1.0) + (vector4-lerp! (-> arg0 current-shadow) (-> s0-0 shadow) (-> s1-0 shadow) f30-0) + (let ((f0-28 (* (+ (* 2.0 (-> s0-0 lgt-color x)) (* 4.0 (-> s0-0 lgt-color y)) (-> s0-0 lgt-color z)) (- 1.0 f30-0))) + (f1-26 (* (+ (* 2.0 (-> s1-0 lgt-color x)) (* 4.0 (-> s1-0 lgt-color y)) (-> s1-0 lgt-color z)) f30-0))) + (set! (-> s4-0 0 dir0 direction quad) (-> s0-0 direction quad)) + (set! (-> s4-0 0 dir0 color quad) (-> s0-0 lgt-color quad)) + (set! (-> s4-0 0 dir0 levels x) (- 1.0 f30-0)) + (set! (-> s4-0 0 dir0 levels y) f0-28) + (set! (-> s4-0 0 dir1 direction quad) (-> s1-0 direction quad)) + (set! (-> s4-0 0 dir1 color quad) (-> s1-0 lgt-color quad)) + (set! (-> s4-0 0 dir1 levels x) f30-0) + (set! (-> s4-0 0 dir1 levels y) f1-26))) + (set! (-> *time-of-day-context* light-masks-0 arg2) (the-as uint (ash 1 s3-0))) + (set! (-> *time-of-day-context* light-masks-1 arg2) (the-as uint (ash 1 s2-0))) + (set! (-> *time-of-day-context* light-interp arg2) f30-0))) + (if (and (= (-> arg0 current-prt-color x) 0.0) (= (-> arg0 current-prt-color y) 0.0) (= (-> arg0 current-prt-color z) 0.0)) + (update-mood-prt-color arg0)) + f30-0)) (defun update-mood-sky-texture ((arg0 mood-context) (arg1 float)) (dotimes (v1-0 8) - (set! (-> arg0 sky-times v1-0) 0.0) - ) + (set! (-> arg0 sky-times v1-0) 0.0)) 0 0 0.0 @@ -263,38 +216,26 @@ (v1-9 (-> arg0 sky-texture-interp hour (- v1-5 (* 24 a0-4)))) (s5-0 (-> v1-9 snapshot1)) (s4-0 (-> v1-9 snapshot2)) - (f30-0 (+ (* f1-3 (-> v1-9 morph-start)) (* f0-5 (-> v1-9 morph-end)))) - ) + (f30-0 (+ (* f1-3 (-> v1-9 morph-start)) (* f0-5 (-> v1-9 morph-end))))) (cond ((= s5-0 s4-0) (set! (-> arg0 sky-times s5-0) 1.0) (set! (-> arg0 current-sun sun-color quad) (-> arg0 mood-sun-table data s5-0 sun-color quad)) (let ((v0-0 (-> arg0 current-sun env-color))) (set! (-> v0-0 quad) - (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-sun-table data 0 env-color)) (* s5-0 32)))) - ) - v0-0 - ) - ) + (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-sun-table data 0 env-color)) (* s5-0 32))))) + v0-0)) (else - (set! (-> arg0 sky-times s5-0) (- 1.0 f30-0)) - (set! (-> arg0 sky-times s4-0) f30-0) - (vector4-lerp! - (the-as vector (-> arg0 current-sun)) - (the-as vector (-> arg0 mood-sun-table data s5-0)) - (the-as vector (-> arg0 mood-sun-table data s4-0)) - f30-0 - ) - (vector4-lerp! - (-> arg0 current-sun env-color) - (the-as vector (+ (the-as uint (-> arg0 mood-sun-table data 0 env-color)) (* s5-0 32))) - (the-as vector (+ (the-as uint (-> arg0 mood-sun-table data 0 env-color)) (* s4-0 32))) - f30-0 - ) - ) - ) - ) - ) + (set! (-> arg0 sky-times s5-0) (- 1.0 f30-0)) + (set! (-> arg0 sky-times s4-0) f30-0) + (vector4-lerp! (the-as vector (-> arg0 current-sun)) + (the-as vector (-> arg0 mood-sun-table data s5-0)) + (the-as vector (-> arg0 mood-sun-table data s4-0)) + f30-0) + (vector4-lerp! (-> arg0 current-sun env-color) + (the-as vector (+ (the-as uint (-> arg0 mood-sun-table data 0 env-color)) (* s5-0 32))) + (the-as vector (+ (the-as uint (-> arg0 mood-sun-table data 0 env-color)) (* s4-0 32))) + f30-0))))) (defun update-mood-fog ((arg0 mood-context) (arg1 float)) 0 @@ -310,56 +251,40 @@ (f30-0 (+ (* f1-3 (-> a2-1 morph-start)) (* f0-4 (-> a2-1 morph-end)))) (gp-0 (-> arg0 current-fog)) (s5-0 (-> arg0 mood-fog-table data a1-5)) - (s4-0 (-> arg0 mood-fog-table data v1-6)) - ) + (s4-0 (-> arg0 mood-fog-table data v1-6))) (vector4-lerp! (-> gp-0 fog-color) (-> s5-0 fog-color) (-> s4-0 fog-color) f30-0) (vector4-lerp! (-> gp-0 fog-dists) (-> s5-0 fog-dists) (-> s4-0 fog-dists) f30-0) - (vector4-lerp! (-> gp-0 erase-color) (-> s5-0 erase-color) (-> s4-0 erase-color) f30-0) - ) - ) + (vector4-lerp! (-> gp-0 erase-color) (-> s5-0 erase-color) (-> s4-0 erase-color) f30-0))) (defun update-mood-quick ((arg0 mood-context) (arg1 int) (arg2 int) (arg3 int) (arg4 int)) (let ((v1-0 (-> arg0 light-group))) (set! (-> arg0 current-fog fog-color quad) (-> arg0 mood-fog-table data arg1 fog-color quad)) (set! (-> arg0 current-fog fog-dists quad) - (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-fog-table data 0 fog-dists)) (* 48 arg1)))) - ) + (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-fog-table data 0 fog-dists)) (* 48 arg1))))) (set! (-> arg0 current-fog erase-color quad) - (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-fog-table data 0 erase-color)) (* 48 arg1)))) - ) + (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-fog-table data 0 erase-color)) (* 48 arg1))))) (set! (-> arg0 current-prt-color quad) - (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-lights-table data 0 prt-color)) (* 80 arg3)))) - ) + (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-lights-table data 0 prt-color)) (* 80 arg3))))) (set! (-> arg0 current-sun sun-color quad) (-> arg0 mood-sun-table data arg2 sun-color quad)) (set! (-> arg0 current-sun env-color quad) - (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-sun-table data 0 env-color)) (* arg2 32)))) - ) + (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-sun-table data 0 env-color)) (* arg2 32))))) (set! (-> arg0 current-shadow quad) - (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-lights-table data 0 shadow)) (* 80 arg3)))) - ) + (-> (the-as (pointer uint128) (+ (the-as uint (-> arg0 mood-lights-table data 0 shadow)) (* 80 arg3))))) (let ((a1-11 (-> arg0 mood-lights-table data arg3))) (let ((f0-3 (+ (* 2.0 (-> a1-11 lgt-color x)) (* 4.0 (-> a1-11 lgt-color y)) (-> a1-11 lgt-color z)))) (set! (-> v1-0 0 dir0 direction quad) (-> a1-11 direction quad)) (set! (-> v1-0 0 dir0 color quad) (-> a1-11 lgt-color quad)) (set! (-> v1-0 0 dir0 levels x) 1.0) - (set! (-> v1-0 0 dir0 levels y) f0-3) - ) + (set! (-> v1-0 0 dir0 levels y) f0-3)) (set! (-> v1-0 0 dir1 levels x) 0.0) (set! (-> v1-0 0 dir2 levels x) 0.0) - (set! (-> v1-0 0 ambi color quad) (-> a1-11 amb-color quad)) - ) - (set! (-> v1-0 0 ambi levels x) 1.0) - ) + (set! (-> v1-0 0 ambi color quad) (-> a1-11 amb-color quad))) + (set! (-> v1-0 0 ambi levels x) 1.0)) (set! (-> *time-of-day-context* light-masks-0 arg4) (the-as uint (ash 1 arg3))) (set! (-> *time-of-day-context* light-masks-1 arg4) (the-as uint 0)) (set! (-> *time-of-day-context* light-interp arg4) 0.0) - (if (and (= (-> arg0 current-prt-color x) 0.0) - (= (-> arg0 current-prt-color y) 0.0) - (= (-> arg0 current-prt-color z) 0.0) - ) - (update-mood-prt-color arg0) - ) - ) + (if (and (= (-> arg0 current-prt-color x) 0.0) (= (-> arg0 current-prt-color y) 0.0) (= (-> arg0 current-prt-color z) 0.0)) + (update-mood-prt-color arg0))) (defun update-mood-interp ((arg0 mood-context) (arg1 mood-context) (arg2 mood-context) (arg3 float)) (local-vars (sv-16 light)) @@ -373,8 +298,7 @@ (set! (-> arg0 current-sun env-color quad) (-> arg1 current-sun env-color quad)) (set! (-> arg0 current-shadow quad) (-> arg1 current-shadow quad)) (set! (-> arg0 current-shadow-color quad) (-> arg1 current-shadow-color quad)) - (quad-copy! (the-as pointer (-> arg0 light-group)) (the-as pointer (-> arg1 light-group)) 12) - ) + (quad-copy! (the-as pointer (-> arg0 light-group)) (the-as pointer (-> arg1 light-group)) 12)) ((= arg3 1.0) (set! (-> arg0 current-fog fog-color quad) (-> arg2 current-fog fog-color quad)) (set! (-> arg0 current-fog fog-dists quad) (-> arg2 current-fog fog-dists quad)) @@ -384,118 +308,71 @@ (set! (-> arg0 current-sun env-color quad) (-> arg2 current-sun env-color quad)) (set! (-> arg0 current-shadow quad) (-> arg2 current-shadow quad)) (set! (-> arg0 current-shadow-color quad) (-> arg2 current-shadow-color quad)) - (quad-copy! (the-as pointer (-> arg0 light-group)) (the-as pointer (-> arg2 light-group)) 12) - ) + (quad-copy! (the-as pointer (-> arg0 light-group)) (the-as pointer (-> arg2 light-group)) 12)) (else - (vector4-lerp! - (the-as vector (-> arg0 current-fog)) - (the-as vector (-> arg1 current-fog)) - (the-as vector (-> arg2 current-fog)) - arg3 - ) - (vector4-lerp! - (-> arg0 current-fog fog-dists) - (-> arg1 current-fog fog-dists) - (-> arg2 current-fog fog-dists) - arg3 - ) - (vector4-lerp! - (-> arg0 current-fog erase-color) - (-> arg1 current-fog erase-color) - (-> arg2 current-fog erase-color) - arg3 - ) - (vector4-lerp! (-> arg0 current-prt-color) (-> arg1 current-prt-color) (-> arg2 current-prt-color) arg3) - (vector4-lerp! - (the-as vector (-> arg0 current-sun)) - (the-as vector (-> arg1 current-sun)) - (the-as vector (-> arg2 current-sun)) - arg3 - ) - (vector4-lerp! - (-> arg0 current-sun env-color) - (-> arg1 current-sun env-color) - (-> arg2 current-sun env-color) - arg3 - ) - (vector4-lerp! (-> arg0 current-shadow) (-> arg1 current-shadow) (-> arg2 current-shadow) arg3) - (vector4-lerp! - (-> arg0 current-shadow-color) - (-> arg1 current-shadow-color) - (-> arg2 current-shadow-color) - arg3 - ) - (dotimes (s2-0 3) - (let ((s1-0 (-> arg0 light-group 0 lights s2-0))) - (let ((s0-0 (-> arg1 light-group 0 lights s2-0))) - (set! sv-16 (-> arg2 light-group 0 lights s2-0)) - (vector4-lerp! (-> s1-0 direction) (-> s0-0 direction) (-> sv-16 direction) arg3) - (vector4-lerp! (-> s1-0 color) (-> s0-0 color) (-> sv-16 color) arg3) - (vector4-lerp! (-> s1-0 levels) (-> s0-0 levels) (-> sv-16 levels) arg3) - ) - (vector-normalize! (-> s1-0 direction) 1.0) - ) - ) - (vector4-lerp! - (-> arg0 light-group 0 ambi color) - (-> arg1 light-group 0 ambi color) - (-> arg2 light-group 0 ambi color) - arg3 - ) - (vector4-lerp! - (-> arg0 light-group 0 ambi levels) - (-> arg1 light-group 0 ambi levels) - (-> arg2 light-group 0 ambi levels) - arg3 - ) - ) - ) - (none) - ) + (vector4-lerp! (the-as vector (-> arg0 current-fog)) + (the-as vector (-> arg1 current-fog)) + (the-as vector (-> arg2 current-fog)) + arg3) + (vector4-lerp! (-> arg0 current-fog fog-dists) (-> arg1 current-fog fog-dists) (-> arg2 current-fog fog-dists) arg3) + (vector4-lerp! (-> arg0 current-fog erase-color) + (-> arg1 current-fog erase-color) + (-> arg2 current-fog erase-color) + arg3) + (vector4-lerp! (-> arg0 current-prt-color) (-> arg1 current-prt-color) (-> arg2 current-prt-color) arg3) + (vector4-lerp! (the-as vector (-> arg0 current-sun)) + (the-as vector (-> arg1 current-sun)) + (the-as vector (-> arg2 current-sun)) + arg3) + (vector4-lerp! (-> arg0 current-sun env-color) (-> arg1 current-sun env-color) (-> arg2 current-sun env-color) arg3) + (vector4-lerp! (-> arg0 current-shadow) (-> arg1 current-shadow) (-> arg2 current-shadow) arg3) + (vector4-lerp! (-> arg0 current-shadow-color) (-> arg1 current-shadow-color) (-> arg2 current-shadow-color) arg3) + (dotimes (s2-0 3) + (let ((s1-0 (-> arg0 light-group 0 lights s2-0))) + (let ((s0-0 (-> arg1 light-group 0 lights s2-0))) + (set! sv-16 (-> arg2 light-group 0 lights s2-0)) + (vector4-lerp! (-> s1-0 direction) (-> s0-0 direction) (-> sv-16 direction) arg3) + (vector4-lerp! (-> s1-0 color) (-> s0-0 color) (-> sv-16 color) arg3) + (vector4-lerp! (-> s1-0 levels) (-> s0-0 levels) (-> sv-16 levels) arg3)) + (vector-normalize! (-> s1-0 direction) 1.0))) + (vector4-lerp! (-> arg0 light-group 0 ambi color) + (-> arg1 light-group 0 ambi color) + (-> arg2 light-group 0 ambi color) + arg3) + (vector4-lerp! (-> arg0 light-group 0 ambi levels) + (-> arg1 light-group 0 ambi levels) + (-> arg2 light-group 0 ambi levels) + arg3))) + (none)) (deftype flames-state (structure) - ((index uint8) - (time uint8) - (length uint8) - (height uint8) - ) - ) - + ((index uint8) + (time uint8) + (length uint8) + (height uint8))) (defun update-mood-flames ((arg0 mood-context) (arg1 int) (arg2 int) (arg3 int) (arg4 float) (arg5 float) (arg6 float)) (let* ((s5-0 (the-as flames-state (&-> arg0 state arg3))) (s4-0 (+ (-> s5-0 index) arg1)) (a0-1 (-> s5-0 time)) (v1-2 (-> s5-0 length)) - (s0-0 (-> s5-0 height)) - ) + (s0-0 (-> s5-0 height))) (dotimes (a3-1 arg2) - (set! (-> arg0 times (+ arg1 a3-1) w) arg4) - ) + (set! (-> arg0 times (+ arg1 a3-1) w) arg4)) (cond ((>= a0-1 v1-2) (set! (-> s5-0 index) (the-as uint (the int (rand-vu-float-range 0.0 (+ -0.01 (the float arg2)))))) (set! (-> s5-0 time) (the-as uint 0)) (set! (-> s5-0 length) (the-as uint (the int (* (rand-vu-float-range 7.0 15.0) arg6)))) (set! (-> s5-0 height) (the-as uint (the int (rand-vu-float-range 0.0 255.0)))) - (set! (-> arg0 times s4-0 w) arg4) - ) + (set! (-> arg0 times s4-0 w) arg4)) (else - (let ((f0-13 (sin (* 32768.0 (/ (the float a0-1) (the float v1-2)))))) - (set! (-> arg0 times s4-0 w) (+ (* (the float s0-0) f0-13 arg5) arg4)) - ) - (if (not (paused?)) - (+! (-> s5-0 time) 1) - ) - ) - ) - ) - (none) - ) - -(define *flash0* - (new 'static 'boxed-array :type float 1.0 0.0 0.5 1.0 0.5 0.0 0.5 0.35 0.4 0.35 0.25 0.1 0.04) - ) + (let ((f0-13 (sin (* 32768.0 (/ (the float a0-1) (the float v1-2)))))) + (set! (-> arg0 times s4-0 w) (+ (* (the float s0-0) f0-13 arg5) arg4))) + (if (not (paused?)) (+! (-> s5-0 time) 1))))) + (none)) + +(define *flash0* (new 'static 'boxed-array :type float 1.0 0.0 0.5 1.0 0.5 0.0 0.5 0.35 0.4 0.35 0.25 0.1 0.04)) (define *flash1* (new 'static 'boxed-array :type float 1.0 0.8 0.0 1.0 0.5 1.0 0.4 0.2 0.1)) @@ -504,51 +381,48 @@ (define *flash3* (new 'static 'boxed-array :type float 0.5 0.0 1.0 0.9 1.0 0.8 0.3 0.0 0.0 0.5 0.1 0.5 0.35)) (define *flash4* - (new 'static 'boxed-array :type float 1.0 0.0 1.0 0.0 1.0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.5 0.4 0.3 0.2 0.1) - ) - -(define *flash5* (new 'static 'boxed-array :type float - 1.0 - 0.0 - 1.0 - 0.0 - 1.0 - 0.95 - 0.9 - 0.85 - 0.8 - 0.75 - 0.7 - 0.65 - 0.6 - 0.55 - 0.5 - 0.45 - 0.4 - 0.35 - 0.3 - 0.25 - 0.2 - 0.5 - 0.45 - 0.4 - 0.35 - 0.3 - 0.25 - 0.2 - 0.15 - 0.1 - 0.05 - ) - ) - -(define *flash6* - (new 'static 'boxed-array :type float 1.0 0.0 1.0 0.0 0.5 0.0 0.5 0.35 0.0 0.0 1.0 0.0 0.2 0.1) - ) - -(define *flash7* - (new 'static 'boxed-array :type float 1.0 0.8 0.3 0.0 0.6 0.5 0.4 0.3 0.2 0.5 0.4 0.3 0.2 0.1) - ) + (new 'static 'boxed-array :type float 1.0 0.0 1.0 0.0 1.0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.5 0.4 0.3 0.2 0.1)) + +(define *flash5* + (new 'static + 'boxed-array + :type + float + 1.0 + 0.0 + 1.0 + 0.0 + 1.0 + 0.95 + 0.9 + 0.85 + 0.8 + 0.75 + 0.7 + 0.65 + 0.6 + 0.55 + 0.5 + 0.45 + 0.4 + 0.35 + 0.3 + 0.25 + 0.2 + 0.5 + 0.45 + 0.4 + 0.35 + 0.3 + 0.25 + 0.2 + 0.15 + 0.1 + 0.05)) + +(define *flash6* (new 'static 'boxed-array :type float 1.0 0.0 1.0 0.0 0.5 0.0 0.5 0.35 0.0 0.0 1.0 0.0 0.2 0.1)) + +(define *flash7* (new 'static 'boxed-array :type float 1.0 0.8 0.3 0.0 0.6 0.5 0.4 0.3 0.2 0.5 0.4 0.3 0.2 0.1)) (define *lightning-index* 0) @@ -571,11 +445,8 @@ (define *thunder-count* 0) (deftype lightning-state (structure) - ((val uint8) - ) - :pack-me - ) - + ((val uint8)) + :pack-me) (defun update-mood-lightning ((arg0 mood-context) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 float) (arg6 symbol)) (local-vars (a3-2 (array float))) @@ -585,36 +456,18 @@ (a1-1 (+ *lightning-index* arg1)) (v1-3 (+ *lightning-index* arg4)) (a3-1 (-> s4-0 0)) - (a2-2 (/ *lightning-time* 2)) - ) + (a2-2 (/ *lightning-time* 2))) (cond ((zero? *lightning-time2*) (cond - ((zero? a3-1) - (set! a3-2 *flash0*) - ) - ((= a3-1 1) - (set! a3-2 *flash1*) - ) - ((= a3-1 2) - (set! a3-2 *flash2*) - ) - ((= a3-1 3) - (set! a3-2 *flash3*) - ) - ((= a3-1 4) - (set! a3-2 *flash4*) - ) - ((= a3-1 5) - (set! a3-2 *flash5*) - ) - ((= a3-1 6) - (set! a3-2 *flash6*) - ) - (else - (set! a3-2 *flash7*) - ) - ) + ((zero? a3-1) (set! a3-2 *flash0*)) + ((= a3-1 1) (set! a3-2 *flash1*)) + ((= a3-1 2) (set! a3-2 *flash2*)) + ((= a3-1 3) (set! a3-2 *flash3*)) + ((= a3-1 4) (set! a3-2 *flash4*)) + ((= a3-1 5) (set! a3-2 *flash5*)) + ((= a3-1 6) (set! a3-2 *flash6*)) + (else (set! a3-2 *flash7*))) (cond ((< a2-2 (-> a3-2 length)) (let ((f0-1 (-> a3-2 a2-2))) @@ -624,74 +477,31 @@ (when (not *lightning-realtime-done*) (let* ((a1-11 (-> arg0 mood-lights-table data v1-3)) (v1-6 (-> arg0 light-group 0 dir2)) - (f1-4 (* (+ (* 2.0 (-> a1-11 lgt-color x)) (* 4.0 (-> a1-11 lgt-color y)) (-> a1-11 lgt-color z)) f0-1)) - ) + (f1-4 (* (+ (* 2.0 (-> a1-11 lgt-color x)) (* 4.0 (-> a1-11 lgt-color y)) (-> a1-11 lgt-color z)) f0-1))) (set! (-> v1-6 direction quad) (-> a1-11 direction quad)) (set! (-> v1-6 color quad) (-> a1-11 lgt-color quad)) (set! (-> v1-6 levels x) f0-1) - (set! (-> v1-6 levels y) f1-4) - ) - (set! *lightning-realtime-done* #t) - ) - ) - ) - (if (not (or (paused?) *lightning-frame-done*)) - (set! *lightning-time* (+ *lightning-time* 1)) - ) - ) - (arg6 - (set! *lightning-time2* (the int (rand-vu-float-range 360.0 960.0))) - ) - (else - (set! *lightning-time2* (the int (rand-vu-float-range 180.0 480.0))) - ) - ) - ) + (set! (-> v1-6 levels y) f1-4)) + (set! *lightning-realtime-done* #t)))) + (if (not (or (paused?) *lightning-frame-done*)) (set! *lightning-time* (+ *lightning-time* 1)))) + (arg6 (set! *lightning-time2* (the int (rand-vu-float-range 360.0 960.0)))) + (else (set! *lightning-time2* (the int (rand-vu-float-range 180.0 480.0)))))) (else - (when (not (or (paused?) *lightning-frame-done*)) - (set! *lightning-time2* (+ *lightning-time2* -1)) - (when (zero? *lightning-time2*) - (set! *lightning-index* (mod (+ *lightning-index* 1) arg2)) - (set! (-> s4-0 0) (logand (rand-uint31-gen *random-generator*) 7)) - (set! *lightning-time* 0) - (let ((v1-24 *thunder-count*)) - (cond - ((zero? v1-24) - (set! *thunder-id* *thunder-id0*) - (set! *thunder-count* 1) - ) - ((= v1-24 1) - (set! *thunder-id* *thunder-id1*) - (set! *thunder-count* 2) - ) - (else - (set! *thunder-id* *thunder-id2*) - (set! *thunder-count* 0) - 0 - ) - ) - ) - (when (>= (-> *math-camera* trans y) -81920.0) - (if arg6 - (sound-play - "thunder" - :id *thunder-id* - :vol (rand-vu-float-range 25.0 75.0) - :pitch (rand-vu-float-range -1.0 1.0) - ) - (sound-play - "thunder" - :id *thunder-id* - :vol (rand-vu-float-range 200.0 400.0) - :pitch (rand-vu-float-range -1.0 1.0) - ) - ) - ) - ) - ) - ) - ) - ) + (when (not (or (paused?) *lightning-frame-done*)) + (set! *lightning-time2* (+ *lightning-time2* -1)) + (when (zero? *lightning-time2*) + (set! *lightning-index* (mod (+ *lightning-index* 1) arg2)) + (set! (-> s4-0 0) (logand (rand-uint31-gen *random-generator*) 7)) + (set! *lightning-time* 0) + (let ((v1-24 *thunder-count*)) + (cond + ((zero? v1-24) (set! *thunder-id* *thunder-id0*) (set! *thunder-count* 1)) + ((= v1-24 1) (set! *thunder-id* *thunder-id1*) (set! *thunder-count* 2)) + (else (set! *thunder-id* *thunder-id2*) (set! *thunder-count* 0) 0))) + (when (>= (-> *math-camera* trans y) -81920.0) + (if arg6 + (sound-play "thunder" :id *thunder-id* :vol (rand-vu-float-range 25.0 75.0) :pitch (rand-vu-float-range -1.0 1.0)) + (sound-play "thunder" :id *thunder-id* :vol (rand-vu-float-range 200.0 400.0) :pitch (rand-vu-float-range -1.0 1.0))))))))) (when (not *lightning-frame-done*) (let ((gp-3 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> gp-3 command) (sound-command set-param)) @@ -700,16 +510,11 @@ (let ((s5-3 pp)) (when (= a1-23 #t) (if (and s5-3 (type-type? (-> s5-3 type) process-drawable) (nonzero? (-> (the-as process-drawable s5-3) root))) - (set! a1-23 (-> (the-as process-drawable s5-3) root trans)) - (set! a1-23 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> gp-3 parms trans) a1-23) - ) + (set! a1-23 (-> (the-as process-drawable s5-3) root trans)) + (set! a1-23 (the-as vector #f))))) + (sound-trans-convert (-> gp-3 parms trans) a1-23)) (set! (-> gp-3 parms mask) (sound-mask trans)) - (-> gp-3 id) - ) + (-> gp-3 id)) (let ((gp-4 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> gp-4 command) (sound-command set-param)) (set! (-> gp-4 id) *thunder-id1*) @@ -717,16 +522,11 @@ (let ((s5-4 pp)) (when (= a1-25 #t) (if (and s5-4 (type-type? (-> s5-4 type) process-drawable) (nonzero? (-> (the-as process-drawable s5-4) root))) - (set! a1-25 (-> (the-as process-drawable s5-4) root trans)) - (set! a1-25 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> gp-4 parms trans) a1-25) - ) + (set! a1-25 (-> (the-as process-drawable s5-4) root trans)) + (set! a1-25 (the-as vector #f))))) + (sound-trans-convert (-> gp-4 parms trans) a1-25)) (set! (-> gp-4 parms mask) (sound-mask trans)) - (-> gp-4 id) - ) + (-> gp-4 id)) (let ((gp-5 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> gp-5 command) (sound-command set-param)) (set! (-> gp-5 id) *thunder-id2*) @@ -734,143 +534,83 @@ (let ((s5-5 pp)) (when (= a1-27 #t) (if (and s5-5 (type-type? (-> s5-5 type) process-drawable) (nonzero? (-> (the-as process-drawable s5-5) root))) - (set! a1-27 (-> (the-as process-drawable s5-5) root trans)) - (set! a1-27 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> gp-5 parms trans) a1-27) - ) + (set! a1-27 (-> (the-as process-drawable s5-5) root trans)) + (set! a1-27 (the-as vector #f))))) + (sound-trans-convert (-> gp-5 parms trans) a1-27)) (set! (-> gp-5 parms mask) (sound-mask trans)) - (-> gp-5 id) - ) - ) + (-> gp-5 id))) (set! *lightning-frame-done* #t) - (none) - ) - ) + (none))) (deftype light-time-state (structure) - ((time uint8) - ) - :pack-me - ) - + ((time uint8)) + :pack-me) (deftype light-state (structure) - ((fade uint8) - ) - :pack-me - ) - + ((fade uint8)) + :pack-me) (defun update-mood-light ((arg0 mood-context) (arg1 int) (arg2 int) (arg3 int) (arg4 float) (arg5 float) (arg6 float) (arg7 int)) (let* ((gp-0 (&-> arg0 state arg2)) (f0-1 (the float (* (logand (+ (-> arg0 state arg3) arg7) 255) 512))) (f0-4 (+ arg4 (* (cos f0-1) arg5))) - (f30-1 (* 0.003921569 (the float (-> gp-0 0)))) - ) + (f30-1 (* 0.003921569 (the float (-> gp-0 0))))) (cond ((or (< 19.0 arg6) (< arg6 7.0)) (cond - ((and (= f30-1 0.0) (= f0-4 (- arg4 arg5))) - (set! (-> arg0 times arg1 w) f0-4) - (set! (-> gp-0 0) (the-as uint 255)) - ) - ((= f30-1 1.0) - (set! (-> arg0 times arg1 w) f0-4) - ) - ) - ) + ((and (= f30-1 0.0) (= f0-4 (- arg4 arg5))) (set! (-> arg0 times arg1 w) f0-4) (set! (-> gp-0 0) (the-as uint 255))) + ((= f30-1 1.0) (set! (-> arg0 times arg1 w) f0-4)))) ((= f30-1 1.0) (cond - ((= f0-4 (+ arg4 arg5)) - (set! (-> arg0 times arg1 w) f0-4) - (set! (-> gp-0 0) (the-as uint 254)) - ) - (else - (set! (-> arg0 times arg1 w) f0-4) - ) - ) - ) + ((= f0-4 (+ arg4 arg5)) (set! (-> arg0 times arg1 w) f0-4) (set! (-> gp-0 0) (the-as uint 254))) + (else (set! (-> arg0 times arg1 w) f0-4)))) ((and (!= f30-1 1.0) (!= f30-1 0.0)) (set! (-> arg0 times arg1 w) f30-1) (when (not (paused?)) - (if (< 0.75 f30-1) - (+! (-> gp-0 0) -3) - (+! (-> gp-0 0) -1) - ) - ) - ) - (else - (set! (-> arg0 state arg3) (the-as uint 0)) - 0 - ) - ) - ) - (none) - ) + (if (< 0.75 f30-1) (+! (-> gp-0 0) -3) (+! (-> gp-0 0) -1)))) + (else (set! (-> arg0 state arg3) (the-as uint 0)) 0))) + (none)) (deftype lava-state (structure) - ((scale float 4) - (time uint8) - (last-index uint8) - ) - :pack-me - ) - + ((scale float 4) + (time uint8) + (last-index uint8)) + :pack-me) (define *lava-time* (the-as float 0)) (defun update-mood-lava ((arg0 mood-context) (arg1 int) (arg2 int) (arg3 symbol)) (let* ((s4-0 (the-as lava-state (&-> arg0 state arg2))) (s1-0 (-> s4-0 time)) - (s2-0 (-> s4-0 last-index)) - ) + (s2-0 (-> s4-0 last-index))) (when (not (paused?)) (set! (-> s4-0 time) (+ s1-0 4)) - (set! *lava-time* (+ *lava-time* (rand-vu-float-range 64.0 2048.0))) - ) + (set! *lava-time* (+ *lava-time* (rand-vu-float-range 64.0 2048.0)))) (let ((s0-0 (-> arg0 light-group 0 dir2)) - (f0-4 (+ 0.875 (* 0.125 (sin *lava-time*)))) - ) + (f0-4 (+ 0.875 (* 0.125 (sin *lava-time*))))) (set-vector! (-> s0-0 direction) 0.0 -1.0 0.0 0.0) (set-vector! (-> s0-0 color) 1.0 0.364 0.0 1.0) - (set! (-> s0-0 levels x) f0-4) - ) + (set! (-> s0-0 levels x) f0-4)) (let ((s0-1 (shr s1-0 6)) - (f30-2 (* 0.015625 (the float (logand s1-0 63)))) - ) + (f30-2 (* 0.015625 (the float (logand s1-0 63))))) (when (!= s0-1 s2-0) (set! (-> s4-0 scale s0-1) (the float (the int (rand-vu-float-range 128.0 255.0)))) - (set! (-> s4-0 last-index) s0-1) - ) + (set! (-> s4-0 last-index) s0-1)) (when arg3 (let* ((v1-14 (logand (+ s0-1 -1) 3)) (f1-11 (* 0.0078125 (-> s4-0 scale s0-1))) - (f0-11 (* 0.0078125 (-> s4-0 scale v1-14))) - ) + (f0-11 (* 0.0078125 (-> s4-0 scale v1-14)))) (set! (-> arg0 times (+ arg1 s0-1) w) (* f30-2 f1-11)) - (set! (-> arg0 times (+ arg1 v1-14) w) (* (- 1.0 f30-2) f0-11)) - ) - ) - ) - ) - (none) - ) + (set! (-> arg0 times (+ arg1 v1-14) w) (* (- 1.0 f30-2) f0-11)))))) + (none)) (defun update-mood-caustics ((arg0 mood-context) (arg1 int) (arg2 int)) (let* ((a2-1 (-> arg0 state arg2)) (v1-2 (logand (shr a2-1 3) 3)) - (f0-1 (* 0.125 (the float (logand a2-1 7)))) - ) - (let ((a2-4 (logand (+ v1-2 -1) 3))) - (set! (-> arg0 times (+ arg1 a2-4) w) (- 1.0 f0-1)) - ) - (set! (-> arg0 times (+ arg1 v1-2) w) f0-1) - ) - (none) - ) + (f0-1 (* 0.125 (the float (logand a2-1 7))))) + (let ((a2-4 (logand (+ v1-2 -1) 3))) (set! (-> arg0 times (+ arg1 a2-4) w) (- 1.0 f0-1))) + (set! (-> arg0 times (+ arg1 v1-2) w) f0-1)) + (none)) (defun update-mood-default ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -879,18 +619,14 @@ (update-mood-palette arg0 arg1 arg2) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype misty-states (structure) - ((flames flames-state :inline) - (light0 light-state :inline) - (light1 light-state :inline) - (time0 light-time-state :inline) - (time1 light-time-state :inline) - ) - ) - + ((flames flames-state :inline) + (light0 light-state :inline) + (light1 light-state :inline) + (time0 light-time-state :inline) + (time1 light-time-state :inline))) (defun update-mood-misty ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -903,48 +639,31 @@ (s3-0 (target-pos 0)) (a1-5 (new 'static 'vector :x -808960.0 :y 110592.0 :z 3928064.0)) (f30-0 (vector-vector-xz-distance s3-0 a1-5)) - (s5-1 (get-reminder s4-1 0)) - ) + (s5-1 (get-reminder s4-1 0))) (cond ((or (logtest? s5-1 3) (and (< f30-0 180224.0) (< (-> s3-0 y) 118784.0))) (when (or (logtest? s5-1 1) (and (< f30-0 180224.0) (< (-> s3-0 y) 118784.0))) (update-mood-light arg0 6 4 6 0.875 0.25 20.0 32) (save-reminder s4-1 (logior s5-1 1) 0) - (if (not (paused?)) - (+! (-> arg0 state 6) 1) - ) - ) + (if (not (paused?)) (+! (-> arg0 state 6) 1))) (when (logtest? s5-1 2) (update-mood-light arg0 7 5 7 0.875 0.25 20.0 32) - (if (not (paused?)) - (+! (-> arg0 state 7) 1) - ) - ) - ) + (if (not (paused?)) (+! (-> arg0 state 7) 1)))) (else - (set! (-> arg0 state 6) (the-as uint 0)) - (set! (-> arg0 state 7) (the-as uint 0)) - (set! (-> arg0 state 4) (the-as uint 255)) - (set! (-> arg0 state 5) (the-as uint 255)) - ) - ) - ) - ) + (set! (-> arg0 state 6) (the-as uint 0)) + (set! (-> arg0 state 7) (the-as uint 0)) + (set! (-> arg0 state 4) (the-as uint 255)) + (set! (-> arg0 state 5) (the-as uint 255)))))) (let ((s5-2 (-> arg0 light-group 1))) (update-light-kit s5-2 (-> arg0 light-group 0 ambi) 0.6) - (set! (-> s5-2 dir0 levels x) (+ 1.0 (* 0.333 (-> arg0 times 2 w)))) - ) + (set! (-> s5-2 dir0 levels x) (+ 1.0 (* 0.333 (-> arg0 times 2 w))))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype swamp-village2-states (structure) - ((flames flames-state :inline) - (lightning lightning-state :inline) - ) - ) - + ((flames flames-state :inline) + (lightning lightning-state :inline))) (defun update-mood-village2 ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -953,34 +672,26 @@ (update-mood-palette arg0 arg1 arg2) (when *time-of-day-effects* (update-mood-flames arg0 4 4 0 0.333 0.001953125 1.0) - (update-mood-lightning arg0 2 2 4 2 0.5 #f) - ) - (let ((a0-7 (-> arg0 light-group 1))) - (update-light-kit a0-7 (-> arg0 light-group 0 ambi) 0.9) - ) + (update-mood-lightning arg0 2 2 4 2 0.5 #f)) + (let ((a0-7 (-> arg0 light-group 1))) (update-light-kit a0-7 (-> arg0 light-group 0 ambi) 0.9)) (let ((s5-1 (-> arg0 light-group 2))) (update-light-kit s5-1 (-> arg0 light-group 0 ambi) 1.0) (set! (-> s5-1 dir2 direction quad) (-> arg0 light-group 0 dir2 direction quad)) (set! (-> s5-1 dir2 color quad) (-> arg0 light-group 0 dir2 color quad)) - (set! (-> s5-1 dir2 levels x) (-> arg0 light-group 0 dir2 levels x)) - ) + (set! (-> s5-1 dir2 levels x) (-> arg0 light-group 0 dir2 levels x))) (let ((s5-2 (-> arg0 light-group 3))) (update-light-kit s5-2 (-> arg0 light-group 0 ambi) 1.0) - (set! (-> s5-2 dir0 levels x) (+ 0.666 (* 0.333 (-> arg0 times 4 w)))) - ) + (set! (-> s5-2 dir0 levels x) (+ 0.666 (* 0.333 (-> arg0 times 4 w))))) (let ((s5-3 (-> arg0 light-group 4))) (update-light-kit s5-3 (-> arg0 light-group 0 ambi) 1.0) - (set! (-> s5-3 dir0 levels x) (+ 0.666 (* 0.333 (-> arg0 times 4 w)))) - ) + (set! (-> s5-3 dir0 levels x) (+ 0.666 (* 0.333 (-> arg0 times 4 w))))) (let ((s5-4 (-> arg0 light-group 5))) (update-light-kit s5-4 (-> arg0 light-group 0 ambi) 0.5) (+! (-> s5-4 ambi color x) 0.25) - (set! (-> s5-4 dir0 levels x) 1.0) - ) + (set! (-> s5-4 dir0 levels x) 1.0)) (let ((s5-5 (-> arg0 light-group 6)) (s4-1 (new 'stack-no-clear 'vector)) - (s3-0 (target-joint-pos)) - ) + (s3-0 (target-joint-pos))) (update-light-kit s5-5 (-> arg0 light-group 0 ambi) 1.0) (set-vector! s4-1 1212416.0 110592.0 -6680576.0 0.0) (vector-! s4-1 s4-1 s3-0) @@ -994,68 +705,35 @@ (set! (-> s5-5 dir1 direction quad) (-> s4-1 quad)) (when (< f30-0 180224.0) (new 'stack-no-clear 'vector) - (let ((f2-3 (* 0.0000110973015 (+ -90112.0 f30-0)))) - (set! (-> s5-5 dir1 levels x) (- 1.0 (fmax 0.0 (fmin 1.0 f2-3)))) - ) - ) - ) + (let ((f2-3 (* 0.0000110973015 (+ -90112.0 f30-0)))) (set! (-> s5-5 dir1 levels x) (- 1.0 (fmax 0.0 (fmin 1.0 f2-3))))))) (set-vector! s4-1 1212416.0 (-> s3-0 y) -6680576.0 0.0) (let ((f0-26 (vector-vector-distance s4-1 s3-0))) (when (< f0-26 61440.0) (let ((a2-10 (new 'stack-no-clear 'vector)) - (f0-27 (* 0.000016276043 f0-26)) - ) + (f0-27 (* 0.000016276043 f0-26))) (set-vector! a2-10 1.0 0.5 0.0 1.0) (let ((f0-31 (* 0.5 (- 1.0 (fmax 0.0 (fmin 1.0 f0-27)))))) - (vector+float*! (-> s5-5 ambi color) (-> s5-5 ambi color) a2-10 f0-31) - ) - ) - ) - ) - ) + (vector+float*! (-> s5-5 ambi color) (-> s5-5 ambi color) a2-10 f0-31)))))) (let ((s5-6 (new 'stack-no-clear 'vector)) - (s4-2 (target-joint-pos)) - ) + (s4-2 (target-joint-pos))) 0.0 (set-vector! s5-6 1570816.0 98304.0 -6322176.0 1.0) (let ((f0-37 (vector-vector-distance s5-6 s4-2))) (when (< f0-37 49152.0) (let ((f30-1 (* 0.000061035156 (+ -32768.0 f0-37)))) (cond - ((movie?) - (set-target-light-index 1) - (set! (-> *time-of-day-context* target-interp) 1.0) - ) - (else - (set-target-light-index 1) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-1)))) - ) - ) - ) - ) - ) + ((movie?) (set-target-light-index 1) (set! (-> *time-of-day-context* target-interp) 1.0)) + (else (set-target-light-index 1) (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-1))))))))) (set-vector! s5-6 1169408.0 61440.0 -6676480.0 1.0) (let ((f0-46 (vector-vector-distance s5-6 s4-2))) (when (< f0-46 167936.0) (let ((f30-2 (* 0.000024414063 (+ -126976.0 f0-46)))) (cond - ((movie?) - (set-target-light-index 6) - (set! (-> *time-of-day-context* target-interp) 1.0) - ) - (else - (set-target-light-index 6) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-2)))) - ) - ) - ) - ) - ) - ) + ((movie?) (set-target-light-index 6) (set! (-> *time-of-day-context* target-interp) 1.0)) + (else (set-target-light-index 6) (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-2)))))))))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (defun update-mood-swamp ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -1064,38 +742,27 @@ (update-mood-palette arg0 arg1 arg2) (when *time-of-day-effects* (update-mood-flames arg0 4 4 0 0.333 0.001953125 1.0) - (update-mood-lightning arg0 2 2 4 2 0.5 #f) - ) + (update-mood-lightning arg0 2 2 4 2 0.5 #f)) (let ((f30-0 (fmax 0.0 (-> *math-camera* camera-rot vector 1 z)))) (let ((a2-4 (new 'stack-no-clear 'vector))) (set-vector! a2-4 0.0 32.0 48.0 128.0) - (vector4-lerp! (the-as vector (-> arg0 current-fog)) (the-as vector (-> arg0 current-fog)) a2-4 (* 0.5 f30-0)) - ) + (vector4-lerp! (the-as vector (-> arg0 current-fog)) (the-as vector (-> arg0 current-fog)) a2-4 (* 0.5 f30-0))) (let ((f0-7 (-> arg0 current-fog fog-dists w)) - (f1-1 255.0) - ) - (set! (-> arg0 current-fog fog-dists w) (+ f0-7 (* 0.666 f30-0 (- f1-1 f0-7)))) - ) - ) + (f1-1 255.0)) + (set! (-> arg0 current-fog fog-dists w) (+ f0-7 (* 0.666 f30-0 (- f1-1 f0-7)))))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype village1-states (structure) - ((flames flames-state :inline) - ) - ) - + ((flames flames-state :inline))) (defun update-mood-village1 ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) (update-mood-sky-texture arg0 arg1) (clear-mood-times arg0) (update-mood-palette arg0 arg1 arg2) - (if *time-of-day-effects* - (update-mood-flames arg0 5 1 0 0.5 0.001953125 1.0) - ) + (if *time-of-day-effects* (update-mood-flames arg0 5 1 0 0.5 0.001953125 1.0)) (update-light-kit (-> arg0 light-group 1) (-> arg0 light-group 0 ambi) 1.0) (update-light-kit (-> arg0 light-group 2) (-> arg0 light-group 0 ambi) 1.0) (update-light-kit (-> arg0 light-group 3) (-> arg0 light-group 0 ambi) 1.0) @@ -1104,125 +771,63 @@ (update-light-kit (-> arg0 light-group 6) (-> arg0 light-group 0 ambi) 1.0) (update-light-kit (-> arg0 light-group 7) (-> arg0 light-group 0 ambi) 1.0) (let ((s5-1 (new 'stack-no-clear 'vector)) - (s4-1 (target-joint-pos)) - ) + (s4-1 (target-joint-pos))) 0.0 (set-vector! s5-1 -524288.0 (-> s4-1 y) 856064.0 1.0) (let ((f0-5 (vector-vector-distance s5-1 s4-1))) (when (< f0-5 90112.0) (let ((f30-0 (* 0.000061035156 (+ -73728.0 f0-5)))) (cond - ((movie?) - (set-target-light-index 1) - (set! (-> *time-of-day-context* target-interp) 1.0) - ) - (else - (set-target-light-index 1) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-0)))) - ) - ) - ) - ) - ) + ((movie?) (set-target-light-index 1) (set! (-> *time-of-day-context* target-interp) 1.0)) + (else (set-target-light-index 1) (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-0))))))))) (set-vector! s5-1 -253952.0 (-> s4-1 y) -116736.0 1.0) (let ((f0-14 (vector-vector-distance s5-1 s4-1))) (when (< f0-14 69632.0) (let ((f30-1 (* 0.000061035156 (+ -53248.0 f0-14)))) (cond - ((movie?) - (set-target-light-index 4) - (set! (-> *time-of-day-context* target-interp) 1.0) - ) - (else - (set-target-light-index 4) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-1)))) - ) - ) - ) - ) - ) + ((movie?) (set-target-light-index 4) (set! (-> *time-of-day-context* target-interp) 1.0)) + (else (set-target-light-index 4) (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-1))))))))) (set-vector! s5-1 -518144.0 (-> s4-1 y) -73728.0 1.0) (let ((f0-23 (vector-vector-distance s5-1 s4-1))) (when (< f0-23 57344.0) (let ((f30-2 (* 0.000061035156 (+ -40960.0 f0-23)))) (cond - ((movie?) - (set-target-light-index 3) - (set! (-> *time-of-day-context* target-interp) 1.0) - ) - (else - (set-target-light-index 3) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-2)))) - ) - ) - ) - ) - ) + ((movie?) (set-target-light-index 3) (set! (-> *time-of-day-context* target-interp) 1.0)) + (else (set-target-light-index 3) (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-2))))))))) (set-vector! s5-1 -450560.0 (-> s4-1 y) 178176.0 1.0) (let ((f0-32 (vector-vector-distance s5-1 s4-1))) (when (< f0-32 81920.0) (let ((f30-3 (* 0.000061035156 (+ -65536.0 f0-32)))) (cond - ((movie?) - (set-target-light-index 2) - (set! (-> *time-of-day-context* target-interp) 1.0) - ) - (else - (set-target-light-index 2) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-3)))) - ) - ) - ) - ) - ) + ((movie?) (set-target-light-index 2) (set! (-> *time-of-day-context* target-interp) 1.0)) + (else (set-target-light-index 2) (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-3))))))))) (set-vector! s5-1 -239616.0 (-> s4-1 y) 131072.0 1.0) (let ((f0-41 (vector-vector-distance s5-1 s4-1))) (when (< f0-41 57344.0) (let ((f30-4 (* 0.000061035156 (+ -40960.0 f0-41)))) (cond - ((movie?) - (set-target-light-index 5) - (set! (-> *time-of-day-context* target-interp) 1.0) - ) - (else - (set-target-light-index 5) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-4)))) - ) - ) - ) - ) - ) + ((movie?) (set-target-light-index 5) (set! (-> *time-of-day-context* target-interp) 1.0)) + (else (set-target-light-index 5) (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-4))))))))) (set-vector! s5-1 -284672.0 (-> s4-1 y) 288768.0 1.0) (let ((f0-50 (vector-vector-distance s5-1 s4-1))) (when (< f0-50 77824.0) (let ((f30-5 (* 0.000061035156 (+ -61440.0 f0-50)))) (set-target-light-index 6) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-5)))) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-5))))))) (set-vector! s5-1 -83968.0 (-> s4-1 y) -305152.0 1.0) (let ((f0-58 (vector-vector-distance s5-1 s4-1))) (when (< f0-58 61440.0) (let ((f30-6 (* 0.000061035156 (+ -45056.0 f0-58)))) (set-target-light-index 7) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-6)))) - ) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-6)))))))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype jungle-states (structure) - ((light light-state :inline) - (time light-time-state :inline) - (one-shot uint8) - ) - ) - + ((light light-state :inline) + (time light-time-state :inline) + (one-shot uint8))) (defun update-mood-jungle ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -1233,20 +838,11 @@ (cond ((task-complete? *game-info* (game-task jungle-eggtop)) (update-mood-light arg0 5 0 1 0.875 0.25 20.0 32) - (if (not (paused?)) - (+! (-> arg0 state 1) 1) - ) - ) - (else - (set! (-> arg0 state 1) (the-as uint 0)) - (set! (-> arg0 state 0) (the-as uint 255)) - ) - ) - ) + (if (not (paused?)) (+! (-> arg0 state 1) 1))) + (else (set! (-> arg0 state 1) (the-as uint 0)) (set! (-> arg0 state 0) (the-as uint 255))))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (defun update-mood-jungleb-blue ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-light arg0 5 0 1 0.875 0.25 20.0 32) @@ -1255,35 +851,25 @@ (set! (-> v1-3 0 fog-color x) 0.0) (set! (-> v1-3 0 fog-color y) 16.0) (set! (-> v1-3 0 fog-color z) 64.0) - (set! (-> v1-3 0 fog-color w) 128.0) - ) + (set! (-> v1-3 0 fog-color w) 128.0)) (set! (-> arg0 mood-fog-table data 0 fog-dists x) 196608.0) (set-vector! (-> arg0 mood-fog-table data 0 erase-color) 0.0 0.0 0.0 128.0) (let ((v1-8 (-> arg0 mood-sun-table data))) (set! (-> v1-8 0 sun-color x) 0.0) (set! (-> v1-8 0 sun-color y) 0.0) (set! (-> v1-8 0 sun-color z) 0.0) - (set! (-> v1-8 0 sun-color w) 0.0) - ) + (set! (-> v1-8 0 sun-color w) 0.0)) (set-vector! (-> arg0 mood-sun-table data 0 env-color) 64.0 80.0 255.0 255.0) (let ((v1-12 (-> arg0 mood-lights-table data))) (set! (-> v1-12 0 direction x) 0.0) (set! (-> v1-12 0 direction y) -1.0) (set! (-> v1-12 0 direction z) 0.0) - (set! (-> v1-12 0 direction w) 0.0) - ) + (set! (-> v1-12 0 direction w) 0.0)) (set-vector! (-> arg0 mood-lights-table data 0 lgt-color) 0.0 0.0 (* 1.5 (-> arg0 times 5 w)) 1.0) (set-vector! (-> arg0 mood-lights-table data 0 amb-color) 0.4 0.433 0.7 1.0) - (set-vector! - (-> arg0 mood-lights-table data 0 prt-color) - 0.2 - 0.216 - (+ 0.35 (* 0.375 (-> arg0 times 5 w))) - 1.0 - ) + (set-vector! (-> arg0 mood-lights-table data 0 prt-color) 0.2 0.216 (+ 0.35 (* 0.375 (-> arg0 times 5 w))) 1.0) (set-vector! (-> arg0 mood-lights-table data 0 shadow) 0.0 -1.0 0.0 0.0) - (none) - ) + (none)) (defun update-mood-jungleb ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-sky-texture arg0 arg1) @@ -1291,96 +877,73 @@ (set! (-> arg0 times 0 w) 1.0) (when *time-of-day-effects* (let ((v1-3 (get-reminder (get-task-control (game-task jungle-eggtop)) 0)) - (s3-0 (-> arg0 state 2)) - ) + (s3-0 (-> arg0 state 2))) (cond ((and (= v1-3 2) (nonzero? s3-0)) - (if (< (the-as uint 60) s3-0) - (set! (-> arg0 times 2 w) 2.0) - (set! (-> arg0 times 2 w) (* 0.033333335 (the float s3-0))) - ) - (if (not (paused?)) - (set! (-> arg0 state 2) (+ s3-0 -1)) - ) + (if (< (the-as uint 60) s3-0) (set! (-> arg0 times 2 w) 2.0) (set! (-> arg0 times 2 w) (* 0.033333335 (the float s3-0)))) + (if (not (paused?)) (set! (-> arg0 state 2) (+ s3-0 -1))) (set! (-> arg0 times 1 w) 1.0) - (update-mood-jungleb-blue arg0 arg1 arg2) - ) + (update-mood-jungleb-blue arg0 arg1 arg2)) ((and (nonzero? v1-3) (!= s3-0 180)) (set! (-> arg0 state 2) (the-as uint 0)) (set! (-> arg0 times 1 w) 1.0) - (update-mood-jungleb-blue arg0 arg1 arg2) - ) + (update-mood-jungleb-blue arg0 arg1 arg2)) (else - (set! (-> arg0 state 2) (the-as uint 180)) - (set! (-> arg0 state 1) (the-as uint 0)) - (set! (-> arg0 state 0) (the-as uint 255)) - (let ((v1-15 (-> arg0 mood-fog-table data))) - (set! (-> v1-15 0 fog-color x) 0.0) - (set! (-> v1-15 0 fog-color y) 0.0) - (set! (-> v1-15 0 fog-color z) 0.0) - (set! (-> v1-15 0 fog-color w) 128.0) - ) - (set! (-> arg0 mood-fog-table data 0 fog-dists x) 98304.0) - (set-vector! (-> arg0 mood-fog-table data 0 erase-color) 0.0 0.0 0.0 128.0) - (let ((v1-20 (-> arg0 mood-sun-table data))) - (set! (-> v1-20 0 sun-color x) 0.0) - (set! (-> v1-20 0 sun-color y) 0.0) - (set! (-> v1-20 0 sun-color z) 0.0) - (set! (-> v1-20 0 sun-color w) 0.0) - ) - (set-vector! (-> arg0 mood-sun-table data 0 env-color) 48.0 60.0 96.0 255.0) - (let ((v1-24 (-> arg0 mood-lights-table data))) - (set! (-> v1-24 0 direction x) 0.0) - (set! (-> v1-24 0 direction y) 1.0) - (set! (-> v1-24 0 direction z) 0.0) - (set! (-> v1-24 0 direction w) 0.0) - ) - (set-vector! (-> arg0 mood-lights-table data 0 lgt-color) 0.287 0.283 0.4 1.0) - (set-vector! (-> arg0 mood-lights-table data 0 amb-color) 0.166125 0.2125 0.4 1.0) - (set-vector! (-> arg0 mood-lights-table data 0 prt-color) 0.14235 0.1645 0.2875 1.0) - (set-vector! (-> arg0 mood-lights-table data 0 shadow) 0.0 -1.0 0.0 0.0) - ) - ) - ) - ) + (set! (-> arg0 state 2) (the-as uint 180)) + (set! (-> arg0 state 1) (the-as uint 0)) + (set! (-> arg0 state 0) (the-as uint 255)) + (let ((v1-15 (-> arg0 mood-fog-table data))) + (set! (-> v1-15 0 fog-color x) 0.0) + (set! (-> v1-15 0 fog-color y) 0.0) + (set! (-> v1-15 0 fog-color z) 0.0) + (set! (-> v1-15 0 fog-color w) 128.0)) + (set! (-> arg0 mood-fog-table data 0 fog-dists x) 98304.0) + (set-vector! (-> arg0 mood-fog-table data 0 erase-color) 0.0 0.0 0.0 128.0) + (let ((v1-20 (-> arg0 mood-sun-table data))) + (set! (-> v1-20 0 sun-color x) 0.0) + (set! (-> v1-20 0 sun-color y) 0.0) + (set! (-> v1-20 0 sun-color z) 0.0) + (set! (-> v1-20 0 sun-color w) 0.0)) + (set-vector! (-> arg0 mood-sun-table data 0 env-color) 48.0 60.0 96.0 255.0) + (let ((v1-24 (-> arg0 mood-lights-table data))) + (set! (-> v1-24 0 direction x) 0.0) + (set! (-> v1-24 0 direction y) 1.0) + (set! (-> v1-24 0 direction z) 0.0) + (set! (-> v1-24 0 direction w) 0.0)) + (set-vector! (-> arg0 mood-lights-table data 0 lgt-color) 0.287 0.283 0.4 1.0) + (set-vector! (-> arg0 mood-lights-table data 0 amb-color) 0.166125 0.2125 0.4 1.0) + (set-vector! (-> arg0 mood-lights-table data 0 prt-color) 0.14235 0.1645 0.2875 1.0) + (set-vector! (-> arg0 mood-lights-table data 0 shadow) 0.0 -1.0 0.0 0.0))))) (update-mood-quick arg0 0 0 0 arg2) (let ((s5-1 (-> arg0 light-group 1))) (quad-copy! (the-as pointer s5-1) (the-as pointer (-> arg0 light-group)) 12) (set! (-> s5-1 dir2 color quad) (the-as uint128 0)) - (set! (-> s5-1 dir2 levels x) 0.0) - ) + (set! (-> s5-1 dir2 levels x) 0.0)) (let ((s5-2 (-> arg0 light-group 2))) (quad-copy! (the-as pointer s5-2) (the-as pointer (-> arg0 light-group)) 12) (let ((v1-34 (-> s5-2 dir2))) (set! (-> v1-34 direction x) 0.0) (set! (-> v1-34 direction y) 1.0) (set! (-> v1-34 direction z) 0.0) - (set! (-> v1-34 direction w) 0.0) - ) + (set! (-> v1-34 direction w) 0.0)) (set-vector! (-> s5-2 dir2 color) 0.0 0.5 0.75 1.0) - (set! (-> s5-2 dir2 levels x) 1.0) - ) + (set! (-> s5-2 dir2 levels x) 1.0)) (let ((s4-1 (-> *jungle-mood* light-group 1)) - (s3-1 (-> arg0 light-group 3)) - ) + (s3-1 (-> arg0 light-group 3))) (let ((s5-3 (new 'stack-no-clear 'vector))) (quad-copy! (the-as pointer s3-1) (the-as pointer (-> arg0 light-group)) 12) (let ((v1-38 (-> s3-1 dir2))) (set! (-> v1-38 direction x) 0.0) (set! (-> v1-38 direction y) 1.0) (set! (-> v1-38 direction z) 0.0) - (set! (-> v1-38 direction w) 0.0) - ) + (set! (-> v1-38 direction w) 0.0)) (set-vector! (-> s3-1 dir2 color) 0.4 0.25 0.1 1.0) (set! (-> s3-1 dir2 levels x) 1.0) (set-vector! s5-3 0.25 0.25 0.25 0.0) - (vector+! (the-as vector (-> s3-1 ambi color)) (the-as vector (-> s3-1 ambi color)) s5-3) - ) - (quad-copy! (the-as pointer s4-1) (the-as pointer s3-1) 12) - ) + (vector+! (the-as vector (-> s3-1 ambi color)) (the-as vector (-> s3-1 ambi color)) s5-3)) + (quad-copy! (the-as pointer s4-1) (the-as pointer s3-1) 12)) (let ((s5-4 (new 'stack-no-clear 'vector)) - (s4-2 (target-joint-pos)) - ) + (s4-2 (target-joint-pos))) (set-vector! s5-4 1482752.0 (-> s4-2 y) -985088.0 1.0) (let ((f0-70 (vector-vector-distance s5-4 s4-2))) (when (< f0-70 81920.0) @@ -1388,69 +951,48 @@ (a2-8 (new 'stack-no-clear 'vector)) (v1-45 (-> arg0 light-group)) (a0-19 (-> *jungle-mood* light-group)) - (f2-3 (* 0.0000030517579 (+ 163840.0 (-> s4-2 y)))) - ) + (f2-3 (* 0.0000030517579 (+ 163840.0 (-> s4-2 y))))) (set! *teleport* #t) (let* ((f1-6 (- 1.0 (fmax 0.0 (fmin 1.0 f2-3)))) - (f0-76 (* (- 1.0 (fmax 0.0 (fmin 1.0 f0-72))) f1-6)) - ) + (f0-76 (* (- 1.0 (fmax 0.0 (fmin 1.0 f0-72))) f1-6))) (let ((a1-13 (-> v1-45 0 dir2))) (set! (-> a1-13 direction x) 0.0) (set! (-> a1-13 direction y) 1.0) (set! (-> a1-13 direction z) 0.0) - (set! (-> a1-13 direction w) 0.0) - ) + (set! (-> a1-13 direction w) 0.0)) (set-vector! (-> v1-45 0 dir2 color) 0.4 0.25 0.1 1.0) (set! (-> v1-45 0 dir2 levels x) f0-76) (let ((a1-15 (-> a0-19 0 dir2))) (set! (-> a1-15 direction x) 0.0) (set! (-> a1-15 direction y) 1.0) (set! (-> a1-15 direction z) 0.0) - (set! (-> a1-15 direction w) 0.0) - ) + (set! (-> a1-15 direction w) 0.0)) (set-vector! (-> a0-19 0 dir2 color) 0.4 0.25 0.1 1.0) (set! (-> a0-19 0 dir2 levels x) f0-76) (set-vector! a2-8 0.25 0.25 0.25 0.0) (vector+! a2-8 a2-8 (the-as vector (-> v1-45 0 ambi color))) - (vector4-lerp! (-> v1-45 0 ambi color) (-> v1-45 0 ambi color) a2-8 f0-76) - ) - ) - ) - ) + (vector4-lerp! (-> v1-45 0 ambi color) (-> v1-45 0 ambi color) a2-8 f0-76))))) (set-vector! s5-4 1146880.0 (-> s4-2 y) -1232896.0 1.0) - (if (< (vector-vector-distance s5-4 s4-2) 10240.0) - (set! *teleport* #t) - ) + (if (< (vector-vector-distance s5-4 s4-2) 10240.0) (set! *teleport* #t)) (set-vector! s5-4 1781760.0 -163840.0 -1038336.0 1.0) (let ((f0-86 (vector-vector-distance s5-4 s4-2))) (when (< f0-86 147456.0) (let ((f30-0 (* 0.000030517578 (+ -114688.0 f0-86)))) (set-target-light-index 2) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-0)))) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-0))))))) (set-vector! s5-4 1105920.0 -188416.0 -1204224.0 1.0) (let ((f0-94 (vector-vector-distance s5-4 s4-2))) (when (< f0-94 106496.0) (let ((f30-1 (* 0.000030517578 (+ -73728.0 f0-94)))) (set-target-light-index 2) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-1)))) - ) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-1)))))))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype sunken-states (structure) - ((light light-state :inline) - (time light-time-state :inline) - ) - ) - + ((light light-state :inline) + (time light-time-state :inline))) (set! (-> *sunken-mood* state 0) (the-as uint 255)) @@ -1459,13 +1001,10 @@ (when (not (paused?)) (update-mood-fog arg0 arg1) (update-mood-sky-texture arg0 arg1) - (if (not (paused?)) - (+! (-> arg0 state 1) 1) - ) + (if (not (paused?)) (+! (-> arg0 state 1) 1)) (let ((f30-0 (update-mood-palette arg0 arg1 arg2)) (f28-0 (* -0.00000055486504 (-> *math-camera* trans y))) - (s5-1 (-> arg0 light-group)) - ) + (s5-1 (-> arg0 light-group))) (when *time-of-day-effects* (update-mood-light arg0 2 0 1 0.875 0.25 20.0 32) (update-mood-caustics arg0 4 1) @@ -1473,127 +1012,118 @@ (let ((a1-6 (new 'static 'vector :x 0.192 :y 0.192 :z 0.24)) (a2-4 (new 'static 'vector :x 0.124 :y 0.124 :z 0.156)) (s4-1 (new 'static 'vector :x 0.192 :y 0.192 :z 0.24)) - (s3-0 (new 'static 'vector :x 0.181 :y 0.181 :z 0.226)) - ) + (s3-0 (new 'static 'vector :x 0.181 :y 0.181 :z 0.226))) (let ((v1-8 (-> s5-1 0))) (set! (-> v1-8 dir0 direction x) 0.0) (set! (-> v1-8 dir0 direction y) 1.0) (set! (-> v1-8 dir0 direction z) 0.0) - (set! (-> v1-8 dir0 direction w) 1.0) - ) + (set! (-> v1-8 dir0 direction w) 1.0)) (vector4-lerp! (-> s5-1 0 dir1 color) a1-6 a2-4 f28-0) (let ((v1-9 (-> s5-1 0 dir1))) (set! (-> v1-9 direction x) 0.0) (set! (-> v1-9 direction y) 1.0) (set! (-> v1-9 direction z) 0.0) - (set! (-> v1-9 direction w) 1.0) - ) - (vector4-lerp! (-> s5-1 0 dir0 color) s4-1 s3-0 f28-0) - ) + (set! (-> v1-9 direction w) 1.0)) + (vector4-lerp! (-> s5-1 0 dir0 color) s4-1 s3-0 f28-0)) (let ((a1-8 (new 'static 'vector :x 0.104 :y 0.587 :z 1.074)) (a2-6 (new 'static 'vector :x 0.228 :y 0.3 :z 0.52)) (s4-2 (new 'static 'vector :x 0.101 :y 0.392 :z 1.064)) (s3-1 (new 'static 'vector :x 0.132 :y 0.22 :z 0.52)) (s1-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) - ) + (s2-0 (new 'stack-no-clear 'vector))) (vector4-lerp! s1-0 a1-8 a2-6 f28-0) (vector4-lerp! s2-0 s4-2 s3-1 f28-0) - (vector4-lerp! (-> s5-1 0 ambi color) s2-0 s1-0 f30-0) - ) + (vector4-lerp! (-> s5-1 0 ambi color) s2-0 s1-0 f30-0)) (let ((s2-1 (new 'static 'vector :x 0.193 :y 0.432 :z 0.721)) (s1-1 (new 'static 'vector :x 0.193 :y 0.338 :z 0.603)) - (s0-0 (new 'static 'vector :x 0.193 :y 0.336 :z 0.721)) - ) + (s0-0 (new 'static 'vector :x 0.193 :y 0.336 :z 0.721))) (set! sv-80 (new 'static 'vector :x 0.215 :y 0.309 :z 0.674)) (let ((s3-2 (new 'stack-no-clear 'vector)) (s4-3 (new 'stack-no-clear 'vector)) (f26-3 (+ 0.75 (* 0.0625 (cos (the float (* 4000 (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter))))) ;; changed for high fps - (* 0.0625 (cos (the float (shl (the int (* (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter))) 11)))) ;; changed for high fps + (* 0.0625 + (cos (the float (shl (the int (* (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter))) 11)))) ;; changed for high fps (* 0.125 (cos (the float (* 1500 (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter))))) ;; changed for high fps - ) - ) - ) + ))) (vector4-lerp! s3-2 s2-1 s1-1 f28-0) (let ((t9-16 vector4-lerp!) (a0-19 s4-3) - (a3-7 f28-0) - ) - (t9-16 a0-19 s0-0 sv-80 a3-7) - ) + (a3-7 f28-0)) + (t9-16 a0-19 s0-0 sv-80 a3-7)) (let ((v1-18 (-> s5-1 0 dir2))) (set! (-> v1-18 direction x) 0.0) (set! (-> v1-18 direction y) 0.999) (set! (-> v1-18 direction z) 0.011) - (set! (-> v1-18 direction w) 1.0) - ) + (set! (-> v1-18 direction w) 1.0)) (vector4-lerp! (-> s5-1 0 dir2 color) s4-3 s3-2 f30-0) - (set! (-> s5-1 0 dir2 levels x) f26-3) - ) - ) - ) - ) - (update-mood-itimes arg0) - ) + (set! (-> s5-1 0 dir2 levels x) f26-3))))) + (update-mood-itimes arg0)) 0 - (none) - ) + (none)) (deftype rolling-states (structure) - ((light0 light-state :inline) - (light1 light-state :inline) - (light2 light-state :inline) - (light3 light-state :inline) - (time light-time-state :inline) - (lightning lightning-state :inline) - ) - ) - - -(define *rolling-spheres-on* (new 'static 'inline-array vector 11 - (new 'static 'vector :x -724992.0 :y 204800.0 :z -6635520.0 :w 24576.0) - (new 'static 'vector :x -692224.0 :y 204800.0 :z -6582272.0 :w 24576.0) - (new 'static 'vector :x -688128.0 :y 204800.0 :z -6520832.0 :w 24576.0) - (new 'static 'vector :x -712704.0 :y 204800.0 :z -6455296.0 :w 24576.0) - (new 'static 'vector :x -741376.0 :y 204800.0 :z -6369280.0 :w 24576.0) - (new 'static 'vector :x -774144.0 :y 204800.0 :z -6320128.0 :w 24576.0) - (new 'static 'vector :x -757760.0 :y 204800.0 :z -6234112.0 :w 24576.0) - (new 'static 'vector :x -696320.0 :y 204800.0 :z -6197248.0 :w 24576.0) - (new 'static 'vector :x -638976.0 :y 204800.0 :z -6164480.0 :w 24576.0) - (new 'static 'vector :x -749568.0 :y 110592.0 :z -6832128.0 :w 24576.0) - (new 'static 'vector :x -532480.0 :y 110592.0 :z -6017024.0 :w 24576.0) - ) - ) + ((light0 light-state :inline) + (light1 light-state :inline) + (light2 light-state :inline) + (light3 light-state :inline) + (time light-time-state :inline) + (lightning lightning-state :inline))) + +(define *rolling-spheres-on* + (new 'static + 'inline-array + vector + 11 + (new 'static 'vector :x -724992.0 :y 204800.0 :z -6635520.0 :w 24576.0) + (new 'static 'vector :x -692224.0 :y 204800.0 :z -6582272.0 :w 24576.0) + (new 'static 'vector :x -688128.0 :y 204800.0 :z -6520832.0 :w 24576.0) + (new 'static 'vector :x -712704.0 :y 204800.0 :z -6455296.0 :w 24576.0) + (new 'static 'vector :x -741376.0 :y 204800.0 :z -6369280.0 :w 24576.0) + (new 'static 'vector :x -774144.0 :y 204800.0 :z -6320128.0 :w 24576.0) + (new 'static 'vector :x -757760.0 :y 204800.0 :z -6234112.0 :w 24576.0) + (new 'static 'vector :x -696320.0 :y 204800.0 :z -6197248.0 :w 24576.0) + (new 'static 'vector :x -638976.0 :y 204800.0 :z -6164480.0 :w 24576.0) + (new 'static 'vector :x -749568.0 :y 110592.0 :z -6832128.0 :w 24576.0) + (new 'static 'vector :x -532480.0 :y 110592.0 :z -6017024.0 :w 24576.0))) (define *rolling-spheres-light0* (new 'static 'vector :x -524288.0 :y 110592.0 :z -6356992.0 :w 24576.0)) -(define *rolling-spheres-light1* (new 'static 'inline-array vector 4 - (new 'static 'vector :x -454656.0 :y 114688.0 :z -7081984.0 :w 81920.0) - (new 'static 'vector :x -581632.0 :y 110592.0 :z -6410240.0 :w 24576.0) - (new 'static 'vector :x -1265664.0 :y 106496.0 :z -6492160.0 :w 24576.0) - (new 'static 'vector :x -1302528.0 :y 106496.0 :z -6434816.0 :w 24576.0) - ) - ) +(define *rolling-spheres-light1* + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :x -454656.0 :y 114688.0 :z -7081984.0 :w 81920.0) + (new 'static 'vector :x -581632.0 :y 110592.0 :z -6410240.0 :w 24576.0) + (new 'static 'vector :x -1265664.0 :y 106496.0 :z -6492160.0 :w 24576.0) + (new 'static 'vector :x -1302528.0 :y 106496.0 :z -6434816.0 :w 24576.0))) (define *rolling-spheres-light2* - (new 'static 'light-ellipse - :matrix (new 'static 'matrix :vector (new 'static 'inline-array vector 4 - (new 'static 'vector :x -581632.0 :y 114688.0 :z -6479872.0 :w 24576.0) - (new 'static 'vector :x -737280.0 :y 110592.0 :z -7159808.0 :w 24576.0) - (new 'static 'vector :x -733184.0 :y 110592.0 :z -7266304.0 :w 24576.0) - (new 'static 'vector :x -1363968.0 :y 110592.0 :z -6578176.0 :w 24576.0) - ) - ) - :color (new 'static 'rgbaf :x -1404928.0 :y 110592.0 :z -6541312.0 :w 24576.0) - ) - ) - -(define *rolling-spheres-light3* (new 'static 'inline-array vector 2 - (new 'static 'vector :x -540672.0 :y 110592.0 :z -6549504.0 :w 24576.0) - (new 'static 'vector :x -774144.0 :y 204800.0 :z -6275072.0 :w 24576.0) - ) - ) + (new 'static + 'light-ellipse + :matrix + (new 'static + 'matrix + :vector + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :x -581632.0 :y 114688.0 :z -6479872.0 :w 24576.0) + (new 'static 'vector :x -737280.0 :y 110592.0 :z -7159808.0 :w 24576.0) + (new 'static 'vector :x -733184.0 :y 110592.0 :z -7266304.0 :w 24576.0) + (new 'static 'vector :x -1363968.0 :y 110592.0 :z -6578176.0 :w 24576.0))) + :color + (new 'static 'rgbaf :x -1404928.0 :y 110592.0 :z -6541312.0 :w 24576.0))) + +(define *rolling-spheres-light3* + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -540672.0 :y 110592.0 :z -6549504.0 :w 24576.0) + (new 'static 'vector :x -774144.0 :y 204800.0 :z -6275072.0 :w 24576.0))) (define *rolling-spheres-light4* (new 'static 'vector :x -688128.0 :y 217088.0 :z -5697536.0 :w 143360.0)) @@ -1607,29 +1137,17 @@ (update-mood-light arg0 5 1 4 0.875 0.25 arg1 0) (update-mood-light arg0 6 2 4 0.875 0.25 arg1 96) (update-mood-light arg0 7 3 4 0.875 0.25 arg1 64) - (if (not (paused?)) - (+! (-> arg0 state 4) 1) - ) - (update-mood-lightning arg0 2 2 5 2 0.5 #t) - ) - (let ((a0-10 (-> arg0 light-group 1))) - (update-light-kit a0-10 (-> arg0 light-group 0 ambi) 1.0) - ) + (if (not (paused?)) (+! (-> arg0 state 4) 1)) + (update-mood-lightning arg0 2 2 5 2 0.5 #t)) + (let ((a0-10 (-> arg0 light-group 1))) (update-light-kit a0-10 (-> arg0 light-group 0 ambi) 1.0)) (dotimes (s5-1 4) (let ((s4-1 (-> arg0 light-group (+ s5-1 2)))) (update-light-kit s4-1 (-> arg0 light-group 0 ambi) 1.0) - (set! (-> s4-1 dir0 levels x) (-> arg0 times (+ s5-1 4) w)) - ) - ) + (set! (-> s4-1 dir0 levels x) (-> arg0 times (+ s5-1 4) w)))) (let ((s5-2 (-> arg0 light-group 6))) (update-light-kit s5-2 (-> arg0 light-group 0 ambi) 1.0) - (set! (-> s5-2 dir0 levels x) (+ (* 0.25 (-> arg0 times 4 w)) - (* 0.25 (-> arg0 times 5 w)) - (* 0.25 (-> arg0 times 6 w)) - (* 0.25 (-> arg0 times 7 w)) - ) - ) - ) + (set! (-> s5-2 dir0 levels x) + (+ (* 0.25 (-> arg0 times 4 w)) (* 0.25 (-> arg0 times 5 w)) (* 0.25 (-> arg0 times 6 w)) (* 0.25 (-> arg0 times 7 w))))) (new 'stack-no-clear 'vector) (let ((s5-3 (target-joint-pos))) 0.0 @@ -1638,98 +1156,56 @@ (when (< f0-7 (-> *rolling-spheres-on* s4-2 w)) (let ((f30-0 (/ (- f0-7 (* 0.5 (-> *rolling-spheres-on* s4-2 w))) (* 0.5 (-> *rolling-spheres-on* s4-2 w))))) (set-target-light-index 1) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-0)))) - ) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-0)))))))) (let ((f0-11 (vector-vector-distance (the-as vector (&-> *rolling-spheres-light0* x)) s5-3))) (when (< f0-11 (-> *rolling-spheres-light0* w)) (let ((f30-1 (/ (- f0-11 (* 0.5 (-> *rolling-spheres-light0* w))) (* 0.5 (-> *rolling-spheres-light0* w))))) (set-target-light-index 2) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-1)))) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-1))))))) (dotimes (s4-3 4) (let ((f0-15 (vector-vector-distance (-> *rolling-spheres-light1* s4-3) s5-3))) (when (< f0-15 (-> *rolling-spheres-light1* s4-3 w)) - (let ((f30-2 - (/ (- f0-15 (* 0.5 (-> *rolling-spheres-light1* s4-3 w))) (* 0.5 (-> *rolling-spheres-light1* s4-3 w))) - ) - ) + (let ((f30-2 (/ (- f0-15 (* 0.5 (-> *rolling-spheres-light1* s4-3 w))) (* 0.5 (-> *rolling-spheres-light1* s4-3 w))))) (set-target-light-index 3) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-2)))) - ) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-2)))))))) (dotimes (s4-4 5) (let ((f0-19 (vector-vector-distance (the-as vector (+ (the-as uint *rolling-spheres-light2*) (* s4-4 16))) s5-3))) (when (< f0-19 (-> *rolling-spheres-light2* matrix vector s4-4 w)) (let ((f30-3 (/ (- f0-19 (* 0.5 (-> *rolling-spheres-light2* matrix vector s4-4 w))) - (* 0.5 (-> *rolling-spheres-light2* matrix vector s4-4 w)) - ) - ) - ) + (* 0.5 (-> *rolling-spheres-light2* matrix vector s4-4 w))))) (set-target-light-index 4) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-3)))) - ) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-3)))))))) (dotimes (s4-5 2) (let ((f0-23 (vector-vector-distance (-> *rolling-spheres-light3* s4-5) s5-3))) (when (< f0-23 (-> *rolling-spheres-light3* s4-5 w)) - (let ((f30-4 - (/ (- f0-23 (* 0.5 (-> *rolling-spheres-light3* s4-5 w))) (* 0.5 (-> *rolling-spheres-light3* s4-5 w))) - ) - ) + (let ((f30-4 (/ (- f0-23 (* 0.5 (-> *rolling-spheres-light3* s4-5 w))) (* 0.5 (-> *rolling-spheres-light3* s4-5 w))))) (set-target-light-index 5) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-4)))) - ) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-4)))))))) (let ((f0-27 (vector-vector-distance (the-as vector (&-> *rolling-spheres-light4* x)) s5-3))) (when (< f0-27 (-> *rolling-spheres-light4* w)) (let ((f30-5 (/ (- f0-27 (* 0.5 (-> *rolling-spheres-light4* w))) (* 0.5 (-> *rolling-spheres-light4* w))))) (set-target-light-index 6) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-5)))) - ) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-5)))))))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype firecanyon-states (structure) - ((lava lava-state :inline) - ) - ) - + ((lava lava-state :inline))) (defun update-mood-firecanyon ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) (update-mood-sky-texture arg0 arg1) (clear-mood-times arg0) (update-mood-palette arg0 arg1 arg2) - (if *time-of-day-effects* - (update-mood-lava arg0 4 0 #t) - ) + (if *time-of-day-effects* (update-mood-lava arg0 4 0 #t)) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype training-states (structure) - ((light light-state :inline) - (time light-time-state :inline) - ) - ) - + ((light light-state :inline) + (time light-time-state :inline))) (defun update-mood-training ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -1738,20 +1214,13 @@ (update-mood-palette arg0 arg1 arg2) (when *time-of-day-effects* (update-mood-light arg0 5 0 1 0.875 0.25 arg1 32) - (if (not (paused?)) - (+! (-> arg0 state 1) 1) - ) - ) + (if (not (paused?)) (+! (-> arg0 state 1) 1))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype maincave-states (structure) - ((flames flames-state :inline) - ) - ) - + ((flames flames-state :inline))) (defun update-mood-maincave ((arg0 mood-context) (arg1 float) (arg2 int)) (when (not (paused?)) @@ -1764,23 +1233,14 @@ (set! (-> arg0 times 2 w) (-> *palette-fade-controls* control 2 fade)) (set! (-> arg0 times 3 w) 1.0) (let ((a0-4 (new 'stack-no-clear 'vector)) - (a1-3 (-> *math-camera* trans)) - ) + (a1-3 (-> *math-camera* trans))) (set-vector! a0-4 4417536.0 86016.0 -13250560.0 1.0) (let ((f0-8 (vector-vector-distance a0-4 a1-3))) (when (< f0-8 483328.0) - (let ((f1-2 (* 0.0000048828124 (+ -278528.0 f0-8)))) - (set! (-> arg0 times 3 w) (fmax 0.0 (fmin 1.9 f1-2))) - ) - ) - ) - ) - ) - (update-mood-itimes arg0) - ) + (let ((f1-2 (* 0.0000048828124 (+ -278528.0 f0-8)))) (set! (-> arg0 times 3 w) (fmax 0.0 (fmin 1.9 f1-2)))))))) + (update-mood-itimes arg0)) 0 - (none) - ) + (none)) (defun update-mood-darkcave ((arg0 mood-context) (arg1 float) (arg2 int)) (when (not (paused?)) @@ -1789,39 +1249,27 @@ (set-vector! (-> arg0 mood-lights-table data 0 prt-color) 0.0 0.0 0.0 0.0) (when *time-of-day-effects* (let ((f30-0 0.0) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (let ((s3-0 (new 'stack-no-clear 'vector))) 0.0 0.0 (set-vector! s4-0 0.0 -1.0 0.0 0.0) (let ((s2-0 1) - (s1-0 7) - ) + (s1-0 7)) (while (>= s1-0 s2-0) (let ((f28-0 (-> *palette-fade-controls* control s2-0 fade))) (set! (-> arg0 times s2-0 w) f28-0) (vector-! s3-0 (the-as vector (-> *palette-fade-controls* control s2-0)) (-> *target* control trans)) (let* ((f3-0 (vector-length s3-0)) - (f28-1 (* f28-0 (fmax 0.0 (fmin 1.0 (- 1.0 (* 0.000012207031 f3-0)))))) - ) + (f28-1 (* f28-0 (fmax 0.0 (fmin 1.0 (- 1.0 (* 0.000012207031 f3-0))))))) (vector-normalize! s3-0 f28-1) - (if (< f30-0 f28-1) - (set! f30-0 f28-1) - ) - ) - ) + (if (< f30-0 f28-1) (set! f30-0 f28-1)))) (vector+! s4-0 s4-0 s3-0) - (+! s2-0 1) - ) - ) - ) + (+! s2-0 1)))) (let ((f0-14 (fmin 1.0 f30-0)) (a2-1 (new 'static 'vector :y 1.0 :z 0.5 :w 1.0)) - (a1-8 (new 'static 'vector :x 0.3 :y 0.4 :z 0.5 :w 1.0)) - ) - (vector-lerp! (-> arg0 mood-lights-table data 0 amb-color) a1-8 a2-1 f0-14) - ) + (a1-8 (new 'static 'vector :x 0.3 :y 0.4 :z 0.5 :w 1.0))) + (vector-lerp! (-> arg0 mood-lights-table data 0 amb-color) a1-8 a2-1 f0-14)) (set! (-> arg0 mood-lights-table data 0 prt-color quad) (-> arg0 mood-lights-table data 0 amb-color quad)) (vector-normalize! s4-0 1.0) (let ((v1-21 (-> arg0 mood-lights-table data 0 shadow))) @@ -1833,52 +1281,35 @@ (f1-3 (-> v1-21 x)) (f1-5 (* f1-3 f1-3)) (f2-2 (-> v1-21 z)) - (f0-23 (/ f0-22 (sqrtf (+ f1-5 (* f2-2 f2-2))))) - ) + (f0-23 (/ f0-22 (sqrtf (+ f1-5 (* f2-2 f2-2)))))) (set! (-> v1-21 x) (* (-> v1-21 x) f0-23)) (set! (-> v1-21 y) -0.9063) - (set! (-> v1-21 z) (* (-> v1-21 z) f0-23)) - ) - ) - ) - ) - ) + (set! (-> v1-21 z) (* (-> v1-21 z) f0-23))))))) (set! *teleport* #t) (update-mood-quick arg0 0 0 0 arg2) (set-vector! (-> arg0 current-shadow-color) 0.25 0.25 0.25 1.0) - (update-mood-itimes arg0) - ) + (update-mood-itimes arg0)) 0 - (none) - ) + (none)) (deftype robocave-states (structure) - ((flames flames-state :inline) - ) - ) - + ((flames flames-state :inline))) (defun update-mood-robocave ((arg0 mood-context) (arg1 float) (arg2 int)) (clear-mood-times arg0) (set! (-> arg0 times 0 w) 1.0) - (if *time-of-day-effects* - (update-mood-flames arg0 4 4 0 0.333 0.001953125 1.0) - ) + (if *time-of-day-effects* (update-mood-flames arg0 4 4 0 0.333 0.001953125 1.0)) (update-mood-quick arg0 0 0 0 arg2) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype snow-states (structure) - ((flames flames-state :inline) - (light light-state :inline) - (time light-time-state :inline) - (one-shot uint8) - (interp float) - ) - ) - + ((flames flames-state :inline) + (light light-state :inline) + (time light-time-state :inline) + (one-shot uint8) + (interp float))) (defun update-mood-snow ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -1889,67 +1320,37 @@ (update-mood-flames arg0 4 3 0 0.45 0.001953125 1.0) (let ((s5-1 (the-as snow-states (-> arg0 state)))) (let ((v1-3 (get-reminder (get-task-control (game-task snow-eggtop)) 4)) - (s4-1 (-> s5-1 one-shot)) - ) + (s4-1 (-> s5-1 one-shot))) (cond ((and (= v1-3 2) (nonzero? s4-1)) - (if (< (the-as uint 60) s4-1) - (set! (-> arg0 times 7 w) 2.0) - (set! (-> arg0 times 7 w) (* 0.033333335 (the float s4-1))) - ) - (if (not (paused?)) - (set! (-> s5-1 one-shot) (+ s4-1 -1)) - ) - ) + (if (< (the-as uint 60) s4-1) (set! (-> arg0 times 7 w) 2.0) (set! (-> arg0 times 7 w) (* 0.033333335 (the float s4-1)))) + (if (not (paused?)) (set! (-> s5-1 one-shot) (+ s4-1 -1)))) ((and (nonzero? v1-3) (!= s4-1 180)) (set! (-> arg0 state 6) (the-as uint 0)) (update-mood-light arg0 7 4 5 0.875 0.25 20.0 32) - (if (not (paused?)) - (+! (-> arg0 state 5) 1) - ) - ) + (if (not (paused?)) (+! (-> arg0 state 5) 1))) (else - (set! (-> arg0 state 6) (the-as uint 180)) - (set! (-> arg0 state 5) (the-as uint 0)) - (set! (-> arg0 state 4) (the-as uint 255)) - ) - ) - ) + (set! (-> arg0 state 6) (the-as uint 180)) + (set! (-> arg0 state 5) (the-as uint 0)) + (set! (-> arg0 state 4) (the-as uint 255))))) (let ((f30-0 (-> s5-1 interp))) (when (not (paused?)) - (let ((f0-4 (if *weather-off* - (+ 0.1 f30-0) - (+ -0.1 f30-0) - ) - ) - ) - (set! f30-0 (fmax 0.0 (fmin 1.0 f0-4))) - ) - (set! (-> s5-1 interp) f30-0) - ) - (vector4-lerp! - (-> arg0 current-sun env-color) - (-> arg0 current-sun env-color) - (-> arg0 mood-sun-table data 6 env-color) - f30-0 - ) - ) - ) - ) + (let ((f0-4 (if *weather-off* (+ 0.1 f30-0) (+ -0.1 f30-0)))) (set! f30-0 (fmax 0.0 (fmin 1.0 f0-4)))) + (set! (-> s5-1 interp) f30-0)) + (vector4-lerp! (-> arg0 current-sun env-color) + (-> arg0 current-sun env-color) + (-> arg0 mood-sun-table data 6 env-color) + f30-0)))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype village3-states (structure) - ((flames flames-state :inline) - (scale float) - (lava lava-state :inline) - (lava-time float) - (time uint8) - ) - ) - + ((flames flames-state :inline) + (scale float) + (lava lava-state :inline) + (lava-time float) + (time uint8))) (defun update-mood-village3 ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -1961,51 +1362,43 @@ (let ((s3-0 (new 'stack-no-clear 'vector)) (s2-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'vector)) - ) + (s5-1 (new 'stack-no-clear 'vector))) (let ((v1-3 (-> arg0 mood-lights-table data))) (set! (-> v1-3 0 direction x) -0.067) (set! (-> v1-3 0 direction y) 0.25) (set! (-> v1-3 0 direction z) 0.966) - (set! (-> v1-3 0 direction w) 0.0) - ) + (set! (-> v1-3 0 direction w) 0.0)) (set-vector! (-> arg0 mood-lights-table data 0 lgt-color) 0.0 0.0 0.0 1.0) (set-vector! (-> arg0 mood-lights-table data 0 amb-color) 0.449 0.35 0.599 1.0) (let ((v1-9 (-> arg0 mood-lights-table data 1))) (set! (-> v1-9 direction x) 0.259) (set! (-> v1-9 direction y) 0.966) (set! (-> v1-9 direction z) 0.0) - (set! (-> v1-9 direction w) 0.0) - ) + (set! (-> v1-9 direction w) 0.0)) (set-vector! (-> arg0 mood-lights-table data 1 lgt-color) 0.66 0.436 0.291 1.0) (set-vector! (-> arg0 mood-lights-table data 1 amb-color) 0.358 0.575 0.716 1.0) (let ((v1-15 (-> arg0 mood-lights-table data 2))) (set! (-> v1-15 direction x) -0.067) (set! (-> v1-15 direction y) 0.25) (set! (-> v1-15 direction z) -0.966) - (set! (-> v1-15 direction w) 0.0) - ) + (set! (-> v1-15 direction w) 0.0)) (set-vector! (-> arg0 mood-lights-table data 2 lgt-color) 0.0 0.0 0.0 1.0) (set-vector! (-> arg0 mood-lights-table data 2 amb-color) 0.383 0.366 0.599 1.0) (let ((v1-21 (-> arg0 mood-lights-table data 3))) (set! (-> v1-21 direction x) 0.866) (set! (-> v1-21 direction y) 0.5) (set! (-> v1-21 direction z) 0.0) - (set! (-> v1-21 direction w) 0.0) - ) + (set! (-> v1-21 direction w) 0.0)) (set-vector! (-> arg0 mood-lights-table data 3 lgt-color) 0.0 0.0 0.0 1.0) (set-vector! (-> arg0 mood-lights-table data 3 amb-color) 0.304 0.409 0.76 1.0) (let ((s0-0 (-> arg0 light-group 1))) (update-light-kit s0-0 (-> arg0 light-group 0 ambi) 1.25) - (set! (-> s0-0 dir2 levels x) (+ 0.666 (* 0.333 (-> arg0 times 4 w)))) - ) + (set! (-> s0-0 dir2 levels x) (+ 0.666 (* 0.333 (-> arg0 times 4 w))))) (let ((s0-1 (-> arg0 light-group 2))) (update-light-kit s0-1 (-> arg0 light-group 0 ambi) 1.25) - (set! (-> s0-1 dir2 levels x) (+ 0.666 (* 0.333 (-> arg0 times 4 w)))) - ) + (set! (-> s0-1 dir2 levels x) (+ 0.666 (* 0.333 (-> arg0 times 4 w))))) (let ((v1-28 (new 'static 'vector :x 4605890.5 :z -14253220.0 :w 1.0)) - (a0-8 (new 'stack-no-clear 'vector)) - ) + (a0-8 (new 'stack-no-clear 'vector))) 0.0 (vector-! a0-8 (-> *target* control trans) v1-28) (set! (-> a0-8 y) 0.0) @@ -2018,145 +1411,70 @@ (let* ((f1-18 (* 0.000008138021 (+ -409600.0 f0-54))) (a1-9 (new 'static 'vector :x 0.66 :y 0.436 :z 0.291)) (a2-8 (new 'static 'vector :x 0.19 :y 0.128 :z 0.128)) - (f30-0 (fmax 0.0 (fmin 1.0 f1-18))) - ) + (f30-0 (fmax 0.0 (fmin 1.0 f1-18)))) (vector-lerp! s2-0 a1-9 a2-8 f30-0) (let ((s0-2 (the-as village3-states (-> arg0 state)))) (when (not (paused?)) (set! (-> s0-2 time) (the-as uint (the int (+ 4.0 arg1)))) - (+! (-> s0-2 lava-time) (rand-vu-float-range 64.0 2048.0)) - ) + (+! (-> s0-2 lava-time) (rand-vu-float-range 64.0 2048.0))) (-> arg0 mood-lights-table data 7) (let* ((s1-1 (-> arg0 light-group 0 dir2)) (f1-21 (+ 0.875 (* 0.125 (sin (-> s0-2 lava-time))))) - (f0-66 (* 3.52 f1-21)) - ) + (f0-66 (* 3.52 f1-21))) (set-vector! (-> s1-1 direction) 0.0 -1.0 0.0 0.0) (set-vector! (-> s1-1 color) 1.0 0.38 0.0 1.0) (set! (-> s1-1 levels x) (* f1-21 (- 1.0 f30-0))) - (set! (-> s1-1 levels y) (* f0-66 (- 1.0 f30-0))) - ) + (set! (-> s1-1 levels y) (* f0-66 (- 1.0 f30-0)))) (let ((f30-1 (* 0.015625 (the float (logand (-> s0-2 time) 63))))) (set! (-> s0-2 scale) (the float (the int (rand-vu-float-range 128.0 255.0)))) - (set! (-> arg0 times 7 w) (* f30-1 (-> s0-2 scale))) - ) - ) - ) - ) - (else - (set-vector! s2-0 0.19 0.128 0.128 1.0) - ) - ) - ) - ) + (set! (-> arg0 times 7 w) (* f30-1 (-> s0-2 scale))))))) + (else (set-vector! s2-0 0.19 0.128 0.128 1.0))))) (let ((s1-2 (new 'stack-no-clear 'vector)) - (a1-12 (target-joint-pos)) - ) + (a1-12 (target-joint-pos))) 0.0 (set-vector! s1-2 4454400.0 196608.0 -14725120.0 1.0) (let ((f0-83 (vector-vector-distance s1-2 a1-12))) (when (< f0-83 122880.0) (let ((f30-2 (* 0.000016276043 (+ -61440.0 f0-83)))) (set-target-light-index 2) - (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-2)))) - ) - ) - ) - ) + (set! (-> *time-of-day-context* target-interp) (- 1.0 (fmax 0.0 (fmin 1.0 f30-2)))))))) (let* ((f1-33 (* 0.0000044389203 (+ -184320.0 (-> *math-camera* trans y)))) - (f30-3 (fmax 0.0 (fmin 1.0 f1-33))) - ) + (f30-3 (fmax 0.0 (fmin 1.0 f1-33)))) (let ((v1-49 (-> arg0 light-group 0 dir2))) (set! (-> v1-49 levels x) (* (-> v1-49 levels x) (- 1.0 f30-3))) - (set! (-> v1-49 levels y) (* (-> v1-49 levels y) (- 1.0 f30-3))) - ) - (vector-lerp! - (-> arg0 mood-lights-table data 0 lgt-color) - s3-0 - (-> arg0 mood-lights-table data 0 lgt-color) - f30-3 - ) - (vector-lerp! - (-> arg0 mood-lights-table data 1 lgt-color) - s2-0 - (-> arg0 mood-lights-table data 1 lgt-color) - f30-3 - ) - (vector-lerp! - (-> arg0 mood-lights-table data 2 lgt-color) - s3-0 - (-> arg0 mood-lights-table data 2 lgt-color) - f30-3 - ) - (vector-lerp! - (-> arg0 mood-lights-table data 3 lgt-color) - s3-0 - (-> arg0 mood-lights-table data 3 lgt-color) - f30-3 - ) - (vector-lerp! - (-> arg0 mood-lights-table data 0 amb-color) - s4-0 - (-> arg0 mood-lights-table data 0 amb-color) - f30-3 - ) - (vector-lerp! - (-> arg0 mood-lights-table data 1 amb-color) - s4-0 - (-> arg0 mood-lights-table data 1 amb-color) - f30-3 - ) - (vector-lerp! - (-> arg0 mood-lights-table data 2 amb-color) - s4-0 - (-> arg0 mood-lights-table data 2 amb-color) - f30-3 - ) - (vector-lerp! - (-> arg0 mood-lights-table data 3 amb-color) - s4-0 - (-> arg0 mood-lights-table data 3 amb-color) - f30-3 - ) - (vector-lerp! - (the-as vector (-> arg0 mood-lights-table data)) - s5-1 - (the-as vector (-> arg0 mood-lights-table data)) - f30-3 - ) - (vector-lerp! - (the-as vector (-> arg0 mood-lights-table data 1)) - s5-1 - (the-as vector (-> arg0 mood-lights-table data 1)) - f30-3 - ) - (vector-lerp! - (the-as vector (-> arg0 mood-lights-table data 2)) - s5-1 - (the-as vector (-> arg0 mood-lights-table data 2)) - f30-3 - ) - (vector-lerp! - (the-as vector (-> arg0 mood-lights-table data 3)) - s5-1 - (the-as vector (-> arg0 mood-lights-table data 3)) - f30-3 - ) - ) - ) - ) + (set! (-> v1-49 levels y) (* (-> v1-49 levels y) (- 1.0 f30-3)))) + (vector-lerp! (-> arg0 mood-lights-table data 0 lgt-color) s3-0 (-> arg0 mood-lights-table data 0 lgt-color) f30-3) + (vector-lerp! (-> arg0 mood-lights-table data 1 lgt-color) s2-0 (-> arg0 mood-lights-table data 1 lgt-color) f30-3) + (vector-lerp! (-> arg0 mood-lights-table data 2 lgt-color) s3-0 (-> arg0 mood-lights-table data 2 lgt-color) f30-3) + (vector-lerp! (-> arg0 mood-lights-table data 3 lgt-color) s3-0 (-> arg0 mood-lights-table data 3 lgt-color) f30-3) + (vector-lerp! (-> arg0 mood-lights-table data 0 amb-color) s4-0 (-> arg0 mood-lights-table data 0 amb-color) f30-3) + (vector-lerp! (-> arg0 mood-lights-table data 1 amb-color) s4-0 (-> arg0 mood-lights-table data 1 amb-color) f30-3) + (vector-lerp! (-> arg0 mood-lights-table data 2 amb-color) s4-0 (-> arg0 mood-lights-table data 2 amb-color) f30-3) + (vector-lerp! (-> arg0 mood-lights-table data 3 amb-color) s4-0 (-> arg0 mood-lights-table data 3 amb-color) f30-3) + (vector-lerp! (the-as vector (-> arg0 mood-lights-table data)) + s5-1 + (the-as vector (-> arg0 mood-lights-table data)) + f30-3) + (vector-lerp! (the-as vector (-> arg0 mood-lights-table data 1)) + s5-1 + (the-as vector (-> arg0 mood-lights-table data 1)) + f30-3) + (vector-lerp! (the-as vector (-> arg0 mood-lights-table data 2)) + s5-1 + (the-as vector (-> arg0 mood-lights-table data 2)) + f30-3) + (vector-lerp! (the-as vector (-> arg0 mood-lights-table data 3)) + s5-1 + (the-as vector (-> arg0 mood-lights-table data 3)) + f30-3)))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype lavatube-states (structure) - ((lava lava-state :inline) - (light light-state :inline) - (time light-time-state :inline) - ) - ) - + ((lava lava-state :inline) + (light light-state :inline) + (time light-time-state :inline))) (set! (-> *lavatube-mood* state 18) (the-as uint 255)) @@ -2166,25 +1484,18 @@ (when *time-of-day-effects* (set! (-> arg0 times 2 w) (-> *palette-fade-controls* control 2 fade)) (update-mood-light arg0 1 18 19 0.875 0.25 20.0 32) - (if (not (paused?)) - (+! (-> arg0 some-byte) 1) - ) - (update-mood-lava arg0 4 0 #t) - ) + (if (not (paused?)) (+! (-> arg0 some-byte) 1)) + (update-mood-lava arg0 4 0 #t)) (update-mood-quick arg0 0 0 0 arg2) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype ogre-states (structure) - ((lava lava-state :inline) - (lightning lightning-state :inline) - (lava-time float) - (lava-fade float) - ) - ) - + ((lava lava-state :inline) + (lightning lightning-state :inline) + (lava-time float) + (lava-fade float))) (defun update-mood-ogre ((arg0 mood-context) (arg1 float) (arg2 int)) (update-mood-fog arg0 arg1) @@ -2193,50 +1504,32 @@ (update-mood-palette arg0 arg1 arg2) (when *time-of-day-effects* (let ((s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (-> *math-camera* trans)) - ) + (s3-0 (-> *math-camera* trans))) (set-vector! s4-0 868352.0 151552.0 -7720960.0 1.0) (let ((f30-0 (vector-vector-distance s4-0 s3-0))) (cond ((< f30-0 614400.0) (update-mood-palette *ogre2-mood* arg1 arg2) (let* ((f1-2 (* 0.0000048828124 (+ -409600.0 f30-0))) - (f30-1 (fmax 0.0 (fmin 1.0 f1-2))) - ) + (f30-1 (fmax 0.0 (fmin 1.0 f1-2)))) (let ((s4-1 (the-as ogre-states (-> arg0 state)))) - (if (not (paused?)) - (+! (-> s4-1 lava-time) (rand-vu-float-range 64.0 2048.0)) - ) - (if (not (movie?)) - (update-mood-lightning arg0 2 2 18 4 0.5 #f) - ) + (if (not (paused?)) (+! (-> s4-1 lava-time) (rand-vu-float-range 64.0 2048.0))) + (if (not (movie?)) (update-mood-lightning arg0 2 2 18 4 0.5 #f)) (cond ((or (nonzero? *lightning-time2*) (movie?)) - (if (not (paused?)) - (+! (-> s4-1 lava-fade) 0.2) - ) - (if (< 1.0 (-> s4-1 lava-fade)) - (set! (-> s4-1 lava-fade) 1.0) - ) + (if (not (paused?)) (+! (-> s4-1 lava-fade) 0.2)) + (if (< 1.0 (-> s4-1 lava-fade)) (set! (-> s4-1 lava-fade) 1.0)) (let* ((f28-1 (-> s4-1 lava-fade)) (s5-1 (-> arg0 light-group 0 dir2)) (f1-6 (+ 0.875 (* 0.125 (sin (-> s4-1 lava-time))))) - (f0-17 (* 3.52 f1-6)) - ) + (f0-17 (* 3.52 f1-6))) (set-vector! (-> s5-1 direction) 0.0 -1.0 0.0 0.0) (set-vector! (-> s5-1 color) 1.0 0.38 0.0 1.0) (set! (-> s5-1 levels x) (* f1-6 (- 1.0 f30-1) f28-1)) - (set! (-> s5-1 levels y) (* f0-17 (- 1.0 f30-1) f28-1)) - ) - ) - (else - (set! (-> s4-1 lava-fade) 0.0) - ) - ) - ) + (set! (-> s5-1 levels y) (* f0-17 (- 1.0 f30-1) f28-1)))) + (else (set! (-> s4-1 lava-fade) 0.0)))) (let ((s5-2 (-> arg0 light-group)) - (s4-2 (-> *ogre2-mood* light-group)) - ) + (s4-2 (-> *ogre2-mood* light-group))) (cond ((= f30-1 0.0) (set! (-> s5-2 0 dir0 direction quad) (-> s4-2 0 dir0 direction quad)) @@ -2248,131 +1541,78 @@ (set! (-> s5-2 0 ambi direction quad) (-> s4-2 0 ambi direction quad)) (set! (-> s5-2 0 ambi color quad) (-> s4-2 0 ambi color quad)) (set! (-> s5-2 0 ambi levels quad) (-> s4-2 0 ambi levels quad)) - (set! (-> arg0 current-shadow quad) (-> *ogre2-mood* current-shadow quad)) - ) + (set! (-> arg0 current-shadow quad) (-> *ogre2-mood* current-shadow quad))) (else - (vector4-lerp! (the-as vector (-> s5-2 0)) (the-as vector (-> s4-2 0)) (the-as vector (-> s5-2 0)) f30-1) - (vector4-lerp! (-> s5-2 0 dir0 color) (-> s4-2 0 dir0 color) (-> s5-2 0 dir0 color) f30-1) - (vector4-lerp! (-> s5-2 0 dir0 levels) (-> s4-2 0 dir0 levels) (-> s5-2 0 dir0 levels) f30-1) - (vector4-lerp! - (the-as vector (-> s5-2 0 dir1)) - (the-as vector (-> s4-2 0 dir1)) - (the-as vector (-> s5-2 0 dir1)) - f30-1 - ) - (vector4-lerp! (-> s5-2 0 dir1 color) (-> s4-2 0 dir1 color) (-> s5-2 0 dir1 color) f30-1) - (vector4-lerp! (-> s5-2 0 dir1 levels) (-> s4-2 0 dir1 levels) (-> s5-2 0 dir1 levels) f30-1) - (vector4-lerp! - (the-as vector (-> s5-2 0 ambi)) - (the-as vector (-> s4-2 0 ambi)) - (the-as vector (-> s5-2 0 ambi)) - f30-1 - ) - (vector4-lerp! (-> s5-2 0 ambi color) (-> s4-2 0 ambi color) (-> s5-2 0 ambi color) f30-1) - (vector4-lerp! (-> s5-2 0 ambi levels) (-> s4-2 0 ambi levels) (-> s5-2 0 ambi levels) f30-1) - (vector4-lerp! (-> arg0 current-shadow) (-> *ogre2-mood* current-shadow) (-> arg0 current-shadow) f30-1) - ) - ) - ) - ) - ) + (vector4-lerp! (the-as vector (-> s5-2 0)) (the-as vector (-> s4-2 0)) (the-as vector (-> s5-2 0)) f30-1) + (vector4-lerp! (-> s5-2 0 dir0 color) (-> s4-2 0 dir0 color) (-> s5-2 0 dir0 color) f30-1) + (vector4-lerp! (-> s5-2 0 dir0 levels) (-> s4-2 0 dir0 levels) (-> s5-2 0 dir0 levels) f30-1) + (vector4-lerp! (the-as vector (-> s5-2 0 dir1)) (the-as vector (-> s4-2 0 dir1)) (the-as vector (-> s5-2 0 dir1)) f30-1) + (vector4-lerp! (-> s5-2 0 dir1 color) (-> s4-2 0 dir1 color) (-> s5-2 0 dir1 color) f30-1) + (vector4-lerp! (-> s5-2 0 dir1 levels) (-> s4-2 0 dir1 levels) (-> s5-2 0 dir1 levels) f30-1) + (vector4-lerp! (the-as vector (-> s5-2 0 ambi)) (the-as vector (-> s4-2 0 ambi)) (the-as vector (-> s5-2 0 ambi)) f30-1) + (vector4-lerp! (-> s5-2 0 ambi color) (-> s4-2 0 ambi color) (-> s5-2 0 ambi color) f30-1) + (vector4-lerp! (-> s5-2 0 ambi levels) (-> s4-2 0 ambi levels) (-> s5-2 0 ambi levels) f30-1) + (vector4-lerp! (-> arg0 current-shadow) (-> *ogre2-mood* current-shadow) (-> arg0 current-shadow) f30-1)))))) (else - (set-vector! s4-0 2973696.0 184320.0 -13414400.0 1.0) - (let ((f30-2 (vector-vector-distance s4-0 s3-0))) - (when (< f30-2 1298432.0) - (update-mood-quick *ogre3-mood* 0 0 0 arg2) - (let* ((f1-13 (* 0.0000048828124 (+ -1093632.0 f30-2))) - (f30-3 (fmax 0.0 (fmin 1.0 f1-13))) - (s5-3 (-> arg0 light-group)) - (s4-3 (-> *ogre3-mood* light-group)) - ) - (cond - ((= f30-3 0.0) - (set! (-> s5-3 0 dir0 direction quad) (-> s4-3 0 dir0 direction quad)) - (set! (-> s5-3 0 dir0 color quad) (-> s4-3 0 dir0 color quad)) - (set! (-> s5-3 0 dir0 levels quad) (-> s4-3 0 dir0 levels quad)) - (set! (-> s5-3 0 dir1 direction quad) (-> s4-3 0 dir1 direction quad)) - (set! (-> s5-3 0 dir1 color quad) (-> s4-3 0 dir1 color quad)) - (set! (-> s5-3 0 dir1 levels quad) (-> s4-3 0 dir1 levels quad)) - (set! (-> s5-3 0 dir2 direction quad) (-> s4-3 0 dir2 direction quad)) - (set! (-> s5-3 0 dir2 color quad) (-> s4-3 0 dir2 color quad)) - (set! (-> s5-3 0 dir2 levels quad) (-> s4-3 0 dir2 levels quad)) - (set! (-> s5-3 0 ambi direction quad) (-> s4-3 0 ambi direction quad)) - (set! (-> s5-3 0 ambi color quad) (-> s4-3 0 ambi color quad)) - (set! (-> s5-3 0 ambi levels quad) (-> s4-3 0 ambi levels quad)) - (set! (-> arg0 current-shadow quad) (-> *ogre3-mood* current-shadow quad)) - (set! (-> arg0 current-fog fog-color quad) (-> *ogre3-mood* current-fog fog-color quad)) - (set! (-> arg0 current-fog fog-dists quad) (-> *ogre3-mood* current-fog fog-dists quad)) - (set! (-> arg0 current-fog erase-color quad) (-> *ogre3-mood* current-fog erase-color quad)) - ) - (else - (vector4-lerp! (the-as vector (-> s5-3 0)) (the-as vector (-> s4-3 0)) (the-as vector (-> s5-3 0)) f30-3) - (vector4-lerp! (-> s5-3 0 dir0 color) (-> s4-3 0 dir0 color) (-> s5-3 0 dir0 color) f30-3) - (vector4-lerp! (-> s5-3 0 dir0 levels) (-> s4-3 0 dir0 levels) (-> s5-3 0 dir0 levels) f30-3) - (vector4-lerp! - (the-as vector (-> s5-3 0 dir1)) - (the-as vector (-> s4-3 0 dir1)) - (the-as vector (-> s5-3 0 dir1)) - f30-3 - ) - (vector4-lerp! (-> s5-3 0 dir1 color) (-> s4-3 0 dir1 color) (-> s5-3 0 dir1 color) f30-3) - (vector4-lerp! (-> s5-3 0 dir1 levels) (-> s4-3 0 dir1 levels) (-> s5-3 0 dir1 levels) f30-3) - (vector4-lerp! - (the-as vector (-> s5-3 0 dir2)) - (the-as vector (-> s4-3 0 dir2)) - (the-as vector (-> s5-3 0 dir1)) - f30-3 - ) - (vector4-lerp! (-> s5-3 0 dir2 color) (-> s4-3 0 dir2 color) (-> s5-3 0 dir1 color) f30-3) - (vector4-lerp! (-> s5-3 0 dir2 levels) (-> s4-3 0 dir2 levels) (-> s5-3 0 dir1 levels) f30-3) - (vector4-lerp! - (the-as vector (-> s5-3 0 ambi)) - (the-as vector (-> s4-3 0 ambi)) - (the-as vector (-> s5-3 0 ambi)) - f30-3 - ) - (vector4-lerp! (-> s5-3 0 ambi color) (-> s4-3 0 ambi color) (-> s5-3 0 ambi color) f30-3) - (vector4-lerp! (-> s5-3 0 ambi levels) (-> s4-3 0 ambi levels) (-> s5-3 0 ambi levels) f30-3) - (vector4-lerp! (-> arg0 current-shadow) (-> *ogre3-mood* current-shadow) (-> arg0 current-shadow) f30-3) - (vector4-lerp! - (the-as vector (-> arg0 current-fog)) - (the-as vector (-> *ogre3-mood* current-fog)) - (the-as vector (-> arg0 current-fog)) - f30-3 - ) - (vector4-lerp! - (-> arg0 current-fog fog-dists) - (-> *ogre3-mood* current-fog fog-dists) - (-> arg0 current-fog fog-dists) - f30-3 - ) - (vector4-lerp! - (-> arg0 current-fog erase-color) - (-> *ogre3-mood* current-fog erase-color) - (-> arg0 current-fog erase-color) - f30-3 - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (set-vector! s4-0 2973696.0 184320.0 -13414400.0 1.0) + (let ((f30-2 (vector-vector-distance s4-0 s3-0))) + (when (< f30-2 1298432.0) + (update-mood-quick *ogre3-mood* 0 0 0 arg2) + (let* ((f1-13 (* 0.0000048828124 (+ -1093632.0 f30-2))) + (f30-3 (fmax 0.0 (fmin 1.0 f1-13))) + (s5-3 (-> arg0 light-group)) + (s4-3 (-> *ogre3-mood* light-group))) + (cond + ((= f30-3 0.0) + (set! (-> s5-3 0 dir0 direction quad) (-> s4-3 0 dir0 direction quad)) + (set! (-> s5-3 0 dir0 color quad) (-> s4-3 0 dir0 color quad)) + (set! (-> s5-3 0 dir0 levels quad) (-> s4-3 0 dir0 levels quad)) + (set! (-> s5-3 0 dir1 direction quad) (-> s4-3 0 dir1 direction quad)) + (set! (-> s5-3 0 dir1 color quad) (-> s4-3 0 dir1 color quad)) + (set! (-> s5-3 0 dir1 levels quad) (-> s4-3 0 dir1 levels quad)) + (set! (-> s5-3 0 dir2 direction quad) (-> s4-3 0 dir2 direction quad)) + (set! (-> s5-3 0 dir2 color quad) (-> s4-3 0 dir2 color quad)) + (set! (-> s5-3 0 dir2 levels quad) (-> s4-3 0 dir2 levels quad)) + (set! (-> s5-3 0 ambi direction quad) (-> s4-3 0 ambi direction quad)) + (set! (-> s5-3 0 ambi color quad) (-> s4-3 0 ambi color quad)) + (set! (-> s5-3 0 ambi levels quad) (-> s4-3 0 ambi levels quad)) + (set! (-> arg0 current-shadow quad) (-> *ogre3-mood* current-shadow quad)) + (set! (-> arg0 current-fog fog-color quad) (-> *ogre3-mood* current-fog fog-color quad)) + (set! (-> arg0 current-fog fog-dists quad) (-> *ogre3-mood* current-fog fog-dists quad)) + (set! (-> arg0 current-fog erase-color quad) (-> *ogre3-mood* current-fog erase-color quad))) + (else + (vector4-lerp! (the-as vector (-> s5-3 0)) (the-as vector (-> s4-3 0)) (the-as vector (-> s5-3 0)) f30-3) + (vector4-lerp! (-> s5-3 0 dir0 color) (-> s4-3 0 dir0 color) (-> s5-3 0 dir0 color) f30-3) + (vector4-lerp! (-> s5-3 0 dir0 levels) (-> s4-3 0 dir0 levels) (-> s5-3 0 dir0 levels) f30-3) + (vector4-lerp! (the-as vector (-> s5-3 0 dir1)) (the-as vector (-> s4-3 0 dir1)) (the-as vector (-> s5-3 0 dir1)) f30-3) + (vector4-lerp! (-> s5-3 0 dir1 color) (-> s4-3 0 dir1 color) (-> s5-3 0 dir1 color) f30-3) + (vector4-lerp! (-> s5-3 0 dir1 levels) (-> s4-3 0 dir1 levels) (-> s5-3 0 dir1 levels) f30-3) + (vector4-lerp! (the-as vector (-> s5-3 0 dir2)) (the-as vector (-> s4-3 0 dir2)) (the-as vector (-> s5-3 0 dir1)) f30-3) + (vector4-lerp! (-> s5-3 0 dir2 color) (-> s4-3 0 dir2 color) (-> s5-3 0 dir1 color) f30-3) + (vector4-lerp! (-> s5-3 0 dir2 levels) (-> s4-3 0 dir2 levels) (-> s5-3 0 dir1 levels) f30-3) + (vector4-lerp! (the-as vector (-> s5-3 0 ambi)) (the-as vector (-> s4-3 0 ambi)) (the-as vector (-> s5-3 0 ambi)) f30-3) + (vector4-lerp! (-> s5-3 0 ambi color) (-> s4-3 0 ambi color) (-> s5-3 0 ambi color) f30-3) + (vector4-lerp! (-> s5-3 0 ambi levels) (-> s4-3 0 ambi levels) (-> s5-3 0 ambi levels) f30-3) + (vector4-lerp! (-> arg0 current-shadow) (-> *ogre3-mood* current-shadow) (-> arg0 current-shadow) f30-3) + (vector4-lerp! (the-as vector (-> arg0 current-fog)) + (the-as vector (-> *ogre3-mood* current-fog)) + (the-as vector (-> arg0 current-fog)) + f30-3) + (vector4-lerp! (-> arg0 current-fog fog-dists) + (-> *ogre3-mood* current-fog fog-dists) + (-> arg0 current-fog fog-dists) + f30-3) + (vector4-lerp! (-> arg0 current-fog erase-color) + (-> *ogre3-mood* current-fog erase-color) + (-> arg0 current-fog erase-color) + f30-3))))))))))) (update-mood-itimes arg0) 0 - (none) - ) + (none)) (deftype finalboss-states (structure) - ((start-time time-frame) - (secret-time time-frame) - ) - ) - + ((start-time time-frame) + (secret-time time-frame))) (defun update-mood-finalboss ((arg0 mood-context) (arg1 float) (arg2 int)) (clear-mood-times arg0) @@ -2383,62 +1623,47 @@ ((or (logtest? (get-reminder (get-task-control (game-task finalboss-movies)) 0) 1) (not *time-of-day-effects*)) (when (and *target* (= (-> *target* next-state name) 'target-continue)) (set! (-> s4-0 start-time) (+ (current-time) (seconds -33.335))) - (set! (-> s4-0 secret-time) (+ (current-time) (seconds -33.335))) - ) + (set! (-> s4-0 secret-time) (+ (current-time) (seconds -33.335)))) (update-mood-fog arg0 arg1) (update-mood-sky-texture arg0 arg1) (update-mood-palette arg0 arg1 arg2) (dotimes (v1-18 8) - (set! (-> *finalboss2-mood* sky-times v1-18) 0.0) - ) + (set! (-> *finalboss2-mood* sky-times v1-18) 0.0)) (set! (-> *finalboss2-mood* times 5 w) 1.0) (set! (-> *finalboss2-mood* sky-times 3) 1.0) (update-mood-quick *finalboss2-mood* 3 3 5 arg2) (when (= (-> *time-of-day-proc* 0 hour) 6) (let ((f30-0 (-> *palette-fade-controls* control 2 fade)) - (s3-1 (-> arg0 light-group)) - ) + (s3-1 (-> arg0 light-group))) (let ((s2-0 (-> arg0 mood-lights-table data 2))) (set! (-> arg0 times 2 w) f30-0) (vector+float*! (the-as vector (-> s3-1 0)) (the-as vector (-> s3-1 0)) (-> s2-0 direction) f30-0) - (vector+float*! (-> s3-1 0 dir0 color) (-> s3-1 0 dir0 color) (-> s2-0 lgt-color) f30-0) - ) - (vector-normalize! (the-as vector (-> s3-1 0)) 1.0) - ) - ) + (vector+float*! (-> s3-1 0 dir0 color) (-> s3-1 0 dir0 color) (-> s2-0 lgt-color) f30-0)) + (vector-normalize! (the-as vector (-> s3-1 0)) 1.0))) (let ((a0-17 (new 'stack-no-clear 'vector)) - (a1-10 (-> *math-camera* trans)) - ) + (a1-10 (-> *math-camera* trans))) (set-vector! a0-17 12378112.0 1990656.0 -19873792.0 1.0) (let ((f0-9 (vector-vector-distance a0-17 a1-10))) (when (< f0-9 819200.0) (let* ((f2-1 (* 0.0000048828124 (+ -614400.0 f0-9))) - (f0-12 (- 1.0 (fmax 0.0 (fmin 1.0 f2-1)))) - ) + (f0-12 (- 1.0 (fmax 0.0 (fmin 1.0 f2-1))))) (let ((v1-32 (-> *finalboss2-mood* light-group 0 dir2))) (set! (-> v1-32 direction x) 0.0) (set! (-> v1-32 direction y) -1.0) (set! (-> v1-32 direction z) 0.0) - (set! (-> v1-32 direction w) 1.0) - ) + (set! (-> v1-32 direction w) 1.0)) (set-vector! (-> *finalboss2-mood* light-group 0 dir2 color) 1.0 0.8 2.0 1.0) - (set! (-> *finalboss2-mood* light-group 0 dir2 levels x) f0-12) - ) - ) - ) - ) + (set! (-> *finalboss2-mood* light-group 0 dir2 levels x) f0-12))))) (cond ((logtest? (get-reminder (get-task-control (game-task finalboss-movies)) 0) 2) (let* ((f1-14 (* 0.00055555557 (the float (- (current-time) (-> s4-0 secret-time))))) (f0-15 (fmax 0.0 (fmin 1.0 f1-14))) - (a0-21 (-> arg0 light-group)) - ) + (a0-21 (-> arg0 light-group))) (let ((v1-43 (-> a0-21 0 dir2))) (set! (-> v1-43 direction x) -0.5768) (set! (-> v1-43 direction y) 0.1697) (set! (-> v1-43 direction z) -0.799) - (set! (-> v1-43 direction w) 1.0) - ) + (set! (-> v1-43 direction w) 1.0)) (set-vector! (-> a0-21 0 dir2 color) 1.0 1.0 1.0 1.0) (set! (-> a0-21 0 dir2 levels x) f0-15) (let ((v1-45 (-> arg0 current-shadow))) @@ -2451,108 +1676,72 @@ (f1-25 (-> v1-45 x)) (f1-27 (* f1-25 f1-25)) (f2-4 (-> v1-45 z)) - (f0-24 (/ f0-23 (sqrtf (+ f1-27 (* f2-4 f2-4))))) - ) + (f0-24 (/ f0-23 (sqrtf (+ f1-27 (* f2-4 f2-4)))))) (set! (-> v1-45 x) (* (-> v1-45 x) f0-24)) (set! (-> v1-45 y) -0.9063) - (set! (-> v1-45 z) (* (-> v1-45 z) f0-24)) - ) - ) - ) + (set! (-> v1-45 z) (* (-> v1-45 z) f0-24))))) (set! (-> *default-shadow-settings* shadow-dir x) (-> v1-45 x)) (set! (-> *default-shadow-settings* shadow-dir y) (-> v1-45 y)) - (set! (-> *default-shadow-settings* shadow-dir z) (-> v1-45 z)) - ) - ) - ) - (else - (set-time! (-> s4-0 secret-time)) - ) - ) + (set! (-> *default-shadow-settings* shadow-dir z) (-> v1-45 z))))) + (else (set-time! (-> s4-0 secret-time)))) (let* ((f1-36 (* 0.00019607843 (the float (- (current-time) (-> s4-0 start-time))))) (f1-38 (fmax 0.0 (fmin 1.0 f1-36))) - (f0-32 (fmax 0.0 (fmin 1.0 f1-38))) - ) + (f0-32 (fmax 0.0 (fmin 1.0 f1-38)))) (set! (-> *level* level arg2 info sun-fade) f0-32) (set! (-> arg0 num-stars) (* 85.0 f0-32)) (dotimes (v1-56 8) (let ((f1-42 (-> *finalboss2-mood* times v1-56 w)) - (f3-1 (-> arg0 times v1-56 w)) - ) - (set! (-> arg0 times v1-56 w) (+ f1-42 (* f0-32 (- f3-1 f1-42)))) - ) + (f3-1 (-> arg0 times v1-56 w))) + (set! (-> arg0 times v1-56 w) (+ f1-42 (* f0-32 (- f3-1 f1-42))))) (let ((f1-45 (-> *finalboss2-mood* sky-times v1-56)) - (f3-3 (-> arg0 sky-times v1-56)) - ) - (set! (-> arg0 sky-times v1-56) (+ f1-45 (* f0-32 (- f3-3 f1-45)))) - ) - ) - (update-mood-interp arg0 *finalboss2-mood* arg0 f0-32) - ) - ) + (f3-3 (-> arg0 sky-times v1-56))) + (set! (-> arg0 sky-times v1-56) (+ f1-45 (* f0-32 (- f3-3 f1-45)))))) + (update-mood-interp arg0 *finalboss2-mood* arg0 f0-32))) (else - (set! (-> *level* level arg2 info sun-fade) 0.0) - (set! (-> arg0 num-stars) 0.0) - (set! (-> *time-of-day-proc* 0 hour) 6) - (set! (-> *time-of-day-proc* 0 minute) 0) - (set! (-> *time-of-day-proc* 0 second) 0) - (set! (-> *time-of-day-proc* 0 frame) 0) - (set-time! (-> s4-0 start-time)) - (dotimes (v1-72 8) - (set! (-> arg0 sky-times v1-72) 0.0) - ) - (set! (-> arg0 times 5 w) 1.0) - (set! (-> arg0 sky-times 3) 1.0) - (update-mood-quick arg0 3 3 5 arg2) - (let ((f30-1 (-> *palette-fade-controls* control 2 fade)) - (s5-1 (-> arg0 light-group)) - ) - (let ((s4-1 (-> arg0 mood-lights-table data 2))) - (set! (-> arg0 times 2 w) f30-1) - (vector+float*! (the-as vector (-> s5-1 0)) (the-as vector (-> s5-1 0)) (-> s4-1 direction) f30-1) - (vector+float*! (-> s5-1 0 dir0 color) (-> s5-1 0 dir0 color) (-> s4-1 lgt-color) f30-1) - ) - (vector-normalize! (the-as vector (-> s5-1 0)) 1.0) - ) - (let ((a0-57 (new 'stack-no-clear 'vector)) - (a1-19 (-> *math-camera* trans)) - ) - (set-vector! a0-57 12378112.0 1990656.0 -19873792.0 1.0) - (let ((f0-42 (vector-vector-distance a0-57 a1-19))) - (when (< f0-42 819200.0) - (let* ((f2-14 (* 0.0000048828124 (+ -614400.0 f0-42))) - (v1-81 (-> arg0 light-group)) - (f0-45 (- 1.0 (fmax 0.0 (fmin 1.0 f2-14)))) - ) - (let ((a0-58 (-> v1-81 0 dir2))) - (set! (-> a0-58 direction x) 0.0) - (set! (-> a0-58 direction y) -1.0) - (set! (-> a0-58 direction z) 0.0) - (set! (-> a0-58 direction w) 1.0) - ) - (set-vector! (-> v1-81 0 dir2 color) 1.0 0.8 2.0 1.0) - (set! (-> v1-81 0 dir2 levels x) f0-45) - ) - ) - ) - ) - ) - ) - ) + (set! (-> *level* level arg2 info sun-fade) 0.0) + (set! (-> arg0 num-stars) 0.0) + (set! (-> *time-of-day-proc* 0 hour) 6) + (set! (-> *time-of-day-proc* 0 minute) 0) + (set! (-> *time-of-day-proc* 0 second) 0) + (set! (-> *time-of-day-proc* 0 frame) 0) + (set-time! (-> s4-0 start-time)) + (dotimes (v1-72 8) + (set! (-> arg0 sky-times v1-72) 0.0)) + (set! (-> arg0 times 5 w) 1.0) + (set! (-> arg0 sky-times 3) 1.0) + (update-mood-quick arg0 3 3 5 arg2) + (let ((f30-1 (-> *palette-fade-controls* control 2 fade)) + (s5-1 (-> arg0 light-group))) + (let ((s4-1 (-> arg0 mood-lights-table data 2))) + (set! (-> arg0 times 2 w) f30-1) + (vector+float*! (the-as vector (-> s5-1 0)) (the-as vector (-> s5-1 0)) (-> s4-1 direction) f30-1) + (vector+float*! (-> s5-1 0 dir0 color) (-> s5-1 0 dir0 color) (-> s4-1 lgt-color) f30-1)) + (vector-normalize! (the-as vector (-> s5-1 0)) 1.0)) + (let ((a0-57 (new 'stack-no-clear 'vector)) + (a1-19 (-> *math-camera* trans))) + (set-vector! a0-57 12378112.0 1990656.0 -19873792.0 1.0) + (let ((f0-42 (vector-vector-distance a0-57 a1-19))) + (when (< f0-42 819200.0) + (let* ((f2-14 (* 0.0000048828124 (+ -614400.0 f0-42))) + (v1-81 (-> arg0 light-group)) + (f0-45 (- 1.0 (fmax 0.0 (fmin 1.0 f2-14))))) + (let ((a0-58 (-> v1-81 0 dir2))) + (set! (-> a0-58 direction x) 0.0) + (set! (-> a0-58 direction y) -1.0) + (set! (-> a0-58 direction z) 0.0) + (set! (-> a0-58 direction w) 1.0)) + (set-vector! (-> v1-81 0 dir2 color) 1.0 0.8 2.0 1.0) + (set! (-> v1-81 0 dir2 levels x) f0-45)))))))) (update-mood-itimes arg0) - (none) - ) + (none)) (deftype citadel-states (structure) - ((flames flames-state :inline) - (light light-state :inline) - (time light-time-state :inline) - (flicker-off uint8) - (flicker-on uint8) - (shield-fade float) - ) - ) - + ((flames flames-state :inline) + (light light-state :inline) + (time light-time-state :inline) + (flicker-off uint8) + (flicker-on uint8) + (shield-fade float))) (set! (-> *citadel-mood* state 4) (the-as uint 255)) @@ -2564,37 +1753,23 @@ (set! (-> arg0 times 3 w) (-> *palette-fade-controls* control 3 fade)) (update-mood-flames arg0 4 3 0 0.45 0.001953125 1.0) (update-mood-light arg0 1 4 5 0.875 0.25 20.0 32) - (if (not (paused?)) - (+! (-> arg0 state 5) 1) - ) + (if (not (paused?)) (+! (-> arg0 state 5) 1)) (let ((s5-1 (the-as (pointer number) (-> arg0 state)))) (let ((f30-1 (+ 0.5 (* 0.5 (cos (the float (* (logand (+ (-> (the-as (pointer uint8) s5-1) 5) 32) 255) 512))))))) (cond - ((movie?) - ) + ((movie?)) ((nonzero? (-> (the-as (pointer uint8) s5-1) 7)) (set! (-> arg0 times 2 w) 1.0) - (if (not (paused?)) - (+! (-> (the-as (pointer uint8) s5-1) 7) -1) - ) - ) - ((nonzero? (-> (the-as (pointer uint8) s5-1) 6)) - (if (not (paused?)) - (+! (-> (the-as (pointer uint8) s5-1) 6) -1) - ) - ) + (if (not (paused?)) (+! (-> (the-as (pointer uint8) s5-1) 7) -1))) + ((nonzero? (-> (the-as (pointer uint8) s5-1) 6)) (if (not (paused?)) (+! (-> (the-as (pointer uint8) s5-1) 6) -1))) (else - (set! (-> (the-as (pointer uint8) s5-1) 7) (the-as uint (the int (rand-vu-float-range 2.0 20.0)))) - (if (zero? (the int (rand-vu-float-range 0.0 3.0))) - (set! (-> (the-as (pointer uint8) s5-1) 6) (the-as uint (the int (rand-vu-float-range 2.0 120.0)))) - (set! (-> (the-as (pointer uint8) s5-1) 6) (the-as uint (the int (rand-vu-float-range 2.0 20.0)))) - ) - ) - ) + (set! (-> (the-as (pointer uint8) s5-1) 7) (the-as uint (the int (rand-vu-float-range 2.0 20.0)))) + (if (zero? (the int (rand-vu-float-range 0.0 3.0))) + (set! (-> (the-as (pointer uint8) s5-1) 6) (the-as uint (the int (rand-vu-float-range 2.0 120.0)))) + (set! (-> (the-as (pointer uint8) s5-1) 6) (the-as uint (the int (rand-vu-float-range 2.0 20.0))))))) (let ((s3-0 (new 'stack-no-clear 'vector)) (a2-4 (new 'stack-no-clear 'vector)) - (s4-0 (-> arg0 light-group)) - ) + (s4-0 (-> arg0 light-group))) (set-vector! s3-0 0.5 0.5 0.5 1.0) (set-vector! a2-4 0.75 0.725 0.5 1.0) (vector4-lerp! s3-0 s3-0 a2-4 f30-1) @@ -2602,113 +1777,74 @@ (set! (-> v1-25 dir0 direction x) 0.0) (set! (-> v1-25 dir0 direction y) 1.0) (set! (-> v1-25 dir0 direction z) 0.0) - (set! (-> v1-25 dir0 direction w) 1.0) - ) + (set! (-> v1-25 dir0 direction w) 1.0)) (set! (-> s4-0 0 dir0 color quad) (-> s3-0 quad)) - (set! (-> s4-0 0 dir0 levels x) 1.0) - ) - ) + (set! (-> s4-0 0 dir0 levels x) 1.0))) (let ((s4-1 (new 'stack-no-clear 'vector)) - (a1-9 (target-joint-pos)) - ) + (a1-9 (target-joint-pos))) (set-vector! s4-1 11227136.0 (-> a1-9 y) -20164608.0 1.0) (let ((f0-32 (vector-vector-distance s4-1 a1-9))) (when (< f0-32 409600.0) (let* ((f1-2 (* 0.000048828126 (+ -389120.0 f0-32))) - (f2-2 (fmax 0.0 (fmin 1.0 f1-2))) - ) - (set! (-> arg0 current-fog fog-dists y) (* 4096.0 (+ 250.0 (* 300.0 f2-2)))) - ) - ) - ) - ) + (f2-2 (fmax 0.0 (fmin 1.0 f1-2)))) + (set! (-> arg0 current-fog fog-dists y) (* 4096.0 (+ 250.0 (* 300.0 f2-2)))))))) (let ((a0-13 (new 'stack-no-clear 'vector)) - (a1-10 (-> *math-camera* trans)) - ) + (a1-10 (-> *math-camera* trans))) (set-vector! a0-13 11427840.0 (-> a1-10 y) -19251200.0 1.0) (let ((f0-41 (vector-vector-distance a0-13 a1-10)) - (s4-2 (-> arg0 light-group)) - ) + (s4-2 (-> arg0 light-group))) (cond ((< f0-41 491520.0) (let* ((f2-5 (* 0.000012207031 (+ -409600.0 f0-41))) (f30-2 (- 1.0 (fmax 0.0 (fmin 1.0 f2-5)))) (f28-4 (+ 0.5 (* 0.125 (cos (the float (* 4000 (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter))))) ;; og:preserve-this changed for high fps - (* 0.125 (cos (the float (shl (the int (* (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter))) 11)))) ;; og:preserve-this changed for high fps + (* 0.125 + (cos (the float (shl (the int (* (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter))) 11)))) ;; og:preserve-this changed for high fps (* 0.25 (cos (the float (* 1500 (/ (-> *display* time-factor) 5) (-> *display* integral-frame-counter))))) ;; og:preserve-this changed for high fps - ) - ) - (s3-1 (new 'stack-no-clear 'vector)) - ) + )) + (s3-1 (new 'stack-no-clear 'vector))) (let ((s2-0 (new 'stack-no-clear 'vector))) (set-vector! s3-1 0.275 0.1 1.025 1.0) (set-vector! s2-0 0.35 0.1 1.1 1.0) (vector4-lerp! s2-0 s3-1 s2-0 f28-4) (cond - ((= (-> *palette-fade-controls* control 7 fade) 1.0) - (set! (-> (the-as (pointer float) s5-1) 2) 1.0) - ) + ((= (-> *palette-fade-controls* control 7 fade) 1.0) (set! (-> (the-as (pointer float) s5-1) 2) 1.0)) (else - (if (not (paused?)) - (+! (-> (the-as (pointer float) s5-1) 2) -0.1) - ) - (set! (-> (the-as (pointer float) s5-1) 2) (fmax 0.0 (fmin 1.0 (-> (the-as (pointer float) s5-1) 2)))) - ) - ) + (if (not (paused?)) (+! (-> (the-as (pointer float) s5-1) 2) -0.1)) + (set! (-> (the-as (pointer float) s5-1) 2) (fmax 0.0 (fmin 1.0 (-> (the-as (pointer float) s5-1) 2)))))) (set-vector! s3-1 0.1 0.1 0.1 1.0) (let ((f30-3 (* (-> (the-as (pointer float) s5-1) 2) f30-2))) (vector4-lerp! s3-1 s3-1 s2-0 f30-3) - (set! (-> arg0 times 7 w) (* (+ 0.8 (* 0.1 f28-4)) f30-3)) - ) - ) + (set! (-> arg0 times 7 w) (* (+ 0.8 (* 0.1 f28-4)) f30-3)))) (let ((v1-49 (-> s4-2 0 dir1))) (set! (-> v1-49 direction x) 0.0) (set! (-> v1-49 direction y) -1.0) (set! (-> v1-49 direction z) 0.0) - (set! (-> v1-49 direction w) 1.0) - ) - (set! (-> s4-2 0 dir1 color quad) (-> s3-1 quad)) - ) - (set! (-> s4-2 0 dir1 levels x) 1.0) - ) + (set! (-> v1-49 direction w) 1.0)) + (set! (-> s4-2 0 dir1 color quad) (-> s3-1 quad))) + (set! (-> s4-2 0 dir1 levels x) 1.0)) (else - (let ((v1-52 (-> s4-2 0 dir1))) - (set! (-> v1-52 direction x) 0.0) - (set! (-> v1-52 direction y) -1.0) - (set! (-> v1-52 direction z) 0.0) - (set! (-> v1-52 direction w) 1.0) - ) - (set-vector! (-> s4-2 0 dir1 color) 0.1 0.1 0.1 1.0) - (set! (-> s4-2 0 dir1 levels x) 1.0) - ) - ) - ) - ) - ) + (let ((v1-52 (-> s4-2 0 dir1))) + (set! (-> v1-52 direction x) 0.0) + (set! (-> v1-52 direction y) -1.0) + (set! (-> v1-52 direction z) 0.0) + (set! (-> v1-52 direction w) 1.0)) + (set-vector! (-> s4-2 0 dir1 color) 0.1 0.1 0.1 1.0) + (set! (-> s4-2 0 dir1 levels x) 1.0)))))) (let ((s5-2 (new 'stack-no-clear 'vector)) - (a1-13 (target-joint-pos)) - ) + (a1-13 (target-joint-pos))) 0.0 (when (< 204800.0 (-> a1-13 y)) (set-vector! s5-2 11440128.0 (-> a1-13 y) -19298304.0 1.0) (let ((f0-98 (vector-vector-distance s5-2 a1-13)) - (s5-3 (-> arg0 light-group)) - ) + (s5-3 (-> arg0 light-group))) (when (< f0-98 172032.0) (let* ((f1-19 (* 0.000061035156 (+ -155648.0 f0-98))) (a1-14 (new 'stack-no-clear 'vector)) - (f0-101 (fmax 0.0 (fmin 1.0 f1-19))) - ) + (f0-101 (fmax 0.0 (fmin 1.0 f1-19)))) (set-vector! a1-14 0.5 0.5 0.5 1.0) - (vector4-lerp! (-> s5-3 0 dir0 color) a1-14 (-> s5-3 0 dir0 color) f0-101) - ) - (set! (-> s5-3 0 dir1 levels x) 0.0) - ) - ) - ) - ) - ) + (vector4-lerp! (-> s5-3 0 dir0 color) a1-14 (-> s5-3 0 dir0 color) f0-101)) + (set! (-> s5-3 0 dir1 levels x) 0.0)))))) (update-mood-itimes arg0) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/mood/time-of-day-h.gc b/goal_src/jak1/engine/gfx/mood/time-of-day-h.gc index 903a17166a..271deb8e27 100644 --- a/goal_src/jak1/engine/gfx/mood/time-of-day-h.gc +++ b/goal_src/jak1/engine/gfx/mood/time-of-day-h.gc @@ -1,18 +1,17 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: time-of-day-h.gc -;; name in dgo: time-of-day-h -;; dgos: GAME, ENGINE - ;; TODO for mood (declare-type time-of-day-proc process) + (declare-type time-of-day-palette basic) + (define-extern *time-of-day-proc* (pointer time-of-day-proc)) + (define-extern time-of-day-interp-colors (function (pointer rgba) uint mood-context none)) + (define-extern time-of-day-interp-colors-scratch (function (pointer rgba) time-of-day-palette mood-context none)) (declare-type sparticle-launch-control basic) @@ -22,21 +21,16 @@ ;; control time of day palette from outside the time of day system ;; (for example, the cave crystals and deadly water in LPC) (deftype palette-fade-control (structure) - ((trans vector :inline) - (fade float) - (actor-dist float) - ) - ) + ((trans vector :inline) + (fade float) + (actor-dist float))) ;; group of 8 palette fade controls (deftype palette-fade-controls (basic) - ((control palette-fade-control 8 :inline) - ) + ((control palette-fade-control 8 :inline)) (:methods - (reset! (_type_) symbol) - (set-fade! (_type_ int float float vector) object) - ) - ) + (reset! (_type_) symbol) + (set-fade! (_type_ int float float vector) object))) ;; the global palette fade control used by game objects to control time of day lighting effects (define-perm *palette-fade-controls* palette-fade-controls (new 'global 'palette-fade-controls)) @@ -44,74 +38,65 @@ ;; the time-of-day system runs a single process that just ticks time forward and controls ;; star/sun/moon/green-sun particle launch. (deftype time-of-day-proc (process) - ((year int32) - (month int32) - (week int32) - (day int32) - (hour int32) - (minute int32) - (second int32) - (frame int32) - (time-of-day float) - (time-ratio float) - (star-count int32) - (stars sparticle-launch-control) - (sun-count int32) - (sun sparticle-launch-control) - (green-sun-count int32) - (green-sun sparticle-launch-control) - (moon-count int32) - (moon sparticle-launch-control) - ) + ((year int32) + (month int32) + (week int32) + (day int32) + (hour int32) + (minute int32) + (second int32) + (frame int32) + (time-of-day float) + (time-ratio float) + (star-count int32) + (stars sparticle-launch-control) + (sun-count int32) + (sun sparticle-launch-control) + (green-sun-count int32) + (green-sun sparticle-launch-control) + (moon-count int32) + (moon sparticle-launch-control)) (:states - time-of-day-tick - ) - ) + time-of-day-tick)) ;; a color palette that can be interpolated based on the time of day. ;; tie/tfrag/shrub all use these. (deftype time-of-day-palette (basic) - ((width int32) - (height int32) - (pad int32) - (data int32 1) - ) - ) + ((width int32) + (height int32) + (pad int32) + (data int32 1))) ;; all time of day state. (deftype time-of-day-context (basic) - ((active-count uint32) - (interp float) - (current-interp float) - (moods mood-context 2) - (current-fog mood-fog :inline) - (current-sun mood-sun :inline) - (current-prt-color vector :inline) - (current-shadow vector :inline) - (current-shadow-color vector :inline) - (light-group light-group 9 :inline) - (title-light-group light-group :inline) - (time float) - (target-interp float) - (erase-color rgba) - (num-stars float) - (light-masks-0 uint8 2) - (light-masks-1 uint8 2) - (light-interp float 2) - (sky symbol) - (sun-fade float) - (title-updated symbol) - ) - ) + ((active-count uint32) + (interp float) + (current-interp float) + (moods mood-context 2) + (current-fog mood-fog :inline) + (current-sun mood-sun :inline) + (current-prt-color vector :inline) + (current-shadow vector :inline) + (current-shadow-color vector :inline) + (light-group light-group 9 :inline) + (title-light-group light-group :inline) + (time float) + (target-interp float) + (erase-color rgba) + (num-stars float) + (light-masks-0 uint8 2) + (light-masks-1 uint8 2) + (light-interp float 2) + (sky symbol) + (sun-fade float) + (title-updated symbol))) ;; dma memory layout for time of day palette interpolation (deftype time-of-day-dma (structure) - ((outa uint32 256) - (outb uint32 256) - (banka uint32 256) - (bankb uint32 256) - ) - ) + ((outa uint32 256) + (outb uint32 256) + (banka uint32 256) + (bankb uint32 256))) ;; weird, either 8 (running) or 4 (not running) (define *time-of-day-mode* 8) diff --git a/goal_src/jak1/engine/gfx/mood/time-of-day.gc b/goal_src/jak1/engine/gfx/mood/time-of-day.gc index 1e31dc4e49..ec2a274c2e 100644 --- a/goal_src/jak1/engine/gfx/mood/time-of-day.gc +++ b/goal_src/jak1/engine/gfx/mood/time-of-day.gc @@ -1,179 +1,116 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/gfx/mood/mood.gc") -;; name: time-of-day.gc -;; name in dgo: time-of-day -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod asize-of ((this time-of-day-palette)) "Compute the size in memory of a time-of-day-palette" - (the-as int (+ (-> this type size) (* (* (-> this height) (-> this width)) 4))) - ) + (the-as int (+ (-> this type size) (* (* (-> this height) (-> this width)) 4)))) ;; The time-of-day-effect function is a callback used before doing a time-of-day-update. ;; I think it's unused? (define-extern time-of-day-effect (function none)) + ;; if undefined, set to nothing so we can still call it. -(if (zero? time-of-day-effect) - (set! time-of-day-effect nothing) - ) +(if (zero? time-of-day-effect) (set! time-of-day-effect nothing)) (defbehavior time-of-day-update time-of-day-proc () "Update the particles and sky tng renderer for time-of-day effects" (time-of-day-effect) - ;; spawn or kill stars, if needed. (cond ;; should have stars in the sky ((and (or (>= (-> self hour) 19) (>= 5 (-> self hour))) - (and (< 45.0 (-> *time-of-day-context* num-stars)) (-> *time-of-day-context* sky)) - ) ;; sky + stars desired - + (and (< 45.0 (-> *time-of-day-context* num-stars)) (-> *time-of-day-context* sky))) ;; sky + stars desired ;; see if we need more (when (and *dproc* (< (-> self star-count) (the int (-> *time-of-day-context* num-stars)))) (spawn (-> self stars) (math-camera-pos)) - (+! (-> self star-count) 1) - ) - ) - + (+! (-> self star-count) 1))) ;; have stars, but don't want them ((> (-> self star-count) 0) ;; kill all stars. - (forall-particles-with-key - (-> self stars) - (lambda ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) - (if (< (the-as uint #x493e0) (-> arg1 next-time)) - (set! (-> arg1 next-time) (the-as uint 5)) - (sparticle-kill-it arg0 arg1) - ) - (none) - ) - #t - #t - ) + (forall-particles-with-key (-> self stars) + (lambda ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) + (if (< (the-as uint #x493e0) (-> arg1 next-time)) (set! (-> arg1 next-time) (the-as uint 5)) (sparticle-kill-it arg0 arg1)) + (none)) + #t + #t) (set! (-> self star-count) 0) - 0 - ) - ) - + 0)) ;; spawn or kill sun, if needed (cond - ((and (>= (-> self time-of-day) 6.25) - (< (-> self time-of-day) 18.75) - (!= (-> *time-of-day-context* sun-fade) 0.0) - ) + ((and (>= (-> self time-of-day) 6.25) (< (-> self time-of-day) 18.75) (!= (-> *time-of-day-context* sun-fade) 0.0)) (when (and *dproc* (zero? (-> self sun-count))) (spawn (-> self sun) (math-camera-pos)) - (+! (-> self sun-count) 1) - ) - ) - ((> (-> self sun-count) 0) - (kill-and-free-particles (-> self sun)) - (set! (-> self sun-count) 0) - 0 - ) - ) - + (+! (-> self sun-count) 1))) + ((> (-> self sun-count) 0) (kill-and-free-particles (-> self sun)) (set! (-> self sun-count) 0) 0)) ;; spawn or kill green sun, if needed (cond ((and (or (>= (-> self time-of-day) 21.75) (>= 10.25 (-> self time-of-day))) - (!= (-> *time-of-day-context* sun-fade) 0.0) - ) + (!= (-> *time-of-day-context* sun-fade) 0.0)) (when (and *dproc* (zero? (-> self green-sun-count))) (spawn (-> self green-sun) (math-camera-pos)) - (+! (-> self green-sun-count) 1) - ) - ) - ((> (-> self green-sun-count) 0) - (kill-and-free-particles (-> self green-sun)) - (set! (-> self green-sun-count) 0) - 0 - ) - ) - + (+! (-> self green-sun-count) 1))) + ((> (-> self green-sun-count) 0) (kill-and-free-particles (-> self green-sun)) (set! (-> self green-sun-count) 0) 0)) ;; update the sky renderer. (update-sky-tng-data (-> self time-of-day)) 0 - (none) - ) - + (none)) ;; State for just ticking time forward. (defstate time-of-day-tick (time-of-day-proc) - :code (behavior () - (loop - (+! (-> self frame) (the int (* (-> self time-ratio) (-> *display* time-adjust-ratio)))) - - ;; now update time... - (when (>= (-> self frame) 300) - ;; 300 ticks/second - (while (>= (-> self frame) 300) - (+! (-> self frame) -300) - (+! (-> self second) 1) - ) - ;; 60 sec/minute - (when (>= (-> self second) 60) - (while (>= (-> self second) 60) - (+! (-> self second) -60) - (+! (-> self minute) 1) - ) - ;; 60 min/hour - (when (>= (-> self minute) 60) - (while (>= (-> self minute) 60) - (+! (-> self minute) -60) - (+! (-> self hour) 1) - ) - ;; 24 hour/day - (when (>= (-> self hour) 24) - (while (>= (-> self hour) 24) - (+! (-> self hour) -24) - (+! (-> self day) 1) - ) - ;; 7 day/week - (when (>= (-> self day) 7) - (while (>= (-> self day) 7) - (+! (-> self day) -7) - (+! (-> self week) 1) - ) - ;; 4 week/month - (when (>= (-> self week) 4) - (while (>= (-> self week) 4) - (+! (-> self week) -4) - (+! (-> self month) 1) - ) - ;; 12 month/year - (when (>= (-> self month) 12) - (while (>= (-> self month) 12) - (+! (-> self month) -12) - (+! (-> self year) 1) - ) - ) - ) - ) - ) - ) - ) - ) - ;; set the time of day float. This is in hours (0-24) - (let* ((f0-4 (the float (-> self frame))) - (f0-6 (+ (* 0.0033333334 f0-4) (the float (-> self second)))) - (f0-8 (+ (* 0.016666668 f0-6) (the float (-> self minute)))) - (f0-10 (+ (* 0.016666668 f0-8) (the float (-> self hour)))) - ) - (set! (-> self time-of-day) f0-10) - (set! (-> *time-of-day-context* time) f0-10) - ) - (suspend) - ) - ) - :post time-of-day-update - ) + :code + (behavior () + (loop + (+! (-> self frame) (the int (* (-> self time-ratio) (-> *display* time-adjust-ratio)))) + ;; now update time... + (when (>= (-> self frame) 300) + ;; 300 ticks/second + (while (>= (-> self frame) 300) + (+! (-> self frame) -300) + (+! (-> self second) 1)) + ;; 60 sec/minute + (when (>= (-> self second) 60) + (while (>= (-> self second) 60) + (+! (-> self second) -60) + (+! (-> self minute) 1)) + ;; 60 min/hour + (when (>= (-> self minute) 60) + (while (>= (-> self minute) 60) + (+! (-> self minute) -60) + (+! (-> self hour) 1)) + ;; 24 hour/day + (when (>= (-> self hour) 24) + (while (>= (-> self hour) 24) + (+! (-> self hour) -24) + (+! (-> self day) 1)) + ;; 7 day/week + (when (>= (-> self day) 7) + (while (>= (-> self day) 7) + (+! (-> self day) -7) + (+! (-> self week) 1)) + ;; 4 week/month + (when (>= (-> self week) 4) + (while (>= (-> self week) 4) + (+! (-> self week) -4) + (+! (-> self month) 1)) + ;; 12 month/year + (when (>= (-> self month) 12) + (while (>= (-> self month) 12) + (+! (-> self month) -12) + (+! (-> self year) 1))))))))) + ;; set the time of day float. This is in hours (0-24) + (let* ((f0-4 (the float (-> self frame))) + (f0-6 (+ (* 0.0033333334 f0-4) (the float (-> self second)))) + (f0-8 (+ (* 0.016666668 f0-6) (the float (-> self minute)))) + (f0-10 (+ (* 0.016666668 f0-8) (the float (-> self hour))))) + (set! (-> self time-of-day) f0-10) + (set! (-> *time-of-day-context* time) f0-10)) + (suspend))) + :post time-of-day-update) (defbehavior init-time-of-day time-of-day-proc () "Initialize the time-of-day process" @@ -187,24 +124,19 @@ (set! (-> self second) 0) (set! (-> self frame) 0) (set! (-> self time-of-day) 0.0) - (if *time-of-day-fast* - (set! (-> self time-ratio) 18000.0) - (set! (-> self time-ratio) 300.0) - ) + (if *time-of-day-fast* (set! (-> self time-ratio) 18000.0) (set! (-> self time-ratio) 300.0)) (set! (-> self star-count) 0) (set! (-> self stars) (create-launch-control (-> *part-group-id-table* 34) self)) (set! (-> self sun) (create-launch-control (-> *part-group-id-table* 35) self)) (set! (-> self green-sun) (create-launch-control (-> *part-group-id-table* 36) self)) (go time-of-day-tick) - (none) - ) + (none)) (defun start-time-of-day () "Start up the time of day process. Kill any existing ones" (kill-by-name 'time-of-day-proc *active-pool*) (set! *time-of-day-proc* (process-spawn time-of-day-proc :init init-time-of-day)) - (none) - ) + (none)) (defun time-of-day-setup ((arg0 symbol)) "This function is weird. Returns if time of day will tick forward or not. @@ -213,26 +145,15 @@ (when arg0 (cond ((= (-> *time-of-day-proc* 0 time-ratio) 0.0) - (if *time-of-day-fast* - (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) - (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) - ) - (set! *time-of-day-mode* 8) - ) + (if *time-of-day-fast* (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0)) + (set! *time-of-day-mode* 8)) (else - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - (set! *time-of-day-mode* 4) - (set! (-> *time-of-day-proc* 0 hour) 12) - (set! (-> *time-of-day-proc* 0 minute) 0) - 0 - ) - ) - ) - (if (= (-> *time-of-day-proc* 0 time-ratio) 0.0) - #f - #t - ) - ) + (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) + (set! *time-of-day-mode* 4) + (set! (-> *time-of-day-proc* 0 hour) 12) + (set! (-> *time-of-day-proc* 0 minute) 0) + 0))) + (if (= (-> *time-of-day-proc* 0 time-ratio) 0.0) #f #t)) (defun set-time-of-day ((arg0 float)) "Manually set the time of day." @@ -240,12 +161,9 @@ (set! (-> v1-0 0 hour) (the int arg0)) (let ((a0-1 (* 60.0 (- arg0 (the float (the int arg0)))))) (set! (-> v1-0 0 minute) (the int a0-1)) - (set! (-> v1-0 0 second) (the int (* 60.0 (- a0-1 (the float (the int a0-1)))))) - ) - ) + (set! (-> v1-0 0 second) (the int (* 60.0 (- a0-1 (the float (the int a0-1)))))))) 0 - (none) - ) + (none)) ;; TODO time-of-day-interp-colors ;; TODO time-of-day-interp-colors-scratch @@ -265,47 +183,32 @@ (set! (-> arg0 title-light-group dir0 levels x) 1.0) (set! (-> arg0 title-light-group dir1 levels x) 1.0) (set! (-> arg0 title-light-group ambi levels x) 1.0) - (none) - ) + (none)) (defun update-time-of-day ((arg0 time-of-day-context)) "Update the time of day context" - ;; set defaults (set! (-> arg0 sky) #f) (set! (-> arg0 target-interp) 0.0) - (when *target* (set! (-> *target* draw light-index) (the-as uint 0)) (when (-> *target* sidekick) (set! (-> *target* sidekick 0 draw light-index) (the-as uint 0)) - 0 - ) - ) - - + 0)) ;; see if either level gives us a sky. (dotimes (v1-12 (-> *level* length)) (let ((a0-4 (-> *level* level v1-12))) (when (= (-> a0-4 status) 'active) - (if (-> a0-4 info sky) - (set! (-> arg0 sky) #t) - ) - ) - ) - ) - + (if (-> a0-4 info sky) (set! (-> arg0 sky) #t))))) ;; level distances (let ((s4-0 (new 'stack-no-clear 'array 'float 2))) ;; was a boxed array, but the GOAL implementation seems buggy. (set! (-> s4-0 0) 0.0) (set! (-> s4-0 1) 0.0) 0.0 (let ((s5-0 0) - (f30-0 (-> arg0 current-interp)) - ) + (f30-0 (-> arg0 current-interp))) (set! *lightning-frame-done* #f) (set! *lightning-realtime-done* #f) - ;; loop over levels and figure out which to use. (dotimes (s3-0 2) (let ((s2-0 (-> *level* level s3-0))) @@ -317,107 +220,68 @@ ;; run its mood callback ((-> s2-0 mood-func) (-> s2-0 mood) (-> arg0 time) s3-0) ;; sky count - (if (and (= (-> s2-0 status) 'active) (-> s2-0 info sky)) - (+! s5-0 1) - ) - ) + (if (and (= (-> s2-0 status) 'active) (-> s2-0 info sky)) (+! s5-0 1))) (else - ;; level is no good. Use the default mood in its place. - (set! (-> s4-0 s3-0) 4095996000.0) - (set! (-> arg0 moods s3-0) *default-mood*) - (update-mood-default *default-mood* (-> arg0 time) 0) - ) - ) - ) - ) - + ;; level is no good. Use the default mood in its place. + (set! (-> s4-0 s3-0) 4095996000.0) + (set! (-> arg0 moods s3-0) *default-mood*) + (update-mood-default *default-mood* (-> arg0 time) 0))))) ;; now pick desired interpolation weights (let* ((f0-6 (-> s4-0 0)) (f1-0 (-> s4-0 1)) (f28-0 (cond ((= f1-0 4095996000.0) ;; second level is no good, just use first - 0.0 - ) + 0.0) ((= f0-6 4095996000.0) ;; first level is no good, just use second - 1.0 - ) + 1.0) ((= f0-6 f1-0) ;; not sure why this is special cased... - 0.5 - ) + 0.5) ;; this is a hack to pick the mood of village2 when we're closer to sunken, as long as ;; the camera is above 0. - ((and (< 0.0 (-> *math-camera* trans y)) - (= (-> *level* level0 name) 'village2) - (= (-> *level* level1 name) 'sunken) - ) - 0.0 ;; picks 0 = village2 + ((and (< 0.0 (-> *math-camera* trans y)) (= (-> *level* level0 name) 'village2) (= (-> *level* level1 name) 'sunken)) + 0.0 ;; picks 0 = village2 ) - ((and (< 0.0 (-> *math-camera* trans y)) - (= (-> *level* level0 name) 'sunken) - (= (-> *level* level1 name) 'village2) - ) - 1.0 ;; picks 1 = village2 + ((and (< 0.0 (-> *math-camera* trans y)) (= (-> *level* level0 name) 'sunken) (= (-> *level* level1 name) 'village2)) + 1.0 ;; picks 1 = village2 ) (else - ;; interplate between them. - (/ f0-6 (+ f0-6 f1-0)) - ) - ) - ) - ) - + ;; interplate between them. + (/ f0-6 (+ f0-6 f1-0)))))) ;; normally we will slowly ramp the interpolation weights. ;; but if we've just teleported, immediately snap to the new value. - (if *teleport* - (set! f30-0 f28-0) - ) - + (if *teleport* (set! f30-0 f28-0)) ;; ramp interpolation weights. (when (not (or (paused?) (= f28-0 f30-0))) (let ((f0-7 (- f30-0 f28-0))) - (set! f30-0 (cond - ((= (-> *setting-control* current video-mode) 'pal) - (cond - ((< (fabs f0-7) 0.00396) - ;; close enough - f28-0 - ) - ((< f0-7 0.0) - ;; ramp up - (+ 0.00396 f30-0) - ) - (else - ;; ramp down - (+ -0.00396 f30-0) - ) - ) - ) - ((< (fabs f0-7) 0.0033) - ;; close enough - f28-0 - ) - ((< f0-7 0.0) - ;; ramp up - (+ 0.0033 f30-0) - ) - (else - ;; ramp down. - (+ -0.0033 f30-0) - ) - ) - ) - ) - ) - + (set! f30-0 + (cond + ((= (-> *setting-control* current video-mode) 'pal) + (cond + ((< (fabs f0-7) 0.00396) + ;; close enough + f28-0) + ((< f0-7 0.0) + ;; ramp up + (+ 0.00396 f30-0)) + (else + ;; ramp down + (+ -0.00396 f30-0)))) + ((< (fabs f0-7) 0.0033) + ;; close enough + f28-0) + ((< f0-7 0.0) + ;; ramp up + (+ 0.0033 f30-0)) + (else + ;; ramp down. + (+ -0.0033 f30-0)))))) ;; number of active skys (set! (-> arg0 active-count) (the-as uint s5-0)) ;; interpolation value between the two level moods. - (set! (-> arg0 interp) f28-0) - ) - + (set! (-> arg0 interp) f28-0)) ;; Do the interpolation (set! (-> arg0 current-interp) f30-0) (set! *sky-drawn* #f) @@ -429,121 +293,79 @@ (let ((v1-67 (-> arg0 moods 0 current-fog))) (set! (-> s5-1 fog-color quad) (-> v1-67 fog-color quad)) (set! (-> s5-1 fog-dists quad) (-> v1-67 fog-dists quad)) - (set! (-> s5-1 erase-color quad) (-> v1-67 erase-color quad)) - ) + (set! (-> s5-1 erase-color quad) (-> v1-67 erase-color quad))) (set! (-> arg0 current-prt-color quad) (-> arg0 moods 0 current-prt-color quad)) (set! (-> arg0 current-sun sun-color quad) (-> arg0 moods 0 current-sun sun-color quad)) (set! (-> arg0 current-sun env-color quad) (-> arg0 moods 0 current-sun env-color quad)) (set! (-> arg0 current-shadow quad) (-> arg0 moods 0 current-shadow quad)) (set! (-> arg0 current-shadow-color quad) (-> arg0 moods 0 current-shadow-color quad)) (dotimes (s4-1 8) - (quad-copy! - (the-as pointer (-> arg0 light-group s4-1)) - (the-as pointer (-> arg0 moods 0 light-group s4-1)) - 12 - ) - ) + (quad-copy! (the-as pointer (-> arg0 light-group s4-1)) (the-as pointer (-> arg0 moods 0 light-group s4-1)) 12)) (set! (-> arg0 num-stars) (-> arg0 moods 0 num-stars)) - (set! (-> arg0 sun-fade) (-> *level* level0 info sun-fade)) - ) + (set! (-> arg0 sun-fade) (-> *level* level0 info sun-fade))) ((= f30-0 1.0) ;; special case: use only level 1 (let ((v1-88 (-> arg0 moods 1 current-fog))) (set! (-> s5-1 fog-color quad) (-> v1-88 fog-color quad)) (set! (-> s5-1 fog-dists quad) (-> v1-88 fog-dists quad)) - (set! (-> s5-1 erase-color quad) (-> v1-88 erase-color quad)) - ) + (set! (-> s5-1 erase-color quad) (-> v1-88 erase-color quad))) (set! (-> arg0 current-prt-color quad) (-> arg0 moods 1 current-prt-color quad)) (set! (-> arg0 current-sun sun-color quad) (-> arg0 moods 1 current-sun sun-color quad)) (set! (-> arg0 current-sun env-color quad) (-> arg0 moods 1 current-sun env-color quad)) (set! (-> arg0 current-shadow quad) (-> arg0 moods 1 current-shadow quad)) (set! (-> arg0 current-shadow-color quad) (-> arg0 moods 1 current-shadow-color quad)) (dotimes (s4-2 8) - (quad-copy! - (the-as pointer (-> arg0 light-group s4-2)) - (the-as pointer (-> arg0 moods 1 light-group s4-2)) - 12 - ) - ) + (quad-copy! (the-as pointer (-> arg0 light-group s4-2)) (the-as pointer (-> arg0 moods 1 light-group s4-2)) 12)) (set! (-> arg0 num-stars) (-> arg0 moods 1 num-stars)) - (set! (-> arg0 sun-fade) (-> *level* level1 info sun-fade)) - ) + (set! (-> arg0 sun-fade) (-> *level* level1 info sun-fade))) (else - ;; interpolate! - ;; note: the array access here seems to be different from everywhere else and I suspect there was some - ;; weird pointer math in the original code. - (let ((s4-3 (-> arg0 moods 0 current-fog)) - (s3-1 (-> arg0 moods 1 current-fog)) - ) - (vector4-lerp! (-> s5-1 fog-color) (-> s4-3 fog-color) (-> s3-1 fog-color) f30-0) - (vector4-lerp! (-> s5-1 fog-dists) (-> s4-3 fog-dists) (-> s3-1 fog-dists) f30-0) - (vector4-lerp! (-> s5-1 erase-color) (-> s4-3 erase-color) (-> s3-1 erase-color) f30-0) - ) - (vector4-lerp! - (-> arg0 current-prt-color) - (-> arg0 moods 0 current-prt-color) - (-> arg0 moods 1 current-prt-color) - f30-0 - ) - (vector4-lerp! - (the-as vector (-> arg0 current-sun)) - (the-as vector (-> arg0 moods 0 current-sun)) - (the-as vector (-> arg0 moods 1 current-sun)) - f30-0 - ) - (vector4-lerp! - (-> arg0 current-sun env-color) - (-> arg0 moods 0 current-sun env-color) - (-> arg0 moods 1 current-sun env-color) - f30-0 - ) - (vector4-lerp! - (-> arg0 current-shadow) - (-> arg0 moods 0 current-shadow) - (-> arg0 moods 1 current-shadow) - f30-0 - ) - (vector4-lerp! - (-> arg0 current-shadow-color) - (-> arg0 moods 0 current-shadow-color) - (-> arg0 moods 1 current-shadow-color) - f30-0 - ) - (dotimes (s4-4 8) - (dotimes (s3-2 3) - (let ((s2-1 (+ (+ (* 48 s3-2) 156 (* 192 s4-4)) (the-as int arg0)))) - (let ((s1-0 (+ (+ (* 48 s3-2) 156 (* 192 s4-4)) (the-as int (-> arg0 moods 0)))) - (s0-0 (+ (+ (* 48 s3-2) 156 (* 192 s4-4)) (the-as int (-> arg0 moods 1)))) - ) - (vector4-lerp! (the-as vector (+ s2-1 0)) (the-as vector (+ s1-0 0)) (the-as vector (+ s0-0 0)) f30-0) - (vector4-lerp! (the-as vector (+ s2-1 16)) (the-as vector (+ s1-0 16)) (the-as vector (+ s0-0 16)) f30-0) - (vector4-lerp! (the-as vector (+ s2-1 32)) (the-as vector (+ s1-0 32)) (the-as vector (+ s0-0 32)) f30-0) - ) - (vector-normalize! (the-as vector (+ s2-1 0)) 1.0) - ) - ) - (let ((s3-3 (+ (the-as uint (-> arg0 light-group 0 ambi)) (* 192 s4-4))) - (s2-2 (+ (the-as uint (-> arg0 moods 0 light-group 0 ambi)) (* 192 s4-4))) - (s1-1 (+ (the-as uint (-> arg0 moods 1 light-group 0 ambi)) (* 192 s4-4))) - ) - (vector4-lerp! (the-as vector (+ s3-3 0)) (the-as vector (+ s2-2 0)) (the-as vector (+ s1-1 0)) f30-0) - (vector4-lerp! (the-as vector (+ s3-3 16)) (the-as vector (+ s2-2 16)) (the-as vector (+ s1-1 16)) f30-0) - (vector4-lerp! (the-as vector (+ s3-3 32)) (the-as vector (+ s2-2 32)) (the-as vector (+ s1-1 32)) f30-0) - ) - ) - (set! (-> arg0 num-stars) - (+ (-> arg0 moods 0 num-stars) (* (- (-> arg0 moods 1 num-stars) (-> arg0 moods 0 num-stars)) f30-0)) - ) - (let ((f0-20 (-> *level* level0 info sun-fade))) - (set! (-> arg0 sun-fade) (+ f0-20 (* f30-0 (- (-> *level* level1 info sun-fade) f0-20)))) - ) - ) - ) - + ;; interpolate! + ;; note: the array access here seems to be different from everywhere else and I suspect there was some + ;; weird pointer math in the original code. + (let ((s4-3 (-> arg0 moods 0 current-fog)) + (s3-1 (-> arg0 moods 1 current-fog))) + (vector4-lerp! (-> s5-1 fog-color) (-> s4-3 fog-color) (-> s3-1 fog-color) f30-0) + (vector4-lerp! (-> s5-1 fog-dists) (-> s4-3 fog-dists) (-> s3-1 fog-dists) f30-0) + (vector4-lerp! (-> s5-1 erase-color) (-> s4-3 erase-color) (-> s3-1 erase-color) f30-0)) + (vector4-lerp! (-> arg0 current-prt-color) + (-> arg0 moods 0 current-prt-color) + (-> arg0 moods 1 current-prt-color) + f30-0) + (vector4-lerp! (the-as vector (-> arg0 current-sun)) + (the-as vector (-> arg0 moods 0 current-sun)) + (the-as vector (-> arg0 moods 1 current-sun)) + f30-0) + (vector4-lerp! (-> arg0 current-sun env-color) + (-> arg0 moods 0 current-sun env-color) + (-> arg0 moods 1 current-sun env-color) + f30-0) + (vector4-lerp! (-> arg0 current-shadow) (-> arg0 moods 0 current-shadow) (-> arg0 moods 1 current-shadow) f30-0) + (vector4-lerp! (-> arg0 current-shadow-color) + (-> arg0 moods 0 current-shadow-color) + (-> arg0 moods 1 current-shadow-color) + f30-0) + (dotimes (s4-4 8) + (dotimes (s3-2 3) + (let ((s2-1 (+ (+ (* 48 s3-2) 156 (* 192 s4-4)) (the-as int arg0)))) + (let ((s1-0 (+ (+ (* 48 s3-2) 156 (* 192 s4-4)) (the-as int (-> arg0 moods 0)))) + (s0-0 (+ (+ (* 48 s3-2) 156 (* 192 s4-4)) (the-as int (-> arg0 moods 1))))) + (vector4-lerp! (the-as vector (+ s2-1 0)) (the-as vector (+ s1-0 0)) (the-as vector (+ s0-0 0)) f30-0) + (vector4-lerp! (the-as vector (+ s2-1 16)) (the-as vector (+ s1-0 16)) (the-as vector (+ s0-0 16)) f30-0) + (vector4-lerp! (the-as vector (+ s2-1 32)) (the-as vector (+ s1-0 32)) (the-as vector (+ s0-0 32)) f30-0)) + (vector-normalize! (the-as vector (+ s2-1 0)) 1.0))) + (let ((s3-3 (+ (the-as uint (-> arg0 light-group 0 ambi)) (* 192 s4-4))) + (s2-2 (+ (the-as uint (-> arg0 moods 0 light-group 0 ambi)) (* 192 s4-4))) + (s1-1 (+ (the-as uint (-> arg0 moods 1 light-group 0 ambi)) (* 192 s4-4)))) + (vector4-lerp! (the-as vector (+ s3-3 0)) (the-as vector (+ s2-2 0)) (the-as vector (+ s1-1 0)) f30-0) + (vector4-lerp! (the-as vector (+ s3-3 16)) (the-as vector (+ s2-2 16)) (the-as vector (+ s1-1 16)) f30-0) + (vector4-lerp! (the-as vector (+ s3-3 32)) (the-as vector (+ s2-2 32)) (the-as vector (+ s1-1 32)) f30-0))) + (set! (-> arg0 num-stars) + (+ (-> arg0 moods 0 num-stars) (* (- (-> arg0 moods 1 num-stars) (-> arg0 moods 0 num-stars)) f30-0))) + (let ((f0-20 (-> *level* level0 info sun-fade))) + (set! (-> arg0 sun-fade) (+ f0-20 (* f30-0 (- (-> *level* level1 info sun-fade) f0-20))))))) ;; setup sky stuff (dotimes (s4-5 2) - (make-sky-textures arg0 s4-5) - ) + (make-sky-textures arg0 s4-5)) (set! (-> sky-base-polygons 0 col quad) (-> s5-1 erase-color quad)) (set! (-> sky-base-polygons 1 col quad) (-> s5-1 erase-color quad)) (set! (-> sky-base-polygons 2 col quad) (-> s5-1 erase-color quad)) @@ -555,27 +377,24 @@ (set! (-> sky-base-polygons 8 col quad) (-> s5-1 erase-color quad)) (set! (-> sky-base-polygons 9 col quad) (-> s5-1 erase-color quad)) (set! (-> sky-base-polygons 10 col quad) (-> s5-1 erase-color quad)) - (set! (-> sky-base-polygons 11 col quad) (-> s5-1 erase-color quad)) - ) - ) - ) + (set! (-> sky-base-polygons 11 col quad) (-> s5-1 erase-color quad))))) (set! (-> arg0 current-sun env-color x) (* 0.5019608 (-> arg0 current-sun env-color x))) (set! (-> arg0 current-sun env-color y) (* 0.5019608 (-> arg0 current-sun env-color y))) (set! (-> arg0 current-sun env-color z) (* 0.5019608 (-> arg0 current-sun env-color z))) (set! (-> arg0 current-sun env-color w) (* 0.5019608 (-> arg0 current-sun env-color w))) (let ((v1-179 (-> arg0 current-fog))) - (set! *fog-color* (new 'static 'rgba - :r (the int (-> v1-179 fog-color x)) - :g (the int (-> v1-179 fog-color y)) - :b (the int (-> v1-179 fog-color z)) - ) - ) - ) + (set! *fog-color* + (new 'static + 'rgba + :r + (the int (-> v1-179 fog-color x)) + :g + (the int (-> v1-179 fog-color y)) + :b + (the int (-> v1-179 fog-color z))))) (let ((v1-184 (-> arg0 current-fog erase-color))) (set! (-> arg0 erase-color) - (new 'static 'rgba :a #x80 :b (the int (-> v1-184 z)) :g (the int (-> v1-184 y)) :r (the int (-> v1-184 x))) - ) - ) + (new 'static 'rgba :a #x80 :b (the int (-> v1-184 z)) :g (the int (-> v1-184 y)) :r (the int (-> v1-184 x))))) (set! (-> *math-camera* fog-start) (-> arg0 current-fog fog-dists x)) (set! (-> *math-camera* fog-end) (-> arg0 current-fog fog-dists y)) (set! (-> *math-camera* fog-max) (-> arg0 current-fog fog-dists z)) @@ -584,40 +403,26 @@ (let* ((v1-195 (if *target* (-> *target* draw light-index) 0)) (f30-1 (-> arg0 target-interp)) (s4-6 (-> arg0 light-group)) - (s5-2 (-> arg0 light-group v1-195)) - ) + (s5-2 (-> arg0 light-group v1-195))) (when (nonzero? v1-195) (cond - ((= f30-1 1.0) - ) - ((= f30-1 0.0) - (quad-copy! (the-as pointer (-> arg0 light-group v1-195)) (the-as pointer (-> arg0 light-group)) 12) - ) + ((= f30-1 1.0)) + ((= f30-1 0.0) (quad-copy! (the-as pointer (-> arg0 light-group v1-195)) (the-as pointer (-> arg0 light-group)) 12)) (else - (dotimes (s3-4 4) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> s5-2 dir0)) (* 48 s3-4))) - (the-as vector (+ (the-as uint (-> s4-6 0)) (* 48 s3-4))) - (the-as vector (+ (the-as uint (-> s5-2 dir0)) (* 48 s3-4))) - f30-1 - ) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> s5-2 dir0 color)) (* 48 s3-4))) - (the-as vector (+ (the-as uint (-> s4-6 0 dir0 color)) (* 48 s3-4))) - (the-as vector (+ (the-as uint (-> s5-2 dir0 color)) (* 48 s3-4))) - f30-1 - ) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> s5-2 dir0 levels)) (* 48 s3-4))) - (the-as vector (+ (the-as uint (-> s4-6 0 dir0 levels)) (* 48 s3-4))) - (the-as vector (+ (the-as uint (-> s5-2 dir0 levels)) (* 48 s3-4))) - f30-1 - ) - (vector-normalize! (the-as vector (+ (the-as uint (-> s5-2 dir0)) (* 48 s3-4))) 1.0) - ) - ) - ) - + (dotimes (s3-4 4) + (vector4-lerp! (the-as vector (+ (the-as uint (-> s5-2 dir0)) (* 48 s3-4))) + (the-as vector (+ (the-as uint (-> s4-6 0)) (* 48 s3-4))) + (the-as vector (+ (the-as uint (-> s5-2 dir0)) (* 48 s3-4))) + f30-1) + (vector4-lerp! (the-as vector (+ (the-as uint (-> s5-2 dir0 color)) (* 48 s3-4))) + (the-as vector (+ (the-as uint (-> s4-6 0 dir0 color)) (* 48 s3-4))) + (the-as vector (+ (the-as uint (-> s5-2 dir0 color)) (* 48 s3-4))) + f30-1) + (vector4-lerp! (the-as vector (+ (the-as uint (-> s5-2 dir0 levels)) (* 48 s3-4))) + (the-as vector (+ (the-as uint (-> s4-6 0 dir0 levels)) (* 48 s3-4))) + (the-as vector (+ (the-as uint (-> s5-2 dir0 levels)) (* 48 s3-4))) + f30-1) + (vector-normalize! (the-as vector (+ (the-as uint (-> s5-2 dir0)) (* 48 s3-4))) 1.0)))) ;; some shadow thing. (let ((a2-30 (new 'stack-no-clear 'vector))) (set! (-> a2-30 x) (- (-> s5-2 dir0 direction x))) @@ -628,52 +433,30 @@ (f1-17 (-> a2-30 x)) (f1-19 (* f1-17 f1-17)) (f2-7 (-> a2-30 z)) - (f0-57 (/ f0-56 (sqrtf (+ f1-19 (* f2-7 f2-7))))) - ) + (f0-57 (/ f0-56 (sqrtf (+ f1-19 (* f2-7 f2-7)))))) (set! (-> a2-30 x) (* (-> a2-30 x) f0-57)) (set! (-> a2-30 y) -0.9063) - (set! (-> a2-30 z) (* (-> a2-30 z) f0-57)) - ) - ) - (vector4-lerp! (-> arg0 current-shadow) (-> arg0 current-shadow) a2-30 f30-1) - ) - (vector-normalize! (-> arg0 current-shadow) 1.0) - ) - ) + (set! (-> a2-30 z) (* (-> a2-30 z) f0-57)))) + (vector4-lerp! (-> arg0 current-shadow) (-> arg0 current-shadow) a2-30 f30-1)) + (vector-normalize! (-> arg0 current-shadow) 1.0))) (reset! *palette-fade-controls*) 0 - (none) - ) + (none)) (defmethod set-fade! ((this palette-fade-controls) (arg0 int) (arg1 float) (arg2 float) (arg3 vector)) (cond ((and (>= arg0 0) (< arg0 8)) (let ((v1-3 (-> this control arg0))) (when (< arg2 (-> v1-3 actor-dist)) - (if arg3 - (set! (-> v1-3 trans quad) (-> arg3 quad)) - ) + (if arg3 (set! (-> v1-3 trans quad) (-> arg3 quad))) (set! (-> v1-3 fade) (fmax 0.0 (fmin 1.993 arg1))) - (set! (-> v1-3 actor-dist) arg2) - ) - ) - ) - (else - (format 0 "ERROR: Bogus palette-fade-control index!~%") - ) - ) - ) + (set! (-> v1-3 actor-dist) arg2)))) + (else (format 0 "ERROR: Bogus palette-fade-control index!~%")))) (defmethod reset! ((this palette-fade-controls)) (countdown (v1-0 8) - (let ((a1-2 (-> this control v1-0))) - (set! (-> a1-2 fade) 0.0) - (set! (-> a1-2 actor-dist) 4096000000.0) - ) - ) - #f - ) - + (let ((a1-2 (-> this control v1-0))) (set! (-> a1-2 fade) 0.0) (set! (-> a1-2 actor-dist) 4096000000.0))) + #f) ;; start the time of day process!! (start-time-of-day) diff --git a/goal_src/jak1/engine/gfx/mood/weather-part.gc b/goal_src/jak1/engine/gfx/mood/weather-part.gc index 869e5f99d2..19d8e9b7ac 100644 --- a/goal_src/jak1/engine/gfx/mood/weather-part.gc +++ b/goal_src/jak1/engine/gfx/mood/weather-part.gc @@ -1,449 +1,414 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/cam-interface-h.gc") (require "engine/gfx/sky/sky-h.gc") (require "engine/target/target-h.gc") (require "engine/gfx/sprite/sparticle/sparticle.gc") -;; name: weather-part.gc -;; name in dgo: weather-part -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defpartgroup group-rain-screend-drop-real :id 188 :flags (screen-space) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 18 :binding 19) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 19 :flags (start-dead launch-asap) :binding 20) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 20 :flags (start-dead launch-asap)) - (sp-item 21 :binding 22) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 22 :flags (start-dead launch-asap) :binding 23) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - (sp-item 23 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 18 :binding 19) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 19 :flags (start-dead launch-asap) :binding 20) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 20 :flags (start-dead launch-asap)) + (sp-item 21 :binding 22) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 22 :flags (start-dead launch-asap) :binding 23) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)) + (sp-item 23 :flags (start-dead launch-asap)))) (define group-rain-screend-drop (-> *part-group-id-table* 188)) (defpart 21 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1) - (:x (meters -4.5) (meters 9)) - (:y (meters -3) (meters 6)) - (:scale-x (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 12.0) - (:scalevel-x (meters 0.16666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.8) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1) + (:x (meters -4.5) (meters 9)) + (:y (meters -3) (meters 6)) + (:scale-x (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 12.0) + (:scalevel-x (meters 0.16666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.8) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)))) (defpart 22 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 20.0) - (:scalevel-x (meters 0.033333335)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.8) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 24) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 20.0) + (:scalevel-x (meters 0.033333335)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.8) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 24))) (defpart 24 - :init-specs ((:scalevel-x (meters 0.004166667)) (:scalevel-y :copy scalevel-x) (:fade-a -0.06666667)) - ) + :init-specs ((:scalevel-x (meters 0.004166667)) (:scalevel-y :copy scalevel-x) (:fade-a -0.06666667))) (defpart 23 - :init-specs ((:num 1.0) - (:rot-x 12) - (:r 4096.0) - (:g 3276.8) - (:b 3276.8) - (:fade-r 6.068148) - (:fade-g 68.26667) - (:fade-b 3.034074) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.9)) - (:flags (aux-list)) - (:next-time (seconds 0.1)) - (:next-launcher 25) - ) - ) + :init-specs + ((:num 1.0) + (:rot-x 12) + (:r 4096.0) + (:g 3276.8) + (:b 3276.8) + (:fade-r 6.068148) + (:fade-g 68.26667) + (:fade-b 3.034074) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.9)) + (:flags (aux-list)) + (:next-time (seconds 0.1)) + (:next-launcher 25))) (defpart 25 - :init-specs ((:fade-g -5.1200004)) - ) + :init-specs ((:fade-g -5.1200004))) (defpart 18 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1) - (:x (meters -4.5) (meters 9)) - (:y (meters -3) (meters 6)) - (:scale-x (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 12.0) - (:scalevel-x (meters 0.26666668)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.8) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1) + (:x (meters -4.5) (meters 9)) + (:y (meters -3) (meters 6)) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 12.0) + (:scalevel-x (meters 0.26666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.8) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)))) (defpart 19 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:scale-x (meters 2.6)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 20.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.8) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 26) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:scale-x (meters 2.6)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 20.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.8) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 26))) (defpart 26 - :init-specs ((:scalevel-x (meters 0.008333334)) (:scalevel-y :copy scalevel-x) (:fade-a -0.06666667)) - ) + :init-specs ((:scalevel-x (meters 0.008333334)) (:scalevel-y :copy scalevel-x) (:fade-a -0.06666667))) (defpart 20 - :init-specs ((:num 1.0) - (:rot-x 24) - (:r 12288.0) - (:g 6553.6) - (:b 6553.6) - (:fade-r 12.136296) - (:fade-g 136.53334) - (:fade-b 6.068148) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.9)) - (:flags (aux-list)) - (:next-time (seconds 0.1)) - (:next-launcher 27) - ) - ) + :init-specs + ((:num 1.0) + (:rot-x 24) + (:r 12288.0) + (:g 6553.6) + (:b 6553.6) + (:fade-r 12.136296) + (:fade-g 136.53334) + (:fade-b 6.068148) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.9)) + (:flags (aux-list)) + (:next-time (seconds 0.1)) + (:next-launcher 27))) (defpart 27 - :init-specs ((:fade-g -10.240001)) - ) + :init-specs ((:fade-g -10.240001))) (defpartgroup group-stars :id 34 :flags (always-draw) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 28) (sp-item 29) (sp-item 30)) - ) + :parts ((sp-item 28) (sp-item 29) (sp-item 30))) (defpart 28 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 40) (meters 40)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 256.0) - (:b 256.0) - (:a 0.0) - (:fade-a 0.42666668) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.2) (seconds 0.797)) - (:next-launcher 31) - (:conerot-x (degrees -89) (degrees 178)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 5000)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 40) (meters 40)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 256.0) + (:b 256.0) + (:a 0.0) + (:fade-a 0.42666668) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.2) (seconds 0.797)) + (:next-launcher 31) + (:conerot-x (degrees -89) (degrees 178)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 5000)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 31 - :init-specs ((:fade-a 0.0) (:next-time (seconds 99999)) (:next-launcher 32)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 99999)) (:next-launcher 32))) (defpart 32 - :init-specs ((:fade-a -0.42666668)) - ) + :init-specs ((:fade-a -0.42666668))) (defpart 29 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 40) (meters 40)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 256.0) - (:b 256.0) - (:a 0.0) - (:fade-a 0.42666668) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.2) (seconds 0.797)) - (:next-launcher 31) - (:conerot-x (degrees 30) (degrees 59)) - (:conerot-y (degrees 0) (degrees 2880)) - (:conerot-radius (meters 5000)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 40) (meters 40)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 256.0) + (:b 256.0) + (:a 0.0) + (:fade-a 0.42666668) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.2) (seconds 0.797)) + (:next-launcher 31) + (:conerot-x (degrees 30) (degrees 59)) + (:conerot-y (degrees 0) (degrees 2880)) + (:conerot-radius (meters 5000)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 30 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 40) (meters 40)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:fade-a 0.42666668) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.2) (seconds 0.797)) - (:next-launcher 31) - (:conerot-x (degrees 60) (degrees 29)) - (:conerot-y (degrees 0) (degrees 5760)) - (:conerot-radius (meters 5000)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 40) (meters 40)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:fade-a 0.42666668) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.2) (seconds 0.797)) + (:next-launcher 31) + (:conerot-x (degrees 60) (degrees 29)) + (:conerot-y (degrees 0) (degrees 5760)) + (:conerot-radius (meters 5000)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 33 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:x (meters 10) (meters 10)) - (:y (meters 2) (meters 14)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters -0.01) (meters -0.0033333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a 0.85333335) - (:timer (seconds 5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 35) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:x (meters 10) (meters 10)) + (:y (meters 2) (meters 14)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters -0.01) (meters -0.0033333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a 0.85333335) + (:timer (seconds 5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 35) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 34 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.0) - (:x (meters 0) (meters 20)) - (:y (meters 16)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters -0.01) (meters -0.0033333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a 0.85333335) - (:timer (seconds 5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 35) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.0) + (:x (meters 0) (meters 20)) + (:y (meters 16)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters -0.01) (meters -0.0033333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a 0.85333335) + (:timer (seconds 5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 35) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 35 - :init-specs ((:fade-a 0.0) (:next-time (seconds 4)) (:next-launcher 36)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 4)) (:next-launcher 36))) (defpart 36 - :init-specs ((:fade-a -0.85333335)) - ) + :init-specs ((:fade-a -0.85333335))) (defun update-snow ((arg0 target)) (let ((gp-0 (-> arg0 control trans))) (let ((f0-0 (lerp-scale 0.0 1.0 (vector-length (-> arg0 control transv)) 2048.0 40960.0))) (set! (-> *part-id-table* 34 init-specs 1 initial-valuef) (- 1.0 f0-0)) - (set! (-> *part-id-table* 33 init-specs 1 initial-valuef) (* 4.0 f0-0)) - ) - (set! (-> *part-id-table* 33 init-specs 19 initial-valuef) - (+ 32768.0 (vector-y-angle (-> arg0 control transv))) - ) + (set! (-> *part-id-table* 33 init-specs 1 initial-valuef) (* 4.0 f0-0))) + (set! (-> *part-id-table* 33 init-specs 19 initial-valuef) (+ 32768.0 (vector-y-angle (-> arg0 control transv)))) (launch-particles (-> *part-id-table* 34) gp-0) - (launch-particles (-> *part-id-table* 33) gp-0) - ) + (launch-particles (-> *part-id-table* 33) gp-0)) 0 - (none) - ) + (none)) (defpart 37 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.5) - (:x (meters 0) (meters 20)) - (:y (meters 16)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.13333334)) - (:timer (seconds 0.8)) - (:flags (bit2 bit14)) - (:userdata 0.0) - (:func 'check-drop-level-rain) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.5) + (:x (meters 0) (meters 20)) + (:y (meters 16)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.13333334)) + (:timer (seconds 0.8)) + (:flags (bit2 bit14)) + (:userdata 0.0) + (:func 'check-drop-level-rain) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 38 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.5) - (:x (meters 0) (meters 20)) - (:y (meters 16)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.033333335)) - (:timer (seconds 0.8)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.5) + (:x (meters 0) (meters 20)) + (:y (meters 16)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.033333335)) + (:timer (seconds 0.8)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 39 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.0 1 2.0) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 110.0 32.0) - (:g 128.0 32.0) - (:b 64.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 25.000002) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.0 1 2.0) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 110.0 32.0) + (:g 128.0 32.0) + (:b 64.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 25.000002) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 40 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 1) (meters 1)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 110.0 32.0) - (:g 128.0 32.0) - (:b 96.0 32.0) - (:a 16.0 32.0) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.4) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 1) (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0 32.0) + (:g 128.0 32.0) + (:b 96.0 32.0) + (:a 16.0 32.0) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.4) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defun check-drop-level-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -451,11 +416,8 @@ (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 39) gp-0 :rate 1.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 40) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 40) gp-0 :rate 1.0))) + (none)) (defun update-rain ((arg0 target)) (let ((a2-0 (new 'stack-no-clear 'vector))) @@ -466,15 +428,10 @@ (let ((gp-0 (vector+float*! (new 'stack-no-clear 'vector) (-> arg0 control trans) a2-0 0.0))) (let* ((s5-0 (matrix-local->world #f #f)) (f28-0 (lerp-scale 122.88 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7)) - (f30-0 (lerp-scale 2048.0 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7)) - ) + (f30-0 (lerp-scale 2048.0 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7))) (let ((f26-0 (lerp-scale 0.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7)) - (f0-10 (lerp-scale 1.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7)) - ) - (if (< 0.0 f26-0) - (send-event *camera* 'part-water-drip f26-0 f0-10) - ) - ) + (f0-10 (lerp-scale 1.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7))) + (if (< 0.0 f26-0) (send-event *camera* 'part-water-drip f26-0 f0-10))) (set! (-> *part-id-table* 37 init-specs 4 initial-valuef) f28-0) (set! (-> *part-id-table* 37 init-specs 4 random-rangef) f28-0) (set! (-> *part-id-table* 38 init-specs 4 initial-valuef) f28-0) @@ -482,15 +439,11 @@ (set! (-> *part-id-table* 37 init-specs 5 initial-valuef) f30-0) (set! (-> *part-id-table* 37 init-specs 5 random-rangef) f30-0) (set! (-> *part-id-table* 38 init-specs 5 initial-valuef) f30-0) - (set! (-> *part-id-table* 38 init-specs 5 random-rangef) f30-0) - ) + (set! (-> *part-id-table* 38 init-specs 5 random-rangef) f30-0)) (launch-particles (-> *part-id-table* 37) gp-0) - (launch-particles (-> *part-id-table* 38) gp-0) - ) - ) + (launch-particles (-> *part-id-table* 38) gp-0))) 0 - (none) - ) + (none)) (defbehavior cam-master-effect camera-master () (when (< (+ (current-time) (seconds -10)) (-> self water-drip-time)) @@ -500,157 +453,138 @@ (set! (-> *part-id-table* 23 init-specs 8 initial-valuef) (* -2.7306666 (-> self water-drip-speed))) (set! (-> *part-id-table* 19 init-specs 11 initial-valuef) (* -2.7306666 (-> self water-drip-speed))) (set! (-> *part-id-table* 20 init-specs 8 initial-valuef) (* -2.7306666 (-> self water-drip-speed))) - (spawn (-> self water-drip) *zero-vector*) - ) + (spawn (-> self water-drip) *zero-vector*)) 0 - (none) - ) + (none)) (defun sparticle-track-sun ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 matrix)) (-> arg1 key) (let ((s5-0 (the int (-> arg1 user-float)))) (let* ((a1-1 (math-camera-pos)) (a2-1 (-> *sky-parms* upload-data sun (/ s5-0 4))) - (v1-3 (vector+float*! (new 'stack-no-clear 'vector) a1-1 (the-as vector a2-1) 4096.0)) - ) + (v1-3 (vector+float*! (new 'stack-no-clear 'vector) a1-1 (the-as vector a2-1) 4096.0))) (set! (-> arg2 vector 0 x) (-> v1-3 x)) (set! (-> arg2 vector 0 y) (-> v1-3 y)) - (set! (-> arg2 vector 0 z) (-> v1-3 z)) - ) - (if (!= (-> arg2 vector 2 w) 0.0) - (set! (-> arg2 vector 2 w) (* 128.0 (-> *time-of-day-context* sun-fade))) - ) + (set! (-> arg2 vector 0 z) (-> v1-3 z))) + (if (!= (-> arg2 vector 2 w) 0.0) (set! (-> arg2 vector 2 w) (* 128.0 (-> *time-of-day-context* sun-fade)))) (cond ((zero? s5-0) (set! (-> arg2 vector 2 x) (-> *time-of-day-context* current-sun sun-color x)) (set! (-> arg2 vector 2 y) (-> *time-of-day-context* current-sun sun-color y)) - (set! (-> arg2 vector 2 z) (-> *time-of-day-context* current-sun sun-color z)) - ) + (set! (-> arg2 vector 2 z) (-> *time-of-day-context* current-sun sun-color z))) ((or (= s5-0 1) (= s5-0 2)) (set! (-> arg2 vector 2 x) (* 0.25 (-> *time-of-day-context* current-sun sun-color x))) (set! (-> arg2 vector 2 y) (* 0.25 (-> *time-of-day-context* current-sun sun-color y))) - (set! (-> arg2 vector 2 z) (* 0.25 (-> *time-of-day-context* current-sun sun-color z))) - ) - ) - ) + (set! (-> arg2 vector 2 z) (* 0.25 (-> *time-of-day-context* current-sun sun-color z)))))) 0 - (none) - ) + (none)) (defpartgroup group-sun :id 35 :flags (always-draw) :bounds (static-bspherem 0 0 0 70) - :parts ((sp-item 1950) (sp-item 1951) (sp-item 1952)) - ) + :parts ((sp-item 1950) (sp-item 1951) (sp-item 1952))) (defpart 1950 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 1200)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit12 bit14)) - (:userdata 0.0) - (:func 'sparticle-track-sun) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 1200)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit12 bit14)) + (:userdata 0.0) + (:func 'sparticle-track-sun))) (defpart 1951 - :init-specs ((:texture (new 'static 'texture-id :index #x35 :page #x2)) - (:num 1.0) - (:scale-x (meters 2800)) - (:rot-z (degrees 0)) - (:scale-y (meters 2200)) - (:r 64.0) - (:g 64.0) - (:b 32.0) - (:a 128.0) - (:rotvel-z (degrees -0.05)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:userdata 1.0) - (:func 'sparticle-track-sun) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x35 :page #x2)) + (:num 1.0) + (:scale-x (meters 2800)) + (:rot-z (degrees 0)) + (:scale-y (meters 2200)) + (:r 64.0) + (:g 64.0) + (:b 32.0) + (:a 128.0) + (:rotvel-z (degrees -0.05)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:userdata 1.0) + (:func 'sparticle-track-sun))) (defpart 1952 - :init-specs ((:texture (new 'static 'texture-id :index #x35 :page #x2)) - (:num 1.0) - (:scale-x (meters 2200)) - (:rot-z (degrees 0)) - (:scale-y (meters 2800)) - (:r 64.0) - (:g 64.0) - (:b 32.0) - (:a 128.0) - (:rotvel-z (degrees 0.05)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:userdata 2.0) - (:func 'sparticle-track-sun) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x35 :page #x2)) + (:num 1.0) + (:scale-x (meters 2200)) + (:rot-z (degrees 0)) + (:scale-y (meters 2800)) + (:r 64.0) + (:g 64.0) + (:b 32.0) + (:a 128.0) + (:rotvel-z (degrees 0.05)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:userdata 2.0) + (:func 'sparticle-track-sun))) (defpartgroup group-green-sun :id 36 :flags (always-draw) :bounds (static-bspherem 0 0 0 70) - :parts ((sp-item 1974) (sp-item 1975) (sp-item 1976)) - ) + :parts ((sp-item 1974) (sp-item 1975) (sp-item 1976))) (defpart 1974 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 600)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 255.0) - (:b 0.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:userdata 4.0) - (:func 'sparticle-track-sun) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 600)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 255.0) + (:b 0.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:userdata 4.0) + (:func 'sparticle-track-sun))) (defpart 1975 - :init-specs ((:texture (new 'static 'texture-id :index #x35 :page #x2)) - (:num 1.0) - (:scale-x (meters 1400)) - (:rot-z (degrees 0)) - (:scale-y (meters 1100)) - (:r 0.0) - (:g 64.0) - (:b 0.0) - (:a 128.0) - (:rotvel-z (degrees -0.05)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:userdata 5.0) - (:func 'sparticle-track-sun) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x35 :page #x2)) + (:num 1.0) + (:scale-x (meters 1400)) + (:rot-z (degrees 0)) + (:scale-y (meters 1100)) + (:r 0.0) + (:g 64.0) + (:b 0.0) + (:a 128.0) + (:rotvel-z (degrees -0.05)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:userdata 5.0) + (:func 'sparticle-track-sun))) (defpart 1976 - :init-specs ((:texture (new 'static 'texture-id :index #x35 :page #x2)) - (:num 1.0) - (:scale-x (meters 1100)) - (:rot-z (degrees 0)) - (:scale-y (meters 1400)) - (:r 0.0) - (:g 64.0) - (:b 0.0) - (:a 128.0) - (:rotvel-z (degrees 0.05)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit14)) - (:userdata 6.0) - (:func 'sparticle-track-sun) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x35 :page #x2)) + (:num 1.0) + (:scale-x (meters 1100)) + (:rot-z (degrees 0)) + (:scale-y (meters 1400)) + (:r 0.0) + (:g 64.0) + (:b 0.0) + (:a 128.0) + (:rotvel-z (degrees 0.05)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit14)) + (:userdata 6.0) + (:func 'sparticle-track-sun))) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-frames.gc b/goal_src/jak1/engine/gfx/ocean/ocean-frames.gc index 09e360e132..886c3e19b7 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-frames.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-frames.gc @@ -1,16403 +1,16398 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: ocean-frames.gc -;; name in dgo: ocean-frames -;; dgos: GAME, ENGINE - ;; og:ignore-from-loc ;; DECOMP BEGINS (define *ocean-wave-frames* - (new 'static 'array uint32 16384 - #x130af9fc - #x12fdff18 - #xf1effc05 - #xb170e04 - #x4fb00fb - #xf0dfa07 - #xffff0701 - #xf80010 - #x1408f4fa - #xbf1021b - #xe7fa050b - #x11140efa - #x4fcfcfc - #xe00fe0e - #xfa010e06 - #xfcf80a11 - #xefff2fb - #xfbf00c19 - #xeb0b0906 - #x120d0aee - #x2fdf803 - #x7fc060e - #xfa0c1108 - #xfc001007 - #x7faf700 - #xf1f8100f - #xfc1502fc - #xc0603eb - #x5fef80b - #x2ff0d0a - #x120b06 - #x51001 - #x5fcfd02 - #xf1ff0804 - #xe12f9f5 - #x100fdf3 - #xbfcfa0f - #x1071008 - #x50e0507 - #x20c10fd - #x8fb0004 - #xf1fafb06 - #x1606f6f3 - #xf7fcfd02 - #x10f9000b - #xe0d09 - #x406070b - #x5130ef9 - #x7f70509 - #xebf0f914 - #x1201f9ec - #xf3fe000d - #xff90400 - #x2180b0d - #x2020e08 - #xc1904f4 - #xfcf40e10 - #xe4ed041f - #xe07f7e1 - #xf7ff0012 - #x7fb06f7 - #x91f0e13 - #x1031301 - #x1312f4f4 - #xf0ff170f - #xe8f71117 - #xe0dede0 - #xfefb0213 - #xfd0003f6 - #x171c1214 - #x1050b00 - #xe00ed00 - #xf30d1404 - #xf3011207 - #xf08e4e1 - #xfff50a13 - #xf80400fd - #x1f19140d - #x1050107 - #xf4f608 - #x21306f6 - #x40aff - #xcf9e0e7 - #xf8f21313 - #xfa050005 - #x1f181602 - #x5fd12 - #xf4f70608 - #xa07f7f2 - #x3000505 - #x2ebe0f2 - #xf1fa170d - #x1060409 - #x1e1a11fb - #x3030018 - #xf5020d02 - #x2f6f3f8 - #xff070d - #xf7e7e8fb - #xf2031403 - #x7070804 - #x1b1d08f9 - #x7000217 - #xfc0b0c03 - #xf1edfa00 - #x20c0a - #xf1f2f4fa - #xfa0708f9 - #xa080900 - #x1b1d01fd - #x9fd0311 - #x20a0a0c - #xe8f60000 - #x80807f7 - #xf6fdf5fb - #xfdf3 - #x90a0803 - #x1d150104 - #x5fb010f - #x1081316 - #xeffffffd - #xf04fae9 - #xfbfff404 - #xfef7faf3 - #x90b0709 - #x1d100706 - #xf9fe10 - #xfe0b1d16 - #xfdfff9fb - #xdf8eaea - #xfcf9fd12 - #xf5f4fef4 - #xc0b080c - #x19100b03 - #xfdf9fc16 - #xfe151f0b - #x1f5f9fe - #xebe5f9 - #xf7f90e17 - #xf1fdfff1 - #x11080a07 - #x14150700 - #xfff6001a - #x21a1d04 - #xfbedff00 - #xf1e6eb06 - #xf5031b0d - #xf907f7ec - #x14030900 - #x12180001 - #xfff30918 - #x51e1702 - #xf1ef0400 - #xeee8f30b - #xf81218f9 - #xa09e9ea - #xefe0700 - #x1216fc0c - #xfbf51413 - #x71f1405 - #xedf70002 - #xf5ecf907 - #xfe1c09ee - #x15fde2ed - #xfe090b - #x130a0012 - #xf6001b0e - #xd1f0f05 - #xeffafa09 - #xfbecfd02 - #x31bfbef - #x14eee6f2 - #xf4010e19 - #x12030a0d - #xf90e1609 - #x161b0a02 - #xf1f9fd14 - #xf9ed00ff - #x513f5f7 - #x6e5f0f3 - #xf209161f - #xe051000 - #x5180a08 - #x1d130500 - #xf0f80a18 - #xf3f202fa - #x50bf7fa - #xfaeaf6f2 - #xfc10191f - #xc0c0af3 - #x12170009 - #x18080302 - #xf300140f - #xf2f8fff6 - #x608faf8 - #xf6f3f6f3 - #x9111918 - #xa0f00f2 - #x160c000b - #x9010408 - #xfc0b1302 - #xf8faf9f8 - #x808faf6 - #xfaf8f4f7 - #xf0e1510 - #x80cf8fc - #x11060609 - #xfdfe050c - #x80f09fc - #xfdf6f8ff - #x806f6f8 - #xfef8f7fd - #xb09110d - #x607fc05 - #xc080a04 - #xf8fc060e - #x100c02f8 - #xf9f2fd07 - #x704f5fb - #xfdf8ff00 - #x5050d0e - #x4060307 - #xb0a0700 - #xf4f8070d - #x120702f4 - #xf3f8040e - #x600f4f9 - #xfafd0801 - #x3030b0d - #x40b0903 - #xb0a0200 - #xeefb0a0a - #x100502f0 - #xf7020610 - #x6f9f3f7 - #xf9070c02 - #x5000909 - #x61205ff - #xa050200 - #xed000808 - #xf0700f2 - #x2080312 - #x1f1f4f8 - #xfe110c05 - #x6fc0601 - #x915fefe - #x70103ff - #xf4020309 - #x110afbfa - #x1002ff17 - #xf7edf800 - #x8170d07 - #x6fb03fd - #xd13fb03 - #x1fe0600 - #xfffdfe0f - #x1305f4fb - #x9f50c18 - #xecf80010 - #x13130df9 - #xfcfffdff - #x13fc020b - #xfc05000a - #xfafb0e07 - #x11fdf4f7 - #xf7f4141a - #xee03080f - #x121109eb - #xfefcf906 - #x9f80a0c - #xfd0b070b - #xf50313ff - #x6f7f7fa - #xec001812 - #xff0d0703 - #xe0dfee7 - #x1fafc0f - #x1ff0e08 - #x4110809 - #xfa0b0ffa - #xf7fdfe - #xef071009 - #xf0bfff8 - #x707f4f1 - #x4f70110 - #x80d07 - #xa0e0607 - #xf0bfb - #xfb0001 - #xf7030206 - #x1600f8f5 - #xfd01f303 - #x7f70808 - #x210080a - #xa070805 - #x51307fd - #xfb0207 - #xf5f6ff0e - #x10fdf8f3 - #xfa00fb0f - #x4fc0bfd - #x7120810 - #x3040f03 - #xe1600fb - #xf9fc0711 - #xecef0814 - #xb02f5e9 - #xfb000312 - #xff0007f3 - #xe120c14 - #x71000 - #x1810f5fb - #xf1030f16 - #xe5f6170d - #xb0aeae0 - #xfdfd0911 - #xfb0500f2 - #x1a131414 - #x10c0902 - #x19ffec00 - #xf511100d - #xec031afc - #x1302e2e1 - #xfaf90f10 - #xfc05fcfd - #x1f13180b - #x30aff0e - #x9f0f304 - #x31607fd - #xf7090ff5 - #x14f3e0e7 - #xf4fb1413 - #x2fd04 - #x1e161600 - #x305fd18 - #xf9f30003 - #xe0efaf3 - #xfe0504fe - #x9e5e0f3 - #xef021712 - #x4010504 - #x1b1a0dfb - #x401041d - #xf4000800 - #x7fdf3f7 - #xfc000709 - #xfae0e8fc - #xf10c130a - #x7040afc - #x1c1d03fc - #x6ff0a1b - #xfd090500 - #xf8f3f6ff - #xfb030e08 - #xf2e7f3fd - #xfb0f0cfe - #x8080af8 - #x1d18fe01 - #x5ff0c16 - #x4090409 - #xecf5fd02 - #x80df8 - #xf5f6f5fb - #x20900f5 - #x90a06fc - #x1f110006 - #x2fd0714 - #x4070b11 - #xf0fefeff - #x80900e9 - #xfef8f402 - #xfff9f4 - #xa0a0604 - #x1c0b0507 - #xfffc0117 - #xb1810 - #xfafffbfb - #x9ffefe9 - #xf4fc0f - #xf7faf8f7 - #xc080b08 - #x170d0805 - #xfdf8031a - #x161d0a - #xfff9f8fd - #xefe7f7 - #xfbf40c14 - #xf2fff8f9 - #xf090f00 - #x14130304 - #xfdf50819 - #x51f1802 - #xf7f3fb03 - #xf4e5ee04 - #xf601180b - #xfa05f4f4 - #xf080df7 - #x1715fe09 - #xfaf31015 - #xe1f1003 - #xedf6fe07 - #xede5fa05 - #xf91416fd - #x804ecef - #x90709f7 - #x1a0cfd11 - #xf4f71612 - #x141f0d07 - #xebfefb0a - #xeeea02fe - #x21f06f2 - #x11f9e6ee - #x50502 - #x19010513 - #xf1011811 - #x181e0b07 - #xf1fff511 - #xf1ef04f6 - #xd1af8f3 - #xcebe8f2 - #xf8050917 - #x14fe100c - #xf60f1113 - #x1d170aff - #xf5faf918 - #xeff304f3 - #x110ef3fa - #xffe6eef6 - #xf809131f - #xd0412ff - #x3160811 - #x1f1206fa - #xf3f8061c - #xeaf804f3 - #x1002f8fd - #xf2ebf2f9 - #xf1d1b - #x90e09f2 - #x1314020e - #x1d0b00fe - #xf2001213 - #xecfc00f1 - #xdfffcf9 - #xf0f4f0fa - #xa141f10 - #xc13fbf3 - #x1708030d - #xf040109 - #xf80b1205 - #xf3fdfbf1 - #xb00fbf5 - #xf6f7eefd - #xe151d07 - #xd0bf4fe - #x1002070b - #x2020511 - #x41209fd - #xf9f8f7f7 - #xb02f8f8 - #xfcf7f100 - #xc101605 - #xb01f908 - #x8040a08 - #xfc02080f - #xe0c01f9 - #xf6f4fc02 - #xafff7fd - #xfbf7f902 - #x60d1209 - #x800020a - #x90a0705 - #xf900080b - #xe0600f4 - #xf0f6030c - #x9fbf9fc - #xf9fcff03 - #x3081009 - #x6050706 - #xc0a0202 - #xf3000809 - #xa0500ef - #xf1ff0911 - #x7f7f9f7 - #xf9040105 - #x2061002 - #x90d0402 - #xd070001 - #xf002070a - #x908fbef - #xfe050811 - #x2f3f6f5 - #xd0308 - #x1030dfc - #xf10fe02 - #x9030100 - #xf403050c - #xd0af5f6 - #xb000613 - #xf9f1f5fd - #x9110707 - #xff0208f9 - #x1409fb06 - #x2020001 - #xfcff050d - #x1308f4fc - #xdf90918 - #xeef4fc0b - #x12130cff - #xfc0100fb - #x14ff000b - #xfe030006 - #xfdf90a0c - #x11faf6f4 - #xf3ff1718 - #xf1fb0a12 - #x141206ee - #xfdfdf90c - #x7fb0c03 - #x1030013 - #xf30911fc - #x7f4f5f4 - #xe8071c17 - #xfd041005 - #x1211f8e9 - #xfef8ff10 - #xfe020e03 - #x70a070e - #xf8120cf7 - #xfef4f9fb - #xef11150d - #xb0607f6 - #xf0aebf4 - #xfff7050f - #xfe0b0c04 - #xd0a0806 - #x21404fb - #xfbfafc01 - #xfb0e0905 - #x1100fdf2 - #x901ea05 - #xfdfa0c08 - #x40e0808 - #xc070802 - #x9130100 - #xfcfdfd08 - #xff000205 - #xcfbf8f5 - #x2fcf712 - #xfa010dfd - #xb0c080d - #x5050b01 - #x1111ff03 - #xfbfe0013 - #xf2f6090a - #x5fef7f3 - #xfd0514 - #xfa0706f6 - #x100a0f10 - #xa0a01 - #x1b0bf700 - #xf701081b - #xe6fb1402 - #x801eee9 - #xffff0d0e - #xfc09fdf6 - #x150a170e - #x20f0406 - #x1dfdf2fe - #xfa0d1016 - #xe50a19f4 - #x11fce1e0 - #xfb00100e - #x4f6fc - #x190d1906 - #x80dfe10 - #xfedf400 - #x7150d03 - #xf2140ced - #x15ebe0e4 - #xf5021116 - #x600fb00 - #x1a161300 - #x906001b - #xfaeeff00 - #x120ffff6 - #xfc0e00f7 - #xae1e2ee - #xf209131a - #x6ff04fd - #x191b0aff - #x6000a1e - #xf3fb0300 - #xe01f4f7 - #xfd040006 - #xf9e0ebf9 - #xf7101314 - #x40409f3 - #x1c1b0100 - #x3ff131b - #xfb060001 - #xfff5f400 - #xfa040a09 - #xede2f4fb - #x130d05 - #x50a06ef - #x1f12fe04 - #x1011219 - #x6050007 - #xf3f5fa05 - #xfb0b0efc - #xefedf8f9 - #x70e04fa - #x70c02f4 - #x1e090007 - #x1020d1a - #x802060c - #xf2fbfe01 - #x20f03eb - #xf9f3f7fd - #x604faf7 - #x90a01ff - #x1a060608 - #x81c - #x206110d - #xfafefbfe - #x906f1e9 - #xfdeffd07 - #xfefef5fd - #xb080803 - #x140a0708 - #xfdfa091c - #x1131607 - #xfefbf600 - #x3f5e9f4 - #xf9f00a0f - #xf8fdf600 - #xa0a0efd - #x130f0409 - #xfaf81019 - #xa1f1304 - #xf7f6f509 - #xf7e7efff - #xf300170c - #xfd00f6fc - #x90f0df1 - #x180d000b - #xf4f81315 - #x171e0c04 - #xf0f8f711 - #xebe7fdfe - #xf81314ff - #x6fff2f4 - #x71004f3 - #x1c050210 - #xeffd1414 - #x1d1a0a06 - #xf0fcf715 - #xe6ef05f4 - #x51d08f5 - #xcf7edf0 - #x40cff01 - #x19fc0b11 - #xee061218 - #x1f150b00 - #xf7fcf719 - #xe7f805eb - #x1419fbf4 - #x6eceaf5 - #xfe070213 - #x10fb1309 - #xf510101a - #x1f140bf7 - #xfbf6fc1d - #xe8fd00ed - #x1a06f8f8 - #xf9e8ebff - #x6101c - #x70712fe - #x4140c16 - #x1f1305f2 - #xf7f4071f - #xe800fef0 - #x16fbfbf8 - #xefeced04 - #x30e1e15 - #x51207f5 - #x100f0a0f - #x1e0cfff9 - #xf2fb141a - #xeb01fcf0 - #xdfa00f4 - #xeff2ee06 - #x8171f06 - #xe13f8f6 - #x1406080a - #x1403fd08 - #xf709130c - #xf300f7ed - #x9fefdf0 - #xf6f4ed06 - #xd1b1cfd - #x1208f300 - #xb000a0c - #x8010414 - #x3110902 - #xf8fbf4f0 - #x8fff9f3 - #xfbf2f106 - #xe1b16fe - #x10fcf909 - #x4030b0e - #x2030a11 - #xe0e00fe - #xf6f6f6fc - #x8fcfafb - #xfbf2f607 - #xa161103 - #x7f9040b - #x609090b - #x4090a - #xe06fefb - #xeff7ff08 - #x6f9fefa - #xf8f8fb08 - #x6111103 - #x4010906 - #xc0a0407 - #xfc030608 - #x804fcf5 - #xeffd070e - #x4f8fef4 - #xfb00fe09 - #x40e11ff - #x7090603 - #xe060104 - #xf902040c - #x608f7f3 - #xfa040b0d - #xf7f8f0 - #x205000a - #xe0ef9 - #xf090002 - #xa030004 - #xf902060f - #xd09f0f6 - #x6030b0c - #xfaf4f3f9 - #xb080509 - #xfe0d06f8 - #x14040004 - #x502fe07 - #xfd00080e - #x1304eef9 - #x6fe0d10 - #xf2f3f808 - #x110b0b00 - #xfd09ff00 - #x13fb0405 - #x202fd0f - #xfc000c07 - #x13fdf4f6 - #xfbfd1416 - #xeff80513 - #x13100bf3 - #xfc02f907 - #xbf80a05 - #x103fd12 - #xf5041100 - #x5f2f2f5 - #xee0e1b1b - #xf9001401 - #x1310f6ee - #xf70012 - #xfb0909fe - #x3000e0d - #xfd1305fd - #xfbf1f3fd - #xf4171a13 - #x3080ef1 - #x1608e8f6 - #xfcf70810 - #xfe0e0800 - #x8050e04 - #x913fefe - #xf7f7f706 - #x3160e06 - #x906ffec - #x11fbe905 - #xf7ff0d0b - #x60f0704 - #xa070a00 - #x100dfc06 - #xfbfbfa0d - #x80a0501 - #x700f7f3 - #x8f3f711 - #xf5060b05 - #xc0a0a06 - #x6070600 - #x150afe08 - #xfdfdfd15 - #xfefe0601 - #xfdf7f9 - #xf60911 - #xf90b03ff - #xe061106 - #x1090406 - #x1a06fe04 - #xfcfe071c - #xed000eff - #x3fff5f1 - #xfefe110b - #x9fafc - #xe081604 - #x50d000b - #x1afdf9fe - #xfe041319 - #xe80d0ff5 - #xaf9ebe5 - #xfd040f0b - #x703f5fe - #xf111602 - #xb0cff12 - #xdf1f8fe - #x60e1706 - #xf41804ef - #xfe8e0e0 - #xfb070d16 - #xafdfa00 - #x11190f01 - #xc040319 - #xf8eefd00 - #x110f09f6 - #x112f7fa - #x4e0e2e8 - #xfa0b121e - #x6fd01f8 - #x151c0701 - #x6ff111a - #xeef80002 - #x1204f9f5 - #x506f808 - #xf4e0e9f3 - #xfe10181a - #x10405ef - #x1b180204 - #x1011918 - #xf6000003 - #x5f8f4ff - #xff01050d - #xe6e1f4f7 - #x6141609 - #x20c00ec - #x1f0e0106 - #xff061719 - #x300ff05 - #xf8f3fb06 - #xfe0a0a02 - #xe6ecf8f6 - #xd110bfa - #x70cf9f4 - #x1c050306 - #x9111b - #x5ff0407 - #xf4f70003 - #x21003f3 - #xf0f2f7f7 - #xc0800f7 - #xb08faff - #x17030607 - #x50e1e - #x1020c08 - #xf9fcfeff - #xa0bf2ec - #xf7effa00 - #x400f8fe - #xb060203 - #x11070808 - #xfeff101f - #xd1106 - #xfdfbf703 - #x9f9e8f4 - #xf3f20509 - #xfefbf901 - #x90a08fd - #x110b060a - #xf8fd1519 - #xb180f03 - #xfbf6f40e - #xfcebeefc - #xefff1109 - #xfefafefe - #x81206f5 - #x1609050c - #xf3001615 - #x1a1a0b02 - #xf5f4f718 - #xeceafbfa - #xf4121300 - #x4fcfcf4 - #xa14fef5 - #x1901080d - #xef041218 - #x1f130900 - #xf5f6fd1d - #xe4f501f0 - #x51b09f5 - #x7f6f4f1 - #xc0cf702 - #x13fc0e0c - #xf10a101d - #x1f100cf8 - #xfaf6011f - #xe5fffeea - #x1513fef0 - #x1efedf8 - #xb04fd12 - #x9011408 - #xf80e111e - #x1e110bef - #xfcf1071f - #xea03f7ee - #x1b04fbf0 - #xf8eaeb06 - #x6010d19 - #x10c0f00 - #x4111217 - #x1d1204ec - #xf6f0111f - #xee02f4f5 - #x14fbffef - #xefebee10 - #x40c1d0d - #x41603fa - #xf0e130c - #x1c0dfbf6 - #xf0f8191b - #xf301f5f5 - #x9fb00ed - #xf0eef311 - #x7191eff - #xe13f8fa - #x11080f07 - #x1503f906 - #xf3061911 - #xf900f4ef - #x200fcea - #xf5eff60d - #xd1f17f7 - #x1605f400 - #x9020b0b - #xafe0313 - #xf0c06 - #xfcfdefee - #x301f7ef - #xf8edf909 - #x131f0ffa - #x12f8fa08 - #x30b11 - #x4020d11 - #xc0b0203 - #xfaf7eff8 - #x4fdf7f5 - #xf7edfc09 - #x131b0b00 - #x7f6030a - #x80b11 - #x3070d07 - #xd03fe02 - #xf3f5f806 - #x3fafdf8 - #xf6f2fe0a - #xf160c02 - #xff0907 - #x90b090b - #x3060605 - #x701fdff - #xf0fb030c - #xfffbfef1 - #xf8f8000b - #xa140dfd - #x3080704 - #xd070505 - #x1030c - #x604f7fb - #xf8020a0a - #xfdfdf8ec - #xfffd040b - #x81509fa - #xb080302 - #xa030205 - #xffff0611 - #xd05eff9 - #x1070b06 - #xfafaf1f3 - #x7000807 - #x51301fc - #x10020201 - #x501ff0b - #xfe000c0f - #x13ffedfa - #x3040a0a - #xf5f4f402 - #xa040d01 - #x50cfb03 - #xdfd0500 - #x400ff13 - #xfd020e0a - #x12f7f0f7 - #xfa030f15 - #xf2f3020b - #xd0b0af7 - #x603f90b - #x5fe09ff - #x4fe0417 - #xf9090e03 - #x9f3f3f4 - #xef0a181c - #xf4fb1208 - #x1211feef - #x2fafe11 - #xfd0308fe - #x2fe0911 - #xf9120afd - #xf8efee03 - #xff181d17 - #xfc0f0ced - #x1604ecf5 - #xfaf90a12 - #x100200 - #xff0514ff - #x110dfe03 - #xf4f2f30d - #xd1b1607 - #x511fbe9 - #x13f5ec00 - #xf5000d12 - #x80f0500 - #x4090bfc - #x1708fc07 - #xf7f6fa11 - #x141209fe - #x507f1f5 - #x6ecfb0a - #xf6080b10 - #xd0a08ff - #x5090401 - #x1603000a - #xfcf80015 - #xa0503fe - #xfff4ff - #xfcf10c0d - #xfe0c040a - #xc080cfd - #x4090107 - #x15010206 - #xfdf90a18 - #xf70106ff - #xfffdfafb - #xf8fe1407 - #x707fc04 - #x80c0ffd - #x70a010c - #x13ff00ff - #xfbff1815 - #xf10b06fb - #x4fcf4eb - #xfc070f06 - #xc00f800 - #x7140eff - #xc08030e - #x9f6fbfe - #x91d06 - #xfc13fef7 - #x7efe7e1 - #xa0c11 - #xaf9fafe - #xc1b0a02 - #xe020910 - #xf8f3fc02 - #xa1114f4 - #xc0df2fd - #xfde1e0e6 - #x10b101c - #x5fa00f9 - #x131d0606 - #x6001111 - #xeaf6ff06 - #xf0a00f0 - #xffff20b - #xece0e3f1 - #x30f1c16 - #x400f1 - #x1b140408 - #xff041914 - #xf0fd0005 - #x9fcf7fa - #x7fbff12 - #xe1e3edf8 - #x8131f06 - #x10af9f1 - #x1f0b0406 - #xfe0c1718 - #xfdfe0003 - #xfbf4fc02 - #x40b0a - #xe0eef4f7 - #xe1417f5 - #x908f1f9 - #x19050604 - #x210121d - #x1fc0302 - #xf4f60300 - #x50d04fb - #xe9f4f4f5 - #xf0f07f1 - #xe02f303 - #x12030706 - #x40b131f - #xfdff0903 - #xf6fb02fd - #xe0bf6f2 - #xf2f4f5fb - #xa03fef7 - #xd00fc08 - #xd070709 - #x106161c - #xfc090e03 - #xfbfcfb00 - #x10fbeaf4 - #xf0f3fe05 - #x1fbfeff - #x9060403 - #xd0a080b - #xfb031817 - #x6120d02 - #xfbf6f70e - #x2eceefc - #xed000909 - #xfefa04fb - #x90e01fb - #x1208080a - #xf6071614 - #x16140bfe - #xf7f1fd1a - #xf0ebf8fb - #xf30d0e03 - #xfefb03f2 - #x1010fafa - #x13030a09 - #xf50b1218 - #x1e110af9 - #xf5f1071f - #xe5f6fdf3 - #x41709f6 - #xfbfaef - #x1608f404 - #xe010e0a - #xf70c111e - #x1b0e0bf1 - #xf6f2101c - #xe900f7f0 - #x161300ec - #xfef5effa - #x14fefb0e - #x3060f09 - #xfd0d161c - #x161108ea - #xf6f2161b - #xf201eff4 - #x1906fae9 - #xf6eeec0a - #xcfd0b0f - #xff110b06 - #x40f1c14 - #x151400ea - #xf1f31a1c - #xf9fdedfb - #x11fef9e9 - #xf0eaf316 - #x4091b07 - #x4180301 - #xb0f1b08 - #x180ff5f5 - #xebfb1f1b - #xfefaf2f9 - #x401f9e9 - #xefeafe15 - #x6191bfb - #x1011fbff - #xc0d1204 - #x1502f405 - #xee071e13 - #xfbf3f2 - #xff04f5ea - #xf1ec030e - #xf1f12f6 - #x1802f600 - #x909090b - #xbfcff10 - #xfc0f1408 - #x1f9efee - #x204f1ef - #xf3ed0407 - #x191f08f9 - #x11f5fa06 - #x1070915 - #x1000f0e - #x90c0703 - #xfef3ebf7 - #x3fff2f5 - #xf1ee0307 - #x1d1b05ff - #x4f5020b - #x90d15 - #x1091102 - #xb020205 - #xf8f0f104 - #x1fcf7f6 - #xf0f10408 - #x1a140800 - #xfdff070c - #x50b0f0c - #x60b08ff - #x5fe0105 - #xf4f4fe0d - #xfefffbf2 - #xf3f60609 - #x13140afd - #x80608 - #xa0a0b04 - #x6030207 - #x300fe00 - #xf7fe0809 - #xfd02f6ec - #xf9f90907 - #xf1505fa - #x8090304 - #x9060403 - #xfd070f - #x901f7fc - #xff060905 - #xfd00eff0 - #xfefd0d04 - #x111400fe - #xd040101 - #x602010a - #xfcfd0e10 - #x11fbf2f9 - #x307060a - #xfaf6f0fd - #x10f00 - #x120bfb06 - #x9000200 - #x4000312 - #xf9051209 - #xff2f1f8 - #xfe050815 - #xf5f1ff06 - #x5090afa - #x1002fd0b - #x1020200 - #x2fd0b14 - #xfb0b0e06 - #x6edf1f9 - #xf809111e - #xf2fa0e02 - #xc0e00f3 - #x9fa000e - #xfc090200 - #xfd140d - #x100804 - #xfceeeeff - #xfa131c1d - #xf80911f3 - #x150af0f3 - #xfef80811 - #xfd0f0200 - #xfd011702 - #xa110002 - #xf1edf512 - #x121d1e07 - #x516f4ee - #x10f5f2f8 - #xf4020e17 - #xc0902fe - #x1109fc - #x16030001 - #xf2f1ff14 - #x1a1810fb - #xb0ae9fa - #x2ebfc02 - #xf7070e19 - #xf0904fa - #x70e0100 - #x12ff0205 - #xf8f50612 - #x130c04fb - #x6fcef07 - #xf5f10b06 - #x90b13 - #xc0904f7 - #x7080008 - #xd000605 - #xf9f70e12 - #x20302ff - #xf8fa06 - #xf2001103 - #xa060509 - #x80e03f9 - #x806030c - #xb000301 - #xf6fd180f - #xf90603ff - #xfcfcf7 - #xf90b0d01 - #xeff0000 - #x71503ff - #xc060709 - #x5fdfe00 - #xf90a1e04 - #x10cfefb - #x2f9ede8 - #x20d0909 - #x8f8fffe - #xd190306 - #xb020b07 - #xf9f8fb05 - #x21516f5 - #x1006f6fd - #xfdece1ea - #x60a0f12 - #xf9fffc - #x15160409 - #x5020f09 - #xeef7fe0b - #xd1301ed - #x15f9f407 - #xeae0e0f7 - #x40c1e10 - #xfc01fef7 - #x1c110909 - #x8140f - #xeefb0009 - #xa04f6f4 - #x9f3ff10 - #xe0e2e800 - #x7131fff - #x205f5f8 - #x1d090a06 - #x1101319 - #xf8fd0002 - #xf8fafd - #xfffc0b0d - #xe0ebf1ff - #xc1a1bef - #xc01effe - #x17060803 - #x512121e - #xfdfd01ff - #xf4f703fd - #x2090901 - #xe7f3f3f9 - #x11190ae8 - #x11faf106 - #xe060506 - #xa0f151f - #xf9fe0400 - #xf4fe03f9 - #xe08fcf6 - #xf1f4f1fc - #xe0cfef0 - #xcf8fb0c - #xa08060b - #x50a1b1a - #xf8050802 - #xf900fdfc - #x12fdf1f5 - #xf1f4f606 - #x600fff7 - #x7fe0209 - #xb09080d - #xc1b13 - #xd0a01 - #xfbfaf908 - #x6edeffb - #xeefa020e - #xfdfc05f6 - #x8080202 - #xf080a0b - #xfd0d1712 - #xe1209fc - #xf7f20115 - #xf3ebf7fc - #xf4080b07 - #xfa0005ee - #x120afbff - #xe060a09 - #xfe0f1116 - #x161007f5 - #xf1f10f18 - #xe9f4faf8 - #x3120af9 - #xfc02fbed - #x1802f702 - #xa060a0b - #xd141c - #x141006ee - #xeff51915 - #xedfdf5f5 - #x141100eb - #xfdfceefa - #x16f8fc07 - #x30c090f - #x10c1b18 - #xf1301eb - #xeefa1b13 - #xfafceef8 - #x1709f7e7 - #xf9f2ee0b - #xaf90b09 - #x12090f - #x40f1f0d - #x1115f8ed - #xecfe1c16 - #xf5eefc - #xf02f2e9 - #xf2ebf917 - #x61602 - #x813060b - #x8121d03 - #x160eeff6 - #xe9041e1a - #x1f1f4f9 - #x403f0ed - #xedea0716 - #x1817f9 - #x140f0103 - #xc141203 - #x1700ee03 - #xed0d1f13 - #xf4f7ef - #x5edf0 - #xecef0f0a - #x101f0df6 - #x1800fd01 - #xa0f060d - #xcf8fb0b - #xf9141908 - #xf5f2ea - #x403ebf5 - #xecf30e03 - #x1e1c03f9 - #x10f7fb06 - #x5090517 - #xfd0a0a - #x6120d00 - #xfff2ebf2 - #x6fceefa - #xecf60904 - #x1f1401fc - #x1f6000d - #x2080e17 - #xfe0a0f01 - #x8070503 - #xf9ecef01 - #x3f8f4fb - #xecf70606 - #x1f1005fc - #xfaff0512 - #x50b130c - #x60f07fb - #x3000508 - #xf4edfb0b - #xfffdf7f7 - #xeefa0805 - #x1a1108f8 - #xfd070712 - #x90d0f01 - #x9070000 - #x504 - #xf4f80709 - #xff02f4f0 - #xf2fc0a03 - #x151405f7 - #x709050c - #xa0b0600 - #x2fe040b - #x40000fc - #xfc020803 - #x2ffedf1 - #xf6000d00 - #x171100fd - #xb040208 - #x8050107 - #xf8ff0e0d - #xafcfaf6 - #x2060307 - #xf5edfa - #xfa050bff - #x190afe02 - #x8020007 - #x4000610 - #xf5061209 - #x9f3f4f6 - #x3030416 - #xf9effa02 - #xfe0a08fd - #x16000105 - #x104fe07 - #xff0f0f - #xfa0f0f06 - #xffecf1fb - #xff030f1e - #xf2f807ff - #x80e00f7 - #xcfb0608 - #x7fe09 - #xfd021708 - #x2100a05 - #xf5ebf003 - #xc1a19 - #xf40a08f4 - #x120af6f2 - #xfb0a0c - #x209ff07 - #xfa0917ff - #xc0c0503 - #xf1ecf20e - #xb181f0d - #xff17fced - #x14fbf0f5 - #xf5ff0d13 - #x80b0201 - #xfe0f0efb - #x15070001 - #xedee0512 - #x1a1f16f7 - #x1205e801 - #xeff7fe - #xf907121b - #xf0401f6 - #xa10fb06 - #xc0102fc - #xf1f50d0d - #x191506f5 - #xff4ee10 - #xf1f30206 - #x91515 - #xd08fef4 - #xc08fd0b - #x6000502 - #xf4fa0f0a - #xa0700fc - #x3f0fe11 - #xee010a06 - #x9081104 - #xa0cfbfa - #x904030b - #x4030402 - #xf4001509 - #x302fe - #xfff80202 - #xf90e0802 - #x90209fa - #xb0ffc03 - #x8030907 - #x3020002 - #xf40b1a03 - #x20601fa - #x1fdf5f3 - #x50f0403 - #x4fe02f9 - #x100fff09 - #x9040a04 - #xfdfcfc08 - #x1813f8 - #xd03fcf8 - #xf4e4f2 - #x90a0b0a - #xfcfc00fd - #x180e050c - #x4050a06 - #xf4f8ff0c - #xc1901f0 - #x10f9f8ff - #xf4e6e1ff - #x60b1909 - #xf900fe00 - #x1a0a0b08 - #x90a0f - #xf2fa0209 - #x110df3f2 - #x4f10009 - #xe3e0ea0a - #x5151ffc - #xff02f7fe - #x1a080b02 - #x4100d18 - #xf8fd0302 - #x5fdf5f9 - #xf8f90c0b - #xe0e4f407 - #xd1e18ea - #xbfcf100 - #x14090802 - #xd13111d - #xfbfd0000 - #xf9fafffa - #xfa050e03 - #xe7edf6fe - #x131f06e4 - #xef4f306 - #xd0a0508 - #xe10181c - #xf9ff0001 - #xf50001f7 - #x70a02f7 - #xf1f1f3fd - #x1616f8ea - #x7f2fc0c - #xa09050e - #xb0d1c16 - #xf7020305 - #xfa03faf8 - #xe00f7f3 - #xf3f0f507 - #xc07faf3 - #x1f9040d - #xb080a0f - #x40f1c11 - #xff090604 - #xfdfdf702 - #x6f2f3f7 - #xf1f3ff11 - #x20200f4 - #x2020607 - #xd080c0b - #x3131610 - #x90e06fe - #xf8f5ff0e - #xf4edf8fb - #xf4fe0b0e - #xfc0501ee - #xc060000 - #xd080a08 - #x5121214 - #x111003f6 - #xeff50f12 - #xeaf3fbf9 - #x10a0dfe - #xfe09f7ee - #x1500fdff - #x80a070d - #x60d1516 - #x1010fff3 - #xebfd1810 - #xeff9f7f5 - #xf0f02ee - #x103ecfa - #x11f8ff00 - #x50b0815 - #x50c1d14 - #xf11f9f3 - #xeb05180f - #xfbf8f2f3 - #x150af4e9 - #xf6ed0b - #x4f90801 - #x60d0a17 - #x4101f09 - #x1210f1f5 - #xed0a1615 - #xf0f3f4 - #xf04ecef - #xf6ecfd16 - #xfa061100 - #xd0e0d11 - #x7171a02 - #x1a07eafa - #xee0e171b - #xfeedf8f0 - #x800ebf6 - #xeced0d13 - #xfe1711fa - #x14090a07 - #xc190d03 - #x1bfbec02 - #xf2131c16 - #xf8f2fbe8 - #x4ffecfa - #xe8f61409 - #x101f08f6 - #x17020200 - #x1014020e - #xff2f708 - #xfc191909 - #xf8f7f5e4 - #x7faedfc - #xe9fe0f03 - #x1e1701f5 - #xffbfd06 - #xd0a0619 - #xf90508 - #x7170e00 - #xf9f4ecec - #x9f5f0fe - #xeb000704 - #x1f0f00f5 - #xf8fe10 - #x6061117 - #xfc070c03 - #xb0f0401 - #xf8ebedfc - #x4f2f600 - #xee000508 - #x1f0b03f4 - #xf8fd0519 - #x409170a - #x51004fe - #x404040a - #xf0eafa06 - #xf7f9fc - #xef000706 - #x190d05f1 - #xfd030b1b - #x9101100 - #xe0afcff - #xfe03090a - #xedf40504 - #xfdf7f5 - #xf2010902 - #x161103f1 - #x5060b16 - #xd0e0600 - #x9fffd06 - #x507fe - #xf4010700 - #x4fdf0f2 - #xf5040900 - #x181000f6 - #xa04070f - #xb070006 - #xfafe090b - #x501fff3 - #xff050204 - #x4f2eef8 - #xf9090602 - #x1a0900fa - #x702020f - #x601050d - #xf4080f09 - #x4faf5f3 - #x4010310 - #xfdecf600 - #xff0d0301 - #x140103fc - #x4010012 - #x1000f0d - #xfa110e06 - #xfcf1f0fb - #x1ff0f19 - #xf2f40101 - #x80e00fc - #x90007fe - #x2000012 - #xfc051505 - #x5120a04 - #xf1ecf105 - #x61c15 - #xf30502fa - #xf09faf4 - #xfe000804 - #x601030f - #xfc0f1200 - #xd0d0801 - #xecebf70d - #x6161f06 - #x11f8f4 - #x1100f4f1 - #xf7030b10 - #xa010606 - #x1507fe - #x100705fc - #xecec0012 - #x141e1bfa - #xf0debfc - #x6f1f4f9 - #xf6060f1a - #xe0403fa - #x914fe02 - #xf0302fb - #xecf71109 - #x1d1d07f0 - #x12ecf412 - #xf4f5f90c - #xc1a0f - #xa06fcf4 - #x1104fd0d - #x402ff01 - #xf1fe1005 - #x150ffef5 - #x3e70319 - #xf0ff020d - #x40d18ff - #xb07f6f9 - #xa00040d - #x1040205 - #xf3031006 - #x50400fa - #xfaf40b0c - #xfb0b0406 - #x60d0ef2 - #xd05f703 - #x6020909 - #x3040005 - #xf50c1103 - #x402f7 - #xfdff01fd - #x70d0202 - #x10704f3 - #x1104ff0a - #x6060706 - #x100fe07 - #xff160efd - #x605fff1 - #x1faeff9 - #xe090405 - #xfb01fefe - #x1502090b - #x506030a - #xfbfa000b - #xf1a00f5 - #x8fef9f6 - #xfce8e803 - #x8091108 - #xf900fe03 - #x16060d05 - #x3080311 - #xf6f90509 - #x1710f3f5 - #xf6fc02 - #xede0f10d - #x51419ff - #xfefffd02 - #x140a0d00 - #x50b0819 - #xf8fe0602 - #xffff1f8 - #xf2f9070b - #xe2e0fe0b - #xf1f11ed - #x7faf800 - #x100d0600 - #xc0e0e1c - #xfbff01ff - #xfffaf9fa - #xf2050e04 - #xe4e800ff - #x1a1fffe4 - #x7f2f704 - #xd0c0308 - #x100e1918 - #xfafdfe05 - #xf800fcf7 - #xb07fa - #xedeffafb - #x1d17f2e8 - #xf1fd0a - #xc09060f - #xd0f1d13 - #xf8ff000a - #xfd04f7f8 - #xa05faf2 - #xf2eef703 - #x1809f1f1 - #xf9f7050f - #xc070d10 - #x9131a0f - #xfc030509 - #x1fff500 - #x4f9f5f5 - #xf0ed0010 - #x903faf4 - #xfc00080c - #xb08100a - #x815150f - #x6090402 - #xfdf7fb09 - #xf6f1f6fa - #xf2f60c0f - #x208fcf1 - #x5040602 - #xb0b0c07 - #xa131211 - #xe0c00fc - #xf2f7070f - #xebf3fbfa - #xfb041100 - #x50bf4ef - #xe0100fc - #xa0c080c - #xa0e1413 - #x110dfbfa - #xed011210 - #xeef8faf3 - #x90d06f1 - #xa04eafa - #xbfc00fc - #x90a0917 - #x70d1d10 - #x120af5fd - #xf00c1012 - #xf8f7f6ed - #x110cf7ed - #x6f6ee08 - #xfffc03ff - #xa08101a - #x4141d09 - #x1606f0fd - #xf6110d18 - #xfcf2f5ea - #xf01ecf4 - #xfbedfe13 - #xf6060900 - #xd081712 - #x61a1605 - #x1dffecfe - #xfa11111e - #xf6f0f8e8 - #xaf9edfc - #xeef10f12 - #xfd1309fc - #x11091304 - #x101d0807 - #x1cf4ed00 - #xfd131819 - #xeff5f9e4 - #x7f5f1ff - #xe8fc140b - #xf1905f5 - #x120709ff - #x16160011 - #xfedf505 - #x3191b0b - #xf0fbf2e1 - #x8f1f5fd - #xec070f06 - #x1f1500ef - #xc01ff06 - #x12090319 - #xfff20009 - #xc1a10ff - #xf6f7e9ea - #x7eef7fd - #xf2090409 - #x1f0dfeed - #xfdff12 - #x9041314 - #xfa010707 - #x10130300 - #xf6eee8f8 - #x2eefaff - #xf606020c - #x1c0900ec - #xf9fb051c - #x4091b09 - #x30b0402 - #xb09000a - #xefe9f402 - #xfdf3fefe - #xf7030609 - #x150c00eb - #xfbff111f - #x61113fe - #x1009fb00 - #x203080f - #xe8f20101 - #xfef9fcf7 - #xf6030804 - #x140ffeed - #x204141b - #xe1205fe - #xefff905 - #x70c05 - #xec0005fc - #x2f8f6f1 - #xf8060603 - #x180efcf0 - #x8061016 - #xf090005 - #xfb010b - #x40903f6 - #xf90500fd - #x3f2f2f3 - #xfd090305 - #x1909fcf2 - #x7030915 - #x800030c - #xf6030b0c - #x501f4f4 - #x2010108 - #xfcebf6fc - #x20b0207 - #x120500f4 - #x4000618 - #x1000e0c - #xfd0e0c09 - #xf7ecfd - #xfd0c11 - #xf2f1fe01 - #x80a0201 - #x70402f7 - #x3fd0919 - #xfe081107 - #x9120905 - #xf4eeee07 - #xfb051d0d - #xf10001ff - #x1008fff6 - #xff060200 - #x4fb0e13 - #xff100d03 - #x100e07ff - #xececf80d - #xff151f00 - #xff0afaf9 - #xf01f7f0 - #xfb07050c - #x6fd0e08 - #x7150303 - #x100b05fa - #xe9ee030e - #xb1f18f4 - #xf03effc - #x6f8f1f8 - #xfc070c16 - #x80109fc - #x1012fc07 - #xb0801f9 - #xeaf40e0b - #x191f0def - #x15f3f00c - #xf9f3f507 - #xfe091616 - #xa05fef5 - #x1208fa0c - #x605fefd - #xf0030e05 - #x1f13f9ef - #xfee60518 - #xf4f90015 - #x3161afc - #x902f5fa - #xafd070c - #x400fe0d - #xf5060b04 - #x1206faf4 - #xf1f31115 - #xfc02070b - #x5170eef - #xbfcf701 - #x3000a0c - #x403010a - #xf90a0b05 - #x404fff2 - #xf5020c04 - #x8070500 - #x41100f2 - #xcfa0006 - #x406070b - #x5010008 - #x120902 - #x307feef - #xff01fcfc - #xd050301 - #x207f9ff - #xdfd0906 - #x607020d - #xfc0109 - #xf1602fb - #x604f6f2 - #xffeff101 - #x9050806 - #xfe00fc08 - #xd041002 - #x5050113 - #xfafb0608 - #x180df8f7 - #xfcf500 - #xf2e1f90a - #x70f1004 - #xffff0006 - #xd0b0bfd - #x6050818 - #xf8fe0803 - #x1500f3f9 - #xf5f9fe0d - #xe5e20408 - #xf1c0df7 - #x1fdff00 - #xd0f04fe - #x9071118 - #xfa010401 - #x5f8f7fb - #xf101080d - #xe0ec09fc - #x1b1efde9 - #x3f7fb00 - #xe0f0307 - #xc0c1815 - #xfbfeff06 - #xfcfcfaf8 - #xfd0c0800 - #xe7f400f5 - #x1f14eee7 - #xfaf4fd0d - #xe09090f - #xb0f1b11 - #xf9fb000e - #xff00f5f8 - #x809fdf5 - #xedf2fafe - #x1e07edee - #xf3f80314 - #xd060f0d - #xa14170f - #xfafe050d - #x4fef2fd - #x6fef4f6 - #xedee0009 - #x11fff5f4 - #xf5ff0a14 - #xa091305 - #xc17130e - #x1050707 - #xf6f906 - #xfaf5f4fd - #xecf40e0d - #x803f8f2 - #x50909 - #xa0e0e02 - #xe14110f - #xa070102 - #xf8f7020d - #xeff5f9fc - #xf2021401 - #x907f3f1 - #x60503ff - #xb0e0908 - #xd10140e - #x1006fc03 - #xf1ff0b11 - #xeff9faf4 - #xe0af2 - #xf01ecf6 - #x700fefc - #xc090b14 - #x70e180d - #x1203f803 - #xf60b0c14 - #xf6faf6ea - #xc0efaee - #xcf4f003 - #xfefffe03 - #xb051516 - #x416190b - #x16fdf501 - #xff0f0b1a - #xf8f6f2e6 - #xf03f0f4 - #xffecfe0e - #xf8040206 - #xa071c0e - #x91e1008 - #x19f7f3fe - #x40e101d - #xf1f4f1e7 - #xaf5f1fc - #xeff20e12 - #xff0c0501 - #xc0f1a00 - #x141d050a - #x15eff2fe - #x50e1b17 - #xecf8f0e8 - #x5eff8fd - #xeb00120e - #xf1103f6 - #xc100bfc - #x1a140110 - #x8eaf604 - #x8141e09 - #xeefcebe8 - #x2eefdf8 - #xf10c0d0b - #x1d0ffeec - #xa0aff04 - #x17080715 - #xfaeeff0c - #xf1a15fd - #xf6f8e3ee - #xeefcf6 - #xfb0d040d - #x1f0bfae8 - #x301ff16 - #xa031312 - #xf4fb060d - #x151504fd - #xf9eee3fb - #xfbf0fefa - #x7050d - #x1708f9ea - #xfdfc0b1f - #x1091a07 - #xff050507 - #x120aff08 - #xf1e9ed03 - #xf7f400fc - #xff030a0a - #x1109f8ec - #xfafd151f - #x41313ff - #xc05ff01 - #x8020611 - #xe8effc04 - #xf7fa00f6 - #xfd040a04 - #x120bf6ee - #xff041b1d - #xd1506fc - #x10fdfb03 - #x2060e0a - #xeafd00fe - #xfdfbfbee - #xfd060603 - #x160af5f0 - #x40b1818 - #x110b0002 - #x2f7ff0b - #x50c08fb - #xf604fdfb - #xf5f4ed - #x70306 - #x1807f6f1 - #x6091119 - #xa010309 - #xf8fd070f - #x908f6f6 - #x101fc01 - #xfaeef4f6 - #x407030a - #x1305f8f1 - #x4020f1c - #xff0c0b - #xfd080b0d - #x6fbea00 - #xfd070a - #xf0f2fbff - #x9060703 - #x905f9f8 - #x1fd121a - #xfd081008 - #xa0d0a05 - #xfbeeed0b - #xf8041609 - #xeffb0000 - #xc0505f8 - #x408fa00 - #xfd1512 - #x2110b05 - #x120c07ff - #xefe9f90f - #xf8161dfe - #xfb03fefa - #xd03fcf0 - #x306fd0b - #xff011609 - #xc130306 - #x110a03fb - #xe9ed040e - #x71f14f1 - #xafff6f9 - #x7fcf1f9 - #x3050813 - #x60dff - #x140e0008 - #xd0afffd - #xe9f60c0b - #x181f07eb - #xff0f403 - #xfcf5f009 - #x3081310 - #x30901f9 - #x1605000a - #x906fb05 - #xed000f07 - #x1f19fbed - #x4e60015 - #xf5f6fb14 - #x2101b03 - #x706f6f7 - #xdfe040c - #x602fb0a - #xf8090806 - #x1d04f4ef - #xeaf70f1a - #xf8fc1009 - #x91c0af4 - #x8f9f6fe - #x1010c0b - #x4fd030f - #xfd080706 - #xd01f9f1 - #xed07120f - #x2030dfb - #xd17fbf5 - #x5f5fe02 - #x1060a0d - #x5000408 - #x10c0805 - #x606f9ef - #xfc090401 - #xa0305f9 - #xc08f401 - #x2fb0703 - #x606050e - #x3fe0408 - #xb0f0500 - #x905f3f3 - #xfcfa00 - #x8020401 - #x7fffa0b - #x3040a00 - #x7030611 - #xfdfc0608 - #x170cfdf9 - #x7fdef01 - #xf6eafb05 - #x4070a06 - #x2fd020a - #x60f08fd - #x5010b12 - #xf8000905 - #x1400f8f9 - #xfdf6f710 - #xe5ea0605 - #xe140cfc - #x1ff0202 - #xc1101fd - #x5041312 - #xfa030503 - #x8f7f8fb - #xf6fb0314 - #xe0f60afb - #x1c1a02ed - #xfdfe04 - #xf0c0002 - #x70a1711 - #xfc000106 - #xfdf8fbfa - #xfb06090a - #xe40001f1 - #x1f11f3e4 - #xfaf8fc0f - #x11070809 - #xa111810 - #xfafb010d - #xfffdf7f7 - #x80900fd - #xebfbf8f7 - #x1e02ede9 - #xf2f7021c - #xe071207 - #xb151310 - #xf7fd080d - #x3fbf4f9 - #xb00f5fb - #xedf3fc04 - #x14faf2ef - #xf3fe0a1e - #x90c1300 - #xd17100f - #xfb020b09 - #x1f4f700 - #xf7f301 - #xeaf60909 - #x9fdf8f0 - #xfb040e14 - #x9120dfb - #x1115100d - #x3070506 - #xf8f3000a - #xf5f4f801 - #xec041100 - #xb02f5ee - #x3070707 - #xd110701 - #xf11110d - #xb040008 - #xf4fc080f - #xf2f7fbf8 - #xf8120af4 - #xffff1f0 - #x504ff04 - #xd0a0a0b - #xb12140d - #xefffe08 - #xf8060b12 - #xf6fbf6ec - #x714fbed - #xcf3f1fb - #xfb0a - #xa051412 - #x817140c - #xefafe04 - #x20a0e15 - #xf8f9efe9 - #xe04f2f4 - #xffedfe07 - #xfcff0010 - #x60b1e09 - #xd1d0e0b - #xdf6fcfd - #x8081616 - #xf5f6eaee - #xaf6f4fa - #xf1f30a0f - #x104050a - #x71518fe - #x171b070b - #x9f1f8fc - #x70a1e0f - #xf0f6e8f3 - #x1effcf8 - #xed02110f - #xd0a05f9 - #xb1b0afb - #x1f13040c - #xfeedf705 - #x7111f02 - #xf3f7e5f5 - #xfcf2fff2 - #xf60d0d0d - #x180bffec - #xd13fe05 - #x18070b0f - #xf2effd10 - #xd191af7 - #xfbf3e2f8 - #xf8f6fdef - #x10d090b - #x1a08f7e8 - #x904ff16 - #xb04130e - #xedf70413 - #x151808f6 - #xfeeae200 - #xf5f7faf4 - #x707090a - #x1605f2ee - #x1fb0c1f - #x10b1908 - #xf600090d - #x150c0002 - #xf5e3ea08 - #xf2fafdfa - #x3030f06 - #x1004f1f4 - #xfcff191f - #x5141000 - #x5040402 - #xc02060d - #xebe9f70a - #xf4fe00f6 - #x41000 - #x1104f0f6 - #xfb071f1b - #xc1603fc - #xbfefe00 - #x202110b - #xeaf7ff04 - #xfa00fdec - #x70aff - #x1503f0f5 - #x101d17 - #x130efffe - #x2f7fe07 - #x40c0efd - #xf6fffafe - #xfcfdf4e9 - #x2070502 - #x1600f1f4 - #x6111619 - #xc020204 - #xf6f90610 - #xb0bfef6 - #x1fdf700 - #xf8f6f0f0 - #x5040706 - #x1200f2f6 - #x60a151d - #x1010a07 - #xf7020d0e - #xcfdeeff - #x1f9fe08 - #xf0f3f5fc - #x6030c02 - #xd00f2fb - #x102181c - #xfe080e07 - #x5090d05 - #xedf00b - #xf8000d0a - #xeefaffff - #x8050bf7 - #xa00f303 - #xfc041b12 - #x3100b05 - #xe0b08fd - #xf3e6fd10 - #xf7131502 - #xf70000f9 - #x80600f1 - #xa00f90b - #xfb091608 - #xd110604 - #xf0a02fc - #xe8eb080f - #x61f0ff5 - #x4fffaf4 - #x700f2f7 - #xaff0411 - #xfb100d03 - #x150c0402 - #xd07fd02 - #xe8f70c0d - #x1a1f01ec - #x7f4f5fc - #xf6f107 - #x603100f - #xf02ff - #x12040602 - #xc03fb0b - #xed000c0b - #x1f15f5ea - #xfdecfc0c - #xf9f2fd13 - #x4101604 - #x608f9fd - #xb000904 - #xafdfd13 - #xf6080907 - #x1f09f2ed - #xeef10b19 - #xf6f70c10 - #x51a11f7 - #x9fef6fd - #x2ff0c09 - #x6fd0112 - #x70704 - #x13fcf4f0 - #xec07141d - #xfa0515f4 - #x1715faf8 - #x1f5fa01 - #x80b0b - #xa07 - #x1070805 - #x801f6f2 - #xfb0f0d0c - #x20807f0 - #x1706f300 - #xfcf90004 - #x509090b - #x2000605 - #x70a0801 - #xb02f1f6 - #x404ff03 - #x40400fb - #xffbfa0b - #xfd040405 - #x7040909 - #xfefe0707 - #xf0a03fb - #xcfaed00 - #xfdf7fc05 - #x3030503 - #x5fa040c - #x30d0302 - #x3000e0a - #xf9000907 - #x1103fcf8 - #x5f1f410 - #xebf20307 - #x60b0dff - #x705 - #xb0ffeff - #x3130a - #xf9050804 - #x7fbfafa - #xfbf30317 - #xe2fe0700 - #x151308ee - #x10005 - #x110bfe00 - #x20a150d - #xfd040304 - #xfef8fbfb - #xfaff0c0f - #xe80700f6 - #x1f10fae3 - #xfefdfd13 - #x11040403 - #x6101310 - #xfcff0207 - #xfcfbfaf7 - #x4060702 - #xf104f5f5 - #x1c01eee2 - #xf6f7021e - #xd050d02 - #xd151112 - #xf7fd090b - #xfaf5f5 - #xb01fb00 - #xf2faf700 - #x10f8efea - #xf4fa0e1f - #xa100efb - #x11160f10 - #xf6040d09 - #xf4f6fb - #x5f7f503 - #xedf80208 - #x7f9f5ec - #xfa02141c - #xa1509f7 - #x13130f0b - #xfe090a08 - #xf7f2fd03 - #xfaf1fa05 - #xec050c04 - #x6fef6e9 - #x1090f10 - #x101402fb - #x12110f0a - #x606040a - #xf2f8060a - #xf5f5fefd - #xf71307f8 - #xcfef2e9 - #x506040b - #x100b0604 - #xd110f0c - #x800030b - #xf6010c0c - #xf6faf9f1 - #x614fcf1 - #x9f5f1f2 - #x400ff12 - #xc080f09 - #xc160f0e - #x6fd0304 - #x6100b - #xf9f9eeee - #x1107f3f3 - #xfeeff800 - #xfb0217 - #x60e1707 - #x121b0d0c - #x2fb01fd - #x606180a - #xf8f3e7f6 - #xbf8f5f8 - #xf1f5040c - #x1fe0a0c - #x71c12ff - #x1b180908 - #xfff9fafe - #x40a1f05 - #xf6efe6fe - #xf3fcf6 - #xef010d0f - #x7030afb - #xd1f06fe - #x1f0f0807 - #xf7f4f707 - #x2111ffb - #xf8ede700 - #xf7f9fdf0 - #xf90b100b - #x100902ec - #x1416fc04 - #x19080b09 - #xeef1fb15 - #xa1b16f1 - #xfdeae6ff - #xf4fef8ef - #x50d0e06 - #x1307f6ec - #x12060014 - #xc06100b - #xeaf60518 - #x141c07f0 - #xfee5e702 - #xf4fff4f5 - #x9080f02 - #x1101eef4 - #x8fc0d1d - #x20b120a - #xf0ff0b0f - #x1710fdfa - #xf6e0ed0b - #xf3fef7fb - #x40512ff - #xffeedfd - #xfefe1b1d - #x6150f04 - #xfe050903 - #xd030306 - #xeae3f80f - #xf500fdf9 - #x711fa - #xffbeffe - #xfa0d1f19 - #x111704fd - #x5020100 - #x3021007 - #xe8ef000a - #xf902fcef - #xa0af9 - #x12faf1fb - #xff181e17 - #x150efefb - #x1fbfd05 - #xb12fe - #xf3fafe01 - #xfe01f3e8 - #x30a06fd - #x12faf1f9 - #x8181919 - #xf04ffff - #xf6f8040e - #xa1003f4 - #xfff9f800 - #xfbfbecef - #x5060801 - #xffaf1fb - #xa12191d - #x2010504 - #xf2000e0e - #xe03f5f8 - #xf5f908 - #xf5f5f0fb - #x4050eff - #xcfaf1ff - #x60c1c1b - #xff090a07 - #xfc0a1003 - #x4eff404 - #xf9f8050e - #xf1f6fb00 - #x3090ef6 - #xcf9f304 - #xff0c1c15 - #x5100a04 - #x70d09fa - #xf3e7010c - #xf7090e09 - #xf6fe00f9 - #x60c02f0 - #xcf7f909 - #xfc14170d - #xf100800 - #xb0b02fb - #xe6ec0d0d - #x61b0cfd - #xff00fbf1 - #x805f5f5 - #x9f8020c - #xff170e09 - #x120b06fc - #xa07fd03 - #xe4f90f0c - #x1d1c00ee - #x3fbf1f7 - #x4f9f102 - #x4000e0c - #x5130307 - #x100607fb - #xa00fd10 - #xec020c0b - #x1f10f3e9 - #xfbf2f409 - #xfbf0000d - #x20b1306 - #xa0bfe03 - #x80307fe - #x9fb0115 - #xf6060a09 - #x1f03eeeb - #xedf40219 - #xf4f41109 - #x8180efd - #xafffa00 - #x30704 - #x4f90812 - #xff080704 - #x1afcf2ef - #xe901131f - #xf60018fa - #x121800f7 - #x5f6f900 - #x60a0a - #xfd0a0b - #x1060900 - #x5fbf4f5 - #xfc0d181a - #x1103ea - #x1c03f7fb - #xf9f8fc0b - #x50a0a05 - #xfd040a01 - #x3080a00 - #x8fff3f6 - #x90c0a0a - #x60af8f5 - #x13f7fc05 - #xfa00000e - #x7070a03 - #xfe010705 - #x90a07fc - #xdf8efff - #x4feff0a - #x303fe02 - #x4f80608 - #x108020b - #x3040c01 - #xfa020907 - #xc06fff8 - #x6eff50b - #xf6f7010d - #x2060800 - #xfd000b05 - #xb0a0005 - #x60e03 - #xfa060905 - #x700fafb - #xf9ee0313 - #xeaff0708 - #xc0f0af0 - #xff040504 - #x1205fe00 - #xff0a0f0b - #xff070502 - #xfefbfbfd - #xf5fa100f - #xef0801fd - #x1710fde2 - #x10 - #x11020001 - #x5100f10 - #x20302 - #xfafcfbfa - #xfb050e04 - #xfa06f7f8 - #x1906eee1 - #xfdf8041e - #xc040700 - #xc130f12 - #xfb000505 - #xfdfbf6f4 - #x70402ff - #xfdfbf4ff - #xff9e9e9 - #xf6f8121f - #x80e09fb - #x11120f10 - #xf7050b08 - #xfdf6f2f7 - #x4f9fc03 - #xf4f7fe09 - #x4f8eeed - #xf6021b1d - #xc1603f5 - #x14110f0b - #xfd0c0a0a - #xf8f3f7ff - #xfbf2fe05 - #xf0000807 - #x2fcf2e9 - #xfe0b1a13 - #x1314fff8 - #x13100d0a - #x40a060c - #xf2f70005 - #xf3f502fe - #xf80e08ff - #x6fdf0e5 - #x50a0c0e - #x150c00ff - #x10100b0e - #x604060c - #xf4ff0a06 - #xf4fbfdf3 - #x811fdf6 - #x6f8eced - #x6010613 - #xe070806 - #xf120c10 - #x2010708 - #xfc060f03 - #xf8faf3f1 - #x1206f5f5 - #xfef3effd - #x2fb0915 - #x70f0f06 - #x13130d0d - #xfe020301 - #x1081300 - #xfaf2eaf9 - #xef9f5f9 - #xf3f4fc0a - #xfffc120d - #x91c0e01 - #x1a140d07 - #xfc00fb01 - #xe18fe - #xf8e9ea01 - #xf6faf8 - #xf200080e - #x411fb - #x131f0500 - #x1d0e0a03 - #xf8faf50d - #x11818f8 - #xf7e6ef01 - #xf8fbfaf4 - #xfb090f08 - #x60a06ee - #x1a17ff05 - #x17080805 - #xf2f3fa18 - #x91f0eef - #xf8e4f0fe - #xf601f4f3 - #x50d1000 - #xc09f7ef - #x1a03000f - #xb07090e - #xecf4051c - #x151f00ec - #xf7e2ef00 - #xf900f0f9 - #x90b10fc - #xe00edfa - #xdfb0f18 - #x50c0c10 - #xeefd0f12 - #x1b14f7f4 - #xefe0f209 - #xfafbf4ff - #x50a0ff9 - #xdf7ee03 - #x21c1a - #x7120b0a - #xf9060d03 - #x1206fc00 - #xe5e2fc11 - #xfafcfdfd - #x10d0cf6 - #xcf4f303 - #xfb101f17 - #x11140600 - #x20703fe - #x4030904 - #xe2ec040e - #xfc00fdf2 - #x31006f7 - #xbf4f6fe - #x11d1c16 - #x170dfff9 - #x1fffd06 - #xc0ffe - #xebf60304 - #x2f5ea - #x50d01fa - #xaf5f5fb - #xb1d1a18 - #x1303fdfb - #xf9fa000f - #x81406f3 - #xf9f9fcff - #x1fcebee - #x70904ff - #x8f5f4fe - #x10171a1b - #x6000002 - #xf2fe0c10 - #x100bf7f3 - #xfbf3fa05 - #xfcf2edfb - #x3080afe - #x7f4f401 - #xb121e1b - #x1050607 - #xf7080f04 - #x9f8f4fd - #xf6f4010f - #xf6f1f800 - #x30e0af8 - #x8f3f603 - #x4151e16 - #x50c0805 - #x21009fa - #xf5eb0007 - #xf3ff0d0f - #xf6f900fc - #x71200f1 - #x7f3fc04 - #x2191812 - #xe0f08ff - #x90efffa - #xe4f10c0a - #x20f0e00 - #xfe00fbf2 - #xb0af4f3 - #x2f50306 - #x61b1111 - #x120b06f9 - #xa07fb06 - #xe2fe0f0a - #x181704ef - #x200f0f7 - #x9fdf2fe - #xfefd0b09 - #xc150b0e - #xe0801f8 - #x800ff0f - #xec060d09 - #x1f0df6e5 - #xfdf5ed0a - #xfdf2ff06 - #xfd091007 - #x11090609 - #x807fffe - #x6fc0613 - #xf7080b06 - #x1e00eee7 - #xf2f1fd1c - #xf2f61002 - #x6140d00 - #xd000103 - #x4060004 - #xfb0d10 - #xfe070a01 - #x14f7eeee - #xedfa0f1f - #xf10415f5 - #x141503f9 - #x6f9fd02 - #x208030a - #xfc001007 - #x1060900 - #x7f9f3f4 - #xf5091a1f - #xfb100bea - #x1e0af8f9 - #xfcf6fb07 - #x50a090a - #xfc040c01 - #x20907fe - #x1faf3f9 - #x7101910 - #xb0feff3 - #x10fafbfb - #xf7fa0218 - #xa0a09fe - #xfe070503 - #x50c08fc - #x8f9f2fa - #xb05090b - #x902f202 - #xf80403 - #xff000815 - #x60707fd - #xfc040707 - #xb0a00f9 - #x3f0f504 - #xfffb0511 - #x3020105 - #xf9010b02 - #x9030709 - #x1070700 - #xfb080905 - #x903fafb - #xf7ee010c - #xf4fc0a0e - #x60b07f9 - #xfd080701 - #xe010301 - #xb0708 - #xa0600 - #x1fef900 - #xedf90f0b - #xf5040902 - #x1111fde8 - #x2040209 - #xeff0000 - #x50e0a11 - #x40602ff - #xfdfdfaff - #xf4051004 - #x5fef9 - #x1609ebe7 - #xfb0719 - #x9010201 - #xc100d13 - #x10202 - #xfdfdf8f9 - #xff0909fe - #x3fbf7fc - #x11fce3ef - #xf8fb151f - #x70a05ff - #x1010100f - #xfc030507 - #xfef8f1f8 - #x4000000 - #xfcf3fc06 - #x6f4e8f5 - #xf3051f1e - #xc1301f8 - #x110f100a - #xff0a080b - #xf8f3f1ff - #xfbf80101 - #xf4fb0809 - #xf8edef - #xf9121f12 - #x1610fcf6 - #x100e0c0b - #x60a070f - #xf3f4fa05 - #xf1f906fd - #xf9070a01 - #x3fbece9 - #x312160c - #x1809fbfb - #x100e0910 - #x907070f - #xf3fc0304 - #xf0ff01f3 - #x80d02f8 - #x5f9e6ed - #x8080d0f - #x10050102 - #xf0d0b14 - #x405080c - #xfa040800 - #xf7fef7f0 - #x1205f9f5 - #xf3e7fe - #x1001112 - #xa0b0906 - #x120f0f0f - #x50408 - #xb0aff - #xfaf4eff7 - #x10fbf7f8 - #xf8f2f20c - #xfb00170a - #xb170a04 - #x150f1007 - #x3fd0a - #x10f0cff - #xf8e9efff - #x2f6f9fb - #xf5fa0210 - #xf90a16fb - #x151c0601 - #x170e0b02 - #xfcf712 - #x4190bfb - #xf1e5f6fe - #xf9fcfaf9 - #xfc050e08 - #xff1008f1 - #x1e110003 - #x140a0409 - #xfbf2fc1d - #xd1f04f4 - #xede7f9fa - #xfa00f6f7 - #x40c0ffe - #x80cf8f3 - #x1c030309 - #xd080311 - #xf3f1081e - #x181cf9ee - #xebe7f6fc - #xfffcf2fa - #x90e0cfa - #xd00effe - #x10fd0f11 - #x6090718 - #xeffb1313 - #x1e12f1f2 - #xe6e5f606 - #xf5f7ff - #x70f08f9 - #xbf4f205 - #x41915 - #x90e0b10 - #xf7061006 - #x1905f3fc - #xe1e6fd11 - #xfef5fffc - #x51103f9 - #x6f0f904 - #xfc141e15 - #x11100a02 - #x10a0601 - #x9010003 - #xe0ee0612 - #xfdfc00f2 - #x91200f9 - #x1f2fdff - #x41f1b14 - #x150c02f9 - #x502fc07 - #x2090800 - #xe4f80805 - #x100f8e9 - #xd0ffbfb - #xf6fbfd - #x101e1a16 - #x1103fcfb - #xfefafe12 - #x71203f7 - #xf0fc01fd - #x4fceeeb - #xc09fdff - #xf5f7ff - #x15191b18 - #x9fffb02 - #xf6fc0813 - #x120ff7f2 - #xf6f7fb01 - #xf1eef7 - #x7080201 - #xf3f802 - #x11161f17 - #x1000109 - #xf6070e09 - #xefdf1fa - #xf1f3000d - #xf9ecf8fe - #x50d05fd - #xf2fa02 - #xb1a1f15 - #x5070708 - #x10e06fe - #xfcf2f804 - #xeffa0b10 - #xf5f400fa - #xa12fff7 - #xfef2fe00 - #x91e1c13 - #xb0a0800 - #xc0cfcff - #xe8f5040a - #xf8081101 - #xf9fffdf2 - #x110df4f5 - #xfaf60201 - #xe1d1712 - #xf0b04fb - #xe04f706 - #xe6010b0a - #xe1209ec - #xf0f6 - #xffff1fb - #xf6fd0707 - #x1314130f - #xe09fdfc - #xafefe11 - #xf00a0a07 - #x1e0efbe1 - #xf5ed0b - #x2f4fc02 - #xf8060c09 - #x140b1008 - #xb07f702 - #x5fc0712 - #xfb0b0a03 - #x1c00eee2 - #xf8ebfc1e - #xf4f80a01 - #x2100c03 - #xf040b03 - #x804f809 - #xff00100c - #x80aff - #xef6ecec - #xf0f0101f - #xf1070ef7 - #x111206f9 - #x7ff0202 - #x704fe0d - #xfa061106 - #x709fc - #x1f5eff4 - #xf3001b1d - #xfb1303ec - #x1a0afef3 - #xfffbfd0a - #x806050a - #xfb0b0d01 - #x10808fe - #xfaf3f7 - #x10e1e15 - #x913f4ee - #x18fef9f7 - #xf8f80015 - #x90a0902 - #xfe0a0700 - #x50b04ff - #x3f8f2fa - #xb121509 - #x11feec00 - #xfffcfe02 - #xf9f90f17 - #xa0803fb - #x1060408 - #xa0d01fb - #x3f3f3fe - #x5020b0f - #x6f9fc09 - #xf7010604 - #xff110c - #x50601ff - #xff080807 - #xc06fafd - #xf6f0fc07 - #xf9fe100f - #x3030501 - #xfc090501 - #x7010a00 - #x2080207 - #x20b0601 - #x6fff802 - #xecf90809 - #xf7021103 - #xc0dfef3 - #x4090202 - #x90003fe - #x60a0710 - #x80901fe - #xfcfb04 - #xef070e04 - #x607f6 - #x170aecee - #x400040f - #x5000101 - #xc0d0d12 - #x703ff00 - #xfffcfaff - #xfd0d08fe - #x4fffcf5 - #x14fbe2f6 - #xfaff131b - #x4040301 - #xe0e110e - #x106 - #xfaf4fc - #x30802fe - #xf6fbfe - #x8f0e6fe - #xf3091f1a - #xa0a02fc - #xf0f1109 - #x4050c - #xfcf3ef00 - #xfeff0100 - #xf6f60406 - #xf0eef9 - #xf7161f13 - #x140dfdf4 - #xe0f0d0b - #x608080f - #xf5f0f507 - #xf3fe05fc - #xf6030b01 - #xf5ecef - #x31c1b0b - #x1905f9f6 - #xe0d0a14 - #xb070a10 - #xf3f6ff07 - #xf10203f5 - #x30b08f7 - #x4f5e5f0 - #xb13110c - #x1201fcff - #xe0b0c17 - #x8060a0e - #xf8000303 - #xf702f9f0 - #xf07fef2 - #x2efe2fe - #x508130e - #x9050305 - #xe0b1112 - #x407070d - #xff070202 - #xfbf8f1f4 - #xdfdf9f6 - #xfbecee0d - #xfb091809 - #xc0e0805 - #x100e110a - #x504000e - #x40d0203 - #xf7edf2fa - #x3f9fafa - #xf6f10011 - #xf81117fe - #x16130800 - #x120f0a06 - #x7fbfd14 - #x9140302 - #xedeaf9fb - #xfbfbfcfb - #xf9fe0d0a - #xfe1709f5 - #x1e0f04fd - #x110d020b - #x1f1011c - #x121800fa - #xe6eefbf7 - #xfdfef9f7 - #x2090e00 - #xa10f9f6 - #x1a030401 - #xd080017 - #xf6f00d1c - #x1c16f8f1 - #xe4f0f7fb - #xfaf8f7 - #x80f06fa - #xf01f2ff - #xf000a09 - #x905071d - #xeffa1714 - #x1f0ceff0 - #xe2edf408 - #x1f2fcf8 - #xa0f00fe - #xbf4f606 - #x81310 - #x8081015 - #xf3081508 - #x1b00effa - #xe0ebfb15 - #xfdf302f5 - #xc0ffe00 - #xf1fe05 - #xff141912 - #xd0c0f05 - #xc0804 - #xefbf803 - #xe0ef0617 - #xfbfb03ed - #xf0ffcfe - #xfaf50000 - #x71e1a11 - #x120b07fa - #x604000b - #x4030304 - #xe1fa0c0b - #xfe01fbe5 - #x110bf9fd - #xf8f9fefe - #x141f1a10 - #xf05fcfc - #x2faff13 - #xa0d01fb - #xec000500 - #x3fdf0e5 - #x1006fa00 - #xf9f9fa03 - #x191a1c10 - #x7fff906 - #xf9f90814 - #x120df8f5 - #xf4fdfb00 - #x2f3eeef - #xc05ff04 - #xfaf6f905 - #x16191f10 - #x1fdfe0c - #xf6030f0d - #x1401eff9 - #xf2f5fd0c - #xf9edf7f9 - #x9080103 - #xfbf4fe03 - #x101c1e0f - #x1060b - #xc0803 - #x3f4f305 - #xedf80812 - #xf2f300f6 - #xe0efffc - #xf8f5fe00 - #x111f1d0f - #x7070805 - #xd0afc01 - #xf1f4fd0e - #xf1041104 - #xf4fffeef - #x140af8f6 - #xf4f9ff02 - #x151e1b0e - #xc0a0401 - #x1200f709 - #xec00060e - #x2110cec - #xfe02f3f1 - #x12fff3f9 - #xf3fd0109 - #x1818190a - #xd09fb01 - #xcf8fe11 - #xf6090808 - #x1411fbe0 - #x1f5ef05 - #x6f5fa00 - #xf703060f - #x16111703 - #xc05f508 - #x4fa0811 - #xa0702 - #x1705ece2 - #xfbe8fd1b - #xf9f80303 - #x10b0a09 - #xf0d0ffe - #xbfff70e - #xff000e0e - #x50807fe - #xcf8e5ec - #xf0ea131f - #xf40508fc - #xe0f08fa - #x7090500 - #x9feff0e - #xfc090f08 - #x30705fd - #xf3eaf6 - #xeefe1e1b - #xff11fff2 - #x160c00f0 - #x10009 - #x700060b - #xff0e0b05 - #x10802fe - #xfbf5f0f9 - #xfa0f1f11 - #xe11f0ef - #x1202f9f3 - #xfbfb0214 - #x8040902 - #x20d0605 - #x40b0400 - #x1f9f2f9 - #x815190a - #x1404eafb - #x5fdfafe - #xf8f80c1a - #xa0806fe - #x3090307 - #xb0a0000 - #x2f3f1fe - #xa120f0a - #x7f1f907 - #xfafe000e - #xf902170a - #x704fffc - #x405070b - #xd09fb00 - #xfaf0f604 - #xff04120e - #xfff90607 - #xfc070406 - #xff070efe - #x4030002 - #x40a0805 - #xa00f905 - #xeff5010a - #xf9081502 - #x50703fb - #x6090002 - #x20604fc - #x5060609 - #xa0a02ff - #x3fbfd09 - #xf0020907 - #xfd0d0df5 - #x1107f4f4 - #x9040008 - #x2020000 - #x9080d0e - #xb04fe00 - #xfffc0005 - #xfd0c0600 - #x408feef - #x15fae8f9 - #xb16 - #x10203 - #xc0c120b - #x4fffe06 - #xfffafaff - #x60a01ff - #xfdf9f8 - #x9ecec01 - #xf7081a1b - #x60504fd - #xd0e1108 - #x30b - #xfef5f500 - #x4030000 - #xf9f90000 - #xfeeaf400 - #xfa191f13 - #xd0700f4 - #xd0f0c0a - #x204080d - #xf7edf706 - #xf9000300 - #xf4000800 - #xfbf0f4f5 - #x71f1b0b - #x1504f8f2 - #xe0d0913 - #x8060b0e - #xf1f0ff09 - #xf50402f8 - #xfd0a06f6 - #xfff2e9f1 - #x121b130a - #x1200f7fb - #xc0a0e19 - #x8070d0e - #xf3fa0306 - #xfb04faf2 - #x90afff0 - #xebe5fd - #xd11110d - #x900fe04 - #xb0a1415 - #x6070b0d - #xfc010005 - #xfcf1f3 - #xb02f7f3 - #xfae5ee0c - #x10160b - #x9060605 - #xb0e130b - #x704060e - #x4050008 - #xfaf1f1f9 - #x2fcf8f9 - #xf3e9010f - #xfd161402 - #x120c09ff - #xe120909 - #x8fe0411 - #x9070106 - #xefeff6fb - #xfcfcfcfa - #xf3f70f08 - #x31a0afb - #x1a0c04f8 - #x110e0110 - #x2f50816 - #x100d02fe - #xe5f2f9fa - #xfdfdfdf5 - #xfc040e00 - #x1114fcf9 - #x180700fa - #xf07001a - #xf5f31218 - #x1c0cfdf1 - #xe5f5f401 - #xfafcf0 - #x50d05fe - #x1402f500 - #xc040204 - #xa020a1f - #xebfe1a12 - #x1e05f4ed - #xe7f3f20e - #xfff6fdee - #xc0dfd00 - #xcf6f905 - #x2080a0e - #x7031617 - #xee0a180b - #x18fbeff5 - #xe5edf81c - #xf9f700ec - #x100bfc03 - #xfef30006 - #x1131310 - #x80a1605 - #xfc100d07 - #xcf5f501 - #xe2ef051e - #xf6ff00e6 - #x1208fd00 - #xf5f90203 - #xa1b170d - #xc0d0afc - #x608030a - #x3faff05 - #xe4fa0d12 - #xfa06f9e1 - #x1305fdfe - #xf5fe0005 - #x161d1908 - #xd08fdfe - #x5fd0312 - #x50504ff - #xec020904 - #x104efe0 - #x1001fcff - #xf8fdfb08 - #x1c1b1806 - #x800f709 - #xfaf80b15 - #x100afcf6 - #xf600fe04 - #x1f7ebe7 - #xb00ff05 - #xfaf8fc0b - #x191c1a08 - #x1fbfe11 - #xf501110d - #x1401f2f8 - #xf7f9fa0e - #xfaf0f2f2 - #x9030305 - #xf8f7ff08 - #x141e1b08 - #xfefe060f - #xfc0a0e05 - #x9f4f103 - #xf0f50516 - #xf0f5fcf3 - #xc0703ff - #xf6f8ff04 - #x161f1908 - #x1040909 - #x9090101 - #xf8f1fc0e - #xef00100a - #xf100fcec - #x1307fef6 - #xf4fafd07 - #x1b1f1a06 - #x70a0306 - #xffefc06 - #xf1fa060f - #xfa0f0df4 - #xfb03f3ec - #x12fff8f5 - #xf4fcfe10 - #x1c1d1a02 - #xc09fc09 - #x9f5000d - #xf9030a07 - #xc14fbe3 - #x2f9eefa - #x7f5f8fd - #xf8ff0315 - #x181917fd - #xc04f70e - #xf70a10 - #x3070900 - #x1508e8e6 - #xfce9fc11 - #xfbf70003 - #x40b0f - #x11180ff9 - #xbfcfb11 - #xfb00100e - #x70605fe - #xef8e1f2 - #xefeb131e - #xf7010500 - #xa0b0a00 - #xc1405fd - #x6f8030f - #xfd090f0c - #x50502ff - #x1eee5fb - #xe7ff1f19 - #xc00f4 - #x120c01f2 - #x70aff06 - #x1fb0a09 - #x20e0b0a - #x3060003 - #xfbefedfc - #xf1141f0d - #x100bf4ee - #x1005f7f4 - #x512 - #x2000a03 - #x80d0709 - #x5080005 - #xfef4f1fa - #x21e1a04 - #x16ffedf5 - #x7fef401 - #xfbfb1017 - #x50506fe - #xa08040a - #x90b0003 - #x3f5f1fa - #xc181007 - #xdf2f202 - #xfcfefc0c - #xf7ff1811 - #x80500fd - #x606050c - #xd06fe03 - #xfceef405 - #xa0f0f0b - #xf9f30507 - #xff00060f - #xfb1110fe - #x300fffa - #x6070b09 - #xb01fb07 - #xf2effc0b - #xfe0d1405 - #xfc0108ff - #x6060403 - #x11002f9 - #x2010401 - #xa0a0702 - #x4fbff0b - #xf2fa050b - #x150df7 - #xa06fdf6 - #xc040005 - #x307fd00 - #x5060c05 - #xc050000 - #xfffb0409 - #xfd050605 - #x513ffef - #xffcf2f7 - #x6000411 - #x1010006 - #x90b1007 - #x6fffe04 - #xfefc0201 - #x7070100 - #x605f4f5 - #x7edf200 - #xfd05121b - #x1030501 - #xb0e1005 - #xfffe010a - #xfdf8fcfe - #x803ff01 - #xfdfcf9ff - #xf9e9fb01 - #xff141c17 - #x70600f6 - #xd0f0b07 - #xff01070c - #xf7f1fa01 - #x1000001 - #xf7ff0200 - #xf3effdf9 - #xc1f1b0b - #xc05f8f2 - #xe0d090f - #x3060b0c - #xefef0006 - #xfb0302fd - #xfa0904f8 - #xf8f2f3f2 - #x191e1307 - #xe00f2fa - #xc0a0d17 - #x6080d0c - #xeef60406 - #x4fcf4 - #x50cfcf1 - #xfbebeaf9 - #x1715100a - #x8fdf905 - #x90b1615 - #x60a0d0b - #xf6fe0306 - #x5fef3f3 - #xb07f5f3 - #xf6e3f106 - #xb13140c - #x6000107 - #x910150e - #x6080b0b - #xff000108 - #xf4f1f8 - #x5fff4fa - #xede5020c - #x5181307 - #xc080700 - #xd130b0a - #x7020a0b - #x6000506 - #xf3f0f4fd - #xfffcfafc - #xebf40f07 - #xd1a0bfe - #x130c02f8 - #x1210020f - #xfc0d0e - #x90207fd - #xeaf3f701 - #xfdfefdf4 - #xf3030f00 - #x181300fa - #x150afcf9 - #x11050319 - #xf3fc1312 - #xf0504ef - #xebf6f406 - #xfefceb - #x10d05fe - #x1905fafd - #xd07fa03 - #xaff0e1e - #xe8041911 - #x1603f9e9 - #xeff2f314 - #xfefbf8e8 - #xb0afe01 - #xef9fd03 - #x507010e - #x4021a16 - #xec10170c - #x12faf0f1 - #xeeebfb1e - #xf9fcf8e8 - #xf04ff04 - #xfef60107 - #x50d0c11 - #x30b1908 - #xfa140f08 - #x7f2f100 - #xe8ec091f - #xf503f8e5 - #x10020200 - #xf4fd040a - #xd15150a - #x8100dff - #x70d0608 - #xfef4fd05 - #xe6f81218 - #xfa09f3e1 - #xf0102fa - #xf600000b - #x171a1501 - #xc0cfe01 - #x601060d - #xfefd0400 - #xed020f09 - #x105eae0 - #xc0000fb - #xfbfeff10 - #x1c1c14ff - #xa02f80c - #xfcfd0c10 - #x70501f6 - #xf9030204 - #x4fbe5e4 - #x7fe0002 - #xfdf90012 - #x1b1d1100 - #x2fafe13 - #xf302130d - #xe01f6f5 - #xfcfafc0e - #xfdf3eaee - #x4000505 - #xf9f8020e - #x191f1202 - #xfdfb0813 - #xf90c1105 - #x9f6f2ff - #xf6f50316 - #xf2f5f5f2 - #x70408ff - #xf6fa0209 - #x191f1502 - #xfd030b0e - #x50b0700 - #xfbeffb0b - #xeffc1011 - #xf200f9ee - #xc0504f5 - #xf6fcff0a - #x1d1f1500 - #x409040c - #xb010000 - #xf1f5090b - #xf70b0ffd - #xfc03f1e9 - #xe01fcf2 - #xf8fbff13 - #x1f1f14fd - #xc09fd0f - #x3f80306 - #xf5ff0f02 - #x711feed - #x2fbecf2 - #x7faf8fa - #xfafa0519 - #x1d1f12f9 - #xd01fc13 - #xf8f90a0b - #x50cfb - #x1407e8ed - #xfeedf505 - #xfbf7fd03 - #xfeff0e14 - #x171f0af7 - #x8fa0012 - #xf402100d - #x50506fa - #x13f4e0f9 - #xefee0b15 - #xf7ff0401 - #x5070f02 - #x141c01fc - #x2f7070f - #xfa0a0f0d - #x40400ff - #x6e8e601 - #xe5011e16 - #x704f5 - #xc0c04f6 - #x1011ff05 - #xfdfa0b0a - #x20d0d0c - #x203ff05 - #xfbe7ef01 - #xed191f0d - #xd08fbe9 - #xf07f7f8 - #xa03030e - #xfb000b05 - #xa0b0b09 - #x4040009 - #xfaedf3fd - #x11f1603 - #x12fdf1ec - #xafdf207 - #xff0f14 - #x50601 - #xc070808 - #x9060108 - #xfef0f2fd - #xf1e0d03 - #x9f1f2f9 - #x2f7f915 - #xfa05190f - #x40500fd - #x904080a - #xc070004 - #xffeff201 - #xe140d0a - #xfbef0006 - #xfdfd0314 - #xf90d1402 - #x401fffa - #x6050a0c - #xb01ff06 - #xf2ecfb0c - #x9101107 - #xf4ff0704 - #x1030c02 - #x51603fd - #xf9 - #x70b0c03 - #x5fc000b - #xeef3040e - #x5170efb - #x10902f9 - #x90302ff - #x80bfb01 - #x10405ff - #xb0903ff - #xfefc070a - #xf7ff0808 - #xc17fff3 - #xc01f6f7 - #x8ff020b - #x500fe08 - #x60a0b02 - #x801ff02 - #xfcff0803 - #x3040402 - #xd0bf4f6 - #x5f4f4fe - #xd17 - #x1000407 - #x90e0b02 - #xfd0007 - #xfcfe01fd - #x8010001 - #x6fdf400 - #xf6edfd02 - #xd1b16 - #x30603fd - #xc0f0903 - #xfc00060a - #xf8f8fdff - #x3ff0202 - #xfcfcfe04 - #xeff300fd - #xc1a1c09 - #x906f8f7 - #xe0d0808 - #xff040a0b - #xf0f4ff02 - #x103fe - #xfc0401ff - #xf2f8fbf5 - #x1a1e1500 - #xa00f0fd - #xd0a0c10 - #x3080b0b - #xebf70304 - #x20300f5 - #x40cfbf7 - #xf7f1eff6 - #x1d180f04 - #x7f8f309 - #x90b1513 - #x60b0c0b - #xf1fd0405 - #x6fff7f0 - #xc07f2f7 - #xf2e7f201 - #x14141208 - #x3faff0d - #x911170e - #x70b0c08 - #xf9ff0306 - #x2f6f2f4 - #xafef2fe - #xe9e60009 - #xe161406 - #x5030505 - #xd140e0a - #x7080b07 - #xfffe0704 - #xf7f0f4fc - #x2f9f900 - #xe4f40d07 - #x11190ffd - #xd0a00fc - #x1310060d - #x40b0a - #x1000afb - #xeff1f702 - #xfcfdf8 - #xed040c01 - #x1b1406f5 - #x100af8ff - #x13050815 - #xf5030f0f - #x40506ef - #xf0f3f808 - #xfffaed - #xfd0c0500 - #x1c09fff6 - #xf05f509 - #xbff1019 - #xed091412 - #xa06f9e9 - #xf4f0f912 - #xff00f3e8 - #x90a0001 - #x11fefefe - #x900fe14 - #x1001a15 - #xef13150f - #xbfeecf1 - #xf3ea001c - #xfb00f0ea - #xd030101 - #xfffb0206 - #x8050a13 - #xd1b0b - #xfe170f08 - #x4f5ecfe - #xeaec0e1e - #xfa02efea - #xa0006fe - #xf7ff040c - #xd0d1309 - #x6140d03 - #xa120905 - #xfaf2f806 - #xe5f81a15 - #xfd05ede4 - #x80105f7 - #xf9010410 - #x151612fe - #xe10ff06 - #xa070608 - #xf8fa0201 - #xeb041609 - #x602e6e0 - #x60100f9 - #xfeff0412 - #x1a1a0dfb - #xd03fa0e - #x10b0c - #x102f7 - #xf8070b04 - #x8f9e1e4 - #x400fe00 - #xfffa0613 - #x1c1c09fd - #x5fb0015 - #xf706100b - #x802f8f3 - #xfefe000a - #x1f0e3ee - #x1ff0205 - #xfcf90910 - #x1b1e0a00 - #xfcfa0815 - #xf80e1106 - #x6f9f2fc - #xf7f50513 - #xf7f1edf5 - #x2030800 - #xf7fd090b - #x1d1e0c00 - #xfb010c13 - #x40f09ff - #xfdf1fa06 - #xeffa1112 - #xf4fbf4f2 - #x60706f6 - #xf7fe040a - #x1f1e0ffe - #x1080813 - #xa0701fd - #xf1f30707 - #xf2081303 - #xfe00f1eb - #xa06fdf1 - #xfafa0311 - #x1f1f0dfa - #xa070115 - #x3fe0001 - #xf2ff10fd - #x31003f3 - #x5f9eaee - #x5fff6f9 - #xfaf80a17 - #x1f1f0af9 - #xe000218 - #xf5fd0608 - #xfa080cf4 - #x1306eff1 - #x1efeefd - #xfefaf803 - #xfafd1312 - #x1d1f04f9 - #x8fa0516 - #xf0040c0d - #x10903f4 - #x15f1e4fb - #xf2ed000f - #xf9fc0103 - #xfd061504 - #x1d1dfffb - #xf80a12 - #xf70c0e0e - #x205fefc - #x6e3eb03 - #xe7001516 - #xfe0406f5 - #x50d08f8 - #x1c0ffd02 - #xf9fd0b0f - #x10e0e0b - #x103fe04 - #xf7e2f403 - #xef181b0e - #x807ffe6 - #xc09fafa - #x1303020b - #xf903080b - #x90d0d06 - #x2020109 - #xf2eaf9ff - #x31f1305 - #xe01f2e5 - #xcfcf309 - #x7010e11 - #xfe060407 - #xb0a0c01 - #x5030509 - #xf6eff5fe - #x151f0a02 - #x6f5eef4 - #x4f3fb16 - #xfe07150f - #x2050101 - #x8070b04 - #x9040506 - #xf8edf402 - #x18150807 - #xf9f0f602 - #xfef50815 - #xfd141406 - #x302fffa - #x5070c06 - #xb030004 - #xf5ecf809 - #xe10100a - #xf1f90407 - #xe08 - #x21807fd - #xfff7 - #x50a0e06 - #x6ff0208 - #xe9f1040e - #xc1511ff - #xfc060202 - #x20908f7 - #xf0afd01 - #x3fdfe - #x90e07fd - #xfd070b - #xedfc0a0a - #x111805f5 - #x807f9fb - #x6010000 - #xaffff0a - #x4080102 - #xa07fffe - #xfc010a05 - #xfa020803 - #x160bf7f6 - #x6fbf201 - #xff0a10 - #x2fd060a - #x90c0503 - #x3ffff04 - #xfd0405fe - #x2020300 - #xefcf5ff - #xfaf3f806 - #xfe051713 - #x1020602 - #xc0e0501 - #xfdfe0408 - #xfc00fefc - #x2000300 - #x1f7fd05 - #xeff60004 - #x6161d05 - #x606fcfc - #xe0d0503 - #xfd03080a - #xf5fafd00 - #x5fe - #xfdfe0103 - #xf2fdfdfb - #x151d15fa - #xafff300 - #xd0b090a - #x207090b - #xeffa0003 - #x303f4 - #x205fefe - #xf8faf5f7 - #x1d1a0dfa - #x7f4f40c - #xa0b100f - #x6090a0b - #xf0ff0206 - #x502fbec - #xc04f6fd - #xf5eef1fe - #x19140d02 - #xf3ff14 - #x911160e - #x80b0a09 - #xf7000307 - #x2faf4ef - #xdfaf401 - #xe8eafc09 - #x13161301 - #xfd060d - #xf151109 - #x90b0806 - #xfbff0605 - #xf9f3f3f7 - #x6f5fa03 - #xe3f4070a - #x151812f8 - #x6060204 - #x1411090a - #x5090709 - #xfc0108fe - #xf1f1f8fe - #xfff8fffd - #xeb040905 - #x1b170aed - #xe07f903 - #x1306090f - #xfe070910 - #xfe0702f4 - #xf0f3fc02 - #xfefaf0 - #xfb0b0301 - #x1a0e01ed - #x1000f510 - #x9001214 - #xf70a0e15 - #x409f6ef - #xf3f1ff08 - #xf2ec - #x7080001 - #x1104fdf7 - #xcf9fe18 - #x51a14 - #xf9111212 - #x902e7f5 - #xf2ed0511 - #xffecef - #xa020201 - #x3000003 - #x7fb0c17 - #xff0e1a0e - #x4161009 - #x4f5e602 - #xe8f01315 - #xfffcedf0 - #x60106fe - #xfa00040c - #x906150a - #x5160e08 - #x10130902 - #xfbeff20a - #xe2fd1d11 - #x1fcedea - #x30403f8 - #xfd02070f - #xf110ffe - #xf110209 - #x110b0603 - #xf4f50006 - #xe70b1c04 - #x8fbe7e3 - #x305fdfa - #x10a0f - #x171807fb - #x1106fe10 - #x605070a - #xfa0000fc - #xf60e0fff - #xaf3e1e4 - #x302fa01 - #xfe0d0f - #x1b1803fe - #x6fb0416 - #xfd070c0d - #x303f8f6 - #xff050602 - #x4eae1ee - #x100ff08 - #xfcff0f0b - #x1d160300 - #xfdfa0c18 - #xfd0e0d08 - #x6fceffc - #xfafa060d - #xfae9eaf8 - #x30605 - #xf7010e08 - #x1e180700 - #xfa010f16 - #x5110900 - #xfdf3f506 - #xeffd110e - #xf6f2f3f6 - #x40805fa - #xf9020a07 - #x1f1808fd - #x70c18 - #xb0b01fc - #xf2f30307 - #xef081604 - #xfdfaf2ed - #x809fcf5 - #xfbff070b - #x1f1b08fa - #x706081a - #x702fdff - #xefff0cff - #xfe1109f6 - #x5f7ebec - #x903f3fb - #xf9fb0d10 - #x1f1d04fa - #xa00081b - #xfbff0007 - #xf80b06f3 - #xe09f7f0 - #x2edeaf9 - #x2fbf503 - #xf600160e - #x1f1b01fa - #x6fb0c1b - #xf403060e - #x10dfcf2 - #x10f4ecf6 - #xf6ebf60b - #xfcfb0004 - #xf60a1804 - #x1f15fefb - #xfffb0d19 - #xfa0a0b0f - #x508f6fb - #x2e4f000 - #xebf90b17 - #xfd0106f8 - #xff120dfa - #x1f0bfeff - #xf9fe0b16 - #x40d0d0b - #x303f904 - #xf0e3fa00 - #xf2111811 - #x50800e7 - #x90dfefb - #x19010105 - #xf9030717 - #xa0e0e02 - #x1000008 - #xe7ecfefe - #x61e1505 - #xa04f0e5 - #xcfff806 - #xc000a0d - #xff060612 - #xb0d0bfd - #x3020608 - #xebf2fbfd - #x1a1c0bff - #x6f9e5f3 - #x4f3ff12 - #x109130f - #x4050407 - #x80c09fe - #x5040705 - #xf1f0f600 - #x1f120802 - #xfaf1ec06 - #xfaf50d12 - #x113120a - #x40200fe - #x50c0a02 - #x7040403 - #xf0ecf908 - #x170c0d05 - #xf2f6fa0d - #xf7001405 - #x8170a02 - #x100fef9 - #x50d0c02 - #x7000105 - #xebee010d - #xc111102 - #xf6020407 - #xff080df9 - #x101100ff - #x1fcfc - #x80f0bff - #x100050b - #xe7fb0b0a - #x13170af2 - #x505fc05 - #x408fff9 - #xefe0004 - #x401fb09 - #xe0bfffd - #xfe020a0a - #xf2030a04 - #x190ffdf0 - #x9fff306 - #x1000207 - #x3f9070b - #x9060008 - #x901fc02 - #x70701 - #xfd0504ff - #x12fef7f9 - #xfff5f60f - #xfc03110d - #xff010b05 - #xc090203 - #xfd0107 - #x500fc - #x202fe - #x6f5fd01 - #xf5f6ff0e - #x121904 - #x30503ff - #xd0a0201 - #xfd00070a - #xfdfffbfe - #xfd0204fc - #xfcfa0403 - #xf4fd0002 - #xe1e14f6 - #x900f800 - #xe090306 - #x6090b - #xf6fcfe03 - #xfe0503f5 - #x10100 - #xfafef9fc - #x1a1d0af5 - #x6f4f80c - #xb0a0a0c - #x508090b - #xf5fe0006 - #x206fded - #x700fb00 - #xfaf6f3ff - #x1b1606fb - #xffef0115 - #xa0e100d - #x809090a - #xf8000108 - #x300f3ea - #xbf8fa03 - #xefeef808 - #x15140cfe - #xfaf70b15 - #xe141108 - #xa0a0807 - #xfbff0409 - #xfcf7f1f2 - #x5f2fe05 - #xe6f4030e - #x161910f3 - #xff03070c - #x14120c05 - #xa08040a - #xfb010505 - #xf3f3f5f9 - #xfef602ff - #xec00080a - #x1a1b0ae7 - #x905ff0b - #x13090a09 - #x6060511 - #xfd0700fe - #xf0f4fcfb - #xfdfdfff5 - #xfb090404 - #x1b15ffe6 - #xefcfb13 - #x9030f11 - #x1070c17 - #x409f3f9 - #xf1f500fe - #xf4f0 - #x7070102 - #x130af8f2 - #xaf3031b - #xff061613 - #x20c1113 - #xa01e7fe - #xeef50504 - #x1fbeef2 - #x9020202 - #x802fa01 - #x3f50f17 - #xfe101711 - #xa111208 - #x9f3e508 - #xe6f80f0c - #x1f5eff3 - #x4000500 - #x1020b - #x1160c - #x718110c - #x13120c00 - #xfdebf10f - #xe103190b - #x2f3f1ec - #x10602fe - #x3090b - #x8101000 - #x1112060a - #x150d0501 - #xf5efff0d - #xe7101903 - #x5f3ede4 - #x407fbff - #x2030c09 - #x121606fc - #x1106040e - #xd060408 - #xf6fa0203 - #xf61610fa - #x7eee4e1 - #x604f706 - #x40f08 - #x1912feff - #x8fe0814 - #x305090f - #x1f8fd - #xe06fc - #x2e6e2ec - #x4fffd0c - #xfc051107 - #x1c0f0001 - #xfdfd0f18 - #x10a0c0b - #x6fdf000 - #xff030504 - #xf9e3e9f6 - #x100050a - #xf9091004 - #x1d0e0500 - #xf802121a - #x80e0901 - #xf2f208 - #xf3000d0c - #xf3e9f4f7 - #x3070700 - #xfa090c03 - #x1d1206fb - #xfe080f1a - #xf0c02fb - #xf4f1ff0b - #xef0a1404 - #xf8f3f5ef - #x90bfef9 - #xfd050905 - #x1f1403fa - #x5070e1c - #xc03fcff - #xf0fc0804 - #xfb130ef7 - #xf5eeea - #xc04f3fd - #xfb020c0a - #x1f1601fb - #x703101e - #x2fdfb06 - #xf70903fa - #xb0ffeee - #xeee9f3 - #x7faf406 - #xf405140c - #x1f1400fb - #x2ff111d - #xfbfe030e - #x30df5f7 - #xdfcf2f1 - #xf6e8f206 - #xf70007 - #xf50f1605 - #x1f0ffff9 - #xfc00111c - #xfe030a0f - #xa06effe - #xffecf3fa - #xedf00313 - #xfcfe08fc - #xfe170efe - #x1e08fef8 - #xf9020e1c - #x6090e09 - #x8fff306 - #xeae9fcff - #xf1041611 - #x10701ec - #xa1300fb - #x180200fe - #xfb040b1e - #xb0c0d00 - #x3fefd09 - #xe1f200fd - #x5161802 - #x906efe9 - #xe03fb04 - #xd000607 - #xff040b1c - #xc0e09fb - #x1000509 - #xe5f8fcfc - #x19180ff8 - #x9fce1f7 - #x5f7010d - #x4070d0d - #x2030b12 - #xb0e05fc - #x3040608 - #xeef6f700 - #x1f1008f8 - #xffefe50c - #xf8f80f0d - #x412120b - #x4010703 - #xa0d0300 - #x6060406 - #xeeeff904 - #x170b0bfd - #xf5eff615 - #xf2041602 - #xd160d02 - #x10000fe - #x90e0702 - #x6040206 - #xe8ef0009 - #xf0f10fd - #xf6fa0110 - #xf80f10f6 - #x130f04fe - #xfb00 - #xb1107ff - #x3000309 - #xe6f8080c - #xf160ef6 - #x50007 - #x10e02f4 - #x12030001 - #x201fa06 - #xe1102fb - #x30710 - #xf0040a05 - #x1914ffe9 - #x8fdfb0d - #x703fa02 - #x3fc0404 - #x5fe000c - #x1202f902 - #x2080808 - #xfc070500 - #x1506f7ef - #x2f4fa14 - #xfe00070c - #xfc000b06 - #x8020306 - #x6fbff08 - #x50701ff - #x401ff - #x6fafafa - #xf8f30315 - #xfd0d1205 - #x808ff - #xb050201 - #xfefe050a - #x301fcfd - #xff0201ff - #xfcfa0100 - #xf6fa080b - #xa1b0ffa - #x60500fd - #xc050203 - #xfe03080b - #xfdfdfc01 - #xfe0601fa - #xfb0004fe - #xfcff01ff - #x191d04f4 - #x5f8fb06 - #xb06050a - #x307090c - #xfafc0005 - #x208fcf2 - #x20100fe - #xfdfaf8ff - #x1d14fffa - #xfcf10313 - #xb0a0c0c - #x707090b - #xfbfe0207 - #x602f2ef - #x5fafe01 - #xf7f3f807 - #x190f03fd - #xf4f70d17 - #xd0f0f06 - #x8080809 - #xfcff0309 - #x1f9ecf2 - #x1f30104 - #xedf3010e - #x151509f4 - #xf8010e13 - #x12120d00 - #xa07050a - #xfc00050a - #xf9f3f0f6 - #xfaf80500 - #xeefd0a0b - #x1a1b04e7 - #x203060f - #x120d0903 - #xa030412 - #xfd040105 - #xf2f5f7f7 - #xf8ff02f7 - #xfa050a04 - #x1e17f9e5 - #xbfc0115 - #xb070b0b - #x6020a17 - #x406f801 - #xf1f8fcf8 - #xfe00f9f1 - #x5050501 - #x1a0cf0f0 - #x6f2091b - #x2091013 - #x4061512 - #xcfeee03 - #xeffafffe - #x1faf2f2 - #x7010402 - #x1002f300 - #xfdf61419 - #x111411 - #x90e1506 - #xaf0ec0a - #xeafe0607 - #x1f2f2f2 - #x3020403 - #x7fffd09 - #xfa02170e - #x616120b - #x10120ffd - #xfee5f611 - #xe6050f0c - #xfef0f5eb - #x2050202 - #x4020809 - #x111002 - #x11140c07 - #x140e05fe - #xf2ea0310 - #xed121205 - #xfef2f1e2 - #x506fc03 - #x4060c04 - #xd1504ff - #x12090808 - #xf070208 - #xf1f60709 - #xfc190cfc - #xf0e7e0 - #x901fa08 - #x2090d04 - #x1710ff00 - #x9010b0f - #x704070f - #xfbfeff01 - #x91302f8 - #xfde8e1e8 - #x7fdff0d - #xff0c0d06 - #x19070002 - #xfd000f17 - #x3070d0c - #x3faf503 - #x6080000 - #xf4e2e7f5 - #x2fd080b - #xfe0e0d05 - #x180704ff - #xf905131b - #x80b0c02 - #xf1f50a - #xfc030608 - #xeee6f2f8 - #x1030b02 - #xf0a03 - #x180b04fc - #xfd09141d - #xe0b04fa - #xf6eeff0e - #xf4090f07 - #xeff0f7f0 - #x80903fa - #x10b0702 - #x1a0f00fa - #x30a121e - #xe04fcfb - #xf0f70709 - #xfd140efa - #xf9f5f0e8 - #xd04f9fc - #x60808 - #x1d0ffffc - #x507141e - #x6fcfb04 - #xf6040400 - #xb1200ef - #xfdf1e8ef - #xbfaf904 - #xfa090e0c - #x1f0efffb - #x205161f - #xfff9010b - #x409f9fb - #xf03f3ef - #xf6e9ed00 - #xf40308 - #xf811120a - #x1e0bfff7 - #xfd06141f - #xfdfe0b0b - #xd00f0ff - #x1f4f1f9 - #xeceb000e - #xfafb0bfe - #x1170d03 - #x1b06fdf3 - #xfb07131f - #x2051005 - #xaf7f305 - #xedeff700 - #xedfb110b - #xfe0604f1 - #xe1403ff - #x1703fbf7 - #xfd06121f - #x80b0ffe - #x2f5fe0a - #xe2f6fd01 - #xfe0e18fd - #x808f2ec - #x1308fd01 - #xd02ff01 - #x4131f - #xa0d08fa - #xfb040b - #xe8fcfbff - #x11170fef - #xcfbe2f9 - #x9fc010a - #x507070b - #x1041516 - #xc0d02fc - #x101060b - #xf1faf700 - #x1a1305ed - #x4ece50d - #xf9fb0c0d - #x60e0f0a - #x41009 - #xd0c0000 - #x505040b - #xf3f3f803 - #x150d04f4 - #xf7e7f819 - #xf1091304 - #xe140f00 - #x20502 - #xd0a0202 - #x604020b - #xebf1fe07 - #xe0e09f6 - #xf3f10716 - #xf9140df9 - #x141107f8 - #xff00fe05 - #xf0d0400 - #x502020d - #xe6f70508 - #xd150af0 - #xfbfd080d - #x51300f5 - #x130601fa - #xfefc0d - #x120e00fe - #x1010511 - #xec010a08 - #x151803ea - #x500fd0a - #x907f8fc - #x9fd0102 - #x3fefd0f - #x1409faff - #x2050b10 - #xfc070702 - #x180df2e9 - #x1f60115 - #x4fd000b - #xfc020604 - #x2fe0705 - #xcf9fd07 - #x6080703 - #x2050200 - #xc00f3f4 - #xf8f10a18 - #xfe050c0b - #xfd0a08ff - #x4010500 - #xfffa050a - #x70300fd - #x20002 - #xfefdfcfc - #xf3f9100e - #x7140cff - #x50a01fa - #x7030200 - #xfc01090b - #x1fdfdff - #x30000 - #xfb0100fd - #xf8000b01 - #x181902f8 - #x501fc01 - #x9030306 - #x6090b - #xfcfb0004 - #x406fcfa - #x400fc - #xfeff00fd - #x1f10fbfb - #xfcf8000f - #x9060909 - #x507090c - #xfbfd0306 - #x902f2f5 - #x2fffe00 - #xfaf7fd03 - #x1b09feff - #xf2fa0c18 - #xb0b0e03 - #x607090b - #xfcff0407 - #x8f9ecf6 - #xfefa0103 - #xf2f4030a - #x160c03fa - #xf3041217 - #xf0f0cfb - #x706080c - #xfc000609 - #xfff1edf7 - #xf6fb0402 - #xeffa0c08 - #x181601ed - #xfd080e13 - #x110f08fb - #x8030710 - #xfd020707 - #xf6f1f2f7 - #xf60102fb - #xf7020e00 - #x1f15f4e8 - #x5000916 - #xd0b0605 - #x5010c13 - #x1030003 - #xf3f6f6f7 - #xfc04fcf4 - #x50afe - #x1f0aebf1 - #x3f80b1b - #x50a0a0e - #x105150f - #x8fdf902 - #xf3faf7fd - #x1fef5f1 - #x3030600 - #x18feed00 - #xf8fa141b - #x40f120f - #x30e1704 - #x6eff807 - #xf1fcfd08 - #xfff4f4f1 - #x1030503 - #xdfafa07 - #xf4071813 - #xa141306 - #x9130ffc - #xfbe6fe0e - #xf001060f - #xfaf2f6ea - #x1050404 - #x7fe0505 - #xfb141109 - #x10131000 - #xf1105fe - #xede80810 - #xf60c0d0a - #xf8f5f1e2 - #x6060104 - #x5050902 - #xa160603 - #x110d0b01 - #xe0a0006 - #xeaf50c0a - #x31509fd - #xf8f5e7e2 - #x9000004 - #x40b0803 - #x140d0003 - #xa060a09 - #x803060f - #xf3fe0604 - #xf1401f6 - #xf8ede1ea - #x6fa0509 - #x40d0807 - #x16040103 - #x1050d13 - #x3040d0d - #xfffcfc02 - #x1008fcfc - #xf2e4e2f6 - #xfb0d08 - #x40f0908 - #x12020400 - #xfb08121a - #x40a0e01 - #xfef2fb08 - #x4020105 - #xeae5effc - #xff021000 - #x70f0805 - #x100702fd - #xff0c151b - #xa0c06f9 - #xf5ee010d - #xfd060907 - #xeaeff6f5 - #x4080af8 - #xa0d0503 - #x130bfffc - #x40d171b - #xc06fefa - #xedf40a0b - #x100cfe - #xf1f7f1eb - #xb05fff7 - #x6080406 - #x180cfdfe - #x60c161c - #x7fdfb00 - #xf3000902 - #xd1202f1 - #xf8f4e7ee - #x9fcfefe - #x108090d - #x1b08fffd - #x30b181e - #xfef90005 - #x500fc - #x1308f5f1 - #xf6ebe8fe - #xf60503 - #xe0e0f - #x1b08fff8 - #xc171f - #xf9fc0a06 - #xafff7fc - #x8f9eefb - #xede8f90b - #xf7fc0dff - #x7140d08 - #x1707fbf2 - #xc171f - #xfb040f00 - #x7f2f900 - #xf5f1f406 - #xeaf60c09 - #xfb0607f2 - #x13140600 - #x1404f6f6 - #x10a191f - #xb0efb - #xfff00005 - #xeaf4fa09 - #xf50913f9 - #x408f7ed - #x17090000 - #xe02f701 - #x81b1e - #x50e09fa - #xf9f70609 - #xeefbfc04 - #x8170ae9 - #xcfde8f6 - #xeff0007 - #x704000d - #x71e18 - #xa0d01fb - #xfcff070c - #xf7faf901 - #x1417fee7 - #x5eaea08 - #xfefe0a0e - #x70a0a0b - #xff09180c - #xd09ff00 - #x103060d - #xf9f4f802 - #x1411faee - #xf7e3fc16 - #xf607100b - #xd100e00 - #xff090c05 - #xe060001 - #x503050e - #xf1f1fd05 - #xe0efff4 - #xeceb0e16 - #xfd130cff - #x141207f5 - #xff040209 - #xf070200 - #x5010510 - #xeaf60308 - #xd1302ee - #xf2fa100e - #xb1301f7 - #x140cfef5 - #xffff0010 - #x120900fe - #x2000715 - #xedff0707 - #x1317fee7 - #xfe00080b - #x1108f8fc - #xc03fdfe - #xfd0412 - #x1504fc00 - #x1030a14 - #xf8050804 - #x1a14f5e7 - #x3fa0010 - #xafefa07 - #x305 - #x1fd060c - #x11fcfa04 - #x4070f06 - #x2050402 - #x1500ebf3 - #xf7f70d19 - #xff090a - #xfe080503 - #x208fe - #xfdf90507 - #x70606fb - #x1010205 - #x5fbf4fc - #xeffc1612 - #x20b0d01 - #x50e01fa - #x20303fc - #xf8000a08 - #x300fffd - #x10205 - #xff00fcfd - #xf4051104 - #x141204f8 - #x906f9ff - #x4020102 - #xfe060909 - #xfefd0002 - #x303ff01 - #x3fdfc - #xfc0605fd - #x1d0dfcf9 - #x1fdfd0d - #x6030606 - #x407090b - #xfafd0205 - #xa00f8fc - #x302fbff - #xfdfefe00 - #x1c03fcff - #xf7fc0819 - #x7070c02 - #x5060a0b - #xfb000405 - #xaf7f1fa - #xfefe05 - #xf6f80305 - #x140401fe - #xf404121a - #xb0d0bf9 - #x5060a0c - #xfc000606 - #x2eff0fa - #xf9000306 - #xf0fb0b03 - #x130c00f4 - #xfc0b1317 - #xf0f04f5 - #x5050a0e - #xfc020805 - #xf8edf3f9 - #xf7040300 - #xf4040ffc - #x1d0ff5ec - #x4070e17 - #x100b00fe - #x3030d11 - #x40701 - #xf4f2f3f8 - #xfd05fdf8 - #xfd080af9 - #x1f04eaf1 - #x100101c - #xb090508 - #xfe07140d - #x30002ff - #xf5f6f3fd - #x300f7f4 - #x10704fd - #x1bf8ecfd - #xf700141f - #x70b0f09 - #xff111605 - #x1f5fe01 - #xf7f7f808 - #xf8f4f2 - #x1060302 - #xff3f803 - #xf30a191c - #xa101400 - #x5180cfe - #xf5ed0109 - #xf7fb010f - #xf9f5f4ee - #x1060503 - #x5fb0402 - #xfb151312 - #x111310f9 - #xd150300 - #xe9ee090e - #xfa030b09 - #xf5f9efe7 - #x4050500 - #x3040700 - #x8150b0b - #x12100afb - #x100bff08 - #xe5f80e0c - #x40d0cfb - #xf7fae5e6 - #x7020400 - #x50a0503 - #x140c0507 - #xd0b0504 - #xa04030f - #xee000a05 - #x110f03f2 - #xf8f0e0ef - #x4fe0801 - #x80b0509 - #x12020405 - #x5080810 - #x3040b0c - #xf9000201 - #x1308fcf5 - #xf3e5e2fc - #xfeff0e02 - #xb0c070b - #xd010402 - #x10a0f18 - #x20a0d02 - #xfcf8ff05 - #xc00fd00 - #xeae2ec03 - #xfa0412fd - #xd0c0905 - #xa060200 - #x20d1517 - #x70e06fa - #xf3f2030a - #x2010605 - #xe7ecf5fe - #x10c0cf4 - #xe0b0601 - #xd09fe00 - #x6101816 - #xb09fef9 - #xebf60b0a - #x10a0afd - #xeef6f2f4 - #x90a02f1 - #xc080405 - #x1207fc02 - #x8101817 - #x700fafe - #xee000d03 - #xc1004f1 - #xf7f7e8f3 - #x900fef7 - #x606060d - #x1505fe01 - #x810181b - #xfef9fe02 - #xfb0505fb - #x1409f7f0 - #xf8ebe6ff - #xfffa03fe - #x5090c10 - #x1604fefc - #x610191f - #xf6fd0602 - #x400fef7 - #xefbeffb - #xf0e6f40b - #xf7fe0bfd - #xa0f100a - #x1406faf7 - #x40f1b1f - #xf6050bff - #x3f6fcfa - #xfef0f309 - #xe9f0070c - #xf90909f4 - #x13110aff - #x1204f2f9 - #x50d1d1f - #xfb0e08fb - #xf8f100ff - #xf1f1fc0c - #xf0050dfb - #x40cfbec - #x170b03fc - #xe00f105 - #x40d1f1c - #x21004fc - #xf2f70504 - #xf2f60007 - #x1605ec - #xb00eef1 - #x10020103 - #xafdfb10 - #x10f1f16 - #x80d00fd - #xf5ff0609 - #xfaf9fe00 - #x1219f6e8 - #x5eeee01 - #x2ff070e - #x8010811 - #x121d0f - #xc09fefe - #xfd03070c - #xfcf5fc00 - #x150ff0f0 - #xf5e5fe0f - #xfa060f0e - #xc0b0e03 - #x1111009 - #xd0400fe - #x203090d - #xf4f1fe02 - #x1109f5f6 - #xe8ec0f13 - #x100e04 - #x121106f7 - #x20b060a - #xb0401fd - #x301090e - #xecf40207 - #xe0bfbf3 - #xe9fc150d - #xf1204f7 - #x150efaf5 - #x30411 - #xd0600fc - #x1000b13 - #xedfc0607 - #x1412f8e9 - #xf6040c0a - #x1609fbf7 - #xf06f600 - #xff000913 - #x1003fefd - #x20f14 - #xf6020705 - #x1a0fefe6 - #xfe00060f - #x10fdfa00 - #x501fd09 - #xfe000d0d - #xefcfc00 - #x306110c - #x60602 - #x1905eaee - #xfbf70816 - #x3fa030b - #xfd040507 - #xff010b03 - #x3f70106 - #x60a0dfa - #x40405 - #xdf5effc - #xf1001518 - #xfe060eff - #x5090300 - #x502fd - #xf5000902 - #x50501f9 - #xff010508 - #x2f8f9fe - #xf20b150b - #xa0f09f4 - #xc09fafd - #x204ff00 - #xfb070904 - #xfe00 - #x20405 - #x2fffcfd - #xfd0d0800 - #x180cfff4 - #x8fef90b - #x3030206 - #x3080807 - #xfcff0004 - #x600ffff - #x400fa00 - #x106ffff - #x1603fcfa - #xfefa051a - #x4060703 - #x6060909 - #xfc000304 - #x8f9f9fb - #x3fefc05 - #xfcfe0003 - #xe0000fe - #xf701131d - #x70b08f9 - #x4060b09 - #xfd010303 - #xf1f6fb - #xfefe020a - #xf5fe0801 - #xd0601f8 - #xfd0b1618 - #xd0d00f3 - #x3070c0b - #xfd020503 - #xf6eef7fa - #xfc030607 - #xf5040bfb - #x1409faf1 - #x40d1316 - #x100afbf9 - #x3070d0e - #xfe050700 - #xf1f0f6f7 - #x602fe - #xfd0d06f6 - #x1d01eef0 - #x406121c - #xd05fe03 - #x9110f - #x10403fc - #xf3f2f3fc - #x400fbf7 - #x30c00fc - #x19f5edf8 - #xfc06181f - #xa070a05 - #xfe111209 - #xfeffff - #xf6f1f603 - #x3faf6f5 - #x408ff02 - #xcf0f7ff - #xf60b1b1f - #xa0d11fd - #x5180c03 - #xf7f7ff08 - #xf7f30009 - #xfbf7f4f3 - #x4070403 - #xf70200 - #xfd141b1a - #xe120df4 - #x11150003 - #xeaf6050f - #xf9fd0c04 - #xf7f9efef - #x50607ff - #xff0204ff - #xa14120f - #x111204f7 - #x150afd0a - #xe6fd0b0f - #x80ff6 - #xf9f8e6ee - #x60507fb - #x3080302 - #x120c0c09 - #x100dff02 - #x1002000f - #xed050a08 - #xa0e06ea - #xfcefe0f5 - #x30206fc - #x9090309 - #x11040807 - #xb09020e - #x702090e - #xf8050302 - #x1109fced - #xf7e3e401 - #xfd030aff - #xd07070a - #x9030606 - #x6090c14 - #x3090b04 - #xfcff0003 - #xc00faf8 - #xede0ee0a - #xfc0a0cfc - #xe080a05 - #x6050306 - #x60c1414 - #x70e05fe - #xf4f80109 - #x2fe02ff - #xe6e6f907 - #xf09f3 - #xf0a08fe - #x906ff06 - #x9101810 - #xc0afcfc - #xecfa090a - #x509f9 - #xecf3f7fd - #x90f00ed - #xd080401 - #xe04fe08 - #xb121711 - #xa02f8ff - #xee020c05 - #x70d05ef - #xf5f4edf9 - #xb07fbf1 - #xa050509 - #x10000008 - #xb131616 - #x1fbfb03 - #xf80809fb - #x120bf9eb - #xf9eae901 - #x200fefa - #x6060b0f - #x10010002 - #xb12171b - #xf8fc0103 - #x205fff5 - #xefdf0f6 - #xf1e2f40d - #xf90104fd - #x90c1108 - #xf03fbfd - #xa111c1c - #xf6040501 - #x1fdfaf7 - #x1f1f304 - #xe9ea040f - #xfa0a05f6 - #x10100ffd - #xf02f4ff - #x8111f1c - #xfb0b0300 - #xf8f7fbfd - #xf4ee0009 - #xebff0c03 - #x50ffdec - #x140e05f7 - #xefbf108 - #x6111f1a - #x40eff00 - #xf0fbfe03 - #xf1f50602 - #xfc1002f3 - #xd04f1ed - #xe070100 - #xaf5fb13 - #x4141f18 - #xb0cfd00 - #xf2000108 - #xf6fa05f9 - #xe12f4ed - #x8f4effa - #x502040c - #x6f70813 - #x51a1e12 - #xe06fdfe - #xfb04050c - #xfaf800f8 - #x1707ebf4 - #xf6e9fa09 - #xfe050e11 - #x7030e08 - #x81a150c - #xd04fefc - #x4090b - #xf4f5fffd - #x14fef1fa - #xe7f10b11 - #x10d1103 - #xe0e07fb - #x9110a0c - #xa03fffb - #x40c0b - #xecf60202 - #x1000f9f7 - #xe6001210 - #xe110af4 - #x140efaf9 - #x6080811 - #x904fffb - #x30e0d - #xebfc0604 - #x1206f7ed - #xf30a0d0d - #x160affee - #x1204f303 - #x2040c14 - #xb03fcfc - #xff05120f - #xf4010803 - #x1907eee8 - #xfd070610 - #x1000fbf7 - #xafdfa0f - #x40f10 - #x9fefbfd - #x8150a - #xfd040702 - #x1affe8ee - #xfc000818 - #x3fa0001 - #x3ff030f - #x60d06 - #x1faff00 - #x50a12ff - #x50503 - #x13f6ebf9 - #xf4ff111a - #xfc000b03 - #x1070604 - #x506ff - #xf6fd0602 - #x70c03f7 - #xff040606 - #x2f0f8fd - #xf60c1714 - #x10f09f1 - #xb0600fe - #x304fd02 - #xfa070600 - #x405fcff - #xff040806 - #xfff8fcfc - #x130e08 - #xf0f00ed - #xcfefa05 - #x302fe08 - #x3090502 - #xff00ff04 - #x2040400 - #x2fdfbfe - #x70b0103 - #x1206faf6 - #x2f60316 - #x4030308 - #x7070705 - #xff010104 - #x3fefffc - #x3fcfd05 - #x301ff04 - #xa00fefd - #xfbfb121c - #x6080400 - #x4060907 - #x20202 - #xfdf6fbfa - #xfb030b - #xfaff0404 - #x50301fb - #xfc081b18 - #xb0afff7 - #x2080b08 - #xff020202 - #xf3f3fafa - #xfe000908 - #xf90506fe - #xc07fdf4 - #x40f1813 - #xe07f8f8 - #x30a0c0b - #xff030302 - #xedf3f9f9 - #x40900 - #xff0b01f9 - #x1402f5f1 - #x70e1418 - #xe01f900 - #x30c0e0e - #x1060200 - #xeff3f5f9 - #x50201f8 - #x70cfafc - #x13f6eff4 - #x109181f - #x8010303 - #x3100f0e - #x203fb01 - #xf2f0f5ff - #x4fdfaf6 - #xa08fb03 - #x6f0f5fc - #xfc0e1d1f - #x7080bfc - #x9140b0a - #xfcfdf90a - #xf2f1ff03 - #xfef9f7f6 - #x8050104 - #xfbf6feff - #x141f1a - #xa0f08f5 - #x14110207 - #xf3fb0013 - #xf2f90afe - #xf9f8f4f5 - #x60606ff - #xf90101ff - #xb151d10 - #x1012fef6 - #x1a08fe0b - #xeeff0814 - #xf8070df0 - #xfbf6edf3 - #x70705fb - #x2060002 - #x12111409 - #x120df902 - #x14010110 - #xf2050a0d - #x10f05e5 - #xfdece7f8 - #x50702fc - #x9050107 - #x10090c07 - #xf06fd0e - #xa00080f - #xfb080605 - #xb0cf8e6 - #xf9e1e902 - #x10703ff - #xc040708 - #x8050808 - #x9040712 - #x4050b09 - #xff020004 - #xb02f4f1 - #xeee0f50c - #xb06fe - #xc070b01 - #x407060a - #x709120f - #x70b0503 - #xfafc0009 - #x2fefcf9 - #xe5e3ff0c - #x41104f5 - #xb0a08fc - #x706030c - #x80f150c - #xd0afe00 - #xf1fb050d - #xfd0305f6 - #xe7ef0003 - #xe11feec - #xc0a03fe - #xb01020c - #xb12140c - #xe00f903 - #xf1020a08 - #x30c03ec - #xf2f3f7fe - #xf0af6ee - #xa060306 - #xbff040d - #xe131311 - #x5fafa05 - #xf90908ff - #xc0cf9e8 - #xf8ebf101 - #x803f6f7 - #x705090c - #xa000509 - #xf131516 - #xfcfaff07 - #x20900f7 - #x1000eff0 - #xf2e1f70d - #x1fefe - #x60a1108 - #xa020003 - #xd121a18 - #xf8000105 - #x301f6f8 - #x4f3f2fe - #xe7e70511 - #x902f8 - #xb1210fd - #xc00f902 - #xb121f17 - #xfe060005 - #xfdfbf4ff - #xf6f0fe03 - #xe7f90d09 - #x70dfdee - #x101206f6 - #xdf8f609 - #x8151f17 - #x707fe05 - #xf5fbf706 - #xeef708fe - #xf60b06fa - #x1008f2ea - #x100bfefe - #x8effe13 - #x8191f18 - #xe05fe04 - #xf6fffc0c - #xf10007f3 - #xa0bf7f2 - #xaf8edf5 - #x804010c - #x1f20b13 - #xa1d1e14 - #x1003fe00 - #xfb01000d - #xf50000ef - #x1400eff5 - #xfbeff406 - #x1040b0f - #xff1009 - #xe1e180e - #xf01fdfd - #x3060c - #xf4fbfcf6 - #x12f5f2fb - #xeaf30312 - #x20c1203 - #x70b09fe - #x11170f0c - #xa01fcfc - #x1040a0a - #xeefafffe - #xbf6fbf9 - #xe9010d14 - #xc120cf0 - #x100dfcfc - #xd0d0b0f - #x802fbff - #x70c0a - #xecfd0300 - #xcfdfaef - #xf50c0c11 - #x131000e7 - #x1203f605 - #x7070e14 - #x902faff - #x80f0c - #xf1020600 - #x1200f1e9 - #xb0712 - #x1004f8ed - #xcf7fc11 - #x2071114 - #x8fef9fe - #x10b1307 - #xfa0506ff - #x15f9e9ed - #x40819 - #x3fdfcfa - #x3f80713 - #x30a0e0d - #x1fbfbff - #x40e12fe - #xfe050400 - #x11f0ebf6 - #xf901101f - #xfb0005fd - #x1000c0a - #x3090803 - #xf9fd0000 - #x70e08f7 - #xff050505 - #x6edf4fd - #xf508171a - #xfd0b0bf5 - #x70704ff - #x3050000 - #xf7050500 - #x908faff - #x70805 - #xf9f5fbfa - #x212170d - #xb0ffbed - #xa00fe00 - #x400fd09 - #x4070201 - #x401fc06 - #x2080702 - #xfdfbfbfa - #xc100a06 - #x1108f4f4 - #x3f5010e - #x300010d - #x9060302 - #x1000105 - #x30501fd - #xfafc01 - #xa040106 - #xa00f7ff - #xfaf91016 - #x5030507 - #x5050605 - #x1010202 - #xfffefcfc - #xfff90307 - #x1ff0306 - #x401fe00 - #xf9061b13 - #x80601fd - #x2080906 - #x2010001 - #xf4f9fafd - #xfcfe0d06 - #xfc020501 - #x605fef9 - #x1131a0e - #xd04f9fa - #x40b0a0a - #x10003 - #xeff8f9fc - #xff040dfd - #x108fffd - #xe04f7f3 - #x9131511 - #xbfff8ff - #x70c0b0d - #x1030004 - #xf0f8f7fb - #x30706f5 - #x908f9ff - #xdfaf2f6 - #x80f171a - #x6fcfe03 - #x80d0d0f - #x403fb05 - #xf2f3f5fc - #x402fef4 - #xd03f904 - #x3f3f3fd - #x20e1e1e - #x30307ff - #xc100d0d - #x2fff80d - #xeff1faff - #xfffdfaf5 - #xa010005 - #xf8f6f901 - #x2161f17 - #x70d03f8 - #x150d0709 - #xfcfafe16 - #xedf904fc - #xfaf9f8f5 - #x8030600 - #xf7fefd02 - #xb1a1f0d - #xd10faf8 - #x1905020a - #xf6fb0817 - #xf00607f1 - #xfbf6f4f3 - #x70704fb - #x2fe04 - #x11181905 - #x120af402 - #x13fe050d - #xf7010d0f - #xfd0fffe7 - #xfcedf0f5 - #x708fffc - #x8020007 - #xf131005 - #x1002fa0b - #x8fe0a0f - #xfe060a07 - #x90df2e7 - #xf8e3f0fe - #x607fe00 - #xa010506 - #x90d0b09 - #xa00050e - #x2040c0d - #x2040304 - #xc02ecf1 - #xece0f908 - #x6090100 - #x8050901 - #x50a090c - #x6040f0b - #x5080808 - #xfffe0009 - #x4fcf3f9 - #xe2e6030b - #x90d03f7 - #x80b06fc - #x607080d - #x60d1208 - #xc070105 - #xf8fc050e - #xfe00fdf7 - #xe2f10705 - #xf0efeed - #xa0c01fd - #x903080e - #xb130f08 - #xd00fd05 - #xf4000a0b - #x9ffee - #xecf700ff - #x140af4eb - #xb06ff06 - #x8000a0e - #xf130e0d - #x7f9fd07 - #xfb070902 - #xa0bf5e8 - #xf4f0f900 - #xe00f2f4 - #x704050d - #x6010a0c - #x10131211 - #xfdf70009 - #x30902fa - #xf02ecee - #xf0e7fb08 - #x5fff8fc - #x5090d09 - #x5030707 - #xf121711 - #xf9fb020b - #x704f7fa - #x7f4edfb - #xe5e80611 - #x20401f9 - #x7120fff - #x9010004 - #xc141c12 - #xfe00020a - #x2fcf200 - #xf8f1f900 - #xe2f8100b - #x90a00ee - #xf1405fa - #xaf9fe08 - #xb181d14 - #x6010108 - #xfcf8f508 - #xeef904fd - #xef070cfe - #x1108f5e8 - #x120dfb00 - #x4f1020f - #xa1d1d15 - #xc000105 - #xf9f9fc0d - #xef0404f3 - #x40afff3 - #xefcecf1 - #xd03fd0d - #xfbf20c12 - #xf1f1c13 - #xdff0102 - #xfdfc010e - #xf605fcef - #xffef4f2 - #xfff1f103 - #x6020811 - #xf800120c - #x151f190c - #xb000000 - #xfe060c - #xf800f6f4 - #xdf2f5f6 - #xf1f2fe12 - #x40b1105 - #xff0c0c02 - #x161b1408 - #x900fd01 - #x1090a - #xf4fcf8fc - #x4f0fcf8 - #xeefe0a16 - #x9140ef1 - #xb0efffe - #x12110f0b - #x7fffa03 - #x1060b09 - #xf1fefeff - #x1fafdef - #xf9090e11 - #x121400e6 - #x1001f806 - #xb0b1011 - #x7fefa04 - #x2090c0a - #xf40202fe - #x8fff4e9 - #x40b0c12 - #x1209f3eb - #xaf6ff10 - #x60b1215 - #x7fcf902 - #x40c0f08 - #xfb0602fd - #xdf9ebea - #x7050b17 - #x8fff3f8 - #xf50b13 - #x50c1210 - #x3f9f900 - #x7100e00 - #xff0601ff - #xaefebf3 - #x2121e - #xfe00fefd - #xfdff110b - #x70c0b08 - #xfcfafc01 - #xa1107f9 - #x50202 - #xebf2f8 - #xfa071a1c - #xfd0803f7 - #x1070c01 - #x7080403 - #xfaff0001 - #xb0cfcfc - #x70605 - #xf9f0fafa - #xff101a12 - #x51100ee - #x904fffd - #x402fd06 - #x1070200 - #xa01fb07 - #x6090705 - #xf7fbf8fa - #xb131503 - #x1306eff7 - #x3fbfe06 - #x2fd030c - #x9030003 - #x4fe0108 - #x7090301 - #xfdfbf9fe - #xd090a03 - #x10fcf002 - #xf9f80a12 - #x1ff080a - #x7030204 - #x2000303 - #x303fd00 - #xfcf90003 - #x4010705 - #x6fcfb06 - #xf5061710 - #x4020700 - #x3050606 - #x2000101 - #xfcfdfb00 - #xfafd0902 - #xff020703 - #x401ff00 - #xfe14180a - #x702fffa - #x4090808 - #xff0005 - #xf5fafb01 - #xfc070cfa - #x10502fe - #xa03faf8 - #x919120a - #x8fef9fd - #x80b0a0c - #x7 - #xf5faf9ff - #x10c06f2 - #x904fcff - #xbfef3f9 - #xc131413 - #x3fafd02 - #xb0c0c0e - #x300ff09 - #xf6f6f7fe - #x409fef1 - #xc00fb03 - #x3f5f301 - #x9121d19 - #xfffe0102 - #xd0d0e0c - #x4fdfb0d - #xf2f2f700 - #x103faf3 - #x7fc0105 - #xf9f4f707 - #x6161f14 - #x30701fd - #x110c0c08 - #xf70114 - #xecf6fe00 - #xfdfefaf3 - #x4000601 - #xf7f9fb08 - #xb1d1f09 - #xc0cf8fb - #x14070806 - #xfaf80c15 - #xef0100f8 - #xfcfaf8f0 - #x50604fd - #xfffdfd07 - #x121f1901 - #x1106f301 - #xe00070a - #xf7ff140e - #xfc0bfaf0 - #xfbf4f4ef - #x808fffd - #x6fe0007 - #x131c0f02 - #x10fef80a - #x4000a0e - #xfd051004 - #xa09edee - #xf5ebf3f7 - #x905fd00 - #x6ff0407 - #xe140a09 - #x9fd040c - #xff030d0f - #x1050802 - #xfffe7f4 - #xeae6f902 - #x9040000 - #x5030704 - #x90e0b0c - #x4020c09 - #x80c0c - #x1000307 - #x9f5ecfb - #xe1eb030a - #xa0705f6 - #x50a0500 - #x80a0d0d - #x40a0e05 - #x7070707 - #xfbfc060c - #xf8f6fb - #xe0f70906 - #xf0a00ea - #xa0bff01 - #x8060d0c - #x9110b06 - #xa010205 - #xf7ff0d0b - #x1f9f4 - #xe8ff05ff - #x1307f6e6 - #xc07fd09 - #x6050d0c - #xf12090a - #x5fb0007 - #xfa050e02 - #x907f2ed - #xf2fafdfe - #x1000f0ee - #x9010211 - #x3060e0c - #x11110d0c - #xfcf8020a - #x30905fb - #x11ffe9f1 - #xf0f0fd06 - #x8faf7f8 - #x5050b0f - #x3070b09 - #x1011120b - #xf7fa040c - #x805fcf9 - #xbf3e9fb - #xe5ef050e - #x2fe00f7 - #x60f0c06 - #x6050605 - #xe14150b - #xfafe060c - #x5fcf4fe - #xfceef301 - #xe1fa0f0d - #x60502ec - #xd1405ff - #x8fe0106 - #xe19180f - #xff060a - #xfff6f805 - #xf1f6ff00 - #xec080e00 - #xe07f8e4 - #x150cfb04 - #x2f7040c - #x101d1812 - #x5000606 - #xfbf50008 - #xf10200f9 - #xfe0b04f4 - #xfffedeb - #x1301fb0f - #xf8f70a11 - #x121f1a0f - #x5000502 - #xfaf70708 - #xfb07f8f5 - #xb02f8ef - #x4f3edfe - #xafe0813 - #xf302100e - #x181f1a07 - #x3000102 - #xfcfa0a08 - #xf1f8 - #x6f6f6f3 - #xf6f1fb0d - #x5061109 - #xfa0e0c06 - #x1c1d1500 - #x300fe06 - #xfdff0c08 - #xfdfaf2fe - #xfdf3f9f4 - #xf1fa0a11 - #x9130ff7 - #x60f0302 - #x18161102 - #x4fdfc0a - #xff030b08 - #xf8faf900 - #xf8fafbf0 - #xf904110e - #x1116ffea - #xe04fd05 - #xf100f0b - #x4fbfd0b - #x2080c08 - #xf8fefefe - #xfe00f4eb - #x309110a - #x160befef - #x9f7000f - #x90e1213 - #x4f9fd07 - #x50b0d07 - #xfd03fffe - #x6fdeceb - #x7071010 - #xffeedfb - #xfef60b13 - #x80f1411 - #x1f7fc04 - #x90e0d02 - #x104fd00 - #x5f1e9f1 - #x1041517 - #x4faf601 - #xf701140e - #x90f1107 - #xfdf6fc04 - #xc1006fc - #x303ff02 - #xfceceff7 - #xfd081d17 - #x1fefc - #xfd0b0f02 - #x90b0901 - #xfaf9ff05 - #xe0dfefd - #x2040205 - #xf4f1f6f9 - #xff101f10 - #x60afcf4 - #x40b03fd - #x6050303 - #xff000104 - #xc05f904 - #x4080705 - #xf4f9f8f9 - #x9151a06 - #x110af2f3 - #x700fc01 - #x3ff000a - #x8050002 - #x6fd0308 - #xa080407 - #xfbf9f600 - #xe140ffd - #x12f6ef03 - #xfbfb020f - #xff0b07 - #x6000104 - #x1ff0604 - #x9050004 - #xfcf8fb04 - #x8080901 - #x8f3f90a - #xf4020f12 - #x20cff - #x2010406 - #x201 - #x2fffe05 - #xf9fd0403 - #x50901 - #x3fa0105 - #xfc14130a - #x20405f7 - #x2060707 - #xff0004 - #xfcfbfe04 - #xfa0707fc - #x606fe - #x500fefe - #x91a0f07 - #x400fdf9 - #x7090909 - #xfefe0009 - #xfafafe02 - #x10f02f5 - #x70400fc - #xafef7fd - #x11160d0d - #x1fcfb01 - #xc0b0b0b - #xff010b - #xfaf8fb00 - #x70efaf2 - #x8feff00 - #x4f7f404 - #xe121713 - #xfefc0005 - #xc0b0e09 - #x1fd020c - #xf7f4f901 - #x706f7f4 - #x3fb0203 - #xfcf3f90c - #xb191f11 - #xff020002 - #xd0c0e04 - #xfff8040f - #xf0f3fc03 - #x201f8f3 - #xfe0801 - #xf8f5fd0c - #xd1f1e06 - #x806faff - #xe0b0b01 - #xf7f70f0f - #xeffcfe00 - #xfffef7ee - #x20504fe - #xfdf90009 - #x141f1500 - #xf02f501 - #xa070807 - #xf4ff1809 - #xfb03f9f8 - #xfdfaf4ec - #x607fffd - #x2fb0107 - #x181f0e01 - #xefaf908 - #x204090d - #xf9071401 - #xa01eff4 - #xf6f4f0f2 - #xa04fe00 - #x3fd0508 - #x171a0907 - #x6f8020b - #xfd060c10 - #xff090aff - #x11f7e8f8 - #xeceff400 - #x90102fd - #x1010708 - #x11110b0b - #x1ff0909 - #xff080d0d - #x1050402 - #xbeeebfe - #xe3f1ff0a - #x80306f4 - #x3070506 - #xd0c0e0a - #x2080907 - #x3090a07 - #xfdfe0607 - #xeff4ff - #xe2fc080a - #xa0803e7 - #x9090006 - #xa0b0f09 - #x90e0606 - #x6050604 - #xf8000d07 - #xfef8f8f9 - #xea030601 - #xf07f7e2 - #xe03fe0d - #x70a0e0b - #xf0e0508 - #x2000305 - #xf9060f00 - #x5fff3f2 - #xf30200ff - #xf00efe7 - #xaff0314 - #x40b0e0d - #x110d0908 - #xfbfc0309 - #xa09f9 - #xffaeaf3 - #xf4fafb04 - #x7f9f2f2 - #x5010c14 - #x40c0d0b - #x100e0d07 - #xf5fd060d - #x607fff7 - #xbefe8fb - #xebf6020e - #xfafef3 - #x50a0e0c - #x70a0906 - #xf120f07 - #xf6ff090d - #x6fff9fa - #xffeaf103 - #xe5fd0d0f - #x10001ea - #xd100805 - #x7040405 - #xf15100b - #xfa010a0a - #xfff6faff - #xf1f0fc05 - #xec090f04 - #x907f9e1 - #x160bfe05 - #x3fd030a - #x131a130f - #xfe020906 - #xf7f30201 - #xf3fdff00 - #xfc0e06f6 - #xc01ece6 - #x15fffc0f - #xf9fd0911 - #x181d170c - #xfe030705 - #xf6f70901 - #xfd02f9fb - #x807fbf0 - #x7f6e9f7 - #xafb0714 - #xf3040e12 - #x1b1e1902 - #xfe040205 - #xf6fc0b01 - #x5fdf2fb - #x5fdf3f3 - #xfaeff608 - #x304130d - #xf90e0e0c - #x1d1d14fa - #xff02ff0a - #xf7000b02 - #x3f5f1fe - #xfbf8f5f7 - #xf3f6080c - #x71010fc - #x60f0606 - #x1b1a0dfc - #xfffe10 - #xfa040c03 - #xfdf3f7ff - #xf5fcf7f6 - #xf6021306 - #x111401f1 - #xe050007 - #x16150a06 - #xfb0011 - #x70c03 - #xf9f8fdfe - #xfa02f4f1 - #xa1300 - #x180bf0f2 - #x8fa010e - #xf120e0f - #xfff9020b - #x40a0d02 - #xfdfefdfe - #x2feebef - #x60a1005 - #x14fbecfe - #xfdf90b14 - #xc12130e - #xfdf80006 - #x80d0c00 - #x200fc00 - #x3f3e8f3 - #x309140e - #x9f4f304 - #xf6031212 - #xd121305 - #xfaf6ff05 - #xc0e08fb - #x4fffd05 - #xfbececf9 - #xfd0a1d11 - #x1f9fd00 - #xfa0f1008 - #xc100dfc - #xf6f70007 - #xe0c00fa - #x3000007 - #xf2eff3fb - #x131f0a - #x602fcf8 - #x5100500 - #x90a06fe - #xf9fb0207 - #xe05fd00 - #x4030309 - #xf2f7f5fb - #x7181c00 - #xf03f4f8 - #x906fc01 - #x4030305 - #x305 - #x8fe0007 - #x9090508 - #xf8faf6fe - #xe1713fd - #x15fbeeff - #x1fcff0b - #xff080a - #x6020004 - #x1000803 - #xb050309 - #xfcf4fa07 - #xf1307ff - #x4eefa0a - #xf8ff0a14 - #xfe050dff - #x303 - #x30500 - #x7000206 - #xf9f80008 - #x60b0700 - #xfdf50408 - #xfb0d110f - #x808f5 - #x20703 - #x10002 - #xfc0305 - #xfa030401 - #x20a07fc - #xfe0300 - #xa170d08 - #x206fdf7 - #x4070904 - #xfeff0008 - #xfbfb0302 - #x10c00fa - #x50801f9 - #x400fcfe - #x14140a0a - #x100f900 - #xa0a0a06 - #xfdfe040b - #xfbfb00ff - #xb0cf7f6 - #x601fefd - #x4f8f804 - #x1410100f - #xfefcfc09 - #xb0b0c05 - #xfeff060b - #xf9f7fd00 - #xd04f4f8 - #xfd0102 - #xfef3fc0b - #xf16190e - #xfeff0008 - #xb0d0c01 - #xfdfc080c - #xf3f4fd02 - #x9fff7f8 - #xfcff0504 - #xf8f4030a - #x101f1a07 - #x301ff03 - #xb0e09ff - #xf7fb0e0c - #xeff70003 - #x3fff8f1 - #xff050400 - #xfaf80507 - #x161f1100 - #x9fff902 - #xa0c0502 - #xf2021307 - #xf7fdfefc - #xfdf2eb - #x608ffff - #xfcfb0505 - #x1c1f0900 - #x9f9fa09 - #x408050c - #xf60c1100 - #x4fcf6f5 - #xfcf9edf1 - #x904feff - #xfdfe0607 - #x1e190806 - #x3f7010e - #x70910 - #xff1008fe - #xbf4eff5 - #xf3f3ef00 - #x80002fc - #xfd01070a - #x19120b09 - #xfefc050e - #x90d0d - #x20b0100 - #x5ebf0fb - #xeaf3fa0c - #x50206f2 - #x5060a - #x130e0f08 - #x4050b - #x40a0b06 - #x40304 - #xfbeaf6ff - #xe8fa050d - #x60801e6 - #x706030a - #xe0f0e06 - #x6090309 - #x6090802 - #xfa010905 - #xf6f2fcfb - #xef040905 - #xc09f5e0 - #xc01020d - #xb0f0c09 - #xd0a0308 - #x4050404 - #xf9070d00 - #xfff9f7f4 - #xf9050200 - #xd01eae4 - #x9fe0713 - #x80f0d0d - #xf080607 - #xfe010309 - #xff0d07f9 - #x6f7eff3 - #xfb00fd05 - #x7f8ebee - #x2ff0e15 - #x80f0e0d - #xf0a0905 - #xf800060d - #x70bfff6 - #x7edebfa - #xf4f9010e - #xfef7f6f2 - #x108120f - #xa0e0c08 - #xe0d0a05 - #xf701090e - #x703f9f7 - #xfbe7f202 - #xedfd0c11 - #xfe00fcea - #xa0e0d07 - #xa0a0605 - #x10100a08 - #xf9040b0c - #xfbf9fa - #xefebfb06 - #xf0071209 - #x406f6e1 - #x130a0405 - #x6030309 - #x13130d0c - #xfc070a09 - #xf7f600fc - #xeff70003 - #xfd0f0af9 - #xc03e8e3 - #x15ff000c - #xfd000713 - #x1717140a - #xfe080707 - #xf2fa03fd - #xfbfdfdfd - #x80bfcf2 - #x8f7e4f3 - #x8fb0911 - #xf7050e16 - #x1b1a15ff - #xff07020b - #xf30005ff - #x4faf7fa - #x801f4f6 - #xfeeff002 - #xff02140f - #xfb0c1010 - #x1d1b10f7 - #x4ff0f - #xf6040500 - #x3f3f6fa - #xfdfaf3fe - #xf3f30407 - #x1101202 - #x60e0c09 - #x1d1a07f8 - #x2000014 - #xf9060601 - #xfbf0fafa - #xf8faf6fe - #xf4001000 - #xf1505f6 - #xe070507 - #x1a160303 - #x1fd0316 - #xfd090800 - #xf6f4fdf9 - #xfafdf5fa - #xfd0c10fa - #x190bf6f5 - #xafe040e - #x1512070d - #xfefd0510 - #x30b0aff - #xf8fafdfb - #x2fceff5 - #x5100bfd - #x17faeffc - #xfefa0a17 - #x12120e0d - #xfbfc0409 - #x60c0afc - #xfffcfc00 - #x3f2ebf7 - #x50e0c05 - #x9f0f604 - #xf7031217 - #x11131203 - #xf8fb0208 - #x90e07f8 - #x1fbfd04 - #xfdebedfd - #x20f140b - #xfff4ff02 - #xfb0e120e - #x10130cfa - #xf4f90208 - #xd0c02f6 - #xfb0108 - #xf3ecf2ff - #x1151d06 - #xfffd00fb - #x8120905 - #xd0e04fa - #xf3fc0509 - #xd07fff9 - #x1ff040a - #xf2f2f5ff - #x91d19fd - #x900f7f8 - #xd0a0004 - #x8080101 - #xf9000506 - #x8010000 - #x404050b - #xf7f5f500 - #x111e10f8 - #xef8f2fe - #x8fffe0c - #x3030508 - #xff010304 - #x2ff0704 - #xb07040a - #xfcf5f905 - #x121709fd - #x9f0f507 - #xfbfb0714 - #xfe020c05 - #x1000203 - #x10605ff - #x8020606 - #xf7f4010b - #x110f03ff - #xf4f40309 - #xfb051310 - #xb06f8 - #xfe020600 - #x2050000 - #x1ff0704 - #xf8fc0508 - #x90c05fc - #xf5ff0601 - #x7101107 - #x40bfcf6 - #x607ff - #x5 - #xfb000701 - #x60200 - #x80a01f9 - #xff0200fe - #x14100b06 - #x503f600 - #x70a0700 - #xfefe040a - #xf90004fe - #xa07fbfb - #x705fcfb - #x2fdfc02 - #x150d0c0b - #x1fdf90b - #xa0b0802 - #xfd00070b - #xf9fe00fc - #x1000f6fb - #x200fc05 - #xfef60008 - #x1010140c - #xfefd000d - #xb0c0900 - #xfc00090a - #xf5faffff - #xbfaf8fb - #xfd000009 - #xf8f70607 - #x121c1507 - #xff0109 - #xb0e06fe - #xf9000b0b - #xf1f80000 - #x6fbfaf6 - #xfd040207 - #xf6fc0a00 - #x181f1000 - #x4fe0007 - #xc0d0201 - #xf5050f0a - #xf2fb01fc - #x2fef5ee - #x4070003 - #xf8ff0800 - #x1f1f09ff - #x3f9fc0b - #xb09010a - #xf90e0a05 - #xfcfcfdf3 - #xfaecf0 - #xa04fe01 - #xf8010704 - #x1f170803 - #xfef60014 - #x705060f - #x1110302 - #x1f6f5f1 - #xfbf3eefe - #x80001fe - #xfa03070a - #x1e100b05 - #xfbfa0416 - #x5070b0c - #x80efe02 - #xfeeef3f6 - #xf2f0f90b - #x30203f6 - #xfe05090b - #x160f0e03 - #xfd000413 - #x70a0d06 - #x506ff05 - #xf3ecf7fc - #xeff6060e - #x408feeb - #x4060809 - #x11110d03 - #x304040f - #x80a0801 - #x30306 - #xedf1fcfc - #xf3000c06 - #xa09f1e4 - #x802060a - #xe120b07 - #x804040c - #x7070404 - #xfd070803 - #xf4f8faf5 - #xfd0607ff - #xe02e5e6 - #x7ff090f - #xd110b0d - #xb030509 - #x3030309 - #x10d05fe - #xfff8f3f2 - #x10002 - #x8f7e4f0 - #x1113 - #xd100e0d - #xb050706 - #xfe01050e - #x70dfdf9 - #xfff0eef5 - #xfbfb030b - #xf3eef5 - #xff071510 - #xd100e08 - #xb080605 - #xfb01090f - #xb07f7f8 - #xf6e8f100 - #xf4fc0e10 - #xfbfbf6f0 - #x50f1206 - #xe0d0904 - #xd0b0609 - #xfc050b0e - #x4fef6fa - #xebebfb05 - #xf4051408 - #x203f1e7 - #xf0d0902 - #xa080408 - #x100d0a0c - #xfe080a0c - #xfbfaf9fc - #xe9f40103 - #xfe0f0ffb - #xb02e5e6 - #x10030506 - #x3030611 - #x14101009 - #x10a070d - #xf5fcfdff - #xf3fc01fd - #x90f00f3 - #xcf7e0f2 - #x8fe090f - #xfd030f17 - #x16151300 - #x308020f - #xf600fd00 - #xfefcfdf6 - #xb03f6f7 - #x1ecea00 - #xfc04130e - #xfe091512 - #x1a190cf8 - #x5030115 - #xf904fd02 - #xfff6faf4 - #x3faf400 - #xf5effd05 - #xfd101506 - #x70d1208 - #x1c1802f9 - #x6ff0318 - #xfd070003 - #xf7f2fbf4 - #xfbf7fa04 - #xf3fe0a00 - #xb1608fa - #xd0a0904 - #x1c13fc01 - #x3fc0919 - #x80201 - #xf0f6fdf4 - #xfcf9fbff - #xfc0b09fa - #x170dfbf6 - #x902060b - #x190e020b - #xfe0a17 - #x30a04fe - #xf1fafcf7 - #xf8f7f9 - #x61103fb - #x16fdf4fb - #xff0b17 - #x150e0b0b - #xfc000911 - #x70c05fb - #xf8fcfbfc - #x2f2f2f8 - #xb0f0202 - #x8f2f801 - #xf902131b - #x13111003 - #xfafe040c - #xa0d03f8 - #xfdfafd01 - #xfceaf2fd - #x80f0b09 - #xfaf40001 - #xfe0d1712 - #x13130af9 - #xf6fd030d - #xc0dfff4 - #xfbfa0005 - #xf4e9f600 - #x7161305 - #xf8fc01fd - #x7121008 - #x120f00f8 - #xf4fd050c - #xd09fcf4 - #xfbfe0509 - #xf0eefa00 - #xc1d13fc - #xfbf9 - #x100b0504 - #xe09fc02 - #xf601060a - #x904fefa - #xff02060b - #xf5f2fa00 - #x151f0af8 - #x7faf5fd - #xc00020a - #x8040009 - #xfc030406 - #x40201ff - #x504070a - #xf9f1fa03 - #x191b02fa - #x2f1f605 - #x2fb0812 - #x2040708 - #xff020303 - #x1050600 - #xa040608 - #xf8f1000a - #x14120200 - #xf8f10009 - #xf9ff1114 - #x80aff - #xff010401 - #x50700fe - #x2030802 - #xf3fb070a - #x110a03fb - #xf0ff050a - #xd1602 - #x60afdf9 - #xff0604fd - #x401ff01 - #xfc040801 - #xfb020704 - #xc0b01f8 - #xfa050102 - #xe100eff - #x906f500 - #x40a02fd - #xff0208 - #xfa0705fe - #x60300fd - #xc06fafc - #x100fd03 - #x120b0a03 - #x6fdf80c - #xa0a0201 - #xfd00070b - #xfc0500fc - #xcfefcfb - #x700f905 - #xfffa0006 - #xf0c0f08 - #xf90011 - #xc0b0401 - #xfd02090b - #xfa00fefc - #x9f7fcfc - #xffff0e - #xf7fb0604 - #xf151306 - #xfefd060d - #xc0b0300 - #xfc03090c - #xf5fcfffd - #x3f8fdf8 - #x1030d - #xf50009fe - #x191d0f00 - #xfe030a - #xe0b0000 - #xfa060a0d - #xf3fe00f9 - #xfcfaf2 - #x4050308 - #xf70506fc - #x1f1a08fe - #xfc000f - #xf060006 - #xfd0c090c - #xf700fff2 - #x1fbf0f0 - #x8020004 - #xf8050300 - #x1f1607ff - #xfdf90016 - #xc02040c - #x60f0208 - #xfbfcf7ef - #xfff2eff9 - #x6000102 - #xfb040509 - #x1e100a00 - #xf8fa051b - #x9040b08 - #xd0bfe06 - #xf8f5f2f5 - #xf7edf905 - #x30101fd - #xff05080b - #x190f0dff - #xf9fe081b - #x8070d03 - #xc04fe07 - #xeff0f5fd - #xf1f10808 - #x307fdf3 - #x2060a08 - #x12130aff - #x10815 - #x90a0900 - #x4000208 - #xeaf3faff - #xf4fe0f01 - #xa08f0ec - #x6050906 - #x12130803 - #x4010810 - #x9080402 - #x40507 - #xeef9fbf9 - #xfc070bf9 - #xf00e4ec - #x4030a0b - #x11110a0a - #x501070c - #x7040308 - #x30b0402 - #xf7faf5f3 - #x20503fb - #xbf3e1f4 - #xff031011 - #x110f0e0d - #x502060a - #x200060d - #xa0bfdfe - #xfbf4eef6 - #xfe0304 - #xeeeafa - #xfc0a1510 - #x11101006 - #x6050409 - #xff010a0e - #xd04f7fc - #xf4ecf0ff - #xf8fd0d0a - #xfbf3f2f7 - #x3111408 - #x10100c01 - #x906040b - #xff040c0e - #x9fef4fc - #xe9ebf806 - #xf6051705 - #xfdf0ef - #xc120c00 - #xf0b0505 - #xb07080d - #x80c0d - #xf9f5ff - #xe6f40004 - #xfd1013f8 - #x9fee5ec - #xe0a0602 - #x805070e - #xd0b0d0c - #x409080e - #xf9faf702 - #xeefc02fd - #x71205f0 - #xdf4e0f3 - #x603080c - #x2030f14 - #x10110f04 - #x8060612 - #xfafff805 - #xf9fffff5 - #xd09f9f4 - #x3e8e600 - #xfc051011 - #x71711 - #x15160bfc - #x9010515 - #xfe00fa06 - #xfbfbfbf2 - #x7fcf8fe - #xf6e9f806 - #xfd101409 - #x50d1606 - #x1b16fffc - #x8fe0818 - #x1fd05 - #xf5f9f9f2 - #xfef6fd02 - #xf1f70403 - #xa160dfe - #xb0e0d00 - #x1c0ff902 - #x4fd0d1a - #x2020002 - #xeff9f8f4 - #xfbf702ff - #xfb0703fc - #x160ffff6 - #xa080506 - #x1908fe0a - #xff101a - #x50501ff - #xf0fcf7f7 - #xfef900f7 - #x70efdfc - #x1501f8f9 - #x1030a15 - #x1508090a - #xfd010f17 - #x80800fd - #xf5fcf7fb - #xfff5f9f4 - #xe0bfc02 - #x8f7f900 - #xfb05141b - #x130d0e01 - #xfc010a14 - #xb0afffa - #xfafbf900 - #xfbedf7f9 - #xd090208 - #xf9f50003 - #xfd0c1b15 - #x13110af9 - #xfbfe0712 - #xd0afcf7 - #xf9faff04 - #xf2ebfafe - #xc0f0d05 - #xf4fd0100 - #x6131707 - #x130ffff9 - #xf7fe0712 - #xe07f8f5 - #xf8fe0307 - #xeeeefefe - #x10180efd - #xfb01fdfd - #xf100c01 - #x1107f900 - #xf700080f - #xc04f7f8 - #xfa02060a - #xf0f2fffd - #x191c07f7 - #x2fdf500 - #xe050505 - #xb02fd0b - #xfc04060c - #x702fbfd - #x105070a - #xf4f2fdff - #x1e1800f9 - #xf4f608 - #x4fe0a0d - #x501050c - #x30408 - #x404ffff - #x6040707 - #xf4f30005 - #x1c10fefe - #xf5f2fd0e - #xfd00140f - #x2060804 - #x10303 - #x50700fe - #x5030804 - #xf2f7060b - #x130b03fe - #xeefb050b - #xfc071606 - #x50b02fc - #xff0404fe - #x701fd00 - #xff080703 - #xf5020a05 - #xf0801f4 - #xf902030e - #x7150df6 - #xa03f9fe - #x3080000 - #x2fd0007 - #xfe0a0501 - #x505fd - #xd07fcf8 - #x202ff09 - #xe1006fb - #x8fbf909 - #xb09fe03 - #xfeff060c - #x10900ff - #x600fffa - #xa00f903 - #x2fd0009 - #xc0d0903 - #x1f80210 - #xd060005 - #xfe02090c - #x304fcfd - #x4fbfdfa - #x3fb000e - #xfbfc0407 - #xc110e04 - #xfdfb0a0e - #xc060103 - #xfe04090c - #xfefffcfd - #xfefafef9 - #xfe080e - #xf6030700 - #x14180e00 - #xfcff090b - #xd060100 - #xfe05090e - #xf8fefefa - #xfdfefbf4 - #x2020909 - #xfa0802fc - #x1e1908fb - #xfd000310 - #xe040002 - #x80a0f - #xf801fdf5 - #xfffef4f0 - #x7020705 - #xff08ff01 - #x1f1105fb - #xfcfd0319 - #xc000304 - #x60a070b - #xfb00f7f1 - #xf6f0f4 - #x5000405 - #xff050009 - #x1d0e05fb - #xfafb081e - #x7000a04 - #xe070407 - #xfaf9eff8 - #xfaedf7fd - #x1000302 - #x4070b - #x191106fb - #xf9fd0f1f - #x4070eff - #xd010306 - #xf3f3f001 - #xf2f10400 - #x204fffb - #x3070b07 - #x141406fd - #xfc00111a - #x50a0afe - #x6fd0408 - #xecf3f705 - #xf1ff0dfa - #x905f5f2 - #x5080a05 - #x15140400 - #xff000e12 - #x7090500 - #x1000608 - #xeff8f900 - #xf90b0af2 - #xefce9f0 - #x4070909 - #x150f0607 - #x10b10 - #x7050404 - #x2050505 - #xf6faf6fa - #x10c02f2 - #xbf0e5f6 - #x70d11 - #x140d0c08 - #x103080f - #x4010608 - #x9080101 - #xfbf6effa - #x20400fb - #xe8ebfd - #xfe0b1313 - #x12100f04 - #x203060d - #x10b0b - #xe02fbfe - #xf6eeee01 - #xfc000902 - #xf7ecf4fd - #x313140a - #x12120bff - #x403050e - #xff040e0a - #xafbf7fe - #xecebf508 - #xf8071200 - #xfaf5f4f6 - #xd150e01 - #x110f0501 - #x604080f - #x70d0b - #x1f7f600 - #xe6f1ff09 - #xfc1511f4 - #x4f8ebef - #x100f0501 - #xd070409 - #x7070c0e - #x5090c0c - #xfcf7f805 - #xecfa0201 - #x71705eb - #x9efe4f5 - #x908050a - #x6030e11 - #xb0d0e09 - #x8070a0e - #xfbf8fa08 - #xf600fff8 - #xd0efaee - #x1e5e800 - #x1070c13 - #x209170e - #x11130801 - #x9020b11 - #xfefafb07 - #xfbfff9f4 - #xb01f7f8 - #xf4e4f607 - #xfe0f1310 - #x4101602 - #x1813fffe - #x6ff0d15 - #xfb0005 - #xf8fbf5f6 - #x1f9ffff - #xeef20206 - #xa151001 - #xa130cfd - #x1a0cf902 - #x1001118 - #x2fd0301 - #xf3faf3fa - #xfafa05fc - #xf6010200 - #x171104f8 - #xb0e0403 - #x1804fd08 - #xfd03141a - #x2fe03fe - #xf3fbf3fc - #xfafe03f4 - #x508fcfd - #x1605faf8 - #x5070611 - #x11020609 - #xfc051419 - #x50200fd - #xf8faf3ff - #xfbfdfcf0 - #xf05fa00 - #x9fbfa00 - #x7131a - #xe080b02 - #xfc051117 - #x803fefc - #xfbf7f502 - #xf8f7f7f3 - #xe010003 - #xfbf9ff08 - #xff0e1c13 - #x100f07fa - #xfd020e15 - #xb05fcfa - #xfaf8fb05 - #xf2f1f9f9 - #xa050903 - #xf5fe0107 - #x6161a05 - #x120efff8 - #xfaff0d15 - #xd03f8f7 - #xf8fb0009 - #xecf4fefa - #xf100dfb - #xfb01fe03 - #xf1610fe - #x1106f800 - #xf9010d13 - #xc00f5f9 - #xfb00030b - #xedf8fff8 - #x181606f5 - #x1fff805 - #xf0f07ff - #xcfffd0a - #xfd030b11 - #x900f5fe - #x4050b - #xf0f9fdfa - #x1f14fff5 - #xf6f60d - #x7050806 - #x5ff050e - #x103080c - #x700fa00 - #x5040609 - #xf1f7fe00 - #x1d0bfff9 - #xf7f2fc15 - #xfe041209 - #x2030a08 - #x2010508 - #x702fdff - #x4040705 - #xf0f90305 - #x160702f9 - #xf0f80316 - #xfc0c1701 - #x40706fe - #x20402 - #x803fdff - #x60703 - #xf1000907 - #xf0804f6 - #xf4000510 - #x11311f8 - #x907fcfc - #x10701fe - #x3fdff07 - #x3090507 - #xfc0807ff - #xd07fbf3 - #x1000510 - #xd1600f5 - #x7fdfc02 - #xa03fc06 - #xfefd040d - #x70a0103 - #x30600fa - #xb01f8fd - #x4fc020e - #xd0e0000 - #xf7020b - #xe01ff0a - #xfd02090d - #xb04fdff - #x100fbfc - #x4fb0007 - #xfefc060c - #xb0e0703 - #xfafb0b0c - #xb000207 - #xff050b0b - #x6fffcfe - #xfdfefbfe - #xfffb0b0b - #xfa010605 - #x10130aff - #xfa010c0a - #x9020302 - #x60a0c - #xfffcfdfc - #xfa00fbfa - #xfe011005 - #xfe070100 - #x191506fa - #xfc03070f - #xa0302ff - #x1060c0d - #xfcfffbf9 - #xff00f5f4 - #x2040c01 - #x306fd01 - #x1e1101f9 - #xfe000619 - #x9000200 - #x5070e0a - #xfe00f6f8 - #xf9f0f3 - #x3020803 - #x601fe08 - #x1a0d00fb - #xfcfe0b1f - #x40106ff - #x8060b05 - #xfffaeffd - #xfdf1f3f8 - #x10605 - #x401050b - #x160f01fb - #xfafe111f - #x609fc - #x8010803 - #xf9f1ef07 - #xf2f2fffc - #x10403ff - #x4060b06 - #x1512fffc - #xfa00181b - #x10c08fa - #x4fe0704 - #xf3eff60a - #xefff06f7 - #x604fcf6 - #x5090b04 - #x16120000 - #xfc031615 - #x50b04fd - #xffff0806 - #xf1f3fc07 - #xf70e04ef - #xbfdf2f0 - #x50a0709 - #x180d0204 - #xfe040f13 - #x6070300 - #xff030805 - #xf7f7f900 - #x110fdee - #x7efecf5 - #x3090a12 - #x160b0906 - #xff050b13 - #x4040602 - #x4040502 - #xfbf5f3fe - #x509faf5 - #xfde7effd - #x20b1114 - #x130f0c01 - #x40812 - #x40903 - #x80200ff - #xf9eef002 - #x300fe - #xf2e8f7ff - #x512150e - #x131308fd - #x2030711 - #xfe060c05 - #x7fcfcfe - #xefe9f60c - #xfc090bfd - #xf3f1f9fa - #xe160f01 - #x131102ff - #x2020911 - #xff0a0d06 - #xf7fa00 - #xe9edff0d - #xff140cf3 - #xfcf5f3f3 - #x13130600 - #x110a0207 - #x3050d11 - #x30b0c07 - #xfaf5fb04 - #xebf80405 - #x91b02ea - #x2efeaf4 - #x10090309 - #xa040a0f - #x50b0e0d - #x7090b07 - #xf9f5fe07 - #xf4ff00fd - #x1213f6ea - #xfce4ecff - #x7060a13 - #x308130d - #xd110906 - #x6060c0a - #xfaf60106 - #xfcfffafa - #x1003f3f2 - #xefe3f608 - #x40b1210 - #x4131404 - #x15110101 - #x3040e0e - #xfbf70302 - #xfbfbf4fa - #x5fbfafa - #xe9ee0109 - #xa131403 - #x9190afd - #x1809fa01 - #xfe051214 - #xfbf906fe - #xf9f7f2ff - #xfcfe01fa - #xf1fd0302 - #x16140af7 - #xe120001 - #x1401fe06 - #xfb091518 - #xfdfd04fc - #xf9f6f300 - #xf90202f4 - #x3fffd - #x170afef7 - #xb09010f - #xf000508 - #xfb0c161a - #xff0001fc - #xfbf5f401 - #xfc04faef - #xa00fcfd - #xcfffa00 - #x4060f19 - #xa040803 - #xfd0b1517 - #x301fffc - #xfcf3f503 - #xfafff5f2 - #xafc0000 - #xfffbff0b - #x30e1c15 - #xd0c03fd - #xfe091314 - #x600fdfb - #xfbf3f906 - #xf5f9f5f7 - #x60008fe - #xf9fe030d - #x7191c06 - #x110bfcfa - #xfc061213 - #x800fbf8 - #xf8f6ff0a - #xf0f8fafa - #x7090cf9 - #xfc00020a - #x101d10fc - #x1005f7ff - #xf9041214 - #x8fef7f9 - #xfafc030d - #xeffcfcf7 - #x121106f2 - #x2fffd0a - #x131505fd - #xbfffb08 - #xfb071113 - #x7fbf6fd - #x50d - #xf1fefaf7 - #x1a1000f1 - #x1f7fb10 - #xd0c0402 - #x4fd050d - #x60d0f - #x5fbf800 - #x402070b - #xf3fcf9fc - #x1b0afdf4 - #xfaf2ff1b - #x3090c06 - #x10c08 - #x2030b09 - #x6fdfc00 - #x4020709 - #xf1fbff02 - #x140501f5 - #xf3f6061d - #xf11ff - #x2070900 - #x20804 - #x6fefdff - #x1050708 - #xf2000604 - #xd0601f1 - #xf5fd0a18 - #x3180cf6 - #x60702fb - #x50402 - #x5fefd03 - #x1090608 - #xf8060801 - #xc08fef1 - #xfe010712 - #xa1902f3 - #x800fcff - #x707fe03 - #xfefd030c - #xa080607 - #x30900ff - #xc02f4f7 - #xb10 - #x130cfaff - #x1fc0007 - #xbfeff0a - #xfd000a0c - #xe040101 - #x403fa00 - #x5fbfb01 - #xfefc0a0f - #xe080105 - #xfafc070a - #x7fc0509 - #xff060c08 - #xafffffe - #xfffa04 - #xfdfc0905 - #xfa000a09 - #xf0d0701 - #xf8030b09 - #x3000701 - #x1080c07 - #x1fbfdfd - #xfcfffb03 - #xfb031002 - #xff050402 - #x151104fb - #xfd07080b - #x40204fc - #x2070d09 - #xfdfdfdfc - #xff00f8fc - #xff090dfe - #x603ff00 - #x1a0ffffa - #x40716 - #x50301fb - #x3081007 - #xfffef8fb - #x2fcf3f8 - #x2090800 - #x9ffff05 - #x180bfdfe - #xff010d1d - #x20101fd - #x5090f02 - #x1f9f3ff - #xf4f2f9 - #x1060604 - #x5fd0407 - #x140bfd00 - #xfc00161f - #xff0503fc - #x4060b00 - #xffeff206 - #xf5f1f8fc - #x50701 - #x3030b05 - #x140ffe00 - #xfa031b1b - #xb03fa - #x20602 - #xf6ecfa0b - #xeffdfef8 - #x50602f7 - #x40a0b03 - #x180cfd00 - #xfb061a17 - #x40b00fa - #xfc020605 - #xf1f00007 - #xf70afef3 - #x800f9f0 - #x60b0707 - #x1a090003 - #xfc081317 - #x70800fc - #xfd040705 - #xf4f60000 - #x40ef7ef - #x5f5f1f2 - #x7080910 - #x15070505 - #xff090e18 - #x60502fd - #x60602 - #xf9f5fafe - #xb08f4f4 - #xf9ebf2fc - #x60a1013 - #x120b0802 - #x60c16 - #x20505fe - #x40403ff - #xf9eff602 - #x702f9fb - #xeeeaf801 - #x810160c - #x121105ff - #x1040c14 - #x80700 - #x400fffd - #xf1e9f90a - #x10602fe - #xecf1fcfe - #xe161200 - #x151200ff - #x1020c13 - #xb0801 - #xfffbfb00 - #xe9ec010c - #x41205f5 - #xf4f6f8f7 - #x151408fc - #x1409fe07 - #x50f14 - #x30d0902 - #xfaf7fc03 - #xe9f50708 - #xd18feec - #xfbf2f0f6 - #x140c0302 - #xd04050f - #x30a1012 - #x70d0902 - #xf6f60006 - #xf1fe05ff - #x1712f3e9 - #xf7e9edff - #xd05090d - #x508100f - #xa0e0c0b - #x70a0903 - #xf6f70304 - #xfafffefc - #x1504eff0 - #xece5f509 - #x708130d - #x5131007 - #x120e0504 - #x3090a09 - #xf6f90600 - #xfefbf8fd - #xcfbf5f7 - #xe5ed000d - #xa111701 - #xb190801 - #x16080001 - #xff0a0e11 - #xf6fc06fc - #xfcf5f5ff - #xfdfcfa - #xebfb0406 - #x13160ff3 - #x1316ff03 - #x1100fe04 - #xfd0d1218 - #xf7ff01fb - #xfaf2f700 - #xfc04fdf6 - #xfa0101fe - #x160f02f3 - #x1207000f - #x9fe0309 - #xff101519 - #xf900fefd - #xfaf1f9ff - #xff07f8f4 - #x400fefb - #xf03fbff - #xa030a18 - #x7030607 - #x1111616 - #xff01fcfe - #xfaf1fa00 - #x103f2f6 - #x4fb00fd - #x3fcff0a - #x40a1915 - #x9080200 - #x20f1512 - #x100fcfd - #xf7f0fc03 - #xfdfbf3fa - #xfd05fd - #xfdfe060e - #x9181b08 - #xf09fafe - #xd1511 - #x2fffcfa - #xf5f30007 - #xf7f8f7fa - #x10607f8 - #xfe00080b - #x121f10fe - #x1001f600 - #xfd0c1413 - #x3fef9f8 - #xf6f8040b - #xf4fcfaf8 - #xa0f03f2 - #x2000409 - #x181b03fc - #x9fbf907 - #xfc0c1413 - #x3fbf6fc - #xfcfd080c - #xf7fff8f8 - #x150efdef - #x2fb0210 - #x150e0002 - #x2fb020d - #xc120f - #x2f8f800 - #x90c - #xf8fdf7fc - #x1608faf0 - #xfbf40519 - #xb090605 - #xff000a0c - #x1090f09 - #x1f9fdff - #x101090b - #xf7fbfa02 - #x1005fcf2 - #xf3f60d1f - #x50e0c00 - #x60b03 - #x70b03 - #x1fafefe - #x3090b - #xf6fd0105 - #xb06fdf0 - #xf4fc121b - #x81708f8 - #x40804fd - #xfe070701 - #xfbfe00 - #x106080b - #xf9040602 - #xa08f9ee - #xfa001113 - #xf18fff5 - #x705fffd - #x3060203 - #xfffc0009 - #x709070a - #x902ff - #xd06f4f4 - #x1000b11 - #x1312f8fa - #x3fefe03 - #xa01fe08 - #xfc010a09 - #xd070700 - #x704fc06 - #x8faf4ff - #xfb030f0f - #x1300fe02 - #xfeff000e - #x4fd0505 - #xff060d04 - #xb0102fc - #x3fdfc0c - #xfff90003 - #xf9020e0c - #xd040603 - #xfc03060b - #xfeff0900 - #x2090c01 - #x1fefffc - #xfb000b - #xfa030a01 - #xfd060a03 - #x110c05fd - #xff08060b - #xff0405fa - #x3090b03 - #xfcfdfefd - #xfc0004 - #xff0d08fd - #x40502fe - #x160dfffc - #x2070711 - #x20600f9 - #x30a0d05 - #xfdfdfbfe - #x3fbfafe - #x50e02ff - #x7ff0000 - #x1607fa01 - #x3040c19 - #x303fefc - #x40c0d02 - #xfaf7fe - #x1f5f5fd - #x50a0204 - #x3fc0403 - #x1306fd05 - #xff03161b - #x3fefe - #x50d0900 - #xfef1f702 - #xfaf2f6ff - #x3080603 - #xff010901 - #x1206ff04 - #xfc071c18 - #x5fffd - #x4090301 - #xf6edfe07 - #xf2f7fbfe - #x40807fa - #xa0a00 - #x1606ff02 - #xfc0c1b17 - #x508fefb - #x60106 - #xeef10502 - #xf702fbf7 - #x705fef1 - #x70c0605 - #x18020003 - #xfe0d161a - #xa05fdfa - #xfe060307 - #xeef806fe - #x408f6f2 - #x5fcf4f2 - #xa09070c - #x15030204 - #xc121c - #x904fefa - #x70405 - #xf4fafffb - #xe02f2f4 - #xfbf2f1fd - #x808110f - #xf070504 - #x2091119 - #x60400fb - #x4070201 - #xf5f4fbfe - #xcfcf6fa - #xeeeef704 - #x90f1707 - #x110d0301 - #x2061116 - #x30600fe - #x404ff00 - #xf0eefc04 - #x5fffefd - #xebf3fc03 - #xd1615fb - #x150d0002 - #x41114 - #x3080300 - #xfffb01 - #xe7ee0308 - #x50902f7 - #xf0f9fcfc - #x14170af5 - #x1607fe07 - #x51116 - #x70c0400 - #xfbfafb05 - #xe5f70a04 - #xf11fdee - #xf8f7f3fb - #x160f03fc - #xf000310 - #xa1216 - #xa0c04ff - #xf7f8ff07 - #xecff08ff - #x190ff4e9 - #xf6efee02 - #xf070704 - #x7040c13 - #x70e1111 - #xa0c0400 - #xf4f90206 - #xf60101fa - #x1b00eded - #xece9f30f - #x7081205 - #x60f100d - #x100d0b07 - #x80a0306 - #xf4fc0402 - #xfcfdfcfa - #xff8f1f5 - #xe5eeff13 - #x81117fb - #xe170805 - #x12070402 - #x40a070f - #xf4ff01ff - #xfcf6fbfa - #x3f9f8fa - #xe9f8050d - #xf1911ef - #x16110006 - #xe010005 - #x30c0d17 - #xf702feff - #xf9f2fcfb - #xff01fbfa - #xf6000402 - #x161603ed - #x1806000f - #x6fe020b - #x50f131a - #xfb02f901 - #xf5f4fef9 - #x204f7f8 - #xfffc - #x1208fbfa - #xf000b18 - #x201040d - #x8111614 - #xfd00f802 - #xf4f4fefa - #x700f3f9 - #x1fdfdfd - #x700fe06 - #x5061716 - #x5050207 - #x912160f - #xf902 - #xf2f4fefd - #x4f8f5fc - #xfdfd0000 - #xff080b - #x7151a0b - #xb05fc00 - #x711130f - #xfefaff - #xf0f50001 - #xfef5f9fc - #xfd0402fd - #xff020c06 - #x131f0f00 - #xdfff802 - #x4101411 - #xfef8fc - #xf0f80405 - #xf9f8fbf8 - #x50bfff7 - #x1040a04 - #x1c1b05ff - #x8f8f90a - #x2111413 - #xfcf5fd - #xf5fd0807 - #xfafcf9f7 - #x100df9f2 - #x1000609 - #x1b0f0002 - #xf70010 - #x4111310 - #xf9f600 - #xfb000b08 - #xfdfbf6fb - #x1407f5f3 - #xfbfb0a15 - #x12070405 - #xfdfe0711 - #x50f1008 - #xfef7fb00 - #xfd020b08 - #xfbf8fa00 - #xf03f5f3 - #xf3fa111b - #xa0a0900 - #x5090a - #x30d0c03 - #xfdf9fdfe - #xfd040c08 - #xf9f80103 - #xa04f6f4 - #xf0001918 - #xc1207fa - #x4080502 - #xb0700 - #xfcfbfdff - #xff060c09 - #xfa000501 - #xa06f4f1 - #xf6051812 - #x1414fef5 - #x707ff01 - #x30a0301 - #xfbfcfe05 - #x4070b07 - #x60300 - #xe04eff3 - #xfb06130e - #x180bf7f9 - #x502fc06 - #x7030105 - #xfcff050a - #xc080904 - #x607fe02 - #xbfdf1fc - #xfd040f0f - #x1501fb00 - #xffff0b - #x7fe0207 - #xff060c00 - #x90805fb - #x6fd000d - #xf6fa04 - #xfa09100f - #xafd03fe - #x412 - #xfb010800 - #x30a0afc - #x20200fb - #xf80710 - #xfbff0303 - #xfc0a0e05 - #x90605fb - #x105060e - #xfa0605fa - #x60a0700 - #xfb00fdfd - #xfefa0907 - #xb0400 - #x20906fc - #x100a00fc - #x506060f - #x8fffa - #x60b0703 - #xfbfffcff - #xfc03ff - #x80eff00 - #x50300fb - #x1306fd02 - #x5040b15 - #x505fbfd - #x60c0904 - #xfefcfaff - #xf8fcfe - #xd0afe05 - #xff0100 - #x1100ff07 - #x1041418 - #x400fb00 - #x80f0601 - #xfdf5fa00 - #xfaf2fb00 - #x9070306 - #xfb010601 - #xf000306 - #xff0a1817 - #x200fd00 - #x90d0002 - #xf5f1fe01 - #xf5f4fd00 - #x70807ff - #xfd090700 - #x10000303 - #xfe0f1816 - #x501fefd - #x707fe07 - #xebf50400 - #xf6fbfffb - #x80901f4 - #x50c0301 - #x13000101 - #x111161a - #xa01fdfa - #x305010a - #xeafe06fc - #x1fff9f4 - #x602f5f4 - #xb080508 - #x10000204 - #x410161d - #xa00fcf9 - #x3050408 - #xf00000f9 - #xbfcf5f2 - #xf8f0ff - #xa080d0c - #xc040405 - #x40c171b - #x800fcfb - #x5060206 - #xf4fcfafb - #xaf6f6f6 - #xf5f2f509 - #x80f1504 - #xd090305 - #x40a1716 - #x602fcfe - #x604ff04 - #xf0f4fc00 - #x4f7fdfb - #xeef4fd09 - #xd1714f8 - #x12090004 - #x81515 - #x603ff00 - #x400fb05 - #xe8f30104 - #x30101f7 - #xf1faff03 - #x131a0af0 - #x1503ff09 - #xff091418 - #x9050000 - #xfffbfb08 - #xe4fa0802 - #xc0a00ed - #xf8fbf8ff - #x181300f3 - #xffe0310 - #xb1419 - #xc0801fd - #xfaf9fe0a - #xe90207fd - #x1709f5e7 - #xf8f3f106 - #x120902fd - #x6000c15 - #x60e1514 - #xd08fffd - #xf6fa020a - #xf40502f9 - #x1800efe9 - #xf1ecf412 - #x9080c00 - #x50a1011 - #xc0f110b - #xc07ff03 - #xf5fd0207 - #xfc01fdf6 - #x10f5eff1 - #xe9ed0019 - #x51214f7 - #xd120c0a - #xf0b0904 - #xa05010e - #xf700ff05 - #xfbfbfcf6 - #x4f5f6f9 - #xeaf60914 - #xc1b0deb - #x170f0407 - #xb040206 - #x9060916 - #xfa01fb04 - #xf7f8fdf4 - #xfffcfafb - #xf3ff0908 - #x151a00e9 - #x1803020c - #x400010f - #xa0a1116 - #xfe00f707 - #xf2f8fef3 - #x200fafa - #xfd010200 - #x170df7f3 - #xffc0a15 - #x1010313 - #xd0e1613 - #xfff809 - #xf1fafdf5 - #x8fdf8f9 - #xfffefc01 - #xe01fb00 - #x5041616 - #x304050d - #xe12160c - #x1fcfa08 - #xf0fafcf9 - #x7f6f8fa - #xfdfdfd04 - #x3000606 - #x3121a0d - #x7030104 - #xd12140c - #xfbfb06 - #xeef9fefd - #xf4fcf9 - #xfc01ff04 - #x50e02 - #x111d1103 - #x9fdfc02 - #xa11120f - #xfcf903 - #xeefb0100 - #xfaf6fdf5 - #x307fdfe - #x1090bfe - #x1c1a0500 - #x3f7fc0b - #x9121412 - #xfbf503 - #xf0ff0501 - #xfafafbf3 - #xc07f9f9 - #x2070703 - #x1e0e0102 - #xfef60015 - #xa13140f - #xf8f405 - #xf6020803 - #xfdfaf8f6 - #x1105f4f7 - #xff02080e - #x15050405 - #xfbfa0617 - #xc131109 - #xfdf6f805 - #xfa050a05 - #xfdf6fbfc - #xe00f2f9 - #xf6001217 - #xc070900 - #xfe010a12 - #xa100c02 - #xfbf8fb02 - #xfc060b05 - #xf9f600ff - #xbfff3f9 - #xf2041916 - #xc0d06f9 - #x206080a - #x70e0700 - #xfafafa01 - #xfd080c04 - #xf8fd05ff - #xb01f2f6 - #xf50d1a0f - #x140efff4 - #x7060107 - #x70b0202 - #xfafcfb05 - #x10a0d03 - #xfd0303fe - #xe00eff5 - #xfa10150d - #x1908f9f6 - #x703fe0b - #xa060003 - #xfbfd0108 - #x60b0cff - #x304ff00 - #xdf9effb - #xfd0d100f - #x16fefafb - #x400ff13 - #x8000104 - #xfe030b04 - #xa0a08fd - #x700000a - #x4f5f601 - #xfa091011 - #xdfa0100 - #x113 - #x602 - #x30a07fb - #x607fffc - #xfa090d - #xfaf80006 - #xe1008 - #x20402f8 - #xb0e - #xfb060300 - #x80b02fd - #x3fcff - #xfbfc0f08 - #xff040202 - #x30e09fd - #x90afef7 - #x303090c - #x109fffd - #x8090204 - #xfe00fc01 - #xfc010aff - #xa09ff00 - #x60800fb - #xe05fc00 - #x5030b11 - #x805fa00 - #x80a0407 - #xfefb00 - #xfe0001fc - #xf05fe03 - #x202fe00 - #xe000005 - #x3051115 - #x800fa03 - #xb0c0504 - #xfef9fa00 - #xfbf9fdfe - #xd020305 - #xfb010106 - #xaff0705 - #x91615 - #x3fcfd03 - #xd0b0102 - #xf6f6fc01 - #xf5f60000 - #x8050801 - #xfd070304 - #xa010700 - #x10f1615 - #x2fd00ff - #xd06ff04 - #xeef80002 - #xf4fa02fb - #x80905f9 - #x50a0104 - #xb0204fe - #x4121517 - #x4fffffb - #x7010108 - #xeb0002ff - #xfcfdfff2 - #xa06f9f6 - #xc070107 - #xa000102 - #x712161b - #x6fffcf8 - #x5020709 - #xf203fefd - #x4faf8ed - #x4fcf100 - #xb070909 - #x7030206 - #x8101c18 - #x6fefafb - #x6040607 - #xf800f8fd - #x5f6f6f0 - #xfcf3f60a - #x80e1204 - #x9060307 - #x60f1c13 - #x5fefafe - #x7030206 - #xf6f9f800 - #xf6faf5 - #xf3f3000d - #xb180ff9 - #xf060206 - #x30e1813 - #x5fefc00 - #x6000006 - #xeef7fe04 - #xfefd00f4 - #xf3f90307 - #x151b06f0 - #x11010108 - #xd1616 - #x600ffff - #x1fbff08 - #xe8fb0303 - #x406ffec - #xf8fcff03 - #x1a14fcf0 - #xdfd0410 - #x10f1719 - #x90300fc - #xfcf8000b - #xeb030500 - #xf08f7e4 - #xfbf7f708 - #x1709fbf8 - #x4fe0c16 - #x5111816 - #xb04fdfb - #xf8f9030c - #xf60700fa - #x1200eee5 - #xf5eef914 - #xc0704fc - #x2081214 - #xb12160c - #xc02fc00 - #xf7fd050b - #xfe04fcf6 - #xcf7eced - #xedec041c - #x70f0bf7 - #xa0f110d - #xd100d05 - #xb00ff09 - #xf9000209 - #xfefffaf4 - #x1f4f2f5 - #xeaf41117 - #xc1b07ec - #x140e0907 - #xb090409 - #x8000712 - #xfd00fe08 - #xf8fcfaf2 - #xfdf8f8f9 - #xf1fe100c - #x181afbe8 - #x1505050a - #x5030211 - #x8041113 - #xfdfc09 - #xf4fdf9f3 - #xfcfbf8 - #xfa020903 - #x1d0ef3f0 - #xdff0a11 - #x1020517 - #xa0b160c - #xf9fd0b - #xf1fef8f5 - #x6fcfbf6 - #xff000003 - #x1601f5fc - #x2011316 - #x2030812 - #xd101608 - #xfff7000c - #xf4fdf6fa - #x6f7fbf6 - #xfdfdfe09 - #x8000100 - #x111711 - #x5020705 - #xd131308 - #xfff8000a - #xf4fcf8fe - #xfff5fdf5 - #xfcfe000a - #x1060aff - #xc1b1307 - #x5ff0102 - #xd12110c - #xfef8fe09 - #xf2fcfc00 - #xf8f8fef2 - #x10004 - #x20d08fc - #x1c190802 - #xf9fe0a - #xc12130f - #xfff8fa09 - #xf3ff0000 - #xf8fcfbef - #x903fdfe - #x60d0400 - #x1e0e0302 - #xf9f60215 - #xe13150c - #xfff5f80a - #xf6020201 - #xfbfcf7ef - #xdfff8fb - #x407050b - #x18050403 - #xf7fa081b - #xf141305 - #xfcf3fa0b - #xfa050503 - #xfbf8f8f5 - #xbfcf5fd - #xfe050d14 - #xd050701 - #xfa000d17 - #xf120c01 - #xf9f5fc09 - #xfd070703 - #xf7f7fdf9 - #x8faf6fd - #xf8091614 - #xb0c06f9 - #x40d0f - #xd0e0700 - #xf9f8fc08 - #xa0a01 - #xf6fc01fa - #x8faf6fb - #xf9111810 - #x100e00f3 - #x306080b - #xc0b0301 - #xfaf9fa09 - #x20c0bff - #xf90401fa - #xafaf3f7 - #x16140d - #x1606f8f2 - #x6040210 - #xd060004 - #xfbfaff0b - #x60e0afd - #x5fefd - #xaf5f1f9 - #x3130f11 - #x12fef9f7 - #x5000316 - #xb010005 - #xfdff0606 - #x90e06fa - #x500fe04 - #x3f1f500 - #x30f0f13 - #xafbfffa - #x3ff0819 - #x3000204 - #x1070afe - #x80b01fb - #x3fa060d - #xfbf4fd06 - #xd120f - #x20001f9 - #xff0a12 - #xfc040400 - #x70afffe - #x802fb01 - #xfa020e07 - #xf9fe0402 - #x8110d00 - #x309faf9 - #x31006 - #x1050002 - #xa08fd04 - #x400fc04 - #xfa090b00 - #x50501ff - #xa0c01fc - #xb07f9fd - #x2040c0a - #x904fc02 - #x9060109 - #x3fdfd04 - #xfe0902fc - #xd0200ff - #x603fb03 - #xb00ff03 - #x2060f10 - #xafefc05 - #xa080507 - #xfafc04 - #xfd02fefe - #xaff0401 - #xfe0b - #x7ff0603 - #x10a1313 - #x4faff04 - #xe090401 - #xfbf7fc05 - #xf8fcff00 - #x5010a00 - #xff02020c - #x40409ff - #x20e1511 - #xfffb0200 - #xe050100 - #xf3f8fd07 - #xf5fc02fb - #x60808fa - #x6060208 - #x50703fb - #x6111512 - #xffff01fd - #xa000303 - #xf1fdff08 - #xf80000f2 - #xa09fff6 - #xc040107 - #x605ff00 - #xa121714 - #xfefb - #x3000805 - #xf701fd04 - #xfffff8eb - #x900f5fc - #xc03050a - #x5030108 - #xa131c13 - #x1fffafb - #x2020a04 - #xfefff802 - #xfaf3ed - #xf5f906 - #x80a0d06 - #x6040409 - #x9131d0f - #x1fcf8ff - #x4030804 - #xfef8f703 - #xfbf8f5f3 - #xf7f3040a - #xb140dfe - #xb040407 - #x613190f - #xfbfb00 - #x4000403 - #xf5f5fc05 - #xf9fcfaf4 - #xf3f90b05 - #x151803f5 - #xd010308 - #x5131614 - #xfdffff - #x1fc0405 - #xeff90006 - #xff04faed - #xf7fe0601 - #x1d11f9f2 - #x8fe040f - #x4121817 - #x200fffb - #xfdf90508 - #xf1000203 - #x807f5e5 - #xfbfbff05 - #x1b07f6f7 - #x2000b17 - #x7141b13 - #x601fcf9 - #xf7f9070b - #xfa0500fe - #xe02ece3 - #xf7f2ff10 - #x1103fdfc - #x61318 - #xc17190c - #x800fafd - #xf6fd090a - #x103fcf9 - #x8f8e7eb - #xeeef0b19 - #x80902f8 - #x70f1410 - #xf151005 - #x7fcfd06 - #xf9000808 - #x200f9f5 - #xf3ecf4 - #xe9f51718 - #xe1501f0 - #x10100e08 - #xe0f0507 - #x3fb050c - #xfdff0505 - #xfdfcf6f5 - #xfaf5f4f9 - #xed001a0b - #x1b16f8ea - #x13090708 - #x9070211 - #x102100d - #xfffb0206 - #xf9fdf5f6 - #xfdfaf9f7 - #xf7070f03 - #x1f0aefef - #xb020810 - #x4030717 - #x30a1509 - #xfef70308 - #xf8fdf3fa - #xfbfaf4 - #xfd040503 - #x1bfff2f8 - #x1050f17 - #x3030e12 - #x7121404 - #xfaf5050a - #xf9fcf2fd - #x2faf9f2 - #xfeff0009 - #xdfcfdff - #xff0f1516 - #x3040c06 - #xa151004 - #xf8f7070a - #xfbf8f4ff - #xfdfaf9f2 - #xfcfd050a - #x40405fd - #x918130d - #x2010500 - #xc130f08 - #xf9f9040a - #xfaf8f900 - #xf7fcfaf2 - #xfeff0804 - #x40c05fb - #x19180b05 - #xfffc0007 - #xd13110b - #xfaf8000b - #xf8fbfd00 - #xf800f8ef - #x20004fe - #xa0e00fe - #x1e0f0403 - #xf9f90115 - #xe141407 - #xfbf6000d - #xfaffff00 - #xfbfff4ee - #x7fffffb - #xb090108 - #x17060505 - #xf5fb0a1c - #x10161300 - #xf9f2000e - #xfd010002 - #xfcfbf3f1 - #x6fafbfc - #x6050811 - #xe070603 - #xf8001119 - #x11140dfc - #xf6f2000d - #x40303 - #xf8f9f7f5 - #x3f7fafe - #x91214 - #xa0b04fd - #xfd041212 - #x100f07fd - #xf5f5000c - #x2070700 - #xf5fefbf8 - #x1f7fcfa - #xff111610 - #xe0dfef6 - #x70d0c - #xe0b04ff - #xf7f7000c - #x50b08fe - #xf803fcf9 - #x3f7faf6 - #x616130f - #x1308f8f3 - #x306080f - #xd060201 - #xf9f7010d - #x80e06fb - #x5fafb - #x3f5f6f7 - #xc140f12 - #x10fff4f6 - #x4030816 - #xb020103 - #xfafa0709 - #xc0f02fb - #x401fb00 - #xfff1f6fd - #xb0f1015 - #x7fdf8fa - #x3000d18 - #x5000205 - #xfe010902 - #xd0cfffc - #x2fd0207 - #xf8f1fc04 - #x90e1310 - #x1fcfa - #x1311 - #xff000305 - #x50903fd - #xa07fcff - #xfdfe0c0a - #xf7f90206 - #x7101205 - #x8fbf8 - #xff021209 - #xff050202 - #x805fc03 - #x9fdfe05 - #xfc0d0a06 - #xfd0004fc - #xd1006fb - #xa01f600 - #xb0c05 - #x6010101 - #x802000a - #x5fc0007 - #x1110200 - #x50101fa - #xc06fd03 - #xbfefb04 - #x2090b0b - #x9fe0003 - #x8030607 - #x2fb0006 - #x408fc00 - #x6ff02fd - #x5fe000e - #x5ff0305 - #x20a0f0f - #x2fa0204 - #xa060700 - #xfdf8ff07 - #xff00fd01 - #x10106fe - #xfd0510 - #x2050500 - #x40d120e - #xfcfb0402 - #xc0604fc - #xf7f7ff0b - #xf9fe01ff - #x708fa - #x401070a - #x40b00fc - #x70f140b - #xf90003ff - #x80103fe - #xf5f9000c - #xf90200f5 - #x80b00f5 - #x9010507 - #x709fc00 - #xa11160d - #xfd02fffd - #x2000500 - #xf9fc000b - #xfd03f8ee - #xc05faf8 - #x900050a - #x603fe07 - #xb13190c - #xfaff - #x30901 - #xfbfd06 - #xfffff0ef - #x4f9fa00 - #x6050a0b - #x602050b - #xc171c0b - #xfdf800 - #x1060800 - #xf6fa04 - #xfafaeff5 - #xf8f50503 - #xa0f0b03 - #x8020709 - #xd18160c - #xfef9f901 - #x2040600 - #xfaf4fd05 - #xf8fbf5f8 - #xf3fc0d00 - #x151404fa - #xa020508 - #xa161310 - #xfdfbfd00 - #x10600 - #xf3f60106 - #xfd00f8f3 - #xf6020afd - #x1e0ef9f5 - #x600040e - #xb161714 - #xfdfffefc - #xfbfe0602 - #xf4fc0305 - #x504f2ea - #xfb010300 - #x1b02f5f7 - #xa19 - #xb161b11 - #x100fafb - #xf7fe0906 - #xfb000200 - #xc01e9e7 - #xfafa020a - #x13fef9fc - #xff06131c - #xe1a1a08 - #x4fef7fe - #xf6000b07 - #x201fffb - #x9f8e3ed - #xf1f50b13 - #xa02fffc - #x30e1715 - #x131a1203 - #x3faf903 - #xf8020c04 - #x3fffaf6 - #x1f1e7f7 - #xe9fb1a13 - #xd0bfef3 - #xd12120b - #x13130605 - #xfff9020a - #xfb020a00 - #xfcf6f6 - #xfcf0f0fc - #xec061c0b - #x190ef7ec - #x110e0909 - #xf0a040e - #xfbff0c0b - #xfdff07ff - #xfdfaf4f9 - #xfaf5f7fa - #xf60e1402 - #x1f05efec - #xb070511 - #x9040a14 - #xfc0b1108 - #xfafb0701 - #xfcf9f3fc - #xfefaf8f6 - #xff0c0902 - #x1bfbf0f4 - #x2060c1a - #x5041110 - #x2130f04 - #xf6fa0706 - #xfef6f3ff - #xfffbf6f4 - #x40406 - #xef8f8fb - #xd141c - #x3051104 - #x9160b04 - #xf4fc0909 - #xfff3f600 - #xfdfcf4f4 - #xfdff0708 - #x30001fc - #x8161613 - #x20509fe - #xd140a06 - #xf4fd070b - #xfcf3f9fe - #xf9fef4f5 - #xfb000d02 - #x60902fb - #x16160f09 - #xff000005 - #xe120d07 - #xf6fd050b - #xf9f6fdfd - #xf900f4f4 - #xfe020bfd - #xd0bfefd - #x1d0f0705 - #xfafc0013 - #xf151103 - #xf7fa040d - #xfafbfffe - #xfefff2f2 - #x10203f9 - #x1005fe04 - #x15080407 - #xf7fc0a1d - #x11180efc - #xf5f6050f - #xfdfd0000 - #xfefaf0f3 - #x1fffefb - #xb02050b - #xd070508 - #xf700141a - #x131609f7 - #xf3f5060f - #x200 - #xfbf8f1f6 - #xfffafefd - #x5070f0e - #xa0a0504 - #xfb061612 - #x121104f8 - #xf1f7050e - #x20205ff - #xf8fcf5f9 - #xfdf9fffa - #x30f140e - #xd0cfffc - #xa110d - #xf0c02fb - #xf3f8050c - #x40706fb - #xfb00f7fb - #xfdf9fdf5 - #xa15130c - #x1107f7f8 - #x20a0b0e - #xc0802fe - #xf5f7070c - #x90c04fa - #x2f7fe - #xfef8f8f4 - #x1214100f - #xf00f3fa - #x4070c14 - #x9040200 - #xf5f90b09 - #xe0c00fb - #x5fff800 - #xfaf4f5fb - #x120f1211 - #x6fbf4ff - #x4041115 - #x5010103 - #xf8000c03 - #x100afdfc - #x2fcfe06 - #xf5f3fa02 - #xe0d170e - #xfef700 - #x5160e - #xff0305 - #xff0506ff - #xf03fcff - #xfe000609 - #xf3f70103 - #xa111603 - #x103f7ff - #xfe081505 - #xfe000404 - #x707fd00 - #xc00fd04 - #xfa080a07 - #xf9ff0500 - #xc120dfc - #x704f6fe - #xff0a1003 - #x4030201 - #x7000006 - #x2fd0406 - #x60e0509 - #x300f9 - #x100afffe - #xaf7fa07 - #x50e050a - #x40102fe - #x4000606 - #xfd0407 - #xb0a0006 - #x200fefb - #x9ff000a - #x4fa0109 - #x60a090d - #x1fd0201 - #x50409ff - #xfcfc0307 - #x800ff05 - #xff010000 - #x1fc090d - #x1030504 - #x60c0f0b - #xfafe0501 - #x80704f9 - #xf8f9020a - #xfd0101 - #x702fe - #xff000c08 - #x50a00ff - #x70f1108 - #xf7010400 - #x70400fa - #xf5f9050d - #xfc0101fb - #x60bfff8 - #x3030a03 - #xa07fa00 - #x9101208 - #xfb050000 - #x20200ff - #xf8fb060c - #xff04faf4 - #xc08f9f7 - #x4020707 - #xa01fd07 - #xb13140a - #x103fb00 - #x40301 - #xfcfb0506 - #x100f0f3 - #x9fff9fb - #x203080c - #x7fe040b - #xd171409 - #x2fdf803 - #x1080500 - #xfff80102 - #xfff8eefa - #xfdf902ff - #x40a0c0a - #x6000909 - #x111a1309 - #xfff8f904 - #x30803fd - #xf8f50001 - #xfaf6f3fd - #xf4ff09fd - #x110f07ff - #x6030708 - #x1219100d - #xfbf9fb03 - #x10503fc - #xf2f70203 - #xfcfaf7f9 - #xf60607fa - #x1b0bfef6 - #x502050f - #x1016140f - #xfbfdfc00 - #xfe0303fe - #xf2fb0502 - #x3fff4f1 - #xfe0902fd - #x1a01f6f6 - #x10a1a - #x1017190d - #xfffff8ff - #xf9020502 - #xf80005ff - #xafeebed - #xfe010105 - #xffbf8fb - #xff05141f - #x121b1807 - #x2fcf500 - #xf9050804 - #xfe0101f8 - #xaf5e5f1 - #xf6fc080e - #x7fdfdfb - #x10d1a19 - #x161c1101 - #x1f7f504 - #xfb060b01 - #x1fffdf4 - #x3ece6f9 - #xee001511 - #x804fff5 - #xa14160e - #x18180702 - #xfcf6fd0a - #xfd070afb - #xfffcf7f5 - #xfceaefff - #xef0d1b0b - #x1408f8eb - #x10120b0c - #x150c030a - #xf7fc060d - #xfd0505f9 - #xfdf9f5f8 - #xf9eef6fe - #xf9161304 - #x1a02f2e8 - #xe0b0614 - #xd040a11 - #xf9070b0c - #xfa0203fd - #xfdf6f5fc - #xfaf6f9fa - #x3140900 - #x16f8efee - #x6060b1c - #x605130e - #x1110a08 - #xf6000304 - #xfef3f7fc - #xfdfaf5f8 - #x50b0503 - #x9f6f5f7 - #x309161f - #x4081204 - #xb130706 - #xf401040a - #xfdf1fafa - #xfdfaf3f9 - #x40904 - #xfdfcfb - #x8111b18 - #x30909fe - #x10110607 - #xf503050d - #xf9f2fcf8 - #xfcfcf4fb - #xfc030e01 - #x205fffa - #x1315150c - #x204ff03 - #x11100a07 - #xf701050e - #xf5f5fef6 - #xfdfbf4fa - #xfd070bfc - #xd07fcfb - #x19100b08 - #xfeff0012 - #x12130d01 - #xf800050f - #xf5f9fef8 - #xfbf3f7 - #x803fa - #x1202fcff - #x160a060a - #xf9fd0a1a - #x14160bfb - #xf6fd0612 - #xf9fcfffa - #x1f7f2f7 - #x105fefd - #xd000304 - #xc07070e - #xf8001419 - #x161603f6 - #xf3fc0813 - #xfcfd01fa - #xfef4f1f8 - #xff00fefe - #x6030c07 - #xb08070b - #xfb071713 - #x1711fef6 - #xf1fd0911 - #xfe0004f8 - #xfbf5f3fb - #xfcfefffc - #x50d1106 - #xd090404 - #xc130e - #x130afef9 - #xf2fc080d - #x504f6 - #xfcfaf7fd - #xfbfefef7 - #xa131206 - #x1006fcfe - #x40d0e0f - #xd08fffa - #xf3fc090b - #x50902f6 - #x1fcf800 - #xfcfdf7f6 - #x12131108 - #xefff500 - #x60a0d13 - #xa07fffd - #xf3fd0c09 - #xb0a00f7 - #x4faf903 - #xfaf9f3fb - #x13101309 - #x7f9f505 - #x6081214 - #x604ff00 - #xf3010d04 - #x1006fdf8 - #x3f8fd07 - #xf6f5f602 - #xe101805 - #x1f8f809 - #x30a160d - #x1000004 - #xfa0608ff - #x1001fdfa - #xfefc020c - #xf3f7ff03 - #xa1417ff - #x2fcf906 - #x10e1405 - #xfd000404 - #x20700fe - #xbfdfefe - #xfc04070d - #xf6fd03ff - #xc170ff8 - #x7fcf804 - #x2100c02 - #xfe020600 - #x702fd03 - #x6fe0104 - #x10e070a - #xfe0203f9 - #xf1102fa - #xbf9f905 - #x50f0607 - #x30303fd - #x3ff0503 - #xfd010606 - #xe060708 - #x102f900 - #xe02ff01 - #xf6010c - #xc09050d - #x20000 - #x20309ff - #xfc010606 - #xdff0406 - #x100fa05 - #x2fd0808 - #xfffe0609 - #x9080b0b - #xfc000202 - #x50704f9 - #xf9ff0507 - #x3fc0502 - #x4fe05 - #xfc020f03 - #x4060302 - #x80c0e06 - #xf9030301 - #x706fdf9 - #xf6fd070a - #xffff03fc - #x608fe00 - #xfe080c00 - #xb05fe00 - #x90f0d06 - #xfc060101 - #x503faff - #xf5ff0a09 - #x2fef7 - #xe08f9fa - #x1070703 - #xdfefd04 - #xb110e0b - #x304fd02 - #x202fd03 - #xf7000a05 - #x300f5f6 - #xc00f7fc - #x5070b - #x7fb0508 - #xe150f0c - #x6fffa03 - #x2050003 - #xf8ff0700 - #x3f7f2fa - #x1fcfc00 - #x1070b0c - #x3ff0b07 - #x13180d0a - #x2f8fb06 - #x50801ff - #xf5fc02fe - #xfdf0f7ff - #xfa0003ff - #xa0c0c04 - #x3040906 - #x16170d0a - #xfcf6fd07 - #x60600fc - #xf0fb0200 - #xfbf4fcfc - #xfc0801fb - #x150b03f8 - #x304060d - #x1515110c - #xfaf9fd07 - #x305fefd - #xf0fd0400 - #xfafaf4 - #xafdfd - #x1502faf5 - #x1020919 - #x1216160a - #xfdfbfa05 - #x40000 - #xf40005fd - #x6faf2f0 - #x406fd03 - #xdfbf7f9 - #xff03151f - #x141a1604 - #x1f9f605 - #xfe050403 - #xfa0201f8 - #x7f2eaf2 - #xfd00040c - #x3fbfcfc - #x10c1e1b - #x191d0e00 - #x1f5f609 - #xff080800 - #xfe01fdf3 - #x2e8ebf9 - #xf6030f10 - #x200fff6 - #x8151b10 - #x1c170600 - #xfbf3fa0e - #xa07f9 - #xfefff7f3 - #xfae4f2ff - #xf50f160d - #xb04fbeb - #x1016100b - #x180e0307 - #xf5f70312 - #x10902f7 - #xfcfaf5f7 - #xf4eaf9ff - #x191205 - #x1401f2e6 - #x110e0914 - #x1005090e - #xf7010812 - #x7fdfb - #xfbf6f6f9 - #xf5f2fbfd - #xa170901 - #xffaedeb - #xb060d1e - #x706110d - #x10a080f - #xfc04fc05 - #xfaf4f9f9 - #xf9f7f8fb - #xe0f0501 - #x5f5f0f6 - #x5061a1e - #x30b1106 - #xd0c060a - #xfa03ff0d - #xf8f3fcf5 - #xfcf7f6fd - #x7070802 - #xfefaf7fd - #x80e1f18 - #x50d0700 - #x130a0608 - #xfb040210 - #xf3f5fcf1 - #xfcf6f7fe - #x60b00 - #xfbfc - #xf151c0e - #x508ff04 - #x130a0806 - #xfc030410 - #xf0f9fbef - #xfef6fafd - #xff0b0bfe - #xa04fbfa - #x16141008 - #x100fd0f - #x120e0b02 - #xfd010612 - #xf1fbfbf2 - #xf5fafa - #x30d01fe - #xf00fafb - #x140d090c - #xfcfc0918 - #x151208fc - #xfa000715 - #xf5fdfbf5 - #x1f4f7f7 - #x508fc00 - #xbff00ff - #xe080911 - #xf9001617 - #x191100f8 - #xf7000918 - #xf8fefef6 - #xfef2f5f8 - #x303fc01 - #x4020701 - #xa070c11 - #xfb081811 - #x1a0cf9f6 - #xf5000b16 - #xfa0000f3 - #xfaf1f6fb - #xff00 - #x40a0c01 - #xc080a09 - #xe140e - #x1606f9f9 - #xf5010b11 - #xfc0401f1 - #xfaf3f8fd - #xfe00fefb - #xa120d00 - #xf050304 - #x30e0f10 - #x1004fbfa - #xf6000a0c - #x9fff0 - #xfef6fbff - #xff00f8f9 - #x10130d01 - #xcfffc03 - #x70c0e13 - #xc05fbfc - #xf4000b0a - #x809fcf2 - #xf6fc01 - #xfefcf2fe - #x12121002 - #x6f8fa0a - #x80a1213 - #xa03fb00 - #xf4050b07 - #xd06fbf3 - #xf6fe07 - #xfbf6f503 - #xe131400 - #x1f5fd0e - #x60d150e - #x600fd03 - #xf9090801 - #xd01fcf3 - #xfcf9020c - #xf6f6fd05 - #xa1814fb - #xf5000b - #x5101206 - #xff0204 - #xa01fd - #x8fffdf6 - #xfbff070f - #xf6fb0200 - #xd1c0df6 - #x3f7ff07 - #x8130905 - #xfd010501 - #x605fefe - #x1fe00fe - #x6090e - #xfb0001fa - #x121703f7 - #x5f5fe07 - #xc110309 - #xff0504fe - #x4ff0202 - #xfe010405 - #xb09080a - #x103fbfc - #x110afefe - #x2f3000b - #xc0b020d - #x20500fd - #x1020500 - #xfe050506 - #xc020a02 - #x2fdf80b - #x6000301 - #xf9fc070d - #xb040c07 - #xff08 - #x30803fb - #xfd040505 - #x4fe0700 - #x1fdfe0d - #xfc040b01 - #xff030705 - #x7070d04 - #xfc020206 - #x707fbfb - #xfa010706 - #xfe0106fc - #x5020106 - #xfc0c09fe - #x80401ff - #x80c0b05 - #xff060103 - #x702f700 - #xf8020907 - #xff0400f7 - #xb03fe00 - #x20d0400 - #xbfe00ff - #xa0f090b - #x505ff02 - #x5fffa06 - #xf7050b05 - #x300f9f5 - #xe00f8fe - #x307030b - #x5f90403 - #xe110b0f - #x9fffc04 - #x400ff06 - #xf8050701 - #x3f8f7f7 - #x5fcfa01 - #x2060a0f - #xfe0903 - #x13140c0c - #x4f8fc06 - #x6020101 - #xf7030200 - #xfef1fafa - #xfefefe03 - #x50a0d07 - #x70903 - #x17130b08 - #xfdf5ff0b - #x70400fb - #xf3000000 - #xf8f1fff9 - #x60000 - #xf0d08fb - #x3080609 - #x15110e07 - #xf8f7000c - #x703fdfb - #xf2ff0001 - #xf9f9fef3 - #x809fbfd - #x1106fef7 - #x2040b16 - #x13141207 - #xfaf9ff0c - #x402fdff - #xf40201ff - #xfbf8ef - #xa04fa01 - #x9fef7fb - #x3151d - #x13191203 - #xfff7fb0a - #x2020102 - #xf90400fb - #x2f4eff0 - #x400000a - #x1fafaff - #xc1f19 - #x191c0c00 - #xfff2fa0b - #x20505ff - #xfe03faf7 - #xfeeaeff6 - #xfc010c0f - #xfffefdfc - #x7181e0f - #x1e1803ff - #xf9effc12 - #x40905f8 - #xff00f5f7 - #xf6e5f4fb - #xfc0c130d - #x402fbf1 - #x101b150a - #x1b0d0104 - #xf3f30218 - #x60b00f4 - #xfefbf3f8 - #xeee9fbfe - #x4171306 - #xc01f2e9 - #x14130d0f - #x1005060b - #xf4fb0a19 - #x607f8fa - #xfbf6f5fa - #xeef2fdfc - #x10170c00 - #xbfbeaee - #xf07101a - #x7070e0e - #xff030c14 - #x402f704 - #xf8f5f8f9 - #xf3f7fcfc - #x131007fe - #x2f4eafa - #x8061a1c - #x50d0e0a - #xa060a0d - #x100fc0e - #xf4f6f9f5 - #xf8f7fafd - #xd0908ff - #xfcf5f102 - #x50f1f15 - #x70f0604 - #x10050908 - #x211 - #xf1f9f8f2 - #xfaf4fcfd - #x5090900 - #xfffbf801 - #xb181e0a - #x90aff05 - #xf050a06 - #x10811 - #xf0fbf5f1 - #xfaf3fffb - #x30c07ff - #x6fffafc - #x121a1407 - #x501ff0d - #xe0a0a03 - #x10811 - #xf1fcf3f4 - #xfcf4fff7 - #x70e0100 - #xdfff9f9 - #x14140b0c - #xfefc0714 - #x120f08ff - #xfe000b16 - #xf5fbf4f6 - #xfcf6fcf5 - #xb0afd01 - #x8fdfbfd - #xf0b0d13 - #xf9001415 - #x180e00fa - #xfb000e1a - #xf8fdf7f6 - #xfbf4f9f5 - #x903fe03 - #x1000000 - #xa081012 - #xfa0a1810 - #x1a07f9f7 - #xfa011019 - #xf900faf3 - #xf7f3f9f7 - #x4000001 - #x2080501 - #xa09110c - #x10130d - #x1600f7f8 - #xf9021014 - #xfc02faf0 - #xf6f3fbf9 - #x10000fe - #x90e0600 - #xc090a06 - #x510100f - #xffff9fa - #xf9030e0f - #x5f8ef - #xf8f5fcfa - #x100fbfc - #x101107ff - #xb030307 - #x70d1112 - #xb00fafd - #xf9030b0d - #x606f6f0 - #xfbf6fdfd - #x2fdf6ff - #x121209ff - #x5fb000b - #x80c1312 - #xc00f900 - #xf8050a0b - #xc04f6f0 - #xfaf7ff04 - #xfff5f702 - #xf130b00 - #xfff6030f - #x80e150d - #xafcfb05 - #xfc090806 - #xb01f8ef - #xf9f8020b - #xf9f3ff04 - #xe190dfd - #xfcf5060d - #x9121008 - #x3fb0006 - #x30a03ff - #x600f8f1 - #xf8fd080e - #xf5f70400 - #x111c08f8 - #xfdf80708 - #xc120a05 - #xfdff0404 - #x806fefd - #xf9f8 - #xfe020d0e - #xf9ff01fc - #x181700f6 - #xfef70207 - #x100f0509 - #xff050301 - #x701fe00 - #xfe01fe01 - #x5050e09 - #x1fbfe - #x190dfcfa - #xfdf7010b - #x1109060c - #x2060003 - #x1000402 - #xfd050306 - #xd040a04 - #x3fff706 - #xe02ff00 - #xf8f8060e - #xc040909 - #x303fd05 - #x2050100 - #x4040404 - #x40707fe - #xf8020d - #x40501 - #xf9030a09 - #x5060dfe - #x1ff030c - #x707fcfd - #x1040504 - #xfe0603fc - #xfffb080a - #xff0d05ff - #x30605fe - #x50a0a01 - #x30407 - #x800f701 - #xfd040707 - #xff0800f8 - #x5000601 - #x60e0002 - #x70000fb - #x80c0809 - #x6050104 - #x5fbfa08 - #xfd070807 - #x205fbf5 - #x800ffff - #xa09000a - #x3fd00ff - #xc0e0b0f - #xa00fe04 - #x2fb0009 - #xfe080605 - #x3fdf7f5 - #x5fbfb02 - #x7040711 - #xfc000501 - #x12100e0b - #x6fafd07 - #x2fe0502 - #xfe070203 - #xfef6f9f6 - #xfbfe05 - #x6070e0c - #xfd070600 - #x15100d06 - #xfdf6000b - #x40003fb - #xfd03ff04 - #xf7f7fef6 - #x2 - #x90d0b00 - #x20b0404 - #x140f0c02 - #xf6f80310 - #x500fff8 - #xf8fffe05 - #xf4fcfef2 - #x603fefd - #xf0b00fa - #x506080f - #x12110f04 - #xf6fa0410 - #x400fcfb - #xf8000004 - #xf9fff8ee - #xb01fcfd - #xa00f900 - #x2051619 - #x13170d03 - #xf9f9010e - #x3ff00ff - #xfc02ff00 - #xfffaf2ee - #x8fe0003 - #x1faf905 - #xd1f16 - #x191a0800 - #xfaf5ff0d - #x20005fc - #x2fafe - #xfcf1eff3 - #xfe090a - #xfefcfe02 - #x6191e0d - #x1e1702fd - #xf5f00012 - #x40605f4 - #x2fff5fd - #xf2ebf4f8 - #xff07120a - #x100fcf9 - #x111f1606 - #x1c0d0001 - #xeef2061a - #x70800f1 - #xf9f2fe - #xebeef9fb - #x5121403 - #x700f3f1 - #x17180e0a - #x1306020a - #xeef80d1c - #x907f7f5 - #xfef5f4ff - #xe9f5fcfc - #x111611fb - #x9fae9f5 - #x130c1114 - #x906090f - #xf7001217 - #x800f500 - #xf8f4f7fe - #xeffafcfb - #x16110af7 - #x3f2e801 - #x9091c17 - #x60d0b0e - #x205110d - #x4fafd09 - #xf4f6f7fc - #xf5f9fcfb - #x110b07f9 - #xfdefef0a - #x4111f10 - #xa0f0608 - #x8040e07 - #x1fb060c - #xf3f9f5fa - #xf7f6fffa - #x80a07fc - #xfdf3f809 - #x81d1e09 - #xe0a0004 - #x7060d05 - #xfe0c0b - #xf4faf1f9 - #xf7f600f7 - #x70d05fe - #x3f9fb01 - #x111f1304 - #x8010008 - #x60a0b05 - #xff000d0d - #xf6f9effa - #xf6fa00f3 - #xb0d02ff - #x7fbfafd - #x15190b09 - #xfd080f - #xb0e0801 - #xfe010d12 - #xf9f6effb - #xf7fbfcf1 - #xe08ff00 - #x7fbf8fd - #x130f0e12 - #xf9011212 - #x120d02fc - #xfc011218 - #xfbf7f2fa - #xf7fbf9f3 - #xc020100 - #xfdfb03 - #xd0b1512 - #xfb0a140f - #x1505fbf7 - #xfb031717 - #xfbfaf5f7 - #xf6f8f8f5 - #x7000400 - #x20005 - #x90d160c - #x11110c - #x11fef7f7 - #xfb051811 - #xfdfef5f4 - #xf4f7f9f7 - #x20003fd - #x7080203 - #xa0f0f06 - #x7110e0c - #x9fbf8f9 - #xfb06140c - #x100f2f3 - #xf4f8fbf7 - #x201fffb - #xf0b0201 - #xa0b0707 - #x80f110f - #x5fdf9fd - #xfc060f0b - #x600f1f3 - #xf6fafbfa - #x3fcfbfc - #x120c0301 - #x602050d - #x80f140f - #x7fdf900 - #xfd060d0d - #xbfff2f1 - #xf7fafc00 - #xf6fc00 - #x11100502 - #xfb0811 - #x911140b - #x8f9fa03 - #xff080c08 - #xbfef2f0 - #xf6fb0009 - #xf8f30100 - #x11130501 - #xfafa0b0e - #xb131006 - #x2f70006 - #x3090800 - #x6fef2f1 - #xf7fd070d - #xf4f806fe - #x171804fd - #xf9fd0909 - #xe120b04 - #xfcfa0406 - #x90601fd - #x2fef2f8 - #xfa020e0c - #xf5fe04fa - #x1e14fff8 - #xf8000409 - #x120e0803 - #xfb020506 - #x701fe00 - #xfff601 - #x61007 - #xfd01fdfc - #x1e0bfaf9 - #xf8fd020e - #x10080a06 - #x2050108 - #x3ff0004 - #x100fc06 - #x5080d01 - #x2fef904 - #x1502fcfe - #xf6fd0512 - #xc050d03 - #x601ff0d - #x1030203 - #x4040306 - #x60707ff - #xf8fe0d - #x5010201 - #xf6000b0e - #x6050fff - #x3ff000e - #x403ff00 - #x6030503 - #x20b0000 - #xf9fa0e07 - #x2070301 - #x70902 - #x30c07fb - #xff010a08 - #x700fa01 - #x2040606 - #x10afefe - #xfc010d00 - #x90b0001 - #x606fffa - #x60c0503 - #x4040604 - #x4f9fb08 - #x1060709 - #x406faf9 - #x20204fe - #xf05ff08 - #x200fbff - #xa0c0a0b - #x9020003 - #xfff7030a - #x3080708 - #x400f7f7 - #x3ffff00 - #xc00060f - #xfd00ff03 - #xe0d0f0a - #x7fdfe06 - #xfcfc0903 - #x5060406 - #xfbf6f7 - #xfffb0004 - #x5040f0d - #xfc060103 - #x120f1001 - #xfdf8000c - #xff0006fa - #x3020105 - #xf8faf8f8 - #xfefd0302 - #x70c0e05 - #x30a0102 - #x120e0cff - #xf4f80411 - #x10100f4 - #xff0006 - #xf500f9f5 - #x20003fb - #xc0d0500 - #x8060408 - #x100f0801 - #xf3fc0812 - #x2fffcf6 - #xfdfd0107 - #xf903f5f2 - #x700fff8 - #xd05fb03 - #x5040f12 - #x11130a04 - #xf6fe080f - #xfdfef9 - #xfeff0005 - #xfefef0f0 - #x4fcfffc - #x5fbfb0b - #x10f1c13 - #x19180600 - #xf7fb040e - #x3f8 - #x1fffd02 - #xfdf6eef3 - #xfd0603 - #xfef90009 - #x41b1e0b - #x1f1400fd - #xf3f60213 - #x10404f1 - #x4fcf800 - #xf5f0f1f8 - #xfe041005 - #xfffe0000 - #x131f1504 - #x1d0cfe00 - #xecf5081b - #x508feec - #x2f6f601 - #xecf2f6fc - #x40f14fe - #x400f7f9 - #x1a1c0d05 - #x1305ff08 - #xeafa111e - #x904f5ee - #xfff2f602 - #xeaf7f9fe - #xe1511f5 - #x7f9edfc - #x19110e0c - #xb050411 - #xf0021718 - #x8fff4f7 - #xf9f2f803 - #xeffbfbfe - #x14130af0 - #x5efea07 - #xd0c1712 - #x90b0911 - #xfa08160d - #x4f8fc00 - #xf5f4f903 - #xf5fafcfb - #x110f04f2 - #xfee9f210 - #x6161e0d - #xd0d080a - #xa1106 - #xfef70703 - #xf5f7f601 - #xf7f9fef8 - #xc0d02f7 - #xfaecfc0f - #x91f1a06 - #xf080404 - #xa0d06 - #xfafc0d03 - #xf8f6f200 - #xf5fb00f6 - #x90d02fa - #xfcf40007 - #x131f1004 - #xb010205 - #xd0b08 - #xfb020d05 - #xfbf3f0ff - #xf4fefdf3 - #xd0c01fb - #xf9fd00 - #x1a1c0b08 - #x1fe070b - #x60f0805 - #xfc040d0c - #xfcf0f1ff - #xf601f9f2 - #x100801fb - #xf9f903 - #x18110d0e - #xfa010d10 - #xe0e03fe - #xfc051114 - #xfbeff4fd - #xf801f5f4 - #xc0203fc - #xfff9f908 - #x100c1510 - #xfd0b1110 - #x1207fdf7 - #xfb061914 - #xfaf3f5fa - #xf8fdf5f6 - #x50005fb - #xfffcfd0b - #xb11170b - #x4110f0c - #xdfef8f6 - #xfb0a1c0d - #xfcf6f5f7 - #xf7faf6f8 - #x20205fa - #x4000108 - #xb141305 - #x9110c0b - #x4faf7f9 - #xfd0d1806 - #xf9f2f6 - #xf5fbf8f8 - #x20302f8 - #xb040204 - #xd120906 - #xb0e0e0c - #xfbf8fd - #xfe0c1105 - #x4f8f0f6 - #xf6fcf7fb - #x300fff8 - #xf060103 - #xa09070d - #xa10120c - #x1fcf800 - #xff0a0f08 - #x7f7f0f5 - #xf7fcf801 - #xfafff9 - #x10080205 - #x4020b11 - #xb14120a - #x3f9f901 - #x91007 - #x8f8f0f3 - #xf8fcfe08 - #xf8f602fa - #x110c0405 - #xfc000d10 - #xf160f05 - #xfff5ff04 - #x3090eff - #x6f8eef4 - #xf8fd050d - #xf2fa05f9 - #x180f0400 - #xf8040c0c - #x11120a01 - #xf7f90406 - #x60807f9 - #x3f7eefa - #xfa010c0b - #xf40102f8 - #x1e0e00fa - #xf905050e - #x110d0800 - #xf6000609 - #x70300fc - #x3f7f002 - #xfe080f07 - #xfb03fef9 - #x1f08fcf7 - #xfa030112 - #xf0a0afe - #xfe04040c - #x2ffff03 - #x4f8f807 - #x10c0b02 - #xfffbff - #x1701fbfb - #xf9ff0519 - #xa080dfd - #x501030f - #x105 - #x5fb0006 - #x40d0500 - #xf90006 - #xafffe01 - #xf8000c15 - #x5090cfa - #x4fd0510 - #x2030001 - #x7020503 - #x30b0100 - #xfaf80b0a - #x1050202 - #xfc050c07 - #x30a09f9 - #xff090c - #x400feff - #x2040603 - #x706ff05 - #xf7060e02 - #x90501fe - #x5090300 - #x70b00fe - #xff070b02 - #x1fafd05 - #x2050708 - #x804fd00 - #xff0a06fe - #xf030000 - #x502f900 - #x90a0506 - #x6060300 - #xfcf80409 - #x4060808 - #x800f8fd - #x204ff00 - #xcff0607 - #xfffb08 - #xc0c0e06 - #x6000004 - #xf9fc0a04 - #x6050705 - #x3fcf6fd - #xffff03 - #x4010e0a - #xfe000009 - #xf0f0e00 - #xfffa0009 - #xf90109fa - #x6030601 - #xfdfaf5fd - #xfcfe0401 - #x20b1105 - #x3050105 - #x101009fd - #xf5fa0510 - #xff0400f3 - #x2000402 - #xfafdf6fd - #xfe0105fb - #xa0f0901 - #x9040106 - #x100e0400 - #xf3fe0a12 - #x101f9f4 - #xfffe0504 - #xfc00f4fa - #x20201f5 - #xf080104 - #x803080b - #x100e0305 - #xf6010c0f - #xfefaf7 - #xfdfe0405 - #x1fff1f6 - #x2fefdf8 - #xafdff0c - #x20a1310 - #x15110504 - #xf900080d - #xfefffef6 - #xfefe0203 - #x1f7eef6 - #xfefd0000 - #xfffa050b - #x51a180b - #x1d1100fe - #xf5fc0514 - #xfe03fff1 - #x1fbff00 - #xfaf2effb - #xfc030901 - #xfcfe0704 - #x121f1404 - #x1d0afcff - #xeff9081c - #x308fae9 - #xf6fc00 - #xf1f1f400 - #x10d10fc - #xfefd - #x1e1d0b02 - #x1403fc08 - #xeafc131f - #x906f1e9 - #xfbf3fb02 - #xeff5f801 - #xb150df2 - #x4faf5ff - #x1d130a07 - #xb020112 - #xed061a19 - #x9fdeff0 - #xf6f2fc06 - #xf2f8fb00 - #x121605ed - #x3eff108 - #x130f100c - #x9050715 - #xf60e190e - #x2f6f6f9 - #xf3f3fd08 - #xf7f9fdfd - #x1313feef - #xfce7f811 - #x917170d - #xd090a0d - #xfd101108 - #xfaf801fe - #xf4f5fc06 - #xf8fafef9 - #x100efcf4 - #xf4eb0211 - #xe1f1607 - #x10060704 - #x100b0a - #xf70006ff - #xf7f3fa03 - #xf7fdfdf6 - #xe0cfdf8 - #xf3f4070a - #x161f1003 - #xb010402 - #x110090d - #xf8060601 - #xfaf0f7ff - #xf600faf6 - #x100b00f7 - #xf7fb0205 - #x1e1a0905 - #xff040b - #x710090b - #xfc080709 - #xf9edf8fd - #xf903f6f7 - #x100801f6 - #xfbfbfc07 - #x1d110d0a - #xfc020911 - #xf0f0401 - #xfd080b11 - #xf5edf9fb - #xfc01f4f8 - #xd0501f6 - #xfcf7fc0d - #x160e150c - #xfd090c14 - #x1208fef9 - #xfe0b1512 - #xf4f0f9fa - #xfefef5fa - #x60303f8 - #xfdf7ff0f - #xd121608 - #x50f0c0f - #xe00f7f6 - #xfe0f190a - #xf5f3f8f8 - #xfcfaf6f9 - #x20501f9 - #xfb030a - #xd191104 - #xc0e0b0b - #x3faf5fb - #xff131603 - #xfaf4f5f6 - #xfafaf7fa - #x20600f7 - #x4000505 - #x11170b06 - #xc0c0c0a - #xfef9f6ff - #x3150f00 - #xfff3f3f6 - #xf9fbf7fd - #x405fef6 - #x9020304 - #x100e080c - #xb0e0e0c - #xfefaf801 - #x3100c03 - #xf2f2f6 - #xfafaf702 - #x1fffdf6 - #xb030306 - #x9070d11 - #xd130e0a - #xf9f802 - #x20d0f03 - #xf3f1f6 - #xfbf9fc08 - #xfbfdfff7 - #xd050506 - #x1061011 - #x12150c06 - #xfdf7fb04 - #x20c11fc - #xf3eff6 - #xfbfa050d - #xf5ff00f7 - #x13090701 - #xfe090d0e - #x14120900 - #xf4f80007 - #x50d0af5 - #xf2eefc - #xfb000c0b - #xf604fff7 - #x190a04f7 - #xfe0a0712 - #x130d07fd - #xf200050c - #x60900f6 - #xf0f002 - #xfd070d07 - #xfc05fbf8 - #x1907fff3 - #x5061a - #xe0a06fa - #xfa05060e - #x303fcff - #xeff806 - #x10e0905 - #x201fafc - #x1401fbf7 - #xffff0a1d - #x90a07fa - #x204070f - #x3 - #xf40106 - #x60f0404 - #xfffbff00 - #xafffcff - #xfcff111c - #x70c05f9 - #x2000a0e - #x300 - #xfb0502 - #x80b0005 - #xf9fb0702 - #x3000001 - #xfd041311 - #x60e01f7 - #xfe000e09 - #x30100fe - #x3030602 - #x7080005 - #xf5021003 - #x5060200 - #x1090802 - #x70c00fc - #xfd060e04 - #x1fdfe01 - #x1060605 - #x9000305 - #xff0f0404 - #xb0200f7 - #x705ff06 - #xb07ff03 - #x40b0501 - #xfcf90208 - #x3070806 - #x8feff01 - #x70bfe04 - #xaff01fe - #x3fbfd0d - #xb090706 - #x8050002 - #xf7fd0a05 - #x5070901 - #x5fafa01 - #x502fe06 - #x1010a04 - #xfa030e - #xe0e0b02 - #x1fe0008 - #xf90409fc - #x40608fe - #xf7f903 - #xffff0205 - #xff0a0f03 - #x1fe0508 - #x101105fd - #xf8fb030d - #xfe0700f4 - #x10406fc - #xfdf8f902 - #xfd0204ff - #x6110c00 - #x7000304 - #x110e0000 - #xf4fe0a11 - #x204f8f4 - #xfd0205ff - #xfffaf900 - #x400f9 - #xe0d0500 - #x7000408 - #x100b0006 - #xf8030d10 - #x1fff5f8 - #xfc020601 - #x2f8f6fc - #x202fafa - #xc020406 - #x4060c0e - #x120b0306 - #xfc050b0e - #xfffdf8fa - #xfc010501 - #x3f5f4fa - #xfffa00 - #x2fd0909 - #x414130d - #x160b0200 - #xfc010612 - #xff01f9f4 - #xfcff03ff - #xfef0f3fc - #xfd000102 - #xfa010d03 - #x121e1105 - #x1807fd00 - #xf5fc091c - #x205f4ee - #xfcfb00fe - #xf6eff600 - #x908fe - #xfd0405fd - #x1e1c0c01 - #x1401fa09 - #xeffe131f - #xa04ece9 - #xf8f7fe00 - #xf2f1fb02 - #x91308f5 - #x2fffbfe - #x1f140703 - #xafeff15 - #xef071c1c - #xafce9ee - #xf2f5ff06 - #xf5f4ff00 - #x1316fff0 - #xf3f806 - #x170e0c09 - #x8000918 - #xf7111a11 - #x3f5edf7 - #xf0f6000a - #xf8f700fc - #x1613f7f2 - #xf8ebfe0f - #xe14110a - #x9040e11 - #x15120c - #xfaf5f7fe - #xf1f60208 - #xf8f9fff8 - #x160df4f5 - #xeeed0811 - #x111f1306 - #xb050b06 - #x6130a0e - #xf5fefd00 - #xf5f60201 - #xf8fdfdf6 - #x1309f8f8 - #xeaf80c0c - #x1c1f0f01 - #x8030505 - #x80f0912 - #xf906fd04 - #xf5f3fffb - #xf800f9f7 - #x1206fbf6 - #xefff0709 - #x1f190b00 - #x100010b - #xc0e0a0f - #xff08fe0b - #xf2f1fdf7 - #xfd00f6fa - #x1106fdf4 - #xf7fe000c - #x1f0f0d02 - #xfb010416 - #x120d0804 - #x2080412 - #xeef1fcf8 - #xfef7fb - #xd05fdf5 - #xfaf90010 - #x170e1205 - #xff070919 - #x150900fb - #x10a0e13 - #xecf3fbf7 - #x2f9f8fa - #x705fcf8 - #xfaf60311 - #x10151505 - #x60b0c14 - #x1000f8f9 - #x211170c - #xeef4f9f6 - #xf7faf9 - #x507fdfb - #xfbfa090c - #xf1c1002 - #xb0b0b0c - #x6f9f4fc - #x6171202 - #xf2f5f7f6 - #xfdf7faf9 - #x608fbfb - #xfd000905 - #x15190a04 - #xb0a0b0b - #xfef6f503 - #x9170aff - #xf6f4f4f6 - #xfcf8f9fb - #x706faf9 - #x20603 - #x16110908 - #xa0b0b0d - #xfdf7f804 - #xb140700 - #xf8f2f4f7 - #xfcf7fb00 - #x502f9f8 - #x5020406 - #xf0a0d0d - #xc100c0e - #xfff7fa03 - #x90f0a01 - #xf7f2f3f9 - #xfcf5ff05 - #xff00faf9 - #x7030706 - #x70b120e - #x14120b09 - #xfdf5f905 - #x6100dfc - #xf8f2f1f9 - #xfbf70507 - #xfb01fafa - #xb060900 - #x30f100f - #x160f0802 - #xf6f6fc0b - #x71208f3 - #xfaf0f0fa - #xfafc0c09 - #xfc04fafa - #x100906f6 - #x40e0c12 - #x120a06fe - #xf2fc0310 - #x90ffdf4 - #xfbedf200 - #xfc060d07 - #x4f8f9 - #x120900f1 - #x6060b1a - #xe0904fc - #xf9030712 - #x807f7fb - #xf9ecf902 - #x10c0a06 - #x300f8fa - #xe05faf4 - #x3ff111f - #xb0a00fc - #x105090f - #x401fb02 - #xf6f10103 - #x80d0606 - #x2fcfbfe - #x900f9fe - #xfefe181c - #xa0cfffd - #x4040c0c - #x100 - #xf6fa0500 - #xc090407 - #xfbfc0101 - #x300fe00 - #xfc041a14 - #xc0cfcfb - #xff050e08 - #x10102fc - #xf9010600 - #xb030406 - #xf6020503 - #x40101fd - #xc1109 - #xc0afafb - #xfc0a0e04 - #x2fffefe - #xff070503 - #xa000406 - #xfc0c0704 - #xa0400f8 - #x6090103 - #xb07fc00 - #x10d0900 - #xfefdff08 - #x5070503 - #x5000501 - #xb0a0008 - #x601fcf7 - #x5fd010c - #xa020106 - #xc08ff05 - #xf9fd0708 - #x6090700 - #x3fc0002 - #xb03ff09 - #x10100 - #xfff50810 - #xc0a0704 - #x700fe07 - #xf9040900 - #x40906fa - #xfff8ff04 - #x3ff0308 - #xfd080803 - #xfdfb0c08 - #x100e0400 - #xfdfb020d - #xff0901f7 - #x20903f7 - #xfcf6ff04 - #x10403 - #x4100a00 - #x1000801 - #x120cfe00 - #xf7fd0810 - #x505f7f5 - #x700fa - #xfcf70001 - #x10400fe - #xe1005fe - #x4010304 - #x1107fe06 - #xf8030e11 - #x4fff3fa - #xfe0602ff - #xfff7fdfe - #x403f9ff - #xd080401 - #x202070c - #xf060308 - #xff070c0f - #xfaf5fe - #xfe060300 - #xf4fafb - #x3fff703 - #x4020804 - #x40c0f0e - #x10070502 - #x40a12 - #xfffcf8fb - #xfd0403fe - #xfdf0f8fb - #xfdfd06 - #xfb060d02 - #xf181107 - #x1206ff00 - #xfdfe0a1a - #x300f3f3 - #xfb0000fc - #xf7eff9fd - #x30301 - #xfd0b09fd - #x1d190b00 - #xe00fa0a - #xf4ff131f - #x9ffecee - #xf8fdfdff - #xf3f0fdff - #x70d03fa - #x306fffd - #x1f130600 - #x9fcff17 - #xf2071d1c - #xbf8e5ef - #xf3fafe06 - #xf3f301fe - #x1213fdf4 - #x2fafb03 - #x190e0704 - #x3fc0a1d - #xf9131d14 - #x3f0e7f9 - #xf0f9020b - #xf5f803f8 - #x190ff4f4 - #xf7f3000c - #x12100d08 - #x4021115 - #x416140d - #xfbf1ee01 - #xf0fa0509 - #xf6fc00f4 - #x1908f1f7 - #xecf40811 - #x13171104 - #x6060f0b - #xc120c10 - #xf7f8f506 - #xf2fa0600 - #xf7fffcf3 - #x1502f5f8 - #xe7fe0d10 - #x1c1c10fc - #x5050708 - #xf0d0c14 - #xfb00f709 - #xf2fb03f7 - #xfa00f9f6 - #x1200faf7 - #xee04090f - #x1f160bf7 - #x30010 - #x100b1010 - #x201f90e - #xeff9fef4 - #xfefef9f9 - #xf02f9f5 - #xf7020411 - #x1d100af8 - #xfe02031a - #x130b0e06 - #x6010014 - #xebf8faf7 - #x2fafbf9 - #xc03f7f8 - #xfcfc0413 - #x160f0dfe - #xff040a1d - #x150a05fb - #x5030d15 - #xe9f8f8f9 - #x2f8fdf6 - #x903f6fc - #xf9f80912 - #x10160f00 - #x5070f17 - #x1102fbfa - #x40b140f - #xebf8f7f9 - #xf7fef3 - #x804f700 - #xf6fc0d0b - #x121c0e00 - #x9090f0e - #x7f9f600 - #x9151304 - #xeff8f6f7 - #xfdf7fcf2 - #x904f900 - #xf7010c05 - #x191c0a00 - #x9080c0b - #xfef3f705 - #x111809ff - #xf2f6f3f9 - #xfbf8fbf6 - #xb03fafe - #xfc050705 - #x1b120903 - #x8090a11 - #xfbf4fb07 - #x121303ff - #xf3f4f2fc - #xfcf7fcfb - #xa01f9fc - #x40407 - #x150c0c07 - #xa0d0b13 - #xfcf6fc05 - #x100e0500 - #xf3f3f2fe - #xfbf600fe - #x4fff7fc - #x2030707 - #xb0d1009 - #x100f0b0e - #xfcf4fb07 - #xc0e08fc - #xf4f2f1ff - #xf9f80700 - #xfff7fd - #x5060901 - #x912100b - #x150d0907 - #xf7f3fc0e - #xb1204f5 - #xf5eff0fd - #xf7fe0a00 - #xf8fc - #x80b07f9 - #xa110f0f - #x12090601 - #xf3f60116 - #xf12f9f4 - #xf6edf2fd - #xf9060c02 - #x300f8fb - #xc0cfff3 - #xb091016 - #xb070200 - #xf8fe0916 - #x1008f2fb - #xf2ecf800 - #xd0b03 - #x5fdf9fa - #xd07f7f9 - #x601161a - #x908ff02 - #x30c10 - #xa00f602 - #xeef1ff02 - #x70c0a03 - #x2fbfafc - #xa01f500 - #xff011c18 - #xb08fc01 - #x5050c0c - #x4feff02 - #xedfa0301 - #xc070a02 - #xfcfcfc02 - #x5fefb01 - #xfa0b1f14 - #xe07fbfe - #x2080d09 - #x10000fe - #xf2020200 - #xb030a00 - #xfa010006 - #x40000fd - #xfe12170b - #xe04fafc - #xc0c08 - #x100fdfe - #xfa060200 - #x80009ff - #xff080009 - #x50300f5 - #x40f0907 - #xd01fbfe - #x3100807 - #xfefc05 - #x2080403 - #x6000601 - #x80c0009 - #x803fdf4 - #x802010a - #xa01ff04 - #xb0d0204 - #xfcfd030d - #x9070400 - #x30202 - #xd010407 - #x2fff702 - #xfffb0a0b - #x8030406 - #xe00fe0a - #xfb020905 - #x80903fa - #xfefd0104 - #x6fd0608 - #xff030008 - #xf7fe0f06 - #xd0a0501 - #x2fb000d - #x803fc - #x609fff7 - #xfafa0303 - #x704 - #x40a0504 - #xfa050bff - #x110900ff - #xfafb0811 - #x506faf7 - #x509fcf9 - #xf9fa0300 - #x1030301 - #xe0f0400 - #x50300 - #x1003ff02 - #xf8000d12 - #x7fff4fa - #x405fc00 - #xfafb01fe - #x602fdff - #x110a0100 - #x20309 - #xc010305 - #xfe070f11 - #x1f8f6ff - #x305ff01 - #xfbf9fdfb - #x5fdfb02 - #x8060403 - #x1060b0e - #xb040603 - #x2070c10 - #xfef7fa00 - #x2050000 - #xf9f6fafb - #x1faff05 - #x90803 - #x80f1109 - #xc050201 - #x20d14 - #xfbf9f9 - #x4fffd - #xf5f2fafb - #xfefe0502 - #xff0e0800 - #x17160cff - #xc00fb08 - #xf800141c - #x5faf0f1 - #xfd00fc00 - #xf1f3fdfc - #x40605fd - #x70b01fe - #x1f1204fe - #x5fb0018 - #xf3091e19 - #x8f4e8f1 - #xf9fcfb07 - #xf0f600fa - #xe0cfef7 - #x601fc02 - #x1a0d0302 - #xfb0c1e - #xf9141f13 - #x2ebe5fa - #xf5fa010d - #xf1fc01f5 - #x1709f7f5 - #xfcf9000b - #x120c0806 - #xff001419 - #x619170d - #xf9e9eb04 - #xf4fc070b - #xf401fff1 - #x1800f5f6 - #xeffa0714 - #x14110e01 - #x1081110 - #xf13110d - #xf5eef20b - #xf4000900 - #xf602faf0 - #x14fcf7f6 - #xeb010c17 - #x1a150ef8 - #x40a080f - #x110c110f - #xfaf6f80c - #xf30103f7 - #xfa01f8f3 - #xdfcfaf5 - #xf2070b17 - #x1f1609f0 - #x3060114 - #xe0a150d - #x1f8fc0e - #xf200fbf6 - #xfffdf9f5 - #xafef9f6 - #xfc050917 - #x1c1204f1 - #x1041c - #xe0e1302 - #x3f80312 - #xf0fef7fa - #xfbfdf4 - #xa00f5f9 - #xff0916 - #x151103f7 - #x10e1f - #x110e0afb - #x1fc0e14 - #xeffaf500 - #xfafff0 - #x900f300 - #xfbfd0e12 - #x101606fd - #x3051518 - #x1006fefb - #x205160f - #xf0f9f5ff - #xfdfbfdec - #x9fef603 - #xf500110d - #x151b08fd - #x608120f - #x7fbf800 - #x70f1505 - #xf3f7f4fd - #xfbfdfbec - #xafefb02 - #xf5060e09 - #x1b1907fc - #x6090d0e - #xfdf3fa07 - #x10150dfd - #xf4f5f2fc - #xfafdf8ef - #x9fefd00 - #xfa080808 - #x1f1407fc - #x6090913 - #xf6f3ff07 - #x161104fb - #xf4f3f102 - #xfafbfaf4 - #x8fefdfd - #x5050a - #x190f0900 - #x80b0b18 - #xf7f70005 - #x140b03fd - #xf3f1f207 - #xf9fafff8 - #x6fdfafe - #x204070a - #x100f0c03 - #xc0c0e13 - #xf8f6fe05 - #xe0906fb - #xf4f0f407 - #xf6fc02f8 - #x2fcfafe - #x2060906 - #xd130d05 - #x100c0c0a - #xf6f3fe0d - #xd0e03f5 - #xf4eff304 - #xf50206f9 - #x3fbfbfc - #x50b06ff - #x10130d09 - #xf090606 - #xf1f20416 - #x110ffaf3 - #xf3edf401 - #xf70907fb - #x3fafcf8 - #xa0cfefc - #x110d100d - #xa070207 - #xf2f90d17 - #x1406f1f8 - #xf0edf602 - #xff0e08ff - #x2fafbf8 - #xe07f6fe - #xa071612 - #x8070007 - #xfb011210 - #x10fbf400 - #xebf1fb07 - #x70d0afe - #xf9fafb - #xefff404 - #x91d13 - #xa06fe06 - #x2070f09 - #x6f7fd03 - #xebf9ff07 - #xb0a0bfb - #xfdfbfa00 - #x9fafa04 - #xfc121d10 - #xc02ff01 - #x4090c09 - #xfc0101 - #xf1000004 - #xa080bf6 - #xfbfefd08 - #x4fc00fe - #xfe1b180c - #xc00fffa - #x30b0a0c - #x100fc01 - #xfb04ff01 - #x50608f5 - #x1000b - #x301fff7 - #x6170e08 - #x9fefdfa - #x70e080c - #x1fffa07 - #x3040002 - #x20704f9 - #x804030b - #x403faf7 - #x90a0709 - #x6fefe00 - #xe0c050b - #xfefcff0d - #x9060302 - #x1040200 - #xd030309 - #x401f6ff - #x4fc080c - #x6000306 - #x1006000a - #xfc00090b - #xa0501fd - #x30106 - #x5000a03 - #x1f9fc0e - #xf8030e05 - #x6050500 - #x7fc030c - #x70700 - #xa07fef8 - #xfc000306 - #xff000a02 - #x201040b - #xf70a09fe - #xc0802fa - #xfcf90811 - #x506fef9 - #xa05f9fa - #xf9000303 - #xff0407ff - #xc080402 - #xff0c00ff - #xd0200fb - #xf7ff0f13 - #x6fff7f9 - #xa02f900 - #xf9000000 - #x30302fe - #x12090100 - #x1060007 - #x9000200 - #xfb061112 - #x1f8f7fe - #x900fc04 - #xf900fcff - #x5ff00fe - #xe050004 - #x3070e - #x5020701 - #x10a0f0f - #xfcf6fc00 - #x701ff02 - #xf9fcfafe - #xfa0300 - #x7070406 - #x40a0e0b - #x8050300 - #x1070e10 - #xfbf8fefc - #x501fe00 - #xf6f9f9fe - #xfbfc0800 - #x60c0603 - #xe120d02 - #x902ff05 - #xfc051213 - #xfff9f7f4 - #x200fb00 - #xf3f7fbfc - #xfe0309fc - #xb0d0200 - #x1a1403fd - #x5fbff13 - #xf50a1b16 - #xf3ecf2 - #xfffbfb08 - #xf1fafdfa - #x80802f7 - #xc04fe02 - #x1a0c0002 - #xfdfa0c1e - #xfa171f0f - #xfdeae7fb - #xfbf9000e - #xf1fffef7 - #x1106fbf4 - #x2fdff0a - #x14090306 - #xfc01171b - #x51b1a09 - #xf5e5eb06 - #xf7fc0a0c - #xf403fbf2 - #x13fff9f3 - #xf6fc0615 - #x110c0b03 - #xb1413 - #x10161307 - #xf1e7f50c - #xf6010b02 - #xf904f7f1 - #xdfafaf3 - #xf2010c1c - #x16120bf6 - #x40d0a11 - #x10101307 - #xf3edfd0c - #xf70505fa - #xfd00f5f1 - #x7fafaf4 - #xf8060f1c - #x1b1504ed - #x5070417 - #xb101606 - #xf8f1010a - #xf804fbf9 - #xfef7f3 - #x4fdf8f5 - #x106101a - #x1a14fced - #x301071e - #x9131501 - #xfbf3080d - #xf9fff500 - #xfbfbf1 - #x5fef4fb - #x3021216 - #x1512faf6 - #x100121f - #xc150afb - #xf9f81010 - #xf9faf503 - #xfefdfbee - #x7fbf500 - #xfd001312 - #x1312fefd - #x1051a18 - #xe0efffb - #xf902170e - #xf8f5f703 - #xfb01f8eb - #x6f8fa01 - #xf605140e - #x171402fd - #x30a1610 - #x9fff900 - #x10e1604 - #xf8f4f700 - #xfb02f4ea - #x5f8ff00 - #xf60a0f0c - #x1d1504f9 - #x40b0d0f - #xfdf6fc05 - #xc130ffa - #xf7f3f500 - #xfb00f2ee - #x4fa01fe - #xfd0b0a0d - #x1f1203f7 - #x5090917 - #xf4f50105 - #x131105f6 - #xf6f0f406 - #xfcfff3f1 - #x3fc00fc - #x107070e - #x1b0f02fa - #x6090b1c - #xf2f90302 - #x120a02f8 - #xf4eef60e - #xfafdf8f4 - #x2fcfffc - #x304080d - #x141005ff - #xa0b1118 - #xf5fb0003 - #xe0803f8 - #xf3edf90f - #xf8fffdf5 - #x1fbfefc - #x2060b0a - #x11130801 - #xd0c0f0f - #xf4f6ff0a - #xb0b02f4 - #xf3eefb0a - #xf704fef5 - #xfafff9 - #x40b0705 - #x14130903 - #xd0a080a - #xf0f40612 - #x110cfbef - #xf1edf907 - #xfb0900f8 - #xfa00f6 - #xb0c0003 - #x150f0c06 - #x908020d - #xecf91113 - #x1404f4f1 - #xeeedf708 - #xc02f9 - #xfffafdf6 - #x1005fa05 - #xf0d100b - #x705010f - #xf103160c - #x10f8f4fb - #xeaeffa0e - #x80d06f8 - #xfdfbfaf9 - #x11fcf907 - #x410150f - #x904020b - #xfc0b1206 - #x4f3fd01 - #xebf4fe11 - #xb0c08f4 - #xfbfbf900 - #xaf7ff05 - #x191811 - #xa010401 - #x20c0c08 - #xfdf80203 - #xf2fa000c - #xa0d06ef - #xfcfbfc07 - #x3f80100 - #x41f160e - #x80002f9 - #x40b0a0d - #xfcfeff03 - #xfcff0005 - #x60f01ef - #xfffd020a - #xfa - #xc1c0f0a - #x3fffef7 - #x70b0b0f - #xfefc09 - #x4000002 - #x40dfdf4 - #x3000708 - #x302f9fb - #x11110b08 - #x1fefcff - #xe0b0a0d - #xfffbff10 - #x8000002 - #x30afcfd - #x7000905 - #x5fef503 - #xa050a09 - #x1ffff05 - #x1106060a - #xfcfd070f - #xa050200 - #x1060004 - #x7000a04 - #x2faf70b - #xfc000d07 - #x4030404 - #xdff020b - #xfd050c03 - #x80300fb - #x201030a - #x60800 - #xfef8060b - #xfb0e0902 - #x70602f7 - #xfdfd0a0b - #x40904f9 - #xa01fafa - #xfe020408 - #xff0707fd - #x4020904 - #x11000ff - #xa04fef5 - #xf5ff1011 - #x602fbf6 - #xbfef900 - #xfd030006 - #x20704fb - #xd060300 - #x606fc07 - #x600fffc - #xf7071311 - #x2faf8fb - #x8fcfc04 - #xfd02fe06 - #x30201fa - #xe040003 - #x300030f - #x3000200 - #xff0d120e - #xfaf7fc00 - #x6fd0003 - #xfdfefb05 - #xffff03fc - #xa030307 - #x1040d0f - #x4040300 - #x30c0f0b - #xf7f900ff - #x5ff0000 - #xfafafb04 - #xf9ff07fc - #x9060705 - #x80f0c07 - #x7030001 - #x9100e - #xfafcfcf8 - #x4fefeff - #xf7f9fb02 - #xfa0307f9 - #xd090500 - #x12120302 - #x5fe000c - #xfb0c150f - #xfdf7f1f4 - #x2fafd04 - #xf4fafbff - #x20904f6 - #x110600ff - #x180dfe05 - #xfefb0a18 - #xfc161b0e - #xf9ede8fc - #xfdf80209 - #xf4fffafb - #xb07fef3 - #x800ff07 - #x1405020a - #xf901181b - #x81e1905 - #xf2e5ec07 - #xf7fb0b09 - #xf802f8f7 - #xe00faf0 - #xfdfd0413 - #x10070805 - #xfd0c1716 - #x121b1301 - #xebe4f70d - #xf6020e01 - #xfd01f5f5 - #x8fcf9f1 - #xf9000e1a - #x110e09fa - #x6100e13 - #x12141001 - #xeaea010b - #xfa0708fa - #x1fef3f3 - #x2fcf7f3 - #xfe05151b - #x161400ef - #x9090a17 - #xb141202 - #xeef00607 - #xfd06fff9 - #x1fbf4f3 - #xfef5f8 - #x3071716 - #x1912f5f0 - #x6010d1c - #x8191201 - #xf1f40709 - #xff00f8ff - #xfbf6f2 - #x3fef3fc - #x4061812 - #x180df2f8 - #x161d - #xd1c0afd - #xf0fa0d0f - #xfff7fa02 - #xfdfff5f1 - #x4f9f5ff - #xfe08180e - #x1609f7ff - #xff071c17 - #x1313fefd - #xf204130f - #xfbf2fd01 - #xfd02f2f0 - #x3f6fc00 - #xf90b150e - #x1809fefe - #x10e1711 - #xf04f800 - #xfb0f1507 - #xf8f3fefc - #xff02eef0 - #xf602fe - #xfa0f120e - #x1d0c02f9 - #x40e0d14 - #x1f9fc03 - #x8150efb - #xf6f2fafd - #xffedf2 - #xfefa04fc - #x10e0d0e - #x1e0efff5 - #x60a091a - #xf6f80103 - #x111304f3 - #xf4f0f905 - #xfbeff4 - #xfefe02fb - #x6090b0e - #x1b0dfdf7 - #x6080e1f - #xf2fd0301 - #x120cfef4 - #xf3edfb0e - #xfffbf3f4 - #xff00fc - #x6040c0e - #x160efefd - #x809131c - #xf5ff0000 - #xc08fef6 - #xf0ed0011 - #xfcfef6f4 - #xfffdfffb - #x2070e0a - #x140f0100 - #xb0c1314 - #xf6fafe07 - #xa09fff4 - #xefef030d - #xfb02f9f5 - #xfefc00f8 - #x40a0c07 - #x160f0401 - #xc0c0c10 - #xf1f7030e - #xd0afbec - #xeef10109 - #x5faf6 - #xfcfcfff5 - #xa0b0506 - #x160e0601 - #xb080512 - #xebfb0f10 - #x1205f4ea - #xebf0fd0b - #x506fdf7 - #xfafefbf5 - #x10050005 - #x110e0907 - #x9040614 - #xec07160a - #xefaf2f1 - #xeaeffc13 - #xa0800f5 - #xfbfef7fa - #x10fd0004 - #xa120d0f - #x802090f - #xf6121205 - #x1f2f9fd - #xeaf00117 - #xc0b02f0 - #xfcfdf600 - #x8f70203 - #x8191113 - #x7010904 - #x1120905 - #xf9f80002 - #xf0f50611 - #xb0f00ec - #xfcfbfb06 - #xfff904fe - #xc1d1412 - #x50105fc - #x60c080c - #xf8fe0004 - #xf8fa0607 - #xa11f9ed - #xfdfb0208 - #xfcff01fc - #x141c120c - #x201fdfa - #x70a0b0e - #xfdfffe07 - #xfffd0400 - #xa0ef4f4 - #xfffe0905 - #xfbfe - #x19130e08 - #xf701 - #xb0b0e09 - #xfefb010d - #x2fe0201 - #xa09f5fe - #xa03 - #x4fcf703 - #x100b0c07 - #xfb07 - #xe090b07 - #xfbfb090f - #x4000200 - #x803fb05 - #x30901 - #x3f5fa0b - #x5080c08 - #x2010006 - #xc030806 - #xfb010d08 - #x80301fd - #x302020a - #x40a01 - #xfff5020e - #xfb0c0a04 - #x50503fd - #x2fd070a - #xa09f9 - #x501fdfa - #x201070b - #x20a0300 - #xf9000d02 - #x70e0301 - #x803faf7 - #xf5030f0a - #x607fff3 - #x6fefafe - #x2060b - #x40a01fc - #x30607ff - #xc07ff04 - #x600f8fb - #xf40a130e - #x4fff8f8 - #x4fafd03 - #x100030b - #x506fffa - #xa050201 - #x7fe020d - #x1fffd01 - #xfe10130b - #xfdfaf9ff - #xfa0003 - #x1fd020b - #x103fefb - #x9020404 - #x1ff0b11 - #x2020001 - #x6100f08 - #xf7fbfe02 - #xfd01fe - #xfffa0108 - #xfc0200fd - #x7040802 - #x30a0e0d - #x5040000 - #x60c0d08 - #xf9fffdfe - #xfe00fb - #xfaf90006 - #xfc0602fb - #xa0708fd - #xd100608 - #x4000005 - #x10c110c - #xfcfdf4fa - #xfbfffd - #xf8faff04 - #x10a01f7 - #xd0703fa - #x14090009 - #xfffd0711 - #x113140b - #xfbf3eaff - #xfdf90202 - #xf8fcfd01 - #x809fef4 - #xc02ff00 - #x1302020e - #xfa021419 - #xb1c1505 - #xf2e7eb0a - #xf5fd0b02 - #xfbfdfafc - #x904f9f2 - #x2ff030c - #xe03090b - #xff0d1817 - #x161c10ff - #xe9e4f710 - #xf4050ffe - #xfdf7f8 - #x700f5f3 - #xfd000d15 - #xc0a0900 - #x6101314 - #x17180cff - #xe5ea020d - #xf90c09f6 - #x3faf5f5 - #x1fff3f7 - #xfe061914 - #x1211fff5 - #xb0b0e14 - #x10160b02 - #xe7f30508 - #x900f3 - #x2f6f4f4 - #xfef1fc - #x10b1c0e - #x170ff3f6 - #x7031318 - #xe190a04 - #xeaf9030a - #x400fbf6 - #xf8f4f6 - #x2fbf100 - #x20f1c09 - #x1905effd - #x3191a - #x141a0503 - #xedfe0513 - #x1f8fdf9 - #xfefcf3f7 - #x3f7f500 - #xff10190a - #x17fef602 - #xfe091c17 - #x1c14fd00 - #xf0040c16 - #xfaf602f6 - #xfff1f8 - #xf5fdff - #xfd13150c - #x15ffffff - #x1111515 - #x1904f900 - #xf90f100e - #xf4f702f2 - #x2feeff7 - #xfbf701fd - #x14130c - #x170401f8 - #x6110d17 - #xafafb01 - #x6160dff - #xf2f8fdf5 - #x5f9eef6 - #xf8fc01fd - #x711110a - #x1909fdf5 - #x90b0b1c - #xfaf90102 - #x111502f5 - #xf1f5fa00 - #x4f4f0f6 - #xfb00fffe - #x90c1009 - #x190af8f8 - #x707111f - #xf5ff0201 - #x140efaf5 - #xeff1fe0b - #x1f4f2f6 - #xfe01fd00 - #x7091007 - #x1708f8fe - #x608181e - #xf901ff01 - #xf07f9f8 - #xecf00511 - #xfff7f5f5 - #xfeff - #x2091107 - #x1509fe01 - #x80d1818 - #xfcfdfc04 - #xb07faf6 - #xeaf4090d - #xfffbf6f4 - #xfefffefb - #x30d0f05 - #x17090000 - #xb0e1115 - #xf6f8000b - #xc07f7ef - #xe9f80809 - #x2fff8f4 - #xfc00fcf9 - #xa0c0a04 - #x170a0200 - #xb090b17 - #xeefc0b0e - #xf04f1e8 - #xeaf6020b - #x700fbf4 - #xfc01f7fa - #xf070702 - #x120b0305 - #x8030b18 - #xec08120b - #xcfceced - #xe9f20213 - #x900fdf2 - #xfd00f3ff - #xc000600 - #xe0e060f - #x6011113 - #xf8140e06 - #x2f5effa - #xe9f10716 - #xa06feee - #xfefdf404 - #x4fe07fd - #xe120d14 - #x4031009 - #x5140607 - #xf7f6f903 - #xebf50e11 - #xc0dfbeb - #xfff9f908 - #xfbff05fc - #x13171513 - #x3050800 - #xc0d040a - #xf5fefe06 - #xf1fc1002 - #xf0ef4ed - #xfdf90108 - #xf80201fc - #x1a16160c - #x105fc01 - #xb08090b - #xfb00ff07 - #xf6000afb - #x1109f0f4 - #xfcfd0706 - #xfd02fdfe - #x1b141205 - #x201f508 - #xa0a0d07 - #xfffe010a - #xfa0004fd - #x1101f3fd - #xfc020706 - #x3fcfb02 - #x160f0e05 - #x2fef70e - #xc0d0d01 - #xfbfc090d - #xfd0003ff - #xdfcfa03 - #xff060505 - #x1f6fe06 - #xb0c0b07 - #x2fefe0c - #xb0a0902 - #xf9000f09 - #x102fd - #x8fc0107 - #x80305 - #xfbf50606 - #x40e0a07 - #x4010201 - #x4040804 - #xff080dff - #x40300fa - #x300070b - #x2090303 - #xf8fd0c05 - #x3100602 - #x704fef7 - #xf9010c08 - #x60a00f4 - #x200fbfc - #x2030b09 - #x8070001 - #xfa0a08ff - #xe0602fe - #x6fdf300 - #xf70c0f0a - #x703f6f7 - #xfcfb01 - #x2010a0b - #x907fdfe - #x4090200 - #xafd0205 - #x1faf706 - #xff13110b - #xfcf600 - #xfefbff03 - #x2fe0a0a - #x703faff - #x7040303 - #xfd0b0d - #xfeff06 - #x9130e06 - #xfbfbfb06 - #xfcfd01ff - #xfffc0907 - #x202fb00 - #x4030701 - #x40f0d - #x3010002 - #xc100b05 - #xfafffe04 - #xfdff00f9 - #xfbfb0806 - #x4feff - #x50807fb - #x80d0c0a - #x501ff01 - #x80c0c07 - #xfefff700 - #xfdfefef9 - #xf9fc0504 - #x407fefb - #x90a02f8 - #x1109060b - #xff030a - #x60f1009 - #xfff8ef02 - #xfafc00fd - #xf9fc0203 - #xa08fcf7 - #xa06fefd - #x1100060f - #xfb010c15 - #xc171103 - #xf7eaee0d - #xf5ff0600 - #xfbfb00ff - #xb04f8f5 - #x5000006 - #xafe0c0f - #xfe0c1617 - #x171a0dfd - #xeae4f915 - #xf4070bfb - #xfff9fef9 - #x701f3f8 - #x90d - #x8070b05 - #x7111612 - #x1b1607fd - #xe3e90313 - #xfa0e08f2 - #x1f7f9f4 - #x4fff0fc - #xfe08160e - #xc0e03fc - #xc0d1310 - #x16130503 - #xe4f4040e - #x30d00ec - #xfff6f5f4 - #x3fcef00 - #x111b08 - #x150af7fb - #x7071413 - #x14150508 - #xeafc0011 - #x605fcec - #xfdf6f3f8 - #x4f7f301 - #x2161905 - #x17fef300 - #xff081818 - #x1b150408 - #xeffe0018 - #x2fdfced - #xfcf8f4fd - #x2f3f900 - #x1191607 - #x14f5f901 - #xfe10191a - #x1f0e0002 - #xf301071e - #xfafa00ec - #xfffaf5fe - #xfdf2fdff - #x219120b - #xff70000 - #x3161518 - #x1e02fcff - #xfb091016 - #xf2feffea - #x3f7f4fb - #xf8f800fe - #x717120b - #xd0001f9 - #xa120d19 - #x10f9fd00 - #x6110f06 - #xf0fffaee - #x5f2f4f8 - #xf8fefe00 - #xd141207 - #x1006fbf7 - #xb0b0f1d - #xf80002 - #x121304f9 - #xf1fbf6fa - #x3eff5f5 - #xfa01fc04 - #xe101201 - #x1306f4fb - #x706161f - #xf8ff0203 - #x150df9f8 - #xeff5fb08 - #xeff6f4 - #x1fc05 - #x90e1100 - #x1503f601 - #x4091c1e - #xfc01ff02 - #x1205f4fc - #xecf5030f - #xfcf3f7f3 - #x100fe03 - #x4100f00 - #x1400fb02 - #x50e1d1b - #xfdfc04 - #xc01f7fb - #xe8fa0b0e - #xfdf6f7f1 - #xff00 - #x3110e02 - #x14020000 - #xa111519 - #xfbf7fe08 - #xc03f6f2 - #xe9000a0a - #xf8f8ef - #xff00fbfe - #xa100c01 - #x14050000 - #xc0c1119 - #xf2fa060c - #xe01f0ec - #xebff050b - #x4faf9ee - #xff00f600 - #xe0c09ff - #x1207ff04 - #x806131a - #xef050e0c - #xcfbe7ef - #xedf90511 - #x4fdfbed - #xfff404 - #xa0707fc - #xf07030d - #x3031615 - #xfb110c09 - #x2f3e6fd - #xeaf60b14 - #x502faeb - #x2faf607 - #x20406fb - #x11090c14 - #x8150f - #xc120508 - #xfaf3ee0a - #xe8f9130c - #x908f7e9 - #xf6fc08 - #xfc0603fc - #x140d1410 - #x20c0c0a - #x14090209 - #xf8f9f90d - #xea0214fe - #xf0af2eb - #xfcf60109 - #xfa0600fe - #x18121807 - #x40a0009 - #x10040709 - #xfdfefe09 - #xef080cf7 - #x1401f0f0 - #xfafc050a - #xff03fd00 - #x19151401 - #x502f810 - #xa070c05 - #xfe0109 - #xf50803f8 - #x13faf3f7 - #xfb02040c - #x2fefd00 - #x16140e00 - #x4fbfa14 - #xa0d0b01 - #xfdfd060c - #xf90400fd - #xef5fbfd - #xff06010f - #xf900ff - #x10110a04 - #x3fa0111 - #xd0e0601 - #xfa000c0b - #xfc0301fd - #x7f70200 - #x307010e - #xf8f80500 - #xa0f0b06 - #x2fd0408 - #xa090403 - #xfc070d02 - #xff0300f9 - #x2fd0803 - #x6070109 - #xf30009ff - #xa0e0a03 - #x40000ff - #x60706 - #x40c06f7 - #x203fcf9 - #x1010a08 - #x7080004 - #xf6070aff - #xd0a04fe - #x6fff6fd - #xf80a0c09 - #x906f6fb - #x1fdf901 - #x1070b04 - #xa02ff01 - #x30a0003 - #xb0100fa - #xf4f80b - #x4100d0a - #x5fef203 - #xfffbfd05 - #x1030c06 - #x900fc02 - #x7060005 - #xfd0505 - #xfcf7000c - #xe140d07 - #xfefaf90c - #xfdfc0001 - #xfe020d03 - #x6fffc02 - #x4040304 - #xfc040e0a - #xfffe0304 - #x12100a03 - #xfdfcff0b - #xfcfffffc - #xfb020b01 - #x4ffff01 - #x3080400 - #x20b0f08 - #x2000100 - #xe0d0904 - #xfefe06 - #xfdfffbf9 - #xf9020801 - #x60200fd - #x70bfffc - #xc0b0b08 - #x1ff0006 - #x80d0c06 - #x1f8f605 - #xfafefbfc - #xf9000701 - #x903fdf9 - #xb08fafe - #xd030a0c - #xfe000711 - #xb120e03 - #xfbeef50c - #xf700ff00 - #xfafe05fe - #xb02f9f8 - #x901fc06 - #x7010e0e - #xfe071115 - #x13160afd - #xede5fd16 - #xf70605fe - #xfcfb01f7 - #x900f4fa - #x200040b - #x2060f09 - #x6111611 - #x1a1404fb - #xe2e90617 - #xfe0d04f3 - #xfcfafcf2 - #x7fdf3fe - #xff070f0a - #x70c0601 - #xc10150b - #x190e0103 - #xe3f40814 - #x70effe9 - #xfbf9f7f3 - #x5f7f501 - #x131607 - #x1208fdfe - #x80c130e - #x170c040a - #xeafc0116 - #xc07f8e5 - #xf9f8f3fa - #x3f3f901 - #x41b1206 - #x14fcf9ff - #x10d1416 - #x1c0e0709 - #xf2fb021d - #x500f7e5 - #xf9f7f400 - #xf1fe00 - #xa1c0f09 - #xef2fd00 - #x131519 - #x1f0b0401 - #xf6fb0a1f - #xfc00f7e7 - #xfcf5f801 - #xf9f300fe - #xe1a0e0b - #x6f500fe - #x5171319 - #x1d0300fc - #xfb01151b - #xf502f6e8 - #xf3fcfe - #xf6f7ffff - #x1218100a - #x2ff00fa - #xf141117 - #x10fafefd - #x30b170a - #xf502f1ee - #xf1fbf6 - #xf6fefc03 - #x13151102 - #x706f8fb - #xe0b1316 - #xfff80003 - #xe100bfd - #xf8fdeef9 - #xfef0f9f2 - #xfc00fd08 - #x121410fd - #xe05f400 - #x7071a19 - #xf7fd0205 - #x150cfdfa - #xf6f6f307 - #xf9f1f8f1 - #x1ffff09 - #xd140dfb - #x11fdf605 - #xb1f1b - #xfc000003 - #x1301f7ff - #xf0f5ff10 - #xf6f3f7f0 - #x2fe0105 - #x8140aff - #xffafc05 - #x3121e1b - #xfdfe02 - #xdfdf9ff - #xecfc0811 - #xf7f6f7ed - #x1ff0201 - #x9140901 - #xefc0001 - #x9151a1a - #xfef7ff04 - #x8fdfaf6 - #xed030b0d - #xfbf8f6ea - #xff00 - #xc130901 - #xd01ff00 - #xd10151b - #xf3f70409 - #x9fef3ee - #xf204060d - #xfef9f6e9 - #x200fb01 - #xf0f08ff - #xe02fd03 - #x80a1819 - #xf0010b0c - #xaf9e8f1 - #xf4000510 - #xfffdf6e9 - #x3fcfa05 - #xc0c06fd - #xe02000c - #x20a1b16 - #xfb0b0d0a - #x4f0e300 - #xf0fb0d12 - #xf6ea - #x2f6fd07 - #x50b01fe - #xe020b10 - #xe1812 - #xc0e0806 - #xfcebeb0e - #xea00140b - #x504f3e8 - #xfff40107 - #x10aff00 - #x1007150c - #x2130e0f - #x16070504 - #xf7eefa12 - #xe90913ff - #xc03f0e7 - #xfaf60508 - #x107fd02 - #x13101803 - #x70f0411 - #x11010703 - #xfaf7020c - #xf0100af6 - #x11fdefe9 - #xf8fa050c - #x403fd01 - #x141812fd - #x905ff13 - #x7030a03 - #xfffa0308 - #xf90e00f8 - #xff5f2ed - #xfa010412 - #x5fffffe - #x141a0bff - #x6fb0216 - #x70b0902 - #xfefc050b - #xff08fcfe - #x9f3f8f3 - #x30416 - #xfb00fc - #x13170703 - #xf80913 - #xc0d0404 - #xfaff090e - #x3fdff - #xf7fff9 - #x5030613 - #xf8fe02fc - #x10100905 - #xfefb0a0c - #xf080105 - #xfc060b09 - #x2fffa - #xfdfe03fc - #x702070c - #xf40204ff - #xf0e0b00 - #xfffe0306 - #x8050407 - #x30b0600 - #x102fcf9 - #xfe040700 - #x8020606 - #xf7090401 - #xf0b08f9 - #x2fdfb05 - #x1080808 - #x909fbfa - #x201f9fe - #x60a04 - #x9030103 - #xc0202 - #xe0500f8 - #x1f6f609 - #x10f0c0b - #x8fef309 - #x3f9fb06 - #x20b0802 - #x6ff0001 - #xa04000a - #x301fdfe - #xf6f4040c - #x110f0d06 - #x1f7f810 - #xfff90005 - #xb0902 - #x4fb0002 - #x702020a - #xfc030606 - #xf7fb0906 - #x15100b01 - #xfdf80210 - #xfdfcffff - #xfe0b0900 - #x1fc0200 - #x4050306 - #xc0d06 - #xfe0005fe - #x110d0700 - #xfefc040b - #xfdfefbfc - #xfc0a07ff - #x1fe03fc - #x8080002 - #x80f0c04 - #x1000000 - #xb0c0803 - #x1fbff07 - #xfdfcf8ff - #xfc0806ff - #x50100f8 - #xe05fa03 - #xb0a0a08 - #xfefe030b - #xa0f0a03 - #xfdf2fc0b - #xfbfdfb03 - #xfc0405fd - #x800fbf8 - #xcfffa07 - #x5060d0c - #xfe030e11 - #x101308fe - #xf0eb0113 - #xfb010001 - #xfc0303f8 - #x8fff8fa - #x6fc000c - #xa100c - #x30c150c - #x171102fc - #xe3ec0a17 - #x802f7 - #xfa00fcf3 - #x6faf6fd - #x20a0b - #x40f0b05 - #xb121506 - #x170bff01 - #xe2f60e16 - #xa0afce8 - #xf9fff4f4 - #x3f6fbfe - #x20f0e0a - #xd090300 - #xa111009 - #x15070308 - #xeafc0a16 - #xf07f4e2 - #xf8fbf1fc - #xf200fe - #xa170d0a - #x11fffeff - #x4110f12 - #x16080a07 - #xf3fa091c - #xa01efe3 - #xf9f6f504 - #xfaf202fc - #x11180a0c - #x8f6ffff - #x5151118 - #x1a0a0aff - #xf5f7131e - #x1ffeee8 - #xfaf4fc04 - #xf5f601fc - #x17160c0b - #xfef900ff - #xd171416 - #x170603f9 - #xf6fd1d17 - #xfd00eded - #xfbf4fffe - #xf3fbffff - #x19140f05 - #xfb01fd00 - #x12121410 - #xc00fffd - #xfb081f09 - #xfdffe9f1 - #xfaf4fef6 - #xf7fefd03 - #x181511fd - #x107f802 - #x100b150d - #xfcfbff03 - #x61014fc - #x1f8e8fb - #xf7f6f9f1 - #xfcfdff06 - #x15160df9 - #xa01f507 - #x70a1a10 - #xf5fe0208 - #xf0d03f8 - #xfff1ee06 - #xf4f7f5f1 - #xfc0506 - #x121708fa - #xef9f80b - #x10f1d15 - #xf9010304 - #x1003fafe - #xf7f0fb11 - #xf3f8f4f2 - #xfd0902 - #x101403ff - #xbf5fe08 - #x3151e18 - #x0 - #x9fbfd00 - #xf1f80614 - #xf4f9f4ee - #xff08ff - #x10130402 - #x6fa0004 - #xb191b19 - #xfdfaff00 - #x4fafff9 - #xf2010b11 - #xf7faf2e9 - #x5fd - #x12100502 - #x6ffff02 - #x10161918 - #xf4f80206 - #x3fcf8ef - #xf805080e - #xfafbf0e7 - #x1000000 - #x130f0600 - #x800fd05 - #xb101a17 - #xeffe090b - #x5f8ebf1 - #xfc010710 - #xfafceee9 - #x2fc0001 - #x100d0300 - #xafe000b - #x40f1c15 - #xf8080d09 - #x3eee5fe - #xf8ff0c11 - #xfdffefec - #x1f80402 - #xc0b0001 - #xafe080e - #x1151913 - #x70c0c03 - #xfae4ee0d - #xf003130d - #x300efeb - #xfbf60702 - #x909fd04 - #x704110a - #x7181111 - #x110707fe - #xf3e50011 - #xef0c1103 - #x9ffede6 - #xf6fa0705 - #xa05fe05 - #xa101303 - #xe130a11 - #xb0207fe - #xf2ee0b0a - #xf61208fb - #xefaece4 - #xf5fe050c - #xb00ff01 - #xf1b0e00 - #xd070712 - #x1040801 - #xf7f80a03 - #x10ffcfb - #xbf5ece7 - #xf9000514 - #x8fd01fe - #x151e0500 - #x6fd0913 - #x80704 - #xfafc0607 - #x706f800 - #x3f4f0ed - #xff010a17 - #x1fe01fa - #x18180304 - #xfffb0e12 - #x80b0406 - #xfaff080d - #x700fc01 - #xfbf8f5f5 - #x2001013 - #xfa0000fc - #x16110704 - #xfbff0e0f - #xe070306 - #xfb020c0d - #x400fefc - #xf800faf9 - #x401120a - #xf803ff01 - #x130e0aff - #xfa00080c - #xb020405 - #x1080806 - #x300fbf9 - #xfc04fffc - #x4020e04 - #xfc07ff04 - #x100e07f6 - #xfeff000a - #x5030706 - #x8090001 - #x3fff8fd - #x802ff - #x4020800 - #x4070007 - #xe0b00f4 - #xfef8fe0d - #x5090a08 - #xa01f405 - #x4fbf904 - #x20b0702 - #x6000202 - #xa070009 - #x803fbfa - #xf8f2000e - #xd0e0d09 - #x2f6fe11 - #xf80008 - #x60c0505 - #xfe0200 - #x900050b - #xfd05 - #xf2fd0d06 - #x13100cfb - #xfbf50713 - #xfcf90203 - #x50e0503 - #xfefc03fe - #x501060a - #xff080706 - #xf9030afe - #x110e06f9 - #xfbfc0a0d - #xfbfcfeff - #x40d0400 - #xfc0003fb - #x8040306 - #x70f0804 - #x201fc - #xc0b04ff - #xfefe0609 - #xfcfafa00 - #x30b03fe - #x200f8 - #xd02ff04 - #xb0f0706 - #xffff0004 - #xa0c0602 - #xfcf9000a - #xfcf8fc05 - #x20803fd - #x402fbf8 - #xdfcfe07 - #x80b080c - #xfc000a0b - #xe0f0600 - #xf3f20211 - #xfdfb0105 - #x700f9 - #x5fff9f9 - #x6f9020b - #x30c0d0e - #x91208 - #x140e01fd - #xe7f30b16 - #x103fa - #xfe07fbf6 - #x4fbfafa - #xffff080c - #x5100e0a - #x8111201 - #x1508fe00 - #xe3fa1014 - #x906ffea - #xfd04f3f8 - #xf7fdfa - #x90b0c - #xc0e0802 - #xd140d04 - #x11030106 - #xea001112 - #xe05f3e0 - #xfcfbf000 - #xfcf600f9 - #xb100a0c - #xe040200 - #xc130a0f - #xf070905 - #xf1fe1115 - #xc00ebe2 - #xfbf4f508 - #xf6f801f9 - #x16110a0c - #x6fdff01 - #xb130e14 - #x100c0bfe - #xf2fa1918 - #x6fbe7ea - #xfaf2fe09 - #xf3fc00fa - #x1b0f0e09 - #xfbfefe03 - #x10141411 - #x110b01fa - #xef001f13 - #x3f8e7f0 - #xf8f50201 - #xf3fefefd - #x1b101100 - #xf903fb09 - #x15111607 - #x904fb00 - #xf30c1f07 - #x4f6e7f2 - #xf7fbfffa - #xf7fefe00 - #x181411f9 - #x3f90d - #x110e1603 - #xfffffc09 - #xff1818fa - #x6f0e8f6 - #xf6fdf7f7 - #xfcfd0102 - #x16170bf6 - #x9fef910 - #x80b1607 - #xf7ff010c - #xb1505f8 - #x2eaee01 - #xf4fdf2f9 - #xfefc0900 - #x151603fa - #xaf4fd10 - #x212170f - #xfa020405 - #xe08fcfc - #xf9eafa0d - #xf4fbf2f9 - #xfdff0dfc - #x16130000 - #x5f3020d - #x6191815 - #xff0201fe - #x7fefeff - #xf1f20713 - #xf6f9f2f4 - #xfb020bf9 - #x170d0003 - #xf90309 - #xf1b1a15 - #xfffefdfd - #xfc01f9 - #xf3fe0d11 - #xf8f9f0ed - #xfe0406f9 - #x170c0402 - #xff0007 - #x13191b12 - #xf6fafe03 - #xfefefcf0 - #xfa030d0c - #xf9faeceb - #x303fb - #x150b0401 - #x3fffc0a - #x10151c11 - #xf0fd040a - #x1fcefee - #xff020b0d - #xfaf9e8ed - #xff03fd - #x130c0301 - #x6fc000e - #x9151d11 - #xf4050c09 - #xefe8fa - #xfc010d0e - #xfdf9e9f2 - #xfdfb06fd - #x11090004 - #x4fc080f - #x8191911 - #x20d0c00 - #xf7e4f007 - #xf604130d - #x1f9ecf1 - #xf9fc07fe - #x1004ff06 - #x1020e0c - #xc1b1410 - #xb0c07fb - #xece3030c - #xf40d1206 - #x7f8edeb - #xf5000502 - #xf000204 - #x30f0e07 - #x14160f0e - #x80701fc - #xe8ee0f04 - #xfd1108fe - #x9f6e9e4 - #xf602030a - #xcfe04fe - #xc1a0706 - #x140c0f0e - #xff060102 - #xecfb0efe - #x90cfefb - #x7f3e5e6 - #xfa020612 - #x7ff04f9 - #x151a0308 - #xb04110e - #xfc080309 - #xf4000701 - #xf02faff - #xf3e5ef - #xfe000d15 - #x1f8 - #x1c150309 - #x100f - #x40a0409 - #xf7000609 - #xbfbfeff - #xfaf6eaf8 - #x1170f - #xfc01fefc - #x1c0c0605 - #xfb040d11 - #xb060406 - #xfa020b0c - #x4fb00fd - #xf9fbf1fe - #x51a06 - #xfd03fd01 - #x160b08fe - #xfc060911 - #xa020602 - #xfe060d07 - #x2fffef9 - #xfd00f7ff - #xff0715ff - #x101fe06 - #x120e04f9 - #xfe020410 - #x3030800 - #x5080503 - #x3fef9fc - #x103fc00 - #x80bfd - #x6010007 - #x110ffdf7 - #xfcfd030f - #x3070b02 - #x903fd06 - #x4f9f903 - #x4070002 - #x10504ff - #xa000208 - #xd08f6fb - #xf6f8060f - #x90b0c02 - #x5f9fb0f - #x2f7fe08 - #x50c0404 - #x1000201 - #xb01040b - #x401f902 - #xf1fa0c0b - #x110e0eff - #xfbf70c10 - #xf7fb0506 - #xb080605 - #xfe010101 - #x3020b06 - #xfe0108 - #xf7070c01 - #xf1103f1 - #xf7fd100f - #xf7fd0201 - #xb0a0602 - #xfc0200ff - #x4030a04 - #x5090606 - #x803fb - #xe0dfef7 - #xfa020b0b - #xf8fbfe00 - #xb0904fe - #xfe04fdfe - #x9030500 - #xd0d0407 - #x102fe00 - #xc090000 - #xfc00040b - #xf9f7fe02 - #x80802fc - #x203f8fd - #x8fe0202 - #xd0b050d - #xfe000306 - #xe0b0400 - #xf6fa030f - #xf9f80402 - #x60800fb - #x500f7fd - #x2fb0506 - #x90a0b10 - #xfd050d07 - #x120b01fd - #xedf90a14 - #xfcfe07fa - #x407fafa - #x3fcf9fc - #xfcfe090a - #x90d0f0c - #x50f0c02 - #x1306fefe - #xe8fe1013 - #x10402eb - #x302f5fc - #xfffafcfa - #xfd050c0b - #xd0f0d05 - #xd130602 - #xe01ff03 - #xed04120e - #x905f5e0 - #x2faf304 - #xfbfafef9 - #x70b0b0c - #xf0a0500 - #x1011040b - #x9040605 - #xf202130d - #xafee8e2 - #xfff1f90a - #xf6fcfcfb - #x120c0d08 - #x704ff03 - #x110f0c10 - #xa0d0801 - #xf2011811 - #x7f6e4ea - #xfaef000c - #xf500fbfc - #x170c1102 - #xfd01fd0a - #x1310140b - #xe0f0000 - #xed061f11 - #x4f0e6ef - #xf5f60507 - #xf801fbfd - #x161012fa - #xfc01fe11 - #x140f1601 - #xd07f707 - #xf0131d08 - #x4ede9ed - #xf5ff0000 - #xfbfffdfd - #x13150ef4 - #x2fffe14 - #x100f11fe - #x5fff910 - #xfd1e13ff - #x3eaebed - #xf601fa00 - #xfdfd02fb - #x141807f5 - #x8f90116 - #xa100e03 - #xfefc0011 - #xc1e03f9 - #xfee6eef6 - #xf9fef401 - #xfbfd08fb - #x1715fffa - #x7f30514 - #x5120e0c - #xfd010609 - #x120efafd - #xf3e7f904 - #xfaf8f502 - #xfa020af8 - #x1a0efd00 - #xf40811 - #x9171312 - #x10402fd - #xa01fb00 - #xebf0050e - #xfaf5f7fc - #xfb0907f6 - #x1a090000 - #xfbfa0710 - #x111a1811 - #x201fbfc - #xfffe00fd - #xedfc100d - #xfaf5f4f3 - #xff0a02f7 - #x170704ff - #xfb00020f - #x17191b0b - #xfcfbf904 - #xfd01fcf3 - #xf6041108 - #xfbf6edef - #x20800f9 - #x140805ff - #xff0010 - #x14181b0a - #xf4fb000c - #xfff1ef - #xfe060e04 - #xfcf4e8f2 - #x20400fa - #x12090300 - #x2fa0212 - #xe18190c - #xf502080b - #xf3e8f6 - #xfd040e08 - #xfdf0eaf8 - #xff0103fb - #x12080104 - #xf80812 - #xe1b190f - #xff0b0b02 - #xf6e6f002 - #xf907120a - #xefeef7 - #xfa0202fd - #x11030203 - #xfd010c0f - #x141c160c - #x80e04fe - #xe9e50008 - #xf90e1305 - #x3f1eff0 - #xf8050002 - #xe0006ff - #xff0d0c0d - #x18171407 - #x90afd00 - #xe1f10d04 - #x1120cfb - #x4f3eae9 - #xfc060009 - #x90007f9 - #xb14070e - #x160f1305 - #x305fa08 - #xe6010afd - #xc0d03f4 - #x2f1e3eb - #xff03050f - #x10005f5 - #x1612050f - #xd0a1109 - #x4fe10 - #xf10802ff - #x1102fef3 - #xfeefe0f5 - #xff010f10 - #xfe0401f7 - #x1d0b070c - #x50a0f10 - #x404020e - #xf9050006 - #xafafff6 - #xfaede500 - #xfd03180c - #xfd05fdfb - #x1c070a07 - #xb0b14 - #xa050506 - #xfb030709 - #xfb02f7 - #xfaf0ee05 - #xfc0b1a02 - #x2fc00 - #x160809ff - #x90818 - #x8030600 - #xfd060c06 - #xfcfe00f7 - #xfef4f704 - #xff1213fe - #x300ff02 - #x120d02fa - #x1050817 - #x20407fe - #x2090a01 - #xfffffbfa - #x1f9fc02 - #x11108fd - #x6fe0302 - #x120dfafb - #xff000813 - #x808fe - #x6060203 - #x1fbfa00 - #x4fffe03 - #x30c02ff - #x6ff0603 - #x1207f600 - #xf9fd0a11 - #x50c0afe - #x5fe010a - #xfff6fe06 - #x7030005 - #x3060001 - #x5000704 - #xcfef706 - #xf3fe0d0e - #xb100af9 - #xfdf6070f - #xfaf90307 - #xa080507 - #x10102 - #x4020907 - #x2fcff08 - #xf4030f07 - #xe1207f1 - #xf6001010 - #xf4000401 - #xc060a00 - #xff03fe07 - #x80bff - #x606 - #xc0500 - #x120cf7f2 - #xf9070e0f - #xf6ff01fe - #xc0707fa - #x105fb05 - #x30808fb - #x9070506 - #x506fd00 - #x1106f9fb - #xff07070d - #xf7fb00ff - #xb0803f9 - #x502f805 - #x40404fc - #xe06060c - #xfe06 - #xe050000 - #xfd00050f - #xf6f90400 - #x90700f9 - #x6fef803 - #xff000301 - #xc050c0f - #xfe030509 - #xf0701fd - #xf5fd0912 - #xf50009f9 - #x905fcfa - #x4fbf901 - #xf9000707 - #xa09140d - #x20b0706 - #x1105fefb - #xf0011011 - #xfb0704ec - #x900f8fc - #xfffafaff - #xfb050b09 - #xd0e1104 - #xd100305 - #xc01fe00 - #xf207130b - #x208f7e2 - #x7f8f801 - #xfbfcfaff - #x2090d07 - #xf0e0900 - #x130d010a - #x6010106 - #xf8091108 - #x800e8e2 - #xeffe0a - #xfbfff800 - #xd0a0e05 - #xb0a0104 - #x1109070e - #x6090507 - #xf607110d - #x7f3e2e9 - #xf8f0050d - #xfc00f700 - #xf0d11fd - #x304000c - #x100b1208 - #xf0dff09 - #xf20c1612 - #x2ebe5ec - #xf3f8090b - #xfd00f9fe - #xd1210f6 - #x214 - #x110f12ff - #x1305f80e - #xf518180f - #xfee9ebe7 - #xf3010607 - #xfffdfdfa - #xe1809f3 - #x4fc0718 - #xf110afc - #xefafa15 - #x21f0e05 - #xfaeaece3 - #xf902fe05 - #xfefc01f8 - #x141901f7 - #x5f60b16 - #xa100402 - #x3f80415 - #x121d02ff - #xf4e9eceb - #xfdfcfc08 - #xfc0004f8 - #x1a13fcfc - #x2f50e14 - #x810050b - #xfe0a0a - #x1a11f900 - #xebe9f2fd - #xfef5ff07 - #xfa0504f8 - #x1d0afcfe - #xfbf90e13 - #xc120d10 - #x20406ff - #x1202fa03 - #xe5f0000a - #xfcf200fe - #xfd0c00f9 - #x1a0500fc - #xf6ff0b15 - #x1215160b - #x502fbfe - #x4feff01 - #xe7fb0b0c - #xfaf3fcf3 - #x30dfcf9 - #x130403fa - #xf9010817 - #x16181904 - #x1fbf705 - #xff01fdf9 - #xf1061003 - #xfaf4f3ee - #x80afbfb - #xf0703fb - #xffff0616 - #x16181703 - #xf9f7fd10 - #x201f2f2 - #xfb0a0d00 - #xfbf0edf2 - #x706fdfc - #xf090200 - #xfa0915 - #x13191507 - #xf6fd060f - #x3f7e9f5 - #xfd0b0b02 - #xfbebedf8 - #x304fefd - #xf070202 - #xfdfa0c14 - #x121b150a - #xfd070907 - #xfae9ec00 - #xfa0a0d07 - #xfbe9f3fa - #x6ffff - #x10030402 - #xf9ff0e13 - #x171c1608 - #x70e0301 - #xe9e7fb08 - #xfc0f1103 - #xfbedf4f3 - #x7fc02 - #xa0307fc - #xfc090d12 - #x1b191401 - #xd08fb06 - #xe1f30608 - #x3120ff7 - #xfdf1eeee - #x105fe07 - #x30407f7 - #x70e0b12 - #x19131100 - #xb00f711 - #xe6030504 - #xd1006ea - #xfdf0e4f1 - #x302050c - #xff0702f5 - #x150b0c12 - #x10100d05 - #x7fcfd17 - #xf40bfc02 - #xd07ffe6 - #xfbeae2fc - #x100100d - #xfe08fef9 - #x1a060f0c - #x810090f - #x7fe0412 - #xff07f906 - #x600fdea - #xf8e4e806 - #xfe071808 - #x5fbfd - #x18050f03 - #x70f0819 - #xa010708 - #x10009 - #xfdfffef1 - #xf7e3f30a - #xfe101903 - #x302fbfe - #x120809fd - #x80b091c - #x8020601 - #xff040905 - #xf801fdf4 - #xf9e9fd06 - #x2190f00 - #x5fffffd - #xf0d02fd - #x7050c1a - #x30504ff - #x1090901 - #xfb02fbf7 - #xfcf00000 - #x9170400 - #x3fe02fc - #x110cfc00 - #x2011016 - #x10804ff - #x6090301 - #xfffef9fd - #xfff70000 - #xd10ff02 - #x105fd - #x1303f802 - #xfb000f14 - #x40c05fd - #x5020207 - #xfdf9fd02 - #x3fc0104 - #x908ff04 - #x30600 - #xffafb06 - #xf7010f13 - #xa1005f8 - #xfffd070c - #xf7fa0105 - #x6000605 - #x4040005 - #x50802 - #x7f70108 - #xf7050f0e - #xe1201f1 - #xf7fe0f0f - #xf4ff0503 - #xb040a02 - #x2ff06 - #x70b01 - #xfb0507 - #xfe0b0a04 - #x110ff9ee - #xfb0b0e15 - #xf90102fb - #x80a07f5 - #x300ff0b - #x20d05fb - #x1020702 - #x7090000 - #x1600f1fa - #x20c0b11 - #xf9ff00fa - #x90a01f4 - #x5fefe0b - #x40b00fb - #xa030706 - #x501fb06 - #xffefa00 - #x305080e - #xf5fe03fe - #xa08fef6 - #x6fafd09 - #x106ff01 - #xa020d0a - #x10c - #xb0100fe - #xfe000b0f - #xf40106fb - #xa05fdf6 - #x3f8fe07 - #xfd030206 - #x8061307 - #x205060c - #xc04fefb - #xf601110f - #xf70a03f2 - #xa00fbf7 - #xfef9fd06 - #xfc050808 - #x9101401 - #xb0a0309 - #xa01fbfe - #xf707130a - #x10bf6e9 - #x7f8fcfc - #xfcfbfa06 - #x1090c05 - #xd130afd - #x1108010a - #x400fe05 - #xfc0b0f06 - #x902e8e7 - #xf30002 - #xfdfdf807 - #x70c0d00 - #xe0e0100 - #x1005060c - #x403010d - #xfe0b0b0a - #x8f2e0ec - #xf6f4070a - #xfdf804 - #xa0e0efc - #xa06020b - #xb070f09 - #xc08010e - #xfb0d0e15 - #xe8e4eb - #xeffc0c0b - #x1fcfdfd - #x9140bf9 - #x6000912 - #xc0e0c02 - #x1600fd11 - #xfd151215 - #xf8e8e9e5 - #xf2030b09 - #x1fb00f7 - #xd1803f9 - #x5fb0e13 - #xd110200 - #x12f60015 - #x91e100c - #xf2ece9e1 - #xfa040707 - #xfefb00f4 - #x1616fcfb - #x1fb1312 - #xd0ffd04 - #x4f30b14 - #x181b0601 - #xeeece4ea - #xfd0506 - #xfb00fff7 - #x1d0ef9fe - #xfdfe1212 - #xb0a000a - #xfdfd110a - #x1e0efe00 - #xe8eae7fc - #xfff60703 - #xfc06fefc - #x1e05fbfc - #xf7011016 - #xb0a0a0b - #xff060b01 - #x1600fc04 - #xe4edf40e - #xf9f409fb - #x20bfcfd - #x1902fff9 - #xf4050f1a - #xf0f1404 - #x505feff - #x8fd0005 - #xe6f8040f - #xf6f904ef - #x90afafd - #x100300f7 - #xf9050e1c - #x141516fe - #x4fbf808 - #x10000ff - #xef040b07 - #xf7faf9ea - #xd06fafd - #xa07fffa - #xff010f19 - #x151912fe - #xfcf3fd10 - #x401f8f5 - #xfa0c09ff - #xf8f4f0ed - #xd04fbfc - #xb07fe01 - #xfffe1216 - #x14190f03 - #xf4f70712 - #x5f8eef5 - #xd0501 - #xf7ebf0f5 - #x802fcfe - #xe060004 - #xfafd1214 - #x151a1106 - #xf9020a0c - #xfdebedfe - #xc0706 - #xf4e9f6f8 - #x503fd00 - #xd040301 - #xf7021214 - #x191b1302 - #x40a0509 - #xede6f609 - #xff0e0d05 - #xf1edf8f5 - #x604fc00 - #x90506fc - #xfa081115 - #x1a1a13fc - #xe06fd0d - #xe3f1010d - #x6120ef5 - #xf3f3f1f1 - #x8020002 - #x30903fa - #x40a1214 - #x18170bfb - #xefbfb16 - #xe900030a - #xd1305e5 - #xf8f1e9f5 - #x7ff0705 - #xafdfb - #x10081310 - #x13150403 - #x9f50119 - #xf907fe06 - #xe0efbe0 - #xf8e8e600 - #x2ff0f07 - #x208f9ff - #x11061408 - #xf13020f - #x4f70b14 - #x402fb06 - #x605f4e6 - #xf5e1ee09 - #xfd071606 - #x605f901 - #xf0a1200 - #xf100618 - #x3fe0e0a - #x5fc0007 - #xfe01f3f1 - #xf1e0fb09 - #xff131503 - #x800fbfe - #xd0f0afe - #xe0a0c1a - #x3030a05 - #xfd0605 - #xfa02f6f8 - #xefe40303 - #x81c0e00 - #x7fefef9 - #xd1000fe - #xa041219 - #x1040504 - #x60702 - #xfd02f6f8 - #xf0f004fc - #x11190400 - #x2fffff8 - #x100bfc02 - #x3031615 - #x1060305 - #x5090202 - #x100f6fb - #xf5f701fc - #x140f0001 - #xfe0200fc - #x1201fe05 - #xfd041414 - #x5090301 - #x8050007 - #xfffbf900 - #xfafb0100 - #x12070003 - #xfe050002 - #xef90004 - #xf9041216 - #xc0b00fb - #x200040d - #xf9fbff03 - #xfffe0601 - #xa020105 - #x70204 - #x5f60404 - #xfa071215 - #x110dfdf3 - #xfb010a11 - #xf6fe0201 - #x2020afe - #x4010108 - #x1090501 - #xfefb0703 - #xff0b0f0c - #x150af4f1 - #xfa080e15 - #xf70203fd - #x70809f8 - #x200ff0b - #x10c07fc - #xfe000703 - #x60c0502 - #x1703eff5 - #x50d1014 - #xfd00fff8 - #x80ffdf4 - #x2fc0709 - #xa0afd00 - #x2040401 - #x903fe01 - #xdf4f501 - #x8080e0c - #xf9ff00fd - #xb0bfaf5 - #xf9050a - #x907fb04 - #x5030805 - #x3fc000b - #x5fbfe02 - #x3020e0a - #xf5020200 - #xb05f9f4 - #xfef8040a - #x402ff09 - #x3080f03 - #x70c - #x601fdfe - #xfc03120b - #xfa0a00fb - #xa00faf2 - #xfbf9020a - #x1020509 - #x5110fff - #x505090a - #x701fafe - #xf9071409 - #x40cf7f2 - #x6fcfaf4 - #xfafa000b - #x2070a04 - #xc1707fc - #xd050608 - #x4fdfa06 - #xff0d0f05 - #xd01eaef - #xfff8fdfd - #xfdfafe0a - #x60b0b00 - #x111200ff - #xc02070a - #x2fe000e - #x20d0807 - #xcf2e3f1 - #xf5fb0305 - #xf90005 - #x81008fd - #xf070105 - #x8050a0b - #x7010411 - #x20b0811 - #xe6e4f2 - #xf0010a0a - #xf702fc - #x81405fd - #xa000a0c - #x80d0a06 - #x10ff0411 - #x30e1215 - #xf3e6e7eb - #xf3080d09 - #xfdf802f3 - #x1114ff00 - #x500120d - #xe10ff05 - #xdf70810 - #xc15170c - #xeeebe4e7 - #xfb070c05 - #xfcfcfff1 - #x1b0ffa01 - #x3130d - #xf0bfa06 - #xfff61110 - #x191610fe - #xedebe0f0 - #x1020b01 - #xfa00f9f7 - #x1f07fa00 - #xfa081110 - #xd030008 - #xf400160a - #x1e0d05fb - #xece7e103 - #xfefd0dfd - #xfd03f8fd - #x1c01fcfc - #xf70c0f17 - #xa020c04 - #xf80b0e03 - #x17010000 - #xe9e5eb14 - #xf8ff0cf5 - #x304f900 - #x1500fef8 - #xf80b111e - #xa0a13fe - #x20a0202 - #x8fb0306 - #xe8edfe18 - #xf30406ea - #xb05fbfe - #xd02fcf7 - #xfd09151f - #xe1312f9 - #x5fefa07 - #xfe0501 - #xeffd080c - #xf504fae5 - #xf01fdfa - #x804fa00 - #x51819 - #x13180afa - #xfdf4fe10 - #x20000f7 - #xfb080703 - #xf8fdf0e8 - #xcfffdfb - #xa05fa07 - #xff031713 - #x16180700 - #xf2f50812 - #x5fbf4f1 - #x40a0103 - #xf6f2eef1 - #x800fefc - #xd02fe0a - #xfa061612 - #x17170a02 - #xf2000e0f - #xffeeeffa - #x6080209 - #xf0edf4f7 - #x700fefd - #xc020207 - #xf7081413 - #x19180fff - #xff08080c - #xf0e7f506 - #x7090805 - #xecf2f7f7 - #x70000fc - #x8050302 - #xfa0b1413 - #x1a1a0ef8 - #xa040111 - #xe5ed000e - #x80f0cf7 - #xedf8f3f6 - #x7ff02fa - #x4090000 - #x20b1611 - #x1b1a06f7 - #xdf90017 - #xeafa070b - #xf1403e5 - #xf4f5ecf9 - #x4fd07fb - #x608fb04 - #x90b180d - #x1817fe00 - #x4f30818 - #xf8010604 - #x1211f5e0 - #xf7eaeb01 - #x1000dff - #xa04f806 - #xb0c1706 - #x1511fd0c - #xfcf71213 - #x3fe0300 - #xd07e9e9 - #xf3e0f309 - #xfd081102 - #xcfffc05 - #x8111000 - #x140d0514 - #xf800130b - #x3f70500 - #x5ffe8f8 - #xebe1ff08 - #x151101 - #xafdfefe - #x9170600 - #x13070f14 - #xfa060d09 - #xfef90800 - #x1fced00 - #xe5e90500 - #xb1a0dfe - #x7fefff8 - #xd130004 - #xc051611 - #xfd06080c - #xfd010800 - #x1fcf3ff - #xe5f603f9 - #x161807fb - #x2fffbf9 - #x110aff06 - #x2051811 - #x5060b - #x3060202 - #x5fcf4fc - #xecfefffa - #x190d05fa - #xff01f903 - #x11000005 - #xfd091613 - #x4060605 - #x7030007 - #x3f9f600 - #xf3fffefe - #x140505fc - #x3fb0b - #xbfb0302 - #xfc0b1417 - #xa0802fd - #x500030e - #xfef9fb04 - #xf9000200 - #xb020600 - #x303ff0c - #x1fc0600 - #xfd0b1515 - #x1108fcf7 - #xff010914 - #xfafc0002 - #xfd0306fd - #x5010602 - #x5050208 - #xfbff0600 - #xd150d - #x1504f5f4 - #xfe070d17 - #xfb0000fc - #xa05f7 - #x3000606 - #x7090202 - #xfb030500 - #x50d0e04 - #x16fcf0f8 - #x30d0e16 - #xfd0100f8 - #x60f00f4 - #x2fd0609 - #x80c00ff - #x40400 - #xa080101 - #x11f5f1fe - #xa0b1708 - #xfb00fd00 - #xe09f7f8 - #xfd000b07 - #x1001fb06 - #x2050204 - #x7ff0003 - #xfcf4fc06 - #x5061203 - #xf9010004 - #xe04f7f5 - #xfafe0909 - #xcfd0009 - #x1090606 - #xfffc0808 - #xfefdff03 - #xfe061207 - #xfd060002 - #xb00f6f0 - #xf8fe060c - #x5fe0707 - #x4120802 - #x20d05 - #x4fffb00 - #xfc0b1208 - #x808fbfa - #x6fef4f1 - #xf9fd060d - #x3030a02 - #xc1703ff - #x5060a03 - #x5fcfa04 - #xf0f04 - #x1100f0f4 - #xfffcf4fa - #xfbfc070b - #x50a09fe - #x1512fdff - #x7040707 - #x1fa000d - #x60f0703 - #xff1e9f6 - #xf8fefb06 - #xfcfa0904 - #x80f05ff - #x1408ff03 - #x505080b - #x2fd0710 - #x70a0609 - #x1e6e9f8 - #xf403040b - #xfbf909fa - #xc100202 - #xd010706 - #x50a070d - #x6ff0b0d - #x5080f0e - #xf2e5eaf5 - #xf8090c09 - #xf9fb05f1 - #x120fff05 - #x5030d08 - #xd0c000a - #x5fc0c0b - #x90f1b05 - #xebe8e3f2 - #xff0a0e01 - #xf8fefcef - #x1c08fe03 - #xc0d0a - #x1206fd06 - #xf8ff120c - #x111418f8 - #xeee7e0f9 - #x3080dfb - #xf900f5f6 - #x1e02ff00 - #xfc100d12 - #xefd0203 - #xee07160b - #x17110bf3 - #xf0e3e30a - #xff070cf7 - #xff01f5ff - #x18ff00fb - #xfe110d1b - #x5fd0cff - #xf3120e07 - #x120701fc - #xece0ed19 - #xf90b09f2 - #x500faff - #xe00fef8 - #xe131f - #x3060ff9 - #x10f0304 - #x8000205 - #xe8e3fe1c - #xf60f01eb - #x8fefffa - #x801fafc - #x20a191e - #x8120bf7 - #x802fc06 - #xff000703 - #xebf30b12 - #xfa0ff6e6 - #x9fe00f5 - #x702f704 - #x3091d19 - #x121702f9 - #xfff6ff0b - #x204f7 - #xf7010905 - #xfe04ece8 - #x8fefff6 - #xb00f90c - #xb1c12 - #x171400ff - #xf1f6080f - #x2fffaee - #x3060204 - #xfbf8eaf0 - #x5fffef9 - #xbfdff0f - #xfd0e1710 - #x18120400 - #xee000e10 - #xfff5f0f3 - #x9030109 - #xf2f1eff9 - #x4ff00fa - #xaff050b - #xfc101412 - #x19140afb - #xf9090b10 - #xf2ebf301 - #x9030808 - #xecf4f4fd - #x50002f6 - #x6020407 - #xfe0f1512 - #x1a1808f6 - #x6060612 - #xe7ecff0a - #x90a0bfa - #xedfaf3fc - #x5ff03f2 - #x6060108 - #x20f180f - #x1d1900f6 - #x8fc0616 - #xe8f60907 - #xd1203e7 - #xf5f8effe - #x1ff04f2 - #x904fd0a - #x60f160a - #x1e15f8fe - #xfef70e18 - #xf3fe0dfd - #x140ff2e3 - #xf8ecef04 - #xfd0105f9 - #xdfefc0b - #x7141206 - #x1c0cfb06 - #xf2fd1414 - #xfd000af6 - #x1504e5ed - #xf2e2f70a - #xfc0908ff - #xdfa0106 - #x7190d05 - #x1906050b - #xef07140f - #xfefb07f6 - #xff6e2fe - #xe7e4000a - #x1130cff - #x8fb04fe - #xc1a0406 - #x12030f0a - #xf40c0c0f - #xf8fd06f9 - #x8f0eb04 - #xe1f00503 - #xe170cf8 - #x3fe00f7 - #x1312ff09 - #xb05140b - #xfa0a0913 - #xf70105fc - #x5f1f400 - #xe1fd01fe - #x18150af0 - #x100fafd - #x1606000a - #x40b150f - #xff070a11 - #xff060100 - #x5f5f8fd - #xe902fafc - #x1a0e07ed - #xfff609 - #x11ff0508 - #xe1413 - #x2070b08 - #x5030005 - #x3f5f7ff - #xf301f900 - #x120705f0 - #x2fdfa14 - #x7fd0602 - #x101316 - #x70807fd - #x4ff030c - #xfff5fa04 - #xf900fe03 - #xa0505f6 - #x5fd0015 - #x400 - #x1101614 - #xd07fff7 - #xff000a12 - #xfcf8ff04 - #xfb020200 - #x30406fb - #x7ff050e - #xfc040100 - #x210190b - #x1100f7f6 - #xff051015 - #xfcfb00ff - #xff0900fa - #x20307fe - #x8030407 - #xfd060101 - #x6121302 - #xff9f2f8 - #x40a1513 - #xfdfefffb - #x40dfbf8 - #x10800 - #xb050004 - #x60103 - #xa0e09fe - #x8f1f3fe - #x90c170b - #xfd00fdfb - #xc0df8f8 - #xfeff0b05 - #x1005fc05 - #x1050103 - #x9030001 - #xf1f904 - #x80f16fc - #xfafefe09 - #x11fef8f8 - #xfb07060d - #xbfb0301 - #x205020d - #x1ff0501 - #xf5f90008 - #x20d0f00 - #xfd020308 - #xbfdf5f2 - #xfb04070f - #x4fb0800 - #x50c050b - #xfc030c00 - #xfffdff02 - #xfe100f05 - #x80401fe - #x6fcf0f3 - #xfa02090f - #x20bfd - #xf110305 - #x90900 - #x3fafd01 - #x2130c03 - #xf00f9f7 - #x1fbeefd - #xfb000c0c - #x10908fb - #x170e0002 - #x5090404 - #xf70007 - #xa120800 - #xdf4f0f7 - #xfcfaf40a - #xfaff0e03 - #x80d04fd - #x1804fe02 - #x407030f - #xfcfb080a - #xb0b0502 - #xe9effb - #xfbfe0010 - #xf8000cfb - #xe0c0101 - #xf000205 - #x6080412 - #xff000d09 - #x7060c04 - #xf0e6effe - #xfe040b0b - #xf60204f3 - #x14070103 - #x6060707 - #xc08040e - #xff040e06 - #x40b1800 - #xe9e7eafc - #x3090f00 - #xf804f8f2 - #x19040400 - #x10e070b - #xf010008 - #xf8050e09 - #x91516f3 - #xede4e4ff - #x60d0cf7 - #xfd01f0f9 - #x170105fc - #x2120714 - #x9f90601 - #xf00e110f - #x101707f1 - #xefe1e709 - #x30e08f5 - #xfef2ff - #x100004f9 - #x7100b1d - #xfa0bfd - #xf7150e0c - #x120ffafb - #xebe0f217 - #xff1103f4 - #x2fafbfe - #x802fef9 - #xa0c161f - #xfd040afa - #x8140406 - #x805fd08 - #xe4e10419 - #x14fdef - #x4fb01f8 - #x501f900 - #x90b1d1b - #x41002fb - #xf07fe03 - #x1030407 - #xe1ed110f - #x411f5ea - #x3fe01f3 - #x7fff707 - #x70f1f14 - #xf12fcfe - #x6fafe06 - #x606fa - #xeb001004 - #x906ebe8 - #x200fcf4 - #x9fafb0e - #x4131c10 - #x180ffb00 - #xf5f7050c - #x205fcee - #xfc040602 - #x5f8e8f0 - #x100fafa - #x8f8030f - #x217170f - #x180b0100 - #xee000c10 - #xfcf0ef - #x4010406 - #xfaf0ecfa - #x200fcfa - #x4fb090c - #x2161411 - #x160d05fb - #xf6090c12 - #xf6f1eefd - #x5000a06 - #xf1f2f301 - #x20000f5 - #x2010908 - #x3131511 - #x181302f6 - #x4080914 - #xeaedfb06 - #x4060dfb - #xf2f7f602 - #x20100ee - #x5040509 - #x612170e - #x1e14faf6 - #x6000916 - #xe7f40903 - #x80f05eb - #xf8f5f402 - #x2fdee - #x901030b - #x715160a - #x1f0ef4fc - #xfdfe0e18 - #xee000ef8 - #x120ef3e4 - #xfbedf406 - #xff04fbf5 - #xdfb040c - #x7190f09 - #x1d04f702 - #xf0031417 - #xf70308ef - #x1700e4ed - #xf3e6fa0c - #x8fefd - #x8fb0803 - #xa1b0809 - #x17ff0303 - #xef0d1318 - #xfa0302f1 - #x13efe4fb - #xe7e8010f - #x40e05fc - #x1fe09fb - #x1118050c - #x10000c03 - #xf7100d18 - #xf803fdf7 - #x8e6ef01 - #xe0f5050c - #xe130bf2 - #xfe0200f9 - #x190e040d - #x9050d07 - #xc0b19 - #xf705fbfc - #xe9fbfd - #xe4000006 - #x171409e9 - #x2f800 - #x1902070b - #x40c0d0f - #x2090e15 - #xfc06fcfe - #xfcf0fdf8 - #xed03fc04 - #x191103e4 - #x2fdf60e - #x13fe0907 - #x4110e17 - #x30a1008 - #x304fd01 - #xfcf4fafa - #xf700fb05 - #x120cfee7 - #x3f6fc19 - #x6ff0803 - #x7121117 - #x50c0afd - #x3000208 - #xfbf4fb01 - #xfcfbff06 - #xa0afcf0 - #x3f70618 - #x50401 - #x8121611 - #xa0b01f8 - #xff000a0e - #xf8f4ff04 - #xfcfe0103 - #x609fef6 - #x2fb0c10 - #xff070003 - #x8131809 - #xd04f9f8 - #xfd041210 - #xf8f90200 - #xff0400ff - #x40800f9 - #x3010b07 - #x5ff05 - #x9151400 - #x9faf4fa - #x20b180c - #xfafcfffc - #x608fcfc - #x20704fc - #x7030504 - #x3040006 - #xd140afe - #x1f4f4fc - #x80e1a04 - #xfafdfcff - #xd04f8fc - #xff060400 - #xb000104 - #x4030008 - #xd0c02ff - #xf8f2f802 - #x90f18fd - #xfafffc05 - #x1100f8fa - #xfd060709 - #xffd0004 - #x204010b - #x5000302 - #xf4f6fe08 - #x8160af9 - #xfdff0508 - #x9faf8f5 - #x1070613 - #xfe0007f9 - #x5020810 - #xfe050500 - #xf8fb0305 - #x6140901 - #x3030700 - #x4faf0f5 - #x40a12 - #xfa0407f7 - #xc070a0b - #xc0400 - #xfffb00fe - #x9140b01 - #xb0300f6 - #x1f6ecff - #xff040f0d - #xfe0a04f8 - #x15070503 - #x70cff06 - #xfdf90100 - #xe1308fd - #x8fbf6f6 - #xf1f30d - #xfc050f06 - #x60d01fa - #x16020101 - #x907ff10 - #xf8fa0604 - #x110d04fb - #xfdf0f3ff - #xfdf20114 - #xf9070bfe - #xe0900fd - #xeff0104 - #x8050417 - #xf8020b05 - #xa0607fd - #xeeebf402 - #xfffc0e0d - #xfa0a00f8 - #x120503fe - #x5030308 - #xa040812 - #xfb070b05 - #x3090dfd - #xe8ebf301 - #x3061200 - #xfd08f5f8 - #x110306fa - #x40b040e - #xb000a08 - #xfc0b0a0b - #x5150df7 - #xeae5edff - #x70d0bf5 - #x101eefd - #x100407f6 - #x90f0717 - #x4fa0901 - #xfa0f0b12 - #x101cfef5 - #xebe0ec04 - #x71103f4 - #x3f9f200 - #x80704f7 - #xe09101e - #xf9fb0800 - #x1130d10 - #x1513f100 - #xe6e0f60d - #x61200f6 - #x2f5fbff - #x306fefb - #xf07171b - #xf7040301 - #xf120906 - #x1106f30e - #xe1e40712 - #x912fdf3 - #xfff900f9 - #x402f801 - #xa0b1e17 - #xdfe02 - #x180800ff - #x701000f - #xe0f2130b - #xf0df8ec - #xfefffdf7 - #x7fdfa08 - #x8141f11 - #xe0df902 - #xefefe00 - #x2050701 - #xe2011202 - #x1202f0e7 - #x2f6fb - #x7f7ff0a - #x71c1c0e - #x1507fa02 - #xfcf90109 - #x509fff1 - #xf20808ff - #xdf6eaea - #x201f301 - #x3f7070b - #x91e160e - #x14040000 - #xf1fe0812 - #x602eff0 - #xff040503 - #xedecf7 - #x200f702 - #xfefd0d07 - #xc1a1310 - #x110703fd - #xf7060b15 - #xfef5eafb - #x904 - #xf6ecf400 - #x200fcfb - #xfd020c06 - #xb15150e - #x140dfff9 - #x3080b15 - #xf1edf505 - #xfd070dfb - #xf4f1fa03 - #x102fbf1 - #x1060907 - #xb15170b - #x1b0ff7fb - #x8040b17 - #xe9f30402 - #x31006ed - #xf9f3fc02 - #x204f4f0 - #x7020908 - #xa181409 - #x1e07f4fe - #xff010e1a - #xeb0009f7 - #xe0ef6e5 - #xfbeffb05 - #x204f1f6 - #x7ff0a05 - #xc1b0e0b - #x1afef800 - #xf506121e - #xf50901ef - #x17ffe7e9 - #xf4eafe0d - #x404f5ff - #x3ff0e00 - #x101c0b0e - #x11fa0000 - #xf50e131f - #xfc0af6f4 - #x11ece7f4 - #xe7ed0313 - #x80800fb - #xfb050bfb - #x17130a0e - #x9fe0403 - #xf101f - #xfe07f0fc - #x2e4f2f9 - #xe1f70714 - #xe0d07f0 - #xfa0801fc - #x1d0a0a0b - #x505030a - #x80b0f1c - #xfe04f101 - #xf4e9fef6 - #xe700080f - #x141105e4 - #x5f804 - #x18020c07 - #x50b0315 - #xa071415 - #x3f402 - #xeff3fff1 - #xf2000208 - #x1712fbe0 - #x4fbf711 - #xe000d04 - #x60d0a1a - #x70b160a - #x400f803 - #xf1f8fbf4 - #xfcfb0105 - #x160ff1e5 - #x3f30019 - #x4040a04 - #x90e1117 - #x8110f00 - #x2fefd07 - #xf4f7fafd - #xfef70405 - #x110beef0 - #xfef40c18 - #x80504 - #xc101610 - #xc1001fb - #xfe00060d - #xf4f6ff01 - #xfcfa0603 - #xc08f3f7 - #xfafd120f - #x2080105 - #xc131706 - #xe07f9fd - #xfd050f0d - #xf4f902ff - #xfe0004ff - #xa07f8f8 - #xfc040f07 - #x5030206 - #xd171001 - #x9fef6fe - #xc1607 - #xf5fe00fb - #x40200fe - #x807fbfb - #x60904 - #x6000306 - #x11160801 - #xf6f4ff - #x61217ff - #xf7fefcfe - #xb00fefc - #x508fd00 - #x5020503 - #x5000409 - #x120f0201 - #xf7f5f602 - #x91413f8 - #xf8fcfc06 - #xdfcfcfa - #x308fe0a - #x5fe0400 - #x400050d - #xc070102 - #xf2f5fa08 - #x9160cf7 - #xfbfe010a - #xcfafaf6 - #x2080212 - #x1fe06fb - #x3010811 - #x20501 - #xf5fa0108 - #xf1501fb - #x40a01 - #x1fbf3f6 - #x5031011 - #xf90700fb - #x6021107 - #x208ff03 - #xfaff05fd - #xf1407fe - #x50804f9 - #xf4eeff - #x104130e - #xfd0cfefa - #xc050c00 - #xa0bfc08 - #xfafd00fa - #x131208fa - #x603f9fa - #xfeebf60b - #xff091108 - #x70afcfb - #xf0305fe - #xe04fd12 - #xf5fd0101 - #x140d02f6 - #xfef9f301 - #xfaea0411 - #xff0e0a03 - #xe07fefb - #xb000102 - #xa000619 - #xf5010506 - #xe0700f9 - #xf1f1f609 - #xf9f5130b - #x10d00ff - #xf0401f8 - #x3020108 - #x8000f14 - #xfb080708 - #x50703fd - #xeaf0f906 - #xfd0514fd - #x509f6fe - #xb0504f6 - #x406040f - #x6010f0a - #xb070b - #x40f02fd - #xebedf800 - #x4110cf2 - #x7fff200 - #x70904f6 - #xa060915 - #xb03 - #x30b0911 - #x1118f8ff - #xe8e4f4fd - #x91300f2 - #x5f4f503 - #x50c00f9 - #x11031319 - #xf8000705 - #x90d0f11 - #x1d10ec08 - #xe2e2f806 - #xc10fef4 - #xfff2fd01 - #x609fa00 - #x10041c17 - #xf505000b - #x140f0e02 - #x1901f114 - #xe0e9030d - #x100dfff2 - #xfbf7ffff - #x802f803 - #x90d1f12 - #xfe09fc0b - #x1b0a06f8 - #xdf90116 - #xe0f70f0d - #x1508feeb - #xfbfff900 - #x9fafd05 - #x6181e0c - #xb08fc08 - #x13fffdfa - #x5000a08 - #xe1050f05 - #x1600f5e3 - #x1f105 - #x4f70204 - #xa1f180d - #x1202ff04 - #xf9fe06 - #x60704f7 - #xed0c0700 - #x10f7ece1 - #x3fef00c - #xfefa0903 - #xf1f150e - #xfff0101 - #xf4fb0413 - #xa05f3f2 - #xfd080201 - #x3eeebec - #x4faf70c - #xf8000d04 - #x141c150e - #xa020200 - #xf7020b16 - #x5f6e9fb - #xfe030504 - #xf7ebf4fa - #x3fbfd03 - #xf9060c04 - #x1416170a - #xd08fd00 - #x2060e14 - #xf8ecf104 - #xfc070900 - #xf2eefd00 - #x200fbf9 - #x90a05 - #x10161605 - #x1508f700 - #x7050c15 - #xebef0004 - #x1006f3 - #xf5f301ff - #x402f2f4 - #x4070a04 - #xf1a1206 - #x1a01f501 - #x2030e1c - #xecfd04fb - #xd0ff7e8 - #xf7f30000 - #x7ffedf9 - #x3040c03 - #x111b0e0a - #x14faf800 - #xfb05121f - #xf608fcf6 - #x1501eae6 - #xf2f20009 - #x8fbf2fe - #xfe070d00 - #x16160d0d - #xaf8fd01 - #xfd0b161f - #x10aeef9 - #xfeee6ec - #xe9f30515 - #x7fcfffb - #xf90d09fd - #x1c10100c - #x2fdff06 - #x50c161f - #x603ea03 - #xfce7f0f3 - #xe4f90e18 - #x90406ee - #xfd0d0001 - #x1d091205 - #x102fc10 - #xd0a1719 - #x6fdee08 - #xebecfaf4 - #xeaff1011 - #xf0e00e3 - #x506f808 - #x16061000 - #x305fe19 - #xc091b11 - #x5faf506 - #xe6f8fbf2 - #xf5000f06 - #x1512f3e1 - #x9faf912 - #xa070b00 - #x706081c - #x60d1a09 - #x5f9f805 - #xecfdf5f6 - #xfcfc0cff - #x190de6e9 - #x3f20418 - #x20b0804 - #xa081516 - #x7131203 - #x2f8fb09 - #xf2faf4fd - #xfcf909fc - #x1705e3f3 - #xfaf61017 - #xd0707 - #xb0d1a0b - #xf120502 - #xfefa0010 - #xf4f8fb00 - #xf8fb09fd - #x1300ebfa - #xf3011611 - #x50a0605 - #xc121603 - #x1309fb03 - #xfd020b0f - #xf3fa00fd - #xf90108fb - #xffff3fa - #xf70b110a - #x8020502 - #xe150e03 - #xdfef704 - #xc1108 - #xf4fffff9 - #x304f9 - #xc01f7fb - #xfe0c0a07 - #x6000601 - #x12140604 - #x2f8f704 - #x81211ff - #xf6fffafc - #x60001f9 - #xa03f701 - #x3070505 - #x3000705 - #x15100206 - #xfaf5f607 - #xc170bf8 - #xf8fcfb03 - #x7fd00f8 - #xa03fa0a - #x2020402 - #x1000909 - #x10080205 - #xf6f4f80b - #xe1803f7 - #xfafa0107 - #x5fcfcf5 - #x9020112 - #xfd0203fe - #x2000c0c - #x7050203 - #xf6f5ff0b - #x101700fa - #xfe000905 - #x2fcf5f4 - #x6030b13 - #xf80601fa - #x400110b - #x1070003 - #xf9fb0502 - #x160e02fa - #x10c0502 - #xfff5f1fc - #x1071709 - #x204f902 - #x20c0ffb - #xa03fe06 - #xf80200fd - #x160f05f8 - #x709f902 - #xfceaf705 - #xd1409 - #xa05f9ff - #x70b04f9 - #xdff000f - #xf7fffb02 - #x170e00f5 - #x4fef209 - #xf4e9040b - #x3100d06 - #xf02fbfc - #x607ff00 - #x9fb0a14 - #xf700000b - #x1107faf7 - #xfbf4f610 - #xeff51207 - #x80f0501 - #xc01fef9 - #x303000a - #x3fe1412 - #xfc04040d - #x804fafd - #xf1f1fe0e - #xf30814fb - #xd09fdfd - #x704fef8 - #x302040e - #x31609 - #x207060c - #x608fb01 - #xeff3ff03 - #xfe1409f0 - #xbfdf9fe - #x509fcfb - #x8010c10 - #xff060c05 - #x7070b0e - #xf0bf805 - #xebeffafd - #x814ffef - #x4f3fc01 - #x70bf900 - #xb011510 - #xf9050409 - #xa091109 - #x1b06f20b - #xe2e9f703 - #xf0ffdf1 - #xfbf10003 - #xb07f805 - #xa031a0f - #xf8060010 - #x100e13fc - #x1af8f815 - #xe0ecfe11 - #x130800ee - #xf5f7ff05 - #xe00fa05 - #x5131c0d - #xff07020f - #x160f0af0 - #xdf10817 - #xe0f70714 - #x1507ffe6 - #xf7fef909 - #xbfaff01 - #x41d1a0c - #x8040408 - #x1106fdf4 - #xf9140c - #xe3050b0f - #x1305f6e0 - #xf40f - #x3f904ff - #xd1f140c - #xbfe0402 - #x2fbf903 - #x2060bfc - #xf20b0506 - #xdfeebe0 - #x5f8f614 - #xfafe07ff - #x161f140d - #x7fd0302 - #xf6f90111 - #x805fbf4 - #x70004 - #x3f4e6e4 - #x4f3fe13 - #xf5040903 - #x1b1b1509 - #x4010105 - #xf5fe0b13 - #x9f8edf9 - #x1030108 - #xf7ededf2 - #xf6060a - #xf90a0805 - #x19171602 - #x706fe07 - #xfe041011 - #xfcebf202 - #xfe050507 - #xf0f0fafa - #xfc02fe - #xc0806 - #x14181400 - #xf05f908 - #x4060f11 - #xeeebfe04 - #x20d04fd - #xf1f600fa - #x3fff8f8 - #x60a0905 - #x121b0e01 - #x13fff906 - #x3040f18 - #xeaf803ff - #xd0efaed - #xf3fcfffb - #x8faf1f8 - #x4090a04 - #x16190a06 - #xdf9fa05 - #xfe05151f - #xf503fafb - #x1602ece6 - #xf2fafe05 - #x7f3f5fc - #xff0c0904 - #x1a150e09 - #x3f8fb05 - #xff081a1f - #x304efff - #xff2e6ea - #xecf90312 - #x2f300f8 - #xff100606 - #x1b0f1206 - #xfefbf90c - #x50c1d1a - #xbfbec06 - #xfbe9eaf3 - #xe9fb1019 - #xfe06ed - #x4100006 - #x1a0c11ff - #xf815 - #xb0c1f11 - #x8f2f509 - #xe9eef1f9 - #xed01190f - #x70afee3 - #xd05fa0a - #x120f0cfc - #x400fe1b - #x8101f0a - #x3effd05 - #xe6f8f3fd - #xf5031800 - #x110fede3 - #xffafd0f - #x90f0700 - #x5fe0a1a - #x3141d07 - #xf2ff02 - #xeffcf000 - #xfb0410f4 - #x1a08e1ec - #x4f40615 - #x4100406 - #x4021812 - #x4191304 - #xfdf3fe09 - #xf8f8f003 - #xf90409f2 - #x1afce1f5 - #xf6fa1218 - #x50e0709 - #x50c1b07 - #xf160805 - #xfaf50012 - #xf9f5f603 - #xf60506f4 - #x14f4eaf9 - #xef051617 - #x90a0903 - #xa151402 - #x160a0007 - #xfafc0813 - #xf6f8fdff - #xf60705f7 - #xcf4f5f9 - #xf50f1213 - #xa0509fc - #xf170b03 - #x11fffd08 - #xff06100b - #xf5fdfcfa - #xfc0802f6 - #x9f9f8f8 - #x100b0f - #x60207fb - #x13130507 - #x5f8fc08 - #x7100d01 - #xfafff8fb - #x10600f4 - #x8fcf8fd - #x70b060d - #x10305ff - #x130d0408 - #xfdf5fb0a - #xf1406fc - #xfcfaf803 - #x202fef4 - #xafdfb06 - #x5050409 - #xff040704 - #x11090604 - #xf9f2fb0f - #x131400fa - #xfbf80007 - #x1fbf4 - #x8fc030c - #xff040206 - #x40d07 - #xb060403 - #xf8f2000f - #x1512fdf9 - #xfaff0606 - #xff00f5f4 - #x5fe0e0d - #xfd06ff04 - #x61204 - #x6050203 - #xf6f70507 - #x160f00fa - #xff080901 - #xfaf2f9 - #x103160c - #xff07fa02 - #x10810ff - #x805fe05 - #xf80004fd - #x150b01f9 - #xa09fb0e - #xfcedf600 - #x1121306 - #xbfcfc01 - #x41500fc - #x8fc0402 - #xfbfffa08 - #x150dfef8 - #xdfef612 - #xf0eb0107 - #x7150f05 - #xdfcfcfd - #x80efb02 - #x3f80b0a - #xfcfbfe11 - #x1308f6f9 - #x4f2fa18 - #xe8f90d06 - #xd110bfe - #xafefbfb - #x604fd0b - #xfdff150b - #xfdfe0611 - #xc01f5fd - #xf9f00315 - #xec0b0efe - #xf0905f7 - #x501fafd - #x400050f - #xfc081607 - #x1010a0c - #x500f802 - #xf2f60709 - #xfb1804f3 - #xd0001f5 - #x604f704 - #x4000e0d - #xfd0c0d05 - #x5050d07 - #xb02fa05 - #xf0f7ff00 - #xa16faf0 - #x3f700fb - #xb04f70a - #x503120a - #xff0a040a - #x7081204 - #x1300fb09 - #xeaf2f805 - #x120bf9f0 - #xf8f50103 - #x1100f90a - #x30b1509 - #xff050410 - #x91013f9 - #x12f3010f - #xe0edf915 - #x1306feea - #xf2fa0009 - #x13fcfe06 - #x117130b - #x3070f - #xe1609ee - #x3ee1013 - #xe1f2031e - #x1208fce2 - #xf7fefd0f - #xbf902fd - #x51f110d - #x6020d04 - #xf0df9f2 - #xf8f91a0d - #xe7fe0a17 - #x100af3e0 - #xfefcfb14 - #x1fc04fa - #x111f120f - #x7010b00 - #x6fff300 - #xfa0815ff - #xf6060a0b - #xd05e8e0 - #x2f40017 - #xf80103fe - #x1c1d130d - #x2000404 - #xf9f6fc0d - #x50b01f4 - #x2050305 - #x5f9e2e4 - #xfff00a14 - #xf8060305 - #x1f191605 - #x2000c - #xf3fb0a0e - #x8fef3f5 - #x500010a - #xfbefe2ef - #xf9f4100b - #xfc090509 - #x1e1814fd - #x304fe12 - #xf8041009 - #xffedf3fd - #x50e - #xf2eff0f8 - #xf8fc0c00 - #x30a0708 - #x181b0efa - #xa04fd10 - #x80f09 - #xeeebfe02 - #x2060704 - #xf0f8faf8 - #xff0000f7 - #x90a0804 - #x171d08ff - #xefefd0c - #x1080f13 - #xe9f50200 - #xd0afff4 - #xf3fffaf9 - #x3faf8f5 - #x80b0805 - #x19190704 - #x8f9fd08 - #x6151c - #xf200fefd - #x1502f1e8 - #xf500f704 - #x1f1faf7 - #x40d070a - #x1c120b06 - #xf9fa0c - #xfe0a1e1b - #x1fff4ff - #xff4e7eb - #xf3fc0012 - #xfbf101f5 - #x60e050c - #x1a100f02 - #xfdfaf810 - #x10f1f13 - #x8f5f403 - #xfeeae6f7 - #xf0fc0f16 - #xf7fb04ee - #xd0b030a - #x16130dfd - #xfffbfa18 - #x4151f08 - #x3ebfd05 - #xedebeb02 - #xf1011b0c - #x8fbe6 - #x13040009 - #x101605fd - #x2f8021c - #x4181d04 - #xfbec0401 - #xebf1f007 - #xf60d1afa - #xe0ceae6 - #x10fb020a - #xc15ff04 - #x1f81116 - #x11b1905 - #xf6f10300 - #xf4f4f107 - #xfb1310ee - #x1802e0ed - #x3f80910 - #xa10000b - #xffff1c0d - #x51d1306 - #xf5f5ff07 - #xfdf1f306 - #xfb1102ed - #x19f3e3f4 - #xf4fd1119 - #xc0b070c - #xff0c1b05 - #x101b0a05 - #xf4f40212 - #xfceff904 - #xfa0ffdf2 - #xfeaeef6 - #xf008161e - #xd080d01 - #x6170e02 - #x18100305 - #xf4f80a16 - #xf8f3feff - #xfa0dfdf6 - #x4ecf7f3 - #xf811151c - #xd090af7 - #xf170406 - #x13020106 - #xf900110d - #xf7fafdfb - #xfe0cfef5 - #xf4f9f3 - #x5111018 - #x80802f4 - #x14120209 - #x5fb0208 - #x20c1002 - #xfbfcf7fc - #x20afcf4 - #x2f8f8f8 - #xc0b0c12 - #x20800fc - #x130b0608 - #xfcf8010c - #xc1106fd - #xfef8f701 - #x308faf4 - #x3f8fb00 - #xa06090f - #x80103 - #xf080904 - #xf9f4000f - #x140f00fa - #xfcf5fd09 - #x205f6f6 - #x3f90404 - #x303060d - #x80805 - #xa080700 - #xf6f2040f - #x150b00f7 - #xf8fb040a - #x102f4f6 - #xfc0e05 - #x103020c - #x10b0d01 - #x8070300 - #xf1f7090a - #x160900f5 - #xfb06060b - #x1fbf1f7 - #xfc041304 - #x4010009 - #x1110bfc - #x9040201 - #xf1ff0705 - #x140a02f8 - #x40d000a - #xfff0f4fd - #xe1507 - #xafefd05 - #x21504fa - #x8ff0203 - #xf902fd03 - ) - ) - + (new 'static + 'array + uint32 + 16384 + #x130af9fc + #x12fdff18 + #xf1effc05 + #xb170e04 + #x4fb00fb + #xf0dfa07 + #xffff0701 + #xf80010 + #x1408f4fa + #xbf1021b + #xe7fa050b + #x11140efa + #x4fcfcfc + #xe00fe0e + #xfa010e06 + #xfcf80a11 + #xefff2fb + #xfbf00c19 + #xeb0b0906 + #x120d0aee + #x2fdf803 + #x7fc060e + #xfa0c1108 + #xfc001007 + #x7faf700 + #xf1f8100f + #xfc1502fc + #xc0603eb + #x5fef80b + #x2ff0d0a + #x120b06 + #x51001 + #x5fcfd02 + #xf1ff0804 + #xe12f9f5 + #x100fdf3 + #xbfcfa0f + #x1071008 + #x50e0507 + #x20c10fd + #x8fb0004 + #xf1fafb06 + #x1606f6f3 + #xf7fcfd02 + #x10f9000b + #xe0d09 + #x406070b + #x5130ef9 + #x7f70509 + #xebf0f914 + #x1201f9ec + #xf3fe000d + #xff90400 + #x2180b0d + #x2020e08 + #xc1904f4 + #xfcf40e10 + #xe4ed041f + #xe07f7e1 + #xf7ff0012 + #x7fb06f7 + #x91f0e13 + #x1031301 + #x1312f4f4 + #xf0ff170f + #xe8f71117 + #xe0dede0 + #xfefb0213 + #xfd0003f6 + #x171c1214 + #x1050b00 + #xe00ed00 + #xf30d1404 + #xf3011207 + #xf08e4e1 + #xfff50a13 + #xf80400fd + #x1f19140d + #x1050107 + #xf4f608 + #x21306f6 + #x40aff + #xcf9e0e7 + #xf8f21313 + #xfa050005 + #x1f181602 + #x5fd12 + #xf4f70608 + #xa07f7f2 + #x3000505 + #x2ebe0f2 + #xf1fa170d + #x1060409 + #x1e1a11fb + #x3030018 + #xf5020d02 + #x2f6f3f8 + #xff070d + #xf7e7e8fb + #xf2031403 + #x7070804 + #x1b1d08f9 + #x7000217 + #xfc0b0c03 + #xf1edfa00 + #x20c0a + #xf1f2f4fa + #xfa0708f9 + #xa080900 + #x1b1d01fd + #x9fd0311 + #x20a0a0c + #xe8f60000 + #x80807f7 + #xf6fdf5fb + #xfdf3 + #x90a0803 + #x1d150104 + #x5fb010f + #x1081316 + #xeffffffd + #xf04fae9 + #xfbfff404 + #xfef7faf3 + #x90b0709 + #x1d100706 + #xf9fe10 + #xfe0b1d16 + #xfdfff9fb + #xdf8eaea + #xfcf9fd12 + #xf5f4fef4 + #xc0b080c + #x19100b03 + #xfdf9fc16 + #xfe151f0b + #x1f5f9fe + #xebe5f9 + #xf7f90e17 + #xf1fdfff1 + #x11080a07 + #x14150700 + #xfff6001a + #x21a1d04 + #xfbedff00 + #xf1e6eb06 + #xf5031b0d + #xf907f7ec + #x14030900 + #x12180001 + #xfff30918 + #x51e1702 + #xf1ef0400 + #xeee8f30b + #xf81218f9 + #xa09e9ea + #xefe0700 + #x1216fc0c + #xfbf51413 + #x71f1405 + #xedf70002 + #xf5ecf907 + #xfe1c09ee + #x15fde2ed + #xfe090b + #x130a0012 + #xf6001b0e + #xd1f0f05 + #xeffafa09 + #xfbecfd02 + #x31bfbef + #x14eee6f2 + #xf4010e19 + #x12030a0d + #xf90e1609 + #x161b0a02 + #xf1f9fd14 + #xf9ed00ff + #x513f5f7 + #x6e5f0f3 + #xf209161f + #xe051000 + #x5180a08 + #x1d130500 + #xf0f80a18 + #xf3f202fa + #x50bf7fa + #xfaeaf6f2 + #xfc10191f + #xc0c0af3 + #x12170009 + #x18080302 + #xf300140f + #xf2f8fff6 + #x608faf8 + #xf6f3f6f3 + #x9111918 + #xa0f00f2 + #x160c000b + #x9010408 + #xfc0b1302 + #xf8faf9f8 + #x808faf6 + #xfaf8f4f7 + #xf0e1510 + #x80cf8fc + #x11060609 + #xfdfe050c + #x80f09fc + #xfdf6f8ff + #x806f6f8 + #xfef8f7fd + #xb09110d + #x607fc05 + #xc080a04 + #xf8fc060e + #x100c02f8 + #xf9f2fd07 + #x704f5fb + #xfdf8ff00 + #x5050d0e + #x4060307 + #xb0a0700 + #xf4f8070d + #x120702f4 + #xf3f8040e + #x600f4f9 + #xfafd0801 + #x3030b0d + #x40b0903 + #xb0a0200 + #xeefb0a0a + #x100502f0 + #xf7020610 + #x6f9f3f7 + #xf9070c02 + #x5000909 + #x61205ff + #xa050200 + #xed000808 + #xf0700f2 + #x2080312 + #x1f1f4f8 + #xfe110c05 + #x6fc0601 + #x915fefe + #x70103ff + #xf4020309 + #x110afbfa + #x1002ff17 + #xf7edf800 + #x8170d07 + #x6fb03fd + #xd13fb03 + #x1fe0600 + #xfffdfe0f + #x1305f4fb + #x9f50c18 + #xecf80010 + #x13130df9 + #xfcfffdff + #x13fc020b + #xfc05000a + #xfafb0e07 + #x11fdf4f7 + #xf7f4141a + #xee03080f + #x121109eb + #xfefcf906 + #x9f80a0c + #xfd0b070b + #xf50313ff + #x6f7f7fa + #xec001812 + #xff0d0703 + #xe0dfee7 + #x1fafc0f + #x1ff0e08 + #x4110809 + #xfa0b0ffa + #xf7fdfe + #xef071009 + #xf0bfff8 + #x707f4f1 + #x4f70110 + #x80d07 + #xa0e0607 + #xf0bfb + #xfb0001 + #xf7030206 + #x1600f8f5 + #xfd01f303 + #x7f70808 + #x210080a + #xa070805 + #x51307fd + #xfb0207 + #xf5f6ff0e + #x10fdf8f3 + #xfa00fb0f + #x4fc0bfd + #x7120810 + #x3040f03 + #xe1600fb + #xf9fc0711 + #xecef0814 + #xb02f5e9 + #xfb000312 + #xff0007f3 + #xe120c14 + #x71000 + #x1810f5fb + #xf1030f16 + #xe5f6170d + #xb0aeae0 + #xfdfd0911 + #xfb0500f2 + #x1a131414 + #x10c0902 + #x19ffec00 + #xf511100d + #xec031afc + #x1302e2e1 + #xfaf90f10 + #xfc05fcfd + #x1f13180b + #x30aff0e + #x9f0f304 + #x31607fd + #xf7090ff5 + #x14f3e0e7 + #xf4fb1413 + #x2fd04 + #x1e161600 + #x305fd18 + #xf9f30003 + #xe0efaf3 + #xfe0504fe + #x9e5e0f3 + #xef021712 + #x4010504 + #x1b1a0dfb + #x401041d + #xf4000800 + #x7fdf3f7 + #xfc000709 + #xfae0e8fc + #xf10c130a + #x7040afc + #x1c1d03fc + #x6ff0a1b + #xfd090500 + #xf8f3f6ff + #xfb030e08 + #xf2e7f3fd + #xfb0f0cfe + #x8080af8 + #x1d18fe01 + #x5ff0c16 + #x4090409 + #xecf5fd02 + #x80df8 + #xf5f6f5fb + #x20900f5 + #x90a06fc + #x1f110006 + #x2fd0714 + #x4070b11 + #xf0fefeff + #x80900e9 + #xfef8f402 + #xfff9f4 + #xa0a0604 + #x1c0b0507 + #xfffc0117 + #xb1810 + #xfafffbfb + #x9ffefe9 + #xf4fc0f + #xf7faf8f7 + #xc080b08 + #x170d0805 + #xfdf8031a + #x161d0a + #xfff9f8fd + #xefe7f7 + #xfbf40c14 + #xf2fff8f9 + #xf090f00 + #x14130304 + #xfdf50819 + #x51f1802 + #xf7f3fb03 + #xf4e5ee04 + #xf601180b + #xfa05f4f4 + #xf080df7 + #x1715fe09 + #xfaf31015 + #xe1f1003 + #xedf6fe07 + #xede5fa05 + #xf91416fd + #x804ecef + #x90709f7 + #x1a0cfd11 + #xf4f71612 + #x141f0d07 + #xebfefb0a + #xeeea02fe + #x21f06f2 + #x11f9e6ee + #x50502 + #x19010513 + #xf1011811 + #x181e0b07 + #xf1fff511 + #xf1ef04f6 + #xd1af8f3 + #xcebe8f2 + #xf8050917 + #x14fe100c + #xf60f1113 + #x1d170aff + #xf5faf918 + #xeff304f3 + #x110ef3fa + #xffe6eef6 + #xf809131f + #xd0412ff + #x3160811 + #x1f1206fa + #xf3f8061c + #xeaf804f3 + #x1002f8fd + #xf2ebf2f9 + #xf1d1b + #x90e09f2 + #x1314020e + #x1d0b00fe + #xf2001213 + #xecfc00f1 + #xdfffcf9 + #xf0f4f0fa + #xa141f10 + #xc13fbf3 + #x1708030d + #xf040109 + #xf80b1205 + #xf3fdfbf1 + #xb00fbf5 + #xf6f7eefd + #xe151d07 + #xd0bf4fe + #x1002070b + #x2020511 + #x41209fd + #xf9f8f7f7 + #xb02f8f8 + #xfcf7f100 + #xc101605 + #xb01f908 + #x8040a08 + #xfc02080f + #xe0c01f9 + #xf6f4fc02 + #xafff7fd + #xfbf7f902 + #x60d1209 + #x800020a + #x90a0705 + #xf900080b + #xe0600f4 + #xf0f6030c + #x9fbf9fc + #xf9fcff03 + #x3081009 + #x6050706 + #xc0a0202 + #xf3000809 + #xa0500ef + #xf1ff0911 + #x7f7f9f7 + #xf9040105 + #x2061002 + #x90d0402 + #xd070001 + #xf002070a + #x908fbef + #xfe050811 + #x2f3f6f5 + #xd0308 + #x1030dfc + #xf10fe02 + #x9030100 + #xf403050c + #xd0af5f6 + #xb000613 + #xf9f1f5fd + #x9110707 + #xff0208f9 + #x1409fb06 + #x2020001 + #xfcff050d + #x1308f4fc + #xdf90918 + #xeef4fc0b + #x12130cff + #xfc0100fb + #x14ff000b + #xfe030006 + #xfdf90a0c + #x11faf6f4 + #xf3ff1718 + #xf1fb0a12 + #x141206ee + #xfdfdf90c + #x7fb0c03 + #x1030013 + #xf30911fc + #x7f4f5f4 + #xe8071c17 + #xfd041005 + #x1211f8e9 + #xfef8ff10 + #xfe020e03 + #x70a070e + #xf8120cf7 + #xfef4f9fb + #xef11150d + #xb0607f6 + #xf0aebf4 + #xfff7050f + #xfe0b0c04 + #xd0a0806 + #x21404fb + #xfbfafc01 + #xfb0e0905 + #x1100fdf2 + #x901ea05 + #xfdfa0c08 + #x40e0808 + #xc070802 + #x9130100 + #xfcfdfd08 + #xff000205 + #xcfbf8f5 + #x2fcf712 + #xfa010dfd + #xb0c080d + #x5050b01 + #x1111ff03 + #xfbfe0013 + #xf2f6090a + #x5fef7f3 + #xfd0514 + #xfa0706f6 + #x100a0f10 + #xa0a01 + #x1b0bf700 + #xf701081b + #xe6fb1402 + #x801eee9 + #xffff0d0e + #xfc09fdf6 + #x150a170e + #x20f0406 + #x1dfdf2fe + #xfa0d1016 + #xe50a19f4 + #x11fce1e0 + #xfb00100e + #x4f6fc + #x190d1906 + #x80dfe10 + #xfedf400 + #x7150d03 + #xf2140ced + #x15ebe0e4 + #xf5021116 + #x600fb00 + #x1a161300 + #x906001b + #xfaeeff00 + #x120ffff6 + #xfc0e00f7 + #xae1e2ee + #xf209131a + #x6ff04fd + #x191b0aff + #x6000a1e + #xf3fb0300 + #xe01f4f7 + #xfd040006 + #xf9e0ebf9 + #xf7101314 + #x40409f3 + #x1c1b0100 + #x3ff131b + #xfb060001 + #xfff5f400 + #xfa040a09 + #xede2f4fb + #x130d05 + #x50a06ef + #x1f12fe04 + #x1011219 + #x6050007 + #xf3f5fa05 + #xfb0b0efc + #xefedf8f9 + #x70e04fa + #x70c02f4 + #x1e090007 + #x1020d1a + #x802060c + #xf2fbfe01 + #x20f03eb + #xf9f3f7fd + #x604faf7 + #x90a01ff + #x1a060608 + #x81c + #x206110d + #xfafefbfe + #x906f1e9 + #xfdeffd07 + #xfefef5fd + #xb080803 + #x140a0708 + #xfdfa091c + #x1131607 + #xfefbf600 + #x3f5e9f4 + #xf9f00a0f + #xf8fdf600 + #xa0a0efd + #x130f0409 + #xfaf81019 + #xa1f1304 + #xf7f6f509 + #xf7e7efff + #xf300170c + #xfd00f6fc + #x90f0df1 + #x180d000b + #xf4f81315 + #x171e0c04 + #xf0f8f711 + #xebe7fdfe + #xf81314ff + #x6fff2f4 + #x71004f3 + #x1c050210 + #xeffd1414 + #x1d1a0a06 + #xf0fcf715 + #xe6ef05f4 + #x51d08f5 + #xcf7edf0 + #x40cff01 + #x19fc0b11 + #xee061218 + #x1f150b00 + #xf7fcf719 + #xe7f805eb + #x1419fbf4 + #x6eceaf5 + #xfe070213 + #x10fb1309 + #xf510101a + #x1f140bf7 + #xfbf6fc1d + #xe8fd00ed + #x1a06f8f8 + #xf9e8ebff + #x6101c + #x70712fe + #x4140c16 + #x1f1305f2 + #xf7f4071f + #xe800fef0 + #x16fbfbf8 + #xefeced04 + #x30e1e15 + #x51207f5 + #x100f0a0f + #x1e0cfff9 + #xf2fb141a + #xeb01fcf0 + #xdfa00f4 + #xeff2ee06 + #x8171f06 + #xe13f8f6 + #x1406080a + #x1403fd08 + #xf709130c + #xf300f7ed + #x9fefdf0 + #xf6f4ed06 + #xd1b1cfd + #x1208f300 + #xb000a0c + #x8010414 + #x3110902 + #xf8fbf4f0 + #x8fff9f3 + #xfbf2f106 + #xe1b16fe + #x10fcf909 + #x4030b0e + #x2030a11 + #xe0e00fe + #xf6f6f6fc + #x8fcfafb + #xfbf2f607 + #xa161103 + #x7f9040b + #x609090b + #x4090a + #xe06fefb + #xeff7ff08 + #x6f9fefa + #xf8f8fb08 + #x6111103 + #x4010906 + #xc0a0407 + #xfc030608 + #x804fcf5 + #xeffd070e + #x4f8fef4 + #xfb00fe09 + #x40e11ff + #x7090603 + #xe060104 + #xf902040c + #x608f7f3 + #xfa040b0d + #xf7f8f0 + #x205000a + #xe0ef9 + #xf090002 + #xa030004 + #xf902060f + #xd09f0f6 + #x6030b0c + #xfaf4f3f9 + #xb080509 + #xfe0d06f8 + #x14040004 + #x502fe07 + #xfd00080e + #x1304eef9 + #x6fe0d10 + #xf2f3f808 + #x110b0b00 + #xfd09ff00 + #x13fb0405 + #x202fd0f + #xfc000c07 + #x13fdf4f6 + #xfbfd1416 + #xeff80513 + #x13100bf3 + #xfc02f907 + #xbf80a05 + #x103fd12 + #xf5041100 + #x5f2f2f5 + #xee0e1b1b + #xf9001401 + #x1310f6ee + #xf70012 + #xfb0909fe + #x3000e0d + #xfd1305fd + #xfbf1f3fd + #xf4171a13 + #x3080ef1 + #x1608e8f6 + #xfcf70810 + #xfe0e0800 + #x8050e04 + #x913fefe + #xf7f7f706 + #x3160e06 + #x906ffec + #x11fbe905 + #xf7ff0d0b + #x60f0704 + #xa070a00 + #x100dfc06 + #xfbfbfa0d + #x80a0501 + #x700f7f3 + #x8f3f711 + #xf5060b05 + #xc0a0a06 + #x6070600 + #x150afe08 + #xfdfdfd15 + #xfefe0601 + #xfdf7f9 + #xf60911 + #xf90b03ff + #xe061106 + #x1090406 + #x1a06fe04 + #xfcfe071c + #xed000eff + #x3fff5f1 + #xfefe110b + #x9fafc + #xe081604 + #x50d000b + #x1afdf9fe + #xfe041319 + #xe80d0ff5 + #xaf9ebe5 + #xfd040f0b + #x703f5fe + #xf111602 + #xb0cff12 + #xdf1f8fe + #x60e1706 + #xf41804ef + #xfe8e0e0 + #xfb070d16 + #xafdfa00 + #x11190f01 + #xc040319 + #xf8eefd00 + #x110f09f6 + #x112f7fa + #x4e0e2e8 + #xfa0b121e + #x6fd01f8 + #x151c0701 + #x6ff111a + #xeef80002 + #x1204f9f5 + #x506f808 + #xf4e0e9f3 + #xfe10181a + #x10405ef + #x1b180204 + #x1011918 + #xf6000003 + #x5f8f4ff + #xff01050d + #xe6e1f4f7 + #x6141609 + #x20c00ec + #x1f0e0106 + #xff061719 + #x300ff05 + #xf8f3fb06 + #xfe0a0a02 + #xe6ecf8f6 + #xd110bfa + #x70cf9f4 + #x1c050306 + #x9111b + #x5ff0407 + #xf4f70003 + #x21003f3 + #xf0f2f7f7 + #xc0800f7 + #xb08faff + #x17030607 + #x50e1e + #x1020c08 + #xf9fcfeff + #xa0bf2ec + #xf7effa00 + #x400f8fe + #xb060203 + #x11070808 + #xfeff101f + #xd1106 + #xfdfbf703 + #x9f9e8f4 + #xf3f20509 + #xfefbf901 + #x90a08fd + #x110b060a + #xf8fd1519 + #xb180f03 + #xfbf6f40e + #xfcebeefc + #xefff1109 + #xfefafefe + #x81206f5 + #x1609050c + #xf3001615 + #x1a1a0b02 + #xf5f4f718 + #xeceafbfa + #xf4121300 + #x4fcfcf4 + #xa14fef5 + #x1901080d + #xef041218 + #x1f130900 + #xf5f6fd1d + #xe4f501f0 + #x51b09f5 + #x7f6f4f1 + #xc0cf702 + #x13fc0e0c + #xf10a101d + #x1f100cf8 + #xfaf6011f + #xe5fffeea + #x1513fef0 + #x1efedf8 + #xb04fd12 + #x9011408 + #xf80e111e + #x1e110bef + #xfcf1071f + #xea03f7ee + #x1b04fbf0 + #xf8eaeb06 + #x6010d19 + #x10c0f00 + #x4111217 + #x1d1204ec + #xf6f0111f + #xee02f4f5 + #x14fbffef + #xefebee10 + #x40c1d0d + #x41603fa + #xf0e130c + #x1c0dfbf6 + #xf0f8191b + #xf301f5f5 + #x9fb00ed + #xf0eef311 + #x7191eff + #xe13f8fa + #x11080f07 + #x1503f906 + #xf3061911 + #xf900f4ef + #x200fcea + #xf5eff60d + #xd1f17f7 + #x1605f400 + #x9020b0b + #xafe0313 + #xf0c06 + #xfcfdefee + #x301f7ef + #xf8edf909 + #x131f0ffa + #x12f8fa08 + #x30b11 + #x4020d11 + #xc0b0203 + #xfaf7eff8 + #x4fdf7f5 + #xf7edfc09 + #x131b0b00 + #x7f6030a + #x80b11 + #x3070d07 + #xd03fe02 + #xf3f5f806 + #x3fafdf8 + #xf6f2fe0a + #xf160c02 + #xff0907 + #x90b090b + #x3060605 + #x701fdff + #xf0fb030c + #xfffbfef1 + #xf8f8000b + #xa140dfd + #x3080704 + #xd070505 + #x1030c + #x604f7fb + #xf8020a0a + #xfdfdf8ec + #xfffd040b + #x81509fa + #xb080302 + #xa030205 + #xffff0611 + #xd05eff9 + #x1070b06 + #xfafaf1f3 + #x7000807 + #x51301fc + #x10020201 + #x501ff0b + #xfe000c0f + #x13ffedfa + #x3040a0a + #xf5f4f402 + #xa040d01 + #x50cfb03 + #xdfd0500 + #x400ff13 + #xfd020e0a + #x12f7f0f7 + #xfa030f15 + #xf2f3020b + #xd0b0af7 + #x603f90b + #x5fe09ff + #x4fe0417 + #xf9090e03 + #x9f3f3f4 + #xef0a181c + #xf4fb1208 + #x1211feef + #x2fafe11 + #xfd0308fe + #x2fe0911 + #xf9120afd + #xf8efee03 + #xff181d17 + #xfc0f0ced + #x1604ecf5 + #xfaf90a12 + #x100200 + #xff0514ff + #x110dfe03 + #xf4f2f30d + #xd1b1607 + #x511fbe9 + #x13f5ec00 + #xf5000d12 + #x80f0500 + #x4090bfc + #x1708fc07 + #xf7f6fa11 + #x141209fe + #x507f1f5 + #x6ecfb0a + #xf6080b10 + #xd0a08ff + #x5090401 + #x1603000a + #xfcf80015 + #xa0503fe + #xfff4ff + #xfcf10c0d + #xfe0c040a + #xc080cfd + #x4090107 + #x15010206 + #xfdf90a18 + #xf70106ff + #xfffdfafb + #xf8fe1407 + #x707fc04 + #x80c0ffd + #x70a010c + #x13ff00ff + #xfbff1815 + #xf10b06fb + #x4fcf4eb + #xfc070f06 + #xc00f800 + #x7140eff + #xc08030e + #x9f6fbfe + #x91d06 + #xfc13fef7 + #x7efe7e1 + #xa0c11 + #xaf9fafe + #xc1b0a02 + #xe020910 + #xf8f3fc02 + #xa1114f4 + #xc0df2fd + #xfde1e0e6 + #x10b101c + #x5fa00f9 + #x131d0606 + #x6001111 + #xeaf6ff06 + #xf0a00f0 + #xffff20b + #xece0e3f1 + #x30f1c16 + #x400f1 + #x1b140408 + #xff041914 + #xf0fd0005 + #x9fcf7fa + #x7fbff12 + #xe1e3edf8 + #x8131f06 + #x10af9f1 + #x1f0b0406 + #xfe0c1718 + #xfdfe0003 + #xfbf4fc02 + #x40b0a + #xe0eef4f7 + #xe1417f5 + #x908f1f9 + #x19050604 + #x210121d + #x1fc0302 + #xf4f60300 + #x50d04fb + #xe9f4f4f5 + #xf0f07f1 + #xe02f303 + #x12030706 + #x40b131f + #xfdff0903 + #xf6fb02fd + #xe0bf6f2 + #xf2f4f5fb + #xa03fef7 + #xd00fc08 + #xd070709 + #x106161c + #xfc090e03 + #xfbfcfb00 + #x10fbeaf4 + #xf0f3fe05 + #x1fbfeff + #x9060403 + #xd0a080b + #xfb031817 + #x6120d02 + #xfbf6f70e + #x2eceefc + #xed000909 + #xfefa04fb + #x90e01fb + #x1208080a + #xf6071614 + #x16140bfe + #xf7f1fd1a + #xf0ebf8fb + #xf30d0e03 + #xfefb03f2 + #x1010fafa + #x13030a09 + #xf50b1218 + #x1e110af9 + #xf5f1071f + #xe5f6fdf3 + #x41709f6 + #xfbfaef + #x1608f404 + #xe010e0a + #xf70c111e + #x1b0e0bf1 + #xf6f2101c + #xe900f7f0 + #x161300ec + #xfef5effa + #x14fefb0e + #x3060f09 + #xfd0d161c + #x161108ea + #xf6f2161b + #xf201eff4 + #x1906fae9 + #xf6eeec0a + #xcfd0b0f + #xff110b06 + #x40f1c14 + #x151400ea + #xf1f31a1c + #xf9fdedfb + #x11fef9e9 + #xf0eaf316 + #x4091b07 + #x4180301 + #xb0f1b08 + #x180ff5f5 + #xebfb1f1b + #xfefaf2f9 + #x401f9e9 + #xefeafe15 + #x6191bfb + #x1011fbff + #xc0d1204 + #x1502f405 + #xee071e13 + #xfbf3f2 + #xff04f5ea + #xf1ec030e + #xf1f12f6 + #x1802f600 + #x909090b + #xbfcff10 + #xfc0f1408 + #x1f9efee + #x204f1ef + #xf3ed0407 + #x191f08f9 + #x11f5fa06 + #x1070915 + #x1000f0e + #x90c0703 + #xfef3ebf7 + #x3fff2f5 + #xf1ee0307 + #x1d1b05ff + #x4f5020b + #x90d15 + #x1091102 + #xb020205 + #xf8f0f104 + #x1fcf7f6 + #xf0f10408 + #x1a140800 + #xfdff070c + #x50b0f0c + #x60b08ff + #x5fe0105 + #xf4f4fe0d + #xfefffbf2 + #xf3f60609 + #x13140afd + #x80608 + #xa0a0b04 + #x6030207 + #x300fe00 + #xf7fe0809 + #xfd02f6ec + #xf9f90907 + #xf1505fa + #x8090304 + #x9060403 + #xfd070f + #x901f7fc + #xff060905 + #xfd00eff0 + #xfefd0d04 + #x111400fe + #xd040101 + #x602010a + #xfcfd0e10 + #x11fbf2f9 + #x307060a + #xfaf6f0fd + #x10f00 + #x120bfb06 + #x9000200 + #x4000312 + #xf9051209 + #xff2f1f8 + #xfe050815 + #xf5f1ff06 + #x5090afa + #x1002fd0b + #x1020200 + #x2fd0b14 + #xfb0b0e06 + #x6edf1f9 + #xf809111e + #xf2fa0e02 + #xc0e00f3 + #x9fa000e + #xfc090200 + #xfd140d + #x100804 + #xfceeeeff + #xfa131c1d + #xf80911f3 + #x150af0f3 + #xfef80811 + #xfd0f0200 + #xfd011702 + #xa110002 + #xf1edf512 + #x121d1e07 + #x516f4ee + #x10f5f2f8 + #xf4020e17 + #xc0902fe + #x1109fc + #x16030001 + #xf2f1ff14 + #x1a1810fb + #xb0ae9fa + #x2ebfc02 + #xf7070e19 + #xf0904fa + #x70e0100 + #x12ff0205 + #xf8f50612 + #x130c04fb + #x6fcef07 + #xf5f10b06 + #x90b13 + #xc0904f7 + #x7080008 + #xd000605 + #xf9f70e12 + #x20302ff + #xf8fa06 + #xf2001103 + #xa060509 + #x80e03f9 + #x806030c + #xb000301 + #xf6fd180f + #xf90603ff + #xfcfcf7 + #xf90b0d01 + #xeff0000 + #x71503ff + #xc060709 + #x5fdfe00 + #xf90a1e04 + #x10cfefb + #x2f9ede8 + #x20d0909 + #x8f8fffe + #xd190306 + #xb020b07 + #xf9f8fb05 + #x21516f5 + #x1006f6fd + #xfdece1ea + #x60a0f12 + #xf9fffc + #x15160409 + #x5020f09 + #xeef7fe0b + #xd1301ed + #x15f9f407 + #xeae0e0f7 + #x40c1e10 + #xfc01fef7 + #x1c110909 + #x8140f + #xeefb0009 + #xa04f6f4 + #x9f3ff10 + #xe0e2e800 + #x7131fff + #x205f5f8 + #x1d090a06 + #x1101319 + #xf8fd0002 + #xf8fafd + #xfffc0b0d + #xe0ebf1ff + #xc1a1bef + #xc01effe + #x17060803 + #x512121e + #xfdfd01ff + #xf4f703fd + #x2090901 + #xe7f3f3f9 + #x11190ae8 + #x11faf106 + #xe060506 + #xa0f151f + #xf9fe0400 + #xf4fe03f9 + #xe08fcf6 + #xf1f4f1fc + #xe0cfef0 + #xcf8fb0c + #xa08060b + #x50a1b1a + #xf8050802 + #xf900fdfc + #x12fdf1f5 + #xf1f4f606 + #x600fff7 + #x7fe0209 + #xb09080d + #xc1b13 + #xd0a01 + #xfbfaf908 + #x6edeffb + #xeefa020e + #xfdfc05f6 + #x8080202 + #xf080a0b + #xfd0d1712 + #xe1209fc + #xf7f20115 + #xf3ebf7fc + #xf4080b07 + #xfa0005ee + #x120afbff + #xe060a09 + #xfe0f1116 + #x161007f5 + #xf1f10f18 + #xe9f4faf8 + #x3120af9 + #xfc02fbed + #x1802f702 + #xa060a0b + #xd141c + #x141006ee + #xeff51915 + #xedfdf5f5 + #x141100eb + #xfdfceefa + #x16f8fc07 + #x30c090f + #x10c1b18 + #xf1301eb + #xeefa1b13 + #xfafceef8 + #x1709f7e7 + #xf9f2ee0b + #xaf90b09 + #x12090f + #x40f1f0d + #x1115f8ed + #xecfe1c16 + #xf5eefc + #xf02f2e9 + #xf2ebf917 + #x61602 + #x813060b + #x8121d03 + #x160eeff6 + #xe9041e1a + #x1f1f4f9 + #x403f0ed + #xedea0716 + #x1817f9 + #x140f0103 + #xc141203 + #x1700ee03 + #xed0d1f13 + #xf4f7ef + #x5edf0 + #xecef0f0a + #x101f0df6 + #x1800fd01 + #xa0f060d + #xcf8fb0b + #xf9141908 + #xf5f2ea + #x403ebf5 + #xecf30e03 + #x1e1c03f9 + #x10f7fb06 + #x5090517 + #xfd0a0a + #x6120d00 + #xfff2ebf2 + #x6fceefa + #xecf60904 + #x1f1401fc + #x1f6000d + #x2080e17 + #xfe0a0f01 + #x8070503 + #xf9ecef01 + #x3f8f4fb + #xecf70606 + #x1f1005fc + #xfaff0512 + #x50b130c + #x60f07fb + #x3000508 + #xf4edfb0b + #xfffdf7f7 + #xeefa0805 + #x1a1108f8 + #xfd070712 + #x90d0f01 + #x9070000 + #x504 + #xf4f80709 + #xff02f4f0 + #xf2fc0a03 + #x151405f7 + #x709050c + #xa0b0600 + #x2fe040b + #x40000fc + #xfc020803 + #x2ffedf1 + #xf6000d00 + #x171100fd + #xb040208 + #x8050107 + #xf8ff0e0d + #xafcfaf6 + #x2060307 + #xf5edfa + #xfa050bff + #x190afe02 + #x8020007 + #x4000610 + #xf5061209 + #x9f3f4f6 + #x3030416 + #xf9effa02 + #xfe0a08fd + #x16000105 + #x104fe07 + #xff0f0f + #xfa0f0f06 + #xffecf1fb + #xff030f1e + #xf2f807ff + #x80e00f7 + #xcfb0608 + #x7fe09 + #xfd021708 + #x2100a05 + #xf5ebf003 + #xc1a19 + #xf40a08f4 + #x120af6f2 + #xfb0a0c + #x209ff07 + #xfa0917ff + #xc0c0503 + #xf1ecf20e + #xb181f0d + #xff17fced + #x14fbf0f5 + #xf5ff0d13 + #x80b0201 + #xfe0f0efb + #x15070001 + #xedee0512 + #x1a1f16f7 + #x1205e801 + #xeff7fe + #xf907121b + #xf0401f6 + #xa10fb06 + #xc0102fc + #xf1f50d0d + #x191506f5 + #xff4ee10 + #xf1f30206 + #x91515 + #xd08fef4 + #xc08fd0b + #x6000502 + #xf4fa0f0a + #xa0700fc + #x3f0fe11 + #xee010a06 + #x9081104 + #xa0cfbfa + #x904030b + #x4030402 + #xf4001509 + #x302fe + #xfff80202 + #xf90e0802 + #x90209fa + #xb0ffc03 + #x8030907 + #x3020002 + #xf40b1a03 + #x20601fa + #x1fdf5f3 + #x50f0403 + #x4fe02f9 + #x100fff09 + #x9040a04 + #xfdfcfc08 + #x1813f8 + #xd03fcf8 + #xf4e4f2 + #x90a0b0a + #xfcfc00fd + #x180e050c + #x4050a06 + #xf4f8ff0c + #xc1901f0 + #x10f9f8ff + #xf4e6e1ff + #x60b1909 + #xf900fe00 + #x1a0a0b08 + #x90a0f + #xf2fa0209 + #x110df3f2 + #x4f10009 + #xe3e0ea0a + #x5151ffc + #xff02f7fe + #x1a080b02 + #x4100d18 + #xf8fd0302 + #x5fdf5f9 + #xf8f90c0b + #xe0e4f407 + #xd1e18ea + #xbfcf100 + #x14090802 + #xd13111d + #xfbfd0000 + #xf9fafffa + #xfa050e03 + #xe7edf6fe + #x131f06e4 + #xef4f306 + #xd0a0508 + #xe10181c + #xf9ff0001 + #xf50001f7 + #x70a02f7 + #xf1f1f3fd + #x1616f8ea + #x7f2fc0c + #xa09050e + #xb0d1c16 + #xf7020305 + #xfa03faf8 + #xe00f7f3 + #xf3f0f507 + #xc07faf3 + #x1f9040d + #xb080a0f + #x40f1c11 + #xff090604 + #xfdfdf702 + #x6f2f3f7 + #xf1f3ff11 + #x20200f4 + #x2020607 + #xd080c0b + #x3131610 + #x90e06fe + #xf8f5ff0e + #xf4edf8fb + #xf4fe0b0e + #xfc0501ee + #xc060000 + #xd080a08 + #x5121214 + #x111003f6 + #xeff50f12 + #xeaf3fbf9 + #x10a0dfe + #xfe09f7ee + #x1500fdff + #x80a070d + #x60d1516 + #x1010fff3 + #xebfd1810 + #xeff9f7f5 + #xf0f02ee + #x103ecfa + #x11f8ff00 + #x50b0815 + #x50c1d14 + #xf11f9f3 + #xeb05180f + #xfbf8f2f3 + #x150af4e9 + #xf6ed0b + #x4f90801 + #x60d0a17 + #x4101f09 + #x1210f1f5 + #xed0a1615 + #xf0f3f4 + #xf04ecef + #xf6ecfd16 + #xfa061100 + #xd0e0d11 + #x7171a02 + #x1a07eafa + #xee0e171b + #xfeedf8f0 + #x800ebf6 + #xeced0d13 + #xfe1711fa + #x14090a07 + #xc190d03 + #x1bfbec02 + #xf2131c16 + #xf8f2fbe8 + #x4ffecfa + #xe8f61409 + #x101f08f6 + #x17020200 + #x1014020e + #xff2f708 + #xfc191909 + #xf8f7f5e4 + #x7faedfc + #xe9fe0f03 + #x1e1701f5 + #xffbfd06 + #xd0a0619 + #xf90508 + #x7170e00 + #xf9f4ecec + #x9f5f0fe + #xeb000704 + #x1f0f00f5 + #xf8fe10 + #x6061117 + #xfc070c03 + #xb0f0401 + #xf8ebedfc + #x4f2f600 + #xee000508 + #x1f0b03f4 + #xf8fd0519 + #x409170a + #x51004fe + #x404040a + #xf0eafa06 + #xf7f9fc + #xef000706 + #x190d05f1 + #xfd030b1b + #x9101100 + #xe0afcff + #xfe03090a + #xedf40504 + #xfdf7f5 + #xf2010902 + #x161103f1 + #x5060b16 + #xd0e0600 + #x9fffd06 + #x507fe + #xf4010700 + #x4fdf0f2 + #xf5040900 + #x181000f6 + #xa04070f + #xb070006 + #xfafe090b + #x501fff3 + #xff050204 + #x4f2eef8 + #xf9090602 + #x1a0900fa + #x702020f + #x601050d + #xf4080f09 + #x4faf5f3 + #x4010310 + #xfdecf600 + #xff0d0301 + #x140103fc + #x4010012 + #x1000f0d + #xfa110e06 + #xfcf1f0fb + #x1ff0f19 + #xf2f40101 + #x80e00fc + #x90007fe + #x2000012 + #xfc051505 + #x5120a04 + #xf1ecf105 + #x61c15 + #xf30502fa + #xf09faf4 + #xfe000804 + #x601030f + #xfc0f1200 + #xd0d0801 + #xecebf70d + #x6161f06 + #x11f8f4 + #x1100f4f1 + #xf7030b10 + #xa010606 + #x1507fe + #x100705fc + #xecec0012 + #x141e1bfa + #xf0debfc + #x6f1f4f9 + #xf6060f1a + #xe0403fa + #x914fe02 + #xf0302fb + #xecf71109 + #x1d1d07f0 + #x12ecf412 + #xf4f5f90c + #xc1a0f + #xa06fcf4 + #x1104fd0d + #x402ff01 + #xf1fe1005 + #x150ffef5 + #x3e70319 + #xf0ff020d + #x40d18ff + #xb07f6f9 + #xa00040d + #x1040205 + #xf3031006 + #x50400fa + #xfaf40b0c + #xfb0b0406 + #x60d0ef2 + #xd05f703 + #x6020909 + #x3040005 + #xf50c1103 + #x402f7 + #xfdff01fd + #x70d0202 + #x10704f3 + #x1104ff0a + #x6060706 + #x100fe07 + #xff160efd + #x605fff1 + #x1faeff9 + #xe090405 + #xfb01fefe + #x1502090b + #x506030a + #xfbfa000b + #xf1a00f5 + #x8fef9f6 + #xfce8e803 + #x8091108 + #xf900fe03 + #x16060d05 + #x3080311 + #xf6f90509 + #x1710f3f5 + #xf6fc02 + #xede0f10d + #x51419ff + #xfefffd02 + #x140a0d00 + #x50b0819 + #xf8fe0602 + #xffff1f8 + #xf2f9070b + #xe2e0fe0b + #xf1f11ed + #x7faf800 + #x100d0600 + #xc0e0e1c + #xfbff01ff + #xfffaf9fa + #xf2050e04 + #xe4e800ff + #x1a1fffe4 + #x7f2f704 + #xd0c0308 + #x100e1918 + #xfafdfe05 + #xf800fcf7 + #xb07fa + #xedeffafb + #x1d17f2e8 + #xf1fd0a + #xc09060f + #xd0f1d13 + #xf8ff000a + #xfd04f7f8 + #xa05faf2 + #xf2eef703 + #x1809f1f1 + #xf9f7050f + #xc070d10 + #x9131a0f + #xfc030509 + #x1fff500 + #x4f9f5f5 + #xf0ed0010 + #x903faf4 + #xfc00080c + #xb08100a + #x815150f + #x6090402 + #xfdf7fb09 + #xf6f1f6fa + #xf2f60c0f + #x208fcf1 + #x5040602 + #xb0b0c07 + #xa131211 + #xe0c00fc + #xf2f7070f + #xebf3fbfa + #xfb041100 + #x50bf4ef + #xe0100fc + #xa0c080c + #xa0e1413 + #x110dfbfa + #xed011210 + #xeef8faf3 + #x90d06f1 + #xa04eafa + #xbfc00fc + #x90a0917 + #x70d1d10 + #x120af5fd + #xf00c1012 + #xf8f7f6ed + #x110cf7ed + #x6f6ee08 + #xfffc03ff + #xa08101a + #x4141d09 + #x1606f0fd + #xf6110d18 + #xfcf2f5ea + #xf01ecf4 + #xfbedfe13 + #xf6060900 + #xd081712 + #x61a1605 + #x1dffecfe + #xfa11111e + #xf6f0f8e8 + #xaf9edfc + #xeef10f12 + #xfd1309fc + #x11091304 + #x101d0807 + #x1cf4ed00 + #xfd131819 + #xeff5f9e4 + #x7f5f1ff + #xe8fc140b + #xf1905f5 + #x120709ff + #x16160011 + #xfedf505 + #x3191b0b + #xf0fbf2e1 + #x8f1f5fd + #xec070f06 + #x1f1500ef + #xc01ff06 + #x12090319 + #xfff20009 + #xc1a10ff + #xf6f7e9ea + #x7eef7fd + #xf2090409 + #x1f0dfeed + #xfdff12 + #x9041314 + #xfa010707 + #x10130300 + #xf6eee8f8 + #x2eefaff + #xf606020c + #x1c0900ec + #xf9fb051c + #x4091b09 + #x30b0402 + #xb09000a + #xefe9f402 + #xfdf3fefe + #xf7030609 + #x150c00eb + #xfbff111f + #x61113fe + #x1009fb00 + #x203080f + #xe8f20101 + #xfef9fcf7 + #xf6030804 + #x140ffeed + #x204141b + #xe1205fe + #xefff905 + #x70c05 + #xec0005fc + #x2f8f6f1 + #xf8060603 + #x180efcf0 + #x8061016 + #xf090005 + #xfb010b + #x40903f6 + #xf90500fd + #x3f2f2f3 + #xfd090305 + #x1909fcf2 + #x7030915 + #x800030c + #xf6030b0c + #x501f4f4 + #x2010108 + #xfcebf6fc + #x20b0207 + #x120500f4 + #x4000618 + #x1000e0c + #xfd0e0c09 + #xf7ecfd + #xfd0c11 + #xf2f1fe01 + #x80a0201 + #x70402f7 + #x3fd0919 + #xfe081107 + #x9120905 + #xf4eeee07 + #xfb051d0d + #xf10001ff + #x1008fff6 + #xff060200 + #x4fb0e13 + #xff100d03 + #x100e07ff + #xececf80d + #xff151f00 + #xff0afaf9 + #xf01f7f0 + #xfb07050c + #x6fd0e08 + #x7150303 + #x100b05fa + #xe9ee030e + #xb1f18f4 + #xf03effc + #x6f8f1f8 + #xfc070c16 + #x80109fc + #x1012fc07 + #xb0801f9 + #xeaf40e0b + #x191f0def + #x15f3f00c + #xf9f3f507 + #xfe091616 + #xa05fef5 + #x1208fa0c + #x605fefd + #xf0030e05 + #x1f13f9ef + #xfee60518 + #xf4f90015 + #x3161afc + #x902f5fa + #xafd070c + #x400fe0d + #xf5060b04 + #x1206faf4 + #xf1f31115 + #xfc02070b + #x5170eef + #xbfcf701 + #x3000a0c + #x403010a + #xf90a0b05 + #x404fff2 + #xf5020c04 + #x8070500 + #x41100f2 + #xcfa0006 + #x406070b + #x5010008 + #x120902 + #x307feef + #xff01fcfc + #xd050301 + #x207f9ff + #xdfd0906 + #x607020d + #xfc0109 + #xf1602fb + #x604f6f2 + #xffeff101 + #x9050806 + #xfe00fc08 + #xd041002 + #x5050113 + #xfafb0608 + #x180df8f7 + #xfcf500 + #xf2e1f90a + #x70f1004 + #xffff0006 + #xd0b0bfd + #x6050818 + #xf8fe0803 + #x1500f3f9 + #xf5f9fe0d + #xe5e20408 + #xf1c0df7 + #x1fdff00 + #xd0f04fe + #x9071118 + #xfa010401 + #x5f8f7fb + #xf101080d + #xe0ec09fc + #x1b1efde9 + #x3f7fb00 + #xe0f0307 + #xc0c1815 + #xfbfeff06 + #xfcfcfaf8 + #xfd0c0800 + #xe7f400f5 + #x1f14eee7 + #xfaf4fd0d + #xe09090f + #xb0f1b11 + #xf9fb000e + #xff00f5f8 + #x809fdf5 + #xedf2fafe + #x1e07edee + #xf3f80314 + #xd060f0d + #xa14170f + #xfafe050d + #x4fef2fd + #x6fef4f6 + #xedee0009 + #x11fff5f4 + #xf5ff0a14 + #xa091305 + #xc17130e + #x1050707 + #xf6f906 + #xfaf5f4fd + #xecf40e0d + #x803f8f2 + #x50909 + #xa0e0e02 + #xe14110f + #xa070102 + #xf8f7020d + #xeff5f9fc + #xf2021401 + #x907f3f1 + #x60503ff + #xb0e0908 + #xd10140e + #x1006fc03 + #xf1ff0b11 + #xeff9faf4 + #xe0af2 + #xf01ecf6 + #x700fefc + #xc090b14 + #x70e180d + #x1203f803 + #xf60b0c14 + #xf6faf6ea + #xc0efaee + #xcf4f003 + #xfefffe03 + #xb051516 + #x416190b + #x16fdf501 + #xff0f0b1a + #xf8f6f2e6 + #xf03f0f4 + #xffecfe0e + #xf8040206 + #xa071c0e + #x91e1008 + #x19f7f3fe + #x40e101d + #xf1f4f1e7 + #xaf5f1fc + #xeff20e12 + #xff0c0501 + #xc0f1a00 + #x141d050a + #x15eff2fe + #x50e1b17 + #xecf8f0e8 + #x5eff8fd + #xeb00120e + #xf1103f6 + #xc100bfc + #x1a140110 + #x8eaf604 + #x8141e09 + #xeefcebe8 + #x2eefdf8 + #xf10c0d0b + #x1d0ffeec + #xa0aff04 + #x17080715 + #xfaeeff0c + #xf1a15fd + #xf6f8e3ee + #xeefcf6 + #xfb0d040d + #x1f0bfae8 + #x301ff16 + #xa031312 + #xf4fb060d + #x151504fd + #xf9eee3fb + #xfbf0fefa + #x7050d + #x1708f9ea + #xfdfc0b1f + #x1091a07 + #xff050507 + #x120aff08 + #xf1e9ed03 + #xf7f400fc + #xff030a0a + #x1109f8ec + #xfafd151f + #x41313ff + #xc05ff01 + #x8020611 + #xe8effc04 + #xf7fa00f6 + #xfd040a04 + #x120bf6ee + #xff041b1d + #xd1506fc + #x10fdfb03 + #x2060e0a + #xeafd00fe + #xfdfbfbee + #xfd060603 + #x160af5f0 + #x40b1818 + #x110b0002 + #x2f7ff0b + #x50c08fb + #xf604fdfb + #xf5f4ed + #x70306 + #x1807f6f1 + #x6091119 + #xa010309 + #xf8fd070f + #x908f6f6 + #x101fc01 + #xfaeef4f6 + #x407030a + #x1305f8f1 + #x4020f1c + #xff0c0b + #xfd080b0d + #x6fbea00 + #xfd070a + #xf0f2fbff + #x9060703 + #x905f9f8 + #x1fd121a + #xfd081008 + #xa0d0a05 + #xfbeeed0b + #xf8041609 + #xeffb0000 + #xc0505f8 + #x408fa00 + #xfd1512 + #x2110b05 + #x120c07ff + #xefe9f90f + #xf8161dfe + #xfb03fefa + #xd03fcf0 + #x306fd0b + #xff011609 + #xc130306 + #x110a03fb + #xe9ed040e + #x71f14f1 + #xafff6f9 + #x7fcf1f9 + #x3050813 + #x60dff + #x140e0008 + #xd0afffd + #xe9f60c0b + #x181f07eb + #xff0f403 + #xfcf5f009 + #x3081310 + #x30901f9 + #x1605000a + #x906fb05 + #xed000f07 + #x1f19fbed + #x4e60015 + #xf5f6fb14 + #x2101b03 + #x706f6f7 + #xdfe040c + #x602fb0a + #xf8090806 + #x1d04f4ef + #xeaf70f1a + #xf8fc1009 + #x91c0af4 + #x8f9f6fe + #x1010c0b + #x4fd030f + #xfd080706 + #xd01f9f1 + #xed07120f + #x2030dfb + #xd17fbf5 + #x5f5fe02 + #x1060a0d + #x5000408 + #x10c0805 + #x606f9ef + #xfc090401 + #xa0305f9 + #xc08f401 + #x2fb0703 + #x606050e + #x3fe0408 + #xb0f0500 + #x905f3f3 + #xfcfa00 + #x8020401 + #x7fffa0b + #x3040a00 + #x7030611 + #xfdfc0608 + #x170cfdf9 + #x7fdef01 + #xf6eafb05 + #x4070a06 + #x2fd020a + #x60f08fd + #x5010b12 + #xf8000905 + #x1400f8f9 + #xfdf6f710 + #xe5ea0605 + #xe140cfc + #x1ff0202 + #xc1101fd + #x5041312 + #xfa030503 + #x8f7f8fb + #xf6fb0314 + #xe0f60afb + #x1c1a02ed + #xfdfe04 + #xf0c0002 + #x70a1711 + #xfc000106 + #xfdf8fbfa + #xfb06090a + #xe40001f1 + #x1f11f3e4 + #xfaf8fc0f + #x11070809 + #xa111810 + #xfafb010d + #xfffdf7f7 + #x80900fd + #xebfbf8f7 + #x1e02ede9 + #xf2f7021c + #xe071207 + #xb151310 + #xf7fd080d + #x3fbf4f9 + #xb00f5fb + #xedf3fc04 + #x14faf2ef + #xf3fe0a1e + #x90c1300 + #xd17100f + #xfb020b09 + #x1f4f700 + #xf7f301 + #xeaf60909 + #x9fdf8f0 + #xfb040e14 + #x9120dfb + #x1115100d + #x3070506 + #xf8f3000a + #xf5f4f801 + #xec041100 + #xb02f5ee + #x3070707 + #xd110701 + #xf11110d + #xb040008 + #xf4fc080f + #xf2f7fbf8 + #xf8120af4 + #xffff1f0 + #x504ff04 + #xd0a0a0b + #xb12140d + #xefffe08 + #xf8060b12 + #xf6fbf6ec + #x714fbed + #xcf3f1fb + #xfb0a + #xa051412 + #x817140c + #xefafe04 + #x20a0e15 + #xf8f9efe9 + #xe04f2f4 + #xffedfe07 + #xfcff0010 + #x60b1e09 + #xd1d0e0b + #xdf6fcfd + #x8081616 + #xf5f6eaee + #xaf6f4fa + #xf1f30a0f + #x104050a + #x71518fe + #x171b070b + #x9f1f8fc + #x70a1e0f + #xf0f6e8f3 + #x1effcf8 + #xed02110f + #xd0a05f9 + #xb1b0afb + #x1f13040c + #xfeedf705 + #x7111f02 + #xf3f7e5f5 + #xfcf2fff2 + #xf60d0d0d + #x180bffec + #xd13fe05 + #x18070b0f + #xf2effd10 + #xd191af7 + #xfbf3e2f8 + #xf8f6fdef + #x10d090b + #x1a08f7e8 + #x904ff16 + #xb04130e + #xedf70413 + #x151808f6 + #xfeeae200 + #xf5f7faf4 + #x707090a + #x1605f2ee + #x1fb0c1f + #x10b1908 + #xf600090d + #x150c0002 + #xf5e3ea08 + #xf2fafdfa + #x3030f06 + #x1004f1f4 + #xfcff191f + #x5141000 + #x5040402 + #xc02060d + #xebe9f70a + #xf4fe00f6 + #x41000 + #x1104f0f6 + #xfb071f1b + #xc1603fc + #xbfefe00 + #x202110b + #xeaf7ff04 + #xfa00fdec + #x70aff + #x1503f0f5 + #x101d17 + #x130efffe + #x2f7fe07 + #x40c0efd + #xf6fffafe + #xfcfdf4e9 + #x2070502 + #x1600f1f4 + #x6111619 + #xc020204 + #xf6f90610 + #xb0bfef6 + #x1fdf700 + #xf8f6f0f0 + #x5040706 + #x1200f2f6 + #x60a151d + #x1010a07 + #xf7020d0e + #xcfdeeff + #x1f9fe08 + #xf0f3f5fc + #x6030c02 + #xd00f2fb + #x102181c + #xfe080e07 + #x5090d05 + #xedf00b + #xf8000d0a + #xeefaffff + #x8050bf7 + #xa00f303 + #xfc041b12 + #x3100b05 + #xe0b08fd + #xf3e6fd10 + #xf7131502 + #xf70000f9 + #x80600f1 + #xa00f90b + #xfb091608 + #xd110604 + #xf0a02fc + #xe8eb080f + #x61f0ff5 + #x4fffaf4 + #x700f2f7 + #xaff0411 + #xfb100d03 + #x150c0402 + #xd07fd02 + #xe8f70c0d + #x1a1f01ec + #x7f4f5fc + #xf6f107 + #x603100f + #xf02ff + #x12040602 + #xc03fb0b + #xed000c0b + #x1f15f5ea + #xfdecfc0c + #xf9f2fd13 + #x4101604 + #x608f9fd + #xb000904 + #xafdfd13 + #xf6080907 + #x1f09f2ed + #xeef10b19 + #xf6f70c10 + #x51a11f7 + #x9fef6fd + #x2ff0c09 + #x6fd0112 + #x70704 + #x13fcf4f0 + #xec07141d + #xfa0515f4 + #x1715faf8 + #x1f5fa01 + #x80b0b + #xa07 + #x1070805 + #x801f6f2 + #xfb0f0d0c + #x20807f0 + #x1706f300 + #xfcf90004 + #x509090b + #x2000605 + #x70a0801 + #xb02f1f6 + #x404ff03 + #x40400fb + #xffbfa0b + #xfd040405 + #x7040909 + #xfefe0707 + #xf0a03fb + #xcfaed00 + #xfdf7fc05 + #x3030503 + #x5fa040c + #x30d0302 + #x3000e0a + #xf9000907 + #x1103fcf8 + #x5f1f410 + #xebf20307 + #x60b0dff + #x705 + #xb0ffeff + #x3130a + #xf9050804 + #x7fbfafa + #xfbf30317 + #xe2fe0700 + #x151308ee + #x10005 + #x110bfe00 + #x20a150d + #xfd040304 + #xfef8fbfb + #xfaff0c0f + #xe80700f6 + #x1f10fae3 + #xfefdfd13 + #x11040403 + #x6101310 + #xfcff0207 + #xfcfbfaf7 + #x4060702 + #xf104f5f5 + #x1c01eee2 + #xf6f7021e + #xd050d02 + #xd151112 + #xf7fd090b + #xfaf5f5 + #xb01fb00 + #xf2faf700 + #x10f8efea + #xf4fa0e1f + #xa100efb + #x11160f10 + #xf6040d09 + #xf4f6fb + #x5f7f503 + #xedf80208 + #x7f9f5ec + #xfa02141c + #xa1509f7 + #x13130f0b + #xfe090a08 + #xf7f2fd03 + #xfaf1fa05 + #xec050c04 + #x6fef6e9 + #x1090f10 + #x101402fb + #x12110f0a + #x606040a + #xf2f8060a + #xf5f5fefd + #xf71307f8 + #xcfef2e9 + #x506040b + #x100b0604 + #xd110f0c + #x800030b + #xf6010c0c + #xf6faf9f1 + #x614fcf1 + #x9f5f1f2 + #x400ff12 + #xc080f09 + #xc160f0e + #x6fd0304 + #x6100b + #xf9f9eeee + #x1107f3f3 + #xfeeff800 + #xfb0217 + #x60e1707 + #x121b0d0c + #x2fb01fd + #x606180a + #xf8f3e7f6 + #xbf8f5f8 + #xf1f5040c + #x1fe0a0c + #x71c12ff + #x1b180908 + #xfff9fafe + #x40a1f05 + #xf6efe6fe + #xf3fcf6 + #xef010d0f + #x7030afb + #xd1f06fe + #x1f0f0807 + #xf7f4f707 + #x2111ffb + #xf8ede700 + #xf7f9fdf0 + #xf90b100b + #x100902ec + #x1416fc04 + #x19080b09 + #xeef1fb15 + #xa1b16f1 + #xfdeae6ff + #xf4fef8ef + #x50d0e06 + #x1307f6ec + #x12060014 + #xc06100b + #xeaf60518 + #x141c07f0 + #xfee5e702 + #xf4fff4f5 + #x9080f02 + #x1101eef4 + #x8fc0d1d + #x20b120a + #xf0ff0b0f + #x1710fdfa + #xf6e0ed0b + #xf3fef7fb + #x40512ff + #xffeedfd + #xfefe1b1d + #x6150f04 + #xfe050903 + #xd030306 + #xeae3f80f + #xf500fdf9 + #x711fa + #xffbeffe + #xfa0d1f19 + #x111704fd + #x5020100 + #x3021007 + #xe8ef000a + #xf902fcef + #xa0af9 + #x12faf1fb + #xff181e17 + #x150efefb + #x1fbfd05 + #xb12fe + #xf3fafe01 + #xfe01f3e8 + #x30a06fd + #x12faf1f9 + #x8181919 + #xf04ffff + #xf6f8040e + #xa1003f4 + #xfff9f800 + #xfbfbecef + #x5060801 + #xffaf1fb + #xa12191d + #x2010504 + #xf2000e0e + #xe03f5f8 + #xf5f908 + #xf5f5f0fb + #x4050eff + #xcfaf1ff + #x60c1c1b + #xff090a07 + #xfc0a1003 + #x4eff404 + #xf9f8050e + #xf1f6fb00 + #x3090ef6 + #xcf9f304 + #xff0c1c15 + #x5100a04 + #x70d09fa + #xf3e7010c + #xf7090e09 + #xf6fe00f9 + #x60c02f0 + #xcf7f909 + #xfc14170d + #xf100800 + #xb0b02fb + #xe6ec0d0d + #x61b0cfd + #xff00fbf1 + #x805f5f5 + #x9f8020c + #xff170e09 + #x120b06fc + #xa07fd03 + #xe4f90f0c + #x1d1c00ee + #x3fbf1f7 + #x4f9f102 + #x4000e0c + #x5130307 + #x100607fb + #xa00fd10 + #xec020c0b + #x1f10f3e9 + #xfbf2f409 + #xfbf0000d + #x20b1306 + #xa0bfe03 + #x80307fe + #x9fb0115 + #xf6060a09 + #x1f03eeeb + #xedf40219 + #xf4f41109 + #x8180efd + #xafffa00 + #x30704 + #x4f90812 + #xff080704 + #x1afcf2ef + #xe901131f + #xf60018fa + #x121800f7 + #x5f6f900 + #x60a0a + #xfd0a0b + #x1060900 + #x5fbf4f5 + #xfc0d181a + #x1103ea + #x1c03f7fb + #xf9f8fc0b + #x50a0a05 + #xfd040a01 + #x3080a00 + #x8fff3f6 + #x90c0a0a + #x60af8f5 + #x13f7fc05 + #xfa00000e + #x7070a03 + #xfe010705 + #x90a07fc + #xdf8efff + #x4feff0a + #x303fe02 + #x4f80608 + #x108020b + #x3040c01 + #xfa020907 + #xc06fff8 + #x6eff50b + #xf6f7010d + #x2060800 + #xfd000b05 + #xb0a0005 + #x60e03 + #xfa060905 + #x700fafb + #xf9ee0313 + #xeaff0708 + #xc0f0af0 + #xff040504 + #x1205fe00 + #xff0a0f0b + #xff070502 + #xfefbfbfd + #xf5fa100f + #xef0801fd + #x1710fde2 + #x10 + #x11020001 + #x5100f10 + #x20302 + #xfafcfbfa + #xfb050e04 + #xfa06f7f8 + #x1906eee1 + #xfdf8041e + #xc040700 + #xc130f12 + #xfb000505 + #xfdfbf6f4 + #x70402ff + #xfdfbf4ff + #xff9e9e9 + #xf6f8121f + #x80e09fb + #x11120f10 + #xf7050b08 + #xfdf6f2f7 + #x4f9fc03 + #xf4f7fe09 + #x4f8eeed + #xf6021b1d + #xc1603f5 + #x14110f0b + #xfd0c0a0a + #xf8f3f7ff + #xfbf2fe05 + #xf0000807 + #x2fcf2e9 + #xfe0b1a13 + #x1314fff8 + #x13100d0a + #x40a060c + #xf2f70005 + #xf3f502fe + #xf80e08ff + #x6fdf0e5 + #x50a0c0e + #x150c00ff + #x10100b0e + #x604060c + #xf4ff0a06 + #xf4fbfdf3 + #x811fdf6 + #x6f8eced + #x6010613 + #xe070806 + #xf120c10 + #x2010708 + #xfc060f03 + #xf8faf3f1 + #x1206f5f5 + #xfef3effd + #x2fb0915 + #x70f0f06 + #x13130d0d + #xfe020301 + #x1081300 + #xfaf2eaf9 + #xef9f5f9 + #xf3f4fc0a + #xfffc120d + #x91c0e01 + #x1a140d07 + #xfc00fb01 + #xe18fe + #xf8e9ea01 + #xf6faf8 + #xf200080e + #x411fb + #x131f0500 + #x1d0e0a03 + #xf8faf50d + #x11818f8 + #xf7e6ef01 + #xf8fbfaf4 + #xfb090f08 + #x60a06ee + #x1a17ff05 + #x17080805 + #xf2f3fa18 + #x91f0eef + #xf8e4f0fe + #xf601f4f3 + #x50d1000 + #xc09f7ef + #x1a03000f + #xb07090e + #xecf4051c + #x151f00ec + #xf7e2ef00 + #xf900f0f9 + #x90b10fc + #xe00edfa + #xdfb0f18 + #x50c0c10 + #xeefd0f12 + #x1b14f7f4 + #xefe0f209 + #xfafbf4ff + #x50a0ff9 + #xdf7ee03 + #x21c1a + #x7120b0a + #xf9060d03 + #x1206fc00 + #xe5e2fc11 + #xfafcfdfd + #x10d0cf6 + #xcf4f303 + #xfb101f17 + #x11140600 + #x20703fe + #x4030904 + #xe2ec040e + #xfc00fdf2 + #x31006f7 + #xbf4f6fe + #x11d1c16 + #x170dfff9 + #x1fffd06 + #xc0ffe + #xebf60304 + #x2f5ea + #x50d01fa + #xaf5f5fb + #xb1d1a18 + #x1303fdfb + #xf9fa000f + #x81406f3 + #xf9f9fcff + #x1fcebee + #x70904ff + #x8f5f4fe + #x10171a1b + #x6000002 + #xf2fe0c10 + #x100bf7f3 + #xfbf3fa05 + #xfcf2edfb + #x3080afe + #x7f4f401 + #xb121e1b + #x1050607 + #xf7080f04 + #x9f8f4fd + #xf6f4010f + #xf6f1f800 + #x30e0af8 + #x8f3f603 + #x4151e16 + #x50c0805 + #x21009fa + #xf5eb0007 + #xf3ff0d0f + #xf6f900fc + #x71200f1 + #x7f3fc04 + #x2191812 + #xe0f08ff + #x90efffa + #xe4f10c0a + #x20f0e00 + #xfe00fbf2 + #xb0af4f3 + #x2f50306 + #x61b1111 + #x120b06f9 + #xa07fb06 + #xe2fe0f0a + #x181704ef + #x200f0f7 + #x9fdf2fe + #xfefd0b09 + #xc150b0e + #xe0801f8 + #x800ff0f + #xec060d09 + #x1f0df6e5 + #xfdf5ed0a + #xfdf2ff06 + #xfd091007 + #x11090609 + #x807fffe + #x6fc0613 + #xf7080b06 + #x1e00eee7 + #xf2f1fd1c + #xf2f61002 + #x6140d00 + #xd000103 + #x4060004 + #xfb0d10 + #xfe070a01 + #x14f7eeee + #xedfa0f1f + #xf10415f5 + #x141503f9 + #x6f9fd02 + #x208030a + #xfc001007 + #x1060900 + #x7f9f3f4 + #xf5091a1f + #xfb100bea + #x1e0af8f9 + #xfcf6fb07 + #x50a090a + #xfc040c01 + #x20907fe + #x1faf3f9 + #x7101910 + #xb0feff3 + #x10fafbfb + #xf7fa0218 + #xa0a09fe + #xfe070503 + #x50c08fc + #x8f9f2fa + #xb05090b + #x902f202 + #xf80403 + #xff000815 + #x60707fd + #xfc040707 + #xb0a00f9 + #x3f0f504 + #xfffb0511 + #x3020105 + #xf9010b02 + #x9030709 + #x1070700 + #xfb080905 + #x903fafb + #xf7ee010c + #xf4fc0a0e + #x60b07f9 + #xfd080701 + #xe010301 + #xb0708 + #xa0600 + #x1fef900 + #xedf90f0b + #xf5040902 + #x1111fde8 + #x2040209 + #xeff0000 + #x50e0a11 + #x40602ff + #xfdfdfaff + #xf4051004 + #x5fef9 + #x1609ebe7 + #xfb0719 + #x9010201 + #xc100d13 + #x10202 + #xfdfdf8f9 + #xff0909fe + #x3fbf7fc + #x11fce3ef + #xf8fb151f + #x70a05ff + #x1010100f + #xfc030507 + #xfef8f1f8 + #x4000000 + #xfcf3fc06 + #x6f4e8f5 + #xf3051f1e + #xc1301f8 + #x110f100a + #xff0a080b + #xf8f3f1ff + #xfbf80101 + #xf4fb0809 + #xf8edef + #xf9121f12 + #x1610fcf6 + #x100e0c0b + #x60a070f + #xf3f4fa05 + #xf1f906fd + #xf9070a01 + #x3fbece9 + #x312160c + #x1809fbfb + #x100e0910 + #x907070f + #xf3fc0304 + #xf0ff01f3 + #x80d02f8 + #x5f9e6ed + #x8080d0f + #x10050102 + #xf0d0b14 + #x405080c + #xfa040800 + #xf7fef7f0 + #x1205f9f5 + #xf3e7fe + #x1001112 + #xa0b0906 + #x120f0f0f + #x50408 + #xb0aff + #xfaf4eff7 + #x10fbf7f8 + #xf8f2f20c + #xfb00170a + #xb170a04 + #x150f1007 + #x3fd0a + #x10f0cff + #xf8e9efff + #x2f6f9fb + #xf5fa0210 + #xf90a16fb + #x151c0601 + #x170e0b02 + #xfcf712 + #x4190bfb + #xf1e5f6fe + #xf9fcfaf9 + #xfc050e08 + #xff1008f1 + #x1e110003 + #x140a0409 + #xfbf2fc1d + #xd1f04f4 + #xede7f9fa + #xfa00f6f7 + #x40c0ffe + #x80cf8f3 + #x1c030309 + #xd080311 + #xf3f1081e + #x181cf9ee + #xebe7f6fc + #xfffcf2fa + #x90e0cfa + #xd00effe + #x10fd0f11 + #x6090718 + #xeffb1313 + #x1e12f1f2 + #xe6e5f606 + #xf5f7ff + #x70f08f9 + #xbf4f205 + #x41915 + #x90e0b10 + #xf7061006 + #x1905f3fc + #xe1e6fd11 + #xfef5fffc + #x51103f9 + #x6f0f904 + #xfc141e15 + #x11100a02 + #x10a0601 + #x9010003 + #xe0ee0612 + #xfdfc00f2 + #x91200f9 + #x1f2fdff + #x41f1b14 + #x150c02f9 + #x502fc07 + #x2090800 + #xe4f80805 + #x100f8e9 + #xd0ffbfb + #xf6fbfd + #x101e1a16 + #x1103fcfb + #xfefafe12 + #x71203f7 + #xf0fc01fd + #x4fceeeb + #xc09fdff + #xf5f7ff + #x15191b18 + #x9fffb02 + #xf6fc0813 + #x120ff7f2 + #xf6f7fb01 + #xf1eef7 + #x7080201 + #xf3f802 + #x11161f17 + #x1000109 + #xf6070e09 + #xefdf1fa + #xf1f3000d + #xf9ecf8fe + #x50d05fd + #xf2fa02 + #xb1a1f15 + #x5070708 + #x10e06fe + #xfcf2f804 + #xeffa0b10 + #xf5f400fa + #xa12fff7 + #xfef2fe00 + #x91e1c13 + #xb0a0800 + #xc0cfcff + #xe8f5040a + #xf8081101 + #xf9fffdf2 + #x110df4f5 + #xfaf60201 + #xe1d1712 + #xf0b04fb + #xe04f706 + #xe6010b0a + #xe1209ec + #xf0f6 + #xffff1fb + #xf6fd0707 + #x1314130f + #xe09fdfc + #xafefe11 + #xf00a0a07 + #x1e0efbe1 + #xf5ed0b + #x2f4fc02 + #xf8060c09 + #x140b1008 + #xb07f702 + #x5fc0712 + #xfb0b0a03 + #x1c00eee2 + #xf8ebfc1e + #xf4f80a01 + #x2100c03 + #xf040b03 + #x804f809 + #xff00100c + #x80aff + #xef6ecec + #xf0f0101f + #xf1070ef7 + #x111206f9 + #x7ff0202 + #x704fe0d + #xfa061106 + #x709fc + #x1f5eff4 + #xf3001b1d + #xfb1303ec + #x1a0afef3 + #xfffbfd0a + #x806050a + #xfb0b0d01 + #x10808fe + #xfaf3f7 + #x10e1e15 + #x913f4ee + #x18fef9f7 + #xf8f80015 + #x90a0902 + #xfe0a0700 + #x50b04ff + #x3f8f2fa + #xb121509 + #x11feec00 + #xfffcfe02 + #xf9f90f17 + #xa0803fb + #x1060408 + #xa0d01fb + #x3f3f3fe + #x5020b0f + #x6f9fc09 + #xf7010604 + #xff110c + #x50601ff + #xff080807 + #xc06fafd + #xf6f0fc07 + #xf9fe100f + #x3030501 + #xfc090501 + #x7010a00 + #x2080207 + #x20b0601 + #x6fff802 + #xecf90809 + #xf7021103 + #xc0dfef3 + #x4090202 + #x90003fe + #x60a0710 + #x80901fe + #xfcfb04 + #xef070e04 + #x607f6 + #x170aecee + #x400040f + #x5000101 + #xc0d0d12 + #x703ff00 + #xfffcfaff + #xfd0d08fe + #x4fffcf5 + #x14fbe2f6 + #xfaff131b + #x4040301 + #xe0e110e + #x106 + #xfaf4fc + #x30802fe + #xf6fbfe + #x8f0e6fe + #xf3091f1a + #xa0a02fc + #xf0f1109 + #x4050c + #xfcf3ef00 + #xfeff0100 + #xf6f60406 + #xf0eef9 + #xf7161f13 + #x140dfdf4 + #xe0f0d0b + #x608080f + #xf5f0f507 + #xf3fe05fc + #xf6030b01 + #xf5ecef + #x31c1b0b + #x1905f9f6 + #xe0d0a14 + #xb070a10 + #xf3f6ff07 + #xf10203f5 + #x30b08f7 + #x4f5e5f0 + #xb13110c + #x1201fcff + #xe0b0c17 + #x8060a0e + #xf8000303 + #xf702f9f0 + #xf07fef2 + #x2efe2fe + #x508130e + #x9050305 + #xe0b1112 + #x407070d + #xff070202 + #xfbf8f1f4 + #xdfdf9f6 + #xfbecee0d + #xfb091809 + #xc0e0805 + #x100e110a + #x504000e + #x40d0203 + #xf7edf2fa + #x3f9fafa + #xf6f10011 + #xf81117fe + #x16130800 + #x120f0a06 + #x7fbfd14 + #x9140302 + #xedeaf9fb + #xfbfbfcfb + #xf9fe0d0a + #xfe1709f5 + #x1e0f04fd + #x110d020b + #x1f1011c + #x121800fa + #xe6eefbf7 + #xfdfef9f7 + #x2090e00 + #xa10f9f6 + #x1a030401 + #xd080017 + #xf6f00d1c + #x1c16f8f1 + #xe4f0f7fb + #xfaf8f7 + #x80f06fa + #xf01f2ff + #xf000a09 + #x905071d + #xeffa1714 + #x1f0ceff0 + #xe2edf408 + #x1f2fcf8 + #xa0f00fe + #xbf4f606 + #x81310 + #x8081015 + #xf3081508 + #x1b00effa + #xe0ebfb15 + #xfdf302f5 + #xc0ffe00 + #xf1fe05 + #xff141912 + #xd0c0f05 + #xc0804 + #xefbf803 + #xe0ef0617 + #xfbfb03ed + #xf0ffcfe + #xfaf50000 + #x71e1a11 + #x120b07fa + #x604000b + #x4030304 + #xe1fa0c0b + #xfe01fbe5 + #x110bf9fd + #xf8f9fefe + #x141f1a10 + #xf05fcfc + #x2faff13 + #xa0d01fb + #xec000500 + #x3fdf0e5 + #x1006fa00 + #xf9f9fa03 + #x191a1c10 + #x7fff906 + #xf9f90814 + #x120df8f5 + #xf4fdfb00 + #x2f3eeef + #xc05ff04 + #xfaf6f905 + #x16191f10 + #x1fdfe0c + #xf6030f0d + #x1401eff9 + #xf2f5fd0c + #xf9edf7f9 + #x9080103 + #xfbf4fe03 + #x101c1e0f + #x1060b + #xc0803 + #x3f4f305 + #xedf80812 + #xf2f300f6 + #xe0efffc + #xf8f5fe00 + #x111f1d0f + #x7070805 + #xd0afc01 + #xf1f4fd0e + #xf1041104 + #xf4fffeef + #x140af8f6 + #xf4f9ff02 + #x151e1b0e + #xc0a0401 + #x1200f709 + #xec00060e + #x2110cec + #xfe02f3f1 + #x12fff3f9 + #xf3fd0109 + #x1818190a + #xd09fb01 + #xcf8fe11 + #xf6090808 + #x1411fbe0 + #x1f5ef05 + #x6f5fa00 + #xf703060f + #x16111703 + #xc05f508 + #x4fa0811 + #xa0702 + #x1705ece2 + #xfbe8fd1b + #xf9f80303 + #x10b0a09 + #xf0d0ffe + #xbfff70e + #xff000e0e + #x50807fe + #xcf8e5ec + #xf0ea131f + #xf40508fc + #xe0f08fa + #x7090500 + #x9feff0e + #xfc090f08 + #x30705fd + #xf3eaf6 + #xeefe1e1b + #xff11fff2 + #x160c00f0 + #x10009 + #x700060b + #xff0e0b05 + #x10802fe + #xfbf5f0f9 + #xfa0f1f11 + #xe11f0ef + #x1202f9f3 + #xfbfb0214 + #x8040902 + #x20d0605 + #x40b0400 + #x1f9f2f9 + #x815190a + #x1404eafb + #x5fdfafe + #xf8f80c1a + #xa0806fe + #x3090307 + #xb0a0000 + #x2f3f1fe + #xa120f0a + #x7f1f907 + #xfafe000e + #xf902170a + #x704fffc + #x405070b + #xd09fb00 + #xfaf0f604 + #xff04120e + #xfff90607 + #xfc070406 + #xff070efe + #x4030002 + #x40a0805 + #xa00f905 + #xeff5010a + #xf9081502 + #x50703fb + #x6090002 + #x20604fc + #x5060609 + #xa0a02ff + #x3fbfd09 + #xf0020907 + #xfd0d0df5 + #x1107f4f4 + #x9040008 + #x2020000 + #x9080d0e + #xb04fe00 + #xfffc0005 + #xfd0c0600 + #x408feef + #x15fae8f9 + #xb16 + #x10203 + #xc0c120b + #x4fffe06 + #xfffafaff + #x60a01ff + #xfdf9f8 + #x9ecec01 + #xf7081a1b + #x60504fd + #xd0e1108 + #x30b + #xfef5f500 + #x4030000 + #xf9f90000 + #xfeeaf400 + #xfa191f13 + #xd0700f4 + #xd0f0c0a + #x204080d + #xf7edf706 + #xf9000300 + #xf4000800 + #xfbf0f4f5 + #x71f1b0b + #x1504f8f2 + #xe0d0913 + #x8060b0e + #xf1f0ff09 + #xf50402f8 + #xfd0a06f6 + #xfff2e9f1 + #x121b130a + #x1200f7fb + #xc0a0e19 + #x8070d0e + #xf3fa0306 + #xfb04faf2 + #x90afff0 + #xebe5fd + #xd11110d + #x900fe04 + #xb0a1415 + #x6070b0d + #xfc010005 + #xfcf1f3 + #xb02f7f3 + #xfae5ee0c + #x10160b + #x9060605 + #xb0e130b + #x704060e + #x4050008 + #xfaf1f1f9 + #x2fcf8f9 + #xf3e9010f + #xfd161402 + #x120c09ff + #xe120909 + #x8fe0411 + #x9070106 + #xefeff6fb + #xfcfcfcfa + #xf3f70f08 + #x31a0afb + #x1a0c04f8 + #x110e0110 + #x2f50816 + #x100d02fe + #xe5f2f9fa + #xfdfdfdf5 + #xfc040e00 + #x1114fcf9 + #x180700fa + #xf07001a + #xf5f31218 + #x1c0cfdf1 + #xe5f5f401 + #xfafcf0 + #x50d05fe + #x1402f500 + #xc040204 + #xa020a1f + #xebfe1a12 + #x1e05f4ed + #xe7f3f20e + #xfff6fdee + #xc0dfd00 + #xcf6f905 + #x2080a0e + #x7031617 + #xee0a180b + #x18fbeff5 + #xe5edf81c + #xf9f700ec + #x100bfc03 + #xfef30006 + #x1131310 + #x80a1605 + #xfc100d07 + #xcf5f501 + #xe2ef051e + #xf6ff00e6 + #x1208fd00 + #xf5f90203 + #xa1b170d + #xc0d0afc + #x608030a + #x3faff05 + #xe4fa0d12 + #xfa06f9e1 + #x1305fdfe + #xf5fe0005 + #x161d1908 + #xd08fdfe + #x5fd0312 + #x50504ff + #xec020904 + #x104efe0 + #x1001fcff + #xf8fdfb08 + #x1c1b1806 + #x800f709 + #xfaf80b15 + #x100afcf6 + #xf600fe04 + #x1f7ebe7 + #xb00ff05 + #xfaf8fc0b + #x191c1a08 + #x1fbfe11 + #xf501110d + #x1401f2f8 + #xf7f9fa0e + #xfaf0f2f2 + #x9030305 + #xf8f7ff08 + #x141e1b08 + #xfefe060f + #xfc0a0e05 + #x9f4f103 + #xf0f50516 + #xf0f5fcf3 + #xc0703ff + #xf6f8ff04 + #x161f1908 + #x1040909 + #x9090101 + #xf8f1fc0e + #xef00100a + #xf100fcec + #x1307fef6 + #xf4fafd07 + #x1b1f1a06 + #x70a0306 + #xffefc06 + #xf1fa060f + #xfa0f0df4 + #xfb03f3ec + #x12fff8f5 + #xf4fcfe10 + #x1c1d1a02 + #xc09fc09 + #x9f5000d + #xf9030a07 + #xc14fbe3 + #x2f9eefa + #x7f5f8fd + #xf8ff0315 + #x181917fd + #xc04f70e + #xf70a10 + #x3070900 + #x1508e8e6 + #xfce9fc11 + #xfbf70003 + #x40b0f + #x11180ff9 + #xbfcfb11 + #xfb00100e + #x70605fe + #xef8e1f2 + #xefeb131e + #xf7010500 + #xa0b0a00 + #xc1405fd + #x6f8030f + #xfd090f0c + #x50502ff + #x1eee5fb + #xe7ff1f19 + #xc00f4 + #x120c01f2 + #x70aff06 + #x1fb0a09 + #x20e0b0a + #x3060003 + #xfbefedfc + #xf1141f0d + #x100bf4ee + #x1005f7f4 + #x512 + #x2000a03 + #x80d0709 + #x5080005 + #xfef4f1fa + #x21e1a04 + #x16ffedf5 + #x7fef401 + #xfbfb1017 + #x50506fe + #xa08040a + #x90b0003 + #x3f5f1fa + #xc181007 + #xdf2f202 + #xfcfefc0c + #xf7ff1811 + #x80500fd + #x606050c + #xd06fe03 + #xfceef405 + #xa0f0f0b + #xf9f30507 + #xff00060f + #xfb1110fe + #x300fffa + #x6070b09 + #xb01fb07 + #xf2effc0b + #xfe0d1405 + #xfc0108ff + #x6060403 + #x11002f9 + #x2010401 + #xa0a0702 + #x4fbff0b + #xf2fa050b + #x150df7 + #xa06fdf6 + #xc040005 + #x307fd00 + #x5060c05 + #xc050000 + #xfffb0409 + #xfd050605 + #x513ffef + #xffcf2f7 + #x6000411 + #x1010006 + #x90b1007 + #x6fffe04 + #xfefc0201 + #x7070100 + #x605f4f5 + #x7edf200 + #xfd05121b + #x1030501 + #xb0e1005 + #xfffe010a + #xfdf8fcfe + #x803ff01 + #xfdfcf9ff + #xf9e9fb01 + #xff141c17 + #x70600f6 + #xd0f0b07 + #xff01070c + #xf7f1fa01 + #x1000001 + #xf7ff0200 + #xf3effdf9 + #xc1f1b0b + #xc05f8f2 + #xe0d090f + #x3060b0c + #xefef0006 + #xfb0302fd + #xfa0904f8 + #xf8f2f3f2 + #x191e1307 + #xe00f2fa + #xc0a0d17 + #x6080d0c + #xeef60406 + #x4fcf4 + #x50cfcf1 + #xfbebeaf9 + #x1715100a + #x8fdf905 + #x90b1615 + #x60a0d0b + #xf6fe0306 + #x5fef3f3 + #xb07f5f3 + #xf6e3f106 + #xb13140c + #x6000107 + #x910150e + #x6080b0b + #xff000108 + #xf4f1f8 + #x5fff4fa + #xede5020c + #x5181307 + #xc080700 + #xd130b0a + #x7020a0b + #x6000506 + #xf3f0f4fd + #xfffcfafc + #xebf40f07 + #xd1a0bfe + #x130c02f8 + #x1210020f + #xfc0d0e + #x90207fd + #xeaf3f701 + #xfdfefdf4 + #xf3030f00 + #x181300fa + #x150afcf9 + #x11050319 + #xf3fc1312 + #xf0504ef + #xebf6f406 + #xfefceb + #x10d05fe + #x1905fafd + #xd07fa03 + #xaff0e1e + #xe8041911 + #x1603f9e9 + #xeff2f314 + #xfefbf8e8 + #xb0afe01 + #xef9fd03 + #x507010e + #x4021a16 + #xec10170c + #x12faf0f1 + #xeeebfb1e + #xf9fcf8e8 + #xf04ff04 + #xfef60107 + #x50d0c11 + #x30b1908 + #xfa140f08 + #x7f2f100 + #xe8ec091f + #xf503f8e5 + #x10020200 + #xf4fd040a + #xd15150a + #x8100dff + #x70d0608 + #xfef4fd05 + #xe6f81218 + #xfa09f3e1 + #xf0102fa + #xf600000b + #x171a1501 + #xc0cfe01 + #x601060d + #xfefd0400 + #xed020f09 + #x105eae0 + #xc0000fb + #xfbfeff10 + #x1c1c14ff + #xa02f80c + #xfcfd0c10 + #x70501f6 + #xf9030204 + #x4fbe5e4 + #x7fe0002 + #xfdf90012 + #x1b1d1100 + #x2fafe13 + #xf302130d + #xe01f6f5 + #xfcfafc0e + #xfdf3eaee + #x4000505 + #xf9f8020e + #x191f1202 + #xfdfb0813 + #xf90c1105 + #x9f6f2ff + #xf6f50316 + #xf2f5f5f2 + #x70408ff + #xf6fa0209 + #x191f1502 + #xfd030b0e + #x50b0700 + #xfbeffb0b + #xeffc1011 + #xf200f9ee + #xc0504f5 + #xf6fcff0a + #x1d1f1500 + #x409040c + #xb010000 + #xf1f5090b + #xf70b0ffd + #xfc03f1e9 + #xe01fcf2 + #xf8fbff13 + #x1f1f14fd + #xc09fd0f + #x3f80306 + #xf5ff0f02 + #x711feed + #x2fbecf2 + #x7faf8fa + #xfafa0519 + #x1d1f12f9 + #xd01fc13 + #xf8f90a0b + #x50cfb + #x1407e8ed + #xfeedf505 + #xfbf7fd03 + #xfeff0e14 + #x171f0af7 + #x8fa0012 + #xf402100d + #x50506fa + #x13f4e0f9 + #xefee0b15 + #xf7ff0401 + #x5070f02 + #x141c01fc + #x2f7070f + #xfa0a0f0d + #x40400ff + #x6e8e601 + #xe5011e16 + #x704f5 + #xc0c04f6 + #x1011ff05 + #xfdfa0b0a + #x20d0d0c + #x203ff05 + #xfbe7ef01 + #xed191f0d + #xd08fbe9 + #xf07f7f8 + #xa03030e + #xfb000b05 + #xa0b0b09 + #x4040009 + #xfaedf3fd + #x11f1603 + #x12fdf1ec + #xafdf207 + #xff0f14 + #x50601 + #xc070808 + #x9060108 + #xfef0f2fd + #xf1e0d03 + #x9f1f2f9 + #x2f7f915 + #xfa05190f + #x40500fd + #x904080a + #xc070004 + #xffeff201 + #xe140d0a + #xfbef0006 + #xfdfd0314 + #xf90d1402 + #x401fffa + #x6050a0c + #xb01ff06 + #xf2ecfb0c + #x9101107 + #xf4ff0704 + #x1030c02 + #x51603fd + #xf9 + #x70b0c03 + #x5fc000b + #xeef3040e + #x5170efb + #x10902f9 + #x90302ff + #x80bfb01 + #x10405ff + #xb0903ff + #xfefc070a + #xf7ff0808 + #xc17fff3 + #xc01f6f7 + #x8ff020b + #x500fe08 + #x60a0b02 + #x801ff02 + #xfcff0803 + #x3040402 + #xd0bf4f6 + #x5f4f4fe + #xd17 + #x1000407 + #x90e0b02 + #xfd0007 + #xfcfe01fd + #x8010001 + #x6fdf400 + #xf6edfd02 + #xd1b16 + #x30603fd + #xc0f0903 + #xfc00060a + #xf8f8fdff + #x3ff0202 + #xfcfcfe04 + #xeff300fd + #xc1a1c09 + #x906f8f7 + #xe0d0808 + #xff040a0b + #xf0f4ff02 + #x103fe + #xfc0401ff + #xf2f8fbf5 + #x1a1e1500 + #xa00f0fd + #xd0a0c10 + #x3080b0b + #xebf70304 + #x20300f5 + #x40cfbf7 + #xf7f1eff6 + #x1d180f04 + #x7f8f309 + #x90b1513 + #x60b0c0b + #xf1fd0405 + #x6fff7f0 + #xc07f2f7 + #xf2e7f201 + #x14141208 + #x3faff0d + #x911170e + #x70b0c08 + #xf9ff0306 + #x2f6f2f4 + #xafef2fe + #xe9e60009 + #xe161406 + #x5030505 + #xd140e0a + #x7080b07 + #xfffe0704 + #xf7f0f4fc + #x2f9f900 + #xe4f40d07 + #x11190ffd + #xd0a00fc + #x1310060d + #x40b0a + #x1000afb + #xeff1f702 + #xfcfdf8 + #xed040c01 + #x1b1406f5 + #x100af8ff + #x13050815 + #xf5030f0f + #x40506ef + #xf0f3f808 + #xfffaed + #xfd0c0500 + #x1c09fff6 + #xf05f509 + #xbff1019 + #xed091412 + #xa06f9e9 + #xf4f0f912 + #xff00f3e8 + #x90a0001 + #x11fefefe + #x900fe14 + #x1001a15 + #xef13150f + #xbfeecf1 + #xf3ea001c + #xfb00f0ea + #xd030101 + #xfffb0206 + #x8050a13 + #xd1b0b + #xfe170f08 + #x4f5ecfe + #xeaec0e1e + #xfa02efea + #xa0006fe + #xf7ff040c + #xd0d1309 + #x6140d03 + #xa120905 + #xfaf2f806 + #xe5f81a15 + #xfd05ede4 + #x80105f7 + #xf9010410 + #x151612fe + #xe10ff06 + #xa070608 + #xf8fa0201 + #xeb041609 + #x602e6e0 + #x60100f9 + #xfeff0412 + #x1a1a0dfb + #xd03fa0e + #x10b0c + #x102f7 + #xf8070b04 + #x8f9e1e4 + #x400fe00 + #xfffa0613 + #x1c1c09fd + #x5fb0015 + #xf706100b + #x802f8f3 + #xfefe000a + #x1f0e3ee + #x1ff0205 + #xfcf90910 + #x1b1e0a00 + #xfcfa0815 + #xf80e1106 + #x6f9f2fc + #xf7f50513 + #xf7f1edf5 + #x2030800 + #xf7fd090b + #x1d1e0c00 + #xfb010c13 + #x40f09ff + #xfdf1fa06 + #xeffa1112 + #xf4fbf4f2 + #x60706f6 + #xf7fe040a + #x1f1e0ffe + #x1080813 + #xa0701fd + #xf1f30707 + #xf2081303 + #xfe00f1eb + #xa06fdf1 + #xfafa0311 + #x1f1f0dfa + #xa070115 + #x3fe0001 + #xf2ff10fd + #x31003f3 + #x5f9eaee + #x5fff6f9 + #xfaf80a17 + #x1f1f0af9 + #xe000218 + #xf5fd0608 + #xfa080cf4 + #x1306eff1 + #x1efeefd + #xfefaf803 + #xfafd1312 + #x1d1f04f9 + #x8fa0516 + #xf0040c0d + #x10903f4 + #x15f1e4fb + #xf2ed000f + #xf9fc0103 + #xfd061504 + #x1d1dfffb + #xf80a12 + #xf70c0e0e + #x205fefc + #x6e3eb03 + #xe7001516 + #xfe0406f5 + #x50d08f8 + #x1c0ffd02 + #xf9fd0b0f + #x10e0e0b + #x103fe04 + #xf7e2f403 + #xef181b0e + #x807ffe6 + #xc09fafa + #x1303020b + #xf903080b + #x90d0d06 + #x2020109 + #xf2eaf9ff + #x31f1305 + #xe01f2e5 + #xcfcf309 + #x7010e11 + #xfe060407 + #xb0a0c01 + #x5030509 + #xf6eff5fe + #x151f0a02 + #x6f5eef4 + #x4f3fb16 + #xfe07150f + #x2050101 + #x8070b04 + #x9040506 + #xf8edf402 + #x18150807 + #xf9f0f602 + #xfef50815 + #xfd141406 + #x302fffa + #x5070c06 + #xb030004 + #xf5ecf809 + #xe10100a + #xf1f90407 + #xe08 + #x21807fd + #xfff7 + #x50a0e06 + #x6ff0208 + #xe9f1040e + #xc1511ff + #xfc060202 + #x20908f7 + #xf0afd01 + #x3fdfe + #x90e07fd + #xfd070b + #xedfc0a0a + #x111805f5 + #x807f9fb + #x6010000 + #xaffff0a + #x4080102 + #xa07fffe + #xfc010a05 + #xfa020803 + #x160bf7f6 + #x6fbf201 + #xff0a10 + #x2fd060a + #x90c0503 + #x3ffff04 + #xfd0405fe + #x2020300 + #xefcf5ff + #xfaf3f806 + #xfe051713 + #x1020602 + #xc0e0501 + #xfdfe0408 + #xfc00fefc + #x2000300 + #x1f7fd05 + #xeff60004 + #x6161d05 + #x606fcfc + #xe0d0503 + #xfd03080a + #xf5fafd00 + #x5fe + #xfdfe0103 + #xf2fdfdfb + #x151d15fa + #xafff300 + #xd0b090a + #x207090b + #xeffa0003 + #x303f4 + #x205fefe + #xf8faf5f7 + #x1d1a0dfa + #x7f4f40c + #xa0b100f + #x6090a0b + #xf0ff0206 + #x502fbec + #xc04f6fd + #xf5eef1fe + #x19140d02 + #xf3ff14 + #x911160e + #x80b0a09 + #xf7000307 + #x2faf4ef + #xdfaf401 + #xe8eafc09 + #x13161301 + #xfd060d + #xf151109 + #x90b0806 + #xfbff0605 + #xf9f3f3f7 + #x6f5fa03 + #xe3f4070a + #x151812f8 + #x6060204 + #x1411090a + #x5090709 + #xfc0108fe + #xf1f1f8fe + #xfff8fffd + #xeb040905 + #x1b170aed + #xe07f903 + #x1306090f + #xfe070910 + #xfe0702f4 + #xf0f3fc02 + #xfefaf0 + #xfb0b0301 + #x1a0e01ed + #x1000f510 + #x9001214 + #xf70a0e15 + #x409f6ef + #xf3f1ff08 + #xf2ec + #x7080001 + #x1104fdf7 + #xcf9fe18 + #x51a14 + #xf9111212 + #x902e7f5 + #xf2ed0511 + #xffecef + #xa020201 + #x3000003 + #x7fb0c17 + #xff0e1a0e + #x4161009 + #x4f5e602 + #xe8f01315 + #xfffcedf0 + #x60106fe + #xfa00040c + #x906150a + #x5160e08 + #x10130902 + #xfbeff20a + #xe2fd1d11 + #x1fcedea + #x30403f8 + #xfd02070f + #xf110ffe + #xf110209 + #x110b0603 + #xf4f50006 + #xe70b1c04 + #x8fbe7e3 + #x305fdfa + #x10a0f + #x171807fb + #x1106fe10 + #x605070a + #xfa0000fc + #xf60e0fff + #xaf3e1e4 + #x302fa01 + #xfe0d0f + #x1b1803fe + #x6fb0416 + #xfd070c0d + #x303f8f6 + #xff050602 + #x4eae1ee + #x100ff08 + #xfcff0f0b + #x1d160300 + #xfdfa0c18 + #xfd0e0d08 + #x6fceffc + #xfafa060d + #xfae9eaf8 + #x30605 + #xf7010e08 + #x1e180700 + #xfa010f16 + #x5110900 + #xfdf3f506 + #xeffd110e + #xf6f2f3f6 + #x40805fa + #xf9020a07 + #x1f1808fd + #x70c18 + #xb0b01fc + #xf2f30307 + #xef081604 + #xfdfaf2ed + #x809fcf5 + #xfbff070b + #x1f1b08fa + #x706081a + #x702fdff + #xefff0cff + #xfe1109f6 + #x5f7ebec + #x903f3fb + #xf9fb0d10 + #x1f1d04fa + #xa00081b + #xfbff0007 + #xf80b06f3 + #xe09f7f0 + #x2edeaf9 + #x2fbf503 + #xf600160e + #x1f1b01fa + #x6fb0c1b + #xf403060e + #x10dfcf2 + #x10f4ecf6 + #xf6ebf60b + #xfcfb0004 + #xf60a1804 + #x1f15fefb + #xfffb0d19 + #xfa0a0b0f + #x508f6fb + #x2e4f000 + #xebf90b17 + #xfd0106f8 + #xff120dfa + #x1f0bfeff + #xf9fe0b16 + #x40d0d0b + #x303f904 + #xf0e3fa00 + #xf2111811 + #x50800e7 + #x90dfefb + #x19010105 + #xf9030717 + #xa0e0e02 + #x1000008 + #xe7ecfefe + #x61e1505 + #xa04f0e5 + #xcfff806 + #xc000a0d + #xff060612 + #xb0d0bfd + #x3020608 + #xebf2fbfd + #x1a1c0bff + #x6f9e5f3 + #x4f3ff12 + #x109130f + #x4050407 + #x80c09fe + #x5040705 + #xf1f0f600 + #x1f120802 + #xfaf1ec06 + #xfaf50d12 + #x113120a + #x40200fe + #x50c0a02 + #x7040403 + #xf0ecf908 + #x170c0d05 + #xf2f6fa0d + #xf7001405 + #x8170a02 + #x100fef9 + #x50d0c02 + #x7000105 + #xebee010d + #xc111102 + #xf6020407 + #xff080df9 + #x101100ff + #x1fcfc + #x80f0bff + #x100050b + #xe7fb0b0a + #x13170af2 + #x505fc05 + #x408fff9 + #xefe0004 + #x401fb09 + #xe0bfffd + #xfe020a0a + #xf2030a04 + #x190ffdf0 + #x9fff306 + #x1000207 + #x3f9070b + #x9060008 + #x901fc02 + #x70701 + #xfd0504ff + #x12fef7f9 + #xfff5f60f + #xfc03110d + #xff010b05 + #xc090203 + #xfd0107 + #x500fc + #x202fe + #x6f5fd01 + #xf5f6ff0e + #x121904 + #x30503ff + #xd0a0201 + #xfd00070a + #xfdfffbfe + #xfd0204fc + #xfcfa0403 + #xf4fd0002 + #xe1e14f6 + #x900f800 + #xe090306 + #x6090b + #xf6fcfe03 + #xfe0503f5 + #x10100 + #xfafef9fc + #x1a1d0af5 + #x6f4f80c + #xb0a0a0c + #x508090b + #xf5fe0006 + #x206fded + #x700fb00 + #xfaf6f3ff + #x1b1606fb + #xffef0115 + #xa0e100d + #x809090a + #xf8000108 + #x300f3ea + #xbf8fa03 + #xefeef808 + #x15140cfe + #xfaf70b15 + #xe141108 + #xa0a0807 + #xfbff0409 + #xfcf7f1f2 + #x5f2fe05 + #xe6f4030e + #x161910f3 + #xff03070c + #x14120c05 + #xa08040a + #xfb010505 + #xf3f3f5f9 + #xfef602ff + #xec00080a + #x1a1b0ae7 + #x905ff0b + #x13090a09 + #x6060511 + #xfd0700fe + #xf0f4fcfb + #xfdfdfff5 + #xfb090404 + #x1b15ffe6 + #xefcfb13 + #x9030f11 + #x1070c17 + #x409f3f9 + #xf1f500fe + #xf4f0 + #x7070102 + #x130af8f2 + #xaf3031b + #xff061613 + #x20c1113 + #xa01e7fe + #xeef50504 + #x1fbeef2 + #x9020202 + #x802fa01 + #x3f50f17 + #xfe101711 + #xa111208 + #x9f3e508 + #xe6f80f0c + #x1f5eff3 + #x4000500 + #x1020b + #x1160c + #x718110c + #x13120c00 + #xfdebf10f + #xe103190b + #x2f3f1ec + #x10602fe + #x3090b + #x8101000 + #x1112060a + #x150d0501 + #xf5efff0d + #xe7101903 + #x5f3ede4 + #x407fbff + #x2030c09 + #x121606fc + #x1106040e + #xd060408 + #xf6fa0203 + #xf61610fa + #x7eee4e1 + #x604f706 + #x40f08 + #x1912feff + #x8fe0814 + #x305090f + #x1f8fd + #xe06fc + #x2e6e2ec + #x4fffd0c + #xfc051107 + #x1c0f0001 + #xfdfd0f18 + #x10a0c0b + #x6fdf000 + #xff030504 + #xf9e3e9f6 + #x100050a + #xf9091004 + #x1d0e0500 + #xf802121a + #x80e0901 + #xf2f208 + #xf3000d0c + #xf3e9f4f7 + #x3070700 + #xfa090c03 + #x1d1206fb + #xfe080f1a + #xf0c02fb + #xf4f1ff0b + #xef0a1404 + #xf8f3f5ef + #x90bfef9 + #xfd050905 + #x1f1403fa + #x5070e1c + #xc03fcff + #xf0fc0804 + #xfb130ef7 + #xf5eeea + #xc04f3fd + #xfb020c0a + #x1f1601fb + #x703101e + #x2fdfb06 + #xf70903fa + #xb0ffeee + #xeee9f3 + #x7faf406 + #xf405140c + #x1f1400fb + #x2ff111d + #xfbfe030e + #x30df5f7 + #xdfcf2f1 + #xf6e8f206 + #xf70007 + #xf50f1605 + #x1f0ffff9 + #xfc00111c + #xfe030a0f + #xa06effe + #xffecf3fa + #xedf00313 + #xfcfe08fc + #xfe170efe + #x1e08fef8 + #xf9020e1c + #x6090e09 + #x8fff306 + #xeae9fcff + #xf1041611 + #x10701ec + #xa1300fb + #x180200fe + #xfb040b1e + #xb0c0d00 + #x3fefd09 + #xe1f200fd + #x5161802 + #x906efe9 + #xe03fb04 + #xd000607 + #xff040b1c + #xc0e09fb + #x1000509 + #xe5f8fcfc + #x19180ff8 + #x9fce1f7 + #x5f7010d + #x4070d0d + #x2030b12 + #xb0e05fc + #x3040608 + #xeef6f700 + #x1f1008f8 + #xffefe50c + #xf8f80f0d + #x412120b + #x4010703 + #xa0d0300 + #x6060406 + #xeeeff904 + #x170b0bfd + #xf5eff615 + #xf2041602 + #xd160d02 + #x10000fe + #x90e0702 + #x6040206 + #xe8ef0009 + #xf0f10fd + #xf6fa0110 + #xf80f10f6 + #x130f04fe + #xfb00 + #xb1107ff + #x3000309 + #xe6f8080c + #xf160ef6 + #x50007 + #x10e02f4 + #x12030001 + #x201fa06 + #xe1102fb + #x30710 + #xf0040a05 + #x1914ffe9 + #x8fdfb0d + #x703fa02 + #x3fc0404 + #x5fe000c + #x1202f902 + #x2080808 + #xfc070500 + #x1506f7ef + #x2f4fa14 + #xfe00070c + #xfc000b06 + #x8020306 + #x6fbff08 + #x50701ff + #x401ff + #x6fafafa + #xf8f30315 + #xfd0d1205 + #x808ff + #xb050201 + #xfefe050a + #x301fcfd + #xff0201ff + #xfcfa0100 + #xf6fa080b + #xa1b0ffa + #x60500fd + #xc050203 + #xfe03080b + #xfdfdfc01 + #xfe0601fa + #xfb0004fe + #xfcff01ff + #x191d04f4 + #x5f8fb06 + #xb06050a + #x307090c + #xfafc0005 + #x208fcf2 + #x20100fe + #xfdfaf8ff + #x1d14fffa + #xfcf10313 + #xb0a0c0c + #x707090b + #xfbfe0207 + #x602f2ef + #x5fafe01 + #xf7f3f807 + #x190f03fd + #xf4f70d17 + #xd0f0f06 + #x8080809 + #xfcff0309 + #x1f9ecf2 + #x1f30104 + #xedf3010e + #x151509f4 + #xf8010e13 + #x12120d00 + #xa07050a + #xfc00050a + #xf9f3f0f6 + #xfaf80500 + #xeefd0a0b + #x1a1b04e7 + #x203060f + #x120d0903 + #xa030412 + #xfd040105 + #xf2f5f7f7 + #xf8ff02f7 + #xfa050a04 + #x1e17f9e5 + #xbfc0115 + #xb070b0b + #x6020a17 + #x406f801 + #xf1f8fcf8 + #xfe00f9f1 + #x5050501 + #x1a0cf0f0 + #x6f2091b + #x2091013 + #x4061512 + #xcfeee03 + #xeffafffe + #x1faf2f2 + #x7010402 + #x1002f300 + #xfdf61419 + #x111411 + #x90e1506 + #xaf0ec0a + #xeafe0607 + #x1f2f2f2 + #x3020403 + #x7fffd09 + #xfa02170e + #x616120b + #x10120ffd + #xfee5f611 + #xe6050f0c + #xfef0f5eb + #x2050202 + #x4020809 + #x111002 + #x11140c07 + #x140e05fe + #xf2ea0310 + #xed121205 + #xfef2f1e2 + #x506fc03 + #x4060c04 + #xd1504ff + #x12090808 + #xf070208 + #xf1f60709 + #xfc190cfc + #xf0e7e0 + #x901fa08 + #x2090d04 + #x1710ff00 + #x9010b0f + #x704070f + #xfbfeff01 + #x91302f8 + #xfde8e1e8 + #x7fdff0d + #xff0c0d06 + #x19070002 + #xfd000f17 + #x3070d0c + #x3faf503 + #x6080000 + #xf4e2e7f5 + #x2fd080b + #xfe0e0d05 + #x180704ff + #xf905131b + #x80b0c02 + #xf1f50a + #xfc030608 + #xeee6f2f8 + #x1030b02 + #xf0a03 + #x180b04fc + #xfd09141d + #xe0b04fa + #xf6eeff0e + #xf4090f07 + #xeff0f7f0 + #x80903fa + #x10b0702 + #x1a0f00fa + #x30a121e + #xe04fcfb + #xf0f70709 + #xfd140efa + #xf9f5f0e8 + #xd04f9fc + #x60808 + #x1d0ffffc + #x507141e + #x6fcfb04 + #xf6040400 + #xb1200ef + #xfdf1e8ef + #xbfaf904 + #xfa090e0c + #x1f0efffb + #x205161f + #xfff9010b + #x409f9fb + #xf03f3ef + #xf6e9ed00 + #xf40308 + #xf811120a + #x1e0bfff7 + #xfd06141f + #xfdfe0b0b + #xd00f0ff + #x1f4f1f9 + #xeceb000e + #xfafb0bfe + #x1170d03 + #x1b06fdf3 + #xfb07131f + #x2051005 + #xaf7f305 + #xedeff700 + #xedfb110b + #xfe0604f1 + #xe1403ff + #x1703fbf7 + #xfd06121f + #x80b0ffe + #x2f5fe0a + #xe2f6fd01 + #xfe0e18fd + #x808f2ec + #x1308fd01 + #xd02ff01 + #x4131f + #xa0d08fa + #xfb040b + #xe8fcfbff + #x11170fef + #xcfbe2f9 + #x9fc010a + #x507070b + #x1041516 + #xc0d02fc + #x101060b + #xf1faf700 + #x1a1305ed + #x4ece50d + #xf9fb0c0d + #x60e0f0a + #x41009 + #xd0c0000 + #x505040b + #xf3f3f803 + #x150d04f4 + #xf7e7f819 + #xf1091304 + #xe140f00 + #x20502 + #xd0a0202 + #x604020b + #xebf1fe07 + #xe0e09f6 + #xf3f10716 + #xf9140df9 + #x141107f8 + #xff00fe05 + #xf0d0400 + #x502020d + #xe6f70508 + #xd150af0 + #xfbfd080d + #x51300f5 + #x130601fa + #xfefc0d + #x120e00fe + #x1010511 + #xec010a08 + #x151803ea + #x500fd0a + #x907f8fc + #x9fd0102 + #x3fefd0f + #x1409faff + #x2050b10 + #xfc070702 + #x180df2e9 + #x1f60115 + #x4fd000b + #xfc020604 + #x2fe0705 + #xcf9fd07 + #x6080703 + #x2050200 + #xc00f3f4 + #xf8f10a18 + #xfe050c0b + #xfd0a08ff + #x4010500 + #xfffa050a + #x70300fd + #x20002 + #xfefdfcfc + #xf3f9100e + #x7140cff + #x50a01fa + #x7030200 + #xfc01090b + #x1fdfdff + #x30000 + #xfb0100fd + #xf8000b01 + #x181902f8 + #x501fc01 + #x9030306 + #x6090b + #xfcfb0004 + #x406fcfa + #x400fc + #xfeff00fd + #x1f10fbfb + #xfcf8000f + #x9060909 + #x507090c + #xfbfd0306 + #x902f2f5 + #x2fffe00 + #xfaf7fd03 + #x1b09feff + #xf2fa0c18 + #xb0b0e03 + #x607090b + #xfcff0407 + #x8f9ecf6 + #xfefa0103 + #xf2f4030a + #x160c03fa + #xf3041217 + #xf0f0cfb + #x706080c + #xfc000609 + #xfff1edf7 + #xf6fb0402 + #xeffa0c08 + #x181601ed + #xfd080e13 + #x110f08fb + #x8030710 + #xfd020707 + #xf6f1f2f7 + #xf60102fb + #xf7020e00 + #x1f15f4e8 + #x5000916 + #xd0b0605 + #x5010c13 + #x1030003 + #xf3f6f6f7 + #xfc04fcf4 + #x50afe + #x1f0aebf1 + #x3f80b1b + #x50a0a0e + #x105150f + #x8fdf902 + #xf3faf7fd + #x1fef5f1 + #x3030600 + #x18feed00 + #xf8fa141b + #x40f120f + #x30e1704 + #x6eff807 + #xf1fcfd08 + #xfff4f4f1 + #x1030503 + #xdfafa07 + #xf4071813 + #xa141306 + #x9130ffc + #xfbe6fe0e + #xf001060f + #xfaf2f6ea + #x1050404 + #x7fe0505 + #xfb141109 + #x10131000 + #xf1105fe + #xede80810 + #xf60c0d0a + #xf8f5f1e2 + #x6060104 + #x5050902 + #xa160603 + #x110d0b01 + #xe0a0006 + #xeaf50c0a + #x31509fd + #xf8f5e7e2 + #x9000004 + #x40b0803 + #x140d0003 + #xa060a09 + #x803060f + #xf3fe0604 + #xf1401f6 + #xf8ede1ea + #x6fa0509 + #x40d0807 + #x16040103 + #x1050d13 + #x3040d0d + #xfffcfc02 + #x1008fcfc + #xf2e4e2f6 + #xfb0d08 + #x40f0908 + #x12020400 + #xfb08121a + #x40a0e01 + #xfef2fb08 + #x4020105 + #xeae5effc + #xff021000 + #x70f0805 + #x100702fd + #xff0c151b + #xa0c06f9 + #xf5ee010d + #xfd060907 + #xeaeff6f5 + #x4080af8 + #xa0d0503 + #x130bfffc + #x40d171b + #xc06fefa + #xedf40a0b + #x100cfe + #xf1f7f1eb + #xb05fff7 + #x6080406 + #x180cfdfe + #x60c161c + #x7fdfb00 + #xf3000902 + #xd1202f1 + #xf8f4e7ee + #x9fcfefe + #x108090d + #x1b08fffd + #x30b181e + #xfef90005 + #x500fc + #x1308f5f1 + #xf6ebe8fe + #xf60503 + #xe0e0f + #x1b08fff8 + #xc171f + #xf9fc0a06 + #xafff7fc + #x8f9eefb + #xede8f90b + #xf7fc0dff + #x7140d08 + #x1707fbf2 + #xc171f + #xfb040f00 + #x7f2f900 + #xf5f1f406 + #xeaf60c09 + #xfb0607f2 + #x13140600 + #x1404f6f6 + #x10a191f + #xb0efb + #xfff00005 + #xeaf4fa09 + #xf50913f9 + #x408f7ed + #x17090000 + #xe02f701 + #x81b1e + #x50e09fa + #xf9f70609 + #xeefbfc04 + #x8170ae9 + #xcfde8f6 + #xeff0007 + #x704000d + #x71e18 + #xa0d01fb + #xfcff070c + #xf7faf901 + #x1417fee7 + #x5eaea08 + #xfefe0a0e + #x70a0a0b + #xff09180c + #xd09ff00 + #x103060d + #xf9f4f802 + #x1411faee + #xf7e3fc16 + #xf607100b + #xd100e00 + #xff090c05 + #xe060001 + #x503050e + #xf1f1fd05 + #xe0efff4 + #xeceb0e16 + #xfd130cff + #x141207f5 + #xff040209 + #xf070200 + #x5010510 + #xeaf60308 + #xd1302ee + #xf2fa100e + #xb1301f7 + #x140cfef5 + #xffff0010 + #x120900fe + #x2000715 + #xedff0707 + #x1317fee7 + #xfe00080b + #x1108f8fc + #xc03fdfe + #xfd0412 + #x1504fc00 + #x1030a14 + #xf8050804 + #x1a14f5e7 + #x3fa0010 + #xafefa07 + #x305 + #x1fd060c + #x11fcfa04 + #x4070f06 + #x2050402 + #x1500ebf3 + #xf7f70d19 + #xff090a + #xfe080503 + #x208fe + #xfdf90507 + #x70606fb + #x1010205 + #x5fbf4fc + #xeffc1612 + #x20b0d01 + #x50e01fa + #x20303fc + #xf8000a08 + #x300fffd + #x10205 + #xff00fcfd + #xf4051104 + #x141204f8 + #x906f9ff + #x4020102 + #xfe060909 + #xfefd0002 + #x303ff01 + #x3fdfc + #xfc0605fd + #x1d0dfcf9 + #x1fdfd0d + #x6030606 + #x407090b + #xfafd0205 + #xa00f8fc + #x302fbff + #xfdfefe00 + #x1c03fcff + #xf7fc0819 + #x7070c02 + #x5060a0b + #xfb000405 + #xaf7f1fa + #xfefe05 + #xf6f80305 + #x140401fe + #xf404121a + #xb0d0bf9 + #x5060a0c + #xfc000606 + #x2eff0fa + #xf9000306 + #xf0fb0b03 + #x130c00f4 + #xfc0b1317 + #xf0f04f5 + #x5050a0e + #xfc020805 + #xf8edf3f9 + #xf7040300 + #xf4040ffc + #x1d0ff5ec + #x4070e17 + #x100b00fe + #x3030d11 + #x40701 + #xf4f2f3f8 + #xfd05fdf8 + #xfd080af9 + #x1f04eaf1 + #x100101c + #xb090508 + #xfe07140d + #x30002ff + #xf5f6f3fd + #x300f7f4 + #x10704fd + #x1bf8ecfd + #xf700141f + #x70b0f09 + #xff111605 + #x1f5fe01 + #xf7f7f808 + #xf8f4f2 + #x1060302 + #xff3f803 + #xf30a191c + #xa101400 + #x5180cfe + #xf5ed0109 + #xf7fb010f + #xf9f5f4ee + #x1060503 + #x5fb0402 + #xfb151312 + #x111310f9 + #xd150300 + #xe9ee090e + #xfa030b09 + #xf5f9efe7 + #x4050500 + #x3040700 + #x8150b0b + #x12100afb + #x100bff08 + #xe5f80e0c + #x40d0cfb + #xf7fae5e6 + #x7020400 + #x50a0503 + #x140c0507 + #xd0b0504 + #xa04030f + #xee000a05 + #x110f03f2 + #xf8f0e0ef + #x4fe0801 + #x80b0509 + #x12020405 + #x5080810 + #x3040b0c + #xf9000201 + #x1308fcf5 + #xf3e5e2fc + #xfeff0e02 + #xb0c070b + #xd010402 + #x10a0f18 + #x20a0d02 + #xfcf8ff05 + #xc00fd00 + #xeae2ec03 + #xfa0412fd + #xd0c0905 + #xa060200 + #x20d1517 + #x70e06fa + #xf3f2030a + #x2010605 + #xe7ecf5fe + #x10c0cf4 + #xe0b0601 + #xd09fe00 + #x6101816 + #xb09fef9 + #xebf60b0a + #x10a0afd + #xeef6f2f4 + #x90a02f1 + #xc080405 + #x1207fc02 + #x8101817 + #x700fafe + #xee000d03 + #xc1004f1 + #xf7f7e8f3 + #x900fef7 + #x606060d + #x1505fe01 + #x810181b + #xfef9fe02 + #xfb0505fb + #x1409f7f0 + #xf8ebe6ff + #xfffa03fe + #x5090c10 + #x1604fefc + #x610191f + #xf6fd0602 + #x400fef7 + #xefbeffb + #xf0e6f40b + #xf7fe0bfd + #xa0f100a + #x1406faf7 + #x40f1b1f + #xf6050bff + #x3f6fcfa + #xfef0f309 + #xe9f0070c + #xf90909f4 + #x13110aff + #x1204f2f9 + #x50d1d1f + #xfb0e08fb + #xf8f100ff + #xf1f1fc0c + #xf0050dfb + #x40cfbec + #x170b03fc + #xe00f105 + #x40d1f1c + #x21004fc + #xf2f70504 + #xf2f60007 + #x1605ec + #xb00eef1 + #x10020103 + #xafdfb10 + #x10f1f16 + #x80d00fd + #xf5ff0609 + #xfaf9fe00 + #x1219f6e8 + #x5eeee01 + #x2ff070e + #x8010811 + #x121d0f + #xc09fefe + #xfd03070c + #xfcf5fc00 + #x150ff0f0 + #xf5e5fe0f + #xfa060f0e + #xc0b0e03 + #x1111009 + #xd0400fe + #x203090d + #xf4f1fe02 + #x1109f5f6 + #xe8ec0f13 + #x100e04 + #x121106f7 + #x20b060a + #xb0401fd + #x301090e + #xecf40207 + #xe0bfbf3 + #xe9fc150d + #xf1204f7 + #x150efaf5 + #x30411 + #xd0600fc + #x1000b13 + #xedfc0607 + #x1412f8e9 + #xf6040c0a + #x1609fbf7 + #xf06f600 + #xff000913 + #x1003fefd + #x20f14 + #xf6020705 + #x1a0fefe6 + #xfe00060f + #x10fdfa00 + #x501fd09 + #xfe000d0d + #xefcfc00 + #x306110c + #x60602 + #x1905eaee + #xfbf70816 + #x3fa030b + #xfd040507 + #xff010b03 + #x3f70106 + #x60a0dfa + #x40405 + #xdf5effc + #xf1001518 + #xfe060eff + #x5090300 + #x502fd + #xf5000902 + #x50501f9 + #xff010508 + #x2f8f9fe + #xf20b150b + #xa0f09f4 + #xc09fafd + #x204ff00 + #xfb070904 + #xfe00 + #x20405 + #x2fffcfd + #xfd0d0800 + #x180cfff4 + #x8fef90b + #x3030206 + #x3080807 + #xfcff0004 + #x600ffff + #x400fa00 + #x106ffff + #x1603fcfa + #xfefa051a + #x4060703 + #x6060909 + #xfc000304 + #x8f9f9fb + #x3fefc05 + #xfcfe0003 + #xe0000fe + #xf701131d + #x70b08f9 + #x4060b09 + #xfd010303 + #xf1f6fb + #xfefe020a + #xf5fe0801 + #xd0601f8 + #xfd0b1618 + #xd0d00f3 + #x3070c0b + #xfd020503 + #xf6eef7fa + #xfc030607 + #xf5040bfb + #x1409faf1 + #x40d1316 + #x100afbf9 + #x3070d0e + #xfe050700 + #xf1f0f6f7 + #x602fe + #xfd0d06f6 + #x1d01eef0 + #x406121c + #xd05fe03 + #x9110f + #x10403fc + #xf3f2f3fc + #x400fbf7 + #x30c00fc + #x19f5edf8 + #xfc06181f + #xa070a05 + #xfe111209 + #xfeffff + #xf6f1f603 + #x3faf6f5 + #x408ff02 + #xcf0f7ff + #xf60b1b1f + #xa0d11fd + #x5180c03 + #xf7f7ff08 + #xf7f30009 + #xfbf7f4f3 + #x4070403 + #xf70200 + #xfd141b1a + #xe120df4 + #x11150003 + #xeaf6050f + #xf9fd0c04 + #xf7f9efef + #x50607ff + #xff0204ff + #xa14120f + #x111204f7 + #x150afd0a + #xe6fd0b0f + #x80ff6 + #xf9f8e6ee + #x60507fb + #x3080302 + #x120c0c09 + #x100dff02 + #x1002000f + #xed050a08 + #xa0e06ea + #xfcefe0f5 + #x30206fc + #x9090309 + #x11040807 + #xb09020e + #x702090e + #xf8050302 + #x1109fced + #xf7e3e401 + #xfd030aff + #xd07070a + #x9030606 + #x6090c14 + #x3090b04 + #xfcff0003 + #xc00faf8 + #xede0ee0a + #xfc0a0cfc + #xe080a05 + #x6050306 + #x60c1414 + #x70e05fe + #xf4f80109 + #x2fe02ff + #xe6e6f907 + #xf09f3 + #xf0a08fe + #x906ff06 + #x9101810 + #xc0afcfc + #xecfa090a + #x509f9 + #xecf3f7fd + #x90f00ed + #xd080401 + #xe04fe08 + #xb121711 + #xa02f8ff + #xee020c05 + #x70d05ef + #xf5f4edf9 + #xb07fbf1 + #xa050509 + #x10000008 + #xb131616 + #x1fbfb03 + #xf80809fb + #x120bf9eb + #xf9eae901 + #x200fefa + #x6060b0f + #x10010002 + #xb12171b + #xf8fc0103 + #x205fff5 + #xefdf0f6 + #xf1e2f40d + #xf90104fd + #x90c1108 + #xf03fbfd + #xa111c1c + #xf6040501 + #x1fdfaf7 + #x1f1f304 + #xe9ea040f + #xfa0a05f6 + #x10100ffd + #xf02f4ff + #x8111f1c + #xfb0b0300 + #xf8f7fbfd + #xf4ee0009 + #xebff0c03 + #x50ffdec + #x140e05f7 + #xefbf108 + #x6111f1a + #x40eff00 + #xf0fbfe03 + #xf1f50602 + #xfc1002f3 + #xd04f1ed + #xe070100 + #xaf5fb13 + #x4141f18 + #xb0cfd00 + #xf2000108 + #xf6fa05f9 + #xe12f4ed + #x8f4effa + #x502040c + #x6f70813 + #x51a1e12 + #xe06fdfe + #xfb04050c + #xfaf800f8 + #x1707ebf4 + #xf6e9fa09 + #xfe050e11 + #x7030e08 + #x81a150c + #xd04fefc + #x4090b + #xf4f5fffd + #x14fef1fa + #xe7f10b11 + #x10d1103 + #xe0e07fb + #x9110a0c + #xa03fffb + #x40c0b + #xecf60202 + #x1000f9f7 + #xe6001210 + #xe110af4 + #x140efaf9 + #x6080811 + #x904fffb + #x30e0d + #xebfc0604 + #x1206f7ed + #xf30a0d0d + #x160affee + #x1204f303 + #x2040c14 + #xb03fcfc + #xff05120f + #xf4010803 + #x1907eee8 + #xfd070610 + #x1000fbf7 + #xafdfa0f + #x40f10 + #x9fefbfd + #x8150a + #xfd040702 + #x1affe8ee + #xfc000818 + #x3fa0001 + #x3ff030f + #x60d06 + #x1faff00 + #x50a12ff + #x50503 + #x13f6ebf9 + #xf4ff111a + #xfc000b03 + #x1070604 + #x506ff + #xf6fd0602 + #x70c03f7 + #xff040606 + #x2f0f8fd + #xf60c1714 + #x10f09f1 + #xb0600fe + #x304fd02 + #xfa070600 + #x405fcff + #xff040806 + #xfff8fcfc + #x130e08 + #xf0f00ed + #xcfefa05 + #x302fe08 + #x3090502 + #xff00ff04 + #x2040400 + #x2fdfbfe + #x70b0103 + #x1206faf6 + #x2f60316 + #x4030308 + #x7070705 + #xff010104 + #x3fefffc + #x3fcfd05 + #x301ff04 + #xa00fefd + #xfbfb121c + #x6080400 + #x4060907 + #x20202 + #xfdf6fbfa + #xfb030b + #xfaff0404 + #x50301fb + #xfc081b18 + #xb0afff7 + #x2080b08 + #xff020202 + #xf3f3fafa + #xfe000908 + #xf90506fe + #xc07fdf4 + #x40f1813 + #xe07f8f8 + #x30a0c0b + #xff030302 + #xedf3f9f9 + #x40900 + #xff0b01f9 + #x1402f5f1 + #x70e1418 + #xe01f900 + #x30c0e0e + #x1060200 + #xeff3f5f9 + #x50201f8 + #x70cfafc + #x13f6eff4 + #x109181f + #x8010303 + #x3100f0e + #x203fb01 + #xf2f0f5ff + #x4fdfaf6 + #xa08fb03 + #x6f0f5fc + #xfc0e1d1f + #x7080bfc + #x9140b0a + #xfcfdf90a + #xf2f1ff03 + #xfef9f7f6 + #x8050104 + #xfbf6feff + #x141f1a + #xa0f08f5 + #x14110207 + #xf3fb0013 + #xf2f90afe + #xf9f8f4f5 + #x60606ff + #xf90101ff + #xb151d10 + #x1012fef6 + #x1a08fe0b + #xeeff0814 + #xf8070df0 + #xfbf6edf3 + #x70705fb + #x2060002 + #x12111409 + #x120df902 + #x14010110 + #xf2050a0d + #x10f05e5 + #xfdece7f8 + #x50702fc + #x9050107 + #x10090c07 + #xf06fd0e + #xa00080f + #xfb080605 + #xb0cf8e6 + #xf9e1e902 + #x10703ff + #xc040708 + #x8050808 + #x9040712 + #x4050b09 + #xff020004 + #xb02f4f1 + #xeee0f50c + #xb06fe + #xc070b01 + #x407060a + #x709120f + #x70b0503 + #xfafc0009 + #x2fefcf9 + #xe5e3ff0c + #x41104f5 + #xb0a08fc + #x706030c + #x80f150c + #xd0afe00 + #xf1fb050d + #xfd0305f6 + #xe7ef0003 + #xe11feec + #xc0a03fe + #xb01020c + #xb12140c + #xe00f903 + #xf1020a08 + #x30c03ec + #xf2f3f7fe + #xf0af6ee + #xa060306 + #xbff040d + #xe131311 + #x5fafa05 + #xf90908ff + #xc0cf9e8 + #xf8ebf101 + #x803f6f7 + #x705090c + #xa000509 + #xf131516 + #xfcfaff07 + #x20900f7 + #x1000eff0 + #xf2e1f70d + #x1fefe + #x60a1108 + #xa020003 + #xd121a18 + #xf8000105 + #x301f6f8 + #x4f3f2fe + #xe7e70511 + #x902f8 + #xb1210fd + #xc00f902 + #xb121f17 + #xfe060005 + #xfdfbf4ff + #xf6f0fe03 + #xe7f90d09 + #x70dfdee + #x101206f6 + #xdf8f609 + #x8151f17 + #x707fe05 + #xf5fbf706 + #xeef708fe + #xf60b06fa + #x1008f2ea + #x100bfefe + #x8effe13 + #x8191f18 + #xe05fe04 + #xf6fffc0c + #xf10007f3 + #xa0bf7f2 + #xaf8edf5 + #x804010c + #x1f20b13 + #xa1d1e14 + #x1003fe00 + #xfb01000d + #xf50000ef + #x1400eff5 + #xfbeff406 + #x1040b0f + #xff1009 + #xe1e180e + #xf01fdfd + #x3060c + #xf4fbfcf6 + #x12f5f2fb + #xeaf30312 + #x20c1203 + #x70b09fe + #x11170f0c + #xa01fcfc + #x1040a0a + #xeefafffe + #xbf6fbf9 + #xe9010d14 + #xc120cf0 + #x100dfcfc + #xd0d0b0f + #x802fbff + #x70c0a + #xecfd0300 + #xcfdfaef + #xf50c0c11 + #x131000e7 + #x1203f605 + #x7070e14 + #x902faff + #x80f0c + #xf1020600 + #x1200f1e9 + #xb0712 + #x1004f8ed + #xcf7fc11 + #x2071114 + #x8fef9fe + #x10b1307 + #xfa0506ff + #x15f9e9ed + #x40819 + #x3fdfcfa + #x3f80713 + #x30a0e0d + #x1fbfbff + #x40e12fe + #xfe050400 + #x11f0ebf6 + #xf901101f + #xfb0005fd + #x1000c0a + #x3090803 + #xf9fd0000 + #x70e08f7 + #xff050505 + #x6edf4fd + #xf508171a + #xfd0b0bf5 + #x70704ff + #x3050000 + #xf7050500 + #x908faff + #x70805 + #xf9f5fbfa + #x212170d + #xb0ffbed + #xa00fe00 + #x400fd09 + #x4070201 + #x401fc06 + #x2080702 + #xfdfbfbfa + #xc100a06 + #x1108f4f4 + #x3f5010e + #x300010d + #x9060302 + #x1000105 + #x30501fd + #xfafc01 + #xa040106 + #xa00f7ff + #xfaf91016 + #x5030507 + #x5050605 + #x1010202 + #xfffefcfc + #xfff90307 + #x1ff0306 + #x401fe00 + #xf9061b13 + #x80601fd + #x2080906 + #x2010001 + #xf4f9fafd + #xfcfe0d06 + #xfc020501 + #x605fef9 + #x1131a0e + #xd04f9fa + #x40b0a0a + #x10003 + #xeff8f9fc + #xff040dfd + #x108fffd + #xe04f7f3 + #x9131511 + #xbfff8ff + #x70c0b0d + #x1030004 + #xf0f8f7fb + #x30706f5 + #x908f9ff + #xdfaf2f6 + #x80f171a + #x6fcfe03 + #x80d0d0f + #x403fb05 + #xf2f3f5fc + #x402fef4 + #xd03f904 + #x3f3f3fd + #x20e1e1e + #x30307ff + #xc100d0d + #x2fff80d + #xeff1faff + #xfffdfaf5 + #xa010005 + #xf8f6f901 + #x2161f17 + #x70d03f8 + #x150d0709 + #xfcfafe16 + #xedf904fc + #xfaf9f8f5 + #x8030600 + #xf7fefd02 + #xb1a1f0d + #xd10faf8 + #x1905020a + #xf6fb0817 + #xf00607f1 + #xfbf6f4f3 + #x70704fb + #x2fe04 + #x11181905 + #x120af402 + #x13fe050d + #xf7010d0f + #xfd0fffe7 + #xfcedf0f5 + #x708fffc + #x8020007 + #xf131005 + #x1002fa0b + #x8fe0a0f + #xfe060a07 + #x90df2e7 + #xf8e3f0fe + #x607fe00 + #xa010506 + #x90d0b09 + #xa00050e + #x2040c0d + #x2040304 + #xc02ecf1 + #xece0f908 + #x6090100 + #x8050901 + #x50a090c + #x6040f0b + #x5080808 + #xfffe0009 + #x4fcf3f9 + #xe2e6030b + #x90d03f7 + #x80b06fc + #x607080d + #x60d1208 + #xc070105 + #xf8fc050e + #xfe00fdf7 + #xe2f10705 + #xf0efeed + #xa0c01fd + #x903080e + #xb130f08 + #xd00fd05 + #xf4000a0b + #x9ffee + #xecf700ff + #x140af4eb + #xb06ff06 + #x8000a0e + #xf130e0d + #x7f9fd07 + #xfb070902 + #xa0bf5e8 + #xf4f0f900 + #xe00f2f4 + #x704050d + #x6010a0c + #x10131211 + #xfdf70009 + #x30902fa + #xf02ecee + #xf0e7fb08 + #x5fff8fc + #x5090d09 + #x5030707 + #xf121711 + #xf9fb020b + #x704f7fa + #x7f4edfb + #xe5e80611 + #x20401f9 + #x7120fff + #x9010004 + #xc141c12 + #xfe00020a + #x2fcf200 + #xf8f1f900 + #xe2f8100b + #x90a00ee + #xf1405fa + #xaf9fe08 + #xb181d14 + #x6010108 + #xfcf8f508 + #xeef904fd + #xef070cfe + #x1108f5e8 + #x120dfb00 + #x4f1020f + #xa1d1d15 + #xc000105 + #xf9f9fc0d + #xef0404f3 + #x40afff3 + #xefcecf1 + #xd03fd0d + #xfbf20c12 + #xf1f1c13 + #xdff0102 + #xfdfc010e + #xf605fcef + #xffef4f2 + #xfff1f103 + #x6020811 + #xf800120c + #x151f190c + #xb000000 + #xfe060c + #xf800f6f4 + #xdf2f5f6 + #xf1f2fe12 + #x40b1105 + #xff0c0c02 + #x161b1408 + #x900fd01 + #x1090a + #xf4fcf8fc + #x4f0fcf8 + #xeefe0a16 + #x9140ef1 + #xb0efffe + #x12110f0b + #x7fffa03 + #x1060b09 + #xf1fefeff + #x1fafdef + #xf9090e11 + #x121400e6 + #x1001f806 + #xb0b1011 + #x7fefa04 + #x2090c0a + #xf40202fe + #x8fff4e9 + #x40b0c12 + #x1209f3eb + #xaf6ff10 + #x60b1215 + #x7fcf902 + #x40c0f08 + #xfb0602fd + #xdf9ebea + #x7050b17 + #x8fff3f8 + #xf50b13 + #x50c1210 + #x3f9f900 + #x7100e00 + #xff0601ff + #xaefebf3 + #x2121e + #xfe00fefd + #xfdff110b + #x70c0b08 + #xfcfafc01 + #xa1107f9 + #x50202 + #xebf2f8 + #xfa071a1c + #xfd0803f7 + #x1070c01 + #x7080403 + #xfaff0001 + #xb0cfcfc + #x70605 + #xf9f0fafa + #xff101a12 + #x51100ee + #x904fffd + #x402fd06 + #x1070200 + #xa01fb07 + #x6090705 + #xf7fbf8fa + #xb131503 + #x1306eff7 + #x3fbfe06 + #x2fd030c + #x9030003 + #x4fe0108 + #x7090301 + #xfdfbf9fe + #xd090a03 + #x10fcf002 + #xf9f80a12 + #x1ff080a + #x7030204 + #x2000303 + #x303fd00 + #xfcf90003 + #x4010705 + #x6fcfb06 + #xf5061710 + #x4020700 + #x3050606 + #x2000101 + #xfcfdfb00 + #xfafd0902 + #xff020703 + #x401ff00 + #xfe14180a + #x702fffa + #x4090808 + #xff0005 + #xf5fafb01 + #xfc070cfa + #x10502fe + #xa03faf8 + #x919120a + #x8fef9fd + #x80b0a0c + #x7 + #xf5faf9ff + #x10c06f2 + #x904fcff + #xbfef3f9 + #xc131413 + #x3fafd02 + #xb0c0c0e + #x300ff09 + #xf6f6f7fe + #x409fef1 + #xc00fb03 + #x3f5f301 + #x9121d19 + #xfffe0102 + #xd0d0e0c + #x4fdfb0d + #xf2f2f700 + #x103faf3 + #x7fc0105 + #xf9f4f707 + #x6161f14 + #x30701fd + #x110c0c08 + #xf70114 + #xecf6fe00 + #xfdfefaf3 + #x4000601 + #xf7f9fb08 + #xb1d1f09 + #xc0cf8fb + #x14070806 + #xfaf80c15 + #xef0100f8 + #xfcfaf8f0 + #x50604fd + #xfffdfd07 + #x121f1901 + #x1106f301 + #xe00070a + #xf7ff140e + #xfc0bfaf0 + #xfbf4f4ef + #x808fffd + #x6fe0007 + #x131c0f02 + #x10fef80a + #x4000a0e + #xfd051004 + #xa09edee + #xf5ebf3f7 + #x905fd00 + #x6ff0407 + #xe140a09 + #x9fd040c + #xff030d0f + #x1050802 + #xfffe7f4 + #xeae6f902 + #x9040000 + #x5030704 + #x90e0b0c + #x4020c09 + #x80c0c + #x1000307 + #x9f5ecfb + #xe1eb030a + #xa0705f6 + #x50a0500 + #x80a0d0d + #x40a0e05 + #x7070707 + #xfbfc060c + #xf8f6fb + #xe0f70906 + #xf0a00ea + #xa0bff01 + #x8060d0c + #x9110b06 + #xa010205 + #xf7ff0d0b + #x1f9f4 + #xe8ff05ff + #x1307f6e6 + #xc07fd09 + #x6050d0c + #xf12090a + #x5fb0007 + #xfa050e02 + #x907f2ed + #xf2fafdfe + #x1000f0ee + #x9010211 + #x3060e0c + #x11110d0c + #xfcf8020a + #x30905fb + #x11ffe9f1 + #xf0f0fd06 + #x8faf7f8 + #x5050b0f + #x3070b09 + #x1011120b + #xf7fa040c + #x805fcf9 + #xbf3e9fb + #xe5ef050e + #x2fe00f7 + #x60f0c06 + #x6050605 + #xe14150b + #xfafe060c + #x5fcf4fe + #xfceef301 + #xe1fa0f0d + #x60502ec + #xd1405ff + #x8fe0106 + #xe19180f + #xff060a + #xfff6f805 + #xf1f6ff00 + #xec080e00 + #xe07f8e4 + #x150cfb04 + #x2f7040c + #x101d1812 + #x5000606 + #xfbf50008 + #xf10200f9 + #xfe0b04f4 + #xfffedeb + #x1301fb0f + #xf8f70a11 + #x121f1a0f + #x5000502 + #xfaf70708 + #xfb07f8f5 + #xb02f8ef + #x4f3edfe + #xafe0813 + #xf302100e + #x181f1a07 + #x3000102 + #xfcfa0a08 + #xf1f8 + #x6f6f6f3 + #xf6f1fb0d + #x5061109 + #xfa0e0c06 + #x1c1d1500 + #x300fe06 + #xfdff0c08 + #xfdfaf2fe + #xfdf3f9f4 + #xf1fa0a11 + #x9130ff7 + #x60f0302 + #x18161102 + #x4fdfc0a + #xff030b08 + #xf8faf900 + #xf8fafbf0 + #xf904110e + #x1116ffea + #xe04fd05 + #xf100f0b + #x4fbfd0b + #x2080c08 + #xf8fefefe + #xfe00f4eb + #x309110a + #x160befef + #x9f7000f + #x90e1213 + #x4f9fd07 + #x50b0d07 + #xfd03fffe + #x6fdeceb + #x7071010 + #xffeedfb + #xfef60b13 + #x80f1411 + #x1f7fc04 + #x90e0d02 + #x104fd00 + #x5f1e9f1 + #x1041517 + #x4faf601 + #xf701140e + #x90f1107 + #xfdf6fc04 + #xc1006fc + #x303ff02 + #xfceceff7 + #xfd081d17 + #x1fefc + #xfd0b0f02 + #x90b0901 + #xfaf9ff05 + #xe0dfefd + #x2040205 + #xf4f1f6f9 + #xff101f10 + #x60afcf4 + #x40b03fd + #x6050303 + #xff000104 + #xc05f904 + #x4080705 + #xf4f9f8f9 + #x9151a06 + #x110af2f3 + #x700fc01 + #x3ff000a + #x8050002 + #x6fd0308 + #xa080407 + #xfbf9f600 + #xe140ffd + #x12f6ef03 + #xfbfb020f + #xff0b07 + #x6000104 + #x1ff0604 + #x9050004 + #xfcf8fb04 + #x8080901 + #x8f3f90a + #xf4020f12 + #x20cff + #x2010406 + #x201 + #x2fffe05 + #xf9fd0403 + #x50901 + #x3fa0105 + #xfc14130a + #x20405f7 + #x2060707 + #xff0004 + #xfcfbfe04 + #xfa0707fc + #x606fe + #x500fefe + #x91a0f07 + #x400fdf9 + #x7090909 + #xfefe0009 + #xfafafe02 + #x10f02f5 + #x70400fc + #xafef7fd + #x11160d0d + #x1fcfb01 + #xc0b0b0b + #xff010b + #xfaf8fb00 + #x70efaf2 + #x8feff00 + #x4f7f404 + #xe121713 + #xfefc0005 + #xc0b0e09 + #x1fd020c + #xf7f4f901 + #x706f7f4 + #x3fb0203 + #xfcf3f90c + #xb191f11 + #xff020002 + #xd0c0e04 + #xfff8040f + #xf0f3fc03 + #x201f8f3 + #xfe0801 + #xf8f5fd0c + #xd1f1e06 + #x806faff + #xe0b0b01 + #xf7f70f0f + #xeffcfe00 + #xfffef7ee + #x20504fe + #xfdf90009 + #x141f1500 + #xf02f501 + #xa070807 + #xf4ff1809 + #xfb03f9f8 + #xfdfaf4ec + #x607fffd + #x2fb0107 + #x181f0e01 + #xefaf908 + #x204090d + #xf9071401 + #xa01eff4 + #xf6f4f0f2 + #xa04fe00 + #x3fd0508 + #x171a0907 + #x6f8020b + #xfd060c10 + #xff090aff + #x11f7e8f8 + #xeceff400 + #x90102fd + #x1010708 + #x11110b0b + #x1ff0909 + #xff080d0d + #x1050402 + #xbeeebfe + #xe3f1ff0a + #x80306f4 + #x3070506 + #xd0c0e0a + #x2080907 + #x3090a07 + #xfdfe0607 + #xeff4ff + #xe2fc080a + #xa0803e7 + #x9090006 + #xa0b0f09 + #x90e0606 + #x6050604 + #xf8000d07 + #xfef8f8f9 + #xea030601 + #xf07f7e2 + #xe03fe0d + #x70a0e0b + #xf0e0508 + #x2000305 + #xf9060f00 + #x5fff3f2 + #xf30200ff + #xf00efe7 + #xaff0314 + #x40b0e0d + #x110d0908 + #xfbfc0309 + #xa09f9 + #xffaeaf3 + #xf4fafb04 + #x7f9f2f2 + #x5010c14 + #x40c0d0b + #x100e0d07 + #xf5fd060d + #x607fff7 + #xbefe8fb + #xebf6020e + #xfafef3 + #x50a0e0c + #x70a0906 + #xf120f07 + #xf6ff090d + #x6fff9fa + #xffeaf103 + #xe5fd0d0f + #x10001ea + #xd100805 + #x7040405 + #xf15100b + #xfa010a0a + #xfff6faff + #xf1f0fc05 + #xec090f04 + #x907f9e1 + #x160bfe05 + #x3fd030a + #x131a130f + #xfe020906 + #xf7f30201 + #xf3fdff00 + #xfc0e06f6 + #xc01ece6 + #x15fffc0f + #xf9fd0911 + #x181d170c + #xfe030705 + #xf6f70901 + #xfd02f9fb + #x807fbf0 + #x7f6e9f7 + #xafb0714 + #xf3040e12 + #x1b1e1902 + #xfe040205 + #xf6fc0b01 + #x5fdf2fb + #x5fdf3f3 + #xfaeff608 + #x304130d + #xf90e0e0c + #x1d1d14fa + #xff02ff0a + #xf7000b02 + #x3f5f1fe + #xfbf8f5f7 + #xf3f6080c + #x71010fc + #x60f0606 + #x1b1a0dfc + #xfffe10 + #xfa040c03 + #xfdf3f7ff + #xf5fcf7f6 + #xf6021306 + #x111401f1 + #xe050007 + #x16150a06 + #xfb0011 + #x70c03 + #xf9f8fdfe + #xfa02f4f1 + #xa1300 + #x180bf0f2 + #x8fa010e + #xf120e0f + #xfff9020b + #x40a0d02 + #xfdfefdfe + #x2feebef + #x60a1005 + #x14fbecfe + #xfdf90b14 + #xc12130e + #xfdf80006 + #x80d0c00 + #x200fc00 + #x3f3e8f3 + #x309140e + #x9f4f304 + #xf6031212 + #xd121305 + #xfaf6ff05 + #xc0e08fb + #x4fffd05 + #xfbececf9 + #xfd0a1d11 + #x1f9fd00 + #xfa0f1008 + #xc100dfc + #xf6f70007 + #xe0c00fa + #x3000007 + #xf2eff3fb + #x131f0a + #x602fcf8 + #x5100500 + #x90a06fe + #xf9fb0207 + #xe05fd00 + #x4030309 + #xf2f7f5fb + #x7181c00 + #xf03f4f8 + #x906fc01 + #x4030305 + #x305 + #x8fe0007 + #x9090508 + #xf8faf6fe + #xe1713fd + #x15fbeeff + #x1fcff0b + #xff080a + #x6020004 + #x1000803 + #xb050309 + #xfcf4fa07 + #xf1307ff + #x4eefa0a + #xf8ff0a14 + #xfe050dff + #x303 + #x30500 + #x7000206 + #xf9f80008 + #x60b0700 + #xfdf50408 + #xfb0d110f + #x808f5 + #x20703 + #x10002 + #xfc0305 + #xfa030401 + #x20a07fc + #xfe0300 + #xa170d08 + #x206fdf7 + #x4070904 + #xfeff0008 + #xfbfb0302 + #x10c00fa + #x50801f9 + #x400fcfe + #x14140a0a + #x100f900 + #xa0a0a06 + #xfdfe040b + #xfbfb00ff + #xb0cf7f6 + #x601fefd + #x4f8f804 + #x1410100f + #xfefcfc09 + #xb0b0c05 + #xfeff060b + #xf9f7fd00 + #xd04f4f8 + #xfd0102 + #xfef3fc0b + #xf16190e + #xfeff0008 + #xb0d0c01 + #xfdfc080c + #xf3f4fd02 + #x9fff7f8 + #xfcff0504 + #xf8f4030a + #x101f1a07 + #x301ff03 + #xb0e09ff + #xf7fb0e0c + #xeff70003 + #x3fff8f1 + #xff050400 + #xfaf80507 + #x161f1100 + #x9fff902 + #xa0c0502 + #xf2021307 + #xf7fdfefc + #xfdf2eb + #x608ffff + #xfcfb0505 + #x1c1f0900 + #x9f9fa09 + #x408050c + #xf60c1100 + #x4fcf6f5 + #xfcf9edf1 + #x904feff + #xfdfe0607 + #x1e190806 + #x3f7010e + #x70910 + #xff1008fe + #xbf4eff5 + #xf3f3ef00 + #x80002fc + #xfd01070a + #x19120b09 + #xfefc050e + #x90d0d + #x20b0100 + #x5ebf0fb + #xeaf3fa0c + #x50206f2 + #x5060a + #x130e0f08 + #x4050b + #x40a0b06 + #x40304 + #xfbeaf6ff + #xe8fa050d + #x60801e6 + #x706030a + #xe0f0e06 + #x6090309 + #x6090802 + #xfa010905 + #xf6f2fcfb + #xef040905 + #xc09f5e0 + #xc01020d + #xb0f0c09 + #xd0a0308 + #x4050404 + #xf9070d00 + #xfff9f7f4 + #xf9050200 + #xd01eae4 + #x9fe0713 + #x80f0d0d + #xf080607 + #xfe010309 + #xff0d07f9 + #x6f7eff3 + #xfb00fd05 + #x7f8ebee + #x2ff0e15 + #x80f0e0d + #xf0a0905 + #xf800060d + #x70bfff6 + #x7edebfa + #xf4f9010e + #xfef7f6f2 + #x108120f + #xa0e0c08 + #xe0d0a05 + #xf701090e + #x703f9f7 + #xfbe7f202 + #xedfd0c11 + #xfe00fcea + #xa0e0d07 + #xa0a0605 + #x10100a08 + #xf9040b0c + #xfbf9fa + #xefebfb06 + #xf0071209 + #x406f6e1 + #x130a0405 + #x6030309 + #x13130d0c + #xfc070a09 + #xf7f600fc + #xeff70003 + #xfd0f0af9 + #xc03e8e3 + #x15ff000c + #xfd000713 + #x1717140a + #xfe080707 + #xf2fa03fd + #xfbfdfdfd + #x80bfcf2 + #x8f7e4f3 + #x8fb0911 + #xf7050e16 + #x1b1a15ff + #xff07020b + #xf30005ff + #x4faf7fa + #x801f4f6 + #xfeeff002 + #xff02140f + #xfb0c1010 + #x1d1b10f7 + #x4ff0f + #xf6040500 + #x3f3f6fa + #xfdfaf3fe + #xf3f30407 + #x1101202 + #x60e0c09 + #x1d1a07f8 + #x2000014 + #xf9060601 + #xfbf0fafa + #xf8faf6fe + #xf4001000 + #xf1505f6 + #xe070507 + #x1a160303 + #x1fd0316 + #xfd090800 + #xf6f4fdf9 + #xfafdf5fa + #xfd0c10fa + #x190bf6f5 + #xafe040e + #x1512070d + #xfefd0510 + #x30b0aff + #xf8fafdfb + #x2fceff5 + #x5100bfd + #x17faeffc + #xfefa0a17 + #x12120e0d + #xfbfc0409 + #x60c0afc + #xfffcfc00 + #x3f2ebf7 + #x50e0c05 + #x9f0f604 + #xf7031217 + #x11131203 + #xf8fb0208 + #x90e07f8 + #x1fbfd04 + #xfdebedfd + #x20f140b + #xfff4ff02 + #xfb0e120e + #x10130cfa + #xf4f90208 + #xd0c02f6 + #xfb0108 + #xf3ecf2ff + #x1151d06 + #xfffd00fb + #x8120905 + #xd0e04fa + #xf3fc0509 + #xd07fff9 + #x1ff040a + #xf2f2f5ff + #x91d19fd + #x900f7f8 + #xd0a0004 + #x8080101 + #xf9000506 + #x8010000 + #x404050b + #xf7f5f500 + #x111e10f8 + #xef8f2fe + #x8fffe0c + #x3030508 + #xff010304 + #x2ff0704 + #xb07040a + #xfcf5f905 + #x121709fd + #x9f0f507 + #xfbfb0714 + #xfe020c05 + #x1000203 + #x10605ff + #x8020606 + #xf7f4010b + #x110f03ff + #xf4f40309 + #xfb051310 + #xb06f8 + #xfe020600 + #x2050000 + #x1ff0704 + #xf8fc0508 + #x90c05fc + #xf5ff0601 + #x7101107 + #x40bfcf6 + #x607ff + #x5 + #xfb000701 + #x60200 + #x80a01f9 + #xff0200fe + #x14100b06 + #x503f600 + #x70a0700 + #xfefe040a + #xf90004fe + #xa07fbfb + #x705fcfb + #x2fdfc02 + #x150d0c0b + #x1fdf90b + #xa0b0802 + #xfd00070b + #xf9fe00fc + #x1000f6fb + #x200fc05 + #xfef60008 + #x1010140c + #xfefd000d + #xb0c0900 + #xfc00090a + #xf5faffff + #xbfaf8fb + #xfd000009 + #xf8f70607 + #x121c1507 + #xff0109 + #xb0e06fe + #xf9000b0b + #xf1f80000 + #x6fbfaf6 + #xfd040207 + #xf6fc0a00 + #x181f1000 + #x4fe0007 + #xc0d0201 + #xf5050f0a + #xf2fb01fc + #x2fef5ee + #x4070003 + #xf8ff0800 + #x1f1f09ff + #x3f9fc0b + #xb09010a + #xf90e0a05 + #xfcfcfdf3 + #xfaecf0 + #xa04fe01 + #xf8010704 + #x1f170803 + #xfef60014 + #x705060f + #x1110302 + #x1f6f5f1 + #xfbf3eefe + #x80001fe + #xfa03070a + #x1e100b05 + #xfbfa0416 + #x5070b0c + #x80efe02 + #xfeeef3f6 + #xf2f0f90b + #x30203f6 + #xfe05090b + #x160f0e03 + #xfd000413 + #x70a0d06 + #x506ff05 + #xf3ecf7fc + #xeff6060e + #x408feeb + #x4060809 + #x11110d03 + #x304040f + #x80a0801 + #x30306 + #xedf1fcfc + #xf3000c06 + #xa09f1e4 + #x802060a + #xe120b07 + #x804040c + #x7070404 + #xfd070803 + #xf4f8faf5 + #xfd0607ff + #xe02e5e6 + #x7ff090f + #xd110b0d + #xb030509 + #x3030309 + #x10d05fe + #xfff8f3f2 + #x10002 + #x8f7e4f0 + #x1113 + #xd100e0d + #xb050706 + #xfe01050e + #x70dfdf9 + #xfff0eef5 + #xfbfb030b + #xf3eef5 + #xff071510 + #xd100e08 + #xb080605 + #xfb01090f + #xb07f7f8 + #xf6e8f100 + #xf4fc0e10 + #xfbfbf6f0 + #x50f1206 + #xe0d0904 + #xd0b0609 + #xfc050b0e + #x4fef6fa + #xebebfb05 + #xf4051408 + #x203f1e7 + #xf0d0902 + #xa080408 + #x100d0a0c + #xfe080a0c + #xfbfaf9fc + #xe9f40103 + #xfe0f0ffb + #xb02e5e6 + #x10030506 + #x3030611 + #x14101009 + #x10a070d + #xf5fcfdff + #xf3fc01fd + #x90f00f3 + #xcf7e0f2 + #x8fe090f + #xfd030f17 + #x16151300 + #x308020f + #xf600fd00 + #xfefcfdf6 + #xb03f6f7 + #x1ecea00 + #xfc04130e + #xfe091512 + #x1a190cf8 + #x5030115 + #xf904fd02 + #xfff6faf4 + #x3faf400 + #xf5effd05 + #xfd101506 + #x70d1208 + #x1c1802f9 + #x6ff0318 + #xfd070003 + #xf7f2fbf4 + #xfbf7fa04 + #xf3fe0a00 + #xb1608fa + #xd0a0904 + #x1c13fc01 + #x3fc0919 + #x80201 + #xf0f6fdf4 + #xfcf9fbff + #xfc0b09fa + #x170dfbf6 + #x902060b + #x190e020b + #xfe0a17 + #x30a04fe + #xf1fafcf7 + #xf8f7f9 + #x61103fb + #x16fdf4fb + #xff0b17 + #x150e0b0b + #xfc000911 + #x70c05fb + #xf8fcfbfc + #x2f2f2f8 + #xb0f0202 + #x8f2f801 + #xf902131b + #x13111003 + #xfafe040c + #xa0d03f8 + #xfdfafd01 + #xfceaf2fd + #x80f0b09 + #xfaf40001 + #xfe0d1712 + #x13130af9 + #xf6fd030d + #xc0dfff4 + #xfbfa0005 + #xf4e9f600 + #x7161305 + #xf8fc01fd + #x7121008 + #x120f00f8 + #xf4fd050c + #xd09fcf4 + #xfbfe0509 + #xf0eefa00 + #xc1d13fc + #xfbf9 + #x100b0504 + #xe09fc02 + #xf601060a + #x904fefa + #xff02060b + #xf5f2fa00 + #x151f0af8 + #x7faf5fd + #xc00020a + #x8040009 + #xfc030406 + #x40201ff + #x504070a + #xf9f1fa03 + #x191b02fa + #x2f1f605 + #x2fb0812 + #x2040708 + #xff020303 + #x1050600 + #xa040608 + #xf8f1000a + #x14120200 + #xf8f10009 + #xf9ff1114 + #x80aff + #xff010401 + #x50700fe + #x2030802 + #xf3fb070a + #x110a03fb + #xf0ff050a + #xd1602 + #x60afdf9 + #xff0604fd + #x401ff01 + #xfc040801 + #xfb020704 + #xc0b01f8 + #xfa050102 + #xe100eff + #x906f500 + #x40a02fd + #xff0208 + #xfa0705fe + #x60300fd + #xc06fafc + #x100fd03 + #x120b0a03 + #x6fdf80c + #xa0a0201 + #xfd00070b + #xfc0500fc + #xcfefcfb + #x700f905 + #xfffa0006 + #xf0c0f08 + #xf90011 + #xc0b0401 + #xfd02090b + #xfa00fefc + #x9f7fcfc + #xffff0e + #xf7fb0604 + #xf151306 + #xfefd060d + #xc0b0300 + #xfc03090c + #xf5fcfffd + #x3f8fdf8 + #x1030d + #xf50009fe + #x191d0f00 + #xfe030a + #xe0b0000 + #xfa060a0d + #xf3fe00f9 + #xfcfaf2 + #x4050308 + #xf70506fc + #x1f1a08fe + #xfc000f + #xf060006 + #xfd0c090c + #xf700fff2 + #x1fbf0f0 + #x8020004 + #xf8050300 + #x1f1607ff + #xfdf90016 + #xc02040c + #x60f0208 + #xfbfcf7ef + #xfff2eff9 + #x6000102 + #xfb040509 + #x1e100a00 + #xf8fa051b + #x9040b08 + #xd0bfe06 + #xf8f5f2f5 + #xf7edf905 + #x30101fd + #xff05080b + #x190f0dff + #xf9fe081b + #x8070d03 + #xc04fe07 + #xeff0f5fd + #xf1f10808 + #x307fdf3 + #x2060a08 + #x12130aff + #x10815 + #x90a0900 + #x4000208 + #xeaf3faff + #xf4fe0f01 + #xa08f0ec + #x6050906 + #x12130803 + #x4010810 + #x9080402 + #x40507 + #xeef9fbf9 + #xfc070bf9 + #xf00e4ec + #x4030a0b + #x11110a0a + #x501070c + #x7040308 + #x30b0402 + #xf7faf5f3 + #x20503fb + #xbf3e1f4 + #xff031011 + #x110f0e0d + #x502060a + #x200060d + #xa0bfdfe + #xfbf4eef6 + #xfe0304 + #xeeeafa + #xfc0a1510 + #x11101006 + #x6050409 + #xff010a0e + #xd04f7fc + #xf4ecf0ff + #xf8fd0d0a + #xfbf3f2f7 + #x3111408 + #x10100c01 + #x906040b + #xff040c0e + #x9fef4fc + #xe9ebf806 + #xf6051705 + #xfdf0ef + #xc120c00 + #xf0b0505 + #xb07080d + #x80c0d + #xf9f5ff + #xe6f40004 + #xfd1013f8 + #x9fee5ec + #xe0a0602 + #x805070e + #xd0b0d0c + #x409080e + #xf9faf702 + #xeefc02fd + #x71205f0 + #xdf4e0f3 + #x603080c + #x2030f14 + #x10110f04 + #x8060612 + #xfafff805 + #xf9fffff5 + #xd09f9f4 + #x3e8e600 + #xfc051011 + #x71711 + #x15160bfc + #x9010515 + #xfe00fa06 + #xfbfbfbf2 + #x7fcf8fe + #xf6e9f806 + #xfd101409 + #x50d1606 + #x1b16fffc + #x8fe0818 + #x1fd05 + #xf5f9f9f2 + #xfef6fd02 + #xf1f70403 + #xa160dfe + #xb0e0d00 + #x1c0ff902 + #x4fd0d1a + #x2020002 + #xeff9f8f4 + #xfbf702ff + #xfb0703fc + #x160ffff6 + #xa080506 + #x1908fe0a + #xff101a + #x50501ff + #xf0fcf7f7 + #xfef900f7 + #x70efdfc + #x1501f8f9 + #x1030a15 + #x1508090a + #xfd010f17 + #x80800fd + #xf5fcf7fb + #xfff5f9f4 + #xe0bfc02 + #x8f7f900 + #xfb05141b + #x130d0e01 + #xfc010a14 + #xb0afffa + #xfafbf900 + #xfbedf7f9 + #xd090208 + #xf9f50003 + #xfd0c1b15 + #x13110af9 + #xfbfe0712 + #xd0afcf7 + #xf9faff04 + #xf2ebfafe + #xc0f0d05 + #xf4fd0100 + #x6131707 + #x130ffff9 + #xf7fe0712 + #xe07f8f5 + #xf8fe0307 + #xeeeefefe + #x10180efd + #xfb01fdfd + #xf100c01 + #x1107f900 + #xf700080f + #xc04f7f8 + #xfa02060a + #xf0f2fffd + #x191c07f7 + #x2fdf500 + #xe050505 + #xb02fd0b + #xfc04060c + #x702fbfd + #x105070a + #xf4f2fdff + #x1e1800f9 + #xf4f608 + #x4fe0a0d + #x501050c + #x30408 + #x404ffff + #x6040707 + #xf4f30005 + #x1c10fefe + #xf5f2fd0e + #xfd00140f + #x2060804 + #x10303 + #x50700fe + #x5030804 + #xf2f7060b + #x130b03fe + #xeefb050b + #xfc071606 + #x50b02fc + #xff0404fe + #x701fd00 + #xff080703 + #xf5020a05 + #xf0801f4 + #xf902030e + #x7150df6 + #xa03f9fe + #x3080000 + #x2fd0007 + #xfe0a0501 + #x505fd + #xd07fcf8 + #x202ff09 + #xe1006fb + #x8fbf909 + #xb09fe03 + #xfeff060c + #x10900ff + #x600fffa + #xa00f903 + #x2fd0009 + #xc0d0903 + #x1f80210 + #xd060005 + #xfe02090c + #x304fcfd + #x4fbfdfa + #x3fb000e + #xfbfc0407 + #xc110e04 + #xfdfb0a0e + #xc060103 + #xfe04090c + #xfefffcfd + #xfefafef9 + #xfe080e + #xf6030700 + #x14180e00 + #xfcff090b + #xd060100 + #xfe05090e + #xf8fefefa + #xfdfefbf4 + #x2020909 + #xfa0802fc + #x1e1908fb + #xfd000310 + #xe040002 + #x80a0f + #xf801fdf5 + #xfffef4f0 + #x7020705 + #xff08ff01 + #x1f1105fb + #xfcfd0319 + #xc000304 + #x60a070b + #xfb00f7f1 + #xf6f0f4 + #x5000405 + #xff050009 + #x1d0e05fb + #xfafb081e + #x7000a04 + #xe070407 + #xfaf9eff8 + #xfaedf7fd + #x1000302 + #x4070b + #x191106fb + #xf9fd0f1f + #x4070eff + #xd010306 + #xf3f3f001 + #xf2f10400 + #x204fffb + #x3070b07 + #x141406fd + #xfc00111a + #x50a0afe + #x6fd0408 + #xecf3f705 + #xf1ff0dfa + #x905f5f2 + #x5080a05 + #x15140400 + #xff000e12 + #x7090500 + #x1000608 + #xeff8f900 + #xf90b0af2 + #xefce9f0 + #x4070909 + #x150f0607 + #x10b10 + #x7050404 + #x2050505 + #xf6faf6fa + #x10c02f2 + #xbf0e5f6 + #x70d11 + #x140d0c08 + #x103080f + #x4010608 + #x9080101 + #xfbf6effa + #x20400fb + #xe8ebfd + #xfe0b1313 + #x12100f04 + #x203060d + #x10b0b + #xe02fbfe + #xf6eeee01 + #xfc000902 + #xf7ecf4fd + #x313140a + #x12120bff + #x403050e + #xff040e0a + #xafbf7fe + #xecebf508 + #xf8071200 + #xfaf5f4f6 + #xd150e01 + #x110f0501 + #x604080f + #x70d0b + #x1f7f600 + #xe6f1ff09 + #xfc1511f4 + #x4f8ebef + #x100f0501 + #xd070409 + #x7070c0e + #x5090c0c + #xfcf7f805 + #xecfa0201 + #x71705eb + #x9efe4f5 + #x908050a + #x6030e11 + #xb0d0e09 + #x8070a0e + #xfbf8fa08 + #xf600fff8 + #xd0efaee + #x1e5e800 + #x1070c13 + #x209170e + #x11130801 + #x9020b11 + #xfefafb07 + #xfbfff9f4 + #xb01f7f8 + #xf4e4f607 + #xfe0f1310 + #x4101602 + #x1813fffe + #x6ff0d15 + #xfb0005 + #xf8fbf5f6 + #x1f9ffff + #xeef20206 + #xa151001 + #xa130cfd + #x1a0cf902 + #x1001118 + #x2fd0301 + #xf3faf3fa + #xfafa05fc + #xf6010200 + #x171104f8 + #xb0e0403 + #x1804fd08 + #xfd03141a + #x2fe03fe + #xf3fbf3fc + #xfafe03f4 + #x508fcfd + #x1605faf8 + #x5070611 + #x11020609 + #xfc051419 + #x50200fd + #xf8faf3ff + #xfbfdfcf0 + #xf05fa00 + #x9fbfa00 + #x7131a + #xe080b02 + #xfc051117 + #x803fefc + #xfbf7f502 + #xf8f7f7f3 + #xe010003 + #xfbf9ff08 + #xff0e1c13 + #x100f07fa + #xfd020e15 + #xb05fcfa + #xfaf8fb05 + #xf2f1f9f9 + #xa050903 + #xf5fe0107 + #x6161a05 + #x120efff8 + #xfaff0d15 + #xd03f8f7 + #xf8fb0009 + #xecf4fefa + #xf100dfb + #xfb01fe03 + #xf1610fe + #x1106f800 + #xf9010d13 + #xc00f5f9 + #xfb00030b + #xedf8fff8 + #x181606f5 + #x1fff805 + #xf0f07ff + #xcfffd0a + #xfd030b11 + #x900f5fe + #x4050b + #xf0f9fdfa + #x1f14fff5 + #xf6f60d + #x7050806 + #x5ff050e + #x103080c + #x700fa00 + #x5040609 + #xf1f7fe00 + #x1d0bfff9 + #xf7f2fc15 + #xfe041209 + #x2030a08 + #x2010508 + #x702fdff + #x4040705 + #xf0f90305 + #x160702f9 + #xf0f80316 + #xfc0c1701 + #x40706fe + #x20402 + #x803fdff + #x60703 + #xf1000907 + #xf0804f6 + #xf4000510 + #x11311f8 + #x907fcfc + #x10701fe + #x3fdff07 + #x3090507 + #xfc0807ff + #xd07fbf3 + #x1000510 + #xd1600f5 + #x7fdfc02 + #xa03fc06 + #xfefd040d + #x70a0103 + #x30600fa + #xb01f8fd + #x4fc020e + #xd0e0000 + #xf7020b + #xe01ff0a + #xfd02090d + #xb04fdff + #x100fbfc + #x4fb0007 + #xfefc060c + #xb0e0703 + #xfafb0b0c + #xb000207 + #xff050b0b + #x6fffcfe + #xfdfefbfe + #xfffb0b0b + #xfa010605 + #x10130aff + #xfa010c0a + #x9020302 + #x60a0c + #xfffcfdfc + #xfa00fbfa + #xfe011005 + #xfe070100 + #x191506fa + #xfc03070f + #xa0302ff + #x1060c0d + #xfcfffbf9 + #xff00f5f4 + #x2040c01 + #x306fd01 + #x1e1101f9 + #xfe000619 + #x9000200 + #x5070e0a + #xfe00f6f8 + #xf9f0f3 + #x3020803 + #x601fe08 + #x1a0d00fb + #xfcfe0b1f + #x40106ff + #x8060b05 + #xfffaeffd + #xfdf1f3f8 + #x10605 + #x401050b + #x160f01fb + #xfafe111f + #x609fc + #x8010803 + #xf9f1ef07 + #xf2f2fffc + #x10403ff + #x4060b06 + #x1512fffc + #xfa00181b + #x10c08fa + #x4fe0704 + #xf3eff60a + #xefff06f7 + #x604fcf6 + #x5090b04 + #x16120000 + #xfc031615 + #x50b04fd + #xffff0806 + #xf1f3fc07 + #xf70e04ef + #xbfdf2f0 + #x50a0709 + #x180d0204 + #xfe040f13 + #x6070300 + #xff030805 + #xf7f7f900 + #x110fdee + #x7efecf5 + #x3090a12 + #x160b0906 + #xff050b13 + #x4040602 + #x4040502 + #xfbf5f3fe + #x509faf5 + #xfde7effd + #x20b1114 + #x130f0c01 + #x40812 + #x40903 + #x80200ff + #xf9eef002 + #x300fe + #xf2e8f7ff + #x512150e + #x131308fd + #x2030711 + #xfe060c05 + #x7fcfcfe + #xefe9f60c + #xfc090bfd + #xf3f1f9fa + #xe160f01 + #x131102ff + #x2020911 + #xff0a0d06 + #xf7fa00 + #xe9edff0d + #xff140cf3 + #xfcf5f3f3 + #x13130600 + #x110a0207 + #x3050d11 + #x30b0c07 + #xfaf5fb04 + #xebf80405 + #x91b02ea + #x2efeaf4 + #x10090309 + #xa040a0f + #x50b0e0d + #x7090b07 + #xf9f5fe07 + #xf4ff00fd + #x1213f6ea + #xfce4ecff + #x7060a13 + #x308130d + #xd110906 + #x6060c0a + #xfaf60106 + #xfcfffafa + #x1003f3f2 + #xefe3f608 + #x40b1210 + #x4131404 + #x15110101 + #x3040e0e + #xfbf70302 + #xfbfbf4fa + #x5fbfafa + #xe9ee0109 + #xa131403 + #x9190afd + #x1809fa01 + #xfe051214 + #xfbf906fe + #xf9f7f2ff + #xfcfe01fa + #xf1fd0302 + #x16140af7 + #xe120001 + #x1401fe06 + #xfb091518 + #xfdfd04fc + #xf9f6f300 + #xf90202f4 + #x3fffd + #x170afef7 + #xb09010f + #xf000508 + #xfb0c161a + #xff0001fc + #xfbf5f401 + #xfc04faef + #xa00fcfd + #xcfffa00 + #x4060f19 + #xa040803 + #xfd0b1517 + #x301fffc + #xfcf3f503 + #xfafff5f2 + #xafc0000 + #xfffbff0b + #x30e1c15 + #xd0c03fd + #xfe091314 + #x600fdfb + #xfbf3f906 + #xf5f9f5f7 + #x60008fe + #xf9fe030d + #x7191c06 + #x110bfcfa + #xfc061213 + #x800fbf8 + #xf8f6ff0a + #xf0f8fafa + #x7090cf9 + #xfc00020a + #x101d10fc + #x1005f7ff + #xf9041214 + #x8fef7f9 + #xfafc030d + #xeffcfcf7 + #x121106f2 + #x2fffd0a + #x131505fd + #xbfffb08 + #xfb071113 + #x7fbf6fd + #x50d + #xf1fefaf7 + #x1a1000f1 + #x1f7fb10 + #xd0c0402 + #x4fd050d + #x60d0f + #x5fbf800 + #x402070b + #xf3fcf9fc + #x1b0afdf4 + #xfaf2ff1b + #x3090c06 + #x10c08 + #x2030b09 + #x6fdfc00 + #x4020709 + #xf1fbff02 + #x140501f5 + #xf3f6061d + #xf11ff + #x2070900 + #x20804 + #x6fefdff + #x1050708 + #xf2000604 + #xd0601f1 + #xf5fd0a18 + #x3180cf6 + #x60702fb + #x50402 + #x5fefd03 + #x1090608 + #xf8060801 + #xc08fef1 + #xfe010712 + #xa1902f3 + #x800fcff + #x707fe03 + #xfefd030c + #xa080607 + #x30900ff + #xc02f4f7 + #xb10 + #x130cfaff + #x1fc0007 + #xbfeff0a + #xfd000a0c + #xe040101 + #x403fa00 + #x5fbfb01 + #xfefc0a0f + #xe080105 + #xfafc070a + #x7fc0509 + #xff060c08 + #xafffffe + #xfffa04 + #xfdfc0905 + #xfa000a09 + #xf0d0701 + #xf8030b09 + #x3000701 + #x1080c07 + #x1fbfdfd + #xfcfffb03 + #xfb031002 + #xff050402 + #x151104fb + #xfd07080b + #x40204fc + #x2070d09 + #xfdfdfdfc + #xff00f8fc + #xff090dfe + #x603ff00 + #x1a0ffffa + #x40716 + #x50301fb + #x3081007 + #xfffef8fb + #x2fcf3f8 + #x2090800 + #x9ffff05 + #x180bfdfe + #xff010d1d + #x20101fd + #x5090f02 + #x1f9f3ff + #xf4f2f9 + #x1060604 + #x5fd0407 + #x140bfd00 + #xfc00161f + #xff0503fc + #x4060b00 + #xffeff206 + #xf5f1f8fc + #x50701 + #x3030b05 + #x140ffe00 + #xfa031b1b + #xb03fa + #x20602 + #xf6ecfa0b + #xeffdfef8 + #x50602f7 + #x40a0b03 + #x180cfd00 + #xfb061a17 + #x40b00fa + #xfc020605 + #xf1f00007 + #xf70afef3 + #x800f9f0 + #x60b0707 + #x1a090003 + #xfc081317 + #x70800fc + #xfd040705 + #xf4f60000 + #x40ef7ef + #x5f5f1f2 + #x7080910 + #x15070505 + #xff090e18 + #x60502fd + #x60602 + #xf9f5fafe + #xb08f4f4 + #xf9ebf2fc + #x60a1013 + #x120b0802 + #x60c16 + #x20505fe + #x40403ff + #xf9eff602 + #x702f9fb + #xeeeaf801 + #x810160c + #x121105ff + #x1040c14 + #x80700 + #x400fffd + #xf1e9f90a + #x10602fe + #xecf1fcfe + #xe161200 + #x151200ff + #x1020c13 + #xb0801 + #xfffbfb00 + #xe9ec010c + #x41205f5 + #xf4f6f8f7 + #x151408fc + #x1409fe07 + #x50f14 + #x30d0902 + #xfaf7fc03 + #xe9f50708 + #xd18feec + #xfbf2f0f6 + #x140c0302 + #xd04050f + #x30a1012 + #x70d0902 + #xf6f60006 + #xf1fe05ff + #x1712f3e9 + #xf7e9edff + #xd05090d + #x508100f + #xa0e0c0b + #x70a0903 + #xf6f70304 + #xfafffefc + #x1504eff0 + #xece5f509 + #x708130d + #x5131007 + #x120e0504 + #x3090a09 + #xf6f90600 + #xfefbf8fd + #xcfbf5f7 + #xe5ed000d + #xa111701 + #xb190801 + #x16080001 + #xff0a0e11 + #xf6fc06fc + #xfcf5f5ff + #xfdfcfa + #xebfb0406 + #x13160ff3 + #x1316ff03 + #x1100fe04 + #xfd0d1218 + #xf7ff01fb + #xfaf2f700 + #xfc04fdf6 + #xfa0101fe + #x160f02f3 + #x1207000f + #x9fe0309 + #xff101519 + #xf900fefd + #xfaf1f9ff + #xff07f8f4 + #x400fefb + #xf03fbff + #xa030a18 + #x7030607 + #x1111616 + #xff01fcfe + #xfaf1fa00 + #x103f2f6 + #x4fb00fd + #x3fcff0a + #x40a1915 + #x9080200 + #x20f1512 + #x100fcfd + #xf7f0fc03 + #xfdfbf3fa + #xfd05fd + #xfdfe060e + #x9181b08 + #xf09fafe + #xd1511 + #x2fffcfa + #xf5f30007 + #xf7f8f7fa + #x10607f8 + #xfe00080b + #x121f10fe + #x1001f600 + #xfd0c1413 + #x3fef9f8 + #xf6f8040b + #xf4fcfaf8 + #xa0f03f2 + #x2000409 + #x181b03fc + #x9fbf907 + #xfc0c1413 + #x3fbf6fc + #xfcfd080c + #xf7fff8f8 + #x150efdef + #x2fb0210 + #x150e0002 + #x2fb020d + #xc120f + #x2f8f800 + #x90c + #xf8fdf7fc + #x1608faf0 + #xfbf40519 + #xb090605 + #xff000a0c + #x1090f09 + #x1f9fdff + #x101090b + #xf7fbfa02 + #x1005fcf2 + #xf3f60d1f + #x50e0c00 + #x60b03 + #x70b03 + #x1fafefe + #x3090b + #xf6fd0105 + #xb06fdf0 + #xf4fc121b + #x81708f8 + #x40804fd + #xfe070701 + #xfbfe00 + #x106080b + #xf9040602 + #xa08f9ee + #xfa001113 + #xf18fff5 + #x705fffd + #x3060203 + #xfffc0009 + #x709070a + #x902ff + #xd06f4f4 + #x1000b11 + #x1312f8fa + #x3fefe03 + #xa01fe08 + #xfc010a09 + #xd070700 + #x704fc06 + #x8faf4ff + #xfb030f0f + #x1300fe02 + #xfeff000e + #x4fd0505 + #xff060d04 + #xb0102fc + #x3fdfc0c + #xfff90003 + #xf9020e0c + #xd040603 + #xfc03060b + #xfeff0900 + #x2090c01 + #x1fefffc + #xfb000b + #xfa030a01 + #xfd060a03 + #x110c05fd + #xff08060b + #xff0405fa + #x3090b03 + #xfcfdfefd + #xfc0004 + #xff0d08fd + #x40502fe + #x160dfffc + #x2070711 + #x20600f9 + #x30a0d05 + #xfdfdfbfe + #x3fbfafe + #x50e02ff + #x7ff0000 + #x1607fa01 + #x3040c19 + #x303fefc + #x40c0d02 + #xfaf7fe + #x1f5f5fd + #x50a0204 + #x3fc0403 + #x1306fd05 + #xff03161b + #x3fefe + #x50d0900 + #xfef1f702 + #xfaf2f6ff + #x3080603 + #xff010901 + #x1206ff04 + #xfc071c18 + #x5fffd + #x4090301 + #xf6edfe07 + #xf2f7fbfe + #x40807fa + #xa0a00 + #x1606ff02 + #xfc0c1b17 + #x508fefb + #x60106 + #xeef10502 + #xf702fbf7 + #x705fef1 + #x70c0605 + #x18020003 + #xfe0d161a + #xa05fdfa + #xfe060307 + #xeef806fe + #x408f6f2 + #x5fcf4f2 + #xa09070c + #x15030204 + #xc121c + #x904fefa + #x70405 + #xf4fafffb + #xe02f2f4 + #xfbf2f1fd + #x808110f + #xf070504 + #x2091119 + #x60400fb + #x4070201 + #xf5f4fbfe + #xcfcf6fa + #xeeeef704 + #x90f1707 + #x110d0301 + #x2061116 + #x30600fe + #x404ff00 + #xf0eefc04 + #x5fffefd + #xebf3fc03 + #xd1615fb + #x150d0002 + #x41114 + #x3080300 + #xfffb01 + #xe7ee0308 + #x50902f7 + #xf0f9fcfc + #x14170af5 + #x1607fe07 + #x51116 + #x70c0400 + #xfbfafb05 + #xe5f70a04 + #xf11fdee + #xf8f7f3fb + #x160f03fc + #xf000310 + #xa1216 + #xa0c04ff + #xf7f8ff07 + #xecff08ff + #x190ff4e9 + #xf6efee02 + #xf070704 + #x7040c13 + #x70e1111 + #xa0c0400 + #xf4f90206 + #xf60101fa + #x1b00eded + #xece9f30f + #x7081205 + #x60f100d + #x100d0b07 + #x80a0306 + #xf4fc0402 + #xfcfdfcfa + #xff8f1f5 + #xe5eeff13 + #x81117fb + #xe170805 + #x12070402 + #x40a070f + #xf4ff01ff + #xfcf6fbfa + #x3f9f8fa + #xe9f8050d + #xf1911ef + #x16110006 + #xe010005 + #x30c0d17 + #xf702feff + #xf9f2fcfb + #xff01fbfa + #xf6000402 + #x161603ed + #x1806000f + #x6fe020b + #x50f131a + #xfb02f901 + #xf5f4fef9 + #x204f7f8 + #xfffc + #x1208fbfa + #xf000b18 + #x201040d + #x8111614 + #xfd00f802 + #xf4f4fefa + #x700f3f9 + #x1fdfdfd + #x700fe06 + #x5061716 + #x5050207 + #x912160f + #xf902 + #xf2f4fefd + #x4f8f5fc + #xfdfd0000 + #xff080b + #x7151a0b + #xb05fc00 + #x711130f + #xfefaff + #xf0f50001 + #xfef5f9fc + #xfd0402fd + #xff020c06 + #x131f0f00 + #xdfff802 + #x4101411 + #xfef8fc + #xf0f80405 + #xf9f8fbf8 + #x50bfff7 + #x1040a04 + #x1c1b05ff + #x8f8f90a + #x2111413 + #xfcf5fd + #xf5fd0807 + #xfafcf9f7 + #x100df9f2 + #x1000609 + #x1b0f0002 + #xf70010 + #x4111310 + #xf9f600 + #xfb000b08 + #xfdfbf6fb + #x1407f5f3 + #xfbfb0a15 + #x12070405 + #xfdfe0711 + #x50f1008 + #xfef7fb00 + #xfd020b08 + #xfbf8fa00 + #xf03f5f3 + #xf3fa111b + #xa0a0900 + #x5090a + #x30d0c03 + #xfdf9fdfe + #xfd040c08 + #xf9f80103 + #xa04f6f4 + #xf0001918 + #xc1207fa + #x4080502 + #xb0700 + #xfcfbfdff + #xff060c09 + #xfa000501 + #xa06f4f1 + #xf6051812 + #x1414fef5 + #x707ff01 + #x30a0301 + #xfbfcfe05 + #x4070b07 + #x60300 + #xe04eff3 + #xfb06130e + #x180bf7f9 + #x502fc06 + #x7030105 + #xfcff050a + #xc080904 + #x607fe02 + #xbfdf1fc + #xfd040f0f + #x1501fb00 + #xffff0b + #x7fe0207 + #xff060c00 + #x90805fb + #x6fd000d + #xf6fa04 + #xfa09100f + #xafd03fe + #x412 + #xfb010800 + #x30a0afc + #x20200fb + #xf80710 + #xfbff0303 + #xfc0a0e05 + #x90605fb + #x105060e + #xfa0605fa + #x60a0700 + #xfb00fdfd + #xfefa0907 + #xb0400 + #x20906fc + #x100a00fc + #x506060f + #x8fffa + #x60b0703 + #xfbfffcff + #xfc03ff + #x80eff00 + #x50300fb + #x1306fd02 + #x5040b15 + #x505fbfd + #x60c0904 + #xfefcfaff + #xf8fcfe + #xd0afe05 + #xff0100 + #x1100ff07 + #x1041418 + #x400fb00 + #x80f0601 + #xfdf5fa00 + #xfaf2fb00 + #x9070306 + #xfb010601 + #xf000306 + #xff0a1817 + #x200fd00 + #x90d0002 + #xf5f1fe01 + #xf5f4fd00 + #x70807ff + #xfd090700 + #x10000303 + #xfe0f1816 + #x501fefd + #x707fe07 + #xebf50400 + #xf6fbfffb + #x80901f4 + #x50c0301 + #x13000101 + #x111161a + #xa01fdfa + #x305010a + #xeafe06fc + #x1fff9f4 + #x602f5f4 + #xb080508 + #x10000204 + #x410161d + #xa00fcf9 + #x3050408 + #xf00000f9 + #xbfcf5f2 + #xf8f0ff + #xa080d0c + #xc040405 + #x40c171b + #x800fcfb + #x5060206 + #xf4fcfafb + #xaf6f6f6 + #xf5f2f509 + #x80f1504 + #xd090305 + #x40a1716 + #x602fcfe + #x604ff04 + #xf0f4fc00 + #x4f7fdfb + #xeef4fd09 + #xd1714f8 + #x12090004 + #x81515 + #x603ff00 + #x400fb05 + #xe8f30104 + #x30101f7 + #xf1faff03 + #x131a0af0 + #x1503ff09 + #xff091418 + #x9050000 + #xfffbfb08 + #xe4fa0802 + #xc0a00ed + #xf8fbf8ff + #x181300f3 + #xffe0310 + #xb1419 + #xc0801fd + #xfaf9fe0a + #xe90207fd + #x1709f5e7 + #xf8f3f106 + #x120902fd + #x6000c15 + #x60e1514 + #xd08fffd + #xf6fa020a + #xf40502f9 + #x1800efe9 + #xf1ecf412 + #x9080c00 + #x50a1011 + #xc0f110b + #xc07ff03 + #xf5fd0207 + #xfc01fdf6 + #x10f5eff1 + #xe9ed0019 + #x51214f7 + #xd120c0a + #xf0b0904 + #xa05010e + #xf700ff05 + #xfbfbfcf6 + #x4f5f6f9 + #xeaf60914 + #xc1b0deb + #x170f0407 + #xb040206 + #x9060916 + #xfa01fb04 + #xf7f8fdf4 + #xfffcfafb + #xf3ff0908 + #x151a00e9 + #x1803020c + #x400010f + #xa0a1116 + #xfe00f707 + #xf2f8fef3 + #x200fafa + #xfd010200 + #x170df7f3 + #xffc0a15 + #x1010313 + #xd0e1613 + #xfff809 + #xf1fafdf5 + #x8fdf8f9 + #xfffefc01 + #xe01fb00 + #x5041616 + #x304050d + #xe12160c + #x1fcfa08 + #xf0fafcf9 + #x7f6f8fa + #xfdfdfd04 + #x3000606 + #x3121a0d + #x7030104 + #xd12140c + #xfbfb06 + #xeef9fefd + #xf4fcf9 + #xfc01ff04 + #x50e02 + #x111d1103 + #x9fdfc02 + #xa11120f + #xfcf903 + #xeefb0100 + #xfaf6fdf5 + #x307fdfe + #x1090bfe + #x1c1a0500 + #x3f7fc0b + #x9121412 + #xfbf503 + #xf0ff0501 + #xfafafbf3 + #xc07f9f9 + #x2070703 + #x1e0e0102 + #xfef60015 + #xa13140f + #xf8f405 + #xf6020803 + #xfdfaf8f6 + #x1105f4f7 + #xff02080e + #x15050405 + #xfbfa0617 + #xc131109 + #xfdf6f805 + #xfa050a05 + #xfdf6fbfc + #xe00f2f9 + #xf6001217 + #xc070900 + #xfe010a12 + #xa100c02 + #xfbf8fb02 + #xfc060b05 + #xf9f600ff + #xbfff3f9 + #xf2041916 + #xc0d06f9 + #x206080a + #x70e0700 + #xfafafa01 + #xfd080c04 + #xf8fd05ff + #xb01f2f6 + #xf50d1a0f + #x140efff4 + #x7060107 + #x70b0202 + #xfafcfb05 + #x10a0d03 + #xfd0303fe + #xe00eff5 + #xfa10150d + #x1908f9f6 + #x703fe0b + #xa060003 + #xfbfd0108 + #x60b0cff + #x304ff00 + #xdf9effb + #xfd0d100f + #x16fefafb + #x400ff13 + #x8000104 + #xfe030b04 + #xa0a08fd + #x700000a + #x4f5f601 + #xfa091011 + #xdfa0100 + #x113 + #x602 + #x30a07fb + #x607fffc + #xfa090d + #xfaf80006 + #xe1008 + #x20402f8 + #xb0e + #xfb060300 + #x80b02fd + #x3fcff + #xfbfc0f08 + #xff040202 + #x30e09fd + #x90afef7 + #x303090c + #x109fffd + #x8090204 + #xfe00fc01 + #xfc010aff + #xa09ff00 + #x60800fb + #xe05fc00 + #x5030b11 + #x805fa00 + #x80a0407 + #xfefb00 + #xfe0001fc + #xf05fe03 + #x202fe00 + #xe000005 + #x3051115 + #x800fa03 + #xb0c0504 + #xfef9fa00 + #xfbf9fdfe + #xd020305 + #xfb010106 + #xaff0705 + #x91615 + #x3fcfd03 + #xd0b0102 + #xf6f6fc01 + #xf5f60000 + #x8050801 + #xfd070304 + #xa010700 + #x10f1615 + #x2fd00ff + #xd06ff04 + #xeef80002 + #xf4fa02fb + #x80905f9 + #x50a0104 + #xb0204fe + #x4121517 + #x4fffffb + #x7010108 + #xeb0002ff + #xfcfdfff2 + #xa06f9f6 + #xc070107 + #xa000102 + #x712161b + #x6fffcf8 + #x5020709 + #xf203fefd + #x4faf8ed + #x4fcf100 + #xb070909 + #x7030206 + #x8101c18 + #x6fefafb + #x6040607 + #xf800f8fd + #x5f6f6f0 + #xfcf3f60a + #x80e1204 + #x9060307 + #x60f1c13 + #x5fefafe + #x7030206 + #xf6f9f800 + #xf6faf5 + #xf3f3000d + #xb180ff9 + #xf060206 + #x30e1813 + #x5fefc00 + #x6000006 + #xeef7fe04 + #xfefd00f4 + #xf3f90307 + #x151b06f0 + #x11010108 + #xd1616 + #x600ffff + #x1fbff08 + #xe8fb0303 + #x406ffec + #xf8fcff03 + #x1a14fcf0 + #xdfd0410 + #x10f1719 + #x90300fc + #xfcf8000b + #xeb030500 + #xf08f7e4 + #xfbf7f708 + #x1709fbf8 + #x4fe0c16 + #x5111816 + #xb04fdfb + #xf8f9030c + #xf60700fa + #x1200eee5 + #xf5eef914 + #xc0704fc + #x2081214 + #xb12160c + #xc02fc00 + #xf7fd050b + #xfe04fcf6 + #xcf7eced + #xedec041c + #x70f0bf7 + #xa0f110d + #xd100d05 + #xb00ff09 + #xf9000209 + #xfefffaf4 + #x1f4f2f5 + #xeaf41117 + #xc1b07ec + #x140e0907 + #xb090409 + #x8000712 + #xfd00fe08 + #xf8fcfaf2 + #xfdf8f8f9 + #xf1fe100c + #x181afbe8 + #x1505050a + #x5030211 + #x8041113 + #xfdfc09 + #xf4fdf9f3 + #xfcfbf8 + #xfa020903 + #x1d0ef3f0 + #xdff0a11 + #x1020517 + #xa0b160c + #xf9fd0b + #xf1fef8f5 + #x6fcfbf6 + #xff000003 + #x1601f5fc + #x2011316 + #x2030812 + #xd101608 + #xfff7000c + #xf4fdf6fa + #x6f7fbf6 + #xfdfdfe09 + #x8000100 + #x111711 + #x5020705 + #xd131308 + #xfff8000a + #xf4fcf8fe + #xfff5fdf5 + #xfcfe000a + #x1060aff + #xc1b1307 + #x5ff0102 + #xd12110c + #xfef8fe09 + #xf2fcfc00 + #xf8f8fef2 + #x10004 + #x20d08fc + #x1c190802 + #xf9fe0a + #xc12130f + #xfff8fa09 + #xf3ff0000 + #xf8fcfbef + #x903fdfe + #x60d0400 + #x1e0e0302 + #xf9f60215 + #xe13150c + #xfff5f80a + #xf6020201 + #xfbfcf7ef + #xdfff8fb + #x407050b + #x18050403 + #xf7fa081b + #xf141305 + #xfcf3fa0b + #xfa050503 + #xfbf8f8f5 + #xbfcf5fd + #xfe050d14 + #xd050701 + #xfa000d17 + #xf120c01 + #xf9f5fc09 + #xfd070703 + #xf7f7fdf9 + #x8faf6fd + #xf8091614 + #xb0c06f9 + #x40d0f + #xd0e0700 + #xf9f8fc08 + #xa0a01 + #xf6fc01fa + #x8faf6fb + #xf9111810 + #x100e00f3 + #x306080b + #xc0b0301 + #xfaf9fa09 + #x20c0bff + #xf90401fa + #xafaf3f7 + #x16140d + #x1606f8f2 + #x6040210 + #xd060004 + #xfbfaff0b + #x60e0afd + #x5fefd + #xaf5f1f9 + #x3130f11 + #x12fef9f7 + #x5000316 + #xb010005 + #xfdff0606 + #x90e06fa + #x500fe04 + #x3f1f500 + #x30f0f13 + #xafbfffa + #x3ff0819 + #x3000204 + #x1070afe + #x80b01fb + #x3fa060d + #xfbf4fd06 + #xd120f + #x20001f9 + #xff0a12 + #xfc040400 + #x70afffe + #x802fb01 + #xfa020e07 + #xf9fe0402 + #x8110d00 + #x309faf9 + #x31006 + #x1050002 + #xa08fd04 + #x400fc04 + #xfa090b00 + #x50501ff + #xa0c01fc + #xb07f9fd + #x2040c0a + #x904fc02 + #x9060109 + #x3fdfd04 + #xfe0902fc + #xd0200ff + #x603fb03 + #xb00ff03 + #x2060f10 + #xafefc05 + #xa080507 + #xfafc04 + #xfd02fefe + #xaff0401 + #xfe0b + #x7ff0603 + #x10a1313 + #x4faff04 + #xe090401 + #xfbf7fc05 + #xf8fcff00 + #x5010a00 + #xff02020c + #x40409ff + #x20e1511 + #xfffb0200 + #xe050100 + #xf3f8fd07 + #xf5fc02fb + #x60808fa + #x6060208 + #x50703fb + #x6111512 + #xffff01fd + #xa000303 + #xf1fdff08 + #xf80000f2 + #xa09fff6 + #xc040107 + #x605ff00 + #xa121714 + #xfefb + #x3000805 + #xf701fd04 + #xfffff8eb + #x900f5fc + #xc03050a + #x5030108 + #xa131c13 + #x1fffafb + #x2020a04 + #xfefff802 + #xfaf3ed + #xf5f906 + #x80a0d06 + #x6040409 + #x9131d0f + #x1fcf8ff + #x4030804 + #xfef8f703 + #xfbf8f5f3 + #xf7f3040a + #xb140dfe + #xb040407 + #x613190f + #xfbfb00 + #x4000403 + #xf5f5fc05 + #xf9fcfaf4 + #xf3f90b05 + #x151803f5 + #xd010308 + #x5131614 + #xfdffff + #x1fc0405 + #xeff90006 + #xff04faed + #xf7fe0601 + #x1d11f9f2 + #x8fe040f + #x4121817 + #x200fffb + #xfdf90508 + #xf1000203 + #x807f5e5 + #xfbfbff05 + #x1b07f6f7 + #x2000b17 + #x7141b13 + #x601fcf9 + #xf7f9070b + #xfa0500fe + #xe02ece3 + #xf7f2ff10 + #x1103fdfc + #x61318 + #xc17190c + #x800fafd + #xf6fd090a + #x103fcf9 + #x8f8e7eb + #xeeef0b19 + #x80902f8 + #x70f1410 + #xf151005 + #x7fcfd06 + #xf9000808 + #x200f9f5 + #xf3ecf4 + #xe9f51718 + #xe1501f0 + #x10100e08 + #xe0f0507 + #x3fb050c + #xfdff0505 + #xfdfcf6f5 + #xfaf5f4f9 + #xed001a0b + #x1b16f8ea + #x13090708 + #x9070211 + #x102100d + #xfffb0206 + #xf9fdf5f6 + #xfdfaf9f7 + #xf7070f03 + #x1f0aefef + #xb020810 + #x4030717 + #x30a1509 + #xfef70308 + #xf8fdf3fa + #xfbfaf4 + #xfd040503 + #x1bfff2f8 + #x1050f17 + #x3030e12 + #x7121404 + #xfaf5050a + #xf9fcf2fd + #x2faf9f2 + #xfeff0009 + #xdfcfdff + #xff0f1516 + #x3040c06 + #xa151004 + #xf8f7070a + #xfbf8f4ff + #xfdfaf9f2 + #xfcfd050a + #x40405fd + #x918130d + #x2010500 + #xc130f08 + #xf9f9040a + #xfaf8f900 + #xf7fcfaf2 + #xfeff0804 + #x40c05fb + #x19180b05 + #xfffc0007 + #xd13110b + #xfaf8000b + #xf8fbfd00 + #xf800f8ef + #x20004fe + #xa0e00fe + #x1e0f0403 + #xf9f90115 + #xe141407 + #xfbf6000d + #xfaffff00 + #xfbfff4ee + #x7fffffb + #xb090108 + #x17060505 + #xf5fb0a1c + #x10161300 + #xf9f2000e + #xfd010002 + #xfcfbf3f1 + #x6fafbfc + #x6050811 + #xe070603 + #xf8001119 + #x11140dfc + #xf6f2000d + #x40303 + #xf8f9f7f5 + #x3f7fafe + #x91214 + #xa0b04fd + #xfd041212 + #x100f07fd + #xf5f5000c + #x2070700 + #xf5fefbf8 + #x1f7fcfa + #xff111610 + #xe0dfef6 + #x70d0c + #xe0b04ff + #xf7f7000c + #x50b08fe + #xf803fcf9 + #x3f7faf6 + #x616130f + #x1308f8f3 + #x306080f + #xd060201 + #xf9f7010d + #x80e06fb + #x5fafb + #x3f5f6f7 + #xc140f12 + #x10fff4f6 + #x4030816 + #xb020103 + #xfafa0709 + #xc0f02fb + #x401fb00 + #xfff1f6fd + #xb0f1015 + #x7fdf8fa + #x3000d18 + #x5000205 + #xfe010902 + #xd0cfffc + #x2fd0207 + #xf8f1fc04 + #x90e1310 + #x1fcfa + #x1311 + #xff000305 + #x50903fd + #xa07fcff + #xfdfe0c0a + #xf7f90206 + #x7101205 + #x8fbf8 + #xff021209 + #xff050202 + #x805fc03 + #x9fdfe05 + #xfc0d0a06 + #xfd0004fc + #xd1006fb + #xa01f600 + #xb0c05 + #x6010101 + #x802000a + #x5fc0007 + #x1110200 + #x50101fa + #xc06fd03 + #xbfefb04 + #x2090b0b + #x9fe0003 + #x8030607 + #x2fb0006 + #x408fc00 + #x6ff02fd + #x5fe000e + #x5ff0305 + #x20a0f0f + #x2fa0204 + #xa060700 + #xfdf8ff07 + #xff00fd01 + #x10106fe + #xfd0510 + #x2050500 + #x40d120e + #xfcfb0402 + #xc0604fc + #xf7f7ff0b + #xf9fe01ff + #x708fa + #x401070a + #x40b00fc + #x70f140b + #xf90003ff + #x80103fe + #xf5f9000c + #xf90200f5 + #x80b00f5 + #x9010507 + #x709fc00 + #xa11160d + #xfd02fffd + #x2000500 + #xf9fc000b + #xfd03f8ee + #xc05faf8 + #x900050a + #x603fe07 + #xb13190c + #xfaff + #x30901 + #xfbfd06 + #xfffff0ef + #x4f9fa00 + #x6050a0b + #x602050b + #xc171c0b + #xfdf800 + #x1060800 + #xf6fa04 + #xfafaeff5 + #xf8f50503 + #xa0f0b03 + #x8020709 + #xd18160c + #xfef9f901 + #x2040600 + #xfaf4fd05 + #xf8fbf5f8 + #xf3fc0d00 + #x151404fa + #xa020508 + #xa161310 + #xfdfbfd00 + #x10600 + #xf3f60106 + #xfd00f8f3 + #xf6020afd + #x1e0ef9f5 + #x600040e + #xb161714 + #xfdfffefc + #xfbfe0602 + #xf4fc0305 + #x504f2ea + #xfb010300 + #x1b02f5f7 + #xa19 + #xb161b11 + #x100fafb + #xf7fe0906 + #xfb000200 + #xc01e9e7 + #xfafa020a + #x13fef9fc + #xff06131c + #xe1a1a08 + #x4fef7fe + #xf6000b07 + #x201fffb + #x9f8e3ed + #xf1f50b13 + #xa02fffc + #x30e1715 + #x131a1203 + #x3faf903 + #xf8020c04 + #x3fffaf6 + #x1f1e7f7 + #xe9fb1a13 + #xd0bfef3 + #xd12120b + #x13130605 + #xfff9020a + #xfb020a00 + #xfcf6f6 + #xfcf0f0fc + #xec061c0b + #x190ef7ec + #x110e0909 + #xf0a040e + #xfbff0c0b + #xfdff07ff + #xfdfaf4f9 + #xfaf5f7fa + #xf60e1402 + #x1f05efec + #xb070511 + #x9040a14 + #xfc0b1108 + #xfafb0701 + #xfcf9f3fc + #xfefaf8f6 + #xff0c0902 + #x1bfbf0f4 + #x2060c1a + #x5041110 + #x2130f04 + #xf6fa0706 + #xfef6f3ff + #xfffbf6f4 + #x40406 + #xef8f8fb + #xd141c + #x3051104 + #x9160b04 + #xf4fc0909 + #xfff3f600 + #xfdfcf4f4 + #xfdff0708 + #x30001fc + #x8161613 + #x20509fe + #xd140a06 + #xf4fd070b + #xfcf3f9fe + #xf9fef4f5 + #xfb000d02 + #x60902fb + #x16160f09 + #xff000005 + #xe120d07 + #xf6fd050b + #xf9f6fdfd + #xf900f4f4 + #xfe020bfd + #xd0bfefd + #x1d0f0705 + #xfafc0013 + #xf151103 + #xf7fa040d + #xfafbfffe + #xfefff2f2 + #x10203f9 + #x1005fe04 + #x15080407 + #xf7fc0a1d + #x11180efc + #xf5f6050f + #xfdfd0000 + #xfefaf0f3 + #x1fffefb + #xb02050b + #xd070508 + #xf700141a + #x131609f7 + #xf3f5060f + #x200 + #xfbf8f1f6 + #xfffafefd + #x5070f0e + #xa0a0504 + #xfb061612 + #x121104f8 + #xf1f7050e + #x20205ff + #xf8fcf5f9 + #xfdf9fffa + #x30f140e + #xd0cfffc + #xa110d + #xf0c02fb + #xf3f8050c + #x40706fb + #xfb00f7fb + #xfdf9fdf5 + #xa15130c + #x1107f7f8 + #x20a0b0e + #xc0802fe + #xf5f7070c + #x90c04fa + #x2f7fe + #xfef8f8f4 + #x1214100f + #xf00f3fa + #x4070c14 + #x9040200 + #xf5f90b09 + #xe0c00fb + #x5fff800 + #xfaf4f5fb + #x120f1211 + #x6fbf4ff + #x4041115 + #x5010103 + #xf8000c03 + #x100afdfc + #x2fcfe06 + #xf5f3fa02 + #xe0d170e + #xfef700 + #x5160e + #xff0305 + #xff0506ff + #xf03fcff + #xfe000609 + #xf3f70103 + #xa111603 + #x103f7ff + #xfe081505 + #xfe000404 + #x707fd00 + #xc00fd04 + #xfa080a07 + #xf9ff0500 + #xc120dfc + #x704f6fe + #xff0a1003 + #x4030201 + #x7000006 + #x2fd0406 + #x60e0509 + #x300f9 + #x100afffe + #xaf7fa07 + #x50e050a + #x40102fe + #x4000606 + #xfd0407 + #xb0a0006 + #x200fefb + #x9ff000a + #x4fa0109 + #x60a090d + #x1fd0201 + #x50409ff + #xfcfc0307 + #x800ff05 + #xff010000 + #x1fc090d + #x1030504 + #x60c0f0b + #xfafe0501 + #x80704f9 + #xf8f9020a + #xfd0101 + #x702fe + #xff000c08 + #x50a00ff + #x70f1108 + #xf7010400 + #x70400fa + #xf5f9050d + #xfc0101fb + #x60bfff8 + #x3030a03 + #xa07fa00 + #x9101208 + #xfb050000 + #x20200ff + #xf8fb060c + #xff04faf4 + #xc08f9f7 + #x4020707 + #xa01fd07 + #xb13140a + #x103fb00 + #x40301 + #xfcfb0506 + #x100f0f3 + #x9fff9fb + #x203080c + #x7fe040b + #xd171409 + #x2fdf803 + #x1080500 + #xfff80102 + #xfff8eefa + #xfdf902ff + #x40a0c0a + #x6000909 + #x111a1309 + #xfff8f904 + #x30803fd + #xf8f50001 + #xfaf6f3fd + #xf4ff09fd + #x110f07ff + #x6030708 + #x1219100d + #xfbf9fb03 + #x10503fc + #xf2f70203 + #xfcfaf7f9 + #xf60607fa + #x1b0bfef6 + #x502050f + #x1016140f + #xfbfdfc00 + #xfe0303fe + #xf2fb0502 + #x3fff4f1 + #xfe0902fd + #x1a01f6f6 + #x10a1a + #x1017190d + #xfffff8ff + #xf9020502 + #xf80005ff + #xafeebed + #xfe010105 + #xffbf8fb + #xff05141f + #x121b1807 + #x2fcf500 + #xf9050804 + #xfe0101f8 + #xaf5e5f1 + #xf6fc080e + #x7fdfdfb + #x10d1a19 + #x161c1101 + #x1f7f504 + #xfb060b01 + #x1fffdf4 + #x3ece6f9 + #xee001511 + #x804fff5 + #xa14160e + #x18180702 + #xfcf6fd0a + #xfd070afb + #xfffcf7f5 + #xfceaefff + #xef0d1b0b + #x1408f8eb + #x10120b0c + #x150c030a + #xf7fc060d + #xfd0505f9 + #xfdf9f5f8 + #xf9eef6fe + #xf9161304 + #x1a02f2e8 + #xe0b0614 + #xd040a11 + #xf9070b0c + #xfa0203fd + #xfdf6f5fc + #xfaf6f9fa + #x3140900 + #x16f8efee + #x6060b1c + #x605130e + #x1110a08 + #xf6000304 + #xfef3f7fc + #xfdfaf5f8 + #x50b0503 + #x9f6f5f7 + #x309161f + #x4081204 + #xb130706 + #xf401040a + #xfdf1fafa + #xfdfaf3f9 + #x40904 + #xfdfcfb + #x8111b18 + #x30909fe + #x10110607 + #xf503050d + #xf9f2fcf8 + #xfcfcf4fb + #xfc030e01 + #x205fffa + #x1315150c + #x204ff03 + #x11100a07 + #xf701050e + #xf5f5fef6 + #xfdfbf4fa + #xfd070bfc + #xd07fcfb + #x19100b08 + #xfeff0012 + #x12130d01 + #xf800050f + #xf5f9fef8 + #xfbf3f7 + #x803fa + #x1202fcff + #x160a060a + #xf9fd0a1a + #x14160bfb + #xf6fd0612 + #xf9fcfffa + #x1f7f2f7 + #x105fefd + #xd000304 + #xc07070e + #xf8001419 + #x161603f6 + #xf3fc0813 + #xfcfd01fa + #xfef4f1f8 + #xff00fefe + #x6030c07 + #xb08070b + #xfb071713 + #x1711fef6 + #xf1fd0911 + #xfe0004f8 + #xfbf5f3fb + #xfcfefffc + #x50d1106 + #xd090404 + #xc130e + #x130afef9 + #xf2fc080d + #x504f6 + #xfcfaf7fd + #xfbfefef7 + #xa131206 + #x1006fcfe + #x40d0e0f + #xd08fffa + #xf3fc090b + #x50902f6 + #x1fcf800 + #xfcfdf7f6 + #x12131108 + #xefff500 + #x60a0d13 + #xa07fffd + #xf3fd0c09 + #xb0a00f7 + #x4faf903 + #xfaf9f3fb + #x13101309 + #x7f9f505 + #x6081214 + #x604ff00 + #xf3010d04 + #x1006fdf8 + #x3f8fd07 + #xf6f5f602 + #xe101805 + #x1f8f809 + #x30a160d + #x1000004 + #xfa0608ff + #x1001fdfa + #xfefc020c + #xf3f7ff03 + #xa1417ff + #x2fcf906 + #x10e1405 + #xfd000404 + #x20700fe + #xbfdfefe + #xfc04070d + #xf6fd03ff + #xc170ff8 + #x7fcf804 + #x2100c02 + #xfe020600 + #x702fd03 + #x6fe0104 + #x10e070a + #xfe0203f9 + #xf1102fa + #xbf9f905 + #x50f0607 + #x30303fd + #x3ff0503 + #xfd010606 + #xe060708 + #x102f900 + #xe02ff01 + #xf6010c + #xc09050d + #x20000 + #x20309ff + #xfc010606 + #xdff0406 + #x100fa05 + #x2fd0808 + #xfffe0609 + #x9080b0b + #xfc000202 + #x50704f9 + #xf9ff0507 + #x3fc0502 + #x4fe05 + #xfc020f03 + #x4060302 + #x80c0e06 + #xf9030301 + #x706fdf9 + #xf6fd070a + #xffff03fc + #x608fe00 + #xfe080c00 + #xb05fe00 + #x90f0d06 + #xfc060101 + #x503faff + #xf5ff0a09 + #x2fef7 + #xe08f9fa + #x1070703 + #xdfefd04 + #xb110e0b + #x304fd02 + #x202fd03 + #xf7000a05 + #x300f5f6 + #xc00f7fc + #x5070b + #x7fb0508 + #xe150f0c + #x6fffa03 + #x2050003 + #xf8ff0700 + #x3f7f2fa + #x1fcfc00 + #x1070b0c + #x3ff0b07 + #x13180d0a + #x2f8fb06 + #x50801ff + #xf5fc02fe + #xfdf0f7ff + #xfa0003ff + #xa0c0c04 + #x3040906 + #x16170d0a + #xfcf6fd07 + #x60600fc + #xf0fb0200 + #xfbf4fcfc + #xfc0801fb + #x150b03f8 + #x304060d + #x1515110c + #xfaf9fd07 + #x305fefd + #xf0fd0400 + #xfafaf4 + #xafdfd + #x1502faf5 + #x1020919 + #x1216160a + #xfdfbfa05 + #x40000 + #xf40005fd + #x6faf2f0 + #x406fd03 + #xdfbf7f9 + #xff03151f + #x141a1604 + #x1f9f605 + #xfe050403 + #xfa0201f8 + #x7f2eaf2 + #xfd00040c + #x3fbfcfc + #x10c1e1b + #x191d0e00 + #x1f5f609 + #xff080800 + #xfe01fdf3 + #x2e8ebf9 + #xf6030f10 + #x200fff6 + #x8151b10 + #x1c170600 + #xfbf3fa0e + #xa07f9 + #xfefff7f3 + #xfae4f2ff + #xf50f160d + #xb04fbeb + #x1016100b + #x180e0307 + #xf5f70312 + #x10902f7 + #xfcfaf5f7 + #xf4eaf9ff + #x191205 + #x1401f2e6 + #x110e0914 + #x1005090e + #xf7010812 + #x7fdfb + #xfbf6f6f9 + #xf5f2fbfd + #xa170901 + #xffaedeb + #xb060d1e + #x706110d + #x10a080f + #xfc04fc05 + #xfaf4f9f9 + #xf9f7f8fb + #xe0f0501 + #x5f5f0f6 + #x5061a1e + #x30b1106 + #xd0c060a + #xfa03ff0d + #xf8f3fcf5 + #xfcf7f6fd + #x7070802 + #xfefaf7fd + #x80e1f18 + #x50d0700 + #x130a0608 + #xfb040210 + #xf3f5fcf1 + #xfcf6f7fe + #x60b00 + #xfbfc + #xf151c0e + #x508ff04 + #x130a0806 + #xfc030410 + #xf0f9fbef + #xfef6fafd + #xff0b0bfe + #xa04fbfa + #x16141008 + #x100fd0f + #x120e0b02 + #xfd010612 + #xf1fbfbf2 + #xf5fafa + #x30d01fe + #xf00fafb + #x140d090c + #xfcfc0918 + #x151208fc + #xfa000715 + #xf5fdfbf5 + #x1f4f7f7 + #x508fc00 + #xbff00ff + #xe080911 + #xf9001617 + #x191100f8 + #xf7000918 + #xf8fefef6 + #xfef2f5f8 + #x303fc01 + #x4020701 + #xa070c11 + #xfb081811 + #x1a0cf9f6 + #xf5000b16 + #xfa0000f3 + #xfaf1f6fb + #xff00 + #x40a0c01 + #xc080a09 + #xe140e + #x1606f9f9 + #xf5010b11 + #xfc0401f1 + #xfaf3f8fd + #xfe00fefb + #xa120d00 + #xf050304 + #x30e0f10 + #x1004fbfa + #xf6000a0c + #x9fff0 + #xfef6fbff + #xff00f8f9 + #x10130d01 + #xcfffc03 + #x70c0e13 + #xc05fbfc + #xf4000b0a + #x809fcf2 + #xf6fc01 + #xfefcf2fe + #x12121002 + #x6f8fa0a + #x80a1213 + #xa03fb00 + #xf4050b07 + #xd06fbf3 + #xf6fe07 + #xfbf6f503 + #xe131400 + #x1f5fd0e + #x60d150e + #x600fd03 + #xf9090801 + #xd01fcf3 + #xfcf9020c + #xf6f6fd05 + #xa1814fb + #xf5000b + #x5101206 + #xff0204 + #xa01fd + #x8fffdf6 + #xfbff070f + #xf6fb0200 + #xd1c0df6 + #x3f7ff07 + #x8130905 + #xfd010501 + #x605fefe + #x1fe00fe + #x6090e + #xfb0001fa + #x121703f7 + #x5f5fe07 + #xc110309 + #xff0504fe + #x4ff0202 + #xfe010405 + #xb09080a + #x103fbfc + #x110afefe + #x2f3000b + #xc0b020d + #x20500fd + #x1020500 + #xfe050506 + #xc020a02 + #x2fdf80b + #x6000301 + #xf9fc070d + #xb040c07 + #xff08 + #x30803fb + #xfd040505 + #x4fe0700 + #x1fdfe0d + #xfc040b01 + #xff030705 + #x7070d04 + #xfc020206 + #x707fbfb + #xfa010706 + #xfe0106fc + #x5020106 + #xfc0c09fe + #x80401ff + #x80c0b05 + #xff060103 + #x702f700 + #xf8020907 + #xff0400f7 + #xb03fe00 + #x20d0400 + #xbfe00ff + #xa0f090b + #x505ff02 + #x5fffa06 + #xf7050b05 + #x300f9f5 + #xe00f8fe + #x307030b + #x5f90403 + #xe110b0f + #x9fffc04 + #x400ff06 + #xf8050701 + #x3f8f7f7 + #x5fcfa01 + #x2060a0f + #xfe0903 + #x13140c0c + #x4f8fc06 + #x6020101 + #xf7030200 + #xfef1fafa + #xfefefe03 + #x50a0d07 + #x70903 + #x17130b08 + #xfdf5ff0b + #x70400fb + #xf3000000 + #xf8f1fff9 + #x60000 + #xf0d08fb + #x3080609 + #x15110e07 + #xf8f7000c + #x703fdfb + #xf2ff0001 + #xf9f9fef3 + #x809fbfd + #x1106fef7 + #x2040b16 + #x13141207 + #xfaf9ff0c + #x402fdff + #xf40201ff + #xfbf8ef + #xa04fa01 + #x9fef7fb + #x3151d + #x13191203 + #xfff7fb0a + #x2020102 + #xf90400fb + #x2f4eff0 + #x400000a + #x1fafaff + #xc1f19 + #x191c0c00 + #xfff2fa0b + #x20505ff + #xfe03faf7 + #xfeeaeff6 + #xfc010c0f + #xfffefdfc + #x7181e0f + #x1e1803ff + #xf9effc12 + #x40905f8 + #xff00f5f7 + #xf6e5f4fb + #xfc0c130d + #x402fbf1 + #x101b150a + #x1b0d0104 + #xf3f30218 + #x60b00f4 + #xfefbf3f8 + #xeee9fbfe + #x4171306 + #xc01f2e9 + #x14130d0f + #x1005060b + #xf4fb0a19 + #x607f8fa + #xfbf6f5fa + #xeef2fdfc + #x10170c00 + #xbfbeaee + #xf07101a + #x7070e0e + #xff030c14 + #x402f704 + #xf8f5f8f9 + #xf3f7fcfc + #x131007fe + #x2f4eafa + #x8061a1c + #x50d0e0a + #xa060a0d + #x100fc0e + #xf4f6f9f5 + #xf8f7fafd + #xd0908ff + #xfcf5f102 + #x50f1f15 + #x70f0604 + #x10050908 + #x211 + #xf1f9f8f2 + #xfaf4fcfd + #x5090900 + #xfffbf801 + #xb181e0a + #x90aff05 + #xf050a06 + #x10811 + #xf0fbf5f1 + #xfaf3fffb + #x30c07ff + #x6fffafc + #x121a1407 + #x501ff0d + #xe0a0a03 + #x10811 + #xf1fcf3f4 + #xfcf4fff7 + #x70e0100 + #xdfff9f9 + #x14140b0c + #xfefc0714 + #x120f08ff + #xfe000b16 + #xf5fbf4f6 + #xfcf6fcf5 + #xb0afd01 + #x8fdfbfd + #xf0b0d13 + #xf9001415 + #x180e00fa + #xfb000e1a + #xf8fdf7f6 + #xfbf4f9f5 + #x903fe03 + #x1000000 + #xa081012 + #xfa0a1810 + #x1a07f9f7 + #xfa011019 + #xf900faf3 + #xf7f3f9f7 + #x4000001 + #x2080501 + #xa09110c + #x10130d + #x1600f7f8 + #xf9021014 + #xfc02faf0 + #xf6f3fbf9 + #x10000fe + #x90e0600 + #xc090a06 + #x510100f + #xffff9fa + #xf9030e0f + #x5f8ef + #xf8f5fcfa + #x100fbfc + #x101107ff + #xb030307 + #x70d1112 + #xb00fafd + #xf9030b0d + #x606f6f0 + #xfbf6fdfd + #x2fdf6ff + #x121209ff + #x5fb000b + #x80c1312 + #xc00f900 + #xf8050a0b + #xc04f6f0 + #xfaf7ff04 + #xfff5f702 + #xf130b00 + #xfff6030f + #x80e150d + #xafcfb05 + #xfc090806 + #xb01f8ef + #xf9f8020b + #xf9f3ff04 + #xe190dfd + #xfcf5060d + #x9121008 + #x3fb0006 + #x30a03ff + #x600f8f1 + #xf8fd080e + #xf5f70400 + #x111c08f8 + #xfdf80708 + #xc120a05 + #xfdff0404 + #x806fefd + #xf9f8 + #xfe020d0e + #xf9ff01fc + #x181700f6 + #xfef70207 + #x100f0509 + #xff050301 + #x701fe00 + #xfe01fe01 + #x5050e09 + #x1fbfe + #x190dfcfa + #xfdf7010b + #x1109060c + #x2060003 + #x1000402 + #xfd050306 + #xd040a04 + #x3fff706 + #xe02ff00 + #xf8f8060e + #xc040909 + #x303fd05 + #x2050100 + #x4040404 + #x40707fe + #xf8020d + #x40501 + #xf9030a09 + #x5060dfe + #x1ff030c + #x707fcfd + #x1040504 + #xfe0603fc + #xfffb080a + #xff0d05ff + #x30605fe + #x50a0a01 + #x30407 + #x800f701 + #xfd040707 + #xff0800f8 + #x5000601 + #x60e0002 + #x70000fb + #x80c0809 + #x6050104 + #x5fbfa08 + #xfd070807 + #x205fbf5 + #x800ffff + #xa09000a + #x3fd00ff + #xc0e0b0f + #xa00fe04 + #x2fb0009 + #xfe080605 + #x3fdf7f5 + #x5fbfb02 + #x7040711 + #xfc000501 + #x12100e0b + #x6fafd07 + #x2fe0502 + #xfe070203 + #xfef6f9f6 + #xfbfe05 + #x6070e0c + #xfd070600 + #x15100d06 + #xfdf6000b + #x40003fb + #xfd03ff04 + #xf7f7fef6 + #x2 + #x90d0b00 + #x20b0404 + #x140f0c02 + #xf6f80310 + #x500fff8 + #xf8fffe05 + #xf4fcfef2 + #x603fefd + #xf0b00fa + #x506080f + #x12110f04 + #xf6fa0410 + #x400fcfb + #xf8000004 + #xf9fff8ee + #xb01fcfd + #xa00f900 + #x2051619 + #x13170d03 + #xf9f9010e + #x3ff00ff + #xfc02ff00 + #xfffaf2ee + #x8fe0003 + #x1faf905 + #xd1f16 + #x191a0800 + #xfaf5ff0d + #x20005fc + #x2fafe + #xfcf1eff3 + #xfe090a + #xfefcfe02 + #x6191e0d + #x1e1702fd + #xf5f00012 + #x40605f4 + #x2fff5fd + #xf2ebf4f8 + #xff07120a + #x100fcf9 + #x111f1606 + #x1c0d0001 + #xeef2061a + #x70800f1 + #xf9f2fe + #xebeef9fb + #x5121403 + #x700f3f1 + #x17180e0a + #x1306020a + #xeef80d1c + #x907f7f5 + #xfef5f4ff + #xe9f5fcfc + #x111611fb + #x9fae9f5 + #x130c1114 + #x906090f + #xf7001217 + #x800f500 + #xf8f4f7fe + #xeffafcfb + #x16110af7 + #x3f2e801 + #x9091c17 + #x60d0b0e + #x205110d + #x4fafd09 + #xf4f6f7fc + #xf5f9fcfb + #x110b07f9 + #xfdefef0a + #x4111f10 + #xa0f0608 + #x8040e07 + #x1fb060c + #xf3f9f5fa + #xf7f6fffa + #x80a07fc + #xfdf3f809 + #x81d1e09 + #xe0a0004 + #x7060d05 + #xfe0c0b + #xf4faf1f9 + #xf7f600f7 + #x70d05fe + #x3f9fb01 + #x111f1304 + #x8010008 + #x60a0b05 + #xff000d0d + #xf6f9effa + #xf6fa00f3 + #xb0d02ff + #x7fbfafd + #x15190b09 + #xfd080f + #xb0e0801 + #xfe010d12 + #xf9f6effb + #xf7fbfcf1 + #xe08ff00 + #x7fbf8fd + #x130f0e12 + #xf9011212 + #x120d02fc + #xfc011218 + #xfbf7f2fa + #xf7fbf9f3 + #xc020100 + #xfdfb03 + #xd0b1512 + #xfb0a140f + #x1505fbf7 + #xfb031717 + #xfbfaf5f7 + #xf6f8f8f5 + #x7000400 + #x20005 + #x90d160c + #x11110c + #x11fef7f7 + #xfb051811 + #xfdfef5f4 + #xf4f7f9f7 + #x20003fd + #x7080203 + #xa0f0f06 + #x7110e0c + #x9fbf8f9 + #xfb06140c + #x100f2f3 + #xf4f8fbf7 + #x201fffb + #xf0b0201 + #xa0b0707 + #x80f110f + #x5fdf9fd + #xfc060f0b + #x600f1f3 + #xf6fafbfa + #x3fcfbfc + #x120c0301 + #x602050d + #x80f140f + #x7fdf900 + #xfd060d0d + #xbfff2f1 + #xf7fafc00 + #xf6fc00 + #x11100502 + #xfb0811 + #x911140b + #x8f9fa03 + #xff080c08 + #xbfef2f0 + #xf6fb0009 + #xf8f30100 + #x11130501 + #xfafa0b0e + #xb131006 + #x2f70006 + #x3090800 + #x6fef2f1 + #xf7fd070d + #xf4f806fe + #x171804fd + #xf9fd0909 + #xe120b04 + #xfcfa0406 + #x90601fd + #x2fef2f8 + #xfa020e0c + #xf5fe04fa + #x1e14fff8 + #xf8000409 + #x120e0803 + #xfb020506 + #x701fe00 + #xfff601 + #x61007 + #xfd01fdfc + #x1e0bfaf9 + #xf8fd020e + #x10080a06 + #x2050108 + #x3ff0004 + #x100fc06 + #x5080d01 + #x2fef904 + #x1502fcfe + #xf6fd0512 + #xc050d03 + #x601ff0d + #x1030203 + #x4040306 + #x60707ff + #xf8fe0d + #x5010201 + #xf6000b0e + #x6050fff + #x3ff000e + #x403ff00 + #x6030503 + #x20b0000 + #xf9fa0e07 + #x2070301 + #x70902 + #x30c07fb + #xff010a08 + #x700fa01 + #x2040606 + #x10afefe + #xfc010d00 + #x90b0001 + #x606fffa + #x60c0503 + #x4040604 + #x4f9fb08 + #x1060709 + #x406faf9 + #x20204fe + #xf05ff08 + #x200fbff + #xa0c0a0b + #x9020003 + #xfff7030a + #x3080708 + #x400f7f7 + #x3ffff00 + #xc00060f + #xfd00ff03 + #xe0d0f0a + #x7fdfe06 + #xfcfc0903 + #x5060406 + #xfbf6f7 + #xfffb0004 + #x5040f0d + #xfc060103 + #x120f1001 + #xfdf8000c + #xff0006fa + #x3020105 + #xf8faf8f8 + #xfefd0302 + #x70c0e05 + #x30a0102 + #x120e0cff + #xf4f80411 + #x10100f4 + #xff0006 + #xf500f9f5 + #x20003fb + #xc0d0500 + #x8060408 + #x100f0801 + #xf3fc0812 + #x2fffcf6 + #xfdfd0107 + #xf903f5f2 + #x700fff8 + #xd05fb03 + #x5040f12 + #x11130a04 + #xf6fe080f + #xfdfef9 + #xfeff0005 + #xfefef0f0 + #x4fcfffc + #x5fbfb0b + #x10f1c13 + #x19180600 + #xf7fb040e + #x3f8 + #x1fffd02 + #xfdf6eef3 + #xfd0603 + #xfef90009 + #x41b1e0b + #x1f1400fd + #xf3f60213 + #x10404f1 + #x4fcf800 + #xf5f0f1f8 + #xfe041005 + #xfffe0000 + #x131f1504 + #x1d0cfe00 + #xecf5081b + #x508feec + #x2f6f601 + #xecf2f6fc + #x40f14fe + #x400f7f9 + #x1a1c0d05 + #x1305ff08 + #xeafa111e + #x904f5ee + #xfff2f602 + #xeaf7f9fe + #xe1511f5 + #x7f9edfc + #x19110e0c + #xb050411 + #xf0021718 + #x8fff4f7 + #xf9f2f803 + #xeffbfbfe + #x14130af0 + #x5efea07 + #xd0c1712 + #x90b0911 + #xfa08160d + #x4f8fc00 + #xf5f4f903 + #xf5fafcfb + #x110f04f2 + #xfee9f210 + #x6161e0d + #xd0d080a + #xa1106 + #xfef70703 + #xf5f7f601 + #xf7f9fef8 + #xc0d02f7 + #xfaecfc0f + #x91f1a06 + #xf080404 + #xa0d06 + #xfafc0d03 + #xf8f6f200 + #xf5fb00f6 + #x90d02fa + #xfcf40007 + #x131f1004 + #xb010205 + #xd0b08 + #xfb020d05 + #xfbf3f0ff + #xf4fefdf3 + #xd0c01fb + #xf9fd00 + #x1a1c0b08 + #x1fe070b + #x60f0805 + #xfc040d0c + #xfcf0f1ff + #xf601f9f2 + #x100801fb + #xf9f903 + #x18110d0e + #xfa010d10 + #xe0e03fe + #xfc051114 + #xfbeff4fd + #xf801f5f4 + #xc0203fc + #xfff9f908 + #x100c1510 + #xfd0b1110 + #x1207fdf7 + #xfb061914 + #xfaf3f5fa + #xf8fdf5f6 + #x50005fb + #xfffcfd0b + #xb11170b + #x4110f0c + #xdfef8f6 + #xfb0a1c0d + #xfcf6f5f7 + #xf7faf6f8 + #x20205fa + #x4000108 + #xb141305 + #x9110c0b + #x4faf7f9 + #xfd0d1806 + #xf9f2f6 + #xf5fbf8f8 + #x20302f8 + #xb040204 + #xd120906 + #xb0e0e0c + #xfbf8fd + #xfe0c1105 + #x4f8f0f6 + #xf6fcf7fb + #x300fff8 + #xf060103 + #xa09070d + #xa10120c + #x1fcf800 + #xff0a0f08 + #x7f7f0f5 + #xf7fcf801 + #xfafff9 + #x10080205 + #x4020b11 + #xb14120a + #x3f9f901 + #x91007 + #x8f8f0f3 + #xf8fcfe08 + #xf8f602fa + #x110c0405 + #xfc000d10 + #xf160f05 + #xfff5ff04 + #x3090eff + #x6f8eef4 + #xf8fd050d + #xf2fa05f9 + #x180f0400 + #xf8040c0c + #x11120a01 + #xf7f90406 + #x60807f9 + #x3f7eefa + #xfa010c0b + #xf40102f8 + #x1e0e00fa + #xf905050e + #x110d0800 + #xf6000609 + #x70300fc + #x3f7f002 + #xfe080f07 + #xfb03fef9 + #x1f08fcf7 + #xfa030112 + #xf0a0afe + #xfe04040c + #x2ffff03 + #x4f8f807 + #x10c0b02 + #xfffbff + #x1701fbfb + #xf9ff0519 + #xa080dfd + #x501030f + #x105 + #x5fb0006 + #x40d0500 + #xf90006 + #xafffe01 + #xf8000c15 + #x5090cfa + #x4fd0510 + #x2030001 + #x7020503 + #x30b0100 + #xfaf80b0a + #x1050202 + #xfc050c07 + #x30a09f9 + #xff090c + #x400feff + #x2040603 + #x706ff05 + #xf7060e02 + #x90501fe + #x5090300 + #x70b00fe + #xff070b02 + #x1fafd05 + #x2050708 + #x804fd00 + #xff0a06fe + #xf030000 + #x502f900 + #x90a0506 + #x6060300 + #xfcf80409 + #x4060808 + #x800f8fd + #x204ff00 + #xcff0607 + #xfffb08 + #xc0c0e06 + #x6000004 + #xf9fc0a04 + #x6050705 + #x3fcf6fd + #xffff03 + #x4010e0a + #xfe000009 + #xf0f0e00 + #xfffa0009 + #xf90109fa + #x6030601 + #xfdfaf5fd + #xfcfe0401 + #x20b1105 + #x3050105 + #x101009fd + #xf5fa0510 + #xff0400f3 + #x2000402 + #xfafdf6fd + #xfe0105fb + #xa0f0901 + #x9040106 + #x100e0400 + #xf3fe0a12 + #x101f9f4 + #xfffe0504 + #xfc00f4fa + #x20201f5 + #xf080104 + #x803080b + #x100e0305 + #xf6010c0f + #xfefaf7 + #xfdfe0405 + #x1fff1f6 + #x2fefdf8 + #xafdff0c + #x20a1310 + #x15110504 + #xf900080d + #xfefffef6 + #xfefe0203 + #x1f7eef6 + #xfefd0000 + #xfffa050b + #x51a180b + #x1d1100fe + #xf5fc0514 + #xfe03fff1 + #x1fbff00 + #xfaf2effb + #xfc030901 + #xfcfe0704 + #x121f1404 + #x1d0afcff + #xeff9081c + #x308fae9 + #xf6fc00 + #xf1f1f400 + #x10d10fc + #xfefd + #x1e1d0b02 + #x1403fc08 + #xeafc131f + #x906f1e9 + #xfbf3fb02 + #xeff5f801 + #xb150df2 + #x4faf5ff + #x1d130a07 + #xb020112 + #xed061a19 + #x9fdeff0 + #xf6f2fc06 + #xf2f8fb00 + #x121605ed + #x3eff108 + #x130f100c + #x9050715 + #xf60e190e + #x2f6f6f9 + #xf3f3fd08 + #xf7f9fdfd + #x1313feef + #xfce7f811 + #x917170d + #xd090a0d + #xfd101108 + #xfaf801fe + #xf4f5fc06 + #xf8fafef9 + #x100efcf4 + #xf4eb0211 + #xe1f1607 + #x10060704 + #x100b0a + #xf70006ff + #xf7f3fa03 + #xf7fdfdf6 + #xe0cfdf8 + #xf3f4070a + #x161f1003 + #xb010402 + #x110090d + #xf8060601 + #xfaf0f7ff + #xf600faf6 + #x100b00f7 + #xf7fb0205 + #x1e1a0905 + #xff040b + #x710090b + #xfc080709 + #xf9edf8fd + #xf903f6f7 + #x100801f6 + #xfbfbfc07 + #x1d110d0a + #xfc020911 + #xf0f0401 + #xfd080b11 + #xf5edf9fb + #xfc01f4f8 + #xd0501f6 + #xfcf7fc0d + #x160e150c + #xfd090c14 + #x1208fef9 + #xfe0b1512 + #xf4f0f9fa + #xfefef5fa + #x60303f8 + #xfdf7ff0f + #xd121608 + #x50f0c0f + #xe00f7f6 + #xfe0f190a + #xf5f3f8f8 + #xfcfaf6f9 + #x20501f9 + #xfb030a + #xd191104 + #xc0e0b0b + #x3faf5fb + #xff131603 + #xfaf4f5f6 + #xfafaf7fa + #x20600f7 + #x4000505 + #x11170b06 + #xc0c0c0a + #xfef9f6ff + #x3150f00 + #xfff3f3f6 + #xf9fbf7fd + #x405fef6 + #x9020304 + #x100e080c + #xb0e0e0c + #xfefaf801 + #x3100c03 + #xf2f2f6 + #xfafaf702 + #x1fffdf6 + #xb030306 + #x9070d11 + #xd130e0a + #xf9f802 + #x20d0f03 + #xf3f1f6 + #xfbf9fc08 + #xfbfdfff7 + #xd050506 + #x1061011 + #x12150c06 + #xfdf7fb04 + #x20c11fc + #xf3eff6 + #xfbfa050d + #xf5ff00f7 + #x13090701 + #xfe090d0e + #x14120900 + #xf4f80007 + #x50d0af5 + #xf2eefc + #xfb000c0b + #xf604fff7 + #x190a04f7 + #xfe0a0712 + #x130d07fd + #xf200050c + #x60900f6 + #xf0f002 + #xfd070d07 + #xfc05fbf8 + #x1907fff3 + #x5061a + #xe0a06fa + #xfa05060e + #x303fcff + #xeff806 + #x10e0905 + #x201fafc + #x1401fbf7 + #xffff0a1d + #x90a07fa + #x204070f + #x3 + #xf40106 + #x60f0404 + #xfffbff00 + #xafffcff + #xfcff111c + #x70c05f9 + #x2000a0e + #x300 + #xfb0502 + #x80b0005 + #xf9fb0702 + #x3000001 + #xfd041311 + #x60e01f7 + #xfe000e09 + #x30100fe + #x3030602 + #x7080005 + #xf5021003 + #x5060200 + #x1090802 + #x70c00fc + #xfd060e04 + #x1fdfe01 + #x1060605 + #x9000305 + #xff0f0404 + #xb0200f7 + #x705ff06 + #xb07ff03 + #x40b0501 + #xfcf90208 + #x3070806 + #x8feff01 + #x70bfe04 + #xaff01fe + #x3fbfd0d + #xb090706 + #x8050002 + #xf7fd0a05 + #x5070901 + #x5fafa01 + #x502fe06 + #x1010a04 + #xfa030e + #xe0e0b02 + #x1fe0008 + #xf90409fc + #x40608fe + #xf7f903 + #xffff0205 + #xff0a0f03 + #x1fe0508 + #x101105fd + #xf8fb030d + #xfe0700f4 + #x10406fc + #xfdf8f902 + #xfd0204ff + #x6110c00 + #x7000304 + #x110e0000 + #xf4fe0a11 + #x204f8f4 + #xfd0205ff + #xfffaf900 + #x400f9 + #xe0d0500 + #x7000408 + #x100b0006 + #xf8030d10 + #x1fff5f8 + #xfc020601 + #x2f8f6fc + #x202fafa + #xc020406 + #x4060c0e + #x120b0306 + #xfc050b0e + #xfffdf8fa + #xfc010501 + #x3f5f4fa + #xfffa00 + #x2fd0909 + #x414130d + #x160b0200 + #xfc010612 + #xff01f9f4 + #xfcff03ff + #xfef0f3fc + #xfd000102 + #xfa010d03 + #x121e1105 + #x1807fd00 + #xf5fc091c + #x205f4ee + #xfcfb00fe + #xf6eff600 + #x908fe + #xfd0405fd + #x1e1c0c01 + #x1401fa09 + #xeffe131f + #xa04ece9 + #xf8f7fe00 + #xf2f1fb02 + #x91308f5 + #x2fffbfe + #x1f140703 + #xafeff15 + #xef071c1c + #xafce9ee + #xf2f5ff06 + #xf5f4ff00 + #x1316fff0 + #xf3f806 + #x170e0c09 + #x8000918 + #xf7111a11 + #x3f5edf7 + #xf0f6000a + #xf8f700fc + #x1613f7f2 + #xf8ebfe0f + #xe14110a + #x9040e11 + #x15120c + #xfaf5f7fe + #xf1f60208 + #xf8f9fff8 + #x160df4f5 + #xeeed0811 + #x111f1306 + #xb050b06 + #x6130a0e + #xf5fefd00 + #xf5f60201 + #xf8fdfdf6 + #x1309f8f8 + #xeaf80c0c + #x1c1f0f01 + #x8030505 + #x80f0912 + #xf906fd04 + #xf5f3fffb + #xf800f9f7 + #x1206fbf6 + #xefff0709 + #x1f190b00 + #x100010b + #xc0e0a0f + #xff08fe0b + #xf2f1fdf7 + #xfd00f6fa + #x1106fdf4 + #xf7fe000c + #x1f0f0d02 + #xfb010416 + #x120d0804 + #x2080412 + #xeef1fcf8 + #xfef7fb + #xd05fdf5 + #xfaf90010 + #x170e1205 + #xff070919 + #x150900fb + #x10a0e13 + #xecf3fbf7 + #x2f9f8fa + #x705fcf8 + #xfaf60311 + #x10151505 + #x60b0c14 + #x1000f8f9 + #x211170c + #xeef4f9f6 + #xf7faf9 + #x507fdfb + #xfbfa090c + #xf1c1002 + #xb0b0b0c + #x6f9f4fc + #x6171202 + #xf2f5f7f6 + #xfdf7faf9 + #x608fbfb + #xfd000905 + #x15190a04 + #xb0a0b0b + #xfef6f503 + #x9170aff + #xf6f4f4f6 + #xfcf8f9fb + #x706faf9 + #x20603 + #x16110908 + #xa0b0b0d + #xfdf7f804 + #xb140700 + #xf8f2f4f7 + #xfcf7fb00 + #x502f9f8 + #x5020406 + #xf0a0d0d + #xc100c0e + #xfff7fa03 + #x90f0a01 + #xf7f2f3f9 + #xfcf5ff05 + #xff00faf9 + #x7030706 + #x70b120e + #x14120b09 + #xfdf5f905 + #x6100dfc + #xf8f2f1f9 + #xfbf70507 + #xfb01fafa + #xb060900 + #x30f100f + #x160f0802 + #xf6f6fc0b + #x71208f3 + #xfaf0f0fa + #xfafc0c09 + #xfc04fafa + #x100906f6 + #x40e0c12 + #x120a06fe + #xf2fc0310 + #x90ffdf4 + #xfbedf200 + #xfc060d07 + #x4f8f9 + #x120900f1 + #x6060b1a + #xe0904fc + #xf9030712 + #x807f7fb + #xf9ecf902 + #x10c0a06 + #x300f8fa + #xe05faf4 + #x3ff111f + #xb0a00fc + #x105090f + #x401fb02 + #xf6f10103 + #x80d0606 + #x2fcfbfe + #x900f9fe + #xfefe181c + #xa0cfffd + #x4040c0c + #x100 + #xf6fa0500 + #xc090407 + #xfbfc0101 + #x300fe00 + #xfc041a14 + #xc0cfcfb + #xff050e08 + #x10102fc + #xf9010600 + #xb030406 + #xf6020503 + #x40101fd + #xc1109 + #xc0afafb + #xfc0a0e04 + #x2fffefe + #xff070503 + #xa000406 + #xfc0c0704 + #xa0400f8 + #x6090103 + #xb07fc00 + #x10d0900 + #xfefdff08 + #x5070503 + #x5000501 + #xb0a0008 + #x601fcf7 + #x5fd010c + #xa020106 + #xc08ff05 + #xf9fd0708 + #x6090700 + #x3fc0002 + #xb03ff09 + #x10100 + #xfff50810 + #xc0a0704 + #x700fe07 + #xf9040900 + #x40906fa + #xfff8ff04 + #x3ff0308 + #xfd080803 + #xfdfb0c08 + #x100e0400 + #xfdfb020d + #xff0901f7 + #x20903f7 + #xfcf6ff04 + #x10403 + #x4100a00 + #x1000801 + #x120cfe00 + #xf7fd0810 + #x505f7f5 + #x700fa + #xfcf70001 + #x10400fe + #xe1005fe + #x4010304 + #x1107fe06 + #xf8030e11 + #x4fff3fa + #xfe0602ff + #xfff7fdfe + #x403f9ff + #xd080401 + #x202070c + #xf060308 + #xff070c0f + #xfaf5fe + #xfe060300 + #xf4fafb + #x3fff703 + #x4020804 + #x40c0f0e + #x10070502 + #x40a12 + #xfffcf8fb + #xfd0403fe + #xfdf0f8fb + #xfdfd06 + #xfb060d02 + #xf181107 + #x1206ff00 + #xfdfe0a1a + #x300f3f3 + #xfb0000fc + #xf7eff9fd + #x30301 + #xfd0b09fd + #x1d190b00 + #xe00fa0a + #xf4ff131f + #x9ffecee + #xf8fdfdff + #xf3f0fdff + #x70d03fa + #x306fffd + #x1f130600 + #x9fcff17 + #xf2071d1c + #xbf8e5ef + #xf3fafe06 + #xf3f301fe + #x1213fdf4 + #x2fafb03 + #x190e0704 + #x3fc0a1d + #xf9131d14 + #x3f0e7f9 + #xf0f9020b + #xf5f803f8 + #x190ff4f4 + #xf7f3000c + #x12100d08 + #x4021115 + #x416140d + #xfbf1ee01 + #xf0fa0509 + #xf6fc00f4 + #x1908f1f7 + #xecf40811 + #x13171104 + #x6060f0b + #xc120c10 + #xf7f8f506 + #xf2fa0600 + #xf7fffcf3 + #x1502f5f8 + #xe7fe0d10 + #x1c1c10fc + #x5050708 + #xf0d0c14 + #xfb00f709 + #xf2fb03f7 + #xfa00f9f6 + #x1200faf7 + #xee04090f + #x1f160bf7 + #x30010 + #x100b1010 + #x201f90e + #xeff9fef4 + #xfefef9f9 + #xf02f9f5 + #xf7020411 + #x1d100af8 + #xfe02031a + #x130b0e06 + #x6010014 + #xebf8faf7 + #x2fafbf9 + #xc03f7f8 + #xfcfc0413 + #x160f0dfe + #xff040a1d + #x150a05fb + #x5030d15 + #xe9f8f8f9 + #x2f8fdf6 + #x903f6fc + #xf9f80912 + #x10160f00 + #x5070f17 + #x1102fbfa + #x40b140f + #xebf8f7f9 + #xf7fef3 + #x804f700 + #xf6fc0d0b + #x121c0e00 + #x9090f0e + #x7f9f600 + #x9151304 + #xeff8f6f7 + #xfdf7fcf2 + #x904f900 + #xf7010c05 + #x191c0a00 + #x9080c0b + #xfef3f705 + #x111809ff + #xf2f6f3f9 + #xfbf8fbf6 + #xb03fafe + #xfc050705 + #x1b120903 + #x8090a11 + #xfbf4fb07 + #x121303ff + #xf3f4f2fc + #xfcf7fcfb + #xa01f9fc + #x40407 + #x150c0c07 + #xa0d0b13 + #xfcf6fc05 + #x100e0500 + #xf3f3f2fe + #xfbf600fe + #x4fff7fc + #x2030707 + #xb0d1009 + #x100f0b0e + #xfcf4fb07 + #xc0e08fc + #xf4f2f1ff + #xf9f80700 + #xfff7fd + #x5060901 + #x912100b + #x150d0907 + #xf7f3fc0e + #xb1204f5 + #xf5eff0fd + #xf7fe0a00 + #xf8fc + #x80b07f9 + #xa110f0f + #x12090601 + #xf3f60116 + #xf12f9f4 + #xf6edf2fd + #xf9060c02 + #x300f8fb + #xc0cfff3 + #xb091016 + #xb070200 + #xf8fe0916 + #x1008f2fb + #xf2ecf800 + #xd0b03 + #x5fdf9fa + #xd07f7f9 + #x601161a + #x908ff02 + #x30c10 + #xa00f602 + #xeef1ff02 + #x70c0a03 + #x2fbfafc + #xa01f500 + #xff011c18 + #xb08fc01 + #x5050c0c + #x4feff02 + #xedfa0301 + #xc070a02 + #xfcfcfc02 + #x5fefb01 + #xfa0b1f14 + #xe07fbfe + #x2080d09 + #x10000fe + #xf2020200 + #xb030a00 + #xfa010006 + #x40000fd + #xfe12170b + #xe04fafc + #xc0c08 + #x100fdfe + #xfa060200 + #x80009ff + #xff080009 + #x50300f5 + #x40f0907 + #xd01fbfe + #x3100807 + #xfefc05 + #x2080403 + #x6000601 + #x80c0009 + #x803fdf4 + #x802010a + #xa01ff04 + #xb0d0204 + #xfcfd030d + #x9070400 + #x30202 + #xd010407 + #x2fff702 + #xfffb0a0b + #x8030406 + #xe00fe0a + #xfb020905 + #x80903fa + #xfefd0104 + #x6fd0608 + #xff030008 + #xf7fe0f06 + #xd0a0501 + #x2fb000d + #x803fc + #x609fff7 + #xfafa0303 + #x704 + #x40a0504 + #xfa050bff + #x110900ff + #xfafb0811 + #x506faf7 + #x509fcf9 + #xf9fa0300 + #x1030301 + #xe0f0400 + #x50300 + #x1003ff02 + #xf8000d12 + #x7fff4fa + #x405fc00 + #xfafb01fe + #x602fdff + #x110a0100 + #x20309 + #xc010305 + #xfe070f11 + #x1f8f6ff + #x305ff01 + #xfbf9fdfb + #x5fdfb02 + #x8060403 + #x1060b0e + #xb040603 + #x2070c10 + #xfef7fa00 + #x2050000 + #xf9f6fafb + #x1faff05 + #x90803 + #x80f1109 + #xc050201 + #x20d14 + #xfbf9f9 + #x4fffd + #xf5f2fafb + #xfefe0502 + #xff0e0800 + #x17160cff + #xc00fb08 + #xf800141c + #x5faf0f1 + #xfd00fc00 + #xf1f3fdfc + #x40605fd + #x70b01fe + #x1f1204fe + #x5fb0018 + #xf3091e19 + #x8f4e8f1 + #xf9fcfb07 + #xf0f600fa + #xe0cfef7 + #x601fc02 + #x1a0d0302 + #xfb0c1e + #xf9141f13 + #x2ebe5fa + #xf5fa010d + #xf1fc01f5 + #x1709f7f5 + #xfcf9000b + #x120c0806 + #xff001419 + #x619170d + #xf9e9eb04 + #xf4fc070b + #xf401fff1 + #x1800f5f6 + #xeffa0714 + #x14110e01 + #x1081110 + #xf13110d + #xf5eef20b + #xf4000900 + #xf602faf0 + #x14fcf7f6 + #xeb010c17 + #x1a150ef8 + #x40a080f + #x110c110f + #xfaf6f80c + #xf30103f7 + #xfa01f8f3 + #xdfcfaf5 + #xf2070b17 + #x1f1609f0 + #x3060114 + #xe0a150d + #x1f8fc0e + #xf200fbf6 + #xfffdf9f5 + #xafef9f6 + #xfc050917 + #x1c1204f1 + #x1041c + #xe0e1302 + #x3f80312 + #xf0fef7fa + #xfbfdf4 + #xa00f5f9 + #xff0916 + #x151103f7 + #x10e1f + #x110e0afb + #x1fc0e14 + #xeffaf500 + #xfafff0 + #x900f300 + #xfbfd0e12 + #x101606fd + #x3051518 + #x1006fefb + #x205160f + #xf0f9f5ff + #xfdfbfdec + #x9fef603 + #xf500110d + #x151b08fd + #x608120f + #x7fbf800 + #x70f1505 + #xf3f7f4fd + #xfbfdfbec + #xafefb02 + #xf5060e09 + #x1b1907fc + #x6090d0e + #xfdf3fa07 + #x10150dfd + #xf4f5f2fc + #xfafdf8ef + #x9fefd00 + #xfa080808 + #x1f1407fc + #x6090913 + #xf6f3ff07 + #x161104fb + #xf4f3f102 + #xfafbfaf4 + #x8fefdfd + #x5050a + #x190f0900 + #x80b0b18 + #xf7f70005 + #x140b03fd + #xf3f1f207 + #xf9fafff8 + #x6fdfafe + #x204070a + #x100f0c03 + #xc0c0e13 + #xf8f6fe05 + #xe0906fb + #xf4f0f407 + #xf6fc02f8 + #x2fcfafe + #x2060906 + #xd130d05 + #x100c0c0a + #xf6f3fe0d + #xd0e03f5 + #xf4eff304 + #xf50206f9 + #x3fbfbfc + #x50b06ff + #x10130d09 + #xf090606 + #xf1f20416 + #x110ffaf3 + #xf3edf401 + #xf70907fb + #x3fafcf8 + #xa0cfefc + #x110d100d + #xa070207 + #xf2f90d17 + #x1406f1f8 + #xf0edf602 + #xff0e08ff + #x2fafbf8 + #xe07f6fe + #xa071612 + #x8070007 + #xfb011210 + #x10fbf400 + #xebf1fb07 + #x70d0afe + #xf9fafb + #xefff404 + #x91d13 + #xa06fe06 + #x2070f09 + #x6f7fd03 + #xebf9ff07 + #xb0a0bfb + #xfdfbfa00 + #x9fafa04 + #xfc121d10 + #xc02ff01 + #x4090c09 + #xfc0101 + #xf1000004 + #xa080bf6 + #xfbfefd08 + #x4fc00fe + #xfe1b180c + #xc00fffa + #x30b0a0c + #x100fc01 + #xfb04ff01 + #x50608f5 + #x1000b + #x301fff7 + #x6170e08 + #x9fefdfa + #x70e080c + #x1fffa07 + #x3040002 + #x20704f9 + #x804030b + #x403faf7 + #x90a0709 + #x6fefe00 + #xe0c050b + #xfefcff0d + #x9060302 + #x1040200 + #xd030309 + #x401f6ff + #x4fc080c + #x6000306 + #x1006000a + #xfc00090b + #xa0501fd + #x30106 + #x5000a03 + #x1f9fc0e + #xf8030e05 + #x6050500 + #x7fc030c + #x70700 + #xa07fef8 + #xfc000306 + #xff000a02 + #x201040b + #xf70a09fe + #xc0802fa + #xfcf90811 + #x506fef9 + #xa05f9fa + #xf9000303 + #xff0407ff + #xc080402 + #xff0c00ff + #xd0200fb + #xf7ff0f13 + #x6fff7f9 + #xa02f900 + #xf9000000 + #x30302fe + #x12090100 + #x1060007 + #x9000200 + #xfb061112 + #x1f8f7fe + #x900fc04 + #xf900fcff + #x5ff00fe + #xe050004 + #x3070e + #x5020701 + #x10a0f0f + #xfcf6fc00 + #x701ff02 + #xf9fcfafe + #xfa0300 + #x7070406 + #x40a0e0b + #x8050300 + #x1070e10 + #xfbf8fefc + #x501fe00 + #xf6f9f9fe + #xfbfc0800 + #x60c0603 + #xe120d02 + #x902ff05 + #xfc051213 + #xfff9f7f4 + #x200fb00 + #xf3f7fbfc + #xfe0309fc + #xb0d0200 + #x1a1403fd + #x5fbff13 + #xf50a1b16 + #xf3ecf2 + #xfffbfb08 + #xf1fafdfa + #x80802f7 + #xc04fe02 + #x1a0c0002 + #xfdfa0c1e + #xfa171f0f + #xfdeae7fb + #xfbf9000e + #xf1fffef7 + #x1106fbf4 + #x2fdff0a + #x14090306 + #xfc01171b + #x51b1a09 + #xf5e5eb06 + #xf7fc0a0c + #xf403fbf2 + #x13fff9f3 + #xf6fc0615 + #x110c0b03 + #xb1413 + #x10161307 + #xf1e7f50c + #xf6010b02 + #xf904f7f1 + #xdfafaf3 + #xf2010c1c + #x16120bf6 + #x40d0a11 + #x10101307 + #xf3edfd0c + #xf70505fa + #xfd00f5f1 + #x7fafaf4 + #xf8060f1c + #x1b1504ed + #x5070417 + #xb101606 + #xf8f1010a + #xf804fbf9 + #xfef7f3 + #x4fdf8f5 + #x106101a + #x1a14fced + #x301071e + #x9131501 + #xfbf3080d + #xf9fff500 + #xfbfbf1 + #x5fef4fb + #x3021216 + #x1512faf6 + #x100121f + #xc150afb + #xf9f81010 + #xf9faf503 + #xfefdfbee + #x7fbf500 + #xfd001312 + #x1312fefd + #x1051a18 + #xe0efffb + #xf902170e + #xf8f5f703 + #xfb01f8eb + #x6f8fa01 + #xf605140e + #x171402fd + #x30a1610 + #x9fff900 + #x10e1604 + #xf8f4f700 + #xfb02f4ea + #x5f8ff00 + #xf60a0f0c + #x1d1504f9 + #x40b0d0f + #xfdf6fc05 + #xc130ffa + #xf7f3f500 + #xfb00f2ee + #x4fa01fe + #xfd0b0a0d + #x1f1203f7 + #x5090917 + #xf4f50105 + #x131105f6 + #xf6f0f406 + #xfcfff3f1 + #x3fc00fc + #x107070e + #x1b0f02fa + #x6090b1c + #xf2f90302 + #x120a02f8 + #xf4eef60e + #xfafdf8f4 + #x2fcfffc + #x304080d + #x141005ff + #xa0b1118 + #xf5fb0003 + #xe0803f8 + #xf3edf90f + #xf8fffdf5 + #x1fbfefc + #x2060b0a + #x11130801 + #xd0c0f0f + #xf4f6ff0a + #xb0b02f4 + #xf3eefb0a + #xf704fef5 + #xfafff9 + #x40b0705 + #x14130903 + #xd0a080a + #xf0f40612 + #x110cfbef + #xf1edf907 + #xfb0900f8 + #xfa00f6 + #xb0c0003 + #x150f0c06 + #x908020d + #xecf91113 + #x1404f4f1 + #xeeedf708 + #xc02f9 + #xfffafdf6 + #x1005fa05 + #xf0d100b + #x705010f + #xf103160c + #x10f8f4fb + #xeaeffa0e + #x80d06f8 + #xfdfbfaf9 + #x11fcf907 + #x410150f + #x904020b + #xfc0b1206 + #x4f3fd01 + #xebf4fe11 + #xb0c08f4 + #xfbfbf900 + #xaf7ff05 + #x191811 + #xa010401 + #x20c0c08 + #xfdf80203 + #xf2fa000c + #xa0d06ef + #xfcfbfc07 + #x3f80100 + #x41f160e + #x80002f9 + #x40b0a0d + #xfcfeff03 + #xfcff0005 + #x60f01ef + #xfffd020a + #xfa + #xc1c0f0a + #x3fffef7 + #x70b0b0f + #xfefc09 + #x4000002 + #x40dfdf4 + #x3000708 + #x302f9fb + #x11110b08 + #x1fefcff + #xe0b0a0d + #xfffbff10 + #x8000002 + #x30afcfd + #x7000905 + #x5fef503 + #xa050a09 + #x1ffff05 + #x1106060a + #xfcfd070f + #xa050200 + #x1060004 + #x7000a04 + #x2faf70b + #xfc000d07 + #x4030404 + #xdff020b + #xfd050c03 + #x80300fb + #x201030a + #x60800 + #xfef8060b + #xfb0e0902 + #x70602f7 + #xfdfd0a0b + #x40904f9 + #xa01fafa + #xfe020408 + #xff0707fd + #x4020904 + #x11000ff + #xa04fef5 + #xf5ff1011 + #x602fbf6 + #xbfef900 + #xfd030006 + #x20704fb + #xd060300 + #x606fc07 + #x600fffc + #xf7071311 + #x2faf8fb + #x8fcfc04 + #xfd02fe06 + #x30201fa + #xe040003 + #x300030f + #x3000200 + #xff0d120e + #xfaf7fc00 + #x6fd0003 + #xfdfefb05 + #xffff03fc + #xa030307 + #x1040d0f + #x4040300 + #x30c0f0b + #xf7f900ff + #x5ff0000 + #xfafafb04 + #xf9ff07fc + #x9060705 + #x80f0c07 + #x7030001 + #x9100e + #xfafcfcf8 + #x4fefeff + #xf7f9fb02 + #xfa0307f9 + #xd090500 + #x12120302 + #x5fe000c + #xfb0c150f + #xfdf7f1f4 + #x2fafd04 + #xf4fafbff + #x20904f6 + #x110600ff + #x180dfe05 + #xfefb0a18 + #xfc161b0e + #xf9ede8fc + #xfdf80209 + #xf4fffafb + #xb07fef3 + #x800ff07 + #x1405020a + #xf901181b + #x81e1905 + #xf2e5ec07 + #xf7fb0b09 + #xf802f8f7 + #xe00faf0 + #xfdfd0413 + #x10070805 + #xfd0c1716 + #x121b1301 + #xebe4f70d + #xf6020e01 + #xfd01f5f5 + #x8fcf9f1 + #xf9000e1a + #x110e09fa + #x6100e13 + #x12141001 + #xeaea010b + #xfa0708fa + #x1fef3f3 + #x2fcf7f3 + #xfe05151b + #x161400ef + #x9090a17 + #xb141202 + #xeef00607 + #xfd06fff9 + #x1fbf4f3 + #xfef5f8 + #x3071716 + #x1912f5f0 + #x6010d1c + #x8191201 + #xf1f40709 + #xff00f8ff + #xfbf6f2 + #x3fef3fc + #x4061812 + #x180df2f8 + #x161d + #xd1c0afd + #xf0fa0d0f + #xfff7fa02 + #xfdfff5f1 + #x4f9f5ff + #xfe08180e + #x1609f7ff + #xff071c17 + #x1313fefd + #xf204130f + #xfbf2fd01 + #xfd02f2f0 + #x3f6fc00 + #xf90b150e + #x1809fefe + #x10e1711 + #xf04f800 + #xfb0f1507 + #xf8f3fefc + #xff02eef0 + #xf602fe + #xfa0f120e + #x1d0c02f9 + #x40e0d14 + #x1f9fc03 + #x8150efb + #xf6f2fafd + #xffedf2 + #xfefa04fc + #x10e0d0e + #x1e0efff5 + #x60a091a + #xf6f80103 + #x111304f3 + #xf4f0f905 + #xfbeff4 + #xfefe02fb + #x6090b0e + #x1b0dfdf7 + #x6080e1f + #xf2fd0301 + #x120cfef4 + #xf3edfb0e + #xfffbf3f4 + #xff00fc + #x6040c0e + #x160efefd + #x809131c + #xf5ff0000 + #xc08fef6 + #xf0ed0011 + #xfcfef6f4 + #xfffdfffb + #x2070e0a + #x140f0100 + #xb0c1314 + #xf6fafe07 + #xa09fff4 + #xefef030d + #xfb02f9f5 + #xfefc00f8 + #x40a0c07 + #x160f0401 + #xc0c0c10 + #xf1f7030e + #xd0afbec + #xeef10109 + #x5faf6 + #xfcfcfff5 + #xa0b0506 + #x160e0601 + #xb080512 + #xebfb0f10 + #x1205f4ea + #xebf0fd0b + #x506fdf7 + #xfafefbf5 + #x10050005 + #x110e0907 + #x9040614 + #xec07160a + #xefaf2f1 + #xeaeffc13 + #xa0800f5 + #xfbfef7fa + #x10fd0004 + #xa120d0f + #x802090f + #xf6121205 + #x1f2f9fd + #xeaf00117 + #xc0b02f0 + #xfcfdf600 + #x8f70203 + #x8191113 + #x7010904 + #x1120905 + #xf9f80002 + #xf0f50611 + #xb0f00ec + #xfcfbfb06 + #xfff904fe + #xc1d1412 + #x50105fc + #x60c080c + #xf8fe0004 + #xf8fa0607 + #xa11f9ed + #xfdfb0208 + #xfcff01fc + #x141c120c + #x201fdfa + #x70a0b0e + #xfdfffe07 + #xfffd0400 + #xa0ef4f4 + #xfffe0905 + #xfbfe + #x19130e08 + #xf701 + #xb0b0e09 + #xfefb010d + #x2fe0201 + #xa09f5fe + #xa03 + #x4fcf703 + #x100b0c07 + #xfb07 + #xe090b07 + #xfbfb090f + #x4000200 + #x803fb05 + #x30901 + #x3f5fa0b + #x5080c08 + #x2010006 + #xc030806 + #xfb010d08 + #x80301fd + #x302020a + #x40a01 + #xfff5020e + #xfb0c0a04 + #x50503fd + #x2fd070a + #xa09f9 + #x501fdfa + #x201070b + #x20a0300 + #xf9000d02 + #x70e0301 + #x803faf7 + #xf5030f0a + #x607fff3 + #x6fefafe + #x2060b + #x40a01fc + #x30607ff + #xc07ff04 + #x600f8fb + #xf40a130e + #x4fff8f8 + #x4fafd03 + #x100030b + #x506fffa + #xa050201 + #x7fe020d + #x1fffd01 + #xfe10130b + #xfdfaf9ff + #xfa0003 + #x1fd020b + #x103fefb + #x9020404 + #x1ff0b11 + #x2020001 + #x6100f08 + #xf7fbfe02 + #xfd01fe + #xfffa0108 + #xfc0200fd + #x7040802 + #x30a0e0d + #x5040000 + #x60c0d08 + #xf9fffdfe + #xfe00fb + #xfaf90006 + #xfc0602fb + #xa0708fd + #xd100608 + #x4000005 + #x10c110c + #xfcfdf4fa + #xfbfffd + #xf8faff04 + #x10a01f7 + #xd0703fa + #x14090009 + #xfffd0711 + #x113140b + #xfbf3eaff + #xfdf90202 + #xf8fcfd01 + #x809fef4 + #xc02ff00 + #x1302020e + #xfa021419 + #xb1c1505 + #xf2e7eb0a + #xf5fd0b02 + #xfbfdfafc + #x904f9f2 + #x2ff030c + #xe03090b + #xff0d1817 + #x161c10ff + #xe9e4f710 + #xf4050ffe + #xfdf7f8 + #x700f5f3 + #xfd000d15 + #xc0a0900 + #x6101314 + #x17180cff + #xe5ea020d + #xf90c09f6 + #x3faf5f5 + #x1fff3f7 + #xfe061914 + #x1211fff5 + #xb0b0e14 + #x10160b02 + #xe7f30508 + #x900f3 + #x2f6f4f4 + #xfef1fc + #x10b1c0e + #x170ff3f6 + #x7031318 + #xe190a04 + #xeaf9030a + #x400fbf6 + #xf8f4f6 + #x2fbf100 + #x20f1c09 + #x1905effd + #x3191a + #x141a0503 + #xedfe0513 + #x1f8fdf9 + #xfefcf3f7 + #x3f7f500 + #xff10190a + #x17fef602 + #xfe091c17 + #x1c14fd00 + #xf0040c16 + #xfaf602f6 + #xfff1f8 + #xf5fdff + #xfd13150c + #x15ffffff + #x1111515 + #x1904f900 + #xf90f100e + #xf4f702f2 + #x2feeff7 + #xfbf701fd + #x14130c + #x170401f8 + #x6110d17 + #xafafb01 + #x6160dff + #xf2f8fdf5 + #x5f9eef6 + #xf8fc01fd + #x711110a + #x1909fdf5 + #x90b0b1c + #xfaf90102 + #x111502f5 + #xf1f5fa00 + #x4f4f0f6 + #xfb00fffe + #x90c1009 + #x190af8f8 + #x707111f + #xf5ff0201 + #x140efaf5 + #xeff1fe0b + #x1f4f2f6 + #xfe01fd00 + #x7091007 + #x1708f8fe + #x608181e + #xf901ff01 + #xf07f9f8 + #xecf00511 + #xfff7f5f5 + #xfeff + #x2091107 + #x1509fe01 + #x80d1818 + #xfcfdfc04 + #xb07faf6 + #xeaf4090d + #xfffbf6f4 + #xfefffefb + #x30d0f05 + #x17090000 + #xb0e1115 + #xf6f8000b + #xc07f7ef + #xe9f80809 + #x2fff8f4 + #xfc00fcf9 + #xa0c0a04 + #x170a0200 + #xb090b17 + #xeefc0b0e + #xf04f1e8 + #xeaf6020b + #x700fbf4 + #xfc01f7fa + #xf070702 + #x120b0305 + #x8030b18 + #xec08120b + #xcfceced + #xe9f20213 + #x900fdf2 + #xfd00f3ff + #xc000600 + #xe0e060f + #x6011113 + #xf8140e06 + #x2f5effa + #xe9f10716 + #xa06feee + #xfefdf404 + #x4fe07fd + #xe120d14 + #x4031009 + #x5140607 + #xf7f6f903 + #xebf50e11 + #xc0dfbeb + #xfff9f908 + #xfbff05fc + #x13171513 + #x3050800 + #xc0d040a + #xf5fefe06 + #xf1fc1002 + #xf0ef4ed + #xfdf90108 + #xf80201fc + #x1a16160c + #x105fc01 + #xb08090b + #xfb00ff07 + #xf6000afb + #x1109f0f4 + #xfcfd0706 + #xfd02fdfe + #x1b141205 + #x201f508 + #xa0a0d07 + #xfffe010a + #xfa0004fd + #x1101f3fd + #xfc020706 + #x3fcfb02 + #x160f0e05 + #x2fef70e + #xc0d0d01 + #xfbfc090d + #xfd0003ff + #xdfcfa03 + #xff060505 + #x1f6fe06 + #xb0c0b07 + #x2fefe0c + #xb0a0902 + #xf9000f09 + #x102fd + #x8fc0107 + #x80305 + #xfbf50606 + #x40e0a07 + #x4010201 + #x4040804 + #xff080dff + #x40300fa + #x300070b + #x2090303 + #xf8fd0c05 + #x3100602 + #x704fef7 + #xf9010c08 + #x60a00f4 + #x200fbfc + #x2030b09 + #x8070001 + #xfa0a08ff + #xe0602fe + #x6fdf300 + #xf70c0f0a + #x703f6f7 + #xfcfb01 + #x2010a0b + #x907fdfe + #x4090200 + #xafd0205 + #x1faf706 + #xff13110b + #xfcf600 + #xfefbff03 + #x2fe0a0a + #x703faff + #x7040303 + #xfd0b0d + #xfeff06 + #x9130e06 + #xfbfbfb06 + #xfcfd01ff + #xfffc0907 + #x202fb00 + #x4030701 + #x40f0d + #x3010002 + #xc100b05 + #xfafffe04 + #xfdff00f9 + #xfbfb0806 + #x4feff + #x50807fb + #x80d0c0a + #x501ff01 + #x80c0c07 + #xfefff700 + #xfdfefef9 + #xf9fc0504 + #x407fefb + #x90a02f8 + #x1109060b + #xff030a + #x60f1009 + #xfff8ef02 + #xfafc00fd + #xf9fc0203 + #xa08fcf7 + #xa06fefd + #x1100060f + #xfb010c15 + #xc171103 + #xf7eaee0d + #xf5ff0600 + #xfbfb00ff + #xb04f8f5 + #x5000006 + #xafe0c0f + #xfe0c1617 + #x171a0dfd + #xeae4f915 + #xf4070bfb + #xfff9fef9 + #x701f3f8 + #x90d + #x8070b05 + #x7111612 + #x1b1607fd + #xe3e90313 + #xfa0e08f2 + #x1f7f9f4 + #x4fff0fc + #xfe08160e + #xc0e03fc + #xc0d1310 + #x16130503 + #xe4f4040e + #x30d00ec + #xfff6f5f4 + #x3fcef00 + #x111b08 + #x150af7fb + #x7071413 + #x14150508 + #xeafc0011 + #x605fcec + #xfdf6f3f8 + #x4f7f301 + #x2161905 + #x17fef300 + #xff081818 + #x1b150408 + #xeffe0018 + #x2fdfced + #xfcf8f4fd + #x2f3f900 + #x1191607 + #x14f5f901 + #xfe10191a + #x1f0e0002 + #xf301071e + #xfafa00ec + #xfffaf5fe + #xfdf2fdff + #x219120b + #xff70000 + #x3161518 + #x1e02fcff + #xfb091016 + #xf2feffea + #x3f7f4fb + #xf8f800fe + #x717120b + #xd0001f9 + #xa120d19 + #x10f9fd00 + #x6110f06 + #xf0fffaee + #x5f2f4f8 + #xf8fefe00 + #xd141207 + #x1006fbf7 + #xb0b0f1d + #xf80002 + #x121304f9 + #xf1fbf6fa + #x3eff5f5 + #xfa01fc04 + #xe101201 + #x1306f4fb + #x706161f + #xf8ff0203 + #x150df9f8 + #xeff5fb08 + #xeff6f4 + #x1fc05 + #x90e1100 + #x1503f601 + #x4091c1e + #xfc01ff02 + #x1205f4fc + #xecf5030f + #xfcf3f7f3 + #x100fe03 + #x4100f00 + #x1400fb02 + #x50e1d1b + #xfdfc04 + #xc01f7fb + #xe8fa0b0e + #xfdf6f7f1 + #xff00 + #x3110e02 + #x14020000 + #xa111519 + #xfbf7fe08 + #xc03f6f2 + #xe9000a0a + #xf8f8ef + #xff00fbfe + #xa100c01 + #x14050000 + #xc0c1119 + #xf2fa060c + #xe01f0ec + #xebff050b + #x4faf9ee + #xff00f600 + #xe0c09ff + #x1207ff04 + #x806131a + #xef050e0c + #xcfbe7ef + #xedf90511 + #x4fdfbed + #xfff404 + #xa0707fc + #xf07030d + #x3031615 + #xfb110c09 + #x2f3e6fd + #xeaf60b14 + #x502faeb + #x2faf607 + #x20406fb + #x11090c14 + #x8150f + #xc120508 + #xfaf3ee0a + #xe8f9130c + #x908f7e9 + #xf6fc08 + #xfc0603fc + #x140d1410 + #x20c0c0a + #x14090209 + #xf8f9f90d + #xea0214fe + #xf0af2eb + #xfcf60109 + #xfa0600fe + #x18121807 + #x40a0009 + #x10040709 + #xfdfefe09 + #xef080cf7 + #x1401f0f0 + #xfafc050a + #xff03fd00 + #x19151401 + #x502f810 + #xa070c05 + #xfe0109 + #xf50803f8 + #x13faf3f7 + #xfb02040c + #x2fefd00 + #x16140e00 + #x4fbfa14 + #xa0d0b01 + #xfdfd060c + #xf90400fd + #xef5fbfd + #xff06010f + #xf900ff + #x10110a04 + #x3fa0111 + #xd0e0601 + #xfa000c0b + #xfc0301fd + #x7f70200 + #x307010e + #xf8f80500 + #xa0f0b06 + #x2fd0408 + #xa090403 + #xfc070d02 + #xff0300f9 + #x2fd0803 + #x6070109 + #xf30009ff + #xa0e0a03 + #x40000ff + #x60706 + #x40c06f7 + #x203fcf9 + #x1010a08 + #x7080004 + #xf6070aff + #xd0a04fe + #x6fff6fd + #xf80a0c09 + #x906f6fb + #x1fdf901 + #x1070b04 + #xa02ff01 + #x30a0003 + #xb0100fa + #xf4f80b + #x4100d0a + #x5fef203 + #xfffbfd05 + #x1030c06 + #x900fc02 + #x7060005 + #xfd0505 + #xfcf7000c + #xe140d07 + #xfefaf90c + #xfdfc0001 + #xfe020d03 + #x6fffc02 + #x4040304 + #xfc040e0a + #xfffe0304 + #x12100a03 + #xfdfcff0b + #xfcfffffc + #xfb020b01 + #x4ffff01 + #x3080400 + #x20b0f08 + #x2000100 + #xe0d0904 + #xfefe06 + #xfdfffbf9 + #xf9020801 + #x60200fd + #x70bfffc + #xc0b0b08 + #x1ff0006 + #x80d0c06 + #x1f8f605 + #xfafefbfc + #xf9000701 + #x903fdf9 + #xb08fafe + #xd030a0c + #xfe000711 + #xb120e03 + #xfbeef50c + #xf700ff00 + #xfafe05fe + #xb02f9f8 + #x901fc06 + #x7010e0e + #xfe071115 + #x13160afd + #xede5fd16 + #xf70605fe + #xfcfb01f7 + #x900f4fa + #x200040b + #x2060f09 + #x6111611 + #x1a1404fb + #xe2e90617 + #xfe0d04f3 + #xfcfafcf2 + #x7fdf3fe + #xff070f0a + #x70c0601 + #xc10150b + #x190e0103 + #xe3f40814 + #x70effe9 + #xfbf9f7f3 + #x5f7f501 + #x131607 + #x1208fdfe + #x80c130e + #x170c040a + #xeafc0116 + #xc07f8e5 + #xf9f8f3fa + #x3f3f901 + #x41b1206 + #x14fcf9ff + #x10d1416 + #x1c0e0709 + #xf2fb021d + #x500f7e5 + #xf9f7f400 + #xf1fe00 + #xa1c0f09 + #xef2fd00 + #x131519 + #x1f0b0401 + #xf6fb0a1f + #xfc00f7e7 + #xfcf5f801 + #xf9f300fe + #xe1a0e0b + #x6f500fe + #x5171319 + #x1d0300fc + #xfb01151b + #xf502f6e8 + #xf3fcfe + #xf6f7ffff + #x1218100a + #x2ff00fa + #xf141117 + #x10fafefd + #x30b170a + #xf502f1ee + #xf1fbf6 + #xf6fefc03 + #x13151102 + #x706f8fb + #xe0b1316 + #xfff80003 + #xe100bfd + #xf8fdeef9 + #xfef0f9f2 + #xfc00fd08 + #x121410fd + #xe05f400 + #x7071a19 + #xf7fd0205 + #x150cfdfa + #xf6f6f307 + #xf9f1f8f1 + #x1ffff09 + #xd140dfb + #x11fdf605 + #xb1f1b + #xfc000003 + #x1301f7ff + #xf0f5ff10 + #xf6f3f7f0 + #x2fe0105 + #x8140aff + #xffafc05 + #x3121e1b + #xfdfe02 + #xdfdf9ff + #xecfc0811 + #xf7f6f7ed + #x1ff0201 + #x9140901 + #xefc0001 + #x9151a1a + #xfef7ff04 + #x8fdfaf6 + #xed030b0d + #xfbf8f6ea + #xff00 + #xc130901 + #xd01ff00 + #xd10151b + #xf3f70409 + #x9fef3ee + #xf204060d + #xfef9f6e9 + #x200fb01 + #xf0f08ff + #xe02fd03 + #x80a1819 + #xf0010b0c + #xaf9e8f1 + #xf4000510 + #xfffdf6e9 + #x3fcfa05 + #xc0c06fd + #xe02000c + #x20a1b16 + #xfb0b0d0a + #x4f0e300 + #xf0fb0d12 + #xf6ea + #x2f6fd07 + #x50b01fe + #xe020b10 + #xe1812 + #xc0e0806 + #xfcebeb0e + #xea00140b + #x504f3e8 + #xfff40107 + #x10aff00 + #x1007150c + #x2130e0f + #x16070504 + #xf7eefa12 + #xe90913ff + #xc03f0e7 + #xfaf60508 + #x107fd02 + #x13101803 + #x70f0411 + #x11010703 + #xfaf7020c + #xf0100af6 + #x11fdefe9 + #xf8fa050c + #x403fd01 + #x141812fd + #x905ff13 + #x7030a03 + #xfffa0308 + #xf90e00f8 + #xff5f2ed + #xfa010412 + #x5fffffe + #x141a0bff + #x6fb0216 + #x70b0902 + #xfefc050b + #xff08fcfe + #x9f3f8f3 + #x30416 + #xfb00fc + #x13170703 + #xf80913 + #xc0d0404 + #xfaff090e + #x3fdff + #xf7fff9 + #x5030613 + #xf8fe02fc + #x10100905 + #xfefb0a0c + #xf080105 + #xfc060b09 + #x2fffa + #xfdfe03fc + #x702070c + #xf40204ff + #xf0e0b00 + #xfffe0306 + #x8050407 + #x30b0600 + #x102fcf9 + #xfe040700 + #x8020606 + #xf7090401 + #xf0b08f9 + #x2fdfb05 + #x1080808 + #x909fbfa + #x201f9fe + #x60a04 + #x9030103 + #xc0202 + #xe0500f8 + #x1f6f609 + #x10f0c0b + #x8fef309 + #x3f9fb06 + #x20b0802 + #x6ff0001 + #xa04000a + #x301fdfe + #xf6f4040c + #x110f0d06 + #x1f7f810 + #xfff90005 + #xb0902 + #x4fb0002 + #x702020a + #xfc030606 + #xf7fb0906 + #x15100b01 + #xfdf80210 + #xfdfcffff + #xfe0b0900 + #x1fc0200 + #x4050306 + #xc0d06 + #xfe0005fe + #x110d0700 + #xfefc040b + #xfdfefbfc + #xfc0a07ff + #x1fe03fc + #x8080002 + #x80f0c04 + #x1000000 + #xb0c0803 + #x1fbff07 + #xfdfcf8ff + #xfc0806ff + #x50100f8 + #xe05fa03 + #xb0a0a08 + #xfefe030b + #xa0f0a03 + #xfdf2fc0b + #xfbfdfb03 + #xfc0405fd + #x800fbf8 + #xcfffa07 + #x5060d0c + #xfe030e11 + #x101308fe + #xf0eb0113 + #xfb010001 + #xfc0303f8 + #x8fff8fa + #x6fc000c + #xa100c + #x30c150c + #x171102fc + #xe3ec0a17 + #x802f7 + #xfa00fcf3 + #x6faf6fd + #x20a0b + #x40f0b05 + #xb121506 + #x170bff01 + #xe2f60e16 + #xa0afce8 + #xf9fff4f4 + #x3f6fbfe + #x20f0e0a + #xd090300 + #xa111009 + #x15070308 + #xeafc0a16 + #xf07f4e2 + #xf8fbf1fc + #xf200fe + #xa170d0a + #x11fffeff + #x4110f12 + #x16080a07 + #xf3fa091c + #xa01efe3 + #xf9f6f504 + #xfaf202fc + #x11180a0c + #x8f6ffff + #x5151118 + #x1a0a0aff + #xf5f7131e + #x1ffeee8 + #xfaf4fc04 + #xf5f601fc + #x17160c0b + #xfef900ff + #xd171416 + #x170603f9 + #xf6fd1d17 + #xfd00eded + #xfbf4fffe + #xf3fbffff + #x19140f05 + #xfb01fd00 + #x12121410 + #xc00fffd + #xfb081f09 + #xfdffe9f1 + #xfaf4fef6 + #xf7fefd03 + #x181511fd + #x107f802 + #x100b150d + #xfcfbff03 + #x61014fc + #x1f8e8fb + #xf7f6f9f1 + #xfcfdff06 + #x15160df9 + #xa01f507 + #x70a1a10 + #xf5fe0208 + #xf0d03f8 + #xfff1ee06 + #xf4f7f5f1 + #xfc0506 + #x121708fa + #xef9f80b + #x10f1d15 + #xf9010304 + #x1003fafe + #xf7f0fb11 + #xf3f8f4f2 + #xfd0902 + #x101403ff + #xbf5fe08 + #x3151e18 + #x0 + #x9fbfd00 + #xf1f80614 + #xf4f9f4ee + #xff08ff + #x10130402 + #x6fa0004 + #xb191b19 + #xfdfaff00 + #x4fafff9 + #xf2010b11 + #xf7faf2e9 + #x5fd + #x12100502 + #x6ffff02 + #x10161918 + #xf4f80206 + #x3fcf8ef + #xf805080e + #xfafbf0e7 + #x1000000 + #x130f0600 + #x800fd05 + #xb101a17 + #xeffe090b + #x5f8ebf1 + #xfc010710 + #xfafceee9 + #x2fc0001 + #x100d0300 + #xafe000b + #x40f1c15 + #xf8080d09 + #x3eee5fe + #xf8ff0c11 + #xfdffefec + #x1f80402 + #xc0b0001 + #xafe080e + #x1151913 + #x70c0c03 + #xfae4ee0d + #xf003130d + #x300efeb + #xfbf60702 + #x909fd04 + #x704110a + #x7181111 + #x110707fe + #xf3e50011 + #xef0c1103 + #x9ffede6 + #xf6fa0705 + #xa05fe05 + #xa101303 + #xe130a11 + #xb0207fe + #xf2ee0b0a + #xf61208fb + #xefaece4 + #xf5fe050c + #xb00ff01 + #xf1b0e00 + #xd070712 + #x1040801 + #xf7f80a03 + #x10ffcfb + #xbf5ece7 + #xf9000514 + #x8fd01fe + #x151e0500 + #x6fd0913 + #x80704 + #xfafc0607 + #x706f800 + #x3f4f0ed + #xff010a17 + #x1fe01fa + #x18180304 + #xfffb0e12 + #x80b0406 + #xfaff080d + #x700fc01 + #xfbf8f5f5 + #x2001013 + #xfa0000fc + #x16110704 + #xfbff0e0f + #xe070306 + #xfb020c0d + #x400fefc + #xf800faf9 + #x401120a + #xf803ff01 + #x130e0aff + #xfa00080c + #xb020405 + #x1080806 + #x300fbf9 + #xfc04fffc + #x4020e04 + #xfc07ff04 + #x100e07f6 + #xfeff000a + #x5030706 + #x8090001 + #x3fff8fd + #x802ff + #x4020800 + #x4070007 + #xe0b00f4 + #xfef8fe0d + #x5090a08 + #xa01f405 + #x4fbf904 + #x20b0702 + #x6000202 + #xa070009 + #x803fbfa + #xf8f2000e + #xd0e0d09 + #x2f6fe11 + #xf80008 + #x60c0505 + #xfe0200 + #x900050b + #xfd05 + #xf2fd0d06 + #x13100cfb + #xfbf50713 + #xfcf90203 + #x50e0503 + #xfefc03fe + #x501060a + #xff080706 + #xf9030afe + #x110e06f9 + #xfbfc0a0d + #xfbfcfeff + #x40d0400 + #xfc0003fb + #x8040306 + #x70f0804 + #x201fc + #xc0b04ff + #xfefe0609 + #xfcfafa00 + #x30b03fe + #x200f8 + #xd02ff04 + #xb0f0706 + #xffff0004 + #xa0c0602 + #xfcf9000a + #xfcf8fc05 + #x20803fd + #x402fbf8 + #xdfcfe07 + #x80b080c + #xfc000a0b + #xe0f0600 + #xf3f20211 + #xfdfb0105 + #x700f9 + #x5fff9f9 + #x6f9020b + #x30c0d0e + #x91208 + #x140e01fd + #xe7f30b16 + #x103fa + #xfe07fbf6 + #x4fbfafa + #xffff080c + #x5100e0a + #x8111201 + #x1508fe00 + #xe3fa1014 + #x906ffea + #xfd04f3f8 + #xf7fdfa + #x90b0c + #xc0e0802 + #xd140d04 + #x11030106 + #xea001112 + #xe05f3e0 + #xfcfbf000 + #xfcf600f9 + #xb100a0c + #xe040200 + #xc130a0f + #xf070905 + #xf1fe1115 + #xc00ebe2 + #xfbf4f508 + #xf6f801f9 + #x16110a0c + #x6fdff01 + #xb130e14 + #x100c0bfe + #xf2fa1918 + #x6fbe7ea + #xfaf2fe09 + #xf3fc00fa + #x1b0f0e09 + #xfbfefe03 + #x10141411 + #x110b01fa + #xef001f13 + #x3f8e7f0 + #xf8f50201 + #xf3fefefd + #x1b101100 + #xf903fb09 + #x15111607 + #x904fb00 + #xf30c1f07 + #x4f6e7f2 + #xf7fbfffa + #xf7fefe00 + #x181411f9 + #x3f90d + #x110e1603 + #xfffffc09 + #xff1818fa + #x6f0e8f6 + #xf6fdf7f7 + #xfcfd0102 + #x16170bf6 + #x9fef910 + #x80b1607 + #xf7ff010c + #xb1505f8 + #x2eaee01 + #xf4fdf2f9 + #xfefc0900 + #x151603fa + #xaf4fd10 + #x212170f + #xfa020405 + #xe08fcfc + #xf9eafa0d + #xf4fbf2f9 + #xfdff0dfc + #x16130000 + #x5f3020d + #x6191815 + #xff0201fe + #x7fefeff + #xf1f20713 + #xf6f9f2f4 + #xfb020bf9 + #x170d0003 + #xf90309 + #xf1b1a15 + #xfffefdfd + #xfc01f9 + #xf3fe0d11 + #xf8f9f0ed + #xfe0406f9 + #x170c0402 + #xff0007 + #x13191b12 + #xf6fafe03 + #xfefefcf0 + #xfa030d0c + #xf9faeceb + #x303fb + #x150b0401 + #x3fffc0a + #x10151c11 + #xf0fd040a + #x1fcefee + #xff020b0d + #xfaf9e8ed + #xff03fd + #x130c0301 + #x6fc000e + #x9151d11 + #xf4050c09 + #xefe8fa + #xfc010d0e + #xfdf9e9f2 + #xfdfb06fd + #x11090004 + #x4fc080f + #x8191911 + #x20d0c00 + #xf7e4f007 + #xf604130d + #x1f9ecf1 + #xf9fc07fe + #x1004ff06 + #x1020e0c + #xc1b1410 + #xb0c07fb + #xece3030c + #xf40d1206 + #x7f8edeb + #xf5000502 + #xf000204 + #x30f0e07 + #x14160f0e + #x80701fc + #xe8ee0f04 + #xfd1108fe + #x9f6e9e4 + #xf602030a + #xcfe04fe + #xc1a0706 + #x140c0f0e + #xff060102 + #xecfb0efe + #x90cfefb + #x7f3e5e6 + #xfa020612 + #x7ff04f9 + #x151a0308 + #xb04110e + #xfc080309 + #xf4000701 + #xf02faff + #xf3e5ef + #xfe000d15 + #x1f8 + #x1c150309 + #x100f + #x40a0409 + #xf7000609 + #xbfbfeff + #xfaf6eaf8 + #x1170f + #xfc01fefc + #x1c0c0605 + #xfb040d11 + #xb060406 + #xfa020b0c + #x4fb00fd + #xf9fbf1fe + #x51a06 + #xfd03fd01 + #x160b08fe + #xfc060911 + #xa020602 + #xfe060d07 + #x2fffef9 + #xfd00f7ff + #xff0715ff + #x101fe06 + #x120e04f9 + #xfe020410 + #x3030800 + #x5080503 + #x3fef9fc + #x103fc00 + #x80bfd + #x6010007 + #x110ffdf7 + #xfcfd030f + #x3070b02 + #x903fd06 + #x4f9f903 + #x4070002 + #x10504ff + #xa000208 + #xd08f6fb + #xf6f8060f + #x90b0c02 + #x5f9fb0f + #x2f7fe08 + #x50c0404 + #x1000201 + #xb01040b + #x401f902 + #xf1fa0c0b + #x110e0eff + #xfbf70c10 + #xf7fb0506 + #xb080605 + #xfe010101 + #x3020b06 + #xfe0108 + #xf7070c01 + #xf1103f1 + #xf7fd100f + #xf7fd0201 + #xb0a0602 + #xfc0200ff + #x4030a04 + #x5090606 + #x803fb + #xe0dfef7 + #xfa020b0b + #xf8fbfe00 + #xb0904fe + #xfe04fdfe + #x9030500 + #xd0d0407 + #x102fe00 + #xc090000 + #xfc00040b + #xf9f7fe02 + #x80802fc + #x203f8fd + #x8fe0202 + #xd0b050d + #xfe000306 + #xe0b0400 + #xf6fa030f + #xf9f80402 + #x60800fb + #x500f7fd + #x2fb0506 + #x90a0b10 + #xfd050d07 + #x120b01fd + #xedf90a14 + #xfcfe07fa + #x407fafa + #x3fcf9fc + #xfcfe090a + #x90d0f0c + #x50f0c02 + #x1306fefe + #xe8fe1013 + #x10402eb + #x302f5fc + #xfffafcfa + #xfd050c0b + #xd0f0d05 + #xd130602 + #xe01ff03 + #xed04120e + #x905f5e0 + #x2faf304 + #xfbfafef9 + #x70b0b0c + #xf0a0500 + #x1011040b + #x9040605 + #xf202130d + #xafee8e2 + #xfff1f90a + #xf6fcfcfb + #x120c0d08 + #x704ff03 + #x110f0c10 + #xa0d0801 + #xf2011811 + #x7f6e4ea + #xfaef000c + #xf500fbfc + #x170c1102 + #xfd01fd0a + #x1310140b + #xe0f0000 + #xed061f11 + #x4f0e6ef + #xf5f60507 + #xf801fbfd + #x161012fa + #xfc01fe11 + #x140f1601 + #xd07f707 + #xf0131d08 + #x4ede9ed + #xf5ff0000 + #xfbfffdfd + #x13150ef4 + #x2fffe14 + #x100f11fe + #x5fff910 + #xfd1e13ff + #x3eaebed + #xf601fa00 + #xfdfd02fb + #x141807f5 + #x8f90116 + #xa100e03 + #xfefc0011 + #xc1e03f9 + #xfee6eef6 + #xf9fef401 + #xfbfd08fb + #x1715fffa + #x7f30514 + #x5120e0c + #xfd010609 + #x120efafd + #xf3e7f904 + #xfaf8f502 + #xfa020af8 + #x1a0efd00 + #xf40811 + #x9171312 + #x10402fd + #xa01fb00 + #xebf0050e + #xfaf5f7fc + #xfb0907f6 + #x1a090000 + #xfbfa0710 + #x111a1811 + #x201fbfc + #xfffe00fd + #xedfc100d + #xfaf5f4f3 + #xff0a02f7 + #x170704ff + #xfb00020f + #x17191b0b + #xfcfbf904 + #xfd01fcf3 + #xf6041108 + #xfbf6edef + #x20800f9 + #x140805ff + #xff0010 + #x14181b0a + #xf4fb000c + #xfff1ef + #xfe060e04 + #xfcf4e8f2 + #x20400fa + #x12090300 + #x2fa0212 + #xe18190c + #xf502080b + #xf3e8f6 + #xfd040e08 + #xfdf0eaf8 + #xff0103fb + #x12080104 + #xf80812 + #xe1b190f + #xff0b0b02 + #xf6e6f002 + #xf907120a + #xefeef7 + #xfa0202fd + #x11030203 + #xfd010c0f + #x141c160c + #x80e04fe + #xe9e50008 + #xf90e1305 + #x3f1eff0 + #xf8050002 + #xe0006ff + #xff0d0c0d + #x18171407 + #x90afd00 + #xe1f10d04 + #x1120cfb + #x4f3eae9 + #xfc060009 + #x90007f9 + #xb14070e + #x160f1305 + #x305fa08 + #xe6010afd + #xc0d03f4 + #x2f1e3eb + #xff03050f + #x10005f5 + #x1612050f + #xd0a1109 + #x4fe10 + #xf10802ff + #x1102fef3 + #xfeefe0f5 + #xff010f10 + #xfe0401f7 + #x1d0b070c + #x50a0f10 + #x404020e + #xf9050006 + #xafafff6 + #xfaede500 + #xfd03180c + #xfd05fdfb + #x1c070a07 + #xb0b14 + #xa050506 + #xfb030709 + #xfb02f7 + #xfaf0ee05 + #xfc0b1a02 + #x2fc00 + #x160809ff + #x90818 + #x8030600 + #xfd060c06 + #xfcfe00f7 + #xfef4f704 + #xff1213fe + #x300ff02 + #x120d02fa + #x1050817 + #x20407fe + #x2090a01 + #xfffffbfa + #x1f9fc02 + #x11108fd + #x6fe0302 + #x120dfafb + #xff000813 + #x808fe + #x6060203 + #x1fbfa00 + #x4fffe03 + #x30c02ff + #x6ff0603 + #x1207f600 + #xf9fd0a11 + #x50c0afe + #x5fe010a + #xfff6fe06 + #x7030005 + #x3060001 + #x5000704 + #xcfef706 + #xf3fe0d0e + #xb100af9 + #xfdf6070f + #xfaf90307 + #xa080507 + #x10102 + #x4020907 + #x2fcff08 + #xf4030f07 + #xe1207f1 + #xf6001010 + #xf4000401 + #xc060a00 + #xff03fe07 + #x80bff + #x606 + #xc0500 + #x120cf7f2 + #xf9070e0f + #xf6ff01fe + #xc0707fa + #x105fb05 + #x30808fb + #x9070506 + #x506fd00 + #x1106f9fb + #xff07070d + #xf7fb00ff + #xb0803f9 + #x502f805 + #x40404fc + #xe06060c + #xfe06 + #xe050000 + #xfd00050f + #xf6f90400 + #x90700f9 + #x6fef803 + #xff000301 + #xc050c0f + #xfe030509 + #xf0701fd + #xf5fd0912 + #xf50009f9 + #x905fcfa + #x4fbf901 + #xf9000707 + #xa09140d + #x20b0706 + #x1105fefb + #xf0011011 + #xfb0704ec + #x900f8fc + #xfffafaff + #xfb050b09 + #xd0e1104 + #xd100305 + #xc01fe00 + #xf207130b + #x208f7e2 + #x7f8f801 + #xfbfcfaff + #x2090d07 + #xf0e0900 + #x130d010a + #x6010106 + #xf8091108 + #x800e8e2 + #xeffe0a + #xfbfff800 + #xd0a0e05 + #xb0a0104 + #x1109070e + #x6090507 + #xf607110d + #x7f3e2e9 + #xf8f0050d + #xfc00f700 + #xf0d11fd + #x304000c + #x100b1208 + #xf0dff09 + #xf20c1612 + #x2ebe5ec + #xf3f8090b + #xfd00f9fe + #xd1210f6 + #x214 + #x110f12ff + #x1305f80e + #xf518180f + #xfee9ebe7 + #xf3010607 + #xfffdfdfa + #xe1809f3 + #x4fc0718 + #xf110afc + #xefafa15 + #x21f0e05 + #xfaeaece3 + #xf902fe05 + #xfefc01f8 + #x141901f7 + #x5f60b16 + #xa100402 + #x3f80415 + #x121d02ff + #xf4e9eceb + #xfdfcfc08 + #xfc0004f8 + #x1a13fcfc + #x2f50e14 + #x810050b + #xfe0a0a + #x1a11f900 + #xebe9f2fd + #xfef5ff07 + #xfa0504f8 + #x1d0afcfe + #xfbf90e13 + #xc120d10 + #x20406ff + #x1202fa03 + #xe5f0000a + #xfcf200fe + #xfd0c00f9 + #x1a0500fc + #xf6ff0b15 + #x1215160b + #x502fbfe + #x4feff01 + #xe7fb0b0c + #xfaf3fcf3 + #x30dfcf9 + #x130403fa + #xf9010817 + #x16181904 + #x1fbf705 + #xff01fdf9 + #xf1061003 + #xfaf4f3ee + #x80afbfb + #xf0703fb + #xffff0616 + #x16181703 + #xf9f7fd10 + #x201f2f2 + #xfb0a0d00 + #xfbf0edf2 + #x706fdfc + #xf090200 + #xfa0915 + #x13191507 + #xf6fd060f + #x3f7e9f5 + #xfd0b0b02 + #xfbebedf8 + #x304fefd + #xf070202 + #xfdfa0c14 + #x121b150a + #xfd070907 + #xfae9ec00 + #xfa0a0d07 + #xfbe9f3fa + #x6ffff + #x10030402 + #xf9ff0e13 + #x171c1608 + #x70e0301 + #xe9e7fb08 + #xfc0f1103 + #xfbedf4f3 + #x7fc02 + #xa0307fc + #xfc090d12 + #x1b191401 + #xd08fb06 + #xe1f30608 + #x3120ff7 + #xfdf1eeee + #x105fe07 + #x30407f7 + #x70e0b12 + #x19131100 + #xb00f711 + #xe6030504 + #xd1006ea + #xfdf0e4f1 + #x302050c + #xff0702f5 + #x150b0c12 + #x10100d05 + #x7fcfd17 + #xf40bfc02 + #xd07ffe6 + #xfbeae2fc + #x100100d + #xfe08fef9 + #x1a060f0c + #x810090f + #x7fe0412 + #xff07f906 + #x600fdea + #xf8e4e806 + #xfe071808 + #x5fbfd + #x18050f03 + #x70f0819 + #xa010708 + #x10009 + #xfdfffef1 + #xf7e3f30a + #xfe101903 + #x302fbfe + #x120809fd + #x80b091c + #x8020601 + #xff040905 + #xf801fdf4 + #xf9e9fd06 + #x2190f00 + #x5fffffd + #xf0d02fd + #x7050c1a + #x30504ff + #x1090901 + #xfb02fbf7 + #xfcf00000 + #x9170400 + #x3fe02fc + #x110cfc00 + #x2011016 + #x10804ff + #x6090301 + #xfffef9fd + #xfff70000 + #xd10ff02 + #x105fd + #x1303f802 + #xfb000f14 + #x40c05fd + #x5020207 + #xfdf9fd02 + #x3fc0104 + #x908ff04 + #x30600 + #xffafb06 + #xf7010f13 + #xa1005f8 + #xfffd070c + #xf7fa0105 + #x6000605 + #x4040005 + #x50802 + #x7f70108 + #xf7050f0e + #xe1201f1 + #xf7fe0f0f + #xf4ff0503 + #xb040a02 + #x2ff06 + #x70b01 + #xfb0507 + #xfe0b0a04 + #x110ff9ee + #xfb0b0e15 + #xf90102fb + #x80a07f5 + #x300ff0b + #x20d05fb + #x1020702 + #x7090000 + #x1600f1fa + #x20c0b11 + #xf9ff00fa + #x90a01f4 + #x5fefe0b + #x40b00fb + #xa030706 + #x501fb06 + #xffefa00 + #x305080e + #xf5fe03fe + #xa08fef6 + #x6fafd09 + #x106ff01 + #xa020d0a + #x10c + #xb0100fe + #xfe000b0f + #xf40106fb + #xa05fdf6 + #x3f8fe07 + #xfd030206 + #x8061307 + #x205060c + #xc04fefb + #xf601110f + #xf70a03f2 + #xa00fbf7 + #xfef9fd06 + #xfc050808 + #x9101401 + #xb0a0309 + #xa01fbfe + #xf707130a + #x10bf6e9 + #x7f8fcfc + #xfcfbfa06 + #x1090c05 + #xd130afd + #x1108010a + #x400fe05 + #xfc0b0f06 + #x902e8e7 + #xf30002 + #xfdfdf807 + #x70c0d00 + #xe0e0100 + #x1005060c + #x403010d + #xfe0b0b0a + #x8f2e0ec + #xf6f4070a + #xfdf804 + #xa0e0efc + #xa06020b + #xb070f09 + #xc08010e + #xfb0d0e15 + #xe8e4eb + #xeffc0c0b + #x1fcfdfd + #x9140bf9 + #x6000912 + #xc0e0c02 + #x1600fd11 + #xfd151215 + #xf8e8e9e5 + #xf2030b09 + #x1fb00f7 + #xd1803f9 + #x5fb0e13 + #xd110200 + #x12f60015 + #x91e100c + #xf2ece9e1 + #xfa040707 + #xfefb00f4 + #x1616fcfb + #x1fb1312 + #xd0ffd04 + #x4f30b14 + #x181b0601 + #xeeece4ea + #xfd0506 + #xfb00fff7 + #x1d0ef9fe + #xfdfe1212 + #xb0a000a + #xfdfd110a + #x1e0efe00 + #xe8eae7fc + #xfff60703 + #xfc06fefc + #x1e05fbfc + #xf7011016 + #xb0a0a0b + #xff060b01 + #x1600fc04 + #xe4edf40e + #xf9f409fb + #x20bfcfd + #x1902fff9 + #xf4050f1a + #xf0f1404 + #x505feff + #x8fd0005 + #xe6f8040f + #xf6f904ef + #x90afafd + #x100300f7 + #xf9050e1c + #x141516fe + #x4fbf808 + #x10000ff + #xef040b07 + #xf7faf9ea + #xd06fafd + #xa07fffa + #xff010f19 + #x151912fe + #xfcf3fd10 + #x401f8f5 + #xfa0c09ff + #xf8f4f0ed + #xd04fbfc + #xb07fe01 + #xfffe1216 + #x14190f03 + #xf4f70712 + #x5f8eef5 + #xd0501 + #xf7ebf0f5 + #x802fcfe + #xe060004 + #xfafd1214 + #x151a1106 + #xf9020a0c + #xfdebedfe + #xc0706 + #xf4e9f6f8 + #x503fd00 + #xd040301 + #xf7021214 + #x191b1302 + #x40a0509 + #xede6f609 + #xff0e0d05 + #xf1edf8f5 + #x604fc00 + #x90506fc + #xfa081115 + #x1a1a13fc + #xe06fd0d + #xe3f1010d + #x6120ef5 + #xf3f3f1f1 + #x8020002 + #x30903fa + #x40a1214 + #x18170bfb + #xefbfb16 + #xe900030a + #xd1305e5 + #xf8f1e9f5 + #x7ff0705 + #xafdfb + #x10081310 + #x13150403 + #x9f50119 + #xf907fe06 + #xe0efbe0 + #xf8e8e600 + #x2ff0f07 + #x208f9ff + #x11061408 + #xf13020f + #x4f70b14 + #x402fb06 + #x605f4e6 + #xf5e1ee09 + #xfd071606 + #x605f901 + #xf0a1200 + #xf100618 + #x3fe0e0a + #x5fc0007 + #xfe01f3f1 + #xf1e0fb09 + #xff131503 + #x800fbfe + #xd0f0afe + #xe0a0c1a + #x3030a05 + #xfd0605 + #xfa02f6f8 + #xefe40303 + #x81c0e00 + #x7fefef9 + #xd1000fe + #xa041219 + #x1040504 + #x60702 + #xfd02f6f8 + #xf0f004fc + #x11190400 + #x2fffff8 + #x100bfc02 + #x3031615 + #x1060305 + #x5090202 + #x100f6fb + #xf5f701fc + #x140f0001 + #xfe0200fc + #x1201fe05 + #xfd041414 + #x5090301 + #x8050007 + #xfffbf900 + #xfafb0100 + #x12070003 + #xfe050002 + #xef90004 + #xf9041216 + #xc0b00fb + #x200040d + #xf9fbff03 + #xfffe0601 + #xa020105 + #x70204 + #x5f60404 + #xfa071215 + #x110dfdf3 + #xfb010a11 + #xf6fe0201 + #x2020afe + #x4010108 + #x1090501 + #xfefb0703 + #xff0b0f0c + #x150af4f1 + #xfa080e15 + #xf70203fd + #x70809f8 + #x200ff0b + #x10c07fc + #xfe000703 + #x60c0502 + #x1703eff5 + #x50d1014 + #xfd00fff8 + #x80ffdf4 + #x2fc0709 + #xa0afd00 + #x2040401 + #x903fe01 + #xdf4f501 + #x8080e0c + #xf9ff00fd + #xb0bfaf5 + #xf9050a + #x907fb04 + #x5030805 + #x3fc000b + #x5fbfe02 + #x3020e0a + #xf5020200 + #xb05f9f4 + #xfef8040a + #x402ff09 + #x3080f03 + #x70c + #x601fdfe + #xfc03120b + #xfa0a00fb + #xa00faf2 + #xfbf9020a + #x1020509 + #x5110fff + #x505090a + #x701fafe + #xf9071409 + #x40cf7f2 + #x6fcfaf4 + #xfafa000b + #x2070a04 + #xc1707fc + #xd050608 + #x4fdfa06 + #xff0d0f05 + #xd01eaef + #xfff8fdfd + #xfdfafe0a + #x60b0b00 + #x111200ff + #xc02070a + #x2fe000e + #x20d0807 + #xcf2e3f1 + #xf5fb0305 + #xf90005 + #x81008fd + #xf070105 + #x8050a0b + #x7010411 + #x20b0811 + #xe6e4f2 + #xf0010a0a + #xf702fc + #x81405fd + #xa000a0c + #x80d0a06 + #x10ff0411 + #x30e1215 + #xf3e6e7eb + #xf3080d09 + #xfdf802f3 + #x1114ff00 + #x500120d + #xe10ff05 + #xdf70810 + #xc15170c + #xeeebe4e7 + #xfb070c05 + #xfcfcfff1 + #x1b0ffa01 + #x3130d + #xf0bfa06 + #xfff61110 + #x191610fe + #xedebe0f0 + #x1020b01 + #xfa00f9f7 + #x1f07fa00 + #xfa081110 + #xd030008 + #xf400160a + #x1e0d05fb + #xece7e103 + #xfefd0dfd + #xfd03f8fd + #x1c01fcfc + #xf70c0f17 + #xa020c04 + #xf80b0e03 + #x17010000 + #xe9e5eb14 + #xf8ff0cf5 + #x304f900 + #x1500fef8 + #xf80b111e + #xa0a13fe + #x20a0202 + #x8fb0306 + #xe8edfe18 + #xf30406ea + #xb05fbfe + #xd02fcf7 + #xfd09151f + #xe1312f9 + #x5fefa07 + #xfe0501 + #xeffd080c + #xf504fae5 + #xf01fdfa + #x804fa00 + #x51819 + #x13180afa + #xfdf4fe10 + #x20000f7 + #xfb080703 + #xf8fdf0e8 + #xcfffdfb + #xa05fa07 + #xff031713 + #x16180700 + #xf2f50812 + #x5fbf4f1 + #x40a0103 + #xf6f2eef1 + #x800fefc + #xd02fe0a + #xfa061612 + #x17170a02 + #xf2000e0f + #xffeeeffa + #x6080209 + #xf0edf4f7 + #x700fefd + #xc020207 + #xf7081413 + #x19180fff + #xff08080c + #xf0e7f506 + #x7090805 + #xecf2f7f7 + #x70000fc + #x8050302 + #xfa0b1413 + #x1a1a0ef8 + #xa040111 + #xe5ed000e + #x80f0cf7 + #xedf8f3f6 + #x7ff02fa + #x4090000 + #x20b1611 + #x1b1a06f7 + #xdf90017 + #xeafa070b + #xf1403e5 + #xf4f5ecf9 + #x4fd07fb + #x608fb04 + #x90b180d + #x1817fe00 + #x4f30818 + #xf8010604 + #x1211f5e0 + #xf7eaeb01 + #x1000dff + #xa04f806 + #xb0c1706 + #x1511fd0c + #xfcf71213 + #x3fe0300 + #xd07e9e9 + #xf3e0f309 + #xfd081102 + #xcfffc05 + #x8111000 + #x140d0514 + #xf800130b + #x3f70500 + #x5ffe8f8 + #xebe1ff08 + #x151101 + #xafdfefe + #x9170600 + #x13070f14 + #xfa060d09 + #xfef90800 + #x1fced00 + #xe5e90500 + #xb1a0dfe + #x7fefff8 + #xd130004 + #xc051611 + #xfd06080c + #xfd010800 + #x1fcf3ff + #xe5f603f9 + #x161807fb + #x2fffbf9 + #x110aff06 + #x2051811 + #x5060b + #x3060202 + #x5fcf4fc + #xecfefffa + #x190d05fa + #xff01f903 + #x11000005 + #xfd091613 + #x4060605 + #x7030007 + #x3f9f600 + #xf3fffefe + #x140505fc + #x3fb0b + #xbfb0302 + #xfc0b1417 + #xa0802fd + #x500030e + #xfef9fb04 + #xf9000200 + #xb020600 + #x303ff0c + #x1fc0600 + #xfd0b1515 + #x1108fcf7 + #xff010914 + #xfafc0002 + #xfd0306fd + #x5010602 + #x5050208 + #xfbff0600 + #xd150d + #x1504f5f4 + #xfe070d17 + #xfb0000fc + #xa05f7 + #x3000606 + #x7090202 + #xfb030500 + #x50d0e04 + #x16fcf0f8 + #x30d0e16 + #xfd0100f8 + #x60f00f4 + #x2fd0609 + #x80c00ff + #x40400 + #xa080101 + #x11f5f1fe + #xa0b1708 + #xfb00fd00 + #xe09f7f8 + #xfd000b07 + #x1001fb06 + #x2050204 + #x7ff0003 + #xfcf4fc06 + #x5061203 + #xf9010004 + #xe04f7f5 + #xfafe0909 + #xcfd0009 + #x1090606 + #xfffc0808 + #xfefdff03 + #xfe061207 + #xfd060002 + #xb00f6f0 + #xf8fe060c + #x5fe0707 + #x4120802 + #x20d05 + #x4fffb00 + #xfc0b1208 + #x808fbfa + #x6fef4f1 + #xf9fd060d + #x3030a02 + #xc1703ff + #x5060a03 + #x5fcfa04 + #xf0f04 + #x1100f0f4 + #xfffcf4fa + #xfbfc070b + #x50a09fe + #x1512fdff + #x7040707 + #x1fa000d + #x60f0703 + #xff1e9f6 + #xf8fefb06 + #xfcfa0904 + #x80f05ff + #x1408ff03 + #x505080b + #x2fd0710 + #x70a0609 + #x1e6e9f8 + #xf403040b + #xfbf909fa + #xc100202 + #xd010706 + #x50a070d + #x6ff0b0d + #x5080f0e + #xf2e5eaf5 + #xf8090c09 + #xf9fb05f1 + #x120fff05 + #x5030d08 + #xd0c000a + #x5fc0c0b + #x90f1b05 + #xebe8e3f2 + #xff0a0e01 + #xf8fefcef + #x1c08fe03 + #xc0d0a + #x1206fd06 + #xf8ff120c + #x111418f8 + #xeee7e0f9 + #x3080dfb + #xf900f5f6 + #x1e02ff00 + #xfc100d12 + #xefd0203 + #xee07160b + #x17110bf3 + #xf0e3e30a + #xff070cf7 + #xff01f5ff + #x18ff00fb + #xfe110d1b + #x5fd0cff + #xf3120e07 + #x120701fc + #xece0ed19 + #xf90b09f2 + #x500faff + #xe00fef8 + #xe131f + #x3060ff9 + #x10f0304 + #x8000205 + #xe8e3fe1c + #xf60f01eb + #x8fefffa + #x801fafc + #x20a191e + #x8120bf7 + #x802fc06 + #xff000703 + #xebf30b12 + #xfa0ff6e6 + #x9fe00f5 + #x702f704 + #x3091d19 + #x121702f9 + #xfff6ff0b + #x204f7 + #xf7010905 + #xfe04ece8 + #x8fefff6 + #xb00f90c + #xb1c12 + #x171400ff + #xf1f6080f + #x2fffaee + #x3060204 + #xfbf8eaf0 + #x5fffef9 + #xbfdff0f + #xfd0e1710 + #x18120400 + #xee000e10 + #xfff5f0f3 + #x9030109 + #xf2f1eff9 + #x4ff00fa + #xaff050b + #xfc101412 + #x19140afb + #xf9090b10 + #xf2ebf301 + #x9030808 + #xecf4f4fd + #x50002f6 + #x6020407 + #xfe0f1512 + #x1a1808f6 + #x6060612 + #xe7ecff0a + #x90a0bfa + #xedfaf3fc + #x5ff03f2 + #x6060108 + #x20f180f + #x1d1900f6 + #x8fc0616 + #xe8f60907 + #xd1203e7 + #xf5f8effe + #x1ff04f2 + #x904fd0a + #x60f160a + #x1e15f8fe + #xfef70e18 + #xf3fe0dfd + #x140ff2e3 + #xf8ecef04 + #xfd0105f9 + #xdfefc0b + #x7141206 + #x1c0cfb06 + #xf2fd1414 + #xfd000af6 + #x1504e5ed + #xf2e2f70a + #xfc0908ff + #xdfa0106 + #x7190d05 + #x1906050b + #xef07140f + #xfefb07f6 + #xff6e2fe + #xe7e4000a + #x1130cff + #x8fb04fe + #xc1a0406 + #x12030f0a + #xf40c0c0f + #xf8fd06f9 + #x8f0eb04 + #xe1f00503 + #xe170cf8 + #x3fe00f7 + #x1312ff09 + #xb05140b + #xfa0a0913 + #xf70105fc + #x5f1f400 + #xe1fd01fe + #x18150af0 + #x100fafd + #x1606000a + #x40b150f + #xff070a11 + #xff060100 + #x5f5f8fd + #xe902fafc + #x1a0e07ed + #xfff609 + #x11ff0508 + #xe1413 + #x2070b08 + #x5030005 + #x3f5f7ff + #xf301f900 + #x120705f0 + #x2fdfa14 + #x7fd0602 + #x101316 + #x70807fd + #x4ff030c + #xfff5fa04 + #xf900fe03 + #xa0505f6 + #x5fd0015 + #x400 + #x1101614 + #xd07fff7 + #xff000a12 + #xfcf8ff04 + #xfb020200 + #x30406fb + #x7ff050e + #xfc040100 + #x210190b + #x1100f7f6 + #xff051015 + #xfcfb00ff + #xff0900fa + #x20307fe + #x8030407 + #xfd060101 + #x6121302 + #xff9f2f8 + #x40a1513 + #xfdfefffb + #x40dfbf8 + #x10800 + #xb050004 + #x60103 + #xa0e09fe + #x8f1f3fe + #x90c170b + #xfd00fdfb + #xc0df8f8 + #xfeff0b05 + #x1005fc05 + #x1050103 + #x9030001 + #xf1f904 + #x80f16fc + #xfafefe09 + #x11fef8f8 + #xfb07060d + #xbfb0301 + #x205020d + #x1ff0501 + #xf5f90008 + #x20d0f00 + #xfd020308 + #xbfdf5f2 + #xfb04070f + #x4fb0800 + #x50c050b + #xfc030c00 + #xfffdff02 + #xfe100f05 + #x80401fe + #x6fcf0f3 + #xfa02090f + #x20bfd + #xf110305 + #x90900 + #x3fafd01 + #x2130c03 + #xf00f9f7 + #x1fbeefd + #xfb000c0c + #x10908fb + #x170e0002 + #x5090404 + #xf70007 + #xa120800 + #xdf4f0f7 + #xfcfaf40a + #xfaff0e03 + #x80d04fd + #x1804fe02 + #x407030f + #xfcfb080a + #xb0b0502 + #xe9effb + #xfbfe0010 + #xf8000cfb + #xe0c0101 + #xf000205 + #x6080412 + #xff000d09 + #x7060c04 + #xf0e6effe + #xfe040b0b + #xf60204f3 + #x14070103 + #x6060707 + #xc08040e + #xff040e06 + #x40b1800 + #xe9e7eafc + #x3090f00 + #xf804f8f2 + #x19040400 + #x10e070b + #xf010008 + #xf8050e09 + #x91516f3 + #xede4e4ff + #x60d0cf7 + #xfd01f0f9 + #x170105fc + #x2120714 + #x9f90601 + #xf00e110f + #x101707f1 + #xefe1e709 + #x30e08f5 + #xfef2ff + #x100004f9 + #x7100b1d + #xfa0bfd + #xf7150e0c + #x120ffafb + #xebe0f217 + #xff1103f4 + #x2fafbfe + #x802fef9 + #xa0c161f + #xfd040afa + #x8140406 + #x805fd08 + #xe4e10419 + #x14fdef + #x4fb01f8 + #x501f900 + #x90b1d1b + #x41002fb + #xf07fe03 + #x1030407 + #xe1ed110f + #x411f5ea + #x3fe01f3 + #x7fff707 + #x70f1f14 + #xf12fcfe + #x6fafe06 + #x606fa + #xeb001004 + #x906ebe8 + #x200fcf4 + #x9fafb0e + #x4131c10 + #x180ffb00 + #xf5f7050c + #x205fcee + #xfc040602 + #x5f8e8f0 + #x100fafa + #x8f8030f + #x217170f + #x180b0100 + #xee000c10 + #xfcf0ef + #x4010406 + #xfaf0ecfa + #x200fcfa + #x4fb090c + #x2161411 + #x160d05fb + #xf6090c12 + #xf6f1eefd + #x5000a06 + #xf1f2f301 + #x20000f5 + #x2010908 + #x3131511 + #x181302f6 + #x4080914 + #xeaedfb06 + #x4060dfb + #xf2f7f602 + #x20100ee + #x5040509 + #x612170e + #x1e14faf6 + #x6000916 + #xe7f40903 + #x80f05eb + #xf8f5f402 + #x2fdee + #x901030b + #x715160a + #x1f0ef4fc + #xfdfe0e18 + #xee000ef8 + #x120ef3e4 + #xfbedf406 + #xff04fbf5 + #xdfb040c + #x7190f09 + #x1d04f702 + #xf0031417 + #xf70308ef + #x1700e4ed + #xf3e6fa0c + #x8fefd + #x8fb0803 + #xa1b0809 + #x17ff0303 + #xef0d1318 + #xfa0302f1 + #x13efe4fb + #xe7e8010f + #x40e05fc + #x1fe09fb + #x1118050c + #x10000c03 + #xf7100d18 + #xf803fdf7 + #x8e6ef01 + #xe0f5050c + #xe130bf2 + #xfe0200f9 + #x190e040d + #x9050d07 + #xc0b19 + #xf705fbfc + #xe9fbfd + #xe4000006 + #x171409e9 + #x2f800 + #x1902070b + #x40c0d0f + #x2090e15 + #xfc06fcfe + #xfcf0fdf8 + #xed03fc04 + #x191103e4 + #x2fdf60e + #x13fe0907 + #x4110e17 + #x30a1008 + #x304fd01 + #xfcf4fafa + #xf700fb05 + #x120cfee7 + #x3f6fc19 + #x6ff0803 + #x7121117 + #x50c0afd + #x3000208 + #xfbf4fb01 + #xfcfbff06 + #xa0afcf0 + #x3f70618 + #x50401 + #x8121611 + #xa0b01f8 + #xff000a0e + #xf8f4ff04 + #xfcfe0103 + #x609fef6 + #x2fb0c10 + #xff070003 + #x8131809 + #xd04f9f8 + #xfd041210 + #xf8f90200 + #xff0400ff + #x40800f9 + #x3010b07 + #x5ff05 + #x9151400 + #x9faf4fa + #x20b180c + #xfafcfffc + #x608fcfc + #x20704fc + #x7030504 + #x3040006 + #xd140afe + #x1f4f4fc + #x80e1a04 + #xfafdfcff + #xd04f8fc + #xff060400 + #xb000104 + #x4030008 + #xd0c02ff + #xf8f2f802 + #x90f18fd + #xfafffc05 + #x1100f8fa + #xfd060709 + #xffd0004 + #x204010b + #x5000302 + #xf4f6fe08 + #x8160af9 + #xfdff0508 + #x9faf8f5 + #x1070613 + #xfe0007f9 + #x5020810 + #xfe050500 + #xf8fb0305 + #x6140901 + #x3030700 + #x4faf0f5 + #x40a12 + #xfa0407f7 + #xc070a0b + #xc0400 + #xfffb00fe + #x9140b01 + #xb0300f6 + #x1f6ecff + #xff040f0d + #xfe0a04f8 + #x15070503 + #x70cff06 + #xfdf90100 + #xe1308fd + #x8fbf6f6 + #xf1f30d + #xfc050f06 + #x60d01fa + #x16020101 + #x907ff10 + #xf8fa0604 + #x110d04fb + #xfdf0f3ff + #xfdf20114 + #xf9070bfe + #xe0900fd + #xeff0104 + #x8050417 + #xf8020b05 + #xa0607fd + #xeeebf402 + #xfffc0e0d + #xfa0a00f8 + #x120503fe + #x5030308 + #xa040812 + #xfb070b05 + #x3090dfd + #xe8ebf301 + #x3061200 + #xfd08f5f8 + #x110306fa + #x40b040e + #xb000a08 + #xfc0b0a0b + #x5150df7 + #xeae5edff + #x70d0bf5 + #x101eefd + #x100407f6 + #x90f0717 + #x4fa0901 + #xfa0f0b12 + #x101cfef5 + #xebe0ec04 + #x71103f4 + #x3f9f200 + #x80704f7 + #xe09101e + #xf9fb0800 + #x1130d10 + #x1513f100 + #xe6e0f60d + #x61200f6 + #x2f5fbff + #x306fefb + #xf07171b + #xf7040301 + #xf120906 + #x1106f30e + #xe1e40712 + #x912fdf3 + #xfff900f9 + #x402f801 + #xa0b1e17 + #xdfe02 + #x180800ff + #x701000f + #xe0f2130b + #xf0df8ec + #xfefffdf7 + #x7fdfa08 + #x8141f11 + #xe0df902 + #xefefe00 + #x2050701 + #xe2011202 + #x1202f0e7 + #x2f6fb + #x7f7ff0a + #x71c1c0e + #x1507fa02 + #xfcf90109 + #x509fff1 + #xf20808ff + #xdf6eaea + #x201f301 + #x3f7070b + #x91e160e + #x14040000 + #xf1fe0812 + #x602eff0 + #xff040503 + #xedecf7 + #x200f702 + #xfefd0d07 + #xc1a1310 + #x110703fd + #xf7060b15 + #xfef5eafb + #x904 + #xf6ecf400 + #x200fcfb + #xfd020c06 + #xb15150e + #x140dfff9 + #x3080b15 + #xf1edf505 + #xfd070dfb + #xf4f1fa03 + #x102fbf1 + #x1060907 + #xb15170b + #x1b0ff7fb + #x8040b17 + #xe9f30402 + #x31006ed + #xf9f3fc02 + #x204f4f0 + #x7020908 + #xa181409 + #x1e07f4fe + #xff010e1a + #xeb0009f7 + #xe0ef6e5 + #xfbeffb05 + #x204f1f6 + #x7ff0a05 + #xc1b0e0b + #x1afef800 + #xf506121e + #xf50901ef + #x17ffe7e9 + #xf4eafe0d + #x404f5ff + #x3ff0e00 + #x101c0b0e + #x11fa0000 + #xf50e131f + #xfc0af6f4 + #x11ece7f4 + #xe7ed0313 + #x80800fb + #xfb050bfb + #x17130a0e + #x9fe0403 + #xf101f + #xfe07f0fc + #x2e4f2f9 + #xe1f70714 + #xe0d07f0 + #xfa0801fc + #x1d0a0a0b + #x505030a + #x80b0f1c + #xfe04f101 + #xf4e9fef6 + #xe700080f + #x141105e4 + #x5f804 + #x18020c07 + #x50b0315 + #xa071415 + #x3f402 + #xeff3fff1 + #xf2000208 + #x1712fbe0 + #x4fbf711 + #xe000d04 + #x60d0a1a + #x70b160a + #x400f803 + #xf1f8fbf4 + #xfcfb0105 + #x160ff1e5 + #x3f30019 + #x4040a04 + #x90e1117 + #x8110f00 + #x2fefd07 + #xf4f7fafd + #xfef70405 + #x110beef0 + #xfef40c18 + #x80504 + #xc101610 + #xc1001fb + #xfe00060d + #xf4f6ff01 + #xfcfa0603 + #xc08f3f7 + #xfafd120f + #x2080105 + #xc131706 + #xe07f9fd + #xfd050f0d + #xf4f902ff + #xfe0004ff + #xa07f8f8 + #xfc040f07 + #x5030206 + #xd171001 + #x9fef6fe + #xc1607 + #xf5fe00fb + #x40200fe + #x807fbfb + #x60904 + #x6000306 + #x11160801 + #xf6f4ff + #x61217ff + #xf7fefcfe + #xb00fefc + #x508fd00 + #x5020503 + #x5000409 + #x120f0201 + #xf7f5f602 + #x91413f8 + #xf8fcfc06 + #xdfcfcfa + #x308fe0a + #x5fe0400 + #x400050d + #xc070102 + #xf2f5fa08 + #x9160cf7 + #xfbfe010a + #xcfafaf6 + #x2080212 + #x1fe06fb + #x3010811 + #x20501 + #xf5fa0108 + #xf1501fb + #x40a01 + #x1fbf3f6 + #x5031011 + #xf90700fb + #x6021107 + #x208ff03 + #xfaff05fd + #xf1407fe + #x50804f9 + #xf4eeff + #x104130e + #xfd0cfefa + #xc050c00 + #xa0bfc08 + #xfafd00fa + #x131208fa + #x603f9fa + #xfeebf60b + #xff091108 + #x70afcfb + #xf0305fe + #xe04fd12 + #xf5fd0101 + #x140d02f6 + #xfef9f301 + #xfaea0411 + #xff0e0a03 + #xe07fefb + #xb000102 + #xa000619 + #xf5010506 + #xe0700f9 + #xf1f1f609 + #xf9f5130b + #x10d00ff + #xf0401f8 + #x3020108 + #x8000f14 + #xfb080708 + #x50703fd + #xeaf0f906 + #xfd0514fd + #x509f6fe + #xb0504f6 + #x406040f + #x6010f0a + #xb070b + #x40f02fd + #xebedf800 + #x4110cf2 + #x7fff200 + #x70904f6 + #xa060915 + #xb03 + #x30b0911 + #x1118f8ff + #xe8e4f4fd + #x91300f2 + #x5f4f503 + #x50c00f9 + #x11031319 + #xf8000705 + #x90d0f11 + #x1d10ec08 + #xe2e2f806 + #xc10fef4 + #xfff2fd01 + #x609fa00 + #x10041c17 + #xf505000b + #x140f0e02 + #x1901f114 + #xe0e9030d + #x100dfff2 + #xfbf7ffff + #x802f803 + #x90d1f12 + #xfe09fc0b + #x1b0a06f8 + #xdf90116 + #xe0f70f0d + #x1508feeb + #xfbfff900 + #x9fafd05 + #x6181e0c + #xb08fc08 + #x13fffdfa + #x5000a08 + #xe1050f05 + #x1600f5e3 + #x1f105 + #x4f70204 + #xa1f180d + #x1202ff04 + #xf9fe06 + #x60704f7 + #xed0c0700 + #x10f7ece1 + #x3fef00c + #xfefa0903 + #xf1f150e + #xfff0101 + #xf4fb0413 + #xa05f3f2 + #xfd080201 + #x3eeebec + #x4faf70c + #xf8000d04 + #x141c150e + #xa020200 + #xf7020b16 + #x5f6e9fb + #xfe030504 + #xf7ebf4fa + #x3fbfd03 + #xf9060c04 + #x1416170a + #xd08fd00 + #x2060e14 + #xf8ecf104 + #xfc070900 + #xf2eefd00 + #x200fbf9 + #x90a05 + #x10161605 + #x1508f700 + #x7050c15 + #xebef0004 + #x1006f3 + #xf5f301ff + #x402f2f4 + #x4070a04 + #xf1a1206 + #x1a01f501 + #x2030e1c + #xecfd04fb + #xd0ff7e8 + #xf7f30000 + #x7ffedf9 + #x3040c03 + #x111b0e0a + #x14faf800 + #xfb05121f + #xf608fcf6 + #x1501eae6 + #xf2f20009 + #x8fbf2fe + #xfe070d00 + #x16160d0d + #xaf8fd01 + #xfd0b161f + #x10aeef9 + #xfeee6ec + #xe9f30515 + #x7fcfffb + #xf90d09fd + #x1c10100c + #x2fdff06 + #x50c161f + #x603ea03 + #xfce7f0f3 + #xe4f90e18 + #x90406ee + #xfd0d0001 + #x1d091205 + #x102fc10 + #xd0a1719 + #x6fdee08 + #xebecfaf4 + #xeaff1011 + #xf0e00e3 + #x506f808 + #x16061000 + #x305fe19 + #xc091b11 + #x5faf506 + #xe6f8fbf2 + #xf5000f06 + #x1512f3e1 + #x9faf912 + #xa070b00 + #x706081c + #x60d1a09 + #x5f9f805 + #xecfdf5f6 + #xfcfc0cff + #x190de6e9 + #x3f20418 + #x20b0804 + #xa081516 + #x7131203 + #x2f8fb09 + #xf2faf4fd + #xfcf909fc + #x1705e3f3 + #xfaf61017 + #xd0707 + #xb0d1a0b + #xf120502 + #xfefa0010 + #xf4f8fb00 + #xf8fb09fd + #x1300ebfa + #xf3011611 + #x50a0605 + #xc121603 + #x1309fb03 + #xfd020b0f + #xf3fa00fd + #xf90108fb + #xffff3fa + #xf70b110a + #x8020502 + #xe150e03 + #xdfef704 + #xc1108 + #xf4fffff9 + #x304f9 + #xc01f7fb + #xfe0c0a07 + #x6000601 + #x12140604 + #x2f8f704 + #x81211ff + #xf6fffafc + #x60001f9 + #xa03f701 + #x3070505 + #x3000705 + #x15100206 + #xfaf5f607 + #xc170bf8 + #xf8fcfb03 + #x7fd00f8 + #xa03fa0a + #x2020402 + #x1000909 + #x10080205 + #xf6f4f80b + #xe1803f7 + #xfafa0107 + #x5fcfcf5 + #x9020112 + #xfd0203fe + #x2000c0c + #x7050203 + #xf6f5ff0b + #x101700fa + #xfe000905 + #x2fcf5f4 + #x6030b13 + #xf80601fa + #x400110b + #x1070003 + #xf9fb0502 + #x160e02fa + #x10c0502 + #xfff5f1fc + #x1071709 + #x204f902 + #x20c0ffb + #xa03fe06 + #xf80200fd + #x160f05f8 + #x709f902 + #xfceaf705 + #xd1409 + #xa05f9ff + #x70b04f9 + #xdff000f + #xf7fffb02 + #x170e00f5 + #x4fef209 + #xf4e9040b + #x3100d06 + #xf02fbfc + #x607ff00 + #x9fb0a14 + #xf700000b + #x1107faf7 + #xfbf4f610 + #xeff51207 + #x80f0501 + #xc01fef9 + #x303000a + #x3fe1412 + #xfc04040d + #x804fafd + #xf1f1fe0e + #xf30814fb + #xd09fdfd + #x704fef8 + #x302040e + #x31609 + #x207060c + #x608fb01 + #xeff3ff03 + #xfe1409f0 + #xbfdf9fe + #x509fcfb + #x8010c10 + #xff060c05 + #x7070b0e + #xf0bf805 + #xebeffafd + #x814ffef + #x4f3fc01 + #x70bf900 + #xb011510 + #xf9050409 + #xa091109 + #x1b06f20b + #xe2e9f703 + #xf0ffdf1 + #xfbf10003 + #xb07f805 + #xa031a0f + #xf8060010 + #x100e13fc + #x1af8f815 + #xe0ecfe11 + #x130800ee + #xf5f7ff05 + #xe00fa05 + #x5131c0d + #xff07020f + #x160f0af0 + #xdf10817 + #xe0f70714 + #x1507ffe6 + #xf7fef909 + #xbfaff01 + #x41d1a0c + #x8040408 + #x1106fdf4 + #xf9140c + #xe3050b0f + #x1305f6e0 + #xf40f + #x3f904ff + #xd1f140c + #xbfe0402 + #x2fbf903 + #x2060bfc + #xf20b0506 + #xdfeebe0 + #x5f8f614 + #xfafe07ff + #x161f140d + #x7fd0302 + #xf6f90111 + #x805fbf4 + #x70004 + #x3f4e6e4 + #x4f3fe13 + #xf5040903 + #x1b1b1509 + #x4010105 + #xf5fe0b13 + #x9f8edf9 + #x1030108 + #xf7ededf2 + #xf6060a + #xf90a0805 + #x19171602 + #x706fe07 + #xfe041011 + #xfcebf202 + #xfe050507 + #xf0f0fafa + #xfc02fe + #xc0806 + #x14181400 + #xf05f908 + #x4060f11 + #xeeebfe04 + #x20d04fd + #xf1f600fa + #x3fff8f8 + #x60a0905 + #x121b0e01 + #x13fff906 + #x3040f18 + #xeaf803ff + #xd0efaed + #xf3fcfffb + #x8faf1f8 + #x4090a04 + #x16190a06 + #xdf9fa05 + #xfe05151f + #xf503fafb + #x1602ece6 + #xf2fafe05 + #x7f3f5fc + #xff0c0904 + #x1a150e09 + #x3f8fb05 + #xff081a1f + #x304efff + #xff2e6ea + #xecf90312 + #x2f300f8 + #xff100606 + #x1b0f1206 + #xfefbf90c + #x50c1d1a + #xbfbec06 + #xfbe9eaf3 + #xe9fb1019 + #xfe06ed + #x4100006 + #x1a0c11ff + #xf815 + #xb0c1f11 + #x8f2f509 + #xe9eef1f9 + #xed01190f + #x70afee3 + #xd05fa0a + #x120f0cfc + #x400fe1b + #x8101f0a + #x3effd05 + #xe6f8f3fd + #xf5031800 + #x110fede3 + #xffafd0f + #x90f0700 + #x5fe0a1a + #x3141d07 + #xf2ff02 + #xeffcf000 + #xfb0410f4 + #x1a08e1ec + #x4f40615 + #x4100406 + #x4021812 + #x4191304 + #xfdf3fe09 + #xf8f8f003 + #xf90409f2 + #x1afce1f5 + #xf6fa1218 + #x50e0709 + #x50c1b07 + #xf160805 + #xfaf50012 + #xf9f5f603 + #xf60506f4 + #x14f4eaf9 + #xef051617 + #x90a0903 + #xa151402 + #x160a0007 + #xfafc0813 + #xf6f8fdff + #xf60705f7 + #xcf4f5f9 + #xf50f1213 + #xa0509fc + #xf170b03 + #x11fffd08 + #xff06100b + #xf5fdfcfa + #xfc0802f6 + #x9f9f8f8 + #x100b0f + #x60207fb + #x13130507 + #x5f8fc08 + #x7100d01 + #xfafff8fb + #x10600f4 + #x8fcf8fd + #x70b060d + #x10305ff + #x130d0408 + #xfdf5fb0a + #xf1406fc + #xfcfaf803 + #x202fef4 + #xafdfb06 + #x5050409 + #xff040704 + #x11090604 + #xf9f2fb0f + #x131400fa + #xfbf80007 + #x1fbf4 + #x8fc030c + #xff040206 + #x40d07 + #xb060403 + #xf8f2000f + #x1512fdf9 + #xfaff0606 + #xff00f5f4 + #x5fe0e0d + #xfd06ff04 + #x61204 + #x6050203 + #xf6f70507 + #x160f00fa + #xff080901 + #xfaf2f9 + #x103160c + #xff07fa02 + #x10810ff + #x805fe05 + #xf80004fd + #x150b01f9 + #xa09fb0e + #xfcedf600 + #x1121306 + #xbfcfc01 + #x41500fc + #x8fc0402 + #xfbfffa08 + #x150dfef8 + #xdfef612 + #xf0eb0107 + #x7150f05 + #xdfcfcfd + #x80efb02 + #x3f80b0a + #xfcfbfe11 + #x1308f6f9 + #x4f2fa18 + #xe8f90d06 + #xd110bfe + #xafefbfb + #x604fd0b + #xfdff150b + #xfdfe0611 + #xc01f5fd + #xf9f00315 + #xec0b0efe + #xf0905f7 + #x501fafd + #x400050f + #xfc081607 + #x1010a0c + #x500f802 + #xf2f60709 + #xfb1804f3 + #xd0001f5 + #x604f704 + #x4000e0d + #xfd0c0d05 + #x5050d07 + #xb02fa05 + #xf0f7ff00 + #xa16faf0 + #x3f700fb + #xb04f70a + #x503120a + #xff0a040a + #x7081204 + #x1300fb09 + #xeaf2f805 + #x120bf9f0 + #xf8f50103 + #x1100f90a + #x30b1509 + #xff050410 + #x91013f9 + #x12f3010f + #xe0edf915 + #x1306feea + #xf2fa0009 + #x13fcfe06 + #x117130b + #x3070f + #xe1609ee + #x3ee1013 + #xe1f2031e + #x1208fce2 + #xf7fefd0f + #xbf902fd + #x51f110d + #x6020d04 + #xf0df9f2 + #xf8f91a0d + #xe7fe0a17 + #x100af3e0 + #xfefcfb14 + #x1fc04fa + #x111f120f + #x7010b00 + #x6fff300 + #xfa0815ff + #xf6060a0b + #xd05e8e0 + #x2f40017 + #xf80103fe + #x1c1d130d + #x2000404 + #xf9f6fc0d + #x50b01f4 + #x2050305 + #x5f9e2e4 + #xfff00a14 + #xf8060305 + #x1f191605 + #x2000c + #xf3fb0a0e + #x8fef3f5 + #x500010a + #xfbefe2ef + #xf9f4100b + #xfc090509 + #x1e1814fd + #x304fe12 + #xf8041009 + #xffedf3fd + #x50e + #xf2eff0f8 + #xf8fc0c00 + #x30a0708 + #x181b0efa + #xa04fd10 + #x80f09 + #xeeebfe02 + #x2060704 + #xf0f8faf8 + #xff0000f7 + #x90a0804 + #x171d08ff + #xefefd0c + #x1080f13 + #xe9f50200 + #xd0afff4 + #xf3fffaf9 + #x3faf8f5 + #x80b0805 + #x19190704 + #x8f9fd08 + #x6151c + #xf200fefd + #x1502f1e8 + #xf500f704 + #x1f1faf7 + #x40d070a + #x1c120b06 + #xf9fa0c + #xfe0a1e1b + #x1fff4ff + #xff4e7eb + #xf3fc0012 + #xfbf101f5 + #x60e050c + #x1a100f02 + #xfdfaf810 + #x10f1f13 + #x8f5f403 + #xfeeae6f7 + #xf0fc0f16 + #xf7fb04ee + #xd0b030a + #x16130dfd + #xfffbfa18 + #x4151f08 + #x3ebfd05 + #xedebeb02 + #xf1011b0c + #x8fbe6 + #x13040009 + #x101605fd + #x2f8021c + #x4181d04 + #xfbec0401 + #xebf1f007 + #xf60d1afa + #xe0ceae6 + #x10fb020a + #xc15ff04 + #x1f81116 + #x11b1905 + #xf6f10300 + #xf4f4f107 + #xfb1310ee + #x1802e0ed + #x3f80910 + #xa10000b + #xffff1c0d + #x51d1306 + #xf5f5ff07 + #xfdf1f306 + #xfb1102ed + #x19f3e3f4 + #xf4fd1119 + #xc0b070c + #xff0c1b05 + #x101b0a05 + #xf4f40212 + #xfceff904 + #xfa0ffdf2 + #xfeaeef6 + #xf008161e + #xd080d01 + #x6170e02 + #x18100305 + #xf4f80a16 + #xf8f3feff + #xfa0dfdf6 + #x4ecf7f3 + #xf811151c + #xd090af7 + #xf170406 + #x13020106 + #xf900110d + #xf7fafdfb + #xfe0cfef5 + #xf4f9f3 + #x5111018 + #x80802f4 + #x14120209 + #x5fb0208 + #x20c1002 + #xfbfcf7fc + #x20afcf4 + #x2f8f8f8 + #xc0b0c12 + #x20800fc + #x130b0608 + #xfcf8010c + #xc1106fd + #xfef8f701 + #x308faf4 + #x3f8fb00 + #xa06090f + #x80103 + #xf080904 + #xf9f4000f + #x140f00fa + #xfcf5fd09 + #x205f6f6 + #x3f90404 + #x303060d + #x80805 + #xa080700 + #xf6f2040f + #x150b00f7 + #xf8fb040a + #x102f4f6 + #xfc0e05 + #x103020c + #x10b0d01 + #x8070300 + #xf1f7090a + #x160900f5 + #xfb06060b + #x1fbf1f7 + #xfc041304 + #x4010009 + #x1110bfc + #x9040201 + #xf1ff0705 + #x140a02f8 + #x40d000a + #xfff0f4fd + #xe1507 + #xafefd05 + #x21504fa + #x8ff0203 + #xf902fd03)) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-h.gc b/goal_src/jak1/engine/gfx/ocean/ocean-h.gc index ec1c0dd380..83ee632369 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-h.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-h.gc @@ -1,22 +1,22 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: ocean-h.gc -;; name in dgo: ocean-h -;; dgos: GAME, ENGINE - ;; NOTE - for water (define-extern ocean-get-height (function vector float)) + (define-extern update-ocean (function none)) + (define-extern draw-ocean (function none)) + (define-extern draw-ocean-texture (function dma-buffer (inline-array vector) symbol none)) + (define-extern draw-ocean-transition (function dma-buffer none)) + (define-extern draw-ocean-mid (function dma-buffer none)) -(define-extern draw-ocean-near (function dma-buffer none)) +(define-extern draw-ocean-near (function dma-buffer none)) ;; The "ocean" renderer is used to render the infinite water. ;; It doesn't draw the rivers in FJ or the water near the farmer. @@ -24,344 +24,257 @@ ;; DECOMP BEGINS (deftype ocean-corner (structure) - ((bsphere sphere :inline) - (start-corner vector :inline) - (y-scales vector :inline) - (alphas vector :inline) - (colors uint32 4) - ) - ) - + ((bsphere sphere :inline) + (start-corner vector :inline) + (y-scales vector :inline) + (alphas vector :inline) + (colors uint32 4))) (deftype ocean-wave-info (structure) - ((frequency float) - (amplitude float) - (wave-speed float) - (angle float) - (kx float) - (ky float) - (w float) - (flags int32) - ) - ) - + ((frequency float) + (amplitude float) + (wave-speed float) + (angle float) + (kx float) + (ky float) + (w float) + (flags int32))) (deftype ocean-vertex (structure) - ((pos vector :inline) - (stq vector :inline) - (col vector :inline) - ) - ) - + ((pos vector :inline) + (stq vector :inline) + (col vector :inline))) (deftype ocean-spheres (structure) - ((spheres sphere 36 :inline) - ) - ) - + ((spheres sphere 36 :inline))) (deftype ocean-colors (structure) - ((colors rgba 2548) - ) - ) - + ((colors rgba 2548))) (deftype ocean-mid-mask (structure) - ((mask uint8 8) - (dword uint64 :overlay-at (-> mask 0)) - ) - :pack-me - ) - + ((mask uint8 8) + (dword uint64 :overlay-at (-> mask 0))) + :pack-me) (deftype ocean-mid-indices (basic) - ((data uint16 36) - ) - ) - + ((data uint16 36))) (deftype ocean-mid-masks (basic) - ((data (inline-array ocean-mid-mask)) - ) - :pack-me - ) - + ((data (inline-array ocean-mid-mask))) + :pack-me) (deftype ocean-trans-mask (structure) - ((mask uint8 4) - (word uint64 :overlay-at (-> mask 0)) - ) - :pack-me - ) - + ((mask uint8 4) + (word uint64 :overlay-at (-> mask 0))) + :pack-me) (deftype ocean-trans-index (structure) - ((parent int16) - (child int16) - ) - :pack-me - ) - + ((parent int16) + (child int16)) + :pack-me) (deftype ocean-trans-indices (basic) - ((data ocean-trans-index 2304 :inline) - ) - ) - + ((data ocean-trans-index 2304 :inline))) (deftype ocean-near-index (structure) - ((data uint16 16) - ) - ) - + ((data uint16 16))) (deftype ocean-near-indices (basic) - ((data (inline-array ocean-near-index)) - ) - ) - + ((data (inline-array ocean-near-index)))) (deftype ocean-near-colors (structure) - ((color0 vector :inline) - (color1 vector :inline) - (color2 vector :inline) - (color3 vector :inline) - ) - ) - + ((color0 vector :inline) + (color1 vector :inline) + (color2 vector :inline) + (color3 vector :inline))) (deftype ocean-map (basic) - ((start-corner vector :inline) - (far-color vector :inline) - (ocean-spheres ocean-spheres) - (ocean-colors ocean-colors) - (ocean-mid-indices ocean-mid-indices) - (ocean-trans-indices ocean-trans-indices) - (ocean-near-indices ocean-near-indices) - (ocean-mid-masks ocean-mid-masks) - ) - ) - + ((start-corner vector :inline) + (far-color vector :inline) + (ocean-spheres ocean-spheres) + (ocean-colors ocean-colors) + (ocean-mid-indices ocean-mid-indices) + (ocean-trans-indices ocean-trans-indices) + (ocean-near-indices ocean-near-indices) + (ocean-mid-masks ocean-mid-masks))) (deftype ocean-trans-strip (structure) - ((verts uint128 10) - ) - ) - + ((verts uint128 10))) (deftype ocean-trans-strip-array (structure) - ((data ocean-trans-strip 4 :inline) - ) - ) - + ((data ocean-trans-strip 4 :inline))) (deftype ocean-wave-data (structure) - ((data uint8 1024) - ) - ) - + ((data uint8 1024))) (deftype ocean-wave-frames (structure) - ((frame ocean-wave-data 64 :inline) - ) - ) - + ((frame ocean-wave-data 64 :inline))) (deftype ocean-work (basic) - ((deltas vector :inline) - (map-min vector :inline) - (map-max vector :inline) - (interp vector :inline) - (corner-array ocean-corner 25 :inline) - (corner-count int32) - (temp-vecs vector 4 :inline) - (mid-mask-ptrs (pointer int64) 36) - (mid-camera-masks uint64 36) - (trans-mask-ptrs (pointer int32) 64) - (trans-camera-masks ocean-trans-mask 16 :inline) - (trans-temp-masks ocean-trans-mask 16 :inline) - (near-mask-indices uint16 16) - (mid-minx uint8) - (mid-maxx uint8) - (mid-minz uint8) - (mid-maxz uint8) - (near-minx uint8) - (near-maxx uint8) - (near-minz uint8) - (near-maxz uint8) - (temp-minx uint8) - (temp-maxx uint8) - (temp-minz uint8) - (temp-maxz uint8) - ) - ) - + ((deltas vector :inline) + (map-min vector :inline) + (map-max vector :inline) + (interp vector :inline) + (corner-array ocean-corner 25 :inline) + (corner-count int32) + (temp-vecs vector 4 :inline) + (mid-mask-ptrs (pointer int64) 36) + (mid-camera-masks uint64 36) + (trans-mask-ptrs (pointer int32) 64) + (trans-camera-masks ocean-trans-mask 16 :inline) + (trans-temp-masks ocean-trans-mask 16 :inline) + (near-mask-indices uint16 16) + (mid-minx uint8) + (mid-maxx uint8) + (mid-minz uint8) + (mid-maxz uint8) + (near-minx uint8) + (near-maxx uint8) + (near-minz uint8) + (near-maxz uint8) + (temp-minx uint8) + (temp-maxx uint8) + (temp-minz uint8) + (temp-maxz uint8))) (define *ocean-work* (new 'static 'ocean-work)) + (define *ocean-facing* 0) + (define *ocean-off* #f) + (define *ocean-mid-off* #f) + (define *ocean-near-off* #f) + (define *ocean-heights* (the-as ocean-wave-info #f)) + (define *ocean-verts* (the-as (inline-array vector) #f)) (deftype ocean-vu0-work (structure) - ((scales vector :inline) - (mask-hi vector4w :inline) - (mask-lo vector4w :inline) - (lights vu-lights :inline) - (wait-to-vu0 uint32) - ) - ) - + ((scales vector :inline) + (mask-hi vector4w :inline) + (mask-lo vector4w :inline) + (lights vu-lights :inline) + (wait-to-vu0 uint32))) (deftype ocean-texture-constants (structure) - ((giftag gs-gif-tag :inline) - (buffers vector4w :inline) - (dests vector4w :inline) - (start vector :inline) - (offsets vector :inline) - (constants vector :inline) - (cam-nrm vector :inline) - ) - ) - + ((giftag gs-gif-tag :inline) + (buffers vector4w :inline) + (dests vector4w :inline) + (start vector :inline) + (offsets vector :inline) + (constants vector :inline) + (cam-nrm vector :inline))) (deftype ocean-texture-work (structure) - ((sprite-tmpl dma-gif-packet :inline) - (sprite-tmpl2 dma-gif-packet :inline) - (adgif-tmpl dma-gif-packet :inline) - ) - ) - + ((sprite-tmpl dma-gif-packet :inline) + (sprite-tmpl2 dma-gif-packet :inline) + (adgif-tmpl dma-gif-packet :inline))) (deftype ocean-mid-vertex (structure) - ((stq vector :inline) - (col vector :inline) - (pos vector :inline) - ) - ) - + ((stq vector :inline) + (col vector :inline) + (pos vector :inline))) (deftype ocean-mid-constants (structure) - ((hmge-scale vector :inline) - (inv-hmge-scale vector :inline) - (hvdf-offset vector :inline) - (fog vector :inline) - (constants vector :inline) - (constants2 vector :inline) - (drw-fan gs-gif-tag :inline) - (env-fan gs-gif-tag :inline) - (drw-adgif gs-gif-tag :inline) - (drw-texture adgif-shader :inline) - (drw-strip-0 gs-gif-tag :inline) - (drw-strip-1 gs-gif-tag :inline) - (env-adgif gs-gif-tag :inline) - (env-texture adgif-shader :inline) - (env-strip gs-gif-tag :inline) - (env-color vector :inline) - (index-table vector4w 8 :inline) - (pos0 vector :inline) - (pos1 vector :inline) - (pos2 vector :inline) - (pos3 vector :inline) - ) - ) - + ((hmge-scale vector :inline) + (inv-hmge-scale vector :inline) + (hvdf-offset vector :inline) + (fog vector :inline) + (constants vector :inline) + (constants2 vector :inline) + (drw-fan gs-gif-tag :inline) + (env-fan gs-gif-tag :inline) + (drw-adgif gs-gif-tag :inline) + (drw-texture adgif-shader :inline) + (drw-strip-0 gs-gif-tag :inline) + (drw-strip-1 gs-gif-tag :inline) + (env-adgif gs-gif-tag :inline) + (env-texture adgif-shader :inline) + (env-strip gs-gif-tag :inline) + (env-color vector :inline) + (index-table vector4w 8 :inline) + (pos0 vector :inline) + (pos1 vector :inline) + (pos2 vector :inline) + (pos3 vector :inline))) (deftype ocean-mid-upload (structure) - ((rot matrix :inline) - (matrix matrix :inline) - (colors uint128 108) - (masks uint128 2) - ) - ) - + ((rot matrix :inline) + (matrix matrix :inline) + (colors uint128 108) + (masks uint128 2))) (deftype ocean-mid-upload2 (structure) - ((rot matrix :inline) - (matrix matrix :inline) - (count vector4w :inline) - (tex0 vector :inline) - (tex1 vector :inline) - (tex2 vector :inline) - (tex3 vector :inline) - (clr0 vector :inline) - (clr1 vector :inline) - (clr2 vector :inline) - (clr3 vector :inline) - (verts uint128 18) - ) - ) - + ((rot matrix :inline) + (matrix matrix :inline) + (count vector4w :inline) + (tex0 vector :inline) + (tex1 vector :inline) + (tex2 vector :inline) + (tex3 vector :inline) + (clr0 vector :inline) + (clr1 vector :inline) + (clr2 vector :inline) + (clr3 vector :inline) + (verts uint128 18))) (deftype ocean-mid-work (structure) - ((env0 vector :inline) - (env1 vector :inline) - (env2 vector :inline) - (hmg0 vector :inline) - (hmg1 vector :inline) - (hmg2 vector :inline) - (indices uint128 16) - ) - ) - + ((env0 vector :inline) + (env1 vector :inline) + (env2 vector :inline) + (hmg0 vector :inline) + (hmg1 vector :inline) + (hmg2 vector :inline) + (indices uint128 16))) (deftype ocean-near-constants (structure) - ((hmge-scale vector :inline) - (inv-hmge-scale vector :inline) - (hvdf-offset vector :inline) - (fog vector :inline) - (constants vector :inline) - (constants2 vector :inline) - (constants3 vector :inline) - (constants4 vector :inline) - (drw-fan gs-gif-tag :inline) - (drw2-fan gs-gif-tag :inline) - (env-fan gs-gif-tag :inline) - (drw-adgif gs-gif-tag :inline) - (drw-texture adgif-shader :inline) - (drw-strip gs-gif-tag :inline) - (env-adgif gs-gif-tag :inline) - (env-texture adgif-shader :inline) - (env-strip gs-gif-tag :inline) - (env-color vector :inline) - (drw2-adgif gs-gif-tag :inline) - (drw2-tex0 qword :inline) - (drw2-frame qword :inline) - (drw2-strip gs-gif-tag :inline) - (drw3-adgif gs-gif-tag :inline) - (drw3-frame qword :inline) - (index-table vector4w 4 :inline) - ) - ) - + ((hmge-scale vector :inline) + (inv-hmge-scale vector :inline) + (hvdf-offset vector :inline) + (fog vector :inline) + (constants vector :inline) + (constants2 vector :inline) + (constants3 vector :inline) + (constants4 vector :inline) + (drw-fan gs-gif-tag :inline) + (drw2-fan gs-gif-tag :inline) + (env-fan gs-gif-tag :inline) + (drw-adgif gs-gif-tag :inline) + (drw-texture adgif-shader :inline) + (drw-strip gs-gif-tag :inline) + (env-adgif gs-gif-tag :inline) + (env-texture adgif-shader :inline) + (env-strip gs-gif-tag :inline) + (env-color vector :inline) + (drw2-adgif gs-gif-tag :inline) + (drw2-tex0 qword :inline) + (drw2-frame qword :inline) + (drw2-strip gs-gif-tag :inline) + (drw3-adgif gs-gif-tag :inline) + (drw3-frame qword :inline) + (index-table vector4w 4 :inline))) (deftype ocean-near-upload (structure) - ((rot matrix :inline) - (matrix matrix :inline) - (masks uint128 2) - (start-height vector4w :inline) - (start-st vector :inline) - (near-colors ocean-near-colors :inline) - ) - ) - + ((rot matrix :inline) + (matrix matrix :inline) + (masks uint128 2) + (start-height vector4w :inline) + (start-st vector :inline) + (near-colors ocean-near-colors :inline))) (deftype ocean-near-vertex (structure) - ((stq vector :inline) - (clr vector :inline) - (pos vector :inline) - ) - ) - + ((stq vector :inline) + (clr vector :inline) + (pos vector :inline))) (deftype ocean-near-work (structure) - ((verts-ptr vector :inline) - (indices uint128 16) - ) - ) + ((verts-ptr vector :inline) + (indices uint128 16))) (define-extern *ocean-trans-corner-table* (inline-array vector4w-2)) + (define-extern ocean-interp-wave (function ocean-wave-info uint none)) + (define-extern ocean-generate-verts (function (inline-array vector) ocean-wave-info none)) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-mid.gc b/goal_src/jak1/engine/gfx/ocean/ocean-mid.gc index 31b614efc1..d82ffe6b48 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-mid.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-mid.gc @@ -1,267 +1,215 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/ocean/ocean.gc") (require "kernel/gstate.gc") (require "engine/debug/debug.gc") (require "engine/gfx/ocean/ocean-trans-tables.gc") - -;; name: ocean-mid.gc -;; name in dgo: ocean-mid -;; dgos: GAME, ENGINE - -(define ocean-mid-block (new 'static 'vu-function #| :length #x497 :qlength #x24c |#)) - +(define ocean-mid-block (new 'static 'vu-function)) ;; :length #x497 :qlength #x24c (defun ocean-mid-setup-constants ((arg0 ocean-mid-constants)) "Generate the ocean VU1 renderer constants in-place." - ;; the usual camera math (let ((v1-0 *math-camera*)) (set! (-> arg0 hmge-scale quad) (-> v1-0 hmge-scale quad)) (set! (-> arg0 inv-hmge-scale quad) (-> v1-0 inv-hmge-scale quad)) (set! (-> arg0 hvdf-offset quad) (-> v1-0 hvdf-off quad)) - (set-vector! (-> arg0 fog) (-> v1-0 pfog0) (-> v1-0 fog-min) (-> v1-0 fog-max) 3072.0) - ) - + (set-vector! (-> arg0 fog) (-> v1-0 pfog0) (-> v1-0 fog-min) (-> v1-0 fog-max) 3072.0)) ;; is this 393216 the size of a triangle? (96 meters) (set-vector! (-> arg0 constants) 0.5 0.5 0.0 393216.0) (set-vector! (-> arg0 constants2) 0.5 0.5 1.0 0.0) - - (let ((v1-3 *ocean-subdivide-draw-mode*)) (cond ((zero? v1-3) (set! (-> arg0 drw-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3))) ((= v1-3 1) (set! (-> arg0 drw-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3))) ((= v1-3 2) (set! (-> arg0 drw-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :fge #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :fge #x1) + :nreg #x3))))) (set! (-> arg0 drw-fan regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (let ((v1-12 *ocean-subdivide-draw-mode*)) (cond ((zero? v1-12) (set! (-> arg0 env-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-12 1) (set! (-> arg0 env-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-12 2) (set! (-> arg0 env-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :abe #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :abe #x1) + :nreg #x3))))) (set! (-> arg0 env-fan regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 drw-adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) (set! (-> arg0 drw-adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) (let* ((a0-13 *ocean-base-page*) (v1-23 *ocean-base-block*) (s4-0 (* (+ a0-13 8) 32)) - (s5-0 (* (+ a0-13 10) 32)) - ) - (set! (-> arg0 drw-texture tex0) - (new 'static 'gs-tex0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128) :tbp0 v1-23) - ) + (s5-0 (* (+ a0-13 10) 32))) + (set! (-> arg0 drw-texture tex0) (new 'static 'gs-tex0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128) :tbp0 v1-23)) (set! (-> arg0 drw-texture prims 1) (gs-reg64 tex0-1)) (set! (-> arg0 drw-texture tex1) (new 'static 'gs-tex1 :mxl #x6 :mmag #x1 :mmin #x5 :l #x1 :k #xeed)) (set! (-> arg0 drw-texture prims 3) (gs-reg64 tex1-1)) (set! (-> arg0 drw-texture miptbp1) - (new 'static 'gs-miptbp :tbw1 #x1 :tbw2 #x1 :tbw3 #x1 :tbp3 (+ s5-0 16) :tbp2 s5-0 :tbp1 s4-0) - ) + (new 'static 'gs-miptbp :tbw1 #x1 :tbw2 #x1 :tbw3 #x1 :tbp3 (+ s5-0 16) :tbp2 s5-0 :tbp1 s4-0)) (set! (-> arg0 drw-texture prims 5) (gs-reg64 miptbp1-1)) (set! (-> arg0 drw-texture clamp) (new 'static 'gs-clamp)) (set! (-> arg0 drw-texture clamp-reg) (gs-reg64 clamp-1)) (set! (-> arg0 drw-texture alpha) - (the-as - gs-alpha - (logior (logior (logior (the-as uint #x40000400004000) (shr (shl (+ s5-0 20) 50) 50)) (shr (shl (+ s5-0 21) 50) 30)) - (shr (shl (+ s5-0 22) 50) 10) - ) - ) - ) - ) + (the-as gs-alpha + (logior (logior (logior (the-as uint #x40000400004000) (shr (shl (+ s5-0 20) 50) 50)) (shr (shl (+ s5-0 21) 50) 30)) + (shr (shl (+ s5-0 22) 50) 10))))) (set! (-> arg0 drw-texture prims 9) (gs-reg64 miptbp2-1)) (let ((v1-45 *ocean-subdivide-draw-mode*)) (cond ((zero? v1-45) (set! (-> arg0 drw-strip-0 tag) - (new 'static 'gif-tag64 - :nloop #x12 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3))) ((= v1-45 1) (set! (-> arg0 drw-strip-0 tag) - (new 'static 'gif-tag64 - :nloop #x12 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3))) ((= v1-45 2) (set! (-> arg0 drw-strip-0 tag) - (new 'static 'gif-tag64 - :nloop #x12 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1) + :nreg #x3))))) (set! (-> arg0 drw-strip-0 regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (let ((v1-54 *ocean-subdivide-draw-mode*)) (cond ((zero? v1-54) (set! (-> arg0 drw-strip-1 tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3))) ((= v1-54 1) (set! (-> arg0 drw-strip-1 tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3))) ((= v1-54 2) (set! (-> arg0 drw-strip-1 tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1) + :nreg #x3))))) (set! (-> arg0 drw-strip-1 regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 env-adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) (set! (-> arg0 env-adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) (let ((s5-1 (-> arg0 env-texture))) (adgif-shader<-texture-simple! s5-1 (lookup-texture-by-id (new 'static 'texture-id :index #x3 :page #x100))) - (set! (-> s5-1 alpha) (new 'static 'gs-alpha :b #x2 :c #x1 :d #x1)) - ) + (set! (-> s5-1 alpha) (new 'static 'gs-alpha :b #x2 :c #x1 :d #x1))) (let ((v1-66 *ocean-subdivide-draw-mode*)) (cond ((zero? v1-66) (set! (-> arg0 env-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-66 1) (set! (-> arg0 env-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-66 2) (set! (-> arg0 env-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1) + :nreg #x3))))) (set! (-> arg0 env-strip regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 env-color quad) (-> *time-of-day-context* current-sun env-color quad)) (set-vector! (-> arg0 index-table 0) 63 84 66 0) (set-vector! (-> arg0 index-table 1) 54 72 57 0) @@ -271,33 +219,25 @@ (set-vector! (-> arg0 index-table 5) 18 24 21 0) (set-vector! (-> arg0 index-table 6) 9 12 12 0) (set-vector! (-> arg0 index-table 7) 0 0 3 0) - - (set-vector! (-> arg0 pos0) 0.0 0.0 0.0 1.0) (set-vector! (-> arg0 pos1) 393216.0 0.0 0.0 1.0) (set-vector! (-> arg0 pos2) 0.0 0.0 393216.0 1.0) (set-vector! (-> arg0 pos3) 393216.0 0.0 393216.0 1.0) - (none) - ) + (none)) (defun ocean-mid-add-constants ((arg0 dma-buffer)) "Generate DMA for loading ocean-mid constants to VU1 data memory." (let* ((a1-0 36) (v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x2dd :cmd (vif-cmd unpack-v4-32) :num a1-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2dd :cmd (vif-cmd unpack-v4-32) :num a1-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) ;; generate the constants in place. (ocean-mid-setup-constants (the-as ocean-mid-constants (-> arg0 base))) (&+! (-> arg0 base) 576) - (none) - ) + (none)) ;; definition for function ocean-matrix*! (defun ocean-matrix*! ((arg0 matrix) (arg1 matrix) (arg2 matrix)) @@ -313,8 +253,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (.lvf vf1 (&-> arg1 vector 0 quad)) (.lvf vf5 (&-> arg2 vector 0 quad)) (.lvf vf6 (&-> arg2 vector 1 quad)) @@ -343,9 +282,7 @@ (.svf (&-> arg0 vector 1 quad) vf10) (.svf (&-> arg0 vector 2 quad) vf11) (.svf (&-> arg0 vector 3 quad) vf12) - arg0 - ) - ) + arg0)) ;; definition for function ocean-vector-matrix*! (defun ocean-vector-matrix*! ((arg0 vector) (arg1 vector) (arg2 matrix)) @@ -355,8 +292,7 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg2 vector 0 quad)) (.lvf vf2 (&-> arg2 vector 1 quad)) @@ -368,9 +304,7 @@ (.add.mul.z.vf acc vf3 vf5 acc) (.add.mul.w.vf vf5 vf4 vf0 acc) (.svf (&-> arg0 quad) vf5) - arg0 - ) - ) + arg0)) ;; definition for function ocean-mid-add-matrices ;; INFO: Return type mismatch pointer vs none. @@ -380,42 +314,31 @@ (-> *math-camera* camera-rot) (let* ((a2-0 8) (v1-2 arg0) - (a0-1 (the-as object (-> v1-2 base))) - ) + (a0-1 (the-as object (-> v1-2 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd unpack-v4-32) :num a2-0) - ) - (set! (-> v1-2 base) (&+ (the-as pointer a0-1) 16)) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd unpack-v4-32) :num a2-0)) + (set! (-> v1-2 base) (&+ (the-as pointer a0-1) 16))) (let ((s4-0 (-> arg0 base))) (let* ((v1-3 (the-as object s4-0)) (t0-2 (-> *math-camera* camera-rot)) (a0-4 (-> t0-2 vector 0 quad)) (a2-4 (-> t0-2 vector 1 quad)) (a3-4 (-> t0-2 vector 2 quad)) - (t0-3 (-> t0-2 vector 3 quad)) - ) + (t0-3 (-> t0-2 vector 3 quad))) (set! (-> (the-as matrix v1-3) vector 0 quad) a0-4) (set! (-> (the-as matrix v1-3) vector 1 quad) a2-4) (set! (-> (the-as matrix v1-3) vector 2 quad) a3-4) - (set! (-> (the-as matrix v1-3) vector 3 quad) t0-3) - ) + (set! (-> (the-as matrix v1-3) vector 3 quad) t0-3)) (let ((s3-0 (the-as object (&+ s4-0 48)))) (vector-matrix*! s5-0 arg1 (-> *math-camera* camera-rot)) (set! (-> (the-as vector s3-0) x) (-> s5-0 x)) (set! (-> (the-as vector s3-0) y) (-> s5-0 y)) - (set! (-> (the-as vector s3-0) z) (-> s5-0 z)) - ) + (set! (-> (the-as vector s3-0) z) (-> s5-0 z))) (let ((a0-6 (&+ (-> arg0 base) 64))) - (ocean-matrix*! (the-as matrix a0-6) (the-as matrix s4-0) (-> *math-camera* perspective)) - ) - ) - ) + (ocean-matrix*! (the-as matrix a0-6) (the-as matrix s4-0) (-> *math-camera* perspective))))) (&+! (-> arg0 base) 128) - (none) - ) + (none)) ;; definition for function ocean-mid-check ;; Used lq/sq @@ -423,21 +346,17 @@ (local-vars (v0-0 symbol) (v1-10 float) (a3-2 float) (a3-6 float) (a3-10 float)) (rlet ((vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (let ((v1-0 (new-stack-vector0)) - (t0-1 (-> *math-camera* trans)) - ) + (t0-1 (-> *math-camera* trans))) 1.0 (set! (-> v1-0 x) (+ (-> arg3 x) (* 393216.0 (the float arg1)))) (set! (-> v1-0 y) (-> arg3 y)) (set! (-> v1-0 z) (+ (-> arg3 z) (* 393216.0 (the float arg2)))) (let ((a3-1 v1-0) - (t1-0 t0-1) - ) + (t1-0 t0-1)) (.lvf vf2 (&-> a3-1 quad)) - (.lvf vf3 (&-> t1-0 quad)) - ) + (.lvf vf3 (&-> t1-0 quad))) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.y.vf vf1 vf1 vf1 :mask #b1) @@ -445,15 +364,12 @@ (.mov a3-2 vf1) (when (< a3-2 309237600000.0) (logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1)) - (return #f) - ) + (return #f)) (set! (-> v1-0 x) (+ 393216.0 (-> v1-0 x))) (let ((a3-5 v1-0) - (t1-1 t0-1) - ) + (t1-1 t0-1)) (.lvf vf2 (&-> a3-5 quad)) - (.lvf vf3 (&-> t1-1 quad)) - ) + (.lvf vf3 (&-> t1-1 quad))) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.y.vf vf1 vf1 vf1 :mask #b1) @@ -461,15 +377,12 @@ (.mov a3-6 vf1) (when (< a3-6 309237600000.0) (logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1)) - (return #f) - ) + (return #f)) (set! (-> v1-0 z) (+ 393216.0 (-> v1-0 z))) (let ((a3-9 v1-0) - (t1-2 t0-1) - ) + (t1-2 t0-1)) (.lvf vf2 (&-> a3-9 quad)) - (.lvf vf3 (&-> t1-2 quad)) - ) + (.lvf vf3 (&-> t1-2 quad))) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.y.vf vf1 vf1 vf1 :mask #b1) @@ -477,12 +390,10 @@ (.mov a3-10 vf1) (when (< a3-10 309237600000.0) (logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1)) - (return #f) - ) + (return #f)) (set! (-> v1-0 x) (+ -393216.0 (-> v1-0 x))) (.lvf vf2 (&-> v1-0 quad)) - (.lvf vf3 (&-> t0-1 quad)) - ) + (.lvf vf3 (&-> t0-1 quad))) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.y.vf vf1 vf1 vf1 :mask #b1) @@ -491,98 +402,70 @@ (when (< v1-10 309237600000.0) (logior! (-> (the-as (pointer uint8) (+ arg2 (the-as int arg0)))) (ash 1 arg1)) (return #f) - v0-0 - ) - ) - ) + v0-0))) ;; definition for function ocean-mid-add-call ;; INFO: Return type mismatch pointer vs none. (defun ocean-mid-add-call ((arg0 dma-buffer) (arg1 int)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm arg1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (none) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (none)) ;; definition for function ocean-mid-add-call-flush ;; INFO: Return type mismatch pointer vs none. (defun ocean-mid-add-call-flush ((arg0 dma-buffer) (arg1 uint)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm arg1)) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (none) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (none)) (defun ocean-mid-add-upload ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 float)) "Add DMA data to upload data needed to draw an ocean tile." - ;; calculate the location of the tile. (let ((gp-0 (new-stack-vector0))) (let ((v1-1 (-> *ocean-map* start-corner))) (set! (-> gp-0 x) (+ (-> v1-1 x) (* 3145728.0 (the float arg2)))) (set! (-> gp-0 y) (-> v1-1 y)) - (set! (-> gp-0 z) (+ (-> v1-1 z) (* 3145728.0 (the float arg1)))) - ) + (set! (-> gp-0 z) (+ (-> v1-1 z) (* 3145728.0 (the float arg1))))) (set! (-> gp-0 w) 1.0) - ;; compute combined matrix (ocean-mid-add-matrices arg0 gp-0) - ;; upload color. (let ((v1-4 (+ (the-as uint (-> *ocean-map* ocean-colors)) (* (+ (* 416 arg1) (* arg2 8)) 4)))) (dotimes (a0-6 9) (let* ((a1-3 arg0) - (a2-1 (the-as object (-> a1-3 base))) - ) + (a2-1 (the-as object (-> a1-3 base)))) (set! (-> (the-as dma-packet a2-1) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id ref) :addr v1-4)) (set! (-> (the-as dma-packet a2-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a2-1) vif1) (new 'static 'vif-tag - :num #xc - :cmd (vif-cmd unpack-v4-8) - :imm (logior (shr (shl (+ (* 12 a0-6) 8) 54) 54) #xc000) - ) - ) - (set! (-> a1-3 base) (&+ (the-as pointer a2-1) 16)) - ) - (+! v1-4 208) - ) - ) - + (set! (-> (the-as dma-packet a2-1) vif1) + (new 'static 'vif-tag :num #xc :cmd (vif-cmd unpack-v4-8) :imm (logior (shr (shl (+ (* 12 a0-6) 8) 54) 54) #xc000))) + (set! (-> a1-3 base) (&+ (the-as pointer a2-1) 16))) + (+! v1-4 208))) ;; upload "mid masks". ;; these allow some zones to be skipped. ;; using 0 will draw, using 1 willl skip. (let* ((a2-3 1) (v1-7 arg0) - (a0-7 (the-as object (-> v1-7 base))) - ) + (a0-7 (the-as object (-> v1-7 base)))) (set! (-> (the-as dma-packet a0-7) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-3)) (set! (-> (the-as dma-packet a0-7) vif0) (new 'static 'vif-tag :imm #x204 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-7) vif1) - (new 'static 'vif-tag :imm #xc074 :num #x2 :cmd (vif-cmd unpack-v4-8)) - ) - (set! (-> v1-7 base) (&+ (the-as pointer a0-7) 16)) - ) + (set! (-> (the-as dma-packet a0-7) vif1) (new 'static 'vif-tag :imm #xc074 :num #x2 :cmd (vif-cmd unpack-v4-8))) + (set! (-> v1-7 base) (&+ (the-as pointer a0-7) 16))) (let ((v1-8 (-> arg0 base))) (let ((a0-12 (-> *ocean-map* ocean-mid-masks data arg3))) (set! (-> *ocean-work* mid-mask-ptrs arg4) (the-as (pointer int64) v1-8)) (set! (-> (the-as (pointer uint64) v1-8)) (-> a0-12 dword)) ;; (set! (-> (the-as (pointer uint64) v1-8)) #xffffffffffffffff) ) - (set! (-> (the-as (pointer uint64) v1-8) 1) (the-as uint 0)) - ) + (set! (-> (the-as (pointer uint64) v1-8) 1) (the-as uint 0))) (&+! (-> arg0 base) 16) - ;; when the camera is very close, we need to do additional checking. ;; I believe this checks which subtiles will be skipped by the renderer ;; and adds them to the camera masks. @@ -590,104 +473,57 @@ (let* ((v1-12 (-> *math-camera* trans)) (s5-1 (&-> *ocean-work* mid-camera-masks arg4)) (s4-1 (+ (the int (* 0.0000025431316 (- (-> v1-12 x) (-> gp-0 x)))) -1)) - (s3-1 (+ (the int (* 0.0000025431316 (- (-> v1-12 z) (-> gp-0 z)))) -1)) - ) + (s3-1 (+ (the int (* 0.0000025431316 (- (-> v1-12 z) (-> gp-0 z)))) -1))) (dotimes (s2-1 3) (dotimes (s1-1 3) (let ((a1-12 (+ s1-1 s4-1)) - (a2-7 (+ s2-1 s3-1)) - ) - (if (and (>= a1-12 0) (>= a2-7 0) (< a1-12 8) (< a2-7 8)) - (ocean-mid-check s5-1 a1-12 a2-7 gp-0) - ) - ) - ) - ) - ) - #f - ) - ) - ) + (a2-7 (+ s2-1 s3-1))) + (if (and (>= a1-12 0) (>= a2-7 0) (< a1-12 8) (< a2-7 8)) (ocean-mid-check s5-1 a1-12 a2-7 gp-0)))))) + #f))) ;; definition for function ocean-mid-camera-masks-bit? (defun ocean-mid-camera-masks-bit? ((arg0 uint) (arg1 uint)) (cond - ((or (< (the-as int arg0) 0) (>= (the-as int arg0) 48) (< (the-as int arg1) 0) (>= (the-as int arg1) 48)) - #t - ) + ((or (< (the-as int arg0) 0) (>= (the-as int arg0) 48) (< (the-as int arg1) 0) (>= (the-as int arg1) 48)) #t) (else - (let* ((a3-0 (/ (the-as int arg0) 8)) - (a2-3 (/ (the-as int arg1) 8)) - (a0-1 (logand arg0 7)) - (v1-1 (logand arg1 7)) - (a1-3 (+ (* 6 a3-0) a2-3)) - ) - (logtest? (-> (the-as (pointer uint8) (+ (+ a0-1 (* a1-3 8)) (the-as uint *ocean-work*))) 2300) (ash 1 v1-1)) - ) - ) - ) - ) + (let* ((a3-0 (/ (the-as int arg0) 8)) + (a2-3 (/ (the-as int arg1) 8)) + (a0-1 (logand arg0 7)) + (v1-1 (logand arg1 7)) + (a1-3 (+ (* 6 a3-0) a2-3))) + (logtest? (-> (the-as (pointer uint8) (+ (+ a0-1 (* a1-3 8)) (the-as uint *ocean-work*))) 2300) (ash 1 v1-1)))))) ;; definition for function ocean-mid-mask-ptrs-bit? (defun ocean-mid-mask-ptrs-bit? ((arg0 uint) (arg1 uint)) (cond - ((or (< (the-as int arg0) 0) (>= (the-as int arg0) 48) (< (the-as int arg1) 0) (>= (the-as int arg1) 48)) - #t - ) + ((or (< (the-as int arg0) 0) (>= (the-as int arg0) 48) (< (the-as int arg1) 0) (>= (the-as int arg1) 48)) #t) (else - (let* ((a3-0 (/ (the-as int arg0) 8)) - (a2-3 (/ (the-as int arg1) 8)) - (a0-1 (logand arg0 7)) - (v1-1 (logand arg1 7)) - (a1-3 (+ (* 6 a3-0) a2-3)) - ) - (if (-> *ocean-work* mid-mask-ptrs a1-3) - (logtest? (-> (the-as (pointer uint8) (+ a0-1 (the-as uint (-> *ocean-work* mid-mask-ptrs a1-3)))) 0) - (ash 1 v1-1) - ) - #t - ) - ) - ) - ) - ) + (let* ((a3-0 (/ (the-as int arg0) 8)) + (a2-3 (/ (the-as int arg1) 8)) + (a0-1 (logand arg0 7)) + (v1-1 (logand arg1 7)) + (a1-3 (+ (* 6 a3-0) a2-3))) + (if (-> *ocean-work* mid-mask-ptrs a1-3) + (logtest? (-> (the-as (pointer uint8) (+ a0-1 (the-as uint (-> *ocean-work* mid-mask-ptrs a1-3)))) 0) (ash 1 v1-1)) + #t))))) ;; definition for function ocean-mid-camera-masks-set! (defun ocean-mid-camera-masks-set! ((arg0 uint) (arg1 uint)) (cond - ((or (< (the-as int arg0) 0) (>= (the-as int arg0) 48) (< (the-as int arg1) 0) (>= (the-as int arg1) 48)) - #f - ) + ((or (< (the-as int arg0) 0) (>= (the-as int arg0) 48) (< (the-as int arg1) 0) (>= (the-as int arg1) 48)) #f) (else - (let* ((a3-0 (/ (the-as int arg0) 8)) - (a2-3 (/ (the-as int arg1) 8)) - (v1-1 (logand arg0 7)) - (a0-1 (logand arg1 7)) - (a2-4 (+ (* 6 a3-0) a2-3)) - (a1-5 (&-> *ocean-work* mid-camera-masks a2-4)) - ) - (cond - (a1-5 - (cond - ((logtest? (-> (the-as (pointer uint8) (+ v1-1 (the-as uint (-> *ocean-work* mid-mask-ptrs a2-4)))) 0) - (ash 1 a0-1) - ) - #f - ) - (else - (logior! (-> (the-as (pointer uint8) (+ v1-1 (the-as uint a1-5))) 0) (ash 1 a0-1)) - #t - ) - ) - ) - (else - #f - ) - ) - ) - ) - ) - ) + (let* ((a3-0 (/ (the-as int arg0) 8)) + (a2-3 (/ (the-as int arg1) 8)) + (v1-1 (logand arg0 7)) + (a0-1 (logand arg1 7)) + (a2-4 (+ (* 6 a3-0) a2-3)) + (a1-5 (&-> *ocean-work* mid-camera-masks a2-4))) + (cond + (a1-5 + (cond + ((logtest? (-> (the-as (pointer uint8) (+ v1-1 (the-as uint (-> *ocean-work* mid-mask-ptrs a2-4)))) 0) (ash 1 a0-1)) #f) + (else (logior! (-> (the-as (pointer uint8) (+ v1-1 (the-as uint a1-5))) 0) (ash 1 a0-1)) #t))) + (else #f)))))) ;; definition for function ocean-mid-add-upload-table ;; WARN: Function may read a register that is not set: f31 @@ -708,35 +544,27 @@ (a1-16 uint128) (a2-15 uint128) (a3-11 uint128) - (f31-0 none) - ) + (f31-0 none)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (when (ocean-mid-camera-masks-set! arg1 arg2) (let ((a1-2 (new-stack-vector0))) (let ((v1-1 (-> *ocean-map* start-corner))) (set! (-> a1-2 x) (+ (-> v1-1 x) (* 393216.0 (the float arg2)))) (set! (-> a1-2 y) (-> v1-1 y)) - (set! (-> a1-2 z) (+ (-> v1-1 z) (* 393216.0 (the float arg1)))) - ) + (set! (-> a1-2 z) (+ (-> v1-1 z) (* 393216.0 (the float arg1))))) (set! (-> a1-2 w) 1.0) ;; (format 0 "~`vector`P~%" (-> *ocean-map* start-corner)) - (ocean-mid-add-matrices arg0 a1-2) - ) + (ocean-mid-add-matrices arg0 a1-2)) (let* ((a1-3 9) (v1-3 arg0) - (a0-3 (the-as object (-> v1-3 base))) - ) + (a0-3 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a0-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-3)) (set! (-> (the-as dma-packet a0-3) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-3) vif1) - (new 'static 'vif-tag :imm #x8008 :cmd (vif-cmd unpack-v4-32) :num a1-3) - ) - (set! (-> v1-3 base) (&+ (the-as pointer a0-3) 16)) - ) + (set! (-> (the-as dma-packet a0-3) vif1) (new 'static 'vif-tag :imm #x8008 :cmd (vif-cmd unpack-v4-32) :num a1-3)) + (set! (-> v1-3 base) (&+ (the-as pointer a0-3) 16))) (set-vector! (the-as vector4w (-> arg0 base)) arg4 0 0 0) (&+! (-> arg0 base) 16) (let ((v1-7 (the-as (pointer uint128) (-> arg0 base)))) @@ -747,16 +575,14 @@ (let ((a0-18 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ (* 52 (the-as int arg1)) arg2)))) (a1-13 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ arg2 1 (* 52 (the-as int arg1)))))) (a2-14 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ (* 52 (the-as int (+ arg1 1))) arg2)))) - (a3-10 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ arg2 1 (* 52 (the-as int (+ arg1 1))))))) - ) + (a3-10 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ arg2 1 (* 52 (the-as int (+ arg1 1)))))))) (.pextlb a0-19 0 a0-18) (.mov r0-0 f31-0) (.pextlb a1-14 0 a1-13) (.mov r0-1 f31-0) (.pextlb a2-15 0 a2-14) (.mov r0-2 f31-0) - (.pextlb a3-11 0 a3-10) - ) + (.pextlb a3-11 0 a3-10)) (.mov r0-3 f31-0) (.pextlh a0-20 0 a0-19) (.mov r0-4 f31-0) @@ -783,238 +609,129 @@ (nop!) (.svf (&-> v1-7 6) vf3) (nop!) - (.svf (&-> v1-7 7) vf4) - ) + (.svf (&-> v1-7 7) vf4)) (.mov v1-8 vf4) (&+! (-> arg0 base) 128) (let* ((v1-11 arg0) - (a0-22 (the-as object (-> v1-11 base))) - ) - (set! (-> (the-as dma-packet a0-22) dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int arg3) :qwc arg4) - ) + (a0-22 (the-as object (-> v1-11 base)))) + (set! (-> (the-as dma-packet a0-22) dma) (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int arg3) :qwc arg4)) (set! (-> (the-as dma-packet a0-22) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-22) vif1) - (new 'static 'vif-tag :imm #x8011 :cmd (vif-cmd unpack-v4-32) :num arg4) - ) - (set! (-> v1-11 base) (&+ (the-as pointer a0-22) 16)) - ) - (if arg5 - (ocean-mid-add-call arg0 275) - (ocean-mid-add-call arg0 107) - ) - ) - (none) - ) - ) + (set! (-> (the-as dma-packet a0-22) vif1) (new 'static 'vif-tag :imm #x8011 :cmd (vif-cmd unpack-v4-32) :num arg4)) + (set! (-> v1-11 base) (&+ (the-as pointer a0-22) 16))) + (if arg5 (ocean-mid-add-call arg0 275) (ocean-mid-add-call arg0 107))) + (none))) ;; definition for function ocean-mid-add-upload-top (defun ocean-mid-add-upload-top ((arg0 dma-buffer) (arg1 uint) (arg2 uint)) (let ((s2-0 (-> *ocean-work* mid-minx)) (s1-0 (-> *ocean-work* mid-maxx)) - (s3-0 (ocean-mid-camera-masks-bit? arg1 arg2)) - ) + (s3-0 (ocean-mid-camera-masks-bit? arg1 arg2))) (cond - ((ocean-mid-mask-ptrs-bit? arg1 arg2) - ) + ((ocean-mid-mask-ptrs-bit? arg1 arg2)) ((= arg2 s2-0) (cond (s3-0 - (ocean-mid-add-upload-table arg0 (+ arg1 -1) arg2 *ocean-down-table* 7 #t) - (ocean-mid-add-upload-table arg0 arg1 (+ arg2 -1) *ocean-right-table* 7 #t) - ) + (ocean-mid-add-upload-table arg0 (+ arg1 -1) arg2 *ocean-down-table* 7 #t) + (ocean-mid-add-upload-table arg0 arg1 (+ arg2 -1) *ocean-right-table* 7 #t)) (else - (let ((s3-1 (ocean-mid-mask-ptrs-bit? (+ arg1 1) arg2)) - (v1-5 (ocean-mid-mask-ptrs-bit? arg1 (+ arg2 1))) - ) - (cond - ((and s3-1 v1-5) - ) - (s3-1 - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-right-table* 7 #t) - ) - (v1-5 - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-down-table* 7 #t) - ) - (else - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-down-right-table* 10 #f) - ) - ) - ) - ) - ) - ) + (let ((s3-1 (ocean-mid-mask-ptrs-bit? (+ arg1 1) arg2)) + (v1-5 (ocean-mid-mask-ptrs-bit? arg1 (+ arg2 1)))) + (cond + ((and s3-1 v1-5)) + (s3-1 (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-right-table* 7 #t)) + (v1-5 (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-down-table* 7 #t)) + (else (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-down-right-table* 10 #f))))))) ((= arg2 s1-0) (cond (s3-0 - (ocean-mid-add-upload-table arg0 (+ arg1 -1) arg2 *ocean-down-table* 7 #t) - (ocean-mid-add-upload-table arg0 arg1 (+ arg2 1) *ocean-left-table* 7 #t) - ) + (ocean-mid-add-upload-table arg0 (+ arg1 -1) arg2 *ocean-down-table* 7 #t) + (ocean-mid-add-upload-table arg0 arg1 (+ arg2 1) *ocean-left-table* 7 #t)) (else - (let ((s3-2 (ocean-mid-mask-ptrs-bit? (+ arg1 1) arg2)) - (v1-7 (ocean-mid-mask-ptrs-bit? arg1 (+ arg2 -1))) - ) - (cond - ((and s3-2 v1-7) - ) - (s3-2 - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-left-table* 7 #t) - ) - (v1-7 - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-down-table* 7 #t) - ) - (else - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-down-left-table* 10 #t) - ) - ) - ) - ) - ) - ) - (s3-0 - (ocean-mid-add-upload-table arg0 (+ arg1 -1) arg2 *ocean-down-table* 7 #t) - ) - ) - ) - (none) - ) + (let ((s3-2 (ocean-mid-mask-ptrs-bit? (+ arg1 1) arg2)) + (v1-7 (ocean-mid-mask-ptrs-bit? arg1 (+ arg2 -1)))) + (cond + ((and s3-2 v1-7)) + (s3-2 (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-left-table* 7 #t)) + (v1-7 (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-down-table* 7 #t)) + (else (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-down-left-table* 10 #t))))))) + (s3-0 (ocean-mid-add-upload-table arg0 (+ arg1 -1) arg2 *ocean-down-table* 7 #t)))) + (none)) ;; definition for function ocean-mid-add-upload-middle (defun ocean-mid-add-upload-middle ((arg0 dma-buffer) (arg1 uint) (arg2 uint)) (let ((s3-0 (-> *ocean-work* mid-minx)) (s2-0 (-> *ocean-work* mid-maxx)) - (s1-0 (ocean-mid-camera-masks-bit? arg1 arg2)) - ) + (s1-0 (ocean-mid-camera-masks-bit? arg1 arg2))) (cond - ((ocean-mid-mask-ptrs-bit? arg1 arg2) - ) + ((ocean-mid-mask-ptrs-bit? arg1 arg2)) ((= arg2 s3-0) (cond - (s1-0 - (ocean-mid-add-upload-table arg0 arg1 (+ arg2 -1) *ocean-right-table* 7 #t) - ) - ((ocean-mid-mask-ptrs-bit? arg1 (+ arg2 1)) - ) - (else - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-right-table* 7 #t) - ) - ) - ) + (s1-0 (ocean-mid-add-upload-table arg0 arg1 (+ arg2 -1) *ocean-right-table* 7 #t)) + ((ocean-mid-mask-ptrs-bit? arg1 (+ arg2 1))) + (else (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-right-table* 7 #t)))) ((= arg2 s2-0) (cond - (s1-0 - (ocean-mid-add-upload-table arg0 arg1 (+ arg2 1) *ocean-left-table* 7 #t) - ) - ((ocean-mid-mask-ptrs-bit? arg1 (+ arg2 -1)) - ) - (else - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-left-table* 7 #t) - ) - ) - ) - ) - ) - (none) - ) + (s1-0 (ocean-mid-add-upload-table arg0 arg1 (+ arg2 1) *ocean-left-table* 7 #t)) + ((ocean-mid-mask-ptrs-bit? arg1 (+ arg2 -1))) + (else (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-left-table* 7 #t)))))) + (none)) ;; definition for function ocean-mid-add-upload-bottom (defun ocean-mid-add-upload-bottom ((arg0 dma-buffer) (arg1 uint) (arg2 uint)) (let ((s2-0 (-> *ocean-work* mid-minx)) (s1-0 (-> *ocean-work* mid-maxx)) - (s3-0 (ocean-mid-camera-masks-bit? arg1 arg2)) - ) + (s3-0 (ocean-mid-camera-masks-bit? arg1 arg2))) (cond - ((ocean-mid-mask-ptrs-bit? arg1 arg2) - ) + ((ocean-mid-mask-ptrs-bit? arg1 arg2)) ((= arg2 s2-0) (cond (s3-0 - (ocean-mid-add-upload-table arg0 (+ arg1 1) arg2 *ocean-up-table* 7 #t) - (ocean-mid-add-upload-table arg0 arg1 (+ arg2 -1) *ocean-right-table* 7 #t) - ) + (ocean-mid-add-upload-table arg0 (+ arg1 1) arg2 *ocean-up-table* 7 #t) + (ocean-mid-add-upload-table arg0 arg1 (+ arg2 -1) *ocean-right-table* 7 #t)) (else - (let ((s3-1 (ocean-mid-mask-ptrs-bit? (+ arg1 -1) arg2)) - (v1-5 (ocean-mid-mask-ptrs-bit? arg1 (+ arg2 1))) - ) - (cond - ((and s3-1 v1-5) - ) - (s3-1 - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-right-table* 7 #t) - ) - (v1-5 - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-up-table* 7 #t) - ) - (else - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-up-right-table* 10 #t) - ) - ) - ) - ) - ) - ) + (let ((s3-1 (ocean-mid-mask-ptrs-bit? (+ arg1 -1) arg2)) + (v1-5 (ocean-mid-mask-ptrs-bit? arg1 (+ arg2 1)))) + (cond + ((and s3-1 v1-5)) + (s3-1 (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-right-table* 7 #t)) + (v1-5 (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-up-table* 7 #t)) + (else (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-up-right-table* 10 #t))))))) ((= arg2 s1-0) (cond (s3-0 - (ocean-mid-add-upload-table arg0 (+ arg1 1) arg2 *ocean-up-table* 7 #t) - (ocean-mid-add-upload-table arg0 arg1 (+ arg2 1) *ocean-left-table* 7 #t) - ) + (ocean-mid-add-upload-table arg0 (+ arg1 1) arg2 *ocean-up-table* 7 #t) + (ocean-mid-add-upload-table arg0 arg1 (+ arg2 1) *ocean-left-table* 7 #t)) (else - (let ((s3-2 (ocean-mid-mask-ptrs-bit? (+ arg1 -1) arg2)) - (v1-7 (ocean-mid-mask-ptrs-bit? arg1 (+ arg2 -1))) - ) - (cond - ((and s3-2 v1-7) - ) - (s3-2 - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-left-table* 7 #t) - ) - (v1-7 - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-up-table* 7 #t) - ) - (else - (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-up-left-table* 10 #f) - ) - ) - ) - ) - ) - ) - (s3-0 - (ocean-mid-add-upload-table arg0 (+ arg1 1) arg2 *ocean-up-table* 7 #t) - ) - ) - ) - (none) - ) + (let ((s3-2 (ocean-mid-mask-ptrs-bit? (+ arg1 -1) arg2)) + (v1-7 (ocean-mid-mask-ptrs-bit? arg1 (+ arg2 -1)))) + (cond + ((and s3-2 v1-7)) + (s3-2 (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-left-table* 7 #t)) + (v1-7 (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-up-table* 7 #t)) + (else (ocean-mid-add-upload-table arg0 arg1 arg2 *ocean-up-left-table* 10 #f))))))) + (s3-0 (ocean-mid-add-upload-table arg0 (+ arg1 1) arg2 *ocean-up-table* 7 #t)))) + (none)) ;; definition for function ocean-seams-add-constants ;; INFO: Return type mismatch pointer vs none. (defun ocean-seams-add-constants ((arg0 dma-buffer)) (let* ((a2-0 4) (v1-0 arg0) - (a1-0 (the-as object (-> v1-0 base))) - ) + (a1-0 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-0)) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a1-0) vif1) - (new 'static 'vif-tag :imm #x2fd :cmd (vif-cmd unpack-v4-32) :num a2-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16)) - ) + (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag :imm #x2fd :cmd (vif-cmd unpack-v4-32) :num a2-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))) (let ((v1-1 (-> arg0 base))) (set-vector! (the-as vector (&+ v1-1 0)) 0.0 0.0 0.0 1.0) (set-vector! (the-as vector (&+ v1-1 16)) 393216.0 0.0 0.0 1.0) (set-vector! (the-as vector (&+ v1-1 32)) 0.0 0.0 393216.0 1.0) - (set-vector! (the-as vector (&+ v1-1 48)) 393216.0 0.0 393216.0 1.0) - ) + (set-vector! (the-as vector (&+ v1-1 48)) 393216.0 0.0 393216.0 1.0)) (&+! (-> arg0 base) 64) - (none) - ) + (none)) (defun sphere-cull-for-ocean ((arg0 vector)) "NOTE: added in PC port" - (local-vars (v1-0 uint128) (v1-1 uint128) (v1-2 uint128)) (rlet ((acc :class vf) (vf0 :class vf) @@ -1023,29 +740,24 @@ (vf17 :class vf) (vf18 :class vf) (vf19 :class vf) - (vf9 :class vf) - ) - (init-vf0-vector) - (let ((v1-5 *math-camera*)) - ;; note: these are for sphere cull. - (.lvf vf16 (&-> v1-5 plane 0 quad)) - (.lvf vf17 (&-> v1-5 plane 1 quad)) - (.lvf vf18 (&-> v1-5 plane 2 quad)) - (.lvf vf19 (&-> v1-5 plane 3 quad)) - ) - - (.lvf vf10 (&-> arg0 quad)) - (.mul.x.vf acc vf16 vf10) - (.add.mul.y.vf acc vf17 vf10 acc) - (.add.mul.z.vf acc vf18 vf10 acc) - (.sub.mul.w.vf vf9 vf19 vf0 acc) - (.add.w.vf vf9 vf9 vf10) - (.mov v1-0 vf9) - (.pcgtw v1-1 0 v1-0) - (.ppach v1-2 (the-as uint128 0) v1-1) - (zero? (the-as int v1-2)) - ) - ) + (vf9 :class vf)) + (init-vf0-vector) + (let ((v1-5 *math-camera*)) + ;; note: these are for sphere cull. + (.lvf vf16 (&-> v1-5 plane 0 quad)) + (.lvf vf17 (&-> v1-5 plane 1 quad)) + (.lvf vf18 (&-> v1-5 plane 2 quad)) + (.lvf vf19 (&-> v1-5 plane 3 quad))) + (.lvf vf10 (&-> arg0 quad)) + (.mul.x.vf acc vf16 vf10) + (.add.mul.y.vf acc vf17 vf10 acc) + (.add.mul.z.vf acc vf18 vf10 acc) + (.sub.mul.w.vf vf9 vf19 vf0 acc) + (.add.w.vf vf9 vf9 vf10) + (.mov v1-0 vf9) + (.pcgtw v1-1 0 v1-0) + (.ppach v1-2 (the-as uint128 0) v1-1) + (zero? (the-as int v1-2)))) ;; definition for function draw-ocean-mid-seams ;; INFO: Return type mismatch symbol vs none. @@ -1060,41 +772,24 @@ (set! (-> sv-36 y) (-> *ocean-map* start-corner y)) (set! (-> sv-36 w) 278045.7) (let ((s5-0 sv-34) - (s4-0 sv-35) - ) + (s4-0 sv-35)) (while (>= s4-0 s5-0) (let ((s3-0 sv-32) - (s2-0 sv-33) - ) + (s2-0 sv-33)) (while (>= s2-0 s3-0) (set! (-> sv-36 x) (+ 196608.0 (* 393216.0 (the float s3-0)) (-> *ocean-map* start-corner x))) (set! (-> sv-36 z) (+ 196608.0 (* 393216.0 (the float s5-0)) (-> *ocean-map* start-corner z))) (when (sphere-cull-for-ocean sv-36) (cond - ((= s5-0 sv-34) - (ocean-mid-add-upload-top arg0 s5-0 s3-0) - ) - ((= s5-0 sv-35) - (ocean-mid-add-upload-bottom arg0 s5-0 s3-0) - ) - (else - (ocean-mid-add-upload-middle arg0 s5-0 s3-0) - ) - ) - ) - (+! s3-0 1) - ) - ) - (+! s5-0 1) - ) - ) + ((= s5-0 sv-34) (ocean-mid-add-upload-top arg0 s5-0 s3-0)) + ((= s5-0 sv-35) (ocean-mid-add-upload-bottom arg0 s5-0 s3-0)) + (else (ocean-mid-add-upload-middle arg0 s5-0 s3-0)))) + (+! s3-0 1))) + (+! s5-0 1))) (dotimes (v1-26 36) (if (and (-> *ocean-work* mid-mask-ptrs v1-26) (nonzero? (-> *ocean-work* mid-camera-masks v1-26))) - (logior! (-> *ocean-work* mid-mask-ptrs v1-26 0) (-> *ocean-work* mid-camera-masks v1-26)) - ) - ) - (none) - ) + (logior! (-> *ocean-work* mid-mask-ptrs v1-26 0) (-> *ocean-work* mid-camera-masks v1-26)))) + (none)) ;; ADDED for PC Port (defun debug-draw-ocean-tile ((y int) (x int) (color0 rgba) (color1 rgba) (masks int)) @@ -1107,43 +802,25 @@ (p2s (vector-copy! (new-stack-vector0) ps)) (p3 (vector-copy! (new-stack-vector0) ps)) (x0 (* 3145728.0 (the float x))) - (y0 (* 3145728.0 (the float y))) - - ) + (y0 (* 3145728.0 (the float y)))) (+! (-> p0 x) x0) (+! (-> p0 z) y0) - (+! (-> p1 x) (+ x0 3145728.0)) (+! (-> p1 z) y0) - (+! (-> p2 x) x0) (+! (-> p2 z) (+ y0 3145728.0)) - (+! (-> p1s x) (+ x0 314572.0)) (+! (-> p1s z) y0) - (+! (-> p2s x) x0) (+! (-> p2s z) (+ y0 314572.0)) - (+! (-> p3 x) (+ x0 3145728.0)) (+! (-> p3 z) (+ y0 3145728.0)) - (add-debug-flat-triangle #t (bucket-id debug-no-zbuf) p0 p1s p2s color0) ;; (add-debug-flat-triangle #t (bucket-id debug-no-zbuf) p3 p1 p2 color0) (add-debug-outline-triangle #t (bucket-id debug-no-zbuf) p0 p1 p2 color1) (add-debug-outline-triangle #t (bucket-id debug-no-zbuf) p3 p1 p2 color1) (format (clear *temp-string*) "o: ~d ~d ~d ~b" x y (+ (* 6 y) x) masks) - - (add-debug-text-3d - #t - (bucket-id debug-no-zbuf) - *temp-string* - p0 - (font-color red) - (the vector2h #f) - ) - ) - ) + (add-debug-text-3d #t (bucket-id debug-no-zbuf) *temp-string* p0 (font-color red) (the vector2h #f)))) (defun draw-ocean-mid ((arg0 dma-buffer)) "Main function to draw the 'mid' ocean @@ -1157,33 +834,24 @@ (vf20 :class vf) (vf21 :class vf) (vf22 :class vf) - (vf23 :class vf) - ) - + (vf23 :class vf)) ;; first, reset all masks to 0 (dotimes (v1-0 36) (set! (-> *ocean-work* mid-mask-ptrs v1-0) (the-as (pointer int64) #f)) - (set! (-> *ocean-work* mid-camera-masks v1-0) (the-as uint 0)) - ) + (set! (-> *ocean-work* mid-camera-masks v1-0) (the-as uint 0))) ;; upload VU1 program (dma-buffer-add-vu-function arg0 ocean-mid-block 1) - ;; set up base+offset for the VU1 program uploads (let* ((v1-3 arg0) - (a0-6 (the-as object (-> v1-3 base))) - ) + (a0-6 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag :cmd (vif-cmd base))) (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x76 :cmd (vif-cmd offset))) - (set! (-> v1-3 base) (&+ (the-as pointer a0-6) 16)) - ) - + (set! (-> v1-3 base) (&+ (the-as pointer a0-6) 16))) ;; upload ocean constants (ocean-mid-add-constants arg0) - ;; run program to initialize VU1 renderer (ocean-mid-add-call arg0 0) - ;; set up VF registers for sphere culling. (let ((v1-5 *math-camera*)) (.lvf vf16 (&-> v1-5 plane 0 quad)) @@ -1193,18 +861,15 @@ (.lvf vf20 (&-> v1-5 guard-plane 0 quad)) (.lvf vf21 (&-> v1-5 guard-plane 1 quad)) (.lvf vf22 (&-> v1-5 guard-plane 2 quad)) - (.lvf vf23 (&-> v1-5 guard-plane 3 quad)) - ) + (.lvf vf23 (&-> v1-5 guard-plane 3 quad))) (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - ;; draw tiles! (let ((s5-0 (-> *math-camera* trans))) - (dotimes (s4-0 6) ;; x? + (dotimes (s4-0 6) ;; x? (dotimes (s3-0 6) ;; y? (let* ((s2-0 (+ (* 6 s4-0) s3-0)) ;; tile index (s1-0 (-> *ocean-map* ocean-spheres spheres s2-0)) ;; vis sphere of ocean - (s0-0 (-> (the-as (pointer int16) (+ (* s2-0 2) (the-as int (-> *ocean-map* ocean-mid-indices)))))) - ) + (s0-0 (-> (the-as (pointer int16) (+ (* s2-0 2) (the-as int (-> *ocean-map* ocean-mid-indices))))))) ;; (format 0 "draw ocean tile: ~d x ~d = ~d index ~d~%" s4-0 s3-0 s2-0 s0-0) ;; (debug-draw-ocean-tile s4-0 s3-0 (new 'static 'rgba :r #x80 :a #x80) (new 'static 'rgba :g #x80 :a #x80) s0-0) (when (sphere-cull-for-ocean s1-0) @@ -1223,30 +888,19 @@ (ocean-mid-add-call arg0 73) (+! (-> *terrain-stats* ocean-mid fragments) 1) (+! (-> *terrain-stats* ocean-mid tris) 256) - (+! (-> *terrain-stats* ocean-mid dverts) 288) - ) + (+! (-> *terrain-stats* ocean-mid dverts) 288)) (else - (ocean-mid-add-call arg0 46) - (+! (-> *terrain-stats* ocean-mid fragments) 1) - (+! (-> *terrain-stats* ocean-mid tris) 128) - (+! (-> *terrain-stats* ocean-mid dverts) 144) - ) - ) - ) - ) - ) - ) - ) - - + (ocean-mid-add-call arg0 46) + (+! (-> *terrain-stats* ocean-mid fragments) 1) + (+! (-> *terrain-stats* ocean-mid tris) 128) + (+! (-> *terrain-stats* ocean-mid dverts) 144)))))))) ;; for now, skip seams. ;; when it's both on and cam is low (when (not (or *ocean-near-off* (< 196608.0 (fabs (-> *math-camera* trans y))))) (let ((a1-11 48) (a2-2 0) (v1-42 48) - (a0-25 0) - ) + (a0-25 0)) (dotimes (a3-1 6) (dotimes (t0-1 6) (let ((t1-6 (&-> *ocean-work* mid-camera-masks (+ (* 6 a3-1) t0-1)))) @@ -1254,33 +908,10 @@ (dotimes (t2-3 8) (let ((t3-1 (-> (the-as (pointer uint8) (+ t2-3 (the-as int t1-6))) 0))) (when (nonzero? t3-1) - (let ((t4-2 (+ (* a3-1 8) t2-3))) - (if (< t4-2 v1-42) - (set! v1-42 t4-2) - ) - (if (< a0-25 t4-2) - (set! a0-25 t4-2) - ) - ) + (let ((t4-2 (+ (* a3-1 8) t2-3))) (if (< t4-2 v1-42) (set! v1-42 t4-2)) (if (< a0-25 t4-2) (set! a0-25 t4-2))) (dotimes (t4-3 8) (when (logtest? t3-1 (ash 1 t4-3)) - (let ((t5-9 (+ (* t0-1 8) t4-3))) - (if (< t5-9 a1-11) - (set! a1-11 t5-9) - ) - (if (< a2-2 t5-9) - (set! a2-2 t5-9) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (let ((t5-9 (+ (* t0-1 8) t4-3))) (if (< t5-9 a1-11) (set! a1-11 t5-9)) (if (< a2-2 t5-9) (set! a2-2 t5-9)))))))))))) (set! (-> *ocean-work* mid-minx) (the-as uint a1-11)) (set! (-> *ocean-work* mid-maxx) (the-as uint a2-2)) (set! (-> *ocean-work* mid-minz) (the-as uint v1-42)) @@ -1289,16 +920,7 @@ (ocean-mid-add-call-flush arg0 (the-as uint 41)) (ocean-mid-add-call-flush arg0 (the-as uint 43)) (draw-ocean-transition arg0) - (draw-ocean-mid-seams arg0) - ) - ) - ) + (draw-ocean-mid-seams arg0)))) (ocean-mid-add-call-flush arg0 (the-as uint 41)) 0 - (none) - ) - ) - - - - + (none))) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-near.gc b/goal_src/jak1/engine/gfx/ocean/ocean-near.gc index c8eeae95b0..ec9038e01b 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-near.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-near.gc @@ -1,46 +1,33 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/ocean/ocean-transition.gc") - -;; name: ocean-near.gc -;; name in dgo: ocean-near -;; dgos: GAME, ENGINE - -(define ocean-near-block (new 'static 'vu-function #|:length #x3dc :qlength #x1ee|#)) +(define ocean-near-block (new 'static 'vu-function)) ;; :length #x3dc :qlength #x1ee (defun ocean-near-add-call ((arg0 dma-buffer) (arg1 int)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm arg1)) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (none) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (none)) (defun ocean-near-add-call-flush ((arg0 dma-buffer) (arg1 int)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm arg1)) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (none) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (none)) (defun ocean-near-setup-constants ((arg0 ocean-near-constants)) (let ((v1-0 *math-camera*)) (set! (-> arg0 hmge-scale quad) (-> v1-0 hmge-scale quad)) (set! (-> arg0 inv-hmge-scale quad) (-> v1-0 inv-hmge-scale quad)) (set! (-> arg0 hvdf-offset quad) (-> v1-0 hvdf-off quad)) - (set-vector! (-> arg0 fog) (-> v1-0 pfog0) (-> v1-0 fog-min) (-> v1-0 fog-max) 3072.0) - ) + (set-vector! (-> arg0 fog) (-> v1-0 pfog0) (-> v1-0 fog-min) (-> v1-0 fog-max) 3072.0)) (set-vector! (-> arg0 constants) 0.5 0.5 0.0 0.000010172526) (set-vector! (-> arg0 constants2) 0.5 0.5 1.0 128.0) (set-vector! (-> arg0 constants3) 12288.0 0.125 2.0 0.03125) @@ -49,122 +36,104 @@ (cond ((zero? v1-5) (set! (-> arg0 drw-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1 :abe #x1) + :nreg #x3))) ((= v1-5 1) (set! (-> arg0 drw-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1) + :nreg #x3))) ((= v1-5 2) (set! (-> arg0 drw-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :fge #x1 :abe #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :fge #x1 :abe #x1) + :nreg #x3))))) (set! (-> arg0 drw-fan regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (let ((v1-14 *ocean-subdivide-draw-mode*)) (cond ((zero? v1-14) (set! (-> arg0 drw2-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-14 1) (set! (-> arg0 drw2-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-14 2) (set! (-> arg0 drw2-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))))) (set! (-> arg0 drw2-fan regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (let ((v1-23 *ocean-subdivide-draw-mode*)) (cond ((zero? v1-23) (set! (-> arg0 env-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-23 1) (set! (-> arg0 env-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-23 2) (set! (-> arg0 env-fan tag) - (new 'static 'gif-tag64 - :nloop #x4 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :abe #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x4 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :abe #x1) + :nreg #x3))))) (set! (-> arg0 env-fan regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 drw-adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) (set! (-> arg0 drw-adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) (let* ((v1-34 *ocean-base-page*) @@ -172,15 +141,13 @@ (s2-0 (* (+ v1-34 8) 32)) (s3-0 (* (+ v1-34 10) 32)) (a0-18 (-> *display* on-screen)) - (s5-0 (-> *display* frames a0-18 draw frame1 fbp)) - ) + (s5-0 (-> *display* frames a0-18 draw frame1 fbp))) (set! (-> arg0 drw-texture tex0) (new 'static 'gs-tex0 :tbw #x2 :th (log2 128) :tw (log2 128) :tbp0 s4-0)) (set! (-> arg0 drw-texture prims 1) (gs-reg64 tex0-1)) (set! (-> arg0 drw-texture tex1) (new 'static 'gs-tex1 :mxl #x1 :mmag #x1 :mmin #x5 :l #x1 :k #xeed)) (set! (-> arg0 drw-texture prims 3) (gs-reg64 tex1-1)) (set! (-> arg0 drw-texture miptbp1) - (new 'static 'gs-miptbp :tbw1 #x1 :tbw2 #x1 :tbw3 #x1 :tbp3 (+ s3-0 16) :tbp2 s3-0 :tbp1 s2-0) - ) + (new 'static 'gs-miptbp :tbw1 #x1 :tbw2 #x1 :tbw3 #x1 :tbp3 (+ s3-0 16) :tbp2 s3-0 :tbp1 s2-0)) (set! (-> arg0 drw-texture prims 5) (gs-reg64 miptbp1-1)) (set! (-> arg0 drw-texture clamp) (new 'static 'gs-clamp)) (set! (-> arg0 drw-texture clamp-reg) (gs-reg64 clamp-1)) @@ -190,96 +157,81 @@ (cond ((zero? v1-60) (set! (-> arg0 drw-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1) + :nreg #x3))) ((= v1-60 1) (set! (-> arg0 drw-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1) + :nreg #x3))) ((= v1-60 2) (set! (-> arg0 drw-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe #x1) + :nreg #x3))))) (set! (-> arg0 drw-strip regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 env-adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) (set! (-> arg0 env-adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) (let ((s3-1 (-> arg0 env-texture))) (adgif-shader<-texture-simple! s3-1 (lookup-texture-by-id (new 'static 'texture-id :index #x3 :page #x100))) - (set! (-> s3-1 alpha) (new 'static 'gs-alpha :b #x2 :c #x1 :d #x1)) - ) + (set! (-> s3-1 alpha) (new 'static 'gs-alpha :b #x2 :c #x1 :d #x1))) (let ((v1-72 *ocean-subdivide-draw-mode*)) (cond ((zero? v1-72) (set! (-> arg0 env-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-72 1) (set! (-> arg0 env-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-72 2) (set! (-> arg0 env-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1) + :nreg #x3))))) (set! (-> arg0 env-strip regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 env-color quad) (-> *time-of-day-context* current-sun env-color quad)) (set! (-> arg0 drw2-adgif tag) (new 'static 'gif-tag64 :nloop #x2 :eop #x1 :nreg #x1)) (set! (-> arg0 drw2-adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) (set! (-> arg0 drw2-tex0 dword 0) (logior (logior (logior (the-as uint #x400008000) (shr (shl s4-0 50) 50)) (shr (shl (log2 128) 60) 34)) - (shr (shl (log2 128) 60) 30) - ) - ) + (shr (shl (log2 128) 60) 30))) (set! (-> arg0 drw2-tex0 dword 1) (the-as uint 6)) (set! (-> arg0 drw2-frame dword 0) (logior (the-as uint #xffffff00080000) (shr (shl s5-0 55) 55))) (set! (-> arg0 drw2-frame dword 1) (the-as uint 76)) @@ -287,142 +239,105 @@ (cond ((zero? v1-94) (set! (-> arg0 drw2-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-94 1) (set! (-> arg0 drw2-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3))) ((= v1-94 2) (set! (-> arg0 drw2-strip tag) - (new 'static 'gif-tag64 - :nloop #x12 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :abe #x1) - :nreg #x3 - ) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :nloop #x12 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :abe #x1) + :nreg #x3))))) (set! (-> arg0 drw2-strip regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 drw3-adgif tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> arg0 drw3-adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) - (set! (-> arg0 drw3-frame dword 0) (logior #x80000 (shr (shl s5-0 55) 55))) - ) + (set! (-> arg0 drw3-frame dword 0) (logior #x80000 (shr (shl s5-0 55) 55)))) (set! (-> arg0 drw3-frame dword 1) (the-as uint 76)) (set-vector! (-> arg0 index-table 0) 81 189 0 0) (set-vector! (-> arg0 index-table 1) 54 162 0 0) (set-vector! (-> arg0 index-table 2) 27 135 0 0) (set-vector! (-> arg0 index-table 3) 0 108 0 0) - (none) - ) + (none)) (defun ocean-near-add-constants ((arg0 dma-buffer)) (let* ((a1-0 36) (v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x3b7 :cmd (vif-cmd unpack-v4-32) :num a1-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x3b7 :cmd (vif-cmd unpack-v4-32) :num a1-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) (ocean-near-setup-constants (the-as ocean-near-constants (-> arg0 base))) (&+! (-> arg0 base) 576) - (none) - ) + (none)) (defun ocean-near-add-heights ((arg0 dma-buffer)) (let ((v1-0 128) - (a1-0 (the-as object *ocean-heights*)) - ) + (a1-0 (the-as object *ocean-heights*))) (let* ((a2-0 arg0) - (a3-0 (the-as object (-> a2-0 base))) - ) - (set! (-> (the-as dma-packet a3-0) dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int a1-0) :qwc v1-0) - ) + (a3-0 (the-as object (-> a2-0 base)))) + (set! (-> (the-as dma-packet a3-0) dma) (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int a1-0) :qwc v1-0)) (set! (-> (the-as dma-packet a3-0) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a3-0) vif1) - (new 'static 'vif-tag :imm #x20 :cmd (vif-cmd unpack-v4-32) :num v1-0) - ) - (set! (-> a2-0 base) (&+ (the-as pointer a3-0) 16)) - ) + (set! (-> (the-as dma-packet a3-0) vif1) (new 'static 'vif-tag :imm #x20 :cmd (vif-cmd unpack-v4-32) :num v1-0)) + (set! (-> a2-0 base) (&+ (the-as pointer a3-0) 16))) (let ((a2-1 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-packet a2-1) dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (+ (the-as int a1-0) 2048) :qwc v1-0) - ) + (new 'static 'dma-tag :id (dma-tag-id ref) :addr (+ (the-as int a1-0) 2048) :qwc v1-0)) (set! (-> (the-as dma-packet a2-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a2-1) vif1) - (new 'static 'vif-tag :imm #xa0 :cmd (vif-cmd unpack-v4-32) :num v1-0) - ) - (set! (-> arg0 base) (&+ (the-as pointer a2-1) 16)) - ) - ) - (none) - ) + (set! (-> (the-as dma-packet a2-1) vif1) (new 'static 'vif-tag :imm #xa0 :cmd (vif-cmd unpack-v4-32) :num v1-0)) + (set! (-> arg0 base) (&+ (the-as pointer a2-1) 16)))) + (none)) (defun ocean-near-add-matrices ((arg0 dma-buffer) (arg1 vector)) (let ((s5-0 (new-stack-vector0))) (-> *math-camera* camera-rot) (let* ((a2-0 8) (v1-2 arg0) - (a0-1 (the-as object (-> v1-2 base))) - ) + (a0-1 (the-as object (-> v1-2 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd unpack-v4-32) :num a2-0) - ) - (set! (-> v1-2 base) (the-as pointer (&+ (the-as vector a0-1) 16))) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd unpack-v4-32) :num a2-0)) + (set! (-> v1-2 base) (the-as pointer (&+ (the-as vector a0-1) 16)))) (let ((s4-0 (the-as object (-> arg0 base)))) (let* ((v1-3 (the-as matrix s4-0)) (t0-2 (-> *math-camera* camera-rot)) (a0-4 (-> t0-2 vector 0 quad)) (a2-4 (-> t0-2 vector 1 quad)) (a3-4 (-> t0-2 vector 2 quad)) - (t0-3 (-> t0-2 vector 3 quad)) - ) + (t0-3 (-> t0-2 vector 3 quad))) (set! (-> v1-3 vector 0 quad) a0-4) (set! (-> v1-3 vector 1 quad) a2-4) (set! (-> v1-3 vector 2 quad) a3-4) - (set! (-> v1-3 vector 3 quad) t0-3) - ) + (set! (-> v1-3 vector 3 quad) t0-3)) (let ((s3-0 (the-as object (&+ (the-as pointer s4-0) 48)))) (vector-matrix*! s5-0 arg1 (-> *math-camera* camera-rot)) (set! (-> (the-as vector s3-0) x) (-> s5-0 x)) (set! (-> (the-as vector s3-0) y) (-> s5-0 y)) - (set! (-> (the-as vector s3-0) z) (-> s5-0 z)) - ) + (set! (-> (the-as vector s3-0) z) (-> s5-0 z))) (let ((a0-6 (&+ (-> arg0 base) 64))) - (ocean-matrix*! (the-as matrix a0-6) (the-as matrix s4-0) (-> *math-camera* perspective)) - ) - ) - ) + (ocean-matrix*! (the-as matrix a0-6) (the-as matrix s4-0) (-> *math-camera* perspective))))) (&+! (-> arg0 base) 128) - (none) - ) + (none)) (defun ocean-near-add-upload ((arg0 dma-buffer) (arg1 uint) (arg2 uint)) (local-vars @@ -441,8 +356,7 @@ (a2-30 uint128) (a2-31 uint128) (a3-27 uint128) - (f31-0 none) - ) + (f31-0 none)) (rlet ((acc :class vf) (vf1 :class vf) (vf10 :class vf) @@ -455,31 +369,23 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (let ((s2-0 (-> *ocean-work* mid-minx)) - (s3-0 (-> *ocean-work* mid-minz)) - ) + (s3-0 (-> *ocean-work* mid-minz))) (let ((a1-1 (new-stack-vector0))) (let ((v1-3 (-> *ocean-map* start-corner))) (set! (-> a1-1 x) (+ (-> v1-3 x) (* 98304.0 (the float arg2)))) (set! (-> a1-1 y) (-> v1-3 y)) - (set! (-> a1-1 z) (+ (-> v1-3 z) (* 98304.0 (the float arg1)))) - ) + (set! (-> a1-1 z) (+ (-> v1-3 z) (* 98304.0 (the float arg1))))) (set! (-> a1-1 w) 1.0) - (ocean-near-add-matrices arg0 a1-1) - ) + (ocean-near-add-matrices arg0 a1-1)) (let* ((a1-2 8) (v1-5 arg0) - (a0-2 (the-as object (-> v1-5 base))) - ) + (a0-2 (the-as object (-> v1-5 base)))) (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-2)) (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-2) vif1) - (new 'static 'vif-tag :imm #x8008 :cmd (vif-cmd unpack-v4-32) :num a1-2) - ) - (set! (-> v1-5 base) (&+ (the-as pointer a0-2) 16)) - ) + (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x8008 :cmd (vif-cmd unpack-v4-32) :num a1-2)) + (set! (-> v1-5 base) (&+ (the-as pointer a0-2) 16))) (let* ((v1-6 (-> arg0 base)) (a0-5 (- arg2 (* s2-0 4))) (a1-7 (- arg1 (* s3-0 4))) @@ -489,78 +395,51 @@ (a1-8 (logand a1-7 3)) (a2-9 (-> (the-as (pointer int16) (+ (* (+ (* a3-2 4) a2-5) 2) (the-as uint *ocean-work*))) 1550)) (a3-8 (-> *ocean-map* ocean-near-indices data a2-9)) - (a0-12 - (-> *ocean-map* - ocean-mid-masks - data - (-> (the-as (pointer int16) (+ (* (+ (* a1-8 4) a0-6) 2) (the-as uint a3-8)))) - ) - ) - ) - (set-vector! - (the-as vector4w (&+ v1-6 0)) - (the-as int (-> a0-12 mask 0)) - (the-as int (-> a0-12 mask 1)) - (the-as int (-> a0-12 mask 2)) - (the-as int (-> a0-12 mask 3)) - ) - (set-vector! - (the-as vector4w (&+ v1-6 16)) - (the-as int (-> a0-12 mask 4)) - (the-as int (-> a0-12 mask 5)) - (the-as int (-> a0-12 mask 6)) - (the-as int (-> a0-12 mask 7)) - ) - ) - ) + (a0-12 (-> *ocean-map* ocean-mid-masks data (-> (the-as (pointer int16) (+ (* (+ (* a1-8 4) a0-6) 2) (the-as uint a3-8))))))) + (set-vector! (the-as vector4w (&+ v1-6 0)) + (the-as int (-> a0-12 mask 0)) + (the-as int (-> a0-12 mask 1)) + (the-as int (-> a0-12 mask 2)) + (the-as int (-> a0-12 mask 3))) + (set-vector! (the-as vector4w (&+ v1-6 16)) + (the-as int (-> a0-12 mask 4)) + (the-as int (-> a0-12 mask 5)) + (the-as int (-> a0-12 mask 6)) + (the-as int (-> a0-12 mask 7))))) (&+! (-> arg0 base) 32) (let ((a0-14 (/ (the-as int arg2) 4)) (v1-10 (/ (the-as int arg1) 4)) (a2-18 (logand arg2 3)) - (a3-9 (logand arg1 3)) - ) + (a3-9 (logand arg1 3))) (let ((t0-0 (-> arg0 base)) (a1-15 (logand (+ arg2 1) 3)) - (t1-1 (logand (+ arg1 1) 3)) - ) - (set-vector! - (the-as vector4w (&+ t0-0 0)) - (the-as int (+ (* a3-9 64) (* a2-18 2))) - (the-as int (+ (* a3-9 64) (* a1-15 2))) - (the-as int (+ (* t1-1 64) (* a2-18 2))) - (the-as int (+ (* t1-1 64) (* a1-15 2))) - ) - ) + (t1-1 (logand (+ arg1 1) 3))) + (set-vector! (the-as vector4w (&+ t0-0 0)) + (the-as int (+ (* a3-9 64) (* a2-18 2))) + (the-as int (+ (* a3-9 64) (* a1-15 2))) + (the-as int (+ (* t1-1 64) (* a2-18 2))) + (the-as int (+ (* t1-1 64) (* a1-15 2))))) (&+! (-> arg0 base) 16) - (set-vector! - (the-as vector (&+ (-> arg0 base) 0)) - (* 0.25 (the float a2-18)) - (* 0.25 (the float a3-9)) - 1.0 - 0.0 - ) + (set-vector! (the-as vector (&+ (-> arg0 base) 0)) (* 0.25 (the float a2-18)) (* 0.25 (the float a3-9)) 1.0 0.0) (&+! (-> arg0 base) 16) (let ((a1-24 (the-as object (-> arg0 base)))) (let ((a2-19 (+ (* 5 (the-as int a3-9)) a2-18))) (.lvf vf5 (&-> (&-> *ocean-trans-corner-table* 0 quad a2-19) 0)) (.lvf vf6 (&-> (&-> *ocean-trans-corner-table* 0 quad (+ a2-19 1)) 0)) (.lvf vf7 (&-> (&-> *ocean-trans-corner-table* 0 quad (+ a2-19 5)) 0)) - (.lvf vf8 (&-> (&-> *ocean-trans-corner-table* 0 quad (+ a2-19 6)) 0)) - ) + (.lvf vf8 (&-> (&-> *ocean-trans-corner-table* 0 quad (+ a2-19 6)) 0))) (.mov a2-23 vf8) (let ((a2-29 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ (* 52 v1-10) a0-14)))) (a3-26 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ a0-14 1 (* 52 v1-10))))) (t0-15 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ (* 52 (+ v1-10 1)) a0-14)))) - (v1-16 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ a0-14 1 (* 52 (+ v1-10 1)))))) - ) + (v1-16 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ a0-14 1 (* 52 (+ v1-10 1))))))) (.pextlb a0-18 0 a2-29) (.mov r0-0 f31-0) (.pextlb a2-30 0 a3-26) (.mov r0-1 f31-0) (.pextlb a3-27 0 t0-15) (.mov r0-2 f31-0) - (.pextlb v1-17 0 v1-16) - ) + (.pextlb v1-17 0 v1-16)) (.mov r0-3 f31-0) (.pextlh a0-19 0 a0-18) (.mov r0-4 f31-0) @@ -613,110 +492,78 @@ (.add.mul.w.vf vf12 vf4 vf8 acc) (.svf (&-> (the-as (inline-array vector) a1-24) 2 quad) vf11) (nop!) - (.svf (&-> (the-as (inline-array vector) a1-24) 3 quad) vf12) - ) - ) + (.svf (&-> (the-as (inline-array vector) a1-24) 3 quad) vf12))) (.mov v1-19 vf12) (&+! (-> arg0 base) 64) - (none) - ) - ) + (none))) (defun draw-ocean-near ((arg0 dma-buffer)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ (the-as dma-packet a0-1) 16))) - ) + (set! (-> v1-0 base) (the-as pointer (&+ (the-as dma-packet a0-1) 16)))) (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) + (a0-3 (the-as object (-> v1-1 base)))) (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-3) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-1 base) (the-as pointer (the-as dma-packet (&+ (the-as pointer a0-3) 16)))) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-1 base) (the-as pointer (the-as dma-packet (&+ (the-as pointer a0-3) 16))))) (let* ((v1-2 arg0) - (a0-5 (the-as object (-> v1-2 base))) - ) + (a0-5 (the-as object (-> v1-2 base)))) (set! (-> (the-as (pointer gs-test) a0-5) 0) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal)) - ) + (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal))) (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (the-as pointer (the-as dma-packet (&+ (the-as dma-packet a0-5) 16)))) - ) + (set! (-> v1-2 base) (the-as pointer (the-as dma-packet (&+ (the-as dma-packet a0-5) 16))))) (dma-buffer-add-vu-function arg0 ocean-near-block 1) (let* ((v1-3 arg0) - (a0-8 (the-as object (-> v1-3 base))) - ) + (a0-8 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a0-8) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-8) vif0) (new 'static 'vif-tag :cmd (vif-cmd base))) (set! (-> (the-as dma-packet a0-8) vif1) (new 'static 'vif-tag :imm #x10 :cmd (vif-cmd offset))) - (set! (-> v1-3 base) (the-as pointer (the-as dma-packet (&+ (the-as dma-packet a0-8) 16)))) - ) + (set! (-> v1-3 base) (the-as pointer (the-as dma-packet (&+ (the-as dma-packet a0-8) 16))))) (ocean-near-add-constants arg0) (ocean-near-add-heights arg0) (ocean-near-add-call arg0 0) (let ((s5-0 (-> *ocean-work* near-minx)) (s4-0 (-> *ocean-work* near-maxx)) (s3-0 (-> *ocean-work* near-minz)) - (s2-0 (-> *ocean-work* near-maxz)) - ) + (s2-0 (-> *ocean-work* near-maxz))) (when (and (< s5-0 s4-0) (< s3-0 s2-0)) (while (>= s2-0 s3-0) (let ((s1-0 s5-0) - (s0-0 s4-0) - ) + (s0-0 s4-0)) (while (>= s0-0 s1-0) (when (ocean-trans-camera-masks-bit? s3-0 s1-0) (let* ((a1-13 (- (shr s1-0 2) (-> *ocean-work* mid-minx))) (a2-1 (- (shr s3-0 2) (-> *ocean-work* mid-minz))) (v1-13 (logand s1-0 3)) (a0-19 (logand s3-0 3)) - (a1-17 (-> (the-as (pointer int16) (+ (* (+ (* a2-1 4) a1-13) 2) (the-as uint *ocean-work*))) 1550)) - ) + (a1-17 (-> (the-as (pointer int16) (+ (* (+ (* a2-1 4) a1-13) 2) (the-as uint *ocean-work*))) 1550))) (when (>= a1-17 0) (let ((a1-19 (-> *ocean-map* ocean-near-indices data a1-17))) (when (>= (-> (the-as (pointer int16) (+ (* (+ (* a0-19 4) v1-13) 2) (the-as uint a1-19)))) 0) (ocean-near-add-upload arg0 s3-0 s1-0) - (ocean-near-add-call arg0 39) - ) - ) - ) - ) - ) - (+! s1-0 1) - ) - ) - (+! s3-0 1) - ) - ) - ) + (ocean-near-add-call arg0 39)))))) + (+! s1-0 1))) + (+! s3-0 1)))) 0 - (none) - ) - - - - + (none)) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-tables.gc b/goal_src/jak1/engine/gfx/ocean/ocean-tables.gc index 22cd9fba32..a9b5fb02d1 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-tables.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-tables.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/ocean/ocean-h.gc") (require "engine/math/vector-h.gc") (require "engine/math/math.gc") -;; name: ocean-tables.gc -;; name in dgo: ocean-tables -;; dgos: GAME, ENGINE - ;; These tables contain information for particular oceans. ;; All of the information is contained in *ocean-map-* ;; where is one of @@ -23,12315 +18,11249 @@ ;; DECOMP BEGINS (define *ocean-spheres-village1* - (new 'static 'ocean-spheres - :spheres - (new 'static 'inline-array sphere 36 - (new 'static 'sphere :x -7864320.0 :z -7864320.0 :w 2224365.5) - (new 'static 'sphere :x -4718592.0 :z -7864320.0 :w 2224365.5) - (new 'static 'sphere :x -1572864.0 :z -7864320.0 :w 2224365.5) - (new 'static 'sphere :x 1572864.0 :z -7864320.0 :w 2224365.5) - (new 'static 'sphere :x 4718592.0 :z -7864320.0 :w 2224365.5) - (new 'static 'sphere :x 7864320.0 :z -7864320.0 :w 2224365.5) - (new 'static 'sphere :x -7864320.0 :z -4718592.0 :w 2224365.5) - (new 'static 'sphere :x -4718592.0 :z -4718592.0 :w 2224365.5) - (new 'static 'sphere :x -1572864.0 :z -4718592.0 :w 2224365.5) - (new 'static 'sphere :x 1572864.0 :z -4718592.0 :w 2224365.5) - (new 'static 'sphere :x 4718592.0 :z -4718592.0 :w 2224365.5) - (new 'static 'sphere :x 7864320.0 :z -4718592.0 :w 2224365.5) - (new 'static 'sphere :x -7864320.0 :z -1572864.0 :w 2224365.5) - (new 'static 'sphere :x -4718592.0 :z -1572864.0 :w 2224365.5) - (new 'static 'sphere :x -1572864.0 :z -1572864.0 :w 2224365.5) - (new 'static 'sphere :x 1572864.0 :z -1572864.0 :w 2224365.5) - (new 'static 'sphere :x 4718592.0 :z -1572864.0 :w 2224365.5) - (new 'static 'sphere :x 7864320.0 :z -1572864.0 :w 2224365.5) - (new 'static 'sphere :x -7864320.0 :z 1572864.0 :w 2224365.5) - (new 'static 'sphere :x -4718592.0 :z 1572864.0 :w 2224365.5) - (new 'static 'sphere :x -1572864.0 :z 1572864.0 :w 2224365.5) - (new 'static 'sphere :x 1572864.0 :z 1572864.0 :w 2224365.5) - (new 'static 'sphere :x 4718592.0 :z 1572864.0 :w 2224365.5) - (new 'static 'sphere :x 7864320.0 :z 1572864.0 :w 2224365.5) - (new 'static 'sphere :x -7864320.0 :z 4718592.0 :w 2224365.5) - (new 'static 'sphere :x -4718592.0 :z 4718592.0 :w 2224365.5) - (new 'static 'sphere :x -1572864.0 :z 4718592.0 :w 2224365.5) - (new 'static 'sphere :x 1572864.0 :z 4718592.0 :w 2224365.5) - (new 'static 'sphere :x 4718592.0 :z 4718592.0 :w 2224365.5) - (new 'static 'sphere :x 7864320.0 :z 4718592.0 :w 2224365.5) - (new 'static 'sphere :x -7864320.0 :z 7864320.0 :w 2224365.5) - (new 'static 'sphere :x -4718592.0 :z 7864320.0 :w 2224365.5) - (new 'static 'sphere :x -1572864.0 :z 7864320.0 :w 2224365.5) - (new 'static 'sphere :x 1572864.0 :z 7864320.0 :w 2224365.5) - (new 'static 'sphere :x 4718592.0 :z 7864320.0 :w 2224365.5) - (new 'static 'sphere :x 7864320.0 :z 7864320.0 :w 2224365.5) - ) - ) - ) + (new 'static + 'ocean-spheres + :spheres + (new 'static + 'inline-array + sphere + 36 + (new 'static 'sphere :x -7864320.0 :z -7864320.0 :w 2224365.5) + (new 'static 'sphere :x -4718592.0 :z -7864320.0 :w 2224365.5) + (new 'static 'sphere :x -1572864.0 :z -7864320.0 :w 2224365.5) + (new 'static 'sphere :x 1572864.0 :z -7864320.0 :w 2224365.5) + (new 'static 'sphere :x 4718592.0 :z -7864320.0 :w 2224365.5) + (new 'static 'sphere :x 7864320.0 :z -7864320.0 :w 2224365.5) + (new 'static 'sphere :x -7864320.0 :z -4718592.0 :w 2224365.5) + (new 'static 'sphere :x -4718592.0 :z -4718592.0 :w 2224365.5) + (new 'static 'sphere :x -1572864.0 :z -4718592.0 :w 2224365.5) + (new 'static 'sphere :x 1572864.0 :z -4718592.0 :w 2224365.5) + (new 'static 'sphere :x 4718592.0 :z -4718592.0 :w 2224365.5) + (new 'static 'sphere :x 7864320.0 :z -4718592.0 :w 2224365.5) + (new 'static 'sphere :x -7864320.0 :z -1572864.0 :w 2224365.5) + (new 'static 'sphere :x -4718592.0 :z -1572864.0 :w 2224365.5) + (new 'static 'sphere :x -1572864.0 :z -1572864.0 :w 2224365.5) + (new 'static 'sphere :x 1572864.0 :z -1572864.0 :w 2224365.5) + (new 'static 'sphere :x 4718592.0 :z -1572864.0 :w 2224365.5) + (new 'static 'sphere :x 7864320.0 :z -1572864.0 :w 2224365.5) + (new 'static 'sphere :x -7864320.0 :z 1572864.0 :w 2224365.5) + (new 'static 'sphere :x -4718592.0 :z 1572864.0 :w 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 1572864.0 :w 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 1572864.0 :w 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 1572864.0 :w 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 1572864.0 :w 2224365.5) + (new 'static 'sphere :x -7864320.0 :z 4718592.0 :w 2224365.5) + (new 'static 'sphere :x -4718592.0 :z 4718592.0 :w 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 4718592.0 :w 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 4718592.0 :w 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 4718592.0 :w 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 4718592.0 :w 2224365.5) + (new 'static 'sphere :x -7864320.0 :z 7864320.0 :w 2224365.5) + (new 'static 'sphere :x -4718592.0 :z 7864320.0 :w 2224365.5) + (new 'static 'sphere :x -1572864.0 :z 7864320.0 :w 2224365.5) + (new 'static 'sphere :x 1572864.0 :z 7864320.0 :w 2224365.5) + (new 'static 'sphere :x 4718592.0 :z 7864320.0 :w 2224365.5) + (new 'static 'sphere :x 7864320.0 :z 7864320.0 :w 2224365.5)))) (define *ocean-colors-village1* - (new 'static 'ocean-colors - :colors - (new 'static 'array rgba 2548 - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2b :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2b :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3f :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x3 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x8 :g #x34 :b #x45 :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x40 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x35 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x35 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x47 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x49 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x4b :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) - (new 'static 'rgba :r #xb :g #x37 :b #x48 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #xc :g #x37 :b #x48 :a #x80) - (new 'static 'rgba :r #xc :g #x38 :b #x49 :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x49 :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x2d :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2b :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x48 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4c :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x4d :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x4d :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x4a :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x4a :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4b :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x4d :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4f :a #x80) - (new 'static 'rgba :r #x14 :g #x43 :b #x50 :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x50 :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4f :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x4d :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4c :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #xd :g #x39 :b #x4d :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x4e :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4e :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x4e :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x4c :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #xb :g #x37 :b #x4a :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x4d :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4f :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4f :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4f :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x4f :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x4e :a #x80) - (new 'static 'rgba :r #xe :g #x3a :b #x4e :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x4e :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x4c :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x49 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x46 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x48 :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4e :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x54 :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x57 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x58 :a #x80) - (new 'static 'rgba :r #x1d :g #x4b :b #x56 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x55 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x55 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x56 :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x58 :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x59 :a #x80) - (new 'static 'rgba :r #x21 :g #x50 :b #x5a :a #x80) - (new 'static 'rgba :r #x21 :g #x4c :b #x5a :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x59 :a #x80) - (new 'static 'rgba :r #x1f :g #x4c :b #x58 :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x57 :a #x80) - (new 'static 'rgba :r #x1b :g #x4b :b #x56 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x54 :a #x80) - (new 'static 'rgba :r #x15 :g #x44 :b #x52 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x51 :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x4f :a #x80) - (new 'static 'rgba :r #xd :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x4c :a #x80) - (new 'static 'rgba :r #xc :g #x38 :b #x4b :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x4c :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x50 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x51 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x51 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x52 :a #x80) - (new 'static 'rgba :r #xe :g #x3a :b #x50 :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x4e :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x4 :g #x33 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x8 :g #x33 :b #x44 :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x49 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) - (new 'static 'rgba :r #x1f :g #x4c :b #x58 :a #x80) - (new 'static 'rgba :r #x23 :g #x51 :b #x5a :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x5b :a #x80) - (new 'static 'rgba :r #x23 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x5b :a #x80) - (new 'static 'rgba :r #x22 :g #x4f :b #x5b :a #x80) - (new 'static 'rgba :r #x23 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x51 :b #x5c :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x53 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x23 :g #x51 :b #x5b :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x21 :g #x4d :b #x5a :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x58 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x55 :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x52 :a #x80) - (new 'static 'rgba :r #x12 :g #x3e :b #x50 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x50 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x3c :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x53 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x53 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x53 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x50 :a #x80) - (new 'static 'rgba :r #xd :g #x39 :b #x4c :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) - (new 'static 'rgba :r #x5 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x2d :b #x3b :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4a :a #x80) - (new 'static 'rgba :r #x19 :g #x49 :b #x53 :a #x80) - (new 'static 'rgba :r #x22 :g #x4e :b #x5a :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x5b :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x5c :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x55 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x5d :a #x80) - (new 'static 'rgba :r #x22 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x21 :g #x4e :b #x5b :a #x80) - (new 'static 'rgba :r #x1e :g #x4e :b #x59 :a #x80) - (new 'static 'rgba :r #x1c :g #x4a :b #x57 :a #x80) - (new 'static 'rgba :r #x1b :g #x4c :b #x57 :a #x80) - (new 'static 'rgba :r #x19 :g #x4a :b #x56 :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x42 :b #x54 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x54 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x55 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x55 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x51 :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x4b :a #x80) - (new 'static 'rgba :r #x9 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x3f :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #x9 :g #x35 :b #x45 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x4b :a #x80) - (new 'static 'rgba :r #x1b :g #x4a :b #x54 :a #x80) - (new 'static 'rgba :r #x22 :g #x51 :b #x5a :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x25 :g #x55 :b #x5d :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x51 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x56 :b #x5f :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x54 :b #x5f :a #x80) - (new 'static 'rgba :r #x26 :g #x56 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x55 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x51 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x55 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x23 :g #x50 :b #x5d :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x5b :a #x80) - (new 'static 'rgba :r #x1c :g #x4c :b #x58 :a #x80) - (new 'static 'rgba :r #x18 :g #x49 :b #x55 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x54 :a #x80) - (new 'static 'rgba :r #x13 :g #x44 :b #x55 :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x56 :a #x80) - (new 'static 'rgba :r #x15 :g #x44 :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x4e :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x4e :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x20 :g #x50 :b #x59 :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x25 :g #x51 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x56 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x26 :g #x56 :b #x5f :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5f :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x50 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x5d :a #x80) - (new 'static 'rgba :r #x23 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x21 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x59 :a #x80) - (new 'static 'rgba :r #x17 :g #x44 :b #x55 :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x42 :b #x55 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x55 :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x56 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x56 :a #x80) - (new 'static 'rgba :r #x17 :g #x44 :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x4f :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x8 :g #x34 :b #x40 :a #x80) - (new 'static 'rgba :r #x10 :g #x3b :b #x4a :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x4f :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x54 :a #x80) - (new 'static 'rgba :r #x1d :g #x4b :b #x57 :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x5a :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x5d :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x27 :g #x53 :b #x5f :a #x80) - (new 'static 'rgba :r #x28 :g #x57 :b #x60 :a #x80) - (new 'static 'rgba :r #x27 :g #x54 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x54 :b #x5f :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x23 :g #x53 :b #x5b :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x54 :b #x5c :a #x80) - (new 'static 'rgba :r #x23 :g #x52 :b #x5b :a #x80) - (new 'static 'rgba :r #x23 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x23 :g #x51 :b #x5c :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x5b :a #x80) - (new 'static 'rgba :r #x18 :g #x48 :b #x57 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x55 :a #x80) - (new 'static 'rgba :r #x16 :g #x47 :b #x56 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x57 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x4f :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x40 :a #x80) - (new 'static 'rgba :r #x12 :g #x3d :b #x4b :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x50 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x54 :a #x80) - (new 'static 'rgba :r #x1c :g #x4b :b #x57 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x59 :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x5a :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x5b :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x5a :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x5b :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x26 :g #x56 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x56 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x53 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x23 :g #x51 :b #x5b :a #x80) - (new 'static 'rgba :r #x23 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x5b :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x22 :g #x4f :b #x5a :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x5a :a #x80) - (new 'static 'rgba :r #x22 :g #x4e :b #x5a :a #x80) - (new 'static 'rgba :r #x21 :g #x4e :b #x5a :a #x80) - (new 'static 'rgba :r #x1f :g #x4d :b #x5a :a #x80) - (new 'static 'rgba :r #x17 :g #x47 :b #x55 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x53 :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x53 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x54 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x55 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x55 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x53 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x12 :g #x3e :b #x4b :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x54 :a #x80) - (new 'static 'rgba :r #x1c :g #x49 :b #x57 :a #x80) - (new 'static 'rgba :r #x1d :g #x4b :b #x59 :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x5a :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x5a :a #x80) - (new 'static 'rgba :r #x1f :g #x4b :b #x5a :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x5b :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x5d :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x5c :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x5c :a #x80) - (new 'static 'rgba :r #x20 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x54 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x23 :g #x51 :b #x5b :a #x80) - (new 'static 'rgba :r #x23 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x22 :g #x4f :b #x5a :a #x80) - (new 'static 'rgba :r #x21 :g #x50 :b #x59 :a #x80) - (new 'static 'rgba :r #x21 :g #x4e :b #x59 :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x59 :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x59 :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x59 :a #x80) - (new 'static 'rgba :r #x21 :g #x4e :b #x59 :a #x80) - (new 'static 'rgba :r #x21 :g #x4f :b #x59 :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x58 :a #x80) - (new 'static 'rgba :r #x1d :g #x4d :b #x57 :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x54 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x51 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x50 :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x51 :a #x80) - (new 'static 'rgba :r #x11 :g #x42 :b #x52 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x53 :a #x80) - (new 'static 'rgba :r #x13 :g #x44 :b #x53 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x4f :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x4a :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x4a :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x50 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x53 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x57 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x58 :a #x80) - (new 'static 'rgba :r #x1f :g #x4f :b #x5a :a #x80) - (new 'static 'rgba :r #x1f :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x1e :g #x4d :b #x5b :a #x80) - (new 'static 'rgba :r #x1c :g #x4d :b #x5a :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x58 :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x57 :a #x80) - (new 'static 'rgba :r #x13 :g #x3f :b #x56 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x57 :a #x80) - (new 'static 'rgba :r #x1e :g #x4d :b #x5a :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x24 :g #x4f :b #x5b :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x21 :g #x4f :b #x5a :a #x80) - (new 'static 'rgba :r #x21 :g #x4e :b #x59 :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x58 :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x58 :a #x80) - (new 'static 'rgba :r #x1f :g #x4d :b #x57 :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x56 :a #x80) - (new 'static 'rgba :r #x1d :g #x4c :b #x56 :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x56 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x56 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x55 :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x56 :a #x80) - (new 'static 'rgba :r #x1a :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x51 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4f :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4f :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x50 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x50 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x51 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x50 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4f :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3d :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2f :b #x38 :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x4e :a #x80) - (new 'static 'rgba :r #x15 :g #x44 :b #x51 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x55 :a #x80) - (new 'static 'rgba :r #x19 :g #x49 :b #x57 :a #x80) - (new 'static 'rgba :r #x1a :g #x48 :b #x59 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x58 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x56 :a #x80) - (new 'static 'rgba :r #x14 :g #x44 :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x55 :a #x80) - (new 'static 'rgba :r #x13 :g #x3e :b #x54 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x58 :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x5a :a #x80) - (new 'static 'rgba :r #x1f :g #x4d :b #x59 :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x5a :a #x80) - (new 'static 'rgba :r #x23 :g #x50 :b #x5b :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x59 :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x58 :a #x80) - (new 'static 'rgba :r #x1f :g #x4e :b #x57 :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x56 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x56 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x1c :g #x48 :b #x54 :a #x80) - (new 'static 'rgba :r #x1c :g #x4a :b #x54 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x53 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x53 :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x53 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x52 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x51 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x4f :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x4d :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4f :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x4f :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x4f :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x4f :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x50 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x4f :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4c :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x49 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x41 :b #x4f :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x51 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x50 :a #x80) - (new 'static 'rgba :r #xf :g #x3a :b #x50 :a #x80) - (new 'static 'rgba :r #xf :g #x3a :b #x4f :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x55 :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x54 :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x55 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x57 :a #x80) - (new 'static 'rgba :r #x1d :g #x4c :b #x59 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x56 :a #x80) - (new 'static 'rgba :r #x1a :g #x48 :b #x56 :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x57 :a #x80) - (new 'static 'rgba :r #x1e :g #x4d :b #x58 :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x57 :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x55 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x1c :g #x4a :b #x54 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x53 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x52 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x51 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x51 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x51 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x50 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x50 :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x4f :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4d :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4d :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x4d :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x4e :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4d :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) - (new 'static 'rgba :r #xa :g #x36 :b #x47 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x48 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x4a :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x4c :a #x80) - (new 'static 'rgba :r #xb :g #x3b :b #x4c :a #x80) - (new 'static 'rgba :r #xd :g #x39 :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x54 :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x55 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x57 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x57 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x54 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x52 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x54 :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x56 :a #x80) - (new 'static 'rgba :r #x1c :g #x49 :b #x55 :a #x80) - (new 'static 'rgba :r #x1c :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x53 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x52 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x50 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x4f :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x4e :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x4e :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x4d :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x4e :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x4d :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x4d :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x4d :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4c :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x4c :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4c :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x4c :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x4c :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x4c :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x4d :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4d :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4c :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x47 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x45 :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x4a :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x4d :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x4f :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x53 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x54 :a #x80) - (new 'static 'rgba :r #x14 :g #x43 :b #x55 :a #x80) - (new 'static 'rgba :r #x17 :g #x48 :b #x57 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x57 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x51 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x51 :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x51 :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x53 :a #x80) - (new 'static 'rgba :r #x1c :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x1a :g #x48 :b #x52 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x51 :a #x80) - (new 'static 'rgba :r #x17 :g #x44 :b #x4f :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x4e :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x4d :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4c :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x13 :g #x3f :b #x4a :a #x80) - (new 'static 'rgba :r #x13 :g #x3f :b #x4a :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4b :a #x80) - (new 'static 'rgba :r #x13 :g #x3f :b #x4a :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x4b :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x4b :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x4a :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4b :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x4b :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x4b :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x49 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x47 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x49 :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) - (new 'static 'rgba :r #xd :g #x39 :b #x4e :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x50 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x12 :g #x3e :b #x54 :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x56 :a #x80) - (new 'static 'rgba :r #x18 :g #x47 :b #x58 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x58 :a #x80) - (new 'static 'rgba :r #x17 :g #x46 :b #x56 :a #x80) - (new 'static 'rgba :r #x12 :g #x43 :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x51 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x51 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x52 :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x54 :a #x80) - (new 'static 'rgba :r #x1c :g #x48 :b #x53 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x51 :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x4f :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4d :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4b :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x4a :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x49 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x48 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #xb :g #x37 :b #x49 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x46 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x49 :a #x80) - (new 'static 'rgba :r #xb :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x52 :a #x80) - (new 'static 'rgba :r #x12 :g #x3e :b #x55 :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x57 :a #x80) - (new 'static 'rgba :r #x18 :g #x48 :b #x58 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x59 :a #x80) - (new 'static 'rgba :r #x1c :g #x4c :b #x59 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x57 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x51 :a #x80) - (new 'static 'rgba :r #x15 :g #x44 :b #x53 :a #x80) - (new 'static 'rgba :r #x1c :g #x4a :b #x55 :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x56 :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x53 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x50 :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x4d :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x4b :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x4a :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x43 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x43 :a #x80) - (new 'static 'rgba :r #xb :g #x37 :b #x43 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x3f :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x4d :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x56 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x59 :a #x80) - (new 'static 'rgba :r #x1c :g #x4c :b #x5a :a #x80) - (new 'static 'rgba :r #x21 :g #x4f :b #x5c :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x5c :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x5a :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x56 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x53 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x52 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x17 :g #x44 :b #x53 :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x55 :a #x80) - (new 'static 'rgba :r #x21 :g #x4d :b #x55 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x52 :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x4e :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4c :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4a :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x5 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x4 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x4 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x4 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x4 :g #x33 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x34 :b #x3f :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x40 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x40 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x41 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x3e :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4f :a #x80) - (new 'static 'rgba :r #x16 :g #x47 :b #x56 :a #x80) - (new 'static 'rgba :r #x1c :g #x4a :b #x5a :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x5c :a #x80) - (new 'static 'rgba :r #x24 :g #x4f :b #x5d :a #x80) - (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x5b :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x57 :a #x80) - (new 'static 'rgba :r #x13 :g #x3f :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x52 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x52 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x53 :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x54 :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x53 :a #x80) - (new 'static 'rgba :r #x1c :g #x48 :b #x4f :a #x80) - (new 'static 'rgba :r #x18 :g #x43 :b #x4d :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4c :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x49 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x4 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x3 :g #x33 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x31 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x49 :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x50 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x57 :a #x80) - (new 'static 'rgba :r #x21 :g #x51 :b #x5d :a #x80) - (new 'static 'rgba :r #x26 :g #x53 :b #x5f :a #x80) - (new 'static 'rgba :r #x28 :g #x55 :b #x5f :a #x80) - (new 'static 'rgba :r #x27 :g #x53 :b #x5f :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x5b :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x57 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x55 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x53 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x53 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x54 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x53 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x4f :a #x80) - (new 'static 'rgba :r #x1a :g #x44 :b #x4d :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x4b :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x49 :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x5 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x4 :g #x34 :b #x40 :a #x80) - (new 'static 'rgba :r #x3 :g #x33 :b #x3e :a #x80) - (new 'static 'rgba :r #x2 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x31 :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x31 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3f :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3c :a #x80) - (new 'static 'rgba :r #x7 :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x50 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x57 :a #x80) - (new 'static 'rgba :r #x22 :g #x52 :b #x5d :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x5f :a #x80) - (new 'static 'rgba :r #x26 :g #x56 :b #x5f :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x5d :a #x80) - (new 'static 'rgba :r #x21 :g #x4f :b #x5c :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x5a :a #x80) - (new 'static 'rgba :r #x1c :g #x4a :b #x59 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x57 :a #x80) - (new 'static 'rgba :r #x18 :g #x47 :b #x56 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x56 :a #x80) - (new 'static 'rgba :r #x1b :g #x4a :b #x55 :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x55 :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x54 :a #x80) - (new 'static 'rgba :r #x20 :g #x4b :b #x51 :a #x80) - (new 'static 'rgba :r #x1d :g #x46 :b #x4d :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x4b :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x4a :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x43 :a #x80) - (new 'static 'rgba :r #x5 :g #x36 :b #x40 :a #x80) - (new 'static 'rgba :r #x4 :g #x35 :b #x3f :a #x80) - (new 'static 'rgba :r #x3 :g #x34 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x33 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x4f :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x55 :a #x80) - (new 'static 'rgba :r #x1d :g #x4c :b #x59 :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x5b :a #x80) - (new 'static 'rgba :r #x1f :g #x4c :b #x5b :a #x80) - (new 'static 'rgba :r #x1c :g #x4a :b #x59 :a #x80) - (new 'static 'rgba :r #x1a :g #x49 :b #x58 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x57 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x57 :a #x80) - (new 'static 'rgba :r #x19 :g #x4a :b #x56 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x57 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x56 :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x54 :a #x80) - (new 'static 'rgba :r #x1c :g #x49 :b #x55 :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x55 :a #x80) - (new 'static 'rgba :r #x20 :g #x4b :b #x53 :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x50 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x4e :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x4c :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x4a :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x49 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x45 :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x42 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x40 :a #x80) - (new 'static 'rgba :r #x5 :g #x34 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x40 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4d :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x50 :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x54 :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x54 :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x53 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x53 :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #x13 :g #x3f :b #x52 :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x53 :a #x80) - (new 'static 'rgba :r #x14 :g #x44 :b #x52 :a #x80) - (new 'static 'rgba :r #x14 :g #x43 :b #x51 :a #x80) - (new 'static 'rgba :r #x14 :g #x43 :b #x50 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4f :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x50 :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x51 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x54 :a #x80) - (new 'static 'rgba :r #x22 :g #x4d :b #x54 :a #x80) - (new 'static 'rgba :r #x22 :g #x4e :b #x53 :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x52 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x50 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x4e :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x8 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2b :b #x39 :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x49 :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x4c :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4d :a #x80) - (new 'static 'rgba :r #xe :g #x3a :b #x4e :a #x80) - (new 'static 'rgba :r #xd :g #x39 :b #x4e :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x4e :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x4f :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4f :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x4f :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x4d :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x4e :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x53 :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x56 :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x57 :a #x80) - (new 'static 'rgba :r #x22 :g #x4e :b #x54 :a #x80) - (new 'static 'rgba :r #x1f :g #x4c :b #x52 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x4f :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4c :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x48 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2b :b #x39 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3d :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x43 :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x49 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x49 :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) - (new 'static 'rgba :r #xb :g #x37 :b #x4c :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x4e :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x51 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x51 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x51 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x48 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x49 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x4d :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x52 :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x56 :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x57 :a #x80) - (new 'static 'rgba :r #x25 :g #x50 :b #x57 :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x55 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x51 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4d :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x45 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2f :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x41 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x7 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x4d :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x51 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x54 :a #x80) - (new 'static 'rgba :r #x14 :g #x40 :b #x54 :a #x80) - (new 'static 'rgba :r #x14 :g #x45 :b #x54 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x51 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x4e :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #xe :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x4b :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4c :a #x80) - (new 'static 'rgba :r #x19 :g #x49 :b #x4f :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x53 :a #x80) - (new 'static 'rgba :r #x25 :g #x51 :b #x56 :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x57 :a #x80) - (new 'static 'rgba :r #x22 :g #x4e :b #x56 :a #x80) - (new 'static 'rgba :r #x1c :g #x48 :b #x52 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x4e :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x48 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x5 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x49 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x48 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x45 :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x40 :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x49 :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x4c :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x50 :a #x80) - (new 'static 'rgba :r #x14 :g #x43 :b #x54 :a #x80) - (new 'static 'rgba :r #x16 :g #x46 :b #x57 :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x56 :a #x80) - (new 'static 'rgba :r #x15 :g #x46 :b #x54 :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x51 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x4e :a #x80) - (new 'static 'rgba :r #x10 :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4a :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x49 :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x4a :a #x80) - (new 'static 'rgba :r #x1a :g #x48 :b #x4a :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x4b :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x4e :a #x80) - (new 'static 'rgba :r #x26 :g #x51 :b #x53 :a #x80) - (new 'static 'rgba :r #x23 :g #x51 :b #x55 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x51 :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x4c :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x9 :g #x3a :b #x44 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x47 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x47 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x4b :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x4c :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4d :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x4c :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x3d :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x42 :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x4f :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x54 :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x59 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x59 :a #x80) - (new 'static 'rgba :r #x1a :g #x49 :b #x56 :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x4e :a #x80) - (new 'static 'rgba :r #x11 :g #x42 :b #x4a :a #x80) - (new 'static 'rgba :r #xf :g #x42 :b #x47 :a #x80) - (new 'static 'rgba :r #x10 :g #x42 :b #x45 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x44 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x1a :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x21 :g #x47 :b #x42 :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4d :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x17 :g #x46 :b #x49 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x48 :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x47 :a #x80) - (new 'static 'rgba :r #xc :g #x3d :b #x46 :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x49 :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x4a :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x4a :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x4b :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x4c :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x4e :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x4f :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x50 :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x4f :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4c :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3d :a #x80) - (new 'static 'rgba :r #x5 :g #x34 :b #x40 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x45 :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x4f :a #x80) - (new 'static 'rgba :r #x17 :g #x47 :b #x54 :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x56 :a #x80) - (new 'static 'rgba :r #x21 :g #x52 :b #x5a :a #x80) - (new 'static 'rgba :r #x21 :g #x4f :b #x58 :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x55 :a #x80) - (new 'static 'rgba :r #x18 :g #x49 :b #x4f :a #x80) - (new 'static 'rgba :r #x12 :g #x45 :b #x4b :a #x80) - (new 'static 'rgba :r #xf :g #x44 :b #x46 :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x42 :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x3e :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x3d :a #x80) - (new 'static 'rgba :r #x14 :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #x19 :g #x40 :b #x39 :a #x80) - (new 'static 'rgba :r #x1c :g #x41 :b #x38 :a #x80) - (new 'static 'rgba :r #x1f :g #x43 :b #x3b :a #x80) - (new 'static 'rgba :r #x20 :g #x45 :b #x3e :a #x80) - (new 'static 'rgba :r #x20 :g #x44 :b #x3e :a #x80) - (new 'static 'rgba :r #x1c :g #x44 :b #x40 :a #x80) - (new 'static 'rgba :r #x18 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x46 :a #x80) - (new 'static 'rgba :r #x11 :g #x42 :b #x49 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x48 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x49 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x4a :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4b :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4c :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4d :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x50 :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x52 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x50 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x4e :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x49 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x4e :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x55 :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x55 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x4f :a #x80) - (new 'static 'rgba :r #x1c :g #x48 :b #x51 :a #x80) - (new 'static 'rgba :r #x1f :g #x50 :b #x53 :a #x80) - (new 'static 'rgba :r #x1a :g #x4b :b #x4e :a #x80) - (new 'static 'rgba :r #x12 :g #x43 :b #x45 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x40 :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x3b :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x39 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x37 :a #x80) - (new 'static 'rgba :r #x14 :g #x3f :b #x35 :a #x80) - (new 'static 'rgba :r #x17 :g #x40 :b #x34 :a #x80) - (new 'static 'rgba :r #x1a :g #x41 :b #x35 :a #x80) - (new 'static 'rgba :r #x1e :g #x42 :b #x36 :a #x80) - (new 'static 'rgba :r #x1f :g #x43 :b #x35 :a #x80) - (new 'static 'rgba :r #x1d :g #x42 :b #x38 :a #x80) - (new 'static 'rgba :r #x1b :g #x41 :b #x39 :a #x80) - (new 'static 'rgba :r #x17 :g #x40 :b #x3e :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x43 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x47 :a #x80) - (new 'static 'rgba :r #x10 :g #x42 :b #x48 :a #x80) - (new 'static 'rgba :r #x10 :g #x42 :b #x49 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x49 :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x49 :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x4b :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x4c :a #x80) - (new 'static 'rgba :r #x12 :g #x43 :b #x4e :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x51 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x53 :a #x80) - (new 'static 'rgba :r #x1a :g #x48 :b #x54 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x53 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x53 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x4f :a #x80) - (new 'static 'rgba :r #xf :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #x9 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x47 :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x4b :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x4f :a #x80) - (new 'static 'rgba :r #x17 :g #x46 :b #x52 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x54 :a #x80) - (new 'static 'rgba :r #x18 :g #x43 :b #x4c :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x46 :a #x80) - (new 'static 'rgba :r #x14 :g #x44 :b #x48 :a #x80) - (new 'static 'rgba :r #x1a :g #x4b :b #x4c :a #x80) - (new 'static 'rgba :r #x1b :g #x4a :b #x4a :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x3c :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x39 :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x36 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x36 :a #x80) - (new 'static 'rgba :r #x12 :g #x3e :b #x31 :a #x80) - (new 'static 'rgba :r #x15 :g #x40 :b #x2e :a #x80) - (new 'static 'rgba :r #x18 :g #x40 :b #x2e :a #x80) - (new 'static 'rgba :r #x1b :g #x41 :b #x2f :a #x80) - (new 'static 'rgba :r #x1c :g #x42 :b #x31 :a #x80) - (new 'static 'rgba :r #x1b :g #x42 :b #x32 :a #x80) - (new 'static 'rgba :r #x19 :g #x42 :b #x34 :a #x80) - (new 'static 'rgba :r #x16 :g #x40 :b #x3b :a #x80) - (new 'static 'rgba :r #x13 :g #x3f :b #x3e :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x44 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x46 :a #x80) - (new 'static 'rgba :r #x10 :g #x42 :b #x47 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #xe :g #x41 :b #x48 :a #x80) - (new 'static 'rgba :r #xe :g #x41 :b #x49 :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x4d :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x50 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x53 :a #x80) - (new 'static 'rgba :r #x1c :g #x48 :b #x55 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x55 :a #x80) - (new 'static 'rgba :r #x1a :g #x48 :b #x54 :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x52 :a #x80) - (new 'static 'rgba :r #x13 :g #x3f :b #x50 :a #x80) - (new 'static 'rgba :r #xe :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3b :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #xc :g #x38 :b #x49 :a #x80) - (new 'static 'rgba :r #x10 :g #x41 :b #x4e :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x54 :a #x80) - (new 'static 'rgba :r #x1d :g #x4c :b #x54 :a #x80) - (new 'static 'rgba :r #x19 :g #x43 :b #x4c :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x46 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x43 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x45 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x46 :a #x80) - (new 'static 'rgba :r #x1a :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x3d :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x37 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x34 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x35 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x30 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x2c :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x2a :a #x80) - (new 'static 'rgba :r #x14 :g #x3e :b #x29 :a #x80) - (new 'static 'rgba :r #x16 :g #x3f :b #x27 :a #x80) - (new 'static 'rgba :r #x17 :g #x3f :b #x29 :a #x80) - (new 'static 'rgba :r #x16 :g #x3f :b #x2c :a #x80) - (new 'static 'rgba :r #x15 :g #x3f :b #x30 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x36 :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x40 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x43 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x45 :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x46 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x47 :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x47 :a #x80) - (new 'static 'rgba :r #xe :g #x41 :b #x48 :a #x80) - (new 'static 'rgba :r #x10 :g #x3f :b #x4a :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x4e :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x53 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x54 :a #x80) - (new 'static 'rgba :r #x17 :g #x46 :b #x54 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x52 :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x4f :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x4a :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #xe :g #x3a :b #x4b :a #x80) - (new 'static 'rgba :r #x14 :g #x43 :b #x50 :a #x80) - (new 'static 'rgba :r #x1a :g #x48 :b #x55 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x54 :a #x80) - (new 'static 'rgba :r #x1a :g #x46 :b #x4f :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x48 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x44 :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x43 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x42 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x40 :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x36 :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x33 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x31 :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x30 :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x2b :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x26 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x22 :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x1c :a #x80) - (new 'static 'rgba :r #xf :g #x3a :b #x1d :a #x80) - (new 'static 'rgba :r #x10 :g #x3b :b #x21 :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x24 :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x2b :a #x80) - (new 'static 'rgba :r #x11 :g #x3e :b #x30 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x38 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x40 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x42 :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x43 :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x44 :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x44 :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x46 :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x48 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x4f :a #x80) - (new 'static 'rgba :r #x16 :g #x46 :b #x53 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x54 :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x53 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x50 :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x4d :a #x80) - (new 'static 'rgba :r #xa :g #x36 :b #x48 :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x3f :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x31 :b #x3c :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x45 :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x4a :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x51 :a #x80) - (new 'static 'rgba :r #x1d :g #x4b :b #x56 :a #x80) - (new 'static 'rgba :r #x1f :g #x4c :b #x53 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x4e :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x48 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x47 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x44 :a #x80) - (new 'static 'rgba :r #x17 :g #x44 :b #x45 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x13 :g #x3e :b #x39 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x33 :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x2d :a #x80) - (new 'static 'rgba :r #xf :g #x3d :b #x2a :a #x80) - (new 'static 'rgba :r #xe :g #x3d :b #x2a :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x24 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x21 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x19 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x17 :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x15 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x16 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x1c :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x23 :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x2d :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x35 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x3e :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x40 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x41 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x42 :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x42 :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x44 :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x46 :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x49 :a #x80) - (new 'static 'rgba :r #x10 :g #x41 :b #x4d :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x51 :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x52 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x4f :a #x80) - (new 'static 'rgba :r #xb :g #x3b :b #x4a :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x3d :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3c :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3f :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x49 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x50 :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x55 :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x55 :a #x80) - (new 'static 'rgba :r #x1d :g #x4c :b #x51 :a #x80) - (new 'static 'rgba :r #x18 :g #x48 :b #x4b :a #x80) - (new 'static 'rgba :r #x19 :g #x4a :b #x4b :a #x80) - (new 'static 'rgba :r #x18 :g #x47 :b #x49 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x12 :g #x3f :b #x3b :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x34 :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x2e :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x29 :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x29 :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x22 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x1f :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x18 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x12 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #xe :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #xd :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x10 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x15 :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x1f :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x26 :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x2e :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x33 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x39 :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x3e :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x3f :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x3e :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x3f :a #x80) - (new 'static 'rgba :r #xe :g #x3e :b #x44 :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x47 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x4b :a #x80) - (new 'static 'rgba :r #x11 :g #x42 :b #x4f :a #x80) - (new 'static 'rgba :r #x11 :g #x3d :b #x51 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x50 :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x4c :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x46 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x4c :a #x80) - (new 'static 'rgba :r #x14 :g #x44 :b #x50 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x52 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x50 :a #x80) - (new 'static 'rgba :r #x19 :g #x4b :b #x4c :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x46 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x3e :a #x80) - (new 'static 'rgba :r #x10 :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x37 :a #x80) - (new 'static 'rgba :r #xd :g #x3b :b #x30 :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x2d :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x25 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x23 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x1e :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x19 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x14 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x12 :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #xb :a #x80) - (new 'static 'rgba :r #x4 :g #x33 :b #xe :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x17 :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x1f :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x24 :a #x80) - (new 'static 'rgba :r #xb :g #x3b :b #x2e :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x32 :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x37 :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x3b :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x3c :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x3d :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x3f :a #x80) - (new 'static 'rgba :r #xd :g #x3e :b #x41 :a #x80) - (new 'static 'rgba :r #xe :g #x42 :b #x47 :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x4a :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x4e :a #x80) - (new 'static 'rgba :r #xf :g #x3b :b #x50 :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4e :a #x80) - (new 'static 'rgba :r #xa :g #x36 :b #x49 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x4 :g #x2e :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2f :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x40 :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x4c :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x4c :a #x80) - (new 'static 'rgba :r #x13 :g #x44 :b #x4a :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x45 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x40 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x3a :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x36 :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x30 :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x2c :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x26 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x20 :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x1d :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x15 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x11 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #xf :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xc :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xc :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #xb :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x10 :a #x80) - (new 'static 'rgba :r #x5 :g #x35 :b #x19 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x1f :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x26 :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x2b :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x2f :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x36 :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x37 :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x3b :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x3b :a #x80) - (new 'static 'rgba :r #xe :g #x3c :b #x40 :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x46 :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x4a :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4e :a #x80) - (new 'static 'rgba :r #xf :g #x3c :b #x4e :a #x80) - (new 'static 'rgba :r #xb :g #x3b :b #x4b :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3f :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3f :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3d :b #x47 :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x45 :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x41 :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x3d :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x37 :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x37 :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x33 :a #x80) - (new 'static 'rgba :r #xb :g #x3c :b #x31 :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x29 :a #x80) - (new 'static 'rgba :r #x9 :g #x39 :b #x26 :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x20 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x1b :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x16 :a #x80) - (new 'static 'rgba :r #x4 :g #x34 :b #x11 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #xf :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xb :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x8 :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x9 :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #xc :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x10 :a #x80) - (new 'static 'rgba :r #x5 :g #x34 :b #x16 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x1c :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x23 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x2a :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x2e :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x33 :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x36 :a #x80) - (new 'static 'rgba :r #xc :g #x3b :b #x3b :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x40 :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x47 :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4d :a #x80) - (new 'static 'rgba :r #xd :g #x39 :b #x4c :a #x80) - (new 'static 'rgba :r #xa :g #x36 :b #x48 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x41 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x5 :g #x35 :b #x40 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x8 :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x43 :a #x80) - (new 'static 'rgba :r #x9 :g #x3c :b #x42 :a #x80) - (new 'static 'rgba :r #xa :g #x3c :b #x3d :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x3a :a #x80) - (new 'static 'rgba :r #xc :g #x39 :b #x37 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x36 :a #x80) - (new 'static 'rgba :r #xc :g #x3a :b #x33 :a #x80) - (new 'static 'rgba :r #xb :g #x3b :b #x2f :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x2b :a #x80) - (new 'static 'rgba :r #x9 :g #x38 :b #x27 :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x24 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x20 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x18 :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x16 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x11 :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xd :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x9 :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xc :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xd :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #xe :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x12 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x15 :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x1b :a #x80) - (new 'static 'rgba :r #x8 :g #x36 :b #x23 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x28 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x2f :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x37 :a #x80) - (new 'static 'rgba :r #xc :g #x3c :b #x3a :a #x80) - (new 'static 'rgba :r #xd :g #x40 :b #x43 :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x48 :a #x80) - (new 'static 'rgba :r #xf :g #x3e :b #x4b :a #x80) - (new 'static 'rgba :r #xe :g #x3b :b #x4c :a #x80) - (new 'static 'rgba :r #xb :g #x37 :b #x49 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x4 :g #x34 :b #x3f :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x3 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x4 :g #x31 :b #x3f :a #x80) - (new 'static 'rgba :r #x5 :g #x35 :b #x41 :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x41 :a #x80) - (new 'static 'rgba :r #x7 :g #x38 :b #x40 :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x3f :a #x80) - (new 'static 'rgba :r #x9 :g #x3a :b #x3d :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x39 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x38 :a #x80) - (new 'static 'rgba :r #xb :g #x38 :b #x35 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x31 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x30 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x2d :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x2c :a #x80) - (new 'static 'rgba :r #x9 :g #x35 :b #x28 :a #x80) - (new 'static 'rgba :r #x8 :g #x34 :b #x24 :a #x80) - (new 'static 'rgba :r #x7 :g #x32 :b #x22 :a #x80) - (new 'static 'rgba :r #x6 :g #x31 :b #x1a :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x16 :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x15 :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x11 :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x10 :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x12 :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x11 :a #x80) - (new 'static 'rgba :r #x4 :g #x2f :b #x11 :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x15 :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x18 :a #x80) - (new 'static 'rgba :r #x6 :g #x30 :b #x1b :a #x80) - (new 'static 'rgba :r #x8 :g #x31 :b #x20 :a #x80) - (new 'static 'rgba :r #x9 :g #x33 :b #x26 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x2e :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x37 :a #x80) - (new 'static 'rgba :r #xc :g #x3d :b #x3d :a #x80) - (new 'static 'rgba :r #xc :g #x40 :b #x45 :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x48 :a #x80) - (new 'static 'rgba :r #xd :g #x3a :b #x4a :a #x80) - (new 'static 'rgba :r #xb :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x41 :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x30 :b #x3e :a #x80) - (new 'static 'rgba :r #x5 :g #x36 :b #x3e :a #x80) - (new 'static 'rgba :r #x6 :g #x37 :b #x3d :a #x80) - (new 'static 'rgba :r #x7 :g #x38 :b #x3d :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x3d :a #x80) - (new 'static 'rgba :r #x9 :g #x3a :b #x38 :a #x80) - (new 'static 'rgba :r #xa :g #x39 :b #x39 :a #x80) - (new 'static 'rgba :r #xa :g #x38 :b #x34 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x34 :a #x80) - (new 'static 'rgba :r #x9 :g #x37 :b #x30 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x32 :a #x80) - (new 'static 'rgba :r #x9 :g #x36 :b #x2f :a #x80) - (new 'static 'rgba :r #x8 :g #x35 :b #x2e :a #x80) - (new 'static 'rgba :r #x8 :g #x34 :b #x29 :a #x80) - (new 'static 'rgba :r #x7 :g #x32 :b #x27 :a #x80) - (new 'static 'rgba :r #x6 :g #x31 :b #x23 :a #x80) - (new 'static 'rgba :r #x6 :g #x30 :b #x23 :a #x80) - (new 'static 'rgba :r #x6 :g #x30 :b #x21 :a #x80) - (new 'static 'rgba :r #x7 :g #x2f :b #x20 :a #x80) - (new 'static 'rgba :r #x6 :g #x2f :b #x1e :a #x80) - (new 'static 'rgba :r #x5 :g #x2e :b #x1b :a #x80) - (new 'static 'rgba :r #x5 :g #x2e :b #x1c :a #x80) - (new 'static 'rgba :r #x6 :g #x2e :b #x1d :a #x80) - (new 'static 'rgba :r #x6 :g #x2f :b #x1f :a #x80) - (new 'static 'rgba :r #x6 :g #x31 :b #x23 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x29 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x2c :a #x80) - (new 'static 'rgba :r #x8 :g #x37 :b #x31 :a #x80) - (new 'static 'rgba :r #x8 :g #x3a :b #x39 :a #x80) - (new 'static 'rgba :r #xa :g #x3a :b #x41 :a #x80) - (new 'static 'rgba :r #xa :g #x3c :b #x44 :a #x80) - (new 'static 'rgba :r #xb :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #xa :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x8 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x5 :g #x31 :b #x41 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3c :a #x80) - (new 'static 'rgba :r #x5 :g #x35 :b #x3d :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x3e :a #x80) - (new 'static 'rgba :r #x7 :g #x39 :b #x3e :a #x80) - (new 'static 'rgba :r #x8 :g #x3c :b #x3e :a #x80) - (new 'static 'rgba :r #x8 :g #x39 :b #x3c :a #x80) - (new 'static 'rgba :r #x8 :g #x39 :b #x3a :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x39 :a #x80) - (new 'static 'rgba :r #x8 :g #x38 :b #x39 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x38 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x37 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x34 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x35 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x34 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x33 :a #x80) - (new 'static 'rgba :r #x7 :g #x38 :b #x33 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x33 :a #x80) - (new 'static 'rgba :r #x7 :g #x36 :b #x2f :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x2d :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x2a :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x28 :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x29 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x2a :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x30 :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x34 :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x38 :a #x80) - (new 'static 'rgba :r #x5 :g #x36 :b #x3c :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x3f :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x41 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3f :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) - (new 'static 'rgba :r #x2 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2b :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x4 :g #x33 :b #x3c :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x3e :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x3e :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) - (new 'static 'rgba :r #x5 :g #x33 :b #x3c :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x3b :a #x80) - (new 'static 'rgba :r #x5 :g #x35 :b #x3b :a #x80) - (new 'static 'rgba :r #x5 :g #x36 :b #x3b :a #x80) - (new 'static 'rgba :r #x4 :g #x36 :b #x3b :a #x80) - (new 'static 'rgba :r #x5 :g #x35 :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x3d :a #x80) - (new 'static 'rgba :r #x7 :g #x35 :b #x3e :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x3e :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) - (new 'static 'rgba :r #x5 :g #x36 :b #x3b :a #x80) - (new 'static 'rgba :r #x4 :g #x36 :b #x38 :a #x80) - (new 'static 'rgba :r #x4 :g #x35 :b #x36 :a #x80) - (new 'static 'rgba :r #x4 :g #x35 :b #x35 :a #x80) - (new 'static 'rgba :r #x4 :g #x35 :b #x36 :a #x80) - (new 'static 'rgba :r #x4 :g #x35 :b #x37 :a #x80) - (new 'static 'rgba :r #x4 :g #x33 :b #x39 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x3a :a #x80) - (new 'static 'rgba :r #x4 :g #x33 :b #x3b :a #x80) - (new 'static 'rgba :r #x4 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x32 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x31 :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x2e :b #x3a :a #x80) - (new 'static 'rgba :r #x3 :g #x30 :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2b :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2b :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) - (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) - (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - ) - ) - ) + (new 'static + 'ocean-colors + :colors + (new 'static + 'array + rgba + 2548 + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2b :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2b :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3f :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x3 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x8 :g #x34 :b #x45 :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x40 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x35 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x35 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x47 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x49 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x4b :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) + (new 'static 'rgba :r #xb :g #x37 :b #x48 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #xc :g #x37 :b #x48 :a #x80) + (new 'static 'rgba :r #xc :g #x38 :b #x49 :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x49 :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x2d :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2b :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x48 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4c :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x4d :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x4d :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x4a :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x4a :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4b :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x4d :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4f :a #x80) + (new 'static 'rgba :r #x14 :g #x43 :b #x50 :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x50 :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4f :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x4d :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4c :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #xd :g #x39 :b #x4d :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x4e :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4e :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x4e :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x4c :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #xb :g #x37 :b #x4a :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x4d :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4f :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4f :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4f :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x4f :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x4e :a #x80) + (new 'static 'rgba :r #xe :g #x3a :b #x4e :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x4e :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x4c :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x49 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x46 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x48 :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4e :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x54 :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x57 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x58 :a #x80) + (new 'static 'rgba :r #x1d :g #x4b :b #x56 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x55 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x55 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x56 :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x58 :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x59 :a #x80) + (new 'static 'rgba :r #x21 :g #x50 :b #x5a :a #x80) + (new 'static 'rgba :r #x21 :g #x4c :b #x5a :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x59 :a #x80) + (new 'static 'rgba :r #x1f :g #x4c :b #x58 :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x57 :a #x80) + (new 'static 'rgba :r #x1b :g #x4b :b #x56 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x54 :a #x80) + (new 'static 'rgba :r #x15 :g #x44 :b #x52 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x51 :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x4f :a #x80) + (new 'static 'rgba :r #xd :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x4c :a #x80) + (new 'static 'rgba :r #xc :g #x38 :b #x4b :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x4c :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x50 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x51 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x51 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x52 :a #x80) + (new 'static 'rgba :r #xe :g #x3a :b #x50 :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x4e :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x4 :g #x33 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x8 :g #x33 :b #x44 :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x49 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) + (new 'static 'rgba :r #x1f :g #x4c :b #x58 :a #x80) + (new 'static 'rgba :r #x23 :g #x51 :b #x5a :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x5b :a #x80) + (new 'static 'rgba :r #x23 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x5b :a #x80) + (new 'static 'rgba :r #x22 :g #x4f :b #x5b :a #x80) + (new 'static 'rgba :r #x23 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x51 :b #x5c :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x53 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x23 :g #x51 :b #x5b :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x21 :g #x4d :b #x5a :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x58 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x55 :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x52 :a #x80) + (new 'static 'rgba :r #x12 :g #x3e :b #x50 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x50 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x3c :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x53 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x53 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x53 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x52 :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x50 :a #x80) + (new 'static 'rgba :r #xd :g #x39 :b #x4c :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) + (new 'static 'rgba :r #x5 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x2d :b #x3b :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4a :a #x80) + (new 'static 'rgba :r #x19 :g #x49 :b #x53 :a #x80) + (new 'static 'rgba :r #x22 :g #x4e :b #x5a :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x5b :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x5c :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x55 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x5d :a #x80) + (new 'static 'rgba :r #x22 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x21 :g #x4e :b #x5b :a #x80) + (new 'static 'rgba :r #x1e :g #x4e :b #x59 :a #x80) + (new 'static 'rgba :r #x1c :g #x4a :b #x57 :a #x80) + (new 'static 'rgba :r #x1b :g #x4c :b #x57 :a #x80) + (new 'static 'rgba :r #x19 :g #x4a :b #x56 :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x42 :b #x54 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x54 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x55 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x55 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x51 :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x4b :a #x80) + (new 'static 'rgba :r #x9 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x3f :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #x9 :g #x35 :b #x45 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x4b :a #x80) + (new 'static 'rgba :r #x1b :g #x4a :b #x54 :a #x80) + (new 'static 'rgba :r #x22 :g #x51 :b #x5a :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x25 :g #x55 :b #x5d :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x51 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x56 :b #x5f :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x54 :b #x5f :a #x80) + (new 'static 'rgba :r #x26 :g #x56 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x55 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x51 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x55 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x23 :g #x50 :b #x5d :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x5b :a #x80) + (new 'static 'rgba :r #x1c :g #x4c :b #x58 :a #x80) + (new 'static 'rgba :r #x18 :g #x49 :b #x55 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x54 :a #x80) + (new 'static 'rgba :r #x13 :g #x44 :b #x55 :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x56 :a #x80) + (new 'static 'rgba :r #x15 :g #x44 :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x4e :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x4e :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x20 :g #x50 :b #x59 :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x25 :g #x51 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x56 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x26 :g #x56 :b #x5f :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5f :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x50 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x5d :a #x80) + (new 'static 'rgba :r #x23 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x21 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x59 :a #x80) + (new 'static 'rgba :r #x17 :g #x44 :b #x55 :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x42 :b #x55 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x55 :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x56 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x56 :a #x80) + (new 'static 'rgba :r #x17 :g #x44 :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x4f :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x8 :g #x34 :b #x40 :a #x80) + (new 'static 'rgba :r #x10 :g #x3b :b #x4a :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x4f :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x54 :a #x80) + (new 'static 'rgba :r #x1d :g #x4b :b #x57 :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x5a :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x5d :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x27 :g #x53 :b #x5f :a #x80) + (new 'static 'rgba :r #x28 :g #x57 :b #x60 :a #x80) + (new 'static 'rgba :r #x27 :g #x54 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x54 :b #x5f :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x23 :g #x53 :b #x5b :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x54 :b #x5c :a #x80) + (new 'static 'rgba :r #x23 :g #x52 :b #x5b :a #x80) + (new 'static 'rgba :r #x23 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x23 :g #x51 :b #x5c :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x5b :a #x80) + (new 'static 'rgba :r #x18 :g #x48 :b #x57 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x55 :a #x80) + (new 'static 'rgba :r #x16 :g #x47 :b #x56 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x57 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x4f :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x40 :a #x80) + (new 'static 'rgba :r #x12 :g #x3d :b #x4b :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x50 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x54 :a #x80) + (new 'static 'rgba :r #x1c :g #x4b :b #x57 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x59 :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x5a :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x5b :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x5a :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x5b :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x26 :g #x56 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x56 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x53 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x23 :g #x51 :b #x5b :a #x80) + (new 'static 'rgba :r #x23 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x5b :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x22 :g #x4f :b #x5a :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x5a :a #x80) + (new 'static 'rgba :r #x22 :g #x4e :b #x5a :a #x80) + (new 'static 'rgba :r #x21 :g #x4e :b #x5a :a #x80) + (new 'static 'rgba :r #x1f :g #x4d :b #x5a :a #x80) + (new 'static 'rgba :r #x17 :g #x47 :b #x55 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x53 :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x53 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x54 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x55 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x55 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x53 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x12 :g #x3e :b #x4b :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x54 :a #x80) + (new 'static 'rgba :r #x1c :g #x49 :b #x57 :a #x80) + (new 'static 'rgba :r #x1d :g #x4b :b #x59 :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x5a :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x5a :a #x80) + (new 'static 'rgba :r #x1f :g #x4b :b #x5a :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x5b :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x5d :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x5c :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x5c :a #x80) + (new 'static 'rgba :r #x20 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5e :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x54 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x23 :g #x51 :b #x5b :a #x80) + (new 'static 'rgba :r #x23 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x22 :g #x4f :b #x5a :a #x80) + (new 'static 'rgba :r #x21 :g #x50 :b #x59 :a #x80) + (new 'static 'rgba :r #x21 :g #x4e :b #x59 :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x59 :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x59 :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x59 :a #x80) + (new 'static 'rgba :r #x21 :g #x4e :b #x59 :a #x80) + (new 'static 'rgba :r #x21 :g #x4f :b #x59 :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x58 :a #x80) + (new 'static 'rgba :r #x1d :g #x4d :b #x57 :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x54 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x51 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x50 :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x51 :a #x80) + (new 'static 'rgba :r #x11 :g #x42 :b #x52 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x53 :a #x80) + (new 'static 'rgba :r #x13 :g #x44 :b #x53 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x4f :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x4a :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x4a :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x50 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x53 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x57 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x58 :a #x80) + (new 'static 'rgba :r #x1f :g #x4f :b #x5a :a #x80) + (new 'static 'rgba :r #x1f :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x1e :g #x4d :b #x5b :a #x80) + (new 'static 'rgba :r #x1c :g #x4d :b #x5a :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x58 :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x57 :a #x80) + (new 'static 'rgba :r #x13 :g #x3f :b #x56 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x57 :a #x80) + (new 'static 'rgba :r #x1e :g #x4d :b #x5a :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x24 :g #x4f :b #x5b :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x21 :g #x4f :b #x5a :a #x80) + (new 'static 'rgba :r #x21 :g #x4e :b #x59 :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x58 :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x58 :a #x80) + (new 'static 'rgba :r #x1f :g #x4d :b #x57 :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x56 :a #x80) + (new 'static 'rgba :r #x1d :g #x4c :b #x56 :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x56 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x56 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x55 :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x56 :a #x80) + (new 'static 'rgba :r #x1a :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x51 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4f :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4f :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x50 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x50 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x51 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x50 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4f :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3d :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2f :b #x38 :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x4e :a #x80) + (new 'static 'rgba :r #x15 :g #x44 :b #x51 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x55 :a #x80) + (new 'static 'rgba :r #x19 :g #x49 :b #x57 :a #x80) + (new 'static 'rgba :r #x1a :g #x48 :b #x59 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x58 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x56 :a #x80) + (new 'static 'rgba :r #x14 :g #x44 :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x55 :a #x80) + (new 'static 'rgba :r #x13 :g #x3e :b #x54 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x58 :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x5a :a #x80) + (new 'static 'rgba :r #x1f :g #x4d :b #x59 :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x5a :a #x80) + (new 'static 'rgba :r #x23 :g #x50 :b #x5b :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x59 :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x58 :a #x80) + (new 'static 'rgba :r #x1f :g #x4e :b #x57 :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x56 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x56 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x1c :g #x48 :b #x54 :a #x80) + (new 'static 'rgba :r #x1c :g #x4a :b #x54 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x53 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x53 :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x53 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x52 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x51 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x4f :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x4d :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4f :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x4f :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x4f :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x4f :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x50 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x4f :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4c :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x49 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x41 :b #x4f :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x51 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x50 :a #x80) + (new 'static 'rgba :r #xf :g #x3a :b #x50 :a #x80) + (new 'static 'rgba :r #xf :g #x3a :b #x4f :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x55 :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x54 :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x55 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x57 :a #x80) + (new 'static 'rgba :r #x1d :g #x4c :b #x59 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x56 :a #x80) + (new 'static 'rgba :r #x1a :g #x48 :b #x56 :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x57 :a #x80) + (new 'static 'rgba :r #x1e :g #x4d :b #x58 :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x57 :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x55 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x1c :g #x4a :b #x54 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x53 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x52 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x51 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x51 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x51 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x50 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x50 :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x4f :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4d :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4d :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x4d :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x4e :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4d :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) + (new 'static 'rgba :r #xa :g #x36 :b #x47 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x48 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x4a :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x4c :a #x80) + (new 'static 'rgba :r #xb :g #x3b :b #x4c :a #x80) + (new 'static 'rgba :r #xd :g #x39 :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x54 :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x55 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x57 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x57 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x54 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x52 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x54 :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x56 :a #x80) + (new 'static 'rgba :r #x1c :g #x49 :b #x55 :a #x80) + (new 'static 'rgba :r #x1c :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x53 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x52 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x50 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x4f :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x4e :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x4e :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x4d :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x4e :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x4d :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x4d :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x4d :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4c :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x4c :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4c :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x4c :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x4c :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x4c :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x4d :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4d :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4c :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x47 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x45 :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x4a :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x4d :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x4f :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x53 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x54 :a #x80) + (new 'static 'rgba :r #x14 :g #x43 :b #x55 :a #x80) + (new 'static 'rgba :r #x17 :g #x48 :b #x57 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x57 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x51 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x51 :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x51 :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x53 :a #x80) + (new 'static 'rgba :r #x1c :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x1a :g #x48 :b #x52 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x51 :a #x80) + (new 'static 'rgba :r #x17 :g #x44 :b #x4f :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x4e :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x4d :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4c :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x13 :g #x3f :b #x4a :a #x80) + (new 'static 'rgba :r #x13 :g #x3f :b #x4a :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4b :a #x80) + (new 'static 'rgba :r #x13 :g #x3f :b #x4a :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x4b :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x4b :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x4a :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4b :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x4b :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x4b :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x49 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x47 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x49 :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x4b :a #x80) + (new 'static 'rgba :r #xd :g #x39 :b #x4e :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x50 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x12 :g #x3e :b #x54 :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x56 :a #x80) + (new 'static 'rgba :r #x18 :g #x47 :b #x58 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x58 :a #x80) + (new 'static 'rgba :r #x17 :g #x46 :b #x56 :a #x80) + (new 'static 'rgba :r #x12 :g #x43 :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x51 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x51 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x52 :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x54 :a #x80) + (new 'static 'rgba :r #x1c :g #x48 :b #x53 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x51 :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x4f :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4d :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4b :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x4a :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x49 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x48 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #xb :g #x37 :b #x49 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x46 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x49 :a #x80) + (new 'static 'rgba :r #xb :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x52 :a #x80) + (new 'static 'rgba :r #x12 :g #x3e :b #x55 :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x57 :a #x80) + (new 'static 'rgba :r #x18 :g #x48 :b #x58 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x59 :a #x80) + (new 'static 'rgba :r #x1c :g #x4c :b #x59 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x57 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x51 :a #x80) + (new 'static 'rgba :r #x15 :g #x44 :b #x53 :a #x80) + (new 'static 'rgba :r #x1c :g #x4a :b #x55 :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x56 :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x53 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x50 :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x4d :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x4b :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x4a :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x43 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x43 :a #x80) + (new 'static 'rgba :r #xb :g #x37 :b #x43 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x3f :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x4d :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x56 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x59 :a #x80) + (new 'static 'rgba :r #x1c :g #x4c :b #x5a :a #x80) + (new 'static 'rgba :r #x21 :g #x4f :b #x5c :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x5c :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x5a :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x56 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x53 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x52 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x17 :g #x44 :b #x53 :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x55 :a #x80) + (new 'static 'rgba :r #x21 :g #x4d :b #x55 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x52 :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x4e :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4c :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4a :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x5 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x4 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x4 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x4 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x4 :g #x33 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x34 :b #x3f :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x40 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x40 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x41 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x3e :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4f :a #x80) + (new 'static 'rgba :r #x16 :g #x47 :b #x56 :a #x80) + (new 'static 'rgba :r #x1c :g #x4a :b #x5a :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x5c :a #x80) + (new 'static 'rgba :r #x24 :g #x4f :b #x5d :a #x80) + (new 'static 'rgba :r #x26 :g #x53 :b #x5e :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x5b :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x57 :a #x80) + (new 'static 'rgba :r #x13 :g #x3f :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x52 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x52 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x53 :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x54 :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x53 :a #x80) + (new 'static 'rgba :r #x1c :g #x48 :b #x4f :a #x80) + (new 'static 'rgba :r #x18 :g #x43 :b #x4d :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4c :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x49 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x4 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x3 :g #x33 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x31 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x49 :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x50 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x57 :a #x80) + (new 'static 'rgba :r #x21 :g #x51 :b #x5d :a #x80) + (new 'static 'rgba :r #x26 :g #x53 :b #x5f :a #x80) + (new 'static 'rgba :r #x28 :g #x55 :b #x5f :a #x80) + (new 'static 'rgba :r #x27 :g #x53 :b #x5f :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x5d :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x5b :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x57 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x55 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x53 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x53 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x54 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x53 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x4f :a #x80) + (new 'static 'rgba :r #x1a :g #x44 :b #x4d :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x4b :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x49 :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x5 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x4 :g #x34 :b #x40 :a #x80) + (new 'static 'rgba :r #x3 :g #x33 :b #x3e :a #x80) + (new 'static 'rgba :r #x2 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x31 :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x31 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3f :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3c :a #x80) + (new 'static 'rgba :r #x7 :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x50 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x57 :a #x80) + (new 'static 'rgba :r #x22 :g #x52 :b #x5d :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x5f :a #x80) + (new 'static 'rgba :r #x26 :g #x56 :b #x5f :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x5d :a #x80) + (new 'static 'rgba :r #x21 :g #x4f :b #x5c :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x5a :a #x80) + (new 'static 'rgba :r #x1c :g #x4a :b #x59 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x57 :a #x80) + (new 'static 'rgba :r #x18 :g #x47 :b #x56 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x56 :a #x80) + (new 'static 'rgba :r #x1b :g #x4a :b #x55 :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x55 :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x54 :a #x80) + (new 'static 'rgba :r #x20 :g #x4b :b #x51 :a #x80) + (new 'static 'rgba :r #x1d :g #x46 :b #x4d :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x4b :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x4a :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x43 :a #x80) + (new 'static 'rgba :r #x5 :g #x36 :b #x40 :a #x80) + (new 'static 'rgba :r #x4 :g #x35 :b #x3f :a #x80) + (new 'static 'rgba :r #x3 :g #x34 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x33 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x4f :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x55 :a #x80) + (new 'static 'rgba :r #x1d :g #x4c :b #x59 :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x5b :a #x80) + (new 'static 'rgba :r #x1f :g #x4c :b #x5b :a #x80) + (new 'static 'rgba :r #x1c :g #x4a :b #x59 :a #x80) + (new 'static 'rgba :r #x1a :g #x49 :b #x58 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x57 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x57 :a #x80) + (new 'static 'rgba :r #x19 :g #x4a :b #x56 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x57 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x56 :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x54 :a #x80) + (new 'static 'rgba :r #x1c :g #x49 :b #x55 :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x55 :a #x80) + (new 'static 'rgba :r #x20 :g #x4b :b #x53 :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x50 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x4e :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x4c :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x4a :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x49 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x45 :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x42 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x40 :a #x80) + (new 'static 'rgba :r #x5 :g #x34 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x40 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4d :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x50 :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x54 :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x54 :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x53 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x53 :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #x13 :g #x3f :b #x52 :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x53 :a #x80) + (new 'static 'rgba :r #x14 :g #x44 :b #x52 :a #x80) + (new 'static 'rgba :r #x14 :g #x43 :b #x51 :a #x80) + (new 'static 'rgba :r #x14 :g #x43 :b #x50 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4f :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x50 :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x51 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x54 :a #x80) + (new 'static 'rgba :r #x22 :g #x4d :b #x54 :a #x80) + (new 'static 'rgba :r #x22 :g #x4e :b #x53 :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x52 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x50 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x4e :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x8 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2b :b #x39 :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x49 :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x4c :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4d :a #x80) + (new 'static 'rgba :r #xe :g #x3a :b #x4e :a #x80) + (new 'static 'rgba :r #xd :g #x39 :b #x4e :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x4e :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x4f :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4f :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x4f :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x4d :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x4e :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x53 :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x56 :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x57 :a #x80) + (new 'static 'rgba :r #x22 :g #x4e :b #x54 :a #x80) + (new 'static 'rgba :r #x1f :g #x4c :b #x52 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x4f :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4c :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x48 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2b :b #x39 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3d :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x43 :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x49 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x49 :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) + (new 'static 'rgba :r #xb :g #x37 :b #x4c :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x4e :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x51 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x51 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x51 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x48 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x49 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x4d :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x52 :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x56 :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x57 :a #x80) + (new 'static 'rgba :r #x25 :g #x50 :b #x57 :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x55 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x51 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4d :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3d :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x45 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2f :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x41 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x7 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x4a :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x4d :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x51 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x54 :a #x80) + (new 'static 'rgba :r #x14 :g #x40 :b #x54 :a #x80) + (new 'static 'rgba :r #x14 :g #x45 :b #x54 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x51 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x4e :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #xe :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x4b :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4c :a #x80) + (new 'static 'rgba :r #x19 :g #x49 :b #x4f :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x53 :a #x80) + (new 'static 'rgba :r #x25 :g #x51 :b #x56 :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x57 :a #x80) + (new 'static 'rgba :r #x22 :g #x4e :b #x56 :a #x80) + (new 'static 'rgba :r #x1c :g #x48 :b #x52 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x4e :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x48 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x5 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x49 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x48 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x45 :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x40 :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x49 :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x4c :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x50 :a #x80) + (new 'static 'rgba :r #x14 :g #x43 :b #x54 :a #x80) + (new 'static 'rgba :r #x16 :g #x46 :b #x57 :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x56 :a #x80) + (new 'static 'rgba :r #x15 :g #x46 :b #x54 :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x51 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x4e :a #x80) + (new 'static 'rgba :r #x10 :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4a :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x49 :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x4a :a #x80) + (new 'static 'rgba :r #x1a :g #x48 :b #x4a :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x4b :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x4e :a #x80) + (new 'static 'rgba :r #x26 :g #x51 :b #x53 :a #x80) + (new 'static 'rgba :r #x23 :g #x51 :b #x55 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x51 :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x4c :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x9 :g #x3a :b #x44 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x47 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x47 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x4b :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x4c :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4d :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x4c :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x4a :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x46 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x3d :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x42 :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x4f :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x54 :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x59 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x59 :a #x80) + (new 'static 'rgba :r #x1a :g #x49 :b #x56 :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x4e :a #x80) + (new 'static 'rgba :r #x11 :g #x42 :b #x4a :a #x80) + (new 'static 'rgba :r #xf :g #x42 :b #x47 :a #x80) + (new 'static 'rgba :r #x10 :g #x42 :b #x45 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x44 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x1a :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x21 :g #x47 :b #x42 :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4d :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x17 :g #x46 :b #x49 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x48 :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x47 :a #x80) + (new 'static 'rgba :r #xc :g #x3d :b #x46 :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x49 :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x4a :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x4a :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x4b :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x4c :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x4e :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x4f :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x50 :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x4f :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4c :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3d :a #x80) + (new 'static 'rgba :r #x5 :g #x34 :b #x40 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x45 :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x4f :a #x80) + (new 'static 'rgba :r #x17 :g #x47 :b #x54 :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x56 :a #x80) + (new 'static 'rgba :r #x21 :g #x52 :b #x5a :a #x80) + (new 'static 'rgba :r #x21 :g #x4f :b #x58 :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x55 :a #x80) + (new 'static 'rgba :r #x18 :g #x49 :b #x4f :a #x80) + (new 'static 'rgba :r #x12 :g #x45 :b #x4b :a #x80) + (new 'static 'rgba :r #xf :g #x44 :b #x46 :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x42 :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x3e :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x3d :a #x80) + (new 'static 'rgba :r #x14 :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #x19 :g #x40 :b #x39 :a #x80) + (new 'static 'rgba :r #x1c :g #x41 :b #x38 :a #x80) + (new 'static 'rgba :r #x1f :g #x43 :b #x3b :a #x80) + (new 'static 'rgba :r #x20 :g #x45 :b #x3e :a #x80) + (new 'static 'rgba :r #x20 :g #x44 :b #x3e :a #x80) + (new 'static 'rgba :r #x1c :g #x44 :b #x40 :a #x80) + (new 'static 'rgba :r #x18 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x46 :a #x80) + (new 'static 'rgba :r #x11 :g #x42 :b #x49 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x48 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x49 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x4a :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4b :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4c :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4d :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x50 :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x52 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x50 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x4e :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x49 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x4e :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x55 :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x55 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x4f :a #x80) + (new 'static 'rgba :r #x1c :g #x48 :b #x51 :a #x80) + (new 'static 'rgba :r #x1f :g #x50 :b #x53 :a #x80) + (new 'static 'rgba :r #x1a :g #x4b :b #x4e :a #x80) + (new 'static 'rgba :r #x12 :g #x43 :b #x45 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x40 :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x3b :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x39 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x37 :a #x80) + (new 'static 'rgba :r #x14 :g #x3f :b #x35 :a #x80) + (new 'static 'rgba :r #x17 :g #x40 :b #x34 :a #x80) + (new 'static 'rgba :r #x1a :g #x41 :b #x35 :a #x80) + (new 'static 'rgba :r #x1e :g #x42 :b #x36 :a #x80) + (new 'static 'rgba :r #x1f :g #x43 :b #x35 :a #x80) + (new 'static 'rgba :r #x1d :g #x42 :b #x38 :a #x80) + (new 'static 'rgba :r #x1b :g #x41 :b #x39 :a #x80) + (new 'static 'rgba :r #x17 :g #x40 :b #x3e :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x43 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x47 :a #x80) + (new 'static 'rgba :r #x10 :g #x42 :b #x48 :a #x80) + (new 'static 'rgba :r #x10 :g #x42 :b #x49 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x49 :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x49 :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x4b :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x4c :a #x80) + (new 'static 'rgba :r #x12 :g #x43 :b #x4e :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x51 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x53 :a #x80) + (new 'static 'rgba :r #x1a :g #x48 :b #x54 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x53 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x53 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x4f :a #x80) + (new 'static 'rgba :r #xf :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #x9 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x47 :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x4b :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x4f :a #x80) + (new 'static 'rgba :r #x17 :g #x46 :b #x52 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x54 :a #x80) + (new 'static 'rgba :r #x18 :g #x43 :b #x4c :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x46 :a #x80) + (new 'static 'rgba :r #x14 :g #x44 :b #x48 :a #x80) + (new 'static 'rgba :r #x1a :g #x4b :b #x4c :a #x80) + (new 'static 'rgba :r #x1b :g #x4a :b #x4a :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x3c :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x39 :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x36 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x36 :a #x80) + (new 'static 'rgba :r #x12 :g #x3e :b #x31 :a #x80) + (new 'static 'rgba :r #x15 :g #x40 :b #x2e :a #x80) + (new 'static 'rgba :r #x18 :g #x40 :b #x2e :a #x80) + (new 'static 'rgba :r #x1b :g #x41 :b #x2f :a #x80) + (new 'static 'rgba :r #x1c :g #x42 :b #x31 :a #x80) + (new 'static 'rgba :r #x1b :g #x42 :b #x32 :a #x80) + (new 'static 'rgba :r #x19 :g #x42 :b #x34 :a #x80) + (new 'static 'rgba :r #x16 :g #x40 :b #x3b :a #x80) + (new 'static 'rgba :r #x13 :g #x3f :b #x3e :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x44 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x46 :a #x80) + (new 'static 'rgba :r #x10 :g #x42 :b #x47 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #xe :g #x41 :b #x48 :a #x80) + (new 'static 'rgba :r #xe :g #x41 :b #x49 :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x4d :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x50 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x53 :a #x80) + (new 'static 'rgba :r #x1c :g #x48 :b #x55 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x55 :a #x80) + (new 'static 'rgba :r #x1a :g #x48 :b #x54 :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x52 :a #x80) + (new 'static 'rgba :r #x13 :g #x3f :b #x50 :a #x80) + (new 'static 'rgba :r #xe :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3b :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #xc :g #x38 :b #x49 :a #x80) + (new 'static 'rgba :r #x10 :g #x41 :b #x4e :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x52 :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x54 :a #x80) + (new 'static 'rgba :r #x1d :g #x4c :b #x54 :a #x80) + (new 'static 'rgba :r #x19 :g #x43 :b #x4c :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x46 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x43 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x45 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x46 :a #x80) + (new 'static 'rgba :r #x1a :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x3d :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x37 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x34 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x35 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x30 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x2c :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x2a :a #x80) + (new 'static 'rgba :r #x14 :g #x3e :b #x29 :a #x80) + (new 'static 'rgba :r #x16 :g #x3f :b #x27 :a #x80) + (new 'static 'rgba :r #x17 :g #x3f :b #x29 :a #x80) + (new 'static 'rgba :r #x16 :g #x3f :b #x2c :a #x80) + (new 'static 'rgba :r #x15 :g #x3f :b #x30 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x36 :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x40 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x43 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x45 :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x46 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x47 :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x47 :a #x80) + (new 'static 'rgba :r #xe :g #x41 :b #x48 :a #x80) + (new 'static 'rgba :r #x10 :g #x3f :b #x4a :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x4e :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x51 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x53 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x54 :a #x80) + (new 'static 'rgba :r #x17 :g #x46 :b #x54 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x52 :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x4f :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x4a :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #xe :g #x3a :b #x4b :a #x80) + (new 'static 'rgba :r #x14 :g #x43 :b #x50 :a #x80) + (new 'static 'rgba :r #x1a :g #x48 :b #x55 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x54 :a #x80) + (new 'static 'rgba :r #x1a :g #x46 :b #x4f :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x48 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x44 :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x43 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x42 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x40 :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x36 :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x33 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x31 :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x30 :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x2b :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x26 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x22 :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x1c :a #x80) + (new 'static 'rgba :r #xf :g #x3a :b #x1d :a #x80) + (new 'static 'rgba :r #x10 :g #x3b :b #x21 :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x24 :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x2b :a #x80) + (new 'static 'rgba :r #x11 :g #x3e :b #x30 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x38 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x40 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x42 :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x43 :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x44 :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x44 :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x46 :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x48 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x4f :a #x80) + (new 'static 'rgba :r #x16 :g #x46 :b #x53 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x54 :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x53 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x50 :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x4d :a #x80) + (new 'static 'rgba :r #xa :g #x36 :b #x48 :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x3f :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x31 :b #x3c :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x45 :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x4a :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x51 :a #x80) + (new 'static 'rgba :r #x1d :g #x4b :b #x56 :a #x80) + (new 'static 'rgba :r #x1f :g #x4c :b #x53 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x4e :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x48 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x47 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x44 :a #x80) + (new 'static 'rgba :r #x17 :g #x44 :b #x45 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x13 :g #x3e :b #x39 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x33 :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x2d :a #x80) + (new 'static 'rgba :r #xf :g #x3d :b #x2a :a #x80) + (new 'static 'rgba :r #xe :g #x3d :b #x2a :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x24 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x21 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x19 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x17 :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x15 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x16 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x1c :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x23 :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x2d :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x35 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x3e :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x40 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x41 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x42 :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x42 :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x44 :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x46 :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x49 :a #x80) + (new 'static 'rgba :r #x10 :g #x41 :b #x4d :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x51 :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x52 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x52 :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x4f :a #x80) + (new 'static 'rgba :r #xb :g #x3b :b #x4a :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x3d :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3c :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3f :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x49 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x50 :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x55 :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x55 :a #x80) + (new 'static 'rgba :r #x1d :g #x4c :b #x51 :a #x80) + (new 'static 'rgba :r #x18 :g #x48 :b #x4b :a #x80) + (new 'static 'rgba :r #x19 :g #x4a :b #x4b :a #x80) + (new 'static 'rgba :r #x18 :g #x47 :b #x49 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x12 :g #x3f :b #x3b :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x34 :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x2e :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x29 :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x29 :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x22 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x1f :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x18 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x12 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #xe :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #xd :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x10 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x15 :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x1f :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x26 :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x2e :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x33 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x39 :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x3e :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x3f :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x3e :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x3f :a #x80) + (new 'static 'rgba :r #xe :g #x3e :b #x44 :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x47 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x4b :a #x80) + (new 'static 'rgba :r #x11 :g #x42 :b #x4f :a #x80) + (new 'static 'rgba :r #x11 :g #x3d :b #x51 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x50 :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x4c :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x46 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x4c :a #x80) + (new 'static 'rgba :r #x14 :g #x44 :b #x50 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x52 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x50 :a #x80) + (new 'static 'rgba :r #x19 :g #x4b :b #x4c :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x46 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x3e :a #x80) + (new 'static 'rgba :r #x10 :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x37 :a #x80) + (new 'static 'rgba :r #xd :g #x3b :b #x30 :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x2d :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x25 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x23 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x1e :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x19 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x14 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x12 :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #xb :a #x80) + (new 'static 'rgba :r #x4 :g #x33 :b #xe :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x17 :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x1f :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x24 :a #x80) + (new 'static 'rgba :r #xb :g #x3b :b #x2e :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x32 :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x37 :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x3b :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x3c :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x3d :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x3f :a #x80) + (new 'static 'rgba :r #xd :g #x3e :b #x41 :a #x80) + (new 'static 'rgba :r #xe :g #x42 :b #x47 :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x4a :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x4e :a #x80) + (new 'static 'rgba :r #xf :g #x3b :b #x50 :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4e :a #x80) + (new 'static 'rgba :r #xa :g #x36 :b #x49 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x4 :g #x2e :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2f :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x40 :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x4c :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x4c :a #x80) + (new 'static 'rgba :r #x13 :g #x44 :b #x4a :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x45 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x3a :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x36 :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x30 :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x2c :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x26 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x20 :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x1d :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x15 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x11 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #xf :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xc :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xc :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #xb :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x10 :a #x80) + (new 'static 'rgba :r #x5 :g #x35 :b #x19 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x1f :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x26 :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x2b :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x2f :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x36 :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x37 :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x3b :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x3b :a #x80) + (new 'static 'rgba :r #xe :g #x3c :b #x40 :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x46 :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x4a :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4e :a #x80) + (new 'static 'rgba :r #xf :g #x3c :b #x4e :a #x80) + (new 'static 'rgba :r #xb :g #x3b :b #x4b :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3f :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3f :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3d :b #x47 :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x45 :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x41 :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x3d :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x37 :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x37 :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x33 :a #x80) + (new 'static 'rgba :r #xb :g #x3c :b #x31 :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x29 :a #x80) + (new 'static 'rgba :r #x9 :g #x39 :b #x26 :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x20 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x1b :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x16 :a #x80) + (new 'static 'rgba :r #x4 :g #x34 :b #x11 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #xf :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xb :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x8 :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x9 :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #xc :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x10 :a #x80) + (new 'static 'rgba :r #x5 :g #x34 :b #x16 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x1c :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x23 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x2a :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x2e :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x33 :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x36 :a #x80) + (new 'static 'rgba :r #xc :g #x3b :b #x3b :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x40 :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x47 :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4d :a #x80) + (new 'static 'rgba :r #xd :g #x39 :b #x4c :a #x80) + (new 'static 'rgba :r #xa :g #x36 :b #x48 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x41 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x5 :g #x35 :b #x40 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x8 :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x43 :a #x80) + (new 'static 'rgba :r #x9 :g #x3c :b #x42 :a #x80) + (new 'static 'rgba :r #xa :g #x3c :b #x3d :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x3a :a #x80) + (new 'static 'rgba :r #xc :g #x39 :b #x37 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x36 :a #x80) + (new 'static 'rgba :r #xc :g #x3a :b #x33 :a #x80) + (new 'static 'rgba :r #xb :g #x3b :b #x2f :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x2b :a #x80) + (new 'static 'rgba :r #x9 :g #x38 :b #x27 :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x24 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x20 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x18 :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x16 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x11 :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xd :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xa :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x9 :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xc :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xd :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #xe :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x12 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x15 :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x1b :a #x80) + (new 'static 'rgba :r #x8 :g #x36 :b #x23 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x28 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x2f :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x37 :a #x80) + (new 'static 'rgba :r #xc :g #x3c :b #x3a :a #x80) + (new 'static 'rgba :r #xd :g #x40 :b #x43 :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x48 :a #x80) + (new 'static 'rgba :r #xf :g #x3e :b #x4b :a #x80) + (new 'static 'rgba :r #xe :g #x3b :b #x4c :a #x80) + (new 'static 'rgba :r #xb :g #x37 :b #x49 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x4 :g #x34 :b #x3f :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x3 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x4 :g #x31 :b #x3f :a #x80) + (new 'static 'rgba :r #x5 :g #x35 :b #x41 :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x41 :a #x80) + (new 'static 'rgba :r #x7 :g #x38 :b #x40 :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x3f :a #x80) + (new 'static 'rgba :r #x9 :g #x3a :b #x3d :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x39 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x38 :a #x80) + (new 'static 'rgba :r #xb :g #x38 :b #x35 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x31 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x30 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x2d :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x2c :a #x80) + (new 'static 'rgba :r #x9 :g #x35 :b #x28 :a #x80) + (new 'static 'rgba :r #x8 :g #x34 :b #x24 :a #x80) + (new 'static 'rgba :r #x7 :g #x32 :b #x22 :a #x80) + (new 'static 'rgba :r #x6 :g #x31 :b #x1a :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x16 :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x15 :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x11 :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x10 :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x12 :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x11 :a #x80) + (new 'static 'rgba :r #x4 :g #x2f :b #x11 :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x15 :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x18 :a #x80) + (new 'static 'rgba :r #x6 :g #x30 :b #x1b :a #x80) + (new 'static 'rgba :r #x8 :g #x31 :b #x20 :a #x80) + (new 'static 'rgba :r #x9 :g #x33 :b #x26 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x2e :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x37 :a #x80) + (new 'static 'rgba :r #xc :g #x3d :b #x3d :a #x80) + (new 'static 'rgba :r #xc :g #x40 :b #x45 :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x48 :a #x80) + (new 'static 'rgba :r #xd :g #x3a :b #x4a :a #x80) + (new 'static 'rgba :r #xb :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x41 :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3c :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x30 :b #x3e :a #x80) + (new 'static 'rgba :r #x5 :g #x36 :b #x3e :a #x80) + (new 'static 'rgba :r #x6 :g #x37 :b #x3d :a #x80) + (new 'static 'rgba :r #x7 :g #x38 :b #x3d :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x3d :a #x80) + (new 'static 'rgba :r #x9 :g #x3a :b #x38 :a #x80) + (new 'static 'rgba :r #xa :g #x39 :b #x39 :a #x80) + (new 'static 'rgba :r #xa :g #x38 :b #x34 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x34 :a #x80) + (new 'static 'rgba :r #x9 :g #x37 :b #x30 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x32 :a #x80) + (new 'static 'rgba :r #x9 :g #x36 :b #x2f :a #x80) + (new 'static 'rgba :r #x8 :g #x35 :b #x2e :a #x80) + (new 'static 'rgba :r #x8 :g #x34 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x32 :b #x27 :a #x80) + (new 'static 'rgba :r #x6 :g #x31 :b #x23 :a #x80) + (new 'static 'rgba :r #x6 :g #x30 :b #x23 :a #x80) + (new 'static 'rgba :r #x6 :g #x30 :b #x21 :a #x80) + (new 'static 'rgba :r #x7 :g #x2f :b #x20 :a #x80) + (new 'static 'rgba :r #x6 :g #x2f :b #x1e :a #x80) + (new 'static 'rgba :r #x5 :g #x2e :b #x1b :a #x80) + (new 'static 'rgba :r #x5 :g #x2e :b #x1c :a #x80) + (new 'static 'rgba :r #x6 :g #x2e :b #x1d :a #x80) + (new 'static 'rgba :r #x6 :g #x2f :b #x1f :a #x80) + (new 'static 'rgba :r #x6 :g #x31 :b #x23 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x29 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x2c :a #x80) + (new 'static 'rgba :r #x8 :g #x37 :b #x31 :a #x80) + (new 'static 'rgba :r #x8 :g #x3a :b #x39 :a #x80) + (new 'static 'rgba :r #xa :g #x3a :b #x41 :a #x80) + (new 'static 'rgba :r #xa :g #x3c :b #x44 :a #x80) + (new 'static 'rgba :r #xb :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #xa :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x8 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x5 :g #x31 :b #x41 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3c :a #x80) + (new 'static 'rgba :r #x5 :g #x35 :b #x3d :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x3e :a #x80) + (new 'static 'rgba :r #x7 :g #x39 :b #x3e :a #x80) + (new 'static 'rgba :r #x8 :g #x3c :b #x3e :a #x80) + (new 'static 'rgba :r #x8 :g #x39 :b #x3c :a #x80) + (new 'static 'rgba :r #x8 :g #x39 :b #x3a :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x39 :a #x80) + (new 'static 'rgba :r #x8 :g #x38 :b #x39 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x38 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x37 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x34 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x35 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x34 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x33 :a #x80) + (new 'static 'rgba :r #x7 :g #x38 :b #x33 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x33 :a #x80) + (new 'static 'rgba :r #x7 :g #x36 :b #x2f :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x2d :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x2a :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x28 :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x29 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x2a :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x30 :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x34 :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x38 :a #x80) + (new 'static 'rgba :r #x5 :g #x36 :b #x3c :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x3f :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x41 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3f :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3d :a #x80) + (new 'static 'rgba :r #x2 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2b :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x4 :g #x33 :b #x3c :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3d :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x3e :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x3e :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) + (new 'static 'rgba :r #x5 :g #x33 :b #x3c :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x3b :a #x80) + (new 'static 'rgba :r #x5 :g #x35 :b #x3b :a #x80) + (new 'static 'rgba :r #x5 :g #x36 :b #x3b :a #x80) + (new 'static 'rgba :r #x4 :g #x36 :b #x3b :a #x80) + (new 'static 'rgba :r #x5 :g #x35 :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x3d :a #x80) + (new 'static 'rgba :r #x7 :g #x35 :b #x3e :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x3e :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x3d :a #x80) + (new 'static 'rgba :r #x5 :g #x36 :b #x3b :a #x80) + (new 'static 'rgba :r #x4 :g #x36 :b #x38 :a #x80) + (new 'static 'rgba :r #x4 :g #x35 :b #x36 :a #x80) + (new 'static 'rgba :r #x4 :g #x35 :b #x35 :a #x80) + (new 'static 'rgba :r #x4 :g #x35 :b #x36 :a #x80) + (new 'static 'rgba :r #x4 :g #x35 :b #x37 :a #x80) + (new 'static 'rgba :r #x4 :g #x33 :b #x39 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x3a :a #x80) + (new 'static 'rgba :r #x4 :g #x33 :b #x3b :a #x80) + (new 'static 'rgba :r #x4 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x32 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3c :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x31 :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x3b :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2f :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x2e :b #x3a :a #x80) + (new 'static 'rgba :r #x3 :g #x30 :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x3a :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2b :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2f :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2b :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x39 :a #x80) + (new 'static 'rgba :r #x1 :g #x2e :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2c :b #x38 :a #x80) + (new 'static 'rgba :r #x2 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba :r #x1 :g #x2d :b #x38 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba)))) (define *ocean-near-indices-village1* - (new 'static 'ocean-near-indices - :data - (new 'static 'inline-array ocean-near-index 68 - (new 'static 'ocean-near-index) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x1 - #xffff - #xffff - #x0 - #x2 - #xffff - #xffff - #x0 - #x0 - #x3 - #xffff - #x0 - #x0 - #x3 - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x4 - #x0 - #x5 - #xffff - #x6 - #x0 - #x7 - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x8 - #x9 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #xa - #xb - #x0 - #x0 - #x0 - #x14 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #x15 - #xffff - #xffff - #xffff - #x0 - #x1a - #xffff - #xffff - #x0 - #x20 - #x21 - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xc - #xd - #xe - #xf - #xffff - #xffff - #x16 - #x17 - #xffff - #x1b - #x1c - #x0 - #x22 - #x23 - #x24 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x10 - #x11 - #x12 - #x13 - #x0 - #x0 - #x18 - #x19 - #x1d - #x1e - #x0 - #x1f - #x0 - #x0 - #x0 - #x25 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x26 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x27 - #x0 - #x17 - #x0 - #x0 - #x0 - #x0 - #x2b - #x0 - #x0 - #x0 - #x2e - #x0 - #x0 - #x0 - #x32 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x28 - #x29 - #x2a - #x2c - #x2d - #xffff - #xffff - #x2f - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x30 - #x31 - #xffff - #x33 - #x34 - #x35 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xb - #xffff - #xffff - #xffff - #x36 - #x37 - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x38 - #x0 - #x0 - #x0 - #x38 - #x0 - #x0 - #x0 - #x48 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x19 - #xffff - #xffff - #xffff - #x4f - #x50 - #x51 - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #x3e - #x3f - #x40 - #x41 - #x49 - #x4a - #x4b - #x4c - #xffff - #xffff - #xffff - #x52 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x39 - #x3a - #x2d - #xffff - #x42 - #x43 - #xffff - #xffff - #x4d - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x3b - #x3c - #xffff - #xffff - #xffff - #x44 - #x45 - #x46 - #xffff - #xffff - #x4e - #x0 - #xffff - #xffff - #x53 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x3d - #x0 - #x0 - #x0 - #x47 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x54 - #xffff - #x0 - #x0 - #x59 - #xffff - #x0 - #x0 - #x5c - #x56 - #x0 - #x62 - #x63 - #x64 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x65 - #x66 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #x55 - #x56 - #xffff - #xffff - #x5a - #x5b - #xffff - #xffff - #x5d - #x5e - #x5f - #x67 - #x68 - #x69 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x60 - #x60 - #x60 - #x61 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #x57 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x6a - #x6b - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x58 - #x0 - #x0 - #x0 - #x3d - #x0 - #x0 - #x0 - #x3d - #x0 - #x0 - #x0 - #x3d - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x6c - #xffff - #xffff - #x0 - #x70 - #xffff - #xffff - #x0 - #x70 - #xffff - #xffff - #x0 - #x7e - #x7f - #x80 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x81 - #x82 - #x83 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #x6d - #xffff - #x71 - #x72 - #x17 - #x77 - #x78 - #x79 - #x7a - #x0 - #x0 - #x84 - #x85 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x6e - #x41 - #x6f - #x0 - #x73 - #x74 - #x75 - #x76 - #x7b - #x7c - #x7d - #x17 - #x86 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x87 - #x88 - #x0 - #x0 - #x8e - #xffff - #x0 - #x0 - #x91 - #xffff - #x0 - #x0 - #x95 - #x96 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #x89 - #x20 - #x8a - #xffff - #x8f - #x0 - #x0 - #xffff - #x92 - #x0 - #x0 - #xffff - #x97 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x8b - #x0 - #x0 - #x8c - #x0 - #x0 - #x0 - #x90 - #x0 - #x0 - #x0 - #x93 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #x8d - #x0 - #x0 - #x66 - #x0 - #x0 - #x0 - #x94 - #x0 - #x0 - #x0 - #x98 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x20 - #x0 - #x0 - #x0 - #x9b - #x0 - #x0 - #x0 - #x0 - #x0 - #x9d - #x9e - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x99 - #x9a - #x0 - #x0 - #x9c - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x9f - #xa0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #xa1 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x79 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #xb2 - #xb3 - #xb4 - #xb5 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #xb6 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #xab - #xac - #x0 - #xb7 - #xb8 - #xb9 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #xa2 - #xa3 - #x0 - #xa6 - #xa7 - #xffff - #xad - #xae - #xaf - #xffff - #xba - #xbb - #xbc - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xa4 - #xa5 - #x0 - #x0 - #xffff - #xffff - #xa8 - #x0 - #xffff - #xffff - #xb0 - #xb1 - #xffff - #xffff - #xbd - #xbe - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #xa9 - #xaa - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #xbf - #xc0 - #xc1 - #x0 - #xcc - #xffff - #xffff - #x0 - #xd3 - #xffff - #xffff - #xd8 - #xd9 - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xc2 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xc3 - #x0 - #x0 - #xffff - #xcd - #x0 - #x0 - #xffff - #xd4 - #xc3 - #x0 - #xffff - #xda - #x12 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #xc4 - #x0 - #x0 - #x70 - #x3b - #x0 - #x0 - #xffff - #xffff - #x0 - #x0 - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #xc5 - #xc6 - #xc7 - #xce - #xcf - #xd0 - #xd1 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xdb - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xc8 - #xc9 - #xca - #xffff - #xc2 - #xffff - #xffff - #xffff - #xd5 - #xd6 - #xd7 - #xffff - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xd2 - #xffff - #xffff - #xffff - #x0 - #x3 - #xffff - #xffff - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xcb - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #xdc - #xdd - #xde - #xe3 - #xe4 - #xffff - #xffff - #x5c - #x56 - #xffff - #xffff - #xf0 - #x2d - #x40 - #xf1 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x64 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xf2 - #xffff - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xf3 - #xf4 - #xf5 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xdf - #x0 - #x0 - #xffff - #xe5 - #xe6 - #x0 - #xea - #xeb - #xec - #x0 - #xf6 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #xffff - #xffff - #x0 - #x0 - #xffff - #xffff - #x0 - #x0 - #xffff - #xffff - #x0 - #x0 - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xe0 - #xe1 - #xffff - #xffff - #xe7 - #x0 - #xffff - #xffff - #xed - #x0 - #xffff - #xffff - #xf7 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xe2 - #xffff - #xffff - #x0 - #x0 - #xe8 - #xffff - #xe9 - #x0 - #x0 - #xee - #xef - #x0 - #xf8 - #xf9 - #x12 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xfa - #xfb - #xfc - #xfd - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xfe - #xffff - #xffff - #xffff - #x105 - #xb - #xffff - #xffff - #x0 - #x0 - #x4f - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xff - #x100 - #x0 - #x0 - #x106 - #x107 - #x0 - #x0 - #x10d - #x10e - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x101 - #xffff - #x0 - #x0 - #x0 - #xfa - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #x102 - #x108 - #xffff - #xffff - #x109 - #xfa - #x10f - #xffff - #xffff - #x0 - #x0 - #x114 - #x115 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x10a - #x0 - #x0 - #x10b - #xffff - #xffff - #x110 - #x111 - #xffff - #x116 - #xfd - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x103 - #x104 - #xc3 - #x0 - #xffff - #x10c - #x17 - #x0 - #x112 - #x113 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x0 - #x117 - #x0 - #x118 - #x0 - #x11a - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x119 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - ) - ) - ) + (new 'static + 'ocean-near-indices + :data + (new 'static + 'inline-array + ocean-near-index + 68 + (new 'static 'ocean-near-index) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x1 #xffff #xffff #x0 #x2 #xffff #xffff #x0 #x0 #x3 #xffff #x0 #x0 #x3 #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x4 + #x0 + #x5 + #xffff + #x6 + #x0 + #x7 + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x8 + #x9)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #xa #xb #x0 #x0 #x0 #x14 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #x15 + #xffff + #xffff + #xffff + #x0 + #x1a + #xffff + #xffff + #x0 + #x20 + #x21 + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xc #xd #xe #xf #xffff #xffff #x16 #x17 #xffff #x1b #x1c #x0 #x22 #x23 #x24 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x10 #x11 #x12 #x13 #x0 #x0 #x18 #x19 #x1d #x1e #x0 #x1f #x0 #x0 #x0 #x25)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x26 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x27 #x0 #x17 #x0 #x0 #x0 #x0 #x2b #x0 #x0 #x0 #x2e #x0 #x0 #x0 #x32)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #x0 + #x28 + #x29 + #x2a + #x2c + #x2d + #xffff + #xffff + #x2f + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x30 + #x31 + #xffff + #x33 + #x34 + #x35)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xb + #xffff + #xffff + #xffff + #x36 + #x37 + #xffff + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x38 #x0 #x0 #x0 #x38 #x0 #x0 #x0 #x48 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x19 + #xffff + #xffff + #xffff + #x4f + #x50 + #x51 + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #x3e + #x3f + #x40 + #x41 + #x49 + #x4a + #x4b + #x4c + #xffff + #xffff + #xffff + #x52)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #x39 + #x3a + #x2d + #xffff + #x42 + #x43 + #xffff + #xffff + #x4d + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x3b #x3c #xffff #xffff #xffff #x44 #x45 #x46 #xffff #xffff #x4e #x0 #xffff #xffff #x53 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x3d #x0 #x0 #x0 #x47 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x54 #xffff #x0 #x0 #x59 #xffff #x0 #x0 #x5c #x56 #x0 #x62 #x63 #x64)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x65 + #x66)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #x55 #x56 #xffff #xffff #x5a #x5b #xffff #xffff #x5d #x5e #x5f #x67 #x68 #x69 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #xffff #xffff #xffff #xffff #xffff #xffff #xffff #x60 #x60 #x60 #x61 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #x57 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x6a + #x6b + #xffff + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x58 #x0 #x0 #x0 #x3d #x0 #x0 #x0 #x3d #x0 #x0 #x0 #x3d #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x6c #xffff #xffff #x0 #x70 #xffff #xffff #x0 #x70 #xffff #xffff #x0 #x7e #x7f #x80)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x81 + #x82 + #x83)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #xffff #xffff #x6d #xffff #x71 #x72 #x17 #x77 #x78 #x79 #x7a #x0 #x0 #x84 #x85)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x6e #x41 #x6f #x0 #x73 #x74 #x75 #x76 #x7b #x7c #x7d #x17 #x86 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x87 #x88 #x0 #x0 #x8e #xffff #x0 #x0 #x91 #xffff #x0 #x0 #x95 #x96)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #x89 #x20 #x8a #xffff #x8f #x0 #x0 #xffff #x92 #x0 #x0 #xffff #x97 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x8b #x0 #x0 #x8c #x0 #x0 #x0 #x90 #x0 #x0 #x0 #x93 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #x8d #x0 #x0 #x66 #x0 #x0 #x0 #x94 #x0 #x0 #x0 #x98 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x20 #x0 #x0 #x0 #x9b #x0 #x0 #x0 #x0 #x0 #x9d #x9e #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x99 #x9a #x0 #x0 #x9c #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x9f #xa0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #xa1 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x79 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #xb2 #xb3 #xb4 #xb5)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #xb6 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #xab #xac #x0 #xb7 #xb8 #xb9)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #xa2 #xa3 #x0 #xa6 #xa7 #xffff #xad #xae #xaf #xffff #xba #xbb #xbc #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xa4 #xa5 #x0 #x0 #xffff #xffff #xa8 #x0 #xffff #xffff #xb0 #xb1 #xffff #xffff #xbd #xbe)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #xa9 #xaa #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #xbf #xc0 #xc1 #x0 #xcc #xffff #xffff #x0 #xd3 #xffff #xffff #xd8 #xd9 #xffff #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xc2 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #xc3 #x0 #x0 #xffff #xcd #x0 #x0 #xffff #xd4 #xc3 #x0 #xffff #xda #x12 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #xc4 #x0 #x0 #x70 #x3b #x0 #x0 #xffff #xffff #x0 #x0 #xffff #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #x0 + #xc5 + #xc6 + #xc7 + #xce + #xcf + #xd0 + #xd1 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xdb)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xc8 #xc9 #xca #xffff #xc2 #xffff #xffff #xffff #xd5 #xd6 #xd7 #xffff #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xd2 + #xffff + #xffff + #xffff + #x0 + #x3 + #xffff + #xffff + #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xcb #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #xdc #xdd #xde #xe3 #xe4 #xffff #xffff #x5c #x56 #xffff #xffff #xf0 #x2d #x40 #xf1)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #x64 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xf2 + #xffff + #xffff + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xf3 + #xf4 + #xf5)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #xdf #x0 #x0 #xffff #xe5 #xe6 #x0 #xea #xeb #xec #x0 #xf6 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #xffff #xffff #x0 #x0 #xffff #xffff #x0 #x0 #xffff #xffff #x0 #x0 #xffff #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xe0 + #xe1 + #xffff + #xffff + #xe7 + #x0 + #xffff + #xffff + #xed + #x0 + #xffff + #xffff + #xf7 + #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xe2 #xffff #xffff #x0 #x0 #xe8 #xffff #xe9 #x0 #x0 #xee #xef #x0 #xf8 #xf9 #x12)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xfa #xfb #xfc #xfd #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xfe #xffff #xffff #xffff #x105 #xb #xffff #xffff #x0 #x0 #x4f #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xff #x100 #x0 #x0 #x106 #x107 #x0 #x0 #x10d #x10e #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x101 #xffff #x0 #x0 #x0 #xfa #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #x102 + #x108 + #xffff + #xffff + #x109 + #xfa + #x10f + #xffff + #xffff + #x0 + #x0 + #x114 + #x115)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x10a #x0 #x0 #x10b #xffff #xffff #x110 #x111 #xffff #x116 #xfd #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x103 #x104 #xc3 #x0 #xffff #x10c #x17 #x0 #x112 #x113 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x0 #x117 #x0 #x118 #x0 #x11a #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x119 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0))))) (define *ocean-trans-indices-village1* - (new 'static 'ocean-trans-indices - :data - (new 'static 'inline-array ocean-trans-index 2304 - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent #x11b :child 1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent #x11c :child 2) - (new 'static 'ocean-trans-index :parent #x11d :child 3) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 4) - (new 'static 'ocean-trans-index :parent #x11e :child 5) - (new 'static 'ocean-trans-index :parent #x11f :child 6) - (new 'static 'ocean-trans-index :child 7) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 8) - (new 'static 'ocean-trans-index :child 9) - (new 'static 'ocean-trans-index :parent #x120 :child 10) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent #x121 :child 11) - (new 'static 'ocean-trans-index :parent 33 :child 12) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 13) - (new 'static 'ocean-trans-index :parent #x122 :child 14) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent #x123 :child 15) - (new 'static 'ocean-trans-index :parent #x124 :child 16) - (new 'static 'ocean-trans-index :parent #x125 :child 17) - (new 'static 'ocean-trans-index :child 18) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent #x126 :child 19) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent #x11d :child 20) - (new 'static 'ocean-trans-index :parent #x127 :child 21) - (new 'static 'ocean-trans-index :parent 71 :child 22) - (new 'static 'ocean-trans-index :parent #x128 :child 23) - (new 'static 'ocean-trans-index :child 24) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent #x129 :child 25) - (new 'static 'ocean-trans-index :parent #x12a :child 26) - (new 'static 'ocean-trans-index :parent #x12b :child 27) - (new 'static 'ocean-trans-index :child 28) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent #xc5 :child 29) - (new 'static 'ocean-trans-index :parent 6 :child 30) - (new 'static 'ocean-trans-index :child 31) - (new 'static 'ocean-trans-index :parent 23 :child 32) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 33) - (new 'static 'ocean-trans-index :child 34) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 35) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 36) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 37) - (new 'static 'ocean-trans-index :child 38) - (new 'static 'ocean-trans-index :child 39) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 40) - (new 'static 'ocean-trans-index :parent #x12c :child 41) - (new 'static 'ocean-trans-index :parent #x12d :child 42) - (new 'static 'ocean-trans-index :child 43) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent #x12e :child 44) - (new 'static 'ocean-trans-index :parent 45 :child 45) - (new 'static 'ocean-trans-index :parent 6 :child 46) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent #x8b :child 47) - (new 'static 'ocean-trans-index :parent #x12f :child 48) - (new 'static 'ocean-trans-index :parent #x130 :child 49) - (new 'static 'ocean-trans-index :parent #x131 :child 50) - (new 'static 'ocean-trans-index :child 51) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent #x132 :child 52) - (new 'static 'ocean-trans-index :parent #x133 :child 53) - (new 'static 'ocean-trans-index :parent #x12a :child 54) - (new 'static 'ocean-trans-index :parent 18 :child 55) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent 3 :child 56) - (new 'static 'ocean-trans-index :parent #x7c :child 57) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent #x134 :child 58) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 59) - (new 'static 'ocean-trans-index :parent #x69 :child 60) - (new 'static 'ocean-trans-index :child 61) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent 20 :child 62) - (new 'static 'ocean-trans-index :parent #x135 :child 63) - (new 'static 'ocean-trans-index :parent #x136 :child 64) - (new 'static 'ocean-trans-index :parent #x137 :child 65) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :child 66) - (new 'static 'ocean-trans-index :child 67) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - ) - ) - ) + (new 'static + 'ocean-trans-indices + :data + (new 'static + 'inline-array + ocean-trans-index + 2304 + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent #x11b :child 1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent #x11c :child 2) + (new 'static 'ocean-trans-index :parent #x11d :child 3) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 4) + (new 'static 'ocean-trans-index :parent #x11e :child 5) + (new 'static 'ocean-trans-index :parent #x11f :child 6) + (new 'static 'ocean-trans-index :child 7) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 8) + (new 'static 'ocean-trans-index :child 9) + (new 'static 'ocean-trans-index :parent #x120 :child 10) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent #x121 :child 11) + (new 'static 'ocean-trans-index :parent 33 :child 12) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 13) + (new 'static 'ocean-trans-index :parent #x122 :child 14) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent #x123 :child 15) + (new 'static 'ocean-trans-index :parent #x124 :child 16) + (new 'static 'ocean-trans-index :parent #x125 :child 17) + (new 'static 'ocean-trans-index :child 18) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent #x126 :child 19) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent #x11d :child 20) + (new 'static 'ocean-trans-index :parent #x127 :child 21) + (new 'static 'ocean-trans-index :parent 71 :child 22) + (new 'static 'ocean-trans-index :parent #x128 :child 23) + (new 'static 'ocean-trans-index :child 24) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent #x129 :child 25) + (new 'static 'ocean-trans-index :parent #x12a :child 26) + (new 'static 'ocean-trans-index :parent #x12b :child 27) + (new 'static 'ocean-trans-index :child 28) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent #xc5 :child 29) + (new 'static 'ocean-trans-index :parent 6 :child 30) + (new 'static 'ocean-trans-index :child 31) + (new 'static 'ocean-trans-index :parent 23 :child 32) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 33) + (new 'static 'ocean-trans-index :child 34) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 35) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 36) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 37) + (new 'static 'ocean-trans-index :child 38) + (new 'static 'ocean-trans-index :child 39) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 40) + (new 'static 'ocean-trans-index :parent #x12c :child 41) + (new 'static 'ocean-trans-index :parent #x12d :child 42) + (new 'static 'ocean-trans-index :child 43) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent #x12e :child 44) + (new 'static 'ocean-trans-index :parent 45 :child 45) + (new 'static 'ocean-trans-index :parent 6 :child 46) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent #x8b :child 47) + (new 'static 'ocean-trans-index :parent #x12f :child 48) + (new 'static 'ocean-trans-index :parent #x130 :child 49) + (new 'static 'ocean-trans-index :parent #x131 :child 50) + (new 'static 'ocean-trans-index :child 51) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent #x132 :child 52) + (new 'static 'ocean-trans-index :parent #x133 :child 53) + (new 'static 'ocean-trans-index :parent #x12a :child 54) + (new 'static 'ocean-trans-index :parent 18 :child 55) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent 3 :child 56) + (new 'static 'ocean-trans-index :parent #x7c :child 57) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent #x134 :child 58) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 59) + (new 'static 'ocean-trans-index :parent #x69 :child 60) + (new 'static 'ocean-trans-index :child 61) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent 20 :child 62) + (new 'static 'ocean-trans-index :parent #x135 :child 63) + (new 'static 'ocean-trans-index :parent #x136 :child 64) + (new 'static 'ocean-trans-index :parent #x137 :child 65) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :child 66) + (new 'static 'ocean-trans-index :child 67) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index)))) (define *ocean-mid-indices-village1* - (new 'static 'ocean-mid-indices - :data - (new 'static 'array uint16 36 - #x138 - #xffff - #x139 - #x13a - #x0 - #x0 - #x13b - #x13c - #x13d - #x13e - #x0 - #x0 - #x0 - #x0 - #x13f - #x140 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - ) + (new 'static + 'ocean-mid-indices + :data + (new 'static + 'array + uint16 + 36 + #x138 + #xffff + #x139 + #x13a + #x0 + #x0 + #x13b + #x13c + #x13d + #x13e + #x0 + #x0 + #x0 + #x0 + #x13f + #x140 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0))) (define *ocean-mid-masks-village1* - (new 'static 'ocean-mid-masks - :data - (new 'static 'inline-array ocean-mid-mask 322 - (new 'static 'ocean-mid-mask) - (new 'static 'ocean-mid-mask :dword #xfefefefefcf8f8f8) - (new 'static 'ocean-mid-mask :dword #x808080c0c0c0fe) - (new 'static 'ocean-mid-mask :dword #xfcfcfcfcfcfcfcfc) - (new 'static 'ocean-mid-mask :dword #x30303070f1f3fff) - (new 'static 'ocean-mid-mask :dword #xf0f0f8f8fcfefeff) - (new 'static 'ocean-mid-mask :dword #x101010101010101) - (new 'static 'ocean-mid-mask :dword #xf8f8f8f8f0f0f0f0) - (new 'static 'ocean-mid-mask :dword #x10103071fffffff) - (new 'static 'ocean-mid-mask :dword #xf0f8f8fcfeffffff) - (new 'static 'ocean-mid-mask :dword #x80c0e0f0f8fcfc) - (new 'static 'ocean-mid-mask :dword #xfeffffffffffffff) - (new 'static 'ocean-mid-mask :dword #xffffffffffff0f03) - (new 'static 'ocean-mid-mask :dword #xffffffffffff0000) - (new 'static 'ocean-mid-mask :dword #xfffffffffffffef8) - (new 'static 'ocean-mid-mask :dword #x101030f3fffffff) - (new 'static 'ocean-mid-mask :dword #xffffff) - (new 'static 'ocean-mid-mask :dword #x387cfeffffff) - (new 'static 'ocean-mid-mask :dword #x101) - (new 'static 'ocean-mid-mask :dword #xfefcfcf8f0f0f0f0) - (new 'static 'ocean-mid-mask :dword #xe0f8) - (new 'static 'ocean-mid-mask :dword #x80c0e0f0feffff) - (new 'static 'ocean-mid-mask :dword #x3f3f3f3f3f7fffff) - (new 'static 'ocean-mid-mask :dword #x1) - (new 'static 'ocean-mid-mask :dword #x8080808000) - (new 'static 'ocean-mid-mask :dword #xf8feffffffffffff) - (new 'static 'ocean-mid-mask :dword #xc0c0c0e0f0f8fcfe) - (new 'static 'ocean-mid-mask :dword #x3ffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x3c3f3f3f3f3f3f3f) - (new 'static 'ocean-mid-mask :dword #x80c0c0e0c08000) - (new 'static 'ocean-mid-mask :dword #xf1f1f1f1f1f0f00) - (new 'static 'ocean-mid-mask :dword #x80e0) - (new 'static 'ocean-mid-mask :dword #x80) - (new 'static 'ocean-mid-mask :dword #xf8fcfefcfeffff) - (new 'static 'ocean-mid-mask :dword #x1f1f1f3f3f7fffff) - (new 'static 'ocean-mid-mask :dword #x8000000000000001) - (new 'static 'ocean-mid-mask :dword #x301000000000038) - (new 'static 'ocean-mid-mask :dword #xe0c0c08080000000) - (new 'static 'ocean-mid-mask :dword #xe0f0fcff) - (new 'static 'ocean-mid-mask :dword #x70f0f0f) - (new 'static 'ocean-mid-mask :dword #xe000000000000000) - (new 'static 'ocean-mid-mask :dword #xff80000000000000) - (new 'static 'ocean-mid-mask :dword #xfffffefcf8f0f0e0) - (new 'static 'ocean-mid-mask :dword #x60600) - (new 'static 'ocean-mid-mask :dword #xf8f0e0c0c0800000) - (new 'static 'ocean-mid-mask :dword #xfffffffffffffffe) - (new 'static 'ocean-mid-mask :dword #xc080800000000000) - (new 'static 'ocean-mid-mask :dword #xfffffffffffefefc) - (new 'static 'ocean-mid-mask :dword #x31fffffffffffff) - (new 'static 'ocean-mid-mask :dword #xffffffffffff) - (new 'static 'ocean-mid-mask :dword #xf0f0f0e0e0e0e0c0) - (new 'static 'ocean-mid-mask :dword #x3071f1f1f3f7fff) - (new 'static 'ocean-mid-mask :dword #xfcf8e00000000001) - (new 'static 'ocean-mid-mask :dword #xffffff0f00000000) - (new 'static 'ocean-mid-mask :dword #x7f3f0000000000f8) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0fcfeffff) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0f0) - (new 'static 'ocean-mid-mask :dword #x7f7f7fffffffffff) - (new 'static 'ocean-mid-mask :dword #xf0e0e0c0c0800103) - (new 'static 'ocean-mid-mask :dword #xffffffffffffff7f) - (new 'static 'ocean-mid-mask :dword #x808080c0e0e0f0f0) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0f) - (new 'static 'ocean-mid-mask :dword #xf0f1f1f1f1f1f3f) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f8fe) - (new 'static 'ocean-mid-mask :dword #xc0ffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x3f3fffffffffffff) - (new 'static 'ocean-mid-mask :dword #xc080070f0f1f3f3f) - (new 'static 'ocean-mid-mask :dword #xfffffffefcfcf8f0) - (new 'static 'ocean-mid-mask :dword #x7f3f1f0f07030180) - (new 'static 'ocean-mid-mask :dword #x80e0e0f0ff) - (new 'static 'ocean-mid-mask :dword #x1f3f7fffffff) - (new 'static 'ocean-mid-mask :dword #xf0f) - (new 'static 'ocean-mid-mask :dword #x80c0e0f0f0) - (new 'static 'ocean-mid-mask :dword #xffff07070707070f) - (new 'static 'ocean-mid-mask :dword #xfffffefcf0000000) - (new 'static 'ocean-mid-mask :dword #xffffffff07000000) - (new 'static 'ocean-mid-mask :dword #x70703000000003e) - (new 'static 'ocean-mid-mask :dword #xfefefefefcf0f0e0) - (new 'static 'ocean-mid-mask :dword #xffffff7f3f1f0701) - (new 'static 'ocean-mid-mask :dword #xf0) - (new 'static 'ocean-mid-mask :dword #xc0fcffff) - (new 'static 'ocean-mid-mask :dword #xfcfcfeffffffffff) - (new 'static 'ocean-mid-mask :dword #xffffffffffffc707) - (new 'static 'ocean-mid-mask :dword #x7f3f3f3f3f3f3f7f) - (new 'static 'ocean-mid-mask :dword #xe0e0e0e0f0f8fcfc) - (new 'static 'ocean-mid-mask :dword #xf0f0fffffffffff) - (new 'static 'ocean-mid-mask :dword #xfefefeffffffffff) - (new 'static 'ocean-mid-mask :dword #xffffffffffff0f0f) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0000) - (new 'static 'ocean-mid-mask :dword #xf0f8f8e0e0e0e0e0) - (new 'static 'ocean-mid-mask :dword #x8787878707070707) - (new 'static 'ocean-mid-mask :dword #xfffffffffffffefe) - (new 'static 'ocean-mid-mask :dword #x80c0c0c0) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f070787) - (new 'static 'ocean-mid-mask :dword #xfefefefefeffffff) - (new 'static 'ocean-mid-mask :dword #x3ffffffff) - (new 'static 'ocean-mid-mask :dword #xffffffff) - (new 'static 'ocean-mid-mask :dword #x808080ffffffff) - (new 'static 'ocean-mid-mask :dword #x8c00000000000000) - (new 'static 'ocean-mid-mask :dword #xfffcf0c000000000) - (new 'static 'ocean-mid-mask :dword #xfffffffffffefefe) - (new 'static 'ocean-mid-mask :dword #xfffffffffffffff) - (new 'static 'ocean-mid-mask :dword #xffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x71f7fffffffff) - (new 'static 'ocean-mid-mask :dword #x107070f) - (new 'static 'ocean-mid-mask :dword #xfcfe) - (new 'static 'ocean-mid-mask :dword #x80c0e0f0fc) - (new 'static 'ocean-mid-mask :dword #xfcfeffffffffffff) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0fc) - (new 'static 'ocean-mid-mask :dword #x70fffffffffffff) - (new 'static 'ocean-mid-mask :dword #xf0feffffffffffff) - (new 'static 'ocean-mid-mask :dword #x1070f0f0f) - (new 'static 'ocean-mid-mask :dword #xe0e0e0e0e0e0e0e0) - (new 'static 'ocean-mid-mask :dword #x1f3f3f7fffffffff) - (new 'static 'ocean-mid-mask :dword #x187fffff) - (new 'static 'ocean-mid-mask :dword #xc0c0c0c0c0c0c0e0) - (new 'static 'ocean-mid-mask :dword #x73f3f3f3f3f3f3f) - (new 'static 'ocean-mid-mask :dword #xe0e0e0e0c0000000) - (new 'static 'ocean-mid-mask :dword #x101030301000000) - (new 'static 'ocean-mid-mask :dword #x70f0f1fffffffff) - (new 'static 'ocean-mid-mask :dword #x103070f) - (new 'static 'ocean-mid-mask :dword #x183c18000000) - (new 'static 'ocean-mid-mask :dword #xfcfcfcfcfcfcf8f0) - (new 'static 'ocean-mid-mask :dword #x3f3f3fffffffffff) - (new 'static 'ocean-mid-mask :dword #x303030303) - (new 'static 'ocean-mid-mask :dword #xc0) - (new 'static 'ocean-mid-mask :dword #x183870e0e0e0e0) - (new 'static 'ocean-mid-mask :dword #xf0f8fcffffffff) - (new 'static 'ocean-mid-mask :dword #x3cffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x7fffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x80ffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x3f3f3f3f3f3f7fff) - (new 'static 'ocean-mid-mask :dword #x303800000000) - (new 'static 'ocean-mid-mask :dword #xc0c0e0f0f0f8f8f8) - (new 'static 'ocean-mid-mask :dword #xff3f3f3f3f3f3f3f) - (new 'static 'ocean-mid-mask :dword #x8000000000000000) - (new 'static 'ocean-mid-mask :dword #xfffcf8e080000000) - (new 'static 'ocean-mid-mask :dword #x3f03010000000000) - (new 'static 'ocean-mid-mask :dword #xf1f) - (new 'static 'ocean-mid-mask :dword #xc0e0e0c0c0000) - (new 'static 'ocean-mid-mask :dword #xf0f0f0e0c0c0c0c0) - (new 'static 'ocean-mid-mask :dword #x10303030303) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0e0) - (new 'static 'ocean-mid-mask :dword #x3f7f7f7f7f7f7f7f) - (new 'static 'ocean-mid-mask :dword #xf8fcfcfcfefefefe) - (new 'static 'ocean-mid-mask :dword #xc0c0c0c0e0f0f0f0) - (new 'static 'ocean-mid-mask :dword #x3f3f3f3f3f3f3f3f) - (new 'static 'ocean-mid-mask :dword #xc0c0f0f0f0) - (new 'static 'ocean-mid-mask :dword #x1f1f1f3f1f1f1f00) - (new 'static 'ocean-mid-mask :dword #x80c0c0c0c0c0) - (new 'static 'ocean-mid-mask :dword #xc0f0ffffffffffff) - (new 'static 'ocean-mid-mask :dword #x1f1f1f3f3f3f3f3f) - (new 'static 'ocean-mid-mask :dword #xf1f1f) - (new 'static 'ocean-mid-mask :dword #x7efefeffffffff) - (new 'static 'ocean-mid-mask :dword #x70f1f1f) - (new 'static 'ocean-mid-mask :dword #x80c0c080000000) - (new 'static 'ocean-mid-mask :dword #x70f0f07000000) - (new 'static 'ocean-mid-mask :dword #xc000000000000000) - (new 'static 'ocean-mid-mask :dword #xf00000000000000) - (new 'static 'ocean-mid-mask :dword #x80f0f0f8fcfcf0e0) - (new 'static 'ocean-mid-mask :dword #x30f3f7f3f3f3f1f) - (new 'static 'ocean-mid-mask :dword #x40e04000000) - (new 'static 'ocean-mid-mask :dword #xfef0c00000000000) - (new 'static 'ocean-mid-mask :dword #xff8f878080800000) - (new 'static 'ocean-mid-mask :dword #xffffffff7f3f3f00) - (new 'static 'ocean-mid-mask :dword #x3f07000000000000) - (new 'static 'ocean-mid-mask :dword #x1e0c80c0c0e0e0c0) - (new 'static 'ocean-mid-mask :dword #xfefeffffffffffff) - (new 'static 'ocean-mid-mask :dword #x7f07070707070707) - (new 'static 'ocean-mid-mask :dword #x808080800000) - (new 'static 'ocean-mid-mask :dword #x70f1f1f0f0700) - (new 'static 'ocean-mid-mask :dword #xc0c0800000000000) - (new 'static 'ocean-mid-mask :dword #x7f7f7f7f7e3c3800) - (new 'static 'ocean-mid-mask :dword #x103810) - (new 'static 'ocean-mid-mask :dword #x3070787c7e1e) - (new 'static 'ocean-mid-mask :dword #xfcfcf8f0f0f8fcfc) - (new 'static 'ocean-mid-mask :dword #x7f7fffffffffffff) - (new 'static 'ocean-mid-mask :dword #x101010100) - (new 'static 'ocean-mid-mask :dword #xfcfcf8f0e0000000) - (new 'static 'ocean-mid-mask :dword #xffffffffff7c3800) - (new 'static 'ocean-mid-mask :dword #xffffffffe3c08000) - (new 'static 'ocean-mid-mask :dword #xffcfcf8f07070303) - (new 'static 'ocean-mid-mask :dword #x3f3f3f1f1f1f1f1f) - (new 'static 'ocean-mid-mask :dword #x2000000000000000) - (new 'static 'ocean-mid-mask :dword #xc0e0e0f0f0e0) - (new 'static 'ocean-mid-mask :dword #x101ffffff7f) - (new 'static 'ocean-mid-mask :dword #xfffcf8f0f0f0e000) - (new 'static 'ocean-mid-mask :dword #xffffffff03010100) - (new 'static 'ocean-mid-mask :dword #xfffffff1f8f8f8f8) - (new 'static 'ocean-mid-mask :dword #xffffff7f3f3f3f3f) - (new 'static 'ocean-mid-mask :dword #xff7f7f0000000000) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0e0c08000) - (new 'static 'ocean-mid-mask :dword #xffffffffffff0f07) - (new 'static 'ocean-mid-mask :dword #xffffffffff7f3c18) - (new 'static 'ocean-mid-mask :dword #xfffffffffffcfcfc) - (new 'static 'ocean-mid-mask :dword #x100000000000000) - (new 'static 'ocean-mid-mask :dword #x3e00000000000000) - (new 'static 'ocean-mid-mask :dword #xc0f0f8f870) - (new 'static 'ocean-mid-mask :dword #x80c0000000) - (new 'static 'ocean-mid-mask :dword #xe0e070703008080) - (new 'static 'ocean-mid-mask :dword #xfcf8f0f0f0ffffff) - (new 'static 'ocean-mid-mask :dword #xff0f0703070fffff) - (new 'static 'ocean-mid-mask :dword #xffffc0c0e0ffffff) - (new 'static 'ocean-mid-mask :dword #x1010101010101) - (new 'static 'ocean-mid-mask :dword #xe0e0e0e0e0e0f0f0) - (new 'static 'ocean-mid-mask :dword #x303010101010101) - (new 'static 'ocean-mid-mask :dword #xfffffffffffffffc) - (new 'static 'ocean-mid-mask :dword #xffffff7f3f1f0700) - (new 'static 'ocean-mid-mask :dword #xffffff0800000000) - (new 'static 'ocean-mid-mask :dword #xe3c3808000000000) - (new 'static 'ocean-mid-mask :dword #x3f3f3f3f3f3f7f7f) - (new 'static 'ocean-mid-mask :dword #x80e0f0f0f0f0f0) - (new 'static 'ocean-mid-mask :dword #xffff3f1f03030303) - (new 'static 'ocean-mid-mask :dword #x80c1ffffffffff) - (new 'static 'ocean-mid-mask :dword #x3c3fffffffffffff) - (new 'static 'ocean-mid-mask :dword #xf8fcffffffffffff) - (new 'static 'ocean-mid-mask :dword #xfefefc7800000000) - (new 'static 'ocean-mid-mask :dword #xffff800000000000) - (new 'static 'ocean-mid-mask :dword #x1f3f3f3f3fffffff) - (new 'static 'ocean-mid-mask :dword #x303030307073f7f) - (new 'static 'ocean-mid-mask :dword #xe0c0800000000000) - (new 'static 'ocean-mid-mask :dword #xffffff0000000000) - (new 'static 'ocean-mid-mask :dword #xffffff8000000000) - (new 'static 'ocean-mid-mask :dword #x1f1f1f1f1f1f1f1f) - (new 'static 'ocean-mid-mask :dword #x3fffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x1070707) - (new 'static 'ocean-mid-mask :dword #x8080c0c0e0e0e0) - (new 'static 'ocean-mid-mask :dword #xc080000000000000) - (new 'static 'ocean-mid-mask :dword #xfffffcf8f0f0f0e0) - (new 'static 'ocean-mid-mask :dword #xffffffffff3f1f1f) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f000000) - (new 'static 'ocean-mid-mask :dword #x307070f0f0f0f1f) - (new 'static 'ocean-mid-mask :dword #x80c0e0f0f8fcfe) - (new 'static 'ocean-mid-mask :dword #x707070707070707) - (new 'static 'ocean-mid-mask :dword #x30303070f1f7fff) - (new 'static 'ocean-mid-mask :dword #xff) - (new 'static 'ocean-mid-mask :dword #xf) - (new 'static 'ocean-mid-mask :dword #x303030707030303) - (new 'static 'ocean-mid-mask :dword #xfffffefcfcfcfcfc) - (new 'static 'ocean-mid-mask :dword #x101030303030303) - (new 'static 'ocean-mid-mask :dword #xe0e0e0c0c0800000) - (new 'static 'ocean-mid-mask :dword #xf1f3fffffffffff) - (new 'static 'ocean-mid-mask :dword #x8080c0ffffffffff) - (new 'static 'ocean-mid-mask :dword #x3f7fffffffffffff) - (new 'static 'ocean-mid-mask :dword #xc0ffffffffff) - (new 'static 'ocean-mid-mask :dword #x7fffffffffff) - (new 'static 'ocean-mid-mask :dword #x1030303) - (new 'static 'ocean-mid-mask :dword #xffff7f3f0f070303) - (new 'static 'ocean-mid-mask :dword #xc0c0) - (new 'static 'ocean-mid-mask :dword #x307effff) - (new 'static 'ocean-mid-mask :dword #x80c0) - (new 'static 'ocean-mid-mask :dword #xc1e3f3f7f7f) - (new 'static 'ocean-mid-mask :dword #x8080) - (new 'static 'ocean-mid-mask :dword #x10307) - (new 'static 'ocean-mid-mask :dword #xe0c0c0c080808080) - (new 'static 'ocean-mid-mask :dword #x307ffffffffffff) - (new 'static 'ocean-mid-mask :dword #x1e1f1f1f1f1f1f1f) - (new 'static 'ocean-mid-mask :dword #x80c0c0c0c0e0f0fc) - (new 'static 'ocean-mid-mask :dword #xf07030101010101) - (new 'static 'ocean-mid-mask :dword #xfffefcf0c0800000) - (new 'static 'ocean-mid-mask :dword #xff7f3f1f0f070600) - (new 'static 'ocean-mid-mask :dword #xe0f0f8fcfcfcfc) - (new 'static 'ocean-mid-mask :dword #x7f0f070301010101) - (new 'static 'ocean-mid-mask :dword #xc) - (new 'static 'ocean-mid-mask :dword #xe0f0f8fcfeffffff) - (new 'static 'ocean-mid-mask :dword #xffffff7f3f1f0f0f) - (new 'static 'ocean-mid-mask :dword #xfff3e10000000000) - (new 'static 'ocean-mid-mask :dword #xf0e0e0e0c0c08000) - (new 'static 'ocean-mid-mask :dword #x70f1f3f3f7fffff) - (new 'static 'ocean-mid-mask :dword #xc0fcfefe7f) - (new 'static 'ocean-mid-mask :dword #x101010000) - (new 'static 'ocean-mid-mask :dword #xc0f0f8fcfeffffff) - (new 'static 'ocean-mid-mask :dword #x707070701010100) - (new 'static 'ocean-mid-mask :dword #x80e0e0f0f0f0) - (new 'static 'ocean-mid-mask :dword #x73f7fffffff) - (new 'static 'ocean-mid-mask :dword #x103) - (new 'static 'ocean-mid-mask :dword #x8080e0f8) - (new 'static 'ocean-mid-mask :dword #xc0e0f8ffffffffff) - (new 'static 'ocean-mid-mask :dword #x30f3fffffffff) - (new 'static 'ocean-mid-mask :dword #x7e1c000000000000) - (new 'static 'ocean-mid-mask :dword #x40e0e0e0e0c0) - (new 'static 'ocean-mid-mask :dword #x307070703) - (new 'static 'ocean-mid-mask :dword #x1c7effffffff7e) - (new 'static 'ocean-mid-mask :dword #xfffffffff8f8fcfc) - (new 'static 'ocean-mid-mask :dword #xfffffffff8f8ffff) - (new 'static 'ocean-mid-mask :dword #xfffffffff3ffffff) - (new 'static 'ocean-mid-mask :dword #xfffffffff8fcfeff) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f1f3f0) - (new 'static 'ocean-mid-mask :dword #xfffffffffffefcf0) - (new 'static 'ocean-mid-mask :dword #xfffffffff1f3ffff) - (new 'static 'ocean-mid-mask :dword #xfffffffff8feffff) - (new 'static 'ocean-mid-mask :dword #xfffffffff7f0f0ff) - (new 'static 'ocean-mid-mask :dword #xfffffffffffefcf8) - (new 'static 'ocean-mid-mask :dword #xfffffffff3f3f1fc) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f8f8) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f1f9f9) - (new 'static 'ocean-mid-mask :dword #xfffffffffcfffff7) - (new 'static 'ocean-mid-mask :dword #xfffffffff0fcfcfc) - (new 'static 'ocean-mid-mask :dword #xfffffffff1ffffff) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f1f7) - (new 'static 'ocean-mid-mask :dword #xfffffffff8f8f8f0) - (new 'static 'ocean-mid-mask :dword #xfffffffff3f3f3f0) - (new 'static 'ocean-mid-mask :dword #xfffffffffcfcfcf0) - (new 'static 'ocean-mid-mask :dword #xfffffffff7fff0f0) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f8fef8) - (new 'static 'ocean-mid-mask :dword #xfffffffff6f7f7ff) - (new 'static 'ocean-mid-mask :dword #xfffffffff0fcfcf0) - (new 'static 'ocean-mid-mask :dword #xfffffffffefffffe) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f4f6) - (new 'static 'ocean-mid-mask :dword #xfffffffff0fcf6f7) - (new 'static 'ocean-mid-mask :dword #xfffffffff1f3f0f0) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f1f0) - (new 'static 'ocean-mid-mask :dword #xf0ffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x707078fffff7f7f) - (new 'static 'ocean-mid-mask :dword #x4) - (new 'static 'ocean-mid-mask :dword #x80c0c0c0c0) - (new 'static 'ocean-mid-mask :dword #x1031fffffff) - (new 'static 'ocean-mid-mask :dword #xf8f8f87879070707) - (new 'static 'ocean-mid-mask :dword #x1f1f1f1800000000) - (new 'static 'ocean-mid-mask :dword #x8080808090f8f8) - (new 'static 'ocean-mid-mask :dword #x103071f1f1f1f) - (new 'static 'ocean-mid-mask) - ) - ) - ) + (new 'static + 'ocean-mid-masks + :data + (new 'static + 'inline-array + ocean-mid-mask + 322 + (new 'static 'ocean-mid-mask) + (new 'static 'ocean-mid-mask :dword #xfefefefefcf8f8f8) + (new 'static 'ocean-mid-mask :dword #x808080c0c0c0fe) + (new 'static 'ocean-mid-mask :dword #xfcfcfcfcfcfcfcfc) + (new 'static 'ocean-mid-mask :dword #x30303070f1f3fff) + (new 'static 'ocean-mid-mask :dword #xf0f0f8f8fcfefeff) + (new 'static 'ocean-mid-mask :dword #x101010101010101) + (new 'static 'ocean-mid-mask :dword #xf8f8f8f8f0f0f0f0) + (new 'static 'ocean-mid-mask :dword #x10103071fffffff) + (new 'static 'ocean-mid-mask :dword #xf0f8f8fcfeffffff) + (new 'static 'ocean-mid-mask :dword #x80c0e0f0f8fcfc) + (new 'static 'ocean-mid-mask :dword #xfeffffffffffffff) + (new 'static 'ocean-mid-mask :dword #xffffffffffff0f03) + (new 'static 'ocean-mid-mask :dword #xffffffffffff0000) + (new 'static 'ocean-mid-mask :dword #xfffffffffffffef8) + (new 'static 'ocean-mid-mask :dword #x101030f3fffffff) + (new 'static 'ocean-mid-mask :dword #xffffff) + (new 'static 'ocean-mid-mask :dword #x387cfeffffff) + (new 'static 'ocean-mid-mask :dword #x101) + (new 'static 'ocean-mid-mask :dword #xfefcfcf8f0f0f0f0) + (new 'static 'ocean-mid-mask :dword #xe0f8) + (new 'static 'ocean-mid-mask :dword #x80c0e0f0feffff) + (new 'static 'ocean-mid-mask :dword #x3f3f3f3f3f7fffff) + (new 'static 'ocean-mid-mask :dword #x1) + (new 'static 'ocean-mid-mask :dword #x8080808000) + (new 'static 'ocean-mid-mask :dword #xf8feffffffffffff) + (new 'static 'ocean-mid-mask :dword #xc0c0c0e0f0f8fcfe) + (new 'static 'ocean-mid-mask :dword #x3ffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x3c3f3f3f3f3f3f3f) + (new 'static 'ocean-mid-mask :dword #x80c0c0e0c08000) + (new 'static 'ocean-mid-mask :dword #xf1f1f1f1f1f0f00) + (new 'static 'ocean-mid-mask :dword #x80e0) + (new 'static 'ocean-mid-mask :dword #x80) + (new 'static 'ocean-mid-mask :dword #xf8fcfefcfeffff) + (new 'static 'ocean-mid-mask :dword #x1f1f1f3f3f7fffff) + (new 'static 'ocean-mid-mask :dword #x8000000000000001) + (new 'static 'ocean-mid-mask :dword #x301000000000038) + (new 'static 'ocean-mid-mask :dword #xe0c0c08080000000) + (new 'static 'ocean-mid-mask :dword #xe0f0fcff) + (new 'static 'ocean-mid-mask :dword #x70f0f0f) + (new 'static 'ocean-mid-mask :dword #xe000000000000000) + (new 'static 'ocean-mid-mask :dword #xff80000000000000) + (new 'static 'ocean-mid-mask :dword #xfffffefcf8f0f0e0) + (new 'static 'ocean-mid-mask :dword #x60600) + (new 'static 'ocean-mid-mask :dword #xf8f0e0c0c0800000) + (new 'static 'ocean-mid-mask :dword #xfffffffffffffffe) + (new 'static 'ocean-mid-mask :dword #xc080800000000000) + (new 'static 'ocean-mid-mask :dword #xfffffffffffefefc) + (new 'static 'ocean-mid-mask :dword #x31fffffffffffff) + (new 'static 'ocean-mid-mask :dword #xffffffffffff) + (new 'static 'ocean-mid-mask :dword #xf0f0f0e0e0e0e0c0) + (new 'static 'ocean-mid-mask :dword #x3071f1f1f3f7fff) + (new 'static 'ocean-mid-mask :dword #xfcf8e00000000001) + (new 'static 'ocean-mid-mask :dword #xffffff0f00000000) + (new 'static 'ocean-mid-mask :dword #x7f3f0000000000f8) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0fcfeffff) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0f0) + (new 'static 'ocean-mid-mask :dword #x7f7f7fffffffffff) + (new 'static 'ocean-mid-mask :dword #xf0e0e0c0c0800103) + (new 'static 'ocean-mid-mask :dword #xffffffffffffff7f) + (new 'static 'ocean-mid-mask :dword #x808080c0e0e0f0f0) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0f) + (new 'static 'ocean-mid-mask :dword #xf0f1f1f1f1f1f3f) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f8fe) + (new 'static 'ocean-mid-mask :dword #xc0ffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x3f3fffffffffffff) + (new 'static 'ocean-mid-mask :dword #xc080070f0f1f3f3f) + (new 'static 'ocean-mid-mask :dword #xfffffffefcfcf8f0) + (new 'static 'ocean-mid-mask :dword #x7f3f1f0f07030180) + (new 'static 'ocean-mid-mask :dword #x80e0e0f0ff) + (new 'static 'ocean-mid-mask :dword #x1f3f7fffffff) + (new 'static 'ocean-mid-mask :dword #xf0f) + (new 'static 'ocean-mid-mask :dword #x80c0e0f0f0) + (new 'static 'ocean-mid-mask :dword #xffff07070707070f) + (new 'static 'ocean-mid-mask :dword #xfffffefcf0000000) + (new 'static 'ocean-mid-mask :dword #xffffffff07000000) + (new 'static 'ocean-mid-mask :dword #x70703000000003e) + (new 'static 'ocean-mid-mask :dword #xfefefefefcf0f0e0) + (new 'static 'ocean-mid-mask :dword #xffffff7f3f1f0701) + (new 'static 'ocean-mid-mask :dword #xf0) + (new 'static 'ocean-mid-mask :dword #xc0fcffff) + (new 'static 'ocean-mid-mask :dword #xfcfcfeffffffffff) + (new 'static 'ocean-mid-mask :dword #xffffffffffffc707) + (new 'static 'ocean-mid-mask :dword #x7f3f3f3f3f3f3f7f) + (new 'static 'ocean-mid-mask :dword #xe0e0e0e0f0f8fcfc) + (new 'static 'ocean-mid-mask :dword #xf0f0fffffffffff) + (new 'static 'ocean-mid-mask :dword #xfefefeffffffffff) + (new 'static 'ocean-mid-mask :dword #xffffffffffff0f0f) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0000) + (new 'static 'ocean-mid-mask :dword #xf0f8f8e0e0e0e0e0) + (new 'static 'ocean-mid-mask :dword #x8787878707070707) + (new 'static 'ocean-mid-mask :dword #xfffffffffffffefe) + (new 'static 'ocean-mid-mask :dword #x80c0c0c0) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f070787) + (new 'static 'ocean-mid-mask :dword #xfefefefefeffffff) + (new 'static 'ocean-mid-mask :dword #x3ffffffff) + (new 'static 'ocean-mid-mask :dword #xffffffff) + (new 'static 'ocean-mid-mask :dword #x808080ffffffff) + (new 'static 'ocean-mid-mask :dword #x8c00000000000000) + (new 'static 'ocean-mid-mask :dword #xfffcf0c000000000) + (new 'static 'ocean-mid-mask :dword #xfffffffffffefefe) + (new 'static 'ocean-mid-mask :dword #xfffffffffffffff) + (new 'static 'ocean-mid-mask :dword #xffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x71f7fffffffff) + (new 'static 'ocean-mid-mask :dword #x107070f) + (new 'static 'ocean-mid-mask :dword #xfcfe) + (new 'static 'ocean-mid-mask :dword #x80c0e0f0fc) + (new 'static 'ocean-mid-mask :dword #xfcfeffffffffffff) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0fc) + (new 'static 'ocean-mid-mask :dword #x70fffffffffffff) + (new 'static 'ocean-mid-mask :dword #xf0feffffffffffff) + (new 'static 'ocean-mid-mask :dword #x1070f0f0f) + (new 'static 'ocean-mid-mask :dword #xe0e0e0e0e0e0e0e0) + (new 'static 'ocean-mid-mask :dword #x1f3f3f7fffffffff) + (new 'static 'ocean-mid-mask :dword #x187fffff) + (new 'static 'ocean-mid-mask :dword #xc0c0c0c0c0c0c0e0) + (new 'static 'ocean-mid-mask :dword #x73f3f3f3f3f3f3f) + (new 'static 'ocean-mid-mask :dword #xe0e0e0e0c0000000) + (new 'static 'ocean-mid-mask :dword #x101030301000000) + (new 'static 'ocean-mid-mask :dword #x70f0f1fffffffff) + (new 'static 'ocean-mid-mask :dword #x103070f) + (new 'static 'ocean-mid-mask :dword #x183c18000000) + (new 'static 'ocean-mid-mask :dword #xfcfcfcfcfcfcf8f0) + (new 'static 'ocean-mid-mask :dword #x3f3f3fffffffffff) + (new 'static 'ocean-mid-mask :dword #x303030303) + (new 'static 'ocean-mid-mask :dword #xc0) + (new 'static 'ocean-mid-mask :dword #x183870e0e0e0e0) + (new 'static 'ocean-mid-mask :dword #xf0f8fcffffffff) + (new 'static 'ocean-mid-mask :dword #x3cffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x7fffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x80ffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x3f3f3f3f3f3f7fff) + (new 'static 'ocean-mid-mask :dword #x303800000000) + (new 'static 'ocean-mid-mask :dword #xc0c0e0f0f0f8f8f8) + (new 'static 'ocean-mid-mask :dword #xff3f3f3f3f3f3f3f) + (new 'static 'ocean-mid-mask :dword #x8000000000000000) + (new 'static 'ocean-mid-mask :dword #xfffcf8e080000000) + (new 'static 'ocean-mid-mask :dword #x3f03010000000000) + (new 'static 'ocean-mid-mask :dword #xf1f) + (new 'static 'ocean-mid-mask :dword #xc0e0e0c0c0000) + (new 'static 'ocean-mid-mask :dword #xf0f0f0e0c0c0c0c0) + (new 'static 'ocean-mid-mask :dword #x10303030303) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0e0) + (new 'static 'ocean-mid-mask :dword #x3f7f7f7f7f7f7f7f) + (new 'static 'ocean-mid-mask :dword #xf8fcfcfcfefefefe) + (new 'static 'ocean-mid-mask :dword #xc0c0c0c0e0f0f0f0) + (new 'static 'ocean-mid-mask :dword #x3f3f3f3f3f3f3f3f) + (new 'static 'ocean-mid-mask :dword #xc0c0f0f0f0) + (new 'static 'ocean-mid-mask :dword #x1f1f1f3f1f1f1f00) + (new 'static 'ocean-mid-mask :dword #x80c0c0c0c0c0) + (new 'static 'ocean-mid-mask :dword #xc0f0ffffffffffff) + (new 'static 'ocean-mid-mask :dword #x1f1f1f3f3f3f3f3f) + (new 'static 'ocean-mid-mask :dword #xf1f1f) + (new 'static 'ocean-mid-mask :dword #x7efefeffffffff) + (new 'static 'ocean-mid-mask :dword #x70f1f1f) + (new 'static 'ocean-mid-mask :dword #x80c0c080000000) + (new 'static 'ocean-mid-mask :dword #x70f0f07000000) + (new 'static 'ocean-mid-mask :dword #xc000000000000000) + (new 'static 'ocean-mid-mask :dword #xf00000000000000) + (new 'static 'ocean-mid-mask :dword #x80f0f0f8fcfcf0e0) + (new 'static 'ocean-mid-mask :dword #x30f3f7f3f3f3f1f) + (new 'static 'ocean-mid-mask :dword #x40e04000000) + (new 'static 'ocean-mid-mask :dword #xfef0c00000000000) + (new 'static 'ocean-mid-mask :dword #xff8f878080800000) + (new 'static 'ocean-mid-mask :dword #xffffffff7f3f3f00) + (new 'static 'ocean-mid-mask :dword #x3f07000000000000) + (new 'static 'ocean-mid-mask :dword #x1e0c80c0c0e0e0c0) + (new 'static 'ocean-mid-mask :dword #xfefeffffffffffff) + (new 'static 'ocean-mid-mask :dword #x7f07070707070707) + (new 'static 'ocean-mid-mask :dword #x808080800000) + (new 'static 'ocean-mid-mask :dword #x70f1f1f0f0700) + (new 'static 'ocean-mid-mask :dword #xc0c0800000000000) + (new 'static 'ocean-mid-mask :dword #x7f7f7f7f7e3c3800) + (new 'static 'ocean-mid-mask :dword #x103810) + (new 'static 'ocean-mid-mask :dword #x3070787c7e1e) + (new 'static 'ocean-mid-mask :dword #xfcfcf8f0f0f8fcfc) + (new 'static 'ocean-mid-mask :dword #x7f7fffffffffffff) + (new 'static 'ocean-mid-mask :dword #x101010100) + (new 'static 'ocean-mid-mask :dword #xfcfcf8f0e0000000) + (new 'static 'ocean-mid-mask :dword #xffffffffff7c3800) + (new 'static 'ocean-mid-mask :dword #xffffffffe3c08000) + (new 'static 'ocean-mid-mask :dword #xffcfcf8f07070303) + (new 'static 'ocean-mid-mask :dword #x3f3f3f1f1f1f1f1f) + (new 'static 'ocean-mid-mask :dword #x2000000000000000) + (new 'static 'ocean-mid-mask :dword #xc0e0e0f0f0e0) + (new 'static 'ocean-mid-mask :dword #x101ffffff7f) + (new 'static 'ocean-mid-mask :dword #xfffcf8f0f0f0e000) + (new 'static 'ocean-mid-mask :dword #xffffffff03010100) + (new 'static 'ocean-mid-mask :dword #xfffffff1f8f8f8f8) + (new 'static 'ocean-mid-mask :dword #xffffff7f3f3f3f3f) + (new 'static 'ocean-mid-mask :dword #xff7f7f0000000000) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0e0c08000) + (new 'static 'ocean-mid-mask :dword #xffffffffffff0f07) + (new 'static 'ocean-mid-mask :dword #xffffffffff7f3c18) + (new 'static 'ocean-mid-mask :dword #xfffffffffffcfcfc) + (new 'static 'ocean-mid-mask :dword #x100000000000000) + (new 'static 'ocean-mid-mask :dword #x3e00000000000000) + (new 'static 'ocean-mid-mask :dword #xc0f0f8f870) + (new 'static 'ocean-mid-mask :dword #x80c0000000) + (new 'static 'ocean-mid-mask :dword #xe0e070703008080) + (new 'static 'ocean-mid-mask :dword #xfcf8f0f0f0ffffff) + (new 'static 'ocean-mid-mask :dword #xff0f0703070fffff) + (new 'static 'ocean-mid-mask :dword #xffffc0c0e0ffffff) + (new 'static 'ocean-mid-mask :dword #x1010101010101) + (new 'static 'ocean-mid-mask :dword #xe0e0e0e0e0e0f0f0) + (new 'static 'ocean-mid-mask :dword #x303010101010101) + (new 'static 'ocean-mid-mask :dword #xfffffffffffffffc) + (new 'static 'ocean-mid-mask :dword #xffffff7f3f1f0700) + (new 'static 'ocean-mid-mask :dword #xffffff0800000000) + (new 'static 'ocean-mid-mask :dword #xe3c3808000000000) + (new 'static 'ocean-mid-mask :dword #x3f3f3f3f3f3f7f7f) + (new 'static 'ocean-mid-mask :dword #x80e0f0f0f0f0f0) + (new 'static 'ocean-mid-mask :dword #xffff3f1f03030303) + (new 'static 'ocean-mid-mask :dword #x80c1ffffffffff) + (new 'static 'ocean-mid-mask :dword #x3c3fffffffffffff) + (new 'static 'ocean-mid-mask :dword #xf8fcffffffffffff) + (new 'static 'ocean-mid-mask :dword #xfefefc7800000000) + (new 'static 'ocean-mid-mask :dword #xffff800000000000) + (new 'static 'ocean-mid-mask :dword #x1f3f3f3f3fffffff) + (new 'static 'ocean-mid-mask :dword #x303030307073f7f) + (new 'static 'ocean-mid-mask :dword #xe0c0800000000000) + (new 'static 'ocean-mid-mask :dword #xffffff0000000000) + (new 'static 'ocean-mid-mask :dword #xffffff8000000000) + (new 'static 'ocean-mid-mask :dword #x1f1f1f1f1f1f1f1f) + (new 'static 'ocean-mid-mask :dword #x3fffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x1070707) + (new 'static 'ocean-mid-mask :dword #x8080c0c0e0e0e0) + (new 'static 'ocean-mid-mask :dword #xc080000000000000) + (new 'static 'ocean-mid-mask :dword #xfffffcf8f0f0f0e0) + (new 'static 'ocean-mid-mask :dword #xffffffffff3f1f1f) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f000000) + (new 'static 'ocean-mid-mask :dword #x307070f0f0f0f1f) + (new 'static 'ocean-mid-mask :dword #x80c0e0f0f8fcfe) + (new 'static 'ocean-mid-mask :dword #x707070707070707) + (new 'static 'ocean-mid-mask :dword #x30303070f1f7fff) + (new 'static 'ocean-mid-mask :dword #xff) + (new 'static 'ocean-mid-mask :dword #xf) + (new 'static 'ocean-mid-mask :dword #x303030707030303) + (new 'static 'ocean-mid-mask :dword #xfffffefcfcfcfcfc) + (new 'static 'ocean-mid-mask :dword #x101030303030303) + (new 'static 'ocean-mid-mask :dword #xe0e0e0c0c0800000) + (new 'static 'ocean-mid-mask :dword #xf1f3fffffffffff) + (new 'static 'ocean-mid-mask :dword #x8080c0ffffffffff) + (new 'static 'ocean-mid-mask :dword #x3f7fffffffffffff) + (new 'static 'ocean-mid-mask :dword #xc0ffffffffff) + (new 'static 'ocean-mid-mask :dword #x7fffffffffff) + (new 'static 'ocean-mid-mask :dword #x1030303) + (new 'static 'ocean-mid-mask :dword #xffff7f3f0f070303) + (new 'static 'ocean-mid-mask :dword #xc0c0) + (new 'static 'ocean-mid-mask :dword #x307effff) + (new 'static 'ocean-mid-mask :dword #x80c0) + (new 'static 'ocean-mid-mask :dword #xc1e3f3f7f7f) + (new 'static 'ocean-mid-mask :dword #x8080) + (new 'static 'ocean-mid-mask :dword #x10307) + (new 'static 'ocean-mid-mask :dword #xe0c0c0c080808080) + (new 'static 'ocean-mid-mask :dword #x307ffffffffffff) + (new 'static 'ocean-mid-mask :dword #x1e1f1f1f1f1f1f1f) + (new 'static 'ocean-mid-mask :dword #x80c0c0c0c0e0f0fc) + (new 'static 'ocean-mid-mask :dword #xf07030101010101) + (new 'static 'ocean-mid-mask :dword #xfffefcf0c0800000) + (new 'static 'ocean-mid-mask :dword #xff7f3f1f0f070600) + (new 'static 'ocean-mid-mask :dword #xe0f0f8fcfcfcfc) + (new 'static 'ocean-mid-mask :dword #x7f0f070301010101) + (new 'static 'ocean-mid-mask :dword #xc) + (new 'static 'ocean-mid-mask :dword #xe0f0f8fcfeffffff) + (new 'static 'ocean-mid-mask :dword #xffffff7f3f1f0f0f) + (new 'static 'ocean-mid-mask :dword #xfff3e10000000000) + (new 'static 'ocean-mid-mask :dword #xf0e0e0e0c0c08000) + (new 'static 'ocean-mid-mask :dword #x70f1f3f3f7fffff) + (new 'static 'ocean-mid-mask :dword #xc0fcfefe7f) + (new 'static 'ocean-mid-mask :dword #x101010000) + (new 'static 'ocean-mid-mask :dword #xc0f0f8fcfeffffff) + (new 'static 'ocean-mid-mask :dword #x707070701010100) + (new 'static 'ocean-mid-mask :dword #x80e0e0f0f0f0) + (new 'static 'ocean-mid-mask :dword #x73f7fffffff) + (new 'static 'ocean-mid-mask :dword #x103) + (new 'static 'ocean-mid-mask :dword #x8080e0f8) + (new 'static 'ocean-mid-mask :dword #xc0e0f8ffffffffff) + (new 'static 'ocean-mid-mask :dword #x30f3fffffffff) + (new 'static 'ocean-mid-mask :dword #x7e1c000000000000) + (new 'static 'ocean-mid-mask :dword #x40e0e0e0e0c0) + (new 'static 'ocean-mid-mask :dword #x307070703) + (new 'static 'ocean-mid-mask :dword #x1c7effffffff7e) + (new 'static 'ocean-mid-mask :dword #xfffffffff8f8fcfc) + (new 'static 'ocean-mid-mask :dword #xfffffffff8f8ffff) + (new 'static 'ocean-mid-mask :dword #xfffffffff3ffffff) + (new 'static 'ocean-mid-mask :dword #xfffffffff8fcfeff) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f1f3f0) + (new 'static 'ocean-mid-mask :dword #xfffffffffffefcf0) + (new 'static 'ocean-mid-mask :dword #xfffffffff1f3ffff) + (new 'static 'ocean-mid-mask :dword #xfffffffff8feffff) + (new 'static 'ocean-mid-mask :dword #xfffffffff7f0f0ff) + (new 'static 'ocean-mid-mask :dword #xfffffffffffefcf8) + (new 'static 'ocean-mid-mask :dword #xfffffffff3f3f1fc) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f8f8) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f1f9f9) + (new 'static 'ocean-mid-mask :dword #xfffffffffcfffff7) + (new 'static 'ocean-mid-mask :dword #xfffffffff0fcfcfc) + (new 'static 'ocean-mid-mask :dword #xfffffffff1ffffff) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f1f7) + (new 'static 'ocean-mid-mask :dword #xfffffffff8f8f8f0) + (new 'static 'ocean-mid-mask :dword #xfffffffff3f3f3f0) + (new 'static 'ocean-mid-mask :dword #xfffffffffcfcfcf0) + (new 'static 'ocean-mid-mask :dword #xfffffffff7fff0f0) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f8fef8) + (new 'static 'ocean-mid-mask :dword #xfffffffff6f7f7ff) + (new 'static 'ocean-mid-mask :dword #xfffffffff0fcfcf0) + (new 'static 'ocean-mid-mask :dword #xfffffffffefffffe) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f4f6) + (new 'static 'ocean-mid-mask :dword #xfffffffff0fcf6f7) + (new 'static 'ocean-mid-mask :dword #xfffffffff1f3f0f0) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f1f0) + (new 'static 'ocean-mid-mask :dword #xf0ffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x707078fffff7f7f) + (new 'static 'ocean-mid-mask :dword #x4) + (new 'static 'ocean-mid-mask :dword #x80c0c0c0c0) + (new 'static 'ocean-mid-mask :dword #x1031fffffff) + (new 'static 'ocean-mid-mask :dword #xf8f8f87879070707) + (new 'static 'ocean-mid-mask :dword #x1f1f1f1800000000) + (new 'static 'ocean-mid-mask :dword #x8080808090f8f8) + (new 'static 'ocean-mid-mask :dword #x103071f1f1f1f) + (new 'static 'ocean-mid-mask)))) (define *ocean-spheres-village2* - (new 'static 'ocean-spheres - :spheres - (new 'static 'inline-array sphere 36 - (new 'static 'sphere :x -6320128.0 :z -14385152.0 :w 2224365.5) - (new 'static 'sphere :x -3174400.0 :z -14385152.0 :w 2224365.5) - (new 'static 'sphere :x -28672.0 :z -14385152.0 :w 2224365.5) - (new 'static 'sphere :x 3117056.0 :z -14385152.0 :w 2224365.5) - (new 'static 'sphere :x 6262784.0 :z -14385152.0 :w 2224365.5) - (new 'static 'sphere :x 9408512.0 :z -14385152.0 :w 2224365.5) - (new 'static 'sphere :x -6320128.0 :z -11239424.0 :w 2224365.5) - (new 'static 'sphere :x -3174400.0 :z -11239424.0 :w 2224365.5) - (new 'static 'sphere :x -28672.0 :z -11239424.0 :w 2224365.5) - (new 'static 'sphere :x 3117056.0 :z -11239424.0 :w 2224365.5) - (new 'static 'sphere :x 6262784.0 :z -11239424.0 :w 2224365.5) - (new 'static 'sphere :x 9408512.0 :z -11239424.0 :w 2224365.5) - (new 'static 'sphere :x -6320128.0 :z -8093696.0 :w 2224365.5) - (new 'static 'sphere :x -3174400.0 :z -8093696.0 :w 2224365.5) - (new 'static 'sphere :x -28672.0 :z -8093696.0 :w 2224365.5) - (new 'static 'sphere :x 3117056.0 :z -8093696.0 :w 2224365.5) - (new 'static 'sphere :x 6262784.0 :z -8093696.0 :w 2224365.5) - (new 'static 'sphere :x 9408512.0 :z -8093696.0 :w 2224365.5) - (new 'static 'sphere :x -6320128.0 :z -4947968.0 :w 2224365.5) - (new 'static 'sphere :x -3174400.0 :z -4947968.0 :w 2224365.5) - (new 'static 'sphere :x -28672.0 :z -4947968.0 :w 2224365.5) - (new 'static 'sphere :x 3117056.0 :z -4947968.0 :w 2224365.5) - (new 'static 'sphere :x 6262784.0 :z -4947968.0 :w 2224365.5) - (new 'static 'sphere :x 9408512.0 :z -4947968.0 :w 2224365.5) - (new 'static 'sphere :x -6320128.0 :z -1802240.0 :w 2224365.5) - (new 'static 'sphere :x -3174400.0 :z -1802240.0 :w 2224365.5) - (new 'static 'sphere :x -28672.0 :z -1802240.0 :w 2224365.5) - (new 'static 'sphere :x 3117056.0 :z -1802240.0 :w 2224365.5) - (new 'static 'sphere :x 6262784.0 :z -1802240.0 :w 2224365.5) - (new 'static 'sphere :x 9408512.0 :z -1802240.0 :w 2224365.5) - (new 'static 'sphere :x -6320128.0 :z 1343488.0 :w 2224365.5) - (new 'static 'sphere :x -3174400.0 :z 1343488.0 :w 2224365.5) - (new 'static 'sphere :x -28672.0 :z 1343488.0 :w 2224365.5) - (new 'static 'sphere :x 3117056.0 :z 1343488.0 :w 2224365.5) - (new 'static 'sphere :x 6262784.0 :z 1343488.0 :w 2224365.5) - (new 'static 'sphere :x 9408512.0 :z 1343488.0 :w 2224365.5) - ) - ) - ) + (new 'static + 'ocean-spheres + :spheres + (new 'static + 'inline-array + sphere + 36 + (new 'static 'sphere :x -6320128.0 :z -14385152.0 :w 2224365.5) + (new 'static 'sphere :x -3174400.0 :z -14385152.0 :w 2224365.5) + (new 'static 'sphere :x -28672.0 :z -14385152.0 :w 2224365.5) + (new 'static 'sphere :x 3117056.0 :z -14385152.0 :w 2224365.5) + (new 'static 'sphere :x 6262784.0 :z -14385152.0 :w 2224365.5) + (new 'static 'sphere :x 9408512.0 :z -14385152.0 :w 2224365.5) + (new 'static 'sphere :x -6320128.0 :z -11239424.0 :w 2224365.5) + (new 'static 'sphere :x -3174400.0 :z -11239424.0 :w 2224365.5) + (new 'static 'sphere :x -28672.0 :z -11239424.0 :w 2224365.5) + (new 'static 'sphere :x 3117056.0 :z -11239424.0 :w 2224365.5) + (new 'static 'sphere :x 6262784.0 :z -11239424.0 :w 2224365.5) + (new 'static 'sphere :x 9408512.0 :z -11239424.0 :w 2224365.5) + (new 'static 'sphere :x -6320128.0 :z -8093696.0 :w 2224365.5) + (new 'static 'sphere :x -3174400.0 :z -8093696.0 :w 2224365.5) + (new 'static 'sphere :x -28672.0 :z -8093696.0 :w 2224365.5) + (new 'static 'sphere :x 3117056.0 :z -8093696.0 :w 2224365.5) + (new 'static 'sphere :x 6262784.0 :z -8093696.0 :w 2224365.5) + (new 'static 'sphere :x 9408512.0 :z -8093696.0 :w 2224365.5) + (new 'static 'sphere :x -6320128.0 :z -4947968.0 :w 2224365.5) + (new 'static 'sphere :x -3174400.0 :z -4947968.0 :w 2224365.5) + (new 'static 'sphere :x -28672.0 :z -4947968.0 :w 2224365.5) + (new 'static 'sphere :x 3117056.0 :z -4947968.0 :w 2224365.5) + (new 'static 'sphere :x 6262784.0 :z -4947968.0 :w 2224365.5) + (new 'static 'sphere :x 9408512.0 :z -4947968.0 :w 2224365.5) + (new 'static 'sphere :x -6320128.0 :z -1802240.0 :w 2224365.5) + (new 'static 'sphere :x -3174400.0 :z -1802240.0 :w 2224365.5) + (new 'static 'sphere :x -28672.0 :z -1802240.0 :w 2224365.5) + (new 'static 'sphere :x 3117056.0 :z -1802240.0 :w 2224365.5) + (new 'static 'sphere :x 6262784.0 :z -1802240.0 :w 2224365.5) + (new 'static 'sphere :x 9408512.0 :z -1802240.0 :w 2224365.5) + (new 'static 'sphere :x -6320128.0 :z 1343488.0 :w 2224365.5) + (new 'static 'sphere :x -3174400.0 :z 1343488.0 :w 2224365.5) + (new 'static 'sphere :x -28672.0 :z 1343488.0 :w 2224365.5) + (new 'static 'sphere :x 3117056.0 :z 1343488.0 :w 2224365.5) + (new 'static 'sphere :x 6262784.0 :z 1343488.0 :w 2224365.5) + (new 'static 'sphere :x 9408512.0 :z 1343488.0 :w 2224365.5)))) (define *ocean-colors-village2* - (new 'static 'ocean-colors - :colors - (new 'static 'array rgba 2548 - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x3d :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x50 :a #x80) - (new 'static 'rgba :r #x23 :g #x47 :b #x4d :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x23 :g #x3f :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x3f :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x3e :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x3d :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x21 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #x23 :g #x3f :b #x4a :a #x80) - (new 'static 'rgba :r #x23 :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x23 :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #x22 :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x41 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x40 :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x3f :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x3d :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x3d :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x40 :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x42 :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x42 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x45 :b #x4b :a #x80) - (new 'static 'rgba :r #x1f :g #x45 :b #x4a :a #x80) - (new 'static 'rgba :r #x1f :g #x45 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x44 :b #x4c :a #x80) - (new 'static 'rgba :r #x20 :g #x44 :b #x4b :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x4b :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x4c :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x4d :a #x80) - (new 'static 'rgba :r #x20 :g #x48 :b #x4c :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x4b :a #x80) - (new 'static 'rgba :r #x1f :g #x43 :b #x4b :a #x80) - (new 'static 'rgba :r #x1f :g #x45 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x42 :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x42 :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x41 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x40 :b #x48 :a #x80) - (new 'static 'rgba :r #x21 :g #x3f :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x22 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x3a :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x41 :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x42 :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x43 :b #x4c :a #x80) - (new 'static 'rgba :r #x20 :g #x43 :b #x4b :a #x80) - (new 'static 'rgba :r #x1e :g #x44 :b #x4a :a #x80) - (new 'static 'rgba :r #x1e :g #x42 :b #x4a :a #x80) - (new 'static 'rgba :r #x1d :g #x42 :b #x49 :a #x80) - (new 'static 'rgba :r #x1d :g #x44 :b #x4a :a #x80) - (new 'static 'rgba :r #x1d :g #x44 :b #x4a :a #x80) - (new 'static 'rgba :r #x1d :g #x44 :b #x4b :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x4b :a #x80) - (new 'static 'rgba :r #x1c :g #x49 :b #x4d :a #x80) - (new 'static 'rgba :r #x1d :g #x4e :b #x4f :a #x80) - (new 'static 'rgba :r #x1d :g #x50 :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x50 :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x51 :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x20 :g #x51 :b #x52 :a #x80) - (new 'static 'rgba :r #x20 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x22 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x21 :g #x53 :b #x52 :a #x80) - (new 'static 'rgba :r #x20 :g #x50 :b #x52 :a #x80) - (new 'static 'rgba :r #x1f :g #x51 :b #x50 :a #x80) - (new 'static 'rgba :r #x1f :g #x4f :b #x51 :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x50 :a #x80) - (new 'static 'rgba :r #x1f :g #x50 :b #x52 :a #x80) - (new 'static 'rgba :r #x1f :g #x4e :b #x50 :a #x80) - (new 'static 'rgba :r #x1e :g #x4d :b #x4e :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x4e :a #x80) - (new 'static 'rgba :r #x21 :g #x44 :b #x4c :a #x80) - (new 'static 'rgba :r #x22 :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x3f :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #x23 :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #x23 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x21 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x31 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x1e :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x40 :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x41 :b #x4a :a #x80) - (new 'static 'rgba :r #x1f :g #x42 :b #x4a :a #x80) - (new 'static 'rgba :r #x1d :g #x45 :b #x4a :a #x80) - (new 'static 'rgba :r #x1b :g #x44 :b #x4a :a #x80) - (new 'static 'rgba :r #x1a :g #x44 :b #x49 :a #x80) - (new 'static 'rgba :r #x19 :g #x43 :b #x49 :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x48 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x4a :a #x80) - (new 'static 'rgba :r #x19 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x19 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x1b :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x1d :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x1e :g #x50 :b #x4b :a #x80) - (new 'static 'rgba :r #x1d :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x1f :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x20 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x23 :g #x54 :b #x50 :a #x80) - (new 'static 'rgba :r #x25 :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x54 :a #x80) - (new 'static 'rgba :r #x26 :g #x54 :b #x54 :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x53 :a #x80) - (new 'static 'rgba :r #x24 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x23 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x23 :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x23 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x20 :g #x52 :b #x4e :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x1d :g #x50 :b #x50 :a #x80) - (new 'static 'rgba :r #x1c :g #x4f :b #x4f :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x4e :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x44 :b #x4c :a #x80) - (new 'static 'rgba :r #x23 :g #x40 :b #x4b :a #x80) - (new 'static 'rgba :r #x23 :g #x3b :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x37 :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x1d :g #x3a :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x3d :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x1e :g #x41 :b #x48 :a #x80) - (new 'static 'rgba :r #x1b :g #x43 :b #x48 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x48 :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x47 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x47 :a #x80) - (new 'static 'rgba :r #x16 :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x15 :g #x47 :b #x46 :a #x80) - (new 'static 'rgba :r #x15 :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x17 :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x18 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x1b :g #x4e :b #x4b :a #x80) - (new 'static 'rgba :r #x1d :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x1d :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x1f :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x52 :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x53 :a #x80) - (new 'static 'rgba :r #x28 :g #x54 :b #x51 :a #x80) - (new 'static 'rgba :r #x28 :g #x54 :b #x54 :a #x80) - (new 'static 'rgba :r #x29 :g #x55 :b #x52 :a #x80) - (new 'static 'rgba :r #x29 :g #x55 :b #x53 :a #x80) - (new 'static 'rgba :r #x28 :g #x55 :b #x50 :a #x80) - (new 'static 'rgba :r #x28 :g #x55 :b #x50 :a #x80) - (new 'static 'rgba :r #x28 :g #x54 :b #x51 :a #x80) - (new 'static 'rgba :r #x27 :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x25 :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x23 :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x22 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x20 :g #x52 :b #x4e :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x1d :g #x4f :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x4e :a #x80) - (new 'static 'rgba :r #x22 :g #x44 :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x3f :b #x4c :a #x80) - (new 'static 'rgba :r #x22 :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #x25 :g #x51 :b #x53 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x37 :b #x43 :a #x80) - (new 'static 'rgba :r #x1e :g #x3b :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x3f :b #x48 :a #x80) - (new 'static 'rgba :r #x1d :g #x41 :b #x47 :a #x80) - (new 'static 'rgba :r #x1a :g #x43 :b #x47 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x47 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x47 :a #x80) - (new 'static 'rgba :r #x14 :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x12 :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x12 :g #x43 :b #x45 :a #x80) - (new 'static 'rgba :r #x12 :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x12 :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x14 :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x15 :g #x4a :b #x46 :a #x80) - (new 'static 'rgba :r #x18 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x1a :g #x4c :b #x47 :a #x80) - (new 'static 'rgba :r #x1c :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x1e :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x1e :g #x4e :b #x4b :a #x80) - (new 'static 'rgba :r #x20 :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x22 :g #x4d :b #x4e :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x28 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x29 :g #x54 :b #x53 :a #x80) - (new 'static 'rgba :r #x2b :g #x56 :b #x51 :a #x80) - (new 'static 'rgba :r #x29 :g #x53 :b #x50 :a #x80) - (new 'static 'rgba :r #x27 :g #x53 :b #x4e :a #x80) - (new 'static 'rgba :r #x27 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x27 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x28 :g #x52 :b #x50 :a #x80) - (new 'static 'rgba :r #x28 :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x27 :g #x51 :b #x52 :a #x80) - (new 'static 'rgba :r #x26 :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x23 :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x20 :g #x53 :b #x4e :a #x80) - (new 'static 'rgba :r #x1e :g #x52 :b #x4d :a #x80) - (new 'static 'rgba :r #x1c :g #x4f :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x4d :b #x4e :a #x80) - (new 'static 'rgba :r #x23 :g #x46 :b #x4e :a #x80) - (new 'static 'rgba :r #x23 :g #x3e :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x37 :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x38 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x3e :b #x46 :a #x80) - (new 'static 'rgba :r #x1d :g #x44 :b #x49 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x15 :g #x48 :b #x45 :a #x80) - (new 'static 'rgba :r #x13 :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x11 :g #x44 :b #x44 :a #x80) - (new 'static 'rgba :r #x10 :g #x43 :b #x43 :a #x80) - (new 'static 'rgba :r #xe :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x10 :g #x43 :b #x40 :a #x80) - (new 'static 'rgba :r #x1a :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x14 :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x16 :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x17 :g #x49 :b #x46 :a #x80) - (new 'static 'rgba :r #x18 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x19 :g #x4a :b #x46 :a #x80) - (new 'static 'rgba :r #x1d :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x4b :a #x80) - (new 'static 'rgba :r #x20 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x23 :g #x4e :b #x4b :a #x80) - (new 'static 'rgba :r #x24 :g #x4e :b #x4e :a #x80) - (new 'static 'rgba :r #x29 :g #x54 :b #x50 :a #x80) - (new 'static 'rgba :r #x31 :g #x59 :b #x54 :a #x80) - (new 'static 'rgba :r #x2f :g #x58 :b #x55 :a #x80) - (new 'static 'rgba :r #x29 :g #x54 :b #x51 :a #x80) - (new 'static 'rgba :r #x25 :g #x51 :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x27 :g #x52 :b #x50 :a #x80) - (new 'static 'rgba :r #x2b :g #x55 :b #x51 :a #x80) - (new 'static 'rgba :r #x29 :g #x53 :b #x52 :a #x80) - (new 'static 'rgba :r #x27 :g #x50 :b #x51 :a #x80) - (new 'static 'rgba :r #x24 :g #x4f :b #x4e :a #x80) - (new 'static 'rgba :r #x21 :g #x4e :b #x4f :a #x80) - (new 'static 'rgba :r #x20 :g #x51 :b #x4b :a #x80) - (new 'static 'rgba :r #x1c :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x1b :g #x4d :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x4f :a #x80) - (new 'static 'rgba :r #x23 :g #x43 :b #x4c :a #x80) - (new 'static 'rgba :r #x21 :g #x3c :b #x48 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x3a :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x46 :b #x4a :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x4d :a #x80) - (new 'static 'rgba :r #x18 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x16 :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x15 :g #x49 :b #x45 :a #x80) - (new 'static 'rgba :r #x14 :g #x49 :b #x45 :a #x80) - (new 'static 'rgba :r #x12 :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x10 :g #x43 :b #x40 :a #x80) - (new 'static 'rgba :r #xf :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x10 :g #x45 :b #x41 :a #x80) - (new 'static 'rgba :r #x12 :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x14 :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x16 :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x17 :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x18 :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x44 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x2e :g #x56 :b #x54 :a #x80) - (new 'static 'rgba :r #x2e :g #x55 :b #x52 :a #x80) - (new 'static 'rgba :r #x2b :g #x53 :b #x53 :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x4f :b #x48 :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x4c :a #x80) - (new 'static 'rgba :r #x2b :g #x55 :b #x51 :a #x80) - (new 'static 'rgba :r #x2b :g #x55 :b #x52 :a #x80) - (new 'static 'rgba :r #x27 :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x23 :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x22 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x1c :g #x4f :b #x4a :a #x80) - (new 'static 'rgba :r #x1a :g #x4f :b #x4a :a #x80) - (new 'static 'rgba :r #x1b :g #x4c :b #x4e :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x4d :a #x80) - (new 'static 'rgba :r #x22 :g #x3f :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x3c :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x4c :a #x80) - (new 'static 'rgba :r #x1c :g #x4d :b #x4e :a #x80) - (new 'static 'rgba :r #x19 :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x18 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x19 :g #x4c :b #x47 :a #x80) - (new 'static 'rgba :r #x17 :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x15 :g #x46 :b #x46 :a #x80) - (new 'static 'rgba :r #x12 :g #x45 :b #x41 :a #x80) - (new 'static 'rgba :r #x11 :g #x44 :b #x3f :a #x80) - (new 'static 'rgba :r #x12 :g #x44 :b #x41 :a #x80) - (new 'static 'rgba :r #x14 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x41 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x45 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x42 :a #x80) - (new 'static 'rgba :r #x1a :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x15 :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x2b :g #x53 :b #x52 :a #x80) - (new 'static 'rgba :r #x25 :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4f :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x22 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x1e :g #x4e :b #x49 :a #x80) - (new 'static 'rgba :r #x1a :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x1a :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x4d :a #x80) - (new 'static 'rgba :r #x21 :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x39 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x42 :b #x49 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x4c :a #x80) - (new 'static 'rgba :r #x1b :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x19 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x1a :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x46 :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x44 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x45 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x19 :g #x43 :b #x44 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x41 :a #x80) - (new 'static 'rgba :r #x1a :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x46 :a #x80) - (new 'static 'rgba :r #x27 :g #x52 :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4e :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x1e :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x1b :g #x4e :b #x49 :a #x80) - (new 'static 'rgba :r #x18 :g #x4e :b #x47 :a #x80) - (new 'static 'rgba :r #x1a :g #x4a :b #x4c :a #x80) - (new 'static 'rgba :r #x1f :g #x41 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x39 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x40 :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x4c :a #x80) - (new 'static 'rgba :r #x1d :g #x4d :b #x4d :a #x80) - (new 'static 'rgba :r #x1d :g #x4d :b #x4d :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x44 :a #x80) - (new 'static 'rgba :r #x1a :g #x47 :b #x43 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x1a :g #x44 :b #x43 :a #x80) - (new 'static 'rgba :r #x1a :g #x43 :b #x44 :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x19 :g #x43 :b #x44 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x43 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x19 :g #x42 :b #x43 :a #x80) - (new 'static 'rgba :r #x18 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x43 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x45 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x1b :g #x43 :b #x46 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x46 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x26 :g #x4d :b #x4d :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x21 :g #x4d :b #x48 :a #x80) - (new 'static 'rgba :r #x28 :g #x52 :b #x4c :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x4d :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x1c :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x19 :g #x4e :b #x4a :a #x80) - (new 'static 'rgba :r #x19 :g #x4b :b #x4c :a #x80) - (new 'static 'rgba :r #x1d :g #x45 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x31 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x3a :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x3e :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x4b :a #x80) - (new 'static 'rgba :r #x20 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x20 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x21 :g #x48 :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x1b :g #x44 :b #x45 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x43 :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x18 :g #x42 :b #x42 :a #x80) - (new 'static 'rgba :r #x17 :g #x42 :b #x3f :a #x80) - (new 'static 'rgba :r #x16 :g #x41 :b #x42 :a #x80) - (new 'static 'rgba :r #x14 :g #x40 :b #x41 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x42 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x42 :a #x80) - (new 'static 'rgba :r #x14 :g #x43 :b #x41 :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x41 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x1d :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x1c :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x1a :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x19 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x1c :g #x48 :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x40 :b #x49 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x39 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x41 :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x4c :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x51 :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x50 :a #x80) - (new 'static 'rgba :r #x25 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x4b :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x1a :g #x44 :b #x44 :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x42 :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x40 :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x41 :a #x80) - (new 'static 'rgba :r #x14 :g #x40 :b #x41 :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x3f :a #x80) - (new 'static 'rgba :r #x10 :g #x41 :b #x3c :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x3a :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3d :a #x80) - (new 'static 'rgba :r #xb :g #x3f :b #x3c :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x3d :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x40 :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x40 :a #x80) - (new 'static 'rgba :r #x18 :g #x43 :b #x43 :a #x80) - (new 'static 'rgba :r #x1a :g #x44 :b #x45 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x49 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x1d :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x1b :g #x4d :b #x48 :a #x80) - (new 'static 'rgba :r #x1a :g #x4e :b #x4b :a #x80) - (new 'static 'rgba :r #x1a :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x43 :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x4e :a #x80) - (new 'static 'rgba :r #x25 :g #x51 :b #x51 :a #x80) - (new 'static 'rgba :r #x27 :g #x51 :b #x52 :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x4f :a #x80) - (new 'static 'rgba :r #x27 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x28 :g #x4e :b #x4e :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x26 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x4c :a #x80) - (new 'static 'rgba :r #x23 :g #x4a :b #x4b :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x45 :a #x80) - (new 'static 'rgba :r #x17 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x14 :g #x42 :b #x3f :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x43 :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x40 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x3d :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #xa :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #x8 :g #x3c :b #x3a :a #x80) - (new 'static 'rgba :r #x7 :g #x3c :b #x38 :a #x80) - (new 'static 'rgba :r #x8 :g #x3d :b #x3b :a #x80) - (new 'static 'rgba :r #x9 :g #x3c :b #x3b :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3d :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x3c :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x3d :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x1b :g #x45 :b #x45 :a #x80) - (new 'static 'rgba :r #x1c :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x1e :g #x4b :b #x47 :a #x80) - (new 'static 'rgba :r #x1c :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x1a :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x19 :g #x49 :b #x4b :a #x80) - (new 'static 'rgba :r #x1f :g #x42 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x3d :b #x47 :a #x80) - (new 'static 'rgba :r #x23 :g #x45 :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4b :b #x50 :a #x80) - (new 'static 'rgba :r #x27 :g #x51 :b #x52 :a #x80) - (new 'static 'rgba :r #x2a :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x2a :g #x53 :b #x50 :a #x80) - (new 'static 'rgba :r #x2b :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x2b :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x4c :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x48 :b #x49 :a #x80) - (new 'static 'rgba :r #x1e :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x45 :a #x80) - (new 'static 'rgba :r #x17 :g #x44 :b #x43 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x40 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x3f :a #x80) - (new 'static 'rgba :r #xd :g #x3e :b #x3b :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #x7 :g #x3b :b #x3a :a #x80) - (new 'static 'rgba :r #x6 :g #x39 :b #x39 :a #x80) - (new 'static 'rgba :r #x5 :g #x38 :b #x37 :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x39 :a #x80) - (new 'static 'rgba :r #x6 :g #x37 :b #x38 :a #x80) - (new 'static 'rgba :r #x5 :g #x39 :b #x37 :a #x80) - (new 'static 'rgba :r #x6 :g #x3b :b #x36 :a #x80) - (new 'static 'rgba :r #x9 :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x3e :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x40 :a #x80) - (new 'static 'rgba :r #x1a :g #x44 :b #x44 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x1d :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x1a :g #x4e :b #x48 :a #x80) - (new 'static 'rgba :r #x1a :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x4c :a #x80) - (new 'static 'rgba :r #x21 :g #x3b :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #x24 :g #x4a :b #x4e :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x51 :a #x80) - (new 'static 'rgba :r #x2c :g #x56 :b #x54 :a #x80) - (new 'static 'rgba :r #x2f :g #x57 :b #x57 :a #x80) - (new 'static 'rgba :r #x2e :g #x56 :b #x52 :a #x80) - (new 'static 'rgba :r #x2c :g #x54 :b #x4f :a #x80) - (new 'static 'rgba :r #x2b :g #x52 :b #x4d :a #x80) - (new 'static 'rgba :r #x2c :g #x53 :b #x4e :a #x80) - (new 'static 'rgba :r #x2b :g #x53 :b #x4d :a #x80) - (new 'static 'rgba :r #x2c :g #x54 :b #x4f :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x41 :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x22 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x16 :g #x43 :b #x40 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x3e :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x3b :a #x80) - (new 'static 'rgba :r #xb :g #x3f :b #x3d :a #x80) - (new 'static 'rgba :r #x9 :g #x3d :b #x3a :a #x80) - (new 'static 'rgba :r #x7 :g #x3b :b #x3a :a #x80) - (new 'static 'rgba :r #x6 :g #x39 :b #x38 :a #x80) - (new 'static 'rgba :r #x6 :g #x34 :b #x36 :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x36 :a #x80) - (new 'static 'rgba :r #x5 :g #x32 :b #x36 :a #x80) - (new 'static 'rgba :r #x5 :g #x37 :b #x38 :a #x80) - (new 'static 'rgba :r #x6 :g #x3a :b #x3a :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x40 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x4d :b #x48 :a #x80) - (new 'static 'rgba :r #x21 :g #x4d :b #x4c :a #x80) - (new 'static 'rgba :r #x22 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x20 :g #x4f :b #x4e :a #x80) - (new 'static 'rgba :r #x1d :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x1b :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x4d :a #x80) - (new 'static 'rgba :r #x21 :g #x3f :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x21 :g #x41 :b #x49 :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x50 :a #x80) - (new 'static 'rgba :r #x2c :g #x55 :b #x55 :a #x80) - (new 'static 'rgba :r #x31 :g #x5a :b #x58 :a #x80) - (new 'static 'rgba :r #x31 :g #x5a :b #x57 :a #x80) - (new 'static 'rgba :r #x30 :g #x58 :b #x51 :a #x80) - (new 'static 'rgba :r #x2d :g #x54 :b #x4a :a #x80) - (new 'static 'rgba :r #x29 :g #x4f :b #x47 :a #x80) - (new 'static 'rgba :r #x29 :g #x50 :b #x47 :a #x80) - (new 'static 'rgba :r #x2a :g #x51 :b #x4c :a #x80) - (new 'static 'rgba :r #x2c :g #x52 :b #x4d :a #x80) - (new 'static 'rgba :r #x2a :g #x52 :b #x4a :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4b :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4b :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x16 :g #x44 :b #x41 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x3d :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x3b :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x3b :a #x80) - (new 'static 'rgba :r #x7 :g #x3c :b #x39 :a #x80) - (new 'static 'rgba :r #x6 :g #x39 :b #x37 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x37 :a #x80) - (new 'static 'rgba :r #x6 :g #x31 :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x2e :b #x34 :a #x80) - (new 'static 'rgba :r #x6 :g #x2e :b #x34 :a #x80) - (new 'static 'rgba :r #x6 :g #x30 :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x36 :a #x80) - (new 'static 'rgba :r #x6 :g #x39 :b #x36 :a #x80) - (new 'static 'rgba :r #x9 :g #x3d :b #x3b :a #x80) - (new 'static 'rgba :r #x11 :g #x40 :b #x3d :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x45 :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x4a :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x25 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x1f :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x1d :g #x50 :b #x50 :a #x80) - (new 'static 'rgba :r #x1e :g #x4c :b #x4e :a #x80) - (new 'static 'rgba :r #x22 :g #x43 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x41 :b #x49 :a #x80) - (new 'static 'rgba :r #x28 :g #x4b :b #x51 :a #x80) - (new 'static 'rgba :r #x2e :g #x56 :b #x58 :a #x80) - (new 'static 'rgba :r #x33 :g #x5a :b #x59 :a #x80) - (new 'static 'rgba :r #x33 :g #x59 :b #x53 :a #x80) - (new 'static 'rgba :r #x2f :g #x56 :b #x4a :a #x80) - (new 'static 'rgba :r #x29 :g #x4d :b #x3e :a #x80) - (new 'static 'rgba :r #x25 :g #x49 :b #x3a :a #x80) - (new 'static 'rgba :r #x24 :g #x49 :b #x3c :a #x80) - (new 'static 'rgba :r #x26 :g #x4b :b #x3f :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x3e :a #x80) - (new 'static 'rgba :r #x23 :g #x4a :b #x3e :a #x80) - (new 'static 'rgba :r #x24 :g #x4a :b #x42 :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x46 :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x16 :g #x40 :b #x41 :a #x80) - (new 'static 'rgba :r #x17 :g #x44 :b #x44 :a #x80) - (new 'static 'rgba :r #x10 :g #x41 :b #x3d :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x3e :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x3b :a #x80) - (new 'static 'rgba :r #x7 :g #x3a :b #x3a :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x39 :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x36 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x2f :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x2b :b #x32 :a #x80) - (new 'static 'rgba :r #x7 :g #x2c :b #x34 :a #x80) - (new 'static 'rgba :r #x6 :g #x2f :b #x34 :a #x80) - (new 'static 'rgba :r #x5 :g #x35 :b #x37 :a #x80) - (new 'static 'rgba :r #x8 :g #x3b :b #x3a :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x3f :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x25 :g #x4e :b #x4a :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x51 :a #x80) - (new 'static 'rgba :r #x2a :g #x50 :b #x51 :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x52 :a #x80) - (new 'static 'rgba :r #x28 :g #x52 :b #x50 :a #x80) - (new 'static 'rgba :r #x27 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x50 :a #x80) - (new 'static 'rgba :r #x1e :g #x50 :b #x50 :a #x80) - (new 'static 'rgba :r #x1f :g #x50 :b #x51 :a #x80) - (new 'static 'rgba :r #x21 :g #x42 :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x22 :g #x3d :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x40 :b #x48 :a #x80) - (new 'static 'rgba :r #x27 :g #x4b :b #x52 :a #x80) - (new 'static 'rgba :r #x2f :g #x57 :b #x57 :a #x80) - (new 'static 'rgba :r #x32 :g #x5a :b #x55 :a #x80) - (new 'static 'rgba :r #x30 :g #x53 :b #x4a :a #x80) - (new 'static 'rgba :r #x2a :g #x4f :b #x3d :a #x80) - (new 'static 'rgba :r #x24 :g #x49 :b #x38 :a #x80) - (new 'static 'rgba :r #x21 :g #x45 :b #x31 :a #x80) - (new 'static 'rgba :r #x21 :g #x44 :b #x31 :a #x80) - (new 'static 'rgba :r #x1e :g #x43 :b #x31 :a #x80) - (new 'static 'rgba :r #x1d :g #x41 :b #x30 :a #x80) - (new 'static 'rgba :r #x1c :g #x42 :b #x30 :a #x80) - (new 'static 'rgba :r #x20 :g #x44 :b #x36 :a #x80) - (new 'static 'rgba :r #x23 :g #x4a :b #x45 :a #x80) - (new 'static 'rgba :r #x1e :g #x45 :b #x47 :a #x80) - (new 'static 'rgba :r #x27 :g #x4d :b #x4e :a #x80) - (new 'static 'rgba :r #x23 :g #x4a :b #x4b :a #x80) - (new 'static 'rgba :r #x1c :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x11 :g #x42 :b #x3f :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x3d :a #x80) - (new 'static 'rgba :r #xa :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #x7 :g #x3b :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x38 :b #x39 :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x36 :a #x80) - (new 'static 'rgba :r #x7 :g #x31 :b #x36 :a #x80) - (new 'static 'rgba :r #x6 :g #x2e :b #x33 :a #x80) - (new 'static 'rgba :r #x1 :g #x16 :b #x23 :a #x80) - (new 'static 'rgba :r #x7 :g #x2e :b #x33 :a #x80) - (new 'static 'rgba :r #x7 :g #x34 :b #x37 :a #x80) - (new 'static 'rgba :r #x4 :g #x32 :b #x36 :a #x80) - (new 'static 'rgba :r #x9 :g #x3b :b #x38 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x3f :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x21 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x2c :g #x55 :b #x52 :a #x80) - (new 'static 'rgba :r #x2a :g #x52 :b #x53 :a #x80) - (new 'static 'rgba :r #x2b :g #x55 :b #x52 :a #x80) - (new 'static 'rgba :r #x29 :g #x53 :b #x52 :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x20 :g #x52 :b #x4e :a #x80) - (new 'static 'rgba :r #x1e :g #x4f :b #x50 :a #x80) - (new 'static 'rgba :r #x20 :g #x46 :b #x4c :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x25 :g #x4b :b #x51 :a #x80) - (new 'static 'rgba :r #x21 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x52 :a #x80) - (new 'static 'rgba :r #x30 :g #x57 :b #x57 :a #x80) - (new 'static 'rgba :r #x30 :g #x55 :b #x48 :a #x80) - (new 'static 'rgba :r #x2b :g #x4e :b #x3b :a #x80) - (new 'static 'rgba :r #x25 :g #x47 :b #x35 :a #x80) - (new 'static 'rgba :r #x21 :g #x44 :b #x2c :a #x80) - (new 'static 'rgba :r #x1e :g #x3f :b #x2b :a #x80) - (new 'static 'rgba :r #x1d :g #x40 :b #x29 :a #x80) - (new 'static 'rgba :r #x1b :g #x3f :b #x2b :a #x80) - (new 'static 'rgba :r #x1c :g #x3e :b #x29 :a #x80) - (new 'static 'rgba :r #x1b :g #x3e :b #x2b :a #x80) - (new 'static 'rgba :r #x1e :g #x41 :b #x30 :a #x80) - (new 'static 'rgba :r #x27 :g #x4c :b #x45 :a #x80) - (new 'static 'rgba :r #x2b :g #x54 :b #x4f :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x51 :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x1d :g #x45 :b #x47 :a #x80) - (new 'static 'rgba :r #x17 :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x40 :a #x80) - (new 'static 'rgba :r #xe :g #x41 :b #x3e :a #x80) - (new 'static 'rgba :r #xa :g #x3d :b #x3a :a #x80) - (new 'static 'rgba :r #x8 :g #x3b :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x3a :b #x37 :a #x80) - (new 'static 'rgba :r #x6 :g #x35 :b #x38 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x35 :a #x80) - (new 'static 'rgba :r #x5 :g #x28 :b #x31 :a #x80) - (new 'static 'rgba :r #x6 :g #x2c :b #x33 :a #x80) - (new 'static 'rgba :r #x6 :g #x30 :b #x34 :a #x80) - (new 'static 'rgba :r #x5 :g #x35 :b #x38 :a #x80) - (new 'static 'rgba :r #x9 :g #x3d :b #x3b :a #x80) - (new 'static 'rgba :r #x14 :g #x44 :b #x41 :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x2b :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x31 :g #x57 :b #x57 :a #x80) - (new 'static 'rgba :r #x2b :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x2e :g #x57 :b #x55 :a #x80) - (new 'static 'rgba :r #x2b :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x27 :g #x54 :b #x54 :a #x80) - (new 'static 'rgba :r #x21 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x1f :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x52 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x21 :g #x42 :b #x4a :a #x80) - (new 'static 'rgba :r #x28 :g #x52 :b #x53 :a #x80) - (new 'static 'rgba :r #x30 :g #x57 :b #x53 :a #x80) - (new 'static 'rgba :r #x2e :g #x52 :b #x43 :a #x80) - (new 'static 'rgba :r #x27 :g #x49 :b #x37 :a #x80) - (new 'static 'rgba :r #x23 :g #x43 :b #x2d :a #x80) - (new 'static 'rgba :r #x1e :g #x40 :b #x2a :a #x80) - (new 'static 'rgba :r #x1d :g #x3e :b #x27 :a #x80) - (new 'static 'rgba :r #x1b :g #x3d :b #x24 :a #x80) - (new 'static 'rgba :r #x1a :g #x3d :b #x27 :a #x80) - (new 'static 'rgba :r #x18 :g #x3b :b #x23 :a #x80) - (new 'static 'rgba :r #x19 :g #x3d :b #x23 :a #x80) - (new 'static 'rgba :r #x1d :g #x40 :b #x2c :a #x80) - (new 'static 'rgba :r #x22 :g #x49 :b #x3f :a #x80) - (new 'static 'rgba :r #x28 :g #x52 :b #x4b :a #x80) - (new 'static 'rgba :r #x2b :g #x52 :b #x50 :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #x9 :g #x3d :b #x3b :a #x80) - (new 'static 'rgba :r #x6 :g #x3a :b #x38 :a #x80) - (new 'static 'rgba :r #x6 :g #x38 :b #x38 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x37 :a #x80) - (new 'static 'rgba :r #x6 :g #x32 :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x2f :b #x34 :a #x80) - (new 'static 'rgba :r #x7 :g #x30 :b #x36 :a #x80) - (new 'static 'rgba :r #x7 :g #x33 :b #x37 :a #x80) - (new 'static 'rgba :r #x6 :g #x38 :b #x37 :a #x80) - (new 'static 'rgba :r #x9 :g #x3d :b #x39 :a #x80) - (new 'static 'rgba :r #x16 :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x25 :g #x4e :b #x4b :a #x80) - (new 'static 'rgba :r #x2c :g #x53 :b #x50 :a #x80) - (new 'static 'rgba :r #x35 :g #x5a :b #x59 :a #x80) - (new 'static 'rgba :r #x2f :g #x57 :b #x55 :a #x80) - (new 'static 'rgba :r #x31 :g #x59 :b #x57 :a #x80) - (new 'static 'rgba :r #x2d :g #x56 :b #x56 :a #x80) - (new 'static 'rgba :r #x27 :g #x54 :b #x54 :a #x80) - (new 'static 'rgba :r #x22 :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x20 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x52 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x21 :g #x3f :b #x4a :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x55 :a #x80) - (new 'static 'rgba :r #x2f :g #x55 :b #x4e :a #x80) - (new 'static 'rgba :r #x29 :g #x4c :b #x3c :a #x80) - (new 'static 'rgba :r #x24 :g #x45 :b #x30 :a #x80) - (new 'static 'rgba :r #x21 :g #x41 :b #x29 :a #x80) - (new 'static 'rgba :r #x1d :g #x3e :b #x26 :a #x80) - (new 'static 'rgba :r #x1b :g #x3d :b #x24 :a #x80) - (new 'static 'rgba :r #x19 :g #x3c :b #x21 :a #x80) - (new 'static 'rgba :r #x1a :g #x3c :b #x25 :a #x80) - (new 'static 'rgba :r #x1b :g #x3e :b #x26 :a #x80) - (new 'static 'rgba :r #x1c :g #x3f :b #x2a :a #x80) - (new 'static 'rgba :r #x1f :g #x42 :b #x30 :a #x80) - (new 'static 'rgba :r #x21 :g #x46 :b #x39 :a #x80) - (new 'static 'rgba :r #x27 :g #x4c :b #x45 :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4b :a #x80) - (new 'static 'rgba :r #x26 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x1c :g #x45 :b #x46 :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x43 :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x3e :a #x80) - (new 'static 'rgba :r #xd :g #x3e :b #x3e :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x42 :a #x80) - (new 'static 'rgba :r #x8 :g #x3d :b #x38 :a #x80) - (new 'static 'rgba :r #x7 :g #x3a :b #x38 :a #x80) - (new 'static 'rgba :r #x6 :g #x38 :b #x36 :a #x80) - (new 'static 'rgba :r #x6 :g #x36 :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x35 :a #x80) - (new 'static 'rgba :r #x6 :g #x33 :b #x35 :a #x80) - (new 'static 'rgba :r #x7 :g #x37 :b #x37 :a #x80) - (new 'static 'rgba :r #x5 :g #x39 :b #x36 :a #x80) - (new 'static 'rgba :r #xa :g #x3d :b #x3c :a #x80) - (new 'static 'rgba :r #x14 :g #x44 :b #x41 :a #x80) - (new 'static 'rgba :r #x1a :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x34 :g #x58 :b #x57 :a #x80) - (new 'static 'rgba :r #x34 :g #x59 :b #x56 :a #x80) - (new 'static 'rgba :r #x2e :g #x56 :b #x54 :a #x80) - (new 'static 'rgba :r #x2c :g #x56 :b #x54 :a #x80) - (new 'static 'rgba :r #x28 :g #x55 :b #x55 :a #x80) - (new 'static 'rgba :r #x21 :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x1f :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4e :a #x80) - (new 'static 'rgba :r #x21 :g #x3b :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x29 :g #x4c :b #x52 :a #x80) - (new 'static 'rgba :r #x30 :g #x57 :b #x50 :a #x80) - (new 'static 'rgba :r #x27 :g #x4a :b #x39 :a #x80) - (new 'static 'rgba :r #x21 :g #x42 :b #x2f :a #x80) - (new 'static 'rgba :r #x1f :g #x41 :b #x28 :a #x80) - (new 'static 'rgba :r #x1c :g #x3f :b #x29 :a #x80) - (new 'static 'rgba :r #x1d :g #x3f :b #x26 :a #x80) - (new 'static 'rgba :r #x1d :g #x40 :b #x27 :a #x80) - (new 'static 'rgba :r #x1d :g #x40 :b #x29 :a #x80) - (new 'static 'rgba :r #x1f :g #x43 :b #x31 :a #x80) - (new 'static 'rgba :r #x23 :g #x48 :b #x36 :a #x80) - (new 'static 'rgba :r #x23 :g #x48 :b #x3c :a #x80) - (new 'static 'rgba :r #x23 :g #x49 :b #x3d :a #x80) - (new 'static 'rgba :r #x23 :g #x4a :b #x40 :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x48 :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x19 :g #x42 :b #x44 :a #x80) - (new 'static 'rgba :r #x14 :g #x40 :b #x41 :a #x80) - (new 'static 'rgba :r #xf :g #x3f :b #x3e :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #xa :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #x8 :g #x3c :b #x3a :a #x80) - (new 'static 'rgba :r #x6 :g #x3a :b #x39 :a #x80) - (new 'static 'rgba :r #x6 :g #x38 :b #x38 :a #x80) - (new 'static 'rgba :r #x5 :g #x34 :b #x37 :a #x80) - (new 'static 'rgba :r #x5 :g #x37 :b #x37 :a #x80) - (new 'static 'rgba :r #x6 :g #x39 :b #x37 :a #x80) - (new 'static 'rgba :r #x7 :g #x3c :b #x3a :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x3c :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x22 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x2a :g #x51 :b #x4c :a #x80) - (new 'static 'rgba :r #x2e :g #x54 :b #x51 :a #x80) - (new 'static 'rgba :r #x2e :g #x55 :b #x54 :a #x80) - (new 'static 'rgba :r #x2c :g #x54 :b #x54 :a #x80) - (new 'static 'rgba :r #x2a :g #x55 :b #x55 :a #x80) - (new 'static 'rgba :r #x25 :g #x53 :b #x53 :a #x80) - (new 'static 'rgba :r #x21 :g #x53 :b #x50 :a #x80) - (new 'static 'rgba :r #x1f :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x21 :g #x47 :b #x4d :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x3a :b #x44 :a #x80) - (new 'static 'rgba :r #x27 :g #x49 :b #x4e :a #x80) - (new 'static 'rgba :r #x2e :g #x55 :b #x50 :a #x80) - (new 'static 'rgba :r #x26 :g #x4a :b #x3b :a #x80) - (new 'static 'rgba :r #x22 :g #x47 :b #x32 :a #x80) - (new 'static 'rgba :r #x20 :g #x43 :b #x2c :a #x80) - (new 'static 'rgba :r #x1f :g #x42 :b #x2c :a #x80) - (new 'static 'rgba :r #x20 :g #x44 :b #x2d :a #x80) - (new 'static 'rgba :r #x20 :g #x44 :b #x30 :a #x80) - (new 'static 'rgba :r #x22 :g #x46 :b #x34 :a #x80) - (new 'static 'rgba :r #x26 :g #x49 :b #x3d :a #x80) - (new 'static 'rgba :r #x29 :g #x4f :b #x45 :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x45 :a #x80) - (new 'static 'rgba :r #x26 :g #x4d :b #x46 :a #x80) - (new 'static 'rgba :r #x25 :g #x4e :b #x45 :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x49 :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x17 :g #x40 :b #x41 :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x20 :g #x48 :b #x49 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x41 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x3c :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x3f :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3a :a #x80) - (new 'static 'rgba :r #x8 :g #x3d :b #x38 :a #x80) - (new 'static 'rgba :r #x7 :g #x3b :b #x39 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x3e :a #x80) - (new 'static 'rgba :r #x6 :g #x3a :b #x3a :a #x80) - (new 'static 'rgba :r #x8 :g #x3c :b #x39 :a #x80) - (new 'static 'rgba :r #xb :g #x3d :b #x3d :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x3c :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x43 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x43 :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4f :a #x80) - (new 'static 'rgba :r #x29 :g #x53 :b #x50 :a #x80) - (new 'static 'rgba :r #x29 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x27 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x24 :g #x53 :b #x53 :a #x80) - (new 'static 'rgba :r #x1f :g #x53 :b #x4e :a #x80) - (new 'static 'rgba :r #x1f :g #x4e :b #x51 :a #x80) - (new 'static 'rgba :r #x22 :g #x46 :b #x4d :a #x80) - (new 'static 'rgba :r #x22 :g #x39 :b #x48 :a #x80) - (new 'static 'rgba :r #x21 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x37 :b #x43 :a #x80) - (new 'static 'rgba :r #x25 :g #x49 :b #x4d :a #x80) - (new 'static 'rgba :r #x2d :g #x53 :b #x4d :a #x80) - (new 'static 'rgba :r #x28 :g #x4d :b #x40 :a #x80) - (new 'static 'rgba :r #x26 :g #x4a :b #x39 :a #x80) - (new 'static 'rgba :r #x25 :g #x48 :b #x37 :a #x80) - (new 'static 'rgba :r #x24 :g #x47 :b #x35 :a #x80) - (new 'static 'rgba :r #x24 :g #x47 :b #x35 :a #x80) - (new 'static 'rgba :r #x26 :g #x49 :b #x3b :a #x80) - (new 'static 'rgba :r #x27 :g #x4c :b #x3d :a #x80) - (new 'static 'rgba :r #x29 :g #x4e :b #x46 :a #x80) - (new 'static 'rgba :r #x2c :g #x52 :b #x4b :a #x80) - (new 'static 'rgba :r #x2c :g #x54 :b #x4c :a #x80) - (new 'static 'rgba :r #x2b :g #x53 :b #x4b :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x29 :g #x50 :b #x4b :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x2b :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x2a :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x48 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x3e :a #x80) - (new 'static 'rgba :r #x12 :g #x40 :b #x3e :a #x80) - (new 'static 'rgba :r #xf :g #x40 :b #x3f :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x3a :a #x80) - (new 'static 'rgba :r #xc :g #x3f :b #x3a :a #x80) - (new 'static 'rgba :r #xb :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #xc :g #x3e :b #x3c :a #x80) - (new 'static 'rgba :r #xd :g #x3f :b #x3c :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x3e :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x4a :b #x46 :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x26 :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x26 :g #x51 :b #x51 :a #x80) - (new 'static 'rgba :r #x23 :g #x51 :b #x51 :a #x80) - (new 'static 'rgba :r #x21 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x1f :g #x4f :b #x51 :a #x80) - (new 'static 'rgba :r #x23 :g #x44 :b #x4c :a #x80) - (new 'static 'rgba :r #x22 :g #x3b :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x37 :b #x42 :a #x80) - (new 'static 'rgba :r #x24 :g #x49 :b #x4d :a #x80) - (new 'static 'rgba :r #x2d :g #x56 :b #x50 :a #x80) - (new 'static 'rgba :r #x2d :g #x53 :b #x47 :a #x80) - (new 'static 'rgba :r #x2a :g #x50 :b #x42 :a #x80) - (new 'static 'rgba :r #x28 :g #x4d :b #x40 :a #x80) - (new 'static 'rgba :r #x27 :g #x4c :b #x3d :a #x80) - (new 'static 'rgba :r #x28 :g #x4e :b #x3e :a #x80) - (new 'static 'rgba :r #x29 :g #x4e :b #x42 :a #x80) - (new 'static 'rgba :r #x2b :g #x50 :b #x47 :a #x80) - (new 'static 'rgba :r #x2a :g #x4f :b #x49 :a #x80) - (new 'static 'rgba :r #x2c :g #x54 :b #x4c :a #x80) - (new 'static 'rgba :r #x29 :g #x4f :b #x47 :a #x80) - (new 'static 'rgba :r #x2a :g #x52 :b #x50 :a #x80) - (new 'static 'rgba :r #x29 :g #x50 :b #x4b :a #x80) - (new 'static 'rgba :r #x2c :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x2a :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x29 :g #x50 :b #x4b :a #x80) - (new 'static 'rgba :r #x27 :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x22 :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x19 :g #x43 :b #x43 :a #x80) - (new 'static 'rgba :r #x17 :g #x42 :b #x42 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x13 :g #x40 :b #x41 :a #x80) - (new 'static 'rgba :r #x13 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x14 :g #x40 :b #x41 :a #x80) - (new 'static 'rgba :r #x17 :g #x42 :b #x42 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x44 :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x4d :a #x80) - (new 'static 'rgba :r #x22 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x1f :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x1c :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x1c :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x4f :a #x80) - (new 'static 'rgba :r #x23 :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x39 :b #x43 :a #x80) - (new 'static 'rgba :r #x23 :g #x49 :b #x4d :a #x80) - (new 'static 'rgba :r #x2f :g #x59 :b #x53 :a #x80) - (new 'static 'rgba :r #x32 :g #x5a :b #x52 :a #x80) - (new 'static 'rgba :r #x2f :g #x56 :b #x4e :a #x80) - (new 'static 'rgba :r #x2d :g #x52 :b #x4c :a #x80) - (new 'static 'rgba :r #x2b :g #x51 :b #x46 :a #x80) - (new 'static 'rgba :r #x2b :g #x51 :b #x48 :a #x80) - (new 'static 'rgba :r #x2b :g #x52 :b #x4c :a #x80) - (new 'static 'rgba :r #x27 :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x28 :g #x4d :b #x44 :a #x80) - (new 'static 'rgba :r #x26 :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x29 :g #x52 :b #x4e :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x26 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x2c :g #x53 :b #x50 :a #x80) - (new 'static 'rgba :r #x2b :g #x53 :b #x4d :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x29 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x2b :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x46 :a #x80) - (new 'static 'rgba :r #x1b :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x1b :g #x44 :b #x45 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x1b :g #x45 :b #x45 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x1c :g #x46 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x4a :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x24 :g #x4f :b #x4e :a #x80) - (new 'static 'rgba :r #x1c :g #x4e :b #x4a :a #x80) - (new 'static 'rgba :r #x1a :g #x4e :b #x49 :a #x80) - (new 'static 'rgba :r #x1b :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x20 :g #x48 :b #x4c :a #x80) - (new 'static 'rgba :r #x23 :g #x3d :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x3a :b #x45 :a #x80) - (new 'static 'rgba :r #x24 :g #x45 :b #x4c :a #x80) - (new 'static 'rgba :r #x2e :g #x59 :b #x58 :a #x80) - (new 'static 'rgba :r #x33 :g #x5c :b #x59 :a #x80) - (new 'static 'rgba :r #x31 :g #x5a :b #x56 :a #x80) - (new 'static 'rgba :r #x30 :g #x58 :b #x53 :a #x80) - (new 'static 'rgba :r #x2c :g #x54 :b #x4e :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x4c :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x29 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x48 :a #x80) - (new 'static 'rgba :r #x27 :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4a :a #x80) - (new 'static 'rgba :r #x28 :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x27 :g #x4e :b #x4b :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x46 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x45 :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x45 :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x49 :a #x80) - (new 'static 'rgba :r #x1a :g #x4b :b #x47 :a #x80) - (new 'static 'rgba :r #x18 :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x18 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #x22 :g #x3c :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1b :g #x39 :b #x43 :a #x80) - (new 'static 'rgba :r #x23 :g #x44 :b #x4a :a #x80) - (new 'static 'rgba :r #x2d :g #x55 :b #x57 :a #x80) - (new 'static 'rgba :r #x32 :g #x5b :b #x5a :a #x80) - (new 'static 'rgba :r #x32 :g #x5b :b #x55 :a #x80) - (new 'static 'rgba :r #x30 :g #x57 :b #x55 :a #x80) - (new 'static 'rgba :r #x2d :g #x54 :b #x50 :a #x80) - (new 'static 'rgba :r #x2b :g #x53 :b #x50 :a #x80) - (new 'static 'rgba :r #x29 :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x4c :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x21 :g #x4c :b #x47 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x27 :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x46 :a #x80) - (new 'static 'rgba :r #x26 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x1c :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x26 :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x26 :g #x4f :b #x4b :a #x80) - (new 'static 'rgba :r #x25 :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x1a :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x19 :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x17 :g #x4a :b #x46 :a #x80) - (new 'static 'rgba :r #x16 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x17 :g #x4a :b #x4a :a #x80) - (new 'static 'rgba :r #x1c :g #x45 :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x40 :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x54 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x3a :b #x44 :a #x80) - (new 'static 'rgba :r #x22 :g #x45 :b #x4b :a #x80) - (new 'static 'rgba :r #x2e :g #x56 :b #x54 :a #x80) - (new 'static 'rgba :r #x34 :g #x5d :b #x5a :a #x80) - (new 'static 'rgba :r #x32 :g #x5a :b #x55 :a #x80) - (new 'static 'rgba :r #x2f :g #x56 :b #x52 :a #x80) - (new 'static 'rgba :r #x2b :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x29 :g #x50 :b #x4f :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x49 :a #x80) - (new 'static 'rgba :r #x1b :g #x48 :b #x44 :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x1e :g #x45 :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x1a :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x42 :a #x80) - (new 'static 'rgba :r #x1b :g #x44 :b #x45 :a #x80) - (new 'static 'rgba :r #x1c :g #x46 :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x1e :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x24 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x4e :a #x80) - (new 'static 'rgba :r #x2b :g #x51 :b #x50 :a #x80) - (new 'static 'rgba :r #x2b :g #x51 :b #x50 :a #x80) - (new 'static 'rgba :r #x2b :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x29 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x18 :g #x43 :b #x44 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x44 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x46 :a #x80) - (new 'static 'rgba :r #x15 :g #x48 :b #x44 :a #x80) - (new 'static 'rgba :r #x14 :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x17 :g #x49 :b #x4b :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x3f :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x22 :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x3c :b #x46 :a #x80) - (new 'static 'rgba :r #x26 :g #x4a :b #x4f :a #x80) - (new 'static 'rgba :r #x30 :g #x59 :b #x58 :a #x80) - (new 'static 'rgba :r #x35 :g #x5c :b #x58 :a #x80) - (new 'static 'rgba :r #x31 :g #x59 :b #x56 :a #x80) - (new 'static 'rgba :r #x2f :g #x55 :b #x51 :a #x80) - (new 'static 'rgba :r #x32 :g #x56 :b #x52 :a #x80) - (new 'static 'rgba :r #x2b :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x4b :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x22 :g #x48 :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x40 :a #x80) - (new 'static 'rgba :r #x15 :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #x15 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x16 :g #x42 :b #x42 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x19 :g #x44 :b #x44 :a #x80) - (new 'static 'rgba :r #x1a :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x1d :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4e :a #x80) - (new 'static 'rgba :r #x29 :g #x51 :b #x4e :a #x80) - (new 'static 'rgba :r #x27 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x26 :g #x4d :b #x4e :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x1f :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x46 :a #x80) - (new 'static 'rgba :r #x19 :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x15 :g #x48 :b #x44 :a #x80) - (new 'static 'rgba :r #x14 :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x15 :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x1a :g #x46 :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x43 :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x3b :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x23 :g #x46 :b #x4a :a #x80) - (new 'static 'rgba :r #x2f :g #x56 :b #x58 :a #x80) - (new 'static 'rgba :r #x34 :g #x5d :b #x5b :a #x80) - (new 'static 'rgba :r #x33 :g #x5b :b #x56 :a #x80) - (new 'static 'rgba :r #x31 :g #x58 :b #x57 :a #x80) - (new 'static 'rgba :r #x31 :g #x57 :b #x53 :a #x80) - (new 'static 'rgba :r #x33 :g #x58 :b #x55 :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x46 :a #x80) - (new 'static 'rgba :r #x1c :g #x46 :b #x46 :a #x80) - (new 'static 'rgba :r #x18 :g #x45 :b #x44 :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x42 :a #x80) - (new 'static 'rgba :r #x12 :g #x43 :b #x41 :a #x80) - (new 'static 'rgba :r #x12 :g #x43 :b #x41 :a #x80) - (new 'static 'rgba :r #x10 :g #x40 :b #x40 :a #x80) - (new 'static 'rgba :r #x12 :g #x42 :b #x3f :a #x80) - (new 'static 'rgba :r #x15 :g #x44 :b #x43 :a #x80) - (new 'static 'rgba :r #x19 :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x13 :g #x42 :b #x3e :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x19 :g #x43 :b #x44 :a #x80) - (new 'static 'rgba :r #x1b :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x1c :g #x46 :b #x44 :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4b :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x28 :g #x4e :b #x4f :a #x80) - (new 'static 'rgba :r #x23 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x48 :a #x80) - (new 'static 'rgba :r #x1e :g #x48 :b #x45 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x1b :g #x45 :b #x46 :a #x80) - (new 'static 'rgba :r #x18 :g #x47 :b #x46 :a #x80) - (new 'static 'rgba :r #x18 :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x15 :g #x48 :b #x43 :a #x80) - (new 'static 'rgba :r #x15 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x1d :g #x43 :b #x4b :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x27 :g #x48 :b #x4e :a #x80) - (new 'static 'rgba :r #x38 :g #x60 :b #x5e :a #x80) - (new 'static 'rgba :r #x38 :g #x60 :b #x5c :a #x80) - (new 'static 'rgba :r #x36 :g #x5d :b #x5a :a #x80) - (new 'static 'rgba :r #x30 :g #x57 :b #x55 :a #x80) - (new 'static 'rgba :r #x32 :g #x58 :b #x54 :a #x80) - (new 'static 'rgba :r #x24 :g #x4e :b #x4b :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4e :a #x80) - (new 'static 'rgba :r #x22 :g #x4a :b #x4b :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x18 :g #x44 :b #x44 :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x43 :a #x80) - (new 'static 'rgba :r #x17 :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #xe :g #x41 :b #x40 :a #x80) - (new 'static 'rgba :r #xe :g #x41 :b #x3d :a #x80) - (new 'static 'rgba :r #xd :g #x40 :b #x3f :a #x80) - (new 'static 'rgba :r #xc :g #x41 :b #x3f :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x40 :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x40 :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x3f :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x3d :a #x80) - (new 'static 'rgba :r #x10 :g #x41 :b #x40 :a #x80) - (new 'static 'rgba :r #x13 :g #x43 :b #x3f :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x43 :a #x80) - (new 'static 'rgba :r #x1a :g #x43 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x45 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x23 :g #x4a :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x44 :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x1b :g #x47 :b #x45 :a #x80) - (new 'static 'rgba :r #x1b :g #x49 :b #x47 :a #x80) - (new 'static 'rgba :r #x1a :g #x4a :b #x46 :a #x80) - (new 'static 'rgba :r #x18 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x19 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x1c :g #x49 :b #x4b :a #x80) - (new 'static 'rgba :r #x21 :g #x42 :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x29 :g #x4a :b #x4f :a #x80) - (new 'static 'rgba :r #x38 :g #x61 :b #x5c :a #x80) - (new 'static 'rgba :r #x38 :g #x5f :b #x5a :a #x80) - (new 'static 'rgba :r #x35 :g #x5d :b #x5a :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x4e :a #x80) - (new 'static 'rgba :r #x2d :g #x55 :b #x51 :a #x80) - (new 'static 'rgba :r #x28 :g #x51 :b #x50 :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x12 :g #x44 :b #x42 :a #x80) - (new 'static 'rgba :r #xf :g #x42 :b #x42 :a #x80) - (new 'static 'rgba :r #xc :g #x41 :b #x3f :a #x80) - (new 'static 'rgba :r #xd :g #x40 :b #x3e :a #x80) - (new 'static 'rgba :r #xe :g #x3f :b #x3f :a #x80) - (new 'static 'rgba :r #xd :g #x3c :b #x3e :a #x80) - (new 'static 'rgba :r #xc :g #x3e :b #x3d :a #x80) - (new 'static 'rgba :r #x1e :g #x4a :b #x45 :a #x80) - (new 'static 'rgba :r #xc :g #x3f :b #x40 :a #x80) - (new 'static 'rgba :r #xd :g #x41 :b #x3e :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x40 :a #x80) - (new 'static 'rgba :r #xe :g #x41 :b #x40 :a #x80) - (new 'static 'rgba :r #x11 :g #x41 :b #x42 :a #x80) - (new 'static 'rgba :r #x15 :g #x43 :b #x43 :a #x80) - (new 'static 'rgba :r #x17 :g #x43 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x1d :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x48 :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4b :a #x80) - (new 'static 'rgba :r #x22 :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x25 :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x22 :g #x4a :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x4b :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x49 :a #x80) - (new 'static 'rgba :r #x1f :g #x4d :b #x4c :a #x80) - (new 'static 'rgba :r #x1e :g #x4f :b #x4b :a #x80) - (new 'static 'rgba :r #x1d :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x1c :g #x4c :b #x4e :a #x80) - (new 'static 'rgba :r #x1e :g #x46 :b #x4b :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x25 :g #x49 :b #x4e :a #x80) - (new 'static 'rgba :r #x2f :g #x5c :b #x5a :a #x80) - (new 'static 'rgba :r #x32 :g #x5b :b #x5a :a #x80) - (new 'static 'rgba :r #x33 :g #x5b :b #x5a :a #x80) - (new 'static 'rgba :r #x30 :g #x58 :b #x56 :a #x80) - (new 'static 'rgba :r #x29 :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4c :a #x80) - (new 'static 'rgba :r #x1d :g #x49 :b #x49 :a #x80) - (new 'static 'rgba :r #x19 :g #x49 :b #x46 :a #x80) - (new 'static 'rgba :r #x15 :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x11 :g #x46 :b #x41 :a #x80) - (new 'static 'rgba :r #xe :g #x42 :b #x41 :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x40 :a #x80) - (new 'static 'rgba :r #x10 :g #x3d :b #x41 :a #x80) - (new 'static 'rgba :r #x11 :g #x38 :b #x3f :a #x80) - (new 'static 'rgba :r #x11 :g #x39 :b #x3e :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x3e :a #x80) - (new 'static 'rgba :r #x10 :g #x3c :b #x40 :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x3f :a #x80) - (new 'static 'rgba :r #xe :g #x40 :b #x41 :a #x80) - (new 'static 'rgba :r #xe :g #x42 :b #x3f :a #x80) - (new 'static 'rgba :r #xf :g #x43 :b #x3f :a #x80) - (new 'static 'rgba :r #x11 :g #x44 :b #x3f :a #x80) - (new 'static 'rgba :r #x14 :g #x45 :b #x42 :a #x80) - (new 'static 'rgba :r #x16 :g #x45 :b #x43 :a #x80) - (new 'static 'rgba :r #x1b :g #x46 :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4a :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x48 :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x24 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x1f :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x23 :g #x4e :b #x4e :a #x80) - (new 'static 'rgba :r #x24 :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x25 :g #x50 :b #x51 :a #x80) - (new 'static 'rgba :r #x24 :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x4d :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x22 :g #x46 :b #x4c :a #x80) - (new 'static 'rgba :r #x28 :g #x59 :b #x57 :a #x80) - (new 'static 'rgba :r #x29 :g #x58 :b #x54 :a #x80) - (new 'static 'rgba :r #x29 :g #x56 :b #x53 :a #x80) - (new 'static 'rgba :r #x27 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x4e :b #x4e :a #x80) - (new 'static 'rgba :r #x1a :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x18 :g #x49 :b #x46 :a #x80) - (new 'static 'rgba :r #x15 :g #x48 :b #x47 :a #x80) - (new 'static 'rgba :r #x12 :g #x46 :b #x42 :a #x80) - (new 'static 'rgba :r #x11 :g #x44 :b #x44 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x13 :g #x38 :b #x40 :a #x80) - (new 'static 'rgba :r #x16 :g #x37 :b #x40 :a #x80) - (new 'static 'rgba :r #x16 :g #x36 :b #x3f :a #x80) - (new 'static 'rgba :r #x16 :g #x34 :b #x3e :a #x80) - (new 'static 'rgba :r #x16 :g #x39 :b #x3f :a #x80) - (new 'static 'rgba :r #x14 :g #x3a :b #x40 :a #x80) - (new 'static 'rgba :r #x13 :g #x3d :b #x41 :a #x80) - (new 'static 'rgba :r #x11 :g #x3f :b #x42 :a #x80) - (new 'static 'rgba :r #xf :g #x41 :b #x41 :a #x80) - (new 'static 'rgba :r #x10 :g #x42 :b #x43 :a #x80) - (new 'static 'rgba :r #x10 :g #x45 :b #x40 :a #x80) - (new 'static 'rgba :r #x24 :g #x4f :b #x48 :a #x80) - (new 'static 'rgba :r #x15 :g #x47 :b #x43 :a #x80) - (new 'static 'rgba :r #x19 :g #x48 :b #x45 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x25 :g #x4d :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4d :a #x80) - (new 'static 'rgba :r #x25 :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x22 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x25 :g #x4e :b #x4e :a #x80) - (new 'static 'rgba :r #x27 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x27 :g #x51 :b #x4d :a #x80) - (new 'static 'rgba :r #x28 :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x2a :g #x54 :b #x50 :a #x80) - (new 'static 'rgba :r #x2a :g #x54 :b #x54 :a #x80) - (new 'static 'rgba :r #x29 :g #x54 :b #x54 :a #x80) - (new 'static 'rgba :r #x22 :g #x54 :b #x53 :a #x80) - (new 'static 'rgba :r #x1f :g #x4c :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x3c :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x21 :g #x47 :b #x4b :a #x80) - (new 'static 'rgba :r #x25 :g #x55 :b #x54 :a #x80) - (new 'static 'rgba :r #x22 :g #x54 :b #x51 :a #x80) - (new 'static 'rgba :r #x21 :g #x51 :b #x51 :a #x80) - (new 'static 'rgba :r #x1e :g #x4d :b #x4b :a #x80) - (new 'static 'rgba :r #x19 :g #x4b :b #x49 :a #x80) - (new 'static 'rgba :r #x17 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x14 :g #x46 :b #x46 :a #x80) - (new 'static 'rgba :r #x14 :g #x46 :b #x43 :a #x80) - (new 'static 'rgba :r #x13 :g #x45 :b #x46 :a #x80) - (new 'static 'rgba :r #x15 :g #x3f :b #x43 :a #x80) - (new 'static 'rgba :r #x17 :g #x3c :b #x41 :a #x80) - (new 'static 'rgba :r #x19 :g #x36 :b #x41 :a #x80) - (new 'static 'rgba :r #x19 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #x18 :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x19 :g #x33 :b #x40 :a #x80) - (new 'static 'rgba :r #x19 :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x1a :g #x3a :b #x43 :a #x80) - (new 'static 'rgba :r #x19 :g #x3a :b #x42 :a #x80) - (new 'static 'rgba :r #x16 :g #x3f :b #x43 :a #x80) - (new 'static 'rgba :r #x14 :g #x41 :b #x44 :a #x80) - (new 'static 'rgba :r #x12 :g #x41 :b #x45 :a #x80) - (new 'static 'rgba :r #x12 :g #x46 :b #x45 :a #x80) - (new 'static 'rgba :r #x14 :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x15 :g #x47 :b #x47 :a #x80) - (new 'static 'rgba :r #x19 :g #x4a :b #x47 :a #x80) - (new 'static 'rgba :r #x1d :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x4a :b #x4a :a #x80) - (new 'static 'rgba :r #x23 :g #x4c :b #x4d :a #x80) - (new 'static 'rgba :r #x24 :g #x4c :b #x4e :a #x80) - (new 'static 'rgba :r #x25 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x4e :b #x4c :a #x80) - (new 'static 'rgba :r #x1e :g #x49 :b #x4a :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x28 :g #x4f :b #x50 :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x26 :g #x4e :b #x4f :a #x80) - (new 'static 'rgba :r #x2c :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x2b :g #x55 :b #x51 :a #x80) - (new 'static 'rgba :r #x2d :g #x57 :b #x55 :a #x80) - (new 'static 'rgba :r #x2d :g #x59 :b #x57 :a #x80) - (new 'static 'rgba :r #x2b :g #x57 :b #x54 :a #x80) - (new 'static 'rgba :r #x24 :g #x55 :b #x52 :a #x80) - (new 'static 'rgba :r #x20 :g #x4d :b #x50 :a #x80) - (new 'static 'rgba :r #x21 :g #x3e :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x3f :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x50 :a #x80) - (new 'static 'rgba :r #x20 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x1e :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x1b :g #x4f :b #x4a :a #x80) - (new 'static 'rgba :r #x18 :g #x4b :b #x48 :a #x80) - (new 'static 'rgba :r #x16 :g #x47 :b #x48 :a #x80) - (new 'static 'rgba :r #x14 :g #x44 :b #x45 :a #x80) - (new 'static 'rgba :r #x15 :g #x44 :b #x47 :a #x80) - (new 'static 'rgba :r #x17 :g #x41 :b #x45 :a #x80) - (new 'static 'rgba :r #x1a :g #x3b :b #x44 :a #x80) - (new 'static 'rgba :r #x1c :g #x44 :b #x48 :a #x80) - (new 'static 'rgba :r #x1d :g #x46 :b #x4a :a #x80) - (new 'static 'rgba :r #x1b :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1b :g #x31 :b #x40 :a #x80) - (new 'static 'rgba :r #x1b :g #x36 :b #x41 :a #x80) - (new 'static 'rgba :r #x1c :g #x37 :b #x43 :a #x80) - (new 'static 'rgba :r #x1c :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x1c :g #x3a :b #x45 :a #x80) - (new 'static 'rgba :r #x1b :g #x3e :b #x45 :a #x80) - (new 'static 'rgba :r #x19 :g #x3f :b #x45 :a #x80) - (new 'static 'rgba :r #x17 :g #x40 :b #x46 :a #x80) - (new 'static 'rgba :r #x15 :g #x46 :b #x48 :a #x80) - (new 'static 'rgba :r #x14 :g #x48 :b #x46 :a #x80) - (new 'static 'rgba :r #x17 :g #x4a :b #x48 :a #x80) - (new 'static 'rgba :r #x1a :g #x4c :b #x4a :a #x80) - (new 'static 'rgba :r #x1e :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x26 :g #x50 :b #x4f :a #x80) - (new 'static 'rgba :r #x24 :g #x4e :b #x4f :a #x80) - (new 'static 'rgba :r #x27 :g #x51 :b #x50 :a #x80) - (new 'static 'rgba :r #x28 :g #x50 :b #x51 :a #x80) - (new 'static 'rgba :r #x29 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x29 :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x2d :g #x56 :b #x53 :a #x80) - (new 'static 'rgba :r #x2b :g #x55 :b #x55 :a #x80) - (new 'static 'rgba :r #x2c :g #x55 :b #x52 :a #x80) - (new 'static 'rgba :r #x30 :g #x59 :b #x58 :a #x80) - (new 'static 'rgba :r #x2f :g #x58 :b #x59 :a #x80) - (new 'static 'rgba :r #x2a :g #x57 :b #x57 :a #x80) - (new 'static 'rgba :r #x23 :g #x56 :b #x51 :a #x80) - (new 'static 'rgba :r #x21 :g #x4e :b #x51 :a #x80) - (new 'static 'rgba :r #x23 :g #x3f :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x39 :b #x41 :a #x80) - (new 'static 'rgba :r #x1e :g #x3e :b #x47 :a #x80) - (new 'static 'rgba :r #x1f :g #x46 :b #x4c :a #x80) - (new 'static 'rgba :r #x1c :g #x4e :b #x4d :a #x80) - (new 'static 'rgba :r #x1b :g #x4e :b #x4a :a #x80) - (new 'static 'rgba :r #x19 :g #x49 :b #x4b :a #x80) - (new 'static 'rgba :r #x17 :g #x46 :b #x47 :a #x80) - (new 'static 'rgba :r #x18 :g #x43 :b #x47 :a #x80) - (new 'static 'rgba :r #x1a :g #x42 :b #x48 :a #x80) - (new 'static 'rgba :r #x1c :g #x3f :b #x46 :a #x80) - (new 'static 'rgba :r #x1c :g #x3a :b #x44 :a #x80) - (new 'static 'rgba :r #x1d :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x1d :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1e :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1e :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1e :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x1e :g #x3c :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x3e :b #x47 :a #x80) - (new 'static 'rgba :r #x1b :g #x42 :b #x49 :a #x80) - (new 'static 'rgba :r #x18 :g #x46 :b #x4a :a #x80) - (new 'static 'rgba :r #x18 :g #x4b :b #x4b :a #x80) - (new 'static 'rgba :r #x18 :g #x4d :b #x4a :a #x80) - (new 'static 'rgba :r #x1b :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x1e :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x20 :g #x50 :b #x4d :a #x80) - (new 'static 'rgba :r #x21 :g #x50 :b #x4e :a #x80) - (new 'static 'rgba :r #x22 :g #x50 :b #x4c :a #x80) - (new 'static 'rgba :r #x24 :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x27 :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x50 :a #x80) - (new 'static 'rgba :r #x26 :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x28 :g #x53 :b #x53 :a #x80) - (new 'static 'rgba :r #x29 :g #x55 :b #x50 :a #x80) - (new 'static 'rgba :r #x2b :g #x56 :b #x52 :a #x80) - (new 'static 'rgba :r #x2c :g #x58 :b #x56 :a #x80) - (new 'static 'rgba :r #x2c :g #x58 :b #x55 :a #x80) - (new 'static 'rgba :r #x2e :g #x58 :b #x58 :a #x80) - (new 'static 'rgba :r #x2c :g #x59 :b #x59 :a #x80) - (new 'static 'rgba :r #x26 :g #x58 :b #x52 :a #x80) - (new 'static 'rgba :r #x22 :g #x56 :b #x52 :a #x80) - (new 'static 'rgba :r #x22 :g #x4c :b #x4f :a #x80) - (new 'static 'rgba :r #x22 :g #x3c :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1a :g #x36 :b #x40 :a #x80) - (new 'static 'rgba :r #x1a :g #x36 :b #x40 :a #x80) - (new 'static 'rgba :r #x1c :g #x3a :b #x44 :a #x80) - (new 'static 'rgba :r #x1d :g #x44 :b #x49 :a #x80) - (new 'static 'rgba :r #x1c :g #x47 :b #x4b :a #x80) - (new 'static 'rgba :r #x1c :g #x45 :b #x48 :a #x80) - (new 'static 'rgba :r #x1c :g #x42 :b #x47 :a #x80) - (new 'static 'rgba :r #x1d :g #x40 :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x1f :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x1e :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x3f :b #x49 :a #x80) - (new 'static 'rgba :r #x1e :g #x43 :b #x4a :a #x80) - (new 'static 'rgba :r #x1d :g #x48 :b #x4d :a #x80) - (new 'static 'rgba :r #x1c :g #x4c :b #x4c :a #x80) - (new 'static 'rgba :r #x1b :g #x4f :b #x4d :a #x80) - (new 'static 'rgba :r #x1c :g #x50 :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x51 :b #x4f :a #x80) - (new 'static 'rgba :r #x1f :g #x52 :b #x4f :a #x80) - (new 'static 'rgba :r #x20 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x21 :g #x52 :b #x51 :a #x80) - (new 'static 'rgba :r #x23 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x23 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x23 :g #x53 :b #x4f :a #x80) - (new 'static 'rgba :r #x24 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x24 :g #x53 :b #x51 :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x50 :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x51 :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x53 :a #x80) - (new 'static 'rgba :r #x26 :g #x55 :b #x55 :a #x80) - (new 'static 'rgba :r #x28 :g #x56 :b #x56 :a #x80) - (new 'static 'rgba :r #x26 :g #x57 :b #x54 :a #x80) - (new 'static 'rgba :r #x22 :g #x54 :b #x55 :a #x80) - (new 'static 'rgba :r #x23 :g #x4f :b #x53 :a #x80) - (new 'static 'rgba :r #x24 :g #x41 :b #x4c :a #x80) - (new 'static 'rgba :r #x21 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x22 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x37 :b #x41 :a #x80) - (new 'static 'rgba :r #x1b :g #x35 :b #x41 :a #x80) - (new 'static 'rgba :r #x1b :g #x36 :b #x41 :a #x80) - (new 'static 'rgba :r #x1d :g #x3b :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x3d :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x1e :g #x3c :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x3e :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x22 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x22 :g #x38 :b #x46 :a #x80) - (new 'static 'rgba :r #x22 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3e :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x42 :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x45 :b #x4c :a #x80) - (new 'static 'rgba :r #x20 :g #x48 :b #x4c :a #x80) - (new 'static 'rgba :r #x1f :g #x4a :b #x4f :a #x80) - (new 'static 'rgba :r #x1e :g #x4e :b #x51 :a #x80) - (new 'static 'rgba :r #x1f :g #x50 :b #x4f :a #x80) - (new 'static 'rgba :r #x1f :g #x51 :b #x51 :a #x80) - (new 'static 'rgba :r #x1f :g #x53 :b #x52 :a #x80) - (new 'static 'rgba :r #x20 :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x21 :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x21 :g #x52 :b #x52 :a #x80) - (new 'static 'rgba :r #x20 :g #x54 :b #x52 :a #x80) - (new 'static 'rgba :r #x21 :g #x54 :b #x50 :a #x80) - (new 'static 'rgba :r #x21 :g #x54 :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x54 :b #x53 :a #x80) - (new 'static 'rgba :r #x21 :g #x54 :b #x50 :a #x80) - (new 'static 'rgba :r #x20 :g #x54 :b #x51 :a #x80) - (new 'static 'rgba :r #x21 :g #x52 :b #x53 :a #x80) - (new 'static 'rgba :r #x22 :g #x51 :b #x54 :a #x80) - (new 'static 'rgba :r #x22 :g #x4f :b #x53 :a #x80) - (new 'static 'rgba :r #x23 :g #x4d :b #x51 :a #x80) - (new 'static 'rgba :r #x26 :g #x43 :b #x4d :a #x80) - (new 'static 'rgba :r #x23 :g #x3d :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x1c :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x37 :b #x42 :a #x80) - (new 'static 'rgba :r #x1c :g #x37 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x21 :g #x40 :b #x49 :a #x80) - (new 'static 'rgba :r #x21 :g #x42 :b #x4a :a #x80) - (new 'static 'rgba :r #x22 :g #x43 :b #x4b :a #x80) - (new 'static 'rgba :r #x22 :g #x45 :b #x4c :a #x80) - (new 'static 'rgba :r #x21 :g #x46 :b #x4d :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x4a :b #x4e :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x4e :a #x80) - (new 'static 'rgba :r #x21 :g #x47 :b #x4e :a #x80) - (new 'static 'rgba :r #x21 :g #x48 :b #x4e :a #x80) - (new 'static 'rgba :r #x21 :g #x48 :b #x4e :a #x80) - (new 'static 'rgba :r #x21 :g #x49 :b #x4f :a #x80) - (new 'static 'rgba :r #x21 :g #x4b :b #x4e :a #x80) - (new 'static 'rgba :r #x20 :g #x47 :b #x4e :a #x80) - (new 'static 'rgba :r #x20 :g #x46 :b #x4d :a #x80) - (new 'static 'rgba :r #x20 :g #x46 :b #x4c :a #x80) - (new 'static 'rgba :r #x21 :g #x45 :b #x4c :a #x80) - (new 'static 'rgba :r #x23 :g #x41 :b #x4b :a #x80) - (new 'static 'rgba :r #x22 :g #x40 :b #x4a :a #x80) - (new 'static 'rgba :r #x21 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x36 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x38 :b #x43 :a #x80) - (new 'static 'rgba :r #x1d :g #x37 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x38 :b #x42 :a #x80) - (new 'static 'rgba :r #x1d :g #x39 :b #x43 :a #x80) - (new 'static 'rgba :r #x1e :g #x3b :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x3e :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x3e :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #x21 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x3c :b #x49 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x47 :a #x80) - (new 'static 'rgba :r #x21 :g #x3c :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3d :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x48 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x21 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x39 :b #x44 :a #x80) - (new 'static 'rgba :r #x1d :g #x39 :b #x43 :a #x80) - (new 'static 'rgba :r #x1e :g #x38 :b #x43 :a #x80) - (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x47 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) - (new 'static 'rgba :r #x20 :g #x3a :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x1e :g #x37 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) - (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x36 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x46 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) - (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x43 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x31 :b #x41 :a #x80) - (new 'static 'rgba :r #x1e :g #x32 :b #x40 :a #x80) - (new 'static 'rgba :r #x1e :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) - (new 'static 'rgba) - (new 'static 'rgba) - (new 'static 'rgba) - ) - ) - ) + (new 'static + 'ocean-colors + :colors + (new 'static + 'array + rgba + 2548 + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x3d :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x50 :a #x80) + (new 'static 'rgba :r #x23 :g #x47 :b #x4d :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x23 :g #x3f :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x3f :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x3e :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x3d :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x21 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #x23 :g #x3f :b #x4a :a #x80) + (new 'static 'rgba :r #x23 :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x23 :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #x22 :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x41 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x40 :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x3f :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x3d :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x3d :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x40 :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x42 :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x42 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x45 :b #x4b :a #x80) + (new 'static 'rgba :r #x1f :g #x45 :b #x4a :a #x80) + (new 'static 'rgba :r #x1f :g #x45 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x44 :b #x4c :a #x80) + (new 'static 'rgba :r #x20 :g #x44 :b #x4b :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x4b :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x4c :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x4d :a #x80) + (new 'static 'rgba :r #x20 :g #x48 :b #x4c :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x4b :a #x80) + (new 'static 'rgba :r #x1f :g #x43 :b #x4b :a #x80) + (new 'static 'rgba :r #x1f :g #x45 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x42 :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x42 :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x41 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x40 :b #x48 :a #x80) + (new 'static 'rgba :r #x21 :g #x3f :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x22 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x3a :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x41 :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x42 :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x43 :b #x4c :a #x80) + (new 'static 'rgba :r #x20 :g #x43 :b #x4b :a #x80) + (new 'static 'rgba :r #x1e :g #x44 :b #x4a :a #x80) + (new 'static 'rgba :r #x1e :g #x42 :b #x4a :a #x80) + (new 'static 'rgba :r #x1d :g #x42 :b #x49 :a #x80) + (new 'static 'rgba :r #x1d :g #x44 :b #x4a :a #x80) + (new 'static 'rgba :r #x1d :g #x44 :b #x4a :a #x80) + (new 'static 'rgba :r #x1d :g #x44 :b #x4b :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x4b :a #x80) + (new 'static 'rgba :r #x1c :g #x49 :b #x4d :a #x80) + (new 'static 'rgba :r #x1d :g #x4e :b #x4f :a #x80) + (new 'static 'rgba :r #x1d :g #x50 :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x50 :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x51 :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x20 :g #x51 :b #x52 :a #x80) + (new 'static 'rgba :r #x20 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x22 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x21 :g #x53 :b #x52 :a #x80) + (new 'static 'rgba :r #x20 :g #x50 :b #x52 :a #x80) + (new 'static 'rgba :r #x1f :g #x51 :b #x50 :a #x80) + (new 'static 'rgba :r #x1f :g #x4f :b #x51 :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x50 :a #x80) + (new 'static 'rgba :r #x1f :g #x50 :b #x52 :a #x80) + (new 'static 'rgba :r #x1f :g #x4e :b #x50 :a #x80) + (new 'static 'rgba :r #x1e :g #x4d :b #x4e :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x4e :a #x80) + (new 'static 'rgba :r #x21 :g #x44 :b #x4c :a #x80) + (new 'static 'rgba :r #x22 :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x3f :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #x23 :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #x23 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x21 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x31 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x1e :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x40 :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x41 :b #x4a :a #x80) + (new 'static 'rgba :r #x1f :g #x42 :b #x4a :a #x80) + (new 'static 'rgba :r #x1d :g #x45 :b #x4a :a #x80) + (new 'static 'rgba :r #x1b :g #x44 :b #x4a :a #x80) + (new 'static 'rgba :r #x1a :g #x44 :b #x49 :a #x80) + (new 'static 'rgba :r #x19 :g #x43 :b #x49 :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x48 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x4a :a #x80) + (new 'static 'rgba :r #x19 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x19 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x1b :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x1d :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x1e :g #x50 :b #x4b :a #x80) + (new 'static 'rgba :r #x1d :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x1f :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x20 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x23 :g #x54 :b #x50 :a #x80) + (new 'static 'rgba :r #x25 :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x54 :a #x80) + (new 'static 'rgba :r #x26 :g #x54 :b #x54 :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x53 :a #x80) + (new 'static 'rgba :r #x24 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x23 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x23 :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x23 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x20 :g #x52 :b #x4e :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x1d :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x1c :g #x4f :b #x4f :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x4e :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x44 :b #x4c :a #x80) + (new 'static 'rgba :r #x23 :g #x40 :b #x4b :a #x80) + (new 'static 'rgba :r #x23 :g #x3b :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x37 :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x1d :g #x3a :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x3d :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x1e :g #x41 :b #x48 :a #x80) + (new 'static 'rgba :r #x1b :g #x43 :b #x48 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x48 :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x47 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x47 :a #x80) + (new 'static 'rgba :r #x16 :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x15 :g #x47 :b #x46 :a #x80) + (new 'static 'rgba :r #x15 :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x17 :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x18 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x1b :g #x4e :b #x4b :a #x80) + (new 'static 'rgba :r #x1d :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x1d :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x1f :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x52 :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x53 :a #x80) + (new 'static 'rgba :r #x28 :g #x54 :b #x51 :a #x80) + (new 'static 'rgba :r #x28 :g #x54 :b #x54 :a #x80) + (new 'static 'rgba :r #x29 :g #x55 :b #x52 :a #x80) + (new 'static 'rgba :r #x29 :g #x55 :b #x53 :a #x80) + (new 'static 'rgba :r #x28 :g #x55 :b #x50 :a #x80) + (new 'static 'rgba :r #x28 :g #x55 :b #x50 :a #x80) + (new 'static 'rgba :r #x28 :g #x54 :b #x51 :a #x80) + (new 'static 'rgba :r #x27 :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x25 :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x23 :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x22 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x20 :g #x52 :b #x4e :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x1d :g #x4f :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x4e :a #x80) + (new 'static 'rgba :r #x22 :g #x44 :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x3f :b #x4c :a #x80) + (new 'static 'rgba :r #x22 :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #x25 :g #x51 :b #x53 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x37 :b #x43 :a #x80) + (new 'static 'rgba :r #x1e :g #x3b :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x3f :b #x48 :a #x80) + (new 'static 'rgba :r #x1d :g #x41 :b #x47 :a #x80) + (new 'static 'rgba :r #x1a :g #x43 :b #x47 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x47 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x47 :a #x80) + (new 'static 'rgba :r #x14 :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x12 :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x12 :g #x43 :b #x45 :a #x80) + (new 'static 'rgba :r #x12 :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x12 :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x14 :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x15 :g #x4a :b #x46 :a #x80) + (new 'static 'rgba :r #x18 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x1a :g #x4c :b #x47 :a #x80) + (new 'static 'rgba :r #x1c :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x1e :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x1e :g #x4e :b #x4b :a #x80) + (new 'static 'rgba :r #x20 :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x22 :g #x4d :b #x4e :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x28 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x29 :g #x54 :b #x53 :a #x80) + (new 'static 'rgba :r #x2b :g #x56 :b #x51 :a #x80) + (new 'static 'rgba :r #x29 :g #x53 :b #x50 :a #x80) + (new 'static 'rgba :r #x27 :g #x53 :b #x4e :a #x80) + (new 'static 'rgba :r #x27 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x27 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x28 :g #x52 :b #x50 :a #x80) + (new 'static 'rgba :r #x28 :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x27 :g #x51 :b #x52 :a #x80) + (new 'static 'rgba :r #x26 :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x23 :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x20 :g #x53 :b #x4e :a #x80) + (new 'static 'rgba :r #x1e :g #x52 :b #x4d :a #x80) + (new 'static 'rgba :r #x1c :g #x4f :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x4d :b #x4e :a #x80) + (new 'static 'rgba :r #x23 :g #x46 :b #x4e :a #x80) + (new 'static 'rgba :r #x23 :g #x3e :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x37 :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x38 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x3e :b #x46 :a #x80) + (new 'static 'rgba :r #x1d :g #x44 :b #x49 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x15 :g #x48 :b #x45 :a #x80) + (new 'static 'rgba :r #x13 :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x11 :g #x44 :b #x44 :a #x80) + (new 'static 'rgba :r #x10 :g #x43 :b #x43 :a #x80) + (new 'static 'rgba :r #xe :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x10 :g #x43 :b #x40 :a #x80) + (new 'static 'rgba :r #x1a :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x14 :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x16 :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x17 :g #x49 :b #x46 :a #x80) + (new 'static 'rgba :r #x18 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x19 :g #x4a :b #x46 :a #x80) + (new 'static 'rgba :r #x1d :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x4b :a #x80) + (new 'static 'rgba :r #x20 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x23 :g #x4e :b #x4b :a #x80) + (new 'static 'rgba :r #x24 :g #x4e :b #x4e :a #x80) + (new 'static 'rgba :r #x29 :g #x54 :b #x50 :a #x80) + (new 'static 'rgba :r #x31 :g #x59 :b #x54 :a #x80) + (new 'static 'rgba :r #x2f :g #x58 :b #x55 :a #x80) + (new 'static 'rgba :r #x29 :g #x54 :b #x51 :a #x80) + (new 'static 'rgba :r #x25 :g #x51 :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x27 :g #x52 :b #x50 :a #x80) + (new 'static 'rgba :r #x2b :g #x55 :b #x51 :a #x80) + (new 'static 'rgba :r #x29 :g #x53 :b #x52 :a #x80) + (new 'static 'rgba :r #x27 :g #x50 :b #x51 :a #x80) + (new 'static 'rgba :r #x24 :g #x4f :b #x4e :a #x80) + (new 'static 'rgba :r #x21 :g #x4e :b #x4f :a #x80) + (new 'static 'rgba :r #x20 :g #x51 :b #x4b :a #x80) + (new 'static 'rgba :r #x1c :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x1b :g #x4d :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x4f :a #x80) + (new 'static 'rgba :r #x23 :g #x43 :b #x4c :a #x80) + (new 'static 'rgba :r #x21 :g #x3c :b #x48 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x3a :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x46 :b #x4a :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x4d :a #x80) + (new 'static 'rgba :r #x18 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x16 :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x15 :g #x49 :b #x45 :a #x80) + (new 'static 'rgba :r #x14 :g #x49 :b #x45 :a #x80) + (new 'static 'rgba :r #x12 :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x10 :g #x43 :b #x40 :a #x80) + (new 'static 'rgba :r #xf :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x10 :g #x45 :b #x41 :a #x80) + (new 'static 'rgba :r #x12 :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x14 :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x16 :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x17 :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x18 :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x44 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x2e :g #x56 :b #x54 :a #x80) + (new 'static 'rgba :r #x2e :g #x55 :b #x52 :a #x80) + (new 'static 'rgba :r #x2b :g #x53 :b #x53 :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x4f :b #x48 :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x4c :a #x80) + (new 'static 'rgba :r #x2b :g #x55 :b #x51 :a #x80) + (new 'static 'rgba :r #x2b :g #x55 :b #x52 :a #x80) + (new 'static 'rgba :r #x27 :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x23 :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x22 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x1c :g #x4f :b #x4a :a #x80) + (new 'static 'rgba :r #x1a :g #x4f :b #x4a :a #x80) + (new 'static 'rgba :r #x1b :g #x4c :b #x4e :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x4d :a #x80) + (new 'static 'rgba :r #x22 :g #x3f :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x3c :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x4c :a #x80) + (new 'static 'rgba :r #x1c :g #x4d :b #x4e :a #x80) + (new 'static 'rgba :r #x19 :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x18 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x19 :g #x4c :b #x47 :a #x80) + (new 'static 'rgba :r #x17 :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x15 :g #x46 :b #x46 :a #x80) + (new 'static 'rgba :r #x12 :g #x45 :b #x41 :a #x80) + (new 'static 'rgba :r #x11 :g #x44 :b #x3f :a #x80) + (new 'static 'rgba :r #x12 :g #x44 :b #x41 :a #x80) + (new 'static 'rgba :r #x14 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x41 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x45 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x42 :a #x80) + (new 'static 'rgba :r #x1a :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x15 :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x2b :g #x53 :b #x52 :a #x80) + (new 'static 'rgba :r #x25 :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4f :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x22 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x1e :g #x4e :b #x49 :a #x80) + (new 'static 'rgba :r #x1a :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x1a :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x4d :a #x80) + (new 'static 'rgba :r #x21 :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x39 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x42 :b #x49 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x4c :a #x80) + (new 'static 'rgba :r #x1b :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x19 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x1a :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x46 :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x44 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x45 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x19 :g #x43 :b #x44 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x41 :a #x80) + (new 'static 'rgba :r #x1a :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x46 :a #x80) + (new 'static 'rgba :r #x27 :g #x52 :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4e :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x1e :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x1b :g #x4e :b #x49 :a #x80) + (new 'static 'rgba :r #x18 :g #x4e :b #x47 :a #x80) + (new 'static 'rgba :r #x1a :g #x4a :b #x4c :a #x80) + (new 'static 'rgba :r #x1f :g #x41 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x39 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x40 :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x4c :a #x80) + (new 'static 'rgba :r #x1d :g #x4d :b #x4d :a #x80) + (new 'static 'rgba :r #x1d :g #x4d :b #x4d :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x44 :a #x80) + (new 'static 'rgba :r #x1a :g #x47 :b #x43 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x1a :g #x44 :b #x43 :a #x80) + (new 'static 'rgba :r #x1a :g #x43 :b #x44 :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x19 :g #x43 :b #x44 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x43 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x19 :g #x42 :b #x43 :a #x80) + (new 'static 'rgba :r #x18 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x43 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x45 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x1b :g #x43 :b #x46 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x46 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x26 :g #x4d :b #x4d :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x21 :g #x4d :b #x48 :a #x80) + (new 'static 'rgba :r #x28 :g #x52 :b #x4c :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x4d :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x1c :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x19 :g #x4e :b #x4a :a #x80) + (new 'static 'rgba :r #x19 :g #x4b :b #x4c :a #x80) + (new 'static 'rgba :r #x1d :g #x45 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x31 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x3a :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x3e :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x4b :a #x80) + (new 'static 'rgba :r #x20 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x20 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x21 :g #x48 :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x1b :g #x44 :b #x45 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x43 :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x18 :g #x42 :b #x42 :a #x80) + (new 'static 'rgba :r #x17 :g #x42 :b #x3f :a #x80) + (new 'static 'rgba :r #x16 :g #x41 :b #x42 :a #x80) + (new 'static 'rgba :r #x14 :g #x40 :b #x41 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x42 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x42 :a #x80) + (new 'static 'rgba :r #x14 :g #x43 :b #x41 :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x41 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x1d :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x1c :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x1a :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x19 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x1c :g #x48 :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x40 :b #x49 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x39 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x41 :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x4c :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x51 :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x25 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x4b :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x1a :g #x44 :b #x44 :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x42 :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x40 :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x41 :a #x80) + (new 'static 'rgba :r #x14 :g #x40 :b #x41 :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x3f :a #x80) + (new 'static 'rgba :r #x10 :g #x41 :b #x3c :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x3a :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3d :a #x80) + (new 'static 'rgba :r #xb :g #x3f :b #x3c :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x3d :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x40 :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x40 :a #x80) + (new 'static 'rgba :r #x18 :g #x43 :b #x43 :a #x80) + (new 'static 'rgba :r #x1a :g #x44 :b #x45 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x49 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x1d :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x1b :g #x4d :b #x48 :a #x80) + (new 'static 'rgba :r #x1a :g #x4e :b #x4b :a #x80) + (new 'static 'rgba :r #x1a :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x43 :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x4e :a #x80) + (new 'static 'rgba :r #x25 :g #x51 :b #x51 :a #x80) + (new 'static 'rgba :r #x27 :g #x51 :b #x52 :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x4f :a #x80) + (new 'static 'rgba :r #x27 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x28 :g #x4e :b #x4e :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x26 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x4c :a #x80) + (new 'static 'rgba :r #x23 :g #x4a :b #x4b :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x45 :a #x80) + (new 'static 'rgba :r #x17 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x14 :g #x42 :b #x3f :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x43 :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x3d :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #xa :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #x8 :g #x3c :b #x3a :a #x80) + (new 'static 'rgba :r #x7 :g #x3c :b #x38 :a #x80) + (new 'static 'rgba :r #x8 :g #x3d :b #x3b :a #x80) + (new 'static 'rgba :r #x9 :g #x3c :b #x3b :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3d :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x3c :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x3d :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x1b :g #x45 :b #x45 :a #x80) + (new 'static 'rgba :r #x1c :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x1e :g #x4b :b #x47 :a #x80) + (new 'static 'rgba :r #x1c :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x1a :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x19 :g #x49 :b #x4b :a #x80) + (new 'static 'rgba :r #x1f :g #x42 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x3d :b #x47 :a #x80) + (new 'static 'rgba :r #x23 :g #x45 :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4b :b #x50 :a #x80) + (new 'static 'rgba :r #x27 :g #x51 :b #x52 :a #x80) + (new 'static 'rgba :r #x2a :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x2a :g #x53 :b #x50 :a #x80) + (new 'static 'rgba :r #x2b :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x2b :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x4c :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x48 :b #x49 :a #x80) + (new 'static 'rgba :r #x1e :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x45 :a #x80) + (new 'static 'rgba :r #x17 :g #x44 :b #x43 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x40 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x3f :a #x80) + (new 'static 'rgba :r #xd :g #x3e :b #x3b :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #x7 :g #x3b :b #x3a :a #x80) + (new 'static 'rgba :r #x6 :g #x39 :b #x39 :a #x80) + (new 'static 'rgba :r #x5 :g #x38 :b #x37 :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x39 :a #x80) + (new 'static 'rgba :r #x6 :g #x37 :b #x38 :a #x80) + (new 'static 'rgba :r #x5 :g #x39 :b #x37 :a #x80) + (new 'static 'rgba :r #x6 :g #x3b :b #x36 :a #x80) + (new 'static 'rgba :r #x9 :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x3e :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #x1a :g #x44 :b #x44 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x1d :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x1a :g #x4e :b #x48 :a #x80) + (new 'static 'rgba :r #x1a :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x4c :a #x80) + (new 'static 'rgba :r #x21 :g #x3b :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #x24 :g #x4a :b #x4e :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x51 :a #x80) + (new 'static 'rgba :r #x2c :g #x56 :b #x54 :a #x80) + (new 'static 'rgba :r #x2f :g #x57 :b #x57 :a #x80) + (new 'static 'rgba :r #x2e :g #x56 :b #x52 :a #x80) + (new 'static 'rgba :r #x2c :g #x54 :b #x4f :a #x80) + (new 'static 'rgba :r #x2b :g #x52 :b #x4d :a #x80) + (new 'static 'rgba :r #x2c :g #x53 :b #x4e :a #x80) + (new 'static 'rgba :r #x2b :g #x53 :b #x4d :a #x80) + (new 'static 'rgba :r #x2c :g #x54 :b #x4f :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x41 :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x22 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x16 :g #x43 :b #x40 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x3e :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x3b :a #x80) + (new 'static 'rgba :r #xb :g #x3f :b #x3d :a #x80) + (new 'static 'rgba :r #x9 :g #x3d :b #x3a :a #x80) + (new 'static 'rgba :r #x7 :g #x3b :b #x3a :a #x80) + (new 'static 'rgba :r #x6 :g #x39 :b #x38 :a #x80) + (new 'static 'rgba :r #x6 :g #x34 :b #x36 :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x36 :a #x80) + (new 'static 'rgba :r #x5 :g #x32 :b #x36 :a #x80) + (new 'static 'rgba :r #x5 :g #x37 :b #x38 :a #x80) + (new 'static 'rgba :r #x6 :g #x3a :b #x3a :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x40 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x4d :b #x48 :a #x80) + (new 'static 'rgba :r #x21 :g #x4d :b #x4c :a #x80) + (new 'static 'rgba :r #x22 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x20 :g #x4f :b #x4e :a #x80) + (new 'static 'rgba :r #x1d :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x1b :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x4d :a #x80) + (new 'static 'rgba :r #x21 :g #x3f :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x21 :g #x41 :b #x49 :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x50 :a #x80) + (new 'static 'rgba :r #x2c :g #x55 :b #x55 :a #x80) + (new 'static 'rgba :r #x31 :g #x5a :b #x58 :a #x80) + (new 'static 'rgba :r #x31 :g #x5a :b #x57 :a #x80) + (new 'static 'rgba :r #x30 :g #x58 :b #x51 :a #x80) + (new 'static 'rgba :r #x2d :g #x54 :b #x4a :a #x80) + (new 'static 'rgba :r #x29 :g #x4f :b #x47 :a #x80) + (new 'static 'rgba :r #x29 :g #x50 :b #x47 :a #x80) + (new 'static 'rgba :r #x2a :g #x51 :b #x4c :a #x80) + (new 'static 'rgba :r #x2c :g #x52 :b #x4d :a #x80) + (new 'static 'rgba :r #x2a :g #x52 :b #x4a :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4b :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4b :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x16 :g #x44 :b #x41 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x3d :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x3b :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x3b :a #x80) + (new 'static 'rgba :r #x7 :g #x3c :b #x39 :a #x80) + (new 'static 'rgba :r #x6 :g #x39 :b #x37 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x37 :a #x80) + (new 'static 'rgba :r #x6 :g #x31 :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x2e :b #x34 :a #x80) + (new 'static 'rgba :r #x6 :g #x2e :b #x34 :a #x80) + (new 'static 'rgba :r #x6 :g #x30 :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x36 :a #x80) + (new 'static 'rgba :r #x6 :g #x39 :b #x36 :a #x80) + (new 'static 'rgba :r #x9 :g #x3d :b #x3b :a #x80) + (new 'static 'rgba :r #x11 :g #x40 :b #x3d :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x45 :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x4a :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x25 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x1f :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x1d :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x1e :g #x4c :b #x4e :a #x80) + (new 'static 'rgba :r #x22 :g #x43 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x41 :b #x49 :a #x80) + (new 'static 'rgba :r #x28 :g #x4b :b #x51 :a #x80) + (new 'static 'rgba :r #x2e :g #x56 :b #x58 :a #x80) + (new 'static 'rgba :r #x33 :g #x5a :b #x59 :a #x80) + (new 'static 'rgba :r #x33 :g #x59 :b #x53 :a #x80) + (new 'static 'rgba :r #x2f :g #x56 :b #x4a :a #x80) + (new 'static 'rgba :r #x29 :g #x4d :b #x3e :a #x80) + (new 'static 'rgba :r #x25 :g #x49 :b #x3a :a #x80) + (new 'static 'rgba :r #x24 :g #x49 :b #x3c :a #x80) + (new 'static 'rgba :r #x26 :g #x4b :b #x3f :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x3e :a #x80) + (new 'static 'rgba :r #x23 :g #x4a :b #x3e :a #x80) + (new 'static 'rgba :r #x24 :g #x4a :b #x42 :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x46 :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x16 :g #x40 :b #x41 :a #x80) + (new 'static 'rgba :r #x17 :g #x44 :b #x44 :a #x80) + (new 'static 'rgba :r #x10 :g #x41 :b #x3d :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x3e :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x3b :a #x80) + (new 'static 'rgba :r #x7 :g #x3a :b #x3a :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x39 :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x36 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x2f :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x2b :b #x32 :a #x80) + (new 'static 'rgba :r #x7 :g #x2c :b #x34 :a #x80) + (new 'static 'rgba :r #x6 :g #x2f :b #x34 :a #x80) + (new 'static 'rgba :r #x5 :g #x35 :b #x37 :a #x80) + (new 'static 'rgba :r #x8 :g #x3b :b #x3a :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x3f :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x25 :g #x4e :b #x4a :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x51 :a #x80) + (new 'static 'rgba :r #x2a :g #x50 :b #x51 :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x52 :a #x80) + (new 'static 'rgba :r #x28 :g #x52 :b #x50 :a #x80) + (new 'static 'rgba :r #x27 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x1e :g #x50 :b #x50 :a #x80) + (new 'static 'rgba :r #x1f :g #x50 :b #x51 :a #x80) + (new 'static 'rgba :r #x21 :g #x42 :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x22 :g #x3d :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x40 :b #x48 :a #x80) + (new 'static 'rgba :r #x27 :g #x4b :b #x52 :a #x80) + (new 'static 'rgba :r #x2f :g #x57 :b #x57 :a #x80) + (new 'static 'rgba :r #x32 :g #x5a :b #x55 :a #x80) + (new 'static 'rgba :r #x30 :g #x53 :b #x4a :a #x80) + (new 'static 'rgba :r #x2a :g #x4f :b #x3d :a #x80) + (new 'static 'rgba :r #x24 :g #x49 :b #x38 :a #x80) + (new 'static 'rgba :r #x21 :g #x45 :b #x31 :a #x80) + (new 'static 'rgba :r #x21 :g #x44 :b #x31 :a #x80) + (new 'static 'rgba :r #x1e :g #x43 :b #x31 :a #x80) + (new 'static 'rgba :r #x1d :g #x41 :b #x30 :a #x80) + (new 'static 'rgba :r #x1c :g #x42 :b #x30 :a #x80) + (new 'static 'rgba :r #x20 :g #x44 :b #x36 :a #x80) + (new 'static 'rgba :r #x23 :g #x4a :b #x45 :a #x80) + (new 'static 'rgba :r #x1e :g #x45 :b #x47 :a #x80) + (new 'static 'rgba :r #x27 :g #x4d :b #x4e :a #x80) + (new 'static 'rgba :r #x23 :g #x4a :b #x4b :a #x80) + (new 'static 'rgba :r #x1c :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x11 :g #x42 :b #x3f :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x3d :a #x80) + (new 'static 'rgba :r #xa :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #x7 :g #x3b :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x38 :b #x39 :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x36 :a #x80) + (new 'static 'rgba :r #x7 :g #x31 :b #x36 :a #x80) + (new 'static 'rgba :r #x6 :g #x2e :b #x33 :a #x80) + (new 'static 'rgba :r #x1 :g #x16 :b #x23 :a #x80) + (new 'static 'rgba :r #x7 :g #x2e :b #x33 :a #x80) + (new 'static 'rgba :r #x7 :g #x34 :b #x37 :a #x80) + (new 'static 'rgba :r #x4 :g #x32 :b #x36 :a #x80) + (new 'static 'rgba :r #x9 :g #x3b :b #x38 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x3f :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x21 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x2c :g #x55 :b #x52 :a #x80) + (new 'static 'rgba :r #x2a :g #x52 :b #x53 :a #x80) + (new 'static 'rgba :r #x2b :g #x55 :b #x52 :a #x80) + (new 'static 'rgba :r #x29 :g #x53 :b #x52 :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x20 :g #x52 :b #x4e :a #x80) + (new 'static 'rgba :r #x1e :g #x4f :b #x50 :a #x80) + (new 'static 'rgba :r #x20 :g #x46 :b #x4c :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x25 :g #x4b :b #x51 :a #x80) + (new 'static 'rgba :r #x21 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x52 :a #x80) + (new 'static 'rgba :r #x30 :g #x57 :b #x57 :a #x80) + (new 'static 'rgba :r #x30 :g #x55 :b #x48 :a #x80) + (new 'static 'rgba :r #x2b :g #x4e :b #x3b :a #x80) + (new 'static 'rgba :r #x25 :g #x47 :b #x35 :a #x80) + (new 'static 'rgba :r #x21 :g #x44 :b #x2c :a #x80) + (new 'static 'rgba :r #x1e :g #x3f :b #x2b :a #x80) + (new 'static 'rgba :r #x1d :g #x40 :b #x29 :a #x80) + (new 'static 'rgba :r #x1b :g #x3f :b #x2b :a #x80) + (new 'static 'rgba :r #x1c :g #x3e :b #x29 :a #x80) + (new 'static 'rgba :r #x1b :g #x3e :b #x2b :a #x80) + (new 'static 'rgba :r #x1e :g #x41 :b #x30 :a #x80) + (new 'static 'rgba :r #x27 :g #x4c :b #x45 :a #x80) + (new 'static 'rgba :r #x2b :g #x54 :b #x4f :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x51 :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x1d :g #x45 :b #x47 :a #x80) + (new 'static 'rgba :r #x17 :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #xe :g #x41 :b #x3e :a #x80) + (new 'static 'rgba :r #xa :g #x3d :b #x3a :a #x80) + (new 'static 'rgba :r #x8 :g #x3b :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x3a :b #x37 :a #x80) + (new 'static 'rgba :r #x6 :g #x35 :b #x38 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x35 :a #x80) + (new 'static 'rgba :r #x5 :g #x28 :b #x31 :a #x80) + (new 'static 'rgba :r #x6 :g #x2c :b #x33 :a #x80) + (new 'static 'rgba :r #x6 :g #x30 :b #x34 :a #x80) + (new 'static 'rgba :r #x5 :g #x35 :b #x38 :a #x80) + (new 'static 'rgba :r #x9 :g #x3d :b #x3b :a #x80) + (new 'static 'rgba :r #x14 :g #x44 :b #x41 :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x2b :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x31 :g #x57 :b #x57 :a #x80) + (new 'static 'rgba :r #x2b :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x2e :g #x57 :b #x55 :a #x80) + (new 'static 'rgba :r #x2b :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x27 :g #x54 :b #x54 :a #x80) + (new 'static 'rgba :r #x21 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x1f :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x52 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x21 :g #x42 :b #x4a :a #x80) + (new 'static 'rgba :r #x28 :g #x52 :b #x53 :a #x80) + (new 'static 'rgba :r #x30 :g #x57 :b #x53 :a #x80) + (new 'static 'rgba :r #x2e :g #x52 :b #x43 :a #x80) + (new 'static 'rgba :r #x27 :g #x49 :b #x37 :a #x80) + (new 'static 'rgba :r #x23 :g #x43 :b #x2d :a #x80) + (new 'static 'rgba :r #x1e :g #x40 :b #x2a :a #x80) + (new 'static 'rgba :r #x1d :g #x3e :b #x27 :a #x80) + (new 'static 'rgba :r #x1b :g #x3d :b #x24 :a #x80) + (new 'static 'rgba :r #x1a :g #x3d :b #x27 :a #x80) + (new 'static 'rgba :r #x18 :g #x3b :b #x23 :a #x80) + (new 'static 'rgba :r #x19 :g #x3d :b #x23 :a #x80) + (new 'static 'rgba :r #x1d :g #x40 :b #x2c :a #x80) + (new 'static 'rgba :r #x22 :g #x49 :b #x3f :a #x80) + (new 'static 'rgba :r #x28 :g #x52 :b #x4b :a #x80) + (new 'static 'rgba :r #x2b :g #x52 :b #x50 :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #x9 :g #x3d :b #x3b :a #x80) + (new 'static 'rgba :r #x6 :g #x3a :b #x38 :a #x80) + (new 'static 'rgba :r #x6 :g #x38 :b #x38 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x37 :a #x80) + (new 'static 'rgba :r #x6 :g #x32 :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x2f :b #x34 :a #x80) + (new 'static 'rgba :r #x7 :g #x30 :b #x36 :a #x80) + (new 'static 'rgba :r #x7 :g #x33 :b #x37 :a #x80) + (new 'static 'rgba :r #x6 :g #x38 :b #x37 :a #x80) + (new 'static 'rgba :r #x9 :g #x3d :b #x39 :a #x80) + (new 'static 'rgba :r #x16 :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x25 :g #x4e :b #x4b :a #x80) + (new 'static 'rgba :r #x2c :g #x53 :b #x50 :a #x80) + (new 'static 'rgba :r #x35 :g #x5a :b #x59 :a #x80) + (new 'static 'rgba :r #x2f :g #x57 :b #x55 :a #x80) + (new 'static 'rgba :r #x31 :g #x59 :b #x57 :a #x80) + (new 'static 'rgba :r #x2d :g #x56 :b #x56 :a #x80) + (new 'static 'rgba :r #x27 :g #x54 :b #x54 :a #x80) + (new 'static 'rgba :r #x22 :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x20 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x52 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x21 :g #x3f :b #x4a :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x55 :a #x80) + (new 'static 'rgba :r #x2f :g #x55 :b #x4e :a #x80) + (new 'static 'rgba :r #x29 :g #x4c :b #x3c :a #x80) + (new 'static 'rgba :r #x24 :g #x45 :b #x30 :a #x80) + (new 'static 'rgba :r #x21 :g #x41 :b #x29 :a #x80) + (new 'static 'rgba :r #x1d :g #x3e :b #x26 :a #x80) + (new 'static 'rgba :r #x1b :g #x3d :b #x24 :a #x80) + (new 'static 'rgba :r #x19 :g #x3c :b #x21 :a #x80) + (new 'static 'rgba :r #x1a :g #x3c :b #x25 :a #x80) + (new 'static 'rgba :r #x1b :g #x3e :b #x26 :a #x80) + (new 'static 'rgba :r #x1c :g #x3f :b #x2a :a #x80) + (new 'static 'rgba :r #x1f :g #x42 :b #x30 :a #x80) + (new 'static 'rgba :r #x21 :g #x46 :b #x39 :a #x80) + (new 'static 'rgba :r #x27 :g #x4c :b #x45 :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4b :a #x80) + (new 'static 'rgba :r #x26 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x1c :g #x45 :b #x46 :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x43 :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x3e :a #x80) + (new 'static 'rgba :r #xd :g #x3e :b #x3e :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x42 :a #x80) + (new 'static 'rgba :r #x8 :g #x3d :b #x38 :a #x80) + (new 'static 'rgba :r #x7 :g #x3a :b #x38 :a #x80) + (new 'static 'rgba :r #x6 :g #x38 :b #x36 :a #x80) + (new 'static 'rgba :r #x6 :g #x36 :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x35 :a #x80) + (new 'static 'rgba :r #x6 :g #x33 :b #x35 :a #x80) + (new 'static 'rgba :r #x7 :g #x37 :b #x37 :a #x80) + (new 'static 'rgba :r #x5 :g #x39 :b #x36 :a #x80) + (new 'static 'rgba :r #xa :g #x3d :b #x3c :a #x80) + (new 'static 'rgba :r #x14 :g #x44 :b #x41 :a #x80) + (new 'static 'rgba :r #x1a :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x34 :g #x58 :b #x57 :a #x80) + (new 'static 'rgba :r #x34 :g #x59 :b #x56 :a #x80) + (new 'static 'rgba :r #x2e :g #x56 :b #x54 :a #x80) + (new 'static 'rgba :r #x2c :g #x56 :b #x54 :a #x80) + (new 'static 'rgba :r #x28 :g #x55 :b #x55 :a #x80) + (new 'static 'rgba :r #x21 :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x1f :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4e :a #x80) + (new 'static 'rgba :r #x21 :g #x3b :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x29 :g #x4c :b #x52 :a #x80) + (new 'static 'rgba :r #x30 :g #x57 :b #x50 :a #x80) + (new 'static 'rgba :r #x27 :g #x4a :b #x39 :a #x80) + (new 'static 'rgba :r #x21 :g #x42 :b #x2f :a #x80) + (new 'static 'rgba :r #x1f :g #x41 :b #x28 :a #x80) + (new 'static 'rgba :r #x1c :g #x3f :b #x29 :a #x80) + (new 'static 'rgba :r #x1d :g #x3f :b #x26 :a #x80) + (new 'static 'rgba :r #x1d :g #x40 :b #x27 :a #x80) + (new 'static 'rgba :r #x1d :g #x40 :b #x29 :a #x80) + (new 'static 'rgba :r #x1f :g #x43 :b #x31 :a #x80) + (new 'static 'rgba :r #x23 :g #x48 :b #x36 :a #x80) + (new 'static 'rgba :r #x23 :g #x48 :b #x3c :a #x80) + (new 'static 'rgba :r #x23 :g #x49 :b #x3d :a #x80) + (new 'static 'rgba :r #x23 :g #x4a :b #x40 :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x48 :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x19 :g #x42 :b #x44 :a #x80) + (new 'static 'rgba :r #x14 :g #x40 :b #x41 :a #x80) + (new 'static 'rgba :r #xf :g #x3f :b #x3e :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #xa :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #x8 :g #x3c :b #x3a :a #x80) + (new 'static 'rgba :r #x6 :g #x3a :b #x39 :a #x80) + (new 'static 'rgba :r #x6 :g #x38 :b #x38 :a #x80) + (new 'static 'rgba :r #x5 :g #x34 :b #x37 :a #x80) + (new 'static 'rgba :r #x5 :g #x37 :b #x37 :a #x80) + (new 'static 'rgba :r #x6 :g #x39 :b #x37 :a #x80) + (new 'static 'rgba :r #x7 :g #x3c :b #x3a :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x3c :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x22 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x2a :g #x51 :b #x4c :a #x80) + (new 'static 'rgba :r #x2e :g #x54 :b #x51 :a #x80) + (new 'static 'rgba :r #x2e :g #x55 :b #x54 :a #x80) + (new 'static 'rgba :r #x2c :g #x54 :b #x54 :a #x80) + (new 'static 'rgba :r #x2a :g #x55 :b #x55 :a #x80) + (new 'static 'rgba :r #x25 :g #x53 :b #x53 :a #x80) + (new 'static 'rgba :r #x21 :g #x53 :b #x50 :a #x80) + (new 'static 'rgba :r #x1f :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x21 :g #x47 :b #x4d :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x3a :b #x44 :a #x80) + (new 'static 'rgba :r #x27 :g #x49 :b #x4e :a #x80) + (new 'static 'rgba :r #x2e :g #x55 :b #x50 :a #x80) + (new 'static 'rgba :r #x26 :g #x4a :b #x3b :a #x80) + (new 'static 'rgba :r #x22 :g #x47 :b #x32 :a #x80) + (new 'static 'rgba :r #x20 :g #x43 :b #x2c :a #x80) + (new 'static 'rgba :r #x1f :g #x42 :b #x2c :a #x80) + (new 'static 'rgba :r #x20 :g #x44 :b #x2d :a #x80) + (new 'static 'rgba :r #x20 :g #x44 :b #x30 :a #x80) + (new 'static 'rgba :r #x22 :g #x46 :b #x34 :a #x80) + (new 'static 'rgba :r #x26 :g #x49 :b #x3d :a #x80) + (new 'static 'rgba :r #x29 :g #x4f :b #x45 :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x45 :a #x80) + (new 'static 'rgba :r #x26 :g #x4d :b #x46 :a #x80) + (new 'static 'rgba :r #x25 :g #x4e :b #x45 :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x49 :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x17 :g #x40 :b #x41 :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x20 :g #x48 :b #x49 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x41 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x3c :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x3f :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3a :a #x80) + (new 'static 'rgba :r #x8 :g #x3d :b #x38 :a #x80) + (new 'static 'rgba :r #x7 :g #x3b :b #x39 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x3e :a #x80) + (new 'static 'rgba :r #x6 :g #x3a :b #x3a :a #x80) + (new 'static 'rgba :r #x8 :g #x3c :b #x39 :a #x80) + (new 'static 'rgba :r #xb :g #x3d :b #x3d :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x3c :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x43 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x43 :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4f :a #x80) + (new 'static 'rgba :r #x29 :g #x53 :b #x50 :a #x80) + (new 'static 'rgba :r #x29 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x27 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x24 :g #x53 :b #x53 :a #x80) + (new 'static 'rgba :r #x1f :g #x53 :b #x4e :a #x80) + (new 'static 'rgba :r #x1f :g #x4e :b #x51 :a #x80) + (new 'static 'rgba :r #x22 :g #x46 :b #x4d :a #x80) + (new 'static 'rgba :r #x22 :g #x39 :b #x48 :a #x80) + (new 'static 'rgba :r #x21 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x37 :b #x43 :a #x80) + (new 'static 'rgba :r #x25 :g #x49 :b #x4d :a #x80) + (new 'static 'rgba :r #x2d :g #x53 :b #x4d :a #x80) + (new 'static 'rgba :r #x28 :g #x4d :b #x40 :a #x80) + (new 'static 'rgba :r #x26 :g #x4a :b #x39 :a #x80) + (new 'static 'rgba :r #x25 :g #x48 :b #x37 :a #x80) + (new 'static 'rgba :r #x24 :g #x47 :b #x35 :a #x80) + (new 'static 'rgba :r #x24 :g #x47 :b #x35 :a #x80) + (new 'static 'rgba :r #x26 :g #x49 :b #x3b :a #x80) + (new 'static 'rgba :r #x27 :g #x4c :b #x3d :a #x80) + (new 'static 'rgba :r #x29 :g #x4e :b #x46 :a #x80) + (new 'static 'rgba :r #x2c :g #x52 :b #x4b :a #x80) + (new 'static 'rgba :r #x2c :g #x54 :b #x4c :a #x80) + (new 'static 'rgba :r #x2b :g #x53 :b #x4b :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x29 :g #x50 :b #x4b :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x2b :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x2a :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x48 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x3e :a #x80) + (new 'static 'rgba :r #x12 :g #x40 :b #x3e :a #x80) + (new 'static 'rgba :r #xf :g #x40 :b #x3f :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x3a :a #x80) + (new 'static 'rgba :r #xc :g #x3f :b #x3a :a #x80) + (new 'static 'rgba :r #xb :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #xc :g #x3e :b #x3c :a #x80) + (new 'static 'rgba :r #xd :g #x3f :b #x3c :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x3e :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x4a :b #x46 :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x26 :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x26 :g #x51 :b #x51 :a #x80) + (new 'static 'rgba :r #x23 :g #x51 :b #x51 :a #x80) + (new 'static 'rgba :r #x21 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x1f :g #x4f :b #x51 :a #x80) + (new 'static 'rgba :r #x23 :g #x44 :b #x4c :a #x80) + (new 'static 'rgba :r #x22 :g #x3b :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x37 :b #x42 :a #x80) + (new 'static 'rgba :r #x24 :g #x49 :b #x4d :a #x80) + (new 'static 'rgba :r #x2d :g #x56 :b #x50 :a #x80) + (new 'static 'rgba :r #x2d :g #x53 :b #x47 :a #x80) + (new 'static 'rgba :r #x2a :g #x50 :b #x42 :a #x80) + (new 'static 'rgba :r #x28 :g #x4d :b #x40 :a #x80) + (new 'static 'rgba :r #x27 :g #x4c :b #x3d :a #x80) + (new 'static 'rgba :r #x28 :g #x4e :b #x3e :a #x80) + (new 'static 'rgba :r #x29 :g #x4e :b #x42 :a #x80) + (new 'static 'rgba :r #x2b :g #x50 :b #x47 :a #x80) + (new 'static 'rgba :r #x2a :g #x4f :b #x49 :a #x80) + (new 'static 'rgba :r #x2c :g #x54 :b #x4c :a #x80) + (new 'static 'rgba :r #x29 :g #x4f :b #x47 :a #x80) + (new 'static 'rgba :r #x2a :g #x52 :b #x50 :a #x80) + (new 'static 'rgba :r #x29 :g #x50 :b #x4b :a #x80) + (new 'static 'rgba :r #x2c :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x2a :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x29 :g #x50 :b #x4b :a #x80) + (new 'static 'rgba :r #x27 :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x22 :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x19 :g #x43 :b #x43 :a #x80) + (new 'static 'rgba :r #x17 :g #x42 :b #x42 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x13 :g #x40 :b #x41 :a #x80) + (new 'static 'rgba :r #x13 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x14 :g #x40 :b #x41 :a #x80) + (new 'static 'rgba :r #x17 :g #x42 :b #x42 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x44 :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x4d :a #x80) + (new 'static 'rgba :r #x22 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x1f :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x1c :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x1c :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x4f :a #x80) + (new 'static 'rgba :r #x23 :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x39 :b #x43 :a #x80) + (new 'static 'rgba :r #x23 :g #x49 :b #x4d :a #x80) + (new 'static 'rgba :r #x2f :g #x59 :b #x53 :a #x80) + (new 'static 'rgba :r #x32 :g #x5a :b #x52 :a #x80) + (new 'static 'rgba :r #x2f :g #x56 :b #x4e :a #x80) + (new 'static 'rgba :r #x2d :g #x52 :b #x4c :a #x80) + (new 'static 'rgba :r #x2b :g #x51 :b #x46 :a #x80) + (new 'static 'rgba :r #x2b :g #x51 :b #x48 :a #x80) + (new 'static 'rgba :r #x2b :g #x52 :b #x4c :a #x80) + (new 'static 'rgba :r #x27 :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x28 :g #x4d :b #x44 :a #x80) + (new 'static 'rgba :r #x26 :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x29 :g #x52 :b #x4e :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x26 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x2c :g #x53 :b #x50 :a #x80) + (new 'static 'rgba :r #x2b :g #x53 :b #x4d :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x29 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x2b :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x46 :a #x80) + (new 'static 'rgba :r #x1b :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x1b :g #x44 :b #x45 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x1b :g #x45 :b #x45 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x1c :g #x46 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x4a :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x24 :g #x4f :b #x4e :a #x80) + (new 'static 'rgba :r #x1c :g #x4e :b #x4a :a #x80) + (new 'static 'rgba :r #x1a :g #x4e :b #x49 :a #x80) + (new 'static 'rgba :r #x1b :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x20 :g #x48 :b #x4c :a #x80) + (new 'static 'rgba :r #x23 :g #x3d :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x3a :b #x45 :a #x80) + (new 'static 'rgba :r #x24 :g #x45 :b #x4c :a #x80) + (new 'static 'rgba :r #x2e :g #x59 :b #x58 :a #x80) + (new 'static 'rgba :r #x33 :g #x5c :b #x59 :a #x80) + (new 'static 'rgba :r #x31 :g #x5a :b #x56 :a #x80) + (new 'static 'rgba :r #x30 :g #x58 :b #x53 :a #x80) + (new 'static 'rgba :r #x2c :g #x54 :b #x4e :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x4c :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x29 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x48 :a #x80) + (new 'static 'rgba :r #x27 :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4a :a #x80) + (new 'static 'rgba :r #x28 :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x27 :g #x4e :b #x4b :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x46 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x45 :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x45 :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x49 :a #x80) + (new 'static 'rgba :r #x1a :g #x4b :b #x47 :a #x80) + (new 'static 'rgba :r #x18 :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x18 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #x22 :g #x3c :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1b :g #x39 :b #x43 :a #x80) + (new 'static 'rgba :r #x23 :g #x44 :b #x4a :a #x80) + (new 'static 'rgba :r #x2d :g #x55 :b #x57 :a #x80) + (new 'static 'rgba :r #x32 :g #x5b :b #x5a :a #x80) + (new 'static 'rgba :r #x32 :g #x5b :b #x55 :a #x80) + (new 'static 'rgba :r #x30 :g #x57 :b #x55 :a #x80) + (new 'static 'rgba :r #x2d :g #x54 :b #x50 :a #x80) + (new 'static 'rgba :r #x2b :g #x53 :b #x50 :a #x80) + (new 'static 'rgba :r #x29 :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x4c :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x21 :g #x4c :b #x47 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x27 :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x46 :a #x80) + (new 'static 'rgba :r #x26 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x1c :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x26 :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x26 :g #x4f :b #x4b :a #x80) + (new 'static 'rgba :r #x25 :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x1a :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x19 :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x17 :g #x4a :b #x46 :a #x80) + (new 'static 'rgba :r #x16 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x17 :g #x4a :b #x4a :a #x80) + (new 'static 'rgba :r #x1c :g #x45 :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x40 :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x54 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x3a :b #x44 :a #x80) + (new 'static 'rgba :r #x22 :g #x45 :b #x4b :a #x80) + (new 'static 'rgba :r #x2e :g #x56 :b #x54 :a #x80) + (new 'static 'rgba :r #x34 :g #x5d :b #x5a :a #x80) + (new 'static 'rgba :r #x32 :g #x5a :b #x55 :a #x80) + (new 'static 'rgba :r #x2f :g #x56 :b #x52 :a #x80) + (new 'static 'rgba :r #x2b :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x29 :g #x50 :b #x4f :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x49 :a #x80) + (new 'static 'rgba :r #x1b :g #x48 :b #x44 :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x1e :g #x45 :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x1a :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x42 :a #x80) + (new 'static 'rgba :r #x1b :g #x44 :b #x45 :a #x80) + (new 'static 'rgba :r #x1c :g #x46 :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x1e :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x24 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x4e :a #x80) + (new 'static 'rgba :r #x2b :g #x51 :b #x50 :a #x80) + (new 'static 'rgba :r #x2b :g #x51 :b #x50 :a #x80) + (new 'static 'rgba :r #x2b :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x29 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x18 :g #x43 :b #x44 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x44 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x46 :a #x80) + (new 'static 'rgba :r #x15 :g #x48 :b #x44 :a #x80) + (new 'static 'rgba :r #x14 :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x17 :g #x49 :b #x4b :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x3f :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x22 :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x3c :b #x46 :a #x80) + (new 'static 'rgba :r #x26 :g #x4a :b #x4f :a #x80) + (new 'static 'rgba :r #x30 :g #x59 :b #x58 :a #x80) + (new 'static 'rgba :r #x35 :g #x5c :b #x58 :a #x80) + (new 'static 'rgba :r #x31 :g #x59 :b #x56 :a #x80) + (new 'static 'rgba :r #x2f :g #x55 :b #x51 :a #x80) + (new 'static 'rgba :r #x32 :g #x56 :b #x52 :a #x80) + (new 'static 'rgba :r #x2b :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x4b :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x22 :g #x48 :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x40 :a #x80) + (new 'static 'rgba :r #x15 :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #x15 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x16 :g #x42 :b #x42 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x19 :g #x44 :b #x44 :a #x80) + (new 'static 'rgba :r #x1a :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x1d :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4e :a #x80) + (new 'static 'rgba :r #x29 :g #x51 :b #x4e :a #x80) + (new 'static 'rgba :r #x27 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x26 :g #x4d :b #x4e :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x1f :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x46 :a #x80) + (new 'static 'rgba :r #x19 :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x15 :g #x48 :b #x44 :a #x80) + (new 'static 'rgba :r #x14 :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x15 :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x1a :g #x46 :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x43 :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x3b :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x23 :g #x46 :b #x4a :a #x80) + (new 'static 'rgba :r #x2f :g #x56 :b #x58 :a #x80) + (new 'static 'rgba :r #x34 :g #x5d :b #x5b :a #x80) + (new 'static 'rgba :r #x33 :g #x5b :b #x56 :a #x80) + (new 'static 'rgba :r #x31 :g #x58 :b #x57 :a #x80) + (new 'static 'rgba :r #x31 :g #x57 :b #x53 :a #x80) + (new 'static 'rgba :r #x33 :g #x58 :b #x55 :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x46 :a #x80) + (new 'static 'rgba :r #x1c :g #x46 :b #x46 :a #x80) + (new 'static 'rgba :r #x18 :g #x45 :b #x44 :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x42 :a #x80) + (new 'static 'rgba :r #x12 :g #x43 :b #x41 :a #x80) + (new 'static 'rgba :r #x12 :g #x43 :b #x41 :a #x80) + (new 'static 'rgba :r #x10 :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #x12 :g #x42 :b #x3f :a #x80) + (new 'static 'rgba :r #x15 :g #x44 :b #x43 :a #x80) + (new 'static 'rgba :r #x19 :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x13 :g #x42 :b #x3e :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x19 :g #x43 :b #x44 :a #x80) + (new 'static 'rgba :r #x1b :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x1c :g #x46 :b #x44 :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4b :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x28 :g #x4e :b #x4f :a #x80) + (new 'static 'rgba :r #x23 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x48 :a #x80) + (new 'static 'rgba :r #x1e :g #x48 :b #x45 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x1b :g #x45 :b #x46 :a #x80) + (new 'static 'rgba :r #x18 :g #x47 :b #x46 :a #x80) + (new 'static 'rgba :r #x18 :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x15 :g #x48 :b #x43 :a #x80) + (new 'static 'rgba :r #x15 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x1d :g #x43 :b #x4b :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x27 :g #x48 :b #x4e :a #x80) + (new 'static 'rgba :r #x38 :g #x60 :b #x5e :a #x80) + (new 'static 'rgba :r #x38 :g #x60 :b #x5c :a #x80) + (new 'static 'rgba :r #x36 :g #x5d :b #x5a :a #x80) + (new 'static 'rgba :r #x30 :g #x57 :b #x55 :a #x80) + (new 'static 'rgba :r #x32 :g #x58 :b #x54 :a #x80) + (new 'static 'rgba :r #x24 :g #x4e :b #x4b :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4e :a #x80) + (new 'static 'rgba :r #x22 :g #x4a :b #x4b :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x18 :g #x44 :b #x44 :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x43 :a #x80) + (new 'static 'rgba :r #x17 :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #xe :g #x41 :b #x40 :a #x80) + (new 'static 'rgba :r #xe :g #x41 :b #x3d :a #x80) + (new 'static 'rgba :r #xd :g #x40 :b #x3f :a #x80) + (new 'static 'rgba :r #xc :g #x41 :b #x3f :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x40 :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x3f :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x3d :a #x80) + (new 'static 'rgba :r #x10 :g #x41 :b #x40 :a #x80) + (new 'static 'rgba :r #x13 :g #x43 :b #x3f :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x43 :a #x80) + (new 'static 'rgba :r #x1a :g #x43 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x45 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x23 :g #x4a :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x44 :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x1b :g #x47 :b #x45 :a #x80) + (new 'static 'rgba :r #x1b :g #x49 :b #x47 :a #x80) + (new 'static 'rgba :r #x1a :g #x4a :b #x46 :a #x80) + (new 'static 'rgba :r #x18 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x19 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x1c :g #x49 :b #x4b :a #x80) + (new 'static 'rgba :r #x21 :g #x42 :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x29 :g #x4a :b #x4f :a #x80) + (new 'static 'rgba :r #x38 :g #x61 :b #x5c :a #x80) + (new 'static 'rgba :r #x38 :g #x5f :b #x5a :a #x80) + (new 'static 'rgba :r #x35 :g #x5d :b #x5a :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x4e :a #x80) + (new 'static 'rgba :r #x2d :g #x55 :b #x51 :a #x80) + (new 'static 'rgba :r #x28 :g #x51 :b #x50 :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x12 :g #x44 :b #x42 :a #x80) + (new 'static 'rgba :r #xf :g #x42 :b #x42 :a #x80) + (new 'static 'rgba :r #xc :g #x41 :b #x3f :a #x80) + (new 'static 'rgba :r #xd :g #x40 :b #x3e :a #x80) + (new 'static 'rgba :r #xe :g #x3f :b #x3f :a #x80) + (new 'static 'rgba :r #xd :g #x3c :b #x3e :a #x80) + (new 'static 'rgba :r #xc :g #x3e :b #x3d :a #x80) + (new 'static 'rgba :r #x1e :g #x4a :b #x45 :a #x80) + (new 'static 'rgba :r #xc :g #x3f :b #x40 :a #x80) + (new 'static 'rgba :r #xd :g #x41 :b #x3e :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x40 :a #x80) + (new 'static 'rgba :r #xe :g #x41 :b #x40 :a #x80) + (new 'static 'rgba :r #x11 :g #x41 :b #x42 :a #x80) + (new 'static 'rgba :r #x15 :g #x43 :b #x43 :a #x80) + (new 'static 'rgba :r #x17 :g #x43 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x1d :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x48 :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4b :a #x80) + (new 'static 'rgba :r #x22 :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x25 :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x22 :g #x4a :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x4b :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x49 :a #x80) + (new 'static 'rgba :r #x1f :g #x4d :b #x4c :a #x80) + (new 'static 'rgba :r #x1e :g #x4f :b #x4b :a #x80) + (new 'static 'rgba :r #x1d :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x1c :g #x4c :b #x4e :a #x80) + (new 'static 'rgba :r #x1e :g #x46 :b #x4b :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x25 :g #x49 :b #x4e :a #x80) + (new 'static 'rgba :r #x2f :g #x5c :b #x5a :a #x80) + (new 'static 'rgba :r #x32 :g #x5b :b #x5a :a #x80) + (new 'static 'rgba :r #x33 :g #x5b :b #x5a :a #x80) + (new 'static 'rgba :r #x30 :g #x58 :b #x56 :a #x80) + (new 'static 'rgba :r #x29 :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4c :a #x80) + (new 'static 'rgba :r #x1d :g #x49 :b #x49 :a #x80) + (new 'static 'rgba :r #x19 :g #x49 :b #x46 :a #x80) + (new 'static 'rgba :r #x15 :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x11 :g #x46 :b #x41 :a #x80) + (new 'static 'rgba :r #xe :g #x42 :b #x41 :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x40 :a #x80) + (new 'static 'rgba :r #x10 :g #x3d :b #x41 :a #x80) + (new 'static 'rgba :r #x11 :g #x38 :b #x3f :a #x80) + (new 'static 'rgba :r #x11 :g #x39 :b #x3e :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x3e :a #x80) + (new 'static 'rgba :r #x10 :g #x3c :b #x40 :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x3f :a #x80) + (new 'static 'rgba :r #xe :g #x40 :b #x41 :a #x80) + (new 'static 'rgba :r #xe :g #x42 :b #x3f :a #x80) + (new 'static 'rgba :r #xf :g #x43 :b #x3f :a #x80) + (new 'static 'rgba :r #x11 :g #x44 :b #x3f :a #x80) + (new 'static 'rgba :r #x14 :g #x45 :b #x42 :a #x80) + (new 'static 'rgba :r #x16 :g #x45 :b #x43 :a #x80) + (new 'static 'rgba :r #x1b :g #x46 :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4a :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x48 :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x24 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x1f :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x23 :g #x4e :b #x4e :a #x80) + (new 'static 'rgba :r #x24 :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x25 :g #x50 :b #x51 :a #x80) + (new 'static 'rgba :r #x24 :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x4d :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x22 :g #x46 :b #x4c :a #x80) + (new 'static 'rgba :r #x28 :g #x59 :b #x57 :a #x80) + (new 'static 'rgba :r #x29 :g #x58 :b #x54 :a #x80) + (new 'static 'rgba :r #x29 :g #x56 :b #x53 :a #x80) + (new 'static 'rgba :r #x27 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x4e :b #x4e :a #x80) + (new 'static 'rgba :r #x1a :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x18 :g #x49 :b #x46 :a #x80) + (new 'static 'rgba :r #x15 :g #x48 :b #x47 :a #x80) + (new 'static 'rgba :r #x12 :g #x46 :b #x42 :a #x80) + (new 'static 'rgba :r #x11 :g #x44 :b #x44 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x13 :g #x38 :b #x40 :a #x80) + (new 'static 'rgba :r #x16 :g #x37 :b #x40 :a #x80) + (new 'static 'rgba :r #x16 :g #x36 :b #x3f :a #x80) + (new 'static 'rgba :r #x16 :g #x34 :b #x3e :a #x80) + (new 'static 'rgba :r #x16 :g #x39 :b #x3f :a #x80) + (new 'static 'rgba :r #x14 :g #x3a :b #x40 :a #x80) + (new 'static 'rgba :r #x13 :g #x3d :b #x41 :a #x80) + (new 'static 'rgba :r #x11 :g #x3f :b #x42 :a #x80) + (new 'static 'rgba :r #xf :g #x41 :b #x41 :a #x80) + (new 'static 'rgba :r #x10 :g #x42 :b #x43 :a #x80) + (new 'static 'rgba :r #x10 :g #x45 :b #x40 :a #x80) + (new 'static 'rgba :r #x24 :g #x4f :b #x48 :a #x80) + (new 'static 'rgba :r #x15 :g #x47 :b #x43 :a #x80) + (new 'static 'rgba :r #x19 :g #x48 :b #x45 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x25 :g #x4d :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4d :a #x80) + (new 'static 'rgba :r #x25 :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x22 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x25 :g #x4e :b #x4e :a #x80) + (new 'static 'rgba :r #x27 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x27 :g #x51 :b #x4d :a #x80) + (new 'static 'rgba :r #x28 :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x2a :g #x54 :b #x50 :a #x80) + (new 'static 'rgba :r #x2a :g #x54 :b #x54 :a #x80) + (new 'static 'rgba :r #x29 :g #x54 :b #x54 :a #x80) + (new 'static 'rgba :r #x22 :g #x54 :b #x53 :a #x80) + (new 'static 'rgba :r #x1f :g #x4c :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x3c :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x21 :g #x47 :b #x4b :a #x80) + (new 'static 'rgba :r #x25 :g #x55 :b #x54 :a #x80) + (new 'static 'rgba :r #x22 :g #x54 :b #x51 :a #x80) + (new 'static 'rgba :r #x21 :g #x51 :b #x51 :a #x80) + (new 'static 'rgba :r #x1e :g #x4d :b #x4b :a #x80) + (new 'static 'rgba :r #x19 :g #x4b :b #x49 :a #x80) + (new 'static 'rgba :r #x17 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x14 :g #x46 :b #x46 :a #x80) + (new 'static 'rgba :r #x14 :g #x46 :b #x43 :a #x80) + (new 'static 'rgba :r #x13 :g #x45 :b #x46 :a #x80) + (new 'static 'rgba :r #x15 :g #x3f :b #x43 :a #x80) + (new 'static 'rgba :r #x17 :g #x3c :b #x41 :a #x80) + (new 'static 'rgba :r #x19 :g #x36 :b #x41 :a #x80) + (new 'static 'rgba :r #x19 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #x18 :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x19 :g #x33 :b #x40 :a #x80) + (new 'static 'rgba :r #x19 :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x1a :g #x3a :b #x43 :a #x80) + (new 'static 'rgba :r #x19 :g #x3a :b #x42 :a #x80) + (new 'static 'rgba :r #x16 :g #x3f :b #x43 :a #x80) + (new 'static 'rgba :r #x14 :g #x41 :b #x44 :a #x80) + (new 'static 'rgba :r #x12 :g #x41 :b #x45 :a #x80) + (new 'static 'rgba :r #x12 :g #x46 :b #x45 :a #x80) + (new 'static 'rgba :r #x14 :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x15 :g #x47 :b #x47 :a #x80) + (new 'static 'rgba :r #x19 :g #x4a :b #x47 :a #x80) + (new 'static 'rgba :r #x1d :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x4a :b #x4a :a #x80) + (new 'static 'rgba :r #x23 :g #x4c :b #x4d :a #x80) + (new 'static 'rgba :r #x24 :g #x4c :b #x4e :a #x80) + (new 'static 'rgba :r #x25 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x4e :b #x4c :a #x80) + (new 'static 'rgba :r #x1e :g #x49 :b #x4a :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x28 :g #x4f :b #x50 :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x26 :g #x4e :b #x4f :a #x80) + (new 'static 'rgba :r #x2c :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x2b :g #x55 :b #x51 :a #x80) + (new 'static 'rgba :r #x2d :g #x57 :b #x55 :a #x80) + (new 'static 'rgba :r #x2d :g #x59 :b #x57 :a #x80) + (new 'static 'rgba :r #x2b :g #x57 :b #x54 :a #x80) + (new 'static 'rgba :r #x24 :g #x55 :b #x52 :a #x80) + (new 'static 'rgba :r #x20 :g #x4d :b #x50 :a #x80) + (new 'static 'rgba :r #x21 :g #x3e :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x3f :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x50 :a #x80) + (new 'static 'rgba :r #x20 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x1e :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x1b :g #x4f :b #x4a :a #x80) + (new 'static 'rgba :r #x18 :g #x4b :b #x48 :a #x80) + (new 'static 'rgba :r #x16 :g #x47 :b #x48 :a #x80) + (new 'static 'rgba :r #x14 :g #x44 :b #x45 :a #x80) + (new 'static 'rgba :r #x15 :g #x44 :b #x47 :a #x80) + (new 'static 'rgba :r #x17 :g #x41 :b #x45 :a #x80) + (new 'static 'rgba :r #x1a :g #x3b :b #x44 :a #x80) + (new 'static 'rgba :r #x1c :g #x44 :b #x48 :a #x80) + (new 'static 'rgba :r #x1d :g #x46 :b #x4a :a #x80) + (new 'static 'rgba :r #x1b :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1b :g #x31 :b #x40 :a #x80) + (new 'static 'rgba :r #x1b :g #x36 :b #x41 :a #x80) + (new 'static 'rgba :r #x1c :g #x37 :b #x43 :a #x80) + (new 'static 'rgba :r #x1c :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x1c :g #x3a :b #x45 :a #x80) + (new 'static 'rgba :r #x1b :g #x3e :b #x45 :a #x80) + (new 'static 'rgba :r #x19 :g #x3f :b #x45 :a #x80) + (new 'static 'rgba :r #x17 :g #x40 :b #x46 :a #x80) + (new 'static 'rgba :r #x15 :g #x46 :b #x48 :a #x80) + (new 'static 'rgba :r #x14 :g #x48 :b #x46 :a #x80) + (new 'static 'rgba :r #x17 :g #x4a :b #x48 :a #x80) + (new 'static 'rgba :r #x1a :g #x4c :b #x4a :a #x80) + (new 'static 'rgba :r #x1e :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x26 :g #x50 :b #x4f :a #x80) + (new 'static 'rgba :r #x24 :g #x4e :b #x4f :a #x80) + (new 'static 'rgba :r #x27 :g #x51 :b #x50 :a #x80) + (new 'static 'rgba :r #x28 :g #x50 :b #x51 :a #x80) + (new 'static 'rgba :r #x29 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x29 :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x2d :g #x56 :b #x53 :a #x80) + (new 'static 'rgba :r #x2b :g #x55 :b #x55 :a #x80) + (new 'static 'rgba :r #x2c :g #x55 :b #x52 :a #x80) + (new 'static 'rgba :r #x30 :g #x59 :b #x58 :a #x80) + (new 'static 'rgba :r #x2f :g #x58 :b #x59 :a #x80) + (new 'static 'rgba :r #x2a :g #x57 :b #x57 :a #x80) + (new 'static 'rgba :r #x23 :g #x56 :b #x51 :a #x80) + (new 'static 'rgba :r #x21 :g #x4e :b #x51 :a #x80) + (new 'static 'rgba :r #x23 :g #x3f :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x39 :b #x41 :a #x80) + (new 'static 'rgba :r #x1e :g #x3e :b #x47 :a #x80) + (new 'static 'rgba :r #x1f :g #x46 :b #x4c :a #x80) + (new 'static 'rgba :r #x1c :g #x4e :b #x4d :a #x80) + (new 'static 'rgba :r #x1b :g #x4e :b #x4a :a #x80) + (new 'static 'rgba :r #x19 :g #x49 :b #x4b :a #x80) + (new 'static 'rgba :r #x17 :g #x46 :b #x47 :a #x80) + (new 'static 'rgba :r #x18 :g #x43 :b #x47 :a #x80) + (new 'static 'rgba :r #x1a :g #x42 :b #x48 :a #x80) + (new 'static 'rgba :r #x1c :g #x3f :b #x46 :a #x80) + (new 'static 'rgba :r #x1c :g #x3a :b #x44 :a #x80) + (new 'static 'rgba :r #x1d :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x1d :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1e :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1e :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1e :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x1e :g #x3c :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x3e :b #x47 :a #x80) + (new 'static 'rgba :r #x1b :g #x42 :b #x49 :a #x80) + (new 'static 'rgba :r #x18 :g #x46 :b #x4a :a #x80) + (new 'static 'rgba :r #x18 :g #x4b :b #x4b :a #x80) + (new 'static 'rgba :r #x18 :g #x4d :b #x4a :a #x80) + (new 'static 'rgba :r #x1b :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x1e :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x20 :g #x50 :b #x4d :a #x80) + (new 'static 'rgba :r #x21 :g #x50 :b #x4e :a #x80) + (new 'static 'rgba :r #x22 :g #x50 :b #x4c :a #x80) + (new 'static 'rgba :r #x24 :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x27 :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x50 :a #x80) + (new 'static 'rgba :r #x26 :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x28 :g #x53 :b #x53 :a #x80) + (new 'static 'rgba :r #x29 :g #x55 :b #x50 :a #x80) + (new 'static 'rgba :r #x2b :g #x56 :b #x52 :a #x80) + (new 'static 'rgba :r #x2c :g #x58 :b #x56 :a #x80) + (new 'static 'rgba :r #x2c :g #x58 :b #x55 :a #x80) + (new 'static 'rgba :r #x2e :g #x58 :b #x58 :a #x80) + (new 'static 'rgba :r #x2c :g #x59 :b #x59 :a #x80) + (new 'static 'rgba :r #x26 :g #x58 :b #x52 :a #x80) + (new 'static 'rgba :r #x22 :g #x56 :b #x52 :a #x80) + (new 'static 'rgba :r #x22 :g #x4c :b #x4f :a #x80) + (new 'static 'rgba :r #x22 :g #x3c :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1a :g #x36 :b #x40 :a #x80) + (new 'static 'rgba :r #x1a :g #x36 :b #x40 :a #x80) + (new 'static 'rgba :r #x1c :g #x3a :b #x44 :a #x80) + (new 'static 'rgba :r #x1d :g #x44 :b #x49 :a #x80) + (new 'static 'rgba :r #x1c :g #x47 :b #x4b :a #x80) + (new 'static 'rgba :r #x1c :g #x45 :b #x48 :a #x80) + (new 'static 'rgba :r #x1c :g #x42 :b #x47 :a #x80) + (new 'static 'rgba :r #x1d :g #x40 :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x1f :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x1e :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x3f :b #x49 :a #x80) + (new 'static 'rgba :r #x1e :g #x43 :b #x4a :a #x80) + (new 'static 'rgba :r #x1d :g #x48 :b #x4d :a #x80) + (new 'static 'rgba :r #x1c :g #x4c :b #x4c :a #x80) + (new 'static 'rgba :r #x1b :g #x4f :b #x4d :a #x80) + (new 'static 'rgba :r #x1c :g #x50 :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x51 :b #x4f :a #x80) + (new 'static 'rgba :r #x1f :g #x52 :b #x4f :a #x80) + (new 'static 'rgba :r #x20 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x21 :g #x52 :b #x51 :a #x80) + (new 'static 'rgba :r #x23 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x23 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x23 :g #x53 :b #x4f :a #x80) + (new 'static 'rgba :r #x24 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x24 :g #x53 :b #x51 :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x50 :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x51 :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x53 :a #x80) + (new 'static 'rgba :r #x26 :g #x55 :b #x55 :a #x80) + (new 'static 'rgba :r #x28 :g #x56 :b #x56 :a #x80) + (new 'static 'rgba :r #x26 :g #x57 :b #x54 :a #x80) + (new 'static 'rgba :r #x22 :g #x54 :b #x55 :a #x80) + (new 'static 'rgba :r #x23 :g #x4f :b #x53 :a #x80) + (new 'static 'rgba :r #x24 :g #x41 :b #x4c :a #x80) + (new 'static 'rgba :r #x21 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x22 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x37 :b #x41 :a #x80) + (new 'static 'rgba :r #x1b :g #x35 :b #x41 :a #x80) + (new 'static 'rgba :r #x1b :g #x36 :b #x41 :a #x80) + (new 'static 'rgba :r #x1d :g #x3b :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x3d :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x1e :g #x3c :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x3e :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x22 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x22 :g #x38 :b #x46 :a #x80) + (new 'static 'rgba :r #x22 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3e :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x42 :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x45 :b #x4c :a #x80) + (new 'static 'rgba :r #x20 :g #x48 :b #x4c :a #x80) + (new 'static 'rgba :r #x1f :g #x4a :b #x4f :a #x80) + (new 'static 'rgba :r #x1e :g #x4e :b #x51 :a #x80) + (new 'static 'rgba :r #x1f :g #x50 :b #x4f :a #x80) + (new 'static 'rgba :r #x1f :g #x51 :b #x51 :a #x80) + (new 'static 'rgba :r #x1f :g #x53 :b #x52 :a #x80) + (new 'static 'rgba :r #x20 :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x21 :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x21 :g #x52 :b #x52 :a #x80) + (new 'static 'rgba :r #x20 :g #x54 :b #x52 :a #x80) + (new 'static 'rgba :r #x21 :g #x54 :b #x50 :a #x80) + (new 'static 'rgba :r #x21 :g #x54 :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x54 :b #x53 :a #x80) + (new 'static 'rgba :r #x21 :g #x54 :b #x50 :a #x80) + (new 'static 'rgba :r #x20 :g #x54 :b #x51 :a #x80) + (new 'static 'rgba :r #x21 :g #x52 :b #x53 :a #x80) + (new 'static 'rgba :r #x22 :g #x51 :b #x54 :a #x80) + (new 'static 'rgba :r #x22 :g #x4f :b #x53 :a #x80) + (new 'static 'rgba :r #x23 :g #x4d :b #x51 :a #x80) + (new 'static 'rgba :r #x26 :g #x43 :b #x4d :a #x80) + (new 'static 'rgba :r #x23 :g #x3d :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x1c :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x37 :b #x42 :a #x80) + (new 'static 'rgba :r #x1c :g #x37 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x21 :g #x40 :b #x49 :a #x80) + (new 'static 'rgba :r #x21 :g #x42 :b #x4a :a #x80) + (new 'static 'rgba :r #x22 :g #x43 :b #x4b :a #x80) + (new 'static 'rgba :r #x22 :g #x45 :b #x4c :a #x80) + (new 'static 'rgba :r #x21 :g #x46 :b #x4d :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x4a :b #x4e :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x4e :a #x80) + (new 'static 'rgba :r #x21 :g #x47 :b #x4e :a #x80) + (new 'static 'rgba :r #x21 :g #x48 :b #x4e :a #x80) + (new 'static 'rgba :r #x21 :g #x48 :b #x4e :a #x80) + (new 'static 'rgba :r #x21 :g #x49 :b #x4f :a #x80) + (new 'static 'rgba :r #x21 :g #x4b :b #x4e :a #x80) + (new 'static 'rgba :r #x20 :g #x47 :b #x4e :a #x80) + (new 'static 'rgba :r #x20 :g #x46 :b #x4d :a #x80) + (new 'static 'rgba :r #x20 :g #x46 :b #x4c :a #x80) + (new 'static 'rgba :r #x21 :g #x45 :b #x4c :a #x80) + (new 'static 'rgba :r #x23 :g #x41 :b #x4b :a #x80) + (new 'static 'rgba :r #x22 :g #x40 :b #x4a :a #x80) + (new 'static 'rgba :r #x21 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x36 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x38 :b #x43 :a #x80) + (new 'static 'rgba :r #x1d :g #x37 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x38 :b #x42 :a #x80) + (new 'static 'rgba :r #x1d :g #x39 :b #x43 :a #x80) + (new 'static 'rgba :r #x1e :g #x3b :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x21 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x21 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x3e :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x3e :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #x21 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x3c :b #x49 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x47 :a #x80) + (new 'static 'rgba :r #x21 :g #x3c :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3d :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x48 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x21 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x39 :b #x44 :a #x80) + (new 'static 'rgba :r #x1d :g #x39 :b #x43 :a #x80) + (new 'static 'rgba :r #x1e :g #x38 :b #x43 :a #x80) + (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x47 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x39 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3b :b #x46 :a #x80) + (new 'static 'rgba :r #x20 :g #x3a :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x38 :b #x45 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x20 :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x38 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x1e :g #x37 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x43 :a #x80) + (new 'static 'rgba :r #x20 :g #x36 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x36 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x46 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x45 :a #x80) + (new 'static 'rgba :r #x1f :g #x37 :b #x44 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x43 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x31 :b #x41 :a #x80) + (new 'static 'rgba :r #x1e :g #x32 :b #x40 :a #x80) + (new 'static 'rgba :r #x1e :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x35 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x33 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x34 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x41 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba :r #x1f :g #x32 :b #x42 :a #x80) + (new 'static 'rgba) + (new 'static 'rgba) + (new 'static 'rgba)))) (define *ocean-near-indices-village2* - (new 'static 'ocean-near-indices - :data - (new 'static 'inline-array ocean-near-index 23 - (new 'static 'ocean-near-index) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x1 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x1 - #x0 - #x0 - #x0 - #xffff - #x0 - #x0 - #x0 - #xffff - #x0 - #x0 - #x0 - #xffff - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x2 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #x0 - #x0 - #x0 - #xffff - #xffff - #x0 - #x0 - #xffff - #xffff - #xffff - #x0 - #xffff - #xffff - #xffff - #x3 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #x4 - #x5 - #x6 - #xffff - #x7 - #x0 - #x0 - #xffff - #x8 - #x0 - #x0 - #xffff - #x9 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xa - #xb - #x0 - #x0 - #xc - #x0 - #x0 - #x0 - #xd - #x0 - #x0 - #x0 - #xe - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xf - #xf - #xf - #xffff - #xf - #xf - #xf - #xffff - #xffff - #x2 - #x13 - #xffff - #xffff - #x15 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xf - #xf - #x10 - #x11 - #xf - #xf - #xf - #x12 - #x0 - #x0 - #xf - #x14 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #xffff - #xffff - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x16 - #xffff - #xffff - #x0 - #x0 - #x1d - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x17 - #x18 - #x19 - #x1a - #x0 - #x0 - #x1e - #x1f - #x0 - #x0 - #x0 - #x22 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #x1b - #x1c - #x0 - #x20 - #x21 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x23 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #xffff - #x24 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x25 - #x2a - #x2b - #x2c - #x2d - #xffff - #x33 - #x0 - #x34 - #xffff - #x38 - #x39 - #x3a - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x26 - #x27 - #x0 - #x2e - #x2f - #x30 - #x0 - #xffff - #x35 - #x36 - #x0 - #x3b - #x3c - #x6 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x28 - #x0 - #x0 - #x31 - #x32 - #x0 - #x0 - #x37 - #x0 - #x0 - #x0 - #x3d - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x29 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #x3e - #x3f - #x40 - #xffff - #x42 - #x0 - #x0 - #xffff - #x47 - #x48 - #x49 - #xffff - #xffff - #xffff - #xffff - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x41 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x43 - #x4a - #x4b - #x0 - #x4c - #x4e - #x4f - #x50 - #x51 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x0 - #x0 - #x0 - #x0 - #x44 - #x45 - #x46 - #x0 - #xffff - #xffff - #x4d - #x46 - #xffff - #xffff - #xffff - #x52 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #x53 - #x54 - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #xffff - #x0 - ) - ) - (new 'static 'ocean-near-index - :data - (new 'static 'array uint16 16 - #xffff - #xffff - #x0 - #x0 - #xffff - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - ) - ) - ) + (new 'static + 'ocean-near-indices + :data + (new 'static + 'inline-array + ocean-near-index + 23 + (new 'static 'ocean-near-index) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #x1 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x1 #x0 #x0 #x0 #xffff #x0 #x0 #x0 #xffff #x0 #x0 #x0 #xffff #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x2)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #x0 #x0 #x0 #xffff #xffff #x0 #x0 #xffff #xffff #xffff #x0 #xffff #xffff #xffff #x3)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #x4 #x5 #x6 #xffff #x7 #x0 #x0 #xffff #x8 #x0 #x0 #xffff #x9 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xa #xb #x0 #x0 #xc #x0 #x0 #x0 #xd #x0 #x0 #x0 #xe #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #xf #xf #xf #xffff #xf #xf #xf #xffff #xffff #x2 #x13 #xffff #xffff #x15 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xf #xf #x10 #x11 #xf #xf #xf #x12 #x0 #x0 #xf #x14 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #xffff #xffff #xffff #xffff #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x16 #xffff #xffff #x0 #x0 #x1d #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x17 #x18 #x19 #x1a #x0 #x0 #x1e #x1f #x0 #x0 #x0 #x22 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #x1b #x1c #x0 #x20 #x21 #x0 #x0 #x0 #x0 #x0 #x0 #x23 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #xffff + #xffff + #xffff + #x24 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x25 #x2a #x2b #x2c #x2d #xffff #x33 #x0 #x34 #xffff #x38 #x39 #x3a)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x26 #x27 #x0 #x2e #x2f #x30 #x0 #xffff #x35 #x36 #x0 #x3b #x3c #x6 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x28 #x0 #x0 #x31 #x32 #x0 #x0 #x37 #x0 #x0 #x0 #x3d #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x29 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #x3e #x3f #x40 #xffff #x42 #x0 #x0 #xffff #x47 #x48 #x49 #xffff #xffff #xffff #xffff)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x41 #x0 #x0 #x0 #x0 #x0 #x0 #x43 #x4a #x4b #x0 #x4c #x4e #x4f #x50 #x51)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #x0 #x0 #x0 #x0 #x44 #x45 #x46 #x0 #xffff #xffff #x4d #x46 #xffff #xffff #xffff #x52)) + (new 'static + 'ocean-near-index + :data + (new 'static + 'array + uint16 + 16 + #x53 + #x54 + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #xffff + #x0)) + (new 'static + 'ocean-near-index + :data + (new 'static 'array uint16 16 #xffff #xffff #x0 #x0 #xffff #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0))))) (define *ocean-trans-indices-village2* - (new 'static 'ocean-trans-indices - :data - (new 'static 'inline-array ocean-trans-index 2304 - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 85 :child 2) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 86 :child 3) - (new 'static 'ocean-trans-index :parent 87 :child 4) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 86 :child 3) - (new 'static 'ocean-trans-index :parent 7 :child 5) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 1 :child 1) - (new 'static 'ocean-trans-index :parent 86 :child 3) - (new 'static 'ocean-trans-index :child 6) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 88 :child 7) - (new 'static 'ocean-trans-index :child 8) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 89 :child 9) - (new 'static 'ocean-trans-index :parent 29 :child 10) - (new 'static 'ocean-trans-index :child 11) - (new 'static 'ocean-trans-index :parent 6 :child 12) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 81 :child 13) - (new 'static 'ocean-trans-index :parent 90 :child 14) - (new 'static 'ocean-trans-index :parent 91 :child 15) - (new 'static 'ocean-trans-index :child 16) - (new 'static 'ocean-trans-index :child 17) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 92 :child 18) - (new 'static 'ocean-trans-index :child 19) - (new 'static 'ocean-trans-index :parent 93 :child 20) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent 94 :child 21) - (new 'static 'ocean-trans-index :parent 95 :child 22) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index :parent -1 :child -1) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - (new 'static 'ocean-trans-index) - ) - ) - ) + (new 'static + 'ocean-trans-indices + :data + (new 'static + 'inline-array + ocean-trans-index + 2304 + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 85 :child 2) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 86 :child 3) + (new 'static 'ocean-trans-index :parent 87 :child 4) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 86 :child 3) + (new 'static 'ocean-trans-index :parent 7 :child 5) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 1 :child 1) + (new 'static 'ocean-trans-index :parent 86 :child 3) + (new 'static 'ocean-trans-index :child 6) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 88 :child 7) + (new 'static 'ocean-trans-index :child 8) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 89 :child 9) + (new 'static 'ocean-trans-index :parent 29 :child 10) + (new 'static 'ocean-trans-index :child 11) + (new 'static 'ocean-trans-index :parent 6 :child 12) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 81 :child 13) + (new 'static 'ocean-trans-index :parent 90 :child 14) + (new 'static 'ocean-trans-index :parent 91 :child 15) + (new 'static 'ocean-trans-index :child 16) + (new 'static 'ocean-trans-index :child 17) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 92 :child 18) + (new 'static 'ocean-trans-index :child 19) + (new 'static 'ocean-trans-index :parent 93 :child 20) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent 94 :child 21) + (new 'static 'ocean-trans-index :parent 95 :child 22) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index :parent -1 :child -1) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index) + (new 'static 'ocean-trans-index)))) (define *ocean-mid-indices-village2* - (new 'static 'ocean-mid-indices - :data - (new 'static 'array uint16 36 - #xffff - #xffff - #xffff - #x60 - #x0 - #x0 - #xffff - #xffff - #xffff - #x60 - #x0 - #x0 - #xffff - #xffff - #x61 - #x62 - #x0 - #x0 - #x63 - #x64 - #x65 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - #x0 - ) - ) - ) + (new 'static + 'ocean-mid-indices + :data + (new 'static + 'array + uint16 + 36 + #xffff + #xffff + #xffff + #x60 + #x0 + #x0 + #xffff + #xffff + #xffff + #x60 + #x0 + #x0 + #xffff + #xffff + #x61 + #x62 + #x0 + #x0 + #x63 + #x64 + #x65 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0))) (define *ocean-mid-masks-village2* - (new 'static 'ocean-mid-masks - :data - (new 'static 'inline-array ocean-mid-mask 102 - (new 'static 'ocean-mid-mask) - (new 'static 'ocean-mid-mask :dword #xfffffffffffffffe) - (new 'static 'ocean-mid-mask :dword #x7fffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x30307070f1f1f1f) - (new 'static 'ocean-mid-mask :dword #x1010303030387ff) - (new 'static 'ocean-mid-mask :dword #x62ffff) - (new 'static 'ocean-mid-mask :dword #x1) - (new 'static 'ocean-mid-mask :dword #x1010101) - (new 'static 'ocean-mid-mask :dword #x3f1f1f1f1f0f0701) - (new 'static 'ocean-mid-mask :dword #x1f1f1f1f3f3f3f3f) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f3f7fffff) - (new 'static 'ocean-mid-mask :dword #x3) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0f) - (new 'static 'ocean-mid-mask :dword #x303070707070f0f) - (new 'static 'ocean-mid-mask :dword #x101010303) - (new 'static 'ocean-mid-mask :dword #xfeffffffffffffff) - (new 'static 'ocean-mid-mask :dword #x7f7fffffffffffff) - (new 'static 'ocean-mid-mask :dword #x30f3f7f) - (new 'static 'ocean-mid-mask :dword #x3f1f1f0f0f090100) - (new 'static 'ocean-mid-mask :dword #x1070f1f3f7f) - (new 'static 'ocean-mid-mask :dword #xf1f1f3f3f0f0f3f) - (new 'static 'ocean-mid-mask :dword #x70f1f3f3f7f7f7f) - (new 'static 'ocean-mid-mask :dword #x8080808080f0) - (new 'static 'ocean-mid-mask :dword #x1fffffffffffff) - (new 'static 'ocean-mid-mask :dword #x10f0f9ffffffff) - (new 'static 'ocean-mid-mask :dword #x3c3fffffffffffff) - (new 'static 'ocean-mid-mask :dword #xfefeffffffffffff) - (new 'static 'ocean-mid-mask :dword #x3f7fffffffffffff) - (new 'static 'ocean-mid-mask :dword #x10303) - (new 'static 'ocean-mid-mask :dword #xfc) - (new 'static 'ocean-mid-mask :dword #x1c) - (new 'static 'ocean-mid-mask :dword #xc0e0f0f8f8fefcfc) - (new 'static 'ocean-mid-mask :dword #x3078fdfdffffff) - (new 'static 'ocean-mid-mask :dword #x10307) - (new 'static 'ocean-mid-mask :dword #xc0c0) - (new 'static 'ocean-mid-mask :dword #x3800000000000000) - (new 'static 'ocean-mid-mask :dword #xff7f7f7fffffffff) - (new 'static 'ocean-mid-mask :dword #xf0c0c0000000000) - (new 'static 'ocean-mid-mask :dword #xc000000000000000) - (new 'static 'ocean-mid-mask :dword #x300000000000000) - (new 'static 'ocean-mid-mask :dword #x30f0e0c0) - (new 'static 'ocean-mid-mask :dword #x7071f) - (new 'static 'ocean-mid-mask :dword #xff3f1f0f03010100) - (new 'static 'ocean-mid-mask :dword #x3f3f1c1800000000) - (new 'static 'ocean-mid-mask :dword #xc0e0e0c080) - (new 'static 'ocean-mid-mask :dword #xfeffffff3f3f3f1f) - (new 'static 'ocean-mid-mask :dword #xffffffff00000000) - (new 'static 'ocean-mid-mask :dword #x7f7fffffe0e0e0c0) - (new 'static 'ocean-mid-mask :dword #x3030307) - (new 'static 'ocean-mid-mask :dword #xe0e0e0e0e0e000) - (new 'static 'ocean-mid-mask :dword #x1030707070300) - (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f1f1f) - (new 'static 'ocean-mid-mask :dword #xfffefefefefefefe) - (new 'static 'ocean-mid-mask :dword #xffff7f7f7f7f7f7f) - (new 'static 'ocean-mid-mask :dword #x301000000000000) - (new 'static 'ocean-mid-mask :dword #x7000000000000000) - (new 'static 'ocean-mid-mask :dword #x303077fffff3f7f) - (new 'static 'ocean-mid-mask :dword #xf000000000000000) - (new 'static 'ocean-mid-mask :dword #xfffefefefefeffff) - (new 'static 'ocean-mid-mask :dword #xf3fffffffffffff) - (new 'static 'ocean-mid-mask :dword #x60787f7f7f7f7fff) - (new 'static 'ocean-mid-mask :dword #x7070) - (new 'static 'ocean-mid-mask :dword #x70f0f0f07070303) - (new 'static 'ocean-mid-mask :dword #x70f8f8f8) - (new 'static 'ocean-mid-mask :dword #xe0fffff) - (new 'static 'ocean-mid-mask :dword #x30f) - (new 'static 'ocean-mid-mask :dword #xf07070707070707) - (new 'static 'ocean-mid-mask :dword #xf0f0f0e0c0800000) - (new 'static 'ocean-mid-mask :dword #xffffffffff7f7f1f) - (new 'static 'ocean-mid-mask :dword #xffe3010100000000) - (new 'static 'ocean-mid-mask :dword #x100000000000000) - (new 'static 'ocean-mid-mask :dword #xffffffffffffff7f) - (new 'static 'ocean-mid-mask :dword #xff1f1f0f07000000) - (new 'static 'ocean-mid-mask :dword #xffe0e0e000000000) - (new 'static 'ocean-mid-mask :dword #x7ffffffc18080000) - (new 'static 'ocean-mid-mask :dword #x33f3f00000000) - (new 'static 'ocean-mid-mask :dword #x83808080c0e0f0f0) - (new 'static 'ocean-mid-mask :dword #xffff1f1f0f0f0f0f) - (new 'static 'ocean-mid-mask :dword #x103070707) - (new 'static 'ocean-mid-mask :dword #xe0c000000080c080) - (new 'static 'ocean-mid-mask :dword #xe3c0808080838781) - (new 'static 'ocean-mid-mask :dword #xffffffff9f0f0f07) - (new 'static 'ocean-mid-mask :dword #x1030f0f0f070301) - (new 'static 'ocean-mid-mask :dword #xffffffffffffff00) - (new 'static 'ocean-mid-mask :dword #xfffffffffffff0f0) - (new 'static 'ocean-mid-mask :dword #xfffffffff1f1f1f0) - (new 'static 'ocean-mid-mask :dword #xfffffffff7ffffff) - (new 'static 'ocean-mid-mask :dword #xfffffffff7f7f3f1) - (new 'static 'ocean-mid-mask :dword #xfffffffff3f3f1f1) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f1ff) - (new 'static 'ocean-mid-mask :dword #xfffffffff1f1f0f0) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f1f0f0) - (new 'static 'ocean-mid-mask :dword #xfffffffffff1f1f1) - (new 'static 'ocean-mid-mask :dword #xfffffffff7f3f0f0) - (new 'static 'ocean-mid-mask :dword #xfffffffff7fffffc) - (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f1f3) - (new 'static 'ocean-mid-mask :dword #x101010101010101) - (new 'static 'ocean-mid-mask :dword #x1f3fffffffffffff) - (new 'static 'ocean-mid-mask :dword #x10101010101) - (new 'static 'ocean-mid-mask :dword #xfcfcfcfcfcff) - (new 'static 'ocean-mid-mask :dword #x11ffffffffff) - (new 'static 'ocean-mid-mask :dword #x70f1f3f7f7f3f) - ) - ) - ) + (new 'static + 'ocean-mid-masks + :data + (new 'static + 'inline-array + ocean-mid-mask + 102 + (new 'static 'ocean-mid-mask) + (new 'static 'ocean-mid-mask :dword #xfffffffffffffffe) + (new 'static 'ocean-mid-mask :dword #x7fffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x30307070f1f1f1f) + (new 'static 'ocean-mid-mask :dword #x1010303030387ff) + (new 'static 'ocean-mid-mask :dword #x62ffff) + (new 'static 'ocean-mid-mask :dword #x1) + (new 'static 'ocean-mid-mask :dword #x1010101) + (new 'static 'ocean-mid-mask :dword #x3f1f1f1f1f0f0701) + (new 'static 'ocean-mid-mask :dword #x1f1f1f1f3f3f3f3f) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f3f7fffff) + (new 'static 'ocean-mid-mask :dword #x3) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f0f0f) + (new 'static 'ocean-mid-mask :dword #x303070707070f0f) + (new 'static 'ocean-mid-mask :dword #x101010303) + (new 'static 'ocean-mid-mask :dword #xfeffffffffffffff) + (new 'static 'ocean-mid-mask :dword #x7f7fffffffffffff) + (new 'static 'ocean-mid-mask :dword #x30f3f7f) + (new 'static 'ocean-mid-mask :dword #x3f1f1f0f0f090100) + (new 'static 'ocean-mid-mask :dword #x1070f1f3f7f) + (new 'static 'ocean-mid-mask :dword #xf1f1f3f3f0f0f3f) + (new 'static 'ocean-mid-mask :dword #x70f1f3f3f7f7f7f) + (new 'static 'ocean-mid-mask :dword #x8080808080f0) + (new 'static 'ocean-mid-mask :dword #x1fffffffffffff) + (new 'static 'ocean-mid-mask :dword #x10f0f9ffffffff) + (new 'static 'ocean-mid-mask :dword #x3c3fffffffffffff) + (new 'static 'ocean-mid-mask :dword #xfefeffffffffffff) + (new 'static 'ocean-mid-mask :dword #x3f7fffffffffffff) + (new 'static 'ocean-mid-mask :dword #x10303) + (new 'static 'ocean-mid-mask :dword #xfc) + (new 'static 'ocean-mid-mask :dword #x1c) + (new 'static 'ocean-mid-mask :dword #xc0e0f0f8f8fefcfc) + (new 'static 'ocean-mid-mask :dword #x3078fdfdffffff) + (new 'static 'ocean-mid-mask :dword #x10307) + (new 'static 'ocean-mid-mask :dword #xc0c0) + (new 'static 'ocean-mid-mask :dword #x3800000000000000) + (new 'static 'ocean-mid-mask :dword #xff7f7f7fffffffff) + (new 'static 'ocean-mid-mask :dword #xf0c0c0000000000) + (new 'static 'ocean-mid-mask :dword #xc000000000000000) + (new 'static 'ocean-mid-mask :dword #x300000000000000) + (new 'static 'ocean-mid-mask :dword #x30f0e0c0) + (new 'static 'ocean-mid-mask :dword #x7071f) + (new 'static 'ocean-mid-mask :dword #xff3f1f0f03010100) + (new 'static 'ocean-mid-mask :dword #x3f3f1c1800000000) + (new 'static 'ocean-mid-mask :dword #xc0e0e0c080) + (new 'static 'ocean-mid-mask :dword #xfeffffff3f3f3f1f) + (new 'static 'ocean-mid-mask :dword #xffffffff00000000) + (new 'static 'ocean-mid-mask :dword #x7f7fffffe0e0e0c0) + (new 'static 'ocean-mid-mask :dword #x3030307) + (new 'static 'ocean-mid-mask :dword #xe0e0e0e0e0e000) + (new 'static 'ocean-mid-mask :dword #x1030707070300) + (new 'static 'ocean-mid-mask :dword #xf0f0f0f0f0f1f1f) + (new 'static 'ocean-mid-mask :dword #xfffefefefefefefe) + (new 'static 'ocean-mid-mask :dword #xffff7f7f7f7f7f7f) + (new 'static 'ocean-mid-mask :dword #x301000000000000) + (new 'static 'ocean-mid-mask :dword #x7000000000000000) + (new 'static 'ocean-mid-mask :dword #x303077fffff3f7f) + (new 'static 'ocean-mid-mask :dword #xf000000000000000) + (new 'static 'ocean-mid-mask :dword #xfffefefefefeffff) + (new 'static 'ocean-mid-mask :dword #xf3fffffffffffff) + (new 'static 'ocean-mid-mask :dword #x60787f7f7f7f7fff) + (new 'static 'ocean-mid-mask :dword #x7070) + (new 'static 'ocean-mid-mask :dword #x70f0f0f07070303) + (new 'static 'ocean-mid-mask :dword #x70f8f8f8) + (new 'static 'ocean-mid-mask :dword #xe0fffff) + (new 'static 'ocean-mid-mask :dword #x30f) + (new 'static 'ocean-mid-mask :dword #xf07070707070707) + (new 'static 'ocean-mid-mask :dword #xf0f0f0e0c0800000) + (new 'static 'ocean-mid-mask :dword #xffffffffff7f7f1f) + (new 'static 'ocean-mid-mask :dword #xffe3010100000000) + (new 'static 'ocean-mid-mask :dword #x100000000000000) + (new 'static 'ocean-mid-mask :dword #xffffffffffffff7f) + (new 'static 'ocean-mid-mask :dword #xff1f1f0f07000000) + (new 'static 'ocean-mid-mask :dword #xffe0e0e000000000) + (new 'static 'ocean-mid-mask :dword #x7ffffffc18080000) + (new 'static 'ocean-mid-mask :dword #x33f3f00000000) + (new 'static 'ocean-mid-mask :dword #x83808080c0e0f0f0) + (new 'static 'ocean-mid-mask :dword #xffff1f1f0f0f0f0f) + (new 'static 'ocean-mid-mask :dword #x103070707) + (new 'static 'ocean-mid-mask :dword #xe0c000000080c080) + (new 'static 'ocean-mid-mask :dword #xe3c0808080838781) + (new 'static 'ocean-mid-mask :dword #xffffffff9f0f0f07) + (new 'static 'ocean-mid-mask :dword #x1030f0f0f070301) + (new 'static 'ocean-mid-mask :dword #xffffffffffffff00) + (new 'static 'ocean-mid-mask :dword #xfffffffffffff0f0) + (new 'static 'ocean-mid-mask :dword #xfffffffff1f1f1f0) + (new 'static 'ocean-mid-mask :dword #xfffffffff7ffffff) + (new 'static 'ocean-mid-mask :dword #xfffffffff7f7f3f1) + (new 'static 'ocean-mid-mask :dword #xfffffffff3f3f1f1) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f1ff) + (new 'static 'ocean-mid-mask :dword #xfffffffff1f1f0f0) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f1f0f0) + (new 'static 'ocean-mid-mask :dword #xfffffffffff1f1f1) + (new 'static 'ocean-mid-mask :dword #xfffffffff7f3f0f0) + (new 'static 'ocean-mid-mask :dword #xfffffffff7fffffc) + (new 'static 'ocean-mid-mask :dword #xfffffffff0f0f1f3) + (new 'static 'ocean-mid-mask :dword #x101010101010101) + (new 'static 'ocean-mid-mask :dword #x1f3fffffffffffff) + (new 'static 'ocean-mid-mask :dword #x10101010101) + (new 'static 'ocean-mid-mask :dword #xfcfcfcfcfcff) + (new 'static 'ocean-mid-mask :dword #x11ffffffffff) + (new 'static 'ocean-mid-mask :dword #x70f1f3f7f7f3f)))) (define *ocean-near-indices-sunken* - (new 'static 'ocean-near-indices - :data - (new 'static 'inline-array ocean-near-index 1 - (new 'static 'ocean-near-index) - ) - ) - ) + (new 'static 'ocean-near-indices :data (new 'static 'inline-array ocean-near-index 1 (new 'static 'ocean-near-index)))) (define *ocean-trans-indices-sunken* (new 'static 'ocean-trans-indices)) (define *ocean-mid-indices-sunken* (new 'static 'ocean-mid-indices)) (define *ocean-mid-masks-sunken* - (new 'static 'ocean-mid-masks - :data - (new 'static 'inline-array ocean-mid-mask 2 - (new 'static 'ocean-mid-mask) - (new 'static 'ocean-mid-mask) - ) - ) - ) + (new 'static + 'ocean-mid-masks + :data + (new 'static 'inline-array ocean-mid-mask 2 (new 'static 'ocean-mid-mask) (new 'static 'ocean-mid-mask)))) (define *ocean-map-village1* - (new 'static 'ocean-map - :start-corner - (new 'static 'vector :x -9437184.0 :z -9437184.0 :w 1.0) - :far-color - (new 'static 'vector :x 1.505882 :y 45.678432 :z 56.72157) - ) - ) + (new 'static + 'ocean-map + :start-corner + (new 'static 'vector :x -9437184.0 :z -9437184.0 :w 1.0) + :far-color + (new 'static 'vector :x 1.505882 :y 45.678432 :z 56.72157))) (set! (-> *ocean-map-village1* ocean-spheres) *ocean-spheres-village1*) + (set! (-> *ocean-map-village1* ocean-colors) *ocean-colors-village1*) + (set! (-> *ocean-map-village1* ocean-mid-masks) *ocean-mid-masks-village1*) + (set! (-> *ocean-map-village1* ocean-mid-indices) *ocean-mid-indices-village1*) + (set! (-> *ocean-map-village1* ocean-trans-indices) *ocean-trans-indices-village1*) + (set! (-> *ocean-map-village1* ocean-near-indices) *ocean-near-indices-village1*) (define *ocean-map-village2* - (new 'static 'ocean-map - :start-corner - (new 'static 'vector :x -7892992.0 :z -15958016.0 :w 1.0) - :far-color - (new 'static 'vector :x 31.62353 :y 50.19608 :z 66.76079) - ) - ) + (new 'static + 'ocean-map + :start-corner + (new 'static 'vector :x -7892992.0 :z -15958016.0 :w 1.0) + :far-color + (new 'static 'vector :x 31.62353 :y 50.19608 :z 66.76079))) (set! (-> *ocean-map-village2* ocean-spheres) *ocean-spheres-village2*) + (set! (-> *ocean-map-village2* ocean-colors) *ocean-colors-village2*) + (set! (-> *ocean-map-village2* ocean-mid-masks) *ocean-mid-masks-village2*) + (set! (-> *ocean-map-village2* ocean-mid-indices) *ocean-mid-indices-village2*) + (set! (-> *ocean-map-village2* ocean-trans-indices) *ocean-trans-indices-village2*) + (set! (-> *ocean-map-village2* ocean-near-indices) *ocean-near-indices-village2*) (define *ocean-map-sunken* - (new 'static 'ocean-map - :start-corner - (new 'static 'vector :x -7892992.0 :z -15958016.0 :w 1.0) - :far-color - (new 'static 'vector :x 31.62353 :y 50.19608 :z 66.76079) - ) - ) + (new 'static + 'ocean-map + :start-corner + (new 'static 'vector :x -7892992.0 :z -15958016.0 :w 1.0) + :far-color + (new 'static 'vector :x 31.62353 :y 50.19608 :z 66.76079))) (set! (-> *ocean-map-sunken* ocean-spheres) *ocean-spheres-village2*) + (set! (-> *ocean-map-sunken* ocean-colors) *ocean-colors-village2*) -(set! (-> *ocean-map-sunken* ocean-mid-masks) *ocean-mid-masks-sunken*) -(set! (-> *ocean-map-sunken* ocean-mid-indices) *ocean-mid-indices-sunken*) -(set! (-> *ocean-map-sunken* ocean-trans-indices) *ocean-trans-indices-sunken*) -(set! (-> *ocean-map-sunken* ocean-near-indices) *ocean-near-indices-sunken*) +(set! (-> *ocean-map-sunken* ocean-mid-masks) *ocean-mid-masks-sunken*) +(set! (-> *ocean-map-sunken* ocean-mid-indices) *ocean-mid-indices-sunken*) +(set! (-> *ocean-map-sunken* ocean-trans-indices) *ocean-trans-indices-sunken*) +(set! (-> *ocean-map-sunken* ocean-near-indices) *ocean-near-indices-sunken*) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-texture.gc b/goal_src/jak1/engine/gfx/ocean/ocean-texture.gc index 01613fbcd5..a7c9d27c27 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-texture.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-texture.gc @@ -1,91 +1,99 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/ocean/ocean-h.gc") (require "engine/gfx/hw/display.gc") -;; name: ocean-texture.gc -;; name in dgo: ocean-texture -;; dgos: GAME, ENGINE - - ;; definition for symbol *ocean-texture-work*, type ocean-texture-work (define *ocean-texture-work* - (new 'static 'ocean-texture-work - :sprite-tmpl - (new 'static 'dma-gif-packet - :dma-vif - (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif0 (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :fst #x1) - :nreg #x5 - ) - :gif1 (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id uv) - :regs2 (gif-reg-id xyz2) - :regs3 (gif-reg-id uv) - :regs4 (gif-reg-id xyz2) - ) - ) - :sprite-tmpl2 - (new 'static 'dma-gif-packet - :dma-vif - (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1) - ) - :gif0 (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe #x1) - :nreg #x3 - ) - :gif1 (new 'static 'gif-tag-regs :regs0 (gif-reg-id rgbaq) :regs1 (gif-reg-id xyz2) :regs2 (gif-reg-id xyz2)) - ) - :adgif-tmpl - (new 'static 'dma-gif-packet - :dma-vif - (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif0 (new 'static 'gif-tag64 :nloop #x5 :eop #x1 :nreg #x1) - :gif1 (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)) - ) - ) - ) + (new 'static + 'ocean-texture-work + :sprite-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif0 + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :fst #x1) + :nreg #x5) + :gif1 + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id uv) + :regs2 (gif-reg-id xyz2) + :regs3 (gif-reg-id uv) + :regs4 (gif-reg-id xyz2))) + :sprite-tmpl2 + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) + :gif0 + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type sprite) :abe #x1) + :nreg #x3) + :gif1 + (new 'static 'gif-tag-regs :regs0 (gif-reg-id rgbaq) :regs1 (gif-reg-id xyz2) :regs2 (gif-reg-id xyz2))) + :adgif-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif0 + (new 'static 'gif-tag64 :nloop #x5 :eop #x1 :nreg #x1) + :gif1 + (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))))) ;; definition for symbol ocean-texture-vu1-block, type vu-function -(define ocean-texture-vu1-block (new 'static 'vu-function #|:length #x92 :qlength 73|#)) +(define ocean-texture-vu1-block + (new 'static + 'vu-function + #| :length #x92 :qlength 73 |# + )) (defun ocean-texture-setup-constants ((arg0 ocean-texture-constants)) "Set the constant values used in Ocean Texture VU1 program." (set! (-> arg0 giftag tag) - (new 'static 'gif-tag64 - :nloop #x42 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1) - :nreg #x3 - ) - ) + (new 'static + 'gif-tag64 + :nloop #x42 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1) + :nreg #x3)) (set! (-> arg0 giftag regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyz2)) - ) - + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyz2))) ;; these are VU1 data addresses (set-vector! (-> arg0 buffers) 384 583 384 583) (set-vector! (-> arg0 dests) 782 881 782 881) - (set-vector! (-> arg0 start) 0.0 0.0 1048575.94 0.0) (set-vector! (-> arg0 offsets) 4.0 8.0 12.0 16.0) (set-vector! (-> arg0 constants) 0.5 0.5 0.0 0.0) @@ -94,28 +102,19 @@ (set! (-> arg0 cam-nrm z) (- (-> *math-camera* inv-camera-rot vector 2 z))) (set! (-> arg0 cam-nrm w) 0.0) 0 - (none) - ) + (none)) (defun ocean-texture-add-constants ((arg0 dma-buffer)) "Add DMA packet to upload ocean constants. The constants are stored in the DMA buffer." (let* ((a1-0 7) (v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x3d9 :cmd (vif-cmd unpack-v4-32) :num a1-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x3d9 :cmd (vif-cmd unpack-v4-32) :num a1-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) (ocean-texture-setup-constants (the-as ocean-texture-constants (-> arg0 base))) - (let ((v0-1 (&+ (-> arg0 base) 112))) - (set! (-> arg0 base) v0-1) - v0-1 - ) - ) + (let ((v0-1 (&+ (-> arg0 base) 112))) (set! (-> arg0 base) v0-1) v0-1)) ;; definition for function ocean-texture-add-envmap ;; Used lq/sq @@ -127,109 +126,66 @@ (set! (-> (the-as (pointer uint128) v1-0) 1) (-> *ocean-texture-work* adgif-tmpl quad 1)) (let ((s4-0 (&+ v1-0 32))) ;; this just stores the adgif directly in the DMA buffer - (adgif-shader<-texture-simple! - (the-as adgif-shader s4-0) - (lookup-texture-by-id (new 'static 'texture-id :index #x1 :page #x100)) - ) - ) - ) - (let ((v0-2 (&+ (-> arg0 base) 112))) - (set! (-> arg0 base) v0-2) - v0-2 - ) - ) + (adgif-shader<-texture-simple! (the-as adgif-shader s4-0) + (lookup-texture-by-id (new 'static 'texture-id :index #x1 :page #x100))))) + (let ((v0-2 (&+ (-> arg0 base) 112))) (set! (-> arg0 base) v0-2) v0-2)) ;; definition for function ocean-texture-add-verts (defun ocean-texture-add-verts ((arg0 dma-buffer) (arg1 (inline-array vector))) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) - (new 'static 'dma-tag :qwc #xc0 :id (dma-tag-id ref) :addr (the-as int arg1)) - ) + (a0-1 (the-as object (-> v1-0 base)))) + (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #xc0 :id (dma-tag-id ref) :addr (the-as int arg1))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x8000 :num #xc0 :cmd (vif-cmd unpack-v4-32)) - ) - (let ((v0-0 (&+ (the-as pointer a0-1) 16))) - (set! (-> v1-0 base) v0-0) - v0-0 - ) - ) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x8000 :num #xc0 :cmd (vif-cmd unpack-v4-32))) + (let ((v0-0 (&+ (the-as pointer a0-1) 16))) (set! (-> v1-0 base) v0-0) v0-0))) ;; definition for function ocean-texture-add-verts-last (defun ocean-texture-add-verts-last ((arg0 dma-buffer) (arg1 (inline-array vector)) (arg2 (inline-array vector))) (let* ((v1-0 arg0) - (a3-0 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a3-0) dma) - (new 'static 'dma-tag :qwc #x80 :id (dma-tag-id ref) :addr (the-as int arg1)) - ) + (a3-0 (the-as object (-> v1-0 base)))) + (set! (-> (the-as dma-packet a3-0) dma) (new 'static 'dma-tag :qwc #x80 :id (dma-tag-id ref) :addr (the-as int arg1))) (set! (-> (the-as dma-packet a3-0) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a3-0) vif1) - (new 'static 'vif-tag :imm #x8000 :num #x80 :cmd (vif-cmd unpack-v4-32)) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a3-0) 16)) - ) + (set! (-> (the-as dma-packet a3-0) vif1) (new 'static 'vif-tag :imm #x8000 :num #x80 :cmd (vif-cmd unpack-v4-32))) + (set! (-> v1-0 base) (&+ (the-as pointer a3-0) 16))) (let* ((v1-1 arg0) - (a0-1 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) - (new 'static 'dma-tag :qwc #x40 :id (dma-tag-id ref) :addr (the-as int arg2)) - ) + (a0-1 (the-as object (-> v1-1 base)))) + (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x40 :id (dma-tag-id ref) :addr (the-as int arg2))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x8080 :num #x40 :cmd (vif-cmd unpack-v4-32)) - ) - (let ((v0-0 (&+ (the-as pointer a0-1) 16))) - (set! (-> v1-1 base) v0-0) - v0-0 - ) - ) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x8080 :num #x40 :cmd (vif-cmd unpack-v4-32))) + (let ((v0-0 (&+ (the-as pointer a0-1) 16))) (set! (-> v1-1 base) v0-0) v0-0))) ;; definition for function ocean-texture-add-call-start ;; INFO: Return type mismatch pointer vs none. (defun ocean-texture-add-call-start ((arg0 dma-buffer)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1)) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (none) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (none)) ;; definition for function ocean-texture-add-call-rest ;; INFO: Return type mismatch pointer vs none. (defun ocean-texture-add-call-rest ((arg0 dma-buffer)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd mscalf) :msk #x1)) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (none) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (none)) ;; definition for function ocean-texture-add-call-done ;; INFO: Return type mismatch pointer vs none. (defun ocean-texture-add-call-done ((arg0 dma-buffer)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscalf) :msk #x1)) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (none) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (none)) ;; definition for function draw-ocean-texture ;; INFO: Return type mismatch int vs none. @@ -243,18 +199,15 @@ (ocean-tex-page-1 (+ ocean-tex-page-0 8)) (ocean-tex-block-1 (* ocean-tex-page-1 32)) (ocean-tex-page-2 (+ ocean-tex-page-0 10)) - (ocean-tex-block-2 (* ocean-tex-page-2 32)) - ) + (ocean-tex-block-2 (* ocean-tex-page-2 32))) (set-display-gs-state arg0 ocean-tex-page-0 128 128 0 0) (dma-buffer-add-vu-function arg0 ocean-texture-vu1-block 1) (let* ((v1-0 arg0) - (a0-3 (the-as object (-> v1-0 base))) - ) + (a0-3 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-3) vif0) (new 'static 'vif-tag :cmd (vif-cmd base))) (set! (-> (the-as dma-packet a0-3) vif1) (new 'static 'vif-tag :imm #xc0 :cmd (vif-cmd offset))) - (set! (-> v1-0 base) (&+ (the-as pointer a0-3) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-3) 16))) (ocean-texture-add-constants arg0) (ocean-texture-add-envmap arg0) (set! sv-16 sv-64) @@ -266,8 +219,7 @@ (ocean-texture-add-verts arg0 (the-as (inline-array vector) sv-48)) (set! sv-48 (-> (the-as (inline-array vector) sv-48) 192)) (ocean-texture-add-call-rest arg0) - (set! sv-32 (+ sv-32 1)) - ) + (set! sv-32 (+ sv-32 1))) (ocean-texture-add-verts-last arg0 (the-as (inline-array vector) sv-48) sv-64) (ocean-texture-add-call-rest arg0) (ocean-texture-add-call-done arg0) @@ -626,5 +578,4 @@ ) ; (reset-display-gs-state *display* arg0 *oddeven*) 0 - (none) - ) \ No newline at end of file + (none)) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-trans-tables.gc b/goal_src/jak1/engine/gfx/ocean/ocean-trans-tables.gc index f88dc95501..28d845e2bd 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-trans-tables.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-trans-tables.gc @@ -1,1110 +1,1142 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") - ;; og:ignore-from-loc ;; DECOMP BEGINS ;; definition for symbol *ocean-left-table*, type (pointer float) -(define *ocean-left-table* (new 'static 'array float 28 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - ) - ) +(define *ocean-left-table* + (new 'static + 'array + float + 28 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0)) ;; definition for symbol *ocean-right-table*, type (pointer float) -(define *ocean-right-table* (new 'static 'array float 28 - 0.0 - 0.0 - 1.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-right-table* + (new 'static + 'array + float + 28 + 0.0 + 0.0 + 1.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-up-table*, type (pointer float) -(define *ocean-up-table* (new 'static 'array float 28 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - ) - ) +(define *ocean-up-table* + (new 'static + 'array + float + 28 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0)) ;; definition for symbol *ocean-down-table*, type (pointer float) -(define *ocean-down-table* (new 'static 'array float 28 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-down-table* + (new 'static + 'array + float + 28 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-down-left-table*, type (pointer float) -(define *ocean-down-left-table* (new 'static 'array float 40 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-down-left-table* + (new 'static + 'array + float + 40 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-down-right-table*, type (pointer float) -(define *ocean-down-right-table* (new 'static 'array float 40 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-down-right-table* + (new 'static + 'array + float + 40 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-up-right-table*, type (pointer float) -(define *ocean-up-right-table* (new 'static 'array float 40 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 1.0 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - ) - ) +(define *ocean-up-right-table* + (new 'static + 'array + float + 40 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 1.0 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0)) ;; definition for symbol *ocean-up-left-table*, type (pointer float) -(define *ocean-up-left-table* (new 'static 'array float 40 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - ) - ) +(define *ocean-up-left-table* + (new 'static + 'array + float + 40 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0)) ;; definition for symbol *ocean-trans-left-table*, type (pointer float) -(define *ocean-trans-left-table* (new 'static 'array float 44 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.125 - 0.0 - 0.875 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.375 - 0.0 - 0.625 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.625 - 0.0 - 0.375 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.875 - 0.0 - 0.125 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - ) - ) +(define *ocean-trans-left-table* + (new 'static + 'array + float + 44 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.125 + 0.0 + 0.875 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.375 + 0.0 + 0.625 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.625 + 0.0 + 0.375 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.875 + 0.0 + 0.125 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0)) ;; definition for symbol *ocean-trans-right-table*, type (pointer float) -(define *ocean-trans-right-table* (new 'static 'array float 44 - 0.0 - 0.0 - 1.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.875 - 0.0 - 0.125 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.625 - 0.0 - 0.375 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.375 - 0.0 - 0.625 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.125 - 0.0 - 0.875 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-trans-right-table* + (new 'static + 'array + float + 44 + 0.0 + 0.0 + 1.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.875 + 0.0 + 0.125 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.625 + 0.0 + 0.375 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.375 + 0.0 + 0.625 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.125 + 0.0 + 0.875 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-trans-up-table*, type (pointer float) -(define *ocean-trans-up-table* (new 'static 'array float 44 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.125 - 0.875 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.375 - 0.625 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.625 - 0.375 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.875 - 0.125 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - ) - ) +(define *ocean-trans-up-table* + (new 'static + 'array + float + 44 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.125 + 0.875 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.375 + 0.625 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.625 + 0.375 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.875 + 0.125 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0)) ;; definition for symbol *ocean-trans-down-table*, type (pointer float) -(define *ocean-trans-down-table* (new 'static 'array float 44 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.875 - 0.125 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.625 - 0.375 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.375 - 0.625 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.125 - 0.875 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-trans-down-table* + (new 'static + 'array + float + 44 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.875 + 0.125 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.625 + 0.375 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.375 + 0.625 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.125 + 0.875 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-trans-down-left-table*, type (pointer float) -(define *ocean-trans-down-left-table* (new 'static 'array float 72 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.875 - 0.0 - 0.125 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.625 - 0.0 - 0.375 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.375 - 0.0 - 0.625 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.125 - 0.0 - 0.875 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.875 - 0.125 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.625 - 0.375 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.375 - 0.625 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.125 - 0.875 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-trans-down-left-table* + (new 'static + 'array + float + 72 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.875 + 0.0 + 0.125 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.625 + 0.0 + 0.375 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.375 + 0.0 + 0.625 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.125 + 0.0 + 0.875 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.875 + 0.125 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.625 + 0.375 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.375 + 0.625 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.125 + 0.875 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-trans-down-right-table*, type (pointer float) -(define *ocean-trans-down-right-table* (new 'static 'array float 72 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 0.875 - 0.125 - 0.0 - 0.875 - 0.0 - 0.125 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.0 - 0.625 - 0.375 - 0.0 - 0.625 - 0.0 - 0.375 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.0 - 0.375 - 0.625 - 0.0 - 0.375 - 0.0 - 0.625 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.0 - 0.125 - 0.875 - 0.0 - 0.125 - 0.0 - 0.875 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-trans-down-right-table* + (new 'static + 'array + float + 72 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.875 + 0.125 + 0.0 + 0.875 + 0.0 + 0.125 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.0 + 0.625 + 0.375 + 0.0 + 0.625 + 0.0 + 0.375 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.0 + 0.375 + 0.625 + 0.0 + 0.375 + 0.0 + 0.625 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.0 + 0.125 + 0.875 + 0.0 + 0.125 + 0.0 + 0.875 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-trans-up-right-table*, type (pointer float) -(define *ocean-trans-up-right-table* (new 'static 'array float 72 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.125 - 0.0 - 0.875 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.375 - 0.0 - 0.625 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.625 - 0.0 - 0.375 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.875 - 0.0 - 0.125 - 0.0 - 1.0 - 0.0 - 0.0 - 0.125 - 0.875 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.375 - 0.625 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.625 - 0.375 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.875 - 0.125 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - ) - ) +(define *ocean-trans-up-right-table* + (new 'static + 'array + float + 72 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.125 + 0.0 + 0.875 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.375 + 0.0 + 0.625 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.625 + 0.0 + 0.375 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.875 + 0.0 + 0.125 + 0.0 + 1.0 + 0.0 + 0.0 + 0.125 + 0.875 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.375 + 0.625 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.625 + 0.375 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.875 + 0.125 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0)) ;; definition for symbol *ocean-trans-up-left-table*, type (pointer float) -(define *ocean-trans-up-left-table* (new 'static 'array float 72 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.125 - 0.0 - 0.875 - 0.0 - 0.125 - 0.875 - 0.0 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.375 - 0.0 - 0.625 - 0.0 - 0.375 - 0.625 - 0.0 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.625 - 0.0 - 0.375 - 0.0 - 0.625 - 0.375 - 0.0 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.875 - 0.0 - 0.125 - 0.0 - 0.875 - 0.125 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - ) - ) +(define *ocean-trans-up-left-table* + (new 'static + 'array + float + 72 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.125 + 0.0 + 0.875 + 0.0 + 0.125 + 0.875 + 0.0 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.375 + 0.0 + 0.625 + 0.0 + 0.375 + 0.625 + 0.0 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.625 + 0.0 + 0.375 + 0.0 + 0.625 + 0.375 + 0.0 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.875 + 0.0 + 0.125 + 0.0 + 0.875 + 0.125 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0)) ;; definition for symbol *ocean-trans-corner-table*, type (inline-array vector4w-2) -(define *ocean-trans-corner-table* (the-as (inline-array vector4w-2) (new 'static 'array float 100 - 1.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.5625 - 0.1875 - 0.1875 - 0.0625 - 0.375 - 0.375 - 0.125 - 0.125 - 0.1875 - 0.5625 - 0.0625 - 0.1875 - 0.0 - 0.75 - 0.0 - 0.25 - 0.5 - 0.0 - 0.5 - 0.0 - 0.375 - 0.125 - 0.375 - 0.125 - 0.25 - 0.25 - 0.25 - 0.25 - 0.125 - 0.375 - 0.125 - 0.375 - 0.0 - 0.5 - 0.0 - 0.5 - 0.25 - 0.0 - 0.75 - 0.0 - 0.1875 - 0.0625 - 0.5625 - 0.1875 - 0.125 - 0.125 - 0.375 - 0.375 - 0.0625 - 0.1875 - 0.1875 - 0.5625 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) - ) +(define *ocean-trans-corner-table* + (the-as (inline-array vector4w-2) + (new 'static + 'array + float + 100 + 1.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.5625 + 0.1875 + 0.1875 + 0.0625 + 0.375 + 0.375 + 0.125 + 0.125 + 0.1875 + 0.5625 + 0.0625 + 0.1875 + 0.0 + 0.75 + 0.0 + 0.25 + 0.5 + 0.0 + 0.5 + 0.0 + 0.375 + 0.125 + 0.375 + 0.125 + 0.25 + 0.25 + 0.25 + 0.25 + 0.125 + 0.375 + 0.125 + 0.375 + 0.0 + 0.5 + 0.0 + 0.5 + 0.25 + 0.0 + 0.75 + 0.0 + 0.1875 + 0.0625 + 0.5625 + 0.1875 + 0.125 + 0.125 + 0.375 + 0.375 + 0.0625 + 0.1875 + 0.1875 + 0.5625 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0))) ;; definition for symbol *ocean-trans-strip-array*, type (pointer float) -(define *ocean-trans-strip-array* (new 'static 'array float 160 - 1.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.75 - 0.25 - 0.0 - 0.0 - 0.5625 - 0.1875 - 0.1875 - 0.0625 - 0.5 - 0.5 - 0.0 - 0.0 - 0.375 - 0.375 - 0.125 - 0.125 - 0.25 - 0.75 - 0.0 - 0.0 - 0.1875 - 0.5625 - 0.0625 - 0.1875 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 0.75 - 0.0 - 0.25 - 0.75 - 0.0 - 0.25 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.5625 - 0.1875 - 0.1875 - 0.0625 - 0.375 - 0.125 - 0.375 - 0.125 - 0.375 - 0.375 - 0.125 - 0.125 - 0.25 - 0.25 - 0.25 - 0.25 - 0.1875 - 0.5625 - 0.0625 - 0.1875 - 0.125 - 0.375 - 0.125 - 0.375 - 0.0 - 0.75 - 0.0 - 0.25 - 0.0 - 0.5 - 0.0 - 0.5 - 0.5 - 0.0 - 0.5 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.375 - 0.125 - 0.375 - 0.125 - 0.1875 - 0.0625 - 0.5625 - 0.1875 - 0.25 - 0.25 - 0.25 - 0.25 - 0.125 - 0.125 - 0.375 - 0.375 - 0.125 - 0.375 - 0.125 - 0.375 - 0.0625 - 0.1875 - 0.1875 - 0.5625 - 0.0 - 0.5 - 0.0 - 0.5 - 0.0 - 0.25 - 0.0 - 0.75 - 0.25 - 0.0 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.1875 - 0.0625 - 0.5625 - 0.1875 - 0.0 - 0.0 - 0.75 - 0.25 - 0.125 - 0.125 - 0.375 - 0.375 - 0.0 - 0.0 - 0.5 - 0.5 - 0.0625 - 0.1875 - 0.1875 - 0.5625 - 0.0 - 0.0 - 0.25 - 0.75 - 0.0 - 0.25 - 0.0 - 0.75 - 0.0 - 0.0 - 0.0 - 1.0 - ) - ) +(define *ocean-trans-strip-array* + (new 'static + 'array + float + 160 + 1.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.75 + 0.25 + 0.0 + 0.0 + 0.5625 + 0.1875 + 0.1875 + 0.0625 + 0.5 + 0.5 + 0.0 + 0.0 + 0.375 + 0.375 + 0.125 + 0.125 + 0.25 + 0.75 + 0.0 + 0.0 + 0.1875 + 0.5625 + 0.0625 + 0.1875 + 0.0 + 1.0 + 0.0 + 0.0 + 0.0 + 0.75 + 0.0 + 0.25 + 0.75 + 0.0 + 0.25 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.5625 + 0.1875 + 0.1875 + 0.0625 + 0.375 + 0.125 + 0.375 + 0.125 + 0.375 + 0.375 + 0.125 + 0.125 + 0.25 + 0.25 + 0.25 + 0.25 + 0.1875 + 0.5625 + 0.0625 + 0.1875 + 0.125 + 0.375 + 0.125 + 0.375 + 0.0 + 0.75 + 0.0 + 0.25 + 0.0 + 0.5 + 0.0 + 0.5 + 0.5 + 0.0 + 0.5 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.375 + 0.125 + 0.375 + 0.125 + 0.1875 + 0.0625 + 0.5625 + 0.1875 + 0.25 + 0.25 + 0.25 + 0.25 + 0.125 + 0.125 + 0.375 + 0.375 + 0.125 + 0.375 + 0.125 + 0.375 + 0.0625 + 0.1875 + 0.1875 + 0.5625 + 0.0 + 0.5 + 0.0 + 0.5 + 0.0 + 0.25 + 0.0 + 0.75 + 0.25 + 0.0 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0 + 0.0 + 0.1875 + 0.0625 + 0.5625 + 0.1875 + 0.0 + 0.0 + 0.75 + 0.25 + 0.125 + 0.125 + 0.375 + 0.375 + 0.0 + 0.0 + 0.5 + 0.5 + 0.0625 + 0.1875 + 0.1875 + 0.5625 + 0.0 + 0.0 + 0.25 + 0.75 + 0.0 + 0.25 + 0.0 + 0.75 + 0.0 + 0.0 + 0.0 + 1.0)) ;; definition for symbol *ocean-trans-st-table*, type (inline-array vector) -(define *ocean-trans-st-table* (new 'static 'inline-array vector 4 - (new 'static 'vector :z 1.0) - (new 'static 'vector :x 1.0 :z 1.0) - (new 'static 'vector :y 1.0 :z 1.0) - (new 'static 'vector :x 1.0 :y 1.0 :z 1.0) - ) - ) - - - - +(define *ocean-trans-st-table* + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :z 1.0) + (new 'static 'vector :x 1.0 :z 1.0) + (new 'static 'vector :y 1.0 :z 1.0) + (new 'static 'vector :x 1.0 :y 1.0 :z 1.0))) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-transition.gc b/goal_src/jak1/engine/gfx/ocean/ocean-transition.gc index 87533cc73d..a61672efee 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-transition.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-transition.gc @@ -1,110 +1,65 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/ocean/ocean-mid.gc") (require "engine/collide/collide-frag-h.gc") -;; name: ocean-transition.gc -;; name in dgo: ocean-transition -;; dgos: GAME, ENGINE - ;; definition for function ocean-trans-camera-masks-bit? (defun ocean-trans-camera-masks-bit? ((arg0 uint) (arg1 uint)) (let ((v1-3 (- arg0 (* (-> *ocean-work* mid-minz) 4))) - (a0-4 (- arg1 (* (-> *ocean-work* mid-minx) 4))) - ) + (a0-4 (- arg1 (* (-> *ocean-work* mid-minx) 4)))) (cond - ((or (< v1-3 0) (>= v1-3 (the-as uint 16)) (< a0-4 0) (>= a0-4 (the-as uint 16))) - #f - ) + ((or (< v1-3 0) (>= v1-3 (the-as uint 16)) (< a0-4 0) (>= a0-4 (the-as uint 16))) #f) (else - (let* ((a3-0 (shr v1-3 2)) - (a2-3 (shr a0-4 2)) - (a1-2 (logand v1-3 3)) - (v1-4 (logand a0-4 3)) - (a0-6 (+ (* a3-0 4) a2-3)) - ) - (logtest? (-> *ocean-work* trans-camera-masks 0 mask (+ a1-2 (* a0-6 8))) (ash 1 v1-4)) - ) - ) - ) - ) - ) + (let* ((a3-0 (shr v1-3 2)) + (a2-3 (shr a0-4 2)) + (a1-2 (logand v1-3 3)) + (v1-4 (logand a0-4 3)) + (a0-6 (+ (* a3-0 4) a2-3))) + (logtest? (-> *ocean-work* trans-camera-masks 0 mask (+ a1-2 (* a0-6 8))) (ash 1 v1-4))))))) ;; definition for function ocean-trans-mask-ptrs-bit? (defun ocean-trans-mask-ptrs-bit? ((arg0 int) (arg1 int)) (let ((v1-3 (- arg0 (the-as int (* (-> *ocean-work* mid-minz) 4)))) - (a0-4 (- arg1 (the-as int (* (-> *ocean-work* mid-minx) 4)))) - ) + (a0-4 (- arg1 (the-as int (* (-> *ocean-work* mid-minx) 4))))) (cond ((or (< (the-as uint v1-3) 0) (>= (the-as uint v1-3) (the-as uint 16)) (< (the-as uint a0-4) 0) - (>= (the-as uint a0-4) (the-as uint 16)) - ) - #f - ) + (>= (the-as uint a0-4) (the-as uint 16))) + #f) (else - (let* ((a3-0 (shr v1-3 2)) - (a2-3 (shr a0-4 2)) - (a1-2 (logand v1-3 3)) - (v1-4 (logand a0-4 3)) - (a0-11 (-> *ocean-work* trans-mask-ptrs (+ (* (+ (* a3-0 4) a2-3) 4) a1-2))) - ) - (if a0-11 - (logtest? (-> a0-11 1) (ash 1 v1-4)) - #f - ) - ) - ) - ) - ) - ) + (let* ((a3-0 (shr v1-3 2)) + (a2-3 (shr a0-4 2)) + (a1-2 (logand v1-3 3)) + (v1-4 (logand a0-4 3)) + (a0-11 (-> *ocean-work* trans-mask-ptrs (+ (* (+ (* a3-0 4) a2-3) 4) a1-2)))) + (if a0-11 (logtest? (-> a0-11 1) (ash 1 v1-4)) #f)))))) ;; definition for function ocean-trans-mask-ptrs-set! (defun ocean-trans-mask-ptrs-set! ((arg0 int) (arg1 int)) (let ((v1-3 (- arg0 (the-as int (* (-> *ocean-work* mid-minz) 4)))) - (a0-4 (- arg1 (the-as int (* (-> *ocean-work* mid-minx) 4)))) - ) + (a0-4 (- arg1 (the-as int (* (-> *ocean-work* mid-minx) 4))))) (cond ((or (< (the-as uint v1-3) 0) (>= (the-as uint v1-3) (the-as uint 16)) (< (the-as uint a0-4) 0) - (>= (the-as uint a0-4) (the-as uint 16)) - ) - #f - ) + (>= (the-as uint a0-4) (the-as uint 16))) + #f) (else - (let* ((a2-3 (shr v1-3 2)) - (a1-2 (shr a0-4 2)) - (v1-4 (logand v1-3 3)) - (a0-5 (logand a0-4 3)) - (a3-6 (-> *ocean-work* trans-mask-ptrs (+ (* (+ (* a2-3 4) a1-2) 4) v1-4))) - ) - (cond - (a3-6 - (cond - ((logtest? (-> a3-6 1) (ash 1 a0-5)) - #f - ) - (else - (let ((a1-6 (-> *ocean-work* trans-temp-masks (+ (* a2-3 4) a1-2)))) - (logior! (-> a1-6 mask v1-4) (ash 1 a0-5)) - ) - #t - ) - ) - ) - (else - #f - ) - ) - ) - ) - ) - ) - ) + (let* ((a2-3 (shr v1-3 2)) + (a1-2 (shr a0-4 2)) + (v1-4 (logand v1-3 3)) + (a0-5 (logand a0-4 3)) + (a3-6 (-> *ocean-work* trans-mask-ptrs (+ (* (+ (* a2-3 4) a1-2) 4) v1-4)))) + (cond + (a3-6 + (cond + ((logtest? (-> a3-6 1) (ash 1 a0-5)) #f) + (else + (let ((a1-6 (-> *ocean-work* trans-temp-masks (+ (* a2-3 4) a1-2)))) (logior! (-> a1-6 mask v1-4) (ash 1 a0-5))) + #t))) + (else #f))))))) ;; definition for function ocean-trans-add-upload-table ;; WARN: Function may read a register that is not set: f31 @@ -126,8 +81,7 @@ (a2-15 uint128) (a2-16 uint128) (a3-10 uint128) - (f31-0 none) - ) + (f31-0 none)) (rlet ((acc :class vf) (vf1 :class vf) (vf10 :class vf) @@ -140,45 +94,35 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (when (ocean-trans-mask-ptrs-set! arg1 arg2) (let ((a1-2 (new-stack-vector0))) (let ((v1-1 (-> *ocean-map* start-corner))) (set! (-> a1-2 x) (+ (-> v1-1 x) (* 98304.0 (the float arg2)))) (set! (-> a1-2 y) (-> v1-1 y)) - (set! (-> a1-2 z) (+ (-> v1-1 z) (* 98304.0 (the float arg1)))) - ) + (set! (-> a1-2 z) (+ (-> v1-1 z) (* 98304.0 (the float arg1))))) (set! (-> a1-2 w) 1.0) - (ocean-mid-add-matrices arg0 a1-2) - ) + (ocean-mid-add-matrices arg0 a1-2)) (let* ((a1-3 9) (v1-3 arg0) - (a0-3 (the-as object (-> v1-3 base))) - ) + (a0-3 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a0-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-3)) (set! (-> (the-as dma-packet a0-3) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-3) vif1) - (new 'static 'vif-tag :imm #x8008 :cmd (vif-cmd unpack-v4-32) :num a1-3) - ) - (set! (-> v1-3 base) (&+ (the-as pointer a0-3) 16)) - ) + (set! (-> (the-as dma-packet a0-3) vif1) (new 'static 'vif-tag :imm #x8008 :cmd (vif-cmd unpack-v4-32) :num a1-3)) + (set! (-> v1-3 base) (&+ (the-as pointer a0-3) 16))) (set-vector! (the-as vector4w (-> arg0 base)) arg4 0 0 0) (&+! (-> arg0 base) 16) (let* ((a0-5 (logand arg1 3)) (v1-7 (logand arg2 3)) - (v1-8 (+ (* 5 a0-5) v1-7)) - ) + (v1-8 (+ (* 5 a0-5) v1-7))) (.lvf vf5 (&-> (&-> *ocean-trans-corner-table* 0 quad v1-8) 0)) (.lvf vf6 (&-> (&-> *ocean-trans-corner-table* 0 quad (+ v1-8 1)) 0)) (.lvf vf7 (&-> (&-> *ocean-trans-corner-table* 0 quad (+ v1-8 5)) 0)) - (.lvf vf8 (&-> (&-> *ocean-trans-corner-table* 0 quad (+ v1-8 6)) 0)) - ) + (.lvf vf8 (&-> (&-> *ocean-trans-corner-table* 0 quad (+ v1-8 6)) 0))) (.mov v1-12 vf8) (let ((v1-13 (the-as (inline-array vector) (-> arg0 base)))) (let ((a0-16 (/ arg1 4)) - (a1-11 (/ arg2 4)) - ) + (a1-11 (/ arg2 4))) (.lvf vf1 (&-> *ocean-trans-st-table* 0 quad)) (.lvf vf2 (&-> *ocean-trans-st-table* 1 quad)) (.lvf vf3 (&-> *ocean-trans-st-table* 2 quad)) @@ -220,17 +164,14 @@ (let ((a2-14 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ (* 52 a0-16) a1-11)))) (a3-9 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ a1-11 1 (* 52 a0-16))))) (t0-10 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ (* 52 (+ a0-16 1)) a1-11)))) - (a0-22 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ a1-11 1 (* 52 (+ a0-16 1)))))) - ) + (a0-22 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ a1-11 1 (* 52 (+ a0-16 1))))))) (.pextlb a1-15 0 a2-14) (.mov r0-0 f31-0) (.pextlb a2-15 0 a3-9) (.mov r0-1 f31-0) (.pextlb a3-10 0 t0-10) (.mov r0-2 f31-0) - (.pextlb a0-23 0 a0-22) - ) - ) + (.pextlb a0-23 0 a0-22))) (.mov r0-3 f31-0) (.pextlh a1-16 0 a1-15) (.mov r0-4 f31-0) @@ -283,30 +224,17 @@ (.add.mul.w.vf vf12 vf4 vf8 acc) (.svf (&-> v1-13 6 quad) vf11) (nop!) - (.svf (&-> v1-13 7 quad) vf12) - ) + (.svf (&-> v1-13 7 quad) vf12)) (.mov v1-14 vf12) (&+! (-> arg0 base) 128) (let* ((v1-17 arg0) - (a0-25 (the-as object (-> v1-17 base))) - ) - (set! (-> (the-as dma-packet a0-25) dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int arg3) :qwc arg4) - ) + (a0-25 (the-as object (-> v1-17 base)))) + (set! (-> (the-as dma-packet a0-25) dma) (new 'static 'dma-tag :id (dma-tag-id ref) :addr (the-as int arg3) :qwc arg4)) (set! (-> (the-as dma-packet a0-25) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-25) vif1) - (new 'static 'vif-tag :imm #x8011 :cmd (vif-cmd unpack-v4-32) :num arg4) - ) - (set! (-> v1-17 base) (&+ (the-as pointer a0-25) 16)) - ) - (if arg5 - (ocean-mid-add-call arg0 275) - (ocean-mid-add-call arg0 107) - ) - ) - (none) - ) - ) + (set! (-> (the-as dma-packet a0-25) vif1) (new 'static 'vif-tag :imm #x8011 :cmd (vif-cmd unpack-v4-32) :num arg4)) + (set! (-> v1-17 base) (&+ (the-as pointer a0-25) 16))) + (if arg5 (ocean-mid-add-call arg0 275) (ocean-mid-add-call arg0 107))) + (none))) ;; definition for function ocean-trans-add-upload-strip ;; WARN: Function may read a register that is not set: f31 @@ -327,40 +255,31 @@ (a1-16 uint128) (a2-15 uint128) (a3-11 uint128) - (f31-0 none) - ) + (f31-0 none)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (let ((a1-1 (new-stack-vector0))) (let ((v1-1 (-> *ocean-map* start-corner))) (set! (-> a1-1 x) (+ (-> v1-1 x) (* 393216.0 (the float arg2)))) (set! (-> a1-1 y) (-> v1-1 y)) - (set! (-> a1-1 z) (+ (-> v1-1 z) (* 393216.0 (the float arg1)))) - ) + (set! (-> a1-1 z) (+ (-> v1-1 z) (* 393216.0 (the float arg1))))) (set! (-> a1-1 w) 1.0) - (ocean-mid-add-matrices arg0 a1-1) - ) + (ocean-mid-add-matrices arg0 a1-1)) (let* ((a1-2 9) (v1-3 arg0) - (a0-2 (the-as object (-> v1-3 base))) - ) + (a0-2 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-2)) (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-2) vif1) - (new 'static 'vif-tag :imm #x8008 :cmd (vif-cmd unpack-v4-32) :num a1-2) - ) - (set! (-> v1-3 base) (&+ (the-as pointer a0-2) 16)) - ) + (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x8008 :cmd (vif-cmd unpack-v4-32) :num a1-2)) + (set! (-> v1-3 base) (&+ (the-as pointer a0-2) 16))) (let ((v1-4 (the-as object (-> arg0 base)))) (set! (-> *ocean-work* trans-mask-ptrs (+ (* arg4 4) arg5)) (the-as (pointer int32) v1-4)) (set! (-> (the-as vector4w v1-4) x) 10) (set! (-> (the-as vector4w v1-4) y) (the-as int arg3)) (set! (-> (the-as vector4w v1-4) z) 0) - (set! (-> (the-as vector4w v1-4) w) 0) - ) + (set! (-> (the-as vector4w v1-4) w) 0)) (&+! (-> arg0 base) 16) (let ((v1-7 (the-as (inline-array vector) (-> arg0 base)))) (set! (-> v1-7 0 quad) (-> *ocean-trans-st-table* 0 quad)) @@ -370,16 +289,14 @@ (let ((a0-22 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ (* 52 (the-as int arg1)) arg2)))) (a1-13 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ arg2 1 (* 52 (the-as int arg1)))))) (a2-14 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ (* 52 (the-as int (+ arg1 1))) arg2)))) - (a3-10 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ arg2 1 (* 52 (the-as int (+ arg1 1))))))) - ) + (a3-10 (the-as uint128 (-> *ocean-map* ocean-colors colors (+ arg2 1 (* 52 (the-as int (+ arg1 1)))))))) (.pextlb a0-23 0 a0-22) (.mov r0-0 f31-0) (.pextlb a1-14 0 a1-13) (.mov r0-1 f31-0) (.pextlb a2-15 0 a2-14) (.mov r0-2 f31-0) - (.pextlb a3-11 0 a3-10) - ) + (.pextlb a3-11 0 a3-10)) (.mov r0-3 f31-0) (.pextlh a0-24 0 a0-23) (.mov r0-4 f31-0) @@ -406,31 +323,25 @@ (nop!) (.svf (&-> v1-7 6 quad) vf3) (nop!) - (.svf (&-> v1-7 7 quad) vf4) - ) + (.svf (&-> v1-7 7 quad) vf4)) (.mov v1-8 vf4) (&+! (-> arg0 base) 128) (let* ((a1-17 10) (v1-11 arg0) - (a0-26 (the-as object (-> v1-11 base))) - ) + (a0-26 (the-as object (-> v1-11 base)))) (set! (-> (the-as dma-packet a0-26) dma) - (new 'static 'dma-tag - :id (dma-tag-id ref) - :addr (the-as int (+ (+ (* 160 (the-as int arg5)) 0) (the-as int *ocean-trans-strip-array*))) - :qwc a1-17 - ) - ) + (new 'static + 'dma-tag + :id (dma-tag-id ref) + :addr + (the-as int (+ (+ (* 160 (the-as int arg5)) 0) (the-as int *ocean-trans-strip-array*))) + :qwc + a1-17)) (set! (-> (the-as dma-packet a0-26) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-26) vif1) - (new 'static 'vif-tag :imm #x8011 :cmd (vif-cmd unpack-v4-32) :num a1-17) - ) - (set! (-> v1-11 base) (&+ (the-as pointer a0-26) 16)) - ) + (set! (-> (the-as dma-packet a0-26) vif1) (new 'static 'vif-tag :imm #x8011 :cmd (vif-cmd unpack-v4-32) :num a1-17)) + (set! (-> v1-11 base) (&+ (the-as pointer a0-26) 16))) (ocean-mid-add-call arg0 107) - (none) - ) - ) + (none))) ;; definition for function ocean-transition-check ;; Used lq/sq @@ -438,21 +349,17 @@ (local-vars (v0-0 symbol) (v1-10 float) (a3-2 float) (a3-6 float) (a3-10 float)) (rlet ((vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (let ((v1-0 (new-stack-vector0)) - (t0-1 (-> *math-camera* trans)) - ) + (t0-1 (-> *math-camera* trans))) 1.0 (set! (-> v1-0 x) (+ (-> arg3 x) (* 98304.0 (the float arg1)))) (set! (-> v1-0 y) (-> arg3 y)) (set! (-> v1-0 z) (+ (-> arg3 z) (* 98304.0 (the float arg2)))) (let ((a3-1 v1-0) - (t1-0 t0-1) - ) + (t1-0 t0-1)) (.lvf vf2 (&-> a3-1 quad)) - (.lvf vf3 (&-> t1-0 quad)) - ) + (.lvf vf3 (&-> t1-0 quad))) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.y.vf vf1 vf1 vf1 :mask #b1) @@ -460,15 +367,12 @@ (.mov a3-2 vf1) (when (< a3-2 19327350000.0) (logior! (-> arg0 mask arg2) (ash 1 arg1)) - (return #f) - ) + (return #f)) (set! (-> v1-0 x) (+ 98304.0 (-> v1-0 x))) (let ((a3-5 v1-0) - (t1-1 t0-1) - ) + (t1-1 t0-1)) (.lvf vf2 (&-> a3-5 quad)) - (.lvf vf3 (&-> t1-1 quad)) - ) + (.lvf vf3 (&-> t1-1 quad))) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.y.vf vf1 vf1 vf1 :mask #b1) @@ -476,15 +380,12 @@ (.mov a3-6 vf1) (when (< a3-6 19327350000.0) (logior! (-> arg0 mask arg2) (ash 1 arg1)) - (return #f) - ) + (return #f)) (set! (-> v1-0 z) (+ 98304.0 (-> v1-0 z))) (let ((a3-9 v1-0) - (t1-2 t0-1) - ) + (t1-2 t0-1)) (.lvf vf2 (&-> a3-9 quad)) - (.lvf vf3 (&-> t1-2 quad)) - ) + (.lvf vf3 (&-> t1-2 quad))) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.y.vf vf1 vf1 vf1 :mask #b1) @@ -492,12 +393,10 @@ (.mov a3-10 vf1) (when (< a3-10 19327350000.0) (logior! (-> arg0 mask arg2) (ash 1 arg1)) - (return #f) - ) + (return #f)) (set! (-> v1-0 x) (+ -98304.0 (-> v1-0 x))) (.lvf vf2 (&-> v1-0 quad)) - (.lvf vf3 (&-> t0-1 quad)) - ) + (.lvf vf3 (&-> t0-1 quad))) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.y.vf vf1 vf1 vf1 :mask #b1) @@ -506,10 +405,7 @@ (when (< v1-10 19327350000.0) (logior! (-> arg0 mask arg2) (ash 1 arg1)) (return #f) - v0-0 - ) - ) - ) + v0-0))) ;; definition for function ocean-make-trans-camera-masks ;; Used lq/sq @@ -528,11 +424,8 @@ (set! (-> sv-60 x) (- (+ (-> sv-56 x) (* 98304.0 (the float s5-0))) (-> sv-52 x))) (set! (-> sv-60 y) (- (-> sv-56 y) (-> sv-52 y))) (set! (-> sv-60 z) (- (+ (-> sv-56 z) (* 98304.0 (the float gp-0))) (-> sv-52 z))) - (ocean-transition-check sv-48 s5-0 gp-0 sv-56) - ) - ) - #f - ) + (ocean-transition-check sv-48 s5-0 gp-0 sv-56))) + #f) ;; definition for function ocean-trans-add-upload (defun ocean-trans-add-upload ((arg0 dma-buffer) (arg1 int) (arg2 int)) @@ -541,122 +434,57 @@ (s2-0 (ocean-trans-camera-masks-bit? (the-as uint (+ arg1 1)) (the-as uint arg2))) (s3-0 (ocean-trans-camera-masks-bit? (the-as uint arg1) (the-as uint (+ arg2 -1)))) (a0-6 (ocean-trans-camera-masks-bit? (the-as uint arg1) (the-as uint (+ arg2 1)))) - (v1-0 0) - ) - (if s1-0 - (+! v1-0 1) - ) - (if s2-0 - (+! v1-0 2) - ) - (if s3-0 - (+! v1-0 4) - ) - (if a0-6 - (+! v1-0 8) - ) + (v1-0 0)) + (if s1-0 (+! v1-0 1)) + (if s2-0 (+! v1-0 2)) + (if s3-0 (+! v1-0 4)) + (if a0-6 (+! v1-0 8)) (cond ((= v1-0 1) (if (not (ocean-trans-mask-ptrs-bit? (+ arg1 -1) arg2)) - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-table* 11 #t) - ) - ) + (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-table* 11 #t))) ((= v1-0 2) (if (not (ocean-trans-mask-ptrs-bit? (+ arg1 1) arg2)) - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-table* 11 #t) - ) - ) + (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-table* 11 #t))) ((= v1-0 4) (if (not (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 -1))) - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-left-table* 11 #t) - ) - ) + (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-left-table* 11 #t))) ((= v1-0 5) (let ((s3-1 (ocean-trans-mask-ptrs-bit? (+ arg1 -1) arg2)) - (v1-1 (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 -1))) - ) + (v1-1 (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 -1)))) (cond - ((and s3-1 v1-1) - ) - (s3-1 - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-left-table* 11 #t) - ) - (v1-1 - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-table* 11 #t) - ) - (else - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-left-table* 18 #f) - ) - ) - ) - ) + ((and s3-1 v1-1)) + (s3-1 (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-left-table* 11 #t)) + (v1-1 (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-table* 11 #t)) + (else (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-left-table* 18 #f))))) ((= v1-0 6) (let ((s3-2 (ocean-trans-mask-ptrs-bit? (+ arg1 1) arg2)) - (v1-2 (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 -1))) - ) + (v1-2 (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 -1)))) (cond - ((and s3-2 v1-2) - ) - (s3-2 - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-left-table* 11 #t) - ) - (v1-2 - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-table* 11 #t) - ) - (else - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-left-table* 18 #t) - ) - ) - ) - ) + ((and s3-2 v1-2)) + (s3-2 (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-left-table* 11 #t)) + (v1-2 (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-table* 11 #t)) + (else (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-left-table* 18 #t))))) ((= v1-0 8) (if (not (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 1))) - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-right-table* 11 #t) - ) - ) + (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-right-table* 11 #t))) ((= v1-0 9) (let ((s3-3 (ocean-trans-mask-ptrs-bit? (+ arg1 -1) arg2)) - (v1-3 (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 1))) - ) + (v1-3 (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 1)))) (cond - ((and s3-3 v1-3) - ) - (s3-3 - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-right-table* 11 #t) - ) - (v1-3 - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-table* 11 #t) - ) - (else - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-right-table* 18 #t) - ) - ) - ) - ) + ((and s3-3 v1-3)) + (s3-3 (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-right-table* 11 #t)) + (v1-3 (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-table* 11 #t)) + (else (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-up-right-table* 18 #t))))) ((= v1-0 10) (let ((s3-4 (ocean-trans-mask-ptrs-bit? (+ arg1 1) arg2)) - (v1-4 (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 1))) - ) + (v1-4 (ocean-trans-mask-ptrs-bit? arg1 (+ arg2 1)))) (cond - ((and s3-4 v1-4) - ) - (s3-4 - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-right-table* 11 #t) - ) - (v1-4 - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-table* 11 #t) - ) - (else - (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-right-table* 18 #f) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + ((and s3-4 v1-4)) + (s3-4 (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-right-table* 11 #t)) + (v1-4 (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-table* 11 #t)) + (else (ocean-trans-add-upload-table arg0 arg1 arg2 *ocean-trans-down-right-table* 18 #f)))))))) + (none)) ;; definition for function draw-ocean-transition-seams (defun draw-ocean-transition-seams ((arg0 dma-buffer)) @@ -670,85 +498,49 @@ (set! (-> sv-36 w) 69511.42) (when (and (< sv-32 sv-33) (< sv-34 sv-35)) (let ((s5-0 sv-34) - (s4-0 sv-35) - ) + (s4-0 sv-35)) (while (>= s4-0 s5-0) (let ((s3-0 sv-32) - (s2-0 sv-33) - ) + (s2-0 sv-33)) (while (>= s2-0 s3-0) (set! (-> sv-36 x) (+ 49152.0 (* 98304.0 (the float s3-0)) (-> *ocean-map* start-corner x))) (set! (-> sv-36 z) (+ 49152.0 (* 98304.0 (the float s5-0)) (-> *ocean-map* start-corner z))) (when (sphere-cull sv-36) - (if (not (ocean-trans-camera-masks-bit? s5-0 s3-0)) - (ocean-trans-add-upload arg0 (the-as int s5-0) (the-as int s3-0)) - ) - ) - (+! s3-0 1) - ) - ) - (+! s5-0 1) - ) - ) - ) + (if (not (ocean-trans-camera-masks-bit? s5-0 s3-0)) (ocean-trans-add-upload arg0 (the-as int s5-0) (the-as int s3-0)))) + (+! s3-0 1))) + (+! s5-0 1)))) (dotimes (v1-27 16) (when (nonzero? (-> *ocean-work* trans-camera-masks v1-27 word)) (dotimes (a0-12 4) (let ((a1-8 (-> *ocean-work* trans-mask-ptrs (+ (* v1-27 4) a0-12)))) - (if a1-8 - (logior! (-> a1-8 1) (-> *ocean-work* trans-temp-masks 0 mask (+ a0-12 (* v1-27 8)))) - ) - ) - ) - ) - ) - #f - ) + (if a1-8 (logior! (-> a1-8 1) (-> *ocean-work* trans-temp-masks 0 mask (+ a0-12 (* v1-27 8))))))))) + #f) ;; definition for function ocean-trans-add-constants (defun ocean-trans-add-constants ((arg0 dma-buffer)) (let* ((a2-0 4) (v1-0 arg0) - (a1-0 (the-as object (-> v1-0 base))) - ) + (a1-0 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-0)) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a1-0) vif1) - (new 'static 'vif-tag :imm #x2fd :cmd (vif-cmd unpack-v4-32) :num a2-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16)) - ) + (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag :imm #x2fd :cmd (vif-cmd unpack-v4-32) :num a2-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))) (let ((v1-1 (the-as matrix (-> arg0 base)))) (set-vector! (-> v1-1 vector 0) 0.0 0.0 0.0 1.0) (set-vector! (-> v1-1 vector 1) 98304.0 0.0 0.0 1.0) (set-vector! (-> v1-1 vector 2) 0.0 0.0 98304.0 1.0) - (set-vector! (-> v1-1 vector 3) 98304.0 0.0 98304.0 1.0) - ) - (let ((v0-0 (&+ (-> arg0 base) 64))) - (set! (-> arg0 base) v0-0) - v0-0 - ) - ) + (set-vector! (-> v1-1 vector 3) 98304.0 0.0 98304.0 1.0)) + (let ((v0-0 (&+ (-> arg0 base) 64))) (set! (-> arg0 base) v0-0) v0-0)) ;; definition for function draw-ocean-transition ;; INFO: Return type mismatch int vs none. (defun draw-ocean-transition ((arg0 dma-buffer)) - (local-vars - (sv-32 uint) - (sv-33 uint) - (sv-34 uint) - (sv-35 uint) - (sv-36 sphere) - (sv-40 ocean-trans-mask) - (sv-44 uint) - ) + (local-vars (sv-32 uint) (sv-33 uint) (sv-34 uint) (sv-35 uint) (sv-36 sphere) (sv-40 ocean-trans-mask) (sv-44 uint)) (dotimes (v1-0 16) (set! (-> *ocean-work* trans-camera-masks v1-0 word) (the-as uint 0)) - (set! (-> *ocean-work* near-mask-indices v1-0) (the-as uint -1)) - ) + (set! (-> *ocean-work* near-mask-indices v1-0) (the-as uint -1))) (dotimes (v1-3 64) - (set! (-> *ocean-work* trans-mask-ptrs v1-3) (the-as (pointer int32) #f)) - ) + (set! (-> *ocean-work* trans-mask-ptrs v1-3) (the-as (pointer int32) #f))) (set! sv-32 (-> *ocean-work* mid-minx)) (set! sv-33 (-> *ocean-work* mid-maxx)) (set! sv-34 (-> *ocean-work* mid-minz)) @@ -757,40 +549,27 @@ (set! (-> sv-36 y) (-> *ocean-map* start-corner y)) (set! (-> sv-36 w) 278045.7) (let ((s5-0 sv-34) - (s4-0 sv-35) - ) + (s4-0 sv-35)) (while (>= s4-0 s5-0) (let ((s3-0 sv-32) - (s2-0 sv-33) - ) + (s2-0 sv-33)) (while (>= s2-0 s3-0) (when (not (ocean-mid-mask-ptrs-bit? s5-0 s3-0)) (when (ocean-mid-camera-masks-bit? s5-0 s3-0) (set! (-> sv-36 x) (+ 196608.0 (* 393216.0 (the float s3-0)) (-> *ocean-map* start-corner x))) (set! (-> sv-36 z) (+ 196608.0 (* 393216.0 (the float s5-0)) (-> *ocean-map* start-corner z))) - (if (sphere-cull sv-36) - (ocean-make-trans-camera-masks s5-0 s3-0 (- s5-0 sv-34) (- s3-0 sv-32)) - ) - ) - ) - (+! s3-0 1) - ) - ) - (+! s5-0 1) - ) - ) + (if (sphere-cull sv-36) (ocean-make-trans-camera-masks s5-0 s3-0 (- s5-0 sv-34) (- s3-0 sv-32))))) + (+! s3-0 1))) + (+! s5-0 1))) (let ((a2-2 192) (a1-8 0) (a0-11 192) - (v1-32 0) - ) + (v1-32 0)) (let ((a3-1 sv-34) - (t0-0 sv-35) - ) + (t0-0 sv-35)) (while (>= t0-0 a3-1) (let ((t1-0 sv-32) - (t2-0 sv-33) - ) + (t2-0 sv-33)) (while (>= t2-0 t1-0) (set! sv-40 (-> *ocean-work* trans-camera-masks (+ (* (- a3-1 sv-34) 4) (- t1-0 sv-32)))) (when (nonzero? (-> sv-40 word)) @@ -798,50 +577,26 @@ (let ((t4-5 (-> sv-40 mask t3-10))) (when (nonzero? t4-5) (let ((t5-2 (+ (* a3-1 4) t3-10))) - (if (< t5-2 (the-as uint a0-11)) - (set! a0-11 (the-as int t5-2)) - ) - (if (< (the-as uint v1-32) t5-2) - (set! v1-32 (the-as int t5-2)) - ) - ) + (if (< t5-2 (the-as uint a0-11)) (set! a0-11 (the-as int t5-2))) + (if (< (the-as uint v1-32) t5-2) (set! v1-32 (the-as int t5-2)))) (dotimes (t5-3 4) (when (logtest? t4-5 (ash 1 t5-3)) (let ((t6-9 (+ (* t1-0 4) t5-3))) - (if (< t6-9 (the-as uint a2-2)) - (set! a2-2 (the-as int t6-9)) - ) - (if (< (the-as uint a1-8) t6-9) - (set! a1-8 (the-as int t6-9)) - ) - ) - ) - ) - ) - ) - ) - ) - (+! t1-0 1) - ) - ) - (+! a3-1 1) - ) - ) + (if (< t6-9 (the-as uint a2-2)) (set! a2-2 (the-as int t6-9))) + (if (< (the-as uint a1-8) t6-9) (set! a1-8 (the-as int t6-9)))))))))) + (+! t1-0 1))) + (+! a3-1 1))) (set! (-> *ocean-work* near-minx) (the-as uint (+ a2-2 -1))) (set! (-> *ocean-work* near-maxx) (the-as uint (+ a1-8 1))) (set! (-> *ocean-work* near-minz) (the-as uint (+ a0-11 -1))) - (set! (-> *ocean-work* near-maxz) (the-as uint (+ v1-32 1))) - ) + (set! (-> *ocean-work* near-maxz) (the-as uint (+ v1-32 1)))) (dotimes (v1-34 16) - (set! (-> *ocean-work* trans-temp-masks v1-34 word) (-> *ocean-work* trans-camera-masks v1-34 word)) - ) + (set! (-> *ocean-work* trans-temp-masks v1-34 word) (-> *ocean-work* trans-camera-masks v1-34 word))) (let ((s5-1 sv-34) - (s4-1 sv-35) - ) + (s4-1 sv-35)) (while (>= s4-1 s5-1) (let ((s3-1 sv-32) - (s2-1 sv-33) - ) + (s2-1 sv-33)) (while (>= s2-1 s3-1) (when (not (ocean-mid-mask-ptrs-bit? s5-1 s3-1)) (when (ocean-mid-camera-masks-bit? s5-1 s3-1) @@ -852,30 +607,12 @@ (let ((s1-0 (-> *ocean-map* ocean-mid-masks data (-> v1-43 parent)))) (dotimes (s0-0 4) (let ((a3-5 (-> (the-as ocean-mid-mask (+ s0-0 (the-as int s1-0))) mask 0))) - (if (!= a3-5 255) - (ocean-trans-add-upload-strip arg0 s5-1 s3-1 a3-5 sv-44 (the-as uint s0-0)) - ) - ) - ) - ) - ) - ) - ) - ) - (+! s3-1 1) - ) - ) - (+! s5-1 1) - ) - ) + (if (!= a3-5 255) (ocean-trans-add-upload-strip arg0 s5-1 s3-1 a3-5 sv-44 (the-as uint s0-0)))))))))) + (+! s3-1 1))) + (+! s5-1 1))) (ocean-mid-add-call-flush arg0 (the-as uint 41)) (ocean-trans-add-constants arg0) (draw-ocean-transition-seams arg0) (ocean-mid-add-call-flush arg0 (the-as uint 41)) 0 - (none) - ) - - - - + (none)) diff --git a/goal_src/jak1/engine/gfx/ocean/ocean-vu0.gc b/goal_src/jak1/engine/gfx/ocean/ocean-vu0.gc index f3bff6980f..86acd19f5f 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean-vu0.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean-vu0.gc @@ -1,27 +1,21 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/ocean/ocean-h.gc") (require "kernel/gkernel-h.gc") (require "engine/math/vector-h.gc") - -;; name: ocean-vu0.gc -;; name in dgo: ocean-vu0 -;; dgos: GAME, ENGINE - -(define *ocean-vu0-work* (new 'static 'ocean-vu0-work - :scales - (new 'static 'vector :x -0.00006975447 :y 255.0 :z -0.00006975447) - :mask-hi - (new 'static 'vector4w :x -65536 :y -65536 :z -65536 :w -65536) - :mask-lo - (new 'static 'vector4w :x #xffff :y #xffff :z #xffff :w #xffff) - ) - ) +(define *ocean-vu0-work* + (new 'static + 'ocean-vu0-work + :scales + (new 'static 'vector :x -0.00006975447 :y 255.0 :z -0.00006975447) + :mask-hi + (new 'static 'vector4w :x -65536 :y -65536 :z -65536 :w -65536) + :mask-lo + (new 'static 'vector4w :x #xffff :y #xffff :z #xffff :w #xffff))) (def-mips2c ocean-interp-wave (function ocean-wave-info uint none)) ;; TODO mips2c (define ocean-vu0-block (new 'static 'vu-function :length #x0 :qlength #x0)) -(def-mips2c ocean-generate-verts (function (inline-array vector) ocean-wave-info none)) ;; TODO mips2c \ No newline at end of file +(def-mips2c ocean-generate-verts (function (inline-array vector) ocean-wave-info none)) ;; TODO mips2c diff --git a/goal_src/jak1/engine/gfx/ocean/ocean.gc b/goal_src/jak1/engine/gfx/ocean/ocean.gc index 31fdd27cfe..8ec2559155 100644 --- a/goal_src/jak1/engine/gfx/ocean/ocean.gc +++ b/goal_src/jak1/engine/gfx/ocean/ocean.gc @@ -1,19 +1,16 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/ocean/ocean-tables.gc") (require "engine/gfx/background/subdivide-h.gc") (require "engine/gfx/sky/sky-tng.gc") (require "engine/camera/cam-interface-h.gc") -;; name: ocean.gc -;; name in dgo: ocean -;; dgos: GAME, ENGINE ;; note: changed for high fps ;; TODO - for ocean-transition (define-extern *ocean-map* ocean-map) + ;; TODO - for rigid-body (defun ocean-get-height ((arg0 vector)) @@ -33,18 +30,12 @@ (f4-4 (-> (the-as (pointer float) (+ (the-as uint *ocean-heights*) (* (+ (* a2-0 32) v1-11) 4))))) (f3-2 (-> (the-as (pointer float) (+ (the-as uint *ocean-heights*) (* (+ (* a1-1 32) a0-1) 4))))) (f5-0 (-> (the-as (pointer float) (+ (the-as uint *ocean-heights*) (* (+ (* a1-1 32) v1-11) 4))))) - (f2-6 (+ (* f4-4 f0-4) (* f2-4 (- 1.0 f0-4)))) - ) - (+ (* (+ (* f5-0 f0-4) (* f3-2 (- 1.0 f0-4))) f1-10) (* f2-6 (- 1.0 f1-10)) (-> *ocean-map* start-corner y)) - ) - ) - (else - 0.0 - ) - ) - ) + (f2-6 (+ (* f4-4 f0-4) (* f2-4 (- 1.0 f0-4))))) + (+ (* (+ (* f5-0 f0-4) (* f3-2 (- 1.0 f0-4))) f1-10) (* f2-6 (- 1.0 f1-10)) (-> *ocean-map* start-corner y)))) + (else 0.0))) (def-mips2c init-ocean-far-regs (function none)) + (def-mips2c render-ocean-quad (function (inline-array ocean-vertex) dma-buffer symbol)) ;; (vertices (-> (scratchpad-object terrain-context) work background dma-area ocean-vertex)) @@ -60,8 +51,7 @@ (sv-112 float) (sv-128 int) (sv-144 float) - (sv-160 int) - ) + (sv-160 int)) (let* ((s1-0 48) (s3-0 48) (f24-0 (-> *ocean-map* start-corner x)) @@ -69,8 +59,7 @@ (f22-0 (-> *ocean-map* start-corner z)) (f28-0 (+ f22-0 (* 393216.0 (the float s3-0)))) (f26-0 (+ f24-0 (* 393216.0 (the float s1-0)))) - (vertices (-> (scratchpad-object terrain-context) work background dma-area ocean-vertex)) - ) + (vertices (-> (scratchpad-object terrain-context) work background dma-area ocean-vertex))) (let ((s2-0 #f)) 0 (set! (-> vertices 0 col quad) (-> *ocean-map* far-color quad)) @@ -94,45 +83,28 @@ (set! (-> v1-19 pos x) f0-23) (set! (-> v1-19 pos y) f30-0) (set! (-> v1-19 pos z) f20-0) - (set! (-> v1-19 pos w) 0.0) - ) + (set! (-> v1-19 pos w) 0.0)) (let ((v1-20 (-> vertices 1))) (set! (-> v1-20 pos x) f1-7) (set! (-> v1-20 pos y) f30-0) (set! (-> v1-20 pos z) f20-0) - (set! (-> v1-20 pos w) 0.0) - ) + (set! (-> v1-20 pos w) 0.0)) (let ((v1-21 (-> vertices 2))) (set! (-> v1-21 pos x) f1-7) (set! (-> v1-21 pos y) f30-0) (set! (-> v1-21 pos z) sv-16) - (set! (-> v1-21 pos w) 1.0) - ) - ) + (set! (-> v1-21 pos w) 1.0))) (let ((v1-22 (-> vertices 3))) (set! (-> v1-22 pos x) f0-23) (set! (-> v1-22 pos y) f30-0) (set! (-> v1-22 pos z) sv-16) - (set! (-> v1-22 pos w) 1.0) - ) - ) + (set! (-> v1-22 pos w) 1.0))) (set! sv-32 (logand (+ sv-32 1) 7)) (set! s2-0 (render-ocean-quad vertices arg0)) (cond - (s2-0 - (set! s0-0 #t) - ) - (else - (if s0-0 - (goto cfg-10) - ) - ) - ) - (set! sv-48 (+ sv-48 1)) - ) - ) - ) - ) + (s2-0 (set! s0-0 #t)) + (else (if s0-0 (goto cfg-10)))) + (set! sv-48 (+ sv-48 1)))))) (label cfg-10) (when (zero? (logand arg1 4)) (let ((f20-1 f28-0)) @@ -147,45 +119,28 @@ (set! (-> v1-43 pos x) f0-30) (set! (-> v1-43 pos y) f30-0) (set! (-> v1-43 pos z) f20-1) - (set! (-> v1-43 pos w) 1.0) - ) + (set! (-> v1-43 pos w) 1.0)) (let ((v1-44 (-> vertices 1))) (set! (-> v1-44 pos x) f1-14) (set! (-> v1-44 pos y) f30-0) (set! (-> v1-44 pos z) f20-1) - (set! (-> v1-44 pos w) 1.0) - ) + (set! (-> v1-44 pos w) 1.0)) (let ((v1-45 (-> vertices 2))) (set! (-> v1-45 pos x) f1-14) (set! (-> v1-45 pos y) f30-0) (set! (-> v1-45 pos z) sv-64) - (set! (-> v1-45 pos w) 0.0) - ) - ) + (set! (-> v1-45 pos w) 0.0))) (let ((v1-46 (-> vertices 3))) (set! (-> v1-46 pos x) f0-30) (set! (-> v1-46 pos y) f30-0) (set! (-> v1-46 pos z) sv-64) - (set! (-> v1-46 pos w) 0.0) - ) - ) + (set! (-> v1-46 pos w) 0.0))) (set! sv-80 (logand (+ sv-80 1) 7)) (render-ocean-quad vertices arg0) (cond - (s2-0 - (set! s0-1 #t) - ) - (else - (if s0-1 - (goto cfg-20) - ) - ) - ) - (set! sv-96 (+ sv-96 1)) - ) - ) - ) - ) + (s2-0 (set! s0-1 #t)) + (else (if s0-1 (goto cfg-20)))) + (set! sv-96 (+ sv-96 1)))))) (label cfg-20) (set-vector! (-> vertices 0 stq) 0.0 0.0 1.0 1.0) (set-vector! (-> vertices 1 stq) 15.0 0.0 1.0 1.0) @@ -198,49 +153,32 @@ (set! sv-128 0) (dotimes (s0-2 s3-0) (let* ((f1-19 (+ (* 393216.0 (the float s0-2)) f22-0)) - (f0-53 (+ 393216.0 f1-19)) - ) + (f0-53 (+ 393216.0 f1-19))) (let ((v1-66 (-> vertices 0))) (set! (-> v1-66 pos x) f20-2) (set! (-> v1-66 pos y) f30-0) (set! (-> v1-66 pos z) f1-19) - (set! (-> v1-66 pos w) 0.0) - ) + (set! (-> v1-66 pos w) 0.0)) (let ((v1-67 (-> vertices 1))) (set! (-> v1-67 pos x) sv-112) (set! (-> v1-67 pos y) f30-0) (set! (-> v1-67 pos z) f1-19) - (set! (-> v1-67 pos w) 1.0) - ) + (set! (-> v1-67 pos w) 1.0)) (let ((v1-68 (-> vertices 2))) (set! (-> v1-68 pos x) sv-112) (set! (-> v1-68 pos y) f30-0) (set! (-> v1-68 pos z) f0-53) - (set! (-> v1-68 pos w) 1.0) - ) + (set! (-> v1-68 pos w) 1.0)) (let ((v1-69 (-> vertices 3))) (set! (-> v1-69 pos x) f20-2) (set! (-> v1-69 pos y) f30-0) (set! (-> v1-69 pos z) f0-53) - (set! (-> v1-69 pos w) 0.0) - ) - ) + (set! (-> v1-69 pos w) 0.0))) (set! sv-128 (logand (+ sv-128 1) 7)) (render-ocean-quad vertices arg0) (cond - (s2-0 - (set! s1-1 #t) - ) - (else - (if s1-1 - (goto cfg-30) - ) - ) - ) - ) - ) - ) - ) + (s2-0 (set! s1-1 #t)) + (else (if s1-1 (goto cfg-30)))))))) (label cfg-30) (when (zero? (logand arg1 8)) (let ((f20-3 f26-0)) @@ -249,50 +187,32 @@ (set! sv-160 0) (dotimes (s0-3 s3-0) (let* ((f1-25 (+ (* 393216.0 (the float s0-3)) f22-0)) - (f0-60 (+ 393216.0 f1-25)) - ) + (f0-60 (+ 393216.0 f1-25))) (let ((v1-83 (-> vertices 0))) (set! (-> v1-83 pos x) f20-3) (set! (-> v1-83 pos y) f30-0) (set! (-> v1-83 pos z) f1-25) - (set! (-> v1-83 pos w) 1.0) - ) + (set! (-> v1-83 pos w) 1.0)) (let ((v1-84 (-> vertices 1))) (set! (-> v1-84 pos x) sv-144) (set! (-> v1-84 pos y) f30-0) (set! (-> v1-84 pos z) f1-25) - (set! (-> v1-84 pos w) 0.0) - ) + (set! (-> v1-84 pos w) 0.0)) (let ((v1-85 (-> vertices 2))) (set! (-> v1-85 pos x) sv-144) (set! (-> v1-85 pos y) f30-0) (set! (-> v1-85 pos z) f0-60) - (set! (-> v1-85 pos w) 0.0) - ) + (set! (-> v1-85 pos w) 0.0)) (let ((v1-86 (-> vertices 3))) (set! (-> v1-86 pos x) f20-3) (set! (-> v1-86 pos y) f30-0) (set! (-> v1-86 pos z) f0-60) - (set! (-> v1-86 pos w) 1.0) - ) - ) + (set! (-> v1-86 pos w) 1.0))) (set! sv-160 (logand (+ sv-160 1) 7)) (render-ocean-quad vertices arg0) (cond - (s2-0 - (set! s1-2 #t) - ) - (else - (if s1-2 - (goto cfg-40) - ) - ) - ) - ) - ) - ) - ) - ) + (s2-0 (set! s1-2 #t)) + (else (if s1-2 (goto cfg-40))))))))) (label cfg-40) (set-vector! (-> vertices 0 stq) 0.0 0.0 1.0 1.0) (set-vector! (-> vertices 1 stq) 15.0 0.0 1.0 1.0) @@ -302,136 +222,105 @@ (let ((f0-79 (+ -5898240.0 f24-0)) (f3-0 (+ -5898240.0 f22-0)) (f2-10 f24-0) - (f1-30 f22-0) - ) + (f1-30 f22-0)) (let ((v1-105 (-> vertices 0))) (set! (-> v1-105 pos x) f0-79) (set! (-> v1-105 pos y) f30-0) (set! (-> v1-105 pos z) f3-0) - (set! (-> v1-105 pos w) 0.0) - ) + (set! (-> v1-105 pos w) 0.0)) (let ((v1-106 (-> vertices 1))) (set! (-> v1-106 pos x) f2-10) (set! (-> v1-106 pos y) f30-0) (set! (-> v1-106 pos z) f3-0) - (set! (-> v1-106 pos w) 0.0) - ) + (set! (-> v1-106 pos w) 0.0)) (let ((v1-107 (-> vertices 2))) (set! (-> v1-107 pos x) f2-10) (set! (-> v1-107 pos y) f30-0) (set! (-> v1-107 pos z) f1-30) - (set! (-> v1-107 pos w) 1.0) - ) + (set! (-> v1-107 pos w) 1.0)) (let ((v1-108 (-> vertices 3))) (set! (-> v1-108 pos x) f0-79) (set! (-> v1-108 pos y) f30-0) (set! (-> v1-108 pos z) f1-30) - (set! (-> v1-108 pos w) 0.0) - ) - ) - (render-ocean-quad vertices arg0) - ) + (set! (-> v1-108 pos w) 0.0))) + (render-ocean-quad vertices arg0)) (when (not (or (logtest? arg1 2) (logtest? arg1 8))) (let ((f0-81 f26-0)) (let ((f2-12 (+ -5898240.0 f22-0)) - (f1-33 (+ 5898240.0 f26-0)) - ) + (f1-33 (+ 5898240.0 f26-0))) (let ((v1-114 (-> vertices 0))) (set! (-> v1-114 pos x) f0-81) (set! (-> v1-114 pos y) f30-0) (set! (-> v1-114 pos z) f2-12) - (set! (-> v1-114 pos w) 0.0) - ) + (set! (-> v1-114 pos w) 0.0)) (let ((v1-115 (-> vertices 1))) (set! (-> v1-115 pos x) f1-33) (set! (-> v1-115 pos y) f30-0) (set! (-> v1-115 pos z) f2-12) - (set! (-> v1-115 pos w) 0.0) - ) + (set! (-> v1-115 pos w) 0.0)) (let ((v1-116 (-> vertices 2))) (set! (-> v1-116 pos x) f1-33) (set! (-> v1-116 pos y) f30-0) (set! (-> v1-116 pos z) f22-0) - (set! (-> v1-116 pos w) 0.0) - ) - ) + (set! (-> v1-116 pos w) 0.0))) (let ((v1-117 (-> vertices 3))) (set! (-> v1-117 pos x) f0-81) (set! (-> v1-117 pos y) f30-0) (set! (-> v1-117 pos z) f22-0) - (set! (-> v1-117 pos w) 1.0) - ) - ) - (render-ocean-quad vertices arg0) - ) + (set! (-> v1-117 pos w) 1.0))) + (render-ocean-quad vertices arg0)) (when (not (or (logtest? arg1 4) (logtest? arg1 16))) (let ((f0-84 (+ -5898240.0 f24-0)) (f2-14 f28-0) - (f1-36 (+ 5898240.0 f28-0)) - ) + (f1-36 (+ 5898240.0 f28-0))) (let ((v1-123 (-> vertices 0))) (set! (-> v1-123 pos x) f0-84) (set! (-> v1-123 pos y) f30-0) (set! (-> v1-123 pos z) f2-14) - (set! (-> v1-123 pos w) 0.0) - ) + (set! (-> v1-123 pos w) 0.0)) (let ((v1-124 (-> vertices 1))) (set! (-> v1-124 pos x) f24-0) (set! (-> v1-124 pos y) f30-0) (set! (-> v1-124 pos z) f2-14) - (set! (-> v1-124 pos w) 1.0) - ) + (set! (-> v1-124 pos w) 1.0)) (let ((v1-125 (-> vertices 2))) (set! (-> v1-125 pos x) f24-0) (set! (-> v1-125 pos y) f30-0) (set! (-> v1-125 pos z) f1-36) - (set! (-> v1-125 pos w) 0.0) - ) + (set! (-> v1-125 pos w) 0.0)) (let ((v1-126 (-> vertices 3))) (set! (-> v1-126 pos x) f0-84) (set! (-> v1-126 pos y) f30-0) (set! (-> v1-126 pos z) f1-36) - (set! (-> v1-126 pos w) 0.0) - ) - ) - (render-ocean-quad vertices arg0) - ) + (set! (-> v1-126 pos w) 0.0))) + (render-ocean-quad vertices arg0)) (when (not (or (logtest? arg1 4) (logtest? arg1 8))) (let ((f0-86 f26-0) (f1-37 f28-0) (f2-18 (+ 5898240.0 f26-0)) - (f3-5 (+ 5898240.0 f28-0)) - ) + (f3-5 (+ 5898240.0 f28-0))) (let ((v1-131 (-> vertices 0))) (set! (-> v1-131 pos x) f0-86) (set! (-> v1-131 pos y) f30-0) (set! (-> v1-131 pos z) f1-37) - (set! (-> v1-131 pos w) 1.0) - ) + (set! (-> v1-131 pos w) 1.0)) (let ((v1-132 (-> vertices 1))) (set! (-> v1-132 pos x) f2-18) (set! (-> v1-132 pos y) f30-0) (set! (-> v1-132 pos z) f1-37) - (set! (-> v1-132 pos w) 0.0) - ) + (set! (-> v1-132 pos w) 0.0)) (let ((v1-133 (-> vertices 2))) (set! (-> v1-133 pos x) f2-18) (set! (-> v1-133 pos y) f30-0) (set! (-> v1-133 pos z) f3-5) - (set! (-> v1-133 pos w) 0.0) - ) + (set! (-> v1-133 pos w) 0.0)) (let ((v1-134 (-> vertices 3))) (set! (-> v1-134 pos x) f0-86) (set! (-> v1-134 pos y) f30-0) (set! (-> v1-134 pos z) f3-5) - (set! (-> v1-134 pos w) 0.0) - ) - ) - (render-ocean-quad vertices arg0) - ) - ) - (none) - ) + (set! (-> v1-134 pos w) 0.0))) + (render-ocean-quad vertices arg0))) + (none)) ;; definition for symbol *swamp-low-ocean-marker*, type vector (define *swamp-low-ocean-marker* (new 'global 'vector)) @@ -442,170 +331,119 @@ (defun draw-ocean-far ((arg0 dma-buffer)) (init-ocean-far-regs) (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))) (let ((gp-0 (the-as object (-> arg0 base)))) (&+! (-> arg0 base) 16) (let ((v1-9 *ocean-facing*)) (cond - ((zero? v1-9) - (render-ocean-far arg0 4) - ) - ((= v1-9 1) - (render-ocean-far arg0 2) - ) - ((= v1-9 3) - (render-ocean-far arg0 8) - ) - ((= v1-9 2) - (render-ocean-far arg0 16) - ) - ) - ) + ((zero? v1-9) (render-ocean-far arg0 4)) + ((= v1-9 1) (render-ocean-far arg0 2)) + ((= v1-9 3) (render-ocean-far arg0 8)) + ((= v1-9 2) (render-ocean-far arg0 16)))) (close-sky-buffer arg0) (let ((v1-18 (/ (the-as int (+ (- -16 (the-as int gp-0)) (the-as int (-> arg0 base)))) 16))) (set! (-> (the-as dma-packet gp-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc v1-18)) (set! (-> (the-as dma-packet gp-0) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet gp-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-18)) - ) - ) + (set! (-> (the-as dma-packet gp-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-18)))) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :g #xff :a #x80) - ) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) 'draw (new 'static 'rgba :g #xff :a #x80)))) (defun ocean-init-buffer ((arg0 dma-buffer)) (let* ((a1-0 *ocean-base-page*) (v1-0 *ocean-base-block*) (s3-0 (* (+ a1-0 8) 32)) - (gp-0 (* (+ a1-0 10) 32)) - ) + (gp-0 (* (+ a1-0 10) 32))) (let* ((a1-2 arg0) - (a2-1 (the-as object (-> a1-2 base))) - ) + (a2-1 (the-as object (-> a1-2 base)))) (set! (-> (the-as dma-packet a2-1) dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a2-1) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-1) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-2 base) (the-as pointer (&+ (the-as dma-packet a2-1) 16))) - ) + (set! (-> a1-2 base) (the-as pointer (&+ (the-as dma-packet a2-1) 16)))) (let* ((a1-3 arg0) - (a2-3 (the-as object (-> a1-3 base))) - ) + (a2-3 (the-as object (-> a1-3 base)))) (set! (-> (the-as gs-gif-tag a2-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag a2-3) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a1-3 base) (&+ (the-as pointer a2-3) 16)) - ) + (set! (-> (the-as gs-gif-tag a2-3) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a1-3 base) (&+ (the-as pointer a2-3) 16))) (let* ((s5-0 arg0) - (s4-0 (-> s5-0 base)) - ) + (s4-0 (-> s5-0 base))) (set! (-> (the-as (pointer gs-test) s4-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) s4-0) 1) (gs-reg64 test-1)) (set! (-> (the-as (pointer gs-alpha) s4-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) (set! (-> (the-as (pointer gs-reg64) s4-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s4-0) 4) - (new 'static 'gs-tex0 :tbw #x2 :th (log2 128) :tw (log2 128) :tbp0 v1-0) - ) + (set! (-> (the-as (pointer gs-tex0) s4-0) 4) (new 'static 'gs-tex0 :tbw #x2 :th (log2 128) :tw (log2 128) :tbp0 v1-0)) (set! (-> (the-as (pointer gs-reg64) s4-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s4-0) 6) - (new 'static 'gs-tex1 :mxl #x6 :mmag #x1 :mmin #x4 :l #x1 :k #xeed) - ) + (set! (-> (the-as (pointer gs-tex1) s4-0) 6) (new 'static 'gs-tex1 :mxl #x6 :mmag #x1 :mmin #x4 :l #x1 :k #xeed)) (set! (-> (the-as (pointer gs-reg64) s4-0) 7) (gs-reg64 tex1-1)) (set! (-> (the-as (pointer gs-texa) s4-0) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) (set! (-> (the-as (pointer gs-reg64) s4-0) 9) (gs-reg64 texa)) (set! (-> (the-as (pointer gs-miptbp) s4-0) 10) - (new 'static 'gs-miptbp :tbw1 #x1 :tbw2 #x1 :tbw3 #x1 :tbp3 (+ gp-0 16) :tbp2 gp-0 :tbp1 s3-0) - ) + (new 'static 'gs-miptbp :tbw1 #x1 :tbw2 #x1 :tbw3 #x1 :tbp3 (+ gp-0 16) :tbp2 gp-0 :tbp1 s3-0)) (set! (-> (the-as (pointer gs-reg64) s4-0) 11) (gs-reg64 miptbp1-1)) (set! (-> (the-as (pointer gs-miptbp) s4-0) 12) - (new 'static 'gs-miptbp :tbw1 #x1 :tbw2 #x1 :tbw3 #x1 :tbp3 (+ gp-0 22) :tbp2 (+ gp-0 21) :tbp1 (+ gp-0 20)) - ) + (new 'static 'gs-miptbp :tbw1 #x1 :tbw2 #x1 :tbw3 #x1 :tbp3 (+ gp-0 22) :tbp2 (+ gp-0 21) :tbp1 (+ gp-0 20))) (set! (-> (the-as (pointer gs-reg64) s4-0) 13) (gs-reg64 miptbp2-1)) (set! (-> (the-as (pointer gs-clamp) s4-0) 14) (new 'static 'gs-clamp)) (set! (-> (the-as (pointer gs-reg64) s4-0) 15) (gs-reg64 clamp-1)) (set! (-> (the-as (pointer gs-fogcol) s4-0) 16) (the-as gs-fogcol *fog-color*)) (set! (-> (the-as (pointer gs-reg64) s4-0) 17) (gs-reg64 fogcol)) - (let ((v0-2 (&+ s4-0 144))) - (set! (-> s5-0 base) v0-2) - v0-2 - ) - ) - ) - ) + (let ((v0-2 (&+ s4-0 144))) (set! (-> s5-0 base) v0-2) v0-2)))) (defun ocean-end-buffer ((arg0 dma-buffer)) (let* ((v1-0 arg0) - (a1-0 (the-as object (-> v1-0 base))) - ) + (a1-0 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))) (let* ((v1-1 arg0) - (a1-2 (the-as object (-> v1-1 base))) - ) + (a1-2 (the-as object (-> v1-1 base)))) (set! (-> (the-as gs-gif-tag a1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a1-2) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-1 base) (&+ (the-as pointer a1-2) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-1 base) (&+ (the-as pointer a1-2) 16))) (let* ((v1-2 arg0) - (a0-1 (-> v1-2 base)) - ) + (a0-1 (-> v1-2 base))) (set! (-> (the-as (pointer gs-texa) a0-1) 0) (new 'static 'gs-texa :ta1 #x80)) (set! (-> (the-as (pointer gs-reg64) a0-1) 1) (gs-reg64 texa)) - (let ((v0-0 (&+ a0-1 16))) - (set! (-> v1-2 base) v0-0) - v0-0 - ) - ) - ) + (let ((v0-0 (&+ a0-1 16))) (set! (-> v1-2 base) v0-0) v0-0))) ;; og:preserve-this PC Port hack (define *ocean-generate-verts-vector* (new 'global 'vector)) @@ -614,70 +452,52 @@ (the-as float #x42800000) (the-as float #x43000000) (the-as float #x43000000) - (the-as float #x43000000) - ) + (the-as float #x43000000)) (defun draw-ocean () (set! *ocean-heights* #f) (set! *ocean-verts* (the-as (inline-array vector) #f)) (let ((gp-0 (-> *display* frames (-> *display* on-screen) frame global-buf))) (set! *ocean-heights* (the-as ocean-wave-info (-> gp-0 base))) - (ocean-interp-wave *ocean-heights* (the uint (* (/ (-> *display* time-factor) 5.0) (-> *display* integral-frame-counter)))) ;; og:preserve-this changed for high fps + (ocean-interp-wave *ocean-heights* + (the uint (* (/ (-> *display* time-factor) 5.0) (-> *display* integral-frame-counter)))) ;; og:preserve-this changed for high fps (&+! (-> gp-0 base) 4096) (set! *ocean-verts* (the-as (inline-array vector) (-> gp-0 base))) (ocean-generate-verts *ocean-verts* *ocean-heights*) - (&+! (-> gp-0 base) #x8000) - ) + (&+! (-> gp-0 base) #x8000)) (when *ocean-map* (let* ((v1-12 (camera-pos)) (a0-6 *swamp-low-ocean-marker*) (f0-1 (* 0.00024414062 (- (-> v1-12 x) (-> a0-6 x)))) (f0-3 (* f0-1 f0-1)) - (f1-3 (* 0.00024414062 (- (-> v1-12 z) (-> a0-6 z)))) - ) + (f1-3 (* 0.00024414062 (- (-> v1-12 z) (-> a0-6 z))))) (cond - ((< (+ f0-3 (* f1-3 f1-3)) 40000.0) - (set! (-> *ocean-map* start-corner y) -4096.0) - ) - ((or (< -409600.0 (-> v1-12 y)) (movie?)) - (set! (-> *ocean-map* start-corner y) 0.0) - ) - (else - (set! (-> *ocean-map* start-corner y) -98304.0) - ) - ) - ) + ((< (+ f0-3 (* f1-3 f1-3)) 40000.0) (set! (-> *ocean-map* start-corner y) -4096.0)) + ((or (< -409600.0 (-> v1-12 y)) (movie?)) (set! (-> *ocean-map* start-corner y) 0.0)) + (else (set! (-> *ocean-map* start-corner y) -98304.0)))) (when (not *ocean-off*) (when (logtest? *vu1-enable-user* (vu1-renderer-mask ocean)) (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-1 (-> s5-0 base)) - ) + (gp-1 (-> s5-0 base))) (draw-ocean-texture s5-0 *ocean-verts* #t) (ocean-init-buffer s5-0) (draw-ocean-far s5-0) (when (not *ocean-mid-off*) - (draw-ocean-mid s5-0) - ) + (draw-ocean-mid s5-0)) (ocean-end-buffer s5-0) (let ((a3-0 (-> s5-0 base))) (let ((v1-32 (the-as object (-> s5-0 base)))) (set! (-> (the-as dma-packet v1-32) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-32) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-32) vif1) (new 'static 'vif-tag)) - (set! (-> s5-0 base) (&+ (the-as pointer v1-32) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id ocean-mid-and-far) - gp-1 - (the-as (pointer dma-tag) a3-0) - ) - ) - ) + (set! (-> s5-0 base) (&+ (the-as pointer v1-32) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id ocean-mid-and-far) + gp-1 + (the-as (pointer dma-tag) a3-0)))) (when (not (or *ocean-near-off* (or *ocean-mid-off* (< 196608.0 (fabs (-> *math-camera* trans y)))))) (let* ((s5-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-2 (-> s5-1 base)) - ) + (gp-2 (-> s5-1 base))) (draw-ocean-texture s5-1 *ocean-verts* #f) (draw-ocean-near s5-1) (ocean-end-buffer s5-1) @@ -686,28 +506,17 @@ (set! (-> (the-as dma-packet v1-46) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-46) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-46) vif1) (new 'static 'vif-tag)) - (set! (-> s5-1 base) (&+ (the-as pointer v1-46) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id ocean-near) - gp-2 - (the-as (pointer dma-tag) a3-1) - ) - ) - ) - ) - ) - ) - ) + (set! (-> s5-1 base) (&+ (the-as pointer v1-46) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id ocean-near) + gp-2 + (the-as (pointer dma-tag) a3-1)))))))) (when (not (paused?)) (set! *ocean-off* #f) (set! *ocean-mid-off* #f) - (set! *ocean-near-off* #f) - ) + (set! *ocean-near-off* #f)) 0 - (none) - ) + (none)) (defun update-ocean () (set! *ocean-map* #f) @@ -719,39 +528,15 @@ ((= a1-3 'none) (when (and (-> a0-3 meta-inside?) (not (-> a0-3 other meta-inside?))) (set! *ocean-map* #f) - (goto cfg-19) - ) - ) - ((and a1-3 (nonzero? (-> a1-3 value))) - (set! *ocean-map* (the-as ocean-map (-> a1-3 value))) - ) - ) - ) - ) - ) - ) + (goto cfg-19))) + ((and a1-3 (nonzero? (-> a1-3 value))) (set! *ocean-map* (the-as ocean-map (-> a1-3 value))))))))) (label cfg-19) - (if (and *ocean-map* (< (-> *math-camera* trans y) -409600.0)) - (set! *ocean-map* *ocean-map-sunken*) - ) + (if (and *ocean-map* (< (-> *math-camera* trans y) -409600.0)) (set! *ocean-map* *ocean-map-sunken*)) (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> (matrix-local->world #f #f) vector 2 quad)) (cond - ((< (fabs (-> gp-0 z)) (fabs (-> gp-0 x))) - (if (< (-> gp-0 x) 0.0) - (set! *ocean-facing* 3) - (set! *ocean-facing* 2) - ) - ) - ((< (-> gp-0 z) 0.0) - (set! *ocean-facing* 0) - 0 - ) - (else - (set! *ocean-facing* 1) - ) - ) - ) + ((< (fabs (-> gp-0 z)) (fabs (-> gp-0 x))) (if (< (-> gp-0 x) 0.0) (set! *ocean-facing* 3) (set! *ocean-facing* 2))) + ((< (-> gp-0 z) 0.0) (set! *ocean-facing* 0) 0) + (else (set! *ocean-facing* 1)))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/shadow/shadow-cpu-h.gc b/goal_src/jak1/engine/gfx/shadow/shadow-cpu-h.gc index 7eb279b76c..5f9a61523c 100644 --- a/goal_src/jak1/engine/gfx/shadow/shadow-cpu-h.gc +++ b/goal_src/jak1/engine/gfx/shadow/shadow-cpu-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/data/art-h.gc") -;; name: shadow-cpu-h.gc -;; name in dgo: shadow-cpu-h -;; dgos: GAME, ENGINE - ;; The shadow renderer is partially on the EE and on VU1. ;; This "shadow-cpu" portion is what runs on the EE. @@ -28,68 +23,53 @@ ;; settings computed by the user, consumed by the shadow renderer (deftype shadow-settings (structure) - ((center vector :inline) ;; unused? - (flags shadow-flags :overlay-at (-> center w)) ;; used to disable, most other flags do nothing? - (shadow-dir vector :inline) - (dist-to-locus float :overlay-at (-> shadow-dir w)) - (bot-plane plane :inline) ;; volume clip plane - (top-plane plane :inline) + ((center vector :inline) ;; unused? + (flags shadow-flags :overlay-at (-> center w)) ;; used to disable, most other flags do nothing? + (shadow-dir vector :inline) + (dist-to-locus float :overlay-at (-> shadow-dir w)) + (bot-plane plane :inline) ;; volume clip plane + (top-plane plane :inline) (fade-dist float) ;; if past this, stop drawing shadow (fade-start float) ;; distance where fadeout starts (dummy-2 int32) (dummy-3 int32) - (fade-vec vector :inline :overlay-at fade-dist) ;; added - ) - ) + (fade-vec vector :inline :overlay-at fade-dist) ;; added + )) (deftype shadow-control (basic) - ((settings shadow-settings :inline) - ) + ((settings shadow-settings :inline)) (:methods - (new (symbol type float float float float float) _type_) - (clear-offset-bit (shadow-control) int) - (set-offset-bit (shadow-control) int) - (set-top-plane-offset (shadow-control float) int) - (set-bottom-plane-offset (shadow-control float) int) - (unused-13 (_type_) none) - (update-direction-from-time-of-day (_type_) none) - (collide-to-find-planes (_type_ vector float float float) none) - ) - ) - -(defmethod clear-offset-bit shadow-control ((obj shadow-control)) + (new (symbol type float float float float float) _type_) + (clear-offset-bit (shadow-control) int) + (set-offset-bit (shadow-control) int) + (set-top-plane-offset (shadow-control float) int) + (set-bottom-plane-offset (shadow-control float) int) + (unused-13 (_type_) none) + (update-direction-from-time-of-day (_type_) none) + (collide-to-find-planes (_type_ vector float float float) none))) + +(defmethod clear-offset-bit ((obj shadow-control)) "Clear a bit in w for the center of the shadow." - (set! (-> obj settings center w) - (the-as float (logand (lognot #x20) - (the-as int (-> obj settings center w)))) - ) - 0 - ) + (set! (-> obj settings center w) (the-as float (logand (lognot #x20) (the-as int (-> obj settings center w))))) + 0) -(defmethod set-offset-bit shadow-control ((obj shadow-control)) +(defmethod set-offset-bit ((obj shadow-control)) "Set a bit in w for the center position of the shadow" - (set! (-> obj settings center w) - (the-as float (logior (the-as int (-> obj settings center w)) - #x20)) - ) - 0 - ) + (set! (-> obj settings center w) (the-as float (logior (the-as int (-> obj settings center w)) #x20))) + 0) - -(defmethod set-bottom-plane-offset shadow-control ((obj shadow-control) (arg0 float)) +(defmethod set-bottom-plane-offset ((obj shadow-control) (arg0 float)) (set! (-> obj settings bot-plane d) (- arg0)) - 0 - ) + 0) -(defmethod set-top-plane-offset shadow-control ((obj shadow-control) (arg0 float)) +(defmethod set-top-plane-offset ((obj shadow-control) (arg0 float)) (set! (-> obj settings top-plane d) (- arg0)) - 0 - ) + 0) (deftype shadow-data (structure) - ((texoffset vector :inline) - (texscale vector :inline) - (clrs vector 2 :inline) + ((texoffset vector :inline) + (texscale vector :inline) + (clrs vector 2 :inline) (dma-unpack-template dma-packet :inline) (dma-cnt dma-tag) (vif-nop vif-tag) @@ -97,39 +77,29 @@ (pdc basic) (dist float) (oddeven uint8) - (waits uint32) - ) - ) + (waits uint32))) (deftype shadow-work (structure) - ((shadow-data shadow-data :inline) - (inbuf uint128 600) - ) - ) + ((shadow-data shadow-data :inline) + (inbuf uint128 600))) (deftype shadow-run (structure) ((first dma-packet) - (next (pointer dma-packet)) - ) - :allow-misaligned - ) + (next (pointer dma-packet))) + :allow-misaligned) (deftype shadow-queue (structure) ((num-runs uint32) (cur-run uint32) - (run shadow-run 15 :inline) - ) - ) + (run shadow-run 15 :inline))) (defun shadow-queue-append ((arg0 shadow-queue)) "Increment the run counter" - (set! (-> arg0 cur-run) (+ (-> arg0 cur-run) 1)) - ) + (set! (-> arg0 cur-run) (+ (-> arg0 cur-run) 1))) (defun shadow-queue-reset ((arg0 shadow-queue)) "Reset the run counter" - (set! (-> arg0 cur-run) 0) - ) + (set! (-> arg0 cur-run) 0)) (define *shadow-queue* (new 'global 'shadow-queue)) @@ -137,15 +107,11 @@ ((x float) (y float) (z float) - (weight float) - ) - ) + (weight float))) (deftype shadow-matrix-ref (structure) ((joint-0 uint8) - (joint-1 uint8) - ) - ) + (joint-1 uint8))) ;; og:preserve-this ;; BUG: @@ -170,17 +136,13 @@ ((ind-0 uint8) (ind-1 uint8) (ind-2 uint8) - (faces uint8) - ) - ) + (faces uint8))) (deftype shadow-edge (structure) ((ind-0 uint8) (ind-1 uint8) (tri-0 uint8) - (tri-1 uint8) - ) - ) + (tri-1 uint8))) (deftype shadow-header (structure) ((qwc-data uint32) @@ -196,28 +158,30 @@ (ofs-single-tris uint32) (ofs-single-edges uint32) (ofs-double-tris uint32) - (ofs-double-edges uint32) - ) - ) + (ofs-double-edges uint32))) (deftype shadow-geo (art-element) ((total-size uint32) - (header shadow-header :inline :overlay-at total-size) - (rest uint64 :dynamic) - ) - ) - -(defmethod new shadow-control ((allocation symbol) (type-to-make type) (bottom-offset float) (top-offset float) (dir float) (center float) (fade float)) + (header shadow-header :inline :overlay-at total-size) + (rest uint64 :dynamic))) + +(defmethod new shadow-control ((allocation symbol) + (type-to-make type) + (bottom-offset float) + (top-offset float) + (dir float) + (center float) + (fade float)) (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> obj settings center w) center) (set-vector! (-> obj settings shadow-dir) 0.0 -1.0 0.0 dir) (set-vector! (-> obj settings bot-plane) 0.0 1.0 0.0 (- bottom-offset)) (set-vector! (-> obj settings top-plane) 0.0 1.0 0.0 (- top-offset)) (set! (-> obj settings fade-dist) fade) - obj - ) - ) + obj)) (define *shadow* #f) + (define *shadow-object* #f) + (define *shadow-debug* #f) diff --git a/goal_src/jak1/engine/gfx/shadow/shadow-cpu.gc b/goal_src/jak1/engine/gfx/shadow/shadow-cpu.gc index febceb5b43..a0eeda0a7b 100644 --- a/goal_src/jak1/engine/gfx/shadow/shadow-cpu.gc +++ b/goal_src/jak1/engine/gfx/shadow/shadow-cpu.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/gfx/foreground/bones-h.gc") (require "engine/gfx/mood/time-of-day-h.gc") @@ -10,81 +9,77 @@ (require "engine/gfx/generic/generic-h.gc") (require "engine/collide/pat-h.gc") -;; name: shadow-cpu.gc -;; name in dgo: shadow-cpu -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(defmethod asize-of shadow-geo ((obj shadow-geo)) - (the-as int (-> obj total-size)) - ) +(defmethod asize-of ((obj shadow-geo)) + (the-as int (-> obj total-size))) -(defmethod mem-usage shadow-geo ((obj shadow-geo) (arg0 memory-usage-block) (arg1 int)) +(defmethod mem-usage ((obj shadow-geo) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 108 (-> arg0 length))) (set! (-> arg0 data 107 name) "shadow-geo") (+! (-> arg0 data 107 count) 1) (let ((v1-5 (-> obj total-size))) (+! (-> arg0 data 107 used) v1-5) - (+! (-> arg0 data 107 total) (logand -16 (+ v1-5 15))) - ) - obj - ) + (+! (-> arg0 data 107 total) (logand -16 (+ v1-5 15)))) + obj) -(define *shadow-data* (new 'static 'shadow-data - :texoffset (new 'static 'vector :x 256.5 :y 112.5) - :texscale (new 'static 'vector :x 0.001953125 :y 0.00390625) - :clrs (new 'static 'inline-array vector 2 - (new 'static 'vector :x (the-as float #x80) :w (the-as float #x82)) - (new 'static 'vector :y (the-as float #x80) :w (the-as float #x7f)) - ) - :dma-unpack-template (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1) - :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) - ) - :dma-cnt (new 'static 'dma-tag :id (dma-tag-id cnt)) - :vif-unpack-v4-8 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-8)) - ) - ) +(define *shadow-data* + (new 'static + 'shadow-data + :texoffset + (new 'static 'vector :x 256.5 :y 112.5) + :texscale + (new 'static 'vector :x 0.001953125 :y 0.00390625) + :clrs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x (the-as float #x80) :w (the-as float #x82)) + (new 'static 'vector :y (the-as float #x80) :w (the-as float #x7f))) + :dma-unpack-template + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1) + :vif1 + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32))) + :dma-cnt + (new 'static 'dma-tag :id (dma-tag-id cnt)) + :vif-unpack-v4-8 + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-8)))) (defun shadow-dma-init ((arg0 dma-buffer)) (let* ((v1-0 *display*) - (a1-2 (-> v1-0 frames (-> v1-0 on-screen) draw frame1 fbp)) - ) + (a1-2 (-> v1-0 frames (-> v1-0 on-screen) draw frame1 fbp))) (* a1-2 32) (let ((t3-0 512) (t2-0 (-> *video-parms* screen-sy)) (a2-0 1792) - (a3-0 (-> *video-parms* screen-miny)) - ) + (a3-0 (-> *video-parms* screen-miny))) 2304 (let ((t0-0 (-> *video-parms* screen-maxy)) (t1-0 (/ t3-0 32)) (t5-0 (* a3-0 16)) - (v1-11 (-> arg0 base)) - ) + (v1-11 (-> arg0 base))) (let* ((t4-0 arg0) - (t6-0 (the-as object (-> t4-0 base))) - ) + (t6-0 (the-as object (-> t4-0 base)))) (set! (-> (the-as dma-packet t6-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t6-0) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet t6-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t4-0 base) (&+ (the-as pointer t6-0) 16)) - ) + (set! (-> t4-0 base) (&+ (the-as pointer t6-0) 16))) (let* ((t4-1 arg0) - (t6-2 (the-as object (-> t4-1 base))) - ) + (t6-2 (the-as object (-> t4-1 base)))) (set! (-> (the-as gs-gif-tag t6-2) tag) (new 'static 'gif-tag64 :nloop #xa :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag t6-2) regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) - (set! (-> t4-1 base) (&+ (the-as pointer t6-2) 16)) - ) + (set! (-> t4-1 base) (&+ (the-as pointer t6-2) 16))) (let ((t4-2 (-> arg0 base))) (set! (-> (the-as (pointer gs-reg) t4-2) 8) (gs-reg texflush)) (set! (-> (the-as (pointer gs-reg) t4-2) 24) (gs-reg test-1)) (set! (-> (the-as (pointer gs-test) t4-2) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg) t4-2) 40) (gs-reg alpha-1)) (set! (-> (the-as (pointer gs-alpha) t4-2) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) (set! (-> (the-as (pointer gs-reg) t4-2) 56) (gs-reg frame-1)) @@ -94,328 +89,232 @@ (set! (-> (the-as (pointer gs-reg) t4-2) 88) (gs-reg xyoffset-1)) (set! (-> (the-as (pointer gs-xy-offset) t4-2) 10) (new 'static 'gs-xy-offset :ofx (* a2-0 16) :ofy t5-0)) (set! (-> (the-as (pointer gs-reg) t4-2) 104) (gs-reg tex0-1)) - (set! (-> (the-as (pointer gs-tex0) t4-2) 12) - (new 'static 'gs-tex0 :tbw #x8 :tw #x9 :th #x8 :tcc #x1 :tbp0 (* a1-2 32)) - ) + (set! (-> (the-as (pointer gs-tex0) t4-2) 12) (new 'static 'gs-tex0 :tbw #x8 :tw #x9 :th #x8 :tcc #x1 :tbp0 (* a1-2 32))) (set! (-> (the-as (pointer gs-reg) t4-2) 120) (gs-reg tex1-1)) (set! (-> (the-as (pointer gs-tex1) t4-2) 14) (new 'static 'gs-tex1)) (set! (-> (the-as (pointer gs-reg) t4-2) 136) (gs-reg miptbp1-1)) (set! (-> (the-as (pointer gs-miptbp) t4-2) 16) (new 'static 'gs-miptbp)) (set! (-> (the-as (pointer gs-reg) t4-2) 152) (gs-reg clamp-1)) (set! (-> (the-as (pointer gs-clamp) t4-2) 18) - (new 'static 'gs-clamp - :wms (gs-tex-wrap-mode region-clamp) - :wmt (gs-tex-wrap-mode region-clamp) - :maxv (+ t2-0 -1) - :maxu (+ t3-0 -1) - ) - ) - ) + (new 'static + 'gs-clamp + :wms (gs-tex-wrap-mode region-clamp) + :wmt (gs-tex-wrap-mode region-clamp) + :maxv + (+ t2-0 -1) + :maxu + (+ t3-0 -1)))) (&+! (-> arg0 base) 160) (let* ((t2-7 arg0) - (t3-5 (the-as object (-> t2-7 base))) - ) - (set! (-> (the-as gs-gif-tag t3-5) tag) - (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :flg (gif-flag reg-list) :nreg #x2) - ) + (t3-5 (the-as object (-> t2-7 base)))) + (set! (-> (the-as gs-gif-tag t3-5) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :flg (gif-flag reg-list) :nreg #x2)) (set! (-> (the-as gs-gif-tag t3-5) regs) (new 'static 'gif-tag-regs :regs1 (gif-reg-id rgbaq))) - (set! (-> t2-7 base) (&+ (the-as pointer t3-5) 16)) - ) + (set! (-> t2-7 base) (&+ (the-as pointer t3-5) 16))) (let* ((t2-8 arg0) - (t3-7 (-> t2-8 base)) - ) + (t3-7 (-> t2-8 base))) (set! (-> (the-as (pointer gs-prim) t3-7) 0) (new 'static 'gs-prim :prim (gs-prim-type sprite))) (set! (-> (the-as (pointer gs-rgbaq) t3-7) 1) (new 'static 'gs-rgbaq :a #x60)) - (set! (-> t2-8 base) (&+ t3-7 16)) - ) + (set! (-> t2-8 base) (&+ t3-7 16))) (let* ((t2-9 arg0) - (t3-9 (the-as object (-> t2-9 base))) - ) - (set! (-> (the-as gs-gif-tag t3-9) tag) - (new 'static 'gif-tag64 :eop #x1 :flg (gif-flag reg-list) :nreg #x2 :nloop t1-0) - ) - (set! (-> (the-as gs-gif-tag t3-9) regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id xyz2) :regs1 (gif-reg-id xyz2)) - ) - (set! (-> t2-9 base) (&+ (the-as pointer t3-9) 16)) - ) + (t3-9 (the-as object (-> t2-9 base)))) + (set! (-> (the-as gs-gif-tag t3-9) tag) (new 'static 'gif-tag64 :eop #x1 :flg (gif-flag reg-list) :nreg #x2 :nloop t1-0)) + (set! (-> (the-as gs-gif-tag t3-9) regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id xyz2) :regs1 (gif-reg-id xyz2))) + (set! (-> t2-9 base) (&+ (the-as pointer t3-9) 16))) (let ((t2-10 0)) (dotimes (t3-11 t1-0) (let* ((t4-10 arg0) - (t5-12 (-> t4-10 base)) - ) - (set! (-> (the-as (pointer gs-xyzf) t5-12) 0) - (new 'static 'gs-xyzf :z #x1ffff :y (* a3-0 16) :x (* (+ a2-0 t2-10) 16)) - ) + (t5-12 (-> t4-10 base))) + (set! (-> (the-as (pointer gs-xyzf) t5-12) 0) (new 'static 'gs-xyzf :z #x1ffff :y (* a3-0 16) :x (* (+ a2-0 t2-10) 16))) (set! (-> (the-as (pointer gs-xyzf) t5-12) 1) - (new 'static 'gs-xyzf :z #x1ffff :y (* t0-0 16) :x (* (+ t2-10 32 a2-0) 16)) - ) - (set! (-> t4-10 base) (&+ t5-12 16)) - ) - (+! t2-10 32) - ) - ) + (new 'static 'gs-xyzf :z #x1ffff :y (* t0-0 16) :x (* (+ t2-10 32 a2-0) 16))) + (set! (-> t4-10 base) (&+ t5-12 16))) + (+! t2-10 32))) (let* ((a2-3 arg0) - (a3-1 (the-as object (-> a2-3 base))) - ) + (a3-1 (the-as object (-> a2-3 base)))) (set! (-> (the-as gs-gif-tag a3-1) tag) (new 'static 'gif-tag64 :nloop #x4 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a3-1) regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) - (set! (-> a2-3 base) (&+ (the-as pointer a3-1) 16)) - ) + (set! (-> a2-3 base) (&+ (the-as pointer a3-1) 16))) (cond (*shadow-debug* - (let* ((a2-5 arg0) - (a3-3 (-> a2-5 base)) - ) - (set! (-> (the-as (pointer gs-test) a3-3) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest greater-equal)) - ) - (set! (-> (the-as (pointer gs-reg64) a3-3) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-zbuf) a3-3) 2) (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a3-3) 3) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-frame) a3-3) 4) (new 'static 'gs-frame :fbw #x8 :fbp a1-2)) - (set! (-> (the-as (pointer gs-reg64) a3-3) 5) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer uint64) a3-3) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a3-3) 7) (gs-reg64 texflush)) - (set! (-> a2-5 base) (&+ a3-3 64)) - ) - ) + (let* ((a2-5 arg0) + (a3-3 (-> a2-5 base))) + (set! (-> (the-as (pointer gs-test) a3-3) 0) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest greater-equal))) + (set! (-> (the-as (pointer gs-reg64) a3-3) 1) (gs-reg64 test-1)) + (set! (-> (the-as (pointer gs-zbuf) a3-3) 2) (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) + (set! (-> (the-as (pointer gs-reg64) a3-3) 3) (gs-reg64 zbuf-1)) + (set! (-> (the-as (pointer gs-frame) a3-3) 4) (new 'static 'gs-frame :fbw #x8 :fbp a1-2)) + (set! (-> (the-as (pointer gs-reg64) a3-3) 5) (gs-reg64 frame-1)) + (set! (-> (the-as (pointer uint64) a3-3) 6) (the-as uint 0)) + (set! (-> (the-as (pointer gs-reg64) a3-3) 7) (gs-reg64 texflush)) + (set! (-> a2-5 base) (&+ a3-3 64)))) (else - (let* ((a2-6 arg0) - (a3-4 (-> a2-6 base)) - ) - (set! (-> (the-as (pointer gs-test) a3-4) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest greater-equal)) - ) - (set! (-> (the-as (pointer gs-reg64) a3-4) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-zbuf) a3-4) 2) (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) a3-4) 3) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-frame) a3-4) 4) (new 'static 'gs-frame :fbw #x8 :fbmsk #xffffff :fbp a1-2)) - (set! (-> (the-as (pointer gs-reg64) a3-4) 5) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer uint64) a3-4) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a3-4) 7) (gs-reg64 texflush)) - (set! (-> a2-6 base) (&+ a3-4 64)) - ) - ) - ) + (let* ((a2-6 arg0) + (a3-4 (-> a2-6 base))) + (set! (-> (the-as (pointer gs-test) a3-4) 0) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest greater-equal))) + (set! (-> (the-as (pointer gs-reg64) a3-4) 1) (gs-reg64 test-1)) + (set! (-> (the-as (pointer gs-zbuf) a3-4) 2) (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1)) + (set! (-> (the-as (pointer gs-reg64) a3-4) 3) (gs-reg64 zbuf-1)) + (set! (-> (the-as (pointer gs-frame) a3-4) 4) (new 'static 'gs-frame :fbw #x8 :fbmsk #xffffff :fbp a1-2)) + (set! (-> (the-as (pointer gs-reg64) a3-4) 5) (gs-reg64 frame-1)) + (set! (-> (the-as (pointer uint64) a3-4) 6) (the-as uint 0)) + (set! (-> (the-as (pointer gs-reg64) a3-4) 7) (gs-reg64 texflush)) + (set! (-> a2-6 base) (&+ a3-4 64))))) (let ((a2-10 (/ (the-as int (+ (- -16 (the-as int v1-11)) (the-as int (-> arg0 base)))) 16))) (cond ((nonzero? a2-10) (logior! (-> (the-as (pointer uint64) v1-11) 0) (shr (shl a2-10 48) 48)) - (logior! (-> (the-as (pointer uint64) v1-11) 1) (shl (shr (shl a2-10 48) 48) 32)) - ) - (else - (set! (-> arg0 base) v1-11) - ) - ) - ) - ) - ) - ) - (none) - ) + (logior! (-> (the-as (pointer uint64) v1-11) 1) (shl (shr (shl a2-10 48) 48) 32))) + (else (set! (-> arg0 base) v1-11))))))) + (none)) (defun shadow-dma-end ((arg0 dma-buffer)) (local-vars (t9-2 int) (ra-0 int) (ra-1 int) (ra-2 int)) (let* ((v1-0 *display*) - (v1-5 (-> v1-0 frames (-> v1-0 on-screen) draw frame1 fbp)) - ) + (v1-5 (-> v1-0 frames (-> v1-0 on-screen) draw frame1 fbp))) (* v1-5 32) (let ((a2-0 512) (a3-0 (-> *video-parms* screen-sy)) (a1-5 1792) - (t0-1 (-> *video-parms* screen-miny)) - ) + (t0-1 (-> *video-parms* screen-miny))) 2304 (-> *video-parms* screen-maxy) (let ((t1-3 (/ a2-0 32)) - (a2-3 (+ (* *oddeven* 8) (* t0-1 16))) - ) + (a2-3 (+ (* *oddeven* 8) (* t0-1 16)))) (let* ((t2-1 arg0) - (t3-0 (the-as object (-> t2-1 base))) - ) + (t3-0 (the-as object (-> t2-1 base)))) (set! (-> (the-as dma-packet t3-0) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t3-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) (set! (-> (the-as dma-packet t3-0) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t2-1 base) (&+ (the-as pointer t3-0) 16)) - ) + (set! (-> t2-1 base) (&+ (the-as pointer t3-0) 16))) (let* ((t2-2 arg0) - (t3-2 (the-as object (-> t2-2 base))) - ) + (t3-2 (the-as object (-> t2-2 base)))) (set! (-> (the-as gs-gif-tag t3-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) (set! (-> (the-as gs-gif-tag t3-2) regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> t2-2 base) (&+ (the-as pointer t3-2) 16)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> t2-2 base) (&+ (the-as pointer t3-2) 16))) (let* ((t2-3 arg0) - (t3-4 (-> t2-3 base)) - ) + (t3-4 (-> t2-3 base))) (set! (-> (the-as (pointer uint64) t3-4) 0) (the-as uint 0)) (set! (-> (the-as (pointer gs-reg64) t3-4) 1) (gs-reg64 texflush)) (set! (-> (the-as (pointer gs-test) t3-4) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest not-equal) :aref #x60 :zte #x1 :ztst (gs-ztest always)) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest not-equal) :aref #x60 :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) t3-4) 3) (gs-reg64 test-1)) (set! (-> (the-as (pointer gs-frame) t3-4) 4) (new 'static 'gs-frame :fbw #x8 :fbp v1-5)) (set! (-> (the-as (pointer gs-reg64) t3-4) 5) (gs-reg64 frame-1)) (set! (-> (the-as (pointer uint64) t3-4) 6) (the-as uint 0)) (set! (-> (the-as (pointer gs-reg64) t3-4) 7) (gs-reg64 texflush)) - (set! (-> t2-3 base) (&+ t3-4 64)) - ) + (set! (-> t2-3 base) (&+ t3-4 64))) (let ((t2-4 (-> arg0 base))) (let* ((t3-6 arg0) - (t4-13 (the-as object (-> t3-6 base))) - ) + (t4-13 (the-as object (-> t3-6 base)))) (set! (-> (the-as dma-packet t4-13) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t4-13) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) (set! (-> (the-as dma-packet t4-13) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t3-6 base) (&+ (the-as pointer t4-13) 16)) - ) + (set! (-> t3-6 base) (&+ (the-as pointer t4-13) 16))) (let* ((t4-15 (the-as uint #x3f80000080404040)) (t3-8 (-> *time-of-day-context* current-shadow-color)) - (t5-14 - (the-as - gs-rgbaq - (logior (logand (logior (logand (logior (logand t4-15 -256) (shr (shl (the int (* 128.0 (-> t3-8 x))) 56) 56)) -65281) - (shr (shl (the int (* 128.0 (-> t3-8 y))) 56) 48) - ) - -16711681 - ) - (shr (shl (the int (* 128.0 (-> t3-8 z))) 56) 40) - ) - ) - ) + (t5-14 (the-as gs-rgbaq + (logior (logand (logior (logand (logior (logand t4-15 -256) (shr (shl (the int (* 128.0 (-> t3-8 x))) 56) 56)) -65281) + (shr (shl (the int (* 128.0 (-> t3-8 y))) 56) 48)) + -16711681) + (shr (shl (the int (* 128.0 (-> t3-8 z))) 56) 40)))) (t3-12 arg0) - (t4-21 (the-as object (-> t3-12 base))) - ) - (set! (-> (the-as gs-gif-tag t4-21) tag) - (new 'static 'gif-tag64 :nloop #x1 :flg (gif-flag reg-list) :nreg #x2) - ) + (t4-21 (the-as object (-> t3-12 base)))) + (set! (-> (the-as gs-gif-tag t4-21) tag) (new 'static 'gif-tag64 :nloop #x1 :flg (gif-flag reg-list) :nreg #x2)) (set! (-> (the-as gs-gif-tag t4-21) regs) (new 'static 'gif-tag-regs :regs1 (gif-reg-id rgbaq))) - (set! (-> (the-as (pointer gs-prim) t4-21) 2) - (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1) - ) + (set! (-> (the-as (pointer gs-prim) t4-21) 2) (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1)) (set! (-> (the-as (pointer gs-rgbaq) t4-21) 3) t5-14) (set! (-> (the-as (inline-array gs-gif-tag) t4-21) 2 tag) - (new 'static 'gif-tag64 :eop #x1 :flg (gif-flag reg-list) :nreg #x4 :nloop t1-3) - ) + (new 'static 'gif-tag64 :eop #x1 :flg (gif-flag reg-list) :nreg #x4 :nloop t1-3)) (set! (-> (the-as (inline-array gs-gif-tag) t4-21) 2 regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id st) - :regs1 (gif-reg-id xyz2) - :regs2 (gif-reg-id st) - :regs3 (gif-reg-id xyz2) - ) - ) - (set! (-> t3-12 base) (&+ (the-as pointer t4-21) 48)) - ) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id st) + :regs1 (gif-reg-id xyz2) + :regs2 (gif-reg-id st) + :regs3 (gif-reg-id xyz2))) + (set! (-> t3-12 base) (&+ (the-as pointer t4-21) 48))) (let ((t3-13 0) - (t4-23 0) - ) + (t4-23 0)) (dotimes (t5-18 t1-3) (let ((t8-0 t3-13)) (+! t3-13 32) (let* ((t6-5 arg0) - (t7-0 (-> t6-5 base)) - ) + (t7-0 (-> t6-5 base))) (let ((t9-1 (shl (the-as int (* 0.00390625 (+ 0.5 (the float (the-as int t4-23))))) 32))) - (let ((f0-12 (* 0.001953125 (+ 0.5 (the float t8-0))))) - (.mov ra-0 f0-12) - ) + (let ((f0-12 (* 0.001953125 (+ 0.5 (the float t8-0))))) (.mov ra-0 f0-12)) ;;(.dsll32 ra-1 ra-0 0) (set! ra-1 (shl ra-0 32)) ;;(.dsrl32 ra-2 ra-1 0) (set! ra-2 (shr ra-1 32)) ;(.or t9-2 t9-1 ra-2) - (set! t9-2 (logior t9-1 ra-2)) - ) + (set! t9-2 (logior t9-1 ra-2))) (set! (-> (the-as (pointer int64) t7-0)) t9-2) (set! (-> (the-as (pointer gs-xyzf) t7-0) 1) - (new 'static 'gs-xyzf :z #x1ffff :y (* (+ t0-1 t4-23) 16) :x (* (+ a1-5 t8-0) 16)) - ) + (new 'static 'gs-xyzf :z #x1ffff :y (* (+ t0-1 t4-23) 16) :x (* (+ a1-5 t8-0) 16))) (set! (-> (the-as (pointer gs-st) t7-0) 2) - (new 'static 'gs-st - :s (* 0.001953125 (+ 0.5 (the float t3-13))) - :t (* 0.00390625 (+ 0.5 (the float a3-0))) - ) - ) + (new 'static 'gs-st :s (* 0.001953125 (+ 0.5 (the float t3-13))) :t (* 0.00390625 (+ 0.5 (the float a3-0))))) (set! (-> (the-as (pointer gs-xyzf) t7-0) 3) - (new 'static 'gs-xyzf :z #x1ffff :y (* (+ t0-1 a3-0) 16) :x (* (+ a1-5 t3-13) 16)) - ) - (set! (-> t6-5 base) (&+ t7-0 32)) - ) - ) - ) - ) + (new 'static 'gs-xyzf :z #x1ffff :y (* (+ t0-1 a3-0) 16) :x (* (+ a1-5 t3-13) 16))) + (set! (-> t6-5 base) (&+ t7-0 32)))))) (let ((t0-5 (/ (the-as int (+ (- -16 (the-as int t2-4)) (the-as int (-> arg0 base)))) 16))) (cond ((nonzero? t0-5) (logior! (-> (the-as (pointer uint64) t2-4)) (shr (shl t0-5 48) 48)) - (logior! (-> (the-as (pointer uint64) t2-4) 1) (shl (shr (shl t0-5 48) 48) 32)) - ) - (else - (set! (-> arg0 base) t2-4) - ) - ) - ) - ) + (logior! (-> (the-as (pointer uint64) t2-4) 1) (shl (shr (shl t0-5 48) 48) 32))) + (else (set! (-> arg0 base) t2-4))))) (let* ((a3-3 arg0) - (t0-11 (the-as object (-> a3-3 base))) - ) + (t0-11 (the-as object (-> a3-3 base)))) (set! (-> (the-as dma-packet t0-11) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t0-11) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet t0-11) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a3-3 base) (&+ (the-as pointer t0-11) 16)) - ) + (set! (-> a3-3 base) (&+ (the-as pointer t0-11) 16))) (let* ((a3-4 arg0) - (t0-13 (the-as object (-> a3-4 base))) - ) + (t0-13 (the-as object (-> a3-4 base)))) (set! (-> (the-as gs-gif-tag t0-13) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag t0-13) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> a3-4 base) (&+ (the-as pointer t0-13) 16)) - ) + (set! (-> (the-as gs-gif-tag t0-13) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> a3-4 base) (&+ (the-as pointer t0-13) 16))) (let* ((a3-5 arg0) - (t0-15 (-> a3-5 base)) - ) + (t0-15 (-> a3-5 base))) (set! (-> (the-as (pointer gs-test) t0-15) 0) - (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal)) - ) + (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal))) (set! (-> (the-as (pointer gs-reg64) t0-15) 1) (gs-reg64 test-1)) (set! (-> (the-as (pointer gs-xy-offset) t0-15) 2) (new 'static 'gs-xy-offset :ofx (* a1-5 16) :ofy a2-3)) (set! (-> (the-as (pointer gs-reg64) t0-15) 3) (gs-reg64 xyoffset-1)) @@ -427,205 +326,153 @@ (set! (-> (the-as (pointer gs-reg64) t0-15) 9) (gs-reg64 zbuf-1)) (set! (-> (the-as (pointer uint64) t0-15) 10) (the-as uint 0)) (set! (-> (the-as (pointer gs-reg64) t0-15) 11) (gs-reg64 texflush)) - (set! (-> a3-5 base) (&+ t0-15 96)) - ) - ) - ) - ) - (none) - ) + (set! (-> a3-5 base) (&+ t0-15 96)))))) + (none)) (deftype shadow-stats (structure) - ((num-single-tris uint32 :offset-assert 0) - (num-double-tris uint32 :offset-assert 4) - (num-single-edges uint32 :offset-assert 8) - (num-double-edges uint32 :offset-assert 12) - ) + ((num-single-tris uint32 :offset-assert 0) + (num-double-tris uint32 :offset-assert 4) + (num-single-edges uint32 :offset-assert 8) + (num-double-edges uint32 :offset-assert 12)) :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 - ) - + :size-assert #x10 + :flag-assert #x900000010) (deftype shadow-dcache (structure) - ((vtx-table uint32 :offset-assert 0) - (single-edge-table uint32 :offset-assert 4) - (double-edge-table uint32 :offset-assert 8) - (double-tri-table uint32 :offset-assert 12) - (dcache-top uint32 :offset-assert 16) - (num-facing-single-tris uint32 :offset-assert 20) - (num-single-edges uint32 :offset-assert 24) - (num-double-edges uint32 :offset-assert 28) - (single-tri-list uint32 :offset-assert 32) - (single-edge-list uint32 :offset-assert 36) - (double-edge-list uint32 :offset-assert 40) - (ptr-dual-verts uint32 :offset-assert 44) - (stats shadow-stats :inline :offset-assert 48) - (center vector :inline :offset-assert 64) - (plane vector :inline :offset-assert 80) - (top-plane vector :inline :offset-assert 96) - (near-plane vector :inline :offset-assert 112) - (light-dir vector :inline :offset-assert 128) - (vtx-min vector :inline :offset-assert 144) - (data uint8 :dynamic :offset-assert 160) - ) + ((vtx-table uint32 :offset-assert 0) + (single-edge-table uint32 :offset-assert 4) + (double-edge-table uint32 :offset-assert 8) + (double-tri-table uint32 :offset-assert 12) + (dcache-top uint32 :offset-assert 16) + (num-facing-single-tris uint32 :offset-assert 20) + (num-single-edges uint32 :offset-assert 24) + (num-double-edges uint32 :offset-assert 28) + (single-tri-list uint32 :offset-assert 32) + (single-edge-list uint32 :offset-assert 36) + (double-edge-list uint32 :offset-assert 40) + (ptr-dual-verts uint32 :offset-assert 44) + (stats shadow-stats :inline :offset-assert 48) + (center vector :inline :offset-assert 64) + (plane vector :inline :offset-assert 80) + (top-plane vector :inline :offset-assert 96) + (near-plane vector :inline :offset-assert 112) + (light-dir vector :inline :offset-assert 128) + (vtx-min vector :inline :offset-assert 144) + (data uint8 :dynamic :offset-assert 160)) :method-count-assert 9 - :size-assert #xa0 - :flag-assert #x9000000a0 - ) + :size-assert #xa0 + :flag-assert #x9000000a0) -(define shadow-vu0-block (new 'static 'vu-function #|:length 88 :qlength 44|#)) +(define shadow-vu0-block + (new 'static + 'vu-function + #| :length 88 :qlength 44 |# + )) (def-mips2c shadow-xform-verts function) + (def-mips2c shadow-execute (function shadow-dma-packet pointer pointer)) (defun shadow-vu0-upload () (#unless PC_PORT - (let ((gp-0 *vu0-dma-list*)) - (let ((v1-0 gp-0)) - (set! (-> v1-0 base) (-> v1-0 data)) - (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length))) - ) - (dma-buffer-add-vu-function gp-0 shadow-vu0-block 0) - (let* ((v1-1 gp-0) - (a0-5 (-> v1-1 base)) - ) - (set! (-> (the-as (pointer int64) a0-5)) #x70000000) - (s.d! (+ a0-5 8) 0) - (set! (-> v1-1 base) (&+ a0-5 16)) - ) - (.sync.l) - (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0) - ) - ) + (let ((gp-0 *vu0-dma-list*)) + (let ((v1-0 gp-0)) + (set! (-> v1-0 base) (-> v1-0 data)) + (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length)))) + (dma-buffer-add-vu-function gp-0 shadow-vu0-block 0) + (let* ((v1-1 gp-0) + (a0-5 (-> v1-1 base))) + (set! (-> (the-as (pointer int64) a0-5)) #x70000000) + (s.d! (+ a0-5 8) 0) + (set! (-> v1-1 base) (&+ a0-5 16))) + (.sync.l) + (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0))) 0 - (none) - ) + (none)) (defun shadow-execute-all ((arg0 dma-buffer) (arg1 shadow-queue)) (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))) (when (logtest? (vu1-renderer-mask shadow) *vu1-enable-user*) (when (> (-> arg1 cur-run) 0) (let ((v1-12 #f)) (dotimes (a0-6 (the-as int (-> arg1 cur-run))) - (if (nonzero? (-> arg1 run a0-6 first)) - (set! v1-12 #t) - ) - ) + (if (nonzero? (-> arg1 run a0-6 first)) (set! v1-12 #t))) (when v1-12 (shadow-vu0-upload) (let* ((s4-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s5-0 (-> s4-0 base)) - ) + (s5-0 (-> s4-0 base))) (shadow-vu1-init-buffer s4-0) (flush-cache 0) (let ((v1-17 (the-as shadow-dcache *gsf-buffer*))) (set! (-> v1-17 stats num-single-tris) (the-as uint 0)) (set! (-> v1-17 stats num-double-tris) (the-as uint 0)) (set! (-> v1-17 stats num-single-edges) (the-as uint 0)) - (set! (-> v1-17 stats num-double-edges) (the-as uint 0)) - ) + (set! (-> v1-17 stats num-double-edges) (the-as uint 0))) 0 (shadow-dma-init s4-0) (dotimes (s3-0 (the-as int (-> arg1 cur-run))) (let ((v1-21 (-> arg1 run s3-0))) (if (nonzero? (-> v1-21 first)) - (set! (-> s4-0 base) (shadow-execute (the-as shadow-dma-packet (-> v1-21 first)) (-> s4-0 base))) - ) - ) - ) + (set! (-> s4-0 base) (shadow-execute (the-as shadow-dma-packet (-> v1-21 first)) (-> s4-0 base)))))) (shadow-dma-end s4-0) (let ((a3-0 (-> s4-0 base))) (let ((v1-25 (the-as object (-> s4-0 base)))) (set! (-> (the-as dma-packet v1-25) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-25) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-25) vif1) (new 'static 'vif-tag)) - (set! (-> s4-0 base) (&+ (the-as pointer v1-25) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id shadow) - s5-0 - (the-as (pointer dma-tag) a3-0) - ) - ) - ) - ) - ) + (set! (-> s4-0 base) (&+ (the-as pointer v1-25) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id shadow) + s5-0 + (the-as (pointer dma-tag) a3-0)))))) (when #f (let ((gp-1 (the-as structure *gsf-buffer*))) (format *stdcon* "#single tris : ~4d~%" (-> (the-as shadow-dcache gp-1) stats num-single-tris)) (format *stdcon* "#double tris : ~4d~%" (-> (the-as shadow-dcache gp-1) stats num-double-tris)) (format *stdcon* "#single edges: ~4d~%" (-> (the-as shadow-dcache gp-1) stats num-single-edges)) - (format *stdcon* "#double edges: ~4d~%" (-> (the-as shadow-dcache gp-1) stats num-double-edges)) - ) - ) - ) - ) + (format *stdcon* "#double edges: ~4d~%" (-> (the-as shadow-dcache gp-1) stats num-double-edges)))))) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :g #x42 :b #xe0 :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :g #x42 :b #xe0 :a #x80))) 0 - (none) - ) + (none)) -(defmethod update-direction-from-time-of-day shadow-control ((obj shadow-control)) +(defmethod update-direction-from-time-of-day ((obj shadow-control)) (let ((v1-1 (-> *time-of-day-context* current-shadow))) (set! (-> obj settings shadow-dir x) (-> v1-1 x)) (set! (-> obj settings shadow-dir y) (-> v1-1 y)) - (set! (-> obj settings shadow-dir z) (-> v1-1 z)) - ) + (set! (-> obj settings shadow-dir z) (-> v1-1 z))) 0 - (none) - ) + (none)) -(defmethod collide-to-find-planes shadow-control ((obj shadow-control) (arg0 vector) (arg1 float) (arg2 float) (arg3 float)) +(defmethod collide-to-find-planes ((obj shadow-control) (arg0 vector) (arg1 float) (arg2 float) (arg3 float)) (with-pp (let ((s4-0 (new 'stack-no-clear 'collide-tri-result)) (v1-0 (new 'stack-no-clear 'vector)) - (a2-1 (new 'stack-no-clear 'vector)) - ) + (a2-1 (new 'stack-no-clear 'vector))) (set! (-> v1-0 quad) (-> arg0 quad)) (set! (-> v1-0 y) (+ 4096.0 (-> v1-0 y))) (set-vector! a2-1 0.0 (- arg3) 0.0 1.0) (cond - ((>= (fill-and-probe-using-line-sphere *collide-cache* v1-0 a2-1 8192.0 (collide-kind background) pp s4-0 (new 'static 'pat-surface :noentity #x1)) - 0.0 - ) - (let ((v1-2 obj)) - (logclear! (-> v1-2 settings flags) (shadow-flags disable-draw)) - ) + ((>= (fill-and-probe-using-line-sphere *collide-cache* + v1-0 + a2-1 + 8192.0 + (collide-kind background) + pp + s4-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (let ((v1-2 obj)) (logclear! (-> v1-2 settings flags) (shadow-flags disable-draw))) 0 - (let ((v1-4 obj)) - (set! (-> v1-4 settings bot-plane w) (- (+ (-> s4-0 intersect y) arg1))) - ) + (let ((v1-4 obj)) (set! (-> v1-4 settings bot-plane w) (- (+ (-> s4-0 intersect y) arg1)))) 0 (set! (-> obj settings top-plane w) (- (+ (-> s4-0 intersect y) arg2))) - 0 - ) - (else - (let ((v1-7 obj)) - (logior! (-> v1-7 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) + 0) + (else (let ((v1-7 obj)) (logior! (-> v1-7 settings flags) (shadow-flags disable-draw))) 0))) 0 - (none) - ) - ) - - - - + (none))) diff --git a/goal_src/jak1/engine/gfx/shadow/shadow-h.gc b/goal_src/jak1/engine/gfx/shadow/shadow-h.gc index 1064d91c14..3de763cf85 100644 --- a/goal_src/jak1/engine/gfx/shadow/shadow-h.gc +++ b/goal_src/jak1/engine/gfx/shadow/shadow-h.gc @@ -1,38 +1,32 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: shadow-h.gc -;; name in dgo: shadow-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype fake-shadow (structure) - ((px float) - (py float) - (pz float) - (scale float) - (qx float) - (qy float) - (qz float) - (flags int32) - ) - :pack-me - ) - + ((px float) + (py float) + (pz float) + (scale float) + (qx float) + (qy float) + (qz float) + (flags int32)) + :pack-me) (deftype fake-shadow-buffer (basic) - ((num-shadows int32) - (data fake-shadow 32 :inline) - ) - ) - + ((num-shadows int32) + (data fake-shadow 32 :inline))) (define *fake-shadow-buffer-1* (new 'global 'fake-shadow-buffer)) + (define *fake-shadow-buffer-2* (new 'global 'fake-shadow-buffer)) + (define *fake-shadow-buffer* *fake-shadow-buffer-1*) + (define-extern swap-fake-shadow-buffers (function none)) -(define-extern find-ground-and-draw-shadow (function vector vector float collide-kind process-drawable float float none)) + +(define-extern find-ground-and-draw-shadow + (function vector vector float collide-kind process-drawable float float none)) diff --git a/goal_src/jak1/engine/gfx/shadow/shadow-vu1-h.gc b/goal_src/jak1/engine/gfx/shadow/shadow-vu1-h.gc index d8e59be627..fe749cea1d 100644 --- a/goal_src/jak1/engine/gfx/shadow/shadow-vu1-h.gc +++ b/goal_src/jak1/engine/gfx/shadow/shadow-vu1-h.gc @@ -1,12 +1,7 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: shadow-vu1-h.gc -;; name in dgo: shadow-vu1-h -;; dgos: GAME, ENGINE - ;; empty! (define-extern shadow-vu1-init-buffer (function dma-buffer none)) diff --git a/goal_src/jak1/engine/gfx/shadow/shadow-vu1.gc b/goal_src/jak1/engine/gfx/shadow/shadow-vu1.gc index 9262f0788f..fa20d13bcb 100644 --- a/goal_src/jak1/engine/gfx/shadow/shadow-vu1.gc +++ b/goal_src/jak1/engine/gfx/shadow/shadow-vu1.gc @@ -1,109 +1,106 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/shadow/shadow-cpu.gc") -;; name: shadow-vu1.gc -;; name in dgo: shadow-vu1 -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype shadow-vu1-constants (structure) - ((hmgescale vector :inline) - (invhscale vector :inline) - (texoffset vector :inline) - (texscale vector :inline) - (hvdfoff vector :inline) - (fog vector :inline) - (clrs vector 2 :inline) - (adgif gs-gif-tag :inline) - (texflush ad-cmd :inline) - (flush ad-cmd :inline) - (trigif gs-gif-tag :inline) - (quadgif gs-gif-tag :inline) - ) - ) - + ((hmgescale vector :inline) + (invhscale vector :inline) + (texoffset vector :inline) + (texscale vector :inline) + (hvdfoff vector :inline) + (fog vector :inline) + (clrs vector 2 :inline) + (adgif gs-gif-tag :inline) + (texflush ad-cmd :inline) + (flush ad-cmd :inline) + (trigif gs-gif-tag :inline) + (quadgif gs-gif-tag :inline))) (deftype shadow-vu1-gifbuf-template (structure) - ((adgif gs-gif-tag :inline) - (ad ad-cmd :inline) - (flush ad-cmd :inline) - (trigif gs-gif-tag :inline) - (quadgif gs-gif-tag :inline) - ) - ) - + ((adgif gs-gif-tag :inline) + (ad ad-cmd :inline) + (flush ad-cmd :inline) + (trigif gs-gif-tag :inline) + (quadgif gs-gif-tag :inline))) -(define *shadow-vu1-tri-template* (new 'static 'shadow-vu1-gifbuf-template - :adgif (new 'static 'gs-gif-tag - :tag (new 'static 'gif-tag64 :nloop #x1 :nreg #x1) - :regs (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)) - ) - :ad (new 'static 'ad-cmd :cmd (gs-reg texflush)) - :flush (new 'static 'ad-cmd :data #x3f80000000000000 :cmd (gs-reg rgbaq)) - :trigif (new 'static 'gs-gif-tag - :tag (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1) - :nreg #x7 - ) - :regs (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id st) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id st) - :regs4 (gif-reg-id xyzf2) - :regs5 (gif-reg-id st) - :regs6 (gif-reg-id xyzf2) - ) - ) - :quadgif (new 'static 'gs-gif-tag - :tag (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1) - :nreg #x9 - ) - :regs (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id st) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id st) - :regs4 (gif-reg-id xyzf2) - :regs5 (gif-reg-id st) - :regs6 (gif-reg-id xyzf2) - :regs7 (gif-reg-id st) - :regs8 (gif-reg-id xyzf2) - ) - ) - ) - ) +(define *shadow-vu1-tri-template* + (new 'static + 'shadow-vu1-gifbuf-template + :adgif + (new 'static + 'gs-gif-tag + :tag + (new 'static 'gif-tag64 :nloop #x1 :nreg #x1) + :regs + (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) + :ad + (new 'static 'ad-cmd :cmd (gs-reg texflush)) + :flush + (new 'static 'ad-cmd :data #x3f80000000000000 :cmd (gs-reg rgbaq)) + :trigif + (new 'static + 'gs-gif-tag + :tag + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1) + :nreg #x7) + :regs + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id st) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id st) + :regs4 (gif-reg-id xyzf2) + :regs5 (gif-reg-id st) + :regs6 (gif-reg-id xyzf2))) + :quadgif + (new 'static + 'gs-gif-tag + :tag + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1) + :nreg #x9) + :regs + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id st) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id st) + :regs4 (gif-reg-id xyzf2) + :regs5 (gif-reg-id st) + :regs6 (gif-reg-id xyzf2) + :regs7 (gif-reg-id st) + :regs8 (gif-reg-id xyzf2))))) -(define shadow-vu1-block (new 'static 'vu-function #| :length #x2e4 :qlength #x172|#)) +(define shadow-vu1-block (new 'static 'vu-function)) ;; :length #x2e4 :qlength #x172 (defun shadow-vu1-add-constants ((arg0 dma-buffer)) (let* ((a2-0 13) (v1-0 arg0) - (a1-0 (the-as object (-> v1-0 base))) - ) + (a1-0 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-0)) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a1-0) vif1) - (new 'static 'vif-tag :imm #x370 :cmd (vif-cmd unpack-v4-32) :num a2-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16)) - ) + (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag :imm #x370 :cmd (vif-cmd unpack-v4-32) :num a2-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))) (let ((v1-1 (the-as object (-> arg0 base))) (a3-4 *math-camera*) (a2-4 *shadow-data*) - (a1-2 *shadow-vu1-tri-template*) - ) + (a1-2 *shadow-vu1-tri-template*)) (set! (-> (the-as shadow-vu1-constants v1-1) hmgescale quad) (-> a3-4 hmge-scale quad)) (set! (-> (the-as shadow-vu1-constants v1-1) invhscale quad) (-> a3-4 inv-hmge-scale quad)) (set! (-> (the-as shadow-vu1-constants v1-1) texoffset quad) (-> a2-4 texoffset quad)) @@ -116,85 +113,65 @@ (set! (-> (the-as shadow-vu1-constants v1-1) texflush quad) (-> a1-2 ad quad)) (set! (-> (the-as shadow-vu1-constants v1-1) flush quad) (-> a1-2 flush quad)) (set! (-> (the-as shadow-vu1-constants v1-1) trigif qword) (-> a1-2 trigif qword)) - (set! (-> (the-as shadow-vu1-constants v1-1) quadgif qword) (-> a1-2 quadgif qword)) - ) + (set! (-> (the-as shadow-vu1-constants v1-1) quadgif qword) (-> a1-2 quadgif qword))) (&+! (-> arg0 base) 208) (let* ((v1-4 arg0) - (a1-4 (the-as object (-> v1-4 base))) - ) + (a1-4 (the-as object (-> v1-4 base)))) (set! (-> (the-as dma-packet a1-4) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a1-4) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a1-4) vif1) - (new 'static 'vif-tag :imm #x3ac :num #x4 :cmd (vif-cmd unpack-v4-32)) - ) - (set! (-> v1-4 base) (&+ (the-as pointer a1-4) 16)) - ) + (set! (-> (the-as dma-packet a1-4) vif1) (new 'static 'vif-tag :imm #x3ac :num #x4 :cmd (vif-cmd unpack-v4-32))) + (set! (-> v1-4 base) (&+ (the-as pointer a1-4) 16))) (let* ((v1-5 arg0) - (a1-6 (the-as object (-> v1-5 base))) - ) + (a1-6 (the-as object (-> v1-5 base)))) (set! (-> (the-as shadow-vu1-gifbuf-template a1-6) adgif tag) (new 'static 'gif-tag64 :nloop #x1 :nreg #x2)) (set! (-> (the-as shadow-vu1-gifbuf-template a1-6) adgif regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d) :regs1 (gif-reg-id rgbaq)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d) :regs1 (gif-reg-id rgbaq))) (set! (-> (the-as shadow-vu1-gifbuf-template a1-6) ad data) (the-as uint 0)) (set! (-> (the-as shadow-vu1-gifbuf-template a1-6) ad cmds) (the-as uint 63)) (set! (-> (the-as shadow-vu1-gifbuf-template a1-6) flush data) (the-as uint 0)) (set! (-> (the-as shadow-vu1-gifbuf-template a1-6) flush cmds) (the-as uint 0)) (set! (-> (the-as shadow-vu1-gifbuf-template a1-6) trigif tag) - (new 'static 'gif-tag64 - :nloop #x3 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1) - :nreg #x2 - ) - ) + (new 'static + 'gif-tag64 + :nloop #x3 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1) + :nreg #x2)) (set! (-> (the-as shadow-vu1-gifbuf-template a1-6) trigif regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id xyzf2)) - ) - (set! (-> v1-5 base) (&+ (the-as pointer a1-6) 64)) - ) - (none) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id xyzf2))) + (set! (-> v1-5 base) (&+ (the-as pointer a1-6) 64))) + (none)) (defun shadow-vu1-add-matrix ((arg0 dma-buffer) (arg1 math-camera)) (let ((v1-0 4)) (let* ((a2-4 arg0) - (a3-0 (the-as object (-> a2-4 base))) - ) + (a3-0 (the-as object (-> a2-4 base)))) (set! (-> (the-as dma-packet a3-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc v1-0)) (set! (-> (the-as dma-packet a3-0) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> (the-as dma-packet a3-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num v1-0)) - (set! (-> a2-4 base) (the-as pointer (&+ (the-as dma-packet a3-0) 16))) - ) - ) + (set! (-> a2-4 base) (the-as pointer (&+ (the-as dma-packet a3-0) 16))))) (let ((v1-5 (the-as object (-> arg0 base)))) (let ((a2-5 (-> arg1 perspective vector 0 quad)) (a3-1 (-> arg1 perspective vector 1 quad)) (t0-4 (-> arg1 perspective vector 2 quad)) - (a1-1 (-> arg1 perspective vector 3 quad)) - ) + (a1-1 (-> arg1 perspective vector 3 quad))) (set! (-> (the-as matrix v1-5) vector 0 quad) a2-5) (set! (-> (the-as matrix v1-5) vector 1 quad) a3-1) (set! (-> (the-as matrix v1-5) vector 2 quad) t0-4) - (set! (-> (the-as matrix v1-5) vector 3 quad) a1-1) - ) - (set! (-> arg0 base) (the-as pointer (&+ (the-as matrix v1-5) 64))) - ) - (none) - ) + (set! (-> (the-as matrix v1-5) vector 3 quad) a1-1)) + (set! (-> arg0 base) (the-as pointer (&+ (the-as matrix v1-5) 64)))) + (none)) (defun shadow-vu1-init-buffer ((arg0 dma-buffer)) (dma-buffer-add-vu-function arg0 shadow-vu1-block 1) (shadow-vu1-add-constants arg0) (shadow-vu1-add-matrix arg0 *math-camera*) (let* ((v1-0 arg0) - (a0-4 (the-as object (-> v1-0 base))) - ) + (a0-4 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm #xa)) (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-4) 16)) - ) - (none) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-4) 16))) + (none)) diff --git a/goal_src/jak1/engine/gfx/shadow/shadow.gc b/goal_src/jak1/engine/gfx/shadow/shadow.gc index 95d942beb1..496244f3e2 100644 --- a/goal_src/jak1/engine/gfx/shadow/shadow.gc +++ b/goal_src/jak1/engine/gfx/shadow/shadow.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/physics/dynamics-h.gc") (require "engine/collide/collide-cache.gc") (require "engine/gfx/shadow/shadow-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: shadow.gc -;; name in dgo: shadow -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun add-fake-shadow-to-buffer ((arg0 vector) (arg1 vector) (arg2 float) (arg3 int)) @@ -25,35 +20,23 @@ (set! (-> t0-5 qx) (-> arg1 x)) (set! (-> t0-5 qy) (-> arg1 y)) (set! (-> t0-5 qz) (-> arg1 z)) - (set! (-> t0-5 flags) arg3) - ) - (+! (-> v1-0 num-shadows) 1) - ) - ) + (set! (-> t0-5 flags) arg3)) + (+! (-> v1-0 num-shadows) 1))) 0 - (none) - ) + (none)) (defun swap-fake-shadow-buffers () - (set! *fake-shadow-buffer* (if (= *fake-shadow-buffer* *fake-shadow-buffer-1*) - *fake-shadow-buffer-2* - *fake-shadow-buffer-1* - ) - ) + (set! *fake-shadow-buffer* + (if (= *fake-shadow-buffer* *fake-shadow-buffer-1*) *fake-shadow-buffer-2* *fake-shadow-buffer-1*)) (set! (-> *fake-shadow-buffer* num-shadows) 0) 0 - (none) - ) + (none)) (defun draw-shadow ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float) (arg4 float) (arg5 float)) (let ((f0-1 (- (-> arg0 y) (-> arg1 y)))) - (if (< f0-1 arg4) - (add-fake-shadow-to-buffer arg1 arg2 (* (- 1.0 (/ f0-1 arg4)) arg3) (the-as int arg5)) - ) - ) + (if (< f0-1 arg4) (add-fake-shadow-to-buffer arg1 arg2 (* (- 1.0 (/ f0-1 arg4)) arg3) (the-as int arg5)))) 0 - (none) - ) + (none)) (defun compute-and-draw-shadow ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float) (arg5 float)) (local-vars @@ -62,23 +45,19 @@ (sv-96 vector) (sv-112 (function quaternion vector float quaternion)) (sv-128 vector) - (sv-144 vector) - ) + (sv-144 vector)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (set! sv-96 arg2) (let ((s4-0 arg3) (s3-0 arg4) - (s2-0 arg5) - ) + (s2-0 arg5)) (when (< (- (-> arg0 y) (-> arg1 y)) s3-0) (set! sv-144 (new 'stack-no-clear 'vector)) (let ((s0-0 (new 'stack-no-clear 'vector)) - (s1-0 (new 'stack-no-clear 'sparticle-cpuinfo)) - ) + (s1-0 (new 'stack-no-clear 'sparticle-cpuinfo))) (+! (-> arg1 y) 40.96) (set! (-> sv-144 x) (-> sv-96 z)) (set! (-> sv-144 y) 0.0) @@ -86,9 +65,7 @@ (vector-normalize! sv-144 1.0) (set! sv-112 quaternion-vector-angle!) (set! sv-128 s0-0) - (let ((a2-1 (acos (-> sv-96 y)))) - (sv-112 (the-as quaternion sv-128) sv-144 a2-1) - ) + (let ((a2-1 (acos (-> sv-96 y)))) (sv-112 (the-as quaternion sv-128) sv-144 a2-1)) (let ((v1-9 s1-0)) (cond ((< (-> s0-0 w) 0.0) @@ -96,111 +73,67 @@ (.lvf vf2 (&-> s0-0 quad)) (.sub.vf vf1 vf0 vf2 :mask #b111) (.svf (&-> v1-9 vel-sxvel quad) vf1) - (.mov v1-10 vf1) - ) + (.mov v1-10 vf1)) (else - (.lvf vf1 (&-> v1-9 vel-sxvel quad)) - (.lvf vf2 (&-> s0-0 quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-9 vel-sxvel quad) vf1) - (.mov v1-11 vf1) - ) - ) - ) - (draw-shadow arg0 arg1 (-> s1-0 vel-sxvel) (the-as float s4-0) s3-0 s2-0) - ) - ) - ) + (.lvf vf1 (&-> v1-9 vel-sxvel quad)) + (.lvf vf2 (&-> s0-0 quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-9 vel-sxvel quad) vf1) + (.mov v1-11 vf1)))) + (draw-shadow arg0 arg1 (-> s1-0 vel-sxvel) (the-as float s4-0) s3-0 s2-0)))) 0 - (none) - ) - ) + (none))) -(defun find-ground-and-draw-shadow ((arg0 vector) - (arg1 vector) - (arg2 float) - (arg3 collide-kind) - (arg4 process-drawable) - (arg5 float) - (arg6 float) - ) +(defun find-ground-and-draw-shadow ((arg0 vector) (arg1 vector) (arg2 float) (arg3 collide-kind) (arg4 process-drawable) (arg5 float) (arg6 float)) (let ((s2-0 (new 'stack-no-clear 'vector))) (set! (-> s2-0 quad) (-> arg0 quad)) (new 'stack-no-clear 'vector) (+! (-> s2-0 y) arg5) (let ((s4-0 (new 'stack-no-clear 'collide-tri-result))) (cond - ((>= (fill-and-probe-using-y-probe - *collide-cache* - s2-0 - arg6 - arg3 - arg4 - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + ((>= (fill-and-probe-using-y-probe *collide-cache* s2-0 arg6 arg3 arg4 s4-0 (new 'static 'pat-surface :noentity #x1)) 0.0) (if (!= arg2 0.0) - (compute-and-draw-shadow s2-0 (-> s4-0 intersect) (-> s4-0 normal) (the-as vector arg2) arg6 (the-as float 0)) - ) - (if (and arg1 (!= (-> s4-0 pat material) 3)) - (set! (-> arg1 quad) (-> s4-0 intersect quad)) - ) - ) - (else - (if arg1 - (vector+float*! arg1 arg0 (-> *standard-dynamics* gravity-normal) (- arg6)) - ) - ) - ) - ) - ) + (compute-and-draw-shadow s2-0 (-> s4-0 intersect) (-> s4-0 normal) (the-as vector arg2) arg6 (the-as float 0))) + (if (and arg1 (!= (-> s4-0 pat material) 3)) (set! (-> arg1 quad) (-> s4-0 intersect quad)))) + (else (if arg1 (vector+float*! arg1 arg0 (-> *standard-dynamics* gravity-normal) (- arg6))))))) 0 - (none) - ) + (none)) (defbehavior do-target-shadow target () (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) (!= (-> self control unknown-surface00 mode) 'swim) (!= (-> self control unknown-surface00 mode) 'dive) (!= (-> self next-state name) 'target-flop) - (not (logtest? (-> self draw status) (draw-status hidden no-anim skip-bones))) - ) - (set! (-> self control shadow-pos quad) (-> self control trans quad)) - (find-ground-and-draw-shadow - (-> self control trans) - (-> self control shadow-pos) - 0.0 - (-> (the-as collide-shape-prim (-> self control root-prim)) collide-with) - self - 0.0 - 81920.0 - ) - ) + (not (logtest? (-> self draw status) (draw-status hidden no-anim skip-bones)))) + (set! (-> self control shadow-pos quad) (-> self control trans quad)) + (find-ground-and-draw-shadow (-> self control trans) + (-> self control shadow-pos) + 0.0 + (-> (the-as collide-shape-prim (-> self control root-prim)) collide-with) + self + 0.0 + 81920.0)) 0 - (none) - ) + (none)) (defpart 362 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:scale-x (meters 0.3)) - (:rot-z (degrees -180) (degrees 360)) - (:scale-y :copy scale-x) - (:r 90.0) - (:g 90.0) - (:b 90.0) - (:a 20.0 20.0) - (:vel-y (meters 0.002)) - (:scalevel-x (meters 0.004166667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.3) - (:timer (seconds 16.68)) - (:flags (bit2 bit3)) - (:launchrot-x (degrees -20) (degrees 15)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0.2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:scale-x (meters 0.3)) + (:rot-z (degrees -180) (degrees 360)) + (:scale-y :copy scale-x) + (:r 90.0) + (:g 90.0) + (:b 90.0) + (:a 20.0 20.0) + (:vel-y (meters 0.002)) + (:scalevel-x (meters 0.004166667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.3) + (:timer (seconds 16.68)) + (:flags (bit2 bit3)) + (:launchrot-x (degrees -20) (degrees 15)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0.2)))) diff --git a/goal_src/jak1/engine/gfx/shrub/shrub-work.gc b/goal_src/jak1/engine/gfx/shrub/shrub-work.gc index 77b9a125e7..8ce8e1af40 100644 --- a/goal_src/jak1/engine/gfx/shrub/shrub-work.gc +++ b/goal_src/jak1/engine/gfx/shrub/shrub-work.gc @@ -1,306 +1,487 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/dma/dma-buffer.gc") (require "engine/gfx/shrub/shrubbery-h.gc") (require "engine/math/matrix-h.gc") (require "engine/gfx/math-camera-h.gc") -;; name: shrub-work.gc -;; name in dgo: shrub-work -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define *instance-shrub-work* - (new 'static 'instance-shrub-work - :matrix-tmpl (new 'static 'inline-array qword 20 - (new 'static 'qword :data (new 'static 'array uint32 4 #x10000005 #x0 #x0 #x6c050143)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050148)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05014d)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050152)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050157)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05015c)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050161)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050166)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05016b)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x10000005 #x0 #x0 #x6c050170)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x10000005 #x0 #x0 #x6c050176)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05017b)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050180)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050185)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05018a)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05018f)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050194)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050199)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05019e)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x10000005 #x0 #x0 #x6c0501a3)) - ) - :count-tmpl (new 'static 'inline-array vector4w 20 - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 10) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 1) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 2) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 3) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 4) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 5) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 6) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 7) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 8) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 9) - (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 10) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 1) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 2) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 3) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 4) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 5) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 6) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 7) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 8) - (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 9) - ) - :mscalf-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1) - ) - :mscalf-ret-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ret)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1) - ) - :adgif-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id next)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x1000000000008005 #xe) - ) - :billboard-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #xd :id (dma-tag-id next)) - :vif1 (new 'static 'vif-tag :imm #xd :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x303e400000008004 #x412) - ) - :shrub-near-packets (new 'static 'inline-array shrub-near-packet 6 - (new 'static 'shrub-near-packet - :matrix-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x345 :num #x6 :cmd (vif-cmd unpack-v4-32)) - ) - :header-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x34c :cmd (vif-cmd unpack-v4-32)) - ) - :stq-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x9 :cmd (vif-cmd unpack-v2-16)) - ) - :color-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x400a :cmd (vif-cmd unpack-v3-8)) - ) - :vertex-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #xb :cmd (vif-cmd unpack-v3-16)) - ) - :mscal-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1) - ) - :init-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32)) - ) - :init-data (new 'static 'array uint32 8 #x0 #x0 #x345 #x117 #x0 #x0 #x0 #x1500000c) - ) - (new 'static 'shrub-near-packet - :matrix-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x363 :num #x6 :cmd (vif-cmd unpack-v4-32)) - ) - :header-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x36a :cmd (vif-cmd unpack-v4-32)) - ) - :stq-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x120 :cmd (vif-cmd unpack-v2-16)) - ) - :color-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x4121 :cmd (vif-cmd unpack-v3-8)) - ) - :vertex-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x122 :cmd (vif-cmd unpack-v3-16)) - ) - :mscal-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1) - ) - :init-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32)) - ) - :init-data (new 'static 'array uint32 8 #x0 #x0 #x363 #x22e #x0 #x0 #x0 #x1500000c) - ) - (new 'static 'shrub-near-packet - :matrix-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x345 :num #x6 :cmd (vif-cmd unpack-v4-32)) - ) - :header-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x34c :cmd (vif-cmd unpack-v4-32)) - ) - :stq-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x237 :cmd (vif-cmd unpack-v2-16)) - ) - :color-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x4238 :cmd (vif-cmd unpack-v3-8)) - ) - :vertex-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x239 :cmd (vif-cmd unpack-v3-16)) - ) - :mscal-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1) - ) - :init-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32)) - ) - :init-data (new 'static 'array uint32 8 #x0 #x0 #x345 #x0 #x0 #x0 #x0 #x1500000c) - ) - (new 'static 'shrub-near-packet - :matrix-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x363 :num #x6 :cmd (vif-cmd unpack-v4-32)) - ) - :header-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x36a :cmd (vif-cmd unpack-v4-32)) - ) - :stq-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x9 :cmd (vif-cmd unpack-v2-16)) - ) - :color-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x400a :cmd (vif-cmd unpack-v3-8)) - ) - :vertex-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #xb :cmd (vif-cmd unpack-v3-16)) - ) - :mscal-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1) - ) - :init-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32)) - ) - :init-data (new 'static 'array uint32 8 #x0 #x0 #x363 #x117 #x0 #x0 #x0 #x1500000c) - ) - (new 'static 'shrub-near-packet - :matrix-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x345 :num #x6 :cmd (vif-cmd unpack-v4-32)) - ) - :header-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x34c :cmd (vif-cmd unpack-v4-32)) - ) - :stq-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x120 :cmd (vif-cmd unpack-v2-16)) - ) - :color-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x4121 :cmd (vif-cmd unpack-v3-8)) - ) - :vertex-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x122 :cmd (vif-cmd unpack-v3-16)) - ) - :mscal-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1) - ) - :init-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32)) - ) - :init-data (new 'static 'array uint32 8 #x0 #x0 #x345 #x22e #x0 #x0 #x0 #x1500000c) - ) - (new 'static 'shrub-near-packet - :matrix-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x363 :num #x6 :cmd (vif-cmd unpack-v4-32)) - ) - :header-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x36a :cmd (vif-cmd unpack-v4-32)) - ) - :stq-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x237 :cmd (vif-cmd unpack-v2-16)) - ) - :color-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x4238 :cmd (vif-cmd unpack-v3-8)) - ) - :vertex-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x239 :cmd (vif-cmd unpack-v3-16)) - ) - :mscal-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1) - ) - :init-tmpl (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - :vif1 (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32)) - ) - :init-data (new 'static 'array uint32 8 #x0 #x0 #x363 #x0 #x0 #x0 #x0 #x1500000c) - ) - ) - :dma-ref (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) - :dma-end (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id end))) - :wind-const (new 'static 'vector :x 0.5 :y 100.0 :z 0.0166 :w -1.0) - :constants (new 'static 'vector :x 128.0 :y 1.0) - :color-constant (new 'static 'vector4w :x #x47000000 :y #x47000000 :z #x47000000) - :start-bank (new 'static 'array uint8 20 #x0 #x1 #x1 #x1 #x1 #x1 #x1 #x1 #x1 #x1 #x1 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0) - ) - ) + (new 'static + 'instance-shrub-work + :matrix-tmpl + (new 'static + 'inline-array + qword + 20 + (new 'static 'qword :data (new 'static 'array uint32 4 #x10000005 #x0 #x0 #x6c050143)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050148)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05014d)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050152)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050157)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05015c)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050161)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050166)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05016b)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x10000005 #x0 #x0 #x6c050170)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x10000005 #x0 #x0 #x6c050176)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05017b)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050180)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050185)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05018a)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05018f)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050194)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c050199)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x20000005 #x0 #x0 #x6c05019e)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x10000005 #x0 #x0 #x6c0501a3))) + :count-tmpl + (new 'static + 'inline-array + vector4w + 20 + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 10) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 1) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 2) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 3) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 4) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 5) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 6) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 7) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 8) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 9) + (new 'static 'vector4w :x #x20000000 :z #x60010142 :w 10) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 1) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 2) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 3) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 4) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 5) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 6) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 7) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 8) + (new 'static 'vector4w :x #x20000000 :z #x60010175 :w 9)) + :mscalf-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1)) + :mscalf-ret-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ret)) + :vif0 + (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1)) + :adgif-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id next)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif + (new 'static 'array uint64 2 #x1000000000008005 #xe)) + :billboard-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #xd :id (dma-tag-id next)) + :vif1 + (new 'static 'vif-tag :imm #xd :cmd (vif-cmd direct) :msk #x1)) + :gif + (new 'static 'array uint64 2 #x303e400000008004 #x412)) + :shrub-near-packets + (new 'static + 'inline-array + shrub-near-packet + 6 + (new 'static + 'shrub-near-packet + :matrix-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x345 :num #x6 :cmd (vif-cmd unpack-v4-32))) + :header-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x34c :cmd (vif-cmd unpack-v4-32))) + :stq-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x9 :cmd (vif-cmd unpack-v2-16))) + :color-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x400a :cmd (vif-cmd unpack-v3-8))) + :vertex-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #xb :cmd (vif-cmd unpack-v3-16))) + :mscal-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1)) + :init-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32))) + :init-data + (new 'static 'array uint32 8 #x0 #x0 #x345 #x117 #x0 #x0 #x0 #x1500000c)) + (new 'static + 'shrub-near-packet + :matrix-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x363 :num #x6 :cmd (vif-cmd unpack-v4-32))) + :header-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x36a :cmd (vif-cmd unpack-v4-32))) + :stq-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x120 :cmd (vif-cmd unpack-v2-16))) + :color-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x4121 :cmd (vif-cmd unpack-v3-8))) + :vertex-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x122 :cmd (vif-cmd unpack-v3-16))) + :mscal-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1)) + :init-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32))) + :init-data + (new 'static 'array uint32 8 #x0 #x0 #x363 #x22e #x0 #x0 #x0 #x1500000c)) + (new 'static + 'shrub-near-packet + :matrix-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x345 :num #x6 :cmd (vif-cmd unpack-v4-32))) + :header-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x34c :cmd (vif-cmd unpack-v4-32))) + :stq-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x237 :cmd (vif-cmd unpack-v2-16))) + :color-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x4238 :cmd (vif-cmd unpack-v3-8))) + :vertex-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x239 :cmd (vif-cmd unpack-v3-16))) + :mscal-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1)) + :init-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32))) + :init-data + (new 'static 'array uint32 8 #x0 #x0 #x345 #x0 #x0 #x0 #x0 #x1500000c)) + (new 'static + 'shrub-near-packet + :matrix-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x363 :num #x6 :cmd (vif-cmd unpack-v4-32))) + :header-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x36a :cmd (vif-cmd unpack-v4-32))) + :stq-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x9 :cmd (vif-cmd unpack-v2-16))) + :color-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x400a :cmd (vif-cmd unpack-v3-8))) + :vertex-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #xb :cmd (vif-cmd unpack-v3-16))) + :mscal-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1)) + :init-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32))) + :init-data + (new 'static 'array uint32 8 #x0 #x0 #x363 #x117 #x0 #x0 #x0 #x1500000c)) + (new 'static + 'shrub-near-packet + :matrix-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x345 :num #x6 :cmd (vif-cmd unpack-v4-32))) + :header-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x34c :cmd (vif-cmd unpack-v4-32))) + :stq-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x120 :cmd (vif-cmd unpack-v2-16))) + :color-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x4121 :cmd (vif-cmd unpack-v3-8))) + :vertex-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x122 :cmd (vif-cmd unpack-v3-16))) + :mscal-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1)) + :init-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32))) + :init-data + (new 'static 'array uint32 8 #x0 #x0 #x345 #x22e #x0 #x0 #x0 #x1500000c)) + (new 'static + 'shrub-near-packet + :matrix-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x363 :num #x6 :cmd (vif-cmd unpack-v4-32))) + :header-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x36a :cmd (vif-cmd unpack-v4-32))) + :stq-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x237 :cmd (vif-cmd unpack-v2-16))) + :color-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x4238 :cmd (vif-cmd unpack-v3-8))) + :vertex-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x239 :cmd (vif-cmd unpack-v3-16))) + :mscal-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1)) + :init-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id next)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #x38a :num #x1 :cmd (vif-cmd unpack-v4-32))) + :init-data + (new 'static 'array uint32 8 #x0 #x0 #x363 #x0 #x0 #x0 #x0 #x1500000c))) + :dma-ref + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :dma-end + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id end))) + :wind-const + (new 'static 'vector :x 0.5 :y 100.0 :z 0.0166 :w -1.0) + :constants + (new 'static 'vector :x 128.0 :y 1.0) + :color-constant + (new 'static 'vector4w :x #x47000000 :y #x47000000 :z #x47000000) + :start-bank + (new 'static 'array uint8 20 #x0 #x1 #x1 #x1 #x1 #x1 #x1 #x1 #x1 #x1 #x1 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0))) (set! (-> *instance-shrub-work* mscalf-tmpl vif0 imm) 103) @@ -308,31 +489,25 @@ (defun upload-generic-shrub ((arg0 dma-buffer) (arg1 generic-shrub-fragment) (arg2 int) (arg3 int)) (let* ((v1-0 arg0) - (t0-0 (the-as object (-> v1-0 base))) - ) + (t0-0 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet t0-0) dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet t0-0) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> (the-as dma-packet t0-0) vif1) - (new 'static 'vif-tag :num #x6 :cmd (vif-cmd unpack-v4-32) :imm (shr (shl arg2 54) 54)) - ) - (set! (-> v1-0 base) (&+ (the-as pointer t0-0) 16)) - ) + (new 'static 'vif-tag :num #x6 :cmd (vif-cmd unpack-v4-32) :imm (shr (shl arg2 54) 54))) + (set! (-> v1-0 base) (&+ (the-as pointer t0-0) 16))) (let* ((v1-1 (the-as matrix (-> arg0 base))) (t3-0 (-> *math-camera* camera-temp)) (t0-3 (-> t3-0 vector 0 quad)) (t1-4 (-> t3-0 vector 1 quad)) (t2-4 (-> t3-0 vector 2 quad)) - (t3-1 (-> t3-0 vector 3 quad)) - ) + (t3-1 (-> t3-0 vector 3 quad))) (set! (-> v1-1 vector 0 quad) t0-3) (set! (-> v1-1 vector 1 quad) t1-4) (set! (-> v1-1 vector 2 quad) t2-4) - (set! (-> v1-1 vector 3 quad) t3-1) - ) + (set! (-> v1-1 vector 3 quad) t3-1)) (&+! (-> arg0 base) 64) (let* ((v1-4 arg0) - (t0-4 (the-as object (-> v1-4 base))) - ) + (t0-4 (the-as object (-> v1-4 base)))) (set! (-> (the-as vector4w-2 t0-4) vector 0 x) #x3f800000) (set! (-> (the-as vector4w-2 t0-4) vector 0 y) #x3f800000) (set! (-> (the-as vector4w-2 t0-4) vector 0 z) #x3f800000) @@ -341,67 +516,43 @@ (set! (-> (the-as vector4w-2 t0-4) vector 1 y) 0) (set! (-> (the-as vector4w-2 t0-4) vector 1 z) 0) (set! (-> (the-as vector4w-2 t0-4) vector 1 w) 0) - (set! (-> v1-4 base) (&+ (the-as pointer t0-4) 32)) - ) + (set! (-> v1-4 base) (&+ (the-as pointer t0-4) 32))) (let* ((v1-5 arg0) - (t0-6 (the-as object (-> v1-5 base))) - ) + (t0-6 (the-as object (-> v1-5 base)))) (set! (-> (the-as dma-packet t0-6) dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (-> arg1 cnt) :qwc (-> arg1 cnt-qwc)) - ) + (new 'static 'dma-tag :id (dma-tag-id ref) :addr (-> arg1 cnt) :qwc (-> arg1 cnt-qwc))) (set! (-> (the-as dma-packet t0-6) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet t0-6) vif1) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :imm (shr (shl (+ arg2 6) 54) 54) :num (-> arg1 cnt-qwc)) - ) - (set! (-> v1-5 base) (&+ (the-as pointer t0-6) 16)) - ) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :imm (shr (shl (+ arg2 6) 54) 54) :num (-> arg1 cnt-qwc))) + (set! (-> v1-5 base) (&+ (the-as pointer t0-6) 16))) (let* ((v1-6 arg0) - (a2-8 (the-as object (-> v1-6 base))) - ) + (a2-8 (the-as object (-> v1-6 base)))) (set! (-> (the-as dma-packet a2-8) dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (-> arg1 stq) :qwc (-> arg1 stq-qwc)) - ) + (new 'static 'dma-tag :id (dma-tag-id ref) :addr (-> arg1 stq) :qwc (-> arg1 stq-qwc))) (set! (-> (the-as dma-packet a2-8) vif0) (new 'static 'vif-tag :imm #x103 :cmd (vif-cmd stcycl))) (set! (-> (the-as dma-packet a2-8) vif1) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v2-16) :imm (shr (shl arg3 54) 54) :num (-> arg1 vtx-cnt)) - ) - (set! (-> v1-6 base) (&+ (the-as pointer a2-8) 16)) - ) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v2-16) :imm (shr (shl arg3 54) 54) :num (-> arg1 vtx-cnt))) + (set! (-> v1-6 base) (&+ (the-as pointer a2-8) 16))) (let* ((v1-7 arg0) - (a2-10 (the-as object (-> v1-7 base))) - ) + (a2-10 (the-as object (-> v1-7 base)))) (set! (-> (the-as dma-packet a2-10) dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (-> arg1 col) :qwc (-> arg1 col-qwc)) - ) + (new 'static 'dma-tag :id (dma-tag-id ref) :addr (-> arg1 col) :qwc (-> arg1 col-qwc))) (set! (-> (the-as dma-packet a2-10) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-10) vif1) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v3-8) :imm (shr (shl (+ arg3 1) 54) 54) :num (-> arg1 vtx-cnt)) - ) - (set! (-> v1-7 base) (&+ (the-as pointer a2-10) 16)) - ) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v3-8) :imm (shr (shl (+ arg3 1) 54) 54) :num (-> arg1 vtx-cnt))) + (set! (-> v1-7 base) (&+ (the-as pointer a2-10) 16))) (let* ((v1-8 arg0) - (a2-12 (the-as object (-> v1-8 base))) - ) + (a2-12 (the-as object (-> v1-8 base)))) (set! (-> (the-as dma-packet a2-12) dma) - (new 'static 'dma-tag :id (dma-tag-id ref) :addr (-> arg1 vtx) :qwc (-> arg1 vtx-qwc)) - ) + (new 'static 'dma-tag :id (dma-tag-id ref) :addr (-> arg1 vtx) :qwc (-> arg1 vtx-qwc))) (set! (-> (the-as dma-packet a2-12) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a2-12) vif1) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v3-16) :imm (shr (shl (+ arg3 2) 54) 54) :num (-> arg1 vtx-cnt)) - ) - (set! (-> v1-8 base) (&+ (the-as pointer a2-12) 16)) - ) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v3-16) :imm (shr (shl (+ arg3 2) 54) 54) :num (-> arg1 vtx-cnt))) + (set! (-> v1-8 base) (&+ (the-as pointer a2-12) 16))) (let* ((v1-9 arg0) - (a1-7 (the-as object (-> v1-9 base))) - ) + (a1-7 (the-as object (-> v1-9 base)))) (set! (-> (the-as dma-packet a1-7) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a1-7) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> (the-as dma-packet a1-7) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd mscal) :msk #x1)) - (set! (-> v1-9 base) (&+ (the-as pointer a1-7) 16)) - ) - arg0 - ) - - - - + (set! (-> v1-9 base) (&+ (the-as pointer a1-7) 16))) + arg0) diff --git a/goal_src/jak1/engine/gfx/shrub/shrubbery-h.gc b/goal_src/jak1/engine/gfx/shrub/shrubbery-h.gc index 91fa98d4bf..89ac36be56 100644 --- a/goal_src/jak1/engine/gfx/shrub/shrubbery-h.gc +++ b/goal_src/jak1/engine/gfx/shrub/shrubbery-h.gc @@ -1,111 +1,79 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/gfx/background/prototype-h.gc") (require "engine/draw/drawable-tree-h.gc") (require "engine/draw/drawable-inline-array-h.gc") -;; name: shrubbery-h.gc -;; name in dgo: shrubbery-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype billboard (drawable) - ((flat adgif-shader :inline) - ) - ) - + ((flat adgif-shader :inline))) (deftype shrub-view-data (structure) - ((data uint128 3) - (texture-giftag gs-gif-tag :inline :overlay-at (-> data 0)) - (consts vector :inline :overlay-at (-> data 1)) - (fog-clamp vector :inline :overlay-at (-> data 2)) - (tex-start-ptr int32 :overlay-at (-> data 1)) - (gifbufsum float :overlay-at (-> data 1)) - (mtx-buf-ptr int32 :overlay-at (-> consts y)) - (exp23 float :overlay-at mtx-buf-ptr) - (fog-0 float :overlay-at (-> consts z)) - (fog-1 float :overlay-at (-> consts w)) - (fog-min float :overlay-at (-> data 2)) - (fog-max float :overlay-at (-> fog-clamp y)) - ) - ) - + ((data uint128 3) + (texture-giftag gs-gif-tag :inline :overlay-at (-> data 0)) + (consts vector :inline :overlay-at (-> data 1)) + (fog-clamp vector :inline :overlay-at (-> data 2)) + (tex-start-ptr int32 :overlay-at (-> data 1)) + (gifbufsum float :overlay-at (-> data 1)) + (mtx-buf-ptr int32 :overlay-at (-> consts y)) + (exp23 float :overlay-at mtx-buf-ptr) + (fog-0 float :overlay-at (-> consts z)) + (fog-1 float :overlay-at (-> consts w)) + (fog-min float :overlay-at (-> data 2)) + (fog-max float :overlay-at (-> fog-clamp y)))) (deftype shrubbery (drawable) - ((textures (inline-array adgif-shader) :overlay-at id) - (header qword :offset 8) - (obj-qwc uint8 :offset 12) - (vtx-qwc uint8 :offset 13) - (col-qwc uint8 :offset 14) - (stq-qwc uint8 :offset 15) - (obj uint32 :overlay-at (-> bsphere x)) - (vtx uint32 :overlay-at (-> bsphere y)) - (col uint32 :overlay-at (-> bsphere z)) - (stq uint32 :overlay-at (-> bsphere w)) - ) - ) - + ((textures (inline-array adgif-shader) :overlay-at id) + (header qword :offset 8) + (obj-qwc uint8 :offset 12) + (vtx-qwc uint8 :offset 13) + (col-qwc uint8 :offset 14) + (stq-qwc uint8 :offset 15) + (obj uint32 :overlay-at (-> bsphere x)) + (vtx uint32 :overlay-at (-> bsphere y)) + (col uint32 :overlay-at (-> bsphere z)) + (stq uint32 :overlay-at (-> bsphere w)))) (deftype instance-shrubbery (instance) - ((color-indices uint32 :overlay-at error) - (flat-normal vector :inline) - (flat-hwidth float :overlay-at (-> flat-normal w)) - (color uint32 :overlay-at color-indices) - ) - ) - + ((color-indices uint32 :overlay-at error) + (flat-normal vector :inline) + (flat-hwidth float :overlay-at (-> flat-normal w)) + (color uint32 :overlay-at color-indices))) (deftype drawable-inline-array-instance-shrub (drawable-inline-array) - ((data instance-shrubbery 1 :inline) - (pad uint32) - ) - ) + ((data instance-shrubbery 1 :inline) + (pad uint32))) (deftype drawable-tree-instance-shrub (drawable-tree) - ((info prototype-array-shrub-info :offset 8) - (colors-added time-of-day-palette :offset 12) - ) - ) + ((info prototype-array-shrub-info :offset 8) + (colors-added time-of-day-palette :offset 12))) (deftype generic-shrub-fragment (drawable) - ((textures (inline-array adgif-shader) :overlay-at id) - (vtx-cnt uint32 :offset 8) - (cnt-qwc uint8 :offset 12) - (vtx-qwc uint8 :offset 13) - (col-qwc uint8 :offset 14) - (stq-qwc uint8 :offset 15) - (cnt uint32 :overlay-at (-> bsphere x)) - (vtx uint32 :overlay-at (-> bsphere y)) - (col uint32 :overlay-at (-> bsphere z)) - (stq uint32 :overlay-at (-> bsphere w)) - ) - ) - + ((textures (inline-array adgif-shader) :overlay-at id) + (vtx-cnt uint32 :offset 8) + (cnt-qwc uint8 :offset 12) + (vtx-qwc uint8 :offset 13) + (col-qwc uint8 :offset 14) + (stq-qwc uint8 :offset 15) + (cnt uint32 :overlay-at (-> bsphere x)) + (vtx uint32 :overlay-at (-> bsphere y)) + (col uint32 :overlay-at (-> bsphere z)) + (stq uint32 :overlay-at (-> bsphere w)))) (deftype prototype-shrubbery (drawable-inline-array) - ((data shrubbery 1 :inline) - (pad uint32) - ) - ) + ((data shrubbery 1 :inline) + (pad uint32))) -(deftype prototype-trans-shrubbery (prototype-shrubbery) - () - ) +(deftype prototype-trans-shrubbery (prototype-shrubbery) ()) -(deftype prototype-generic-shrub (drawable-group) - () - ) +(deftype prototype-generic-shrub (drawable-group) ()) (deftype shrubbery-matrix (structure) - ((mat matrix :inline) - (color qword :inline) - ) - ) + ((mat matrix :inline) + (color qword :inline))) (defun shrubbery-login-post-texture ((this shrubbery)) "Copies adgif shader crap to somewhere" @@ -116,16 +84,14 @@ ;; the second destination to place the data (tex-dst (the-as qword (+ (the-as int dst) (* shader-count 64)))) ;; the input data (adgif shaders, each is 0x50 bytes, or 5 quads) - (src (the-as qword (-> this textures))) - ) + (src (the-as qword (-> this textures)))) ;; iterate over all shaders (dotimes (a0-1 (the-as int shader-count)) ;; copy the first quadword directly to the second destination (set! (-> tex-dst quad) (-> src quad)) ;; advance dst and src (let ((text-dst2 (the-as qword (+ (the-as int tex-dst) 16))) - (src-2 (the-as qword (&+ (the-as pointer src) 16))) - ) + (src-2 (the-as qword (&+ (the-as pointer src) 16)))) ;; copy second quadword, but only the first three words (set! (-> dst vector4w x) (the-as int (-> src-2 data 0))) (set! (-> dst vector4w y) (the-as int (-> src-2 data 1))) @@ -137,108 +103,94 @@ (dotimes (t0-4 3) (set! (-> dst quad) (-> src-3 quad)) (set! dst (the-as qword (+ (the-as int dst) 16))) - (set! src-3 (the-as qword (&+ (the-as pointer src-3) 16))) - ) + (set! src-3 (the-as qword (&+ (the-as pointer src-3) 16)))) ;; more texture data (isn't this reading off of the end of the source?) (set! (-> text-dst2 quad) (-> src-3 quad)) - ;; advance to next source (set! tex-dst (the-as qword (+ (the-as int text-dst2) 16))) - (set! src (the-as qword (&+ (the-as pointer src-3) 80))) - ) - ) - ) - ) - (none) - ) + (set! src (the-as qword (&+ (the-as pointer src-3) 80))))))) + (none)) (define *shrub-state* 0) (deftype shrub-near-packet (structure) - ((matrix-tmpl dma-packet :inline) - (header-tmpl dma-packet :inline) - (stq-tmpl dma-packet :inline) - (color-tmpl dma-packet :inline) - (vertex-tmpl dma-packet :inline) - (mscal-tmpl dma-packet :inline) - (init-tmpl dma-packet :inline) - (init-data uint32 8) - ) - ) - + ((matrix-tmpl dma-packet :inline) + (header-tmpl dma-packet :inline) + (stq-tmpl dma-packet :inline) + (color-tmpl dma-packet :inline) + (vertex-tmpl dma-packet :inline) + (mscal-tmpl dma-packet :inline) + (init-tmpl dma-packet :inline) + (init-data uint32 8))) (deftype instance-shrub-work (structure) - ((dummy qword 3 :inline) - (chaina qword 8 :inline) - (chainb qword 8 :inline) - (colors rgba 1024) - (matrix-tmpl qword 20 :inline) - (count-tmpl vector4w 20 :inline) - (mscalf-tmpl dma-packet :inline) - (mscalf-ret-tmpl dma-packet :inline) - (adgif-tmpl dma-gif-packet :inline) - (billboard-tmpl dma-gif-packet :inline) - (billboard-const vector :inline) - (shrub-near-packets shrub-near-packet 6 :inline) - (dma-ref dma-packet :inline) - (dma-end dma-packet :inline) - (wind-const vector :inline) - (constants vector :inline) - (color-constant vector4w :inline) - (hmge-d vector :inline) - (hvdf-offset vector :inline) - (wind-force vector :inline) - (color vector :inline) - (bb-color vector :inline) - (min-dist vector :inline) - (temp-vec vector :inline) - (guard-plane plane 4 :inline) - (plane plane 4 :inline) - (last uint32 4) - (next uint32 4) - (count uint16 4) - (mod-count uint16 4) - (wind-vectors uint32) - (instance-ptr uint32) - (chain-ptr uint32) - (chain-ptr-next uint32) - (stack-ptr uint32) - (bucket-ptr uint32) - (src-ptr uint32) - (to-spr uint32) - (from-spr uint32) - (shrub-count uint32) - (node uint32 6 :offset 6428) - (length uint32 6) - (prototypes uint32) - (start-bank uint8 20 :offset 6484) - (buffer-index uint32) - (current-spr uint32) - (current-mem uint32) - (current-shrub-near-packet uint32) - (dma-buffer basic :offset 6524) - (near-last uint32) - (near-next uint32) - (near-count uint32) - (last-shrubs uint32) - (chains uint32) - (flags uint32) - (paused basic) - (node-count uint32) - (inst-count uint32) - (wait-from-spr uint32) - (wait-to-spr uint32) - ) - ) - + ((dummy qword 3 :inline) + (chaina qword 8 :inline) + (chainb qword 8 :inline) + (colors rgba 1024) + (matrix-tmpl qword 20 :inline) + (count-tmpl vector4w 20 :inline) + (mscalf-tmpl dma-packet :inline) + (mscalf-ret-tmpl dma-packet :inline) + (adgif-tmpl dma-gif-packet :inline) + (billboard-tmpl dma-gif-packet :inline) + (billboard-const vector :inline) + (shrub-near-packets shrub-near-packet 6 :inline) + (dma-ref dma-packet :inline) + (dma-end dma-packet :inline) + (wind-const vector :inline) + (constants vector :inline) + (color-constant vector4w :inline) + (hmge-d vector :inline) + (hvdf-offset vector :inline) + (wind-force vector :inline) + (color vector :inline) + (bb-color vector :inline) + (min-dist vector :inline) + (temp-vec vector :inline) + (guard-plane plane 4 :inline) + (plane plane 4 :inline) + (last uint32 4) + (next uint32 4) + (count uint16 4) + (mod-count uint16 4) + (wind-vectors uint32) + (instance-ptr uint32) + (chain-ptr uint32) + (chain-ptr-next uint32) + (stack-ptr uint32) + (bucket-ptr uint32) + (src-ptr uint32) + (to-spr uint32) + (from-spr uint32) + (shrub-count uint32) + (node uint32 6 :offset 6428) + (length uint32 6) + (prototypes uint32) + (start-bank uint8 20 :offset 6484) + (buffer-index uint32) + (current-spr uint32) + (current-mem uint32) + (current-shrub-near-packet uint32) + (dma-buffer basic :offset 6524) + (near-last uint32) + (near-next uint32) + (near-count uint32) + (last-shrubs uint32) + (chains uint32) + (flags uint32) + (paused basic) + (node-count uint32) + (inst-count uint32) + (wait-from-spr uint32) + (wait-to-spr uint32))) (deftype instance-shrub-dma (structure) - ((instancea uint128 325) - (instanceb uint128 325) - (outa uint128 128) - (outb uint128 128) - ) - ) + ((instancea uint128 325) + (instanceb uint128 325) + (outa uint128 128) + (outb uint128 128))) (define-extern *instance-shrub-work* instance-shrub-work) + (define-extern draw-drawable-tree-instance-shrub (function drawable-tree-instance-shrub level none)) diff --git a/goal_src/jak1/engine/gfx/shrub/shrubbery.gc b/goal_src/jak1/engine/gfx/shrub/shrubbery.gc index ce734bf294..001785b320 100644 --- a/goal_src/jak1/engine/gfx/shrub/shrubbery.gc +++ b/goal_src/jak1/engine/gfx/shrub/shrubbery.gc @@ -1,77 +1,51 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/background/subdivide.gc") (require "engine/anim/joint.gc") (require "engine/draw/draw-node-h.gc") (require "engine/gfx/background/background.gc") (require "engine/collide/collide-shape-h.gc") - -;; name: shrubbery.gc -;; name in dgo: shrubbery -;; dgos: GAME, ENGINE - -(defmethod login billboard ((obj billboard)) +(defmethod login ((obj billboard)) "Set up the billboard adgif shader" (adgif-shader-login (-> obj flat)) - obj - ) + obj) -(defmethod mem-usage billboard ((obj billboard) (arg0 memory-usage-block) (arg1 int)) +(defmethod mem-usage ((obj billboard) (arg0 memory-usage-block) (arg1 int)) "Compute the memory used for the billboard." (set! (-> arg0 length) (max 34 (-> arg0 length))) (set! (-> arg0 data 33 name) "billboard") (+! (-> arg0 data 33 count) 1) - (let ((v1-6 (asize-of obj))) - (+! (-> arg0 data 33 used) v1-6) - (+! (-> arg0 data 33 total) (logand -16 (+ v1-6 15))) - ) - obj - ) + (let ((v1-6 (asize-of obj))) (+! (-> arg0 data 33 used) v1-6) (+! (-> arg0 data 33 total) (logand -16 (+ v1-6 15)))) + obj) (defun-recursive mem-usage-shrub-walk draw-node ((arg0 draw-node) (arg1 int) (arg2 memory-usage-block) (arg3 int)) "Recursively iterate through the entire shrub tree and compute memory usage for instances." (set! (-> arg2 length) (max 62 (-> arg2 length))) (set! (-> arg2 data 61 name) "draw-node") (+! (-> arg2 data 61 count) arg1) - (let ((v1-5 (* arg1 32))) - (+! (-> arg2 data 61 used) v1-5) - (+! (-> arg2 data 61 total) (logand -16 (+ v1-5 15))) - ) + (let ((v1-5 (* arg1 32))) (+! (-> arg2 data 61 used) v1-5) (+! (-> arg2 data 61 total) (logand -16 (+ v1-5 15)))) (let ((s2-0 arg0)) (dotimes (s1-0 arg1) (let ((a1-2 (-> s2-0 child-count))) (cond - ((logtest? (-> s2-0 flags) 1) - (mem-usage-shrub-walk (the-as draw-node (-> s2-0 child)) (the-as int a1-2) arg2 arg3) - ) + ((logtest? (-> s2-0 flags) 1) (mem-usage-shrub-walk (the-as draw-node (-> s2-0 child)) (the-as int a1-2) arg2 arg3)) (else - (set! (-> arg2 length) (max 35 (-> arg2 length))) - (set! (-> arg2 data 34 name) "instance-shrubbery") - (+! (-> arg2 data 34 count) a1-2) - (let ((v1-18 (* (the-as uint 80) a1-2))) - (+! (-> arg2 data 34 used) v1-18) - (+! (-> arg2 data 34 total) (logand -16 (+ v1-18 15))) - ) - ) - ) - ) - (&+! s2-0 32) - ) - ) - arg0 - ) - -(defmethod mem-usage drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub) (arg0 memory-usage-block) (arg1 int)) + (set! (-> arg2 length) (max 35 (-> arg2 length))) + (set! (-> arg2 data 34 name) "instance-shrubbery") + (+! (-> arg2 data 34 count) a1-2) + (let ((v1-18 (* (the-as uint 80) a1-2))) + (+! (-> arg2 data 34 used) v1-18) + (+! (-> arg2 data 34 total) (logand -16 (+ v1-18 15))))))) + (&+! s2-0 32))) + arg0) + +(defmethod mem-usage ((obj drawable-tree-instance-shrub) (arg0 memory-usage-block) (arg1 int)) "Compute memory usage for an entire shrub tree" (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) ;; time of day colors (when (nonzero? (-> obj colors-added)) (set! (-> arg0 length) (max 33 (-> arg0 length))) @@ -79,163 +53,127 @@ (+! (-> arg0 data 32 count) 1) (let ((v1-19 (asize-of (-> obj colors-added)))) (+! (-> arg0 data 32 used) v1-19) - (+! (-> arg0 data 32 total) (logand -16 (+ v1-19 15))) - ) - ) + (+! (-> arg0 data 32 total) (logand -16 (+ v1-19 15))))) ;; instance tree - (mem-usage-shrub-walk - (the-as draw-node (&+ (-> obj data 0) 32)) - (-> (the-as drawable-group (-> obj data 0)) length) - arg0 - arg1 - ) + (mem-usage-shrub-walk (the-as draw-node (&+ (-> obj data 0) 32)) + (-> (the-as drawable-group (-> obj data 0)) length) + arg0 + arg1) ;; prototypes (mem-usage (-> obj info prototype-inline-array-shrub) arg0 (logior arg1 1)) - obj - ) + obj) -(defmethod login generic-shrub-fragment ((obj generic-shrub-fragment)) +(defmethod login ((obj generic-shrub-fragment)) "Set up shaders in a generic shrub fragment" (let ((s5-0 (/ (-> obj cnt-qwc) (the-as uint 5)))) (dotimes (s4-0 (the-as int s5-0)) - (adgif-shader-login-no-remap (-> obj textures s4-0)) - ) - ) - obj - ) + (adgif-shader-login-no-remap (-> obj textures s4-0)))) + obj) -(defmethod mem-usage generic-shrub-fragment ((obj generic-shrub-fragment) (arg0 memory-usage-block) (arg1 int)) +(defmethod mem-usage ((obj generic-shrub-fragment) (arg0 memory-usage-block) (arg1 int)) "Compute memory usage of generic shrub fragment" (set! (-> arg0 length) (max 27 (-> arg0 length))) (set! (-> arg0 data 25 name) "generic-shrub") (+! (-> arg0 data 25 count) 1) ;; the actual fragment object - (let ((v1-6 (asize-of obj))) - (+! (-> arg0 data 25 used) v1-6) - (+! (-> arg0 data 25 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of obj))) (+! (-> arg0 data 25 used) v1-6) (+! (-> arg0 data 25 total) (logand -16 (+ v1-6 15)))) ;; the referenced data (set! (-> arg0 data 26 name) "generic-shrub-data") (+! (-> arg0 data 26 count) 1) (let ((v1-17 (* (+ (-> obj cnt-qwc) (-> obj vtx-qwc) (-> obj col-qwc) (-> obj stq-qwc)) 16))) (+! (-> arg0 data 26 used) v1-17) - (+! (-> arg0 data 26 total) (logand -16 (+ v1-17 15))) - ) - obj - ) + (+! (-> arg0 data 26 total) (logand -16 (+ v1-17 15)))) + obj) -(defmethod inspect prototype-shrubbery ((obj prototype-shrubbery)) +(defmethod inspect ((obj prototype-shrubbery)) "Inspect all prototypes in a prototype array." (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Tlength: ~D~%" (-> obj length)) (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 - ) + (format #t "~T [~D] ~A~%" s5-0 (-> obj data s5-0))) + obj) -(defmethod mem-usage prototype-shrubbery ((obj prototype-shrubbery) (arg0 memory-usage-block) (arg1 int)) +(defmethod mem-usage ((obj prototype-shrubbery) (arg0 memory-usage-block) (arg1 int)) "Compute memory usage of all prototypes in a prototype array." (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) (dotimes (s3-0 (-> obj length)) - (mem-usage (-> obj data s3-0) arg0 arg1) - ) - obj - ) + (mem-usage (-> obj data s3-0) arg0 arg1)) + obj) -(defmethod login prototype-shrubbery ((obj prototype-shrubbery)) +(defmethod login ((obj prototype-shrubbery)) "Login all prototypes in a prototype array" (dotimes (s5-0 (-> obj length)) - (login (-> obj data s5-0)) - ) - obj - ) + (login (-> obj data s5-0))) + obj) -(defmethod asize-of prototype-shrubbery ((obj prototype-shrubbery)) +(defmethod asize-of ((obj prototype-shrubbery)) "Compute the allocation size of a prototype shrubbery array (dynamically sized)" - (the-as int (+ (-> prototype-shrubbery size) (* (+ (-> obj length) -1) 32))) - ) + (the-as int (+ (-> prototype-shrubbery size) (* (+ (-> obj length) -1) 32)))) -(defmethod login prototype-generic-shrub ((obj prototype-generic-shrub)) +(defmethod login ((obj prototype-generic-shrub)) "Initialize all fragments in a generic prototype." (dotimes (s5-0 (-> obj length)) - (login (-> obj data s5-0)) - ) - obj - ) + (login (-> obj data s5-0))) + obj) -(defmethod login shrubbery ((obj shrubbery)) +(defmethod login ((obj shrubbery)) "Initialize a shrubbery fragment." (let ((s5-0 (* (-> obj header data 0) 2))) (dotimes (s4-0 (the-as int s5-0)) - (adgif-shader-login-no-remap (-> obj textures s4-0)) - ) - ) + (adgif-shader-login-no-remap (-> obj textures s4-0)))) (shrubbery-login-post-texture obj) - obj - ) + obj) -(defmethod mem-usage shrubbery ((obj shrubbery) (arg0 memory-usage-block) (arg1 int)) +(defmethod mem-usage ((obj shrubbery) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of a shrubbery fragment." (set! (-> arg0 length) (max 28 (-> arg0 length))) (set! (-> arg0 data 27 name) "shrubbery") (+! (-> arg0 data 27 count) 1) - (let ((v1-6 (asize-of obj))) - (+! (-> arg0 data 27 used) v1-6) - (+! (-> arg0 data 27 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of obj))) (+! (-> arg0 data 27 used) v1-6) (+! (-> arg0 data 27 total) (logand -16 (+ v1-6 15)))) (set! (-> arg0 length) (max 30 (-> arg0 length))) (set! (-> arg0 data 29 name) "shrubbery-vertex") (+! (-> arg0 data 29 count) 1) (let ((v1-16 (* (-> obj vtx-qwc) 16))) (+! (-> arg0 data 29 used) v1-16) - (+! (-> arg0 data 29 total) (logand -16 (+ v1-16 15))) - ) + (+! (-> arg0 data 29 total) (logand -16 (+ v1-16 15)))) (set! (-> arg0 length) (max 31 (-> arg0 length))) (set! (-> arg0 data 30 name) "shrubbery-color") (+! (-> arg0 data 30 count) 1) (let ((v1-26 (* (-> obj col-qwc) 16))) (+! (-> arg0 data 30 used) v1-26) - (+! (-> arg0 data 30 total) (logand -16 (+ v1-26 15))) - ) + (+! (-> arg0 data 30 total) (logand -16 (+ v1-26 15)))) (set! (-> arg0 length) (max 29 (-> arg0 length))) (set! (-> arg0 data 28 name) "shrubbery-object") (+! (-> arg0 data 28 count) 1) (let ((v1-36 (* (-> obj obj-qwc) 16))) (+! (-> arg0 data 28 used) v1-36) - (+! (-> arg0 data 28 total) (logand -16 (+ v1-36 15))) - ) + (+! (-> arg0 data 28 total) (logand -16 (+ v1-36 15)))) (set! (-> arg0 length) (max 32 (-> arg0 length))) (set! (-> arg0 data 31 name) "shrubbery-stq") (+! (-> arg0 data 31 count) 1) (let ((v1-46 (* (-> obj stq-qwc) 16))) (+! (-> arg0 data 31 used) v1-46) - (+! (-> arg0 data 31 total) (logand -16 (+ v1-46 15))) - ) - obj - ) + (+! (-> arg0 data 31 total) (logand -16 (+ v1-46 15)))) + obj) -(defmethod login drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub)) +(defmethod login ((obj drawable-tree-instance-shrub)) "Initialize a shrubbery tree." - (if (nonzero? (-> obj info prototype-inline-array-shrub)) - (login (-> obj info prototype-inline-array-shrub)) - ) - obj - ) + (if (nonzero? (-> obj info prototype-inline-array-shrub)) (login (-> obj info prototype-inline-array-shrub))) + obj) -(define shrub-vu1-block (new 'static 'vu-function #|:length #x26a :qlength #x135|#)) +(define shrub-vu1-block + (new 'static + 'vu-function + #| :length #x26a :qlength #x135 |# + )) (defun shrub-num-tris ((arg0 shrubbery)) "Get the number of triangles in a shrubbery fragment." - (- (-> arg0 header data 2) (* (-> arg0 header data 1) 2)) - ) + (- (-> arg0 header data 2) (* (-> arg0 header data 1) 2))) (defun shrub-make-perspective-matrix ((arg0 matrix)) "Compute the matrix used by the shrubbery VU1 program." @@ -244,19 +182,16 @@ (a1-1 (-> t0-0 vector 0 quad)) (a2-0 (-> t0-0 vector 1 quad)) (a3-0 (-> t0-0 vector 2 quad)) - (t0-1 (-> t0-0 vector 3 quad)) - ) + (t0-1 (-> t0-0 vector 3 quad))) (set! (-> v1-0 vector 0 quad) a1-1) (set! (-> v1-0 vector 1 quad) a2-0) (set! (-> v1-0 vector 2 quad) a3-0) - (set! (-> v1-0 vector 3 quad) t0-1) - ) + (set! (-> v1-0 vector 3 quad) t0-1)) (let ((f0-1 (/ 1.0 (-> *math-camera* pfog0)))) (set! (-> arg0 vector 0 w) (* (-> arg0 vector 0 w) f0-1)) (set! (-> arg0 vector 1 w) (* (-> arg0 vector 1 w) f0-1)) (set! (-> arg0 vector 2 w) (* (-> arg0 vector 2 w) f0-1)) - (set! (-> arg0 vector 3 w) (* (-> arg0 vector 3 w) f0-1)) - ) + (set! (-> arg0 vector 3 w) (* (-> arg0 vector 3 w) f0-1))) (+! (-> arg0 vector 0 x) (* (-> arg0 vector 0 w) (-> *math-camera* hvdf-off x))) (+! (-> arg0 vector 1 x) (* (-> arg0 vector 1 w) (-> *math-camera* hvdf-off x))) (+! (-> arg0 vector 2 x) (* (-> arg0 vector 2 w) (-> *math-camera* hvdf-off x))) @@ -269,19 +204,18 @@ (+! (-> arg0 vector 1 z) (* (-> arg0 vector 1 w) (-> *math-camera* hvdf-off z))) (+! (-> arg0 vector 2 z) (* (-> arg0 vector 2 w) (-> *math-camera* hvdf-off z))) (+! (-> arg0 vector 3 z) (* (-> arg0 vector 3 w) (-> *math-camera* hvdf-off z))) - arg0 - ) + arg0) (defun shrub-init-view-data ((arg0 shrub-view-data)) "Initialize shrubbery constants in place" (set! (-> arg0 texture-giftag tag) (new 'static 'gif-tag64 :nloop #x1 :nreg #x4)) - (set! (-> arg0 texture-giftag regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - ) - ) + (set! (-> arg0 texture-giftag regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d))) (set! (-> arg0 texture-giftag word 3) (the-as uint #x40a00000)) (set! (-> arg0 tex-start-ptr) (the-as int 25167696.0)) (set! (-> arg0 mtx-buf-ptr) (the-as int 8388608.0)) @@ -289,29 +223,23 @@ (set! (-> arg0 fog-1) (-> *math-camera* pfog1)) (set! (-> arg0 fog-min) (-> *math-camera* fog-min)) (set! (-> arg0 fog-max) (-> *math-camera* fog-max)) - #f - ) + #f) (defun shrub-upload-view-data ((arg0 dma-buffer)) "Generate DMA data to upload shrubbery constants to VU1." (let ((s5-0 3)) (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc s5-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num s5-0)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) (shrub-init-view-data (the-as shrub-view-data (-> arg0 base))) - (&+! (-> arg0 base) (* s5-0 16)) - ) - #f - ) + (&+! (-> arg0 base) (* s5-0 16))) + #f) (defun shrub-time ((arg0 int) (arg1 int) (arg2 int) (arg3 int) (arg4 int)) - (+ (* arg0 8) 29 (* 22 arg2) (* 11 arg1) (* (+ (* arg4 2) 15 (* 5 arg2) (* 13 arg0)) arg3) 53) - ) + (+ (* arg0 8) 29 (* 22 arg2) (* 11 arg1) (* (+ (* arg4 2) 15 (* 5 arg2) (* 13 arg0)) arg3) 53)) (defun shrub-do-init-frame ((arg0 dma-buffer)) "Generate DMA to initialize the shrubbery renderer on VU1." @@ -321,22 +249,18 @@ (shrub-upload-view-data arg0) ;; run program initialization function (let* ((v1-0 arg0) - (a0-3 (the-as object (-> v1-0 base))) - ) + (a0-3 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-3) vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm #x0)) (set! (-> (the-as dma-packet a0-3) vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-3) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-3) 16))) ;; initialize VIF for shrubbery chains. (let* ((v1-1 arg0) - (a0-5 (the-as object (-> v1-1 base))) - ) + (a0-5 (the-as object (-> v1-1 base)))) (set! (-> (the-as dma-packet a0-5) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-5) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-5) vif1) (new 'static 'vif-tag)) - (set! (-> v1-1 base) (&+ (the-as pointer a0-5) 16)) - ) + (set! (-> v1-1 base) (&+ (the-as pointer a0-5) 16))) (let ((v1-2 (-> arg0 base))) (set! (-> (the-as (pointer vif-tag) v1-2) 0) (new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1)) (set! (-> (the-as (pointer uint32) v1-2) 1) (the-as uint #x8080)) @@ -350,103 +274,84 @@ (set! (-> (the-as (pointer uint32) v1-2) 9) (the-as uint 4096)) (set! (-> (the-as (pointer vif-tag) v1-2) 10) (new 'static 'vif-tag :cmd (vif-cmd stmask))) (set! (-> (the-as (pointer uint32) v1-2) 11) (the-as uint #xa0a0a0a0)) - (set! (-> arg0 base) (&+ v1-2 48)) - ) + (set! (-> arg0 base) (&+ v1-2 48))) (set! *shrub-state* 2) - #f - ) + #f) (defun shrub-init-frame ((arg0 dma-buffer) (arg1 gs-test)) "Generate DMA to initialize to shrubbery renderer VU1 and GS." - ;; init VU1 (shrub-do-init-frame arg0) ;; init GS. (let* ((v1-0 arg0) - (a0-2 (the-as object (-> v1-0 base))) - ) + (a0-2 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer a0-2) 16)))) - ) + (set! (-> v1-0 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer a0-2) 16))))) (let* ((v1-1 arg0) - (a0-4 (the-as object (-> v1-1 base))) - ) + (a0-4 (the-as object (-> v1-1 base)))) (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-4) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16)) - ) + (set! (-> (the-as gs-gif-tag a0-4) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d) + :regs5 (gif-reg-id a+d) + :regs6 (gif-reg-id a+d) + :regs7 (gif-reg-id a+d) + :regs8 (gif-reg-id a+d) + :regs9 (gif-reg-id a+d) + :regs10 (gif-reg-id a+d) + :regs11 (gif-reg-id a+d) + :regs12 (gif-reg-id a+d) + :regs13 (gif-reg-id a+d) + :regs14 (gif-reg-id a+d) + :regs15 (gif-reg-id a+d))) + (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16))) (let ((v1-2 (-> arg0 base))) (set! (-> (the-as (pointer gs-test) v1-2) 0) arg1) (set! (-> (the-as (pointer gs-reg64) v1-2) 1) (gs-reg64 test-1)) - (set! (-> arg0 base) (&+ v1-2 16)) - ) - (none) - ) + (set! (-> arg0 base) (&+ v1-2 16))) + (none)) (defun shrub-upload-model ((arg0 shrubbery) (arg1 dma-buffer) (arg2 int)) "Generate DMA to upload a shrub model" (let* ((v1-0 arg1) - (a3-0 (the-as object (-> v1-0 base))) - ) + (a3-0 (the-as object (-> v1-0 base)))) ;; upload the data (set! (-> (the-as dma-packet a3-0) dma) - (new 'static 'dma-tag - :id (dma-tag-id ref) - :addr (-> arg0 obj) - :qwc (+ (-> arg0 obj-qwc) (-> arg0 vtx-qwc) (-> arg0 col-qwc) (-> arg0 stq-qwc)) - ) - ) + (new 'static + 'dma-tag + :id (dma-tag-id ref) + :addr (-> arg0 obj) + :qwc + (+ (-> arg0 obj-qwc) (-> arg0 vtx-qwc) (-> arg0 col-qwc) (-> arg0 stq-qwc)))) (set! (-> (the-as dma-packet a3-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd base) :imm *shrub-state*)) (set! (-> (the-as dma-packet a3-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd offset))) - (set! (-> v1-0 base) (&+ (the-as pointer a3-0) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a3-0) 16))) ;; run the program to init a model (cond ((= arg2 1) (let* ((v1-2 arg1) - (a0-9 (the-as object (-> v1-2 base))) - ) + (a0-9 (the-as object (-> v1-2 base)))) (set! (-> (the-as dma-packet a0-9) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-9) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-9) vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1 :imm #x11)) - (set! (-> v1-2 base) (&+ (the-as pointer a0-9) 16)) - ) - ) + (set! (-> v1-2 base) (&+ (the-as pointer a0-9) 16)))) (else - (let* ((v1-3 arg1) - (a0-11 (the-as object (-> v1-3 base))) - ) - (set! (-> (the-as dma-packet a0-11) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-11) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-11) vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1 :imm #x15)) - (set! (-> v1-3 base) (&+ (the-as pointer a0-11) 16)) - ) - ) - ) + (let* ((v1-3 arg1) + (a0-11 (the-as object (-> v1-3 base)))) + (set! (-> (the-as dma-packet a0-11) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-11) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-11) vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1 :imm #x15)) + (set! (-> v1-3 base) (&+ (the-as pointer a0-11) 16))))) ;; some data buffer thing. (set! *shrub-state* (- 164 *shrub-state*)) - #f - ) + #f) ;; TODO drawing... @@ -462,16 +367,13 @@ (when (logtest? *vu1-enable-user* (vu1-renderer-mask shrubbery shrub-near billboard trans-shrubbery)) (let* ((v1-13 (-> arg0 info prototype-inline-array-shrub)) (s4-0 (-> v1-13 length)) - (s3-0 (-> v1-13 data)) - ) + (s3-0 (-> v1-13 data))) (countdown (a1-2 s4-0) (let ((a2-3 (-> v1-13 data a1-2))) (set! (-> a2-3 next-clear) (the-as uint128 0)) (set! (-> a2-3 last-clear) (the-as uint128 0)) - (set! (-> a2-3 count-clear) (the-as uint 0)) - ) - 0 - ) + (set! (-> a2-3 count-clear) (the-as uint 0))) + 0) (let ((v1-19 (-> *display* frames (-> *display* on-screen) frame global-buf))) (when (nonzero? (-> arg0 length)) (let ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf base))) @@ -482,37 +384,24 @@ ; (-> (the-as drawable-group (-> arg0 data 0)) length) ; s3-0 ; ) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; NOTE: this part is completely rewritten for PC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (when (logtest? *vu1-enable-user* (vu1-renderer-mask shrubbery)) (let* ((s2-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s3-1 (-> s2-1 base)) - ) - (add-pc-tfrag3-data s2-1 (-> *level* data (-> (scratchpad-object terrain-context) bsp lev-index))) + (s3-1 (-> s2-1 base))) + (add-pc-tfrag3-data s2-1 (-> *level* data (-> (scratchpad-object terrain-context) bsp lev-index))) (let ((a3-22 (-> s2-1 base))) (let ((v1-57 (the-as object (-> s2-1 base)))) (set! (-> (the-as dma-packet v1-57) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-57) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-57) vif1) (new 'static 'vif-tag)) - (set! (-> s2-1 base) (&+ (the-as pointer v1-57) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (the-as bucket-id (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) - (bucket-id shrub0) - (bucket-id shrub1) - ) - ) - s3-1 - (the-as (pointer dma-tag) a3-22) - ) - ) - ) - ) - + (set! (-> s2-1 base) (&+ (the-as pointer v1-57) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (the-as bucket-id + (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) (bucket-id shrub0) (bucket-id shrub1))) + s3-1 + (the-as (pointer dma-tag) a3-22))))) (read! (-> *perf-stats* data (perf-stat-bucket inst-shrub))) (reset! (-> *perf-stats* data (perf-stat-bucket proto-shrub))) ; (draw-prototype-inline-array-shrub s4-0 s3-0) @@ -523,126 +412,79 @@ (set! (-> v1-28 data 27 name) "shrubbery") (+! (-> v1-28 data 27 count) 1) (+! (-> v1-28 data 27 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s5-0)) - ) - (set! (-> v1-28 data 27 total) (-> v1-28 data 27 used)) - ) - ) - ) - ) - ) - ) - (update-wait-stats - (-> *perf-stats* data (perf-stat-bucket inst-shrub)) - (the-as uint 0) - (-> *instance-shrub-work* wait-to-spr) - (-> *instance-shrub-work* wait-from-spr) - ) - (set! (-> arg1 closest-object 2) (-> *instance-shrub-work* min-dist x)) - ) + (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s5-0))) + (set! (-> v1-28 data 27 total) (-> v1-28 data 27 used)))))))) + (update-wait-stats (-> *perf-stats* data (perf-stat-bucket inst-shrub)) + (the-as uint 0) + (-> *instance-shrub-work* wait-to-spr) + (-> *instance-shrub-work* wait-from-spr)) + (set! (-> arg1 closest-object 2) (-> *instance-shrub-work* min-dist x))) 0 - (none) - ) + (none)) -(defmethod draw drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub) (arg0 drawable-tree-instance-shrub) (arg1 display-frame)) +(defmethod draw ((obj drawable-tree-instance-shrub) (arg0 drawable-tree-instance-shrub) (arg1 display-frame)) (let* ((v1-1 (-> *background-work* shrub-tree-count)) (a1-2 (-> (scratchpad-object terrain-context) bsp lev-index)) - (a1-5 (-> *level* level a1-2)) - ) + (a1-5 (-> *level* level a1-2))) (set! (-> *background-work* shrub-trees v1-1) obj) - (set! (-> *background-work* shrub-levels v1-1) a1-5) - ) + (set! (-> *background-work* shrub-levels v1-1) a1-5)) (+! (-> *background-work* shrub-tree-count) 1) - (none) - ) + (none)) -(defmethod unpack-vis drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub) (arg0 (pointer int8)) (arg1 (pointer int8))) - arg1 - ) +(defmethod unpack-vis ((obj drawable-tree-instance-shrub) (arg0 (pointer int8)) (arg1 (pointer int8))) + arg1) -(defmethod collect-stats drawable-tree-instance-shrub ((obj drawable-tree-instance-shrub)) +(defmethod collect-stats ((obj drawable-tree-instance-shrub)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask shrubbery shrub-near billboard trans-shrubbery)) (let* ((v1-3 (-> obj info prototype-inline-array-shrub)) - (gp-0 (the-as object (-> v1-3 data))) - ) + (gp-0 (the-as object (-> v1-3 data)))) (countdown (s5-0 (-> v1-3 length)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask shrub-near)) (let ((v1-7 (-> (the-as prototype-bucket-shrub gp-0) count 0)) - (a1-0 (-> (the-as prototype-bucket-shrub gp-0) geometry 0)) - ) + (a1-0 (-> (the-as prototype-bucket-shrub gp-0) geometry 0))) (when (nonzero? v1-7) (let ((a0-2 (-> (the-as drawable-group a1-0) length))) (+! (-> *terrain-stats* shrub groups) 1) - (+! (-> *terrain-stats* shrub fragments) (* a0-2 (the-as int v1-7))) - ) - (+! (-> *terrain-stats* shrub instances) v1-7) - ) - ) - ) + (+! (-> *terrain-stats* shrub fragments) (* a0-2 (the-as int v1-7)))) + (+! (-> *terrain-stats* shrub instances) v1-7)))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask shrubbery)) (let ((s4-0 (-> (the-as prototype-bucket-shrub gp-0) count 1)) - (v1-12 (-> (the-as prototype-bucket-shrub gp-0) geometry 1)) - ) + (v1-12 (-> (the-as prototype-bucket-shrub gp-0) geometry 1))) (when (nonzero? s4-0) (let ((s3-0 (&+ v1-12 32)) - (s2-0 (-> (the-as drawable-group v1-12) length)) - ) + (s2-0 (-> (the-as drawable-group v1-12) length))) (+! (-> *terrain-stats* shrub groups) 1) (+! (-> *terrain-stats* shrub fragments) s2-0) (+! (-> *terrain-stats* shrub instances) s4-0) (while (nonzero? s2-0) (+! s2-0 -1) (let ((a0-13 (* (shrub-num-tris (the-as shrubbery s3-0)) s4-0)) - (v1-24 (* (-> (the-as shrubbery s3-0) header data 2) s4-0)) - ) + (v1-24 (* (-> (the-as shrubbery s3-0) header data 2) s4-0))) (+! (-> *terrain-stats* shrub tris) a0-13) - (+! (-> *terrain-stats* shrub dverts) v1-24) - ) - (&+! s3-0 32) - ) - ) - ) - ) - ) + (+! (-> *terrain-stats* shrub dverts) v1-24)) + (&+! s3-0 32)))))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-shrubbery)) (let ((s4-1 (-> (the-as prototype-bucket-shrub gp-0) count 2)) - (v1-30 (-> (the-as prototype-bucket-shrub gp-0) geometry 2)) - ) + (v1-30 (-> (the-as prototype-bucket-shrub gp-0) geometry 2))) (when (nonzero? s4-1) (let ((s3-1 (&+ v1-30 32)) - (s2-1 (-> (the-as drawable-group v1-30) length)) - ) + (s2-1 (-> (the-as drawable-group v1-30) length))) (+! (-> *terrain-stats* trans-shrub groups) 1) (+! (-> *terrain-stats* trans-shrub fragments) s2-1) (+! (-> *terrain-stats* trans-shrub instances) s4-1) (while (nonzero? s2-1) (+! s2-1 -1) (let ((a0-24 (* (shrub-num-tris (the-as shrubbery s3-1)) s4-1)) - (v1-42 (* (-> (the-as shrubbery s3-1) header data 2) s4-1)) - ) + (v1-42 (* (-> (the-as shrubbery s3-1) header data 2) s4-1))) (+! (-> *terrain-stats* trans-shrub tris) a0-24) - (+! (-> *terrain-stats* trans-shrub dverts) v1-42) - ) - (&+! s3-1 32) - ) - ) - ) - ) - ) + (+! (-> *terrain-stats* trans-shrub dverts) v1-42)) + (&+! s3-1 32)))))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask billboard)) (let ((v1-48 (-> (the-as prototype-bucket-shrub gp-0) count 3))) (when (nonzero? v1-48) (+! (-> *terrain-stats* billboard groups) 1) (+! (-> *terrain-stats* billboard instances) v1-48) (+! (-> *terrain-stats* billboard tris) (* v1-48 2)) - (+! (-> *terrain-stats* billboard dverts) (* v1-48 4)) - ) - ) - ) - (set! gp-0 (-> (the-as (inline-array prototype-bucket-shrub) gp-0) 1)) - ) - ) - ) - (none) - ) - + (+! (-> *terrain-stats* billboard dverts) (* v1-48 4))))) + (set! gp-0 (-> (the-as (inline-array prototype-bucket-shrub) gp-0) 1))))) + (none)) diff --git a/goal_src/jak1/engine/gfx/sky/sky-h.gc b/goal_src/jak1/engine/gfx/sky/sky-h.gc index d034a5427d..fe2f831c29 100644 --- a/goal_src/jak1/engine/gfx/sky/sky-h.gc +++ b/goal_src/jak1/engine/gfx/sky/sky-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/trigonometry.gc") -;; name: sky-h.gc -;; name in dgo: sky-h -;; dgos: GAME, ENGINE - ;; the "sky" system draws the sky and determines colors for lights. ;; each level has 8 skies that are interpolated between. @@ -16,19 +11,14 @@ ;; represents the skies that are used during a single hour. ;; there can be 1 or 2 skies used. (deftype sky-color-hour (structure) - ((snapshot1 int32) - (snapshot2 int32) - (morph-start float) - (morph-end float) - ) - ) - + ((snapshot1 int32) + (snapshot2 int32) + (morph-start float) + (morph-end float))) ;; a sky-color-hour for each hour of the day. (deftype sky-color-day (structure) - ((hour sky-color-hour 24 :inline) - ) - ) + ((hour sky-color-hour 24 :inline))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Old Sky Renderer @@ -40,82 +30,61 @@ ;; these stores points on a squashed circle (xy only) (deftype sky-circle-data (structure) - ((data vector 17 :inline) - ) - ) - + ((data vector 17 :inline))) ;; sun particle tracks this (deftype sky-sun-data (structure) - ((data uint128 4) - (pos vector :inline :overlay-at (-> data 0)) - (r-sun float :overlay-at (-> data 1)) - (r-halo float :offset 20) - (r-aurora float :offset 24) - (c-sun-start rgba :overlay-at (-> data 2)) - (c-sun-end rgba :overlay-at (-> data 3)) - (c-halo-start rgba :offset 36) - (c-halo-end rgba :offset 52) - (c-aurora-start rgba :offset 40) - (c-aurora-end rgba :offset 56) - ) - ) - + ((data uint128 4) + (pos vector :inline :overlay-at (-> data 0)) + (r-sun float :overlay-at (-> data 1)) + (r-halo float :offset 20) + (r-aurora float :offset 24) + (c-sun-start rgba :overlay-at (-> data 2)) + (c-sun-end rgba :overlay-at (-> data 3)) + (c-halo-start rgba :offset 36) + (c-halo-end rgba :offset 52) + (c-aurora-start rgba :offset 40) + (c-aurora-end rgba :offset 56))) ;; moon particle tracks this (deftype sky-moon-data (structure) - ((data uint128 2) - (pos vector :inline :overlay-at (-> data 0)) - (scale vector :inline :overlay-at (-> data 1)) - ) - ) - + ((data uint128 2) + (pos vector :inline :overlay-at (-> data 0)) + (scale vector :inline :overlay-at (-> data 1)))) ;; parameters for the sun/moon motion. (deftype sky-orbit (structure) - ((high-noon float) - (tilt float) - (rise float) - (dist float) - (min-halo float) - (max-halo float) - ) - :allow-misaligned - ) - + ((high-noon float) + (tilt float) + (rise float) + (dist float) + (min-halo float) + (max-halo float)) + :allow-misaligned) ;; sky data to send to old sky renderer. (deftype sky-upload-data (basic) - ((circle sky-circle-data :inline) - (sun sky-sun-data 2 :inline) - (moon sky-moon-data :inline) - (data uint128 27 :overlay-at (-> circle data)) - ) - ) - + ((circle sky-circle-data :inline) + (sun sky-sun-data 2 :inline) + (moon sky-moon-data :inline) + (data uint128 27 :overlay-at (-> circle data)))) ;; all sky data. This has a copy of sky-upload-data that's used by the new sky renderer. (deftype sky-parms (basic) - ((orbit sky-orbit 3 :inline) - (upload-data sky-upload-data :inline) - (sun-lights light-group :inline) - (moon-lights light-group :inline) - (default-lights light-group :inline) - (default-vu-lights vu-lights :inline) - ) + ((orbit sky-orbit 3 :inline) + (upload-data sky-upload-data :inline) + (sun-lights light-group :inline) + (moon-lights light-group :inline) + (default-lights light-group :inline) + (default-vu-lights vu-lights :inline)) (:methods - (new (symbol type) _type_) - ) - ) - + (new (symbol type) _type_))) (defmethod new sky-parms ((allocation symbol) (type-to-make type)) "allocate a new sky-parms" (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> v0-0 upload-data type) sky-upload-data) - v0-0 - ) - ) + v0-0)) (define *sky-parms* (new 'global 'sky-parms)) @@ -126,54 +95,48 @@ (dotimes (gp-0 17) (let ((f30-0 (+ MINUS_PI (* 0.39269906 (the float (logand gp-0 15)))))) (set! (-> *sky-upload-data* circle data gp-0 x) (* 2.2 (sin-rad f30-0))) - (set! (-> *sky-upload-data* circle data gp-0 y) (cos-rad f30-0)) - ) + (set! (-> *sky-upload-data* circle data gp-0 y) (cos-rad f30-0))) (set! (-> *sky-upload-data* circle data gp-0 z) 0.0) - (set! (-> *sky-upload-data* circle data gp-0 w) 0.0) - ) + (set! (-> *sky-upload-data* circle data gp-0 w) 0.0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; new sky renderer (TNG) ;;;;;;;;;;;;;;;;;;;;;;;;;;; (deftype sky-tng-data (basic) - ((giftag-base gs-gif-tag :inline) - (giftag-roof gs-gif-tag :inline) - (giftag-ocean gs-gif-tag :inline) - (fog vector :inline) - (sky uint32 8) - (time float) - (off-s-0 uint16) - (off-t-0 uint16) - (off-s-1 uint16) - (off-t-1 uint16) - ) - ) - + ((giftag-base gs-gif-tag :inline) + (giftag-roof gs-gif-tag :inline) + (giftag-ocean gs-gif-tag :inline) + (fog vector :inline) + (sky uint32 8) + (time float) + (off-s-0 uint16) + (off-t-0 uint16) + (off-s-1 uint16) + (off-t-1 uint16))) (deftype sky-work (structure) - ((adgif-tmpl dma-gif-packet :inline) - (draw-tmpl dma-gif-packet :inline) - (blend-tmpl dma-gif-packet :inline) - (sky-data qword 5 :inline) - (cloud-data qword 5 :inline) - ) - ) - + ((adgif-tmpl dma-gif-packet :inline) + (draw-tmpl dma-gif-packet :inline) + (blend-tmpl dma-gif-packet :inline) + (sky-data qword 5 :inline) + (cloud-data qword 5 :inline))) (deftype sky-vertex (structure) - ((pos vector :inline) - (stq vector :inline) - (col vector :inline) - ) - ) - + ((pos vector :inline) + (stq vector :inline) + (col vector :inline))) ;; the sky renderer writes sky and cloud textures to vram - these booleans tell you if ;; it has done this, and if the sky/cloud textures should be used. (define *sky-drawn* #f) + (define *cloud-drawn* #f) + (declare-type time-of-day-context basic) + (define-extern update-sky-tng-data (function float none)) + (define-extern make-sky-textures (function time-of-day-context int none)) + (define-extern sky-base-polygons (inline-array sky-vertex)) diff --git a/goal_src/jak1/engine/gfx/sky/sky-tng.gc b/goal_src/jak1/engine/gfx/sky/sky-tng.gc index f17c3eebc6..5e0fd8a593 100644 --- a/goal_src/jak1/engine/gfx/sky/sky-tng.gc +++ b/goal_src/jak1/engine/gfx/sky/sky-tng.gc @@ -1,136 +1,144 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/gfx/mood/time-of-day-h.gc") (require "engine/ps2/vu1-macros.gc") (require "engine/math/vector.gc") (require "engine/gfx/sky/sky.gc") -;; name: sky-tng.gc -;; name in dgo: sky-tng -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define *sky-work* - (new 'static 'sky-work - ;; usual 5x a+d - :adgif-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif0 (new 'static 'gif-tag64 :nloop #x5 :eop #x1 :nreg #x1) - :gif1 (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)) - ) - ;; sprite with texture - :draw-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif0 (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :fst #x1) - :nreg #x5 - ) - :gif1 (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id uv) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id uv) - :regs4 (gif-reg-id xyzf2) - ) - ) - ;; sprite with texture and abe (alpha blend enable) - :blend-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif0 (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1) - :nreg #x5 - ) - :gif1 (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id uv) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id uv) - :regs4 (gif-reg-id xyzf2) - ) - ) - :sky-data (new 'static 'inline-array qword 5 - (new 'static 'qword :data (new 'static 'array uint32 4 #x0 #x0 #x0 #x80)) - (new 'static 'qword) - (new 'static 'qword :data (new 'static 'array uint32 4 #x0 #x0 #xffffff #x0)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x200 #x200 #x0 #x0)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x200 #x200 #xffffff #x0)) - ) - :cloud-data (new 'static 'inline-array qword 5 - (new 'static 'qword :data (new 'static 'array uint32 4 #x0 #x0 #x0 #x80)) - (new 'static 'qword) - (new 'static 'qword :data (new 'static 'array uint32 4 #x0 #x200 #xffffff #x0)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x400 #x400 #x0 #x0)) - (new 'static 'qword :data (new 'static 'array uint32 4 #x400 #x600 #xffffff #x0)) - ) - ) - ) + (new 'static + 'sky-work + ;; usual 5x a+d + :adgif-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif0 + (new 'static 'gif-tag64 :nloop #x5 :eop #x1 :nreg #x1) + :gif1 + (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) + ;; sprite with texture + :draw-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif0 + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :fst #x1) + :nreg #x5) + :gif1 + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id uv) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id uv) + :regs4 (gif-reg-id xyzf2))) + ;; sprite with texture and abe (alpha blend enable) + :blend-tmpl + (new 'static + 'dma-gif-packet + :dma-vif + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 + (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) + :gif0 + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1) + :nreg #x5) + :gif1 + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id uv) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id uv) + :regs4 (gif-reg-id xyzf2))) + :sky-data + (new 'static + 'inline-array + qword + 5 + (new 'static 'qword :data (new 'static 'array uint32 4 #x0 #x0 #x0 #x80)) + (new 'static 'qword) + (new 'static 'qword :data (new 'static 'array uint32 4 #x0 #x0 #xffffff #x0)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x200 #x200 #x0 #x0)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x200 #x200 #xffffff #x0))) + :cloud-data + (new 'static + 'inline-array + qword + 5 + (new 'static 'qword :data (new 'static 'array uint32 4 #x0 #x0 #x0 #x80)) + (new 'static 'qword) + (new 'static 'qword :data (new 'static 'array uint32 4 #x0 #x200 #xffffff #x0)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x400 #x400 #x0 #x0)) + (new 'static 'qword :data (new 'static 'array uint32 4 #x400 #x600 #xffffff #x0))))) (defun init-sky-tng-data ((arg0 sky-tng-data)) "Set up giftags and constants in a sky-tng data" (set! (-> arg0 giftag-base tag) - (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan)) - :nreg #x3 - ) - ) + (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan)) :nreg #x3)) (set! (-> arg0 giftag-base regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 giftag-roof tag) - (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) - :nreg #x3 - ) - ) + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1) + :nreg #x3)) (set! (-> arg0 giftag-roof regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 giftag-ocean tag) - (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3)) (set! (-> arg0 giftag-ocean regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 time) 0.0) (set! (-> arg0 off-s-0) (the-as uint 0)) (set! (-> arg0 off-t-0) (the-as uint 0)) (set! (-> arg0 off-s-1) (the-as uint 0)) (set! (-> arg0 off-t-1) (the-as uint 0)) 0 - (none) - ) - + (none)) ;; create our sky data (define *sky-tng-data* (new 'global 'sky-tng-data)) @@ -142,8 +150,7 @@ (format #t "~TPos: [~F ~F ~F ~F]~%" (-> this pos x) (-> this pos y) (-> this pos z) (-> this pos w)) (format #t "~TSTQ: [~F ~F ~F ~F]~%" (-> this stq x) (-> this stq y) (-> this stq z) (-> this stq w)) (format #t "~TCol: [~F ~F ~F ~F]~%" (-> this col x) (-> this col y) (-> this col z) (-> this col w)) - this - ) + this) (defun update-sky-tng-data ((arg0 float)) (sky-make-sun-data *sky-parms* 0 arg0) @@ -155,19 +162,11 @@ (+! (-> v1-0 off-s-0) (* 16.0 DISPLAY_FPS_RATIO)) (+! (-> v1-0 off-t-0) (* 32.0 DISPLAY_FPS_RATIO)) (+! (-> v1-0 off-s-1) (* -21.0 DISPLAY_FPS_RATIO)) - (+! (-> v1-0 off-t-1) (* 42.0 DISPLAY_FPS_RATIO)) - ) - (else - (+! (-> v1-0 off-s-0) 16) - (+! (-> v1-0 off-t-0) 32) - (+! (-> v1-0 off-s-1) -21) - (+! (-> v1-0 off-t-1) 42) - )) - (set! (-> v1-0 time) arg0) - ) + (+! (-> v1-0 off-t-1) (* 42.0 DISPLAY_FPS_RATIO))) + (else (+! (-> v1-0 off-s-0) 16) (+! (-> v1-0 off-t-0) 32) (+! (-> v1-0 off-s-1) -21) (+! (-> v1-0 off-t-1) 42))) + (set! (-> v1-0 time) arg0)) 0 - (none) - ) + (none)) #| (defun init-sky-regs () @@ -230,7 +229,9 @@ ;; The init-sky-regs stashes some stuff in vf regs. We are going to stash that stuff in C++, not the usual registers ;; because everything that uses this is in MIPS2C anyway. (def-mips2c init-sky-regs (function none)) + (def-mips2c set-sky-vf27 (function object none)) + (def-mips2c set-sky-vf23-value (function int none)) #| @@ -261,6 +262,7 @@ ;; we do need to expose 2 functions: (def-mips2c render-sky-quad (function int dma-buffer none)) + (def-mips2c render-sky-tri (function (inline-array sky-vertex) dma-buffer none)) ; there's also a sky-duplicate-polys but it's never used. @@ -268,236 +270,314 @@ (defun close-sky-buffer ((arg0 dma-buffer)) (nop!) (let ((v1-0 #x8000) - (v0-0 (-> arg0 base)) - ) + (v0-0 (-> arg0 base))) (set! (-> (the-as (pointer int128) v0-0)) (the int128 0)) (nop!) (set! (-> (the-as (pointer int32) v0-0)) v1-0) (let ((v0-1 (&+ v0-0 16))) ;; to save like 1 instruction they put this in the delay slot of the jr-ra ;;(.jr ra-0) - (set! (-> arg0 base) v0-1) - ) - ) - (none) - ) + (set! (-> arg0 base) v0-1))) + (none)) -(define sky-base-polygons (new 'static 'inline-array sky-vertex 12 - (new 'static 'sky-vertex - :pos (new 'static 'vector :z -40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :x 40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :y -40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :x 40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :z 40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :y -40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :z 40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :x -40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :y -40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :x -40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :z -40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :y -40960000.0) - :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0) - ) - ) - ) +(define sky-base-polygons + (new 'static + 'inline-array + sky-vertex + 12 + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :z -40960000.0) + :col + (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static 'sky-vertex :pos (new 'static 'vector :x 40960000.0) :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :y -40960000.0) + :col + (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static 'sky-vertex :pos (new 'static 'vector :x 40960000.0) :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static 'sky-vertex :pos (new 'static 'vector :z 40960000.0) :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :y -40960000.0) + :col + (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static 'sky-vertex :pos (new 'static 'vector :z 40960000.0) :col (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :x -40960000.0) + :col + (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :y -40960000.0) + :col + (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :x -40960000.0) + :col + (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :z -40960000.0) + :col + (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :y -40960000.0) + :col + (new 'static 'vector :x 3.0 :y 18.0 :z 113.0 :w 128.0)))) -(define sky-roof-polygons (new 'static 'inline-array sky-vertex 12 - (new 'static 'sky-vertex - :pos (new 'static 'vector :z -40960000.0) - :stq (new 'static 'vector :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :x 40960000.0) - :stq (new 'static 'vector :x 1.0 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :y 10240000.0) - :stq (new 'static 'vector :x 0.5 :y 0.5 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :x 40960000.0) - :stq (new 'static 'vector :x 1.0 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :z 40960000.0) - :stq (new 'static 'vector :x 1.0 :y 1.0 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :y 10240000.0) - :stq (new 'static 'vector :x 0.5 :y 0.5 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :z 40960000.0) - :stq (new 'static 'vector :x 1.0 :y 1.0 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :x -40960000.0) - :stq (new 'static 'vector :y 1.0 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :y 10240000.0) - :stq (new 'static 'vector :x 0.5 :y 0.5 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :x -40960000.0) - :stq (new 'static 'vector :y 1.0 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :z -40960000.0) - :stq (new 'static 'vector :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - (new 'static 'sky-vertex - :pos (new 'static 'vector :y 10240000.0) - :stq (new 'static 'vector :x 0.5 :y 0.5 :z 1.0) - :col (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0) - ) - ) - ) +(define sky-roof-polygons + (new 'static + 'inline-array + sky-vertex + 12 + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :z -40960000.0) + :stq + (new 'static 'vector :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :x 40960000.0) + :stq + (new 'static 'vector :x 1.0 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :y 10240000.0) + :stq + (new 'static 'vector :x 0.5 :y 0.5 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :x 40960000.0) + :stq + (new 'static 'vector :x 1.0 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :z 40960000.0) + :stq + (new 'static 'vector :x 1.0 :y 1.0 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :y 10240000.0) + :stq + (new 'static 'vector :x 0.5 :y 0.5 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :z 40960000.0) + :stq + (new 'static 'vector :x 1.0 :y 1.0 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :x -40960000.0) + :stq + (new 'static 'vector :y 1.0 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :y 10240000.0) + :stq + (new 'static 'vector :x 0.5 :y 0.5 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :x -40960000.0) + :stq + (new 'static 'vector :y 1.0 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :z -40960000.0) + :stq + (new 'static 'vector :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)) + (new 'static + 'sky-vertex + :pos + (new 'static 'vector :y 10240000.0) + :stq + (new 'static 'vector :x 0.5 :y 0.5 :z 1.0) + :col + (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)))) -(define sky-cloud-polygons (new 'static 'inline-array sky-vertex 72 - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - (new 'static 'sky-vertex) - ) - ) +(define sky-cloud-polygons + (new 'static + 'inline-array + sky-vertex + 72 + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex) + (new 'static 'sky-vertex))) -(define sky-cloud-polygon-indices (new 'static 'array uint8 48 - #x0 #x1 #x9 #x8 - #x1 #x2 #xa #x9 - #x2 #x3 #xb #xa - #x3 #x0 #x8 #xb - #x8 #x9 #x5 #x4 - #x9 #xa #x6 #x5 - #xa #xb #x7 #x6 - #xb #x8 #x4 #x7 - #x4 #x5 #x6 #x7 - #x0 #x0 #x0 #x0 - #x0 #x0 #x0 #x0 - #x0 #x0 #x0 #x0 - ) - ) +(define sky-cloud-polygon-indices + (new 'static + 'array + uint8 + 48 + #x0 + #x1 + #x9 + #x8 + #x1 + #x2 + #xa + #x9 + #x2 + #x3 + #xb + #xa + #x3 + #x0 + #x8 + #xb + #x8 + #x9 + #x5 + #x4 + #x9 + #xa + #x6 + #x5 + #xa + #xb + #x7 + #x6 + #xb + #x8 + #x4 + #x7 + #x4 + #x5 + #x6 + #x7 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0 + #x0)) (defun sky-tng-setup-cloud-layer ((arg0 float) (arg1 float) (arg2 vector) (arg3 (inline-array sky-vertex))) (let ((f28-0 (sqrtf (- 1.0 (* arg0 arg0)))) (f26-0 (sqrtf (- 1.0 (* arg1 arg1)))) - (s5-0 (new 'stack-no-clear 'inline-array 'sky-vertex 12)) - ) + (s5-0 (new 'stack-no-clear 'inline-array 'sky-vertex 12))) (dotimes (s1-0 12) - ((method-of-type sky-vertex new) (the-as symbol (-> s5-0 s1-0)) sky-vertex) - ) + ((method-of-type sky-vertex new) (the-as symbol (-> s5-0 s1-0)) sky-vertex)) (let ((f30-0 0.5)) (let ((f9-0 -22.0) (f10-0 22.0) @@ -510,8 +590,7 @@ (f1-4 -2.0) (f2-2 2.0) (f4-0 -2.0) - (f0-4 2.0) - ) + (f0-4 2.0)) 0.0 1.0 -1.0 @@ -521,34 +600,29 @@ (f15-1 (/ (- f4-0 f11-0) (- f8-0 f11-0))) (f14-3 (/ (- f0-4 f11-0) (- f8-0 f11-0))) (f3-7 (+ f6-0 (* f3-5 (- f7-0 f6-0)))) - (f5-4 (+ f6-0 (* f5-2 (- f7-0 f6-0)))) - ) + (f5-4 (+ f6-0 (* f5-2 (- f7-0 f6-0))))) (+ f12-0 (* f15-1 (- f13-0 f12-0))) (+ f12-0 (* f14-3 (- f13-0 f12-0))) (let ((v1-5 (-> s5-0 0))) (set! (-> v1-5 pos x) f9-0) (set! (-> v1-5 pos y) 0.0) (set! (-> v1-5 pos z) f11-0) - (set! (-> v1-5 pos w) 0.0) - ) + (set! (-> v1-5 pos w) 0.0)) (let ((v1-6 (-> s5-0 1))) (set! (-> v1-6 pos x) f10-0) (set! (-> v1-6 pos y) 0.0) (set! (-> v1-6 pos z) f11-0) - (set! (-> v1-6 pos w) 0.0) - ) + (set! (-> v1-6 pos w) 0.0)) (let ((v1-7 (-> s5-0 2))) (set! (-> v1-7 pos x) f10-0) (set! (-> v1-7 pos y) 0.0) (set! (-> v1-7 pos z) f8-0) - (set! (-> v1-7 pos w) 0.0) - ) + (set! (-> v1-7 pos w) 0.0)) (let ((v1-8 (-> s5-0 3))) (set! (-> v1-8 pos x) f9-0) (set! (-> v1-8 pos y) 0.0) (set! (-> v1-8 pos z) f8-0) - (set! (-> v1-8 pos w) 0.0) - ) + (set! (-> v1-8 pos w) 0.0)) (set-vector! (-> s5-0 0 stq) f6-0 f6-0 1.0 1.0) (set-vector! (-> s5-0 1 stq) f7-0 f6-0 1.0 1.0) (set-vector! (-> s5-0 2 stq) f7-0 f7-0 1.0 1.0) @@ -557,167 +631,124 @@ (set! (-> v1-13 pos x) f1-4) (set! (-> v1-13 pos y) 1.0) (set! (-> v1-13 pos z) f4-0) - (set! (-> v1-13 pos w) 0.0) - ) + (set! (-> v1-13 pos w) 0.0)) (let ((v1-14 (-> s5-0 5))) (set! (-> v1-14 pos x) f2-2) (set! (-> v1-14 pos y) 1.0) (set! (-> v1-14 pos z) f4-0) - (set! (-> v1-14 pos w) 0.0) - ) + (set! (-> v1-14 pos w) 0.0)) (let ((v1-15 (-> s5-0 6))) (set! (-> v1-15 pos x) f2-2) (set! (-> v1-15 pos y) 1.0) (set! (-> v1-15 pos z) f0-4) - (set! (-> v1-15 pos w) 0.0) - ) + (set! (-> v1-15 pos w) 0.0)) (let ((v1-16 (-> s5-0 7))) (set! (-> v1-16 pos x) f1-4) (set! (-> v1-16 pos y) 1.0) (set! (-> v1-16 pos z) f0-4) - (set! (-> v1-16 pos w) 0.0) - ) + (set! (-> v1-16 pos w) 0.0)) (set-vector! (-> s5-0 4 stq) f3-7 f3-7 1.0 1.0) (set-vector! (-> s5-0 5 stq) f5-4 f3-7 1.0 1.0) (set-vector! (-> s5-0 6 stq) f5-4 f5-4 1.0 1.0) - (set-vector! (-> s5-0 7 stq) f3-7 f5-4 1.0 1.0) - ) - ) + (set-vector! (-> s5-0 7 stq) f3-7 f5-4 1.0 1.0))) (dotimes (v1-21 4) (let ((f0-14 (-> s5-0 v1-21 pos x)) - (f1-6 (-> s5-0 v1-21 pos z)) - ) + (f1-6 (-> s5-0 v1-21 pos z))) (set! (-> s5-0 v1-21 pos x) (+ (* f0-14 f26-0) (* f1-6 arg1))) - (set! (-> s5-0 v1-21 pos z) (- (* f1-6 f26-0) (* f0-14 arg1))) - ) + (set! (-> s5-0 v1-21 pos z) (- (* f1-6 f26-0) (* f0-14 arg1)))) (set! (-> s5-0 v1-21 col quad) (-> arg2 quad)) - (set! (-> s5-0 v1-21 col w) 0.0) - ) + (set! (-> s5-0 v1-21 col w) 0.0)) (dotimes (v1-24 4) (let ((f0-18 (-> s5-0 (+ v1-24 4) pos x)) - (f1-8 (-> s5-0 (+ v1-24 4) pos z)) - ) + (f1-8 (-> s5-0 (+ v1-24 4) pos z))) (set! (-> s5-0 (+ v1-24 4) pos x) (+ (* f0-18 f28-0) (* f1-8 arg0))) - (set! (-> s5-0 (+ v1-24 4) pos z) (- (* f1-8 f28-0) (* f0-18 arg0))) - ) - (set! (-> s5-0 (+ v1-24 4) col quad) (-> arg2 quad)) - ) + (set! (-> s5-0 (+ v1-24 4) pos z) (- (* f1-8 f28-0) (* f0-18 arg0)))) + (set! (-> s5-0 (+ v1-24 4) col quad) (-> arg2 quad))) (dotimes (s3-1 4) - (vector4-lerp! - (the-as vector (-> s5-0 (+ s3-1 8))) - (the-as vector (-> s5-0 s3-1)) - (the-as vector (-> s5-0 (+ s3-1 4))) - f30-0 - ) + (vector4-lerp! (the-as vector (-> s5-0 (+ s3-1 8))) + (the-as vector (-> s5-0 s3-1)) + (the-as vector (-> s5-0 (+ s3-1 4))) + f30-0) (vector4-lerp! (-> s5-0 (+ s3-1 8) stq) (-> s5-0 s3-1 stq) (-> s5-0 (+ s3-1 4) stq) f30-0) - (set! (-> s5-0 (+ s3-1 8) col quad) (-> arg2 quad)) - ) - ) + (set! (-> s5-0 (+ s3-1 8) col quad) (-> arg2 quad)))) (dotimes (v1-51 36) (let ((a0-47 (-> sky-cloud-polygon-indices v1-51))) (set! (-> arg3 v1-51 pos quad) (-> s5-0 a0-47 pos quad)) (set! (-> arg3 v1-51 stq quad) (-> s5-0 a0-47 stq quad)) - (set! (-> arg3 v1-51 col quad) (-> s5-0 a0-47 col quad)) - ) - ) - ) + (set! (-> arg3 v1-51 col quad) (-> s5-0 a0-47 col quad))))) 0 - (none) - ) + (none)) (defun sky-tng-setup-clouds () (let ((a2-0 (new 'static 'vector :x 20.0 :y 20.0 :z 20.0 :w 128.0)) - (gp-0 (new 'static 'vector :x 20.0 :y 20.0 :z 30.0 :w 128.0)) - ) + (gp-0 (new 'static 'vector :x 20.0 :y 20.0 :z 30.0 :w 128.0))) (sky-tng-setup-cloud-layer 0.0 0.0 a2-0 sky-cloud-polygons) - (sky-tng-setup-cloud-layer 0.05584 0.01396 gp-0 (the-as (inline-array sky-vertex) (-> sky-cloud-polygons 36))) - ) + (sky-tng-setup-cloud-layer 0.05584 0.01396 gp-0 (the-as (inline-array sky-vertex) (-> sky-cloud-polygons 36)))) 0 - (none) - ) + (none)) (sky-tng-setup-clouds) (defun render-sky-tng ((arg0 time-of-day-context)) (local-vars (v1-84 float)) (rlet ((vf23 :class vf) - (vf27 :class vf) - ) + (vf27 :class vf)) (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))) (let ((gp-0 (-> *display* frames (-> *display* on-screen) frame global-buf base))) (let* ((s4-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s5-0 (-> s4-0 base)) - ) + (s5-0 (-> s4-0 base))) (let* ((v1-14 s4-0) - (a0-11 (the-as object (-> v1-14 base))) - ) + (a0-11 (the-as object (-> v1-14 base)))) (set! (-> (the-as dma-packet a0-11) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-11) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-11) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-14 base) (&+ (the-as pointer a0-11) 16)) - ) + (set! (-> v1-14 base) (&+ (the-as pointer a0-11) 16))) (let* ((v1-15 s4-0) - (a0-13 (the-as object (-> v1-15 base))) - ) + (a0-13 (the-as object (-> v1-15 base)))) (set! (-> (the-as gs-gif-tag a0-13) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) (set! (-> (the-as gs-gif-tag a0-13) regs) GIF_REGS_ALL_AD) - (set! (-> v1-15 base) (&+ (the-as pointer a0-13) 16)) - ) + (set! (-> v1-15 base) (&+ (the-as pointer a0-13) 16))) (let* ((v1-16 s4-0) - (a0-15 (-> v1-16 base)) - ) + (a0-15 (-> v1-16 base))) (set! (-> (the-as (pointer gs-zbuf) a0-15) 0) (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) (set! (-> (the-as (pointer gs-reg64) a0-15) 1) (gs-reg64 zbuf-1)) (set! (-> (the-as (pointer gs-test) a0-15) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) (set! (-> (the-as (pointer gs-reg64) a0-15) 3) (gs-reg64 test-1)) (set! (-> (the-as (pointer gs-alpha) a0-15) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) (set! (-> (the-as (pointer gs-reg64) a0-15) 5) (gs-reg64 alpha-1)) - (set! (-> v1-16 base) (&+ a0-15 48)) - ) + (set! (-> v1-16 base) (&+ a0-15 48))) (init-sky-regs) ;;(.lvf vf27 (&-> *sky-tng-data* giftag-roof qword)) (set-sky-vf27 (&-> *sky-tng-data* giftag-roof qword)) (when *sky-drawn* (let* ((v1-20 s4-0) - (a0-17 (the-as object (-> v1-20 base))) - ) + (a0-17 (the-as object (-> v1-20 base)))) (set! (-> (the-as dma-packet a0-17) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-17) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-17) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-17) 16)) - ) + (set! (-> v1-20 base) (&+ (the-as pointer a0-17) 16))) (let* ((v1-21 s4-0) - (a0-19 (the-as object (-> v1-21 base))) - ) + (a0-19 (the-as object (-> v1-21 base)))) (set! (-> (the-as gs-gif-tag a0-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) (set! (-> (the-as gs-gif-tag a0-19) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-19) 16)) - ) + (set! (-> v1-21 base) (&+ (the-as pointer a0-19) 16))) (let* ((s3-0 s4-0) - (s2-0 (-> s3-0 base)) - ) + (s2-0 (-> s3-0 base))) (set! (-> (the-as (pointer gs-tex0) s2-0) 0) - (new 'static 'gs-tex0 :tbw #x1 :th (log2 32) :tw (log2 32) :tbp0 *sky-base-block*) - ) + (new 'static 'gs-tex0 :tbw #x1 :th (log2 32) :tw (log2 32) :tbp0 *sky-base-block*)) (set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 tex0-1)) (set! (-> (the-as (pointer gs-tex1) s2-0) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) (set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 tex1-1)) (set! (-> (the-as (pointer gs-clamp) s2-0) 4) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) (set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 clamp-1)) (set! (-> (the-as (pointer uint64) s2-0) 6) (the-as uint 0)) (set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 texflush)) - (set! (-> s3-0 base) (&+ s2-0 64)) - ) + (set! (-> s3-0 base) (&+ s2-0 64))) (let ((s3-1 (the-as object (-> s4-0 base)))) (&+! (-> s4-0 base) 16) (render-sky-tri (the-as (inline-array sky-vertex) (-> sky-roof-polygons 0)) s4-0) @@ -728,34 +759,25 @@ (let ((v1-46 (/ (the-as int (+ (- -16 (the-as int s3-1)) (the-as int (-> s4-0 base)))) 16))) (set! (-> (the-as dma-packet s3-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc v1-46)) (set! (-> (the-as dma-packet s3-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet s3-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-46)) - ) - ) - ) + (set! (-> (the-as dma-packet s3-1) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-46))))) (when *cloud-drawn* (let* ((v1-52 s4-0) - (a0-32 (the-as object (-> v1-52 base))) - ) + (a0-32 (the-as object (-> v1-52 base)))) (set! (-> (the-as dma-packet a0-32) dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-32) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-32) vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-52 base) (&+ (the-as pointer a0-32) 16)) - ) + (set! (-> v1-52 base) (&+ (the-as pointer a0-32) 16))) (let* ((v1-53 s4-0) - (a0-34 (the-as object (-> v1-53 base))) - ) + (a0-34 (the-as object (-> v1-53 base)))) (set! (-> (the-as gs-gif-tag a0-34) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5)) (set! (-> (the-as gs-gif-tag a0-34) regs) GIF_REGS_ALL_AD) - (set! (-> v1-53 base) (&+ (the-as pointer a0-34) 16)) - ) + (set! (-> v1-53 base) (&+ (the-as pointer a0-34) 16))) (let* ((s3-2 s4-0) - (s2-1 (-> s3-2 base)) - ) + (s2-1 (-> s3-2 base))) (set! (-> (the-as (pointer gs-alpha) s2-1) 0) (new 'static 'gs-alpha :b #x2 :d #x1)) (set! (-> (the-as (pointer gs-reg64) s2-1) 1) (gs-reg64 alpha-1)) (set! (-> (the-as (pointer gs-tex0) s2-1) 2) - (new 'static 'gs-tex0 :tbw #x1 :th (log2 64) :tw (log2 64) :tbp0 (+ *sky-base-block* 32)) - ) + (new 'static 'gs-tex0 :tbw #x1 :th (log2 64) :tw (log2 64) :tbp0 (+ *sky-base-block* 32))) (set! (-> (the-as (pointer gs-reg64) s2-1) 3) (gs-reg64 tex0-1)) (set! (-> (the-as (pointer gs-tex1) s2-1) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) (set! (-> (the-as (pointer gs-reg64) s2-1) 5) (gs-reg64 tex1-1)) @@ -763,8 +785,7 @@ (set! (-> (the-as (pointer gs-reg64) s2-1) 7) (gs-reg64 clamp-1)) (set! (-> (the-as (pointer int64) s2-1) 8) 0) (set! (-> (the-as (pointer gs-reg64) s2-1) 9) (gs-reg64 texflush)) - (set! (-> s3-2 base) (&+ s2-1 80)) - ) + (set! (-> s3-2 base) (&+ s2-1 80))) (let ((s3-3 (the-as object (-> s4-0 base)))) (&+! (-> s4-0 base) 16) (init-sky-regs) @@ -773,15 +794,12 @@ ;; first cloud layer (dotimes (s1-4 9) (render-sky-quad (the-as int s2-2) s4-0) - (set! s2-2 (-> (the-as (inline-array sky-vertex) s2-2) 4)) - ) + (set! s2-2 (-> (the-as (inline-array sky-vertex) s2-2) 4))) (set-tex-offset (the-as int (-> *sky-tng-data* off-s-1)) (the-as int (-> *sky-tng-data* off-t-1))) ;; second cloud layer (dotimes (s1-5 9) (render-sky-quad (the-as int s2-2) s4-0) - (set! s2-2 (-> (the-as (inline-array sky-vertex) s2-2) 4)) - ) - ) + (set! s2-2 (-> (the-as (inline-array sky-vertex) s2-2) 4)))) ;;(.lvf vf27 (&-> *sky-tng-data* giftag-base qword)) ;; these draw stuff below the horizon (set-sky-vf27 (&-> *sky-tng-data* giftag-base qword)) @@ -799,194 +817,128 @@ (let ((v1-92 (/ (the-as int (+ (- -16 (the-as int s3-3)) (the-as int (-> s4-0 base)))) 16))) (set! (-> (the-as dma-packet s3-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc v1-92)) (set! (-> (the-as dma-packet s3-3) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet s3-3) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-92)) - ) - ) - ) + (set! (-> (the-as dma-packet s3-3) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-92))))) (let ((a3-0 (-> s4-0 base))) (let ((v1-96 (the-as object (-> s4-0 base)))) (set! (-> (the-as dma-packet v1-96) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-96) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-96) vif1) (new 'static 'vif-tag)) - (set! (-> s4-0 base) (&+ (the-as pointer v1-96) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id sky-draw) - s5-0 - (the-as (pointer dma-tag) a3-0) - ) - ) - ) + (set! (-> s4-0 base) (&+ (the-as pointer v1-96) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id sky-draw) + s5-0 + (the-as (pointer dma-tag) a3-0)))) (let ((v1-101 *dma-mem-usage*)) (when (nonzero? v1-101) (set! (-> v1-101 length) (max 86 (-> v1-101 length))) (set! (-> v1-101 data 85 name) "sky") (+! (-> v1-101 data 85 count) 1) (+! (-> v1-101 data 85 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint gp-0)) - ) - (set! (-> v1-101 data 85 total) (-> v1-101 data 85 used)) - ) - ) - ) + (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint gp-0))) + (set! (-> v1-101 data 85 total) (-> v1-101 data 85 used))))) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #xff :b #xff :a #x80))) 0 - (none) - ) - ) + (none))) (defun copy-sky-texture ((arg0 dma-buffer) (arg1 adgif-shader) (arg2 float)) (let ((s5-0 (-> arg0 base))) (let ((v1-0 (the int (+ 0.5 (* 128.0 arg2)))) - (a0-2 (-> *sky-work* sky-data)) - ) + (a0-2 (-> *sky-work* sky-data))) (set! (-> a0-2 0 vector4w x) v1-0) (set! (-> a0-2 0 vector4w y) v1-0) (set! (-> a0-2 0 vector4w z) v1-0) - (set! (-> a0-2 0 vector4w w) 128) - ) + (set! (-> a0-2 0 vector4w w) 128)) (set! (-> (the-as (pointer uint128) s5-0) 0) (-> *sky-work* adgif-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) s5-0) 1) (-> *sky-work* adgif-tmpl quad 1)) (let ((s4-0 (the-as object (&-> (the-as (pointer uint128) s5-0) 2)))) (quad-copy! (the-as (pointer uint128) s4-0) (the-as pointer arg1) 5) (set! (-> (the-as adgif-shader s4-0) clamp) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as adgif-shader s4-0) alpha) (new 'static 'gs-alpha :b #x2 :c #x2 :d #x1 :fix #x80)) - ) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (set! (-> (the-as adgif-shader s4-0) alpha) (new 'static 'gs-alpha :b #x2 :c #x2 :d #x1 :fix #x80))) (cond (*sky-drawn* - (set! (-> (the-as (pointer uint128) s5-0) 7) (-> *sky-work* blend-tmpl dma-vif quad)) - (set! (-> (the-as (pointer uint128) s5-0) 8) (-> *sky-work* blend-tmpl quad 1)) - ) + (set! (-> (the-as (pointer uint128) s5-0) 7) (-> *sky-work* blend-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) s5-0) 8) (-> *sky-work* blend-tmpl quad 1))) (else - (set! (-> (the-as (pointer uint128) s5-0) 7) (-> *sky-work* draw-tmpl dma-vif quad)) - (set! (-> (the-as (pointer uint128) s5-0) 8) (-> *sky-work* draw-tmpl quad 1)) - (set! *sky-drawn* #t) - ) - ) + (set! (-> (the-as (pointer uint128) s5-0) 7) (-> *sky-work* draw-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) s5-0) 8) (-> *sky-work* draw-tmpl quad 1)) + (set! *sky-drawn* #t))) (quad-copy! (&+ s5-0 144) (the-as pointer (-> *sky-work* sky-data)) 5) - (set! (-> arg0 base) (&+ s5-0 224)) - ) - (none) - ) + (set! (-> arg0 base) (&+ s5-0 224))) + (none)) (defun copy-cloud-texture ((arg0 dma-buffer) (arg1 adgif-shader) (arg2 float)) (let ((s5-0 (-> arg0 base))) (let ((v1-0 (the int (+ 0.5 (* 128.0 arg2)))) - (a0-2 (-> *sky-work* cloud-data)) - ) + (a0-2 (-> *sky-work* cloud-data))) (set! (-> a0-2 0 vector4w x) v1-0) (set! (-> a0-2 0 vector4w y) v1-0) (set! (-> a0-2 0 vector4w z) v1-0) - (set! (-> a0-2 0 vector4w w) 128) - ) + (set! (-> a0-2 0 vector4w w) 128)) (set! (-> (the-as (pointer uint128) s5-0) 0) (-> *sky-work* adgif-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) s5-0) 1) (-> *sky-work* adgif-tmpl quad 1)) (let ((s4-0 (the-as object (&-> (the-as (pointer uint128) s5-0) 2)))) (quad-copy! (the-as (pointer uint128) s4-0) (the-as pointer arg1) 5) (set! (-> (the-as adgif-shader s4-0) clamp) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as adgif-shader s4-0) alpha) (new 'static 'gs-alpha :b #x2 :c #x2 :d #x1 :fix #x80)) - ) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (set! (-> (the-as adgif-shader s4-0) alpha) (new 'static 'gs-alpha :b #x2 :c #x2 :d #x1 :fix #x80))) (cond (*cloud-drawn* - (set! (-> (the-as (pointer uint128) s5-0) 7) (-> *sky-work* blend-tmpl dma-vif quad)) - (set! (-> (the-as (pointer uint128) s5-0) 8) (-> *sky-work* blend-tmpl quad 1)) - ) + (set! (-> (the-as (pointer uint128) s5-0) 7) (-> *sky-work* blend-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) s5-0) 8) (-> *sky-work* blend-tmpl quad 1))) (else - (set! (-> (the-as (pointer uint128) s5-0) 7) (-> *sky-work* draw-tmpl dma-vif quad)) - (set! (-> (the-as (pointer uint128) s5-0) 8) (-> *sky-work* draw-tmpl quad 1)) - (set! *cloud-drawn* #t) - ) - ) + (set! (-> (the-as (pointer uint128) s5-0) 7) (-> *sky-work* draw-tmpl dma-vif quad)) + (set! (-> (the-as (pointer uint128) s5-0) 8) (-> *sky-work* draw-tmpl quad 1)) + (set! *cloud-drawn* #t))) (quad-copy! (&+ s5-0 144) (the-as pointer (-> *sky-work* cloud-data)) 5) - (set! (-> arg0 base) (&+ s5-0 224)) - ) - (none) - ) + (set! (-> arg0 base) (&+ s5-0 224))) + (none)) (defun make-sky-textures ((arg0 time-of-day-context) (arg1 int)) (when (and (= (-> *level* level arg1 status) 'active) (-> *level* level arg1 info sky)) (let ((f30-0 (-> arg0 current-interp))) - (if (zero? arg1) - (set! f30-0 (- 1.0 f30-0)) - ) - (if (= (-> arg0 active-count) 1) - (set! f30-0 1.0) - ) + (if (zero? arg1) (set! f30-0 (- 1.0 f30-0))) + (if (= (-> arg0 active-count) 1) (set! f30-0 1.0)) (when (!= f30-0 0.0) - (let ((gp-0 (if (zero? arg1) - 32 - 39 - ) - ) - (s1-0 (-> *level* level arg1 bsp adgifs)) - ) + (let ((gp-0 (if (zero? arg1) 32 39)) + (s1-0 (-> *level* level arg1 bsp adgifs))) (when (nonzero? s1-0) (let* ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s3-0 (-> s2-0 base)) - ) + (s3-0 (-> s2-0 base))) (set-display-gs-state s2-0 *sky-base-page* 64 96 0 0) (dotimes (s0-0 8) (let ((f0-3 (* (-> arg0 moods arg1 sky-times s0-0) f30-0))) - (if (!= f0-3 0.0) - (copy-sky-texture s2-0 (-> s1-0 data s0-0) f0-3) - ) - ) - ) + (if (!= f0-3 0.0) (copy-sky-texture s2-0 (-> s1-0 data s0-0) f0-3)))) (copy-cloud-texture s2-0 (-> s1-0 data 8) f30-0) (let* ((v1-31 s2-0) - (a0-19 (the-as object (-> v1-31 base))) - ) + (a0-19 (the-as object (-> v1-31 base)))) (set! (-> (the-as dma-packet a0-19) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-19) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-19) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-31 base) (&+ (the-as pointer a0-19) 16)) - ) + (set! (-> v1-31 base) (&+ (the-as pointer a0-19) 16))) (let* ((v1-32 s2-0) - (a0-21 (the-as object (-> v1-32 base))) - ) + (a0-21 (the-as object (-> v1-32 base)))) (set! (-> (the-as gs-gif-tag a0-21) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-21) regs) GIF_REGS_ALL_AD) - (set! (-> v1-32 base) (&+ (the-as pointer a0-21) 16)) - ) + (set! (-> v1-32 base) (&+ (the-as pointer a0-21) 16))) (let* ((v1-33 s2-0) - (a0-23 (-> v1-33 base)) - ) + (a0-23 (-> v1-33 base))) (set! (-> (the-as (pointer gs-alpha) a0-23) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) (set! (-> (the-as (pointer gs-reg64) a0-23) 1) (gs-reg64 alpha-1)) - (set! (-> v1-33 base) (&+ a0-23 16)) - ) + (set! (-> v1-33 base) (&+ a0-23 16))) (reset-display-gs-state *display* s2-0 *oddeven*) (let ((a3-1 (-> s2-0 base))) (let ((v1-34 (the-as object (-> s2-0 base)))) (set! (-> (the-as dma-packet v1-34) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-34) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-34) vif1) (new 'static 'vif-tag)) - (set! (-> s2-0 base) (&+ (the-as pointer v1-34) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (the-as bucket-id gp-0) - s3-0 - (the-as (pointer dma-tag) a3-1) - ) - ) - ) - ) - ) - ) - ) - ) + (set! (-> s2-0 base) (&+ (the-as pointer v1-34) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (the-as bucket-id gp-0) + s3-0 + (the-as (pointer dma-tag) a3-1))))))))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/sky/sky-utils.gc b/goal_src/jak1/engine/gfx/sky/sky-utils.gc index 8e227f0caf..14df1a9dde 100644 --- a/goal_src/jak1/engine/gfx/sky/sky-utils.gc +++ b/goal_src/jak1/engine/gfx/sky/sky-utils.gc @@ -1,57 +1,41 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/sky/sky-h.gc") - -;; name: sky-utils.gc -;; name in dgo: sky-utils -;; dgos: GAME, ENGINE - (defun sky-set-sun-radii ((arg0 sky-parms) (arg1 int) (arg2 float) (arg3 float) (arg4 float)) (let ((v1-0 (logand arg1 1))) - (set! (-> arg0 upload-data sun v1-0 r-sun) arg2) - (set! (-> arg0 upload-data sun v1-0 r-halo) arg3) - (set! (-> arg0 upload-data sun v1-0 r-aurora) arg4) - ) - #f - ) + (set! (-> arg0 upload-data sun v1-0 r-sun) arg2) + (set! (-> arg0 upload-data sun v1-0 r-halo) arg3) + (set! (-> arg0 upload-data sun v1-0 r-aurora) arg4)) + #f) (defun sky-set-sun-colors ((arg0 sky-parms) (arg1 int) (arg2 rgba) (arg3 rgba) (arg4 rgba) (arg5 rgba)) (let ((v1-0 (logand arg1 1))) - (set! (-> arg0 upload-data sun v1-0 c-sun-start) arg2) - (set! (-> arg0 upload-data sun v1-0 c-sun-end) arg3) - (set! (-> arg0 upload-data sun v1-0 c-halo-start) arg3) - (set! (-> arg0 upload-data sun v1-0 c-halo-end) arg4) - (set! (-> arg0 upload-data sun v1-0 c-aurora-start) arg4) - (set! (-> arg0 upload-data sun v1-0 c-aurora-end) arg5) - ) - #f - ) + (set! (-> arg0 upload-data sun v1-0 c-sun-start) arg2) + (set! (-> arg0 upload-data sun v1-0 c-sun-end) arg3) + (set! (-> arg0 upload-data sun v1-0 c-halo-start) arg3) + (set! (-> arg0 upload-data sun v1-0 c-halo-end) arg4) + (set! (-> arg0 upload-data sun v1-0 c-aurora-start) arg4) + (set! (-> arg0 upload-data sun v1-0 c-aurora-end) arg5)) + #f) (defun sky-set-sun-colors-sun ((arg0 sky-parms) (arg1 int) (arg2 rgba) (arg3 rgba)) (let ((v1-0 (logand arg1 1))) - (set! (-> arg0 upload-data sun v1-0 c-sun-start) arg2) - (set! (-> arg0 upload-data sun v1-0 c-sun-end) arg3) - ) - #f - ) + (set! (-> arg0 upload-data sun v1-0 c-sun-start) arg2) + (set! (-> arg0 upload-data sun v1-0 c-sun-end) arg3)) + #f) (defun sky-set-sun-colors-halo ((arg0 sky-parms) (arg1 int) (arg2 rgba) (arg3 rgba)) (let ((v1-0 (logand arg1 1))) - (set! (-> arg0 upload-data sun v1-0 c-halo-start) arg2) - (set! (-> arg0 upload-data sun v1-0 c-halo-end) arg3) - ) - #f - ) + (set! (-> arg0 upload-data sun v1-0 c-halo-start) arg2) + (set! (-> arg0 upload-data sun v1-0 c-halo-end) arg3)) + #f) (defun sky-set-sun-colors-aurora ((arg0 sky-parms) (arg1 int) (arg2 rgba) (arg3 rgba)) (let ((v1-0 (logand arg1 1))) - (set! (-> arg0 upload-data sun v1-0 c-aurora-start) arg2) - (set! (-> arg0 upload-data sun v1-0 c-aurora-end) arg3) - ) - #f - ) + (set! (-> arg0 upload-data sun v1-0 c-aurora-start) arg2) + (set! (-> arg0 upload-data sun v1-0 c-aurora-end) arg3)) + #f) (defun sky-set-orbit ((arg0 sky-parms) (arg1 int) (arg2 float) (arg3 float) (arg4 float) (arg5 float) (arg6 float) (arg7 float)) (set! (-> arg0 orbit arg1 high-noon) arg2) @@ -60,5 +44,4 @@ (set! (-> arg0 orbit arg1 dist) arg5) (set! (-> arg0 orbit arg1 min-halo) arg6) (set! (-> arg0 orbit arg1 max-halo) arg7) - #f - ) + #f) diff --git a/goal_src/jak1/engine/gfx/sky/sky.gc b/goal_src/jak1/engine/gfx/sky/sky.gc index ac7713612f..4cfff539c5 100644 --- a/goal_src/jak1/engine/gfx/sky/sky.gc +++ b/goal_src/jak1/engine/gfx/sky/sky.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/lights-h.gc") (require "engine/gfx/sky/sky-utils.gc") -;; name: sky.gc -;; name in dgo: sky -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun sky-make-sun-data ((arg0 sky-parms) (arg1 int) (arg2 float)) @@ -18,31 +13,18 @@ (f0-1 (- arg2 (-> s4-0 high-noon))) (f30-0 (* 2730.6667 f0-1)) (f28-0 (* (sin f30-0) (-> s4-0 dist))) - (f30-1 (cos f30-0)) - ) + (f30-1 (cos f30-0))) (let* ((f24-0 (* f30-1 (-> s4-0 dist))) (f26-0 (* f24-0 (cos-rad (-> s4-0 tilt)))) (f24-1 (* f24-0 (sin-rad (-> s4-0 tilt)))) (f22-0 (sin-rad (-> s4-0 rise))) - (f0-10 (cos-rad (-> s4-0 rise))) - ) + (f0-10 (cos-rad (-> s4-0 rise)))) (set! (-> s3-0 pos z) (- (+ (* f28-0 f0-10) (* f24-1 f22-0)))) (set! (-> s3-0 pos y) f26-0) - (set! (-> s3-0 pos x) (- (* f24-1 f0-10) (* f28-0 f22-0))) - ) - (let ((f0-14 (if (< f30-1 0.0) - 0.0 - f30-1 - ) - ) - ) - (set! (-> arg0 upload-data sun arg1 r-aurora) - (+ (* (-> s4-0 min-halo) (- 1.0 f0-14)) (* (-> s4-0 max-halo) f0-14)) - ) - ) - ) - (none) - ) + (set! (-> s3-0 pos x) (- (* f24-1 f0-10) (* f28-0 f22-0)))) + (let ((f0-14 (if (< f30-1 0.0) 0.0 f30-1))) + (set! (-> arg0 upload-data sun arg1 r-aurora) (+ (* (-> s4-0 min-halo) (- 1.0 f0-14)) (* (-> s4-0 max-halo) f0-14))))) + (none)) (defun sky-make-moon-data ((arg0 sky-parms) (arg1 float)) "Make moon data for moon at arg1 time" @@ -55,20 +37,11 @@ (f28-1 (* f26-0 (cos-rad (-> s5-0 tilt)))) (f26-1 (* f26-0 (sin-rad (-> s5-0 tilt)))) (f24-0 (sin-rad (-> s5-0 rise))) - (f0-10 (cos-rad (-> s5-0 rise))) - ) + (f0-10 (cos-rad (-> s5-0 rise)))) (set! (-> gp-0 pos z) (- (+ (* f30-0 f0-10) (* f26-1 f24-0)))) (set! (-> gp-0 pos y) f28-1) - (set! (-> gp-0 pos x) (- (* f26-1 f0-10) (* f30-0 f24-0))) - ) - (none) - ) - - - - - - + (set! (-> gp-0 pos x) (- (* f26-1 f0-10) (* f30-0 f24-0)))) + (none)) ;;;;;;;;;;;;;;;;;;;;; ;; Old Sky Renderer @@ -76,15 +49,10 @@ (defun sky-make-light ((arg0 sky-parms) (arg1 light) (arg2 int) (arg3 rgba)) (let* ((v1-2 (-> arg0 orbit arg2)) - (a0-1 (if (= arg2 2) - (-> arg0 upload-data moon) - (-> arg0 upload-data sun arg2) - ) - ) + (a0-1 (if (= arg2 2) (-> arg0 upload-data moon) (-> arg0 upload-data sun arg2))) (f0-0 0.003921569) (f1-1 (/ 1.0 (-> v1-2 dist))) - (v1-3 arg1) - ) + (v1-3 arg1)) (set! (-> v1-3 direction x) (* (-> (the-as sky-sun-data a0-1) pos x) f1-1)) (set! (-> v1-3 direction y) (* (-> (the-as sky-sun-data a0-1) pos y) f1-1)) (set! (-> v1-3 direction z) (* (-> (the-as sky-sun-data a0-1) pos z) f1-1)) @@ -92,30 +60,25 @@ (set! (-> v1-3 color y) (* (the float (-> arg3 g)) f0-0)) (set! (-> v1-3 color z) (* (the float (-> arg3 b)) f0-0)) (set! (-> v1-3 color w) 1.0) - (set! (-> v1-3 levels x) 1.0) - ) - (none) - ) - + (set! (-> v1-3 levels x) 1.0)) + (none)) (deftype sky-frame-data (structure) - ((data uint128 18) - (world-homo-matrix matrix :inline :overlay-at (-> data 0)) - (hmge-scale vector :inline :overlay-at (-> data 4)) - (hvdf-offset vector :inline :overlay-at (-> data 5)) - (consts vector :inline :overlay-at (-> data 6)) - (pfog0 float :overlay-at (-> data 6)) - (radius float :overlay-at (-> consts y)) - (nokick float :overlay-at (-> consts w)) - (strip-giftag qword :inline :overlay-at (-> data 7)) - (col-adgif qword :inline :overlay-at (-> data 8)) - (save uint128 5 :overlay-at (-> data 9)) - (sun-fan-giftag qword :inline :overlay-at (-> data 14)) - (sun-strip-giftag qword :inline :overlay-at (-> data 15)) - (sun-alpha qword :inline :overlay-at (-> data 16)) - (sun-alpha-giftag qword :inline :overlay-at (-> data 17)) - ) - ) + ((data uint128 18) + (world-homo-matrix matrix :inline :overlay-at (-> data 0)) + (hmge-scale vector :inline :overlay-at (-> data 4)) + (hvdf-offset vector :inline :overlay-at (-> data 5)) + (consts vector :inline :overlay-at (-> data 6)) + (pfog0 float :overlay-at (-> data 6)) + (radius float :overlay-at (-> consts y)) + (nokick float :overlay-at (-> consts w)) + (strip-giftag qword :inline :overlay-at (-> data 7)) + (col-adgif qword :inline :overlay-at (-> data 8)) + (save uint128 5 :overlay-at (-> data 9)) + (sun-fan-giftag qword :inline :overlay-at (-> data 14)) + (sun-strip-giftag qword :inline :overlay-at (-> data 15)) + (sun-alpha qword :inline :overlay-at (-> data 16)) + (sun-alpha-giftag qword :inline :overlay-at (-> data 17)))) ;; skipping old sky stuff (for now) (define sky-vu1-block (new 'static 'vu-function)) @@ -126,20 +89,20 @@ ;; sky-upload ;; sky-draw - ;; set the suns (sky-set-sun-radii *sky-parms* 0 60.0 200.0 300.0) -(sky-set-sun-radii *sky-parms* 1 15.0 20.0 300.0) +(sky-set-sun-radii *sky-parms* 1 15.0 20.0 300.0) -(sky-set-sun-colors *sky-parms* 1 +(sky-set-sun-colors *sky-parms* + 1 (new 'static 'rgba :r #xc2 :g #xfe :b #x78 :a #x80) (new 'static 'rgba :r #xc2 :g #xfe :b #x78 :a #x80) (new 'static 'rgba :r #xc2 :g #xfe :b #x78 :a #x20) - (new 'static 'rgba :r #xc2 :g #xfe :b #x78) - ) - + (new 'static 'rgba :r #xc2 :g #xfe :b #x78)) (sky-set-orbit *sky-parms* 0 12.5 -15.0 0.0 9950.0 300.0 300.0) + (sky-set-orbit *sky-parms* 1 4.0 0.0 60.0 9950.0 120.0 120.0) + (sky-set-orbit *sky-parms* 2 0.0 0.0 -10.0 9950.0 0.0 0.0) diff --git a/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-h.gc b/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-h.gc index 6ffed228a6..c06d601a84 100644 --- a/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-h.gc +++ b/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-h.gc @@ -1,24 +1,13 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") -;; name: sparticle-h.gc -;; name in dgo: sparticle-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define *sp-frame-time* (new 'global 'vector)) -(set-vector! - *sp-frame-time* - 0.00000000000000000000000000000000000001175495 - 5.0 - 1.0 - 1.0 - ) +(set-vector! *sp-frame-time* 0.00000000000000000000000000000000000001175495 5.0 1.0 1.0) (define *sp-60-hz* #t) @@ -27,95 +16,87 @@ :type uint32 (bit0 0) (bit1 1) ;; village1-part - (bit2 2) ;; cleared after an aux has its func set to add-to-sprite-aux-lst + (bit2 2) ;; cleared after an aux has its func set to add-to-sprite-aux-lst (bit3 3) (bit4 4) ;; see - swamp-blimp (ready-to-launch 6) ;; maybe just just death? (bit7 7) - (aux-list 8) ;; prevents relaunch, adds to aux + (aux-list 8) ;; prevents relaunch, adds to aux (bit9 9) (level0 10) (level1 11) - (bit12 12) ;; required to relaunch + (bit12 12) ;; required to relaunch (bit13 13) (bit14 14) (use-global-acc 16) (launch-along-z 17) (left-multiply-quat 18) (right-multiply-quat 19) - (set-conerot 20) - ) + (set-conerot 20)) (deftype sparticle-cpuinfo (structure) - ((sprite sprite-vec-data-2d) - (adgif adgif-shader) - (radius float) - (omega float) - (vel-sxvel vector :inline) - (rot-syvel vector :inline) - (fade rgbaf :inline) - (acc vector :inline) - (rotvel3d quaternion :inline) - (vel vector3s :inline :overlay-at (-> vel-sxvel x)) - (accel vector3s :inline :overlay-at (-> acc x)) - (scalevelx float :overlay-at (-> vel-sxvel w)) - (scalevely float :overlay-at (-> rot-syvel w)) - (friction float) - (timer int32) - (flags sp-cpuinfo-flag) - (user-int32 int32) - (user-uint32 uint32 :overlay-at user-int32) - (user-float float :overlay-at user-int32) - (user-pntr uint32 :overlay-at user-int32) - (user-sprite sprite-vec-data-2d :overlay-at user-int32) - (func basic) - (next-time uint32) - (next-launcher basic) - (cache-alpha float) - (valid symbol) - (key sparticle-launch-control) - (binding sparticle-launch-state) - (data uint32 1 :overlay-at omega) - (dataf float 1 :overlay-at omega) - (datac uint8 1 :overlay-at omega) - ) - ) - + ((sprite sprite-vec-data-2d) + (adgif adgif-shader) + (radius float) + (omega float) + (vel-sxvel vector :inline) + (rot-syvel vector :inline) + (fade rgbaf :inline) + (acc vector :inline) + (rotvel3d quaternion :inline) + (vel vector3s :inline :overlay-at (-> vel-sxvel x)) + (accel vector3s :inline :overlay-at (-> acc x)) + (scalevelx float :overlay-at (-> vel-sxvel w)) + (scalevely float :overlay-at (-> rot-syvel w)) + (friction float) + (timer int32) + (flags sp-cpuinfo-flag) + (user-int32 int32) + (user-uint32 uint32 :overlay-at user-int32) + (user-float float :overlay-at user-int32) + (user-pntr uint32 :overlay-at user-int32) + (user-sprite sprite-vec-data-2d :overlay-at user-int32) + (func basic) + (next-time uint32) + (next-launcher basic) + (cache-alpha float) + (valid symbol) + (key sparticle-launch-control) + (binding sparticle-launch-state) + (data uint32 1 :overlay-at omega) + (dataf float 1 :overlay-at omega) + (datac uint8 1 :overlay-at omega))) (deftype sparticle-launchinfo (structure) - ((launchrot vector :inline) - (conerot vector :inline) - (coneradius float) - (rotate-y float) - (data uint8 1 :overlay-at (-> launchrot x)) - ) - ) - + ((launchrot vector :inline) + (conerot vector :inline) + (coneradius float) + (rotate-y float) + (data uint8 1 :overlay-at (-> launchrot x)))) (deftype sparticle-system (basic) - ((blocks int32 2) - (length int32 2) - (num-alloc int32 2) - (is-3d basic) - (flags uint32) - (alloc-table (pointer uint64)) - (cpuinfo-table (inline-array sparticle-cpuinfo)) - (vecdata-table pointer) - (adgifdata-table (inline-array adgif-shader)) - ) + ((blocks int32 2) + (length int32 2) + (num-alloc int32 2) + (is-3d basic) + (flags uint32) + (alloc-table (pointer uint64)) + (cpuinfo-table (inline-array sparticle-cpuinfo)) + (vecdata-table pointer) + (adgifdata-table (inline-array adgif-shader))) (:methods - (new (symbol type int int symbol pointer (inline-array adgif-shader)) _type_) - ) - ) + (new (symbol type int int symbol pointer (inline-array adgif-shader)) _type_))) (define-extern part-group-pointer? (function pointer symbol)) ;; TODO - for shadow (define-extern *part-id-table* (array sparticle-launcher)) + (define-extern *part-group-id-table* (array sparticle-launch-group)) ;; TODO - for basically everything particle related (define-extern *sp-particle-system-2d* sparticle-system) + (define-extern *sp-particle-system-3d* sparticle-system) (defun-extern kill-all-particles-with-key sparticle-launch-control none) diff --git a/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-launcher-h.gc b/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-launcher-h.gc index c099909aa0..1fe5ceec92 100644 --- a/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-launcher-h.gc +++ b/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-launcher-h.gc @@ -1,14 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: sparticle-launcher-h.gc -;; name in dgo: sparticle-launcher-h -;; dgos: GAME, ENGINE - - ;; The "sparticle" system is the particle system. ;; Features ;; - Support for 2D particles (autosave icon, progress menu graphics) @@ -25,7 +19,6 @@ ;; These store some state (a sparticle-launch-state) and a reference to a sparticle-launch-group ;; Multiple launch-controls can refer to the same launch-group. - ;; A sparticle-launch-group is a description of a particle effect. ;; It can contain multiple types of particles. ;; The `*part-group-id-table*` array stores a reference to every launch-group, indexed by group id. @@ -49,7 +42,6 @@ ;; These are the user-settable state variables for each particle effect (defenum sp-field-id :type uint16 - (misc-fields-start 0) (spt-texture 1) (spt-anim 2) @@ -59,7 +51,6 @@ (spt-num 6) (spt-sound 7) (misc-fields-end 8) - (sprite-fields-start 9) (spt-x 10) (spt-y 11) @@ -74,7 +65,6 @@ (spt-b 20) (spt-a 21) (sprite-fields-end 22) - (cpu-fields-start 23) (spt-omega 24) (spt-vel-x 25) @@ -105,7 +95,6 @@ (spt-next-time 50) (spt-next-launcher 51) (cpu-fields-end 52) - (launch-fields-start 53) (spt-launchrot-x 54) (spt-launchrot-y 55) @@ -118,11 +107,9 @@ (spt-conerot-radius 62) (spt-rotate-y 63) (launch-fields-end 64) - (spt-scale 65) (spt-scalevel 66) - (spt-end 67) - ) + (spt-end 67)) (defenum sp-flag :type uint16 @@ -150,29 +137,24 @@ ;; Note that there are overlays here and some values only make sense in some ;; cases. (deftype sp-field-init-spec (structure) - ((field sp-field-id) - (flags sp-flag) - (initial-valuef float) - (random-rangef float) - (random-multf float) - (initial-value int32 :overlay-at initial-valuef) - (random-range int32 :overlay-at random-rangef) - (random-mult int32 :overlay-at random-multf) - (func symbol :overlay-at initial-valuef) - (tex texture-id :overlay-at initial-valuef) - (pntr pointer :overlay-at initial-valuef) - (sym symbol :overlay-at initial-valuef) - (sound sound-spec :overlay-at initial-valuef) - ) - ) - + ((field sp-field-id) + (flags sp-flag) + (initial-valuef float) + (random-rangef float) + (random-multf float) + (initial-value int32 :overlay-at initial-valuef) + (random-range int32 :overlay-at random-rangef) + (random-mult int32 :overlay-at random-multf) + (func symbol :overlay-at initial-valuef) + (tex texture-id :overlay-at initial-valuef) + (pntr pointer :overlay-at initial-valuef) + (sym symbol :overlay-at initial-valuef) + (sound sound-spec :overlay-at initial-valuef))) (deftype sparticle-launcher (basic) - ((birthaccum float) - (soundaccum float) - (init-specs (inline-array sp-field-init-spec)) - ) - ) + ((birthaccum float) + (soundaccum float) + (init-specs (inline-array sp-field-init-spec)))) (defenum sp-group-item-flag :bitfield #t @@ -181,305 +163,292 @@ (bit1 1) (start-dead 2) (launch-asap 3) - (bit6 6) - ) + (bit6 6)) (deftype sparticle-group-item (structure) - ((launcher uint32) - (fade-after meters) - (falloff-to meters) - (flags sp-group-item-flag) - (period uint16) - (length uint16) - (offset uint16) - (hour-mask uint32) - (binding uint32) - ) - ) - -(defmacro sp-item (launcher - &key (fade-after 0.0) - &key (falloff-to 0.0) - &key (flags ()) - &key (period 0) - &key (length 0) - &key (offset 0) - &key (hour-mask 0) - &key (binding 0) - ) - `(new 'static 'sparticle-group-item - :launcher ,launcher - :fade-after ,fade-after - :falloff-to ,falloff-to - :flags (sp-group-item-flag ,@flags) - :period ,period - :length ,length - :offset ,offset - :hour-mask ,hour-mask - :binding ,binding - ) - ) + ((launcher uint32) + (fade-after meters) + (falloff-to meters) + (flags sp-group-item-flag) + (period uint16) + (length uint16) + (offset uint16) + (hour-mask uint32) + (binding uint32))) + +(defmacro sp-item (launcher &key (fade-after 0.0) &key (falloff-to 0.0) &key (flags ()) &key (period 0) &key (length 0) &key (offset 0) &key (hour-mask 0) &key (binding 0)) + `(new 'static + 'sparticle-group-item + :launcher ,launcher + :fade-after ,fade-after + :falloff-to ,falloff-to + :flags (sp-group-item-flag ,@flags) + :period ,period + :length ,length + :offset ,offset + :hour-mask ,hour-mask + :binding ,binding)) (defenum sp-launch-state-flags :bitfield #t :type uint16 - (launcher-active 0) ;; active + (launcher-active 0) ;; active (particles-active 1) ;; wants to launch - (bit2 2) - ) + (bit2 2)) (declare-type sparticle-cpuinfo structure) (deftype sparticle-launch-state (structure) - ((group-item sparticle-group-item) - (flags sp-launch-state-flags) - (randomize uint16) - (origin vector) - (sprite3d sprite-vec-data-3d) - (sprite sparticle-cpuinfo) - (offset uint32) - (accum float) - (spawn-time uint32) - (swarm basic :overlay-at offset) - (seed uint32 :overlay-at accum) - (time uint32 :overlay-at spawn-time) - (spec basic :overlay-at sprite) - (id uint32 :overlay-at sprite3d) - ) - ) - + ((group-item sparticle-group-item) + (flags sp-launch-state-flags) + (randomize uint16) + (origin vector) + (sprite3d sprite-vec-data-3d) + (sprite sparticle-cpuinfo) + (offset uint32) + (accum float) + (spawn-time uint32) + (swarm basic :overlay-at offset) + (seed uint32 :overlay-at accum) + (time uint32 :overlay-at spawn-time) + (spec basic :overlay-at sprite) + (id uint32 :overlay-at sprite3d))) (deftype sparticle-launch-group (basic) - ((length int16) - (duration uint16) - (linger-duration uint16) - (flags sp-group-flag) - (name string) - (launcher (inline-array sparticle-group-item)) - (bounds sphere :inline) - ) + ((length int16) + (duration uint16) + (linger-duration uint16) + (flags sp-group-flag) + (name string) + (launcher (inline-array sparticle-group-item)) + (bounds sphere :inline)) (:methods - (create-launch-control (_type_ process) sparticle-launch-control) - ) - ) - + (create-launch-control (_type_ process) sparticle-launch-control))) (deftype sparticle-launch-control (inline-array-class) - ((group sparticle-launch-group) - (proc process) - (local-clock int32) - (fade float) - (matrix int32) - (last-spawn-frame int32) - (last-spawn-time int32) - (center vector :inline) - (data sparticle-launch-state :inline :dynamic) - ) + ((group sparticle-launch-group) + (proc process) + (local-clock int32) + (fade float) + (matrix int32) + (last-spawn-frame int32) + (last-spawn-time int32) + (center vector :inline) + (data sparticle-launch-state :inline :dynamic)) (:methods - (initialize (_type_ sparticle-launch-group process) none) - (is-visible? (_type_ vector) symbol) - (spawn (_type_ vector) object) - (kill-and-free-particles (_type_) none) - (kill-particles (_type_) none) - ) - ) - + (initialize (_type_ sparticle-launch-group process) none) + (is-visible? (_type_ vector) symbol) + (spawn (_type_ vector) object) + (kill-and-free-particles (_type_) none) + (kill-particles (_type_) none))) (set! (-> sparticle-launch-control heap-base) (the-as uint 32)) - (defmacro defpartgroup (name &key id &key parts &key (duration 3000) &key (linger-duration 1500) &key (flags ()) &key bounds) "define a new part group. defines a constant with the name of the group with the ID as its value" `(begin (defconstant ,name ,id) (set! (-> *part-group-id-table* ,id) - (new 'static 'sparticle-launch-group - :duration ,duration - :linger-duration ,linger-duration - :flags (sp-group-flag ,@flags) - :bounds ,bounds - :name ,(symbol->string name) - :length ,(length parts) - :launcher (new 'static 'inline-array sparticle-group-item ,(length parts) ,@parts) - ) - ) - ) - ) + (new 'static + 'sparticle-launch-group + :duration ,duration + :linger-duration ,linger-duration + :flags (sp-group-flag ,@flags) + :bounds ,bounds + :name ,(symbol->string name) + :length ,(length parts) + :launcher + (new 'static 'inline-array sparticle-group-item ,(length parts) ,@parts))))) (defmacro get-part-group (id) - `(-> *part-group-id-table* ,id) - ) + `(-> *part-group-id-table* ,id)) (desfun param-float? (p) - (or (float? p) (and (pair? p) (eq? 'meters (car p))) (and (pair? p) (eq? 'degrees (car p)))) - ) + (or (float? p) (and (pair? p) (eq? 'meters (car p))) (and (pair? p) (eq? 'degrees (car p))))) (desfun param-int? (p) - (or (integer? p) (and (pair? p) (eq? 'seconds (car p)))) - ) + (or (integer? p) (and (pair? p) (eq? 'seconds (car p))))) (desfun param-symbol? (p) - (and (pair? p) (eq? 'quote (car p))) - ) + (and (pair? p) (eq? 'quote (car p)))) -(seval (begin -(define *sparticle-fields* (make-string-hash-table)) -(doenum (name val 'sp-field-id) - (hash-table-set! - *sparticle-fields* - (if (string-starts-with? (symbol->string name) "spt-") - (string->symbol (string-substr (symbol->string name) 4 0)) - name) - (list - val name (member name '(spt-vel-x - spt-vel-y - spt-vel-z - spt-scalevel-x - spt-scalevel-y - spt-rotvel-x - spt-rotvel-y - spt-rotvel-z - spt-fade-r - spt-fade-g - spt-fade-b - spt-fade-a - spt-accel-x - spt-accel-y - spt-accel-z)) - ) - ) - ) -;; you cannot define these fields ever. -(define *sparticle-fields-banned* '(misc-fields-start - misc-fields-end - sprite-fields-start - sprite-fields-end - cpu-fields-start - cpu-fields-end - launch-fields-start - launch-fields-end - end - )) -)) +(seval + (begin + (define *sparticle-fields* (make-string-hash-table)) + (doenum (name val 'sp-field-id) + (hash-table-set! *sparticle-fields* + (if (string-starts-with? (symbol->string name) "spt-") (string->symbol (string-substr (symbol->string name) 4 0)) name) + (list val + name + (member name + '(spt-vel-x spt-vel-y + spt-vel-z + spt-scalevel-x + spt-scalevel-y + spt-rotvel-x + spt-rotvel-y + spt-rotvel-z + spt-fade-r + spt-fade-g + spt-fade-b + spt-fade-a + spt-accel-x + spt-accel-y + spt-accel-z))))) + ;; you cannot define these fields ever. + (define *sparticle-fields-banned* + '(misc-fields-start misc-fields-end + sprite-fields-start + sprite-fields-end + cpu-fields-start + cpu-fields-end + launch-fields-start + launch-fields-end + end)))) ;; the last field ID defined, to make sure that fields are defined in order. -(seval (define *last-field-id* -1)) +(seval + (define *last-field-id* -1)) (desfun process-init-spec (x) (let* ((head (symbol->string (car x))) - (params (cdr x)) - (field-name (string->symbol (string-substr head 1 0))) - (field-lookup (hash-table-try-ref *sparticle-fields* field-name)) - (field (cdr field-lookup)) - (store? (member ':store params)) - (param-count (if store? (1- (length params)) (length params))) - ) - (when (not (car field-lookup)) - (fmt #t "unknown sparticle field {}\n" x)) - (when (neq? (string-ref head 0) #\:) - (fmt #t "invalid sparticle field {}\n" x)) - ; (when (member field-name *sparticle-fields-banned*) - ; (fmt #t "you cannot use sparticle field {}\n" field-name)) - (let ((field-id (car field)) - (field-enum-name (cadr field)) - (vel? (and #f (caddr field))) - (param0 (and (>= param-count 1) (first params))) - (param1 (and (>= param-count 2) (second params))) - (param2 (and (>= param-count 3) (third params)))) - (when (>= *last-field-id* field-id) - (fmt #t "field {} must come after field {}, not before\n" field-name (car (nth *last-field-id* *sparticle-fields*))) - ) - (set! *last-field-id* field-id) - (cond - ((eq? field-name 'flags) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :initial-value (sp-cpuinfo-flag ,@param0) :random-mult 1) - ) - ((eq? field-name 'texture) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :tex ,param0 :flags (sp-flag int)) - ) - ((eq? field-name 'next-launcher) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :initial-value ,param0 :flags (sp-flag launcher)) - ) - ((eq? field-name 'sound) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :sound ,param0 :flags (sp-flag object)) - ) - ((and (= 2 param-count) (symbol? param0) (eq? param0 ':copy)) - (let* ((other-field-lookup (hash-table-try-ref *sparticle-fields* (cadr (member ':copy params)))) - (other-field (cdr other-field-lookup)) - (other-field-id (car other-field))) - (when (>= other-field-id field-id) - (fmt #t "warning copying to sparticle field {} from {} - you can only copy from fields before this one!\n" field-name (cadr other-field)) ) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag copy-from-other) - :initial-value ,(- other-field-id field-id) :random-mult 1) - ) - ) - ((and (= 2 param-count) (symbol? param0) (eq? param0 ':data)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag object) - :object ,(cadr (member ':data params))) - ) - ((and (= 1 param-count) (param-symbol? param0)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag symbol) - :sym ,param0) - ) - ((and (= 1 param-count) (param-float? param0)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag ,(if store? 'float-store 'float)) - :initial-valuef ,(if vel? `(/ ,param0 60.0) param0) - :random-rangef 0.0 - :random-multf 1.0) - ) - ((and (= 2 param-count) (param-float? param0) (param-float? param1)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag ,(if store? 'float-store 'float)) - :initial-valuef ,(if vel? `(/ ,param0 60.0) param0) - :random-rangef ,(if vel? `(/ ,param1 60.0) param1) - :random-multf 1.0) - ) - ((and (= 3 param-count) (param-float? param0) (param-float? param1) (param-float? param2)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag ,(if store? 'float-store 'float)) - :initial-valuef ,(if vel? `(/ ,param0 60.0) param0) - :random-rangef ,param1 - :random-multf ,(if vel? `(/ ,param2 60.0) param2)) - ) - ((and (= 3 param-count) (param-float? param0) (param-int? param1) (param-float? param2)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag float-int-rand) - :initial-valuef ,(if vel? `(/ ,param0 60.0) param0) - :random-range ,param1 - :random-multf ,(if vel? `(/ ,param2 60.0) param2)) - ) - ((and (= 1 param-count) (param-int? param0)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag int) - :initial-value ,param0 - :random-range 0 - :random-mult 1) - ) - ((and (= 2 param-count) (param-int? param0) (param-int? param1)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag int) - :initial-value ,param0 - :random-range ,param1 - :random-mult 1) - ) - ((and (= 3 param-count) (param-int? param0) (param-int? param1) (param-int? param2)) - `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag int) - :initial-value ,param0 - :random-range ,param1 - :random-mult ,param2) - ) - (#t - `(new 'static 'sp-field-init-spec :field (sp-field-id spt-end)) - ) - ) - ) - ) - ) + (params (cdr x)) + (field-name (string->symbol (string-substr head 1 0))) + (field-lookup (hash-table-try-ref *sparticle-fields* field-name)) + (field (cdr field-lookup)) + (store? (member ':store params)) + (param-count (if store? (1- (length params)) (length params)))) + (when (not (car field-lookup)) + (fmt #t "unknown sparticle field {}\n" x)) + (when (neq? (string-ref head 0) #\:) + (fmt #t "invalid sparticle field {}\n" x)) + ; (when (member field-name *sparticle-fields-banned*) + ; (fmt #t "you cannot use sparticle field {}\n" field-name)) + (let ((field-id (car field)) + (field-enum-name (cadr field)) + (vel? (and #f (caddr field))) + (param0 (and (>= param-count 1) (first params))) + (param1 (and (>= param-count 2) (second params))) + (param2 (and (>= param-count 3) (third params)))) + (when (>= *last-field-id* field-id) + (fmt #t "field {} must come after field {}, not before\n" field-name (car (nth *last-field-id* *sparticle-fields*)))) + (set! *last-field-id* field-id) + (cond + ((eq? field-name 'flags) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :initial-value (sp-cpuinfo-flag ,@param0) + :random-mult 1)) + ((eq? field-name 'texture) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :tex ,param0 :flags (sp-flag int))) + ((eq? field-name 'next-launcher) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :initial-value ,param0 :flags (sp-flag launcher))) + ((eq? field-name 'sound) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :sound ,param0 :flags (sp-flag object))) + ((and (= 2 param-count) (symbol? param0) (eq? param0 ':copy)) + (let* ((other-field-lookup (hash-table-try-ref *sparticle-fields* (cadr (member ':copy params)))) + (other-field (cdr other-field-lookup)) + (other-field-id (car other-field))) + (when (>= other-field-id field-id) + (fmt #t + "warning copying to sparticle field {} from {} - you can only copy from fields before this one!\n" + field-name + (cadr other-field))) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags (sp-flag copy-from-other) + :initial-value ,(- other-field-id field-id) + :random-mult 1))) + ((and (= 2 param-count) (symbol? param0) (eq? param0 ':data)) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags (sp-flag object) + :object + ,(cadr (member ':data params)))) + ((and (= 1 param-count) (param-symbol? param0)) + `(new 'static 'sp-field-init-spec :field (sp-field-id ,field-enum-name) :flags (sp-flag symbol) :sym ,param0)) + ((and (= 1 param-count) (param-float? param0)) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags + (sp-flag ,(if store? 'float-store 'float)) + :initial-valuef + ,(if vel? `(/ ,param0 60.0) param0) + :random-rangef 0.0 + :random-multf 1.0)) + ((and (= 2 param-count) (param-float? param0) (param-float? param1)) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags + (sp-flag ,(if store? 'float-store 'float)) + :initial-valuef + ,(if vel? `(/ ,param0 60.0) param0) + :random-rangef + ,(if vel? `(/ ,param1 60.0) param1) + :random-multf 1.0)) + ((and (= 3 param-count) (param-float? param0) (param-float? param1) (param-float? param2)) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags + (sp-flag ,(if store? 'float-store 'float)) + :initial-valuef + ,(if vel? `(/ ,param0 60.0) param0) + :random-rangef ,param1 + :random-multf + ,(if vel? `(/ ,param2 60.0) param2))) + ((and (= 3 param-count) (param-float? param0) (param-int? param1) (param-float? param2)) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags (sp-flag float-int-rand) + :initial-valuef + ,(if vel? `(/ ,param0 60.0) param0) + :random-range ,param1 + :random-multf + ,(if vel? `(/ ,param2 60.0) param2))) + ((and (= 1 param-count) (param-int? param0)) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags (sp-flag int) + :initial-value ,param0 + :random-range 0 + :random-mult 1)) + ((and (= 2 param-count) (param-int? param0) (param-int? param1)) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags (sp-flag int) + :initial-value ,param0 + :random-range ,param1 + :random-mult 1)) + ((and (= 3 param-count) (param-int? param0) (param-int? param1) (param-int? param2)) + `(new 'static + 'sp-field-init-spec + :field (sp-field-id ,field-enum-name) + :flags (sp-flag int) + :initial-value ,param0 + :random-range ,param1 + :random-mult ,param2)) + (#t `(new 'static 'sp-field-init-spec :field (sp-field-id spt-end))))))) (defmacro defpart (id &key (init-specs ())) "define a new sparticle-launcher" (begin (set! *last-field-id* -1) `(set! (-> *part-id-table* ,id) - (new 'static 'sparticle-launcher - :init-specs (new 'static 'inline-array sp-field-init-spec ,(1+ (length init-specs)) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + ,(1+ (length init-specs)) ,@(apply process-init-spec init-specs) - (new 'static 'sp-field-init-spec :field (sp-field-id spt-end)) - ))) - ) - ) + (new 'static 'sp-field-init-spec :field (sp-field-id spt-end))))))) diff --git a/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-launcher.gc b/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-launcher.gc index 1cc3a75d56..df210160b4 100644 --- a/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-launcher.gc +++ b/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle-launcher.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/mood/time-of-day-h.gc") (require "engine/draw/drawable-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") @@ -9,35 +8,26 @@ (require "kernel/gstate.gc") (require "engine/collide/collide-shape-h.gc") -;; name: sparticle-launcher.gc -;; name in dgo: sparticle-launcher -;; dgos: GAME, ENGINE - ;; og:preserve-this added macro ;; the rate was defaulted to DISPLAY_FPS_RATIO before, but sp-launch-particles-var checks ;; if the rate is not 1.0 and crashes the game. -(defmacro launch-particles (&key (system *sp-particle-system-2d*) particle origin &key (launch-state (the-as sparticle-launch-state #f)) &key (launch-control (the-as sparticle-launch-control #f)) - &key (rate 1.0 #|DISPLAY_FPS_RATIO|#)) - `(sp-launch-particles-var ,system ,particle ,origin ,launch-state ,launch-control ,rate) - ) +(defmacro launch-particles (&key (system *sp-particle-system-2d*) particle origin &key (launch-state (the-as sparticle-launch-state #f)) &key (launch-control (the-as sparticle-launch-control #f)) &key (rate 1.0)) + `(sp-launch-particles-var ,system ,particle ,origin ,launch-state ,launch-control ,rate)) ;; decomp begins (define *particle-300hz-timer* 0) (deftype sparticle-birthinfo (structure) - ((sprite uint32) - (anim int32) - (anim-speed float) - (birth-func basic) - (joint-ppoint int32) - (num-to-birth float) - (sound basic) - (dataf float 1 :overlay-at sprite) - (data uint32 1 :overlay-at sprite) - ) - ) - + ((sprite uint32) + (anim int32) + (anim-speed float) + (birth-func basic) + (joint-ppoint int32) + (num-to-birth float) + (sound basic) + (dataf float 1 :overlay-at sprite) + (data uint32 1 :overlay-at sprite))) (defmethod inspect ((this sparticle-launcher)) "Print out a sparticle-laucher, including its fields" @@ -45,18 +35,14 @@ (let ((s5-0 0)) (while (!= (-> this init-specs s5-0 field) (sp-field-id spt-end)) (let ((init-spec (-> this init-specs s5-0))) - (format #t "~T~S : ~F / #x~X / ~D~%" + (format #t + "~T~S : ~F / #x~X / ~D~%" (enum->string sp-field-id (-> init-spec field)) (-> init-spec initial-valuef) (-> init-spec initial-valuef) - (-> init-spec initial-valuef) - ) - ) - (+! s5-0 1) - ) - ) - (the-as sparticle-launcher 0) - ) + (-> init-spec initial-valuef))) + (+! s5-0 1))) + (the-as sparticle-launcher 0)) ;;;;;;;;;;;;;;;;;;;;;;;; ;; particle tables @@ -71,136 +57,99 @@ ;; Particle effects will add themselves to this table when the code is loaded/linked (define *part-id-table* (new 'global 'boxed-array sparticle-launcher 3584)) - ;; All the particle groups. (define *part-group-id-table* (new 'global 'boxed-array sparticle-launch-group 1024)) (defun lookup-part-group-by-name ((arg0 string)) "Find a particle group with the given name. Checks all of them, not very efficient." (let* ((s5-0 *part-group-id-table*) - (s4-0 (-> s5-0 length)) - ) + (s4-0 (-> s5-0 length))) (dotimes (s3-0 s4-0) - (let ((s2-0 (-> s5-0 s3-0))) - (if (and (nonzero? s2-0) (string= arg0 (-> s2-0 name))) - (return (the-as basic s2-0)) - ) - ) - ) - ) - (the-as sparticle-launch-group #f) - ) + (let ((s2-0 (-> s5-0 s3-0))) (if (and (nonzero? s2-0) (string= arg0 (-> s2-0 name))) (return (the-as basic s2-0)))))) + (the-as sparticle-launch-group #f)) (defun lookup-part-group-pointer-by-name ((arg0 string)) "Get a (pointer sparticle-launch-group) for the given name. Checks all of them, not very efficient." (let* ((s4-0 *part-group-id-table*) - (s3-0 (-> s4-0 length)) - ) + (s3-0 (-> s4-0 length))) (dotimes (gp-0 s3-0) (let ((v1-2 (-> s4-0 gp-0))) (if (and (nonzero? v1-2) (string= arg0 (-> v1-2 name))) - ;; og:preserve-this - ;;(return (&+ (-> s4-0 data) (* gp-0 4))) - (return (&-> s4-0 gp-0)) - ) - ) - ) - ) - (the-as (pointer sparticle-launch-group) #f) - ) + ;; og:preserve-this + ;;(return (&+ (-> s4-0 data) (* gp-0 4))) + (return (&-> s4-0 gp-0)))))) + (the-as (pointer sparticle-launch-group) #f)) (defun part-group-pointer? ((arg0 pointer)) "Is the given pointer a pointer that was returned by lookup-part-group-pointer-by-name?" (let ((v1-0 *part-group-id-table*)) ;; og:preserve-this ;; just check if we are inside the array. - (and (>= (the-as int arg0) (the-as int (-> v1-0 data))) - (< (the-as int arg0) (the-as int (&-> v1-0 1024))) - ) - ) - ) + (and (>= (the-as int arg0) (the-as int (-> v1-0 data))) (< (the-as int arg0) (the-as int (&-> v1-0 1024)))))) (defun unlink-part-group-by-heap ((arg0 kheap)) "Find all particle groups that are stored in the specified heap and set them to 0." (let* ((v1-0 *part-group-id-table*) (a2-0 (-> v1-0 length)) (a1-0 (-> arg0 base)) - (a0-1 (-> arg0 top-base)) - ) + (a0-1 (-> arg0 top-base))) (while (nonzero? a2-0) (+! a2-0 -1) (let ((a3-2 (-> v1-0 a2-0))) (when (and (>= (the-as int a3-2) (the-as int a1-0)) (< (the-as int a3-2) (the-as int a0-1))) (set! (-> v1-0 a2-0) (the-as sparticle-launch-group 0)) - 0 - ) - ) - ) - ) - 0 - ) + 0)))) + 0) ;;;;;;;;;;;;;;;;;;;;;;; ;; particle init ;;;;;;;;;;;;;;;;;;;;;;; ;; og:preserve-this this was rewritten from assembly -(defun sp-init-fields! ((arg0 (pointer float)) (arg1 (inline-array sp-field-init-spec)) (arg2 sp-field-id) (arg3 sp-field-id) (write-missing-fields symbol)) +(defun sp-init-fields! ((arg0 (pointer float)) + (arg1 (inline-array sp-field-init-spec)) + (arg2 sp-field-id) + (arg3 sp-field-id) + (write-missing-fields symbol)) (1+! arg2) (let ((cur-spec arg1)) - (while (< (-> cur-spec 0 field) arg2) - (&+! cur-spec 16) - ) - (if (>= arg2 arg3) - (return cur-spec)) - (until (= arg2 arg3) - (cond - ((!= (-> cur-spec 0 field) arg2) - (if write-missing-fields - (set! (-> arg0) 0.0)) - ;; reduce by 16 because it will be incremented by 16 right after but we don't want to advance field - (&+! cur-spec -16) - ) - ((= arg2 (sp-field-id spt-sound)) - (set! (-> arg0) (-> cur-spec 0 initial-valuef)) - ) - (else - (case (-> cur-spec 0 flags) - (((sp-flag float)) - (if (= (-> cur-spec 0 random-range) 0) - (set! (-> arg0) (-> cur-spec 0 initial-valuef)) - (set! (-> arg0) (+ (-> cur-spec 0 initial-valuef) (* (-> cur-spec 0 random-multf) (* (rand-vu) (-> cur-spec 0 random-rangef)))))) - ) - (((sp-flag float-int-rand)) - (if (= (-> cur-spec 0 random-range) 0) - (set! (-> arg0) (-> cur-spec 0 initial-valuef)) - (set! (-> arg0) (+ (-> cur-spec 0 initial-valuef) (* (-> cur-spec 0 random-multf) (the int (* (rand-vu) (1+ (-> cur-spec 0 random-range)))))))) - ) - (((sp-flag copy-from-other)) - (set! (-> arg0) (-> arg0 (-> cur-spec 0 initial-value))) - ) - (((sp-flag symbol)) - (set! (-> arg0) (the-as float (-> cur-spec 0 sym value))) - ) - (((sp-flag launcher)) - (set! (-> arg0) (the-as float (-> *part-id-table* (-> cur-spec 0 initial-value)))) - ) - (((sp-flag object)) - (set! (-> arg0) (the-as float (-> cur-spec 0 pntr))) - ) - (else - (if (= (-> cur-spec 0 random-range) 0) - (set! (-> arg0) (-> cur-spec 0 initial-valuef)) - (set! (-> arg0) (the-as float (+ (-> cur-spec 0 initial-value) (* (-> cur-spec 0 random-mult) (the int (* (rand-vu) (-> cur-spec 0 random-range)))))))) - ) - ) - ) - ) - (1+! arg2) - (&+! arg0 4) - (&+! cur-spec 16)) - cur-spec) - ) + (while (< (-> cur-spec 0 field) arg2) + (&+! cur-spec 16)) + (if (>= arg2 arg3) (return cur-spec)) + (until (= arg2 arg3) + (cond + ((!= (-> cur-spec 0 field) arg2) + (if write-missing-fields (set! (-> arg0) 0.0)) + ;; reduce by 16 because it will be incremented by 16 right after but we don't want to advance field + (&+! cur-spec -16)) + ((= arg2 (sp-field-id spt-sound)) (set! (-> arg0) (-> cur-spec 0 initial-valuef))) + (else + (case (-> cur-spec 0 flags) + (((sp-flag float)) + (if (= (-> cur-spec 0 random-range) 0) + (set! (-> arg0) (-> cur-spec 0 initial-valuef)) + (set! (-> arg0) + (+ (-> cur-spec 0 initial-valuef) (* (-> cur-spec 0 random-multf) (* (rand-vu) (-> cur-spec 0 random-rangef))))))) + (((sp-flag float-int-rand)) + (if (= (-> cur-spec 0 random-range) 0) + (set! (-> arg0) (-> cur-spec 0 initial-valuef)) + (set! (-> arg0) + (+ (-> cur-spec 0 initial-valuef) + (* (-> cur-spec 0 random-multf) (the int (* (rand-vu) (1+ (-> cur-spec 0 random-range))))))))) + (((sp-flag copy-from-other)) (set! (-> arg0) (-> arg0 (-> cur-spec 0 initial-value)))) + (((sp-flag symbol)) (set! (-> arg0) (the-as float (-> cur-spec 0 sym value)))) + (((sp-flag launcher)) (set! (-> arg0) (the-as float (-> *part-id-table* (-> cur-spec 0 initial-value))))) + (((sp-flag object)) (set! (-> arg0) (the-as float (-> cur-spec 0 pntr)))) + (else + (if (= (-> cur-spec 0 random-range) 0) + (set! (-> arg0) (-> cur-spec 0 initial-valuef)) + (set! (-> arg0) + (the-as float + (+ (-> cur-spec 0 initial-value) (* (-> cur-spec 0 random-mult) (the int (* (rand-vu) (-> cur-spec 0 random-range)))))))))))) + (1+! arg2) + (&+! arg0 4) + (&+! cur-spec 16)) + cur-spec)) ;;;;;;;;;;;;;;;;;;;;;;; ;; launch queue @@ -208,26 +157,24 @@ ;; og:preserve-this ;(#if (not PC_BIG_MEMORY) - (defconstant SPARTICLE_QUEUE_SIZE 32) - ;(defconstant SPARTICLE_QUEUE_SIZE 80)) +(defconstant SPARTICLE_QUEUE_SIZE 32) + +;(defconstant SPARTICLE_QUEUE_SIZE 80)) (deftype sp-queued-launch-particles (structure) - ((sp-system sparticle-system) - (sp-launcher sparticle-launcher) - (pos vector :inline) - ) - ) + ((sp-system sparticle-system) + (sp-launcher sparticle-launcher) + (pos vector :inline))) ;; og:preserve-this constant (deftype sp-launch-queue (basic) - ((in-use int32) - (queue sp-queued-launch-particles SPARTICLE_QUEUE_SIZE :inline) - ) - ) - + ((in-use int32) + (queue sp-queued-launch-particles SPARTICLE_QUEUE_SIZE :inline))) (define *sp-launcher-lock* #f) + (define *sp-launch-queue* (new 'global 'sp-launch-queue)) + (define *sp-launcher-enable* #t) ;;;;;;;;;;;;;;;;;;; @@ -239,47 +186,37 @@ (defun particle-setup-adgif ((arg0 adgif-shader) (arg1 texture-id)) "Set up the adgif for a particle and the given texture." - ;; grab the texture (let ((a1-1 (lookup-texture-by-id arg1))) ;; set up some texture stuff (set! (-> arg0 tex1) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) (set! (-> arg0 tex0 tfx) 0) ;; get the default adgif settings for this txture - (if a1-1 - (adgif-shader<-texture! arg0 a1-1) - ) - ) - + (if a1-1 (adgif-shader<-texture! arg0 a1-1))) ;; we'll use the usual tex0/tex1/miptbp1 (set! (-> arg0 prims 1) (gs-reg64 tex0-1)) (set! (-> arg0 prims 3) (gs-reg64 tex1-1)) (set! (-> arg0 prims 5) (gs-reg64 miptbp1-1)) - ;; clamp will use something weird (set! (-> arg0 clamp-reg) (gs-reg64 zbuf-1)) ;; this is sometimes "gs-miptbp" instead. (set! (-> arg0 prims 9) (gs-reg64 alpha-1)) (set! (-> arg0 alpha) (new 'static 'gs-alpha :b #x1 :d #x1)) - ;; og:preserve-this clamp is actually zbuf for sparticles, not gs-clamp. (set! (-> arg0 clamp) (the gs-clamp (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk #x1))) 0 - (none) - ) + (none)) ;; this is where we'll store the actual adgifs (deftype particle-adgif-cache (basic) - ((used int32) - (last uint16) - (lastgif adgif-shader) - (tidhash uint16 80) - (spadgif adgif-shader 80 :inline) - ) - ) - + ((used int32) + (last uint16) + (lastgif adgif-shader) + (tidhash uint16 80) + (spadgif adgif-shader 80 :inline))) (define *particle-adgif-cache* (new 'global 'particle-adgif-cache)) + (set! (-> *particle-adgif-cache* used) 0) (def-mips2c particle-adgif (function adgif-shader texture-id none)) @@ -291,143 +228,97 @@ (defun sp-queue-launch ((arg0 sparticle-system) (arg1 sparticle-launcher) (arg2 vector)) "Queue a launch from the given launcher, at the given position." (let ((v1-0 *sp-launch-queue*)) - ;; og:preserve-this constant ;; make sure we have room in the queue (when (= (-> v1-0 in-use) SPARTICLE_QUEUE_SIZE) (format 0 "ERROR: sp-launch-particles called during processing, and queue is full~%") - (return 0) - ) - + (return 0)) ;; make a new entry in the queue (let ((a3-5 (-> v1-0 queue (-> v1-0 in-use)))) (set! (-> a3-5 sp-system) arg0) (set! (-> a3-5 sp-launcher) arg1) - (set! (-> a3-5 pos quad) (-> arg2 quad)) - ) - (let ((v0-1 (+ (-> v1-0 in-use) 1))) - (set! (-> v1-0 in-use) v0-1) - v0-1 - ) - ) - ) + (set! (-> a3-5 pos quad) (-> arg2 quad))) + (let ((v0-1 (+ (-> v1-0 in-use) 1))) (set! (-> v1-0 in-use) v0-1) v0-1))) (defun sp-adjust-launch ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo) (arg2 (inline-array sp-field-init-spec))) "Adjust the fields based on the init-specs" (let ((s5-0 (new 'stack-no-clear 'sparticle-launchinfo))) (let ((s2-0 (new 'stack-no-clear 'matrix)) - (s3-0 (new 'stack-no-clear 'vector)) - ) - + (s3-0 (new 'stack-no-clear 'vector))) ;; use the field-init-spec to create a totally new launchinfo. - (sp-init-fields! - (the-as (pointer float) (-> s5-0 launchrot)) - arg2 - (sp-field-id launch-fields-start) - (sp-field-id launch-fields-end) - #t - ) - + (sp-init-fields! (the-as (pointer float) (-> s5-0 launchrot)) + arg2 + (sp-field-id launch-fields-start) + (sp-field-id launch-fields-end) + #t) ;; rotate vel to include the launchrot and conerot (matrix-rotate-xyz! s2-0 (-> s5-0 launchrot)) (vector3s-matrix*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s2-0) (matrix-rotate-xyz! s2-0 (-> s5-0 conerot)) (vector3s-matrix*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s2-0) - ;; cone axis (pre-rotation to local, y is default, but there's a flag for z) (if (logtest? (sp-cpuinfo-flag launch-along-z) (-> arg1 flags)) - (set-vector! s3-0 0.0 0.0 (-> s5-0 coneradius) 1.0) - (set-vector! s3-0 0.0 (-> s5-0 coneradius) 0.0 1.0) - ) + (set-vector! s3-0 0.0 0.0 (-> s5-0 coneradius) 1.0) + (set-vector! s3-0 0.0 (-> s5-0 coneradius) 0.0 1.0)) ;; rotate cone (vector-matrix*! s3-0 s3-0 s2-0) ;; add to the launch info (this is approximate, but who cares.) (+! (-> arg0 launchrot x) (-> s3-0 x)) (+! (-> arg0 launchrot y) (-> s3-0 y)) - (+! (-> arg0 launchrot z) (-> s3-0 z)) - ) - - + (+! (-> arg0 launchrot z) (-> s3-0 z))) ;; if desired, apply addition y rotation. (when (!= (-> s5-0 rotate-y) 0.0) (let ((s3-1 (new 'stack-no-clear 'matrix))) (matrix-rotate-y! s3-1 (-> s5-0 rotate-y)) (vector3s-rotate*! (the-as vector3s (-> arg0 launchrot)) (the-as vector3s (-> arg0 launchrot)) s3-1) (vector3s-rotate*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s3-1) - ;; optionally rotate acc. (if (not (logtest? (sp-cpuinfo-flag use-global-acc) (-> arg1 flags))) - (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s3-1) - ) - ) + (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s3-1))) ;; optionally rotate the cone (it seems like this happens too late, but maybe it's okay.) - (if (logtest? (sp-cpuinfo-flag set-conerot) (-> arg1 flags)) - (set! (-> arg0 conerot y) (+ 16384.0 (-> s5-0 rotate-y))) - ) - ) - ) + (if (logtest? (sp-cpuinfo-flag set-conerot) (-> arg1 flags)) (set! (-> arg0 conerot y) (+ 16384.0 (-> s5-0 rotate-y)))))) 0 - (none) - ) + (none)) (defun sp-euler-convert ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo)) "Convert rotations from euler angles to quaternions." (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((a1-1 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) - - ;; convert conerot to a quaternion - (set-vector! - a1-1 - (-> arg0 conerot x) - (-> arg0 conerot y) - (-> arg0 conerot z) - 1.0 - ) - (quaternion-zxy! s5-0 a1-1) - ;; flip the sign of w if needed. the sprite renderer _requires_ that w be positive - ;; because it doesn't actually store w! - ;; this code also preserves w. - (cond - ((< (-> s5-0 w) 0.0) - (.lvf vf1 (&-> arg0 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg0 conerot quad) vf1) - ) - (else - (.lvf vf1 (&-> arg0 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg0 conerot quad) vf1) - ) - ) - ) - - ;; scale the rate of rot-syvel (it's multiplied by a rate already) - (cond - (*sp-60-hz* - (set! (-> arg1 rot-syvel x) (* 5.0 (-> arg1 rot-syvel x))) - (set! (-> arg1 rot-syvel y) (* 5.0 (-> arg1 rot-syvel y))) - (set! (-> arg1 rot-syvel z) (* 5.0 (-> arg1 rot-syvel z))) - ) - (else - (set! (-> arg1 rot-syvel x) (* 6.0 (-> arg1 rot-syvel x))) - (set! (-> arg1 rot-syvel y) (* 6.0 (-> arg1 rot-syvel y))) - (set! (-> arg1 rot-syvel z) (* 6.0 (-> arg1 rot-syvel z))) - ) - ) - ;; this one gets stored in a separate rotvel3d. - (quaternion-zxy! (-> arg1 rotvel3d) (-> arg1 rot-syvel)) - 0 - (none) - ) - ) + (vf2 :class vf)) + (init-vf0-vector) + (let ((a1-1 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'quaternion))) + ;; convert conerot to a quaternion + (set-vector! a1-1 (-> arg0 conerot x) (-> arg0 conerot y) (-> arg0 conerot z) 1.0) + (quaternion-zxy! s5-0 a1-1) + ;; flip the sign of w if needed. the sprite renderer _requires_ that w be positive + ;; because it doesn't actually store w! + ;; this code also preserves w. + (cond + ((< (-> s5-0 w) 0.0) + (.lvf vf1 (&-> arg0 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg0 conerot quad) vf1)) + (else + (.lvf vf1 (&-> arg0 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg0 conerot quad) vf1)))) + ;; scale the rate of rot-syvel (it's multiplied by a rate already) + (cond + (*sp-60-hz* + (set! (-> arg1 rot-syvel x) (* 5.0 (-> arg1 rot-syvel x))) + (set! (-> arg1 rot-syvel y) (* 5.0 (-> arg1 rot-syvel y))) + (set! (-> arg1 rot-syvel z) (* 5.0 (-> arg1 rot-syvel z)))) + (else + (set! (-> arg1 rot-syvel x) (* 6.0 (-> arg1 rot-syvel x))) + (set! (-> arg1 rot-syvel y) (* 6.0 (-> arg1 rot-syvel y))) + (set! (-> arg1 rot-syvel z) (* 6.0 (-> arg1 rot-syvel z))))) + ;; this one gets stored in a separate rotvel3d. + (quaternion-zxy! (-> arg1 rotvel3d) (-> arg1 rot-syvel)) + 0 + (none))) (defun sp-rotate-system ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo) (arg2 transformq)) "Apply a rotation to the particle launching." @@ -438,28 +329,23 @@ (a0-1 arg2) (f0-0 (-> a0-1 quat x)) (f1-0 (-> a0-1 quat y)) - (f3-0 (-> a0-1 quat z)) - ) + (f3-0 (-> a0-1 quat z))) (set! (-> v1-0 x) f0-0) (set! (-> v1-0 y) f1-0) (set! (-> v1-0 z) f3-0) - (set! (-> v1-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0)))) - ) - (quaternion->matrix s5-0 a1-1) - ) + (set! (-> v1-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))))) + (quaternion->matrix s5-0 a1-1)) ;; rotate, preserving z as usual (vector3s-rotate*! (the-as vector3s (-> arg0 launchrot)) (the-as vector3s (-> arg0 launchrot)) s5-0) (vector3s-rotate*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s5-0) ;; also rotate acc if we would have done it previously. (if (not (logtest? (sp-cpuinfo-flag use-global-acc) (-> arg1 flags))) - (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s5-0) - ) - ) + (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s5-0))) 0 - (none) - ) + (none)) -(def-mips2c sp-launch-particles-var (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none)) +(def-mips2c sp-launch-particles-var + (function sparticle-system sparticle-launcher vector sparticle-launch-state sparticle-launch-control float none)) ;;;;;;;;;;;;;;; ;; enemy death @@ -481,119 +367,80 @@ (vf31 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (.lvf vf30 (&-> arg2 quad)) - (let ((v1-0 #x437f0000)) - (.mov vf31 v1-0) - ) - - (let ((s5-0 (new 'stack-no-clear 'sprite-vec-data-2d)) - ;; get a particle, from the particle system - ;; this gets us a "cpuinfo", which is the state of a particle. - (gp-0 (sp-get-particle arg0 0 (the-as sparticle-launch-state #f))) - ) - (if (not gp-0) + (vf6 :class vf)) + (init-vf0-vector) + (.lvf vf30 (&-> arg2 quad)) + (let ((v1-0 #x437f0000)) (.mov vf31 v1-0)) + (let ((s5-0 (new 'stack-no-clear 'sprite-vec-data-2d)) + ;; get a particle, from the particle system + ;; this gets us a "cpuinfo", which is the state of a particle. + (gp-0 (sp-get-particle arg0 0 (the-as sparticle-launch-state #f)))) + (if (not gp-0) ;; if it fails, give up. - (return 0) - ) - - (let* ((a1-2 (-> arg1 init-specs 0)) - ;; initialize the sprite fields. this is done to a temporary structure on the stack - ;; the death particle effect has some special initialization stuff below that will - ;; modify this data before setting the actual sprite data. - (a1-3 (sp-init-fields! - (&-> s5-0 x) - (the-as (inline-array sp-field-init-spec) a1-2) - (sp-field-id sprite-fields-start) - (sp-field-id sprite-fields-end) - #t - ) - ) - ) - - ;; initialize the cpu fields, this is the initial particle state. - (sp-init-fields! - (&-> gp-0 omega) - (the-as (inline-array sp-field-init-spec) a1-3) - (sp-field-id cpu-fields-start) - (sp-field-id cpu-fields-end) - #t - ) - ) - - ;; convert rotations - (set! (-> s5-0 matrix) 0) - (set! (-> s5-0 rot) (the float (sar (shl (the int (-> s5-0 rot)) 48) 48))) - - ;; convert color/position. - (.lvf vf4 (&-> s5-0 color quad)) - (.lvf vf5 (&-> s5-0 x-y-z-sx quad)) - (.min.x.vf vf4 vf4 vf31 :mask #b111) - (.add.vf vf5 vf5 vf30 :mask #b111) - (.svf (&-> s5-0 color quad) vf4) - (.svf (&-> s5-0 x-y-z-sx quad) vf5) - - (when (not *death-adgif*) - ;; first time we get here, set up the adgif shader. - (set! *death-adgif* (new 'static 'adgif-shader)) - (particle-adgif *death-adgif* (new 'static 'texture-id :index #x18 :page #x2)) - (set! (-> *death-adgif* alpha) (new 'static 'gs-alpha :b #x2 :d #x1)) + (return 0)) + (let* ((a1-2 (-> arg1 init-specs 0)) + ;; initialize the sprite fields. this is done to a temporary structure on the stack + ;; the death particle effect has some special initialization stuff below that will + ;; modify this data before setting the actual sprite data. + (a1-3 (sp-init-fields! (&-> s5-0 x) + (the-as (inline-array sp-field-init-spec) a1-2) + (sp-field-id sprite-fields-start) + (sp-field-id sprite-fields-end) + #t))) + ;; initialize the cpu fields, this is the initial particle state. + (sp-init-fields! (&-> gp-0 omega) + (the-as (inline-array sp-field-init-spec) a1-3) + (sp-field-id cpu-fields-start) + (sp-field-id cpu-fields-end) + #t)) + ;; convert rotations + (set! (-> s5-0 matrix) 0) + (set! (-> s5-0 rot) (the float (sar (shl (the int (-> s5-0 rot)) 48) 48))) + ;; convert color/position. + (.lvf vf4 (&-> s5-0 color quad)) + (.lvf vf5 (&-> s5-0 x-y-z-sx quad)) + (.min.x.vf vf4 vf4 vf31 :mask #b111) + (.add.vf vf5 vf5 vf30 :mask #b111) + (.svf (&-> s5-0 color quad) vf4) + (.svf (&-> s5-0 x-y-z-sx quad) vf5) + (when (not *death-adgif*) + ;; first time we get here, set up the adgif shader. + (set! *death-adgif* (new 'static 'adgif-shader)) + (particle-adgif *death-adgif* (new 'static 'texture-id :index #x18 :page #x2)) + (set! (-> *death-adgif* alpha) (new 'static 'gs-alpha :b #x2 :d #x1))) + ;; copy the death-adgif to the adgif of our particle + (let ((v1-14 (-> *death-adgif* quad 0 quad))) (set! (-> gp-0 adgif quad 0 quad) v1-14)) + (let ((v1-16 (-> *death-adgif* quad 1 quad))) (set! (-> gp-0 adgif quad 1 quad) v1-16)) + (let ((v1-18 (-> *death-adgif* quad 2 quad))) (set! (-> gp-0 adgif quad 2 quad) v1-18)) + (let ((v1-20 (-> *death-adgif* quad 3 quad))) (set! (-> gp-0 adgif quad 3 quad) v1-20)) + (let ((v1-22 (-> *death-adgif* quad 4 quad))) (set! (-> gp-0 adgif quad 4 quad) v1-22)) + ;; set up some color stuff. + (.lvf vf4 (&-> (-> *time-of-day-context* current-prt-color) quad)) + (.lvf vf5 (&-> s5-0 color quad)) + (.lvf vf6 (&-> gp-0 fade quad)) + (.mul.vf vf5 vf5 vf4 :mask #b111) + (.mul.vf vf6 vf6 vf4 :mask #b111) + (.svf (&-> s5-0 color quad) vf5) + (.svf (&-> gp-0 fade quad) vf6) + ;; + (set! (-> gp-0 key) (the-as sparticle-launch-control 0)) + (set! (-> gp-0 binding) #f) + ;; copy the sprite data + (let ((v1-26 (-> gp-0 sprite))) + (.lvf vf1 (&-> s5-0 x-y-z-sx quad)) + (.lvf vf2 (&-> s5-0 flag-rot-sy quad)) + (.lvf vf3 (&-> s5-0 color quad)) + (.svf (&-> v1-26 x-y-z-sx quad) vf1) + (.svf (&-> v1-26 flag-rot-sy quad) vf2) + (.sub.w.vf vf3 vf0 vf0 :mask #b1000) + (.svf (&-> v1-26 color quad) vf3)) + ;; we're done! + (logior! (-> gp-0 flags) (sp-cpuinfo-flag ready-to-launch)) + (set! (-> gp-0 cache-alpha) (-> s5-0 a)) + ;; I'm not really sure how the particles get launched from here yet. ) - - ;; copy the death-adgif to the adgif of our particle - (let ((v1-14 (-> *death-adgif* quad 0 quad))) - (set! (-> gp-0 adgif quad 0 quad) v1-14) - ) - (let ((v1-16 (-> *death-adgif* quad 1 quad))) - (set! (-> gp-0 adgif quad 1 quad) v1-16) - ) - (let ((v1-18 (-> *death-adgif* quad 2 quad))) - (set! (-> gp-0 adgif quad 2 quad) v1-18) - ) - (let ((v1-20 (-> *death-adgif* quad 3 quad))) - (set! (-> gp-0 adgif quad 3 quad) v1-20) - ) - (let ((v1-22 (-> *death-adgif* quad 4 quad))) - (set! (-> gp-0 adgif quad 4 quad) v1-22) - ) - - ;; set up some color stuff. - (.lvf vf4 (&-> (-> *time-of-day-context* current-prt-color) quad)) - (.lvf vf5 (&-> s5-0 color quad)) - (.lvf vf6 (&-> gp-0 fade quad)) - (.mul.vf vf5 vf5 vf4 :mask #b111) - (.mul.vf vf6 vf6 vf4 :mask #b111) - (.svf (&-> s5-0 color quad) vf5) - (.svf (&-> gp-0 fade quad) vf6) - - ;; - (set! (-> gp-0 key) (the-as sparticle-launch-control 0)) - (set! (-> gp-0 binding) #f) - - ;; copy the sprite data - (let ((v1-26 (-> gp-0 sprite))) - (.lvf vf1 (&-> s5-0 x-y-z-sx quad)) - (.lvf vf2 (&-> s5-0 flag-rot-sy quad)) - (.lvf vf3 (&-> s5-0 color quad)) - (.svf (&-> v1-26 x-y-z-sx quad) vf1) - (.svf (&-> v1-26 flag-rot-sy quad) vf2) - (.sub.w.vf vf3 vf0 vf0 :mask #b1000) - (.svf (&-> v1-26 color quad) vf3) - ) - - ;; we're done! - (logior! (-> gp-0 flags) (sp-cpuinfo-flag ready-to-launch)) - (set! (-> gp-0 cache-alpha) (-> s5-0 a)) - - ;; I'm not really sure how the particles get launched from here yet. - ) - 0 - (none) - ) - ) - + 0 + (none))) (defun sp-clear-queue () "Launch all particles in the queue." @@ -601,104 +448,63 @@ (when (> (-> gp-0 in-use) 0) (dotimes (s5-0 (-> gp-0 in-use)) (let ((v1-4 (-> gp-0 queue s5-0))) - (launch-particles :system (-> v1-4 sp-system) (-> v1-4 sp-launcher) (-> v1-4 pos) :rate 1.0) - ) - ) + (launch-particles :system (-> v1-4 sp-system) (-> v1-4 sp-launcher) (-> v1-4 pos) :rate 1.0))) (set! (-> gp-0 in-use) 0) - 0 - ) - ) + 0)) 0 - (none) - ) + (none)) (defun sp-relaunch-setup-fields ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) "Reset fields of an existing particle" (let ((a1-1 (-> arg1 init-specs 0)) - (s4-0 (logand (-> arg2 flags) (sp-cpuinfo-flag level0 level1))) - ) + (s4-0 (logand (-> arg2 flags) (sp-cpuinfo-flag level0 level1)))) (set! (-> arg2 next-launcher) (the-as basic 0)) (cond - ((and (logtest? (-> arg2 flags) (sp-cpuinfo-flag bit12)) - (not (logtest? (-> arg2 flags) (sp-cpuinfo-flag aux-list))) - ) + ((and (logtest? (-> arg2 flags) (sp-cpuinfo-flag bit12)) (not (logtest? (-> arg2 flags) (sp-cpuinfo-flag aux-list)))) (let ((f20-0 (-> arg3 r-g-b-a x)) (f22-0 (-> arg3 r-g-b-a y)) (f24-0 (-> arg3 r-g-b-a z)) (f26-0 (-> arg2 fade x)) (f28-0 (-> arg2 fade y)) - (f30-0 (-> arg2 fade z)) - ) + (f30-0 (-> arg2 fade z))) (set! (-> arg3 r-g-b-a x) 99999.0) (set! (-> arg3 r-g-b-a y) 99999.0) (set! (-> arg3 r-g-b-a z) 99999.0) (set! (-> arg2 fade x) 99999.0) (set! (-> arg2 fade y) 99999.0) (set! (-> arg2 fade z) 99999.0) - (let ((a1-2 (sp-init-fields! - (the-as (pointer float) (-> arg3 x-y-z-sx)) - (the-as (inline-array sp-field-init-spec) a1-1) - (sp-field-id sprite-fields-start) - (sp-field-id sprite-fields-end) - #f - ) - ) - ) - (sp-init-fields! (&-> arg2 omega) a1-2 (sp-field-id cpu-fields-start) (sp-field-id cpu-fields-end) #f) - ) + (let ((a1-2 (sp-init-fields! (the-as (pointer float) (-> arg3 x-y-z-sx)) + (the-as (inline-array sp-field-init-spec) a1-1) + (sp-field-id sprite-fields-start) + (sp-field-id sprite-fields-end) + #f))) + (sp-init-fields! (&-> arg2 omega) a1-2 (sp-field-id cpu-fields-start) (sp-field-id cpu-fields-end) #f)) ;; clear all flags except for the level. (logior! (-> arg2 flags) s4-0) - (if (logtest? (-> arg2 flags) (sp-cpuinfo-flag level1)) - (-> *level* level1) - (-> *level* level0) - ) + (if (logtest? (-> arg2 flags) (sp-cpuinfo-flag level1)) (-> *level* level1) (-> *level* level0)) (let ((v1-16 (-> *time-of-day-context* current-prt-color))) (if (= (-> arg3 r-g-b-a x) 99999.0) - (set! (-> arg3 r-g-b-a x) f20-0) - (set! (-> arg3 r-g-b-a x) (* (-> arg3 r-g-b-a x) (-> v1-16 x))) - ) + (set! (-> arg3 r-g-b-a x) f20-0) + (set! (-> arg3 r-g-b-a x) (* (-> arg3 r-g-b-a x) (-> v1-16 x)))) (if (= (-> arg3 r-g-b-a y) 99999.0) - (set! (-> arg3 r-g-b-a y) f22-0) - (set! (-> arg3 r-g-b-a y) (* (-> arg3 r-g-b-a y) (-> v1-16 y))) - ) + (set! (-> arg3 r-g-b-a y) f22-0) + (set! (-> arg3 r-g-b-a y) (* (-> arg3 r-g-b-a y) (-> v1-16 y)))) (if (= (-> arg3 r-g-b-a z) 99999.0) - (set! (-> arg3 r-g-b-a z) f24-0) - (set! (-> arg3 r-g-b-a z) (* (-> arg3 r-g-b-a z) (-> v1-16 z))) - ) - (if (= (-> arg2 fade x) 99999.0) - (set! (-> arg2 fade x) f26-0) - (set! (-> arg2 fade x) (* (-> arg2 fade x) (-> v1-16 x))) - ) - (if (= (-> arg2 fade y) 99999.0) - (set! (-> arg2 fade y) f28-0) - (set! (-> arg2 fade y) (* (-> arg2 fade y) (-> v1-16 y))) - ) - (if (= (-> arg2 fade z) 99999.0) - (set! (-> arg2 fade z) f30-0) - (set! (-> arg2 fade z) (* (-> arg2 fade z) (-> v1-16 z))) - ) - ) - ) - ) + (set! (-> arg3 r-g-b-a z) f24-0) + (set! (-> arg3 r-g-b-a z) (* (-> arg3 r-g-b-a z) (-> v1-16 z)))) + (if (= (-> arg2 fade x) 99999.0) (set! (-> arg2 fade x) f26-0) (set! (-> arg2 fade x) (* (-> arg2 fade x) (-> v1-16 x)))) + (if (= (-> arg2 fade y) 99999.0) (set! (-> arg2 fade y) f28-0) (set! (-> arg2 fade y) (* (-> arg2 fade y) (-> v1-16 y)))) + (if (= (-> arg2 fade z) 99999.0) (set! (-> arg2 fade z) f30-0) (set! (-> arg2 fade z) (* (-> arg2 fade z) (-> v1-16 z))))))) (else - (let ((a1-3 (sp-init-fields! - (the-as (pointer float) (-> arg3 x-y-z-sx)) - (the-as (inline-array sp-field-init-spec) a1-1) - (sp-field-id sprite-fields-start) - (sp-field-id sprite-fields-end) - #f - ) - ) - ) - (sp-init-fields! (&-> arg2 omega) a1-3 (sp-field-id cpu-fields-start) (sp-field-id cpu-fields-end) #f) - ) - ) - ) - ) + (let ((a1-3 (sp-init-fields! (the-as (pointer float) (-> arg3 x-y-z-sx)) + (the-as (inline-array sp-field-init-spec) a1-1) + (sp-field-id sprite-fields-start) + (sp-field-id sprite-fields-end) + #f))) + (sp-init-fields! (&-> arg2 omega) a1-3 (sp-field-id cpu-fields-start) (sp-field-id cpu-fields-end) #f))))) 0 0 - (none) - ) + (none)) (defun sp-relaunch-particle-2d ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) "relaunch a 2d particle" @@ -707,98 +513,61 @@ (set! (-> arg2 func) add-to-sprite-aux-list) (set! (-> arg3 r-g-b-a w) 0.0) (set! (-> arg2 fade w) 0.0) - (logclear! (-> arg2 flags) (sp-cpuinfo-flag bit2)) - ) + (logclear! (-> arg2 flags) (sp-cpuinfo-flag bit2))) 0 - (none) - ) + (none)) (defun sp-relaunch-particle-3d ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) "relaunch a 3d particle" - ;; do all the 3d-specific stuff here, the general relaunch only does 2d fields. (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 (new 'stack-no-clear 'quaternion))) - (let* ((v1-0 s4-0) - (a2-1 arg3) - (f0-0 (-> a2-1 qx-qy-qz-sy x)) - (f1-0 (-> a2-1 qx-qy-qz-sy y)) - (f3-0 (-> a2-1 qx-qy-qz-sy z)) - ) - (set! (-> v1-0 x) f0-0) - (set! (-> v1-0 y) f1-0) - (set! (-> v1-0 z) f3-0) - (set! - (-> v1-0 w) - (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))) - ) - ) - (set! (-> arg3 qx-qy-qz-sy x) 0.0) - (set! (-> arg3 qx-qy-qz-sy y) 0.0) - (set! (-> arg3 qx-qy-qz-sy z) 0.0) - (sp-relaunch-setup-fields arg0 arg1 arg2 arg3) - (let ((a1-1 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'quaternion)) - ) - (set-vector! - a1-1 - (-> arg3 qx-qy-qz-sy x) - (-> arg3 qx-qy-qz-sy y) - (-> arg3 qx-qy-qz-sy z) - 1.0 - ) - (quaternion-zxy! s3-0 a1-1) - (cond - ((logtest? (sp-cpuinfo-flag left-multiply-quat) (-> arg2 flags)) - (quaternion*! s3-0 s4-0 s3-0) - ) - (else - (if (logtest? (sp-cpuinfo-flag right-multiply-quat) (-> arg2 flags)) - (quaternion*! s3-0 s3-0 s4-0) - ) - ) - ) - (cond - ((< (-> s3-0 w) 0.0) - (.lvf vf1 (&-> arg3 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s3-0 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg3 qx-qy-qz-sy quad) vf1) - ) + (vf2 :class vf)) + (init-vf0-vector) + (let ((s4-0 (new 'stack-no-clear 'quaternion))) + (let* ((v1-0 s4-0) + (a2-1 arg3) + (f0-0 (-> a2-1 qx-qy-qz-sy x)) + (f1-0 (-> a2-1 qx-qy-qz-sy y)) + (f3-0 (-> a2-1 qx-qy-qz-sy z))) + (set! (-> v1-0 x) f0-0) + (set! (-> v1-0 y) f1-0) + (set! (-> v1-0 z) f3-0) + (set! (-> v1-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))))) + (set! (-> arg3 qx-qy-qz-sy x) 0.0) + (set! (-> arg3 qx-qy-qz-sy y) 0.0) + (set! (-> arg3 qx-qy-qz-sy z) 0.0) + (sp-relaunch-setup-fields arg0 arg1 arg2 arg3) + (let ((a1-1 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'quaternion))) + (set-vector! a1-1 (-> arg3 qx-qy-qz-sy x) (-> arg3 qx-qy-qz-sy y) (-> arg3 qx-qy-qz-sy z) 1.0) + (quaternion-zxy! s3-0 a1-1) + (cond + ((logtest? (sp-cpuinfo-flag left-multiply-quat) (-> arg2 flags)) (quaternion*! s3-0 s4-0 s3-0)) + (else (if (logtest? (sp-cpuinfo-flag right-multiply-quat) (-> arg2 flags)) (quaternion*! s3-0 s3-0 s4-0)))) + (cond + ((< (-> s3-0 w) 0.0) + (.lvf vf1 (&-> arg3 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s3-0 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg3 qx-qy-qz-sy quad) vf1)) + (else + (.lvf vf1 (&-> arg3 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s3-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg3 qx-qy-qz-sy quad) vf1))))) + (cond + (*sp-60-hz* + (set! (-> arg2 rot-syvel x) (* 5.0 (-> arg2 rot-syvel x))) + (set! (-> arg2 rot-syvel y) (* 5.0 (-> arg2 rot-syvel y))) + (set! (-> arg2 rot-syvel z) (* 5.0 (-> arg2 rot-syvel z)))) (else - (.lvf vf1 (&-> arg3 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s3-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg3 qx-qy-qz-sy quad) vf1) - ) - ) - ) - ) - (cond - (*sp-60-hz* - (set! (-> arg2 rot-syvel x) (* 5.0 (-> arg2 rot-syvel x))) - (set! (-> arg2 rot-syvel y) (* 5.0 (-> arg2 rot-syvel y))) - (set! (-> arg2 rot-syvel z) (* 5.0 (-> arg2 rot-syvel z))) - ) - (else - (set! (-> arg2 rot-syvel x) (* 6.0 (-> arg2 rot-syvel x))) - (set! (-> arg2 rot-syvel y) (* 6.0 (-> arg2 rot-syvel y))) - (set! (-> arg2 rot-syvel z) (* 6.0 (-> arg2 rot-syvel z))) - ) - ) - (quaternion-zxy! (-> arg2 rotvel3d) (-> arg2 rot-syvel)) - 0 - (none) - ) - ) - - - - + (set! (-> arg2 rot-syvel x) (* 6.0 (-> arg2 rot-syvel x))) + (set! (-> arg2 rot-syvel y) (* 6.0 (-> arg2 rot-syvel y))) + (set! (-> arg2 rot-syvel z) (* 6.0 (-> arg2 rot-syvel z))))) + (quaternion-zxy! (-> arg2 rotvel3d) (-> arg2 rot-syvel)) + 0 + (none))) ;;;;;;;;;;;;;;;;;;;; ;; launch control @@ -819,10 +588,8 @@ (set! (-> this matrix) 0) (set! (-> this last-spawn-frame) (the-as int (+ (-> *display* real-actual-frame-counter) (seconds -0.007)))) (set! (-> this last-spawn-time) 0) - ;; iterate through the effects in the group (dotimes (s3-0 (-> arg0 length)) - (let* ((a0-2 (-> arg0 launcher s3-0)) ;; the group-item (definition of the effect) (a1-2 (-> *part-id-table* (-> a0-2 launcher))) ;; the actual effect for the group item (v1-9 (-> this data s5-0)) ;; our state for this particular instance of this effect within the group. @@ -842,295 +609,181 @@ (logclear! (-> v1-9 flags) (sp-launch-state-flags launcher-active)) (set! (-> v1-9 origin) #f) (set! (-> v1-9 sprite3d) #f) - (set! (-> v1-9 sprite) #f) - ) + (set! (-> v1-9 sprite) #f)) (else - (logior! (-> v1-9 flags) (sp-launch-state-flags launcher-active)) - ;; set the position now. - (set! (-> v1-9 origin) (-> this center)) - (set! (-> v1-9 sprite3d) #f) - (set! (-> v1-9 sprite) #f) - ) - ) - (+! s5-0 1) - ) - (else - (format 0 "initialize called with non-particle-launcher~%") - ) - ) - ) - ) - ) - (set! (-> this length) s5-0) - ) + (logior! (-> v1-9 flags) (sp-launch-state-flags launcher-active)) + ;; set the position now. + (set! (-> v1-9 origin) (-> this center)) + (set! (-> v1-9 sprite3d) #f) + (set! (-> v1-9 sprite) #f))) + (+! s5-0 1)) + (else (format 0 "initialize called with non-particle-launcher~%")))))) + (set! (-> this length) s5-0)) 0 - (none) - ) + (none)) (defmethod create-launch-control ((this sparticle-launch-group) (arg0 process)) "create a launch-control to hold the state of the particles. stored on the process heap." (let ((gp-0 (the-as sparticle-launch-control (new 'process 'sparticle-launch-control (-> this length))))) (when (zero? gp-0) (go process-drawable-art-error "memory") - (return (the-as sparticle-launch-control 0)) - ) + (return (the-as sparticle-launch-control 0))) (initialize gp-0 this arg0) - gp-0 - ) - ) + gp-0)) (defmethod kill-and-free-particles ((this sparticle-launch-control)) "kill all the particles" - ;; clear the flag. (countdown (v1-0 (-> this length)) - (let ((a0-3 (-> this data v1-0))) - (logclear! (-> a0-3 flags) (sp-launch-state-flags particles-active)) - ) - ) + (let ((a0-3 (-> this data v1-0))) (logclear! (-> a0-3 flags) (sp-launch-state-flags particles-active)))) (set! (-> this local-clock) 0) (set! (-> this fade) 1.0) - ;; kill the particles (let them go back to the sparticle system.) (kill-all-particles-with-key this) ;; release matrices - (if (> (-> this matrix) 0) - (sprite-release-user-hvdf (-> this matrix)) - ) + (if (> (-> this matrix) 0) (sprite-release-user-hvdf (-> this matrix))) 0 - (none) - ) + (none)) (defmethod kill-particles ((this sparticle-launch-control)) "kill the particles, but don't clear flags or free hvdfs." (kill-all-particles-with-key this) 0 - (none) - ) + (none)) (defmethod is-visible? ((this sparticle-launch-control) (arg0 vector)) "Is the effect visible?. arg0 is the offset of the effect" (let* ((v1-0 (-> this group)) - (f0-0 (-> v1-0 bounds w)) - ) - (cond - ((= f0-0 0.0) ;; visibility sphere has 0 size, just say yes always - #t - ) - ((nonzero? (-> this matrix)) ;; I guess if we have an extra matrix, we can't figure it out? - #t - ) - (else - ;; sphere with offset - (let ((gp-1 (vector+! (new 'stack-no-clear 'vector) arg0 (the-as vector (-> v1-0 bounds))))) - (set! (-> gp-1 w) f0-0) - - ;; debug draw sphere - (if (and *display-actor-vis* - (or (not *display-actor-anim*) - (name= *display-actor-anim* (-> this proc name)) - ) - ) - (add-debug-sphere - *display-actor-vis* - (bucket-id debug) - gp-1 - (-> gp-1 w) - (new 'static 'rgba :g #xff :a #x80) - ) - ) - - ;; og:preserve-this can we see it? - (#if (not PC_PORT) - (sphere-in-view-frustum? (the-as sphere gp-1)) - (if (-> *pc-settings* ps2-parts?) - ;; og:preserve-this pc port: launchers have larger bsphere if you have ps2 parts off - (sphere-in-view-frustum? (the-as sphere gp-1)) - (sphere-in-view-frustum? (the-as sphere (begin (*! (-> gp-1 w) 8.0) gp-1))) - ) - ) - ) - ) - ) - ) - ) - + (f0-0 (-> v1-0 bounds w))) + (cond + ((= f0-0 0.0) ;; visibility sphere has 0 size, just say yes always + #t) + ((nonzero? (-> this matrix)) ;; I guess if we have an extra matrix, we can't figure it out? + #t) + (else + ;; sphere with offset + (let ((gp-1 (vector+! (new 'stack-no-clear 'vector) arg0 (the-as vector (-> v1-0 bounds))))) + (set! (-> gp-1 w) f0-0) + ;; debug draw sphere + (if (and *display-actor-vis* (or (not *display-actor-anim*) (name= *display-actor-anim* (-> this proc name)))) + (add-debug-sphere *display-actor-vis* (bucket-id debug) gp-1 (-> gp-1 w) (new 'static 'rgba :g #xff :a #x80))) + ;; og:preserve-this can we see it? + (#if (not PC_PORT) + (sphere-in-view-frustum? (the-as sphere gp-1)) + (if (-> *pc-settings* ps2-parts?) + ;; og:preserve-this pc port: launchers have larger bsphere if you have ps2 parts off + (sphere-in-view-frustum? (the-as sphere gp-1)) + (sphere-in-view-frustum? (the-as sphere (begin (*! (-> gp-1 w) 8.0) gp-1)))))))))) (defmethod spawn ((this sparticle-launch-control) (arg0 vector)) (set! (-> this center quad) (-> arg0 quad)) - ;; og:preserve-this ;; check if we are visible (remove this check to force particles to be drawn.) - (if (not (or (is-visible? this arg0) - (logtest? (-> this group flags) (sp-group-flag always-draw screen-space)) - ) - ) - (return (the-as object 0)) - ) + (if (not (or (is-visible? this arg0) (logtest? (-> this group flags) (sp-group-flag always-draw screen-space)))) + (return (the-as object 0))) (let ((s4-0 *particle-300hz-timer*) - (s5-0 (-> this last-spawn-time)) - ) - + (s5-0 (-> this last-spawn-time))) ;; weird stuff for frame counting (let ((v1-8 (-> *display* real-actual-frame-counter))) - (if (!= v1-8 (+ (-> this last-spawn-frame) 1)) - (set! s5-0 (- s4-0 (logand (the-as int (-> *sp-frame-time* x)) 255))) - ) - ) + (if (!= v1-8 (+ (-> this last-spawn-frame) 1)) (set! s5-0 (- s4-0 (logand (the-as int (-> *sp-frame-time* x)) 255))))) (set! (-> this last-spawn-frame) (the-as int (-> *display* real-actual-frame-counter))) (set! (-> this last-spawn-time) s4-0) (when (logtest? (-> this group flags) (sp-group-flag use-local-clock)) (set! s5-0 (-> this local-clock)) (+! (-> this local-clock) (logand (the-as int (-> *sp-frame-time* x)) 255)) - (set! s4-0 (-> this local-clock)) - ) - + (set! s4-0 (-> this local-clock))) (let ((f30-0 (vector-vector-distance arg0 (math-camera-pos))) ;; hour mask - (s3-1 (ash 1 (if *time-of-day-proc* - (-> *time-of-day-proc* 0 hour) - 0 - ) - ) - ) - ) + (s3-1 (ash 1 (if *time-of-day-proc* (-> *time-of-day-proc* 0 hour) 0)))) (if (nonzero? (-> this matrix)) ;; if we have an additional matrix, say we're at the camera so we always draw. - (set! f30-0 0.0) - ) - + (set! f30-0 0.0)) ;; og:preserve-this if we have ps2 particles off, say we're at the camera (with-pc - (if (not (-> *pc-settings* ps2-parts?)) - (set! f30-0 0.0))) - + (if (not (-> *pc-settings* ps2-parts?)) (set! f30-0 0.0))) ;; loop over particles in the group. (let ((s2-1 (-> this length))) - (while (begin (label cfg-79) (nonzero? s2-1)) + (while (begin + (label cfg-79) + (nonzero? s2-1)) (+! s2-1 -1) (let* ((a3-0 (-> this data s2-1)) (v1-29 (-> a3-0 group-item)) - (a1-4 (-> *part-id-table* (-> v1-29 launcher))) - ) - (when (and a1-4 - (nonzero? a1-4) - (logtest? (-> a3-0 flags) (sp-launch-state-flags launcher-active)) - ) + (a1-4 (-> *part-id-table* (-> v1-29 launcher)))) + (when (and a1-4 (nonzero? a1-4) (logtest? (-> a3-0 flags) (sp-launch-state-flags launcher-active))) ;; we are active, and it is possible to launch. (let ((f0-2 1.0)) - (if (!= (-> v1-29 falloff-to) 0.0) - (set! f0-2 (- 1.0 (/ f30-0 (-> v1-29 falloff-to)))) - ) - + (if (!= (-> v1-29 falloff-to) 0.0) (set! f0-2 (- 1.0 (/ f30-0 (-> v1-29 falloff-to))))) ;; reject if bad type - (let ((a0-26 sparticle-launcher)) - (b! (!= (-> a1-4 type) a0-26) cfg-78 :delay (nop!)) - ) - + (let ((a0-26 sparticle-launcher)) (b! (!= (-> a1-4 type) a0-26) cfg-78 :delay (nop!))) ;; og:preserve-this PAL patch here ;; ?? - (b! (zero? (logand (-> v1-29 flags) (sp-group-item-flag launch-asap bit6))) - cfg-36 :delay (nop!) - ) - + (b! (zero? (logand (-> v1-29 flags) (sp-group-item-flag launch-asap bit6))) cfg-36 :delay (nop!)) (when (or (zero? (logand (-> a3-0 flags) (sp-launch-state-flags particles-active))) - (logtest? (-> v1-29 flags) (sp-group-item-flag bit6)) - ) + (logtest? (-> v1-29 flags) (sp-group-item-flag bit6))) ;; particles are not active, lets activate them. (set! (-> a3-0 spawn-time) (the-as uint s4-0)) (logior! (-> a3-0 flags) (sp-launch-state-flags particles-active)) (if (< 0.0 f0-2) - (launch-particles - :system (if (logtest? (-> v1-29 flags) (sp-group-item-flag is-3d)) - *sp-particle-system-3d* - *sp-particle-system-2d* - ) - a1-4 - (-> a3-0 origin) - :launch-state a3-0 - :launch-control this - :rate f0-2 - ) - ) - ) + (launch-particles :system + (if (logtest? (-> v1-29 flags) (sp-group-item-flag is-3d)) *sp-particle-system-3d* *sp-particle-system-2d*) + a1-4 + (-> a3-0 origin) + :launch-state + a3-0 + :launch-control + this + :rate + f0-2))) (b! #t cfg-77 :delay (nop!)) - - (label cfg-36) - ;; reject if bad time of day (when (logtest? s3-1 (-> v1-29 hour-mask)) 0 - (goto cfg-77) - ) + (goto cfg-77)) (when (not (or (= (-> v1-29 fade-after) 0.0) (< f30-0 (-> v1-29 fade-after)))) 0 (b! #t cfg-77 :delay (nop!)) - (set! v1-29 (the-as sparticle-group-item 0)) - ) + (set! v1-29 (the-as sparticle-group-item 0))) (b! (nonzero? (-> v1-29 period)) cfg-50) (let ((f0-4 (* 0.2 (the float (- s4-0 s5-0)) f0-2))) (b! #t cfg-72 :delay (nop!)) (label cfg-50) (let ((a2-5 (mod (+ s5-0 (-> this data s2-1 offset)) (the-as int (-> v1-29 period)))) (a0-56 (mod (the-as uint (+ s4-0 (-> this data s2-1 offset))) (-> v1-29 period))) - (t0-2 (-> v1-29 length)) - ) - (set! f0-4 (cond - ((and (< a2-5 (the-as int t0-2)) (< a0-56 t0-2)) - (* 0.2 (the float (- s4-0 s5-0)) f0-2) - ) - ((and (< a2-5 (the-as int t0-2)) (>= a0-56 t0-2)) - (* 0.2 (the float (- t0-2 (the-as uint a2-5))) f0-2) - ) - ((and (>= a2-5 (the-as int t0-2)) (< a0-56 t0-2)) - (* 0.2 (the float a0-56) f0-2) - ) - (else - (when (not (logtest? (-> v1-29 flags) (sp-group-item-flag bit1))) - 0 - (goto cfg-77) - ) - (when (< (the-as uint (- s4-0 (the-as int (-> this data s2-1 spawn-time)))) (-> v1-29 period)) - 0 - (goto cfg-77) - ) - (set! (-> this data s2-1 offset) (- (-> v1-29 period) a0-56)) - (* 0.2 (the float (- s4-0 s5-0)) f0-2) - ) - ) - ) - ) + (t0-2 (-> v1-29 length))) + (set! f0-4 + (cond + ((and (< a2-5 (the-as int t0-2)) (< a0-56 t0-2)) (* 0.2 (the float (- s4-0 s5-0)) f0-2)) + ((and (< a2-5 (the-as int t0-2)) (>= a0-56 t0-2)) (* 0.2 (the float (- t0-2 (the-as uint a2-5))) f0-2)) + ((and (>= a2-5 (the-as int t0-2)) (< a0-56 t0-2)) (* 0.2 (the float a0-56) f0-2)) + (else + (when (not (logtest? (-> v1-29 flags) (sp-group-item-flag bit1))) + 0 + (goto cfg-77)) + (when (< (the-as uint (- s4-0 (the-as int (-> this data s2-1 spawn-time)))) (-> v1-29 period)) + 0 + (goto cfg-77)) + (set! (-> this data s2-1 offset) (- (-> v1-29 period) a0-56)) + (* 0.2 (the float (- s4-0 s5-0)) f0-2))))) (label cfg-72) (set! (-> a3-0 spawn-time) (the-as uint s4-0)) (logior! (-> a3-0 flags) (sp-launch-state-flags particles-active)) (if (< 0.0 f0-4) - (launch-particles - :system (if (logtest? (-> v1-29 flags) (sp-group-item-flag is-3d)) - *sp-particle-system-3d* - *sp-particle-system-2d* - ) - a1-4 - (-> a3-0 origin) - :launch-state a3-0 - :launch-control this - :rate f0-4 - ) - ) - ) - ) + (launch-particles :system + (if (logtest? (-> v1-29 flags) (sp-group-item-flag is-3d)) *sp-particle-system-3d* *sp-particle-system-2d*) + a1-4 + (-> a3-0 origin) + :launch-state + a3-0 + :launch-control + this + :rate + f0-4)))) (label cfg-77) (b! #t cfg-79 :delay (nop!)) (label cfg-78) - (format 0 "spawn called for non-sparticle-launcher~%") - ) - ) - ) - ) - ) - ) - 0 - ) - + (format 0 "spawn called for non-sparticle-launcher~%"))))))) + 0) ;;;;;;;;;;;;;;;;;;;;;;; ;; tracking callbacks @@ -1143,55 +796,43 @@ (let ((v1-3 (-> (the-as process-drawable (-> arg1 key proc)) root trans))) (set! (-> arg2 x) (-> v1-3 x)) (set! (-> arg2 y) (-> v1-3 y)) - (set! (-> arg2 z) (-> v1-3 z)) - ) + (set! (-> arg2 z) (-> v1-3 z))) 0 - (none) - ) - + (none)) (defun sparticle-track-root-prim ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 vector)) "track the root of the collision geometry (must use collide-shape for root)" - (let ((v1-4 (-> (the-as collide-shape (-> (the-as process-drawable (-> arg1 key proc)) root)) root-prim prim-core)) - ) + (let ((v1-4 (-> (the-as collide-shape (-> (the-as process-drawable (-> arg1 key proc)) root)) root-prim prim-core))) (set! (-> arg2 x) (-> v1-4 world-sphere x)) (set! (-> arg2 y) (-> v1-4 world-sphere y)) - (set! (-> arg2 z) (-> v1-4 world-sphere z)) - ) + (set! (-> arg2 z) (-> v1-4 world-sphere z))) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;;; ;; birth funcs ;;;;;;;;;;;;;;;;;;;;; - (defun birth-func-copy-rot-color ((arg0 sparticle-system) - (arg1 sparticle-cpuinfo) - (arg2 sprite-vec-data-3d) - (arg3 sparticle-launcher) - (arg4 sparticle-launch-state) - ) + (arg1 sparticle-cpuinfo) + (arg2 sprite-vec-data-3d) + (arg3 sparticle-launcher) + (arg4 sparticle-launch-state)) (local-vars (v1-4 float) (v1-5 float)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((s5-0 (-> arg4 sprite))) (let ((s4-0 (new 'stack-no-clear 'vector))) (let* ((v1-0 arg2) (f0-0 (-> v1-0 qx-qy-qz-sy x)) (f1-0 (-> v1-0 qx-qy-qz-sy y)) - (f3-0 (-> v1-0 qx-qy-qz-sy z)) - ) + (f3-0 (-> v1-0 qx-qy-qz-sy z))) (set! (-> s4-0 x) f0-0) (set! (-> s4-0 y) f1-0) (set! (-> s4-0 z) f3-0) - (set! (-> s4-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0)))) - ) + (set! (-> s4-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))))) (quaternion-rotate-y! (the-as quaternion s4-0) (the-as quaternion s4-0) (-> s5-0 sprite rot)) (let ((v1-3 arg2)) (cond @@ -1200,62 +841,48 @@ (.lvf vf2 (&-> s4-0 quad)) (.sub.vf vf1 vf0 vf2 :mask #b111) (.svf (&-> v1-3 qx-qy-qz-sy quad) vf1) - (.mov v1-4 vf1) - ) + (.mov v1-4 vf1)) (else - (.lvf vf1 (&-> v1-3 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s4-0 quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-3 qx-qy-qz-sy quad) vf1) - (.mov v1-5 vf1) - ) - ) - ) - ) + (.lvf vf1 (&-> v1-3 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s4-0 quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-3 qx-qy-qz-sy quad) vf1) + (.mov v1-5 vf1))))) (set! (-> arg2 r-g-b-a x) (-> s5-0 sprite r)) (set! (-> arg2 r-g-b-a y) (-> s5-0 sprite g)) - (set! (-> arg2 r-g-b-a z) (-> s5-0 sprite b)) - ) + (set! (-> arg2 r-g-b-a z) (-> s5-0 sprite b))) 0 - (none) - ) - ) + (none))) (define *global-toggle* 0) (defun birth-func-copy2-rot-color ((arg0 sparticle-system) - (arg1 sparticle-cpuinfo) - (arg2 sprite-vec-data-3d) - (arg3 sparticle-launcher) - (arg4 sparticle-launch-state) - ) + (arg1 sparticle-cpuinfo) + (arg2 sprite-vec-data-3d) + (arg3 sparticle-launcher) + (arg4 sparticle-launch-state)) (local-vars (v1-15 float) (v1-16 float)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((s5-0 (-> arg4 sprite))) (let ((s4-0 (new 'stack-no-clear 'vector))) (let* ((v1-0 arg2) (f0-0 (-> v1-0 qx-qy-qz-sy x)) (f1-0 (-> v1-0 qx-qy-qz-sy y)) - (f3-0 (-> v1-0 qx-qy-qz-sy z)) - ) + (f3-0 (-> v1-0 qx-qy-qz-sy z))) (set! (-> s4-0 x) f0-0) (set! (-> s4-0 y) f1-0) (set! (-> s4-0 z) f3-0) - (set! (-> s4-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0)))) - ) + (set! (-> s4-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))))) (let ((a1-1 (new-stack-vector0))) (set! (-> a1-1 y) (-> s5-0 sprite rot)) - (set! (-> a1-1 z) (if (logtest? *global-toggle* 1) - (the float (sar (shl (the int (- 16384.0 (-> s5-0 sprite sx))) 48) 48)) - (the float (sar (shl (the int (+ 16384.0 (-> s5-0 sprite sx))) 48) 48)) - ) - ) - (quaternion-zxy! (the-as quaternion s4-0) a1-1) - ) + (set! (-> a1-1 z) + (if (logtest? *global-toggle* 1) + (the float (sar (shl (the int (- 16384.0 (-> s5-0 sprite sx))) 48) 48)) + (the float (sar (shl (the int (+ 16384.0 (-> s5-0 sprite sx))) 48) 48)))) + (quaternion-zxy! (the-as quaternion s4-0) a1-1)) (let ((v1-14 arg2)) (cond ((< (-> s4-0 w) 0.0) @@ -1263,48 +890,36 @@ (.lvf vf2 (&-> s4-0 quad)) (.sub.vf vf1 vf0 vf2 :mask #b111) (.svf (&-> v1-14 qx-qy-qz-sy quad) vf1) - (.mov v1-15 vf1) - ) + (.mov v1-15 vf1)) (else - (.lvf vf1 (&-> v1-14 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s4-0 quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-14 qx-qy-qz-sy quad) vf1) - (.mov v1-16 vf1) - ) - ) - ) - ) + (.lvf vf1 (&-> v1-14 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> s4-0 quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-14 qx-qy-qz-sy quad) vf1) + (.mov v1-16 vf1))))) (set! (-> arg2 r-g-b-a x) (-> s5-0 sprite r)) (set! (-> arg2 r-g-b-a y) (-> s5-0 sprite g)) - (set! (-> arg2 r-g-b-a z) (-> s5-0 sprite b)) - ) + (set! (-> arg2 r-g-b-a z) (-> s5-0 sprite b))) (set! *global-toggle* (+ *global-toggle* 1)) 0 - (none) - ) - ) + (none))) (defun birth-func-copy-omega-to-z ((arg0 sparticle-system) - (arg1 sparticle-cpuinfo) - (arg2 sprite-vec-data-3d) - (arg3 sparticle-launcher) - (arg4 sparticle-launch-state) - ) + (arg1 sparticle-cpuinfo) + (arg2 sprite-vec-data-3d) + (arg3 sparticle-launcher) + (arg4 sparticle-launch-state)) (set! (-> arg2 qx-qy-qz-sy z) (+ -16384.0 (-> arg1 omega))) (set! (-> arg1 next-time) (-> arg4 sprite next-time)) (set! (-> arg2 x-y-z-sx w) (* 163.85638 (the float (-> arg4 sprite next-time)))) 0 - (none) - ) + (none)) (defun birth-func-random-next-time ((arg0 sparticle-system) - (arg1 sparticle-cpuinfo) - (arg2 sprite-vec-data-3d) - (arg3 sparticle-launcher) - (arg4 sparticle-launch-state) - ) + (arg1 sparticle-cpuinfo) + (arg2 sprite-vec-data-3d) + (arg3 sparticle-launcher) + (arg4 sparticle-launch-state)) (set! (-> arg1 next-time) (the-as uint (the int (rand-vu-float-range 0.0 (-> arg1 user-float))))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle.gc b/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle.gc index 0beb758bf7..963ed74493 100644 --- a/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle.gc +++ b/goal_src/jak1/engine/gfx/sprite/sparticle/sparticle.gc @@ -1,15 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") -;; name: sparticle.gc -;; name in dgo: sparticle -;; dgos: GAME, ENGINE - - ;; This file contains the interface between sparticle and sprite as well as the actual particle updates. ;; DECOMP BEGINS @@ -17,25 +11,16 @@ (defmethod print ((this sparticle-cpuinfo)) (format #t "~%") (dotimes (s5-0 16) - (format #t "~D:~F~%" s5-0 (the-as float (-> this data s5-0))) - ) + (format #t "~D:~F~%" s5-0 (the-as float (-> this data s5-0)))) (format #t "TIMER:~D~%" (-> this timer)) - (the-as sparticle-cpuinfo (format #t "FLAGS:~X~%" (-> this flags))) - ) + (the-as sparticle-cpuinfo (format #t "FLAGS:~X~%" (-> this flags)))) (defun sp-particle-copy! ((arg0 sparticle-cpuinfo) (arg1 sparticle-cpuinfo)) - (let ((v1-1 (-> arg1 sprite x-y-z-sx quad))) - (set! (-> arg0 sprite x-y-z-sx quad) v1-1) - ) - (let ((v1-3 (-> arg1 sprite flag-rot-sy quad))) - (set! (-> arg0 sprite flag-rot-sy quad) v1-3) - ) - (let ((v1-5 (-> arg1 sprite color quad))) - (set! (-> arg0 sprite color quad) v1-5) - ) + (let ((v1-1 (-> arg1 sprite x-y-z-sx quad))) (set! (-> arg0 sprite x-y-z-sx quad) v1-1)) + (let ((v1-3 (-> arg1 sprite flag-rot-sy quad))) (set! (-> arg0 sprite flag-rot-sy quad) v1-3)) + (let ((v1-5 (-> arg1 sprite color quad))) (set! (-> arg0 sprite color quad) v1-5)) (dotimes (v1-6 10) - (set! (-> arg0 adgif prims v1-6) (-> arg1 adgif prims v1-6)) - ) + (set! (-> arg0 adgif prims v1-6) (-> arg1 adgif prims v1-6))) (set! (-> arg0 vel-sxvel quad) (-> arg1 vel-sxvel quad)) (set! (-> arg0 rot-syvel quad) (-> arg1 rot-syvel quad)) (set! (-> arg0 fade quad) (-> arg1 fade quad)) @@ -45,17 +30,15 @@ (set! (-> arg0 flags) (-> arg1 flags)) (set! (-> arg0 user-float) (-> arg1 user-float)) (set! (-> arg0 func) (-> arg1 func)) - (none) - ) + (none)) (defmethod new sparticle-system ((allocation symbol) - (type-to-make type) - (arg0 int) - (arg1 int) - (arg2 symbol) - (arg3 pointer) - (arg4 (inline-array adgif-shader)) - ) + (type-to-make type) + (arg0 int) + (arg1 int) + (arg2 symbol) + (arg3 pointer) + (arg4 (inline-array adgif-shader))) "allocate a particle system. arg0: number of group0's arg1: number of group1's @@ -69,10 +52,10 @@ (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (let* ((v1-3 (/ (+ arg0 63) 64)) ;; num blocks (a0-2 (/ (+ arg1 63) 64)) - (a1-2 (* v1-3 64)) ;; length + (a1-2 (* v1-3 64)) ;; length (a2-2 (* a0-2 64)) - (s2-1 (+ v1-3 a0-2)) ;; total blocks - (s5-1 (+ a1-2 a2-2)) ;; total length + (s2-1 (+ v1-3 a0-2)) ;; total blocks + (s5-1 (+ a1-2 a2-2)) ;; total length ) (set! (-> gp-0 blocks 0) v1-3) (set! (-> gp-0 length 0) a1-2) @@ -91,25 +74,17 @@ (set! (-> gp-0 adgifdata-table) arg4) (dotimes (v1-5 s2-1) ;; fill alloc-table with 1's - (set! (-> gp-0 alloc-table v1-5) (the-as uint -1)) - ) + (set! (-> gp-0 alloc-table v1-5) (the-as uint -1))) (dotimes (s4-1 s5-1) (set! (-> gp-0 cpuinfo-table s4-1 valid) #f) ;; link cpuinfos to sprite data - (set! (-> gp-0 cpuinfo-table s4-1 sprite) - (the-as sprite-vec-data-2d (&+ (-> gp-0 vecdata-table) (* 48 s4-1))) - ) + (set! (-> gp-0 cpuinfo-table s4-1 sprite) (the-as sprite-vec-data-2d (&+ (-> gp-0 vecdata-table) (* 48 s4-1)))) ;; and to adgif (set! (-> gp-0 cpuinfo-table s4-1 adgif) (-> gp-0 adgifdata-table s4-1)) ;; default init adgifs. (adgif-shader<-texture-simple! (-> gp-0 adgifdata-table s4-1) (the-as texture #f)) - (set! (-> gp-0 adgifdata-table s4-1 alpha) (new 'static 'gs-alpha :b #x2 :d #x1)) - ) - ) - gp-0 - ) - ) - + (set! (-> gp-0 adgifdata-table s4-1 alpha) (new 'static 'gs-alpha :b #x2 :d #x1)))) + gp-0)) ;;;;;;;;;;;;;;;;;;;; ;; particle systems @@ -118,12 +93,10 @@ ;; note: these constants must match the sizes of the sprite arrays. (define *sp-particle-system-2d* - (new 'global 'sparticle-system 1920 128 #f (-> *sprite-array-2d* vec-data) (-> *sprite-array-2d* adgif-data)) - ) + (new 'global 'sparticle-system 1920 128 #f (-> *sprite-array-2d* vec-data) (-> *sprite-array-2d* adgif-data))) (define *sp-particle-system-3d* - (new 'global 'sparticle-system 256 0 #t (-> *sprite-array-3d* vec-data) (-> *sprite-array-3d* adgif-data)) - ) + (new 'global 'sparticle-system 256 0 #t (-> *sprite-array-3d* vec-data) (-> *sprite-array-3d* adgif-data))) ;;;;;;;;;;;;;;;;;;;; ;; alloc and block @@ -133,70 +106,43 @@ "get the index of the highest used block for the given group (0 or 1)" (let ((v0-0 0)) (let ((v1-0 0) - (a2-0 (-> arg0 blocks 0)) - ) + (a2-0 (-> arg0 blocks 0))) (when (= arg1 1) (set! v1-0 a2-0) - (set! a2-0 (-> arg0 blocks 1)) - ) + (set! a2-0 (-> arg0 blocks 1))) (dotimes (a1-3 a2-0) - (if (!= (-> arg0 alloc-table (+ v1-0 a1-3)) -1) - (set! v0-0 (+ a1-3 1)) - ) - ) - ) - v0-0 - ) - ) + (if (!= (-> arg0 alloc-table (+ v1-0 a1-3)) -1) (set! v0-0 (+ a1-3 1))))) + v0-0)) (defun sp-get-approx-alloc-size ((arg0 sparticle-system) (arg1 int)) "get approximately the amount of sprite memory used." ;; this is just (* 64 (sp-get-block-size arg0 arg1)) (let ((a3-0 arg1) - (v1-0 0) - ) + (v1-0 0)) (let ((a1-1 0) - (a2-0 (-> arg0 blocks 0)) - ) + (a2-0 (-> arg0 blocks 0))) (when (= a3-0 1) (set! a1-1 a2-0) - (set! a2-0 (-> arg0 blocks 1)) - ) + (set! a2-0 (-> arg0 blocks 1))) (dotimes (a3-3 a2-0) - (if (!= (-> arg0 alloc-table (+ a1-1 a3-3)) -1) - (set! v1-0 (+ a3-3 1)) - ) - ) - ) - (* v1-0 64) - ) - ) + (if (!= (-> arg0 alloc-table (+ a1-1 a3-3)) -1) (set! v1-0 (+ a3-3 1))))) + (* v1-0 64))) (defun sp-free-particle ((arg0 sparticle-system) (arg1 int) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-2d)) "free a particle" - ;; clear flags on our launch state. (if (and (-> arg2 binding) (nonzero? (-> arg2 binding))) - (logclear! (-> arg2 binding flags) (sp-launch-state-flags launcher-active particles-active)) - ) - + (logclear! (-> arg2 binding flags) (sp-launch-state-flags launcher-active particles-active))) ;; clear the bit indicating that we're alive. (let ((v1-6 (/ arg1 64)) - (t0-4 (logand arg1 63)) - ) - (logior! (-> arg0 alloc-table v1-6) (ash 1 t0-4)) - ) - + (t0-4 (logand arg1 63))) + (logior! (-> arg0 alloc-table v1-6) (ash 1 t0-4))) ;; decrease alloc count for the appropriate group - (if (< arg1 (-> arg0 length 0)) - (+! (-> arg0 num-alloc 0) -1) - (+! (-> arg0 num-alloc 1) -1) - ) + (if (< arg1 (-> arg0 length 0)) (+! (-> arg0 num-alloc 0) -1) (+! (-> arg0 num-alloc 1) -1)) (set! (-> arg2 valid) #f) (set! (-> arg3 a) 0.0) 0 - (none) - ) + (none)) (defun sp-get-particle ((arg0 sparticle-system) (arg1 int) (arg2 sparticle-launch-state)) "alloc a particle" @@ -207,33 +153,20 @@ ;; which can have a negative impact on our performance. (let ((v1-0 0) (t0-0 (-> arg0 blocks 0)) - (a3-0 0) - ) + (a3-0 0)) (when (= arg1 1) (set! v1-0 t0-0) - (set! t0-0 (-> arg0 blocks 1)) - ) + (set! t0-0 (-> arg0 blocks 1))) (dotimes (blk t0-0) (when (nonzero? (-> arg0 alloc-table (+ v1-0 a3-0))) (dotimes (bit 64) (when (nonzero? (logand (ash 1 bit) (-> arg0 alloc-table (+ v1-0 a3-0)))) (logxor! (-> arg0 alloc-table (+ v1-0 a3-0)) (ash 1 bit)) (+! (-> arg0 num-alloc arg1) 1) - (let ((v1-9 (-> arg0 cpuinfo-table (+ bit (* (+ v1-0 a3-0) 64))))) - (set! (-> v1-9 valid) #t) - (return v1-9) - ) - ) - ) - ) + (let ((v1-9 (-> arg0 cpuinfo-table (+ bit (* (+ v1-0 a3-0) 64))))) (set! (-> v1-9 valid) #t) (return v1-9))))) (+! a3-0 1) - (if (= a3-0 t0-0) - (set! a3-0 0) - ) - ) - ) - (the-as sparticle-cpuinfo #f) - ) + (if (= a3-0 t0-0) (set! a3-0 0)))) + (the-as sparticle-cpuinfo #f)) (defun sp-kill-particle ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) "kill the given particle" @@ -242,24 +175,17 @@ ((in-scratchpad? arg1) ;;(>= (the-as int arg1) #x70000000) ;; TODO PC port ;; if in the sratchpad, just set the timer to 0. (set! (-> arg1 timer) 0) - 0 - ) + 0) (else - (let ((a2-1 (/ (the-as int (- (the-as uint arg1) (the-as uint (-> arg0 cpuinfo-table 0)))) 144))) - (when (or (< a2-1 0) (>= a2-1 (+ (-> arg0 length 0) (-> arg0 length 1)))) - ;; invalid location for particle, error - (format 0 "Tried to release particle ~D~%" a2-1) - (return #f) - ) - ;; free it. - (sp-free-particle arg0 a2-1 arg1 (-> arg1 sprite)) - ) - ) - ) + (let ((a2-1 (/ (the-as int (- (the-as uint arg1) (the-as uint (-> arg0 cpuinfo-table 0)))) 144))) + (when (or (< a2-1 0) (>= a2-1 (+ (-> arg0 length 0) (-> arg0 length 1)))) + ;; invalid location for particle, error + (format 0 "Tried to release particle ~D~%" a2-1) + (return #f)) + ;; free it. + (sp-free-particle arg0 a2-1 arg1 (-> arg1 sprite))))) #t - (none) - ) - + (none)) ;;;;;;;;;;;;;;;; ;; effects @@ -272,8 +198,7 @@ (f24-0 (-> arg1 vel-sxvel y)) (f1-0 (-> arg1 vel-sxvel z)) (f3-0 (-> *sp-frame-time* y)) - (f28-0 (+ f2-0 (* f4-0 f3-0))) - ) + (f28-0 (+ f2-0 (* f4-0 f3-0)))) (set! (-> arg1 omega) f28-0) (let ((f30-0 (+ f0-0 (* f1-0 f3-0)))) (set! (-> arg1 radius) f30-0) @@ -282,28 +207,20 @@ (f22-0 (sin (* 0.5 f24-0))) (f0-5 (cos (* 0.5 f24-0))) (a1-1 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (let ((s3-0 (new 'stack-no-clear 'matrix))) (set-vector! a1-1 (* f22-0 f28-1) 0.0 (* f22-0 f26-0) f0-5) (quaternion*! (-> arg1 rotvel3d) (the-as quaternion a1-1) (-> arg1 rotvel3d)) (quaternion-normalize! (-> arg1 rotvel3d)) (set-vector! s4-0 (* f26-0 f30-0) 0.0 (* f28-1 f30-0) 1.0) (quaternion->matrix s3-0 (-> arg1 rotvel3d)) - (vector-matrix*! s4-0 s4-0 s3-0) - ) + (vector-matrix*! s4-0 s4-0 s3-0)) (let ((v1-3 (the-as object (-> arg1 user-float)))) (set! (-> arg2 x) (+ (-> s4-0 x) (-> (the-as sprite-vec-data-2d v1-3) x))) (set! (-> arg2 y) (+ (-> s4-0 y) (-> (the-as sprite-vec-data-2d v1-3) y))) - (set! (-> arg2 z) (+ (-> s4-0 z) (-> (the-as sprite-vec-data-2d v1-3) z))) - ) - ) - ) - ) + (set! (-> arg2 z) (+ (-> s4-0 z) (-> (the-as sprite-vec-data-2d v1-3) z))))))) 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;;; ;; particle update @@ -320,8 +237,7 @@ ;; (dma-send-to-spr-no-flush (the-as uint arg0) (the-as uint arg1) (the-as uint a2-1) #t) ) 0 - (none) - ) + (none)) (defun sp-copy-from-spr ((arg0 int) (arg1 pointer) (arg2 int)) ;; modified to use fake spad. @@ -330,54 +246,36 @@ ;;(dma-send-from-spr-no-flush (the-as uint arg1) (the-as uint arg0) (the-as uint a2-1) #t) ) 0 - (none) - ) + (none)) ;; TODO memcpy (unused) (defun sp-process-block ((arg0 sparticle-system) (arg1 int) (arg2 sprite-array-2d) (arg3 int)) "update the given block of particles" - (local-vars - (sv-16 int) - (sv-32 int) - (sv-80 int) - (sv-96 int) - ) + (local-vars (sv-16 int) (sv-32 int) (sv-80 int) (sv-96 int)) (let ((s3-0 16) (s2-0 (* 144 arg3)) - (s5-0 (* 48 arg3)) - ) + (s5-0 (* 48 arg3))) (set! sv-32 (* 80 arg3)) (let ((s1-0 (+ s3-0 s2-0))) (set! sv-16 (+ s1-0 s5-0)) (sp-copy-to-spr s3-0 (the-as pointer (-> arg0 cpuinfo-table arg1)) s2-0) (sp-copy-to-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0) (let ((t9-2 sp-copy-to-spr) - (a1-7 (-> arg0 adgifdata-table arg1)) - ) - (t9-2 sv-16 (the-as pointer a1-7) sv-32) - ) - + (a1-7 (-> arg0 adgifdata-table arg1))) + (t9-2 sv-16 (the-as pointer a1-7) sv-32)) ;; alternate to run without doing scratchpad (will change behavior of kill, but at least works for hud) ; (set! sv-80 (the-as int (-> arg0 cpuinfo-table arg1))) ; (set! sv-96 (the-as int (&+ (-> arg0 vecdata-table) (* 48 arg1)))) (set! sv-80 (+ (the int (scratchpad-start)) s3-0)) ;; spad (set! sv-96 (+ (the int (scratchpad-start)) s1-0)) ;; spad (cond - ((-> arg0 is-3d) - (sp-process-block-3d arg0 sv-80 sv-96 arg1 arg3 (paused?)) - ) - (else - (sp-process-block-2d arg0 sv-80 sv-96 arg1 arg3 (paused?)) - ) - ) + ((-> arg0 is-3d) (sp-process-block-3d arg0 sv-80 sv-96 arg1 arg3 (paused?))) + (else (sp-process-block-2d arg0 sv-80 sv-96 arg1 arg3 (paused?)))) (sp-copy-from-spr s3-0 (the-as pointer (-> arg0 cpuinfo-table arg1)) s2-0) - (sp-copy-from-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0) - ) - ) + (sp-copy-from-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0))) 0 - (none) - ) + (none)) (defun sp-process-particle-system ((arg0 sparticle-system) (arg1 int) (arg2 sprite-array-2d)) "update an entire particle system." @@ -387,9 +285,7 @@ (s4-0 (sp-get-approx-alloc-size arg0 arg1)) ;; remaining size. ) ;; group 1 starts after group 0 - (if (= arg1 1) - (set! s3-0 (* (-> arg0 blocks 0) 64)) - ) + (if (= arg1 1) (set! s3-0 (* (-> arg0 blocks 0) 64))) (set! (-> arg2 num-valid arg1) s4-0) ;; flush before processing (flush-cache 0) @@ -399,26 +295,18 @@ (+! s3-0 s1-0) ;; next data ) ;; if there's anything leftover, don't forget that. - (if (> s4-0 0) - (sp-process-block arg0 s3-0 arg2 s4-0) - ) - ) + (if (> s4-0 0) (sp-process-block arg0 s3-0 arg2 s4-0))) 0 - (none) - ) + (none)) (define-perm *particles-flag* symbol #t) -(defun forall-particles-with-key-runner ((arg0 sparticle-launch-control) - (arg1 (function sparticle-system sparticle-cpuinfo none)) - (arg2 sparticle-system) - ) +(defun forall-particles-with-key-runner ((arg0 sparticle-launch-control) (arg1 (function sparticle-system sparticle-cpuinfo none)) (arg2 sparticle-system)) "call the given function on all particles with the given key (arg0)" (local-vars (sv-16 int)) (let ((s3-0 (the-as object (-> arg2 cpuinfo-table 0))) (s2-0 (&+ (-> arg2 vecdata-table) 0)) - (s1-0 (+ (-> arg2 blocks 0) (-> arg2 blocks 1))) - ) + (s1-0 (+ (-> arg2 blocks 0) (-> arg2 blocks 1)))) (dotimes (s0-0 s1-0) ;; loop over blocks (cond ((!= (-> arg2 alloc-table s0-0) -1) ;; block has something allocated. @@ -427,41 +315,25 @@ (if (and (-> (the-as sparticle-cpuinfo s3-0) valid) ;; is allocated (= (-> (the-as sparticle-cpuinfo s3-0) key) arg0) ;; matches the key ) - (arg1 arg2 (the-as sparticle-cpuinfo s3-0)) ;; run the callback! - ) + (arg1 arg2 (the-as sparticle-cpuinfo s3-0)) ;; run the callback! + ) (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 1)) ;; next cpu (&+! s2-0 48) ;; next vec (set! sv-16 (+ sv-16 1)) ;; next idx in block - ) - ) + )) (else - ;; skip the whole block! - (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 64)) - (&+! s2-0 3072) - ) - ) - ) - ) + ;; skip the whole block! + (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 64)) + (&+! s2-0 3072))))) 0 - (none) - ) - -(defun forall-particles-with-key ((arg0 sparticle-launch-control) - (arg1 (function sparticle-system sparticle-cpuinfo none)) - (arg2 symbol) - (arg3 symbol) - ) + (none)) + +(defun forall-particles-with-key ((arg0 sparticle-launch-control) (arg1 (function sparticle-system sparticle-cpuinfo none)) (arg2 symbol) (arg3 symbol)) "call the given function on all particles with the given key. arg2 is 2d, arg3 is 3d." - (if arg2 - (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-2d*) - ) - (if arg3 - (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-3d*) - ) + (if arg2 (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-2d*)) + (if arg3 (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-3d*)) 0 - (none) - ) - + (none)) (defun sparticle-kill-it ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) "kill a particle without freeing it." @@ -471,136 +343,95 @@ ;; kill the launcher too. (logclear! (-> arg1 binding flags) (sp-launch-state-flags launcher-active particles-active)) ;; and forget it, I guess it could be unloaded - (set! (-> arg1 binding) #f) - ) + (set! (-> arg1 binding) #f)) 0 - (none) - ) + (none)) (defun sparticle-kill-it-level0 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) "kill all particles belonging to level 0" - (if (logtest? (-> arg1 flags) (sp-cpuinfo-flag level0)) - (sparticle-kill-it arg0 arg1) - ) + (if (logtest? (-> arg1 flags) (sp-cpuinfo-flag level0)) (sparticle-kill-it arg0 arg1)) 0 - (none) - ) + (none)) (defun sparticle-kill-it-level1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) "kill all particles belonging to level 1." - (if (logtest? (-> arg1 flags) (sp-cpuinfo-flag level1)) - (sparticle-kill-it arg0 arg1) - ) + (if (logtest? (-> arg1 flags) (sp-cpuinfo-flag level1)) (sparticle-kill-it arg0 arg1)) 0 - (none) - ) + (none)) (defun sparticle-60-to-50 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 pointer)) "convert from 60hz to 50hz particles" (let ((gp-0 (-> arg1 rotvel3d)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) + (s5-0 (new 'stack-no-clear 'quaternion))) (vector-angle<-quaternion! (the-as vector s5-0) gp-0) (set! (-> s5-0 w) (* 12516.455 (-> s5-0 w))) - (quaternion-vector-angle! gp-0 (the-as vector s5-0) (-> s5-0 w)) - ) + (quaternion-vector-angle! gp-0 (the-as vector s5-0) (-> s5-0 w))) 0 - (none) - ) + (none)) (defun sparticle-50-to-60 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 pointer)) "convert from 50hz to 60hz particles" (let ((gp-0 (-> arg1 rotvel3d)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) + (s5-0 (new 'stack-no-clear 'quaternion))) (vector-angle<-quaternion! (the-as vector s5-0) gp-0) (set! (-> s5-0 w) (* 8691.982 (-> s5-0 w))) - (quaternion-vector-angle! gp-0 (the-as vector s5-0) (-> s5-0 w)) - ) + (quaternion-vector-angle! gp-0 (the-as vector s5-0) (-> s5-0 w))) 0 - (none) - ) + (none)) (defun kill-all-particles-with-key ((arg0 sparticle-launch-control)) (forall-particles-with-key arg0 sparticle-kill-it #t #t) 0 - (none) - ) + (none)) (defun forall-particles-runner ((arg0 (function sparticle-system sparticle-cpuinfo pointer none)) (arg1 sparticle-system)) "run function on all particles in the system." (let ((s4-0 (the-as object (-> arg1 cpuinfo-table 0))) (s3-0 (&+ (-> arg1 vecdata-table) 0)) - (s2-0 (+ (-> arg1 blocks 0) (-> arg1 blocks 1))) - ) + (s2-0 (+ (-> arg1 blocks 0) (-> arg1 blocks 1)))) (dotimes (s1-0 s2-0) (cond ((!= (-> arg1 alloc-table s1-0) -1) (dotimes (s0-0 64) - (if (-> (the-as sparticle-cpuinfo s4-0) valid) - (arg0 arg1 (the-as sparticle-cpuinfo s4-0) s3-0) - ) + (if (-> (the-as sparticle-cpuinfo s4-0) valid) (arg0 arg1 (the-as sparticle-cpuinfo s4-0) s3-0)) (set! s4-0 (+ (the-as uint s4-0) 144)) - (&+! s3-0 48) - ) - ) - (else - (set! s4-0 (&+ (the-as pointer s4-0) 9216)) - (&+! s3-0 3072) - ) - ) - ) - ) + (&+! s3-0 48))) + (else (set! s4-0 (&+ (the-as pointer s4-0) 9216)) (&+! s3-0 3072))))) 0 - (none) - ) + (none)) (defun forall-particles ((arg0 function) (arg1 symbol) (arg2 symbol)) "run function on all particles. arg1 for 2d, arg2 for 3d." (if arg1 - (forall-particles-runner - (the-as (function sparticle-system sparticle-cpuinfo pointer none) arg0) - *sp-particle-system-2d* - ) - ) + (forall-particles-runner (the-as (function sparticle-system sparticle-cpuinfo pointer none) arg0) + *sp-particle-system-2d*)) (if arg2 - (forall-particles-runner - (the-as (function sparticle-system sparticle-cpuinfo pointer none) arg0) - *sp-particle-system-3d* - ) - ) + (forall-particles-runner (the-as (function sparticle-system sparticle-cpuinfo pointer none) arg0) + *sp-particle-system-3d*)) 0 - (none) - ) + (none)) (defun kill-all-particles-in-level ((arg0 level)) "kill all particles belonging to the given level." - (forall-particles - (if (zero? (-> arg0 index)) - sparticle-kill-it-level0 - sparticle-kill-it-level1 - ) - #t - #t - ) - 0 - ) + (forall-particles (if (zero? (-> arg0 index)) sparticle-kill-it-level0 sparticle-kill-it-level1) #t #t) + 0) (defun all-particles-50-to-60 () (forall-particles-runner sparticle-50-to-60 *sp-particle-system-3d*) - (none) - ) + (none)) (defun all-particles-60-to-50 () (forall-particles-runner sparticle-60-to-50 *sp-particle-system-3d*) - (none) - ) + (none)) (defun set-particle-frame-time ((scaled-seconds int)) "Adjusts particle frame time based on the frame-rate (scaled-seconds). Note: This used to be a case statement and has been rewritten as a more generic formula" - (set-vector! *sp-frame-time* (the-as float (logior #x800000 scaled-seconds)) (the float scaled-seconds) (* 0.2 scaled-seconds) (* 0.2 scaled-seconds)) - (none) - ) + (set-vector! *sp-frame-time* + (the-as float (logior #x800000 scaled-seconds)) + (the float scaled-seconds) + (* 0.2 scaled-seconds) + (* 0.2 scaled-seconds)) + (none)) (defun process-particles () "main particle system update." @@ -612,32 +443,15 @@ (set! *sp-launcher-lock* #t) ;; start a profile frame. (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))) ;; update timer (let ((v1-14 (logand (the-as int (-> *sp-frame-time* x)) 255))) (set! *particle-300hz-timer* (+ *particle-300hz-timer* v1-14)) (cond - (*sp-60-hz* - (when (or (= v1-14 6) (= v1-14 12)) - (set! *sp-60-hz* #f) - (all-particles-60-to-50) - ) - ) - (else - (when (or (= v1-14 5) (= v1-14 10)) - (set! *sp-60-hz* #t) - (all-particles-50-to-60) - ) - ) - ) - ) - + (*sp-60-hz* (when (or (= v1-14 6) (= v1-14 12)) (set! *sp-60-hz* #f) (all-particles-60-to-50))) + (else (when (or (= v1-14 5) (= v1-14 10)) (set! *sp-60-hz* #t) (all-particles-50-to-60))))) ;; process the particles ;; og:preserve-this made this not run when paused, since aux sprites wont get added. (unless (paused?) @@ -646,31 +460,21 @@ (sp-process-particle-system *sp-particle-system-2d* 1 *sprite-array-2d*) (sp-process-particle-system *sp-particle-system-3d* 0 (the-as sprite-array-2d *sprite-array-3d*)) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #x80 :b #xff :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #x80 :b #xff :a #x80))) (set! *sp-launcher-lock* #f) - ;; launch queued particles (sp-clear-queue) ;;(.mfc0 v1-29 Count) (let ((a2-5 (- v1-29 gp-0))) (if *display-sprite-info* - (format - *stdcon* - "Particle time = ~D cycles for ~D 2D [~D warp] and ~D HUD and ~D 3D~%" - a2-5 - (-> *sp-particle-system-2d* num-alloc 0) - (-> *sprite-aux-list* entry) - (-> *sp-particle-system-2d* num-alloc 1) - (-> *sp-particle-system-3d* num-alloc 0) - ) - ) - ) - ) + (format *stdcon* + "Particle time = ~D cycles for ~D 2D [~D warp] and ~D HUD and ~D 3D~%" + a2-5 + (-> *sp-particle-system-2d* num-alloc 0) + (-> *sprite-aux-list* entry) + (-> *sp-particle-system-2d* num-alloc 1) + (-> *sp-particle-system-3d* num-alloc 0))))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/sprite/sprite-distort.gc b/goal_src/jak1/engine/gfx/sprite/sprite-distort.gc index 4cb05bdd67..80ccce1e1e 100644 --- a/goal_src/jak1/engine/gfx/sprite/sprite-distort.gc +++ b/goal_src/jak1/engine/gfx/sprite/sprite-distort.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/sprite/sprite.gc") (require "engine/gfx/math-camera.gc") -;; name: sprite-distort.gc -;; name in dgo: sprite-distort -;; dgos: GAME, ENGINE - ;; The sprite-distort is a VU1 renderer. ;; It likely does some of the effects with sprites. @@ -16,15 +11,12 @@ ;; Scratch information used by the sprite-distorter. (deftype sprite-distorter-sine-tables (basic) - ((aspx float) - (aspy float) - (entry vector 128 :inline) - (ientry qword 9 :inline) - (giftag gs-gif-tag :inline) - (color qword :inline) - ) - ) - + ((aspx float) + (aspy float) + (entry vector 128 :inline) + (ientry qword 9 :inline) + (giftag gs-gif-tag :inline) + (color qword :inline))) (define *sprite-distorter-sine-tables* (new 'global 'sprite-distorter-sine-tables)) @@ -36,8 +28,7 @@ (iterations 3) ;; get camera aspect (cam-aspx (- (-> *math-camera* perspective vector 0 x))) - (cam-aspy (- (-> *math-camera* perspective vector 1 y))) - ) + (cam-aspy (- (-> *math-camera* perspective vector 1 y)))) ;; regenerate if aspect ratio changed ;; og:preserve-this Fix intermittent crash on start up due to a race with the DMA (when #t @@ -52,134 +43,101 @@ (let ((f26-0 (* 65536.0 (/ (the float i) (the float iterations))))) (set-vector! (-> tables entry entry-index) (* (sin f26-0) cam-aspx) (* (cos f26-0) cam-aspy) 0.0 0.0) (let ((s3-1 (+ entry-index 1))) - (set-vector! - (-> tables entry s3-1) - (* 0.001953125 cam-aspx (sin f26-0)) - (* 0.00390625 cam-aspy (cos f26-0)) - 0.0 - 0.0 - ) - (set! entry-index (+ s3-1 1)) - ) - ) - ) - (+! iterations 1) - ) + (set-vector! (-> tables entry s3-1) (* 0.001953125 cam-aspx (sin f26-0)) (* 0.00390625 cam-aspy (cos f26-0)) 0.0 0.0) + (set! entry-index (+ s3-1 1))))) + (+! iterations 1)) ;; final entry pair (set-vector! (-> tables entry entry-index) 0.0 cam-aspy 0.0 0.0) (let ((v1-17 (+ entry-index 1))) (set-vector! (-> tables entry v1-17) 0.0 (* 0.00390625 cam-aspy) 0.0 0.0) (+ v1-17 1) ;; ? - ) - ) - ) + ))) ;; set up giftag - (set! (-> tables giftag tag) (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :tme #x1) - :nreg #xf - ) - ) + (set! (-> tables giftag tag) + (new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :tme #x1) + :nreg #xf)) ;; set up registers - (set! (-> tables giftag regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id st) - :regs1 (gif-reg-id rgbaq) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id st) - :regs4 (gif-reg-id rgbaq) - :regs5 (gif-reg-id xyzf2) - :regs6 (gif-reg-id st) - :regs7 (gif-reg-id rgbaq) - :regs8 (gif-reg-id xyzf2) - :regs9 (gif-reg-id st) - :regs10 (gif-reg-id rgbaq) - :regs11 (gif-reg-id xyzf2) - :regs12 (gif-reg-id st) - :regs13 (gif-reg-id rgbaq) - :regs14 (gif-reg-id xyzf2) - ) - ) + (set! (-> tables giftag regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id st) + :regs1 (gif-reg-id rgbaq) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id st) + :regs4 (gif-reg-id rgbaq) + :regs5 (gif-reg-id xyzf2) + :regs6 (gif-reg-id st) + :regs7 (gif-reg-id rgbaq) + :regs8 (gif-reg-id xyzf2) + :regs9 (gif-reg-id st) + :regs10 (gif-reg-id rgbaq) + :regs11 (gif-reg-id xyzf2) + :regs12 (gif-reg-id st) + :regs13 (gif-reg-id rgbaq) + :regs14 (gif-reg-id xyzf2))) ;; set color (set! (-> tables color vector4w x) 128) (set! (-> tables color vector4w y) 128) (set! (-> tables color vector4w z) 128) - (set! (-> tables color vector4w w) 128) - ) + (set! (-> tables color vector4w w) 128)) 0 - (none) - ) - + (none)) ;; we need to at least put something here so dma-buffer-add-vu-function doesn't crash. (define sprite-distort-vu1-block (new 'static 'vu-function)) - (defun sprite-init-distorter ((dma-buff dma-buffer) (frame-base-pointer uint)) "Set up DMA for setting up the sprite-distorter renderer" ;;(format #t "distorter: ~d~%" (-> *sprite-aux-list* entry)) - ;; set up GS registers (dma-buffer-add-gs-set dma-buff - ;; dont update zbuffer - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk 1)) - ;; use framebuffer as texture - (tex0-1 (new 'static 'gs-tex0 :tbw #x8 :tw #x9 :th #x8 :tbp0 (* frame-base-pointer 32))) - ;; bilinear filtering - (tex1-1 (new 'static 'gs-tex1 :mmag 1 :mmin 1)) - ;; mipmapping - (miptbp1-1 (new 'static 'gs-miptbp)) - ;; set texture wrap mode to clamp - (clamp-1 - (new 'static 'gs-clamp - :wms (gs-tex-wrap-mode region-clamp) - :wmt (gs-tex-wrap-mode region-clamp) - :maxu #x1ff - :maxv (-> *video-parms* screen-masky) - ) - ) - ;; blend source and framebuffer RGB - (alpha-1 (new 'static 'gs-alpha :b 1 :d 1)) - ) + ;; dont update zbuffer + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24) :zmsk 1)) + ;; use framebuffer as texture + (tex0-1 (new 'static 'gs-tex0 :tbw #x8 :tw #x9 :th #x8 :tbp0 (* frame-base-pointer 32))) + ;; bilinear filtering + (tex1-1 (new 'static 'gs-tex1 :mmag 1 :mmin 1)) + ;; mipmapping + (miptbp1-1 (new 'static 'gs-miptbp)) + ;; set texture wrap mode to clamp + (clamp-1 (new 'static + 'gs-clamp + :wms (gs-tex-wrap-mode region-clamp) + :wmt (gs-tex-wrap-mode region-clamp) + :maxu #x1ff + :maxv (-> *video-parms* screen-masky))) + ;; blend source and framebuffer RGB + (alpha-1 (new 'static 'gs-alpha :b 1 :d 1))) ;; send current aspect used by the sine tables (PC only) (#when PC_PORT (let ((packet (the-as dma-packet (-> dma-buff base)))) (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 1)) (set! (-> packet vif0) (new 'static 'vif-tag)) (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) - (&+! (-> dma-buff base) 16) - ) + (&+! (-> dma-buff base) 16)) (let ((aspect-vec (the-as vector (-> dma-buff base)))) - (set-vector! aspect-vec - (-> *sprite-distorter-sine-tables* aspx) - (-> *sprite-distorter-sine-tables* aspy) - 0.0 - 0.0 - ) - (&+! (-> dma-buff base) 16) - ) - ) + (set-vector! aspect-vec (-> *sprite-distorter-sine-tables* aspx) (-> *sprite-distorter-sine-tables* aspy) 0.0 0.0) + (&+! (-> dma-buff base) 16))) ;; send distorter sine tables - (dma-buffer-add-ref-vif2 dma-buff #x8b - (-> *sprite-distorter-sine-tables* entry) - (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - (new 'static 'vif-tag :imm #x160 :num #x8b :cmd (vif-cmd unpack-v4-32)) - ) + (dma-buffer-add-ref-vif2 dma-buff + #x8b + (-> *sprite-distorter-sine-tables* entry) + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) + (new 'static 'vif-tag :imm #x160 :num #x8b :cmd (vif-cmd unpack-v4-32))) ;; load VU1 code (dma-buffer-add-vu-function dma-buff sprite-distort-vu1-block 1) 0 - (none) - ) + (none)) (defun sprite-draw-distorters ((arg0 dma-buffer)) "Set up DMA for the sprite-distorter renderer" - (local-vars - (v1-25 int) - (sv-16 sprite-vec-data-2d) - (sv-32 pointer) - (sv-48 pointer) - ) + (local-vars (v1-25 int) (sv-16 sprite-vec-data-2d) (sv-32 pointer) (sv-48 pointer)) (rlet ((acc :class vf) (Q :class vf) (vf0 :class vf) @@ -191,18 +149,15 @@ (vf5 :class vf) (vf6 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (init-vf0-vector) (.lvf vf8 (&-> *math-camera* hmge-scale quad)) (let ((s0-0 (-> arg0 base)) (s4-0 0) - (s5-0 0) - ) + (s5-0 0)) (&+! (-> arg0 base) 16) (let* ((s3-0 *sprite-aux-list*) - (s2-0 (-> s3-0 entry)) - ) + (s2-0 (-> s3-0 entry))) (dotimes (s1-0 s2-0) (set! sv-16 (-> s3-0 data s1-0)) (let ((a0-1 (the-as object (-> arg0 base)))) @@ -214,16 +169,13 @@ (.lvf vf4 (&-> *math-camera* sprite-2d vector 1 quad)) (.lvf vf5 (&-> *math-camera* sprite-2d vector 2 quad)) (.lvf vf6 (&-> *math-camera* sprite-2d vector 3 quad)) - (.lvf vf9 (&-> *math-camera* sprite-2d-hvdf quad)) - ) + (.lvf vf9 (&-> *math-camera* sprite-2d-hvdf quad))) (else - (.lvf vf3 (&-> *math-camera* camera-temp vector 0 quad)) - (.lvf vf4 (&-> *math-camera* camera-temp vector 1 quad)) - (.lvf vf5 (&-> *math-camera* camera-temp vector 2 quad)) - (.lvf vf6 (&-> *math-camera* camera-temp vector 3 quad)) - (.lvf vf9 (&-> *math-camera* hvdf-off quad)) - ) - ) + (.lvf vf3 (&-> *math-camera* camera-temp vector 0 quad)) + (.lvf vf4 (&-> *math-camera* camera-temp vector 1 quad)) + (.lvf vf5 (&-> *math-camera* camera-temp vector 2 quad)) + (.lvf vf6 (&-> *math-camera* camera-temp vector 3 quad)) + (.lvf vf9 (&-> *math-camera* hvdf-off quad)))) (.lvf vf1 (&-> sv-16 x-y-z-sx quad)) (.lvf vf2 (&-> sv-16 color quad)) (.mul.w.vf acc vf6 vf0) @@ -246,147 +198,98 @@ (set! (-> (the-as vector a0-1) w) 255.0) (set! (-> (the-as (pointer float) sv-32)) (* 0.001953125 (+ -1792.0 (-> (the-as vector a0-1) x)))) (set! (-> (the-as vector sv-32) y) - (* 0.00390625 (+ -2048.0 (the float (-> *video-parms* screen-hy)) (-> (the-as vector a0-1) y))) - ) - ) + (* 0.00390625 (+ -2048.0 (the float (-> *video-parms* screen-hy)) (-> (the-as vector a0-1) y))))) (set! (-> (the-as vector sv-32) z) 1.0) (when (or (< (-> sv-16 flag) 3) (< 11 (-> sv-16 flag))) (format 0 "Turns = ~D!!!~%" (-> sv-16 flag)) - (set! (-> (the-as (pointer int32) sv-16) 4) 11) - ) + (set! (-> (the-as (pointer int32) sv-16) 4) 11)) (set! (-> (the-as (pointer int32) sv-32) 3) (-> sv-16 flag)) (let* ((f0-7 (- (-> *math-camera* perspective vector 1 y))) (f2-4 (-> (the-as vector sv-32) y)) (f4-0 (+ f2-4 (* (-> (the-as (pointer float) sv-48)) f0-7))) (f3-0 256.0) - (f1-7 (-> (the-as (pointer float) sv-48))) - ) + (f1-7 (-> (the-as (pointer float) sv-48)))) (if (< (the float (-> *video-parms* screen-sy)) f4-0) - (set! f3-0 (/ (- (the float (-> *video-parms* screen-sy)) f2-4) f0-7)) - ) - (if (< 128.0 f3-0) - (set! f3-0 128.0) - ) + (set! f3-0 (/ (- (the float (-> *video-parms* screen-sy)) f2-4) f0-7))) + (if (< 128.0 f3-0) (set! f3-0 128.0)) (when (< f3-0 f1-7) - (let ((v1-55 (/ f3-0 f1-7))) - (.mov vf1 v1-55) - ) + (let ((v1-55 (/ f3-0 f1-7))) (.mov vf1 v1-55)) (.mul.x.vf vf2 vf2 vf1) - (.svf (&-> (the-as vector sv-48) quad) vf2) - ) - ) + (.svf (&-> (the-as vector sv-48) quad) vf2))) (&+! (-> arg0 base) 48) (+! s4-0 1) (when (= s4-0 85) (let ((v1-62 (-> arg0 base))) (set! (-> arg0 base) s0-0) (let* ((a0-8 arg0) - (a1-3 (the-as object (-> a0-8 base))) - ) + (a1-3 (the-as object (-> a0-8 base)))) (set! (-> (the-as dma-packet a1-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc (* 3 s4-0))) (set! (-> (the-as dma-packet a1-3) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a1-3) vif1) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :imm (shr (shl (+ (* 3 s5-0) 512) 54) 54) :num (* 3 s4-0)) - ) - (set! (-> a0-8 base) (&+ (the-as pointer a1-3) 16)) - ) - (set! (-> arg0 base) v1-62) - ) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :imm (shr (shl (+ (* 3 s5-0) 512) 54) 54) :num (* 3 s4-0))) + (set! (-> a0-8 base) (&+ (the-as pointer a1-3) 16))) + (set! (-> arg0 base) v1-62)) (set! s4-0 0) (+! s5-0 85) (when (= s5-0 170) (let* ((v1-65 arg0) - (a0-9 (the-as object (-> v1-65 base))) - ) + (a0-9 (the-as object (-> v1-65 base)))) (set! (-> (the-as dma-packet a0-9) dma) (new 'static 'dma-tag :qwc #x1 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-9) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-9) vif1) (new 'static 'vif-tag :imm #x1ff :num #x1 :cmd (vif-cmd unpack-v4-32))) - (set! (-> v1-65 base) (&+ (the-as pointer a0-9) 16)) - ) + (set! (-> v1-65 base) (&+ (the-as pointer a0-9) 16))) (let* ((v1-66 arg0) - (a0-11 (the-as object (-> v1-66 base))) - ) + (a0-11 (the-as object (-> v1-66 base)))) (set! (-> (the-as vector4w a0-11) x) s5-0) (set! (-> (the-as vector4w a0-11) y) 0) (set! (-> (the-as vector4w a0-11) z) 0) (set! (-> (the-as vector4w a0-11) w) 0) - (set! (-> v1-66 base) (&+ (the-as pointer a0-11) 16)) - ) + (set! (-> v1-66 base) (&+ (the-as pointer a0-11) 16))) (let* ((v1-67 arg0) - (a0-13 (the-as object (-> v1-67 base))) - ) + (a0-13 (the-as object (-> v1-67 base)))) (set! (-> (the-as dma-packet a0-13) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-13) vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1)) (set! (-> (the-as dma-packet a0-13) vif1) (new 'static 'vif-tag :cmd (vif-cmd flush) :msk #x1)) - (set! (-> v1-67 base) (&+ (the-as pointer a0-13) 16)) - ) - (set! s5-0 0) - ) + (set! (-> v1-67 base) (&+ (the-as pointer a0-13) 16))) + (set! s5-0 0)) (set! s0-0 (-> arg0 base)) - (&+! (-> arg0 base) 16) - ) - (label cfg-21) - ) - ) + (&+! (-> arg0 base) 16)) + (label cfg-21))) (cond - ((zero? s4-0) - (set! (-> arg0 base) s0-0) - (nop!) - 0 - ) + ((zero? s4-0) (set! (-> arg0 base) s0-0) (nop!) 0) (else (let ((v1-74 (-> arg0 base))) (set! (-> arg0 base) s0-0) (let* ((a0-15 arg0) - (a1-10 (the-as object (-> a0-15 base))) - ) + (a1-10 (the-as object (-> a0-15 base)))) (set! (-> (the-as dma-packet a1-10) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc (* 3 s4-0))) (set! (-> (the-as dma-packet a1-10) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a1-10) vif1) - (new 'static 'vif-tag - :cmd (vif-cmd unpack-v4-32) - :imm (shr (shl (+ (* 3 s5-0) 512) 54) 54) - :num (* 3 s4-0) - ) - ) - (set! (-> a0-15 base) (&+ (the-as pointer a1-10) 16)) - ) - (set! (-> arg0 base) v1-74) - ) - ) - ) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :imm (shr (shl (+ (* 3 s5-0) 512) 54) 54) :num (* 3 s4-0))) + (set! (-> a0-15 base) (&+ (the-as pointer a1-10) 16))) + (set! (-> arg0 base) v1-74)))) (let ((v1-75 (+ s4-0 s5-0))) (when (nonzero? v1-75) (let* ((a0-17 arg0) - (a1-12 (the-as object (-> a0-17 base))) - ) + (a1-12 (the-as object (-> a0-17 base)))) (set! (-> (the-as dma-packet a1-12) dma) (new 'static 'dma-tag :qwc #x1 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a1-12) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a1-12) vif1) (new 'static 'vif-tag :imm #x1ff :num #x1 :cmd (vif-cmd unpack-v4-32))) - (set! (-> a0-17 base) (&+ (the-as pointer a1-12) 16)) - ) + (set! (-> a0-17 base) (&+ (the-as pointer a1-12) 16))) (let* ((a0-18 arg0) - (a1-14 (the-as object (-> a0-18 base))) - ) + (a1-14 (the-as object (-> a0-18 base)))) (set! (-> (the-as vector4w a1-14) x) v1-75) (set! (-> (the-as vector4w a1-14) y) 0) (set! (-> (the-as vector4w a1-14) z) 0) (set! (-> (the-as vector4w a1-14) w) 0) - (set! (-> a0-18 base) (&+ (the-as pointer a1-14) 16)) - ) + (set! (-> a0-18 base) (&+ (the-as pointer a1-14) 16))) (let ((v1-77 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-packet v1-77) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet v1-77) vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1)) (set! (-> (the-as dma-packet v1-77) vif1) (new 'static 'vif-tag :cmd (vif-cmd flush) :msk #x1)) - (set! (-> arg0 base) (&+ (the-as pointer v1-77) 16)) - ) - ) - ) - ) + (set! (-> arg0 base) (&+ (the-as pointer v1-77) 16)))))) 0 - (none) - ) - ) + (none))) ;; og:preserve-this Fix intermittent crash on start up due to a race with the DMA (sprite-distorter-generate-tables) diff --git a/goal_src/jak1/engine/gfx/sprite/sprite-h.gc b/goal_src/jak1/engine/gfx/sprite/sprite-h.gc index 3b61e2d263..eb2cf325a2 100644 --- a/goal_src/jak1/engine/gfx/sprite/sprite-h.gc +++ b/goal_src/jak1/engine/gfx/sprite/sprite-h.gc @@ -1,91 +1,76 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") - -;; name: sprite-h.gc -;; name in dgo: sprite-h -;; dgos: GAME, ENGINE - -(#when PC_BIG_MEMORY (defconstant SPRITE_MAX_AMOUNT_MULT 12)) +(#when PC_BIG_MEMORY + (defconstant SPRITE_MAX_AMOUNT_MULT 12)) ;; DECOMP BEGINS (deftype sprite-vec-data-2d (structure) - ((x-y-z-sx vector :inline) - (flag-rot-sy vector :inline) - (r-g-b-a vector :inline) - (x float :overlay-at (-> x-y-z-sx x)) - (y float :overlay-at (-> x-y-z-sx y)) - (z float :overlay-at (-> x-y-z-sx z)) - (sx float :overlay-at (-> x-y-z-sx w)) - (sy float :overlay-at (-> flag-rot-sy w)) - (rot float :overlay-at (-> flag-rot-sy z)) - (flag int32 :overlay-at (-> flag-rot-sy x)) - (matrix int32 :overlay-at (-> flag-rot-sy y)) - (warp-turns int32 :overlay-at (-> flag-rot-sy x)) - (r float :overlay-at (-> r-g-b-a x)) - (g float :overlay-at (-> r-g-b-a y)) - (b float :overlay-at (-> r-g-b-a z)) - (a float :overlay-at (-> r-g-b-a w)) - (trans vector3s :inline :overlay-at (-> x-y-z-sx x)) - (color rgbaf :inline :overlay-at (-> r-g-b-a x)) - (data uint128 1 :overlay-at (-> x-y-z-sx quad)) - (data64 uint64 6 :overlay-at (-> x-y-z-sx x)) - ) - ) - + ((x-y-z-sx vector :inline) + (flag-rot-sy vector :inline) + (r-g-b-a vector :inline) + (x float :overlay-at (-> x-y-z-sx x)) + (y float :overlay-at (-> x-y-z-sx y)) + (z float :overlay-at (-> x-y-z-sx z)) + (sx float :overlay-at (-> x-y-z-sx w)) + (sy float :overlay-at (-> flag-rot-sy w)) + (rot float :overlay-at (-> flag-rot-sy z)) + (flag int32 :overlay-at (-> flag-rot-sy x)) + (matrix int32 :overlay-at (-> flag-rot-sy y)) + (warp-turns int32 :overlay-at (-> flag-rot-sy x)) + (r float :overlay-at (-> r-g-b-a x)) + (g float :overlay-at (-> r-g-b-a y)) + (b float :overlay-at (-> r-g-b-a z)) + (a float :overlay-at (-> r-g-b-a w)) + (trans vector3s :inline :overlay-at (-> x-y-z-sx x)) + (color rgbaf :inline :overlay-at (-> r-g-b-a x)) + (data uint128 1 :overlay-at (-> x-y-z-sx quad)) + (data64 uint64 6 :overlay-at (-> x-y-z-sx x)))) (deftype sprite-array-2d (basic) - ((num-sprites int32 2) - (num-valid int32 2) - (vec-data pointer) - (adgif-data (inline-array adgif-shader)) - (pad uint128 4) - (data uint128 1) - ) + ((num-sprites int32 2) + (num-valid int32 2) + (vec-data pointer) + (adgif-data (inline-array adgif-shader)) + (pad uint128 4) + (data uint128 1)) (:methods - (new (symbol type int int) _type_) - ) - ) - + (new (symbol type int int) _type_))) (deftype sprite-vec-data-3d (structure) - ((x-y-z-sx vector :inline) - (qx-qy-qz-sy vector :inline) - (r-g-b-a vector :inline) - (x float :overlay-at (-> x-y-z-sx x)) - (y float :overlay-at (-> x-y-z-sx y)) - (z float :overlay-at (-> x-y-z-sx z)) - (sx float :overlay-at (-> x-y-z-sx w)) - (sy float :overlay-at (-> qx-qy-qz-sy w)) - (qx float :overlay-at (-> qx-qy-qz-sy x)) - (qy float :overlay-at (-> qx-qy-qz-sy y)) - (qz float :overlay-at (-> qx-qy-qz-sy z)) - (r float :overlay-at (-> r-g-b-a x)) - (g float :overlay-at (-> r-g-b-a y)) - (b float :overlay-at (-> r-g-b-a z)) - (a float :overlay-at (-> r-g-b-a w)) - (trans vector3s :inline :overlay-at (-> x-y-z-sx x)) - (rot vector3s :inline :overlay-at (-> qx-qy-qz-sy x)) - (color rgbaf :inline :overlay-at (-> r-g-b-a x)) - (data uint128 1 :overlay-at (-> x-y-z-sx quad)) - ) - ) - + ((x-y-z-sx vector :inline) + (qx-qy-qz-sy vector :inline) + (r-g-b-a vector :inline) + (x float :overlay-at (-> x-y-z-sx x)) + (y float :overlay-at (-> x-y-z-sx y)) + (z float :overlay-at (-> x-y-z-sx z)) + (sx float :overlay-at (-> x-y-z-sx w)) + (sy float :overlay-at (-> qx-qy-qz-sy w)) + (qx float :overlay-at (-> qx-qy-qz-sy x)) + (qy float :overlay-at (-> qx-qy-qz-sy y)) + (qz float :overlay-at (-> qx-qy-qz-sy z)) + (r float :overlay-at (-> r-g-b-a x)) + (g float :overlay-at (-> r-g-b-a y)) + (b float :overlay-at (-> r-g-b-a z)) + (a float :overlay-at (-> r-g-b-a w)) + (trans vector3s :inline :overlay-at (-> x-y-z-sx x)) + (rot vector3s :inline :overlay-at (-> qx-qy-qz-sy x)) + (color rgbaf :inline :overlay-at (-> r-g-b-a x)) + (data uint128 1 :overlay-at (-> x-y-z-sx quad)))) (deftype sprite-array-3d (basic) - ((num-sprites int32 2) - (num-valid int32 2) - (vec-data pointer) - (adgif-data (inline-array adgif-shader)) - (data uint128 1) - ) + ((num-sprites int32 2) + (num-valid int32 2) + (vec-data pointer) + (adgif-data (inline-array adgif-shader)) + (data uint128 1)) (:methods - (new (symbol type int int) _type_) - ) - ) + (new (symbol type int int) _type_))) + (define-extern sprite-init-distorter (function dma-buffer uint none)) + (define-extern sprite-draw-distorters (function dma-buffer none)) + (define-extern sprite-vu1-block vu-function) diff --git a/goal_src/jak1/engine/gfx/sprite/sprite.gc b/goal_src/jak1/engine/gfx/sprite/sprite.gc index c759224c3b..888f98cb7d 100644 --- a/goal_src/jak1/engine/gfx/sprite/sprite.gc +++ b/goal_src/jak1/engine/gfx/sprite/sprite.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/sprite/sprite-h.gc") (require "engine/gfx/shadow/shadow-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/math/quaternion-h.gc") (require "pc/pckernel-impl.gc") -;; name: sprite.gc -;; name in dgo: sprite -;; dgos: GAME, ENGINE - ;; the sprite renderer draw 2D or 3D sprites, plus the old circular "fake shadow". ;; Most of the work is done on VU1 and this code just sets up @@ -25,16 +20,13 @@ ;; This is the first quadword of the data sent to VU1. ;; It contains the number of sprites that should be drawn. (deftype sprite-header (structure) - ((header qword 1 :inline) - (num-sprites int32 :overlay-at (-> header 0 data 0)) - ) - ) + ((header qword 1 :inline) + (num-sprites int32 :overlay-at (-> header 0 data 0)))) (defun sprite-setup-header ((hdr sprite-header) (num-sprites int)) "Setup a sprite-header for the given number of sprites" (set! (-> hdr num-sprites) num-sprites) - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; HVDF Data @@ -43,24 +35,20 @@ ;; the meaning of this is unknown. ;; the first one in the list is special and the remaining 75 can be allocated/freed. (deftype sprite-hvdf-data (structure) - ((data qword 76 :inline) - ) - ) + ((data qword 76 :inline))) ;; Each byte indicates if the corresponding entry in ;; sprite-hvdf-data is allocated or not. (deftype sprite-hvdf-control (structure) - ((alloc int8 76) - ) - ) + ((alloc int8 76))) (define *sprite-hvdf-data* (new 'global 'sprite-hvdf-data)) + (define *sprite-hvdf-control* (new 'global 'sprite-hvdf-control)) ;; make all unallocated... (dotimes (v1-6 76) - (set! (-> *sprite-hvdf-control* alloc v1-6) 0) - ) + (set! (-> *sprite-hvdf-control* alloc v1-6) 0)) ;; except for the first. (set! (-> *sprite-hvdf-control* alloc 0) 1) @@ -73,95 +61,77 @@ ;; pushes stuff onto it. (deftype sprite-aux-list (basic) - ((num-entries int32) ;; capacity - (entry int32) ;; current entry - (data sprite-vec-data-2d 1) ;; "dynamic" array. + ((num-entries int32) ;; capacity + (entry int32) ;; current entry + (data sprite-vec-data-2d 1) ;; "dynamic" array. ) (:methods - (new (symbol type int) _type_) - ) - ) + (new (symbol type int) _type_))) (defmethod new sprite-aux-list ((allocation symbol) (type-to-make type) (size int)) "Allocate a sprite-aux-list with room for size 4-byte entries" - (#when PC_BIG_MEMORY (*! size SPRITE_MAX_AMOUNT_MULT)) - - (let ((v0-0 (object-new allocation type-to-make - (the-as int (+ (-> type-to-make size) (the-as uint (* (+ size -1) 4)))) - ) - ) - ) + (let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (the-as uint (* (+ size -1) 4))))))) (set! (-> v0-0 num-entries) size) (set! (-> v0-0 entry) 0) - v0-0 - ) - ) + v0-0)) (defmethod inspect ((this sprite-aux-list)) (format #t "[~X] sprite-aux-list:~%" this) (format #t "~Tnum-entries: ~D~%" (-> this num-entries)) (format #t "~Tentry: ~D~%" (-> this entry)) (dotimes (s5-0 (-> this entry)) - (format #t "~T~D : ~X~%" s5-0 (-> this data s5-0)) - ) - (the-as sprite-aux-list #f) - ) + (format #t "~T~D : ~X~%" s5-0 (-> this data s5-0))) + (the-as sprite-aux-list #f)) (define *sprite-aux-list* (new 'global 'sprite-aux-list 256)) (defun clear-sprite-aux-list () "Remove everything from the sprite aux list" (set! (-> *sprite-aux-list* entry) 0) - (none) - ) + (none)) (defun add-to-sprite-aux-list ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sprite-vec-data-3d)) (let ((v1-0 *sprite-aux-list*)) (when (< (-> v1-0 entry) (-> v1-0 num-entries)) (set! (-> v1-0 data (-> v1-0 entry)) (-> arg1 sprite)) - (+! (-> v1-0 entry) 1) - ) - ) + (+! (-> v1-0 entry) 1))) (set! (-> arg2 r-g-b-a w) 0.0) 0 - (none) - ) + (none)) ;; The sprite-frame-data is data transferred to VU1 and remains there for all chunks of sprites. (deftype sprite-frame-data (structure) - ((cdata vector 16 :inline) - (hmge-scale vector :inline) - (consts vector :inline) - (pfog0 float :overlay-at (-> consts x)) - (deg-to-rad float :overlay-at (-> consts y)) - (min-scale float :overlay-at (-> consts z)) - (inv-area float :overlay-at (-> consts w)) - (adgif-giftag gs-gif-tag :inline) - (sprite-2d-giftag gs-gif-tag :inline) - (sprite-2d-giftag-2 gs-gif-tag :inline) - (sincos-01 vector :inline) - (sincos-23 vector :inline) - (sincos-45 vector :inline) - (sincos-67 vector :inline) - (sincos-89 vector :inline) - (basis-x vector :inline) - (basis-y vector :inline) - (sprite-3d-giftag gs-gif-tag :inline) - (screen-shader adgif-shader :inline) - (clipped-giftag gs-gif-tag :inline) - (inv-hmge-scale vector :inline) - (stq-offset vector :inline) - (stq-scale vector :inline) - (rgba-plain qword :inline) - (warp-giftag gs-gif-tag :inline) - (fog-clamp vector :inline) - (fog-min float :overlay-at (-> fog-clamp x)) - (fog-max float :overlay-at (-> fog-clamp y)) - (max-scale float :overlay-at (-> fog-clamp z)) - ) - ) + ((cdata vector 16 :inline) + (hmge-scale vector :inline) + (consts vector :inline) + (pfog0 float :overlay-at (-> consts x)) + (deg-to-rad float :overlay-at (-> consts y)) + (min-scale float :overlay-at (-> consts z)) + (inv-area float :overlay-at (-> consts w)) + (adgif-giftag gs-gif-tag :inline) + (sprite-2d-giftag gs-gif-tag :inline) + (sprite-2d-giftag-2 gs-gif-tag :inline) + (sincos-01 vector :inline) + (sincos-23 vector :inline) + (sincos-45 vector :inline) + (sincos-67 vector :inline) + (sincos-89 vector :inline) + (basis-x vector :inline) + (basis-y vector :inline) + (sprite-3d-giftag gs-gif-tag :inline) + (screen-shader adgif-shader :inline) + (clipped-giftag gs-gif-tag :inline) + (inv-hmge-scale vector :inline) + (stq-offset vector :inline) + (stq-scale vector :inline) + (rgba-plain qword :inline) + (warp-giftag gs-gif-tag :inline) + (fog-clamp vector :inline) + (fog-min float :overlay-at (-> fog-clamp x)) + (fog-max float :overlay-at (-> fog-clamp y)) + (max-scale float :overlay-at (-> fog-clamp z)))) (defun sprite-setup-frame-data ((data sprite-frame-data) (tbp-offset int)) "Build the sprite-frame-data. This should be done once per frame" @@ -169,143 +139,122 @@ (set! (-> data inv-hmge-scale quad) (-> *math-camera* inv-hmge-scale quad)) (set! (-> data pfog0) (-> *math-camera* pfog0)) (set! (-> data deg-to-rad) 0.000095873795) - ;; the adgif-giftag sets GS registers according to the adgif shader using ;; the A+D mode ;; each adgif has 5x registers, so we set up a tag to do 5x a+d's (set! (-> data adgif-giftag tag) (new 'static 'gif-tag64 :nloop #x1 :nreg #x5)) (set! (-> data adgif-giftag regs) - (new 'static 'gif-tag-regs + (new 'static + 'gif-tag-regs :regs0 (gif-reg-id a+d) :regs1 (gif-reg-id a+d) :regs2 (gif-reg-id a+d) :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - ) - ) - + :regs4 (gif-reg-id a+d))) ;; I believe this is used for the group 0's in 2d (set! (-> data sprite-2d-giftag tag) - (new 'static 'gif-tag64 + (new 'static + 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1 :fge #x1 :abe #x1) - :nreg #x9 - ) - - ) + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1 :fge #x1 :abe #x1) + :nreg #x9)) (set! (-> data sprite-2d-giftag regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id st) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id st) - :regs4 (gif-reg-id xyzf2) - :regs5 (gif-reg-id st) - :regs6 (gif-reg-id xyzf2) - :regs7 (gif-reg-id st) - :regs8 (gif-reg-id xyzf2) - ) - ) - - + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id st) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id st) + :regs4 (gif-reg-id xyzf2) + :regs5 (gif-reg-id st) + :regs6 (gif-reg-id xyzf2) + :regs7 (gif-reg-id st) + :regs8 (gif-reg-id xyzf2))) ;; group 1's in 2d (set! (-> data sprite-2d-giftag-2 tag) - (new 'static 'gif-tag64 + (new 'static + 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1 :abe #x1) - :nreg #x9) - ) + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1 :abe #x1) + :nreg #x9)) (set! (-> data sprite-2d-giftag-2 regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id st) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id st) - :regs4 (gif-reg-id xyzf2) - :regs5 (gif-reg-id st) - :regs6 (gif-reg-id xyzf2) - :regs7 (gif-reg-id st) - :regs8 (gif-reg-id xyzf2) - ) - ) - + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id st) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id st) + :regs4 (gif-reg-id xyzf2) + :regs5 (gif-reg-id st) + :regs6 (gif-reg-id xyzf2) + :regs7 (gif-reg-id st) + :regs8 (gif-reg-id xyzf2))) ;; 3d's don't have different groups? (set! (-> data sprite-3d-giftag tag) - (new 'static 'gif-tag64 + (new 'static + 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1 :fge #x1 :abe #x1) - :nreg #xc - ) - - ) + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1 :fge #x1 :abe #x1) + :nreg #xc)) ;; note that we have rgbaq's per vertex in 3d (set! (-> data sprite-3d-giftag regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id st) - :regs1 (gif-reg-id rgbaq) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id st) - :regs4 (gif-reg-id rgbaq) - :regs5 (gif-reg-id xyzf2) - :regs6 (gif-reg-id st) - :regs7 (gif-reg-id rgbaq) - :regs8 (gif-reg-id xyzf2) - :regs9 (gif-reg-id st) - :regs10 (gif-reg-id rgbaq) - :regs11 (gif-reg-id xyzf2) - ) - ) - + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id st) + :regs1 (gif-reg-id rgbaq) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id st) + :regs4 (gif-reg-id rgbaq) + :regs5 (gif-reg-id xyzf2) + :regs6 (gif-reg-id st) + :regs7 (gif-reg-id rgbaq) + :regs8 (gif-reg-id xyzf2) + :regs9 (gif-reg-id st) + :regs10 (gif-reg-id rgbaq) + :regs11 (gif-reg-id xyzf2))) ;; ?? (set! (-> data clipped-giftag tag) - (new 'static 'gif-tag64 + (new 'static + 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1 :fge #x1 :abe #x1) - :nreg #x3 - ) - ) - + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :tme #x1 :fge #x1 :abe #x1) + :nreg #x3)) (set! (-> data clipped-giftag regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id st) - :regs1 (gif-reg-id rgbaq) - :regs2 (gif-reg-id xyzf2) - ) - ) - + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) ;; not sure what this is either (set! (-> data warp-giftag tag) - (new 'static 'gif-tag64 + (new 'static + 'gif-tag64 :nloop #x1 :eop #x1 :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri) :tme #x1 :abe #x1) - :nreg #xc - ) - ) - + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri) :tme #x1 :abe #x1) + :nreg #xc)) (set! (-> data warp-giftag regs) - (new 'static 'gif-tag-regs - :regs0 (gif-reg-id st) - :regs1 (gif-reg-id rgbaq) - :regs2 (gif-reg-id xyzf2) - :regs3 (gif-reg-id st) - :regs4 (gif-reg-id rgbaq) - :regs5 (gif-reg-id xyzf2) - :regs6 (gif-reg-id st) - :regs7 (gif-reg-id rgbaq) - :regs8 (gif-reg-id xyzf2) - ) - ) - + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id st) + :regs1 (gif-reg-id rgbaq) + :regs2 (gif-reg-id xyzf2) + :regs3 (gif-reg-id st) + :regs4 (gif-reg-id rgbaq) + :regs5 (gif-reg-id xyzf2) + :regs6 (gif-reg-id st) + :regs7 (gif-reg-id rgbaq) + :regs8 (gif-reg-id xyzf2))) ;; set up an adgif. (set! (-> data screen-shader prims 1) (gs-reg64 tex0-1)) (set! (-> data screen-shader tex0) (new 'static 'gs-tex0 :tbw #x8 :tw #xa :th #x8 :tbp0 (* tbp-offset 32))) @@ -314,12 +263,10 @@ (set! (-> data screen-shader prims 5) (gs-reg64 miptbp1-1)) (set! (-> data screen-shader miptbp1) (new 'static 'gs-miptbp)) (set! (-> data screen-shader clamp-reg) (gs-reg64 clamp-1)) - (set! (-> data screen-shader clamp) (new 'static 'gs-clamp :wms (gs-tex-wrap-mode region-clamp) - :wmt (gs-tex-wrap-mode region-clamp) - :maxu 639 :maxv 239)) + (set! (-> data screen-shader clamp) + (new 'static 'gs-clamp :wms (gs-tex-wrap-mode region-clamp) :wmt (gs-tex-wrap-mode region-clamp) :maxu 639 :maxv 239)) (set! (-> data screen-shader prims 9) (gs-reg64 alpha-1)) (set! (-> data screen-shader alpha) (new 'static 'gs-alpha :b #x1 :d #x1)) - ;; sin/cosine table (set! (-> data sincos-01 z) 0.999998) (set! (-> data sincos-23 z) -0.16666014) @@ -331,13 +278,12 @@ (set! (-> data sincos-45 w) 0.041620404) (set! (-> data sincos-67 w) -0.0013636408) (set! (-> data sincos-89 w) 0.000020170546) - ;; math camera stuff (set! (-> data basis-x quad) (the-as uint128 0)) (set! (-> data basis-x x) (- (-> *math-camera* perspective vector 0 x))) (with-pc (when (pc-cheats? (-> *pc-settings* cheats) mirror) - (*! (-> data basis-x x) -1.0))) + (*! (-> data basis-x x) -1.0))) (set! (-> data basis-y quad) (the-as uint128 0)) (set! (-> data basis-y y) (- (-> *math-camera* perspective vector 1 y))) (set! (-> data min-scale) (sqrtf (* (/ 1.0 (-> data basis-x x)) (/ 1.0 (-> data basis-y y))))) @@ -359,16 +305,9 @@ (set-vector! (-> data cdata 13) 0.5 0.0 -0.5 0.0) (set-vector! (-> data cdata 14) 0.5 0.0 0.5 0.0) (set-vector! (-> data cdata 15) -0.5 0.0 0.5 0.0) - ;; perspective correction stuff - (set-vector! (-> data stq-offset) - -1792.0 - (+ -2048.0 (the float (-> *video-parms* screen-hy))) - 0.0 - 0.0 - ) + (set-vector! (-> data stq-offset) -1792.0 (+ -2048.0 (the float (-> *video-parms* screen-hy))) 0.0 0.0) (set-vector! (-> data stq-scale) 0.0009765625 0.00390625 1.0 1.0) - ;; ?? (set! (-> data rgba-plain vector4w x) 128) (set! (-> data rgba-plain vector4w y) 128) @@ -377,8 +316,7 @@ (set! (-> data fog-clamp x) (-> *math-camera* fog-min)) (set! (-> data fog-clamp y) (-> *math-camera* fog-max)) (set! (-> data fog-clamp z) 2048.0) - (none) - ) + (none)) ;; we need to at least put something here so dma-buffer-add-vu-function doesn't crash. (define sprite-vu1-block (new 'static 'vu-function)) @@ -400,22 +338,17 @@ (let* ((sprite-count (+ group-0-size group-1-size)) (vec-data-size (* 3 sprite-count)) ;; 3 quadwords of vec-data per sprite (adgif-data-size (* 5 sprite-count)) ;; 5 quadwords of adgif data per sprite - (v0-0 (object-new allocation type-to-make - (the-as int (+ (-> type-to-make size) (the-as uint (* (+ (+ adgif-data-size -1) vec-data-size) 16)))) - ) - ) - ) + (v0-0 (object-new allocation + type-to-make + (the-as int (+ (-> type-to-make size) (the-as uint (* (+ (+ adgif-data-size -1) vec-data-size) 16))))))) (set! (-> v0-0 num-sprites 0) group-0-size) (set! (-> v0-0 num-sprites 1) group-1-size) (set! (-> v0-0 num-valid 0) 0) (set! (-> v0-0 num-valid 1) 0) - ;; internally, we put the vec-data and then the adgif-data (set! (-> v0-0 vec-data) (-> v0-0 data)) (set! (-> v0-0 adgif-data) (the-as (inline-array adgif-shader) (&-> v0-0 data vec-data-size))) - v0-0 - ) - ) + v0-0)) (defmethod new sprite-array-3d ((allocation symbol) (type-to-make type) (group-0-size int) (group-1-size int)) "Allocate a sprite-array for 3d sprites. There are two groups, each can contain the given number of sprites. @@ -427,22 +360,19 @@ (let* ((sprite-count (+ group-0-size group-1-size)) (vec-data-size (* 3 sprite-count)) (adgif-data-size (* 5 sprite-count)) - (v0-0 (object-new allocation type-to-make - (the-as int (+ (-> type-to-make size) (the-as uint (* (+ (+ adgif-data-size -1) vec-data-size) 16)))) - ) - ) - ) - (set! (-> v0-0 num-sprites 0) group-0-size) - (set! (-> v0-0 num-sprites 1) group-1-size) - (set! (-> v0-0 num-valid 0) 0) - (set! (-> v0-0 num-valid 1) 0) - (set! (-> v0-0 vec-data) (-> v0-0 data)) - (set! (-> v0-0 adgif-data) (the-as (inline-array adgif-shader) (&-> v0-0 data vec-data-size))) - v0-0 - ) - ) + (v0-0 (object-new allocation + type-to-make + (the-as int (+ (-> type-to-make size) (the-as uint (* (+ (+ adgif-data-size -1) vec-data-size) 16))))))) + (set! (-> v0-0 num-sprites 0) group-0-size) + (set! (-> v0-0 num-sprites 1) group-1-size) + (set! (-> v0-0 num-valid 0) 0) + (set! (-> v0-0 num-valid 1) 0) + (set! (-> v0-0 vec-data) (-> v0-0 data)) + (set! (-> v0-0 adgif-data) (the-as (inline-array adgif-shader) (&-> v0-0 data vec-data-size))) + v0-0)) (define *sprite-array-2d* (new 'global 'sprite-array-2d 1920 128)) + ;; note that there are 0 group 1 3d's (define *sprite-array-3d* (new 'global 'sprite-array-3d 256 0)) @@ -453,46 +383,34 @@ (local-vars (v1-0 float) (v1-1 float)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (cond - ((< (-> arg1 w) 0.0) - (.lvf vf1 (&-> arg0 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> arg1 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg0 qx-qy-qz-sy quad) vf1) - (.mov v1-0 vf1) - ) - (else - (.lvf vf1 (&-> arg0 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> arg1 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg0 qx-qy-qz-sy quad) vf1) - (.mov v1-1 vf1) - ) - ) - arg1 - ) - ) + (vf2 :class vf)) + (init-vf0-vector) + (cond + ((< (-> arg1 w) 0.0) + (.lvf vf1 (&-> arg0 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> arg1 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg0 qx-qy-qz-sy quad) vf1) + (.mov v1-0 vf1)) + (else + (.lvf vf1 (&-> arg0 qx-qy-qz-sy quad)) + (.lvf vf2 (&-> arg1 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg0 qx-qy-qz-sy quad) vf1) + (.mov v1-1 vf1))) + arg1)) (defun sprite-get-3d-quaternion! ((arg0 quaternion) (arg1 sprite-vec-data-3d)) "Get a quaternion. It's stored with only 3 components, so qw is recalculated." (let ((f0-0 (-> arg1 qx-qy-qz-sy x)) (f1-0 (-> arg1 qx-qy-qz-sy y)) - (f3-0 (-> arg1 qx-qy-qz-sy z)) - ) - (set! (-> arg0 x) f0-0) - (set! (-> arg0 y) f1-0) - (set! (-> arg0 z) f3-0) - (set! - (-> arg0 w) - (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))) - ) - ) - arg0 - ) + (f3-0 (-> arg1 qx-qy-qz-sy z))) + (set! (-> arg0 x) f0-0) + (set! (-> arg0 y) f1-0) + (set! (-> arg0 z) f3-0) + (set! (-> arg0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0))))) + arg0) (defun sprite-add-matrix-data ((dma-buff dma-buffer) (matrix-mode uint)) "Add matrix data to a dma-buffer. @@ -501,15 +419,17 @@ (let ((count 900)) ;; maybe address?? (cond ((zero? matrix-mode) - ;; upload to VU1 memory setup - (dma-buffer-add-cnt-vif2 dma-buff 5 - (new 'static 'vif-tag :cmd (vif-cmd stcycl) - :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num 5 ;; matrix + qword - :imm (new 'static 'vif-unpack-imm :addr count)) - ) - + (dma-buffer-add-cnt-vif2 dma-buff + 5 + (new 'static 'vif-tag :cmd (vif-cmd stcycl) :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) + (new 'static + 'vif-tag + :cmd (vif-cmd unpack-v4-32) + :num 5 + ;; matrix + qword + :imm + (new 'static 'vif-unpack-imm :addr count))) ;; sent the camera-temp matrix ;; these weren't done through the usual macros which is strange (let* ((mtx (the-as matrix (-> dma-buff base))) @@ -517,86 +437,60 @@ (a2-4 (-> t1-0 vector 0 quad)) (a3-4 (-> t1-0 vector 1 quad)) (t0-4 (-> t1-0 vector 2 quad)) - (t1-1 (-> t1-0 vector 3 quad)) - ) + (t1-1 (-> t1-0 vector 3 quad))) (set! (-> mtx vector 0 quad) a2-4) (set! (-> mtx vector 1 quad) a3-4) (set! (-> mtx vector 2 quad) t0-4) - (set! (-> mtx vector 3 quad) t1-1) - ) + (set! (-> mtx vector 3 quad) t1-1)) (&+! (-> dma-buff base) 64) - ;; also send this thing. (let ((v1-1 (+ count 4))) - (set! (-> (the-as (pointer uint128) (-> dma-buff base))) - (-> *math-camera* hvdf-off quad) - ) + (set! (-> (the-as (pointer uint128) (-> dma-buff base))) (-> *math-camera* hvdf-off quad)) (&+! (-> dma-buff base) 16) - (+ v1-1 1) - ) - ) - + (+ v1-1 1))) ((= matrix-mode 1) - (dma-buffer-add-cnt-vif2 dma-buff 80 - (new 'static 'vif-tag :cmd (vif-cmd stcycl) - :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num 80 ;; matrix + qword + 75 qword table - :imm (new 'static 'vif-unpack-imm :addr count)) - ) - + (dma-buffer-add-cnt-vif2 dma-buff + 80 + (new 'static 'vif-tag :cmd (vif-cmd stcycl) :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) + (new 'static + 'vif-tag + :cmd (vif-cmd unpack-v4-32) + :num 80 + ;; matrix + qword + 75 qword table + :imm + (new 'static 'vif-unpack-imm :addr count))) (let ((mtx2 (the-as matrix (-> dma-buff base))) (f1-0 (-> *math-camera* perspective vector 0 x)) (f2-0 (-> *math-camera* perspective vector 1 y)) - (f0-1 (* -1.9996 (-> *math-camera* perspective vector 0 x))) - ) + (f0-1 (* -1.9996 (-> *math-camera* perspective vector 0 x)))) (with-pc (when (not (-> *pc-settings* use-vis?)) ;; when the game is in widescreen, HUD sprites are generally enlarged, which looks terrible. ;; this reverts that. (*! f1-0 (-> *pc-settings* aspect-ratio-scale)) - (*! f0-1 (-> *pc-settings* aspect-ratio-scale)) - ) - (when (pc-cheats? (-> *pc-settings* cheats) mirror) - (*! f1-0 -1.0) - (*! f0-1 -1.0) - ) - ) + (*! f0-1 (-> *pc-settings* aspect-ratio-scale))) + (when (pc-cheats? (-> *pc-settings* cheats) mirror) + (*! f1-0 -1.0) + (*! f0-1 -1.0))) (set-vector! (-> mtx2 vector 0) f0-1 0.0 0.0 0.0) (set-vector! (-> mtx2 vector 1) 0.0 (- (* (/ f2-0 f1-0) f0-1)) 0.0 0.0) (set-vector! (-> mtx2 vector 2) 0.0 0.0 (- f0-1) 0.0) - (set-vector! (-> mtx2 vector 3) - 0.0 - 0.0 - (* 500000000.0 f0-1) - (* (* 60.0 f0-1) (-> *math-camera* pfog0)) - ) - ) + (set-vector! (-> mtx2 vector 3) 0.0 0.0 (* 500000000.0 f0-1) (* (* 60.0 f0-1) (-> *math-camera* pfog0)))) (&+! (-> dma-buff base) 64) (let ((v1-2 (+ count 4))) (let ((a1-16 (the-as vector (-> dma-buff base)))) (set! (-> a1-16 quad) (-> *math-camera* hvdf-off quad)) (set! (-> a1-16 x) 2048.0) (set! (-> a1-16 y) 2048.0) - (set! (-> a1-16 z) (-> *math-camera* hvdf-off z)) - ) + (set! (-> a1-16 z) (-> *math-camera* hvdf-off z))) (&+! (-> dma-buff base) 16) (let ((v1-3 (+ v1-2 1))) (dotimes (hvdf-idx 75) - (set! - (-> (the-as (pointer uint128) (-> dma-buff base))) - (-> *sprite-hvdf-data* data (+ hvdf-idx 1) quad) - ) + (set! (-> (the-as (pointer uint128) (-> dma-buff base))) (-> *sprite-hvdf-data* data (+ hvdf-idx 1) quad)) (&+! (-> dma-buff base) 16) - (+! v1-3 1) - ) - ) - ) - ) - ) - ) + (+! v1-3 1))))))) 0 - (none) - ) + (none)) #| (defun sprite-add-frame-data ((dma-buff dma-buffer) (tbp-offset uint)) @@ -621,51 +515,35 @@ (defun sprite-add-frame-data ((dma-buff dma-buffer) (tbp-offset uint)) (let ((s5-0 41)) - (let* ((v1-0 dma-buff) - (pkt (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc s5-0)) - (set! (-> pkt vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! - (-> pkt vif1) - (new 'static 'vif-tag :imm #x3d4 :cmd (vif-cmd unpack-v4-32) :num s5-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer pkt) 16)) - ) - (sprite-setup-frame-data - (the-as sprite-frame-data (-> dma-buff base)) - (the-as int tbp-offset) - ) - (&+! (-> dma-buff base) (* s5-0 16)) - ) - (none) - ) + (let* ((v1-0 dma-buff) + (pkt (the-as dma-packet (-> v1-0 base)))) + (set! (-> pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc s5-0)) + (set! (-> pkt vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + (set! (-> pkt vif1) (new 'static 'vif-tag :imm #x3d4 :cmd (vif-cmd unpack-v4-32) :num s5-0)) + (set! (-> v1-0 base) (&+ (the-as pointer pkt) 16))) + (sprite-setup-frame-data (the-as sprite-frame-data (-> dma-buff base)) (the-as int tbp-offset)) + (&+! (-> dma-buff base) (* s5-0 16))) + (none)) (defun sprite-add-2d-chunk ((sprites sprite-array-2d) (start-sprite-idx int) (num-sprites int) (dma-buff dma-buffer) (mscal-addr int)) "Upload sprite data from elements in the array." ;; first packet is just the header (let ((qwc-pkt1 1)) - (dma-buffer-add-cnt-vif2 dma-buff qwc-pkt1 - (new 'static 'vif-tag :cmd (vif-cmd stcycl) - :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt1 - :imm (new 'static 'vif-unpack-imm :flg 1)) - ) + (dma-buffer-add-cnt-vif2 dma-buff + qwc-pkt1 + (new 'static 'vif-tag :cmd (vif-cmd stcycl) :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt1 :imm (new 'static 'vif-unpack-imm :flg 1))) ;; set up the header data. (sprite-setup-header (the-as sprite-header (-> dma-buff base)) num-sprites) - (&+! (-> dma-buff base) (* qwc-pkt1 16)) - ) - + (&+! (-> dma-buff base) (* qwc-pkt1 16))) ;; second packet is vector data (3 qw / sprite) (let ((qwc-pkt2 (* 3 num-sprites))) ;; we do a ref to the vec-data and don't actually copy it into the dma-buffer - (dma-buffer-add-ref-vif2 dma-buff qwc-pkt2 (&+ (-> sprites vec-data) (* 48 start-sprite-idx)) - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt2 - :imm (new 'static 'vif-unpack-imm :flg 1 :addr 1)) - ) - ) - + (dma-buffer-add-ref-vif2 dma-buff + qwc-pkt2 + (&+ (-> sprites vec-data) (* 48 start-sprite-idx)) + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt2 :imm (new 'static 'vif-unpack-imm :flg 1 :addr 1)))) #| ;(when (= mscal-addr 3) (dotimes (i num-sprites) @@ -680,24 +558,20 @@ ) ) ; ) - |# - - + |# ;; third packet is adgif data (5 qw/sprite) (let ((qwc-pkt3 (* 5 num-sprites))) - (dma-buffer-add-ref-vif2 dma-buff qwc-pkt3 (&+ (-> sprites adgif-data) (* 80 start-sprite-idx)) - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt3 - :imm (new 'static 'vif-unpack-imm :flg 1 :addr 145)) - ) - ) - + (dma-buffer-add-ref-vif2 dma-buff + qwc-pkt3 + (&+ (-> sprites adgif-data) (* 80 start-sprite-idx)) + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt3 :imm (new 'static 'vif-unpack-imm :flg 1 :addr 145)))) ;; fourth packet runs the renderer! - (dma-buffer-add-cnt-vif2 dma-buff 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd mscal) :imm mscal-addr) - ) - (none) - ) + (dma-buffer-add-cnt-vif2 dma-buff + 0 + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd mscal) :imm mscal-addr)) + (none)) (defun sprite-add-2d-all ((sprites sprite-array-2d) (dma-buff dma-buffer) (group-idx int)) "Builds a DMA list for sprites" @@ -705,121 +579,87 @@ (when (> (-> sprites num-valid group-idx) 0) ;; we'll do batches of up to 48 at a time. (let ((current-sprite-idx 0) - (mscal-addr 3) - ) + (mscal-addr 3)) (when (= group-idx 1) ;; if we're doing group 1 sprites, start at the first sprite in group 1. (set! current-sprite-idx (-> sprites num-sprites 0)) ;; and use the other mpg. - (set! mscal-addr 109) - ) - + (set! mscal-addr 109)) ;;(format #t "group ~d 2D ~d~%" group-idx (-> sprites num-valid group-idx)) - ;; loop over chunks (let ((remaining-sprites (-> sprites num-valid group-idx))) (while (< 48 remaining-sprites) (sprite-add-2d-chunk sprites current-sprite-idx 48 dma-buff mscal-addr) (+! current-sprite-idx 48) - (+! remaining-sprites -48) - ) - (sprite-add-2d-chunk sprites current-sprite-idx remaining-sprites dma-buff mscal-addr) - ) - ) - ) - (none) - ) + (+! remaining-sprites -48)) + (sprite-add-2d-chunk sprites current-sprite-idx remaining-sprites dma-buff mscal-addr)))) + (none)) (defun sprite-add-3d-chunk ((sprites sprite-array-3d) (start-sprite-idx int) (num-sprites int) (dma-buff dma-buffer)) "Add DMA list data for up to 48 sprites. This is very similar to the 2D one, see that for more documentation" ;; first packet is just the header (let ((qwc-pkt1 1)) - (dma-buffer-add-cnt-vif2 dma-buff qwc-pkt1 - (new 'static 'vif-tag :cmd (vif-cmd stcycl) - :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt1 - :imm (new 'static 'vif-unpack-imm :flg 1)) - ) + (dma-buffer-add-cnt-vif2 dma-buff + qwc-pkt1 + (new 'static 'vif-tag :cmd (vif-cmd stcycl) :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt1 :imm (new 'static 'vif-unpack-imm :flg 1))) ;; set up the header data. (sprite-setup-header (the-as sprite-header (-> dma-buff base)) num-sprites) - (&+! (-> dma-buff base) (* qwc-pkt1 16)) - ) - + (&+! (-> dma-buff base) (* qwc-pkt1 16))) ;; second packet is vector data (3 qw / sprite) (let ((qwc-pkt2 (* 3 num-sprites))) ;; we do a ref to the vec-data and don't actually copy it into the dma-buffer - (dma-buffer-add-ref-vif2 dma-buff qwc-pkt2 (&+ (-> sprites vec-data) (* 48 start-sprite-idx)) - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt2 - :imm (new 'static 'vif-unpack-imm :flg 1 :addr 1)) - ) - ) - + (dma-buffer-add-ref-vif2 dma-buff + qwc-pkt2 + (&+ (-> sprites vec-data) (* 48 start-sprite-idx)) + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt2 :imm (new 'static 'vif-unpack-imm :flg 1 :addr 1)))) ;; third packet is adgif data (5 qw/sprite) (let ((qwc-pkt3 (* 5 num-sprites))) - (dma-buffer-add-ref-vif2 dma-buff qwc-pkt3 (&+ (-> sprites adgif-data) (* 80 start-sprite-idx)) - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt3 - :imm (new 'static 'vif-unpack-imm :flg 1 :addr 145)) - ) - ) - + (dma-buffer-add-ref-vif2 dma-buff + qwc-pkt3 + (&+ (-> sprites adgif-data) (* 80 start-sprite-idx)) + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt3 :imm (new 'static 'vif-unpack-imm :flg 1 :addr 145)))) ;; fourth packet runs the renderer! - (dma-buffer-add-cnt-vif2 dma-buff 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd mscal) :imm 211) - ) - (none) - ) + (dma-buffer-add-cnt-vif2 dma-buff + 0 + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd mscal) :imm 211)) + (none)) (defun sprite-add-3d-all ((sprites sprite-array-3d) (dma-buff dma-buffer) (group-idx int)) "Set up DMA for all 3d sprites" (when (> (-> sprites num-valid group-idx) 0) ;; pick the starting idx - (let ((current-sprite-idx - (if (zero? group-idx) - 0 - (-> sprites num-sprites 0) - ) - ) - (remaining-sprites (-> sprites num-valid group-idx)) - ) + (let ((current-sprite-idx (if (zero? group-idx) 0 (-> sprites num-sprites 0))) + (remaining-sprites (-> sprites num-valid group-idx))) ;; loop over chunks (while (< 48 remaining-sprites) (sprite-add-3d-chunk sprites current-sprite-idx 48 dma-buff) (+! current-sprite-idx 48) - (+! remaining-sprites -48) - ) - (sprite-add-3d-chunk sprites current-sprite-idx remaining-sprites dma-buff) - ) - ) - (none) - ) + (+! remaining-sprites -48)) + (sprite-add-3d-chunk sprites current-sprite-idx remaining-sprites dma-buff))) + (none)) (defun sprite-add-shadow-chunk ((shadow-buff fake-shadow-buffer) (start-idx int) (num-sprites int) (dma-buff dma-buffer)) "Add shadow sprites" - ;; first packet is just the header (let ((qwc-pkt1 1)) - (dma-buffer-add-cnt-vif2 dma-buff qwc-pkt1 - (new 'static 'vif-tag :cmd (vif-cmd stcycl) - :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt1 - :imm (new 'static 'vif-unpack-imm :flg 1)) - ) + (dma-buffer-add-cnt-vif2 dma-buff + qwc-pkt1 + (new 'static 'vif-tag :cmd (vif-cmd stcycl) :imm (new 'static 'vif-stcycl-imm :cl 4 :wl 4)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt1 :imm (new 'static 'vif-unpack-imm :flg 1))) ;; set up the header data. (sprite-setup-header (the-as sprite-header (-> dma-buff base)) num-sprites) - (&+! (-> dma-buff base) (* qwc-pkt1 16)) - ) - + (&+! (-> dma-buff base) (* qwc-pkt1 16))) ;; second packet is vector data (3 qw / sprite) (let ((qwc-pkt2 (* 3 num-sprites))) ;; we do a ref to the vec-data and don't actually copy it into the dma-buffer - (dma-buffer-add-cnt-vif2 dma-buff qwc-pkt2 - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt2 - :imm (new 'static 'vif-unpack-imm :flg 1 :addr 1)) - ) - ) + (dma-buffer-add-cnt-vif2 dma-buff + qwc-pkt2 + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt2 :imm (new 'static 'vif-unpack-imm :flg 1 :addr 1)))) ;; which we populate inside the dma-buffer, unlike normal sprites (dotimes (sprite-idx num-sprites) (let ((dma-vec-data (the-as (inline-array vector) (-> dma-buff base)))) @@ -831,62 +671,45 @@ (set! (-> dma-vec-data 1 x) (-> in-vec-data qx)) (set! (-> dma-vec-data 1 y) (-> in-vec-data qy)) (set! (-> dma-vec-data 1 z) (-> in-vec-data qz)) - (set! (-> dma-vec-data 1 w) (-> in-vec-data scale)) - ) + (set! (-> dma-vec-data 1 w) (-> in-vec-data scale))) (set! (-> dma-vec-data 2 x) 128.0) (set! (-> dma-vec-data 2 y) 128.0) (set! (-> dma-vec-data 2 z) 128.0) - (set! (-> dma-vec-data 2 w) 40.0) - ) - (&+! (-> dma-buff base) 48) - ) - + (set! (-> dma-vec-data 2 w) 40.0)) + (&+! (-> dma-buff base) 48)) ;; third packet is adgif data (5 qw/sprite) (let ((qwc-pkt3 (* 5 num-sprites))) - (dma-buffer-add-cnt-vif2 dma-buff qwc-pkt3 - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt3 - :imm (new 'static 'vif-unpack-imm :flg 1 :addr 145)) - ) - ) + (dma-buffer-add-cnt-vif2 dma-buff + qwc-pkt3 + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32) :num qwc-pkt3 :imm (new 'static 'vif-unpack-imm :flg 1 :addr 145)))) ;; again, populated as we go. This is inefficient, but these shadows were only temporary. (dotimes (si num-sprites) (let ((dma-adgif-data (the-as adgif-shader (-> dma-buff base))) - (in-adgif-data (-> shadow-buff data (+ start-idx si))) - ) + (in-adgif-data (-> shadow-buff data (+ start-idx si)))) (adgif-shader<-texture-simple! dma-adgif-data *shadow-middot-texture*) (if (logtest? (-> in-adgif-data flags) 1) - (set! (-> dma-adgif-data alpha) (new 'static 'gs-alpha :b #x2 :d #x1)) - (set! (-> dma-adgif-data alpha) (new 'static 'gs-alpha :a #x2 :d #x1)) - ) - ) - (&+! (-> dma-buff base) 80) - ) - + (set! (-> dma-adgif-data alpha) (new 'static 'gs-alpha :b #x2 :d #x1)) + (set! (-> dma-adgif-data alpha) (new 'static 'gs-alpha :a #x2 :d #x1)))) + (&+! (-> dma-buff base) 80)) ;; and run - (dma-buffer-add-cnt-vif2 dma-buff 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd mscal) :imm 211) - ) - (none) - ) + (dma-buffer-add-cnt-vif2 dma-buff + 0 + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd mscal) :imm 211)) + (none)) (defun sprite-add-shadow-all ((shadow-buff fake-shadow-buffer) (dma-buff dma-buffer)) "Set up DMA to add all shadows in the shadow buffer" (when (> (-> shadow-buff num-shadows) 0) - (let ((current-shadow 0) - (remaining-shadows (-> shadow-buff num-shadows)) - ) - (while (< 48 remaining-shadows) - (sprite-add-shadow-chunk shadow-buff current-shadow 48 dma-buff) - (+! current-shadow 48) - (+! remaining-shadows -48) - ) - (sprite-add-shadow-chunk shadow-buff current-shadow remaining-shadows dma-buff) - ) - ) - (none) - ) - + (let ((current-shadow 0) + (remaining-shadows (-> shadow-buff num-shadows))) + (while (< 48 remaining-shadows) + (sprite-add-shadow-chunk shadow-buff current-shadow 48 dma-buff) + (+! current-shadow 48) + (+! remaining-shadows -48)) + (sprite-add-shadow-chunk shadow-buff current-shadow remaining-shadows dma-buff))) + (none)) (defun sprite-draw ((disp display)) "Main sprite draw function." @@ -894,38 +717,36 @@ (let ((dma-mem-begin (-> (current-frame) global-buf base))) ;; draw in global-buf (with-dma-buffer-add-bucket ((dma-buff (-> (current-frame) global-buf)) (bucket-id sprite)) - ;; run the distorters (sprite-init-distorter dma-buff (-> disp frames (-> disp on-screen) draw frame1 fbp)) (sprite-draw-distorters dma-buff) - ;; first packet - set up the GS registers (dma-buffer-add-gs-set dma-buff - (test-1 (new 'static 'gs-test - :ate 1 :atst (gs-atest greater-equal) :aref 38 ;; (the int (* 255 0.15)) - :afail 1 - :zte 1 :ztst (gs-ztest greater-equal) - )) - (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) - ) - + (test-1 (new 'static + 'gs-test + :ate 1 + :atst (gs-atest greater-equal) + :aref 38 + ;; (the int (* 255 0.15)) + :afail 1 + :zte 1 + :ztst (gs-ztest greater-equal))) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))) ;; load the VU1 code (dma-buffer-add-vu-function dma-buff sprite-vu1-block 1) ;; add the common data (sprite-add-frame-data dma-buff (-> disp frames (-> disp on-screen) draw frame1 fbp)) - ;; run the init part of the VU1 mpg - (dma-buffer-add-cnt-vif2 dma-buff 0 - (new 'static 'vif-tag :cmd (vif-cmd mscalf) :imm 0) ;; wait for mpg and gif, start mpg - (new 'static 'vif-tag :cmd (vif-cmd flushe)) ;; wait for mpg - ) - + (dma-buffer-add-cnt-vif2 dma-buff + 0 + (new 'static 'vif-tag :cmd (vif-cmd mscalf) :imm 0) ;; wait for mpg and gif, start mpg + (new 'static 'vif-tag :cmd (vif-cmd flushe)) ;; wait for mpg + ) ;; set up double buffer upload and draw - (dma-buffer-add-cnt-vif2 dma-buff 0 - (new 'static 'vif-tag :cmd (vif-cmd base) :imm 0) - (new 'static 'vif-tag :cmd (vif-cmd offset) :imm 400) - ) - + (dma-buffer-add-cnt-vif2 dma-buff + 0 + (new 'static 'vif-tag :cmd (vif-cmd base) :imm 0) + (new 'static 'vif-tag :cmd (vif-cmd offset) :imm 400)) ;; add matrix data (not needed for init) (sprite-add-matrix-data dma-buff (the-as uint 0)) ;; draw 3d's @@ -933,64 +754,38 @@ ;; draw 2d's (group 0) (sprite-add-2d-all *sprite-array-2d* dma-buff 0) ;; draw shadows - (sprite-add-shadow-all (if (= *fake-shadow-buffer* *fake-shadow-buffer-1*) - *fake-shadow-buffer-2* - *fake-shadow-buffer-1* - ) - dma-buff - ) - (dma-buffer-add-cnt-vif2 dma-buff 0 - (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd flushe)) - ) + (sprite-add-shadow-all (if (= *fake-shadow-buffer* *fake-shadow-buffer-1*) *fake-shadow-buffer-2* *fake-shadow-buffer-1*) + dma-buff) + (dma-buffer-add-cnt-vif2 dma-buff 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd flushe))) ;; set matrix for group 1 (screen-space sprites) (sprite-add-matrix-data dma-buff (the-as uint 1)) ;; draw screen sprites - (sprite-add-2d-all *sprite-array-2d* dma-buff 1) - - ) - + (sprite-add-2d-all *sprite-array-2d* dma-buff 1)) ;; update memory usage (let ((mem-use *dma-mem-usage*)) (when (nonzero? mem-use) (set! (-> mem-use length) (max 83 (-> mem-use length))) (set! (-> mem-use data 82 name) "sprite") (+! (-> mem-use data 82 count) 1) - (+! (-> mem-use data 82 used) - (&- (-> (current-frame) global-buf base) - (the-as uint dma-mem-begin) - ) - ) - (set! (-> mem-use data 82 total) (-> mem-use data 82 used)) - ) - ) - ) + (+! (-> mem-use data 82 used) (&- (-> (current-frame) global-buf base) (the-as uint dma-mem-begin))) + (set! (-> mem-use data 82 total) (-> mem-use data 82 used))))) 0 - (none) - ) - - + (none)) (defun sprite-allocate-user-hvdf () "Allocate an HVDF entry. Returns the index. Or 0 if it fails" (dotimes (v1-0 76) - (when (zero? (-> *sprite-hvdf-control* alloc v1-0)) - (set! (-> *sprite-hvdf-control* alloc v1-0) 1) - (return v1-0) - ) - ) - 0 - ) + (when (zero? (-> *sprite-hvdf-control* alloc v1-0)) + (set! (-> *sprite-hvdf-control* alloc v1-0) 1) + (return v1-0))) + 0) (defun sprite-release-user-hvdf ((arg0 int)) "Free an HVDF" (when (and (>= arg0 1) (< arg0 76)) - (set! (-> *sprite-hvdf-control* alloc arg0) 0) - ) - (none) - ) + (set! (-> *sprite-hvdf-control* alloc arg0) 0)) + (none)) (defun sprite-get-user-hvdf ((arg0 int)) "Get an HVDF entry by index" - (the-as vector (-> *sprite-hvdf-data* data arg0)) - ) \ No newline at end of file + (the-as vector (-> *sprite-hvdf-data* data arg0))) diff --git a/goal_src/jak1/engine/gfx/texture/texture-h.gc b/goal_src/jak1/engine/gfx/texture/texture-h.gc index c0a9d0690e..361ae66334 100644 --- a/goal_src/jak1/engine/gfx/texture/texture-h.gc +++ b/goal_src/jak1/engine/gfx/texture/texture-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: texture-h.gc -;; name in dgo: texture-h -;; dgos: GAME, ENGINE - ;; The texture system manages: ;; - VRAM allocation and uploads ;; - the texture page directory @@ -23,14 +18,14 @@ ;; There are different kinds of texture pages for the different renderers (defenum tpage-kind - :type uint32 - :bitfield #f - (tfrag 0) ;; background - (pris 1) ;; foreground - (shrub 2) ;; shrubs/sprites - (alpha 3) ;; effects - (water 4) ;; non-ocean water (fj rivers, water near farmer) - ) + :type uint32 + :bitfield #f + (tfrag 0) ;; background + (pris 1) ;; foreground + (shrub 2) ;; shrubs/sprites + (alpha 3) ;; effects + (water 4) ;; non-ocean water (fj rivers, water near farmer) + ) ;; bitmask for enabled tpage-kinds (changed in debug menu) (define *texture-enable-user-menu* #x1f) @@ -40,11 +35,8 @@ ;; Any individual texture can be uniquely identified with a texture-id. (deftype texture-id (uint32) - ((index uint16 :offset 8 :size 12) - (page uint16 :offset 20 :size 12) - ) - ) - + ((index uint16 :offset 8 :size 12) + (page uint16 :offset 20 :size 12))) ;;;;;;;;;;;;;;;;;;; ;; Texture Pool @@ -52,57 +44,48 @@ ;; A texture-pool-segment is a chunk of VRAM used to store textures (deftype texture-pool-segment (structure) - ((dest uint32) - (size uint32) - ) - :pack-me - ) + ((dest uint32) + (size uint32)) + :pack-me) (declare-type texture-page basic) + (declare-type level basic) ;; There is a single texture-pool which manages storing textures in VRAM (deftype texture-pool (basic) - ((top int32) ;; seems be 0 always, start of VRAM managed by pool - (cur int32) ;; highest address in use by the pool - + ((top int32) ;; seems be 0 always, start of VRAM managed by pool + (cur int32) ;; highest address in use by the pool ;; the allocate function is used to add a texture-page to the pool. - (allocate-func (function texture-pool texture-page kheap int texture-page)) - + (allocate-func (function texture-pool texture-page kheap int texture-page)) ;; the location of the color look-up table for font texture (vram word idx) - (font-palette int32) - + (font-palette int32) ;; we have 4 segments, but only the near and common are used. - (segment texture-pool-segment 4 :inline) - (segment-near texture-pool-segment :inline :overlay-at (-> segment 0)) - (segment-common texture-pool-segment :inline :overlay-at (-> segment 1)) - + (segment texture-pool-segment 4 :inline) + (segment-near texture-pool-segment :inline :overlay-at (-> segment 0)) + (segment-common texture-pool-segment :inline :overlay-at (-> segment 1)) ;; tpages that are not part of level textures are stored here. - (common-page texture-page 32) + (common-page texture-page 32) ;; ?? - (common-page-mask int32) + (common-page-mask int32) ;; for each pool page, stores the id of the tpage which is currently loaded in VRAM. - (ids uint32 126) - ) + (ids uint32 126)) (:methods - (new (symbol type) _type_) - (initialize! (_type_) _type_) - (print-usage (_type_) _type_) - (setup-font-texture! (_type_) none) - (allocate-defaults! (_type_) none) - (login-level-textures (_type_ level int (pointer texture-id)) none) - (add-tex-to-dma! (_type_ level int) none) - (allocate-vram-words! (_type_ int) int) - (allocate-segment! (_type_ texture-pool-segment int) texture-pool-segment) - (unused-17 () none) - (unused-18 () none) - (unused-19 () none) - (unload! (_type_ texture-page) int) - (upload-one-common! (_type_ level) symbol) - (lookup-boot-common-id (_type_ int) int) - ) - ) - + (new (symbol type) _type_) + (initialize! (_type_) _type_) + (print-usage (_type_) _type_) + (setup-font-texture! (_type_) none) + (allocate-defaults! (_type_) none) + (login-level-textures (_type_ level int (pointer texture-id)) none) + (add-tex-to-dma! (_type_ level int) none) + (allocate-vram-words! (_type_ int) int) + (allocate-segment! (_type_ texture-pool-segment int) texture-pool-segment) + (unused-17 () none) + (unused-18 () none) + (unused-19 () none) + (unload! (_type_ texture-page) int) + (upload-one-common! (_type_ level) symbol) + (lookup-boot-common-id (_type_ int) int))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Texture and Texture Page @@ -113,69 +96,57 @@ ;; This refers to data stored elsewhere, either in the data of a tpage or VRAM. ;; After a tpage has been allocated, the dest will be the VRAM address of the texture. (deftype texture (basic) - ((w int16) - (wu uint16 :overlay-at w) - (h int16) - (hu uint16 :overlay-at h) - (num-mips uint8) - (tex1-control uint8) - (psm gs-psm) - (mip-shift uint8) - (clutpsm uint16) - (dest uint16 7) - (clutdest uint16) - (width uint8 7) - (name string) - (size uint32) - (uv-dist float) - (masks uint32 3) - ) - ) + ((w int16) + (wu uint16 :overlay-at w) + (h int16) + (hu uint16 :overlay-at h) + (num-mips uint8) + (tex1-control uint8) + (psm gs-psm) + (mip-shift uint8) + (clutpsm uint16) + (dest uint16 7) + (clutdest uint16) + (width uint8 7) + (name string) + (size uint32) + (uv-dist float) + (masks uint32 3))) ;; tpages themselves are divided into segments. ;; some renderers may know ahead of time that they don't need all segments ;; and can skip uploading unused texture data. (deftype texture-page-segment (structure) - ((block-data pointer) - (size uint32) - (dest uint32) - ) - :pack-me - ) - + ((block-data pointer) + (size uint32) + (dest uint32)) + :pack-me) (defun texture-mip->segment ((arg0 int) (arg1 int)) "Convert a mip level to the segment that it is stored in." - (if (>= 2 arg1) - (+ (- -1 arg0) arg1) - (max 0 (- 2 arg0)) - ) - ) + (if (>= 2 arg1) (+ (- -1 arg0) arg1) (max 0 (- 2 arg0)))) ;; The actual texture-page header ;; After the dynamic array of texture is the actual texture data. ;; This may be thrown away if the texture is permanently in VRAM. (deftype texture-page (basic) - ((info file-info) - (name basic) - (id uint32) - (length int32) - (mip0-size uint32) - (size uint32) - (segment texture-page-segment 3 :inline) - (pad uint32 16) - (data texture :dynamic) - ) + ((info file-info) + (name basic) + (id uint32) + (length int32) + (mip0-size uint32) + (size uint32) + (segment texture-page-segment 3 :inline) + (pad uint32 16) + (data texture :dynamic)) (:methods - (relocate (_type_ kheap (pointer uint8)) none :replace) - (remove-from-heap (_type_ kheap) _type_) - (get-leftover-block-count (_type_ int int) int) - (unused-11 () none) - (relocate-dests! (_type_ int int) none) - (add-to-dma-buffer (_type_ dma-buffer int) int) - (upload-now! (_type_ int) none) - ) - ) + (relocate (_type_ kheap (pointer uint8)) none :replace) + (remove-from-heap (_type_ kheap) _type_) + (get-leftover-block-count (_type_ int int) int) + (unused-11 () none) + (relocate-dests! (_type_ int int) none) + (add-to-dma-buffer (_type_ dma-buffer int) int) + (upload-now! (_type_ int) none))) ;;;;;;;;;;;;;;;;;;;;;;; ;; Texture Shaders @@ -191,40 +162,30 @@ ;; the A+D format only uses bits 0-72, this fits in 72-96. The use of 96-128 is unknown ;; the shader value must be multiplied by 16 first. (deftype shader-ptr (uint32) - ((shader uint32 :offset 8 :size 24) - ) - ) + ((shader uint32 :offset 8 :size 24))) ;; This is a dynamic array of shader-ptrs ;; There will be one array per texture-page, and this array will have one entry per texture. ;; These arrays will be allocated by the texture system and stored in level heaps. (deftype texture-link (structure) - ((next shader-ptr 1) - ) - ) + ((next shader-ptr 1))) ;; Each texture-page will have a texture-page-dir-entry for it (deftype texture-page-dir-entry (structure) - ((length int16) - (status uint16) - (page texture-page) - (link texture-link) - ) - :pack-me - ) + ((length int16) + (status uint16) + (page texture-page) + (link texture-link)) + :pack-me) ;; There is a single texture-page-dir with a slot for each texture-page. ;; It's stored on the DVD and loaded with the engine. (deftype texture-page-dir (basic) - ((length int32) - (entries texture-page-dir-entry 1 :inline) - ) + ((length int32) + (entries texture-page-dir-entry 1 :inline)) (:methods - (relocate (_type_ kheap (pointer uint8)) none :replace) - (unlink-textures-in-heap! (_type_ kheap) int) - ) - ) - + (relocate (_type_ kheap (pointer uint8)) none :replace) + (unlink-textures-in-heap! (_type_ kheap) int))) ;;;;;;;;;;;;;;;;;;;;;; ;; Relocate Later @@ -235,18 +196,16 @@ ;; The texture system will set this up, then the level system will do this when there's time. (deftype texture-relocate-later (basic) - ((memcpy symbol) - (dest uint32) - (source uint32) - (move uint32) - (entry texture-page-dir-entry) - (page texture-page) - ) - ) - + ((memcpy symbol) + (dest uint32) + (source uint32) + (move uint32) + (entry texture-page-dir-entry) + (page texture-page))) ;; global relocate info (define *texture-relocate-later* (new 'global 'texture-relocate-later)) + (set! (-> *texture-relocate-later* memcpy) #f) ;; set to #f, will be set by texture-page-dir's relocate method on engine load. @@ -260,56 +219,44 @@ :type uint32 :bitfield #t ;; note that we start at bit 8 because [0-7] are in use. - - (needs-log-in 8) ;; set if we should attempt to log in, cleared on log-in - (bit-9 9) ;; cleared on log-in + (needs-log-in 8) ;; set if we should attempt to log in, cleared on log-in + (bit-9 9) ;; cleared on log-in ) ;; The actual adgif-shader is a 5 quadwords of A+D for GIF PACKED mode. ;; there is some extra data snuck in. (deftype adgif-shader (structure) - ((quad qword 5 :inline :offset 0) - (prims gs-reg64 10 :overlay-at quad) - + ((quad qword 5 :inline :offset 0) + (prims gs-reg64 10 :overlay-at quad) ;; tex0, contains texture location, size, format, clut settings - (tex0 gs-tex0 :overlay-at (-> prims 0)) + (tex0 gs-tex0 :overlay-at (-> prims 0)) ;; prims 1 is the register id ;; prims 1 is shared with the link-test bitfield. - ;; tex1, more texture information (LOD/MIP setup) - (tex1 gs-tex1 :overlay-at (-> prims 2)) + (tex1 gs-tex1 :overlay-at (-> prims 2)) ;; prims 3 ;; prims 3 is shared with texture-id - ;; miptb1, mip addresses/widths (levels 1 - 3) - (miptbp1 gs-miptbp :overlay-at (-> prims 4)) + (miptbp1 gs-miptbp :overlay-at (-> prims 4)) ;; prims 5 ;; prims 5 is shared with the next shader-ptr - ;; clamp, used for texture wrapping - (clamp gs-clamp :overlay-at (-> prims 6)) - (clamp-reg gs-reg64 :overlay-at (-> prims 7)) - + (clamp gs-clamp :overlay-at (-> prims 6)) + (clamp-reg gs-reg64 :overlay-at (-> prims 7)) ;; alpha blending. NOTE: this can also be miptbp2 (mip 4+ settings) - (alpha gs-alpha :overlay-at (-> prims 8)) - (alpha-as-miptb2 gs-miptbp :overlay-at alpha) + (alpha gs-alpha :overlay-at (-> prims 8)) + (alpha-as-miptb2 gs-miptbp :overlay-at alpha) ;; prims 9 - - ;; sneaky overlays - (link-test link-test-flags :overlay-at (-> prims 1)) ;; don't touch lower 8 bits of this - (texture-id texture-id :overlay-at (-> prims 3)) ;; ok to touch all bits - (next shader-ptr :overlay-at (-> prims 5)) ;; don't touch lower 8 bits of this - ) - ) - + (link-test link-test-flags :overlay-at (-> prims 1)) ;; don't touch lower 8 bits of this + (texture-id texture-id :overlay-at (-> prims 3)) ;; ok to touch all bits + (next shader-ptr :overlay-at (-> prims 5)) ;; don't touch lower 8 bits of this + )) (deftype adgif-shader-array (inline-array-class) - ((data adgif-shader :inline :dynamic :offset 16) - ) - ) -(set! (-> adgif-shader-array heap-base) 80) + ((data adgif-shader :inline :dynamic :offset 16))) +(set! (-> adgif-shader-array heap-base) 80) ;;;;;;;;;;;;;;;;;;;;;;;; ;; Fixed VRAM @@ -318,23 +265,38 @@ ;; These are pre-allocated and always in VRAM. (define *sky-base-vram-word* 0) + (define *sky-base-block* 0) + (define *sky-base-page* 0) + (define *depth-cue-base-vram-word* 0) + (define *depth-cue-base-block* 0) + (define *depth-cue-base-page* 0) + (define *eyes-base-vram-word* 0) + (define *eyes-base-block* 0) + (define *eyes-base-page* 0) + (define *ocean-base-vram-word* 0) + (define *ocean-base-block* 0) -(define *ocean-base-page* 0) +(define *ocean-base-page* 0) (defun-extern texture-page-default-allocate texture-pool texture-page kheap int texture-page) -(define-extern texture-page-login (function texture-id (function texture-pool texture-page kheap int texture-page) kheap texture-page-dir-entry)) + +(define-extern texture-page-login + (function texture-id (function texture-pool texture-page kheap int texture-page) kheap texture-page-dir-entry)) + (define-extern *texture-pool* texture-pool) + (define-extern lookup-texture-by-id (function texture-id texture)) + (define-extern adgif-shader<-texture-with-update! (function adgif-shader texture adgif-shader)) (define-extern level-remap-texture (function texture-id texture-id)) diff --git a/goal_src/jak1/engine/gfx/texture/texture-upload.gc b/goal_src/jak1/engine/gfx/texture/texture-upload.gc index 02385b514e..5bf98a1977 100644 --- a/goal_src/jak1/engine/gfx/texture/texture-upload.gc +++ b/goal_src/jak1/engine/gfx/texture/texture-upload.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "GAME.CGO") - (require "engine/gfx/generic/generic-effect.gc") -;; name: texture-upload.gc -;; name in dgo: texture-upload -;; dgos: GAME, ART - ;; This will happen part way through the list of tpages ;; we already got the font texture, so set that up. @@ -20,20 +15,14 @@ ;; not sure what's going on here, this isn't a valid texture ID. It ends up ignoring the 0x14 in the lower ;; bits, and just gets you the 0th texture in the environment-generic texture page. (define *generic-envmap-texture* (lookup-texture-by-id (the-as texture-id #x10000014))) - (define *ocean-texture* (lookup-texture-by-id (new 'static 'texture-id :page #x370))) - ) + (define *ocean-texture* (lookup-texture-by-id (new 'static 'texture-id :page #x370)))) (else (format 0 "NOTE: skipped texture setup in texture-upload.gc, textures were not loaded.~%") (set! *shadow-middot-texture* #f) (set! *generic-envmap-texture* #f) - (set! *ocean-texture* #f) - ) - ) - - + (set! *ocean-texture* #f))) ;; the next texture we're going to load is the HUD for the start menu, which shouldn't ;; be allocated with the default allocator. So for now we can set it to common-boot, which ;; will place this in common, then disable itself once it encounters another normal texture (set! (-> *texture-pool* allocate-func) texture-page-common-boot-allocate) - diff --git a/goal_src/jak1/engine/gfx/texture/texture.gc b/goal_src/jak1/engine/gfx/texture/texture.gc index e5edba37d0..06ff24281d 100644 --- a/goal_src/jak1/engine/gfx/texture/texture.gc +++ b/goal_src/jak1/engine/gfx/texture/texture.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/font-h.gc") (require "kernel/gkernel.gc") (require "engine/dma/dma-bucket.gc") @@ -10,10 +9,6 @@ (require "engine/level/level-h.gc") (require "engine/load/file-io.gc") -;; name: texture.gc -;; name in dgo: texture -;; dgos: GAME, ENGINE - ;; There are three things called pages: ;; - tpage: a collection of textures for a renderer. Different tpages have different sizes. ;; the actual type is named texture-page. @@ -21,7 +16,6 @@ ;; this is 2048 VRAM words. ;; - Pool page: the page size used by the texture-pool. This is 2x the size of a GS page. - ;; The layout of VRAM (in 2048 * 4 byte word units) ;; 0 - 320 VRAM managed by texture.gc ;; 320 - 384 first frame buffer @@ -110,56 +104,42 @@ (defmethod print ((this texture-page)) "Print a short description of a texture page." - (format #t "#" + (format #t + "#" (-> this name) (-> this length) ;; number of textures. (shr (-> this segment 0 dest) 6) ;; destination (vram words (4 byte) -> blocks (256 byte)) (shr (-> this size) 8) ;; size (vram words -> kilobytes) - this - ) - this - ) + this) + this) (defmethod length ((this texture-page)) "Get the number of textures in a texture page" - (-> this length) - ) + (-> this length)) (defmethod asize-of ((this texture-page)) "Get the size in memory of a texture page object, not including the actual texture objects or texture data" - (the-as int (+ (-> this type size) (the-as uint (shl (-> this length) 2)))) - ) + (the-as int (+ (-> this type size) (the-as uint (shl (-> this length) 2))))) (defmethod mem-usage ((this texture-page) (arg0 memory-usage-block) (arg1 int)) "Update the mem-usage for a texture." - ;; some setup for texture memory usage. (set! (-> arg0 length) (max (+ 1 (mem-usage-id-int texture)) (-> arg0 length))) (set! (-> arg0 data (mem-usage-id texture) name) "texture") - ;; count will hold the number of textures. - (set! (-> arg0 data (mem-usage-id texture) count) - (+ (-> arg0 data (mem-usage-id texture) count) (-> this length))) - + (set! (-> arg0 data (mem-usage-id texture) count) (+ (-> arg0 data (mem-usage-id texture) count) (-> this length))) ;; We subtract off the size of the textures. This makes the memory usage negative! ;; I don't see why this is correct. (let ((v1-7 (- (asize-of this) (the-as int (shl (-> this size) 2))))) ;; add 64-bytes for each entry, the size of texture. (dotimes (a0-6 (-> this length)) - (if (-> this data a0-6) - (+! v1-7 64) - ) - ) + (if (-> this data a0-6) (+! v1-7 64))) ;; update used and total. (set! (-> arg0 data (mem-usage-id texture) used) (+ (-> arg0 data (mem-usage-id texture) used) v1-7)) ;; total assumes 16-byte alignment. (set! (-> arg0 data (mem-usage-id texture) total) - (+ (-> arg0 data (mem-usage-id texture) total) (logand -16 (+ v1-7 15))) - ) - ) - this - ) - + (+ (-> arg0 data (mem-usage-id texture) total) (logand -16 (+ v1-7 15))))) + this) ;;;;;;;;;;;;;;;;;;;;;; ;; Texture Data Load @@ -168,41 +148,25 @@ (defun texture-bpp ((arg0 gs-psm)) "Get the number of bits per pixel for the given texture format" (case arg0 - (((gs-psm mt8)) - 8 - ) - (((gs-psm mt4)) - 4 - ) - (((gs-psm ct16) (gs-psm ct16s) (gs-psm mz16) (gs-psm mz16s)) - 16 - ) - (else - 32 - ) - ) - ) + (((gs-psm mt8)) 8) + (((gs-psm mt4)) 4) + (((gs-psm ct16) (gs-psm ct16s) (gs-psm mz16) (gs-psm mz16s)) 16) + (else 32))) (defun texture-qwc ((w int) (h int) (tex-format gs-psm)) "Get the number of quadwords in a texture. Round up." - (let ((v1-0 (texture-bpp tex-format))) - (sar (+ (* (* w h) v1-0) 127) 7) - ) - ) + (let ((v1-0 (texture-bpp tex-format))) (sar (+ (* (* w h) v1-0) 127) 7))) (defun physical-address ((arg0 pointer)) "Convert a pointer to a physical address than can be used for DMA" - (the-as pointer (logand #xfffffff (the-as int arg0))) - ) + (the-as pointer (logand #xfffffff (the-as int arg0)))) (defun dma-buffer-add-ref-texture ((buf dma-buffer) (data pointer) (tex-w int) (tex-h int) (tex-format gs-psm)) "Add texture data to a dma buffer. You must first set up the GS transfer to the correct destination. This just sets IMAGE mode and sends data. Doesn't copy the texture into the buffer." - ;; get pointer and size (quadwords) (let ((data-ptr (physical-address data)) - (qwc (texture-qwc tex-w tex-h tex-format)) - ) + (qwc (texture-qwc tex-w tex-h tex-format))) ;; do transfers until its all gone. (while (> qwc 0) ;; only #x7fff quadwords/transfer is allowed. @@ -210,31 +174,22 @@ ;; is this the last transfer? (let ((eop (if (= qwc qwc-this-time) 1 0))) ;; set up dma/vif for a single giftag - (dma-buffer-add-cnt-vif2 buf 1 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd direct) :imm 1) - ) - + (dma-buffer-add-cnt-vif2 buf + 1 + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm 1)) ;; set up IMAGE mode! - (dma-buffer-add-gif-tag buf (new 'static 'gif-tag64 :flg (gif-flag image) :eop eop :nloop qwc-this-time) - (gs-reg-list) - ) - ) - + (dma-buffer-add-gif-tag buf (new 'static 'gif-tag64 :flg (gif-flag image) :eop eop :nloop qwc-this-time) (gs-reg-list))) ;; and send the data. - (dma-buffer-add-ref-vif2 buf qwc-this-time data-ptr + (dma-buffer-add-ref-vif2 buf + qwc-this-time + data-ptr (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd direct) :imm qwc-this-time) - ) - + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm qwc-this-time)) ;; seek to next data. (&+! data-ptr (shl qwc-this-time 4)) - (set! qwc (- qwc qwc-this-time)) - ) - ) - ) - (none) - ) - + (set! qwc (- qwc qwc-this-time))))) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;; ;; texture @@ -246,7 +201,8 @@ (defmethod print ((this texture)) "Print out texture object, describing the texture format." - (format #t "# this name) (psm->string (-> this psm)) (-> this w) @@ -256,160 +212,369 @@ ) ;; print each level (dotimes (s5-1 (the-as int (-> this num-mips))) - (format #t " #x~X/~X" (-> this dest s5-1) (-> this width s5-1)) - ) + (format #t " #x~X/~X" (-> this dest s5-1) (-> this width s5-1))) ;; for < 16 bpp textures, there is a color look-up table. - (if (< (texture-bpp (-> this psm)) 16) - (format #t " :clut #x~X/1" (-> this clutdest)) - ) + (if (< (texture-bpp (-> this psm)) 16) (format #t " :clut #x~X/1" (-> this clutdest))) (format #t " @ #x~X>" this) - this - ) - + this) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Unused and partially broken texture format utils ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define ct32-24-block-table - (new 'static 'boxed-array :type int32 :length 32 - 0 1 4 5 16 17 20 21 2 3 6 7 18 19 22 23 8 9 12 13 24 25 28 29 10 11 14 15 26 27 30 31)) + (new 'static + 'boxed-array + :type + int32 + :length 32 + 0 + 1 + 4 + 5 + 16 + 17 + 20 + 21 + 2 + 3 + 6 + 7 + 18 + 19 + 22 + 23 + 8 + 9 + 12 + 13 + 24 + 25 + 28 + 29 + 10 + 11 + 14 + 15 + 26 + 27 + 30 + 31)) (define mz32-24-block-table - (new 'static 'boxed-array :type int32 :length 32 - 16 17 20 21 0 1 4 5 18 19 22 23 2 3 6 7 24 25 28 29 8 9 12 13 26 27 30 31 10 11 14 15)) + (new 'static + 'boxed-array + :type + int32 + :length 32 + 16 + 17 + 20 + 21 + 0 + 1 + 4 + 5 + 18 + 19 + 22 + 23 + 2 + 3 + 6 + 7 + 24 + 25 + 28 + 29 + 8 + 9 + 12 + 13 + 26 + 27 + 30 + 31 + 10 + 11 + 14 + 15)) (define ct16-block-table - (new 'static 'boxed-array :type int32 :length 32 - 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 16 18 24 26 17 19 25 27 20 22 28 30 21 23 29 31)) + (new 'static + 'boxed-array + :type + int32 + :length 32 + 0 + 2 + 8 + 10 + 1 + 3 + 9 + 11 + 4 + 6 + 12 + 14 + 5 + 7 + 13 + 15 + 16 + 18 + 24 + 26 + 17 + 19 + 25 + 27 + 20 + 22 + 28 + 30 + 21 + 23 + 29 + 31)) (define ct16s-block-table - (new 'static 'boxed-array :type int32 :length 32 - 0 2 16 18 1 3 17 19 8 10 24 26 9 11 25 27 4 6 20 22 5 7 21 23 12 14 28 30 13 15 29 31)) + (new 'static + 'boxed-array + :type + int32 + :length 32 + 0 + 2 + 16 + 18 + 1 + 3 + 17 + 19 + 8 + 10 + 24 + 26 + 9 + 11 + 25 + 27 + 4 + 6 + 20 + 22 + 5 + 7 + 21 + 23 + 12 + 14 + 28 + 30 + 13 + 15 + 29 + 31)) (define mz16-block-table - (new 'static 'boxed-array :type int32 :length 32 - 16 18 24 26 17 19 25 27 20 22 28 30 21 23 29 31 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15)) + (new 'static + 'boxed-array + :type + int32 + :length 32 + 16 + 18 + 24 + 26 + 17 + 19 + 25 + 27 + 20 + 22 + 28 + 30 + 21 + 23 + 29 + 31 + 0 + 2 + 8 + 10 + 1 + 3 + 9 + 11 + 4 + 6 + 12 + 14 + 5 + 7 + 13 + 15)) (define mz16s-block-table - (new 'static 'boxed-array :type int32 :length 32 - 16 18 0 2 17 19 1 3 24 26 8 10 25 27 9 11 20 22 4 6 21 23 5 7 28 30 12 14 29 31 13 15)) + (new 'static + 'boxed-array + :type + int32 + :length 32 + 16 + 18 + 0 + 2 + 17 + 19 + 1 + 3 + 24 + 26 + 8 + 10 + 25 + 27 + 9 + 11 + 20 + 22 + 4 + 6 + 21 + 23 + 5 + 7 + 28 + 30 + 12 + 14 + 29 + 31 + 13 + 15)) (define mt8-block-table - (new 'static 'boxed-array :type int32 :length 32 - 0 1 4 5 16 17 20 21 2 3 6 7 18 19 22 23 8 9 12 13 24 25 28 29 10 11 14 15 26 27 30 31)) + (new 'static + 'boxed-array + :type + int32 + :length 32 + 0 + 1 + 4 + 5 + 16 + 17 + 20 + 21 + 2 + 3 + 6 + 7 + 18 + 19 + 22 + 23 + 8 + 9 + 12 + 13 + 24 + 25 + 28 + 29 + 10 + 11 + 14 + 15 + 26 + 27 + 30 + 31)) (define mt4-block-table - (new 'static 'boxed-array :type int32 :length 32 - 0 2 8 10 1 3 9 11 4 6 12 14 5 7 13 15 16 18 24 26 17 19 25 27 20 22 28 30 21 23 29 31)) + (new 'static + 'boxed-array + :type + int32 + :length 32 + 0 + 2 + 8 + 10 + 1 + 3 + 9 + 11 + 4 + 6 + 12 + 14 + 5 + 7 + 13 + 15 + 16 + 18 + 24 + 26 + 17 + 19 + 25 + 27 + 20 + 22 + 28 + 30 + 21 + 23 + 29 + 31)) (defun gs-find-block ((bx int) (by int) (tex-format gs-psm)) "Block index lookup." (cond - ((zero? tex-format) - (-> ct32-24-block-table (+ bx (shl by 3))) - ) - ((= tex-format (gs-psm ct24)) - (-> ct32-24-block-table (+ bx (shl by 3))) - ) - ((= tex-format (gs-psm ct16)) - (-> ct16-block-table (+ bx (shl by 2))) - ) - ((= tex-format (gs-psm ct16s)) - (-> ct16s-block-table (+ bx (shl by 2))) - ) - ((= tex-format (gs-psm mz32)) - (-> mz32-24-block-table (+ bx (shl by 3))) - ) - ((= tex-format (gs-psm mz24)) - (-> mz32-24-block-table (+ bx (shl by 3))) - ) - ((= tex-format (gs-psm mz16)) - (-> mz16-block-table (+ bx (shl by 2))) - ) - ((= tex-format (gs-psm mz16s)) - (-> mz16s-block-table (+ bx (shl by 2))) - ) - ((= tex-format (gs-psm mt8)) - (-> mt8-block-table (+ bx (shl by 3))) - ) - ((= tex-format (gs-psm mt4)) - (-> mt4-block-table (+ bx (shl by 2))) - ) - (else - 0 - ) - ) - ) + ((zero? tex-format) (-> ct32-24-block-table (+ bx (shl by 3)))) + ((= tex-format (gs-psm ct24)) (-> ct32-24-block-table (+ bx (shl by 3)))) + ((= tex-format (gs-psm ct16)) (-> ct16-block-table (+ bx (shl by 2)))) + ((= tex-format (gs-psm ct16s)) (-> ct16s-block-table (+ bx (shl by 2)))) + ((= tex-format (gs-psm mz32)) (-> mz32-24-block-table (+ bx (shl by 3)))) + ((= tex-format (gs-psm mz24)) (-> mz32-24-block-table (+ bx (shl by 3)))) + ((= tex-format (gs-psm mz16)) (-> mz16-block-table (+ bx (shl by 2)))) + ((= tex-format (gs-psm mz16s)) (-> mz16s-block-table (+ bx (shl by 2)))) + ((= tex-format (gs-psm mt8)) (-> mt8-block-table (+ bx (shl by 3)))) + ((= tex-format (gs-psm mt4)) (-> mt4-block-table (+ bx (shl by 2)))) + (else 0))) (defun gs-page-width ((arg0 gs-psm)) (case arg0 - (((gs-psm ct32) (gs-psm ct24) (gs-psm ct16) (gs-psm ct16s)) - 64 - ) - (((gs-psm mt8) (gs-psm mt4)) - 128 - ) - (else - (format #t "Warning: Unknown block width for psm ~D~%" arg0) - 1 - ) - ) - ) + (((gs-psm ct32) (gs-psm ct24) (gs-psm ct16) (gs-psm ct16s)) 64) + (((gs-psm mt8) (gs-psm mt4)) 128) + (else (format #t "Warning: Unknown block width for psm ~D~%" arg0) 1))) (defun gs-page-height ((arg0 gs-psm)) (case arg0 - (((gs-psm ct32) (gs-psm ct24)) - 32 - ) - (((gs-psm ct16) (gs-psm ct16s)) - 64 - ) - (((gs-psm mt8)) - 64 - ) - (((gs-psm mt4)) - 128 - ) - (else - (format #t "Warning: Unknown block width for psm ~D~%" arg0) - 1 - ) - ) - ) + (((gs-psm ct32) (gs-psm ct24)) 32) + (((gs-psm ct16) (gs-psm ct16s)) 64) + (((gs-psm mt8)) 64) + (((gs-psm mt4)) 128) + (else (format #t "Warning: Unknown block width for psm ~D~%" arg0) 1))) (defun gs-block-width ((arg0 gs-psm)) (case arg0 - (((gs-psm ct32) (gs-psm ct24)) - 8 - ) - (((gs-psm ct16) (gs-psm ct16s) (gs-psm mt8)) - 16 - ) - (((gs-psm mt4)) - 32 - ) - (else - (format #t "Warning: Unknown block width for psm ~D~%" arg0) - 1 - ) - ) - ) + (((gs-psm ct32) (gs-psm ct24)) 8) + (((gs-psm ct16) (gs-psm ct16s) (gs-psm mt8)) 16) + (((gs-psm mt4)) 32) + (else (format #t "Warning: Unknown block width for psm ~D~%" arg0) 1))) (defun gs-block-height ((arg0 gs-psm)) (case arg0 - (((gs-psm ct32) (gs-psm ct24) (gs-psm ct16) (gs-psm ct16s)) - 8 - ) - (((gs-psm mt8) (gs-psm mt4)) - 16 - ) - (else - (format #t "Warning: Unknown block width for psm ~D~%" arg0) - 1 - ) - ) - ) + (((gs-psm ct32) (gs-psm ct24) (gs-psm ct16) (gs-psm ct16s)) 8) + (((gs-psm mt8) (gs-psm mt4)) 16) + (else (format #t "Warning: Unknown block width for psm ~D~%" arg0) 1))) (defun gs-largest-block ((tex-width int) (tex-height int) (tex-format gs-psm)) "Determine the largest block occupied by the given texture" @@ -421,18 +586,13 @@ ;; and now convert to actual blocks (width-blocks (/ real-width block-width)) (height-blocks (/ real-height block-height)) - (max-block 0) - ) + (max-block 0)) ;; loop over each block... (dotimes (x width-blocks) (dotimes (y height-blocks) ;; and see where it is. - (set! max-block (max max-block (gs-find-block x y tex-format))) - ) - ) - max-block - ) - ) + (set! max-block (max max-block (gs-find-block x y tex-format))))) + max-block)) (defun gs-blocks-used ((tex-width int) (tex-height int) (tex-format gs-psm)) "This function doesn't make much sense... It's unused so maybe it's just wrong?" @@ -444,19 +604,12 @@ (height-blocks (/ real-height page-height)) ;; past here, it doesn't make much sense to me. (a0-9 (- tex-width (* (+ width-blocks -1) page-width))) - (a1-7 (- tex-height (* (+ height-blocks -1) page-height))) - ) + (a1-7 (- tex-height (* (+ height-blocks -1) page-height)))) (if (or (< a0-9 page-width) (< a1-7 page-height)) - (+ - (+ (gs-largest-block a0-9 a1-7 tex-format) 1) - (shl (+ (* width-blocks height-blocks) -1) 5) - ) - (shl (* height-blocks width-blocks) 5) - ) - ) - ) -;;;;;;;;;;;;;; end of weird gs functions that are unused. + (+ (+ (gs-largest-block a0-9 a1-7 tex-format) 1) (shl (+ (* width-blocks height-blocks) -1) 5)) + (shl (* height-blocks width-blocks) 5)))) +;;;;;;;;;;;;;; end of weird gs functions that are unused. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Texture Pool @@ -469,18 +622,11 @@ (defmethod new texture-pool ((allocation symbol) (type-to-make type)) "Allocate and initialize a texture-pool" - (initialize! - (object-new allocation type-to-make (the-as int (-> type-to-make size))) - ) - ) + (initialize! (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (defmethod allocate-vram-words! ((this texture-pool) (word-count int)) "Allocate words in vram. Returns the index of the first word." - (let ((v0-0 (-> this cur))) - (set! (-> this cur) (+ (-> this cur) word-count)) - v0-0 - ) - ) + (let ((v0-0 (-> this cur))) (set! (-> this cur) (+ (-> this cur) word-count)) v0-0)) ;; boot common textures are "common" textures that are loaded at boot, but will live in RAM ;; and be uploaded to VRAM as needed. @@ -489,71 +635,47 @@ "Map these special textures to a number betwen 0 and 19. For other textures, return -1. NOTE: hud means start menu + zoomer, not the usual health HUD." (case arg0 - ((1032) ;; hud (seg0 only) - 0 - ) - ((1119) ;; zoomer-hud (not actually loaded at boot) - 1 - ) - ((1478) ;; doesn't exist? (likely demo1) - 2 - ) - ((1485) ;; demo2 (seg0 only) - 3 - ) - ((1486) ;; demo3 (seg0 only) - 4 - ) - ((1487) ;; demo4 (seg0 only) - 5 - ) - ((635 1609) ;; X or demo5j (seg0 only) - 6 - ) - ((636) ;; nope - 7 - ) - ((637) ;; nope - 8 - ) - ((752) ;; nope - 9 - ) - ((1598) ;; nope - 10 - ) - ((1599) ;; demo2f - 11 - ) - ((1600) ;; demo2g - 12 - ) - ((1601) ;; demo2i - 13 - ) - ((1602) ;; demo2s - 14 - ) - ((1603) ;; demo4e - 15 - ) - ((1604) ;; demo4f - 16 - ) - ((1605) ;; demo4g - 17 - ) - ((1606) ;; demo4i - 18 - ) - ((1607) ;; demo4s - 19 - ) - (else - -1 - ) - ) - ) + ((1032) ;; hud (seg0 only) + 0) + ((1119) ;; zoomer-hud (not actually loaded at boot) + 1) + ((1478) ;; doesn't exist? (likely demo1) + 2) + ((1485) ;; demo2 (seg0 only) + 3) + ((1486) ;; demo3 (seg0 only) + 4) + ((1487) ;; demo4 (seg0 only) + 5) + ((635 1609) ;; X or demo5j (seg0 only) + 6) + ((636) ;; nope + 7) + ((637) ;; nope + 8) + ((752) ;; nope + 9) + ((1598) ;; nope + 10) + ((1599) ;; demo2f + 11) + ((1600) ;; demo2g + 12) + ((1601) ;; demo2i + 13) + ((1602) ;; demo2s + 14) + ((1603) ;; demo4e + 15) + ((1604) ;; demo4f + 16) + ((1605) ;; demo4g + 17) + ((1606) ;; demo4i + 18) + ((1607) ;; demo4s + 19) + (else -1))) (defmethod initialize! ((this texture-pool)) "Initialize (or maybe reinitialize) a texture pool." @@ -567,54 +689,47 @@ ;; allocate the weird stuff we always want (font, sky, etc) (allocate-defaults! this) (set! (-> this font-palette) (allocate-vram-words! this 64)) - ;; mark the common page area as not-uploaded. (dotimes (v1-6 32) - (set! (-> this common-page v1-6) (the-as texture-page 0)) - ) + (set! (-> this common-page v1-6) (the-as texture-page 0))) (set! (-> this common-page-mask) 0) - ;; clear ids. This stores the texture ids that are stored at each "pool page", or 0 if there is junk. ;; it is used for the lazy loading system to see if the data is already there. (dotimes (v1-9 160) - (set! (-> this ids v1-9) (the-as uint 0)) - ) - this - ) + (set! (-> this ids v1-9) (the-as uint 0))) + this) (defmethod get-leftover-block-count ((this texture-page) (segment-count int) (additional-size int)) "This returns how many blocks are used in the last pool page. It uses pool-pages, which are 64 blocks or 16 kB." (let ((v1-0 additional-size)) - (dotimes (a2-1 segment-count) - (+! v1-0 (the-as int (-> this segment a2-1 size))) - ) - (logand (sar v1-0 6) 63) - ) - ) + (dotimes (a2-1 segment-count) + (+! v1-0 (the-as int (-> this segment a2-1 size)))) + (logand (sar v1-0 6) 63))) (defmethod print-usage ((this texture-pool)) "Print out VRAM usage." (format #t "--------------------~%") - (format #t "texture pool ~DK - ~DK (~DK used, ~DK free)~%" - (sar (-> this top) 8) ;; vram words to kb - (sar (-> this cur) 8) ;; vram words to kb - (sar (- (-> this cur) (-> this top)) 8) - (sar (- #xfa000 (-> this cur)) 8) ;; 4 MB, doesn't seem to account for framebuffers? - ) + (format #t + "texture pool ~DK - ~DK (~DK used, ~DK free)~%" + (sar (-> this top) 8) ;; vram words to kb + (sar (-> this cur) 8) ;; vram words to kb + (sar (- (-> this cur) (-> this top)) 8) + (sar (- #xfa000 (-> this cur)) 8) ;; 4 MB, doesn't seem to account for framebuffers? + ) (format #t "--------------------~%") - this - ) + this) (defmethod allocate-segment! ((this texture-pool) (segment texture-pool-segment) (size int)) "Allocate a segment of the given size. The segment is an output here, containing size/dest." (set! (-> segment size) (the-as uint size)) (set! (-> segment dest) (the-as uint (allocate-vram-words! this size))) - segment - ) + segment) (defconstant COMMON_SEGMENT_WORDS #x1c000) ;; ~0.5 MB, 28 pool pages + (defconstant NEAR_SEGMENT_WORDS #x62000) ;; ~1.6 MB, 98 pool pages + ;; total 126 pool pages, like the size of the IDs array ;; IDs 0-27 are common, 28-125 are near. @@ -625,7 +740,6 @@ ;; allocate the common and near segments (allocate-segment! this (-> this segment-common) COMMON_SEGMENT_WORDS) ;; ~0.5 MB (allocate-segment! this (-> this segment-near) NEAR_SEGMENT_WORDS) ;; ~1.6 MB. - ;; Allocate the random crap (set! *sky-base-vram-word* (allocate-vram-words! this SPECIAL_VRAM_WORDS)) (set! *sky-base-block* (sar *sky-base-vram-word* 6)) @@ -639,23 +753,18 @@ (set! *depth-cue-base-vram-word* (+ *sky-base-vram-word* 6144)) (set! *depth-cue-base-block* (sar *depth-cue-base-vram-word* 6)) (set! *depth-cue-base-page* (sar *depth-cue-base-vram-word* 11)) - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; texture-page management ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmethod remove-from-heap ((this texture-page) (seg kheap)) "Remove the texture data from the heap. This can only safely be called immediately after the texture-page is loaded. This is used for textures that always live in VRAM." - ;; this keeps around the texture objects themselves. (set! (-> seg current) (-> this segment 0 block-data)) - this - ) + this) (defun texture-page-default-allocate ((pool texture-pool) (page texture-page) (heap kheap) (tpage-id int)) "Default allocator for textures. This _permanently_ uploads the texture to VRAM and uses up VRAM that @@ -663,50 +772,37 @@ It modifies the texture to point to the allocated VRAM. It also kicks out the texture data (and any data after it) from the heap. All three segments of the texture page will be together." - (tex-dbg "default allocate ~A~%" page) - ;; loop over the semgments in the texture page. (dotimes (seg-id 3) ;; get vram for the segment (let ((vram (allocate-vram-words! pool (the-as int (-> page segment seg-id size))))) ;; adjust the texture so it points to the vram address the allocator gave us. - (relocate-dests! page vram seg-id) - ) - ) + (relocate-dests! page vram seg-id))) ;; upload the texture page (all segments). This function will return after the upload has finished. (upload-now! page -1) ;; and kick the data out from the heap, now that it is permanently in vram. (remove-from-heap page heap) - page - ) - + page) (defun texture-page-common-allocate ((pool texture-pool) (page texture-page) (heap kheap) (tpage-id int)) "Set up an entire texture page for eventual upload to the common segment of the pool. The texture will remain in EE memory and will share its slot in VRAM with other textures. All three segments will be together." - (tex-dbg "common allocate ~A~%" page) - ;; bump allocator, starting at the beginning of the common segment. ;; the common segment is reused, so its fine that this overlaps with other textures using common. (let ((s5-0 (-> pool segment-common dest))) (dotimes (seg-id 3) ;; fixup texture data so it points to the right spot in the common segment. (relocate-dests! page (the-as int s5-0) seg-id) - (+! s5-0 (-> page segment seg-id size)) - ) - ) - page - ) + (+! s5-0 (-> page segment seg-id size)))) + page) (defun texture-page-common-boot-allocate ((pool texture-pool) (page texture-page) (heap kheap) (tpage-id int)) "Allocator for textures at boot time. It will put boot-common textures in common. Once it gets a non-common texture, it will change the allocator to default." - (tex-dbg "boot allocate ~A...~%" page) - ;; see if we got a common texture. This will need to be reuploaded every time it is used. (let ((tex-id (lookup-boot-common-id pool tpage-id))) (cond @@ -714,27 +810,20 @@ (tex-dbg " boot allocator got known common-page ~D~%" tex-id) ;; let the common allocator deal with it. (texture-page-common-allocate pool page heap tpage-id) - ;; textures that: ;; - are in the common page (uploaded before use, shared VRAM) ;; - are in common memory (not level-specific) ;; have a record in this common-page array. ;; this helps other code find the appropriate tpage to upload. ;; level-specific texture pages are stored in the level structure itself, but this doesn't apply here. - (set! (-> pool common-page tex-id) page) - ) + (set! (-> pool common-page tex-id) page)) (else (tex-dbg " boot allocator doesn't know this one, switching to default allocator~%") ;; textures that aren't on that special list are permanently allocated. ;; once we get one default, switch the allocator to default for the rest. (set! (-> *texture-pool* allocate-func) texture-page-default-allocate) - (texture-page-default-allocate pool page heap tpage-id) - ) - ) - ) - page - ) - + (texture-page-default-allocate pool page heap tpage-id)))) + page) ;;;;;;;;;;;;;;;;;; ;; texture upload @@ -750,36 +839,32 @@ ;; only 2048 height/transfer. (let ((height-this-time (min 2048 tex-h))) ;; add dma/vif tag. - (dma-buffer-add-cnt-vif2 buf 5 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd direct) :imm 5) - ) - + (dma-buffer-add-cnt-vif2 buf + 5 + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm 5)) ;; add gif (a+d) - (dma-buffer-add-gif-tag buf (new 'static 'gif-tag64 :nloop 4 :nreg 1 :flg (gif-flag packed)) - (gs-reg-list a+d) - ) - + (dma-buffer-add-gif-tag buf (new 'static 'gif-tag64 :nloop 4 :nreg 1 :flg (gif-flag packed)) (gs-reg-list a+d)) ;; add transfer setting registers (dma-buffer-add-uint64 buf - (new 'static 'gs-bitbltbuf :dbw 2 :dbp dest) (gs-reg64 bitbltbuf) - (new 'static 'gs-trxpos) (gs-reg64 trxpos) - (new 'static 'gs-trxreg :rrw 128 :rrh height-this-time) (gs-reg64 trxreg) - (new 'static 'gs-trxdir :xdir 0) (gs-reg64 trxdir) - ) - (dma-buffer-add-ref-texture - buf - tex-data - 128 - height-this-time - (gs-psm ct32) ;; all uploads are ct32. - ) - ) + (new 'static 'gs-bitbltbuf :dbw 2 :dbp dest) + (gs-reg64 bitbltbuf) + (new 'static 'gs-trxpos) + (gs-reg64 trxpos) + (new 'static 'gs-trxreg :rrw 128 :rrh height-this-time) + (gs-reg64 trxreg) + (new 'static 'gs-trxdir :xdir 0) + (gs-reg64 trxdir)) + (dma-buffer-add-ref-texture buf + tex-data + 128 + height-this-time + (gs-psm ct32) ;; all uploads are ct32. + )) (+! dest 4096) (&+! tex-data #x100000) - (+! tex-h -2048) - ) - (none) - ) + (+! tex-h -2048)) + (none)) (defun upload-vram-pages ((pool texture-pool) (segment texture-pool-segment) (page texture-page) (mode int) (bucket-idx bucket-id)) "Add a dma chain to upload textures to the bucket. This will only upload chunks that aren't already there. @@ -790,26 +875,22 @@ -1 = the whole page. 2 = just segment 2 of the page." (local-vars - (tex-data pointer) - (tex-dest-base-chunk uint) - (chunk-count uint) - (chunks-to-upload-count int) - (first-chunk-idx-to-upload int) - (tex-id uint) - ) - - + (tex-data pointer) + (tex-dest-base-chunk uint) + (chunk-count uint) + (chunks-to-upload-count int) + (first-chunk-idx-to-upload int) + (tex-id uint)) (let ((total-upload-size 0)) (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) ;; the global DMA buffer bucket-idx) - ;; default to segment 0 only (mode 0) (set! tex-data (-> page segment 0 block-data)) ;; data to send, in EE memory (set! tex-dest-base-chunk (shr (-> page segment 0 dest) 12)) ;; destination chunk idx. (set! chunk-count (-> page segment 0 size)) ;; number of chunks in segment (set! chunks-to-upload-count 0) ;; number of chunks to actually upload (set! first-chunk-idx-to-upload 0) ;; index in data of first chunk to send - (set! tex-id (-> page id)) ;; the id of the texture. + (set! tex-id (-> page id)) ;; the id of the texture. (let ((v1-8 mode)) (cond ((= v1-8 -3) @@ -818,119 +899,78 @@ ((zero? v1-8) ;; mode 0, default is okay ) ((= v1-8 -2) ;; mode -2, add on segment 1 - (set! chunk-count (+ chunk-count (-> page segment 1 size))) - ) + (set! chunk-count (+ chunk-count (-> page segment 1 size)))) ((= v1-8 -1) ;; mode -1, do the whole thing. - (set! chunk-count (-> page size)) - ) + (set! chunk-count (-> page size))) ((= v1-8 2) ;; mode 2, overwrite and do segment 2 only. (set! tex-data (-> page segment 2 block-data)) (set! tex-dest-base-chunk (shr (-> page segment 2 dest) 12)) - (set! chunk-count (-> page segment 2 size)) - ) - ) - ) - + (set! chunk-count (-> page segment 2 size))))) ;; make sure we don't overflow the segment we're loading to. - (set! chunk-count - (the uint (shr (min (the-as int (-> segment size)) (the-as int (+ chunk-count 4095))) 12)) - ) - + (set! chunk-count (the uint (shr (min (the-as int (-> segment size)) (the-as int (+ chunk-count 4095))) 12))) ;; next, loop over each chunk to upload. ;; we want to: ;; - skip uploading chunks we already uploaded ;; - group together consecutive chunks we need to upload. (dotimes (upload-chunk-idx (the-as int chunk-count)) ;; the destination of the chunk. - (let ((current-dest-chunk - (+ tex-dest-base-chunk (the-as uint upload-chunk-idx)) - ) - ) + (let ((current-dest-chunk (+ tex-dest-base-chunk (the-as uint upload-chunk-idx)))) ;; now we see if we can get away with not uploading the chunk. (if (zero? chunks-to-upload-count) - (when (!= (-> pool ids current-dest-chunk) tex-id) - ;; we hit the beginning of a run of chunks that need uploading - (set! first-chunk-idx-to-upload upload-chunk-idx) - ;; remember that we will upload this. - (set! (-> pool ids current-dest-chunk) tex-id) - (set! chunks-to-upload-count (+ chunks-to-upload-count 1)) - ) - (cond - ;; in here, we are in the middle of a run of "needs uploading" chunks - ((= (-> pool ids current-dest-chunk) tex-id) - ;; and the run ends, we found a chunk that's already loaded. - ;; so we upload the run: - (#when (not PC_PORT) - (upload-vram-data dma-buf - (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) - (&+ tex-data (shl first-chunk-idx-to-upload 14)) - (shl chunks-to-upload-count 5) - ) - ) - - (+! total-upload-size chunks-to-upload-count) - ;; reset - (set! chunks-to-upload-count 0) - ) - (else - ;; the run continues! - (set! (-> pool ids current-dest-chunk) tex-id) - (set! chunks-to-upload-count (+ chunks-to-upload-count 1)) - ) - ) - ) - ) - ) - + (when (!= (-> pool ids current-dest-chunk) tex-id) + ;; we hit the beginning of a run of chunks that need uploading + (set! first-chunk-idx-to-upload upload-chunk-idx) + ;; remember that we will upload this. + (set! (-> pool ids current-dest-chunk) tex-id) + (set! chunks-to-upload-count (+ chunks-to-upload-count 1))) + (cond + ;; in here, we are in the middle of a run of "needs uploading" chunks + ((= (-> pool ids current-dest-chunk) tex-id) + ;; and the run ends, we found a chunk that's already loaded. + ;; so we upload the run: + (#when (not PC_PORT) + (upload-vram-data dma-buf + (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) + (&+ tex-data (shl first-chunk-idx-to-upload 14)) + (shl chunks-to-upload-count 5))) + (+! total-upload-size chunks-to-upload-count) + ;; reset + (set! chunks-to-upload-count 0)) + (else + ;; the run continues! + (set! (-> pool ids current-dest-chunk) tex-id) + (set! chunks-to-upload-count (+ chunks-to-upload-count 1))))))) ;; if we finished with a run of "needs upload", set up the upload. (when (nonzero? chunks-to-upload-count) (#when (not PC_PORT) - (upload-vram-data - dma-buf - (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) - (&+ tex-data (shl first-chunk-idx-to-upload 14)) - (shl chunks-to-upload-count 5) - ) - ) - (+! total-upload-size chunks-to-upload-count) - ) - + (upload-vram-data dma-buf + (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) + (&+ tex-data (shl first-chunk-idx-to-upload 14)) + (shl chunks-to-upload-count 5))) + (+! total-upload-size chunks-to-upload-count)) ;; do a texflush - ;; send gif (a+d) (#when (not PC_PORT) - (dma-buffer-add-gs-set dma-buf - (texflush 1) ;; texflush - ) - ) - + (dma-buffer-add-gs-set dma-buf + (texflush 1) ;; texflush + )) ;; in PC PORT we just skip all that stuff and just send a pointer to the texture page and the mode. (#when PC_PORT - (dma-buffer-add-cnt-vif2 dma-buf 1 (new 'static 'vif-tag :cmd (vif-cmd pc-port)) (the-as vif-tag 3)) - (dma-buffer-add-uint64 dma-buf page) - (dma-buffer-add-uint64 dma-buf mode) - ) - - ) - (shl total-upload-size 14) - ) - ) + (dma-buffer-add-cnt-vif2 dma-buf 1 (new 'static 'vif-tag :cmd (vif-cmd pc-port)) (the-as vif-tag 3)) + (dma-buffer-add-uint64 dma-buf page) + (dma-buffer-add-uint64 dma-buf mode))) + (shl total-upload-size 14))) (defun update-vram-pages ((pool texture-pool) (pool-segment texture-pool-segment) (page texture-page) (mode int)) "Update texture pool info if given texture page was uploaded in the given mode, but not using upload-vram-pages or upload-vram-pages-pris You should call this after doing an upload-now!, for example" - ;; this is clearly copy-pasta from upload-vram-pages, and there are some weird leftovers. - (let ((v1-0 (-> page segment 0 block-data))) - ) - + (let ((v1-0 (-> page segment 0 block-data)))) (let ((dest-block (shr (-> page segment 0 dest) 12)) ;; where we're loading to (sz (-> page segment 0 size)) - (modified-chunk-count 0) - ) - (let ((t0-0 0)) - ) + (modified-chunk-count 0)) + (let ((t0-0 0))) (let ((page-id (-> page id))) (cond ((= mode -3) @@ -945,43 +985,24 @@ (set! sz (-> page size)) ;; the whole page ) ((= mode 2) ;; segment 2 only - (let ((a3-5 (-> page segment 2 block-data))) - ) + (let ((a3-5 (-> page segment 2 block-data)))) (set! dest-block (shr (-> page segment 2 dest) 12)) - (set! sz (-> page segment 2 size)) - ) - ) - + (set! sz (-> page segment 2 size)))) ;; don't overflow. (let ((upload-chunks (shr (min (the-as int (-> pool-segment size)) (the-as int (+ sz 4095))) 12))) - ;; for each chunk we might want to upload... (dotimes (chunk-idx (the-as int upload-chunks)) ;; this has the weird run logic, but it isn't really used. ;; no matter what (-> pool ids vram-chunk) will be set to page-id. (let ((vram-chunk (+ dest-block (the-as uint chunk-idx)))) (if (zero? modified-chunk-count) - (when (!= (-> pool ids vram-chunk) page-id) - (set! (-> pool ids vram-chunk) page-id) - (+! modified-chunk-count 1) - ) - (cond - ((= (-> pool ids vram-chunk) page-id) - (set! modified-chunk-count 0) - ) - (else - (set! (-> pool ids vram-chunk) page-id) - (+! modified-chunk-count 1) - ) - ) - ) - ) - ) - ) - ) - ) - 0 - ) + (when (!= (-> pool ids vram-chunk) page-id) + (set! (-> pool ids vram-chunk) page-id) + (+! modified-chunk-count 1)) + (cond + ((= (-> pool ids vram-chunk) page-id) (set! modified-chunk-count 0)) + (else (set! (-> pool ids vram-chunk) page-id) (+! modified-chunk-count 1))))))))) + 0) (defun upload-vram-pages-pris ((pool texture-pool) (segment texture-pool-segment) (page texture-page) (bucket-idx bucket-id) (needed-mask int)) "Upload the entire texture page. If the needed-mask is not set, it will not upload those chunks. @@ -991,92 +1012,64 @@ The nth bit of the mask determines if the nth 16-kB chunk is needed in this upload. A 64-bit mask is enough to address the entire common segment, which is the only destination for PRIS textures." (local-vars - (tex-data pointer) - (tex-dest-base-chunk uint) - (chunk-count uint) - (chunks-to-upload-count int) - (first-chunk-idx-to-upload int) - (page-id uint) - (current-dest-chunk uint) - (need-tex symbol) - ) + (tex-data pointer) + (tex-dest-base-chunk uint) + (chunk-count uint) + (chunks-to-upload-count int) + (first-chunk-idx-to-upload int) + (page-id uint) + (current-dest-chunk uint) + (need-tex symbol)) (let ((total-upload-size 0)) - (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) - bucket-idx) - - (set! tex-data (-> page segment 0 block-data)) ;; data in RAM - (set! tex-dest-base-chunk (shr (-> page segment 0 dest) 12)) ;; where to load - (set! chunk-count (-> page size)) ;; how much to load - (set! chunks-to-upload-count 0) ;; for runs of uploads - (set! first-chunk-idx-to-upload 0) ;; for runs of uploads - (set! page-id (-> page id)) - - ;; don't overflow. - (set! chunk-count (the uint (shr (min (the-as int (-> segment size)) (the-as int (+ chunk-count 4095))) 12))) - - ;; iterate through chunks to possibly upload - (dotimes (upload-chunk-idx (the-as int chunk-count)) - ;; where to load to - (set! current-dest-chunk - (+ tex-dest-base-chunk (the-as uint upload-chunk-idx)) - ) - ;; can we possibly use existing data in VRAM? - (set! need-tex (logtest? needed-mask (ash 1 upload-chunk-idx))) - ;; look for the start of a run of uploads. - (if (zero? chunks-to-upload-count) - (when (and (!= (-> pool ids current-dest-chunk) page-id) need-tex) - ;; start of run! - (set! first-chunk-idx-to-upload upload-chunk-idx) + (with-dma-buffer-add-bucket ((dma-buf (-> (current-frame) global-buf)) bucket-idx) + (set! tex-data (-> page segment 0 block-data)) ;; data in RAM + (set! tex-dest-base-chunk (shr (-> page segment 0 dest) 12)) ;; where to load + (set! chunk-count (-> page size)) ;; how much to load + (set! chunks-to-upload-count 0) ;; for runs of uploads + (set! first-chunk-idx-to-upload 0) ;; for runs of uploads + (set! page-id (-> page id)) + ;; don't overflow. + (set! chunk-count (the uint (shr (min (the-as int (-> segment size)) (the-as int (+ chunk-count 4095))) 12))) + ;; iterate through chunks to possibly upload + (dotimes (upload-chunk-idx (the-as int chunk-count)) + ;; where to load to + (set! current-dest-chunk (+ tex-dest-base-chunk (the-as uint upload-chunk-idx))) + ;; can we possibly use existing data in VRAM? + (set! need-tex (logtest? needed-mask (ash 1 upload-chunk-idx))) + ;; look for the start of a run of uploads. + (if (zero? chunks-to-upload-count) + (when (and (!= (-> pool ids current-dest-chunk) page-id) need-tex) + ;; start of run! + (set! first-chunk-idx-to-upload upload-chunk-idx) + (set! (-> pool ids current-dest-chunk) page-id) + (set! chunks-to-upload-count (+ chunks-to-upload-count 1))) + (cond + ((or (= (-> pool ids current-dest-chunk) page-id) (not need-tex)) + ;; end of run. upload the run. + (upload-vram-data dma-buf + (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) + (&+ tex-data (shl first-chunk-idx-to-upload 14)) + (shl chunks-to-upload-count 5)) + (+! total-upload-size chunks-to-upload-count) + (set! chunks-to-upload-count 0)) + (else + ;; run continuing. (set! (-> pool ids current-dest-chunk) page-id) - (set! chunks-to-upload-count (+ chunks-to-upload-count 1)) - ) - (cond - ((or (= (-> pool ids current-dest-chunk) page-id) (not need-tex)) - ;; end of run. upload the run. - (upload-vram-data dma-buf - (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) - (&+ tex-data (shl first-chunk-idx-to-upload 14)) - (shl chunks-to-upload-count 5) - ) - (+! total-upload-size chunks-to-upload-count) - (set! chunks-to-upload-count 0) - ) - (else - ;; run continuing. - (set! (-> pool ids current-dest-chunk) page-id) - (set! chunks-to-upload-count (+ chunks-to-upload-count 1)) - ) - ) - ) - ) - - ;; if we ended in a run, upload it. - (when (nonzero? chunks-to-upload-count) - (upload-vram-data - dma-buf - (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) - (&+ tex-data (shl first-chunk-idx-to-upload 14)) - (shl chunks-to-upload-count 5) - ) - (+! total-upload-size chunks-to-upload-count) - ) - - ;; do a texflush. - (dma-buffer-add-gs-set dma-buf - (texflush 1) - ) - - (#when PC_PORT - (dma-buffer-add-cnt-vif2 dma-buf 1 (new 'static 'vif-tag :cmd (vif-cmd pc-port)) (the-as vif-tag 3)) - (dma-buffer-add-uint64 dma-buf page) - (dma-buffer-add-uint64 dma-buf -1) - ) - - ) - (shl total-upload-size 14) - ) - ) - + (set! chunks-to-upload-count (+ chunks-to-upload-count 1)))))) + ;; if we ended in a run, upload it. + (when (nonzero? chunks-to-upload-count) + (upload-vram-data dma-buf + (the int (shl (+ tex-dest-base-chunk (the-as uint first-chunk-idx-to-upload)) 6)) + (&+ tex-data (shl first-chunk-idx-to-upload 14)) + (shl chunks-to-upload-count 5)) + (+! total-upload-size chunks-to-upload-count)) + ;; do a texflush. + (dma-buffer-add-gs-set dma-buf (texflush 1)) + (#when PC_PORT + (dma-buffer-add-cnt-vif2 dma-buf 1 (new 'static 'vif-tag :cmd (vif-cmd pc-port)) (the-as vif-tag 3)) + (dma-buffer-add-uint64 dma-buf page) + (dma-buffer-add-uint64 dma-buf -1))) + (shl total-upload-size 14))) ;; NEAR segment layout: @@ -1085,9 +1078,10 @@ ;; ---------------------------------------------- (defconstant NEAR_PRIVATE_WORDS #x24000) -(defconstant NEAR_SHARED_WORDS #x1a000) -(defconstant NEAR_PER_LEV_WORDS #x3e000) +(defconstant NEAR_SHARED_WORDS #x1a000) + +(defconstant NEAR_PER_LEV_WORDS #x3e000) ;; the textures for level 0 and level 1 may each be as large as (sizeof private) + (sizeof shared). ;; the private sections remain in VRAM while the level is loaded, but the shared part is @@ -1102,25 +1096,18 @@ Note: the zoomerhud texture may occur before this, but it's strange. This is used for level 0, which gets the first part of the NEAR segment as private texture memory." - (tex-dbg "near allocate 0 ~A~%" page) - ;; set up segment 2 to be in the near segment (relocate-dests! page (the-as int (-> pool segment-near dest)) 2) - ;; segment 0, 1 go in common. (let ((common-dest (-> pool segment-common dest))) (dotimes (page-seg-idx 2) (relocate-dests! page (the-as int common-dest) page-seg-idx) - (+! common-dest (-> page segment page-seg-idx size)) - ) - ) - + (+! common-dest (-> page segment page-seg-idx size)))) ;; upload near data, and update the upload cache stuff. ;; I think this relies on "mode 2" uploads only being in the private area. (upload-now! page 2) (update-vram-pages pool (-> pool segment-near) page 2) - ;; our strategy is to remove the private memory from RAM to save memory, now that it's in VRAM. ;; to avoid leaving an unused hole, we copy the shared data backward. ;; unfortunately, it would be too slow to do it now. @@ -1130,52 +1117,39 @@ ;; and we've already used some time in the upload-now!, so we will delay the actual ;; copy until the next frame. ;; The level loader know about this, and all we have to do is set up *texture-reloate-later* - (let ((page-seg-2-size (logand -4096 (the-as int (+ (-> page segment 2 size) 4095))))) (cond ((< (the-as uint NEAR_PRIVATE_WORDS) page-seg-2-size) ;; we use the shared memory of near. - ;; this data should be kept in the heap ;; 0x90000 = NEAR_PRIVATE * 4 (to convert to bytes) (let ((after-seg-2-data (+ #x90000 (the-as int (-> page segment 2 block-data))))) (let ((seg-2-data (-> page segment 2 block-data))) - ;; reduce size for the stuff that's in VRAM. (set! (-> page segment 2 size) (+ -147456 (the-as int page-seg-2-size))) - ;; adjust dest to upload past the "private" part, at the start of shared. (set! (-> page segment 2 dest) (+ NEAR_PRIVATE_WORDS (the-as int (-> pool segment-near dest)))) - ;; set the size of the heap as needed to hold only the shared texture data. ;; this is kinda dangerous. - (set! (-> heap current) - (&+ (-> page segment 2 block-data) (shl (-> page segment 2 size) 2)) - ) - - (tex-dbg " TEXTURE RELOCATE LATER dest #x~X src #x~X size #x~X bytes~%" seg-2-data after-seg-2-data + (set! (-> heap current) (&+ (-> page segment 2 block-data) (shl (-> page segment 2 size) 2))) + (tex-dbg " TEXTURE RELOCATE LATER dest #x~X src #x~X size #x~X bytes~%" + seg-2-data + after-seg-2-data (shl (-> page segment 2 size) 2)) ;; inform the level loader it should do this on the next frame. (set! (-> *texture-relocate-later* memcpy) #t) ;; copy to the start of our data - (set! (-> *texture-relocate-later* dest) (the-as uint seg-2-data)) - ) + (set! (-> *texture-relocate-later* dest) (the-as uint seg-2-data))) ;; from the start of the unlocked data. - (set! (-> *texture-relocate-later* source) (the-as uint after-seg-2-data)) - ) + (set! (-> *texture-relocate-later* source) (the-as uint after-seg-2-data))) ;; the number of bytes to copy. - (set! (-> *texture-relocate-later* move) (shl (-> page segment 2 size) 2)) - ) + (set! (-> *texture-relocate-later* move) (shl (-> page segment 2 size) 2))) (else (tex-dbg " TEXTURE no relocate later~%") ;; the whole thing fit in the locked near segment! ;; so we can just kick out segment 2 entirely and skip the memcpy stuff. (set! (-> page segment 2 size) (the-as uint 0)) - (set! (-> heap current) (-> page segment 2 block-data)) - ) - ) - ) - + (set! (-> heap current) (-> page segment 2 block-data))))) ;; set the allocator to the common allocator for all other textures. ;; only TFRAG, the first page, uses near. (set! (-> *texture-pool* allocate-func) texture-page-common-allocate) @@ -1183,55 +1157,38 @@ ;; so mark the code memory end as the start of this page. ;; (note: this may be wrong on levels with the zoomer hud texture) (set! (-> *level* loading-level code-memory-end) (the pointer page)) - page - ) - + page) (defun texture-page-near-allocate-1 ((pool texture-pool) (page texture-page) (heap kheap) (mode int)) "Allocate for level 1's near textures" - ;; effective size of segment 2, will go in near. (let ((seg2-size (logand -4096 (the-as int (+ (-> page segment 2 size) 4095))))) ;; where to start our near data (somewhere in shared or level 1 private) (let ((seg2-dest (+ (- NEAR_SEGMENT_WORDS (the-as int seg2-size)) (-> pool segment-near dest)))) ;; relocate to point to this point. - (relocate-dests! page (the-as int seg2-dest) 2) - ) - + (relocate-dests! page (the-as int seg2-dest) 2)) ;; set up other segments for the common segment. (let ((common-dest (-> pool segment-common dest))) (dotimes (page-seg-idx 2) (relocate-dests! page (the-as int common-dest) page-seg-idx) - (+! common-dest (-> page segment page-seg-idx size)) - ) - ) - + (+! common-dest (-> page segment page-seg-idx size)))) ;; upload the near data now. (upload-now! page 2) ;; and remember it in the cache. (update-vram-pages pool (-> pool segment-near) page 2) - (cond ((< (the-as uint NEAR_PRIVATE_WORDS) seg2-size) ;; we use the shared part. Kick out only the non-shared texture. ;; it's on the end this time, so no mempcy like in near-allocate-0 (set! (-> page segment 2 size) (+ -147456 (the-as int seg2-size))) - (set! (-> heap current) - (&+ (-> page segment 2 block-data) (shl (-> page segment 2 size) 2)) - ) - ) + (set! (-> heap current) (&+ (-> page segment 2 block-data) (shl (-> page segment 2 size) 2)))) (else ;; we fit entirely in private. Kick out the whole thing! (set! (-> page segment 2 size) (the-as uint 0)) - (set! (-> heap current) (-> page segment 2 block-data)) - ) - ) - ) + (set! (-> heap current) (-> page segment 2 block-data))))) (set! (-> *texture-pool* allocate-func) texture-page-common-allocate) (set! (-> *level* loading-level code-memory-end) (the pointer page)) - page - ) - + page) (defun texture-page-level-allocate ((pool texture-pool) (page texture-page) (heap kheap) (mode int)) "Allocator for level textures, will pick the appropriate allocator (usually near0/near1)." @@ -1240,127 +1197,85 @@ ((>= common-id 0) ;; this will handle the zoomer HUD, which comes in before TFRAG. (texture-page-common-allocate pool page heap mode) - (set! (-> pool common-page common-id) page) - ) + (set! (-> pool common-page common-id) page)) (else (let ((level-idx (-> *level* loading-level index))) ;; these will handle TFRAG. These allocators will then switch the allocator ;; to common for everything else. (cond - ((zero? level-idx) - (texture-page-near-allocate-0 pool page heap mode) - ) - ((= level-idx 1) - (texture-page-near-allocate-1 pool page heap mode) - ) - ) - ) - ) - ) - ) - page - ) - + ((zero? level-idx) (texture-page-near-allocate-0 pool page heap mode)) + ((= level-idx 1) (texture-page-near-allocate-1 pool page heap mode))))))) + page) (defun texture-page-size-check ((pool texture-pool) (level level) (hide-prints symbol)) "Check to see if any textures in the level are oversize. Sets bits in the output flag if they are" (let ((oversize 0)) ;; bitfield of oversize kinds (let* ((tfrag-page (-> level texture-page 0)) - (tfrag-mip0-size (-> tfrag-page mip0-size)) - ) + (tfrag-mip0-size (-> tfrag-page mip0-size))) (when tfrag-page ;; check that mip0 fits in the per-level max size of the near segment - (if (< (the-as uint NEAR_PER_LEV_WORDS) tfrag-mip0-size) - (set! oversize (logior oversize 1)) - ) + (if (< (the-as uint NEAR_PER_LEV_WORDS) tfrag-mip0-size) (set! oversize (logior oversize 1))) ;; check that the other two mips together fit into common (if (< (the-as uint COMMON_SEGMENT_WORDS) (+ (-> tfrag-page segment 0 size) (-> tfrag-page segment 1 size))) - (set! oversize (logior oversize 1)) - ) + (set! oversize (logior oversize 1))) (when (not hide-prints) - (format #t "~Tlevel ~10S TFRAG tpage ~A uses ~DK of near ~DK~%" + (format #t + "~Tlevel ~10S TFRAG tpage ~A uses ~DK of near ~DK~%" (-> level name) (-> tfrag-page name) (shr tfrag-mip0-size 8) - 992 - ) - (format #t "~Tlevel ~10S TFRAG tpage ~A uses ~DK of common ~DK~%" + 992) + (format #t + "~Tlevel ~10S TFRAG tpage ~A uses ~DK of common ~DK~%" (-> level name) (-> tfrag-page name) (shr (+ (-> tfrag-page segment 0 size) (-> tfrag-page segment 1 size)) 8) - 448 - ) - ) - ) - ) + 448)))) (let ((pris-page (-> level texture-page 1))) (when pris-page ;; pris all goes in common. - (if (< (the-as uint COMMON_SEGMENT_WORDS) (-> pris-page size)) - (set! oversize (logior oversize 2)) - ) + (if (< (the-as uint COMMON_SEGMENT_WORDS) (-> pris-page size)) (set! oversize (logior oversize 2))) (if (not hide-prints) - (format #t "~Tlevel ~10S PRIS tpage ~A uses ~DK of common ~DK~%" - (-> level name) - (-> pris-page name) - (shr (-> pris-page size) 8) - 448 - ) - ) - ) - ) + (format #t + "~Tlevel ~10S PRIS tpage ~A uses ~DK of common ~DK~%" + (-> level name) + (-> pris-page name) + (shr (-> pris-page size) 8) + 448)))) (let ((shrub-page (-> level texture-page 2))) (when shrub-page ;; shrubs all go in common. - (if (< (the-as uint COMMON_SEGMENT_WORDS) (-> shrub-page size)) - (set! oversize (logior oversize 4)) - ) + (if (< (the-as uint COMMON_SEGMENT_WORDS) (-> shrub-page size)) (set! oversize (logior oversize 4))) (if (not hide-prints) - (format #t "~Tlevel ~10S SHRUB tpage ~A uses ~DK of common ~DK~%" - (-> level name) - (-> shrub-page name) - (shr (-> shrub-page size) 8) - 448 - ) - ) - ) - ) + (format #t + "~Tlevel ~10S SHRUB tpage ~A uses ~DK of common ~DK~%" + (-> level name) + (-> shrub-page name) + (shr (-> shrub-page size) 8) + 448)))) (let ((alpha-page (-> level texture-page 3))) (when alpha-page ;; alpha's all go in common. - (if (< (the-as uint COMMON_SEGMENT_WORDS) (-> alpha-page size)) - (set! oversize (logior oversize 8)) - ) + (if (< (the-as uint COMMON_SEGMENT_WORDS) (-> alpha-page size)) (set! oversize (logior oversize 8))) (if (not hide-prints) - (format #t "~Tlevel ~10S ALPHA tpage ~A uses ~DK of common ~DK~%" - (-> level name) - (-> alpha-page name) - (shr (-> alpha-page size) 8) - 448 - ) - ) - ) - ) + (format #t + "~Tlevel ~10S ALPHA tpage ~A uses ~DK of common ~DK~%" + (-> level name) + (-> alpha-page name) + (shr (-> alpha-page size) 8) + 448)))) (let ((water-page (-> level texture-page 4))) (when water-page ;; water all goes in common. - (if (< (the-as uint COMMON_SEGMENT_WORDS) (-> water-page size)) - (set! oversize (logior oversize 16)) - ) + (if (< (the-as uint COMMON_SEGMENT_WORDS) (-> water-page size)) (set! oversize (logior oversize 16))) (if (not hide-prints) - (format #t "~Tlevel ~10S WATER tpage ~A uses ~DK of common ~DK~%" - (-> level name) - (-> water-page name) - (shr (-> water-page size) 8) - 448 - ) - ) - ) - ) - oversize - ) - ) - + (format #t + "~Tlevel ~10S WATER tpage ~A uses ~DK of common ~DK~%" + (-> level name) + (-> water-page name) + (shr (-> water-page size) 8) + 448)))) + oversize)) ;;;;;;;;;;;;;;;;;;; ;; Texture Login @@ -1376,76 +1291,41 @@ "Login textures in a level. Only does up to max-page-kind. Set this to water (4) to do all of them. Also checks sizes. This is called from level.gc as part of level loading." - ;; mark any existing as not loaded. (dotimes (page-idx 9) - (set! (-> level texture-page page-idx) #f) - ) + (set! (-> level texture-page page-idx) #f)) (#when PC_PORT (when (zero? id-array) (format #t "ERROR: texture id array is 0, skipping texture login!~%") - (return #f) - ) - ) + (return #f))) (if (>= max-page-kind 0) ;; tfrag. - ;; login the texture. If the texture isn't there, it will try to load it - ;; and allocate with the given allocation function. - (let ((tfrag-dir-entry (texture-page-login - (-> id-array 0) - (if (= (-> level index) 1) - texture-page-near-allocate-1 - texture-page-near-allocate-0 - ) - loading-level - ) - ) - ) - (if tfrag-dir-entry - (set! (-> level texture-page 0) (-> tfrag-dir-entry page)) - ) - ) - ) - + ;; login the texture. If the texture isn't there, it will try to load it + ;; and allocate with the given allocation function. + (let ((tfrag-dir-entry (texture-page-login (-> id-array 0) + (if (= (-> level index) 1) texture-page-near-allocate-1 texture-page-near-allocate-0) + loading-level))) + (if tfrag-dir-entry (set! (-> level texture-page 0) (-> tfrag-dir-entry page))))) (if (>= max-page-kind 1) ;; pris. - ;; login with common. - (let ((pris-dir-entry (texture-page-login (-> id-array 1) texture-page-common-allocate loading-level))) - (if pris-dir-entry - (set! (-> level texture-page 1) (-> pris-dir-entry page)) - ) - ) - ) + ;; login with common. + (let ((pris-dir-entry (texture-page-login (-> id-array 1) texture-page-common-allocate loading-level))) + (if pris-dir-entry (set! (-> level texture-page 1) (-> pris-dir-entry page))))) (if (>= max-page-kind 2) ;; shrub. - (let ((shrub-dir-entry (texture-page-login (-> id-array 2) texture-page-common-allocate loading-level))) - (if shrub-dir-entry - (set! (-> level texture-page 2) (-> shrub-dir-entry page)) - ) - ) - ) + (let ((shrub-dir-entry (texture-page-login (-> id-array 2) texture-page-common-allocate loading-level))) + (if shrub-dir-entry (set! (-> level texture-page 2) (-> shrub-dir-entry page))))) (if (>= max-page-kind 3) - (let ((alpha-dir-entry (texture-page-login (-> id-array 3) texture-page-common-allocate loading-level))) - (if alpha-dir-entry - (set! (-> level texture-page 3) (-> alpha-dir-entry page)) - ) - ) - ) + (let ((alpha-dir-entry (texture-page-login (-> id-array 3) texture-page-common-allocate loading-level))) + (if alpha-dir-entry (set! (-> level texture-page 3) (-> alpha-dir-entry page))))) (if (>= max-page-kind 4) - (let ((water-dir-entry (texture-page-login (-> id-array 4) texture-page-common-allocate loading-level))) - (if water-dir-entry - (set! (-> level texture-page 4) (-> water-dir-entry page)) - ) - ) - ) + (let ((water-dir-entry (texture-page-login (-> id-array 4) texture-page-common-allocate loading-level))) + (if water-dir-entry (set! (-> level texture-page 4) (-> water-dir-entry page))))) ;; check with no prints first (let ((overflow-bits (texture-page-size-check this level #t))) (when (nonzero? overflow-bits) ;; and if it failed, print info (format #t "-------------------- tpage overflow error #x~X~%" overflow-bits) (texture-page-size-check this level #f) - (format #t "--------------------~%") - ) - ) - (none) - ) + (format #t "--------------------~%"))) + (none)) ;; for movie hack. (defun-extern movie? symbol) @@ -1458,147 +1338,84 @@ (tfrag-bucket (if (zero? (-> level index)) (bucket-id tfrag-tex0) (bucket-id tfrag-tex1))) ;; not really sure how this is calculated, but it's a distance. (distance (fmin (fmin (-> level closest-object 0) - (if (and (< 0.0 (-> level level-distance)) - (< (+ (meters 100) (-> level level-distance)) - (-> level closest-object 5) - ) - ) - (meters 999999) - (-> level closest-object 5) - ) - ) - (-> level closest-object 6) - ) - ) - ) + (if (and (< 0.0 (-> level level-distance)) (< (+ (meters 100) (-> level level-distance)) (-> level closest-object 5))) + (meters 999999) + (-> level closest-object 5))) + (-> level closest-object 6)))) (when tfrag-page ;; reset upload size counter. (set! (-> level upload-size 0) 0) - ;; near upload. (if (< distance (meters 20)) - (set! (-> level upload-size 0) - (+ (-> level upload-size 0) - (upload-vram-pages this (-> this segment-near) tfrag-page 2 tfrag-bucket) - ) - ) - ) + (set! (-> level upload-size 0) + (+ (-> level upload-size 0) (upload-vram-pages this (-> this segment-near) tfrag-page 2 tfrag-bucket)))) (cond ((= distance (meters 999999))) ;; not near at all, don't upload anything. ((< (meters 25) distance) ;; pretty far. Just do segment 0. (set! (-> level upload-size 0) - (+ (-> level upload-size 0) - (upload-vram-pages this (-> this segment-common) tfrag-page 0 tfrag-bucket) - ) - ) - ) + (+ (-> level upload-size 0) (upload-vram-pages this (-> this segment-common) tfrag-page 0 tfrag-bucket)))) (else ;; pretty close. Do segment 0 and 1. (set! (-> level upload-size 0) - (+ (-> level upload-size 0) - (upload-vram-pages this (-> this segment-common) tfrag-page -2 tfrag-bucket) - ) - ) - ) - ) - ) - ) - ) - + (+ (-> level upload-size 0) (upload-vram-pages this (-> this segment-common) tfrag-page -2 tfrag-bucket)))))))) (if (= tex-page-kind (tpage-kind pris)) ;; PRIS (1) - (let ((pris-page (-> level texture-page 1))) - (if (and pris-page (nonzero? pris-page)) - (let ((pris-bucket (if (zero? (-> level index)) (bucket-id pris-tex0) (bucket-id pris-tex1)))) - ;; just upload the whole thing always. - ;; use the cache mask as requested by the level. - (set! (-> level upload-size 1) - (upload-vram-pages-pris this (-> this segment-common) pris-page pris-bucket (the-as int (-> level texture-mask 7))) - ) - ) - ) - ) - ) - + (let ((pris-page (-> level texture-page 1))) + (if (and pris-page (nonzero? pris-page)) + (let ((pris-bucket (if (zero? (-> level index)) (bucket-id pris-tex0) (bucket-id pris-tex1)))) + ;; just upload the whole thing always. + ;; use the cache mask as requested by the level. + (set! (-> level upload-size 1) + (upload-vram-pages-pris this (-> this segment-common) pris-page pris-bucket (the-as int (-> level texture-mask 7)))))))) (if (= tex-page-kind (tpage-kind shrub)) ;; SHRUB (2) - (let ((shrub-page (-> level texture-page 2)) - (shrub-closest (-> level closest-object 2)) ;; I guess this is the shrub closest. - ) - (if (and shrub-page (nonzero? shrub-page)) - (let ((shrub-bucket (if (zero? (-> level index)) (bucket-id shrub-tex0) (bucket-id shrub-tex1))) - (shrub-mode (cond - ((= shrub-closest (meters 999999)) - -3 ;; nothing - ) - ((< (meters 25) shrub-closest) - 0 ;; seg 0 - ) - ((< (meters 20) shrub-closest) - -2 ;; seg 0 and 1 - ) - (else - -1 ;; the whole thing. - ) - ) - ) - ) - (set! (-> level upload-size 2) - (upload-vram-pages this (-> this segment-common) shrub-page shrub-mode shrub-bucket) - ) - ) - ) - ) - ) - + (let ((shrub-page (-> level texture-page 2)) + (shrub-closest (-> level closest-object 2)) ;; I guess this is the shrub closest. + ) + (if (and shrub-page (nonzero? shrub-page)) + (let ((shrub-bucket (if (zero? (-> level index)) (bucket-id shrub-tex0) (bucket-id shrub-tex1))) + (shrub-mode (cond + ((= shrub-closest (meters 999999)) + -3 ;; nothing + ) + ((< (meters 25) shrub-closest) + 0 ;; seg 0 + ) + ((< (meters 20) shrub-closest) + -2 ;; seg 0 and 1 + ) + (else + -1 ;; the whole thing. + )))) + (set! (-> level upload-size 2) (upload-vram-pages this (-> this segment-common) shrub-page shrub-mode shrub-bucket)))))) (if (= tex-page-kind (tpage-kind alpha)) ;; ALPHA (3) - (let ((alpha-page (-> level texture-page 3)) - (alpha-closest (-> level closest-object 3)) - ) - (if (and alpha-page (nonzero? alpha-page)) - (let ((alpha-bucket (if (zero? (-> level index)) (bucket-id alpha-tex0) (bucket-id alpha-tex1))) - (alpha-mode (cond - ((< (meters 85) alpha-closest) - 0 ;; segment 0 - ) - ((< (meters 40) alpha-closest) - -2 ;; 0 and 1 - ) - (else - -1 ;; the whole thing. - ) - ) - ) - ) - (let ((alpha-dest-chunk (shr (-> alpha-page segment 0 dest) 12))) - ;; there's some serious hack here. We invalidate some - ;; alpha texture when in movie mode. - (when (movie?) - (set! (-> this ids alpha-dest-chunk) (the-as uint 0)) - (set! (-> this ids (+ alpha-dest-chunk 1)) (the-as uint 0)) - ) - ) - (set! (-> level upload-size 3) - (upload-vram-pages this (-> this segment-common) alpha-page alpha-mode alpha-bucket) - ) - ) - ) - ) - ) - + (let ((alpha-page (-> level texture-page 3)) + (alpha-closest (-> level closest-object 3))) + (if (and alpha-page (nonzero? alpha-page)) + (let ((alpha-bucket (if (zero? (-> level index)) (bucket-id alpha-tex0) (bucket-id alpha-tex1))) + (alpha-mode (cond + ((< (meters 85) alpha-closest) + 0 ;; segment 0 + ) + ((< (meters 40) alpha-closest) + -2 ;; 0 and 1 + ) + (else + -1 ;; the whole thing. + )))) + (let ((alpha-dest-chunk (shr (-> alpha-page segment 0 dest) 12))) + ;; there's some serious hack here. We invalidate some + ;; alpha texture when in movie mode. + (when (movie?) + (set! (-> this ids alpha-dest-chunk) (the-as uint 0)) + (set! (-> this ids (+ alpha-dest-chunk 1)) (the-as uint 0)))) + (set! (-> level upload-size 3) (upload-vram-pages this (-> this segment-common) alpha-page alpha-mode alpha-bucket)))))) (if (= tex-page-kind (tpage-kind water)) ;; WATER (4) - (let ((water-page (-> level texture-page 4))) - (if (and water-page (nonzero? water-page)) - (let ((water-bucket (if (zero? (-> level index)) (bucket-id water-tex0) (bucket-id water-tex1)))) - (set! (-> level upload-size 4) - (upload-vram-pages-pris this (-> this segment-common) water-page water-bucket (the-as int (-> level texture-mask 8))) - ) - ) - ) - ) - ) - - (none) - ) + (let ((water-page (-> level texture-page 4))) + (if (and water-page (nonzero? water-page)) + (let ((water-bucket (if (zero? (-> level index)) (bucket-id water-tex0) (bucket-id water-tex1)))) + (set! (-> level upload-size 4) + (upload-vram-pages-pris this (-> this segment-common) water-page water-bucket (the-as int (-> level texture-mask 8)))))))) + (none)) (defmethod upload-one-common! ((this texture-pool) (lev level)) "Upload the first common texture page that's in in the common-page-mask." @@ -1609,92 +1426,43 @@ ) ;; upload it! (upload-vram-pages this (-> this segment-common) a2-0 -2 (bucket-id common-page-tex)) - (return #f) - ) - ) - ) - #f - ) + (return #f)))) + #f) (defmethod add-irq-to-tex-buckets! ((this level)) "Adds a packet that will cause a VIF interrupt to the end of all texture buckets for a given level. This will trigger a VU1 profiler bar" (cond ((zero? (-> this index)) - ;; use bucket numbers for the 0th level - ;; TFRAG - (with-dma-buffer-add-bucket ((v1-4 (-> (current-frame) global-buf)) - (bucket-id tfrag-tex0)) - - (dma-buffer-add-cnt-vif2 v1-4 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1) - ) - ) - ;; the rest are the same - ;; PRIS - (with-dma-buffer-add-bucket ((v1-12 (-> (current-frame) global-buf)) - (bucket-id pris-tex0)) - - (dma-buffer-add-cnt-vif2 v1-12 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1) - ) - ) - ;; SHRUB - (with-dma-buffer-add-bucket ((v1-20 (-> (current-frame) global-buf)) - (bucket-id shrub-tex0)) - - (dma-buffer-add-cnt-vif2 v1-20 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1) - ) - ) - ;; ALPHA - (with-dma-buffer-add-bucket ((v1-28 (-> (current-frame) global-buf)) - (bucket-id alpha-tex0)) - - (dma-buffer-add-cnt-vif2 v1-28 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1) - ) - ) - ) - (else - ;; TFRAG - (with-dma-buffer-add-bucket ((v1-36 (-> (current-frame) global-buf)) - (bucket-id tfrag-tex1)) - - (dma-buffer-add-cnt-vif2 v1-36 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1) - ) - ) - ;; PRIS - (with-dma-buffer-add-bucket ((v1-44 (-> (current-frame) global-buf)) - (bucket-id pris-tex1)) - - (dma-buffer-add-cnt-vif2 v1-44 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1) - ) - ) - ;; SHRUB - (with-dma-buffer-add-bucket ((v1-52 (-> (current-frame) global-buf)) - (bucket-id shrub-tex1)) - - (dma-buffer-add-cnt-vif2 v1-52 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1) - ) - ) - ;; ALPHA - (with-dma-buffer-add-bucket ((v1-60 (-> (current-frame) global-buf)) - (bucket-id alpha-tex1)) - - (dma-buffer-add-cnt-vif2 v1-60 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1) - ) - ) - ) - ) + ;; use bucket numbers for the 0th level + ;; TFRAG + (with-dma-buffer-add-bucket ((v1-4 (-> (current-frame) global-buf)) (bucket-id tfrag-tex0)) + (dma-buffer-add-cnt-vif2 v1-4 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1))) + ;; the rest are the same + ;; PRIS + (with-dma-buffer-add-bucket ((v1-12 (-> (current-frame) global-buf)) (bucket-id pris-tex0)) + (dma-buffer-add-cnt-vif2 v1-12 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1))) + ;; SHRUB + (with-dma-buffer-add-bucket ((v1-20 (-> (current-frame) global-buf)) (bucket-id shrub-tex0)) + (dma-buffer-add-cnt-vif2 v1-20 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1))) + ;; ALPHA + (with-dma-buffer-add-bucket ((v1-28 (-> (current-frame) global-buf)) (bucket-id alpha-tex0)) + (dma-buffer-add-cnt-vif2 v1-28 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1)))) + (else + ;; TFRAG + (with-dma-buffer-add-bucket ((v1-36 (-> (current-frame) global-buf)) (bucket-id tfrag-tex1)) + (dma-buffer-add-cnt-vif2 v1-36 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1))) + ;; PRIS + (with-dma-buffer-add-bucket ((v1-44 (-> (current-frame) global-buf)) (bucket-id pris-tex1)) + (dma-buffer-add-cnt-vif2 v1-44 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1))) + ;; SHRUB + (with-dma-buffer-add-bucket ((v1-52 (-> (current-frame) global-buf)) (bucket-id shrub-tex1)) + (dma-buffer-add-cnt-vif2 v1-52 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1))) + ;; ALPHA + (with-dma-buffer-add-bucket ((v1-60 (-> (current-frame) global-buf)) (bucket-id alpha-tex1)) + (dma-buffer-add-cnt-vif2 v1-60 0 (new 'static 'vif-tag :cmd (vif-cmd nop)) (new 'static 'vif-tag :cmd (vif-cmd nop) :irq 1))))) 0 - (none) - ) - + (none)) ;; A small DMA buffer for sending upload-now! textures. ;; These are uploaded outside of the main DMA list. @@ -1703,42 +1471,29 @@ (defmethod upload-now! ((this texture-page) (arg0 int)) "Immediately upload the texture-page to the given buffer, using arg0 mode." - (#when PC_PORT ;; load it to the PC Port's texture pool. - (__pc-texture-upload-now this arg0) - ) - + (__pc-texture-upload-now this arg0)) (let ((gp-0 *txt-dma-list*)) ;; Set up the DMA buffer (let ((v1-0 gp-0)) (set! (-> v1-0 base) (-> v1-0 data)) - (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length))) - ) + (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length)))) ;; add the texture to the buffer (add-to-dma-buffer this gp-0 arg0) - ;; DMA -> VIF (direct) -> GIF ;; GIF texflush - (dma-buffer-add-gs-set gp-0 - (texflush 1) - ) - + (dma-buffer-add-gs-set gp-0 (texflush 1)) ;; DMA end (do it ourselves, no buckets here) - (dma-buffer-add-uint64 gp-0 (new 'static 'dma-tag :id (dma-tag-id end)) - 0) - + (dma-buffer-add-uint64 gp-0 (new 'static 'dma-tag :id (dma-tag-id end)) 0) ;; send now! ;; we send this to the GIF, which will basically ignore the ;; VIF tags (hopefully). (#unless PC_PORT - (dma-buffer-send-chain (the-as dma-bank-source #x1000a000) gp-0) - ) - ) + (dma-buffer-send-chain (the-as dma-bank-source #x1000a000) gp-0))) ;; sync, wait for upload to complete (dma-sync (the-as pointer #x1000a000) 0 0) - (none) - ) + (none)) (defmethod add-to-dma-buffer ((this texture-page) (dma-buff dma-buffer) (mode int)) "Helper for upload-now! to upload texture-page to VRAM" @@ -1748,101 +1503,83 @@ (cond ((= v1-0 -3) ;; upload none - 0 - ) + 0) ((= v1-0 -2) ;; segment 0, 1 only - (the-as int - (+ (-> this segment 0 size) - (-> this segment 1 size) - ) - ) - ) + (the-as int (+ (-> this segment 0 size) (-> this segment 1 size)))) ((= v1-0 -1) ;; the whole thing. - (the-as int (-> this size)) - ) + (the-as int (-> this size))) (else ;; 0, 1, 2, just segment 0, 1, 2 - (the-as int (-> this segment mode size)) - ) - ) - ) - ) - + (the-as int (-> this segment mode size)))))) ;; loop over chunks to load (let* ((start-segment (max 0 mode)) (chunk-count (* (/ (+ (/ total-size 64) 63) 64) 32)) (current-dest (shr (-> this segment start-segment dest) 6)) - (current-data (-> this segment start-segment block-data)) - ) + (current-data (-> this segment start-segment block-data))) (while (> chunk-count 0) ;; do up to 2048 now (let ((chunks-now (min 2048 chunk-count))) ;; vif direct - (dma-buffer-add-cnt-vif2 dma-buff 5 (new 'static 'vif-tag :cmd (vif-cmd nop)) - (new 'static 'vif-tag :cmd (vif-cmd direct) :imm 5) - ) - + (dma-buffer-add-cnt-vif2 dma-buff + 5 + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm 5)) ;; gs regs - (dma-buffer-add-gif-tag dma-buff (new 'static 'gif-tag64 :nloop 4 :nreg 1) - (gs-reg-list a+d) - ) - + (dma-buffer-add-gif-tag dma-buff (new 'static 'gif-tag64 :nloop 4 :nreg 1) (gs-reg-list a+d)) ;; the actual regs (dma-buffer-add-uint64 dma-buff - (new 'static 'gs-bitbltbuf :dbw 2 :dbp current-dest) (gs-reg64 bitbltbuf) - (new 'static 'gs-trxpos) (gs-reg64 trxpos) - (new 'static 'gs-trxreg :rrw 128 :rrh chunks-now) (gs-reg64 trxreg) - (new 'static 'gs-trxdir) (gs-reg64 trxdir) - ) - + (new 'static 'gs-bitbltbuf :dbw 2 :dbp current-dest) + (gs-reg64 bitbltbuf) + (new 'static 'gs-trxpos) + (gs-reg64 trxpos) + (new 'static 'gs-trxreg :rrw 128 :rrh chunks-now) + (gs-reg64 trxreg) + (new 'static 'gs-trxdir) + (gs-reg64 trxdir)) ;; add data. - (dma-buffer-add-ref-texture dma-buff current-data 128 chunks-now (gs-psm ct32)) - ) + (dma-buffer-add-ref-texture dma-buff current-data 128 chunks-now (gs-psm ct32))) (+! current-dest 4096) ;;(set! current-data (&+! #x100000 (the-as int current-data))) (&+! current-data #x100000) - (+! chunk-count -2048) - ) - ) - total-size - ) + (+! chunk-count -2048))) + total-size) (defun texture-relocate ((dma-buff dma-buffer) (tex texture) (dest-loc int) (dest-fmt gs-psm) (clut-dst int)) "Move a texture in VRAM. Unrelated to the texture-relocate-later, which moves textures in RAM. Will try to move the whole thing, including the clut, assuming you provide a destination for it. Note that this uses the format/width stuff properly, so it will be slower, but won't scramble your texture." - (#when PC_PORT ;; as far as I know this is only used for fonts which have 1 mip level. - (__pc-texture-relocate (/ dest-loc 64) (-> tex dest 0) dest-fmt) - ) - + (__pc-texture-relocate (/ dest-loc 64) (-> tex dest 0) dest-fmt)) ;; loop over mips (dotimes (mip-level (the-as int (-> tex num-mips))) ;; size of the current mip. (let ((mip-w (ash (-> tex w) (- mip-level))) - (mip-h (ash (-> tex h) (- mip-level))) - ) + (mip-h (ash (-> tex h) (- mip-level)))) ;; vif direct (dma-buffer-add-gs-set dma-buff - (bitbltbuf (new 'static 'gs-bitbltbuf - :sbp (-> tex dest mip-level) ;; source VRAM addr - :sbw (-> tex width mip-level) ;; source width - :spsm (the-as int (-> tex psm)) ;; source format - :dbp (/ dest-loc 64) ;; dest location - :dbw (-> tex width mip-level) ;; dest width - :dpsm dest-fmt ;; dest format - )) - (trxpos (new 'static 'gs-trxpos)) - (trxreg (new 'static 'gs-trxreg :rrw mip-w :rrh mip-h)) - (trxdir (new 'static 'gs-trxdir :xdir 2)) ;; VRAM -> VRAM - ) - ) - (set! (-> tex dest mip-level) (the-as uint (/ dest-loc 64))) - ) - + (bitbltbuf (new 'static + 'gs-bitbltbuf + :sbp (-> tex dest mip-level) + ;; source VRAM addr + :sbw (-> tex width mip-level) + ;; source width + :spsm + (the-as int (-> tex psm)) ;; source format + :dbp + (/ dest-loc 64) ;; dest location + :dbw (-> tex width mip-level) + ;; dest width + :dpsm + dest-fmt ;; dest format + )) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw mip-w :rrh mip-h)) + (trxdir (new 'static 'gs-trxdir :xdir 2)) ;; VRAM -> VRAM + )) + (set! (-> tex dest mip-level) (the-as uint (/ dest-loc 64)))) ;; transfer CLUT, if dst is given (cond ((< clut-dst 0) @@ -1851,43 +1588,40 @@ ((= (-> tex psm) (gs-psm mt4)) ;; case for mt4 format texture (dma-buffer-add-gs-set dma-buff - (bitbltbuf (new 'static 'gs-bitbltbuf - :sbw 1 - :dbw 1 - :dpsm (-> tex clutpsm) - :dbp (/ clut-dst 64) - :spsm (-> tex clutpsm) - :sbp (-> tex clutdest) - )) - (trxpos (new 'static 'gs-trxpos)) - (trxreg (new 'static 'gs-trxreg :rrw 8 :rrh 2)) - (trxdir (new 'static 'gs-trxdir :xdir 2)) ;; VRAM -> VRAM - ) - (set! (-> tex clutdest) (the-as uint (/ clut-dst 64))) - ) + (bitbltbuf (new 'static + 'gs-bitbltbuf + :sbw 1 + :dbw 1 + :dpsm (-> tex clutpsm) + :dbp + (/ clut-dst 64) + :spsm (-> tex clutpsm) + :sbp (-> tex clutdest))) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw 8 :rrh 2)) + (trxdir (new 'static 'gs-trxdir :xdir 2)) ;; VRAM -> VRAM + ) + (set! (-> tex clutdest) (the-as uint (/ clut-dst 64)))) ((= (-> tex psm) (gs-psm mt8)) ;; 8-bit index (dma-buffer-add-gs-set dma-buff - (bitbltbuf (new 'static 'gs-bitbltbuf - :sbw 2 - :dbw 2 - :dpsm (-> tex clutpsm) - :dbp (/ clut-dst 64) - :spsm (-> tex clutpsm) - :sbp (-> tex clutdest) - )) - (trxpos (new 'static 'gs-trxpos)) - (trxreg (new 'static 'gs-trxreg :rrw 16 :rrh 16)) - (trxdir (new 'static 'gs-trxdir :xdir 2)) ;; VRAM -> VRAM - ) - (set! (-> tex clutdest) (the-as uint (/ clut-dst 64))) - ) - ) - + (bitbltbuf (new 'static + 'gs-bitbltbuf + :sbw 2 + :dbw 2 + :dpsm (-> tex clutpsm) + :dbp + (/ clut-dst 64) + :spsm (-> tex clutpsm) + :sbp (-> tex clutdest))) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw 16 :rrh 16)) + (trxdir (new 'static 'gs-trxdir :xdir 2)) ;; VRAM -> VRAM + ) + (set! (-> tex clutdest) (the-as uint (/ clut-dst 64))))) ;; update texture to have the new format. (set! (-> tex psm) dest-fmt) - dma-buff - ) + dma-buff) ;; The font texture is a special case. (define-perm *font-texture* texture #f) @@ -1900,189 +1634,124 @@ ;; we're going to try to find the font texture (set! heap-before-font-tex (-> this cur)) (set! clut-dest-addr (/ font-clut 64)) - ;; find the font texture. (set! *font-texture* (lookup-texture-by-id (new 'static 'texture-id :index #x1 :page #x4fe))) ;; log in the font texture. I believe the point of this is to get the start of the ;; texture _page_, which may have stuff in it before the index 1 texture. - (let ((main-font-tx (texture-page-login - (new 'static 'texture-id :index #x1 :page #x4fe) - texture-page-default-allocate - global - ) - ) - ) - + (let ((main-font-tx (texture-page-login (new 'static 'texture-id :index #x1 :page #x4fe) texture-page-default-allocate global))) ;; if we have the font texture after log-in, then set our heap marker to before it. ;; resetting the heap to here would kick (if (and main-font-tx (-> main-font-tx page)) - (set! heap-before-font-tex - (the-as int (-> main-font-tx page segment 0 dest)) - ) - ) + (set! heap-before-font-tex (the-as int (-> main-font-tx page segment 0 dest)))) ;; clear the temp texture DMA list (let ((dma-buff *txt-dma-list*)) (let ((v1-6 dma-buff)) (set! (-> v1-6 base) (-> v1-6 data)) - (set! (-> v1-6 end) (&-> v1-6 data-buffer (-> v1-6 allocated-length))) - ) - + (set! (-> v1-6 end) (&-> v1-6 data-buffer (-> v1-6 allocated-length)))) ;; relocate the font - (let ((font-tx-1 *font-texture*) ;; texture 1 - (font-tx-1-dest #xe0000) ;; the depth buffer + (let ((font-tx-1 *font-texture*) ;; texture 1 + (font-tx-1-dest #xe0000) ;; the depth buffer (font-tx-1-fmt (gs-psm mt4hl)) ;; 4-bit, using 4 of the 8 free bits of z24 ) ;; do the relocation! (texture-relocate dma-buff font-tx-1 font-tx-1-dest font-tx-1-fmt font-clut) ;; tell the font system that we put the texture here. - (font-set-tex0 - (the-as (pointer gs-tex0) (-> *font-work* small-font-lo-tmpl)) - font-tx-1 - (the-as uint font-tx-1-dest) - (the-as uint font-tx-1-fmt) - (the-as uint clut-dest-addr) - ) - ) + (font-set-tex0 (the-as (pointer gs-tex0) (-> *font-work* small-font-lo-tmpl)) + font-tx-1 + (the-as uint font-tx-1-dest) + (the-as uint font-tx-1-fmt) + (the-as uint clut-dest-addr))) (let ((font-tx-0 (lookup-texture-by-id (new 'static 'texture-id :page #x4fe))) - (font-tx-0-dest #xe0000) - (font-tx-0-fmt (gs-psm mt4hh)) - ) + (font-tx-0-dest #xe0000) + (font-tx-0-fmt (gs-psm mt4hh))) (texture-relocate dma-buff font-tx-0 font-tx-0-dest font-tx-0-fmt font-clut) - (font-set-tex0 - (the-as (pointer gs-tex0) (-> *font-work* small-font-hi-tmpl)) - font-tx-0 - (the-as uint font-tx-0-dest) - (the-as uint font-tx-0-fmt) - (the-as uint clut-dest-addr) - ) - ) + (font-set-tex0 (the-as (pointer gs-tex0) (-> *font-work* small-font-hi-tmpl)) + font-tx-0 + (the-as uint font-tx-0-dest) + (the-as uint font-tx-0-fmt) + (the-as uint clut-dest-addr))) (let ((font-tx-3 (lookup-texture-by-id (new 'static 'texture-id :index #x3 :page #x4fe))) - (font-tx-3-dest #xe6000) - (font-tx-3-fmt (gs-psm mt4hl)) - ) + (font-tx-3-dest #xe6000) + (font-tx-3-fmt (gs-psm mt4hl))) (texture-relocate dma-buff font-tx-3 font-tx-3-dest font-tx-3-fmt font-clut) - (font-set-tex0 - (the-as (pointer gs-tex0) (-> *font-work* large-font-lo-tmpl)) - font-tx-3 - (the-as uint font-tx-3-dest) - (the-as uint font-tx-3-fmt) - (the-as uint clut-dest-addr) - ) - ) + (font-set-tex0 (the-as (pointer gs-tex0) (-> *font-work* large-font-lo-tmpl)) + font-tx-3 + (the-as uint font-tx-3-dest) + (the-as uint font-tx-3-fmt) + (the-as uint clut-dest-addr))) (let ((font-tx-2 (lookup-texture-by-id (new 'static 'texture-id :index #x2 :page #x4fe))) - (font-tx-2-dest #xe6000) - (font-tx-2-fmt (gs-psm mt4hh)) - ) + (font-tx-2-dest #xe6000) + (font-tx-2-fmt (gs-psm mt4hh))) (texture-relocate dma-buff font-tx-2 font-tx-2-dest (the-as gs-psm font-tx-2-fmt) font-clut) - (font-set-tex0 - (the-as (pointer gs-tex0) (-> *font-work* large-font-hi-tmpl)) - font-tx-2 - (the-as uint font-tx-2-dest) - (the-as uint font-tx-2-fmt) - (the-as uint clut-dest-addr) - ) - ) - + (font-set-tex0 (the-as (pointer gs-tex0) (-> *font-work* large-font-hi-tmpl)) + font-tx-2 + (the-as uint font-tx-2-dest) + (the-as uint font-tx-2-fmt) + (the-as uint clut-dest-addr))) ;; texflush - (dma-buffer-add-gs-set dma-buff - (texflush 1) - ) - + (dma-buffer-add-gs-set dma-buff (texflush 1)) ;; end of DMA - (dma-buffer-add-uint64 dma-buff (new 'static 'dma-tag :id (dma-tag-id end)) - 0) - + (dma-buffer-add-uint64 dma-buff (new 'static 'dma-tag :id (dma-tag-id end)) 0) ;; send and sync! VIF tags are probably ignored. (#unless PC_PORT - (dma-buffer-send-chain (the-as dma-bank-source #x10009000) dma-buff) - ) - ) + (dma-buffer-send-chain (the-as dma-bank-source #x10009000) dma-buff))) (dma-sync (the-as pointer #x10009000) 0 0) - ;; try to kick out the font texture (if (and main-font-tx ;; we found it (-> main-font-tx page) ;; directory has it (= (-> this cur) (+ heap-before-font-tex (the-as int (-> main-font-tx page size)))) ;; not killing other stuff ) - (set! (-> this cur) heap-before-font-tex) ;; kick first copy out of VRAM! - ;; or, if we failed, complain. - (format 0 "ERROR: could not resize heap to remove gamefont.~%") - ) - ) - ) + (set! (-> this cur) heap-before-font-tex) ;; kick first copy out of VRAM! + ;; or, if we failed, complain. + (format 0 "ERROR: could not resize heap to remove gamefont.~%")))) 0 - (none) - ) + (none)) ;; The texture page directory is a list of all texture pages. ;; It is actually stored in the dir-tpages.o object file, which is pre-populated with lengths. (defmethod asize-of ((this texture-page-dir)) "Get the size in memory of a texture-page-dir" - (the-as int (+ (-> texture-page-dir size) (the-as uint (* 12 (+ (-> this length) -1))))) - ) + (the-as int (+ (-> texture-page-dir size) (the-as uint (* 12 (+ (-> this length) -1)))))) (defmethod length ((this texture-page-dir)) "Get the number of tpages in the texture-page-dir" - (-> this length) - ) + (-> this length)) (defmethod relocate ((this texture-page-dir) (arg0 kheap) (arg1 (pointer uint8))) "Load a texture-page-dir" ;; just set the global. (tex-dbg "Loaded texture-page-dir ~A with ~D entries~%" this (-> this length)) (set! *texture-page-dir* this) - (none) - ) + (none)) (defmethod relocate-dests! ((this texture-page) (new-dest int) (seg-id int)) "Update a texture-page so all the textures point to a new location" (let ((v1-0 (shr new-dest 6)) - (dst-block (shr (-> this segment seg-id dest) 6)) - ) - (when (!= v1-0 dst-block) ;; skip if already correct + (dst-block (shr (-> this segment seg-id dest) 6))) + (when (!= v1-0 dst-block) ;; skip if already correct (dotimes (tex-id (-> this length)) ;; iterate through all textures - (when (-> this data tex-id) ;; only if we have a texture + (when (-> this data tex-id) ;; only if we have a texture (let* ((tex (-> this data tex-id)) - (num-mips (-> tex num-mips)) - ) + (num-mips (-> tex num-mips))) ;; (tex-dbg " relocate-dests! ~A~%" tex) - ;; relocate clut - (if (zero? seg-id) - (set! (-> tex clutdest) (+ (- (-> tex clutdest) dst-block) (the-as uint v1-0))) - ) - + (if (zero? seg-id) (set! (-> tex clutdest) (+ (- (-> tex clutdest) dst-block) (the-as uint v1-0)))) ;; move the texture data for each mip level (dotimes (mip-id (the-as int num-mips)) (let ((t4-0 mip-id) - (t5-0 num-mips) - ) - (if (= seg-id (if (>= (the-as uint 2) t5-0) - (+ (- -1 t4-0) (the-as int t5-0)) - (max 0 (- 2 t4-0)) - ) - ) - (set! (-> tex dest mip-id) - (+ (- (-> tex dest mip-id) dst-block) (the-as uint v1-0)) - ) - ) - ) - ) - ) - ) - ) + (t5-0 num-mips)) + (if (= seg-id (if (>= (the-as uint 2) t5-0) (+ (- -1 t4-0) (the-as int t5-0)) (max 0 (- 2 t4-0)))) + (set! (-> tex dest mip-id) (+ (- (-> tex dest mip-id) dst-block) (the-as uint v1-0))))))))) ;; (format #t "relocate dests: ~A seg ~D from ~D to ~D~%" this seg-id (-> this segment seg-id dest) new-dest) - (set! (-> this segment seg-id dest) (the-as uint new-dest)) - ) - ) - (none) - ) + (set! (-> this segment seg-id dest) (the-as uint new-dest)))) + (none)) (defmethod relocate ((this texture-page) (arg0 kheap) (arg1 (pointer uint8))) "Add to VRAM and allocate links. This method is called by the GOAL linker when it loads a texture page." - (tex-dbg "loaded tpage ~A~%" this + (tex-dbg "loaded tpage ~A~%" + this ;;(-> this info file-name) ;;(-> this info maya-file-name) ;;(-> this info tool-debug) @@ -2090,85 +1759,55 @@ ) (local-vars (s4-0 texture-page-dir-entry)) (cond - ((or (not this) - (not (file-info-correct-version? (-> this info) (file-kind tpage) 0)) - ) + ((or (not this) (not (file-info-correct-version? (-> this info) (file-kind tpage) 0))) ;; bad file - (set! this (the-as texture-page #f)) - ) + (set! this (the-as texture-page #f))) ((begin - (let ((v1-2 (-> *level* loading-level))) ;; loading/linking level - (tex-dbg " tpage is with level ~A~%" v1-2) - (when v1-2 - ;; add us to the loading level's tpages - (set! (-> v1-2 loaded-texture-page (-> v1-2 loaded-texture-page-count)) this) - (+! (-> v1-2 loaded-texture-page-count) 1) - ) - ) - ;; set our dests for the 3 segments being in order - (set! (-> this segment 1 dest) (-> this segment 0 size)) - (set! (-> this segment 2 dest) (+ (-> this segment 0 size) (-> this segment 1 size))) - - ;; grab our tpage dir entry - (let ((a3-0 (-> this id))) - (set! s4-0 (-> *texture-page-dir* entries a3-0)) - (set! (-> *texture-relocate-later* memcpy) #f) - - ;; allocate! - ((-> *texture-pool* allocate-func) *texture-pool* this arg0 (the-as int a3-0)) - ) - ;; the actual condition - (not (-> *texture-relocate-later* memcpy)) - ) + (let ((v1-2 (-> *level* loading-level))) ;; loading/linking level + (tex-dbg " tpage is with level ~A~%" v1-2) + (when v1-2 + ;; add us to the loading level's tpages + (set! (-> v1-2 loaded-texture-page (-> v1-2 loaded-texture-page-count)) this) + (+! (-> v1-2 loaded-texture-page-count) 1))) + ;; set our dests for the 3 segments being in order + (set! (-> this segment 1 dest) (-> this segment 0 size)) + (set! (-> this segment 2 dest) (+ (-> this segment 0 size) (-> this segment 1 size))) + ;; grab our tpage dir entry + (let ((a3-0 (-> this id))) + (set! s4-0 (-> *texture-page-dir* entries a3-0)) + (set! (-> *texture-relocate-later* memcpy) #f) + ;; allocate! + ((-> *texture-pool* allocate-func) *texture-pool* this arg0 (the-as int a3-0))) + ;; the actual condition + (not (-> *texture-relocate-later* memcpy))) ;; if no relocate later memcpy, then we allocate links (set! (-> s4-0 page) this) (if (not (-> s4-0 link)) - (set! (-> s4-0 link) - (the-as texture-link (malloc 'loading-level (* (max (-> s4-0 length) (-> this length)) 4))) - ) - ) - ) + (set! (-> s4-0 link) (the-as texture-link (malloc 'loading-level (* (max (-> s4-0 length) (-> this length)) 4)))))) (else ;; yes memcpy, we can't allocate on the heap. - (let ((v1-19 *texture-relocate-later*)) - (set! (-> v1-19 entry) s4-0) - (set! (-> v1-19 page) this) - ) - ) - ) - (none) - ) - + (let ((v1-19 *texture-relocate-later*)) (set! (-> v1-19 entry) s4-0) (set! (-> v1-19 page) this)))) + (none)) (defun relocate-later () "Level loader will call this. At this point, the data is kicked out" (let ((gp-0 *texture-relocate-later*)) (let ((s5-0 (-> gp-0 entry)) - (s4-0 (-> gp-0 page)) - ) + (s4-0 (-> gp-0 page))) ;; do this first, before allocating (ultimate-memcpy (the-as pointer (-> gp-0 dest)) (the-as pointer (-> gp-0 source)) (-> gp-0 move)) (set! (-> s5-0 page) s4-0) ;; now safe to allocate links! (if (not (-> s5-0 link)) - (set! (-> s5-0 link) - (the-as texture-link (malloc 'loading-level (* (max (-> s5-0 length) (-> s4-0 length)) 4))) - ) - ) - ) - (set! (-> gp-0 memcpy) #f) - ) - #f - ) + (set! (-> s5-0 link) (the-as texture-link (malloc 'loading-level (* (max (-> s5-0 length) (-> s4-0 length)) 4)))))) + (set! (-> gp-0 memcpy) #f)) + #f) (defun texture-page-login ((id texture-id) (alloc-func (function texture-pool texture-page kheap int texture-page)) (heap kheap)) "Return the tpage-dir entry for the given texture. Load if from the debug network if its not loaded. Return #f if it doesn't work" - ;; make sure its a valid entry - (when (and (nonzero? (-> id page)) - (< (the-as uint (-> id page)) (the-as uint (-> *texture-page-dir* length))) - ) + (when (and (nonzero? (-> id page)) (< (the-as uint (-> id page)) (the-as uint (-> *texture-page-dir* length)))) ;; look up current entry (let ((dir-entry (-> *texture-page-dir* entries (the-as uint (-> id page))))) (when (not (-> dir-entry page)) @@ -2177,40 +1816,25 @@ (let ((old-alloc-func (-> *texture-pool* allocate-func))) (set! (-> *texture-pool* allocate-func) alloc-func) ;; generate a file name - (let* ((file-name (make-file-name - (file-kind tpage) - (the-as string (* (-> id page) 8)) ;; int -> binteger, later prined with ~S - 0 - #f - ) - ) + (let* ((file-name (make-file-name (file-kind tpage) + (the-as string (* (-> id page) 8)) ;; int -> binteger, later prined with ~S + 0 + #f)) ;; and load it! The loado links but doesn't execute the relocate method. - (s2-0 (the-as texture-page (loado file-name heap))) - ) + (s2-0 (the-as texture-page (loado file-name heap)))) ;; if we loaded, relocate! - (if s2-0 - (relocate s2-0 heap (charp-basename (-> file-name data))) - ) - ) - (set! (-> *texture-pool* allocate-func) old-alloc-func) - ) - ) - dir-entry - ) - ) - ) + (if s2-0 (relocate s2-0 heap (charp-basename (-> file-name data))))) + (set! (-> *texture-pool* allocate-func) old-alloc-func))) + dir-entry))) (defun lookup-texture-by-id ((arg0 texture-id)) "Look up a texture by ID, loading it from debug network if its not loaded. Default allocates if it has to load, so it will permanently use VRAM" (let ((v1-0 (texture-page-login arg0 texture-page-default-allocate loading-level))) - (when (and v1-0 (< (-> arg0 index) (the-as uint (-> v1-0 page length)))) - ;;(format #t "texture:~%") - ;;(inspect (-> v1-0 page data (-> arg0 index))) - (-> v1-0 page data (-> arg0 index)) - ) - ) - ) + (when (and v1-0 (< (-> arg0 index) (the-as uint (-> v1-0 page length)))) + ;;(format #t "texture:~%") + ;;(inspect (-> v1-0 page data (-> arg0 index))) + (-> v1-0 page data (-> arg0 index))))) (defmethod unload! ((this texture-pool) (arg0 texture-page)) "Unload the texture from the directory" @@ -2220,105 +1844,75 @@ (dotimes (a0-1 (-> v1-0 length)) ;; found it! (when (= arg0 (-> v1-0 entries a0-1 page)) - (set! a0-2 a0-1) - (goto cfg-7) - ) - ) + (set! a0-2 a0-1) + (goto cfg-7))) (set! a0-2 -1) (label cfg-7) ;; remove (when (>= a0-2 0) (set! (-> v1-0 entries a0-2 page) #f) - (set! (-> v1-0 entries a0-2 link) #f) - ) - ) - 0 - ) + (set! (-> v1-0 entries a0-2 link) #f))) + 0) ;; debug menu shader stuff (define *shader-list* '()) + (define *edit-shader* (new 'static 'texture-id)) (defun link-texture-by-id ((arg0 texture-id) (arg1 adgif-shader)) "Link the given adgif shader to the texture with the given ID" - (when (not (or (zero? (-> arg0 page)) - (>= (the-as uint (-> arg0 page)) - (the-as uint (-> *texture-page-dir* length)) - ) - ) - ) + (when (not (or (zero? (-> arg0 page)) (>= (the-as uint (-> arg0 page)) (the-as uint (-> *texture-page-dir* length))))) ;; look up entry (let ((s4-0 (-> *texture-page-dir* entries (the-as uint (-> arg0 page))))) ;; allocate if needed. - (if (not (-> s4-0 link)) - (set! (-> s4-0 link) - (the-as texture-link (malloc 'loading-level (* (-> s4-0 length) 4))) - ) - ) + (if (not (-> s4-0 link)) (set! (-> s4-0 link) (the-as texture-link (malloc 'loading-level (* (-> s4-0 length) 4))))) (when (< (-> arg0 index) (the-as uint (-> s4-0 length))) ;; push to head of the list. (set! (-> arg1 next shader) (-> s4-0 link next (-> arg0 index) shader)) - (set! (-> s4-0 link next (-> arg0 index) shader) - (shr (the-as uint arg1) 4) - ) - ) - s4-0 - ) - ) - ) + (set! (-> s4-0 link next (-> arg0 index) shader) (shr (the-as uint arg1) 4))) + s4-0))) (defmethod unlink-textures-in-heap! ((this texture-page-dir) (heap kheap)) "Remove adgif shaders that are in the given heap" (local-vars (dist-past-end uint)) (let ((mem-start (-> heap base)) - (mem-end (-> heap top-base)) - ) + (mem-end (-> heap top-base))) ;; iterate over all entries in the director (dotimes (entry-idx (-> this length)) (let* ((entry (-> this entries entry-idx)) (tex-page (-> entry page)) (link-arr (-> entry link next)) - (tex-count (min (-> tex-page length) (-> entry length))) - ) + (tex-count (min (-> tex-page length) (-> entry length)))) 0 (when link-arr ;; when we have an allocate link array, loop over all textures (dotimes (tex-idx tex-count) (let ((link-slot (&-> link-arr 0)) - (shader (the-as adgif-shader (* (-> link-arr 0 shader) 16))) - ) + (shader (the-as adgif-shader (* (-> link-arr 0 shader) 16)))) (while (nonzero? (the-as int shader)) ;; got a shader, lets see if we should unlink it ;; some clever branching here: ;; branch to cfg-7 if we're below mem start (b! (< (the-as int (- (the-as int shader) (the-as int mem-start))) 0) cfg-7 - :delay (set! dist-past-end (the-as uint (- (the-as int shader) (the int mem-end)))) - ) + :delay + (set! dist-past-end (the-as uint (- (the-as int shader) (the int mem-end))))) ;; in the delay slot of the above branch we determined our distance from end of memory (b! (>= (the-as int dist-past-end) 0) cfg-7 :delay (nop!)) ;; in here, we're in the heap. ;; splice this adgif shader out. - (let ((t4-2 (-> shader next))) - (b! #t cfg-8 :delay (set! (-> link-slot 0) t4-2)) - ) + (let ((t4-2 (-> shader next))) (b! #t cfg-8 :delay (set! (-> link-slot 0) t4-2))) (label cfg-7) ;; only advance link slot if we didn't splice (set! link-slot (&-> shader next)) (label cfg-8) ;; move on to the next shader, this should work if we spliced or not. - (set! shader (the-as adgif-shader (* (-> shader next shader) 16))) - ) ;; end loop over linked list + (set! shader (the-as adgif-shader (* (-> shader next shader) 16)))) ;; end loop over linked list ) - - (set! link-arr (&-> link-arr 1)) - ) ;; end loop over textures - ) - ) - ) ;; end loop over tpages + (set! link-arr (&-> link-arr 1))) ;; end loop over textures + ))) ;; end loop over tpages ) - 0 - ) + 0) ;; TODO method 9 @@ -2331,73 +1925,75 @@ (set! (-> arg0 tex1 mmin) (shr (-> arg1 tex1-control) 1)) ;; tex0 (set! (-> arg0 tex0) - (new 'static 'gs-tex0 - :tcc #x1 - :cld #x1 - :cpsm (-> arg1 clutpsm) - :cbp (-> arg1 clutdest) - :tfx (-> arg0 tex0 tfx) - :th (log2 (-> arg1 h)) - :tw (log2 (-> arg1 w)) - :tbw (-> arg1 width 0) - :tbp0 (-> arg1 dest 0) - :psm (the-as int (-> arg1 psm)) - ) - ) + (new 'static + 'gs-tex0 + :tcc #x1 + :cld #x1 + :cpsm (-> arg1 clutpsm) + :cbp (-> arg1 clutdest) + :tfx (-> arg0 tex0 tfx) + :th + (log2 (-> arg1 h)) + :tw + (log2 (-> arg1 w)) + :tbw + (-> arg1 width 0) + :tbp0 + (-> arg1 dest 0) + :psm + (the-as int (-> arg1 psm)))) ;; mitptbp1 (set! (-> arg0 miptbp1) - (new 'static 'gs-miptbp - :tbp1 (-> arg1 dest 1) - :tbw1 (-> arg1 width 1) - :tbp2 (-> arg1 dest 2) - :tbw2 (-> arg1 width 2) - :tbp3 (-> arg1 dest 3) - :tbw3 (-> arg1 width 3) - ) - ) - + (new 'static + 'gs-miptbp + :tbp1 + (-> arg1 dest 1) + :tbw1 + (-> arg1 width 1) + :tbp2 + (-> arg1 dest 2) + :tbw2 + (-> arg1 width 2) + :tbp3 + (-> arg1 dest 3) + :tbw3 + (-> arg1 width 3))) ;; hack - if we have a lot of mips, set alpha to miptbp. ;; and modify the adgif thing to have a (miptbp2-1 54) (when (< (the-as uint 4) (-> arg1 num-mips)) - (set! (-> arg0 alpha-as-miptb2) - (new 'static 'gs-miptbp - :tbp1 (-> arg1 dest 4) - :tbw1 (-> arg1 width 4) - :tbp2 (-> arg1 dest 5) - :tbw2 (-> arg1 width 5) - :tbp3 (-> arg1 dest 6) - :tbw3 (-> arg1 width 6) - ) - ) - ;; 54 = (gs-reg miptbp2-1) - (set! (-> (&-> arg0 quad 4 vector4w z) 0) 54) - ) - arg0 - ) + (set! (-> arg0 alpha-as-miptb2) + (new 'static + 'gs-miptbp + :tbp1 + (-> arg1 dest 4) + :tbw1 + (-> arg1 width 4) + :tbp2 + (-> arg1 dest 5) + :tbw2 + (-> arg1 width 5) + :tbp3 + (-> arg1 dest 6) + :tbw3 + (-> arg1 width 6))) + ;; 54 = (gs-reg miptbp2-1) + (set! (-> (&-> arg0 quad 4 vector4w z) 0) 54)) + arg0) (defun adgif-shader-update! ((arg0 adgif-shader) (arg1 texture)) "Update tex1" (let ((s5-0 (the int (/ 256.0 (-> arg1 uv-dist)))) - (v1-2 (-> arg0 tex1 l)) - ) + (v1-2 (-> arg0 tex1 l))) (if (= v1-2 1) - (set! (-> arg0 tex1 k) - (+ (+ (logand (ash s5-0 (- 5 (log2 s5-0))) 31) -350) (* (log2 s5-0) 32)) - ) - (set! (-> arg0 tex1 k) - (+ (+ (logand (ash s5-0 (- 4 (log2 s5-0))) 15) -175) (* (log2 s5-0) 16)) - ) - ) - ) - (none) - ) + (set! (-> arg0 tex1 k) (+ (+ (logand (ash s5-0 (- 5 (log2 s5-0))) 31) -350) (* (log2 s5-0) 32))) + (set! (-> arg0 tex1 k) (+ (+ (logand (ash s5-0 (- 4 (log2 s5-0))) 15) -175) (* (log2 s5-0) 16))))) + (none)) ;; TODO adgif-shader<-texture-with-update! (def-mips2c adgif-shader<-texture-with-update! (function adgif-shader texture adgif-shader)) (defun adgif-shader-login ((shader adgif-shader)) "If not logged in already, link us and update from texture." - ;; only do it if we need to (when (logtest? (-> shader link-test) (link-test-flags needs-log-in)) (logclear! (-> shader link-test) (link-test-flags needs-log-in bit-9)) @@ -2408,14 +2004,10 @@ ;; grab our texture object (let ((tex (lookup-texture-by-id (-> shader texture-id)))) (if tex - (adgif-shader<-texture-with-update! shader tex) ;; success, update! - ;; nope, couldn't find the texture, complain. - (format 0 "login could not find texture ~X in shader ~X~%" (-> shader texture-id) shader) - ) - tex - ) - ) - ) + (adgif-shader<-texture-with-update! shader tex) ;; success, update! + ;; nope, couldn't find the texture, complain. + (format 0 "login could not find texture ~X in shader ~X~%" (-> shader texture-id) shader)) + tex))) (defun adgif-shader-login-no-remap ((arg0 adgif-shader)) "Same as adgif-shader-login, but don't remap our texture id" @@ -2424,13 +2016,9 @@ (link-texture-by-id (-> arg0 texture-id) arg0) (let ((s5-0 (lookup-texture-by-id (-> arg0 texture-id)))) (if s5-0 - (adgif-shader<-texture-with-update! arg0 s5-0) - (format 0 "login could not find texture ~X in shader ~X~%" (-> arg0 texture-id) arg0) - ) - s5-0 - ) - ) - ) + (adgif-shader<-texture-with-update! arg0 s5-0) + (format 0 "login could not find texture ~X in shader ~X~%" (-> arg0 texture-id) arg0)) + s5-0))) (defun adgif-shader-login-fast ((shader adgif-shader)) "Like adgif-shader-login, but assumes you've already logged in the texture" @@ -2439,68 +2027,32 @@ (logclear! (-> shader link-test) (link-test-flags needs-log-in bit-9)) (set! (-> shader texture-id) (level-remap-texture (-> shader texture-id))) (let ((tex-id (-> shader texture-id))) - (when (and (nonzero? (-> tex-id page)) - (< (the-as uint (-> tex-id page)) - (the-as uint (-> *texture-page-dir* length)) - ) - ) + (when (and (nonzero? (-> tex-id page)) (< (the-as uint (-> tex-id page)) (the-as uint (-> *texture-page-dir* length)))) ;; grab entry directly (let ((dir-entry (-> *texture-page-dir* entries (the-as uint (-> tex-id page))))) ;; and link this shader - (when (and (< (-> tex-id index) (the-as uint (-> dir-entry length))) - (-> dir-entry link) - ) + (when (and (< (-> tex-id index) (the-as uint (-> dir-entry length))) (-> dir-entry link)) ;; push (set! (-> shader next shader) (-> dir-entry link next (-> tex-id index) shader)) - (set! (-> dir-entry link next (-> tex-id index) shader) (shr (the-as uint shader) 4)) - ) - (when (and (-> dir-entry page) - (< (-> tex-id index) (the-as uint (-> dir-entry page length))) - ) + (set! (-> dir-entry link next (-> tex-id index) shader) (shr (the-as uint shader) 4))) + (when (and (-> dir-entry page) (< (-> tex-id index) (the-as uint (-> dir-entry page length)))) (let ((tex (-> dir-entry page data (-> tex-id index)))) ;; setup adgif. - (if tex - (adgif-shader<-texture-with-update! shader tex) - ) - tex - ) - ) - ) - ) - ) - ) - ) + (if tex (adgif-shader<-texture-with-update! shader tex)) + tex))))))) (defun adgif-shader-login-no-remap-fast ((arg0 adgif-shader)) "Like adgif-shader-login-fast, but no level remap" (when (logtest? (-> arg0 link-test) (link-test-flags needs-log-in)) (logclear! (-> arg0 link-test) (link-test-flags needs-log-in bit-9)) (let ((v1-4 (-> arg0 texture-id))) - (when (and (nonzero? (-> v1-4 page)) - (< (the-as uint (-> v1-4 page)) - (the-as uint (-> *texture-page-dir* length)) - ) - ) + (when (and (nonzero? (-> v1-4 page)) (< (the-as uint (-> v1-4 page)) (the-as uint (-> *texture-page-dir* length)))) (let ((a1-7 (-> *texture-page-dir* entries (the-as uint (-> v1-4 page))))) (when (and (< (-> v1-4 index) (the-as uint (-> a1-7 length))) (-> a1-7 link)) (set! (-> arg0 next shader) (-> a1-7 link next (-> v1-4 index) shader)) - (set! (-> a1-7 link next (-> v1-4 index) shader) (shr (the-as uint arg0) 4)) - ) - (when (and (-> a1-7 page) - (< (-> v1-4 index) (the-as uint (-> a1-7 page length))) - ) - (let ((gp-0 (-> a1-7 page data (-> v1-4 index)))) - (if gp-0 - (adgif-shader<-texture-with-update! arg0 gp-0) - ) - gp-0 - ) - ) - ) - ) - ) - ) - ) + (set! (-> a1-7 link next (-> v1-4 index) shader) (shr (the-as uint arg0) 4))) + (when (and (-> a1-7 page) (< (-> v1-4 index) (the-as uint (-> a1-7 page length)))) + (let ((gp-0 (-> a1-7 page data (-> v1-4 index)))) (if gp-0 (adgif-shader<-texture-with-update! arg0 gp-0)) gp-0))))))) ;; modified for PC port: never bother with the debug-mode texture login. ;; it will never work on PC, and it causes problems with custom levels, due to the way that it allocates the link @@ -2510,22 +2062,21 @@ (when (or (not *debug-segment*) PC_PORT) ;; when not debugging, use the "fast" logins. There's no way we can load a texture over the network anyway. (set! adgif-shader-login adgif-shader-login-fast) - (set! adgif-shader-login-no-remap adgif-shader-login-no-remap-fast) - ) + (set! adgif-shader-login-no-remap adgif-shader-login-no-remap-fast)) (defun adgif-shader<-texture-simple! ((arg0 adgif-shader) (arg1 texture)) (set! (-> arg0 tex1) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) (set! (-> arg0 tex0 tfx) 0) - #|(set! + #| +(set! (-> arg0 tex0) (the-as gs-tex0 (logand (the-as uint (-> arg0 tex0)) (the-as uint #xffffffe7ffffffff)) ) - )|# - (if arg1 - (adgif-shader<-texture! arg0 arg1) ) + |# + (if arg1 (adgif-shader<-texture! arg0 arg1)) (set! (-> arg0 clamp) (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) (set! (-> arg0 alpha) (new 'static 'gs-alpha :b #x1 :d #x1)) (set! (-> arg0 prims 1) (gs-reg64 tex0-1)) @@ -2533,114 +2084,58 @@ (set! (-> arg0 prims 5) (gs-reg64 miptbp1-1)) (set! (-> arg0 clamp-reg) (gs-reg64 clamp-1)) (set! (-> arg0 prims 9) (gs-reg64 alpha-1)) - arg0 - ) - - - - - - + arg0) (defun-debug texture-page-dir-inspect ((dir texture-page-dir) (mode symbol)) (format #t "[~8x] ~A~%" dir (-> dir type)) (let ((pool *texture-pool*)) - (format #t "~Ttexture pool (~DK used, ~DK free)~%" + (format #t + "~Ttexture pool (~DK used, ~DK free)~%" (/ (- (-> pool cur) (-> pool top)) 256) - (/ (- #xa0000 (-> pool cur)) 256) - ) - ) + (/ (- #xa0000 (-> pool cur)) 256))) (dotimes (level-idx (-> *level* length)) (let ((lev (-> *level* level level-idx))) - (if (= (-> lev status) 'active) - (texture-page-size-check *texture-pool* lev #f) - ) - ) - ) + (if (= (-> lev status) 'active) (texture-page-size-check *texture-pool* lev #f)))) (format #t "~Tlength: ~D~%" (-> dir length)) (format #t "~Tdata[~D]: @ #x~X~%" (-> dir length) (-> dir entries)) (dotimes (entry-idx (-> dir length)) (let ((entry-page (-> dir entries entry-idx page)) - (entry-link (-> dir entries entry-idx link)) - ) + (entry-link (-> dir entries entry-idx link))) (cond - (entry-page - (format - #t - "~T [~3D] loaded ~S ~A~%" - entry-idx - (if entry-link - " linked" - "unlinked" - ) - entry-page - ) - ) + (entry-page (format #t "~T [~3D] loaded ~S ~A~%" entry-idx (if entry-link " linked" "unlinked") entry-page)) (else - (if (= mode 'full) - (format - #t - "~T [~3D] unloaded ~S #~%" - entry-idx - (if entry-link - " linked" - "unlinked" - ) - (-> dir entries entry-idx length) - ) - ) - ) - ) + (if (= mode 'full) + (format #t + "~T [~3D] unloaded ~S #~%" + entry-idx + (if entry-link " linked" "unlinked") + (-> dir entries entry-idx length))))) (when (and (or entry-page entry-link) mode) (dotimes (entry-list-length (-> dir entries entry-idx length)) (cond - ((not entry-link) - (format #t "~T [~3D] unlinked" entry-list-length) - ) - ((zero? (-> entry-link next entry-list-length shader)) - (format #t "~T [~3D] UNUSED " entry-list-length) - ) + ((not entry-link) (format #t "~T [~3D] unlinked" entry-list-length)) + ((zero? (-> entry-link next entry-list-length shader)) (format #t "~T [~3D] UNUSED " entry-list-length)) (else - (let ((t9-9 format) - (a0-12 #t) - (a1-10 "~T [~3D] ~3D links ") - (a2-11 entry-list-length) - (a3-7 0) - ) - (let ((v1-40 (the-as object (* (-> entry-link next entry-list-length shader) 16)))) - (while (nonzero? (the-as uint v1-40)) - (nop!) - (+! a3-7 1) - (set! v1-40 (* (-> (the-as adgif-shader v1-40) next shader) 16)) - ) - ) - (t9-9 a0-12 a1-10 a2-11 a3-7) - ) - ) - ) + (let ((t9-9 format) + (a0-12 #t) + (a1-10 "~T [~3D] ~3D links ") + (a2-11 entry-list-length) + (a3-7 0)) + (let ((v1-40 (the-as object (* (-> entry-link next entry-list-length shader) 16)))) + (while (nonzero? (the-as uint v1-40)) + (nop!) + (+! a3-7 1) + (set! v1-40 (* (-> (the-as adgif-shader v1-40) next shader) 16)))) + (t9-9 a0-12 a1-10 a2-11 a3-7)))) (cond - ((not entry-page) - (format #t " unloaded~%") - ) - ((not (-> entry-page data entry-list-length)) - (format #t " empty~%") - ) - (else - (format #t " ~A~%" (-> entry-page data entry-list-length)) - ) - ) - ) - ) - ) - ) - (none) - ) + ((not entry-page) (format #t " unloaded~%")) + ((not (-> entry-page data entry-list-length)) (format #t " empty~%")) + (else (format #t " ~A~%" (-> entry-page data entry-list-length)))))))) + (none)) (defmethod inspect ((this texture-page-dir)) (texture-page-dir-inspect this #f) - this - ) - + this) (define *texture-pool* (new 'global 'texture-pool)) diff --git a/goal_src/jak1/engine/gfx/tfrag/tfrag-h.gc b/goal_src/jak1/engine/gfx/tfrag/tfrag-h.gc index 7db5397c79..a125c8ed4b 100644 --- a/goal_src/jak1/engine/gfx/tfrag/tfrag-h.gc +++ b/goal_src/jak1/engine/gfx/tfrag/tfrag-h.gc @@ -1,223 +1,174 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-tree-h.gc") (require "engine/draw/drawable-inline-array-h.gc") -;; name: tfrag-h.gc -;; name in dgo: tfrag-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; definition of type tfragment-stats (deftype tfragment-stats (structure) - ((num-tris uint16 4) - (num-dverts uint16 4) - ) - ) - + ((num-tris uint16 4) + (num-dverts uint16 4))) (deftype tfragment-debug-data (structure) - ((stats tfragment-stats :inline) - (debug-lines (array vector-array)) - ) - ) - + ((stats tfragment-stats :inline) + (debug-lines (array vector-array)))) (deftype generic-tfragment (structure) - ((dummy int32) - ) - ) - + ((dummy int32))) (deftype tfragment (drawable) - ((color-index uint16 :offset 6) - (debug-data tfragment-debug-data :offset 8) - (color-indices uint32 :offset 12) - (colors uint32 :overlay-at color-indices) - (dma-chain uint32 3) - (dma-common uint32 :overlay-at (-> dma-chain 0)) - (dma-level-0 uint32 :overlay-at (-> dma-chain 0)) - (dma-base uint32 :overlay-at (-> dma-chain 1)) - (dma-level-1 uint32 :overlay-at (-> dma-chain 2)) - (dma-qwc uint8 4 :offset 44) - (shader (inline-array adgif-shader) :offset 48) - (num-shaders uint8 :offset 52) - (num-base-colors uint8 :offset 53) - (num-level0-colors uint8 :offset 54) - (num-level1-colors uint8 :offset 55) - (color-offset uint8 :offset 56) - (color-count uint8 :offset 57) - (pad0 uint8 :offset 58) - (pad1 uint8 :offset 59) - (generic generic-tfragment) - (generic-u32 uint32 :overlay-at generic) - ) - ) - + ((color-index uint16 :offset 6) + (debug-data tfragment-debug-data :offset 8) + (color-indices uint32 :offset 12) + (colors uint32 :overlay-at color-indices) + (dma-chain uint32 3) + (dma-common uint32 :overlay-at (-> dma-chain 0)) + (dma-level-0 uint32 :overlay-at (-> dma-chain 0)) + (dma-base uint32 :overlay-at (-> dma-chain 1)) + (dma-level-1 uint32 :overlay-at (-> dma-chain 2)) + (dma-qwc uint8 4 :offset 44) + (shader (inline-array adgif-shader) :offset 48) + (num-shaders uint8 :offset 52) + (num-base-colors uint8 :offset 53) + (num-level0-colors uint8 :offset 54) + (num-level1-colors uint8 :offset 55) + (color-offset uint8 :offset 56) + (color-count uint8 :offset 57) + (pad0 uint8 :offset 58) + (pad1 uint8 :offset 59) + (generic generic-tfragment) + (generic-u32 uint32 :overlay-at generic))) (deftype drawable-inline-array-tfrag (drawable-inline-array) - ((data tfragment 1 :inline) - (pad uint32) - ) - ) + ((data tfragment 1 :inline) + (pad uint32))) (deftype drawable-inline-array-trans-tfrag (drawable-inline-array-tfrag) - ((data2 tfragment 1 :inline) - (pad2 uint32) - ) - ) + ((data2 tfragment 1 :inline) + (pad2 uint32))) (deftype drawable-tree-tfrag (drawable-tree) - ((time-of-day-pal time-of-day-palette :offset 12) - (arrays drawable-inline-array 1 :overlay-at (-> data 0)) - ) - ) + ((time-of-day-pal time-of-day-palette :offset 12) + (arrays drawable-inline-array 1 :overlay-at (-> data 0)))) -(deftype drawable-tree-trans-tfrag (drawable-tree-tfrag) - () - ) +(deftype drawable-tree-trans-tfrag (drawable-tree-tfrag) ()) -(deftype drawable-tree-dirt-tfrag (drawable-tree-tfrag) - () - ) +(deftype drawable-tree-dirt-tfrag (drawable-tree-tfrag) ()) -(deftype drawable-tree-ice-tfrag (drawable-tree-tfrag) - () - ) +(deftype drawable-tree-ice-tfrag (drawable-tree-tfrag) ()) -(deftype drawable-tree-lowres-tfrag (drawable-tree-tfrag) - () - ) +(deftype drawable-tree-lowres-tfrag (drawable-tree-tfrag) ()) -(deftype drawable-tree-lowres-trans-tfrag (drawable-tree-trans-tfrag) - () - ) +(deftype drawable-tree-lowres-trans-tfrag (drawable-tree-trans-tfrag) ()) (deftype tfrag-dists (structure) - ((data uint32 16) - (vector vector 4 :inline :overlay-at (-> data 0)) - (k0s vector 2 :inline :overlay-at (-> data 0)) - (k1s vector 2 :inline :overlay-at (-> data 8)) - ) - ) - + ((data uint32 16) + (vector vector 4 :inline :overlay-at (-> data 0)) + (k0s vector 2 :inline :overlay-at (-> data 0)) + (k1s vector 2 :inline :overlay-at (-> data 8)))) (deftype tfrag-data (structure) - ((data uint32 56 :offset 0) - (vector vector 14 :inline :overlay-at (-> data 0)) - (fog vector :inline :overlay-at (-> vector 0)) - (val vector :inline :overlay-at (-> vector 1)) - (strgif gs-gif-tag :inline :overlay-at (-> data 8)) - (fangif gs-gif-tag :inline :overlay-at (-> data 12)) - (adgif gs-gif-tag :inline :overlay-at (-> data 16)) - (hvdf-offset vector :inline :overlay-at (-> vector 5)) - (hmge-scale vector :inline :overlay-at (-> vector 6)) - (invh-scale vector :inline :overlay-at (-> vector 7)) - (ambient vector :inline :overlay-at (-> vector 8)) - (guard vector :inline :overlay-at (-> vector 9)) - (dists tfrag-dists :inline :overlay-at (-> data 40)) - (k0s uint128 2 :overlay-at (-> data 40)) - (k1s uint128 2 :overlay-at (-> data 48)) - ) - ) - + ((data uint32 56 :offset 0) + (vector vector 14 :inline :overlay-at (-> data 0)) + (fog vector :inline :overlay-at (-> vector 0)) + (val vector :inline :overlay-at (-> vector 1)) + (strgif gs-gif-tag :inline :overlay-at (-> data 8)) + (fangif gs-gif-tag :inline :overlay-at (-> data 12)) + (adgif gs-gif-tag :inline :overlay-at (-> data 16)) + (hvdf-offset vector :inline :overlay-at (-> vector 5)) + (hmge-scale vector :inline :overlay-at (-> vector 6)) + (invh-scale vector :inline :overlay-at (-> vector 7)) + (ambient vector :inline :overlay-at (-> vector 8)) + (guard vector :inline :overlay-at (-> vector 9)) + (dists tfrag-dists :inline :overlay-at (-> data 40)) + (k0s uint128 2 :overlay-at (-> data 40)) + (k1s uint128 2 :overlay-at (-> data 48)))) (deftype tfrag-control (structure) - ((num-base-points uint32) - (num-shared-base-points uint32) - (num-level0-points uint32) - (num-shared-level0-points uint32) - (num-level1-points uint32) - (num-shared-level1-points uint32) - (ptr-vtxdata uint32) - (ptr-base-points uint32) - (ptr-shared-base-points uint32) - (ptr-level0-points uint32) - (ptr-shared-level0-points uint32) - (ptr-level1-points uint32) - (ptr-shared-level1-points uint32) - (ptr-draw-points uint32) - (ptr-interpolated-0 uint32) - (ptr-shared-interpolated-0 uint32) - (ptr-interpolated1 uint32) - (ptr-shared-interpolated1 uint32) - (ptr-strip-data uint32) - (ptr-texture-data uint32) - ) - ) - + ((num-base-points uint32) + (num-shared-base-points uint32) + (num-level0-points uint32) + (num-shared-level0-points uint32) + (num-level1-points uint32) + (num-shared-level1-points uint32) + (ptr-vtxdata uint32) + (ptr-base-points uint32) + (ptr-shared-base-points uint32) + (ptr-level0-points uint32) + (ptr-shared-level0-points uint32) + (ptr-level1-points uint32) + (ptr-shared-level1-points uint32) + (ptr-draw-points uint32) + (ptr-interpolated-0 uint32) + (ptr-shared-interpolated-0 uint32) + (ptr-interpolated1 uint32) + (ptr-shared-interpolated1 uint32) + (ptr-strip-data uint32) + (ptr-texture-data uint32))) (deftype tfrag-stats (structure) - ((from int32) - (to int32) - (cnt int32) - (tris int32) - (tfaces int32) - (tfrags int32) - (dtris int32) - (base-verts int32) - (level0-verts int32) - (level1-verts int32) - (dma-cnt int32) - (dma-dta int32) - (dma-tex int32) - (strips int32) - (drawpoints int32) - (vif int32) - ) - ) - + ((from int32) + (to int32) + (cnt int32) + (tris int32) + (tfaces int32) + (tfrags int32) + (dtris int32) + (base-verts int32) + (level0-verts int32) + (level1-verts int32) + (dma-cnt int32) + (dma-dta int32) + (dma-tex int32) + (strips int32) + (drawpoints int32) + (vif int32))) (deftype tfrag-packet (structure) - ((tag uint128 2) - ) - ) - + ((tag uint128 2))) (deftype tfrag-work (structure) - ((base-tmpl dma-packet :inline) - (level-0-tmpl dma-packet :inline) - (common-tmpl dma-packet :inline) - (level-1-tmpl dma-packet :inline) - (color-tmpl dma-packet :inline) - (frag-dists vector :inline) - (max-dist vector :inline) - (min-dist vector :inline) - (color-ptr vector4w :inline) - (tr-stat-tfrag tr-stat) - (tr-stat-tfrag-near tr-stat) - (vu1-enable-tfrag int32) - (vu1-enable-tfrag-near int32) - (cur-vis-bits uint32) - (end-vis-bits uint32) - (src-ptr uint32) - (last-call uint32) - (dma-buffer basic) - (test-id uint32) - (wait-from-spr uint32) - (wait-to-spr uint32) - (near-wait-from-spr uint32) - (near-wait-to-spr uint32) - ) - ) - + ((base-tmpl dma-packet :inline) + (level-0-tmpl dma-packet :inline) + (common-tmpl dma-packet :inline) + (level-1-tmpl dma-packet :inline) + (color-tmpl dma-packet :inline) + (frag-dists vector :inline) + (max-dist vector :inline) + (min-dist vector :inline) + (color-ptr vector4w :inline) + (tr-stat-tfrag tr-stat) + (tr-stat-tfrag-near tr-stat) + (vu1-enable-tfrag int32) + (vu1-enable-tfrag-near int32) + (cur-vis-bits uint32) + (end-vis-bits uint32) + (src-ptr uint32) + (last-call uint32) + (dma-buffer basic) + (test-id uint32) + (wait-from-spr uint32) + (wait-to-spr uint32) + (near-wait-from-spr uint32) + (near-wait-to-spr uint32))) (deftype tfrag-dma (structure) - ((banka tfragment 16 :inline) - (bankb tfragment 16 :inline) - (outa uint128 128) - (outb uint128 128) - (colors rgba 2047) - ) - ) + ((banka tfragment 16 :inline) + (bankb tfragment 16 :inline) + (outa uint128 128) + (outb uint128 128) + (colors rgba 2047))) (define-extern *tfrag-work* tfrag-work) (define-extern draw-drawable-tree-tfrag (function drawable-tree-tfrag level none)) + (define-extern draw-drawable-tree-trans-tfrag (function drawable-tree-trans-tfrag level none)) + (define-extern draw-drawable-tree-dirt-tfrag (function drawable-tree-dirt-tfrag level none)) + (define-extern draw-drawable-tree-ice-tfrag (function drawable-tree-ice-tfrag level none)) -(define-extern tfrag-init-buffer (function dma-buffer gs-test int level none)) \ No newline at end of file + +(define-extern tfrag-init-buffer (function dma-buffer gs-test int level none)) diff --git a/goal_src/jak1/engine/gfx/tfrag/tfrag-methods.gc b/goal_src/jak1/engine/gfx/tfrag/tfrag-methods.gc index fc23c22931..086d33216a 100644 --- a/goal_src/jak1/engine/gfx/tfrag/tfrag-methods.gc +++ b/goal_src/jak1/engine/gfx/tfrag/tfrag-methods.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/debug/debug-h.gc") (require "engine/level/bsp.gc") (require "engine/gfx/tfrag/tfrag.gc") (require "engine/gfx/background/background.gc") (require "engine/collide/collide-shape-h.gc") -;; name: tfrag-methods.gc -;; name in dgo: tfrag-methods -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun edge-debug-lines ((arg0 (array vector-array))) @@ -23,23 +18,14 @@ (when (logtest? *display-strip-lines* (ash 1 s5-0)) (let ((s4-0 (-> arg0 s5-0))) (dotimes (s3-0 (/ (-> s4-0 length) 2)) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - (-> s4-0 data (* s3-0 2)) - (-> s4-0 data (+ (* s3-0 2) 1)) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - #f - (the-as rgba -1) - ) - ) - ) - ) - ) - ) - (none) - ) - + (add-debug-line #t + (bucket-id debug-no-zbuf) + (-> s4-0 data (* s3-0 2)) + (-> s4-0 data (+ (* s3-0 2) 1)) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) + #f + (the-as rgba -1))))))) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Tree Draw Functions @@ -50,21 +36,14 @@ ;; the background list. After draw is complete, the finish-background function will draw the trees with these ;; functions. - (defun draw-drawable-tree-tfrag ((arg0 drawable-tree-tfrag) (lev level)) "Draw the normal tfrag tree! Added the lev argument for time-of-day integer times" (local-vars (r0-0 none) (a0-20 int) (a0-22 int) (a0-38 int) (a0-40 int) (sv-16 (pointer uint8))) - - (when (logtest? *vu1-enable-user* (vu1-renderer-mask tfrag)) - ;; first, do draw node culling. ;; the culling is done in batches, doing all nodes at one depth before going to the enxt. ;; only arrays of draw nodes can be culled - tfragments themselves can't (they are the wrong size) - - (let ((s5-0 (+ (-> arg0 length) -1))) ;; get the number of trees with draw-nodes (see doc, the last one is always tfragments) - ;; TODO #| (when (nonzero? s5-0) ;; only if we have draw-nodes (levels like INT have only like 2 tfrags) @@ -87,70 +66,51 @@ ) ) ) - |# - + |# ;; draw, using the full list of all tfrags (not tree format) (let* ((v1-13 (the-as drawable-inline-array-tfrag (-> arg0 arrays s5-0))) (s4-1 (-> v1-13 data)) - (s3-0 (-> v1-13 length)) - ) - + (s3-0 (-> v1-13 length))) ;; pointer to vis data for the first tfrag (set! sv-16 (&-> (scratchpad-object terrain-context) work background vis-list (/ (-> s4-1 0 id) 8))) - ;; all DMA (let ((s5-1 (-> *display* frames (-> *display* on-screen) frame global-buf base))) ;; (format *stdcon* " #x~X~%" s5-1) ;; DMA for TFRAG (let* ((s1-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s2-0 (-> s1-0 base)) - ) - + (s2-0 (-> s1-0 base))) ;; clear stats (set! (-> *tfrag-work* wait-to-spr) (the-as uint 0)) (set! (-> *tfrag-work* wait-from-spr) (the-as uint 0)) - ;; initialize dma buffer - (tfrag-init-buffer - s1-0 - (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)) - 0 - lev - ) - + (tfrag-init-buffer s1-0 + (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)) + 0 + lev) ;; do the draw! (reset! (-> *perf-stats* data 5)) ;;(format 0 "DRAW: ~D~%" s3-0) ;; (draw-inline-array-tfrag sv-16 (the-as drawable-inline-array s4-1) s3-0 s1-0) (read! (-> *perf-stats* data 5)) - ;; update stats for the draw - (update-wait-stats (-> *perf-stats* data 5) (the-as uint 0) (-> *tfrag-work* wait-to-spr) (-> *tfrag-work* wait-from-spr)) - + (update-wait-stats (-> *perf-stats* data 5) + (the-as uint 0) + (-> *tfrag-work* wait-to-spr) + (-> *tfrag-work* wait-from-spr)) ;; finish dma buffer (tfrag-end-buffer s1-0) - ;; close dma packet (let ((a3-3 (-> s1-0 base))) (let ((v1-38 (the-as object (-> s1-0 base)))) (set! (-> (the-as dma-packet v1-38) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-38) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-38) vif1) (new 'static 'vif-tag)) - (set! (-> s1-0 base) (&+ (the-as pointer v1-38) 16)) - ) + (set! (-> s1-0 base) (&+ (the-as pointer v1-38) 16))) (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) - (the-as bucket-id (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) - (bucket-id tfrag-0) - (bucket-id tfrag-1) - ) - ) + (the-as bucket-id + (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) (bucket-id tfrag-0) (bucket-id tfrag-1))) s2-0 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - - + (the-as (pointer dma-tag) a3-3)))) ;; (format *stdcon* " #x~X~%" (-> *display* frames (-> *display* on-screen) frame global-buf base)) ;; DMA for TFRAG NEAR ; (let* ((s1-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) @@ -187,7 +147,6 @@ ; ) ; ) ; ) - ;; DMA memory stats (let ((v1-69 *dma-mem-usage*)) (when (nonzero? v1-69) @@ -195,29 +154,15 @@ (set! (-> v1-69 data 1 name) "tfragment") (+! (-> v1-69 data 1 count) 1) (+! (-> v1-69 data 1 used) (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s5-1))) - (set! (-> v1-69 data 1 total) (-> v1-69 data 1 used)) - ) - ) - ) - ) - ) - ) - (none) - ) - + (set! (-> v1-69 data 1 total) (-> v1-69 data 1 used)))))))) + (none)) (defun draw-drawable-tree-trans-tfrag ((arg0 drawable-tree-trans-tfrag) (lev level)) - (local-vars - (r0-0 none) - (a0-18 int) - (a0-20 int) - (a0-35 int) - (a0-37 int) - (sv-16 (pointer uint8)) - ) + (local-vars (r0-0 none) (a0-18 int) (a0-20 int) (a0-35 int) (a0-37 int) (sv-16 (pointer uint8))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-tfrag)) - (let ((s5-0 (+ (-> arg0 length) -1))) - #| TODO + (let ((s5-0 (+ (-> arg0 length) -1))) + #| + TODO (when (nonzero? s5-0) (dotimes (s4-0 s5-0) (let* ((v1-7 (-> arg0 arrays s4-0)) @@ -235,58 +180,48 @@ ) ) ) - ) |# - (let* ((v1-13 (-> arg0 arrays s5-0)) - (s5-1 (&+ v1-13 32)) - (s4-1 (-> v1-13 length)) - ) - (set! sv-16 (&-> (scratchpad-object terrain-context) work background vis-list (/ (-> s5-1 id) 8))) - (let* ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s3-0 (-> s2-0 base)) - ) - (set! (-> *tfrag-work* wait-to-spr) (the-as uint 0)) - (set! (-> *tfrag-work* wait-from-spr) (the-as uint 0)) - (tfrag-init-buffer - s2-0 - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x7e - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 1 - lev - ) - (reset! (-> *perf-stats* data 5)) - ;; (draw-inline-array-tfrag sv-16 s5-1 s4-1 s2-0) - (update-wait-stats (-> *perf-stats* data 5) (the-as uint 0) (-> *tfrag-work* wait-to-spr) (-> *tfrag-work* wait-from-spr)) - (read! (-> *perf-stats* data 5)) - (tfrag-end-buffer s2-0) - (let ((a3-3 (-> s2-0 base))) - (let ((v1-34 (the-as object (-> s2-0 base)))) - (set! (-> (the-as dma-packet v1-34) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-34) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-34) vif1) (new 'static 'vif-tag)) - (set! (-> s2-0 base) (&+ (the-as pointer v1-34) 16)) - ) - - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (the-as - bucket-id - (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) - (bucket-id tfrag-trans-0) - (bucket-id tfrag-trans-1) - ) - ) - s3-0 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - #| TODO + ) + |# + (let* ((v1-13 (-> arg0 arrays s5-0)) + (s5-1 (&+ v1-13 32)) + (s4-1 (-> v1-13 length))) + (set! sv-16 (&-> (scratchpad-object terrain-context) work background vis-list (/ (-> s5-1 id) 8))) + (let* ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s3-0 (-> s2-0 base))) + (set! (-> *tfrag-work* wait-to-spr) (the-as uint 0)) + (set! (-> *tfrag-work* wait-from-spr) (the-as uint 0)) + (tfrag-init-buffer s2-0 + (new 'static + 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x7e + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal)) + 1 + lev) + (reset! (-> *perf-stats* data 5)) + ;; (draw-inline-array-tfrag sv-16 s5-1 s4-1 s2-0) + (update-wait-stats (-> *perf-stats* data 5) + (the-as uint 0) + (-> *tfrag-work* wait-to-spr) + (-> *tfrag-work* wait-from-spr)) + (read! (-> *perf-stats* data 5)) + (tfrag-end-buffer s2-0) + (let ((a3-3 (-> s2-0 base))) + (let ((v1-34 (the-as object (-> s2-0 base)))) + (set! (-> (the-as dma-packet v1-34) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-34) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-34) vif1) (new 'static 'vif-tag)) + (set! (-> s2-0 base) (&+ (the-as pointer v1-34) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (the-as bucket-id + (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) (bucket-id tfrag-trans-0) (bucket-id tfrag-trans-1))) + s3-0 + (the-as (pointer dma-tag) a3-3)))) + #| + TODO (let* ((s2-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) (s3-1 (-> s2-1 base)) @@ -366,26 +301,17 @@ (the-as (pointer dma-tag) a3-6) ) ) - ) |# - ) - ) - ) - (none) - ) - + ) + |# + ))) + (none)) (defun draw-drawable-tree-dirt-tfrag ((arg0 drawable-tree-dirt-tfrag) (lev level)) - (local-vars - (r0-0 none) - (a0-18 int) - (a0-20 int) - (a0-35 int) - (a0-37 int) - (sv-16 (pointer uint8)) - ) + (local-vars (r0-0 none) (a0-18 int) (a0-20 int) (a0-35 int) (a0-37 int) (sv-16 (pointer uint8))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-tfrag)) - (let ((s5-0 (+ (-> arg0 length) -1))) - #| TODO + (let ((s5-0 (+ (-> arg0 length) -1))) + #| + TODO (when (nonzero? s5-0) (dotimes (s4-0 s5-0) (let* ((v1-7 (-> arg0 arrays s4-0)) @@ -419,52 +345,36 @@ ) ) ) - )|# - - (let* ((v1-13 (-> arg0 arrays s5-0)) - (s5-1 (&+ v1-13 32)) - (s4-1 (-> v1-13 length)) - ) - (set! sv-16 (&-> (scratchpad-object terrain-context) work background vis-list (/ (-> s5-1 id) 8))) - (let* ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s3-0 (-> s2-0 base)) - ) - (set! (-> *tfrag-work* wait-to-spr) (the-as uint 0)) - (set! (-> *tfrag-work* wait-from-spr) (the-as uint 0)) - (tfrag-init-buffer s2-0 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal)) 1 lev) - (reset! (-> *perf-stats* data 5)) - - ;; (draw-inline-array-tfrag sv-16 s5-1 s4-1 s2-0) - (update-wait-stats - (-> *perf-stats* data 5) - (the-as uint 0) - (-> *tfrag-work* wait-to-spr) - (-> *tfrag-work* wait-from-spr) - ) - (read! (-> *perf-stats* data 5)) - (tfrag-end-buffer s2-0) - (let ((a3-3 (-> s2-0 base))) - (let ((v1-34 (the-as object (-> s2-0 base)))) - (set! - (-> (the-as dma-packet v1-34) dma) - (new 'static 'dma-tag :id (dma-tag-id next)) - ) - (set! (-> (the-as dma-packet v1-34) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-34) vif1) (new 'static 'vif-tag)) - (set! (-> s2-0 base) (&+ (the-as pointer v1-34) 16)) - ) - (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) - (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) - (bucket-id tfrag-dirt-0) - (bucket-id tfrag-dirt-1) - ) - s3-0 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - - #| + ) + |# + (let* ((v1-13 (-> arg0 arrays s5-0)) + (s5-1 (&+ v1-13 32)) + (s4-1 (-> v1-13 length))) + (set! sv-16 (&-> (scratchpad-object terrain-context) work background vis-list (/ (-> s5-1 id) 8))) + (let* ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s3-0 (-> s2-0 base))) + (set! (-> *tfrag-work* wait-to-spr) (the-as uint 0)) + (set! (-> *tfrag-work* wait-from-spr) (the-as uint 0)) + (tfrag-init-buffer s2-0 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal)) 1 lev) + (reset! (-> *perf-stats* data 5)) + ;; (draw-inline-array-tfrag sv-16 s5-1 s4-1 s2-0) + (update-wait-stats (-> *perf-stats* data 5) + (the-as uint 0) + (-> *tfrag-work* wait-to-spr) + (-> *tfrag-work* wait-from-spr)) + (read! (-> *perf-stats* data 5)) + (tfrag-end-buffer s2-0) + (let ((a3-3 (-> s2-0 base))) + (let ((v1-34 (the-as object (-> s2-0 base)))) + (set! (-> (the-as dma-packet v1-34) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-34) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-34) vif1) (new 'static 'vif-tag)) + (set! (-> s2-0 base) (&+ (the-as pointer v1-34) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) (bucket-id tfrag-dirt-0) (bucket-id tfrag-dirt-1)) + s3-0 + (the-as (pointer dma-tag) a3-3)))) + #| (let* ((s2-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) (s3-1 (-> s2-1 base)) @@ -542,25 +452,17 @@ (the-as (pointer dma-tag) a3-6) ) ) - ) |# - ) - ) - ) - (none) - ) + ) + |# + ))) + (none)) (defun draw-drawable-tree-ice-tfrag ((arg0 drawable-tree-ice-tfrag) (lev level)) - (local-vars - (r0-0 none) - (a0-18 int) - (a0-20 int) - (a0-35 int) - (a0-37 int) - (sv-16 (pointer uint8)) - ) + (local-vars (r0-0 none) (a0-18 int) (a0-20 int) (a0-35 int) (a0-37 int) (sv-16 (pointer uint8))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-tfrag)) - (let ((s5-0 (+ (-> arg0 length) -1))) - #| TODO + (let ((s5-0 (+ (-> arg0 length) -1))) + #| + TODO (when (nonzero? s5-0) (dotimes (s4-0 s5-0) (let* ((v1-7 (-> arg0 arrays s4-0)) @@ -578,66 +480,39 @@ ) ) ) - )|# - (let* ((v1-13 (-> arg0 arrays s5-0)) - (s5-1 (&+ v1-13 32)) - (s4-1 (-> v1-13 length)) - ) - (set! sv-16 (&-> (scratchpad-object terrain-context) work background vis-list (/ (-> s5-1 id) 8)) - ) - (let* - ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s3-0 (-> s2-0 base)) - ) - (set! (-> *tfrag-work* wait-to-spr) (the-as uint 0)) - (set! (-> *tfrag-work* wait-from-spr) (the-as uint 0)) - (tfrag-init-buffer - s2-0 - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest always) - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - 1 - lev - ) - (reset! (-> *perf-stats* data 5)) - ;; (draw-inline-array-tfrag sv-16 s5-1 s4-1 s2-0) - (update-wait-stats - (-> *perf-stats* data 5) - (the-as uint 0) - (-> *tfrag-work* wait-to-spr) - (-> *tfrag-work* wait-from-spr) - ) - (read! (-> *perf-stats* data 5)) - (tfrag-end-buffer s2-0) - (let ((a3-3 (-> s2-0 base))) - (let ((v1-34 (the-as object (-> s2-0 base)))) - (set! - (-> (the-as dma-packet v1-34) dma) - (new 'static 'dma-tag :id (dma-tag-id next)) - ) - (set! (-> (the-as dma-packet v1-34) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-34) vif1) (new 'static 'vif-tag)) - (set! (-> s2-0 base) (&+ (the-as pointer v1-34) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (the-as - bucket-id - (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) - 36 - 43 - ) - ) - s3-0 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - #| + ) + |# + (let* ((v1-13 (-> arg0 arrays s5-0)) + (s5-1 (&+ v1-13 32)) + (s4-1 (-> v1-13 length))) + (set! sv-16 (&-> (scratchpad-object terrain-context) work background vis-list (/ (-> s5-1 id) 8))) + (let* ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s3-0 (-> s2-0 base))) + (set! (-> *tfrag-work* wait-to-spr) (the-as uint 0)) + (set! (-> *tfrag-work* wait-from-spr) (the-as uint 0)) + (tfrag-init-buffer s2-0 + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal)) + 1 + lev) + (reset! (-> *perf-stats* data 5)) + ;; (draw-inline-array-tfrag sv-16 s5-1 s4-1 s2-0) + (update-wait-stats (-> *perf-stats* data 5) + (the-as uint 0) + (-> *tfrag-work* wait-to-spr) + (-> *tfrag-work* wait-from-spr)) + (read! (-> *perf-stats* data 5)) + (tfrag-end-buffer s2-0) + (let ((a3-3 (-> s2-0 base))) + (let ((v1-34 (the-as object (-> s2-0 base)))) + (set! (-> (the-as dma-packet v1-34) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-34) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-34) vif1) (new 'static 'vif-tag)) + (set! (-> s2-0 base) (&+ (the-as pointer v1-34) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (the-as bucket-id (if (zero? (-> (scratchpad-object terrain-context) bsp lev-index)) 36 43)) + s3-0 + (the-as (pointer dma-tag) a3-3)))) + #| (let* ((s2-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) (s3-1 (-> s2-1 base)) @@ -716,298 +591,215 @@ (the-as (pointer dma-tag) a3-6) ) ) - ) |# - ) - ) - ) - (none) - ) + ) + |# + ))) + (none)) - ;; definition for method 10 of type drawable-tree-tfrag +;; definition for method 10 of type drawable-tree-tfrag ;; INFO: Return type mismatch drawable-tree-tfrag vs none. (defmethod draw ((this 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)) - ) - (set! (-> *background-work* tfrag-trees v1-1) this) - (set! (-> *background-work* tfrag-levels v1-1) a1-5) - ) + (a1-5 (-> *level* level a1-2))) + (set! (-> *background-work* tfrag-trees v1-1) this) + (set! (-> *background-work* tfrag-levels v1-1) a1-5)) (+! (-> *background-work* tfrag-tree-count) 1) - (none) - ) + (none)) ;; definition for method 10 of type drawable-tree-trans-tfrag ;; INFO: Return type mismatch drawable-tree-trans-tfrag vs none. (defmethod draw ((this 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)) - ) - (set! (-> *background-work* trans-tfrag-trees v1-1) this) - (set! (-> *background-work* trans-tfrag-levels v1-1) a1-5) - ) + (a1-5 (-> *level* level a1-2))) + (set! (-> *background-work* trans-tfrag-trees v1-1) this) + (set! (-> *background-work* trans-tfrag-levels v1-1) a1-5)) (+! (-> *background-work* trans-tfrag-tree-count) 1) - (none) - ) + (none)) ;; definition for method 10 of type drawable-tree-dirt-tfrag ;; INFO: Return type mismatch drawable-tree-dirt-tfrag vs none. (defmethod draw ((this 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)) - ) - (set! (-> *background-work* dirt-tfrag-trees v1-1) this) - (set! (-> *background-work* dirt-tfrag-levels v1-1) a1-5) - ) + (a1-5 (-> *level* level a1-2))) + (set! (-> *background-work* dirt-tfrag-trees v1-1) this) + (set! (-> *background-work* dirt-tfrag-levels v1-1) a1-5)) (+! (-> *background-work* dirt-tfrag-tree-count) 1) - (none) - ) + (none)) ;; definition for method 10 of type drawable-tree-ice-tfrag ;; INFO: Return type mismatch drawable-tree-ice-tfrag vs none. (defmethod draw ((this 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)) - ) - (set! (-> *background-work* ice-tfrag-trees v1-1) this) - (set! (-> *background-work* ice-tfrag-levels v1-1) a1-5) - ) + (a1-5 (-> *level* level a1-2))) + (set! (-> *background-work* ice-tfrag-trees v1-1) this) + (set! (-> *background-work* ice-tfrag-levels v1-1) a1-5)) (+! (-> *background-work* ice-tfrag-tree-count) 1) - (none) - ) + (none)) ;; definition for method 10 of type drawable-tree-lowres-tfrag ;; INFO: Return type mismatch drawable-tree-lowres-tfrag vs none. (defmethod draw ((this 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)) - ) - (set! (-> *background-work* lowres-tfrag-trees v1-1) this) - (set! (-> *background-work* lowres-tfrag-levels v1-1) a1-5) - ) + (a1-5 (-> *level* level a1-2))) + (set! (-> *background-work* lowres-tfrag-trees v1-1) this) + (set! (-> *background-work* lowres-tfrag-levels v1-1) a1-5)) (+! (-> *background-work* lowres-tfrag-tree-count) 1) - (none) - ) + (none)) ;; 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 +(defmethod draw drawable-tree-lowres-trans-tfrag ((this 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)) - ) - (set! (-> *background-work* lowres-trans-tfrag-trees v1-1) this) - (set! (-> *background-work* lowres-trans-tfrag-levels v1-1) a1-5) - ) + (a1-5 (-> *level* level a1-2))) + (set! (-> *background-work* lowres-trans-tfrag-trees v1-1) this) + (set! (-> *background-work* lowres-trans-tfrag-levels v1-1) a1-5)) (+! (-> *background-work* lowres-trans-tfrag-tree-count) 1) - (none) - ) + (none)) ;; definition for method 14 of type tfragment (defmethod collect-stats ((this tfragment)) (stats-tfrag-asm this) - (none) - ) + (none)) ;; definition for method 14 of type drawable-tree-tfrag ;; INFO: Return type mismatch drawable-tree-tfrag vs none. ;; Used lq/sq (defmethod collect-stats ((this drawable-tree-tfrag)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask tfrag)) - (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask tfrag)))) - (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask tfrag)))) - (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* tfrag)) - (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* tfrag-near)) - (let ((v1-12 (-> *tfrag-work* frag-dists quad))) - (set! (-> *tfrag-work* frag-dists quad) v1-12) - ) - (dotimes (s5-0 (-> this length)) - (collect-stats (-> this arrays s5-0)) - ) - ) - (none) - ) + (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask tfrag)))) + (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask tfrag)))) + (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* tfrag)) + (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* tfrag-near)) + (let ((v1-12 (-> *tfrag-work* frag-dists quad))) (set! (-> *tfrag-work* frag-dists quad) v1-12)) + (dotimes (s5-0 (-> this length)) + (collect-stats (-> this arrays s5-0)))) + (none)) ;; definition for method 14 of type drawable-tree-lowres-tfrag ;; INFO: Return type mismatch drawable-tree-lowres-tfrag vs none. ;; Used lq/sq (defmethod collect-stats ((this drawable-tree-lowres-tfrag)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask tfrag)) - (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask tfrag)))) - (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask tfrag)))) - (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* tfrag)) - (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* tfrag-near)) - (let ((v1-12 (-> *tfrag-work* frag-dists quad))) - (set! (-> *tfrag-work* frag-dists quad) v1-12) - ) - (dotimes (s5-0 (-> this length)) - (collect-stats (-> this arrays s5-0)) - ) - ) - (none) - ) + (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask tfrag)))) + (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask tfrag)))) + (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* tfrag)) + (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* tfrag-near)) + (let ((v1-12 (-> *tfrag-work* frag-dists quad))) (set! (-> *tfrag-work* frag-dists quad) v1-12)) + (dotimes (s5-0 (-> this length)) + (collect-stats (-> this arrays s5-0)))) + (none)) ;; definition for method 14 of type drawable-tree-trans-tfrag ;; INFO: Return type mismatch drawable-tree-trans-tfrag vs none. ;; Used lq/sq (defmethod collect-stats ((this drawable-tree-trans-tfrag)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-tfrag)) - (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) - (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) - (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* trans-tfrag)) - (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* trans-tfrag-near)) - (let ((v1-12 (-> *tfrag-work* frag-dists quad))) - (set! (-> *tfrag-work* frag-dists quad) v1-12) - ) - (dotimes (s5-0 (-> this length)) - (collect-stats (-> this arrays s5-0)) - ) - ) - (none) - ) + (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) + (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) + (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* trans-tfrag)) + (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* trans-tfrag-near)) + (let ((v1-12 (-> *tfrag-work* frag-dists quad))) (set! (-> *tfrag-work* frag-dists quad) v1-12)) + (dotimes (s5-0 (-> this length)) + (collect-stats (-> this arrays s5-0)))) + (none)) ;; definition for method 14 of type drawable-tree-lowres-trans-tfrag ;; INFO: Return type mismatch drawable-tree-lowres-trans-tfrag vs none. ;; Used lq/sq (defmethod collect-stats ((this drawable-tree-lowres-trans-tfrag)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-tfrag)) - (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) - (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) - (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* trans-tfrag)) - (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* trans-tfrag-near)) - (let ((v1-12 (-> *tfrag-work* frag-dists quad))) - (set! (-> *tfrag-work* frag-dists quad) v1-12) - ) - (dotimes (s5-0 (-> this length)) - (collect-stats (-> this arrays s5-0)) - ) - ) - (none) - ) + (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) + (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) + (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* trans-tfrag)) + (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* trans-tfrag-near)) + (let ((v1-12 (-> *tfrag-work* frag-dists quad))) (set! (-> *tfrag-work* frag-dists quad) v1-12)) + (dotimes (s5-0 (-> this length)) + (collect-stats (-> this arrays s5-0)))) + (none)) ;; definition for method 14 of type drawable-tree-dirt-tfrag ;; INFO: Return type mismatch drawable-tree-dirt-tfrag vs none. ;; Used lq/sq (defmethod collect-stats ((this drawable-tree-dirt-tfrag)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-tfrag)) - (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) - (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) - (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* trans-tfrag)) - (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* trans-tfrag-near)) - (let ((v1-12 (-> *tfrag-work* frag-dists quad))) - (set! (-> *tfrag-work* frag-dists quad) v1-12) - ) - (dotimes (s5-0 (-> this length)) - (collect-stats (-> this arrays s5-0)) - ) - ) - (none) - ) + (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) + (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) + (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* trans-tfrag)) + (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* trans-tfrag-near)) + (let ((v1-12 (-> *tfrag-work* frag-dists quad))) (set! (-> *tfrag-work* frag-dists quad) v1-12)) + (dotimes (s5-0 (-> this length)) + (collect-stats (-> this arrays s5-0)))) + (none)) ;; definition for method 14 of type drawable-tree-ice-tfrag ;; INFO: Return type mismatch drawable-tree-ice-tfrag vs none. ;; Used lq/sq (defmethod collect-stats ((this drawable-tree-ice-tfrag)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-tfrag)) - (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) - (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) - (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* trans-tfrag)) - (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* trans-tfrag-near)) - (let ((v1-12 (-> *tfrag-work* frag-dists quad))) - (set! (-> *tfrag-work* frag-dists quad) v1-12) - ) - (dotimes (s5-0 (-> this length)) - (collect-stats (-> this arrays s5-0)) - ) - ) - (none) - ) + (set! (-> *tfrag-work* vu1-enable-tfrag) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) + (set! (-> *tfrag-work* vu1-enable-tfrag-near) (the-as int (logand *vu1-enable-user* (vu1-renderer-mask trans-tfrag)))) + (set! (-> *tfrag-work* tr-stat-tfrag) (-> *terrain-stats* trans-tfrag)) + (set! (-> *tfrag-work* tr-stat-tfrag-near) (-> *terrain-stats* trans-tfrag-near)) + (let ((v1-12 (-> *tfrag-work* frag-dists quad))) (set! (-> *tfrag-work* frag-dists quad) v1-12)) + (dotimes (s5-0 (-> this length)) + (collect-stats (-> this arrays s5-0)))) + (none)) ;; definition for method 14 of type drawable-inline-array-tfrag ;; INFO: Return type mismatch drawable-inline-array-tfrag vs none. (defmethod collect-stats ((this drawable-inline-array-tfrag)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask tfrag)) - (dotimes (s5-0 (-> this length)) - (let ((s4-0 (-> this data s5-0))) - (if (vis-cull (-> s4-0 id)) - (collect-stats s4-0) - ) - ) - ) - ) - (none) - ) + (dotimes (s5-0 (-> this length)) + (let ((s4-0 (-> this data s5-0))) (if (vis-cull (-> s4-0 id)) (collect-stats s4-0))))) + (none)) ;; definition for method 14 of type drawable-inline-array-trans-tfrag ;; INFO: Return type mismatch drawable-inline-array-trans-tfrag vs none. (defmethod collect-stats ((this drawable-inline-array-trans-tfrag)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask trans-tfrag)) - (dotimes (s5-0 (-> this length)) - (let ((s4-0 (-> this data s5-0))) - (if (vis-cull (-> s4-0 id)) - (collect-stats s4-0) - ) - ) - ) - ) - (none) - ) + (dotimes (s5-0 (-> this length)) + (let ((s4-0 (-> this data s5-0))) (if (vis-cull (-> s4-0 id)) (collect-stats s4-0))))) + (none)) ;; definition for method 15 of type drawable-tree-tfrag ;; INFO: Return type mismatch drawable-tree-tfrag vs none. (defmethod debug-draw ((this drawable-tree-tfrag) (arg0 drawable) (arg1 display-frame)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask tfrag)) - (dotimes (s4-0 (-> this length)) - (let ((a1-1 (-> this arrays s4-0))) - (debug-draw a1-1 a1-1 arg1) - ) - ) - ) - (none) - ) + (dotimes (s4-0 (-> this length)) + (let ((a1-1 (-> this arrays s4-0))) (debug-draw a1-1 a1-1 arg1)))) + (none)) ;; definition for method 15 of type drawable-tree-trans-tfrag ;; INFO: Return type mismatch drawable-tree-trans-tfrag vs none. (defmethod debug-draw ((this drawable-tree-trans-tfrag) (arg0 drawable) (arg1 display-frame)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask tfrag)) - (dotimes (s4-0 (-> this length)) - (let ((a1-1 (-> this arrays s4-0))) - (debug-draw a1-1 a1-1 arg1) - ) - ) - ) - (none) - ) + (dotimes (s4-0 (-> this length)) + (let ((a1-1 (-> this arrays s4-0))) (debug-draw a1-1 a1-1 arg1)))) + (none)) ;; definition for method 15 of type drawable-inline-array-tfrag ;; INFO: Return type mismatch drawable-inline-array-tfrag vs none. -(defmethod - debug-draw - drawable-inline-array-tfrag +(defmethod debug-draw drawable-inline-array-tfrag ((this drawable-inline-array-tfrag) (arg0 drawable) (arg1 display-frame)) (dotimes (s4-0 (-> this length)) - (let ((s3-0 (-> this data s4-0))) - (if (vis-cull (-> s3-0 id)) - (debug-draw s3-0 s3-0 arg1) - ) - ) - ) - (none) - ) + (let ((s3-0 (-> this data s4-0))) (if (vis-cull (-> s3-0 id)) (debug-draw s3-0 s3-0 arg1)))) + (none)) ;; definition for method 15 of type tfragment (defmethod debug-draw ((this tfragment) (arg0 drawable) (arg1 display-frame)) (-> arg1 global-buf) (edge-debug-lines (-> this debug-data debug-lines)) - - (add-debug-sphere #t (bucket-id debug) (-> this bsphere) (-> this bsphere w) (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) + (add-debug-sphere #t + (bucket-id debug) + (-> this bsphere) + (-> this bsphere w) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) ;;(add-debug-x #t (bucket-id debug) (-> this bsphere) (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/tfrag/tfrag-near.gc b/goal_src/jak1/engine/gfx/tfrag/tfrag-near.gc index 0156d23933..8c820ec8c7 100644 --- a/goal_src/jak1/engine/gfx/tfrag/tfrag-near.gc +++ b/goal_src/jak1/engine/gfx/tfrag/tfrag-near.gc @@ -1,16 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/gfx/tfrag/tfrag-h.gc") (require "engine/math/matrix-h.gc") (require "engine/camera/cam-debug-h.gc") - -;; name: tfrag-near.gc -;; name in dgo: tfrag-near -;; dgos: GAME, ENGINE - (define tnear-vu1-block (new 'static 'vu-function :length #x0 :qlength #x0)) (defun-debug tfrag-details ((arg0 tfragment)) @@ -19,60 +13,30 @@ (format 0 "id = ~d~%" (-> arg0 id)) (format 0 "common:~%") (let ((s5-0 (-> arg0 dma-qwc 0)) - (s4-0 (-> arg0 dma-common)) - ) + (s4-0 (-> arg0 dma-common))) (format 0 "qwc = ~d, ref = ~x~%" s5-0 s4-0) - (disasm-vif-tag - (the-as (pointer vif-tag) s4-0) - (the-as int (* s5-0 4)) - (the-as symbol 0) - #t - ) - ) + (disasm-vif-tag (the-as (pointer vif-tag) s4-0) (the-as int (* s5-0 4)) (the-as symbol 0) #t)) (format 0 "base:~%") (let ((s5-1 (-> arg0 dma-qwc 1)) - (s4-1 (-> arg0 dma-base)) - ) + (s4-1 (-> arg0 dma-base))) (format 0 "qwc = ~d, ref = ~x~%" s5-1 s4-1) - (disasm-vif-tag - (the-as (pointer vif-tag) s4-1) - (the-as int (* s5-1 4)) - (the-as symbol 0) - #t - ) - ) + (disasm-vif-tag (the-as (pointer vif-tag) s4-1) (the-as int (* s5-1 4)) (the-as symbol 0) #t)) (format 0 "level-0:~%") (let ((s5-2 (-> arg0 dma-qwc 3)) - (s4-2 (-> (the-as (pointer uint32) arg0) 10)) - ) + (s4-2 (-> (the-as (pointer uint32) arg0) 10))) (format 0 "qwc = ~d, ref = ~x~%" s5-2 s4-2) - (disasm-vif-tag - (the-as (pointer vif-tag) s4-2) - (the-as int (* s5-2 4)) - (the-as symbol 0) - #t - ) - ) + (disasm-vif-tag (the-as (pointer vif-tag) s4-2) (the-as int (* s5-2 4)) (the-as symbol 0) #t)) (format 0 "level-1:~%") (let ((s5-3 (-> arg0 dma-qwc 2)) - (gp-1 (-> arg0 dma-level-1)) - ) + (gp-1 (-> arg0 dma-level-1))) (format 0 "qwc = ~d, ref = ~x~%" s5-3 gp-1) - (disasm-vif-tag - (the-as (pointer vif-tag) gp-1) - (the-as int (* s5-3 4)) - (the-as symbol 0) - #t - ) - ) - (none) - ) + (disasm-vif-tag (the-as (pointer vif-tag) gp-1) (the-as int (* s5-3 4)) (the-as symbol 0) #t)) + (none)) (defun-debug clip-restore () "Move the camera to a place in sandover" (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) 92648.22) (set! (-> a0-0 y) 238025.03) (set! (-> a0-0 z) 199836.31) @@ -93,7 +57,5 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) - (none) - ) \ No newline at end of file + (debug-set-camera-pos-rot! a0-0 a1-0)) + (none)) diff --git a/goal_src/jak1/engine/gfx/tfrag/tfrag-work.gc b/goal_src/jak1/engine/gfx/tfrag/tfrag-work.gc index 31bba3eac0..5d16d2b54f 100644 --- a/goal_src/jak1/engine/gfx/tfrag/tfrag-work.gc +++ b/goal_src/jak1/engine/gfx/tfrag/tfrag-work.gc @@ -1,61 +1,54 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/dma/dma-buffer.gc") (require "engine/math/vector-h.gc") (require "engine/gfx/tfrag/tfrag-h.gc") (require "kernel/gkernel.gc") -;; name: tfrag-work.gc -;; name in dgo: tfrag-work -;; dgos: GAME, ENGINE - ;; definition for symbol *tfrag-work*, type tfrag-work -(define - *tfrag-work* - (new 'static 'tfrag-work - :base-tmpl - (new 'static 'dma-packet - :dma - (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 - (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - ) - :level-0-tmpl - (new 'static 'dma-packet - :dma - (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 - (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - ) - :common-tmpl - (new 'static 'dma-packet - :dma - (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 - (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - ) - :level-1-tmpl - (new 'static 'dma-packet - :dma - (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 - (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)) - ) - :color-tmpl - (new 'static 'dma-packet - :dma - (new 'static 'dma-tag :id (dma-tag-id cnt)) - :vif0 - (new 'static 'vif-tag :imm #x102 :cmd (vif-cmd stcycl)) - :vif1 - (new 'static 'vif-tag :imm #xc000 :cmd (vif-cmd unpack-v4-8)) - ) - :max-dist (new 'static 'vector :z 4095996000.0) - ) - ) - +(define *tfrag-work* + (new 'static + 'tfrag-work + :base-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + :level-0-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + :common-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + :level-1-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) + :color-tmpl + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x102 :cmd (vif-cmd stcycl)) + :vif1 + (new 'static 'vif-tag :imm #xc000 :cmd (vif-cmd unpack-v4-8))) + :max-dist + (new 'static 'vector :z 4095996000.0))) ;; failed to figure out what this is: (set! (-> *tfrag-work* color-ptr x) (+ 6160 (the-as int *fake-scratchpad-data*))) diff --git a/goal_src/jak1/engine/gfx/tfrag/tfrag.gc b/goal_src/jak1/engine/gfx/tfrag/tfrag.gc index eea19e2e09..699f56a8dd 100644 --- a/goal_src/jak1/engine/gfx/tfrag/tfrag.gc +++ b/goal_src/jak1/engine/gfx/tfrag/tfrag.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/background/subdivide.gc") (require "engine/anim/joint.gc") (require "engine/gfx/background/background-h.gc") (require "engine/gfx/tfrag/tfrag-near.gc") -;; name: tfrag.gc -;; name in dgo: tfrag -;; dgos: GAME, ENGINE - ;; TFRAG drawing procedure ;; - when a level is loaded, it adds a connection from the bsp-header to the *background-draw-engine* with the add-bsp-drawable function. @@ -37,168 +32,114 @@ (defmethod login ((this tfragment)) "Initialize a tfragment by linking the textures in adgif shaders" (dotimes (s5-0 (the-as int (-> this num-shaders))) - (adgif-shader-login-no-remap (-> this shader s5-0)) - ) - this - ) + (adgif-shader-login-no-remap (-> this shader s5-0))) + this) (defmethod mem-usage ((this tfragment) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of a tfragment" - ;; seems like this flag does colors? (when (logtest? arg1 2) (+! (-> arg0 data 19 count) 1) (let ((v1-6 (+ (-> this num-base-colors) (-> this num-level0-colors) (-> this num-level1-colors)))) (+! (-> arg0 data 19 used) v1-6) - (+! (-> arg0 data 19 total) (logand -4 (+ v1-6 3))) - ) - (return this) - ) - + (+! (-> arg0 data 19 total) (logand -4 (+ v1-6 3)))) + (return this)) (let ((s4-0 1)) (set! (-> arg0 length) (max (-> arg0 length) (+ s4-0 8))) (set! (-> arg0 data s4-0 name) (symbol->string 'tfragment)) (+! (-> arg0 data s4-0 count) 1) - ;; the size of the actual tfragment (let ((v1-22 (asize-of this))) (+! (-> arg0 data s4-0 used) v1-22) - (+! (-> arg0 data s4-0 total) (logand -16 (+ v1-22 15))) - ) - + (+! (-> arg0 data s4-0 total) (logand -16 (+ v1-22 15)))) ;; the size of the "base" DMA (set! (-> arg0 data (+ s4-0 1) name) "tfragment-base") (+! (-> arg0 data (+ s4-0 1) count) 1) (let ((v1-33 (* (-> this dma-qwc 0) 16))) (+! (-> arg0 data (+ s4-0 1) used) v1-33) - (+! (-> arg0 data (+ s4-0 1) total) v1-33) - ) - + (+! (-> arg0 data (+ s4-0 1) total) v1-33)) ;; the size of the "common" DMA (set! (-> arg0 data (+ s4-0 2) name) "tfragment-common") (+! (-> arg0 data (+ s4-0 2) count) 1) (let ((v1-43 (* (- (-> this dma-qwc 1) (-> this dma-qwc 0)) 16))) (+! (-> arg0 data (+ s4-0 2) used) v1-43) - (+! (-> arg0 data (+ s4-0 2) total) v1-43) - ) - + (+! (-> arg0 data (+ s4-0 2) total) v1-43)) ;; the size of the "level0" DMA (set! (-> arg0 data (+ s4-0 3) name) "tfragment-level0") (when (nonzero? (-> this num-level0-colors)) (+! (-> arg0 data (+ s4-0 3) count) 1) (let ((v1-55 (* (- (-> this dma-qwc 2) (-> this dma-qwc 0)) 16))) (+! (-> arg0 data (+ s4-0 3) used) v1-55) - (+! (-> arg0 data (+ s4-0 3) total) v1-55) - ) - ) - + (+! (-> arg0 data (+ s4-0 3) total) v1-55))) ;; The size of the "level0" DMA. Note that the dma chains can overlap, so this is a bit weird. (set! (-> arg0 data (+ s4-0 4) name) "tfragment-level1") (when (not (or (= (-> this dma-level-1) (-> this dma-common)) (= (-> this dma-level-1) (-> this dma-base)) - (zero? (-> this num-level1-colors)) - ) - ) + (zero? (-> this num-level1-colors)))) (+! (-> arg0 data (+ s4-0 4) count) 1) - (let ((v1-70 - (* (- (-> this dma-qwc 3) - (the-as - uint - (- (/ (the-as int (- (-> this dma-level-1) (-> this dma-common))) 16) (the-as int (-> this dma-qwc 0))) - ) - ) - 16 - ) - ) - ) + (let ((v1-70 (* (- (-> this dma-qwc 3) + (the-as uint (- (/ (the-as int (- (-> this dma-level-1) (-> this dma-common))) 16) (the-as int (-> this dma-qwc 0))))) + 16))) (+! (-> arg0 data (+ s4-0 4) used) v1-70) - (+! (-> arg0 data (+ s4-0 4) total) v1-70) - ) - ) - + (+! (-> arg0 data (+ s4-0 4) total) v1-70))) ;; colors (set! (-> arg0 data (+ s4-0 5) name) "tfragment-color") (+! (-> arg0 data (+ s4-0 5) count) 1) - (let ((v1-79 - (if (logtest? arg1 1) - 0 - (the-as int (* (+ (-> this num-base-colors) (-> this num-level0-colors) (-> this num-level1-colors)) 2)) - ) - ) - ) + (let ((v1-79 (if (logtest? arg1 1) + 0 + (the-as int (* (+ (-> this num-base-colors) (-> this num-level0-colors) (-> this num-level1-colors)) 2))))) (+! (-> arg0 data (+ s4-0 5) used) v1-79) - (+! (-> arg0 data (+ s4-0 5) total) (logand -16 (+ v1-79 15))) - ) - + (+! (-> arg0 data (+ s4-0 5) total) (logand -16 (+ v1-79 15)))) ;; debug (unused) - (set! (-> arg0 data (+ s4-0 6) name) "tfragment-debug") - ) + (set! (-> arg0 data (+ s4-0 6) name) "tfragment-debug")) (label cfg-16) - this - ) + this) ;;;;;;;;;;;;;;;;;;;;;;; ;; tree/array methods ;;;;;;;;;;;;;;;;;;;;;;; -(defmethod inspect drawable-inline-array-tfrag ((this drawable-inline-array-tfrag)) +(defmethod inspect ((this drawable-inline-array-tfrag)) "Inspect an array of tfragments." (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tlength: ~D~%" (-> this length)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) (dotimes (s5-0 (-> this length)) - (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0)) - ) - this - ) + (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0))) + this) (defmethod login ((this drawable-inline-array-tfrag)) (dotimes (s5-0 (-> this length)) - (login (-> this data s5-0)) - ) - this - ) + (login (-> this data s5-0))) + this) (defmethod mem-usage ((this drawable-inline-array-tfrag) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) (defmethod mem-usage ((this drawable-tree-tfrag) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) "drawable-group") (+! (-> arg0 data 0 count) 1) - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 0 used) v1-6) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 0 used) v1-6) (+! (-> arg0 data 0 total) (logand -16 (+ v1-6 15)))) (when (nonzero? (-> this time-of-day-pal)) (set! (-> arg0 length) (max 9 (-> arg0 length))) (set! (-> arg0 data 8 name) "tfragment-pal") (+! (-> arg0 data 8 count) 1) (let ((v1-18 (asize-of (-> this time-of-day-pal)))) (+! (-> arg0 data 8 used) v1-18) - (+! (-> arg0 data 8 total) (logand -16 (+ v1-18 15))) - ) - ) + (+! (-> arg0 data 8 total) (logand -16 (+ v1-18 15))))) (dotimes (s3-0 (-> this length)) - (mem-usage (-> this arrays s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this arrays s3-0) arg0 arg1)) + this) (defmethod asize-of ((this drawable-inline-array-tfrag)) - (the-as int (+ (-> drawable-inline-array-tfrag size) (* (+ (-> this length) -1) 64))) - ) + (the-as int (+ (-> drawable-inline-array-tfrag size) (* (+ (-> this length) -1) 64)))) ;;;;;;;;;;;;;;;;;;;;;; ;; tfrag renderer @@ -217,134 +158,106 @@ (cond ((zero? *subdivide-draw-mode*) (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1))) (set! (-> arg0 fangif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1 :abe arg1)))) ((= *subdivide-draw-mode* 1) (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1))) (set! (-> arg0 fangif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)))) ((= *subdivide-draw-mode* 2) (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1))) (set! (-> arg0 fangif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :fge #x1 :abe arg1) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :fge #x1 :abe arg1))))) (set! (-> arg0 strgif regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 fangif regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) (set! (-> arg0 adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) (set! (-> arg0 hvdf-offset quad) (-> v1-0 hvdf-off quad)) (set! (-> arg0 hmge-scale quad) (-> v1-0 hmge-scale quad)) (set! (-> arg0 invh-scale quad) (-> v1-0 inv-hmge-scale quad)) - (set! (-> arg0 guard quad) (-> v1-0 guard quad)) - ) + (set! (-> arg0 guard quad) (-> v1-0 guard quad))) (set-tfrag-dists! (-> arg0 dists)) - (none) - ) + (none)) (defun add-tfrag-mtx-0 ((arg0 dma-buffer)) (let* ((a1-0 4) (v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd unpack-v4-32) :num a1-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (column-scale-matrix! - (the-as matrix (-> arg0 base)) - (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) - (-> *math-camera* camera-temp) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd unpack-v4-32) :num a1-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (column-scale-matrix! (the-as matrix (-> arg0 base)) + (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) + (-> *math-camera* camera-temp)) (&+! (-> arg0 base) 64) - (none) - ) + (none)) (defun add-tfrag-mtx-1 ((arg0 dma-buffer)) (let* ((a1-0 4) (v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x14d :cmd (vif-cmd unpack-v4-32) :num a1-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (column-scale-matrix! - (the-as matrix (-> arg0 base)) - (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) - (-> *math-camera* camera-temp) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x14d :cmd (vif-cmd unpack-v4-32) :num a1-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) + (column-scale-matrix! (the-as matrix (-> arg0 base)) + (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0) + (-> *math-camera* camera-temp)) (&+! (-> arg0 base) 64) - (none) - ) + (none)) (defun add-tfrag-data ((arg0 dma-buffer) (arg1 int)) (let* ((a2-0 14) (v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) + (a0-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-0)) (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> (the-as dma-packet a0-1) vif1) - (new 'static 'vif-tag :imm #x290 :cmd (vif-cmd unpack-v4-32) :num a2-0) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) + (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x290 :cmd (vif-cmd unpack-v4-32) :num a2-0)) + (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))) (tfrag-data-setup (the-as tfrag-data (-> arg0 base)) arg1) (&+! (-> arg0 base) 224) (let ((v1-3 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-packet v1-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet v1-3) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-3) vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1)) - (set! (-> arg0 base) (&+ (the-as pointer v1-3) 16)) - ) - (none) - ) + (set! (-> arg0 base) (&+ (the-as pointer v1-3) 16))) + (none)) (defun add-pc-tfrag3-data ((dma-buf dma-buffer) (lev level)) "Add PC-port specific tfrag data" @@ -352,9 +265,7 @@ (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 25)) (set! (-> packet vif0) (new 'static 'vif-tag)) (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) - (set! (-> dma-buf base) (the pointer (&+ packet 16))) - ) - + (set! (-> dma-buf base) (the pointer (&+ packet 16)))) ;; first 4 quadwords are planes, then itimes (let ((data-ptr (the-as (pointer uint128) (-> dma-buf base)))) (set! (-> data-ptr 0) (-> *math-camera* plane 0 quad)) @@ -373,24 +284,20 @@ (let ((vec (-> (the (inline-array vector) data-ptr) 13))) (set! (-> vec x) (-> *math-camera* pfog0)) (set! (-> vec y) (-> *math-camera* fog-min)) - (set! (-> vec z) (-> *math-camera* fog-max)) - ) + (set! (-> vec z) (-> *math-camera* fog-max))) (set! (-> data-ptr 14) (-> (math-camera-pos) quad)) (set! (-> data-ptr 15) (-> *math-camera* camera-rot vector 0 quad)) (set! (-> data-ptr 16) (-> *math-camera* camera-rot vector 1 quad)) (set! (-> data-ptr 17) (-> *math-camera* camera-rot vector 2 quad)) (set! (-> data-ptr 18) (-> *math-camera* camera-rot vector 3 quad)) - (set! (-> data-ptr 19) (-> *math-camera* perspective vector 0 quad)) (set! (-> data-ptr 20) (-> *math-camera* perspective vector 1 quad)) (set! (-> data-ptr 21) (-> *math-camera* perspective vector 2 quad)) (set! (-> data-ptr 22) (-> *math-camera* perspective vector 3 quad)) (if (<= 32 (length (symbol->string (bsp-name lev)))) - (format #t "level name ~a is too long!! must be shorter than 32 characters~%" (bsp-name lev))) - (charp<-string (the (pointer uint8) (&-> data-ptr 23)) (symbol->string (bsp-name lev))) - ) - (&+! (-> dma-buf base) (* 16 25)) - ) + (format #t "level name ~a is too long!! must be shorter than 32 characters~%" (bsp-name lev))) + (charp<-string (the (pointer uint8) (&-> data-ptr 23)) (symbol->string (bsp-name lev)))) + (&+! (-> dma-buf base) (* 16 25))) ;;;;;;;;;;;;;;;;;;;;; ;; TFRAG Stats @@ -417,18 +324,15 @@ (format arg0 "dma-dta:~8d (~8d)~%" (-> t-stat dma-dta) (/ (* 33 (-> t-stat dma-dta)) 10)) (let ((f0-4 (* 32.0 (the float (-> t-stat dma-cnt)))) (f1-5 (* 3.3 (the float (-> t-stat dma-dta)))) - (f2-3 (* 30.0 (the float (-> t-stat tfrags)))) - ) - (+ f0-4 f1-5 f2-3) - ) - ) - (none) - ) + (f2-3 (* 30.0 (the float (-> t-stat tfrags))))) + (+ f0-4 f1-5 f2-3))) + (none)) (set! (-> t-stat from) 0) + (set! (-> t-stat to) 0) -(set! (-> t-stat cnt) 0) +(set! (-> t-stat cnt) 0) ;;;;;;;;;;;;;;;;;;;;;;;; ;; buffer @@ -437,39 +341,31 @@ (defun tfrag-init-buffer ((arg0 dma-buffer) (arg1 gs-test) (arg2 int) (lev level)) (dma-buffer-add-vu-function arg0 tfrag-vu1-block 1) (let* ((v1-0 arg0) - (a0-2 (the-as object (-> v1-0 base))) - ) + (a0-2 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-2) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-2) 16))) (let* ((v1-1 arg0) - (a0-4 (the-as object (-> v1-1 base))) - ) + (a0-4 (the-as object (-> v1-1 base)))) (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16)) - ) + (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16))) (let* ((v1-2 arg0) - (a0-6 (-> v1-2 base)) - ) + (a0-6 (-> v1-2 base))) (set! (-> (the-as (pointer gs-test) a0-6) 0) arg1) (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ a0-6 16)) - ) + (set! (-> v1-2 base) (&+ a0-6 16))) (add-tfrag-mtx-0 arg0) (add-tfrag-mtx-1 arg0) (add-tfrag-data arg0 arg2) (#when PC_PORT - (add-pc-tfrag3-data arg0 lev) - ) + (add-pc-tfrag3-data arg0 lev)) (let ((v1-3 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-packet v1-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet v1-3) vif0) (new 'static 'vif-tag :cmd (vif-cmd base))) (set! (-> (the-as dma-packet v1-3) vif1) (new 'static 'vif-tag :imm #x148 :cmd (vif-cmd offset))) - (set! (-> arg0 base) (&+ (the-as pointer v1-3) 16)) - ) + (set! (-> arg0 base) (&+ (the-as pointer v1-3) 16))) (set! (-> *tfrag-work* last-call) (the-as uint 0)) (set! (-> t-stat cnt) 0) (set! (-> t-stat tris) 0) @@ -484,21 +380,17 @@ (set! (-> t-stat base-verts) 0) (set! (-> t-stat level0-verts) 0) (set! (-> t-stat level1-verts) 0) - (none) - ) + (none)) (defun tfrag-end-buffer ((arg0 dma-buffer)) (let* ((v1-0 arg0) - (a1-0 (the-as object (-> v1-0 base))) - ) + (a1-0 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd stmask))) (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag)) - (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))) (let* ((v1-1 arg0) - (a0-1 (-> v1-1 base)) - ) + (a0-1 (-> v1-1 base))) (set! (-> (the-as (pointer vif-tag) a0-1) 0) (the-as vif-tag (-> *tfrag-work* last-call))) (set! (-> (the-as (pointer vif-tag) a0-1) 1) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) (set! (-> (the-as (pointer vif-tag) a0-1) 2) (new 'static 'vif-tag :cmd (vif-cmd stmod))) @@ -511,10 +403,8 @@ (set! (-> (the-as (pointer vif-tag) a0-1) 9) (new 'static 'vif-tag :cmd (vif-cmd offset))) (set! (-> (the-as (pointer vif-tag) a0-1) 10) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> (the-as (pointer vif-tag) a0-1) 11) (new 'static 'vif-tag)) - (set! (-> v1-1 base) (&+ a0-1 48)) - ) - (none) - ) + (set! (-> v1-1 base) (&+ a0-1 48))) + (none)) ;;(define-extern draw-inline-array-tfrag (function pointer drawable-inline-array int dma-buffer none)) (def-mips2c draw-inline-array-tfrag (function pointer drawable-inline-array int dma-buffer none)) @@ -522,27 +412,21 @@ (defun tfrag-near-init-buffer ((arg0 dma-buffer) (arg1 gs-test) (arg2 int)) (dma-buffer-add-vu-function arg0 tnear-vu1-block 1) (let* ((v1-0 arg0) - (a0-2 (the-as object (-> v1-0 base))) - ) + (a0-2 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-2) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a0-2) 16))) (let* ((v1-1 arg0) - (a0-4 (the-as object (-> v1-1 base))) - ) + (a0-4 (the-as object (-> v1-1 base)))) (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16)) - ) + (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16))) (let* ((v1-2 arg0) - (a0-6 (-> v1-2 base)) - ) + (a0-6 (-> v1-2 base))) (set! (-> (the-as (pointer gs-test) a0-6) 0) arg1) (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ a0-6 16)) - ) + (set! (-> v1-2 base) (&+ a0-6 16))) (add-tfrag-mtx-0 arg0) (add-tfrag-mtx-1 arg0) (add-tfrag-data arg0 arg2) @@ -550,24 +434,19 @@ (set! (-> (the-as dma-packet v1-3) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet v1-3) vif0) (new 'static 'vif-tag :cmd (vif-cmd base))) (set! (-> (the-as dma-packet v1-3) vif1) (new 'static 'vif-tag :imm #x148 :cmd (vif-cmd offset))) - (set! (-> arg0 base) (&+ (the-as pointer v1-3) 16)) - ) + (set! (-> arg0 base) (&+ (the-as pointer v1-3) 16))) (set! (-> *tfrag-work* last-call) (the-as uint 0)) - (none) - ) + (none)) (defun tfrag-near-end-buffer ((arg0 dma-buffer)) (let* ((v1-0 arg0) - (a1-0 (the-as object (-> v1-0 base))) - ) + (a1-0 (the-as object (-> v1-0 base)))) (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd stmask))) (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag)) - (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16)) - ) + (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))) (let* ((v1-1 arg0) - (a0-1 (-> v1-1 base)) - ) + (a0-1 (-> v1-1 base))) (set! (-> (the-as (pointer uint32) a0-1)) (-> *tfrag-work* last-call)) (set! (-> (the-as (pointer vif-tag) a0-1) 1) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) (set! (-> (the-as (pointer vif-tag) a0-1) 2) (new 'static 'vif-tag :cmd (vif-cmd stmod))) @@ -580,10 +459,8 @@ (set! (-> (the-as (pointer vif-tag) a0-1) 9) (new 'static 'vif-tag :cmd (vif-cmd offset))) (set! (-> (the-as (pointer vif-tag) a0-1) 10) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) (set! (-> (the-as (pointer vif-tag) a0-1) 11) (new 'static 'vif-tag)) - (set! (-> v1-1 base) (&+ a0-1 48)) - ) - (none) - ) + (set! (-> v1-1 base) (&+ a0-1 48))) + (none)) (define-extern draw-inline-array-tfrag-near (function pointer drawable-inline-array int dma-buffer none)) diff --git a/goal_src/jak1/engine/gfx/tie/generic-tie-h.gc b/goal_src/jak1/engine/gfx/tie/generic-tie-h.gc index 2ce54171d0..ff6556ce01 100644 --- a/goal_src/jak1/engine/gfx/tie/generic-tie-h.gc +++ b/goal_src/jak1/engine/gfx/tie/generic-tie-h.gc @@ -1,210 +1,160 @@ - ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: generic-tie-h.gc -;; name in dgo: generic-tie-h -;; dgos: GAME, ENGINE - ;; Generic tie converts tie data to generic and supports environment mapping. ;; DECOMP BEGINS (deftype generic-tie-instance (structure) - ((matrix-tag dma-packet :inline) - (matrix-data vector 6 :inline) - (index-tag dma-packet :inline) - (indices uint8 224) - (end-tag dma-packet :inline) - ) - ) - + ((matrix-tag dma-packet :inline) + (matrix-data vector 6 :inline) + (index-tag dma-packet :inline) + (indices uint8 224) + (end-tag dma-packet :inline))) (deftype generic-tie-input (structure) - ((palette-tag dma-packet :inline) - (palette rgba 128) - (model-tag dma-packet :inline) - (model vector 146 :inline) - (matrix-tag dma-packet :inline) - (matrix-data vector 6 :inline) - (index-tag dma-packet :inline) - (indices uint8 224) - (end-tag dma-packet :inline) - ) - ) - + ((palette-tag dma-packet :inline) + (palette rgba 128) + (model-tag dma-packet :inline) + (model vector 146 :inline) + (matrix-tag dma-packet :inline) + (matrix-data vector 6 :inline) + (index-tag dma-packet :inline) + (indices uint8 224) + (end-tag dma-packet :inline))) (deftype generic-tie-run-control (structure) - ((skip-bp2 uint8) - (skip-ips uint8) - (gifbuf-skip uint8) - (strips uint8) - (target-bp1 uint8) - (target-bp2 uint8) - (target-ip1 uint8) - (target-ip2 uint8) - (target-bps uint8) - (target-ips uint8) - (is-generic uint8) - (reserved uint8) - ) - ) - + ((skip-bp2 uint8) + (skip-ips uint8) + (gifbuf-skip uint8) + (strips uint8) + (target-bp1 uint8) + (target-bp2 uint8) + (target-ip1 uint8) + (target-ip2 uint8) + (target-bps uint8) + (target-ips uint8) + (is-generic uint8) + (reserved uint8))) (deftype generic-tie-base-point (structure) - ((x int16) - (y int16) - (z int16) - (d0 int16) - (vtx uint64 :overlay-at x) - (u int16) - (v int16) - (tex uint32 :overlay-at u) - (w int16) - (d1 int16) - (data uint16 8 :overlay-at x) - (quad uint128 :overlay-at x) - ) - ) - + ((x int16) + (y int16) + (z int16) + (d0 int16) + (vtx uint64 :overlay-at x) + (u int16) + (v int16) + (tex uint32 :overlay-at u) + (w int16) + (d1 int16) + (data uint16 8 :overlay-at x) + (quad uint128 :overlay-at x))) (deftype generic-tie-bps (structure) - ((bp generic-tie-base-point 4 :inline) - ) - ) - + ((bp generic-tie-base-point 4 :inline))) (deftype generic-tie-interp-point (structure) - ((x int16) - (y int16) - (z int16) - (d0 int16) - (vtx0 uint64 :overlay-at x) - (dx int16) - (dy int16) - (dz int16) - (unused int16) - (vtx1 uint64 :overlay-at dx) - (u int16) - (v int16) - (tex uint32 :overlay-at u) - (w int16) - (d1 int16) - (data uint16 12 :overlay-at x) - ) - :pack-me - ) - + ((x int16) + (y int16) + (z int16) + (d0 int16) + (vtx0 uint64 :overlay-at x) + (dx int16) + (dy int16) + (dz int16) + (unused int16) + (vtx1 uint64 :overlay-at dx) + (u int16) + (v int16) + (tex uint32 :overlay-at u) + (w int16) + (d1 int16) + (data uint16 12 :overlay-at x)) + :pack-me) (deftype generic-tie-ips (structure) - ((ip generic-tie-interp-point 2 :inline) - ) - ) - + ((ip generic-tie-interp-point 2 :inline))) (deftype generic-tie-header (structure) - ((effect uint8) - (interp-table-size uint8) - (num-bps uint8) - (num-ips uint8) - (tint-color uint32) - (index-table-offset uint16) - (kick-table-offset uint16) - (normal-table-offset uint16) - (interp-table-offset uint16) - (gsf-header gsf-header :inline) - ) - ) - + ((effect uint8) + (interp-table-size uint8) + (num-bps uint8) + (num-ips uint8) + (tint-color uint32) + (index-table-offset uint16) + (kick-table-offset uint16) + (normal-table-offset uint16) + (interp-table-offset uint16) + (gsf-header gsf-header :inline))) (deftype generic-tie-matrix (structure) - ((matrix matrix :inline) - (morph vector :inline) - (fog qword :inline) - ) - ) - + ((matrix matrix :inline) + (morph vector :inline) + (fog qword :inline))) (deftype generic-tie-normal (structure) - ((x int8) - (y int8) - (z int8) - (dummy int8) - ) - ) - + ((x int8) + (y int8) + (z int8) + (dummy int8))) (deftype generic-tie-control (structure) - ((ptr-palette uint32) - (ptr-shaders uint32) - (ptr-runctrl generic-tie-run-control) - (ptr-verts uint32) - (ptr-generic generic-tie-header) - (ptr-dps uint32) - (ptr-kicks uint32) - (ptr-normals uint32) - (ptr-interp uint32) - (ptr-mtxs generic-tie-matrix) - (ptr-cinds uint32) - (next-instance uint32) - (next-model uint32) - (next-is-model uint32) - (tie-type uint32) - ) - ) - + ((ptr-palette uint32) + (ptr-shaders uint32) + (ptr-runctrl generic-tie-run-control) + (ptr-verts uint32) + (ptr-generic generic-tie-header) + (ptr-dps uint32) + (ptr-kicks uint32) + (ptr-normals uint32) + (ptr-interp uint32) + (ptr-mtxs generic-tie-matrix) + (ptr-cinds uint32) + (next-instance uint32) + (next-model uint32) + (next-is-model uint32) + (tie-type uint32))) (deftype generic-tie-stats (structure) - ((num-bps uint32) - (num-ips uint32) - (num-dps uint32) - (num-shaders uint32) - (num-models uint32) - (num-instances uint32) - (num-waits uint32) - (num-qwc uint32) - (max-qwc uint32) - ) - ) - + ((num-bps uint32) + (num-ips uint32) + (num-dps uint32) + (num-shaders uint32) + (num-models uint32) + (num-instances uint32) + (num-waits uint32) + (num-qwc uint32) + (max-qwc uint32))) (deftype generic-tie-calls (structure) - ((generic-prepare-dma-double basic) - (generic-envmap-dproc basic) - (generic-interp-dproc basic) - (generic-no-light-dproc basic) - ) - :pack-me - ) - + ((generic-prepare-dma-double basic) + (generic-envmap-dproc basic) + (generic-interp-dproc basic) + (generic-no-light-dproc basic)) + :pack-me) (deftype generic-tie-shadow (structure) - ((out-buf gsf-buffer) - (cur-buf uint32) - (tie-type int32) - (ptr-inst uint32) - (ptr-buf uint32) - (inst-xor int32) - (end-of-chain uint32) - (write-limit uint32) - (calls generic-tie-calls :inline) - ) - :pack-me - ) - + ((out-buf gsf-buffer) + (cur-buf uint32) + (tie-type int32) + (ptr-inst uint32) + (ptr-buf uint32) + (inst-xor int32) + (end-of-chain uint32) + (write-limit uint32) + (calls generic-tie-calls :inline)) + :pack-me) (deftype generic-tie-work (structure) - ((control generic-tie-control :inline) - (interp-job generic-interp-job :inline) - (shadow generic-tie-shadow :inline) - (input-a generic-tie-input :inline) - (input-b generic-tie-input :inline) - (inst-buf generic-tie-instance :inline) - (palette-buf rgba 128) - ) - ) + ((control generic-tie-control :inline) + (interp-job generic-interp-job :inline) + (shadow generic-tie-shadow :inline) + (input-a generic-tie-input :inline) + (input-b generic-tie-input :inline) + (inst-buf generic-tie-instance :inline) + (palette-buf rgba 128))) (define-extern generic-tie-execute (function generic-dma-foreground-sink dma-buffer basic none)) diff --git a/goal_src/jak1/engine/gfx/tie/tie-h.gc b/goal_src/jak1/engine/gfx/tie/tie-h.gc index 5cef4813d9..3e4dbd8302 100644 --- a/goal_src/jak1/engine/gfx/tie/tie-h.gc +++ b/goal_src/jak1/engine/gfx/tie/tie-h.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/background/prototype-h.gc") (require "engine/draw/drawable-tree-h.gc") (require "engine/draw/drawable-inline-array-h.gc") -;; name: tie-h.gc -;; name in dgo: tie-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; The TIE FRAGMENT is a record for a chunk of TIE DMA data. @@ -17,163 +12,145 @@ ;; to the actual data. ;; Unlike with tfrag, tie-fragments aren't part of the draw-node tree - instead they are associated with a prototype. (deftype tie-fragment (drawable) - ((gif-ref (inline-array adgif-shader) :overlay-at id) - (point-ref uint32 :offset 8) - (color-index uint16 :offset 12) - (base-colors uint8 :offset 14) - (tex-count uint16) - (gif-count uint16) - (vertex-count uint16) - (color-count uint16) - (num-tris uint16) - (num-dverts uint16) - (dp-ref uint32) - (dp-qwc uint32) - (generic-ref uint32) - (generic-count uint32) - (debug-lines (array vector-array)) - ) - ) + ((gif-ref (inline-array adgif-shader) :overlay-at id) + (point-ref uint32 :offset 8) + (color-index uint16 :offset 12) + (base-colors uint8 :offset 14) + (tex-count uint16) + (gif-count uint16) + (vertex-count uint16) + (color-count uint16) + (num-tris uint16) + (num-dverts uint16) + (dp-ref uint32) + (dp-qwc uint32) + (generic-ref uint32) + (generic-count uint32) + (debug-lines (array vector-array)))) ;; This is a specialization of the shared instance type for a TIE. ;; It is the child node type in the draw-node BVH tree. (deftype instance-tie (instance) - ((color-indices uint32 :overlay-at error) - (bucket-ptr prototype-bucket-tie :offset 12) - (max-scale uint16 :overlay-at (-> origin data 3)) - (flags uint16 :overlay-at (-> origin data 7)) - ) - ) + ((color-indices uint32 :overlay-at error) + (bucket-ptr prototype-bucket-tie :offset 12) + (max-scale uint16 :overlay-at (-> origin data 3)) + (flags uint16 :overlay-at (-> origin data 7)))) ;; Wrapper class for lists of consecutive instances. ;; This is equivalent to drawable-inline-array-tfrag of tfrag. (deftype drawable-inline-array-instance-tie (drawable-inline-array) - ((data instance-tie 1 :inline) - (pad uint32) - ) - ) + ((data instance-tie 1 :inline) + (pad uint32))) ;; Top-level drawable tree for TIE instances. ;; this is also a drawable-group, so it has a data array containing drawables. ;; based on the login methods it seems like the data field has all the drawables. (deftype drawable-tree-instance-tie (drawable-tree) - ((prototypes proxy-prototype-array-tie :offset 8) - ) - ) + ((prototypes proxy-prototype-array-tie :offset 8))) ;; Wrapper class for lists of consecutive prototypes. ;; It's not known if these are proper draw-node BVH trees. ;; you could imagine it being for things with only one instance (like generic stuff?) (deftype prototype-tie (drawable-inline-array) - ((data tie-fragment 1 :inline) - (pad uint32) - ) - ) + ((data tie-fragment 1 :inline) + (pad uint32))) ;; The actual matrix type we will upload to VU1 per instance. (deftype tie-matrix (structure) - ((mat matrix :inline) - (morph qword :inline) - (fog qword :inline) - ) - ) + ((mat matrix :inline) + (morph qword :inline) + (fog qword :inline))) ;; Temps used in the instance drawing asm functions (deftype instance-tie-work (structure) - ((wind-const vector :inline) - (hmge-d vector :inline) - (hvdf-offset vector :inline) - (wind-force vector :inline) - (constant vector :inline) - (far-morph vector :inline) - (dist-test vector :inline) - (min-dist vector :inline) - (guard-plane plane 4 :inline) - (upload-color-0 dma-packet :inline) - (upload-color-1 dma-packet :inline) - (upload-color-2 dma-packet :inline) - (upload-color-ret dma-packet :inline) - (upload-color-temp dma-packet :inline) - (generic-color-0 dma-packet :inline) - (generic-color-1 dma-packet :inline) - (generic-color-end dma-packet :inline) - (tie-near-perspective-matrix matrix :inline) - (wind-vectors uint32) - (test-id uint32) - (test-id2 uint32) - (dma-buffer basic) - (to-spr uint32) - (from-spr uint32) - (wind-work uint32) - (cur-vis-bits uint32) - (end-vis-bits uint32) - (first-generic-prototype uint32) - (refl-fade-fac float) - (refl-fade-end float) - (flags uint32) - (paused basic) - (wait-from-spr uint32) - (wait-to-spr uint32) - ) - ) + ((wind-const vector :inline) + (hmge-d vector :inline) + (hvdf-offset vector :inline) + (wind-force vector :inline) + (constant vector :inline) + (far-morph vector :inline) + (dist-test vector :inline) + (min-dist vector :inline) + (guard-plane plane 4 :inline) + (upload-color-0 dma-packet :inline) + (upload-color-1 dma-packet :inline) + (upload-color-2 dma-packet :inline) + (upload-color-ret dma-packet :inline) + (upload-color-temp dma-packet :inline) + (generic-color-0 dma-packet :inline) + (generic-color-1 dma-packet :inline) + (generic-color-end dma-packet :inline) + (tie-near-perspective-matrix matrix :inline) + (wind-vectors uint32) + (test-id uint32) + (test-id2 uint32) + (dma-buffer basic) + (to-spr uint32) + (from-spr uint32) + (wind-work uint32) + (cur-vis-bits uint32) + (end-vis-bits uint32) + (first-generic-prototype uint32) + (refl-fade-fac float) + (refl-fade-end float) + (flags uint32) + (paused basic) + (wait-from-spr uint32) + (wait-to-spr uint32))) ;; DMA storage for instance dma generation (mapped to scratchpad) (deftype instance-tie-dma (structure) - ((banka instance-tie 32 :inline) - (bankb instance-tie 32 :inline) - (outa uint128 256) - (outb uint128 256) - (work instance-tie-work :dynamic) - ) - ) + ((banka instance-tie 32 :inline) + (bankb instance-tie 32 :inline) + (outa uint128 256) + (outb uint128 256) + (work instance-tie-work :dynamic))) ;; temps used in the prototype drawing (deftype prototype-tie-work (structure) - ((upload-palette-0 dma-packet :inline) - (upload-palette-1 dma-packet :inline) - (upload-model-0 dma-packet :inline) - (upload-model-1 dma-packet :inline) - (upload-model-2 dma-packet :inline) - (upload-model-3 dma-packet :inline) - (upload-model-near-0 dma-packet :inline) - (upload-model-near-1 dma-packet :inline) - (upload-model-near-2 dma-packet :inline) - (upload-model-near-3 dma-packet :inline) - (upload-model-near-4 dma-packet :inline) - (generic-envmap-shader dma-packet :inline) - (generic-palette dma-packet :inline) - (generic-model-0 dma-packet :inline) - (generic-model-1 dma-packet :inline) - (generic-model-2 dma-packet :inline) - (generic-model-next dma-packet :inline) - (clamp uint64) - (prototype-array basic) - (generic-wait-from-spr uint32) - (generic-wait-to-spr uint32) - (wait-from-spr uint32) - (wait-to-spr uint32) - (near-wait-from-spr uint32) - (near-wait-to-spr uint32) - ) - ) + ((upload-palette-0 dma-packet :inline) + (upload-palette-1 dma-packet :inline) + (upload-model-0 dma-packet :inline) + (upload-model-1 dma-packet :inline) + (upload-model-2 dma-packet :inline) + (upload-model-3 dma-packet :inline) + (upload-model-near-0 dma-packet :inline) + (upload-model-near-1 dma-packet :inline) + (upload-model-near-2 dma-packet :inline) + (upload-model-near-3 dma-packet :inline) + (upload-model-near-4 dma-packet :inline) + (generic-envmap-shader dma-packet :inline) + (generic-palette dma-packet :inline) + (generic-model-0 dma-packet :inline) + (generic-model-1 dma-packet :inline) + (generic-model-2 dma-packet :inline) + (generic-model-next dma-packet :inline) + (clamp uint64) + (prototype-array basic) + (generic-wait-from-spr uint32) + (generic-wait-to-spr uint32) + (wait-from-spr uint32) + (wait-to-spr uint32) + (near-wait-from-spr uint32) + (near-wait-to-spr uint32))) ;; DMA storage for prototype dma generation (mapped to scratchpad) (deftype prototype-tie-dma (structure) - ((colora rgba 256) - (colorb rgba 256) - (outa uint128 256) - (outb uint128 256) - (length uint32) - (dma-buffer basic) - (this-frag-count uint32) - (next uint32 4 :offset 10256) - (geometry uint32 4) - (frag-count uint8 4) - ) - ) - + ((colora rgba 256) + (colorb rgba 256) + (outa uint128 256) + (outb uint128 256) + (length uint32) + (dma-buffer basic) + (this-frag-count uint32) + (next uint32 4 :offset 10256) + (geometry uint32 4) + (frag-count uint8 4))) (define *instance-tie-work-copy* (the-as instance-tie-work #f)) + (define-extern *instance-tie-work* instance-tie-work) + (define-extern tie-near-make-perspective-matrix (function matrix matrix)) + (define-extern draw-drawable-tree-instance-tie (function drawable-tree-instance-tie level none)) diff --git a/goal_src/jak1/engine/gfx/tie/tie-methods.gc b/goal_src/jak1/engine/gfx/tie/tie-methods.gc index 7caa480ff6..1c5399c144 100644 --- a/goal_src/jak1/engine/gfx/tie/tie-methods.gc +++ b/goal_src/jak1/engine/gfx/tie/tie-methods.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/tie/tie.gc") (require "engine/gfx/background/wind-h.gc") (require "engine/level/bsp.gc") @@ -13,12 +12,8 @@ (require "engine/collide/collide-shape-h.gc") (require "engine/gfx/tie/tie-work.gc") (require "engine/gfx/background/subdivide.gc") - -;; name: tie-methods.gc -;; name in dgo: tie-methods -;; dgos: GAME, ENGINE - (def-mips2c draw-inline-array-instance-tie (function pointer (inline-array instance-tie) int dma-buffer none)) + (def-mips2c draw-inline-array-prototype-tie-generic-asm (function dma-buffer int prototype-array-tie none)) ;; DECOMP BEGINS @@ -30,54 +25,37 @@ (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) (set! (-> dma-buf base) (the pointer (&+ packet 16))) (set! (-> (the (pointer uint128) (-> dma-buf base))) - (if (and *time-of-day-context* - (nonzero? *time-of-day-context*)) - (-> *time-of-day-context* current-sun env-color quad) - (the uint128 0) - ) - ) - (set! (-> dma-buf base) (the pointer (&+ packet 32))) - ) - ) + (if (and *time-of-day-context* (nonzero? *time-of-day-context*)) + (-> *time-of-day-context* current-sun env-color quad) + (the uint128 0))) + (set! (-> dma-buf base) (the pointer (&+ packet 32))))) (defun tie-init-buffers ((arg0 dma-buffer)) "Initialize the TIE buckets. Note: the buffer passed in here is _not_ used. this function should be called _after_ all TIE drawing is done. It will skip setup if there is nothing drawn." - ;; the TIE buckets are only used by TIE - so we can safely splice things at the beginning/end without ;; messing things up. (let ((gp-0 (-> *display* frames (-> *display* on-screen) frame bucket-group (bucket-id tie-0)))) ;; only if we have something in the bucket. (when (!= gp-0 (-> gp-0 last)) (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s4-1 (-> s5-0 base)) - ) + (s4-1 (-> s5-0 base))) ;; add initialization data - (tie-init-engine - s5-0 - (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal)) - 0 - ) + (tie-init-engine s5-0 (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal)) 0) ;; patch to the start (let ((v1-8 (the-as object (-> s5-0 base)))) (set! (-> (the-as dma-packet v1-8) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> gp-0 next))) (set! (-> (the-as dma-packet v1-8) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-8) vif1) (new 'static 'vif-tag)) - (set! (-> s5-0 base) (&+ (the-as pointer v1-8) 16)) - ) - (set! (-> gp-0 next) (the-as uint s4-1)) - ) - ) - ) - + (set! (-> s5-0 base) (&+ (the-as pointer v1-8) 16))) + (set! (-> gp-0 next) (the-as uint s4-1))))) (let ((gp-1 (-> *display* frames (-> *display* on-screen) frame bucket-group (bucket-id tie-0)))) ;; only if we have something in teh bucket (when (!= gp-1 (-> gp-1 last)) (let* ((s4-2 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s5-1 (-> s4-2 base)) - ) + (s5-1 (-> s4-2 base))) ;; add the end data at the end. (tie-end-buffer s4-2) (let ((v1-19 (-> s4-2 base))) @@ -85,56 +63,34 @@ (set! (-> (the-as dma-packet a0-17) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet a0-17) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-17) vif1) (new 'static 'vif-tag)) - (set! (-> s4-2 base) (&+ (the-as pointer a0-17) 16)) - ) + (set! (-> s4-2 base) (&+ (the-as pointer a0-17) 16))) (set! (-> (the-as (pointer uint32) (-> gp-1 last)) 1) (the-as uint s5-1)) - (set! (-> gp-1 last) (the-as (pointer dma-tag) v1-19)) - ) - ) - ) - ) - + (set! (-> gp-1 last) (the-as (pointer dma-tag) v1-19)))))) ;; same as above, but for level 1's tie. (let ((gp-2 (-> *display* frames (-> *display* on-screen) frame bucket-group (bucket-id tie-1)))) (when (!= gp-2 (-> gp-2 last)) (let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s4-4 (-> s5-2 base)) - ) - (tie-init-engine - s5-2 - (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal)) - 0 - ) + (s4-4 (-> s5-2 base))) + (tie-init-engine s5-2 (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal)) 0) (let ((v1-28 (the-as object (-> s5-2 base)))) (set! (-> (the-as dma-packet v1-28) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> gp-2 next))) (set! (-> (the-as dma-packet v1-28) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-28) vif1) (new 'static 'vif-tag)) - (set! (-> s5-2 base) (&+ (the-as pointer v1-28) 16)) - ) - (set! (-> gp-2 next) (the-as uint s4-4)) - ) - ) - ) + (set! (-> s5-2 base) (&+ (the-as pointer v1-28) 16))) + (set! (-> gp-2 next) (the-as uint s4-4))))) (let ((gp-3 (-> *display* frames (-> *display* on-screen) frame bucket-group (bucket-id tie-1)))) (when (!= gp-3 (-> gp-3 last)) (let* ((s4-5 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s5-3 (-> s4-5 base)) - ) + (s5-3 (-> s4-5 base))) (tie-end-buffer s4-5) (let ((v1-39 (-> s4-5 base))) (let ((a0-36 (the-as object (-> s4-5 base)))) (set! (-> (the-as dma-packet a0-36) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet a0-36) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-36) vif1) (new 'static 'vif-tag)) - (set! (-> s4-5 base) (&+ (the-as pointer a0-36) 16)) - ) + (set! (-> s4-5 base) (&+ (the-as pointer a0-36) 16))) (set! (-> (the-as (pointer uint32) (-> gp-3 last)) 1) (the-as uint s5-3)) - (set! (-> gp-3 last) (the-as (pointer dma-tag) v1-39)) - ) - ) - ) - ) - + (set! (-> gp-3 last) (the-as (pointer dma-tag) v1-39)))))) #| ;; level 0's tie near (let ((gp-4 (-> *display* frames (-> *display* on-screen) frame bucket-group (bucket-id tie-near-0)))) @@ -229,11 +185,9 @@ ) ) ) - |# + |# 0 - (none) - ) - + (none)) ;;;;;;;;;;;;;;;;; ;; TIE debug @@ -243,10 +197,8 @@ ;; a ranges of instances to debug (deftype tie-instance-debug (structure) - ((max-instance uint32) - (min-instance uint32) - ) - ) + ((max-instance uint32) + (min-instance uint32))) ;; unused (define *tie* (new 'global 'tie-instance-debug)) @@ -254,18 +206,15 @@ (defun tie-debug-between ((arg0 uint) (arg1 uint)) (set! (-> *instance-tie-work* test-id) arg1) (set! (-> *instance-tie-work* test-id2) arg0) - arg0 - ) + arg0) (defun tie-debug-one ((arg0 uint) (arg1 uint)) (set! (-> *instance-tie-work* test-id) (+ arg1 -1 arg0)) (set! (-> *instance-tie-work* test-id2) arg0) - arg0 - ) + arg0) (defun walk-tie-generic-prototypes () - (none) - ) + (none)) ;; unused (define *pke-hack* (new 'global 'vector)) @@ -275,16 +224,11 @@ ;; draw-inline-array-prototype-tie-asm ;; draw-inline-array-prototype-tie-near-asm - -(defmethod login drawable-tree-instance-tie ((this drawable-tree-instance-tie)) - (if (nonzero? (-> this prototypes prototype-array-tie)) - (login (-> this prototypes prototype-array-tie)) - ) +(defmethod login ((this drawable-tree-instance-tie)) + (if (nonzero? (-> this prototypes prototype-array-tie)) (login (-> this prototypes prototype-array-tie))) (dotimes (s5-0 (-> this length)) - (login (-> this data s5-0)) - ) - this - ) + (login (-> this data s5-0))) + this) (defun add-pc-wind-data ((dma-buf dma-buffer)) ;; packet to send 84 qw's @@ -292,19 +236,14 @@ (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 84)) (set! (-> packet vif0) (new 'static 'vif-tag)) (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) - (set! (-> dma-buf base) (the pointer (&+ packet 16))) - ) + (set! (-> dma-buf base) (the pointer (&+ packet 16)))) (quad-copy! (-> dma-buf base) (the pointer (&- (the pointer *wind-work*) 4)) 84) - (set! (-> (the (pointer uint32) (-> dma-buf base)) 0) - (if (paused?) 1 0) - ) - (&+! (-> dma-buf base) (* 16 84)) - ) + (set! (-> (the (pointer uint32) (-> dma-buf base)) 0) (if (paused?) 1 0)) + (&+! (-> dma-buf base) (* 16 84))) (defun draw-drawable-tree-instance-tie ((arg0 drawable-tree-instance-tie) (arg1 level)) "Actually draw TIE instances. Will draw TIE, TIE-NEAR, and GENERIC" - ;; todo kill (local-vars (r0-0 none) @@ -316,18 +255,14 @@ (a0-64 int) (a0-82 int) (a0-84 int) - (sv-16 int) - ) - + (sv-16 int)) ;; only if one of our renderers is enabled. (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near tie generic)) ;; setup work (TODO, what uses TIE wind?) (set! (-> *instance-tie-work* first-generic-prototype) (the-as uint 0)) (set! (-> *instance-tie-work* wind-vectors) (-> arg0 prototypes wind-vectors)) - ;; (let ((s4-0 (+ (-> arg0 length) -1))) ;; number of arrays of draw-nodes (depth of the BVH tree, not counting instance leaves) - ;; perform draw node culling. ;; Note: It's okay to skip this. The visible list right now will just be the occlusion string ;; The PC renderer won't see this (and has its own version of culling that's plenty fast) @@ -352,42 +287,31 @@ ) ) ) - |# - + |# (let* ((v1-16 (-> arg0 data s4-0)) ;; leaves (s4-1 (-> arg0 prototypes prototype-array-tie)) ;; prototypes (s5-1 (-> s4-1 length)) ;; number of prototypes ) - (dotimes (a0-11 s5-1) ;; loop over prototypes, zero stuff?? (let ((a1-7 (-> s4-1 array-data a0-11))) (set! (-> a1-7 next-clear) (the-as uint128 0)) (set! (-> a1-7 generic-count-clear) (the-as uint128 0)) - (set! (-> a1-7 generic-next-clear) (the-as uint128 0)) - ) - 0 - ) - - (let* ((s1-0 (-> (the-as drawable-inline-array-instance-tie v1-16) data)) ;; the inline array of instances + (set! (-> a1-7 generic-next-clear) (the-as uint128 0))) + 0) + (let* ((s1-0 (-> (the-as drawable-inline-array-instance-tie v1-16) data)) ;; the inline array of instances (s0-0 (&-> (scratchpad-object terrain-context) work background vis-list (/ (-> s1-0 0 id) 8))) ;; vis for first. (s3-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) ;; dma buf to write to ) (set! sv-16 (-> (the-as drawable-inline-array-node v1-16) length)) ;; number of instances - ;; if we actually have things to draw (when (nonzero? sv-16) - ;; this is some buffer for the generic renderer (let* ((v1-21 (logand (the-as int *gsf-buffer*) 8191)) - (v1-23 (logand (the-as int (&- (logand (the-as int (&-> (-> s4-1 data) -512)) 8191) (the-as uint v1-21))) 8191)) - ) + (v1-23 (logand (the-as int (&- (logand (the-as int (&-> (-> s4-1 data) -512)) 8191) (the-as uint v1-21))) 8191))) ;; not sure why, but we'll use some gsf-buffer space to store an instance-tie-work ;; all the external stuff will dump into *instance-tie-work*, and we'll make a copy that's used ;; in the actual DMA generation code. - (set! *instance-tie-work-copy* (the-as instance-tie-work (+ (the-as int *gsf-buffer*) v1-23))) - ) - - + (set! *instance-tie-work-copy* (the-as instance-tie-work (+ (the-as int *gsf-buffer*) v1-23)))) ;;; TIE instance Drawing ;; we do the instances first so the prototypes that aren't drawn can be skipped. (let ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf base))) @@ -397,59 +321,47 @@ (set! (-> *instance-tie-work-copy* wait-to-spr) (the-as uint 0)) (set! (-> *instance-tie-work-copy* wait-from-spr) (the-as uint 0)) (reset! (-> *perf-stats* data 9)) - ;; DRAW! ;; note: this is a bit wasteful because we only care about generic ties. ;; non-generics are drawn fully in C++, but we're computing unused stuff here. ;; This ends up being so fast it's probably not worth worrying about yet. (when (not *use-etie*) - (with-profiler "tie-instance" (draw-inline-array-instance-tie s0-0 s1-0 sv-16 s3-1)) - ) + (with-profiler "tie-instance" + (draw-inline-array-instance-tie s0-0 s1-0 sv-16 s3-1))) ;; finish perf stats (read! (-> *perf-stats* data 9)) - (update-wait-stats (-> *perf-stats* data 9) (the-as uint 0) + (update-wait-stats (-> *perf-stats* data 9) + (the-as uint 0) (-> *instance-tie-work-copy* wait-to-spr) (-> *instance-tie-work-copy* wait-from-spr)) - ;; copy out things from instance tie work - (let ((v1-42 (-> *instance-tie-work-copy* min-dist quad))) - (set! (-> *instance-tie-work* min-dist quad) v1-42) - ) + (let ((v1-42 (-> *instance-tie-work-copy* min-dist quad))) (set! (-> *instance-tie-work* min-dist quad) v1-42)) (set! (-> *instance-tie-work* flags) (-> *instance-tie-work-copy* flags)) - ;; update memory usage (let ((a0-38 *dma-mem-usage*)) (when (nonzero? a0-38) (set! (-> a0-38 length) (max 10 (-> a0-38 length))) (set! (-> a0-38 data 9 name) "tie-fragment") (+! (-> a0-38 data 9 count) 1) - (+! (-> a0-38 data 9 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s2-0)) - ) - (set! (-> a0-38 data 9 total) (-> a0-38 data 9 used)) - ) - ) - ) - + (+! (-> a0-38 data 9 used) (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s2-0))) + (set! (-> a0-38 data 9 total) (-> a0-38 data 9 used))))) ;; Generic TIE prototype drawing - (when (and (logtest? *vu1-enable-user* (vu1-renderer-mask generic)) - (not *use-etie*) - ) + (when (and (logtest? *vu1-enable-user* (vu1-renderer-mask generic)) (not *use-etie*)) (when (logtest? (-> *instance-tie-work* flags) 2) (let ((s2-1 (-> *display* frames (-> *display* on-screen) frame global-buf base))) (set! (-> *prototype-tie-work* generic-wait-to-spr) (the-as uint 0)) (set! (-> *prototype-tie-work* generic-wait-from-spr) (the-as uint 0)) (set! (-> *instance-tie-work* first-generic-prototype) (the-as uint (-> s3-1 base))) - ;; hack, I expect this to overwrite this. (set! (-> (the (pointer uint64) (-> s3-1 base))) #xdeadbeefdeadbeef) (reset! (-> *perf-stats* data 10)) - (with-profiler "tie-generic-protos" (draw-inline-array-prototype-tie-generic-asm s3-1 s5-1 s4-1)) + (with-profiler "tie-generic-protos" + (draw-inline-array-prototype-tie-generic-asm s3-1 s5-1 s4-1)) (read! (-> *perf-stats* data 10)) - (update-wait-stats (-> *perf-stats* data 10) (the-as uint 0) + (update-wait-stats (-> *perf-stats* data 10) + (the-as uint 0) (-> *prototype-tie-work* generic-wait-to-spr) - (-> *prototype-tie-work* generic-wait-from-spr) - ) + (-> *prototype-tie-work* generic-wait-from-spr)) ;; Note: we don't add to a bucket. This lives in some buffer somewhere and generic will take care of actually adding it. (let ((a0-51 *dma-mem-usage*)) (when (nonzero? a0-51) @@ -457,22 +369,14 @@ (set! (-> a0-51 data 17 name) "tie-generic") (+! (-> a0-51 data 17 count) 1) (+! (-> a0-51 data 17 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s2-1)) - ) - (set! (-> a0-51 data 17 total) (-> a0-51 data 17 used)) - ) - ) - ) - ) - ) - + (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s2-1))) + (set! (-> a0-51 data 17 total) (-> a0-51 data 17 used))))))) ;; Normal TIE prototype drawing (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie)) (let ((s3-2 (-> *display* frames (-> *display* on-screen) frame global-buf base))) (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie)) (let* ((s1-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s2-2 (-> s1-1 base)) - ) + (s2-2 (-> s1-1 base))) (set! (-> *prototype-tie-work* wait-to-spr) (the-as uint 0)) (set! (-> *prototype-tie-work* wait-from-spr) (the-as uint 0)) (reset! (-> *perf-stats* data 11)) @@ -481,45 +385,29 @@ (add-pc-wind-data s1-1) (pc-add-tie-envmap-info s1-1) (read! (-> *perf-stats* data 11)) - (update-wait-stats (-> *perf-stats* data 11) (the-as uint 0) + (update-wait-stats (-> *perf-stats* data 11) + (the-as uint 0) (-> *prototype-tie-work* wait-to-spr) - (-> *prototype-tie-work* wait-from-spr) - ) - + (-> *prototype-tie-work* wait-from-spr)) ;; this actually generates real drawing DMA, so add it to the appropriate bucket. (let ((a3-11 (-> s1-1 base))) (let ((v1-94 (the-as object (-> s1-1 base)))) (set! (-> (the-as dma-packet v1-94) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-94) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-94) vif1) (new 'static 'vif-tag)) - (set! (-> s1-1 base) (&+ (the-as pointer v1-94) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (if (zero? (-> arg1 index)) - (bucket-id tie-0) - (bucket-id tie-1) - ) - s2-2 - (the-as (pointer dma-tag) a3-11) - ) - ) - ) - ) + (set! (-> s1-1 base) (&+ (the-as pointer v1-94) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (if (zero? (-> arg1 index)) (bucket-id tie-0) (bucket-id tie-1)) + s2-2 + (the-as (pointer dma-tag) a3-11))))) (let ((v1-100 *dma-mem-usage*)) (when (nonzero? v1-100) (set! (-> v1-100 length) (max 10 (-> v1-100 length))) (set! (-> v1-100 data 9 name) "tie-fragment") (+! (-> v1-100 data 9 count) 1) (+! (-> v1-100 data 9 used) - (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s3-2)) - ) - (set! (-> v1-100 data 9 total) (-> v1-100 data 9 used)) - ) - ) - ) - ) - + (&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s3-2))) + (set! (-> v1-100 data 9 total) (-> v1-100 data 9 used)))))) #| (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near)) (let ((s3-3 (-> *display* frames (-> *display* on-screen) frame global-buf base))) @@ -565,160 +453,105 @@ ) ) ) - )|# - ) - ) - ) - ) - 0 - ) + ) + |# + )))) + 0) (set! (-> arg1 closest-object 5) (-> *instance-tie-work* min-dist x)) 0 - (none) - ) + (none)) (defmethod draw ((this drawable-tree-instance-tie) (arg0 drawable-tree-instance-tie) (arg1 display-frame)) "Add the tree to the background work list." (let* ((v1-1 (-> *background-work* tie-tree-count)) (a1-2 (-> (scratchpad-object terrain-context) bsp lev-index)) - (a1-5 (-> *level* level a1-2)) - ) + (a1-5 (-> *level* level a1-2))) (set! (-> *background-work* tie-trees v1-1) this) - (set! (-> *background-work* tie-levels v1-1) a1-5) - ) + (set! (-> *background-work* tie-levels v1-1) a1-5)) (+! (-> *background-work* tie-tree-count) 1) - (none) - ) + (none)) (defmethod collect-stats ((this drawable-tree-instance-tie)) "Collect statistics on TIE drawing." - ;; only if tie/generic ran (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near tie generic)) ;; unused? (-> this data (+ (-> this length) -1)) - ;; loop over all prototypes. ;; the drawing process will write to the prototypes to say how many of each it draws (let ((v1-8 (-> this prototypes prototype-array-tie))) (dotimes (a0-1 (-> v1-8 length)) ;; grap the prototype (let ((a1-2 (-> v1-8 array-data a0-1))) - ;; GENERIC (when (logtest? *vu1-enable-user* (vu1-renderer-mask generic)) ;; there are 4 arrays of fragments per prototype. Looks like we check them all for generic. (let ((a2-3 0) - (a3-0 3) - ) + (a3-0 3)) (while (>= a3-0 a2-3) - (let ((t0-2 (-> a1-2 generic-count a2-3)) ;; number of times this geom was drawn with generic + (let ((t0-2 (-> a1-2 generic-count a2-3)) ;; number of times this geom was drawn with generic (t2-0 (-> a1-2 geometry-override a2-3)) ;; the geom that was drawn ) - (when (nonzero? t0-2) ;; were we drawn? + (when (nonzero? t0-2) ;; were we drawn? (let ((t1-3 (the-as object (-> t2-0 data))) ;; tie fragment array - (t2-1 (-> t2-0 length)) ;; number of tie fragments + (t2-1 (-> t2-0 length)) ;; number of tie fragments ) - (+! (-> *terrain-stats* tie-generic groups) 1) ;; number of geometries drawn (unique) + (+! (-> *terrain-stats* tie-generic groups) 1) ;; number of geometries drawn (unique) (+! (-> *terrain-stats* tie-generic fragments) t2-1) ;; number of frags drawn (unique) (+! (-> *terrain-stats* tie-generic instances) t0-2) ;; number of instances drawn (not unique) - ;; now, collect stats per fragment (dotimes (t3-9 t2-1) (let ((t5-0 (* (-> (the-as tie-fragment t1-3) num-tris) t0-2)) ;; multiply by number of instances - (t4-5 (* (-> (the-as tie-fragment t1-3) num-dverts) t0-2)) - ) + (t4-5 (* (-> (the-as tie-fragment t1-3) num-dverts) t0-2))) (+! (-> *terrain-stats* tie-generic tris) t5-0) - (+! (-> *terrain-stats* tie-generic dverts) t4-5) - ) - (set! t1-3 (&+ (the-as tie-fragment t1-3) 64)) - ) - ) - ) - ) - (+! a2-3 1) - ) - ) - ) - + (+! (-> *terrain-stats* tie-generic dverts) t4-5)) + (set! t1-3 (&+ (the-as tie-fragment t1-3) 64)))))) + (+! a2-3 1)))) ;; normal tie (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie)) (let ((a2-9 1) ;; looks like we never draw geom 0's with normal tie? - (a3-1 3) - ) + (a3-1 3)) (while (>= a3-1 a2-9) (let ((t0-6 (-> a1-2 count a2-9)) - (t2-2 (-> a1-2 geometry-override a2-9)) - ) + (t2-2 (-> a1-2 geometry-override a2-9))) (when (nonzero? t0-6) (let ((t1-8 (the-as object (-> t2-2 data))) - (t2-3 (-> t2-2 length)) - ) + (t2-3 (-> t2-2 length))) (+! (-> *terrain-stats* tie groups) 1) (+! (-> *terrain-stats* tie fragments) t2-3) (+! (-> *terrain-stats* tie instances) t0-6) (dotimes (t3-19 t2-3) (let ((t5-5 (* (-> (the-as tie-fragment t1-8) num-tris) t0-6)) - (t4-12 (* (-> (the-as tie-fragment t1-8) num-dverts) t0-6)) - ) + (t4-12 (* (-> (the-as tie-fragment t1-8) num-dverts) t0-6))) (+! (-> *terrain-stats* tie tris) t5-5) - (+! (-> *terrain-stats* tie dverts) t4-12) - ) - (set! t1-8 (&+ (the-as tie-fragment t1-8) 64)) - ) - ) - ) - ) - (+! a2-9 1) - ) - ) - ) - + (+! (-> *terrain-stats* tie dverts) t4-12)) + (set! t1-8 (&+ (the-as tie-fragment t1-8) 64)))))) + (+! a2-9 1)))) ;; near tie (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near)) (let ((a2-14 (-> a1-2 count 0)) ;; always geom 0. - (a3-2 (-> a1-2 geometry-override 0)) - ) + (a3-2 (-> a1-2 geometry-override 0))) (when (nonzero? a2-14) (let ((a1-3 (the-as object (-> a3-2 data))) - (a3-3 (-> a3-2 length)) - ) + (a3-3 (-> a3-2 length))) (+! (-> *terrain-stats* tie-near groups) 1) (+! (-> *terrain-stats* tie-near fragments) a3-3) (+! (-> *terrain-stats* tie-near instances) a2-14) (dotimes (t0-19 a3-3) (let ((t2-4 (* (-> (the-as tie-fragment a1-3) num-tris) a2-14)) - (t1-15 (* (-> (the-as tie-fragment a1-3) num-dverts) a2-14)) - ) + (t1-15 (* (-> (the-as tie-fragment a1-3) num-dverts) a2-14))) (+! (-> *terrain-stats* tie-near tris) t2-4) - (+! (-> *terrain-stats* tie-near dverts) t1-15) - ) - (set! a1-3 (&+ (the-as tie-fragment a1-3) 64)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (+! (-> *terrain-stats* tie-near dverts) t1-15)) + (set! a1-3 (&+ (the-as tie-fragment a1-3) 64))))))))))) + (none)) (defmethod debug-draw ((this drawable-tree-instance-tie) (arg0 drawable) (arg1 display-frame)) (-> this data (+ (-> this length) -1)) (let* ((s5-0 (-> this prototypes prototype-array-tie)) - (s4-0 (-> s5-0 length)) - ) + (s4-0 (-> s5-0 length))) (dotimes (s3-0 s4-0) - (let ((a1-1 (-> s5-0 array-data s3-0 geometry 0))) - (debug-draw a1-1 a1-1 arg1) - ) - ) - ) - (none) - ) + (let ((a1-1 (-> s5-0 array-data s3-0 geometry 0))) (debug-draw a1-1 a1-1 arg1)))) + (none)) ;;;;;;;;;;;;;;;;; ;; TIE collision @@ -729,44 +562,36 @@ (defmethod collide-with-box ((this drawable-tree-instance-tie) (arg0 int) (arg1 collide-list)) (collide-with-box (-> this data 0) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-y-probe ((this drawable-tree-instance-tie) (arg0 int) (arg1 collide-list)) (collide-y-probe (-> this data 0) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-ray ((this drawable-tree-instance-tie) (arg0 int) (arg1 collide-list)) (collide-ray (-> this data 0) (-> this length) arg1) 0 - (none) - ) - + (none)) (defmethod collide-with-box ((this drawable-inline-array-instance-tie) (arg0 int) (arg1 collide-list)) (collide-with-box (the-as instance-tie (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-y-probe ((this drawable-inline-array-instance-tie) (arg0 int) (arg1 collide-list)) (collide-y-probe (the-as instance-tie (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defmethod collide-ray ((this drawable-inline-array-instance-tie) (arg0 int) (arg1 collide-list)) (collide-ray (the-as instance-tie (-> this data)) (-> this length) arg1) 0 - (none) - ) + (none)) (defun-debug tie-test-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) 1246582.6) (set! (-> a0-0 y) 57026.02) (set! (-> a0-0 z) -490734.78) @@ -787,8 +612,6 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) (send-event *camera* 'set-fov 11650.845) - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/gfx/tie/tie-near.gc b/goal_src/jak1/engine/gfx/tie/tie-near.gc index 3ddf6061d1..cd64734695 100644 --- a/goal_src/jak1/engine/gfx/tie/tie-near.gc +++ b/goal_src/jak1/engine/gfx/tie/tie-near.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/matrix.gc") (require "engine/game/main-h.gc") (require "engine/gfx/math-camera-h.gc") (require "engine/gfx/hw/gs.gc") -;; name: tie-near.gc -;; name in dgo: tie-near -;; dgos: GAME, ENGINE - ;; The "near" version of TIE. ;; This correctly handles scissoring triangles. ;; Like tfrag near, we plan to not port this because it's complicated, and instead let opengl do @@ -22,20 +17,18 @@ ;; uploaded to VU1 once per frame. (deftype tie-near-consts (structure) - ((extra qword :inline) - (gifbufs qword :inline) - (clrbufs qword :inline) - (adgif gs-gif-tag :inline) - (strgif gs-gif-tag :inline) - (fangif gs-gif-tag :inline) - (hvdfoffs vector :inline) - (invhscale vector :inline) - (guard vector :inline) - (atest ad-cmd 2 :inline) - (atest-tra ad-cmd :inline :overlay-at (-> atest 0)) - (atest-def ad-cmd :inline :overlay-at (-> atest 1)) - ) - ) + ((extra qword :inline) + (gifbufs qword :inline) + (clrbufs qword :inline) + (adgif gs-gif-tag :inline) + (strgif gs-gif-tag :inline) + (fangif gs-gif-tag :inline) + (hvdfoffs vector :inline) + (invhscale vector :inline) + (guard vector :inline) + (atest ad-cmd 2 :inline) + (atest-tra ad-cmd :inline :overlay-at (-> atest 0)) + (atest-def ad-cmd :inline :overlay-at (-> atest 1)))) ;; the actual program. (define tie-near-vu1-block (new 'static 'vu-function :length #x6f8 :qlength #x37c)) @@ -51,66 +44,57 @@ (cond ((zero? *subdivide-draw-mode*) (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)))) ((= *subdivide-draw-mode* 3) (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1) - :nreg #x3 - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1) + :nreg #x3))) ((= *subdivide-draw-mode* 1) (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :fge #x1 :abe arg1) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :fge #x1 :abe arg1)))) ((= *subdivide-draw-mode* 2) (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1) - ) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1))))) (set! (-> arg0 strgif regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (set! (-> arg0 fangif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1 :abe arg1))) (set! (-> arg0 fangif regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) (let ((f1-0 8388894.0) (f2-0 8389078.0) - (f0-0 8389262.0) - ) + (f0-0 8389262.0)) (set! (-> arg0 gifbufs vector4w x) (the-as int f0-0)) (set! (-> arg0 gifbufs vector4w y) (the-as int f2-0)) (set! (-> arg0 gifbufs vector4w z) (the-as int f0-0)) (set! (-> arg0 gifbufs vector4w w) (the-as int f2-0)) (set! (-> arg0 extra vector4w x) (the-as int (+ f1-0 f2-0 f0-0))) (set! (-> arg0 extra vector4w y) (the-as int 0.0)) - (set! (-> arg0 extra vector4w z) (the-as int (+ f1-0 f2-0 f0-0))) - ) + (set! (-> arg0 extra vector4w z) (the-as int (+ f1-0 f2-0 f0-0)))) (set! (-> arg0 clrbufs vector4w x) 198) (set! (-> arg0 clrbufs vector4w y) 242) (set! (-> arg0 clrbufs vector4w z) 198) @@ -118,160 +102,63 @@ (let ((v1-41 *math-camera*)) (set! (-> arg0 invhscale quad) (-> v1-41 inv-hmge-scale quad)) (set! (-> arg0 hvdfoffs quad) (-> v1-41 hvdf-off quad)) - (set! (-> arg0 guard quad) (-> v1-41 guard quad)) - ) - (none) - ) + (set! (-> arg0 guard quad) (-> v1-41 guard quad))) + (none)) ;; SKIPPED tie-near-init-engine ;; SKIPPED tie-near-end-buffer (defun tie-near-make-perspective-matrix ((arg0 matrix)) - (column-scale-matrix! arg0 (-> *math-camera* hmge-scale) (-> *math-camera* camera-temp)) - ) + (column-scale-matrix! arg0 (-> *math-camera* hmge-scale) (-> *math-camera* camera-temp))) (defun tie-near-int-reg ((arg0 int)) (let ((v1-0 arg0)) (cond - ((zero? v1-0) - "zero" - ) - ((= v1-0 1) - "itemp" - ) - ((= v1-0 2) - "delta" - ) - ((= v1-0 3) - "dest-0" - ) - ((= v1-0 4) - "dest-1" - ) - ((= v1-0 5) - "dest-2" - ) - ((= v1-0 6) - "dest-3" - ) - ((= v1-0 7) - "delta-ptr" - ) - ((= v1-0 8) - "prev" - ) - ((= v1-0 9) - "itemp2" - ) - ) - ) - ) + ((zero? v1-0) "zero") + ((= v1-0 1) "itemp") + ((= v1-0 2) "delta") + ((= v1-0 3) "dest-0") + ((= v1-0 4) "dest-1") + ((= v1-0 5) "dest-2") + ((= v1-0 6) "dest-3") + ((= v1-0 7) "delta-ptr") + ((= v1-0 8) "prev") + ((= v1-0 9) "itemp2")))) (defun tie-near-float-reg ((arg0 int)) (let ((v1-0 arg0)) (cond - ((zero? v1-0) - "zero" - ) - ((= v1-0 1) - "vtx-0" - ) - ((= v1-0 2) - "vtx-1" - ) - ((= v1-0 3) - "vtx-2" - ) - ((= v1-0 4) - "vtx-3" - ) - ((= v1-0 5) - "hvtx-0" - ) - ((= v1-0 6) - "hvtx-1" - ) - ((= v1-0 7) - "hvtx-2" - ) - ((= v1-0 8) - "hvtx-3" - ) - ((= v1-0 9) - "tex-0" - ) - ((= v1-0 10) - "tex-1" - ) - ((= v1-0 11) - "tex-2" - ) - ((= v1-0 12) - "tex-3" - ) - ((= v1-0 13) - "deltas" - ) - ((= v1-0 14) - "invh" - ) - ((= v1-0 15) - "hvdfcl" - ) - ((= v1-0 16) - "hvdfnc" - ) - ((= v1-0 17) - "--" - ) - ((= v1-0 18) - "--" - ) - ((= v1-0 19) - "--" - ) - ((= v1-0 20) - "--" - ) - ((= v1-0 19) - "--" - ) - ((= v1-0 20) - "--" - ) - ((= v1-0 21) - "gifbuf" - ) - ((= v1-0 22) - "clrbuf" - ) - ((= v1-0 23) - "extra" - ) - ((= v1-0 24) - "inds" - ) - ((= v1-0 25) - "--" - ) - ((= v1-0 26) - "--" - ) - ((= v1-0 27) - "morph" - ) - ((= v1-0 28) - "xyzofs" - ) - ((= v1-0 29) - "--" - ) - ((= v1-0 30) - "--" - ) - ((= v1-0 31) - "--" - ) - ) - ) - ) + ((zero? v1-0) "zero") + ((= v1-0 1) "vtx-0") + ((= v1-0 2) "vtx-1") + ((= v1-0 3) "vtx-2") + ((= v1-0 4) "vtx-3") + ((= v1-0 5) "hvtx-0") + ((= v1-0 6) "hvtx-1") + ((= v1-0 7) "hvtx-2") + ((= v1-0 8) "hvtx-3") + ((= v1-0 9) "tex-0") + ((= v1-0 10) "tex-1") + ((= v1-0 11) "tex-2") + ((= v1-0 12) "tex-3") + ((= v1-0 13) "deltas") + ((= v1-0 14) "invh") + ((= v1-0 15) "hvdfcl") + ((= v1-0 16) "hvdfnc") + ((= v1-0 17) "--") + ((= v1-0 18) "--") + ((= v1-0 19) "--") + ((= v1-0 20) "--") + ((= v1-0 19) "--") + ((= v1-0 20) "--") + ((= v1-0 21) "gifbuf") + ((= v1-0 22) "clrbuf") + ((= v1-0 23) "extra") + ((= v1-0 24) "inds") + ((= v1-0 25) "--") + ((= v1-0 26) "--") + ((= v1-0 27) "morph") + ((= v1-0 28) "xyzofs") + ((= v1-0 29) "--") + ((= v1-0 30) "--") + ((= v1-0 31) "--")))) diff --git a/goal_src/jak1/engine/gfx/tie/tie-work.gc b/goal_src/jak1/engine/gfx/tie/tie-work.gc index 1b82de76fd..77d563b8ca 100644 --- a/goal_src/jak1/engine/gfx/tie/tie-work.gc +++ b/goal_src/jak1/engine/gfx/tie/tie-work.gc @@ -1,133 +1,150 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/tie/tie-h.gc") (require "engine/dma/dma-buffer.gc") (require "engine/math/vector-h.gc") -;; name: tie-work.gc -;; name in dgo: tie-work -;; dgos: GAME, ENGINE - ;; definition for symbol *instance-tie-work*, type instance-tie-work ;; helpful constants for the instance drawing EE asm. (define *instance-tie-work* - (new 'static 'instance-tie-work - :wind-const (new 'static 'vector :x 0.5 :y 100.0 :z 0.0166 :w -1.0) - :constant (new 'static 'vector :x 4096.0 :y 128.0) - :far-morph (new 'static 'vector :x 1.0 :w 256.0) - :upload-color-0 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x80c6 :num #x6 :cmd (vif-cmd unpack-v4-32)) - ) - :upload-color-1 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) - :vif1 (new 'static 'vif-tag :imm #xc0cc :cmd (vif-cmd unpack-v4-8)) - ) - :upload-color-2 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id next)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) - ) - :upload-color-ret (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ret)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) - ) - :generic-color-0 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x3) - ) - :generic-color-1 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) - :generic-color-end (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id end))) - :refl-fade-fac -0.000625 - :refl-fade-end 409600.0 - ) - ) + (new 'static + 'instance-tie-work + :wind-const + (new 'static 'vector :x 0.5 :y 100.0 :z 0.0166 :w -1.0) + :constant + (new 'static 'vector :x 4096.0 :y 128.0) + :far-morph + (new 'static 'vector :x 1.0 :w 256.0) + :upload-color-0 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x80c6 :num #x6 :cmd (vif-cmd unpack-v4-32))) + :upload-color-1 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 + (new 'static 'vif-tag :imm #xc0cc :cmd (vif-cmd unpack-v4-8))) + :upload-color-2 + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id next)) :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod))) + :upload-color-ret + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ret)) :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod))) + :generic-color-0 + (new 'static 'dma-packet :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id ref)) :vif0 (new 'static 'vif-tag :imm #x3)) + :generic-color-1 + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :generic-color-end + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id end))) + :refl-fade-fac -0.000625 + :refl-fade-end 409600.0)) (set! (-> *instance-tie-work* upload-color-2 vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1)) + (set! (-> *instance-tie-work* upload-color-ret vif1) (new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1)) ;; helpful constants for the prototype drawing EE asm (define *prototype-tie-work* - (new 'static 'prototype-tie-work - :upload-palette-0 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1) - ) - :upload-palette-1 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :imm #x1 :cmd (vif-cmd stmod)) - :vif1 (new 'static 'vif-tag :imm #x4346 :num #x80 :cmd (vif-cmd unpack-v4-8)) - ) - :upload-model-0 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) - :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) - ) - :upload-model-1 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8)) - ) - :upload-model-2 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x32 :cmd (vif-cmd unpack-v4-16)) - ) - :upload-model-3 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) - :upload-model-near-0 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :cmd (vif-cmd stmod)) - :vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32)) - ) - :upload-model-near-1 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8)) - ) - :upload-model-near-2 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x1e :cmd (vif-cmd unpack-v4-8)) - ) - :upload-model-near-3 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif1 (new 'static 'vif-tag :imm #x32 :cmd (vif-cmd unpack-v4-16)) - ) - :upload-model-near-4 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) - :generic-envmap-shader (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x1) - ) - :generic-palette (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id cnt)) - :vif0 (new 'static 'vif-tag :imm #x1) - ) - :generic-model-0 (new 'static 'dma-packet - :dma (new 'static 'dma-tag :id (dma-tag-id ref)) - :vif0 (new 'static 'vif-tag :imm #x2) - ) - :generic-model-1 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) - :generic-model-2 (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) - :generic-model-next (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id next))) - :clamp #x8000ff00ff00ff - ) - ) - -(set! (-> *prototype-tie-work* upload-model-1 vif0) - (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscal) :msk #x1) - ) - -(set! (-> *prototype-tie-work* upload-model-3 vif0) - (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscal) :msk #x1) - ) - -(set! (-> *prototype-tie-work* upload-model-near-1 vif0) - (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscal) :msk #x1) - ) - -(set! (-> *prototype-tie-work* upload-model-near-4 vif0) - (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscal) :msk #x1) - ) + (new 'static + 'prototype-tie-work + :upload-palette-0 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) + :upload-palette-1 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id cnt)) + :vif0 + (new 'static 'vif-tag :imm #x1 :cmd (vif-cmd stmod)) + :vif1 + (new 'static 'vif-tag :imm #x4346 :num #x80 :cmd (vif-cmd unpack-v4-8))) + :upload-model-0 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32))) + :upload-model-1 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8))) + :upload-model-2 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x32 :cmd (vif-cmd unpack-v4-16))) + :upload-model-3 + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) + :upload-model-near-0 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif0 + (new 'static 'vif-tag :cmd (vif-cmd stmod)) + :vif1 + (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32))) + :upload-model-near-1 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x4000 :cmd (vif-cmd unpack-v4-8))) + :upload-model-near-2 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x1e :cmd (vif-cmd unpack-v4-8))) + :upload-model-near-3 + (new 'static + 'dma-packet + :dma + (new 'static 'dma-tag :id (dma-tag-id ref)) + :vif1 + (new 'static 'vif-tag :imm #x32 :cmd (vif-cmd unpack-v4-16))) + :upload-model-near-4 + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id call))) + :generic-envmap-shader + (new 'static 'dma-packet :dma (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id ref)) :vif0 (new 'static 'vif-tag :imm #x1)) + :generic-palette + (new 'static 'dma-packet :dma (new 'static 'dma-tag :qwc #x20 :id (dma-tag-id cnt)) :vif0 (new 'static 'vif-tag :imm #x1)) + :generic-model-0 + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref)) :vif0 (new 'static 'vif-tag :imm #x2)) + :generic-model-1 + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :generic-model-2 + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref))) + :generic-model-next + (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id next))) + :clamp #x8000ff00ff00ff)) +(set! (-> *prototype-tie-work* upload-model-1 vif0) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscal) :msk #x1)) +(set! (-> *prototype-tie-work* upload-model-3 vif0) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscal) :msk #x1)) +(set! (-> *prototype-tie-work* upload-model-near-1 vif0) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscal) :msk #x1)) +(set! (-> *prototype-tie-work* upload-model-near-4 vif0) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd mscal) :msk #x1)) diff --git a/goal_src/jak1/engine/gfx/tie/tie.gc b/goal_src/jak1/engine/gfx/tie/tie.gc index d73c8bfd19..c800001abe 100644 --- a/goal_src/jak1/engine/gfx/tie/tie.gc +++ b/goal_src/jak1/engine/gfx/tie/tie.gc @@ -1,16 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/main-h.gc") (require "engine/gfx/tie/tie-h.gc") (require "engine/anim/joint.gc") -;; name: tie.gc -;; name in dgo: tie -;; dgos: GAME, ENGINE - - ;; TIE ;; tesselating fragment instance engine @@ -19,7 +13,6 @@ ;; - instanced rendering (you can draw the same thing multiple times!) ;; - time of day lighting (believed to be slightly different in implementation than tfrag) - ;; Background elements that use the GENERIC render will store their data in tie-fragments. ;; The exact procedure for GENERIC through TIE is unknown. ;; The functions are generic-tie-execute and generic-tie-convert @@ -34,38 +27,30 @@ (defmethod login ((this tie-fragment)) "Initialize the shaders for a tie-fragment" - ;; the gif data is just adgif shaders, each are 5 qw's (let ((s5-0 (-> this gif-ref)) - (s4-0 (/ (-> this tex-count) (the-as uint 5))) - ) + (s4-0 (/ (-> this tex-count) (the-as uint 5)))) (dotimes (s3-0 (the-as int s4-0)) ;; will modify the adgif-shaders in place to have the appropriate tbp. - (adgif-shader-login-no-remap (-> s5-0 s3-0)) - ) - ) - this - ) + (adgif-shader-login-no-remap (-> s5-0 s3-0)))) + this) -(defmethod inspect drawable-inline-array-instance-tie ((this drawable-inline-array-instance-tie)) +(defmethod inspect ((this drawable-inline-array-instance-tie)) "Inspect an array of instances" (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tlength: ~D~%" (-> this length)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) (dotimes (s5-0 (-> this length)) - (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0)) - ) - this - ) + (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0))) + this) (defmethod asize-of ((this drawable-inline-array-instance-tie)) "Compute the size in memory of an array of instances." - (the-as int (+ (-> drawable-inline-array-instance-tie size) (* (+ (-> this length) -1) 64))) - ) + (the-as int (+ (-> drawable-inline-array-instance-tie size) (* (+ (-> this length) -1) 64)))) #| ;; for some reason, this showed up twice. -(defmethod login drawable-tree-instance-tie ((this drawable-tree-instance-tie)) +(defmethod login ((this drawable-tree-instance-tie)) this ) |# @@ -74,50 +59,37 @@ this "Login method for the tie instance tree." ;; just log in all of the drawables. (dotimes (s5-0 (-> this length)) - (login (-> this data s5-0)) - ) - (the-as drawable-tree-instance-tie #f) - ) + (login (-> this data s5-0))) + (the-as drawable-tree-instance-tie #f)) -(defmethod inspect prototype-tie ((this prototype-tie)) +(defmethod inspect ((this prototype-tie)) "Inspect the inline-array of tie" (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tlength: ~D~%" (-> this length)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) ;; print each fragment (dotimes (s5-0 (-> this length)) - (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0)) - ) - this - ) + (format #t "~T [~D] ~A~%" s5-0 (-> this data s5-0))) + this) (defmethod login ((this prototype-tie)) "Login each tie-fragment." (dotimes (s5-0 (-> this length)) - (login (-> this data s5-0)) - ) - this - ) + (login (-> this data s5-0))) + this) (defmethod mem-usage ((this drawable-tree-instance-tie) (arg0 memory-usage-block) (arg1 int)) "Compute memory usage for a drawable tree of TIE instances" (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) - + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) ;; do our drawables (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - + (mem-usage (-> this data s3-0) arg0 arg1)) ;; do our prototypes, but with a flag set! (mem-usage (-> this prototypes prototype-array-tie) arg0 (logior arg1 1)) - this - ) + this) (defmethod mem-usage ((this tie-fragment) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of a TIE prototype." @@ -126,27 +98,15 @@ this (let ((v1-3 (* (-> this color-count) 4)) ;; pick one of the instance color categories. (a0-2 (cond - ((logtest? arg1 4) - 20 - ) - ((logtest? arg1 8) - 21 - ) - (else - 22 - ) - ) - ) - ) + ((logtest? arg1 4) 20) + ((logtest? arg1 8) 21) + (else 22)))) (+! (-> arg0 data a0-2 count) 1) (+! (-> arg0 data a0-2 used) v1-3) - (+! (-> arg0 data a0-2 total) (logand -4 (+ v1-3 3))) - ) + (+! (-> arg0 data a0-2 total) (logand -4 (+ v1-3 3)))) (set! (-> arg0 length) (max 23 (-> arg0 length))) (set! this this) - (goto cfg-13) - ) - + (goto cfg-13)) ;; not an instance, count the memory of the prototype. (set! (-> arg0 length) (max 18 (-> arg0 length))) (set! (-> arg0 data 9 name) "tie-fragment") @@ -157,52 +117,38 @@ this (set! (-> arg0 data 13 name) "tie-draw-points") (set! (-> arg0 data 17 name) "tie-generic") (+! (-> arg0 data 9 count) 1) - (let ((v1-21 (asize-of this))) - (+! (-> arg0 data 9 used) v1-21) - (+! (-> arg0 data 9 total) (logand -16 (+ v1-21 15))) - ) + (let ((v1-21 (asize-of this))) (+! (-> arg0 data 9 used) v1-21) (+! (-> arg0 data 9 total) (logand -16 (+ v1-21 15)))) (let ((v1-26 (* (-> this gif-count) 16))) (+! (-> arg0 data 10 count) (-> this tex-count)) (+! (-> arg0 data 10 used) v1-26) - (+! (-> arg0 data 10 total) (logand -16 (+ v1-26 15))) - ) + (+! (-> arg0 data 10 total) (logand -16 (+ v1-26 15)))) (let ((v1-31 (* (-> this vertex-count) 16))) (+! (-> arg0 data 11 count) (-> this vertex-count)) (+! (-> arg0 data 11 used) v1-31) - (+! (-> arg0 data 11 total) (logand -16 (+ v1-31 15))) - ) + (+! (-> arg0 data 11 total) (logand -16 (+ v1-31 15)))) (let ((v1-36 (* (-> this dp-qwc) 16))) (+! (-> arg0 data 13 count) (* (-> this dp-qwc) 16)) (+! (-> arg0 data 13 used) v1-36) - (+! (-> arg0 data 13 total) (logand -16 (+ v1-36 15))) - ) + (+! (-> arg0 data 13 total) (logand -16 (+ v1-36 15)))) (let ((v1-41 (* (-> this generic-count) 16))) (+! (-> arg0 data 17 count) 1) (+! (-> arg0 data 17 used) v1-41) - (+! (-> arg0 data 17 total) (logand -16 (+ v1-41 15))) - ) + (+! (-> arg0 data 17 total) (logand -16 (+ v1-41 15)))) (when (nonzero? (-> this debug-lines)) (dotimes (s4-0 (-> this debug-lines length)) (+! (-> arg0 data 14 count) (-> (the-as (pointer int32) (-> this debug-lines s4-0)) 0)) (let ((v1-52 (asize-of (the-as basic (-> this debug-lines s4-0))))) (+! (-> arg0 data 12 used) v1-52) - (+! (-> arg0 data 12 total) (logand -16 (+ v1-52 15))) - ) - ) - ) + (+! (-> arg0 data 12 total) (logand -16 (+ v1-52 15)))))) (label cfg-13) - this - ) + this) (defmethod mem-usage ((this instance-tie) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of TIE instance." (set! (-> arg0 length) (max 19 (-> arg0 length))) (set! (-> arg0 data 18 name) "instance-tie") (+! (-> arg0 data 18 count) 1) - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 18 used) v1-6) - (+! (-> arg0 data 18 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 18 used) v1-6) (+! (-> arg0 data 18 total) (logand -16 (+ v1-6 15)))) (when (nonzero? (-> this error)) (set! (-> arg0 length) (max 24 (-> arg0 length))) (set! (-> arg0 data 23 name) "instance-tie-colors*") @@ -214,68 +160,48 @@ this (let ((s3-0 (-> this bucket-ptr))) ;; unused (+ (-> arg0 data 19 used) (-> arg0 data 20 used) (-> arg0 data 21 used) (-> arg0 data 22 used)) - ;; loop over all 4 possible geometries (dotimes (s2-0 4) (let ((a0-10 (-> s3-0 geometry-override s2-0))) (when (nonzero? a0-10) ;; only if we actually have it. - (mem-usage a0-10 arg0 + (mem-usage a0-10 + arg0 (logior (logior (cond ;; based on which geom we are, pick the right color bucket. ((= s2-0 1) 4) ((= s2-0 2) 8) ((= s2-0 3) 16) - (else 0) - ) + (else 0)) 2 ;; set so we count it as an instance of a prototype. ) - arg1 - ) - ) - ) - ) - ) - ) - ) - this - ) + arg1))))))) + this) (defmethod mem-usage ((this drawable-inline-array-instance-tie) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of an entire array of instances" (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) ;; just call mem-usage on every element. (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) (defmethod mem-usage ((this prototype-tie) (arg0 memory-usage-block) (arg1 int)) "Compute the memory usage of an entire array of prototypes." (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) (+! (-> arg0 data 0 count) 1) - (let ((v1-7 32)) - (+! (-> arg0 data 0 used) v1-7) - (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) - ) + (let ((v1-7 32)) (+! (-> arg0 data 0 used) v1-7) (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))) ;; just call mem-usage on each. (dotimes (s3-0 (-> this length)) - (mem-usage (-> this data s3-0) arg0 arg1) - ) - this - ) + (mem-usage (-> this data s3-0) arg0 arg1)) + this) (defmethod asize-of ((this prototype-tie)) "Compute the size in memory of a prototype array" ;; 64 bytes/fragment, minus 1 in the type. - (the-as int (+ (-> prototype-tie size) (* (+ (-> this length) -1) 64))) - ) + (the-as int (+ (-> prototype-tie size) (* (+ (-> this length) -1) 64)))) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; TIE Renderer @@ -283,21 +209,20 @@ this ;; these constants are uploaded to the VU once per frame. (deftype tie-consts (structure) - ((data uint32 24) - (vector vector 6 :inline :overlay-at (-> data 0)) - (quads uint128 6 :overlay-at (-> data 0)) - (adgif gs-gif-tag :inline :overlay-at (-> data 0)) - (strgif gs-gif-tag :inline :overlay-at (-> data 4)) - (extra vector :inline :overlay-at (-> data 8)) - (gifbufs vector :inline :overlay-at (-> data 12)) - (clrbufs qword :inline :overlay-at (-> data 16)) - (misc qword :inline :overlay-at (-> data 20)) - (atestgif gs-gif-tag :inline :offset 96) - (atest ad-cmd 2 :inline :offset 112) - (atest-tra ad-cmd :inline :overlay-at (-> atest 0)) - (atest-def ad-cmd :inline :overlay-at (-> atest 1)) - ) - ) + ((data uint32 24) + (vector vector 6 :inline :overlay-at (-> data 0)) + (quads uint128 6 :overlay-at (-> data 0)) + (adgif gs-gif-tag :inline :overlay-at (-> data 0)) + (strgif gs-gif-tag :inline :overlay-at (-> data 4)) + (extra vector :inline :overlay-at (-> data 8)) + (gifbufs vector :inline :overlay-at (-> data 12)) + (clrbufs qword :inline :overlay-at (-> data 16)) + (misc qword :inline :overlay-at (-> data 20)) + (atestgif gs-gif-tag :inline :offset 96) + (atest ad-cmd 2 :inline :offset 112) + (atest-tra ad-cmd :inline :overlay-at (-> atest 0)) + (atest-def ad-cmd :inline :overlay-at (-> atest 1)))) + ;; definition for symbol tie-vu1-block, type vu-function (define tie-vu1-block (new 'static 'vu-function :length 0 :qlength 0)) ;; was 0x3e1, 0x1f1 @@ -305,74 +230,61 @@ this ;; INFO: Return type mismatch int vs none. (defun tie-init-consts ((arg0 tie-consts) (arg1 int)) "Initialize TIE constants. arg1 enables alpha blending" - ;; set the adgif shader tag (just 5x a+d's) (set! (-> arg0 adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) (set! (-> arg0 adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d))) - ;; based on the menu drawing mode, create the template tag for geometry. (cond ((zero? *subdivide-draw-mode*) ;; normal textured (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)))) ((= *subdivide-draw-mode* 3) ;; "hack". same as normal. (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)))) ((= *subdivide-draw-mode* 1) ;; outline (wireframe). just switch to line-strip (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :fge #x1 :abe arg1) - ) - ) - ) + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :fge #x1 :abe arg1)))) ((= *subdivide-draw-mode* 2) ;; gouraud - turn off tme. (set! (-> arg0 strgif tag) - (new 'static 'gif-tag64 - :pre #x1 - :nreg #x3 - :prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1) - ) - ) - ) - ) - + (new 'static + 'gif-tag64 + :pre #x1 + :nreg #x3 + :prim + (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1))))) ;; the main drawing tag: st, rgbaq, xyzf per vertex (same in all draws modes) (set! (-> arg0 strgif regs) - (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2)) - ) - + (new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))) ;; some magic constants (let ((f1-0 8388894.0) (f2-0 8389078.0) - (f0-0 8389262.0) - ) + (f0-0 8389262.0)) (set! (-> arg0 gifbufs x) f0-0) (set! (-> arg0 gifbufs y) f2-0) (set! (-> arg0 gifbufs z) f0-0) (set! (-> arg0 gifbufs w) f2-0) (set! (-> arg0 extra x) (+ f1-0 f2-0 f0-0)) (set! (-> arg0 extra y) 0.0) - (set! (-> arg0 extra z) (+ f1-0 f2-0 f0-0)) - ) + (set! (-> arg0 extra z) (+ f1-0 f2-0 f0-0))) (set! (-> arg0 clrbufs vector4w x) 198) (set! (-> arg0 clrbufs vector4w y) 242) (set! (-> arg0 clrbufs vector4w z) 198) (set! (-> arg0 clrbufs vector4w w) 242) - ;; looks like tie can toggle on and off alpha testing during the draw ;; tra = transparent, def = default? (set! (-> arg0 atestgif tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) @@ -380,91 +292,61 @@ this (set! (-> arg0 atest-tra cmd) (gs-reg test-1)) (set! (-> arg0 atest-tra data) (the uint - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - ) + (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal)))) (set! (-> arg0 atest-def cmd) (gs-reg test-1)) (set! (-> arg0 atest-def data) - (the uint (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal))) - ) - + (the uint (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal)))) ;; more magic constants (set! (-> arg0 misc vector4w x) 0) (set! (-> arg0 misc vector4w y) -1) - (none) - ) + (none)) (defun tie-init-engine ((arg0 dma-buffer) (arg1 gs-test) (arg2 int)) "Set up tie initialization DMA in the given buffer. arg2 picks abe." (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie)) ;; add the tie code (dma-buffer-add-vu-function arg0 tie-vu1-block 1) - ;; set up the given gs-test register (let* ((v1-3 arg0) - (a0-2 (the-as object (-> v1-3 base))) - ) + (a0-2 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-3 base) (&+ (the-as pointer a0-2) 16)) - ) + (set! (-> v1-3 base) (&+ (the-as pointer a0-2) 16))) (let* ((v1-4 arg0) - (a0-4 (the-as object (-> v1-4 base))) - ) + (a0-4 (the-as object (-> v1-4 base)))) (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-4 base) (the-as pointer (&+ (the-as gs-gif-tag a0-4) 16))) - ) + (set! (-> v1-4 base) (the-as pointer (&+ (the-as gs-gif-tag a0-4) 16)))) (let* ((v1-5 arg0) - (a0-6 (-> v1-5 base)) - ) + (a0-6 (-> v1-5 base))) (set! (-> (the-as (pointer gs-test) a0-6) 0) arg1) (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 test-1)) - (set! (-> v1-5 base) (&+ a0-6 16)) - ) - + (set! (-> v1-5 base) (&+ a0-6 16))) ;; set up the tie constants (let ((s4-1 9)) (let* ((v1-6 arg0) - (a0-8 (the-as object (-> v1-6 base))) - ) + (a0-8 (the-as object (-> v1-6 base)))) (set! (-> (the-as dma-packet a0-8) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc s4-1)) (set! (-> (the-as dma-packet a0-8) vif0) (new 'static 'vif-tag :cmd (vif-cmd stmod))) - (set! (-> (the-as dma-packet a0-8) vif1) - (new 'static 'vif-tag :imm #x3c6 :cmd (vif-cmd unpack-v4-32) :num s4-1) - ) - (set! (-> v1-6 base) (&+ (the-as pointer a0-8) 16)) - ) + (set! (-> (the-as dma-packet a0-8) vif1) (new 'static 'vif-tag :imm #x3c6 :cmd (vif-cmd unpack-v4-32) :num s4-1)) + (set! (-> v1-6 base) (&+ (the-as pointer a0-8) 16))) (tie-init-consts (the-as tie-consts (-> arg0 base)) arg2) - (&+! (-> arg0 base) (* s4-1 16)) - ) - + (&+! (-> arg0 base) (* s4-1 16))) ;; initialize the microprogram (let* ((v1-9 arg0) - (a0-12 (the-as object (-> v1-9 base))) - ) + (a0-12 (the-as object (-> v1-9 base)))) (set! (-> (the-as dma-packet a0-12) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-12) vif0) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd mscalf) :msk #x1)) (set! (-> (the-as dma-packet a0-12) vif1) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> v1-9 base) (&+ (the-as pointer a0-12) 16)) - ) - + (set! (-> v1-9 base) (&+ (the-as pointer a0-12) 16))) ;; initialize the VIF's ROW register (let* ((v1-10 arg0) - (a0-14 (the-as object (-> v1-10 base))) - ) + (a0-14 (the-as object (-> v1-10 base)))) (set! (-> (the-as dma-packet a0-14) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a0-14) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a0-14) vif1) (new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1)) - (set! (-> v1-10 base) (&+ (the-as pointer a0-14) 16)) - ) + (set! (-> v1-10 base) (&+ (the-as pointer a0-14) 16))) (let ((v1-11 (the-as object (-> arg0 base)))) ;; row contants (set! (-> (the-as (inline-array vector4w) v1-11) 0 x) #x4b000000) @@ -476,57 +358,42 @@ this (set! (-> (the-as (pointer vif-tag) v1-11) 5) (new 'static 'vif-tag :imm #x2c :cmd (vif-cmd offset))) (set! (-> (the-as (pointer vif-tag) v1-11) 6) (new 'static 'vif-tag :cmd (vif-cmd stmod))) (set! (-> (the-as (pointer vif-tag) v1-11) 7) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))) - (set! (-> arg0 base) (&+ (the-as pointer v1-11) 32)) - ) - 0 - ) + (set! (-> arg0 base) (&+ (the-as pointer v1-11) 32))) + 0) 0 - (none) - ) + (none)) (defun tie-end-buffer ((arg0 dma-buffer)) "Add to dma buffer after drawing. This resets things to the usual state." (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie)) (let* ((v1-3 arg0) - (a1-0 (the-as object (-> v1-3 base))) - ) + (a1-0 (the-as object (-> v1-3 base)))) (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-3 base) (&+ (the-as pointer a1-0) 16)) - ) + (set! (-> v1-3 base) (&+ (the-as pointer a1-0) 16))) ;; restore the test register (let* ((v1-4 arg0) - (a1-2 (the-as object (-> v1-4 base))) - ) + (a1-2 (the-as object (-> v1-4 base)))) (set! (-> (the-as gs-gif-tag a1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) (set! (-> (the-as gs-gif-tag a1-2) regs) GIF_REGS_ALL_AD) - (set! (-> v1-4 base) (&+ (the-as pointer a1-2) 16)) - ) + (set! (-> v1-4 base) (&+ (the-as pointer a1-2) 16))) (let* ((v1-5 arg0) - (a1-4 (-> v1-5 base)) - ) + (a1-4 (-> v1-5 base))) (set! (-> (the-as (pointer gs-test) a1-4) 0) - (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal)) - ) + (new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal))) (set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 test-1)) - (set! (-> v1-5 base) (&+ a1-4 16)) - ) - + (set! (-> v1-5 base) (&+ a1-4 16))) ;; restore the stmask register (let* ((v1-6 arg0) - (a1-6 (the-as object (-> v1-6 base))) - ) + (a1-6 (the-as object (-> v1-6 base)))) (set! (-> (the-as dma-packet a1-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) (set! (-> (the-as dma-packet a1-6) vif0) (new 'static 'vif-tag :cmd (vif-cmd stmask))) (set! (-> (the-as dma-packet a1-6) vif1) (new 'static 'vif-tag)) - (set! (-> v1-6 base) (&+ (the-as pointer a1-6) 16)) - ) - + (set! (-> v1-6 base) (&+ (the-as pointer a1-6) 16))) ;; this calls a TIE program that... does nothing? (let* ((v1-7 arg0) - (a0-1 (-> v1-7 base)) - ) + (a0-1 (-> v1-7 base))) ;; run the nothing program (set! (-> (the-as (pointer vif-tag) a0-1) 0) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscalf) :msk #x1)) ;; reset VIF stuff we changed @@ -538,13 +405,10 @@ this (set! (-> (the-as (pointer vif-tag) a0-1) 5) (new 'static 'vif-tag)) (set! (-> (the-as (pointer vif-tag) a0-1) 6) (new 'static 'vif-tag)) (set! (-> (the-as (pointer vif-tag) a0-1) 7) (new 'static 'vif-tag)) - (set! (-> v1-7 base) (&+ a0-1 32)) - ) - 0 - ) + (set! (-> v1-7 base) (&+ a0-1 32))) + 0) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;; ;; debug print @@ -554,162 +418,59 @@ this "Convert a VU1 int register ID to the name given to it in the TIE VU1 program" (let ((v1-0 arg0)) (cond - ((zero? v1-0) - "zero" - ) - ((= v1-0 1) - "itemp" - ) - ((= v1-0 2) - "point-ptr" - ) - ((= v1-0 3) - "clr-ptr" - ) - ((= v1-0 4) - "target-bp1-ptr" - ) - ((= v1-0 5) - "skip-bp2" - ) - ((= v1-0 6) - "target-bp2-ptr" - ) - ((= v1-0 7) - "target-ip1-ptr" - ) - ((= v1-0 8) - "target-ip2-ptr" - ) - ((= v1-0 9) - "ind/ind0" - ) - ((= v1-0 10) - " ind1" - ) - ((= v1-0 11) - " ind2" - ) - ((= v1-0 12) - "dest-ptr" - ) - ((= v1-0 13) - "dest2-ptr" - ) - ((= v1-0 14) - "skip-ips" - ) - ((= v1-0 15) - "kick-addr" - ) - ) - ) - ) + ((zero? v1-0) "zero") + ((= v1-0 1) "itemp") + ((= v1-0 2) "point-ptr") + ((= v1-0 3) "clr-ptr") + ((= v1-0 4) "target-bp1-ptr") + ((= v1-0 5) "skip-bp2") + ((= v1-0 6) "target-bp2-ptr") + ((= v1-0 7) "target-ip1-ptr") + ((= v1-0 8) "target-ip2-ptr") + ((= v1-0 9) "ind/ind0") + ((= v1-0 10) " ind1") + ((= v1-0 11) " ind2") + ((= v1-0 12) "dest-ptr") + ((= v1-0 13) "dest2-ptr") + ((= v1-0 14) "skip-ips") + ((= v1-0 15) "kick-addr")))) (defun-debug tie-float-reg ((arg0 int)) "Convert a VU1 float register ID to the name given to it in the TIE VU1 program" (let ((v1-0 arg0)) (cond - ((zero? v1-0) - "zero" - ) - ((= v1-0 1) - "t-mtx0" - ) - ((= v1-0 2) - "t-mtx1" - ) - ((= v1-0 3) - "t-mtx2" - ) - ((= v1-0 4) - "t-mtx3" - ) - ((= v1-0 5) - "vtx-0" - ) - ((= v1-0 6) - "vtx-1" - ) - ((= v1-0 7) - "vtx-2" - ) - ((= v1-0 8) - "vtx-3" - ) - ((= v1-0 9) - "pos-0/2" - ) - ((= v1-0 10) - "pos-1/3" - ) - ((= v1-0 11) - "clr-0" - ) - ((= v1-0 12) - "clr-1" - ) - ((= v1-0 13) - "clr-2" - ) - ((= v1-0 14) - "clr-3" - ) - ((= v1-0 15) - "tex-0" - ) - ((= v1-0 16) - "tex-1" - ) - ((= v1-0 17) - "tex-2" - ) - ((= v1-0 18) - "tex-3" - ) - ((= v1-0 19) - "res-0/2" - ) - ((= v1-0 20) - "res-1/3" - ) - ((= v1-0 21) - "gifbuf" - ) - ((= v1-0 22) - "clrbuf" - ) - ((= v1-0 23) - "extra" - ) - ((= v1-0 24) - "inds" - ) - ((= v1-0 25) - "--" - ) - ((= v1-0 26) - "--" - ) - ((= v1-0 27) - "morph" - ) - ((= v1-0 28) - "xyzofs" - ) - ((= v1-0 29) - "clr1" - ) - ((= v1-0 30) - "clr2" - ) - ((= v1-0 31) - "--" - ) - ) - ) - ) - + ((zero? v1-0) "zero") + ((= v1-0 1) "t-mtx0") + ((= v1-0 2) "t-mtx1") + ((= v1-0 3) "t-mtx2") + ((= v1-0 4) "t-mtx3") + ((= v1-0 5) "vtx-0") + ((= v1-0 6) "vtx-1") + ((= v1-0 7) "vtx-2") + ((= v1-0 8) "vtx-3") + ((= v1-0 9) "pos-0/2") + ((= v1-0 10) "pos-1/3") + ((= v1-0 11) "clr-0") + ((= v1-0 12) "clr-1") + ((= v1-0 13) "clr-2") + ((= v1-0 14) "clr-3") + ((= v1-0 15) "tex-0") + ((= v1-0 16) "tex-1") + ((= v1-0 17) "tex-2") + ((= v1-0 18) "tex-3") + ((= v1-0 19) "res-0/2") + ((= v1-0 20) "res-1/3") + ((= v1-0 21) "gifbuf") + ((= v1-0 22) "clrbuf") + ((= v1-0 23) "extra") + ((= v1-0 24) "inds") + ((= v1-0 25) "--") + ((= v1-0 26) "--") + ((= v1-0 27) "morph") + ((= v1-0 28) "xyzofs") + ((= v1-0 29) "clr1") + ((= v1-0 30) "clr2") + ((= v1-0 31) "--")))) ;; NOTE: these dump programs rely on a not-present function that stashes the register values ;; at the top of the VU memory. @@ -719,55 +480,35 @@ this (local-vars (sv-16 uint)) (let ((gp-0 (the-as (pointer uint32) (+ #x3fa0 #x1100c000)))) (dotimes (s5-0 16) - (if (< s5-0 10) - (format 0 " ") - ) + (if (< s5-0 10) (format 0 " ")) (let ((s4-0 format) (s3-0 0) (s2-0 "vi~d: ~6d #x~4,'0X ~s~%") (s1-0 s5-0) - (s0-0 (-> gp-0 (* s5-0 4))) - ) + (s0-0 (-> gp-0 (* s5-0 4)))) (set! sv-16 (-> gp-0 (* s5-0 4))) - (let ((t1-0 (tie-int-reg s5-0))) - (s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 t1-0) - ) - ) - ) - ) - (none) - ) + (let ((t1-0 (tie-int-reg s5-0))) (s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 t1-0))))) + (none)) (defun-debug tie-floats () "Dump the VU1 float registers to stdout." (local-vars (sv-16 uint) (sv-32 uint)) (let ((gp-0 (the-as (pointer uint32) (+ #x3da0 #x1100c000)))) (dotimes (s5-0 32) - (if (< s5-0 10) - (format 0 " ") - ) - (format - 0 - "vf~d: #x~8,'0X #x~8,'0X #x~8,'0X #x~8,'0X " - s5-0 - (-> gp-0 (* s5-0 4)) - (-> gp-0 (+ (* s5-0 4) 1)) - (-> gp-0 (+ (* s5-0 4) 2)) - (-> gp-0 (+ (* s5-0 4) 3)) - ) + (if (< s5-0 10) (format 0 " ")) + (format 0 + "vf~d: #x~8,'0X #x~8,'0X #x~8,'0X #x~8,'0X " + s5-0 + (-> gp-0 (* s5-0 4)) + (-> gp-0 (+ (* s5-0 4) 1)) + (-> gp-0 (+ (* s5-0 4) 2)) + (-> gp-0 (+ (* s5-0 4) 3))) (let ((s4-0 format) (s3-0 0) (s2-0 "~F ~F ~F ~F ~s~%") (s1-0 (-> gp-0 (* s5-0 4))) - (s0-0 (-> gp-0 (+ (* s5-0 4) 1))) - ) + (s0-0 (-> gp-0 (+ (* s5-0 4) 1)))) (set! sv-16 (-> gp-0 (+ (* s5-0 4) 2))) (set! sv-32 (-> gp-0 (+ (* s5-0 4) 3))) - (let ((t2-1 (tie-float-reg s5-0))) - (s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 sv-32 t2-1) - ) - ) - ) - ) - (none) - ) + (let ((t2-1 (tie-float-reg s5-0))) (s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 sv-32 t2-1))))) + (none)) diff --git a/goal_src/jak1/engine/gfx/vu1-user-h.gc b/goal_src/jak1/engine/gfx/vu1-user-h.gc index d919d79fa0..2ecfc47bdd 100644 --- a/goal_src/jak1/engine/gfx/vu1-user-h.gc +++ b/goal_src/jak1/engine/gfx/vu1-user-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: vu1-user-h.gc -;; name in dgo: vu1-user-h -;; dgos: GAME, ENGINE - ;; VU1 renderers are enabled/disabled with a bitmask. ;; I believe this is renderers which can be enabled/disabled in the debug menu? @@ -31,38 +26,33 @@ (shadow 17) (depth-cue 18) (nineteen 19) - (twenty 20) - ) + (twenty 20)) ;; DECOMP BEGINS (define *vu1-enable-user-menu* - (vu1-renderer-mask - sky - ocean - ocean-wave - tfrag - tie-near - tie - generic - merc - shrubbery - shrub-near - billboard - trans-shrubbery - trans-tfrag - sprite - shadow - depth-cue - nineteen - twenty - ) - ) + (vu1-renderer-mask sky + ocean + ocean-wave + tfrag + tie-near + tie + generic + merc + shrubbery + shrub-near + billboard + trans-shrubbery + trans-tfrag + sprite + shadow + depth-cue + nineteen + twenty)) ;; disable depth-cue by default for the PC port (#when PC_PORT - (logclear! *vu1-enable-user-menu* (vu1-renderer-mask depth-cue)) - ) + (logclear! *vu1-enable-user-menu* (vu1-renderer-mask depth-cue))) ;; by default, all off. ;; the menu renderers get copied to this on each frame @@ -70,33 +60,26 @@ ;; a dma "sink" is somewhere where a renderer can put stuff. (deftype dma-foreground-sink (basic) - ((bucket bucket-id) - (foreground-texture-page int8) - (foreground-texture-level int8) - (foreground-output-bucket int8) - ) - ) + ((bucket bucket-id) + (foreground-texture-page int8) + (foreground-texture-level int8) + (foreground-output-bucket int8))) ;; additional info for the generic renderer (deftype generic-bucket-state (structure) - ((gifbuf-adr uint32) - (inbuf-adr uint32) - ) - :pack-me - ) + ((gifbuf-adr uint32) + (inbuf-adr uint32)) + :pack-me) ;; sink for the generic renderer, a normal sink + extra data. (deftype generic-dma-foreground-sink (dma-foreground-sink) - ((state generic-bucket-state :inline) - ) - ) + ((state generic-bucket-state :inline))) ;; group of sinks used for the foreground renderers. (declare-type level basic) + (deftype dma-foreground-sink-group (basic) - ((sink dma-foreground-sink 3) - (merc-sink dma-foreground-sink :overlay-at (-> sink 0)) - (generic-sink generic-dma-foreground-sink :overlay-at (-> sink 1)) - (level level) - ) - ) + ((sink dma-foreground-sink 3) + (merc-sink dma-foreground-sink :overlay-at (-> sink 0)) + (generic-sink generic-dma-foreground-sink :overlay-at (-> sink 1)) + (level level))) diff --git a/goal_src/jak1/engine/level/bsp-h.gc b/goal_src/jak1/engine/level/bsp-h.gc index b7d6c15e3a..b6b0db47de 100644 --- a/goal_src/jak1/engine/level/bsp-h.gc +++ b/goal_src/jak1/engine/level/bsp-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-h.gc") -;; name: bsp-h.gc -;; name in dgo: bsp-h -;; dgos: GAME, ENGINE - ;; Each level has a bsp file. There is a bsp-header, and a list of bsp-nodes. ;; The bsp-nodes make up a tree. Each node has a plane and two child nodes. ;; The bsp-header also contains (or references) all of the static level information. @@ -23,7 +18,6 @@ ;; I believe this means that this is a version of a level that has an associated vis file ;; for precomputed visibility. - (declare-type entity-camera basic) ;; flags: 1 = load @@ -33,142 +27,108 @@ ;; a node in the bsp tree (deftype bsp-node (structure) - ((front int32) - (back int32) - (front-flags uint32) - (back-flags uint32) - (plane vector :inline) - ) - ) + ((front int32) + (back int32) + (front-flags uint32) + (back-flags uint32) + (plane vector :inline))) ;; This is the object stored first in the level bt (-vis) ;; It is also a drawable, and drawing it will draw the level. (deftype bsp-header (drawable) - ((info file-info :overlay-at id) - (all-visible-list (pointer uint16)) - (visible-list-length int32) - (drawable-trees drawable-tree-array) - (pat pointer) - (pat-length int32) - (texture-remap-table (pointer uint64)) - (texture-remap-table-len int32) - (texture-ids (pointer texture-id)) - (texture-page-count int32) - (unk-zero-0 basic) - (name symbol) - (nickname symbol) - (vis-info level-vis-info 8) - (actors drawable-inline-array-actor) - (cameras (array entity-camera)) - (nodes (inline-array bsp-node)) - (level level) - (current-leaf-idx uint16) - (unk-data-2 uint16 9) - (boxes box8s-array) - (current-bsp-back-flags uint32) - (ambients drawable-inline-array-ambient) - (unk-data-4 float) - (unk-data-5 float) - (adgifs adgif-shader-array) - (actor-birth-order (pointer uint32)) - (split-box-indices (pointer uint16)) - (unk-data-8 uint32 55) - ) + ((info file-info :overlay-at id) + (all-visible-list (pointer uint16)) + (visible-list-length int32) + (drawable-trees drawable-tree-array) + (pat pointer) + (pat-length int32) + (texture-remap-table (pointer uint64)) + (texture-remap-table-len int32) + (texture-ids (pointer texture-id)) + (texture-page-count int32) + (unk-zero-0 basic) + (name symbol) + (nickname symbol) + (vis-info level-vis-info 8) + (actors drawable-inline-array-actor) + (cameras (array entity-camera)) + (nodes (inline-array bsp-node)) + (level level) + (current-leaf-idx uint16) + (unk-data-2 uint16 9) + (boxes box8s-array) + (current-bsp-back-flags uint32) + (ambients drawable-inline-array-ambient) + (unk-data-4 float) + (unk-data-5 float) + (adgifs adgif-shader-array) + (actor-birth-order (pointer uint32)) + (split-box-indices (pointer uint16)) + (unk-data-8 uint32 55)) (:methods - (relocate (_type_ kheap (pointer uint8)) none :replace) - (birth (_type_) none) - (deactivate-entities (_type_) none) - ) - ) + (relocate (_type_ kheap (pointer uint8)) none :replace) + (birth (_type_) none) + (deactivate-entities (_type_) none))) ;; seems to be unused? ;; In practice, a normal bsp-header is a game-level. (deftype game-level (basic) - ((master-bsp basic) - ) - ) - + ((master-bsp basic))) (deftype view-frustum (structure) - ((hither-top-left vector :inline) - (hither-top-right vector :inline) - (hither-bottom-left vector :inline) - (hither-bottom-right vector :inline) - (yon-top-left vector :inline) - (yon-top-right vector :inline) - (yon-bottom-left vector :inline) - (yon-bottom-right vector :inline) - ) - ) - + ((hither-top-left vector :inline) + (hither-top-right vector :inline) + (hither-bottom-left vector :inline) + (hither-bottom-right vector :inline) + (yon-top-left vector :inline) + (yon-top-right vector :inline) + (yon-bottom-left vector :inline) + (yon-bottom-right vector :inline))) (defun-debug-recursive inspect-bsp-tree none ((arg0 bsp-header) (arg1 bsp-node)) "Recursively print all nodes in a bsp tree. This makes a huge mess" (cond - ((zero? arg1) - ) + ((zero? arg1)) (else - (format #t "_#x~X________________~%" arg1) - (inspect arg1) - (let ((s4-0 *print-column*)) - (set! *print-column* (+ *print-column* 64)) - (if (> (-> arg1 front) 0) - (inspect-bsp-tree arg0 (the-as bsp-node (-> arg1 front))) - (format #t "_#x~X________________~%" arg1) - ) - (if (> (-> arg1 back) 0) - (inspect-bsp-tree arg0 (the-as bsp-node (-> arg1 back))) - (format #t "_#x~X________________~%" arg1) - ) - (set! *print-column* s4-0) - ) - ) - ) - (none) - ) + (format #t "_#x~X________________~%" arg1) + (inspect arg1) + (let ((s4-0 *print-column*)) + (set! *print-column* (+ *print-column* 64)) + (if (> (-> arg1 front) 0) + (inspect-bsp-tree arg0 (the-as bsp-node (-> arg1 front))) + (format #t "_#x~X________________~%" arg1)) + (if (> (-> arg1 back) 0) (inspect-bsp-tree arg0 (the-as bsp-node (-> arg1 back))) (format #t "_#x~X________________~%" arg1)) + (set! *print-column* s4-0)))) + (none)) (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) - ) + ((zero? arg2)) (else - (if (> (-> arg2 front) 0) - (map-bsp-tree arg0 arg1 (the-as bsp-node (-> arg2 front))) - (arg0 arg2) - ) - (if (> (-> arg2 back) 0) - (map-bsp-tree arg0 arg1 (the-as bsp-node (-> arg2 back))) - (arg0 arg2) - ) - ) - ) - (none) - ) + (if (> (-> arg2 front) 0) (map-bsp-tree arg0 arg1 (the-as bsp-node (-> arg2 front))) (arg0 arg2)) + (if (> (-> arg2 back) 0) (map-bsp-tree arg0 arg1 (the-as bsp-node (-> arg2 back))) (arg0 arg2)))) + (none)) (deftype cl-stat (structure) - ((fragments uint32) - (tris uint32) - (output uint32) - ) - :pack-me - ) - + ((fragments uint32) + (tris uint32) + (output uint32)) + :pack-me) (deftype collide-stats (structure) - ((other cl-stat :inline) - (total cl-stat :inline) - (nodes uint32) - (calls uint32) - (total-target stopwatch :inline) - (target-cache-fill stopwatch :inline) - (target-ray-poly stopwatch :inline) - (pad uint32) - ) - ) + ((other cl-stat :inline) + (total cl-stat :inline) + (nodes uint32) + (calls uint32) + (total-target stopwatch :inline) + (target-cache-fill stopwatch :inline) + (target-ray-poly stopwatch :inline) + (pad uint32))) ;; offsets of stuff in the scratchpad during bsp draw. (defconstant TERRAIN_BSP_SCRATCHPAD #x0) + (defconstant VISIBLE_LIST_SCRATCHPAD #x38b0) ;; TODO - for cam-update diff --git a/goal_src/jak1/engine/level/bsp.gc b/goal_src/jak1/engine/level/bsp.gc index cd97d41eda..077ce41fa6 100644 --- a/goal_src/jak1/engine/level/bsp.gc +++ b/goal_src/jak1/engine/level/bsp.gc @@ -1,17 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display.gc") (require "engine/anim/joint.gc") (require "engine/geometry/cylinder.gc") (require "engine/draw/drawable-ambient-h.gc") (require "engine/collide/collide-cache-h.gc") -;; name: bsp.gc -;; name in dgo: bsp -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;;;;;;;;;;;;;;; @@ -21,32 +16,19 @@ (defun-recursive mem-usage-bsp-tree none ((header bsp-header) (node bsp-node) (mem-use memory-usage-block) (flags int)) "Update the given mem-use for the memory used by the tree structure itself" (cond - ((zero? node) - ) + ((zero? node)) (else - (+! (-> mem-use data 58 count) 1) - (let ((v1-3 32)) - (+! (-> mem-use data 58 used) v1-3) - (+! (-> mem-use data 58 total) (logand -16 (+ v1-3 15))) - ) - (if (> (-> node front) 0) - (mem-usage-bsp-tree header (the-as bsp-node (-> node front)) mem-use flags) - ) - (if (> (-> node back) 0) - (mem-usage-bsp-tree header (the-as bsp-node (-> node back)) mem-use flags) - ) - ) - ) - (none) - ) + (+! (-> mem-use data 58 count) 1) + (let ((v1-3 32)) (+! (-> mem-use data 58 used) v1-3) (+! (-> mem-use data 58 total) (logand -16 (+ v1-3 15)))) + (if (> (-> node front) 0) (mem-usage-bsp-tree header (the-as bsp-node (-> node front)) mem-use flags)) + (if (> (-> node back) 0) (mem-usage-bsp-tree header (the-as bsp-node (-> node back)) mem-use flags)))) + (none)) (defmethod mem-usage ((this bsp-header) (mem-use memory-usage-block) (flags int)) "Update the memory usage info for this bsp-header. This will visit all the stuff in the level data." - ;; start off by setting the current bsp (set! (-> mem-use work-bsp) this) - ;; this seems slightly wrong, we count the file-info toward array. (when (nonzero? (-> this info)) (set! (-> mem-use length) (max 82 (-> mem-use length))) @@ -54,15 +36,9 @@ (+! (-> mem-use data 81 count) 1) (let ((v1-8 (asize-of (-> this info)))) (+! (-> mem-use data 81 used) v1-8) - (+! (-> mem-use data 81 total) (logand -16 (+ v1-8 15))) - ) - ) - + (+! (-> mem-use data 81 total) (logand -16 (+ v1-8 15))))) ;; measure the drawable trees. - (if (nonzero? (-> this drawable-trees)) - (mem-usage (-> this drawable-trees) mem-use flags) - ) - + (if (nonzero? (-> this drawable-trees)) (mem-usage (-> this drawable-trees) mem-use flags)) ;; add stuff (set! (-> mem-use length) (max 63 (-> mem-use length))) (set! (-> mem-use data 43 name) "entity") @@ -70,42 +46,31 @@ (set! (-> mem-use data 62 name) "pat") (set! (-> mem-use data 58 name) "bsp-node") (set! (-> mem-use length) (max 57 (-> mem-use length))) - ;; add the bsp-header itself (set! (-> mem-use data 56 name) "bsp-main") (+! (-> mem-use data 56 count) 1) - (let ((v1-27 400)) - (+! (-> mem-use data 56 used) v1-27) - (+! (-> mem-use data 56 total) (logand -16 (+ v1-27 15))) - ) - + (let ((v1-27 400)) (+! (-> mem-use data 56 used) v1-27) (+! (-> mem-use data 56 total) (logand -16 (+ v1-27 15)))) ;; add the visible list (set! (-> mem-use length) (max 60 (-> mem-use length))) (set! (-> mem-use data 59 name) "bsp-leaf-vis-self") (+! (-> mem-use data 59 count) 1) (let ((v1-36 (-> this visible-list-length))) (+! (-> mem-use data 59 used) v1-36) - (+! (-> mem-use data 59 total) (logand -16 (+ v1-36 15))) - ) - + (+! (-> mem-use data 59 total) (logand -16 (+ v1-36 15)))) ;; add the unk-data-0 (set! (-> mem-use length) (max 58 (-> mem-use length))) (set! (-> mem-use data 57 name) "bsp-misc") (+! (-> mem-use data 57 count) 1) (let ((v1-46 (* (-> this texture-remap-table-len) 8))) (+! (-> mem-use data 57 used) v1-46) - (+! (-> mem-use data 57 total) (logand -16 (+ v1-46 15))) - ) - + (+! (-> mem-use data 57 total) (logand -16 (+ v1-46 15)))) ;; add the unk-data-1 (set! (-> mem-use length) (max 58 (-> mem-use length))) (set! (-> mem-use data 57 name) "bsp-misc") (+! (-> mem-use data 57 count) 1) (let ((v1-56 (* (-> this texture-page-count) 4))) (+! (-> mem-use data 57 used) v1-56) - (+! (-> mem-use data 57 total) (logand -16 (+ v1-56 15))) - ) - + (+! (-> mem-use data 57 total) (logand -16 (+ v1-56 15)))) ;; add unk-zero-0 (when (nonzero? (-> this unk-zero-0)) (set! (-> mem-use length) (max 58 (-> mem-use length))) @@ -113,10 +78,7 @@ (+! (-> mem-use data 57 count) 1) (let ((v1-68 (asize-of (-> this unk-zero-0)))) (+! (-> mem-use data 57 used) v1-68) - (+! (-> mem-use data 57 total) (logand -16 (+ v1-68 15))) - ) - ) - + (+! (-> mem-use data 57 total) (logand -16 (+ v1-68 15))))) ;; add adgifs (when (nonzero? (-> this adgifs)) (set! (-> mem-use length) (max 58 (-> mem-use length))) @@ -124,10 +86,7 @@ (+! (-> mem-use data 57 count) 1) (let ((v1-80 (asize-of (-> this adgifs)))) (+! (-> mem-use data 57 used) v1-80) - (+! (-> mem-use data 57 total) (logand -16 (+ v1-80 15))) - ) - ) - + (+! (-> mem-use data 57 total) (logand -16 (+ v1-80 15))))) ;; add boxes (when (nonzero? (-> this boxes)) (set! (-> mem-use length) (max 58 (-> mem-use length))) @@ -135,8 +94,7 @@ (+! (-> mem-use data 57 count) 1) (let ((v1-92 (asize-of (-> this boxes)))) (+! (-> mem-use data 57 used) v1-92) - (+! (-> mem-use data 57 total) (logand -16 (+ v1-92 15))) - ) + (+! (-> mem-use data 57 total) (logand -16 (+ v1-92 15)))) ;; add box indices (when (nonzero? (-> this split-box-indices)) (set! (-> mem-use length) (max 58 (-> mem-use length))) @@ -144,62 +102,38 @@ (+! (-> mem-use data 57 count) 1) (let ((v1-105 (* (-> this boxes length) 2))) (+! (-> mem-use data 57 used) v1-105) - (+! (-> mem-use data 57 total) (logand -16 (+ v1-105 15))) - ) - ) - ) - + (+! (-> mem-use data 57 total) (logand -16 (+ v1-105 15)))))) ;; add actor-birth-order (when (nonzero? (-> this actor-birth-order)) (set! (-> mem-use length) (max 58 (-> mem-use length))) (set! (-> mem-use data 57 name) "bsp-misc") (+! (-> mem-use data 57 count) 1) - ;; add actors (let ((v1-118 (* (-> this actors length) 4))) (+! (-> mem-use data 57 used) v1-118) - (+! (-> mem-use data 57 total) (logand -16 (+ v1-118 15))) - ) - ) - + (+! (-> mem-use data 57 total) (logand -16 (+ v1-118 15))))) ;; add pat (+! (-> mem-use data 62 count) (-> this pat-length)) (let ((v1-125 (* (-> this pat-length) 4))) (+! (-> mem-use data 62 used) v1-125) - (+! (-> mem-use data 62 total) (logand -16 (+ v1-125 15))) - ) - + (+! (-> mem-use data 62 total) (logand -16 (+ v1-125 15)))) ;; add cameras (let ((s3-0 (-> this cameras))) (when (nonzero? s3-0) (dotimes (s2-0 (-> s3-0 length)) - (mem-usage (-> s3-0 s2-0) mem-use (logior flags 256)) - ) - ) - ) - + (mem-usage (-> s3-0 s2-0) mem-use (logior flags 256))))) ;; add the tree itself (mem-usage-bsp-tree this (the-as bsp-node (-> this nodes)) mem-use flags) - this - ) + this) (defmethod login ((this bsp-header)) "Main login for a level" ;; login our drawables - (if (nonzero? (-> this drawable-trees)) - (login (-> this drawable-trees)) - ) - + (if (nonzero? (-> this drawable-trees)) (login (-> this drawable-trees))) ;; login our shaders (when (nonzero? (-> this adgifs)) - (let ((s5-0 (-> this adgifs))) - (dotimes (s4-0 (-> s5-0 length)) - (adgif-shader-login-no-remap (-> s5-0 data s4-0)) - ) - ) - ) - this - ) + (let ((s5-0 (-> this adgifs))) (dotimes (s4-0 (-> s5-0 length)) (adgif-shader-login-no-remap (-> s5-0 data s4-0))))) + this) (define *test-shrub* 0) ;; unused. @@ -211,56 +145,39 @@ ;; set up some stuff in the scratchpad (set! (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) lev-index) (-> lev index)) (set! (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) mood) (-> lev mood)) - ;; update the subdivision settings (if *artist-use-menu-subdiv* - (update-subdivide-settings! *subdivide-settings* *math-camera* 3) - (update-subdivide-settings! *subdivide-settings* *math-camera* (-> lev index)) - ) - + (update-subdivide-settings! *subdivide-settings* *math-camera* 3) + (update-subdivide-settings! *subdivide-settings* *math-camera* (-> lev index))) ;; at this point we are no longer adding textures, so we can mark the end of the ;; textures with interrupts to get rendering VIF interrupts for profiling. (add-irq-to-tex-buckets! lev) - ;; upload the visible list to the scratchpad. ;; the final result of all visibility calculations is stored in vis-bits. ;; this goes at the end of the scratchpad. (let ((vis-list-qwc (/ (+ (-> this visible-list-length) 15) 16))) - (dma-send-to-spr-no-flush - (scratchpad-object uint :offset VISIBLE_LIST_SCRATCHPAD) - (the-as uint (-> lev vis-bits)) - (the-as uint vis-list-qwc) - #f - ) - ) - ) - + (dma-send-to-spr-no-flush (scratchpad-object uint :offset VISIBLE_LIST_SCRATCHPAD) + (the-as uint (-> lev vis-bits)) + (the-as uint vis-list-qwc) + #f))) ;; this is a race condition with the previous DMA transfer. ;; probably the DMA wins though. ;; this messes with the visibility bits to invert what was just uploaded (when *artist-flip-visible* (let ((vis-list-qwc2 (/ (+ (-> this visible-list-length) 15) 16)) (vis-list-spad (scratchpad-object (pointer uint128) :offset VISIBLE_LIST_SCRATCHPAD)) - (vis-list-lev (the-as (pointer uint128) (-> this all-visible-list))) - ) + (vis-list-lev (the-as (pointer uint128) (-> this all-visible-list)))) ;; iterate through all qw's in the visible list. (dotimes (current-qw vis-list-qwc2) ;; invert the stuff in the spad list (let ((a3-3 (-> vis-list-spad current-qw))) ;; note: this isn't great x86 code, but it's probably fine. - (.pnor a3-4 a3-3 r0) - ) + (.pnor a3-4 a3-3 r0)) ;; and with the all visible list so we don't ;; accidentally turn on the vis bit for something that ;; doesn't exist. - (let ((t0-2 (-> vis-list-lev current-qw))) - (.pand a3-5 a3-4 t0-2) - ) - (set! (-> vis-list-spad current-qw) a3-5) - ) - ) - ) - + (let ((t0-2 (-> vis-list-lev current-qw))) (.pand a3-5 a3-4 t0-2)) + (set! (-> vis-list-spad current-qw) a3-5)))) ;; set up the math camera registers (let ((at-0 *math-camera*)) (with-vf (vf16 vf17 vf18 vf19 vf20 vf21 vf22 vf23 vf24 vf25 vf26 vf27 vf28 vf29 vf30 vf31) @@ -280,81 +197,54 @@ (.lvf vf28 (&-> at-0 camera-temp vector 0 quad)) (.lvf vf29 (&-> at-0 camera-temp vector 1 quad)) (.lvf vf30 (&-> at-0 camera-temp vector 2 quad)) - (.lvf vf31 (&-> at-0 camera-temp vector 3 quad)) - ) - ) - + (.lvf vf31 (&-> at-0 camera-temp vector 3 quad)))) ;; draw the drawables! ;; start a profile bar. (when (nonzero? (-> this drawable-trees)) (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))) ;; draw! - (let ((a1-7 (-> this drawable-trees))) - (draw a1-7 a1-7 disp-frame) - ) + (let ((a1-7 (-> this drawable-trees))) (draw a1-7 a1-7 disp-frame)) ;; end a profile bar (if *debug-segment* - (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #xc0 :a #x80) - ) - ) - ) - + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #xc0 :a #x80)))) ;; run the foreground system (0 check added) (when (nonzero? foreground-engine-execute) (let ((s5-1 (-> *display* frames (-> *display* on-screen) frame))) ;; 0 - (foreground-engine-execute - (-> this level foreground-draw-engine 0) - s5-1 - (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) lev-index) - 0 - ) + (foreground-engine-execute (-> this level foreground-draw-engine 0) + s5-1 + (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) lev-index) + 0) ;; 1 - (foreground-engine-execute - (-> this level foreground-draw-engine 1) - s5-1 - (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) lev-index) - 1 - ) - + (foreground-engine-execute (-> this level foreground-draw-engine 1) + s5-1 + (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) lev-index) + 1) ;; 2 - (foreground-engine-execute - (-> this level foreground-draw-engine 2) - s5-1 - (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) lev-index) - 2 - ) - ) - ) - - (none) - ) + (foreground-engine-execute (-> this level foreground-draw-engine 2) + s5-1 + (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) lev-index) + 2))) + (none)) (defmethod debug-draw ((this bsp-header) (arg0 drawable) (arg1 display-frame)) "This is some sort of debugging thing. It calls debug-draw on the drawables with the scratchpad and vfs set up." - (let ((s4-0 (-> this level))) ;; set up some stuff in the scratchpad (set! (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) lev-index) (-> s4-0 index)) (set! (-> (scratchpad-object terrain-bsp :offset TERRAIN_BSP_SCRATCHPAD) mood) (-> s4-0 mood)) (add-irq-to-tex-buckets! s4-0) (let ((a2-1 (/ (+ (-> this visible-list-length) 15) 16))) - (dma-send-to-spr-no-flush - (scratchpad-object uint :offset VISIBLE_LIST_SCRATCHPAD) - (the-as uint (-> s4-0 vis-bits)) - (the-as uint a2-1) - #f - ) - ) - ) + (dma-send-to-spr-no-flush (scratchpad-object uint :offset VISIBLE_LIST_SCRATCHPAD) + (the-as uint (-> s4-0 vis-bits)) + (the-as uint a2-1) + #f))) (let ((at-0 *math-camera*)) (with-vf (vf16 vf17 vf18 vf19 vf20 vf21 vf22 vf23 vf24 vf25 vf26 vf27 vf28 vf29 vf30 vf31) :rw 'write @@ -373,41 +263,27 @@ (.lvf vf28 (&-> at-0 camera-temp vector 0 quad)) (.lvf vf29 (&-> at-0 camera-temp vector 1 quad)) (.lvf vf30 (&-> at-0 camera-temp vector 2 quad)) - (.lvf vf31 (&-> at-0 camera-temp vector 3 quad)) - ) - ) + (.lvf vf31 (&-> at-0 camera-temp vector 3 quad)))) (when (nonzero? (-> this drawable-trees)) (if *debug-segment* - (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) - (let ((a1-3 (-> this drawable-trees))) - (debug-draw a1-3 a1-3 arg1) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) + (let ((a1-3 (-> this drawable-trees))) (debug-draw a1-3 a1-3 arg1)) (if *debug-segment* - (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #xc0 :a #x80) - ) - ) - ) - (none) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #xc0 :a #x80)))) + (none)) (defmethod collect-stats ((this bsp-header)) "Collect drawing statistics" (let ((v1-0 (-> this level)) - (a2-0 (/ (+ (-> this visible-list-length) 15) 16)) - ) - (dma-send-to-spr-no-flush - (scratchpad-object uint :offset VISIBLE_LIST_SCRATCHPAD) - (the-as uint (-> v1-0 vis-bits)) - (the-as uint a2-0) - #f - ) - ) + (a2-0 (/ (+ (-> this visible-list-length) 15) 16))) + (dma-send-to-spr-no-flush (scratchpad-object uint :offset VISIBLE_LIST_SCRATCHPAD) + (the-as uint (-> v1-0 vis-bits)) + (the-as uint a2-0) + #f)) (let ((at-0 *math-camera*)) (with-vf (vf16 vf17 vf18 vf19 vf20 vf21 vf22 vf23 vf24 vf25 vf26 vf27 vf28 vf29 vf30 vf31) :rw 'write @@ -426,22 +302,16 @@ (.lvf vf28 (&-> at-0 camera-temp vector 0 quad)) (.lvf vf29 (&-> at-0 camera-temp vector 1 quad)) (.lvf vf30 (&-> at-0 camera-temp vector 2 quad)) - (.lvf vf31 (&-> at-0 camera-temp vector 3 quad)) - ) - ) - (if (nonzero? (-> this drawable-trees)) - (collect-stats (-> this drawable-trees)) - ) - (none) - ) + (.lvf vf31 (&-> at-0 camera-temp vector 3 quad)))) + (if (nonzero? (-> this drawable-trees)) (collect-stats (-> this drawable-trees))) + (none)) (defun bsp-camera-asm ((bsp-hdr bsp-header) (camera-pos vector)) "Look up the camera position in the bsp tree. The result is stored in the bsp-hdr current-leaf-idx" (local-vars (v1-1 int) (real-node bsp-node)) (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (nop!) ;; next-node contains the node (or child) that we will check next. (let ((next-node (the-as bsp-node (-> bsp-hdr nodes)))) @@ -451,7 +321,6 @@ (label cfg-1) ;; branch if twe got a child (b! (< (the-as int next-node) 0) cfg-4 :delay (set! real-node next-node)) - ;; load the plane (.lvf vf2 (&-> real-node plane quad)) ;; elementwise multiply xyz @@ -468,25 +337,20 @@ (b! (>= (the-as int v1-1) 0) cfg-1 ;; in the dealy slot, advance the node - :delay (set! next-node (the-as bsp-node (-> real-node front))) - ) + :delay + (set! next-node (the-as bsp-node (-> real-node front)))) ;; otherwise, we are on the back side. (set! a2-0 (-> real-node back-flags)) (b! #t cfg-1 :delay (set! next-node (the-as bsp-node (-> real-node back)))) - ;; here we got a child. (label cfg-4) (set! (-> bsp-hdr current-leaf-idx) (the-as uint next-node)) ;; back flags is a bit confusing name. ;; it's actually the flags for whatever side we are on of the ;; lowest node. - (set! (-> bsp-hdr current-bsp-back-flags) a2-0) - ) - ) + (set! (-> bsp-hdr current-bsp-back-flags) a2-0))) 0 - (none) - ) - ) + (none))) ;;;;;;;;;;;;;;; ;; Collision @@ -497,40 +361,26 @@ (+! (-> *collide-stats* calls) 1) (let ((s4-0 (-> this drawable-trees))) (dotimes (s3-0 (-> s4-0 length)) - (collide-with-box (-> s4-0 trees s3-0) arg0 arg1) - ) - ) - (none) - ) + (collide-with-box (-> s4-0 trees s3-0) arg0 arg1))) + (none)) (defmethod collide-y-probe ((this bsp-header) (arg0 int) (arg1 collide-list)) (+! (-> *collide-stats* calls) 1) (let ((s4-0 (-> this drawable-trees))) (dotimes (s3-0 (-> s4-0 length)) - (collide-y-probe (-> s4-0 trees s3-0) arg0 arg1) - ) - ) - (none) - ) + (collide-y-probe (-> s4-0 trees s3-0) arg0 arg1))) + (none)) (defmethod collide-ray ((this bsp-header) (arg0 int) (arg1 collide-list)) (+! (-> *collide-stats* calls) 1) - (let ((s4-0 (-> this drawable-trees))) - (dotimes (s3-0 (-> s4-0 length)) - (collide-ray (-> s4-0 trees s3-0) arg0 arg1) - ) - ) - (none) - ) + (let ((s4-0 (-> this drawable-trees))) (dotimes (s3-0 (-> s4-0 length)) (collide-ray (-> s4-0 trees s3-0) arg0 arg1))) + (none)) (defmethod collect-ambients ((this bsp-header) (arg0 sphere) (arg1 int) (arg2 ambient-list)) (let ((s3-0 (-> this drawable-trees))) (dotimes (s2-0 (-> s3-0 length)) - (collect-ambients (-> s3-0 trees s2-0) arg0 arg1 arg2) - ) - ) - (none) - ) + (collect-ambients (-> s3-0 trees s2-0) arg0 arg1 arg2))) + (none)) (defun clear-cl-stat ((arg0 cl-stat)) "Reset stats" @@ -538,56 +388,45 @@ (set! (-> arg0 tris) (the-as uint 0)) (set! (-> arg0 output) (the-as uint 0)) 0 - (none) - ) + (none)) (defun print-cl-stat ((arg0 cl-stat) (arg1 string)) "Print stats for arg1" (when (nonzero? (+ (-> arg0 fragments) (-> arg0 tris))) - (format - *stdcon* - "~0k~5d/~d ~6d/~d ~6d/~d " - (-> arg0 fragments) - (/ (-> arg0 fragments) (-> *collide-stats* calls)) - (-> arg0 tris) - (/ (-> arg0 tris) (-> *collide-stats* calls)) - (-> arg0 output) - (/ (-> arg0 output) (-> *collide-stats* calls)) - ) + (format *stdcon* + "~0k~5d/~d ~6d/~d ~6d/~d " + (-> arg0 fragments) + (/ (-> arg0 fragments) (-> *collide-stats* calls)) + (-> arg0 tris) + (/ (-> arg0 tris) (-> *collide-stats* calls)) + (-> arg0 output) + (/ (-> arg0 output) (-> *collide-stats* calls))) (format *stdcon* "~0k~s~%" arg1) (+! (-> *collide-stats* total fragments) (-> arg0 fragments)) (+! (-> *collide-stats* total tris) (-> arg0 tris)) - (+! (-> *collide-stats* total output) (-> arg0 output)) - ) - (none) - ) + (+! (-> *collide-stats* total output) (-> arg0 output))) + (none)) (defun print-collide-stats () "Print and reset collide stats for this frame" ;; for some unknown reason, we profile this. (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))) (format *stdcon* "~0k frags tris output~%") (print-cl-stat (-> *collide-stats* other) "other") (format *stdcon* "~0k---------------------------------------------------------------~%") (print-cl-stat (-> *collide-stats* total) "total") (format *stdcon* "~0kcalls = ~d~%" (-> *collide-stats* calls)) - ;; figure out how long we spent in each (let ((gp-0 (stopwatch-elapsed-ticks (-> *collide-stats* total-target))) (s4-0 (stopwatch-elapsed-ticks (-> *collide-stats* target-cache-fill))) - (s5-0 (stopwatch-elapsed-ticks (-> *collide-stats* target-ray-poly))) - ) + (s5-0 (stopwatch-elapsed-ticks (-> *collide-stats* target-ray-poly)))) (format *stdcon* "~0ktotal-target ~D~%" gp-0) ;; these can divide by zero if it doesn't run. (format *stdcon* "~0ktarget-cache-fill ~D ~0,,2f%~%" s4-0 (/ (* 100.0 (the float s4-0)) (the float gp-0))) - (format *stdcon* "~0ktarget-ray-poly ~D ~0,,2f%~%" s5-0 (/ (* 100.0 (the float s5-0)) (the float gp-0))) - ) + (format *stdcon* "~0ktarget-ray-poly ~D ~0,,2f%~%" s5-0 (/ (* 100.0 (the float s5-0)) (the float gp-0)))) ;; reset (clear-cl-stat (-> *collide-stats* other)) (clear-cl-stat (-> *collide-stats* total)) @@ -597,67 +436,39 @@ (stopwatch-init (-> *collide-stats* target-cache-fill)) (stopwatch-init (-> *collide-stats* target-ray-poly)) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :b #xff :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) 'draw (new 'static 'rgba :b #xff :a #x80))) 0 - (none) - ) + (none)) (defun level-remap-texture ((tex-id texture-id)) "Uses the currently loading level's remap table to turn a texture-id into a level-specific texture-id" (let ((bsp-hdr (-> *level* log-in-level-bsp))) (when bsp-hdr - (let* ((table-size (-> bsp-hdr texture-remap-table-len)) ;; in 64-bit entries + (let* ((table-size (-> bsp-hdr texture-remap-table-len)) ;; in 64-bit entries (table-data-ptr (-> bsp-hdr texture-remap-table)) (table-data-start table-data-ptr) (mask1 (the-as uint #xfffffff8)) ;; mask for table entry addresses (masked-tex-id (logand (the-as uint #xffffff00) tex-id)) ;; bits of tex-id we care about - (table-data-end (&+ table-data-start (* table-size 8))) - ) + (table-data-end (&+ table-data-start (* table-size 8)))) ;; top of binary search (label cfg-2) ;; if we didn't find anything, quit (b! (= table-data-ptr table-data-end) cfg-8) - ;; find the middle entry. - (let ((midpoint (logand (/ (+ (the-as int table-data-ptr) (the-as int table-data-end)) 2) - mask1 - ) - ) - ) + (let ((midpoint (logand (/ (+ (the-as int table-data-ptr) (the-as int table-data-end)) 2) mask1))) ;; how did we do? (let ((diff (- (-> (the-as (pointer int32) midpoint) 0) (the-as int masked-tex-id)))) (b! (zero? diff) cfg-7) - (b! (< diff 0) cfg-6 :delay (nop!)) - ) + (b! (< diff 0) cfg-6 :delay (nop!))) ;; in the lower section - (b! #t cfg-2 - :delay - (set! table-data-end (the-as (pointer uint64) midpoint)) - ) - + (b! #t cfg-2 :delay (set! table-data-end (the-as (pointer uint64) midpoint))) ;; in the upper section (not including the midpoint) (label cfg-6) - (b! #t cfg-2 - :delay - (set! table-data-ptr (the-as (pointer uint64) (+ (the-as int midpoint) 8))) - ) - + (b! #t cfg-2 :delay (set! table-data-ptr (the-as (pointer uint64) (+ (the-as int midpoint) 8)))) ;; exact match (label cfg-7) ;; not sure what this logior with 20 is about. - (set! tex-id - (the-as texture-id (logior (-> (the-as (pointer int32) midpoint) 1) 20)) - ) - ) - ) + (set! tex-id (the-as texture-id (logior (-> (the-as (pointer int32) midpoint) 1) 20))))) (label cfg-8) - 0 - ) - ) - (the-as texture-id tex-id) - ) + 0)) + (the-as texture-id tex-id)) diff --git a/goal_src/jak1/engine/level/level-h.gc b/goal_src/jak1/engine/level/level-h.gc index 91a9efef69..907fb90afc 100644 --- a/goal_src/jak1/engine/level/level-h.gc +++ b/goal_src/jak1/engine/level/level-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/vu1-user-h.gc") (require "engine/dma/dma-h.gc") -;; name: level-h.gc -;; name in dgo: level-h -;; dgos: GAME, ENGINE - ;; The level system is responsible for loading and managning the two levels, ;; including the visible data. @@ -18,11 +13,17 @@ (defconstant LEVEL_COUNT 2) ;; there are two levels in memory! (declare-type bsp-header basic) + (declare-type drawable basic) + (declare-type engine basic) + (declare-type entity-links-array basic) + (declare-type entity-ambient-data-array basic) + (declare-type mood-context basic) + (declare-type entity-links structure) ;; DECOMP BEGINS @@ -50,9 +51,9 @@ (defenum vis-info-flag :bitfield #t :type uint32 - (from-vis-file 29) ;; is .VIS file vis? - (waiting-for-iop-to-ee 30) ;; not here yet - (using-this-as-only-vis 31) ;; using this as the only visibility data + (from-vis-file 29) ;; is .VIS file vis? + (waiting-for-iop-to-ee 30) ;; not here yet + (using-this-as-only-vis 31) ;; using this as the only visibility data ) ;; Information related to visibility data for a level. @@ -70,187 +71,171 @@ ;; levels. This means that visibility for "beach" near the border of "village1" is stored in ;; both BEA.VIS and VI1.VIS. (deftype level-vis-info (basic) - ((level symbol) - (from-level symbol) - (from-bsp bsp-header) - (flags uint32) - (length uint32) - (allocated-length uint32) - (dictionary-length uint32) - (dictionary uint32) - (string-block uint32) - (ramdisk uint32) - (vis-bits pointer) - (current-vis-string uint32) - (vis-string uint32 :dynamic) - ) - ) - + ((level symbol) + (from-level symbol) + (from-bsp bsp-header) + (flags uint32) + (length uint32) + (allocated-length uint32) + (dictionary-length uint32) + (dictionary uint32) + (string-block uint32) + (ramdisk uint32) + (vis-bits pointer) + (current-vis-string uint32) + (vis-string uint32 :dynamic))) (defmethod asize-of ((this level-vis-info)) "Get the size of a level-vis-info in memory" - (the-as int (+ (-> level-vis-info size) (-> this dictionary-length))) - ) + (the-as int (+ (-> level-vis-info size) (-> this dictionary-length)))) ;; Per level information related to how to load the level. ;; These are stored in level-info.gc which is always loaded, so this should have all the information required ;; to do a level load. (deftype level-load-info (basic) - ((name-list symbol 3) - (index int32) ;; the level number (starting with 1?) - (name symbol :overlay-at (-> name-list 0)) - (visname symbol :overlay-at (-> name-list 1)) - (nickname symbol :overlay-at (-> name-list 2)) - (packages pair) - (sound-banks pair) - (music-bank symbol) - (ambient-sounds pair) - (mood symbol) - (mood-func symbol) - (ocean symbol) - (sky symbol) - (sun-fade float) - (continues pair) - (tasks pair) - (priority int32) - (load-commands pair) - (alt-load-commands pair) - (bsp-mask uint64) - (bsphere sphere) - (buzzer int32) - (bottom-height meters) - (run-packages pair) - (prev-level basic) - (next-level basic) - (wait-for-load symbol) - ) - ) + ((name-list symbol 3) + (index int32) ;; the level number (starting with 1?) + (name symbol :overlay-at (-> name-list 0)) + (visname symbol :overlay-at (-> name-list 1)) + (nickname symbol :overlay-at (-> name-list 2)) + (packages pair) + (sound-banks pair) + (music-bank symbol) + (ambient-sounds pair) + (mood symbol) + (mood-func symbol) + (ocean symbol) + (sky symbol) + (sun-fade float) + (continues pair) + (tasks pair) + (priority int32) + (load-commands pair) + (alt-load-commands pair) + (bsp-mask uint64) + (bsphere sphere) + (buzzer int32) + (bottom-height meters) + (run-packages pair) + (prev-level basic) + (next-level basic) + (wait-for-load symbol))) ;; The levels are initialized (called "login") over multiple frames. ;; The state of this process is stored in a login-state. (deftype login-state (basic) - ((state int32) - (pos uint32) - (elts uint32) - (elt drawable 16) - ) - ) + ((state int32) + (pos uint32) + (elts uint32) + (elt drawable 16))) ;; The actual "level". This manages loading and running a game level. ;; These are allocated by the engine and aren't in static level data. (deftype level (basic) - ((name symbol) - (load-name symbol) - (nickname symbol) - (index int32) - (status symbol) - (other level) - (heap kheap :inline) - (bsp bsp-header) - (art-group load-dir-art-group) - (info level-load-info) - (texture-page texture-page 9) - (loaded-texture-page texture-page 16) - (loaded-texture-page-count int32) - (tfrag-tex-foreground-sink-group dma-foreground-sink-group :inline) - (pris-tex-foreground-sink-group dma-foreground-sink-group :inline) - (water-tex-foreground-sink-group dma-foreground-sink-group :inline) - (foreground-sink-group dma-foreground-sink-group 3 :inline :overlay-at tfrag-tex-foreground-sink-group) - (foreground-draw-engine engine 3) - (entity entity-links-array) - (ambient entity-ambient-data-array) - (closest-object float 9) - (upload-size int32 9) - (level-distance meters) - (inside-sphere? symbol) - (inside-boxes? symbol) - (display? symbol) - (meta-inside? symbol) - (mood mood-context) - (mood-func (function mood-context float int none)) - (vis-bits pointer) - (all-visible? symbol) - (force-all-visible? symbol) - (linking basic) - (vis-info level-vis-info 8) - (vis-self-index int32) - (vis-adj-index int32) - (vis-buffer uint8 2048) - (mem-usage-block memory-usage-block) - (mem-usage int32) - (code-memory-start pointer) - (code-memory-end pointer) - (texture-mask uint32 9) - (force-inside? symbol) - (pad uint8 56) - ) + ((name symbol) + (load-name symbol) + (nickname symbol) + (index int32) + (status symbol) + (other level) + (heap kheap :inline) + (bsp bsp-header) + (art-group load-dir-art-group) + (info level-load-info) + (texture-page texture-page 9) + (loaded-texture-page texture-page 16) + (loaded-texture-page-count int32) + (tfrag-tex-foreground-sink-group dma-foreground-sink-group :inline) + (pris-tex-foreground-sink-group dma-foreground-sink-group :inline) + (water-tex-foreground-sink-group dma-foreground-sink-group :inline) + (foreground-sink-group dma-foreground-sink-group 3 :inline :overlay-at tfrag-tex-foreground-sink-group) + (foreground-draw-engine engine 3) + (entity entity-links-array) + (ambient entity-ambient-data-array) + (closest-object float 9) + (upload-size int32 9) + (level-distance meters) + (inside-sphere? symbol) + (inside-boxes? symbol) + (display? symbol) + (meta-inside? symbol) + (mood mood-context) + (mood-func (function mood-context float int none)) + (vis-bits pointer) + (all-visible? symbol) + (force-all-visible? symbol) + (linking basic) + (vis-info level-vis-info 8) + (vis-self-index int32) + (vis-adj-index int32) + (vis-buffer uint8 2048) + (mem-usage-block memory-usage-block) + (mem-usage int32) + (code-memory-start pointer) + (code-memory-end pointer) + (texture-mask uint32 9) + (force-inside? symbol) + (pad uint8 56)) (:methods - (deactivate (_type_) _type_) - (is-object-visible? (_type_ int) symbol) - (add-irq-to-tex-buckets! (_type_) none) - (unload! (_type_) _type_) - (bsp-name (_type_) symbol) - (compute-memory-usage (_type_ object) memory-usage-block) - (point-in-boxes? (_type_ vector) symbol) - (update-vis! (_type_ level-vis-info uint uint) symbol) - (load-continue (_type_) _type_) - (load-begin (_type_) _type_) - (login-begin (_type_) _type_) - (vis-load (_type_) uint) - (unused-21 (_type_) none) - (birth (_type_) _type_) - (level-status-set! (_type_ symbol) _type_) - (load-required-packages (_type_) _type_) - (init-vis (_type_) int) - (vis-clear (_type_) int) - (debug-print-splitbox (_type_ vector string) none) - (art-group-get-by-name (_type_ string) art-group) - ) - ) - + (deactivate (_type_) _type_) + (is-object-visible? (_type_ int) symbol) + (add-irq-to-tex-buckets! (_type_) none) + (unload! (_type_) _type_) + (bsp-name (_type_) symbol) + (compute-memory-usage (_type_ object) memory-usage-block) + (point-in-boxes? (_type_ vector) symbol) + (update-vis! (_type_ level-vis-info uint uint) symbol) + (load-continue (_type_) _type_) + (load-begin (_type_) _type_) + (login-begin (_type_) _type_) + (vis-load (_type_) uint) + (unused-21 (_type_) none) + (birth (_type_) _type_) + (level-status-set! (_type_ symbol) _type_) + (load-required-packages (_type_) _type_) + (init-vis (_type_) int) + (vis-clear (_type_) int) + (debug-print-splitbox (_type_ vector string) none) + (art-group-get-by-name (_type_ string) art-group))) (deftype level-group (basic) - ((length int32) - (log-in-level-bsp bsp-header) - (loading-level level) - (entity-link entity-links) - (border? basic) - (vis? basic) - (want-level basic) - (receiving-level basic) - (load-commands pair) - (play? symbol) - (_hack-pad uint8 :offset 90) - (level0 level :inline) - (level1 level :inline) - (level-default level :inline) - (level level 3 :inline :overlay-at level0) - (data level 3 :inline :overlay-at level0) - (pad uint32) - ) + ((length int32) + (log-in-level-bsp bsp-header) + (loading-level level) + (entity-link entity-links) + (border? basic) + (vis? basic) + (want-level basic) + (receiving-level basic) + (load-commands pair) + (play? symbol) + (_hack-pad uint8 :offset 90) + (level0 level :inline) + (level1 level :inline) + (level-default level :inline) + (level level 3 :inline :overlay-at level0) + (data level 3 :inline :overlay-at level0) + (pad uint32)) (:methods - (level-get (_type_ symbol) level) - (level-get-with-status (_type_ symbol) level) - (level-get-for-use (_type_ symbol symbol) level) - (activate-levels! (_type_) int) - (debug-print-entities (_type_ symbol type) none) - (debug-draw-actors (_type_ symbol) none) - (actors-update (_type_) object) - (level-update (_type_) int) - (level-get-target-inside (_type_) level) - (alloc-levels! (_type_ symbol) int) - (load-commands-set! (_type_ pair) pair) - (art-group-get-by-name (_type_ string) art-group) - (load-command-get-index (_type_ symbol int) pair) - (update-vis-volumes (_type_) none) - (update-vis-volumes-from-nav-mesh (_type_) none) - (print-volume-sizes (_type_) none) - (level-status (_type_ symbol) symbol) - (level-get-most-disposable (_type_) level) - ) - ) - + (level-get (_type_ symbol) level) + (level-get-with-status (_type_ symbol) level) + (level-get-for-use (_type_ symbol symbol) level) + (activate-levels! (_type_) int) + (debug-print-entities (_type_ symbol type) none) + (debug-draw-actors (_type_ symbol) none) + (actors-update (_type_) object) + (level-update (_type_) int) + (level-get-target-inside (_type_) level) + (alloc-levels! (_type_ symbol) int) + (load-commands-set! (_type_ pair) pair) + (art-group-get-by-name (_type_ string) art-group) + (load-command-get-index (_type_ symbol int) pair) + (update-vis-volumes (_type_) none) + (update-vis-volumes-from-nav-mesh (_type_) none) + (print-volume-sizes (_type_) none) + (level-status (_type_ symbol) symbol) + (level-get-most-disposable (_type_) level))) (defun-extern level-update-after-load level login-state level) @@ -258,148 +243,177 @@ ;; there are 3 foreground sinks per texture bucket: merc, generic, and an unused one. ;; TODO: figure out exactly which buckets are used for what. (define-extern *level* level-group) -(if (zero? *level*) - (set! *level* - (new 'static 'level-group - :length 2 - :log-in-level-bsp #f - :loading-level #f - :entity-link #f - :border? #f - :want-level #f - :load-commands '() - :play? #f - :level0 (new 'static 'level - :name #f - :status 'inactive - :tfrag-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group - :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink :bucket (bucket-id merc-tfrag-tex0)) - (new 'static 'generic-dma-foreground-sink :bucket (bucket-id generic-tfrag-tex0) :foreground-output-bucket 1) - ) - ) - :pris-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group - :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink :bucket (bucket-id merc-pris0) :foreground-texture-page 1) - (new 'static 'generic-dma-foreground-sink - :bucket (bucket-id generic-pris0) - :foreground-texture-page 1 - :foreground-output-bucket 1 - ) - ) - ) - :water-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group - :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink :bucket (bucket-id merc-water0) :foreground-texture-page 2) - (new 'static 'generic-dma-foreground-sink - :bucket (bucket-id generic-water0) - :foreground-texture-page 2 - :foreground-output-bucket 1 - ) - ) - ) - :inside-sphere? #f - :inside-boxes? #f - :force-inside? #f - ) - :level1 (new 'static 'level - :name #f - :index 1 - :status 'inactive - :tfrag-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group - :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink :bucket (bucket-id merc-tfrag-tex1) :foreground-texture-level 1) - (new 'static 'generic-dma-foreground-sink - :bucket (bucket-id generic-tfrag-tex1) - :foreground-texture-level 1 - :foreground-output-bucket 1 - ) - ) - ) - :pris-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink - :bucket (bucket-id merc-pris1) - :foreground-texture-page 1 - :foreground-texture-level 1 - ) - (new 'static 'generic-dma-foreground-sink - :bucket (bucket-id generic-pris1) - :foreground-texture-page 1 - :foreground-texture-level 1 - :foreground-output-bucket 1 - ) - ) - ) - :water-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink - :bucket (bucket-id merc-water1) - :foreground-texture-page 2 - :foreground-texture-level 1 - ) - (new 'static 'generic-dma-foreground-sink - :bucket (bucket-id generic-water1) - :foreground-texture-page 2 - :foreground-texture-level 1 - :foreground-output-bucket 1 - ) - ) - ) - :inside-sphere? #f - :inside-boxes? #f - :force-inside? #f - ) - :level-default (new 'static 'level - :name 'default - :index 2 - :status 'reserved - :tfrag-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group - :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink :bucket (bucket-id merc-alpha-tex) :foreground-texture-level 2) - (new 'static 'generic-dma-foreground-sink - :bucket (bucket-id generic-alpha-tex) - :foreground-texture-level 2 - :foreground-output-bucket 1 - ) - ) - ) - :pris-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink - :bucket (bucket-id merc-pris-common) - :foreground-texture-page 1 - :foreground-texture-level 2 - ) - (new 'static 'generic-dma-foreground-sink - :bucket (bucket-id generic-pris-common) - :foreground-texture-page 1 - :foreground-texture-level 2 - :foreground-output-bucket 1 - ) - ) - ) - :water-tex-foreground-sink-group (new 'static 'dma-foreground-sink-group :sink (new 'static 'array dma-foreground-sink 3 - (new 'static 'dma-foreground-sink - :bucket (bucket-id merc-water0) - :foreground-texture-page 2 - :foreground-texture-level 2 - ) - (new 'static 'generic-dma-foreground-sink - :bucket (bucket-id generic-water0) - :foreground-texture-page 2 - :foreground-texture-level 2 - :foreground-output-bucket 1 - ) - ) - ) - :inside-sphere? #f - :inside-boxes? #f - :force-inside? #f - ) - ) - ) - ) - - +(if (zero? *level*) + (set! *level* + (new 'static + 'level-group + :length 2 + :log-in-level-bsp #f + :loading-level #f + :entity-link #f + :border? #f + :want-level #f + :load-commands + '() + :play? #f + :level0 + (new 'static + 'level + :name #f + :status 'inactive + :tfrag-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static 'dma-foreground-sink :bucket (bucket-id merc-tfrag-tex0)) + (new 'static 'generic-dma-foreground-sink :bucket (bucket-id generic-tfrag-tex0) :foreground-output-bucket 1))) + :pris-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static 'dma-foreground-sink :bucket (bucket-id merc-pris0) :foreground-texture-page 1) + (new 'static + 'generic-dma-foreground-sink + :bucket (bucket-id generic-pris0) + :foreground-texture-page 1 + :foreground-output-bucket 1))) + :water-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static 'dma-foreground-sink :bucket (bucket-id merc-water0) :foreground-texture-page 2) + (new 'static + 'generic-dma-foreground-sink + :bucket (bucket-id generic-water0) + :foreground-texture-page 2 + :foreground-output-bucket 1))) + :inside-sphere? #f + :inside-boxes? #f + :force-inside? #f) + :level1 + (new 'static + 'level + :name #f + :index 1 + :status 'inactive + :tfrag-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static 'dma-foreground-sink :bucket (bucket-id merc-tfrag-tex1) :foreground-texture-level 1) + (new 'static + 'generic-dma-foreground-sink + :bucket (bucket-id generic-tfrag-tex1) + :foreground-texture-level 1 + :foreground-output-bucket 1))) + :pris-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static 'dma-foreground-sink :bucket (bucket-id merc-pris1) :foreground-texture-page 1 :foreground-texture-level 1) + (new 'static + 'generic-dma-foreground-sink + :bucket (bucket-id generic-pris1) + :foreground-texture-page 1 + :foreground-texture-level 1 + :foreground-output-bucket 1))) + :water-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static 'dma-foreground-sink :bucket (bucket-id merc-water1) :foreground-texture-page 2 :foreground-texture-level 1) + (new 'static + 'generic-dma-foreground-sink + :bucket (bucket-id generic-water1) + :foreground-texture-page 2 + :foreground-texture-level 1 + :foreground-output-bucket 1))) + :inside-sphere? #f + :inside-boxes? #f + :force-inside? #f) + :level-default + (new 'static + 'level + :name 'default + :index 2 + :status 'reserved + :tfrag-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static 'dma-foreground-sink :bucket (bucket-id merc-alpha-tex) :foreground-texture-level 2) + (new 'static + 'generic-dma-foreground-sink + :bucket (bucket-id generic-alpha-tex) + :foreground-texture-level 2 + :foreground-output-bucket 1))) + :pris-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static + 'dma-foreground-sink + :bucket (bucket-id merc-pris-common) + :foreground-texture-page 1 + :foreground-texture-level 2) + (new 'static + 'generic-dma-foreground-sink + :bucket (bucket-id generic-pris-common) + :foreground-texture-page 1 + :foreground-texture-level 2 + :foreground-output-bucket 1))) + :water-tex-foreground-sink-group + (new 'static + 'dma-foreground-sink-group + :sink + (new 'static + 'array + dma-foreground-sink + 3 + (new 'static 'dma-foreground-sink :bucket (bucket-id merc-water0) :foreground-texture-page 2 :foreground-texture-level 2) + (new 'static + 'generic-dma-foreground-sink + :bucket (bucket-id generic-water0) + :foreground-texture-page 2 + :foreground-texture-level 2 + :foreground-output-bucket 1))) + :inside-sphere? #f + :inside-boxes? #f + :force-inside? #f)))) (define-extern *level-load-list* pair) + (define-extern lookup-level-info (function symbol level-load-info)) diff --git a/goal_src/jak1/engine/level/level-info.gc b/goal_src/jak1/engine/level/level-info.gc index 52b857cb31..f3f2958f80 100644 --- a/goal_src/jak1/engine/level/level-info.gc +++ b/goal_src/jak1/engine/level/level-info.gc @@ -1,2021 +1,2527 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/quaternion-h.gc") (require "engine/math/vector-h.gc") (require "engine/level/level-h.gc") (require "engine/game/game-info-h.gc") -;; name: level-info.gc -;; name in dgo: level-info -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define training - (new 'static 'level-load-info - :index 1 - :name 'training - :visname 'training-vis - :nickname 'tra - :packages '(training) - :sound-banks '(training) - :music-bank 'village1 - :ambient-sounds '() - :mood '*training-mood* - :mood-func 'update-mood-training - :ocean '*ocean-map-village1* - :sky #t - :sun-fade 1.0 - :continues '((new 'static 'continue-point - :name "training-start" - :level 'training - :trans (new 'static 'vector :x -5393626.5 :y 28072.346 :z 4332472.5 :w 1.0) - :quat (new 'static 'quaternion :y 0.9995 :w 0.0297) - :camera-trans (new 'static 'vector :x -5426915.0 :y 45930.906 :z 4353156.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.5571 0.0 -0.8304 0.1264 0.9883 -0.0848 0.8207 -0.1522 -0.5506) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - ) - :vis-nick 'tra - :lev0 'training - :disp0 'display - :lev1 'village1 - :disp1 'special - ) - (new 'static 'continue-point - :name "training-warp" - :level 'training - :flags (continue-flags warp) - :trans (new 'static 'vector :x -5383524.0 :y 28019.098 :z 4360302.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.084 :w 0.9964) - :camera-trans (new 'static 'vector :x -5366765.0 :y 45646.234 :z 4325889.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9057 0.0 0.4238 -0.0666 0.9875 0.1424 -0.4186 -0.1572 0.8944) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - ) - :vis-nick 'tra - :lev0 'training - :disp0 'display - :lev1 'village1 - :disp1 'special - ) - (new 'static 'continue-point - :name "game-start" - :level 'training - :flags (continue-flags warp game-start) - :trans (new 'static 'vector :x -5393740.5 :y 28259.533 :z 4360945.5 :w 1.0) - :quat (new 'static 'quaternion :y 0.9993 :w 0.0359) - :camera-trans (new 'static 'vector :x -5434444.5 :y 47050.344 :z 4372832.5 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.3536 0.0 -0.9353 0.1315 0.99 -0.0497 0.926 -0.1406 -0.35) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - ) - :vis-nick 'tra - :lev0 'training - :disp0 'display - :lev1 'village1 - :disp1 'special - ) - ) - :tasks '(92 93 94 95) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x -5079040.0 :z 4055040.0 :w 1024000.0) - :buzzer 95 - :bottom-height (meters -114) - :run-packages '("common" "villagep") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 1 + :name 'training + :visname 'training-vis + :nickname 'tra + :packages '(training) + :sound-banks '(training) + :music-bank 'village1 + :ambient-sounds + '() + :mood '*training-mood* + :mood-func 'update-mood-training + :ocean '*ocean-map-village1* + :sky #t + :sun-fade 1.0 + :continues + '((new 'static + 'continue-point + :name "training-start" + :level 'training + :trans + (new 'static 'vector :x -5393626.5 :y 28072.346 :z 4332472.5 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9995 :w 0.0297) + :camera-trans + (new 'static 'vector :x -5426915.0 :y 45930.906 :z 4353156.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.5571 0.0 -0.8304 0.1264 0.9883 -0.0848 0.8207 -0.1522 -0.5506) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t)) + :vis-nick 'tra + :lev0 'training + :disp0 'display + :lev1 'village1 + :disp1 'special) + (new 'static + 'continue-point + :name "training-warp" + :level 'training + :flags (continue-flags warp) + :trans + (new 'static 'vector :x -5383524.0 :y 28019.098 :z 4360302.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.084 :w 0.9964) + :camera-trans + (new 'static 'vector :x -5366765.0 :y 45646.234 :z 4325889.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9057 0.0 0.4238 -0.0666 0.9875 0.1424 -0.4186 -0.1572 0.8944) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t)) + :vis-nick 'tra + :lev0 'training + :disp0 'display + :lev1 'village1 + :disp1 'special) + (new 'static + 'continue-point + :name "game-start" + :level 'training + :flags (continue-flags warp game-start) + :trans + (new 'static 'vector :x -5393740.5 :y 28259.533 :z 4360945.5 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9993 :w 0.0359) + :camera-trans + (new 'static 'vector :x -5434444.5 :y 47050.344 :z 4372832.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.3536 0.0 -0.9353 0.1315 0.99 -0.0497 0.926 -0.1406 -0.35) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t)) + :vis-nick 'tra + :lev0 'training + :disp0 'display + :lev1 'village1 + :disp1 'special)) + :tasks + '(92 93 94 95) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x -5079040.0 :z 4055040.0 :w 1024000.0) + :buzzer 95 + :bottom-height (meters -114) + :run-packages + '("common" "villagep") + :wait-for-load #f)) (define village1 - (new 'static 'level-load-info - :index 2 - :name 'village1 - :visname 'village1-vis - :nickname 'vi1 - :packages '(village1) - :sound-banks '(village1) - :music-bank 'village1 - :ambient-sounds '() - :mood '*village1-mood* - :mood-func 'update-mood-village1 - :ocean '*ocean-map-village1* - :sky #t - :sun-fade 1.0 - :continues '((new 'static 'continue-point - :name "village1-hut" - :level 'village1 - :trans (new 'static 'vector :x -638860.06 :y 139319.7 :z 769990.6 :w 1.0) - :quat (new 'static 'quaternion :y -0.9889 :w -0.148) - :camera-trans (new 'static 'vector :x -668114.1 :y 164536.31 :z 828633.06 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.8947 0.0 -0.4464 0.1082 0.9701 -0.2169 0.4331 -0.2424 -0.868) - :load-commands '() - :vis-nick 'vi1 - :lev0 'village1 - :disp0 'display - :lev1 'beach - :disp1 #f - ) - (new 'static 'continue-point - :name "village1-intro" - :level 'village1 - :flags (continue-flags warp sage-intro) - :trans (new 'static 'vector :x -518468.8 :y 189424.03 :z 868568.7 :w 1.0) - :quat (new 'static 'quaternion :y 0.591 :w 0.8066) - :camera-trans (new 'static 'vector :x -559109.3 :y 200461.92 :z 826073.06 :w 1.0) - :camera-rot (new 'static 'array float 9 0.7221 0.0 -0.6917 -0.0517 0.9972 -0.054 0.6897 0.0747 0.7201) - :load-commands '() - :vis-nick 'vi1 - :lev0 'village1 - :disp0 'display - :lev1 #f - :disp1 #f - ) - (new 'static 'continue-point - :name "village1-warp" - :level 'village1 - :flags (continue-flags warp sage-ecorocks) - :trans (new 'static 'vector :x -518468.8 :y 189424.03 :z 868568.7 :w 1.0) - :quat (new 'static 'quaternion :y 0.591 :w 0.8066) - :camera-trans (new 'static 'vector :x -559109.3 :y 200461.92 :z 826073.06 :w 1.0) - :camera-rot (new 'static 'array float 9 0.7221 0.0 -0.6917 -0.0517 0.9972 -0.054 0.6897 0.0747 0.7201) - :load-commands '() - :vis-nick 'vi1 - :lev0 'village1 - :disp0 'display - :lev1 'beach - :disp1 #f - ) - (new 'static 'continue-point - :name "village1-demo-convo" - :level 'village1 - :flags (continue-flags sage-demo-convo) - :trans (new 'static 'vector :x -542529.1 :y 189424.03 :z 847101.94 :w 1.0) - :quat (new 'static 'quaternion :y -0.1717 :w -0.9851) - :camera-trans (new 'static 'vector :x -559085.2 :y 202996.53 :z 826054.25 :w 1.0) - :camera-rot (new 'static 'array float 9 0.7868 0.0 -0.6171 0.0775 0.992 0.0989 0.6122 -0.1257 0.7806) - :load-commands '() - :vis-nick 'vi1 - :lev0 'village1 - :disp0 'display - :lev1 'misty - :disp1 #f - ) - (new 'static 'continue-point - :name "intro-start" - :level 'village1 - :flags (continue-flags intro) - :trans (new 'static 'vector :x 164316.78 :y 15128.576 :z 3390588.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.2339 :w 0.9722) - :camera-trans (new 'static 'vector :x 204089.34 :y 36257.793 :z 3358341.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.6381 0.0 0.7699 -0.0938 0.9925 0.0777 -0.7642 -0.1218 0.6333) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-11" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - (special "fishermans-boat-2" #t) - ) - :vis-nick 'vi1 - :lev0 'village1 - :disp0 'display - :lev1 'misty - :disp1 #f - ) - ) - :tasks '(10 11 12 13 14 75) - :priority #xc8 - :load-commands '() - :alt-load-commands '(((display village1) (load misty)) ((special village1) (display misty)) ((display village1) (load beach))) - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x -444416.0 :y 133120.0 :z 360448.0 :w 843776.0) - :buzzer 75 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 2 + :name 'village1 + :visname 'village1-vis + :nickname 'vi1 + :packages '(village1) + :sound-banks '(village1) + :music-bank 'village1 + :ambient-sounds + '() + :mood '*village1-mood* + :mood-func 'update-mood-village1 + :ocean '*ocean-map-village1* + :sky #t + :sun-fade 1.0 + :continues + '((new 'static + 'continue-point + :name "village1-hut" + :level 'village1 + :trans + (new 'static 'vector :x -638860.06 :y 139319.7 :z 769990.6 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9889 :w -0.148) + :camera-trans + (new 'static 'vector :x -668114.1 :y 164536.31 :z 828633.06 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.8947 0.0 -0.4464 0.1082 0.9701 -0.2169 0.4331 -0.2424 -0.868) + :load-commands + '() + :vis-nick 'vi1 + :lev0 'village1 + :disp0 'display + :lev1 'beach + :disp1 #f) + (new 'static + 'continue-point + :name "village1-intro" + :level 'village1 + :flags (continue-flags warp sage-intro) + :trans + (new 'static 'vector :x -518468.8 :y 189424.03 :z 868568.7 :w 1.0) + :quat + (new 'static 'quaternion :y 0.591 :w 0.8066) + :camera-trans + (new 'static 'vector :x -559109.3 :y 200461.92 :z 826073.06 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.7221 0.0 -0.6917 -0.0517 0.9972 -0.054 0.6897 0.0747 0.7201) + :load-commands + '() + :vis-nick 'vi1 + :lev0 'village1 + :disp0 'display + :lev1 #f + :disp1 #f) + (new 'static + 'continue-point + :name "village1-warp" + :level 'village1 + :flags (continue-flags warp sage-ecorocks) + :trans + (new 'static 'vector :x -518468.8 :y 189424.03 :z 868568.7 :w 1.0) + :quat + (new 'static 'quaternion :y 0.591 :w 0.8066) + :camera-trans + (new 'static 'vector :x -559109.3 :y 200461.92 :z 826073.06 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.7221 0.0 -0.6917 -0.0517 0.9972 -0.054 0.6897 0.0747 0.7201) + :load-commands + '() + :vis-nick 'vi1 + :lev0 'village1 + :disp0 'display + :lev1 'beach + :disp1 #f) + (new 'static + 'continue-point + :name "village1-demo-convo" + :level 'village1 + :flags (continue-flags sage-demo-convo) + :trans + (new 'static 'vector :x -542529.1 :y 189424.03 :z 847101.94 :w 1.0) + :quat + (new 'static 'quaternion :y -0.1717 :w -0.9851) + :camera-trans + (new 'static 'vector :x -559085.2 :y 202996.53 :z 826054.25 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.7868 0.0 -0.6171 0.0775 0.992 0.0989 0.6122 -0.1257 0.7806) + :load-commands + '() + :vis-nick 'vi1 + :lev0 'village1 + :disp0 'display + :lev1 'misty + :disp1 #f) + (new 'static + 'continue-point + :name "intro-start" + :level 'village1 + :flags (continue-flags intro) + :trans + (new 'static 'vector :x 164316.78 :y 15128.576 :z 3390588.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.2339 :w 0.9722) + :camera-trans + (new 'static 'vector :x 204089.34 :y 36257.793 :z 3358341.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.6381 0.0 0.7699 -0.0938 0.9925 0.0777 -0.7642 -0.1218 0.6333) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-11" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t) + (special "fishermans-boat-2" #t)) + :vis-nick 'vi1 + :lev0 'village1 + :disp0 'display + :lev1 'misty + :disp1 #f)) + :tasks + '(10 11 12 13 14 75) + :priority #xc8 + :load-commands + '() + :alt-load-commands + '(((display village1) (load misty)) ((special village1) (display misty)) ((display village1) (load beach))) + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x -444416.0 :y 133120.0 :z 360448.0 :w 843776.0) + :buzzer 75 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #t)) (define beach - (new 'static 'level-load-info - :index 3 - :name 'beach - :visname 'beach-vis - :nickname 'bea - :packages '(beach) - :sound-banks '(beach) - :music-bank 'beach - :ambient-sounds '() - :mood '*beach-mood* - :mood-func 'update-mood-village1 - :ocean '*ocean-map-village1* - :sky #t - :sun-fade 1.0 - :continues '((new 'static 'continue-point - :name "beach-start" - :level 'beach - :trans (new 'static 'vector :x -504960.22 :y 9477.325 :z -223513.81 :w 1.0) - :quat (new 'static 'quaternion :y 0.9486 :w -0.3163) - :camera-trans (new 'static 'vector :x -487550.16 :y 28354.15 :z -184211.05 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9139 0.0 0.4058 -0.0551 0.9907 -0.1241 -0.4021 -0.1358 -0.9054) - :load-commands '() - :vis-nick 'bea - :lev0 'beach - :disp0 'display - :lev1 'village1 - :disp1 'display - ) - ) - :tasks '(15 16 17 18 19 20 21 22) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x -819200.0 :z -1556480.0 :w 1474560.0) - :buzzer 20 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 3 + :name 'beach + :visname 'beach-vis + :nickname 'bea + :packages '(beach) + :sound-banks '(beach) + :music-bank 'beach + :ambient-sounds + '() + :mood '*beach-mood* + :mood-func 'update-mood-village1 + :ocean '*ocean-map-village1* + :sky #t + :sun-fade 1.0 + :continues + '((new 'static + 'continue-point + :name "beach-start" + :level 'beach + :trans + (new 'static 'vector :x -504960.22 :y 9477.325 :z -223513.81 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9486 :w -0.3163) + :camera-trans + (new 'static 'vector :x -487550.16 :y 28354.15 :z -184211.05 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9139 0.0 0.4058 -0.0551 0.9907 -0.1241 -0.4021 -0.1358 -0.9054) + :load-commands + '() + :vis-nick 'bea + :lev0 'beach + :disp0 'display + :lev1 'village1 + :disp1 'display)) + :tasks + '(15 16 17 18 19 20 21 22) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x -819200.0 :z -1556480.0 :w 1474560.0) + :buzzer 20 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #t)) (define jungle - (new 'static 'level-load-info - :index 4 - :name 'jungle - :visname 'jungle-vis - :nickname 'jun - :packages '(jungle) - :sound-banks '(jungle) - :music-bank 'jungle - :ambient-sounds '() - :mood '*jungle-mood* - :mood-func 'update-mood-jungle - :ocean '*ocean-map-village1* - :sky #t - :sun-fade 1.0 - :continues '((new 'static 'continue-point - :name "jungle-start" - :level 'jungle - :trans (new 'static 'vector :x 1057631.9 :y 86404.305 :z -647140.56 :w 1.0) - :quat (new 'static 'quaternion :y -0.9009 :w -0.4339) - :camera-trans (new 'static 'vector :x 1004424.8 :y 111181.82 :z -611527.9 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.5568 0.0 -0.8306 0.201 0.9702 -0.1347 0.8059 -0.2419 -0.5402) - :load-commands '() - :vis-nick 'jun - :lev0 'jungle - :disp0 'display - :lev1 'village1 - :disp1 'display - ) - ) - :tasks '(2 3 4 5 7 8 9) - :priority 100 - :load-commands '() - :alt-load-commands '(((display jungle) (display jungleb)) ((display jungle) (display village1))) - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 1474560.0 :y 2519040.0 :z -983040.0 :w 2457600.0) - :buzzer 7 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 4 + :name 'jungle + :visname 'jungle-vis + :nickname 'jun + :packages '(jungle) + :sound-banks '(jungle) + :music-bank 'jungle + :ambient-sounds + '() + :mood '*jungle-mood* + :mood-func 'update-mood-jungle + :ocean '*ocean-map-village1* + :sky #t + :sun-fade 1.0 + :continues + '((new 'static + 'continue-point + :name "jungle-start" + :level 'jungle + :trans + (new 'static 'vector :x 1057631.9 :y 86404.305 :z -647140.56 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9009 :w -0.4339) + :camera-trans + (new 'static 'vector :x 1004424.8 :y 111181.82 :z -611527.9 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.5568 0.0 -0.8306 0.201 0.9702 -0.1347 0.8059 -0.2419 -0.5402) + :load-commands + '() + :vis-nick 'jun + :lev0 'jungle + :disp0 'display + :lev1 'village1 + :disp1 'display)) + :tasks + '(2 3 4 5 7 8 9) + :priority 100 + :load-commands + '() + :alt-load-commands + '(((display jungle) (display jungleb)) ((display jungle) (display village1))) + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 1474560.0 :y 2519040.0 :z -983040.0 :w 2457600.0) + :buzzer 7 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #t)) (define jungleb - (new 'static 'level-load-info - :index 5 - :name 'jungleb - :visname 'jungleb-vis - :nickname 'jub - :packages '(jungleb) - :sound-banks '(jungleb) - :music-bank 'jungleb - :ambient-sounds '() - :mood '*jungleb-mood* - :mood-func 'update-mood-jungleb - :ocean 'none - :sky #f - :continues '((new 'static 'continue-point - :name "jungle-tower" - :level 'jungleb - :trans (new 'static 'vector :x 1469510.0 :y -204745.52 :z -959058.3 :w 1.0) - :quat (new 'static 'quaternion :y -0.6194 :w -0.785) - :camera-trans (new 'static 'vector :x 1485298.5 :y -189972.08 :z -936548.75 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.8614 0.0 0.5078 -0.1177 0.9727 -0.1997 -0.4939 -0.2318 -0.8379) - :load-commands '() - :vis-nick 'jub - :lev0 'jungle - :disp0 'display - :lev1 'jungleb - :disp1 'display - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsphere (new 'static 'sphere :x 1486848.0 :y -1269760.0 :z -1064960.0 :w 1228800.0) - :buzzer 7 - :bottom-height (meters -80) - :run-packages '("common" "jungle") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 5 + :name 'jungleb + :visname 'jungleb-vis + :nickname 'jub + :packages '(jungleb) + :sound-banks '(jungleb) + :music-bank 'jungleb + :ambient-sounds + '() + :mood '*jungleb-mood* + :mood-func 'update-mood-jungleb + :ocean 'none + :sky #f + :continues + '((new 'static + 'continue-point + :name "jungle-tower" + :level 'jungleb + :trans + (new 'static 'vector :x 1469510.0 :y -204745.52 :z -959058.3 :w 1.0) + :quat + (new 'static 'quaternion :y -0.6194 :w -0.785) + :camera-trans + (new 'static 'vector :x 1485298.5 :y -189972.08 :z -936548.75 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.8614 0.0 0.5078 -0.1177 0.9727 -0.1997 -0.4939 -0.2318 -0.8379) + :load-commands + '() + :vis-nick 'jub + :lev0 'jungle + :disp0 'display + :lev1 'jungleb + :disp1 'display)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsphere + (new 'static 'sphere :x 1486848.0 :y -1269760.0 :z -1064960.0 :w 1228800.0) + :buzzer 7 + :bottom-height (meters -80) + :run-packages + '("common" "jungle") + :wait-for-load #f)) (define misty - (new 'static 'level-load-info - :index 6 - :name 'misty - :visname 'misty-vis - :nickname 'mis - :packages '(misty) - :sound-banks '(misty) - :music-bank 'misty - :ambient-sounds '() - :mood '*misty-mood* - :mood-func 'update-mood-misty - :ocean '*ocean-map-village1* - :sky #t - :sun-fade 0.25 - :continues '((new 'static 'continue-point - :name "misty-start" - :level 'misty - :trans (new 'static 'vector :x 164316.78 :y 15128.576 :z 3390588.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.2339 :w 0.9722) - :camera-trans (new 'static 'vector :x 204089.34 :y 36257.793 :z 3358341.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.6381 0.0 0.7699 -0.0938 0.9925 0.0777 -0.7642 -0.1218 0.6333) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-11" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - (special "fishermans-boat-2" #t) - ) - :vis-nick 'mis - :lev0 'misty - :disp0 'display - :lev1 'village1 - :disp1 'special - ) - (new 'static 'continue-point - :name "misty-silo" - :level 'misty - :trans (new 'static 'vector :x -672503.0 :y 82131.35 :z 3651465.8 :w 1.0) - :quat (new 'static 'quaternion :y 0.0878 :w 0.9961) - :camera-trans (new 'static 'vector :x -675754.0 :y 102028.91 :z 3604800.8 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9975 0.0 -0.0704 0.0086 0.9924 0.1223 0.0698 -0.1226 0.9899) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-11" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - (special "fishermans-boat-2" #t) - ) - :vis-nick 'mis - :lev0 'misty - :disp0 'display - :lev1 'village1 - :disp1 'special - ) - (new 'static 'continue-point - :name "misty-bike" - :level 'misty - :trans (new 'static 'vector :x 302533.44 :y 35901.848 :z 4138967.8 :w 1.0) - :quat (new 'static 'quaternion :y -0.2809 :w 0.9597) - :camera-trans (new 'static 'vector :x 338476.25 :y 55700.684 :z 4109729.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.6308 0.0 0.7759 -0.096 0.9923 0.078 -0.7699 -0.1237 0.6259) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-11" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - (special "fishermans-boat-2" #t) - ) - :vis-nick 'mis - :lev0 'misty - :disp0 'display - :lev1 'village1 - :disp1 'special - ) - (new 'static 'continue-point - :name "misty-backside" - :level 'misty - :trans (new 'static 'vector :x -304192.72 :y 33270.99 :z 4646525.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.8443 :w -0.5357) - :camera-trans (new 'static 'vector :x -346989.78 :y 54377.676 :z 4674685.5 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.5497 0.0 -0.8353 0.1009 0.9926 -0.0664 0.8291 -0.1208 -0.5457) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-11" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - (special "fishermans-boat-2" #t) - ) - :vis-nick 'mis - :lev0 'misty - :disp0 'display - :lev1 'village1 - :disp1 'special - ) - (new 'static 'continue-point - :name "misty-silo2" - :level 'misty - :trans (new 'static 'vector :x -898000.06 :y 98038.17 :z 4162091.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.1102 :w 0.9938) - :camera-trans (new 'static 'vector :x -931459.9 :y 118198.68 :z 4196081.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.6605 0.0 -0.7508 0.1086 0.9894 -0.0955 0.7429 -0.1447 -0.6535) - :load-commands '((special "med-res-level-1" #t) - (special "med-res-level-2" #t) - (special "med-res-level-4" #t) - (special "med-res-level-6" #t) - (special "med-res-level-7" #t) - (special "med-res-level-8" #t) - (special "med-res-level-9" #t) - (special "med-res-level-11" #t) - (special "med-res-level-14" #t) - (special "med-res-level-22" #t) - (special "med-res-level-23" #t) - (special "fishermans-boat-2" #t) - ) - :vis-nick 'mis - :lev0 'misty - :disp0 'display - :lev1 'village1 - :disp1 'special - ) - ) - :tasks '(23 24 25 26 27 28 29 30) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :z 4096000.0 :w 1269760.0) - :buzzer 28 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 6 + :name 'misty + :visname 'misty-vis + :nickname 'mis + :packages '(misty) + :sound-banks '(misty) + :music-bank 'misty + :ambient-sounds + '() + :mood '*misty-mood* + :mood-func 'update-mood-misty + :ocean '*ocean-map-village1* + :sky #t + :sun-fade 0.25 + :continues + '((new 'static + 'continue-point + :name "misty-start" + :level 'misty + :trans + (new 'static 'vector :x 164316.78 :y 15128.576 :z 3390588.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.2339 :w 0.9722) + :camera-trans + (new 'static 'vector :x 204089.34 :y 36257.793 :z 3358341.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.6381 0.0 0.7699 -0.0938 0.9925 0.0777 -0.7642 -0.1218 0.6333) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-11" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t) + (special "fishermans-boat-2" #t)) + :vis-nick 'mis + :lev0 'misty + :disp0 'display + :lev1 'village1 + :disp1 'special) + (new 'static + 'continue-point + :name "misty-silo" + :level 'misty + :trans + (new 'static 'vector :x -672503.0 :y 82131.35 :z 3651465.8 :w 1.0) + :quat + (new 'static 'quaternion :y 0.0878 :w 0.9961) + :camera-trans + (new 'static 'vector :x -675754.0 :y 102028.91 :z 3604800.8 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9975 0.0 -0.0704 0.0086 0.9924 0.1223 0.0698 -0.1226 0.9899) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-11" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t) + (special "fishermans-boat-2" #t)) + :vis-nick 'mis + :lev0 'misty + :disp0 'display + :lev1 'village1 + :disp1 'special) + (new 'static + 'continue-point + :name "misty-bike" + :level 'misty + :trans + (new 'static 'vector :x 302533.44 :y 35901.848 :z 4138967.8 :w 1.0) + :quat + (new 'static 'quaternion :y -0.2809 :w 0.9597) + :camera-trans + (new 'static 'vector :x 338476.25 :y 55700.684 :z 4109729.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.6308 0.0 0.7759 -0.096 0.9923 0.078 -0.7699 -0.1237 0.6259) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-11" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t) + (special "fishermans-boat-2" #t)) + :vis-nick 'mis + :lev0 'misty + :disp0 'display + :lev1 'village1 + :disp1 'special) + (new 'static + 'continue-point + :name "misty-backside" + :level 'misty + :trans + (new 'static 'vector :x -304192.72 :y 33270.99 :z 4646525.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.8443 :w -0.5357) + :camera-trans + (new 'static 'vector :x -346989.78 :y 54377.676 :z 4674685.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.5497 0.0 -0.8353 0.1009 0.9926 -0.0664 0.8291 -0.1208 -0.5457) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-11" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t) + (special "fishermans-boat-2" #t)) + :vis-nick 'mis + :lev0 'misty + :disp0 'display + :lev1 'village1 + :disp1 'special) + (new 'static + 'continue-point + :name "misty-silo2" + :level 'misty + :trans + (new 'static 'vector :x -898000.06 :y 98038.17 :z 4162091.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.1102 :w 0.9938) + :camera-trans + (new 'static 'vector :x -931459.9 :y 118198.68 :z 4196081.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.6605 0.0 -0.7508 0.1086 0.9894 -0.0955 0.7429 -0.1447 -0.6535) + :load-commands + '((special "med-res-level-1" #t) + (special "med-res-level-2" #t) + (special "med-res-level-4" #t) + (special "med-res-level-6" #t) + (special "med-res-level-7" #t) + (special "med-res-level-8" #t) + (special "med-res-level-9" #t) + (special "med-res-level-11" #t) + (special "med-res-level-14" #t) + (special "med-res-level-22" #t) + (special "med-res-level-23" #t) + (special "fishermans-boat-2" #t)) + :vis-nick 'mis + :lev0 'misty + :disp0 'display + :lev1 'village1 + :disp1 'special)) + :tasks + '(23 24 25 26 27 28 29 30) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :z 4096000.0 :w 1269760.0) + :buzzer 28 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #f)) (define firecanyon - (new 'static 'level-load-info - :index 7 - :name 'firecanyon - :visname 'firecanyon-vis - :nickname 'fic - :packages '(firecanyon) - :sound-banks '(firecanyon) - :music-bank 'firecanyon - :ambient-sounds '() - :mood '*firecanyon-mood* - :mood-func 'update-mood-firecanyon - :ocean 'none - :sky #t - :continues '((new 'static 'continue-point - :name "firecanyon-start" - :level 'firecanyon - :trans (new 'static 'vector :x -87377.1 :y 126444.75 :z -681697.25 :w 1.0) - :quat (new 'static 'quaternion :y 0.9921 :w -0.1246) - :camera-trans (new 'static 'vector :x -84559.055 :y 144685.47 :z -641194.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9976 0.0 0.0688 -0.01 0.9893 -0.1452 -0.068 -0.1456 -0.9869) - :load-commands '() - :vis-nick 'fic - :lev0 'firecanyon - :disp0 'display - :lev1 'village1 - :disp1 'display - ) - (new 'static 'continue-point - :name "firecanyon-end" - :level 'firecanyon - :trans (new 'static 'vector :x 1360576.1 :y 126976.0 :z -5839533.5 :w 1.0) - :quat (new 'static 'quaternion :y 0.1666 :w 0.986) - :camera-trans (new 'static 'vector :x 1378912.6 :y 144452.81 :z -5872527.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.8847 0.0 0.466 -0.0744 0.9871 0.1414 -0.46 -0.1598 0.8733) - :load-commands '() - :vis-nick 'fic - :lev0 'village2 - :disp0 'display - :lev1 'firecanyon - :disp1 'display - ) - ) - :tasks '(68 69) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 419840.0 :y 151552.0 :z -3006464.0 :w 2048000.0) - :buzzer 68 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 7 + :name 'firecanyon + :visname 'firecanyon-vis + :nickname 'fic + :packages '(firecanyon) + :sound-banks '(firecanyon) + :music-bank 'firecanyon + :ambient-sounds + '() + :mood '*firecanyon-mood* + :mood-func 'update-mood-firecanyon + :ocean 'none + :sky #t + :continues + '((new 'static + 'continue-point + :name "firecanyon-start" + :level 'firecanyon + :trans + (new 'static 'vector :x -87377.1 :y 126444.75 :z -681697.25 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9921 :w -0.1246) + :camera-trans + (new 'static 'vector :x -84559.055 :y 144685.47 :z -641194.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9976 0.0 0.0688 -0.01 0.9893 -0.1452 -0.068 -0.1456 -0.9869) + :load-commands + '() + :vis-nick 'fic + :lev0 'firecanyon + :disp0 'display + :lev1 'village1 + :disp1 'display) + (new 'static + 'continue-point + :name "firecanyon-end" + :level 'firecanyon + :trans + (new 'static 'vector :x 1360576.1 :y 126976.0 :z -5839533.5 :w 1.0) + :quat + (new 'static 'quaternion :y 0.1666 :w 0.986) + :camera-trans + (new 'static 'vector :x 1378912.6 :y 144452.81 :z -5872527.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.8847 0.0 0.466 -0.0744 0.9871 0.1414 -0.46 -0.1598 0.8733) + :load-commands + '() + :vis-nick 'fic + :lev0 'village2 + :disp0 'display + :lev1 'firecanyon + :disp1 'display)) + :tasks + '(68 69) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 419840.0 :y 151552.0 :z -3006464.0 :w 2048000.0) + :buzzer 68 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #t)) (define village2 - (new 'static 'level-load-info - :index 8 - :name 'village2 - :visname 'village2-vis - :nickname 'vi2 - :packages '(village2) - :sound-banks '(village2) - :music-bank 'village2 - :ambient-sounds '() - :mood '*village2-mood* - :mood-func 'update-mood-village2 - :ocean '*ocean-map-village2* - :sky #t - :continues '((new 'static 'continue-point - :name "village2-start" - :level 'village2 - :trans (new 'static 'vector :x 1460961.2 :y 108562.02 :z -6161391.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.9917 :w 0.1278) - :camera-trans (new 'static 'vector :x 1468018.8 :y 133790.92 :z -6096227.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9941 0.0 0.1076 -0.0261 0.9699 -0.2418 -0.1044 -0.2432 -0.9643) - :load-commands '() - :vis-nick 'vi2 - :lev0 'village2 - :disp0 'display - :lev1 'firecanyon - :disp1 #f - ) - (new 'static 'continue-point - :name "village2-warp" - :level 'village2 - :flags (continue-flags warp) - :trans (new 'static 'vector :x 1592492.9 :y 91648.0 :z -6328677.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.7469 :w 0.6648) - :camera-trans (new 'static 'vector :x 1555766.1 :y 103759.46 :z -6318964.5 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.2562 0.0 -0.9666 -0.0253 0.9996 0.0067 0.9662 0.0262 -0.2561) - :load-commands '() - :vis-nick 'vi2 - :lev0 'village2 - :disp0 'display - :lev1 'firecanyon - :disp1 #f - ) - (new 'static 'continue-point - :name "village2-dock" - :level 'village2 - :trans (new 'static 'vector :x 1264346.8 :y 19451.494 :z -6833563.5 :w 1.0) - :quat (new 'static 'quaternion :y 0.0258 :w 0.9996) - :camera-trans (new 'static 'vector :x 1265547.2 :y 34647.656 :z -6862636.5 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9991 0.0 0.0411 -0.0088 0.9764 0.2155 -0.0401 -0.2156 0.9756) - :load-commands '() - :vis-nick 'vi2 - :lev0 'village2 - :disp0 'display - :lev1 'rolling - :disp1 #f - ) - ) - :tasks '(31 32 34 35 76) - :priority #xc8 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 1392640.0 :y 81920.0 :z -6770688.0 :w 696320.0) - :buzzer 76 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 8 + :name 'village2 + :visname 'village2-vis + :nickname 'vi2 + :packages '(village2) + :sound-banks '(village2) + :music-bank 'village2 + :ambient-sounds + '() + :mood '*village2-mood* + :mood-func 'update-mood-village2 + :ocean '*ocean-map-village2* + :sky #t + :continues + '((new 'static + 'continue-point + :name "village2-start" + :level 'village2 + :trans + (new 'static 'vector :x 1460961.2 :y 108562.02 :z -6161391.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9917 :w 0.1278) + :camera-trans + (new 'static 'vector :x 1468018.8 :y 133790.92 :z -6096227.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9941 0.0 0.1076 -0.0261 0.9699 -0.2418 -0.1044 -0.2432 -0.9643) + :load-commands + '() + :vis-nick 'vi2 + :lev0 'village2 + :disp0 'display + :lev1 'firecanyon + :disp1 #f) + (new 'static + 'continue-point + :name "village2-warp" + :level 'village2 + :flags (continue-flags warp) + :trans + (new 'static 'vector :x 1592492.9 :y 91648.0 :z -6328677.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.7469 :w 0.6648) + :camera-trans + (new 'static 'vector :x 1555766.1 :y 103759.46 :z -6318964.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.2562 0.0 -0.9666 -0.0253 0.9996 0.0067 0.9662 0.0262 -0.2561) + :load-commands + '() + :vis-nick 'vi2 + :lev0 'village2 + :disp0 'display + :lev1 'firecanyon + :disp1 #f) + (new 'static + 'continue-point + :name "village2-dock" + :level 'village2 + :trans + (new 'static 'vector :x 1264346.8 :y 19451.494 :z -6833563.5 :w 1.0) + :quat + (new 'static 'quaternion :y 0.0258 :w 0.9996) + :camera-trans + (new 'static 'vector :x 1265547.2 :y 34647.656 :z -6862636.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9991 0.0 0.0411 -0.0088 0.9764 0.2155 -0.0401 -0.2156 0.9756) + :load-commands + '() + :vis-nick 'vi2 + :lev0 'village2 + :disp0 'display + :lev1 'rolling + :disp1 #f)) + :tasks + '(31 32 34 35 76) + :priority #xc8 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 1392640.0 :y 81920.0 :z -6770688.0 :w 696320.0) + :buzzer 76 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #t)) (define sunken - (new 'static 'level-load-info - :index 9 - :name 'sunken - :visname 'sunken-vis - :nickname 'sun - :packages '(sunken) - :sound-banks '(sunken) - :music-bank 'sunken - :ambient-sounds '() - :mood '*sunken-mood* - :mood-func 'update-mood-sunken - :ocean '*ocean-map-sunken* - :sky #f - :continues '((new 'static 'continue-point - :name "sunken-start" - :level 'sunken - :trans (new 'static 'vector :x 2172095.2 :y -591749.94 :z -6721553.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.5083 :w 0.8611) - :camera-trans (new 'static 'vector :x 2138871.5 :y -572296.4 :z -6751967.5 :w 1.0) - :camera-rot (new 'static 'array float 9 0.7575 0.0 -0.6527 0.0858 0.9913 0.0995 0.647 -0.1314 0.7509) - :load-commands '() - :vis-nick 'sun - :lev0 'sunken - :disp0 'display - :lev1 'village2 - :disp1 'display - ) - (new 'static 'continue-point - :name "sunken1" - :level 'sunken - :trans (new 'static 'vector :x 3062988.5 :y -536575.56 :z -6527484.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.5304 :w 0.8477) - :camera-trans (new 'static 'vector :x 3015461.2 :y -515480.38 :z -6546573.5 :w 1.0) - :camera-rot (new 'static 'array float 9 0.3725 0.0 -0.928 0.1121 0.9926 0.045 0.9212 -0.1208 0.3697) - :load-commands '() - :vis-nick 'sun - :lev0 'sunken - :disp0 'display - :lev1 'sunkenb - :disp1 #f - ) - (new 'static 'continue-point - :name "sunken2" - :level 'sunken - :trans (new 'static 'vector :x 3133625.5 :y -569343.56 :z -6909587.5 :w 1.0) - :quat (new 'static 'quaternion :y -0.9512 :w 0.3083) - :camera-trans (new 'static 'vector :x 3170833.2 :y -548244.25 :z -6874378.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.6872 0.0 0.7263 -0.0878 0.9926 -0.0831 -0.721 -0.1209 -0.6822) - :load-commands '() - :vis-nick 'sun - :lev0 'sunken - :disp0 'display - :lev1 'sunkenb - :disp1 #f - ) - (new 'static 'continue-point - :name "sunken-tube1" - :level 'sunken - :trans (new 'static 'vector :x 2649601.8 :y -569343.56 :z -7132970.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.9936 :w 0.1124) - :camera-trans (new 'static 'vector :x 2636150.2 :y -555656.4 :z -7114732.5 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.8024 0.0 -0.5967 0.1721 0.9574 -0.2315 0.5713 -0.2885 -0.7683) - :load-commands '() - :vis-nick 'sun - :lev0 'sunken - :disp0 'display - :lev1 'sunkenb - :disp1 #f - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 2867200.0 :y -2048000.0 :z -6553600.0 :w 2048000.0) - :buzzer 49 - :bottom-height (meters -500) - :run-packages '("common") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 9 + :name 'sunken + :visname 'sunken-vis + :nickname 'sun + :packages '(sunken) + :sound-banks '(sunken) + :music-bank 'sunken + :ambient-sounds + '() + :mood '*sunken-mood* + :mood-func 'update-mood-sunken + :ocean '*ocean-map-sunken* + :sky #f + :continues + '((new 'static + 'continue-point + :name "sunken-start" + :level 'sunken + :trans + (new 'static 'vector :x 2172095.2 :y -591749.94 :z -6721553.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.5083 :w 0.8611) + :camera-trans + (new 'static 'vector :x 2138871.5 :y -572296.4 :z -6751967.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.7575 0.0 -0.6527 0.0858 0.9913 0.0995 0.647 -0.1314 0.7509) + :load-commands + '() + :vis-nick 'sun + :lev0 'sunken + :disp0 'display + :lev1 'village2 + :disp1 'display) + (new 'static + 'continue-point + :name "sunken1" + :level 'sunken + :trans + (new 'static 'vector :x 3062988.5 :y -536575.56 :z -6527484.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.5304 :w 0.8477) + :camera-trans + (new 'static 'vector :x 3015461.2 :y -515480.38 :z -6546573.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.3725 0.0 -0.928 0.1121 0.9926 0.045 0.9212 -0.1208 0.3697) + :load-commands + '() + :vis-nick 'sun + :lev0 'sunken + :disp0 'display + :lev1 'sunkenb + :disp1 #f) + (new 'static + 'continue-point + :name "sunken2" + :level 'sunken + :trans + (new 'static 'vector :x 3133625.5 :y -569343.56 :z -6909587.5 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9512 :w 0.3083) + :camera-trans + (new 'static 'vector :x 3170833.2 :y -548244.25 :z -6874378.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.6872 0.0 0.7263 -0.0878 0.9926 -0.0831 -0.721 -0.1209 -0.6822) + :load-commands + '() + :vis-nick 'sun + :lev0 'sunken + :disp0 'display + :lev1 'sunkenb + :disp1 #f) + (new 'static + 'continue-point + :name "sunken-tube1" + :level 'sunken + :trans + (new 'static 'vector :x 2649601.8 :y -569343.56 :z -7132970.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9936 :w 0.1124) + :camera-trans + (new 'static 'vector :x 2636150.2 :y -555656.4 :z -7114732.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.8024 0.0 -0.5967 0.1721 0.9574 -0.2315 0.5713 -0.2885 -0.7683) + :load-commands + '() + :vis-nick 'sun + :lev0 'sunken + :disp0 'display + :lev1 'sunkenb + :disp1 #f)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 2867200.0 :y -2048000.0 :z -6553600.0 :w 2048000.0) + :buzzer 49 + :bottom-height (meters -500) + :run-packages + '("common") + :wait-for-load #f)) (define sunkenb - (new 'static 'level-load-info - :index 10 - :name 'sunkenb - :visname 'sunkenb-vis - :nickname 'sub - :packages '() - :sound-banks '(sunken) - :music-bank 'sunken - :ambient-sounds '() - :mood '*sunkenb-mood* - :mood-func 'update-mood-sunken - :ocean '*ocean-map-sunken* - :sky #t - :continues '((new 'static 'continue-point - :name "sunkenb-start" - :level 'sunkenb - :trans (new 'static 'vector :x 2229231.2 :y -1019912.2 :z -6788748.5 :w 1.0) - :quat (new 'static 'quaternion :y 0.895 :w 0.446) - :camera-trans (new 'static 'vector :x 2187840.0 :y -998915.7 :z -6759328.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.5786 0.0 -0.8155 0.0992 0.9925 -0.0704 0.8094 -0.1217 -0.5743) - :load-commands '((alive "exit-chamber-1")) - :vis-nick 'sub - :lev0 'sunken - :disp0 'display - :lev1 'sunkenb - :disp1 'display - ) - (new 'static 'continue-point - :name "sunkenb-helix" - :level 'sunkenb - :trans (new 'static 'vector :x 2466572.8 :y -1838989.2 :z -7299582.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.8841 :w 0.4672) - :camera-trans (new 'static 'vector :x 2515616.2 :y -1817888.4 :z -7284843.5 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.2889 0.0 0.9573 -0.1163 0.9925 -0.0351 -0.9502 -0.1214 -0.2867) - :load-commands '() - :vis-nick 'sub - :lev0 'sunken - :disp0 'display - :lev1 'sunkenb - :disp1 'display - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 2867200.0 :y -2048000.0 :z -6553600.0 :w 2048000.0) - :buzzer 49 - :bottom-height (meters -500) - :run-packages '("common" "sunken") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 10 + :name 'sunkenb + :visname 'sunkenb-vis + :nickname 'sub + :packages + '() + :sound-banks '(sunken) + :music-bank 'sunken + :ambient-sounds + '() + :mood '*sunkenb-mood* + :mood-func 'update-mood-sunken + :ocean '*ocean-map-sunken* + :sky #t + :continues + '((new 'static + 'continue-point + :name "sunkenb-start" + :level 'sunkenb + :trans + (new 'static 'vector :x 2229231.2 :y -1019912.2 :z -6788748.5 :w 1.0) + :quat + (new 'static 'quaternion :y 0.895 :w 0.446) + :camera-trans + (new 'static 'vector :x 2187840.0 :y -998915.7 :z -6759328.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.5786 0.0 -0.8155 0.0992 0.9925 -0.0704 0.8094 -0.1217 -0.5743) + :load-commands + '((alive "exit-chamber-1")) + :vis-nick 'sub + :lev0 'sunken + :disp0 'display + :lev1 'sunkenb + :disp1 'display) + (new 'static + 'continue-point + :name "sunkenb-helix" + :level 'sunkenb + :trans + (new 'static 'vector :x 2466572.8 :y -1838989.2 :z -7299582.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.8841 :w 0.4672) + :camera-trans + (new 'static 'vector :x 2515616.2 :y -1817888.4 :z -7284843.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.2889 0.0 0.9573 -0.1163 0.9925 -0.0351 -0.9502 -0.1214 -0.2867) + :load-commands + '() + :vis-nick 'sub + :lev0 'sunken + :disp0 'display + :lev1 'sunkenb + :disp1 'display)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 2867200.0 :y -2048000.0 :z -6553600.0 :w 2048000.0) + :buzzer 49 + :bottom-height (meters -500) + :run-packages + '("common" "sunken") + :wait-for-load #f)) (define swamp - (new 'static 'level-load-info - :index 11 - :name 'swamp - :visname 'swamp-vis - :nickname 'swa - :packages '(swamp) - :sound-banks '(swamp) - :music-bank 'swamp - :ambient-sounds '() - :mood '*swamp-mood* - :mood-func 'update-mood-swamp - :ocean '*ocean-map-village2* - :sky #t - :continues '((new 'static 'continue-point - :name "swamp-start" - :level 'swamp - :trans (new 'static 'vector :x 1842537.2 :y 21027.227 :z -7333297.5 :w 1.0) - :quat (new 'static 'quaternion :y -0.9933 :w 0.1153) - :camera-trans (new 'static 'vector :x 1862529.9 :y 44371.56 :z -7277995.5 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9403 0.0 0.3402 -0.0814 0.9708 -0.2252 -0.3303 -0.2394 -0.9129) - :load-commands '((special "swamp-blimp-3" #t) - (special "precursor-arm-3" #t) - (special "swamp-tetherrock-13" #t) - (special "swamp-tetherrock-14" #t) - (special "swamp-tetherrock-15" #t) - (special "swamp-tetherrock-16" #t) - ) - :vis-nick 'swa - :lev0 'swamp - :disp0 'display - :lev1 'village2 - :disp1 'display - ) - (new 'static 'continue-point - :name "swamp-dock1" - :level 'swamp - :trans (new 'static 'vector :x 1360386.9 :y 5823.693 :z -8218890.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.585 :w -0.811) - :camera-trans (new 'static 'vector :x 1314475.6 :y 26164.838 :z -8234152.5 :w 1.0) - :camera-rot (new 'static 'array float 9 0.3154 0.0 -0.9489 0.1134 0.9928 0.0376 0.9421 -0.1195 0.3131) - :load-commands '((special "swamp-blimp-3" #t) - (special "precursor-arm-3" #t) - (special "swamp-tetherrock-13" #t) - (special "swamp-tetherrock-14" #t) - (special "swamp-tetherrock-15" #t) - (special "swamp-tetherrock-16" #t) - ) - :vis-nick 'swa - :lev0 'swamp - :disp0 'display - :lev1 'village2 - :disp1 'special-vis - ) - (new 'static 'continue-point - :name "swamp-cave1" - :level 'swamp - :trans (new 'static 'vector :x 1553700.5 :y 1835.4176 :z -8258429.5 :w 1.0) - :quat (new 'static 'quaternion :y -0.9871 :w -0.1599) - :camera-trans (new 'static 'vector :x 1556873.2 :y 22715.598 :z -8208106.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9982 0.0 0.0596 -0.0072 0.9926 -0.1209 -0.0592 -0.1211 -0.9908) - :load-commands '((special "swamp-blimp-3" #t) - (special "precursor-arm-3" #t) - (special "swamp-tetherrock-13" #t) - (special "swamp-tetherrock-14" #t) - (special "swamp-tetherrock-15" #t) - (special "swamp-tetherrock-16" #t) - ) - :vis-nick 'swa - :lev0 'swamp - :disp0 'display - :lev1 'village2 - :disp1 'special-vis - ) - (new 'static 'continue-point - :name "swamp-dock2" - :level 'swamp - :trans (new 'static 'vector :x 1645872.4 :y 36495.77 :z -8427323.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.8294 :w -0.5586) - :camera-trans (new 'static 'vector :x 1599338.9 :y 57590.168 :z -8405954.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.418 0.0 -0.9084 0.1106 0.9925 -0.0509 0.9016 -0.1218 -0.4149) - :load-commands '((special "swamp-blimp-3" #t) - (special "precursor-arm-3" #t) - (special "swamp-tetherrock-13" #t) - (special "swamp-tetherrock-14" #t) - (special "swamp-tetherrock-15" #t) - (special "swamp-tetherrock-16" #t) - ) - :vis-nick 'swa - :lev0 'swamp - :disp0 'display - :lev1 'village2 - :disp1 'special-vis - ) - (new 'static 'continue-point - :name "swamp-cave2" - :level 'swamp - :trans (new 'static 'vector :x 2037539.2 :y 1103.872 :z -8560013.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.0559 :w 0.9984) - :camera-trans (new 'static 'vector :x 1995208.2 :y 21832.908 :z -8586304.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.5516 0.0 -0.834 0.097 0.9932 0.0641 0.8283 -0.1163 0.5479) - :load-commands '((special "swamp-blimp-3" #t) - (special "precursor-arm-3" #t) - (special "swamp-tetherrock-13" #t) - (special "swamp-tetherrock-14" #t) - (special "swamp-tetherrock-15" #t) - (special "swamp-tetherrock-16" #t) - ) - :vis-nick 'swa - :lev0 'swamp - :disp0 'display - :lev1 'village2 - :disp1 'special-vis - ) - (new 'static 'continue-point - :name "swamp-game" - :level 'swamp - :trans (new 'static 'vector :x 2612289.2 :y -2047.5905 :z -8315907.5 :w 1.0) - :quat (new 'static 'quaternion :y -0.6975 :w 0.7165) - :camera-trans (new 'static 'vector :x 2661940.5 :y 20693.81 :z -8317980.5 :w 1.0) - :camera-rot (new 'static 'array float 9 0.0406 0.0 0.9991 -0.1452 0.9893 0.0059 -0.9885 -0.1453 0.0402) - :load-commands '((special "swamp-blimp-3" #t) - (special "precursor-arm-3" #t) - (special "swamp-tetherrock-13" #t) - (special "swamp-tetherrock-14" #t) - (special "swamp-tetherrock-15" #t) - (special "swamp-tetherrock-16" #t) - ) - :vis-nick 'swa - :lev0 'swamp - :disp0 'display - :lev1 'village2 - :disp1 'special-vis - ) - (new 'static 'continue-point - :name "swamp-cave3" - :level 'swamp - :trans (new 'static 'vector :x 2011811.4 :y 3711.7952 :z -7923027.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.5269 :w 0.8499) - :camera-trans (new 'static 'vector :x 2053120.4 :y 22242.51 :z -7927784.5 :w 1.0) - :camera-rot (new 'static 'array float 9 0.1145 0.0 0.9934 -0.1412 0.9898 0.0162 -0.9833 -0.1422 0.1134) - :load-commands '((special "swamp-blimp-3" #t) - (special "precursor-arm-3" #t) - (special "swamp-tetherrock-13" #t) - (special "swamp-tetherrock-14" #t) - (special "swamp-tetherrock-15" #t) - (special "swamp-tetherrock-16" #t) - ) - :vis-nick 'swa - :lev0 'swamp - :disp0 'display - :lev1 'village2 - :disp1 'special-vis - ) - ) - :tasks '(36 37 38 39 40 41 42 43) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 1986560.0 :z -8417280.0 :w 1003520.0) - :buzzer 43 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 11 + :name 'swamp + :visname 'swamp-vis + :nickname 'swa + :packages '(swamp) + :sound-banks '(swamp) + :music-bank 'swamp + :ambient-sounds + '() + :mood '*swamp-mood* + :mood-func 'update-mood-swamp + :ocean '*ocean-map-village2* + :sky #t + :continues + '((new 'static + 'continue-point + :name "swamp-start" + :level 'swamp + :trans + (new 'static 'vector :x 1842537.2 :y 21027.227 :z -7333297.5 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9933 :w 0.1153) + :camera-trans + (new 'static 'vector :x 1862529.9 :y 44371.56 :z -7277995.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9403 0.0 0.3402 -0.0814 0.9708 -0.2252 -0.3303 -0.2394 -0.9129) + :load-commands + '((special "swamp-blimp-3" #t) + (special "precursor-arm-3" #t) + (special "swamp-tetherrock-13" #t) + (special "swamp-tetherrock-14" #t) + (special "swamp-tetherrock-15" #t) + (special "swamp-tetherrock-16" #t)) + :vis-nick 'swa + :lev0 'swamp + :disp0 'display + :lev1 'village2 + :disp1 'display) + (new 'static + 'continue-point + :name "swamp-dock1" + :level 'swamp + :trans + (new 'static 'vector :x 1360386.9 :y 5823.693 :z -8218890.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.585 :w -0.811) + :camera-trans + (new 'static 'vector :x 1314475.6 :y 26164.838 :z -8234152.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.3154 0.0 -0.9489 0.1134 0.9928 0.0376 0.9421 -0.1195 0.3131) + :load-commands + '((special "swamp-blimp-3" #t) + (special "precursor-arm-3" #t) + (special "swamp-tetherrock-13" #t) + (special "swamp-tetherrock-14" #t) + (special "swamp-tetherrock-15" #t) + (special "swamp-tetherrock-16" #t)) + :vis-nick 'swa + :lev0 'swamp + :disp0 'display + :lev1 'village2 + :disp1 'special-vis) + (new 'static + 'continue-point + :name "swamp-cave1" + :level 'swamp + :trans + (new 'static 'vector :x 1553700.5 :y 1835.4176 :z -8258429.5 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9871 :w -0.1599) + :camera-trans + (new 'static 'vector :x 1556873.2 :y 22715.598 :z -8208106.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9982 0.0 0.0596 -0.0072 0.9926 -0.1209 -0.0592 -0.1211 -0.9908) + :load-commands + '((special "swamp-blimp-3" #t) + (special "precursor-arm-3" #t) + (special "swamp-tetherrock-13" #t) + (special "swamp-tetherrock-14" #t) + (special "swamp-tetherrock-15" #t) + (special "swamp-tetherrock-16" #t)) + :vis-nick 'swa + :lev0 'swamp + :disp0 'display + :lev1 'village2 + :disp1 'special-vis) + (new 'static + 'continue-point + :name "swamp-dock2" + :level 'swamp + :trans + (new 'static 'vector :x 1645872.4 :y 36495.77 :z -8427323.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.8294 :w -0.5586) + :camera-trans + (new 'static 'vector :x 1599338.9 :y 57590.168 :z -8405954.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.418 0.0 -0.9084 0.1106 0.9925 -0.0509 0.9016 -0.1218 -0.4149) + :load-commands + '((special "swamp-blimp-3" #t) + (special "precursor-arm-3" #t) + (special "swamp-tetherrock-13" #t) + (special "swamp-tetherrock-14" #t) + (special "swamp-tetherrock-15" #t) + (special "swamp-tetherrock-16" #t)) + :vis-nick 'swa + :lev0 'swamp + :disp0 'display + :lev1 'village2 + :disp1 'special-vis) + (new 'static + 'continue-point + :name "swamp-cave2" + :level 'swamp + :trans + (new 'static 'vector :x 2037539.2 :y 1103.872 :z -8560013.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.0559 :w 0.9984) + :camera-trans + (new 'static 'vector :x 1995208.2 :y 21832.908 :z -8586304.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.5516 0.0 -0.834 0.097 0.9932 0.0641 0.8283 -0.1163 0.5479) + :load-commands + '((special "swamp-blimp-3" #t) + (special "precursor-arm-3" #t) + (special "swamp-tetherrock-13" #t) + (special "swamp-tetherrock-14" #t) + (special "swamp-tetherrock-15" #t) + (special "swamp-tetherrock-16" #t)) + :vis-nick 'swa + :lev0 'swamp + :disp0 'display + :lev1 'village2 + :disp1 'special-vis) + (new 'static + 'continue-point + :name "swamp-game" + :level 'swamp + :trans + (new 'static 'vector :x 2612289.2 :y -2047.5905 :z -8315907.5 :w 1.0) + :quat + (new 'static 'quaternion :y -0.6975 :w 0.7165) + :camera-trans + (new 'static 'vector :x 2661940.5 :y 20693.81 :z -8317980.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.0406 0.0 0.9991 -0.1452 0.9893 0.0059 -0.9885 -0.1453 0.0402) + :load-commands + '((special "swamp-blimp-3" #t) + (special "precursor-arm-3" #t) + (special "swamp-tetherrock-13" #t) + (special "swamp-tetherrock-14" #t) + (special "swamp-tetherrock-15" #t) + (special "swamp-tetherrock-16" #t)) + :vis-nick 'swa + :lev0 'swamp + :disp0 'display + :lev1 'village2 + :disp1 'special-vis) + (new 'static + 'continue-point + :name "swamp-cave3" + :level 'swamp + :trans + (new 'static 'vector :x 2011811.4 :y 3711.7952 :z -7923027.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.5269 :w 0.8499) + :camera-trans + (new 'static 'vector :x 2053120.4 :y 22242.51 :z -7927784.5 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.1145 0.0 0.9934 -0.1412 0.9898 0.0162 -0.9833 -0.1422 0.1134) + :load-commands + '((special "swamp-blimp-3" #t) + (special "precursor-arm-3" #t) + (special "swamp-tetherrock-13" #t) + (special "swamp-tetherrock-14" #t) + (special "swamp-tetherrock-15" #t) + (special "swamp-tetherrock-16" #t)) + :vis-nick 'swa + :lev0 'swamp + :disp0 'display + :lev1 'village2 + :disp1 'special-vis)) + :tasks + '(36 37 38 39 40 41 42 43) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 1986560.0 :z -8417280.0 :w 1003520.0) + :buzzer 43 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #t)) (define rolling - (new 'static 'level-load-info - :index 12 - :name 'rolling - :visname 'rolling-vis - :nickname 'rol - :packages '(rolling) - :sound-banks '(rolling) - :music-bank 'rolling - :ambient-sounds '() - :mood '*rolling-mood* - :mood-func 'update-mood-rolling - :ocean 'none - :sky #t - :continues '((new 'static 'continue-point - :name "rolling-start" - :level 'rolling - :trans (new 'static 'vector :x 432272.6 :y 42821.633 :z -6737529.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.545 :w 0.8383) - :camera-trans (new 'static 'vector :x 494105.8 :y 67237.48 :z -6748524.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.1759 0.0 0.9843 -0.2371 0.9705 0.0423 -0.9553 -0.2409 0.1707) - :load-commands '() - :vis-nick 'rol - :lev0 'rolling - :disp0 'display - :lev1 'village2 - :disp1 'display - ) - ) - :tasks '(52 53 54 55 56 57 58 59) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x -753664.0 :y 131072.0 :z -6569984.0 :w 974848.0) - :buzzer 57 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 12 + :name 'rolling + :visname 'rolling-vis + :nickname 'rol + :packages '(rolling) + :sound-banks '(rolling) + :music-bank 'rolling + :ambient-sounds + '() + :mood '*rolling-mood* + :mood-func 'update-mood-rolling + :ocean 'none + :sky #t + :continues + '((new 'static + 'continue-point + :name "rolling-start" + :level 'rolling + :trans + (new 'static 'vector :x 432272.6 :y 42821.633 :z -6737529.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.545 :w 0.8383) + :camera-trans + (new 'static 'vector :x 494105.8 :y 67237.48 :z -6748524.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.1759 0.0 0.9843 -0.2371 0.9705 0.0423 -0.9553 -0.2409 0.1707) + :load-commands + '() + :vis-nick 'rol + :lev0 'rolling + :disp0 'display + :lev1 'village2 + :disp1 'display)) + :tasks + '(52 53 54 55 56 57 58 59) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x -753664.0 :y 131072.0 :z -6569984.0 :w 974848.0) + :buzzer 57 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #t)) (define ogre - (new 'static 'level-load-info - :index 13 - :name 'ogre - :visname 'ogre-vis - :nickname 'ogr - :packages '(ogre) - :sound-banks '(ogre) - :music-bank 'ogre - :ambient-sounds '() - :mood '*ogre-mood* - :mood-func 'update-mood-ogre - :ocean 'none - :sky #t - :continues '((new 'static 'continue-point - :name "ogre-start" - :level 'ogre - :trans (new 'static 'vector :x 849775.8 :y 163962.88 :z -7301166.5 :w 1.0) - :quat (new 'static 'quaternion :y -0.9931 :w 0.1166) - :camera-trans (new 'static 'vector :x 848906.25 :y 185056.88 :z -7249962.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9998 0.0 -0.0159 0.0019 0.9925 -0.1215 0.0158 -0.1215 -0.9924) - :load-commands '() - :vis-nick 'ogr - :lev0 'ogre - :disp0 'display - :lev1 'village2 - :disp1 'display - ) - (new 'static 'continue-point - :name "ogre-race" - :level 'ogre - :trans (new 'static 'vector :x 841424.9 :y 163801.1 :z -8205419.5 :w 1.0) - :quat (new 'static 'quaternion :y -0.9857 :w 0.168) - :camera-trans (new 'static 'vector :x 860479.9 :y 183815.38 :z -8162368.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9145 0.0 0.4045 -0.0497 0.9924 -0.1125 -0.4015 -0.123 -0.9075) - :load-commands '() - :vis-nick 'ogr - :lev0 'ogre - :disp0 'display - :lev1 'village2 - :disp1 #f - ) - (new 'static 'continue-point - :name "ogre-end" - :level 'ogre - :trans (new 'static 'vector :x 3971233.5 :y 141227.62 :z -13935735.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.8721 :w 0.4892) - :camera-trans (new 'static 'vector :x 3997892.2 :y 159604.73 :z -13904449.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.7611 0.0 0.6485 -0.0932 0.9896 -0.1094 -0.6417 -0.1438 -0.7532) - :load-commands '() - :vis-nick 'ogr - :lev0 'village3 - :disp0 'display - :lev1 'ogre - :disp1 'display - ) - ) - :tasks '(86 87 110 88) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 2334720.0 :y 180224.0 :z -10653696.0 :w 3653632.0) - :buzzer 88 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 13 + :name 'ogre + :visname 'ogre-vis + :nickname 'ogr + :packages '(ogre) + :sound-banks '(ogre) + :music-bank 'ogre + :ambient-sounds + '() + :mood '*ogre-mood* + :mood-func 'update-mood-ogre + :ocean 'none + :sky #t + :continues + '((new 'static + 'continue-point + :name "ogre-start" + :level 'ogre + :trans + (new 'static 'vector :x 849775.8 :y 163962.88 :z -7301166.5 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9931 :w 0.1166) + :camera-trans + (new 'static 'vector :x 848906.25 :y 185056.88 :z -7249962.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9998 0.0 -0.0159 0.0019 0.9925 -0.1215 0.0158 -0.1215 -0.9924) + :load-commands + '() + :vis-nick 'ogr + :lev0 'ogre + :disp0 'display + :lev1 'village2 + :disp1 'display) + (new 'static + 'continue-point + :name "ogre-race" + :level 'ogre + :trans + (new 'static 'vector :x 841424.9 :y 163801.1 :z -8205419.5 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9857 :w 0.168) + :camera-trans + (new 'static 'vector :x 860479.9 :y 183815.38 :z -8162368.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9145 0.0 0.4045 -0.0497 0.9924 -0.1125 -0.4015 -0.123 -0.9075) + :load-commands + '() + :vis-nick 'ogr + :lev0 'ogre + :disp0 'display + :lev1 'village2 + :disp1 #f) + (new 'static + 'continue-point + :name "ogre-end" + :level 'ogre + :trans + (new 'static 'vector :x 3971233.5 :y 141227.62 :z -13935735.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.8721 :w 0.4892) + :camera-trans + (new 'static 'vector :x 3997892.2 :y 159604.73 :z -13904449.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.7611 0.0 0.6485 -0.0932 0.9896 -0.1094 -0.6417 -0.1438 -0.7532) + :load-commands + '() + :vis-nick 'ogr + :lev0 'village3 + :disp0 'display + :lev1 'ogre + :disp1 'display)) + :tasks + '(86 87 110 88) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 2334720.0 :y 180224.0 :z -10653696.0 :w 3653632.0) + :buzzer 88 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #t)) (define village3 - (new 'static 'level-load-info - :index 14 - :name 'village3 - :visname 'village3-vis - :nickname 'vi3 - :packages '(village3) - :sound-banks '(village3) - :music-bank 'village3 - :ambient-sounds '() - :mood '*village3-mood* - :mood-func 'update-mood-village3 - :ocean #f - :sky #t - :continues '((new 'static 'continue-point - :name "village3-start" - :level 'village3 - :trans (new 'static 'vector :x 4468021.5 :y 186608.03 :z -14054268.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.9999 :w 0.005) - :camera-trans (new 'static 'vector :x 4469439.5 :y 207701.2 :z -14003077.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9996 0.0 0.0268 -0.0032 0.9925 -0.1216 -0.0266 -0.1216 -0.9922) - :load-commands '() - :vis-nick 'vi3 - :lev0 'village3 - :disp0 'display - :lev1 'ogre - :disp1 #f - ) - (new 'static 'continue-point - :name "village3-warp" - :level 'village3 - :flags (continue-flags warp) - :trans (new 'static 'vector :x 4549776.0 :y 215375.88 :z -14285922.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.681 :w 0.7322) - :camera-trans (new 'static 'vector :x 4543255.0 :y 226776.67 :z -14313317.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.8563 0.0 -0.2763 0.0456 0.8875 0.1413 0.2725 -0.1485 0.8446) - :load-commands '() - :vis-nick 'vi3 - :lev0 'village3 - :disp0 'display - :lev1 'ogre - :disp1 #f - ) - (new 'static 'continue-point - :name "village3-farside" - :level 'village3 - :trans (new 'static 'vector :x 4423744.0 :y 198723.58 :z -14530641.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.6611 :w 0.7502) - :camera-trans (new 'static 'vector :x 4381844.0 :y 218599.83 :z -14551361.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.442 0.0 -0.8969 0.1099 0.9924 0.0541 0.8902 -0.1225 0.4387) - :load-commands '() - :vis-nick 'vi3 - :lev0 'village3 - :disp0 'display - :lev1 'snow - :disp1 #f - ) - ) - :tasks '(96 97 98 99 100 101 74 77) - :priority #xc8 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 4571136.0 :y 389120.0 :z -14323712.0 :w 409600.0) - :buzzer 77 - :bottom-height (meters -20) - :run-packages '("common") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 14 + :name 'village3 + :visname 'village3-vis + :nickname 'vi3 + :packages '(village3) + :sound-banks '(village3) + :music-bank 'village3 + :ambient-sounds + '() + :mood '*village3-mood* + :mood-func 'update-mood-village3 + :ocean #f + :sky #t + :continues + '((new 'static + 'continue-point + :name "village3-start" + :level 'village3 + :trans + (new 'static 'vector :x 4468021.5 :y 186608.03 :z -14054268.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9999 :w 0.005) + :camera-trans + (new 'static 'vector :x 4469439.5 :y 207701.2 :z -14003077.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9996 0.0 0.0268 -0.0032 0.9925 -0.1216 -0.0266 -0.1216 -0.9922) + :load-commands + '() + :vis-nick 'vi3 + :lev0 'village3 + :disp0 'display + :lev1 'ogre + :disp1 #f) + (new 'static + 'continue-point + :name "village3-warp" + :level 'village3 + :flags (continue-flags warp) + :trans + (new 'static 'vector :x 4549776.0 :y 215375.88 :z -14285922.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.681 :w 0.7322) + :camera-trans + (new 'static 'vector :x 4543255.0 :y 226776.67 :z -14313317.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.8563 0.0 -0.2763 0.0456 0.8875 0.1413 0.2725 -0.1485 0.8446) + :load-commands + '() + :vis-nick 'vi3 + :lev0 'village3 + :disp0 'display + :lev1 'ogre + :disp1 #f) + (new 'static + 'continue-point + :name "village3-farside" + :level 'village3 + :trans + (new 'static 'vector :x 4423744.0 :y 198723.58 :z -14530641.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.6611 :w 0.7502) + :camera-trans + (new 'static 'vector :x 4381844.0 :y 218599.83 :z -14551361.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.442 0.0 -0.8969 0.1099 0.9924 0.0541 0.8902 -0.1225 0.4387) + :load-commands + '() + :vis-nick 'vi3 + :lev0 'village3 + :disp0 'display + :lev1 'snow + :disp1 #f)) + :tasks + '(96 97 98 99 100 101 74 77) + :priority #xc8 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 4571136.0 :y 389120.0 :z -14323712.0 :w 409600.0) + :buzzer 77 + :bottom-height (meters -20) + :run-packages + '("common") + :wait-for-load #f)) (define snow - (new 'static 'level-load-info - :index 15 - :name 'snow - :visname 'snow-vis - :nickname 'sno - :packages '(snow) - :sound-banks '(snow) - :music-bank 'snow - :ambient-sounds '() - :mood '*snow-mood* - :mood-func 'update-mood-snow - :ocean #f - :sky #t - :sun-fade 0.5 - :continues '((new 'static 'continue-point - :name "snow-start" - :level 'snow - :trans (new 'static 'vector :x 4256260.0 :y 983713.8 :z -14182752.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.7906 :w -0.6122) - :camera-trans (new 'static 'vector :x 4303859.5 :y 1012363.7 :z -14156672.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.4804 0.0 0.877 -0.2049 0.9723 -0.1122 -0.8527 -0.2336 -0.4671) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "snow-fort" - :level 'snow - :trans (new 'static 'vector :x 3430875.2 :y 897149.3 :z -13397581.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.0968 :w 0.9952) - :camera-trans (new 'static 'vector :x 3428789.8 :y 918241.25 :z -13448724.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9991 0.0 -0.0419 0.0051 0.9925 0.1216 0.0415 -0.1217 0.9916) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "snow-flut-flut" - :level 'snow - :trans (new 'static 'vector :x 2481850.0 :y 1054709.4 :z -13922438.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.8628 :w -0.5055) - :camera-trans (new 'static 'vector :x 2497063.0 :y 1069339.9 :z -13900353.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.8224 0.0 0.5688 -0.135 0.9713 -0.1953 -0.5525 -0.2374 -0.7989) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "snow-pass-to-fort" - :level 'snow - :trans (new 'static 'vector :x 3751044.8 :y 917612.1 :z -13828696.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.3387 :w -0.9408) - :camera-trans (new 'static 'vector :x 3779776.0 :y 933972.8 :z -13845825.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.6061 0.0 0.7953 -0.1493 0.9822 0.1138 -0.7812 -0.1878 0.5953) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "snow-by-ice-lake" - :level 'snow - :trans (new 'static 'vector :x 3151164.5 :y 1049638.1 :z -14246464.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.6226 :w 0.7824) - :camera-trans (new 'static 'vector :x 3203905.2 :y 1080037.8 :z -14270850.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.4189 0.0 0.9079 -0.2169 0.971 0.1001 -0.8816 -0.2389 0.4068) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "snow-by-ice-lake-alt" - :level 'snow - :trans (new 'static 'vector :x 3053335.0 :y 1048927.9 :z -14058945.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.9997 :w 0.022) - :camera-trans (new 'static 'vector :x 3045845.5 :y 1068868.0 :z -14012568.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.987 0.0 -0.1601 0.0195 0.9924 -0.1207 0.1589 -0.1223 -0.9796) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "snow-outside-fort" - :level 'snow - :trans (new 'static 'vector :x 3431014.0 :y 901474.7 :z -13600187.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.0954 :w -0.9954) - :camera-trans (new 'static 'vector :x 3429969.0 :y 922565.44 :z -13651353.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9998 0.0 -0.0196 0.0023 0.9926 0.1213 0.0195 -0.1213 0.9924) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "snow-outside-cave" - :level 'snow - :trans (new 'static 'vector :x 3200864.2 :y 907400.4 :z -13676660.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.5867 :w -0.8097) - :camera-trans (new 'static 'vector :x 3247600.8 :y 928464.06 :z -13697606.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.4062 0.0 0.9137 -0.1107 0.9926 0.0492 -0.907 -0.1211 0.4032) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "snow-across-from-flut" - :level 'snow - :trans (new 'static 'vector :x 2721898.5 :y 1049845.0 :z -13743428.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.7688 :w -0.6394) - :camera-trans (new 'static 'vector :x 2712702.5 :y 1070288.5 :z -13791593.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9554 0.0 -0.2951 0.0343 0.9932 0.1111 0.2931 -0.1163 0.9489) - :load-commands '() - :vis-nick 'sno - :lev0 'snow - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - ) - :tasks '(60 61 62 63 64 66 67 65) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 3072000.0 :y 1142784.0 :z -14028800.0 :w 1290240.0) - :buzzer 65 - :bottom-height (meters 128) - :run-packages '("common") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 15 + :name 'snow + :visname 'snow-vis + :nickname 'sno + :packages '(snow) + :sound-banks '(snow) + :music-bank 'snow + :ambient-sounds + '() + :mood '*snow-mood* + :mood-func 'update-mood-snow + :ocean #f + :sky #t + :sun-fade 0.5 + :continues + '((new 'static + 'continue-point + :name "snow-start" + :level 'snow + :trans + (new 'static 'vector :x 4256260.0 :y 983713.8 :z -14182752.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.7906 :w -0.6122) + :camera-trans + (new 'static 'vector :x 4303859.5 :y 1012363.7 :z -14156672.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.4804 0.0 0.877 -0.2049 0.9723 -0.1122 -0.8527 -0.2336 -0.4671) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "snow-fort" + :level 'snow + :trans + (new 'static 'vector :x 3430875.2 :y 897149.3 :z -13397581.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.0968 :w 0.9952) + :camera-trans + (new 'static 'vector :x 3428789.8 :y 918241.25 :z -13448724.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9991 0.0 -0.0419 0.0051 0.9925 0.1216 0.0415 -0.1217 0.9916) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "snow-flut-flut" + :level 'snow + :trans + (new 'static 'vector :x 2481850.0 :y 1054709.4 :z -13922438.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.8628 :w -0.5055) + :camera-trans + (new 'static 'vector :x 2497063.0 :y 1069339.9 :z -13900353.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.8224 0.0 0.5688 -0.135 0.9713 -0.1953 -0.5525 -0.2374 -0.7989) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "snow-pass-to-fort" + :level 'snow + :trans + (new 'static 'vector :x 3751044.8 :y 917612.1 :z -13828696.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.3387 :w -0.9408) + :camera-trans + (new 'static 'vector :x 3779776.0 :y 933972.8 :z -13845825.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.6061 0.0 0.7953 -0.1493 0.9822 0.1138 -0.7812 -0.1878 0.5953) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "snow-by-ice-lake" + :level 'snow + :trans + (new 'static 'vector :x 3151164.5 :y 1049638.1 :z -14246464.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.6226 :w 0.7824) + :camera-trans + (new 'static 'vector :x 3203905.2 :y 1080037.8 :z -14270850.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.4189 0.0 0.9079 -0.2169 0.971 0.1001 -0.8816 -0.2389 0.4068) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "snow-by-ice-lake-alt" + :level 'snow + :trans + (new 'static 'vector :x 3053335.0 :y 1048927.9 :z -14058945.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9997 :w 0.022) + :camera-trans + (new 'static 'vector :x 3045845.5 :y 1068868.0 :z -14012568.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.987 0.0 -0.1601 0.0195 0.9924 -0.1207 0.1589 -0.1223 -0.9796) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "snow-outside-fort" + :level 'snow + :trans + (new 'static 'vector :x 3431014.0 :y 901474.7 :z -13600187.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.0954 :w -0.9954) + :camera-trans + (new 'static 'vector :x 3429969.0 :y 922565.44 :z -13651353.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9998 0.0 -0.0196 0.0023 0.9926 0.1213 0.0195 -0.1213 0.9924) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "snow-outside-cave" + :level 'snow + :trans + (new 'static 'vector :x 3200864.2 :y 907400.4 :z -13676660.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.5867 :w -0.8097) + :camera-trans + (new 'static 'vector :x 3247600.8 :y 928464.06 :z -13697606.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.4062 0.0 0.9137 -0.1107 0.9926 0.0492 -0.907 -0.1211 0.4032) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "snow-across-from-flut" + :level 'snow + :trans + (new 'static 'vector :x 2721898.5 :y 1049845.0 :z -13743428.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.7688 :w -0.6394) + :camera-trans + (new 'static 'vector :x 2712702.5 :y 1070288.5 :z -13791593.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9554 0.0 -0.2951 0.0343 0.9932 0.1111 0.2931 -0.1163 0.9489) + :load-commands + '() + :vis-nick 'sno + :lev0 'snow + :disp0 'display + :lev1 'village3 + :disp1 'display)) + :tasks + '(60 61 62 63 64 66 67 65) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 3072000.0 :y 1142784.0 :z -14028800.0 :w 1290240.0) + :buzzer 65 + :bottom-height (meters 128) + :run-packages + '("common") + :wait-for-load #f)) (define maincave - (new 'static 'level-load-info - :index 16 - :name 'maincave - :visname 'maincave-vis - :nickname 'mai - :packages '(maincave) - :sound-banks '(maincave) - :music-bank 'maincave - :ambient-sounds '() - :mood '*maincave-mood* - :mood-func 'update-mood-maincave - :ocean #f - :sky #f - :continues '((new 'static 'continue-point - :name "maincave-start" - :level 'maincave - :trans (new 'static 'vector :x 4420967.0 :y 33006.387 :z -13154230.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.0174 :w -0.9998) - :camera-trans (new 'static 'vector :x 4428164.5 :y 54074.164 :z -13204933.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.99 0.0 0.1405 -0.0169 0.9927 0.1192 -0.1395 -0.1204 0.9828) - :load-commands '() - :vis-nick 'mai - :lev0 'maincave - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "maincave-to-darkcave" - :level 'maincave - :trans (new 'static 'vector :x 4172175.8 :y 154223.83 :z -12445165.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.2093 :w 0.9778) - :camera-trans (new 'static 'vector :x 4193893.2 :y 175317.81 :z -12491520.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9052 0.0 0.4248 -0.0514 0.9926 0.1096 -0.4217 -0.1211 0.8986) - :load-commands '() - :vis-nick 'mai - :lev0 'maincave - :disp0 'display - :lev1 'darkcave - :disp1 #f - ) - (new 'static 'continue-point - :name "maincave-to-robocave" - :level 'maincave - :trans (new 'static 'vector :x 4760896.5 :y 44221.234 :z -12409880.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.548 :w 0.8364) - :camera-trans (new 'static 'vector :x 4745230.0 :y 57869.926 :z -12426885.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.7343 0.0 -0.6788 0.1872 0.9611 0.2026 0.6524 -0.2759 0.7058) - :load-commands '() - :vis-nick 'mai - :lev0 'maincave - :disp0 'display - :lev1 'robocave - :disp1 #f - ) - ) - :tasks '(78 79 80 81 82 83 84 85) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 4517888.0 :y 114688.0 :z -12484608.0 :w 655360.0) - :buzzer 85 - :bottom-height (meters -60) - :run-packages '("common") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 16 + :name 'maincave + :visname 'maincave-vis + :nickname 'mai + :packages '(maincave) + :sound-banks '(maincave) + :music-bank 'maincave + :ambient-sounds + '() + :mood '*maincave-mood* + :mood-func 'update-mood-maincave + :ocean #f + :sky #f + :continues + '((new 'static + 'continue-point + :name "maincave-start" + :level 'maincave + :trans + (new 'static 'vector :x 4420967.0 :y 33006.387 :z -13154230.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.0174 :w -0.9998) + :camera-trans + (new 'static 'vector :x 4428164.5 :y 54074.164 :z -13204933.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.99 0.0 0.1405 -0.0169 0.9927 0.1192 -0.1395 -0.1204 0.9828) + :load-commands + '() + :vis-nick 'mai + :lev0 'maincave + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "maincave-to-darkcave" + :level 'maincave + :trans + (new 'static 'vector :x 4172175.8 :y 154223.83 :z -12445165.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.2093 :w 0.9778) + :camera-trans + (new 'static 'vector :x 4193893.2 :y 175317.81 :z -12491520.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9052 0.0 0.4248 -0.0514 0.9926 0.1096 -0.4217 -0.1211 0.8986) + :load-commands + '() + :vis-nick 'mai + :lev0 'maincave + :disp0 'display + :lev1 'darkcave + :disp1 #f) + (new 'static + 'continue-point + :name "maincave-to-robocave" + :level 'maincave + :trans + (new 'static 'vector :x 4760896.5 :y 44221.234 :z -12409880.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.548 :w 0.8364) + :camera-trans + (new 'static 'vector :x 4745230.0 :y 57869.926 :z -12426885.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.7343 0.0 -0.6788 0.1872 0.9611 0.2026 0.6524 -0.2759 0.7058) + :load-commands + '() + :vis-nick 'mai + :lev0 'maincave + :disp0 'display + :lev1 'robocave + :disp1 #f)) + :tasks + '(78 79 80 81 82 83 84 85) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 4517888.0 :y 114688.0 :z -12484608.0 :w 655360.0) + :buzzer 85 + :bottom-height (meters -60) + :run-packages + '("common") + :wait-for-load #f)) (define darkcave - (new 'static 'level-load-info - :index 17 - :name 'darkcave - :visname 'darkcave-vis - :nickname 'dar - :packages '(darkcave) - :sound-banks '(darkcave) - :music-bank 'maincave - :ambient-sounds '() - :mood '*darkcave-mood* - :mood-func 'update-mood-darkcave - :ocean #f - :sky #f - :continues '((new 'static 'continue-point - :name "darkcave-start" - :level 'darkcave - :trans (new 'static 'vector :x 3813246.2 :y 129487.664 :z -12114304.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.1439 :w 0.9895) - :camera-trans (new 'static 'vector :x 3793301.0 :y 145573.48 :z -12139847.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.7892 0.0 -0.614 0.1178 0.9813 0.1515 0.6026 -0.1919 0.7745) - :load-commands '() - :vis-nick 'dar - :lev0 'maincave - :disp0 'display - :lev1 'darkcave - :disp1 'display - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 3620864.0 :y 266240.0 :z -11935744.0 :w 368640.0) - :buzzer 85 - :bottom-height (meters -60) - :run-packages '("common" "maincave") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 17 + :name 'darkcave + :visname 'darkcave-vis + :nickname 'dar + :packages '(darkcave) + :sound-banks '(darkcave) + :music-bank 'maincave + :ambient-sounds + '() + :mood '*darkcave-mood* + :mood-func 'update-mood-darkcave + :ocean #f + :sky #f + :continues + '((new 'static + 'continue-point + :name "darkcave-start" + :level 'darkcave + :trans + (new 'static 'vector :x 3813246.2 :y 129487.664 :z -12114304.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.1439 :w 0.9895) + :camera-trans + (new 'static 'vector :x 3793301.0 :y 145573.48 :z -12139847.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.7892 0.0 -0.614 0.1178 0.9813 0.1515 0.6026 -0.1919 0.7745) + :load-commands + '() + :vis-nick 'dar + :lev0 'maincave + :disp0 'display + :lev1 'darkcave + :disp1 'display)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 3620864.0 :y 266240.0 :z -11935744.0 :w 368640.0) + :buzzer 85 + :bottom-height (meters -60) + :run-packages + '("common" "maincave") + :wait-for-load #t)) (define robocave - (new 'static 'level-load-info - :index 18 - :name 'robocave - :visname 'robocave-vis - :nickname 'rob - :packages '(robocave) - :sound-banks '(robocave) - :music-bank 'maincave - :ambient-sounds '() - :mood '*robocave-mood* - :mood-func 'update-mood-robocave - :ocean #f - :sky #f - :continues '((new 'static 'continue-point - :name "robocave-start" - :level 'robocave - :trans (new 'static 'vector :x 5208223.5 :y 69697.945 :z -11781496.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.3654 :w -0.9308) - :camera-trans (new 'static 'vector :x 5171715.0 :y 90796.85 :z -11817413.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.7006 0.0 -0.7134 0.0864 0.9926 0.0849 0.7082 -0.1212 0.6954) - :load-commands '() - :vis-nick 'rob - :lev0 'maincave - :disp0 'display - :lev1 'robocave - :disp1 'display - ) - (new 'static 'continue-point - :name "robocave-bottom" - :level 'robocave - :trans (new 'static 'vector :x 5435461.5 :y -97111.24 :z -11588379.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.1086 :w 0.994) - :camera-trans (new 'static 'vector :x 5409966.5 :y -76017.664 :z -11632764.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.8662 0.0 -0.4996 0.0605 0.9926 0.105 0.4959 -0.1212 0.8598) - :load-commands '() - :vis-nick 'rob - :lev0 'maincave - :disp0 'display - :lev1 'robocave - :disp1 'display - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 5529600.0 :y 81920.0 :z -11468800.0 :w 512000.0) - :buzzer 85 - :bottom-height (meters -60) - :run-packages '("common" "maincave") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 18 + :name 'robocave + :visname 'robocave-vis + :nickname 'rob + :packages '(robocave) + :sound-banks '(robocave) + :music-bank 'maincave + :ambient-sounds + '() + :mood '*robocave-mood* + :mood-func 'update-mood-robocave + :ocean #f + :sky #f + :continues + '((new 'static + 'continue-point + :name "robocave-start" + :level 'robocave + :trans + (new 'static 'vector :x 5208223.5 :y 69697.945 :z -11781496.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.3654 :w -0.9308) + :camera-trans + (new 'static 'vector :x 5171715.0 :y 90796.85 :z -11817413.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.7006 0.0 -0.7134 0.0864 0.9926 0.0849 0.7082 -0.1212 0.6954) + :load-commands + '() + :vis-nick 'rob + :lev0 'maincave + :disp0 'display + :lev1 'robocave + :disp1 'display) + (new 'static + 'continue-point + :name "robocave-bottom" + :level 'robocave + :trans + (new 'static 'vector :x 5435461.5 :y -97111.24 :z -11588379.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.1086 :w 0.994) + :camera-trans + (new 'static 'vector :x 5409966.5 :y -76017.664 :z -11632764.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.8662 0.0 -0.4996 0.0605 0.9926 0.105 0.4959 -0.1212 0.8598) + :load-commands + '() + :vis-nick 'rob + :lev0 'maincave + :disp0 'display + :lev1 'robocave + :disp1 'display)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 5529600.0 :y 81920.0 :z -11468800.0 :w 512000.0) + :buzzer 85 + :bottom-height (meters -60) + :run-packages + '("common" "maincave") + :wait-for-load #t)) (define lavatube - (new 'static 'level-load-info - :index 19 - :name 'lavatube - :visname 'lavatube-vis - :nickname 'lav - :packages '(lavatube) - :sound-banks '(lavatube) - :music-bank 'lavatube - :ambient-sounds '() - :mood '*lavatube-mood* - :mood-func 'update-mood-lavatube - :ocean #f - :sky #f - :continues '((new 'static 'continue-point - :name "lavatube-start" - :level 'lavatube - :trans (new 'static 'vector :x 5511317.0 :y 159871.8 :z -14621239.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.3753 :w -0.9268) - :camera-trans (new 'static 'vector :x 5510636.5 :y 197720.06 :z -14663128.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9992 0.0 -0.0386 0.0178 0.8875 0.4603 0.0343 -0.4606 0.8868) - :load-commands '() - :vis-nick 'lav - :lev0 'lavatube - :disp0 'display - :lev1 'village3 - :disp1 'display - ) - (new 'static 'continue-point - :name "lavatube-middle" - :level 'lavatube - :trans (new 'static 'vector :x 9081441.0 :y -3935.8464 :z -14056285.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.7002 :w -0.7139) - :camera-trans (new 'static 'vector :x 9055362.0 :y 10606.592 :z -14050822.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.205 0.0 -0.9787 0.2321 0.9714 -0.0486 0.9508 -0.2371 -0.1991) - :load-commands '() - :vis-nick 'lav - :lev0 'lavatube - :disp0 'display - :lev1 'village3 - :disp1 #f - ) - (new 'static 'continue-point - :name "lavatube-after-ribbon" - :level 'lavatube - :trans (new 'static 'vector :x 9954895.0 :y 390513.06 :z -16548614.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.7485 :w -0.663) - :camera-trans (new 'static 'vector :x 9923721.0 :y 406466.16 :z -16541633.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.2191 0.0 -0.9756 0.1906 0.9807 -0.0428 0.9568 -0.1953 -0.2149) - :load-commands '() - :vis-nick 'lav - :lev0 'lavatube - :disp0 'display - :lev1 'citadel - :disp1 #f - ) - (new 'static 'continue-point - :name "lavatube-end" - :level 'lavatube - :trans (new 'static 'vector :x 11479892.0 :y -163656.5 :z -18266490.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.9589 :w -0.2836) - :camera-trans (new 'static 'vector :x 11526721.0 :y -143482.47 :z -18257412.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.3027 0.0 0.953 -0.1235 0.9915 -0.0392 -0.945 -0.1296 -0.3001) - :load-commands '() - :vis-nick 'lav - :lev0 'lavatube - :disp0 'display - :lev1 'citadel - :disp1 'display - ) - ) - :tasks '(89 90) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 8806400.0 :y 131072.0 :z -15564800.0 :w 3174400.0) - :buzzer 90 - :bottom-height (meters -70) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 19 + :name 'lavatube + :visname 'lavatube-vis + :nickname 'lav + :packages '(lavatube) + :sound-banks '(lavatube) + :music-bank 'lavatube + :ambient-sounds + '() + :mood '*lavatube-mood* + :mood-func 'update-mood-lavatube + :ocean #f + :sky #f + :continues + '((new 'static + 'continue-point + :name "lavatube-start" + :level 'lavatube + :trans + (new 'static 'vector :x 5511317.0 :y 159871.8 :z -14621239.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.3753 :w -0.9268) + :camera-trans + (new 'static 'vector :x 5510636.5 :y 197720.06 :z -14663128.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9992 0.0 -0.0386 0.0178 0.8875 0.4603 0.0343 -0.4606 0.8868) + :load-commands + '() + :vis-nick 'lav + :lev0 'lavatube + :disp0 'display + :lev1 'village3 + :disp1 'display) + (new 'static + 'continue-point + :name "lavatube-middle" + :level 'lavatube + :trans + (new 'static 'vector :x 9081441.0 :y -3935.8464 :z -14056285.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.7002 :w -0.7139) + :camera-trans + (new 'static 'vector :x 9055362.0 :y 10606.592 :z -14050822.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.205 0.0 -0.9787 0.2321 0.9714 -0.0486 0.9508 -0.2371 -0.1991) + :load-commands + '() + :vis-nick 'lav + :lev0 'lavatube + :disp0 'display + :lev1 'village3 + :disp1 #f) + (new 'static + 'continue-point + :name "lavatube-after-ribbon" + :level 'lavatube + :trans + (new 'static 'vector :x 9954895.0 :y 390513.06 :z -16548614.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.7485 :w -0.663) + :camera-trans + (new 'static 'vector :x 9923721.0 :y 406466.16 :z -16541633.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.2191 0.0 -0.9756 0.1906 0.9807 -0.0428 0.9568 -0.1953 -0.2149) + :load-commands + '() + :vis-nick 'lav + :lev0 'lavatube + :disp0 'display + :lev1 'citadel + :disp1 #f) + (new 'static + 'continue-point + :name "lavatube-end" + :level 'lavatube + :trans + (new 'static 'vector :x 11479892.0 :y -163656.5 :z -18266490.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9589 :w -0.2836) + :camera-trans + (new 'static 'vector :x 11526721.0 :y -143482.47 :z -18257412.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.3027 0.0 0.953 -0.1235 0.9915 -0.0392 -0.945 -0.1296 -0.3001) + :load-commands + '() + :vis-nick 'lav + :lev0 'lavatube + :disp0 'display + :lev1 'citadel + :disp1 'display)) + :tasks + '(89 90) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 8806400.0 :y 131072.0 :z -15564800.0 :w 3174400.0) + :buzzer 90 + :bottom-height (meters -70) + :run-packages + '("common") + :wait-for-load #t)) (define citadel - (new 'static 'level-load-info - :index 20 - :name 'citadel - :visname 'citadel-vis - :nickname 'cit - :packages '(citadel) - :sound-banks '(citadel) - :music-bank 'citadel - :ambient-sounds '() - :mood '*citadel-mood* - :mood-func 'update-mood-citadel - :ocean #f - :sky #f - :continues '((new 'static 'continue-point - :name "citadel-start" - :level 'citadel - :trans (new 'static 'vector :x 11442706.0 :y -142755.84 :z -18869044.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.9992 :w 0.0392) - :camera-trans (new 'static 'vector :x 11441183.0 :y -122509.31 :z -18820882.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9991 0.0 -0.0411 0.005 0.9925 -0.122 0.0408 -0.1221 -0.9916) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'lavatube - :disp1 #f - ) - (new 'static 'continue-point - :name "citadel-entrance" - :level 'citadel - :trans (new 'static 'vector :x 11443969.0 :y -154216.03 :z -18472782.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.9728 :w 0.2314) - :camera-trans (new 'static 'vector :x 11436929.0 :y -134244.36 :z -18426254.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9898 0.0 -0.1424 0.0173 0.9925 -0.1207 0.1413 -0.1219 -0.9824) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'lavatube - :disp1 'display - ) - (new 'static 'continue-point - :name "citadel-warp" - :level 'citadel - :flags (continue-flags warp) - :trans (new 'static 'vector :x 11454895.0 :y -161791.6 :z -18204690.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.7511 :w 0.6601) - :camera-trans (new 'static 'vector :x 11406872.0 :y -141278.0 :z -18194638.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.1989 0.0 -0.98 0.1179 0.9927 -0.0239 0.9728 -0.1203 -0.1974) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'lavatube - :disp1 'display - ) - (new 'static 'continue-point - :name "citadel-launch-start" - :level 'citadel - :trans (new 'static 'vector :x 10827551.0 :y -94047.02 :z -18946718.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.8377 :w -0.546) - :camera-trans (new 'static 'vector :x 10862150.0 :y -75343.875 :z -18922316.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.5766 0.0 0.8169 -0.1125 0.9904 -0.0794 -0.8091 -0.1378 -0.5711) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'lavatube - :disp1 #f - ) - (new 'static 'continue-point - :name "citadel-launch-end" - :level 'citadel - :trans (new 'static 'vector :x 11047507.0 :y -81514.086 :z -19495960.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.0292 :w 0.9995) - :camera-trans (new 'static 'vector :x 11033498.0 :y -63027.2 :z -19534916.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9413 0.0 -0.3373 0.0481 0.9897 0.1343 0.3339 -0.1427 0.9317) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'finalboss - :disp1 #f - ) - (new 'static 'continue-point - :name "citadel-plat-start" - :level 'citadel - :trans (new 'static 'vector :x 11443470.0 :y -120194.664 :z -19845628.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.9907 :w -0.1355) - :camera-trans (new 'static 'vector :x 11443545.0 :y -99100.266 :z -19794374.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9999 0.0 0.0016 -0.0001 0.9926 -0.1207 -0.0015 -0.1207 -0.9926) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'finalboss - :disp1 #f - ) - (new 'static 'continue-point - :name "citadel-plat-end" - :level 'citadel - :trans (new 'static 'vector :x 11269726.0 :y -12132.352 :z -19614712.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.0419 :w 0.9991) - :camera-trans (new 'static 'vector :x 11264449.0 :y 7920.8447 :z -19661710.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.9938 0.0 -0.1103 0.0134 0.9924 0.1215 0.1095 -0.1223 0.9864) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'finalboss - :disp1 #f - ) - (new 'static 'continue-point - :name "citadel-generator-start" - :level 'citadel - :trans (new 'static 'vector :x 12138031.0 :y -36900.863 :z -18933304.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.7487 :w 0.6628) - :camera-trans (new 'static 'vector :x 12101831.0 :y -19811.123 :z -18933632.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.0093 0.0 -0.9999 0.1678 0.9858 0.0015 0.9857 -0.1678 0.0092) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'finalboss - :disp1 #f - ) - (new 'static 'continue-point - :name "citadel-generator-end" - :level 'citadel - :trans (new 'static 'vector :x 11837483.0 :y -20177.715 :z -19506848.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.3564 :w 0.9342) - :camera-trans (new 'static 'vector :x 11872697.0 :y 887.6032 :z -19544198.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.7296 0.0 0.6838 -0.0851 0.9922 0.0908 -0.6785 -0.1245 0.7239) - :load-commands '() - :vis-nick #f - :lev0 'citadel - :disp0 'display - :lev1 #f - :disp1 #f - ) - (new 'static 'continue-point - :name "citadel-elevator" - :level 'citadel - :trans (new 'static 'vector :x 11447961.0 :y 234055.27 :z -19169000.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.2351 :w 0.9719) - :camera-trans (new 'static 'vector :x 11454465.0 :y 252947.66 :z -19126656.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.9932 0.0 0.1161 -0.017 0.9892 -0.1454 -0.1148 -0.1464 -0.9825) - :load-commands '() - :vis-nick 'cit - :lev0 'citadel - :disp0 'display - :lev1 'finalboss - :disp1 #f - ) - ) - :tasks '(70 71 72 73 91) - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 11436032.0 :y -462848.0 :z -19750912.0 :w 1228800.0) - :buzzer 91 - :bottom-height (meters -114) - :run-packages '("common") - :wait-for-load #t - ) - ) + (new 'static + 'level-load-info + :index 20 + :name 'citadel + :visname 'citadel-vis + :nickname 'cit + :packages '(citadel) + :sound-banks '(citadel) + :music-bank 'citadel + :ambient-sounds + '() + :mood '*citadel-mood* + :mood-func 'update-mood-citadel + :ocean #f + :sky #f + :continues + '((new 'static + 'continue-point + :name "citadel-start" + :level 'citadel + :trans + (new 'static 'vector :x 11442706.0 :y -142755.84 :z -18869044.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.9992 :w 0.0392) + :camera-trans + (new 'static 'vector :x 11441183.0 :y -122509.31 :z -18820882.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9991 0.0 -0.0411 0.005 0.9925 -0.122 0.0408 -0.1221 -0.9916) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'lavatube + :disp1 #f) + (new 'static + 'continue-point + :name "citadel-entrance" + :level 'citadel + :trans + (new 'static 'vector :x 11443969.0 :y -154216.03 :z -18472782.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9728 :w 0.2314) + :camera-trans + (new 'static 'vector :x 11436929.0 :y -134244.36 :z -18426254.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9898 0.0 -0.1424 0.0173 0.9925 -0.1207 0.1413 -0.1219 -0.9824) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'lavatube + :disp1 'display) + (new 'static + 'continue-point + :name "citadel-warp" + :level 'citadel + :flags (continue-flags warp) + :trans + (new 'static 'vector :x 11454895.0 :y -161791.6 :z -18204690.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.7511 :w 0.6601) + :camera-trans + (new 'static 'vector :x 11406872.0 :y -141278.0 :z -18194638.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.1989 0.0 -0.98 0.1179 0.9927 -0.0239 0.9728 -0.1203 -0.1974) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'lavatube + :disp1 'display) + (new 'static + 'continue-point + :name "citadel-launch-start" + :level 'citadel + :trans + (new 'static 'vector :x 10827551.0 :y -94047.02 :z -18946718.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.8377 :w -0.546) + :camera-trans + (new 'static 'vector :x 10862150.0 :y -75343.875 :z -18922316.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.5766 0.0 0.8169 -0.1125 0.9904 -0.0794 -0.8091 -0.1378 -0.5711) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'lavatube + :disp1 #f) + (new 'static + 'continue-point + :name "citadel-launch-end" + :level 'citadel + :trans + (new 'static 'vector :x 11047507.0 :y -81514.086 :z -19495960.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.0292 :w 0.9995) + :camera-trans + (new 'static 'vector :x 11033498.0 :y -63027.2 :z -19534916.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9413 0.0 -0.3373 0.0481 0.9897 0.1343 0.3339 -0.1427 0.9317) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'finalboss + :disp1 #f) + (new 'static + 'continue-point + :name "citadel-plat-start" + :level 'citadel + :trans + (new 'static 'vector :x 11443470.0 :y -120194.664 :z -19845628.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.9907 :w -0.1355) + :camera-trans + (new 'static 'vector :x 11443545.0 :y -99100.266 :z -19794374.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9999 0.0 0.0016 -0.0001 0.9926 -0.1207 -0.0015 -0.1207 -0.9926) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'finalboss + :disp1 #f) + (new 'static + 'continue-point + :name "citadel-plat-end" + :level 'citadel + :trans + (new 'static 'vector :x 11269726.0 :y -12132.352 :z -19614712.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.0419 :w 0.9991) + :camera-trans + (new 'static 'vector :x 11264449.0 :y 7920.8447 :z -19661710.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.9938 0.0 -0.1103 0.0134 0.9924 0.1215 0.1095 -0.1223 0.9864) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'finalboss + :disp1 #f) + (new 'static + 'continue-point + :name "citadel-generator-start" + :level 'citadel + :trans + (new 'static 'vector :x 12138031.0 :y -36900.863 :z -18933304.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.7487 :w 0.6628) + :camera-trans + (new 'static 'vector :x 12101831.0 :y -19811.123 :z -18933632.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.0093 0.0 -0.9999 0.1678 0.9858 0.0015 0.9857 -0.1678 0.0092) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'finalboss + :disp1 #f) + (new 'static + 'continue-point + :name "citadel-generator-end" + :level 'citadel + :trans + (new 'static 'vector :x 11837483.0 :y -20177.715 :z -19506848.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.3564 :w 0.9342) + :camera-trans + (new 'static 'vector :x 11872697.0 :y 887.6032 :z -19544198.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.7296 0.0 0.6838 -0.0851 0.9922 0.0908 -0.6785 -0.1245 0.7239) + :load-commands + '() + :vis-nick #f + :lev0 'citadel + :disp0 'display + :lev1 #f + :disp1 #f) + (new 'static + 'continue-point + :name "citadel-elevator" + :level 'citadel + :trans + (new 'static 'vector :x 11447961.0 :y 234055.27 :z -19169000.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.2351 :w 0.9719) + :camera-trans + (new 'static 'vector :x 11454465.0 :y 252947.66 :z -19126656.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.9932 0.0 0.1161 -0.017 0.9892 -0.1454 -0.1148 -0.1464 -0.9825) + :load-commands + '() + :vis-nick 'cit + :lev0 'citadel + :disp0 'display + :lev1 'finalboss + :disp1 #f)) + :tasks + '(70 71 72 73 91) + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 11436032.0 :y -462848.0 :z -19750912.0 :w 1228800.0) + :buzzer 91 + :bottom-height (meters -114) + :run-packages + '("common") + :wait-for-load #t)) (define finalboss - (new 'static 'level-load-info - :index 21 - :name 'finalboss - :visname 'finalboss-vis - :nickname 'fin - :packages '(finalboss) - :sound-banks '(finalboss) - :music-bank 'finalboss - :ambient-sounds '() - :mood '*finalboss-mood* - :mood-func 'update-mood-finalboss - :ocean #f - :sky #t - :sun-fade 1.0 - :continues '((new 'static 'continue-point - :name "finalboss-start" - :level 'finalboss - :trans (new 'static 'vector :x 11548456.0 :y 2215872.0 :z -19409498.0 :w 1.0) - :quat (new 'static 'quaternion :y 0.7325 :w 0.6807) - :camera-trans (new 'static 'vector :x 11513311.0 :y 2234999.5 :z -19435708.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.5883 0.0 -0.8085 0.1074 0.9911 0.0781 0.8014 -0.1328 0.5831) - :load-commands '((special "citb-exit-plat-4" #t)) - :vis-nick 'fin - :lev0 'finalboss - :disp0 'display - :lev1 'citadel - :disp1 'special - ) - (new 'static 'continue-point - :name "finalboss-fight" - :level 'finalboss - :trans (new 'static 'vector :x 12288335.0 :y 1970461.9 :z -19848522.0 :w 1.0) - :quat (new 'static 'quaternion :y -0.5359 :w -0.8442) - :camera-trans (new 'static 'vector :x 12265366.0 :y 1984228.5 :z -19842574.0 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.243 0.0 -0.97 0.2594 0.9635 -0.065 0.9346 -0.2675 -0.2341) - :load-commands '((special "citb-exit-plat-4" #t)) - :vis-nick 'fin - :lev0 'finalboss - :disp0 'display - :lev1 'citadel - :disp1 'special - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x 11837440.0 :y 2129920.0 :z -19578880.0 :w 778240.0) - :buzzer 91 - :bottom-height (meters -114) - :run-packages '("common") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 21 + :name 'finalboss + :visname 'finalboss-vis + :nickname 'fin + :packages '(finalboss) + :sound-banks '(finalboss) + :music-bank 'finalboss + :ambient-sounds + '() + :mood '*finalboss-mood* + :mood-func 'update-mood-finalboss + :ocean #f + :sky #t + :sun-fade 1.0 + :continues + '((new 'static + 'continue-point + :name "finalboss-start" + :level 'finalboss + :trans + (new 'static 'vector :x 11548456.0 :y 2215872.0 :z -19409498.0 :w 1.0) + :quat + (new 'static 'quaternion :y 0.7325 :w 0.6807) + :camera-trans + (new 'static 'vector :x 11513311.0 :y 2234999.5 :z -19435708.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.5883 0.0 -0.8085 0.1074 0.9911 0.0781 0.8014 -0.1328 0.5831) + :load-commands + '((special "citb-exit-plat-4" #t)) + :vis-nick 'fin + :lev0 'finalboss + :disp0 'display + :lev1 'citadel + :disp1 'special) + (new 'static + 'continue-point + :name "finalboss-fight" + :level 'finalboss + :trans + (new 'static 'vector :x 12288335.0 :y 1970461.9 :z -19848522.0 :w 1.0) + :quat + (new 'static 'quaternion :y -0.5359 :w -0.8442) + :camera-trans + (new 'static 'vector :x 12265366.0 :y 1984228.5 :z -19842574.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.243 0.0 -0.97 0.2594 0.9635 -0.065 0.9346 -0.2675 -0.2341) + :load-commands + '((special "citb-exit-plat-4" #t)) + :vis-nick 'fin + :lev0 'finalboss + :disp0 'display + :lev1 'citadel + :disp1 'special)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x 11837440.0 :y 2129920.0 :z -19578880.0 :w 778240.0) + :buzzer 91 + :bottom-height (meters -114) + :run-packages + '("common") + :wait-for-load #f)) -(define intro (new 'static 'level-load-info - :index 22 - :name 'intro - :visname 'intro-vis - :nickname 'int - :packages '(intro) - :sound-banks '() - :music-bank #f - :ambient-sounds '() - :mood '*default-mood* - :mood-func 'update-mood-default - :ocean #f - :sky #f - :continues '() - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere) - :bottom-height (meters -10000000) - :run-packages '("common") - :wait-for-load #f - ) - ) +(define intro + (new 'static + 'level-load-info + :index 22 + :name 'intro + :visname 'intro-vis + :nickname 'int + :packages '(intro) + :sound-banks + '() + :music-bank #f + :ambient-sounds + '() + :mood '*default-mood* + :mood-func 'update-mood-default + :ocean #f + :sky #f + :continues + '() + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere (new 'static 'sphere) + :bottom-height (meters -10000000) + :run-packages + '("common") + :wait-for-load #f)) (define demo - (new 'static 'level-load-info - :index 23 - :name 'demo - :visname 'demo-vis - :nickname 'dem - :packages '() - :sound-banks '(village1) - :music-bank 'village1 - :ambient-sounds '() - :mood '*default-mood* - :mood-func 'update-mood-default - :ocean #f - :sky #f - :continues '((new 'static 'continue-point - :name "demo-start" - :level 'demo - :flags (continue-flags demo) - :trans (new 'static 'vector :x 66396.16 :y 29782.016 :z -919973.5 :w 1.0) - :quat (new 'static 'quaternion :w 1.0) - :camera-trans (new 'static 'vector :x 76871.68 :y 55061.707 :z -938752.0 :w 1.0) - :camera-rot (new 'static 'array float 9 0.8743 0.0 0.4852 -0.2117 0.8997 0.3816 -0.4365 -0.4364 0.7866) - :load-commands '() - :vis-nick 'dem - :lev0 'demo - :disp0 'special - :lev1 #f - :disp1 #f - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere) - :bottom-height (meters -10000000) - :run-packages '("common") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 23 + :name 'demo + :visname 'demo-vis + :nickname 'dem + :packages + '() + :sound-banks '(village1) + :music-bank 'village1 + :ambient-sounds + '() + :mood '*default-mood* + :mood-func 'update-mood-default + :ocean #f + :sky #f + :continues + '((new 'static + 'continue-point + :name "demo-start" + :level 'demo + :flags (continue-flags demo) + :trans + (new 'static 'vector :x 66396.16 :y 29782.016 :z -919973.5 :w 1.0) + :quat + (new 'static 'quaternion :w 1.0) + :camera-trans + (new 'static 'vector :x 76871.68 :y 55061.707 :z -938752.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.8743 0.0 0.4852 -0.2117 0.8997 0.3816 -0.4365 -0.4364 0.7866) + :load-commands + '() + :vis-nick 'dem + :lev0 'demo + :disp0 'special + :lev1 #f + :disp1 #f)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere (new 'static 'sphere) + :bottom-height (meters -10000000) + :run-packages + '("common") + :wait-for-load #f)) (define title - (new 'static 'level-load-info - :index 24 - :name 'title - :visname 'title-vis - :nickname 'tit - :packages '() - :sound-banks '() - :music-bank 'village1 - :ambient-sounds '() - :mood '*village1-mood* - :mood-func 'update-mood-village1 - :ocean #f - :sky #f - :continues '((new 'static 'continue-point - :name "title-start" - :level 'title - :flags (continue-flags title) - :trans (new 'static 'vector :x -635598.9 :y 222551.66 :z 710496.25 :w 1.0) - :quat (new 'static 'quaternion :y -0.3323 :w -0.9431) - :camera-trans (new 'static 'vector :x -665644.25 :y 250803.0 :z 668470.9 :w 1.0) - :camera-rot (new 'static 'array float 9 0.8129 0.0 -0.5823 0.0958 0.9863 0.1337 0.5744 -0.1645 0.8018) - :load-commands '() - :vis-nick 'tit - :lev0 'title - :disp0 'special - :lev1 'village1 - :disp1 #f - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :x -40960.0 :z 40960.0 :w 1126400.0) - :bottom-height (meters -10000000) - :run-packages '("common") - :wait-for-load #f - ) - ) + (new 'static + 'level-load-info + :index 24 + :name 'title + :visname 'title-vis + :nickname 'tit + :packages + '() + :sound-banks + '() + :music-bank 'village1 + :ambient-sounds + '() + :mood '*village1-mood* + :mood-func 'update-mood-village1 + :ocean #f + :sky #f + :continues + '((new 'static + 'continue-point + :name "title-start" + :level 'title + :flags (continue-flags title) + :trans + (new 'static 'vector :x -635598.9 :y 222551.66 :z 710496.25 :w 1.0) + :quat + (new 'static 'quaternion :y -0.3323 :w -0.9431) + :camera-trans + (new 'static 'vector :x -665644.25 :y 250803.0 :z 668470.9 :w 1.0) + :camera-rot + (new 'static 'array float 9 0.8129 0.0 -0.5823 0.0958 0.9863 0.1337 0.5744 -0.1645 0.8018) + :load-commands + '() + :vis-nick 'tit + :lev0 'title + :disp0 'special + :lev1 'village1 + :disp1 #f)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :x -40960.0 :z 40960.0 :w 1126400.0) + :bottom-height (meters -10000000) + :run-packages + '("common") + :wait-for-load #f)) (define halfpipe - (new 'static 'level-load-info - :index 25 - :name 'halfpipe - :visname 'halfpipe-vis - :nickname 'none - :packages '() - :sound-banks '() - :music-bank #f - :ambient-sounds '() - :mood '*default-mood* - :mood-func 'update-mood-default - :ocean #f - :sky #t - :sun-fade 1.0 - :continues '((new 'static 'continue-point - :name "halfpipe" - :level 'halfpipe - :trans (new 'static 'vector :x -1048.9856 :y -172047.97 :z -212555.78 :w 1.0) - :quat (new 'static 'quaternion :y 0.061 :w 0.9981) - :camera-trans (new 'static 'vector :x -9941.401 :y -150049.17 :z -159587.94 :w 1.0) - :camera-rot (new 'static 'array float 9 -0.979 0.0 -0.2037 0.0545 0.9634 -0.2622 0.1963 -0.2678 -0.9432) - :load-commands '() - :vis-nick #f - :lev0 'halfpipe - :disp0 'display - :lev1 #f - :disp1 #f - ) - ) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :w 167772160000.0) - :bottom-height (meters -10000000) - :run-packages '() - :wait-for-load #t - ) - ) - -(define default-level (new 'static 'level-load-info - :index 26 - :name 'default-level - :visname 'default-level-vis - :nickname 'none - :packages '() - :sound-banks '() - :music-bank #f - :ambient-sounds '() - :mood '*default-mood* - :mood-func 'update-mood-default - :ocean #f - :sky #t - :continues '() - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :w 167772160000.0) - :bottom-height (meters -20) - :run-packages '() - :wait-for-load #t - ) - ) - -(define *level-load-list* '(training - village1 - beach - jungle - jungleb - misty - firecanyon - village2 - sunken - sunkenb - swamp - rolling - ogre - village3 - snow - maincave - darkcave - robocave - lavatube - citadel - finalboss - intro - demo - title - halfpipe - default-level - ) - ) - + (new 'static + 'level-load-info + :index 25 + :name 'halfpipe + :visname 'halfpipe-vis + :nickname 'none + :packages + '() + :sound-banks + '() + :music-bank #f + :ambient-sounds + '() + :mood '*default-mood* + :mood-func 'update-mood-default + :ocean #f + :sky #t + :sun-fade 1.0 + :continues + '((new 'static + 'continue-point + :name "halfpipe" + :level 'halfpipe + :trans + (new 'static 'vector :x -1048.9856 :y -172047.97 :z -212555.78 :w 1.0) + :quat + (new 'static 'quaternion :y 0.061 :w 0.9981) + :camera-trans + (new 'static 'vector :x -9941.401 :y -150049.17 :z -159587.94 :w 1.0) + :camera-rot + (new 'static 'array float 9 -0.979 0.0 -0.2037 0.0545 0.9634 -0.2622 0.1963 -0.2678 -0.9432) + :load-commands + '() + :vis-nick #f + :lev0 'halfpipe + :disp0 'display + :lev1 #f + :disp1 #f)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :w 167772160000.0) + :bottom-height (meters -10000000) + :run-packages + '() + :wait-for-load #t)) +(define default-level + (new 'static + 'level-load-info + :index 26 + :name 'default-level + :visname 'default-level-vis + :nickname 'none + :packages + '() + :sound-banks + '() + :music-bank #f + :ambient-sounds + '() + :mood '*default-mood* + :mood-func 'update-mood-default + :ocean #f + :sky #t + :continues + '() + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :w 167772160000.0) + :bottom-height (meters -20) + :run-packages + '() + :wait-for-load #t)) +(define *level-load-list* + '(training village1 + beach + jungle + jungleb + misty + firecanyon + village2 + sunken + sunkenb + swamp + rolling + ogre + village3 + snow + maincave + darkcave + robocave + lavatube + citadel + finalboss + intro + demo + title + halfpipe + default-level)) ;;;;;;;;; CUSTOM LEVELS -(define test-zone (new 'static 'level-load-info - :index 26 - :name 'test-zone - :visname 'test-zone-vis ;; name + -vis - :nickname 'tsz ;; nickname - :packages '() - :sound-banks '() - :music-bank #f - :ambient-sounds '() - :mood '*default-mood* - :mood-func 'update-mood-default - :ocean #f - :sky #t - :continues '((new 'static 'continue-point - :name "test-zone-start" - :level 'test-zone - :trans (new 'static 'vector :x 0.0 :y (meters 10.) :z (meters 10.) :w 1.0) - :quat (new 'static 'quaternion :w 1.0) - :camera-trans (new 'static 'vector :x 0.0 :y 4096.0 :z 0.0 :w 1.0) - :camera-rot (new 'static 'array float 9 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0) - :load-commands '() - :vis-nick 'none - :lev0 'test-zone - :disp0 'display - :lev1 'village1 - :disp1 'display - )) - :tasks '() - :priority 100 - :load-commands '() - :alt-load-commands '() - :bsp-mask #xffffffffffffffff - :bsphere (new 'static 'sphere :w 167772160000.0) - :bottom-height (meters -20) - :run-packages '() - :wait-for-load #t - ) - ) +(define test-zone + (new 'static + 'level-load-info + :index 26 + :name 'test-zone + :visname 'test-zone-vis + ;; name + -vis + :nickname 'tsz + ;; nickname + :packages + '() + :sound-banks + '() + :music-bank #f + :ambient-sounds + '() + :mood '*default-mood* + :mood-func 'update-mood-default + :ocean #f + :sky #t + :continues + '((new 'static + 'continue-point + :name "test-zone-start" + :level 'test-zone + :trans + (new 'static 'vector :x 0.0 :y (meters 10.) :z (meters 10.) :w 1.0) + :quat + (new 'static 'quaternion :w 1.0) + :camera-trans + (new 'static 'vector :x 0.0 :y 4096.0 :z 0.0 :w 1.0) + :camera-rot + (new 'static 'array float 9 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0) + :load-commands + '() + :vis-nick 'none + :lev0 'test-zone + :disp0 'display + :lev1 'village1 + :disp1 'display)) + :tasks + '() + :priority 100 + :load-commands + '() + :alt-load-commands + '() + :bsp-mask #xffffffffffffffff + :bsphere + (new 'static 'sphere :w 167772160000.0) + :bottom-height (meters -20) + :run-packages + '() + :wait-for-load #t)) -(cons! *level-load-list* 'test-zone) \ No newline at end of file +(cons! *level-load-list* 'test-zone) diff --git a/goal_src/jak1/engine/level/level.gc b/goal_src/jak1/engine/level/level.gc index eed08cd85b..c34f6976af 100644 --- a/goal_src/jak1/engine/level/level.gc +++ b/goal_src/jak1/engine/level/level.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/engine/engines.gc") (require "engine/level/load-boundary.gc") (require "engine/gfx/tie/tie-h.gc") @@ -12,10 +11,6 @@ (require "engine/load/ramdisk.gc") (require "engine/gfx/tfrag/tfrag.gc") -;; name: level.gc -;; name in dgo: level -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;;;;;;;;;;;;;;;;;;;;;; @@ -24,73 +19,40 @@ (defun lookup-level-info ((name symbol)) "Get the level-load-info of a level using its name. name can be the level name, the visname or the nickname. First match is returned." - (let* ((rest *level-load-list*) - (current-sym (the symbol (car rest))) - ) - (while (not (null? rest)) - (let ((info (the level-load-info (-> current-sym value)))) - (if (or (= name (-> info name)) - (= name (-> info visname)) - (= name (-> info nickname)) - ) - (return info) - ) - ) - (set! rest (cdr rest)) - (set! current-sym (the symbol (car rest))) - ) - ) - default-level - ) - + (current-sym (the symbol (car rest)))) + (while (not (null? rest)) + (let ((info (the level-load-info (-> current-sym value)))) + (if (or (= name (-> info name)) (= name (-> info visname)) (= name (-> info nickname))) (return info))) + (set! rest (cdr rest)) + (set! current-sym (the symbol (car rest))))) + default-level) (defmethod load-command-get-index ((this level-group) (name symbol) (cmd-idx int)) "Get the n-th load command for the given level." (let ((cmd-lst (-> (lookup-level-info name) alt-load-commands))) - (while (nonzero? cmd-idx) - (+! cmd-idx -1) - (set! cmd-lst (cdr cmd-lst)) - (nop!) - (nop!) - (nop!) - ) - (the-as pair (car cmd-lst)) - ) - ) + (while (nonzero? cmd-idx) + (+! cmd-idx -1) + (set! cmd-lst (cdr cmd-lst)) + (nop!) + (nop!) + (nop!)) + (the-as pair (car cmd-lst)))) (defun remap-level-name ((level-info level-load-info)) "Get the canonical name for a level using its level-load-info" - - (if (-> *level* vis?) - (-> level-info visname) - (-> level-info name) - ) - ) + (if (-> *level* vis?) (-> level-info visname) (-> level-info name))) (defmethod art-group-get-by-name ((this level) (arg0 string)) "Get the art group in the given level with the given name. If it doesn't exist, #f." (countdown (i (-> this art-group art-group-array length)) - (if (name= (-> this art-group art-group-array i name) arg0) - (return (-> this art-group art-group-array i)) - ) - ) - (the-as art-group #f) - ) + (if (name= (-> this art-group art-group-array i name) arg0) (return (-> this art-group art-group-array i)))) + (the-as art-group #f)) (defmethod bsp-name ((this level)) "Get the name of the bsp tree of the level" - -(if (and (!= (-> this status) 'inactive) - (-> this bsp) - (nonzero? (-> this bsp name)) - ) - (-> this bsp name) - (-> this name) - ) -) - + (if (and (!= (-> this status) 'inactive) (-> this bsp) (nonzero? (-> this bsp name))) (-> this bsp name) (-> this name))) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; BSP @@ -106,86 +68,53 @@ "Draw a level!" ;; do the draw (draw arg0 arg0 arg3) - - (if (nonzero? *display-strip-lines*) - (debug-draw arg0 arg0 arg3) - ) - (none) - ) - + (if (nonzero? *display-strip-lines*) (debug-draw arg0 arg0 arg3)) + (none)) (defmethod print ((this level)) "print a level." - - (format #t "#<~A ~A ~S @ #x~X>" - (-> this type) - (-> this status) - (-> this name) - this - ) - this - ) + (format #t "#<~A ~A ~S @ #x~X>" (-> this type) (-> this status) (-> this name) this) + this) (defmethod relocate ((this bsp-header) (dest-heap kheap) (name (pointer uint8))) "Handle a bsp file load." - ;; we expect that we'll have a loading-level set when we link/login a bsp-header (let ((s5-0 (-> *level* loading-level))) (if s5-0 - (cond - (this - (cond - ((not (type-type? (-> this type) bsp-header)) - (format 0 "ERROR: level ~A is not a bsp-header.~%" (-> s5-0 name)) - (the-as bsp-header #f) - ) - ((not (file-info-correct-version? (-> this info) (file-kind level-bt) 0)) - (the-as bsp-header #f) - ) - ((< 2048 (-> this visible-list-length)) - (format 0 "ERROR: level ~A visible-list-length ~d is greater than 2048 (16384 drawables).~%" - (-> s5-0 name) - (-> this visible-list-length) - ) - (the-as bsp-header #f) - ) - (else - (load-dbg "bsp relocate: ~A~%" this) - ;; everything is okay, link the bsp and level. - ;; og:preserve-this fix bad filenames - (when (= (-> s5-0 name) 'title) - (set! (-> this name) 'title)) - (when (= (-> s5-0 name) 'demo) - (set! (-> this name) 'demo)) - (set! (-> s5-0 bsp) this) - (set! (-> this level) s5-0) - this - ) - ) - ) - (else - (format 0 "ERROR: level ~A is not a valid file.~%" - (-> s5-0 name) - ) - (the-as bsp-header #f) - ) - ) - ) - ) - (none) - ) + (cond + (this + (cond + ((not (type-type? (-> this type) bsp-header)) + (format 0 "ERROR: level ~A is not a bsp-header.~%" (-> s5-0 name)) + (the-as bsp-header #f)) + ((not (file-info-correct-version? (-> this info) (file-kind level-bt) 0)) (the-as bsp-header #f)) + ((< 2048 (-> this visible-list-length)) + (format 0 + "ERROR: level ~A visible-list-length ~d is greater than 2048 (16384 drawables).~%" + (-> s5-0 name) + (-> this visible-list-length)) + (the-as bsp-header #f)) + (else + (load-dbg "bsp relocate: ~A~%" this) + ;; everything is okay, link the bsp and level. + ;; og:preserve-this fix bad filenames + (when (= (-> s5-0 name) 'title) + (set! (-> this name) 'title)) + (when (= (-> s5-0 name) 'demo) + (set! (-> this name) 'demo)) + (set! (-> s5-0 bsp) this) + (set! (-> this level) s5-0) + this))) + (else (format 0 "ERROR: level ~A is not a valid file.~%" (-> s5-0 name)) (the-as bsp-header #f))))) + (none)) (defmethod load-required-packages ((this level)) "Load required packages for the level. This is mostly useless, but might load common. This will have no effect most of the time - common is often loaded at boot as part of game.cgo." (when (not (or (not (-> this bsp)) (= *kernel-boot-mode* 'debug-boot))) - (if (not (null? (-> this info packages))) - (load-package "common" global) - ) - ) - this - ) + (if (not (null? (-> this info packages))) (load-package "common" global))) + this) ;;;;;;;;;;;;;; ;; vis @@ -193,77 +122,55 @@ (defmethod vis-clear ((this level)) "Clear the visibility info for when the level is loading." - ;; clear vis-infos, so we can't try to look up a vis string. (countdown (v1-0 8) (nop!) ;; the usual. - (set! (-> this vis-info v1-0) #f) - ) + (set! (-> this vis-info v1-0) #f)) ;; set the vis string to all 0s. (dotimes (v1-3 128) - (set! (deref int128 (-> this vis-bits) v1-3) (the-as int128 0)) - ) + (set! (deref int128 (-> this vis-bits) v1-3) (the-as int128 0))) ;; this flag indicates we don't have vis data because loading is in progress (set! (-> this all-visible?) 'loading) - 0 - ) - + 0) (defmethod vis-load ((this level)) "Start the initial load of a VIS file to the IOP VIS buffer. After this is done, we can use ramdisk-load to load chunks." - ;; check to see if we have a buffer for loaded vis data. (when (zero? (-> this vis-info (-> this vis-self-index) ramdisk)) ;; nope, we have no vis data buffer, we need to set it up. - ;; first, we should see if the other level has loaded vis. if so, kill it. (let ((vis (-> this other vis-info (-> this other vis-self-index)))) - (when (and vis (nonzero? (-> vis ramdisk))) - (set! (-> vis flags) (logand #xffffffffbfffffff (-> vis flags))) ;; clear waiting-for-load - (set! (-> vis ramdisk) 0) - 0 - ) - ) - + (when (and vis (nonzero? (-> vis ramdisk))) + (set! (-> vis flags) (logand #xffffffffbfffffff (-> vis flags))) ;; clear waiting-for-load + (set! (-> vis ramdisk) 0) + 0)) ;; set up a ramdisk rpc (fill command, actually load the file from DVD to IOP buffer) (let ((visname (make-file-name (file-kind vis) (the-as string (-> this nickname)) 0 #f)) (cmd (the-as ramdisk-rpc-fill (add-element *ramdisk-rpc*))) - (s5-0 (+ *current-ramdisk-id* 1)) - ) - (set! *current-ramdisk-id* s5-0) - (set! (-> cmd filename) (string->sound-name visname)) - (set! (-> cmd ee-id) s5-0) - (load-dbg "doing ramdisk vis load: ~A~%" visname) - (call *ramdisk-rpc* RAMDISK_RPC_FILL_FNO (the-as pointer 0) (the-as uint 0)) - ;; remember which ramdisk id we are assigned - (set! (-> this vis-info (-> this vis-self-index) ramdisk) s5-0) - ) - ) - + (s5-0 (+ *current-ramdisk-id* 1))) + (set! *current-ramdisk-id* s5-0) + (set! (-> cmd filename) (string->sound-name visname)) + (set! (-> cmd ee-id) s5-0) + (load-dbg "doing ramdisk vis load: ~A~%" visname) + (call *ramdisk-rpc* RAMDISK_RPC_FILL_FNO (the-as pointer 0) (the-as uint 0)) + ;; remember which ramdisk id we are assigned + (set! (-> this vis-info (-> this vis-self-index) ramdisk) s5-0))) ;; return the ramdisk ID. - (-> this vis-info (-> this vis-self-index) ramdisk) - ) + (-> this vis-info (-> this vis-self-index) ramdisk)) (defun load-vis-info ((vis-name symbol) (old-vis-name symbol)) "Load a new VIS file and dump the old one. The corresponding level must be active!" - (dotimes (i (-> *level* length)) (let ((lev (-> *level* level i))) - (when (= (-> lev status) 'active) - (when (= vis-name (-> lev nickname)) - (format 0 "Swapping in ~A VIS [dumping ~A]~%" vis-name old-vis-name) - (vis-load lev) - ) - ) - ) - ) - 0 - ) + (when (= (-> lev status) 'active) + (when (= vis-name (-> lev nickname)) + (format 0 "Swapping in ~A VIS [dumping ~A]~%" vis-name old-vis-name) + (vis-load lev))))) + 0) (defmethod init-vis ((this level)) "Set up the vis info in a level from the vis info in the BSP." - (when (not (or (= (-> this status) 'inactive) (not (-> this bsp)))) ;; no vis loaded at first, mark as loading/invalid. (set! (-> this all-visible?) 'loading) @@ -288,20 +195,14 @@ (set! (-> s5-0 string-block) (the-as uint #f)) ;; remember that we use the vis system. This will enable warnings in the kernel ;; if we run out of actor memory. Without vis, I guess this happens a lot. - (set! *vis-boot* #t) - ) + (set! *vis-boot* #t)) (else - ;; we don't have vis (but it's okay) - (set! (-> this vis-info 0) #f) - ) - ) - ) - + ;; we don't have vis (but it's okay) + (set! (-> this vis-info 0) #f)))) ;; check for up to 6 neighbor level vis info. The last one is always left as null. (dotimes (s5-1 6) (let* ((s3-0 (+ s5-1 1)) - (s4-0 (-> this bsp vis-info s3-0)) - ) + (s4-0 (-> this bsp vis-info s3-0))) (cond ((and s4-0 (nonzero? s4-0) (valid? s4-0 level-vis-info #f #f 0)) (set! (-> this vis-info s3-0) s4-0) @@ -310,51 +211,31 @@ (set! (-> s4-0 vis-bits) (-> this vis-bits)) ;; clear 29, 30, 31 (set! (-> s4-0 flags) (logand (the-as uint #xffffffff1fffffff) (-> s4-0 flags))) - (set! *vis-boot* #t) - ) - (else - (set! (-> this vis-info s3-0) #f) - ) - ) - ) - ) - ) - 0 - ) + (set! *vis-boot* #t)) + (else (set! (-> this vis-info s3-0) #f)))))) + 0) (defmethod level-get-for-use ((this level-group) (name symbol) (want-status symbol)) "Get a level in a playable form, loading it if necessary." - (local-vars (s5-1 level)) ;; debug allocate levels if necessary (alloc-levels! this #f) - (let* ((level-info (lookup-level-info name)) - (level-name (remap-level-name level-info)) - ) - (awhen (level-get this level-name) - (level-status-set! it want-status) - (return it) - ) - (let ((a0-7 (level-get-most-disposable this))) - (set! s5-1 (if a0-7 (level-status-set! a0-7 'inactive) - a0-7 - )) - ) - ;; THIS WAS BUGGED IN THE ORIGINAL GAME!! Probably due to a fault in the original GOAL compiler and because they had - ;; a local variable called "level", this branch here checks for the *TYPE* object called level instead of the - ;; variable. Since the type will never be equal to #f when this code runs, this failsafe never runs, and the game will - ;; proceed to corrupt the symbol table since it thinks #f is a level, which most definitely crashes the game - ;; very quickly. - ;; We are fixing it. - (when (not s5-1) ;;level) - (format 0 "ERROR: could not find a slot to load ~A into.~%" name) - (return (the-as level #f)) - ) - (set! (-> s5-1 info) level-info) - (set! (-> s5-1 name) name) - (set! (-> s5-1 load-name) level-name) - ) + (level-name (remap-level-name level-info))) + (awhen (level-get this level-name) (level-status-set! it want-status) (return it)) + (let ((a0-7 (level-get-most-disposable this))) (set! s5-1 (if a0-7 (level-status-set! a0-7 'inactive) a0-7))) + ;; THIS WAS BUGGED IN THE ORIGINAL GAME!! Probably due to a fault in the original GOAL compiler and because they had + ;; a local variable called "level", this branch here checks for the *TYPE* object called level instead of the + ;; variable. Since the type will never be equal to #f when this code runs, this failsafe never runs, and the game will + ;; proceed to corrupt the symbol table since it thinks #f is a level, which most definitely crashes the game + ;; very quickly. + ;; We are fixing it. + (when (not s5-1) ;;level) + (format 0 "ERROR: could not find a slot to load ~A into.~%" name) + (return (the-as level #f))) + (set! (-> s5-1 info) level-info) + (set! (-> s5-1 name) name) + (set! (-> s5-1 load-name) level-name)) (set! (-> s5-1 mood) (the mood-context (-> s5-1 info mood value))) (set! (-> s5-1 mood-func) (the (function mood-context float int none) (-> s5-1 info mood-func value))) (set! (-> s5-1 display?) #f) @@ -362,8 +243,7 @@ (set! (-> s5-1 force-inside?) #f) (level-status-set! s5-1 'loading) (level-status-set! s5-1 want-status) - s5-1 - ) + s5-1) ;; level status: ;; - inactive: nothing loaded or loading. @@ -379,58 +259,31 @@ (defmethod level-status ((this level-group) (level-name symbol)) "Get the status of an existing level." - - (let ((lev (level-get *level* level-name))) - (if lev - (-> lev status) - ) - ) - ) + (let ((lev (level-get *level* level-name))) (if lev (-> lev status)))) (defmethod level-status-set! ((this level) (want-status symbol)) "Change the status of a level, performing any cleanup and prep work as necessary. Only change loading statuses in order! Returns the level." - (case want-status (('inactive) - (case (-> this status) - ) - (unload! this) - ) + (case (-> this status)) + (unload! this)) (('loading) (case (-> this status) - (('inactive) - (load-begin this) - ) - ) - ) + (('inactive) (load-begin this)))) (('loading-bt) (case (-> this status) - (('loading) - (set! (-> this status) want-status) - (load-continue this) - ) - ) - ) + (('loading) (set! (-> this status) want-status) (load-continue this)))) (('loading-done) (case (-> this status) - (('loading-bt) - (set! (-> this status) want-status) - ) - ) - ) + (('loading-bt) (set! (-> this status) want-status)))) (('loaded) (case (-> this status) (('loading-done) ;; will actually put us in login for a bit. - (login-begin this) - ) - (('alive 'active) - (deactivate this) - ) - ) - ) + (login-begin this)) + (('alive 'active) (deactivate this)))) (('alive 'active) (when *dproc* (case (-> this status) @@ -438,36 +291,31 @@ (birth this) ;; try again. we will be in alive. ;; this will do nothing if we want alive, but will activate if we want activate - (level-status-set! this want-status) - ) + (level-status-set! this want-status)) (('alive) (when (and *dproc* (= want-status 'active)) ;; only if we want to do alive -> active - ;; will set the level to be drawn. (remove-by-param1 *background-draw-engine* (-> this bsp)) - (add-connection *background-draw-engine* *dproc* (the (function object object object object object) add-bsp-drawable) (-> this bsp) this #f) + (add-connection *background-draw-engine* + *dproc* + (the (function object object object object object) add-bsp-drawable) + (-> this bsp) + this + #f) (dotimes (v1-40 9) (set! (-> this closest-object v1-40) 0.0) - (set! (-> this texture-mask v1-40) (the-as uint 0)) - ) + (set! (-> this texture-mask v1-40) (the-as uint 0))) (set! (-> this level-distance) 0.0) - (set! (-> this status) 'active) - ) - ) - ) - ) - ) - ) - this - ) + (set! (-> this status) 'active))))))) + this) (define *login-state* (new 'global 'login-state)) + (define *print-login* #t) (defmethod load-continue ((this level)) "Continue loading a level from where we left off last time." - ;; see if we are still linking some file (when (-> this linking) ;; do some more linking @@ -477,90 +325,59 @@ (case (-> this status) (('loading) ;; load another object if we don't wanna copy anything - (if (not (-> *texture-relocate-later* memcpy)) - (dgo-load-continue (the pointer (align64 (-> this heap current)))) - ) - ) + (if (not (-> *texture-relocate-later* memcpy)) (dgo-load-continue (the pointer (align64 (-> this heap current)))))) (('loading-bt) ;; finished loading the last object! (level-status-set! this 'loading-done) - (level-status-set! this 'loaded) - ) - ) - ) - (return this) - ) + (level-status-set! this 'loaded)))) + (return this)) ;; otherwise, copy stuff that needs copying (when (-> *texture-relocate-later* memcpy) (relocate-later) (dgo-load-continue (the pointer (align64 (-> this heap current)))) - (return this) - ) + (return this)) ;; otherwise, check status (case (-> this status) (('loading) ;; we are still loading (let* ((last-obj #f) (a0-15 (dgo-load-get-next (& last-obj)))) - (when a0-15 - ;; something has finished loading! - (cond - ((not last-obj) - ;; not the last object. start linking - (cond - ((dgo-load-link (the-as dgo-header a0-15) (-> this heap) *print-login* #f) - ;; linking finished (that was fast) - (if (not (-> *texture-relocate-later* memcpy)) - (dgo-load-continue (the pointer (align64 (-> this heap current)))) - ) - ) - (else - ;; linking is not done, resume later. - (set! (-> this linking) #t) - ) - ) - ) - (else - ;; we're loading the last object now, which has different rules - (set! (-> this heap top) (-> this heap top-base)) - (level-status-set! this 'loading-bt) - ) - ) - ) - ) - ) + (when a0-15 + ;; something has finished loading! + (cond + ((not last-obj) + ;; not the last object. start linking + (cond + ((dgo-load-link (the-as dgo-header a0-15) (-> this heap) *print-login* #f) + ;; linking finished (that was fast) + (if (not (-> *texture-relocate-later* memcpy)) (dgo-load-continue (the pointer (align64 (-> this heap current)))))) + (else + ;; linking is not done, resume later. + (set! (-> this linking) #t)))) + (else + ;; we're loading the last object now, which has different rules + (set! (-> this heap top) (-> this heap top-base)) + (level-status-set! this 'loading-bt)))))) (('login) ;; run level login - (level-update-after-load this *login-state*) - ) + (level-update-after-load this *login-state*)) (('loading-bt) ;; link the last object (let ((a0-26 (the pointer (align64 (-> this heap current))))) - (cond - ((dgo-load-link (the-as dgo-header a0-26) (-> this heap) *print-login* #t) - (level-status-set! this 'loading-done) - ;; will start login. - (level-status-set! this 'loaded) - ) - (else - (set! (-> this linking) #t) - ) - ) - ) - ) - ) - this - ) + (cond + ((dgo-load-link (the-as dgo-header a0-26) (-> this heap) *print-login* #t) + (level-status-set! this 'loading-done) + ;; will start login. + (level-status-set! this 'loaded)) + (else (set! (-> this linking) #t)))))) + this) (defmethod load-begin ((this level)) "Start loading the level. Uses 2 megabyte heaps for loading each object." - ;; set the level heap. level code logins called from linker may allocate here (set! loading-level (-> this heap)) - ;; relocate method of the bsp will look for this (set! (-> *level* loading-level) this) - ;; clear out old stuff (set! (-> *level* log-in-level-bsp) #f) (set! (-> this nickname) #f) @@ -569,45 +386,32 @@ (set! (-> this ambient) #f) (set! (-> this linking) #f) (vis-clear this) - (set! (-> this status) 'loading) - ;; incoming textures should use the level allocator (set! (-> *texture-pool* allocate-func) texture-page-level-allocate) - ;; build name (if (= (-> this load-name) (-> this info visname)) (format (clear *temp-string*) "~S" (-> this info nickname)) - (format (clear *temp-string*) "~S" (-> this name)) - ) + (format (clear *temp-string*) "~S" (-> this name))) (set! (-> *temp-string* data 8) (the-as uint 0)) (format *temp-string* ".DGO") - ;; reset temporary allocations on level heap (set! (-> this heap top) (-> this heap top-base)) - ;; allocate DGO loading buffers (let ((s4-0 (kmalloc (-> this heap) (* 2 1024 1024) (kmalloc-flags align-64 top) "dgo-level-buf-2")) - (s5-2 (kmalloc (-> this heap) (* 2 1024 1024) (kmalloc-flags align-64 top) "dgo-level-buf-2")) - ) - (load-dbg " DGO buffers at #x~X #x~X~%" s4-0 s5-2) - - ;; we expect to load code first, remember where the heap is now. - (set! (-> this code-memory-start) (-> this heap current)) - - (format 0 "-----------> begin load ~A [~S]~%" (-> this load-name) *temp-string*) - ;; kick off the load! - (dgo-load-begin *temp-string* s5-2 s4-0 (the pointer (align64 (-> this heap current)))) - ) - this - ) + (s5-2 (kmalloc (-> this heap) (* 2 1024 1024) (kmalloc-flags align-64 top) "dgo-level-buf-2"))) + (load-dbg " DGO buffers at #x~X #x~X~%" s4-0 s5-2) + ;; we expect to load code first, remember where the heap is now. + (set! (-> this code-memory-start) (-> this heap current)) + (format 0 "-----------> begin load ~A [~S]~%" (-> this load-name) *temp-string*) + ;; kick off the load! + (dgo-load-begin *temp-string* s5-2 s4-0 (the pointer (align64 (-> this heap current))))) + this) (defmethod login-begin ((this level)) "Start the login. This is spread over multiple frames." - ;; done with load, reset the texture page allocator (set! (-> *texture-pool* allocate-func) texture-page-default-allocate) - (cond ((-> this bsp) (set! (-> *level* log-in-level-bsp) (-> this bsp)) @@ -616,51 +420,30 @@ ;; login shaders (let ((bsp (-> this bsp))) (when (nonzero? (-> bsp adgifs)) - (let ((adgifs (-> bsp adgifs))) - (dotimes (i (-> adgifs length)) - (adgif-shader-login-no-remap (-> adgifs data i)) - ) - ) - ) - ) - + (let ((adgifs (-> bsp adgifs))) (dotimes (i (-> adgifs length)) (adgif-shader-login-no-remap (-> adgifs data i)))))) ;; set the login state machine at the beginning. (set! (-> *login-state* state) -1) (set! (-> *login-state* pos) (the-as uint 0)) (set! (-> *login-state* elts) (the-as uint 0)) - (set! (-> this status) 'login) - ) + (set! (-> this status) 'login)) (else - ;; something went wrong, kill the level. + ;; something went wrong, kill the level. (level-status-set! this 'inactive) (set! loading-level global) - (set! (-> *level* loading-level) (-> *level* level-default)) - ) - ) - this - ) + (set! (-> *level* loading-level) (-> *level* level-default)))) + this) (defun level-update-after-load ((loaded-level level) (level-login-state login-state)) "Run some small amount of logins. This will time itself and stop after some time. When it's done, it will set the status to loaded." - (local-vars - (current-timer int) - (v1-154 int) - (initial-timer int) - (sv-16 prototype-bucket-tie) - (sv-32 int) - ) - + (local-vars (current-timer int) (v1-154 int) (initial-timer int) (sv-16 prototype-bucket-tie) (sv-32 int)) ;; there is some logic for not doing the whole login all at once... ;; for now, we will somewhat ignore that. - - (let ((level-drawable-trees (-> loaded-level bsp drawable-trees))) ;;(.mfc0 initial-timer Count) (label cfg-1) ;;(.mfc0 current-timer Count) - ;; this would quit the login function after some amount of time elapsed. #| (let ((elapsed-timer (- current-timer initial-timer))) @@ -670,16 +453,12 @@ ) ) |# - (let ((current-login-pos (the-as int (-> level-login-state pos)))) - ;; Login state -1. ;; in this state, we log in drawables/art-groups that are in referenced in the bsp directly ;; the current-login-pos in the index of the drawable/art to login. - (when (= (-> level-login-state state) -1) ;;(load-dbg "login state -1~%") - ;; login some drawables. (when (< current-login-pos (-> level-drawable-trees length)) (let ((current-drawable (-> level-drawable-trees trees (the-as uint current-login-pos)))) @@ -693,52 +472,30 @@ ;; we got an array of drawables. instead of iterating/recursing, just add it to the back of the login list. ;;(load-dbg " tfrag array case~%") (set! (-> level-login-state elt (-> level-login-state elts)) (-> current-drawable data idx-in-drawable)) - (+! (-> level-login-state elts) 1) - ) + (+! (-> level-login-state elts) 1)) (else - ;;(load-dbg " tfrag actual login case~%") - (login (-> current-drawable data idx-in-drawable)) - ) - ) - ) - ) + ;;(load-dbg " tfrag actual login case~%") + (login (-> current-drawable data idx-in-drawable)))))) ((= (-> current-drawable type) drawable-tree-instance-tie) ;; tie! add the tree to the list. ;;(load-dbg " tie tree case~%") (set! (-> level-login-state elt (-> level-login-state elts)) current-drawable) - (+! (-> level-login-state elts) 1) - ) + (+! (-> level-login-state elts) 1)) (else - ;;(load-dbg " other actual login: ~A~%" (method-of-object current-drawable login)) - (login current-drawable) - ) - ) - ) + ;;(load-dbg " other actual login: ~A~%" (method-of-object current-drawable login)) + (login current-drawable)))) (+! (-> level-login-state pos) 1) - (goto cfg-1) - ) - + (goto cfg-1)) ;; this makes the art groups go at the end. (let ((v1-39 (- (the-as uint current-login-pos) (the-as uint (-> level-drawable-trees length))))) (when (< (the-as int v1-39) (-> loaded-level art-group art-group-array length)) - (let ((s2-2 (-> loaded-level art-group art-group-array v1-39))) - (login s2-2) - (if (needs-link? s2-2) - (link-art! s2-2) - ) - ) + (let ((s2-2 (-> loaded-level art-group art-group-array v1-39))) (login s2-2) (if (needs-link? s2-2) (link-art! s2-2))) (+! (-> level-login-state pos) 1) - (goto cfg-1) - ) - ) - + (goto cfg-1))) ;; if we got here, we're done with state -1! (set! (-> level-login-state pos) (the-as uint 0)) (set! (-> level-login-state state) 0) - (goto cfg-1) - ) - - + (goto cfg-1)) ;; login state 0. ;; we log in children of the drawables from state -1. (when (< (-> level-login-state state) (the-as int (-> level-login-state elts))) @@ -753,18 +510,12 @@ (when (< current-login-pos (-> (the-as drawable-inline-array-tfrag s1-1) length)) ;; (load-dbg " login from drawable-inline-array-tfrag: ~A~%" (-> (the-as drawable-inline-array-tfrag s1-1) data (the-as uint current-login-pos))) (login (-> (the-as drawable-inline-array-tfrag s1-1) data (the-as uint current-login-pos))) - (set! current-login-pos (the-as int (+ (the-as uint current-login-pos) 1))) - ) - ) - (set! (-> level-login-state pos) (the-as uint current-login-pos)) - ) + (set! current-login-pos (the-as int (+ (the-as uint current-login-pos) 1))))) + (set! (-> level-login-state pos) (the-as uint current-login-pos))) (else - (set! (-> level-login-state pos) (the-as uint 0)) - (set! current-login-pos (+ (-> level-login-state state) 1)) - (set! (-> level-login-state state) current-login-pos) - ) - ) - ) + (set! (-> level-login-state pos) (the-as uint 0)) + (set! current-login-pos (+ (-> level-login-state state) 1)) + (set! (-> level-login-state state) current-login-pos)))) ((= (-> s1-1 type) drawable-tree-instance-tie) ;;(load-dbg " login drawable-tree-instance-tie: ~A~%" s1-1) (let ((s1-2 (-> (the-as drawable-tree-instance-tie s1-1) prototypes prototype-array-tie))) @@ -773,29 +524,18 @@ (when (< current-login-pos (-> s1-2 length)) (set! sv-16 (-> s1-2 array-data (the-as uint current-login-pos))) (set! sv-32 0) - (#when PC_PORT ;; if a TIE uses environment mapping, disable the fade out so it always renderers with ;; the generic renderer. In the port, we just make envmapped things always envmap. (when (!= (-> sv-16 envmap-fade-far) 0.0) - (*! (-> sv-16 envmap-fade-far) 10000.) - ) - ) - + (*! (-> sv-16 envmap-fade-far) 10000.))) (while (< sv-32 4) (let ((a0-28 (-> sv-16 geometry sv-32))) ;;(load-dbg " login geom: ~A~%" a0-28) - (if (nonzero? a0-28) - (login a0-28) - ) - ) - (set! sv-32 (+ sv-32 1)) - ) - (set! current-login-pos (the-as int (+ (the-as uint current-login-pos) 1))) - ) - ) - (set! (-> level-login-state pos) (the-as uint current-login-pos)) - ) + (if (nonzero? a0-28) (login a0-28))) + (set! sv-32 (+ sv-32 1))) + (set! current-login-pos (the-as int (+ (the-as uint current-login-pos) 1))))) + (set! (-> level-login-state pos) (the-as uint current-login-pos))) (when (= (the-as uint current-login-pos) (-> s1-2 length)) (dotimes (s2-3 (-> s1-2 length)) (let ((s0-2 (-> s1-2 array-data s2-3 envmap-shader))) @@ -803,78 +543,44 @@ ;;(load-dbg " login adgif shader for envmap~%") (adgif-shader-login-no-remap s0-2) (set! (-> s0-2 tex1) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! - (-> s0-2 clamp) - (new 'static 'gs-clamp - :wms (gs-tex-wrap-mode clamp) - :wmt (gs-tex-wrap-mode clamp) - ) - ) + (set! (-> s0-2 clamp) (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) (set! (-> s0-2 alpha) (new 'static 'gs-alpha :b #x2 :c #x1 :d #x1)) (set! (-> s0-2 prims 1) (gs-reg64 tex0-1)) (set! (-> s0-2 prims 3) (gs-reg64 tex1-1)) (set! (-> s0-2 prims 5) (gs-reg64 miptbp1-1)) (set! (-> s0-2 clamp-reg) (gs-reg64 clamp-1)) - (set! (-> s0-2 prims 9) (gs-reg64 alpha-1)) - ) - ) - ) + (set! (-> s0-2 prims 9) (gs-reg64 alpha-1))))) (set! (-> level-login-state pos) (the-as uint 0)) - (+! (-> level-login-state state) 1) - ) - ) - ) - ) - ) - (goto cfg-1) - ) - - + (+! (-> level-login-state state) 1)))))) + (goto cfg-1)) (when (= (-> level-login-state state) (-> level-login-state elts)) (let ((v1-115 (-> loaded-level bsp))) (cond ((or (zero? (-> v1-115 actors)) (= (the-as uint current-login-pos) (-> v1-115 actors length))) (set! (-> level-login-state pos) (the-as uint 0)) - (+! (-> level-login-state state) 1) - ) + (+! (-> level-login-state state) 1)) (else - (let ((a0-36 (-> v1-115 actors data (the-as uint current-login-pos) actor))) - ;; (load-dbg "entity nav login: ~A~%" a0-36) - (entity-nav-login a0-36) - ) - (+! (-> level-login-state pos) 1) - ) - ) - ) - (goto cfg-1) - ) + (let ((a0-36 (-> v1-115 actors data (the-as uint current-login-pos) actor))) + ;; (load-dbg "entity nav login: ~A~%" a0-36) + (entity-nav-login a0-36)) + (+! (-> level-login-state pos) 1)))) + (goto cfg-1)) (when (zero? (the-as uint current-login-pos)) (set! (-> level-login-state pos) (the-as uint 1)) (set! loaded-level loaded-level) - (goto cfg-78) - ) - ) - ) - + (goto cfg-78)))) ;; done! (set! (-> loaded-level nickname) (-> loaded-level bsp nickname)) - (if (nonzero? (-> loaded-level bsp nodes)) - (set! *time-of-day-effects* #t) - (set! *time-of-day-effects* #f) - ) + (if (nonzero? (-> loaded-level bsp nodes)) (set! *time-of-day-effects* #t) (set! *time-of-day-effects* #f)) (let ((f0-0 (-> loaded-level bsp unk-data-4)) - (f1-0 (-> loaded-level bsp unk-data-5)) - ) + (f1-0 (-> loaded-level bsp unk-data-5))) (when (and (= f0-0 0.0) (= f1-0 0.0)) (set! f0-0 122880.0) - (set! f1-0 286720.0) - ) + (set! f1-0 286720.0)) (set! (-> *subdivide-settings* close (-> loaded-level index)) f0-0) (set! (-> *subdivide-settings* far (-> loaded-level index)) f1-0) (set! (-> *subdivide-settings* close 3) f0-0) - (set! (-> *subdivide-settings* far 3) f1-0) - ) - + (set! (-> *subdivide-settings* far 3) f1-0)) (load-dbg "init-vis~%") (init-vis loaded-level) (load-dbg "package load~%") @@ -887,110 +593,70 @@ ; (.mfc0 v1-154 Count) ; (- v1-154 initial-timer) (label cfg-78) - loaded-level - ) + loaded-level) (defmethod birth ((this level)) "Birth a level to make it alive! It must be loaded." - (case (-> this status) (('loaded) (protect (loading-level - (-> *level* loading-level) - (-> *level* log-in-level-bsp) - ) - (set! loading-level (-> this heap)) - (set! (-> *level* log-in-level-bsp) (-> this bsp)) - (set! (-> *level* loading-level) this) - (birth (-> this bsp)) - (set! (-> this status) 'alive) - ;;(load-dbg "copy perms~%") - (copy-perms-to-level! *game-info* this) - ;;(load-dbg "send activate~%") - ;; note: this isn't a great name - the level isn't actually activated, just alive. - (send-event *camera* 'level-activate (-> this name)) - (send-event *target* 'level-activate (-> this name)) - ) - ) - ) - this - ) + (-> *level* loading-level) + (-> *level* log-in-level-bsp)) + (set! loading-level (-> this heap)) + (set! (-> *level* log-in-level-bsp) (-> this bsp)) + (set! (-> *level* loading-level) this) + (birth (-> this bsp)) + (set! (-> this status) 'alive) + ;;(load-dbg "copy perms~%") + (copy-perms-to-level! *game-info* this) + ;;(load-dbg "send activate~%") + ;; note: this isn't a great name - the level isn't actually activated, just alive. + (send-event *camera* 'level-activate (-> this name)) + (send-event *target* 'level-activate (-> this name))))) + this) (defmethod deactivate ((this level)) "Kill the level. This won't remove it from memory." - (case (-> this status) (('active 'alive) (format 0 "----------- kill ~A (status ~A)~%" this (-> this status)) - ;; copy data from the level to the game-info storage. This will remember permanent level stuff, like ;; what you collected/completed. (copy-perms-from-level! *game-info* this) (send-event *camera* 'level-deactivate (-> this name)) (send-event *target* 'level-deactivate (-> this name)) - ;; remove this BSP from the engine. This will stop us from being drawn. (remove-by-param1 *background-draw-engine* (-> this bsp)) - ;; track down all the entities and kill them (deactivate-entities (-> this bsp)) - ;; kill any remaining particles not associated with a part-tracker (kill-all-particles-in-level this) - ;; clean up our level (set! (-> this inside-sphere?) #f) (set! (-> this inside-boxes?) #f) (set! (-> this meta-inside?) #f) (set! (-> this force-inside?) #f) - ;; we're still loaded. (set! (-> this status) 'loaded) - (set! (-> this all-visible?) 'loading) ;; clear vis buffers (dotimes (v1-19 128) - (set! (deref int128 (-> this vis-bits) v1-19) (the-as int128 0)) - ) + (set! (deref int128 (-> this vis-bits) v1-19) (the-as int128 0))) (let ((v1-22 8)) - (while (nonzero? v1-22) - (+! v1-22 -1) - (let ((a0-14 (-> this vis-info v1-22))) - (if a0-14 - (set! (-> a0-14 current-vis-string) (the-as uint -1)) - ) - ) - ) - ) - ) - ) - (if (= (-> *level* log-in-level-bsp) (-> this bsp)) - (set! (-> *level* log-in-level-bsp) #f) - ) - this - ) + (while (nonzero? v1-22) + (+! v1-22 -1) + (let ((a0-14 (-> this vis-info v1-22))) (if a0-14 (set! (-> a0-14 current-vis-string) (the-as uint -1)))))))) + (if (= (-> *level* log-in-level-bsp) (-> this bsp)) (set! (-> *level* log-in-level-bsp) #f)) + this) (defmethod unload! ((this level)) "Unloads the level. This does not free the heap. The level will be made inactive and ready to be loaded some other time." - (deactivate this) (when (!= (-> this status) 'inactive) - ;; if we linked art group, unlink it. - (when (or (= (-> this status) 'loaded) - (= (-> this status) 'alive) - (= (-> this status) 'active) - (= (-> this status) 'login) - ) + (when (or (= (-> this status) 'loaded) (= (-> this status) 'alive) (= (-> this status) 'active) (= (-> this status) 'login)) (dotimes (s5-0 (-> this art-group art-group-array length)) - (let ((s4-0 (-> this art-group art-group-array s5-0))) - (if (needs-link? s4-0) - (unlink-art! s4-0) - ) - ) - ) - ) - + (let ((s4-0 (-> this art-group art-group-array s5-0))) (if (needs-link? s4-0) (unlink-art! s4-0))))) ;; turn some things off (set! (-> this bsp) #f) (set! (-> this entity) #f) @@ -998,454 +664,273 @@ (set! (-> this status) 'inactive) (set! (-> this art-group string-array length) 0) (set! (-> this art-group art-group-array length) 0) - ;; unload texture pages (countdown (s5-1 (-> this loaded-texture-page-count)) (dotimes (v1-27 32) (when (= (-> this loaded-texture-page s5-1) (-> *texture-pool* common-page v1-27)) - (set! (-> *texture-pool* common-page v1-27) (the-as texture-page 0)) - ) - ) - (unload! *texture-pool* (-> this loaded-texture-page s5-1)) - ) + (set! (-> *texture-pool* common-page v1-27) (the-as texture-page 0)))) + (unload! *texture-pool* (-> this loaded-texture-page s5-1))) (set! (-> this loaded-texture-page-count) 0) (unlink-textures-in-heap! *texture-page-dir* (-> this heap)) - ;; unload particle groups that were defined in the level data (unlink-part-group-by-heap (-> this heap)) - ;; if there are any in-progress art loads for this level, kill them. (dotimes (s5-2 2) (let ((v1-41 (-> *art-control* buffer s5-2 pending-load-file))) (if (and (>= (the-as int v1-41) (the-as int (-> this heap base))) - (< (the-as int v1-41) (the-as int (-> this heap top-base))) - ) - (set-pending-file - (-> *art-control* buffer s5-2) - (the-as string #f) - -1 - (the-as handle #f) - 100000000.0 - ) - ) - ) - ) - + (< (the-as int v1-41) (the-as int (-> this heap top-base)))) + (set-pending-file (-> *art-control* buffer s5-2) (the-as string #f) -1 (the-as handle #f) 100000000.0)))) ;; unload packages (doesn't really do anything.) (let* ((s5-3 (-> this info packages)) - (a0-29 (car s5-3)) - ) + (a0-29 (car s5-3))) (while (not (null? s5-3)) (case (rtype-of a0-29) - ((symbol) - (unload (symbol->string (the-as symbol a0-29))) - ) - ((string) - (unload (the-as string a0-29)) - ) - ) + ((symbol) (unload (symbol->string (the-as symbol a0-29)))) + ((string) (unload (the-as string a0-29)))) (set! s5-3 (cdr s5-3)) - (set! a0-29 (car s5-3)) - ) - ) - + (set! a0-29 (car s5-3)))) (vis-clear this) - ;; reset the level heap! - (let ((v1-64 (-> this heap))) - (set! (-> v1-64 current) (-> v1-64 base)) - ) + (let ((v1-64 (-> this heap))) (set! (-> v1-64 current) (-> v1-64 base))) (set! (-> this code-memory-start) (the-as pointer 0)) (set! (-> this code-memory-end) (the-as pointer 0)) (when (= (-> *level* loading-level) this) (set! loading-level global) (set! (-> *level* loading-level) (-> *level* level-default)) - (set! (-> *level* log-in-level-bsp) #f) - ) - ) - this - ) + (set! (-> *level* log-in-level-bsp) #f))) + this) ;; method 27 level ;; method 10 level (defmethod is-object-visible? ((this level) (arg0 int)) "Is arg0 visible? Note that this will return #f if the visibility data is not loaded." - ;; og:preserve-this pc port added option to show every actor regardless - (with-pc (if (not (-> *pc-settings* ps2-actor-vis?)) (return #t))) - + (with-pc + (if (not (-> *pc-settings* ps2-actor-vis?)) (return #t))) ;; check the vis bits! (let* (;; lwu v1, 388(a0) - (vis-data (-> this vis-bits)) - ;; sra a0, a1, 3 - (byte-idx (sar arg0 3)) - ;; daddu v1, a0, v1 - ;; lb v1, 0(v1) - (vis-byte (-> (the (pointer int8) vis-data) byte-idx)) - ;; andi a0, a1, 7 - (bit-idx (logand arg0 #b111)) - ;; addiu a0, a0, 56 - (shift-amount (+ bit-idx 56)) ;; 56 + 8 = 64, to set the sign bit - ;; dsllv v1, v1, a0 - (check-sign-word (the int (shl vis-byte shift-amount))) ;; signed - ) + (vis-data (-> this vis-bits)) + ;; sra a0, a1, 3 + (byte-idx (sar arg0 3)) + ;; daddu v1, a0, v1 + ;; lb v1, 0(v1) + (vis-byte (-> (the (pointer int8) vis-data) byte-idx)) + ;; andi a0, a1, 7 + (bit-idx (logand arg0 #b111)) + ;; addiu a0, a0, 56 + (shift-amount (+ bit-idx 56)) ;; 56 + 8 = 64, to set the sign bit + ;; dsllv v1, v1, a0 + (check-sign-word (the int (shl vis-byte shift-amount))) ;; signed + ) ;; slt v1, v1, r0 v1 = (csw < 0) ;; daddiu v0, s7, 8 ;; movz v0, s7, v1 if (csw >= 0) result = false ;;(format 0 "vis check ~D ~X ~X ~A~%" arg0 vis-byte check-sign-word (>= check-sign-word 0)) - (< check-sign-word 0) - ) - ) + (< check-sign-word 0))) (defmethod point-in-boxes? ((this level) (arg0 vector)) "Is this point in the list of level boxes?" (cond ((or (not (-> this bsp)) (zero? (-> this bsp boxes))) ;; no boxes or no bsp - #f - ) - ((-> this force-inside?) - #t - ) + #f) + ((-> this force-inside?) #t) (else - (let* ((a0-1 (-> this bsp boxes)) - (v1-5 (-> a0-1 data)) - ) - (countdown (a0-2 (-> a0-1 length)) - (if (and (>= (-> arg0 x) (-> v1-5 0 min x)) - (>= (-> arg0 y) (-> v1-5 0 min y)) - (>= (-> arg0 z) (-> v1-5 0 min z)) - (< (-> arg0 x) (-> v1-5 0 max x)) - (< (-> arg0 y) (-> v1-5 0 max y)) - (< (-> arg0 z) (-> v1-5 0 max z)) - ) - (return #t) - ) - (set! v1-5 (the (inline-array box8s) (-> v1-5 1))) - ) - ) - #f - ) - ) - ) - + (let* ((a0-1 (-> this bsp boxes)) + (v1-5 (-> a0-1 data))) + (countdown (a0-2 (-> a0-1 length)) + (if (and (>= (-> arg0 x) (-> v1-5 0 min x)) + (>= (-> arg0 y) (-> v1-5 0 min y)) + (>= (-> arg0 z) (-> v1-5 0 min z)) + (< (-> arg0 x) (-> v1-5 0 max x)) + (< (-> arg0 y) (-> v1-5 0 max y)) + (< (-> arg0 z) (-> v1-5 0 max z))) + (return #t)) + (set! v1-5 (the (inline-array box8s) (-> v1-5 1))))) + #f))) (defmethod debug-print-splitbox ((this level) (arg0 vector) (arg1 string)) "Print the current splitbox, if we're in one." (cond - ((or (not (-> this bsp)) (zero? (-> this bsp boxes)) (zero? (-> this bsp split-box-indices))) - ;; do nothing! - ) - (else - (let* ((s3-0 (-> this bsp boxes)) - (s2-0 (-> s3-0 data)) - ) - (dotimes (s1-0 (-> s3-0 length)) - (if - (and - (>= (-> arg0 x) (-> s2-0 0 min x)) - (>= (-> arg0 y) (-> s2-0 0 min y)) - (>= (-> arg0 z) (-> s2-0 0 min z)) - (< (-> arg0 x) (-> s2-0 0 max x)) - (< (-> arg0 y) (-> s2-0 0 max y)) - (< (-> arg0 z) (-> s2-0 0 max z)) - ) - (format arg1 " splitbox-~D~%" (-> this bsp split-box-indices s1-0)) - ) - (set! s2-0 (the (inline-array box8s) (-> s2-0 1))) - ) + ((or (not (-> this bsp)) (zero? (-> this bsp boxes)) (zero? (-> this bsp split-box-indices))) + ;; do nothing! ) - ) - ) + (else + (let* ((s3-0 (-> this bsp boxes)) + (s2-0 (-> s3-0 data))) + (dotimes (s1-0 (-> s3-0 length)) + (if (and (>= (-> arg0 x) (-> s2-0 0 min x)) + (>= (-> arg0 y) (-> s2-0 0 min y)) + (>= (-> arg0 z) (-> s2-0 0 min z)) + (< (-> arg0 x) (-> s2-0 0 max x)) + (< (-> arg0 y) (-> s2-0 0 max y)) + (< (-> arg0 z) (-> s2-0 0 max z))) + (format arg1 " splitbox-~D~%" (-> this bsp split-box-indices s1-0))) + (set! s2-0 (the (inline-array box8s) (-> s2-0 1))))))) 0 - (none) - ) - + (none)) (defmethod mem-usage ((this level) (arg0 memory-usage-block) (arg1 int)) "Get the memory usage for a level." - (when (= (-> this status) 'active) - (set! (-> arg0 length) (max 65 (-> arg0 length))) - (set! (-> arg0 data 64 name) "entity-links") - (set! - (-> arg0 data 64 count) - (+ (-> arg0 data 64 count) (-> this entity length)) - ) - (let ((v1-8 (asize-of (-> this entity)))) - (set! (-> arg0 data 64 used) (+ (-> arg0 data 64 used) v1-8)) - (set! - (-> arg0 data 64 total) - (+ (-> arg0 data 64 total) (logand -16 (+ v1-8 15))) - ) - ) - (set! (-> arg0 length) (max 65 (-> arg0 length))) - (set! (-> arg0 data 64 name) "ambient-links") - (set! - (-> arg0 data 64 count) - (+ (-> arg0 data 64 count) (-> this ambient length)) - ) - (let ((v1-18 (asize-of (-> this ambient)))) - (set! (-> arg0 data 64 used) (+ (-> arg0 data 64 used) v1-18)) - (set! - (-> arg0 data 64 total) - (+ (-> arg0 data 64 total) (logand -16 (+ v1-18 15))) - ) - ) - (mem-usage (-> this art-group) arg0 arg1) - (set! (-> arg0 length) (max 64 (-> arg0 length))) - (set! (-> arg0 data 63 name) "level-code") - (set! (-> arg0 data 63 count) (+ (-> arg0 data 63 count) 1)) - (let - ((v1-30 - (&- (-> this code-memory-end) (the-as uint (-> this code-memory-start))) - ) - ) - (set! (-> arg0 data 63 used) (+ (-> arg0 data 63 used) v1-30)) - (set! - (-> arg0 data 63 total) - (+ (-> arg0 data 63 total) (logand -16 (+ v1-30 15))) - ) - ) - (countdown (s3-0 (-> this loaded-texture-page-count)) - (mem-usage (-> this loaded-texture-page s3-0) arg0 arg1) - ) - (countdown (s3-1 8) - (let ((s2-0 (-> this vis-info s3-1))) - (when s2-0 - (cond - ((zero? s3-1) - (set! (-> arg0 length) (max 60 (-> arg0 length))) - (set! (-> arg0 data 59 name) "bsp-leaf-vis-self") - (set! (-> arg0 data 59 count) (+ (-> arg0 data 59 count) 1)) - (let ((v1-50 (asize-of s2-0))) - (set! (-> arg0 data 59 used) (+ (-> arg0 data 59 used) v1-50)) - (set! - (-> arg0 data 59 total) - (+ (-> arg0 data 59 total) (logand -16 (+ v1-50 15))) - ) - ) - ) - (else - (set! (-> arg0 length) (max 61 (-> arg0 length))) - (set! (-> arg0 data 60 name) "bsp-leaf-vis-adj") - (set! (-> arg0 data 60 count) (+ (-> arg0 data 60 count) 1)) - (let - ((v1-61 (+ (asize-of s2-0) (the-as int (-> s2-0 allocated-length))))) - (set! (-> arg0 data 60 used) (+ (-> arg0 data 60 used) v1-61)) - (set! - (-> arg0 data 60 total) - (+ (-> arg0 data 60 total) (logand -16 (+ v1-61 15))) - ) - ) - ) - ) - ) - ) - ) - (mem-usage (-> this bsp) arg0 arg1) - ) - this - ) + (set! (-> arg0 length) (max 65 (-> arg0 length))) + (set! (-> arg0 data 64 name) "entity-links") + (set! (-> arg0 data 64 count) (+ (-> arg0 data 64 count) (-> this entity length))) + (let ((v1-8 (asize-of (-> this entity)))) + (set! (-> arg0 data 64 used) (+ (-> arg0 data 64 used) v1-8)) + (set! (-> arg0 data 64 total) (+ (-> arg0 data 64 total) (logand -16 (+ v1-8 15))))) + (set! (-> arg0 length) (max 65 (-> arg0 length))) + (set! (-> arg0 data 64 name) "ambient-links") + (set! (-> arg0 data 64 count) (+ (-> arg0 data 64 count) (-> this ambient length))) + (let ((v1-18 (asize-of (-> this ambient)))) + (set! (-> arg0 data 64 used) (+ (-> arg0 data 64 used) v1-18)) + (set! (-> arg0 data 64 total) (+ (-> arg0 data 64 total) (logand -16 (+ v1-18 15))))) + (mem-usage (-> this art-group) arg0 arg1) + (set! (-> arg0 length) (max 64 (-> arg0 length))) + (set! (-> arg0 data 63 name) "level-code") + (set! (-> arg0 data 63 count) (+ (-> arg0 data 63 count) 1)) + (let ((v1-30 (&- (-> this code-memory-end) (the-as uint (-> this code-memory-start))))) + (set! (-> arg0 data 63 used) (+ (-> arg0 data 63 used) v1-30)) + (set! (-> arg0 data 63 total) (+ (-> arg0 data 63 total) (logand -16 (+ v1-30 15))))) + (countdown (s3-0 (-> this loaded-texture-page-count)) + (mem-usage (-> this loaded-texture-page s3-0) arg0 arg1)) + (countdown (s3-1 8) + (let ((s2-0 (-> this vis-info s3-1))) + (when s2-0 + (cond + ((zero? s3-1) + (set! (-> arg0 length) (max 60 (-> arg0 length))) + (set! (-> arg0 data 59 name) "bsp-leaf-vis-self") + (set! (-> arg0 data 59 count) (+ (-> arg0 data 59 count) 1)) + (let ((v1-50 (asize-of s2-0))) + (set! (-> arg0 data 59 used) (+ (-> arg0 data 59 used) v1-50)) + (set! (-> arg0 data 59 total) (+ (-> arg0 data 59 total) (logand -16 (+ v1-50 15)))))) + (else + (set! (-> arg0 length) (max 61 (-> arg0 length))) + (set! (-> arg0 data 60 name) "bsp-leaf-vis-adj") + (set! (-> arg0 data 60 count) (+ (-> arg0 data 60 count) 1)) + (let ((v1-61 (+ (asize-of s2-0) (the-as int (-> s2-0 allocated-length))))) + (set! (-> arg0 data 60 used) (+ (-> arg0 data 60 used) v1-61)) + (set! (-> arg0 data 60 total) (+ (-> arg0 data 60 total) (logand -16 (+ v1-61 15)))))))))) + (mem-usage (-> this bsp) arg0 arg1)) + this) (#cond - (PC_PORT - (defconstant LEVEL_HEAP_SIZE (* 10416 1024)) ;; 10.416K - (defconstant LEVEL_HEAP_SIZE_DEBUG (* 11000 1024)) - ) - (#t - (defconstant LEVEL_HEAP_SIZE (* 10416 1024)) ;; 10.416K - (defconstant LEVEL_HEAP_SIZE_DEBUG (* 25600 1024)) ;; 25.600K - ) - ) + (PC_PORT + (defconstant LEVEL_HEAP_SIZE (* 10416 1024)) ;; 10.416K + (defconstant LEVEL_HEAP_SIZE_DEBUG (* 11000 1024))) + (#t + (defconstant LEVEL_HEAP_SIZE (* 10416 1024)) ;; 10.416K + (defconstant LEVEL_HEAP_SIZE_DEBUG (* 25600 1024)) ;; 25.600K + )) (defmethod alloc-levels! ((this level-group) (compact-level-heaps symbol)) "Allocate the level heaps and load the common packages for levels." - ;; only do stuff if levels are not allocated (when (zero? (-> *level* level0 heap base)) ;; GAME.CGO is made up of ART.CGO and COMMON.CGO (when (nmember "game" *kernel-packages*) (set! *kernel-packages* (cons "art" *kernel-packages*)) - (set! *kernel-packages* (cons "common" *kernel-packages*)) - ) + (set! *kernel-packages* (cons "common" *kernel-packages*))) (load-package "art" global) ;; load ART (if compact-level-heaps (load-package "common" global) ;; load COMMON unless we're debugging levels ) ;; allocate level heaps. turn on compact-level-heaps for use in 32MB systems - (let ((level-heap-size (if compact-level-heaps LEVEL_HEAP_SIZE - LEVEL_HEAP_SIZE_DEBUG)) - ) - (dotimes (lev LEVEL_COUNT) - (let ((level-heap (-> this level lev heap))) - (set! (-> level-heap base) (malloc 'global level-heap-size)) - (set! (-> level-heap current) (-> level-heap base)) - (set! (-> level-heap top-base) (&+ (-> level-heap base) level-heap-size)) - (set! (-> level-heap top) (-> level-heap top-base)) - ) - ) - ) - ) - 0 - ) - + (let ((level-heap-size (if compact-level-heaps LEVEL_HEAP_SIZE LEVEL_HEAP_SIZE_DEBUG))) + (dotimes (lev LEVEL_COUNT) + (let ((level-heap (-> this level lev heap))) + (set! (-> level-heap base) (malloc 'global level-heap-size)) + (set! (-> level-heap current) (-> level-heap base)) + (set! (-> level-heap top-base) (&+ (-> level-heap base) level-heap-size)) + (set! (-> level-heap top) (-> level-heap top-base)))))) + 0) (defmethod level-get-with-status ((this level-group) (status symbol)) (dotimes (i (-> this length)) - (if (= (-> this level i status) status) - (return (-> this level i)) - ) - ) - (the-as level #f) - ) + (if (= (-> this level i status) status) (return (-> this level i)))) + (the-as level #f)) (defmethod level-get-most-disposable ((this level-group)) "Get a level that's least likely to be in use right now. #f = all levels in use." - ;; check inactive levels first (dotimes (v1-0 (-> this length)) (case (-> this level v1-0 status) - (('inactive) - (return (-> this level v1-0)) - ) - ) - ) - + (('inactive) (return (-> this level v1-0))))) ;; check for any loading levels (dotimes (v1-6 (-> this length)) (case (-> this level v1-6 status) - (('loading 'loading-bt) - (return (-> this level v1-6)) - ) - ) - ) - + (('loading 'loading-bt) (return (-> this level v1-6))))) ;; check for loaded, but not active, levels. (dotimes (v1-12 (-> this length)) - (let ((a1-18 (-> this level v1-12 status))) - (if (= a1-18 'loaded) - (return (-> this level v1-12)) - ) - ) - ) - + (let ((a1-18 (-> this level v1-12 status))) (if (= a1-18 'loaded) (return (-> this level v1-12))))) ;; check active levels. pick one we're not in bounds of. (let ((v0-0 (the-as level #f))) - (dotimes (v1-18 (-> this length)) - (case (-> this level v1-18 status) - (('active) - (if (and (not (-> this level v1-18 inside-boxes?)) - (or (not v0-0) - (< (-> this level v1-18 info priority) (-> v0-0 info priority)) - ) - ) - (set! v0-0 (-> this level v1-18)) - ) - ) - ) - ) - v0-0 - ) - ) + (dotimes (v1-18 (-> this length)) + (case (-> this level v1-18 status) + (('active) + (if (and (not (-> this level v1-18 inside-boxes?)) + (or (not v0-0) (< (-> this level v1-18 info priority) (-> v0-0 info priority)))) + (set! v0-0 (-> this level v1-18)))))) + v0-0)) (defmethod level-get ((this level-group) (name symbol)) "Return the level data using its name, if it is available. Returns #f if none are found." - (dotimes (lev (-> this length)) (if (and (!= (-> this level lev status) 'inactive) - (or (= (-> this level lev name) name) - (= (-> this level lev load-name) name) - ) - ) - (return (-> this level lev)) - ) - ) - (the level #f) - ) + (or (= (-> this level lev name) name) (= (-> this level lev load-name) name))) + (return (-> this level lev)))) + (the level #f)) (defmethod art-group-get-by-name ((this level-group) (arg0 string)) (countdown (i 3) (let ((lev (-> this level i))) - (countdown (ii (-> lev art-group art-group-array length)) - (if (name= (-> lev art-group art-group-array ii name) arg0) - (return (-> lev art-group art-group-array ii)) - ) - ) - ) - ) - (the-as art-group #f) - ) - + (countdown (ii (-> lev art-group art-group-array length)) + (if (name= (-> lev art-group art-group-array ii name) arg0) (return (-> lev art-group art-group-array ii)))))) + (the-as art-group #f)) (defmethod activate-levels! ((this level-group)) "Try to activate all levels." - (dotimes (i (-> this length)) - (level-status-set! (-> this level i) 'active) - ) - 0 - ) + (level-status-set! (-> this level i) 'active)) + 0) (defmethod level-get-target-inside ((this level-group)) "Get the level target is in, or one it is close to. The distance checks do not work." - (let ((target-trans (target-pos 0))) - (let ((current-level (-> *game-info* current-continue level))) + (let ((current-level (-> *game-info* current-continue level))) + (dotimes (i (-> this length)) + (let ((ilev (-> this level i))) (when (= (-> ilev status) 'active) (if (= (-> ilev name) current-level) (return ilev)))))) + (let ((level-ret (the-as level #f))) + (let ((min-distance-to-level 0.0)) ;; uh-huh (dotimes (i (-> this length)) (let ((ilev (-> this level i))) (when (= (-> ilev status) 'active) - (if (= (-> ilev name) current-level) - (return ilev) - ))))) - (let ((level-ret (the-as level #f))) - (let ((min-distance-to-level 0.0)) ;; uh-huh - (dotimes (i (-> this length)) - (let ((ilev (-> this level i))) - (when (= (-> ilev status) 'active) - (let ((distance-to-level (vector-vector-distance (-> ilev bsp bsphere) target-trans))) - (if (and (-> ilev inside-boxes?) (or (not level-ret) (< distance-to-level min-distance-to-level))) - (set! level-ret ilev) - )))))) - (if level-ret - (return level-ret) - ) - ) - ) + (let ((distance-to-level (vector-vector-distance (-> ilev bsp bsphere) target-trans))) + (if (and (-> ilev inside-boxes?) (or (not level-ret) (< distance-to-level min-distance-to-level))) (set! level-ret ilev))))))) + (if level-ret (return level-ret)))) (dotimes (i (-> this length)) - (let ((ilev (-> this level i))) - (when (= (-> ilev status) 'active) - (if (-> ilev meta-inside?) - (return ilev) - )))) + (let ((ilev (-> this level i))) (when (= (-> ilev status) 'active) (if (-> ilev meta-inside?) (return ilev))))) (let ((level-ret (the-as level #f))) (let ((min-distance-to-level 0.0)) ;; why? (dotimes (i (-> this length)) (let ((ilev (-> this level i))) (when (= (-> ilev status) 'active) - (if (or (not level-ret) (< (-> ilev level-distance) min-distance-to-level)) - (set! level-ret ilev) - ))))) - level-ret - ) - ) + (if (or (not level-ret) (< (-> ilev level-distance) min-distance-to-level)) (set! level-ret ilev)))))) + level-ret)) (defmethod load-commands-set! ((this level-group) (load-commands pair)) (set! (-> this load-commands) load-commands) - load-commands - ) + load-commands) (defmethod mem-usage ((this level-group) (arg0 memory-usage-block) (arg1 int)) "Get the memory usage data for a level-group" - ;; get memory usage of each level (dotimes (i (-> this length)) - (mem-usage (-> this level i) arg0 arg1) - ) - this - ) + (mem-usage (-> this level i) arg0 arg1)) + this) (defun bg ((level-name symbol)) "Begin game in a given level. @@ -1453,105 +938,56 @@ If the visname is used (and its a recognized level in level-info), it will use vis mode. Otherwise, it will use the non-vis DGO name (like VILLAGE3.DGO) which will usually fail. " - (set! *cheat-mode* (if *debug-segment* - 'debug - #f - ) - ) + (set! *cheat-mode* (if *debug-segment* 'debug #f)) (let ((v1-2 (lookup-level-info level-name))) - (cond - ((= (-> v1-2 visname) level-name) - (set! (-> *level* vis?) #t) - (set! level-name (-> v1-2 name)) - ) - (else - (set! (-> *level* vis?) #f) - (set! (-> *kernel-context* low-memory-message) #f) - ) - ) - (let* ((s5-0 (-> v1-2 run-packages)) - (a0-8 (car s5-0)) - ) - (while (not (null? s5-0)) - (let ((v1-4 (rtype-of a0-8))) - (cond - ((= v1-4 symbol) - (load-package (symbol->string (the-as symbol a0-8)) global) - ) - ((= v1-4 string) - (load-package (the-as string a0-8) global) - ) - ) - ) - (set! s5-0 (cdr s5-0)) - (set! a0-8 (car s5-0)) - ) - ) - ) + (cond + ((= (-> v1-2 visname) level-name) (set! (-> *level* vis?) #t) (set! level-name (-> v1-2 name))) + (else (set! (-> *level* vis?) #f) (set! (-> *kernel-context* low-memory-message) #f))) + (let* ((s5-0 (-> v1-2 run-packages)) + (a0-8 (car s5-0))) + (while (not (null? s5-0)) + (let ((v1-4 (rtype-of a0-8))) + (cond + ((= v1-4 symbol) (load-package (symbol->string (the-as symbol a0-8)) global)) + ((= v1-4 string) (load-package (the-as string a0-8) global)))) + (set! s5-0 (cdr s5-0)) + (set! a0-8 (car s5-0))))) (let ((gp-1 (level-get-for-use *level* level-name 'active))) - (while (and gp-1 (or (= (-> gp-1 status) 'loading) - (= (-> gp-1 status) 'loading-bt) - (= (-> gp-1 status) 'login) - ) - (not *dproc*) - ) - (load-continue gp-1) - ) - (vis-load gp-1) - (set! (-> *load-state* vis-nick) (if (-> *level* vis?) - (-> gp-1 nickname) - #f - )) - (set! (-> *load-state* want 0 name) (-> gp-1 name)) - (set! (-> *load-state* want 0 display?) 'display) - (set! (-> *load-state* want 0 force-vis?) #f) - (set! (-> *load-state* want 0 force-inside?) #f) - (set! (-> *load-state* want 1 name) #f) - (set! (-> *load-state* want 1 display?) #f) - (set! (-> *load-state* want 1 force-inside?) #f) - (if (-> gp-1 info continues) - (set-continue! *game-info* (the-as continue-point (car (-> gp-1 info continues)))) - ) - ) + (while (and gp-1 (or (= (-> gp-1 status) 'loading) (= (-> gp-1 status) 'loading-bt) (= (-> gp-1 status) 'login)) (not *dproc*)) + (load-continue gp-1)) + (vis-load gp-1) + (set! (-> *load-state* vis-nick) (if (-> *level* vis?) (-> gp-1 nickname) #f)) + (set! (-> *load-state* want 0 name) (-> gp-1 name)) + (set! (-> *load-state* want 0 display?) 'display) + (set! (-> *load-state* want 0 force-vis?) #f) + (set! (-> *load-state* want 0 force-inside?) #f) + (set! (-> *load-state* want 1 name) #f) + (set! (-> *load-state* want 1 display?) #f) + (set! (-> *load-state* want 1 force-inside?) #f) + (if (-> gp-1 info continues) (set-continue! *game-info* (the-as continue-point (car (-> gp-1 info continues)))))) (activate-levels! *level*) (set! *print-login* #f) - 0 - ) - + 0) (defun play ((use-vis symbol) (init-game symbol)) "The entry point to the actual game! This allocates the level heaps, loads some data, sets some default parameters and sets the startup level." - ;; temp (format #t "(play :use-vis ~A :init-game ~A) has been called!~%" use-vis init-game) - (format 0 "(play :use-vis ~A :init-game ~A) has been called!~%" use-vis init-game) - (format 0 "*kernel-boot-message*: ~A~%" *kernel-boot-message*) + (format 0 "(play :use-vis ~A :init-game ~A) has been called!~%" use-vis init-game) + (format 0 "*kernel-boot-message*: ~A~%" *kernel-boot-message*) ;;(kernel-shutdown) - (let ((startup-level (case *kernel-boot-message* - (('play) - (if *debug-segment* - 'village1 - 'title - ) - ) - (else - 'demo - ) - ) - )) + (('play) (if *debug-segment* 'village1 'title)) + (else 'demo)))) (stop 'play) (set! (-> *level* vis?) use-vis) (set! (-> *level* want-level) #f) (set! (-> *level* border?) #t) (set! (-> *setting-control* default border-mode) #t) (set! (-> *level* play?) #t) - (alloc-levels! *level* #f);;#t) + (alloc-levels! *level* #f) ;;#t) (set! *display-profile* #f) - (set! *cheat-mode* (if *debug-segment* - 'debug - #f - )) + (set! *cheat-mode* (if *debug-segment* 'debug #f)) (set! *time-of-day-fast* #f) (load-commands-set! *level* '()) (when *time-of-day-proc* @@ -1562,302 +998,171 @@ (unless *dproc* (reset! *load-state*) (let ((s4-1 (level-get-for-use *level* startup-level 'active))) - (load-state-want-levels startup-level #f) - (load-state-want-display-level startup-level 'display) - (load-state-want-vis (-> (lookup-level-info startup-level) nickname)) - (while (and s4-1 (or (= (-> s4-1 status) 'loading) - (= (-> s4-1 status) 'loading-bt) - (= (-> s4-1 status) 'login))) - (set-blackout-frames 6) - (load-continue s4-1) - ) - ) - ) + (load-state-want-levels startup-level #f) + (load-state-want-display-level startup-level 'display) + (load-state-want-vis (-> (lookup-level-info startup-level) nickname)) + (while (and s4-1 (or (= (-> s4-1 status) 'loading) (= (-> s4-1 status) 'loading-bt) (= (-> s4-1 status) 'login))) + (set-blackout-frames 6) + (load-continue s4-1)))) (set! *print-login* #f) - (level-status-set! (level-get *level* startup-level) 'active) - ) - + (level-status-set! (level-get *level* startup-level) 'active)) (load-dbg "Load complete. Level: ~A. Now starting display!~%" (-> *level* level0)) (on #t) (load-dbg "Display started: ~A~%" *dproc*) (when init-game - (initialize! *game-info* 'game (the-as game-save #f) (the-as string #f)) - ) - 0 - ) + (initialize! *game-info* 'game (the-as game-save #f) (the-as string #f))) + 0) (defun update-sound-banks () - (if (nonzero? (rpc-busy? RPC-SOUND-LOADER)) - (return 0) - ) + (if (nonzero? (rpc-busy? RPC-SOUND-LOADER)) (return 0)) (let ((gp-0 #f) - (s5-0 #f) - ) - (dotimes (s4-0 (-> *level* length)) - (let ((v1-5 (-> *level* level s4-0))) - (when (= (-> v1-5 status) 'active) - (let* ((s3-0 (-> v1-5 info sound-banks)) - (t0-0 (the-as symbol (car s3-0))) - ) - (while (not (null? s3-0)) - (cond - ((or (= gp-0 t0-0) (= s5-0 t0-0) (-> *setting-control* current movie)) - ) - ((not gp-0) - (set! gp-0 t0-0) - ) - ((not s5-0) - (set! s5-0 t0-0) - ) - (else - (format - 0 - "ERROR: Soundbanks ~A, ~A and ~A all required~%" - gp-0 - s5-0 - t0-0 - ) - ) - ) - (set! s3-0 (cdr s3-0)) - (set! t0-0 (the-as symbol (car s3-0))) - ) - ) - ) - ) - ) - (when (and gp-0 (!= gp-0 *sound-bank-1*) (!= gp-0 *sound-bank-2*)) - (when (not *sound-bank-1*) - (format 0 "Load soundbank ~A~%" gp-0) - (sound-bank-load (string->sound-name (symbol->string gp-0))) - (set! *sound-bank-1* gp-0) - (return 0) - ) - (when (not *sound-bank-2*) - (format 0 "Load soundbank ~A~%" gp-0) - (sound-bank-load (string->sound-name (symbol->string gp-0))) - (set! *sound-bank-2* gp-0) - (return 0) - ) - (when (!= *sound-bank-1* s5-0) - (format 0 "Unload soundbank ~A~%" *sound-bank-1*) - (sound-bank-unload (string->sound-name (symbol->string *sound-bank-1*))) - (set! *sound-bank-1* #f) - (return 0) - ) - (when (!= *sound-bank-2* s5-0) - (format 0 "Unload soundbank ~A~%" *sound-bank-2*) - (sound-bank-unload (string->sound-name (symbol->string *sound-bank-2*))) - (set! *sound-bank-2* #f) - (return 0) - ) - ) - (when (and s5-0 (!= s5-0 *sound-bank-1*) (!= s5-0 *sound-bank-2*)) - (when (not *sound-bank-1*) - (format 0 "Load soundbank ~A~%" s5-0) - (sound-bank-load (string->sound-name (symbol->string s5-0))) - (set! *sound-bank-1* s5-0) - (return 0) - ) - (when (not *sound-bank-2*) - (format 0 "Load soundbank ~A~%" s5-0) - (sound-bank-load (string->sound-name (symbol->string s5-0))) - (set! *sound-bank-2* s5-0) - (return 0) - ) - (when (!= *sound-bank-1* gp-0) - (format 0 "Unload soundbank ~A~%" *sound-bank-1*) - (sound-bank-unload (string->sound-name (symbol->string *sound-bank-1*))) - (set! *sound-bank-1* #f) - (return 0) - ) - (when (!= *sound-bank-2* gp-0) - (format 0 "Unload soundbank ~A~%" *sound-bank-2*) - (sound-bank-unload (string->sound-name (symbol->string *sound-bank-2*))) - (set! *sound-bank-2* #f) - (return 0) - ) - ) - ) - 0 - ) + (s5-0 #f)) + (dotimes (s4-0 (-> *level* length)) + (let ((v1-5 (-> *level* level s4-0))) + (when (= (-> v1-5 status) 'active) + (let* ((s3-0 (-> v1-5 info sound-banks)) + (t0-0 (the-as symbol (car s3-0)))) + (while (not (null? s3-0)) + (cond + ((or (= gp-0 t0-0) (= s5-0 t0-0) (-> *setting-control* current movie))) + ((not gp-0) (set! gp-0 t0-0)) + ((not s5-0) (set! s5-0 t0-0)) + (else (format 0 "ERROR: Soundbanks ~A, ~A and ~A all required~%" gp-0 s5-0 t0-0))) + (set! s3-0 (cdr s3-0)) + (set! t0-0 (the-as symbol (car s3-0)))))))) + (when (and gp-0 (!= gp-0 *sound-bank-1*) (!= gp-0 *sound-bank-2*)) + (when (not *sound-bank-1*) + (format 0 "Load soundbank ~A~%" gp-0) + (sound-bank-load (string->sound-name (symbol->string gp-0))) + (set! *sound-bank-1* gp-0) + (return 0)) + (when (not *sound-bank-2*) + (format 0 "Load soundbank ~A~%" gp-0) + (sound-bank-load (string->sound-name (symbol->string gp-0))) + (set! *sound-bank-2* gp-0) + (return 0)) + (when (!= *sound-bank-1* s5-0) + (format 0 "Unload soundbank ~A~%" *sound-bank-1*) + (sound-bank-unload (string->sound-name (symbol->string *sound-bank-1*))) + (set! *sound-bank-1* #f) + (return 0)) + (when (!= *sound-bank-2* s5-0) + (format 0 "Unload soundbank ~A~%" *sound-bank-2*) + (sound-bank-unload (string->sound-name (symbol->string *sound-bank-2*))) + (set! *sound-bank-2* #f) + (return 0))) + (when (and s5-0 (!= s5-0 *sound-bank-1*) (!= s5-0 *sound-bank-2*)) + (when (not *sound-bank-1*) + (format 0 "Load soundbank ~A~%" s5-0) + (sound-bank-load (string->sound-name (symbol->string s5-0))) + (set! *sound-bank-1* s5-0) + (return 0)) + (when (not *sound-bank-2*) + (format 0 "Load soundbank ~A~%" s5-0) + (sound-bank-load (string->sound-name (symbol->string s5-0))) + (set! *sound-bank-2* s5-0) + (return 0)) + (when (!= *sound-bank-1* gp-0) + (format 0 "Unload soundbank ~A~%" *sound-bank-1*) + (sound-bank-unload (string->sound-name (symbol->string *sound-bank-1*))) + (set! *sound-bank-1* #f) + (return 0)) + (when (!= *sound-bank-2* gp-0) + (format 0 "Unload soundbank ~A~%" *sound-bank-2*) + (sound-bank-unload (string->sound-name (symbol->string *sound-bank-2*))) + (set! *sound-bank-2* #f) + (return 0)))) + 0) (defmethod update! ((this load-state)) "Updates load requests." - (update-sound-banks) - (let ((v1-0 #f)) (dotimes (s5-0 2) (let ((s4-0 (-> *level* level s5-0))) - (when (!= (-> s4-0 status) 'inactive) - (let ((a0-6 #f)) - (dotimes (a1-2 2) - (if (= (-> s4-0 name) (-> this want a1-2 name)) - (set! a0-6 #t) - ) - ) - (when (not a0-6) - (format 0 "Discarding level ~A~%" (-> s4-0 name)) - (level-status-set! s4-0 'inactive) - (set! v1-0 #t) - (#when PC_PORT - (when *debug-segment* - (define-extern *entity* entity) - (set! *entity* (the entity #f)) - ) - ) - ) - ) - ) - ) - ) + (when (!= (-> s4-0 status) 'inactive) + (let ((a0-6 #f)) + (dotimes (a1-2 2) + (if (= (-> s4-0 name) (-> this want a1-2 name)) (set! a0-6 #t))) + (when (not a0-6) + (format 0 "Discarding level ~A~%" (-> s4-0 name)) + (level-status-set! s4-0 'inactive) + (set! v1-0 #t) + (#when PC_PORT + (when *debug-segment* + (define-extern *entity* entity) + (set! *entity* (the entity #f))))))))) (let ((s5-1 #f)) - (if (and (= (-> *level* level0 status) 'inactive) - (= (-> *level* level1 status) 'inactive) - ) - (set! s5-1 #t) - ) - (if v1-0 - (return 0) - ) + (if (and (= (-> *level* level0 status) 'inactive) (= (-> *level* level1 status) 'inactive)) (set! s5-1 #t)) + (if v1-0 (return 0)) (let ((a0-20 #f) - (v1-5 #f) - ) + (v1-5 #f)) (when (-> this want 0 name) (set! a0-20 #t) (dotimes (a1-12 3) (let ((a2-9 (-> *level* level a1-12))) - (if (and (!= (-> a2-9 status) 'inactive) - (= (-> a2-9 name) (-> this want 0 name)) - ) - (set! a0-20 #f) - ) - ) - ) - ) + (if (and (!= (-> a2-9 status) 'inactive) (= (-> a2-9 name) (-> this want 0 name))) (set! a0-20 #f))))) (when (-> this want 1 name) (set! v1-5 #t) (dotimes (a1-17 3) (let ((a2-17 (-> *level* level a1-17))) - (if (and (!= (-> a2-17 status) 'inactive) - (= (-> a2-17 name) (-> this want 1 name)) - ) - (set! v1-5 #f) - ) - ) - ) - ) + (if (and (!= (-> a2-17 status) 'inactive) (= (-> a2-17 name) (-> this want 1 name))) (set! v1-5 #f))))) (let ((s4-1 -1)) (cond - ((and a0-20 v1-5) - (set! s4-1 0) - (if (and (-> this want 1 display?) - (not (-> this want 0 display?)) - ) - (set! s4-1 1) - ) - ) - (a0-20 - (set! s4-1 0) - ) - (v1-5 - (set! s4-1 1) - ) - ) + ((and a0-20 v1-5) (set! s4-1 0) (if (and (-> this want 1 display?) (not (-> this want 0 display?))) (set! s4-1 1))) + (a0-20 (set! s4-1 0)) + (v1-5 (set! s4-1 1))) (when (!= s4-1 -1) (when (or s5-1 (not (check-busy *load-dgo-rpc*))) (format 0 "Adding level ~A~%" (-> this want s4-1 name)) (let ((s3-0 (level-get-for-use *level* (the-as symbol (-> this want s4-1 name)) 'loaded))) - (when (and s5-1 (-> this want s4-1 display?)) - (format 0 "Waiting for level to load~%") - (while (or (= (-> s3-0 status) 'loading) - (= (-> s3-0 status) 'loading-bt) - (= (-> s3-0 status) 'login) - ) - (load-continue s3-0) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (when (and s5-1 (-> this want s4-1 display?)) + (format 0 "Waiting for level to load~%") + (while (or (= (-> s3-0 status) 'loading) (= (-> s3-0 status) 'loading-bt) (= (-> s3-0 status) 'login)) + (load-continue s3-0)))))))))) (dotimes (s5-2 2) (when (-> this want s5-2 name) (dotimes (s4-2 3) (let ((s3-1 (-> *level* level s4-2))) - (when (!= (-> s3-1 status) 'inactive) - (when (= (-> s3-1 name) (-> this want s5-2 name)) - (when (!= (-> s3-1 display?) (-> this want s5-2 display?)) - (cond - ((not (-> s3-1 display?)) - (cond - ((or (= (-> s3-1 status) 'loaded) (= (-> s3-1 status) 'active)) - (format 0 "Displaying level ~A [~A]~%" (-> this want s5-2 name) (-> this want s5-2 display?)) - (level-get-for-use *level* (-> s3-1 info name) 'active) - (set! (-> s3-1 display?) (-> this want s5-2 display?)) - ) - (else - (when (and (-> s3-1 info wait-for-load) - (!= (-> this want s5-2 display?) 'display-no-wait) - ) - (send-event *target* 'loading) - ) - (if (= *cheat-mode* 'debug) - (format *stdcon* "display on for ~A but level is loading~%" (-> this want s5-2 name)) - ) - ) - ) - ) - (else - (cond - ((not (-> this want s5-2 display?)) - (set! (-> s3-1 display?) #f) - (format 0 "Turning level ~A off~%" (-> s3-1 name)) - (deactivate s3-1) - ) - (else - (format 0 "Setting level ~A display command to ~A~%" (-> this want s5-2 name) (-> this want s5-2 display?)) - (set! (-> s3-1 display?) (-> this want s5-2 display?)) - ) - ) - ) - ) - ) - (when (!= (-> s3-1 force-all-visible?) (-> this want s5-2 force-vis?)) - (set! (-> s3-1 force-all-visible?) (-> this want s5-2 force-vis?)) - (format 0 "Setting force-all-visible?[~A] to ~A~%" (-> this want s5-2 name) (-> this want s5-2 force-vis?)) - ) - (when (!= (-> s3-1 force-inside?) (-> this want s5-2 force-inside?)) - (set! (-> s3-1 force-inside?) (-> this want s5-2 force-inside?)) - (format 0 "Setting force-inside?[~A] to ~A~%" (-> this want s5-2 name) (-> this want s5-2 force-inside?)) - ) - ) - ) - ) - ) - ) - ) - + (when (!= (-> s3-1 status) 'inactive) + (when (= (-> s3-1 name) (-> this want s5-2 name)) + (when (!= (-> s3-1 display?) (-> this want s5-2 display?)) + (cond + ((not (-> s3-1 display?)) + (cond + ((or (= (-> s3-1 status) 'loaded) (= (-> s3-1 status) 'active)) + (format 0 "Displaying level ~A [~A]~%" (-> this want s5-2 name) (-> this want s5-2 display?)) + (level-get-for-use *level* (-> s3-1 info name) 'active) + (set! (-> s3-1 display?) (-> this want s5-2 display?))) + (else + (when (and (-> s3-1 info wait-for-load) (!= (-> this want s5-2 display?) 'display-no-wait)) + (send-event *target* 'loading)) + (if (= *cheat-mode* 'debug) (format *stdcon* "display on for ~A but level is loading~%" (-> this want s5-2 name)))))) + (else + (cond + ((not (-> this want s5-2 display?)) + (set! (-> s3-1 display?) #f) + (format 0 "Turning level ~A off~%" (-> s3-1 name)) + (deactivate s3-1)) + (else + (format 0 "Setting level ~A display command to ~A~%" (-> this want s5-2 name) (-> this want s5-2 display?)) + (set! (-> s3-1 display?) (-> this want s5-2 display?))))))) + (when (!= (-> s3-1 force-all-visible?) (-> this want s5-2 force-vis?)) + (set! (-> s3-1 force-all-visible?) (-> this want s5-2 force-vis?)) + (format 0 "Setting force-all-visible?[~A] to ~A~%" (-> this want s5-2 name) (-> this want s5-2 force-vis?))) + (when (!= (-> s3-1 force-inside?) (-> this want s5-2 force-inside?)) + (set! (-> s3-1 force-inside?) (-> this want s5-2 force-inside?)) + (format 0 "Setting force-inside?[~A] to ~A~%" (-> this want s5-2 name) (-> this want s5-2 force-inside?))))))))) ;; load vis info. ;; The load-state's vis-nick is the level we want vis data for. ;; Note that we won't load vis until we are inside the level's boxes. - ;; this will be the level that is currently being used. (let ((s5-3 #f)) (dotimes (v1-121 (-> *level* length)) (let ((a0-55 (-> *level* level v1-121))) - (when (= (-> a0-55 status) 'active) ;; level is active - (if (nonzero? (-> a0-55 vis-info (-> a0-55 vis-self-index) ramdisk)) ;; and vis is set up. - (set! s5-3 (-> a0-55 nickname)) - ) - ) - ) - ) - + (when (= (-> a0-55 status) 'active) ;; level is active + (if (nonzero? (-> a0-55 vis-info (-> a0-55 vis-self-index) ramdisk)) ;; and vis is set up. + (set! s5-3 (-> a0-55 nickname)))))) ;; if we have the wrong vis (when (and (!= s5-3 (-> this vis-nick)) (-> *level* vis?)) ;; and we want a vis @@ -1865,41 +1170,27 @@ ;; find matching level and load vis (dotimes (s4-3 (-> *level* length)) (let ((v1-133 (-> *level* level s4-3))) - (when (= (-> v1-133 status) 'active) - (if (and (= (-> v1-133 nickname) (-> this vis-nick)) - (-> v1-133 inside-boxes?) ;; note: only start if we are inside boxes. - ) - (load-vis-info (-> this vis-nick) s5-3) - ) - ) - ) - ) - ) - ) - ) - 0 - ) + (when (= (-> v1-133 status) 'active) + (if (and (= (-> v1-133 nickname) (-> this vis-nick)) + (-> v1-133 inside-boxes?) ;; note: only start if we are inside boxes. + ) + (load-vis-info (-> this vis-nick) s5-3)))))))) + 0) ;; method 16 level-group (debug text stuff) (defmethod level-update ((this level-group)) - ;; this does nothing... (camera-pos) (new 'static 'boxed-array :type symbol :length 0 :allocated-length 2) - ;; compute the settings for this frame (update *setting-control*) - ;; run the art loading system (update *art-control* #t) (clear-rec *art-control*) - ;; run level loading! (dotimes (s5-0 2) - (load-continue (-> this level s5-0)) - ) - + (load-continue (-> this level s5-0))) ;; compute inside for each level (dotimes (s5-1 (-> this length)) (let ((s4-0 (-> this level s5-1))) @@ -1907,13 +1198,7 @@ (set! (-> s4-0 inside-boxes?) (point-in-boxes? s4-0 (-> *math-camera* trans))) (set! (-> s4-0 inside-sphere?) (>= (-> s4-0 bsp bsphere w) (-> s4-0 level-distance))) ;; being inside sets your meta-inside to #t. If you are outside, remember your old inside. - (if (-> s4-0 inside-boxes?) - (set! (-> s4-0 meta-inside?) #t) - ) - ) - ) - ) - + (if (-> s4-0 inside-boxes?) (set! (-> s4-0 meta-inside?) #t))))) ;; update load state machine (the level-border one) (update! *load-state*) ;; checkpoint assignment @@ -1921,36 +1206,22 @@ (let ((s4-1 (-> this level s5-2))) (when (= (-> s4-1 status) 'active) ;; if you're outside here, and inside somewhere else, kick out of meta inside. - (if (and (-> s4-1 inside-boxes?) (not (-> s4-1 other inside-boxes?))) - (set! (-> s4-1 other meta-inside?) #f) - ) + (if (and (-> s4-1 inside-boxes?) (not (-> s4-1 other inside-boxes?))) (set! (-> s4-1 other meta-inside?) #f)) (when (and (null? (-> this load-commands)) (= (-> s4-1 nickname) (-> *load-state* vis-nick)) (!= (-> s4-1 name) (-> *game-info* current-continue level)) - (-> *level* border?) - ) + (-> *level* border?)) (let ((s3-0 (the-as continue-point (car (-> s4-1 info continues))))) (let* ((s2-0 (target-pos 0)) (s4-2 (-> s4-1 info continues)) - (s1-0 (the-as continue-point (car s4-2))) - ) + (s1-0 (the-as continue-point (car s4-2)))) (while (not (null? s4-2)) (if (and (< (vector-vector-distance s2-0 (-> s1-0 trans)) (vector-vector-distance s2-0 (-> s3-0 trans))) - (zero? (-> s1-0 flags)) - ) - (set! s3-0 s1-0) - ) + (zero? (-> s1-0 flags))) + (set! s3-0 s1-0)) (set! s4-2 (cdr s4-2)) - (set! s1-0 (the-as continue-point (car s4-2))) - ) - ) - (set-continue! *game-info* s3-0) - ) - ) - ) - ) - ) - + (set! s1-0 (the-as continue-point (car s4-2))))) + (set-continue! *game-info* s3-0)))))) ;; determine vis info idx for each level (dotimes (v1-67 (-> this length)) (let ((a0-26 (-> this level v1-67))) @@ -1962,18 +1233,9 @@ ;; but if there's a second level that's active, search for a vis info for that level... (when (= (-> a0-26 other status) 'active) (dotimes (a1-10 8) - (if (and (-> a0-26 vis-info a1-10) - (= (-> a0-26 vis-info a1-10 from-level) (-> a0-26 other load-name)) - ) - ;; and store it in the adj index. - (set! (-> a0-26 vis-adj-index) a1-10) - ) - ) - ) - ) - ) - ) - + (if (and (-> a0-26 vis-info a1-10) (= (-> a0-26 vis-info a1-10 from-level) (-> a0-26 other load-name))) + ;; and store it in the adj index. + (set! (-> a0-26 vis-adj-index) a1-10))))))) ;; display level vis info (when *display-level-border* (dotimes (s5-3 (-> this length)) @@ -1982,26 +1244,14 @@ (let ((s3-1 (-> s4-3 bsp current-bsp-back-flags))) (dotimes (s2-1 6) (when (and (logtest? s3-1 3) (-> s4-3 vis-info (+ s2-1 1))) - (let - ((v1-88 (lookup-level-info (-> s4-3 vis-info (+ s2-1 1) from-level)))) - (format - *stdcon* - " ~A -> ~A: load: ~A display: ~A~%" - (-> s4-3 name) - (-> v1-88 name) - (logtest? s3-1 1) - (logtest? s3-1 2) - ) - ) - ) - (set! s3-1 (shr s3-1 2)) - ) - ) - ) - ) - ) - ) - + (let ((v1-88 (lookup-level-info (-> s4-3 vis-info (+ s2-1 1) from-level)))) + (format *stdcon* + " ~A -> ~A: load: ~A display: ~A~%" + (-> s4-3 name) + (-> v1-88 name) + (logtest? s3-1 1) + (logtest? s3-1 2)))) + (set! s3-1 (shr s3-1 2)))))))) ;; if we have vis for level A, but we aren't "in" it, display an error and ;; force us out of the other level. Ideally the boxes and the load boundary system ;; will be consistent and there is no way to set a vis to a level that we aren't in. @@ -2011,110 +1261,64 @@ (let ((s4-4 (-> this level s5-4))) (when (= (-> s4-4 status) 'active) (when (and (= (-> s4-4 nickname) (-> *load-state* vis-nick)) ;; vis for A - (not (-> s4-4 inside-boxes?)) ;; but not in A + (not (-> s4-4 inside-boxes?)) ;; but not in A ) (if (and (= *cheat-mode* 'debug) (-> s4-4 other inside-boxes?)) - (format - *stdcon* - "~3LForcing outside of ~A [bad split boxes]~%~0L" - (-> s4-4 other name) - ) - ) - (set! (-> s4-4 other inside-boxes?) #f) - ) - ) - ) - ) + (format *stdcon* "~3LForcing outside of ~A [bad split boxes]~%~0L" (-> s4-4 other name))) + (set! (-> s4-4 other inside-boxes?) #f))))) ;; if we are outside of the boxes, we consider ourselves "outside of bsp" ;; if we are outside of both levels boxes, then we don't really know what to do ;; for vis, and we can display the classic "outside of bsp" error. (cond ((not (or (-> this level0 inside-boxes?) (-> this level1 inside-boxes?))) (when (or (-> this level0 vis-info 0) (-> this level1 vis-info 0)) - (if (= *cheat-mode* 'debug) - (format *stdcon* "~3Loutside of bsp~%~0L") - ) - ) - ) + (if (= *cheat-mode* 'debug) (format *stdcon* "~3Loutside of bsp~%~0L")))) (else - ;; we are in at least one bsp. - ;; now we need to link vis info to bsps. - (dotimes (v1-125 (-> this length)) - (let ((a0-44 (-> this level v1-125))) - (when (= (-> a0-44 status) 'active) - ;; loop over vis infos - (dotimes (a1-17 8) - (let ((a2-18 (-> a0-44 vis-info a1-17))) - (when a2-18 - ;; clear bit 31 - (set! (-> a2-18 flags) (logand (the-as uint #xffffffff7fffffff) (-> a2-18 flags))) - ;; link info to bsp - (cond - ((= a1-17 (-> a0-44 vis-self-index)) - (set! (-> a2-18 from-bsp) (-> a0-44 bsp)) - ) - ((= a1-17 (-> a0-44 vis-adj-index)) - (set! (-> a2-18 from-bsp) (-> a0-44 other bsp)) - ) - (else - (set! (-> a2-18 from-bsp) #f) - ) - ) - ) - ) - ) - - ;; now, handle setting bit 31 (maybe single vis mode?) - (cond - ;; special display self mode. - ((= (-> a0-44 display?) 'display-self) - (let ((a0-46 (-> a0-44 vis-info (-> a0-44 vis-self-index)))) - (if a0-46 - (set! (-> a0-46 flags) (the-as uint (logior (shl #x8000 16) (-> a0-46 flags)))) - ) - ) - ) - ;; in this level, but not the other, only use vis for this. - ((and (-> a0-44 inside-boxes?) (not (-> a0-44 other inside-boxes?))) - (let ((a0-48 (-> a0-44 vis-info (-> a0-44 vis-self-index)))) - (if a0-48 - (set! (-> a0-48 flags) (the-as uint (logior (shl #x8000 16) (-> a0-48 flags)))) - ) - ) - ) - ;; only in other level, only use vis for other. - ((-> a0-44 other inside-boxes?) - (let ((a0-50 (-> a0-44 vis-info (-> a0-44 vis-adj-index)))) - (if a0-50 - (set! (-> a0-50 flags) (the-as uint (logior (shl #x8000 16) (-> a0-50 flags)))) - ) - ) - ) - ) - ) - ) - ) - ) - ) + ;; we are in at least one bsp. + ;; now we need to link vis info to bsps. + (dotimes (v1-125 (-> this length)) + (let ((a0-44 (-> this level v1-125))) + (when (= (-> a0-44 status) 'active) + ;; loop over vis infos + (dotimes (a1-17 8) + (let ((a2-18 (-> a0-44 vis-info a1-17))) + (when a2-18 + ;; clear bit 31 + (set! (-> a2-18 flags) (logand (the-as uint #xffffffff7fffffff) (-> a2-18 flags))) + ;; link info to bsp + (cond + ((= a1-17 (-> a0-44 vis-self-index)) (set! (-> a2-18 from-bsp) (-> a0-44 bsp))) + ((= a1-17 (-> a0-44 vis-adj-index)) (set! (-> a2-18 from-bsp) (-> a0-44 other bsp))) + (else (set! (-> a2-18 from-bsp) #f)))))) + ;; now, handle setting bit 31 (maybe single vis mode?) + (cond + ;; special display self mode. + ((= (-> a0-44 display?) 'display-self) + (let ((a0-46 (-> a0-44 vis-info (-> a0-44 vis-self-index)))) + (if a0-46 (set! (-> a0-46 flags) (the-as uint (logior (shl #x8000 16) (-> a0-46 flags))))))) + ;; in this level, but not the other, only use vis for this. + ((and (-> a0-44 inside-boxes?) (not (-> a0-44 other inside-boxes?))) + (let ((a0-48 (-> a0-44 vis-info (-> a0-44 vis-self-index)))) + (if a0-48 (set! (-> a0-48 flags) (the-as uint (logior (shl #x8000 16) (-> a0-48 flags))))))) + ;; only in other level, only use vis for other. + ((-> a0-44 other inside-boxes?) + (let ((a0-50 (-> a0-44 vis-info (-> a0-44 vis-adj-index)))) + (if a0-50 (set! (-> a0-50 flags) (the-as uint (logior (shl #x8000 16) (-> a0-50 flags))))))))))))) (when (or *display-level-border* *display-texture-download* *display-split-box-info*) (when *display-level-border* - (format *stdcon* " want: ~A ~A/~A ~A ~A/~A~%" + (format *stdcon* + " want: ~A ~A/~A ~A ~A/~A~%" (-> *load-state* want 0 name) (-> *load-state* want 0 display?) (-> *load-state* want 0 force-vis?) (-> *load-state* want 1 name) (-> *load-state* want 1 display?) - (-> *load-state* want 1 force-vis?) - ) - (format *stdcon* " nick ~A cur ~S cont ~A~%~%" + (-> *load-state* want 1 force-vis?)) + (format *stdcon* + " nick ~A cur ~S cont ~A~%~%" (-> *load-state* vis-nick) - (let ((lev-name (and *target* (-> *target* current-level name)))) - (if lev-name - (symbol->string lev-name) - ) - ) - (-> *game-info* current-continue name) - ) + (let ((lev-name (and *target* (-> *target* current-level name)))) (if lev-name (symbol->string lev-name))) + (-> *game-info* current-continue name)) ; (let ((t9-16 format) ; (a0-53 *stdcon*) ; (a1-49 " nick ~A cur ~S cont ~A~%~%") @@ -2136,98 +1340,75 @@ (dotimes (s5-5 (-> this length)) (let ((s4-5 (-> this level s5-5))) (when (= (-> s4-5 status) 'active) - (format *stdcon* "~A: ~S ~A~%" - (-> s4-5 name) - (if (point-in-boxes? s4-5 (-> *math-camera* trans)) - "inside" - ) - (-> s4-5 display?) - ) + (format *stdcon* + "~A: ~S ~A~%" + (-> s4-5 name) + (if (point-in-boxes? s4-5 (-> *math-camera* trans)) "inside") + (-> s4-5 display?)) (when *display-texture-download* (format *stdcon* " tfrag: ~8,,0m " (-> s4-5 closest-object 0)) (format *stdcon* " shrub: ~8,,0m " (-> s4-5 closest-object 2)) - (format *stdcon* " alpha: ~8,,0m #x~8X~%"(-> s4-5 closest-object 3) (-> s4-5 texture-mask 8)) + (format *stdcon* " alpha: ~8,,0m #x~8X~%" (-> s4-5 closest-object 3) (-> s4-5 texture-mask 8)) (format *stdcon* " tie: ~8,,0m " (-> s4-5 closest-object 5)) (format *stdcon* " fg-tf: ~8,,0m " (-> s4-5 closest-object 6)) - (format *stdcon* " fg-pr: ~8,,0m #x~8X~%"(-> s4-5 closest-object 7) (-> s4-5 texture-mask 7)) - (format *stdcon* " tf: ~8D pr: ~8D sh: ~8D al: ~8D wa: ~8D~%~1K" - (-> s4-5 upload-size 0) - (-> s4-5 upload-size 1) - (-> s4-5 upload-size 2) - (-> s4-5 upload-size 3) - (-> s4-5 upload-size 4) - ) - ) - (if *display-split-box-info* - (debug-print-splitbox s4-5 (-> *math-camera* trans) *stdcon*) - ) - ) - ) - ) - ) - + (format *stdcon* " fg-pr: ~8,,0m #x~8X~%" (-> s4-5 closest-object 7) (-> s4-5 texture-mask 7)) + (format *stdcon* + " tf: ~8D pr: ~8D sh: ~8D al: ~8D wa: ~8D~%~1K" + (-> s4-5 upload-size 0) + (-> s4-5 upload-size 1) + (-> s4-5 upload-size 2) + (-> s4-5 upload-size 3) + (-> s4-5 upload-size 4))) + (if *display-split-box-info* (debug-print-splitbox s4-5 (-> *math-camera* trans) *stdcon*)))))) ;; tell PC port about our levels - (__pc-set-levels - (if (symbol-member? (-> this level0 status) '(active alive loaded)) (symbol->string (bsp-name (-> this level0))) "none") - (if (symbol-member? (-> this level1 status) '(active alive loaded)) (symbol->string (bsp-name (-> this level1))) "none") - ) - - 0 - ) + (__pc-set-levels (if (symbol-member? (-> this level0 status) '(active alive loaded)) (symbol->string (bsp-name (-> this level0))) "none") + (if (symbol-member? (-> this level1 status) '(active alive loaded)) (symbol->string (bsp-name (-> this level1))) "none")) + 0) (defun-debug show-level ((level-name symbol)) (set! (-> *setting-control* default border-mode) #t) (load-state-want-levels (-> (level-get-target-inside *level*) name) level-name) (load-state-want-display-level level-name 'display) - 0 - ) + 0) ;; init art buffers and engines (defconstant FOREGROUND_DRAW_MAX_COUNT_0 (* PROCESS_HEAP_MULT 280)) + (defconstant FOREGROUND_DRAW_MAX_COUNT_2 (* PROCESS_HEAP_MULT 16)) + (defconstant DEFAULT_DRAW_MAX_COUNT_0 (* PROCESS_HEAP_MULT 280)) + (defconstant DEFAULT_DRAW_MAX_COUNT_2 (* PROCESS_HEAP_MULT 10)) + (when (zero? (-> *level* level0 art-group)) (let ((lev-group *level*)) - (set! (-> lev-group vis?) #f) - (set! (-> lev-group loading-level) (-> lev-group level-default)) - (set! (-> lev-group level0 art-group) (new 'global 'load-dir-art-group 50 (-> lev-group level0))) - (set! (-> lev-group level0 foreground-draw-engine 0) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_0)) - (set! (-> lev-group level0 foreground-draw-engine 1) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_0)) - (set! (-> lev-group level0 foreground-draw-engine 2) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_2)) - (set! (-> lev-group level1 art-group) (new 'global 'load-dir-art-group 50 (-> lev-group level1))) - (set! (-> lev-group level1 foreground-draw-engine 0) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_0)) - (set! (-> lev-group level1 foreground-draw-engine 1) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_0)) - (set! (-> lev-group level1 foreground-draw-engine 2) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_2)) - (set! (-> lev-group level-default art-group) (new 'global 'load-dir-art-group 50 (-> lev-group level1))) - (set! (-> lev-group level-default foreground-draw-engine 0) (new 'global 'engine 'draw DEFAULT_DRAW_MAX_COUNT_0)) - (set! (-> lev-group level-default foreground-draw-engine 1) (new 'global 'engine 'draw DEFAULT_DRAW_MAX_COUNT_2)) - (set! (-> lev-group level0 other) (-> lev-group level1)) - (set! (-> lev-group level1 other) (-> lev-group level0)) - (set! (-> lev-group level-default other) #f) - (dotimes (i 2) - (let ((lev (-> lev-group level i))) - (set! (-> lev vis-bits) (malloc 'global 2048)) - (vis-clear lev) - ) - ) - (dotimes (i 3) - (let ((lev (-> lev-group level i))) - (set! (-> lev linking) #f) - (dotimes (ii 3) - (set! (-> lev foreground-sink-group ii level) lev) - ) - ) - ) - ) - ) - + (set! (-> lev-group vis?) #f) + (set! (-> lev-group loading-level) (-> lev-group level-default)) + (set! (-> lev-group level0 art-group) (new 'global 'load-dir-art-group 50 (-> lev-group level0))) + (set! (-> lev-group level0 foreground-draw-engine 0) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_0)) + (set! (-> lev-group level0 foreground-draw-engine 1) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_0)) + (set! (-> lev-group level0 foreground-draw-engine 2) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_2)) + (set! (-> lev-group level1 art-group) (new 'global 'load-dir-art-group 50 (-> lev-group level1))) + (set! (-> lev-group level1 foreground-draw-engine 0) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_0)) + (set! (-> lev-group level1 foreground-draw-engine 1) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_0)) + (set! (-> lev-group level1 foreground-draw-engine 2) (new 'global 'engine 'draw FOREGROUND_DRAW_MAX_COUNT_2)) + (set! (-> lev-group level-default art-group) (new 'global 'load-dir-art-group 50 (-> lev-group level1))) + (set! (-> lev-group level-default foreground-draw-engine 0) (new 'global 'engine 'draw DEFAULT_DRAW_MAX_COUNT_0)) + (set! (-> lev-group level-default foreground-draw-engine 1) (new 'global 'engine 'draw DEFAULT_DRAW_MAX_COUNT_2)) + (set! (-> lev-group level0 other) (-> lev-group level1)) + (set! (-> lev-group level1 other) (-> lev-group level0)) + (set! (-> lev-group level-default other) #f) + (dotimes (i 2) + (let ((lev (-> lev-group level i))) (set! (-> lev vis-bits) (malloc 'global 2048)) (vis-clear lev))) + (dotimes (i 3) + (let ((lev (-> lev-group level i))) + (set! (-> lev linking) #f) + (dotimes (ii 3) + (set! (-> lev foreground-sink-group ii level) lev)))))) (defmacro test-play () `(begin ;; before calling play, the C Kernel would set this. (define *kernel-boot-message* 'play) (load-package "game" global) - (play #t #t) - ) - ) + (play #t #t))) diff --git a/goal_src/jak1/engine/level/load-boundary-data.gc b/goal_src/jak1/engine/level/load-boundary-data.gc index c98bbdf211..4b4473a879 100644 --- a/goal_src/jak1/engine/level/load-boundary-data.gc +++ b/goal_src/jak1/engine/level/load-boundary-data.gc @@ -1,1102 +1,1500 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/level/load-boundary.gc") -;; name: load-boundary-data.gc -;; name in dgo: load-boundary-data -;; dgos: GAME, ENGINE - ;; this file is (mostly) generated. see ---lb-save - ;; reset boundary in editor (set! (-> *lb-editor-parms* boundary) #f) ;; reset all existing load boundaries (set! *load-boundary-list* (the-as load-boundary #f)) -(define *static-load-boundary-list* (static-lb-list - -(static-load-boundary :flags () - :top 404182.7500 :bot -524288.0000 - :points ( 4161991.7500 -13086341.0000 4414040.5000 -12784800.0000 4706984.5000 -13037610.0000 ) - :fwd (checkpt "maincave-start" #f) - ) - -(static-load-boundary :flags (player ) - :top 335938.0000 :bot 140849.5312 - :points ( 4397294.5000 -14125599.0000 4545135.5000 -14064108.0000 ) - :bwd (checkpt "village3-start" #f) - ) - -(static-load-boundary :flags (player ) - :top 302707.5937 :bot 144615.2031 - :points ( 4420238.5000 -13645623.0000 4595041.0000 -13553850.0000 ) - :fwd (checkpt "village3-farside" #f) - ) - -(static-load-boundary :flags (player ) - :top 383504.5937 :bot 120699.8515 - :points ( 4445610.0000 -14468618.0000 4343087.0000 -14334280.0000 ) - :bwd (checkpt "village3-farside" #f) - ) - -(static-load-boundary :flags (player ) - :top 318034.5625 :bot 119907.0625 - :points ( 4952800.5000 -14636175.0000 5113453.5000 -14560723.0000 ) - :bwd (checkpt "village3-farside" #f) - ) - -(static-load-boundary :flags (closed ) - :top 742498.5625 :bot -727105.8750 - :points ( 4214055.0000 -14490533.0000 4286877.5000 -13964385.0000 4509959.5000 -14260475.0000 4466017.5000 -14619070.0000 ) - :fwd (vis vi3 #f) - :bwd (display snow display) - ) - -(static-load-boundary :flags () - :top 524288.0000 :bot -524288.0000 - :points ( 1123579.8750 -6421303.0000 1006257.0000 -6823930.5000 ) - :fwd (checkpt "village2-start" #f) - :bwd (checkpt "village2-dock" #f) - ) - -(static-load-boundary :flags (player ) - :top 1051944.6250 :bot 888765.5625 - :points ( 3366128.0000 -13638805.0000 3362401.7500 -13489235.0000 ) - :fwd (checkpt "snow-outside-fort" #f) - ) - -(static-load-boundary :flags (player ) - :top 1220937.6250 :bot 1035428.8750 - :points ( 2930553.2500 -14107145.0000 3128871.7500 -14038774.0000 ) - :fwd (checkpt "snow-by-ice-lake-alt" #f) - ) - -(static-load-boundary :flags (player ) - :top 1094292.3750 :bot 858838.2500 - :points ( 3677046.7500 -13838594.0000 3773559.7500 -13867715.0000 3837479.7500 -13675041.0000 3663758.2500 -13804749.0000 ) - :bwd (checkpt "snow-pass-to-fort" #f) - ) - -(static-load-boundary :flags () - :top 104778.3359 :bot -424794.8437 - :points ( 11249043.0000 -18841486.0000 11604685.0000 -18827730.0000 ) - :fwd (checkpt "citadel-start" #f) - :bwd (checkpt "citadel-start" #f) - ) - -(static-load-boundary :flags (closed ) - :top 1470264.6250 :bot -524288.0000 - :points ( 11253410.0000 -19459740.0000 11298895.0000 -19163528.0000 11606400.0000 -19156774.0000 11646273.0000 -19462514.0000 ) - :fwd (display citadel display) - :bwd (display citadel special) - ) - -(static-load-boundary :flags () - :top 294119.1875 :bot 213916.9062 - :points ( 11495250.0000 -19186980.0000 11398090.0000 -19190674.0000 ) - :fwd (display finalboss #f) - :bwd (display finalboss display) - ) - -(static-load-boundary :flags () - :top 408146.5312 :bot -227129.8125 - :points ( 5624547.0000 -11755375.0000 5604783.5000 -11539414.0000 5326020.0000 -11550233.0000 5180106.5000 -11499346.0000 5148654.0000 -11322573.0000 ) - :fwd (display maincave special) - :bwd (display maincave display) - ) - -(static-load-boundary :flags () - :top 524288.0000 :bot -524288.0000 - :points ( 568817.3125 -9466220.0000 1127492.5000 -9043683.0000 ) - :bwd (load ogre village2) - ) - -(static-load-boundary :flags () - :top 524288.0000 :bot -524288.0000 - :points ( 719872.1250 -6597869.0000 1159159.1250 -6425164.5000 1041836.2500 -6827792.0000 ) - :fwd (display rolling display) - ) - -(static-load-boundary :flags () - :top 363883.3125 :bot -524288.0000 - :points ( 710516.0000 -605717.3125 777812.3750 -117024.5234 ) - :fwd (display jungle display) - ) - -(static-load-boundary :flags () - :top 263663.4375 :bot 1585.5251 - :points ( -677970.9375 -6693857.0000 -802274.3125 -6692809.0000 ) - :fwd (display village2 #f) - :bwd (display village2 special-vis) - ) - -(static-load-boundary :flags () - :top 276440.1875 :bot -524288.0000 - :points ( -1054117.3750 -7015874.0000 -1180891.2500 -6733353.5000 -911788.3750 -6482925.0000 ) - :fwd (display village2 special-vis) - :bwd (display village2 #f) - ) - -(static-load-boundary :flags (player ) - :top 1064497.0000 :bot 893654.6250 - :points ( 3369717.2500 -13470538.0000 3489005.0000 -13470209.0000 ) - :fwd (checkpt "snow-outside-fort" #f) - :bwd (checkpt "snow-fort" #f) - ) - -(static-load-boundary :flags (player ) - :top 60515.0625 :bot -64214.7187 - :points ( 11902198.0000 -19492924.0000 11856455.0000 -19580640.0000 ) - :fwd (checkpt "citadel-generator-end" #f) - ) - -(static-load-boundary :flags (player ) - :top 87535.5390 :bot -29596.9101 - :points ( 11275635.0000 -19680194.0000 11230883.0000 -19653924.0000 ) - :fwd (checkpt "citadel-plat-end" #f) - ) - -(static-load-boundary :flags (player ) - :top 66328.7968 :bot -101805.4609 - :points ( 11021305.0000 -19546493.0000 10991630.0000 -19494320.0000 ) - :fwd (checkpt "citadel-launch-end" #f) - ) - -(static-load-boundary :flags (player ) - :top -451749.1250 :bot -610039.6875 - :points ( 3050601.7500 -6609894.0000 2987056.5000 -6462185.5000 ) - :fwd (load sunken sunkenb) - :bwd (load sunken village2) - ) - -(static-load-boundary :flags (player ) - :top 247477.6718 :bot -148711.2500 - :points ( 5555559.5000 -11770044.0000 5324678.0000 -11402115.0000 ) - :fwd (checkpt "robocave-bottom" #f) - ) - -(static-load-boundary :flags (player ) - :top 178704.3906 :bot -135168.0000 - :points ( 8996384.0000 -14239175.0000 9096633.0000 -13873403.0000 ) - :fwd (checkpt "lavatube-middle" #f) - :bwd (checkpt "lavatube-middle" #f) - ) - -(static-load-boundary :flags () - :top 322923.3437 :bot 4096.0000 - :points ( 5678575.5000 -14614474.0000 5457999.0000 -14391688.0000 ) - :fwd (checkpt "lavatube-start" #f) - :bwd (checkpt "lavatube-start" #f) - ) - -(static-load-boundary :flags () - :top 482151.9687 :bot 69896.2500 - :points ( 869008.6250 -8462477.0000 644078.7500 -8259235.5000 ) - :fwd (checkpt "ogre-race" #f) - :bwd (checkpt "ogre-race" #f) - ) - -(static-load-boundary :flags () - :top 339769.8125 :bot -46839.7500 - :points ( -211696.2968 -784710.7500 49935.1484 -742140.3125 ) - :fwd (checkpt "firecanyon-start" #f) - :bwd (checkpt "firecanyon-start" #f) - ) - -(static-load-boundary :flags () - :top 321734.2187 :bot 33164.3789 - :points ( 1472616.7500 -5741056.5000 1161522.7500 -5738810.0000 ) - :fwd (checkpt "firecanyon-end" #f) - :bwd (checkpt "firecanyon-end" #f) - ) - -(static-load-boundary :flags (player ) - :top 164632.7343 :bot -17573.1718 - :points ( 1651940.5000 -8481208.0000 1575238.2500 -8380055.5000 ) - :fwd (checkpt "swamp-dock2" #f) - :bwd (checkpt "swamp-cave1" #f) - ) - -(static-load-boundary :flags (player ) - :top 108378.7421 :bot -18630.2011 - :points ( 1381972.8750 -8272129.5000 1309181.3750 -8143856.5000 ) - :fwd (checkpt "swamp-dock1" #f) - :bwd (checkpt "swamp-start" #f) - ) - -(static-load-boundary :flags (player ) - :top 237131.7500 :bot 116405.6328 - :points ( 4134430.0000 -12531289.0000 4249137.0000 -12480849.0000 ) - :bwd (checkpt "maincave-to-darkcave" #f) - ) - -(static-load-boundary :flags (player ) - :top -432061.9062 :bot -714884.0625 - :points ( 2624020.7500 -7238923.5000 2730103.5000 -7108117.5000 ) - :fwd (checkpt "sunken-tube1" #f) - ) - -(static-load-boundary :flags (closed ) - :top 1552977.3750 :bot -524288.0000 - :points ( 11253410.0000 -19459740.0000 11298895.0000 -19163528.0000 11606400.0000 -19156774.0000 11646273.0000 -19462514.0000 ) - :bwd (vis fin #f) - ) - -(static-load-boundary :flags (closed ) - :top 739722.6875 :bot -524288.0000 - :points ( 11253410.0000 -19459740.0000 11298895.0000 -19163528.0000 11606400.0000 -19156774.0000 11646273.0000 -19462514.0000 ) - :fwd (vis cit #f) - ) - -(static-load-boundary :flags (closed ) - :top -37128.2734 :bot -568353.0000 - :points ( 10635460.0000 -19261390.0000 10641390.0000 -18641098.0000 11673320.0000 -18631850.0000 11992955.0000 -19068516.0000 ) - :fwd (load citadel lavatube) - ) - -(static-load-boundary :flags (closed ) - :top 30786.0390 :bot -568353.0000 - :points ( 10853810.0000 -19982956.0000 10857980.0000 -18851744.0000 11800185.0000 -18657540.0000 12119948.0000 -19841458.0000 ) - :bwd (load citadel finalboss) - ) - -(static-load-boundary :flags () - :top 532744.0625 :bot 222822.3125 - :points ( 10045198.0000 -16826564.0000 10052340.0000 -16500909.0000 ) - :fwd (load lavatube citadel) - ) - -(static-load-boundary :flags () - :top 104778.3359 :bot -424794.8437 - :points ( 11261218.0000 -18621614.0000 11616860.0000 -18607858.0000 ) - :fwd (vis cit #f) - ) - -(static-load-boundary :flags () - :top 104778.3359 :bot -194295.7500 - :points ( 11220495.0000 -18577436.0000 11172783.0000 -18123988.0000 ) - :bwd (vis lav #f) - ) - -(static-load-boundary :flags () - :top 104778.3359 :bot -194295.7500 - :points ( 11067174.0000 -18596720.0000 11019460.0000 -18143273.0000 ) - :fwd (display citadel display) - :bwd (display citadel #f) - ) - -(static-load-boundary :flags () - :top 303302.0937 :bot -28407.7460 - :points ( 1482670.0000 -13217540.0000 1703776.3750 -13157055.0000 ) - :fwd (load ogre village3) - ) - -(static-load-boundary :flags (closed player ) - :top 810280.1875 :bot -196608.0000 - :points ( 3324084.2500 -13758485.0000 3324084.2500 -13553685.0000 3528884.2500 -13553685.0000 3528884.2500 -13758485.0000 ) - :bwd (checkpt "snow-outside-fort" #f) - ) - -(static-load-boundary :flags (player ) - :top 1170068.3750 :bot 988919.6875 - :points ( 2574083.2500 -13973545.0000 2427817.5000 -13884534.0000 ) - :fwd (checkpt "snow-across-from-flut" #f) - :bwd (checkpt "snow-flut-flut" #f) - ) - -(static-load-boundary :flags () - :top 389780.5000 :bot 201622.1406 - :points ( 4218813.0000 -14413355.0000 4331064.0000 -14524060.0000 ) - :fwd (load village3 maincave) - ) - -(static-load-boundary :flags () - :top 320479.0000 :bot -64214.6718 - :points ( 6465568.5000 -14156115.0000 6450754.5000 -13712894.0000 ) - :fwd (display village3 #f) - :bwd (display village3 display) - ) - -(static-load-boundary :flags () - :top 361505.0312 :bot 141642.4062 - :points ( 5280860.0000 -14529410.0000 5363850.0000 -14811145.0000 ) - :bwd (vis lav #f) - ) - -(static-load-boundary :flags () - :top 361505.0312 :bot 141642.4062 - :points ( 5192246.0000 -14612985.0000 4946641.5000 -14744985.0000 ) - :fwd (vis vi3 #f) - ) - -(static-load-boundary :flags () - :top 361505.0312 :bot 141642.4062 - :points ( 5145395.0000 -14585060.0000 4969281.0000 -14637079.0000 ) - :fwd (display lavatube #f) - :bwd (display lavatube display) - ) - -(static-load-boundary :flags () - :top 1275705.7500 :bot 885660.6875 - :points ( 4210123.5000 -14454620.0000 4252965.5000 -14048015.0000 ) - :bwd (vis sno #f) - ) - -(static-load-boundary :flags () - :top 194295.7656 :bot -524288.0000 - :points ( 1993232.0000 -7776360.5000 1646617.0000 -7919841.0000 1546310.5000 -7956902.0000 1497602.8750 -8055146.5000 1350810.2500 -7725342.0000 ) - :fwd (display village2 display) - :bwd (display village2 special-vis) - ) - -(static-load-boundary :flags () - :top 415367.1250 :bot -20612.1289 - :points ( 1473631.5000 -1157821.2500 1414393.3750 -1193464.1250 1354583.2500 -1238710.7500 1291658.0000 -1325844.0000 1151230.6250 -1642343.8750 ) - :fwd (display village1 display) - :bwd (display village1 special-vis) - ) - -(static-load-boundary :flags () - :top 319289.8125 :bot 97180.9062 - :points ( 3967407.0000 -12047450.0000 3919676.7500 -12152098.0000 ) - :fwd (vis dar #f) - ) - -(static-load-boundary :flags () - :top 319289.8125 :bot 97180.9062 - :points ( 4037056.5000 -12145660.0000 3932723.0000 -12180870.0000 ) - :bwd (vis mai #f) - ) - -(static-load-boundary :flags () - :top 401275.8437 :bot -524288.0000 - :points ( 3809930.2500 -13126660.0000 4387680.5000 -12726350.0000 4965741.5000 -12733760.0000 ) - :fwd (load village3 maincave) - ) - -(static-load-boundary :flags (closed ) - :top 897222.0000 :bot -455448.6875 - :points ( 4214055.0000 -14490533.0000 4286877.5000 -13964385.0000 4509959.5000 -14260475.0000 4466017.5000 -14619070.0000 ) - :fwd (display snow #f) - :bwd (display snow display) - ) - -(static-load-boundary :flags (closed ) - :top 330785.0000 :bot -783128.6875 - :points ( 4214055.0000 -14490533.0000 4245485.0000 -14027390.0000 4509959.5000 -14260475.0000 4466017.5000 -14619070.0000 ) - :bwd (load village3 snow) - ) - -(static-load-boundary :flags () - :top 324244.6562 :bot -524288.0000 - :points ( -385887.9687 -7048725.0000 -652583.3125 -7045665.0000 ) - :fwd (display village2 display) - :bwd (display village2 special-vis) - ) - -(static-load-boundary :flags () - :top 291779.5312 :bot 185641.2343 - :points ( -556363.6875 -6215175.0000 -677982.3125 -6112309.0000 -462479.2500 -5758803.0000 ) - :fwd (display village2 special-vis) - :bwd (display village2 #f) - ) - -(static-load-boundary :flags () - :top 449040.3125 :bot -98105.8125 - :points ( 1507840.8750 -1133057.6250 1611146.1250 -1038699.5625 ) - :fwd (display village1 #f) - :bwd (display village1 display) - ) - -(static-load-boundary :flags () - :top 442784.2812 :bot -39440.5351 - :points ( 1899973.8750 -1546112.1250 1741479.5000 -1291697.1250 1490514.8750 -1133170.3750 ) - :fwd (display village1 #f) - :bwd (display village1 special-vis) - ) - -(static-load-boundary :flags () - :top 390797.4687 :bot -106231.7421 - :points ( 1625981.7500 -982050.1250 1826157.5000 -984055.0000 1963614.8750 -752705.0625 ) - :fwd (display village1 special-vis) - :bwd (display village1 display) - ) - -(static-load-boundary :flags () - :top 319289.8125 :bot 97180.9062 - :points ( 4060842.2500 -12186625.0000 3956508.7500 -12221835.0000 ) - :fwd (display darkcave display) - :bwd (display darkcave #f) - ) - -(static-load-boundary :flags () - :top 561218.0000 :bot -20347.8750 - :points ( 5015965.5000 -12265124.0000 4969636.0000 -12062795.0000 ) - :fwd (display robocave display) - :bwd (display robocave #f) - ) - -(static-load-boundary :flags () - :top 289560.7812 :bot -524288.0000 - :points ( 4160078.2500 -13363984.0000 4657438.0000 -13195000.0000 ) - :bwd (vis mai #f) - ) - -(static-load-boundary :flags () - :top 333031.1875 :bot -77890.0937 - :points ( 4321252.0000 -13451169.0000 4538566.5000 -13427408.0000 ) - :fwd (vis vi3 #f) - ) - -(static-load-boundary :flags () - :top 331577.7187 :bot -524288.0000 - :points ( 4510445.5000 -13872985.0000 4620850.5000 -14134173.0000 4822450.0000 -13951485.0000 ) - :bwd (load village3 maincave) - ) - -(static-load-boundary :flags () - :top 355162.8437 :bot -524288.0000 - :points ( 4346461.0000 -14010600.0000 4474615.5000 -13949533.0000 ) - :fwd (display ogre #f) - :bwd (display ogre display) - ) - -(static-load-boundary :flags () - :top 198788.1406 :bot -524288.0000 - :points ( 2287878.0000 -13944549.0000 2434369.7500 -13646915.0000 ) - :fwd (display village3 display) - :bwd (display village3 #f) - ) - -(static-load-boundary :flags (closed player ) - :top -626555.7500 :bot -524288.0000 - :points ( 2344408.2500 -7388373.0000 2348460.5000 -7279539.0000 2466947.7500 -7247920.5000 2439049.2500 -7385641.0000 ) - :bwd (checkpt "sunken2" #f) - ) - -(static-load-boundary :flags (player ) - :top -451749.1250 :bot -610039.6875 - :points ( 3063970.5000 -6604280.5000 3000425.2500 -6456572.0000 ) - :fwd (checkpt "sunken1" #f) - :bwd (checkpt "sunken-start" #f) - ) - -(static-load-boundary :flags () - :top -899402.0625 :bot -1098784.5000 - :points ( 2282077.5000 -6677879.5000 2080828.7500 -6613302.0000 ) - :fwd (vis sun #f) - :bwd (vis sub #f) - ) - -(static-load-boundary :flags () - :top -432061.9062 :bot -714884.0625 - :points ( 2715718.5000 -7342267.0000 2815001.5000 -7150704.5000 ) - :fwd (display sunkenb display) - :bwd (display sunkenb #f) - ) - -(static-load-boundary :flags () - :top 206253.4218 :bot -524288.0000 - :points ( 1430296.8750 -5984384.0000 1438999.2500 -6119296.0000 1420048.6250 -6125594.0000 ) - :fwd (display firecanyon display) - :bwd (display firecanyon #f) - ) - -(static-load-boundary :flags (player ) - :top 262804.6875 :bot -524288.0000 - :points ( 2140291.2500 -6096639.0000 1590722.7500 -6463647.0000 1413458.0000 -6340959.0000 1149150.7500 -6278411.0000 1219588.5000 -6039556.5000 ) - :fwd (load firecanyon village2) - ) - -(static-load-boundary :flags (player ) - :top 141113.7968 :bot -524288.0000 - :points ( 1980493.5000 -7897138.0000 2047652.3750 -7873304.0000 2060152.6250 -7931657.5000 1993817.2500 -7976457.0000 ) - :fwd (checkpt "swamp-cave3" #f) - ) - -(static-load-boundary :flags (player ) - :top 99096.7968 :bot -524288.0000 - :points ( 1975605.3750 -8630552.0000 1975421.3750 -8528661.0000 ) - :fwd (checkpt "swamp-cave2" #f) - ) - -(static-load-boundary :flags (player ) - :top 255537.5625 :bot -524288.0000 - :points ( -1005929.1250 4193984.0000 -872937.1875 4300299.0000 -756972.8125 4208626.0000 -1025873.1875 4087144.5000 ) - :fwd (checkpt "misty-silo2" #f) - ) - -(static-load-boundary :flags (player ) - :top 145077.7031 :bot -524288.0000 - :points ( -376094.4062 4543663.0000 -376094.4062 4748463.0000 ) - :fwd (checkpt "misty-backside" #f) - ) - -(static-load-boundary :flags (player ) - :top 137771.2500 :bot -524288.0000 - :points ( 404573.1875 4098422.0000 236215.7656 4114074.5000 ) - :fwd (checkpt "misty-bike" #f) - ) - -(static-load-boundary :flags (closed player ) - :top 74968.5468 :bot -616976.4375 - :points ( 1453916.1250 -987016.1875 1461937.5000 -967184.7500 1482761.0000 -957298.8125 1505932.0000 -966185.3750 1514189.1250 -989654.3750 1503102.1250 -1010133.6875 1481864.2500 -1017569.1875 1464112.7500 -1010652.7500 ) - :fwd (vis jub #f) - ) - -(static-load-boundary :flags (closed player ) - :top 126432.8281 :bot -524288.0000 - :points ( 1453916.1250 -987016.1875 1461937.5000 -967184.7500 1482761.0000 -957298.8125 1505932.0000 -966185.3750 1514189.1250 -989654.3750 1503102.1250 -1010133.6875 1481864.2500 -1017569.1875 1464112.7500 -1010652.7500 ) - :fwd (display jungleb display) - :bwd (display jungleb #f) - ) - -(static-load-boundary :flags () - :top 360646.2500 :bot -187424.2500 - :points ( 2042524.0000 -7300480.5000 1824194.5000 -6847887.0000 1852328.7500 -6568462.5000 2270167.7500 -6228972.5000 ) - :fwd (display sunken special) - :bwd (display sunken #f) - ) - -(static-load-boundary :flags () - :top 524288.0000 :bot -168464.3125 - :points ( 1927868.3750 -7085362.5000 1605545.0000 -6870818.5000 1615227.7500 -6471577.5000 2177376.0000 -6131660.5000 ) - :fwd (load village2 sunken) - ) - -(static-load-boundary :flags () - :top 292930.0625 :bot -524288.0000 - :points ( 998340.9375 -7272782.5000 934710.0625 -7195729.5000 ) - :fwd (vis vi2 #f) - ) - -(static-load-boundary :flags () - :top 336796.9062 :bot -524288.0000 - :points ( 825355.1875 -7235151.5000 920252.1875 -7300986.5000 ) - :fwd (vis ogr #f) - ) - -(static-load-boundary :flags () - :top 396387.0625 :bot 57211.8750 - :points ( 1213439.7500 -7288315.5000 1227811.8750 -7079770.5000 912550.5000 -7099027.5000 ) - :fwd (display ogre #f) - :bwd (display ogre display) - ) - -(static-load-boundary :flags (player ) - :top 431070.9687 :bot -524288.0000 - :points ( 974018.3750 -7117512.5000 1070822.5000 -7081258.0000 1526121.6250 -7123133.0000 1541163.7500 -7418157.0000 ) - :fwd (load village2 ogre) - ) - -(static-load-boundary :flags () - :top 233141.6875 :bot -524288.0000 - :points ( 742218.1875 -6802828.0000 1334365.1250 -6818752.0000 1357111.0000 -6436508.0000 1047644.1250 -6334948.5000 643162.4375 -6208203.0000 ) - :fwd (display rolling #f) - :bwd (display rolling display-no-wait) - ) - -(static-load-boundary :flags (player ) - :top 313079.7500 :bot -524288.0000 - :points ( 823858.3125 -7076852.5000 1476263.1250 -6966768.0000 1548741.3750 -6505285.5000 1380369.1250 -6357914.0000 1125477.6250 -6285041.0000 1188517.2500 -6036264.5000 ) - :bwd (load village2 rolling) - ) - -(static-load-boundary :flags () - :top 370820.1562 :bot -524288.0000 - :points ( 1400421.8750 -5994967.5000 1298001.8750 -5991312.0000 ) - :fwd (vis fic #f) - ) - -(static-load-boundary :flags () - :top 335013.1875 :bot -524288.0000 - :points ( 1300341.5000 -6072380.5000 1543875.5000 -6043701.0000 ) - :fwd (vis vi2 #f) - ) - -(static-load-boundary :flags () - :top 332899.1250 :bot -524288.0000 - :points ( -1208873.7500 -81858.3671 -319884.6250 -196373.7968 ) - :bwd (vis vi1 #f) - ) - -(static-load-boundary :flags () - :top 332899.1250 :bot -524288.0000 - :points ( -1124255.7500 -298838.2812 -351702.8437 -248529.5000 ) - :fwd (vis bea #f) - ) - -(static-load-boundary :flags (player ) - :top 388789.1562 :bot -524288.0000 - :points ( -269444.5937 -496662.2812 -126883.8437 -507940.0937 ) - :fwd (vis fic #f) - ) - -(static-load-boundary :flags () - :top 388393.3125 :bot -524288.0000 - :points ( -261189.3437 -3825337.5000 -50913.2578 -4000428.0000 ) - :fwd (load village2 firecanyon) - ) - -(static-load-boundary :flags () - :top 524288.0000 :bot -524288.0000 - :points ( 420024.4375 -4814527.0000 420024.4375 -4609727.0000 ) - :fwd (display village2 display) - :bwd (display village2 #f) - ) - -(static-load-boundary :flags (player ) - :top 168425.0781 :bot -524288.0000 - :points ( -201897.2031 -213989.4218 -71567.4843 -81526.1171 -112773.1796 78722.4062 -115380.5625 447390.6250 -241892.2187 711968.7500 ) - :bwd (load village1 beach) - ) - -(static-load-boundary :flags (player ) - :top 322236.6562 :bot -524288.0000 - :points ( -140670.9062 -353851.7500 6646.9482 -375187.6875 -4327.1040 -433914.7187 ) - :fwd (load village1 firecanyon) - ) - -(static-load-boundary :flags (closed player ) - :top 375701.1562 :bot -524288.0000 - :points ( 1453916.1250 -987016.1875 1461937.5000 -967184.7500 1482761.0000 -957298.8125 1505932.0000 -966185.3750 1514189.1250 -989654.3750 1503102.1250 -1010133.6875 1481864.2500 -1017569.1875 1464112.7500 -1010652.7500 ) - :fwd (load jungle jungleb) - ) - -(static-load-boundary :flags () - :top 166814.4062 :bot -524288.0000 - :points ( 401796.5312 -610932.6875 350019.1250 -489639.7500 470693.2500 -460100.7187 ) - :fwd (display jungle display-no-wait) - :bwd (display jungle #f) - ) - -(static-load-boundary :flags () - :top 326953.3125 :bot -524288.0000 - :points ( 81844.7031 -727707.5000 15797.2861 118401.2656 414386.1562 120639.4375 1232901.1250 1021193.6250 ) - :fwd (load village1 jungle) - ) - -(static-load-boundary :flags () - :top 325169.5625 :bot -524288.0000 - :points ( 894672.3750 -779382.3125 1767576.5000 1188691.0000 ) - :fwd (vis jun #f) - ) - -(static-load-boundary :flags () - :top 301122.0937 :bot -524288.0000 - :points ( 1525182.5000 2034822.6250 842849.0625 -804235.9375 ) - :fwd (vis vi1 #f) - ) - -(static-load-boundary :flags (closed ) - :top -87713.6015 :bot -524288.0000 - :points ( 1090401.7500 -1274678.5000 1058803.0000 -1235478.5000 1060181.1250 -1193262.0000 1117220.7500 -1154488.0000 1164595.1250 -1185104.7500 1176762.0000 -1210675.3750 1173468.1250 -1244727.7500 1125869.1250 -1275753.6250 ) - :bwd (vis jun #f) - ) - -(static-load-boundary :flags () - :top 272530.2500 :bot -524288.0000 - :points ( -249675.5468 -391214.1875 -130347.6796 -500937.5937 ) - :fwd (display firecanyon display) - :bwd (display firecanyon #f) - ) - -(static-load-boundary :flags () - :top 152569.2500 :bot -524288.0000 - :points ( -177363.2812 -182574.9687 -107676.5312 -61124.0039 -172878.9531 81598.4218 -327656.5937 227590.6406 -406536.5625 216199.7187 -485581.5625 261065.9218 -515573.0000 191171.4062 -1338912.3750 229231.6406 ) - :fwd (display beach #f) - :bwd (display beach display-no-wait) - ) - -(static-load-boundary :flags (player ) - :top 388789.1562 :bot -524288.0000 - :points ( -137499.9687 -464508.4687 -239475.8593 -332696.8125 ) - :fwd (vis vi1 #f) - ) - -(static-load-boundary :flags (player ) - :top 524288.0000 :bot -524288.0000 - :points ( 836810.6875 -6707271.0000 673225.5625 -6637296.5000 468429.4375 -6424190.5000 ) - :fwd (vis vi2 #f) - ) - -(static-load-boundary :flags (player ) - :top 524288.0000 :bot -524288.0000 - :points ( 474877.0937 -6501738.5000 641064.9375 -6682781.0000 774879.4375 -6780504.5000 ) - :fwd (vis rol #f) - ) - -(static-load-boundary :flags (player ) - :top 524288.0000 :bot -524288.0000 - :points ( 1543607.5000 -7296055.0000 1536684.1250 -6977798.0000 1589661.2500 -6897839.0000 1929451.3750 -7131590.5000 ) - :fwd (load village2 swamp) - ) - -(static-load-boundary :flags () - :top 192776.2812 :bot -524288.0000 - :points ( 1720459.0000 -7252616.5000 1888000.6250 -7230796.5000 ) - :fwd (display swamp display) - :bwd (display swamp #f) - ) - -(static-load-boundary :flags () - :top 240937.3125 :bot -524288.0000 - :points ( 1655335.3750 -7355865.0000 1914029.7500 -7344404.5000 ) - :fwd (vis swa #f) - ) - -(static-load-boundary :flags () - :top 263068.9375 :bot -524288.0000 - :points ( 1947299.0000 -7277401.0000 1663485.5000 -7296843.5000 ) - :fwd (vis vi2 #f) - ) - -(static-load-boundary :flags (closed ) - :top -176048.6562 :bot -524288.0000 - :points ( 2079358.7500 -6774793.5000 2079358.7500 -6569993.5000 2284159.5000 -6569993.5000 2284159.5000 -6774793.5000 ) - :fwd (vis sun #f) - ) - -(static-load-boundary :flags (closed ) - :top -91155.6640 :bot -524288.0000 - :points ( 2079358.7500 -6774793.5000 2079358.7500 -6569993.5000 2284159.5000 -6569993.5000 2284159.5000 -6774793.5000 ) - :bwd (vis vi2 #f) - ) - -(static-load-boundary :flags (player ) - :top 321007.4375 :bot -524288.0000 - :points ( -907311.3750 3456990.5000 -757819.6875 3679705.0000 -638801.3750 3763613.2500 -573459.1875 3651802.5000 -883808.5625 3444019.2500 ) - :fwd (checkpt "misty-silo" #f) - ) - -(static-load-boundary :flags (player ) - :top 164830.9687 :bot -524288.0000 - :points ( -419912.5000 3042100.0000 -133547.2968 3439924.0000 -102430.3828 3661115.2500 428069.8125 3364700.5000 ) - :fwd (checkpt "misty-start" #f) - ) - -(static-load-boundary :flags (player ) - :top 112904.2578 :bot -524288.0000 - :points ( 1486306.7500 -8266304.5000 1610530.3750 -8198038.0000 ) - :fwd (checkpt "swamp-cave1" #f) - ) - -(static-load-boundary :flags (player ) - :top 95661.4531 :bot -524288.0000 - :points ( 2672740.5000 -8278830.0000 2639106.7500 -8402343.0000 ) - :fwd (checkpt "swamp-game" #f) - ) - -(static-load-boundary :flags (player ) - :top 110684.6718 :bot -524288.0000 - :points ( 1839143.7500 -7520194.5000 1840360.7500 -7670893.0000 1846512.6250 -7685321.0000 ) - :fwd (checkpt "swamp-start" #f) - ) - -(static-load-boundary :flags () - :top -512925.1250 :bot -681521.4375 - :points ( 2371019.5000 -6795812.0000 2389408.2500 -6532305.5000 ) - :fwd (display village2 #f) - :bwd (display village2 display) - ) - -(static-load-boundary :flags (player ) - :top -467010.0312 :bot -701076.4375 - :points ( 3209649.0000 -6960872.0000 3057429.0000 -6862769.0000 ) - :fwd (checkpt "sunken1" #f) - :bwd (checkpt "sunken2" #f) - ) - -(static-load-boundary :flags (closed player ) - :top -632567.5625 :bot -576346.5000 - :points ( 2344408.2500 -7388373.0000 2348460.5000 -7279539.0000 2466947.7500 -7247920.5000 2439049.2500 -7385641.0000 ) - :bwd (vis sun #f) - ) - -(static-load-boundary :flags () - :top 290551.7500 :bot -524288.0000 - :points ( 4130630.2500 -14104385.0000 3887507.7500 -13723764.0000 ) - :bwd (vis ogr #f) - ) - -(static-load-boundary :flags () - :top 253886.0000 :bot -524288.0000 - :points ( 4168931.0000 -14104075.0000 4117809.5000 -13471865.0000 ) - :fwd (vis vi3 #f) - ) - -(static-load-boundary :flags () - :top 330190.4687 :bot -524288.0000 - :points ( 4536550.0000 -13960169.0000 4678894.0000 -14351620.0000 4428100.5000 -14425283.0000 4353558.0000 -14051260.0000 ) - :fwd (load village3 ogre) - ) - -(static-load-boundary :flags (player ) - :top -1761940.5000 :bot -1946392.3750 - :points ( 2518956.7500 -7372510.5000 2450104.7500 -7215005.0000 ) - :bwd (checkpt "sunkenb-helix" #f) - ) - -(static-load-boundary :flags () - :top 350009.8437 :bot -524288.0000 - :points ( 4421414.0000 -13636154.0000 4589708.5000 -13556925.0000 ) - :fwd (display maincave #f) - :bwd (display maincave display) - ) - -(static-load-boundary :flags () - :top 272053.6875 :bot -655558.1250 - :points ( 4806917.0000 -12655241.0000 4529194.0000 -12512575.0000 ) - :fwd (load maincave robocave) - ) - -(static-load-boundary :flags () - :top 285200.5312 :bot -524288.0000 - :points ( 4042240.5000 -12645708.0000 4297681.5000 -12507810.0000 ) - :bwd (load maincave darkcave) - ) - -(static-load-boundary :flags () - :top 401929.8750 :bot -524288.0000 - :points ( -363218.5312 -2089629.0000 -558766.6875 -1816698.6250 -769622.8125 -2043451.8750 -816882.1250 -2051455.1250 -950145.6250 -2013974.5000 -967790.6250 -1907695.0000 -1064691.2500 -1966847.8750 -1147540.0000 -1944348.2500 -1243268.8750 -2202510.2500 -1249669.5000 -2319393.7500 ) - :fwd (display village1 display) - :bwd (display village1 special-vis) - ) - -(static-load-boundary :flags () - :top 380333.4062 :bot -40101.1562 - :points ( 1818615.7500 -1094335.5000 1622619.2500 -978791.6875 ) - :fwd (display village1 special-vis) - :bwd (display village1 #f) - ) - -(static-load-boundary :flags () - :top 334675.0937 :bot 183791.4687 - :points ( -655431.8125 -7037484.5000 -667642.5000 -6660005.5000 ) - :fwd (display village2 display) - :bwd (display village2 special-vis) - ) - -(static-load-boundary :flags () - :top 296695.7187 :bot -524288.0000 - :points ( -590053.0625 -6197793.0000 39494.1289 -6504359.5000 ) - :fwd (display village2 display) - :bwd (display village2 special-vis) - ) - -(static-load-boundary :flags () - :top 297752.6875 :bot -524288.0000 - :points ( 53651.5781 -6363675.5000 58039.6875 -6204528.0000 ) - :fwd (display village2 special-vis) - :bwd (display village2 #f) - ) - -(static-load-boundary :flags () - :top 561218.0000 :bot -15459.1718 - :points ( 5076681.0000 -12251444.0000 4974694.0000 -12024020.0000 ) - :bwd (vis mai #f) - ) - -(static-load-boundary :flags () - :top 561218.0000 :bot -22197.6718 - :points ( 5192028.0000 -12126635.0000 4954258.5000 -11802688.0000 ) - :fwd (vis rob #f) - ) - -(static-load-boundary :flags () - :top 404182.7500 :bot -524288.0000 - :points ( 4167032.0000 -13159265.0000 4419089.0000 -12857725.0000 4712033.0000 -13110535.0000 ) - :fwd (display village3 display) - :bwd (display village3 #f) - ) - -(static-load-boundary :flags () - :top 107354.8515 :bot -647564.3125 - :points ( -279364.6250 131636.4531 -270673.4375 160221.8750 ) - :fwd (display beach #f) - :bwd (display beach display) - ) - -(static-load-boundary :flags () - :top 329926.1875 :bot 114555.8750 - :points ( 4630288.0000 -14662835.0000 4776346.0000 -14281154.0000 5078574.5000 -14217605.0000 ) - :fwd (load village3 lavatube) - ) - -(static-load-boundary :flags () - :top 361505.0312 :bot 141642.4062 - :points ( 5145395.0000 -14585060.0000 4969281.0000 -14637079.0000 ) - :fwd (display lavatube #f) - :bwd (display lavatube display) - ) - -(static-load-boundary :flags () - :top 361505.0312 :bot 141642.4062 - :points ( 5280860.0000 -14529410.0000 5363850.0000 -14811145.0000 ) - :bwd (vis lav #f) - ) - -(static-load-boundary :flags () - :top 145672.2812 :bot -274960.5312 - :points ( 9277345.0000 -14277290.0000 9266303.0000 -13929350.0000 ) - :bwd (load village3 lavatube) - ) - -(static-load-boundary :flags (player ) - :top 275554.9375 :bot 103589.1562 - :points ( 769670.2500 -8183583.5000 945858.7500 -8171829.5000 ) - :fwd (checkpt "ogre-race" #f) - ) - -(static-load-boundary :flags () - :top 104778.3359 :bot -424794.8437 - :points ( 11251180.0000 -18687074.0000 11606826.0000 -18673318.0000 ) - :fwd (display lavatube #f) - :bwd (display lavatube display) - ) - -(static-load-boundary :flags () - :top -6276.1269 :bot -424794.8437 - :points ( 10794323.0000 -19184136.0000 11542925.0000 -19117040.0000 11854880.0000 -18949898.0000 ) - :bwd (load citadel lavatube) - ) - -(static-load-boundary :flags (closed ) - :top -35278.4179 :bot -524288.0000 - :points ( 4869388.0000 -12242570.0000 4850643.0000 -12138500.0000 4982147.0000 -12130348.0000 5004734.0000 -12257655.0000 ) - :fwd (vis rob #f) - ) - -(static-load-boundary :flags (closed ) - :top 28870.2265 :bot -524288.0000 - :points ( 4869388.0000 -12242570.0000 4850643.0000 -12138500.0000 4982147.0000 -12130348.0000 5004734.0000 -12257655.0000 ) - :bwd (vis mai #f) - ) - -(static-load-boundary :flags (closed ) - :top -28209.5117 :bot -524288.0000 - :points ( 4869388.0000 -12242570.0000 4850643.0000 -12138500.0000 4982147.0000 -12130348.0000 5004734.0000 -12257655.0000 ) - :fwd (display maincave #f) - :bwd (display maincave display) - ) - -(static-load-boundary :flags () - :top 275555.1250 :bot -524288.0000 - :points ( 927462.1250 -7305133.0000 763242.7500 -7308856.5000 ) - :fwd (display village2 display) - :bwd (display village2 special-vis) - ) - -(static-load-boundary :flags (player ) - :top 290551.7500 :bot -524288.0000 - :points ( 4047454.5000 -14186495.0000 3804332.0000 -13805874.0000 ) - :fwd (checkpt "ogre-end" #f) - :bwd (checkpt "ogre-end" #f) - ) - -(static-load-boundary :flags (player ) - :top 104778.3359 :bot -257783.7187 - :points ( 11326069.0000 -18525588.0000 11278355.0000 -18072140.0000 ) - :fwd (checkpt "lavatube-end" #f) - :bwd (checkpt "lavatube-end" #f) - ) - -(static-load-boundary :flags (player ) - :top 524288.0000 :bot 265248.9375 - :points ( 10092448.0000 -16790240.0000 10078353.0000 -16477023.0000 ) - :fwd (checkpt "lavatube-after-ribbon" #f) - :bwd (checkpt "lavatube-after-ribbon" #f) - ) - -(static-load-boundary :flags () - :top 326689.0000 :bot -524288.0000 - :points ( 143748.8281 -3601507.7500 179947.4375 -3912510.7500 ) - :bwd (load firecanyon village1) - ) - -(static-load-boundary :flags () - :top 376514.5625 :bot -524288.0000 - :points ( 418480.4687 -2126829.2500 768319.2500 -2135490.7500 ) - :fwd (display village1 #f) - :bwd (display village1 display) - ) - -(static-load-boundary :flags (player ) - :top 39044.1210 :bot -141510.1875 - :points ( 10894763.0000 -18893140.0000 10898940.0000 -18972940.0000 ) - :fwd (checkpt "citadel-launch-start" #f) - ) - -(static-load-boundary :flags (player ) - :top -198.1726 :bot -146531.0937 - :points ( 11416193.0000 -19794980.0000 11485550.0000 -19797886.0000 ) - :fwd (checkpt "citadel-plat-start" #f) - ) - -(static-load-boundary :flags (player ) - :top 36361.8906 :bot -36137.2890 - :points ( 12126351.0000 -19001848.0000 12122353.0000 -18877466.0000 ) - :fwd (checkpt "citadel-generator-start" #f) - ) - -(static-load-boundary :flags () - :top 171371.1406 :bot -524288.0000 - :points ( -676129.1250 -6924696.0000 -680121.3125 -6757647.5000 ) - :fwd (display village2 display) - :bwd (display village2 special-vis) - ) - -(static-load-boundary :flags () - :top 272053.6875 :bot -655558.1250 - :points ( 4808600.0000 -12651164.0000 4530877.0000 -12508498.0000 ) - :fwd (checkpt "maincave-to-robocave" #f) - ) - -(static-load-boundary :flags (player ) - :top 164302.4687 :bot -304623.5000 - :points ( 11519060.0000 -18551140.0000 11449090.0000 -18346224.0000 11380415.0000 -18514333.0000 ) - :fwd (checkpt "citadel-entrance" #f) - :bwd (checkpt "citadel-entrance" #f) - ) - -(static-load-boundary :flags (player ) - :top 155912.2656 :bot -524288.0000 - :points ( -302473.8125 -358921.6250 -189703.3437 -88103.3203 -213883.9062 -45797.7343 -569183.0000 -33546.7734 ) - :fwd (display beach display) - :bwd (display beach display) - ) - -(static-load-boundary :flags (player ) - :top 1161083.5000 :bot 1033513.1250 - :points ( 3172378.2500 -14293381.0000 3169853.0000 -14196348.0000 ) - :bwd (checkpt "snow-by-ice-lake" #f) - ) - -(static-load-boundary :flags (player ) - :top 1050557.6250 :bot 904951.4375 - :points ( 3464265.7500 -13649148.0000 3491810.2500 -13487760.0000 ) - :bwd (checkpt "snow-outside-fort" #f) - ) - -(static-load-boundary :flags (player ) - :top 980265.1875 :bot 890780.8125 - :points ( 3118024.0000 -13706895.0000 3079293.0000 -13672758.0000 ) - :bwd (checkpt "snow-outside-cave" #f) - ) - -(static-load-boundary :flags () - :top 2404087.0000 :bot 1792990.8750 - :points ( 11801113.0000 -19782276.0000 12074740.0000 -19333410.0000 ) - :fwd (checkpt "finalboss-fight" #f) - :bwd (checkpt "finalboss-start" #f) - ) - -)) - -(doarray (i *static-load-boundary-list*) - (load-boundary-from-template (the-as (array object) i)) - ) \ No newline at end of file +(define *static-load-boundary-list* + (static-lb-list (static-load-boundary :flags + () + :top 404182.7500 + :bot -524288.0000 + :points + (4161991.7500 -13086341.0000 4414040.5000 -12784800.0000 4706984.5000 -13037610.0000) + :fwd + (checkpt "maincave-start" #f)) + (static-load-boundary :flags (player) + :top 335938.0000 + :bot 140849.5312 + :points + (4397294.5000 -14125599.0000 4545135.5000 -14064108.0000) + :bwd + (checkpt "village3-start" #f)) + (static-load-boundary :flags (player) + :top 302707.5937 + :bot 144615.2031 + :points + (4420238.5000 -13645623.0000 4595041.0000 -13553850.0000) + :fwd + (checkpt "village3-farside" #f)) + (static-load-boundary :flags (player) + :top 383504.5937 + :bot 120699.8515 + :points + (4445610.0000 -14468618.0000 4343087.0000 -14334280.0000) + :bwd + (checkpt "village3-farside" #f)) + (static-load-boundary :flags (player) + :top 318034.5625 + :bot 119907.0625 + :points + (4952800.5000 -14636175.0000 5113453.5000 -14560723.0000) + :bwd + (checkpt "village3-farside" #f)) + (static-load-boundary :flags (closed) + :top 742498.5625 + :bot -727105.8750 + :points + (4214055.0000 -14490533.0000 4286877.5000 -13964385.0000 4509959.5000 -14260475.0000 4466017.5000 -14619070.0000) + :fwd + (vis vi3 #f) + :bwd (display snow display)) + (static-load-boundary :flags + () + :top 524288.0000 + :bot -524288.0000 + :points + (1123579.8750 -6421303.0000 1006257.0000 -6823930.5000) + :fwd + (checkpt "village2-start" #f) + :bwd + (checkpt "village2-dock" #f)) + (static-load-boundary :flags (player) + :top 1051944.6250 + :bot 888765.5625 + :points + (3366128.0000 -13638805.0000 3362401.7500 -13489235.0000) + :fwd + (checkpt "snow-outside-fort" #f)) + (static-load-boundary :flags (player) + :top 1220937.6250 + :bot 1035428.8750 + :points + (2930553.2500 -14107145.0000 3128871.7500 -14038774.0000) + :fwd + (checkpt "snow-by-ice-lake-alt" #f)) + (static-load-boundary :flags (player) + :top 1094292.3750 + :bot 858838.2500 + :points + (3677046.7500 -13838594.0000 3773559.7500 -13867715.0000 3837479.7500 -13675041.0000 3663758.2500 -13804749.0000) + :bwd + (checkpt "snow-pass-to-fort" #f)) + (static-load-boundary :flags + () + :top 104778.3359 + :bot -424794.8437 + :points + (11249043.0000 -18841486.0000 11604685.0000 -18827730.0000) + :fwd + (checkpt "citadel-start" #f) + :bwd + (checkpt "citadel-start" #f)) + (static-load-boundary :flags (closed) + :top 1470264.6250 + :bot -524288.0000 + :points + (11253410.0000 -19459740.0000 11298895.0000 -19163528.0000 11606400.0000 -19156774.0000 11646273.0000 -19462514.0000) + :fwd (display citadel display) + :bwd (display citadel special)) + (static-load-boundary :flags + () + :top 294119.1875 + :bot 213916.9062 + :points + (11495250.0000 -19186980.0000 11398090.0000 -19190674.0000) + :fwd + (display finalboss #f) + :bwd (display finalboss display)) + (static-load-boundary :flags + () + :top 408146.5312 + :bot -227129.8125 + :points + (5624547.0000 + -11755375.0000 + 5604783.5000 + -11539414.0000 + 5326020.0000 + -11550233.0000 + 5180106.5000 + -11499346.0000 + 5148654.0000 + -11322573.0000) + :fwd (display maincave special) + :bwd (display maincave display)) + (static-load-boundary :flags + () + :top 524288.0000 + :bot -524288.0000 + :points + (568817.3125 -9466220.0000 1127492.5000 -9043683.0000) + :bwd (load ogre village2)) + (static-load-boundary :flags + () + :top 524288.0000 + :bot -524288.0000 + :points + (719872.1250 -6597869.0000 1159159.1250 -6425164.5000 1041836.2500 -6827792.0000) + :fwd (display rolling display)) + (static-load-boundary :flags + () + :top 363883.3125 + :bot -524288.0000 + :points + (710516.0000 -605717.3125 777812.3750 -117024.5234) + :fwd (display jungle display)) + (static-load-boundary :flags + () + :top 263663.4375 + :bot 1585.5251 + :points + (-677970.9375 -6693857.0000 -802274.3125 -6692809.0000) + :fwd + (display village2 #f) + :bwd (display village2 special-vis)) + (static-load-boundary :flags + () + :top 276440.1875 + :bot -524288.0000 + :points + (-1054117.3750 -7015874.0000 -1180891.2500 -6733353.5000 -911788.3750 -6482925.0000) + :fwd (display village2 special-vis) + :bwd + (display village2 #f)) + (static-load-boundary :flags (player) + :top 1064497.0000 + :bot 893654.6250 + :points + (3369717.2500 -13470538.0000 3489005.0000 -13470209.0000) + :fwd + (checkpt "snow-outside-fort" #f) + :bwd + (checkpt "snow-fort" #f)) + (static-load-boundary :flags (player) + :top 60515.0625 + :bot -64214.7187 + :points + (11902198.0000 -19492924.0000 11856455.0000 -19580640.0000) + :fwd + (checkpt "citadel-generator-end" #f)) + (static-load-boundary :flags (player) + :top 87535.5390 + :bot -29596.9101 + :points + (11275635.0000 -19680194.0000 11230883.0000 -19653924.0000) + :fwd + (checkpt "citadel-plat-end" #f)) + (static-load-boundary :flags (player) + :top 66328.7968 + :bot -101805.4609 + :points + (11021305.0000 -19546493.0000 10991630.0000 -19494320.0000) + :fwd + (checkpt "citadel-launch-end" #f)) + (static-load-boundary :flags (player) + :top -451749.1250 + :bot -610039.6875 + :points + (3050601.7500 -6609894.0000 2987056.5000 -6462185.5000) + :fwd (load sunken sunkenb) + :bwd (load sunken village2)) + (static-load-boundary :flags (player) + :top 247477.6718 + :bot -148711.2500 + :points + (5555559.5000 -11770044.0000 5324678.0000 -11402115.0000) + :fwd + (checkpt "robocave-bottom" #f)) + (static-load-boundary :flags (player) + :top 178704.3906 + :bot -135168.0000 + :points + (8996384.0000 -14239175.0000 9096633.0000 -13873403.0000) + :fwd + (checkpt "lavatube-middle" #f) + :bwd + (checkpt "lavatube-middle" #f)) + (static-load-boundary :flags + () + :top 322923.3437 + :bot 4096.0000 + :points + (5678575.5000 -14614474.0000 5457999.0000 -14391688.0000) + :fwd + (checkpt "lavatube-start" #f) + :bwd + (checkpt "lavatube-start" #f)) + (static-load-boundary :flags + () + :top 482151.9687 + :bot 69896.2500 + :points + (869008.6250 -8462477.0000 644078.7500 -8259235.5000) + :fwd + (checkpt "ogre-race" #f) + :bwd + (checkpt "ogre-race" #f)) + (static-load-boundary :flags + () + :top 339769.8125 + :bot -46839.7500 + :points + (-211696.2968 -784710.7500 49935.1484 -742140.3125) + :fwd + (checkpt "firecanyon-start" #f) + :bwd + (checkpt "firecanyon-start" #f)) + (static-load-boundary :flags + () + :top 321734.2187 + :bot 33164.3789 + :points + (1472616.7500 -5741056.5000 1161522.7500 -5738810.0000) + :fwd + (checkpt "firecanyon-end" #f) + :bwd + (checkpt "firecanyon-end" #f)) + (static-load-boundary :flags (player) + :top 164632.7343 + :bot -17573.1718 + :points + (1651940.5000 -8481208.0000 1575238.2500 -8380055.5000) + :fwd + (checkpt "swamp-dock2" #f) + :bwd + (checkpt "swamp-cave1" #f)) + (static-load-boundary :flags (player) + :top 108378.7421 + :bot -18630.2011 + :points + (1381972.8750 -8272129.5000 1309181.3750 -8143856.5000) + :fwd + (checkpt "swamp-dock1" #f) + :bwd + (checkpt "swamp-start" #f)) + (static-load-boundary :flags (player) + :top 237131.7500 + :bot 116405.6328 + :points + (4134430.0000 -12531289.0000 4249137.0000 -12480849.0000) + :bwd + (checkpt "maincave-to-darkcave" #f)) + (static-load-boundary :flags (player) + :top -432061.9062 + :bot -714884.0625 + :points + (2624020.7500 -7238923.5000 2730103.5000 -7108117.5000) + :fwd + (checkpt "sunken-tube1" #f)) + (static-load-boundary :flags (closed) + :top 1552977.3750 + :bot -524288.0000 + :points + (11253410.0000 -19459740.0000 11298895.0000 -19163528.0000 11606400.0000 -19156774.0000 11646273.0000 -19462514.0000) + :bwd + (vis fin #f)) + (static-load-boundary :flags (closed) + :top 739722.6875 + :bot -524288.0000 + :points + (11253410.0000 -19459740.0000 11298895.0000 -19163528.0000 11606400.0000 -19156774.0000 11646273.0000 -19462514.0000) + :fwd + (vis cit #f)) + (static-load-boundary :flags (closed) + :top -37128.2734 + :bot -568353.0000 + :points + (10635460.0000 -19261390.0000 10641390.0000 -18641098.0000 11673320.0000 -18631850.0000 11992955.0000 -19068516.0000) + :fwd (load citadel lavatube)) + (static-load-boundary :flags (closed) + :top 30786.0390 + :bot -568353.0000 + :points + (10853810.0000 -19982956.0000 10857980.0000 -18851744.0000 11800185.0000 -18657540.0000 12119948.0000 -19841458.0000) + :bwd (load citadel finalboss)) + (static-load-boundary :flags + () + :top 532744.0625 + :bot 222822.3125 + :points + (10045198.0000 -16826564.0000 10052340.0000 -16500909.0000) + :fwd (load lavatube citadel)) + (static-load-boundary :flags + () + :top 104778.3359 + :bot -424794.8437 + :points + (11261218.0000 -18621614.0000 11616860.0000 -18607858.0000) + :fwd + (vis cit #f)) + (static-load-boundary :flags + () + :top 104778.3359 + :bot -194295.7500 + :points + (11220495.0000 -18577436.0000 11172783.0000 -18123988.0000) + :bwd + (vis lav #f)) + (static-load-boundary :flags + () + :top 104778.3359 + :bot -194295.7500 + :points + (11067174.0000 -18596720.0000 11019460.0000 -18143273.0000) + :fwd (display citadel display) + :bwd + (display citadel #f)) + (static-load-boundary :flags + () + :top 303302.0937 + :bot -28407.7460 + :points + (1482670.0000 -13217540.0000 1703776.3750 -13157055.0000) + :fwd (load ogre village3)) + (static-load-boundary :flags (closed player) + :top 810280.1875 + :bot -196608.0000 + :points + (3324084.2500 -13758485.0000 3324084.2500 -13553685.0000 3528884.2500 -13553685.0000 3528884.2500 -13758485.0000) + :bwd + (checkpt "snow-outside-fort" #f)) + (static-load-boundary :flags (player) + :top 1170068.3750 + :bot 988919.6875 + :points + (2574083.2500 -13973545.0000 2427817.5000 -13884534.0000) + :fwd + (checkpt "snow-across-from-flut" #f) + :bwd + (checkpt "snow-flut-flut" #f)) + (static-load-boundary :flags + () + :top 389780.5000 + :bot 201622.1406 + :points + (4218813.0000 -14413355.0000 4331064.0000 -14524060.0000) + :fwd (load village3 maincave)) + (static-load-boundary :flags + () + :top 320479.0000 + :bot -64214.6718 + :points + (6465568.5000 -14156115.0000 6450754.5000 -13712894.0000) + :fwd + (display village3 #f) + :bwd (display village3 display)) + (static-load-boundary :flags + () + :top 361505.0312 + :bot 141642.4062 + :points + (5280860.0000 -14529410.0000 5363850.0000 -14811145.0000) + :bwd + (vis lav #f)) + (static-load-boundary :flags + () + :top 361505.0312 + :bot 141642.4062 + :points + (5192246.0000 -14612985.0000 4946641.5000 -14744985.0000) + :fwd + (vis vi3 #f)) + (static-load-boundary :flags + () + :top 361505.0312 + :bot 141642.4062 + :points + (5145395.0000 -14585060.0000 4969281.0000 -14637079.0000) + :fwd + (display lavatube #f) + :bwd (display lavatube display)) + (static-load-boundary :flags + () + :top 1275705.7500 + :bot 885660.6875 + :points + (4210123.5000 -14454620.0000 4252965.5000 -14048015.0000) + :bwd + (vis sno #f)) + (static-load-boundary :flags + () + :top 194295.7656 + :bot -524288.0000 + :points + (1993232.0000 + -7776360.5000 + 1646617.0000 + -7919841.0000 + 1546310.5000 + -7956902.0000 + 1497602.8750 + -8055146.5000 + 1350810.2500 + -7725342.0000) + :fwd (display village2 display) + :bwd (display village2 special-vis)) + (static-load-boundary :flags + () + :top 415367.1250 + :bot -20612.1289 + :points + (1473631.5000 + -1157821.2500 + 1414393.3750 + -1193464.1250 + 1354583.2500 + -1238710.7500 + 1291658.0000 + -1325844.0000 + 1151230.6250 + -1642343.8750) + :fwd (display village1 display) + :bwd (display village1 special-vis)) + (static-load-boundary :flags + () + :top 319289.8125 + :bot 97180.9062 + :points + (3967407.0000 -12047450.0000 3919676.7500 -12152098.0000) + :fwd + (vis dar #f)) + (static-load-boundary :flags + () + :top 319289.8125 + :bot 97180.9062 + :points + (4037056.5000 -12145660.0000 3932723.0000 -12180870.0000) + :bwd + (vis mai #f)) + (static-load-boundary :flags + () + :top 401275.8437 + :bot -524288.0000 + :points + (3809930.2500 -13126660.0000 4387680.5000 -12726350.0000 4965741.5000 -12733760.0000) + :fwd (load village3 maincave)) + (static-load-boundary :flags (closed) + :top 897222.0000 + :bot -455448.6875 + :points + (4214055.0000 -14490533.0000 4286877.5000 -13964385.0000 4509959.5000 -14260475.0000 4466017.5000 -14619070.0000) + :fwd + (display snow #f) + :bwd (display snow display)) + (static-load-boundary :flags (closed) + :top 330785.0000 + :bot -783128.6875 + :points + (4214055.0000 -14490533.0000 4245485.0000 -14027390.0000 4509959.5000 -14260475.0000 4466017.5000 -14619070.0000) + :bwd (load village3 snow)) + (static-load-boundary :flags + () + :top 324244.6562 + :bot -524288.0000 + :points + (-385887.9687 -7048725.0000 -652583.3125 -7045665.0000) + :fwd (display village2 display) + :bwd (display village2 special-vis)) + (static-load-boundary :flags + () + :top 291779.5312 + :bot 185641.2343 + :points + (-556363.6875 -6215175.0000 -677982.3125 -6112309.0000 -462479.2500 -5758803.0000) + :fwd (display village2 special-vis) + :bwd + (display village2 #f)) + (static-load-boundary :flags + () + :top 449040.3125 + :bot -98105.8125 + :points + (1507840.8750 -1133057.6250 1611146.1250 -1038699.5625) + :fwd + (display village1 #f) + :bwd (display village1 display)) + (static-load-boundary :flags + () + :top 442784.2812 + :bot -39440.5351 + :points + (1899973.8750 -1546112.1250 1741479.5000 -1291697.1250 1490514.8750 -1133170.3750) + :fwd + (display village1 #f) + :bwd (display village1 special-vis)) + (static-load-boundary :flags + () + :top 390797.4687 + :bot -106231.7421 + :points + (1625981.7500 -982050.1250 1826157.5000 -984055.0000 1963614.8750 -752705.0625) + :fwd (display village1 special-vis) + :bwd (display village1 display)) + (static-load-boundary :flags + () + :top 319289.8125 + :bot 97180.9062 + :points + (4060842.2500 -12186625.0000 3956508.7500 -12221835.0000) + :fwd (display darkcave display) + :bwd + (display darkcave #f)) + (static-load-boundary :flags + () + :top 561218.0000 + :bot -20347.8750 + :points + (5015965.5000 -12265124.0000 4969636.0000 -12062795.0000) + :fwd (display robocave display) + :bwd + (display robocave #f)) + (static-load-boundary :flags + () + :top 289560.7812 + :bot -524288.0000 + :points + (4160078.2500 -13363984.0000 4657438.0000 -13195000.0000) + :bwd + (vis mai #f)) + (static-load-boundary :flags + () + :top 333031.1875 + :bot -77890.0937 + :points + (4321252.0000 -13451169.0000 4538566.5000 -13427408.0000) + :fwd + (vis vi3 #f)) + (static-load-boundary :flags + () + :top 331577.7187 + :bot -524288.0000 + :points + (4510445.5000 -13872985.0000 4620850.5000 -14134173.0000 4822450.0000 -13951485.0000) + :bwd (load village3 maincave)) + (static-load-boundary :flags + () + :top 355162.8437 + :bot -524288.0000 + :points + (4346461.0000 -14010600.0000 4474615.5000 -13949533.0000) + :fwd + (display ogre #f) + :bwd (display ogre display)) + (static-load-boundary :flags + () + :top 198788.1406 + :bot -524288.0000 + :points + (2287878.0000 -13944549.0000 2434369.7500 -13646915.0000) + :fwd (display village3 display) + :bwd + (display village3 #f)) + (static-load-boundary :flags (closed player) + :top -626555.7500 + :bot -524288.0000 + :points + (2344408.2500 -7388373.0000 2348460.5000 -7279539.0000 2466947.7500 -7247920.5000 2439049.2500 -7385641.0000) + :bwd + (checkpt "sunken2" #f)) + (static-load-boundary :flags (player) + :top -451749.1250 + :bot -610039.6875 + :points + (3063970.5000 -6604280.5000 3000425.2500 -6456572.0000) + :fwd + (checkpt "sunken1" #f) + :bwd + (checkpt "sunken-start" #f)) + (static-load-boundary :flags + () + :top -899402.0625 + :bot -1098784.5000 + :points + (2282077.5000 -6677879.5000 2080828.7500 -6613302.0000) + :fwd + (vis sun #f) + :bwd + (vis sub #f)) + (static-load-boundary :flags + () + :top -432061.9062 + :bot -714884.0625 + :points + (2715718.5000 -7342267.0000 2815001.5000 -7150704.5000) + :fwd (display sunkenb display) + :bwd + (display sunkenb #f)) + (static-load-boundary :flags + () + :top 206253.4218 + :bot -524288.0000 + :points + (1430296.8750 -5984384.0000 1438999.2500 -6119296.0000 1420048.6250 -6125594.0000) + :fwd (display firecanyon display) + :bwd + (display firecanyon #f)) + (static-load-boundary :flags (player) + :top 262804.6875 + :bot -524288.0000 + :points + (2140291.2500 + -6096639.0000 + 1590722.7500 + -6463647.0000 + 1413458.0000 + -6340959.0000 + 1149150.7500 + -6278411.0000 + 1219588.5000 + -6039556.5000) + :fwd (load firecanyon village2)) + (static-load-boundary :flags (player) + :top 141113.7968 + :bot -524288.0000 + :points + (1980493.5000 -7897138.0000 2047652.3750 -7873304.0000 2060152.6250 -7931657.5000 1993817.2500 -7976457.0000) + :fwd + (checkpt "swamp-cave3" #f)) + (static-load-boundary :flags (player) + :top 99096.7968 + :bot -524288.0000 + :points + (1975605.3750 -8630552.0000 1975421.3750 -8528661.0000) + :fwd + (checkpt "swamp-cave2" #f)) + (static-load-boundary :flags (player) + :top 255537.5625 + :bot -524288.0000 + :points + (-1005929.1250 4193984.0000 -872937.1875 4300299.0000 -756972.8125 4208626.0000 -1025873.1875 4087144.5000) + :fwd + (checkpt "misty-silo2" #f)) + (static-load-boundary :flags (player) + :top 145077.7031 + :bot -524288.0000 + :points + (-376094.4062 4543663.0000 -376094.4062 4748463.0000) + :fwd + (checkpt "misty-backside" #f)) + (static-load-boundary :flags (player) + :top 137771.2500 + :bot -524288.0000 + :points + (404573.1875 4098422.0000 236215.7656 4114074.5000) + :fwd + (checkpt "misty-bike" #f)) + (static-load-boundary :flags (closed player) + :top 74968.5468 + :bot -616976.4375 + :points + (1453916.1250 + -987016.1875 + 1461937.5000 + -967184.7500 + 1482761.0000 + -957298.8125 + 1505932.0000 + -966185.3750 + 1514189.1250 + -989654.3750 + 1503102.1250 + -1010133.6875 + 1481864.2500 + -1017569.1875 + 1464112.7500 + -1010652.7500) + :fwd + (vis jub #f)) + (static-load-boundary :flags (closed player) + :top 126432.8281 + :bot -524288.0000 + :points + (1453916.1250 + -987016.1875 + 1461937.5000 + -967184.7500 + 1482761.0000 + -957298.8125 + 1505932.0000 + -966185.3750 + 1514189.1250 + -989654.3750 + 1503102.1250 + -1010133.6875 + 1481864.2500 + -1017569.1875 + 1464112.7500 + -1010652.7500) + :fwd (display jungleb display) + :bwd + (display jungleb #f)) + (static-load-boundary :flags + () + :top 360646.2500 + :bot -187424.2500 + :points + (2042524.0000 -7300480.5000 1824194.5000 -6847887.0000 1852328.7500 -6568462.5000 2270167.7500 -6228972.5000) + :fwd (display sunken special) + :bwd + (display sunken #f)) + (static-load-boundary :flags + () + :top 524288.0000 + :bot -168464.3125 + :points + (1927868.3750 -7085362.5000 1605545.0000 -6870818.5000 1615227.7500 -6471577.5000 2177376.0000 -6131660.5000) + :fwd (load village2 sunken)) + (static-load-boundary :flags + () + :top 292930.0625 + :bot -524288.0000 + :points + (998340.9375 -7272782.5000 934710.0625 -7195729.5000) + :fwd + (vis vi2 #f)) + (static-load-boundary :flags + () + :top 336796.9062 + :bot -524288.0000 + :points + (825355.1875 -7235151.5000 920252.1875 -7300986.5000) + :fwd + (vis ogr #f)) + (static-load-boundary :flags + () + :top 396387.0625 + :bot 57211.8750 + :points + (1213439.7500 -7288315.5000 1227811.8750 -7079770.5000 912550.5000 -7099027.5000) + :fwd + (display ogre #f) + :bwd (display ogre display)) + (static-load-boundary :flags (player) + :top 431070.9687 + :bot -524288.0000 + :points + (974018.3750 -7117512.5000 1070822.5000 -7081258.0000 1526121.6250 -7123133.0000 1541163.7500 -7418157.0000) + :fwd (load village2 ogre)) + (static-load-boundary :flags + () + :top 233141.6875 + :bot -524288.0000 + :points + (742218.1875 + -6802828.0000 + 1334365.1250 + -6818752.0000 + 1357111.0000 + -6436508.0000 + 1047644.1250 + -6334948.5000 + 643162.4375 + -6208203.0000) + :fwd + (display rolling #f) + :bwd (display rolling display-no-wait)) + (static-load-boundary :flags (player) + :top 313079.7500 + :bot -524288.0000 + :points + (823858.3125 + -7076852.5000 + 1476263.1250 + -6966768.0000 + 1548741.3750 + -6505285.5000 + 1380369.1250 + -6357914.0000 + 1125477.6250 + -6285041.0000 + 1188517.2500 + -6036264.5000) + :bwd (load village2 rolling)) + (static-load-boundary :flags + () + :top 370820.1562 + :bot -524288.0000 + :points + (1400421.8750 -5994967.5000 1298001.8750 -5991312.0000) + :fwd + (vis fic #f)) + (static-load-boundary :flags + () + :top 335013.1875 + :bot -524288.0000 + :points + (1300341.5000 -6072380.5000 1543875.5000 -6043701.0000) + :fwd + (vis vi2 #f)) + (static-load-boundary :flags + () + :top 332899.1250 + :bot -524288.0000 + :points + (-1208873.7500 -81858.3671 -319884.6250 -196373.7968) + :bwd + (vis vi1 #f)) + (static-load-boundary :flags + () + :top 332899.1250 + :bot -524288.0000 + :points + (-1124255.7500 -298838.2812 -351702.8437 -248529.5000) + :fwd + (vis bea #f)) + (static-load-boundary :flags (player) + :top 388789.1562 + :bot -524288.0000 + :points + (-269444.5937 -496662.2812 -126883.8437 -507940.0937) + :fwd + (vis fic #f)) + (static-load-boundary :flags + () + :top 388393.3125 + :bot -524288.0000 + :points + (-261189.3437 -3825337.5000 -50913.2578 -4000428.0000) + :fwd (load village2 firecanyon)) + (static-load-boundary :flags + () + :top 524288.0000 + :bot -524288.0000 + :points + (420024.4375 -4814527.0000 420024.4375 -4609727.0000) + :fwd (display village2 display) + :bwd + (display village2 #f)) + (static-load-boundary :flags (player) + :top 168425.0781 + :bot -524288.0000 + :points + (-201897.2031 + -213989.4218 + -71567.4843 + -81526.1171 + -112773.1796 + 78722.4062 + -115380.5625 + 447390.6250 + -241892.2187 + 711968.7500) + :bwd (load village1 beach)) + (static-load-boundary :flags (player) + :top 322236.6562 + :bot -524288.0000 + :points + (-140670.9062 -353851.7500 6646.9482 -375187.6875 -4327.1040 -433914.7187) + :fwd (load village1 firecanyon)) + (static-load-boundary :flags (closed player) + :top 375701.1562 + :bot -524288.0000 + :points + (1453916.1250 + -987016.1875 + 1461937.5000 + -967184.7500 + 1482761.0000 + -957298.8125 + 1505932.0000 + -966185.3750 + 1514189.1250 + -989654.3750 + 1503102.1250 + -1010133.6875 + 1481864.2500 + -1017569.1875 + 1464112.7500 + -1010652.7500) + :fwd (load jungle jungleb)) + (static-load-boundary :flags + () + :top 166814.4062 + :bot -524288.0000 + :points + (401796.5312 -610932.6875 350019.1250 -489639.7500 470693.2500 -460100.7187) + :fwd (display jungle display-no-wait) + :bwd + (display jungle #f)) + (static-load-boundary :flags + () + :top 326953.3125 + :bot -524288.0000 + :points + (81844.7031 -727707.5000 15797.2861 118401.2656 414386.1562 120639.4375 1232901.1250 1021193.6250) + :fwd (load village1 jungle)) + (static-load-boundary :flags + () + :top 325169.5625 + :bot -524288.0000 + :points + (894672.3750 -779382.3125 1767576.5000 1188691.0000) + :fwd + (vis jun #f)) + (static-load-boundary :flags + () + :top 301122.0937 + :bot -524288.0000 + :points + (1525182.5000 2034822.6250 842849.0625 -804235.9375) + :fwd + (vis vi1 #f)) + (static-load-boundary :flags (closed) + :top -87713.6015 + :bot -524288.0000 + :points + (1090401.7500 + -1274678.5000 + 1058803.0000 + -1235478.5000 + 1060181.1250 + -1193262.0000 + 1117220.7500 + -1154488.0000 + 1164595.1250 + -1185104.7500 + 1176762.0000 + -1210675.3750 + 1173468.1250 + -1244727.7500 + 1125869.1250 + -1275753.6250) + :bwd + (vis jun #f)) + (static-load-boundary :flags + () + :top 272530.2500 + :bot -524288.0000 + :points + (-249675.5468 -391214.1875 -130347.6796 -500937.5937) + :fwd (display firecanyon display) + :bwd + (display firecanyon #f)) + (static-load-boundary :flags + () + :top 152569.2500 + :bot -524288.0000 + :points + (-177363.2812 + -182574.9687 + -107676.5312 + -61124.0039 + -172878.9531 + 81598.4218 + -327656.5937 + 227590.6406 + -406536.5625 + 216199.7187 + -485581.5625 + 261065.9218 + -515573.0000 + 191171.4062 + -1338912.3750 + 229231.6406) + :fwd + (display beach #f) + :bwd (display beach display-no-wait)) + (static-load-boundary :flags (player) + :top 388789.1562 + :bot -524288.0000 + :points + (-137499.9687 -464508.4687 -239475.8593 -332696.8125) + :fwd + (vis vi1 #f)) + (static-load-boundary :flags (player) + :top 524288.0000 + :bot -524288.0000 + :points + (836810.6875 -6707271.0000 673225.5625 -6637296.5000 468429.4375 -6424190.5000) + :fwd + (vis vi2 #f)) + (static-load-boundary :flags (player) + :top 524288.0000 + :bot -524288.0000 + :points + (474877.0937 -6501738.5000 641064.9375 -6682781.0000 774879.4375 -6780504.5000) + :fwd + (vis rol #f)) + (static-load-boundary :flags (player) + :top 524288.0000 + :bot -524288.0000 + :points + (1543607.5000 -7296055.0000 1536684.1250 -6977798.0000 1589661.2500 -6897839.0000 1929451.3750 -7131590.5000) + :fwd (load village2 swamp)) + (static-load-boundary :flags + () + :top 192776.2812 + :bot -524288.0000 + :points + (1720459.0000 -7252616.5000 1888000.6250 -7230796.5000) + :fwd (display swamp display) + :bwd + (display swamp #f)) + (static-load-boundary :flags + () + :top 240937.3125 + :bot -524288.0000 + :points + (1655335.3750 -7355865.0000 1914029.7500 -7344404.5000) + :fwd + (vis swa #f)) + (static-load-boundary :flags + () + :top 263068.9375 + :bot -524288.0000 + :points + (1947299.0000 -7277401.0000 1663485.5000 -7296843.5000) + :fwd + (vis vi2 #f)) + (static-load-boundary :flags (closed) + :top -176048.6562 + :bot -524288.0000 + :points + (2079358.7500 -6774793.5000 2079358.7500 -6569993.5000 2284159.5000 -6569993.5000 2284159.5000 -6774793.5000) + :fwd + (vis sun #f)) + (static-load-boundary :flags (closed) + :top -91155.6640 + :bot -524288.0000 + :points + (2079358.7500 -6774793.5000 2079358.7500 -6569993.5000 2284159.5000 -6569993.5000 2284159.5000 -6774793.5000) + :bwd + (vis vi2 #f)) + (static-load-boundary :flags (player) + :top 321007.4375 + :bot -524288.0000 + :points + (-907311.3750 + 3456990.5000 + -757819.6875 + 3679705.0000 + -638801.3750 + 3763613.2500 + -573459.1875 + 3651802.5000 + -883808.5625 + 3444019.2500) + :fwd + (checkpt "misty-silo" #f)) + (static-load-boundary :flags (player) + :top 164830.9687 + :bot -524288.0000 + :points + (-419912.5000 3042100.0000 -133547.2968 3439924.0000 -102430.3828 3661115.2500 428069.8125 3364700.5000) + :fwd + (checkpt "misty-start" #f)) + (static-load-boundary :flags (player) + :top 112904.2578 + :bot -524288.0000 + :points + (1486306.7500 -8266304.5000 1610530.3750 -8198038.0000) + :fwd + (checkpt "swamp-cave1" #f)) + (static-load-boundary :flags (player) + :top 95661.4531 + :bot -524288.0000 + :points + (2672740.5000 -8278830.0000 2639106.7500 -8402343.0000) + :fwd + (checkpt "swamp-game" #f)) + (static-load-boundary :flags (player) + :top 110684.6718 + :bot -524288.0000 + :points + (1839143.7500 -7520194.5000 1840360.7500 -7670893.0000 1846512.6250 -7685321.0000) + :fwd + (checkpt "swamp-start" #f)) + (static-load-boundary :flags + () + :top -512925.1250 + :bot -681521.4375 + :points + (2371019.5000 -6795812.0000 2389408.2500 -6532305.5000) + :fwd + (display village2 #f) + :bwd (display village2 display)) + (static-load-boundary :flags (player) + :top -467010.0312 + :bot -701076.4375 + :points + (3209649.0000 -6960872.0000 3057429.0000 -6862769.0000) + :fwd + (checkpt "sunken1" #f) + :bwd + (checkpt "sunken2" #f)) + (static-load-boundary :flags (closed player) + :top -632567.5625 + :bot -576346.5000 + :points + (2344408.2500 -7388373.0000 2348460.5000 -7279539.0000 2466947.7500 -7247920.5000 2439049.2500 -7385641.0000) + :bwd + (vis sun #f)) + (static-load-boundary :flags + () + :top 290551.7500 + :bot -524288.0000 + :points + (4130630.2500 -14104385.0000 3887507.7500 -13723764.0000) + :bwd + (vis ogr #f)) + (static-load-boundary :flags + () + :top 253886.0000 + :bot -524288.0000 + :points + (4168931.0000 -14104075.0000 4117809.5000 -13471865.0000) + :fwd + (vis vi3 #f)) + (static-load-boundary :flags + () + :top 330190.4687 + :bot -524288.0000 + :points + (4536550.0000 -13960169.0000 4678894.0000 -14351620.0000 4428100.5000 -14425283.0000 4353558.0000 -14051260.0000) + :fwd (load village3 ogre)) + (static-load-boundary :flags (player) + :top -1761940.5000 + :bot -1946392.3750 + :points + (2518956.7500 -7372510.5000 2450104.7500 -7215005.0000) + :bwd + (checkpt "sunkenb-helix" #f)) + (static-load-boundary :flags + () + :top 350009.8437 + :bot -524288.0000 + :points + (4421414.0000 -13636154.0000 4589708.5000 -13556925.0000) + :fwd + (display maincave #f) + :bwd (display maincave display)) + (static-load-boundary :flags + () + :top 272053.6875 + :bot -655558.1250 + :points + (4806917.0000 -12655241.0000 4529194.0000 -12512575.0000) + :fwd (load maincave robocave)) + (static-load-boundary :flags + () + :top 285200.5312 + :bot -524288.0000 + :points + (4042240.5000 -12645708.0000 4297681.5000 -12507810.0000) + :bwd (load maincave darkcave)) + (static-load-boundary :flags + () + :top 401929.8750 + :bot -524288.0000 + :points + (-363218.5312 + -2089629.0000 + -558766.6875 + -1816698.6250 + -769622.8125 + -2043451.8750 + -816882.1250 + -2051455.1250 + -950145.6250 + -2013974.5000 + -967790.6250 + -1907695.0000 + -1064691.2500 + -1966847.8750 + -1147540.0000 + -1944348.2500 + -1243268.8750 + -2202510.2500 + -1249669.5000 + -2319393.7500) + :fwd (display village1 display) + :bwd (display village1 special-vis)) + (static-load-boundary :flags + () + :top 380333.4062 + :bot -40101.1562 + :points + (1818615.7500 -1094335.5000 1622619.2500 -978791.6875) + :fwd (display village1 special-vis) + :bwd + (display village1 #f)) + (static-load-boundary :flags + () + :top 334675.0937 + :bot 183791.4687 + :points + (-655431.8125 -7037484.5000 -667642.5000 -6660005.5000) + :fwd (display village2 display) + :bwd (display village2 special-vis)) + (static-load-boundary :flags + () + :top 296695.7187 + :bot -524288.0000 + :points + (-590053.0625 -6197793.0000 39494.1289 -6504359.5000) + :fwd (display village2 display) + :bwd (display village2 special-vis)) + (static-load-boundary :flags + () + :top 297752.6875 + :bot -524288.0000 + :points + (53651.5781 -6363675.5000 58039.6875 -6204528.0000) + :fwd (display village2 special-vis) + :bwd + (display village2 #f)) + (static-load-boundary :flags + () + :top 561218.0000 + :bot -15459.1718 + :points + (5076681.0000 -12251444.0000 4974694.0000 -12024020.0000) + :bwd + (vis mai #f)) + (static-load-boundary :flags + () + :top 561218.0000 + :bot -22197.6718 + :points + (5192028.0000 -12126635.0000 4954258.5000 -11802688.0000) + :fwd + (vis rob #f)) + (static-load-boundary :flags + () + :top 404182.7500 + :bot -524288.0000 + :points + (4167032.0000 -13159265.0000 4419089.0000 -12857725.0000 4712033.0000 -13110535.0000) + :fwd (display village3 display) + :bwd + (display village3 #f)) + (static-load-boundary :flags + () + :top 107354.8515 + :bot -647564.3125 + :points + (-279364.6250 131636.4531 -270673.4375 160221.8750) + :fwd + (display beach #f) + :bwd (display beach display)) + (static-load-boundary :flags + () + :top 329926.1875 + :bot 114555.8750 + :points + (4630288.0000 -14662835.0000 4776346.0000 -14281154.0000 5078574.5000 -14217605.0000) + :fwd (load village3 lavatube)) + (static-load-boundary :flags + () + :top 361505.0312 + :bot 141642.4062 + :points + (5145395.0000 -14585060.0000 4969281.0000 -14637079.0000) + :fwd + (display lavatube #f) + :bwd (display lavatube display)) + (static-load-boundary :flags + () + :top 361505.0312 + :bot 141642.4062 + :points + (5280860.0000 -14529410.0000 5363850.0000 -14811145.0000) + :bwd + (vis lav #f)) + (static-load-boundary :flags + () + :top 145672.2812 + :bot -274960.5312 + :points + (9277345.0000 -14277290.0000 9266303.0000 -13929350.0000) + :bwd (load village3 lavatube)) + (static-load-boundary :flags (player) + :top 275554.9375 + :bot 103589.1562 + :points + (769670.2500 -8183583.5000 945858.7500 -8171829.5000) + :fwd + (checkpt "ogre-race" #f)) + (static-load-boundary :flags + () + :top 104778.3359 + :bot -424794.8437 + :points + (11251180.0000 -18687074.0000 11606826.0000 -18673318.0000) + :fwd + (display lavatube #f) + :bwd (display lavatube display)) + (static-load-boundary :flags + () + :top -6276.1269 + :bot -424794.8437 + :points + (10794323.0000 -19184136.0000 11542925.0000 -19117040.0000 11854880.0000 -18949898.0000) + :bwd (load citadel lavatube)) + (static-load-boundary :flags (closed) + :top -35278.4179 + :bot -524288.0000 + :points + (4869388.0000 -12242570.0000 4850643.0000 -12138500.0000 4982147.0000 -12130348.0000 5004734.0000 -12257655.0000) + :fwd + (vis rob #f)) + (static-load-boundary :flags (closed) + :top 28870.2265 + :bot -524288.0000 + :points + (4869388.0000 -12242570.0000 4850643.0000 -12138500.0000 4982147.0000 -12130348.0000 5004734.0000 -12257655.0000) + :bwd + (vis mai #f)) + (static-load-boundary :flags (closed) + :top -28209.5117 + :bot -524288.0000 + :points + (4869388.0000 -12242570.0000 4850643.0000 -12138500.0000 4982147.0000 -12130348.0000 5004734.0000 -12257655.0000) + :fwd + (display maincave #f) + :bwd (display maincave display)) + (static-load-boundary :flags + () + :top 275555.1250 + :bot -524288.0000 + :points + (927462.1250 -7305133.0000 763242.7500 -7308856.5000) + :fwd (display village2 display) + :bwd (display village2 special-vis)) + (static-load-boundary :flags (player) + :top 290551.7500 + :bot -524288.0000 + :points + (4047454.5000 -14186495.0000 3804332.0000 -13805874.0000) + :fwd + (checkpt "ogre-end" #f) + :bwd + (checkpt "ogre-end" #f)) + (static-load-boundary :flags (player) + :top 104778.3359 + :bot -257783.7187 + :points + (11326069.0000 -18525588.0000 11278355.0000 -18072140.0000) + :fwd + (checkpt "lavatube-end" #f) + :bwd + (checkpt "lavatube-end" #f)) + (static-load-boundary :flags (player) + :top 524288.0000 + :bot 265248.9375 + :points + (10092448.0000 -16790240.0000 10078353.0000 -16477023.0000) + :fwd + (checkpt "lavatube-after-ribbon" #f) + :bwd + (checkpt "lavatube-after-ribbon" #f)) + (static-load-boundary :flags + () + :top 326689.0000 + :bot -524288.0000 + :points + (143748.8281 -3601507.7500 179947.4375 -3912510.7500) + :bwd (load firecanyon village1)) + (static-load-boundary :flags + () + :top 376514.5625 + :bot -524288.0000 + :points + (418480.4687 -2126829.2500 768319.2500 -2135490.7500) + :fwd + (display village1 #f) + :bwd (display village1 display)) + (static-load-boundary :flags (player) + :top 39044.1210 + :bot -141510.1875 + :points + (10894763.0000 -18893140.0000 10898940.0000 -18972940.0000) + :fwd + (checkpt "citadel-launch-start" #f)) + (static-load-boundary :flags (player) + :top -198.1726 + :bot -146531.0937 + :points + (11416193.0000 -19794980.0000 11485550.0000 -19797886.0000) + :fwd + (checkpt "citadel-plat-start" #f)) + (static-load-boundary :flags (player) + :top 36361.8906 + :bot -36137.2890 + :points + (12126351.0000 -19001848.0000 12122353.0000 -18877466.0000) + :fwd + (checkpt "citadel-generator-start" #f)) + (static-load-boundary :flags + () + :top 171371.1406 + :bot -524288.0000 + :points + (-676129.1250 -6924696.0000 -680121.3125 -6757647.5000) + :fwd (display village2 display) + :bwd (display village2 special-vis)) + (static-load-boundary :flags + () + :top 272053.6875 + :bot -655558.1250 + :points + (4808600.0000 -12651164.0000 4530877.0000 -12508498.0000) + :fwd + (checkpt "maincave-to-robocave" #f)) + (static-load-boundary :flags (player) + :top 164302.4687 + :bot -304623.5000 + :points + (11519060.0000 -18551140.0000 11449090.0000 -18346224.0000 11380415.0000 -18514333.0000) + :fwd + (checkpt "citadel-entrance" #f) + :bwd + (checkpt "citadel-entrance" #f)) + (static-load-boundary :flags (player) + :top 155912.2656 + :bot -524288.0000 + :points + (-302473.8125 -358921.6250 -189703.3437 -88103.3203 -213883.9062 -45797.7343 -569183.0000 -33546.7734) + :fwd (display beach display) + :bwd (display beach display)) + (static-load-boundary :flags (player) + :top 1161083.5000 + :bot 1033513.1250 + :points + (3172378.2500 -14293381.0000 3169853.0000 -14196348.0000) + :bwd + (checkpt "snow-by-ice-lake" #f)) + (static-load-boundary :flags (player) + :top 1050557.6250 + :bot 904951.4375 + :points + (3464265.7500 -13649148.0000 3491810.2500 -13487760.0000) + :bwd + (checkpt "snow-outside-fort" #f)) + (static-load-boundary :flags (player) + :top 980265.1875 + :bot 890780.8125 + :points + (3118024.0000 -13706895.0000 3079293.0000 -13672758.0000) + :bwd + (checkpt "snow-outside-cave" #f)) + (static-load-boundary :flags + () + :top 2404087.0000 + :bot 1792990.8750 + :points + (11801113.0000 -19782276.0000 12074740.0000 -19333410.0000) + :fwd + (checkpt "finalboss-fight" #f) + :bwd + (checkpt "finalboss-start" #f)))) + +(doarray (i *static-load-boundary-list*) (load-boundary-from-template (the-as (array object) i))) diff --git a/goal_src/jak1/engine/level/load-boundary-h.gc b/goal_src/jak1/engine/level/load-boundary-h.gc index 007acb299c..92f9dc4f7e 100644 --- a/goal_src/jak1/engine/level/load-boundary-h.gc +++ b/goal_src/jak1/engine/level/load-boundary-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/game/game-info-h.gc") -;; name: load-boundary-h.gc -;; name in dgo: load-boundary-h -;; dgos: GAME, ENGINE - ;; Load Boundary ;; This system is responsible for more than just the load boundaries - it also processes the commands ;; from cutscenes to kill/birth certain objects. @@ -21,47 +16,43 @@ ;; the vertex type used for load boundaries (deftype lbvtx (structure) - ((x float) - (y float) - (z float) - (v0 uint8) - (v1 uint8) - (v2 uint8) - (ix uint8) - (quad uint128 :overlay-at x) - (v vector :inline :overlay-at x) - ) - ) + ((x float) + (y float) + (z float) + (v0 uint8) + (v1 uint8) + (v2 uint8) + (ix uint8) + (quad uint128 :overlay-at x) + (v vector :inline :overlay-at x))) ;; the types of commands in load boundaries (defenum load-boundary-cmd :type uint8 (invalid 0) ;; default value - (load 1) ;; load a level! - (cmd2 2) ;; unused? + (load 1) ;; load a level! + (cmd2 2) ;; unused? (display 3) ;; display a level - (vis 4) ;; load the vis data for a level (?) + (vis 4) ;; load the vis data for a level (?) (force-vis 5) ;; force load the vis data (?) - (checkpt 6) ;; assign a checkpoint. + (checkpt 6) ;; assign a checkpoint. ) ;; command to execute when crossing. ;; there are 3 1-byte paramaters and 2 4-byte parameters. (deftype load-boundary-crossing-command (structure) - ((cmd load-boundary-cmd) - (bparm uint8 3) - (parm uint32 2) - (lev0 basic :overlay-at (-> parm 0)) - (lev1 basic :overlay-at (-> parm 1)) - (displev basic :overlay-at (-> parm 0)) - (dispcmd basic :overlay-at (-> parm 1)) - (nick basic :overlay-at (-> parm 0)) - (forcelev basic :overlay-at (-> parm 0)) - (forceonoff basic :overlay-at (-> parm 1)) - (checkname basic :overlay-at (-> parm 0)) - ) - :pack-me - ) + ((cmd load-boundary-cmd) + (bparm uint8 3) + (parm uint32 2) + (lev0 basic :overlay-at (-> parm 0)) + (lev1 basic :overlay-at (-> parm 1)) + (displev basic :overlay-at (-> parm 0)) + (dispcmd basic :overlay-at (-> parm 1)) + (nick basic :overlay-at (-> parm 0)) + (forcelev basic :overlay-at (-> parm 0)) + (forceonoff basic :overlay-at (-> parm 1)) + (checkname basic :overlay-at (-> parm 0))) + :pack-me) (defenum load-boundary-flags :type uint8 @@ -73,22 +64,19 @@ ;; actual boundary ;; vertices come after this in memory (deftype load-boundary (basic) - ((num-points uint16) - (flags load-boundary-flags) - (top-plane float) - (bot-plane float) - (tri-cnt int32) - (next load-boundary) - (cmd-fwd load-boundary-crossing-command :inline) - (cmd-bwd load-boundary-crossing-command :inline) - (rejector vector :inline) - (data lbvtx 1 :inline) - (data2 lbvtx :inline :dynamic :overlay-at (-> data 0)) - ) + ((num-points uint16) + (flags load-boundary-flags) + (top-plane float) + (bot-plane float) + (tri-cnt int32) + (next load-boundary) + (cmd-fwd load-boundary-crossing-command :inline) + (cmd-bwd load-boundary-crossing-command :inline) + (rejector vector :inline) + (data lbvtx 1 :inline) + (data2 lbvtx :inline :dynamic :overlay-at (-> data 0))) (:methods - (new (symbol type int symbol symbol) _type_) - ) - ) + (new (symbol type int symbol symbol) _type_))) ;; linked list of all boundaries (gets set up in load-boundary-data) (define *load-boundary-list* (the-as load-boundary #f)) @@ -101,34 +89,21 @@ (let ((v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* (+ arg0 -1) 16)))))) (set! (-> v0-0 num-points) (the-as uint arg0)) (cond - (arg1 - (set! (-> v0-0 flags) (load-boundary-flags closed)) - ) - (else - (set! (-> v0-0 flags) (load-boundary-flags)) - 0 - ) - ) + (arg1 (set! (-> v0-0 flags) (load-boundary-flags closed))) + (else (set! (-> v0-0 flags) (load-boundary-flags)) 0)) (set! (-> v0-0 top-plane) 524288.0) (set! (-> v0-0 bot-plane) -524288.0) (dotimes (v1-4 arg0) (set! (-> v0-0 data v1-4 quad) (the-as uint128 0)) - (set! (-> v0-0 data v1-4 ix) (the-as uint v1-4)) - ) + (set! (-> v0-0 data v1-4 ix) (the-as uint v1-4))) (set! (-> v0-0 tri-cnt) 0) (set-vector! (-> v0-0 rejector) 0.0 0.0 0.0 268435460.0) (set! (-> v0-0 cmd-fwd cmd) (load-boundary-cmd invalid)) (set! (-> v0-0 cmd-bwd cmd) (load-boundary-cmd invalid)) (when arg2 (set! (-> v0-0 next) *load-boundary-list*) - (set! *load-boundary-list* v0-0) - ) - (if (not arg2) - (set! (-> v0-0 next) #f) - ) - v0-0 - ) - ) - + (set! *load-boundary-list* v0-0)) + (if (not arg2) (set! (-> v0-0 next) #f)) + v0-0)) (define-extern *load-state* load-state) diff --git a/goal_src/jak1/engine/level/load-boundary.gc b/goal_src/jak1/engine/level/load-boundary.gc index 77c46459f5..40de275c4c 100644 --- a/goal_src/jak1/engine/level/load-boundary.gc +++ b/goal_src/jak1/engine/level/load-boundary.gc @@ -1,46 +1,44 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/draw/drawable-ambient-h.gc") (require "engine/game/game-save.gc") (require "engine/level/load-boundary-h.gc") (require "engine/gfx/sky/sky-tng.gc") (require "engine/game/settings.gc") -;; name: load-boundary.gc -;; name in dgo: load-boundary -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; the editor state (deftype lb-editor-parms (basic) - ((boundary load-boundary) - (vertex int32) - (x-origin float) - (z-origin float) - ) - ) + ((boundary load-boundary) + (vertex int32) + (x-origin float) + (z-origin float))) (define *lb-editor-parms* (new 'global 'lb-editor-parms)) -(set! (-> *lb-editor-parms* boundary) #f) +(set! (-> *lb-editor-parms* boundary) #f) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Editor Rendering ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-extern triangulate-boundary (function load-boundary object)) + (define-extern find-bounding-circle (function load-boundary none)) + (define-extern check-boundary (function load-boundary none)) + (define-extern split-monotone-polygon (function load-boundary int none)) + (define-extern fix-boundary-normals (function load-boundary none)) ;; The editor uses the same system as sky for drawing large polygons. ;; using mips2c so we get the regs in C++. (def-mips2c init-boundary-regs (function none)) + #| (defun-debug init-boundary-regs () (local-vars (v1-2 float)) @@ -88,54 +86,53 @@ (defun-debug add-boundary-shader ((arg0 texture-id) (arg1 dma-buffer)) "Add the adgif shader to the dma-buffer. It's never changed during load boundary rendering" (let* ((v1-0 arg1) - (a1-1 (the-as object (-> v1-0 base))) - ) + (a1-1 (the-as object (-> v1-0 base)))) (set! (-> (the-as gs-gif-tag a1-1) tag) (new 'static 'gif-tag64 :nloop #x1 :nreg #x5)) - (set! (-> (the-as gs-gif-tag a1-1) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - ) - ) - (set! (-> v1-0 base) (&+ (the-as pointer a1-1) 16)) - ) + (set! (-> (the-as gs-gif-tag a1-1) regs) + (new 'static + 'gif-tag-regs + :regs0 (gif-reg-id a+d) + :regs1 (gif-reg-id a+d) + :regs2 (gif-reg-id a+d) + :regs3 (gif-reg-id a+d) + :regs4 (gif-reg-id a+d))) + (set! (-> v1-0 base) (&+ (the-as pointer a1-1) 16))) (let ((s5-0 (the-as adgif-shader (-> arg1 base)))) (adgif-shader<-texture-simple! s5-0 (lookup-texture-by-id arg0)) (set! (-> s5-0 alpha) (new 'static 'gs-alpha :b #x1 :d #x1)) (set! (-> s5-0 tex0 tfx) 0) (set! (-> s5-0 tex1 mmag) 0) - (set! (-> s5-0 clamp) (new 'static 'gs-clamp)) - ) + (set! (-> s5-0 clamp) (new 'static 'gs-clamp))) 0 (&+! (-> arg1 base) 80) - (none) - ) + (none)) ;; note: draw-boundary-polygon is in C++ only, called from the two functions below. ;; render-boundary-quad (def-mips2c render-boundary-quad (function lbvtx dma-buffer none)) + ;; render-boundary-tri (def-mips2c render-boundary-tri (function lbvtx dma-buffer none)) ;; the polygon curently rendering. -(define *boundary-polygon* (new 'static 'inline-array lbvtx 12 - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - (new 'static 'lbvtx) - ) - ) +(define *boundary-polygon* + (new 'static + 'inline-array + lbvtx + 12 + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx) + (new 'static 'lbvtx))) (defun-debug draw-boundary-side ((arg0 load-boundary) (arg1 integer) (arg2 integer) (arg3 dma-buffer) (arg4 symbol)) (rlet ((vf27 :class vf)) @@ -145,168 +142,132 @@ (set! (-> a2-2 x) (-> v1-2 x)) (set! (-> a2-2 y) (-> arg0 bot-plane)) (set! (-> a2-2 z) (-> v1-2 z)) - (set! (-> a2-2 v w) 1.0) - ) + (set! (-> a2-2 v w) 1.0)) (let ((a2-4 (-> *boundary-polygon* 3))) (set! (-> a2-4 x) (-> a1-3 x)) (set! (-> a2-4 y) (-> arg0 bot-plane)) (set! (-> a2-4 z) (-> a1-3 z)) - (set! (-> a2-4 v w) 1.0) - ) + (set! (-> a2-4 v w) 1.0)) (let ((a2-6 (-> *boundary-polygon* 6))) (set! (-> a2-6 x) (-> a1-3 x)) (set! (-> a2-6 y) (-> arg0 top-plane)) (set! (-> a2-6 z) (-> a1-3 z)) - (set! (-> a2-6 v w) 1.0) - ) - ) + (set! (-> a2-6 v w) 1.0))) (let ((a1-5 (-> *boundary-polygon* 9))) (set! (-> a1-5 x) (-> v1-2 x)) (set! (-> a1-5 y) (-> arg0 top-plane)) (set! (-> a1-5 z) (-> v1-2 z)) - (set! (-> a1-5 v w) 1.0) - ) - ) + (set! (-> a1-5 v w) 1.0))) (cond (arg4 - (let ((v1-4 (-> *boundary-polygon* 1))) - (set! (-> v1-4 x) 0.0) - (set! (-> v1-4 y) 0.0) - (set! (-> v1-4 z) 1.0) - (set! (-> v1-4 v w) 1.0) - ) - (let ((v1-6 (-> *boundary-polygon* 4))) - (set! (-> v1-6 x) 1.0) - (set! (-> v1-6 y) 0.0) - (set! (-> v1-6 z) 1.0) - (set! (-> v1-6 v w) 1.0) - ) - (let ((v1-8 (-> *boundary-polygon* 7))) - (set! (-> v1-8 x) 1.0) - (set! (-> v1-8 y) 8.0) - (set! (-> v1-8 z) 1.0) - (set! (-> v1-8 v w) 1.0) - ) - (let ((v1-10 (-> *boundary-polygon* 10))) - (set! (-> v1-10 x) 0.0) - (set! (-> v1-10 y) 8.0) - (set! (-> v1-10 z) 1.0) - (set! (-> v1-10 v w) 1.0) - ) - ) + (let ((v1-4 (-> *boundary-polygon* 1))) + (set! (-> v1-4 x) 0.0) + (set! (-> v1-4 y) 0.0) + (set! (-> v1-4 z) 1.0) + (set! (-> v1-4 v w) 1.0)) + (let ((v1-6 (-> *boundary-polygon* 4))) + (set! (-> v1-6 x) 1.0) + (set! (-> v1-6 y) 0.0) + (set! (-> v1-6 z) 1.0) + (set! (-> v1-6 v w) 1.0)) + (let ((v1-8 (-> *boundary-polygon* 7))) + (set! (-> v1-8 x) 1.0) + (set! (-> v1-8 y) 8.0) + (set! (-> v1-8 z) 1.0) + (set! (-> v1-8 v w) 1.0)) + (let ((v1-10 (-> *boundary-polygon* 10))) + (set! (-> v1-10 x) 0.0) + (set! (-> v1-10 y) 8.0) + (set! (-> v1-10 z) 1.0) + (set! (-> v1-10 v w) 1.0))) (else - (let ((v1-12 (-> *boundary-polygon* 1))) - (set! (-> v1-12 x) 1.0) - (set! (-> v1-12 y) 0.0) - (set! (-> v1-12 z) 1.0) - (set! (-> v1-12 v w) 1.0) - ) - (let ((v1-14 (-> *boundary-polygon* 4))) - (set! (-> v1-14 x) 0.0) - (set! (-> v1-14 y) 0.0) - (set! (-> v1-14 z) 1.0) - (set! (-> v1-14 v w) 1.0) - ) - (let ((v1-16 (-> *boundary-polygon* 7))) - (set! (-> v1-16 x) 0.0) - (set! (-> v1-16 y) 8.0) - (set! (-> v1-16 z) 1.0) - (set! (-> v1-16 v w) 1.0) - ) - (let ((v1-18 (-> *boundary-polygon* 10))) - (set! (-> v1-18 x) 1.0) - (set! (-> v1-18 y) 8.0) - (set! (-> v1-18 z) 1.0) - (set! (-> v1-18 v w) 1.0) - ) - ) - ) + (let ((v1-12 (-> *boundary-polygon* 1))) + (set! (-> v1-12 x) 1.0) + (set! (-> v1-12 y) 0.0) + (set! (-> v1-12 z) 1.0) + (set! (-> v1-12 v w) 1.0)) + (let ((v1-14 (-> *boundary-polygon* 4))) + (set! (-> v1-14 x) 0.0) + (set! (-> v1-14 y) 0.0) + (set! (-> v1-14 z) 1.0) + (set! (-> v1-14 v w) 1.0)) + (let ((v1-16 (-> *boundary-polygon* 7))) + (set! (-> v1-16 x) 0.0) + (set! (-> v1-16 y) 8.0) + (set! (-> v1-16 z) 1.0) + (set! (-> v1-16 v w) 1.0)) + (let ((v1-18 (-> *boundary-polygon* 10))) + (set! (-> v1-18 x) 1.0) + (set! (-> v1-18 y) 8.0) + (set! (-> v1-18 z) 1.0) + (set! (-> v1-18 v w) 1.0)))) (init-boundary-regs) ;;(.lvf vf27 (&-> *sky-tng-data* giftag-roof qword)) (set-sky-vf27 (&-> *sky-tng-data* giftag-roof qword)) (render-boundary-quad (-> *boundary-polygon* 0) arg3) 0 - (none) - ) - ) + (none))) (defun-debug draw-boundary-cap ((arg0 load-boundary) (arg1 float) (arg2 dma-buffer) (arg3 symbol)) (rlet ((vf27 :class vf)) (dotimes (s2-0 (-> arg0 tri-cnt)) (let ((a1-1 (-> arg0 data (-> arg0 data s2-0 v0))) (a0-1 (-> arg0 data (-> arg0 data s2-0 v1))) - (v1-15 (-> arg0 data (-> arg0 data s2-0 v2))) - ) + (v1-15 (-> arg0 data (-> arg0 data s2-0 v2)))) (let ((a2-2 (-> *boundary-polygon* 0))) (set! (-> a2-2 x) (-> a1-1 x)) (set! (-> a2-2 y) arg1) (set! (-> a2-2 z) (-> a1-1 z)) - (set! (-> a2-2 v w) 1.0) - ) + (set! (-> a2-2 v w) 1.0)) (let ((a1-3 (-> *boundary-polygon* 3))) (set! (-> a1-3 x) (-> a0-1 x)) (set! (-> a1-3 y) arg1) (set! (-> a1-3 z) (-> a0-1 z)) - (set! (-> a1-3 v w) 1.0) - ) + (set! (-> a1-3 v w) 1.0)) (let ((a0-3 (-> *boundary-polygon* 6))) (set! (-> a0-3 x) (-> v1-15 x)) (set! (-> a0-3 y) arg1) (set! (-> a0-3 z) (-> v1-15 z)) - (set! (-> a0-3 v w) 1.0) - ) - ) + (set! (-> a0-3 v w) 1.0))) (cond (arg3 - (let ((v1-17 (-> *boundary-polygon* 1))) - (set! (-> v1-17 x) 0.0) - (set! (-> v1-17 y) 0.0) - (set! (-> v1-17 z) 1.0) - (set! (-> v1-17 v w) 1.0) - ) - (let ((v1-19 (-> *boundary-polygon* 4))) - (set! (-> v1-19 x) 0.0) - (set! (-> v1-19 y) 1.0) - (set! (-> v1-19 z) 1.0) - (set! (-> v1-19 v w) 1.0) - ) - (let ((v1-21 (-> *boundary-polygon* 7))) - (set! (-> v1-21 x) 1.0) - (set! (-> v1-21 y) 0.0) - (set! (-> v1-21 z) 1.0) - (set! (-> v1-21 v w) 1.0) - ) - ) + (let ((v1-17 (-> *boundary-polygon* 1))) + (set! (-> v1-17 x) 0.0) + (set! (-> v1-17 y) 0.0) + (set! (-> v1-17 z) 1.0) + (set! (-> v1-17 v w) 1.0)) + (let ((v1-19 (-> *boundary-polygon* 4))) + (set! (-> v1-19 x) 0.0) + (set! (-> v1-19 y) 1.0) + (set! (-> v1-19 z) 1.0) + (set! (-> v1-19 v w) 1.0)) + (let ((v1-21 (-> *boundary-polygon* 7))) + (set! (-> v1-21 x) 1.0) + (set! (-> v1-21 y) 0.0) + (set! (-> v1-21 z) 1.0) + (set! (-> v1-21 v w) 1.0))) (else - (let ((v1-23 (-> *boundary-polygon* 1))) - (set! (-> v1-23 x) 1.0) - (set! (-> v1-23 y) 0.0) - (set! (-> v1-23 z) 1.0) - (set! (-> v1-23 v w) 1.0) - ) - (let ((v1-25 (-> *boundary-polygon* 4))) - (set! (-> v1-25 x) 1.0) - (set! (-> v1-25 y) 1.0) - (set! (-> v1-25 z) 1.0) - (set! (-> v1-25 v w) 1.0) - ) - (let ((v1-27 (-> *boundary-polygon* 7))) - (set! (-> v1-27 x) 0.0) - (set! (-> v1-27 y) 0.0) - (set! (-> v1-27 z) 1.0) - (set! (-> v1-27 v w) 1.0) - ) - ) - ) + (let ((v1-23 (-> *boundary-polygon* 1))) + (set! (-> v1-23 x) 1.0) + (set! (-> v1-23 y) 0.0) + (set! (-> v1-23 z) 1.0) + (set! (-> v1-23 v w) 1.0)) + (let ((v1-25 (-> *boundary-polygon* 4))) + (set! (-> v1-25 x) 1.0) + (set! (-> v1-25 y) 1.0) + (set! (-> v1-25 z) 1.0) + (set! (-> v1-25 v w) 1.0)) + (let ((v1-27 (-> *boundary-polygon* 7))) + (set! (-> v1-27 x) 0.0) + (set! (-> v1-27 y) 0.0) + (set! (-> v1-27 z) 1.0) + (set! (-> v1-27 v w) 1.0)))) (init-boundary-regs) ;;(.lvf vf27 (&-> *sky-tng-data* giftag-roof qword)) (set-sky-vf27 (&-> *sky-tng-data* giftag-roof qword)) - (render-boundary-tri (-> *boundary-polygon* 0) arg2) - ) + (render-boundary-tri (-> *boundary-polygon* 0) arg2)) 0 - (none) - ) - ) + (none))) (defun-debug boundary-set-color ((arg0 lbvtx) (arg1 load-boundary-crossing-command)) "Set the color based on the color." @@ -316,99 +277,41 @@ (set! (-> v1-1 x) 128.0) (set! (-> v1-1 y) 128.0) (set! (-> v1-1 z) 128.0) - (set! (-> v1-1 v w) 128.0) - ) - ) + (set! (-> v1-1 v w) 128.0))) (((load-boundary-cmd cmd2)) - (let ((v1-2 arg0)) - (set! (-> v1-2 x) 0.0) - (set! (-> v1-2 y) 0.0) - (set! (-> v1-2 z) 0.0) - (set! (-> v1-2 v w) 128.0) - ) - ) + (let ((v1-2 arg0)) (set! (-> v1-2 x) 0.0) (set! (-> v1-2 y) 0.0) (set! (-> v1-2 z) 0.0) (set! (-> v1-2 v w) 128.0))) (((load-boundary-cmd display)) (cond ((-> arg1 lev1) - (let ((v1-4 arg0)) - (set! (-> v1-4 x) 128.0) - (set! (-> v1-4 y) 128.0) - (set! (-> v1-4 z) 0.0) - (set! (-> v1-4 v w) 128.0) - ) - ) + (let ((v1-4 arg0)) (set! (-> v1-4 x) 128.0) (set! (-> v1-4 y) 128.0) (set! (-> v1-4 z) 0.0) (set! (-> v1-4 v w) 128.0))) (else - (let ((v1-5 arg0)) - (set! (-> v1-5 x) 64.0) - (set! (-> v1-5 y) 64.0) - (set! (-> v1-5 z) 0.0) - (set! (-> v1-5 v w) 128.0) - ) - ) - ) - ) + (let ((v1-5 arg0)) (set! (-> v1-5 x) 64.0) (set! (-> v1-5 y) 64.0) (set! (-> v1-5 z) 0.0) (set! (-> v1-5 v w) 128.0))))) (((load-boundary-cmd vis)) - (let ((v1-6 arg0)) - (set! (-> v1-6 x) 128.0) - (set! (-> v1-6 y) 0.0) - (set! (-> v1-6 z) 0.0) - (set! (-> v1-6 v w) 128.0) - ) - ) + (let ((v1-6 arg0)) (set! (-> v1-6 x) 128.0) (set! (-> v1-6 y) 0.0) (set! (-> v1-6 z) 0.0) (set! (-> v1-6 v w) 128.0))) (((load-boundary-cmd checkpt)) - (let ((v1-7 arg0)) - (set! (-> v1-7 x) 0.0) - (set! (-> v1-7 y) 128.0) - (set! (-> v1-7 z) 128.0) - (set! (-> v1-7 v w) 128.0) - ) - ) + (let ((v1-7 arg0)) (set! (-> v1-7 x) 0.0) (set! (-> v1-7 y) 128.0) (set! (-> v1-7 z) 128.0) (set! (-> v1-7 v w) 128.0))) (else - (let ((v1-8 arg0)) - (set! (-> v1-8 x) 64.0) - (set! (-> v1-8 y) 64.0) - (set! (-> v1-8 z) 64.0) - (set! (-> v1-8 v w) 128.0) - ) - ) - ) + (let ((v1-8 arg0)) (set! (-> v1-8 x) 64.0) (set! (-> v1-8 y) 64.0) (set! (-> v1-8 z) 64.0) (set! (-> v1-8 v w) 128.0)))) 0 - (none) - ) - + (none)) (defun-debug render-boundary ((arg0 load-boundary)) - (let ((s3-0 (or (!= arg0 (-> *lb-editor-parms* boundary)) - (logtest? (-> *display* real-actual-frame-counter) 4) - ) - )) + (let ((s3-0 (or (!= arg0 (-> *lb-editor-parms* boundary)) (logtest? (-> *display* real-actual-frame-counter) 4)))) (with-dma-buffer-add-bucket ((s5-0 (-> (current-frame) global-buf)) (bucket-id debug)) (dma-buffer-add-gs-set-flusha s5-0 - (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) - (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal))) - (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) - ) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x1c0 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest greater-equal) :aref #x26 :zte #x1 :ztst (gs-ztest greater-equal))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) (boundary-set-color (-> *boundary-polygon* 2) (-> arg0 cmd-fwd)) (boundary-set-color (-> *boundary-polygon* 5) (-> arg0 cmd-bwd)) (with-cnt-vif-block-qwc (s5-0) - (add-boundary-shader (new 'static 'texture-id :index #x33 :page #x2) s5-0) - (cond - ((logtest? (-> arg0 flags) (load-boundary-flags closed)) - (draw-boundary-cap arg0 (-> arg0 top-plane) s5-0 s3-0) - ) - (else - (dotimes (s1-0 (the-as int (+ (-> arg0 num-points) -1))) - (draw-boundary-side arg0 s1-0 (+ s1-0 1) s5-0 s3-0) - ) - ) - ) - (close-sky-buffer s5-0) - ) - ) - ) + (add-boundary-shader (new 'static 'texture-id :index #x33 :page #x2) s5-0) + (cond + ((logtest? (-> arg0 flags) (load-boundary-flags closed)) (draw-boundary-cap arg0 (-> arg0 top-plane) s5-0 s3-0)) + (else (dotimes (s1-0 (the-as int (+ (-> arg0 num-points) -1))) (draw-boundary-side arg0 s1-0 (+ s1-0 1) s5-0 s3-0)))) + (close-sky-buffer s5-0)))) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Load Boundary File @@ -417,80 +320,63 @@ ;; the load-boundary-data.gc file can be re-generated after editing load boundaries. (defmacro static-lb-list (&rest lbs) - `(new 'static 'boxed-array :type array :length ,(length lbs) :allocated-length ,(length lbs) - ,@(reverse lbs) - ) - ) - -(defmacro static-load-boundary (&key flags - &key top &key bot - &key points - &key (fwd (invalid #f #f)) - &key (bwd (invalid #f #f))) - `(new 'static 'boxed-array :type object :length 4 :allocated-length 4 - (the binteger (load-boundary-flags ,@flags)) - (new 'static 'boxed-array :type float :length ,(+ 2 (length points)) :allocated-length ,(+ 2 (length points)) - ,top ,bot - ,@points - ) - '((the binteger (load-boundary-cmd ,(first fwd))) ,(second fwd) ,(third fwd)) - '((the binteger (load-boundary-cmd ,(first bwd))) ,(second bwd) ,(third bwd)) - ) - ) + `(new 'static 'boxed-array :type array :length ,(length lbs) :allocated-length ,(length lbs) ,@(reverse lbs))) + +(defmacro static-load-boundary (&key flags &key top &key bot &key points &key (fwd (invalid #f #f)) &key (bwd (invalid #f #f))) + `(new 'static + 'boxed-array + :type + object + :length 4 + :allocated-length 4 + (the binteger (load-boundary-flags ,@flags)) + (new 'static + 'boxed-array + :type + float + :length + ,(+ 2 (length points)) + :allocated-length + ,(+ 2 (length points)) + ,top + ,bot + ,@points) + '((the binteger (load-boundary-cmd ,(first fwd))) ,(second fwd) ,(third fwd)) + '((the binteger (load-boundary-cmd ,(first bwd))) ,(second bwd) ,(third bwd)))) (defun-debug format-boundary-cmd ((arg0 load-boundary-crossing-command)) (case (-> arg0 cmd) - (((load-boundary-cmd load)) - (format *stdcon* " LOAD(~A,~A)~%" (-> arg0 lev0) (-> arg0 lev1)) - ) - (((load-boundary-cmd cmd2)) - ) + (((load-boundary-cmd load)) (format *stdcon* " LOAD(~A,~A)~%" (-> arg0 lev0) (-> arg0 lev1))) + (((load-boundary-cmd cmd2))) (((load-boundary-cmd display)) (if (-> arg0 lev1) - (format *stdcon* " DISPLAY(~A,~A)~%" (-> arg0 lev0) (-> arg0 lev1)) - (format *stdcon* " DISPLAY(~A,OFF)~%" (-> arg0 lev0)) - ) - ) - (((load-boundary-cmd vis)) - (format *stdcon* " VIS(~A)~%" (-> arg0 lev0)) - ) - (((load-boundary-cmd checkpt)) - (format *stdcon* " CHECKPT(~A)~%" (-> arg0 lev0)) - ) - ) + (format *stdcon* " DISPLAY(~A,~A)~%" (-> arg0 lev0) (-> arg0 lev1)) + (format *stdcon* " DISPLAY(~A,OFF)~%" (-> arg0 lev0)))) + (((load-boundary-cmd vis)) (format *stdcon* " VIS(~A)~%" (-> arg0 lev0))) + (((load-boundary-cmd checkpt)) (format *stdcon* " CHECKPT(~A)~%" (-> arg0 lev0)))) 0 - (none) - ) + (none)) (defun-debug edit-load-boundaries () (let* ((gp-0 *lb-editor-parms*) - (s5-0 (-> gp-0 boundary)) - ) + (s5-0 (-> gp-0 boundary))) (format *stdcon* "~3L") (cond - ((not s5-0) - (format *stdcon* "No load boundary selected - use Player 2 pad to select~%") - ) + ((not s5-0) (format *stdcon* "No load boundary selected - use Player 2 pad to select~%")) (else - (format *stdcon* "Selected load boundary ~X~%" s5-0) - (if (logtest? (-> s5-0 flags) (load-boundary-flags player)) - (format *stdcon* "PLAYER activated~%") - (format *stdcon* "CAMERA activated~%") - ) - (when (nonzero? (-> s5-0 cmd-fwd cmd)) - (format *stdcon* "in->out~%") - (format-boundary-cmd (-> s5-0 cmd-fwd)) - ) - (when (nonzero? (-> s5-0 cmd-bwd cmd)) - (format *stdcon* "out->in~%") - (format-boundary-cmd (-> s5-0 cmd-bwd)) - ) - ) - ) + (format *stdcon* "Selected load boundary ~X~%" s5-0) + (if (logtest? (-> s5-0 flags) (load-boundary-flags player)) + (format *stdcon* "PLAYER activated~%") + (format *stdcon* "CAMERA activated~%")) + (when (nonzero? (-> s5-0 cmd-fwd cmd)) + (format *stdcon* "in->out~%") + (format-boundary-cmd (-> s5-0 cmd-fwd))) + (when (nonzero? (-> s5-0 cmd-bwd cmd)) + (format *stdcon* "out->in~%") + (format-boundary-cmd (-> s5-0 cmd-bwd))))) (format *stdcon* "~0L") (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> *math-camera* inv-camera-rot vector 0 quad)) (set! (-> s4-0 quad) (-> *math-camera* inv-camera-rot vector 1 quad)) (set! (-> s3-0 y) 0.0) @@ -502,15 +388,11 @@ (add-debug-sphere #t (bucket-id debug-no-zbuf) s2-0 8192.0 (new 'static 'rgba :a #x80)) (when (not (logtest? (-> s5-0 flags) (load-boundary-flags closed))) (set! (-> s2-0 y) (-> s5-0 bot-plane)) - (add-debug-sphere #t (bucket-id debug-no-zbuf) s2-0 8192.0 (new 'static 'rgba :a #x80)) - ) - ) - ) + (add-debug-sphere #t (bucket-id debug-no-zbuf) s2-0 8192.0 (new 'static 'rgba :a #x80))))) (let* ((f30-1 (* 4096.0 (analog-input (the-as int (-> *cpad-list* cpads 1 leftx)) 128.0 48.0 110.0 -1.0))) (f28-1 (* 4096.0 (analog-input (the-as int (-> *cpad-list* cpads 1 lefty)) 128.0 48.0 110.0 -1.0))) (f30-2 (+ f30-1 (* 409.6 (analog-input (the-as int (-> *cpad-list* cpads 1 rightx)) 128.0 48.0 110.0 -1.0)))) - (f0-10 (+ f28-1 (* 409.6 (analog-input (the-as int (-> *cpad-list* cpads 1 righty)) 128.0 48.0 110.0 -1.0)))) - ) + (f0-10 (+ f28-1 (* 409.6 (analog-input (the-as int (-> *cpad-list* cpads 1 righty)) 128.0 48.0 110.0 -1.0))))) (cond ((cpad-hold? 1 x) (cond @@ -519,89 +401,46 @@ (+! (-> s5-0 data v1-37 x) (* f30-2 (-> s3-0 x))) (+! (-> s5-0 data v1-37 z) (* f30-2 (-> s3-0 z))) (+! (-> s5-0 data v1-37 x) (* f0-10 (-> s4-0 x))) - (+! (-> s5-0 data v1-37 z) (* f0-10 (-> s4-0 z))) - ) - ) + (+! (-> s5-0 data v1-37 z) (* f0-10 (-> s4-0 z))))) (else - (+! (-> s5-0 data (-> gp-0 vertex) x) (* f30-2 (-> s3-0 x))) - (+! (-> s5-0 data (-> gp-0 vertex) z) (* f30-2 (-> s3-0 z))) - (+! (-> s5-0 data (-> gp-0 vertex) x) (* f0-10 (-> s4-0 x))) - (+! (-> s5-0 data (-> gp-0 vertex) z) (* f0-10 (-> s4-0 z))) - ) - ) + (+! (-> s5-0 data (-> gp-0 vertex) x) (* f30-2 (-> s3-0 x))) + (+! (-> s5-0 data (-> gp-0 vertex) z) (* f30-2 (-> s3-0 z))) + (+! (-> s5-0 data (-> gp-0 vertex) x) (* f0-10 (-> s4-0 x))) + (+! (-> s5-0 data (-> gp-0 vertex) z) (* f0-10 (-> s4-0 z))))) (set! (-> s5-0 tri-cnt) 0) - 0 - ) - ((cpad-hold? 1 r1) - (if s5-0 - (+! (-> s5-0 top-plane) f0-10) - ) - ) - ((cpad-hold? 1 r2) - (if s5-0 - (+! (-> s5-0 bot-plane) f0-10) - ) - ) - ((cpad-pressed? 1 up) - (if s5-0 - (set! s5-0 (-> s5-0 next)) - (set! s5-0 *load-boundary-list*) - ) - (set! (-> gp-0 vertex) -1) - ) + 0) + ((cpad-hold? 1 r1) (if s5-0 (+! (-> s5-0 top-plane) f0-10))) + ((cpad-hold? 1 r2) (if s5-0 (+! (-> s5-0 bot-plane) f0-10))) + ((cpad-pressed? 1 up) (if s5-0 (set! s5-0 (-> s5-0 next)) (set! s5-0 *load-boundary-list*)) (set! (-> gp-0 vertex) -1)) ((cpad-pressed? 1 down) (cond - ((= s5-0 *load-boundary-list*) - (set! s5-0 (the-as load-boundary #f)) - ) + ((= s5-0 *load-boundary-list*) (set! s5-0 (the-as load-boundary #f))) (else - (let ((v1-95 *load-boundary-list*)) - (while v1-95 - (when (= s5-0 (-> v1-95 next)) - (set! s5-0 v1-95) - (set! v1-95 (the-as load-boundary #f)) - ) - (if v1-95 - (set! v1-95 (-> v1-95 next)) - ) - ) - ) - ) - ) - (set! (-> gp-0 vertex) -1) - ) + (let ((v1-95 *load-boundary-list*)) + (while v1-95 + (when (= s5-0 (-> v1-95 next)) + (set! s5-0 v1-95) + (set! v1-95 (the-as load-boundary #f))) + (if v1-95 (set! v1-95 (-> v1-95 next))))))) + (set! (-> gp-0 vertex) -1)) ((cpad-pressed? 1 right) (+! (-> gp-0 vertex) 1) - (if (= (-> gp-0 vertex) (-> s5-0 num-points)) - (set! (-> gp-0 vertex) -1) - ) - ) + (if (= (-> gp-0 vertex) (-> s5-0 num-points)) (set! (-> gp-0 vertex) -1))) ((cpad-pressed? 1 left) (+! (-> gp-0 vertex) -1) - (if (= (-> gp-0 vertex) -2) - (set! (-> gp-0 vertex) (the-as int (+ (-> s5-0 num-points) -1))) - ) - ) - ) - ) - ) - (set! (-> gp-0 boundary) s5-0) - ) + (if (= (-> gp-0 vertex) -2) (set! (-> gp-0 vertex) (the-as int (+ (-> s5-0 num-points) -1)))))))) + (set! (-> gp-0 boundary) s5-0)) 0 - (none) - ) + (none)) (defun-debug copy-load-command! ((arg0 load-boundary-crossing-command) (arg1 load-boundary-crossing-command)) (set! (-> arg0 cmd) (-> arg1 cmd)) (dotimes (v1-1 3) - (set! (-> arg0 bparm v1-1) (-> arg1 bparm v1-1)) - ) + (set! (-> arg0 bparm v1-1) (-> arg1 bparm v1-1))) (dotimes (v1-4 2) - (set! (-> arg0 parm v1-4) (-> arg1 parm v1-4)) - ) + (set! (-> arg0 parm v1-4) (-> arg1 parm v1-4))) 0 - (none) - ) + (none)) (defun-debug copy-load-boundary! ((arg0 load-boundary) (arg1 load-boundary)) (set! (-> arg0 flags) (-> arg1 flags)) @@ -611,215 +450,146 @@ (copy-load-command! (-> arg0 cmd-fwd) (-> arg1 cmd-fwd)) (copy-load-command! (-> arg0 cmd-bwd) (-> arg1 cmd-bwd)) 0 - (none) - ) + (none)) (defun-debug replace-load-boundary ((arg0 load-boundary) (arg1 load-boundary)) (set! (-> arg1 next) (-> arg0 next)) - (if (= (-> *lb-editor-parms* boundary) arg0) - (set! (-> *lb-editor-parms* boundary) arg1) - ) + (if (= (-> *lb-editor-parms* boundary) arg0) (set! (-> *lb-editor-parms* boundary) arg1)) (when (= arg0 *load-boundary-list*) (set! *load-boundary-list* arg1) - (return 0) - ) + (return 0)) (let ((v1-9 *load-boundary-list*)) (while (and v1-9 (!= (-> v1-9 next) arg0)) - (set! v1-9 (-> v1-9 next)) - ) + (set! v1-9 (-> v1-9 next))) (when v1-9 (set! (-> v1-9 next) arg1) - (return 0) - ) - ) + (return 0))) (format 0 "ERROR: Couldn't find old boundary in list!!!!~%") 0 - (none) - ) + (none)) (defun-debug lb-del () (let ((v1-1 (-> *lb-editor-parms* boundary))) (set! (-> *lb-editor-parms* boundary) #f) (when (not v1-1) (format 0 "No boundary selected~%") - (return 0) - ) + (return 0)) (when (= v1-1 *load-boundary-list*) (set! *load-boundary-list* (-> v1-1 next)) - (return 0) - ) + (return 0)) (let ((a0-5 *load-boundary-list*)) (while (and a0-5 (!= (-> a0-5 next) v1-1)) - (set! a0-5 (-> a0-5 next)) - ) + (set! a0-5 (-> a0-5 next))) (when a0-5 (set! (-> a0-5 next) (-> v1-1 next)) - (return 0) - ) - ) - ) + (return 0)))) (format 0 "ERROR: Couldn't find old boundary in list!!!!~%") 0 - (none) - ) + (none)) (defun-debug lb-add-vtx-before () (let* ((v1-0 *lb-editor-parms*) (gp-0 (-> v1-0 boundary)) - (s4-0 (-> v1-0 vertex)) - ) + (s4-0 (-> v1-0 vertex))) (when (not gp-0) (format 0 "No boundary selected~%") - (return 0) - ) + (return 0)) (when (= s4-0 -1) (format 0 "No vertex selected~%") - (return 0) - ) + (return 0)) (let ((s5-0 (new 'global 'load-boundary (the-as int (+ (-> gp-0 num-points) 1)) #f #f))) (copy-load-boundary! s5-0 gp-0) (let ((v1-8 0)) (while (< v1-8 s4-0) (set! (-> s5-0 data v1-8 quad) (-> gp-0 data v1-8 quad)) - (+! v1-8 1) - ) + (+! v1-8 1)) (cond ((zero? s4-0) (set! (-> s5-0 data v1-8 x) (* 0.5 (+ (-> gp-0 data 0 x) (-> gp-0 data (+ (-> gp-0 num-points) -1) x)))) - (set! (-> s5-0 data v1-8 z) (* 0.5 (+ (-> gp-0 data 0 z) (-> gp-0 data (+ (-> gp-0 num-points) -1) z)))) - ) + (set! (-> s5-0 data v1-8 z) (* 0.5 (+ (-> gp-0 data 0 z) (-> gp-0 data (+ (-> gp-0 num-points) -1) z))))) (else - (set! (-> s5-0 data v1-8 x) (* 0.5 (+ (-> gp-0 data (+ s4-0 -1) x) (-> gp-0 data s4-0 x)))) - (set! (-> s5-0 data v1-8 z) (* 0.5 (+ (-> gp-0 data (+ s4-0 -1) z) (-> gp-0 data s4-0 z)))) - ) - ) + (set! (-> s5-0 data v1-8 x) (* 0.5 (+ (-> gp-0 data (+ s4-0 -1) x) (-> gp-0 data s4-0 x)))) + (set! (-> s5-0 data v1-8 z) (* 0.5 (+ (-> gp-0 data (+ s4-0 -1) z) (-> gp-0 data s4-0 z)))))) (let ((v1-9 (+ v1-8 1))) (while (>= (the-as int (-> gp-0 num-points)) v1-9) (set! (-> s5-0 data v1-9 quad) (-> gp-0 data (+ v1-9 -1) quad)) - (+! v1-9 1) - ) - ) - ) - (replace-load-boundary gp-0 s5-0) - ) - ) + (+! v1-9 1)))) + (replace-load-boundary gp-0 s5-0))) 0 - (none) - ) + (none)) (defun-debug lb-add-vtx-after () (let ((gp-0 *lb-editor-parms*)) (let ((s5-0 (-> gp-0 boundary)) - (s3-0 (-> gp-0 vertex)) - ) + (s3-0 (-> gp-0 vertex))) (when (not s5-0) (format 0 "No boundary selected~%") - (return 0) - ) + (return 0)) (when (= s3-0 -1) (format 0 "No vertex selected~%") - (return 0) - ) + (return 0)) (let ((s4-0 (new 'global 'load-boundary (the-as int (+ (-> s5-0 num-points) 1)) #f #f))) (copy-load-boundary! s4-0 s5-0) (let ((v1-7 0)) (while (>= s3-0 v1-7) (set! (-> s4-0 data v1-7 quad) (-> s5-0 data v1-7 quad)) - (+! v1-7 1) - ) + (+! v1-7 1)) (cond ((= s3-0 (+ (-> s5-0 num-points) -1)) (set! (-> s4-0 data v1-7 x) (* 0.5 (+ (-> s5-0 data 0 x) (-> s5-0 data (+ (-> s5-0 num-points) -1) x)))) - (set! (-> s4-0 data v1-7 z) (* 0.5 (+ (-> s5-0 data 0 z) (-> s5-0 data (+ (-> s5-0 num-points) -1) z)))) - ) + (set! (-> s4-0 data v1-7 z) (* 0.5 (+ (-> s5-0 data 0 z) (-> s5-0 data (+ (-> s5-0 num-points) -1) z))))) (else - (set! (-> s4-0 data v1-7 x) (* 0.5 (+ (-> s5-0 data (+ s3-0 1) x) (-> s5-0 data s3-0 x)))) - (set! (-> s4-0 data v1-7 z) (* 0.5 (+ (-> s5-0 data (+ s3-0 1) z) (-> s5-0 data s3-0 z)))) - ) - ) + (set! (-> s4-0 data v1-7 x) (* 0.5 (+ (-> s5-0 data (+ s3-0 1) x) (-> s5-0 data s3-0 x)))) + (set! (-> s4-0 data v1-7 z) (* 0.5 (+ (-> s5-0 data (+ s3-0 1) z) (-> s5-0 data s3-0 z)))))) (let ((v1-8 (+ v1-7 1))) (while (>= (the-as int (-> s5-0 num-points)) v1-8) (set! (-> s4-0 data v1-8 quad) (-> s5-0 data (+ v1-8 -1) quad)) - (+! v1-8 1) - ) - ) - ) - (replace-load-boundary s5-0 s4-0) - ) - ) - (+! (-> gp-0 vertex) 1) - ) + (+! v1-8 1)))) + (replace-load-boundary s5-0 s4-0))) + (+! (-> gp-0 vertex) 1)) 0 - (none) - ) + (none)) (defun-debug lb-del-vtx () (let* ((gp-0 *lb-editor-parms*) - (s5-0 (-> gp-0 boundary)) - ) + (s5-0 (-> gp-0 boundary))) (let ((s3-0 (-> gp-0 vertex))) (when (not s5-0) (format 0 "No boundary selected~%") - (return 0) - ) + (return 0)) (when (= s3-0 -1) (format 0 "No vertex selected~%") - (return 0) - ) + (return 0)) (let ((s4-0 (new 'global 'load-boundary (the-as int (+ (-> s5-0 num-points) -1)) #f #f))) (copy-load-boundary! s4-0 s5-0) (let ((v1-7 0)) (while (< v1-7 s3-0) (set! (-> s4-0 data v1-7 quad) (-> s5-0 data v1-7 quad)) - (+! v1-7 1) - ) + (+! v1-7 1)) (let ((v1-8 (+ v1-7 1))) (while (< v1-8 (the-as int (-> s5-0 num-points))) (set! (-> s4-0 data (+ v1-8 -1) quad) (-> s5-0 data v1-8 quad)) - (+! v1-8 1) - ) - ) - ) - (replace-load-boundary s5-0 s4-0) - ) - ) - (if (= (-> gp-0 vertex) (+ (-> s5-0 num-points) -1)) - (set! (-> gp-0 vertex) -1) - ) - ) + (+! v1-8 1)))) + (replace-load-boundary s5-0 s4-0))) + (if (= (-> gp-0 vertex) (+ (-> s5-0 num-points) -1)) (set! (-> gp-0 vertex) -1))) 0 - (none) - ) + (none)) (defun-debug save-boundary-cmd ((arg0 load-boundary-crossing-command) (arg1 string) (arg2 object)) (case (-> arg0 cmd) - (((load-boundary-cmd load)) - (format arg2 " :~S (load ~A ~A)~%" arg1 (-> arg0 lev0) (-> arg0 lev1)) - ) - (((load-boundary-cmd cmd2)) - ) - (((load-boundary-cmd display)) - (format arg2 " :~S (display ~A ~A)~%" arg1 (-> arg0 lev0) (-> arg0 lev1)) - ) - (((load-boundary-cmd vis)) - (format arg2 " :~S (vis ~A #f)~%" arg1 (-> arg0 lev0)) - ) - (((load-boundary-cmd force-vis)) - (format arg2 " :~S (force-vis ~A ~A)~%" arg1 (-> arg0 lev0) (-> arg0 lev1)) - ) - (((load-boundary-cmd checkpt)) - (format arg2 " :~S (checkpt ~A #f)~%" arg1 (-> arg0 lev0)) - ) - ) + (((load-boundary-cmd load)) (format arg2 " :~S (load ~A ~A)~%" arg1 (-> arg0 lev0) (-> arg0 lev1))) + (((load-boundary-cmd cmd2))) + (((load-boundary-cmd display)) (format arg2 " :~S (display ~A ~A)~%" arg1 (-> arg0 lev0) (-> arg0 lev1))) + (((load-boundary-cmd vis)) (format arg2 " :~S (vis ~A #f)~%" arg1 (-> arg0 lev0))) + (((load-boundary-cmd force-vis)) (format arg2 " :~S (force-vis ~A ~A)~%" arg1 (-> arg0 lev0) (-> arg0 lev1))) + (((load-boundary-cmd checkpt)) (format arg2 " :~S (checkpt ~A #f)~%" arg1 (-> arg0 lev0)))) 0 - (none) - ) + (none)) (defun load-boundary-from-template ((arg0 (array object))) (let* ((s5-0 (the-as (array float) (-> arg0 1))) (a2-0 (+ (/ (-> s5-0 length) 2) -1)) - (v0-0 (new 'global 'load-boundary a2-0 #f #t)) - ) + (v0-0 (new 'global 'load-boundary a2-0 #f #t))) (set! (-> v0-0 flags) (the-as load-boundary-flags (/ (the-as int (-> arg0 0)) 8))) (set! (-> v0-0 top-plane) (-> s5-0 0)) (set! (-> v0-0 bot-plane) (-> s5-0 1)) @@ -827,28 +597,19 @@ (while (< v1-5 (-> s5-0 length)) (let ((a0-6 (-> v0-0 data (+ (/ v1-5 2) -1)))) (set! (-> a0-6 x) (-> s5-0 v1-5)) - (set! (-> a0-6 z) (-> s5-0 (+ v1-5 1))) - ) - (+! v1-5 2) - ) - ) + (set! (-> a0-6 z) (-> s5-0 (+ v1-5 1)))) + (+! v1-5 2))) (let ((v1-7 (-> v0-0 cmd-fwd)) - (a0-9 (-> arg0 2)) - ) + (a0-9 (-> arg0 2))) (set! (-> v1-7 cmd) (the-as load-boundary-cmd (/ (the-as int (car (the-as pair a0-9))) 8))) (set! (-> v1-7 lev0) (the-as basic (car (cdr a0-9)))) - (set! (-> v1-7 lev1) (the-as basic (car (cdr (cdr a0-9))))) - ) + (set! (-> v1-7 lev1) (the-as basic (car (cdr (cdr a0-9)))))) (let ((v1-8 (-> v0-0 cmd-bwd)) - (a0-13 (-> arg0 3)) - ) + (a0-13 (-> arg0 3))) (set! (-> v1-8 cmd) (the-as load-boundary-cmd (/ (the-as int (car (the-as pair a0-13))) 8))) (set! (-> v1-8 lev0) (the-as basic (car (cdr a0-13)))) - (set! (-> v1-8 lev1) (the-as basic (car (cdr (cdr a0-13))))) - ) - ) - (none) - ) + (set! (-> v1-8 lev1) (the-as basic (car (cdr (cdr a0-13))))))) + (none)) (defun-debug ---lb-save () (clear *temp-string*) @@ -856,14 +617,12 @@ (let ((gp-0 (new 'stack 'file-stream *temp-string* 'write))) (format gp-0 ";-*-Lisp-*-~%") (format gp-0 "(in-package goal)~%~%") -(bundles "ENGINE.CGO" "GAME.CGO") - -(require "engine/draw/drawable-ambient-h.gc") -(require "engine/game/game-save.gc") -(require "engine/level/load-boundary-h.gc") -(require "engine/gfx/sky/sky-tng.gc") -(require "engine/game/settings.gc") - + (bundles "ENGINE.CGO" "GAME.CGO") + (require "engine/draw/drawable-ambient-h.gc") + (require "engine/game/game-save.gc") + (require "engine/level/load-boundary-h.gc") + (require "engine/gfx/sky/sky-tng.gc") + (require "engine/game/settings.gc") (format gp-0 ";; reset boundary in editor~%") (format gp-0 "(set! (-> *lb-editor-parms* boundary) #f)~%~%") (format gp-0 ";; reset all existing load boundaries~%") @@ -871,37 +630,24 @@ (format gp-0 "(define *static-load-boundary-list* (new 'static 'array 'array 0~%~%") (let ((s5-0 *load-boundary-list*)) (while s5-0 - (format - gp-0 - "(static-load-boundary :flags (~S~S)~%" - (if (logtest? (-> s5-0 flags) (load-boundary-flags closed)) - "closed " - "" - ) - (if (logtest? (-> s5-0 flags) (load-boundary-flags player)) - "player " - "" - ) - ) + (format gp-0 + "(static-load-boundary :flags (~S~S)~%" + (if (logtest? (-> s5-0 flags) (load-boundary-flags closed)) "closed " "") + (if (logtest? (-> s5-0 flags) (load-boundary-flags player)) "player " "")) (format gp-0 " :top ~f :bot ~f~%" (-> s5-0 top-plane) (-> s5-0 bot-plane)) (format gp-0 " :points (") (dotimes (s4-0 (the-as int (-> s5-0 num-points))) - (format gp-0 " ~f ~f " (-> s5-0 data s4-0 x) (-> s5-0 data s4-0 z)) - ) + (format gp-0 " ~f ~f " (-> s5-0 data s4-0 x) (-> s5-0 data s4-0 z))) (format gp-0 ")~%") (save-boundary-cmd (-> s5-0 cmd-fwd) "fwd" gp-0) (save-boundary-cmd (-> s5-0 cmd-bwd) "bwd" gp-0) (format gp-0 " )~%~%") - (set! s5-0 (-> s5-0 next)) - ) - ) + (set! s5-0 (-> s5-0 next)))) (format gp-0 "))~%~%(doarray (i *static-load-boundary-list*)~% (load-boundary-from-template i)~% )~%~%") - (file-stream-close gp-0) - ) + (file-stream-close gp-0)) (format 0 "Written ~S~%" *temp-string*) 0 - (none) - ) + (none)) (defun-debug lb-add () (let ((gp-0 (new 'global 'load-boundary 2 #f #t))) @@ -909,13 +655,10 @@ (set! (-> gp-0 data 0 x) (-> v1-1 x)) (set! (-> gp-0 data 0 z) (-> v1-1 z)) (set! (-> gp-0 data2 1 x) (-> v1-1 x)) - (set! (-> gp-0 data2 1 z) (+ 204800.0 (-> v1-1 z))) - ) + (set! (-> gp-0 data2 1 z) (+ 204800.0 (-> v1-1 z)))) (set! (-> *lb-editor-parms* boundary) gp-0) (set! (-> *lb-editor-parms* vertex) -1) - gp-0 - ) - ) + gp-0)) (defun-debug lb-add-plane () (let ((gp-0 (new 'global 'load-boundary 4 #t #t))) @@ -927,93 +670,71 @@ (set! (-> gp-0 data2 2 x) (+ 204800.0 (-> v1-1 x))) (set! (-> gp-0 data2 2 z) (+ 204800.0 (-> v1-1 z))) (set! (-> gp-0 data2 3 x) (+ 204800.0 (-> v1-1 x))) - (set! (-> gp-0 data2 3 z) (-> v1-1 z)) - ) + (set! (-> gp-0 data2 3 z) (-> v1-1 z))) (set! (-> *lb-editor-parms* boundary) gp-0) (set! (-> *lb-editor-parms* vertex) -1) - gp-0 - ) - ) + gp-0)) (defun-debug lb-add-load ((arg0 object) (arg1 object)) (let ((v1-0 (lb-add))) (set! (-> v1-0 cmd-fwd cmd) (load-boundary-cmd load)) (set! (-> v1-0 cmd-fwd lev0) (the-as basic arg0)) - (set! (-> v1-0 cmd-fwd lev1) (the-as basic arg1)) - ) + (set! (-> v1-0 cmd-fwd lev1) (the-as basic arg1))) 0 - (none) - ) + (none)) (defun-debug lb-add-load-plane ((arg0 object) (arg1 object)) (let ((v1-0 (lb-add-plane))) (set! (-> v1-0 cmd-fwd cmd) (load-boundary-cmd load)) (set! (-> v1-0 cmd-fwd lev0) (the-as basic arg0)) - (set! (-> v1-0 cmd-fwd lev1) (the-as basic arg1)) - ) + (set! (-> v1-0 cmd-fwd lev1) (the-as basic arg1))) 0 - (none) - ) + (none)) ;; WARN: Function lb-flip has a return type of none, but the expression builder found a return statement. (defun lb-flip () (let ((gp-0 (-> *lb-editor-parms* boundary))) (when (not gp-0) (format 0 "No boundary selected~%") - (return 0) - ) + (return 0)) (let ((s5-0 (new 'stack 'load-boundary-crossing-command))) (copy-load-command! s5-0 (-> gp-0 cmd-fwd)) (copy-load-command! (-> gp-0 cmd-fwd) (-> gp-0 cmd-bwd)) - (copy-load-command! (-> gp-0 cmd-bwd) s5-0) - ) - ) - (none) - ) + (copy-load-command! (-> gp-0 cmd-bwd) s5-0))) + (none)) ;; WARN: Function lb-set-camera has a return type of none, but the expression builder found a return statement. (defun lb-set-camera () (let ((v1-1 (-> *lb-editor-parms* boundary))) (when (not v1-1) (format 0 "No boundary selected~%") - (return 0) - ) - (logclear! (-> v1-1 flags) (load-boundary-flags player)) - ) + (return 0)) + (logclear! (-> v1-1 flags) (load-boundary-flags player))) 0 - (none) - ) + (none)) ;; WARN: Function lb-set-player has a return type of none, but the expression builder found a return statement. (defun lb-set-player () (let ((v1-1 (-> *lb-editor-parms* boundary))) (when (not v1-1) (format 0 "No boundary selected~%") - (return 0) - ) - (logior! (-> v1-1 flags) (load-boundary-flags player)) - ) + (return 0)) + (logior! (-> v1-1 flags) (load-boundary-flags player))) 0 - (none) - ) + (none)) (defun-debug lb-copy () (let ((s5-0 (-> *lb-editor-parms* boundary))) (when (not s5-0) (format 0 "No boundary selected~%") - (return 0) - ) + (return 0)) (let ((gp-0 (new 'global 'load-boundary (the-as int (-> s5-0 num-points)) #f #t))) (copy-load-boundary! gp-0 s5-0) (dotimes (v1-4 (the-as int (-> s5-0 num-points))) - (set! (-> gp-0 data v1-4 quad) (-> s5-0 data v1-4 quad)) - ) - (set! (-> *lb-editor-parms* boundary) gp-0) - ) - ) + (set! (-> gp-0 data v1-4 quad) (-> s5-0 data v1-4 quad))) + (set! (-> *lb-editor-parms* boundary) gp-0))) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Main Load Render Hook @@ -1029,22 +750,13 @@ (while gp-2 (when (zero? (-> gp-2 tri-cnt)) (triangulate-boundary gp-2) - (find-bounding-circle gp-2) - ) - (if *display-load-boundaries* - (render-boundary gp-2) - ) + (find-bounding-circle gp-2)) + (if *display-load-boundaries* (render-boundary gp-2)) (check-boundary gp-2) - (set! gp-2 (-> gp-2 next)) - ) - ) - ) - (if *display-load-boundaries* - (edit-load-boundaries) - ) + (set! gp-2 (-> gp-2 next))))) + (if *display-load-boundaries* (edit-load-boundaries)) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; The Math Stuff @@ -1054,65 +766,38 @@ (let ((f1-0 268435460.0) (f3-0 -268435460.0) (f0-0 268435460.0) - (f2-0 -268435460.0) - ) + (f2-0 -268435460.0)) (dotimes (v1-0 (the-as int (-> arg0 num-points))) - (if (< (-> arg0 data v1-0 x) f1-0) - (set! f1-0 (-> arg0 data v1-0 x)) - ) - (if (< f3-0 (-> arg0 data v1-0 x)) - (set! f3-0 (-> arg0 data v1-0 x)) - ) - (if (< (-> arg0 data v1-0 z) f0-0) - (set! f0-0 (-> arg0 data v1-0 z)) - ) - (if (< f2-0 (-> arg0 data v1-0 z)) - (set! f2-0 (-> arg0 data v1-0 z)) - ) - ) + (if (< (-> arg0 data v1-0 x) f1-0) (set! f1-0 (-> arg0 data v1-0 x))) + (if (< f3-0 (-> arg0 data v1-0 x)) (set! f3-0 (-> arg0 data v1-0 x))) + (if (< (-> arg0 data v1-0 z) f0-0) (set! f0-0 (-> arg0 data v1-0 z))) + (if (< f2-0 (-> arg0 data v1-0 z)) (set! f2-0 (-> arg0 data v1-0 z)))) (let* ((f3-2 (* 0.5 (+ f1-0 f3-0))) (f2-2 (* 0.5 (+ f0-0 f2-0))) (f1-1 (- f3-2 f1-0)) (f0-1 (- f2-2 f0-0)) - (f0-4 (sqrtf (+ (* f1-1 f1-1) (* f0-1 f0-1)))) - ) - (set-vector! (-> arg0 rejector) f3-2 0.0 f2-2 f0-4) - ) - ) + (f0-4 (sqrtf (+ (* f1-1 f1-1) (* f0-1 f0-1))))) + (set-vector! (-> arg0 rejector) f3-2 0.0 f2-2 f0-4))) 0 - (none) - ) + (none)) (define *triangulation-buffer* (the-as (inline-array lbvtx) (malloc 'global 4096))) (defun triangulate-boundary ((arg0 load-boundary)) (when (not (logtest? (-> arg0 flags) (load-boundary-flags closed))) (set! (-> arg0 tri-cnt) 1) - (return (the-as object 0)) - ) + (return (the-as object 0))) (let ((s5-0 *triangulation-buffer*)) (new 'stack 'lbvtx) (let ((s4-0 (-> arg0 num-points))) (set! (-> arg0 tri-cnt) 0) (dotimes (v1-7 (the-as int s4-0)) - (let ((a0-4 (-> arg0 data v1-7 quad))) - (set! (-> s5-0 v1-7 quad) a0-4) - ) - (if (zero? v1-7) - (set! (-> s5-0 v1-7 v0) (+ s4-0 -1)) - (set! (-> s5-0 v1-7 v0) (the-as uint (+ v1-7 -1))) - ) + (let ((a0-4 (-> arg0 data v1-7 quad))) (set! (-> s5-0 v1-7 quad) a0-4)) + (if (zero? v1-7) (set! (-> s5-0 v1-7 v0) (+ s4-0 -1)) (set! (-> s5-0 v1-7 v0) (the-as uint (+ v1-7 -1)))) (cond - ((= v1-7 (+ s4-0 -1)) - (set! (-> s5-0 v1-7 v1) (the-as uint 0)) - 0 - ) - (else - (set! (-> s5-0 v1-7 v1) (the-as uint (+ v1-7 1))) - ) - ) - (set! (-> s5-0 v1-7 v2) (the-as uint 1)) - ) + ((= v1-7 (+ s4-0 -1)) (set! (-> s5-0 v1-7 v1) (the-as uint 0)) 0) + (else (set! (-> s5-0 v1-7 v1) (the-as uint (+ v1-7 1))))) + (set! (-> s5-0 v1-7 v2) (the-as uint 1))) (loop (let ((a1-11 -1)) (let ((f0-0 268435460.0)) @@ -1120,31 +805,19 @@ (when (nonzero? (-> s5-0 v1-10 v2)) (when (or (< (-> s5-0 v1-10 z) f0-0) (and (= (-> s5-0 v1-10 z) f0-0) (< (-> s5-0 v1-10 x) (-> s5-0 a1-11 x)))) (set! f0-0 (-> s5-0 v1-10 z)) - (set! a1-11 v1-10) - ) - ) - ) - ) + (set! a1-11 v1-10))))) (let* ((v1-14 (-> s5-0 a1-11)) (a2-0 (-> s5-0 (-> v1-14 v0))) (a0-36 (-> s5-0 (-> v1-14 v1))) (f0-2 (- (-> v1-14 x) (-> a2-0 x))) (f1-5 (- (-> v1-14 z) (-> a2-0 z))) - (f2-3 (- (-> a0-36 x) (-> v1-14 x))) - ) + (f2-3 (- (-> a0-36 x) (-> v1-14 x)))) (when (< (- (* f0-2 (- (-> a0-36 z) (-> v1-14 z))) (* f2-3 f1-5)) 0.0) (dotimes (v1-16 (the-as int s4-0)) - (let ((a0-39 (-> s5-0 v1-16 v0))) - (set! (-> s5-0 v1-16 v0) (-> s5-0 v1-16 v1)) - (set! (-> s5-0 v1-16 v1) a0-39) - ) - ) - ) - ) + (let ((a0-39 (-> s5-0 v1-16 v0))) (set! (-> s5-0 v1-16 v0) (-> s5-0 v1-16 v1)) (set! (-> s5-0 v1-16 v1) a0-39))))) (let ((s3-0 a1-11) (a0-40 (-> s5-0 a1-11 v0)) - (v1-23 (-> s5-0 a1-11 v1)) - ) + (v1-23 (-> s5-0 a1-11 v1))) (let ((a2-6 0)) (while (>= (-> s5-0 a0-40 z) (-> s5-0 s3-0 z)) (set! s3-0 (the-as int a0-40)) @@ -1152,49 +825,32 @@ (+! a2-6 1) (when (= a2-6 10) (break!) - 0 - ) - ) - ) + 0))) (while (and (!= s3-0 a1-11) (>= (-> s5-0 s3-0 z) (-> s5-0 a0-40 z))) (set! s3-0 (the-as int a0-40)) - (set! a0-40 (-> s5-0 (the-as uint s3-0) v0)) - ) + (set! a0-40 (-> s5-0 (the-as uint s3-0) v0))) (when (= s3-0 a1-11) (split-monotone-polygon arg0 a1-11) (fix-boundary-normals arg0) - (return (the-as object 0)) - ) + (return (the-as object 0))) (let ((s2-0 a1-11)) (while (and (>= (-> s5-0 v1-23 z) (-> s5-0 s2-0 z)) (>= (-> s5-0 s3-0 z) (-> s5-0 v1-23 z))) (set! s2-0 (the-as int v1-23)) - (set! v1-23 (-> s5-0 (the-as uint s2-0) v1)) - ) + (set! v1-23 (-> s5-0 (the-as uint s2-0) v1))) (let ((s1-0 (-> s5-0 s3-0 v0)) - (s0-0 (-> s5-0 s2-0 v1)) - ) + (s0-0 (-> s5-0 s2-0 v1))) (set! (-> s5-0 s3-0 v0) (the-as uint s2-0)) (set! (-> s5-0 s2-0 v1) (the-as uint s3-0)) (let ((v1-37 (-> s5-0 s3-0 v1))) (while (!= v1-37 s2-0) (set! (-> s5-0 v1-37 v2) (the-as uint 0)) - (set! v1-37 (-> s5-0 v1-37 v1)) - ) - ) + (set! v1-37 (-> s5-0 v1-37 v1)))) (split-monotone-polygon arg0 a1-11) (set! (-> s5-0 s3-0 v0) s1-0) - (set! (-> s5-0 s2-0 v1) s0-0) - ) + (set! (-> s5-0 s2-0 v1) s0-0)) (set! (-> s5-0 s2-0 v0) (the-as uint s3-0)) - (set! (-> s5-0 s3-0 v1) (the-as uint s2-0)) - ) - ) - ) - ) - ) - ) - 0 - ) + (set! (-> s5-0 s3-0 v1) (the-as uint s2-0)))))))) + 0) (defun try-corner ((arg0 object) (arg1 int)) (let* ((v1-0 *triangulation-buffer*) @@ -1202,21 +858,13 @@ (a1-3 (-> v1-0 arg1 v1)) (f0-1 (- (-> v1-0 a0-3 x) (-> v1-0 a1-3 x))) (f1-2 (- (-> v1-0 a0-3 z) (-> v1-0 a1-3 z))) - (a2-10 (-> v1-0 a1-3 v1)) - ) + (a2-10 (-> v1-0 a1-3 v1))) (while (!= a2-10 a0-3) (let ((f2-2 (- (-> v1-0 a2-10 x) (-> v1-0 a1-3 x))) - (f3-2 (- (-> v1-0 a2-10 z) (-> v1-0 a1-3 z))) - ) - (if (< (- (* f2-2 f1-2) (* f0-1 f3-2)) 0.0) - (return #f) - ) - ) - (set! a2-10 (-> v1-0 a2-10 v1)) - ) - ) - #t - ) + (f3-2 (- (-> v1-0 a2-10 z) (-> v1-0 a1-3 z)))) + (if (< (- (* f2-2 f1-2) (* f0-1 f3-2)) 0.0) (return #f))) + (set! a2-10 (-> v1-0 a2-10 v1)))) + #t) (defun split-monotone-polygon ((arg0 load-boundary) (arg1 int)) (let ((s5-0 *triangulation-buffer*)) @@ -1225,17 +873,13 @@ (let ((v1-10 (-> arg0 tri-cnt))) (set! (-> arg0 data v1-10 v0) (the-as uint arg1)) (set! (-> arg0 data v1-10 v1) (-> s5-0 arg1 v0)) - (set! (-> arg0 data v1-10 v2) (-> s5-0 (-> s5-0 arg1 v0) v0)) - ) + (set! (-> arg0 data v1-10 v2) (-> s5-0 (-> s5-0 arg1 v0) v0))) (+! (-> arg0 tri-cnt) 1) - (return 0) - ) + (return 0)) (let ((s3-0 arg1)) (while (not (try-corner arg0 s3-0)) (set! s3-0 (the-as int (-> s5-0 s3-0 v1))) - (when (= (the-as uint s3-0) arg1) - ) - ) + (when (= (the-as uint s3-0) arg1))) (let ((a0-13 (-> arg0 tri-cnt))) (set! arg1 (the-as int (-> s5-0 s3-0 v0))) (let ((v1-25 (-> s5-0 s3-0 v1))) @@ -1244,38 +888,24 @@ (set! (-> arg0 data a0-13 v2) v1-25) (+! (-> arg0 tri-cnt) 1) (set! (-> s5-0 (the-as uint arg1) v1) v1-25) - (set! (-> s5-0 v1-25 v0) (the-as uint arg1)) - ) - ) - ) - ) - ) + (set! (-> s5-0 v1-25 v0) (the-as uint arg1))))))) 0 - (none) - ) + (none)) (defun fix-boundary-normals ((arg0 load-boundary)) (dotimes (s5-0 (-> arg0 tri-cnt)) (let ((a1-0 (-> arg0 data (-> arg0 data s5-0 v0))) (a2-0 (-> arg0 data (-> arg0 data s5-0 v1))) (a3-0 (-> arg0 data (-> arg0 data s5-0 v2))) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (normal-of-plane s4-0 (the-as vector a1-0) (the-as vector a2-0) (the-as vector a3-0)) - (if (or (!= (-> s4-0 x) 0.0) (!= (-> s4-0 z) 0.0)) - (format 0 "ERROR in the load-boundary code : tell Eddie!!!~%") - ) + (if (or (!= (-> s4-0 x) 0.0) (!= (-> s4-0 z) 0.0)) (format 0 "ERROR in the load-boundary code : tell Eddie!!!~%")) (when (< (-> s4-0 y) 0.0) (let ((v1-22 (-> arg0 data s5-0 v0))) (set! (-> arg0 data s5-0 v0) (-> arg0 data s5-0 v1)) - (set! (-> arg0 data s5-0 v1) v1-22) - ) - ) - ) - ) + (set! (-> arg0 data s5-0 v1) v1-22))))) 0 - (none) - ) + (none)) (defun point-in-polygon ((arg0 load-boundary) (arg1 vector)) (dotimes (v1-0 (-> arg0 tri-cnt)) @@ -1285,54 +915,32 @@ (f0-1 (- (-> t0-0 x) (-> a3-10 x))) (f1-2 (- (-> t0-0 z) (-> a3-10 z))) (f2-2 (- (-> t0-0 x) (-> arg1 x))) - (f3-2 (- (-> t0-0 z) (-> arg1 z))) - ) + (f3-2 (- (-> t0-0 z) (-> arg1 z)))) (when (>= (- (* f2-2 f1-2) (* f0-1 f3-2)) 0.0) (let ((f0-5 (- (-> t0-0 x) (-> arg1 x))) (f1-7 (- (-> t0-0 z) (-> arg1 z))) (f2-5 (- (-> t0-0 x) (-> a2-5 x))) - (f3-5 (- (-> t0-0 z) (-> a2-5 z))) - ) + (f3-5 (- (-> t0-0 z) (-> a2-5 z)))) (when (>= (- (* f2-5 f1-7) (* f0-5 f3-5)) 0.0) (let ((f0-9 (- (-> arg1 x) (-> a3-10 x))) (f1-12 (- (-> arg1 z) (-> a3-10 z))) (f2-8 (- (-> arg1 x) (-> a2-5 x))) - (f3-8 (- (-> arg1 z) (-> a2-5 z))) - ) - (if (>= (- (* f2-8 f1-12) (* f0-9 f3-8)) 0.0) - (return #t) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (f3-8 (- (-> arg1 z) (-> a2-5 z)))) + (if (>= (- (* f2-8 f1-12) (* f0-9 f3-8)) 0.0) (return #t)))))))) + #f) (defun check-closed-boundary ((arg0 load-boundary) (arg1 lbvtx) (arg2 lbvtx)) - (if (and (< (-> arg0 top-plane) (-> arg1 y)) (< (-> arg0 top-plane) (-> arg2 y))) - (return (the-as symbol 0)) - ) - (if (and (< (-> arg1 y) (-> arg0 top-plane)) (< (-> arg2 y) (-> arg0 top-plane))) - (return (the-as symbol 0)) - ) + (if (and (< (-> arg0 top-plane) (-> arg1 y)) (< (-> arg0 top-plane) (-> arg2 y))) (return (the-as symbol 0))) + (if (and (< (-> arg1 y) (-> arg0 top-plane)) (< (-> arg2 y) (-> arg0 top-plane))) (return (the-as symbol 0))) (let ((f0-6 (/ (- (-> arg1 y) (-> arg2 y)) (- (-> arg0 top-plane) (-> arg2 y)))) - (a1-1 (new 'stack-no-clear 'vector)) - ) + (a1-1 (new 'stack-no-clear 'vector))) (set! (-> a1-1 x) (+ (-> arg2 x) (* f0-6 (- (-> arg1 x) (-> arg2 x))))) (set! (-> a1-1 y) (+ (-> arg2 y) (* f0-6 (- (-> arg1 y) (-> arg2 y))))) (set! (-> a1-1 z) (+ (-> arg2 z) (* f0-6 (- (-> arg1 z) (-> arg2 z))))) (when (point-in-polygon arg0 a1-1) - (if (< (-> arg0 top-plane) (-> arg1 y)) - (return (the-as symbol 2)) - ) - (return (the-as symbol 1)) - ) - ) - (the-as symbol 0) - ) + (if (< (-> arg0 top-plane) (-> arg1 y)) (return (the-as symbol 2))) + (return (the-as symbol 1)))) + (the-as symbol 0)) (defun check-open-boundary ((arg0 load-boundary) (arg1 lbvtx) (arg2 lbvtx)) (let ((f0-0 (-> arg2 x)) @@ -1342,59 +950,31 @@ (f6-0 (-> arg0 data 0 x)) (f7-0 (-> arg0 data 0 z)) (a3-0 1) - (v1-0 0) - ) - (if (and (= f0-0 f2-0) (= f1-0 f3-0)) - (return (the-as symbol 0)) - ) + (v1-0 0)) + (if (and (= f0-0 f2-0) (= f1-0 f3-0)) (return (the-as symbol 0))) (let ((f4-0 (- f2-0 f0-0)) - (f5-0 (- f3-0 f1-0)) - ) + (f5-0 (- f3-0 f1-0))) (while (< a3-0 (the-as int (-> arg0 num-points))) (let ((f8-0 (-> arg0 data a3-0 x)) - (f9-0 (-> arg0 data a3-0 z)) - ) + (f9-0 (-> arg0 data a3-0 z))) (let ((f10-2 (- (* (- f7-0 f1-0) f4-0) (* (- f6-0 f0-0) f5-0))) (f11-4 (- (* (- f7-0 f1-0) (- f8-0 f6-0)) (* (- f6-0 f0-0) (- f9-0 f7-0)))) - (f12-5 (- (* (- f8-0 f6-0) f5-0) (* (- f9-0 f7-0) f4-0))) - ) + (f12-5 (- (* (- f8-0 f6-0) f5-0) (* (- f9-0 f7-0) f4-0)))) (when (!= f12-5 0.0) (let ((f10-3 (/ f10-2 f12-5)) - (f11-5 (/ f11-4 f12-5)) - ) - (if (and (>= f10-3 0.0) (>= 1.0 f10-3)) - 0 - ) + (f11-5 (/ f11-4 f12-5))) + (if (and (>= f10-3 0.0) (>= 1.0 f10-3)) 0) (when (and (>= f10-3 0.0) (>= 1.0 f10-3) (< 0.0 f11-5) (>= 1.0 f11-5)) (let ((f10-5 (+ (-> arg2 y) (* f10-3 (- (-> arg1 y) (-> arg2 y)))))) (when (and (>= f10-5 (-> arg0 bot-plane)) (>= (-> arg0 top-plane) f10-5)) (let ((f6-3 (- (* (- f2-0 f6-0) (- f9-0 f7-0)) (* (- f3-0 f7-0) (- f8-0 f6-0))))) - (if (< 0.0 f6-3) - (+! v1-0 1) - (+! v1-0 -1) - ) - ) - ) - ) - ) - ) - ) - ) + (if (< 0.0 f6-3) (+! v1-0 1) (+! v1-0 -1))))))))) (set! f6-0 f8-0) - (set! f7-0 f9-0) - ) - (+! a3-0 1) - ) - ) - (if (> v1-0 0) - (return (the-as symbol 1)) - ) - (if (< v1-0 0) - (return (the-as symbol 2)) - ) - ) - (the-as symbol 0) - ) + (set! f7-0 f9-0)) + (+! a3-0 1))) + (if (> v1-0 0) (return (the-as symbol 1))) + (if (< v1-0 0) (return (the-as symbol 2)))) + (the-as symbol 0)) ;;;;;;;;;;;;;;;;;;;;;;;; ;; Load Commands @@ -1402,108 +982,46 @@ (defun command-get-int ((arg0 object) (arg1 int)) (cond - ((null? arg0) - (empty) - arg1 - ) - ((type-type? (rtype-of arg0) binteger) - (/ (the-as int arg0) 8) - ) - ((type-type? (rtype-of arg0) bfloat) - (the int (-> (the-as bfloat arg0) data)) - ) - (else - (empty) - arg1 - ) - ) - ) + ((null? arg0) (empty) arg1) + ((type-type? (rtype-of arg0) binteger) (/ (the-as int arg0) 8)) + ((type-type? (rtype-of arg0) bfloat) (the int (-> (the-as bfloat arg0) data))) + (else (empty) arg1))) (defun command-get-float ((arg0 object) (arg1 float)) (cond - ((null? arg0) - (empty) - arg1 - ) - ((type-type? (rtype-of arg0) binteger) - (the float (/ (the-as int arg0) 8)) - ) - ((type-type? (rtype-of arg0) bfloat) - (-> (the-as bfloat arg0) data) - ) - (else - (empty) - arg1 - ) - ) - ) + ((null? arg0) (empty) arg1) + ((type-type? (rtype-of arg0) binteger) (the float (/ (the-as int arg0) 8))) + ((type-type? (rtype-of arg0) bfloat) (-> (the-as bfloat arg0) data)) + (else (empty) arg1))) (defun command-get-time ((arg0 object) (arg1 int)) (cond - ((null? arg0) - (empty) - arg1 - ) - ((and (pair? arg0) (= (car arg0) 'seconds)) - (the int (* 300.0 (command-get-float (car (cdr arg0)) 0.0))) - ) - ((type-type? (rtype-of arg0) binteger) - (/ (the-as int arg0) 8) - ) - ((type-type? (rtype-of arg0) bfloat) - (the int (-> (the-as bfloat arg0) data)) - ) - (else - (empty) - arg1 - ) - ) - ) + ((null? arg0) (empty) arg1) + ((and (pair? arg0) (= (car arg0) 'seconds)) (the int (* 300.0 (command-get-float (car (cdr arg0)) 0.0)))) + ((type-type? (rtype-of arg0) binteger) (/ (the-as int arg0) 8)) + ((type-type? (rtype-of arg0) bfloat) (the int (-> (the-as bfloat arg0) data))) + (else (empty) arg1))) (defun command-get-param ((arg0 object) (arg1 object)) (cond - ((null? arg0) - arg1 - ) - ((and (pair? arg0) (= (car arg0) 'seconds)) - (the int (* 300.0 (command-get-float (car (cdr arg0)) 0.0))) - ) - ((and (pair? arg0) (= (car arg0) 'meters)) - (* 4096.0 (command-get-float (car (cdr arg0)) 0.0)) - ) - ((and (pair? arg0) (= (car arg0) 'deg)) - (* 182.04445 (command-get-float (car (cdr arg0)) 0.0)) - ) + ((null? arg0) arg1) + ((and (pair? arg0) (= (car arg0) 'seconds)) (the int (* 300.0 (command-get-float (car (cdr arg0)) 0.0)))) + ((and (pair? arg0) (= (car arg0) 'meters)) (* 4096.0 (command-get-float (car (cdr arg0)) 0.0))) + ((and (pair? arg0) (= (car arg0) 'deg)) (* 182.04445 (command-get-float (car (cdr arg0)) 0.0))) ((and (pair? arg0) (= (car arg0) 'static-vectorm)) (let ((s4-0 (the-as object (new 'static 'vector)))) - (set-vector! - (the-as vector s4-0) - (* 4096.0 (command-get-float (car (cdr arg0)) 0.0)) - (* 4096.0 (command-get-float (car (cdr (cdr arg0))) 0.0)) - (* 4096.0 (command-get-float (car (cdr (cdr (cdr arg0)))) 0.0)) - 1.0 - ) - s4-0 - ) - ) - ((type-type? (rtype-of arg0) binteger) - (/ (the-as int arg0) 8) - ) - ((type-type? (rtype-of arg0) bfloat) - (-> (the-as bfloat arg0) data) - ) - (else - arg0 - ) - ) - ) + (set-vector! (the-as vector s4-0) + (* 4096.0 (command-get-float (car (cdr arg0)) 0.0)) + (* 4096.0 (command-get-float (car (cdr (cdr arg0))) 0.0)) + (* 4096.0 (command-get-float (car (cdr (cdr (cdr arg0)))) 0.0)) + 1.0) + s4-0)) + ((type-type? (rtype-of arg0) binteger) (/ (the-as int arg0) 8)) + ((type-type? (rtype-of arg0) bfloat) (-> (the-as bfloat arg0) data)) + (else arg0))) (defun command-get-quoted-param ((arg0 object) (arg1 object)) - (if (and (pair? arg0) (= (car arg0) 'quote)) - (command-get-param (car (cdr arg0)) arg1) - (command-get-param arg0 arg1) - ) - ) + (if (and (pair? arg0) (= (car arg0) 'quote)) (command-get-param (car (cdr arg0)) arg1) (command-get-param arg0 arg1))) (defmethod reset! ((this load-state)) (set! (-> this want 0 name) #f) @@ -1517,25 +1035,15 @@ (set! (-> this command-list) '()) (dotimes (v1-1 256) (set! (-> this object-name v1-1) #f) - (set! (-> this object-status v1-1) (the-as basic 0)) - ) - this - ) + (set! (-> this object-status v1-1) (the-as basic 0))) + this) (defmethod want-levels ((this load-state) (arg0 symbol) (arg1 symbol)) (dotimes (v1-0 2) (cond - ((= (-> this want v1-0 name) arg0) - (set! arg0 #f) - ) - ((= (-> this want v1-0 name) arg1) - (set! arg1 #f) - ) - (else - (set! (-> this want v1-0 name) #f) - ) - ) - ) + ((= (-> this want v1-0 name) arg0) (set! arg0 #f)) + ((= (-> this want v1-0 name) arg1) (set! arg1 #f)) + (else (set! (-> this want v1-0 name) #f)))) (when arg0 (dotimes (v1-4 2) (when (not (-> this want v1-4 name)) @@ -1543,10 +1051,7 @@ (set! (-> this want v1-4 display?) #f) (set! (-> this want v1-4 force-vis?) #f) (set! (-> this want v1-4 force-inside?) #f) - (set! v1-4 2) - ) - ) - ) + (set! v1-4 2)))) (when arg1 (dotimes (v1-10 2) (when (not (-> this want v1-10 name)) @@ -1554,85 +1059,63 @@ (set! (-> this want v1-10 display?) #f) (set! (-> this want v1-10 force-vis?) #f) (set! (-> this want v1-10 force-inside?) #f) - (set! v1-10 2) - ) - ) - ) - 0 - ) + (set! v1-10 2)))) + 0) (defmethod want-display-level ((this load-state) (arg0 symbol) (arg1 symbol)) (dotimes (v1-0 2) (when (= (-> this want v1-0 name) arg0) (set! (-> this want v1-0 display?) arg1) - (return 0) - ) - ) - (if arg1 - (format 0 "ERROR: can't display ~A because it isn't loaded~%" arg0) - ) - 0 - ) + (return 0))) + (if arg1 (format 0 "ERROR: can't display ~A because it isn't loaded~%" arg0)) + 0) (defmethod want-vis ((this load-state) (arg0 symbol)) (set! (-> this vis-nick) arg0) - 0 - ) + 0) (defmethod want-force-vis ((this load-state) (arg0 symbol) (arg1 symbol)) (dotimes (v1-0 2) (when (= (-> this want v1-0 name) arg0) (set! (-> this want v1-0 force-vis?) arg1) - (return 0) - ) - ) + (return 0))) (format 0 "ERROR: can't force vis on ~A because it isn't loaded~%" arg0) - 0 - ) + 0) (defmethod set-force-inside! ((this load-state) (arg0 symbol) (arg1 symbol)) (dotimes (v1-0 2) (when (= (-> this want v1-0 name) arg0) (set! (-> this want v1-0 force-inside?) arg1) - (return 0) - ) - ) + (return 0))) (format 0 "ERROR: can't force inside on ~A because it isn't loaded~%" arg0) 0 - (none) - ) + (none)) (defun load-state-want-levels ((arg0 symbol) (arg1 symbol)) - (want-levels *load-state* arg0 arg1) - ) + (want-levels *load-state* arg0 arg1)) (defun load-state-want-display-level ((arg0 symbol) (arg1 symbol)) - (want-display-level *load-state* arg0 arg1) - ) + (want-display-level *load-state* arg0 arg1)) (defun load-state-want-vis ((arg0 symbol)) - (want-vis *load-state* arg0) - ) + (want-vis *load-state* arg0)) (defun load-state-want-force-vis ((arg0 symbol) (arg1 symbol)) - (want-force-vis *load-state* arg0 arg1) - ) + (want-force-vis *load-state* arg0 arg1)) (define *display-load-commands* #f) + (define *backup-load-state* (new 'global 'load-state)) (defmethod backup-load-state-and-set-cmds ((this load-state) (arg0 pair)) (dotimes (s4-0 256) (when (-> this object-name s4-0) (format 0 "WARNING: load state somehow aquired object command ~A~%" (-> this object-name s4-0)) - (set! (-> this object-name s4-0) #f) - ) - ) + (set! (-> this object-name s4-0) #f))) (mem-copy! (&-> *backup-load-state* type) (&-> this type) 2092) (set! (-> *backup-load-state* command-list) '()) (set! (-> this command-list) arg0) - 0 - ) + 0) (defmethod restore-load-state-and-cleanup ((this load-state)) (execute-commands-up-to this 100000.0) @@ -1640,183 +1123,97 @@ (when (-> this object-name s5-0) (let ((a0-3 (entity-by-name (the-as string (-> this object-name s5-0))))) (set! (-> a0-3 extra perm status) (the-as entity-perm-status (-> this object-status s5-0))) - (if (-> a0-3 extra process) - (kill! a0-3) - ) - ) - (set! (-> this object-name s5-0) #f) - ) - ) + (if (-> a0-3 extra process) (kill! a0-3))) + (set! (-> this object-name s5-0) #f))) (mem-copy! (&-> this type) (&-> *backup-load-state* type) 2092) - 0 - ) + 0) (defmethod restore-load-state ((this load-state)) (dotimes (v1-0 256) - (if (-> this object-name v1-0) - (set! (-> this object-name v1-0) #f) - ) - ) + (if (-> this object-name v1-0) (set! (-> this object-name v1-0) #f))) (mem-copy! (&-> this type) (&-> *backup-load-state* type) 2092) - 0 - ) + 0) ;; ERROR: Failed load: (set! a0-1 (l.wu (+ a0-0 -4))) at op 11 (defun command-list-get-process ((arg0 object)) (with-pp (set! arg0 (cond - ((null? arg0) - #f - ) - ((type-type? (rtype-of arg0) process) - (empty) - arg0 - ) - ((= arg0 'target) - *target* - ) - ((= arg0 'sidekick) - (if *target* - (ppointer->process (-> *target* sidekick)) - ) - ) - ((= arg0 'self) - pp - ) - ((= arg0 'parent) - (ppointer->process (-> pp parent)) - ) - ((= arg0 'camera) - *camera* - ) + ((null? arg0) #f) + ((type-type? (rtype-of arg0) process) (empty) arg0) + ((= arg0 'target) *target*) + ((= arg0 'sidekick) (if *target* (ppointer->process (-> *target* sidekick)))) + ((= arg0 'self) pp) + ((= arg0 'parent) (ppointer->process (-> pp parent))) + ((= arg0 'camera) *camera*) ((type-type? (rtype-of arg0) string) (let ((v1-14 (process-by-ename (the-as string arg0)))) (cond - (v1-14 - (empty) - v1-14 - ) + (v1-14 (empty) v1-14) (else - (let ((s5-0 (ppointer->process (-> pp child)))) - (while s5-0 - (let* ((s3-0 s5-0) - (s4-0 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) - s3-0 - ) - ) - ) - (when (and s4-0 - (nonzero? (-> (the-as process-drawable s4-0) draw)) - (nonzero? (-> (the-as process-drawable s4-0) draw art-group)) - (string= (the-as string arg0) (-> (the-as process-drawable s4-0) draw art-group name)) - ) - (set! arg0 s4-0) - (goto cfg-56) - ) - ) - (set! s5-0 (ppointer->process (-> s5-0 brother))) - ) - ) - (the-as process #f) - ) - ) - ) - ) - (else - #f - ) - ) - ) + (let ((s5-0 (ppointer->process (-> pp child)))) + (while s5-0 + (let* ((s3-0 s5-0) + (s4-0 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) s3-0))) + (when (and s4-0 + (nonzero? (-> (the-as process-drawable s4-0) draw)) + (nonzero? (-> (the-as process-drawable s4-0) draw art-group)) + (string= (the-as string arg0) (-> (the-as process-drawable s4-0) draw art-group name))) + (set! arg0 s4-0) + (goto cfg-56))) + (set! s5-0 (ppointer->process (-> s5-0 brother))))) + (the-as process #f))))) + (else #f))) (label cfg-56) - (the-as process arg0) - ) - ) + (the-as process arg0))) (defmethod execute-commands-up-to ((this load-state) (arg0 float)) (while (not (null? (-> this command-list))) (let ((f0-0 (command-get-float (car (car (-> this command-list))) 0.0)) - (s4-0 (cdr (car (-> this command-list)))) - ) - (if (< arg0 f0-0) - (return (the-as int #f)) - ) - (if *display-load-commands* - (format 0 "NOTICE: ~D: ~f: execute command ~A~%" (current-time) f0-0 s4-0) - ) + (s4-0 (cdr (car (-> this command-list))))) + (if (< arg0 f0-0) (return (the-as int #f))) + (if *display-load-commands* (format 0 "NOTICE: ~D: ~f: execute command ~A~%" (current-time) f0-0 s4-0)) (cond ((pair? (car s4-0)) (let ((a1-3 (car s4-0))) (while (not (null? s4-0)) (execute-command this (the-as pair a1-3)) (set! s4-0 (cdr s4-0)) - (set! a1-3 (car s4-0)) - ) - ) - ) - (else - (execute-command this s4-0) - ) - ) - ) - (set! (-> this command-list) (cdr (-> this command-list))) - ) - 0 - ) - + (set! a1-3 (car s4-0))))) + (else (execute-command this s4-0)))) + (set! (-> this command-list) (cdr (-> this command-list)))) + 0) (defmethod execute-command ((this load-state) (arg0 pair)) (local-vars (v1-26 int) (v1-57 int)) (with-pp (cond - ((null? arg0) - ) + ((null? arg0)) ((pair? arg0) (let ((v1-4 (car arg0)) - (gp-0 (cdr arg0)) - ) + (gp-0 (cdr arg0))) (cond ((= v1-4 'set!) (let ((s5-1 (command-get-param (car gp-0) #f))) - (if s5-1 - (set! (-> (the-as symbol s5-1) value) (command-get-param (car (cdr gp-0)) #f)) - ) - ) - ) - ((= v1-4 'eval) - ((the-as (function int) (command-get-param (car gp-0) #f))) - ) - ((= v1-4 'want-vis) - (want-vis this (the-as symbol (command-get-param (car gp-0) #f))) - ) + (if s5-1 (set! (-> (the-as symbol s5-1) value) (command-get-param (car (cdr gp-0)) #f))))) + ((= v1-4 'eval) ((the-as (function int) (command-get-param (car gp-0) #f)))) + ((= v1-4 'want-vis) (want-vis this (the-as symbol (command-get-param (car gp-0) #f)))) ((= v1-4 'want-levels) - (want-levels - this - (the-as symbol (command-get-param (car gp-0) #f)) - (the-as symbol (command-get-param (car (cdr gp-0)) #f)) - ) - ) + (want-levels this + (the-as symbol (command-get-param (car gp-0) #f)) + (the-as symbol (command-get-param (car (cdr gp-0)) #f)))) ((= v1-4 'display-level) - (want-display-level - this - (the-as symbol (command-get-param (car gp-0) #f)) - (the-as symbol (command-get-param (car (cdr gp-0)) #f)) - ) - ) + (want-display-level this + (the-as symbol (command-get-param (car gp-0) #f)) + (the-as symbol (command-get-param (car (cdr gp-0)) #f)))) ((= v1-4 'want-force-vis) - (want-force-vis - this - (the-as symbol (command-get-param (car gp-0) #f)) - (the-as symbol (command-get-param (car (cdr gp-0)) #f)) - ) - ) + (want-force-vis this + (the-as symbol (command-get-param (car gp-0) #f)) + (the-as symbol (command-get-param (car (cdr gp-0)) #f)))) ((= v1-4 'want-force-inside) - (set-force-inside! - this - (the-as symbol (command-get-param (car gp-0) #f)) - (the-as symbol (command-get-param (car (cdr gp-0)) #f)) - ) - ) + (set-force-inside! this + (the-as symbol (command-get-param (car gp-0) #f)) + (the-as symbol (command-get-param (car (cdr gp-0)) #f)))) ((= v1-4 'alive) (let ((s4-5 (command-get-param (car gp-0) #f))) (when s4-5 @@ -1827,9 +1224,7 @@ (set! (-> this object-name v1-25) (the-as symbol s4-5)) (set! (-> this object-status v1-25) (the-as basic (-> gp-1 extra perm status))) (set! v1-26 v1-25) - (goto cfg-29) - ) - ) + (goto cfg-29))) (set! v1-26 -1) (label cfg-29) (when (>= v1-26 0) @@ -1837,15 +1232,7 @@ (let ((a0-45 (-> gp-1 extra process))) (when a0-45 (logclear! (-> a0-45 mask) (process-mask actor-pause)) - (logclear! (-> a0-45 mask) (-> *kernel-context* prevent-from-run)) - ) - ) - ) - ) - ) - ) - ) - ) + (logclear! (-> a0-45 mask) (-> *kernel-context* prevent-from-run)))))))))) ((= v1-4 'dead) (let ((s3-4 (command-get-param (car gp-0) #f))) (when s3-4 @@ -1854,19 +1241,10 @@ (dotimes (gp-2 256) (when (string= (the-as string (-> this object-name gp-2)) (the-as string s3-4)) (set! (-> s4-6 extra perm status) (the-as entity-perm-status (-> this object-status gp-2))) - (if (-> s4-6 extra process) - (kill! s4-6) - ) + (if (-> s4-6 extra process) (kill! s4-6)) (set! (-> this object-name gp-2) #f) - (goto cfg-45) - ) - ) - ) - ) - ) - ) - (label cfg-45) - ) + (goto cfg-45))))))) + (label cfg-45)) ((= v1-4 'kill) (let ((s4-7 (command-get-param (car gp-0) #f))) (when s4-7 @@ -1877,244 +1255,127 @@ (set! (-> this object-name v1-56) (the-as symbol s4-7)) (set! (-> this object-status v1-56) (the-as basic (-> gp-3 extra perm status))) (set! v1-57 v1-56) - (goto cfg-56) - ) - ) + (goto cfg-56))) (set! v1-57 -1) (label cfg-56) (when (>= v1-57 0) - (if (-> gp-3 extra process) - (kill! gp-3) - ) - (logior! (-> gp-3 extra perm status) (entity-perm-status dead)) - ) - ) - ) - ) - ) - ) + (if (-> gp-3 extra process) (kill! gp-3)) + (logior! (-> gp-3 extra perm status) (entity-perm-status dead)))))))) ((= v1-4 'special) (let ((a0-70 (command-get-param (car gp-0) #f))) (when a0-70 (let ((s5-2 (entity-by-name (the-as string a0-70)))) (if s5-2 - (set-or-clear-status! - (the-as entity-actor s5-2) - (entity-perm-status bit-7) - (the-as symbol (command-get-param (car (cdr gp-0)) #f)) - ) - ) - ) - ) - ) - ) + (set-or-clear-status! (the-as entity-actor s5-2) + (entity-perm-status bit-7) + (the-as symbol (command-get-param (car (cdr gp-0)) #f)))))))) ((= v1-4 'active) (let ((gp-4 (command-get-param (car gp-0) #f))) (while (!= (level-status *level* (the-as symbol gp-4)) 'active) - (suspend) - ) - ) - ) + (suspend)))) ((= v1-4 'part-tracker) (let* ((s5-4 (command-get-param (car gp-0) #f)) (a0-81 (command-get-param (car (cdr gp-0)) #f)) (gp-5 (entity-by-name (the-as string a0-81))) (s4-9 (lookup-part-group-by-name (symbol->string (the-as symbol s5-4)))) - (s5-5 (if (and (nonzero? s4-9) (type-type? (-> s4-9 type) sparticle-launch-group)) - s4-9 - ) - ) - ) + (s5-5 (if (and (nonzero? s4-9) (type-type? (-> s4-9 type) sparticle-launch-group)) s4-9))) (when (and gp-5 s5-5) (let* ((s3-6 (-> gp-5 extra process)) - (s4-10 (if (and (nonzero? s3-6) (type-type? (-> s3-6 type) process-drawable)) - (the-as process-drawable s3-6) - ) - ) - (s3-7 (get-process *default-dead-pool* part-tracker #x4000)) - ) + (s4-10 (if (and (nonzero? s3-6) (type-type? (-> s3-6 type) process-drawable)) (the-as process-drawable s3-6))) + (s3-7 (get-process *default-dead-pool* part-tracker #x4000))) (when s3-7 (let ((t9-41 (method-of-type part-tracker activate)) (a0-86 s3-7) - (a1-40 (ppointer->process (-> *setting-control* current movie))) - ) - (set! a1-40 (cond - (a1-40 - (empty) - a1-40 - ) - (else - *entity-pool* - ) - ) - ) - (t9-41 (the-as part-tracker a0-86) a1-40 'part-tracker (the-as pointer #x70004000)) - ) - (run-now-in-process s3-7 part-tracker-init s5-5 -1 #f #f #f (if s4-10 - (-> s4-10 root trans) - (-> gp-5 extra trans) - ) - ) - (-> s3-7 ppointer) - ) - ) - ) - ) - ) - ((= v1-4 'auto-save) - (auto-save-command (the-as symbol (command-get-param (car gp-0) #f)) 0 0 *default-pool*) - ) + (a1-40 (ppointer->process (-> *setting-control* current movie)))) + (set! a1-40 + (cond + (a1-40 (empty) a1-40) + (else *entity-pool*))) + (t9-41 (the-as part-tracker a0-86) a1-40 'part-tracker (the-as pointer #x70004000))) + (run-now-in-process s3-7 part-tracker-init s5-5 -1 #f #f #f (if s4-10 (-> s4-10 root trans) (-> gp-5 extra trans))) + (-> s3-7 ppointer)))))) + ((= v1-4 'auto-save) (auto-save-command (the-as symbol (command-get-param (car gp-0) #f)) 0 0 *default-pool*)) ((= v1-4 'shadow) (let ((s5-7 (command-list-get-process (car gp-0))) - (v1-95 (command-get-quoted-param (car (cdr gp-0)) #f)) - ) - (send-event s5-7 'shadow v1-95) - ) - ) + (v1-95 (command-get-quoted-param (car (cdr gp-0)) #f))) + (send-event s5-7 'shadow v1-95))) ((= v1-4 'time-of-day) (when *time-of-day-proc* (let ((v1-99 (command-get-int (car gp-0) 0))) (cond - ((< v1-99 0) - (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) - ) + ((< v1-99 0) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0)) (else - (set! (-> *time-of-day-proc* 0 hour) v1-99) - (set! (-> *time-of-day-proc* 0 minute) 0) - (set! (-> *time-of-day-proc* 0 frame) 0) - (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) - ) - ) - ) - ) - ) + (set! (-> *time-of-day-proc* 0 hour) v1-99) + (set! (-> *time-of-day-proc* 0 minute) 0) + (set! (-> *time-of-day-proc* 0 frame) 0) + (set! (-> *time-of-day-proc* 0 time-ratio) 0.0)))))) ((= v1-4 'save) (mem-copy! (&-> *backup-load-state* type) (&-> this type) 2092) (set! (-> *backup-load-state* command-list) '()) (dotimes (v1-112 256) - (if (-> *backup-load-state* object-name v1-112) - (set! (-> *backup-load-state* object-name v1-112) #f) - ) - ) - ) + (if (-> *backup-load-state* object-name v1-112) (set! (-> *backup-load-state* object-name v1-112) #f)))) ((= v1-4 'setting-reset) - (set-setting! (the-as symbol (command-get-param (car gp-0) #f)) (command-get-param (car (cdr gp-0)) #f) 0.0 0) - ) - ((= v1-4 'setting-unset) - (remove-setting! (the-as symbol (command-get-param (car gp-0) #f))) - ) + (set-setting! (the-as symbol (command-get-param (car gp-0) #f)) (command-get-param (car (cdr gp-0)) #f) 0.0 0)) + ((= v1-4 'setting-unset) (remove-setting! (the-as symbol (command-get-param (car gp-0) #f)))) ;; og:preserve-this PAL patch here ((= v1-4 'sfx-volume) - (set-setting! 'sfx-volume (command-get-param (car gp-0) #f) (command-get-float (car (cdr gp-0)) 0.0) 0) - ) + (set-setting! 'sfx-volume (command-get-param (car gp-0) #f) (command-get-float (car (cdr gp-0)) 0.0) 0)) ((= v1-4 'blackout) - (set-blackout-frames (the-as time-frame (the int (* 5.0000005 (the float (command-get-int (car gp-0) 0)))))) - ) - ((= v1-4 'teleport) - (set! *teleport* #t) - ) + (set-blackout-frames (the-as time-frame (the int (* 5.0000005 (the float (command-get-int (car gp-0) 0))))))) + ((= v1-4 'teleport) (set! *teleport* #t)) ((= v1-4 'joint) (send-event (ppointer->process (-> *setting-control* current movie)) 'joint (command-get-param (car gp-0) #f)) - (set! *teleport-count* 2) - ) + (set! *teleport-count* 2)) ((= v1-4 'ambient) - (ambient-hint-spawn - (the-as string (command-get-param (car (cdr gp-0)) #f)) - (the-as vector #f) - *entity-pool* - (the-as symbol (command-get-param (car gp-0) #f)) - ) - ) + (ambient-hint-spawn (the-as string (command-get-param (car (cdr gp-0)) #f)) + (the-as vector #f) + *entity-pool* + (the-as symbol (command-get-param (car gp-0) #f)))) ((= v1-4 'send-event) (let ((s5-13 (command-list-get-process (car gp-0))) (s4-14 (command-get-quoted-param (car (cdr gp-0)) #f)) - (gp-6 (cdr (cdr gp-0))) - ) + (gp-6 (cdr (cdr gp-0)))) (when (and s5-13 (not (null? s4-14))) (let ((s3-11 (new 'stack-no-clear 'event-message-block))) (set! (-> s3-11 from) pp) - (let ((a0-142 gp-6)) - (set! (-> s3-11 num-params) ((method-of-type (rtype-of a0-142) length) a0-142)) - ) + (let ((a0-142 gp-6)) (set! (-> s3-11 num-params) ((method-of-type (rtype-of a0-142) length) a0-142))) (set! (-> s3-11 message) (the-as symbol s4-14)) (set! (-> s3-11 param 0) (the-as uint (command-get-quoted-param (car gp-6) #f))) (set! (-> s3-11 param 1) (the-as uint (command-get-quoted-param (car (cdr gp-6)) #f))) (set! (-> s3-11 param 2) (the-as uint (command-get-quoted-param (car (cdr (cdr gp-6))) #f))) - (send-event-function s5-13 s3-11) - ) - ) - ) - ) - ) - ) - ) - ) + (send-event-function s5-13 s3-11))))))))) 0 - (none) - ) - ) + (none))) (defun check-boundary ((arg0 load-boundary)) (local-vars (s5-0 object)) - (let ((a1-0 (if (logtest? (-> arg0 flags) (load-boundary-flags player)) - (-> *load-boundary-target* 1) - (-> *load-boundary-target* 0) - ) - ) - (a2-0 (if (logtest? (-> arg0 flags) (load-boundary-flags player)) - (-> *load-boundary-target* 3) - (-> *load-boundary-target* 2) - ) - ) - ) + (let ((a1-0 (if (logtest? (-> arg0 flags) (load-boundary-flags player)) (-> *load-boundary-target* 1) (-> *load-boundary-target* 0))) + (a2-0 (if (logtest? (-> arg0 flags) (load-boundary-flags player)) (-> *load-boundary-target* 3) (-> *load-boundary-target* 2)))) 0 (let ((f0-1 (- (-> a1-0 x) (-> arg0 rejector x))) - (f1-2 (- (-> a1-0 z) (-> arg0 rejector z))) - ) + (f1-2 (- (-> a1-0 z) (-> arg0 rejector z)))) (cond ((< (+ (* f0-1 f0-1) (* f1-2 f1-2)) (* (-> arg0 rejector w) (-> arg0 rejector w))) (if (logtest? (-> arg0 flags) (load-boundary-flags closed)) - (set! s5-0 (check-closed-boundary arg0 a1-0 a2-0)) - (set! s5-0 (check-open-boundary arg0 a1-0 a2-0)) - ) - ) - (else - (set! s5-0 0) - (goto cfg-28) - ) - ) - ) - ) + (set! s5-0 (check-closed-boundary arg0 a1-0 a2-0)) + (set! s5-0 (check-open-boundary arg0 a1-0 a2-0)))) + (else (set! s5-0 0) (goto cfg-28))))) (let ((s4-0 (the-as load-boundary-crossing-command #f))) - (if (= (the-as symbol s5-0) 1) - (set! s4-0 (-> arg0 cmd-fwd)) - ) - (if (= (the-as symbol s5-0) 2) - (set! s4-0 (-> arg0 cmd-bwd)) - ) + (if (= (the-as symbol s5-0) 1) (set! s4-0 (-> arg0 cmd-fwd))) + (if (= (the-as symbol s5-0) 2) (set! s4-0 (-> arg0 cmd-bwd))) (when s4-0 (cond - ((= (-> s4-0 cmd) (load-boundary-cmd vis)) - (load-state-want-vis (the-as symbol (-> s4-0 lev0))) - ) + ((= (-> s4-0 cmd) (load-boundary-cmd vis)) (load-state-want-vis (the-as symbol (-> s4-0 lev0)))) ((= (-> s4-0 cmd) (load-boundary-cmd load)) - (load-state-want-levels (the-as symbol (-> s4-0 lev0)) (the-as symbol (-> s4-0 lev1))) - ) + (load-state-want-levels (the-as symbol (-> s4-0 lev0)) (the-as symbol (-> s4-0 lev1)))) ((= (-> s4-0 cmd) (load-boundary-cmd display)) - (load-state-want-display-level (the-as symbol (-> s4-0 lev0)) (the-as symbol (-> s4-0 lev1))) - ) + (load-state-want-display-level (the-as symbol (-> s4-0 lev0)) (the-as symbol (-> s4-0 lev1)))) ((= (-> s4-0 cmd) (load-boundary-cmd force-vis)) - (load-state-want-force-vis (the-as symbol (-> s4-0 lev0)) (the-as symbol (-> s4-0 lev1))) - ) + (load-state-want-force-vis (the-as symbol (-> s4-0 lev0)) (the-as symbol (-> s4-0 lev1)))) ((= (-> s4-0 cmd) (load-boundary-cmd checkpt)) (format 0 "Setting continue to ~A~%" (-> s4-0 lev0)) - (set-continue! *game-info* (-> s4-0 lev0)) - ) - ) - ) - ) + (set-continue! *game-info* (-> s4-0 lev0)))))) (label cfg-28) - (none) - ) + (none)) (define-perm *load-state* load-state (new 'global 'load-state)) diff --git a/goal_src/jak1/engine/load/decomp-h.gc b/goal_src/jak1/engine/load/decomp-h.gc index dcabb4e0a2..c097c31534 100644 --- a/goal_src/jak1/engine/load/decomp-h.gc +++ b/goal_src/jak1/engine/load/decomp-h.gc @@ -1,21 +1,14 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: decomp-h.gc -;; name in dgo: decomp-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; temporary storage for visibility data decompression. ;; this is stored on the scratchpad. (deftype decomp-work (structure) - ((buffer0 uint8 2048) - (buffer1 uint8 2048) - (indices uint16 2048) - (temp-indices uint16 2048) - ) - ) + ((buffer0 uint8 2048) + (buffer1 uint8 2048) + (indices uint16 2048) + (temp-indices uint16 2048))) diff --git a/goal_src/jak1/engine/load/decomp.gc b/goal_src/jak1/engine/load/decomp.gc index e6cf26677f..a037e524f7 100644 --- a/goal_src/jak1/engine/load/decomp.gc +++ b/goal_src/jak1/engine/load/decomp.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ps2/pad.gc") (require "engine/draw/drawable-ambient-h.gc") (require "engine/gfx/font.gc") (require "engine/load/ramdisk.gc") -;; name: decomp.gc -;; name in dgo: decomp -;; dgos: GAME, ENGINE - ;; This file contains update-vis! which updates the vis-bits string from the loaded VIS file. ;; DECOMP BEGINS @@ -25,12 +20,10 @@ (nop!) (loop (loop - ;; read the input and see what kind it is, based on number. (set! current-input (-> in 0)) (set! in (&-> in 1)) (b! (<= current-input 0) cfg-5 :delay (nop!)) - ;; it's a repated value, loop to copy it. (let ((repeated-value (-> in 0))) (set! in (&-> in 1)) @@ -39,38 +32,24 @@ (nop!) (nop!) (nop!) - (set! (-> out 0) repeated-value) - ) + (set! (-> out 0) repeated-value)) (set! out (&-> out 1)) - (b! (> current-input 0) cfg-3 :delay (set! current-input (+ current-input -1))) - ) - + (b! (> current-input 0) cfg-3 :delay (set! current-input (+ current-input -1)))) (label cfg-5) ;; check for end (b! (zero? current-input) cfg-8 :delay (set! copy-length (- current-input))) - ;; copy (label cfg-6) - (let ((src-val (-> in 0))) - (set! in (&-> in 1)) - (nop!) - (nop!) - (set! (-> out 0) src-val) - ) + (let ((src-val (-> in 0))) (set! in (&-> in 1)) (nop!) (nop!) (set! (-> out 0) src-val)) (+! copy-length -1) - (b! (> copy-length 0) cfg-6 :delay (set! out (&-> out 1))) - ) + (b! (> copy-length 0) cfg-6 :delay (set! out (&-> out 1)))) (label cfg-8) 0 - (none) - ) + (none)) (deftype huf-dictionary-node (structure) - ((zero uint16) - (one uint16) - ) - ) - + ((zero uint16) + (one uint16))) (defun unpack-comp-huf ((dst (pointer uint8)) (src (pointer uint8)) (arg2 uint) (dict huf-dictionary-node)) "Unpack data compressed with huffman encoding." @@ -78,8 +57,7 @@ (nop!) (let ((t1-0 (-> dict zero)) (a2-1 (+ arg2 -1028)) - (t2-0 (-> dict one)) - ) + (t2-0 (-> dict one))) (nop!) (label cfg-1) (let ((v1-4 128)) @@ -87,20 +65,13 @@ (let ((t0-0 (-> src 0))) (set! src (&-> src 1)) (label cfg-2) - (let ((t3-0 (logand t0-0 v1-4))) - (.sra v1-4 v1-4 1) - (b! (zero? t3-0) cfg-4 :delay (set! t1-1 t1-0)) - ) - ) + (let ((t3-0 (logand t0-0 v1-4))) (.sra v1-4 v1-4 1) (b! (zero? t3-0) cfg-4 :delay (set! t1-1 t1-0)))) (nop!) (set! t1-1 t2-0) (label cfg-4) (let ((t2-1 (+ t1-1 -256))) - (let ((t3-1 (* t1-1 4))) - (b! (< (the-as int t2-1) 0) cfg-8 :delay (set! t3-2 (+ t3-1 a2-1))) - ) - (b! (zero? t2-1) cfg-10 :delay (set! t1-0 (-> (the-as (pointer uint16) t3-2) 0))) - ) + (let ((t3-1 (* t1-1 4))) (b! (< (the-as int t2-1) 0) cfg-8 :delay (set! t3-2 (+ t3-1 a2-1)))) + (b! (zero? t2-1) cfg-10 :delay (set! t1-0 (-> (the-as (pointer uint16) t3-2) 0)))) (b! (nonzero? v1-4) cfg-2 :delay (set! t2-0 (-> (the-as (pointer uint16) t3-2) 1))) (b! #t cfg-1 :delay (nop!)) (label cfg-8) @@ -108,31 +79,26 @@ (set! dst (&-> dst 1)) (nop!) (set! t1-0 (-> dict zero)) - (b! (nonzero? v1-4) cfg-2 :delay (set! t2-0 (-> dict one))) - ) - ) + (b! (nonzero? v1-4) cfg-2 :delay (set! t2-0 (-> dict one))))) (b! #t cfg-1 :delay (nop!)) (label cfg-10) (nop!) (nop!) 0 - (none) - ) + (none)) (defmethod update-vis! ((this level) (vis-info level-vis-info) (arg1 uint) (arg2 uint)) "Update the vis-bits for the level with the given vis info. arg1 unused. if the vis-file flag isn't set, will use arg2 as vis data." (local-vars (t0-3 uint128) (vis-buffer object)) - - (let* ((cam-leaf-idx (-> vis-info from-bsp current-leaf-idx)) ;; current bsp leaf of camera - (curr-vis-str (-> vis-info current-vis-string)) ;; currently loaded vis-string. - (desired-vis-str (-> vis-info vis-string cam-leaf-idx)) ;; vis-string offset for bsp leaf. + (let* ((cam-leaf-idx (-> vis-info from-bsp current-leaf-idx)) ;; current bsp leaf of camera + (curr-vis-str (-> vis-info current-vis-string)) ;; currently loaded vis-string. + (desired-vis-str (-> vis-info vis-string cam-leaf-idx)) ;; vis-string offset for bsp leaf. ) ;; oops 0 (+ 16 #x70000000) (+ 2064 #x70000000) - ;; this is the same string we asked for last time. (when (= curr-vis-str desired-vis-str) (cond @@ -140,28 +106,19 @@ ;; we started IOP -> EE, but it might not be done yet. (when (check-busy *ramdisk-rpc*) ;; not done, wait. - (return #f) - ) + (return #f)) ;; we're done! Deal with the vis data. (logclear! (-> vis-info flags) (vis-info-flag waiting-for-iop-to-ee)) (set! vis-buffer (-> this vis-buffer)) - (b! #t cfg-27 :delay (nop!)) - ) + (b! #t cfg-27 :delay (nop!))) (else - ;; matched, and loaded! A previous run would have done setup. - (return #t) - ) - ) - ) - + ;; matched, and loaded! A previous run would have done setup. + (return #t)))) ;; wait for any pending load to finish before trying to change things. (when (logtest? (vis-info-flag waiting-for-iop-to-ee) (-> vis-info flags)) (when (check-busy *ramdisk-rpc*) - (return #f) - ) - (logclear! (-> vis-info flags) (vis-info-flag waiting-for-iop-to-ee)) - ) - + (return #f)) + (logclear! (-> vis-info flags) (vis-info-flag waiting-for-iop-to-ee))) ;; ok, we can now change the current string and request from iop. (set! (-> vis-info current-vis-string) desired-vis-str) ;; this branch picks between .VIS file ramdisk and BSP file visibility data. @@ -171,27 +128,19 @@ (set! vis-buffer (the-as (pointer uint8) (+ arg2 desired-vis-str))) (b! #t cfg-27 :delay (nop!)) (label cfg-15) - ;; start a ramdisk load. This should have already been done as part of level loading anyway. ;; so this will just get the ramdisk file ID. (let ((vis-load-result (vis-load this))) (b! (nonzero? vis-load-result) cfg-21) - ;; ramdisk failed, make everything visible. (let* ((dest-bits (-> vis-info vis-bits)) (len (-> this bsp visible-list-length)) (bsp-bits (the-as (pointer uinteger) (-> this bsp all-visible-list))) - (len-qw (/ (+ len 15) 16)) - ) + (len-qw (/ (+ len 15) 16))) (dotimes (a2-1 len-qw) - (set! - (-> (the-as (pointer uint128) dest-bits) 0) - (-> (the-as (pointer uint128) bsp-bits) 0) - ) + (set! (-> (the-as (pointer uint128) dest-bits) 0) (-> (the-as (pointer uint128) bsp-bits) 0)) (&+! dest-bits 16) - (set! bsp-bits (&-> (the-as (pointer uint16) bsp-bits) 8)) - ) - ) + (set! bsp-bits (&-> (the-as (pointer uint16) bsp-bits) 8)))) (let ((result #f)) (b! #t cfg-55 :delay (nop!)) (the-as none 0) @@ -201,25 +150,19 @@ (when (check-busy *ramdisk-rpc*) (set! (-> vis-info current-vis-string) (the-as uint -1)) (set! (-> this all-visible?) 'loading) - (if (= *cheat-mode* 'debug) - (format *stdcon* "Ramdisk loading~%") - ) - (return #f) - ) + (if (= *cheat-mode* 'debug) (format *stdcon* "Ramdisk loading~%")) + (return #f)) ;; now the ramdisk has the file in the IOP for sure. we want to ask for the IOP->EE transfer ;; for the string for our leaf node. Set a flag to remember that we're waiting on IOP->EE: (set! (-> vis-info flags) (logior (-> vis-info flags) #x40000000)) ;; and kick off a load - (ramdisk-load - (the-as int vis-load-result) ;; file ID in ramdisk - desired-vis-str ;; the offset in the VIS file - (the-as uint 2048) ;; always do 2kB. it's a worst case if the string can't be compressed - (-> this vis-buffer) ;; copy to the level buffer for vis data - ) - (set! result #f) ;; this takes time, so quit and report that we failed. + (ramdisk-load (the-as int vis-load-result) ;; file ID in ramdisk + desired-vis-str ;; the offset in the VIS file + (the-as uint 2048) ;; always do 2kB. it's a worst case if the string can't be compressed + (-> this vis-buffer) ;; copy to the level buffer for vis data + ) + (set! result #f) ;; this takes time, so quit and report that we failed. (b! #t cfg-55 :delay (nop!)) - - ;; we'll get here once the compressed vis data is in vis-buffer ;; this can come from IOP->EE or from the BSP file directly (label cfg-27) @@ -227,53 +170,31 @@ (let ((lower-flag-bits (the-as int (logand #x1fffffff (-> vis-info flags)))) (spad-start (the-as object (scratchpad-object object :offset 16))) (spad-end (the-as int (scratchpad-object int :offset 2064))) - (list-len (-> this bsp visible-list-length)) - ) + (list-len (-> this bsp visible-list-length))) (when (zero? (the-as vis-info-flag lower-flag-bits)) ;; set the spad buffer to 0 (but we write over this next??) (let ((list-qwc (/ (+ list-len 15) 16))) (dotimes (a0-28 list-qwc) - (set! (-> (the-as (pointer uint128) spad-start) a0-28) (the-as uint128 0)) - ) - ) + (set! (-> (the-as (pointer uint128) spad-start) a0-28) (the-as uint128 0)))) ;; but then copy the vis buffer directly. - (mem-copy! (the-as pointer spad-start) (the-as pointer vis-buffer) list-len) - ) - + (mem-copy! (the-as pointer spad-start) (the-as pointer vis-buffer) list-len)) (while (nonzero? lower-flag-bits) (case (logand lower-flag-bits 7) - ((1) ;; decomp type 1: this unpacks data that exploits the BVH tree structure. - ;; it omits 0's for children of invisible parents. But to unpack, we need - ;; to know all the BVHs in the level. - (let ((v1-55 (/ (+ list-len 15) 16))) - (dotimes (a0-32 v1-55) - (set! (-> (the-as (pointer uint128) spad-start) a0-32) (the-as uint128 0)) - ) - ) - (unpack-vis - (-> this bsp drawable-trees) - (the-as (pointer int8) spad-start) - (the-as (pointer int8) vis-buffer) - ) - ) - ((2) ;; decomp type 2: run length encoding. Haven't seen this yet. - (format 0 "hit RLE case in decomp.gc, probably worth checking.~%") - (unpack-comp-rle - (the-as (pointer int8) spad-start) - (the-as (pointer int8) vis-buffer) - ) - ) - ((3) ;; decomp type 3: huffman encoding. most common. - (unpack-comp-huf - (the-as (pointer uint8) spad-start) - (the-as (pointer uint8) vis-buffer) - (-> vis-info dictionary) - (the-as huf-dictionary-node - (+ (-> vis-info dictionary) (-> vis-info dictionary-length) -4) - ) - ) - ) - ) + ((1) ;; decomp type 1: this unpacks data that exploits the BVH tree structure. + ;; it omits 0's for children of invisible parents. But to unpack, we need + ;; to know all the BVHs in the level. + (let ((v1-55 (/ (+ list-len 15) 16))) + (dotimes (a0-32 v1-55) + (set! (-> (the-as (pointer uint128) spad-start) a0-32) (the-as uint128 0)))) + (unpack-vis (-> this bsp drawable-trees) (the-as (pointer int8) spad-start) (the-as (pointer int8) vis-buffer))) + ((2) ;; decomp type 2: run length encoding. Haven't seen this yet. + (format 0 "hit RLE case in decomp.gc, probably worth checking.~%") + (unpack-comp-rle (the-as (pointer int8) spad-start) (the-as (pointer int8) vis-buffer))) + ((3) ;; decomp type 3: huffman encoding. most common. + (unpack-comp-huf (the-as (pointer uint8) spad-start) + (the-as (pointer uint8) vis-buffer) + (-> vis-info dictionary) + (the-as huf-dictionary-node (+ (-> vis-info dictionary) (-> vis-info dictionary-length) -4))))) ;; we have 3 rotating 2kB buffers for this unpacking process. ;; we really only need 2, but I think they did 3 like this so we do RAM -> SPAD, SPAD->SPAD ;; in practice, I've only seen this hit exactly 2 decompressions, so no need for more complicated @@ -281,9 +202,7 @@ (set! vis-buffer (the-as (pointer uint8) (the-as int spad-start))) (set! spad-start spad-end) (set! spad-end (the-as int vis-buffer)) - (.sra lower-flag-bits lower-flag-bits 3) - ) - + (.sra lower-flag-bits lower-flag-bits 3)) ;; now vis-buffer points to the uncompressed data. ;; if things went well, we shouldn't have any bits set for drawables that don't exist. ;; we can check this by anding with the all visible list, and confirming it doesn't @@ -294,59 +213,41 @@ (v1-67 #f) ;; found error ) (dotimes (s0-1 list-len) - (when (!= (logand (-> (the-as (pointer uint8) s2-1) 0) - (-> (the-as (pointer uint8) s1-1) 0) - ) - (-> (the-as (pointer uint8) s2-1) 0) - ) - (format #t "ERROR: illegal vis bits set [byte ~X] ~X -> ~X~%" + (when (!= (logand (-> (the-as (pointer uint8) s2-1) 0) (-> (the-as (pointer uint8) s1-1) 0)) + (-> (the-as (pointer uint8) s2-1) 0)) + (format #t + "ERROR: illegal vis bits set [byte ~X] ~X -> ~X~%" s0-1 (-> (the-as (pointer uint8) s2-1) 0) - (-> (the-as (pointer uint8) s1-1) 0) - ) + (-> (the-as (pointer uint8) s1-1) 0)) (format #t "bad addr: #x~X~%" s2-1) ;; added - (set! v1-67 #t) - ) + (set! v1-67 #t)) (set! s2-1 (&-> (the-as (pointer uint8) s2-1) 1)) - (set! s1-1 (&+ (the-as (pointer uint16) s1-1) 1)) - ) + (set! s1-1 (&+ (the-as (pointer uint16) s1-1) 1))) (when v1-67 - (format #t "src = #x~x dest = #x~x ~s ~s~%" + (format #t + "src = #x~x dest = #x~x ~s ~s~%" (the-as object vis-buffer) (-> vis-info vis-bits) (-> vis-info level) - (-> vis-info from-level) - ) + (-> vis-info from-level)) (format #t "leaf-index = ~d~%" (-> vis-info from-bsp current-leaf-idx)) - 0 - ) - ) - + 0)) ;; just in case we failed the above check, and with the all visible list anyway. ;; also copy from vis-buffer (may be spad) to the final vis-bits output (let ((v1-71 (the-as object vis-buffer)) (a0-47 (-> vis-info vis-bits)) (a1-22 (the-as (pointer uinteger) (-> this bsp all-visible-list))) - (a2-11 (/ (+ list-len 15) 16)) - ) + (a2-11 (/ (+ list-len 15) 16))) (dotimes (a3-8 a2-11) (let ((t0-2 (-> (the-as (pointer uint128) v1-71) 0)) - (t1-1 (-> (the-as (pointer uint128) a1-22) 0)) - ) - (.pand t0-3 t0-2 t1-1) - ) + (t1-1 (-> (the-as (pointer uint128) a1-22) 0))) + (.pand t0-3 t0-2 t1-1)) (set! (-> (the-as (pointer uint128) a0-47) 0) t0-3) (&+! a0-47 16) (set! v1-71 (&-> (the-as (pointer uint16) v1-71) 8)) - (set! a1-22 (&-> (the-as (pointer uint16) a1-22) 8)) - ) - ) - ) + (set! a1-22 (&-> (the-as (pointer uint16) a1-22) 8))))) ;; succeeded! (set! result #t) (label cfg-55) - result - ) - ) - ) - ) + result)))) diff --git a/goal_src/jak1/engine/load/file-io.gc b/goal_src/jak1/engine/load/file-io.gc index 9b14a95941..9c6f68337b 100644 --- a/goal_src/jak1/engine/load/file-io.gc +++ b/goal_src/jak1/engine/load/file-io.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gstring.gc") -;; name: file-io.gc -;; name in dgo: file-io -;; dgos: GAME, ENGINE - ;; GOAL File I/O ;; This is mostly not used in the retail game and was more for loading stuff during development. ;; The file-stream is an inefficient way to load data, but is flexible and can load @@ -25,34 +20,29 @@ ;; DECOMP BEGINS (deftype file-stream (basic) - ((flags uint32) - (mode symbol) - (name string) - (file uint32) - ) + ((flags uint32) + (mode symbol) + (name string) + (file uint32)) (:methods - (new (symbol type string symbol) _type_) - ) - ) + (new (symbol type string symbol) _type_))) (defconstant SCE_SEEK_SET 0) + (defconstant SCE_SEEK_CUR 1) + (defconstant SCE_SEEK_END 2) (defmacro file-stream-valid? (fs) - `(>= (the-as int (-> ,fs file)) 0) - ) + `(>= (the-as int (-> ,fs file)) 0)) (defmacro file-stream-tell (fs) - `(file-stream-seek ,fs 0 SCE_SEEK_CUR) - ) + `(file-stream-seek ,fs 0 SCE_SEEK_CUR)) (defmethod new file-stream ((allocation symbol) (type-to-make type) (name string) (mode symbol)) "Allocate a file-stream and open it." (let ((a0-1 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - (file-stream-open a0-1 name mode) - ) - ) + (file-stream-open a0-1 name mode))) ;; we already have a length method for a file-stream defined in C. ;; just store that in the method table. @@ -65,49 +55,50 @@ (clear str) ;; so this will read nothing. (file-stream-read stream (-> str data) (length str)) - str - ) - + str) ;; A common file header found in GOAL files. (deftype file-info (basic) - ((file-type symbol) - (file-name basic) - (major-version uint32) - (minor-version uint32) - (maya-file-name basic) - (tool-debug basic) - (mdb-file-name basic) - ) - ) - -(defmethod print file-info ((this file-info)) + ((file-type symbol) + (file-name basic) + (major-version uint32) + (minor-version uint32) + (maya-file-name basic) + (tool-debug basic) + (mdb-file-name basic))) + +(defmethod print ((this file-info)) "Print information about a file" - (format #t "#<~A ~A :version ~D.~D @ #x~X>" - (-> this type) (-> this file-name) (-> this major-version) (-> this minor-version) this) - this - ) + (format #t + "#<~A ~A :version ~D.~D @ #x~X>" + (-> this type) + (-> this file-name) + (-> this major-version) + (-> this minor-version) + this) + this) ;; allocate a temporary string (define *file-temp-string* (new 'global 'string 128 (the string #f))) - (defenum file-kind - :bitfield #f - (level-bt 0) ;; aka bsp-header. - (art-group 1) - (tpage 2) - (dir-tpage 3) - (level-vs 4) - (tx 5) - (vis 6) - ) - + :bitfield #f + (level-bt 0) ;; aka bsp-header. + (art-group 1) + (tpage 2) + (dir-tpage 3) + (level-vs 4) + (tx 5) + (vis 6)) (defconstant LEVEL_BT_FILE_VERSION 30) + (defconstant ART_GROUP_FILE_VERSION 6) + (defconstant TPAGE_FILE_VERSION 7) ;; also used for dir + (defconstant LEVEL_VS_FILE_VERSION 30) + (defconstant TX_FILE_VERSION 1) (defun make-file-name ((kind file-kind) (name string) (art-group-version int) (arg3 symbol)) @@ -121,118 +112,60 @@ arg3 is unused." (clear *file-temp-string*) (cond - ((= kind (file-kind dir-tpage)) - (format *file-temp-string* "texture-page~D/dir-tpages" TPAGE_FILE_VERSION) - ) + ((= kind (file-kind dir-tpage)) (format *file-temp-string* "texture-page~D/dir-tpages" TPAGE_FILE_VERSION)) ((= kind (file-kind tpage)) (#if PC_PORT - (format *file-temp-string* "tpage-~S" name) - (format *file-temp-string* "texture-page~D/tpage-~S" TPAGE_FILE_VERSION name) - ) - ) - ((= kind (file-kind level-bt)) - (format *file-temp-string* "level~D/~S-bt" LEVEL_VS_FILE_VERSION name) - ) - ((= kind (file-kind tx)) - (format *file-temp-string* "res~D/~S-tx" TX_FILE_VERSION name) - ) - ((= kind (file-kind level-vs)) - (format *file-temp-string* "level~D/~S-vs" LEVEL_BT_FILE_VERSION name) - ) - ((= kind (file-kind vis)) - (format *file-temp-string* "~S.VIS" name) - ) + (format *file-temp-string* "tpage-~S" name) + (format *file-temp-string* "texture-page~D/tpage-~S" TPAGE_FILE_VERSION name))) + ((= kind (file-kind level-bt)) (format *file-temp-string* "level~D/~S-bt" LEVEL_VS_FILE_VERSION name)) + ((= kind (file-kind tx)) (format *file-temp-string* "res~D/~S-tx" TX_FILE_VERSION name)) + ((= kind (file-kind level-vs)) (format *file-temp-string* "level~D/~S-vs" LEVEL_BT_FILE_VERSION name)) + ((= kind (file-kind vis)) (format *file-temp-string* "~S.VIS" name)) ((= kind (file-kind art-group)) (#if PC_PORT - (format *file-temp-string* "~S-ag" name) - (format *file-temp-string* "art-group~D/~S-ag" - (if (> art-group-version 0) - art-group-version - ART_GROUP_FILE_VERSION - ) - name - ) - ) - ) - ) - *file-temp-string* - ) + (format *file-temp-string* "~S-ag" name) + (format *file-temp-string* + "art-group~D/~S-ag" + (if (> art-group-version 0) art-group-version ART_GROUP_FILE_VERSION) + name)))) + *file-temp-string*) (defun make-vfile-name ((kind file-kind) (name string)) "Make virtual? file name. This makes a name that the kernel knows how to handle in a specific way. This function is not used." (clear *file-temp-string*) (cond - ((= kind (file-kind level-bt)) - (format *file-temp-string* "$LEVEL/~S" name) - ) - ((= kind (file-kind art-group)) - (format *file-temp-string* "$ART_GROUP/~S" name) - ) - ) - *file-temp-string* - ) + ((= kind (file-kind level-bt)) (format *file-temp-string* "$LEVEL/~S" name)) + ((= kind (file-kind art-group)) (format *file-temp-string* "$ART_GROUP/~S" name))) + *file-temp-string*) (defun file-info-correct-version? ((info file-info) (kind file-kind) (version-override int)) "Check if the version and kind in the info is valid. The version-override can specify a non-default version, or set to 0 for the default version" - (let* ((expected-version - (cond - ((zero? version-override) - (case kind - (((file-kind tpage) (file-kind dir-tpage)) - 7 - ) - (((file-kind level-bt)) - 30 - ) - (((file-kind art-group)) - 6 - ) - ) - ) - (else - version-override - ) - ) - ) + (let* ((expected-version (cond + ((zero? version-override) + (case kind + (((file-kind tpage) (file-kind dir-tpage)) 7) + (((file-kind level-bt)) 30) + (((file-kind art-group)) 6))) + (else version-override))) (v1-1 kind) (kind-name (cond - ((= v1-1 (file-kind tpage)) - "texture-page" - ) - ((= v1-1 (file-kind level-bt)) - "bsp-header" - ) - ((= v1-1 (file-kind art-group)) - "art-group" - ) - ) - ) - ) + ((= v1-1 (file-kind tpage)) "texture-page") + ((= v1-1 (file-kind level-bt)) "bsp-header") + ((= v1-1 (file-kind art-group)) "art-group")))) (cond ((not (name= (the-as basic (-> info file-type value)) kind-name)) - (format 0 "ERROR: file ~A is of type ~S but needs to be ~S.~%" - (-> info file-name) - (-> info file-type) - kind-name - ) - #f - ) + (format 0 "ERROR: file ~A is of type ~S but needs to be ~S.~%" (-> info file-name) (-> info file-type) kind-name) + #f) ((!= expected-version (-> info major-version)) - (format 0 "ERROR: file ~A is version ~D.~D, but needs to be ~D.x~%" + (format 0 + "ERROR: file ~A is version ~D.~D, but needs to be ~D.x~%" (-> info file-name) (-> info major-version) (-> info minor-version) - expected-version - ) - #f - ) + expected-version) + #f) (else ;; all checks passed! - #t - ) - ) - ) - ) - + #t)))) diff --git a/goal_src/jak1/engine/load/load-dgo.gc b/goal_src/jak1/engine/load/load-dgo.gc index e42d2c705e..1502d68400 100644 --- a/goal_src/jak1/engine/load/load-dgo.gc +++ b/goal_src/jak1/engine/load/load-dgo.gc @@ -1,18 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "kernel/gstring.gc") (require "engine/ps2/rpc-h.gc") (require "engine/sound/gsound-h.gc") (require "engine/util/types-h.gc") -;; name: load-dgo.gc -;; name in dgo: load-dgo -;; dgos: GAME, ENGINE - - ;;;;;;;;;;;;;;;;;;;;;;;; ;; OVERLORD messages ;;;;;;;;;;;;;;;;;;;;;;;; @@ -21,11 +15,11 @@ (defenum load-msg-result :type uint16 :bitfield #f - (done 0) ;; dgo fully loaded! - (error 1) ;; loading failed (file not found, etc) - (more 2) ;; more files exist! - (aborted 3) ;; status returned after a request to cancel. - (invalid 666) ;; invalid status indicating a communication error. + (done 0) ;; dgo fully loaded! + (error 1) ;; loading failed (file not found, etc) + (more 2) ;; more files exist! + (aborted 3) ;; status returned after a request to cancel. + (invalid 666) ;; invalid status indicating a communication error. ) ;; DECOMP BEGINS @@ -33,16 +27,14 @@ ;; load command sent to the IOP to load a DGO. ;; The OVERLORD responds with the same message. (deftype load-dgo-msg (structure) - ((rsvd uint16) - (result load-msg-result) - (b1 pointer) - (b2 pointer) - (bt pointer) - (name uint128) - (name-chars uint8 16 :overlay-at name) - (address uint32 :overlay-at b1) - ) - ) + ((rsvd uint16) + (result load-msg-result) + (b1 pointer) + (b2 pointer) + (bt pointer) + (name uint128) + (name-chars uint8 16 :overlay-at name) + (address uint32 :overlay-at b1))) #| struct RPC_Dgo_Cmd { @@ -58,15 +50,13 @@ struct RPC_Dgo_Cmd { ;; load commmand/response for loading a chunk of a file. ;; It can either be an entire file, or a section of a STR file. (deftype load-chunk-msg (structure) - ((rsvd uint16) - (result load-msg-result) - (address pointer) - (section uint32) - (maxlen uint32) - (id uint32 :overlay-at address) - (basename uint8 48) - ) - ) + ((rsvd uint16) + (result load-msg-result) + (address pointer) + (section uint32) + (maxlen uint32) + (id uint32 :overlay-at address) + (basename uint8 48))) #| struct RPC_Str_Cmd { @@ -82,11 +72,9 @@ struct RPC_Str_Cmd { ;; The header of a DGO file (deftype dgo-header (structure) - ((length uint32) - (rootname uint8 60) - (data uint8 :dynamic) - ) - ) + ((length uint32) + (rootname uint8 60) + (data uint8 :dynamic))) #| struct DgoHeader { @@ -95,24 +83,21 @@ struct DgoHeader { }; |# - ;;;;;;;;;;;;;;;;;;;;;;;;; ;; RPC Buffer init ;;;;;;;;;;;;;;;;;;;;;;;;; (define-extern *load-dgo-rpc* rpc-buffer-pair) -(when (= 0 (the int *load-dgo-rpc*)) - ;; we need to allocate the rpc buffers - (set! *load-dgo-rpc* (new 'global 'rpc-buffer-pair (the uint 32) (the uint 1) RPC-DGO)) - (define *load-str-rpc* (new 'global 'rpc-buffer-pair (the uint 64) (the uint 1) RPC-LOAD-STR)) - (define *play-str-rpc* (new 'global 'rpc-buffer-pair (the uint 64) (the uint 2) RPC-PLAY-STR)) - - ;; we have separate locks for queuing and loading. - (define *load-str-lock* '#f) - (define *que-str-lock* '#f) - (define *dgo-name* (new 'global 'string 64 (the string '#f))) - ) +(when (= 0 (the int *load-dgo-rpc*)) + ;; we need to allocate the rpc buffers + (set! *load-dgo-rpc* (new 'global 'rpc-buffer-pair (the uint 32) (the uint 1) RPC-DGO)) + (define *load-str-rpc* (new 'global 'rpc-buffer-pair (the uint 64) (the uint 1) RPC-LOAD-STR)) + (define *play-str-rpc* (new 'global 'rpc-buffer-pair (the uint 64) (the uint 2) RPC-PLAY-STR)) + ;; we have separate locks for queuing and loading. + (define *load-str-lock* '#f) + (define *que-str-lock* '#f) + (define *dgo-name* (new 'global 'string 64 (the string '#f)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; STR LOAD @@ -124,11 +109,9 @@ struct DgoHeader { "Begin a streaming load if possible! We must be able to grab the lock, and no streaming load in progress. Return if we actually start the load." - ;; check if safe to begin load. (when (or (check-busy *load-str-rpc*) *load-str-lock*) - (return #f) - ) + (return #f)) ;; ok, we are good to start a load. begin by adding an element to the RPC buffer (let ((cmd (the load-chunk-msg (add-element *load-str-rpc*)))) (set! (-> cmd result) (load-msg-result invalid)) @@ -140,43 +123,32 @@ struct DgoHeader { (call *load-str-rpc* (the uint 0) (the pointer cmd) (the uint 32)) (set! *load-str-lock* #t) (set! *que-str-lock* #t) - #t - ) - ) + #t)) (defun str-load-status ((length-out (pointer int32))) "Check the status of the str load. The 'busy status indicates it is still going The 'error status indicates the load failed. The 'complete status means the load is finished, and length-out contains the loaded length." - ;; still going.. - (if (check-busy *load-str-rpc*) - (return 'busy) - ) - + (if (check-busy *load-str-rpc*) (return 'busy)) ;; not busy, we can free the lock (set! *load-str-lock* #f) ;; also lock the queue. Not sure why? (set! *que-str-lock* #t) ;; grab the response (let ((response (the load-chunk-msg (pop-last-received *load-str-rpc*)))) - (if (= (-> response result) (load-msg-result error)) - (return 'error) - ) + (if (= (-> response result) (load-msg-result error)) (return 'error)) ;; no error! (set! (-> length-out) (the int (-> response maxlen))) - 'complete - ) - ) + 'complete)) (defun str-load-cancel () "Cancel a str load. This doesn't actually tell the OVERLORD to stop, it just frees the lock." (set! *load-str-lock* #f) ;; and locks the queue? (set! *que-str-lock* #t) - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; STR PLAY @@ -192,10 +164,8 @@ struct DgoHeader { (charp<-string (-> cmd basename) name) (set! (-> cmd address) (the-as pointer id)) ;; probably using a different enum here - (set! (-> cmd result) (load-msg-result done)) - ) - (none) - ) + (set! (-> cmd result) (load-msg-result done))) + (none)) (defun str-play-stop ((name string)) "Queue command to stop playing." @@ -204,25 +174,17 @@ struct DgoHeader { ;; not sure why we need a name to stop? (charp<-string (-> cmd basename) name) ;; might be wrong enum here - (set! (-> cmd result) (load-msg-result error)) - ) - (none) - ) + (set! (-> cmd result) (load-msg-result error))) + (none)) (defun str-play-queue ((name string)) "Queue a command to do something" - (when (and (not (check-busy *play-str-rpc*)) - (not *load-str-lock*) - (not *que-str-lock*) - ) + (when (and (not (check-busy *play-str-rpc*)) (not *load-str-lock*) (not *que-str-lock*)) (let ((cmd (the-as load-chunk-msg (add-element *play-str-rpc*)))) (charp<-string (-> cmd basename) name) - (set! (-> cmd result) (load-msg-result more)) - ) - ) + (set! (-> cmd result) (load-msg-result more)))) (set! *que-str-lock* #f) - (none) - ) + (none)) (defun str-ambient-play ((name string)) "Queue a command to do something" @@ -230,35 +192,24 @@ struct DgoHeader { (let ((cmd (the-as load-chunk-msg (add-element *play-str-rpc*)))) (set! (-> cmd basename 0) (the-as uint 36)) ;; a '$' char (charp<-string (&-> cmd basename 1) name) - (set! (-> cmd result) (load-msg-result done)) - ) - (none) - ) + (set! (-> cmd result) (load-msg-result done))) + (none)) (defun str-ambient-stop ((name string)) (set! *que-str-lock* #t) (let ((cmd (the-as load-chunk-msg (add-element *play-str-rpc*)))) (set! (-> cmd basename 0) (the-as uint 36)) ;; a '$' char (charp<-string (&-> cmd basename 1) name) - (set! (-> cmd result) (load-msg-result error)) - ) - (none) - ) + (set! (-> cmd result) (load-msg-result error))) + (none)) (defun str-play-kick () "Call str RPC if we aren't busy" ;; is written with an empty body for the first case. (cond - ((check-busy *play-str-rpc*) - ) - (else - (call *play-str-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - ) - ) - (none) - ) - - + ((check-busy *play-str-rpc*)) + (else (call *play-str-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)))) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; DGO LOAD and LINK @@ -268,14 +219,11 @@ struct DgoHeader { (defun dgo-load-begin ((name string) (buffer1 pointer) (buffer2 pointer) (buffer-top pointer)) "Send a DGO load RPC!" - ;; remember when we started (set! *dgo-time* (-> *display* real-integral-frame-counter)) (format 0 "Starting level load clock~%") - ;; flush pending RPC (sync *load-dgo-rpc* #t) - ;; grab a new command from the RCP buffer (let ((cmd (the-as load-dgo-msg (add-element *load-dgo-rpc*)))) ;; set parameters @@ -287,15 +235,12 @@ struct DgoHeader { (set! (-> cmd name) (string->sound-name name)) ;; call now! (call *load-dgo-rpc* (the-as uint 0) (the-as pointer cmd) (the-as uint 32)) - cmd - ) - ) + cmd)) (defun dgo-load-get-next ((last-object (pointer symbol))) "Check if the currently loading object is done. Will set the last-object flag depending on if there is more. Returns #f if it hasn't loaded yet and the address otherwise" - (set! (-> last-object 0) #t) (let ((load-location (the-as pointer #f))) ;; see if RPC is done @@ -303,33 +248,21 @@ struct DgoHeader { ;; it is, try to get a response, if there is a new one. (let ((response (the-as load-dgo-msg (pop-last-received *load-dgo-rpc*)))) (when response - ;; get load location (if (or (= (-> response result) (load-msg-result done)) (= (-> response result) (load-msg-result more))) - ;; success! set load location to the location the IOP loaded to. - (set! load-location (the-as pointer (-> response b1))) - ) - + ;; success! set load location to the location the IOP loaded to. + (set! load-location (the-as pointer (-> response b1)))) ;; set more flag - (if (= (-> response result) (load-msg-result more)) - (set! (-> last-object 0) #f) - ) - + (if (= (-> response result) (load-msg-result more)) (set! (-> last-object 0) #f)) ;; if we're done loading, print the load time. ;; note that this does not include linking/setup of the ;; final object in the level which may take a significant amount of time (if (= (-> response result) (load-msg-result done)) - ;; this assumes it was stable at the target fps! - (format 0 "Elapsed time for level = ~Fs~%" - (* (-> *display* seconds-per-frame) (the float (- (-> *display* real-integral-frame-counter) *dgo-time*))) - ) - ) - ) - ) - ) - load-location - ) - ) + ;; this assumes it was stable at the target fps! + (format 0 + "Elapsed time for level = ~Fs~%" + (* (-> *display* seconds-per-frame) (the float (- (-> *display* real-integral-frame-counter) *dgo-time*)))))))) + load-location)) (defun dgo-load-continue ((buffer-top pointer)) "Send a command to to the IOP to continue loading a DGO" @@ -340,9 +273,7 @@ struct DgoHeader { (set! (-> cmd bt) buffer-top) (set! (-> cmd name) (the-as uint128 0)) (call *load-dgo-rpc* (the-as uint 1) (the-as pointer cmd) (the-as uint 32)) - (the-as int cmd) - ) - ) + (the-as int cmd))) (defun dgo-load-cancel () "Send a command to the IOP to cancel loading a DGO. @@ -351,45 +282,30 @@ struct DgoHeader { I believe this is only good to call if you do it after dgo-load-get-next and before dgo-load-continue" (sync *load-dgo-rpc* #t) - (let ((cmd (add-element *load-dgo-rpc*))) - (call *load-dgo-rpc* (the-as uint 2) cmd (the-as uint 32)) - ) - (none) - ) + (let ((cmd (add-element *load-dgo-rpc*))) (call *load-dgo-rpc* (the-as uint 2) cmd (the-as uint 32))) + (none)) (defun find-temp-buffer ((size int)) "A terrible function to find some temporary space in the DMA system. It is unused, thankfully" - ;; it checks the same thing twice. (let ((qwc (+ (/ size 16) 2))) (the-as pointer (cond - ((< (the-as uint qwc) - (the-as uint (dma-buffer-free (-> *display* frames (-> *display* on-screen) frame global-buf))) - ) - (logand -16 (the-as int (&+ (-> *display* frames (-> *display* on-screen) frame global-buf base) 15))) - ) - ((< (the-as uint qwc) - (the-as uint (dma-buffer-free (-> *display* frames (-> *display* on-screen) frame global-buf))) - ) - (logand -16 (the-as int (&+ (-> *display* frames (-> *display* on-screen) frame global-buf base) 15))) - ) - ) - ) - ) - ) + ((< (the-as uint qwc) (the-as uint (dma-buffer-free (-> *display* frames (-> *display* on-screen) frame global-buf)))) + (logand -16 (the-as int (&+ (-> *display* frames (-> *display* on-screen) frame global-buf base) 15)))) + ((< (the-as uint qwc) (the-as uint (dma-buffer-free (-> *display* frames (-> *display* on-screen) frame global-buf)))) + (logand -16 (the-as int (&+ (-> *display* frames (-> *display* on-screen) frame global-buf base) 15)))))))) (defenum link-flag - :bitfield #t - :type int32 - (output-load-msg 0) - (output-load-true-msg 1) - (execute-login 2) - (print-login 3) - (force-debug 4) - (fast-link 5) - ) + :bitfield #t + :type int32 + (output-load-msg 0) + (output-load-true-msg 1) + (execute-login 2) + (print-login 3) + (force-debug 4) + (fast-link 5)) ; (link-flag output-load-msg ; output-load-true-msg @@ -403,43 +319,34 @@ struct DgoHeader { ;; first, check to see if we ran off the end of the heap. ;; ideally you'd check this _before_ loading the file (if (>= (the-as int (&+ obj-data (-> obj-file length))) (the-as int (-> heap top-base))) - ;; just print an error, and continue... - (format 0 "ERROR: -----> dgo file header #x~X has overrun heap #x~X by ~D bytes. This is very bad!~%" - obj-file - heap - (&- (&+ obj-data (-> obj-file length)) (the-as uint (-> heap top-base))) - ) - ) - + ;; just print an error, and continue... + (format 0 + "ERROR: -----> dgo file header #x~X has overrun heap #x~X by ~D bytes. This is very bad!~%" + obj-file + heap + (&- (&+ obj-data (-> obj-file length)) (the-as uint (-> heap top-base))))) ;; last object should be loaded on top of the heap. ;; until this link completes, the heap is in a very strange state. (if last-object - (format 0 "NOTICE: loaded ~g, ~D bytes (~f K) at top ~D~%" - (-> obj-file rootname) - (-> obj-file length) - (* 0.0009765625 (the float (-> obj-file length))) - (&- (&+ obj-data (-> obj-file length)) (the-as uint (-> heap base))) - ) - ) - + (format 0 + "NOTICE: loaded ~g, ~D bytes (~f K) at top ~D~%" + (-> obj-file rootname) + (-> obj-file length) + (* 0.0009765625 (the float (-> obj-file length))) + (&- (&+ obj-data (-> obj-file length)) (the-as uint (-> heap base))))) ;; store the dgo name (string<-charp (clear *dgo-name*) (-> obj-file rootname)) - (nonzero? - (link-begin obj-data (-> *dgo-name* data) (the-as int (-> obj-file length)) heap - (if print-login - (link-flag output-load-msg output-load-true-msg execute-login fast-link print-login) - (link-flag output-load-msg output-load-true-msg execute-login fast-link) - ) - ) - ) - ) - ) + (nonzero? (link-begin obj-data + (-> *dgo-name* data) + (the-as int (-> obj-file length)) + heap + (if print-login + (link-flag output-load-msg output-load-true-msg execute-login fast-link print-login) + (link-flag output-load-msg output-load-true-msg execute-login fast-link)))))) (defun destroy-mem ((arg0 (pointer uint32)) (arg1 (pointer uint32))) "Overwrite memory from arg0 to arg1" (while (< (the-as int arg0) (the-as int arg1)) (set! (-> arg0 0) #xffffffff) - (set! arg0 (&-> arg0 1)) - ) - (none) - ) + (set! arg0 (&-> arg0 1))) + (none)) diff --git a/goal_src/jak1/engine/load/loader-h.gc b/goal_src/jak1/engine/load/loader-h.gc index 31efbb0cda..2fd2e3dc6e 100644 --- a/goal_src/jak1/engine/load/loader-h.gc +++ b/goal_src/jak1/engine/load/loader-h.gc @@ -1,20 +1,18 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gkernel-h.gc") -;; name: loader-h.gc -;; name in dgo: loader-h -;; dgos: GAME, ENGINE - ;; The loader is responsible for managing streaming loads. ;; note: lower values are more important. ;; negative values will preload. (defconstant SPOOL_PRIORITY_LOWEST 100000000.0) + (defconstant SPOOL_PRIORITY_RECALC -99.0) + (defconstant SPOOL_PRIORITY_HIGHEST -20.0) + (defconstant SPOOL_PRIORITY_HIGH -10.0) (defconstant SPOOL_HEAP_SIZE (* 247 1024)) ;; size of the heap to be used for each spool @@ -24,48 +22,34 @@ ;; A load-dir is a collection of references to loaded art. ;; This type didn't have a normal inspect method, so these field names are made up. (declare-type art-group basic) + (deftype load-dir (basic) - ((lev level) - (string-array (array string)) ;; these are the names - (data-array (array basic)) ;; this is the file data. + ((lev level) + (string-array (array string)) ;; these are the names + (data-array (array basic)) ;; this is the file data. ) (:methods - (new (symbol type int level) _type_) - (load-to-heap-by-name (_type_ string symbol kheap int) art-group) - (set-loaded-art (_type_ art-group) art-group) - ) - ) + (new (symbol type int level) _type_) + (load-to-heap-by-name (_type_ string symbol kheap int) art-group) + (set-loaded-art (_type_ art-group) art-group))) ;; specialization of load-dir where the data-array holds art-groups. (deftype load-dir-art-group (load-dir) - ((art-group-array (array art-group) :overlay-at data-array) - ) + ((art-group-array (array art-group) :overlay-at data-array)) (:methods - (new (symbol type int level) _type_) - ) - ) - + (new (symbol type int level) _type_))) (defmethod new load-dir ((allocation symbol) (type-to-make type) (length int) (lev level)) "Allocate a new load-dir with room for length entries" (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (set! (-> this lev) lev) ;; create the name array - (set! (-> this string-array) - (the-as (array string) - ((method-of-type array new) allocation array string length) - ) - ) + (set! (-> this string-array) (the-as (array string) ((method-of-type array new) allocation array string length))) (set! (-> this string-array length) 0) ;; create the data array - (set! (-> this data-array) - (the-as (array art-group) - ((method-of-type array new) allocation array basic length) - )) + (set! (-> this data-array) (the-as (array art-group) ((method-of-type array new) allocation array basic length))) (set! (-> this data-array length) 0) - this - ) - ) + this)) (defmethod new load-dir-art-group ((allocation symbol) (type-to-make type) (length int) (lev level)) "Allocate a new load-dir with room for length art-groups" @@ -74,9 +58,7 @@ ;; override the content type (set! (-> this data-array content-type) art-group) ;; and cast to child. - (the-as load-dir-art-group this) - ) - ) + (the-as load-dir-art-group this))) ;; An external-art-buffer owns some memory for loading files. ;; the "external" means it's not part of the level's (or common, always loaded) static data @@ -91,36 +73,32 @@ ;; Note: a locked buffer has loaded/linked the file, but hasn't linked the file ;; to the "master" art group, located in the level. (deftype external-art-buffer (basic) - ((index int32) - (other external-art-buffer) - (status symbol) - (locked? symbol) - (frame-lock symbol) - (heap kheap :inline) - (pending-load-file string) - (pending-load-file-part int32) - (pending-load-file-owner handle) - (pending-load-file-priority float) - (load-file string) - (load-file-part int32) - (load-file-owner handle) - (load-file-priority float) - (buf pointer) - (len int32) - (art-group art-group) - ) + ((index int32) + (other external-art-buffer) + (status symbol) + (locked? symbol) + (frame-lock symbol) + (heap kheap :inline) + (pending-load-file string) + (pending-load-file-part int32) + (pending-load-file-owner handle) + (pending-load-file-priority float) + (load-file string) + (load-file-part int32) + (load-file-owner handle) + (load-file-priority float) + (buf pointer) + (len int32) + (art-group art-group)) (:methods - (new (symbol type int) _type_) - (set-pending-file (_type_ string int handle float) int) - (update (_type_) int) - (inactive? (_type_) symbol) - (file-status (_type_ string int) symbol) - (link-file (_type_ art-group) art-group) - (unlink-file (_type_ art-group) int) - (unlock! (_type_) symbol) - ) - ) - + (new (symbol type int) _type_) + (set-pending-file (_type_ string int handle float) int) + (update (_type_) int) + (inactive? (_type_) symbol) + (file-status (_type_ string int) symbol) + (link-file (_type_ art-group) art-group) + (unlink-file (_type_ art-group) int) + (unlock! (_type_) symbol))) (defmethod new external-art-buffer ((allocation symbol) (type-to-make type) (idx int)) "Allocate a new external-art-buffer" @@ -138,61 +116,49 @@ (set! (-> this status) 'initialize) (set! (-> this locked?) #f) (set! (-> this other) #f) - this - ) - ) - + this)) ;; A spool-anim tracks the buffers holding chunks of a spooled animation. (deftype spool-anim (basic) - ((name string :offset 16) - (buf1 external-art-buffer :overlay-at name) - (index int32 :offset 20) - (buf2 external-art-buffer :overlay-at index) - (parts int32) - (priority float) - (owner handle) - (command-list pair) - ) - :pack-me - ) + ((name string :offset 16) + (buf1 external-art-buffer :overlay-at name) + (index int32 :offset 20) + (buf2 external-art-buffer :overlay-at index) + (parts int32) + (priority float) + (owner handle) + (command-list pair)) + :pack-me) ;; This is the main controller for the streaming loader. ;; It has two buffers for holding chunks of a spooling animation ;; The buffer can also be reused to hold other things. (deftype external-art-control (basic) - ((buffer external-art-buffer 2) - (rec spool-anim 3 :inline) - (spool-lock handle) - (reserve-buffer external-art-buffer) - (reserve-buffer-count int32) - (active-stream string) - (preload-stream spool-anim :inline) - (last-preload-stream spool-anim :inline) - (end-pad uint32) - ) + ((buffer external-art-buffer 2) + (rec spool-anim 3 :inline) + (spool-lock handle) + (reserve-buffer external-art-buffer) + (reserve-buffer-count int32) + (active-stream string) + (preload-stream spool-anim :inline) + (last-preload-stream spool-anim :inline) + (end-pad uint32)) (:methods - (new (symbol type) _type_) - (update (_type_ symbol) int) - (clear-rec (_type_) int) - (spool-push (_type_ string int process float) int) - (file-status (_type_ string int) symbol) - (reserve-alloc (_type_) kheap) - (reserve-free (_type_ kheap) int) - (none-reserved? (_type_) symbol) - (try-preload-stream (_type_ string int process float) int) - ) - ) - + (new (symbol type) _type_) + (update (_type_ symbol) int) + (clear-rec (_type_) int) + (spool-push (_type_ string int process float) int) + (file-status (_type_ string int) symbol) + (reserve-alloc (_type_) kheap) + (reserve-free (_type_ kheap) int) + (none-reserved? (_type_) symbol) + (try-preload-stream (_type_ string int process float) int))) (defmethod new external-art-control ((allocation symbol) (type-to-make type)) (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) ;; allocate buffers. (dotimes (buff-idx 2) - (set! (-> this buffer buff-idx) - ((method-of-type external-art-buffer new) allocation external-art-buffer buff-idx) - ) - ) + (set! (-> this buffer buff-idx) ((method-of-type external-art-buffer new) allocation external-art-buffer buff-idx))) ;; point buffers to each other (set! (-> this buffer 0 other) (-> this buffer 1)) (set! (-> this buffer 1 other) (-> this buffer 0)) @@ -200,8 +166,7 @@ (dotimes (rec-idx 3) (set! (-> this rec rec-idx name) #f) (set! (-> this rec rec-idx priority) SPOOL_PRIORITY_LOWEST) - (set! (-> this rec rec-idx owner) (the-as handle #f)) - ) + (set! (-> this rec rec-idx owner) (the-as handle #f))) ;; set up defaults. (set! (-> this spool-lock) (the-as handle #f)) (set! (-> this reserve-buffer) #f) @@ -212,10 +177,8 @@ (set! (-> this last-preload-stream name) #f) (set! (-> this last-preload-stream priority) SPOOL_PRIORITY_LOWEST) (set! (-> this last-preload-stream owner) (the-as handle #f)) - this - ) - ) - + this)) (define-extern *art-control* external-art-control) + (defun-extern art-group-load-check string kheap int art-group) diff --git a/goal_src/jak1/engine/load/loader.gc b/goal_src/jak1/engine/load/loader.gc index a2d4a86e21..2eca9f92a7 100644 --- a/goal_src/jak1/engine/load/loader.gc +++ b/goal_src/jak1/engine/load/loader.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/load/loader-h.gc") (require "engine/anim/joint.gc") (require "engine/load/load-dgo.gc") @@ -10,9 +9,6 @@ (require "engine/common-obs/process-drawable-h.gc") (require "engine/game/game-info-h.gc") -;; name: loader.gc -;; name in dgo: loader -;; dgos: GAME, ENGINE ;; note: changed for high fps ;; DECOMP BEGINS @@ -24,235 +20,169 @@ (format #t "~Tallocated-length: ~D~%" (-> this string-array allocated-length)) (format #t "~Tlength: ~D~%" (-> this string-array length)) (dotimes (i (-> this string-array length)) - (format #t "~T [~D] ~S ~A (~D bytes)~%" - i (-> this string-array i) (-> this data-array i) (mem-size (-> this data-array i) #f 0)) - ) - this - ) + (format #t + "~T [~D] ~S ~A (~D bytes)~%" + i + (-> this string-array i) + (-> this data-array i) + (mem-size (-> this data-array i) #f 0))) + this) (defmethod mem-usage ((this load-dir) (arg0 memory-usage-block) (arg1 int)) "Get the memory usage data of a load-dir" - (set! (-> arg0 length) (max 82 (-> arg0 length))) (set! (-> arg0 data 81 name) "array") (set! (-> arg0 data 81 count) (+ (-> arg0 data 81 count) 1)) (let ((v1-6 (asize-of this))) - (set! (-> arg0 data 81 used) (+ (-> arg0 data 81 used) v1-6)) - (set! - (-> arg0 data 81 total) - (+ (-> arg0 data 81 total) (logand -16 (+ v1-6 15))) - ) - ) + (set! (-> arg0 data 81 used) (+ (-> arg0 data 81 used) v1-6)) + (set! (-> arg0 data 81 total) (+ (-> arg0 data 81 total) (logand -16 (+ v1-6 15))))) (set! (-> arg0 length) (max 82 (-> arg0 length))) (set! (-> arg0 data 81 name) "array") (set! (-> arg0 data 81 count) (-> arg0 data 81 count)) (let ((v1-15 (asize-of (-> this string-array)))) - (set! (-> arg0 data 81 used) (+ (-> arg0 data 81 used) v1-15)) - (set! - (-> arg0 data 81 total) - (+ (-> arg0 data 81 total) (logand -16 (+ v1-15 15))) - ) - ) + (set! (-> arg0 data 81 used) (+ (-> arg0 data 81 used) v1-15)) + (set! (-> arg0 data 81 total) (+ (-> arg0 data 81 total) (logand -16 (+ v1-15 15))))) (set! (-> arg0 length) (max 82 (-> arg0 length))) (set! (-> arg0 data 81 name) "array") (set! (-> arg0 data 81 count) (-> arg0 data 81 count)) (let ((v1-24 (asize-of (-> this data-array)))) - (set! (-> arg0 data 81 used) (+ (-> arg0 data 81 used) v1-24)) - (set! - (-> arg0 data 81 total) - (+ (-> arg0 data 81 total) (logand -16 (+ v1-24 15))) - ) - ) + (set! (-> arg0 data 81 used) (+ (-> arg0 data 81 used) v1-24)) + (set! (-> arg0 data 81 total) (+ (-> arg0 data 81 total) (logand -16 (+ v1-24 15))))) (dotimes (s3-0 (-> this data-array length)) - (mem-usage (-> this data-array s3-0) arg0 arg1) - ) - (the-as load-dir #f) - ) + (mem-usage (-> this data-array s3-0) arg0 arg1)) + (the-as load-dir #f)) (defmethod load-to-heap-by-name ((this load-dir-art-group) (art-name string) (do-reload symbol) (heap kheap) (version int)) "Load the art with the given name to the heap and return the art. Won't load a thing if it's already loaded, unless you set do-reload. This is intended for debug only." - ;; see if we already have it. (let ((s5-0 (-> this string-array))) (dotimes (s3-0 (-> s5-0 length)) (when (string= art-name (-> s5-0 s3-0)) (when do-reload ;; we have it, reload it if requested - (let ((v1-4 (art-group-load-check art-name heap version))) - (if v1-4 - (set! (-> this art-group-array s3-0) v1-4) - ) - ) - ) - (return (-> this art-group-array s3-0)) - ) - ) - + (let ((v1-4 (art-group-load-check art-name heap version))) (if v1-4 (set! (-> this art-group-array s3-0) v1-4)))) + (return (-> this art-group-array s3-0)))) ;; nope, we don't have it,add it to the list. (let ((v0-2 (art-group-load-check art-name heap version))) (when v0-2 (set! (-> s5-0 (-> s5-0 length)) art-name) (set! (-> this art-group-array (-> s5-0 length)) v0-2) (+! (-> s5-0 length) 1) - (+! (-> this art-group-array length) 1) - ) - v0-2 - ) - ) - ) + (+! (-> this art-group-array length) 1)) + v0-2))) (defmethod set-loaded-art ((this load-dir-art-group) (arg0 art-group)) "Add some already loaded art to the load-dir." - (let ((s4-0 (-> this string-array))) - (dotimes (s3-0 (-> s4-0 length)) - (when (string= (-> arg0 name) (-> s4-0 s3-0)) - (set! (-> this art-group-array s3-0) arg0) - (return (-> this art-group-array s3-0)) - ) - ) - (set! (-> s4-0 (-> s4-0 length)) (-> arg0 name)) - (set! (-> this art-group-array (-> s4-0 length)) arg0) - (set! (-> s4-0 length) (+ (-> s4-0 length) 1)) - ) + (dotimes (s3-0 (-> s4-0 length)) + (when (string= (-> arg0 name) (-> s4-0 s3-0)) + (set! (-> this art-group-array s3-0) arg0) + (return (-> this art-group-array s3-0)))) + (set! (-> s4-0 (-> s4-0 length)) (-> arg0 name)) + (set! (-> this art-group-array (-> s4-0 length)) arg0) + (set! (-> s4-0 length) (+ (-> s4-0 length) 1))) (set! (-> this art-group-array length) (+ (-> this art-group-array length) 1)) - arg0 - ) + arg0) (defun drawable-load ((arg0 drawable) (arg1 kheap)) "Load a drawable file. Unused." - (cond - ((type-type? (-> arg0 type) string) - #|(with-sp (protect sp + ((type-type? (-> arg0 type) string) + #| +(with-sp (protect sp (if (< sp *stack-top*) (set! sp (&+ *kernel-sp* -1024)) - )|# - (let ((s5-1 (the-as drawable (loado (the-as string arg0) arg1)))) - (if (and s5-1 (type-type? (-> s5-1 type) drawable)) - (login s5-1) ) - ) - ;;)) - ) - ((type-type? (-> arg0 type) drawable) - (login arg0) - ) - ) - ) + |# + (let ((s5-1 (the-as drawable (loado (the-as string arg0) arg1)))) + (if (and s5-1 (type-type? (-> s5-1 type) drawable)) (login s5-1))) + ;;)) + ) + ((type-type? (-> arg0 type) drawable) (login arg0)))) (defun art-load ((arg0 string) (arg1 kheap)) "Load an art file. Unused." - - #|(with-sp (protect sp + #| +(with-sp (protect sp (if (< sp *stack-top*) (set! sp (&+ *kernel-sp* -1024)) - )|# - (let ((s5-0 (the-as art (loado arg0 arg1)))) - (if (type-type? (-> s5-0 type) art) - (login s5-0) - (the-as art #f) - ) ) - ;;)) + |# + (let ((s5-0 (the-as art (loado arg0 arg1)))) (if (type-type? (-> s5-0 type) art) (login s5-0) (the-as art #f))) + ;;)) ) (defun art-group-load-check ((arg0 string) (arg1 kheap) (arg2 int)) "Load and check an art-group file. this only runs if we're using debug memory." - (when *debug-segment* - #|(with-sp (protect sp + #| +(with-sp (protect sp (if (< sp *stack-top*) (set! sp (&+ *kernel-sp* -1024)) - )|# - (let ((s3-1 (the-as art-group (loado (make-file-name (file-kind art-group) arg0 arg2 #f) arg1)))) - (cond - ((not s3-1) - (format 0 "ERROR: art-group ~A is not a valid file.~%" arg0) - (the-as art-group #f) - ) - ((not (type-type? (-> s3-1 type) art-group)) - (format 0 "ERROR: art-group ~A is not a art-group.~%" arg0) - (the-as art-group #f) - ) - ((not (file-info-correct-version? (-> s3-1 info) (file-kind art-group) arg2)) - ;; ^ prints a detailed error if it fails. - ;;(format 0 "ERROR: art-group ~A is not the correct version.~%" arg0) - (the-as art-group #f) - ) - (else - (login s3-1) - ) - ) ) - ;;)) - ) - ) + |# + (let ((s3-1 (the-as art-group (loado (make-file-name (file-kind art-group) arg0 arg2 #f) arg1)))) + (cond + ((not s3-1) (format 0 "ERROR: art-group ~A is not a valid file.~%" arg0) (the-as art-group #f)) + ((not (type-type? (-> s3-1 type) art-group)) + (format 0 "ERROR: art-group ~A is not a art-group.~%" arg0) + (the-as art-group #f)) + ((not (file-info-correct-version? (-> s3-1 info) (file-kind art-group) arg2)) + ;; ^ prints a detailed error if it fails. + ;;(format 0 "ERROR: art-group ~A is not the correct version.~%" arg0) + (the-as art-group #f)) + (else (login s3-1)))) + ;;)) + )) (defmethod set-pending-file ((this external-art-buffer) (arg0 string) (arg1 int) (arg2 handle) (arg3 float)) "Request a new file to be loaded into this buffer." - (set! (-> this pending-load-file) arg0) (set! (-> this pending-load-file-part) arg1) (set! (-> this pending-load-file-owner) arg2) (set! (-> this pending-load-file-priority) arg3) - 0 - ) + 0) (defmethod unlock! ((this external-art-buffer)) "Unlock this buffer." - (declare (inline)) (set! (-> this locked?) #f) - #f - ) + #f) (defmethod inactive? ((this external-art-buffer)) "Is this buffer inactive?" - (declare (inline)) - (!= (-> this status) 'active) - ) + (!= (-> this status) 'active)) (defmethod file-status ((this external-art-buffer) (name string) (part int)) "Get the status of a file in the buffer. #f = file is not present." - - (when (and (name= (-> this pending-load-file) name) - (= (-> this pending-load-file-part) part) - ) + (when (and (name= (-> this pending-load-file) name) (= (-> this pending-load-file-part) part)) ;; the file is at least wanting to load (if (and (name= (-> this load-file) name) (= (-> this load-file-part) part)) (-> this status) ;; file is loaded or loading - 'pending ;; file has not started loading yet. - ) - ) - ) + 'pending ;; file has not started loading yet. + ))) (defmethod link-art! ((this art-group)) "Links the elements of this art-group. This will put a reference to this joint animation in the level art group. Level art groups have slots for temporarily loaded joint animations." - (when this - (countdown (s5-0 (-> this length)) - (let* ((art-elt (-> this data s5-0)) - (janim (if (and (nonzero? art-elt) (type-type? (-> art-elt type) art-joint-anim)) - (the-as art-joint-anim art-elt) - )) - (success #f) - ) + (countdown (s5-0 (-> this length)) + (let* ((art-elt (-> this data s5-0)) + (janim (if (and (nonzero? art-elt) (type-type? (-> art-elt type) art-joint-anim)) (the-as art-joint-anim art-elt))) + (success #f)) (when janim ;; a countdown with a label right at the start (let ((s3-1 3)) - (while (begin - (label cfg-22) - (nonzero? s3-1) - ) - ;; loop over levels, looking for the master art group for this joint animation. - (+! s3-1 -1) - (let ((janim-group (art-group-get-by-name (-> *level* level s3-1) (-> janim master-art-group-name)))) + (while (begin + (label cfg-22) + (nonzero? s3-1)) + ;; loop over levels, looking for the master art group for this joint animation. + (+! s3-1 -1) + (let ((janim-group (art-group-get-by-name (-> *level* level s3-1) (-> janim master-art-group-name)))) (when janim-group (cond ((and (< (-> janim master-art-group-index) (-> janim-group length)) ;; index is valid @@ -260,301 +190,210 @@ ) ;; link! (set! (-> janim-group data (-> janim master-art-group-index)) janim) - (set! success #t) - ) + (set! success #t)) (else - ;; if the specified index is no good, just try looking for somewhere else. + ;; if the specified index is no good, just try looking for somewhere else. (countdown (a0-14 (-> janim-group length)) (when (not (-> janim-group data a0-14)) ;; found an empty one! (set! (-> janim-group data a0-14) janim) (set! success #t) - (goto cfg-22) - ) - ) - ) - ) - ) - ) - ) - ) - (if (not success) - (format 0 "ERROR: ~A could not find a master slot to link for ~A.~%" (-> this name) janim) - ) - ) - ) - ) - ) - this - ) + (goto cfg-22))))))))) + (if (not success) (format 0 "ERROR: ~A could not find a master slot to link for ~A.~%" (-> this name) janim)))))) + this) (defmethod unlink-art! ((this art-group)) "Unlinks the elements of this art-group. This will undo the link-art! function." - (when this (countdown (s5-0 (-> this length)) (let* ((art-elt (-> this data s5-0)) - (janim (if (and (nonzero? art-elt) (type-type? (-> art-elt type) art-joint-anim)) - (the-as art-joint-anim art-elt) - )) - (success #f) - ) - (when janim - (let ((s2-0 3)) - (while (begin - (label cfg-16) - (nonzero? s2-0) - ) - (+! s2-0 -1) - (let ((janim-group (art-group-get-by-name (-> *level* level s2-0) (-> janim master-art-group-name)))) - (when janim-group - (countdown (a0-5 (-> janim-group length)) - (when (= janim (-> janim-group data a0-5)) - (set! (-> janim-group data a0-5) #f) - (set! success #t) - (goto cfg-16) - ) - ) - ) - ) - ) - ) - (if (not success) - (format 0 "ERROR: ~A could not find a master slot to unlink for ~A.~%" (-> this name) janim) - ) - ) - ) - ) - ) - 0 - ) + (janim (if (and (nonzero? art-elt) (type-type? (-> art-elt type) art-joint-anim)) (the-as art-joint-anim art-elt))) + (success #f)) + (when janim + (let ((s2-0 3)) + (while (begin + (label cfg-16) + (nonzero? s2-0)) + (+! s2-0 -1) + (let ((janim-group (art-group-get-by-name (-> *level* level s2-0) (-> janim master-art-group-name)))) + (when janim-group + (countdown (a0-5 (-> janim-group length)) + (when (= janim (-> janim-group data a0-5)) + (set! (-> janim-group data a0-5) #f) + (set! success #t) + (goto cfg-16))))))) + (if (not success) (format 0 "ERROR: ~A could not find a master slot to unlink for ~A.~%" (-> this name) janim)))))) + 0) (defmethod link-file ((this external-art-buffer) (ag art-group)) "Link the art-group and set it to this buffer's art group." - (when ag (link-art! ag) - (set! (-> this art-group) ag) - ) - ag - ) + (set! (-> this art-group) ag)) + ag) (defmethod unlink-file ((this external-art-buffer) (ag art-group)) "Unlink the art-group and remove this buffer's art group." - (when ag (unlink-art! ag) - (set! (-> this art-group) #f) - ) - 0 - ) + (set! (-> this art-group) #f)) + 0) (defmethod update ((this external-art-buffer)) "Update this buffer." - (when (or (not (name= (-> this pending-load-file) (-> this load-file))) - (!= (-> this pending-load-file-part) (-> this load-file-part)) - ) - ;; we're loading a different file, or a different part of a file - (unless (handle->process (-> this pending-load-file-owner)) - ;; nobody owns the loading file so we can discard it - (set! (-> this pending-load-file) #f) - (set! (-> this pending-load-file-part) -1) - (set! (-> this pending-load-file-owner) (the-as handle #f)) - (set! (-> this pending-load-file-priority) SPOOL_PRIORITY_LOWEST) - ) - (when (= (-> this status) 'initialize) - ;; we need to initialize the heap - (let ((v1-11 (-> this heap))) - ;; Scary: this is a hard coded address that points to the kernel memory. - ;; it turns out the kernel doesn't need this. So we can use it! - (set! (-> v1-11 base) (the-as pointer (+ #x84000 (* SPOOL_HEAP_SIZE (-> this index))))) - (set! (-> v1-11 current) (-> v1-11 base)) - (set! (-> v1-11 top-base) (&+ (-> v1-11 base) SPOOL_HEAP_SIZE)) - (set! (-> v1-11 top) (-> v1-11 top-base)) - ) - (set! (-> this status) 'inactive) - ;; heap is now allocated, but there is no data to use - ) - (cond - ((-> this load-file) - ;; the buffer is working on a file - (if (= (-> this status) 'loading) - ;; something else is already loading, cancel that because we want something else - (str-load-cancel) - ) - ;; now nothing is loaded! - (set! (-> this load-file) #f) - (set! (-> this load-file-part) -1) - (set! (-> this load-file-owner) (the-as handle #f)) - (set! (-> this load-file-priority) SPOOL_PRIORITY_LOWEST) - ;; on the next time through, we will set the actual load file. - ) - (else - ;; we have officially chosen to load this file - - (set! (-> this load-file) (-> this pending-load-file)) - (set! (-> this load-file-part) (-> this pending-load-file-part)) - (set! (-> this load-file-owner) (-> this pending-load-file-owner)) - (set! (-> this load-file-priority) (-> this pending-load-file-priority)) - ) - ) - ) - - - (label cfg-18) - (cond - ((-> this load-file) - ;; something is being worked on - (case (-> this status) - (('active 'reserved) - ;; file is loaded and usable (or reserved) - ) - (('error) - ;; oops an error happened. make this buffer unusable now. - (set! (-> this status) 'inactive) - (set! (-> this load-file) #f) - (set! (-> this load-file-part) -1) - (set! (-> this load-file-owner) (the-as handle #f)) - (set! (-> this load-file-priority) SPOOL_PRIORITY_LOWEST) + (!= (-> this pending-load-file-part) (-> this load-file-part))) + ;; we're loading a different file, or a different part of a file + (unless (handle->process (-> this pending-load-file-owner)) + ;; nobody owns the loading file so we can discard it (set! (-> this pending-load-file) #f) (set! (-> this pending-load-file-part) -1) (set! (-> this pending-load-file-owner) (the-as handle #f)) - (set! (-> this pending-load-file-priority) SPOOL_PRIORITY_LOWEST) - (set! (-> this art-group) #f) - ) - (('inactive) - ;; no usable data here, fill the buffer - (kheap-reset (-> this heap)) - (cond - ((string= (-> this load-file) "reserved") ;; we want to reserve this buffer for something (not loading an str file) - (cond - ((-> *art-control* reserve-buffer) - (format 0 "ERROR: trying double reserve ~A when ~A is reserved~%" this (-> *art-control* reserve-buffer)) - ) - (else - (set! (-> this status) 'reserved) - (set! (-> *art-control* reserve-buffer) this) ;; this buffer is reserved - ) - ) - ) - ((and (!= (-> *level* loading-level) (-> *level* level-default)) - (< (meters 20) (-> this load-file-priority)) - ) - ;; unused cond - ) - ((str-load (-> this load-file) (-> this load-file-part) (the pointer (align64 (-> this heap current))) #x3fc00) ;; try to start load - ;; load has started!! - (set! (-> this status) 'loading) - ) - ) - ) - (('loading) - ;; loading... - (case (str-load-status (&-> this len)) - (('error) - ;; something went wrong. oh well. - (set! (-> this status) 'error) - ) - (('busy) - ;; loading. we have nothing to do. - ) - (else - ;; done!! - ;; not sure it is a good idea to assume that this is a success... - (set! (-> this buf) (the pointer (align64 (-> this heap current)))) - (set! (-> this status) 'loaded) - (goto cfg-18) ;; go back and check status again! - ) - ) + (set! (-> this pending-load-file-priority) SPOOL_PRIORITY_LOWEST)) + (when (= (-> this status) 'initialize) + ;; we need to initialize the heap + (let ((v1-11 (-> this heap))) + ;; Scary: this is a hard coded address that points to the kernel memory. + ;; it turns out the kernel doesn't need this. So we can use it! + (set! (-> v1-11 base) (the-as pointer (+ #x84000 (* SPOOL_HEAP_SIZE (-> this index))))) + (set! (-> v1-11 current) (-> v1-11 base)) + (set! (-> v1-11 top-base) (&+ (-> v1-11 base) SPOOL_HEAP_SIZE)) + (set! (-> v1-11 top) (-> v1-11 top-base))) + (set! (-> this status) 'inactive) + ;; heap is now allocated, but there is no data to use ) - (('loaded) - ;; file is loaded. link it and see if we're good - (let ((a0-37 (-> this buf))) - (set! (-> this art-group) (the-as art-group (link (the-as pointer a0-37) (-> this load-file data) (-> this len) (-> this heap) 0))) + (cond + ((-> this load-file) + ;; the buffer is working on a file + (if (= (-> this status) 'loading) + ;; something else is already loading, cancel that because we want something else + (str-load-cancel)) + ;; now nothing is loaded! + (set! (-> this load-file) #f) + (set! (-> this load-file-part) -1) + (set! (-> this load-file-owner) (the-as handle #f)) + (set! (-> this load-file-priority) SPOOL_PRIORITY_LOWEST) + ;; on the next time through, we will set the actual load file. ) - (let ((s4-0 (-> this art-group)) - (s3-0 (-> this load-file)) - ) - (cond - ((not s4-0) - (format 0 "ERROR: art-group ~A part ~D is not a valid file.~%" s3-0 (-> this load-file-part)) - (set! (-> this status) 'error) - ) - ((not (type-type? (-> s4-0 type) art-group)) - (format 0 "ERROR: art-group ~A part ~D is not a art-group.~%" s3-0 (-> this load-file-part)) - (set! (-> this status) 'error) - ) - ((not (file-info-correct-version? (-> s4-0 info) (file-kind art-group) 0)) - ;;(format 0 "ERROR: art-group ~A part ~D is the wrong version.~%" s3-0 (-> this load-file-part)) - (set! (-> this status) 'error) - ) - (else - (login s4-0) - (set! (-> this status) 'locked) ;; make file ready to be used - ) + (else + ;; we have officially chosen to load this file + (set! (-> this load-file) (-> this pending-load-file)) + (set! (-> this load-file-part) (-> this pending-load-file-part)) + (set! (-> this load-file-owner) (-> this pending-load-file-owner)) + (set! (-> this load-file-priority) (-> this pending-load-file-priority))))) + (label cfg-18) + (cond + ((-> this load-file) + ;; something is being worked on + (case (-> this status) + (('active 'reserved) + ;; file is loaded and usable (or reserved) ) - ) - ) - (('locked) - ;; this buffer is locked and needs to be unlocked before it can be used. - ;; only one buffer can be active at a time. The other buffer is locked to prevent it from activating. - (when (and (not (-> this locked?)) (handle->process (-> this load-file-owner))) - ;; we want to be used, unlock this buffer and lock the other just in case. - (link-file this (-> this art-group)) - (set! (-> this other locked?) #t) ;; prevent it from becoming active - (set! (-> this status) 'active) - (goto cfg-18) - ) - ) - ) - ) - (else - ;; we want to get rid of the file! - (case (-> this status) - (('initialize) - ;; this was done earlier - ) - (('reserved) - ;; this buffer is reserved - (cond - ((= (-> *art-control* reserve-buffer) this) ;; yep it's this one! - (set! (-> *art-control* reserve-buffer) #f) + (('error) + ;; oops an error happened. make this buffer unusable now. (set! (-> this status) 'inactive) + (set! (-> this load-file) #f) + (set! (-> this load-file-part) -1) + (set! (-> this load-file-owner) (the-as handle #f)) + (set! (-> this load-file-priority) SPOOL_PRIORITY_LOWEST) + (set! (-> this pending-load-file) #f) + (set! (-> this pending-load-file-part) -1) + (set! (-> this pending-load-file-owner) (the-as handle #f)) + (set! (-> this pending-load-file-priority) SPOOL_PRIORITY_LOWEST) + (set! (-> this art-group) #f)) + (('inactive) + ;; no usable data here, fill the buffer + (kheap-reset (-> this heap)) + (cond + ((string= (-> this load-file) "reserved") ;; we want to reserve this buffer for something (not loading an str file) + (cond + ((-> *art-control* reserve-buffer) + (format 0 "ERROR: trying double reserve ~A when ~A is reserved~%" this (-> *art-control* reserve-buffer))) + (else + (set! (-> this status) 'reserved) + (set! (-> *art-control* reserve-buffer) this) ;; this buffer is reserved + ))) + ((and (!= (-> *level* loading-level) (-> *level* level-default)) (< (meters 20) (-> this load-file-priority))) + ;; unused cond + ) + ((str-load (-> this load-file) (-> this load-file-part) (the pointer (align64 (-> this heap current))) #x3fc00) ;; try to start load + ;; load has started!! + (set! (-> this status) 'loading)))) + (('loading) + ;; loading... + (case (str-load-status (&-> this len)) + (('error) + ;; something went wrong. oh well. + (set! (-> this status) 'error)) + (('busy) + ;; loading. we have nothing to do. + ) + (else + ;; done!! + ;; not sure it is a good idea to assume that this is a success... + (set! (-> this buf) (the pointer (align64 (-> this heap current)))) + (set! (-> this status) 'loaded) + (goto cfg-18) ;; go back and check status again! + ))) + (('loaded) + ;; file is loaded. link it and see if we're good + (let ((a0-37 (-> this buf))) + (set! (-> this art-group) + (the-as art-group (link (the-as pointer a0-37) (-> this load-file data) (-> this len) (-> this heap) 0)))) + (let ((s4-0 (-> this art-group)) + (s3-0 (-> this load-file))) + (cond + ((not s4-0) + (format 0 "ERROR: art-group ~A part ~D is not a valid file.~%" s3-0 (-> this load-file-part)) + (set! (-> this status) 'error)) + ((not (type-type? (-> s4-0 type) art-group)) + (format 0 "ERROR: art-group ~A part ~D is not a art-group.~%" s3-0 (-> this load-file-part)) + (set! (-> this status) 'error)) + ((not (file-info-correct-version? (-> s4-0 info) (file-kind art-group) 0)) + ;;(format 0 "ERROR: art-group ~A part ~D is the wrong version.~%" s3-0 (-> this load-file-part)) + (set! (-> this status) 'error)) + (else + (login s4-0) + (set! (-> this status) 'locked) ;; make file ready to be used + )))) + (('locked) + ;; this buffer is locked and needs to be unlocked before it can be used. + ;; only one buffer can be active at a time. The other buffer is locked to prevent it from activating. + (when (and (not (-> this locked?)) (handle->process (-> this load-file-owner))) + ;; we want to be used, unlock this buffer and lock the other just in case. + (link-file this (-> this art-group)) + (set! (-> this other locked?) #t) ;; prevent it from becoming active + (set! (-> this status) 'active) + (goto cfg-18))))) + (else + ;; we want to get rid of the file! + (case (-> this status) + (('initialize) + ;; this was done earlier ) + (('reserved) + ;; this buffer is reserved + (cond + ((= (-> *art-control* reserve-buffer) this) ;; yep it's this one! + (set! (-> *art-control* reserve-buffer) #f) + (set! (-> this status) 'inactive)) + (else (format 0 "ERROR: trying tro free ~A when ~A is reserved~%" this (-> *art-control* reserve-buffer))))) + (('active) + ;; buffer is in use. not anymore! + (unlink-file this (-> this art-group)) + (let ((v1-70 (-> this heap))) (set! (-> v1-70 current) (-> v1-70 base))) + (set! (-> this art-group) #f) + (set! (-> this status) 'inactive) + ;; if the other is locked due to us, unlock it, then update it so it activates. + (when (-> this other locked?) + (unlock! (-> this other)) + (update (-> this other)))) (else - (format 0 "ERROR: trying tro free ~A when ~A is reserved~%" this (-> *art-control* reserve-buffer)) - ) - ) - ) - (('active) - ;; buffer is in use. not anymore! - (unlink-file this (-> this art-group)) - (let ((v1-70 (-> this heap))) - (set! (-> v1-70 current) (-> v1-70 base)) - ) - (set! (-> this art-group) #f) - (set! (-> this status) 'inactive) - ;; if the other is locked due to us, unlock it, then update it so it activates. - (when (-> this other locked?) - (unlock! (-> this other)) - (update (-> this other)) - ) - ) - (else - ;; some other scenario, just get rid of the whole thing. - (let ((v1-79 (-> this heap))) - (set! (-> v1-79 current) (-> v1-79 base)) - ) - (set! (-> this art-group) #f) - (set! (-> this status) 'inactive) - ) - ) - ) - ) - 0 - ) - + ;; some other scenario, just get rid of the whole thing. + (let ((v1-79 (-> this heap))) (set! (-> v1-79 current) (-> v1-79 base))) + (set! (-> this art-group) #f) + (set! (-> this status) 'inactive))))) + 0) ;; start loading a spooled anim if we think one is about to be used, e.g. when approaching a fuel cell or npc ;; (some processes may want to wait for the stream to be preloaded, which won't happen with this disabled) @@ -562,36 +401,22 @@ (defmethod file-status ((this external-art-control) (name string) (part int)) "Get the status of a file in this art control. #f = file not found" - (dotimes (i 2) - (awhen (file-status (-> this buffer i) name part) - (return it) - ) - ) - #f - ) + (awhen (file-status (-> this buffer i) name part) (return it))) + #f) (defmethod update ((this external-art-control) (debug-print symbol)) "Update this external-art-control. This validates the spool buffers, sorts the spools and queues the highest priority one, and does some other things. If debug-print, also prints some text to the display console" - ;; if somebody wants a reserve buffer, they will set this to 1. (if (nonzero? (-> this reserve-buffer-count)) - (spool-push this "reserved" 0 *dproc* (if (-> this reserve-buffer) - -110.0 - -0.5 - ))) - + (spool-push this "reserved" 0 *dproc* (if (-> this reserve-buffer) -110.0 -0.5))) ;; frame-lock will get set to #t if something is assigned to this buffer in this update. (dotimes (v1-5 2) - (set! (-> this buffer v1-5 frame-lock) #f) - ) - + (set! (-> this buffer v1-5 frame-lock) #f)) ;; buffers assigned from this call to update (dotimes (v1-8 3) - (set! (-> this rec v1-8 buf2) #f) - ) - + (set! (-> this rec v1-8 buf2) #f)) ;; update existing buffers from their recs (dotimes (s4-0 2) (let ((s3-0 (-> this rec s4-0))) @@ -609,14 +434,8 @@ (set! (-> this buffer s2-0 load-file-owner) (-> s3-0 owner)) (set! (-> this buffer s2-0 pending-load-file-priority) (-> s3-0 priority)) (set! (-> this buffer s2-0 load-file-priority) (-> s3-0 priority)) - (goto cfg-24) - ) - ) - ) - ) - (label cfg-24) - ) - + (goto cfg-24))))) + (label cfg-24)) ;; preload recs ;; iterate over recs (dotimes (s4-1 2) @@ -625,9 +444,8 @@ (when (and (-> s3-1 name) (not (-> s3-1 buf2))) ;; skip if we aren't preloading, or have a positive priority. (if (and (not *preload-spool-anims*) (>= (-> s3-1 priority) 0.0)) - ;; not in use, move on - (goto cfg-46) - ) + ;; not in use, move on + (goto cfg-46)) ;; search for a buffer for preloading (dotimes (s2-1 2) ;; can't steal one that's already assigned @@ -636,108 +454,77 @@ (set! (-> this buffer s2-1 frame-lock) #t) (set-pending-file (-> this buffer s2-1) (-> s3-1 name) (-> s3-1 parts) (-> s3-1 owner) (-> s3-1 priority)) (set! (-> s3-1 index) (the-as int (-> this buffer s2-1))) - (goto cfg-46) - ) - ) - ) - ) - (label cfg-46) - ) - + (goto cfg-46))))) + (label cfg-46)) ;; this part is a bit confusing, but I think it basically kicks out the lowest priority thing. (when (not (-> this reserve-buffer)) (let ((s4-2 (-> this rec 0 buf2))) ;; top priority buffer (if (and s4-2 (-> s4-2 locked?) (not (string= (-> s4-2 pending-load-file) "reserved")) - (not (string= (-> s4-2 other pending-load-file) "reserved")) - ) - (set-pending-file (-> s4-2 other) (the-as string #f) -1 (the-as handle #f) SPOOL_PRIORITY_LOWEST) - ) - ) - ) - + (not (string= (-> s4-2 other pending-load-file) "reserved"))) + (set-pending-file (-> s4-2 other) (the-as string #f) -1 (the-as handle #f) SPOOL_PRIORITY_LOWEST)))) ;; update the buffers (dotimes (s4-3 2) - (update (-> this buffer s4-3)) - ) - + (update (-> this buffer s4-3))) ;; sort spool anims. (let ((s4-4 (the-as spool-anim #f))) (countdown (s3-2 3) (if (and (-> this rec s3-2 name) (not (name= (-> this rec s3-2 name) (-> this active-stream)))) - (set! s4-4 (the-as spool-anim (-> this rec))) - ) - ) + (set! s4-4 (the-as spool-anim (-> this rec))))) (if (and (-> this preload-stream name) (or (not s4-4) (< (-> this preload-stream priority) (-> s4-4 priority)))) - (set! s4-4 (-> this preload-stream)) - ) + (set! s4-4 (-> this preload-stream))) (cond - (s4-4 - (mem-copy! (&-> (-> this last-preload-stream) type) (&-> s4-4 type) 44) - (str-play-queue (-> s4-4 name)) - ) - (else - (set! (-> this last-preload-stream name) #f) - (set! (-> this last-preload-stream owner) (the-as handle #f)) - ) - ) - ) - + (s4-4 (mem-copy! (&-> (-> this last-preload-stream) type) (&-> s4-4 type) 44) (str-play-queue (-> s4-4 name))) + (else (set! (-> this last-preload-stream name) #f) (set! (-> this last-preload-stream owner) (the-as handle #f))))) (when (and debug-print *display-art-control*) (dotimes (s5-1 3) - (format *stdcon* "rec ~d ~S ~D ~f ~A~%" s5-1 (-> this rec s5-1 name) (-> this rec s5-1 parts) (-> this rec s5-1 priority) (handle->name (-> this rec s5-1 owner))) - ) + (format *stdcon* + "rec ~d ~S ~D ~f ~A~%" + s5-1 + (-> this rec s5-1 name) + (-> this rec s5-1 parts) + (-> this rec s5-1 priority) + (handle->name (-> this rec s5-1 owner)))) (dotimes (s5-2 2) - (format *stdcon* "buf ~d ~C ~S ~D ~A ~A~%" s5-2 (if (-> this buffer s5-2 locked?) #\l #\\s) (-> this buffer s5-2 pending-load-file) (-> this buffer s5-2 pending-load-file-part) (-> this buffer s5-2 status) (handle->name (-> this buffer s5-2 pending-load-file-owner))) - ) + (format *stdcon* + "buf ~d ~C ~S ~D ~A ~A~%" + s5-2 + (if (-> this buffer s5-2 locked?) #\l #\\s) + (-> this buffer s5-2 pending-load-file) + (-> this buffer s5-2 pending-load-file-part) + (-> this buffer s5-2 status) + (handle->name (-> this buffer s5-2 pending-load-file-owner)))) (format *stdcon* " a: ~S~%" (-> this active-stream)) (format *stdcon* " p: ~S ~A~%" (-> this preload-stream name) (handle->name (-> this preload-stream owner))) - (format *stdcon* " q: ~S ~A~%" (-> this last-preload-stream name) (handle->name (-> this last-preload-stream owner))) - ) - 0 - ) + (format *stdcon* " q: ~S ~A~%" (-> this last-preload-stream name) (handle->name (-> this last-preload-stream owner)))) + 0) (defmethod none-reserved? ((this external-art-control)) "are there any reserved buffers?" (declare (inline)) - (zero? (-> this reserve-buffer-count)) - ) + (zero? (-> this reserve-buffer-count))) (defmethod reserve-alloc ((this external-art-control)) "Reserve a buffer!" - (set! (-> this reserve-buffer-count) 1) - (if (-> this reserve-buffer) - (-> this reserve-buffer heap) - ) - ) + (if (-> this reserve-buffer) (-> this reserve-buffer heap))) (defmethod reserve-free ((this external-art-control) (arg0 kheap)) "Free the reserved buffer!" - (cond ((none-reserved? this) - (format 0 "ERROR: illegal attempt to free a buffer #x~X which had not been reserved (none reserved).~%" arg0) - ) - ((not (-> this reserve-buffer)) - (set! (-> this reserve-buffer-count) 0) - ) + (format 0 "ERROR: illegal attempt to free a buffer #x~X which had not been reserved (none reserved).~%" arg0)) + ((not (-> this reserve-buffer)) (set! (-> this reserve-buffer-count) 0)) ((= (-> this reserve-buffer heap) arg0) (set-pending-file (-> this reserve-buffer) (the-as string #f) -1 (the-as handle #f) SPOOL_PRIORITY_LOWEST) (update (-> this reserve-buffer)) - (set! (-> this reserve-buffer-count) 0) - ) - (else - (format 0 "ERROR: illegal attempt to free a buffer #x~X which had not been reserved (buffer unknown).~%" arg0) - ) - ) - 0 - ) + (set! (-> this reserve-buffer-count) 0)) + (else (format 0 "ERROR: illegal attempt to free a buffer #x~X which had not been reserved (buffer unknown).~%" arg0))) + 0) (defmethod clear-rec ((this external-art-control)) "Clears the recent spool anims from the art control." - (cond ((!= *master-mode* 'game) (dotimes (s5-0 3) @@ -745,34 +532,23 @@ (case s5-0 ((0) (mem-copy! (&-> this rec 0 type) (&-> this rec 1 type) (size-of spool-anim)) - (mem-copy! (&-> this rec 1 type) (&-> this rec 2 type) (size-of spool-anim)) - ) - ((1) - (mem-copy! (&-> this rec 1 type) (&-> this rec 2 type) (size-of spool-anim)) - ) - ) + (mem-copy! (&-> this rec 1 type) (&-> this rec 2 type) (size-of spool-anim))) + ((1) (mem-copy! (&-> this rec 1 type) (&-> this rec 2 type) (size-of spool-anim)))) (set! (-> this rec 2 type) spool-anim) (set! (-> this rec 2 name) #f) (set! (-> this rec 2 priority) SPOOL_PRIORITY_LOWEST) - (set! (-> this rec 2 owner) (the-as handle #f)) - ) - ) - ) + (set! (-> this rec 2 owner) (the-as handle #f))))) (else - (dotimes (v1-19 3) - (set! (-> this rec v1-19 type) spool-anim) - (set! (-> this rec v1-19 name) #f) - (set! (-> this rec v1-19 priority) SPOOL_PRIORITY_LOWEST) - (set! (-> this rec v1-19 owner) (the-as handle #f)) - ) - (set! (-> this preload-stream type) spool-anim) - (set! (-> this preload-stream name) #f) - (set! (-> this preload-stream priority) SPOOL_PRIORITY_LOWEST) - (set! (-> this preload-stream owner) (the-as handle #f)) - ) - ) - 0 - ) + (dotimes (v1-19 3) + (set! (-> this rec v1-19 type) spool-anim) + (set! (-> this rec v1-19 name) #f) + (set! (-> this rec v1-19 priority) SPOOL_PRIORITY_LOWEST) + (set! (-> this rec v1-19 owner) (the-as handle #f))) + (set! (-> this preload-stream type) spool-anim) + (set! (-> this preload-stream name) #f) + (set! (-> this preload-stream priority) SPOOL_PRIORITY_LOWEST) + (set! (-> this preload-stream owner) (the-as handle #f)))) + 0) (defmacro spool-calc-priority (priority proc) "Check the priority of a spool anim and recalculate it if needed. It will be the same as distance between target and the requesting process. @@ -780,101 +556,82 @@ proc = a process to recalc from" `(when (and (= ,priority SPOOL_PRIORITY_RECALC) ,proc) (let ((target-trans (target-pos 0))) - (set! ,priority (vector-vector-distance target-trans (-> (the-as process-drawable ,proc) root trans))) - ) - ) - ) + (set! ,priority (vector-vector-distance target-trans (-> (the-as process-drawable ,proc) root trans)))))) (defmethod try-preload-stream ((this external-art-control) (arg0 string) (arg1 int) (arg2 process) (arg3 float)) "Set a new stream to be preloaded, if appropriate." - (spool-calc-priority arg3 arg2) - - (unless (and (-> this preload-stream name) - (>= arg3 (-> this preload-stream priority)) - ) - (set! (-> this preload-stream name) arg0) - (set! (-> this preload-stream parts) arg1) - (set! (-> this preload-stream priority) arg3) - (set! (-> this preload-stream owner) (process->handle arg2)) - ) - 0 - ) + (unless (and (-> this preload-stream name) (>= arg3 (-> this preload-stream priority))) + (set! (-> this preload-stream name) arg0) + (set! (-> this preload-stream parts) arg1) + (set! (-> this preload-stream priority) arg3) + (set! (-> this preload-stream owner) (process->handle arg2))) + 0) (defmethod spool-push ((this external-art-control) (name string) (part int) (proc process) (priority float)) "Push a spool-anim to the spool array. There are only space for three, and only the three highest priority spool anims will be kept. (lowest priority = top)" - (spool-calc-priority priority proc) - ;; if this spool-anim already exists, pop it from the rec list (cond - ((and (= part (-> this rec 0 parts)) (name= name (-> this rec 0 name))) - (if (>= priority (-> this rec 0 priority)) - (return (the-as int #f)) - ) - ;; first spool. copy 1st <- 2nd and 2nd <- 3rd, 3rd will be wiped - (mem-copy! (&-> this rec 0 type) (&-> this rec 1 type) (size-of spool-anim)) - (mem-copy! (&-> this rec 1 type) (&-> this rec 2 type) (size-of spool-anim)) - (set! (-> this rec 2 name) #f) - (set! (-> this rec 2 owner) (the-as handle #f)) - ) - ((and (= part (-> this rec 1 parts)) (name= name (-> this rec 1 name))) - (if (>= priority (-> this rec 1 priority)) - (return (the-as int #f)) - ) - ;; second spool. copy 2nd <- 3rd, 3rd will be wiped - (mem-copy! (&-> this rec 1 type) (&-> this rec 2 type) (size-of spool-anim)) - (set! (-> this rec 2 name) #f) - (set! (-> this rec 2 owner) (the-as handle #f)) - ) - ((and (= part (-> this rec 2 parts)) (name= name (-> this rec 2 name))) - (if (>= priority (-> this rec 2 priority)) - (return (the-as int #f)) - ) - ;; third spool. 3rd will be wiped - (set! (-> this rec 2 name) #f) - (set! (-> this rec 2 owner) (the-as handle #f)) - ) - ) - + ((and (= part (-> this rec 0 parts)) (name= name (-> this rec 0 name))) + (if (>= priority (-> this rec 0 priority)) (return (the-as int #f))) + ;; first spool. copy 1st <- 2nd and 2nd <- 3rd, 3rd will be wiped + (mem-copy! (&-> this rec 0 type) (&-> this rec 1 type) (size-of spool-anim)) + (mem-copy! (&-> this rec 1 type) (&-> this rec 2 type) (size-of spool-anim)) + (set! (-> this rec 2 name) #f) + (set! (-> this rec 2 owner) (the-as handle #f))) + ((and (= part (-> this rec 1 parts)) (name= name (-> this rec 1 name))) + (if (>= priority (-> this rec 1 priority)) (return (the-as int #f))) + ;; second spool. copy 2nd <- 3rd, 3rd will be wiped + (mem-copy! (&-> this rec 1 type) (&-> this rec 2 type) (size-of spool-anim)) + (set! (-> this rec 2 name) #f) + (set! (-> this rec 2 owner) (the-as handle #f))) + ((and (= part (-> this rec 2 parts)) (name= name (-> this rec 2 name))) + (if (>= priority (-> this rec 2 priority)) (return (the-as int #f))) + ;; third spool. 3rd will be wiped + (set! (-> this rec 2 name) #f) + (set! (-> this rec 2 owner) (the-as handle #f)))) ;; if it's top 3 priority, push this spool-anim to the rec list (cond - ((< priority (-> this rec 0 priority)) - ;; 1st place! - (mem-copy! (&-> this rec 2 type) (&-> this rec 1 type) (size-of spool-anim)) - (mem-copy! (&-> this rec 1 type) (&-> this rec 0 type) (size-of spool-anim)) - (set! (-> this rec 0 name) name) - (set! (-> this rec 0 parts) part) - (set! (-> this rec 0 priority) priority) - (set! (-> this rec 0 owner) (process->handle proc)) - ) - ((< priority (-> this rec 1 priority)) - ;; 2nd place. - (mem-copy! (&-> this rec 2 type) (&-> this rec 1 type) (size-of spool-anim)) - (set! (-> this rec 1 name) name) - (set! (-> this rec 1 parts) part) - (set! (-> this rec 1 priority) priority) - (set! (-> this rec 1 owner) (process->handle proc)) - ) - ((< priority (-> this rec 2 priority)) - ;; 3rd place... - (set! (-> this rec 2 name) name) - (set! (-> this rec 2 parts) part) - (set! (-> this rec 2 priority) priority) - (set! (-> this rec 2 owner) (process->handle proc)) - ) - ) - 0 - ) + ((< priority (-> this rec 0 priority)) + ;; 1st place! + (mem-copy! (&-> this rec 2 type) (&-> this rec 1 type) (size-of spool-anim)) + (mem-copy! (&-> this rec 1 type) (&-> this rec 0 type) (size-of spool-anim)) + (set! (-> this rec 0 name) name) + (set! (-> this rec 0 parts) part) + (set! (-> this rec 0 priority) priority) + (set! (-> this rec 0 owner) (process->handle proc))) + ((< priority (-> this rec 1 priority)) + ;; 2nd place. + (mem-copy! (&-> this rec 2 type) (&-> this rec 1 type) (size-of spool-anim)) + (set! (-> this rec 1 name) name) + (set! (-> this rec 1 parts) part) + (set! (-> this rec 1 priority) priority) + (set! (-> this rec 1 owner) (process->handle proc))) + ((< priority (-> this rec 2 priority)) + ;; 3rd place... + (set! (-> this rec 2 name) name) + (set! (-> this rec 2 parts) part) + (set! (-> this rec 2 priority) priority) + (set! (-> this rec 2 owner) (process->handle proc)))) + 0) (defun-extern level-hint-surpress! none) ;; ? TODO + (define-extern ja-channel-push! (function int time-frame int :behavior process-drawable)) + (define-extern ja-channel-set! (function int int :behavior process-drawable)) -(define-extern joint-control-channel-group-eval! (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int)) -(define-extern joint-control-channel-group! (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int)) + +(define-extern joint-control-channel-group-eval! + (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int)) + +(define-extern joint-control-channel-group! + (function joint-control-channel art-joint-anim (function joint-control-channel float float float) int)) + (define-extern ja-aframe-num (function int float :behavior process-drawable)) (define-extern ja-abort-spooled-anim (function spool-anim art-joint-anim int int :behavior process-drawable)) + (defbehavior ja-play-spooled-anim process-drawable ((arg0 spool-anim) (arg1 art-joint-anim) (arg2 art-joint-anim) (arg3 (function process-drawable symbol))) (local-vars (v0-39 int) @@ -886,8 +643,7 @@ (sv-48 int) (sv-56 int) (spool-sound sound-id) - (sv-72 int) - ) + (sv-72 int)) (set! spool-part 0) (set! sv-24 -17.0) (set! old-skel-status (-> self skel status)) @@ -904,33 +660,16 @@ (apply-settings *setting-control*) (when (or (handle->process (-> *art-control* spool-lock)) (!= *master-mode* 'game)) (cond - (arg1 - (when (!= (ja-group) arg1) - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! arg1 :num! min) - ) - ) - (else - (ja-channel-set! 0) - ) - ) + (arg1 (when (!= (ja-group) arg1) (ja-channel-push! 1 (seconds 0.05)) (ja :group! arg1 :num! min))) + (else (ja-channel-set! 0))) (while (or (handle->process (-> *art-control* spool-lock)) (!= *master-mode* 'game)) (format #t "WARNING: ---------------------> loader stall on lock~%") - (if (arg3 self) - (goto cfg-88) - ) + (if (arg3 self) (goto cfg-88)) (spool-push *art-control* (-> arg0 name) spool-part self -9.0) (suspend) - (if arg1 - (ja :num! (loop!)) - ) - ) - ) + (if arg1 (ja :num! (loop!))))) (let ((v1-46 (process->ppointer self))) - (set! (-> *art-control* spool-lock) - (new 'static 'handle :process v1-46 :pid (-> (the-as process (-> v1-46 0)) pid)) - ) - ) + (set! (-> *art-control* spool-lock) (new 'static 'handle :process v1-46 :pid (-> (the-as process (-> v1-46 0)) pid)))) (set! sv-48 (the-as int (-> *display* base-frame-counter))) (while (< spool-part (-> arg0 parts)) (spool-push *art-control* (-> arg0 name) spool-part self -20.0) @@ -938,94 +677,60 @@ (spool-push *art-control* (-> arg0 name) spool-part self -20.0) (when (!= (file-status *art-control* (-> arg0 name) spool-part) 'active) (cond - (arg1 - (when (!= (ja-group) arg1) - (ja-channel-set! 1) - (ja :group! arg1 :num! min) - ) - ) - (else - (ja-channel-set! 0) - ) - ) + (arg1 (when (!= (ja-group) arg1) (ja-channel-set! 1) (ja :group! arg1 :num! min))) + (else (ja-channel-set! 0))) (while (!= (file-status *art-control* (-> arg0 name) spool-part) 'active) - (if (arg3 self) - (goto cfg-88) - ) + (if (arg3 self) (goto cfg-88)) (spool-push *art-control* (-> arg0 name) spool-part self -20.0) (format #t "WARNING: ---------------------> loader stall on art ~S ~D~%" (-> arg0 name) spool-part) (suspend) - (if arg1 - (ja :num! (loop!)) - ) - ) - ) + (if arg1 (ja :num! (loop!))))) (spool-push *art-control* (-> arg0 name) spool-part self -20.0) (let ((s2-4 (the-as art-joint-anim (lookup-art (-> self draw art-group) (-> arg0 name) art-joint-anim)))) (cond (s2-4 - (ja-channel-set! 1) - (ja-no-eval :group! s2-4 :num! (seek!) :frame-num 0.0) - (when (zero? spool-part) - (str-play-async (-> arg0 name) spool-sound) - (set! (-> *art-control* active-stream) (-> arg0 name)) - ) - (let* ((f30-0 (* 0.05859375 (-> s2-4 speed))) - (f28-0 (+ sv-24 (/ (the float (+ (-> s2-4 data 0 length) -1)) f30-0))) - ) - (set! sv-72 (current-str-pos spool-sound)) - (set! sv-40 (the-as int (-> *display* base-frame-counter))) - (until (>= (the float v0-39) f28-0) - (if (= (-> self skel root-channel 0) (-> self skel channel)) - (logior! (-> self skel status) (janim-status spool)) - ) - (if (or (arg3 self) - (and (<= sv-72 0) (>= (- (-> *display* base-frame-counter) sv-40) (seconds 4))) - (and (< 300 sv-56) (<= sv-72 0)) - ) - (goto cfg-88) - ) - (spool-push *art-control* (-> arg0 name) spool-part self -20.0) - (if (< (+ spool-part 1) (-> arg0 parts)) - (spool-push *art-control* (-> arg0 name) (+ spool-part 1) self -10.0) - (logclear! (-> self skel status) (janim-status done)) - ) - (execute-commands-up-to *load-state* (ja-aframe-num 0)) - (cond - ((and (< sv-32 sv-72) (= (current-str-id) spool-sound)) - (set! sv-56 (+ sv-56 (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)))) - (set! sv-40 (the-as int (-> *display* base-frame-counter))) - ) - (else - 0 - ) - ) - (set! sv-32 sv-72) - (set! sv-48 (the-as int (-> *display* base-frame-counter))) - (suspend) - (let ((f0-14 (* (- (the float (current-str-pos spool-sound)) sv-24) f30-0))) - (ja-no-eval :num! (seek!) :frame-num f0-14) - ) - (set! v0-39 (current-str-pos spool-sound)) - (set! sv-72 v0-39) - ) - (set! sv-24 f28-0) - ) - (logclear! (-> self skel status) (janim-status spool)) - ) + (ja-channel-set! 1) + (ja-no-eval :group! s2-4 :num! (seek!) :frame-num 0.0) + (when (zero? spool-part) + (str-play-async (-> arg0 name) spool-sound) + (set! (-> *art-control* active-stream) (-> arg0 name))) + (let* ((f30-0 (* 0.05859375 (-> s2-4 speed))) + (f28-0 (+ sv-24 (/ (the float (+ (-> s2-4 data 0 length) -1)) f30-0)))) + (set! sv-72 (current-str-pos spool-sound)) + (set! sv-40 (the-as int (-> *display* base-frame-counter))) + (until (>= (the float v0-39) f28-0) + (if (= (-> self skel root-channel 0) (-> self skel channel)) (logior! (-> self skel status) (janim-status spool))) + (if (or (arg3 self) + (and (<= sv-72 0) (>= (- (-> *display* base-frame-counter) sv-40) (seconds 4))) + (and (< 300 sv-56) (<= sv-72 0))) + (goto cfg-88)) + (spool-push *art-control* (-> arg0 name) spool-part self -20.0) + (if (< (+ spool-part 1) (-> arg0 parts)) + (spool-push *art-control* (-> arg0 name) (+ spool-part 1) self -10.0) + (logclear! (-> self skel status) (janim-status done))) + (execute-commands-up-to *load-state* (ja-aframe-num 0)) + (cond + ((and (< sv-32 sv-72) (= (current-str-id) spool-sound)) + (set! sv-56 (+ sv-56 (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)))) + (set! sv-40 (the-as int (-> *display* base-frame-counter)))) + (else 0)) + (set! sv-32 sv-72) + (set! sv-48 (the-as int (-> *display* base-frame-counter))) + (suspend) + (let ((f0-14 (* (- (the float (current-str-pos spool-sound)) sv-24) f30-0))) + (ja-no-eval :num! (seek!) :frame-num f0-14)) + (set! v0-39 (current-str-pos spool-sound)) + (set! sv-72 v0-39)) + (set! sv-24 f28-0)) + (logclear! (-> self skel status) (janim-status spool))) (else - (format 0 "ERROR: ~A in spool anim loop for ~A ~D, but not loaded.~" self (-> arg0 name) spool-part) - (goto cfg-88) - ) - ) - ) - (set! spool-part (+ spool-part 1)) - ) + (format 0 "ERROR: ~A in spool anim loop for ~A ~D, but not loaded.~" self (-> arg0 name) spool-part) + (goto cfg-88)))) + (set! spool-part (+ spool-part 1))) (set! spool-part (+ spool-part -1)) (label cfg-88) (ja-abort-spooled-anim arg0 arg2 spool-part) - 0 - ) + 0) (defbehavior ja-abort-spooled-anim process-drawable ((arg0 spool-anim) (arg1 art-joint-anim) (arg2 int)) "Abort a spooled animation." @@ -1033,9 +738,7 @@ (str-play-stop (-> arg0 name)) (set! (-> *art-control* active-stream) #f) (logclear! (-> self skel status) (janim-status drawn done)) - (if (zero? (logand (-> self skel status) (janim-status inited))) - (logclear! (-> self skel status) (janim-status inited)) - ) + (if (zero? (logand (-> self skel status) (janim-status inited))) (logclear! (-> self skel status) (janim-status inited))) (remove-setting! 'spooling) (cond ((and arg1 (>= arg2 0)) @@ -1044,18 +747,9 @@ (while (!= (-> self skel root-channel 0) (-> self skel channel)) (spool-push *art-control* (-> arg0 name) arg2 self -20.0) (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-set! 0) - ) - ) + (ja :num! (seek!)))) + (else (ja-channel-set! 0))) (set! (-> *art-control* spool-lock) (the-as handle #f)) - 0 - ) - -(if (zero? *art-control*) - (set! *art-control* (new 'global 'external-art-control)) - ) + 0) +(if (zero? *art-control*) (set! *art-control* (new 'global 'external-art-control))) diff --git a/goal_src/jak1/engine/load/ramdisk.gc b/goal_src/jak1/engine/load/ramdisk.gc index a2316d2b46..89c780062f 100644 --- a/goal_src/jak1/engine/load/ramdisk.gc +++ b/goal_src/jak1/engine/load/ramdisk.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ps2/rpc-h.gc") -;; name: ramdisk.gc -;; name in dgo: ramdisk -;; dgos: GAME, ENGINE - ;; see game/overlord/ramdisk.cpp ;; unlike most other loads, ramdisk actually uses the response buffer of the RPC ;; to send the data. @@ -19,32 +14,26 @@ ;; command to load something into the OVERLORD RAMDISK from the DVD ;; use with fno = 1 (deftype ramdisk-rpc-fill (structure) - ((rsvd1 int32) - (ee-id int32) - (rsvd2 int32 2) - (filename uint128) - ) - ) + ((rsvd1 int32) + (ee-id int32) + (rsvd2 int32 2) + (filename uint128))) ;; get data in ramdisk on EE. (deftype ramdisk-rpc-load (structure) - ((rsvd int32) - (ee-id int32) - (offset uint32) - (length uint32) - ) - ) + ((rsvd int32) + (ee-id int32) + (offset uint32) + (length uint32))) ;; load file directly to EE. ;; this seems very similar to some functionality in STR. (deftype ramdisk-rpc-load-to-ee (structure) - ((rsvd int32) - (addr int32) - (offset int32) - (length int32) - (filename uint128) - ) - ) + ((rsvd int32) + (addr int32) + (offset int32) + (length int32) + (filename uint128))) ;; allocate the ramdisk RPC buffer (define *ramdisk-rpc* (new 'global 'rpc-buffer-pair (the-as uint 32) (the-as uint 1) RPC-RAMDISK)) @@ -56,15 +45,12 @@ (let ((cmd (the-as ramdisk-rpc-load (add-element *ramdisk-rpc*)))) (set! (-> cmd offset) offset) (set! (-> cmd ee-id) file-id) - (set! (-> cmd length) length) - ) + (set! (-> cmd length) length)) (call *ramdisk-rpc* (the-as uint 0) buffer length) - 0 - ) + 0) (defun ramdisk-sync () "Wait for ramdisk RPC to complete." (sync *ramdisk-rpc* #t) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/math/euler-h.gc b/goal_src/jak1/engine/math/euler-h.gc index f205ab1965..b0b9cc334e 100644 --- a/goal_src/jak1/engine/math/euler-h.gc +++ b/goal_src/jak1/engine/math/euler-h.gc @@ -1,25 +1,17 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") -;; name: euler-h.gc -;; name in dgo: euler-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; maybe euler angle storage orders? -(define EulSafe (new 'static 'boxed-array :type int32 :length 4 - 0 1 2 0)) -(define EulNext (new 'static 'boxed-array :type int32 :length 4 - 1 2 0 1)) +(define EulSafe (new 'static 'boxed-array :type int32 :length 4 0 1 2 0)) + +(define EulNext (new 'static 'boxed-array :type int32 :length 4 1 2 0 1)) ;; just uses the same xyzw and data array as vector. ;; the w stores a float that should be an integer that seems to have ;; bitfields for... something? Like maybe the order? ;; Euler angles are mostly unused -(deftype euler-angles (vector) - () - ) +(deftype euler-angles (vector) ()) diff --git a/goal_src/jak1/engine/math/euler.gc b/goal_src/jak1/engine/math/euler.gc index 0eb92f6580..29a1429c5e 100644 --- a/goal_src/jak1/engine/math/euler.gc +++ b/goal_src/jak1/engine/math/euler.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/quaternion.gc") (require "engine/math/euler-h.gc") -;; name: euler.gc -;; name in dgo: euler -;; dgos: GAME, ENGINE - ;; In general, the euler angle stuff is really inefficient. I don't think it's really used outside of ;; a few camera debugging functions. @@ -18,8 +13,7 @@ (set! (-> arg0 data 1) arg2) (set! (-> arg0 data 2) arg3) (set! (-> arg0 data 3) (the float arg4)) - arg0 - ) + arg0) (defun eul->matrix ((arg0 matrix) (arg1 euler-angles)) "Convert euler angles to rotation matrix." @@ -28,16 +22,11 @@ ;; copy to temp storage. (set! (-> s5-0 quad) (-> arg1 quad)) (if (= (logand (the int (-> s5-0 data 3)) 1) 1) - (let ((f0-2 (-> s5-0 data 0))) - (set! (-> s5-0 data 0) (-> s5-0 data 2)) - (set! (-> s5-0 data 2) f0-2) - ) - ) + (let ((f0-2 (-> s5-0 data 0))) (set! (-> s5-0 data 0) (-> s5-0 data 2)) (set! (-> s5-0 data 2) f0-2))) (when (= (logand (sar (the int (-> s5-0 data 3)) 2) 1) 1) (set! (-> s5-0 data 0) (- (-> s5-0 data 0))) (set! (-> s5-0 data 1) (- (-> s5-0 data 1))) - (set! (-> s5-0 data 2) (- (-> s5-0 data 2))) - ) + (set! (-> s5-0 data 2) (- (-> s5-0 data 2)))) (let* ((f26-0 (cos (-> s5-0 data 0))) (f30-0 (cos (-> s5-0 data 1))) (f22-0 (cos (-> s5-0 data 2))) @@ -47,214 +36,98 @@ (f0-17 (* f26-0 f22-0)) (f1-1 (* f26-0 f4-0)) (f2-0 (* f24-0 f22-0)) - (f3-0 (* f24-0 f4-0)) - ) + (f3-0 (* f24-0 f4-0))) (let* ((v1-12 (logand (sar (the int (-> s5-0 data 3)) 2) 1)) (a1-2 (-> EulSafe (logand (sar (the int (-> s5-0 data 3)) 3) 3))) (a0-21 (-> EulNext (+ a1-2 v1-12))) - (v1-17 (-> EulNext (+ (- 1 v1-12) a1-2))) - ) + (v1-17 (-> EulNext (+ (- 1 v1-12) a1-2)))) (cond ((= (logand (sar (the int (-> s5-0 data 3)) 1) 1) 1) - (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl a1-2 2)) (the-as int arg0)))) - f30-0 - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl a0-21 2)) (the-as int arg0)))) - (* f28-0 f24-0) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl v1-17 2)) (the-as int arg0)))) - (* f28-0 f26-0) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl a1-2 2)) (the-as int arg0)))) - (* f28-0 f4-0) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl a0-21 2)) (the-as int arg0)))) - (- f0-17 (* f30-0 f3-0)) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl v1-17 2)) (the-as int arg0)))) - (- (- f2-0) (* f30-0 f1-1)) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl a1-2 2)) (the-as int arg0)))) - (- (* f28-0 f22-0)) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl a0-21 2)) (the-as int arg0)))) - (+ f1-1 (* f30-0 f2-0)) - ) + (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl a1-2 2)) (the-as int arg0)))) f30-0) + (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl a0-21 2)) (the-as int arg0)))) (* f28-0 f24-0)) + (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl v1-17 2)) (the-as int arg0)))) (* f28-0 f26-0)) + (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl a1-2 2)) (the-as int arg0)))) (* f28-0 f4-0)) + (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl a0-21 2)) (the-as int arg0)))) (- f0-17 (* f30-0 f3-0))) + (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl v1-17 2)) (the-as int arg0)))) (- (- f2-0) (* f30-0 f1-1))) + (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl a1-2 2)) (the-as int arg0)))) (- (* f28-0 f22-0))) + (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl a0-21 2)) (the-as int arg0)))) (+ f1-1 (* f30-0 f2-0))) (let ((f0-19 (+ (- f3-0) (* f30-0 f0-17)))) - (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl v1-17 2)) (the-as int arg0)))) - f0-19 - ) - ) - ) + (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl v1-17 2)) (the-as int arg0)))) f0-19))) (else - (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl a1-2 2)) (the-as int arg0)))) - (* f30-0 f22-0) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl a0-21 2)) (the-as int arg0)))) - (+ (- f1-1) (* f28-0 f2-0)) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl v1-17 2)) (the-as int arg0)))) - (+ f3-0 (* f28-0 f0-17)) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl a1-2 2)) (the-as int arg0)))) - (* f30-0 f4-0) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl a0-21 2)) (the-as int arg0)))) - (+ f0-17 (* f28-0 f3-0)) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl v1-17 2)) (the-as int arg0)))) - (+ (- f2-0) (* f28-0 f1-1)) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl a1-2 2)) (the-as int arg0)))) - (- f28-0) - ) - (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl a0-21 2)) (the-as int arg0)))) - (* f30-0 f24-0) - ) + (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl a1-2 2)) (the-as int arg0)))) (* f30-0 f22-0)) + (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl a0-21 2)) (the-as int arg0)))) (+ (- f1-1) (* f28-0 f2-0))) + (set! (-> (the-as (pointer float) (+ (+ (shl a1-2 4) (shl v1-17 2)) (the-as int arg0)))) (+ f3-0 (* f28-0 f0-17))) + (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl a1-2 2)) (the-as int arg0)))) (* f30-0 f4-0)) + (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl a0-21 2)) (the-as int arg0)))) (+ f0-17 (* f28-0 f3-0))) + (set! (-> (the-as (pointer float) (+ (+ (shl a0-21 4) (shl v1-17 2)) (the-as int arg0)))) (+ (- f2-0) (* f28-0 f1-1))) + (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl a1-2 2)) (the-as int arg0)))) (- f28-0)) + (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl a0-21 2)) (the-as int arg0)))) (* f30-0 f24-0)) (let ((f0-25 (* f30-0 f26-0))) - (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl v1-17 2)) (the-as int arg0)))) - f0-25 - ) - ) - ) - ) - ) - ) - ) - arg0 - ) + (set! (-> (the-as (pointer float) (+ (+ (shl v1-17 4) (shl v1-17 2)) (the-as int arg0)))) f0-25))))))) + arg0) (defun matrix->eul ((arg0 euler-angles) (arg1 matrix) (arg2 int)) "Conver matrix to euler angles. Takes some weird flag for what kind of euler angles" (let* ((v1-4 (logand (sar arg2 2) 1)) (s3-0 (-> EulSafe (logand (sar arg2 3) 3))) (s2-0 (-> EulNext (+ s3-0 v1-4))) - (s1-0 (-> EulNext (+ (- 1 v1-4) s3-0))) - ) + (s1-0 (-> EulNext (+ (- 1 v1-4) s3-0)))) (if (= (logand (sar arg2 1) 1) 1) - (let* ((f0-0 (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s3-0 4)) (the-as int arg1))))) - (f0-2 (* f0-0 f0-0)) - (f1-0 (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s3-0 4)) (the-as int arg1))))) - (f30-0 (sqrtf (+ f0-2 (* f1-0 f1-0)))) - ) - (cond - ((< 0.00001 f30-0) - (set! (-> arg0 data 0) - (atan (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s3-0 4)) (the-as int arg1)))) - (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s3-0 4)) (the-as int arg1)))) - ) - ) - (set! (-> arg0 data 1) - (atan f30-0 (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s3-0 4)) (the-as int arg1))))) - ) - (let ((f0-13 (atan - (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s2-0 4)) (the-as int arg1)))) - (- (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s1-0 4)) (the-as int arg1))))) - ) - ) - ) - (set! (-> arg0 data 2) f0-13) - ) - ) - (else - (set! (-> arg0 data 0) - (atan (- (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s2-0 4)) (the-as int arg1))))) - (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s2-0 4)) (the-as int arg1)))) - ) - ) - (set! (-> arg0 data 1) - (atan - f30-0 - (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s3-0 4)) (the-as int arg1)))) - ) - ) - (let ((f0-20 0.0)) - (set! (-> arg0 data 2) f0-20) - ) - ) - ) - ) - (let* ((f0-21 (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s3-0 4)) (the-as int arg1))))) - (f0-23 (* f0-21 f0-21)) - (f1-3 (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s2-0 4)) (the-as int arg1))))) - (f30-1 (sqrtf (+ f0-23 (* f1-3 f1-3)))) - ) - (cond - ((< 0.00001 f30-1) - (set! (-> arg0 data 0) - (atan - (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s1-0 4)) (the-as int arg1)))) - (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s1-0 4)) (the-as int arg1)))) - ) - ) - (set! (-> arg0 data 1) - (atan - (- (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s1-0 4)) (the-as int arg1))))) - f30-1 - ) - ) - (let ((f0-34 (atan - (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s2-0 4)) (the-as int arg1)))) - (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s3-0 4)) (the-as int arg1)))) - ) - ) - ) - (set! (-> arg0 data 2) f0-34) - ) - ) - (else - (set! (-> arg0 data 0) - (atan - (- (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s2-0 4)) (the-as int arg1))))) - (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s2-0 4)) (the-as int arg1)))) - ) - ) - (set! (-> arg0 data 1) - (atan - (- (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s1-0 4)) (the-as int arg1))))) - f30-1 - ) - ) - (let ((f0-42 0.0)) - (set! (-> arg0 data 2) f0-42) - ) - ) - ) - ) - ) - ) + (let* ((f0-0 (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s3-0 4)) (the-as int arg1))))) + (f0-2 (* f0-0 f0-0)) + (f1-0 (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s3-0 4)) (the-as int arg1))))) + (f30-0 (sqrtf (+ f0-2 (* f1-0 f1-0))))) + (cond + ((< 0.00001 f30-0) + (set! (-> arg0 data 0) + (atan (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s3-0 4)) (the-as int arg1)))) + (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s3-0 4)) (the-as int arg1)))))) + (set! (-> arg0 data 1) (atan f30-0 (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s3-0 4)) (the-as int arg1)))))) + (let ((f0-13 (atan (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s2-0 4)) (the-as int arg1)))) + (- (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s1-0 4)) (the-as int arg1)))))))) + (set! (-> arg0 data 2) f0-13))) + (else + (set! (-> arg0 data 0) + (atan (- (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s2-0 4)) (the-as int arg1))))) + (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s2-0 4)) (the-as int arg1)))))) + (set! (-> arg0 data 1) (atan f30-0 (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s3-0 4)) (the-as int arg1)))))) + (let ((f0-20 0.0)) (set! (-> arg0 data 2) f0-20))))) + (let* ((f0-21 (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s3-0 4)) (the-as int arg1))))) + (f0-23 (* f0-21 f0-21)) + (f1-3 (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s2-0 4)) (the-as int arg1))))) + (f30-1 (sqrtf (+ f0-23 (* f1-3 f1-3))))) + (cond + ((< 0.00001 f30-1) + (set! (-> arg0 data 0) + (atan (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s1-0 4)) (the-as int arg1)))) + (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s1-0 4)) (the-as int arg1)))))) + (set! (-> arg0 data 1) + (atan (- (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s1-0 4)) (the-as int arg1))))) f30-1)) + (let ((f0-34 (atan (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s2-0 4)) (the-as int arg1)))) + (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s3-0 4)) (the-as int arg1))))))) + (set! (-> arg0 data 2) f0-34))) + (else + (set! (-> arg0 data 0) + (atan (- (-> (the-as (pointer float) (+ (+ (shl s1-0 2) (shl s2-0 4)) (the-as int arg1))))) + (-> (the-as (pointer float) (+ (+ (shl s2-0 2) (shl s2-0 4)) (the-as int arg1)))))) + (set! (-> arg0 data 1) + (atan (- (-> (the-as (pointer float) (+ (+ (shl s3-0 2) (shl s1-0 4)) (the-as int arg1))))) f30-1)) + (let ((f0-42 0.0)) (set! (-> arg0 data 2) f0-42))))))) (when (= (logand (sar arg2 2) 1) 1) (set! (-> arg0 data 0) (- (-> arg0 data 0))) (set! (-> arg0 data 1) (- (-> arg0 data 1))) - (let ((f0-48 (- (-> arg0 data 2)))) - (set! (-> arg0 data 2) f0-48) - ) - ) + (let ((f0-48 (- (-> arg0 data 2)))) (set! (-> arg0 data 2) f0-48))) (if (= (logand arg2 1) 1) - (let ((f0-49 (-> arg0 data 0))) - (set! (-> arg0 data 0) (-> arg0 data 2)) - (set! (-> arg0 data 2) f0-49) - ) - ) + (let ((f0-49 (-> arg0 data 0))) (set! (-> arg0 data 0) (-> arg0 data 2)) (set! (-> arg0 data 2) f0-49))) (set! (-> arg0 data 3) (the float arg2)) - arg0 - ) + arg0) (defun eul->quat ((arg0 quaternion) (arg1 euler-angles)) "Convert euler angles to quaternion" - (let ((s5-0 (new 'stack-no-clear 'matrix))) - (eul->matrix s5-0 arg1) - (matrix->quaternion arg0 s5-0) - ) - arg0 - ) + (let ((s5-0 (new 'stack-no-clear 'matrix))) (eul->matrix s5-0 arg1) (matrix->quaternion arg0 s5-0)) + arg0) (defun quat->eul ((arg0 euler-angles) (arg1 quaternion) (arg2 int)) "Convert quaternion to euler angles. The last argument is euler flags" - (let ((s5-0 (new 'stack-no-clear 'matrix))) - (quaternion->matrix s5-0 arg1) - (matrix->eul arg0 s5-0 arg2) - ) - arg0 - ) - + (let ((s5-0 (new 'stack-no-clear 'matrix))) (quaternion->matrix s5-0 arg1) (matrix->eul arg0 s5-0 arg2)) + arg0) diff --git a/goal_src/jak1/engine/math/math.gc b/goal_src/jak1/engine/math/math.gc index 38832bdc6a..72c259fd1a 100644 --- a/goal_src/jak1/engine/math/math.gc +++ b/goal_src/jak1/engine/math/math.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: math.gc -;; name in dgo: math -;; dgos: GAME, ENGINE - ;; various math helpers ;; DECOMP BEGINS @@ -20,18 +15,15 @@ "Truncate a floating point number to an integer value. Positive values round down and negative values round up." (declare (inline)) - (the float (the int x)) - ) + (the float (the int x))) (defun integral? ((x float)) "Is a float an exact integer?" - (= (truncate x) x) - ) + (= (truncate x) x)) (defun fractional-part ((x float)) "Get the fractional part of a float" - (- x (truncate x)) - ) + (- x (truncate x))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; bitfield types @@ -41,30 +33,21 @@ ((r uint8 :offset 0) (g uint8 :offset 8) (b uint8 :offset 16) - (a uint8 :offset 24) - ) - ) + (a uint8 :offset 24))) (defmacro static-rgba (r g b a) "make a new static rgba" - - `(new 'static 'rgba :r ,r :g ,g :b ,b :a ,a) - ) + `(new 'static 'rgba :r ,r :g ,g :b ,b :a ,a)) (defmacro static-rgba-uint (col) "make a new static rgba" - `(the-as rgba ,col) - ) + `(the-as rgba ,col)) ;; TODO: fields -(deftype xyzw (uint128) - () - ) +(deftype xyzw (uint128) ()) ;; TODO: fields -(deftype xyzwh (uint128) - () - ) +(deftype xyzwh (uint128) ()) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; utility functions @@ -74,8 +57,7 @@ "Straight out of Bit Twiddling Hacks graphics.stanford.edu. This website is old enough that they possibly used this back in 1999." - (- (sar (the-as int (the float x)) 23) 127) - ) + (- (sar (the-as int (the float x)) 23) 127)) (defun seek ((x float) (target float) (diff float)) "Move x toward target by at most diff, with floats" @@ -83,51 +65,31 @@ (cond ((>= diff (fabs err)) ;; can get there in one go - target - ) + target) ((>= err 0) ;; increase - (+ x diff) - ) - (else - (- x diff) - ) - ) - ) - ) + (+ x diff)) + (else (- x diff))))) (defun lerp ((minimum float) (maximum float) (amount float)) "Interpolate between minimum and maximum. The output is not clamped." - (+ minimum (* amount (- maximum minimum))) - ) + (+ minimum (* amount (- maximum minimum)))) -(defun lerp-scale ((min-out float) (max-out float) - (in float) (min-in float) (max-in float)) +(defun lerp-scale ((min-out float) (max-out float) (in float) (min-in float) (max-in float)) "Interpolate from [min-in, max-in] to [min-out, max-out]. If the output is out of range, it will be clamped. This is not a great implementation." - (let ((scale (fmax 0.0 (fmin 1.0 (/ (- in min-in) (- max-in min-in)))))) - (+ (* (- 1.0 scale) min-out) - (* scale max-out) - ) - ) - ) + (let ((scale (fmax 0.0 (fmin 1.0 (/ (- in min-in) (- max-in min-in)))))) + (+ (* (- 1.0 scale) min-out) (* scale max-out)))) (defun lerp-clamp ((minimum float) (maximum float) (amount float)) "Interpolate between minimum and maximum, but saturate the amount to [0, 1]" (cond - ((>= 0.0 amount) - minimum) - ((>= amount 1.0) - maximum) + ((>= 0.0 amount) minimum) + ((>= amount 1.0) maximum) (else ;; the implementation in lerp uses fewer operations... - (+ (* (- 1.0 amount) minimum) - (* amount maximum) - ) - ) - ) - ) + (+ (* (- 1.0 amount) minimum) (* amount maximum))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; utility macros @@ -135,13 +97,11 @@ (defmacro seek! (place target rate) "Macro to use seek in-place. place is the base, and where the result is stored." - `(set! ,place (seek ,place ,target ,rate)) - ) + `(set! ,place (seek ,place ,target ,rate))) (defmacro seekl! (place target rate) "Macro to use seekl in-place. place is the base, and where the result is stored." - `(set! ,place (seekl ,place ,target ,rate)) - ) + `(set! ,place (seekl ,place ,target ,rate))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; integer utility @@ -149,17 +109,7 @@ (defun seekl ((x int) (target int) (diff int)) "Move x toward a target by at most diff, with integers" - (let ((err (- target x))) - (if (< (abs err) diff) - (return-from #f target) - ) - - (if (>= err 0) - (+ x diff) - (- x diff) - ) - ) - ) + (let ((err (- target x))) (if (< (abs err) diff) (return-from #f target)) (if (>= err 0) (+ x diff) (- x diff)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; random vu hardware @@ -175,11 +125,8 @@ "Initialize the VU0 random generator" ;; (.ctc2.i R arg0) ;; (.cfc2.i v0 R) - (set! *_vu-reg-R_* - (logior #x3F800000 (logand (the-as int seed) #x007FFFFF)) - ) - (the-as float *_vu-reg-R_*) - ) + (set! *_vu-reg-R_* (logior #x3F800000 (logand (the-as int seed) #x007FFFFF))) + (the-as float *_vu-reg-R_*)) ;; this is _almost_ sqrt(2) = 1.414 (rand-vu-init 1.418091058731079) @@ -194,31 +141,24 @@ ;; (.vsqrty Q vf1) ;; (.vaddq.x vf2 vf0 Q) ;; you're not allowed to do this! ;; (.vrxorw vf2) - ;; and advance ;; (.vrnext.xyzw vf1) (let ((x (logand 1 (shr current-random 4))) - (y (logand 1 (shr current-random 22))) - ) + (y (logand 1 (shr current-random 22)))) (set! current-random (shl current-random 1)) (set! current-random (logxor current-random (logxor x y))) (logxor! current-random (pc-rand)) - (set! *_vu-reg-R_* (logior #x3f800000 (logand current-random #x7fffff))) - ) - ) - + (set! *_vu-reg-R_* (logior #x3f800000 (logand current-random #x7fffff))))) ;; (.vsubw.xyzw vf1 vf1 vf0) ;; (.qmfc2.i v0 vf1) - (- (the-as float *_vu-reg-R_*) 1.0) - ) + (- (the-as float *_vu-reg-R_*) 1.0)) ;; rand-vu-nostep (defun rand-vu-nostep () "Get the number currently in the random generator. This will be equal to the last call of (rand-vu) This will not update the random generator" - (- (the-as float *_vu-reg-R_*) 1.0) - ) + (- (the-as float *_vu-reg-R_*) 1.0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; random vu utilities @@ -227,64 +167,47 @@ (defun rand-vu-float-range ((minimum float) (maximum float)) "Get a random number in the given range. TODO: is this inclusive? I think it's [min, max)" - (+ minimum (* (rand-vu) (- maximum minimum))) - ) + (+ minimum (* (rand-vu) (- maximum minimum)))) (defun rand-vu-percent? ((prob float)) "Get a boolean that's true with the given probability." - (>= prob (rand-vu)) - ) + (>= prob (rand-vu))) (defun rand-vu-int-range ((first int) (second int)) "Get an integer the given range. Inclusive of both? It looks like they actually did this right??" - (local-vars (float-in-range float)) - ;; increment the larger of the range, so it is inclusive ;; (we should have (max - min) + 1 buckets) - (if (< first second) - (set! second (+ second 1)) - (set! first (+ first 1)) - ) - + (if (< first second) (set! second (+ second 1)) (set! first (+ first 1))) ;; get a float in the range - (set! float-in-range - (rand-vu-float-range (the float first) (the float second)) - ) - + (set! float-in-range (rand-vu-float-range (the float first) (the float second))) ;; negatives round up and positives round down. ;; but we want all to round consistently, so we subtract one from negatives. (when (< float-in-range 0) - (set! float-in-range (+ -1.0 float-in-range)) - ) + (set! float-in-range (+ -1.0 float-in-range))) ;; and back to integer. - (the int float-in-range) - ) + (the int float-in-range)) (defun rand-vu-int-count ((maximum int)) "Get an integer in [0, maximum)" - (the int (* (rand-vu) (the float maximum))) - ) - + (the int (* (rand-vu) (the float maximum)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; terrible random integer generator ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (deftype random-generator (basic) - ((seed uint32) - ) - ) + ((seed uint32))) (define *random-generator* (new 'global 'random-generator)) + ;; I wonder who wrote this code. (set! (-> *random-generator* seed) #x666edd1e) (defmacro sext32-64 (x) "Sign extend a 32-bit value to 64-bits" - `(sar (shl ,x 32) 32) - ) + `(sar (shl ,x 32) 32)) (defun rand-uint31-gen ((gen random-generator)) "Generate a supposedly random integer. @@ -304,15 +227,11 @@ (a1 (logand #xffffffff (shr lo 31))) ;; or v1, v1, a1 ;; daddu v0, v0 v1 - (result (+ lo (logior v1 a1))) - ) + (result (+ lo (logior v1 a1)))) (set! result (shr (logand #xffffffff (shl result 1)) 1)) (set! (-> gen seed) result) - (the uint result) - ) - ) + (the uint result))) (defmacro rand-float-gen (&key (gen *random-generator*)) "Generate a float from [0, 1)" - `(+ -1.0 (the-as float (logior #x3f800000 (/ (rand-uint31-gen ,gen) 256)))) - ) + `(+ -1.0 (the-as float (logior #x3f800000 (/ (rand-uint31-gen ,gen) 256))))) diff --git a/goal_src/jak1/engine/math/matrix-h.gc b/goal_src/jak1/engine/math/matrix-h.gc index 9c9505461d..ce7d307b45 100644 --- a/goal_src/jak1/engine/math/matrix-h.gc +++ b/goal_src/jak1/engine/math/matrix-h.gc @@ -1,38 +1,28 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: matrix-h.gc -;; name in dgo: matrix-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; A 4x4 matrix, stored in row-major order ;; some, but not all, functions assume that a matrix is an affine transform. ;; others assume that the rotation has no scale or shear (and that its inverse is its transpose) (deftype matrix (structure) - ((vector vector 4 :inline :offset 0) - (quad uint128 4 :overlay-at vector) - (data float 16 :overlay-at vector) - ) + ((vector vector 4 :inline :offset 0) + (quad uint128 4 :overlay-at vector) + (data float 16 :overlay-at vector)) (:methods - (transform-vectors! (_type_ (inline-array vector) (inline-array vector) int) none) - ) - ) + (transform-vectors! (_type_ (inline-array vector) (inline-array vector) int) none))) ;; A 3x3 matrix, stored in row-major order. ;; NOTE: the rows each have an extra 4-bytes of padding ;; so this is really a 3x4 matrix. ;; this type is rarely used (deftype matrix3 (structure) - ((data float 12) - (vector vector 3 :inline :overlay-at (-> data 0)) - (quad uint128 3 :overlay-at (-> data 0)) - ) - ) + ((data float 12) + (vector vector 3 :inline :overlay-at (-> data 0)) + (quad uint128 3 :overlay-at (-> data 0)))) ;; a matrix stored using 16-bit integers. ;; note that these usually have different scaling for the 4th row which @@ -40,35 +30,27 @@ ;; so you generally should not unpack these to floats without knowing where they came from ;; and how they were originally packed (for example, in tie/shrub) (deftype matrix4h (structure) - ((data int16 16) - (vector4h vector4h 4 :inline :overlay-at (-> data 0)) - (long int64 4 :overlay-at (-> data 0)) - ) - ) - + ((data int16 16) + (vector4h vector4h 4 :inline :overlay-at (-> data 0)) + (long int64 4 :overlay-at (-> data 0)))) (defun matrix-copy! ((dst matrix) (src matrix)) "Copy src to dst" (let ((v1-0 (-> src vector 0 quad)) (a2-0 (-> src vector 1 quad)) (a3-0 (-> src vector 2 quad)) - (a1-1 (-> src vector 3 quad)) - ) + (a1-1 (-> src vector 3 quad))) (set! (-> dst vector 0 quad) v1-0) (set! (-> dst vector 1 quad) a2-0) (set! (-> dst vector 2 quad) a3-0) - (set! (-> dst vector 3 quad) a1-1) - ) - dst - ) + (set! (-> dst vector 3 quad) a1-1)) + dst) (defmacro new-stack-matrix0 () "Get a new matrix on the stack that's set to zero." `(let ((mat (new 'stack-no-clear 'matrix))) - (set! (-> mat quad 0) (the-as uint128 0)) - (set! (-> mat quad 1) (the-as uint128 0)) - (set! (-> mat quad 2) (the-as uint128 0)) - (set! (-> mat quad 3) (the-as uint128 0)) - mat - ) - ) + (set! (-> mat quad 0) (the-as uint128 0)) + (set! (-> mat quad 1) (the-as uint128 0)) + (set! (-> mat quad 2) (the-as uint128 0)) + (set! (-> mat quad 3) (the-as uint128 0)) + mat)) diff --git a/goal_src/jak1/engine/math/matrix.gc b/goal_src/jak1/engine/math/matrix.gc index cbf76c65b4..2b0315674c 100644 --- a/goal_src/jak1/engine/math/matrix.gc +++ b/goal_src/jak1/engine/math/matrix.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/math/matrix-h.gc") -;; name: matrix.gc -;; name in dgo: matrix -;; dgos: GAME, ENGINE - ;; This file implements the GOAL matrix library. ;; In general, a vector is always treated as a row vector. @@ -41,53 +36,19 @@ (defmethod inspect ((this matrix)) "Print out all the values in a matrix." (format #t "[~8x] matrix~%" this) - (format #t "~T[~F] [~F] [~F] [~F]~%" - (-> this data 0) - (-> this data 1) - (-> this data 2) - (-> this data 3) - ) - (format #t "~T[~F] [~F] [~F] [~F]~%" - (-> this data 4) - (-> this data 5) - (-> this data 6) - (-> this data 7) - ) - (format #t "~T[~F] [~F] [~F] [~F]~%" - (-> this data 8) - (-> this data 9) - (-> this data 10) - (-> this data 11) - ) - (format #t "~T[~F] [~F] [~F] [~F]~%" - (-> this data 12) - (-> this data 13) - (-> this data 14) - (-> this data 15) - ) - this - ) + (format #t "~T[~F] [~F] [~F] [~F]~%" (-> this data 0) (-> this data 1) (-> this data 2) (-> this data 3)) + (format #t "~T[~F] [~F] [~F] [~F]~%" (-> this data 4) (-> this data 5) (-> this data 6) (-> this data 7)) + (format #t "~T[~F] [~F] [~F] [~F]~%" (-> this data 8) (-> this data 9) (-> this data 10) (-> this data 11)) + (format #t "~T[~F] [~F] [~F] [~F]~%" (-> this data 12) (-> this data 13) (-> this data 14) (-> this data 15)) + this) (defmethod inspect ((this matrix3)) "Print out the values in a 3x3 matrix." (format #t "[~8x] matrix3~%" this) - (format #t "~T[~F] [~F] [~F]~%" - (-> this data 0) - (-> this data 1) - (-> this data 2) - ) - (format #t "~T[~F] [~F] [~F]~%" - (-> this data 4) - (-> this data 5) - (-> this data 6) - ) - (format #t "~T[~F] [~F] [~F]~%" - (-> this data 8) - (-> this data 9) - (-> this data 10) - ) - this - ) + (format #t "~T[~F] [~F] [~F]~%" (-> this data 0) (-> this data 1) (-> this data 2)) + (format #t "~T[~F] [~F] [~F]~%" (-> this data 4) (-> this data 5) (-> this data 6)) + (format #t "~T[~F] [~F] [~F]~%" (-> this data 8) (-> this data 9) (-> this data 10)) + this) (defun matrix-identity! ((dst matrix)) "Set dst to the identity matrix." @@ -103,32 +64,27 @@ (set! (-> dst data 15) one) (set! (-> dst data 10) one) (set! (-> dst data 5) one) - (set! (-> dst data 0) one) - ) - dst - ) + (set! (-> dst data 0) one)) + dst) ;; A 4x4 identity matrix (define *identity-matrix* (the-as matrix (new 'global 'matrix))) + (matrix-identity! *identity-matrix*) (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 not an efficient implementation." (dotimes (i 16) - (set! (-> dst data i) (+ (-> src1 data i) (-> src2 data i))) - ) - dst - ) + (set! (-> dst data i) (+ (-> src1 data i) (-> src2 data i)))) + dst) (defun matrix-! ((dst matrix) (src1 matrix) (src2 matrix)) "Set dst = src1 - src1. It is okay for any arugments to be the same data. This is not an efficient implementation." (dotimes (i 16) - (set! (-> dst data i) (- (-> src1 data i) (-> src2 data i))) - ) - dst - ) + (set! (-> dst data i) (- (-> src1 data i) (-> src2 data i)))) + dst) (desfun .vf.vec (reg1 &rest regs) "make a vector for assembly regs. @@ -136,61 +92,42 @@ 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) + (let ((x reg1) (y #f) (z #f) - (w #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 '())))) - ) - ) + ((= (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.x (vec) (car vec)) -(desfun .vf.y (vec) (cadr vec)) -(desfun .vf.z (vec) (caddr vec)) -(desfun .vf.w (vec) (cadddr 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) - ) - ) + (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)))) + (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)))) @@ -201,28 +138,24 @@ (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))) - ) + (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) + (.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) + (.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) + (.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) - ) - ) - ) + (.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. @@ -239,8 +172,7 @@ (vf18 :class vf) (vf19 :class vf) (vf20 :class vf) - (vf21 :class vf) - ) + (vf21 :class vf)) ;; This could likely be faster on PS2 with some clever reordering. ;; These loads will stall. (.lvf vf10 (&-> src1 vector 0 quad)) @@ -271,9 +203,7 @@ (.svf (&-> dst vector 1 quad) vf19) (.svf (&-> dst vector 2 quad) vf20) (.svf (&-> dst vector 3 quad) vf21) - dst - ) - ) + dst)) (defun matrixp*! ((dst matrix) (src1 matrix) (src2 matrix)) "Set dst = src1 * src2. NOTE: this function is a wrapper around matrix*! @@ -284,10 +214,8 @@ (set! (-> dst vector 0 quad) (-> temp-mat vector 0 quad)) (set! (-> dst vector 1 quad) (-> temp-mat vector 1 quad)) (set! (-> dst vector 2 quad) (-> temp-mat vector 2 quad)) - (set! (-> dst vector 3 quad) (-> temp-mat vector 3 quad)) - ) - dst - ) + (set! (-> dst vector 3 quad) (-> temp-mat vector 3 quad))) + dst) (defun vector-matrix*! ((dst vector) (vec vector) (mat matrix)) "Set dst = vec * mat. dst may be equal to src." @@ -296,8 +224,7 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (.lvf vf1 (&-> mat vector 0 quad)) (.lvf vf2 (&-> mat vector 1 quad)) (.lvf vf3 (&-> mat vector 2 quad)) @@ -308,9 +235,7 @@ (.add.mul.z.vf acc vf3 vf5 acc) (.add.mul.w.vf vf5 vf4 vf5 acc) (.svf (&-> dst quad) vf5) - dst - ) - ) + dst)) (defun vector-rotate*! ((dst vector) (vec vector) (mat matrix)) "Set dst to be the input vector rotated by the rotation part of mat. @@ -321,8 +246,7 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) ;; this implementation is better than vector-matrix*! (.lvf vf5 (&-> vec quad)) (.lvf vf1 (&-> mat vector 0 quad)) @@ -335,9 +259,7 @@ (.lvf vf4 (&-> mat vector 3 quad)) (.add.mul.z.vf vf5 vf3 vf5 acc) (.svf (&-> dst quad) vf5) - dst - ) - ) + dst)) (defun vector3s-matrix*! ((dst vector3s) (vec vector3s) (mat matrix)) "Set dst to be ([src 1.0] * mat).xyz. Doesn't touch the w of dst. @@ -347,10 +269,8 @@ (vector-matrix*! temp-vec3 temp-vec3 mat) (set! (-> dst x) (-> temp-vec3 x)) (set! (-> dst y) (-> temp-vec3 y)) - (set! (-> dst z) (-> temp-vec3 z)) - ) - dst - ) + (set! (-> dst z) (-> temp-vec3 z))) + dst) (defun vector3s-rotate*! ((dst vector3s) (vec vector3s) (mat matrix)) "Set dst to vec rotated by the rotation in the homogeneous transform mat. @@ -360,38 +280,31 @@ (vector-rotate*! temp-vec3 temp-vec3 mat) (set! (-> dst x) (-> temp-vec3 x)) (set! (-> dst y) (-> temp-vec3 y)) - (set! (-> dst z) (-> temp-vec3 z)) - ) - dst - ) + (set! (-> dst z) (-> temp-vec3 z))) + dst) (defun matrix-transpose! ((dst matrix) (src matrix)) "Set dst = src^T. src and dst can be the same." (local-vars - (v1-0 uint128) - (v1-1 uint128) - (v1-2 uint128) - (a1-1 uint128) - (a2-1 uint128) - (a3-1 uint128) - (a3-2 uint128) - (t0-1 uint128) - ) + (v1-0 uint128) + (v1-1 uint128) + (v1-2 uint128) + (a1-1 uint128) + (a2-1 uint128) + (a3-1 uint128) + (a3-2 uint128) + (t0-1 uint128)) (let ((t0-0 (-> src vector 0 quad))) - (let ((t1-0 (-> src vector 1 quad))) - (let ((a2-0 (-> src vector 2 quad))) - (.pextlw v1-0 t1-0 t0-0) - (let ((a3-0 (-> src vector 3 quad))) - (.pextuw a1-1 t1-0 t0-0) - ;; (.mov r0-0 f31-0) not sure what this weird thing is. - ;; it has no effect, but they use it instead of nop sometimes? - (.pextlw t0-1 a3-0 a2-0) - ;; (.mov r0-1 f31-0) - (.pextuw a2-1 a3-0 a2-0) - ) - ) - ) - ) + (let ((t1-0 (-> src vector 1 quad))) + (let ((a2-0 (-> src vector 2 quad))) + (.pextlw v1-0 t1-0 t0-0) + (let ((a3-0 (-> src vector 3 quad))) + (.pextuw a1-1 t1-0 t0-0) + ;; (.mov r0-0 f31-0) not sure what this weird thing is. + ;; it has no effect, but they use it instead of nop sometimes? + (.pextlw t0-1 a3-0 a2-0) + ;; (.mov r0-1 f31-0) + (.pextuw a2-1 a3-0 a2-0))))) ;; (.mov r0-2 f31-0) (.pcpyld a3-1 t0-1 v1-0) ;; (.mov r0-3 f31-0) @@ -402,8 +315,7 @@ (.pcpyud v1-2 a1-1 a2-1) (set! (-> dst vector 2 quad) a3-2) (set! (-> dst vector 3 quad) v1-2) - dst - ) + dst) (defun matrix-inverse-of-rot-trans! ((dst matrix) (src matrix)) "Set dst = src^-1, assuming src is a homogeneous tranform with only rotation/translation. @@ -414,24 +326,20 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf8 :class vf) - ) + (vf8 :class vf)) (init-vf0-vector) ;; this makes the upper 3x3 correct because R^-1 = R^T for any rotation. ;; but now the transform is in the wrong spot, and needs to be rotated ;; and inverted. (matrix-transpose! dst src) - ;; load the inverted rotation (.lvf vf1 (&-> dst vector 0 quad)) (.lvf vf2 (&-> dst vector 1 quad)) (.lvf vf3 (&-> dst vector 2 quad)) - ;; set the right most column to [0, 0, 0] (.sub.vf vf1 vf1 vf1 :mask #b1000) (.sub.vf vf2 vf2 vf2 :mask #b1000) (.sub.vf vf3 vf3 vf3 :mask #b1000) - ;; load the original [translation, 1] (.lvf vf8 (&-> src vector 3 quad)) ;; rotate the translation @@ -448,9 +356,7 @@ (.svf (&-> dst vector 2 quad) vf3) ;; write back the negated and rotated translation. (.svf (&-> dst vector 3 quad) vf4) - dst - ) - ) + dst)) (defun matrix-4x4-inverse! ((dst matrix) (src matrix)) "Invert a 4x4 matrix. This assumes that the input is a homogeneous transform. @@ -486,9 +392,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) - + (vf9 :class vf)) ;; ADDED: the original implementation does math on vectors where some values are ;; uninitialized. It doesn't use the result, so there's no problem, but this ;; may cause strange slowdowns on x86 where doing math on NaNs can be extremely slow. @@ -507,7 +411,6 @@ (.xor.vf vf3 vf3 vf3) (.xor.vf vf4 vf4 vf4) (.xor.vf vf5 vf5 vf5) - (init-vf0-vector) (.lvf vf23 (&-> src vector 0 quad)) (.lvf vf24 (&-> src vector 1 quad)) @@ -570,9 +473,7 @@ (.add.mul.z.vf vf6 vf5 vf1 acc :mask #b111) (.svf (&-> dst vector 2 quad) vf5) (.svf (&-> dst vector 3 quad) vf6) - dst - ) - ) + dst)) (defun matrix-translate! ((dst matrix) (trans vector)) "Set dst to a homogeneous transform with only a translation of trans" @@ -580,9 +481,7 @@ (set! (-> dst data 12) (-> trans data 0)) (set! (-> dst data 13) (-> trans data 1)) (set! (-> dst data 14) (-> trans data 2)) - dst - ) - + dst) (defun matrix-translate+! ((dst matrix) (src matrix) (trans vector)) "Add the given translation to the translation of homogenous transform mat src @@ -594,10 +493,8 @@ ;; only copy the untouched rows if we are storing in somewhere that's not the source (set! (-> dst vector 0 quad) (-> src vector 0 quad)) (set! (-> dst vector 1 quad) (-> src vector 1 quad)) - (set! (-> dst vector 2 quad) (-> src vector 2 quad)) - ) - dst - ) + (set! (-> dst vector 2 quad) (-> src vector 2 quad))) + dst) (defun matrix-scale! ((dst matrix) (scale vector)) "Set dst to a homogenous transform with only a scale. The x,y,z components @@ -610,8 +507,7 @@ (set! (-> dst data 5) (-> scale data 1)) (set! (-> dst data 10) (-> scale data 2)) (set! (-> dst data 15) 1.0) - dst - ) + dst) (defun scale-matrix! ((dst matrix) (scale vector) (src matrix)) "Scale an existing matrix. Okay for dst = src. The scaling is applied per row. @@ -621,24 +517,21 @@ (vf5 :class vf) (vf6 :class vf) (vf7 :class vf) - (vf8 :class vf) - ) - (.lvf vf4 (&-> scale quad)) - (.lvf vf5 (&-> src vector 0 quad)) - (.lvf vf6 (&-> src vector 1 quad)) - (.lvf vf7 (&-> src vector 2 quad)) - (.lvf vf8 (&-> src vector 3 quad)) - (.mul.x.vf vf5 vf5 vf4) - (.mul.y.vf vf6 vf6 vf4) - (.mul.z.vf vf7 vf7 vf4) - (.mul.w.vf vf8 vf8 vf4) - (.svf (&-> dst vector 0 quad) vf5) - (.svf (&-> dst vector 1 quad) vf6) - (.svf (&-> dst vector 2 quad) vf7) - (.svf (&-> dst vector 3 quad) vf8) - dst - ) - ) + (vf8 :class vf)) + (.lvf vf4 (&-> scale quad)) + (.lvf vf5 (&-> src vector 0 quad)) + (.lvf vf6 (&-> src vector 1 quad)) + (.lvf vf7 (&-> src vector 2 quad)) + (.lvf vf8 (&-> src vector 3 quad)) + (.mul.x.vf vf5 vf5 vf4) + (.mul.y.vf vf6 vf6 vf4) + (.mul.z.vf vf7 vf7 vf4) + (.mul.w.vf vf8 vf8 vf4) + (.svf (&-> dst vector 0 quad) vf5) + (.svf (&-> dst vector 1 quad) vf6) + (.svf (&-> dst vector 2 quad) vf7) + (.svf (&-> dst vector 3 quad) vf8) + dst)) (defun matrix-inv-scale! ((dst matrix) (scale vector)) "Set dst to a homogeneous transform with only a scale. @@ -651,8 +544,7 @@ (set! (-> dst data 5) (/ 1.0 (-> scale data 1))) (set! (-> dst data 10) (/ 1.0 (-> scale data 2))) (set! (-> dst data 15) 1.0) - dst - ) + dst) (defun column-scale-matrix! ((dst matrix) (scale vector) (src matrix)) "Scale an existing matrix. Okay for dst = src. The scaling is applied column-wise. @@ -661,30 +553,26 @@ (vf5 :class vf) (vf6 :class vf) (vf7 :class vf) - (vf8 :class vf) - ) - (.lvf vf4 (&-> scale quad)) - (.lvf vf5 (&-> src vector 0 quad)) - (.lvf vf6 (&-> src vector 1 quad)) - (.lvf vf7 (&-> src vector 2 quad)) - (.lvf vf8 (&-> src vector 3 quad)) - (.mul.vf vf5 vf5 vf4) - (.mul.vf vf6 vf6 vf4) - (.mul.vf vf7 vf7 vf4) - (.mul.vf vf8 vf8 vf4) - (.svf (&-> dst vector 0 quad) vf5) - (.svf (&-> dst vector 1 quad) vf6) - (.svf (&-> dst vector 2 quad) vf7) - (.svf (&-> dst vector 3 quad) vf8) - dst - ) - ) + (vf8 :class vf)) + (.lvf vf4 (&-> scale quad)) + (.lvf vf5 (&-> src vector 0 quad)) + (.lvf vf6 (&-> src vector 1 quad)) + (.lvf vf7 (&-> src vector 2 quad)) + (.lvf vf8 (&-> src vector 3 quad)) + (.mul.vf vf5 vf5 vf4) + (.mul.vf vf6 vf6 vf4) + (.mul.vf vf7 vf7 vf4) + (.mul.vf vf8 vf8 vf4) + (.svf (&-> dst vector 0 quad) vf5) + (.svf (&-> dst vector 1 quad) vf6) + (.svf (&-> dst vector 2 quad) vf7) + (.svf (&-> dst vector 3 quad) vf8) + dst)) (defun matrix-rotate-x! ((dst matrix) (rot-deg float)) "Set dst to a homogeneous transform matrix for a rotation around the x-axis (degrees)" (let ((rot-sin (sin rot-deg)) - (rot-cos (cos rot-deg)) - ) + (rot-cos (cos rot-deg))) (set! (-> dst vector 0 quad) (the-as uint128 0)) (set! (-> dst vector 1 quad) (the-as uint128 0)) (set! (-> dst vector 2 quad) (the-as uint128 0)) @@ -693,17 +581,14 @@ (set! (-> dst data 5) rot-cos) (set! (-> dst data 6) rot-sin) (set! (-> dst data 9) (- rot-sin)) - (set! (-> dst data 10) rot-cos) - ) + (set! (-> dst data 10) rot-cos)) (set! (-> dst data 15) 1.0) - dst - ) + dst) (defun matrix-rotate-y! ((dst matrix) (rot-deg float)) "Set dst to a homoegeneous transform matrix for a rotation around the y axis (degrees)" (let ((rot-sin (sin rot-deg)) - (rot-cos (cos rot-deg)) - ) + (rot-cos (cos rot-deg))) (set! (-> dst vector 0 quad) (the-as uint128 0)) (set! (-> dst vector 1 quad) (the-as uint128 0)) (set! (-> dst vector 2 quad) (the-as uint128 0)) @@ -712,17 +597,14 @@ (set! (-> dst data 2) (- rot-sin)) (set! (-> dst data 5) 1.0) (set! (-> dst data 8) rot-sin) - (set! (-> dst data 10) rot-cos) - ) + (set! (-> dst data 10) rot-cos)) (set! (-> dst data 15) 1.0) - dst - ) + dst) (defun matrix-rotate-z! ((dst matrix) (rot-deg float)) "Set dst to a homogeneous transform matrix for a rotation around the z-axis (degrees)" (let ((rot-sin (sin rot-deg)) - (rot-cos (cos rot-deg)) - ) + (rot-cos (cos rot-deg))) (set! (-> dst vector 0 quad) (the-as uint128 0)) (set! (-> dst vector 1 quad) (the-as uint128 0)) (set! (-> dst vector 2 quad) (the-as uint128 0)) @@ -730,12 +612,10 @@ (set! (-> dst data 0) rot-cos) (set! (-> dst data 1) rot-sin) (set! (-> dst data 4) (- rot-sin)) - (set! (-> dst data 5) rot-cos) - ) + (set! (-> dst data 5) rot-cos)) (set! (-> dst data 10) 1.0) (set! (-> dst data 15) 1.0) - dst - ) + dst) (defun matrix-rotate-zyx! ((dst matrix) (rot-xyz-deg vector)) "Rotate in z,y,x order." @@ -749,10 +629,8 @@ (matrix*! rot-mat temp-mat dst) (matrix-rotate-z! temp-mat (-> rot-xyz-deg data 2)) ;; dst = z*yz - (matrix*! dst temp-mat rot-mat) - ) - dst - ) + (matrix*! dst temp-mat rot-mat)) + dst) (defun matrix-rotate-xyz! ((dst matrix) (rot-xyz-deg vector)) "Rotate in x,y,z order" @@ -762,10 +640,8 @@ (matrix-rotate-y! temp-mat (-> rot-xyz-deg data 1)) (matrix*! rot-mat temp-mat dst) (matrix-rotate-x! temp-mat (-> rot-xyz-deg data 0)) - (matrix*! dst temp-mat rot-mat) - ) - dst - ) + (matrix*! dst temp-mat rot-mat)) + dst) (defun matrix-rotate-zxy! ((dst matrix) (rot-xyz-deg vector)) "Rotate in z,x,y order" @@ -775,10 +651,8 @@ (matrix-rotate-x! temp-mat (-> rot-xyz-deg data 0)) (matrix*! rot-mat temp-mat dst) (matrix-rotate-z! temp-mat (-> rot-xyz-deg data 2)) - (matrix*! dst temp-mat rot-mat) - ) - dst - ) + (matrix*! dst temp-mat rot-mat)) + dst) (defun matrix-rotate-yxz! ((dst matrix) (rot-xyz-deg vector)) "Rotate in y,x,z order." @@ -788,10 +662,8 @@ (matrix-rotate-x! temp-mat (-> rot-xyz-deg data 0)) (matrix*! rot-mat temp-mat dst) (matrix-rotate-y! temp-mat (-> rot-xyz-deg data 1)) - (matrix*! dst temp-mat rot-mat) - ) - dst - ) + (matrix*! dst temp-mat rot-mat)) + dst) (defun matrix-rotate-yzx! ((dst matrix) (rot-xyz-deg vector)) "Rotate in y,z,x order" @@ -801,36 +673,25 @@ (matrix-rotate-x! temp-mat (-> rot-xyz-deg data 2)) (matrix*! rot-mat temp-mat dst) (matrix-rotate-y! temp-mat (-> rot-xyz-deg data 1)) - (matrix*! dst temp-mat rot-mat) - ) - dst - ) + (matrix*! dst temp-mat rot-mat)) + dst) (defun matrix-rotate-yxy! ((dst matrix) (rots-deg vector)) "Rotate. I believe in yxy order? Compared to the other rotations, this one is quite a bit more optimized and avoid repeated trig operations." (let ((sincos-input (new 'stack-no-clear 'vector)) (sin-vec (new 'stack-no-clear 'vector)) - (cos-vec (new 'stack-no-clear 'vector)) - ) - + (cos-vec (new 'stack-no-clear 'vector))) ;; the vector-sincos! lets us take the sine and cosine of 4 floats at a time. ;; it uses vector operations and reuses the taylor series coefficients to do this quickly - (set-vector! - sincos-input - (-> rots-deg x) - (- (-> rots-deg y) (-> rots-deg z)) - (-> rots-deg z) - 1.0 - ) + (set-vector! sincos-input (-> rots-deg x) (- (-> rots-deg y) (-> rots-deg z)) (-> rots-deg z) 1.0) (vector-sincos! sin-vec cos-vec sincos-input) (let ((cos-y (-> cos-vec data 1)) (sin-y (-> sin-vec data 1)) (cos-x (-> cos-vec data 0)) (sin-x (-> sin-vec data 0)) (cos-z (-> cos-vec data 2)) - (sin-z (-> sin-vec data 2)) - ) + (sin-z (-> sin-vec data 2))) ;; just directly set the coefficients instead of doing wasteful multiplies. (set! (-> dst data 0) (- (* cos-y cos-z) (* (* sin-y cos-x) sin-z))) (set! (-> dst data 1) (* sin-y sin-x)) @@ -842,16 +703,13 @@ (set! (-> dst data 7) 0.0) (set! (-> dst data 8) (+ (* sin-y cos-z) (* (* cos-y cos-x) sin-z))) (set! (-> dst data 9) (- (* cos-y sin-x))) - (set! (-> dst data 10) (- (* (* cos-y cos-x) cos-z) (* sin-y sin-z))) - ) - ) + (set! (-> dst data 10) (- (* (* cos-y cos-x) cos-z) (* sin-y sin-z))))) (set! (-> dst data 11) 0.0) (set! (-> dst data 12) 0.0) (set! (-> dst data 13) 0.0) (set! (-> dst data 14) 0.0) (set! (-> dst data 15) 1.0) - dst - ) + dst) (defun matrix-rotate-yx! ((dst matrix) (rot-y-deg float) (rot-x-deg float)) "Rotate by y then x." @@ -859,15 +717,13 @@ ;; this is weird. probably there is an inlined ctor in a new 'stack expression, used directly ;; in an argument. like (matrix-rotate-x! (new 'stack-with-ctor 'matrix) ...) (matrix*! dst (matrix-rotate-x! (new-stack-matrix0) rot-x-deg) dst) - dst - ) + dst) (defun matrix-axis-sin-cos-vu! ((dst matrix) (axis vector) (s float) (c float)) "Create an axis-angle rotation matrix. But given the sin/cos of the angle." ;; this is unused and basically identital to the non-VU version, so I'm leaving this out. (/ 0 0) - (none) - ) + (none)) (defun matrix-axis-sin-cos! ((dst matrix) (axis vector) (s float) (c float)) "Create an axis-angle rotation matrix. But given the sin/cos of the angle." @@ -876,7 +732,6 @@ ;;mtc1 f0, a2 ;;mtc1 f1, a3 ;;sll r0, r0, 0 - ;; input scramble: ;; - v0 = dst ;; - v1 = axis @@ -899,31 +754,23 @@ ;; initialize constant vectors (init-vf0-vector) (.xor.p r0 r0 r0) - ;; this is an overly complicated check to see if xyz = 0. - - (let ((a0 65535) ;; ori a0, r0, 65535 + (let ((a0 65535) ;; ori a0, r0, 65535 (v1 (-> axis quad))) ;; lq v1, 0(v1) - ;; this a0 constant has ffff in the upper 16 bits to mask out w, later on. ;; dsll32 a0, a0, 16 (set! a0 (shl a0 48)) ;; a0 = ffff'0000'0000'0000 - ;;mfc1 a1, f1 ;;qmtc2.i vf6, a1 (.mov vf6 c) ;; will set vf6.x to cosine. - ;;pceqw a1, v1, r0 ;; compare for equality with zero. ;; this will set 32-bits for each component. (.pceqw a1 v1 r0) - ;; so we pack: [upper64, w0?16, z0?16, y0?16, x0?16] (.ppach a1 r0 a1) - ;;qmtc2.i vf1, v1 (.mov vf1 v1) ;; should be quad move! - ;;or v1, a1, a0 ;; make it seem like w is zero. If x,y,z = 0, but w != 0, we want ;; it to act like zero. @@ -931,21 +778,15 @@ ;;mfc1 a0, f0 ;;qmtc2.i vf5, a0 (.mov vf5 s) - ;;daddiu v1, v1, 1 ;; if all is zero, this will overflow and give us 0. (+! xyz-zero 1) - ;;vsubx.w vf5, vf0, vf6 (.sub.x.vf vf5 vf0 vf6 :mask #b1000) - ;;beq v1, r0, L15 ;;vaddx.y vf5, vf0, vf6 (.add.x.vf vf5 vf0 vf6 :mask #b0010) - (when-goto (zero? xyz-zero) zero-case) - ) - ) - + (when-goto (zero? xyz-zero) zero-case))) ;; Nonzero case: ;; vsubw.w vf2, vf0, vf0 ;; vsubw.w vf3, vf0, vf0 @@ -953,58 +794,40 @@ (.xor.vf vf2 vf2 vf2) (.xor.vf vf3 vf3 vf3) (.xor.vf vf4 vf4 vf4) - ;;vmulx.xyz vf11, vf1, vf5 (.mul.x.vf vf11 vf1 vf5 :mask #b0111) - ;;vaddy.x vf7, vf0, vf5 (.add.y.vf vf7 vf0 vf5 :mask #b0001) - ;;vaddy.y vf8, vf0, vf5 (.add.y.vf vf8 vf0 vf5 :mask #b0010) - ;;vaddy.z vf9, vf0, vf5 (.add.y.vf vf9 vf0 vf5 :mask #b0100) - ;;vmulw.xyz vf10, vf1, vf5 (.mul.w.vf vf10 vf1 vf5 :mask #b0111) - ;;vsubz.y vf7, vf0, vf11 (.sub.z.vf vf7 vf0 vf11 :mask #b0010) - ;;vaddy.z vf7, vf0, vf11 (.add.y.vf vf7 vf0 vf11 :mask #b0100) - ;;vaddz.x vf8, vf0, vf11 (.add.z.vf vf8 vf0 vf11 :mask #b0001) - ;;vsubx.z vf8, vf0, vf11 (.sub.x.vf vf8 vf0 vf11 :mask #b0100) - ;;vmulx.xyz vf2, vf10, vf1 (.mul.x.vf vf2 vf10 vf1 :mask #b0111) - ;;vmuly.xyz vf3, vf10, vf1 (.mul.y.vf vf3 vf10 vf1 :mask #b0111) - ;;vmulz.xyz vf4, vf10, vf1 (.mul.z.vf vf4 vf10 vf1 :mask #b0111) - ;;vsuby.x vf9, vf0, vf11 (.sub.y.vf vf9 vf0 vf11 :mask #b0001) - ;;vaddx.y vf9, vf0, vf11 (.add.x.vf vf9 vf0 vf11 :mask #b0010) - ;;vadd.xyz vf2, vf2, vf7 (.add.vf vf2 vf2 vf7 :mask #b0111) - ;;vadd.xyz vf3, vf3, vf8 (.add.vf vf3 vf3 vf8 :mask #b0111) - ;;vadd.xyz vf4, vf4, vf9 (.add.vf vf4 vf4 vf9 :mask #b0111) - ;;sqc2 vf2, 0(v0) ;;sqc2 vf3, 16(v0) ;;sqc2 vf0, 48(v0) @@ -1029,16 +852,13 @@ ;;sll r0, r0, 0 ;;sq a1, 16(v0) (matrix-identity! dst) - (label end) - ) - dst - ) + (label end)) + dst) (defun matrix-axis-angle! ((dst matrix) (axis vector) (angle-deg float)) "Create an axis-angle rotation matrix." (matrix-axis-sin-cos! dst axis (sin angle-deg) (cos angle-deg)) - (none) - ) + (none)) (defun matrix-lerp! ((dst matrix) (src1 matrix) (src2 matrix) (alpha float)) "Lerp an entire matrix, coefficient-wise." @@ -1050,8 +870,7 @@ (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) ;; this uses src1 + alpha * (src2 - src1) ;; it seems like src1 * (1 - alpha) + src2 * alpha might have been faster? (.mov vf9 alpha) @@ -1079,9 +898,7 @@ (.svf (&-> dst vector 1 quad) vf2) (.svf (&-> dst vector 2 quad) vf3) (.svf (&-> dst vector 3 quad) vf4) - dst - ) - ) + dst)) (defun matrix-3x3-determinant ((mat matrix)) "Compute the determinant of a 3x3 matrix" @@ -1093,14 +910,9 @@ (f9-0 (-> mat data 6)) (f3-0 (-> mat data 8)) (f6-0 (-> mat data 9)) - (f0-0 (-> mat data 10)) - ) - (- - (+ (+ (* (* f8-0 f5-0) f0-0) (* (* f1-0 f9-0) f3-0)) (* (* f4-0 f2-0) f6-0)) - (+ (+ (* (* f8-0 f9-0) f6-0) (* (* f4-0 f5-0) f3-0)) (* (* f1-0 f2-0) f0-0)) - ) - ) - ) + (f0-0 (-> mat data 10))) + (- (+ (+ (* (* f8-0 f5-0) f0-0) (* (* f1-0 f9-0) f3-0)) (* (* f4-0 f2-0) f6-0)) + (+ (+ (* (* f8-0 f9-0) f6-0) (* (* f4-0 f5-0) f3-0)) (* (* f1-0 f2-0) f0-0))))) (defun matrix3-determinant ((arg0 matrix)) "Unused. Not sure if this has limitations compared to the above version." @@ -1109,8 +921,7 @@ (vf10 :class vf) (vf11 :class vf) (vf12 :class vf) - (vf13 :class vf) - ) + (vf13 :class vf)) (.lvf vf11 (&-> arg0 vector 1 quad)) (.lvf vf12 (&-> arg0 vector 2 quad)) (.lvf vf10 (&-> arg0 vector 0 quad)) @@ -1120,79 +931,55 @@ (.add.y.vf vf13 vf13 vf13 :mask #b1) (.add.z.vf vf13 vf13 vf13 :mask #b1) (.mov v0-0 vf13) - (the-as float v0-0) - ) - ) + (the-as float v0-0))) (defun matrix-3x3-inverse! ((dst matrix) (src matrix)) "Compute the inverse of a 3x3 matrix. Not very efficient. Requires src != dst." (let ((f0-0 (matrix-3x3-determinant src))) (set! (-> dst vector 0 x) - (/ (- (* (-> src vector 1 y) (-> src vector 2 z)) (* (-> src vector 1 z) (-> src vector 2 y))) f0-0) - ) + (/ (- (* (-> src vector 1 y) (-> src vector 2 z)) (* (-> src vector 1 z) (-> src vector 2 y))) f0-0)) (set! (-> dst vector 1 x) - (/ (- (* (-> src vector 1 z) (-> src vector 2 x)) (* (-> src vector 1 x) (-> src vector 2 z))) f0-0) - ) + (/ (- (* (-> src vector 1 z) (-> src vector 2 x)) (* (-> src vector 1 x) (-> src vector 2 z))) f0-0)) (set! (-> dst vector 2 x) - (/ (- (* (-> src vector 1 x) (-> src vector 2 y)) (* (-> src vector 1 y) (-> src vector 2 x))) f0-0) - ) + (/ (- (* (-> src vector 1 x) (-> src vector 2 y)) (* (-> src vector 1 y) (-> src vector 2 x))) f0-0)) (set! (-> dst vector 0 y) - (/ (- (* (-> src vector 2 y) (-> src vector 0 z)) (* (-> src vector 2 z) (-> src vector 0 y))) f0-0) - ) + (/ (- (* (-> src vector 2 y) (-> src vector 0 z)) (* (-> src vector 2 z) (-> src vector 0 y))) f0-0)) (set! (-> dst vector 1 y) - (/ (- (* (-> src vector 2 z) (-> src vector 0 x)) (* (-> src vector 2 x) (-> src vector 0 z))) f0-0) - ) + (/ (- (* (-> src vector 2 z) (-> src vector 0 x)) (* (-> src vector 2 x) (-> src vector 0 z))) f0-0)) (set! (-> dst vector 2 y) - (/ (- (* (-> src vector 2 x) (-> src vector 0 y)) (* (-> src vector 2 y) (-> src vector 0 x))) f0-0) - ) + (/ (- (* (-> src vector 2 x) (-> src vector 0 y)) (* (-> src vector 2 y) (-> src vector 0 x))) f0-0)) (set! (-> dst vector 0 z) - (/ (- (* (-> src vector 0 y) (-> src vector 1 z)) (* (-> src vector 0 z) (-> src vector 1 y))) f0-0) - ) + (/ (- (* (-> src vector 0 y) (-> src vector 1 z)) (* (-> src vector 0 z) (-> src vector 1 y))) f0-0)) (set! (-> dst vector 1 z) - (/ (- (* (-> src vector 0 z) (-> src vector 1 x)) (* (-> src vector 0 x) (-> src vector 1 z))) f0-0) - ) + (/ (- (* (-> src vector 0 z) (-> src vector 1 x)) (* (-> src vector 0 x) (-> src vector 1 z))) f0-0)) (set! (-> dst vector 2 z) - (/ (- (* (-> src vector 0 x) (-> src vector 1 y)) (* (-> src vector 0 y) (-> src vector 1 x))) f0-0) - ) - ) - dst - ) + (/ (- (* (-> src vector 0 x) (-> src vector 1 y)) (* (-> src vector 0 y) (-> src vector 1 x))) f0-0))) + dst) (defun matrix-3x3-inverse-transpose! ((dst matrix) (src matrix)) "Invert and transpose. Requires dst != src." (let ((f0-0 (matrix-3x3-determinant src))) (set! (-> dst vector 0 x) - (/ (- (* (-> src vector 1 y) (-> src vector 2 z)) (* (-> src vector 1 z) (-> src vector 2 y))) f0-0) - ) + (/ (- (* (-> src vector 1 y) (-> src vector 2 z)) (* (-> src vector 1 z) (-> src vector 2 y))) f0-0)) (set! (-> dst vector 0 y) - (/ (- (* (-> src vector 1 z) (-> src vector 2 x)) (* (-> src vector 1 x) (-> src vector 2 z))) f0-0) - ) + (/ (- (* (-> src vector 1 z) (-> src vector 2 x)) (* (-> src vector 1 x) (-> src vector 2 z))) f0-0)) (set! (-> dst vector 0 z) - (/ (- (* (-> src vector 1 x) (-> src vector 2 y)) (* (-> src vector 1 y) (-> src vector 2 x))) f0-0) - ) + (/ (- (* (-> src vector 1 x) (-> src vector 2 y)) (* (-> src vector 1 y) (-> src vector 2 x))) f0-0)) (set! (-> dst vector 1 x) - (/ (- (* (-> src vector 2 y) (-> src vector 0 z)) (* (-> src vector 2 z) (-> src vector 0 y))) f0-0) - ) + (/ (- (* (-> src vector 2 y) (-> src vector 0 z)) (* (-> src vector 2 z) (-> src vector 0 y))) f0-0)) (set! (-> dst vector 1 y) - (/ (- (* (-> src vector 2 z) (-> src vector 0 x)) (* (-> src vector 2 x) (-> src vector 0 z))) f0-0) - ) + (/ (- (* (-> src vector 2 z) (-> src vector 0 x)) (* (-> src vector 2 x) (-> src vector 0 z))) f0-0)) (set! (-> dst vector 1 z) - (/ (- (* (-> src vector 2 x) (-> src vector 0 y)) (* (-> src vector 2 y) (-> src vector 0 x))) f0-0) - ) + (/ (- (* (-> src vector 2 x) (-> src vector 0 y)) (* (-> src vector 2 y) (-> src vector 0 x))) f0-0)) (set! (-> dst vector 2 x) - (/ (- (* (-> src vector 0 y) (-> src vector 1 z)) (* (-> src vector 0 z) (-> src vector 1 y))) f0-0) - ) + (/ (- (* (-> src vector 0 y) (-> src vector 1 z)) (* (-> src vector 0 z) (-> src vector 1 y))) f0-0)) (set! (-> dst vector 2 y) - (/ (- (* (-> src vector 0 z) (-> src vector 1 x)) (* (-> src vector 0 x) (-> src vector 1 z))) f0-0) - ) + (/ (- (* (-> src vector 0 z) (-> src vector 1 x)) (* (-> src vector 0 x) (-> src vector 1 z))) f0-0)) (set! (-> dst vector 2 z) - (/ (- (* (-> src vector 0 x) (-> src vector 1 y)) (* (-> src vector 0 y) (-> src vector 1 x))) f0-0) - ) - ) - dst - ) + (/ (- (* (-> src vector 0 x) (-> src vector 1 y)) (* (-> src vector 0 y) (-> src vector 1 x))) f0-0))) + dst) (defun matrix3-inverse-transpose! ((dst matrix) (src matrix)) "Unused. Not sure if this has limitations compared to other version." @@ -1205,8 +992,7 @@ (vf12 :class vf) (vf13 :class vf) (vf14 :class vf) - (vf15 :class vf) - ) + (vf15 :class vf)) (init-vf0-vector) ;; added to make the right most column always zero. ;; it seems like they didn't care about these values @@ -1215,7 +1001,6 @@ (.xor.vf vf13 vf13 vf13) (.xor.vf vf14 vf14 vf14) (.xor.vf vf15 vf15 vf15) - (.lvf vf10 (&-> src vector 0 quad)) (.lvf vf11 (&-> src vector 1 quad)) (.lvf vf12 (&-> src vector 2 quad)) @@ -1245,9 +1030,7 @@ (.svf (&-> dst vector 0 quad) vf13) (.svf (&-> dst vector 1 quad) vf14) (.svf (&-> dst vector 2 quad) vf15) - dst - ) - ) + dst)) (defun matrix-4x4-determinant ((dst matrix)) "Take the determinant of a 4x4 matrix, but this is wrong." @@ -1266,411 +1049,251 @@ (f0-0 (-> dst vector 3 x)) (f7-0 (-> dst vector 3 y)) (f4-0 (-> dst vector 3 z)) - (f12-0 (-> dst vector 3 w)) - ) - (- - (+ - (* f15-0 f6-0 f8-0 f12-0) - (* f15-0 f3-0 f13-0 f7-0) - (* f15-0 f11-0 f1-0 f4-0) - (* f14-0 f9-0 f13-0 f4-0) - (* f14-0 f3-0 f5-0 f4-0) - (* f14-0 f11-0 f8-0 f0-0) - (* f10-0 f9-0 f1-0 f12-0) - (* f10-0 f6-0 f13-0 f0-0) - (* f10-0 f11-0 f5-0 f7-0) - (* f2-0 f9-0 f1-0 f4-0) - (* f2-0 f6-0 f8-0 f0-0) - (* f2-0 f3-0 f5-0 f7-0) - ) - (+ - (* f15-0 f6-0 f13-0 f4-0) - (* f15-0 f3-0 f1-0 f12-0) - (* f15-0 f11-0 f8-0 f7-0) - (* f14-0 f9-0 f8-0 f12-0) - (* f14-0 f3-0 f13-0 f0-0) - (* f14-0 f11-0 f5-0 f4-0) - (* f10-0 f9-0 f13-0 f7-0) - (* f10-0 f6-0 f5-0 f12-0) - (* f10-0 f11-0 f1-0 f0-0) - (* f2-0 f9-0 f8-0 f7-0) - (* f2-0 f6-0 f5-0 f4-0) - (* f2-0 f3-0 f1-0 f0-0) - ) - ) - ) - ) + (f12-0 (-> dst vector 3 w))) + (- (+ (* f15-0 f6-0 f8-0 f12-0) + (* f15-0 f3-0 f13-0 f7-0) + (* f15-0 f11-0 f1-0 f4-0) + (* f14-0 f9-0 f13-0 f4-0) + (* f14-0 f3-0 f5-0 f4-0) + (* f14-0 f11-0 f8-0 f0-0) + (* f10-0 f9-0 f1-0 f12-0) + (* f10-0 f6-0 f13-0 f0-0) + (* f10-0 f11-0 f5-0 f7-0) + (* f2-0 f9-0 f1-0 f4-0) + (* f2-0 f6-0 f8-0 f0-0) + (* f2-0 f3-0 f5-0 f7-0)) + (+ (* f15-0 f6-0 f13-0 f4-0) + (* f15-0 f3-0 f1-0 f12-0) + (* f15-0 f11-0 f8-0 f7-0) + (* f14-0 f9-0 f8-0 f12-0) + (* f14-0 f3-0 f13-0 f0-0) + (* f14-0 f11-0 f5-0 f4-0) + (* f10-0 f9-0 f13-0 f7-0) + (* f10-0 f6-0 f5-0 f12-0) + (* f10-0 f11-0 f1-0 f0-0) + (* f2-0 f9-0 f8-0 f7-0) + (* f2-0 f6-0 f5-0 f4-0) + (* f2-0 f3-0 f1-0 f0-0))))) (defun matrix-4x4-inverse-transpose! ((dst matrix) (src matrix)) "Invert and transpose an entire 4x4. I think has no restrictions, other than dst != src. Unused. The answer is wrong. The determinant function is wrong." - (let ((f0-0 (matrix-4x4-determinant src))) - (let ((f9-0 (-> src vector 1 y)) - (f2-0 (-> src vector 1 z)) - (f5-0 (-> src vector 1 w)) - (f3-0 (-> src vector 2 y)) - (f6-0 (-> src vector 2 z)) - (f10-0 (-> src vector 2 w)) - (f4-0 (-> src vector 3 y)) - (f7-0 (-> src vector 3 z)) - (f1-0 (-> src vector 3 w)) - ) - (set! - (-> dst vector 0 x) - (/ - (- - (+ (* f9-0 f6-0 f1-0) (* f2-0 f10-0 f4-0) (* f5-0 f3-0 f7-0)) - (+ (* f9-0 f10-0 f7-0) (* f5-0 f6-0 f4-0) (* f2-0 f3-0 f1-0)) - ) - f0-0 - ) - ) - ) - (let ((f9-2 (-> src vector 1 x)) - (f2-2 (-> src vector 1 z)) - (f5-2 (-> src vector 1 w)) - (f3-1 (-> src vector 2 x)) - (f6-1 (-> src vector 2 z)) - (f10-1 (-> src vector 2 w)) - (f4-3 (-> src vector 3 x)) - (f7-2 (-> src vector 3 z)) - (f1-6 (-> src vector 3 w)) - ) - (set! - (-> dst vector 0 y) - (- - (/ - (- - (+ (* f9-2 f6-1 f1-6) (* f2-2 f10-1 f4-3) (* f5-2 f3-1 f7-2)) - (+ (* f9-2 f10-1 f7-2) (* f5-2 f6-1 f4-3) (* f2-2 f3-1 f1-6)) - ) - f0-0 - ) - ) - ) - ) - (let ((f9-4 (-> src vector 1 x)) - (f2-4 (-> src vector 1 y)) - (f5-4 (-> src vector 1 w)) - (f3-2 (-> src vector 2 x)) - (f6-2 (-> src vector 2 y)) - (f10-2 (-> src vector 2 w)) - (f4-6 (-> src vector 3 x)) - (f7-4 (-> src vector 3 y)) - (f1-13 (-> src vector 3 w)) - ) - (set! - (-> dst vector 0 z) - (/ - (- - (+ (* f9-4 f6-2 f1-13) (* f2-4 f10-2 f4-6) (* f5-4 f3-2 f7-4)) - (+ (* f9-4 f10-2 f7-4) (* f5-4 f6-2 f4-6) (* f2-4 f3-2 f1-13)) - ) - f0-0 - ) - ) - ) - (let ((f9-6 (-> src vector 1 x)) - (f2-6 (-> src vector 1 y)) - (f5-6 (-> src vector 1 z)) - (f3-3 (-> src vector 2 x)) - (f6-3 (-> src vector 2 y)) - (f10-3 (-> src vector 2 z)) - (f4-9 (-> src vector 3 x)) - (f7-6 (-> src vector 3 y)) - (f1-19 (-> src vector 3 z)) - ) - (set! - (-> dst vector 0 w) - (- - (/ - (- - (+ (* f9-6 f6-3 f1-19) (* f2-6 f10-3 f4-9) (* f5-6 f3-3 f7-6)) - (+ (* f9-6 f10-3 f7-6) (* f5-6 f6-3 f4-9) (* f2-6 f3-3 f1-19)) - ) - f0-0 - ) - ) - ) - ) - (let ((f9-8 (-> src vector 0 y)) - (f2-8 (-> src vector 0 z)) - (f5-8 (-> src vector 0 w)) - (f3-4 (-> src vector 2 y)) - (f6-4 (-> src vector 2 z)) - (f10-4 (-> src vector 2 w)) - (f4-12 (-> src vector 3 y)) - (f7-8 (-> src vector 3 z)) - (f1-26 (-> src vector 3 w)) - ) - (set! - (-> dst vector 1 x) - (- - (/ - (- - (+ (* f9-8 f6-4 f1-26) (* f2-8 f10-4 f4-12) (* f5-8 f3-4 f7-8)) - (+ (* f9-8 f10-4 f7-8) (* f5-8 f6-4 f4-12) (* f2-8 f3-4 f1-26)) - ) - f0-0 - ) - ) - ) - ) - (let ((f9-10 (-> src vector 0 x)) - (f2-10 (-> src vector 0 z)) - (f5-10 (-> src vector 0 w)) - (f3-5 (-> src vector 2 x)) - (f6-5 (-> src vector 2 z)) - (f10-5 (-> src vector 2 w)) - (f4-15 (-> src vector 3 x)) - (f7-10 (-> src vector 3 z)) - (f1-33 (-> src vector 3 w)) - ) - (set! - (-> dst vector 1 y) - (/ - (- - (+ (* f9-10 f6-5 f1-33) (* f2-10 f10-5 f4-15) (* f5-10 f3-5 f7-10)) - (+ (* f9-10 f10-5 f7-10) (* f5-10 f6-5 f4-15) (* f2-10 f3-5 f1-33)) - ) - f0-0 - ) - ) - ) - (let ((f9-12 (-> src vector 0 x)) - (f2-12 (-> src vector 0 y)) - (f5-12 (-> src vector 0 w)) - (f3-6 (-> src vector 2 x)) - (f6-6 (-> src vector 2 y)) - (f10-6 (-> src vector 2 w)) - (f4-18 (-> src vector 3 x)) - (f7-12 (-> src vector 3 y)) - (f1-39 (-> src vector 3 w)) - ) - (set! - (-> dst vector 1 z) - (- - (/ - (- - (+ (* f9-12 f6-6 f1-39) (* f2-12 f10-6 f4-18) (* f5-12 f3-6 f7-12)) - (+ (* f9-12 f10-6 f7-12) (* f5-12 f6-6 f4-18) (* f2-12 f3-6 f1-39)) - ) - f0-0 - ) - ) - ) - ) - (let ((f9-14 (-> src vector 0 x)) - (f2-14 (-> src vector 0 y)) - (f5-14 (-> src vector 0 z)) - (f3-7 (-> src vector 2 x)) - (f6-7 (-> src vector 2 y)) - (f10-7 (-> src vector 2 z)) - (f4-21 (-> src vector 3 x)) - (f7-14 (-> src vector 3 y)) - (f1-46 (-> src vector 3 z)) - ) - (set! - (-> dst vector 1 w) - (/ - (- - (+ (* f9-14 f6-7 f1-46) (* f2-14 f10-7 f4-21) (* f5-14 f3-7 f7-14)) - (+ (* f9-14 f10-7 f7-14) (* f5-14 f6-7 f4-21) (* f2-14 f3-7 f1-46)) - ) - f0-0 - ) - ) - ) - (let ((f9-16 (-> src vector 0 y)) - (f2-16 (-> src vector 0 z)) - (f5-16 (-> src vector 0 w)) - (f3-8 (-> src vector 1 y)) - (f6-8 (-> src vector 1 z)) - (f10-8 (-> src vector 1 w)) - (f4-24 (-> src vector 3 y)) - (f7-16 (-> src vector 3 z)) - (f1-52 (-> src vector 3 w)) - ) - (set! - (-> dst vector 2 x) - (/ - (- - (+ (* f9-16 f6-8 f1-52) (* f2-16 f10-8 f4-24) (* f5-16 f3-8 f7-16)) - (+ (* f9-16 f10-8 f7-16) (* f5-16 f6-8 f4-24) (* f2-16 f3-8 f1-52)) - ) - f0-0 - ) - ) - ) - (let ((f9-18 (-> src vector 0 x)) - (f2-18 (-> src vector 0 z)) - (f5-18 (-> src vector 0 w)) - (f3-9 (-> src vector 1 x)) - (f6-9 (-> src vector 1 z)) - (f10-9 (-> src vector 1 w)) - (f4-27 (-> src vector 3 x)) - (f7-18 (-> src vector 3 z)) - (f1-58 (-> src vector 3 w)) - ) - (set! - (-> dst vector 2 y) - (- - (/ - (- - (+ (* f9-18 f6-9 f1-58) (* f2-18 f10-9 f4-27) (* f5-18 f3-9 f7-18)) - (+ (* f9-18 f10-9 f7-18) (* f5-18 f6-9 f4-27) (* f2-18 f3-9 f1-58)) - ) - f0-0 - ) - ) - ) - ) - (let ((f9-20 (-> src vector 0 x)) - (f2-20 (-> src vector 0 y)) - (f5-20 (-> src vector 0 w)) - (f3-10 (-> src vector 1 x)) - (f6-10 (-> src vector 1 y)) - (f10-10 (-> src vector 1 w)) - (f4-30 (-> src vector 3 x)) - (f7-20 (-> src vector 3 y)) - (f1-65 (-> src vector 3 w)) - ) - (set! - (-> dst vector 2 z) - (/ - (- - (+ (* f9-20 f6-10 f1-65) (* f2-20 f10-10 f4-30) (* f5-20 f3-10 f7-20)) - (+ (* f9-20 f10-10 f7-20) (* f5-20 f6-10 f4-30) (* f2-20 f3-10 f1-65)) - ) - f0-0 - ) - ) - ) - (let ((f9-22 (-> src vector 0 x)) - (f2-22 (-> src vector 0 y)) - (f5-22 (-> src vector 0 z)) - (f3-11 (-> src vector 1 x)) - (f6-11 (-> src vector 1 y)) - (f10-11 (-> src vector 1 z)) - (f4-33 (-> src vector 3 x)) - (f7-22 (-> src vector 3 y)) - (f1-71 (-> src vector 3 z)) - ) - (set! - (-> dst vector 2 w) - (- - (/ - (- - (+ (* f9-22 f6-11 f1-71) (* f2-22 f10-11 f4-33) (* f5-22 f3-11 f7-22)) - (+ (* f9-22 f10-11 f7-22) (* f5-22 f6-11 f4-33) (* f2-22 f3-11 f1-71)) - ) - f0-0 - ) - ) - ) - ) - (let ((f9-24 (-> src vector 0 y)) - (f2-24 (-> src vector 0 z)) - (f5-24 (-> src vector 0 w)) - (f3-12 (-> src vector 1 y)) - (f6-12 (-> src vector 1 z)) - (f10-12 (-> src vector 1 w)) - (f4-36 (-> src vector 2 y)) - (f7-24 (-> src vector 2 z)) - (f1-78 (-> src vector 2 w)) - ) - (set! - (-> dst vector 3 x) - (- - (/ - (- - (+ (* f9-24 f6-12 f1-78) (* f2-24 f10-12 f4-36) (* f5-24 f3-12 f7-24)) - (+ (* f9-24 f10-12 f7-24) (* f5-24 f6-12 f4-36) (* f2-24 f3-12 f1-78)) - ) - f0-0 - ) - ) - ) - ) - (let ((f9-26 (-> src vector 0 x)) - (f2-26 (-> src vector 0 z)) - (f5-26 (-> src vector 0 w)) - (f3-13 (-> src vector 1 x)) - (f6-13 (-> src vector 1 z)) - (f10-13 (-> src vector 1 w)) - (f4-39 (-> src vector 2 x)) - (f7-26 (-> src vector 2 z)) - (f1-85 (-> src vector 2 w)) - ) - (set! - (-> dst vector 3 y) - (/ - (- - (+ (* f9-26 f6-13 f1-85) (* f2-26 f10-13 f4-39) (* f5-26 f3-13 f7-26)) - (+ (* f9-26 f10-13 f7-26) (* f5-26 f6-13 f4-39) (* f2-26 f3-13 f1-85)) - ) - f0-0 - ) - ) - ) - (let ((f9-28 (-> src vector 0 x)) - (f2-28 (-> src vector 0 y)) - (f5-28 (-> src vector 0 w)) - (f3-14 (-> src vector 1 x)) - (f6-14 (-> src vector 1 y)) - (f10-14 (-> src vector 1 w)) - (f4-42 (-> src vector 2 x)) - (f7-28 (-> src vector 2 y)) - (f1-91 (-> src vector 2 w)) - ) - (set! - (-> dst vector 3 z) - (- - (/ - (- - (+ (* f9-28 f6-14 f1-91) (* f2-28 f10-14 f4-42) (* f5-28 f3-14 f7-28)) - (+ (* f9-28 f10-14 f7-28) (* f5-28 f6-14 f4-42) (* f2-28 f3-14 f1-91)) - ) - f0-0 - ) - ) - ) - ) - (let ((f8-60 (-> src vector 0 x)) - (f1-98 (-> src vector 0 y)) - (f5-30 (-> src vector 0 z)) - (f2-30 (-> src vector 1 x)) - (f6-15 (-> src vector 1 y)) - (f9-30 (-> src vector 1 z)) - (f4-45 (-> src vector 2 x)) - (f7-30 (-> src vector 2 y)) - (f3-15 (-> src vector 2 z)) - ) - (set! - (-> dst vector 3 w) - (/ - (- - (+ (* f8-60 f6-15 f3-15) (* f1-98 f9-30 f4-45) (* f5-30 f2-30 f7-30)) - (+ (* f8-60 f9-30 f7-30) (* f5-30 f6-15 f4-45) (* f1-98 f2-30 f3-15)) - ) - f0-0 - ) - ) - ) - ) - dst - ) - + (let ((f0-0 (matrix-4x4-determinant src))) + (let ((f9-0 (-> src vector 1 y)) + (f2-0 (-> src vector 1 z)) + (f5-0 (-> src vector 1 w)) + (f3-0 (-> src vector 2 y)) + (f6-0 (-> src vector 2 z)) + (f10-0 (-> src vector 2 w)) + (f4-0 (-> src vector 3 y)) + (f7-0 (-> src vector 3 z)) + (f1-0 (-> src vector 3 w))) + (set! (-> dst vector 0 x) + (/ (- (+ (* f9-0 f6-0 f1-0) (* f2-0 f10-0 f4-0) (* f5-0 f3-0 f7-0)) + (+ (* f9-0 f10-0 f7-0) (* f5-0 f6-0 f4-0) (* f2-0 f3-0 f1-0))) + f0-0))) + (let ((f9-2 (-> src vector 1 x)) + (f2-2 (-> src vector 1 z)) + (f5-2 (-> src vector 1 w)) + (f3-1 (-> src vector 2 x)) + (f6-1 (-> src vector 2 z)) + (f10-1 (-> src vector 2 w)) + (f4-3 (-> src vector 3 x)) + (f7-2 (-> src vector 3 z)) + (f1-6 (-> src vector 3 w))) + (set! (-> dst vector 0 y) + (- (/ (- (+ (* f9-2 f6-1 f1-6) (* f2-2 f10-1 f4-3) (* f5-2 f3-1 f7-2)) + (+ (* f9-2 f10-1 f7-2) (* f5-2 f6-1 f4-3) (* f2-2 f3-1 f1-6))) + f0-0)))) + (let ((f9-4 (-> src vector 1 x)) + (f2-4 (-> src vector 1 y)) + (f5-4 (-> src vector 1 w)) + (f3-2 (-> src vector 2 x)) + (f6-2 (-> src vector 2 y)) + (f10-2 (-> src vector 2 w)) + (f4-6 (-> src vector 3 x)) + (f7-4 (-> src vector 3 y)) + (f1-13 (-> src vector 3 w))) + (set! (-> dst vector 0 z) + (/ (- (+ (* f9-4 f6-2 f1-13) (* f2-4 f10-2 f4-6) (* f5-4 f3-2 f7-4)) + (+ (* f9-4 f10-2 f7-4) (* f5-4 f6-2 f4-6) (* f2-4 f3-2 f1-13))) + f0-0))) + (let ((f9-6 (-> src vector 1 x)) + (f2-6 (-> src vector 1 y)) + (f5-6 (-> src vector 1 z)) + (f3-3 (-> src vector 2 x)) + (f6-3 (-> src vector 2 y)) + (f10-3 (-> src vector 2 z)) + (f4-9 (-> src vector 3 x)) + (f7-6 (-> src vector 3 y)) + (f1-19 (-> src vector 3 z))) + (set! (-> dst vector 0 w) + (- (/ (- (+ (* f9-6 f6-3 f1-19) (* f2-6 f10-3 f4-9) (* f5-6 f3-3 f7-6)) + (+ (* f9-6 f10-3 f7-6) (* f5-6 f6-3 f4-9) (* f2-6 f3-3 f1-19))) + f0-0)))) + (let ((f9-8 (-> src vector 0 y)) + (f2-8 (-> src vector 0 z)) + (f5-8 (-> src vector 0 w)) + (f3-4 (-> src vector 2 y)) + (f6-4 (-> src vector 2 z)) + (f10-4 (-> src vector 2 w)) + (f4-12 (-> src vector 3 y)) + (f7-8 (-> src vector 3 z)) + (f1-26 (-> src vector 3 w))) + (set! (-> dst vector 1 x) + (- (/ (- (+ (* f9-8 f6-4 f1-26) (* f2-8 f10-4 f4-12) (* f5-8 f3-4 f7-8)) + (+ (* f9-8 f10-4 f7-8) (* f5-8 f6-4 f4-12) (* f2-8 f3-4 f1-26))) + f0-0)))) + (let ((f9-10 (-> src vector 0 x)) + (f2-10 (-> src vector 0 z)) + (f5-10 (-> src vector 0 w)) + (f3-5 (-> src vector 2 x)) + (f6-5 (-> src vector 2 z)) + (f10-5 (-> src vector 2 w)) + (f4-15 (-> src vector 3 x)) + (f7-10 (-> src vector 3 z)) + (f1-33 (-> src vector 3 w))) + (set! (-> dst vector 1 y) + (/ (- (+ (* f9-10 f6-5 f1-33) (* f2-10 f10-5 f4-15) (* f5-10 f3-5 f7-10)) + (+ (* f9-10 f10-5 f7-10) (* f5-10 f6-5 f4-15) (* f2-10 f3-5 f1-33))) + f0-0))) + (let ((f9-12 (-> src vector 0 x)) + (f2-12 (-> src vector 0 y)) + (f5-12 (-> src vector 0 w)) + (f3-6 (-> src vector 2 x)) + (f6-6 (-> src vector 2 y)) + (f10-6 (-> src vector 2 w)) + (f4-18 (-> src vector 3 x)) + (f7-12 (-> src vector 3 y)) + (f1-39 (-> src vector 3 w))) + (set! (-> dst vector 1 z) + (- (/ (- (+ (* f9-12 f6-6 f1-39) (* f2-12 f10-6 f4-18) (* f5-12 f3-6 f7-12)) + (+ (* f9-12 f10-6 f7-12) (* f5-12 f6-6 f4-18) (* f2-12 f3-6 f1-39))) + f0-0)))) + (let ((f9-14 (-> src vector 0 x)) + (f2-14 (-> src vector 0 y)) + (f5-14 (-> src vector 0 z)) + (f3-7 (-> src vector 2 x)) + (f6-7 (-> src vector 2 y)) + (f10-7 (-> src vector 2 z)) + (f4-21 (-> src vector 3 x)) + (f7-14 (-> src vector 3 y)) + (f1-46 (-> src vector 3 z))) + (set! (-> dst vector 1 w) + (/ (- (+ (* f9-14 f6-7 f1-46) (* f2-14 f10-7 f4-21) (* f5-14 f3-7 f7-14)) + (+ (* f9-14 f10-7 f7-14) (* f5-14 f6-7 f4-21) (* f2-14 f3-7 f1-46))) + f0-0))) + (let ((f9-16 (-> src vector 0 y)) + (f2-16 (-> src vector 0 z)) + (f5-16 (-> src vector 0 w)) + (f3-8 (-> src vector 1 y)) + (f6-8 (-> src vector 1 z)) + (f10-8 (-> src vector 1 w)) + (f4-24 (-> src vector 3 y)) + (f7-16 (-> src vector 3 z)) + (f1-52 (-> src vector 3 w))) + (set! (-> dst vector 2 x) + (/ (- (+ (* f9-16 f6-8 f1-52) (* f2-16 f10-8 f4-24) (* f5-16 f3-8 f7-16)) + (+ (* f9-16 f10-8 f7-16) (* f5-16 f6-8 f4-24) (* f2-16 f3-8 f1-52))) + f0-0))) + (let ((f9-18 (-> src vector 0 x)) + (f2-18 (-> src vector 0 z)) + (f5-18 (-> src vector 0 w)) + (f3-9 (-> src vector 1 x)) + (f6-9 (-> src vector 1 z)) + (f10-9 (-> src vector 1 w)) + (f4-27 (-> src vector 3 x)) + (f7-18 (-> src vector 3 z)) + (f1-58 (-> src vector 3 w))) + (set! (-> dst vector 2 y) + (- (/ (- (+ (* f9-18 f6-9 f1-58) (* f2-18 f10-9 f4-27) (* f5-18 f3-9 f7-18)) + (+ (* f9-18 f10-9 f7-18) (* f5-18 f6-9 f4-27) (* f2-18 f3-9 f1-58))) + f0-0)))) + (let ((f9-20 (-> src vector 0 x)) + (f2-20 (-> src vector 0 y)) + (f5-20 (-> src vector 0 w)) + (f3-10 (-> src vector 1 x)) + (f6-10 (-> src vector 1 y)) + (f10-10 (-> src vector 1 w)) + (f4-30 (-> src vector 3 x)) + (f7-20 (-> src vector 3 y)) + (f1-65 (-> src vector 3 w))) + (set! (-> dst vector 2 z) + (/ (- (+ (* f9-20 f6-10 f1-65) (* f2-20 f10-10 f4-30) (* f5-20 f3-10 f7-20)) + (+ (* f9-20 f10-10 f7-20) (* f5-20 f6-10 f4-30) (* f2-20 f3-10 f1-65))) + f0-0))) + (let ((f9-22 (-> src vector 0 x)) + (f2-22 (-> src vector 0 y)) + (f5-22 (-> src vector 0 z)) + (f3-11 (-> src vector 1 x)) + (f6-11 (-> src vector 1 y)) + (f10-11 (-> src vector 1 z)) + (f4-33 (-> src vector 3 x)) + (f7-22 (-> src vector 3 y)) + (f1-71 (-> src vector 3 z))) + (set! (-> dst vector 2 w) + (- (/ (- (+ (* f9-22 f6-11 f1-71) (* f2-22 f10-11 f4-33) (* f5-22 f3-11 f7-22)) + (+ (* f9-22 f10-11 f7-22) (* f5-22 f6-11 f4-33) (* f2-22 f3-11 f1-71))) + f0-0)))) + (let ((f9-24 (-> src vector 0 y)) + (f2-24 (-> src vector 0 z)) + (f5-24 (-> src vector 0 w)) + (f3-12 (-> src vector 1 y)) + (f6-12 (-> src vector 1 z)) + (f10-12 (-> src vector 1 w)) + (f4-36 (-> src vector 2 y)) + (f7-24 (-> src vector 2 z)) + (f1-78 (-> src vector 2 w))) + (set! (-> dst vector 3 x) + (- (/ (- (+ (* f9-24 f6-12 f1-78) (* f2-24 f10-12 f4-36) (* f5-24 f3-12 f7-24)) + (+ (* f9-24 f10-12 f7-24) (* f5-24 f6-12 f4-36) (* f2-24 f3-12 f1-78))) + f0-0)))) + (let ((f9-26 (-> src vector 0 x)) + (f2-26 (-> src vector 0 z)) + (f5-26 (-> src vector 0 w)) + (f3-13 (-> src vector 1 x)) + (f6-13 (-> src vector 1 z)) + (f10-13 (-> src vector 1 w)) + (f4-39 (-> src vector 2 x)) + (f7-26 (-> src vector 2 z)) + (f1-85 (-> src vector 2 w))) + (set! (-> dst vector 3 y) + (/ (- (+ (* f9-26 f6-13 f1-85) (* f2-26 f10-13 f4-39) (* f5-26 f3-13 f7-26)) + (+ (* f9-26 f10-13 f7-26) (* f5-26 f6-13 f4-39) (* f2-26 f3-13 f1-85))) + f0-0))) + (let ((f9-28 (-> src vector 0 x)) + (f2-28 (-> src vector 0 y)) + (f5-28 (-> src vector 0 w)) + (f3-14 (-> src vector 1 x)) + (f6-14 (-> src vector 1 y)) + (f10-14 (-> src vector 1 w)) + (f4-42 (-> src vector 2 x)) + (f7-28 (-> src vector 2 y)) + (f1-91 (-> src vector 2 w))) + (set! (-> dst vector 3 z) + (- (/ (- (+ (* f9-28 f6-14 f1-91) (* f2-28 f10-14 f4-42) (* f5-28 f3-14 f7-28)) + (+ (* f9-28 f10-14 f7-28) (* f5-28 f6-14 f4-42) (* f2-28 f3-14 f1-91))) + f0-0)))) + (let ((f8-60 (-> src vector 0 x)) + (f1-98 (-> src vector 0 y)) + (f5-30 (-> src vector 0 z)) + (f2-30 (-> src vector 1 x)) + (f6-15 (-> src vector 1 y)) + (f9-30 (-> src vector 1 z)) + (f4-45 (-> src vector 2 x)) + (f7-30 (-> src vector 2 y)) + (f3-15 (-> src vector 2 z))) + (set! (-> dst vector 3 w) + (/ (- (+ (* f8-60 f6-15 f3-15) (* f1-98 f9-30 f4-45) (* f5-30 f2-30 f7-30)) + (+ (* f8-60 f9-30 f7-30) (* f5-30 f6-15 f4-45) (* f1-98 f2-30 f3-15))) + f0-0)))) + dst) (defun matrix-y-angle ((mat matrix)) "If mat has its upper 3x3 as a rotation, gets the y axis rotation." - (let ((z-row (&-> mat data 8))) - (atan (-> z-row 0) (-> z-row 2)) - ) - ) - + (let ((z-row (&-> mat data 8))) (atan (-> z-row 0) (-> z-row 2)))) -(defmethod transform-vectors! matrix ((this _type_) (dst (inline-array vector)) (src (inline-array vector)) (count int)) +(defmethod transform-vectors! ((this matrix) (dst (inline-array vector)) (src (inline-array vector)) (count int)) "Transform many vectors. This acts like w = 1, even if it isn't. The value of w is copied." (rlet ((vf0 :class vf) (vf1 :class vf) @@ -1682,81 +1305,57 @@ (vf7 :class vf) (vf8 :class vf) (acc :class vf) - (v1 :type int) - ) + (v1 :type int)) (init-vf0-vector) - ;; blez a3, L3 (when-goto (<= count 0) end) - ;; lqc2 vf1, 0(a0) (.lvf vf1 (-> this vector 0)) - ;; lqc2 vf2, 16(a0) (.lvf vf2 (-> this vector 1)) - ;; lqc2 vf3, 32(a0) (.lvf vf3 (-> this vector 2)) - ;; lqc2 vf4, 48(a0) (.lvf vf4 (-> this vector 3)) - ;; lqc2 vf5, 0(a2) (.lvf vf5 (-> src 0)) - ;; lqc2 vf6, 16(a2) (.lvf vf6 (-> src 1)) - (label loop-top) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;vmulaw.xyzw acc, vf4, vf0 (.mul.w.vf acc vf4 vf0) - ;; lqc2 vf7, 32(a2) (.lvf vf7 (-> src 2)) - ;;vmaddax.xyzw acc, vf1, vf5 (.add.mul.x.vf acc vf1 vf5 acc) - ;;lqc2 vf8, 48(a2) (.lvf vf8 (-> src 3)) - ;;vmadday.xyzw acc, vf2, vf5 (.add.mul.y.vf acc vf2 vf5 acc) - ;;daddiu a2, a2, 64 ;;(&+! src 64) (set! src (the (inline-array vector) (+ 64 (the int src)))) - ;;vmaddz.xyz vf5, vf3, vf5 (.add.mul.z.vf vf5 vf3 vf5 acc :mask #b0111) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;daddiu v1, a3, -1 (set! v1 (- count 1)) - ;;vmulaw.xyzw acc, vf4, vf0 (.mul.w.vf acc vf4 vf0) - ;;vmaddax.xyzw acc, vf1, vf6 (.add.mul.x.vf acc vf1 vf6 acc) - ;; vmadday.xyzw acc, vf2, vf6 (.add.mul.y.vf acc vf2 vf6 acc) - ;; vmaddz.xyz vf6, vf3, vf6 (.add.mul.z.vf vf6 vf3 vf6 acc :mask #b0111) - ;;sqc2 vf5, 0(a1) (.svf (-> dst 0) vf5) - ;;beq v1, r0, L3 ;;vmulaw.xyzw acc, vf4, vf0 (.mul.w.vf acc vf4 vf0) (when-goto (zero? v1) end) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;vmaddax.xyzw acc, vf1, vf7 (.add.mul.x.vf acc vf1 vf7 acc) ;;daddiu v1, v1, -1 @@ -1769,13 +1368,11 @@ (.add.mul.z.vf vf7 vf3 vf7 acc :mask #b0111) ;;sqc2 vf6, 16(a1) (.svf (-> dst 1) vf6) - ;;beq v1, r0, L3 ;;vmulaw.xyzw acc, vf4, vf0 (.mul.w.vf acc vf4 vf0) (when-goto (zero? v1) end) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;vmaddax.xyzw acc, vf1, vf8 (.add.mul.x.vf acc vf1 vf8 acc) ;;daddiu v1, v1, -1 @@ -1788,19 +1385,15 @@ (.add.mul.z.vf vf8 vf3 vf8 acc :mask #b0111) ;;sqc2 vf7, 32(a1) (.svf (-> dst 2) vf7) - ;;beq v1, r0, L3 ;;daddiu a1, a1, 64 ;;(&!+ dst 64) (set! dst (the (inline-array vector) (+ 64 (the int dst)))) (when-goto (zero? v1) end) - ;;daddiu a3, v1, -1 (set! count (- v1 1)) ;;sqc2 vf8, -16(a1) (.svf dst vf8 :offset -16) (when-goto (not (zero? count)) loop-top) (label end) - (none) - ) - ) + (none))) diff --git a/goal_src/jak1/engine/math/quaternion-h.gc b/goal_src/jak1/engine/math/quaternion-h.gc index 41b178b6ab..40295cf05c 100644 --- a/goal_src/jak1/engine/math/quaternion-h.gc +++ b/goal_src/jak1/engine/math/quaternion-h.gc @@ -1,40 +1,30 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: quaternion-h.gc -;; name in dgo: quaternion-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; general quaternion type used to represent an orientation in a way that's compact (4 floats), ;; avoids singularities of euler angles, and reasonably efficient to transform. ;; the w component is stored last. (deftype quaternion (structure) - ((x float) - (y float) - (z float) - (w float) - (data float 4 :overlay-at x) - (vec vector :inline :overlay-at x) - (quad uint128 :overlay-at x) - ) - ) + ((x float) + (y float) + (z float) + (w float) + (data float 4 :overlay-at x) + (vec vector :inline :overlay-at x) + (quad uint128 :overlay-at x))) (define *unity-quaternion* (new 'static 'quaternion :x 0.0 :y 0.0 :z 0.0 :w 1.0)) (define-extern matrix->quaternion (function quaternion matrix quaternion)) + (define-extern vector-y-angle (function vector float)) (defmacro new-stack-quaternion0 () "Get a stack quaternion that's set to 0. This is more efficient than (new 'stack 'quaternion) because this doesn't call the constructor." - `(let ((q (new 'stack-no-clear 'quaternion))) - (set! (-> q quad) (the-as uint128 0)) - q - ) - ) + `(let ((q (new 'stack-no-clear 'quaternion))) (set! (-> q quad) (the-as uint128 0)) q)) diff --git a/goal_src/jak1/engine/math/quaternion.gc b/goal_src/jak1/engine/math/quaternion.gc index 122171a6f3..08f95c3270 100644 --- a/goal_src/jak1/engine/math/quaternion.gc +++ b/goal_src/jak1/engine/math/quaternion.gc @@ -1,64 +1,41 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/quaternion-h.gc") (require "engine/math/matrix.gc") -;; name: quaternion.gc -;; name in dgo: quaternion -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(defmethod inspect quaternion ((this quaternion)) +(defmethod inspect ((this quaternion)) "Print a quaternion. Prints the values and axis-angle" (format #t "[~8x] quaternion~%" this) - (format #t "~T[~F] [~F] [~F] [~F]~%" (-> this x) (-> this y) (-> this z)(-> this w)) - (let ((f0-5 (/ 1.0 (sqrtf - (+ (* (-> this x) (-> this x)) - (* (-> this y) (-> this y)) - (* (-> this z) (-> this z)) - ) - ) - ) - ) - ) - (format #t "~Taxis: ~F ~F ~F" (* f0-5 (-> this x)) (* f0-5 (-> this y)) (* f0-5 (-> this z))) - ) - (let ((f0-9 (* 2.0 (acos (-> this w))))) - (format #t "~T~Tangle: (deg ~R)~%" f0-9) - ) - this - ) + (format #t "~T[~F] [~F] [~F] [~F]~%" (-> this x) (-> this y) (-> this z) (-> this w)) + (let ((f0-5 (/ 1.0 (sqrtf (+ (* (-> this x) (-> this x)) (* (-> this y) (-> this y)) (* (-> this z) (-> this z))))))) + (format #t "~Taxis: ~F ~F ~F" (* f0-5 (-> this x)) (* f0-5 (-> this y)) (* f0-5 (-> this z)))) + (let ((f0-9 (* 2.0 (acos (-> this w))))) (format #t "~T~Tangle: (deg ~R)~%" f0-9)) + this) (defun quaternion-axis-angle! ((quat quaternion) (x float) (y float) (z float) (angle float)) "Construct a quaternion from an axis and angle. The axis should be normalized." (let* ((f28-0 (* 0.5 angle)) (f30-0 (sin f28-0)) - (f0-1 (cos f28-0)) - ) + (f0-1 (cos f28-0))) (set! (-> quat x) (* x f30-0)) (set! (-> quat y) (* y f30-0)) (set! (-> quat z) (* z f30-0)) - (set! (-> quat w) f0-1) - ) - quat - ) + (set! (-> quat w) f0-1)) + quat) (defun quaternion-vector-angle! ((quat quaternion) (axis vector) (angle float)) "Construct a quaternion from an axis and angle. The axis should be normalized." (let* ((f28-0 (* 0.5 angle)) (f30-0 (sin f28-0)) - (f0-1 (cos f28-0)) - ) + (f0-1 (cos f28-0))) (set! (-> quat x) (* (-> axis x) f30-0)) (set! (-> quat y) (* (-> axis y) f30-0)) (set! (-> quat z) (* (-> axis z) f30-0)) - (set! (-> quat w) f0-1) - ) - quat - ) + (set! (-> quat w) f0-1)) + quat) (defun vector-angle<-quaternion! ((arg0 vector) (arg1 quaternion)) "Convert the quaternion arg1 to axis-angle form and store in arg0 (angle goes in w)" @@ -66,55 +43,46 @@ (f1-0 1.0) (f2-0 (-> arg1 w)) (f30-0 (/ f0-0 (sqrtf (- f1-0 (* f2-0 f2-0))))) - (f0-3 (* 2.0 (acos-rad (-> arg1 w)))) - ) + (f0-3 (* 2.0 (acos-rad (-> arg1 w))))) (set! (-> arg0 x) (* (-> arg1 x) f30-0)) (set! (-> arg0 y) (* (-> arg1 y) f30-0)) (set! (-> arg0 z) (* (-> arg1 z) f30-0)) - (set! (-> arg0 w) f0-3) - ) - arg0 - ) + (set! (-> arg0 w) f0-3)) + arg0) (defun quaternion-zero! ((arg0 quaternion)) "Set quaternion to all 0's" (set! (-> arg0 vec quad) (the-as uint128 0)) - arg0 - ) + arg0) (defun quaternion-identity! ((arg0 quaternion)) "Set quaternion to 0,0,0,1 (identity)" (set! (-> arg0 vec quad) (the-as uint128 0)) (set! (-> arg0 w) 1.0) - arg0 - ) + arg0) (defun quaternion-i! ((arg0 quaternion)) "Create unit i quaternion" (set! (-> arg0 vec quad) (the-as uint128 0)) (set! (-> arg0 x) 1.0) - arg0 - ) + arg0) (defun quaternion-j! ((arg0 quaternion)) "Create unit j quaternion." (set! (-> arg0 vec quad) (the-as uint128 0)) (set! (-> arg0 y) 1.0) - arg0 - ) + arg0) (defun quaternion-k! ((arg0 quaternion)) "Create unit k quaternion" (set! (-> arg0 vec quad) (the-as uint128 0)) (set! (-> arg0 z) 1.0) - arg0 - ) + arg0) (defun quaternion-copy! ((arg0 quaternion) (arg1 quaternion)) "Set arg0 = arg1" (set! (-> arg0 vec quad) (-> arg1 vec quad)) - arg0 - ) + arg0) (defun quaternion-set! ((arg0 quaternion) (arg1 float) (arg2 float) (arg3 float) (arg4 float)) "Set arg0 = [arg1, arg2, arg3, arg4]" @@ -122,94 +90,74 @@ (set! (-> arg0 y) arg2) (set! (-> arg0 z) arg3) (set! (-> arg0 w) arg4) - arg0 - ) + arg0) (defun quaternion+! ((arg0 quaternion) (arg1 quaternion) (arg2 quaternion)) "Add quaternions as vectors." (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (.lvf vf1 (&-> arg1 vec quad)) (.lvf vf2 (&-> arg2 vec quad)) (.add.vf vf1 vf1 vf2) (.svf (&-> arg0 vec quad) vf1) - arg0 - ) - ) + arg0)) (defun quaternion-! ((arg0 quaternion) (arg1 quaternion) (arg2 quaternion)) "Subtract quaternions as vectors." (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (.lvf vf1 (&-> arg1 vec quad)) (.lvf vf2 (&-> arg2 vec quad)) (.sub.vf vf1 vf1 vf2) (.svf (&-> arg0 vec quad) vf1) - arg0 - ) - ) + arg0)) (defun quaternion-negate! ((arg0 quaternion) (arg1 quaternion)) "Set arg0 = -arg1." (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (.lvf vf1 (&-> arg1 vec quad)) ;;(.sub.vf vf2 vf2 vf2) (.xor.vf vf2 vf2 vf2) (.sub.vf vf1 vf2 vf1) (.svf (&-> arg0 vec quad) vf1) - arg0 - ) - ) + arg0)) (defun quaternion-conjugate! ((arg0 quaternion) (arg1 quaternion)) "Set arg0 to the conjugate of arg1 (negate only ijk). If arg1 is normalized, this is equivalent to the inverse NOTE: this gives you the inverse rotation." (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (.lvf vf1 (&-> arg1 vec quad)) ;;(.sub.vf vf2 vf2 vf2) (.xor.vf vf2 vf2 vf2) (.sub.vf vf2 vf2 vf1 :mask #b111) (.add.vf vf2 vf2 vf1 :mask #b1000) (.svf (&-> arg0 vec quad) vf2) - arg0 - ) - ) + arg0)) (defun quaternion-float*! ((arg0 quaternion) (arg1 quaternion) (arg2 float)) "Multiply each element" (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (.lvf vf1 (&-> arg1 vec quad)) (.mov vf2 arg2) (.mul.x.vf vf1 vf1 vf2) (.svf (&-> arg0 vec quad) vf1) - arg0 - ) - ) + arg0)) (defun quaternion-float/! ((arg0 quaternion) (arg1 quaternion) (arg2 float)) "Divide each element" - (let ((f0-1 (/ 1.0 arg2))) - (quaternion-float*! arg0 arg1 f0-1) - ) - arg0 - ) + (let ((f0-1 (/ 1.0 arg2))) (quaternion-float*! arg0 arg1 f0-1)) + arg0) (defun quaternion-norm2 ((arg0 quaternion)) "Get the squared norm of a quaternion" (local-vars (v0-0 float)) (rlet ((acc :class vf) (vf0 :class vf) - (vf1 :class vf) - ) + (vf1 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg0 vec quad)) (.mul.vf vf1 vf1 vf1) @@ -218,17 +166,14 @@ (.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000) (.add.w.vf vf1 vf0 vf1) (.mov v0-0 vf1) - v0-0 - ) - ) + v0-0)) (defun quaternion-norm ((arg0 quaternion)) "Get the norm of a quaternion." (local-vars (v1-1 float)) (rlet ((acc :class vf) (vf0 :class vf) - (vf1 :class vf) - ) + (vf1 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg0 vec quad)) (.mul.vf vf1 vf1 vf1) @@ -237,9 +182,7 @@ (.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000) (.add.w.vf vf1 vf0 vf1) (.mov v1-1 vf1) - (sqrtf v1-1) - ) - ) + (sqrtf v1-1))) (defun quaternion-normalize! ((arg0 quaternion)) "Normalize a quaternion" @@ -247,8 +190,7 @@ (Q :class vf) (vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg0 vec quad)) (.mul.vf vf2 vf1 vf1) @@ -261,9 +203,7 @@ ;;(.nop.vf) ;;(.nop.vf) (.svf (&-> arg0 vec quad) vf2) - arg0 - ) - ) + arg0)) (defun quaternion-inverse! ((arg0 quaternion) (arg1 quaternion)) "Invert a quaternion. The inverse will satisfy q * q^-1 = identity, even if q is not normalized. @@ -273,8 +213,7 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg1 vec quad)) (.mul.vf vf2 vf1 vf1) @@ -291,9 +230,7 @@ (.nop.vf) (.nop.vf) (.svf (&-> arg0 vec quad) vf3) - arg0 - ) - ) + arg0)) (defun quaternion-dot ((arg0 quaternion) (arg1 quaternion)) "Treat quaternions as vectors and take the dot product." @@ -301,8 +238,7 @@ (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg0 vec quad)) (.lvf vf2 (&-> arg1 vec quad)) @@ -312,9 +248,7 @@ (.add.mul.x.vf vf1 vf0 vf1 acc :mask #b1000) (.add.w.vf vf1 vf0 vf1) (.mov v0-0 vf1) - v0-0 - ) - ) + v0-0)) (defun quaternion*! ((arg0 quaternion) (arg1 quaternion) (arg2 quaternion)) "Real quaternion multiplication" @@ -323,8 +257,7 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg1 vec quad)) (.lvf vf2 (&-> arg2 vec quad)) @@ -340,9 +273,7 @@ (.sub.mul.x.vf acc vf0 vf3 acc :mask #b1000) (.add.mul.w.vf vf1 vf4 vf0 acc) (.svf (&-> arg0 vec quad) vf1) - arg0 - ) - ) + arg0)) (defun quaternion-right-mult-matrix! ((arg0 matrix) (arg1 quaternion)) "Place quaternion coefficients into a matrix. @@ -352,8 +283,7 @@ (let ((f3-0 (-> arg1 x)) (f2-0 (-> arg1 y)) (f1-0 (-> arg1 z)) - (f0-0 (-> arg1 w)) - ) + (f0-0 (-> arg1 w))) (set! (-> arg0 vector 0 x) f0-0) (set! (-> arg0 vector 0 y) f1-0) (set! (-> arg0 vector 0 z) (- f2-0)) @@ -369,17 +299,14 @@ (set! (-> arg0 vector 3 x) (- f3-0)) (set! (-> arg0 vector 3 y) (- f2-0)) (set! (-> arg0 vector 3 z) (- f1-0)) - (set! (-> arg0 vector 3 w) f0-0) - ) - arg0 - ) + (set! (-> arg0 vector 3 w) f0-0)) + arg0) (defun quaternion-left-mult-matrix! ((arg0 matrix) (arg1 quaternion)) "Place quaternion coefficients into a matrix. Unused." (let ((f2-0 (-> arg1 x)) (f1-0 (-> arg1 y)) - (f0-0 (-> arg1 z)) - ) + (f0-0 (-> arg1 z))) (let ((f3-0 (-> arg1 w))) (set! (-> arg0 vector 0 x) f2-0) (set! (-> arg0 vector 0 y) f3-0) @@ -393,14 +320,11 @@ (set! (-> arg0 vector 2 y) (- f1-0)) (set! (-> arg0 vector 2 z) f2-0) (set! (-> arg0 vector 2 w) f3-0) - (set! (-> arg0 vector 3 x) f3-0) - ) + (set! (-> arg0 vector 3 x) f3-0)) (set! (-> arg0 vector 3 y) (- f2-0)) (set! (-> arg0 vector 3 z) (- f1-0)) - (set! (-> arg0 vector 3 w) (- f0-0)) - ) - arg0 - ) + (set! (-> arg0 vector 3 w) (- f0-0))) + arg0) (defun quaternion->matrix ((arg0 matrix) (arg1 quaternion)) "Convert quaternion to matrix." @@ -410,8 +334,7 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg1 vec quad)) (.add.vf vf5 vf1 vf1) @@ -440,9 +363,7 @@ (.svf (&-> arg0 vector 0 quad) vf2) (.svf (&-> arg0 vector 1 quad) vf3) (.svf (&-> arg0 vector 2 quad) vf4) - arg0 - ) - ) + arg0)) (defun matrix->quaternion ((arg0 quaternion) (arg1 matrix)) "Convert a rotation matrix to a quaternion." @@ -454,69 +375,38 @@ (let ((f0-5 (/ 0.5 f0-4))) (set! (-> arg0 x) (* f0-5 (- (-> arg1 vector 1 z) (-> arg1 vector 2 y)))) (set! (-> arg0 y) (* f0-5 (- (-> arg1 vector 2 x) (-> arg1 vector 0 z)))) - (set! (-> arg0 z) (* f0-5 (- (-> arg1 vector 0 y) (-> arg1 vector 1 x)))) - ) - ) - ) + (set! (-> arg0 z) (* f0-5 (- (-> arg1 vector 0 y) (-> arg1 vector 1 x))))))) (else - (let ((a2-0 0) - (a3-0 1) - (v1-1 2) - ) - (when (< (-> arg1 vector 0 x) (-> arg1 vector 1 y)) - (set! a2-0 1) - (set! a3-0 2) - (set! v1-1 0) - ) - (when (< (-> (the-as (pointer float) (+ (+ (* a2-0 4) (* a2-0 16)) (the-as int arg1)))) (-> arg1 vector 2 z)) - (set! a2-0 2) - (set! a3-0 0) - (set! v1-1 1) - ) - (let ((f0-12 - (sqrtf - (+ (- 1.0 - (+ (-> (the-as (pointer float) (+ (+ (* a3-0 4) (* a3-0 16)) (the-as int arg1)))) - (-> (the-as (pointer float) (+ (+ (* v1-1 4) (* v1-1 16)) (the-as int arg1)))) - ) - ) - (-> (the-as (pointer float) (+ (+ (* a2-0 4) (* a2-0 16)) (the-as int arg1)))) - ) - ) - ) - ) - (set! (-> arg0 data a2-0) (* 0.5 f0-12)) - (if (!= f0-12 0.0) - (set! f0-12 (/ 0.5 f0-12)) - ) - (set! (-> arg0 w) - (* (- (-> (the-as (pointer float) (+ (+ (* v1-1 4) (* a3-0 16)) (the-as int arg1)))) - (-> (the-as (pointer float) (+ (+ (* a3-0 4) (* v1-1 16)) (the-as int arg1)))) - ) - f0-12 - ) - ) - (set! (-> arg0 data a3-0) - (* (+ (-> (the-as (pointer float) (+ (+ (* a3-0 4) (* a2-0 16)) (the-as int arg1)))) - (-> (the-as (pointer float) (+ (+ (* a2-0 4) (* a3-0 16)) (the-as int arg1)))) - ) - f0-12 - ) - ) - (set! (-> arg0 data v1-1) - (* (+ (-> (the-as (pointer float) (+ (+ (* v1-1 4) (* a2-0 16)) (the-as int arg1)))) - (-> (the-as (pointer float) (+ (+ (* a2-0 4) (* v1-1 16)) (the-as int arg1)))) - ) - f0-12 - ) - ) - ) - ) - ) - ) - ) - arg0 - ) + (let ((a2-0 0) + (a3-0 1) + (v1-1 2)) + (when (< (-> arg1 vector 0 x) (-> arg1 vector 1 y)) + (set! a2-0 1) + (set! a3-0 2) + (set! v1-1 0)) + (when (< (-> (the-as (pointer float) (+ (+ (* a2-0 4) (* a2-0 16)) (the-as int arg1)))) (-> arg1 vector 2 z)) + (set! a2-0 2) + (set! a3-0 0) + (set! v1-1 1)) + (let ((f0-12 (sqrtf (+ (- 1.0 + (+ (-> (the-as (pointer float) (+ (+ (* a3-0 4) (* a3-0 16)) (the-as int arg1)))) + (-> (the-as (pointer float) (+ (+ (* v1-1 4) (* v1-1 16)) (the-as int arg1)))))) + (-> (the-as (pointer float) (+ (+ (* a2-0 4) (* a2-0 16)) (the-as int arg1)))))))) + (set! (-> arg0 data a2-0) (* 0.5 f0-12)) + (if (!= f0-12 0.0) (set! f0-12 (/ 0.5 f0-12))) + (set! (-> arg0 w) + (* (- (-> (the-as (pointer float) (+ (+ (* v1-1 4) (* a3-0 16)) (the-as int arg1)))) + (-> (the-as (pointer float) (+ (+ (* a3-0 4) (* v1-1 16)) (the-as int arg1))))) + f0-12)) + (set! (-> arg0 data a3-0) + (* (+ (-> (the-as (pointer float) (+ (+ (* a3-0 4) (* a2-0 16)) (the-as int arg1)))) + (-> (the-as (pointer float) (+ (+ (* a2-0 4) (* a3-0 16)) (the-as int arg1))))) + f0-12)) + (set! (-> arg0 data v1-1) + (* (+ (-> (the-as (pointer float) (+ (+ (* v1-1 4) (* a2-0 16)) (the-as int arg1)))) + (-> (the-as (pointer float) (+ (+ (* a2-0 4) (* v1-1 16)) (the-as int arg1))))) + f0-12))))))) + arg0) (defun matrix-with-scale->quaternion ((arg0 quaternion) (arg1 matrix)) "Convert a matrix with a rotation and scale into a quaternion (just the rotation)" @@ -526,8 +416,7 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) + (vf7 :class vf)) (let ((v1-0 (new-stack-matrix0))) ;; compute norm of rows of rotation matrix (vector-dot does only xyz) (let ((f0-2 (vector-dot (-> arg1 vector 0) (-> arg1 vector 0)))) @@ -536,26 +425,16 @@ ;; compute scaling factors. (f0-4 (/ 1.0 (sqrtf f0-2))) (f1-5 (/ 1.0 (sqrtf f1-3))) - (f2-6 (/ 1.0 (sqrtf f2-4))) - ) + (f2-6 (/ 1.0 (sqrtf f2-4)))) ;; load the origin matrix. (.lvf vf1 (&-> arg1 vector 0 quad)) (.lvf vf2 (&-> arg1 vector 1 quad)) (.lvf vf3 (&-> arg1 vector 2 quad)) (.lvf vf4 (&-> arg1 vector 3 quad)) ;; move scaling factors into vector regs - (let ((a1-1 f0-4)) - (.mov vf5 a1-1) - ) - (let ((a1-2 f1-5)) - (.mov vf6 a1-2) - ) - (let ((a1-3 f2-6)) - (.mov vf7 a1-3) - ) - ) - ) - ) + (let ((a1-1 f0-4)) (.mov vf5 a1-1)) + (let ((a1-2 f1-5)) (.mov vf6 a1-2)) + (let ((a1-3 f2-6)) (.mov vf7 a1-3))))) ;; scale! (.mul.x.vf vf1 vf1 vf5) (.mul.x.vf vf2 vf2 vf6) @@ -566,20 +445,14 @@ (.svf (&-> v1-0 vector 2 quad) vf3) (.svf (&-> v1-0 vector 3 quad) vf4) ;; and convert! - (matrix->quaternion arg0 v1-0) - ) - ) - ) + (matrix->quaternion arg0 v1-0)))) (defun quaternion-vector-len ((arg0 quaternion)) "Assuming quaternion is normalized, get the length of the xyz part." (let ((f0-0 1.0) - (f1-0 (-> arg0 w)) - ) + (f1-0 (-> arg0 w))) ;; sqrt(1 - w^2) = sqrt(x^2 + y^2 + z^2) = length - (sqrtf (- f0-0 (* f1-0 f1-0))) - ) - ) + (sqrtf (- f0-0 (* f1-0 f1-0))))) (defun quaternion-log! ((arg0 quaternion) (arg1 quaternion)) "Take the log of a quaternion. Unused." @@ -587,46 +460,29 @@ ((= (-> arg1 w) 0.0) (set! (-> arg0 x) (* 1.5707963 (-> arg1 x))) (set! (-> arg0 y) (* 1.5707963 (-> arg1 y))) - (set! (-> arg0 z) (* 1.5707963 (-> arg1 z))) - ) + (set! (-> arg0 z) (* 1.5707963 (-> arg1 z)))) (else - (let* ((f30-0 (quaternion-vector-len arg1)) - (f0-9 (/ (atan2-rad (-> arg1 w) f30-0) f30-0)) - ) - (set! (-> arg0 x) (* (-> arg1 x) f0-9)) - (set! (-> arg0 y) (* (-> arg1 y) f0-9)) - (set! (-> arg0 z) (* (-> arg1 z) f0-9)) - ) - ) - ) - arg0 - ) + (let* ((f30-0 (quaternion-vector-len arg1)) + (f0-9 (/ (atan2-rad (-> arg1 w) f30-0) f30-0))) + (set! (-> arg0 x) (* (-> arg1 x) f0-9)) + (set! (-> arg0 y) (* (-> arg1 y) f0-9)) + (set! (-> arg0 z) (* (-> arg1 z) f0-9))))) + arg0) (defun quaternion-exp! ((arg0 quaternion) (arg1 quaternion)) "Quaternion exponentiation. Unused" (let ((f30-0 (vector-length (the-as vector arg1)))) (cond - ((= f30-0 0.0) - (set! (-> arg0 x) 0.0) - (set! (-> arg0 y) 0.0) - (set! (-> arg0 z) 0.0) - (set! (-> arg0 w) 1.0) - ) + ((= f30-0 0.0) (set! (-> arg0 x) 0.0) (set! (-> arg0 y) 0.0) (set! (-> arg0 z) 0.0) (set! (-> arg0 w) 1.0)) (else - (let ((s5-0 (new 'stack-no-clear 'vector))) - (sincos-rad! (the-as (pointer float) s5-0) f30-0) - (let ((f0-6 (/ (-> s5-0 x) f30-0))) - (set! (-> arg0 x) (* (-> arg1 x) f0-6)) - (set! (-> arg0 y) (* (-> arg1 y) f0-6)) - (set! (-> arg0 z) (* (-> arg1 z) f0-6)) - ) - (set! (-> arg0 w) (-> s5-0 y)) - ) - ) - ) - ) - arg0 - ) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (sincos-rad! (the-as (pointer float) s5-0) f30-0) + (let ((f0-6 (/ (-> s5-0 x) f30-0))) + (set! (-> arg0 x) (* (-> arg1 x) f0-6)) + (set! (-> arg0 y) (* (-> arg1 y) f0-6)) + (set! (-> arg0 z) (* (-> arg1 z) f0-6))) + (set! (-> arg0 w) (-> s5-0 y)))))) + arg0) (defun quaternion-slerp! ((arg0 quaternion) (arg1 quaternion) (arg2 quaternion) (arg3 float)) "Real quaternion slerp. Spherical-linear interpolation is a nice way to interpolate @@ -636,62 +492,43 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (let ((f0-0 (quaternion-dot arg1 arg2)) - (f30-0 1.0) - ) + (f30-0 1.0)) (when (< f0-0 0.0) (set! f0-0 (- f0-0)) - (set! f30-0 -1.0) - ) + (set! f30-0 -1.0)) (cond ((< (- 1.0 f0-0) 0.0001) - (let ((v1-2 (- 1.0 arg3))) - (.mov vf1 v1-2) - ) - (let ((v1-3 (* arg3 f30-0))) - (.mov vf2 v1-3) - ) + (let ((v1-2 (- 1.0 arg3))) (.mov vf1 v1-2)) + (let ((v1-3 (* arg3 f30-0))) (.mov vf2 v1-3)) (.lvf vf3 (&-> arg1 vec quad)) (.lvf vf4 (&-> arg2 vec quad)) (.mul.x.vf acc vf3 vf1) (.add.mul.x.vf vf3 vf4 vf2 acc) (.svf (&-> arg0 vec quad) vf3) - (quaternion-normalize! arg0) - ) + (quaternion-normalize! arg0)) (else - (let* ((f1-4 1.0) - (f2-1 f0-0) - (f1-6 (sqrtf (- f1-4 (* f2-1 f2-1)))) - (f0-6 (/ (- f1-6 f0-0) (+ f1-6 f0-0))) - (f28-0 (/ 1.0 f1-6)) - ) - (let ((f0-7 (atan-series-rad f0-6)) - (s2-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> s2-0 x) (* (- 1.0 arg3) f0-7)) - (set! (-> s2-0 y) (* arg3 f0-7 f30-0)) - (vector-sin-rad! s2-0 s2-0) - (.lvf vf1 (&-> s2-0 quad)) - ) - (let ((v1-6 f28-0)) - (.mov vf2 v1-6) - ) - ) - (.mul.x.vf vf1 vf1 vf2) - (.lvf vf3 (&-> arg1 vec quad)) - (.lvf vf4 (&-> arg2 vec quad)) - (.mul.x.vf acc vf3 vf1) - (.add.mul.y.vf vf3 vf4 vf1 acc) - (.svf (&-> arg0 vec quad) vf3) - (.mov v1-7 vf3) - ) - ) - ) - arg0 - ) - ) + (let* ((f1-4 1.0) + (f2-1 f0-0) + (f1-6 (sqrtf (- f1-4 (* f2-1 f2-1)))) + (f0-6 (/ (- f1-6 f0-0) (+ f1-6 f0-0))) + (f28-0 (/ 1.0 f1-6))) + (let ((f0-7 (atan-series-rad f0-6)) + (s2-0 (new 'stack-no-clear 'vector))) + (set! (-> s2-0 x) (* (- 1.0 arg3) f0-7)) + (set! (-> s2-0 y) (* arg3 f0-7 f30-0)) + (vector-sin-rad! s2-0 s2-0) + (.lvf vf1 (&-> s2-0 quad))) + (let ((v1-6 f28-0)) (.mov vf2 v1-6))) + (.mul.x.vf vf1 vf1 vf2) + (.lvf vf3 (&-> arg1 vec quad)) + (.lvf vf4 (&-> arg2 vec quad)) + (.mul.x.vf acc vf3 vf1) + (.add.mul.y.vf vf3 vf4 vf1 acc) + (.svf (&-> arg0 vec quad) vf3) + (.mov v1-7 vf3)))) + arg0)) (defun quaternion-pseudo-slerp! ((arg0 quaternion) (arg1 quaternion) (arg2 quaternion) (arg3 float)) "This is a bad interpolation between quaternions. It lerps then normalizes. @@ -701,31 +538,21 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (let ((f1-0 (quaternion-dot arg1 arg2)) - (f0-0 1.0) - ) + (f0-0 1.0)) (when (< f1-0 0.0) (- f1-0) - (set! f0-0 -1.0) - ) - (let ((v1-2 (- 1.0 arg3))) - (.mov vf1 v1-2) - ) - (let ((v1-3 (* arg3 f0-0))) - (.mov vf2 v1-3) - ) - ) + (set! f0-0 -1.0)) + (let ((v1-2 (- 1.0 arg3))) (.mov vf1 v1-2)) + (let ((v1-3 (* arg3 f0-0))) (.mov vf2 v1-3))) (.lvf vf3 (&-> arg1 vec quad)) (.lvf vf4 (&-> arg2 vec quad)) (.mul.x.vf acc vf3 vf1) (.add.mul.x.vf vf3 vf4 vf2 acc) (.svf (&-> arg0 vec quad) vf3) (quaternion-normalize! arg0) - arg0 - ) - ) + arg0)) (defmacro quaternion-vompula-hack (vf-out vf-in) `(let ((in-vec (new 'stack-no-clear 'vector)) @@ -735,9 +562,7 @@ (set! (-> out-vec y) (* (-> in-vec z) (-> in-vec x))) (set! (-> out-vec z) (* (-> in-vec x) (-> in-vec y))) ;;(set! (-> out-vec w) (-> in-vec w)) - (.lvf ,vf-out (&-> out-vec quad)) - ) - ) + (.lvf ,vf-out (&-> out-vec quad)))) (defun quaternion-zxy! ((arg0 quaternion) (arg1 vector)) "Make a quaternion from a sequence of z, x, y axis rotations." @@ -749,18 +574,15 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) + (vf7 :class vf)) (init-vf0-vector) (let ((s4-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (vector-rad<-vector-deg/2! s4-0 arg1) (vector-sincos-rad! gp-0 s5-0 s4-0) (.lvf vf1 (&-> gp-0 quad)) - (.lvf vf2 (&-> s5-0 quad)) - ) + (.lvf vf2 (&-> s5-0 quad))) (.mul.x.vf vf4 vf0 vf1 :mask #b1000) (.add.vf vf4 vf0 vf2 :mask #b111) (.sub.vf vf4 vf0 vf4 :mask #b110) @@ -775,157 +597,112 @@ (.mul.vf acc vf6 vf4) (.add.mul.vf vf7 vf5 vf3 acc) (.svf (&-> arg0 vec quad) vf7) - arg0 - ) - ) + arg0)) (defun vector-x-quaternion! ((arg0 vector) (arg1 quaternion)) "Get the first row of the rotation matrix for this quaternion" (let ((s5-0 (new-stack-matrix0))) (quaternion->matrix s5-0 arg1) - (set! (-> arg0 quad) (-> (the-as (pointer uint128) (-> s5-0 vector)) 0)) - ) - arg0 - ) + (set! (-> arg0 quad) (-> (the-as (pointer uint128) (-> s5-0 vector)) 0))) + arg0) (defun vector-y-quaternion! ((arg0 vector) (arg1 quaternion)) "Get the second row of the rotation matrix for this quaternion" (let ((s5-0 (new-stack-matrix0))) (quaternion->matrix s5-0 arg1) - (set! (-> arg0 quad) (-> (the-as (pointer uint128) (-> s5-0 vector 1)) 0)) - ) - arg0 - ) + (set! (-> arg0 quad) (-> (the-as (pointer uint128) (-> s5-0 vector 1)) 0))) + arg0) (defun vector-z-quaternion! ((arg0 vector) (arg1 quaternion)) "Get the third row of the rotation matrix for this quaternion" (let ((s5-0 (new-stack-matrix0))) (quaternion->matrix s5-0 arg1) - (set! (-> arg0 quad) (-> (the-as (pointer uint128) (-> s5-0 vector 2)) 0)) - ) - arg0 - ) + (set! (-> arg0 quad) (-> (the-as (pointer uint128) (-> s5-0 vector 2)) 0))) + arg0) (defun quaternion-y-angle ((arg0 quaternion)) "Get the y rotation angle. Not very efficient" - (let ((v1-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) arg0))) - (atan (-> v1-1 x) (-> v1-1 z)) - ) - ) + (let ((v1-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) arg0))) (atan (-> v1-1 x) (-> v1-1 z)))) (defun quaternion-vector-y-angle ((arg0 quaternion) (arg1 vector)) "Not sure. Angle between quaternion and axis, projected in xz plane?" (let ((f30-0 (quaternion-y-angle arg0)) - (f0-2 (atan (-> arg1 x) (-> arg1 z))) - ) - (deg-diff f30-0 f0-2) - ) - ) + (f0-2 (atan (-> arg1 x) (-> arg1 z)))) + (deg-diff f30-0 f0-2))) (defun quaternion-rotate-local-x! ((arg0 quaternion) (arg1 quaternion) (arg2 float)) "Rotate existing quaternion along x axis." (let ((a2-1 (quaternion-vector-angle! (new-stack-quaternion0) (new 'static 'vector :x 1.0 :w 1.0) arg2))) - (quaternion-normalize! (quaternion*! arg0 arg1 a2-1)) - ) - ) + (quaternion-normalize! (quaternion*! arg0 arg1 a2-1)))) (defun quaternion-rotate-local-y! ((arg0 quaternion) (arg1 quaternion) (arg2 float)) "Rotate existing quaternion along y axis" (let ((a2-1 (quaternion-vector-angle! (new-stack-quaternion0) (new 'static 'vector :y 1.0 :w 1.0) arg2))) - (quaternion-normalize! (quaternion*! arg0 arg1 a2-1)) - ) - ) + (quaternion-normalize! (quaternion*! arg0 arg1 a2-1)))) (defun quaternion-rotate-local-z! ((arg0 quaternion) (arg1 quaternion) (arg2 float)) "Rotate existing quaternion along z axis." (let ((a2-1 (quaternion-vector-angle! (new-stack-quaternion0) (new 'static 'vector :z 1.0 :w 1.0) arg2))) - (quaternion-normalize! (quaternion*! arg0 arg1 a2-1)) - ) - ) + (quaternion-normalize! (quaternion*! arg0 arg1 a2-1)))) (defun quaternion-rotate-y! ((arg0 quaternion) (arg1 quaternion) (arg2 float)) "Rotate existing quaternion along y axis (right multiply)" (let ((a1-2 (quaternion-vector-angle! (new-stack-quaternion0) (new 'static 'vector :y 1.0 :w 1.0) arg2))) - (quaternion-normalize! (quaternion*! arg0 a1-2 arg1)) - ) - ) + (quaternion-normalize! (quaternion*! arg0 a1-2 arg1)))) (defun quaternion-rotate-x! ((arg0 quaternion) (arg1 quaternion) (arg2 float)) "Rotate existing quaternion along x axis. This has a different implementation from the others for some reason." - (let ((a1-3 (quaternion-vector-angle! (new-stack-quaternion0) (vector-x-quaternion! (new-stack-vector0) arg1) arg2)) - ) - (quaternion-normalize! (quaternion*! arg0 a1-3 arg1)) - ) - ) + (let ((a1-3 (quaternion-vector-angle! (new-stack-quaternion0) (vector-x-quaternion! (new-stack-vector0) arg1) arg2))) + (quaternion-normalize! (quaternion*! arg0 a1-3 arg1)))) (defun quaternion-rotate-z! ((arg0 quaternion) (arg1 quaternion) (arg2 float)) "Rotate existing quaternion along z axis. Has the weird implementation too." - (let ((a1-3 (quaternion-vector-angle! (new-stack-quaternion0) (vector-z-quaternion! (new-stack-vector0) arg1) arg2)) - ) - (quaternion-normalize! (quaternion*! arg0 a1-3 arg1)) - ) - ) + (let ((a1-3 (quaternion-vector-angle! (new-stack-quaternion0) (vector-z-quaternion! (new-stack-vector0) arg1) arg2))) + (quaternion-normalize! (quaternion*! arg0 a1-3 arg1)))) (defun quaternion-delta-y ((arg0 quaternion) (arg1 quaternion)) "Difference in yaw between two quaternions" (acos (vector-dot (vector-z-quaternion! (new 'stack-no-clear 'vector) arg0) - (vector-z-quaternion! (new 'stack-no-clear 'vector) arg1) - ) - ) - ) + (vector-z-quaternion! (new 'stack-no-clear 'vector) arg1)))) (defun quaternion-rotate-y-to-vector! ((arg0 quaternion) (arg1 quaternion) (arg2 quaternion) (arg3 float)) "Rotate along y so z-axis points to match another. Use arg3 as the max rotation amount." (let ((s5-0 (new 'stack-no-clear 'quaternion))) (let ((t9-0 vector-xz-normalize!) - (a0-1 (new 'stack-no-clear 'vector)) - ) + (a0-1 (new 'stack-no-clear 'vector))) (set! (-> a0-1 x) (-> arg2 x)) (set! (-> a0-1 y) 0.0) (set! (-> a0-1 z) (-> arg2 z)) (set! (-> a0-1 w) 1.0) (let ((s0-0 (t9-0 a0-1 1.0))) - (quaternion-from-two-vectors-max-angle! - s5-0 - (vector-z-quaternion! (the-as vector (new 'stack-no-clear 'quaternion)) arg1) - s0-0 - arg3 - ) - ) - ) - (quaternion-normalize! (quaternion*! arg0 s5-0 arg1)) - ) - ) + (quaternion-from-two-vectors-max-angle! s5-0 + (vector-z-quaternion! (the-as vector (new 'stack-no-clear 'quaternion)) arg1) + s0-0 + arg3))) + (quaternion-normalize! (quaternion*! arg0 s5-0 arg1)))) (defun vector-rotate-y! ((arg0 vector) (arg1 vector) (arg2 float)) "Rotate vector along y axis. Not very efficient." (let ((a1-2 (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) (new 'static 'vector :y 1.0 :w 1.0) arg2)) - (s4-0 (new 'stack-no-clear 'matrix)) - ) + (s4-0 (new 'stack-no-clear 'matrix))) (quaternion->matrix s4-0 a1-2) - (vector-matrix*! arg0 arg1 s4-0) - ) - ) - + (vector-matrix*! arg0 arg1 s4-0))) ;; note that these kind of assume a rotation ordering where you can yaw as much as you want, ;; but if you pitch 180 degrees everything is bad. (defun vector-y-angle ((arg0 vector)) "Get the yaw angle of a vector." - (atan (-> arg0 x) (-> arg0 z)) - ) + (atan (-> arg0 x) (-> arg0 z))) (defun vector-x-angle ((arg0 vector)) "Get the pitch angle of a vector." - (atan (-> arg0 y) (vector-xz-length arg0)) - ) + (atan (-> arg0 y) (vector-xz-length arg0))) (defun quaterion<-rotate-y-vector ((arg0 quaternion) (arg1 vector)) "Create a quaternion representing only the yaw of the given vector" - (quaternion-vector-angle! arg0 (new 'static 'vector :y 1.0 :w 1.0) (vector-y-angle arg1)) - ) + (quaternion-vector-angle! arg0 (new 'static 'vector :y 1.0 :w 1.0) (vector-y-angle arg1))) (defun-debug quaternion-validate ((arg0 quaternion)) "Verify that a quaternion is valid, print an error if not." @@ -933,25 +710,15 @@ (let ((f0-0 (quaternion-norm arg0))) (when (or (< 1.01 f0-0) (< f0-0 0.99)) (format #t "WARNING: bad quaternion (magnitude ~F) process is " f0-0) - (if (and pp (type-type? (-> pp type) process-tree)) - (format #t "~A~%" (-> pp name)) - (format #t "#f~%") - ) - ) - ) + (if (and pp (type-type? (-> pp type) process-tree)) (format #t "~A~%" (-> pp name)) (format #t "#f~%")))) 0 - (none) - ) - ) + (none))) (defun quaternion-xz-angle ((arg0 quaternion)) "yet another function to compute the yaw of a quaternion. This is a particularly inefficient version." (let ((gp-0 (new 'stack-no-clear 'matrix)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (quaternion->matrix gp-0 arg0) (set-vector! s5-0 0.0 0.0 1.0 1.0) (vector-matrix*! s5-0 s5-0 gp-0) - (vector-y-angle s5-0) - ) - ) + (vector-y-angle s5-0))) diff --git a/goal_src/jak1/engine/math/transform-h.gc b/goal_src/jak1/engine/math/transform-h.gc index 7218d758bc..08084b2f1e 100644 --- a/goal_src/jak1/engine/math/transform-h.gc +++ b/goal_src/jak1/engine/math/transform-h.gc @@ -1,33 +1,23 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: transform-h.gc -;; name in dgo: transform-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; Transformation. w components of vectors should be 1.0 ;; This can represent any rotation, translation, and scaling. ;; Note that the scaling is applied before rotation (meaning it scales along the axes of the pre-transformed frame). (deftype transform (structure) - ((trans vector :inline) - (rot vector :inline) - (scale vector :inline) - ) - ) + ((trans vector :inline) + (rot vector :inline) + (scale vector :inline))) ;; Like transform, but it's a basic. ;; some in-game objects have trs as their parent type to represent their location in the game world. (deftype trs (basic) - ((trans vector :inline) - (rot vector :inline) - (scale vector :inline) - ) + ((trans vector :inline) + (rot vector :inline) + (scale vector :inline)) (:methods - (new (symbol type) _type_) - ) - ) + (new (symbol type) _type_))) diff --git a/goal_src/jak1/engine/math/transform.gc b/goal_src/jak1/engine/math/transform.gc index 39c0a93ad6..2bdfa877af 100644 --- a/goal_src/jak1/engine/math/transform.gc +++ b/goal_src/jak1/engine/math/transform.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/matrix.gc") (require "engine/math/transform-h.gc") -;; name: transform.gc -;; name in dgo: transform -;; dgos: GAME, ENGINE - ;; note: transformq and trsq is mostly used instead of transform. ;; DECOMP BEGINS @@ -18,8 +13,7 @@ (format #t "~T~Ttrans:~F ~F ~F ~F ~%" (-> this trans x) (-> this trans y) (-> this trans z) (-> this trans w)) (format #t "~T~Trot: ~F ~F ~F ~F ~%" (-> this rot x) (-> this rot y) (-> this rot z) (-> this rot w)) (format #t "~T~Tscale:~F ~F ~F ~F>" (-> this scale x) (-> this scale y) (-> this scale z) (-> this scale w)) - this - ) + this) (defmethod new trs ((allocation symbol) (type-to-make type)) "Create a new trs and set it equal to identity." @@ -27,15 +21,12 @@ (set! (-> this trans w) 1.0) (set! (-> this rot w) 1.0) (vector-identity! (-> this scale)) - this - ) - ) + this)) (defun transform-matrix-calc! ((tf transform) (dst-mat matrix)) "Convert a transform to a matrix. This is not particularly efficient." (let ((s4-0 (new-stack-matrix0)) - (s3-0 (new-stack-matrix0)) - ) + (s3-0 (new-stack-matrix0))) ;; start with identity (matrix-identity! dst-mat) ;; set translation (which also sets identity...) @@ -51,15 +42,12 @@ (matrix*! s3-0 s4-0 dst-mat) ;; apply scale (matrix-scale! s4-0 (-> tf scale)) - (matrix*! dst-mat s4-0 s3-0) - ) - ) + (matrix*! dst-mat s4-0 s3-0))) (defun transform-matrix-parent-calc! ((tf transform) (dst-mat matrix) (inv-scale vector)) "Convert a transform to a matrix, applying an inverse scaling." (let ((s4-0 (new-stack-matrix0)) - (s3-0 (new-stack-matrix0)) - ) + (s3-0 (new-stack-matrix0))) (matrix-identity! s3-0) (matrix-translate! s3-0 (-> tf trans)) (matrix-inv-scale! s4-0 inv-scale) @@ -71,12 +59,9 @@ (matrix-rotate-z! s4-0 (-> tf rot z)) (matrix*! s3-0 s4-0 dst-mat) (matrix-scale! s4-0 (-> tf scale)) - (matrix*! dst-mat s4-0 s3-0) - ) - ) + (matrix*! dst-mat s4-0 s3-0))) (defun trs-matrix-calc! ((tf trs) (dst-mat matrix)) "Convert a trs to a matrix" ;; this relies on the fact that trs and transform both have the same memory layout. - (transform-matrix-calc! (the-as transform (-> tf trans)) dst-mat) - ) + (transform-matrix-calc! (the-as transform (-> tf trans)) dst-mat)) diff --git a/goal_src/jak1/engine/math/transformq-h.gc b/goal_src/jak1/engine/math/transformq-h.gc index 6b33f98531..5168ad808e 100644 --- a/goal_src/jak1/engine/math/transformq-h.gc +++ b/goal_src/jak1/engine/math/transformq-h.gc @@ -1,31 +1,22 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/quaternion-h.gc") (require "engine/math/vector-h.gc") (require "engine/math/transform-h.gc") -;; name: transformq-h.gc -;; name in dgo: transformq-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; the transformq is a transform, but _replaces_ the rotation field with a quaternion. ;; it is much more commonly used than transform. (deftype transformq (transform) ;; this overlays the rot field of transform. - ((quat quaternion :inline :overlay-at (-> rot x)) - ) - ) + ((quat quaternion :inline :overlay-at (-> rot x)))) ;; trsq is the quaternion version of trs (trs is like a transform, but is basic.) (deftype trsq (trs) ;; this overlays the rot field of trs. - ((quat quaternion :inline :overlay-at (-> rot x)) - ) - ) + ((quat quaternion :inline :overlay-at (-> rot x)))) ;; Representing a translate/rotate/scale with a quaternion and a velocity. ;; This is often used as the base type for the position of a game object that can move around @@ -35,48 +26,42 @@ ;; note: Jak's control uses this as a base class. (deftype trsqv (trsq) - ((pause-adjust-distance meters :offset 4) ;; hack: adjusts the distance where actor logic is paused, if this is an actor - (nav-radius meters :offset 8) ;; hack: the radius of the bounding sphere used by the navigate system. - (transv vector :inline) ;; velocity (meters/second) - (rotv vector :inline) ;; angular velocity (deg/second) - (scalev vector :inline) ;; scale velocity (unused?) - + ((pause-adjust-distance meters :offset 4) ;; hack: adjusts the distance where actor logic is paused, if this is an actor + (nav-radius meters :offset 8) ;; hack: the radius of the bounding sphere used by the navigate system. + (transv vector :inline) ;; velocity (meters/second) + (rotv vector :inline) ;; angular velocity (deg/second) + (scalev vector :inline) ;; scale velocity (unused?) ;; there's a hacky ~first-order orientation yaw control with hysteresis ;; it makes the yaw change smoothly and attempts to cancel out oscillations from the collision system - (dir-targ quaternion :inline) ;; direction target - (angle-change-time time-frame) ;; the time when we change rotation directions - (old-y-angle-diff float) ;; the amount we moved last time + (dir-targ quaternion :inline) ;; direction target + (angle-change-time time-frame) ;; the time when we change rotation directions + (old-y-angle-diff float) ;; the amount we moved last time ) (:methods - (seek-toward-heading-vec! (_type_ vector float time-frame) quaternion) - (set-heading-vec! (_type_ vector) quaternion) - (seek-to-point-toward-point! (_type_ vector float time-frame) quaternion) - (point-toward-point! (_type_ vector) quaternion) - (seek-toward-yaw-angle! (_type_ float float time-frame) quaternion) - (set-yaw-angle-clear-roll-pitch! (_type_ float) quaternion) - (set-roll-to-grav! (_type_ float) quaternion) - (set-roll-to-grav-2! (_type_ float) quaternion) - (rotate-toward-orientation! (_type_ quaternion float float) quaternion) - (set-quaternion! (_type_ quaternion) quaternion) - (set-heading-vec-clear-roll-pitch! (_type_ vector) quaternion) - (point-toward-point-clear-roll-pitch! (_type_ vector) quaternion) - (rot->dir-targ! (_type_) quaternion) - (y-angle (_type_) float) - (global-y-angle-to-point (_type_ vector) float) - (relative-y-angle-to-point (_type_ vector) float) - (roll-relative-to-gravity (_type_) float) - (set-and-limit-velocity (_type_ int vector float) trsqv) - (get-quaternion (_type_) quaternion) - ) - ) - + (seek-toward-heading-vec! (_type_ vector float time-frame) quaternion) + (set-heading-vec! (_type_ vector) quaternion) + (seek-to-point-toward-point! (_type_ vector float time-frame) quaternion) + (point-toward-point! (_type_ vector) quaternion) + (seek-toward-yaw-angle! (_type_ float float time-frame) quaternion) + (set-yaw-angle-clear-roll-pitch! (_type_ float) quaternion) + (set-roll-to-grav! (_type_ float) quaternion) + (set-roll-to-grav-2! (_type_ float) quaternion) + (rotate-toward-orientation! (_type_ quaternion float float) quaternion) + (set-quaternion! (_type_ quaternion) quaternion) + (set-heading-vec-clear-roll-pitch! (_type_ vector) quaternion) + (point-toward-point-clear-roll-pitch! (_type_ vector) quaternion) + (rot->dir-targ! (_type_) quaternion) + (y-angle (_type_) float) + (global-y-angle-to-point (_type_ vector) float) + (relative-y-angle-to-point (_type_ vector) float) + (roll-relative-to-gravity (_type_) float) + (set-and-limit-velocity (_type_ int vector float) trsqv) + (get-quaternion (_type_) quaternion))) (defmethod global-y-angle-to-point ((this trsqv) (arg0 vector)) "Get the angle in the xz plane from the position of this trsqv to the point arg0." - (vector-y-angle (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans))) - ) + (vector-y-angle (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)))) (defmethod relative-y-angle-to-point ((this trsqv) (arg0 vector)) "Get the y angle between the current orientation and arg0." - (deg-diff (y-angle this) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)))) - ) + (deg-diff (y-angle this) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans))))) diff --git a/goal_src/jak1/engine/math/transformq.gc b/goal_src/jak1/engine/math/transformq.gc index 0cb9415b1f..990fbd500f 100644 --- a/goal_src/jak1/engine/math/transformq.gc +++ b/goal_src/jak1/engine/math/transformq.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/physics/dynamics-h.gc") (require "engine/geometry/geometry.gc") (require "engine/math/transformq-h.gc") -;; name: transformq.gc -;; name in dgo: transformq -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod print ((this transformq)) @@ -19,28 +14,23 @@ (format #t "~T~Ttrans:~F ~F ~F ~F ~%" (-> this trans x) (-> this trans y) (-> this trans z) (-> this trans w)) (format #t "~T~Tquat: ~F ~F ~F ~F ~%" (-> this quat x) (-> this quat y) (-> this quat z) (-> this quat w)) (format #t "~T~Tscale:~F ~F ~F ~F>" (-> this scale x) (-> this scale y) (-> this scale z) (-> this scale w)) - this - ) + this) (defmethod get-quaternion ((this trsqv)) "Get the rotation as a quaternion." - (-> this quat) - ) + (-> this quat)) (defmethod set-quaternion! ((this trsqv) (arg0 quaternion)) "Set the rotation as a quaternion" - (quaternion-copy! (get-quaternion this) arg0) - ) + (quaternion-copy! (get-quaternion this) arg0)) (defmethod rot->dir-targ! ((this trsqv)) "Set the dir-targ to our current orientation" - (quaternion-copy! (-> this dir-targ) (get-quaternion this)) - ) + (quaternion-copy! (-> this dir-targ) (get-quaternion this))) (defmethod y-angle ((this trsqv)) "Get our current y-angle (y is up, so yaw)" - (quaternion-y-angle (get-quaternion this)) - ) + (quaternion-y-angle (get-quaternion this))) (defmethod seek-toward-heading-vec! ((this trsqv) (dir vector) (vel float) (frame-count time-frame)) "Adjust the orientation to point along dir, only changing our yaw. @@ -51,8 +41,7 @@ ;; limit both on a max velocity, and a proportional to error term. (yaw-limit (fmin (* vel (seconds-per-frame)) (/ (* 5.0 (fabs yaw-error)) (the float frame-count)))) ;; saturate the yaw error - (saturated-yaw (fmax (fmin yaw-error yaw-limit) (- yaw-limit))) - ) + (saturated-yaw (fmax (fmin yaw-error yaw-limit) (- yaw-limit)))) (let ((old-diff (-> this old-y-angle-diff))) (set! saturated-yaw (cond @@ -60,51 +49,33 @@ ;; But it prevents changes in direction from happening too often. ((or (= old-diff 0.0) (and (< 0.0 saturated-yaw) (< 0.0 old-diff)) - (or (and (< saturated-yaw 0.0) (< old-diff 0.0)) (time-elapsed? (-> this angle-change-time) (seconds 0.2))) - ) + (or (and (< saturated-yaw 0.0) (< old-diff 0.0)) (time-elapsed? (-> this angle-change-time) (seconds 0.2)))) (set-time! (-> this angle-change-time)) - saturated-yaw - ) + saturated-yaw) (else - ;; not sure why this isn't 0. - (* 0.000000001 saturated-yaw) - ) - ) - ) - ) + ;; not sure why this isn't 0. + (* 0.000000001 saturated-yaw))))) (set! (-> this old-y-angle-diff) saturated-yaw) - (let ((quat (get-quaternion this))) - (quaternion-rotate-y! quat quat saturated-yaw) - ) - ) - ) + (let ((quat (get-quaternion this))) (quaternion-rotate-y! quat quat saturated-yaw)))) (defmethod set-heading-vec! ((this trsqv) (arg0 vector)) "Makes us look in the arg0 direction immediately. Pitch will be unchanged." (let ((s3-0 (get-quaternion this))) - (forward-up-nopitch->quaternion - s3-0 - (vector-normalize-copy! (new 'stack-no-clear 'vector) arg0 1.0) ;; forward is the given dir. - (vector-y-quaternion! (new 'stack-no-clear 'vector) s3-0) ;; use the old up - ) - ) - ) + (forward-up-nopitch->quaternion s3-0 + (vector-normalize-copy! (new 'stack-no-clear 'vector) arg0 1.0) ;; forward is the given dir. + (vector-y-quaternion! (new 'stack-no-clear 'vector) s3-0) ;; use the old up + ))) (defmethod seek-to-point-toward-point! ((this trsqv) (arg0 vector) (arg1 float) (arg2 time-frame)) "Seek toward pointing toward arg0 from our current location." - (seek-toward-heading-vec! this (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) arg1 arg2) - ) + (seek-toward-heading-vec! this (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) arg1 arg2)) (defmethod point-toward-point! ((this trsqv) (arg0 vector)) "Immediately point toward arg0" (let ((s3-0 (get-quaternion this))) - (forward-up-nopitch->quaternion - s3-0 - (vector-normalize! (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) 1.0) - (vector-y-quaternion! (new 'stack-no-clear 'vector) s3-0) - ) - ) - ) + (forward-up-nopitch->quaternion s3-0 + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) 1.0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) s3-0)))) (defmethod seek-toward-yaw-angle! ((this trsqv) (yaw float) (vel float) (frame-count time-frame)) "Seek toward the given yaw angle." @@ -112,18 +83,15 @@ ;; make a vector that points toward +z (forward) rotated by the yaw. (set-vector! (new 'stack-no-clear 'vector) (sin yaw) 0.0 (cos yaw) 1.0) vel - frame-count) - ) + frame-count)) (defmethod set-yaw-angle-clear-roll-pitch! ((this trsqv) (yaw float)) "Immediately clear our roll and pitch and set yaw to the given angle" - (set-heading-vec-clear-roll-pitch! this (set-vector! (new 'stack-no-clear 'vector) (sin yaw) 0.0 (cos yaw) 1.0)) - ) + (set-heading-vec-clear-roll-pitch! this (set-vector! (new 'stack-no-clear 'vector) (sin yaw) 0.0 (cos yaw) 1.0))) (defmethod set-roll-to-grav! ((this trsqv) (arg0 float)) "Set our roll so that our local down aligns with standard gravity" - (set-roll-to-grav-2! this arg0) - ) + (set-roll-to-grav-2! this arg0)) (defmethod set-roll-to-grav-2! ((this trsqv) (arg0 float)) "Set our roll so that our local down aligns with standard gravity" @@ -136,18 +104,11 @@ ;; then updates the rotation matrix so that this is our y axis (up) (vector-normalize! (vector-flatten! (-> rot-mat vector 1) grav dir-z) 1.0) ;; fix up the rotation matrix x vector to make the matrix orthonormal again. - (vector-cross! (the-as vector (-> rot-mat vector)) (-> rot-mat vector 1) dir-z) - ) - + (vector-cross! (the-as vector (-> rot-mat vector)) (-> rot-mat vector 1) dir-z)) ;; add some additional roll offset - (let ((a1-5 (matrix-rotate-z! (new 'stack-no-clear 'matrix) arg0))) - (matrix*! rot-mat a1-5 rot-mat) - ) - + (let ((a1-5 (matrix-rotate-z! (new 'stack-no-clear 'matrix) arg0))) (matrix*! rot-mat a1-5 rot-mat)) ;; write it back. - (matrix->quaternion quat rot-mat) - ) - ) + (matrix->quaternion quat rot-mat))) (defmethod roll-relative-to-gravity ((this trsqv)) "Get our roll, relative to 'down' from gravity" @@ -157,82 +118,58 @@ (dir-grav (-> *standard-dynamics* gravity-normal)) ;; project gravity to our z plane (kills pitch) (grav-z-plane (vector-normalize! (vector-flatten! (new 'stack-no-clear 'vector) dir-grav dir-z) 1.0)) - (grav-dot (vector-dot grav-z-plane dir-y)) - ) + (grav-dot (vector-dot grav-z-plane dir-y))) ;; normally we'd just do (acos (vector-dot grav-z-plane y)) ;; but this won't give us the correct sign if we're rolled negatively. ;; this check below manually inverts the acos as needed. (if (< (vector-dot (vector-cross! (new 'stack-no-clear 'vector) grav-z-plane dir-y) dir-z) 0.0) - (- (acos grav-dot)) - (acos grav-dot) - ) - ) - ) + (- (acos grav-dot)) + (acos grav-dot)))) (defmethod rotate-toward-orientation! ((this trsqv) (target quaternion) (y-rate float) (z-rate float)) "Adjust our orientation toward target, subject to some rate limits. I don't think this is a very robust function and probably doesn't work right in cases where an axis flips by 180 degrees." - ;; the basic idea is that we apply two rotations: ;; the first moves our y axis toward the desired's y axis, and the second moves ;; out z axis. These are both rate limited. - (local-vars (sv-96 vector)) (let ((quat (get-quaternion this))) (let ((temp-quat (new 'stack-no-clear 'quaternion))) (when (< 0.0 z-rate) (let ((s1-0 quaternion-from-two-vectors-max-angle!) - (s0-0 temp-quat) - ) + (s0-0 temp-quat)) (set! sv-96 (vector-y-quaternion! (new 'stack-no-clear 'vector) quat)) (let ((a2-1 (vector-y-quaternion! (new 'stack-no-clear 'vector) target)) - (a3-1 (* z-rate (seconds-per-frame))) - ) - (s1-0 s0-0 sv-96 a2-1 a3-1) - ) - ) - (quaternion-normalize! (quaternion*! quat temp-quat quat)) - ) + (a3-1 (* z-rate (seconds-per-frame)))) + (s1-0 s0-0 sv-96 a2-1 a3-1))) + (quaternion-normalize! (quaternion*! quat temp-quat quat))) (when (< 0.0 y-rate) - (quaternion-from-two-vectors-max-angle! - temp-quat - (vector-z-quaternion! (new 'stack-no-clear 'vector) quat) - (vector-z-quaternion! (new 'stack-no-clear 'vector) target) - (* y-rate (seconds-per-frame)) - ) - (quaternion-normalize! (quaternion*! quat temp-quat quat)) - ) - ) - quat - ) - ) + (quaternion-from-two-vectors-max-angle! temp-quat + (vector-z-quaternion! (new 'stack-no-clear 'vector) quat) + (vector-z-quaternion! (new 'stack-no-clear 'vector) target) + (* y-rate (seconds-per-frame))) + (quaternion-normalize! (quaternion*! quat temp-quat quat)))) + quat)) (defmethod set-heading-vec-clear-roll-pitch! ((this trsqv) (arg0 vector)) "Set our rotation to point along the given heading, with no roll or pitch." - (forward-up->quaternion - (get-quaternion this) - (vector-normalize-copy! (new 'stack-no-clear 'vector) arg0 1.0) - (new 'static 'vector :y 1.0 :w 1.0) - ) - ) + (forward-up->quaternion (get-quaternion this) + (vector-normalize-copy! (new 'stack-no-clear 'vector) arg0 1.0) + (new 'static 'vector :y 1.0 :w 1.0))) (defmethod point-toward-point-clear-roll-pitch! ((this trsqv) (arg0 vector)) "Set our orientation to point toward arg0, clearing roll and pitch" - (forward-up->quaternion - (get-quaternion this) - (vector-normalize! (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) 1.0) - (new 'static 'vector :y 1.0 :w 1.0) - ) - ) + (forward-up->quaternion (get-quaternion this) + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) arg0 (-> this trans)) 1.0) + (new 'static 'vector :y 1.0 :w 1.0))) (defun transformq-copy! ((arg0 transformq) (arg1 transformq)) "Set arg0 = arg1" (set! (-> arg0 trans quad) (-> arg1 trans quad)) (set! (-> arg0 rot quad) (-> arg1 rot quad)) (set! (-> arg0 scale quad) (-> arg1 scale quad)) - arg0 - ) + arg0) (defun matrix<-transformq! ((arg0 matrix) (arg1 transformq)) "Convert to 4x4 affine transform." @@ -242,34 +179,27 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (quaternion->matrix arg0 (-> arg1 quat)) (cond - (#f - (set! (-> arg0 vector 3 quad) (-> arg1 trans quad)) - ) + (#f (set! (-> arg0 vector 3 quad) (-> arg1 trans quad))) (else - (.lvf vf1 (&-> arg1 scale quad)) - (.lvf vf2 (&-> arg1 trans quad)) - (.lvf vf3 (&-> arg0 vector 0 quad)) - (.lvf vf4 (&-> arg0 vector 1 quad)) - (.lvf vf5 (&-> arg0 vector 2 quad)) - (.mov.vf vf2 vf0 :mask #b1000) - (.mul.x.vf vf3 vf3 vf1) - (.mul.y.vf vf4 vf4 vf1) - (.mul.z.vf vf5 vf5 vf1) - (.svf (&-> arg0 vector 3 quad) vf2) - (.svf (&-> arg0 vector 0 quad) vf3) - (.svf (&-> arg0 vector 1 quad) vf4) - (.svf (&-> arg0 vector 2 quad) vf5) - (.mov v1-1 vf5) - ) - ) - arg0 - ) - ) + (.lvf vf1 (&-> arg1 scale quad)) + (.lvf vf2 (&-> arg1 trans quad)) + (.lvf vf3 (&-> arg0 vector 0 quad)) + (.lvf vf4 (&-> arg0 vector 1 quad)) + (.lvf vf5 (&-> arg0 vector 2 quad)) + (.mov.vf vf2 vf0 :mask #b1000) + (.mul.x.vf vf3 vf3 vf1) + (.mul.y.vf vf4 vf4 vf1) + (.mul.z.vf vf5 vf5 vf1) + (.svf (&-> arg0 vector 3 quad) vf2) + (.svf (&-> arg0 vector 0 quad) vf3) + (.svf (&-> arg0 vector 1 quad) vf4) + (.svf (&-> arg0 vector 2 quad) vf5) + (.mov v1-1 vf5))) + arg0)) (defun matrix<-no-trans-transformq! ((arg0 matrix) (arg1 transformq)) "Create 4x4 affine transform with no translation." @@ -278,8 +208,7 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (quaternion->matrix arg0 (-> arg1 quat)) (.lvf vf1 (&-> arg1 scale quad)) @@ -294,9 +223,7 @@ (.svf (&-> arg0 vector 0 quad) vf3) (.svf (&-> arg0 vector 1 quad) vf4) (.svf (&-> arg0 vector 2 quad) vf5) - arg0 - ) - ) + arg0)) (defun matrix<-transformq+trans! ((arg0 matrix) (arg1 transformq) (arg2 vector)) "Convert to affine transform with an additional translation (in the local frame)." @@ -307,8 +234,7 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (quaternion->matrix arg0 (-> arg1 quat)) (.lvf vf1 (&-> arg1 scale quad)) @@ -329,9 +255,7 @@ (.svf (&-> arg0 vector 0 quad) vf3) (.svf (&-> arg0 vector 1 quad) vf4) (.svf (&-> arg0 vector 2 quad) vf5) - arg0 - ) - ) + arg0)) (defun matrix<-transformq+world-trans! ((arg0 matrix) (arg1 transformq) (arg2 vector)) "Convert to affine transform with an additional translation in the world frame (not rotated)" @@ -341,8 +265,7 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (quaternion->matrix arg0 (-> arg1 quat)) (.lvf vf1 (&-> arg1 scale quad)) @@ -360,9 +283,7 @@ (.svf (&-> arg0 vector 0 quad) vf3) (.svf (&-> arg0 vector 1 quad) vf4) (.svf (&-> arg0 vector 2 quad) vf5) - arg0 - ) - ) + arg0)) (defun matrix<-parented-transformq! ((arg0 matrix) (arg1 transformq) (arg2 vector)) "Unused. Seems like the parented thing means there's an inverse scale in arg2." @@ -373,8 +294,7 @@ (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) + (vf6 :class vf)) (init-vf0-vector) (quaternion->matrix arg0 (-> arg1 quat)) (let ((v1-0 (new 'stack-no-clear 'vector))) @@ -390,8 +310,7 @@ (.mul.x.vf vf4 vf4 vf1) (.mul.y.vf vf5 vf5 vf1) (.mul.z.vf vf6 vf6 vf1) - (.lvf vf3 (&-> v1-0 quad)) - ) + (.lvf vf3 (&-> v1-0 quad))) (.mul.vf vf4 vf4 vf3) (.mul.vf vf5 vf5 vf3) (.mul.vf vf6 vf6 vf3) @@ -400,6 +319,4 @@ (.svf (&-> arg0 vector 1 quad) vf5) (.svf (&-> arg0 vector 2 quad) vf6) (.mov v1-1 vf6) - arg0 - ) - ) + arg0)) diff --git a/goal_src/jak1/engine/math/trigonometry-h.gc b/goal_src/jak1/engine/math/trigonometry-h.gc index 725abafc8e..8f34ee7420 100644 --- a/goal_src/jak1/engine/math/trigonometry-h.gc +++ b/goal_src/jak1/engine/math/trigonometry-h.gc @@ -1,25 +1,32 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: trigonometry-h.gc -;; name in dgo: trigonometry-h -;; dgos: GAME, ENGINE - ;; this file generates no code. (defun-extern sin float float) + (defun-extern cos float float) + (defun-extern vector-sincos! vector vector vector int) + (defun-extern atan float float float) + (defun-extern acos float float) + (defun-extern acos-rad float float) + (defun-extern atan2-rad float float float) + (defun-extern sincos-rad! (pointer float) float int) + (defun-extern atan-series-rad float float) + (defun-extern vector-sin-rad! vector vector vector) + (defun-extern vector-rad<-vector-deg/2! vector vector int) + (defun-extern vector-sincos-rad! vector vector vector int) + (defun-extern deg-diff float float float) diff --git a/goal_src/jak1/engine/math/trigonometry.gc b/goal_src/jak1/engine/math/trigonometry.gc index f4a8da176c..1fa21696cb 100644 --- a/goal_src/jak1/engine/math/trigonometry.gc +++ b/goal_src/jak1/engine/math/trigonometry.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") (require "engine/math/math.gc") -;; name: trigonometry.gc -;; name in dgo: trigonometry -;; dgos: GAME, ENGINE - ;; The "rotation" unit stores an angle in a float, where 1.0 = 1/65,536 (1/2^16) of a rotation. ;; Use the ~r format specifier to print rotations as degrees. ;; In general, functions which use these units will only be accurate to within 1/65,536th of a rotation, @@ -23,7 +18,6 @@ ;; constants are stored as hex. Commonly used constants that are exactly represented (1, 0.5, etc) will appear ;; normally. - ;; There is a bug in some of the cosine functions that can be fixed by toggling this flag. (defglobalconstant FIX_COSINE_BUG #f) @@ -32,9 +26,13 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defconstant ROT_TO_RAD (the-as float #x38c90fda)) + (defconstant PI (the-as float #x40490fda)) + (defconstant MINUS_PI (the-as float #xc0490fda)) + (defconstant PI_OVER_2 (the-as float #x3fc90fda)) + (defconstant TWO_PI (the-as float #x40c90fda)) ;; DECOP BEGINS @@ -43,184 +41,129 @@ "Wrap arg0 to be within (-pi, pi)." (let ((f0-1 (+ PI arg0))) (if (< 0.0 f0-1) - (+ MINUS_PI (- f0-1 (* (the float (the int (/ f0-1 6.283185))) 6.283185))) - (+ PI (- f0-1 (* (the float (the int (/ f0-1 6.283185))) 6.283185))) - ) - ) - ) + (+ MINUS_PI (- f0-1 (* (the float (the int (/ f0-1 6.283185))) 6.283185))) + (+ PI (- f0-1 (* (the float (the int (/ f0-1 6.283185))) 6.283185)))))) (defun deg- ((arg0 float) (arg1 float)) "Compute arg0-arg1, unwrapped, using rotation units. Result should be in the range (-180, 180)" - (the float (sar (- (shl (the int arg0) 48) - (shl (the int arg1) 48)) - 48) - ) - ) + (the float (sar (- (shl (the int arg0) 48) (shl (the int arg1) 48)) 48))) (defun deg-diff ((arg0 float) (arg1 float)) "Very similar to the function above, but computes arg1 - arg0 instead." - (the float (sar (- (shl (the int arg1) 48) - (shl (the int arg0) 48)) - 48) - ) - ) + (the float (sar (- (shl (the int arg1) 48) (shl (the int arg0) 48)) 48))) (defun deg-seek ((in float) (target float) (max-diff float)) "Move in toward target by at most max-diff, using rotation units" (let ((in-int (shl (the int in) 48)) - (target-int (shl (the int target) 48)) - ) + (target-int (shl (the int target) 48))) (let* ((max-diff-int (shl (the int max-diff) 48)) (diff (- target-int in-int)) - (abs-diff (abs diff)) - ) - (set! target-int (cond - ((< abs-diff 0) - (+ in-int max-diff-int) - ) - ((>= max-diff-int abs-diff) - target-int - ) - ((>= diff 0) - (+ in-int max-diff-int) - ) - (else - (- in-int max-diff-int) - ) - ) - ) - ) - (the float (sar target-int 48)) - ) - ) + (abs-diff (abs diff))) + (set! target-int + (cond + ((< abs-diff 0) (+ in-int max-diff-int)) + ((>= max-diff-int abs-diff) target-int) + ((>= diff 0) (+ in-int max-diff-int)) + (else (- in-int max-diff-int))))) + (the float (sar target-int 48)))) (defun deg-seek-smooth ((in float) (target float) (max-diff float) (amount float)) "Step amount of the way from in to target, by at most max-diff, using rotation units" (let ((step (* (deg- target in) amount))) - (if (< max-diff (fabs step)) - (set! step (if (>= step 0.0) - max-diff - (- max-diff) - ) - ) - ) - (+ in step) - ) - ) + (if (< max-diff (fabs step)) (set! step (if (>= step 0.0) max-diff (- max-diff)))) + (+ in step))) (defun deg-lerp-clamp ((min-val float) (max-val float) (in float)) "Map [0, 1] to min-val, max-val, handling wrapping and saturating, using rotation units." (cond - ((>= 0.00000000 in) - min-val - ) - ((>= in 1.00000000) - max-val - ) - (else - (the float - (sar (shl (the int (+ min-val - (* in (deg-diff min-val max-val)))) - 48) - 48) - ) - ) - ) - ) + ((>= 0.00000000 in) min-val) + ((>= in 1.00000000) max-val) + (else (the float (sar (shl (the int (+ min-val (* in (deg-diff min-val max-val)))) 48) 48))))) ;; create a static array with the given values, interpreted as floats. (defmacro make-float-table (name size vals) - `(define ,name (new 'static 'boxed-array :type float :length ,size - ,@(apply (lambda (x) `(the-as float ,x)) vals))) - ) + `(define ,name (new 'static 'boxed-array :type float :length ,size ,@(apply (lambda (x) `(the-as float ,x)) vals)))) ;; table[x] = 1/(2^x) ;; unused? -(make-float-table - binary-table - 32 - (#x3f800000 ;; 1.0 - #x3f000000 ;; 0.5 - #x3e800000 ;; 0.25 - #x3e000000 ;; ... - #x3d800000 - #x3d000000 - #x3c800000 - #x3c000000 - #x3b800000 - #x3b000000 - #x3a800000 - #x3a000000 - #x39800000 - #x39000000 - #x38800000 - #x38000000 - #x37800000 - #x37000000 - #x36800000 - #x36000000 - #x35800000 - #x35000000 - #x34800000 - #x34000000 - #x33800000 - #x33000000 - #x32800000 - #x32000000 - #x31800000 - #x31000000 - #x30800000 - #x30000000 - ) - ) +(make-float-table binary-table + 32 + (#x3f800000 ;; 1.0 + #x3f000000 ;; 0.5 + #x3e800000 ;; 0.25 + #x3e000000 ;; ... + #x3d800000 + #x3d000000 + #x3c800000 + #x3c000000 + #x3b800000 + #x3b000000 + #x3a800000 + #x3a000000 + #x39800000 + #x39000000 + #x38800000 + #x38000000 + #x37800000 + #x37000000 + #x36800000 + #x36000000 + #x35800000 + #x35000000 + #x34800000 + #x34000000 + #x33800000 + #x33000000 + #x32800000 + #x32000000 + #x31800000 + #x31000000 + #x30800000 + #x30000000)) ;; not sure what these values are yet. ;; unused. -(make-float-table - sincos-table - 32 - (#x3f490fdb - #x3eed6338 - #x3e7adbb0 - #x3dfeadd5 - #x3d7faade - #x3cffeaae - #x3c7ffaab - #x3bfffeab - #x3b7fffab - #x3affffeb - #x3a7ffffb - #x39fffffe - #x39800000 - #x39000000 - #x38800000 - #x38000000 - #x37800000 - #x37000000 - #x36800000 - #x36000000 - #x35800000 - #x35000000 - #x34800000 - #x34000000 - #x33800000 - #x33000000 - #x32800000 - #x32000000 - #x31800000 - #x31000000 - #x30800000 - #x30000000 - ) - ) +(make-float-table sincos-table + 32 + (#x3f490fdb + #x3eed6338 + #x3e7adbb0 + #x3dfeadd5 + #x3d7faade + #x3cffeaae + #x3c7ffaab + #x3bfffeab + #x3b7fffab + #x3affffeb + #x3a7ffffb + #x39fffffe + #x39800000 + #x39000000 + #x38800000 + #x38000000 + #x37800000 + #x37000000 + #x36800000 + #x36000000 + #x35800000 + #x35000000 + #x34800000 + #x34000000 + #x33800000 + #x33000000 + #x32800000 + #x32000000 + #x31800000 + #x31000000 + #x30800000 + #x30000000)) (defun sin ((arg0 float)) "Compute the sine of an angle in rotation units. Unwraps it." ;; convert (let ((f2-0 (* 0.000095873795 (the float (sar (shl (the int arg0) 48) 48))))) - (let ((f0-1 f2-0)) - ) + (let ((f0-1 f2-0))) (let* ((f1-4 (* 0.999998 f2-0)) (f0-3 (* f2-0 f2-0)) (f2-1 (* f2-0 f0-3)) @@ -229,30 +172,25 @@ (f1-6 (+ f1-5 (* 0.008326521 f2-2))) (f2-3 (* f2-2 f0-3)) (f1-7 (+ f1-6 (* -0.0001956241 f2-3))) - (f0-4 (* f2-3 f0-3)) - ) - (+ f1-7 (* 0.0000023042373 f0-4)) - ) - ) - ) + (f0-4 (* f2-3 f0-3))) + (+ f1-7 (* 0.0000023042373 f0-4))))) (defun sin-rad ((arg0 float)) "Compute the sine of an angle in radians. No unwrap is done, should be in -pi, pi" (local-vars - (f1-0 float) - (f2-0 float) - (f3-0 float) - (f4-0 float) - (f5-0 float) - (f6-0 float) - (f7-0 float) - (f8-0 float) - (f9-0 float) - (f10-0 float) - (f11-0 float) - (acc float) - ) + (f1-0 float) + (f2-0 float) + (f3-0 float) + (f4-0 float) + (f5-0 float) + (f6-0 float) + (f7-0 float) + (f8-0 float) + (f9-0 float) + (f10-0 float) + (f11-0 float) + (acc float)) (set! f1-0 (* arg0 arg0)) (set! f7-0 (the-as float #x3f7fffde)) (set! f8-0 (the-as float #xbe2aa8f5)) @@ -273,26 +211,24 @@ ;;(.madda.s f5-0 f10-0) (set! acc (+ acc (* f5-0 f10-0))) ;;(.madd.s f12-0 f6-0 f11-0) - (+ acc (* f6-0 f11-0)) - ) + (+ acc (* f6-0 f11-0))) ;; taylor series coefficients for sine approximation -(define *sin-poly-vec* (new 'static 'vector - :x (the-as float #xbe2aa8f5) ;; -1/3! - :y (the-as float #x3c086bf6) ;; 1/5! - :z (the-as float #xb94d2072) ;; -1/7! - :w (the-as float #x361aa27f) ;; 1/9? - ) - ) +(define *sin-poly-vec* + (new 'static + 'vector + :x + (the-as float #xbe2aa8f5) ;; -1/3! + :y + (the-as float #x3c086bf6) ;; 1/5! + :z + (the-as float #xb94d2072) ;; -1/7! + :w + (the-as float #x361aa27f) ;; 1/9? + )) ;; -(define *sin-poly-vec2* (new 'static 'vector - :x (the-as float #x3f7fffde) - :y 0.0 - :z 0.0 - :w 0.0 - ) - ) +(define *sin-poly-vec2* (new 'static 'vector :x (the-as float #x3f7fffde) :y 0.0 :z 0.0 :w 0.0)) (defun vector-sin-rad! ((dst vector) (src vector)) "Taylor series approximation of sine on all 4 elements in a vector. @@ -344,24 +280,22 @@ (.svf dst vf2) dst ;; arg0 - ) - ) + )) (defun cos-rad ((arg0 float)) "Cosine with taylor series. Input is in radians, in -pi, pi. - TODO constants" (local-vars - (f1-0 float) - (f3-0 float) - (f4-0 float) - (f5-0 float) - (f7-0 float) - (f8-0 float) - (f9-0 float) - (f10-0 float) - (f11-0 float) - (acc float) - ) + (f1-0 float) + (f3-0 float) + (f4-0 float) + (f5-0 float) + (f7-0 float) + (f8-0 float) + (f9-0 float) + (f10-0 float) + (f11-0 float) + (acc float)) (set! f1-0 (* arg0 arg0)) (set! f7-0 1.000000) (set! f8-0 (the-as float #xbefffd62)) @@ -384,15 +318,17 @@ ;;(the-as float f12-0) ) - (define *cos-poly-vec* - (new 'static 'vector - :x (the-as float #xbefffd62) - :y (the-as float #x3d2a7a28) - :z (the-as float #xbab2bc31) - :w (the-as float #x37a933eb) - ) - ) + (new 'static + 'vector + :x + (the-as float #xbefffd62) + :y + (the-as float #x3d2a7a28) + :z + (the-as float #xbab2bc31) + :w + (the-as float #x37a933eb))) (defun vector-cos-rad! ((dst vector) (src vector)) "Compute the cosine of all 4 vector elements. @@ -434,10 +370,7 @@ (.add.mul.w.vf vf2 vf6 vf9 acc) ;;(.sqc2 vf2 0 arg0) (.svf dst vf2) - dst - ) - ) - + dst)) (defun vector-sincos-rad! ((dst-sin vector) (dst-cos vector) (src vector)) "Compute the sine and cosine of each element of src, storing it in dst-sin and dst-cos. @@ -458,8 +391,7 @@ (vf12 :class vf) (vf13 :class vf) (vf14 :class vf) - (acc :class vf) - ) + (acc :class vf)) (init-vf0-vector) ;; (.lqc2 vf1 0 arg2) (.lvf vf1 src) @@ -515,165 +447,154 @@ ;; (.sqc2 vf14 0 arg1) (.svf dst-cos vf14) ;; (set! v0-0 0) - 0 - ) - ) + 0)) (defmacro sincos-rad-asm (out x) ;; Compute the sine and cosine of x, store it in the output array ;; this assembly is shared in two functions. `(rlet ((f10 :class fpr :type float) ;; coeff 1.0 - (f11 :class fpr :type float) ;; coeff -1/3! - (f12 :class fpr :type float) ;; coeff 1/5! - (f14 :class fpr :type float) ;; coeff -1/7! - (f15 :class fpr :type float) ;; coeff 1/9! - (f1 :class fpr :type float) ;; x - (f2 :class fpr :type float) ;; x^2 - (f3 :class fpr :type float) ;; x^3 - (f4 :class fpr :type float) ;; x^4 - (f5 :class fpr :type float) ;; x^5 - (f6 :class fpr :type float) ;; x^6 - (f7 :class fpr :type float) ;; x^7 - (f8 :class fpr :type float) ;; x^8 - (f9 :class fpr :type float) ;; x^9 - (f21 :class fpr :type float) - (f22 :class fpr :type float) ;; 0 ? - (acc :class fpr :type float) ;; temp - (f16 :class fpr :type float) ;; 1.0 - (f17 :class fpr :type float) ;; cos coeff 1 - (f18 :class fpr :type float) ;; cos coeff 2 - (f19 :class fpr :type float) ;; cos coeff 3 - (f20 :class fpr :type float) ;; cos coeff 4 - ) - ;; lui v1, 16255 - ;; lui a2, -16854 - ;; ori v1, v1, 65502 - ;; mtc1 f1, a1 - (set! f1 ,x) - ;; ori a1, a2, 43253 - ;; sub.s f22, f22, f22 - (set! f22 (the-as float 0)) - ;; lui a2, 15368 - ;; mtc1 f10, v1 - (set! f10 (the-as float #x3F7FFFDE)) ;; almost 1.0 - ;; ori v1, a2, 27638 - ;; mtc1 f11, a1 - (set! f11 (the-as float #xBE2AA8F5)) ;; -0.166, 1/3! - ;; lui a1, -18099 - ;; mul.s f2, f1, f1 - (set! f2 (* f1 f1)) - ;; ori a1, a1, 8306 - ;; mtc1 f12, v1 - (set! f12 (the-as float #x3C086BF6)) ;; 1/5! - ;; lui v1, 13850 - ;; mtc1 f14, a1 - (set! f14 (the-as float #xB94D2072)) ;; 1/7! - ;; ori a1, v1, 41599 - ;; mula.s f1, f10 - (set! acc (* f1 f10)) ;; x * c_1 - ;; lui v1, 16256 - ;; mul.s f3, f2, f1 - (set! f3 (* f2 f1)) ;; x^3 - ;; or v1, v1, r0 - ;; mul.s f4, f2, f2 - (set! f4 (* f2 f2)) ;; x^4 - ;; lui a2, -16641 - ;; mtc1 f15, a1 - (set! f15 (the-as float #x361AA27F)) ;; 1/9! - ;; lui a1, -16641 ;; I think this is a typo... - ;; or a1, a2, a1 ;; this should set the lower 16 bits. - ;; mtc1 f16, v1 - (set! f16 (the-as float #x3f800000)) ;; 1.0 - ;; sll r0, r0, 0 - ;; mtc1 f17, a1 - - ;; it looks like they set the lower 16-bits of the x^2 - ;; coefficient for cosine incorrectly - (#cond - (FIX_COSINE_BUG - ;; the constant used in *cos-poly-vec* - (set! f17 (the-as float #xbefffd62)) - ) - (#t - ;; missing the lower 16 bits. - (set! f17 (the-as float #xBEFF0000)) - ) - ) - - ;; sll r0, r0, 0 - ;; mul.s f5, f3, f2 - (set! f5 (* f3 f2)) - ;; sll r0, r0, 0 - ;; mul.s f6, f3, f3 - (set! f6 (* f3 f3)) - ;; sll r0, r0, 0 - ;; mul.s f7, f4, f3 - (set! f7 (* f4 f3)) - ;; sll r0, r0, 0 - ;; mul.s f8, f4, f4 - (set! f8 (* f4 f4)) - ;; sll r0, r0, 0 - ;; mul.s f9, f5, f4 - (set! f9 (* f5 f4)) - ;; lui v1, 15658 - ;; madda.s f3, f11 - (set! acc (+ acc (* f3 f11))) ;; add x^3 sine term - ;; ori v1, v1, 31272 - ;; madda.s f5, f12 - (set! acc (+ acc (* f5 f12))) ;; add x^5 sine term - ;; lui a1, -17742 - ;; madda.s f7, f14 - (set! acc (+ acc (* f7 f14))) ;; add x^7 sine term - ;; ori a1, a1, 48177 - ;; madd.s f21, f9, f15 - (set! f21 (+ acc (* f9 f15))) ;; add x^9 sine term - ;; lui a2, 14249 - ;; mtc1 f18, v1 - (set! f18 (the-as float #x3D2A7A28)) ;; cos coeff - ;; ori v1, a2, 13291 - ;; mtc1 f19, a1 - (set! f19 (the-as float #xBAB2BC31)) ;; cos coeff - ;; sll r0, r0, 0 - ;; mtc1 f20, v1 - (set! f20 (the-as float #x37A933EB)) - ;; sll r0, r0, 0 - ;; mula.s f16, f16 - (set! acc (* f16 f16)) ;; acc = 1, constant cos term. - ;; sll r0, r0, 0 - ;; madda.s f2, f17 - (set! acc (+ acc (* f2 f17))) - ;; sll r0, r0, 0 - ;; madda.s f4, f18 - (set! acc (+ acc (* f4 f18))) - ;; sll r0, r0, 0 - ;; madda.s f6, f19 - (set! acc (+ acc (* f6 f19))) - ;; sll r0, r0, 0 - ;; madd.s f22, f8, f20 - (set! f22 (+ acc (* f8 f20))) - ;; sll r0, r0, 0 - ;; swc1 f21, 0(a0) - (set! (-> ,out 0) f21) - ;; sll r0, r0, 0 - ;; swc1 f22, 4(a0) - (set! (-> ,out 1) f22) - ;; or v0, r0, r0 - 0 - ) - ) + (f11 :class fpr :type float) ;; coeff -1/3! + (f12 :class fpr :type float) ;; coeff 1/5! + (f14 :class fpr :type float) ;; coeff -1/7! + (f15 :class fpr :type float) ;; coeff 1/9! + (f1 :class fpr :type float) ;; x + (f2 :class fpr :type float) ;; x^2 + (f3 :class fpr :type float) ;; x^3 + (f4 :class fpr :type float) ;; x^4 + (f5 :class fpr :type float) ;; x^5 + (f6 :class fpr :type float) ;; x^6 + (f7 :class fpr :type float) ;; x^7 + (f8 :class fpr :type float) ;; x^8 + (f9 :class fpr :type float) ;; x^9 + (f21 :class fpr :type float) + (f22 :class fpr :type float) ;; 0 ? + (acc :class fpr :type float) ;; temp + (f16 :class fpr :type float) ;; 1.0 + (f17 :class fpr :type float) ;; cos coeff 1 + (f18 :class fpr :type float) ;; cos coeff 2 + (f19 :class fpr :type float) ;; cos coeff 3 + (f20 :class fpr :type float) ;; cos coeff 4 + ) + ;; lui v1, 16255 + ;; lui a2, -16854 + ;; ori v1, v1, 65502 + ;; mtc1 f1, a1 + (set! f1 ,x) + ;; ori a1, a2, 43253 + ;; sub.s f22, f22, f22 + (set! f22 (the-as float 0)) + ;; lui a2, 15368 + ;; mtc1 f10, v1 + (set! f10 (the-as float #x3F7FFFDE)) ;; almost 1.0 + ;; ori v1, a2, 27638 + ;; mtc1 f11, a1 + (set! f11 (the-as float #xBE2AA8F5)) ;; -0.166, 1/3! + ;; lui a1, -18099 + ;; mul.s f2, f1, f1 + (set! f2 (* f1 f1)) + ;; ori a1, a1, 8306 + ;; mtc1 f12, v1 + (set! f12 (the-as float #x3C086BF6)) ;; 1/5! + ;; lui v1, 13850 + ;; mtc1 f14, a1 + (set! f14 (the-as float #xB94D2072)) ;; 1/7! + ;; ori a1, v1, 41599 + ;; mula.s f1, f10 + (set! acc (* f1 f10)) ;; x * c_1 + ;; lui v1, 16256 + ;; mul.s f3, f2, f1 + (set! f3 (* f2 f1)) ;; x^3 + ;; or v1, v1, r0 + ;; mul.s f4, f2, f2 + (set! f4 (* f2 f2)) ;; x^4 + ;; lui a2, -16641 + ;; mtc1 f15, a1 + (set! f15 (the-as float #x361AA27F)) ;; 1/9! + ;; lui a1, -16641 ;; I think this is a typo... + ;; or a1, a2, a1 ;; this should set the lower 16 bits. + ;; mtc1 f16, v1 + (set! f16 (the-as float #x3f800000)) ;; 1.0 + ;; sll r0, r0, 0 + ;; mtc1 f17, a1 + ;; it looks like they set the lower 16-bits of the x^2 + ;; coefficient for cosine incorrectly + (#cond + (FIX_COSINE_BUG + ;; the constant used in *cos-poly-vec* + (set! f17 (the-as float #xbefffd62))) + (#t + ;; missing the lower 16 bits. + (set! f17 (the-as float #xBEFF0000)))) + ;; sll r0, r0, 0 + ;; mul.s f5, f3, f2 + (set! f5 (* f3 f2)) + ;; sll r0, r0, 0 + ;; mul.s f6, f3, f3 + (set! f6 (* f3 f3)) + ;; sll r0, r0, 0 + ;; mul.s f7, f4, f3 + (set! f7 (* f4 f3)) + ;; sll r0, r0, 0 + ;; mul.s f8, f4, f4 + (set! f8 (* f4 f4)) + ;; sll r0, r0, 0 + ;; mul.s f9, f5, f4 + (set! f9 (* f5 f4)) + ;; lui v1, 15658 + ;; madda.s f3, f11 + (set! acc (+ acc (* f3 f11))) ;; add x^3 sine term + ;; ori v1, v1, 31272 + ;; madda.s f5, f12 + (set! acc (+ acc (* f5 f12))) ;; add x^5 sine term + ;; lui a1, -17742 + ;; madda.s f7, f14 + (set! acc (+ acc (* f7 f14))) ;; add x^7 sine term + ;; ori a1, a1, 48177 + ;; madd.s f21, f9, f15 + (set! f21 (+ acc (* f9 f15))) ;; add x^9 sine term + ;; lui a2, 14249 + ;; mtc1 f18, v1 + (set! f18 (the-as float #x3D2A7A28)) ;; cos coeff + ;; ori v1, a2, 13291 + ;; mtc1 f19, a1 + (set! f19 (the-as float #xBAB2BC31)) ;; cos coeff + ;; sll r0, r0, 0 + ;; mtc1 f20, v1 + (set! f20 (the-as float #x37A933EB)) + ;; sll r0, r0, 0 + ;; mula.s f16, f16 + (set! acc (* f16 f16)) ;; acc = 1, constant cos term. + ;; sll r0, r0, 0 + ;; madda.s f2, f17 + (set! acc (+ acc (* f2 f17))) + ;; sll r0, r0, 0 + ;; madda.s f4, f18 + (set! acc (+ acc (* f4 f18))) + ;; sll r0, r0, 0 + ;; madda.s f6, f19 + (set! acc (+ acc (* f6 f19))) + ;; sll r0, r0, 0 + ;; madd.s f22, f8, f20 + (set! f22 (+ acc (* f8 f20))) + ;; sll r0, r0, 0 + ;; swc1 f21, 0(a0) + (set! (-> ,out 0) f21) + ;; sll r0, r0, 0 + ;; swc1 f22, 4(a0) + (set! (-> ,out 1) f22) + ;; or v0, r0, r0 + 0)) (defun sincos-rad! ((out (pointer float)) (x float)) "Compute the sine and cosine of x, store it in the output array. Has the cosine bug." - (sincos-rad-asm out x) - ) + (sincos-rad-asm out x)) (defun sincos! ((out (pointer float)) (x float)) "Compute the sine and cosine of x, store it in the output array. The input is in rotation units, and is unwrapped properly. Also has the cosine bug" - (sincos-rad-asm out (* ROT_TO_RAD (the float (sar (shl (the int x) 48) 48)))) - ) + (sincos-rad-asm out (* ROT_TO_RAD (the float (sar (shl (the int x) 48) 48))))) (defun vector-rad<-vector-deg! ((out vector) (in vector)) "Convert a vector in rotation units to radians, and unwrap. @@ -683,13 +604,11 @@ (.mov rot-to-rad (the-as float ROT_TO_RAD)) (.lvf vf1 in) (.ftoi.vf vf1 vf1) ;; to int - (.pw.sll vf1 vf1 16) ;; shifts + (.pw.sll vf1 vf1 16) ;; shifts (.pw.sra vf1 vf1 16) - (.itof.vf vf1 vf1) ;; to float + (.itof.vf vf1 vf1) ;; to float (.mul.x.vf vf1 vf1 rot-to-rad) - (.svf out vf1) - ) - ) + (.svf out vf1))) (defun vector-rad<-vector-deg/2! ((out vector) (in vector)) "Divide the input by two, and then convert from rotation units to radians, unwrapping. @@ -700,13 +619,11 @@ ;;(set! a2-0 1056964608) ;;(.lqc2 vf1 0 a1-0) (.lvf vf1 in) - ;; multiply by 0.5. ;;(.qmtc2.i vf2 a2-0) (.mov temp (the-as float #x3f000000)) ;; 0.5 ;;(.vmulx.xyzw vf1 vf1 vf2) (.mul.x.vf vf1 vf1 temp) - ;;(.vftoi0.xyzw vf1 vf1) (.ftoi.vf vf1 vf1) ;;(.qmtc2.i vf2 v1-0) @@ -724,51 +641,41 @@ ;;(.sqc2 vf1 0 arg0) ;;(.qmfc2.i v0-0 vf1) (.svf out vf1) - 0 - ) - ) - + 0)) (defun vector-sincos! ((out-sin vector) (out-cos vector) (in vector)) "Compute sine and cosine of each element in a vector, in rotation units" - (let ((temp (new 'stack-no-clear 'vector))) - (vector-rad<-vector-deg! temp in) - (vector-sincos-rad! out-sin out-cos temp) - ) - ) + (let ((temp (new 'stack-no-clear 'vector))) (vector-rad<-vector-deg! temp in) (vector-sincos-rad! out-sin out-cos temp))) (defun-extern cos float float) (defun tan-rad ((arg0 float)) "This function appears to be named wrong and actually operates on rotation units." - (/ (sin arg0) (cos arg0)) - ) + (/ (sin arg0) (cos arg0))) (defun cos ((arg0 float)) "Cosine of rotation units" - (sin (+ 16384.000000 arg0)) - ) + (sin (+ 16384.000000 arg0))) (defun tan ((arg0 float)) "Correctly named tangent of rotation units" - (/ (sin arg0) (cos arg0)) - ) + (/ (sin arg0) (cos arg0))) (defun atan0 ((arg0 float) (arg1 float)) "inverse tangent, to rotation units. y,x order. Does not handle signs correctly. Do not use this function directly, instead use atan2" (rlet ((f20 :class fpr :type float) (f21 :class fpr :type float) - (f1 :class fpr :type float) - (f2 :class fpr :type float) - (f3 :class fpr :type float) - (f4 :class fpr :type float) - (f5 :class fpr :type float) - (f6 :class fpr :type float) - (f7 :class fpr :type float) - (f8 :class fpr :type float) - (f9 :class fpr :type float) - (f10 :class fpr :type float) + (f1 :class fpr :type float) + (f2 :class fpr :type float) + (f3 :class fpr :type float) + (f4 :class fpr :type float) + (f5 :class fpr :type float) + (f6 :class fpr :type float) + (f7 :class fpr :type float) + (f8 :class fpr :type float) + (f9 :class fpr :type float) + (f10 :class fpr :type float) (f19 :class fpr :type float) (f11 :class fpr :type float) (f12 :class fpr :type float) @@ -778,9 +685,7 @@ (f16 :class fpr :type float) (f17 :class fpr :type float) (f18 :class fpr :type float) - (acc :class fpr :type float) - ) - + (acc :class fpr :type float)) ;;mtc1 f20, a1 (set! f20 arg1) ;;mtc1 f21, a0 @@ -833,66 +738,53 @@ (set! acc (+ f1 f19)) ;;madda.s f3, f12 (set! acc (+ acc (* f3 f12))) - ;;madda.s f5, f13 (set! acc (+ acc (* f5 f13))) - ;;madda.s f6, f14 (set! acc (+ acc (* f6 f14))) - ;;madda.s f7, f15 (set! acc (+ acc (* f7 f15))) - ;;madda.s f8, f16 (set! acc (+ acc (* f8 f16))) - ;;madda.s f9, f17 (set! acc (+ acc (* f9 f17))) - ;;madd.s f19, f10, f18 ;;mfc1 v0, f19 - (+ acc (* f10 f18)) - ) - ) - + (+ acc (* f10 f18)))) (defmacro .adda.s (a b) - `(set! acc (+ ,a ,b)) - ) + `(set! acc (+ ,a ,b))) (defmacro .madda.s (a b) - `(set! acc (+ acc (* ,a ,b))) - ) + `(set! acc (+ acc (* ,a ,b)))) (defmacro .madd.s (a b c) - `(set! ,a (+ acc (* ,b ,c))) - ) + `(set! ,a (+ acc (* ,b ,c)))) (defun atan-series-rad ((arg0 float)) "A helper function for atan" (local-vars - (f0-1 float) - (f1-0 float) - (f2-0 float) - (f3-0 float) - (f4-0 float) - (f5-0 float) - (f6-0 float) - (f7-0 float) - (f8-0 float) - (f9-0 float) - (f10-0 float) - (f11-0 float) - (f12-0 float) - (f13-0 float) - (f14-0 float) - (f15-0 float) - (f16-0 float) - (f17-0 float) - (f18-0 float) - (acc float) - (f18-1 float) - ) + (f0-1 float) + (f1-0 float) + (f2-0 float) + (f3-0 float) + (f4-0 float) + (f5-0 float) + (f6-0 float) + (f7-0 float) + (f8-0 float) + (f9-0 float) + (f10-0 float) + (f11-0 float) + (f12-0 float) + (f13-0 float) + (f14-0 float) + (f15-0 float) + (f16-0 float) + (f17-0 float) + (f18-0 float) + (acc float) + (f18-1 float)) (set! f1-0 (* arg0 arg0)) (set! f10-0 (the-as float #x3f7ffff5)) (set! f11-0 (the-as float #xbeaaa61c)) @@ -921,209 +813,169 @@ (.madda.s f8-0 f16-0) (.madd.s f18-1 f9-0 f17-0) ;;(the-as float f18-1) - f18-1 - ) - + f18-1) (defun atan-rad ((arg0 float)) "inverse tangent in radians" - (atan-series-rad (/ (+ -1.0 arg0) (+ 1.0 arg0))) - ) + (atan-series-rad (/ (+ -1.0 arg0) (+ 1.0 arg0)))) (defun sign ((arg0 float)) "Returns -1.0, 0.0, or 1.0 depending on the sign of the argument" (cond - ((< 0.000000 arg0) - 1.000000) - ((< arg0 0.000000) - -1.000000) - (else - 0.000000) - ) - ) - + ((< 0.000000 arg0) 1.000000) + ((< arg0 0.000000) -1.000000) + (else 0.000000))) (defun atan2-rad ((arg0 float) (arg1 float)) (cond - ((= arg1 0.0) - (* 1.5707963 (sign arg0)) - ) + ((= arg1 0.0) (* 1.5707963 (sign arg0))) (else (cond ((and (< arg0 0.0) (< arg1 0.0)) (let ((f30-1 MINUS_PI) - (f0-6 (/ arg0 arg1)) - ) - (+ f30-1 (atan-series-rad (/ (+ -1.0 f0-6) (+ 1.0 f0-6)))) - ) - ) - ((< arg0 0.0) - (let ((f0-14 (- (/ arg0 arg1)))) - (- (atan-series-rad (/ (+ -1.0 f0-14) (+ 1.0 f0-14)))) - ) - ) + (f0-6 (/ arg0 arg1))) + (+ f30-1 (atan-series-rad (/ (+ -1.0 f0-6) (+ 1.0 f0-6)))))) + ((< arg0 0.0) (let ((f0-14 (- (/ arg0 arg1)))) (- (atan-series-rad (/ (+ -1.0 f0-14) (+ 1.0 f0-14)))))) ((< arg1 0.0) (let ((f30-2 PI) - (f0-22 (- (/ arg0 arg1))) - ) - (- f30-2 (atan-series-rad (/ (+ -1.0 f0-22) (+ 1.0 f0-22)))) - ) - ) - (else - (let ((f0-28 (/ arg0 arg1))) - (atan-series-rad (/ (+ -1.0 f0-28) (+ 1.0 f0-28))) - ) - ) - ) - ) - ) - ) + (f0-22 (- (/ arg0 arg1)))) + (- f30-2 (atan-series-rad (/ (+ -1.0 f0-22) (+ 1.0 f0-22)))))) + (else (let ((f0-28 (/ arg0 arg1))) (atan-series-rad (/ (+ -1.0 f0-28) (+ 1.0 f0-28))))))))) ;; ???? -(deftype float-type (uint32) - () - ) +(deftype float-type (uint32) ()) ;; magic numbers for exp. (define exp-slead - (new 'static 'array float 32 - (the-as float #x3f800000) - (the-as float #x3f82cd80) - (the-as float #x3f85aac0) - (the-as float #x3f889800) - (the-as float #x3f8b95c0) - (the-as float #x3f8ea400) - (the-as float #x3f91c3c0) - (the-as float #x3f94f4c0) - (the-as float #x3f9837c0) - (the-as float #x3f9b8d00) - (the-as float #x3f9ef500) - (the-as float #x3fa27040) - (the-as float #x3fa5fec0) - (the-as float #x3fa9a140) - (the-as float #x3fad5800) - (the-as float #x3fb123c0) - (the-as float #x3fb504c0) - (the-as float #x3fb8fb80) - (the-as float #x3fbd0880) - (the-as float #x3fc12c40) - (the-as float #x3fc56700) - (the-as float #x3fc9b980) - (the-as float #x3fce2480) - (the-as float #x3fd2a800) - (the-as float #x3fd744c0) - (the-as float #x3fdbfb80) - (the-as float #x3fe0ccc0) - (the-as float #x3fe5b900) - (the-as float #x3feac0c0) - (the-as float #x3fefe480) - (the-as float #x3ff52540) - (the-as float #x3ffa8380) - ) - ) + (new 'static + 'array + float + 32 + (the-as float #x3f800000) + (the-as float #x3f82cd80) + (the-as float #x3f85aac0) + (the-as float #x3f889800) + (the-as float #x3f8b95c0) + (the-as float #x3f8ea400) + (the-as float #x3f91c3c0) + (the-as float #x3f94f4c0) + (the-as float #x3f9837c0) + (the-as float #x3f9b8d00) + (the-as float #x3f9ef500) + (the-as float #x3fa27040) + (the-as float #x3fa5fec0) + (the-as float #x3fa9a140) + (the-as float #x3fad5800) + (the-as float #x3fb123c0) + (the-as float #x3fb504c0) + (the-as float #x3fb8fb80) + (the-as float #x3fbd0880) + (the-as float #x3fc12c40) + (the-as float #x3fc56700) + (the-as float #x3fc9b980) + (the-as float #x3fce2480) + (the-as float #x3fd2a800) + (the-as float #x3fd744c0) + (the-as float #x3fdbfb80) + (the-as float #x3fe0ccc0) + (the-as float #x3fe5b900) + (the-as float #x3feac0c0) + (the-as float #x3fefe480) + (the-as float #x3ff52540) + (the-as float #x3ffa8380))) (define exp-strail - (new 'static 'array float 32 - (the-as float #x0) - (the-as float #x35531585) - (the-as float #x34d9f312) - (the-as float #x35e8092e) - (the-as float #x3471f546) - (the-as float #x36e62d17) - (the-as float #x361b9d59) - (the-as float #x36bea3fc) - (the-as float #x36c14637) - (the-as float #x36e6e755) - (the-as float #x36c98247) - (the-as float #x34c0c312) - (the-as float #x36354d8b) - (the-as float #x3655a754) - (the-as float #x36fba90b) - (the-as float #x36d6074b) - (the-as float #x36cccfe7) - (the-as float #x36bd1d8c) - (the-as float #x368e7d60) - (the-as float #x35cca667) - (the-as float #x36a84554) - (the-as float #x36f619b9) - (the-as float #x35c151f8) - (the-as float #x366c8f89) - (the-as float #x36f32b5a) - (the-as float #x36de5f6c) - (the-as float #x36776155) - (the-as float #x355cef90) - (the-as float #x355cfba5) - (the-as float #x36e66f73) - (the-as float #x36f45492) - (the-as float #x36cb6dc9) - ) - ) - + (new 'static + 'array + float + 32 + (the-as float #x0) + (the-as float #x35531585) + (the-as float #x34d9f312) + (the-as float #x35e8092e) + (the-as float #x3471f546) + (the-as float #x36e62d17) + (the-as float #x361b9d59) + (the-as float #x36bea3fc) + (the-as float #x36c14637) + (the-as float #x36e6e755) + (the-as float #x36c98247) + (the-as float #x34c0c312) + (the-as float #x36354d8b) + (the-as float #x3655a754) + (the-as float #x36fba90b) + (the-as float #x36d6074b) + (the-as float #x36cccfe7) + (the-as float #x36bd1d8c) + (the-as float #x368e7d60) + (the-as float #x35cca667) + (the-as float #x36a84554) + (the-as float #x36f619b9) + (the-as float #x35c151f8) + (the-as float #x366c8f89) + (the-as float #x36f32b5a) + (the-as float #x36de5f6c) + (the-as float #x36776155) + (the-as float #x355cef90) + (the-as float #x355cfba5) + (the-as float #x36e66f73) + (the-as float #x36f45492) + (the-as float #x36cb6dc9))) (defun exp ((arg float)) (local-vars - (f0 float) - (f1 float) - (f2 float) - (f3 float) - (f4 float) - (f5 float) - (f6 float) - (f7 float) - (f8 float) - (f10 float) - (f11 float) - (f12 float) - (f13 float) - (f14 float) - (f15 float) - (f16 float) - (f17 float) - (f18 float) - (a2 int) - (v0 float) - (v1 int) - (a1 int) - (a3 int) - (t0 int) - (a0-2 int) - ) - + (f0 float) + (f1 float) + (f2 float) + (f3 float) + (f4 float) + (f5 float) + (f6 float) + (f7 float) + (f8 float) + (f10 float) + (f11 float) + (f12 float) + (f13 float) + (f14 float) + (f15 float) + (f16 float) + (f17 float) + (f18 float) + (a2 int) + (v0 float) + (v1 int) + (a1 int) + (a3 int) + (t0 int) + (a0-2 int)) (set! f0 arg) (set! f0 (fabs f0)) (set! f1 (the-as float #x435c6bba)) ;;(b! (>=.s f1 f0) L44 (nop!)) (when-goto (>= f1 f0) L44) - (set! f0 0.0) (set! f1 arg) ;;(b! (>=.s f0 f1) L42 (nop!)) (when-goto (>= f0 f1) L42) - (set! v0 (the-as float #x7f7fffff)) ;;(b! #t L43 (nop!)) (goto L43) - (label L42) (set! v0 (the-as float #x0)) - (label L43) ;;(b! #t L49 (nop!)) (goto L49) - - (label L44) (set! f1 (the-as float #x33000000)) ;;(b! (>=.s f0 f1) L45 (nop!)) (when-goto (>= f0 f1) L45) - (set! f0 (the-as float #x3f800000)) (set! f1 arg) (set! f0 (+ f0 f1)) (set! v0 f0) ;;(b! #t L49 (nop!)) (goto L49) - (label L45) (set! f16 (the-as float #x4238aa3b)) (set! f12 (the-as float #x3cb17200)) @@ -1142,7 +994,6 @@ ;;(bl! (<0.si t0) L46 (no-delay!)) ;;(set! t0 (- t0)) (set! t0 (abs t0)) - ;;(label L46) ;;(b! (>=.si a3 t0) L47 (nop!)) (when-goto (>= a3 t0) L47) @@ -1159,7 +1010,6 @@ ;;(b! #t L48 (set! f2 (-.s f17 f18))) (set! f2 (- f17 f18)) (goto L48) - (label L47) ;;(set! f17 (gpr->fpr a2)) ;;(set! f17 (i2f f17)) @@ -1167,7 +1017,6 @@ (set! f17 (* f17 f12)) (set! f0 arg) (set! f2 (- f0 f17)) - (label L48) (set! a0-2 (- a2)) ;;(set! f17 (gpr->fpr a0)) @@ -1201,62 +1050,33 @@ (set! a0-2 (shl a0-2 23)) (set! v0 (the-as float (+ v1 a0-2))) (label L49) - v0 - ) + v0) (defun atan ((arg0 float) (arg1 float)) "atan2, for rotation units" - (if - (and (= arg1 0.0) (= arg0 0.0)) - 0.000000 - (cond - ((and (< arg1 0.0) (< arg0 0.0)) - (+ -32768.0 (atan0 (- arg0) (- arg1))) - ) - ((< arg0 0.) - (- (atan0 (- arg0) arg1)) - ) - ((< arg1 0.) - (- 32768.0 (atan0 arg0 (- arg1))) - ) - (else - (atan0 arg0 arg1) - ) - ) - ) - ) + (if (and (= arg1 0.0) (= arg0 0.0)) + 0.000000 + (cond + ((and (< arg1 0.0) (< arg0 0.0)) (+ -32768.0 (atan0 (- arg0) (- arg1)))) + ((< arg0 0.) (- (atan0 (- arg0) arg1))) + ((< arg1 0.) (- 32768.0 (atan0 arg0 (- arg1)))) + (else (atan0 arg0 arg1))))) (defun asin ((arg0 float)) "Inverse sine. Returns rotation units" (let ((gp-0 #f)) - (let ((f0-0 0.0)) - ) + (let ((f0-0 0.0))) (when (< arg0 0.0) (set! arg0 (- arg0)) - (set! gp-0 #t) - ) + (set! gp-0 #t)) (let ((f0-5 (cond - ((< 1.0 arg0) - 16383.996 - ) + ((< 1.0 arg0) 16383.996) (else (let* ((f0-6 1.0) (f1-2 arg0) - (f0-8 (sqrtf (- f0-6 (* f1-2 f1-2)))) - ) - (atan0 arg0 f0-8) - ) - ) - ) - ) - ) - (if gp-0 - (- f0-5) - f0-5 - ) - ) - ) - ) + (f0-8 (sqrtf (- f0-6 (* f1-2 f1-2))))) + (atan0 arg0 f0-8)))))) + (if gp-0 (- f0-5) f0-5)))) (defun acos ((arg0 float)) "Inverse cosine. Returns rotation units" @@ -1267,12 +1087,8 @@ ;; but it's not super clear to me that the mode picked by PCSX2 is ;; more accurate than normal in all cases. So, we'll do this for now.) (when (= result 0.0) - (set! result 0.00000000001) - ) - ) - result - ) - ) + (set! result 0.00000000001))) + result)) (defun acos-rad ((arg0 float)) "Inverse cosine, returning radians." @@ -1281,66 +1097,47 @@ (let* ((f0-1 1.0) (f1-1 arg0) (f0-3 (sqrtf (- f0-1 (* f1-1 f1-1)))) - (f0-5 (/ (- f0-3 arg0) (+ f0-3 arg0))) - ) - (atan-series-rad f0-5) - ) - ) + (f0-5 (/ (- f0-3 arg0) (+ f0-3 arg0)))) + (atan-series-rad f0-5))) (else (let* ((f0-6 1.0) (f1-6 arg0) (f0-8 (sqrtf (- f0-6 (* f1-6 f1-6)))) - (f0-10 (/ (+ f0-8 arg0) (- f0-8 arg0))) - ) - (- PI (atan-series-rad f0-10)) - ) - ) - ) - ) + (f0-10 (/ (+ f0-8 arg0) (- f0-8 arg0)))) + (- PI (atan-series-rad f0-10)))))) (defun sinerp ((minimum float) (maximum float) (amount float)) "map amount to min,max using sine. Kinda weird, usually people use cosine." - (lerp minimum maximum (sin (* 16384.000000 amount))) - ) + (lerp minimum maximum (sin (* 16384.000000 amount)))) (defun sinerp-clamp ((minimum float) (maximum float) (amount float)) "Like sinerp, but clamp to min,max" (cond ((>= 0.000000 amount) minimum) ((>= amount 1.000000) maximum) - (else (sinerp minimum maximum amount)) - ) - ) + (else (sinerp minimum maximum amount)))) (defun coserp ((minimum float) (maximum float) (amount float)) "Weird lerp with cosine (over 90 degrees?)" - (lerp minimum maximum (- 1.000000 (cos (* 16384.000000 amount)))) - ) + (lerp minimum maximum (- 1.000000 (cos (* 16384.000000 amount))))) (defun coserp-clamp ((minimum float) (maximum float) (amount float)) "Weird 90 degree lerp with cosine, clamped to min,max" (cond ((>= 0.000000 amount) minimum) ((>= amount 1.000000) maximum) - (else (coserp minimum maximum amount)) - ) - ) + (else (coserp minimum maximum amount)))) (defun coserp180 ((minimum float) (maximum float) (amount float)) "Classic lerp with cosine" - (lerp minimum maximum - (* 0.5 (- 1.000000 (cos (* 32768.000000 amount)))) - ) - ) + (lerp minimum maximum (* 0.5 (- 1.000000 (cos (* 32768.000000 amount)))))) (defun coserp180-clamp ((minimum float) (maximum float) (amount float)) "Classic coserp with saturation" (cond ((>= 0.000000 amount) minimum) ((>= amount 1.000000) maximum) - (else (coserp180 minimum maximum amount)) - ) - ) + (else (coserp180 minimum maximum amount)))) (defun ease-in-out ((total int) (progress int)) "Weird coserp like mapping from 0 to 1 as progress goes from 0 to total" @@ -1348,29 +1145,16 @@ (cond ((>= progress total) ;; past the end - 1.000000 - ) + 1.000000) ((<= progress 0) ;; negative progress - 0.000000 - ) - ((begin (set! v1-0 (sar total 1)) (< v1-0 progress)) + 0.000000) + ((begin + (set! v1-0 (sar total 1)) + (< v1-0 progress)) ;; more than half way there! (set! a0-1 (- progress total)) - (+ 0.500000 - (* 0.500000 (sin - (- 16384.000000 (/ (* 16384.000000 (the float a0-1)) (the float v1-0))) - ) - ) - ) - ) + (+ 0.500000 (* 0.500000 (sin (- 16384.000000 (/ (* 16384.000000 (the float a0-1)) (the float v1-0))))))) (else ;; less than half way there. - (- 0.500000 - (* 0.500000 - (cos (/ (* 16384.000000 (the float progress)) (the float v1-0))) - ) - ) - ) - ) - ) + (- 0.500000 (* 0.500000 (cos (/ (* 16384.000000 (the float progress)) (the float v1-0)))))))) diff --git a/goal_src/jak1/engine/math/vector-h.gc b/goal_src/jak1/engine/math/vector-h.gc index 11435f8b22..9271e07ee6 100644 --- a/goal_src/jak1/engine/math/vector-h.gc +++ b/goal_src/jak1/engine/math/vector-h.gc @@ -1,15 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") (require "engine/util/types-h.gc") -;; name: vector-h.gc -;; name in dgo: vector-h -;; dgos: GAME, ENGINE - - ;; Type definitions/inline functions for bit array and vector types. ;; DECOMP BEGINS @@ -21,77 +15,56 @@ ;; the bit-array is a dynamically sized array that is bit addressable (deftype bit-array (basic) - ((length int32) - (allocated-length int32) + ((length int32) + (allocated-length int32) ;; neither of these show up in the inspect. ;; it seems like there's a single byte of data array ;; included in the type already - (_pad uint8) - (bytes uint8 :dynamic :overlay-at _pad) - ) + (_pad uint8) + (bytes uint8 :dynamic :overlay-at _pad)) (:methods - (new (symbol type int) _type_) - (get-bit (_type_ int) symbol) - (clear-bit (_type_ int) int) - (set-bit (_type_ int) int) - (clear-all! (_type_) _type_) - ) - ) - + (new (symbol type int) _type_) + (get-bit (_type_ int) symbol) + (clear-bit (_type_ int) int) + (set-bit (_type_ int) int) + (clear-all! (_type_) _type_))) (defmethod new bit-array ((allocation symbol) (type-to-make type) (length int)) "Allocate a new bit-array which can hold length bits. Sets both the length and the allocated-length to this length." - (let ((this (object-new allocation type-to-make - (+ (+ (/ (logand -8 (+ length 7)) 8) -1) - (the-as int (-> type-to-make size)) - ) - ) - ) - ) + (let ((this (object-new allocation type-to-make (+ (+ (/ (logand -8 (+ length 7)) 8) -1) (the-as int (-> type-to-make size)))))) (set! (-> this length) length) (set! (-> this allocated-length) length) - this - ) - ) + this)) (defmethod length ((this bit-array)) "Get the length (in bits)" - (-> this length) - ) + (-> this length)) (defmethod asize-of ((this bit-array)) "Get the size in memory. It is wrong and says its one byte longer, which is safe." - (the-as int (+ (-> this type size) (/ (logand -8 (+ (-> this allocated-length) 7)) 8))) - ) + (the-as int (+ (-> this type size) (/ (logand -8 (+ (-> this allocated-length) 7)) 8)))) (defmethod get-bit ((this bit-array) (arg0 int)) "Is the bit at idx set or not?" - (let ((v1-2 (-> this bytes (/ arg0 8)))) - (logtest? v1-2 (ash 1 (logand arg0 7))) - ) - ) + (let ((v1-2 (-> this bytes (/ arg0 8)))) (logtest? v1-2 (ash 1 (logand arg0 7))))) (defmethod clear-bit ((this bit-array) (arg0 int)) "Clear the bit at position idx" (logclear! (-> this bytes (/ arg0 8)) (ash 1 (logand arg0 7))) - 0 - ) + 0) (defmethod set-bit ((this bit-array) (arg0 int)) "Set the bit at position idx" (logior! (-> this bytes (/ arg0 8)) (ash 1 (logand arg0 7))) - 0 - ) + 0) (defmethod clear-all! ((this bit-array)) "Set all bits to zero." (countdown (idx (/ (logand -8 (+ (-> this allocated-length) 7)) 8)) - (set! (-> this bytes idx) (the-as uint 0)) - ) - this - ) + (set! (-> this bytes idx) (the-as uint 0))) + this) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; vector types (integer) @@ -99,147 +72,116 @@ (defmacro init-vf0-vector () "Initializes the VF0 vector which is a constant vector in the VU set to <0,0,0,1>" - `(.lvf vf0 (new 'static 'vector :x 0.0 :y 0.0 :z 0.0 :w 1.0)) - ) + `(.lvf vf0 (new 'static 'vector :x 0.0 :y 0.0 :z 0.0 :w 1.0))) ;; the GOAL vector types are structures, storing values in memory. ;; Vector of 4 unsigned bytes. (deftype vector4ub (structure) - ((data uint8 4) - (x uint8 :overlay-at (-> data 0)) - (y uint8 :overlay-at (-> data 1)) - (z uint8 :overlay-at (-> data 2)) - (w uint8 :overlay-at (-> data 3)) - (clr uint32 :overlay-at (-> data 0)) - ) - :pack-me - ) + ((data uint8 4) + (x uint8 :overlay-at (-> data 0)) + (y uint8 :overlay-at (-> data 1)) + (z uint8 :overlay-at (-> data 2)) + (w uint8 :overlay-at (-> data 3)) + (clr uint32 :overlay-at (-> data 0))) + :pack-me) ;; Vector of 4 signed bytes (deftype vector4b (structure) - ((data int8 4) - (x int8 :overlay-at (-> data 0)) - (y int8 :overlay-at (-> data 1)) - (z int8 :overlay-at (-> data 2)) - (w int8 :overlay-at (-> data 3)) - ) - ) + ((data int8 4) + (x int8 :overlay-at (-> data 0)) + (y int8 :overlay-at (-> data 1)) + (z int8 :overlay-at (-> data 2)) + (w int8 :overlay-at (-> data 3)))) ;; Vector of 2 signed halfwords (deftype vector2h (structure) - ((data int16 2) - (x int16 :overlay-at (-> data 0)) - (y int16 :overlay-at (-> data 1)) - ) - :pack-me - ) + ((data int16 2) + (x int16 :overlay-at (-> data 0)) + (y int16 :overlay-at (-> data 1))) + :pack-me) ;; Vector of 2 unsigned halfwords (deftype vector2uh (structure) - ((data uint16 2) - (x uint16 :overlay-at (-> data 0)) - (y uint16 :overlay-at (-> data 1)) - (val uint32 :overlay-at (-> data 0)) - ) - :pack-me - ) + ((data uint16 2) + (x uint16 :overlay-at (-> data 0)) + (y uint16 :overlay-at (-> data 1)) + (val uint32 :overlay-at (-> data 0))) + :pack-me) ;; Vector of 3 halfwords (deftype vector3h (structure) - ((data int16 2) - (x int16 :overlay-at (-> data 0)) - (y int16 :overlay-at (-> data 1)) - (z int16) - ) - ) + ((data int16 2) + (x int16 :overlay-at (-> data 0)) + (y int16 :overlay-at (-> data 1)) + (z int16))) ;; Vector of 2 signed words (deftype vector2w (structure) - ((data int32 2) - (x int32 :overlay-at (-> data 0)) - (y int32 :overlay-at (-> data 1)) - ) - :pack-me - ) + ((data int32 2) + (x int32 :overlay-at (-> data 0)) + (y int32 :overlay-at (-> data 1))) + :pack-me) ;; Vector of 3 signed words (deftype vector3w (structure) - ((data int32 3) - (x int32 :overlay-at (-> data 0)) - (y int32 :overlay-at (-> data 1)) - (z int32 :overlay-at (-> data 2)) - ) - :allow-misaligned - ) + ((data int32 3) + (x int32 :overlay-at (-> data 0)) + (y int32 :overlay-at (-> data 1)) + (z int32 :overlay-at (-> data 2))) + :allow-misaligned) ;; Vector of 4 signed words (deftype vector4w (structure) - ((data uint32 4) - (x int32 :overlay-at (-> data 0)) - (y int32 :overlay-at (-> data 1)) - (z int32 :overlay-at (-> data 2)) - (w int32 :overlay-at (-> data 3)) - (dword uint64 2 :overlay-at (-> data 0)) - (quad uint128 :overlay-at (-> data 0)) - ) - ) - + ((data uint32 4) + (x int32 :overlay-at (-> data 0)) + (y int32 :overlay-at (-> data 1)) + (z int32 :overlay-at (-> data 2)) + (w int32 :overlay-at (-> data 3)) + (dword uint64 2 :overlay-at (-> data 0)) + (quad uint128 :overlay-at (-> data 0)))) (defmethod print ((this vector4w)) (format #t "#" (-> this x) (-> this y) (-> this z) (-> this w) this) - this - ) + this) ;; Two vector4w's (deftype vector4w-2 (structure) - ((data int32 8) - (quad uint128 2 :overlay-at (-> data 0)) - (vector vector4w 2 :inline :overlay-at (-> data 0)) - ) - ) + ((data int32 8) + (quad uint128 2 :overlay-at (-> data 0)) + (vector vector4w 2 :inline :overlay-at (-> data 0)))) ;; Three vector4w's (deftype vector4w-3 (structure) - ((data int32 12) - (quad uint128 3 :overlay-at (-> data 0)) - (vector vector4w 3 :inline :overlay-at (-> data 0)) - ) - ) + ((data int32 12) + (quad uint128 3 :overlay-at (-> data 0)) + (vector vector4w 3 :inline :overlay-at (-> data 0)))) ;; Four vector4w's (deftype vector4w-4 (structure) - ((data int32 16) - (quad uint128 4 :overlay-at (-> data 0)) - (vector vector4w 4 :inline :overlay-at (-> data 0)) - ) - ) + ((data int32 16) + (quad uint128 4 :overlay-at (-> data 0)) + (vector vector4w 4 :inline :overlay-at (-> data 0)))) ;; Vector of 4 halfwords (deftype vector4h (structure) - ((data int16 4) - (x int16 :overlay-at (-> data 0)) - (y int16 :overlay-at (-> data 1)) - (z int16 :overlay-at (-> data 2)) - (w int16 :overlay-at (-> data 3)) - (long uint64 :overlay-at (-> data 0)) - ) - :pack-me - ) + ((data int16 4) + (x int16 :overlay-at (-> data 0)) + (y int16 :overlay-at (-> data 1)) + (z int16 :overlay-at (-> data 2)) + (w int16 :overlay-at (-> data 3)) + (long uint64 :overlay-at (-> data 0))) + :pack-me) ;; Vector of 8 halfwords (deftype vector8h (structure) - ((data int16 8) - (quad uint128 :overlay-at (-> data 0)) - ) - ) + ((data int16 8) + (quad uint128 :overlay-at (-> data 0)))) ;; Vector of 16 signed bytes (deftype vector16b (structure) - ((data int8 16) - (quad uint128 :overlay-at (-> data 0)) - ) - ) + ((data int8 16) + (quad uint128 :overlay-at (-> data 0)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; vector types (floating point) @@ -247,14 +189,12 @@ ;; Vector of 4 floats. Shortened to "vector" because it is the most commonly used. (deftype vector (structure) - ((x float :offset 0) - (y float :offset 4) - (z float :offset 8) - (w float :offset 12) - (data float 4 :overlay-at x) - (quad uint128 :overlay-at x) - ) - ) + ((x float :offset 0) + (y float :offset 4) + (z float :offset 8) + (w float :offset 12) + (data float 4 :overlay-at x) + (quad uint128 :overlay-at x))) (defmethod inspect ((this vector)) (format #t "[~8x] vector~%" this) @@ -263,43 +203,37 @@ (defmethod print ((this vector)) (format #t "#" (-> this x) (-> this y) (-> this z) (-> this w) this) - this - ) + this) +(define *null-vector* (new 'static 'vector :x 0. :y 0. :z 0. :w 1.)) -(define *null-vector* (new 'static 'vector :x 0. :y 0. :z 0. :w 1.)) (define *identity-vector* (new 'static 'vector :x 1. :y 1. :z 1. :w 1.)) -(define *x-vector* (new 'static 'vector :x 1. :y 0. :z 0. :w 1.)) -(define *y-vector* (new 'static 'vector :x 0. :y 1. :z 0. :w 1.)) -(define *z-vector* (new 'static 'vector :x 0. :y 0. :z 1. :w 1.)) -;; note: y is up. -(define *up-vector* (new 'static 'vector :x 0. :y 1. :z 0. :w 1.)) +(define *x-vector* (new 'static 'vector :x 1. :y 0. :z 0. :w 1.)) + +(define *y-vector* (new 'static 'vector :x 0. :y 1. :z 0. :w 1.)) + +(define *z-vector* (new 'static 'vector :x 0. :y 0. :z 1. :w 1.)) +;; note: y is up. +(define *up-vector* (new 'static 'vector :x 0. :y 1. :z 0. :w 1.)) ;; Three vector's (deftype vector4s-3 (structure) - ((data float 12) - (quad uint128 3 :overlay-at (-> data 0)) - (vector vector 3 :inline :overlay-at (-> data 0)) - ) - ) - + ((data float 12) + (quad uint128 3 :overlay-at (-> data 0)) + (vector vector 3 :inline :overlay-at (-> data 0)))) (deftype vector-array (inline-array-class) - ((data vector :inline :dynamic :offset 16) - ) - ) + ((data vector :inline :dynamic :offset 16))) (set! (-> vector-array heap-base) 16) (deftype rgbaf (vector) - ((r float :overlay-at x) - (g float :overlay-at y) - (b float :overlay-at z) - (a float :overlay-at w) - ) - ) + ((r float :overlay-at x) + (g float :overlay-at y) + (b float :overlay-at z) + (a float :overlay-at w))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; other geometric things @@ -307,122 +241,93 @@ ;; ax + by + cz = d form (deftype plane (vector) - ((a float :overlay-at x) - (b float :overlay-at y) - (c float :overlay-at z) - (d float :overlay-at w) - ) - ) + ((a float :overlay-at x) + (b float :overlay-at y) + (c float :overlay-at z) + (d float :overlay-at w))) ;; x, y, z are the origin, replaces w with r, the radius (deftype sphere (vector) - ((r float :overlay-at w) - ) - ) - + ((r float :overlay-at w))) -(deftype isphere (vec4s) - () - ) +(deftype isphere (vec4s) ()) (defmacro static-vector (x y z w) "creates a static vector." - `(new 'static 'vector :x ,x :y ,y :z ,z :w ,w) - ) + `(new 'static 'vector :x ,x :y ,y :z ,z :w ,w)) + (defmacro static-vectorm (x y z) "creates a static vector using meters. w is set to 1.0" - `(new 'static 'vector :x (meters ,x) :y (meters ,y) :z (meters ,z) :w 1.0) - ) + `(new 'static 'vector :x (meters ,x) :y (meters ,y) :z (meters ,z) :w 1.0)) + (defmacro static-spherem (x y z r) "creates a static vector using meters where the w component is used as sphere radius. for a 'real' sphere use static-bspherem." - `(new 'static 'vector :x (meters ,x) :y (meters ,y) :z (meters ,z) :w (meters ,r)) - ) + `(new 'static 'vector :x (meters ,x) :y (meters ,y) :z (meters ,z) :w (meters ,r))) + (defmacro static-bspherem (x y z r) "creates a static sphere using meters." - `(new 'static 'sphere :x (meters ,x) :y (meters ,y) :z (meters ,z) :w (meters ,r)) - ) + `(new 'static 'sphere :x (meters ,x) :y (meters ,y) :z (meters ,z) :w (meters ,r))) ;; this type represents a bounding-box, stored as minimum/maximum points ;; note that the types in bounding-box are mostly used, this is used very rarely. (deftype box8s (structure) - ((data float 8) - (quad uint128 2 :overlay-at (-> data 0)) - (vector vector 2 :overlay-at (-> data 0)) - (min vector :inline :overlay-at (-> data 0)) - (max vector :inline :overlay-at (-> data 4)) - ) - ) - + ((data float 8) + (quad uint128 2 :overlay-at (-> data 0)) + (vector vector 2 :overlay-at (-> data 0)) + (min vector :inline :overlay-at (-> data 0)) + (max vector :inline :overlay-at (-> data 4)))) (deftype box8s-array (inline-array-class) - ((data box8s :inline :dynamic :offset 16) - ) - ) + ((data box8s :inline :dynamic :offset 16))) + (set! (-> box8s-array heap-base) 32) ;; This is really a capsule - a cylinder with spheres at both ends (deftype cylinder (structure) - ((origin vector :inline) - (axis vector :inline) - (radius float) - (length float) - ) + ((origin vector :inline) + (axis vector :inline) + (radius float) + (length float)) (:methods - (debug-draw (_type_ vector4w) none) - (ray-capsule-intersect (_type_ vector vector) float) - ) - ) + (debug-draw (_type_ vector4w) none) + (ray-capsule-intersect (_type_ vector vector) float))) ;; This is a normal cylinder. (deftype cylinder-flat (structure) - ((origin vector :inline) - (axis vector :inline) - (radius float) - (length float) - ) + ((origin vector :inline) + (axis vector :inline) + (radius float) + (length float)) (:methods - (debug-draw (_type_ vector4w) none) - (ray-flat-cyl-intersect (_type_ vector vector) float) - ) - ) + (debug-draw (_type_ vector4w) none) + (ray-flat-cyl-intersect (_type_ vector vector) float))) ;; these vertical plane types are basically unused (deftype vertical-planes (structure) - ((data uint128 4) - ) - ) - + ((data uint128 4))) (deftype vertical-planes-array (basic) - ((length uint32) - (data vertical-planes :inline :dynamic) - ) - ) + ((length uint32) + (data vertical-planes :inline :dynamic))) ;; common 16-byte "quadword" structure. ;; allows access to unsigned arrays of integers of all sizes and floats (deftype qword (structure) - ((data uint32 4) - (byte uint8 16 :overlay-at (-> data 0)) - (hword uint16 8 :overlay-at (-> data 0)) - (word uint32 4 :overlay-at (-> data 0)) - (dword uint64 2 :overlay-at (-> data 0)) - (quad uint128 :overlay-at (-> data 0)) - (vector vector :inline :overlay-at (-> data 0)) - (vector4w vector4w :inline :overlay-at (-> data 0)) - ) - ) + ((data uint32 4) + (byte uint8 16 :overlay-at (-> data 0)) + (hword uint16 8 :overlay-at (-> data 0)) + (word uint32 4 :overlay-at (-> data 0)) + (dword uint64 2 :overlay-at (-> data 0)) + (quad uint128 :overlay-at (-> data 0)) + (vector vector :inline :overlay-at (-> data 0)) + (vector4w vector4w :inline :overlay-at (-> data 0)))) ;; 12-byte vector with only 3 components. It's not used very much. (deftype vector3s (structure) - ((data float 3) - (x float :overlay-at (-> data 0)) - (y float :overlay-at (-> data 1)) - (z float :overlay-at (-> data 2)) - ) - ) - - + ((data float 3) + (x float :overlay-at (-> data 0)) + (y float :overlay-at (-> data 1)) + (z float :overlay-at (-> data 2)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Macros and inline functions @@ -431,25 +336,12 @@ (defmacro set-vector! (v xv yv zv wv) "Set all fields in a vector" (with-gensyms (vec) - `(let ((,vec ,v)) - (set! (-> ,vec x) ,xv) - (set! (-> ,vec y) ,yv) - (set! (-> ,vec z) ,zv) - (set! (-> ,vec w) ,wv) - ,vec - )) - ) + `(let ((,vec ,v)) (set! (-> ,vec x) ,xv) (set! (-> ,vec y) ,yv) (set! (-> ,vec z) ,zv) (set! (-> ,vec w) ,wv) ,vec))) (defmacro set-vector-xyz! (v xv yv zv) "Set xyz fields in a vector" (with-gensyms (vec) - `(let ((,vec ,v)) - (set! (-> ,vec x) ,xv) - (set! (-> ,vec y) ,yv) - (set! (-> ,vec z) ,zv) - ,vec - )) - ) + `(let ((,vec ,v)) (set! (-> ,vec x) ,xv) (set! (-> ,vec y) ,yv) (set! (-> ,vec z) ,zv) ,vec))) (defun vector-dot ((a vector) (b vector)) "Take the dot product of two vectors. @@ -460,9 +352,7 @@ (+! result (* (-> a x) (-> b x))) (+! result (* (-> a y) (-> b y))) (+! result (* (-> a z) (-> b z))) - result - ) - ) + result)) (defun vector-dot-vu ((a vector) (b vector)) "Take the dot product of two vectors. @@ -484,9 +374,7 @@ (.add.z.vf vf1 vf1 vf1 :mask #b1) ;; (.qmfc2.i v0-0 vf1) (.mov result vf1) - result - ) - ) + result)) (defun vector4-dot ((a vector) (b vector)) "Take the dot product of two vectors. @@ -497,36 +385,23 @@ (+! result (* (-> a y) (-> b y))) (+! result (* (-> a z) (-> b z))) (+! result (* (-> a w) (-> b w))) - result - ) - ) + result)) (defmacro print-vf (vf &key (name #f)) "Print out a vf register as a vector." `(let ((temp (new 'stack 'vector))) - (.svf temp ,vf) - ,(if name - `(format #t "~A: ~`vector`P~%" (quote ,name) temp) - `(format #t "~`vector`P~%" temp) - ) - ) - ) + (.svf temp ,vf) + ,(if name `(format #t "~A: ~`vector`P~%" (quote ,name) temp) `(format #t "~`vector`P~%" temp)))) (defmacro print-vf-hex (vf) "Print out a vf register as 4x 32-bit hexadecimal integers" - `(let ((temp (new 'stack 'vector4w))) - (.svf temp ,vf) - (format #t "~`vector4w`P~%" temp) - ) - ) + `(let ((temp (new 'stack 'vector4w))) (.svf temp ,vf) (format #t "~`vector4w`P~%" temp))) (defmacro print-vf-dec (vf) "Print out a vf register as 4x 32-bit base-10 integers" `(let ((temp (new 'stack 'vector4w))) - (.svf temp ,vf) - (format #t " ~d ~d ~d ~d~%" (-> temp data 0) (-> temp data 1) (-> temp data 2) (-> temp data 3)) - ) - ) + (.svf temp ,vf) + (format #t " ~d ~d ~d ~d~%" (-> temp data 0) (-> temp data 1) (-> temp data 2) (-> temp data 3)))) (defun vector4-dot-vu ((a vector) (b vector)) "Take the dot product of two vectors. @@ -544,34 +419,26 @@ (.lvf vf1 a) ;; (.lqc2 vf2 0 arg1) (.lvf vf2 b) - ;; (.vmul.xyzw vf1 vf1 vf2) ;; set vf1 to element-wise products (.mul.vf vf1 vf1 vf2) - ;; (.vaddw.x vf3 vf0 vf0) ;; set vf3x to 1 (.xor.vf vf3 vf3 vf3) (.add.w.vf vf3 vf0 vf0 :mask #b1) - ;; (.vmulax.x acc vf3 vf1) ;; acc.x is now (xa * xb) (.mul.x.vf acc vf3 vf1 :mask #b1) - ;; (.vmadday.x acc vf3 vf1) ;; acc += thing (.add.mul.y.vf acc vf3 vf1 acc :mask #b1) - ;; (.vmaddaz.x acc vf3 vf1) (.add.mul.z.vf acc vf3 vf1 acc :mask #b1) - ;; (.vmaddw.x vf1 vf3 vf1) (.add.mul.w.vf vf1 vf3 vf1 acc :mask #b1) ;; (.qmfc2.i v0-0 vf1) (.mov result vf1) - result - ) - ) + result)) (defun vector+! ((dst vector) (a vector) (b vector)) "Set dst = a + b. The w component of dst is set to 0." @@ -589,10 +456,8 @@ ;; set w = 1 (.blend.vf vf1 vf1 vf0 :mask #b1000) ;; store - (.svf dst vf1) - ) - dst - ) + (.svf dst vf1)) + dst) (defun vector-! ((dst vector) (a vector) (b vector)) "Set dst = a - b. The w componenent of dst is set to 0." @@ -610,10 +475,8 @@ ;; set w = 1 (.blend.vf vf1 vf1 vf0 :mask #b1000) ;; store - (.svf dst vf1) - ) - dst - ) + (.svf dst vf1)) + dst) (defun vector-zero! ((dest vector)) "Set xyzw to 0." @@ -622,55 +485,56 @@ ;; set vf1 = 0 (.xor.vf vf1 vf1 vf1) ;; store the 0 - (.svf dest vf1) - ) - dest - ) + (.svf dest vf1)) + dest) (defun vector-reset! ((dst vector)) "Set vector to 0,0,0,1." (declare (inline)) (vector-zero! dst) (set! (-> dst w) 1.0) - dst - ) + dst) (defun vector-copy! ((dst vector) (src vector)) "Copy vector src to dst. Copies the entire quadword (xyzw). The vectors must be aligned." (declare (inline)) - (rlet ((vf1 :class vf :reset-here #t)) - (.lvf vf1 src) - (.svf dst vf1) - ) - dst - ) + (rlet ((vf1 :class vf :reset-here #t)) (.lvf vf1 src) (.svf dst vf1)) + dst) (defmacro new-stack-vector0 () "Get a stack vector that's set to 0. This is more efficient than (new 'stack 'vector) because this doesn't call the constructor." - `(let ((vec (new 'stack-no-clear 'vector))) - (set! (-> vec quad) (the-as uint128 0)) - vec - ) - ) + `(let ((vec (new 'stack-no-clear 'vector))) (set! (-> vec quad) (the-as uint128 0)) vec)) (defmacro print-vector4m (vec &key (dst #t)) - `(format ,dst "~m ~m ~m ~m~%" (-> ,vec x) (-> ,vec y) (-> ,vec z) (-> ,vec w)) - ) + `(format ,dst "~m ~m ~m ~m~%" (-> ,vec x) (-> ,vec y) (-> ,vec z) (-> ,vec w))) (define *zero-vector* (new 'static 'vector :x 0. :y 0. :z 0. :w 0.)) + (define-extern vector-identity! (function vector vector)) + (define-extern vector-length (function vector float)) + (define-extern vector-xz-normalize! (function vector float vector)) + (define-extern vector-xz-length (function vector float)) + (defun-extern vector+float*! vector vector vector float vector) + (defun-extern vector-normalize! vector float vector) + (defun-extern vector-float*! vector vector float vector) + (define-extern vector-normalize-copy! (function vector vector float vector)) + (define-extern vector-cross! (function vector vector vector vector)) + (define-extern vector-negate! (function vector vector vector)) + (define-extern vector-normalize-ret-len! (function vector float float)) + (define-extern vector-vector-distance (function vector vector float)) + (define-extern vector-vector-distance-squared (function vector vector float)) diff --git a/goal_src/jak1/engine/math/vector.gc b/goal_src/jak1/engine/math/vector.gc index 9ad4a993b7..602705d64f 100644 --- a/goal_src/jak1/engine/math/vector.gc +++ b/goal_src/jak1/engine/math/vector.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/math/trigonometry.gc") -;; name: vector.gc -;; name in dgo: vector -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun vector-cross! ((arg0 vector) (arg1 vector) (arg2 vector)) @@ -16,50 +11,41 @@ (rlet ((acc :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (.lvf vf1 (&-> arg1 quad)) (.lvf vf2 (&-> arg2 quad)) (.outer.product.a.vf acc vf1 vf2) (.outer.product.b.vf vf3 vf2 vf1 acc) (.svf (&-> arg0 quad) vf3) - arg0 - ) - ) + arg0)) (defun vector+float! ((arg0 vector) (arg1 vector) (arg2 float)) "Add float to each component of vector. The w component is set to 1" (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (.mov vf6 arg2) - (.lvf vf4 (&-> arg1 quad)) - (.add.x.vf vf5 vf0 vf0 :mask #b1000) - (.add.x.vf vf5 vf4 vf6 :mask #b111) - (.svf (&-> arg0 quad) vf5) - arg0 - ) - ) + (vf6 :class vf)) + (init-vf0-vector) + (.mov vf6 arg2) + (.lvf vf4 (&-> arg1 quad)) + (.add.x.vf vf5 vf0 vf0 :mask #b1000) + (.add.x.vf vf5 vf4 vf6 :mask #b111) + (.svf (&-> arg0 quad) vf5) + arg0)) (defun vector*! ((arg0 vector) (arg1 vector) (arg2 vector)) "Elementwise product. Set w = 1" (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (.lvf vf4 (&-> arg1 quad)) - (.lvf vf5 (&-> arg2 quad)) - (.add.x.vf vf6 vf0 vf0 :mask #b1000) - (.mul.vf vf6 vf4 vf5 :mask #b111) - (.svf (&-> arg0 quad) vf6) - arg0 - ) - ) + (vf6 :class vf)) + (init-vf0-vector) + (.lvf vf4 (&-> arg1 quad)) + (.lvf vf5 (&-> arg2 quad)) + (.add.x.vf vf6 vf0 vf0 :mask #b1000) + (.mul.vf vf6 vf4 vf5 :mask #b111) + (.svf (&-> arg0 quad) vf6) + arg0)) (defun vector+*! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) "set arg0 = arg1 + (arg3 * arg2). The w component will be set to 1" @@ -68,20 +54,17 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) - (init-vf0-vector) - (.mov vf7 arg3) - (.lvf vf5 (&-> arg2 quad)) - (.lvf vf4 (&-> arg1 quad)) - (.add.x.vf vf6 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf5 vf7 :mask #b111) - ;; acts as just an add. - (.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111) - (.svf (&-> arg0 quad) vf6) - arg0 - ) - ) + (vf7 :class vf)) + (init-vf0-vector) + (.mov vf7 arg3) + (.lvf vf5 (&-> arg2 quad)) + (.lvf vf4 (&-> arg1 quad)) + (.add.x.vf vf6 vf0 vf0 :mask #b1000) + (.mul.x.vf acc vf5 vf7 :mask #b111) + ;; acts as just an add. + (.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111) + (.svf (&-> arg0 quad) vf6) + arg0)) (defun vector-*! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) "Set arg0 = arg1 - (arg3 * arg2). The w component will be set to 1." @@ -90,19 +73,16 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) - (init-vf0-vector) - (.mov vf7 arg3) - (.lvf vf5 (&-> arg2 quad)) - (.lvf vf4 (&-> arg1 quad)) - (.add.x.vf vf6 vf0 vf0 :mask #b1000) - (.mul.w.vf acc vf4 vf0 :mask #b111) - (.sub.mul.x.vf vf6 vf5 vf7 acc :mask #b111) - (.svf (&-> arg0 quad) vf6) - arg0 - ) - ) + (vf7 :class vf)) + (init-vf0-vector) + (.mov vf7 arg3) + (.lvf vf5 (&-> arg2 quad)) + (.lvf vf4 (&-> arg1 quad)) + (.add.x.vf vf6 vf0 vf0 :mask #b1000) + (.mul.w.vf acc vf4 vf0 :mask #b111) + (.sub.mul.x.vf vf6 vf5 vf7 acc :mask #b111) + (.svf (&-> arg0 quad) vf6) + arg0)) (defun vector/! ((arg0 vector) (arg1 vector) (arg2 vector)) "Set arg0 = arg1 / arg2. The w component will be set to 1. @@ -112,8 +92,7 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) + (vf7 :class vf)) (init-vf0-vector) (.lvf vf5 (&-> arg2 quad)) ;; get started on the first divide ASAP. @@ -125,38 +104,31 @@ ;; use FPU to divide x while VU0 is dividing y. (let ((v1-0 (/ (-> arg1 data 0) (-> arg2 data 0)))) (.wait.vf) - (.mul.vf vf6 vf4 Q :mask #b10) (.nop.vf) (.nop.vf) (.div.vf Q vf0 vf5 :fsf #b11 :ftf #b10) - (.mov vf7 v1-0) - ) + (.mov vf7 v1-0)) (.add.x.vf vf6 vf0 vf7 :mask #b1) (.wait.vf) (.mul.vf vf6 vf4 Q :mask #b100) (.nop.vf) (.nop.vf) (.svf (&-> arg0 quad) vf6) - arg0 - ) - ) + arg0)) (defun vector-float*! ((arg0 vector) (arg1 vector) (arg2 float)) "Multiply all values in a vector by arg2. Set w to 1." (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (.lvf vf1 (&-> arg1 quad)) - (.mov vf2 arg2) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) + (vf2 :class vf)) + (init-vf0-vector) + (.lvf vf1 (&-> arg1 quad)) + (.mov vf2 arg2) + (.add.x.vf vf1 vf0 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> arg0 quad) vf1) + arg0)) (defun vector-average! ((arg0 vector) (arg1 vector) (arg2 vector)) "Set arg0 to the average of arg1 and arg2. Set w to 1." @@ -165,21 +137,14 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 #x3f000000)) - (.lvf vf1 (&-> arg1 quad)) - (.lvf vf2 (&-> arg2 quad)) - (.mov vf3 v1-0) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf1 vf3) - (.add.mul.x.vf vf4 vf2 vf3 acc :mask #b111) - (.svf (&-> arg0 quad) vf4) - arg0 - ) - ) + (vf4 :class vf)) + (init-vf0-vector) + (let ((v1-0 #x3f000000)) (.lvf vf1 (&-> arg1 quad)) (.lvf vf2 (&-> arg2 quad)) (.mov vf3 v1-0)) + (.add.x.vf vf4 vf0 vf0 :mask #b1000) + (.mul.x.vf acc vf1 vf3) + (.add.mul.x.vf vf4 vf2 vf3 acc :mask #b111) + (.svf (&-> arg0 quad) vf4) + arg0)) (defun vector+float*! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) "Set arg0 = arg1 + (arg2 * arg3). The w component will be set to 1. @@ -190,19 +155,16 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg1 quad)) - (.mov vf3 arg3) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> arg0 quad) vf4) - arg0 - ) - ) + (vf4 :class vf)) + (init-vf0-vector) + (.lvf vf2 (&-> arg2 quad)) + (.lvf vf1 (&-> arg1 quad)) + (.mov vf3 arg3) + (.add.x.vf vf4 vf0 vf0 :mask #b1000) + (.mul.x.vf acc vf2 vf3) + (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) + (.svf (&-> arg0 quad) vf4) + arg0)) (defun vector--float*! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) "Set arg0 = arg1 - (arg2 * arg3). The w component will be set to 1 @@ -212,19 +174,16 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg1 quad)) - (.mov vf3 arg3) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.w.vf acc vf1 vf0) - (.sub.mul.x.vf vf4 vf2 vf3 acc :mask #b111) - (.svf (&-> arg0 quad) vf4) - arg0 - ) - ) + (vf4 :class vf)) + (init-vf0-vector) + (.lvf vf2 (&-> arg2 quad)) + (.lvf vf1 (&-> arg1 quad)) + (.mov vf3 arg3) + (.add.x.vf vf4 vf0 vf0 :mask #b1000) + (.mul.w.vf acc vf1 vf0) + (.sub.mul.x.vf vf4 vf2 vf3 acc :mask #b111) + (.svf (&-> arg0 quad) vf4) + arg0)) (defun vector-float/! ((arg0 vector) (arg1 vector) (arg2 float)) "Divide all components by arg2. The w component will be set to 1." @@ -232,55 +191,44 @@ (vf0 :class vf) (vf1 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (.mov vf3 arg2) - (.div.vf Q vf0 vf3 :fsf #b11 :ftf #b0) - (.lvf vf1 (&-> arg1 quad)) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.wait.vf) - (.mul.vf vf4 vf1 Q :mask #b111) - (.nop.vf) - (.nop.vf) - (.svf (&-> arg0 quad) vf4) - arg0 - ) - ) - + (vf4 :class vf)) + (init-vf0-vector) + (.mov vf3 arg2) + (.div.vf Q vf0 vf3 :fsf #b11 :ftf #b0) + (.lvf vf1 (&-> arg1 quad)) + (.add.x.vf vf4 vf0 vf0 :mask #b1000) + (.wait.vf) + (.mul.vf vf4 vf1 Q :mask #b111) + (.nop.vf) + (.nop.vf) + (.svf (&-> arg0 quad) vf4) + arg0)) (defun vector-negate! ((arg0 vector) (arg1 vector)) "Negate xyz, set w to 1" (rlet ((vf0 :class vf) (vf1 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (.lvf vf1 (&-> arg1 quad)) - (.sub.vf vf4 vf0 vf1 :mask #b111) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.svf (&-> arg0 quad) vf4) - arg0 - ) - ) + (vf4 :class vf)) + (init-vf0-vector) + (.lvf vf1 (&-> arg1 quad)) + (.sub.vf vf4 vf0 vf1 :mask #b111) + (.add.x.vf vf4 vf0 vf0 :mask #b1000) + (.svf (&-> arg0 quad) vf4) + arg0)) (defun vector-negate-in-place! ((arg0 vector)) "Negate xyz. Doesn't touch w." (rlet ((vf0 :class vf) - (vf1 :class vf) - ) - (init-vf0-vector) - (.lvf vf1 (&-> arg0 quad)) - (.sub.vf vf1 vf0 vf1 :mask #b111) - (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) + (vf1 :class vf)) + (init-vf0-vector) + (.lvf vf1 (&-> arg0 quad)) + (.sub.vf vf1 vf0 vf1 :mask #b111) + (.svf (&-> arg0 quad) vf1) + arg0)) (defun vector= ((arg0 vector) (arg1 vector)) "Are the two vectors equal? Does not compare the w component. The implementation is cool." - ;; (label L91) ;; (set! v0-0 #t) ;; (set! v1-0 #xffff) @@ -292,8 +240,7 @@ ;; (set! a1-1 (l.q a1-0)) (a1-1 (-> arg1 quad)) (a0-2 (the uint128 0)) - (r0 (the uint128 0)) - ) + (r0 (the uint128 0))) ;; (.pceqw a0-2 a0-1 a1-1) (.pceqw a0-2 a0-1 a1-1) ;; (.ppach a0-3 r0-0 a0-2) @@ -303,14 +250,11 @@ ;; (set! v1-3 (+ v1-2 1)) ;; will overflow the 64-bit integer if xyz is equal. (set! v1-1 (+ v1-1 1)) - (zero? v1-1) - ) - + (zero? v1-1)) ;; (b! (zero? v1-3) L92 (nop!)) ;; (set! v0-0 #f) ;; (label L92) ;; (ret-value v0-0) - ) (defun vector-delta ((arg0 vector) (arg1 vector)) @@ -320,25 +264,22 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) - (init-vf0-vector) - (.lvf vf1 (&-> arg0 quad)) - (.lvf vf2 (&-> arg1 quad)) - (.sub.vf vf1 vf2 vf1) - (.abs.vf vf1 vf1) - ;; put abs.x in acc.w - (.mul.x.vf acc vf0 vf1 :mask #b1000) - ;; add abs.y - (.add.mul.y.vf acc vf0 vf1 acc :mask #b1000) - ;; add abs.z - (.add.mul.z.vf vf3 vf0 vf1 acc :mask #b1000) - ;; set acc.x = acc.w - (.add.w.vf vf3 vf0 vf3 :mask #b1) - (.mov v0-0 vf3) - v0-0 - ) - ) + (vf3 :class vf)) + (init-vf0-vector) + (.lvf vf1 (&-> arg0 quad)) + (.lvf vf2 (&-> arg1 quad)) + (.sub.vf vf1 vf2 vf1) + (.abs.vf vf1 vf1) + ;; put abs.x in acc.w + (.mul.x.vf acc vf0 vf1 :mask #b1000) + ;; add abs.y + (.add.mul.y.vf acc vf0 vf1 acc :mask #b1000) + ;; add abs.z + (.add.mul.z.vf vf3 vf0 vf1 acc :mask #b1000) + ;; set acc.x = acc.w + (.add.w.vf vf3 vf0 vf3 :mask #b1) + (.mov v0-0 vf3) + v0-0)) (defun vector-seek! ((arg0 vector) (arg1 vector) (arg2 float)) "Seek arg0 toward arg1. The arg0 is both read and written. @@ -348,22 +289,19 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) - (init-vf0-vector) - (.mov vf4 arg2) - (.lvf vf1 (&-> arg1 quad)) - (.lvf vf2 (&-> arg0 quad)) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.sub.x.vf vf5 vf0 vf4 :mask #b1) - (.sub.vf vf3 vf1 vf2 :mask #b111) - (.min.x.vf vf3 vf3 vf4 :mask #b111) - (.max.x.vf vf3 vf3 vf5 :mask #b111) - (.add.vf vf1 vf2 vf3 :mask #b111) - (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) + (vf5 :class vf)) + (init-vf0-vector) + (.mov vf4 arg2) + (.lvf vf1 (&-> arg1 quad)) + (.lvf vf2 (&-> arg0 quad)) + (.add.x.vf vf1 vf0 vf0 :mask #b1000) + (.sub.x.vf vf5 vf0 vf4 :mask #b1) + (.sub.vf vf3 vf1 vf2 :mask #b111) + (.min.x.vf vf3 vf3 vf4 :mask #b111) + (.max.x.vf vf3 vf3 vf5 :mask #b111) + (.add.vf vf1 vf2 vf3 :mask #b111) + (.svf (&-> arg0 quad) vf1) + arg0)) (defun vector-seek-2d-xz-smooth! ((vec vector) (target vector) (max-step float) (alpha float)) "Smoothly seek vec's x and z components toward target. @@ -372,36 +310,23 @@ Doesn't touch y or w." ;; how much we have to go to get to the target (let ((x-diff (- (-> target data 0) (-> vec data 0))) - (z-diff (- (-> target data 2) (-> vec data 2))) - ) + (z-diff (- (-> target data 2) (-> vec data 2)))) ;; do we have to move? (if (or (!= x-diff 0.0) (!= z-diff 0.0)) - ;; if so, scale by alpha, - (let* ((x-step (* x-diff alpha)) - (z-step (* z-diff alpha)) - ;; and get the length of this step - (step-len (sqrtf (+ (* x-step x-step) (* z-step z-step)))) - ) - (cond - ((>= max-step step-len) - ;; step is within max-step, just do it. - (+! (-> vec data 0) x-step) - (+! (-> vec data 2) z-step) - ) - (else - ;; not in range. - (let ((f2-6 (/ max-step step-len))) - (+! (-> vec data 0) (* f2-6 x-step)) - (+! (-> vec data 2) (* f2-6 z-step)) - ) - ) - ) - ) - ) - ) - vec - ) - + ;; if so, scale by alpha, + (let* ((x-step (* x-diff alpha)) + (z-step (* z-diff alpha)) + ;; and get the length of this step + (step-len (sqrtf (+ (* x-step x-step) (* z-step z-step))))) + (cond + ((>= max-step step-len) + ;; step is within max-step, just do it. + (+! (-> vec data 0) x-step) + (+! (-> vec data 2) z-step)) + (else + ;; not in range. + (let ((f2-6 (/ max-step step-len))) (+! (-> vec data 0) (* f2-6 x-step)) (+! (-> vec data 2) (* f2-6 z-step)))))))) + vec) (defun vector-seek-2d-yz-smooth! ((vec vector) (target vector) (max-step float) (alpha float)) "Smoothly seek vec's y and z components toward target. @@ -409,34 +334,20 @@ If the step is longer than max-step, the step is projected onto a circle of radius max-step. Doesn't touch x or w." (let ((y-diff (- (-> target data 1) (-> vec data 1))) - (z-diff (- (-> target data 2) (-> vec data 2))) - ) + (z-diff (- (-> target data 2) (-> vec data 2)))) (if (or (!= y-diff 0.0) (!= z-diff 0.0)) - (let* ((y-step (* y-diff alpha)) - (z-step (* z-diff alpha)) - (step-len (sqrtf (+ (* y-step y-step) (* z-step z-step)))) - ) - (cond - ((>= max-step step-len) - (set! (-> vec data 1) (+ (-> vec data 1) y-step)) - (let ((f0-4 (+ (-> vec data 2) z-step))) - (set! (-> vec data 2) f0-4) - ) - ) - (else - (let ((step-scale (/ max-step step-len))) - (set! (-> vec data 1) (+ (-> vec data 1) (* step-scale y-step))) - (let ((f0-6 (+ (-> vec data 2) (* step-scale z-step)))) - (set! (-> vec data 2) f0-6) - ) - ) - ) - ) - ) - ) - ) - vec - ) + (let* ((y-step (* y-diff alpha)) + (z-step (* z-diff alpha)) + (step-len (sqrtf (+ (* y-step y-step) (* z-step z-step))))) + (cond + ((>= max-step step-len) + (set! (-> vec data 1) (+ (-> vec data 1) y-step)) + (let ((f0-4 (+ (-> vec data 2) z-step))) (set! (-> vec data 2) f0-4))) + (else + (let ((step-scale (/ max-step step-len))) + (set! (-> vec data 1) (+ (-> vec data 1) (* step-scale y-step))) + (let ((f0-6 (+ (-> vec data 2) (* step-scale z-step)))) (set! (-> vec data 2) f0-6)))))))) + vec) (defun vector-seek-3d-smooth! ((vec vector) (target vector) (max-step float) (alpha float)) "Smoothly seek vec's x, y, and z components toward target. @@ -445,37 +356,23 @@ Doesn't touch w." (let ((x-diff (- (-> target data 0) (-> vec data 0))) (y-diff (- (-> target data 1) (-> vec data 1))) - (z-diff (- (-> target data 2) (-> vec data 2))) - ) + (z-diff (- (-> target data 2) (-> vec data 2)))) (if (or (!= x-diff 0.0) (!= y-diff 0.0) (!= z-diff 0.0)) - (let* ((x-step (* x-diff alpha)) - (y-step (* y-diff alpha)) - (z-step (* z-diff alpha)) - (step-len (sqrtf (+ (+ (* x-step x-step) (* y-step y-step)) (* z-step z-step)))) - ) - (cond - ((>= max-step step-len) - (set! (-> vec data 0) (+ (-> vec data 0) x-step)) - (set! (-> vec data 1) (+ (-> vec data 1) y-step)) - (let ((f0-5 (+ (-> vec data 2) z-step))) - (set! (-> vec data 2) f0-5) - ) - ) - (else - (let ((step-scale (/ max-step step-len))) - (set! (-> vec data 0) (+ (-> vec data 0) (* step-scale x-step))) - (set! (-> vec data 1) (+ (-> vec data 1) (* step-scale y-step))) - (let ((f0-7 (+ (-> vec data 2) (* step-scale z-step)))) - (set! (-> vec data 2) f0-7) - ) - ) - ) - ) - ) - ) - ) - vec - ) + (let* ((x-step (* x-diff alpha)) + (y-step (* y-diff alpha)) + (z-step (* z-diff alpha)) + (step-len (sqrtf (+ (+ (* x-step x-step) (* y-step y-step)) (* z-step z-step))))) + (cond + ((>= max-step step-len) + (set! (-> vec data 0) (+ (-> vec data 0) x-step)) + (set! (-> vec data 1) (+ (-> vec data 1) y-step)) + (let ((f0-5 (+ (-> vec data 2) z-step))) (set! (-> vec data 2) f0-5))) + (else + (let ((step-scale (/ max-step step-len))) + (set! (-> vec data 0) (+ (-> vec data 0) (* step-scale x-step))) + (set! (-> vec data 1) (+ (-> vec data 1) (* step-scale y-step))) + (let ((f0-7 (+ (-> vec data 2) (* step-scale z-step)))) (set! (-> vec data 2) f0-7)))))))) + vec) (defun seek-with-smooth ((value float) (target float) (max-step float) (alpha float) (deadband float)) "Move value closer to target. @@ -483,23 +380,13 @@ If not, try to go alpha*err. If that is a larger step than max-step, limit to max-step" (let ((diff (- target value))) (if (>= deadband (fabs diff)) - target - (let ((step (* diff alpha))) - (let ((min-step (- max-step))) - (cond - ((< step min-step) - (set! step min-step) - ) - ((< max-step step) - (set! step max-step) - ) - ) - ) - (+ step value) - ) - ) - ) - ) + target + (let ((step (* diff alpha))) + (let ((min-step (- max-step))) + (cond + ((< step min-step) (set! step min-step)) + ((< max-step step) (set! step max-step)))) + (+ step value))))) (defun vector-identity! ((arg0 vector)) "Set arg0 to 1, 1, 1, 1" @@ -507,101 +394,80 @@ (set! (-> arg0 data 1) 1.0) (set! (-> arg0 data 2) 1.0) (set! (-> arg0 data 3) 1.0) - arg0 - ) + arg0) (defun vector-seconds ((arg0 vector) (arg1 vector)) "Convert from actual seconds to the seconds unit." (set! (-> arg0 data 0) (fsec (-> arg1 data 0))) (set! (-> arg0 data 1) (fsec (-> arg1 data 1))) (set! (-> arg0 data 2) (fsec (-> arg1 data 2))) - arg0 - ) + arg0) (defun vector-seconds! ((arg0 vector)) "Convert from actual seconds to seconds, in place" (set! (-> arg0 data 0) (fsec (-> arg0 data 0))) (set! (-> arg0 data 1) (fsec (-> arg0 data 1))) (set! (-> arg0 data 2) (fsec (-> arg0 data 2))) - arg0 - ) + arg0) (defun vector-v! ((arg0 vector)) "Convert a velocity to a displacement per frame. The velocity should be in X/actual_second" (vector-float*! arg0 arg0 (-> *display* seconds-per-frame)) - arg0 - ) + arg0) (defun vector-v+! ((result vector) (position vector) (velocity vector)) "Euler forward step, using the current display time settings" (vector+float*! result position velocity (-> *display* seconds-per-frame)) - result - ) - + result) (defun vector-v*float+! ((result vector) (position vector) (velocity vector) (velocity-scale float)) "Euler forward step, scaling velocity by velocity-scale" (vector+float*! result position velocity (* velocity-scale (-> *display* seconds-per-frame))) - result - ) + result) (defun vector-v++! ((position vector) (velocity vector)) "Update position in place, using display's current timing" (vector+float*! position position velocity (-> *display* seconds-per-frame)) - position - ) + position) (defun vector-v*float! ((delta-p vector) (velocity vector) (scale float)) "Go from velocity to delta-p per frame, scaling by scale" - (vector-float*! delta-p velocity (* scale (-> *display* seconds-per-frame))) - ) + (vector-float*! delta-p velocity (* scale (-> *display* seconds-per-frame)))) (defun vector-v*float++! ((position vector) (velocity vector) (scale float)) "update position with given velocity, scaled by scale." (vector+float*! position position velocity (* scale (-> *display* seconds-per-frame))) - position - ) - + position) (defun vector-to-ups! ((arg0 vector) (arg1 vector)) "Go from units per frame to units per second?" (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (.lvf vf1 (&-> arg1 quad)) - (let ((f0-0 (-> *display* frames-per-second))) - (.mov at-0 f0-0) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) + (vf2 :class vf)) + (init-vf0-vector) + (.lvf vf1 (&-> arg1 quad)) + (let ((f0-0 (-> *display* frames-per-second))) (.mov at-0 f0-0)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> arg0 quad) vf1) + arg0)) (defun vector-from-ups! ((arg0 vector) (arg1 vector)) "Go from units per second to units per frame?" (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (.lvf vf1 (&-> arg1 quad)) - (let ((f0-0 (-> *display* seconds-per-frame))) - (.mov at-0 f0-0) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) + (vf2 :class vf)) + (init-vf0-vector) + (.lvf vf1 (&-> arg1 quad)) + (let ((f0-0 (-> *display* seconds-per-frame))) (.mov at-0 f0-0)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> arg0 quad) vf1) + arg0)) (defun vector-length ((arg0 vector)) "Get the length of the xyz part." @@ -609,8 +475,7 @@ (rlet ((acc :class vf) (Q :class vf) (vf0 :class vf) - (vf1 :class vf) - ) + (vf1 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg0 quad)) (.mul.vf vf1 vf1 vf1) @@ -624,9 +489,7 @@ (.nop.vf) (.nop.vf) (.mov v0-0 vf1) - v0-0 - ) - ) + v0-0)) (defun vector-length-squared ((arg0 vector)) "Get the squared length of the xyz part." @@ -634,8 +497,7 @@ (rlet ((acc :class vf) (vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg0 quad)) (.add.w.vf vf2 vf0 vf0 :mask #b1) @@ -644,24 +506,15 @@ (.add.mul.y.vf acc vf2 vf1 acc :mask #b1) (.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1) (.mov v0-0 vf1) - v0-0 - ) - ) + v0-0)) (defun vector-xz-length-squared ((arg0 vector)) "Get the length of the xz part, squared." - (+ (* (-> arg0 data 0) (-> arg0 data 0)) - (* (-> arg0 data 2) (-> arg0 data 2)) - ) - ) + (+ (* (-> arg0 data 0) (-> arg0 data 0)) (* (-> arg0 data 2) (-> arg0 data 2)))) (defun vector-xz-length ((arg0 vector)) "Get the length of the xz part" - (sqrtf (+ (* (-> arg0 data 0) (-> arg0 data 0)) - (* (-> arg0 data 2) (-> arg0 data 2)) - ) - ) - ) + (sqrtf (+ (* (-> arg0 data 0) (-> arg0 data 0)) (* (-> arg0 data 2) (-> arg0 data 2))))) (defun vector-vector-distance ((arg0 vector) (arg1 vector)) "Subtract the xyz parts and get the norm" @@ -671,8 +524,7 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (init-vf0-vector) (.lvf vf2 (&-> arg0 quad)) (.lvf vf3 (&-> arg1 quad)) @@ -688,17 +540,14 @@ (.nop.vf) (.nop.vf) (.mov v0-0 vf1) - v0-0 - ) - ) + v0-0)) (defun vector-vector-distance-squared ((arg0 vector) (arg1 vector)) "Squared norm of the difference of the xyz parts" (local-vars (v0-0 float)) (rlet ((vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (.lvf vf2 (&-> arg0 quad)) (.lvf vf3 (&-> arg1 quad)) (.sub.vf vf1 vf3 vf2) @@ -706,9 +555,7 @@ (.add.y.vf vf1 vf1 vf1 :mask #b1) (.add.z.vf vf1 vf1 vf1 :mask #b1) (.mov v0-0 vf1) - v0-0 - ) - ) + v0-0)) (defun vector-vector-xz-distance ((arg0 vector) (arg1 vector)) "Distance on the xz plane" @@ -718,8 +565,7 @@ (vf0 :class vf) (vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (init-vf0-vector) (.lvf vf2 (&-> arg0 quad)) (.lvf vf3 (&-> arg1 quad)) @@ -734,26 +580,21 @@ (.nop.vf) (.nop.vf) (.mov v0-0 vf1) - v0-0 - ) - ) + v0-0)) (defun vector-vector-xz-distance-squared ((arg0 vector) (arg1 vector)) "Squared distance on the xz plane" (local-vars (v0-0 float)) (rlet ((vf1 :class vf) (vf2 :class vf) - (vf3 :class vf) - ) + (vf3 :class vf)) (.lvf vf2 (&-> arg0 quad)) (.lvf vf3 (&-> arg1 quad)) (.sub.vf vf1 vf3 vf2) (.mul.vf vf1 vf1 vf1) (.add.z.vf vf1 vf1 vf1 :mask #b1) (.mov v0-0 vf1) - v0-0 - ) - ) + v0-0)) (defun vector-normalize! ((arg0 vector) (arg1 float)) "Modify arg0 in place to have length arg1 for its xyz components. The w part is not changed." @@ -761,9 +602,7 @@ (let ((v1-1 (/ arg1 f0-0))) (set! (-> arg0 data 0) (* (-> arg0 data 0) v1-1)) (set! (-> arg0 data 1) (* (-> arg0 data 1) v1-1)) - (set! (-> arg0 data 2) (* (-> arg0 data 2) v1-1)) - ) - ) + (set! (-> arg0 data 2) (* (-> arg0 data 2) v1-1)))) arg0 ; (rlet ((acc :class vf) ; (Q :class vf) @@ -795,15 +634,12 @@ (defun vector-normalize-ret-len! ((arg0 vector) (arg1 float)) "Modify arg0 in place to have length arg1 for its xyz components. The w part isn't changed and the _original_ length is returned." - (let ((f0-0 (vector-length arg0))) + (let ((f0-0 (vector-length arg0))) (let ((v1-1 (/ arg1 f0-0))) (set! (-> arg0 data 0) (* (-> arg0 data 0) v1-1)) (set! (-> arg0 data 1) (* (-> arg0 data 1) v1-1)) - (set! (-> arg0 data 2) (* (-> arg0 data 2) v1-1)) - ) - f0-0 - ) - + (set! (-> arg0 data 2) (* (-> arg0 data 2) v1-1))) + f0-0) ; (local-vars (v1-1 float)) ; (rlet ((acc :class vf) ; (Q :class vf) @@ -842,32 +678,22 @@ The w component is set to 1." (let ((f0-0 (vector-length arg1))) (if (= f0-0 0.0) - (set! (-> arg0 quad) (-> arg1 quad)) - (let ((v1-1 (/ arg2 f0-0))) - (set! (-> arg0 data 0) (* (-> arg1 data 0) v1-1)) - (set! (-> arg0 data 1) (* (-> arg1 data 1) v1-1)) - (let ((f0-7 (* (-> arg1 data 2) v1-1))) - (set! (-> arg0 data 2) f0-7) - ) - ) - ) - ) + (set! (-> arg0 quad) (-> arg1 quad)) + (let ((v1-1 (/ arg2 f0-0))) + (set! (-> arg0 data 0) (* (-> arg1 data 0) v1-1)) + (set! (-> arg0 data 1) (* (-> arg1 data 1) v1-1)) + (let ((f0-7 (* (-> arg1 data 2) v1-1))) (set! (-> arg0 data 2) f0-7))))) (set! (-> arg0 data 3) 1.0) - arg0 - ) + arg0) (defun vector-xz-normalize! ((arg0 vector) (arg1 float)) "Normalize, xz components only" (let ((f0-0 (vector-xz-length arg0))) (if (!= f0-0 0.0) - (let ((v1-1 (/ arg1 f0-0))) - (set! (-> arg0 data 0) (* (-> arg0 data 0) v1-1)) - (set! (-> arg0 data 2) (* (-> arg0 data 2) v1-1)) - ) - ) - ) - arg0 - ) + (let ((v1-1 (/ arg1 f0-0))) + (set! (-> arg0 data 0) (* (-> arg0 data 0) v1-1)) + (set! (-> arg0 data 2) (* (-> arg0 data 2) v1-1))))) + arg0) (defun vector-length-max! ((arg0 vector) (arg1 float)) "Make vector at most arg1 length (xyz only). @@ -879,109 +705,71 @@ (when (!= f0-0 0.0) (set! (-> arg0 data 0) (/ (-> arg0 data 0) f0-0)) (set! (-> arg0 data 1) (/ (-> arg0 data 1) f0-0)) - (set! (-> arg0 data 2) (/ (-> arg0 data 2) f0-0)) - ) - ) - ) - arg0 - ) + (set! (-> arg0 data 2) (/ (-> arg0 data 2) f0-0))))) + arg0) (defun vector-xz-length-max! ((arg0 vector) (arg1 float)) "Make vector at most arg1 length (xz only). It it is larger, project onto circle. Doesn't touch w or y" (let ((f0-0 (vector-xz-length arg0))) - (when (not (or (= f0-0 0.0) (< f0-0 arg1))) - (set! f0-0 (/ f0-0 arg1)) - (when (!= f0-0 0.0) - (set! (-> arg0 data 0) (/ (-> arg0 data 0) f0-0)) - (let ((f0-1 (/ (-> arg0 data 2) f0-0))) - (set! (-> arg0 data 2) f0-1) - ) - ) - ) - ) - arg0 - ) + (when (not (or (= f0-0 0.0) (< f0-0 arg1))) + (set! f0-0 (/ f0-0 arg1)) + (when (!= f0-0 0.0) + (set! (-> arg0 data 0) (/ (-> arg0 data 0) f0-0)) + (let ((f0-1 (/ (-> arg0 data 2) f0-0))) (set! (-> arg0 data 2) f0-1))))) + arg0) (defun vector-rotate-around-y! ((arg0 vector) (arg1 vector) (arg2 float)) "Rotate a vector around the y axis" (let ((f26-0 (-> arg1 data 2)) (f30-0 (-> arg1 data 0)) (f28-0 (cos arg2)) - (f0-0 (sin arg2)) - ) - (set! (-> arg0 quad) (-> arg1 quad)) - (set! (-> arg0 data 2) (- (* f26-0 f28-0) (* f30-0 f0-0))) - (set! (-> arg0 data 0) (+ (* f26-0 f0-0) (* f30-0 f28-0))) - ) - arg0 - ) + (f0-0 (sin arg2))) + (set! (-> arg0 quad) (-> arg1 quad)) + (set! (-> arg0 data 2) (- (* f26-0 f28-0) (* f30-0 f0-0))) + (set! (-> arg0 data 0) (+ (* f26-0 f0-0) (* f30-0 f28-0)))) + arg0) (defun rotate-y<-vector+vector ((arg0 vector) (arg1 vector)) "Get the y rotation between vectors. These should have the same length." - (atan (- (-> arg1 data 0) (-> arg0 data 0)) - (- (-> arg1 data 2) (-> arg0 data 2)) - ) - ) + (atan (- (-> arg1 data 0) (-> arg0 data 0)) (- (-> arg1 data 2) (-> arg0 data 2)))) (defun vector-cvt.w.s! ((arg0 vector) (arg1 vector)) "Convert float to int32. Truncate." - (rlet ((vf1 :class vf)) - (.lvf vf1 (&-> arg1 quad)) - (.ftoi.vf vf1 vf1) - (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) + (rlet ((vf1 :class vf)) (.lvf vf1 (&-> arg1 quad)) (.ftoi.vf vf1 vf1) (.svf (&-> arg0 quad) vf1) arg0)) (defun vector-cvt.s.w! ((arg0 vector) (arg1 vector)) "Convert float to int32." - (rlet ((vf1 :class vf)) - (.lvf vf1 (&-> arg1 quad)) - (.itof.vf vf1 vf1) - (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) + (rlet ((vf1 :class vf)) (.lvf vf1 (&-> arg1 quad)) (.itof.vf vf1 vf1) (.svf (&-> arg0 quad) vf1) arg0)) (defun rot-zxy-from-vector! ((arg0 vector) (arg1 vector)) "I think this gives you a vector of euler angles to rotate some unit vector to arg1." (let* ((f28-0 (-> arg1 data 2)) (f30-0 (-> arg1 data 0)) - (f0-0 (atan f30-0 f28-0)) - ) + (f0-0 (atan f30-0 f28-0))) (set! (-> arg0 data 1) f0-0) (let* ((f26-0 (- f0-0)) (f0-4 (- (* f28-0 (cos f26-0)) (* f30-0 (sin f26-0)))) - (f0-5 (atan (- (-> arg1 data 1)) f0-4)) - ) - (set! (-> arg0 data 0) f0-5) - ) - ) + (f0-5 (atan (- (-> arg1 data 1)) f0-4))) + (set! (-> arg0 data 0) f0-5))) (set! (-> arg0 data 2) 0.0) - arg0 - ) + arg0) (defun rot-zyx-from-vector! ((arg0 vector) (arg1 vector)) "I think this gives you a vector of euler angles to rotate some unit vector to arg1." (let* ((f28-0 (-> arg1 data 2)) (f30-0 (- (-> arg1 data 1))) - (f0-1 (atan f30-0 f28-0)) - ) + (f0-1 (atan f30-0 f28-0))) (set! (-> arg0 data 0) f0-1) (let* ((f26-0 (- f0-1)) (f0-5 (- (* f28-0 (cos f26-0)) (* f30-0 (sin f26-0)))) - (f0-6 (atan (-> arg1 data 0) f0-5)) - ) - (set! (-> arg0 data 1) f0-6) - ) - ) + (f0-6 (atan (-> arg1 data 0) f0-5))) + (set! (-> arg0 data 1) f0-6))) (set! (-> arg0 data 2) 0.0) - arg0 - ) + arg0) (defun vector-lerp! ((out vector) (a vector) (b vector) (alpha float)) "Linearly interpolate between two vectors. Alpha isn't clamped. @@ -990,8 +778,7 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> a quad)) (.lvf vf2 (&-> b quad)) @@ -1001,9 +788,7 @@ (.mul.x.vf vf2 vf2 vf4) (.add.vf vf3 vf1 vf2 :mask #b111) (.svf (&-> out quad) vf3) - out - ) - ) + out)) (defun vector-lerp-clamp! ((out vector) (a vector) (b vector) (alpha float)) "Linearly interpolate between two vectors, clamping alpha to 0, 1 @@ -1012,44 +797,27 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (cond - ((>= 0.0 alpha) - (set! (-> out quad) (-> a quad)) - ) - ((>= alpha 1.0) - (set! (-> out quad) (-> b quad)) - ) + ((>= 0.0 alpha) (set! (-> out quad) (-> a quad))) + ((>= alpha 1.0) (set! (-> out quad) (-> b quad))) (else (let ((v1-2 out)) - (let ((f0-2 alpha)) - (.lvf vf1 (&-> a quad)) - (.lvf vf2 (&-> b quad)) - (let ((a1-1 f0-2)) - (.mov vf4 a1-1) - ) - ) + (let ((f0-2 alpha)) (.lvf vf1 (&-> a quad)) (.lvf vf2 (&-> b quad)) (let ((a1-1 f0-2)) (.mov vf4 a1-1))) (.add.x.vf vf3 vf0 vf0 :mask #b1000) (.sub.vf vf2 vf2 vf1) (.mul.x.vf vf2 vf2 vf4) (.add.vf vf3 vf1 vf2 :mask #b111) - (.svf (&-> v1-2 quad) vf3) - ) - ) - ) - out - ) - ) + (.svf (&-> v1-2 quad) vf3)))) + out)) (defun vector4-lerp! ((out vector) (a vector) (b vector) (alpha float)) "Interpolate all 4 elements of a vector. Alpha is not clamped" (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (.lvf vf1 (&-> a quad)) (.lvf vf2 (&-> b quad)) (.mov vf4 alpha) @@ -1057,43 +825,25 @@ (.mul.x.vf vf2 vf2 vf4) (.add.vf vf3 vf1 vf2) (.svf (&-> out quad) vf3) - out - ) - ) + out)) (defun vector4-lerp-clamp! ((out vector) (a vector) (b vector) (alpha float)) "Interpolate all 4 elements of a vector. Alpha is clamped to [0, 1]" (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (cond - ((>= 0.0 alpha) - (set! (-> out quad) (-> a quad)) - ) - ((>= alpha 1.0) - (set! (-> out quad) (-> b quad)) - ) + ((>= 0.0 alpha) (set! (-> out quad) (-> a quad))) + ((>= alpha 1.0) (set! (-> out quad) (-> b quad))) (else (let ((v1-2 out)) - (let ((f0-2 alpha)) - (.lvf vf1 (&-> a quad)) - (.lvf vf2 (&-> b quad)) - (let ((a1-1 f0-2)) - (.mov vf4 a1-1) - ) - ) + (let ((f0-2 alpha)) (.lvf vf1 (&-> a quad)) (.lvf vf2 (&-> b quad)) (let ((a1-1 f0-2)) (.mov vf4 a1-1))) (.sub.vf vf2 vf2 vf1) (.mul.x.vf vf2 vf2 vf4) (.add.vf vf3 vf1 vf2) - (.svf (&-> v1-2 quad) vf3) - ) - ) - ) - out - ) - ) + (.svf (&-> v1-2 quad) vf3)))) + out)) (defun vector-degi ((arg0 vector) (arg1 vector)) "Convert a vector (in _rotations_) to degrees units, stored in an int. @@ -1102,14 +852,12 @@ Unsurprisingly, this strange function is never used." (local-vars (v1-0 uint128) (v1-1 uint128)) (rlet ((vf1 :class vf)) - (.lvf vf1 (&-> arg1 quad)) - (.ftoi.vf vf1 vf1) - (.mov v1-0 vf1) - (.pw.sll v1-1 v1-0 16) - (set! (-> arg0 quad) (the-as uint128 v1-1)) - arg0 - ) - ) + (.lvf vf1 (&-> arg1 quad)) + (.ftoi.vf vf1 vf1) + (.mov v1-0 vf1) + (.pw.sll v1-1 v1-0 16) + (set! (-> arg0 quad) (the-as uint128 v1-1)) + arg0)) (defun vector-degf ((arg0 vector) (arg1 vector)) "Convert a vector (in integer degree units) to floating point rotations. @@ -1117,15 +865,11 @@ Like the previous function, this is stupid and unused" (local-vars (v1-1 uint128)) (rlet ((vf1 :class vf)) - (let ((v1-0 (-> arg1 quad))) - (.pw.sra v1-1 v1-0 16) - ) + (let ((v1-0 (-> arg1 quad))) (.pw.sra v1-1 v1-0 16)) (.mov vf1 v1-1) (.itof.vf vf1 vf1) (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) + arg0)) (defun vector-degmod ((arg0 vector) (arg1 vector)) "This one is actually right. Wraps degrees units (in floats, like they should be) @@ -1140,25 +884,13 @@ (.mov vf1 v1-2) (.itof.vf vf1 vf1) (.svf (&-> arg0 quad) vf1) - arg0 - ) - ) - + arg0)) (defun vector-deg-diff ((arg0 vector) (arg1 vector) (arg2 vector)) "Wrapped difference, degrees units. Will have the usual 16-bit accuracy issue" - (local-vars - (v0-0 float) - (v1-0 uint128) - (v1-1 uint128) - (v1-2 uint128) - (v1-3 uint128) - (a1-1 uint128) - (a1-2 uint128) - ) + (local-vars (v0-0 float) (v1-0 uint128) (v1-1 uint128) (v1-2 uint128) (v1-3 uint128) (a1-1 uint128) (a1-2 uint128)) (rlet ((vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (.lvf vf1 (&-> arg1 quad)) (.lvf vf2 (&-> arg2 quad)) (.ftoi.vf vf1 vf1) @@ -1173,9 +905,7 @@ (.itof.vf vf1 vf1) (.svf (&-> arg0 quad) vf1) (.mov v0-0 vf1) - (none) - ) - ) + (none))) (defun vector-deg-lerp-clamp! ((out vector) (min-val vector) (max-val vector) (in float)) "Apply deg-lerp-clamp to the xyz components of a vector. Sets w = 1." @@ -1183,31 +913,14 @@ ((>= 0.0 in) ;; there is actually something weird here where it is not possible ;; this was written like you would expect. Perhaps this is from a macro? - (let ((v1-0 out)) - (set! (-> v1-0 quad) (-> min-val quad)) - ) - ) - ((>= in 1.0) - (let ((v1-1 out)) - (set! (-> v1-1 quad) (-> max-val quad)) - ) - ) + (let ((v1-0 out)) (set! (-> v1-0 quad) (-> min-val quad)))) + ((>= in 1.0) (let ((v1-1 out)) (set! (-> v1-1 quad) (-> max-val quad)))) (else - (set! (-> out data 0) - (deg-lerp-clamp (-> min-val data 0) (-> max-val data 0) in) - ) - (set! (-> out data 1) - (deg-lerp-clamp (-> min-val data 1) (-> max-val data 1) in) - ) - (set! (-> out data 2) - (deg-lerp-clamp (-> min-val data 2) (-> max-val data 2) in) - ) - (set! (-> out data 3) 1.0) - ) - ) - out - ) - + (set! (-> out data 0) (deg-lerp-clamp (-> min-val data 0) (-> max-val data 0) in)) + (set! (-> out data 1) (deg-lerp-clamp (-> min-val data 1) (-> max-val data 1) in)) + (set! (-> out data 2) (deg-lerp-clamp (-> min-val data 2) (-> max-val data 2) in)) + (set! (-> out data 3) 1.0))) + out) ;; The weird docstrings for the next 4 functions were left behind in the game. ;; We suspect they accidentally put something before the docstring, turning it @@ -1215,40 +928,32 @@ ;; loads into registers greedily, so it decompiles into a variable assignment. (defun vector3s-copy! ((arg0 vector) (arg1 vector)) - (let ((v1-0 "Copy a vector3s")) - ) + (let ((v1-0 "Copy a vector3s"))) (set! (-> arg0 data 0) (-> arg1 data 0)) (set! (-> arg0 data 1) (-> arg1 data 1)) (set! (-> arg0 data 2) (-> arg1 data 2)) - arg0 - ) + arg0) (defun vector3s+! ((arg0 vector) (arg1 vector) (arg2 vector)) - (let ((v1-0 "Add 2 vectors3.")) - ) + (let ((v1-0 "Add 2 vectors3."))) (set! (-> arg0 data 0) (+ (-> arg1 data 0) (-> arg2 data 0))) (set! (-> arg0 data 1) (+ (-> arg1 data 1) (-> arg2 data 1))) (set! (-> arg0 data 2) (+ (-> arg1 data 2) (-> arg2 data 2))) - arg0 - ) + arg0) (defun vector3s*float! ((arg0 vector) (arg1 vector) (arg2 float)) - (let ((v1-0 "mult vectors3 by float")) - ) + (let ((v1-0 "mult vectors3 by float"))) (set! (-> arg0 data 0) (* (-> arg1 data 0) arg2)) (set! (-> arg0 data 1) (* (-> arg1 data 1) arg2)) (set! (-> arg0 data 2) (* (-> arg1 data 2) arg2)) - arg0 - ) + arg0) (defun vector3s-! ((arg0 vector) (arg1 vector) (arg2 vector)) - (let ((v1-0 "Subtract 2 vectors3: c = (a - b).")) - ) + (let ((v1-0 "Subtract 2 vectors3: c = (a - b)."))) (set! (-> arg0 data 0) (- (-> arg1 data 0) (-> arg2 data 0))) (set! (-> arg0 data 1) (- (-> arg1 data 1) (-> arg2 data 1))) (set! (-> arg0 data 2) (- (-> arg1 data 2) (-> arg2 data 2))) - arg0 - ) + arg0) (defun spheres-overlap? ((arg0 sphere) (arg1 sphere)) "Do the spheres overlap?" @@ -1257,8 +962,7 @@ (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) - (vf4 :class vf) - ) + (vf4 :class vf)) (init-vf0-vector) (.lvf vf1 (&-> arg0 quad)) (.lvf vf2 (&-> arg1 quad)) @@ -1271,34 +975,21 @@ (.add.w.vf vf4 vf0 vf4 :mask #b1) (.mov a0-1 vf4) (.mov v1-0 vf3) - (>= a0-1 v1-0) - ) - ) + (>= a0-1 v1-0))) (defun sphere<-vector! ((arg0 sphere) (arg1 vector)) "Set the position of the sphere to arg1. Does not change the radius" - (let ((f0-0 (-> arg0 data 3))) - (set! (-> arg0 quad) (-> arg1 quad)) - (set! (-> arg0 data 3) f0-0) - ) - arg0 - ) + (let ((f0-0 (-> arg0 data 3))) (set! (-> arg0 quad) (-> arg1 quad)) (set! (-> arg0 data 3) f0-0)) + arg0) (defun sphere<-vector+r! ((arg0 sphere) (arg1 vector) (arg2 float)) "Set the position of the sphere from arg1 and the radius from arg2" (set! (-> arg0 quad) (-> arg1 quad)) (set! (-> arg0 data 3) arg2) - arg0 - ) + arg0) (defun rand-vu-sphere-point! ((arg0 vector) (arg1 float)) "Get a random point on the sphere at the origin with radius arg1. The point is on the surface of the sphere." - (set-vector! arg0 - (rand-vu-float-range -1.0 1.0) - (rand-vu-float-range -1.0 1.0) - (rand-vu-float-range -1.0 1.0) - 1.0 - ) - (vector-normalize! arg0 (rand-vu-float-range 0.0 arg1)) - ) + (set-vector! arg0 (rand-vu-float-range -1.0 1.0) (rand-vu-float-range -1.0 1.0) (rand-vu-float-range -1.0 1.0) 1.0) + (vector-normalize! arg0 (rand-vu-float-range 0.0 arg1))) diff --git a/goal_src/jak1/engine/nav/navigate-h.gc b/goal_src/jak1/engine/nav/navigate-h.gc index d5a61d9c3f..ff445018cb 100644 --- a/goal_src/jak1/engine/nav/navigate-h.gc +++ b/goal_src/jak1/engine/nav/navigate-h.gc @@ -1,18 +1,14 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/actor-link-h.gc") (require "engine/draw/drawable-h.gc") (require "engine/game/main-h.gc") (require "engine/collide/collide-shape-h.gc") - -;; name: navigate-h.gc -;; name in dgo: navigate-h -;; dgos: GAME, ENGINE - (declare-type nav-mesh basic) + (declare-type nav-node structure) + (define-extern recursive-inside-poly (function nav-mesh nav-node vector float int)) (defenum nav-control-flags @@ -42,249 +38,206 @@ ;; DECOMP BEGINS (deftype nav-poly (structure) - ((id uint8) - (vertex uint8 3) - (adj-poly uint8 3) - (pat uint8) - ) - :pack-me - ) - - -(deftype nav-vertex (vector) - () - ) + ((id uint8) + (vertex uint8 3) + (adj-poly uint8 3) + (pat uint8)) + :pack-me) +(deftype nav-vertex (vector) ()) (deftype nav-sphere (structure) - ((trans sphere :inline) - ) - ) - + ((trans sphere :inline))) (deftype nav-ray (structure) - ((current-pos vector :inline) - (dir vector :inline) - (dest-pos vector :inline) - (current-poly nav-poly) - (next-poly nav-poly) - (len meters) - (last-edge int8) - (terminated symbol) - (reached-dest symbol) - (hit-boundary symbol) - (hit-gap symbol) - ) - ) - + ((current-pos vector :inline) + (dir vector :inline) + (dest-pos vector :inline) + (current-poly nav-poly) + (next-poly nav-poly) + (len meters) + (last-edge int8) + (terminated symbol) + (reached-dest symbol) + (hit-boundary symbol) + (hit-gap symbol))) (deftype nav-route-portal (structure) - ((next-poly nav-poly) - (vertex nav-vertex 2) - (edge-index int8) - ) - ) - + ((next-poly nav-poly) + (vertex nav-vertex 2) + (edge-index int8))) (deftype clip-travel-vector-to-mesh-return-info (structure) - ((found-boundary symbol) - (intersection vector :inline) - (boundary-normal vector :inline) - (prev-normal vector :inline) - (next-normal vector :inline) - (poly nav-poly) - (gap-poly nav-poly) - (edge int32) - (vert-prev vector :inline) - (vert-0 vector :inline) - (vert-1 vector :inline) - (vert-next vector :inline) - ) - ) - + ((found-boundary symbol) + (intersection vector :inline) + (boundary-normal vector :inline) + (prev-normal vector :inline) + (next-normal vector :inline) + (poly nav-poly) + (gap-poly nav-poly) + (edge int32) + (vert-prev vector :inline) + (vert-0 vector :inline) + (vert-1 vector :inline) + (vert-next vector :inline))) (deftype nav-node (structure) - ((center-x float) - (center-y float) - (center-z float) - (type uint16) - (parent-offset uint16) - (center vector :inline :overlay-at center-x) - (radius-x float) - (radius-y float) - (radius-z float) - (left-offset uint16) - (right-offset uint16) - (num-tris uint32 :overlay-at left-offset) - (radius vector :inline :overlay-at radius-x) - (scale-x float) - (first-tris uint8 4) - (scale-z float) - (last-tris uint8 4) - (scale vector :inline :overlay-at scale-x) - ) - ) - + ((center-x float) + (center-y float) + (center-z float) + (type uint16) + (parent-offset uint16) + (center vector :inline :overlay-at center-x) + (radius-x float) + (radius-y float) + (radius-z float) + (left-offset uint16) + (right-offset uint16) + (num-tris uint32 :overlay-at left-offset) + (radius vector :inline :overlay-at radius-x) + (scale-x float) + (first-tris uint8 4) + (scale-z float) + (last-tris uint8 4) + (scale vector :inline :overlay-at scale-x))) (deftype nav-lookup-elem (structure) - ((vec vector :inline) - (y-thresh float :overlay-at (-> vec w)) - (time uint32) - (node-offset uint32) - (lookup-type uint8) - (poly-ind uint8) - (dummy0 uint16) - (dummy uint32) - ) - ) - + ((vec vector :inline) + (y-thresh float :overlay-at (-> vec w)) + (time uint32) + (node-offset uint32) + (lookup-type uint8) + (poly-ind uint8) + (dummy0 uint16) + (dummy uint32))) (deftype nav-mesh (basic) - ((user-list engine) - (poly-lookup-history uint8 2) - (debug-time uint8) - (static-sphere-count uint8) - (static-sphere (inline-array nav-sphere)) - (bounds sphere :inline) - (origin vector :inline) - (cache nav-lookup-elem 4 :inline) - (node-count int32) - (nodes (inline-array nav-node)) - (vertex-count int32) - (vertex (inline-array nav-vertex)) - (poly-count int32) - (poly (inline-array nav-poly)) - (route (inline-array vector4ub)) - ) + ((user-list engine) + (poly-lookup-history uint8 2) + (debug-time uint8) + (static-sphere-count uint8) + (static-sphere (inline-array nav-sphere)) + (bounds sphere :inline) + (origin vector :inline) + (cache nav-lookup-elem 4 :inline) + (node-count int32) + (nodes (inline-array nav-node)) + (vertex-count int32) + (vertex (inline-array nav-vertex)) + (poly-count int32) + (poly (inline-array nav-poly)) + (route (inline-array vector4ub))) (:methods - (tri-centroid-world (_type_ nav-poly vector) vector) ;; finds the centroid of the given triangle, in the "world" coordinate system. - (tri-centroid-local (_type_ nav-poly vector) vector) ;; finds the centroid of the given triangle, in the local nav-mesh coordinate system. - (get-adj-poly (_type_ nav-poly nav-poly symbol) nav-poly) - (setup-portal (_type_ nav-poly nav-poly nav-route-portal) object) ;; sets up a portal between two polys. - (initialize-mesh! (_type_) none) - (move-along-nav-ray! (_type_ nav-ray) none) ;; think this updates the current position in a nav-ray, and updates which triangle you're in. - ;; this takes in a point/direction/distance, and see what would happen if you tried to move this way. - ;; it returns the distance you can go before one of these happens: - ;; - you reach the destination - ;; - you hit a nav mesh boundary/gap - ;; - you cross 15 triangles. - (try-move-along-ray (_type_ nav-poly vector vector float) meters) - (nav-mesh-method-16 (_type_ vector nav-poly vector symbol float clip-travel-vector-to-mesh-return-info) none) - (update-route-table (_type_) none) ;; (initialization related) - (nav-mesh-method-18 (_type_ int vector int (pointer int8) int) none) ;; something to do with routes. - (compute-bounding-box (_type_ vector vector) none) - (debug-draw-poly (_type_ nav-poly rgba) none) ;; TODO - is rgba a vector4w? - (point-in-poly? (_type_ nav-poly vector) symbol) ;; is the point inside of the triangle? - (find-opposite-vertices (_type_ nav-poly nav-poly) uint) ;; given two triangles that share an edge, get the indices of the two vertices that aren't part of the edge. - (nav-mesh-method-23 (_type_ nav-poly vector vector vector nav-route-portal) vector) - (closest-point-on-boundary (_type_ nav-poly vector vector) vector) ;; find the closest point on the perimeter of the triangle. - (project-point-into-tri-3d (_type_ nav-poly vector vector) none) ;; will move a 3D point in space to the surface of this nav-poly - ;; Looking from the top down, is the point inside the nav-poly? - ;; - if the point is inside the triangle, returns that point. - ;; - if the point is outside the triangle, move it to the closest point (will be on the edge) - (project-point-into-tri-2d (_type_ nav-poly vector vector) vector) - ;; finds which triangle the given point is in. - ;; also has some caching stuff so if you look up the same point multiple times, it won't redo the work. - ;; I _think_ this is only an approximate check that may return #f even if you are inside. - ;; But, if it returns a poly, it will be right. - (find-poly-fast (_type_ vector meters) nav-poly) - (find-poly (_type_ vector meters (pointer nav-control-flags)) nav-poly) ;; The accurate version of find-poly (tries find-poly-fast first) - ;; checks to see if the triangle is in the mesh or not. - ;; not sure why it's separate from 27 (and such a different implementation). there might be some details I'm missing here. - (is-in-mesh? (_type_ vector float meters) symbol) - ) - ) + (tri-centroid-world (_type_ nav-poly vector) vector) ;; finds the centroid of the given triangle, in the "world" coordinate system. + (tri-centroid-local (_type_ nav-poly vector) vector) ;; finds the centroid of the given triangle, in the local nav-mesh coordinate system. + (get-adj-poly (_type_ nav-poly nav-poly symbol) nav-poly) + (setup-portal (_type_ nav-poly nav-poly nav-route-portal) object) ;; sets up a portal between two polys. + (initialize-mesh! (_type_) none) + (move-along-nav-ray! (_type_ nav-ray) none) ;; think this updates the current position in a nav-ray, and updates which triangle you're in. + ;; this takes in a point/direction/distance, and see what would happen if you tried to move this way. + ;; it returns the distance you can go before one of these happens: + ;; - you reach the destination + ;; - you hit a nav mesh boundary/gap + ;; - you cross 15 triangles. + (try-move-along-ray (_type_ nav-poly vector vector float) meters) + (nav-mesh-method-16 (_type_ vector nav-poly vector symbol float clip-travel-vector-to-mesh-return-info) none) + (update-route-table (_type_) none) ;; (initialization related) + (nav-mesh-method-18 (_type_ int vector int (pointer int8) int) none) ;; something to do with routes. + (compute-bounding-box (_type_ vector vector) none) + (debug-draw-poly (_type_ nav-poly rgba) none) ;; TODO - is rgba a vector4w? + (point-in-poly? (_type_ nav-poly vector) symbol) ;; is the point inside of the triangle? + (find-opposite-vertices (_type_ nav-poly nav-poly) uint) ;; given two triangles that share an edge, get the indices of the two vertices that aren't part of the edge. + (nav-mesh-method-23 (_type_ nav-poly vector vector vector nav-route-portal) vector) + (closest-point-on-boundary (_type_ nav-poly vector vector) vector) ;; find the closest point on the perimeter of the triangle. + (project-point-into-tri-3d (_type_ nav-poly vector vector) none) ;; will move a 3D point in space to the surface of this nav-poly + ;; Looking from the top down, is the point inside the nav-poly? + ;; - if the point is inside the triangle, returns that point. + ;; - if the point is outside the triangle, move it to the closest point (will be on the edge) + (project-point-into-tri-2d (_type_ nav-poly vector vector) vector) + ;; finds which triangle the given point is in. + ;; also has some caching stuff so if you look up the same point multiple times, it won't redo the work. + ;; I _think_ this is only an approximate check that may return #f even if you are inside. + ;; But, if it returns a poly, it will be right. + (find-poly-fast (_type_ vector meters) nav-poly) + (find-poly (_type_ vector meters (pointer nav-control-flags)) nav-poly) ;; The accurate version of find-poly (tries find-poly-fast first) + ;; checks to see if the triangle is in the mesh or not. + ;; not sure why it's separate from 27 (and such a different implementation). there might be some details I'm missing here. + (is-in-mesh? (_type_ vector float meters) symbol))) (define-extern *default-nav-mesh* nav-mesh) (deftype check-vector-collision-with-nav-spheres-info (structure) - ((u float) - (intersect vector :inline) - (normal vector :inline) - ) - ) - + ((u float) + (intersect vector :inline) + (normal vector :inline))) (deftype nav-gap-info (structure) - ((dest vector :inline) - (poly nav-poly) - ) - ) - + ((dest vector :inline) + (poly nav-poly))) (deftype nav-control (basic) - ((flags nav-control-flags) - (process basic) - (shape collide-shape) - (mesh nav-mesh) - (gap-event basic) - (block-event basic) - (current-poly nav-poly) - (next-poly nav-poly) - (target-poly nav-poly) - (portal nav-route-portal 2) - (nearest-y-threshold meters) - (event-temp vector :inline) - (old-travel vector :inline) - (blocked-travel vector :inline) - (prev-pos vector :inline) - (extra-nav-sphere vector :inline) - (travel vector :inline) - (target-pos vector :inline) - (destination-pos vector :inline) - (block-time time-frame) - (block-count float) - (user-poly nav-poly) - (nav-cull-radius float) - (num-spheres int16) - (max-spheres int16) - (sphere sphere :inline :dynamic) - ) + ((flags nav-control-flags) + (process basic) + (shape collide-shape) + (mesh nav-mesh) + (gap-event basic) + (block-event basic) + (current-poly nav-poly) + (next-poly nav-poly) + (target-poly nav-poly) + (portal nav-route-portal 2) + (nearest-y-threshold meters) + (event-temp vector :inline) + (old-travel vector :inline) + (blocked-travel vector :inline) + (prev-pos vector :inline) + (extra-nav-sphere vector :inline) + (travel vector :inline) + (target-pos vector :inline) + (destination-pos vector :inline) + (block-time time-frame) + (block-count float) + (user-poly nav-poly) + (nav-cull-radius float) + (num-spheres int16) + (max-spheres int16) + (sphere sphere :inline :dynamic)) (:methods - (new (symbol type collide-shape int float) _type_) - (debug-draw (_type_) none) - (point-in-bounds? (_type_ vector) symbol) - (nav-control-method-11 (_type_ vector) vector) - (nav-control-method-12 (_type_ nav-gap-info) symbol) - (nav-control-method-13 (_type_ vector vector) vector) - (set-current-poly! (_type_ nav-poly) none) - (set-target-pos! (_type_ vector) none) - (nav-control-method-16 (_type_ vector) nav-poly) - (project-onto-nav-mesh (_type_ vector vector) vector) - (find-poly (_type_ vector) nav-poly) - (nav-control-method-19 (_type_ vector collide-shape-moving vector float) none) - (project-point-into-tri-3d (_type_ nav-poly vector vector) vector) - (nav-control-method-21 (_type_ vector) nav-poly) - (nav-control-method-22 (_type_ vector float) symbol) - (nav-control-method-23 (_type_ vector check-vector-collision-with-nav-spheres-info) float) - (nav-control-method-24 (_type_ float clip-travel-vector-to-mesh-return-info) none) - (is-in-mesh? (_type_ vector float) symbol) - (nav-control-method-26 (_type_) none) - (nav-control-method-27 (_type_) none) - (nav-control-method-28 (_type_ collide-kind) none) - (should-display? (_type_) symbol) - (nav-control-method-30 (_type_ vector vector vector) sphere) - (intersect-ray-line-segment? (_type_ vector vector vector vector) symbol) - (nav-control-method-32 (_type_ vector vector vector vector float) symbol) - (nav-control-method-33 (_type_ vector vector vector vector float) symbol) - (nav-control-method-34 () none) - (nav-control-method-35 (_type_ vector vector vector vector float) none) - ) - ) - + (new (symbol type collide-shape int float) _type_) + (debug-draw (_type_) none) + (point-in-bounds? (_type_ vector) symbol) + (nav-control-method-11 (_type_ vector) vector) + (nav-control-method-12 (_type_ nav-gap-info) symbol) + (nav-control-method-13 (_type_ vector vector) vector) + (set-current-poly! (_type_ nav-poly) none) + (set-target-pos! (_type_ vector) none) + (nav-control-method-16 (_type_ vector) nav-poly) + (project-onto-nav-mesh (_type_ vector vector) vector) + (find-poly (_type_ vector) nav-poly) + (nav-control-method-19 (_type_ vector collide-shape-moving vector float) none) + (project-point-into-tri-3d (_type_ nav-poly vector vector) vector) + (nav-control-method-21 (_type_ vector) nav-poly) + (nav-control-method-22 (_type_ vector float) symbol) + (nav-control-method-23 (_type_ vector check-vector-collision-with-nav-spheres-info) float) + (nav-control-method-24 (_type_ float clip-travel-vector-to-mesh-return-info) none) + (is-in-mesh? (_type_ vector float) symbol) + (nav-control-method-26 (_type_) none) + (nav-control-method-27 (_type_) none) + (nav-control-method-28 (_type_ collide-kind) none) + (should-display? (_type_) symbol) + (nav-control-method-30 (_type_ vector vector vector) sphere) + (intersect-ray-line-segment? (_type_ vector vector vector vector) symbol) + (nav-control-method-32 (_type_ vector vector vector vector float) symbol) + (nav-control-method-33 (_type_ vector vector vector vector float) symbol) + (nav-control-method-34 () none) + (nav-control-method-35 (_type_ vector vector vector vector float) none))) (defbehavior nav-mesh-connect process ((proc process) (trans trsqv) (nav-cont nav-control)) ;; try to find an entity with a nav-mesh, first from the given process (let ((ent (-> proc entity))) (when (zero? (-> ent nav-mesh)) ;; and if that doesn't have one already, lookup from the res-lump - (let ((lookup-entity (entity-actor-lookup ent 'nav-mesh-actor 0))) - (if lookup-entity - (set! ent lookup-entity) - ) - ) - ) - + (let ((lookup-entity (entity-actor-lookup ent 'nav-mesh-actor 0))) (if lookup-entity (set! ent lookup-entity)))) ;; now, look at the nav-mesh from the entity (let ((entity-nav-mesh (-> ent nav-mesh))) (cond @@ -292,25 +245,17 @@ ;; we have a nav mesh mesh already (when (zero? (-> entity-nav-mesh user-list)) ;; but, no engine, maybe because this is the first time we're doing this for the level. - ;; this seems like a bit of a hack. We'd like to allocate the engine on a level heap. ;; but I guess we can't assume that process-level-heap is set correctly here. ;; so we grab the entity-links from the current pp's entity, and look at that level. ;; I'm not sure why we do this on the current pp instead of the proc we were given... (set! process-level-heap (-> self entity extra level heap)) - ;; now construct the engine, looking up the size from the res-lump. (set! (-> entity-nav-mesh user-list) - (new 'process-level-heap 'engine 'nav-engine - (res-lump-value ent 'nav-max-users int :default (the-as uint128 32)) - ) - ) - + (new 'process-level-heap 'engine 'nav-engine (res-lump-value ent 'nav-max-users int :default (the-as uint128 32)))) ;; do some setup (initialize-mesh! entity-nav-mesh) - (update-route-table entity-nav-mesh) - ) - + (update-route-table entity-nav-mesh)) ;; in all cases, do the connection ;; connect the nav-mesh engine: (add-connection (-> entity-nav-mesh user-list) @@ -319,43 +264,25 @@ ;; and some weird parameters. proc nav-cont - trans - ) - ) + trans)) (else ;; we couldn't find a nav-mesh. Set a bit. - (if (and nav-cont (-> proc entity)) - (logior! (-> proc entity extra perm status) (entity-perm-status bit-1)) - ) + (if (and nav-cont (-> proc entity)) (logior! (-> proc entity extra perm status) (entity-perm-status bit-1))) ;; no nav-mesh, so give us a default-nav-mesh. - (set! entity-nav-mesh *default-nav-mesh*) - ) - ) - entity-nav-mesh - ) - ) - ) + (set! entity-nav-mesh *default-nav-mesh*))) + entity-nav-mesh))) -(defmethod new nav-control ((allocation symbol) - (type-to-make type) - (shape collide-shape) - (sphere-count int) - (nearest-y-threshold-default float) - ) +(defmethod new nav-control ((allocation symbol) (type-to-make type) (shape collide-shape) (sphere-count int) (nearest-y-threshold-default float)) (let ((this (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* sphere-count 16)))))) (when (zero? this) (go process-drawable-art-error "memory") (set! this (the-as nav-control 0)) - (goto cfg-4) - ) + (goto cfg-4)) (set! (-> this max-spheres) sphere-count) (set! (-> this flags) (nav-control-flags navcf8 navcf13)) (set! (-> this mesh) (nav-mesh-connect (-> shape process) shape this)) (let ((ent (-> shape process entity))) - (set! (-> this nearest-y-threshold) - (res-lump-float ent 'nearest-y-threshold :default nearest-y-threshold-default) - ) - ) + (set! (-> this nearest-y-threshold) (res-lump-float ent 'nearest-y-threshold :default nearest-y-threshold-default))) (set! (-> this shape) shape) (set! (-> this process) (-> shape process)) (set! (-> this gap-event) #f) @@ -367,29 +294,22 @@ (set! (-> this portal 1) #f) (set! (-> this nav-cull-radius) 40960.0) (label cfg-4) - (the-as nav-control this) - ) - ) + (the-as nav-control this))) (defmethod should-display? ((this nav-control)) - (and *display-nav-marks* (logtest? (-> this flags) (nav-control-flags display-marks))) - ) + (and *display-nav-marks* (logtest? (-> this flags) (nav-control-flags display-marks)))) (defmethod point-in-bounds? ((this nav-control) (arg0 vector)) "Is the point in bounds?" (let ((v1-1 (-> this mesh bounds))) ;; w is the sphere radius - (>= (-> v1-1 w) (vector-vector-distance arg0 v1-1)) - ) - ) + (>= (-> v1-1 w) (vector-vector-distance arg0 v1-1)))) (defmethod set-target-pos! ((this nav-control) (arg0 vector)) (set! (-> this target-pos quad) (-> arg0 quad)) - (none) - ) + (none)) (defun has-nav-mesh? ((arg0 entity-actor)) "Does the actor have a nav mesh? Either loaded an in the nav-mesh field, or in the res-lump." - (the-as symbol (or (-> arg0 nav-mesh) (res-lump-struct arg0 'nav-mesh-actor structure))) - ) + (the-as symbol (or (-> arg0 nav-mesh) (res-lump-struct arg0 'nav-mesh-actor structure)))) diff --git a/goal_src/jak1/engine/nav/navigate.gc b/goal_src/jak1/engine/nav/navigate.gc index 84fac49be6..872348c4d1 100644 --- a/goal_src/jak1/engine/nav/navigate.gc +++ b/goal_src/jak1/engine/nav/navigate.gc @@ -1,22 +1,16 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/collide-func.gc") (require "engine/nav/navigate-h.gc") (require "engine/math/transformq.gc") (require "engine/debug/debug.gc") -;; name: navigate.gc -;; name in dgo: navigate -;; dgos: GAME, ENGINE - ;; og:preserve-this added this to avoid a bug where enemies with NaN positions end up inside the nav mesh. ;; it's not clear yet why the enemies have NaN positions, but nothing else seems to go wrong if we ;; ignore them here. It's possible this happens as enemies are spawned/despawned by the visibility system. (defmacro is-nan? (flt) - `(and (< 0.0 ,flt) (< ,flt 0.0)) - ) + `(and (< 0.0 ,flt) (< ,flt 0.0))) ;; DECOMP BEGINS @@ -45,13 +39,11 @@ (set! *debug-traverse* 0) (set! *debug-tests* 0) 0 - (none) - ) + (none)) (defun debug-report-nav-stats () 0 - (none) - ) + (none)) (define *debug-output* #f) @@ -109,120 +101,103 @@ (defun entity-nav-login ((arg0 entity-actor)) (local-vars (sv-16 res-tag)) - (let ((gp-0 (if (nonzero? (-> arg0 nav-mesh)) - (-> arg0 nav-mesh) - ) - ) - ) + (let ((gp-0 (if (nonzero? (-> arg0 nav-mesh)) (-> arg0 nav-mesh)))) (when gp-0 (when (zero? (-> gp-0 user-list)) (set! (-> gp-0 user-list) - (new 'loading-level 'engine 'nav-engine (res-lump-value arg0 'nav-max-users int :default (the-as uint128 32))) - ) + (new 'loading-level 'engine 'nav-engine (res-lump-value arg0 'nav-max-users int :default (the-as uint128 32)))) (initialize-mesh! gp-0) - (update-route-table gp-0) - ) + (update-route-table gp-0)) (when (zero? (-> gp-0 static-sphere)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-11 (res-lump-data arg0 'nav-mesh-sphere pointer :tag-ptr (& sv-16)))) (when v1-11 (set! (-> gp-0 static-sphere-count) (-> sv-16 elt-count)) - (set! (-> gp-0 static-sphere) (the-as (inline-array nav-sphere) v1-11)) - ) - ) - ) - ) - ) + (set! (-> gp-0 static-sphere) (the-as (inline-array nav-sphere) v1-11))))))) 0 - (none) - ) + (none)) (defmethod length ((this nav-control)) - (-> this num-spheres) - ) + (-> this num-spheres)) (defmethod asize-of ((this nav-control)) - (the-as int (+ (-> nav-control size) (* (-> this max-spheres) 16))) - ) - -(define *default-nav-mesh* (new 'static 'nav-mesh - :bounds (new 'static 'sphere :x 12288.0 :y -200704.0 :z 12288.0 :w 20480.0) - :origin (new 'static 'vector :y -200704.0 :w 1.0) - :vertex-count 4 - :vertex (new 'static 'inline-array nav-vertex 4 - (new 'static 'nav-vertex :z 16384.0 :w 1.0) - (new 'static 'nav-vertex :z 8192.0 :w 1.0) - (new 'static 'nav-vertex :x 8192.0 :z 8192.0 :w 1.0) - (new 'static 'nav-vertex :x 8192.0 :w 1.0) - ) - :poly-count 2 - :poly (new 'static 'inline-array nav-poly 2 - (new 'static 'nav-poly - :vertex (new 'static 'array uint8 3 #x0 #x2 #x1) - :adj-poly (new 'static 'array uint8 3 #xff #x1 #xff) - ) - (new 'static 'nav-poly - :id #x1 - :vertex (new 'static 'array uint8 3 #x1 #x2 #x3) - :adj-poly (new 'static 'array uint8 3 #x0 #xff #xff) - ) - ) - :route (new 'static 'inline-array vector4ub 4 - (new 'static 'vector4ub :data (new 'static 'array uint8 4 #xcb #x0 #x0 #x0)) - (new 'static 'vector4ub) - (new 'static 'vector4ub) - (new 'static 'vector4ub) - ) - ) - ) + (the-as int (+ (-> nav-control size) (* (-> this max-spheres) 16)))) + +(define *default-nav-mesh* + (new 'static + 'nav-mesh + :bounds + (new 'static 'sphere :x 12288.0 :y -200704.0 :z 12288.0 :w 20480.0) + :origin + (new 'static 'vector :y -200704.0 :w 1.0) + :vertex-count 4 + :vertex + (new 'static + 'inline-array + nav-vertex + 4 + (new 'static 'nav-vertex :z 16384.0 :w 1.0) + (new 'static 'nav-vertex :z 8192.0 :w 1.0) + (new 'static 'nav-vertex :x 8192.0 :z 8192.0 :w 1.0) + (new 'static 'nav-vertex :x 8192.0 :w 1.0)) + :poly-count 2 + :poly + (new 'static + 'inline-array + nav-poly + 2 + (new 'static 'nav-poly :vertex (new 'static 'array uint8 3 #x0 #x2 #x1) :adj-poly (new 'static 'array uint8 3 #xff #x1 #xff)) + (new 'static + 'nav-poly + :id #x1 + :vertex + (new 'static 'array uint8 3 #x1 #x2 #x3) + :adj-poly + (new 'static 'array uint8 3 #x0 #xff #xff))) + :route + (new 'static + 'inline-array + vector4ub + 4 + (new 'static 'vector4ub :data (new 'static 'array uint8 4 #xcb #x0 #x0 #x0)) + (new 'static 'vector4ub) + (new 'static 'vector4ub) + (new 'static 'vector4ub)))) (let ((gp-0 *default-nav-mesh*)) - (if (zero? (-> gp-0 user-list)) - (set! (-> gp-0 user-list) (new 'global 'engine 'nav-engine 32)) - ) - ) + (if (zero? (-> gp-0 user-list)) (set! (-> gp-0 user-list) (new 'global 'engine 'nav-engine 32)))) (defmethod length ((this nav-mesh)) - (-> this poly-count) - ) + (-> this poly-count)) (defmethod debug-draw-poly ((this nav-mesh) (arg0 nav-poly) (arg1 rgba)) (let ((s5-0 (-> this origin)) (s2-0 (-> this vertex)) (gp-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - (vector+! gp-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 0)))) - (vector+! s4-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 1)))) - arg1 - #f - (the-as rgba -1) - ) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - (vector+! gp-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 1)))) - (vector+! s4-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 2)))) - arg1 - #f - (the-as rgba -1) - ) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - (vector+! gp-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 2)))) - (vector+! s4-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 0)))) - arg1 - #f - (the-as rgba -1) - ) - ) + (s4-0 (new 'stack-no-clear 'vector))) + (add-debug-line #t + (bucket-id debug-no-zbuf) + (vector+! gp-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 0)))) + (vector+! s4-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 1)))) + arg1 + #f + (the-as rgba -1)) + (add-debug-line #t + (bucket-id debug-no-zbuf) + (vector+! gp-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 1)))) + (vector+! s4-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 2)))) + arg1 + #f + (the-as rgba -1)) + (add-debug-line #t + (bucket-id debug-no-zbuf) + (vector+! gp-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 2)))) + (vector+! s4-0 s5-0 (the-as vector (-> s2-0 (-> arg0 vertex 0)))) + arg1 + #f + (the-as rgba -1))) 0 - (none) - ) + (none)) (define *nav-one-third* (new 'global 'vector)) @@ -232,13 +207,11 @@ (set! (-> arg1 quad) (-> this vertex (-> arg0 vertex 0) quad)) (vector+! arg1 arg1 (the-as vector (-> this vertex (-> arg0 vertex 1)))) (vector+! arg1 arg1 (the-as vector (-> this vertex (-> arg0 vertex 2)))) - (vector-float*! arg1 arg1 0.333333) - ) + (vector-float*! arg1 arg1 0.333333)) (defmethod tri-centroid-world ((this nav-mesh) (arg0 nav-poly) (arg1 vector)) (tri-centroid-local this arg0 arg1) - (vector+! arg1 arg1 (-> this origin)) - ) + (vector+! arg1 arg1 (-> this origin))) (define *edge-vert0-table* (new 'static 'boxed-array :type int8 1 2 0)) @@ -248,25 +221,16 @@ (defun inc-mod3 ((arg0 int)) (local-vars (v0-1 int) (v1-1 int)) - (let ((v0-0 (+ arg0 1))) - (let ((v1-0 2)) - (set-on-less-than v1-1 v1-0 v0-0) - ) - (move-if-not-zero v0-1 0 v1-1 v0-0) - ) - v0-1 - ) + (let ((v0-0 (+ arg0 1))) (let ((v1-0 2)) (set-on-less-than v1-1 v1-0 v0-0)) (move-if-not-zero v0-1 0 v1-1 v0-0)) + v0-1) (defun dec-mod3 ((arg0 int)) (local-vars (v0-1 int) (a0-1 int)) (let ((v0-0 (+ arg0 -1)) - (v1-0 2) - ) + (v1-0 2)) (set-on-less-than a0-1 v0-0 0) - (move-if-not-zero v0-1 v1-0 a0-1 v0-0) - ) - v0-1 - ) + (move-if-not-zero v0-1 v1-0 a0-1 v0-0)) + v0-1) (defun vu-point-triangle-intersection? ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (local-vars (v1-0 int) (v1-1 int) (v1-3 int) (a0-1 int) (a0-2 int) (a0-4 int) (a1-1 int) (a1-2 int)) @@ -283,8 +247,7 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (.lvf vf1 (&-> arg1 quad)) (.lvf vf2 (&-> arg2 quad)) (.sub.vf vf1 vf1 vf1 :mask #b1010) @@ -311,53 +274,34 @@ (set-on-less-than a1-2 a1-1 0) (set-on-less-than a0-2 a0-1 0) (let ((a0-3 (logxor a1-2 a0-2)) - (v1-2 (logxor v1-1 a1-2)) - ) + (v1-2 (logxor v1-1 a1-2))) (set-on-less-than a0-4 a0-3 1) - (set-on-less-than v1-3 v1-2 1) - ) - (logtest? v1-3 a0-4) - ) - ) + (set-on-less-than v1-3 v1-2 1)) + (logtest? v1-3 a0-4))) (defmethod point-in-poly? ((this nav-mesh) (arg0 nav-poly) (arg1 vector)) - (vu-point-triangle-intersection? - arg1 - (-> this vertex (-> arg0 vertex 0)) - (-> this vertex (-> arg0 vertex 1)) - (-> this vertex (-> arg0 vertex 2)) - ) - ) + (vu-point-triangle-intersection? arg1 + (-> this vertex (-> arg0 vertex 0)) + (-> this vertex (-> arg0 vertex 1)) + (-> this vertex (-> arg0 vertex 2)))) (defmethod closest-point-on-boundary ((this nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) (let ((s2-0 (-> this vertex)) (s1-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (let ((f30-0 10000000000000000000000000000000000000.0)) (dotimes (s0-0 3) (let* ((a1-1 (-> s2-0 (-> arg0 vertex s0-0))) - (f0-0 (vector-segment-distance-point! arg2 a1-1 (-> s2-0 (-> arg0 vertex (mod (+ s0-0 1) 3))) s1-0)) - ) + (f0-0 (vector-segment-distance-point! arg2 a1-1 (-> s2-0 (-> arg0 vertex (mod (+ s0-0 1) 3))) s1-0))) (when (< f0-0 f30-0) (set! f30-0 f0-0) - (set! (-> s5-0 quad) (-> s1-0 quad)) - ) - ) - ) - ) - (set! (-> arg1 quad) (-> s5-0 quad)) - ) - arg1 - ) + (set! (-> s5-0 quad) (-> s1-0 quad)))))) + (set! (-> arg1 quad) (-> s5-0 quad))) + arg1) (defmethod project-point-into-tri-2d ((this nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) - (if (point-in-poly? this arg0 arg2) - (set! (-> arg1 quad) (-> arg2 quad)) - (closest-point-on-boundary this arg0 arg1 arg2) - ) - arg1 - ) + (if (point-in-poly? this arg0 arg2) (set! (-> arg1 quad) (-> arg2 quad)) (closest-point-on-boundary this arg0 arg1 arg2)) + arg1) (defun point-inside-rect? ((arg0 nav-node) (arg1 vector) (arg2 float)) (and (>= (-> arg1 x) (- (-> arg0 center-x) (-> arg0 radius-x))) @@ -365,9 +309,7 @@ (>= (-> arg1 z) (- (-> arg0 center-z) (-> arg0 radius-z))) (>= (+ (-> arg0 center-z) (-> arg0 radius-z)) (-> arg1 z)) (>= (+ (-> arg1 y) arg2) (- (-> arg0 center-y) (-> arg0 radius-y))) - (>= (+ (-> arg0 center-y) (-> arg0 radius-y)) (- (-> arg1 y) arg2)) - ) - ) + (>= (+ (-> arg0 center-y) (-> arg0 radius-y)) (- (-> arg1 y) arg2)))) (defun point-inside-poly? ((arg0 nav-mesh) (arg1 uint) (arg2 vector) (arg3 float)) (local-vars (v1-6 int) (v1-7 int) (v1-9 int) (a0-3 int) (a0-4 int) (a0-6 int) (a1-6 int) (a1-7 int)) @@ -384,14 +326,12 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf9 :class vf) - ) + (vf9 :class vf)) (let ((t0-0 (-> arg0 poly arg1))) (when (not (logtest? (-> t0-0 pat) 1)) (let ((v1-5 (-> arg0 vertex (-> t0-0 vertex 0))) (a1-5 (-> arg0 vertex (-> t0-0 vertex 1))) - (a0-2 (-> arg0 vertex (-> t0-0 vertex 2))) - ) + (a0-2 (-> arg0 vertex (-> t0-0 vertex 2)))) 0.0 (let ((f0-3 (fabs (- (-> arg2 y) (* 0.333333 (+ (-> v1-5 y) (-> a1-5 y) (-> a0-2 y))))))) (when (>= arg3 f0-3) @@ -421,114 +361,63 @@ (set-on-less-than a1-7 a1-6 0) (set-on-less-than a0-4 a0-3 0) (let ((a0-5 (logxor a1-7 a0-4)) - (v1-8 (logxor v1-7 a1-7)) - ) + (v1-8 (logxor v1-7 a1-7))) (set-on-less-than a0-6 a0-5 1) - (set-on-less-than v1-9 v1-8 1) - ) - (if (logtest? v1-9 a0-6) - (return #t) - ) - ) - ) - ) - ) - ) - #f - ) - ) + (set-on-less-than v1-9 v1-8 1)) + (if (logtest? v1-9 a0-6) (return #t))))))) + #f)) (defun recursive-inside-poly ((arg0 nav-mesh) (arg1 nav-node) (arg2 vector) (arg3 float)) (when (point-inside-rect? arg1 arg2 arg3) (cond ((zero? (-> arg1 type)) (let ((v1-2 (-> arg1 left-offset)) - (s3-0 (-> arg1 right-offset)) - ) + (s3-0 (-> arg1 right-offset))) (when (>= v1-2 0) (let* ((a1-2 (the-as nav-node (&+ (the-as (pointer nav-node) (-> arg0 nodes)) v1-2))) - (v1-3 (recursive-inside-poly arg0 a1-2 arg2 arg3)) - ) - (if (>= v1-3 0) - (return v1-3) - ) - ) - ) + (v1-3 (recursive-inside-poly arg0 a1-2 arg2 arg3))) + (if (>= v1-3 0) (return v1-3)))) (when (>= s3-0 0) (let* ((a1-3 (&+ (the-as (pointer nav-node) (-> arg0 nodes)) s3-0)) - (v1-7 (recursive-inside-poly arg0 (the-as nav-node a1-3) arg2 arg3)) - ) - (if (>= v1-7 0) - (return v1-7) - ) - ) - ) - ) - (return -1) - ) + (v1-7 (recursive-inside-poly arg0 (the-as nav-node a1-3) arg2 arg3))) + (if (>= v1-7 0) (return v1-7))))) + (return -1)) (else - (let ((s3-1 (-> arg1 num-tris)) - (s2-1 (-> arg1 first-tris)) - ) - (dotimes (s1-0 (the-as int s3-1)) - (let ((s0-0 (-> s2-1 0))) - (if (point-inside-poly? arg0 s0-0 arg2 arg3) - (return (the-as int s0-0)) - ) - ) - (set! s2-1 (&-> s2-1 1)) - (if (= s1-0 3) - (set! s2-1 (&-> s2-1 4)) - ) - ) - ) - (return -1) - ) - ) - (the-as none 0) - ) - -1 - ) + (let ((s3-1 (-> arg1 num-tris)) + (s2-1 (-> arg1 first-tris))) + (dotimes (s1-0 (the-as int s3-1)) + (let ((s0-0 (-> s2-1 0))) (if (point-inside-poly? arg0 s0-0 arg2 arg3) (return (the-as int s0-0)))) + (set! s2-1 (&-> s2-1 1)) + (if (= s1-0 3) (set! s2-1 (&-> s2-1 4))))) + (return -1))) + (the-as none 0)) + -1) (defmethod find-poly-fast ((this nav-mesh) (arg0 vector) (arg1 meters)) (local-vars (a0-6 symbol) (a2-3 uint128) (a2-4 uint128)) -1 (let ((s2-0 -1) (s3-0 (current-time)) - (f0-0 (-> this bounds w)) - ) + (f0-0 (-> this bounds w))) (when (>= (* f0-0 f0-0) (vector-length-squared arg0)) (dotimes (v1-3 4) - (set! a0-6 (and (= (-> this cache v1-3 time) s3-0) - (= (-> this cache v1-3 vec w) arg1) - (begin - (let ((a3-0 (-> this cache v1-3)) - (a2-1 arg0) - ) - (set! a0-6 #t) - (let* ((a1-3 #xffff) - (a3-1 (-> a3-0 vec quad)) - (a1-4 (shl a1-3 48)) - ) - (let ((a2-2 (-> a2-1 quad))) - (.pceqw a2-3 a3-1 a2-2) - ) - (.ppach a2-4 (the-as uint128 0) a2-3) - (b! (= (logior (the-as int a2-4) a1-4) -1) cfg-10 :delay (nop!)) - ) - ) - #f - ) - ) - ) + (set! a0-6 + (and (= (-> this cache v1-3 time) s3-0) + (= (-> this cache v1-3 vec w) arg1) + (begin + (let ((a3-0 (-> this cache v1-3)) + (a2-1 arg0)) + (set! a0-6 #t) + (let* ((a1-3 #xffff) + (a3-1 (-> a3-0 vec quad)) + (a1-4 (shl a1-3 48))) + (let ((a2-2 (-> a2-1 quad))) (.pceqw a2-3 a3-1 a2-2)) + (.ppach a2-4 (the-as uint128 0) a2-3) + (b! (= (logior (the-as int a2-4) a1-4) -1) cfg-10 :delay (nop!)))) + #f))) (label cfg-10) - (if a0-6 - (return (-> this poly (-> this cache v1-3 poly-ind))) - ) - (if (and (< s2-0 0) (!= (-> this cache v1-3 time) s3-0)) - (set! s2-0 v1-3) - ) - ) + (if a0-6 (return (-> this poly (-> this cache v1-3 poly-ind)))) + (if (and (< s2-0 0) (!= (-> this cache v1-3 time) s3-0)) (set! s2-0 v1-3))) (let ((v1-12 (recursive-inside-poly this (-> this nodes 0) arg0 arg1))) (when (>= v1-12 0) (when (>= s2-0 0) @@ -538,16 +427,9 @@ (set! (-> a0-24 vec z) (-> arg0 z)) (set! (-> a0-24 vec w) arg1) (set! (-> a0-24 time) (the-as uint s3-0)) - (set! (-> a0-24 poly-ind) (the-as uint v1-12)) - ) - ) - (return (-> this poly v1-12)) - ) - ) - ) - ) - (the-as nav-poly #f) - ) + (set! (-> a0-24 poly-ind) (the-as uint v1-12)))) + (return (-> this poly v1-12)))))) + (the-as nav-poly #f)) (defun circle-triangle-intersection-proc? ((arg0 vector) (arg1 float) (arg2 (inline-array nav-vertex))) (let ((v1-0 0)) @@ -565,93 +447,45 @@ (f4-7 (/ 1.0 f4-5)) (f0-2 (* f0-1 f4-7)) (f1-3 (* f1-2 f4-7)) - (f0-4 (+ (* f2-2 f0-2) (* f3-2 f1-3))) - ) + (f0-4 (+ (* f2-2 f0-2) (* f3-2 f1-3)))) (cond - ((< arg1 f0-4) - (return #f) - ) - ((< f0-4 0.0) - (+! v1-0 (-> *edge-mask-table* a3-0)) - ) - ) - ) - ) - (if (= v1-0 7) - (return #t) - ) + ((< arg1 f0-4) (return #f)) + ((< f0-4 0.0) (+! v1-0 (-> *edge-mask-table* a3-0)))))) + (if (= v1-0 7) (return #t)) (let ((t0-15 #f) - (a3-5 0) - ) + (a3-5 0)) (cond - ((= v1-0 1) - (set! t0-15 #t) - (set! a3-5 0) - ) - ((= v1-0 2) - (set! t0-15 #t) - (set! a3-5 1) - ) - ((= v1-0 4) - (set! t0-15 #t) - (set! a3-5 2) - ) - ((= v1-0 6) - (set! a3-5 0) - ) - ((= v1-0 5) - (set! a3-5 1) - ) - ((= v1-0 3) - (set! a3-5 2) - ) - ) + ((= v1-0 1) (set! t0-15 #t) (set! a3-5 0)) + ((= v1-0 2) (set! t0-15 #t) (set! a3-5 1)) + ((= v1-0 4) (set! t0-15 #t) (set! a3-5 2)) + ((= v1-0 6) (set! a3-5 0)) + ((= v1-0 5) (set! a3-5 1)) + ((= v1-0 3) (set! a3-5 2))) (when (not t0-15) (let* ((t0-16 (-> arg2 (-> *edge-vert0-table* a3-5))) (v1-18 (the-as vector (-> arg2 (-> *edge-vert1-table* a3-5)))) (f1-8 (- (-> v1-18 x) (-> t0-16 x))) (f0-7 (- (-> v1-18 z) (-> t0-16 z))) (f2-7 (+ (* f1-8 (- (-> arg0 x) (-> t0-16 x))) (* f0-7 (- (-> arg0 z) (-> t0-16 z))))) - (f0-9 (+ (* f1-8 (- (-> arg0 x) (-> v1-18 x))) (* f0-7 (- (-> arg0 z) (-> v1-18 z))))) - ) + (f0-9 (+ (* f1-8 (- (-> arg0 x) (-> v1-18 x))) (* f0-7 (- (-> arg0 z) (-> v1-18 z)))))) (cond - ((< f2-7 0.0) - (set! t0-15 #t) - (set! a3-5 (-> *edge-vert0-table* a3-5)) - ) - ((< 0.0 f0-9) - (set! t0-15 #t) - (set! a3-5 (-> *edge-vert1-table* a3-5)) - ) - (else - (return #t) - ) - ) - ) - ) + ((< f2-7 0.0) (set! t0-15 #t) (set! a3-5 (-> *edge-vert0-table* a3-5))) + ((< 0.0 f0-9) (set! t0-15 #t) (set! a3-5 (-> *edge-vert1-table* a3-5))) + (else (return #t))))) (when t0-15 (let* ((v1-28 (-> arg2 a3-5)) (f0-11 (- (-> v1-28 x) (-> arg0 x))) (f0-13 (* f0-11 f0-11)) (f1-14 (- (-> v1-28 z) (-> arg0 z))) (f0-14 (+ f0-13 (* f1-14 f1-14))) - (f1-17 arg1) - ) - (if (>= (* f1-17 f1-17) f0-14) - #t - ) - ) - ) - ) - ) - ) + (f1-17 arg1)) + (if (>= (* f1-17 f1-17) f0-14) #t)))))) (defun circle-triangle-intersection? ((arg0 vector) (arg1 float) (arg2 (inline-array nav-vertex))) (let ((v1-0 arg0) (f0-0 arg1) (a0-1 arg2) - (a1-1 0) - ) + (a1-1 0)) (dotimes (a2-1 3) (let* ((a3-4 (-> a0-1 (-> *edge-vert0-table* a2-1))) (t0-4 (-> a0-1 (-> *edge-vert1-table* a2-1))) @@ -666,85 +500,38 @@ (f5-7 (/ 1.0 f5-5)) (f1-2 (* f1-1 f5-7)) (f2-3 (* f2-2 f5-7)) - (f1-4 (+ (* f3-2 f1-2) (* f4-2 f2-3))) - ) + (f1-4 (+ (* f3-2 f1-2) (* f4-2 f2-3)))) (cond - ((< f0-0 f1-4) - (return #f) - ) - ((< f1-4 0.0) - (+! a1-1 (-> *edge-mask-table* a2-1)) - ) - ) - ) - ) - (if (= a1-1 7) - (return #t) - ) + ((< f0-0 f1-4) (return #f)) + ((< f1-4 0.0) (+! a1-1 (-> *edge-mask-table* a2-1)))))) + (if (= a1-1 7) (return #t)) (let ((a3-15 #f) - (a2-6 0) - ) + (a2-6 0)) (cond - ((= a1-1 1) - (set! a3-15 #t) - (set! a2-6 0) - ) - ((= a1-1 2) - (set! a3-15 #t) - (set! a2-6 1) - ) - ((= a1-1 4) - (set! a3-15 #t) - (set! a2-6 2) - ) - ((= a1-1 6) - (set! a2-6 0) - ) - ((= a1-1 5) - (set! a2-6 1) - ) - ((= a1-1 3) - (set! a2-6 2) - ) - ) + ((= a1-1 1) (set! a3-15 #t) (set! a2-6 0)) + ((= a1-1 2) (set! a3-15 #t) (set! a2-6 1)) + ((= a1-1 4) (set! a3-15 #t) (set! a2-6 2)) + ((= a1-1 6) (set! a2-6 0)) + ((= a1-1 5) (set! a2-6 1)) + ((= a1-1 3) (set! a2-6 2))) (when (not a3-15) (let* ((a3-16 (-> a0-1 (-> *edge-vert0-table* a2-6))) (a1-18 (-> a0-1 (-> *edge-vert1-table* a2-6))) (f2-7 (- (-> a1-18 x) (-> a3-16 x))) (f1-7 (- (-> a1-18 z) (-> a3-16 z))) (f3-7 (+ (* f2-7 (- (-> v1-0 x) (-> a3-16 x))) (* f1-7 (- (-> v1-0 z) (-> a3-16 z))))) - (f1-9 (+ (* f2-7 (- (-> v1-0 x) (-> a1-18 x))) (* f1-7 (- (-> v1-0 z) (-> a1-18 z))))) - ) + (f1-9 (+ (* f2-7 (- (-> v1-0 x) (-> a1-18 x))) (* f1-7 (- (-> v1-0 z) (-> a1-18 z)))))) (cond - ((< f3-7 0.0) - (set! a3-15 #t) - (set! a2-6 (-> *edge-vert0-table* a2-6)) - ) - ((< 0.0 f1-9) - (set! a3-15 #t) - (set! a2-6 (-> *edge-vert1-table* a2-6)) - ) - (else - (return #t) - ) - ) - ) - ) + ((< f3-7 0.0) (set! a3-15 #t) (set! a2-6 (-> *edge-vert0-table* a2-6))) + ((< 0.0 f1-9) (set! a3-15 #t) (set! a2-6 (-> *edge-vert1-table* a2-6))) + (else (return #t))))) (when a3-15 (let* ((a0-2 (-> a0-1 a2-6)) (f1-11 (- (-> a0-2 x) (-> v1-0 x))) (f1-13 (* f1-11 f1-11)) (f2-13 (- (-> a0-2 z) (-> v1-0 z))) - (f1-14 (+ f1-13 (* f2-13 f2-13))) - ) - (if (>= (* f0-0 f0-0) f1-14) - #t - ) - ) - ) - ) - ) - ) + (f1-14 (+ f1-13 (* f2-13 f2-13)))) + (if (>= (* f0-0 f0-0) f1-14) #t)))))) ;; ERROR: Failed load: (set! vf3 (l.vf a0-4)) at op 42 (defmethod is-in-mesh? ((this nav-mesh) (arg0 vector) (arg1 float) (arg2 meters)) @@ -755,13 +542,11 @@ (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) - (vf7 :class vf) - ) + (vf7 :class vf)) (let ((f0-1 (+ arg1 (-> this bounds w)))) (when (>= (* f0-1 f0-1) (vector-length-squared arg0)) (let ((s2-0 (new 'stack-no-clear 'inline-array 'nav-vertex 6)) - (f30-1 0.33333334) - ) + (f30-1 0.33333334)) (countdown (s1-0 (-> this poly-count)) (set! *debug-traverse* (+ *debug-traverse* 1)) (let ((a0-3 (-> this poly s1-0))) @@ -778,17 +563,11 @@ (a0-4 (+ a2-2 (the-as int v1-8))) (a2-3 (* a3-1 16)) (a1-3 (+ a1-2 (the-as int v1-8))) - (v1-9 (+ a2-3 (the-as int v1-8))) - ) + (v1-9 (+ a2-3 (the-as int v1-8)))) (.lvf vf3 a0-4) - (let ((a0-5 f30-1)) - (.mov vf7 a0-5) - ) + (let ((a0-5 f30-1)) (.mov vf7 a0-5)) (.lvf vf4 a1-3) - (.lvf vf5 v1-9) - ) - ) - ) + (.lvf vf5 v1-9)))) (.min.vf vf1 vf3 vf4 :mask #b111) (.lvf vf6 (&-> arg0 quad)) (.add.y.vf vf7 vf3 vf4 :mask #b10) @@ -808,94 +587,48 @@ (>= (+ (-> arg0 x) arg1) (-> s2-0 3 x)) (>= (-> s2-0 4 x) (- (-> arg0 x) arg1)) (>= (+ (-> arg0 z) arg1) (-> s2-0 3 z)) - (>= (-> s2-0 4 z) (- (-> arg0 z) arg1)) - ) + (>= (-> s2-0 4 z) (- (-> arg0 z) arg1))) (set! *debug-tests* (+ *debug-tests* 1)) - (if (circle-triangle-intersection? arg0 arg1 s2-0) - (return #t) - ) - ) - ) - ) - ) - ) - ) - ) - ) - #f - ) - ) + (if (circle-triangle-intersection? arg0 arg1 s2-0) (return #t)))))))))) + #f)) (defmethod move-along-nav-ray! ((this nav-mesh) (arg0 nav-ray)) (local-vars (a2-7 int) (a3-3 int)) (let ((v1-0 -1) (f0-1 (- (-> arg0 dest-pos x) (-> arg0 current-pos x))) - (f1-2 (- (-> arg0 dest-pos z) (-> arg0 current-pos z))) - ) + (f1-2 (- (-> arg0 dest-pos z) (-> arg0 current-pos z)))) (dotimes (a2-0 3) (let* ((a3-1 (-> this vertex (-> arg0 current-poly vertex (-> *edge-vert0-table* a2-0)))) (t0-7 (-> this vertex (-> arg0 current-poly vertex (-> *edge-vert1-table* a2-0)))) (f4-0 (- (-> a3-1 z) (-> t0-7 z))) (f3-2 (- (-> t0-7 x) (-> a3-1 x))) - (f2-4 (+ (* f0-1 f4-0) (* f1-2 f3-2))) - ) + (f2-4 (+ (* f0-1 f4-0) (* f1-2 f3-2)))) (when (< 0.0 f2-4) (let ((f3-4 (+ (* f4-0 (- (-> a3-1 x) (-> arg0 current-pos x))) (* f3-2 (- (-> a3-1 z) (-> arg0 current-pos z)))))) (when (< f3-4 f2-4) (set! v1-0 a2-0) - (let ((f2-6 (fmax 0.0 (/ f3-4 f2-4)))) - (set! f0-1 (* f0-1 f2-6)) - (set! f1-2 (* f1-2 f2-6)) - ) - ) - ) - ) - ) - ) - (let ((f2-9 (+ (* f0-1 (-> arg0 dir x)) (* f1-2 (-> arg0 dir z))))) - (+! (-> arg0 len) f2-9) - ) + (let ((f2-6 (fmax 0.0 (/ f3-4 f2-4)))) (set! f0-1 (* f0-1 f2-6)) (set! f1-2 (* f1-2 f2-6)))))))) + (let ((f2-9 (+ (* f0-1 (-> arg0 dir x)) (* f1-2 (-> arg0 dir z))))) (+! (-> arg0 len) f2-9)) 0 (set! (-> arg0 next-poly) #f) (cond ((= v1-0 -1) (set! (-> arg0 current-pos quad) (-> arg0 dest-pos quad)) (set! (-> arg0 reached-dest) #t) - (set! (-> arg0 terminated) #t) - ) + (set! (-> arg0 terminated) #t)) (else - (+! (-> arg0 current-pos x) f0-1) - (+! (-> arg0 current-pos z) f1-2) - (let ((a2-6 (+ v1-0 1))) - (let ((a3-2 2)) - (set-on-less-than a3-3 a3-2 a2-6) - ) - (move-if-not-zero a2-7 0 a3-3 a2-6) - ) - (let ((a2-9 (-> arg0 current-poly adj-poly a2-7))) - (if (!= a2-9 255) - (set! (-> arg0 next-poly) (-> this poly a2-9)) - ) - ) - (cond - ((and (-> arg0 next-poly) (not (logtest? (-> arg0 next-poly pat) 1))) - (set! (-> arg0 current-poly) (-> arg0 next-poly)) - ) - (else - (set! (-> arg0 last-edge) v1-0) - (if (-> arg0 next-poly) - (set! (-> arg0 hit-gap) #t) - (set! (-> arg0 hit-boundary) #t) - ) - (set! (-> arg0 terminated) #t) - ) - ) - ) - ) - ) + (+! (-> arg0 current-pos x) f0-1) + (+! (-> arg0 current-pos z) f1-2) + (let ((a2-6 (+ v1-0 1))) (let ((a3-2 2)) (set-on-less-than a3-3 a3-2 a2-6)) (move-if-not-zero a2-7 0 a3-3 a2-6)) + (let ((a2-9 (-> arg0 current-poly adj-poly a2-7))) (if (!= a2-9 255) (set! (-> arg0 next-poly) (-> this poly a2-9)))) + (cond + ((and (-> arg0 next-poly) (not (logtest? (-> arg0 next-poly pat) 1))) (set! (-> arg0 current-poly) (-> arg0 next-poly))) + (else + (set! (-> arg0 last-edge) v1-0) + (if (-> arg0 next-poly) (set! (-> arg0 hit-gap) #t) (set! (-> arg0 hit-boundary) #t)) + (set! (-> arg0 terminated) #t)))))) 0 - (none) - ) + (none)) (defun init-ray ((arg0 nav-ray)) (vector-! (-> arg0 dir) (-> arg0 dest-pos) (-> arg0 current-pos)) @@ -908,22 +641,19 @@ (set! (-> arg0 reached-dest) #f) (set! (-> arg0 hit-boundary) #f) (set! (-> arg0 hit-gap) #f) - #f - ) + #f) (defun init-ray-local ((arg0 nav-ray) (arg1 nav-poly) (arg2 vector) (arg3 vector)) (set! (-> arg0 current-pos quad) (-> arg2 quad)) (set! (-> arg0 dest-pos quad) (-> arg3 quad)) (set! (-> arg0 current-poly) arg1) - (init-ray arg0) - ) + (init-ray arg0)) (defun init-ray-dir-local ((arg0 nav-ray) (arg1 nav-poly) (arg2 vector) (arg3 vector) (arg4 float)) (set! (-> arg0 current-poly) arg1) (set! (-> arg0 current-pos quad) (-> arg2 quad)) (vector+*! (-> arg0 dest-pos) (-> arg0 current-pos) arg3 arg4) - (init-ray arg0) - ) + (init-ray arg0)) (defmethod try-move-along-ray ((this nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector) (arg3 float)) (local-vars (v1-2 symbol)) @@ -933,25 +663,17 @@ (until v1-2 (+! s4-0 1) (move-along-nav-ray! this gp-0) - (set! v1-2 (or (>= s4-0 15) (-> gp-0 terminated))) - ) - ) - (-> gp-0 len) - ) - ) + (set! v1-2 (or (>= s4-0 15) (-> gp-0 terminated))))) + (-> gp-0 len))) (defun nav-ray-test ((arg0 nav-mesh) (arg1 nav-poly) (arg2 vector) (arg3 vector)) (let ((s4-1 (vector-! (new 'stack-no-clear 'vector) arg2 (-> arg0 origin))) - (s3-1 (vector-! (new 'stack-no-clear 'vector) arg3 arg2)) - ) + (s3-1 (vector-! (new 'stack-no-clear 'vector) arg3 arg2))) 0.0 (set! (-> s3-1 y) 0.0) (let ((f30-0 (vector-vector-xz-distance arg2 arg3))) (vector-xz-normalize! s3-1 1.0) - (try-move-along-ray arg0 arg1 s4-1 s3-1 f30-0) - ) - ) - ) + (try-move-along-ray arg0 arg1 s4-1 s3-1 f30-0)))) (defun nav-ray-test-local? ((arg0 nav-mesh) (arg1 nav-poly) (arg2 vector) (arg3 vector)) (local-vars (v1-2 symbol)) @@ -961,30 +683,21 @@ (until v1-2 (+! s4-0 1) (move-along-nav-ray! arg0 gp-0) - (set! v1-2 (or (>= s4-0 15) (-> gp-0 terminated))) - ) - ) - (-> gp-0 reached-dest) - ) - ) + (set! v1-2 (or (>= s4-0 15) (-> gp-0 terminated))))) + (-> gp-0 reached-dest))) (defun nav-mesh-update-route-table ((arg0 nav-mesh) (arg1 int) (arg2 int) (arg3 uint)) (let* ((a1-1 (* (+ arg2 (* arg1 (-> arg0 poly-count))) 2)) (v1-3 (/ a1-1 8)) (a2-2 (- a1-1 (* v1-3 8))) (a1-4 (lognot (ash 3 a2-2))) - (v0-0 (logior (ash (logand arg3 3) a2-2) (logand a1-4 (-> (the-as (pointer uint8) (-> arg0 route)) v1-3)))) - ) + (v0-0 (logior (ash (logand arg3 3) a2-2) (logand a1-4 (-> (the-as (pointer uint8) (-> arg0 route)) v1-3))))) (set! (-> (the-as (pointer uint8) (-> arg0 route)) v1-3) (the-as uint v0-0)) - (the-as uint v0-0) - ) - ) + (the-as uint v0-0))) (defun nav-mesh-lookup-route ((arg0 nav-mesh) (arg1 int) (arg2 int)) (let ((v1-3 (* (+ arg1 (* arg2 (-> arg0 poly-count))) 2))) - (logand (ash (-> (the-as (pointer uint8) (-> arg0 route)) (/ v1-3 8)) (- (logand v1-3 7))) 3) - ) - ) + (logand (ash (-> (the-as (pointer uint8) (-> arg0 route)) (/ v1-3 8)) (- (logand v1-3 7))) 3))) (define *nav-update-route-table-ray-count* 0) @@ -998,8 +711,7 @@ (set! *nav-update-route-table-route-count* (+ *nav-update-route-table-route-count* 1)) (when (> arg4 0) (let ((s1-1 (-> this poly arg2)) - (s0-0 (new 'stack-no-clear 'vector)) - ) + (s0-0 (new 'stack-no-clear 'vector))) (set! sv-32 0) (while (< sv-32 3) (set! sv-48 (-> (the-as nav-poly (+ sv-32 (the-as int s1-1))) adj-poly 0)) @@ -1010,29 +722,18 @@ (when (not v0-3) (tri-centroid-local this s1-1 s0-0) (set! *nav-update-route-table-ray-count* (+ *nav-update-route-table-ray-count* 1)) - (set! v0-3 (nav-ray-test-local? this (-> this poly arg0) arg1 s0-0)) - ) + (set! v0-3 (nav-ray-test-local? this (-> this poly arg0) arg1 s0-0))) (when v0-3 (let* ((a0-16 this) (t9-5 (method-of-object a0-16 nav-mesh-method-18)) (a1-7 arg0) (a2-6 arg1) (t0-1 arg3) - (t1-1 (+ arg4 -1)) - ) - (t9-5 a0-16 a1-7 a2-6 (the-as int sv-48) t0-1 t1-1) - ) - ) - ) - ) - ) - (set! sv-32 (+ sv-32 1)) - ) - ) - ) + (t1-1 (+ arg4 -1))) + (t9-5 a0-16 a1-7 a2-6 (the-as int sv-48) t0-1 t1-1)))))) + (set! sv-32 (+ sv-32 1))))) 0 - (none) - ) + (none)) (defmethod update-route-table ((this nav-mesh)) (when *nav-patch-route-table* @@ -1052,27 +753,14 @@ (dotimes (s1-0 3) (let ((a3-0 (-> s2-0 adj-poly s1-0))) (when (!= a3-0 255) - (if (not (logtest? (-> this poly a3-0 pat) 1)) - (nav-mesh-method-18 this s3-0 s5-0 (the-as int a3-0) s4-0 0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (stopwatch-end *nav-timer*) - ) + (if (not (logtest? (-> this poly a3-0 pat) 1)) (nav-mesh-method-18 this s3-0 s5-0 (the-as int a3-0) s4-0 0)))))))))) + (stopwatch-end *nav-timer*)) 0 - (none) - ) + (none)) (defun point-triangle-distance-min ((arg0 vector) (arg1 float) (arg2 (inline-array nav-vertex))) (let ((v1-0 0) - (f0-0 arg1) - ) + (f0-0 arg1)) (dotimes (a3-0 3) (let* ((t0-4 (-> arg2 (-> *edge-vert0-table* a3-0))) (t1-4 (-> arg2 (-> *edge-vert1-table* a3-0))) @@ -1087,101 +775,48 @@ (f5-7 (/ 1.0 f5-5)) (f1-2 (* f1-1 f5-7)) (f2-3 (* f2-2 f5-7)) - (f1-4 (+ (* f1-2 f3-2) (* f2-3 f4-2))) - ) + (f1-4 (+ (* f1-2 f3-2) (* f2-3 f4-2)))) (cond - ((< arg1 f1-4) - (return arg1) - ) - ((>= 0.0 f1-4) - (+! v1-0 (-> *edge-mask-table* a3-0)) - ) - (else - (set! f0-0 f1-4) - ) - ) - ) - ) - (if (= v1-0 7) - (return 0.0) - ) + ((< arg1 f1-4) (return arg1)) + ((>= 0.0 f1-4) (+! v1-0 (-> *edge-mask-table* a3-0))) + (else (set! f0-0 f1-4))))) + (if (= v1-0 7) (return 0.0)) (let ((t0-14 #f) - (a3-5 0) - ) + (a3-5 0)) (cond - ((= v1-0 1) - (set! t0-14 #t) - (set! a3-5 0) - ) - ((= v1-0 2) - (set! t0-14 #t) - (set! a3-5 1) - ) - ((= v1-0 4) - (set! t0-14 #t) - (set! a3-5 2) - ) - ((= v1-0 6) - (set! a3-5 0) - ) - ((= v1-0 5) - (set! a3-5 1) - ) - ((= v1-0 3) - (set! a3-5 2) - ) - ) + ((= v1-0 1) (set! t0-14 #t) (set! a3-5 0)) + ((= v1-0 2) (set! t0-14 #t) (set! a3-5 1)) + ((= v1-0 4) (set! t0-14 #t) (set! a3-5 2)) + ((= v1-0 6) (set! a3-5 0)) + ((= v1-0 5) (set! a3-5 1)) + ((= v1-0 3) (set! a3-5 2))) (when (not t0-14) (let* ((t0-15 (-> arg2 (-> *edge-vert0-table* a3-5))) (v1-17 (-> arg2 (-> *edge-vert1-table* a3-5))) (f2-8 (- (-> v1-17 x) (-> t0-15 x))) (f1-7 (- (-> v1-17 z) (-> t0-15 z))) (f3-7 (+ (* f2-8 (- (-> arg0 x) (-> t0-15 x))) (* f1-7 (- (-> arg0 z) (-> t0-15 z))))) - (f1-9 (+ (* f2-8 (- (-> arg0 x) (-> v1-17 x))) (* f1-7 (- (-> arg0 z) (-> v1-17 z))))) - ) + (f1-9 (+ (* f2-8 (- (-> arg0 x) (-> v1-17 x))) (* f1-7 (- (-> arg0 z) (-> v1-17 z)))))) (cond - ((< f3-7 0.0) - (set! t0-14 #t) - (set! a3-5 (-> *edge-vert0-table* a3-5)) - ) - ((< 0.0 f1-9) - (set! t0-14 #t) - (set! a3-5 (-> *edge-vert1-table* a3-5)) - ) - (else - (return f0-0) - ) - ) - ) - ) + ((< f3-7 0.0) (set! t0-14 #t) (set! a3-5 (-> *edge-vert0-table* a3-5))) + ((< 0.0 f1-9) (set! t0-14 #t) (set! a3-5 (-> *edge-vert1-table* a3-5))) + (else (return f0-0))))) (when t0-14 (let* ((v1-27 (-> arg2 a3-5)) (f0-2 (- (-> v1-27 x) (-> arg0 x))) (f0-4 (* f0-2 f0-2)) - (f1-12 (- (-> v1-27 z) (-> arg0 z))) - ) - (set! f0-0 (fmin (sqrtf (+ f0-4 (* f1-12 f1-12))) arg1)) - ) - ) - ) - f0-0 - ) - ) + (f1-12 (- (-> v1-27 z) (-> arg0 z)))) + (set! f0-0 (fmin (sqrtf (+ f0-4 (* f1-12 f1-12))) arg1))))) + f0-0)) (defmethod find-poly ((this nav-mesh) (arg0 vector) (arg1 meters) (arg2 (pointer nav-control-flags))) (local-vars (s3-1 nav-poly)) (let ((v1-1 (find-poly-fast this arg0 arg1))) (when v1-1 - (if arg2 - (logior! (-> arg2 0) (nav-control-flags navcf20)) - ) + (if arg2 (logior! (-> arg2 0) (nav-control-flags navcf20))) (set! s3-1 v1-1) - (goto cfg-14) - ) - ) - (if arg2 - (logclear! (-> arg2 0) (nav-control-flags navcf20)) - ) + (goto cfg-14))) + (if arg2 (logclear! (-> arg2 0) (nav-control-flags navcf20))) (let ((s2-0 (new 'stack-no-clear 'inline-array 'nav-vertex 3))) (set! s3-1 (the-as nav-poly #f)) (let ((f30-0 10000000000000000000000000000000000000.0)) @@ -1193,22 +828,9 @@ (set! (-> s2-0 2 quad) (-> this vertex (-> s0-0 vertex 2) quad)) (let ((f1-2 (- (-> arg0 y) (* 0.333333 (+ (-> s2-0 0 y) (-> s2-0 1 y) (-> s2-0 2 y)))))) (when (>= arg1 (fabs f1-2)) - (let ((f0-2 (point-triangle-distance-min arg0 f30-0 s2-0))) - (when (< f0-2 f30-0) - (set! f30-0 f0-2) - (set! s3-1 s0-0) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (let ((f0-2 (point-triangle-distance-min arg0 f30-0 s2-0))) (when (< f0-2 f30-0) (set! f30-0 f0-2) (set! s3-1 s0-0)))))))))) (label cfg-14) - s3-1 - ) + s3-1) (defmethod setup-portal ((this nav-mesh) (arg0 nav-poly) (arg1 nav-poly) (arg2 nav-route-portal)) (local-vars (t0-6 int) (t1-1 int)) @@ -1216,12 +838,7 @@ (cond ((and arg0 arg1) (let* ((v1-3 (* (+ (-> arg1 id) (* (the-as int (-> arg0 id)) (-> this poly-count))) 2)) - (v1-8 - (logand (ash (-> (the-as (pointer uint8) (-> this route)) (/ (the-as int v1-3) 8)) (- (the-as int (logand v1-3 7)))) - 3 - ) - ) - ) + (v1-8 (logand (ash (-> (the-as (pointer uint8) (-> this route)) (/ (the-as int v1-3) 8)) (- (the-as int (logand v1-3 7)))) 3))) (set! (-> arg2 edge-index) -1) (when (!= v1-8 3) (let ((a2-9 (-> arg0 adj-poly v1-8))) @@ -1229,80 +846,38 @@ (set! (-> arg2 edge-index) (the-as int v1-8)) (set! (-> arg2 next-poly) (-> this poly a2-9)) (let ((a2-12 (-> this vertex))) - (let ((t0-5 (+ v1-8 1))) - (let ((t1-0 2)) - (set-on-less-than t1-1 t1-0 t0-5) - ) - (move-if-not-zero t0-6 0 t1-1 t0-5) - ) - (set! (-> arg2 vertex 0) (-> a2-12 (-> arg0 vertex t0-6))) - ) + (let ((t0-5 (+ v1-8 1))) (let ((t1-0 2)) (set-on-less-than t1-1 t1-0 t0-5)) (move-if-not-zero t0-6 0 t1-1 t0-5)) + (set! (-> arg2 vertex 0) (-> a2-12 (-> arg0 vertex t0-6)))) (set! (-> arg2 vertex 1) (-> this vertex (-> arg0 vertex v1-8))) - #t - ) - ) - ) - ) - ) - (else - 0 - ) - ) - ) + #t))))) + (else 0))) (defmethod get-adj-poly ((this nav-mesh) (arg0 nav-poly) (arg1 nav-poly) (arg2 symbol)) (local-vars (v1-12 uint) (t0-6 int) (t1-1 int)) (cond ((and arg0 arg1) (let* ((v1-3 (* (+ (-> arg1 id) (* (the-as int (-> arg0 id)) (-> this poly-count))) 2)) - (a2-6 - (logand (ash (-> (the-as (pointer uint8) (-> this route)) (/ (the-as int v1-3) 8)) (- (the-as int (logand v1-3 7)))) - 3 - ) - ) - ) - (if arg2 - (set! (-> arg2 value) (the-as uint #xffffffff)) - ) + (a2-6 (logand (ash (-> (the-as (pointer uint8) (-> this route)) (/ (the-as int v1-3) 8)) (- (the-as int (logand v1-3 7)))) 3))) + (if arg2 (set! (-> arg2 value) (the-as uint #xffffffff))) (cond - ((= a2-6 3) - (the-as nav-poly #f) - ) - ((begin (set! v1-12 (-> arg0 adj-poly a2-6)) (= v1-12 255)) - (the-as nav-poly #f) - ) + ((= a2-6 3) (the-as nav-poly #f)) + ((begin (set! v1-12 (-> arg0 adj-poly a2-6)) (= v1-12 255)) (the-as nav-poly #f)) (else - (when arg2 - (let ((t0-5 (+ a2-6 1))) - (let ((t1-0 2)) - (set-on-less-than t1-1 t1-0 t0-5) - ) - (move-if-not-zero t0-6 0 t1-1 t0-5) - ) - (set! (-> arg2 value) (logior (-> arg0 vertex t0-6) (shl (-> arg0 vertex a2-6) 16))) - ) - (-> this poly v1-12) - ) - ) - ) - ) - (else - (the-as nav-poly #f) - ) - ) - ) + (when arg2 + (let ((t0-5 (+ a2-6 1))) (let ((t1-0 2)) (set-on-less-than t1-1 t1-0 t0-5)) (move-if-not-zero t0-6 0 t1-1 t0-5)) + (set! (-> arg2 value) (logior (-> arg0 vertex t0-6) (shl (-> arg0 vertex a2-6) 16)))) + (-> this poly v1-12))))) + (else (the-as nav-poly #f)))) (defmethod compute-bounding-box ((this nav-mesh) (arg0 vector) (arg1 vector)) (let ((f0-0 10000000000000000000000000000000000000.0) - (f1-0 -10000000000000000000000000000000000000.0) - ) + (f1-0 -10000000000000000000000000000000000000.0)) (set! (-> arg0 x) f0-0) (set! (-> arg0 y) f0-0) (set! (-> arg0 z) f0-0) (set! (-> arg1 x) f1-0) (set! (-> arg1 y) f1-0) - (set! (-> arg1 z) f1-0) - ) + (set! (-> arg1 z) f1-0)) (dotimes (v1-1 (-> this vertex-count)) (let ((a3-1 (-> this vertex v1-1))) (set! (-> arg0 x) (fmin (-> arg0 x) (-> a3-1 x))) @@ -1310,14 +885,11 @@ (set! (-> arg0 z) (fmin (-> arg0 z) (-> a3-1 z))) (set! (-> arg1 x) (fmax (-> arg1 x) (-> a3-1 x))) (set! (-> arg1 y) (fmax (-> arg1 y) (-> a3-1 y))) - (set! (-> arg1 z) (fmax (-> arg1 z) (-> a3-1 z))) - ) - ) + (set! (-> arg1 z) (fmax (-> arg1 z) (-> a3-1 z))))) (vector+! arg0 arg0 (-> this origin)) (vector+! arg1 arg1 (-> this origin)) 0 - (none) - ) + (none)) (defmethod initialize-mesh! ((this nav-mesh)) (local-vars (sv-32 vector) (sv-48 int)) @@ -1328,69 +900,41 @@ (s1-0 0) (s2-0 0) (s4-0 0) - (gp-0 #f) - ) + (gp-0 #f)) (set! sv-48 s5-0) (while (nonzero? sv-48) (set! sv-48 (+ sv-48 -1)) (let ((v1-4 (-> this poly sv-48))) - (if (logtest? (-> v1-4 pat) 1) - (+! s4-0 1) - ) + (if (logtest? (-> v1-4 pat) 1) (+! s4-0 1)) (let ((a1-2 (-> this vertex (-> v1-4 vertex 0))) (a2-2 (-> this vertex (-> v1-4 vertex 1))) - (a3-0 (-> this vertex (-> v1-4 vertex 2))) - ) - (vector-3pt-cross! sv-32 a1-2 a2-2 a3-0) - ) - ) + (a3-0 (-> this vertex (-> v1-4 vertex 2)))) + (vector-3pt-cross! sv-32 a1-2 a2-2 a3-0))) (cond - ((= (vector-length sv-32) 0.0) - (+! s1-0 1) - ) - (else - (vector-normalize! sv-32 1.0) - (if (>= 0.0 (-> sv-32 y)) - (+! s2-0 1) - ) - ) - ) - ) + ((= (vector-length sv-32) 0.0) (+! s1-0 1)) + (else (vector-normalize! sv-32 1.0) (if (>= 0.0 (-> sv-32 y)) (+! s2-0 1))))) (when (zero? s5-0) (format #t "WARNING: nav-mesh has no triangles. ") - (set! gp-0 #t) - ) + (set! gp-0 #t)) (when (> s1-0 0) (format #t "WARNING: nav-mesh has ~D triangles with zero area (out of ~D triangles). " s1-0 s5-0) - (set! gp-0 #t) - ) + (set! gp-0 #t)) (when (> s2-0 0) (format #t "WARNING: nav-mesh has ~D triangles with inverted normals (out of ~D triangles). " s2-0 s5-0) - (set! gp-0 #t) - ) + (set! gp-0 #t)) (when (< 255 s5-0) (format #t "WARNING: nav-mesh has ~D triangles (only up to ~D are allowed). " s5-0 255) - (set! gp-0 #t) - ) + (set! gp-0 #t)) (when (< 255 s3-0) (format #t "WARNING: nav-mesh has ~D vertices (only up to ~D are allowed). " s3-0 255) - (set! gp-0 #t) - ) + (set! gp-0 #t)) (when (= s4-0 s5-0) (format #t "WARNING: nav-mesh only contains gap triangles (~D triangles total). " s5-0) - (set! gp-0 #t) - ) + (set! gp-0 #t)) (when gp-0 - (if pp - (format #t "current process is ~A~%" (-> pp name)) - (format #t "(no current process).~%") - ) - ) - ) + (if pp (format #t "current process is ~A~%" (-> pp name)) (format #t "(no current process).~%")))) 0 - (none) - ) - ) + (none))) (defmethod find-opposite-vertices ((this nav-mesh) (arg0 nav-poly) (arg1 nav-poly)) (when (!= arg0 arg1) @@ -1399,81 +943,48 @@ (when (= (-> arg0 vertex v1-1) (-> arg1 vertex a0-1)) (let ((a3-6 (-> arg0 vertex (mod (+ v1-1 1) 3)))) (dotimes (t0-3 3) - (if (and (!= t0-3 a0-1) (= a3-6 (-> arg1 vertex t0-3))) - (return (logior a3-6 (shl (-> arg0 vertex v1-1) 16))) - ) - ) - ) - ) - ) - ) - ) - (the-as uint #xffffffff) - ) + (if (and (!= t0-3 a0-1) (= a3-6 (-> arg1 vertex t0-3))) (return (logior a3-6 (shl (-> arg0 vertex v1-1) 16)))))))))) + (the-as uint #xffffffff)) (defun ray-ccw-line-segment-intersection? ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (let ((f0-2 (- (* (-> arg2 x) (-> arg1 z)) (* (-> arg2 z) (-> arg1 x)))) (f2-4 (- (* (-> arg3 x) (-> arg1 z)) (* (-> arg3 z) (-> arg1 x)))) (f3-4 (- (* (-> arg0 x) (-> arg1 z)) (* (-> arg0 z) (-> arg1 x)))) - (v0-0 #f) - ) + (v0-0 #f)) (let ((f1-7 (- f2-4 f0-2)) (f2-5 (- f2-4 f3-4)) - (f3-5 (- f3-4 f0-2)) - ) + (f3-5 (- f3-4 f0-2))) (when (and (>= (fabs f1-7) (fmax (fabs f3-5) (fabs f2-5))) (!= f1-7 0.0)) (let ((f0-7 (+ (* (-> arg1 x) (- (-> arg3 z) (-> arg2 z))) (* (-> arg1 z) (- (-> arg2 x) (-> arg3 x)))))) - (set! v0-0 (< 0.0 f0-7)) - ) - ) - ) - v0-0 - ) - ) + (set! v0-0 (< 0.0 f0-7))))) + v0-0)) (defun ray-line-segment-intersection? ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (let ((f1-3 (- (* (-> arg2 x) (-> arg1 z)) (* (-> arg2 z) (-> arg1 x)))) (f0-4 (- (* (-> arg3 x) (-> arg1 z)) (* (-> arg3 z) (-> arg1 x)))) (f2-6 (- (* (-> arg0 x) (-> arg1 z)) (* (-> arg0 z) (-> arg1 x)))) - (gp-0 #f) - ) + (gp-0 #f)) (let ((f30-0 (- f0-4 f1-3)) (f0-5 (- f0-4 f2-6)) - (f1-4 (- f2-6 f1-3)) - ) + (f1-4 (- f2-6 f1-3))) (when (and (>= (fabs f30-0) (fmax (fabs f1-4) (fabs f0-5))) (!= f30-0 0.0)) (let ((f2-11 (+ (* (-> arg2 x) (-> arg1 x)) (* (-> arg2 z) (-> arg1 z)))) (f3-11 (+ (* (-> arg3 x) (-> arg1 x)) (* (-> arg3 z) (-> arg1 z)))) - (f28-0 (+ (* (-> arg0 x) (-> arg1 x)) (* (-> arg0 z) (-> arg1 z)))) - ) - (if (>= (* (+ (* f2-11 f0-5) (* f3-11 f1-4)) (sign f30-0)) (* f28-0 (fabs f30-0))) - (set! gp-0 #t) - ) - ) - ) - ) - gp-0 - ) - ) + (f28-0 (+ (* (-> arg0 x) (-> arg1 x)) (* (-> arg0 z) (-> arg1 z))))) + (if (>= (* (+ (* f2-11 f0-5) (* f3-11 f1-4)) (sign f30-0)) (* f28-0 (fabs f30-0))) (set! gp-0 #t))))) + gp-0)) (define *debug-offset* (new 'static 'vector :y 4096.0 :w 1.0)) (defun clip-vector-to-halfspace! ((arg0 vector) (arg1 float) (arg2 float) (arg3 float)) (let ((f0-2 (+ (* arg1 (-> arg0 x)) (* arg2 (-> arg0 z))))) (when (< arg3 f0-2) - (let ((f0-3 (/ arg3 f0-2))) - (set! (-> arg0 x) (* (-> arg0 x) f0-3)) - (set! (-> arg0 z) (* (-> arg0 z) f0-3)) - ) - ) - ) - ) + (let ((f0-3 (/ arg3 f0-2))) (set! (-> arg0 x) (* (-> arg0 x) f0-3)) (set! (-> arg0 z) (* (-> arg0 z) f0-3)))))) (defmethod nav-mesh-method-23 ((this nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 nav-route-portal)) (local-vars (v1-32 int) (a0-14 int) (a0-17 int) (a1-10 int) (sv-16 nav-vertex)) (let ((s1-0 (-> this vertex)) - (s0-0 -1) - ) + (s0-0 -1)) (set! (-> arg2 quad) (-> arg3 quad)) (dotimes (v1-1 3) (let* ((a0-8 (-> s1-0 (-> arg0 vertex (-> *edge-vert0-table* v1-1)))) @@ -1481,130 +992,71 @@ (f0-1 (- (-> a0-8 z) (-> a1-7 z))) (f1-2 (- (-> a1-7 x) (-> a0-8 x))) (f2-4 (+ (* f0-1 (- (-> a0-8 x) (-> arg1 x))) (* f1-2 (- (-> a0-8 z) (-> arg1 z))))) - (f0-3 (+ (* (-> arg2 x) f0-1) (* (-> arg2 z) f1-2))) - ) + (f0-3 (+ (* (-> arg2 x) f0-1) (* (-> arg2 z) f1-2)))) (when (< f2-4 f0-3) (set! s0-0 v1-1) - (let ((f0-4 (/ f2-4 f0-3))) - (set! (-> arg2 x) (* (-> arg2 x) f0-4)) - (set! (-> arg2 z) (* (-> arg2 z) f0-4)) - ) - ) - ) - ) + (let ((f0-4 (/ f2-4 f0-3))) (set! (-> arg2 x) (* (-> arg2 x) f0-4)) (set! (-> arg2 z) (* (-> arg2 z) f0-4)))))) (when arg4 (cond - ((= s0-0 -1) - (set! (-> arg4 next-poly) #f) - ) + ((= s0-0 -1) (set! (-> arg4 next-poly) #f)) (else - (while (!= s0-0 -1) - (let ((v1-11 (-> arg0 adj-poly (-> *edge-vert0-table* s0-0)))) - (cond - ((!= v1-11 255) - (set! (-> arg4 next-poly) (-> this poly v1-11)) - (set! s0-0 -1) - ) - ((let ((a1-8 (-> s1-0 (-> arg0 vertex (-> *edge-vert0-table* s0-0))))) - (set! sv-16 (-> s1-0 (-> arg0 vertex (-> *edge-vert1-table* s0-0)))) - (< (vector-vector-xz-distance arg1 a1-8) 204.8) - ) - (let ((a1-9 (+ s0-0 -1)) - (v1-28 2) - ) - (set-on-less-than a0-14 a1-9 0) - (move-if-not-zero a1-10 v1-28 a0-14 a1-9) - ) - (set! s0-0 a1-10) - ) - ((< (vector-vector-xz-distance arg1 sv-16) 204.8) - (let ((v1-31 (+ s0-0 1))) - (let ((a0-16 2)) - (set-on-less-than a0-17 a0-16 v1-31) - ) - (move-if-not-zero v1-32 0 a0-17 v1-31) - ) - (set! s0-0 v1-32) - ) - (else - (set! (-> arg4 next-poly) #f) - (set! s0-0 -1) - ) - ) - ) - ) - ) - ) - ) - ) + (while (!= s0-0 -1) + (let ((v1-11 (-> arg0 adj-poly (-> *edge-vert0-table* s0-0)))) + (cond + ((!= v1-11 255) (set! (-> arg4 next-poly) (-> this poly v1-11)) (set! s0-0 -1)) + ((let ((a1-8 (-> s1-0 (-> arg0 vertex (-> *edge-vert0-table* s0-0))))) + (set! sv-16 (-> s1-0 (-> arg0 vertex (-> *edge-vert1-table* s0-0)))) + (< (vector-vector-xz-distance arg1 a1-8) 204.8)) + (let ((a1-9 (+ s0-0 -1)) + (v1-28 2)) + (set-on-less-than a0-14 a1-9 0) + (move-if-not-zero a1-10 v1-28 a0-14 a1-9)) + (set! s0-0 a1-10)) + ((< (vector-vector-xz-distance arg1 sv-16) 204.8) + (let ((v1-31 (+ s0-0 1))) (let ((a0-16 2)) (set-on-less-than a0-17 a0-16 v1-31)) (move-if-not-zero v1-32 0 a0-17 v1-31)) + (set! s0-0 v1-32)) + (else (set! (-> arg4 next-poly) #f) (set! s0-0 -1))))))))) (set! (-> arg2 y) (-> arg1 y)) - arg2 - ) + arg2) (defmethod project-point-into-tri-3d ((this nav-mesh) (arg0 nav-poly) (arg1 vector) (arg2 vector)) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'matrix)) - ) + (s4-0 (new 'stack-no-clear 'matrix))) (dotimes (v1-0 3) - (set! (-> s4-0 vector v1-0 quad) (the-as uint128 0)) - ) + (set! (-> s4-0 vector v1-0 quad) (the-as uint128 0))) (set! (-> s4-0 vector 0 quad) (-> this vertex (-> arg0 vertex 0) quad)) (set! (-> s4-0 vector 1 quad) (-> this vertex (-> arg0 vertex 1) quad)) (set! (-> s4-0 vector 2 quad) (-> this vertex (-> arg0 vertex 2) quad)) (normal-of-plane s3-0 (the-as vector (-> s4-0 vector)) (-> s4-0 vector 1) (-> s4-0 vector 2)) - (closest-pt-in-triangle arg1 arg2 s4-0 s3-0) - ) - (none) - ) + (closest-pt-in-triangle arg1 arg2 s4-0 s3-0)) + (none)) (defmethod project-onto-nav-mesh ((this nav-control) (arg0 vector) (arg1 vector)) (local-vars (sv-32 int)) (let ((s5-0 (-> this mesh)) - (s3-1 (vector-! (new 'stack-no-clear 'vector) arg1 (-> this mesh origin))) - ) + (s3-1 (vector-! (new 'stack-no-clear 'vector) arg1 (-> this mesh origin)))) (set! sv-32 0) (let ((a1-5 (find-poly s5-0 s3-1 (-> this nearest-y-threshold) (the-as (pointer nav-control-flags) (& sv-32))))) (cond - ((logtest? #x100000 sv-32) - (set! (-> arg0 quad) (-> arg1 quad)) - ) - (else - (closest-point-on-boundary s5-0 a1-5 arg0 s3-1) - (vector+! arg0 arg0 (-> s5-0 origin)) - ) - ) - ) - ) - arg0 - ) + ((logtest? #x100000 sv-32) (set! (-> arg0 quad) (-> arg1 quad))) + (else (closest-point-on-boundary s5-0 a1-5 arg0 s3-1) (vector+! arg0 arg0 (-> s5-0 origin)))))) + arg0) (defmethod find-poly ((this nav-control) (arg0 vector)) - (find-poly - (-> this mesh) - (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin)) - (-> this nearest-y-threshold) - (the-as (pointer nav-control-flags) #f) - ) - ) + (find-poly (-> this mesh) + (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin)) + (-> this nearest-y-threshold) + (the-as (pointer nav-control-flags) #f))) (defmethod project-point-into-tri-3d ((this nav-control) (arg0 nav-poly) (arg1 vector) (arg2 vector)) - (project-point-into-tri-3d - (-> this mesh) - arg0 - arg1 - (vector-! (new 'stack-no-clear 'vector) arg2 (-> this mesh origin)) - ) + (project-point-into-tri-3d (-> this mesh) arg0 arg1 (vector-! (new 'stack-no-clear 'vector) arg2 (-> this mesh origin))) (vector+! arg1 arg1 (-> this mesh origin)) - arg1 - ) + arg1) (defmethod is-in-mesh? ((this nav-control) (arg0 vector) (arg1 float)) (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin))) - (a1-1 (-> this mesh)) - ) - (is-in-mesh? a1-1 v1-1 arg1 (-> this nearest-y-threshold)) - ) - ) + (a1-1 (-> this mesh))) + (is-in-mesh? a1-1 v1-1 arg1 (-> this nearest-y-threshold)))) (defmethod debug-draw ((this nav-control)) (local-vars @@ -1614,46 +1066,36 @@ (sv-240 (function _varargs_ object)) (sv-256 string) (sv-272 int) - (sv-288 (function _varargs_ object)) - ) + (sv-288 (function _varargs_ object))) (let ((a0-1 this)) (when (and *display-nav-marks* (logtest? (-> a0-1 flags) (nav-control-flags display-marks))) (let ((s5-0 (-> this mesh)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (= (-> this mesh debug-time) (logand (-> *display* actual-frame-counter) 255)) (when #t (set! (-> s5-0 debug-time) (the-as uint (-> *display* actual-frame-counter))) - (add-debug-sphere - (logtest? (-> this flags) (nav-control-flags navcf1)) - (bucket-id debug) - (-> s5-0 bounds) - (-> s5-0 bounds w) - (new 'static 'rgba :r #xff :g #xff :a #x20) - ) + (add-debug-sphere (logtest? (-> this flags) (nav-control-flags navcf1)) + (bucket-id debug) + (-> s5-0 bounds) + (-> s5-0 bounds w) + (new 'static 'rgba :r #xff :g #xff :a #x20)) (add-debug-vector #t (bucket-id debug-no-zbuf) (-> s5-0 origin) *x-vector* (meters 1) *color-red*) (add-debug-vector #t (bucket-id debug-no-zbuf) (-> s5-0 origin) *z-vector* (meters 1) *color-blue*) (when (logtest? (-> this flags) (nav-control-flags navcf2)) (dotimes (s3-0 (-> s5-0 vertex-count)) - (add-debug-x - #t - (bucket-id debug-no-zbuf) - (vector+! s4-0 (-> s5-0 origin) (the-as vector (-> s5-0 vertex s3-0))) - *color-green* - ) - ) - ) + (add-debug-x #t + (bucket-id debug-no-zbuf) + (vector+! s4-0 (-> s5-0 origin) (the-as vector (-> s5-0 vertex s3-0))) + *color-green*))) (when #f (dotimes (s3-1 (-> s5-0 node-count)) (let ((a1-4 (-> s5-0 nodes s3-1)) (a0-15 (new 'stack-no-clear 'vector)) - (v1-20 (new 'stack-no-clear 'vector)) - ) + (v1-20 (new 'stack-no-clear 'vector))) (set! sv-192 (new 'stack-no-clear 'vector)) (let ((s2-0 (new 'stack-no-clear 'vector)) (s1-0 (new 'stack-no-clear 'vector)) - (s0-0 (new 'stack-no-clear 'vector)) - ) + (s0-0 (new 'stack-no-clear 'vector))) (set! sv-208 (the-as uint #x80808080)) (set! (-> a0-15 quad) (-> a1-4 center quad)) (set! (-> v1-20 quad) (-> a1-4 radius quad)) @@ -1680,297 +1122,187 @@ (a0-19 #t) (a1-13 68) (t1-5 #f) - (t2-3 -1) - ) - (t9-7 a0-19 (the-as bucket-id a1-13) s0-0 sv-192 (the-as rgba sv-208) t1-5 (the-as rgba t2-3)) - ) - ) - ) - ) - ) + (t2-3 -1)) + (t9-7 a0-19 (the-as bucket-id a1-13) s0-0 sv-192 (the-as rgba sv-208) t1-5 (the-as rgba t2-3))))))) (when (logtest? (-> this flags) (nav-control-flags navcf3)) (dotimes (s3-2 (-> s5-0 poly-count)) (let ((s2-1 (-> s5-0 poly s3-2))) - (debug-draw-poly s5-0 s2-1 (cond - ((logtest? (-> s2-1 pat) 1) - (new 'static 'rgba :g #x80 :b #x80 :a #x40) - ) - ((logtest? (-> s2-1 pat) 2) - (new 'static 'rgba :g #xff :b #x80 :a #x40) - ) - ((logtest? (-> s2-1 pat) 4) - (new 'static 'rgba :g #xff :b #x40 :a #x80) - ) - ((logtest? (-> s2-1 pat) 8) - (new 'static 'rgba :g #x80 :b #x40 :a #xff) - ) - ((logtest? (-> s2-1 pat) 16) - (new 'static 'rgba :g #x80 :b #x40 :a #xff) - ) - (else - (new 'static 'rgba :g #x80 :b #xff :a #x80) - ) - ) - ) + (debug-draw-poly s5-0 + s2-1 + (cond + ((logtest? (-> s2-1 pat) 1) (new 'static 'rgba :g #x80 :b #x80 :a #x40)) + ((logtest? (-> s2-1 pat) 2) (new 'static 'rgba :g #xff :b #x80 :a #x40)) + ((logtest? (-> s2-1 pat) 4) (new 'static 'rgba :g #xff :b #x40 :a #x80)) + ((logtest? (-> s2-1 pat) 8) (new 'static 'rgba :g #x80 :b #x40 :a #xff)) + ((logtest? (-> s2-1 pat) 16) (new 'static 'rgba :g #x80 :b #x40 :a #xff)) + (else (new 'static 'rgba :g #x80 :b #xff :a #x80)))) (when (logtest? (-> this flags) (nav-control-flags navcf4)) (let ((s1-1 add-debug-text-3d) - (s0-1 #t) - ) + (s0-1 #t)) (set! sv-224 68) (set! sv-240 format) (let ((a0-23 (clear *temp-string*)) (a1-15 "~D") - (a2-13 (-> s2-1 id)) - ) - (sv-240 a0-23 a1-15 a2-13) - ) + (a2-13 (-> s2-1 id))) + (sv-240 a0-23 a1-15 a2-13)) (set! sv-256 *temp-string*) (let ((a3-10 (tri-centroid-world s5-0 s2-1 s4-0)) (t0-8 8) - (t1-6 #f) - ) - (s1-1 s0-1 (the-as bucket-id sv-224) sv-256 a3-10 (the-as font-color t0-8) (the-as vector2h t1-6)) - ) - ) - ) - ) - ) - ) + (t1-6 #f)) + (s1-1 s0-1 (the-as bucket-id sv-224) sv-256 a3-10 (the-as font-color t0-8) (the-as vector2h t1-6)))))))) (when (logtest? (-> this flags) (nav-control-flags navcf5)) - (if (-> this next-poly) - (debug-draw-poly s5-0 (-> this next-poly) *color-cyan*) - ) - (if (-> this target-poly) - (debug-draw-poly s5-0 (-> this target-poly) *color-yellow*) - ) - (if (-> this current-poly) - (debug-draw-poly s5-0 (-> this current-poly) *color-red*) - ) - ) + (if (-> this next-poly) (debug-draw-poly s5-0 (-> this next-poly) *color-cyan*)) + (if (-> this target-poly) (debug-draw-poly s5-0 (-> this target-poly) *color-yellow*)) + (if (-> this current-poly) (debug-draw-poly s5-0 (-> this current-poly) *color-red*))) (when (logtest? (-> this flags) (nav-control-flags navcf7)) (dotimes (s3-3 (the-as int (-> s5-0 static-sphere-count))) (let ((s2-2 (-> s5-0 static-sphere s3-3))) (add-debug-sphere #t (bucket-id debug) (the-as vector s2-2) (-> s2-2 trans w) *color-blue*) (let ((s1-2 add-debug-text-3d) - (s0-2 #t) - ) + (s0-2 #t)) (set! sv-272 68) (set! sv-288 format) (let ((a0-32 (clear *temp-string*)) (a1-22 "~D") - (a2-20 s3-3) - ) - (sv-288 a0-32 a1-22 a2-20) - ) + (a2-20 s3-3)) + (sv-288 a0-32 a1-22 a2-20)) (let ((a2-21 *temp-string*) (t0-10 8) - (t1-7 #f) - ) - (s1-2 - s0-2 - (the-as bucket-id sv-272) - a2-21 - (the-as vector s2-2) - (the-as font-color t0-10) - (the-as vector2h t1-7) - ) - ) - ) - ) - ) - ) - ) + (t1-7 #f)) + (s1-2 s0-2 (the-as bucket-id sv-272) a2-21 (the-as vector s2-2) (the-as font-color t0-10) (the-as vector2h t1-7)))))))) (when (logtest? (-> this flags) (nav-control-flags navcf6)) (when (and (-> this portal 0) (-> this portal 1)) (let ((v1-80 (-> s5-0 origin)) (a2-22 (new 'stack-no-clear 'vector)) - (a3-13 (new 'stack-no-clear 'vector)) - ) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - (vector+! a2-22 v1-80 (the-as vector (-> this portal 0))) - (vector+! a3-13 v1-80 (the-as vector (-> this portal 1))) - (new 'static 'rgba :r #xff :g #x80 :b #x40 :a #x80) - #f - (the-as rgba -1) - ) - ) - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - (-> this shape trans) - (-> this travel) - (meters 0.00024414062) - *color-white* - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - (vector+! (new 'stack-no-clear 'vector) (-> this shape trans) (new 'static 'vector :y 4096.0 :w 1.0)) - (-> this old-travel) - (meters 0.00024414062) - *color-yellow* - ) - (add-debug-x - #t - (bucket-id debug-no-zbuf) - (vector+! (new 'stack-no-clear 'vector) (-> this shape trans) (-> this travel)) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - ) + (a3-13 (new 'stack-no-clear 'vector))) + (add-debug-line #t + (bucket-id debug-no-zbuf) + (vector+! a2-22 v1-80 (the-as vector (-> this portal 0))) + (vector+! a3-13 v1-80 (the-as vector (-> this portal 1))) + (new 'static 'rgba :r #xff :g #x80 :b #x40 :a #x80) + #f + (the-as rgba -1)))) + (add-debug-vector #t + (bucket-id debug-no-zbuf) + (-> this shape trans) + (-> this travel) + (meters 0.00024414062) + *color-white*) + (add-debug-vector #t + (bucket-id debug-no-zbuf) + (vector+! (new 'stack-no-clear 'vector) (-> this shape trans) (new 'static 'vector :y 4096.0 :w 1.0)) + (-> this old-travel) + (meters 0.00024414062) + *color-yellow*) + (add-debug-x #t + (bucket-id debug-no-zbuf) + (vector+! (new 'stack-no-clear 'vector) (-> this shape trans) (-> this travel)) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80))) (when (logtest? (-> this flags) (nav-control-flags navcf7)) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> this shape root-prim prim-core)) - (-> this shape nav-radius) - (new 'static 'rgba :g #xff :b #xff :a #x20) - ) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (the-as vector (-> this shape root-prim prim-core)) + (-> this shape nav-radius) + (new 'static 'rgba :g #xff :b #xff :a #x20)) (dotimes (s3-4 (-> this num-spheres)) (let ((v1-95 (-> this sphere s3-4))) (vector+! s4-0 (-> s5-0 origin) (the-as vector (&-> v1-95 x))) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - s4-0 - (- (-> v1-95 w) (-> this shape nav-radius)) - (new 'static 'rgba :g #xff :b #xff :a #x20) - ) - ) - ) - ) - ) - 0 - ) - ) - (none) - ) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + s4-0 + (- (-> v1-95 w) (-> this shape nav-radius)) + (new 'static 'rgba :g #xff :b #xff :a #x20)))))) + 0)) + (none)) (defmethod mem-usage ((this nav-mesh) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 46 (-> arg0 length))) (set! (-> arg0 data 45 name) "nav-mesh") (+! (-> arg0 data 45 count) 1) - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 45 used) v1-6) - (+! (-> arg0 data 45 total) (logand -16 (+ v1-6 15))) - ) + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 45 used) v1-6) (+! (-> arg0 data 45 total) (logand -16 (+ v1-6 15)))) (set! (-> arg0 length) (max 46 (-> arg0 length))) (set! (-> arg0 data 45 name) "nav-mesh") (+! (-> arg0 data 45 count) 1) (let ((v1-16 (* (-> this vertex-count) 16))) (+! (-> arg0 data 45 used) v1-16) - (+! (-> arg0 data 45 total) (logand -16 (+ v1-16 15))) - ) + (+! (-> arg0 data 45 total) (logand -16 (+ v1-16 15)))) (set! (-> arg0 length) (max 46 (-> arg0 length))) (set! (-> arg0 data 45 name) "nav-mesh") (+! (-> arg0 data 45 count) 1) (let ((v1-26 (* (-> this poly-count) 8))) (+! (-> arg0 data 45 used) v1-26) - (+! (-> arg0 data 45 total) (logand -16 (+ v1-26 15))) - ) + (+! (-> arg0 data 45 total) (logand -16 (+ v1-26 15)))) (set! (-> arg0 length) (max 46 (-> arg0 length))) (set! (-> arg0 data 45 name) "nav-mesh") (+! (-> arg0 data 45 count) 1) (let ((v1-38 (/ (* (* (-> this poly-count) (-> this poly-count)) 2) 8))) (+! (-> arg0 data 45 used) v1-38) - (+! (-> arg0 data 45 total) (logand -16 (+ v1-38 15))) - ) - (the-as nav-mesh 0) - ) + (+! (-> arg0 data 45 total) (logand -16 (+ v1-38 15)))) + (the-as nav-mesh 0)) (defmethod set-current-poly! ((this nav-control) (arg0 nav-poly)) (set! (-> this current-poly) arg0) (logior! (-> this flags) (nav-control-flags navcf9)) 0 - (none) - ) + (none)) (defmethod nav-control-method-30 ((this nav-control) (arg0 vector) (arg1 vector) (arg2 vector)) (let ((s5-0 (the-as sphere #f))) (let ((f30-0 -0.000001)) (countdown (s1-0 (-> this num-spheres)) (let* ((s0-0 (-> this sphere s1-0)) - (f0-1 (ray-circle-intersect arg0 arg1 (the-as vector (&-> s0-0 x)) (-> s0-0 w))) - ) + (f0-1 (ray-circle-intersect arg0 arg1 (the-as vector (&-> s0-0 x)) (-> s0-0 w)))) (when (< f30-0 f0-1) (set! s5-0 s0-0) - (set! f30-0 f0-1) - ) - ) - ) - (set! (-> arg2 x) f30-0) - ) - s5-0 - ) - ) + (set! f30-0 f0-1)))) + (set! (-> arg2 x) f30-0)) + s5-0)) (defmethod intersect-ray-line-segment? ((this nav-control) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) - (ray-line-segment-intersection? arg0 arg1 arg2 arg3) - ) + (ray-line-segment-intersection? arg0 arg1 arg2 arg3)) (defun add-nav-sphere ((arg0 nav-control) (arg1 vector)) (when (< (-> arg0 num-spheres) (-> arg0 max-spheres)) (let* ((s4-0 (-> arg0 sphere (-> arg0 num-spheres))) (f1-0 (vector-vector-xz-distance-squared arg1 (-> arg0 shape trans))) (f0-1 (+ (-> arg1 w) (-> arg0 shape nav-radius))) - (f2-2 (+ 40960.0 f0-1)) - ) + (f2-2 (+ 40960.0 f0-1))) (when (< f1-0 (* f2-2 f2-2)) (vector-! (the-as vector s4-0) arg1 (-> arg0 mesh origin)) (set! (-> s4-0 w) f0-1) - (+! (-> arg0 num-spheres) 1) - ) - ) - ) + (+! (-> arg0 num-spheres) 1)))) 0 - (none) - ) + (none)) (defun add-collide-shape-spheres ((arg0 nav-control) (arg1 collide-shape) (arg2 vector)) (when (logtest? (-> arg1 nav-flags) (nav-flags navf0)) (set! (-> arg2 quad) (-> arg1 root-prim prim-core world-sphere quad)) (set! (-> arg2 w) (-> arg1 nav-radius)) (let ((s4-0 arg0) - (s3-0 arg2) - ) + (s3-0 arg2)) (when (< (-> s4-0 num-spheres) (-> s4-0 max-spheres)) (let* ((s2-0 (-> s4-0 sphere (-> s4-0 num-spheres))) (f1-0 (vector-vector-xz-distance-squared s3-0 (-> s4-0 shape trans))) (f0-2 (+ (-> s3-0 w) (-> s4-0 shape nav-radius))) - (f2-2 (+ 40960.0 f0-2)) - ) + (f2-2 (+ 40960.0 f0-2))) (when (< f1-0 (* f2-2 f2-2)) (vector-! (the-as vector s2-0) s3-0 (-> s4-0 mesh origin)) (set! (-> s2-0 w) f0-2) - (+! (-> s4-0 num-spheres) 1) - ) - ) - ) - ) - 0 - ) + (+! (-> s4-0 num-spheres) 1))))) + 0) (when (logtest? (-> arg1 nav-flags) (nav-flags navf1)) (let ((s5-1 (-> arg1 process nav extra-nav-sphere))) (when (< (-> arg0 num-spheres) (-> arg0 max-spheres)) (let* ((s4-1 (-> arg0 sphere (-> arg0 num-spheres))) (f1-1 (vector-vector-xz-distance-squared s5-1 (-> arg0 shape trans))) (f0-4 (+ (-> s5-1 w) (-> arg0 shape nav-radius))) - (f2-7 (+ 40960.0 f0-4)) - ) + (f2-7 (+ 40960.0 f0-4))) (when (< f1-1 (* f2-7 f2-7)) (vector-! (the-as vector s4-1) s5-1 (-> arg0 mesh origin)) (set! (-> s4-1 w) f0-4) - (+! (-> arg0 num-spheres) 1) - ) - ) - ) - ) - 0 - ) - (none) - ) + (+! (-> arg0 num-spheres) 1))))) + 0) + (none)) (defmethod nav-control-method-28 ((this nav-control) (arg0 collide-kind)) (local-vars @@ -1980,22 +1312,16 @@ (sv-80 nav-control) (sv-96 sphere) (sv-112 vector) - (sv-128 sphere) - ) + (sv-128 sphere)) (set! (-> this num-spheres) 0) (let ((s4-0 (-> this mesh user-list)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (when (and *target* (or (logtest? (-> this flags) (nav-control-flags navcf11)) (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) (let ((s2-0 this) - (s1-0 (-> *target* control)) - ) + (s1-0 (-> *target* control))) (let ((s0-0 s3-0)) (when (logtest? (-> s1-0 nav-flags) (nav-flags navf0)) (set! (-> s0-0 quad) (-> s1-0 root-prim prim-core world-sphere quad)) @@ -2005,63 +1331,40 @@ (set! sv-48 (-> sv-32 sphere (-> sv-32 num-spheres))) (let* ((f1-0 (vector-vector-xz-distance-squared s0-0 (-> sv-32 shape trans))) (f0-2 (+ (-> s0-0 w) (-> sv-32 shape nav-radius))) - (f2-2 (+ 40960.0 f0-2)) - ) + (f2-2 (+ 40960.0 f0-2))) (when (< f1-0 (* f2-2 f2-2)) (vector-! (the-as vector sv-48) s0-0 (-> sv-32 mesh origin)) (set! (-> sv-48 w) f0-2) - (+! (-> sv-32 num-spheres) 1) - ) - ) - ) - 0 - ) - ) + (+! (-> sv-32 num-spheres) 1)))) + 0)) (when (logtest? (-> s1-0 nav-flags) (nav-flags navf1)) (let ((s1-1 (-> s1-0 process nav extra-nav-sphere))) (when (< (-> s2-0 num-spheres) (-> s2-0 max-spheres)) (let* ((s0-1 (-> s2-0 sphere (-> s2-0 num-spheres))) (f1-1 (vector-vector-xz-distance-squared s1-1 (-> s2-0 shape trans))) (f0-4 (+ (-> s1-1 w) (-> s2-0 shape nav-radius))) - (f2-7 (+ 40960.0 f0-4)) - ) + (f2-7 (+ 40960.0 f0-4))) (when (< f1-1 (* f2-7 f2-7)) (vector-! (the-as vector s0-1) s1-1 (-> s2-0 mesh origin)) (set! (-> s0-1 w) f0-4) - (+! (-> s2-0 num-spheres) 1) - ) - ) - ) - ) - 0 - ) - ) - ) + (+! (-> s2-0 num-spheres) 1))))) + 0))) (when (logtest? (-> this flags) (nav-control-flags navcf13)) (countdown (s2-1 (-> this mesh static-sphere-count)) (let ((s1-2 this) - (s0-2 (-> this mesh static-sphere s2-1)) - ) + (s0-2 (-> this mesh static-sphere s2-1))) (when (< (-> s1-2 num-spheres) (-> s1-2 max-spheres)) (set! sv-64 (-> s1-2 sphere (-> s1-2 num-spheres))) (let* ((f1-2 (vector-vector-xz-distance-squared (the-as vector s0-2) (-> s1-2 shape trans))) (f0-6 (+ (-> s0-2 trans w) (-> s1-2 shape nav-radius))) - (f2-12 (+ 40960.0 f0-6)) - ) + (f2-12 (+ 40960.0 f0-6))) (when (< f1-2 (* f2-12 f2-12)) (vector-! (the-as vector sv-64) (the-as vector s0-2) (-> s1-2 mesh origin)) (set! (-> sv-64 w) f0-6) - (+! (-> s1-2 num-spheres) 1) - ) - ) - ) - ) - 0 - ) - ) + (+! (-> s1-2 num-spheres) 1))))) + 0)) (let* ((v1-71 (-> s4-0 alive-list next0)) - (s2-2 (-> v1-71 next0)) - ) + (s2-2 (-> v1-71 next0))) (while (!= v1-71 (-> s4-0 alive-list-end)) (let ((s0-3 (the-as collide-shape (-> (the-as connection v1-71) param3)))) (when (not (or (= s0-3 (-> this shape)) (not (logtest? arg0 (-> s0-3 root-prim prim-core collide-as))))) @@ -2075,115 +1378,83 @@ (set! sv-96 (-> sv-80 sphere (-> sv-80 num-spheres))) (let* ((f1-3 (vector-vector-xz-distance-squared sv-112 (-> sv-80 shape trans))) (f0-9 (+ (-> sv-112 w) (-> sv-80 shape nav-radius))) - (f2-17 (+ 40960.0 f0-9)) - ) + (f2-17 (+ 40960.0 f0-9))) ;; HACK: added a NaN check here. it seems like some enemies have bogus positions (maybe on their first frame?) ;; and in these cases we shouldn't bother including them in the mesh. (when (and (< f1-3 (* f2-17 f2-17)) (not (is-nan? (-> sv-112 x)))) (let ((v1-94 sv-96) - (a0-47 (-> sv-80 mesh origin)) - ) - (vector-! (the-as vector v1-94) sv-112 a0-47) - ) + (a0-47 (-> sv-80 mesh origin))) + (vector-! (the-as vector v1-94) sv-112 a0-47)) (set! (-> sv-96 w) f0-9) - (+! (-> sv-80 num-spheres) 1) - ) - ) - ) - 0 - ) + (+! (-> sv-80 num-spheres) 1)))) + 0) (when (logtest? (-> s0-3 nav-flags) (nav-flags navf1)) (let ((s0-4 (-> s0-3 process nav extra-nav-sphere))) (when (< (-> s1-3 num-spheres) (-> s1-3 max-spheres)) (set! sv-128 (-> s1-3 sphere (-> s1-3 num-spheres))) (let* ((f1-4 (vector-vector-xz-distance-squared s0-4 (-> s1-3 shape trans))) (f0-11 (+ (-> s0-4 w) (-> s1-3 shape nav-radius))) - (f2-22 (+ 40960.0 f0-11)) - ) + (f2-22 (+ 40960.0 f0-11))) (when (< f1-4 (* f2-22 f2-22)) (vector-! (the-as vector sv-128) s0-4 (-> s1-3 mesh origin)) (set! (-> sv-128 w) f0-11) - (+! (-> s1-3 num-spheres) 1) - ) - ) - ) - ) - 0 - ) - ) - ) - ) + (+! (-> s1-3 num-spheres) 1))))) + 0)))) (set! v1-71 s2-2) - (set! s2-2 (-> s2-2 next0)) - ) - ) - ) + (set! s2-2 (-> s2-2 next0))))) 0 - (none) - ) + (none)) (defmethod nav-control-method-35 ((this nav-control) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float)) (let ((v1-0 (new 'stack-no-clear 'vector))) (vector-! v1-0 arg1 (-> this mesh origin)) - (nav-control-method-32 this arg0 v1-0 arg2 arg3 arg4) - ) - (none) - ) + (nav-control-method-32 this arg0 v1-0 arg2 arg3 arg4)) + (none)) (deftype cfs-travel-vec (structure) - ((dir vector :inline) - (delta-angle float) - ) - ) - + ((dir vector :inline) + (delta-angle float))) (deftype cfs-work (structure) - ((desired-travel-dist float) - (desired-angle float) - (max-dist float) - (old-angle float) - (modified int32) - (blocked-mask uint64) - (travel vector :inline) - (current vector :inline) - (new-travel cfs-travel-vec 2 :inline) - (temp-travel cfs-travel-vec 2 :inline) - (prev-dir vector :inline) - (attempt-dir vector :inline) - (tangent vector 2 :inline) - ) - ) - + ((desired-travel-dist float) + (desired-angle float) + (max-dist float) + (old-angle float) + (modified int32) + (blocked-mask uint64) + (travel vector :inline) + (current vector :inline) + (new-travel cfs-travel-vec 2 :inline) + (temp-travel cfs-travel-vec 2 :inline) + (prev-dir vector :inline) + (attempt-dir vector :inline) + (tangent vector 2 :inline))) (deftype nav-control-cfs-work (structure) - ((in-dir vector :inline) - (right-dir vector :inline) - (best-dir vector 2 :inline) - (temp-dir vector 2 :inline) - (away-dir vector :inline) - (best-dir-angle degrees 2) - (ignore-mask uint64) - (initial-ignore-mask uint64) - (i-sphere int32) - (i-first-sphere int32) - (i-inside-sphere int32) - (inside-sphere-dist float) - (sign float) - (travel-len float) - (dist2 float) - (inside-dist float) - (rand-angle float) - (dir-update basic) - (debug-offset vector :inline) - ) - ) - + ((in-dir vector :inline) + (right-dir vector :inline) + (best-dir vector 2 :inline) + (temp-dir vector 2 :inline) + (away-dir vector :inline) + (best-dir-angle degrees 2) + (ignore-mask uint64) + (initial-ignore-mask uint64) + (i-sphere int32) + (i-first-sphere int32) + (i-inside-sphere int32) + (inside-sphere-dist float) + (sign float) + (travel-len float) + (dist2 float) + (inside-dist float) + (rand-angle float) + (dir-update basic) + (debug-offset vector :inline))) (defun circle-tangent-directions ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector)) (let ((s2-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (vector-! s2-0 arg1 arg0) (set! (-> s2-0 y) 0.0) (vector-normalize-copy! s3-0 s2-0 1.0) @@ -2191,11 +1462,8 @@ (set! (-> s5-0 x) (-> s3-0 z)) (set! (-> s5-0 z) (- (-> s3-0 x))) (let ((f0-4 (-> arg1 w)) - (f1-1 (vector-dot s3-0 s2-0)) - ) - (if (< f1-1 f0-4) - (set! f0-4 f1-1) - ) + (f1-1 (vector-dot s3-0 s2-0))) + (if (< f1-1 f0-4) (set! f0-4 f1-1)) (let* ((f2-0 f1-1) (f2-2 (* f2-0 f2-0)) (f3-0 f0-4) @@ -2203,56 +1471,35 @@ (f3-4 (/ 1.0 f1-1)) (f1-3 (* f2-4 f3-4)) (f30-0 (* f0-4 f3-4)) - (s2-1 (new 'stack-no-clear 'vector)) - ) + (s2-1 (new 'stack-no-clear 'vector))) (vector-float*! s2-1 s3-0 f1-3) (vector+*! arg2 s2-1 s5-0 f30-0) - (vector+*! arg3 s2-1 s5-0 (- f30-0)) - ) - ) - ) - ) + (vector+*! arg3 s2-1 s5-0 (- f30-0)))))) (defun find-closest-circle-ray-intersection ((arg0 vector) (arg1 vector) (arg2 float) (arg3 int) (arg4 (inline-array vector)) (arg5 int)) (let ((f30-0 1.0) - (gp-0 -1) - ) + (gp-0 -1)) (let ((s1-0 (new 'stack-no-clear 'vector))) (vector-float*! s1-0 arg1 arg2) (dotimes (s0-0 arg3) (when (not (logtest? arg5 (ash 1 s0-0))) (let* ((v1-7 (-> arg4 s0-0)) - (f0-2 (ray-circle-intersect arg0 s1-0 v1-7 (-> v1-7 w))) - ) + (f0-2 (ray-circle-intersect arg0 s1-0 v1-7 (-> v1-7 w)))) (when (and (>= f0-2 0.0) (< f0-2 f30-0)) (set! f30-0 f0-2) - (set! gp-0 s0-0) - ) - ) - ) - ) - ) - gp-0 - ) - ) + (set! gp-0 s0-0)))))) + gp-0)) (defun sign-bit ((arg0 int)) (local-vars (v1-1 int)) - (let ((v1-0 arg0)) - (shift-arith-right-32 v1-1 v1-0 31) - ) - (logand v1-1 1) - ) + (let ((v1-0 arg0)) (shift-arith-right-32 v1-1 v1-0 31)) + (logand v1-1 1)) (defun compute-dir-parm ((arg0 vector) (arg1 vector) (arg2 vector)) (local-vars (a2-3 int)) (let ((v1-0 (new 'static 'vector :x 1.0 :y -1.0))) - (let ((a2-2 (vector-dot arg0 arg2))) - (shift-arith-right-32 a2-3 a2-2 31) - ) - (* (-> v1-0 data (logand a2-3 1)) (- 1.0 (vector-dot arg0 arg1))) - ) - ) + (let ((a2-2 (vector-dot arg0 arg2))) (shift-arith-right-32 a2-3 a2-2 31)) + (* (-> v1-0 data (logand a2-3 1)) (- 1.0 (vector-dot arg0 arg1))))) (defmethod nav-control-method-32 ((this nav-control) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float)) (local-vars (v0-3 symbol) (v1-38 int) (a0-29 int) (a3-7 int) (sv-208 sphere)) @@ -2275,52 +1522,37 @@ (set! sv-208 (-> this sphere s0-0)) (set! (-> gp-0 dist2) (vector-vector-xz-distance-squared arg1 sv-208)) (let ((f0-10 (-> gp-0 dist2)) - (f1-0 (-> sv-208 w)) - ) + (f1-0 (-> sv-208 w))) (when (< f0-10 (* f1-0 f1-0)) (vector-! (the-as vector (-> gp-0 temp-dir)) arg1 (the-as vector sv-208)) (set! (-> gp-0 temp-dir 0 y) 0.0) (if (< 0.0 (vector-dot (the-as vector (-> gp-0 temp-dir)) (-> gp-0 in-dir))) - (+! (-> gp-0 initial-ignore-mask) (ash 1 s0-0)) - ) + (+! (-> gp-0 initial-ignore-mask) (ash 1 s0-0))) (set! (-> gp-0 inside-dist) (- (-> sv-208 w) (sqrtf (-> gp-0 dist2)))) (when (< (-> gp-0 inside-sphere-dist) (-> gp-0 inside-dist)) (set! (-> gp-0 i-inside-sphere) s0-0) - (set! (-> gp-0 inside-sphere-dist) (-> gp-0 inside-dist)) - ) - ) - ) - ) - (set! (-> gp-0 i-first-sphere) (find-closest-circle-ray-intersection - arg1 - (-> gp-0 in-dir) - (-> gp-0 travel-len) - (-> this num-spheres) - (-> this sphere) - (the-as int (-> gp-0 initial-ignore-mask)) - ) - ) + (set! (-> gp-0 inside-sphere-dist) (-> gp-0 inside-dist)))))) + (set! (-> gp-0 i-first-sphere) + (find-closest-circle-ray-intersection arg1 + (-> gp-0 in-dir) + (-> gp-0 travel-len) + (-> this num-spheres) + (-> this sphere) + (the-as int (-> gp-0 initial-ignore-mask)))) (when (= (-> gp-0 i-first-sphere) -1) (set! (-> arg0 quad) (-> arg2 quad)) (set! v0-3 #f) (b! #t cfg-46 :delay (nop!)) - (the-as none 0) - ) + (the-as none 0)) (+! (-> gp-0 initial-ignore-mask) (ash 1 (-> gp-0 i-first-sphere))) (let ((a1-9 (-> this sphere (-> gp-0 i-first-sphere)))) - (circle-tangent-directions arg1 a1-9 (the-as vector (-> gp-0 temp-dir)) (-> gp-0 temp-dir 1)) - ) + (circle-tangent-directions arg1 a1-9 (the-as vector (-> gp-0 temp-dir)) (-> gp-0 temp-dir 1))) (dotimes (v1-31 2) - (let ((a0-28 (vector-dot (-> gp-0 right-dir) (-> gp-0 temp-dir v1-31)))) - (shift-arith-right-32 a0-29 a0-28 31) - ) + (let ((a0-28 (vector-dot (-> gp-0 right-dir) (-> gp-0 temp-dir v1-31)))) (shift-arith-right-32 a0-29 a0-28 31)) (let ((a0-30 (logand a0-29 1)) - (f0-21 (- 1.0 (vector-dot (-> gp-0 in-dir) (-> gp-0 temp-dir v1-31)))) - ) + (f0-21 (- 1.0 (vector-dot (-> gp-0 in-dir) (-> gp-0 temp-dir v1-31))))) (set! (-> gp-0 best-dir a0-30 quad) (-> gp-0 temp-dir v1-31 quad)) - (set! (-> gp-0 best-dir-angle a0-30) f0-21) - ) - ) + (set! (-> gp-0 best-dir-angle a0-30) f0-21))) 0 (set! (-> gp-0 sign) 1.0) (dotimes (s1-1 2) @@ -2330,47 +1562,31 @@ (b! #t cfg-31 :delay (nop!)) (label cfg-22) (+! (-> gp-0 ignore-mask) (ash 1 v1-38)) - (circle-tangent-directions - arg1 - (-> this sphere v1-38) - (the-as vector (-> gp-0 temp-dir)) - (-> gp-0 temp-dir 1) - ) + (circle-tangent-directions arg1 (-> this sphere v1-38) (the-as vector (-> gp-0 temp-dir)) (-> gp-0 temp-dir 1)) (set! (-> gp-0 dir-update) #f) (dotimes (v1-40 2) (let ((f0-23 (-> gp-0 sign)) (a1-22 (-> gp-0 temp-dir v1-40)) (a0-39 (-> gp-0 in-dir)) (a3-4 (-> gp-0 right-dir)) - (a2-10 (new 'static 'vector :x 1.0 :y -1.0)) - ) - (let ((a3-6 (vector-dot a1-22 a3-4))) - (shift-arith-right-32 a3-7 a3-6 31) - ) + (a2-10 (new 'static 'vector :x 1.0 :y -1.0))) + (let ((a3-6 (vector-dot a1-22 a3-4))) (shift-arith-right-32 a3-7 a3-6 31)) (let ((f0-24 (* f0-23 (* (-> a2-10 data (logand a3-7 1)) (- 1.0 (vector-dot a1-22 a0-39)))))) (when (< (-> gp-0 best-dir-angle s1-1) f0-24) (set! (-> gp-0 best-dir s1-1 quad) (-> gp-0 temp-dir v1-40 quad)) (set! (-> gp-0 best-dir-angle s1-1) f0-24) - (set! (-> gp-0 dir-update) #t) - ) - ) - ) - ) + (set! (-> gp-0 dir-update) #t))))) (label cfg-31) (when (-> gp-0 dir-update) - (set! v1-38 (find-closest-circle-ray-intersection - arg1 - (-> gp-0 best-dir s1-1) - (-> gp-0 travel-len) - (-> this num-spheres) - (-> this sphere) - (the-as int (-> gp-0 ignore-mask)) - ) - ) - (b! (!= v1-38 -1) cfg-22 :delay (nop!)) - ) - (set! (-> gp-0 sign) (* -1.0 (-> gp-0 sign))) - ) + (set! v1-38 + (find-closest-circle-ray-intersection arg1 + (-> gp-0 best-dir s1-1) + (-> gp-0 travel-len) + (-> this num-spheres) + (-> this sphere) + (the-as int (-> gp-0 ignore-mask)))) + (b! (!= v1-38 -1) cfg-22 :delay (nop!))) + (set! (-> gp-0 sign) (* -1.0 (-> gp-0 sign)))) (when (!= (-> gp-0 i-inside-sphere) -1) (let ((s2-1 (-> this sphere (-> gp-0 i-inside-sphere)))) (vector-! (-> gp-0 away-dir) arg1 (the-as vector s2-1)) @@ -2378,81 +1594,49 @@ (when (>= 40.96 (vector-length (-> gp-0 away-dir))) (set! (-> gp-0 rand-angle) (* 65536.0 (rand-vu))) (set! (-> gp-0 away-dir x) (cos (-> gp-0 rand-angle))) - (set! (-> gp-0 away-dir z) (sin (-> gp-0 rand-angle))) - ) + (set! (-> gp-0 away-dir z) (sin (-> gp-0 rand-angle)))) (vector-normalize! (-> gp-0 away-dir) 1.0) (let ((f30-2 (/ (-> gp-0 inside-sphere-dist) (-> s2-1 w)))) (vector-lerp! (the-as vector (-> gp-0 best-dir)) (the-as vector (-> gp-0 best-dir)) (-> gp-0 away-dir) f30-2) - (vector-lerp! (-> gp-0 best-dir 1) (-> gp-0 best-dir 1) (-> gp-0 away-dir) f30-2) - ) - ) + (vector-lerp! (-> gp-0 best-dir 1) (-> gp-0 best-dir 1) (-> gp-0 away-dir) f30-2))) (vector-normalize! (the-as vector (-> gp-0 best-dir)) 1.0) - (vector-normalize! (-> gp-0 best-dir 1) 1.0) - ) + (vector-normalize! (-> gp-0 best-dir 1) 1.0)) (let ((f30-3 (vector-dot (-> gp-0 in-dir) (the-as vector (-> gp-0 best-dir)))) - (f28-0 (vector-dot (-> gp-0 in-dir) (-> gp-0 best-dir 1))) - ) + (f28-0 (vector-dot (-> gp-0 in-dir) (-> gp-0 best-dir 1)))) (when (< (fmax f30-3 f28-0) (cos 1820.4445)) (set! f30-3 (vector-dot arg3 (the-as vector (-> gp-0 best-dir)))) - (set! f28-0 (vector-dot arg3 (-> gp-0 best-dir 1))) - ) - (vector-float*! - arg0 - (-> gp-0 best-dir (if (< f28-0 f30-3) - 0 - 1 - ) - ) - (-> gp-0 travel-len) - ) - ) - ) + (set! f28-0 (vector-dot arg3 (-> gp-0 best-dir 1)))) + (vector-float*! arg0 (-> gp-0 best-dir (if (< f28-0 f30-3) 0 1)) (-> gp-0 travel-len)))) 0 (set! v0-3 #t) (label cfg-46) - v0-3 - ) + v0-3) (defmethod nav-control-method-23 ((this nav-control) (arg0 vector) (arg1 check-vector-collision-with-nav-spheres-info)) (let ((s2-1 (vector-! (new 'stack-no-clear 'vector) (-> this shape trans) (-> this mesh origin))) - (f30-0 -1.0) - ) + (f30-0 -1.0)) (let ((s3-0 -1)) (countdown (s1-0 (-> this num-spheres)) (let* ((s0-0 (-> this sphere s1-0)) - (f0-1 (ray-circle-intersect s2-1 arg0 (the-as vector (&-> s0-0 x)) (-> s0-0 w))) - ) + (f0-1 (ray-circle-intersect s2-1 arg0 (the-as vector (&-> s0-0 x)) (-> s0-0 w)))) (when (>= f0-1 0.0) (let ((v1-5 (new 'stack-no-clear 'vector))) (vector-! v1-5 (the-as vector (&-> s0-0 x)) s2-1) (when (>= (vector-dot v1-5 arg0) 0.0) (when (or (< f30-0 0.0) (< f0-1 f30-0)) (set! f30-0 f0-1) - (set! s3-0 s1-0) - ) - ) - ) - ) - ) - ) + (set! s3-0 s1-0))))))) (when arg1 (set! (-> arg1 u) f30-0) (when (>= f30-0 0.0) (vector+float*! (-> arg1 intersect) (-> this shape trans) arg0 f30-0) (let ((a1-4 (-> this sphere s3-0)) - (v1-19 (new 'stack-no-clear 'vector)) - ) + (v1-19 (new 'stack-no-clear 'vector))) (vector+! v1-19 (the-as vector (&-> a1-4 x)) (-> this mesh origin)) - (vector-! (-> arg1 normal) (-> arg1 intersect) v1-19) - ) + (vector-! (-> arg1 normal) (-> arg1 intersect) v1-19)) (set! (-> arg1 normal w) 1.0) - (vector-normalize! (-> arg1 normal) 1.0) - ) - ) - ) - f30-0 - ) - ) + (vector-normalize! (-> arg1 normal) 1.0)))) + f30-0)) (defmethod nav-control-method-33 ((this nav-control) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float)) (let ((f30-0 (vector-xz-length (-> this travel)))) @@ -2463,15 +1647,8 @@ (logior! (-> this flags) (nav-control-flags navcf17)) (set-time! (-> this block-time)) (+! (-> this block-count) 1.0) - (if (-> this block-event) - (send-event (the-as process-tree (-> this process)) (the-as symbol (-> this block-event)) this) - ) - ) - ) - #t - ) - ) - ) + (if (-> this block-event) (send-event (the-as process-tree (-> this process)) (the-as symbol (-> this block-event)) this)))) + #t))) (define *debug-ray-test* (the-as nav-ray #f)) @@ -2490,88 +1667,62 @@ (let ((f30-0 (* arg3 (seconds-per-frame))) (s0-0 arg1) (s1-0 arg2) - (s2-0 deg-diff) - ) + (s2-0 deg-diff)) (set! sv-48 (y-angle s0-0)) (let* ((a1-1 (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s1-0 (-> s0-0 trans)))) - (f28-0 (s2-0 sv-48 a1-1)) - ) + (f28-0 (s2-0 sv-48 a1-1))) (cond ((or (vector= arg2 (-> this target-pos)) (< (fabs f28-0) 364.0889)) (logior! (-> this flags) (nav-control-flags navcf21)) - (set! (-> arg0 quad) (-> arg2 quad)) - ) + (set! (-> arg0 quad) (-> arg2 quad))) (else - (let ((s2-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> arg1 quat)))) - (vector-rotate-y! s2-1 s2-1 (fmax (fmin f28-0 f30-0) (- f30-0))) - (vector-normalize! s2-1 819.2) - (logclear! (-> this flags) (nav-control-flags navcf21)) - (vector+! arg0 (-> arg1 trans) s2-1) - ) - (when (or (not (nav-control-method-16 this arg0)) - (logtest? (nav-control-flags navcf17) (-> this flags)) - (not (logtest? (-> this flags) (nav-control-flags navcf10))) - ) - (logior! (-> this flags) (nav-control-flags navcf21)) - (vector-! (-> this travel) arg2 (-> arg1 trans)) - (set! (-> arg0 quad) (-> arg2 quad)) - ) - ) - ) - ) - ) - (none) - ) + (let ((s2-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> arg1 quat)))) + (vector-rotate-y! s2-1 s2-1 (fmax (fmin f28-0 f30-0) (- f30-0))) + (vector-normalize! s2-1 819.2) + (logclear! (-> this flags) (nav-control-flags navcf21)) + (vector+! arg0 (-> arg1 trans) s2-1)) + (when (or (not (nav-control-method-16 this arg0)) + (logtest? (nav-control-flags navcf17) (-> this flags)) + (not (logtest? (-> this flags) (nav-control-flags navcf10)))) + (logior! (-> this flags) (nav-control-flags navcf21)) + (vector-! (-> this travel) arg2 (-> arg1 trans)) + (set! (-> arg0 quad) (-> arg2 quad))))))) + (none)) (defmethod nav-control-method-16 ((this nav-control) (arg0 vector)) - (find-poly-fast - (-> this mesh) - (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin)) - (-> this nearest-y-threshold) - ) - ) + (find-poly-fast (-> this mesh) + (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin)) + (-> this nearest-y-threshold))) (defmethod nav-control-method-21 ((this nav-control) (arg0 vector)) - (find-poly-fast - (-> this mesh) - (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin)) - (-> this nearest-y-threshold) - ) - ) + (find-poly-fast (-> this mesh) + (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin)) + (-> this nearest-y-threshold))) (defmethod nav-control-method-22 ((this nav-control) (arg0 vector) (arg1 float)) - (the-as symbol (and (find-poly-fast - (-> this mesh) - (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin)) - (-> this nearest-y-threshold) - ) - (< (-> arg0 y) (+ (-> this mesh origin y) arg1)) - ) - ) - ) + (the-as symbol + (and (find-poly-fast (-> this mesh) + (vector-! (new 'stack-no-clear 'vector) arg0 (-> this mesh origin)) + (-> this nearest-y-threshold)) + (< (-> arg0 y) (+ (-> this mesh origin y) arg1))))) (defun debug-nav-validate-current-poly ((arg0 nav-mesh) (arg1 nav-poly) (arg2 vector)) (when (not (point-in-poly? arg0 arg1 arg2)) (let ((s3-0 (new 'stack-no-clear 'vector))) (project-point-into-tri-2d arg0 arg1 s3-0 arg2) - (vector-vector-xz-distance arg2 s3-0) - ) - #f - ) - ) + (vector-vector-xz-distance arg2 s3-0)) + #f)) (defmethod nav-control-method-26 ((this nav-control)) 0 - (none) - ) + (none)) (defmethod nav-control-method-27 ((this nav-control)) (local-vars (v1-7 symbol)) (cond ((-> this current-poly) (let ((s4-0 (-> this mesh)) - (s5-0 (new 'stack-no-clear 'nav-ray)) - ) + (s5-0 (new 'stack-no-clear 'nav-ray))) (let ((s3-0 0)) (set! (-> s5-0 current-poly) (-> this current-poly)) (vector-! (-> s5-0 current-pos) (-> this prev-pos) (-> s4-0 origin)) @@ -2580,50 +1731,28 @@ (until v1-7 (+! s3-0 1) (move-along-nav-ray! s4-0 s5-0) - (set! v1-7 (or (>= s3-0 15) (-> s5-0 terminated))) - ) - ) + (set! v1-7 (or (>= s3-0 15) (-> s5-0 terminated))))) (set! (-> this current-poly) (-> s5-0 current-poly)) (when (-> s5-0 reached-dest) - (if (not (point-in-poly? s4-0 (-> s5-0 current-poly) (-> s5-0 dest-pos))) - (set! (-> s5-0 reached-dest) #f) - ) - ) + (if (not (point-in-poly? s4-0 (-> s5-0 current-poly) (-> s5-0 dest-pos))) (set! (-> s5-0 reached-dest) #f))) (cond - ((-> s5-0 reached-dest) - (set! (-> this prev-pos quad) (-> this shape trans quad)) - ) + ((-> s5-0 reached-dest) (set! (-> this prev-pos quad) (-> this shape trans quad))) (else - (set! (-> this prev-pos quad) (-> this shape trans quad)) - (set! (-> this current-poly) (find-poly this (-> this shape trans))) - ) - ) - ) - 0 - ) + (set! (-> this prev-pos quad) (-> this shape trans quad)) + (set! (-> this current-poly) (find-poly this (-> this shape trans)))))) + 0) (else - (set! (-> this prev-pos quad) (-> this shape trans quad)) - (set! (-> this current-poly) (find-poly this (-> this shape trans))) - ) - ) + (set! (-> this prev-pos quad) (-> this shape trans quad)) + (set! (-> this current-poly) (find-poly this (-> this shape trans))))) (nav-control-method-26 this) 0 - (none) - ) - -(defmethod nav-mesh-method-16 ((this nav-mesh) - (arg0 vector) - (arg1 nav-poly) - (arg2 vector) - (arg3 symbol) - (arg4 float) - (arg5 clip-travel-vector-to-mesh-return-info) - ) + (none)) + +(defmethod nav-mesh-method-16 ((this nav-mesh) (arg0 vector) (arg1 nav-poly) (arg2 vector) (arg3 symbol) (arg4 float) (arg5 clip-travel-vector-to-mesh-return-info)) (local-vars (v1-10 symbol) (sv-96 symbol) (sv-112 int) (sv-128 int)) (when arg5 (set! (-> arg5 found-boundary) #f) - (set! (-> arg5 gap-poly) #f) - ) + (set! (-> arg5 gap-poly) #f)) (let ((s0-0 (new 'stack-no-clear 'nav-ray))) (set! sv-96 (the-as symbol #f)) (set! sv-112 0) @@ -2636,8 +1765,7 @@ (until v1-10 (set! sv-128 (+ sv-128 1)) (move-along-nav-ray! this s0-0) - (set! v1-10 (or (>= sv-128 15) (or (>= (-> s0-0 len) (fmax 20480.0 arg4)) (-> s0-0 terminated)))) - ) + (set! v1-10 (or (>= sv-128 15) (or (>= (-> s0-0 len) (fmax 20480.0 arg4)) (-> s0-0 terminated))))) (cond ((and (-> s0-0 hit-boundary) (and (< (-> s0-0 len) arg4) (!= (-> s0-0 last-edge) -1) (< sv-112 1))) (set! sv-112 (+ sv-112 1)) @@ -2653,8 +1781,7 @@ (f4-4 (sqrtf (+ f4-2 (* f5-0 f5-0)))) (f4-6 (/ 1.0 f4-4)) (f2-2 (* f2-1 f4-6)) - (f3-1 (* f3-0 f4-6)) - ) + (f3-1 (* f3-0 f4-6))) (when arg5 (set! (-> arg5 found-boundary) #t) (vector+! (-> arg5 intersection) (-> s0-0 current-pos) (-> this origin)) @@ -2664,67 +1791,37 @@ (set! (-> arg5 poly) (-> s0-0 current-poly)) (set! (-> arg5 edge) (-> s0-0 last-edge)) (vector+! (-> arg5 vert-0) (the-as vector v1-22) (-> this origin)) - (vector+! (-> arg5 vert-1) (the-as vector a0-15) (-> this origin)) - ) + (vector+! (-> arg5 vert-1) (the-as vector a0-15) (-> this origin))) (set! (-> s0-0 dest-pos quad) (-> s0-0 current-pos quad)) (cond (arg3 - (let* ((f4-9 (* 1.01 (+ (* f2-2 f1-5) (* f3-1 f0-4)))) - (f1-6 (- f1-5 (* f2-2 f4-9))) - (f0-5 (- f0-4 (* f3-1 f4-9))) - ) - (+! (-> s0-0 dest-pos x) f1-6) - (+! (-> s0-0 dest-pos z) f0-5) - ) - ) - (else - (set! sv-96 #t) - sv-96 - ) - ) - ) - ) - ((-> s0-0 hit-gap) - (if arg5 - (set! (-> arg5 gap-poly) (-> s0-0 next-poly)) - ) - (set! sv-96 #t) - sv-96 - ) - (else - (set! sv-96 #t) - sv-96 - ) - ) - ) - (vector-! arg2 (-> s0-0 current-pos) arg0) - ) + (let* ((f4-9 (* 1.01 (+ (* f2-2 f1-5) (* f3-1 f0-4)))) + (f1-6 (- f1-5 (* f2-2 f4-9))) + (f0-5 (- f0-4 (* f3-1 f4-9)))) + (+! (-> s0-0 dest-pos x) f1-6) + (+! (-> s0-0 dest-pos z) f0-5))) + (else (set! sv-96 #t) sv-96)))) + ((-> s0-0 hit-gap) (if arg5 (set! (-> arg5 gap-poly) (-> s0-0 next-poly))) (set! sv-96 #t) sv-96) + (else (set! sv-96 #t) sv-96))) + (vector-! arg2 (-> s0-0 current-pos) arg0)) 0 0 - (none) - ) + (none)) (defmethod nav-control-method-24 ((this nav-control) (arg0 float) (arg1 clip-travel-vector-to-mesh-return-info)) (let ((v1-0 (new 'stack-no-clear 'vector))) (vector-! v1-0 (-> this shape trans) (-> this mesh origin)) - (nav-mesh-method-16 - (-> this mesh) - v1-0 - (-> this current-poly) - (-> this travel) - (not (logtest? (-> this flags) (nav-control-flags navcf12))) - arg0 - arg1 - ) - ) + (nav-mesh-method-16 (-> this mesh) + v1-0 + (-> this current-poly) + (-> this travel) + (not (logtest? (-> this flags) (nav-control-flags navcf12))) + arg0 + arg1)) (when arg1 - (if (-> arg1 gap-poly) - (set! (-> this next-poly) (-> arg1 gap-poly)) - ) - ) + (if (-> arg1 gap-poly) (set! (-> this next-poly) (-> arg1 gap-poly)))) 0 - (none) - ) + (none)) (defun test-xz-point-on-line-segment? ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (let ((v0-2 (>= arg3 (fmin (vector-vector-xz-distance arg0 arg1) (vector-vector-xz-distance arg0 arg2))))) @@ -2740,27 +1837,17 @@ (f4-2 (* f3-5 (- f1-2))) (f5-0 (* f3-5 f0-3)) (f3-7 (- (-> arg0 x) (-> arg1 x))) - (f6-2 (- (-> arg0 z) (-> arg1 z))) - ) + (f6-2 (- (-> arg0 z) (-> arg1 z)))) (when (>= arg3 (fabs (+ (* f3-7 f4-2) (* f6-2 f5-0)))) - (let ((f0-5 (+ (* f3-7 f0-3) (* f6-2 f1-2)))) - (set! v0-2 (and (>= f0-5 0.0) (>= (* f2-5 f2-5) f0-5))) - ) - ) - ) - ) - v0-2 - ) - ) + (let ((f0-5 (+ (* f3-7 f0-3) (* f6-2 f1-2)))) (set! v0-2 (and (>= f0-5 0.0) (>= (* f2-5 f2-5) f0-5))))))) + v0-2)) (defun choose-travel-portal-vertex ((arg0 nav-mesh) (arg1 nav-route-portal) (arg2 nav-poly) (arg3 vector)) (let ((f0-1 (- (-> arg1 vertex 1 x) (-> arg1 vertex 0 x))) - (f1-2 (- (-> arg1 vertex 1 z) (-> arg1 vertex 0 z))) - ) + (f1-2 (- (-> arg1 vertex 1 z) (-> arg1 vertex 0 z)))) 0.0 (let ((s2-0 (new 'stack-no-clear 'nav-route-portal)) - (s1-0 0) - ) + (s1-0 0)) (let* ((s0-0 #f) (f2-2 f0-1) (f2-4 (* f2-2 f2-2)) @@ -2769,13 +1856,10 @@ (f2-8 (/ 1.0 f2-6)) (f30-0 (* f0-1 f2-8)) (f28-0 (* f1-2 f2-8)) - (f26-0 (* -0.5 (+ (* f30-0 (-> arg1 vertex 0 x)) - (* f28-0 (-> arg1 vertex 0 z)) - (+ (* f30-0 (-> arg1 vertex 1 x)) (* f28-0 (-> arg1 vertex 1 z))) - ) - ) - ) - ) + (f26-0 (* -0.5 + (+ (* f30-0 (-> arg1 vertex 0 x)) + (* f28-0 (-> arg1 vertex 0 z)) + (+ (* f30-0 (-> arg1 vertex 1 x)) (* f28-0 (-> arg1 vertex 1 z))))))) (set! (-> s2-0 vertex 0) (-> arg1 vertex 0)) (set! (-> s2-0 vertex 1) (-> arg1 vertex 1)) (set! (-> s2-0 next-poly) (-> arg1 next-poly)) @@ -2785,55 +1869,23 @@ ((-> s2-0 next-poly) (let ((v1-18 0)) (dotimes (a0-2 2) - (if (< 0.0 (+ (* f30-0 (-> s2-0 vertex a0-2 x)) (* f28-0 (-> s2-0 vertex a0-2 z)) f26-0)) - (+! v1-18 1) - ) - ) + (if (< 0.0 (+ (* f30-0 (-> s2-0 vertex a0-2 x)) (* f28-0 (-> s2-0 vertex a0-2 z)) f26-0)) (+! v1-18 1))) (when (= v1-18 2) (set! s1-0 1) - (set! s0-0 #t) - ) + (set! s0-0 #t)) (when (zero? v1-18) (set! s1-0 0) - (set! s0-0 #t) - ) - ) - 0 - ) + (set! s0-0 #t))) + 0) (else - (let ((v1-22 - (if (< (vector-vector-xz-distance (-> s2-0 vertex 0) arg3) (vector-vector-xz-distance (-> s2-0 vertex 1) arg3)) - 0 - 1 - ) - ) - ) - (set! s1-0 (if (< 0.0 (+ (* f30-0 (-> arg1 vertex v1-22 x)) (* f28-0 (-> arg1 vertex v1-22 z)) f26-0)) - 1 - 0 - ) - ) - ) - (set! s0-0 #t) - 0 - ) - ) - ) - ) - s1-0 - ) - ) - ) + (let ((v1-22 (if (< (vector-vector-xz-distance (-> s2-0 vertex 0) arg3) (vector-vector-xz-distance (-> s2-0 vertex 1) arg3)) 0 1))) + (set! s1-0 (if (< 0.0 (+ (* f30-0 (-> arg1 vertex v1-22 x)) (* f28-0 (-> arg1 vertex v1-22 z)) f26-0)) 1 0))) + (set! s0-0 #t) + 0)))) + s1-0))) (defmethod nav-control-method-13 ((this nav-control) (arg0 vector) (arg1 vector)) - (local-vars - (sv-80 vector) - (sv-84 vector) - (sv-88 nav-poly) - (sv-92 vector) - (sv-96 nav-route-portal) - (sv-100 symbol) - ) + (local-vars (sv-80 vector) (sv-84 vector) (sv-88 nav-poly) (sv-92 vector) (sv-96 nav-route-portal) (sv-100 symbol)) (set! sv-80 (new 'stack-no-clear 'vector)) (set! sv-84 (new 'stack-no-clear 'vector)) (set! sv-88 (-> this current-poly)) @@ -2845,116 +1897,79 @@ (let ((s4-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 arg0 (-> this mesh origin)) (set! (-> this target-poly) (find-poly (-> this mesh) s4-0 (-> this nearest-y-threshold) (&-> this flags))) - (if (not (-> this target-poly)) - (set! (-> this target-poly) (-> this current-poly)) - ) - (project-point-into-tri-2d (-> this mesh) (-> this target-poly) sv-92 s4-0) - ) + (if (not (-> this target-poly)) (set! (-> this target-poly) (-> this current-poly))) + (project-point-into-tri-2d (-> this mesh) (-> this target-poly) sv-92 s4-0)) (vector-! (-> this travel) sv-92 sv-80) (setup-portal (-> this mesh) (-> this current-poly) (-> this target-poly) sv-96) (cond - ((not (-> sv-96 next-poly)) - (set! (-> this next-poly) #f) - (set! (-> this portal 0) #f) - (set! (-> this portal 1) #f) - ) + ((not (-> sv-96 next-poly)) (set! (-> this next-poly) #f) (set! (-> this portal 0) #f) (set! (-> this portal 1) #f)) (else - (set! (-> this next-poly) (-> sv-96 next-poly)) - (set! (-> this portal 0) (the-as nav-route-portal (-> sv-96 vertex 0))) - (set! (-> this portal 1) (the-as nav-route-portal (-> sv-96 vertex 1))) - (set! sv-100 #t) - (while (and sv-100 - (-> sv-96 next-poly) - (test-xz-point-on-line-segment? sv-80 (-> sv-96 vertex 0) (-> sv-96 vertex 1) 409.59998) - ) - (when #t - #t - (vector-segment-distance-point! sv-80 (-> sv-96 vertex 0) (-> sv-96 vertex 1) sv-84) + (set! (-> this next-poly) (-> sv-96 next-poly)) + (set! (-> this portal 0) (the-as nav-route-portal (-> sv-96 vertex 0))) + (set! (-> this portal 1) (the-as nav-route-portal (-> sv-96 vertex 1))) + (set! sv-100 #t) + (while (and sv-100 + (-> sv-96 next-poly) + (test-xz-point-on-line-segment? sv-80 (-> sv-96 vertex 0) (-> sv-96 vertex 1) 409.59998)) + (when #t + #t + (vector-segment-distance-point! sv-80 (-> sv-96 vertex 0) (-> sv-96 vertex 1) sv-84) + (vector-! (-> this travel) sv-92 sv-84) + 0) + (cond + ((logtest? (-> sv-96 next-poly pat) 1) + (vector-segment-distance-point! sv-80 (-> sv-96 vertex 0) (-> sv-96 vertex 1) sv-92) (vector-! (-> this travel) sv-92 sv-84) - 0 - ) - (cond - ((logtest? (-> sv-96 next-poly pat) 1) - (vector-segment-distance-point! sv-80 (-> sv-96 vertex 0) (-> sv-96 vertex 1) sv-92) - (vector-! (-> this travel) sv-92 sv-84) - (set! (-> this next-poly) (-> sv-96 next-poly)) - (set! sv-100 (the-as symbol #f)) - ) - ((begin - (set! sv-88 (-> sv-96 next-poly)) - (setup-portal (-> this mesh) (-> sv-96 next-poly) (-> this target-poly) sv-96) - ) - (set! (-> this next-poly) (-> sv-96 next-poly)) - (set! (-> this portal 0) (the-as nav-route-portal (-> sv-96 vertex 0))) - (set! (-> this portal 1) (the-as nav-route-portal (-> sv-96 vertex 1))) - 0 - ) - (else - (set! (-> this next-poly) #f) - (set! (-> this portal 0) #f) - (set! (-> this portal 1) #f) - (set! sv-100 (the-as symbol #f)) - ) - ) - ) - ) - ) + (set! (-> this next-poly) (-> sv-96 next-poly)) + (set! sv-100 (the-as symbol #f))) + ((begin + (set! sv-88 (-> sv-96 next-poly)) + (setup-portal (-> this mesh) (-> sv-96 next-poly) (-> this target-poly) sv-96)) + (set! (-> this next-poly) (-> sv-96 next-poly)) + (set! (-> this portal 0) (the-as nav-route-portal (-> sv-96 vertex 0))) + (set! (-> this portal 1) (the-as nav-route-portal (-> sv-96 vertex 1))) + 0) + (else + (set! (-> this next-poly) #f) + (set! (-> this portal 0) #f) + (set! (-> this portal 1) #f) + (set! sv-100 (the-as symbol #f))))))) (when sv-100 - (when (not (ray-ccw-line-segment-intersection? - sv-84 - (-> this travel) - (the-as vector (-> this portal 0)) - (the-as vector (-> this portal 1)) - ) - ) + (when (not (ray-ccw-line-segment-intersection? sv-84 + (-> this travel) + (the-as vector (-> this portal 0)) + (the-as vector (-> this portal 1)))) (let ((a0-18 (choose-travel-portal-vertex (-> this mesh) sv-96 (-> this target-poly) sv-92))) - (vector-! (-> this travel) (the-as vector (-> sv-96 vertex a0-18)) sv-84) - ) - ) - ) + (vector-! (-> this travel) (the-as vector (-> sv-96 vertex a0-18)) sv-84)))) (nav-control-method-33 this (-> this travel) sv-84 (-> this travel) arg1 40960.0) (let ((s5-1 (new 'stack-no-clear 'clip-travel-vector-to-mesh-return-info))) - (nav-mesh-method-16 - (-> this mesh) - sv-84 - sv-88 - (-> this travel) - (not (logtest? (-> this flags) (nav-control-flags navcf12))) - 204.8 - s5-1 - ) - (if (-> s5-1 gap-poly) - (set! (-> this next-poly) (-> s5-1 gap-poly)) - ) - ) + (nav-mesh-method-16 (-> this mesh) + sv-84 + sv-88 + (-> this travel) + (not (logtest? (-> this flags) (nav-control-flags navcf12))) + 204.8 + s5-1) + (if (-> s5-1 gap-poly) (set! (-> this next-poly) (-> s5-1 gap-poly)))) (let ((v1-82 (new 'stack-no-clear 'vector))) (vector-! v1-82 sv-84 sv-80) - (vector+! (-> this travel) (-> this travel) v1-82) - ) + (vector+! (-> this travel) (-> this travel) v1-82)) (set! (-> this travel y) 0.0) - (-> this travel) - ) + (-> this travel)) (defmethod nav-control-method-12 ((this nav-control) (arg0 nav-gap-info)) (when (and (-> this next-poly) (logtest? (-> this next-poly pat) 1)) (let ((s4-0 (-> this next-poly)) - (s3-1 (vector-! (new 'stack-no-clear 'vector) (-> this shape trans) (-> this mesh origin))) - ) + (s3-1 (vector-! (new 'stack-no-clear 'vector) (-> this shape trans) (-> this mesh origin)))) (while (and s4-0 (logtest? (-> s4-0 pat) 1)) - (set! s4-0 (get-adj-poly (-> this mesh) s4-0 (-> this target-poly) #f)) - ) + (set! s4-0 (get-adj-poly (-> this mesh) s4-0 (-> this target-poly) #f))) (when (and s4-0 (-> this gap-event)) (let ((s2-0 (-> this event-temp))) (closest-point-on-boundary (-> this mesh) s4-0 s2-0 s3-1) (vector+! s2-0 s2-0 (-> this mesh origin)) - (set! (-> arg0 dest quad) (-> s2-0 quad)) - ) + (set! (-> arg0 dest quad) (-> s2-0 quad))) (set! (-> arg0 poly) s4-0) - #t - ) - ) - ) - ) + #t)))) (defmethod nav-control-method-11 ((this nav-control) (arg0 vector)) (set! (-> this old-travel quad) (-> this travel quad)) @@ -2962,45 +1977,24 @@ (seek! (-> this block-count) 0.0 0.016666668) (logclear! (-> this flags) (nav-control-flags navcf9 navcf17 navcf18 navcf19)) (nav-control-method-27 this) - (if (logtest? (-> this flags) (nav-control-flags navcf8)) - (nav-control-method-28 this (the-as collide-kind -1)) - ) + (if (logtest? (-> this flags) (nav-control-flags navcf8)) (nav-control-method-28 this (the-as collide-kind -1))) (nav-control-method-13 this arg0 (-> this old-travel)) (-> this mesh) (vector-! (new 'stack-no-clear 'vector) (-> this shape trans) (-> this mesh origin)) (let ((s5-1 (new 'stack-no-clear 'nav-gap-info))) (when (< (vector-xz-length (-> this travel)) 204.8) (cond - ((logtest? (nav-control-flags navcf17) (-> this flags)) - ) + ((logtest? (nav-control-flags navcf17) (-> this flags))) ((-> this next-poly) (cond ((nav-control-method-12 this s5-1) (set! (-> this next-poly) #f) - (send-event - (the-as process-tree (-> this process)) - (the-as symbol (-> this gap-event)) - (-> s5-1 dest) - (-> s5-1 poly) - ) - ) - (else - ) - ) - ) - (else - (logior! (-> this flags) (nav-control-flags navcf19)) - ) - ) - ) - ) - (-> this travel) - ) + (send-event (the-as process-tree (-> this process)) (the-as symbol (-> this gap-event)) (-> s5-1 dest) (-> s5-1 poly))) + (else))) + (else (logior! (-> this flags) (nav-control-flags navcf19)))))) + (-> this travel)) (defun-debug nav-sphere-from-cam () - (let ((v1-0 (camera-pos))) - (format #t "SPHEREM(~4,,1M, ~4,,1M, ~4,,1M, 1.0)~%" (-> v1-0 x) (-> v1-0 y) (-> v1-0 z)) - ) + (let ((v1-0 (camera-pos))) (format #t "SPHEREM(~4,,1M, ~4,,1M, ~4,,1M, 1.0)~%" (-> v1-0 x) (-> v1-0 y) (-> v1-0 z))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/physics/dynamics-h.gc b/goal_src/jak1/engine/physics/dynamics-h.gc index a3410ac072..a7fced38b4 100644 --- a/goal_src/jak1/engine/physics/dynamics-h.gc +++ b/goal_src/jak1/engine/physics/dynamics-h.gc @@ -1,57 +1,47 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector-h.gc") -;; name: dynamics-h.gc -;; name in dgo: dynamics-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; dyanamics contain gravity properties (deftype dynamics (basic) - ((name basic) - (gravity-max meters) - (gravity-length meters) - (gravity vector :inline) - (gravity-normal vector :inline) - (walk-distance meters) - (run-distance meters) - ) - ) - + ((name basic) + (gravity-max meters) + (gravity-length meters) + (gravity vector :inline) + (gravity-normal vector :inline) + (walk-distance meters) + (run-distance meters))) (defun time-to-apex ((arg0 float) (arg1 float)) "How many ticks it takes to reach the apex of a ballistic trajectory." - (the int (/ arg0 (- (vel-tick arg1)))) - ) + (the int (/ arg0 (- (vel-tick arg1))))) (defun time-to-ground ((arg0 float) (arg1 float) (arg2 float)) "How many ticks it takes to reach the ground for a ballistic trajectory." (let ((f0-0 0.0) - (v0-0 0) - ) + (v0-0 0)) ;; actually integrate forward, just like the game will do so we're exact. (while (< (- arg2) f0-0) (set! arg0 (- arg0 (* 0.0033333334 arg1))) (+! f0-0 (* 0.0033333334 arg0)) - (+! v0-0 1) - ) - v0-0 - ) - ) + (+! v0-0 1)) + v0-0)) ;; the default dynamics of the world. (define *standard-dynamics* - (new 'static 'dynamics - :name 'standard - :gravity-max GRAVITY_MAX - :gravity-length GRAVITY_AMOUNT - :gravity (new 'static 'vector :x 0.0 :y GRAVITY_AMOUNT :z 0.0 :w 1.0) - :gravity-normal (new 'static 'vector :x 0.0 :y 1.0 :z 0.0 :w 1.0) - :walk-distance (meters 2) - :run-distance (meters 5) - ) - ) + (new 'static + 'dynamics + :name 'standard + :gravity-max + GRAVITY_MAX + :gravity-length + GRAVITY_AMOUNT + :gravity + (new 'static 'vector :x 0.0 :y GRAVITY_AMOUNT :z 0.0 :w 1.0) + :gravity-normal + (new 'static 'vector :x 0.0 :y 1.0 :z 0.0 :w 1.0) + :walk-distance (meters 2) + :run-distance (meters 5))) diff --git a/goal_src/jak1/engine/physics/gravity-h.gc b/goal_src/jak1/engine/physics/gravity-h.gc index 19bd9a6225..724a73809a 100644 --- a/goal_src/jak1/engine/physics/gravity-h.gc +++ b/goal_src/jak1/engine/physics/gravity-h.gc @@ -1,13 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/util/types-h.gc") -;; name: gravity-h.gc -;; name in dgo: gravity-h -;; dgos: GAME, ENGINE - ;; This file generates no code. (defconstant GRAVITY_AMOUNT (meters 60)) ;; gravity force + (defconstant GRAVITY_MAX (meters 40)) ;; regular terminal velocity diff --git a/goal_src/jak1/engine/physics/trajectory-h.gc b/goal_src/jak1/engine/physics/trajectory-h.gc index 42dc2c9a32..a46591e381 100644 --- a/goal_src/jak1/engine/physics/trajectory-h.gc +++ b/goal_src/jak1/engine/physics/trajectory-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: trajectory-h.gc -;; name in dgo: trajectory-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; Trajectory represents a ballistic trajectory. @@ -15,18 +10,15 @@ ;; Then, use eval-position or eval-velocity to get the position or velocity of the ;; object along the trajectory. (deftype trajectory (structure) - ((initial-position vector :inline) - (initial-velocity vector :inline) - (time float) - (gravity meters) - ) + ((initial-position vector :inline) + (initial-velocity vector :inline) + (time float) + (gravity meters)) (:methods - (eval-position! (_type_ float vector) vector) - (eval-velocity! (_type_ float vector) vector) - (setup-from-to-duration! (_type_ vector vector float float) none) - (setup-from-to-xz-vel! (_type_ vector vector float float) none) - (setup-from-to-y-vel! (_type_ vector vector float float) none) - (setup-from-to-height! (_type_ vector vector float float) none) - (debug-draw! (_type_) none) - ) - ) + (eval-position! (_type_ float vector) vector) + (eval-velocity! (_type_ float vector) vector) + (setup-from-to-duration! (_type_ vector vector float float) none) + (setup-from-to-xz-vel! (_type_ vector vector float float) none) + (setup-from-to-y-vel! (_type_ vector vector float float) none) + (setup-from-to-height! (_type_ vector vector float float) none) + (debug-draw! (_type_) none))) diff --git a/goal_src/jak1/engine/physics/trajectory.gc b/goal_src/jak1/engine/physics/trajectory.gc index 3a03eb8a2a..6bdb4b1558 100644 --- a/goal_src/jak1/engine/physics/trajectory.gc +++ b/goal_src/jak1/engine/physics/trajectory.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/math/vector.gc") (require "engine/physics/trajectory-h.gc") (require "engine/debug/debug-h.gc") -;; name: trajectory.gc -;; name in dgo: trajectory -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod eval-position! ((this trajectory) (time float) (result vector)) @@ -19,15 +14,13 @@ (+! (-> result y) (* time (-> this initial-velocity y))) (+! (-> result z) (* time (-> this initial-velocity z))) (+! (-> result y) (* 0.5 time time (-> this gravity))) - result - ) + result) (defmethod eval-velocity! ((this trajectory) (time float) (result vector)) "Evaluate the velocity of the object at a given time" (set! (-> result quad) (-> this initial-velocity quad)) (+! (-> result y) (* time (-> this gravity))) - result - ) + result) (defmethod setup-from-to-duration! ((this trajectory) (from vector) (to vector) (duration float) (grav float)) "Set up a trajectory that goes from->to in the given duration" @@ -39,81 +32,50 @@ ;; our velocity will point along from -> to (vector-! (-> this initial-velocity) to from) ;; but have magnitude that we calculated above. - (vector-xz-normalize! (-> this initial-velocity) xz-vel) - ) + (vector-xz-normalize! (-> this initial-velocity) xz-vel)) ;; solve for the y velocity that makes us land at the right height. - (set! (-> this initial-velocity y) - (- (/ (- (-> to y) (-> from y)) duration) (* 0.5 duration (-> this gravity))) - ) + (set! (-> this initial-velocity y) (- (/ (- (-> to y) (-> from y)) duration) (* 0.5 duration (-> this gravity)))) 0 - (none) - ) + (none)) (defmethod setup-from-to-xz-vel! ((this trajectory) (from vector) (to vector) (xz-vel float) (grav float)) "Set up a trajectory that goes from->to with the given velocity" ;; just solve for the duration and use the previous - (let ((duration (/ (vector-vector-xz-distance to from) xz-vel))) - (setup-from-to-duration! this from to duration grav) - ) + (let ((duration (/ (vector-vector-xz-distance to from) xz-vel))) (setup-from-to-duration! this from to duration grav)) 0 - (none) - ) + (none)) (defmethod setup-from-to-y-vel! ((this trajectory) (from vector) (to vector) (y-vel float) (grav float)) "Set up a trajectory with the given initial y velocity." (let* ((f0-0 y-vel) (f1-3 (- (* f0-0 f0-0) (* 2.0 (- (-> from y) (-> to y)) grav))) - (f0-3 900.0) - ) + (f0-3 900.0)) (when (>= f1-3 0.0) - (let ((f0-4 (sqrtf f1-3))) - (set! f0-3 (fmax (/ (- (- y-vel) f0-4) grav) (/ (+ (- y-vel) f0-4) grav))) - ) - ) - (setup-from-to-duration! this from to f0-3 grav) - ) + (let ((f0-4 (sqrtf f1-3))) (set! f0-3 (fmax (/ (- (- y-vel) f0-4) grav) (/ (+ (- y-vel) f0-4) grav))))) + (setup-from-to-duration! this from to f0-3 grav)) 0 - (none) - ) + (none)) (defmethod setup-from-to-height! ((this trajectory) (arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) "Setup a trajectory that reaches a given height" (let* ((f1-2 (+ arg2 (fmax (-> arg0 y) (-> arg1 y)))) (f1-5 (* 2.0 (- (-> arg0 y) f1-2) arg3)) - (f0-3 4096.0) - ) - (if (< 0.0 f1-5) - (set! f0-3 (sqrtf f1-5)) - ) - (setup-from-to-y-vel! this arg0 arg1 f0-3 arg3) - ) + (f0-3 4096.0)) + (if (< 0.0 f1-5) (set! f0-3 (sqrtf f1-5))) + (setup-from-to-y-vel! this arg0 arg1 f0-3 arg3)) 0 - (none) - ) + (none)) (defmethod debug-draw! ((this trajectory)) "Draw the trajectory" (let ((prev-pos (new 'stack-no-clear 'vector)) (pos (new 'stack-no-clear 'vector)) - (num-segments 10) - ) + (num-segments 10)) (set! (-> pos quad) (-> this initial-position quad)) (dotimes (s2-0 num-segments) (set! (-> prev-pos quad) (-> pos quad)) (let ((t-eval (* (-> this time) (/ (+ 1.0 (the float s2-0)) (the float num-segments))))) - (eval-position! this t-eval pos) - ) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - prev-pos - pos - (new 'static 'rgba :r #xff :a #x80) - #f - (the-as rgba -1) - ) - ) - ) + (eval-position! this t-eval pos)) + (add-debug-line #t (bucket-id debug-no-zbuf) prev-pos pos (new 'static 'rgba :r #xff :a #x80) #f (the-as rgba -1)))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/ps2/memcard-h.gc b/goal_src/jak1/engine/ps2/memcard-h.gc index c44b8e27e8..5fcd37a053 100644 --- a/goal_src/jak1/engine/ps2/memcard-h.gc +++ b/goal_src/jak1/engine/ps2/memcard-h.gc @@ -1,69 +1,50 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/font-h.gc") (require "kernel/gstring.gc") -;; name: memcard-h.gc -;; name in dgo: memcard-h -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(deftype mc-handle (int32) - () - ) +(deftype mc-handle (int32) ()) ;; Information sent from the C kernel about a file on a memory card (deftype mc-file-info (structure) - ((present int32) - (blind-data float 16) - (blind-data-int8 int8 64 :overlay-at (-> blind-data 0)) - (level-index int32 :overlay-at (-> blind-data 0)) - (fuel-cell-count float :overlay-at (-> blind-data 1)) - (money-count float :overlay-at (-> blind-data 2)) - (buzzer-count float :overlay-at (-> blind-data 3)) - (completion-percentage float :overlay-at (-> blind-data 4)) - (minute uint8 :overlay-at (-> blind-data 5)) - (hour uint8 :overlay-at (-> blind-data-int8 21)) - (week uint8 :overlay-at (-> blind-data-int8 22)) - (day uint8 :overlay-at (-> blind-data-int8 23)) - (month uint8 :overlay-at (-> blind-data 6)) - (year uint8 :overlay-at (-> blind-data-int8 25)) - ) - :pack-me - ) + ((present int32) + (blind-data float 16) + (blind-data-int8 int8 64 :overlay-at (-> blind-data 0)) + (level-index int32 :overlay-at (-> blind-data 0)) + (fuel-cell-count float :overlay-at (-> blind-data 1)) + (money-count float :overlay-at (-> blind-data 2)) + (buzzer-count float :overlay-at (-> blind-data 3)) + (completion-percentage float :overlay-at (-> blind-data 4)) + (minute uint8 :overlay-at (-> blind-data 5)) + (hour uint8 :overlay-at (-> blind-data-int8 21)) + (week uint8 :overlay-at (-> blind-data-int8 22)) + (day uint8 :overlay-at (-> blind-data-int8 23)) + (month uint8 :overlay-at (-> blind-data 6)) + (year uint8 :overlay-at (-> blind-data-int8 25))) + :pack-me) ;; Information sent from the C kernel about all the files on a memory card. ;; Note that the C kernel takes care of cleaning up all this, so in GOAL ;; we should assume that all this data is valid. (deftype mc-slot-info (structure) - ((handle int32) - (known int32) - (formatted int32) - (inited int32) - (last-file int32) - (mem-required int32) - (mem-actual int32) - (file mc-file-info 4 :inline) - ) - :pack-me - ) - + ((handle int32) + (known int32) + (formatted int32) + (inited int32) + (last-file int32) + (mem-required int32) + (mem-actual int32) + (file mc-file-info 4 :inline)) + :pack-me) (defun mc-sync () "Block here, waiting for the memory card to finish being read/written. Note - this will freeze the entire game, so this should not be used outside of debugging." - (let ((v0-0 0)) - (while (zero? v0-0) - (mc-run) - (set! v0-0 (mc-check-result)) - ) - v0-0 - ) - ) + (let ((v0-0 0)) (while (zero? v0-0) (mc-run) (set! v0-0 (mc-check-result))) v0-0)) (defun show-mc-info ((dma-buf dma-buffer)) "Print mc info to the screen." @@ -71,46 +52,29 @@ (dotimes (slot-idx 2) (mc-get-slot-info slot-idx info) (cond - ((zero? (-> info known)) - (format (clear *temp-string*) "SLOT ~D: EXAMINING SLOT~%" slot-idx) - *temp-string* - ) - ((zero? (-> info handle)) - (format (clear *temp-string*) "SLOT ~D: NO CARD~%" slot-idx) - *temp-string* - ) + ((zero? (-> info known)) (format (clear *temp-string*) "SLOT ~D: EXAMINING SLOT~%" slot-idx) *temp-string*) + ((zero? (-> info handle)) (format (clear *temp-string*) "SLOT ~D: NO CARD~%" slot-idx) *temp-string*) ((zero? (-> info formatted)) (format (clear *temp-string*) "SLOT ~D: CARD [~D] : NOT FORMATTED~%" slot-idx (-> info handle)) - *temp-string* - ) + *temp-string*) ((zero? (-> info inited)) - (format - (clear *temp-string*) - "SLOT ~D: CARD [~D] : NO FILE [~D/~D]~%" - slot-idx - (-> info handle) - (-> info mem-required) - (-> info mem-actual) - ) - *temp-string* - ) + (format (clear *temp-string*) + "SLOT ~D: CARD [~D] : NO FILE [~D/~D]~%" + slot-idx + (-> info handle) + (-> info mem-required) + (-> info mem-actual)) + *temp-string*) (else - (format (clear *temp-string*) "SLOT ~D: CARD [~D] : " slot-idx (-> info handle)) - *temp-string* - (format - *temp-string* - "SAVES ~D ~D ~D ~D : LAST ~D~%" - (-> info file 0 present) - (-> info file 1 present) - (-> info file 2 present) - (-> info file 3 present) - (-> info last-file) - ) - ) - ) - (draw-string-xy *temp-string* dma-buf 32 (+ (* 12 slot-idx) 8) (font-color red) (font-flags shadow)) - ) - ) + (format (clear *temp-string*) "SLOT ~D: CARD [~D] : " slot-idx (-> info handle)) + *temp-string* + (format *temp-string* + "SAVES ~D ~D ~D ~D : LAST ~D~%" + (-> info file 0 present) + (-> info file 1 present) + (-> info file 2 present) + (-> info file 3 present) + (-> info last-file)))) + (draw-string-xy *temp-string* dma-buf 32 (+ (* 12 slot-idx) 8) (font-color red) (font-flags shadow)))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/ps2/pad.gc b/goal_src/jak1/engine/ps2/pad.gc index 2f153a0392..c73a5469ac 100644 --- a/goal_src/jak1/engine/ps2/pad.gc +++ b/goal_src/jak1/engine/ps2/pad.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "") (require "engine/sound/gsound.gc") (require "pc/pc-cheats.gc") -;; name: pad.gc -;; name in dgo: pad -;; dgos: GAME, ENGINE - ;; Interface for game controllers. ;; the *cpad-list* contains both game controllers. ;; Use the service-cpads functions once per frame to update the data and vibration control @@ -17,51 +12,45 @@ ;; in display, but we haven't gotten to display-h.gc yet. (define-extern get-current-time (function time-frame)) + (define-extern get-integral-current-time (function time-frame)) (#when PC_PORT -;;;;;;;;;;;;;;;;;;;;;; -;; opengoal territory override -;;;;;;;;;;;;;;;;;;;;;; - -(defun scf-get-territory () - "redefined from C kernel for convenience" - (if (= (-> *pc-settings* territory) -1) - *default-territory* - (-> *pc-settings* territory)) - ) -) + ;;;;;;;;;;;;;;;;;;;;;; + ;; opengoal territory override + ;;;;;;;;;;;;;;;;;;;;;; + (defun scf-get-territory () + "redefined from C kernel for convenience" + (if (= (-> *pc-settings* territory) -1) *default-territory* (-> *pc-settings* territory)))) ;; DECOMP BEGINS (defenum pad-buttons - :bitfield #t - :type uint32 - (select 0) - (l3 1) - (r3 2) - (start 3) - (up 4) - (right 5) - (down 6) - (left 7) - (l2 8) - (r2 9) - (l1 10) - (r1 11) - (triangle 12) - (circle 13) - (x 14) - (square 15) - ) + :bitfield #t + :type uint32 + (select 0) + (l3 1) + (r3 2) + (start 3) + (up 4) + (right 5) + (down 6) + (left 7) + (l2 8) + (r2 9) + (l1 10) + (r1 11) + (triangle 12) + (circle 13) + (x 14) + (square 15)) (defenum pad-type (normal 4) (analog 5) (dualshock 7) (negcon 2) - (namco-gun 6) - ) + (namco-gun 6)) ;; this gets set to #f later on. (define *cheat-mode* #t) @@ -70,52 +59,45 @@ (deftype hw-cpad (basic) (;; BASIC CONTROLLER data ;; status = 0x40 | (data length / 2) - (valid uint8) ;; 0 if success, 255 if fail - (status uint8) ;; depends on controller - (button0 uint16) ;; binary button states! + (valid uint8) ;; 0 if success, 255 if fail + (status uint8) ;; depends on controller + (button0 uint16) ;; binary button states! ;; DUALSHOCK or JOYSTICK data ;; status (dualshock) = 0x70 | (data length / 2) ;; status (joystick) = 0x50 | (data length / 2) - (rightx uint8) ;; right stick xdir - (righty uint8) ;; right stick ydir - (leftx uint8) ;; left stick xdir - (lefty uint8) ;; left stick ydir + (rightx uint8) ;; right stick xdir + (righty uint8) ;; right stick ydir + (leftx uint8) ;; left stick xdir + (lefty uint8) ;; left stick ydir ;; DUALSHOCK 2 data ;; status = 0x70 | (data length / 2) - (abutton uint8 12) ;; pressure sensitivity information - + (abutton uint8 12) ;; pressure sensitivity information ;; pad buffer needs to be 32 bytes large. - (dummy uint8 12) - ) - ) + (dummy uint8 12))) ;; data from hardware + additional info calculated here. (deftype cpad-info (hw-cpad) - ((number int32) ;; controller port number - (cpad-file int32) - (button0-abs pad-buttons 3) ;; bitmask of buttons, pressed or not, with history - (button0-shadow-abs pad-buttons 1) ;; modify this to change button history in the future. - (button0-rel pad-buttons 3) ;; bitmask of if button going down. - (stick0-dir float) - (stick0-speed float) - (new-pad int32) - (state int32) - (align uint8 6) ;; hardware control of buzzing. - (direct uint8 6) ;; hardware control of buzzing. - (buzz-val uint8 2) ;; intensity for buzzing - (buzz-time time-frame 2) ;; when to stop buzzing - (buzz basic) ;; is vibration enabled? - (buzz-act int32) - (change-time time-frame) - ) + ((number int32) ;; controller port number + (cpad-file int32) + (button0-abs pad-buttons 3) ;; bitmask of buttons, pressed or not, with history + (button0-shadow-abs pad-buttons 1) ;; modify this to change button history in the future. + (button0-rel pad-buttons 3) ;; bitmask of if button going down. + (stick0-dir float) + (stick0-speed float) + (new-pad int32) + (state int32) + (align uint8 6) ;; hardware control of buzzing. + (direct uint8 6) ;; hardware control of buzzing. + (buzz-val uint8 2) ;; intensity for buzzing + (buzz-time time-frame 2) ;; when to stop buzzing + (buzz basic) ;; is vibration enabled? + (buzz-act int32) + (change-time time-frame)) (:methods - (new (symbol type int) _type_) - ) - ) + (new (symbol type int) _type_))) (defmacro cpad-type? (type) - `(= (shr (-> pad status) 4) (cpad-type ,type)) - ) + `(= (shr (-> pad status) 4) (cpad-type ,type))) (defun cpad-invalid! ((pad cpad-info)) "Reset all data in a cpad-info" @@ -126,8 +108,7 @@ (set! (-> pad button0-rel 0) (pad-buttons)) (dotimes (v1-2 12) (nop!) - (set! (-> pad abutton v1-2) 0) - ) + (set! (-> pad abutton v1-2) 0)) (set! (-> pad stick0-dir) 0.0) (set! (-> pad stick0-speed) 0.0) (set! (-> pad rightx) (the-as uint 128)) @@ -141,36 +122,28 @@ (set! (-> pad align 4) (the-as uint 255)) (set! (-> pad align 5) (the-as uint 255)) (dotimes (v1-14 6) - (set! (-> pad direct v1-14) 0) - ) + (set! (-> pad direct v1-14) 0)) ;; probably a bug here, this should use v1-17 as the index. (dotimes (v1-17 2) (set! (-> pad buzz-val 0) (the-as uint 0)) - (set! (-> pad buzz-time 0) 0) - ) - pad - ) + (set! (-> pad buzz-time 0) 0)) + pad) (defmethod new cpad-info ((alloction symbol) (type-to-make type) (idx int)) "Allocate a new cpad-info and open the pad itself through the kernel" (let ((this (object-new alloction type-to-make (the-as int (-> type-to-make size))))) - (set! (-> this number) idx) - (set! (-> this buzz) #f) - (cpad-open this idx) ;; kernel function. - (cpad-invalid! this) - ) - ) + (set! (-> this number) idx) + (set! (-> this buzz) #f) + (cpad-open this idx) ;; kernel function. + (cpad-invalid! this))) ;; List of controllers. It always has 4 controllers. (deftype cpad-list (basic) - ((num-cpads int32) - (cpads cpad-info 4) ;; modified from 2->4 for PC 4-pad support + ((num-cpads int32) + (cpads cpad-info 4) ;; modified from 2->4 for PC 4-pad support ) (:methods - (new (symbol type) _type_) - ) - ) - + (new (symbol type) _type_))) (defmethod new cpad-list ((allocation symbol) (type-to-make type)) "Create a cpad-list for 4 controllers. It's fine to do this even if controllers @@ -181,9 +154,7 @@ (set! (-> gp-0 cpads 1) (new 'global 'cpad-info 1)) (set! (-> gp-0 cpads 2) (new 'global 'cpad-info 2)) (set! (-> gp-0 cpads 3) (new 'global 'cpad-info 3)) - gp-0 - ) - ) + gp-0)) (defun analog-input ((in int) (offset float) (center-val float) (max-val float) (out-range float)) "Convert integer input from pad into a float between -out-range and +out-range. @@ -195,84 +166,52 @@ (max-magnitude (- max-val center-val)) ;; maximum expected magnitude. ) ;; flip the output if negative - (if (< offset-in 0.0) - (set! out-range (- out-range)) - ) + (if (< offset-in 0.0) (set! out-range (- out-range))) ;; scale and return value. (cond - ((>= 0.0 magnitude) - 0.0 - ) - ((>= magnitude max-magnitude) - out-range - ) - (else - (/ (* magnitude out-range) max-magnitude) - ) - ) - ) - ) + ((>= 0.0 magnitude) 0.0) + ((>= magnitude max-magnitude) out-range) + (else (/ (* magnitude out-range) max-magnitude))))) (defmacro analog-input-horizontal-first (in offset center-val max-val out-range) "Same as analog-input but respects First-Person Horizontal camera control setting." `(#if PC_PORT ;; first-person horizontal is NOT inverted in original game - (* (if (-> *pc-settings* first-camera-h-inverted?) -1.0 1.0) - (analog-input ,in ,offset ,center-val ,max-val ,out-range)) - (analog-input ,in ,offset ,center-val ,max-val ,out-range) - ) - ) + (* (if (-> *pc-settings* first-camera-h-inverted?) -1.0 1.0) (analog-input ,in ,offset ,center-val ,max-val ,out-range)) + (analog-input ,in ,offset ,center-val ,max-val ,out-range))) (defmacro analog-input-vertical-first (in offset center-val max-val out-range) "Same as analog-input but respects First-Person Vertical camera control setting." `(#if PC_PORT ;; first-person vertical is already inverted in original game - (* (if (-> *pc-settings* first-camera-v-inverted?) 1.0 -1.0) - (analog-input ,in ,offset ,center-val ,max-val ,out-range)) - (analog-input ,in ,offset ,center-val ,max-val ,out-range) - ) - ) + (* (if (-> *pc-settings* first-camera-v-inverted?) 1.0 -1.0) (analog-input ,in ,offset ,center-val ,max-val ,out-range)) + (analog-input ,in ,offset ,center-val ,max-val ,out-range))) (defmacro analog-input-horizontal-third (in offset center-val max-val out-range) "Same as analog-input but respects Third-Person Horizontal camera control setting." `(#if PC_PORT ;; third-person horizontal is already inverted in original game - (* (if (-> *pc-settings* third-camera-h-inverted?) 1.0 -1.0) - (analog-input ,in ,offset ,center-val ,max-val ,out-range)) - (analog-input ,in ,offset ,center-val ,max-val ,out-range) - ) - ) + (* (if (-> *pc-settings* third-camera-h-inverted?) 1.0 -1.0) (analog-input ,in ,offset ,center-val ,max-val ,out-range)) + (analog-input ,in ,offset ,center-val ,max-val ,out-range))) (defmacro analog-input-vertical-third (in offset center-val max-val out-range) "Same as analog-input but respects Third-Person Vertical camera control setting." `(#if PC_PORT ;; third-person vertical is already inverted in original game - (* (if (-> *pc-settings* third-camera-v-inverted?) 1.0 -1.0) - (analog-input ,in ,offset ,center-val ,max-val ,out-range)) - (analog-input ,in ,offset ,center-val ,max-val ,out-range) - ) - ) + (* (if (-> *pc-settings* third-camera-v-inverted?) 1.0 -1.0) (analog-input ,in ,offset ,center-val ,max-val ,out-range)) + (analog-input ,in ,offset ,center-val ,max-val ,out-range))) (defun cpad-set-buzz! ((pad cpad-info) (buzz-idx int) (buzz-amount int) (duration time-frame)) "Turn on vibration motor 'buzz-idx' for duration, at magnitude buzz-amount." (cond ((zero? buzz-amount) ;; set buzz-amount to 0, immediately kill it. - (set! (-> pad buzz-val buzz-idx) 0) - ) + (set! (-> pad buzz-val buzz-idx) 0)) ((= buzz-amount (-> pad buzz-val buzz-idx)) ;; we are already buzzing at this intensity. ;; buzz for max (old_buzz, new_buzz) duration - (set! (-> pad buzz-time buzz-idx) - (max (-> pad buzz-time buzz-idx) (+ (get-current-time) duration)) - ) - ) + (set! (-> pad buzz-time buzz-idx) (max (-> pad buzz-time buzz-idx) (+ (get-current-time) duration)))) ((< (-> pad buzz-val buzz-idx) (the-as uint buzz-amount)) ;; buzz harder than the older value, overwrite the old buzz. (set! (-> pad buzz-val buzz-idx) buzz-amount) - (set! (-> pad buzz-time buzz-idx) - (+ (get-current-time) duration) - ) - ) - ) - (none) - ) + (set! (-> pad buzz-time buzz-idx) (+ (get-current-time) duration)))) + (none)) ;; the four controllers (define *cpad-list* (new 'global 'cpad-list)) @@ -280,10 +219,7 @@ ;; weird leftover debug thing, enabling overrides the x position of both sticks on all controllers. (define *cpad-debug* #f) -(#if PC_PORT - (defconstant STICK_DEADZONE (-> *pc-settings* stick-deadzone)) - (defconstant STICK_DEADZONE 0.3) - ) +(#if PC_PORT (defconstant STICK_DEADZONE (-> *pc-settings* stick-deadzone)) (defconstant STICK_DEADZONE 0.3)) (defun service-cpads () "Read from cpads and update vibration" @@ -304,24 +240,14 @@ ((zero? v1-10) ;; vibration motor 0 only has on/off. This pulses it to approximate ;; an analog control - (set! (-> pad direct buzz-idx) - (logand (ash (-> pad buzz-val buzz-idx) (- (logand (get-integral-current-time) 7))) 1) - ) - ) + (set! (-> pad direct buzz-idx) (logand (ash (-> pad buzz-val buzz-idx) (- (logand (get-integral-current-time) 7))) 1))) ((= v1-10 1) ;; vibration motor 1 has analog control. set the speed. - (set! (-> pad direct buzz-idx) (-> pad buzz-val buzz-idx)) - ) - ) - ) - ) + (set! (-> pad direct buzz-idx) (-> pad buzz-val buzz-idx)))))) (else - ;; not okay to buzz this motor, set to zero. - (set! (-> pad buzz-val buzz-idx) (the-as uint 0)) - (set! (-> pad direct buzz-idx) (the-as uint 0)) - ) - ) - ) + ;; not okay to buzz this motor, set to zero. + (set! (-> pad buzz-val buzz-idx) (the-as uint 0)) + (set! (-> pad direct buzz-idx) (the-as uint 0))))) ;; update button history. (set! (-> pad button0-abs 2) (-> pad button0-abs 1)) (set! (-> pad button0-abs 1) (-> pad button0-shadow-abs 0)) @@ -330,16 +256,13 @@ ;; we might want to clear a button after it is pressed, so we back it up in a "shadow" field (let ((current-button0 (-> pad button0))) (set! (-> pad button0-shadow-abs 0) (the-as pad-buttons current-button0)) - (set! (-> pad button0-abs 0) (the-as pad-buttons current-button0)) - ) + (set! (-> pad button0-abs 0) (the-as pad-buttons current-button0))) ;; buttons going down (set! (-> pad button0-rel 0) (logclear (-> pad button0-abs 0) (-> pad button0-abs 1))) ;; some debugging thing they wrote at some point (when *cpad-debug* (set! (-> pad leftx) (the-as uint 255)) - (set! (-> pad rightx) (the-as uint 255)) - ) - + (set! (-> pad rightx) (the-as uint 255))) ;; compute a speed and direction for stick0 (set! (-> pad stick0-speed) 1.0) (cond @@ -347,72 +270,49 @@ ((= (shr (-> pad status) 4) 7) ;; invert analogs if mirrored mode. trust me, you'll need this. (#when PC_PORT - (when (pc-cheats? (-> *pc-settings* cheats) mirror) - (set! (-> pad leftx) (- 255 (-> pad leftx))) - (set! (-> pad rightx) (- 255 (-> pad rightx))) - )) + (when (pc-cheats? (-> *pc-settings* cheats) mirror) + (set! (-> pad leftx) (- 255 (-> pad leftx))) + (set! (-> pad rightx) (- 255 (-> pad rightx))))) ;; compute speed and direction, with deadband. (let ((f30-0 (* 0.0078125 (the float (+ (-> pad leftx) -128)))) - (f28-0 (* 0.0078125 (the float (- 127 (the-as int (-> pad lefty)))))) - ) + (f28-0 (* 0.0078125 (the float (- 127 (the-as int (-> pad lefty))))))) (set! (-> pad stick0-dir) (atan (- f30-0) f28-0)) - (set! (-> pad stick0-speed) (fmin 1.0 (sqrtf (+ (* f30-0 f30-0) (* f28-0 f28-0))))) - ) - (if (< (-> pad stick0-speed) STICK_DEADZONE) - (set! (-> pad stick0-speed) 0.0) - ) - ) + (set! (-> pad stick0-speed) (fmin 1.0 (sqrtf (+ (* f30-0 f30-0) (* f28-0 f28-0)))))) + (if (< (-> pad stick0-speed) STICK_DEADZONE) (set! (-> pad stick0-speed) 0.0))) (else - ;; analog is invalid? set to zero. - (set! (-> pad leftx) (the-as uint 128)) - (set! (-> pad lefty) (the-as uint 128)) - (set! (-> pad rightx) (the-as uint 128)) - (set! (-> pad righty) (the-as uint 128)) - (set! (-> pad stick0-dir) 0.0) - (set! (-> pad stick0-speed) 0.0) - ) - ) + ;; analog is invalid? set to zero. + (set! (-> pad leftx) (the-as uint 128)) + (set! (-> pad lefty) (the-as uint 128)) + (set! (-> pad rightx) (the-as uint 128)) + (set! (-> pad righty) (the-as uint 128)) + (set! (-> pad stick0-dir) 0.0) + (set! (-> pad stick0-speed) 0.0))) ;; if the pad was changed or stick0 pushed, update the last changed time. (if (or (!= (-> pad button0-abs 0) (-> pad button0-abs 1)) - (or (< STICK_DEADZONE (-> pad stick0-speed)) (zero? (-> pad change-time))) - ) - (set! (-> pad change-time) (get-current-time)) - ) - ) + (or (< STICK_DEADZONE (-> pad stick0-speed)) (zero? (-> pad change-time)))) + (set! (-> pad change-time) (get-current-time)))) (else - ;; invalid bits set, controller is not connected. - (cpad-invalid! pad) - ) - ) - ) - ) - ) - *cpad-list* - ) + ;; invalid bits set, controller is not connected. + (cpad-invalid! pad)))))) + *cpad-list*) (defun buzz-stop! ((idx int)) "Set the buzz to 0 on both vibration motors of the given cpad." (cpad-set-buzz! (-> *cpad-list* cpads idx) 0 0 0) (cpad-set-buzz! (-> *cpad-list* cpads idx) 1 0 0) - (none) - ) - + (none)) (defmacro cpad-pressed (pad-idx) - `(-> *cpad-list* cpads ,pad-idx button0-rel 0) - ) + `(-> *cpad-list* cpads ,pad-idx button0-rel 0)) (defmacro cpad-hold (pad-idx) - `(-> *cpad-list* cpads ,pad-idx button0-abs 0) - ) + `(-> *cpad-list* cpads ,pad-idx button0-abs 0)) (defmacro cpad-pressed? (pad-idx &rest buttons) - `(logtest? (cpad-pressed ,pad-idx) (pad-buttons ,@buttons)) - ) + `(logtest? (cpad-pressed ,pad-idx) (pad-buttons ,@buttons))) (defmacro cpad-hold? (pad-idx &rest buttons) - `(logtest? (cpad-hold ,pad-idx) (pad-buttons ,@buttons)) - ) + `(logtest? (cpad-hold ,pad-idx) (pad-buttons ,@buttons))) (defmacro set-cpad-pressed! (pad-idx &rest buttons) `(logior! (cpad-pressed ,pad-idx) (pad-buttons ,@buttons)) @@ -424,45 +324,24 @@ (defmacro cpad-clear! (pad-idx &rest buttons) `(begin - (logclear! (cpad-pressed ,pad-idx) (pad-buttons ,@buttons)) - (logclear! (cpad-hold ,pad-idx) (pad-buttons ,@buttons)) - ) - ) + (logclear! (cpad-pressed ,pad-idx) (pad-buttons ,@buttons)) + (logclear! (cpad-hold ,pad-idx) (pad-buttons ,@buttons)))) (defmacro cpad-change-time (pad-idx) - `(-> *cpad-list* cpads ,pad-idx change-time) - ) + `(-> *cpad-list* cpads ,pad-idx change-time)) (defmacro check-cheat-code (cheat-var pad-idx buttons &rest body) "execute body when a cheat code made up of sequential inputs has been inputted" - `(when (nonzero? (cpad-pressed ,pad-idx)) ;; only check when some button has been pressed (case ,cheat-var ,@(apply-i - (lambda (x i) - `((,i) - (if (cpad-pressed? ,pad-idx ,x) - ,(if (< i (- (length buttons) 1)) - `(1+! ,cheat-var) - - `(begin ,@body (set! ,cheat-var 0)) - ) - - (set! ,cheat-var 0) - ) - ) - ) - buttons) - ) - ) - ) + (lambda (x i) + `((,i) + (if (cpad-pressed? ,pad-idx ,x) + ,(if (< i (- (length buttons) 1)) `(1+! ,cheat-var) `(begin ,@body (set! ,cheat-var 0))) + (set! ,cheat-var 0)))) + buttons)))) (defmacro cheats-sound-play (cheat?) "play the appropriate sound for inputting a cheat code" - - `(if ,cheat? - (sound-play "select-menu") - (sound-play "cursor-options") - ) - ) - + `(if ,cheat? (sound-play "select-menu") (sound-play "cursor-options"))) diff --git a/goal_src/jak1/engine/ps2/rpc-h.gc b/goal_src/jak1/engine/ps2/rpc-h.gc index b89c1adf9d..0ee03709f2 100644 --- a/goal_src/jak1/engine/ps2/rpc-h.gc +++ b/goal_src/jak1/engine/ps2/rpc-h.gc @@ -1,20 +1,20 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gcommon.gc") -;; name: rpc-h.gc -;; name in dgo: rpc-h -;; dgos: GAME, ENGINE - ;; RPC channels. ;; these should match XXX_RPC_CHANNEL in the game/common/xxx_rpc_types.h (defconstant RPC-SOUND-PLAYER 0) ;; called player in IOP code + (defconstant RPC-SOUND-LOADER 1) ;; called loader in IOP code + (defconstant RPC-RAMDISK 2) ;; called server in IOP code, sometimes + (defconstant RPC-DGO 3) + (defconstant RPC-LOAD-STR 4) ;; called STR in IOP code + (defconstant RPC-PLAY-STR 5) ;; called PLAY in IOP code (defun-extern sound-buffer-dump int) @@ -26,18 +26,15 @@ ;; it is possible to use fewer elements than elt-count. ;; the buffer is 64-byte aligned. (deftype rpc-buffer (basic) - ((elt-size uint32) - (elt-count uint32) - (elt-used uint32) - (busy basic) ;; are we being sent currently? - (base pointer) ;; 64-byte aligned buffer of elts. + ((elt-size uint32) + (elt-count uint32) + (elt-used uint32) + (busy basic) ;; are we being sent currently? + (base pointer) ;; 64-byte aligned buffer of elts. ;; I suspect this was 16-byte aligned for DMA purposes. - (data uint8 :dynamic :offset 32) - ) + (data uint8 :dynamic :offset 32)) (:methods - (new (symbol type uint uint) rpc-buffer) - ) - ) + (new (symbol type uint uint) rpc-buffer))) (defmethod new rpc-buffer ((allocation symbol) (type-to-make type) (elt-size uint) (elt-count uint)) "Create a new rpc-buffer with room for elt-count elements of elt-size. @@ -51,30 +48,26 @@ ;(set! (-> this base) (logand -64 (+ (the uint this) 28 63))) ;; base is the 64-byte aligned buffer. (set! (-> this base) (the pointer (logand -64 (+ (the uint (-> this data)) 63)))) - this - ) - ) + this)) ;; An RPC buffer pair is a pair of two buffers that implement double buffering. ;; The "current" buffer is the one being loaded on the EE. ;; The other is referred to as the active buffer. ;; This also supports receiving data, though it just gives you a plain pointer. (deftype rpc-buffer-pair (basic) - ((buffer rpc-buffer 2) ;; the two buffers - (current rpc-buffer) ;; the buffer being loaded - (last-recv-buffer pointer) ;; the last reply - (rpc-port int32) ;; the RPC port number + ((buffer rpc-buffer 2) ;; the two buffers + (current rpc-buffer) ;; the buffer being loaded + (last-recv-buffer pointer) ;; the last reply + (rpc-port int32) ;; the RPC port number ) (:methods - (new (symbol type uint uint int) rpc-buffer-pair) - (call (rpc-buffer-pair uint pointer uint) int) - (add-element (rpc-buffer-pair) pointer) - (decrement-elt-used (rpc-buffer-pair) int) - (sync (rpc-buffer-pair symbol) int) - (check-busy (rpc-buffer-pair) symbol) - (pop-last-received (rpc-buffer-pair) pointer) - ) - ) + (new (symbol type uint uint int) rpc-buffer-pair) + (call (rpc-buffer-pair uint pointer uint) int) + (add-element (rpc-buffer-pair) pointer) + (decrement-elt-used (rpc-buffer-pair) int) + (sync (rpc-buffer-pair symbol) int) + (check-busy (rpc-buffer-pair) symbol) + (pop-last-received (rpc-buffer-pair) pointer))) (defmethod new rpc-buffer-pair ((allocation symbol) (type-to-make type) (elt-size uint) (elt-count uint) (rpc-port int)) "Create a new rpc-buffer-pair" @@ -84,25 +77,16 @@ (set! (-> this current) (-> this buffer 0)) (set! (-> this last-recv-buffer) (the pointer #f)) (set! (-> this rpc-port) rpc-port) - this - ) - ) + this)) (defmethod sync ((this rpc-buffer-pair) (print-stall-warning symbol)) "Wait for the in progress RPC to complete." - (let ((active-buffer (if (= (-> this current) (-> this buffer 0)) - (-> this buffer 1) - (-> this buffer 0) - ) - ) - ) + (let ((active-buffer (if (= (-> this current) (-> this buffer 0)) (-> this buffer 1) (-> this buffer 0)))) (when (-> active-buffer busy) ;; the flag is set, meaning we should check. (when (nonzero? (rpc-busy? (-> this rpc-port))) ;; we're busy - (if print-stall-warning - (format 0 "STALL: waiting for IOP on RPC port #~D~%" (-> this rpc-port)) - ) + (if print-stall-warning (format 0 "STALL: waiting for IOP on RPC port #~D~%" (-> this rpc-port))) (while (nonzero? (rpc-busy? (-> this rpc-port))) (nop!) (nop!) @@ -111,47 +95,28 @@ (nop!) (nop!) (nop!) - (nop!) - ) - ) + (nop!))) ;; not longer busy, clear the flag! (set! (-> active-buffer busy) #f) (set! (-> active-buffer elt-used) (the-as uint 0)) - 0 - ) - ) - 0 - ) + 0)) + 0) (defmethod check-busy ((this rpc-buffer-pair)) "Is the currently running RPC still busy?" - (let ((active-buffer (if (= (-> this current) (-> this buffer 0)) - (-> this buffer 1) - (-> this buffer 0) - ))) + (let ((active-buffer (if (= (-> this current) (-> this buffer 0)) (-> this buffer 1) (-> this buffer 0)))) (when (-> active-buffer busy) - (if (nonzero? (rpc-busy? (-> this rpc-port))) - (return #t) - ) + (if (nonzero? (rpc-busy? (-> this rpc-port))) (return #t)) (set! (-> active-buffer busy) #f) - (set! (-> active-buffer elt-used) 0) - ) - ) - #f - ) + (set! (-> active-buffer elt-used) 0))) + #f) (defmethod call ((obj rpc-buffer-pair) (fno uint) (recv-buff pointer) (recv-size uint)) "Call an RPC. This is an async RPC. Use check-busy or sync to see if it's done." (when (nonzero? (-> obj current elt-used)) ;; when we have used elements - ;; make sure the previous buffer is done - (let ((active-buffer (if (= (-> obj current) (-> obj buffer 0)) - (-> obj buffer 1) - (-> obj buffer 0) - ) - ) - ) + (let ((active-buffer (if (= (-> obj current) (-> obj buffer 0)) (-> obj buffer 1) (-> obj buffer 0)))) (when (-> active-buffer busy) ;; we think the active buffer may be busy. ;; first lets just do a simple check @@ -166,40 +131,27 @@ (nop!) (nop!) (nop!) - (nop!) - ) - ) + (nop!))) ;; not busy. (set! (-> active-buffer busy) #f) - (set! (-> active-buffer elt-used) 0) - ) + (set! (-> active-buffer elt-used) 0)) ;; now we've cleared the last RPC call, we can do another (let ((current-buffer (-> obj current))) ;; rpc_channel, fno, async, send_buff, send_size, recv_buff, recv_size - (rpc-call - (-> obj rpc-port) - fno - (the-as uint 1) - (the-as uint (-> current-buffer base)) - (the-as int (* (-> current-buffer elt-size) (-> current-buffer elt-used))) - (the-as uint recv-buff) - (the-as int recv-size) - ) - (set! (-> current-buffer busy) #t) - ) + (rpc-call (-> obj rpc-port) + fno + (the-as uint 1) + (the-as uint (-> current-buffer base)) + (the-as int (* (-> current-buffer elt-size) (-> current-buffer elt-used))) + (the-as uint recv-buff) + (the-as int recv-size)) + (set! (-> current-buffer busy) #t)) (set! (-> obj last-recv-buffer) recv-buff) - (set! (-> obj current) active-buffer) - ) - ) - 0 - ) + (set! (-> obj current) active-buffer))) + 0) (defmethod pop-last-received ((this rpc-buffer-pair)) - (let ((result (-> this last-recv-buffer))) - (set! (-> this last-recv-buffer) (the-as pointer #f)) - result - ) - ) + (let ((result (-> this last-recv-buffer))) (set! (-> this last-recv-buffer) (the-as pointer #f)) result)) (defmethod add-element ((this rpc-buffer-pair)) "Add an element, and return a pointer to the element. @@ -211,28 +163,21 @@ (when (= (-> current-buffer elt-used) (-> current-buffer elt-count)) ;; oops, we're full. (when (zero? (-> this rpc-port)) - ;; if we're RPC 0, this is evidently a situation to warn about. - (format 0 "WARNING: too many sound commands queued~%") - (sound-buffer-dump) ;; og:preserve-this added for debugging - ) + ;; if we're RPC 0, this is evidently a situation to warn about. + (format 0 "WARNING: too many sound commands queued~%") + (sound-buffer-dump) ;; og:preserve-this added for debugging + ) (format 0 "WARNING: flushing RPC port #~D~%" (-> this rpc-port)) ;; og:preserve-this ;; otherwise we just flush ;; seems kinda dangerous. these could be the wrong parameters... (call this (the-as uint 0) (the-as pointer 0) (the-as uint 0)) ;; update the current-buffer. - (set! current-buffer (-> this current)) - ) + (set! current-buffer (-> this current))) (let ((result (&+ (-> current-buffer base) (* (-> current-buffer elt-used) (-> current-buffer elt-size))))) (+! (-> current-buffer elt-used) 1) - result - ) - ) - ) + result))) (defmethod decrement-elt-used ((this rpc-buffer-pair)) "If elt-used > 0, decrease it by one." - (if (> (-> this current elt-used) 0) - (+! (-> this current elt-used) -1) - ) - 0 - ) + (if (> (-> this current elt-used) 0) (+! (-> this current elt-used) -1)) + 0) diff --git a/goal_src/jak1/engine/ps2/timer-h.gc b/goal_src/jak1/engine/ps2/timer-h.gc index 8bb7e34977..ae3bf86eb9 100644 --- a/goal_src/jak1/engine/ps2/timer-h.gc +++ b/goal_src/jak1/engine/ps2/timer-h.gc @@ -1,24 +1,20 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: timer-h.gc -;; name in dgo: timer-h -;; dgos: GAME, ENGINE - - ;; There are two sources for timing: ;; - EE TIMER1, used for the frame profiler. There are 9765 counts of this per frame. It gets reset in drawable. ;; - The "stopwatch" system, used for reading the CPU clock cycle counter, at 300 MHz (32-bit) ;; The Emotion Engine has 4 hardware timers, timer1 is used as the (defconstant TIMER0_BANK #x10000000) ;; has HOLD register! + (defconstant TIMER1_BANK #x10000800) ;; has HOLD register! + (defconstant TIMER2_BANK #x10001000) ;; does NOT have HOLD register! -(defconstant TIMER3_BANK #x10001800) ;; does NOT have HOLD register! +(defconstant TIMER3_BANK #x10001800) ;; does NOT have HOLD register! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; PC Port Timer @@ -27,19 +23,16 @@ "Read the 300 MHz clock." ;; __read-ee-timer is a 300 MHz timer from the C Kernel. ;; it's a real timer. - `(the uint (logand #xffffffff (__read-ee-timer))) - ) + `(the uint (logand #xffffffff (__read-ee-timer)))) (defmacro get-bus-clock/256 () "Read the 150 MHz / 256 clock." ;; 300 MHz / (2^9) - `(the uint (logand #xffffffff (shr (__read-ee-timer) 9))) - ) + `(the uint (logand #xffffffff (shr (__read-ee-timer) 9)))) (#when PC_PORT ;; the bus clock can be reset, which just stores the current count here. - (define *timer-reset-value* (the uint 0)) - ) + (define *timer-reset-value* (the uint 0))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Timer HW @@ -49,52 +42,43 @@ (busclk 0) (busclk/16 1) (busclk/256 2) - (hblank 3) - ) + (hblank 3)) ;; DECOMP BEGINS ;; this matches the Tn_MODE register structure of the ps2 EE timers. ;; Only the lower 32 bits of these registers are usable, and the upper 16 hardwired to zero (deftype timer-mode (uint32) - ((clks timer-clock-selection :offset 0 :size 2) - (gate uint8 :offset 2 :size 1) - (gats uint8 :offset 3 :size 1) - (gatm uint8 :offset 4 :size 2) - (zret uint8 :offset 6 :size 1) - (cue uint8 :offset 7 :size 1) - (cmpe uint8 :offset 8 :size 1) - (ovfe uint8 :offset 9 :size 1) - (equf uint8 :offset 10 :size 1) - (ovff uint8 :offset 11 :size 1) - ) - ) + ((clks timer-clock-selection :offset 0 :size 2) + (gate uint8 :offset 2 :size 1) + (gats uint8 :offset 3 :size 1) + (gatm uint8 :offset 4 :size 2) + (zret uint8 :offset 6 :size 1) + (cue uint8 :offset 7 :size 1) + (cmpe uint8 :offset 8 :size 1) + (ovfe uint8 :offset 9 :size 1) + (equf uint8 :offset 10 :size 1) + (ovff uint8 :offset 11 :size 1))) ;; this matches an EE timer (without a HOLD register, timers 2 and 3) ;; Each register is 128-bits wide, but only the lower 32-bits are usable, and the upper ;; 16-bits of that are hardwired to zero. (deftype timer-bank (structure) - ((count uint32 :offset 0) - (mode timer-mode :offset 16) - (comp uint32 :offset 32) - ) - ) + ((count uint32 :offset 0) + (mode timer-mode :offset 16) + (comp uint32 :offset 32))) ;; this matches an EE timer (with a HOLD register, timers 0 and 1) (deftype timer-hold-bank (timer-bank) - ((hold uint32 :offset 48) - ) - ) + ((hold uint32 :offset 48))) ;; stopwatches are used to measure CPU clock cycles ;; they don't use the timer above, but instead the Count COP0 register ;; which counts CPU clock cycles directly (deftype stopwatch (basic) - ((prev-time-elapsed time-frame) - (start-time time-frame) - (begin-level int32) - ) - ) + ((prev-time-elapsed time-frame) + (start-time time-frame) + (begin-level int32))) ;; Confusing! What IS this measuring exactly? Hmm... ;; this is set by default for NTSC, it will later be changed if PAL. @@ -103,13 +87,11 @@ (defun timer-init ((timer timer-bank) (mode timer-mode)) "Initiate a timer, start counting at a rate of 1 every 256 bus clocks (BUSCLK: ~147.456MHz)." (set! (-> timer mode) mode) - (set! (-> timer count) 0) - ) + (set! (-> timer count) 0)) ;; needs PS2 TIMER porting (#unless PC_PORT - (timer-init (the-as timer-bank TIMER1_BANK) (new 'static 'timer-mode :clks (timer-clock-selection busclk/16) :cue 1)) - ) + (timer-init (the-as timer-bank TIMER1_BANK) (new 'static 'timer-mode :clks (timer-clock-selection busclk/16) :cue 1))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Profiler @@ -122,42 +104,32 @@ ;; A single thing in the profiler (deftype profile-frame (structure) - ((name symbol) - (time-stamp uint32) - (color rgba) - ) - ) - + ((name symbol) + (time-stamp uint32) + (color rgba))) ;; A "bar" to display all the timed events (declare-type dma-buffer basic) + (deftype profile-bar (basic) - ((profile-frame-count int32) - (cache-time time-frame) - (data profile-frame 1024 :inline) - ) + ((profile-frame-count int32) + (cache-time time-frame) + (data profile-frame 1024 :inline)) (:methods - (new (symbol type) _type_) - (get-last-frame-time-stamp (_type_) uint) - (reset (_type_) _type_) - (add-frame (_type_ symbol rgba) profile-frame) - (add-end-frame (_type_ symbol rgba) profile-frame) - (draw (_type_ dma-buffer int) float) - ) - ) + (new (symbol type) _type_) + (get-last-frame-time-stamp (_type_) uint) + (reset (_type_) _type_) + (add-frame (_type_ symbol rgba) profile-frame) + (add-end-frame (_type_ symbol rgba) profile-frame) + (draw (_type_ dma-buffer int) float))) (defmacro add-ee-profile-frame (name &key (r 0) &key (g 0) &key (b 0) &key (a #x80)) `(if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - ,name - (new 'static 'rgba :r ,r :g ,g :b ,b :a ,a) - ) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + ,name + (new 'static 'rgba :r ,r :g ,g :b ,b :a ,a)))) ;; tentative name -(defmethod get-last-frame-time-stamp profile-bar ((this profile-bar)) +(defmethod get-last-frame-time-stamp ((this profile-bar)) "Returns the timestamp of the last (non-remaining) frame on the profiler bar." - (-> this data (+ (-> this profile-frame-count) -2) time-stamp) - ) + (-> this data (+ (-> this profile-frame-count) -2) time-stamp)) diff --git a/goal_src/jak1/engine/ps2/timer.gc b/goal_src/jak1/engine/ps2/timer.gc index 35aedf26b9..05dd61e1ed 100644 --- a/goal_src/jak1/engine/ps2/timer.gc +++ b/goal_src/jak1/engine/ps2/timer.gc @@ -1,51 +1,31 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ps2/timer-h.gc") (require "kernel/gcommon.gc") -;; name: timer.gc -;; name in dgo: timer -;; dgos: GAME, ENGINE - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Timer (EE timers) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun timer-reset ((timer timer-bank)) "Reset a timer's counter to zero" - (#when PC_PORT ;; just store the current offset. - (if (= timer TIMER1_BANK) - (set! *timer-reset-value* (get-bus-clock/256)) - (format 0 "Unknown timer #x~X in timer-reset~%") - ) - (return (the uint 0)) - ) + (if (= timer TIMER1_BANK) (set! *timer-reset-value* (get-bus-clock/256)) (format 0 "Unknown timer #x~X in timer-reset~%")) + (return (the uint 0))) (.sync.l) (set! (-> timer count) 0) - (.sync.l) - ) + (.sync.l)) (defun timer-count ((timer timer-bank)) "Return a timer's counter value" - (#when PC_PORT (when (= timer TIMER1_BANK) - (return (- (get-bus-clock/256) *timer-reset-value*)) - ) - (format 0 "Unknown timer #x~X requested.~%" timer) - ) - + (return (- (get-bus-clock/256) *timer-reset-value*))) + (format 0 "Unknown timer #x~X requested.~%" timer)) (.sync.l) - (let ((count (-> timer count))) - (.sync.l) - count - ) - ) + (let ((count (-> timer count))) (.sync.l) count)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Interrupt Control @@ -62,10 +42,7 @@ (.mfc0 status Status) (logand! status status-mask) ;; should status-mask be replaced directly? (.mtc0 Status status) - (.sync.p) - ) - ) - ) + (.sync.p)))) (defun enable-irq () "Enable all interrupts. Has no effect on PC Port." @@ -73,10 +50,7 @@ (.mfc0 status Status) (logior! status COP0_STATUS_IE) (.mtc0 Status status) - (.sync.p) - ) - ) - + (.sync.p))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Stopwatch (CPU clock cycle counting) @@ -85,9 +59,7 @@ (defun stopwatch-init ((obj stopwatch)) "Init a stopwatch" (set! (-> obj begin-level) 0) - (set! (-> obj prev-time-elapsed) 0) - ) - + (set! (-> obj prev-time-elapsed) 0)) (defun stopwatch-reset ((obj stopwatch)) "Restart a stopwatch's times" @@ -96,12 +68,8 @@ (let ((count 0)) (.mfc0 count Count) (#when PC_PORT - (set! count (the int (get-cpu-clock))) - ) - (set! (-> obj start-time) count) - ) - ) - ) + (set! count (the int (get-cpu-clock)))) + (set! (-> obj start-time) count)))) (defun stopwatch-start ((obj stopwatch)) "Start a stopwatch from scratch" @@ -110,12 +78,8 @@ (let ((count 0)) (.mfc0 count Count) (#when PC_PORT - (set! count (the int (get-cpu-clock))) - ) - (set! (-> obj start-time) count) - ) - ) - ) + (set! count (the int (get-cpu-clock)))) + (set! (-> obj start-time) count)))) (defun stopwatch-stop ((obj stopwatch)) "Fully stop a stopwatch and save its elapsed time" @@ -125,14 +89,9 @@ (let ((count 0)) (.mfc0 count Count) ;; wrong register? a typo in a rlet? who knows. (#when PC_PORT - (set! count (the int (get-cpu-clock))) - ) - (+! (-> obj prev-time-elapsed) (- count (-> obj start-time))) - ) - ) - ) - (none) - ) + (set! count (the int (get-cpu-clock)))) + (+! (-> obj prev-time-elapsed) (- count (-> obj start-time)))))) + (none)) (defun stopwatch-begin ((obj stopwatch)) "Begin a stopwatch level, and starts it if it hasn't yet" @@ -140,13 +99,9 @@ (let ((count 0)) (.mfc0 count Count) (#when PC_PORT - (set! count (the int (get-cpu-clock))) - ) - (set! (-> obj start-time) count) - ) - ) - (+! (-> obj begin-level) 1) - ) + (set! count (the int (get-cpu-clock)))) + (set! (-> obj start-time) count))) + (+! (-> obj begin-level) 1)) (defun stopwatch-end ((obj stopwatch)) "End a stopwatch level. Stops the stopwatch if it's back to level zero. @@ -158,14 +113,9 @@ (let ((count 0)) (.mfc0 count Count) (#when PC_PORT - (set! count (the int (get-cpu-clock))) - ) - - (+! (-> obj prev-time-elapsed) (- count (-> obj start-time))) - ) - ) - (none) - ) + (set! count (the int (get-cpu-clock)))) + (+! (-> obj prev-time-elapsed) (- count (-> obj start-time))))) + (none)) (defun stopwatch-elapsed-ticks ((obj stopwatch)) "Returns the elapsed time so far (in clock cycles) of a stopwatch" @@ -174,23 +124,17 @@ (let ((count 0)) (.mfc0 count Count) (#when PC_PORT - (set! count (the int (get-cpu-clock))) - ) - + (set! count (the int (get-cpu-clock)))) (+! elapsed (- count (-> obj start-time))) (set! count elapsed) ;; ?? - ) - ) - elapsed - ) - ) + )) + elapsed)) (defglobalconstant EE_SECONDS_PER_TICK (/ 1.0 300000000)) ;; 300MHz is a "decent enough" estimate + (defmacro cpu-ticks-to-seconds (ticks) - `(* ,EE_SECONDS_PER_TICK ,ticks) - ) + `(* ,EE_SECONDS_PER_TICK ,ticks)) + (defun stopwatch-elapsed-seconds ((obj stopwatch)) "Returns the elapsed time so far (in seconds) of a stopwatch" - (cpu-ticks-to-seconds (stopwatch-elapsed-ticks obj)) - ) - + (cpu-ticks-to-seconds (stopwatch-elapsed-ticks obj))) diff --git a/goal_src/jak1/engine/ps2/vif-h.gc b/goal_src/jak1/engine/ps2/vif-h.gc index 78fb470def..80f6d399f5 100644 --- a/goal_src/jak1/engine/ps2/vif-h.gc +++ b/goal_src/jak1/engine/ps2/vif-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: vif-h.gc -;; name in dgo: vif-h -;; dgos: GAME, ENGINE - ;; Types related to VIF: the PS2's Vector Interface. ;; Each of VU0 and VU1 has a VIF which is used to sent/receive data. ;; The VIFs are controller by registers and fed data using DMA @@ -19,65 +14,57 @@ ;;VIF0_STAT or VIF1_STAT bitfields (deftype vif-stat (uint32) - ((vps uint8 :offset 0 :size 2) - (vew uint8 :offset 2 :size 1) - (mrk uint8 :offset 6 :size 1) - (vss uint8 :offset 8 :size 1) - (vfs uint8 :offset 9 :size 1) - (vis uint8 :offset 10 :size 1) - (int uint8 :offset 11 :size 1) - (er0 uint8 :offset 12 :size 1) - (er1 uint8 :offset 13 :size 1) - (fqc uint8 :offset 24 :size 4) - ) - ) - + ((vps uint8 :offset 0 :size 2) + (vew uint8 :offset 2 :size 1) + (mrk uint8 :offset 6 :size 1) + (vss uint8 :offset 8 :size 1) + (vfs uint8 :offset 9 :size 1) + (vis uint8 :offset 10 :size 1) + (int uint8 :offset 11 :size 1) + (er0 uint8 :offset 12 :size 1) + (er1 uint8 :offset 13 :size 1) + (fqc uint8 :offset 24 :size 4))) ;; VIF "reset" register. (deftype vif-fbrst (uint32) - ((rst uint8 :offset 0 :size 1) - (fbk uint8 :offset 1 :size 1) - (stp uint8 :offset 2 :size 1) - (stc uint8 :offset 3 :size 1) - ) - ) + ((rst uint8 :offset 0 :size 1) + (fbk uint8 :offset 1 :size 1) + (stp uint8 :offset 2 :size 1) + (stc uint8 :offset 3 :size 1))) ;; Error mask register (deftype vif-err (uint32) - ((mii uint8 :offset 0 :size 1) - (me0 uint8 :offset 1 :size 1) - (me1 uint8 :offset 2 :size 1) - ) - ) + ((mii uint8 :offset 0 :size 1) + (me0 uint8 :offset 1 :size 1) + (me1 uint8 :offset 2 :size 1))) ;; Common layout of hardware registers shared between the two VIFs (deftype vif-bank (structure) - ((stat uint32) - (fbrst uint32 :offset 16) - (err vif-err :offset 32) - (mark uint32 :offset 48) - (cycle uint32 :offset 64) - (mode uint32 :offset 80) - (num uint32 :offset 96) - (mask uint32 :offset 112) - (code uint32 :offset 128) - (itops uint32 :offset 144) - (base uint32 :offset 160) - (offset uint32 :offset 176) - (tops uint32 :offset 192) - (itop uint32 :offset 208) - (top uint32 :offset 224) - (r0 uint32 :offset 256) - (r1 uint32 :offset 272) - (r2 uint32 :offset 288) - (r3 uint32 :offset 304) - (c0 uint32 :offset 320) - (c1 uint32 :offset 336) - (c2 uint32 :offset 352) - (c3 uint32 :offset 368) - ) - ) + ((stat uint32) + (fbrst uint32 :offset 16) + (err vif-err :offset 32) + (mark uint32 :offset 48) + (cycle uint32 :offset 64) + (mode uint32 :offset 80) + (num uint32 :offset 96) + (mask uint32 :offset 112) + (code uint32 :offset 128) + (itops uint32 :offset 144) + (base uint32 :offset 160) + (offset uint32 :offset 176) + (tops uint32 :offset 192) + (itop uint32 :offset 208) + (top uint32 :offset 224) + (r0 uint32 :offset 256) + (r1 uint32 :offset 272) + (r2 uint32 :offset 288) + (r3 uint32 :offset 304) + (c0 uint32 :offset 320) + (c1 uint32 :offset 336) + (c2 uint32 :offset 352) + (c3 uint32 :offset 368))) ;; PS2 VIF map. There are no VIFs in OpenGOAL. (defconstant VIF0_BANK (the vif-bank #x10003800)) + (defconstant VIF1_BANK (the vif-bank #x10003c00)) diff --git a/goal_src/jak1/engine/ps2/vu1-macros.gc b/goal_src/jak1/engine/ps2/vu1-macros.gc index c497fcc824..8127221ae5 100644 --- a/goal_src/jak1/engine/ps2/vu1-macros.gc +++ b/goal_src/jak1/engine/ps2/vu1-macros.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: vu1-macros.gc -;; name in dgo: vu1-macros -;; dgos: GAME, ENGINE - ;; this file has no code, just macros for vector-unit stuff. ;; in OpenGOAL we're also using this for VU0 macros to help with VU0 operations that are not @@ -19,38 +14,25 @@ If this ends up used a lot, it's probably worth rewriting. " `(let ((vec (new 'stack 'vector)) - (flag ,cf) - ) - (.svf vec ,vfr) - (let* ((w-plus (fabs (-> vec w))) - (w-minus (- 0.0 w-plus)) - ) - ;; CF = CF << 6 - (set! flag (logand #xffffff (shl flag 6))) - - (when (> (-> vec x) w-plus) - (logior! flag 1) - ) - (when (< (-> vec x) w-minus) - (logior! flag 2) - ) - (when (> (-> vec y) w-plus) - (logior! flag 4) - ) - (when (< (-> vec y) w-minus) - (logior! flag 8) - ) - (when (> (-> vec z) w-plus) - (logior! flag 16) - ) - (when (< (-> vec z) w-minus) - (logior! flag 32) - ) - ) - flag - ) - ) - + (flag ,cf)) + (.svf vec ,vfr) + (let* ((w-plus (fabs (-> vec w))) + (w-minus (- 0.0 w-plus))) + ;; CF = CF << 6 + (set! flag (logand #xffffff (shl flag 6))) + (when (> (-> vec x) w-plus) + (logior! flag 1)) + (when (< (-> vec x) w-minus) + (logior! flag 2)) + (when (> (-> vec y) w-plus) + (logior! flag 4)) + (when (< (-> vec y) w-minus) + (logior! flag 8)) + (when (> (-> vec z) w-plus) + (logior! flag 16)) + (when (< (-> vec z) w-minus) + (logior! flag 32))) + flag)) (defmacro vftoi4.xyzw (dst src) "convert to 28.4 integer. This does the multiply while the number is still @@ -58,15 +40,8 @@ is how PCSX2 does it as well, so maybe it's right? NOTE: this is the only version of the instruction used in Jak 1, so we don't need to worry about masks." - `(begin - (rlet ((temp :class vf)) - (set! temp 16.0) - (.mul.x.vf temp ,src temp) - (.ftoi.vf ,dst temp) - ) - ) - ) + (rlet ((temp :class vf)) (set! temp 16.0) (.mul.x.vf temp ,src temp) (.ftoi.vf ,dst temp)))) (defmacro vftoi12.xyzw (dst src) "convert to 20.12 integer. This does the multiply while the number is still @@ -74,15 +49,8 @@ is how PCSX2 does it as well, so maybe it's right? NOTE: this is the only version of the instruction used in Jak 1, so we don't need to worry about masks." - `(begin - (rlet ((temp :class vf)) - (set! temp 4096.0) - (.mul.x.vf temp ,src temp) - (.ftoi.vf ,dst temp) - ) - ) - ) + (rlet ((temp :class vf)) (set! temp 4096.0) (.mul.x.vf temp ,src temp) (.ftoi.vf ,dst temp)))) (defmacro vftoi15.xyzw (dst src) "convert to 17.15 integer. This does the multiply while the number is still @@ -90,15 +58,8 @@ is how PCSX2 does it as well, so maybe it's right? NOTE: this is the only version of the instruction used in Jak 1, so we don't need to worry about masks." - `(begin - (rlet ((temp :class vf)) - (set! temp 32768.0) - (.mul.x.vf temp ,src temp) - (.ftoi.vf ,dst temp) - ) - ) - ) + (rlet ((temp :class vf)) (set! temp 32768.0) (.mul.x.vf temp ,src temp) (.ftoi.vf ,dst temp)))) (defmacro vitof4.xyzw (dst src) "convert from a 28.4 integer. This does the multiply while the number is still @@ -106,15 +67,8 @@ is how PCSX2 does it as well, so maybe it's right? NOTE: this is the only version of the instruction used in Jak 1, so we don't need to worry about masks." - `(begin - (rlet ((temp :class vf)) - (.itof.vf ,dst ,src) - (set! temp 0.0625) - (.mul.x.vf ,dst ,dst temp) - ) - ) - ) + (rlet ((temp :class vf)) (.itof.vf ,dst ,src) (set! temp 0.0625) (.mul.x.vf ,dst ,dst temp)))) (defmacro vitof12.xyzw (dst src) "convert from a 20.12 integer. This does the multiply while the number is still @@ -122,15 +76,8 @@ is how PCSX2 does it as well, so maybe it's right? NOTE: this is the only version of the instruction used in Jak 1, so we don't need to worry about masks." - -`(begin - (rlet ((temp :class vf)) - (.itof.vf ,dst ,src) - (set! temp 0.000244140625) - (.mul.x.vf ,dst ,dst temp) - ) - ) -) + `(begin + (rlet ((temp :class vf)) (.itof.vf ,dst ,src) (set! temp 0.000244140625) (.mul.x.vf ,dst ,dst temp)))) (defmacro vitof15.xyzw (dst src) "convert from a 17.15 integer. This does the multiply while the number is still @@ -138,15 +85,8 @@ is how PCSX2 does it as well, so maybe it's right? NOTE: this is the only version of the instruction used in Jak 1, so we don't need to worry about masks." - -`(begin - (rlet ((temp :class vf)) - (.itof.vf ,dst ,src) - (set! temp 0.000030517578125) - (.mul.x.vf ,dst ,dst temp) - ) - ) -) + `(begin + (rlet ((temp :class vf)) (.itof.vf ,dst ,src) (set! temp 0.000030517578125) (.mul.x.vf ,dst ,dst temp)))) ;; In the original game, init-for-transform stashed a bunch of stuff in registers, to be used by other functions. ;; In OpenGOAL, this seems risky so we're going to back up this manually. @@ -185,31 +125,21 @@ (vf28 uint128) (vf29 uint128) (vf30 uint128) - (vf31 uint128) - ) - ) + (vf31 uint128))) (define *transform-regs* (new 'static 'transform-regs)) - (defmacro with-vf0 (&rest body) "Macro for using the ps2-style vf0 register." - - `(rlet ((vf0 :class vf)) - (init-vf0-vector) - ,@body - ) - ) + `(rlet ((vf0 :class vf)) (init-vf0-vector) ,@body)) (defmacro load-vf (reg) "Load a vf from the preserved vf registers" - `(.lvf ,reg (&-> *transform-regs* ,reg)) - ) + `(.lvf ,reg (&-> *transform-regs* ,reg))) (defmacro save-vf (reg) "Save a vf to the preserved vf registers" - `(.svf (&-> *transform-regs* ,reg) ,reg) - ) + `(.svf (&-> *transform-regs* ,reg) ,reg)) (defmacro with-vf (regs &key (rw 'read) &rest body) "Macro for using the specified ps2-style vf registers. These are preserved in *transform-regs* @@ -219,27 +149,8 @@ 'write means the registers will be written to the preserved registers at the end 'readwrite (or 'rw) means both #f means neither, turning this into a fancy macro around rlet." - `(rlet (,@(apply (lambda (x) `(,x :class vf)) regs)) - - ,@(if (or (eq? rw ''read) (eq? rw ''readwrite) (eq? rw ''rw)) - (apply (lambda (y) - `(load-vf ,y) - ) regs) - '() - ) - - ,@body - - ;; this will mess up the return value! - ,@(if (or (eq? rw ''write) (eq? rw ''readwrite) (eq? rw ''rw)) - (apply (lambda (y) - `(save-vf ,y) - ) regs) - '() - ) - - ) - ) - - + ,@(if (or (eq? rw ''read) (eq? rw ''readwrite) (eq? rw ''rw)) (apply (lambda (y) `(load-vf ,y)) regs) '()) + ,@body + ;; this will mess up the return value! + ,@(if (or (eq? rw ''write) (eq? rw ''readwrite) (eq? rw ''rw)) (apply (lambda (y) `(save-vf ,y)) regs) '()))) diff --git a/goal_src/jak1/engine/sound/gsound-h.gc b/goal_src/jak1/engine/sound/gsound-h.gc index c4016f7a51..8a75cda205 100644 --- a/goal_src/jak1/engine/sound/gsound-h.gc +++ b/goal_src/jak1/engine/sound/gsound-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: gsound-h.gc -;; name in dgo: gsound-h -;; dgos: GAME, ENGINE - ;; Type definitions for sound. ;; Sound is handled on the IOP, a separate processor. ;; The EE sends commands using the IOP RPC system to the OVERLORD IOP driver telling it to load and play sounds. @@ -25,49 +20,32 @@ (ambient) (sog5) (sog6) - (sog7) - ) + (sog7)) -(deftype sound-id (uint32) - () +(deftype sound-id (uint32) () (:methods - (unused-9 () none) - ) - ) + (unused-9 () none))) -(deftype sound-bank-id (uint32) - () - ) +(deftype sound-bank-id (uint32) ()) ;; Sound names were sometimes packed into a uint128 ;; this is also used for dgo names sent to the IOP. ;; fields added by us (deftype sound-name (uint128) - ((lo uint64 :offset 0 :size 64) - (hi uint64 :offset 64 :size 64) - ) - ) + ((lo uint64 :offset 0 :size 64) + (hi uint64 :offset 64 :size 64))) (defmacro static-sound-name (str) "Convert a string constant to a static sound-name." - ;; all this is done at compile-time so we can come up with 2 ;; 64-bit constants to use (when (> (string-length str) 16) - (error "static-sound-name got a string that is too long") - ) + (error "static-sound-name got a string that is too long")) (let ((lo-val 0) - (hi-val 0) - ) + (hi-val 0)) (dotimes (i (string-length str)) - (if (>= i 8) - (+! hi-val (ash (string-ref str i) (* 8 (- i 8)))) - (+! lo-val (ash (string-ref str i) (* 8 i))) - ) - ) - `(new 'static 'sound-name :lo ,lo-val :hi ,hi-val) - ) - ) + (if (>= i 8) (+! hi-val (ash (string-ref str i) (* 8 (- i 8)))) (+! lo-val (ash (string-ref str i) (* 8 i))))) + `(new 'static 'sound-name :lo ,lo-val :hi ,hi-val))) ;; command types that can be sent to the IOP. (defenum sound-command @@ -96,8 +74,7 @@ (list-sounds) (unload-music) (set-fps) - (set-mirror 201) - ) + (set-mirror 201)) ;; flavors for music (defenum music-flava @@ -150,8 +127,7 @@ (lavatube-end 46) (finalboss-middle 47) (finalboss-end 48) - (default 49) - ) + (default 49)) (defenum sound-mask :bitfield #t @@ -164,325 +140,227 @@ (trans) (fo-min) (fo-max) - (fo-curve) - ) + (fo-curve)) (defenum sound-mirror-mode :type uint8 (normal) - (mirrored) - ) + (mirrored)) ;; like should match the sound type in OVERLORD ;; This is shared between all sound RPCs and acts like the header for the sound messages (deftype sound-rpc-cmd (structure) - ((rsvd1 uint16) - (command sound-command) - ) - ) - + ((rsvd1 uint16) + (command sound-command))) (deftype sound-play-parms (structure) - ((mask sound-mask) - (pitch-mod int16) - (bend int16) - (fo-min int16) - (fo-max int16) - (fo-curve int8) - (priority int8) - (volume int32) - (trans vector3w :inline) - (group sound-group) - ) - :pack-me - ) - + ((mask sound-mask) + (pitch-mod int16) + (bend int16) + (fo-min int16) + (fo-max int16) + (fo-curve int8) + (priority int8) + (volume int32) + (trans vector3w :inline) + (group sound-group)) + :pack-me) (deftype sound-rpc-bank-cmd (sound-rpc-cmd) - ((bank-name sound-name) - ) - ) - + ((bank-name sound-name))) (deftype sound-rpc-sound-cmd (sound-rpc-cmd) - ((id sound-id) - ) - ) - + ((id sound-id))) (deftype sound-rpc-group-cmd (sound-rpc-cmd) - ((group sound-group) - ) - ) - - -(deftype sound-rpc-load-bank (sound-rpc-bank-cmd) - () - ) - + ((group sound-group))) -(deftype sound-rpc-load-music (sound-rpc-bank-cmd) - () - ) +(deftype sound-rpc-load-bank (sound-rpc-bank-cmd) ()) +(deftype sound-rpc-load-music (sound-rpc-bank-cmd) ()) -(deftype sound-rpc-unload-bank (sound-rpc-bank-cmd) - () - ) - +(deftype sound-rpc-unload-bank (sound-rpc-bank-cmd) ()) (deftype sound-rpc-play (sound-rpc-sound-cmd) - ((name sound-name) - (parms sound-play-parms :inline) - ) - ) - - -(deftype sound-rpc-pause-sound (sound-rpc-sound-cmd) - () - ) - - -(deftype sound-rpc-stop-sound (sound-rpc-sound-cmd) - () - ) + ((name sound-name) + (parms sound-play-parms :inline))) +(deftype sound-rpc-pause-sound (sound-rpc-sound-cmd) ()) -(deftype sound-rpc-continue-sound (sound-rpc-sound-cmd) - () - ) +(deftype sound-rpc-stop-sound (sound-rpc-sound-cmd) ()) +(deftype sound-rpc-continue-sound (sound-rpc-sound-cmd) ()) (deftype sound-rpc-set-param (sound-rpc-sound-cmd) - ((parms sound-play-parms :inline) - (auto-time int32) - (auto-from int32) - ) - ) - + ((parms sound-play-parms :inline) + (auto-time int32) + (auto-from int32))) (deftype sound-rpc-set-master-volume (sound-rpc-group-cmd) - ((volume int32) - ) - ) - - -(deftype sound-rpc-pause-group (sound-rpc-group-cmd) - () - ) - + ((volume int32))) -(deftype sound-rpc-stop-group (sound-rpc-group-cmd) - () - ) +(deftype sound-rpc-pause-group (sound-rpc-group-cmd) ()) +(deftype sound-rpc-stop-group (sound-rpc-group-cmd) ()) -(deftype sound-rpc-continue-group (sound-rpc-group-cmd) - () - ) - +(deftype sound-rpc-continue-group (sound-rpc-group-cmd) ()) (deftype sound-rpc-get-irx-version (sound-rpc-cmd) - ((major uint32) - (minor uint32) - (ee-addr pointer) - ) - ) - + ((major uint32) + (minor uint32) + (ee-addr pointer))) (deftype sound-rpc-set-language (sound-rpc-cmd) - ((lang uint32) - ) - ) - + ((lang uint32))) (deftype sound-rpc-set-falloff-curve (sound-rpc-cmd) - ((curve int32) - (falloff int32) - (ease int32) - ) - ) - + ((curve int32) + (falloff int32) + (ease int32))) (deftype sound-rpc-set-sound-falloff (sound-rpc-cmd) - ((name sound-name) - (curve int32) - (min int32) - (max int32) - ) - ) - - -(deftype sound-rpc-reload-info (sound-rpc-cmd) - () - ) + ((name sound-name) + (curve int32) + (min int32) + (max int32))) +(deftype sound-rpc-reload-info (sound-rpc-cmd) ()) (deftype sound-rpc-set-reverb (sound-rpc-cmd) - ((core uint8) - (reverb int32) - (left uint32) - (right uint32) - ) - ) - + ((core uint8) + (reverb int32) + (left uint32) + (right uint32))) (deftype sound-rpc-set-ear-trans (sound-rpc-cmd) - ((ear-trans vector3w :inline) - (cam-trans vector3w :inline) - (cam-angle int32) - ) - ) - + ((ear-trans vector3w :inline) + (cam-trans vector3w :inline) + (cam-angle int32))) (deftype sound-rpc-set-flava (sound-rpc-cmd) - ((flava uint8) - ) - ) - - -(deftype sound-rpc-shutdown (sound-rpc-cmd) - () - ) + ((flava uint8))) +(deftype sound-rpc-shutdown (sound-rpc-cmd) ()) (deftype sound-rpc-set-fps (sound-rpc-cmd) - ((fps uint8) - ) - ) - - -(deftype sound-rpc-list-sounds (sound-rpc-cmd) - () - ) + ((fps uint8))) +(deftype sound-rpc-list-sounds (sound-rpc-cmd) ()) -(deftype sound-rpc-unload-music (sound-rpc-cmd) - () - ) +(deftype sound-rpc-unload-music (sound-rpc-cmd) ()) ;; og:preserve-this added for mirror mode (deftype sound-rpc-set-mirror-mode (sound-rpc-cmd) ((mirror sound-mirror-mode))) - ;; union of all the possible sound commands. (deftype sound-rpc-union (structure) - ((data uint32 20) - (load-bank sound-rpc-load-bank :overlay-at (-> data 0)) - (unload-bank sound-rpc-unload-bank :overlay-at (-> data 0)) - (play sound-rpc-play :overlay-at (-> data 0)) - (pause-sound sound-rpc-pause-sound :overlay-at (-> data 0)) - (stop-sound sound-rpc-stop-sound :overlay-at (-> data 0)) - (continue-sound sound-rpc-continue-sound :overlay-at (-> data 0)) - (set-param sound-rpc-set-param :overlay-at (-> data 0)) - (set-master-volume sound-rpc-set-master-volume :overlay-at (-> data 0)) - (pause-group sound-rpc-pause-group :overlay-at (-> data 0)) - (stop-group sound-rpc-stop-group :overlay-at (-> data 0)) - (continue-group sound-rpc-continue-group :overlay-at (-> data 0)) - (get-irx-version sound-rpc-get-irx-version :overlay-at (-> data 0)) - (set-falloff-curve sound-rpc-set-falloff-curve :overlay-at (-> data 0)) - (set-sound-falloff sound-rpc-set-sound-falloff :overlay-at (-> data 0)) - (reload-info sound-rpc-reload-info :overlay-at (-> data 0)) - (set-language sound-rpc-set-language :overlay-at (-> data 0)) - (set-reverb sound-rpc-set-reverb :overlay-at (-> data 0)) - (set-ear-trans sound-rpc-set-ear-trans :overlay-at (-> data 0)) - (set-flava sound-rpc-set-flava :overlay-at (-> data 0)) - (set-fps sound-rpc-set-fps :overlay-at (-> data 0)) - (shutdown sound-rpc-shutdown :overlay-at (-> data 0)) - (list-sounds sound-rpc-list-sounds :overlay-at (-> data 0)) - (unload-music sound-rpc-unload-music :overlay-at (-> data 0)) - (mirror-mode sound-rpc-set-mirror-mode :overlay-at (-> data 0)) - ) - ) + ((data uint32 20) + (load-bank sound-rpc-load-bank :overlay-at (-> data 0)) + (unload-bank sound-rpc-unload-bank :overlay-at (-> data 0)) + (play sound-rpc-play :overlay-at (-> data 0)) + (pause-sound sound-rpc-pause-sound :overlay-at (-> data 0)) + (stop-sound sound-rpc-stop-sound :overlay-at (-> data 0)) + (continue-sound sound-rpc-continue-sound :overlay-at (-> data 0)) + (set-param sound-rpc-set-param :overlay-at (-> data 0)) + (set-master-volume sound-rpc-set-master-volume :overlay-at (-> data 0)) + (pause-group sound-rpc-pause-group :overlay-at (-> data 0)) + (stop-group sound-rpc-stop-group :overlay-at (-> data 0)) + (continue-group sound-rpc-continue-group :overlay-at (-> data 0)) + (get-irx-version sound-rpc-get-irx-version :overlay-at (-> data 0)) + (set-falloff-curve sound-rpc-set-falloff-curve :overlay-at (-> data 0)) + (set-sound-falloff sound-rpc-set-sound-falloff :overlay-at (-> data 0)) + (reload-info sound-rpc-reload-info :overlay-at (-> data 0)) + (set-language sound-rpc-set-language :overlay-at (-> data 0)) + (set-reverb sound-rpc-set-reverb :overlay-at (-> data 0)) + (set-ear-trans sound-rpc-set-ear-trans :overlay-at (-> data 0)) + (set-flava sound-rpc-set-flava :overlay-at (-> data 0)) + (set-fps sound-rpc-set-fps :overlay-at (-> data 0)) + (shutdown sound-rpc-shutdown :overlay-at (-> data 0)) + (list-sounds sound-rpc-list-sounds :overlay-at (-> data 0)) + (unload-music sound-rpc-unload-music :overlay-at (-> data 0)) + (mirror-mode sound-rpc-set-mirror-mode :overlay-at (-> data 0)))) ;; GOAL-side sound specification. (deftype sound-spec (basic) - ((mask sound-mask) - (num float) - (group sound-group) - (sound-name-char uint8 16 :offset 16) - (sound-name sound-name :overlay-at (-> sound-name-char 0)) - (trans float 4) - (volume int32) - (pitch-mod int32) - (bend int32) - (fo-min int16) - (fo-max int16) - (fo-curve int8) - (priority int8) - (auto-time int32) - (auto-from int32) - ) - ) + ((mask sound-mask) + (num float) + (group sound-group) + (sound-name-char uint8 16 :offset 16) + (sound-name sound-name :overlay-at (-> sound-name-char 0)) + (trans float 4) + (volume int32) + (pitch-mod int32) + (bend int32) + (fo-min int16) + (fo-max int16) + (fo-curve int8) + (priority int8) + (auto-time int32) + (auto-from int32))) (defmacro sound-vol (vol) "convert to sound volume units" - (if (number? vol) - (* 1 (/ (* vol 1024) 100)) - `(the int (/ (* ,vol 1024) 100)) - ) - ) - -(defmacro static-sound-spec (name &key (num 1.0) &key (group 1) - &key (volume #f) - &key (pitch-mod 0) - &key (fo-min 0) &key (fo-max 0) - &key (mask ())) + (if (number? vol) (* 1 (/ (* vol 1024) 100)) `(the int (/ (* ,vol 1024) 100)))) + +(defmacro static-sound-spec (name &key (num 1.0) &key (group 1) &key (volume #f) &key (pitch-mod 0) &key (fo-min 0) &key (fo-max 0) &key (mask ())) (let ((snd-mask mask) (snd-volume 100.0)) - (when (nonzero? fo-max) (cons! snd-mask 'fo-max)) - (when (nonzero? fo-min) (cons! snd-mask 'fo-min)) - (when (nonzero? pitch-mod) (cons! snd-mask 'pitch)) - (when volume (cons! snd-mask 'volume) (set! snd-volume volume)) - `(new 'static 'sound-spec - :sound-name (static-sound-name ,name) - :num ,num - :group ,group - :volume (sound-vol ,snd-volume) - :pitch-mod ,pitch-mod - :fo-min ,fo-min - :fo-max ,fo-max - :mask (sound-mask ,@snd-mask) - )) - ) + (when (nonzero? fo-max) + (cons! snd-mask 'fo-max)) + (when (nonzero? fo-min) + (cons! snd-mask 'fo-min)) + (when (nonzero? pitch-mod) + (cons! snd-mask 'pitch)) + (when volume + (cons! snd-mask 'volume) + (set! snd-volume volume)) + `(new 'static + 'sound-spec + :sound-name (static-sound-name ,name) + :num ,num + :group ,group + :volume (sound-vol ,snd-volume) + :pitch-mod ,pitch-mod + :fo-min ,fo-min + :fo-max ,fo-max + :mask (sound-mask ,@snd-mask)))) ;; each sound command gets a unique ID. (define *current-sound-id* (the sound-id #x10000)) ;; a in-game background sound. (declare-type entity basic) + (deftype ambient-sound (basic) - ((spec sound-spec) - (playing-id sound-id) - (trans vector :inline) - (name sound-name) - (play-time time-frame) - (time-base time-frame) - (time-random time-frame) - (volume int32) - (pitch int32) - (falloff-near int32) - (falloff-far int32) - (falloff-mode int32) - (params (pointer float)) - (param-count int32) - (entity entity) - (sound-count int32) - ) + ((spec sound-spec) + (playing-id sound-id) + (trans vector :inline) + (name sound-name) + (play-time time-frame) + (time-base time-frame) + (time-random time-frame) + (volume int32) + (pitch int32) + (falloff-near int32) + (falloff-far int32) + (falloff-mode int32) + (params (pointer float)) + (param-count int32) + (entity entity) + (sound-count int32)) (:methods - (new (symbol type basic vector) _type_) - (update! (_type_) int) - (change-sound! (_type_ sound-name) int) - (update-trans! (_type_ vector) int) - (update-vol! (_type_ int) int) - (stop! (_type_) int) - ) - ) + (new (symbol type basic vector) _type_) + (update! (_type_) int) + (change-sound! (_type_ sound-name) int) + (update-trans! (_type_ vector) int) + (update-vol! (_type_ int) int) + (stop! (_type_) int))) ;; currently loaded sound effect banks. ;; there is an always-loaded common bank and two level-specific banks. (define *sound-bank-1* #f) + (define *sound-bank-2* #f) ;; added for PC port @@ -491,5 +369,7 @@ (enum->string music-flava f)) (defun-extern string->sound-name string sound-name) + (defun-extern sound-set-ear-trans vector vector float int) + (defun-extern ear-trans vector) diff --git a/goal_src/jak1/engine/sound/gsound.gc b/goal_src/jak1/engine/sound/gsound.gc index cbe79e3d50..caea67ed8e 100644 --- a/goal_src/jak1/engine/sound/gsound.gc +++ b/goal_src/jak1/engine/sound/gsound.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/settings-h.gc") (require "engine/camera/cam-update-h.gc") (require "engine/game/main-h.gc") @@ -11,42 +10,36 @@ (require "engine/ps2/rpc-h.gc") (require "engine/sound/gsound-h.gc") -;; name: gsound.gc -;; name in dgo: gsound -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS ;; The sound playback stuff is all on the IOP so we use IOP RPCs to control it. ;; There is a "player" that plays sound effects, and a "loader" that takes care of loading banks. -(define *sound-player-rpc* (new 'global 'rpc-buffer-pair (the uint (size-of sound-rpc-union)) (the-as uint 128) RPC-SOUND-PLAYER)) -(define *sound-loader-rpc* (new 'global 'rpc-buffer-pair (the uint (size-of sound-rpc-union)) (the-as uint 1) RPC-SOUND-LOADER)) +(define *sound-player-rpc* + (new 'global 'rpc-buffer-pair (the uint (size-of sound-rpc-union)) (the-as uint 128) RPC-SOUND-PLAYER)) + +(define *sound-loader-rpc* + (new 'global 'rpc-buffer-pair (the uint (size-of sound-rpc-union)) (the-as uint 1) RPC-SOUND-LOADER)) (defun sound-name= ((arg0 sound-name) (arg1 sound-name)) "Return #t if both are the same name" (declare (inline)) - - (and (= (-> arg0 lo) (-> arg1 lo)) - (= (-> arg0 hi) (-> arg1 hi))) - ) + (and (= (-> arg0 lo) (-> arg1 lo)) (= (-> arg0 hi) (-> arg1 hi)))) (deftype sound-iop-info (basic) - ((frame uint32 :offset 16) - (strpos int32) - (str-id sound-id) - (str-id-sign int32 :overlay-at str-id) - (freemem uint32) - (chinfo uint8 48) - (freemem2 uint32) - (nocd uint32) - (dirtycd uint32) - (diskspeed uint32 2) - (lastspeed uint32) - (dupseg int32) - (times uint32 41) - (times-seq uint32) - ) - ) + ((frame uint32 :offset 16) + (strpos int32) + (str-id sound-id) + (str-id-sign int32 :overlay-at str-id) + (freemem uint32) + (chinfo uint8 48) + (freemem2 uint32) + (nocd uint32) + (dirtycd uint32) + (diskspeed uint32 2) + (lastspeed uint32) + (dupseg int32) + (times uint32 41) + (times-seq uint32))) (define *sound-iop-info* (new 'global 'sound-iop-info)) @@ -54,174 +47,127 @@ (defun str-is-playing? () "Return #t if an audio stream is playing" - - (!= (-> *sound-iop-info* strpos) -1) - ) + (!= (-> *sound-iop-info* strpos) -1)) (defun current-str-id () "Return id of the current stream" - - (the-as sound-id (-> *sound-iop-info* str-id-sign)) - ) + (the-as sound-id (-> *sound-iop-info* str-id-sign))) (defun current-str-pos ((str sound-id)) "Return position of the current stream. Return -1 if specified stream is not current" - - (let ((ret -1)) - - (if (= str (-> *sound-iop-info* str-id)) - (set! ret (-> *sound-iop-info* strpos)) - ) - - ret - ) - ) + (let ((ret -1)) (if (= str (-> *sound-iop-info* str-id)) (set! ret (-> *sound-iop-info* strpos))) ret)) (defun is-cd-in? () - (declare (inline)) - (zero? (-> *sound-iop-info* nocd)) - ) + (zero? (-> *sound-iop-info* nocd))) (defmacro is-cd-good? () - `(zero? (-> *sound-iop-info* dirtycd)) - ) + `(zero? (-> *sound-iop-info* dirtycd))) (defun new-sound-id () (set! *current-sound-id* (the sound-id (1+ (the uint *current-sound-id*)))) - (if (< (the-as int *current-sound-id*) #x10000) - (set! *current-sound-id* (the-as sound-id #x10000)) - ) - *current-sound-id* - ) + (if (< (the-as int *current-sound-id*) #x10000) (set! *current-sound-id* (the-as sound-id #x10000))) + *current-sound-id*) (defun check-irx-version () (let ((cmd (the sound-rpc-get-irx-version (add-element *sound-loader-rpc*)))) - (set! (-> cmd command) (sound-command get-irx-version)) - (set! (-> cmd ee-addr) (&-> *sound-iop-info* frame)) - (call *sound-loader-rpc* (the-as uint 0) (the-as pointer cmd) (the uint (size-of sound-rpc-union))) - (sync *sound-loader-rpc* #f) - - (format 0 "IRX version ~D.~D~%" (-> cmd major) (-> cmd minor)) - (when (or (!= (-> cmd major) 2) (nonzero? (-> cmd minor))) - (format 0 "ERROR: IRX is the wrong version - need ~D.~D~%" 2 0) - (format 0 "~%~%Please do (:mch) then mkee on linux-dog~%~%~%") - (crash!) - 0 - ) - ) - 0 - ) + (set! (-> cmd command) (sound-command get-irx-version)) + (set! (-> cmd ee-addr) (&-> *sound-iop-info* frame)) + (call *sound-loader-rpc* (the-as uint 0) (the-as pointer cmd) (the uint (size-of sound-rpc-union))) + (sync *sound-loader-rpc* #f) + (format 0 "IRX version ~D.~D~%" (-> cmd major) (-> cmd minor)) + (when (or (!= (-> cmd major) 2) (nonzero? (-> cmd minor))) + (format 0 "ERROR: IRX is the wrong version - need ~D.~D~%" 2 0) + (format 0 "~%~%Please do (:mch) then mkee on linux-dog~%~%~%") + (crash!) + 0)) + 0) ;; Note: we check the IRX version on load to make sure that the OVERLORD driver is the right version ;; and has loaded successfully. (check-irx-version) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; sound loading ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun sound-bank-load ((name sound-name)) (let ((id (new-sound-id))) - (let ((cmd (the sound-rpc-load-bank (add-element *sound-loader-rpc*)))) - (set! (-> cmd command) (sound-command load-bank)) - (set! (-> cmd bank-name) name) - ) - (call *sound-loader-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - id - ) - ) + (let ((cmd (the sound-rpc-load-bank (add-element *sound-loader-rpc*)))) + (set! (-> cmd command) (sound-command load-bank)) + (set! (-> cmd bank-name) name)) + (call *sound-loader-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) + id)) (defun sound-bank-unload ((name sound-name)) (let ((cmd (the sound-rpc-unload-bank (add-element *sound-loader-rpc*)))) - (set! (-> cmd command) (sound-command unload-bank)) - (set! (-> cmd bank-name) name) - ) + (set! (-> cmd command) (sound-command unload-bank)) + (set! (-> cmd bank-name) name)) (call *sound-loader-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - 0 - ) + 0) (defun sound-music-load ((name sound-name)) (let ((cmd (the sound-rpc-load-music (add-element *sound-loader-rpc*)))) - (set! (-> cmd command) (sound-command load-music)) - (set! (-> cmd bank-name) name) - ) + (set! (-> cmd command) (sound-command load-music)) + (set! (-> cmd bank-name) name)) (call *sound-loader-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - 0 - ) + 0) (defun sound-music-unload () (let ((cmd (the sound-rpc-unload-music (add-element *sound-loader-rpc*)))) - (set! (-> cmd command) (sound-command unload-music)) - ) + (set! (-> cmd command) (sound-command unload-music))) (call *sound-loader-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - 0 - ) + 0) (case (scf-get-territory) - ((GAME_TERRITORY_SCEI) - (sound-bank-load (static-sound-name "commonj")) - ) - (else - (sound-bank-load (static-sound-name "common")) - ) - ) + ((GAME_TERRITORY_SCEI) (sound-bank-load (static-sound-name "commonj"))) + (else (sound-bank-load (static-sound-name "common")))) + (sound-bank-load (static-sound-name "empty1")) + (sound-bank-load (static-sound-name "empty2")) (define *sound-bank-1* 'empty1) + (define *sound-bank-2* 'empty2) (defun sound-reload-info () (let ((cmd (the sound-rpc-reload-info (add-element *sound-loader-rpc*)))) - (set! (-> cmd command) (sound-command reload-info)) - ) + (set! (-> cmd command) (sound-command reload-info))) (call *sound-loader-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - 0 - ) + 0) (defun set-language ((lang language-enum)) (kset-language lang) (let ((cmd (the sound-rpc-set-language (add-element *sound-loader-rpc*)))) - (set! (-> cmd command) (sound-command set-language)) - (set! (-> cmd lang) (the-as uint lang)) - ) + (set! (-> cmd command) (sound-command set-language)) + (set! (-> cmd lang) (the-as uint lang))) (call *sound-loader-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - 0 - ) + 0) (defun list-sounds () (let ((cmd (the sound-rpc-list-sounds (add-element *sound-loader-rpc*)))) - (set! (-> cmd command) (sound-command list-sounds)) - ) + (set! (-> cmd command) (sound-command list-sounds))) (call *sound-loader-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - 0 - ) + 0) (defun-debug sound-command->string ((cmd sound-command)) - (enum->string sound-command cmd) - ) + (enum->string sound-command cmd)) (defun sound-buffer-dump () (let ((elt-used (-> *sound-player-rpc* current elt-used)) (elt-size (-> *sound-player-rpc* current elt-size))) - (dotimes (i (the-as int elt-used)) - (let* ((cmd (the sound-rpc-play (&+ (-> *sound-player-rpc* current base) (* elt-size (the-as uint i))))) - (a3-0 (sound-command->string (-> cmd command))) - (command (-> cmd command)) - ) - (if (= command (sound-command play)) - (format #t "~D ~A ~G~%" i a3-0 (&-> cmd name)) ;; og:preserve-this it's meant to point to the name i guess... - (format #t "~D ~A~%" i a3-0) - ) - ) - ) - ) - 0 - ) + (dotimes (i (the-as int elt-used)) + (let* ((cmd (the sound-rpc-play (&+ (-> *sound-player-rpc* current base) (* elt-size (the-as uint i))))) + (a3-0 (sound-command->string (-> cmd command))) + (command (-> cmd command))) + (if (= command (sound-command play)) + (format #t "~D ~A ~G~%" i a3-0 (&-> cmd name)) ;; og:preserve-this it's meant to point to the name i guess... + (format #t "~D ~A~%" i a3-0))))) + 0) (define *sound-current-mirror* (sound-mirror-mode normal)) + (defun sound-set-mirror-mode ((mode sound-mirror-mode)) (when (!= mode *sound-current-mirror*) (let ((cmd (the sound-rpc-set-mirror-mode (add-element *sound-loader-rpc*)))) @@ -239,100 +185,63 @@ (defun swap-sound-buffers ((arg0 vector) (arg1 vector) (arg2 float)) (cond - ((check-busy *sound-player-rpc*) - (set! *sound-player-enable* #f) - ) + ((check-busy *sound-player-rpc*) (set! *sound-player-enable* #f)) (else (let ((a0-2 (-> *sound-player-rpc* current))) - (if (< (-> a0-2 elt-used) (-> a0-2 elt-count)) - (sound-set-ear-trans arg0 arg1 arg2) - ) - ) + (if (< (-> a0-2 elt-used) (-> a0-2 elt-count)) (sound-set-ear-trans arg0 arg1 arg2))) (call *sound-player-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) - (set! *sound-player-enable* #t) - ) - ) + (set! *sound-player-enable* #t))) (cond ((not (is-cd-in?)) - (if (or (not *progress-process*) - (!= (-> *progress-process* 0 display-state) (progress-screen no-disc))) - (activate-progress *dproc* (progress-screen no-disc)) - ) - ) - + (if (or (not *progress-process*) (!= (-> *progress-process* 0 display-state) (progress-screen no-disc))) + (activate-progress *dproc* (progress-screen no-disc)))) ((not (is-cd-good?)) - (if (or (not *progress-process*) - (!= (-> *progress-process* 0 display-state) (progress-screen bad-disc))) - (activate-progress *dproc* (progress-screen bad-disc)) - ) - ) - ) - 0 - ) + (if (or (not *progress-process*) (!= (-> *progress-process* 0 display-state) (progress-screen bad-disc))) + (activate-progress *dproc* (progress-screen bad-disc))))) + 0) (defun get-sound-buffer-entry () - (add-element *sound-player-rpc*) - ) + (add-element *sound-player-rpc*)) (defun free-last-sound-buffer-entry () (decrement-elt-used *sound-player-rpc*) - 0 - ) + 0) (defun sound-basic-cb ((arg0 int) (arg1 (pointer int32))) "This function is unused." (set! (-> arg1 0) arg0) - (none) - ) + (none)) (defun sound-trans-convert ((dest vector3w) (src vector)) (let ((vec (if src src (ear-trans)))) - (set! (-> dest x) (the int (* (1/ 16) (-> vec x)))) - (set! (-> dest y) (the int (* (1/ 16) (-> vec y)))) - (set! (-> dest z) (the int (* (1/ 16) (-> vec z)))) - ) - 0 - ) + (set! (-> dest x) (the int (* (1/ 16) (-> vec x)))) + (set! (-> dest y) (the int (* (1/ 16) (-> vec y)))) + (set! (-> dest z) (the int (* (1/ 16) (-> vec z))))) + 0) (defun sound-angle-convert ((deg float)) (let ((ret (the int (* (/ 360.0 65536.0) (the float (sar (shl (the int deg) 48) 48)))))) - (if (< ret 0) - (+! ret 360) - ) - (if (< 359 ret) - (+! ret -360) - ) - ret - ) - ) + (if (< ret 0) (+! ret 360)) + (if (< 359 ret) (+! ret -360)) + ret)) (defun string->sound-name ((str string)) (let ((snd-name (new 'stack-no-clear 'qword))) (set! (-> snd-name quad) (the-as uint128 0)) (let ((out-ptr (the-as (pointer uint8) snd-name)) - (in-ptr (-> str data)) - ) - (while (and (nonzero? (-> in-ptr 0)) - (< (&- in-ptr (the-as uint (-> str data))) 15) - ) + (in-ptr (-> str data))) + (while (and (nonzero? (-> in-ptr 0)) (< (&- in-ptr (the-as uint (-> str data))) 15)) (set! (-> out-ptr 0) (-> in-ptr 0)) (set! out-ptr (&-> out-ptr 1)) - (set! in-ptr (&-> in-ptr 1)) - ) - ) - (the-as sound-name (-> snd-name quad)) - ) - ) + (set! in-ptr (&-> in-ptr 1)))) + (the-as sound-name (-> snd-name quad)))) (defun sound-set-volume ((group sound-group) (volume float)) - (let ((cmd (the sound-rpc-set-master-volume (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command set-master-volume)) - (set! (-> cmd group) group) - (set! (-> cmd volume) (the int (* 10.24 volume))) - ) - 0 - ) + (set! (-> cmd command) (sound-command set-master-volume)) + (set! (-> cmd group) group) + (set! (-> cmd volume) (the int (* 10.24 volume)))) + 0) (defun sound-set-reverb ((arg0 int) (arg1 float) (arg2 float) (arg3 uint)) (let ((cmd (the-as sound-rpc-set-reverb (get-sound-buffer-entry)))) @@ -340,56 +249,43 @@ (set! (-> cmd core) arg3) (set! (-> cmd reverb) arg0) (set! (-> cmd left) (the-as uint (the int (* 32767.0 arg1)))) - (set! (-> cmd right) (the-as uint (the int (* 32767.0 arg2)))) - ) - 0 - ) + (set! (-> cmd right) (the-as uint (the int (* 32767.0 arg2))))) + 0) (defun sound-set-ear-trans ((ear-trans vector) (cam-trans vector) (cam-angle float)) (let ((cmd (the sound-rpc-set-ear-trans (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command set-ear-trans)) - (sound-trans-convert (-> cmd ear-trans) ear-trans) - (sound-trans-convert (-> cmd cam-trans) cam-trans) - (set! (-> cmd cam-angle) (sound-angle-convert cam-angle)) - ) - 0 - ) + (set! (-> cmd command) (sound-command set-ear-trans)) + (sound-trans-convert (-> cmd ear-trans) ear-trans) + (sound-trans-convert (-> cmd cam-trans) cam-trans) + (set! (-> cmd cam-angle) (sound-angle-convert cam-angle))) + 0) (defmacro sound-trans-from-process (cmd sound-trans) "Macro for getting an appropriate sound-trans from a process-drawable, if possible" - `(with-pp (let ((proc (the process-drawable pp))) (when (= ,sound-trans #t) - (if (and proc - (type-type? (-> proc type) process-drawable) - (nonzero? (-> proc root))) + (if (and proc (type-type? (-> proc type) process-drawable) (nonzero? (-> proc root))) (set! ,sound-trans (-> proc root trans)) - (set! ,sound-trans (the vector #f)) - ) - ) - ) - - (sound-trans-convert (-> ,cmd parms trans) ,sound-trans) - ) - ) - -(defmacro sound-play (name &key (id (new-sound-id)) - &key (vol 100.0) &key (pitch 0) &key (bend 0) - &key (group sfx) - &key (position #t)) - `(sound-play-by-name (static-sound-name ,name) ,id (the int (* (/ 1024.0 100.0) ,vol)) (the int (* 1524.0 ,pitch)) ,bend (sound-group ,group) ,position) - ) + (set! ,sound-trans (the vector #f))))) + (sound-trans-convert (-> ,cmd parms trans) ,sound-trans))) + +(defmacro sound-play (name &key (id (new-sound-id)) &key (vol 100.0) &key (pitch 0) &key (bend 0) &key (group sfx) &key (position #t)) + `(sound-play-by-name (static-sound-name ,name) + ,id + (the int (* (/ 1024.0 100.0) ,vol)) + (the int (* 1524.0 ,pitch)) + ,bend + (sound-group ,group) + ,position)) (defun sound-play-by-name ((name sound-name) (id sound-id) (vol int) (pitch int) (bend int) (group sound-group) (trans symbol)) "Play a sound called name with the specified params" - (local-vars (sv-16 sound-group)) (set! sv-16 group) (let ((sound-trans (the-as vector trans))) (when *sound-player-enable* (let ((cmd (the-as sound-rpc-play (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command play)) (set! (-> cmd id) id) (set! (-> cmd name) name) @@ -398,146 +294,102 @@ (set! (-> cmd parms volume) vol) (set! (-> cmd parms pitch-mod) pitch) (set! (-> cmd parms bend) bend) - - (sound-trans-from-process cmd sound-trans) - ) - ) - ) - id - ) + (sound-trans-from-process cmd sound-trans)))) + id) (defun sound-play-by-spec ((spec sound-spec) (id sound-id) (sound-trans vector)) "Play a sound from the given spec" - (when *sound-player-enable* (let ((cmd (the sound-rpc-play (get-sound-buffer-entry)))) - - (set! (-> cmd command) (sound-command play)) - (set! (-> cmd id) id) - (set! (-> cmd name) (-> spec sound-name)) - (set! (-> cmd parms mask) (-> spec mask)) - (set! (-> cmd parms group) (-> spec group)) - (set! (-> cmd parms volume) (-> spec volume)) - (set! (-> cmd parms pitch-mod) (-> spec pitch-mod)) - (set! (-> cmd parms bend) (-> spec bend)) - (set! (-> cmd parms fo-min) (-> spec fo-min)) - (set! (-> cmd parms fo-max) (-> spec fo-max)) - (set! (-> cmd parms fo-curve) (-> spec fo-curve)) - (set! (-> cmd parms priority) (-> spec priority)) - - (sound-trans-from-process cmd sound-trans) - ) - ) - id - ) + (set! (-> cmd command) (sound-command play)) + (set! (-> cmd id) id) + (set! (-> cmd name) (-> spec sound-name)) + (set! (-> cmd parms mask) (-> spec mask)) + (set! (-> cmd parms group) (-> spec group)) + (set! (-> cmd parms volume) (-> spec volume)) + (set! (-> cmd parms pitch-mod) (-> spec pitch-mod)) + (set! (-> cmd parms bend) (-> spec bend)) + (set! (-> cmd parms fo-min) (-> spec fo-min)) + (set! (-> cmd parms fo-max) (-> spec fo-max)) + (set! (-> cmd parms fo-curve) (-> spec fo-curve)) + (set! (-> cmd parms priority) (-> spec priority)) + (sound-trans-from-process cmd sound-trans))) + id) (defun sound-pause ((id sound-id)) - (let ((cmd (the sound-rpc-pause-sound (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command pause-sound)) - (set! (-> cmd id) id) - ) - 0 - ) + (set! (-> cmd command) (sound-command pause-sound)) + (set! (-> cmd id) id)) + 0) (defun sound-stop ((id sound-id)) - (let ((cmd (the sound-rpc-stop-sound (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command stop-sound)) - (set! (-> cmd id) id) - ) - 0 - ) + (set! (-> cmd command) (sound-command stop-sound)) + (set! (-> cmd id) id)) + 0) (defun sound-continue ((id sound-id)) - (let ((cmd (the sound-rpc-continue-sound (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command continue-sound)) - (set! (-> cmd id) id) - ) - 0 - ) + (set! (-> cmd command) (sound-command continue-sound)) + (set! (-> cmd id) id)) + 0) (defun sound-group-pause ((group sound-group)) - (let ((cmd (the sound-rpc-pause-group (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command pause-group)) - (set! (-> cmd group) group) - ) - 0 - ) + (set! (-> cmd command) (sound-command pause-group)) + (set! (-> cmd group) group)) + 0) (defun sound-group-stop ((group sound-group)) - (let ((cmd (the sound-rpc-stop-group (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command stop-group)) - (set! (-> cmd group) group) - ) - 0 - ) + (set! (-> cmd command) (sound-command stop-group)) + (set! (-> cmd group) group)) + 0) (defun sound-group-continue ((group sound-group)) - (let ((cmd (the sound-rpc-continue-group (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command continue-group)) - (set! (-> cmd group) group) - ) - 0 - ) + (set! (-> cmd command) (sound-command continue-group)) + (set! (-> cmd group) group)) + 0) (defun sound-set-falloff-curve ((curve int) (falloff float) (ease float)) - (let ((cmd (the sound-rpc-set-falloff-curve (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command set-falloff-curve)) - (set! (-> cmd curve) curve) - (set! (-> cmd falloff) (the int (* 4096.0 falloff))) - (set! (-> cmd ease) (the int (* 4096.0 ease))) - ) - 0 - ) + (set! (-> cmd command) (sound-command set-falloff-curve)) + (set! (-> cmd curve) curve) + (set! (-> cmd falloff) (the int (* 4096.0 falloff))) + (set! (-> cmd ease) (the int (* 4096.0 ease)))) + 0) (defun sound-set-sound-falloff ((name sound-name) (falloff-min int) (falloff-max int) (curve int)) - (let ((cmd (the sound-rpc-set-sound-falloff (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command set-sound-falloff)) - (set! (-> cmd name) name) - (set! (-> cmd min) falloff-min) - (set! (-> cmd max) falloff-max) - (set! (-> cmd curve) curve) - ) - 0 - ) + (set! (-> cmd command) (sound-command set-sound-falloff)) + (set! (-> cmd name) name) + (set! (-> cmd min) falloff-min) + (set! (-> cmd max) falloff-max) + (set! (-> cmd curve) curve)) + 0) (defun sound-set-flava ((flava uint)) - (let ((cmd (the sound-rpc-set-flava (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command set-flava)) - (set! (-> cmd flava) flava) - ) - 0 - ) + (set! (-> cmd command) (sound-command set-flava)) + (set! (-> cmd flava) flava)) + 0) (defun sound-set-fps ((arg0 int)) - (let ((cmd (the-as sound-rpc-set-fps (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command set-fps)) - (set! (-> cmd fps) (the-as uint arg0)) - ) - 0 - ) + (set! (-> cmd command) (sound-command set-fps)) + (set! (-> cmd fps) (the-as uint arg0))) + 0) (defun sound-volume-off () "Set all sound volume to zero" - (set-setting! 'music-volume 'abs 0.0 0) (set-setting! 'sfx-volume 'abs 0.0 0) (set-setting! 'ambient-volume 'abs 0.0 0) - 0 - ) + 0) (define *ambient-spec* (new 'static 'sound-spec)) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; ambient-sound stuff ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -546,99 +398,61 @@ "Make a new ambient-sound. If failed, returns 0 and doesn't allocate anything. src specifies the sound params source. This can be a string or symbol (the sound name), a sound-spec, or an entity-actor or entity-ambient (reads effect-name, cycle-speed and effect-param from the entity)." - (let ((spec (the sound-spec #f)) (name (new 'static 'sound-name)) (sound-times (the (pointer float) #f)) (params (the sound-play-parms #f)) - (param-count 0) - ) - (case (-> src type) - ((entity-actor entity-ambient) - (awhen (res-lump-struct-exact (the entity src) 'effect-name symbol) - (set! name (string->sound-name (symbol->string it))) - (set! sound-times (res-lump-data (the entity src) 'cycle-speed (pointer float))) - (set! spec *ambient-spec*) - (let ((tag (new 'static 'res-tag))) - (awhen (res-lump-data-exact (the entity src) 'effect-param sound-play-parms :tag-ptr (& tag)) - (set! params it) - (set! param-count (the int (-> tag elt-count))) - ) - ) - ) - ) - ((sound-spec) - (set! spec (the sound-spec src)) - ) - ((symbol) - (set! name (string->sound-name (symbol->string (the symbol src)))) - ) - ((string) - (set! name (string->sound-name (the string src))) - ) - (else - (format 0 "ERROR: ambient sound was told to play an unknown ~A.~%" src) - ) - ) - - (cond - ((or spec (nonzero? name)) - (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - (set! (-> this spec) spec) - (set! (-> this name) name) - (set! (-> this playing-id) (new-sound-id)) - (set! (-> this params) (the-as (pointer float) params)) - (set! (-> this param-count) param-count) - (set! (-> this entity) #f) - (set! (-> this sound-count) 1) - (set! (-> this volume) 1024) - (set! (-> this pitch) 0) - (when (and spec (!= spec *ambient-spec*)) - (if (logtest? (-> spec mask) (sound-mask volume)) - (set! (-> this volume) (-> spec volume))) - (if (logtest? (-> spec mask) (sound-mask pitch)) - (set! (-> this pitch) (-> spec pitch-mod))) - ) - (cond - (sound-times - (set! (-> this time-base) (the int (* 300.0 (-> sound-times 0)))) - (set! (-> this time-random) (the int (* 300.0 (-> sound-times 1)))) - ) - (else - (set! (-> this time-base) -1) - ) - ) - (set! (-> this trans quad) (-> sound-trans quad)) - this - ) - ) - (else - (the ambient-sound 0) - ) - ) - ) - ) - + (param-count 0)) + (case (-> src type) + ((entity-actor entity-ambient) + (awhen (res-lump-struct-exact (the entity src) 'effect-name symbol) + (set! name (string->sound-name (symbol->string it))) + (set! sound-times (res-lump-data (the entity src) 'cycle-speed (pointer float))) + (set! spec *ambient-spec*) + (let ((tag (new 'static 'res-tag))) + (awhen (res-lump-data-exact (the entity src) 'effect-param sound-play-parms :tag-ptr (& tag)) + (set! params it) + (set! param-count (the int (-> tag elt-count))))))) + ((sound-spec) (set! spec (the sound-spec src))) + ((symbol) (set! name (string->sound-name (symbol->string (the symbol src))))) + ((string) (set! name (string->sound-name (the string src)))) + (else (format 0 "ERROR: ambient sound was told to play an unknown ~A.~%" src))) + (cond + ((or spec (nonzero? name)) + (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> this spec) spec) + (set! (-> this name) name) + (set! (-> this playing-id) (new-sound-id)) + (set! (-> this params) (the-as (pointer float) params)) + (set! (-> this param-count) param-count) + (set! (-> this entity) #f) + (set! (-> this sound-count) 1) + (set! (-> this volume) 1024) + (set! (-> this pitch) 0) + (when (and spec (!= spec *ambient-spec*)) + (if (logtest? (-> spec mask) (sound-mask volume)) (set! (-> this volume) (-> spec volume))) + (if (logtest? (-> spec mask) (sound-mask pitch)) (set! (-> this pitch) (-> spec pitch-mod)))) + (cond + (sound-times + (set! (-> this time-base) (the int (* 300.0 (-> sound-times 0)))) + (set! (-> this time-random) (the int (* 300.0 (-> sound-times 1))))) + (else (set! (-> this time-base) -1))) + (set! (-> this trans quad) (-> sound-trans quad)) + this)) + (else (the ambient-sound 0))))) (define-extern *debug-effect-control* symbol) + (defmethod update! ((this ambient-sound)) "Called once per frame to update the sound playback" - - (if (not *ambient-sound-class*) - (return (the int #f)) - ) + (if (not *ambient-sound-class*) (return (the int #f))) (cond ((-> this spec) - (when (or (< (-> this time-base) 0) - (>= (-> *display* base-frame-counter) (-> this play-time)) - ) + (when (or (< (-> this time-base) 0) (>= (-> *display* base-frame-counter) (-> this play-time))) (when (>= (-> this time-base) 0) - (set! (-> this play-time) (+ (-> *display* base-frame-counter) - (-> this time-base) - (rand-vu-int-count (-> this time-random)) - )) - (set! (-> this playing-id) (new-sound-id)) - ) + (set! (-> this play-time) + (+ (-> *display* base-frame-counter) (-> this time-base) (rand-vu-int-count (-> this time-random)))) + (set! (-> this playing-id) (new-sound-id))) (let ((spec (-> this spec))) (when (= spec *ambient-spec*) (set! (-> spec volume) (-> this volume)) @@ -647,119 +461,82 @@ (set! (-> spec sound-name) (-> this name)) (set! (-> spec fo-max) (-> this falloff-far)) (set! (-> spec mask) (sound-mask)) - (if (-> this params) - (effect-param->sound-spec spec (-> this params) (-> this param-count)) - ) - ) + (if (-> this params) (effect-param->sound-spec spec (-> this params) (-> this param-count)))) (if (and (nonzero? (-> spec fo-max)) - (< (* 4096.0 (the float (-> spec fo-max))) - (vector-vector-distance (ear-trans) (-> this trans)))) - (return 0) - ) + (< (* 4096.0 (the float (-> spec fo-max))) (vector-vector-distance (ear-trans) (-> this trans)))) + (return 0)) (when (and *debug-effect-control* (>= (-> this time-base) 0)) (with-pp - (format #t "(~5D) effect sound ~A ~G " - (-> *display* base-frame-counter) - (-> pp name) - (-> spec sound-name-char)) - (format #t "volume: ~f pitch-mod: ~f~%" + (format #t "(~5D) effect sound ~A ~G " (-> *display* base-frame-counter) (-> pp name) (-> spec sound-name-char)) + (format #t + "volume: ~f pitch-mod: ~f~%" (* (1/ 10.24) (the float (-> spec volume))) - (* 0.000656168 (the float (-> spec pitch-mod)))) - ) - ) + (* 0.000656168 (the float (-> spec pitch-mod)))))) (let ((spec-volume (-> spec volume))) (set! (-> spec volume) (-> this volume)) (set! (-> this playing-id) (sound-play-by-spec spec (-> this playing-id) (-> this trans))) - (set! (-> spec volume) spec-volume) - ) - ) - ) - ) + (set! (-> spec volume) spec-volume))))) (else (cond ((< (-> this time-base) 0) - (set! (-> this playing-id) (sound-play-by-name - (-> this name) - (-> this playing-id) - (-> this volume) - (-> this pitch) - 0 - (sound-group sfx) - (the-as symbol (-> this trans)))) - ) + (set! (-> this playing-id) + (sound-play-by-name (-> this name) + (-> this playing-id) + (-> this volume) + (-> this pitch) + 0 + (sound-group sfx) + (the-as symbol (-> this trans))))) (else (when (>= (-> *display* base-frame-counter) (-> this play-time)) - (set! (-> this playing-id) (sound-play-by-name - (-> this name) - (new-sound-id) - (-> this volume) - (-> this pitch) - 0 - (sound-group sfx) - (the-as symbol (-> this trans)))) - (set! (-> this play-time) (+ (-> *display* base-frame-counter) - (-> this time-base) - (rand-vu-int-count (-> this time-random)) - )) - ) - ) - ) - ) - ) - 0 - ) + (set! (-> this playing-id) + (sound-play-by-name (-> this name) + (new-sound-id) + (-> this volume) + (-> this pitch) + 0 + (sound-group sfx) + (the-as symbol (-> this trans)))) + (set! (-> this play-time) + (+ (-> *display* base-frame-counter) (-> this time-base) (rand-vu-int-count (-> this time-random))))))))) + 0) (defmethod stop! ((this ambient-sound)) "Halt playback of this ambient-sound" - (sound-stop (-> this playing-id)) - 0 - ) + 0) (defmethod update-trans! ((this ambient-sound) (sound-trans vector)) "Update the position of the thing playing the sound" - (set! (-> this trans quad) (-> sound-trans quad)) (when (nonzero? (-> this playing-id)) (let ((cmd (the sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> cmd command) (sound-command set-param)) - (set! (-> cmd id) (-> this playing-id)) - - (sound-trans-from-process cmd sound-trans) - - (set! (-> cmd parms mask) (sound-mask trans)) - (-> cmd id) - ) - ) - 0 - ) + (set! (-> cmd command) (sound-command set-param)) + (set! (-> cmd id) (-> this playing-id)) + (sound-trans-from-process cmd sound-trans) + (set! (-> cmd parms mask) (sound-mask trans)) + (-> cmd id))) + 0) (defmethod update-vol! ((this ambient-sound) (arg0 int)) "Update the volume of the sound" - (when (nonzero? (-> this playing-id)) (let ((cmd (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> cmd command) (sound-command set-param)) (set! (-> cmd id) (-> this playing-id)) (set! (-> cmd parms volume) (the int (* 10.24 (the float arg0)))) (set! (-> cmd parms mask) (sound-mask volume)) - (-> cmd id) - ) - ) + (-> cmd id))) (set! (-> this volume) (the int (* 10.24 (the float arg0)))) - 0 - ) + 0) (defmethod change-sound! ((this ambient-sound) (name sound-name)) "Change the sound being played" (when (not (sound-name= (-> this name) name)) (stop! this) (set! (-> this playing-id) (new-sound-id)) - (set! (-> this name) name) - ) - 0 - ) - + (set! (-> this name) name)) + 0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; sound iop debugging @@ -767,231 +544,144 @@ (defun show-iop-info ((buf dma-buffer)) "Display sound channel status in the top left corner" - (dotimes (ch 24) - (draw-string-xy - (if (zero? (-> *sound-iop-info* chinfo ch)) "." "X") - buf (+ (* ch 16) 16) 48 (font-color default) (font-flags shadow)) - ) + (draw-string-xy (if (zero? (-> *sound-iop-info* chinfo ch)) "." "X") + buf + (+ (* ch 16) 16) + 48 + (font-color default) + (font-flags shadow))) (dotimes (ch 24) - (draw-string-xy - (if (zero? (-> *sound-iop-info* chinfo (+ ch 24))) "." "X") - buf (+ (* ch 16) 16) 64 (font-color default) (font-flags shadow)) - ) - 0 - ) + (draw-string-xy (if (zero? (-> *sound-iop-info* chinfo (+ ch 24))) "." "X") + buf + (+ (* ch 16) 16) + 64 + (font-color default) + (font-flags shadow))) + 0) (defun show-iop-memory ((buf dma-buffer)) - (draw-string-xy - (string-format "~8D [~4D]" (-> *sound-iop-info* freemem) - (shr (-> *sound-iop-info* freemem) 10)) - buf 32 96 (font-color default) (font-flags shadow)) - (draw-string-xy - (string-format "~8D [~4D]" (-> *sound-iop-info* freemem2) - (shr (-> *sound-iop-info* freemem2) 10)) - buf 32 64 (font-color default) (font-flags shadow)) - 0 - ) - + (draw-string-xy (string-format "~8D [~4D]" (-> *sound-iop-info* freemem) (shr (-> *sound-iop-info* freemem) 10)) + buf + 32 + 96 + (font-color default) + (font-flags shadow)) + (draw-string-xy (string-format "~8D [~4D]" (-> *sound-iop-info* freemem2) (shr (-> *sound-iop-info* freemem2) 10)) + buf + 32 + 64 + (font-color default) + (font-flags shadow)) + 0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; sound utils ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun-extern math-camera-pos vector) + (defun-extern target-pos int vector) + (defun-extern camera-pos vector) + (defun ear-trans () "Return the trans for the game ear" - (cond - ((or (movie?) *external-cam-mode*) - (math-camera-pos) - ) - (*target* - (target-pos 0) - ) - (else - (camera-pos) - ) - ) - ) + ((or (movie?) *external-cam-mode*) (math-camera-pos)) + (*target* (target-pos 0)) + (else (camera-pos)))) (defun-debug make-sqrt-table () "Write the C code for the ??? square root table" - (format #t "static int sqrt_table[256] =~%{~%") (dotimes (i 256) (let* ((angle (sqrtf (* 16777216.0 (the float i)))) (angle-rounded (the int (+ 0.5 angle)))) - (format #t "~D,~%" angle-rounded) - ) - ) + (format #t "~D,~%" angle-rounded))) (format #t "};~%") - 0 - ) - + 0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; flava system ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (deftype flava-table-row (structure) - ((music symbol) - (flava uint8 50) ;; index is some flava event, value is music variation + ((music symbol) + (flava uint8 50) ;; index is some flava event, value is music variation ) - :allow-misaligned - ) + :allow-misaligned) (deftype flava-table (basic) - ((row flava-table-row 20 :inline) - (count int32) - ) - ) + ((row flava-table-row 20 :inline) + (count int32))) ;; make a new flava table with nothing defined (define *flava-table* (new 'global 'flava-table)) + (set! (-> *flava-table* count) 0) (defun flava-lookup ((music symbol) (n music-flava)) "Return the n'th flava for the specified music" - (dotimes (i (-> *flava-table* count)) - (if (= (-> *flava-table* row i music) music) - (return (the-as int (-> *flava-table* row i flava n))) - ) - ) - 0 - ) - + (if (= (-> *flava-table* row i music) music) (return (the-as int (-> *flava-table* row i flava n))))) + 0) (defmacro flava-table-add (name &rest flavas) "Add a new music and its flavas to the table" - `(begin ;; append a new music to the flava table (set! (-> *flava-table* row (-> *flava-table* count) music) (quote ,name)) - ;; reset this music's flavas (dotimes (n 50) - (set! (-> *flava-table* row (-> *flava-table* count) flava n) 0) - ) - + (set! (-> *flava-table* row (-> *flava-table* count) flava n) 0)) ;; increase the music count ;; (this should probably be done after...) (1+! (-> *flava-table* count)) - ;; set the flavas or whatever they're called - ,@(apply (lambda (x) `(set! (-> *flava-table* row (1- (-> *flava-table* count)) flava (music-flava ,(first x))) ,(second x))) flavas) - ) - ) + ,@(apply (lambda (x) + `(set! (-> *flava-table* row (1- (-> *flava-table* count)) flava (music-flava ,(first x))) ,(second x))) + flavas))) (flava-table-add village1 - (sage 2) - (assistant 6) - (birdlady 4) - (farmer 5) - (mayor 7) - (sculptor 8) - (explorer 9) - (dock 10) - (sage-hut 3) - ) - -(flava-table-add jungle - (jungle-temple-exit 1) - (jungle-lurkerm 2) - (jungle-temple-top 3) - ) - -(flava-table-add firecanyon - (racer 1) - ) - -(flava-table-add jungleb - (jungleb-eggtop 1) - ) - -(flava-table-add beach - (birdlady 4) - (beach-sentinel 1) - (beach-cannon 2) - (beach-grotto 3) - ) - -(flava-table-add misty - (racer 3) - (misty-boat 2) - (misty-battle 1) - ) - -(flava-table-add village2 - (sage 1) - (assistant 2) - (warrior 3) - (geologist 4) - (gambler 5) - (levitator 6) - ) - -(flava-table-add swamp - (flutflut 4) - (swamp-launcher 2) - (swamp-battle 3) - ) - -(flava-table-add rolling - (rolling-gorge 1) - ) - -(flava-table-add ogre - (ogre-middle 1) - (ogre-end 2) - ) - -(flava-table-add village3 - (to-maincave 4) - (to-snow 5) - (sage 2) - (assistant 3) - (miners 1) - ) - -(flava-table-add maincave - (robocave 1) - (robocave-top 2) - (maincave 3) - (darkcave 4) - ) - -(flava-table-add snow - (flutflut 2) - (snow-battle 1) - (snow-cave 3) - (snow-fort 4) - (snow-balls 5) - ) - -(flava-table-add lavatube - (lavatube-middle 2) - (lavatube-end 3) - (default 1) - ) - -(flava-table-add citadel - (sage 1) - (assistant 2) - (sage-yellow 3) - (sage-red 4) - (sage-blue 5) - (citadel-center 6) - ) - -(flava-table-add finalboss - (finalboss-middle 1) - (finalboss-end 2) - ) - -(flava-table-add credits - (default 2) - ) + (sage 2) + (assistant 6) + (birdlady 4) + (farmer 5) + (mayor 7) + (sculptor 8) + (explorer 9) + (dock 10) + (sage-hut 3)) + +(flava-table-add jungle (jungle-temple-exit 1) (jungle-lurkerm 2) (jungle-temple-top 3)) + +(flava-table-add firecanyon (racer 1)) + +(flava-table-add jungleb (jungleb-eggtop 1)) + +(flava-table-add beach (birdlady 4) (beach-sentinel 1) (beach-cannon 2) (beach-grotto 3)) + +(flava-table-add misty (racer 3) (misty-boat 2) (misty-battle 1)) + +(flava-table-add village2 (sage 1) (assistant 2) (warrior 3) (geologist 4) (gambler 5) (levitator 6)) + +(flava-table-add swamp (flutflut 4) (swamp-launcher 2) (swamp-battle 3)) + +(flava-table-add rolling (rolling-gorge 1)) + +(flava-table-add ogre (ogre-middle 1) (ogre-end 2)) + +(flava-table-add village3 (to-maincave 4) (to-snow 5) (sage 2) (assistant 3) (miners 1)) + +(flava-table-add maincave (robocave 1) (robocave-top 2) (maincave 3) (darkcave 4)) + +(flava-table-add snow (flutflut 2) (snow-battle 1) (snow-cave 3) (snow-fort 4) (snow-balls 5)) + +(flava-table-add lavatube (lavatube-middle 2) (lavatube-end 3) (default 1)) + +(flava-table-add citadel (sage 1) (assistant 2) (sage-yellow 3) (sage-red 4) (sage-blue 5) (citadel-center 6)) + +(flava-table-add finalboss (finalboss-middle 1) (finalboss-end 2)) + +(flava-table-add credits (default 2)) diff --git a/goal_src/jak1/engine/target/collide-reaction-target.gc b/goal_src/jak1/engine/target/collide-reaction-target.gc index 182c1ab8b0..07b073d858 100644 --- a/goal_src/jak1/engine/target/collide-reaction-target.gc +++ b/goal_src/jak1/engine/target/collide-reaction-target.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/collide/collide-shape.gc") -;; name: collide-reaction-target.gc -;; name in dgo: collide-reaction-target -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun collide-shape-moving-angle-set! ((arg0 collide-shape-moving) (arg1 vector) (arg2 vector)) @@ -15,22 +10,16 @@ (set! (-> arg0 surface-angle) (vector-dot arg1 (-> arg0 dynam gravity-normal))) (set! (-> arg0 poly-angle) (vector-dot (-> arg0 poly-normal) (-> arg0 dynam gravity-normal))) (set! (-> arg0 touch-angle) - (fmax - (-> arg0 touch-angle) - (vector-dot arg1 (vector-normalize! (vector-negate! (new-stack-vector0) arg2) 1.0)) - ) - ) + (fmax (-> arg0 touch-angle) (vector-dot arg1 (vector-normalize! (vector-negate! (new-stack-vector0) arg2) 1.0)))) 0 - (none) - ) + (none)) (defun target-collision-low-coverage ((arg0 control-info) - (arg1 collide-shape-intersect) - (arg2 vector) - (arg3 (pointer uint32)) - (arg4 (pointer uint64)) - (arg5 (pointer symbol)) - ) + (arg1 collide-shape-intersect) + (arg2 vector) + (arg3 (pointer uint32)) + (arg4 (pointer uint64)) + (arg5 (pointer symbol))) (local-vars (sv-16 vector) (sv-20 (pointer uint32)) @@ -46,8 +35,7 @@ (sv-208 vector) (sv-212 vector) (sv-272 vector) - (sv-276 vector) - ) + (sv-276 vector)) (set! sv-16 arg2) (set! sv-20 arg3) (set! sv-24 arg4) @@ -58,147 +46,92 @@ (set! sv-52 (-> arg0 unknown-vector60)) (set! sv-56 (vector-cross! (-> arg0 unknown-vector-coverage-2) (-> arg0 poly-normal) sv-16)) (vector-normalize! sv-56 1.0) - (if (>= (fabs (vector-dot (-> arg0 dynam gravity-normal) sv-56)) 0.866) - (set! sv-32 (logior sv-32 512)) - ) + (if (>= (fabs (vector-dot (-> arg0 dynam gravity-normal) sv-56)) 0.866) (set! sv-32 (logior sv-32 512))) (vector-cross! sv-52 sv-16 sv-56) - (if (< 0.0 (vector-dot (-> arg0 dynam gravity-normal) sv-52)) - (vector-negate! sv-52 sv-52) - ) + (if (< 0.0 (vector-dot (-> arg0 dynam gravity-normal) sv-52)) (vector-negate! sv-52 sv-52)) (vector-normalize! sv-52 1.0) (set! sv-160 (vector-flatten! (-> arg0 unknown-vector-coverage-3) sv-52 (-> arg0 dynam gravity-normal))) (set! sv-164 (new 'stack 'collide-tri-result)) (vector-normalize! sv-160 1.0) - (if (< (vector-dot sv-160 sv-16) 0.0) - (vector-negate! sv-160 sv-160) - ) + (if (< (vector-dot sv-160 sv-16) 0.0) (vector-negate! sv-160 sv-160)) (set! (-> arg0 unknown-float-coverage-0) 4095996000.0) (set! (-> arg0 unknown-float-coverage-2) 4095996000.0) (set! sv-208 (vector+float*! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) sv-160 2867.2)) (set! sv-212 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 dynam gravity-normal) -20480.0)) (vector+float*! sv-212 sv-212 sv-160 4096.0) - (when (>= (probe-using-line-sphere - *collide-cache* - sv-208 - sv-212 - 409.6 - (-> arg1 best-from-prim collide-with) - sv-164 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (when (>= (probe-using-line-sphere *collide-cache* + sv-208 + sv-212 + 409.6 + (-> arg1 best-from-prim collide-with) + sv-164 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> arg0 unknown-float-coverage-0) - (vector-dot - (-> arg0 dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> sv-164 intersect)) - ) - ) + (vector-dot (-> arg0 dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> sv-164 intersect)))) (set! (-> arg0 unknown-float-coverage-1) (the-as float (-> sv-164 pat))) (set! (-> arg0 unknown-vector-coverage-0 quad) (-> sv-164 normal quad)) - 0 - ) - (set! sv-272 (vector+float*! - (new 'stack-no-clear 'vector) - (-> arg1 best-tri intersect) - (-> arg0 dynam gravity-normal) - 819.2 - ) - ) + 0) + (set! sv-272 + (vector+float*! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> arg0 dynam gravity-normal) 819.2)) (set! sv-276 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 dynam gravity-normal) -20480.0)) (vector+float*! sv-272 sv-272 sv-160 -819.2) (vector+float*! sv-276 sv-276 sv-160 -4096.0) - (when (>= (probe-using-line-sphere - *collide-cache* - sv-272 - sv-276 - 409.6 - (-> arg1 best-from-prim collide-with) - sv-164 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (when (>= (probe-using-line-sphere *collide-cache* + sv-272 + sv-276 + 409.6 + (-> arg1 best-from-prim collide-with) + sv-164 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> arg0 unknown-float-coverage-2) (vector-vector-distance sv-272 (-> sv-164 intersect))) (set! (-> arg0 unknown-u32-coverage-0) (the-as uint (-> sv-164 pat))) (set! (-> arg0 unknown-vector-coverage-1 quad) (-> sv-164 normal quad)) - 0 - ) + 0) (when (and (not (logtest? sv-32 512)) (and (or (< (* 1.25 (-> arg1 best-from-prim local-sphere w)) (-> arg0 unknown-float-coverage-0)) - (= (shr (shl (the-as int (-> arg0 unknown-float-coverage-1)) 58) 61) 1) - ) + (= (shr (shl (the-as int (-> arg0 unknown-float-coverage-1)) 58) 61) 1)) (and (< (-> arg0 unknown-float-coverage-2) (* 2.0 (-> arg1 best-from-prim local-sphere w))) - (zero? (shr (shl (-> arg0 unknown-u32-coverage-0) 58) 61)) - ) - ) - ) + (zero? (shr (shl (-> arg0 unknown-u32-coverage-0) 58) 61))))) (set! sv-32 (logior sv-32 128)) (set! (-> arg0 unknown-dword-coverage) (the-as int (current-time))) (set! sv-40 (logior sv-40 128)) (set-time! (-> arg0 unknown-dword21)) (let ((f30-0 (vector-dot sv-52 (-> arg0 unknown-vector22))) - (f0-21 (if (logtest? sv-32 2) - (cos (- 16384.0 (acos (-> arg0 coverage)))) - (-> arg0 coverage) - ) - ) - (f1-11 (vector-dot - (-> arg0 dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> arg0 trans) (-> arg1 best-tri intersect)) - ) - ) - ) - (if (or (not (logtest? sv-32 32)) (< 0.5 f0-21)) - (set! sv-48 (the-as symbol #f)) - ) + (f0-21 (if (logtest? sv-32 2) (cos (- 16384.0 (acos (-> arg0 coverage)))) (-> arg0 coverage))) + (f1-11 (vector-dot (-> arg0 dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> arg0 trans) (-> arg1 best-tri intersect))))) + (if (or (not (logtest? sv-32 32)) (< 0.5 f0-21)) (set! sv-48 (the-as symbol #f))) (when (and (or (and (< f0-21 0.95) (>= f30-0 0.0)) (and (logtest? sv-32 32) (< f0-21 0.3)) - (< f1-11 (* -0.25 (-> arg1 best-from-prim local-sphere w))) - ) - (>= (vector-dot sv-52 sv-16) -0.000001) - ) + (< f1-11 (* -0.25 (-> arg1 best-from-prim local-sphere w)))) + (>= (vector-dot sv-52 sv-16) -0.000001)) (set! (-> arg0 surf) *edge-surface*) (set! sv-32 (logior sv-32 1024)) (set! sv-48 (the-as symbol #f)) (when (logtest? sv-32 32) (set! sv-48 #t) - (set! sv-32 (logior sv-32 4096)) - ) - ) - ) - ) - (if (< (-> arg0 surface-angle) 0.0) - (set! sv-48 #t) - ) + (set! sv-32 (logior sv-32 4096)))))) + (if (< (-> arg0 surface-angle) 0.0) (set! sv-48 #t)) (when sv-48 (cond ((and (or (= (-> arg0 poly-pat mode) (pat-mode ground)) (and (logtest? sv-32 8) (>= (* 1.25 (-> arg1 best-from-prim local-sphere w)) (-> arg0 unknown-float-coverage-0)) (zero? (shr (shl (the-as int (-> arg0 unknown-float-coverage-1)) 58) 61)) - (< 0.3 (fabs (-> arg0 surface-angle))) - ) - ) - (not (logtest? sv-32 128)) - ) + (< 0.3 (fabs (-> arg0 surface-angle))))) + (not (logtest? sv-32 128))) (set! sv-32 (logior sv-32 64)) (set! sv-40 (logior sv-40 128)) (set-time! (-> arg0 unknown-dword21)) - (set! sv-48 (the-as symbol #f)) - ) - (#t - (set! sv-32 (logior sv-32 64)) - (set! sv-40 (logior sv-40 128)) - (set-time! (-> arg0 unknown-dword21)) - ) - ) - ) + (set! sv-48 (the-as symbol #f))) + (#t (set! sv-32 (logior sv-32 64)) (set! sv-40 (logior sv-40 128)) (set-time! (-> arg0 unknown-dword21))))) (set! (-> sv-24 0) sv-40) (set! (-> sv-20 0) sv-32) (set! (-> sv-28 0) sv-48) - (the-as uint 0) - ) + (the-as uint 0)) (defun target-collision-reaction ((arg0 control-info) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) (local-vars (sv-80 vector) (sv-84 vector) (sv-88 matrix) (sv-96 int) (sv-104 int) (sv-160 symbol)) @@ -206,70 +139,45 @@ (set! sv-84 (new-stack-vector0)) (let ((v1-2 (new 'stack-no-clear 'matrix))) (dotimes (a0-1 2) - (set! (-> v1-2 vector a0-1 quad) (the-as uint128 0)) - ) - (set! sv-88 v1-2) - ) + (set! (-> v1-2 vector a0-1 quad) (the-as uint128 0))) + (set! sv-88 v1-2)) (set! sv-96 0) (set! sv-104 0) (set! (-> sv-88 vector 0 quad) (-> arg3 quad)) (set! (-> sv-88 vector 1 quad) (-> arg3 quad)) (let ((a1-3 (new 'stack-no-clear 'vector))) (vector-float*! a1-3 (-> arg1 move-vec) (-> arg1 best-u)) - (move-by-vector! arg0 a1-3) - ) + (move-by-vector! arg0 a1-3)) (set-and-handle-pat! arg0 (-> arg1 best-tri pat)) - (if (= (-> arg0 poly-pat mode) (pat-mode wall)) - (set! sv-104 (logior sv-104 1)) - ) - (if (logtest? (-> arg0 unknown-surface00 flags) (surface-flags jump)) - (set! sv-104 (logior sv-104 32)) - ) + (if (= (-> arg0 poly-pat mode) (pat-mode wall)) (set! sv-104 (logior sv-104 1))) + (if (logtest? (-> arg0 unknown-surface00 flags) (surface-flags jump)) (set! sv-104 (logior sv-104 32))) (let ((v1-23 (new 'stack-no-clear 'vector))) (set! (-> v1-23 quad) (-> arg1 best-from-prim prim-core world-sphere quad)) - (vector-! sv-80 v1-23 (-> arg1 best-tri intersect)) - ) + (vector-! sv-80 v1-23 (-> arg1 best-tri intersect))) (vector-normalize! sv-80 1.0) (set! (-> arg0 coverage) (vector-dot sv-80 (-> arg1 best-tri normal))) (when (< (-> arg0 coverage) 0.0) (set! (-> arg0 coverage) 0.0) (vector-flatten! sv-80 sv-80 (-> arg1 best-tri normal)) - (vector-normalize! sv-80 1.0) - ) - (if (< (-> arg0 coverage) 0.9999) - (set! sv-104 (logior sv-104 24)) - ) - (let ((v1-33 (-> sv-80 quad))) - (set! (-> sv-84 quad) v1-33) - ) - (if (= (-> arg1 best-u) 0.0) - (move-by-vector! arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0)) - ) + (vector-normalize! sv-80 1.0)) + (if (< (-> arg0 coverage) 0.9999) (set! sv-104 (logior sv-104 24))) + (let ((v1-33 (-> sv-80 quad))) (set! (-> sv-84 quad) v1-33)) + (if (= (-> arg1 best-u) 0.0) (move-by-vector! arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0))) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) (collide-shape-moving-angle-set! arg0 sv-84 (the-as vector (-> sv-88 vector))) - (if (< (-> arg0 poly-angle) -0.2) - (set! sv-96 (logior sv-96 16)) - ) - (if (< (-> arg0 poly-angle) 0.0) - (set! sv-96 (logior sv-96 #x4000)) - ) + (if (< (-> arg0 poly-angle) -0.2) (set! sv-96 (logior sv-96 16))) + (if (< (-> arg0 poly-angle) 0.0) (set! sv-96 (logior sv-96 #x4000))) (set! sv-160 (< (fabs (-> arg0 surface-angle)) (-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle))) (if (and sv-160 (and (= (-> arg0 unknown-surface00 mode) 'dive) (< 0.2 (fabs (-> arg0 surface-angle))))) - (set! sv-160 (the-as symbol #f)) - ) - (if sv-160 - (set! sv-104 (logior sv-104 2)) - ) + (set! sv-160 (the-as symbol #f))) + (if sv-160 (set! sv-104 (logior sv-104 2))) (if (logtest? sv-104 8) - (target-collision-low-coverage - arg0 - arg1 - sv-84 - (the-as (pointer uint32) (& sv-104)) - (the-as (pointer uint64) (& sv-96)) - (& sv-160) - ) - ) + (target-collision-low-coverage arg0 + arg1 + sv-84 + (the-as (pointer uint32) (& sv-104)) + (the-as (pointer uint64) (& sv-96)) + (& sv-160))) (when (not (logtest? (-> arg0 prev-status) (cshape-moving-flags onsurf))) (set! (-> arg0 ground-impact-vel) (- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal)))) (set! sv-96 (logior sv-96 2048)) @@ -277,133 +185,83 @@ (let ((f30-0 (- 1.0 (-> arg0 surf impact-fric)))) (when (< f30-0 1.0) (let ((s3-1 (new-stack-vector0)) - (f28-0 (vector-dot (-> arg0 dynam gravity-normal) (the-as vector (-> sv-88 vector)))) - ) + (f28-0 (vector-dot (-> arg0 dynam gravity-normal) (the-as vector (-> sv-88 vector))))) 0.0 (vector-! s3-1 (the-as vector (-> sv-88 vector)) (vector-float*! s3-1 (-> arg0 dynam gravity-normal) f28-0)) (let* ((f0-20 (vector-length s3-1)) - (f1-9 f0-20) - ) - (if (< f28-0 0.0) - (set! f28-0 (* f28-0 f30-0)) - ) - (vector+! - (the-as vector (-> sv-88 vector)) - (vector-float*! (the-as vector (-> sv-88 vector)) (-> arg0 dynam gravity-normal) f28-0) - (vector-float*! s3-1 s3-1 (/ f0-20 f1-9)) - ) - ) - ) - ) - ) - ) - ) + (f1-9 f0-20)) + (if (< f28-0 0.0) (set! f28-0 (* f28-0 f30-0))) + (vector+! (the-as vector (-> sv-88 vector)) + (vector-float*! (the-as vector (-> sv-88 vector)) (-> arg0 dynam gravity-normal) f28-0) + (vector-float*! s3-1 s3-1 (/ f0-20 f1-9))))))))) (set! sv-96 (logior sv-96 4)) (cond ((-> arg1 best-to-prim) (set! sv-96 (logior sv-96 32)) (set! (-> arg0 unknown-vector72 quad) (-> arg1 best-tri intersect quad)) (set! (-> arg0 unknown-vector73 quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 unknown-handle00) (process->handle (-> arg1 best-to-prim cshape process))) - ) - ((= (-> arg0 poly-pat material) (pat-material waterbottom)) - ) - (else - (set! sv-96 (logior sv-96 4096)) - ) - ) + (set! (-> arg0 unknown-handle00) (process->handle (-> arg1 best-to-prim cshape process)))) + ((= (-> arg0 poly-pat material) (pat-material waterbottom))) + (else (set! sv-96 (logior sv-96 4096)))) (cond (sv-160 - (set! sv-104 (logior sv-104 4)) - (set! sv-96 (logior sv-96 8)) - (set! (-> arg0 cur-pat mode) 1) - (set! (-> arg0 unknown-vector70 quad) (-> arg1 best-tri intersect quad)) - (set! (-> arg0 unknown-vector71 quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 unknown-vector121 quad) (-> sv-84 quad)) - (set! (-> arg0 wall-pat) (-> arg1 best-tri pat)) - (-> arg0 history-data (logand (+ (-> arg0 unknown-halfword00) 127) 127)) - (cond - (#f - (sound-play "cursor-options") - (set! sv-104 (logior sv-104 8192)) - (vector-reflect-flat-above! arg2 (the-as vector (-> sv-88 vector)) sv-84) - ) - (else - (vector-reflect-flat! arg2 (the-as vector (-> sv-88 vector)) sv-84) - ) - ) - (cond - ((not (and (>= (-> arg1 best-from-prim local-sphere w) - (vector-dot - (-> arg0 ground-poly-normal) - (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> arg0 ground-touch-point)) - ) - ) - (and (< 0.0 (vector-dot (-> arg0 ground-poly-normal) arg2)) - (not (time-elapsed? (-> arg0 unknown-dword10) (seconds 0.3))) - (not (logtest? sv-104 32)) - ) - ) - ) - ) - (else - (set! sv-104 (logior sv-104 256)) - (set! sv-104 (logand -65 sv-104)) - (let ((s3-4 (vector-cross! (new 'stack-no-clear 'vector) (-> arg0 poly-normal) (-> arg0 ground-poly-normal)))) - (vector-normalize! s3-4 1.0) - (vector-float*! arg2 s3-4 (vector-dot (the-as vector (-> sv-88 vector)) s3-4)) - ) - (vector+! arg2 arg2 (-> arg0 poly-normal)) - ) - ) - ) + (set! sv-104 (logior sv-104 4)) + (set! sv-96 (logior sv-96 8)) + (set! (-> arg0 cur-pat mode) 1) + (set! (-> arg0 unknown-vector70 quad) (-> arg1 best-tri intersect quad)) + (set! (-> arg0 unknown-vector71 quad) (-> arg0 poly-normal quad)) + (set! (-> arg0 unknown-vector121 quad) (-> sv-84 quad)) + (set! (-> arg0 wall-pat) (-> arg1 best-tri pat)) + (-> arg0 history-data (logand (+ (-> arg0 unknown-halfword00) 127) 127)) + (cond + (#f + (sound-play "cursor-options") + (set! sv-104 (logior sv-104 8192)) + (vector-reflect-flat-above! arg2 (the-as vector (-> sv-88 vector)) sv-84)) + (else (vector-reflect-flat! arg2 (the-as vector (-> sv-88 vector)) sv-84))) + (cond + ((not (and (>= (-> arg1 best-from-prim local-sphere w) + (vector-dot (-> arg0 ground-poly-normal) + (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> arg0 ground-touch-point)))) + (and (< 0.0 (vector-dot (-> arg0 ground-poly-normal) arg2)) + (not (time-elapsed? (-> arg0 unknown-dword10) (seconds 0.3))) + (not (logtest? sv-104 32)))))) + (else + (set! sv-104 (logior sv-104 256)) + (set! sv-104 (logand -65 sv-104)) + (let ((s3-4 (vector-cross! (new 'stack-no-clear 'vector) (-> arg0 poly-normal) (-> arg0 ground-poly-normal)))) + (vector-normalize! s3-4 1.0) + (vector-float*! arg2 s3-4 (vector-dot (the-as vector (-> sv-88 vector)) s3-4))) + (vector+! arg2 arg2 (-> arg0 poly-normal))))) (else - (set! sv-96 (logior sv-96 1)) - (set! (-> arg0 cur-pat mode) 0) - (if (= (-> arg1 best-from-prim prim-id) 6) - (set! (-> arg0 local-normal quad) (-> sv-84 quad)) - ) - (vector-reflect-flat! arg2 (the-as vector (-> sv-88 vector)) sv-84) - (vector+! arg2 arg2 sv-84) - (set! (-> arg0 ground-touch-point w) 0.0) - (when (not (or (logtest? sv-104 15) (nonzero? (-> arg0 poly-pat event)))) - (set! sv-96 (logior sv-96 2)) - (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 unknown-vector53 quad) (-> sv-84 quad)) - (set! (-> arg0 unknown-float60) (vector-dot sv-84 (-> arg0 dynam gravity-normal))) - (set-time! (-> arg0 unknown-dword10)) - (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) - (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) - (set! (-> arg0 unknown-vector55 quad) (-> arg1 best-from-prim prim-core world-sphere quad)) - (set! sv-104 (logior sv-104 2048)) - (if (= (-> arg0 poly-pat material) (pat-material waterbottom)) - (set! sv-96 (logior sv-96 1024)) - ) - ) - ) - ) + (set! sv-96 (logior sv-96 1)) + (set! (-> arg0 cur-pat mode) 0) + (if (= (-> arg1 best-from-prim prim-id) 6) (set! (-> arg0 local-normal quad) (-> sv-84 quad))) + (vector-reflect-flat! arg2 (the-as vector (-> sv-88 vector)) sv-84) + (vector+! arg2 arg2 sv-84) + (set! (-> arg0 ground-touch-point w) 0.0) + (when (not (or (logtest? sv-104 15) (nonzero? (-> arg0 poly-pat event)))) + (set! sv-96 (logior sv-96 2)) + (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) + (set! (-> arg0 unknown-vector53 quad) (-> sv-84 quad)) + (set! (-> arg0 unknown-float60) (vector-dot sv-84 (-> arg0 dynam gravity-normal))) + (set-time! (-> arg0 unknown-dword10)) + (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) + (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) + (set! (-> arg0 unknown-vector55 quad) (-> arg1 best-from-prim prim-core world-sphere quad)) + (set! sv-104 (logior sv-104 2048)) + (if (= (-> arg0 poly-pat material) (pat-material waterbottom)) (set! sv-96 (logior sv-96 1024)))))) (logior! (-> arg0 status) sv-96) (set! (-> arg0 reaction-flag) (the-as cshape-reaction-flags sv-104)) - (update! - (-> arg0 history-data (-> arg0 unknown-halfword00)) - arg0 - (-> arg1 best-tri intersect) - (-> sv-88 vector 1) - arg2 - ) + (update! (-> arg0 history-data (-> arg0 unknown-halfword00)) arg0 (-> arg1 best-tri intersect) (-> sv-88 vector 1) arg2) (set! (-> arg0 unknown-halfword00) (logand (+ (-> arg0 unknown-halfword00) 1) 127)) - (the-as cshape-moving-flags sv-96) - ) + (the-as cshape-moving-flags sv-96)) (defun target-collision-no-reaction ((arg0 control-info) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) - (if (= (-> arg0 unknown-surface00 mode) 'air) - (logior! (-> arg0 reaction-flag) (cshape-reaction-flags csrf05)) - ) + (if (= (-> arg0 unknown-surface00 mode) 'air) (logior! (-> arg0 reaction-flag) (cshape-reaction-flags csrf05))) (let ((s5-0 (-> arg0 history-data (-> arg0 unknown-halfword00)))) (update! s5-0 arg0 (-> arg0 trans) arg3 arg2) - (logior! (-> s5-0 status) (cshape-moving-flags csmf08)) - ) + (logior! (-> s5-0 status) (cshape-moving-flags csmf08))) (set! (-> arg0 unknown-halfword00) (logand (+ (-> arg0 unknown-halfword00) 1) 127)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/target/logic-target.gc b/goal_src/jak1/engine/target/logic-target.gc index 4c210855de..d0b1746d87 100644 --- a/goal_src/jak1/engine/target/logic-target.gc +++ b/goal_src/jak1/engine/target/logic-target.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/anim/aligner-h.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/level/level.gc") @@ -10,9 +9,6 @@ (require "engine/common-obs/water-h.gc") (require "engine/target/target-util.gc") -;; name: logic-target.gc -;; name in dgo: logic-target -;; dgos: GAME, ENGINE ;; note: changed for high fps ;; target-start is modified due to changing the size of the stack in gkernel.gc @@ -22,248 +18,141 @@ (defbehavior build-conversions target ((arg0 vector)) (surface-mult! (-> self control unknown-surface01) (-> self control unknown-surface00) (-> self control surf)) (when (and (and (= (-> self fact eco-type) (pickup-type eco-blue)) (>= (-> self fact eco-level) 1.0)) - (or (= (-> self control unknown-surface00 name) 'run) (= (-> self control unknown-surface00 name) 'jump)) - ) + (or (= (-> self control unknown-surface00 name) 'run) (= (-> self control unknown-surface00 name) 'jump))) (+! (-> self control unknown-surface01 target-speed) 20480.0) - (+! (-> self control unknown-surface01 transv-max) 20480.0) - ) + (+! (-> self control unknown-surface01 transv-max) 20480.0)) (let ((s5-0 (new-stack-vector0))) (vector-z-quaternion! s5-0 (-> self control unknown-quaternion00)) (when (logtest? (-> self control unknown-surface00 flags) (surface-flags dive)) (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)) - ) + (vector-normalize! s5-0 1.0)) + (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)) - (let ((v0-7 (-> self control unknown-vector50))) - (set! (-> v0-7 quad) (-> self control dynam gravity-normal quad)) - v0-7 - ) - ) + (let ((v0-7 (-> self control unknown-vector50))) (set! (-> v0-7 quad) (-> self control dynam gravity-normal quad)) v0-7)) (defbehavior vector-turn-to target ((arg0 vector)) (let ((gp-0 forward-up-nopitch->quaternion) (s5-0 (-> self control dir-targ)) (t9-0 vector-normalize!) - (v1-1 (new-stack-vector0)) - ) + (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))) - ) + (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)) - ) + (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 old-status) (-> self control status)) - (none) - ) + (none)) (defun-debug draw-history ((arg0 control-info)) (when (nonzero? *display-collide-history*) (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) - ) - ) + (if (cpad-hold? 0 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 - ) - ) - ) + ((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) - ) + (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-no-zbuf) - (-> 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-no-zbuf) - (-> s2-0 trans) - (-> s2-0 transv) - (meters 0.000024414063) - (the-as rgba (+ #x408040 (shl s4-0 24))) - ) + (add-debug-line (logtest? s5-0 2) + (bucket-id debug-no-zbuf) + (-> 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-no-zbuf) + (-> s2-0 trans) + (-> s2-0 transv) + (meters 0.000024414063) + (the-as rgba (+ #x408040 (shl s4-0 24)))) (when (not (logtest? (-> s2-0 status) (cshape-moving-flags csmf08))) - (add-debug-line - (logtest? s5-0 1) - (bucket-id debug-no-zbuf) - (-> 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-no-zbuf) - (-> s2-0 intersect) - (-> s2-0 surface-normal) - (meters 1) - (the-as rgba (+ s1-1 (shl s4-0 24))) - ) - (add-debug-vector - (logtest? s5-0 16) - (bucket-id debug-no-zbuf) - (-> s2-0 intersect) - (-> s2-0 local-normal) - (meters 1) - (the-as rgba (+ s1-1 (shl s4-0 24))) - ) - ) - (add-debug-vector - (logtest? s5-0 8) - (bucket-id debug-no-zbuf) - (-> 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 - ) - ) + (add-debug-line (logtest? s5-0 1) + (bucket-id debug-no-zbuf) + (-> 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-no-zbuf) + (-> s2-0 intersect) + (-> s2-0 surface-normal) + (meters 1) + (the-as rgba (+ s1-1 (shl s4-0 24)))) + (add-debug-vector (logtest? s5-0 16) + (bucket-id debug-no-zbuf) + (-> s2-0 intersect) + (-> s2-0 local-normal) + (meters 1) + (the-as rgba (+ s1-1 (shl s4-0 24))))) + (add-debug-vector (logtest? s5-0 8) + (bucket-id debug-no-zbuf) + (-> 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)) (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 ((s3-0 (-> s4-0 reaction-flag))) - (format - #t - "~6D ~8S #x~8X " - (-> s4-0 time) - (if (logtest? (-> s4-0 status) (cshape-moving-flags csmf08)) - "air" - (-> *pat-mode-info* (-> s4-0 pat mode) name) - ) - (-> s4-0 status) - ) - (format - #t - "~C~C~C~C~C~C" - (if (not (logtest? s3-0 (cshape-reaction-flags csrf00))) - 103 - 87 - ) - (if (not (logtest? s3-0 (cshape-reaction-flags csrf01))) - 103 - 87 - ) - (cond - ((logtest? s3-0 (cshape-reaction-flags csrf11)) - 71 - ) - ((not (logtest? s3-0 (cshape-reaction-flags csrf02))) - 103 - ) - (else - 87 - ) - ) - (cond - ((logtest? s3-0 (cshape-reaction-flags csrf09)) - 66 - ) - ((logtest? s3-0 (cshape-reaction-flags csrf03)) - 76 - ) - (else - 99 - ) - ) - (if (not (logtest? s3-0 (cshape-reaction-flags csrf04))) - 110 - 66 - ) - (if (not (logtest? s3-0 (cshape-reaction-flags csrf05))) - 103 - 65 - ) - ) - (format - #t - "~C~C " - (if (logtest? s3-0 (cshape-reaction-flags csrf06)) - 78 - 95 - ) - (cond - ((logtest? s3-0 (cshape-reaction-flags csrf10)) - 76 - ) - ((logtest? s3-0 (cshape-reaction-flags csrf08)) - 67 - ) - ((logtest? s3-0 (cshape-reaction-flags csrf07)) - 108 - ) - (else - 95 - ) - ) - ) - ) + (format #t + "~6D ~8S #x~8X " + (-> s4-0 time) + (if (logtest? (-> s4-0 status) (cshape-moving-flags csmf08)) "air" (-> *pat-mode-info* (-> s4-0 pat mode) name)) + (-> s4-0 status)) + (format #t + "~C~C~C~C~C~C" + (if (not (logtest? s3-0 (cshape-reaction-flags csrf00))) 103 87) + (if (not (logtest? s3-0 (cshape-reaction-flags csrf01))) 103 87) + (cond + ((logtest? s3-0 (cshape-reaction-flags csrf11)) 71) + ((not (logtest? s3-0 (cshape-reaction-flags csrf02))) 103) + (else 87)) + (cond + ((logtest? s3-0 (cshape-reaction-flags csrf09)) 66) + ((logtest? s3-0 (cshape-reaction-flags csrf03)) 76) + (else 99)) + (if (not (logtest? s3-0 (cshape-reaction-flags csrf04))) 110 66) + (if (not (logtest? s3-0 (cshape-reaction-flags csrf05))) 103 65)) + (format #t + "~C~C " + (if (logtest? s3-0 (cshape-reaction-flags csrf06)) 78 95) + (cond + ((logtest? s3-0 (cshape-reaction-flags csrf10)) 76) + ((logtest? s3-0 (cshape-reaction-flags csrf08)) 67) + ((logtest? s3-0 (cshape-reaction-flags csrf07)) 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 "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 "~%")) 0 - (none) - ) + (none)) ;; WARN: Stack slot load at 160 mismatch: defined as size 4, got size 16 ;; WARN: Stack slot load at 176 mismatch: defined as size 4, got size 16 @@ -278,290 +167,175 @@ (sv-128 string) (sv-144 string) (sv-160 float) - (sv-176 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))) - ) + (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 ((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))) - ) + (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 ((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 wall-pat)) - (s0-2 (pat-mode->string (-> arg0 control wall-pat))) - ) + (s0-2 (pat-mode->string (-> arg0 control wall-pat)))) (set! sv-96 (pat-material->string (-> arg0 control wall-pat))) - (let ((t1-2 (pat-event->string (-> arg0 control wall-pat)))) - (s4-2 s3-2 s2-2 s1-2 s0-2 sv-96 t1-2) - ) - ) - ) + (let ((t1-2 (pat-event->string (-> arg0 control wall-pat)))) (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) (cshape-moving-flags onsurf)) - "on-surface" - "" - ) - (if (logtest? (-> arg0 control status) (cshape-moving-flags onground)) - "on-ground" - "" - ) - (if (logtest? (-> arg0 control status) (cshape-moving-flags tsurf)) - "t-surface" - "" - ) - (if (logtest? (-> arg0 control status) (cshape-moving-flags twall)) - "t-wall" - "" - ) - (if (logtest? (-> arg0 control status) (cshape-moving-flags t-act)) - "t-act" - "" - ) - (cond - ((logtest? (-> arg0 control status) (cshape-moving-flags t-ciel)) - "t-ceil" - ) - ((logtest? (-> arg0 control status) (cshape-moving-flags on-water)) - "on-water" - ) - (else - "" - ) - ) - ) + (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) (cshape-moving-flags onsurf)) "on-surface" "") + (if (logtest? (-> arg0 control status) (cshape-moving-flags onground)) "on-ground" "") + (if (logtest? (-> arg0 control status) (cshape-moving-flags tsurf)) "t-surface" "") + (if (logtest? (-> arg0 control status) (cshape-moving-flags twall)) "t-wall" "") + (if (logtest? (-> arg0 control status) (cshape-moving-flags t-act)) "t-act" "") + (cond + ((logtest? (-> arg0 control status) (cshape-moving-flags t-ciel)) "t-ceil") + ((logtest? (-> arg0 control status) (cshape-moving-flags on-water)) "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) (water-flags wt09)) - "water" - "" - ) - (if (logtest? (-> arg0 water flags) (water-flags wt10)) - "wade" - "" - ) - (if (logtest? (-> arg0 water flags) (water-flags wt11)) - "swim" - "" - ) - (if (logtest? (-> arg0 water flags) (water-flags wt12)) - "under" - "" - ) - ) - (format arg1 "~2S~%" (if (logtest? (-> arg0 water flags) (water-flags wt04)) - "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) - ) + (format arg1 + "in water ~A at ~M ~5S ~5S ~5S ~5S " + (-> v1-49 name) + (-> arg0 water height) + (if (logtest? (-> arg0 water flags) (water-flags wt09)) "water" "") + (if (logtest? (-> arg0 water flags) (water-flags wt10)) "wade" "") + (if (logtest? (-> arg0 water flags) (water-flags wt11)) "swim" "") + (if (logtest? (-> arg0 water flags) (water-flags wt12)) "under" "")) + (format arg1 "~2S~%" (if (logtest? (-> arg0 water flags) (water-flags wt04)) "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)) - ) + (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))) - ) + (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 ((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))) - ) + (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 ((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))) - ) + (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 ((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)) - ) + (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) - (- (current-time) (-> 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) - ) - (debug-print-channels (-> arg0 skel) arg1) - ) + (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) + (- (current-time) (-> 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)) + (debug-print-channels (-> arg0 skel) arg1)) (draw-history (-> arg0 control)) - #f - ) + #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-float21) (-> self control unknown-float20)) - (set! (-> self control unknown-dword00) (the-as uint (-> *display* real-frame-counter))) - ) + (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)) - (vector-matrix*! arg0 arg0 (matrix-local->world #t #f)) - ) + (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))) - (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)) - ) - (if arg1 - (vector-float*! arg0 arg0 (-> self control unknown-float20)) - ) - arg0 - ) + (let ((a1-1 (read-pad (new-stack-vector0)))) (warp-vector-into-surface! arg0 a1-1 (-> self control local-normal))) + (if arg1 (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 () (let* ((a0-1 (vector<-pad-in-surface! (new-stack-vector0) #f)) (gp-0 (vector-normalize! a0-1 1.0)) (t9-2 vector-normalize!) - (a0-2 (new-stack-vector0)) - ) + (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)) - ) + (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) - ) - ) + (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)) - ) - ) + (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) (surface-flags no-turn-around)) - (set! (-> v1-6 0) (the-as uint (current-time))) - ) + (set! (-> v1-6 0) (the-as uint (current-time)))) (and (>= (the-as uint (- (current-time) (the-as int (-> v1-6 0)))) (the-as uint 300)) (< f0-1 0.0) (< 32768.0 f1-1) @@ -569,40 +343,26 @@ (time-elapsed? (-> self control unknown-dword20) (seconds 0.3)) (time-elapsed? (-> self control unknown-dword21) (seconds 0.3)) (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (and (< 0.7 (-> self control surface-angle)) #t) - ) - ) - ) - ) - ) + (and (< 0.7 (-> self control surface-angle)) #t)))))) (defbehavior target-move-dist target ((arg0 time-frame)) (let ((s5-0 (new-stack-vector0)) (f30-0 0.0) - (gp-0 0) - ) + (gp-0 0)) (let* ((v1-0 127) - (a1-6 (-> self control history-data (logand (+ (-> self control unknown-halfword00) v1-0) 127))) - ) + (a1-6 (-> self control history-data (logand (+ (-> self control unknown-halfword00) v1-0) 127)))) (while (and (not (time-elapsed? (-> 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))) - ) - ) + (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)))) - (+! f30-0 (vector-vector-distance s5-0 (-> v1-9 trans))) - ) - (+! s4-0 1) - ) - ) - (/ f30-0 (the float gp-0)) - ) - ) + (+! f30-0 (vector-vector-distance s5-0 (-> v1-9 trans)))) + (+! s4-0 1))) + (/ f30-0 (the float gp-0)))) (defbehavior turn-to-vector target ((arg0 vector) (arg1 float)) (let ((gp-0 (new-stack-vector0))) @@ -612,271 +372,163 @@ (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*) - ) + (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 (+ 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) - ) + (-> (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) - ) + (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-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-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-no-zbuf) - gp-1 - 819.2 - "target" - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + 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)) - ) + (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) - ) - ) + (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)) - ) + (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)) - ) + (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))) - ) + (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))) - ) - ) - ) - ) - ) + (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)) - ) + (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)) - ) + (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)))) - ) - ) - ) - ) - ) + (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)) - ) + (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)) - ) + (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 ((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))) - ) - ) + (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)) - ) - ) + (+ (* 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)) - ) - ) - ) - ) - ) + (+ (* (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))) - ) + (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)))) - ) + (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)))) - ) + (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 (seconds-per-frame))) - ) + (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 (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 (not (logtest? (-> self control status) (cshape-moving-flags tsurf))) - (< (vector-xz-length gp-0) (vector-xz-length s3-3)) - ) + (< (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 (< f28-2 20480.0) (< (-> s4-0 z) 0.0)) (set! f0-50 (* 2.0 f0-50))) + (+! f30-4 f0-50))))) (if (and (not (logtest? (-> self control status) (cshape-moving-flags twall))) (logtest? (-> self control old-status) (cshape-moving-flags twall)) (logtest? (-> self control unknown-surface00 flags) (surface-flags jump)) (< 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-time! (-> self control unknown-dword70)) - ) - (if (not (time-elapsed? (-> self control unknown-dword70) (seconds 0.2))) - (set! f30-4 (+ 204800.0 f30-4)) - ) + (< 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-time! (-> self control unknown-dword70))) + (if (not (time-elapsed? (-> self control unknown-dword70) (seconds 0.2))) (set! f30-4 (+ 204800.0 f30-4))) (if (and (not (logtest? (-> self control status) (cshape-moving-flags twall))) (and (logtest? (-> self control old-status) (cshape-moving-flags twall)) (logtest? (-> self control unknown-surface00 flags) (surface-flags jump)) (< 0.0 (-> gp-0 y)) - (< (-> gp-0 z) 0.0) - ) - ) - (set! (-> gp-0 z) 0.0) - ) + (< (-> 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 (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)) - ) + (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))) (let ((gp-1 (new-stack-vector0))) (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-no-zbuf) - gp-1 - 819.2 - "ltransv" - (new 'static 'rgba :g #xff :a #x80) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + 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-no-zbuf) - gp-1 - 819.2 - "btransv" - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - ) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + 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)) - ) + (gp-0 (new-stack-vector0))) (compute-acc-due-to-gravity (-> 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) - ) - (let* ((s5-1 (vector-matrix*! - (new-stack-vector0) - (-> self control dynam gravity-normal) - (-> 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))) - ) + (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 (< 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)) - ) - ) - ) - ) + (f1-0 f0-4)) + (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)))))) (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)) - ) + (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) @@ -884,116 +536,73 @@ (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) - ) + (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))) - ) - 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) - ) - ) + (rotate-toward-orientation! (-> 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 (not (logtest? (logior (-> self control status) (-> self control old-status)) (cshape-moving-flags onsurf tsurf)) - ) - (not (time-elapsed? (-> self control unknown-dword20) (seconds 0.5))) - (!= (-> self next-state name) 'target-walk) - (not (time-elapsed? (-> self state-time) (seconds 0.5))) - (not (time-elapsed? (-> self control unknown-dword21) (seconds 0.5))) - (logtest? (-> self control unknown-surface01 flags) (surface-flags no-rotate-toward-transv)) - (!= (-> self control unknown-float41) 0.0) - ) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags always-rotate-toward-transv))) - ) - (-> self control unknown-vector20) - (-> self control transv) - ) - ) - ) + (s5-0 (if (and (or (not (logtest? (logior (-> self control status) (-> self control old-status)) (cshape-moving-flags onsurf tsurf))) + (not (time-elapsed? (-> self control unknown-dword20) (seconds 0.5))) + (!= (-> self next-state name) 'target-walk) + (not (time-elapsed? (-> self state-time) (seconds 0.5))) + (not (time-elapsed? (-> self control unknown-dword21) (seconds 0.5))) + (logtest? (-> self control unknown-surface01 flags) (surface-flags no-rotate-toward-transv)) + (!= (-> self control unknown-float41) 0.0)) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags always-rotate-toward-transv)))) + (-> 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)) (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) (seconds-per-frame))) - ) - (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) - ) - ) - ) - ) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - gp-0 - (meters 2) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - s5-0 - (meters 2) - (new 'static 'rgba :r #xff :a #x80) - ) - ) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - (-> self control unknown-matrix01 vector 2) - (meters 2) - (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 - ) - (quaternion-slerp! - (-> self control quat) - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion01) - (-> self control unknown-float00) - ) - (target-compute-slopes (-> self control dynam gravity-normal)) - ) + (f1-2 (* (-> self control unknown-surface01 turnvv) (seconds-per-frame)))) + (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))))) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + gp-0 + (meters 2) + (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + s5-0 + (meters 2) + (new 'static 'rgba :r #xff :a #x80))) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + (-> self control unknown-matrix01 vector 2) + (meters 2) + (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) + (quaternion-slerp! (-> 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))) - (- (current-time) (-> *display* old-base-frame-counter)) - ) - ) + (+! (-> *game-info* in-level-time (-> *level-task-data-remap* (+ (-> self current-level info index) -1))) + (- (current-time) (-> *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)) - ) - ) + (send-event self 'level-enter (-> self current-level name)))) 0 - (none) - ) + (none)) (defbehavior flag-setup target () (level-setup) @@ -1005,400 +614,245 @@ (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) (if (and (>= (-> self control coverage) 1.0) (not (logtest? (-> self control status) (cshape-moving-flags t-act on-water))) - (logtest? (-> self control status) (cshape-moving-flags onground)) - ) - (set! (-> self control last-known-safe-ground quad) (-> self control trans quad)) - ) - ((-> self control unknown-surface01 touch-hook)) - ) + (logtest? (-> self control status) (cshape-moving-flags onground))) + (set! (-> self control last-known-safe-ground quad) (-> self control trans quad))) + ((-> self control unknown-surface01 touch-hook))) (else - (let ((v1-25 (-> self control trans))) - (when (logtest? (-> self control old-status) (cshape-moving-flags onsurf)) - (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) - ) - 0.0 - ) - (set! (-> self control unknown-vector111 y) (-> v1-25 y)) - ) - ) - ) - ) + (let ((v1-25 (-> self control trans))) + (when (logtest? (-> self control old-status) (cshape-moving-flags onsurf)) + (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)) + 0.0) + (set! (-> self control unknown-vector111 y) (-> v1-25 y)))))) (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) triangle) (zero? (-> self control unknown-int40)) - (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie))) - ) + (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie)))) (if (and (= (-> self cam-user-mode) 'normal) (logtest? (-> self control unknown-surface00 flags) (surface-flags allow-look-around)) (not (logtest? (-> self control root-prim prim-core action) - (collide-action edgegrab-cam swingpole-active racer snowball tube flut) - ) - ) + (collide-action edgegrab-cam swingpole-active racer snowball tube flut))) (-> *setting-control* current allow-look-around) (time-elapsed? (-> self no-look-around-wait) (seconds 0.05)) - (not (and (= (-> self control ground-pat material) (pat-material ice)) - (< 4096.0 (-> self control unknown-float01)) - ) - ) - ) - (send-event self 'change-mode 'look-around) - ) - ) + (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) (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*) - (not (logtest? (-> self state-flags) (state-flags grabbed first-person-mode))) - ) - (if (!= (-> self next-state name) 'target-falling) - (send-event self 'change-mode 'falling) - ) + (not (logtest? (-> self state-flags) (state-flags grabbed first-person-mode)))) + (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)) - ) + (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)) - ) - ) - ) + (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)) - ) + (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)) - ) - ) - ) - (move-to-point! (-> self control) gp-1) - ) + (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))))) + (move-to-point! (-> self control) gp-1)) (send-event *camera* 'reset-follow) - (set! (-> self control surf) *standard-ground-surface*) - ) + (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) (surface-flags allow-edge-grab)) - (and (= (-> self next-state name) 'target-walk) - (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - ) - ) + (and (= (-> self next-state name) 'target-walk) (not (logtest? (-> self control status) (cshape-moving-flags onsurf))))) (< f0-17 0.0) - (or (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) 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 - ) + (or (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) 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) (not (logtest? (-> self control root-prim prim-core action) (collide-action racer flut))) - #t - ) - ) - (logior! (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) - (logclear! (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) - ) - ) + #t)) + (logior! (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) + (logclear! (-> self control root-prim prim-core action) (collide-action edgegrab-possible)))) (let ((v1-146 (-> self current-level))) (if (and (time-elapsed? (-> self control unknown-dword11) (seconds 2)) (and v1-146 (< (-> self control trans y) (-> v1-146 info bottom-height)) - (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - ) - (send-event self 'attack-invinc #f (static-attack-info ((mode 'endlessfall)))) - ) - ) + (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2))))) + (send-event self 'attack-invinc #f (static-attack-info ((mode 'endlessfall)))))) 0 - (none) - ) + (none)) (defbehavior post-flag-setup target () - (if (logtest? (-> self control status) (cshape-moving-flags twall t-act)) - (set-time! (-> self control unknown-dword20)) - ) + (if (logtest? (-> self control status) (cshape-moving-flags twall t-act)) (set-time! (-> self control unknown-dword20))) (when (logtest? (-> self state-flags) (state-flags timed-invulnerable)) ;; og:preserve-this changed for high fps. This fixes the flicker speed when damaged (if (< (logand (- (current-time) (-> self control unknown-dword80)) 3) (/ 1.0 (-> *display* time-adjust-ratio))) - (logior! (-> self draw status) (draw-status hidden)) - (logclear! (-> self draw status) (draw-status hidden)) - ) + (logior! (-> self draw status) (draw-status hidden)) + (logclear! (-> self draw status) (draw-status hidden))) (if (time-elapsed? (-> self control unknown-dword80) (-> self control unknown-dword81)) - (target-timed-invulnerable-off self) - ) - ) + (target-timed-invulnerable-off self))) (set! (-> self control unknown-symbol40) #f) 0 - (none) - ) + (none)) (defbehavior bend-gravity target () - (set! (-> self control unknown-float82) (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - 32.0 - 2.0 - ) - ) - (let ((f0-2 - (if (and (logtest? (-> self control status) (cshape-moving-flags twall)) - (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - ) - 0.0 - (-> self control unknown-float81) - ) - ) - ) - (seek! (-> self control unknown-float80) f0-2 (* (-> self control unknown-float82) (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 unknown-float82) (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) 32.0 2.0)) + (let ((f0-2 (if (and (logtest? (-> self control status) (cshape-moving-flags twall)) + (not (logtest? (-> self control status) (cshape-moving-flags onsurf)))) + 0.0 + (-> self control unknown-float81)))) + (seek! (-> self control unknown-float80) f0-2 (* (-> self control unknown-float82) (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)) - (vector-float*! - (-> 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) - ) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - (-> self control ground-poly-normal) - (meters 2) - (new 'static 'rgba :b #xff :a #x80) - ) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - (-> self control local-normal) - (meters 2) - (new 'static 'rgba :b #xff :a #x80) - ) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> 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-no-zbuf) - (-> self control trans) - (-> self control dynam gravity-normal) - (meters 3) - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) - ) + (vector-float*! (-> 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)) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + (-> self control ground-poly-normal) + (meters 2) + (new 'static 'rgba :b #xff :a #x80)) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + (-> self control local-normal) + (meters 2) + (new 'static 'rgba :b #xff :a #x80)) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> 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-no-zbuf) + (-> self control trans) + (-> self control dynam gravity-normal) + (meters 3) + (new 'static 'rgba :r #xff :b #xff :a #x80))) (defbehavior target-compute-edge target () (let ((s5-0 *edge-grab-info*)) - (if (not (edge-grab-info-method-9 s5-0)) - (send-event self 'end-mode) - ) - (if *display-edge-collision-marks* - (debug-draw s5-0) - ) + (if (not (edge-grab-info-method-9 s5-0)) (send-event self 'end-mode)) + (if *display-edge-collision-marks* (debug-draw 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) - ) - ) - ) + (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)) - (time-elapsed? (-> self control unknown-dword40) (seconds 0.2)) - ) + ((and (< 819.2 (-> self control unknown-float110)) (time-elapsed? (-> self control unknown-dword40) (seconds 0.2))) (vector-normalize! s4-1 1228.8) (move-by-vector! (-> self control) s4-1) (vector-float*! (-> self control rider-last-move) s4-1 (-> *display* frames-per-second)) (set-time! (-> self control rider-time)) (if (and (time-elapsed? (-> self control unknown-dword41) (seconds 0.5)) - (time-elapsed? (-> self control unknown-dword40) (seconds 0.5)) - ) - (send-event self 'end-mode) - ) - ) + (time-elapsed? (-> self control unknown-dword40) (seconds 0.5))) + (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-time! (-> self control rider-time)) - (move-to-point! (-> self control) a1-6) - ) - (set! (-> self control unknown-float110) 0.0) - (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) - (set-time! (-> self control unknown-dword40)) - ) - ) - ) - (forward-up-nopitch->quaternion (-> self control dir-targ) gp-1 (-> self control dynam gravity-normal)) - ) - ) + (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-time! (-> self control rider-time)) + (move-to-point! (-> self control) a1-6)) + (set! (-> self control unknown-float110) 0.0) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) + (set-time! (-> self control unknown-dword40))))) + (forward-up-nopitch->quaternion (-> self control dir-targ) gp-1 (-> self control dynam gravity-normal)))) (set-quaternion! (-> self control) (-> self control dir-targ)) (do-joint-math! self) - (none) - ) + (none)) (defbehavior target-compute-edge-rider target () (let ((gp-0 *edge-grab-info*)) - (if (not (edge-grab-info-method-9 gp-0)) - (send-event self 'end-mode) - ) - (if *display-edge-collision-marks* - (debug-draw 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) - ) + (if (not (edge-grab-info-method-9 gp-0)) (send-event self 'end-mode)) + (if *display-edge-collision-marks* (debug-draw 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-time! (-> self control rider-time)) - (move-by-vector! (-> self control) a1-7) - ) - ) + (move-by-vector! (-> self control) a1-7))) (set! (-> self control unknown-float110) 0.0) (do-joint-math! self) - (none) - ) + (none)) (defbehavior target-compute-pole target () (let* ((s4-0 (handle->process (-> self control unknown-handle10))) - (gp-0 (-> (the-as swingpole s4-0) dir)) - ) + (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) - ) - ) - (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 ((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) (+! (-> v1-8 y) -6144.0) - (send-event *camera* 'ease-in 0.5 v1-8) - ) + (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-no-zbuf) - (-> (the-as swingpole s4-0) root trans) - (the-as vector (&-> s4-0 stack 16)) - (meters 3) - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> (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) - (-> self control unknown-vector90) - 819.2 - (new 'static 'rgba :r #xff :a #x80) - ) + (add-debug-vector #t + (bucket-id debug-no-zbuf) + (-> (the-as swingpole s4-0) root trans) + (the-as vector (&-> s4-0 stack 16)) + (meters 3) + (new 'static 'rgba :r #xff :b #xff :a #x80)) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (-> (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) (-> self control unknown-vector90) 819.2 (new 'static 'rgba :r #xff :a #x80)) (add-debug-sphere #t (bucket-id debug-no-zbuf) s3-0 819.2 (new 'static 'rgba :g #xff :a #x80)) (add-debug-sphere #t (bucket-id debug-no-zbuf) s2-0 819.2 (new 'static 'rgba :g #xff :b #x40 :a #x80)) - (add-debug-sphere #t (bucket-id debug-no-zbuf) s5-0 819.2 (new 'static 'rgba :b #xff :a #x80)) - ) - ) + (add-debug-sphere #t (bucket-id debug-no-zbuf) 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))) - (move-by-vector! (-> self control) (vector-normalize! s4-2 2457.6)) - ) + (move-by-vector! (-> self control) (vector-normalize! s4-2 2457.6))) (else - (set! (-> self control unknown-int21) (the-as int #t)) - (move-to-point! - (-> self control) - (vector-! (new 'stack-no-clear 'vector) s5-0 (-> self control unknown-vector91)) - ) - (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) - ) - ) - ) - ) + (set! (-> self control unknown-int21) (the-as int #t)) + (move-to-point! (-> 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)) - ) - ) + (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)) (do-joint-math! self) (update-transforms! (-> self control)) - (none) - ) + (none)) (defbehavior target-calc-camera-pos target () (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -1408,117 +862,65 @@ (begin (vector<-cspace! gp-0 (joint-node eichar-lod0-jg main)) (+! (-> gp-0 y) -5896.192) - (< (fabs (- (-> gp-0 y) (-> self control trans y))) 8192.0) - ) - ) - (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> gp-0 quad)) - ) + (< (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 (water-flags wt09)) (logtest? v1-11 (water-flags wt11 wt12))) - (vector<-cspace! - (the-as vector (&-> (-> self control) unknown-qword00)) - (the-as cspace (-> self node-list data)) - ) - (if (not (and (logtest? (-> self water flags) (water-flags wt12)) - (not (logtest? (-> self water flags) (water-flags wt04))) - ) - ) - (set! (-> self control unknown-float30) (- (-> self water base-height) (-> self water swim-height))) - ) - (&-> (-> self control) unknown-qword00) - ) - ((and (logtest? (-> self water flags) (water-flags wt09)) (logtest? (water-flags wt18) (-> 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) (collide-action racer)) - (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) - ) - ((logtest? (-> self control root-prim prim-core action) (collide-action tube)) - (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control shadow-pos quad)) - ) - ((logtest? (-> self draw status) (draw-status hidden no-anim)) - (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)) - ) - ) - ) - ) - ) - ) - ) + (let ((v1-11 (-> self water flags))) + (cond + ((and (logtest? v1-11 (water-flags wt09)) (logtest? v1-11 (water-flags wt11 wt12))) + (vector<-cspace! (the-as vector (&-> (-> self control) unknown-qword00)) (the-as cspace (-> self node-list data))) + (if (not (and (logtest? (-> self water flags) (water-flags wt12)) (not (logtest? (-> self water flags) (water-flags wt04))))) + (set! (-> self control unknown-float30) (- (-> self water base-height) (-> self water swim-height)))) + (&-> (-> self control) unknown-qword00)) + ((and (logtest? (-> self water flags) (water-flags wt09)) (logtest? (water-flags wt18) (-> 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) (collide-action racer)) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad))) + ((logtest? (-> self control root-prim prim-core action) (collide-action tube)) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control shadow-pos quad))) + ((logtest? (-> self draw status) (draw-status hidden no-anim)) + (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) - ) + (none)) (defbehavior joint-points target () - (let ((v1-0 (-> self neck))) - (set! (-> v1-0 blend) 0.0) - ) + (let ((v1-0 (-> self neck))) (set! (-> v1-0 blend) 0.0)) (cond - ((logtest? (-> self control root-prim prim-core action) (collide-action racer tube)) - ) + ((logtest? (-> self control root-prim prim-core action) (collide-action racer tube))) ((logtest? (-> self water flags) (water-flags wt10)) (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))) - ) + (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) (water-flags wt11)) - (set! (-> self control surf) *swim-surface*) - ) + (set! (-> *wade-surface* transv-max) f0-9))) + (set! (-> self control surf) *wade-surface*)) + ((logtest? (-> self water flags) (water-flags wt11)) (set! (-> self control surf) *swim-surface*)) ((and (logtest? (-> self water flags) (water-flags wt09)) (logtest? (water-flags wt18) (-> 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) - ) + (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)) (let ((gp-0 (new-stack-vector0)) - (s5-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-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)) (cond - ((logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-cam)) - (target-compute-edge) - ) - ((logtest? (-> self control root-prim prim-core action) (collide-action swingpole-active)) - (target-compute-pole) - ) - ) + ((logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-cam)) (target-compute-edge)) + ((logtest? (-> self control root-prim prim-core action) (collide-action swingpole-active)) (target-compute-pole))) (target-calc-camera-pos) (when (logtest? (-> self state-flags) (state-flags remove-prevents)) (logclear! (-> self state-flags) (state-flags prevent-attack prevent-duck remove-prevents)) - (set! (-> self control unknown-float41) 0.0) - ) + (set! (-> self control unknown-float41) 0.0)) (set! (-> self control unknown-int00) 0) 0 - (none) - ) + (none)) (defbehavior target-real-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -1527,8 +929,7 @@ (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))) - ) + (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))) @@ -1537,96 +938,51 @@ (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) - ) + (< 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) - ) - ) + (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-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) - ) - ) + (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) - (fill-cache-integrate-and-collide! - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) + (fill-cache-integrate-and-collide! (-> self control) (-> self control transv) (-> self control root-prim collide-with)) (if (logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) - (find-edge-grabs! *target* *collide-cache*) - ) + (find-edge-grabs! *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) - ) - ) + (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)) - ) + (post-flag-setup)) + (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) - (none) - ) + (none)) (defbehavior target-post target () (target-real-post) - (none) - ) + (none)) (defbehavior target-swim-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -1636,60 +992,35 @@ (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)) - ) + (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) - ) - ) - (fill-cache-integrate-and-collide! - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) + (fill-cache-integrate-and-collide! (-> self control) (-> self control transv) (-> self control root-prim collide-with)) (if (logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) - (find-edge-grabs! *target* *collide-cache*) - ) + (find-edge-grabs! *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)) - ) + (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))) (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) - (none) - ) + (none)) (defbehavior target-no-stick-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -1699,61 +1030,36 @@ (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) - ) + (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) - ) - ) - (fill-cache-integrate-and-collide! - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) + (fill-cache-integrate-and-collide! (-> self control) (-> self control transv) (-> self control root-prim collide-with)) (if (logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) - (find-edge-grabs! *target* *collide-cache*) - ) + (find-edge-grabs! *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) - ) - ) + (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)) - ) + (post-flag-setup)) + (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) - (none) - ) + (none)) (defbehavior target-no-move-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -1765,40 +1071,24 @@ (do-rotations1) (do-rotations2) (reverse-conversions (-> self control transv)) - (vector-! - (-> self control unknown-vector12) - (-> self control unknown-vector11) - (-> self control unknown-vector14) - ) + (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*) - (find-overlapping-shapes (-> self control) a1-3) - ) - (post-flag-setup) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (find-overlapping-shapes (-> self control) a1-3)) + (post-flag-setup)) + (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) - (none) - ) + (none)) (defbehavior target-slide-down-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -1808,92 +1098,55 @@ (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 ((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)) - ) + (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) - ) - ) - (fill-cache-integrate-and-collide! - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) + (fill-cache-integrate-and-collide! (-> self control) (-> self control transv) (-> self control root-prim collide-with)) (if (logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) - (find-edge-grabs! *target* *collide-cache*) - ) + (find-edge-grabs! *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) - ) - ) + (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)) - ) + (post-flag-setup)) + (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) - (none) - ) + (none)) (defbehavior target-no-ja-move-post target () - (vector-! - (-> self control unknown-vector12) - (-> self control unknown-vector11) - (-> self control unknown-vector14) - ) + (vector-! (-> 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*) - (find-overlapping-shapes (-> self control) a1-2) - ) + (find-overlapping-shapes (-> self control) a1-2)) (target-calc-camera-pos) (do-target-shadow) (target-powerup-process) - (none) - ) + (none)) (defbehavior reset-target-state target ((arg0 symbol)) (when arg0 @@ -1902,8 +1155,7 @@ (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)) - ) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad))) (target-exit) (target-timed-invulnerable-off self) (set! (-> self control status) (cshape-moving-flags)) @@ -1920,16 +1172,13 @@ (set! (-> self control unknown-handle00) (the-as handle #f)) (set! (-> self control unknown-dword82) 0) (buzz-stop! 0) - self - ) + self) (defbehavior init-target target ((arg0 continue-point)) (set-setting! 'allow-pause #f 0.0 0) (set-setting! 'allow-progress #f 0.0 0) (apply-settings *setting-control*) - (if (not arg0) - (set! arg0 (get-or-create-continue! *game-info*)) - ) + (if (not arg0) (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)) @@ -1944,8 +1193,7 @@ (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 1))) (set! (-> s4-0 prim-core collide-as) (collide-kind target)) (set! (-> s4-0 collide-with) - (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider)) (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 prim-core action) (collide-action solid rider-target)) (set-root-prim! s5-0 s4-0) @@ -1953,46 +1201,35 @@ (set! (-> s3-0 prim-core action) (collide-action solid rider-target)) (set! (-> s3-0 prim-core collide-as) (collide-kind target)) (set! (-> s3-0 collide-with) - (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-0) - (set! (-> s5-0 unknown-sphere-array00 0) s3-0) - ) + (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) (collide-action solid)) (set! (-> s3-1 prim-core collide-as) (collide-kind target)) (set! (-> s3-1 collide-with) - (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-1) - (set! (-> s5-0 unknown-sphere-array00 1) s3-1) - ) + (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) (collide-action solid)) (set! (-> s3-2 prim-core collide-as) (collide-kind target)) (set! (-> s3-2 collide-with) - (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider)) (set! (-> s3-2 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-2) - (set! (-> s5-0 unknown-sphere-array00 2) s3-2) - ) + (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) - ) + (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) - ) + (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! (-> s5-0 unknown-sphere02) s3-5)))) (target-collide-set! 'normal 0.0) (backup-collide-with-as (-> self control)) (set! (-> self game) *game-info*) @@ -2009,8 +1246,7 @@ (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 param2) (the-as basic (-> self control unknown-vector12)))) (set! (-> self draw lod-set max-lod) 0) (logior! (-> self skel status) (janim-status inited eye)) (set! (-> self draw shadow-ctrl) *target-shadow-control*) @@ -2020,13 +1256,10 @@ (set! (-> self control unknown-cspace10 parent) (joint-node eichar-lod0-jg LshoulderPad)) (set! (-> self neck) (new 'process 'joint-mod (joint-mod-handler-mode look-at) self 7)) (set! (-> self fact) - (new 'process 'fact-info-target self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (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) - ) + (if *debug-segment* (add-connection *debug-engine* self target-print-stats self *stdcon0* #f)) (activate-hud self) (set! (-> self fp-hud) (the-as handle #f)) ;; og:preserve-this PAL patch here @@ -2043,42 +1276,24 @@ (set! (-> self current-level) #f) (level-setup) (go target-continue arg0) - (none) - ) + (none)) (defmethod deactivate ((this target)) (set-zero! *camera-smush-control*) (call-parent-method this) - (none) - ) + (none)) (defun stop ((arg0 symbol)) (when *target* (kill-by-name 'target *active-pool*) - (set! *target* #f) - ) + (set! *target* #f)) (set! (-> *game-info* mode) arg0) - 0 - ) + 0) (defun start ((arg0 symbol) (arg1 continue-point)) (set! (-> *level* border?) #f) (set! (-> *setting-control* default border-mode) #f) (stop arg0) - (let ((v1-3 (process-spawn - target - :init init-target - arg1 - :from *target-dead-pool* - :to *target-pool* - :stack *kernel-dram-stack* - ) - ) - ) - (if v1-3 - (set! *target* (the-as target (-> v1-3 0 self))) - (set! *target* #f) - ) - ) - *target* - ) + (let ((v1-3 (process-spawn target :init init-target arg1 :from *target-dead-pool* :to *target-pool* :stack *kernel-dram-stack*))) + (if v1-3 (set! *target* (the-as target (-> v1-3 0 self))) (set! *target* #f))) + *target*) diff --git a/goal_src/jak1/engine/target/sidekick.gc b/goal_src/jak1/engine/target/sidekick.gc index 2e98bc0789..31a6f4232d 100644 --- a/goal_src/jak1/engine/target/sidekick.gc +++ b/goal_src/jak1/engine/target/sidekick.gc @@ -1,36 +1,30 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/process-drawable.gc") (require "engine/target/target-util.gc") -;; name: sidekick.gc -;; name in dgo: sidekick -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS -(define *sidekick-remap* '(("run-to-stance-left" "run-to-stance") - ("run-to-stance-loop-left" "run-to-stance-loop") - ("stance-loop-left" "stance-loop") - ("run-to-stance-right" "run-to-stance") - ("run-to-stance-loop-right" "run-to-stance-loop") - ("stance-loop-right" "stance-loop") - ("run-to-stance-up" "run-to-stance") - ("run-to-stance-loop-up" "run-to-stance-loop") - ("stance-loop-up" "stance-loop") - ("run-to-stance-down" "run-to-stance") - ("run-to-stance-loop-down" "run-to-stance-loop") - ("stance-loop-down" "stance-loop") - ("run-right" "run") - ("run-left" "run") - ("walk-right" "walk") - ("walk-left" "walk") - ("edge-grab-stance1" "edge-grab-stance1" "edge-grab-stance1-alt") - ("pole-cycle" "pole-cycle" "pole-cycle2") - ) - ) +(define *sidekick-remap* + '(("run-to-stance-left" "run-to-stance") + ("run-to-stance-loop-left" "run-to-stance-loop") + ("stance-loop-left" "stance-loop") + ("run-to-stance-right" "run-to-stance") + ("run-to-stance-loop-right" "run-to-stance-loop") + ("stance-loop-right" "stance-loop") + ("run-to-stance-up" "run-to-stance") + ("run-to-stance-loop-up" "run-to-stance-loop") + ("stance-loop-up" "stance-loop") + ("run-to-stance-down" "run-to-stance") + ("run-to-stance-loop-down" "run-to-stance-loop") + ("stance-loop-down" "stance-loop") + ("run-right" "run") + ("run-left" "run") + ("walk-right" "walk") + ("walk-left" "walk") + ("edge-grab-stance1" "edge-grab-stance1" "edge-grab-stance1-alt") + ("pole-cycle" "pole-cycle" "pole-cycle2"))) (defun cspace<-cspace+quaternion! ((arg0 cspace) (arg1 cspace) (arg2 quaternion)) (rlet ((Q :class vf) @@ -39,8 +33,7 @@ (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) - ) + (vf5 :class vf)) (init-vf0-vector) (let ((s5-0 (-> arg0 bone transform))) (quaternion->matrix s5-0 arg2) @@ -60,174 +53,105 @@ (.svf (&-> s5-0 vector 0 quad) vf3) (.svf (&-> s5-0 vector 1 quad) vf4) (.svf (&-> s5-0 vector 2 quad) vf5) - s5-0 - ) - ) - ) + s5-0))) (defstate sidekick-clone (sidekick) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('matrix) - (case (-> block param 0) - (('play-anim) - (set! v0-0 (-> self node-list data)) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace+quaternion!) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param1) - (the-as basic (-> self parent-override 0 node-list data)) - ) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param2) - (the-as basic (-> self parent-override 0 control quat)) - ) - ) - (('copy-parent) - (set! v0-0 (-> self node-list data)) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace!) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param1) - (the-as basic (-> self parent-override 0 node-list data)) - ) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param2) #f) - ) - (else - (set! v0-0 (-> self node-list data)) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace+quaternion!) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param1) - (the-as basic (-> self parent-override 0 control unknown-cspace10 parent)) - ) - (set! (-> (the-as (inline-array cspace) v0-0) 0 param2) - (the-as basic (-> self parent-override 0 control quat)) - ) - ) - ) - v0-0 - ) - (('shadow) - (set! v0-0 (-> block param 0)) - (set! (-> self shadow-in-movie?) (the-as symbol v0-0)) - v0-0 - ) - (('blend-shape) - (cond - ((-> block param 0) - (set! v0-0 (logior (-> self skel status) (janim-status blerc))) - (set! (-> self skel status) (the-as janim-status v0-0)) - ) - (else - (set! v0-0 (logclear (-> self skel status) (janim-status blerc))) - (set! (-> self skel status) (the-as janim-status v0-0)) - ) - ) - v0-0 - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('matrix) + (case (-> block param 0) + (('play-anim) + (set! v0-0 (-> self node-list data)) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace+quaternion!) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param1) (the-as basic (-> self parent-override 0 node-list data))) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param2) (the-as basic (-> self parent-override 0 control quat)))) + (('copy-parent) + (set! v0-0 (-> self node-list data)) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace!) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param1) (the-as basic (-> self parent-override 0 node-list data))) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param2) #f)) + (else + (set! v0-0 (-> self node-list data)) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param0) cspace<-cspace+quaternion!) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param1) + (the-as basic (-> self parent-override 0 control unknown-cspace10 parent))) + (set! (-> (the-as (inline-array cspace) v0-0) 0 param2) (the-as basic (-> self parent-override 0 control quat))))) + v0-0) + (('shadow) (set! v0-0 (-> block param 0)) (set! (-> self shadow-in-movie?) (the-as symbol v0-0)) v0-0) + (('blend-shape) + (cond + ((-> block param 0) + (set! v0-0 (logior (-> self skel status) (janim-status blerc))) + (set! (-> self skel status) (the-as janim-status v0-0))) + (else + (set! v0-0 (logclear (-> self skel status) (janim-status blerc))) + (set! (-> self skel status) (the-as janim-status v0-0)))) + v0-0))) :code looping-code - :post (behavior () - (let ((v1-0 'process-drawable-art-error) - (a0-0 (-> self parent-override)) - ) - (when (!= (-> (if a0-0 - (-> a0-0 0 self-override) - ) - next-state - name - ) - v1-0 - ) - (quaternion-copy! (-> self root quat) (-> self parent-override 0 control quat)) - (set! (-> self anim-seed) (-> self parent-override 0 anim-seed)) - (set! (-> self draw status) (-> self parent-override 0 draw status)) - (joint-control-copy! (-> self skel) (-> self parent-override 0 skel)) - (joint-control-remap! - (-> self skel) - (-> self draw art-group) - (-> self parent-override 0 draw art-group) - *sidekick-remap* - (the-as int (-> self anim-seed)) - "" - ) - (let ((v1-22 (-> self parent-override 0 draw color-mult quad))) - (set! (-> self draw color-mult quad) v1-22) - ) - (with-pc ;; duh! - (when (pc-cheats? (-> *pc-settings* cheats) sidekick-blue) - (set! (-> self draw color-mult x) (set! (-> self draw color-mult y) 0.1))) - ) - (let ((v1-26 (-> self parent-override 0 draw color-emissive quad))) - (set! (-> self draw color-emissive quad) v1-26) - ) - (set! (-> self draw secondary-interp) (-> self parent-override 0 draw secondary-interp)) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) - (do-joint-math! self) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :a #x80) - ) - ) - (vector<-cspace! (-> self draw origin) (-> self node-list data (-> self draw origin-joint-index))) - ) - ) - (when *display-sidekick-stats* - (format *stdcon* "~%") - (debug-print-channels (-> self skel) (the-as symbol *stdcon*)) - (add-debug-sphere - *display-sidekick-stats* - (bucket-id debug-no-zbuf) - (-> self parent-override 0 control unknown-cspace10 parent bone transform vector 3) - 409.6 - (new 'static 'rgba :g #xff :a #x80) - ) - (add-debug-sphere - *display-sidekick-stats* - (bucket-id debug-no-zbuf) - (-> self node-list data 3 bone transform vector 3) - 409.6 - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - (add-debug-sphere - *display-sidekick-stats* - (bucket-id debug-no-zbuf) - (-> self draw origin) - 409.6 - (new 'static 'rgba :r #xff :g #x80 :a #x80) - ) - ) - (set! (-> self draw shadow) (the-as shadow-geo (if (and (movie?) (-> self shadow-in-movie?)) - sidekick-shadow-mg - ) - ) - ) - (let ((a0-26 (-> self skel effect))) - (if a0-26 - (effect-control-method-9 a0-26) - ) - ) - (if (logtest? (-> self skel status) (janim-status blerc blerc-done)) - (merc-blend-shape self) - ) - (if (logtest? (-> self skel status) (janim-status eye-done eye)) - (merc-eye-anim self) - ) - ) - ) + :post + (behavior () + (let ((v1-0 'process-drawable-art-error) + (a0-0 (-> self parent-override))) + (when (!= (-> (if a0-0 (-> a0-0 0 self-override)) next-state name) v1-0) + (quaternion-copy! (-> self root quat) (-> self parent-override 0 control quat)) + (set! (-> self anim-seed) (-> self parent-override 0 anim-seed)) + (set! (-> self draw status) (-> self parent-override 0 draw status)) + (joint-control-copy! (-> self skel) (-> self parent-override 0 skel)) + (joint-control-remap! (-> self skel) + (-> self draw art-group) + (-> self parent-override 0 draw art-group) + *sidekick-remap* + (the-as int (-> self anim-seed)) + "") + (let ((v1-22 (-> self parent-override 0 draw color-mult quad))) (set! (-> self draw color-mult quad) v1-22)) + (with-pc ;; duh! + (when (pc-cheats? (-> *pc-settings* cheats) sidekick-blue) + (set! (-> self draw color-mult x) (set! (-> self draw color-mult y) 0.1)))) + (let ((v1-26 (-> self parent-override 0 draw color-emissive quad))) (set! (-> self draw color-emissive quad) v1-26)) + (set! (-> self draw secondary-interp) (-> self parent-override 0 draw secondary-interp)) + (if *debug-segment* + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) + (do-joint-math! self) + (if *debug-segment* + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) 'draw (new 'static 'rgba :r #x80 :a #x80))) + (vector<-cspace! (-> self draw origin) (-> self node-list data (-> self draw origin-joint-index))))) + (when *display-sidekick-stats* + (format *stdcon* "~%") + (debug-print-channels (-> self skel) (the-as symbol *stdcon*)) + (add-debug-sphere *display-sidekick-stats* + (bucket-id debug-no-zbuf) + (-> self parent-override 0 control unknown-cspace10 parent bone transform vector 3) + 409.6 + (new 'static 'rgba :g #xff :a #x80)) + (add-debug-sphere *display-sidekick-stats* + (bucket-id debug-no-zbuf) + (-> self node-list data 3 bone transform vector 3) + 409.6 + (new 'static 'rgba :r #xff :g #xff :a #x80)) + (add-debug-sphere *display-sidekick-stats* + (bucket-id debug-no-zbuf) + (-> self draw origin) + 409.6 + (new 'static 'rgba :r #xff :g #x80 :a #x80))) + (set! (-> self draw shadow) (the-as shadow-geo (if (and (movie?) (-> self shadow-in-movie?)) sidekick-shadow-mg))) + (let ((a0-26 (-> self skel effect))) (if a0-26 (effect-control-method-9 a0-26))) + (if (logtest? (-> self skel status) (janim-status blerc blerc-done)) (merc-blend-shape self)) + (if (logtest? (-> self skel status) (janim-status eye-done eye)) (merc-eye-anim self)))) -(defskelgroup *sidekick-sg* sidekick sidekick-lod0-jg -1 - ((sidekick-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - :longest-edge (meters 1) - :shadow sidekick-shadow-mg - :texture-level 2 - :sort 1 - ) +(defskelgroup *sidekick-sg* + sidekick + sidekick-lod0-jg + -1 + ((sidekick-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :longest-edge (meters 1) + :shadow sidekick-shadow-mg + :texture-level 2 + :sort 1) (defbehavior init-sidekick sidekick () (logior! (-> self mask) (process-mask sidekick)) @@ -239,24 +163,19 @@ (set! (-> self draw shadow-joint-index) (the-as uint 6)) (set! (-> self draw shadow-ctrl) *target-shadow-control*) (logior! (-> self skel status) (janim-status eye)) - (#when PC_PORT ;; daxter can be killed mid-blerc, leaving blerc modifications in the merc data. ;; once sidekick is restarted, the blerc-done flag will be lost, so the modifications will ;; to work around this, just set blerc-done on spawn. it will run blerc with 0's on the ;; first frame when daxter is drawn, clearing blerc data. - (logior! (-> self skel status) (janim-status blerc-done)) - ) + (logior! (-> self skel status) (janim-status blerc-done))) (let ((v1-14 (-> self node-list data))) (set! (-> v1-14 0 param0) cspace<-cspace+quaternion!) (set! (-> v1-14 0 param1) (the-as basic (-> self parent-override 0 control unknown-cspace10 parent))) - (set! (-> v1-14 0 param2) (the-as basic (-> self parent-override 0 control quat))) - ) + (set! (-> v1-14 0 param2) (the-as basic (-> self parent-override 0 control quat)))) (set! (-> self shadow-in-movie?) #t) (go sidekick-clone) - (none) - ) + (none)) (defun starts () - (send-event *target* 'sidekick #t) - ) + (send-event *target* 'sidekick #t)) diff --git a/goal_src/jak1/engine/target/target-death.gc b/goal_src/jak1/engine/target/target-death.gc index 7d6f5213aa..077270d5ff 100644 --- a/goal_src/jak1/engine/target/target-death.gc +++ b/goal_src/jak1/engine/target/target-death.gc @@ -1,753 +1,494 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/camera/cam-start.gc") (require "engine/target/target.gc") (require "engine/camera/pov-camera-h.gc") (require "engine/target/target-part.gc") -;; name: target-death.gc -;; name in dgo: target-death -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (define-extern runs-on-jak-spawn (function none)) -(defskelgroup *deathcam-sg* deathcam deathcam-lod0-jg deathcam-idle-ja - ((deathcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :texture-level 2 - ) +(defskelgroup *deathcam-sg* + deathcam + deathcam-lod0-jg + deathcam-idle-ja + ((deathcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :texture-level 2) (define *auto-continue* #f) (defun next-level ((arg0 symbol)) (let ((v1-0 (lookup-level-info arg0))) - (the-as level-load-info (when v1-0 - (let* ((a0-1 *level-load-list*) - (a1-0 (car a0-1)) - ) - (while (not (null? a0-1)) - (let ((a1-1 (the-as basic (-> (the-as level-load-info a1-0) name)))) - (if (= (-> (the-as level-load-info a1-1) index) (+ (-> v1-0 index) 1)) - (return (the-as level-load-info a1-1)) - ) - ) - (set! a0-1 (cdr a0-1)) - (set! a1-0 (car a0-1)) - ) - ) - #f - ) - ) - ) - ) + (the-as level-load-info + (when v1-0 + (let* ((a0-1 *level-load-list*) + (a1-0 (car a0-1))) + (while (not (null? a0-1)) + (let ((a1-1 (the-as basic (-> (the-as level-load-info a1-0) name)))) + (if (= (-> (the-as level-load-info a1-1) index) (+ (-> v1-0 index) 1)) (return (the-as level-load-info a1-1)))) + (set! a0-1 (cdr a0-1)) + (set! a1-0 (car a0-1)))) + #f)))) (defstate target-continue (target) :event target-generic-event-handler - :exit (behavior () - (set! (-> *load-boundary-target* 0 quad) (-> (camera-pos) quad)) - (set! (-> *load-boundary-target* 1 quad) (-> (target-pos 0) quad)) - (set! (-> *load-boundary-target* 2 quad) (-> *load-boundary-target* 0 quad)) - (set! (-> *load-boundary-target* 3 quad) (-> *load-boundary-target* 1 quad)) - (when (not (logtest? (-> *game-info* current-continue flags) (continue-flags intro sage-intro title))) - (set! (-> *level* border?) (-> *level* play?)) - (set! (-> *setting-control* default border-mode) (-> *level* play?)) - ) - (remove-setting! 'allow-pause) - (remove-setting! 'allow-progress) - (remove-setting! 'bg-a) - (remove-setting! 'music-volume) - (remove-setting! 'sfx-volume) - (remove-setting! 'ambient-volume) - (remove-setting! 'music) - ) - :code (behavior ((arg0 continue-point)) - (set-time! (-> self state-time)) - (if (-> *art-control* reserve-buffer) - (reserve-free *art-control* (-> *art-control* reserve-buffer heap)) - ) - (add-setting! 'bg-a 'abs 1.0 0) - (set! (-> *setting-control* current bg-a) 1.0) - (set-setting! 'sfx-volume 'abs 0.0 0) - (set-setting! 'ambient-volume 'abs 0.0 0) - (let ((v1-20 (lookup-level-info (-> arg0 level)))) - (when v1-20 - (set-setting! 'music (-> v1-20 music-bank) 0.0 0) - (set-setting! 'music-volume 'abs 0.0 0) - ) - ) - (set! (-> *level* border?) #f) - (set! (-> *setting-control* default border-mode) #f) - (reset-target-state #t) - (target-exit) - (ja-channel-set! 0) - (quaternion-copy! (-> self control unknown-quaternion00) (-> arg0 quat)) - (move-to-point! (-> self control) (-> arg0 trans)) - (rot->dir-targ! (-> self control)) - (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) - (cond - ((not (string= (-> arg0 name) "default")) - (set! *external-cam-mode* #f) - (cam-stop) - (suspend) - 0 - ) - (else - (send-event *camera* 'clear-entity) - (send-event *camera* 'change-state cam-fixed 0) - (suspend) - 0 - ) - ) - (set! (-> *load-state* vis-nick) (-> arg0 vis-nick)) - (set! (-> *load-state* want 0 name) (-> arg0 lev0)) - (set! (-> *load-state* want 0 display?) (-> arg0 disp0)) - (set! (-> *load-state* want 0 force-vis?) #f) - (set! (-> *load-state* want 0 force-inside?) #f) - (set! (-> *load-state* want 1 name) (-> arg0 lev1)) - (set! (-> *load-state* want 1 display?) (-> arg0 disp1)) - (set! (-> *load-state* want 1 force-vis?) #f) - (set! (-> *load-state* want 1 force-inside?) #f) - (when (not (string= (-> arg0 name) "default")) - (while (not (and (or (not (-> arg0 lev0)) (not (-> arg0 disp0)) (= (level-status *level* (-> arg0 lev0)) 'active)) - (or (not (-> arg0 lev1)) (not (-> arg0 disp1)) (= (level-status *level* (-> arg0 lev1)) 'active)) - ) - ) - (let ((v1-52 (lookup-level-info (-> arg0 level)))) - (if (and v1-52 - (= (-> *setting-control* current music) (-> v1-52 music-bank)) - (not (logtest? (-> arg0 flags) (continue-flags sage-intro title))) - ) - (remove-setting! 'music-volume) - ) - ) - (suspend) - ) - ) - (backup-load-state-and-set-cmds *load-state* '()) - (execute-command *load-state* '(teleport)) - (let* ((s5-0 (-> arg0 load-commands)) - (a1-18 (car s5-0)) - ) - (while (not (null? s5-0)) - (execute-command *load-state* (the-as pair a1-18)) - (set! s5-0 (cdr s5-0)) - (set! a1-18 (car s5-0)) - ) - ) - (restore-load-state *load-state*) - (set! (-> *ACTOR-bank* birth-max) 1000) - (new 'stack 'transformq) - (cond - ((not (string= (-> arg0 name) "default")) - (cam-start #t) - (suspend) - (suspend) - (set! (-> *camera-combiner* trans quad) (-> arg0 camera-trans quad)) - (let ((s5-1 (-> *camera-combiner* inv-camera-rot)) - (s4-0 (-> arg0 camera-rot)) - ) - (matrix-identity! s5-1) - (set! (-> s5-1 vector 0 x) (-> s4-0 0)) - (set! (-> s5-1 vector 0 y) (-> s4-0 1)) - (set! (-> s5-1 vector 0 z) (-> s4-0 2)) - (set! (-> s5-1 vector 1 x) (-> s4-0 3)) - (set! (-> s5-1 vector 1 y) (-> s4-0 4)) - (set! (-> s5-1 vector 1 z) (-> s4-0 5)) - (set! (-> s5-1 vector 2 x) (-> s4-0 6)) - (set! (-> s5-1 vector 2 y) (-> s4-0 7)) - (set! (-> s5-1 vector 2 z) (-> s4-0 8)) - ) - (send-event *camera* 'change-target self) - (send-event *camera* 'no-intro) - (send-event *camera* 'clear-entity) - (send-event *camera* 'force-blend 0) - (send-event *camera* 'change-state cam-fixed 0) - (send-event *camera* 'change-state cam-string 0) - ) - (else - (send-event *camera* 'change-target self) - (send-event *camera* 'change-state cam-string 0) - (send-event *camera* 'teleport) - (send-event *camera* 'no-intro) - (send-event *camera* 'clear-entity) - ) - ) - (send-event self 'level-enter (-> arg0 level)) - (dotimes (v1-124 (-> *level* length)) - (let ((a0-64 (-> *level* level v1-124))) - (if (= (-> a0-64 status) 'active) - (set! (-> a0-64 all-visible?) 'loading) - ) - ) - ) - (let ((s5-2 (level-get *level* (-> arg0 level)))) - - ;; vis info check added for PC, don't bother waiting for vis if the level doesn't have it. - (when (and s5-2 (-> s5-2 vis-info 0)) - (while (and (= (-> s5-2 all-visible?) 'loading) (-> *level* vis?)) - (suspend) - ) - ) - ) - (set! *spawn-actors* #t) - (set! *teleport* #t) - (set! (-> *ACTOR-bank* birth-max) 1000) - (set-blackout-frames (seconds 0.1)) - (cond - ((logtest? (-> arg0 flags) (continue-flags title)) - (go target-title) - ) - ((logtest? (-> arg0 flags) (continue-flags intro)) - (start-sequence-a) - ) - ((logtest? (-> arg0 flags) (continue-flags sage-intro)) - (let ((s5-3 (entity-by-name "sage-23"))) - (when s5-3 - (set-blackout-frames (seconds 100)) - (entity-birth-no-kill s5-3) - (suspend) - (send-event - (if s5-3 - (-> s5-3 extra process) - ) - 'play-anim - ) - ) - ) - ) - ((and (logtest? (-> arg0 flags) (continue-flags sage-ecorocks)) - (or (= (get-task-status (game-task beach-ecorocks)) (task-status need-hint)) - (= (get-task-status (game-task beach-ecorocks)) (task-status need-introduction)) - ) - (#when PC_PORT (not (is-speedrun-category? 'il-village1))) ;; modified for PC port - skip green sage cutscene in Sandover IL speedrun - ) - (let ((s5-4 (entity-by-name "sage-23"))) - (when s5-4 - (set-blackout-frames (seconds 100)) - (entity-birth-no-kill s5-4) - (suspend) - (set! arg0 (get-continue-by-name *game-info* "village1-hut")) - (send-event - (if s5-4 - (-> s5-4 extra process) - ) - 'play-anim - ) - ) - ) - ) - ((logtest? (-> arg0 flags) (continue-flags demo)) - (go target-demo) - ) - ((logtest? (-> arg0 flags) (continue-flags sage-demo-convo)) - (set-blackout-frames (seconds 1)) - (process-spawn-function - process - (lambda () - (local-vars (v1-10 basic)) - (let ((gp-0 (entity-by-name "sage-23"))) - (when gp-0 - (set-blackout-frames (seconds 100)) - (entity-birth-no-kill gp-0) - (suspend) - (suspend) - (send-event - (if gp-0 - (-> gp-0 extra process) - ) - 'play-anim - ) - ) - ) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 2)) - (suspend) - ) - ) - (until (not v1-10) + :exit + (behavior () + (set! (-> *load-boundary-target* 0 quad) (-> (camera-pos) quad)) + (set! (-> *load-boundary-target* 1 quad) (-> (target-pos 0) quad)) + (set! (-> *load-boundary-target* 2 quad) (-> *load-boundary-target* 0 quad)) + (set! (-> *load-boundary-target* 3 quad) (-> *load-boundary-target* 1 quad)) + (when (not (logtest? (-> *game-info* current-continue flags) (continue-flags intro sage-intro title))) + (set! (-> *level* border?) (-> *level* play?)) + (set! (-> *setting-control* default border-mode) (-> *level* play?))) + (remove-setting! 'allow-pause) + (remove-setting! 'allow-progress) + (remove-setting! 'bg-a) + (remove-setting! 'music-volume) + (remove-setting! 'sfx-volume) + (remove-setting! 'ambient-volume) + (remove-setting! 'music)) + :code + (behavior ((arg0 continue-point)) + (set-time! (-> self state-time)) + (if (-> *art-control* reserve-buffer) (reserve-free *art-control* (-> *art-control* reserve-buffer heap))) + (add-setting! 'bg-a 'abs 1.0 0) + (set! (-> *setting-control* current bg-a) 1.0) + (set-setting! 'sfx-volume 'abs 0.0 0) + (set-setting! 'ambient-volume 'abs 0.0 0) + (let ((v1-20 (lookup-level-info (-> arg0 level)))) + (when v1-20 + (set-setting! 'music (-> v1-20 music-bank) 0.0 0) + (set-setting! 'music-volume 'abs 0.0 0))) + (set! (-> *level* border?) #f) + (set! (-> *setting-control* default border-mode) #f) + (reset-target-state #t) + (target-exit) + (ja-channel-set! 0) + (quaternion-copy! (-> self control unknown-quaternion00) (-> arg0 quat)) + (move-to-point! (-> self control) (-> arg0 trans)) + (rot->dir-targ! (-> self control)) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) + (cond + ((not (string= (-> arg0 name) "default")) (set! *external-cam-mode* #f) (cam-stop) (suspend) 0) + (else (send-event *camera* 'clear-entity) (send-event *camera* 'change-state cam-fixed 0) (suspend) 0)) + (set! (-> *load-state* vis-nick) (-> arg0 vis-nick)) + (set! (-> *load-state* want 0 name) (-> arg0 lev0)) + (set! (-> *load-state* want 0 display?) (-> arg0 disp0)) + (set! (-> *load-state* want 0 force-vis?) #f) + (set! (-> *load-state* want 0 force-inside?) #f) + (set! (-> *load-state* want 1 name) (-> arg0 lev1)) + (set! (-> *load-state* want 1 display?) (-> arg0 disp1)) + (set! (-> *load-state* want 1 force-vis?) #f) + (set! (-> *load-state* want 1 force-inside?) #f) + (when (not (string= (-> arg0 name) "default")) + (while (not (and (or (not (-> arg0 lev0)) (not (-> arg0 disp0)) (= (level-status *level* (-> arg0 lev0)) 'active)) + (or (not (-> arg0 lev1)) (not (-> arg0 disp1)) (= (level-status *level* (-> arg0 lev1)) 'active)))) + (let ((v1-52 (lookup-level-info (-> arg0 level)))) + (if (and v1-52 + (= (-> *setting-control* current music) (-> v1-52 music-bank)) + (not (logtest? (-> arg0 flags) (continue-flags sage-intro title)))) + (remove-setting! 'music-volume))) + (suspend))) + (backup-load-state-and-set-cmds *load-state* '()) + (execute-command *load-state* '(teleport)) + (let* ((s5-0 (-> arg0 load-commands)) + (a1-18 (car s5-0))) + (while (not (null? s5-0)) + (execute-command *load-state* (the-as pair a1-18)) + (set! s5-0 (cdr s5-0)) + (set! a1-18 (car s5-0)))) + (restore-load-state *load-state*) + (set! (-> *ACTOR-bank* birth-max) 1000) + (new 'stack 'transformq) + (cond + ((not (string= (-> arg0 name) "default")) + (cam-start #t) + (suspend) + (suspend) + (set! (-> *camera-combiner* trans quad) (-> arg0 camera-trans quad)) + (let ((s5-1 (-> *camera-combiner* inv-camera-rot)) + (s4-0 (-> arg0 camera-rot))) + (matrix-identity! s5-1) + (set! (-> s5-1 vector 0 x) (-> s4-0 0)) + (set! (-> s5-1 vector 0 y) (-> s4-0 1)) + (set! (-> s5-1 vector 0 z) (-> s4-0 2)) + (set! (-> s5-1 vector 1 x) (-> s4-0 3)) + (set! (-> s5-1 vector 1 y) (-> s4-0 4)) + (set! (-> s5-1 vector 1 z) (-> s4-0 5)) + (set! (-> s5-1 vector 2 x) (-> s4-0 6)) + (set! (-> s5-1 vector 2 y) (-> s4-0 7)) + (set! (-> s5-1 vector 2 z) (-> s4-0 8))) + (send-event *camera* 'change-target self) + (send-event *camera* 'no-intro) + (send-event *camera* 'clear-entity) + (send-event *camera* 'force-blend 0) + (send-event *camera* 'change-state cam-fixed 0) + (send-event *camera* 'change-state cam-string 0)) + (else + (send-event *camera* 'change-target self) + (send-event *camera* 'change-state cam-string 0) + (send-event *camera* 'teleport) + (send-event *camera* 'no-intro) + (send-event *camera* 'clear-entity))) + (send-event self 'level-enter (-> arg0 level)) + (dotimes (v1-124 (-> *level* length)) + (let ((a0-64 (-> *level* level v1-124))) (if (= (-> a0-64 status) 'active) (set! (-> a0-64 all-visible?) 'loading)))) + (let ((s5-2 (level-get *level* (-> arg0 level)))) + ;; vis info check added for PC, don't bother waiting for vis if the level doesn't have it. + (when (and s5-2 (-> s5-2 vis-info 0)) + (while (and (= (-> s5-2 all-visible?) 'loading) (-> *level* vis?)) + (suspend)))) + (set! *spawn-actors* #t) + (set! *teleport* #t) + (set! (-> *ACTOR-bank* birth-max) 1000) + (set-blackout-frames (seconds 0.1)) + (cond + ((logtest? (-> arg0 flags) (continue-flags title)) (go target-title)) + ((logtest? (-> arg0 flags) (continue-flags intro)) (start-sequence-a)) + ((logtest? (-> arg0 flags) (continue-flags sage-intro)) + (let ((s5-3 (entity-by-name "sage-23"))) + (when s5-3 + (set-blackout-frames (seconds 100)) + (entity-birth-no-kill s5-3) (suspend) - (set! v1-10 (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed)))) - ) - (set-time! (-> *cpad-list* cpads 0 change-time)) - (reset-actors 'dead) - (start 'play (get-continue-by-name *game-info* "misty-start")) - ) - ) - ) - ((logtest? (-> arg0 flags) (continue-flags warp)) - (let ((s5-6 (new 'static 'vector))) - (cond - ((string= (-> arg0 name) "village1-warp") - (set! (-> s5-6 quad) (-> (entity-by-name "villagea-part-1") extra trans quad)) - (suspend) - (let ((s4-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-2 from) self) - (set! (-> s4-2 num-params) 0) - (set! (-> s4-2 message) 'hidden-other) - (let ((s3-0 send-event-function) - (v1-175 (entity-by-name "sage-23")) - ) - (s3-0 - (if v1-175 - (-> v1-175 extra process) - ) - s4-2 - ) - ) - ) - (let ((s4-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-3 from) self) - (set! (-> s4-3 num-params) 0) - (set! (-> s4-3 message) 'hidden-other) - (let ((s3-1 send-event-function) - (v1-179 (entity-by-name "assistant-11")) - ) - (s3-1 - (if v1-179 - (-> v1-179 extra process) - ) - s4-3 - ) - ) - ) - (set-continue! *game-info* "village1-hut") - ) - ((or (string= (-> arg0 name) "training-warp") (string= (-> arg0 name) "game-start")) - (if (logtest? (-> arg0 flags) (continue-flags game-start)) - (close-specific-task! (game-task intro) (task-status need-resolution)) - ) - (set! (-> s5-6 quad) (-> (entity-by-name "training-part-1") extra trans quad)) - (set-continue! *game-info* "training-start") - ) - ((string= (-> arg0 name) "village2-warp") - (set! (-> s5-6 quad) (-> (entity-by-name "villageb-part-55") extra trans quad)) - (when (task-closed? (game-task village2-levitator) (task-status need-hint)) - (suspend) - (let ((s4-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-6 from) self) - (set! (-> s4-6 num-params) 0) - (set! (-> s4-6 message) 'hidden-other) - (let ((s3-2 send-event-function) - (v1-201 (entity-by-name "assistant-bluehut-1")) - ) - (s3-2 - (if v1-201 - (-> v1-201 extra process) - ) - s4-6 - ) - ) - ) - (let ((s4-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-7 from) self) - (set! (-> s4-7 num-params) 0) - (set! (-> s4-7 message) 'hidden-other) - (let ((s3-3 send-event-function) - (v1-205 (entity-by-name "sage-bluehut-1")) - ) - (s3-3 - (if v1-205 - (-> v1-205 extra process) - ) - s4-7 - ) - ) - ) - (let ((s4-8 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-8 from) self) - (set! (-> s4-8 num-params) 0) - (set! (-> s4-8 message) 'hidden-other) - (let ((s3-4 send-event-function) - (v1-209 (entity-by-name "flutflut-bluehut-1")) - ) - (s3-4 - (if v1-209 - (-> v1-209 extra process) - ) - s4-8 - ) - ) - ) - ) - (set-continue! *game-info* "village2-start") - ) - ((string= (-> arg0 name) "village3-warp") - (set! (-> s5-6 quad) (-> (entity-by-name "villagec-part-32") extra trans quad)) - (when (task-closed? (game-task village3-button) (task-status need-hint)) - (suspend) - (let ((s4-10 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-10 from) self) - (set! (-> s4-10 num-params) 0) - (set! (-> s4-10 message) 'hidden-other) - (let ((s3-5 send-event-function) - (v1-220 (entity-by-name "assistant-villagec-1")) - ) - (s3-5 - (if v1-220 - (-> v1-220 extra process) - ) - s4-10 - ) - ) - ) - (let ((s4-11 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-11 from) self) - (set! (-> s4-11 num-params) 0) - (set! (-> s4-11 message) 'hidden-other) - (let ((s3-6 send-event-function) - (v1-224 (entity-by-name "sage-villagec-1")) - ) - (s3-6 - (if v1-224 - (-> v1-224 extra process) - ) - s4-11 - ) - ) - ) + (send-event (if s5-3 (-> s5-3 extra process)) 'play-anim)))) + ((and (logtest? (-> arg0 flags) (continue-flags sage-ecorocks)) + (or (= (get-task-status (game-task beach-ecorocks)) (task-status need-hint)) + (= (get-task-status (game-task beach-ecorocks)) (task-status need-introduction))) + (#when PC_PORT + (not (is-speedrun-category? 'il-village1))) ;; modified for PC port - skip green sage cutscene in Sandover IL speedrun ) - (set-continue! *game-info* "village3-start") - ) - ((string= (-> arg0 name) "citadel-warp") - (set! (-> s5-6 quad) (-> (entity-by-name "citb-part-1") extra trans quad)) - (when (task-closed? (game-task village4-button) (task-status need-hint)) + (let ((s5-4 (entity-by-name "sage-23"))) + (when s5-4 + (set-blackout-frames (seconds 100)) + (entity-birth-no-kill s5-4) + (suspend) + (set! arg0 (get-continue-by-name *game-info* "village1-hut")) + (send-event (if s5-4 (-> s5-4 extra process)) 'play-anim)))) + ((logtest? (-> arg0 flags) (continue-flags demo)) (go target-demo)) + ((logtest? (-> arg0 flags) (continue-flags sage-demo-convo)) + (set-blackout-frames (seconds 1)) + (process-spawn-function process + (lambda () + (local-vars (v1-10 basic)) + (let ((gp-0 (entity-by-name "sage-23"))) + (when gp-0 + (set-blackout-frames (seconds 100)) + (entity-birth-no-kill gp-0) + (suspend) + (suspend) + (send-event (if gp-0 (-> gp-0 extra process)) 'play-anim))) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 2)) (suspend))) + (until (not v1-10) + (suspend) + (set! v1-10 (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed))))) + (set-time! (-> *cpad-list* cpads 0 change-time)) + (reset-actors 'dead) + (start 'play (get-continue-by-name *game-info* "misty-start"))))) + ((logtest? (-> arg0 flags) (continue-flags warp)) + (let ((s5-6 (new 'static 'vector))) + (cond + ((string= (-> arg0 name) "village1-warp") + (set! (-> s5-6 quad) (-> (entity-by-name "villagea-part-1") extra trans quad)) (suspend) - (let ((s4-13 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-13 from) self) - (set! (-> s4-13 num-params) 0) - (set! (-> s4-13 message) 'hidden-other) - (let ((s3-7 send-event-function) - (v1-235 (entity-by-name "assistant-lavatube-end-3")) - ) - (s3-7 - (if v1-235 - (-> v1-235 extra process) - ) - s4-13 - ) - ) - ) - ) - (set-continue! *game-info* "lavatube-end") - ) - ) - (go target-warp-in s5-6 (-> arg0 trans)) - ) - ) - (else - (let ((s5-7 (current-time))) - (until (time-elapsed? s5-7 (seconds 0.05)) - (suspend) - ) - ) - ) - ) - (set-continue! *game-info* arg0) - (when *auto-continue* - (let ((s5-8 (next-level (-> arg0 level)))) - (when (and s5-8 (not (null? (-> s5-8 continues)))) - (format 0 "~A ~A ~A~%" (-> arg0 level) (-> s5-8 name) (car (-> s5-8 continues))) - (inspect global) - (process-spawn-function process (lambda ((arg0 continue-point)) (start 'play arg0)) (car (-> s5-8 continues))) - ) - ) - ) - (ja-channel-set! 1) - (ja :group! eichar-stance-loop-ja) - (suspend) - (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (runs-on-jak-spawn) ;; trigger hook for mod base - (go target-stance) - ) - :post target-no-move-post - ) + (let ((s4-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-2 from) self) + (set! (-> s4-2 num-params) 0) + (set! (-> s4-2 message) 'hidden-other) + (let ((s3-0 send-event-function) + (v1-175 (entity-by-name "sage-23"))) + (s3-0 (if v1-175 (-> v1-175 extra process)) s4-2))) + (let ((s4-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-3 from) self) + (set! (-> s4-3 num-params) 0) + (set! (-> s4-3 message) 'hidden-other) + (let ((s3-1 send-event-function) + (v1-179 (entity-by-name "assistant-11"))) + (s3-1 (if v1-179 (-> v1-179 extra process)) s4-3))) + (set-continue! *game-info* "village1-hut")) + ((or (string= (-> arg0 name) "training-warp") (string= (-> arg0 name) "game-start")) + (if (logtest? (-> arg0 flags) (continue-flags game-start)) + (close-specific-task! (game-task intro) (task-status need-resolution))) + (set! (-> s5-6 quad) (-> (entity-by-name "training-part-1") extra trans quad)) + (set-continue! *game-info* "training-start")) + ((string= (-> arg0 name) "village2-warp") + (set! (-> s5-6 quad) (-> (entity-by-name "villageb-part-55") extra trans quad)) + (when (task-closed? (game-task village2-levitator) (task-status need-hint)) + (suspend) + (let ((s4-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-6 from) self) + (set! (-> s4-6 num-params) 0) + (set! (-> s4-6 message) 'hidden-other) + (let ((s3-2 send-event-function) + (v1-201 (entity-by-name "assistant-bluehut-1"))) + (s3-2 (if v1-201 (-> v1-201 extra process)) s4-6))) + (let ((s4-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-7 from) self) + (set! (-> s4-7 num-params) 0) + (set! (-> s4-7 message) 'hidden-other) + (let ((s3-3 send-event-function) + (v1-205 (entity-by-name "sage-bluehut-1"))) + (s3-3 (if v1-205 (-> v1-205 extra process)) s4-7))) + (let ((s4-8 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-8 from) self) + (set! (-> s4-8 num-params) 0) + (set! (-> s4-8 message) 'hidden-other) + (let ((s3-4 send-event-function) + (v1-209 (entity-by-name "flutflut-bluehut-1"))) + (s3-4 (if v1-209 (-> v1-209 extra process)) s4-8)))) + (set-continue! *game-info* "village2-start")) + ((string= (-> arg0 name) "village3-warp") + (set! (-> s5-6 quad) (-> (entity-by-name "villagec-part-32") extra trans quad)) + (when (task-closed? (game-task village3-button) (task-status need-hint)) + (suspend) + (let ((s4-10 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-10 from) self) + (set! (-> s4-10 num-params) 0) + (set! (-> s4-10 message) 'hidden-other) + (let ((s3-5 send-event-function) + (v1-220 (entity-by-name "assistant-villagec-1"))) + (s3-5 (if v1-220 (-> v1-220 extra process)) s4-10))) + (let ((s4-11 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-11 from) self) + (set! (-> s4-11 num-params) 0) + (set! (-> s4-11 message) 'hidden-other) + (let ((s3-6 send-event-function) + (v1-224 (entity-by-name "sage-villagec-1"))) + (s3-6 (if v1-224 (-> v1-224 extra process)) s4-11)))) + (set-continue! *game-info* "village3-start")) + ((string= (-> arg0 name) "citadel-warp") + (set! (-> s5-6 quad) (-> (entity-by-name "citb-part-1") extra trans quad)) + (when (task-closed? (game-task village4-button) (task-status need-hint)) + (suspend) + (let ((s4-13 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-13 from) self) + (set! (-> s4-13 num-params) 0) + (set! (-> s4-13 message) 'hidden-other) + (let ((s3-7 send-event-function) + (v1-235 (entity-by-name "assistant-lavatube-end-3"))) + (s3-7 (if v1-235 (-> v1-235 extra process)) s4-13)))) + (set-continue! *game-info* "lavatube-end"))) + (go target-warp-in s5-6 (-> arg0 trans)))) + (else (let ((s5-7 (current-time))) (until (time-elapsed? s5-7 (seconds 0.05)) (suspend))))) + (set-continue! *game-info* arg0) + (when *auto-continue* + (let ((s5-8 (next-level (-> arg0 level)))) + (when (and s5-8 (not (null? (-> s5-8 continues)))) + (format 0 "~A ~A ~A~%" (-> arg0 level) (-> s5-8 name) (car (-> s5-8 continues))) + (inspect global) + (process-spawn-function process + (lambda ((arg0 continue-point)) + (start 'play arg0)) + (car (-> s5-8 continues)))))) + (ja-channel-set! 1) + (ja :group! eichar-stance-loop-ja) + (runs-on-jak-spawn) ;; trigger hook for mod base + (suspend) + (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (go target-stance)) + :post target-no-move-post) -(define *smack-mods* (new 'static 'surface - :name 'jump - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 0.05 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mult-hook (lambda :behavior target - ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int)) - (when (= arg3 1) - (let ((f30-0 (-> self control unknown-float40)) - (f28-0 (-> self control unknown-float41)) - ) - (set! (-> arg0 seek0) (lerp (-> arg0 seek0) (the-as float 409600.0) f28-0)) - (set! (-> arg0 seek90) (lerp (-> arg0 seek90) (the-as float 409600.0) f28-0)) - (set! (-> arg0 seek180) (lerp (-> arg0 seek180) (the-as float 409600.0) f28-0)) - (set! (-> arg0 target-speed) (lerp (-> arg0 target-speed) f30-0 f28-0)) - (set! (-> arg0 transv-max) (lerp (-> arg0 transv-max) f30-0 f28-0)) - ) - ) - (none) - ) - :mode 'air - :flags (surface-flags jump) - ) - ) +(define *smack-mods* + (new 'static + 'surface + :name 'jump + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 0.05 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mult-hook + (lambda :behavior target ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int)) + (when (= arg3 1) + (let ((f30-0 (-> self control unknown-float40)) + (f28-0 (-> self control unknown-float41))) + (set! (-> arg0 seek0) (lerp (-> arg0 seek0) (the-as float 409600.0) f28-0)) + (set! (-> arg0 seek90) (lerp (-> arg0 seek90) (the-as float 409600.0) f28-0)) + (set! (-> arg0 seek180) (lerp (-> arg0 seek180) (the-as float 409600.0) f28-0)) + (set! (-> arg0 target-speed) (lerp (-> arg0 target-speed) f30-0 f28-0)) + (set! (-> arg0 transv-max) (lerp (-> arg0 transv-max) f30-0 f28-0)))) + (none)) + :mode 'air + :flags (surface-flags jump))) (define *smack-up-mods* - (new 'static 'surface - :name 'jump - :turnv 131072.0 - :turnvv 32768.0 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 0.05 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mult-hook (lambda :behavior target - ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int)) - (when (= arg3 1) - (let ((f30-0 (-> self control unknown-float40)) - (f28-0 (-> self control unknown-float41)) - ) - (set! (-> arg0 seek0) (lerp (-> arg0 seek0) (the-as float 409600.0) f28-0)) - (set! (-> arg0 seek90) (lerp (-> arg0 seek90) (the-as float 409600.0) f28-0)) - (set! (-> arg0 seek180) (lerp (-> arg0 seek180) (the-as float 409600.0) f28-0)) - (set! (-> arg0 target-speed) (lerp (-> arg0 target-speed) f30-0 f28-0)) - (set! (-> arg0 transv-max) (lerp (-> arg0 transv-max) f30-0 f28-0)) - ) - ) - (none) - ) - :mode 'air - :flags (surface-flags no-turn-around no-rotate-toward-transv jump) - ) - ) + (new 'static + 'surface + :name 'jump + :turnv 131072.0 + :turnvv 32768.0 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 0.05 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mult-hook + (lambda :behavior target ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int)) + (when (= arg3 1) + (let ((f30-0 (-> self control unknown-float40)) + (f28-0 (-> self control unknown-float41))) + (set! (-> arg0 seek0) (lerp (-> arg0 seek0) (the-as float 409600.0) f28-0)) + (set! (-> arg0 seek90) (lerp (-> arg0 seek90) (the-as float 409600.0) f28-0)) + (set! (-> arg0 seek180) (lerp (-> arg0 seek180) (the-as float 409600.0) f28-0)) + (set! (-> arg0 target-speed) (lerp (-> arg0 target-speed) f30-0 f28-0)) + (set! (-> arg0 transv-max) (lerp (-> arg0 transv-max) f30-0 f28-0)))) + (none)) + :mode 'air + :flags (surface-flags no-turn-around no-rotate-toward-transv jump))) (defbehavior velocity-set-to-target! target ((arg0 vector) (arg1 float) (arg2 attack-info)) (let* ((v1-1 (-> self control trans)) - (gp-1 (vector-! (new 'stack-no-clear 'vector) arg0 v1-1)) - ) + (gp-1 (vector-! (new 'stack-no-clear 'vector) arg0 v1-1))) (set! (-> gp-1 y) 0.0) (set! (-> self control unknown-vector40 quad) (-> gp-1 quad)) (vector-xz-normalize! (-> self control unknown-vector40) (the-as float 1.0)) (set! (-> self control unknown-float50) 1.0) (set! (-> self control unknown-float40) arg1) (set! (-> self control unknown-float41) (- 1.0 (-> arg2 control))) - gp-1 - ) - ) + gp-1)) (defbehavior target-hit-effect target ((arg0 attack-info)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 1) - -1 - #f - #f - #f - (if (logtest? (-> arg0 mask) (attack-mask intersection)) - (-> arg0 intersection) - (-> self control root-prim prim-core) - ) - :to self - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 1) + -1 + #f + #f + #f + (if (logtest? (-> arg0 mask) (attack-mask intersection)) (-> arg0 intersection) (-> self control root-prim prim-core)) + :to + self) (let ((v1-9 (-> arg0 mode))) (cond - ((or (= v1-9 'endlessfall) (= v1-9 'instant-death)) - ) + ((or (= v1-9 'endlessfall) (= v1-9 'instant-death))) ((begin (target-timed-invulnerable (-> arg0 invinc-time) self) (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 255 (seconds 0.5)) - (let ((v1-13 (-> arg0 angle))) - (= v1-13 'up) - ) - ) - (sound-play "hit-up") - ) - (else - (sound-play "oof") - ) - ) - ) + (let ((v1-13 (-> arg0 angle))) (= v1-13 'up))) + (sound-play "hit-up")) + (else (sound-play "oof")))) (case (-> arg0 mode) (('burn 'burnup) ;; og:preserve-this (if (not (handle->process (-> self burn-proc))) - (set! (-> self burn-proc) - (ppointer->handle (process-spawn-function process process-drawable-burn-effect (seconds 4) :to self)) - ) - ) - ) - (('tar) - (sound-play "get-burned") - ) - ) + (set! (-> self burn-proc) + (ppointer->handle (process-spawn-function process process-drawable-burn-effect (seconds 4) :to self))))) + (('tar) (sound-play "get-burned"))) 0 - (none) - ) + (none)) (defbehavior target-hit-push target ((arg0 vector) (arg1 matrix) (arg2 float) (arg3 float) (arg4 attack-info)) (case (-> arg4 angle) (('jump 'up 'up-forward) (when (and (not (logtest? (-> self control root-prim prim-core action) (collide-action racer flut))) - (not (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health)))) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) - (go target-attack-air #f) - ) + (not (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))))) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) (go target-attack-air #f)) (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 26624.0) (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) (not (logtest? (-> self state-flags) (state-flags prevent-attack))) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) - ) - ) - ) - (go - target-flop + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08))))) + (go target-flop (the-as float 65502.96) (the-as float -163840.0) - (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - 0.0 - 68812.8 - ) - ) - ) - ) - ) - ) - ) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) 0.0 68812.8))))))) (when (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) (and (time-elapsed? (-> self state-time) (the-as time-frame (-> *TARGET-bank* stuck-time))) - (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - ) - #t - ) + (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))))) + #t) (logior! (-> self control status) (cshape-moving-flags onsurf)) - (return (the-as object 'stuck)) - ) + (return (the-as object 'stuck))) (let ((s1-0 (new-stack-vector0))) (set! (-> s1-0 z) arg2) (vector-matrix*! s1-0 s1-0 arg1) (vector+! s1-0 s1-0 arg0) (cond - ((< (vector-vector-distance arg0 s1-0) (fabs (-> arg4 dist))) - (velocity-set-to-target! s1-0 (fabs arg3) arg4) - #t - ) + ((< (vector-vector-distance arg0 s1-0) (fabs (-> arg4 dist))) (velocity-set-to-target! s1-0 (fabs arg3) arg4) #t) (else - (set! (-> self control unknown-float40) 0.0) - (set! (-> self control unknown-float41) (- 1.0 (-> arg4 control))) - #f - ) - ) - ) - ) + (set! (-> self control unknown-float40) 0.0) + (set! (-> self control unknown-float41) (- 1.0 (-> arg4 control))) + #f)))) (defbehavior target-hit-orient target ((arg0 attack-info) (arg1 vector)) (let ((s5-0 #f)) (if (and (!= (-> arg0 angle) 'front) (!= (-> arg0 angle) 'shove) (logtest? (-> arg0 mask) (attack-mask vector)) - (!= (-> arg0 shove-back) 0.0) - ) - (forward-up-nopitch->quaternion (-> self control dir-targ) arg1 (-> self control dynam gravity-normal)) - ) + (!= (-> arg0 shove-back) 0.0)) + (forward-up-nopitch->quaternion (-> self control dir-targ) arg1 (-> self control dynam gravity-normal))) (case (-> arg0 angle) - (('back 'air) - (set! s5-0 #t) - ) - (('up-forward) - (set! (-> self control unknown-surface00) *smack-up-mods*) - ) + (('back 'air) (set! s5-0 #t)) + (('up-forward) (set! (-> self control unknown-surface00) *smack-up-mods*)) (('front) (if (and (logtest? (-> arg0 mask) (attack-mask vector)) (!= (-> arg0 shove-back) 0.0)) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-negate! (new 'stack-no-clear 'vector) arg1) - (-> self control dynam gravity-normal) - ) - ) - (set! s5-0 #t) - ) - (('jump) - (set! s5-0 #t) - (set! (-> self control unknown-surface00) *forward-high-jump-mods*) - ) - ) - s5-0 - ) - ) + (forward-up-nopitch->quaternion (-> self control dir-targ) + (vector-negate! (new 'stack-no-clear 'vector) arg1) + (-> self control dynam gravity-normal))) + (set! s5-0 #t)) + (('jump) (set! s5-0 #t) (set! (-> self control unknown-surface00) *forward-high-jump-mods*))) + s5-0)) (defbehavior target-hit-setup-anim target ((arg0 attack-info)) (case (-> arg0 angle) (('back) (when (not (ja-group? eichar-hit-from-back-ja)) (ja-channel-push! 1 (seconds 0.075)) - (ja :group! eichar-hit-from-back-ja :num! min) - ) - ) + (ja :group! eichar-hit-from-back-ja :num! min))) (('up 'up-forward) (when (not (ja-group? eichar-hit-up-ja)) (ja-channel-push! 1 (seconds 0.075)) - (ja :group! eichar-hit-up-ja :num! min) - ) - ) + (ja :group! eichar-hit-up-ja :num! min))) (('air 'jump) (ja-channel-push! 1 (seconds 0.05)) (ja-no-eval :group! eichar-jump-ja :num! (seek!) :frame-num 0.0) (when (= (-> arg0 angle) 'air) (sound-play "smack-surface") (effect-control-method-10 (-> self skel effect) 'group-smack-surface (the-as float 0.0) 5) - (effect-control-method-10 (-> self skel effect) 'group-smack-surface-dizzy (the-as float 0.0) 8) - ) - ) + (effect-control-method-10 (-> self skel effect) 'group-smack-surface-dizzy (the-as float 0.0) 8))) (('shove) (ja-channel-push! 1 (seconds 0.05)) (ja-no-eval :group! eichar-smack-surface-ja :num! (seek!) :frame-num 0.0) - (sound-play "smack-surface") - ) + (sound-play "smack-surface")) (else - (when (not (ja-group? eichar-hit-from-front-ja)) - (ja-channel-push! 1 (seconds 0.075)) - (ja :group! eichar-hit-from-front-ja :num! min) - ) - ) - ) - (none) - ) + (when (not (ja-group? eichar-hit-from-front-ja)) + (ja-channel-push! 1 (seconds 0.075)) + (ja :group! eichar-hit-from-front-ja :num! min)))) + (none)) (defbehavior target-hit-move target ((arg0 attack-info) (arg1 symbol) (arg2 (function none :behavior target)) (arg3 float)) (local-vars (v1-40 symbol) (s2-1 object)) @@ -755,24 +496,17 @@ (let ((s3-0 (new-stack-vector0))) (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! s3-0 (-> self control transv) (vector-float*! s3-0 (-> self control dynam gravity-normal) f0-1)) - ) + (vector-! s3-0 (-> self control transv) (vector-float*! s3-0 (-> self control dynam gravity-normal) f0-1))) (let* ((f0-2 (vector-length s3-0)) (f1-1 f0-2) - (f2-1 (+ 2048.0 (sqrtf (* 491520.0 (-> arg0 shove-up))))) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) - (vector-float*! s3-0 s3-0 (/ f0-2 f1-1)) - ) - ) - ) + (f2-1 (+ 2048.0 (sqrtf (* 491520.0 (-> arg0 shove-up)))))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) + (vector-float*! s3-0 s3-0 (/ f0-2 f1-1))))) (let ((s3-1 (new 'stack-no-clear 'vector))) (set! (-> s3-1 quad) (-> self control trans quad)) (let ((s1-1 (matrix-rotate-y! (new 'stack-no-clear 'matrix) (+ 32768.0 (vector-y-angle (-> arg0 vector))))) - (f30-1 0.0) - ) + (f30-1 0.0)) (set-quaternion! (-> self control) (-> self control dir-targ)) #t (let ((f28-1 (* 1.05 (/ (* -60.0 arg3) (* (the float (+ (-> (ja-group) data 0 length) -1)) (ja-step 0)))))) @@ -781,626 +515,406 @@ (set! s2-1 (target-hit-push s3-1 s1-1 f30-1 (* (-> arg0 shove-back) f28-1) arg0)) (suspend) (ja :num! (seek!)) - (set! v1-40 (or (ja-done? 0) (and arg1 (logtest? (-> self control status) (cshape-moving-flags onsurf))))) - ) + (set! v1-40 (or (ja-done? 0) (and arg1 (logtest? (-> self control status) (cshape-moving-flags onsurf)))))) (while (and (or (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) s2-1) (!= s2-1 'stuck)) (arg2) (+! f30-1 (* (-> arg0 shove-back) f28-1 (seconds-per-frame))) (set! s2-1 (target-hit-push s3-1 s1-1 f30-1 (* (-> arg0 shove-back) f28-1) arg0)) - (if (not s2-1) - (logclear! (-> self state-flags) (state-flags being-attacked)) - ) - (suspend) - ) - ) - ) - ) + (if (not s2-1) (logclear! (-> self state-flags) (state-flags being-attacked))) + (suspend))))) 0 - (none) - ) + (none)) (defstate target-hit (target) :event target-standard-event-handler - :exit (behavior () - (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* ((f1-0 (vector-length gp-0)) - (f0-3 f1-0) - ) - (if (< 40960.0 f1-0) - (set! f1-0 40960.0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-0) - (vector-float*! gp-0 gp-0 (/ f1-0 f0-3)) - ) - ) - ) - (if (!= (-> self next-state name) 'target-death) - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - ) - (target-exit) - ) - :trans (behavior () - (when (= *cheat-mode* 'debug) - (when (and (not *pause-lock*) (cpad-hold? (-> self control unknown-cpad-info00 number) r2)) - (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float 1.0) (the-as handle #f)) - (go target-stance) - ) - ) - ) - :code (behavior ((arg0 symbol) (arg1 attack-info)) - (logclear! (-> self water flags) (water-flags wt16)) - (set-time! (-> self state-time)) - (let ((gp-0 (-> self attack-info))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (let ((v1-4 gp-0)) - (set! (-> v1-4 attacker) (the-as handle #f)) - (set! (-> v1-4 mode) 'generic) - (set! (-> v1-4 shove-back) 6144.0) - (set! (-> v1-4 shove-up) 4915.2) - (set! (-> v1-4 angle) #f) - (set! (-> v1-4 trans quad) (-> self control trans quad)) - (set! (-> v1-4 control) 0.0) - (set! (-> v1-4 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout)) - ) - (case arg0 - (('shove) - (let ((v1-7 gp-0)) - (set! (-> v1-7 shove-back) (-> *TARGET-bank* smack-surface-dist)) - (set! (-> v1-7 shove-up) (-> *TARGET-bank* smack-surface-height)) - (set! (-> v1-7 angle) 'shove) - ) - ) - ) - (combine! gp-0 arg1) - (when (not (logtest? (-> gp-0 mask) (attack-mask vector))) - (vector-z-quaternion! (-> gp-0 vector) (-> self control unknown-quaternion00)) - (vector-xz-normalize! (-> gp-0 vector) (- (fabs (-> gp-0 shove-back)))) - (set! (-> gp-0 vector y) (-> gp-0 shove-up)) - ) - (set! (-> s5-0 quad) (-> gp-0 vector quad)) - (let ((f0-10 (vector-dot - (vector-normalize-copy! (new 'stack-no-clear 'vector) s5-0 (the-as float 1.0)) - (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)) - ) - ) - ) - (if (not (-> self attack-info angle)) - (set! (-> self attack-info angle) (if (>= 0.0 f0-10) - 'front - 'back - ) - ) - ) - ) - (cond - ((= arg0 'attack) - (logior! (-> self state-flags) (state-flags being-attacked)) - (set-time! (-> self game hit-time)) - (case (-> gp-0 mode) - (('endlessfall) - (cond - ((= (-> self game mode) 'debug) - (let ((s4-1 (new-stack-vector0))) - (set! (-> s4-1 quad) (-> self control last-known-safe-ground quad)) - (ja-channel-set! 0) - (let ((s3-1 (current-time))) - (until (time-elapsed? s3-1 (seconds 1)) - (suspend) - ) - ) - (move-to-point! (-> self control) s4-1) - ) - (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) - (send-event *camera* 'teleport) - (go target-stance) - ) - (else - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (the-as float -1000.0) - (the-as handle #f) - ) - (go target-death (-> gp-0 mode)) - ) - ) - ) - (('drown-death 'sharkey 'lava 'dark-eco-pool 'ogreboss-super-boulder 'melt 'instant-death) - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (the-as float -1000.0) - (the-as handle #f) - ) - (if (= (-> self game mode) 'play) - (go target-death (-> gp-0 mode)) - ) - ) - (('death) - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (the-as float -1000.0) - (the-as handle #f) - ) - ) - (('plant-boss) - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) - (go target-death (-> gp-0 mode)) - ) - ) - (else - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - ) - ) - (target-hit-effect gp-0) - ) - (else - (case (-> gp-0 mode) - (('burn 'burnup) - (sound-play "get-burned") - ) - ) - ) - ) - (set! (-> self control unknown-surface00) *smack-mods*) - (target-hit-setup-anim gp-0) - (target-hit-move gp-0 (target-hit-orient gp-0 s5-0) target-falling-anim-trans (the-as float 1.0)) - ) - (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) - (go target-death (-> gp-0 mode)) - ) - ) - (go target-hit-ground #f) - ) - :post target-post - ) + :exit + (behavior () + (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* ((f1-0 (vector-length gp-0)) + (f0-3 f1-0)) + (if (< 40960.0 f1-0) (set! f1-0 40960.0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-0) + (vector-float*! gp-0 gp-0 (/ f1-0 f0-3))))) + (if (!= (-> self next-state name) 'target-death) (logclear! (-> self state-flags) (state-flags being-attacked dying))) + (target-exit)) + :trans + (behavior () + (when (= *cheat-mode* 'debug) + (when (and (not *pause-lock*) (cpad-hold? (-> self control unknown-cpad-info00 number) r2)) + (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float 1.0) (the-as handle #f)) + (go target-stance)))) + :code + (behavior ((arg0 symbol) (arg1 attack-info)) + (logclear! (-> self water flags) (water-flags wt16)) + (set-time! (-> self state-time)) + (let ((gp-0 (-> self attack-info))) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (let ((v1-4 gp-0)) + (set! (-> v1-4 attacker) (the-as handle #f)) + (set! (-> v1-4 mode) 'generic) + (set! (-> v1-4 shove-back) 6144.0) + (set! (-> v1-4 shove-up) 4915.2) + (set! (-> v1-4 angle) #f) + (set! (-> v1-4 trans quad) (-> self control trans quad)) + (set! (-> v1-4 control) 0.0) + (set! (-> v1-4 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout))) + (case arg0 + (('shove) + (let ((v1-7 gp-0)) + (set! (-> v1-7 shove-back) (-> *TARGET-bank* smack-surface-dist)) + (set! (-> v1-7 shove-up) (-> *TARGET-bank* smack-surface-height)) + (set! (-> v1-7 angle) 'shove)))) + (combine! gp-0 arg1) + (when (not (logtest? (-> gp-0 mask) (attack-mask vector))) + (vector-z-quaternion! (-> gp-0 vector) (-> self control unknown-quaternion00)) + (vector-xz-normalize! (-> gp-0 vector) (- (fabs (-> gp-0 shove-back)))) + (set! (-> gp-0 vector y) (-> gp-0 shove-up))) + (set! (-> s5-0 quad) (-> gp-0 vector quad)) + (let ((f0-10 (vector-dot (vector-normalize-copy! (new 'stack-no-clear 'vector) s5-0 (the-as float 1.0)) + (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))))) + (if (not (-> self attack-info angle)) (set! (-> self attack-info angle) (if (>= 0.0 f0-10) 'front 'back)))) + (cond + ((= arg0 'attack) + (logior! (-> self state-flags) (state-flags being-attacked)) + (set-time! (-> self game hit-time)) + (case (-> gp-0 mode) + (('endlessfall) + (cond + ((= (-> self game mode) 'debug) + (let ((s4-1 (new-stack-vector0))) + (set! (-> s4-1 quad) (-> self control last-known-safe-ground quad)) + (ja-channel-set! 0) + (let ((s3-1 (current-time))) (until (time-elapsed? s3-1 (seconds 1)) (suspend))) + (move-to-point! (-> self control) s4-1)) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) + (send-event *camera* 'teleport) + (go target-stance)) + (else + (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f)) + (go target-death (-> gp-0 mode))))) + (('drown-death 'sharkey 'lava 'dark-eco-pool 'ogreboss-super-boulder 'melt 'instant-death) + (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f)) + (if (= (-> self game mode) 'play) (go target-death (-> gp-0 mode)))) + (('death) (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f))) + (('plant-boss) + (pickup-collectable! (-> self fact) (pickup-type eco-green) (- (-> *FACT-bank* health-single-inc)) (the-as handle #f)) + (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) (go target-death (-> gp-0 mode)))) + (else + (pickup-collectable! (-> self fact) (pickup-type eco-green) (- (-> *FACT-bank* health-single-inc)) (the-as handle #f)))) + (target-hit-effect gp-0)) + (else + (case (-> gp-0 mode) + (('burn 'burnup) (sound-play "get-burned"))))) + (set! (-> self control unknown-surface00) *smack-mods*) + (target-hit-setup-anim gp-0) + (target-hit-move gp-0 (target-hit-orient gp-0 s5-0) target-falling-anim-trans (the-as float 1.0))) + (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) (go target-death (-> gp-0 mode)))) + (go target-hit-ground #f)) + :post target-post) (define *death-spool-array* - (new 'static 'boxed-array :type spool-anim - (new 'static 'spool-anim :name "death-0181" :index 3 :parts 1 :command-list '()) - (new 'static 'spool-anim :name "death-0182" :index 4 :parts 1 :command-list '()) - (new 'static 'spool-anim :name "death-0184" :index 5 :parts 1 :command-list '()) - (new 'static 'spool-anim :name "death-0186" :index 6 :parts 1 :command-list '()) - (new 'static 'spool-anim :name "death-0187" :index 7 :parts 1 :command-list '()) - (new 'static 'spool-anim :name "death-0191" :index 8 :parts 1 :command-list '()) - (new 'static 'spool-anim :name "death-0193" :index 9 :parts 2 :command-list '()) - (new 'static 'spool-anim :name "death-0195" :index 10 :parts 1 :command-list '()) - (new 'static 'spool-anim :name "death-0197" :index 11 :parts 2 :command-list '()) - (new 'static 'spool-anim :name "death-0199" :index 12 :parts 2 :command-list '()) - (new 'static 'spool-anim :name "death-0202" :index 13 :parts 1 :command-list '()) - ) - ) + (new 'static + 'boxed-array + :type + spool-anim + (new 'static 'spool-anim :name "death-0181" :index 3 :parts 1 :command-list '()) + (new 'static 'spool-anim :name "death-0182" :index 4 :parts 1 :command-list '()) + (new 'static 'spool-anim :name "death-0184" :index 5 :parts 1 :command-list '()) + (new 'static 'spool-anim :name "death-0186" :index 6 :parts 1 :command-list '()) + (new 'static 'spool-anim :name "death-0187" :index 7 :parts 1 :command-list '()) + (new 'static 'spool-anim :name "death-0191" :index 8 :parts 1 :command-list '()) + (new 'static 'spool-anim :name "death-0193" :index 9 :parts 2 :command-list '()) + (new 'static 'spool-anim :name "death-0195" :index 10 :parts 1 :command-list '()) + (new 'static 'spool-anim :name "death-0197" :index 11 :parts 2 :command-list '()) + (new 'static 'spool-anim :name "death-0199" :index 12 :parts 2 :command-list '()) + (new 'static 'spool-anim :name "death-0202" :index 13 :parts 1 :command-list '()))) -(if (!= *kernel-boot-message* 'play) - (set! (-> *death-spool-array* length) 3) - ) +(if (!= *kernel-boot-message* 'play) (set! (-> *death-spool-array* length) 3)) (defun death-movie-remap ((arg0 int) (arg1 int)) (let ((v1-0 (/ arg0 arg1))) - (mod - (if (not (logtest? v1-0 1)) - (logxor v1-0 arg0) - (logand #xfffffff (- (logxor v1-0 arg0))) - ) - arg1 - ) - ) - ) + (mod (if (not (logtest? v1-0 1)) (logxor v1-0 arg0) (logand #xfffffff (- (logxor v1-0 arg0)))) arg1))) (defbehavior target-death-anim target ((arg0 spool-anim)) (set! (-> self control unknown-surface00) *neutral-mods*) (ja-channel-push! 1 (seconds 0.1)) (ja-no-eval :group! eichar-deatha-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (if arg0 - (spool-push *art-control* (-> arg0 name) 0 self (the-as float -99.0)) - ) + (if arg0 (spool-push *art-control* (-> arg0 name) 0 self (the-as float -99.0))) (send-event *camera* 'joystick 0.0 -1.0) (compute-alignment! (-> self align)) (let ((s5-0 (new 'stack-no-clear 'vector))) (when (not (logtest? (-> self align flags) (align-flags disabled))) (vector-matrix*! s5-0 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) - (vector-float*! (-> self control transv) s5-0 (-> *display* frames-per-second)) - ) - ) + (vector-float*! (-> self control transv) s5-0 (-> *display* frames-per-second)))) (suspend) - (ja :num! (seek!)) - ) + (ja :num! (seek!))) 0 - (none) - ) + (none)) (defstate target-death (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('end-mode) - (let ((v0-0 (the-as object #t))) - (set! (-> self control unknown-uint20) (the-as uint v0-0)) - v0-0 - ) - ) - (('change-mode) - (case (-> block param 0) - (('grab) - #t - ) - ) - ) - (('notify) - (when (type-type? (-> proc type) pov-camera) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('end-mode) (let ((v0-0 (the-as object #t))) (set! (-> self control unknown-uint20) (the-as uint v0-0)) v0-0)) + (('change-mode) (case (-> block param 0) - (('die 'abort-request) - (set! (-> self control unknown-uint20) (the-as uint #t)) - (set-blackout-frames (seconds 0.2)) - ) - ) - ) - ) - (('get-pickup) - #f - ) - (('touched) - #f - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - (target-exit) - (remove-setting! 'process-mask) - (remove-setting! 'allow-progress) - (restore-collide-with-as (-> self control)) - (set! (-> self control pat-ignore-mask) (new 'static 'pat-surface :noentity #x1)) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - ) - :trans (-> target-hit trans) - :code (behavior ((arg0 symbol)) - (runs-on-jak-death 'dying) - (set! (-> self control unknown-uint20) (the-as uint #f)) - (set! (-> self control unknown-int21) - (the-as int (send-event (handle->process (-> self attack-info attacker)) 'target 'die arg0)) - ) - (set! (-> self neck flex-blend) 0.0) - (target-timed-invulnerable-off self) - (set-setting! 'process-mask 'set 0.0 (process-mask enemy platform projectile death)) - (apply-settings *setting-control*) - (set! (-> self control transv quad) (the-as uint128 0)) - (logior! (-> self state-flags) (state-flags dying)) - (case arg0 - (('none 'instant-death) - ) - (('ogreboss-super-boulder) - ;; og:preserve-this PAL patch here - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 32) - -1 - #f - #f - #f - (-> self control trans) - :to *entity-pool* - ) - (set! (-> self post-hook) target-no-ja-move-post) - (-> self attack-info attacker) - (ja-channel-set! 0) - (ja-post) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 1)) - (suspend) - ) - ) - ) - (('drown 'drown-death) - (sound-play "death-drown") - (logclear! (-> self water flags) (water-flags wt04)) - (clear-collide-with-as (-> self control)) - (set! (-> self control unknown-surface00) *dive-mods*) - (set! (-> self control dynam gravity-max) 6144.0) - (set! (-> self control dynam gravity-length) 6144.0) - (ja-channel-push! 1 (seconds 0.1)) - (let ((f30-0 0.7) - (gp-3 (-> self skel root-channel 0)) - ) - (set! (-> gp-3 frame-group) (the-as art-joint-anim eichar-swim-walk-to-down-ja)) - (set! (-> gp-3 param 0) (ja-aframe (the-as float 73.0) 0)) - (let ((f30-1 (seek f30-0 (the-as float 0.05) (* 1.5 (seconds-per-frame))))) - (set! (-> gp-3 param 1) f30-1) - (set! (-> gp-3 frame-num) 0.0) - (joint-control-channel-group! gp-3 (the-as art-joint-anim eichar-swim-walk-to-down-ja) num-func-seek!) - (until (ja-done? 0) - (suspend) - (let ((gp-4 (-> self skel root-channel 0))) - (set! (-> gp-4 param 0) (ja-aframe (the-as float 73.0) 0)) - (set! f30-1 (seek f30-1 (the-as float 0.05) (* 1.5 (seconds-per-frame)))) - (set! (-> gp-4 param 1) f30-1) - (joint-control-channel-group-eval! gp-4 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ) - (('lava 'dark-eco-pool 'melt) - (let ((s5-1 (handle->process (-> self attack-info attacker)))) - (when (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) water-vol)) - s5-1 - ) - (logior! (-> self state-flags) (state-flags falling-into-pool-of-bad)) - (set! (-> self alt-cam-pos y) (+ 4096.0 (-> self water height))) - ) - ) - (cond - ((= arg0 'dark-eco-pool) - (sound-play "death-darkeco") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 31) - -1 - #f - #f - #f - (-> self control trans) - :to *entity-pool* - ) - ) - ((or (= arg0 'lava) (= arg0 'melt)) - (sound-play "death-melt") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 32) - -1 - #f - #f - #f - (-> self control trans) - :to *entity-pool* - ) - ) - ) - (clear-collide-with-as (-> self control)) - (set! (-> self post-hook) target-no-ja-move-post) - (ja-channel-set! 0) - (ja-post) - (let ((gp-9 (current-time))) - (until (time-elapsed? gp-9 (seconds 2)) - (suspend) - ) - ) - ) - (('endlessfall) - (sound-play "death-fall") - (camera-change-to (the-as string cam-endlessfall) 30 #f) - (set! (-> self control pat-ignore-mask unknown-bit) 1) - (logclear! (-> self water flags) (water-flags wt04)) - (let ((f30-2 (fmin -4096.0 (- (-> self control ground-impact-vel))))) - (set! (-> self control unknown-uint20) (the-as uint f30-2)) - (let ((gp-11 (new-stack-vector0))) - (let ((f0-14 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-11 (-> self control transv) (vector-float*! gp-11 (-> self control dynam gravity-normal) f0-14)) - ) - (let* ((f0-15 (vector-length gp-11)) - (f1-6 f0-15) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-2) - (vector-float*! gp-11 gp-11 (/ f0-15 f1-6)) - ) - ) - ) - ) - (set! (-> self trans-hook) - (lambda :behavior target - () - (vector-seek! (-> self draw color-mult) *zero-vector* (seconds-per-frame)) - (let ((gp-0 (new-stack-vector0)) - (f30-0 (the-as number (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) (the-as float f30-0)) - ) - (let* ((f0-4 (vector-length gp-0)) - (f1-0 f0-4) - ) - (if (< (the-as float (-> self control unknown-uint20)) (the-as float f30-0)) - (set! f30-0 (-> self control unknown-uint20)) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) (the-as float f30-0)) - (vector-float*! gp-0 gp-0 (/ f0-4 f1-0)) - ) - ) - ) - ((-> target-hit trans)) - (none) - ) - ) - (target-falling-anim (seconds 0.1) (seconds 0.33)) - (ja-channel-push! 1 (seconds 0.3)) - (ja-no-eval :group! eichar-launch-jump-loop-ja :num! (loop! 0.5) :frame-num 0.0) - (let ((gp-12 (current-time))) - (until (time-elapsed? gp-12 (seconds 0.8)) - (ja :group! eichar-launch-jump-loop-ja :num! (loop! 0.5)) - (suspend) - ) - ) - (camera-change-to (the-as string 'base) 0 #f) - ) - (('target-hit-ground-hard) - (set! (-> self control unknown-surface00) *neutral-mods*) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! eichar-death-painful-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (('sharkey) - (send-event self 'dry) - (set! (-> self post-hook) target-no-ja-move-post) - (let ((gp-13 (-> self attack-info attacker))) + (('grab) #t))) + (('notify) + (when (type-type? (-> proc type) pov-camera) + (case (-> block param 0) + (('die 'abort-request) (set! (-> self control unknown-uint20) (the-as uint #t)) (set-blackout-frames (seconds 0.2)))))) + (('get-pickup) #f) + (('touched) #f) + (else (target-generic-event-handler proc argc message block)))) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags being-attacked dying)) + (target-exit) + (remove-setting! 'process-mask) + (remove-setting! 'allow-progress) + (restore-collide-with-as (-> self control)) + (set! (-> self control pat-ignore-mask) (new 'static 'pat-surface :noentity #x1)) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length))) + :trans + (-> target-hit + trans) + :code + (behavior ((arg0 symbol)) + (runs-on-jak-death 'dying) + (set! (-> self control unknown-uint20) (the-as uint #f)) + (set! (-> self control unknown-int21) + (the-as int (send-event (handle->process (-> self attack-info attacker)) 'target 'die arg0))) + (set! (-> self neck flex-blend) 0.0) + (target-timed-invulnerable-off self) + (set-setting! 'process-mask 'set 0.0 (process-mask enemy platform projectile death)) + (apply-settings *setting-control*) + (set! (-> self control transv quad) (the-as uint128 0)) + (logior! (-> self state-flags) (state-flags dying)) + (case arg0 + (('none 'instant-death)) + (('ogreboss-super-boulder) + ;; og:preserve-this PAL patch here + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 32) + -1 + #f + #f + #f + (-> self control trans) + :to + *entity-pool*) + (set! (-> self post-hook) target-no-ja-move-post) + (-> self attack-info attacker) (ja-channel-set! 0) (ja-post) - (while (and (handle->process gp-13) (not (-> self control unknown-spoolanim00))) - (send-event *camera* 'joystick 0.0 0.0) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 1)) (suspend)))) + (('drown 'drown-death) + (sound-play "death-drown") + (logclear! (-> self water flags) (water-flags wt04)) + (clear-collide-with-as (-> self control)) + (set! (-> self control unknown-surface00) *dive-mods*) + (set! (-> self control dynam gravity-max) 6144.0) + (set! (-> self control dynam gravity-length) 6144.0) + (ja-channel-push! 1 (seconds 0.1)) + (let ((f30-0 0.7) + (gp-3 (-> self skel root-channel 0))) + (set! (-> gp-3 frame-group) (the-as art-joint-anim eichar-swim-walk-to-down-ja)) + (set! (-> gp-3 param 0) (ja-aframe (the-as float 73.0) 0)) + (let ((f30-1 (seek f30-0 (the-as float 0.05) (* 1.5 (seconds-per-frame))))) + (set! (-> gp-3 param 1) f30-1) + (set! (-> gp-3 frame-num) 0.0) + (joint-control-channel-group! gp-3 (the-as art-joint-anim eichar-swim-walk-to-down-ja) num-func-seek!) + (until (ja-done? 0) + (suspend) + (let ((gp-4 (-> self skel root-channel 0))) + (set! (-> gp-4 param 0) (ja-aframe (the-as float 73.0) 0)) + (set! f30-1 (seek f30-1 (the-as float 0.05) (* 1.5 (seconds-per-frame)))) + (set! (-> gp-4 param 1) f30-1) + (joint-control-channel-group-eval! gp-4 (the-as art-joint-anim #f) num-func-seek!)))))) + (('lava 'dark-eco-pool 'melt) + (let ((s5-1 (handle->process (-> self attack-info attacker)))) + (when (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) water-vol)) s5-1) + (logior! (-> self state-flags) (state-flags falling-into-pool-of-bad)) + (set! (-> self alt-cam-pos y) (+ 4096.0 (-> self water height))))) + (cond + ((= arg0 'dark-eco-pool) + (sound-play "death-darkeco") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 31) + -1 + #f + #f + #f + (-> self control trans) + :to + *entity-pool*)) + ((or (= arg0 'lava) (= arg0 'melt)) + (sound-play "death-melt") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 32) + -1 + #f + #f + #f + (-> self control trans) + :to + *entity-pool*))) + (clear-collide-with-as (-> self control)) + (set! (-> self post-hook) target-no-ja-move-post) + (ja-channel-set! 0) + (ja-post) + (let ((gp-9 (current-time))) (until (time-elapsed? gp-9 (seconds 2)) (suspend)))) + (('endlessfall) + (sound-play "death-fall") + (camera-change-to (the-as string cam-endlessfall) 30 #f) + (set! (-> self control pat-ignore-mask unknown-bit) 1) + (logclear! (-> self water flags) (water-flags wt04)) + (let ((f30-2 (fmin -4096.0 (- (-> self control ground-impact-vel))))) + (set! (-> self control unknown-uint20) (the-as uint f30-2)) + (let ((gp-11 (new-stack-vector0))) + (let ((f0-14 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-11 (-> self control transv) (vector-float*! gp-11 (-> self control dynam gravity-normal) f0-14))) + (let* ((f0-15 (vector-length gp-11)) + (f1-6 f0-15)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-2) + (vector-float*! gp-11 gp-11 (/ f0-15 f1-6)))))) + (set! (-> self trans-hook) + (lambda :behavior target () + (vector-seek! (-> self draw color-mult) *zero-vector* (seconds-per-frame)) + (let ((gp-0 (new-stack-vector0)) + (f30-0 (the-as number (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) (the-as float f30-0))) + (let* ((f0-4 (vector-length gp-0)) + (f1-0 f0-4)) + (if (< (the-as float (-> self control unknown-uint20)) (the-as float f30-0)) (set! f30-0 (-> self control unknown-uint20))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) (the-as float f30-0)) + (vector-float*! gp-0 gp-0 (/ f0-4 f1-0))))) + ((-> target-hit trans)) + (none))) + (target-falling-anim (seconds 0.1) (seconds 0.33)) + (ja-channel-push! 1 (seconds 0.3)) + (ja-no-eval :group! eichar-launch-jump-loop-ja :num! (loop! 0.5) :frame-num 0.0) + (let ((gp-12 (current-time))) + (until (time-elapsed? gp-12 (seconds 0.8)) + (ja :group! eichar-launch-jump-loop-ja :num! (loop! 0.5)) + (suspend))) + (camera-change-to (the-as string 'base) 0 #f)) + (('target-hit-ground-hard) + (set! (-> self control unknown-surface00) *neutral-mods*) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! eichar-death-painful-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - ) - (('plant-boss) - (set! (-> self trans-hook) #f) - (let ((gp-14 (-> self attack-info attacker)) - (a1-44 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-44 from) self) - (set! (-> a1-44 num-params) 0) - (set! (-> a1-44 message) 'joint) - (let ((s5-5 (the-as int (send-event-function (handle->process gp-14) a1-44)))) - (send-event (ppointer->process (-> self sidekick)) 'matrix 'copy-parent) - (set! (-> self post-hook) target-no-ja-move-post) - (let ((a0-98 (-> self node-list data))) - (set! (-> a0-98 0 param0) nothing) - (set! (-> a0-98 0 param1) #f) - (set! (-> a0-98 0 param2) #f) - ) - (while (and (handle->process gp-14) (not (-> self control unknown-spoolanim00)) (-> self control unknown-int21)) - (let* ((v1-205 (-> (the-as process-drawable (handle->process gp-14)) node-list data s5-5 bone transform)) - (a3-9 (-> self node-list data 0 bone transform)) - (a0-106 (-> v1-205 vector 0 quad)) - (a1-47 (-> v1-205 vector 1 quad)) - (a2-26 (-> v1-205 vector 2 quad)) - (v1-206 (-> v1-205 vector 3 quad)) - ) - (set! (-> a3-9 vector 0 quad) a0-106) - (set! (-> a3-9 vector 1 quad) a1-47) - (set! (-> a3-9 vector 2 quad) a2-26) - (set! (-> a3-9 vector 3 quad) v1-206) - ) - (clone-anim-once gp-14 33 #f "") + (ja :num! (seek!)))) + (('sharkey) + (send-event self 'dry) + (set! (-> self post-hook) target-no-ja-move-post) + (let ((gp-13 (-> self attack-info attacker))) + (ja-channel-set! 0) + (ja-post) + (while (and (handle->process gp-13) (not (-> self control unknown-spoolanim00))) + (send-event *camera* 'joystick 0.0 0.0) + (suspend)))) + (('plant-boss) + (set! (-> self trans-hook) #f) + (let ((gp-14 (-> self attack-info attacker)) + (a1-44 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-44 from) self) + (set! (-> a1-44 num-params) 0) + (set! (-> a1-44 message) 'joint) + (let ((s5-5 (the-as int (send-event-function (handle->process gp-14) a1-44)))) + (send-event (ppointer->process (-> self sidekick)) 'matrix 'copy-parent) + (set! (-> self post-hook) target-no-ja-move-post) + (let ((a0-98 (-> self node-list data))) + (set! (-> a0-98 0 param0) nothing) + (set! (-> a0-98 0 param1) #f) + (set! (-> a0-98 0 param2) #f)) + (while (and (handle->process gp-14) (not (-> self control unknown-spoolanim00)) (-> self control unknown-int21)) + (let* ((v1-205 (-> (the-as process-drawable (handle->process gp-14)) node-list data s5-5 bone transform)) + (a3-9 (-> self node-list data 0 bone transform)) + (a0-106 (-> v1-205 vector 0 quad)) + (a1-47 (-> v1-205 vector 1 quad)) + (a2-26 (-> v1-205 vector 2 quad)) + (v1-206 (-> v1-205 vector 3 quad))) + (set! (-> a3-9 vector 0 quad) a0-106) + (set! (-> a3-9 vector 1 quad) a1-47) + (set! (-> a3-9 vector 2 quad) a2-26) + (set! (-> a3-9 vector 3 quad) v1-206)) + (clone-anim-once gp-14 33 #f "") + (suspend) + 0)))) + (('burn 'burnup) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 708) + -1 + #f + #f + #f + (-> self control trans) + :to + *entity-pool*) + (target-death-anim (the-as spool-anim #f))) + (else + (case arg0 + (('tar) (sound-play "death-drown"))) + (+! (-> *game-info* death-movie-tick) 1) + (if (= (death-movie-remap (+ (-> *game-info* death-movie-tick) -1) (-> *death-spool-array* length)) + (death-movie-remap (-> *game-info* death-movie-tick) (-> *death-spool-array* length))) + (+! (-> *game-info* death-movie-tick) 1)) + (let ((gp-18 (-> *death-spool-array* (death-movie-remap (-> *game-info* death-movie-tick) (-> *death-spool-array* length))))) + (set-setting! 'allow-progress #f 0.0 0) + (target-death-anim gp-18) + (when (and (< (rand-vu-int-count (-> *game-info* death-movie-tick)) (* (-> *death-spool-array* length) 2)) + (not (logtest? (-> self water flags) (water-flags wt09))) + (!= (-> self control ground-pat material) 9) + (!= (-> self control ground-pat material) 10)) + (iterate-process-tree *entity-pool* + (lambda :behavior target ((arg0 process)) + (if (and (logtest? (process-mask enemy) (-> arg0 mask)) + (type-type? (-> arg0 type) process-drawable) + (nonzero? (-> (the-as process-drawable arg0) root)) + (< (vector-vector-distance (-> (the-as process-drawable arg0) root trans) (-> *target* control trans)) 61440.0)) + (process-entity-status! arg0 (entity-perm-status bit-9) #t))) + *null-kernel-context*) + (set! (-> *ACTOR-bank* birth-max) 1000) + (set! (-> self trans-hook) #f) + (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) + (send-event (ppointer->process (-> self sidekick)) 'shadow #f) + (send-event self 'blend-shape #t) + (let ((s5-8 (ppointer->handle (process-spawn pov-camera (-> self control trans) *deathcam-sg* gp-18 4 self '() :to *target-pool*)))) + (send-event (handle->process s5-8) 'music-movie-volume 0.0) + (send-event (handle->process s5-8) 'sfx-movie-volume 50.0) + (set! (-> self post-hook) target-no-ja-move-post) + (while (not (-> self control unknown-spoolanim00)) + (spool-push *art-control* (-> gp-18 name) 0 self (the-as float -99.0)) + (clone-anim-once s5-8 33 #f "") + (suspend)) + (let ((a0-155 (handle->process s5-8))) (if a0-155 (deactivate a0-155)))) + (send-event (ppointer->process (-> self sidekick)) 'shadow #t) (suspend) - 0 - ) - ) - ) - ) - (('burn 'burnup) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 708) - -1 - #f - #f - #f - (-> self control trans) - :to *entity-pool* - ) - (target-death-anim (the-as spool-anim #f)) - ) - (else - (case arg0 - (('tar) - (sound-play "death-drown") - ) - ) - (+! (-> *game-info* death-movie-tick) 1) - (if (= (death-movie-remap (+ (-> *game-info* death-movie-tick) -1) (-> *death-spool-array* length)) - (death-movie-remap (-> *game-info* death-movie-tick) (-> *death-spool-array* length)) - ) - (+! (-> *game-info* death-movie-tick) 1) - ) - (let ((gp-18 - (-> *death-spool-array* (death-movie-remap (-> *game-info* death-movie-tick) (-> *death-spool-array* length))) - ) - ) - (set-setting! 'allow-progress #f 0.0 0) - (target-death-anim gp-18) - (when (and (< (rand-vu-int-count (-> *game-info* death-movie-tick)) (* (-> *death-spool-array* length) 2)) - (not (logtest? (-> self water flags) (water-flags wt09))) - (!= (-> self control ground-pat material) 9) - (!= (-> self control ground-pat material) 10) - ) - (iterate-process-tree - *entity-pool* - (lambda :behavior target - ((arg0 process)) - (if (and (logtest? (process-mask enemy) (-> arg0 mask)) - (type-type? (-> arg0 type) process-drawable) - (nonzero? (-> (the-as process-drawable arg0) root)) - (< (vector-vector-distance (-> (the-as process-drawable arg0) root trans) (-> *target* control trans)) - 61440.0 - ) - ) - (process-entity-status! arg0 (entity-perm-status bit-9) #t) - ) - ) - *null-kernel-context* - ) - (set! (-> *ACTOR-bank* birth-max) 1000) - (set! (-> self trans-hook) #f) - (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) - (send-event (ppointer->process (-> self sidekick)) 'shadow #f) - (send-event self 'blend-shape #t) - (let ((s5-8 (ppointer->handle - (process-spawn pov-camera (-> self control trans) *deathcam-sg* gp-18 4 self '() :to *target-pool*) - ) - ) - ) - (send-event (handle->process s5-8) 'music-movie-volume 0.0) - (send-event (handle->process s5-8) 'sfx-movie-volume 50.0) - (set! (-> self post-hook) target-no-ja-move-post) - (while (not (-> self control unknown-spoolanim00)) - (spool-push *art-control* (-> gp-18 name) 0 self (the-as float -99.0)) - (clone-anim-once s5-8 33 #f "") - (suspend) - ) - (let ((a0-155 (handle->process s5-8))) - (if a0-155 - (deactivate a0-155) - ) - ) - ) - (send-event (ppointer->process (-> self sidekick)) 'shadow #t) - (suspend) - 0 - ) - ) - ) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) - (set-time! (-> self state-time)) - (anim-loop) - ) - :post target-no-stick-post - ) + 0)))) + (set! (-> self control transv quad) (the-as uint128 0)) + (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) + (set-time! (-> self state-time)) + (anim-loop)) + :post target-no-stick-post) diff --git a/goal_src/jak1/engine/target/target-h.gc b/goal_src/jak1/engine/target/target-h.gc index 0391e0f888..477c290aee 100644 --- a/goal_src/jak1/engine/target/target-h.gc +++ b/goal_src/jak1/engine/target/target-h.gc @@ -1,193 +1,188 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/game-h.gc") - -;; name: target-h.gc -;; name in dgo: target-h -;; dgos: GAME, ENGINE - (declare-type snowball-info basic) + (declare-type tube-info basic) + (declare-type racer-info basic) + (declare-type flut-info basic) + (declare-type sidekick process-drawable) ;; DECOMP BEGINS (deftype target (process-drawable) - ((fact fact-info-target :override) - (self-override target :overlay-at self) - (control control-info :overlay-at root) - (skel2 basic) - (racer racer-info) - (game game-info) - (neck joint-mod) - (state-hook-time time-frame) - (state-hook (function none :behavior target)) - (cam-user-mode symbol) - (sidekick (pointer sidekick)) - (manipy (pointer manipy)) - (attack-info attack-info :inline) - (attack-info-rec attack-info :inline) - (anim-seed uint64) - (alt-cam-pos vector :inline) - (snowball snowball-info) - (tube tube-info) - (flut flut-info) - (current-level level) - (saved-pos transformq :inline) - (saved-owner uint64) - (alt-neck-pos vector :inline) - (fp-hud handle) - (no-load-wait time-frame) - (no-look-around-wait time-frame) - (burn-proc handle) - ) + ((fact fact-info-target :override) + (self-override target :overlay-at self) + (control control-info :overlay-at root) + (skel2 basic) + (racer racer-info) + (game game-info) + (neck joint-mod) + (state-hook-time time-frame) + (state-hook (function none :behavior target)) + (cam-user-mode symbol) + (sidekick (pointer sidekick)) + (manipy (pointer manipy)) + (attack-info attack-info :inline) + (attack-info-rec attack-info :inline) + (anim-seed uint64) + (alt-cam-pos vector :inline) + (snowball snowball-info) + (tube tube-info) + (flut flut-info) + (current-level level) + (saved-pos transformq :inline) + (saved-owner uint64) + (alt-neck-pos vector :inline) + (fp-hud handle) + (no-load-wait time-frame) + (no-look-around-wait time-frame) + (burn-proc handle)) (:methods - (find-edge-grabs! (_type_ collide-cache) object) - ) + (find-edge-grabs! (_type_ collide-cache) object)) (:states - target-attack - (target-attack-air symbol) - (target-attack-uppercut float float) - (target-attack-uppercut-jump float float) - target-billy-game - (target-clone-anim handle) - (target-continue continue-point) - (target-death symbol) - target-demo - (target-double-jump float float) - (target-duck-high-jump float float symbol) - (target-duck-high-jump-jump float float symbol) - target-duck-stance - target-duck-walk - (target-eco-powerup object float) - target-edge-grab - (target-edge-grab-jump float float) - target-edge-grab-off - (target-falling symbol) - (target-final-door basic handle) - (target-fishing handle) - (target-flop float float float) - (target-flop-hit-ground symbol) - (target-flut-air-attack float) - target-flut-air-attack-hit-ground - (target-flut-clone-anim handle) - (target-flut-death symbol) - (target-flut-double-jump float float) - (target-flut-falling symbol) - (target-flut-get-off handle) - (target-flut-get-off-hit-ground symbol) - (target-flut-get-off-jump handle) - (target-flut-get-on handle) - target-flut-grab - (target-flut-hit symbol attack-info) - target-flut-hit-ground - (target-flut-jump float float) - target-flut-running-attack - target-flut-stance - (target-flut-start handle) - target-flut-walk - target-grab - (target-high-jump float float basic) - (target-hit symbol attack-info) - (target-hit-ground symbol) - (target-hit-ground-hard float) - target-ice-stance - target-ice-walk - (target-jump float float surface) - (target-jump-forward float float) - (target-launch float symbol vector int) - target-load-wait - target-look-around - (target-periscope handle) - (target-play-anim string handle) - (target-pole-cycle handle) - (target-pole-flip-forward float float float) - (target-pole-flip-forward-jump float float) - (target-pole-flip-up object object float) - (target-pole-flip-up-jump float float) - target-racing - (target-racing-bounce float float symbol) - (target-racing-clone-anim handle) - (target-racing-death symbol) - target-racing-falling - (target-racing-get-off handle) - (target-racing-get-off-hit-ground symbol) - (target-racing-get-off-jump handle) - (target-racing-get-on handle) - target-racing-grab - (target-racing-hit handle attack-info) - (target-racing-jump float float symbol) - (target-racing-smack float symbol) - (target-racing-start handle) - target-running-attack - target-slide-down - target-snowball - (target-snowball-start handle) - target-stance - target-stance-ambient - target-stance-look-around - target-startup - target-swim-down - (target-swim-jump float float) - (target-swim-jump-jump float float surface) - target-swim-stance - target-swim-up - target-swim-walk - target-title - target-title-play - target-title-wait - target-tube - (target-tube-death symbol) - (target-tube-hit symbol attack-info) - (target-tube-jump float float) - (target-tube-start handle) - target-turn-around - target-wade-stance - target-wade-walk - target-walk - (target-warp-in vector vector) - (target-warp-out vector vector) - target-wheel - (target-wheel-flip float float) - target-yellow-blast - target-yellow-jump-blast - ) - ) - + target-attack + (target-attack-air symbol) + (target-attack-uppercut float float) + (target-attack-uppercut-jump float float) + target-billy-game + (target-clone-anim handle) + (target-continue continue-point) + (target-death symbol) + target-demo + (target-double-jump float float) + (target-duck-high-jump float float symbol) + (target-duck-high-jump-jump float float symbol) + target-duck-stance + target-duck-walk + (target-eco-powerup object float) + target-edge-grab + (target-edge-grab-jump float float) + target-edge-grab-off + (target-falling symbol) + (target-final-door basic handle) + (target-fishing handle) + (target-flop float float float) + (target-flop-hit-ground symbol) + (target-flut-air-attack float) + target-flut-air-attack-hit-ground + (target-flut-clone-anim handle) + (target-flut-death symbol) + (target-flut-double-jump float float) + (target-flut-falling symbol) + (target-flut-get-off handle) + (target-flut-get-off-hit-ground symbol) + (target-flut-get-off-jump handle) + (target-flut-get-on handle) + target-flut-grab + (target-flut-hit symbol attack-info) + target-flut-hit-ground + (target-flut-jump float float) + target-flut-running-attack + target-flut-stance + (target-flut-start handle) + target-flut-walk + target-grab + (target-high-jump float float basic) + (target-hit symbol attack-info) + (target-hit-ground symbol) + (target-hit-ground-hard float) + target-ice-stance + target-ice-walk + (target-jump float float surface) + (target-jump-forward float float) + (target-launch float symbol vector int) + target-load-wait + target-look-around + (target-periscope handle) + (target-play-anim string handle) + (target-pole-cycle handle) + (target-pole-flip-forward float float float) + (target-pole-flip-forward-jump float float) + (target-pole-flip-up object object float) + (target-pole-flip-up-jump float float) + target-racing + (target-racing-bounce float float symbol) + (target-racing-clone-anim handle) + (target-racing-death symbol) + target-racing-falling + (target-racing-get-off handle) + (target-racing-get-off-hit-ground symbol) + (target-racing-get-off-jump handle) + (target-racing-get-on handle) + target-racing-grab + (target-racing-hit handle attack-info) + (target-racing-jump float float symbol) + (target-racing-smack float symbol) + (target-racing-start handle) + target-running-attack + target-slide-down + target-snowball + (target-snowball-start handle) + target-stance + target-stance-ambient + target-stance-look-around + target-startup + target-swim-down + (target-swim-jump float float) + (target-swim-jump-jump float float surface) + target-swim-stance + target-swim-up + target-swim-walk + target-title + target-title-play + target-title-wait + target-tube + (target-tube-death symbol) + (target-tube-hit symbol attack-info) + (target-tube-jump float float) + (target-tube-start handle) + target-turn-around + target-wade-stance + target-wade-walk + target-walk + (target-warp-in vector vector) + (target-warp-out vector vector) + target-wheel + (target-wheel-flip float float) + target-yellow-blast + target-yellow-jump-blast)) (define-perm *target* target #f) (deftype sidekick (process-drawable) - ((parent-override (pointer target) :overlay-at parent) - (control control-info :overlay-at root) - (anim-seed uint64 :offset 192) - (shadow-in-movie? symbol) - ) + ((parent-override (pointer target) :overlay-at parent) + (control control-info :overlay-at root) + (anim-seed uint64 :offset 192) + (shadow-in-movie? symbol)) (:states - sidekick-clone - ) - ) - + sidekick-clone)) (define-perm *sidekick* sidekick #f) - (defun-extern start symbol continue-point target) + (defun-extern stop symbol int) + (define-extern do-target-shadow (function none :behavior target)) + (define-extern target-joint-pos (function vector)) + (define-extern target-cam-pos (function vector)) + (define-extern target-powerup-process (function none :behavior target)) + (define-extern target-exit (function none :behavior target)) -(define-extern target-generic-event-handler (function process int symbol event-message-block object :behavior target)) -(define-extern init-sidekick (function none :behavior sidekick)) -(define-extern racer-collision-reaction (function control-info collide-shape-intersect vector vector cshape-moving-flags)) -(define-extern start-sequence-a (function none)) +(define-extern target-generic-event-handler (function process int symbol event-message-block object :behavior target)) +(define-extern init-sidekick (function none :behavior sidekick)) +(define-extern racer-collision-reaction + (function control-info collide-shape-intersect vector vector cshape-moving-flags)) +(define-extern start-sequence-a (function none)) diff --git a/goal_src/jak1/engine/target/target-handler.gc b/goal_src/jak1/engine/target/target-handler.gc index 127cb8fc6c..665ebf7145 100644 --- a/goal_src/jak1/engine/target/target-handler.gc +++ b/goal_src/jak1/engine/target/target-handler.gc @@ -1,13 +1,7 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/target/logic-target.gc") - -;; name: target-handler.gc -;; name in dgo: target-handler -;; dgos: GAME, ENGINE - (define-extern target-powerup-effect (function symbol none :behavior target)) ;; DECOMP BEGINS @@ -18,170 +12,101 @@ (('get-pickup) (when (not (logtest? (-> self state-flags) (state-flags dying))) (let ((s4-0 (-> arg3 param 0)) - (f28-0 (the-as float (-> arg3 param 1))) - ) + (f28-0 (the-as float (-> arg3 param 1)))) (if (!= (pickup-collectable! (-> self fact) (the-as pickup-type s4-0) (the-as float 0.0) (the-as handle #f)) - (pickup-collectable! (-> self fact) (the-as pickup-type s4-0) f28-0 (process->handle arg0)) - ) - #t - 'full - ) - ) - ) - ) - (('reset-pickup) - (reset! (-> self fact) (the-as symbol (-> arg3 param 0))) - ) + (pickup-collectable! (-> self fact) (the-as pickup-type s4-0) f28-0 (process->handle arg0))) + #t + 'full)))) + (('reset-pickup) (reset! (-> self fact) (the-as symbol (-> arg3 param 0)))) (('reset-collide) (cond ((-> self control unknown-symbol00) - (target-collide-set! (-> self control unknown-symbol00) (-> self control unknown-float90)) - ) - ((-> self control unknown-symbol30) - (target-danger-set! (-> self control unknown-symbol30) #f) - ) - ) - ) - (('level-deactivate) - #f - ) + (target-collide-set! (-> self control unknown-symbol00) (-> self control unknown-float90))) + ((-> self control unknown-symbol30) (target-danger-set! (-> self control unknown-symbol30) #f)))) + (('level-deactivate) #f) (('level-enter) (let ((v1-21 (level-get *level* (the-as symbol (-> arg3 param 0))))) (when v1-21 (let ((s5-1 (-> v1-21 info))) (let ((v1-22 (-> s5-1 buzzer))) (if (zero? v1-22) - (set! (-> self fact buzzer) 0.0) - (set! (-> self fact buzzer) - (pickup-collectable! (-> self fact) (pickup-type buzzer) (the float (logior -65536 v1-22)) (the-as handle #f)) - ) - ) - ) - (if (and (zero? (-> *game-info* enter-level-time (-> s5-1 index))) - (>= (-> *level-task-data-remap* length) (-> s5-1 index)) - ) - (set-time! (-> *game-info* enter-level-time (-> *level-task-data-remap* (+ (-> s5-1 index) -1)))) - ) - ) + (set! (-> self fact buzzer) 0.0) + (set! (-> self fact buzzer) + (pickup-collectable! (-> self fact) (pickup-type buzzer) (the float (logior -65536 v1-22)) (the-as handle #f))))) + (if (and (zero? (-> *game-info* enter-level-time (-> s5-1 index))) (>= (-> *level-task-data-remap* length) (-> s5-1 index))) + (set-time! (-> *game-info* enter-level-time (-> *level-task-data-remap* (+ (-> s5-1 index) -1)))))) (send-event (ppointer->process (-> *hud-parts* buzzers)) 'sync) - (format #t "GAMEPLAY: enter ~A~%" (-> arg3 param 0)) - ) - ) - ) + (format #t "GAMEPLAY: enter ~A~%" (-> arg3 param 0))))) (('get-attack-count) (set! v0-0 (+ (-> self control unknown-dword51) (-> arg3 param 0))) (set! (-> self control unknown-dword51) (the-as int v0-0)) - v0-0 - ) - (('continue) - (go target-continue (the-as continue-point (-> arg3 param 0))) - ) + v0-0) + (('continue) (go target-continue (the-as continue-point (-> arg3 param 0)))) (('query) (case (-> arg3 param 0) - (('powerup) - (and (= (-> self fact eco-type) (-> arg3 param 1)) (< 0.0 (-> self fact eco-level))) - ) + (('powerup) (and (= (-> self fact eco-type) (-> arg3 param 1)) (< 0.0 (-> self fact eco-level)))) (('pickup) - (pickup-collectable! - (-> self fact) - (the-as pickup-type (-> arg3 param 1)) - (the-as float 0.0) - (the-as handle #f) - ) - ) - (('ground-height) - (target-height-above-ground) - ) - ) - ) + (pickup-collectable! (-> self fact) (the-as pickup-type (-> arg3 param 1)) (the-as float 0.0) (the-as handle #f))) + (('ground-height) (target-height-above-ground)))) (('trans) (case (-> arg3 param 0) (('save) (set! (-> self alt-cam-pos quad) (-> self control trans quad)) (logior! (-> self state-flags) (state-flags has-saved-position)) - (mem-copy! (the-as pointer (-> arg3 param 1)) (the-as pointer (-> self control trans)) 48) - ) + (mem-copy! (the-as pointer (-> arg3 param 1)) (the-as pointer (-> self control trans)) 48)) (('restore) (logclear! (-> self state-flags) (state-flags has-saved-position)) (let ((gp-1 (-> arg3 param 1))) (move-to-point! (-> self control) (the-as vector (+ gp-1 0))) - (quaternion-copy! (-> self control quat) (the-as quaternion (+ gp-1 16))) - ) + (quaternion-copy! (-> self control quat) (the-as quaternion (+ gp-1 16)))) (rot->dir-targ! (-> self control)) (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) (set! v0-0 (current-time)) (set! (-> self control unknown-dword11) (the-as time-frame v0-0)) - v0-0 - ) + v0-0) (('reset) (set! v0-0 (logclear (-> self state-flags) (state-flags has-saved-position))) (set! (-> self state-flags) (the-as state-flags v0-0)) - v0-0 - ) - ) - ) - (('effect) - (target-powerup-effect (the-as symbol (-> arg3 param 0))) - ) + v0-0))) + (('effect) (target-powerup-effect (the-as symbol (-> arg3 param 0)))) (('do-effect) - (effect-control-method-10 - (-> self skel effect) - (the-as symbol (-> arg3 param 0)) - (the-as float (-> arg3 param 1)) - -1 - ) + (effect-control-method-10 (-> self skel effect) (the-as symbol (-> arg3 param 0)) (the-as float (-> arg3 param 1)) -1) (if (-> self sidekick) - (effect-control-method-10 - (-> self sidekick 0 skel effect) - (the-as symbol (-> arg3 param 0)) - (the-as float (-> arg3 param 1)) - -1 - ) - ) - ) + (effect-control-method-10 (-> self sidekick 0 skel effect) + (the-as symbol (-> arg3 param 0)) + (the-as float (-> arg3 param 1)) + -1))) (('neck) (set! (-> self neck flex-blend) (the-as float (-> arg3 param 0))) (cond ((-> arg3 param 1) (logior! (-> self state-flags) (state-flags looking-at-enemy)) (set! (-> self alt-neck-pos quad) (-> (the-as vector (-> arg3 param 1)) quad)) - (look-at-enemy! (-> self neck) (-> self alt-neck-pos) 'force arg0) - ) + (look-at-enemy! (-> self neck) (-> self alt-neck-pos) 'force arg0)) (else - (set! v0-0 (logclear (-> self state-flags) (state-flags looking-at-enemy))) - (set! (-> self state-flags) (the-as state-flags v0-0)) - v0-0 - ) - ) - ) + (set! v0-0 (logclear (-> self state-flags) (state-flags looking-at-enemy))) + (set! (-> self state-flags) (the-as state-flags v0-0)) + v0-0))) (('sidekick) (cond ((and (-> arg3 param 0) (not (-> self sidekick))) (let ((gp-2 (get-process *default-dead-pool* sidekick #x4000))) - (set! v0-0 (when gp-2 - (let ((t9-21 (method-of-type sidekick activate))) - (t9-21 (the-as sidekick gp-2) self 'sidekick (the-as pointer #x70004000)) - ) - (run-now-in-process gp-2 init-sidekick) - (-> gp-2 ppointer) - ) - ) - ) + (set! v0-0 + (when gp-2 + (let ((t9-21 (method-of-type sidekick activate))) + (t9-21 (the-as sidekick gp-2) self 'sidekick (the-as pointer #x70004000))) + (run-now-in-process gp-2 init-sidekick) + (-> gp-2 ppointer)))) (set! (-> self sidekick) (the-as (pointer sidekick) v0-0)) - v0-0 - ) + v0-0) ((and (not (-> arg3 param 0)) (-> self sidekick)) (deactivate (-> self sidekick 0)) (set! (-> self sidekick) (the-as (pointer sidekick) #f)) - #f - ) - ) - ) + #f))) (('blend-shape) (if (-> arg3 param 0) - (logior! (-> self skel status) (janim-status blerc)) - (logclear! (-> self skel status) (janim-status blerc)) - ) + (logior! (-> self skel status) (janim-status blerc)) + (logclear! (-> self skel status) (janim-status blerc))) (let ((v1-105 (new 'stack-no-clear 'event-message-block))) (set! (-> v1-105 from) arg0) (set! (-> v1-105 num-params) arg1) @@ -193,50 +118,26 @@ (set! (-> v1-105 param 4) (-> arg3 param 4)) (set! (-> v1-105 param 5) (-> arg3 param 5)) (set! (-> v1-105 param 6) (-> arg3 param 6)) - (send-event-function (ppointer->process (-> self sidekick)) v1-105) - ) - ) + (send-event-function (ppointer->process (-> self sidekick)) v1-105))) (('shadow) (cond ((-> arg3 param 0) - (let ((v1-108 (-> self draw shadow-ctrl))) - (logclear! (-> v1-108 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - (else - (let ((v1-110 (-> self draw shadow-ctrl))) - (logior! (-> v1-110 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) + (let ((v1-108 (-> self draw shadow-ctrl))) (logclear! (-> v1-108 settings flags) (shadow-flags disable-draw))) + 0) + (else (let ((v1-110 (-> self draw shadow-ctrl))) (logior! (-> v1-110 settings flags) (shadow-flags disable-draw))) 0))) (('rotate-y-angle) - (quaternion-rotate-y! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (the-as float (-> arg3 param 0)) - ) + (quaternion-rotate-y! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (the-as float (-> arg3 param 0))) (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (rot->dir-targ! (-> self control)) - ) - ) - (('touched) - (send-event arg0 'touch (-> arg3 param 0)) - ) - (('dry) - (set! (-> self water drip-wetness) 0.0) - ) - (('reset-height) - (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) - #f - ) + (rot->dir-targ! (-> self control)))) + (('touched) (send-event arg0 'touch (-> arg3 param 0))) + (('dry) (set! (-> self water drip-wetness) 0.0)) + (('reset-height) (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) #f) (('draw) (if (-> arg3 param 0) - (logclear! (-> self draw status) (draw-status skip-bones)) - (logior! (-> self draw status) (draw-status skip-bones)) - ) + (logclear! (-> self draw status) (draw-status skip-bones)) + (logior! (-> self draw status) (draw-status skip-bones))) (let ((v1-132 (new 'stack-no-clear 'event-message-block))) (set! (-> v1-132 from) arg0) (set! (-> v1-132 num-params) arg1) @@ -248,31 +149,20 @@ (set! (-> v1-132 param 4) (-> arg3 param 4)) (set! (-> v1-132 param 5) (-> arg3 param 5)) (set! (-> v1-132 param 6) (-> arg3 param 6)) - (send-event-function (ppointer->process (-> self manipy)) v1-132) - ) - ) + (send-event-function (ppointer->process (-> self manipy)) v1-132))) (('no-load-wait) (set! v0-0 (+ (current-time) (the-as time-frame (-> arg3 param 0)))) (set! (-> self no-load-wait) (the-as time-frame v0-0)) - v0-0 - ) + v0-0) (('no-look-around) (set! (-> self no-look-around-wait) (+ (current-time) (the-as time-frame (-> arg3 param 0)))) - (if (= (-> self next-state name) 'target-look-around) - (send-event self 'end-mode) - ) - ) + (if (= (-> self next-state name) 'target-look-around) (send-event self 'end-mode))) (('change-state) - (go - (the-as (state object object object object target) (-> arg3 param 0)) - (-> arg3 param 1) - (-> arg3 param 2) - (-> arg3 param 3) - (-> arg3 param 4) - ) - ) - ) - ) + (go (the-as (state object object object object target) (-> arg3 param 0)) + (-> arg3 param 1) + (-> arg3 param 2) + (-> arg3 param 3) + (-> arg3 param 4))))) (defbehavior target-shoved target ((arg0 meters) (arg1 meters) (arg2 process) (arg3 (state object object target))) (let ((s5-0 (new 'static 'attack-info))) @@ -280,124 +170,71 @@ (set! (-> s5-0 shove-back) arg0) (set! (-> s5-0 shove-up) arg1) (set! (-> s5-0 angle) - (if (not (logtest? (logior (-> self control status) (-> self control old-status)) (cshape-moving-flags onsurf))) - 'air - 'shove - ) - ) + (if (not (logtest? (logior (-> self control status) (-> self control old-status)) (cshape-moving-flags onsurf))) 'air 'shove)) (set! (-> s5-0 mask) (attack-mask attacker shove-back shove-up angle)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.1)) - (go arg3 'shove s5-0) - ) - ) + (go arg3 'shove s5-0))) (defun get-intersect-point ((arg0 vector) (arg1 touching-prims-entry) (arg2 control-info) (arg3 touching-shapes-entry)) (let ((a0-2 (get-touched-tri arg1 arg2 arg3))) - (if a0-2 - (set! (-> arg0 quad) (-> a0-2 intersect quad)) - (get-middle-of-bsphere-overlap arg1 arg0) - ) - ) - arg0 - ) + (if a0-2 (set! (-> arg0 quad) (-> a0-2 intersect quad)) (get-middle-of-bsphere-overlap arg1 arg0))) + arg0) -(defbehavior target-attacked target ((arg0 symbol) - (arg1 attack-info) - (arg2 process) - (arg3 touching-shapes-entry) - (arg4 (state symbol attack-info target)) - ) +(defbehavior target-attacked target ((arg0 symbol) (arg1 attack-info) (arg2 process) (arg3 touching-shapes-entry) (arg4 (state symbol attack-info target))) (when (not (logtest? (-> self state-flags) (state-flags being-attacked))) (cond ((or (logtest? (-> self state-flags) (state-flags invulnerable timed-invulnerable invuln-powerup)) (and (logtest? (-> arg1 mask) (attack-mask mode)) (= (-> arg1 mode) 'darkeco) (and (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) - (logtest? (state-flags dangerous flop-hit-ground) (-> self state-flags)) - ) - ) - ) + (logtest? (state-flags dangerous flop-hit-ground) (-> self state-flags))))) (case arg0 - (('attack-or-shove) - ) - (('attack-invinc) - (set! arg0 'attack) - ) - (else - (return #f) - ) - ) - ) + (('attack-or-shove)) + (('attack-invinc) (set! arg0 'attack)) + (else (return #f)))) (else - (case arg0 - (('attack-or-shove 'attack-invinc) - (set! arg0 'attack) - ) - ) - ) - ) + (case arg0 + (('attack-or-shove 'attack-invinc) (set! arg0 'attack))))) (mem-copy! (the-as pointer (-> self attack-info-rec)) (the-as pointer arg1) 104) (when arg3 (let ((a1-2 (prims-touching? arg3 (-> self control) (the-as uint -1)))) (when a1-2 (get-intersect-point (-> self attack-info-rec intersection) a1-2 (-> self control) arg3) - (logior! (-> self attack-info-rec mask) (attack-mask intersection)) - ) - ) - ) + (logior! (-> self attack-info-rec mask) (attack-mask intersection))))) (set! (-> self attack-info-rec prev-state) (-> self state)) (logior! (-> self attack-info-rec mask) (attack-mask atki13)) (when (not (logtest? (-> self attack-info-rec mask) (attack-mask attacker))) (set! (-> self attack-info-rec attacker) (process->handle arg2)) - (logior! (-> self attack-info-rec mask) (attack-mask attacker)) - ) + (logior! (-> self attack-info-rec mask) (attack-mask attacker))) (cond ((and (logtest? (-> self attack-info-rec mask) (attack-mask mode)) - (and (= (-> self attack-info-rec mode) 'damage) - (not (and (= (-> self game mode) 'play) (>= 1.0 (-> self fact health)))) - ) - ) - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 1) - -1 - #f - #f - #f - (if (logtest? (-> self attack-info-rec mask) (attack-mask intersection)) - (-> self attack-info-rec intersection) - (-> self control root-prim prim-core) - ) - :to self - ) - (target-timed-invulnerable - (if (logtest? (-> self attack-info-rec mask) (attack-mask invinc-time)) - (-> self attack-info-rec invinc-time) - (-> *TARGET-bank* hit-invulnerable-timeout) - ) - self - ) + (and (= (-> self attack-info-rec mode) 'damage) (not (and (= (-> self game mode) 'play) (>= 1.0 (-> self fact health)))))) + (pickup-collectable! (-> self fact) (pickup-type eco-green) (- (-> *FACT-bank* health-single-inc)) (the-as handle #f)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 1) + -1 + #f + #f + #f + (if (logtest? (-> self attack-info-rec mask) (attack-mask intersection)) + (-> self attack-info-rec intersection) + (-> self control root-prim prim-core)) + :to + self) + (target-timed-invulnerable (if (logtest? (-> self attack-info-rec mask) (attack-mask invinc-time)) + (-> self attack-info-rec invinc-time) + (-> *TARGET-bank* hit-invulnerable-timeout)) + self) (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 255 (seconds 0.5)) (sound-play "oof") - #t - ) + #t) (else - (logior! (-> self state-flags) (state-flags being-attacked)) - (if (and (= (-> self game mode) 'play) (and (>= 1.0 (-> self fact health)) (= arg0 'attack))) - (logior! (-> self state-flags) (state-flags dying)) - ) - (go arg4 arg0 (-> self attack-info-rec)) - ) - ) - ) - ) + (logior! (-> self state-flags) (state-flags being-attacked)) + (if (and (= (-> self game mode) 'play) (and (>= 1.0 (-> self fact health)) (= arg0 'attack))) + (logior! (-> self state-flags) (state-flags dying))) + (go arg4 arg0 (-> self attack-info-rec)))))) (defbehavior target-send-attack target ((arg0 process) (arg1 uint) (arg2 touching-shapes-entry) (arg3 int) (arg4 int)) (local-vars @@ -423,8 +260,7 @@ (sv-480 int) (sv-496 symbol) (sv-512 symbol) - (sv-528 symbol) - ) + (sv-528 symbol)) (let ((v1-0 (new 'stack-no-clear 'event-message-block))) (set! (-> v1-0 from) self) (set! (-> v1-0 num-params) 4) @@ -441,100 +277,73 @@ (set! sv-96 (prims-touching? arg2 (-> self control) (the-as uint 64))) (cond (sv-96 - (let ((s4-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when s4-0 - (let ((t9-3 (method-of-type part-tracker activate))) - (t9-3 (the-as part-tracker s4-0) self 'part-tracker (the-as pointer #x70004000)) - ) - (let ((s3-0 run-function-in-process) - (s2-0 s4-0) - (s1-0 part-tracker-init) - (s0-0 (-> *part-group-id-table* 4)) - ) - (set! sv-224 -1) - (set! sv-240 (the-as symbol #f)) - (set! sv-256 (the-as symbol #f)) - (set! sv-272 (the-as symbol #f)) - (let ((t3-0 (get-intersect-point (new 'stack-no-clear 'vector) sv-96 (-> self control) arg2))) - ((the-as (function object object object object object object object object none) s3-0) - s2-0 - s1-0 - s0-0 - sv-224 - sv-240 - sv-256 - sv-272 - t3-0 - ) - ) - ) - (-> s4-0 ppointer) - ) - ) - ) - (else - (effect-control-method-10 (-> self skel effect) 'group-spin-hit (the-as float -1.0) 74) - ) - ) - (effect-control-method-12 - (-> self skel effect) - (-> self control unknown-symbol30) - (the-as float -1.0) - 74 - #f - (static-sound-name "spin-hit") - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 127 (seconds 0.2)) - ) + (let ((s4-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-0 + (let ((t9-3 (method-of-type part-tracker activate))) + (t9-3 (the-as part-tracker s4-0) self 'part-tracker (the-as pointer #x70004000))) + (let ((s3-0 run-function-in-process) + (s2-0 s4-0) + (s1-0 part-tracker-init) + (s0-0 (-> *part-group-id-table* 4))) + (set! sv-224 -1) + (set! sv-240 (the-as symbol #f)) + (set! sv-256 (the-as symbol #f)) + (set! sv-272 (the-as symbol #f)) + (let ((t3-0 (get-intersect-point (new 'stack-no-clear 'vector) sv-96 (-> self control) arg2))) + ((the-as (function object object object object object object object object none) s3-0) + s2-0 + s1-0 + s0-0 + sv-224 + sv-240 + sv-256 + sv-272 + t3-0))) + (-> s4-0 ppointer)))) + (else (effect-control-method-10 (-> self skel effect) 'group-spin-hit (the-as float -1.0) 74))) + (effect-control-method-12 (-> self skel effect) + (-> self control unknown-symbol30) + (the-as float -1.0) + 74 + #f + (static-sound-name "spin-hit")) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 127 (seconds 0.2))) ((= v1-5 'punch) (set! sv-128 (prims-touching? arg2 (-> self control) (the-as uint 64))) (cond (sv-128 - (let ((s4-1 (get-process *default-dead-pool* part-tracker #x4000))) - (when s4-1 - (let ((t9-11 (method-of-type part-tracker activate))) - (t9-11 (the-as part-tracker s4-1) self 'part-tracker (the-as pointer #x70004000)) - ) - (let ((s3-1 run-function-in-process) - (s2-1 s4-1) - (s1-1 part-tracker-init) - (s0-1 (-> *part-group-id-table* 5)) - ) - (set! sv-288 -1) - (set! sv-304 (the-as symbol #f)) - (set! sv-320 (the-as symbol #f)) - (set! sv-336 (the-as symbol #f)) - (let ((t3-1 (get-intersect-point (new 'stack-no-clear 'vector) sv-128 (-> self control) arg2))) - ((the-as (function object object object object object object object object none) s3-1) - s2-1 - s1-1 - s0-1 - sv-288 - sv-304 - sv-320 - sv-336 - t3-1 - ) - ) - ) - (-> s4-1 ppointer) - ) - ) - ) - ((let ((v0-14 (prims-touching? arg2 (-> self control) (the-as uint 32)))) - (set! sv-128 v0-14) - v0-14 - ) + (let ((s4-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-1 + (let ((t9-11 (method-of-type part-tracker activate))) + (t9-11 (the-as part-tracker s4-1) self 'part-tracker (the-as pointer #x70004000))) + (let ((s3-1 run-function-in-process) + (s2-1 s4-1) + (s1-1 part-tracker-init) + (s0-1 (-> *part-group-id-table* 5))) + (set! sv-288 -1) + (set! sv-304 (the-as symbol #f)) + (set! sv-320 (the-as symbol #f)) + (set! sv-336 (the-as symbol #f)) + (let ((t3-1 (get-intersect-point (new 'stack-no-clear 'vector) sv-128 (-> self control) arg2))) + ((the-as (function object object object object object object object object none) s3-1) + s2-1 + s1-1 + s0-1 + sv-288 + sv-304 + sv-320 + sv-336 + t3-1))) + (-> s4-1 ppointer)))) + ((let ((v0-14 (prims-touching? arg2 (-> self control) (the-as uint 32)))) (set! sv-128 v0-14) v0-14) (let ((s4-2 (get-process *default-dead-pool* part-tracker #x4000))) (when s4-2 (let ((t9-16 (method-of-type part-tracker activate))) - (t9-16 (the-as part-tracker s4-2) self 'part-tracker (the-as pointer #x70004000)) - ) + (t9-16 (the-as part-tracker s4-2) self 'part-tracker (the-as pointer #x70004000))) (let ((s3-2 run-function-in-process) (s2-2 s4-2) (s1-2 part-tracker-init) - (s0-2 (-> *part-group-id-table* 5)) - ) + (s0-2 (-> *part-group-id-table* 5))) (set! sv-352 -1) (set! sv-368 (the-as symbol #f)) (set! sv-384 (the-as symbol #f)) @@ -548,85 +357,59 @@ sv-368 sv-384 sv-400 - t3-2 - ) - ) - ) - (-> s4-2 ppointer) - ) - ) - ) - ) - (effect-control-method-12 - (-> self skel effect) - (-> self control unknown-symbol30) - (the-as float -1.0) - 23 - #f - (static-sound-name "punch-hit") - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1)) - ) + t3-2))) + (-> s4-2 ppointer))))) + (effect-control-method-12 (-> self skel effect) + (-> self control unknown-symbol30) + (the-as float -1.0) + 23 + #f + (static-sound-name "punch-hit")) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1))) ((= v1-5 'flip) - (effect-control-method-12 - (-> self skel effect) - (-> self control unknown-symbol30) - (the-as float -1.0) - 74 - #f - (static-sound-name "punch-hit") - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 127 (seconds 0.1)) - ) + (effect-control-method-12 (-> self skel effect) + (-> self control unknown-symbol30) + (the-as float -1.0) + 74 + #f + (static-sound-name "punch-hit")) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 127 (seconds 0.1))) ((= v1-5 'uppercut) (set! sv-176 (prims-touching? arg2 (-> self control) (the-as uint 64))) (cond (sv-176 - (let ((s4-3 (get-process *default-dead-pool* part-tracker #x4000))) - (when s4-3 - (let ((t9-25 (method-of-type part-tracker activate))) - (t9-25 (the-as part-tracker s4-3) self 'part-tracker (the-as pointer #x70004000)) - ) - (let ((s3-3 run-function-in-process) - (s2-3 s4-3) - (s1-3 part-tracker-init) - (s0-3 (-> *part-group-id-table* 5)) - ) - (set! sv-416 -1) - (set! sv-432 (the-as symbol #f)) - (set! sv-448 (the-as symbol #f)) - (set! sv-464 (the-as symbol #f)) - (let ((t3-3 (get-intersect-point (new 'stack-no-clear 'vector) sv-176 (-> self control) arg2))) - ((the-as (function object object object object object object object object none) s3-3) - s2-3 - s1-3 - s0-3 - sv-416 - sv-432 - sv-448 - sv-464 - t3-3 - ) - ) - ) - (-> s4-3 ppointer) - ) - ) - ) - ((let ((v0-26 (prims-touching? arg2 (-> self control) (the-as uint 32)))) - (set! sv-176 v0-26) - v0-26 - ) + (let ((s4-3 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-3 + (let ((t9-25 (method-of-type part-tracker activate))) + (t9-25 (the-as part-tracker s4-3) self 'part-tracker (the-as pointer #x70004000))) + (let ((s3-3 run-function-in-process) + (s2-3 s4-3) + (s1-3 part-tracker-init) + (s0-3 (-> *part-group-id-table* 5))) + (set! sv-416 -1) + (set! sv-432 (the-as symbol #f)) + (set! sv-448 (the-as symbol #f)) + (set! sv-464 (the-as symbol #f)) + (let ((t3-3 (get-intersect-point (new 'stack-no-clear 'vector) sv-176 (-> self control) arg2))) + ((the-as (function object object object object object object object object none) s3-3) + s2-3 + s1-3 + s0-3 + sv-416 + sv-432 + sv-448 + sv-464 + t3-3))) + (-> s4-3 ppointer)))) + ((let ((v0-26 (prims-touching? arg2 (-> self control) (the-as uint 32)))) (set! sv-176 v0-26) v0-26) (let ((s4-4 (get-process *default-dead-pool* part-tracker #x4000))) (when s4-4 (let ((t9-30 (method-of-type part-tracker activate))) - (t9-30 (the-as part-tracker s4-4) self 'part-tracker (the-as pointer #x70004000)) - ) + (t9-30 (the-as part-tracker s4-4) self 'part-tracker (the-as pointer #x70004000))) (let ((s3-4 run-function-in-process) (s2-4 s4-4) (s1-4 part-tracker-init) - (s0-4 (-> *part-group-id-table* 5)) - ) + (s0-4 (-> *part-group-id-table* 5))) (set! sv-480 -1) (set! sv-496 (the-as symbol #f)) (set! sv-512 (the-as symbol #f)) @@ -640,221 +423,125 @@ sv-496 sv-512 sv-528 - t3-4 - ) - ) - ) - (-> s4-4 ppointer) - ) - ) - ) - ) + t3-4))) + (-> s4-4 ppointer))))) (effect-control-method-10 (-> self skel effect) 'group-uppercut-hit (the-as float -1.0) 23) - (effect-control-method-12 - (-> self skel effect) - (-> self control unknown-symbol30) - (the-as float -1.0) - 23 - #f - (static-sound-name "uppercut-hit") - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1)) - ) + (effect-control-method-12 (-> self skel effect) + (-> self control unknown-symbol30) + (the-as float -1.0) + 23 + #f + (static-sound-name "uppercut-hit")) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1))) ((or (= v1-5 'flop) (= v1-5 'flop-down)) (effect-control-method-10 (-> self skel effect) 'group-flop-hit (the-as float -1.0) 23) (effect-control-method-10 (-> self skel effect) 'group-flop-hit (the-as float -1.0) 17) - (effect-control-method-12 - (-> self skel effect) - (-> self control unknown-symbol30) - (the-as float -1.0) - 23 - #f - (static-sound-name "flop-hit") - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1)) - ) + (effect-control-method-12 (-> self skel effect) + (-> self control unknown-symbol30) + (the-as float -1.0) + 23 + #f + (static-sound-name "flop-hit")) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1))) ((= v1-5 'flut-attack) - (effect-control-method-12 - (-> self skel effect) - (-> self control unknown-symbol30) - (the-as float -1.0) - 23 - #f - (static-sound-name "punch-hit") - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.2)) - ) - ) - ) - ) - (the-as symbol gp-0) - ) - ) - ) + (effect-control-method-12 (-> self skel effect) + (-> self control unknown-symbol30) + (the-as float -1.0) + 23 + #f + (static-sound-name "punch-hit")) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.2)))))) + (the-as symbol gp-0)))) (defbehavior target-apply-tongue target ((arg0 vector)) (when (not (logtest? (-> self state-flags) (state-flags being-attacked))) (logior! (-> self state-flags) (state-flags prevent-attack prevent-duck remove-prevents)) (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> self control trans)))) - (set! (-> self control unknown-float41) (lerp-scale - (-> *TARGET-bank* tongue-pull-speed-min) - (-> *TARGET-bank* tongue-pull-speed-max) - (vector-length gp-1) - (the-as float 20480.0) - (the-as float 61440.0) - ) - ) - (if (zero? (-> self control unknown-int00)) - (vector-reset! (-> self control unknown-vector40)) - ) + (set! (-> self control unknown-float41) + (lerp-scale (-> *TARGET-bank* tongue-pull-speed-min) + (-> *TARGET-bank* tongue-pull-speed-max) + (vector-length gp-1) + (the-as float 20480.0) + (the-as float 61440.0))) + (if (zero? (-> self control unknown-int00)) (vector-reset! (-> self control unknown-vector40))) (vector-flatten! gp-1 gp-1 (-> self control local-normal)) (vector-normalize! gp-1 (the-as float 1.0)) - (vector+! (-> self control unknown-vector40) (-> self control unknown-vector40) gp-1) - ) + (vector+! (-> self control unknown-vector40) (-> self control unknown-vector40) gp-1)) (set! (-> self control unknown-float50) 1.0) (+! (-> self control unknown-int00) 1) - #t - ) - ) + #t)) (defbehavior target-standard-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('attack 'attack-or-shove 'attack-invinc) - (target-attacked - arg2 - (the-as attack-info (-> arg3 param 1)) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) - target-hit - ) - ) + (target-attacked arg2 + (the-as attack-info (-> arg3 param 1)) + arg0 + (the-as touching-shapes-entry (-> arg3 param 0)) + target-hit)) (('shove) (when (!= (-> self next-state name) 'target-hit) (mem-copy! (the-as pointer (-> self attack-info-rec)) (the-as pointer (-> arg3 param 1)) 104) (when (not (logtest? (-> self attack-info-rec mask) (attack-mask attacker))) (set! (-> self attack-info-rec attacker) (process->handle arg0)) - (logior! (-> self attack-info-rec mask) (attack-mask attacker)) - ) - (go target-hit 'shove (-> self attack-info-rec)) - ) - ) - (('launch) - (mem-copy! (&-> (-> self control) unknown-pointer00) (the-as pointer arg3) 72) - #t - ) + (logior! (-> self attack-info-rec mask) (attack-mask attacker))) + (go target-hit 'shove (-> self attack-info-rec)))) + (('launch) (mem-copy! (&-> (-> self control) unknown-pointer00) (the-as pointer arg3) 72) #t) (('powerup) (if (or (= (-> self next-state name) 'target-stance) (= (-> self next-state name) 'target-walk) - (= (-> self next-state name) 'target-stance-look-around) - ) - (go target-eco-powerup (-> arg3 param 0) (the-as float (-> arg3 param 1))) - ) - ) + (= (-> self next-state name) 'target-stance-look-around)) + (go target-eco-powerup (-> arg3 param 0) (the-as float (-> arg3 param 1))))) (('loading) (if (not (or (and (logtest? (-> self control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - ) + (not (logtest? (-> self control status) (cshape-moving-flags onsurf)))) (or (logtest? (-> self water flags) (water-flags wt09)) (logtest? (-> self state-flags) (state-flags dangerous sf02 being-attacked grabbed first-person-mode dying)) (logtest? (-> self control root-prim prim-core action) - (collide-action edgegrab-cam swingpole-active racer snowball tube flut) - ) - (>= (-> self no-load-wait) (current-time)) - ) - ) - ) - (go target-load-wait) - ) - ) + (collide-action edgegrab-cam swingpole-active racer snowball tube flut)) + (>= (-> self no-load-wait) (current-time))))) + (go target-load-wait))) (('change-mode) (case (-> arg3 param 0) - (('grab) - (go target-grab) - ) - (('look-around) - (go target-look-around) - ) - (('billy) - (go target-billy-game) - ) - (('falling) - (go target-falling #f) - ) - (('racing) - (go target-racing-start (process->handle (the-as process (-> arg3 param 1)))) - ) - (('flut) - (go target-flut-start (process->handle (the-as process (-> arg3 param 1)))) - ) - (('snowball) - (go target-snowball-start (process->handle (the-as process (-> arg3 param 1)))) - ) + (('grab) (go target-grab)) + (('look-around) (go target-look-around)) + (('billy) (go target-billy-game)) + (('falling) (go target-falling #f)) + (('racing) (go target-racing-start (process->handle (the-as process (-> arg3 param 1))))) + (('flut) (go target-flut-start (process->handle (the-as process (-> arg3 param 1))))) + (('snowball) (go target-snowball-start (process->handle (the-as process (-> arg3 param 1))))) (('tube) (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (not (logtest? (-> self water flags) (water-flags wt09))) - ) - (go target-tube-start (process->handle (the-as process (-> arg3 param 1)))) - ) - ) + (not (logtest? (-> self water flags) (water-flags wt09)))) + (go target-tube-start (process->handle (the-as process (-> arg3 param 1)))))) (('periscope) (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-periscope (process->handle (the-as process (-> arg3 param 1)))) - ) - ) - (('fishing) - (go target-fishing (process->handle (the-as process (-> arg3 param 1)))) - ) + (go target-periscope (process->handle (the-as process (-> arg3 param 1)))))) + (('fishing) (go target-fishing (process->handle (the-as process (-> arg3 param 1))))) (('final-door) - (go - target-final-door - (the-as basic (process->handle (the-as process (-> arg3 param 1)))) - (process->handle (the-as process (-> arg3 param 2))) - ) - ) - ) - ) - (('play-anim) - (go target-play-anim (the-as string (-> arg3 param 0)) (the-as handle arg1)) - ) - (('clone-anim) - (go target-clone-anim (process->handle (the-as process (-> arg3 param 0)))) - ) - (('edge-grab) - (go target-edge-grab) - ) + (go target-final-door + (the-as basic (process->handle (the-as process (-> arg3 param 1)))) + (process->handle (the-as process (-> arg3 param 2))))))) + (('play-anim) (go target-play-anim (the-as string (-> arg3 param 0)) (the-as handle arg1))) + (('clone-anim) (go target-clone-anim (process->handle (the-as process (-> arg3 param 0))))) + (('edge-grab) (go target-edge-grab)) (('pole-grab) (if (not (logtest? (-> self control root-prim prim-core action) (collide-action swingpole-active))) - (go target-pole-cycle (process->handle (the-as process (-> arg3 param 0)))) - ) - ) + (go target-pole-cycle (process->handle (the-as process (-> arg3 param 0)))))) (('swim) (if (not (or (= (-> self control unknown-surface00 mode) 'swim) (= (-> self control unknown-surface00 mode) 'dive) (= (-> self next-state name) 'target-hit) - (logtest? (-> self state-flags) (state-flags being-attacked)) - ) - ) - (go target-swim-stance) - ) - ) + (logtest? (-> self state-flags) (state-flags being-attacked)))) + (go target-swim-stance))) (('wade) (if (and (!= (-> self control unknown-surface00 mode) 'wade) (or (= (-> self next-state name) 'target-stance) (= (-> self next-state name) 'target-walk) - (= (-> self next-state name) 'target-stance-look-around) - ) - ) - (go target-wade-stance) - ) - ) - (('tongue) - (target-apply-tongue (the-as vector (-> arg3 param 0))) - ) - (else - (target-generic-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (= (-> self next-state name) 'target-stance-look-around))) + (go target-wade-stance))) + (('tongue) (target-apply-tongue (the-as vector (-> arg3 param 0)))) + (else (target-generic-event-handler arg0 arg1 arg2 arg3)))) (defbehavior target-dangerous-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -862,32 +549,20 @@ (if ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> self control) - (the-as uint 224) - ) - (target-send-attack - arg0 - (the-as uint (-> self control unknown-symbol30)) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self control unknown-dword50) - (-> self control unknown-dword51) - ) - (target-standard-event-handler arg0 arg1 arg2 arg3) - ) - ) + (the-as uint 224)) + (target-send-attack arg0 + (the-as uint (-> self control unknown-symbol30)) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control unknown-dword50) + (-> self control unknown-dword51)) + (target-standard-event-handler arg0 arg1 arg2 arg3))) (('attack 'attack-or-shove 'attack-invinc) - (target-attacked - arg2 - (the-as attack-info (-> arg3 param 1)) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) - target-hit - ) - ) - (else - (target-standard-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (target-attacked arg2 + (the-as attack-info (-> arg3 param 1)) + arg0 + (the-as touching-shapes-entry (-> arg3 param 0)) + target-hit)) + (else (target-standard-event-handler arg0 arg1 arg2 arg3)))) (defbehavior target-bonk-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((s4-0 (new 'stack-no-clear 'vector))) @@ -896,104 +571,49 @@ ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> self control) - (the-as uint 6) - ) + (the-as uint 6)) (< (* 16384.0 (-> *display* time-adjust-ratio)) - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control transv) (-> self control unknown-vector10)) - ) - ) + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control transv) (-> self control unknown-vector10)))) (begin - (vector-normalize! - (vector-! - s4-0 - (the-as vector (-> self control unknown-sphere-array00 0 prim-core)) - (-> self control unknown-vector72) - ) - (the-as float 1.0) - ) - (< 0.01 (-> s4-0 y)) - ) - ) + (vector-normalize! (vector-! s4-0 (the-as vector (-> self control unknown-sphere-array00 0 prim-core)) (-> self control unknown-vector72)) + (the-as float 1.0)) + (< 0.01 (-> s4-0 y)))) (if (< 0.75 (-> s4-0 y)) - (send-event - arg0 - 'bonk - (-> arg3 param 0) - (fmax - (-> self control ground-impact-vel) - (- (vector-dot (-> self control transv) (-> self control dynam gravity-normal))) - ) - ) - ) - (let ((f0-7 (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) (-> self control trans)) - ) - ) - ) + (send-event arg0 + 'bonk + (-> arg3 param 0) + (fmax (-> self control ground-impact-vel) + (- (vector-dot (-> self control transv) (-> self control dynam gravity-normal)))))) + (let ((f0-7 (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) (-> self control trans))))) (when (< (-> *TARGET-bank* fall-far) f0-7) - (when (and (target-send-attack - arg0 - (the-as uint 'bonk) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self control unknown-dword50) - (-> self control unknown-dword51) - ) - (not (logtest? (-> self state-flags) (state-flags being-attacked dying))) - ) + (when (and (target-send-attack arg0 + (the-as uint 'bonk) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control unknown-dword50) + (-> self control unknown-dword51)) + (not (logtest? (-> self state-flags) (state-flags being-attacked dying)))) (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) (target-timed-invulnerable (seconds 0.1) self) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - ) - ) - #f - ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))))) + #f) ((= arg2 'jump) (sound-play "jump-long") - (go - target-jump - (the-as float (-> arg3 param 0)) - (the-as float (-> arg3 param 1)) - (the-as surface (-> arg3 param 2)) - ) - ) - ) - ) - ) + (go target-jump (the-as float (-> arg3 param 0)) (the-as float (-> arg3 param 1)) (the-as surface (-> arg3 param 2))))))) (defbehavior target-jump-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'swim) (< 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - (return #f) - ) + (if (and (= arg2 'swim) (< 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) (return #f)) (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) (cond - (v0-0 - (empty) - v0-0 - ) - (else - (target-standard-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) - ) + (v0-0 (empty) v0-0) + (else (target-standard-event-handler arg0 arg1 arg2 arg3))))) (defbehavior target-walk-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((v0-0 (target-bonk-event-handler arg0 arg1 arg2 arg3))) (cond - (v0-0 - (empty) - v0-0 - ) - (else - (target-standard-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) - ) + (v0-0 (empty) v0-0) + (else (target-standard-event-handler arg0 arg1 arg2 arg3))))) target-post @@ -1007,17 +627,15 @@ target-standard-event-handler (set! (-> self control unknown-vector11 quad) (the-as uint128 0)) (set! (-> self control unknown-float41) 0.0) (set! (-> self control unknown-float81) 0.0) - (logclear! (-> self state-flags) (state-flags - sf02 - being-attacked - do-not-notice - grabbed - first-person-mode - looking-at-enemy - falling-into-pool-of-bad - flop-hit-ground - ) - ) + (logclear! (-> self state-flags) + (state-flags sf02 + being-attacked + do-not-notice + grabbed + first-person-mode + looking-at-enemy + falling-into-pool-of-bad + flop-hit-ground)) (target-danger-set! 'harmless #f) (logior! (-> self water flags) (water-flags wt04)) (logclear! (-> self water flags) (water-flags wt16)) @@ -1028,18 +646,13 @@ target-standard-event-handler (logclear! (-> self skel status) (janim-status spool)) (logclear! (-> self control status) (cshape-moving-flags csmf14)) 0 - (none) - ) + (none)) (defbehavior target-state-hook-exit target () (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) - (none) - ) + (none)) (defbehavior target-effect-exit target () - (let ((v1-1 (-> self skel effect))) - (set! (-> v1-1 channel-offset) 0) - ) + (let ((v1-1 (-> self skel effect))) (set! (-> v1-1 channel-offset) 0)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/target/target-part.gc b/goal_src/jak1/engine/target/target-part.gc index 9038c732c7..f490c97f6d 100644 --- a/goal_src/jak1/engine/target/target-part.gc +++ b/goal_src/jak1/engine/target/target-part.gc @@ -1,59 +1,43 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/generic-obs.gc") -;; name: target-part.gc -;; name in dgo: target-part -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun birth-func-copy-target-y-rot ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (let ((v1-0 *target*)) (when v1-0 (let ((s5-0 (new-stack-matrix0))) - (let ((f0-1 (+ -16384.0 (y-angle (-> v1-0 control))))) - (matrix-rotate-y! s5-0 f0-1) - ) + (let ((f0-1 (+ -16384.0 (y-angle (-> v1-0 control))))) (matrix-rotate-y! s5-0 f0-1)) (vector3s-rotate*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s5-0) - (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s5-0) - ) - ) - ) + (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s5-0)))) 0 - (none) - ) + (none)) (defun birth-func-ground-orient ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (v1-11 float) (v1-12 float)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((a1-1 (new 'stack-no-clear 'vector))) (set! (-> a1-1 quad) (-> arg2 launchrot quad)) (let ((s3-0 (new 'stack-no-clear 'collide-tri-result)) - (s5-0 *target*) - ) + (s5-0 *target*)) (+! (-> a1-1 y) 4096.0) ;; og:preserve-this added *target* check here. - (when (and s5-0 (>= (fill-and-probe-using-y-probe - *collide-cache* - a1-1 - (the-as float 20480.0) - (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) - s5-0 - s3-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - )) + (when (and s5-0 + (>= (fill-and-probe-using-y-probe *collide-cache* + a1-1 + (the-as float 20480.0) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + s5-0 + s3-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0)) (let ((s2-0 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'quaternion)) - ) + (s4-1 (new 'stack-no-clear 'quaternion))) (set! (-> s2-0 x) (-> s3-0 normal z)) (set! (-> s2-0 y) 0.0) (set! (-> s2-0 z) (- (-> s3-0 normal x))) @@ -61,39 +45,28 @@ (quaternion-vector-angle! s4-1 s2-0 (acos (-> s3-0 normal y))) (let ((s3-1 (new 'stack-no-clear 'quaternion))) (quaternion-vector-angle! s3-1 *up-vector* (+ 32768.0 (y-angle (-> s5-0 control)))) - (quaternion-normalize! (quaternion*! s4-1 s3-1 s4-1)) - ) + (quaternion-normalize! (quaternion*! s4-1 s3-1 s4-1))) (cond ((< (-> s4-1 w) 0.0) (.lvf vf1 (&-> arg2 conerot quad)) (.lvf vf2 (&-> s4-1 vec quad)) (.sub.vf vf1 vf0 vf2 :mask #b111) (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-11 vf1) - ) + (.mov v1-11 vf1)) (else - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s4-1 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-12 vf1) - ) - ) - ) - ) - ) - ) + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s4-1 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-12 vf1))))))) 0 - (none) - ) - ) + (none))) (defun birth-func-target-orient ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (v1-10 float) (v1-11 float) (sv-16 target)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (set! sv-16 *target*) ;; og:preserve-this added check here @@ -106,48 +79,37 @@ (set! (-> s3-0 y) 0.0) (set! (-> s3-0 z) (- (-> s2-0 x))) (vector-normalize! s3-0 (the-as float 1.0)) - (quaternion-vector-angle! s5-0 s3-0 (acos (-> s2-0 y))) - ) + (quaternion-vector-angle! s5-0 s3-0 (acos (-> s2-0 y)))) (let ((s3-1 (new 'stack-no-clear 'quaternion))) (quaternion-vector-angle! s3-1 *up-vector* (+ 32768.0 (-> arg1 user-float) (y-angle (-> sv-16 control)))) - (quaternion-normalize! (quaternion*! s5-0 s5-0 s3-1)) - ) + (quaternion-normalize! (quaternion*! s5-0 s5-0 s3-1))) (cond ((< (-> s5-0 w) 0.0) (.lvf vf1 (&-> arg2 conerot quad)) (.lvf vf2 (&-> s5-0 vec quad)) (.sub.vf vf1 vf0 vf2 :mask #b111) (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-10 vf1) - ) + (.mov v1-10 vf1)) (else - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-11 vf1) - ) - ) - ) - ) + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-11 vf1))))) 0 - (none) - ) - ) + (none))) (defun birth-func-vector-orient ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (v1-4 float) (v1-5 float)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) *target* (let ((s4-0 (new 'stack-no-clear 'vector))) (new 'stack-no-clear 'vector) (let ((s5-0 (new 'stack-no-clear 'quaternion)) - (s3-0 (the-as object (-> arg1 user-float))) - ) + (s3-0 (the-as object (-> arg1 user-float)))) (when (nonzero? (the-as float s3-0)) (set! (-> s4-0 x) (-> (the-as sprite-vec-data-2d s3-0) z)) (set! (-> s4-0 y) 0.0) @@ -160,2114 +122,1954 @@ (.lvf vf2 (&-> s5-0 vec quad)) (.sub.vf vf1 vf0 vf2 :mask #b111) (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-4 vf1) - ) + (.mov v1-4 vf1)) (else - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-5 vf1) - ) - ) - ) - ) - ) + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-5 vf1)))))) 0 - (none) - ) - ) + (none))) (defun part-tracker-track-target-joint ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) ;; og:preserve-this added this check (if (not *target*) (return #f)) (let* ((v1-0 *target*) - (v1-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-0 node-list data (the int (-> arg1 user-float))))) - ) + (v1-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-0 node-list data (the int (-> arg1 user-float)))))) (set! (-> arg2 launchrot x) (-> v1-2 x)) (set! (-> arg2 launchrot y) (-> v1-2 y)) - (set! (-> arg2 launchrot z) (-> v1-2 z)) - ) + (set! (-> arg2 launchrot z) (-> v1-2 z))) 0 - (none) - ) + (none)) (defpartgroup group-target-hit :id 1 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 56) (sp-item 57)) - ) + :parts ((sp-item 56) (sp-item 57))) (defpart 56 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:scale-x (meters 3) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.06)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.16)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 6.4) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 58) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:scale-x (meters 3) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.06)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.16)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 6.4) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 58))) (defpart 58 - :init-specs ((:fade-a -0.64)) - ) + :init-specs ((:fade-a -0.64))) (defpart 57 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12)) - (:rot-z (degrees 0)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:rotvel-z (degrees -0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:rotvel-z (degrees -0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)))) (defpartgroup group-red-eco-strike-ground :id 2 :duration (seconds 0.035) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 59) (sp-item 60)) - ) + :parts ((sp-item 59) (sp-item 60))) (defpart 59 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 24.0) - (:y (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 32.0) - (:a 8.0 56.0) - (:vel-y (meters 0.13333334) (meters 0.16666667)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-g -1.4222223) - (:fade-a -0.35555556) - (:accel-y (meters 0.00008333333)) - (:friction 0.7) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 61) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 24.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 32.0) + (:a 8.0 56.0) + (:vel-y (meters 0.13333334) (meters 0.16666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.4222223) + (:fade-a -0.35555556) + (:accel-y (meters 0.00008333333)) + (:friction 0.7) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 61) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 60 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 64.0 8.0) - (:vel-y (meters 0.3)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.8444445) - (:fade-a -0.82222223) - (:friction 0.7) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.15)) - (:next-launcher 61) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 64.0 8.0) + (:vel-y (meters 0.3)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.8444445) + (:fade-a -0.82222223) + (:friction 0.7) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.15)) + (:next-launcher 61) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-red-eco-spinkick :id 3 :duration (seconds 0.035) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 62) (sp-item 63) (sp-item 64)) - ) + :parts ((sp-item 62) (sp-item 63) (sp-item 64))) (defpart 62 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 1.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 32.0) - (:a 8.0 56.0) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-g -1.4222223) - (:fade-a -0.35555556) - (:accel-y (meters 0.00008333333)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 61) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 32.0) + (:a 8.0 56.0) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.4222223) + (:fade-a -0.35555556) + (:accel-y (meters 0.00008333333)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 61) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 61 - :init-specs ((:fade-r -0.7111111) (:fade-g 0.7111111) (:fade-b 0.35555556)) - ) + :init-specs ((:fade-r -0.7111111) (:fade-g 0.7111111) (:fade-b 0.35555556))) (defpart 63 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.66) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 64.0 8.0) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.8444445) - (:fade-a -0.82222223) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.15)) - (:next-launcher 61) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.66) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 64.0 8.0) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.8444445) + (:fade-a -0.82222223) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.15)) + (:next-launcher 61) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.1)))) (defpart 64 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:a 64.0) - (:fade-a -4.0) - (:accel-y (meters 0.00008333333)) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:a 64.0) + (:fade-a -4.0) + (:accel-y (meters 0.00008333333)) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-spin-hit :id 4 :duration (seconds 0.035) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 65) (sp-item 66)) - ) + :parts ((sp-item 65) (sp-item 66))) (defpartgroup group-punch-hit :id 5 :duration (seconds 0.035) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 65) (sp-item 66)) - ) + :parts ((sp-item 65) (sp-item 66))) (defpart 65 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 4.0) - (:y (meters 0.75)) - (:scale-x (meters 3)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15) (meters 0.5)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 67) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 4.0) + (:y (meters 0.75)) + (:scale-x (meters 3)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15) (meters 0.5)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 67) + (:rotate-y (degrees 0)))) (defpart 67 - :init-specs ((:fade-a -2.1333334)) - ) + :init-specs ((:fade-a -2.1333334))) (defpart 66 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 28.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 28.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-smack-surface :id 6 :duration (seconds 0.035) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 68) - (sp-item 69) - (sp-item 72 :binding 71) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 68) + (sp-item 69) + (sp-item 72 :binding 71) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)))) (defpart 68 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:birth-func 'birth-func-copy-target-y-rot) - (:num 16.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0 32.0) - (:b 96.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:birth-func 'birth-func-copy-target-y-rot) + (:num 16.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0 32.0) + (:b 96.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (defpart 69 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:birth-func 'birth-func-copy-target-y-rot) - (:num 8.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0 32.0) - (:b 96.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.08) (meters 0.02)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:birth-func 'birth-func-copy-target-y-rot) + (:num 8.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0 32.0) + (:b 96.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.08) (meters 0.02)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (defpart 72 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 12.0 8.0) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 2.015)) - (:flags (bit3)) - (:userdata 8.0) - (:func 'part-tracker-track-target-joint) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 12.0 8.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 2.015)) + (:flags (bit3)) + (:userdata 8.0) + (:func 'part-tracker-track-target-joint))) (defpart 71 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters -1.3333334) (meters 2.6666667)) - (:z (meters 0.5) (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.05)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0 96.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) - (:vel-y (meters 0)) - (:vel-z (meters 0.0033333334)) - (:fade-a -0.30476192) - (:timer (seconds 2.015)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters -1.3333334) (meters 2.6666667)) + (:z (meters 0.5) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.05)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0 96.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) + (:vel-y (meters 0)) + (:vel-z (meters 0.0033333334)) + (:fade-a -0.30476192) + (:timer (seconds 2.015)) + (:flags (bit2 bit3 bit7)))) (defpartgroup group-land-poof-sand :id 8 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 73) (sp-item 74) (sp-item 75)) - ) + :parts ((sp-item 73) (sp-item 74) (sp-item 75))) (defpart 73 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 74 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 75 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 128.0 2 32.0) - (:g 64.0 1 64.0) - (:b 32.0 1 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.015) (meters 0.006666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00066666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 2 32.0) + (:g 64.0 1 64.0) + (:b 32.0 1 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.015) (meters 0.006666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00066666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-land-poof-dirt :id 575 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2371) (sp-item 2372) (sp-item 2370)) - ) + :parts ((sp-item 2371) (sp-item 2372) (sp-item 2370))) (defpart 2371 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2372 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2370 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 128.0 2 32.0) - (:g 64.0 1 64.0) - (:b 32.0 1 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.015) (meters 0.006666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00066666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 2 32.0) + (:g 64.0 1 64.0) + (:b 32.0 1 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.015) (meters 0.006666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00066666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-land-poof-snow :id 9 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 76) (sp-item 77) (sp-item 78)) - ) + :parts ((sp-item 76) (sp-item 77) (sp-item 78))) (defpart 76 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 77 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 78 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 196.0 1 64.0) - (:g 196.0 1 64.0) - (:b 196.0 1 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.015) (meters 0.006666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00066666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 196.0 1 64.0) + (:g 196.0 1 64.0) + (:b 196.0 1 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.015) (meters 0.006666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00066666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-land-poof-ice :id 580 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 76) (sp-item 77) (sp-item 78)) - ) + :parts ((sp-item 76) (sp-item 77) (sp-item 78))) (defpartgroup group-land-poof-grass :id 10 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 79) (sp-item 80) (sp-item 81)) - ) + :parts ((sp-item 79) (sp-item 80) (sp-item 81))) (defpart 79 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 96.0 32.0) - (:b 0.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 96.0 32.0) + (:b 0.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 80 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 96.0 32.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 96.0 32.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 81 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 32.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.15) (meters 0.35)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15)) - (:r 0.0 2.0 64.0) - (:g 64.0 2 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.015) (meters 0.006666667)) - (:rotvel-z (degrees -2.4) (degrees 4.8)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 32.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.15) (meters 0.35)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15)) + (:r 0.0 2.0 64.0) + (:g 64.0 2 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.015) (meters 0.006666667)) + (:rotvel-z (degrees -2.4) (degrees 4.8)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-land-poof-wood :id 11 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 82) (sp-item 83)) - ) + :parts ((sp-item 82) (sp-item 83))) (defpart 82 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 64.0) - (:b 0.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 64.0) + (:b 0.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 83 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 64.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 64.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-land-poof-crwood :id 12 :duration (seconds 0.017) :linger-duration (seconds 2.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 82) (sp-item 83) (sp-item 84) (sp-item 84)) - ) + :parts ((sp-item 82) (sp-item 83) (sp-item 84) (sp-item 84))) (defpartgroup group-land-poof-stone :id 13 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 85) (sp-item 86)) - ) + :parts ((sp-item 85) (sp-item 86))) (defpart 85 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 86 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-land-poof-pcmetal :id 581 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2373) (sp-item 2374)) - ) + :parts ((sp-item 2373) (sp-item 2374))) (defpart 2373 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 70.0 32.0) - (:b 40.0 20.0) - (:a 24.0 24.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 70.0 32.0) + (:b 40.0 20.0) + (:a 24.0 24.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2374 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 70.0 32.0) - (:b 40.0 20.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 70.0 32.0) + (:b 40.0 20.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-run-poof-stone :id 14 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 87)) - ) + :parts ((sp-item 87))) (defpartgroup group-just-poof-stone :id 15 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 87)) - ) + :parts ((sp-item 87))) (defpart 87 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 16.0) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:fade-a -0.45714286) - (:friction 0.965) - (:timer (seconds 0.35)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 16.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:fade-a -0.45714286) + (:friction 0.965) + (:timer (seconds 0.35)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-run-poof-snow :id 582 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2375) (sp-item 2376 :flags (is-3d))) - ) + :parts ((sp-item 2375) (sp-item 2376 :flags (is-3d)))) (defpartgroup group-just-poof-snow :id 583 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2375)) - ) + :parts ((sp-item 2375))) (defpartgroup group-just-footprint-snow :id 584 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2376 :flags (is-3d))) - ) + :parts ((sp-item 2376 :flags (is-3d)))) (defpart 2376 - :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x2)) - (:birth-func 'birth-func-target-orient) - (:num 1.0) - (:x (meters -0.25)) - (:scale-x (meters 0.6)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 16.0) - (:a 64.0) - (:fade-a -0.07111111) - (:timer (seconds 3.5)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xe :page #x2)) + (:birth-func 'birth-func-target-orient) + (:num 1.0) + (:x (meters -0.25)) + (:scale-x (meters 0.6)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 16.0) + (:a 64.0) + (:fade-a -0.07111111) + (:timer (seconds 3.5)) + (:flags (bit2 bit12 bit14)))) (defpart 2375 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 16.0) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 24.0 24.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:fade-a -0.45714286) - (:friction 0.965) - (:timer (seconds 0.35)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 16.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 24.0 24.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:fade-a -0.45714286) + (:friction 0.965) + (:timer (seconds 0.35)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-run-poof-ice :id 585 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2375)) - ) + :parts ((sp-item 2375))) (defpartgroup group-just-poof-ice :id 586 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2375)) - ) + :parts ((sp-item 2375))) (defpartgroup group-run-poof-crwood :id 16 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 89) (sp-item 89) (sp-item 84)) - ) + :parts ((sp-item 89) (sp-item 89) (sp-item 84))) (defpartgroup group-just-poof-crwood :id 17 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 88)) - ) + :parts ((sp-item 88))) (defpart 84 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 16.0) - (:y (meters -1)) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0) - (:b 0.0 32.0) - (:a 0.0) - (:vel-y (meters 0) (meters -0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.16) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 90) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 16.0) + (:y (meters -1)) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0) + (:b 0.0 32.0) + (:a 0.0) + (:vel-y (meters 0) (meters -0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.16) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 90) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 3)))) (defpart 90 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.5) (seconds 0.497)) (:next-launcher 91)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.5) (seconds 0.497)) (:next-launcher 91))) (defpart 91 - :init-specs ((:fade-a -0.08)) - ) + :init-specs ((:fade-a -0.08))) (defpartgroup group-run-poof-wood :id 18 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 89)) - ) + :parts ((sp-item 89))) (defpartgroup group-just-poof-wood :id 19 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 89)) - ) + :parts ((sp-item 89))) (defpart 89 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 16.0) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 64.0) - (:b 0.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:fade-a -0.45714286) - (:friction 0.965) - (:timer (seconds 0.35)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 16.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 64.0) + (:b 0.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:fade-a -0.45714286) + (:friction 0.965) + (:timer (seconds 0.35)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-run-poof-pcmetal :id 587 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2377)) - ) + :parts ((sp-item 2377))) (defpartgroup group-just-poof-pcmetal :id 588 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2377)) - ) + :parts ((sp-item 2377))) (defpart 2377 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 16.0) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 70.0 32.0) - (:b 40.0 20.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:fade-a -0.45714286) - (:friction 0.965) - (:timer (seconds 0.35)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 16.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 70.0 32.0) + (:b 40.0 20.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:fade-a -0.45714286) + (:friction 0.965) + (:timer (seconds 0.35)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-run-poof-grass :id 20 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 92) (sp-item 93 :flags (is-3d))) - ) + :parts ((sp-item 92) (sp-item 93 :flags (is-3d)))) (defpartgroup group-just-poof-grass :id 21 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 92)) - ) + :parts ((sp-item 92))) (defpartgroup group-just-footprint-grass :id 22 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 93 :flags (is-3d))) - ) + :parts ((sp-item 93 :flags (is-3d)))) (defpart 92 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 16.0) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 96.0 32.0) - (:b 0.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:fade-a -0.45714286) - (:friction 0.965) - (:timer (seconds 0.35)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 16.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 96.0 32.0) + (:b 0.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:fade-a -0.45714286) + (:friction 0.965) + (:timer (seconds 0.35)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 93 - :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x2)) - (:birth-func 'birth-func-target-orient) - (:num 1.0) - (:x (meters -0.25)) - (:scale-x (meters 0.6)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 16.0) - (:a 48.0) - (:fade-a -0.053333335) - (:timer (seconds 3.5)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xe :page #x2)) + (:birth-func 'birth-func-target-orient) + (:num 1.0) + (:x (meters -0.25)) + (:scale-x (meters 0.6)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 16.0) + (:a 48.0) + (:fade-a -0.053333335) + (:timer (seconds 3.5)) + (:flags (bit2 bit12 bit14)))) (defpartgroup group-run-poof-sand :id 23 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 88) (sp-item 94 :flags (is-3d))) - ) + :parts ((sp-item 88) (sp-item 94 :flags (is-3d)))) (defpartgroup group-just-poof-sand :id 24 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 88)) - ) + :parts ((sp-item 88))) (defpartgroup group-just-footprint-sand :id 25 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 94 :flags (is-3d))) - ) + :parts ((sp-item 94 :flags (is-3d)))) (defpart 88 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 16.0) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:fade-a -0.45714286) - (:friction 0.965) - (:timer (seconds 0.35)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 16.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:fade-a -0.45714286) + (:friction 0.965) + (:timer (seconds 0.35)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 94 - :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x2)) - (:birth-func 'birth-func-target-orient) - (:num 1.0) - (:x (meters -0.25)) - (:scale-x (meters 0.6)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 16.0) - (:a 32.0) - (:fade-a -0.035555556) - (:timer (seconds 3.5)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xe :page #x2)) + (:birth-func 'birth-func-target-orient) + (:num 1.0) + (:x (meters -0.25)) + (:scale-x (meters 0.6)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 16.0) + (:a 32.0) + (:fade-a -0.035555556) + (:timer (seconds 3.5)) + (:flags (bit2 bit12 bit14)))) (defpartgroup group-run-poof-dirt :id 576 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2378)) - ) + :parts ((sp-item 2378))) (defpartgroup group-just-poof-dirt :id 577 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2378)) - ) + :parts ((sp-item 2378))) (defpartgroup group-just-footprint-dirt :id 578 :duration (seconds 0.017) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2379 :flags (is-3d))) - ) + :parts ((sp-item 2379 :flags (is-3d)))) (defpart 2378 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 16.0) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:fade-a -0.45714286) - (:friction 0.965) - (:timer (seconds 0.35)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 16.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:fade-a -0.45714286) + (:friction 0.965) + (:timer (seconds 0.35)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2379 - :init-specs ((:texture (new 'static 'texture-id :index #xe :page #x2)) - (:birth-func 'birth-func-target-orient) - (:num 1.0) - (:x (meters -0.25)) - (:scale-x (meters 0.6)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 16.0) - (:a 32.0) - (:fade-a -0.035555556) - (:timer (seconds 3.5)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xe :page #x2)) + (:birth-func 'birth-func-target-orient) + (:num 1.0) + (:x (meters -0.25)) + (:scale-x (meters 0.6)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 16.0) + (:a 32.0) + (:fade-a -0.035555556) + (:timer (seconds 3.5)) + (:flags (bit2 bit12 bit14)))) (defpart 95 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 6.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 128.0 2 32.0) - (:g 64.0 1 64.0) - (:b 32.0 1 32.0) - (:a 64.0 64.0) - (:vel-x (meters -0.00083333335) (meters 0.0016666667)) - (:vel-y (meters 0.005) (meters 0.006666667)) - (:vel-z (meters -0.00083333335) (meters 0.0016666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.00066666666) (meters 0.00033333333)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 6.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 2 32.0) + (:g 64.0 1 64.0) + (:b 32.0 1 32.0) + (:a 64.0 64.0) + (:vel-x (meters -0.00083333335) (meters 0.0016666667)) + (:vel-y (meters 0.005) (meters 0.006666667)) + (:vel-z (meters -0.00083333335) (meters 0.0016666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.00066666666) (meters 0.00033333333)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpart 2253 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 6.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 128.0 2 32.0) - (:g 64.0 1 64.0) - (:b 32.0 1 32.0) - (:a 64.0 64.0) - (:vel-x (meters -0.00083333335) (meters 0.0016666667)) - (:vel-y (meters 0.005) (meters 0.006666667)) - (:vel-z (meters -0.00083333335) (meters 0.0016666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.00066666666) (meters 0.00033333333)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 6.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 2 32.0) + (:g 64.0 1 64.0) + (:b 32.0 1 32.0) + (:a 64.0 64.0) + (:vel-x (meters -0.00083333335) (meters 0.0016666667)) + (:vel-y (meters 0.005) (meters 0.006666667)) + (:vel-z (meters -0.00083333335) (meters 0.0016666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.00066666666) (meters 0.00033333333)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpart 96 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 0.0 2.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.2) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1)) - (:r 0.0 2.0 64.0) - (:g 64.0 2 64.0) - (:a 96.0 32.0) - (:vel-x (meters -0.00083333335) (meters 0.0016666667)) - (:vel-y (meters 0.005) (meters 0.006666667)) - (:vel-z (meters -0.00083333335) (meters 0.0016666667)) - (:rotvel-z (degrees -2.4) (degrees 4.8)) - (:fade-a -0.42666668) - (:accel-y (meters -0.00066666666) (meters 0.00033333333)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 0.0 2.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.2) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1)) + (:r 0.0 2.0 64.0) + (:g 64.0 2 64.0) + (:a 96.0 32.0) + (:vel-x (meters -0.00083333335) (meters 0.0016666667)) + (:vel-y (meters 0.005) (meters 0.006666667)) + (:vel-z (meters -0.00083333335) (meters 0.0016666667)) + (:rotvel-z (degrees -2.4) (degrees 4.8)) + (:fade-a -0.42666668) + (:accel-y (meters -0.00066666666) (meters 0.00033333333)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpart 2250 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 6.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 196.0 1 64.0) - (:g 196.0 1 64.0) - (:b 196.0 1 64.0) - (:a 64.0 64.0) - (:vel-x (meters -0.00083333335) (meters 0.0016666667)) - (:vel-y (meters 0.005) (meters 0.006666667)) - (:vel-z (meters -0.00083333335) (meters 0.0016666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.00066666666) (meters 0.00033333333)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) - -(defpart 97 - ) - -(defpart 98 - ) - -(defpart 99 - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 6.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 196.0 1 64.0) + (:g 196.0 1 64.0) + (:b 196.0 1 64.0) + (:a 64.0 64.0) + (:vel-x (meters -0.00083333335) (meters 0.0016666667)) + (:vel-y (meters 0.005) (meters 0.006666667)) + (:vel-z (meters -0.00083333335) (meters 0.0016666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.00066666666) (meters 0.00033333333)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) + +(defpart 97) + +(defpart 98) + +(defpart 99) (defpartgroup group-slide-poof-sand :id 26 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 100) (sp-item 101)) - ) + :parts ((sp-item 100) (sp-item 101))) (defpart 100 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0 6.0) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.00006666667)) - (:friction 0.94) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0 6.0) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.00006666667)) + (:friction 0.94) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 101 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 8.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 128.0 2 32.0) - (:g 64.0 1 64.0) - (:b 32.0 1 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.008333334) (meters 0.0033333334)) - (:fade-a -0.42666668) - (:accel-y (meters -0.001) (meters 0.0005)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 8.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 2 32.0) + (:g 64.0 1 64.0) + (:b 32.0 1 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.008333334) (meters 0.0033333334)) + (:fade-a -0.42666668) + (:accel-y (meters -0.001) (meters 0.0005)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-slide-poof-dirt :id 579 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2380) (sp-item 2381)) - ) + :parts ((sp-item 2380) (sp-item 2381))) (defpart 2380 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0 6.0) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.00006666667)) - (:friction 0.94) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0 6.0) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.00006666667)) + (:friction 0.94) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2381 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 8.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 128.0 2 32.0) - (:g 64.0 1 64.0) - (:b 32.0 1 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.008333334) (meters 0.0033333334)) - (:fade-a -0.42666668) - (:accel-y (meters -0.001) (meters 0.0005)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 8.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 2 32.0) + (:g 64.0 1 64.0) + (:b 32.0 1 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.008333334) (meters 0.0033333334)) + (:fade-a -0.42666668) + (:accel-y (meters -0.001) (meters 0.0005)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-slide-poof-grass :id 27 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 102) (sp-item 103)) - ) + :parts ((sp-item 102) (sp-item 103))) (defpart 102 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0 6.0) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 96.0 32.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.00006666667)) - (:friction 0.94) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0 6.0) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 96.0 32.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.00006666667)) + (:friction 0.94) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 103 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 0.0 8.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.15) (meters 0.35)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15)) - (:r 0.0 2.0 64.0) - (:g 64.0 2 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.008333334) (meters 0.0033333334)) - (:rotvel-z (degrees -2.4) (degrees 4.8)) - (:fade-a -0.42666668) - (:accel-y (meters -0.001) (meters 0.0005)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 0.0 8.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.15) (meters 0.35)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15)) + (:r 0.0 2.0 64.0) + (:g 64.0 2 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.008333334) (meters 0.0033333334)) + (:rotvel-z (degrees -2.4) (degrees 4.8)) + (:fade-a -0.42666668) + (:accel-y (meters -0.001) (meters 0.0005)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-slide-poof-stone :id 28 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 104)) - ) + :parts ((sp-item 104))) (defpart 104 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0 6.0) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 16.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.00006666667)) - (:friction 0.94) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0 6.0) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 16.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.00006666667)) + (:friction 0.94) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-slide-poof-pcmetal :id 589 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2382)) - ) + :parts ((sp-item 2382))) (defpart 2382 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0 6.0) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 70.0 32.0) - (:b 40.0 20.0) - (:a 16.0 16.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.00006666667)) - (:friction 0.94) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0 6.0) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 70.0 32.0) + (:b 40.0 20.0) + (:a 16.0 16.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.00006666667)) + (:friction 0.94) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-slide-poof-snow :id 590 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2383)) - ) + :parts ((sp-item 2383))) (defpart 2383 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0 6.0) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 1 64.0) - (:g 196.0 1 64.0) - (:b 196.0 1 64.0) - (:a 16.0 16.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.00006666667)) - (:friction 0.94) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0 6.0) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 1 64.0) + (:g 196.0 1 64.0) + (:b 196.0 1 64.0) + (:a 16.0 16.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.00006666667)) + (:friction 0.94) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-slide-poof-ice :id 591 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2383)) - ) + :parts ((sp-item 2383))) (defpartgroup group-slide-poof-wood :id 29 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 105)) - ) + :parts ((sp-item 105))) (defpart 105 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0 6.0) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 64.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.00006666667)) - (:friction 0.94) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0 6.0) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 64.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.00006666667)) + (:friction 0.94) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-slide-poof-crwood :id 30 :duration (seconds 0.017) :linger-duration (seconds 2.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 105)) - ) + :parts ((sp-item 105))) (defpart 106 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 8.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 128.0 2 32.0) - (:g 64.0 1 64.0) - (:b 32.0 1 32.0) - (:a 64.0 64.0) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 8.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 2 32.0) + (:g 64.0 1 64.0) + (:b 32.0 1 32.0) + (:a 64.0 64.0) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpart 2265 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 8.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 128.0 2 32.0) - (:g 64.0 1 64.0) - (:b 32.0 1 32.0) - (:a 64.0 64.0) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 8.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 128.0 2 32.0) + (:g 64.0 1 64.0) + (:b 32.0 1 32.0) + (:a 64.0 64.0) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpart 2262 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 8.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 196.0 1 64.0) - (:g 196.0 1 64.0) - (:b 196.0 1 64.0) - (:a 64.0 64.0) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 8.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 196.0 1 64.0) + (:g 196.0 1 64.0) + (:b 196.0 1 64.0) + (:a 64.0 64.0) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpart 107 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 0.0 8.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.15) (meters 0.35)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15)) - (:r 0.0 2.0 64.0) - (:g 64.0 2 64.0) - (:a 64.0 64.0) - (:rotvel-z (degrees -2.4) (degrees 4.8)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 0.0 8.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.15) (meters 0.35)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15)) + (:r 0.0 2.0 64.0) + (:g 64.0 2 64.0) + (:a 64.0 64.0) + (:rotvel-z (degrees -2.4) (degrees 4.8)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpartgroup group-dark-eco-death :id 31 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 295 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2095 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2096 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) - (sp-item 2097 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 295 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2095 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2096 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) + (sp-item 2097 :period (seconds 2) :length (seconds 0.067)))) (defpartgroup group-lava-death :id 32 :duration (seconds 0.25) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2003) (sp-item 2004) (sp-item 2005) (sp-item 2006)) - ) + :parts ((sp-item 2003) (sp-item 2004) (sp-item 2005) (sp-item 2006))) (defpartgroup group-burn-death :id 708 :duration (seconds 0.5) :linger-duration (seconds 2) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2003)) - ) + :parts ((sp-item 2003))) (defpart 2006 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0 16.0) - (:scale-x (meters 0.2) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:vel-y (meters 0.013333334) (meters 0.04)) - (:scalevel-x (meters -0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 1.2)) - (:flags (bit0 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0 16.0) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:vel-y (meters 0.013333334) (meters 0.04)) + (:scalevel-x (meters -0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1.2)) + (:flags (bit0 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1)))) (defpart 2003 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 5.0) - (:x (meters 0) (meters 0.5)) - (:y (meters 0) (meters 3)) - (:scale-x (meters 1) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:scalevel-x (meters 0.023529412)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.5058824) - (:friction 0.98) - (:timer (seconds 0.27)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 5.0) + (:x (meters 0) (meters 0.5)) + (:y (meters 0) (meters 3)) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:scalevel-x (meters 0.023529412)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.5058824) + (:friction 0.98) + (:timer (seconds 0.27)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2004 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 32.0) - (:x (meters 0.5) (meters 2)) - (:y (meters 0.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0) (meters 0.0016666667)) - (:scalevel-x (meters 0.04444444)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:friction 0.98) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 32.0) + (:x (meters 0.5) (meters 2)) + (:y (meters 0.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0) (meters 0.0016666667)) + (:scalevel-x (meters 0.04444444)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:friction 0.98) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2005 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters -1) (meters 2)) - (:y (meters 0) (meters 3)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.008888889)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.56666666) - (:fade-g -0.56666666) - (:fade-b -0.56666666) - (:fade-a 0.15) - (:friction 0.97) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.27) (seconds 0.267)) - (:next-launcher 2007) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters -1) (meters 2)) + (:y (meters 0) (meters 3)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.008888889)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.56666666) + (:fade-g -0.56666666) + (:fade-b -0.56666666) + (:fade-a 0.15) + (:friction 0.97) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.27) (seconds 0.267)) + (:next-launcher 2007) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2007 - :init-specs ((:fade-a -0.08)) - ) + :init-specs ((:fade-a -0.08))) (defpart 2002 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 1.5) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 32.0 32.0) - (:b 32.0 32.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:friction 0.98) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.05) (seconds 0.197)) - (:next-launcher 2008) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 32.0 32.0) + (:b 32.0 32.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:friction 0.98) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.05) (seconds 0.197)) + (:next-launcher 2008))) (defpart 2008 - :init-specs ((:fade-a -0.28444445)) - ) + :init-specs ((:fade-a -0.28444445))) (defbehavior process-drawable-burn-effect target ((arg0 time-frame)) (sound-play "get-burned") (let ((s5-1 (new 'stack 'rgbaf)) (s3-0 (current-time)) - (s4-1 (-> self parent)) - ) + (s4-1 (-> self parent))) (set! (-> s5-1 quad) (-> (the-as process-drawable (-> s4-1 0)) draw color-mult quad)) (let ((s2-1 (vector-float*! (the-as vector (new 'stack 'rgbaf)) (the-as vector s5-1) 0.0))) (while (not (time-elapsed? s3-0 arg0)) (let ((v1-8 (- (current-time) s3-0))) (if (< v1-8 (/ arg0 2)) - (vector-lerp! - (-> (the-as process-drawable (-> s4-1 0)) draw color-mult) - s5-1 - s2-1 - (/ (the float v1-8) (the float arg0)) - ) - (vector-lerp! - (-> (the-as process-drawable (-> s4-1 0)) draw color-mult) - s5-1 - s2-1 - (- 1.0 (/ (the float v1-8) (the float arg0))) - ) - ) - ) - (let ((a2-3 (process-drawable-random-point! - (the-as process-drawable (ppointer->process s4-1)) - (new 'stack-no-clear 'vector) - ) - ) - ) - (launch-particles (-> *part-id-table* 2002) a2-3) - ) + (vector-lerp! (-> (the-as process-drawable (-> s4-1 0)) draw color-mult) + s5-1 + s2-1 + (/ (the float v1-8) (the float arg0))) + (vector-lerp! (-> (the-as process-drawable (-> s4-1 0)) draw color-mult) + s5-1 + s2-1 + (- 1.0 (/ (the float v1-8) (the float arg0)))))) + (let ((a2-3 (process-drawable-random-point! (the-as process-drawable (ppointer->process s4-1)) (new 'stack-no-clear 'vector)))) + (launch-particles (-> *part-id-table* 2002) a2-3)) (suspend) - 0 - ) - ) - (set! (-> (the-as process-drawable (-> s4-1 0)) draw color-mult quad) (-> s5-1 quad)) - ) - (none) - ) + 0)) + (set! (-> (the-as process-drawable (-> s4-1 0)) draw color-mult quad) (-> s5-1 quad))) + (none)) (defpart 2391 - :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x2)) - (:birth-func 'birth-func-target-orient) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 110.0 32.0) - (:g 128.0 32.0) - (:b 96.0 32.0) - (:a 8.0 40.0) - (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.2) - (:timer (seconds 0.8)) - (:flags (bit2 bit3 bit14)) - (:userdata -8192.0) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xa :page #x2)) + (:birth-func 'birth-func-target-orient) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 110.0 32.0) + (:g 128.0 32.0) + (:b 96.0 32.0) + (:a 8.0 40.0) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.2) + (:timer (seconds 0.8)) + (:flags (bit2 bit3 bit14)) + (:userdata -8192.0))) (defpartgroup group-part-first-person-hud-left :id 611 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2474 :flags (launch-asap))) - ) + :parts ((sp-item 2474 :flags (launch-asap)))) (defpartgroup group-part-first-person-hud-right :id 612 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2475 :flags (launch-asap))) - ) + :parts ((sp-item 2475 :flags (launch-asap)))) (defpartgroup group-part-first-person-hud-selector :id 613 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2476 :flags (launch-asap))) - ) + :parts ((sp-item 2476 :flags (launch-asap)))) (defpart 2474 - :init-specs ((:texture (new 'static 'texture-id :page #x408)) - (:num 1.0) - (:scale-x (meters 3.5)) - (:scale-y (meters 13)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-first-person-hud-left-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x408)) + (:num 1.0) + (:scale-x (meters 3.5)) + (:scale-y (meters 13)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-first-person-hud-left-func))) (defpart 2475 - :init-specs ((:texture (new 'static 'texture-id :page #x408)) - (:num 1.0) - (:scale-x (meters 3.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 13)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-first-person-hud-right-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x408)) + (:num 1.0) + (:scale-x (meters 3.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 13)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-first-person-hud-right-func))) (defpart 2476 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x408)) - (:num 1.0) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:func 'part-first-person-hud-selector-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x408)) + (:num 1.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:func 'part-first-person-hud-selector-func))) diff --git a/goal_src/jak1/engine/target/target-util.gc b/goal_src/jak1/engine/target/target-util.gc index 589cf5db06..923c42d318 100644 --- a/goal_src/jak1/engine/target/target-util.gc +++ b/goal_src/jak1/engine/target/target-util.gc @@ -1,235 +1,233 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/anim/joint.gc") (require "engine/collide/collide-shape.gc") (require "engine/gfx/shadow/shadow-cpu-h.gc") (require "engine/common-obs/process-drawable-h.gc") - -;; name: target-util.gc -;; name in dgo: target-util -;; dgos: GAME, ENGINE - (define-extern target-collide-set! (function symbol float int :behavior target)) ;; DECOMP BEGINS -(defskelgroup *jchar-sg* eichar eichar-lod0-jg -1 - ((eichar-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 3) - :longest-edge (meters 1) - :shadow eichar-shadow-mg - :texture-level 2 - :sort 1 - ) +(defskelgroup *jchar-sg* + eichar + eichar-lod0-jg + -1 + ((eichar-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 3) + :longest-edge (meters 1) + :shadow eichar-shadow-mg + :texture-level 2 + :sort 1) (define *target-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade) - :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 + :flags (shadow-flags disable-fade) + :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) - ((jump-collide-offset meters) - (jump-height-min meters) - (jump-height-max meters) - (double-jump-height-min meters) - (double-jump-height-max meters) - (flip-jump-height-min meters) - (flip-jump-height-max meters) - (duck-jump-height-min meters) - (duck-jump-height-max meters) - (flop-jump-height-min meters) - (flop-jump-height-max meters) - (attack-jump-height-min meters) - (attack-jump-height-max meters) - (edge-grab-jump-height-min meters) - (edge-grab-jump-height-max meters) - (swim-jump-height-min meters) - (swim-jump-height-max meters) - (tube-jump-height-min meters) - (tube-jump-height-max meters) - (wheel-duration time-frame) - (wheel-jump-pre-window time-frame) - (wheel-jump-post-window time-frame) - (wheel-timeout time-frame) - (wheel-speed-min meters) - (wheel-speed-inc meters) - (wheel-flip-duration time-frame) - (wheel-flip-height meters) - (wheel-flip-dist meters) - (wheel-flip-art-height meters) - (wheel-flip-art-dist meters) - (duck-slide-distance meters) - (fall-far meters) - (fall-far-inc meters) - (attack-timeout time-frame) - (ground-timeout time-frame) - (slide-down-timeout time-frame) - (fall-timeout time-frame) - (fall-stumble-threshold meters) - (yellow-projectile-speed meters) - (hit-invulnerable-timeout time-frame) - (run-cycle-length float) - (walk-cycle-dist meters) - (walk-up-cycle-dist meters) - (walk-down-cycle-dist meters) - (walk-side-cycle-dist meters) - (run-cycle-dist meters) - (run-up-cycle-dist meters) - (run-down-cycle-dist meters) - (run-side-cycle-dist meters) - (run-wall-cycle-dist meters) - (duck-walk-cycle-dist meters) - (wade-shallow-walk-cycle-dist meters) - (wade-deep-walk-cycle-dist meters) - (smack-surface-dist meters) - (smack-surface-height meters) - (min-dive-depth meters) - (root-radius meters) - (root-offset vector :inline) - (body-radius meters) - (edge-radius meters) - (edge-offset vector :inline) - (head-radius meters) - (head-height meters) - (head-offset vector :inline) - (spin-radius meters) - (spin-offset vector :inline) - (duck-spin-radius meters) - (duck-spin-offset vector :inline) - (punch-radius meters) - (punch-offset vector :inline) - (uppercut-radius meters) - (uppercut0-offset vector :inline) - (uppercut1-offset vector :inline) - (flop-radius meters) - (flop0-offset vector :inline) - (flop1-offset vector :inline) - (stuck-time seconds) - (stuck-timeout seconds) - (stuck-distance meters) - (tongue-pull-speed-min float) - (tongue-pull-speed-max float) - (yellow-attack-timeout time-frame) - ) - ) - - -(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) - :double-jump-height-max (meters 2.5) - :flip-jump-height-min (meters 5) - :flip-jump-height-max (meters 7) - :duck-jump-height-min (meters 5) - :duck-jump-height-max (meters 7) - :flop-jump-height-min (meters 5) - :flop-jump-height-max (meters 7) - :attack-jump-height-min (meters 4) - :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) - :swim-jump-height-max (meters 5) - :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) - :fall-far-inc (meters 20) - :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) - :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) - :run-down-cycle-dist (meters 5) - :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) - :wade-deep-walk-cycle-dist (meters 6) - :smack-surface-dist (meters 1.25) - :min-dive-depth (meters 2) - :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) - :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) - ) - ) + ((jump-collide-offset meters) + (jump-height-min meters) + (jump-height-max meters) + (double-jump-height-min meters) + (double-jump-height-max meters) + (flip-jump-height-min meters) + (flip-jump-height-max meters) + (duck-jump-height-min meters) + (duck-jump-height-max meters) + (flop-jump-height-min meters) + (flop-jump-height-max meters) + (attack-jump-height-min meters) + (attack-jump-height-max meters) + (edge-grab-jump-height-min meters) + (edge-grab-jump-height-max meters) + (swim-jump-height-min meters) + (swim-jump-height-max meters) + (tube-jump-height-min meters) + (tube-jump-height-max meters) + (wheel-duration time-frame) + (wheel-jump-pre-window time-frame) + (wheel-jump-post-window time-frame) + (wheel-timeout time-frame) + (wheel-speed-min meters) + (wheel-speed-inc meters) + (wheel-flip-duration time-frame) + (wheel-flip-height meters) + (wheel-flip-dist meters) + (wheel-flip-art-height meters) + (wheel-flip-art-dist meters) + (duck-slide-distance meters) + (fall-far meters) + (fall-far-inc meters) + (attack-timeout time-frame) + (ground-timeout time-frame) + (slide-down-timeout time-frame) + (fall-timeout time-frame) + (fall-stumble-threshold meters) + (yellow-projectile-speed meters) + (hit-invulnerable-timeout time-frame) + (run-cycle-length float) + (walk-cycle-dist meters) + (walk-up-cycle-dist meters) + (walk-down-cycle-dist meters) + (walk-side-cycle-dist meters) + (run-cycle-dist meters) + (run-up-cycle-dist meters) + (run-down-cycle-dist meters) + (run-side-cycle-dist meters) + (run-wall-cycle-dist meters) + (duck-walk-cycle-dist meters) + (wade-shallow-walk-cycle-dist meters) + (wade-deep-walk-cycle-dist meters) + (smack-surface-dist meters) + (smack-surface-height meters) + (min-dive-depth meters) + (root-radius meters) + (root-offset vector :inline) + (body-radius meters) + (edge-radius meters) + (edge-offset vector :inline) + (head-radius meters) + (head-height meters) + (head-offset vector :inline) + (spin-radius meters) + (spin-offset vector :inline) + (duck-spin-radius meters) + (duck-spin-offset vector :inline) + (punch-radius meters) + (punch-offset vector :inline) + (uppercut-radius meters) + (uppercut0-offset vector :inline) + (uppercut1-offset vector :inline) + (flop-radius meters) + (flop0-offset vector :inline) + (flop1-offset vector :inline) + (stuck-time seconds) + (stuck-timeout seconds) + (stuck-distance meters) + (tongue-pull-speed-min float) + (tongue-pull-speed-max float) + (yellow-attack-timeout time-frame))) + +(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) + :double-jump-height-max (meters 2.5) + :flip-jump-height-min (meters 5) + :flip-jump-height-max (meters 7) + :duck-jump-height-min (meters 5) + :duck-jump-height-max (meters 7) + :flop-jump-height-min (meters 5) + :flop-jump-height-max (meters 7) + :attack-jump-height-min (meters 4) + :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) + :swim-jump-height-max (meters 5) + :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) + :fall-far-inc (meters 20) + :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) + :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) + :run-down-cycle-dist (meters 5) + :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) + :wade-deep-walk-cycle-dist (meters 6) + :smack-surface-dist (meters 1.25) + :min-dive-depth (meters 2) + :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) + :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) (set! (-> self control unknown-dword51) 0) 0 - (none) - ) + (none)) (defbehavior target-danger-set! target ((arg0 symbol) (arg1 symbol)) (let ((s4-0 (-> self control unknown-sphere00)) (s5-0 (-> self control unknown-sphere01)) (gp-0 (-> self control unknown-sphere02)) - (f30-0 (if arg1 - 2.0 - 1.0 - ) - ) - ) + (f30-0 (if arg1 2.0 1.0))) (dotimes (v1-4 3) - (set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) (collide-offense normal-attack)) - ) - (sphere<-vector+r! - (the-as sphere (-> self control root-prim local-sphere)) - (-> *TARGET-bank* root-offset) - (-> *TARGET-bank* root-radius) - ) + (set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) (collide-offense normal-attack))) + (sphere<-vector+r! (the-as sphere (-> self control root-prim local-sphere)) + (-> *TARGET-bank* root-offset) + (-> *TARGET-bank* root-radius)) (set! (-> self control unknown-symbol30) arg0) (logclear! (-> self state-flags) (state-flags dangerous)) (set! (-> s4-0 transform-index) -2) @@ -250,252 +248,167 @@ (case arg0 (('harmless #f) (set! (-> self control unknown-symbol30) #f) - (target-collide-set! (-> self control unknown-symbol00) (-> self control unknown-float90)) - ) + (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 - ) + (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) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* spin-offset) - (-> *TARGET-bank* spin-radius) - ) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* spin-offset) (-> *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 - ) + (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) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* duck-spin-offset) - (-> *TARGET-bank* duck-spin-radius) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* duck-spin-offset) + (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s5-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) - (set! (-> s5-0 transform-index) 32) - ) + (set! (-> s5-0 transform-index) 32)) (('duck-slide) (logior! (-> self state-flags) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* duck-spin-offset) - (-> *TARGET-bank* duck-spin-radius) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* duck-spin-offset) + (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s5-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) - (set! (-> s5-0 transform-index) 28) - ) + (set! (-> s5-0 transform-index) 28)) (('wheel-solid) (logior! (-> self state-flags) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (dotimes (v1-57 3) - (set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) (collide-offense touch)) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* duck-spin-offset) - (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) - ) + (set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) (collide-offense touch))) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* duck-spin-offset) + (+ 819.2 (-> *TARGET-bank* duck-spin-radius))) (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s5-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 7) - (set! (-> self control unknown-symbol30) 'roll) - ) + (set! (-> self control unknown-symbol30) 'roll)) (('flip) (logior! (-> self state-flags) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (dotimes (v1-71 3) - (set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) (collide-offense touch)) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* duck-spin-offset) - (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) - ) + (set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) (collide-offense touch))) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* duck-spin-offset) + (+ 819.2 (-> *TARGET-bank* duck-spin-radius))) (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s5-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 7) - (set! (-> self control unknown-symbol30) 'flip) - ) + (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 - ) + (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) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* punch-offset) - (-> *TARGET-bank* punch-radius) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* punch-offset) + (-> *TARGET-bank* punch-radius)) (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s5-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* punch-radius)) - (set! (-> s5-0 transform-index) 22) - ) + (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 - ) + (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) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* uppercut0-offset) - (-> *TARGET-bank* uppercut-radius) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* uppercut0-offset) + (-> *TARGET-bank* uppercut-radius)) (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s5-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* uppercut-radius)) (set! (-> s5-0 transform-index) 22) (set! (-> gp-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> gp-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> gp-0 local-sphere)) - (-> *TARGET-bank* uppercut1-offset) - (-> *TARGET-bank* uppercut-radius) - ) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> gp-0 local-sphere)) + (-> *TARGET-bank* uppercut1-offset) + (-> *TARGET-bank* uppercut-radius))) (('flop) (logior! (-> self state-flags) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (dotimes (v1-114 3) - (set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) (collide-offense strong-attack)) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* flop0-offset) - (-> *TARGET-bank* flop-radius) - ) + (set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) (collide-offense strong-attack))) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* flop0-offset) + (-> *TARGET-bank* flop-radius)) (set! f30-0 1.0) - (set! (-> self control unknown-symbol30) 'flop) - ) + (set! (-> self control unknown-symbol30) 'flop)) (('flop-down) (logior! (-> self state-flags) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) (dotimes (v1-124 3) - (set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) (collide-offense strong-attack)) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* flop0-offset) - (-> *TARGET-bank* flop-radius) - ) + (set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) (collide-offense strong-attack))) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* flop0-offset) + (-> *TARGET-bank* flop-radius)) (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s5-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - (-> *TARGET-bank* flop1-offset) - (-> *TARGET-bank* flop-radius) - ) - (if (!= f30-0 1.0) - (set! f30-0 2.1) - ) - (set! (-> self control unknown-symbol30) 'flop) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) + (-> *TARGET-bank* flop1-offset) + (-> *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 - ) + (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) (state-flags dangerous)) (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s4-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> s4-0 local-sphere)) - (-> *TARGET-bank* spin-offset) - (+ 2048.0 (-> *TARGET-bank* punch-radius)) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) + (-> *TARGET-bank* spin-offset) + (+ 2048.0 (-> *TARGET-bank* punch-radius))) (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) (set! (-> s5-0 collide-with) - (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) - ) - (sphere<-vector+r! - (the-as sphere (-> s5-0 local-sphere)) - *null-vector* - (+ 1228.8 (-> *TARGET-bank* punch-radius)) - ) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)) + (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (+ 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) (collide-offense strong-attack)) - ) - ) - (else - (format 0 "ERROR: ~A unknown danger mode ~A" self arg0) - ) - ) + (set! (-> self control unknown-sphere-array00 v1-148 prim-core offense) (collide-offense strong-attack)))) + (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)) - (set! (-> gp-0 local-sphere w) (* (-> gp-0 local-sphere w) f30-0)) - ) - ) - ) + (set! (-> gp-0 local-sphere w) (* (-> gp-0 local-sphere w) f30-0))))) (defbehavior target-collide-set! target ((arg0 symbol) (arg1 float)) (let ((gp-0 (-> self control))) @@ -503,8 +416,7 @@ (set! (-> self control unknown-float90) arg1) (dotimes (v1-2 3) (set! (-> gp-0 unknown-sphere-array00 v1-2 prim-core offense) (collide-offense touch)) - (set! (-> gp-0 unknown-sphere-array00 v1-2 transform-index) -2) - ) + (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)) @@ -512,147 +424,96 @@ (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) - ) + (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 - ) + (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) (collide-offense strong-attack)) - ) - ) + (set! (-> gp-0 unknown-sphere-array00 v1-22 prim-core offense) (collide-offense strong-attack)))) (('flut) - (sphere<-vector+r! - (the-as sphere (-> gp-0 root-prim local-sphere)) - (new 'static 'vector :y 8192.0 :w 1.0) - 12288.0 - ) + (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) - ) + (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) - ) - ) - ) + (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) - ) - ) + (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) (collide-offense strong-attack)) - ) - ) + (set! (-> gp-0 unknown-sphere-array00 v1-52 prim-core offense) (collide-offense strong-attack)))) (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 - ) + (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) (defmethod get-quaternion ((this control-info)) - (-> this unknown-quaternion00) - ) + (-> this unknown-quaternion00)) (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 apply-alignment ((this target) (arg0 align-opts) (arg1 transformq) (arg2 vector)) (let ((s2-0 (new 'stack-no-clear 'vector))) @@ -662,61 +523,31 @@ (let* ((s3-0 (-> this control unknown-matrix01)) (s0-0 (-> this control unknown-matrix00)) (s1-0 (vector-matrix*! (new 'stack-no-clear 'vector) (-> this control dynam gravity) s0-0)) - (a1-3 (vector-matrix*! (new 'stack-no-clear 'vector) (-> this control transv) s0-0)) - ) - (if (logtest? arg0 (align-opts no-gravity)) - (set-vector! s1-0 0.0 0.0 0.0 1.0) - ) + (a1-3 (vector-matrix*! (new 'stack-no-clear 'vector) (-> this control transv) s0-0))) + (if (logtest? arg0 (align-opts no-gravity)) (set-vector! s1-0 0.0 0.0 0.0 1.0)) (when (logtest? arg0 (align-opts adjust-x-vel)) (set! (-> a1-3 x) - (+ (* (-> arg1 trans x) (-> s2-0 x) (-> *display* frames-per-second)) (* (-> s1-0 x) (seconds-per-frame))) - ) - (if (not (logtest? arg0 (align-opts adjust-xz-vel keep-other-velocities))) - (set! (-> a1-3 z) 0.0) - ) - ) + (+ (* (-> arg1 trans x) (-> s2-0 x) (-> *display* frames-per-second)) (* (-> s1-0 x) (seconds-per-frame)))) + (if (not (logtest? arg0 (align-opts adjust-xz-vel keep-other-velocities))) (set! (-> a1-3 z) 0.0))) (if (and (logtest? arg0 (align-opts adjust-y-vel)) - (not (and (logtest? arg0 (align-opts ignore-y-if-zero)) (= (-> arg1 trans y) 0.0))) - ) - (set! (-> a1-3 y) - (+ (* (-> arg1 trans y) (-> s2-0 y) (-> *display* frames-per-second)) (* (-> s1-0 y) (seconds-per-frame))) - ) - ) + (not (and (logtest? arg0 (align-opts ignore-y-if-zero)) (= (-> arg1 trans y) 0.0)))) + (set! (-> a1-3 y) + (+ (* (-> arg1 trans y) (-> s2-0 y) (-> *display* frames-per-second)) (* (-> s1-0 y) (seconds-per-frame))))) (when (logtest? arg0 (align-opts adjust-xz-vel)) (set! (-> a1-3 z) - (+ (* (-> arg1 trans z) (-> s2-0 z) (-> *display* frames-per-second)) (* (-> s1-0 z) (seconds-per-frame))) - ) - (if (not (logtest? arg0 (align-opts adjust-x-vel keep-other-velocities))) - (set! (-> a1-3 x) 0.0) - ) - ) - (vector-matrix*! (-> this control transv) a1-3 s3-0) - ) - ) - ) + (+ (* (-> arg1 trans z) (-> s2-0 z) (-> *display* frames-per-second)) (* (-> s1-0 z) (seconds-per-frame)))) + (if (not (logtest? arg0 (align-opts adjust-x-vel keep-other-velocities))) (set! (-> a1-3 x) 0.0))) + (vector-matrix*! (-> this control transv) a1-3 s3-0)))) (if (logtest? arg0 (align-opts adjust-quat)) - (quaternion-normalize! - (quaternion*! (-> this control unknown-quaternion00) (-> this control unknown-quaternion00) (-> arg1 quat)) - ) - ) - (the-as collide-shape (-> this control)) - ) + (quaternion-normalize! (quaternion*! (-> this control unknown-quaternion00) (-> this control unknown-quaternion00) (-> arg1 quat)))) + (the-as collide-shape (-> this 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)) - 0.0 - ) - ) - ) - ) - (* 0.125 f30-0) - ) - ) + (fabs (deg-diff (atan (-> arg0 control unknown-vector-array00 s5-0 x) (-> arg0 control unknown-vector-array00 s5-0 z)) 0.0)))) + (* 0.125 f30-0))) (defbehavior can-play-stance-amibent? target () (and (time-elapsed? (-> self state-time) (seconds 30)) @@ -725,94 +556,56 @@ (not (-> *setting-control* current movie)) (not (-> *setting-control* current hint)) (not (logtest? (-> self control status) (cshape-moving-flags t-act))) - (not (logtest? (-> self water flags) (water-flags wt09))) - ) - ) + (not (logtest? (-> self water flags) (water-flags wt09))))) (defbehavior can-jump? target ((arg0 symbol)) (and (or (logtest? (-> self control status) (cshape-moving-flags onsurf)) (not (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout))) - (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (< 0.866 (-> self control surface-angle)) - ) - ) + (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) (< 0.866 (-> self control surface-angle)))) (and (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-jump))) (not (logtest? (-> self state-flags) (state-flags prevent-jump))) (case arg0 - (('target-wheel-flip) - (>= 0.5 (-> self control unknown-float61)) - ) - (else - #t - ) - ) - ) - ) - ) + (('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 () - (- (-> self control trans y) (-> self control shadow-pos y)) - ) + (- (-> self control trans y) (-> self control shadow-pos y))) (defbehavior fall-test target () (when (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout)) (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) (let ((v1-15 (ja-group))) - (or (not (or (= v1-15 eichar-attack-punch-ja) - (= v1-15 eichar-attack-punch-end-ja) - (= v1-15 eichar-attack-punch-alt-end-ja) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) + (or (not (or (= v1-15 eichar-attack-punch-ja) (= v1-15 eichar-attack-punch-end-ja) (= v1-15 eichar-attack-punch-alt-end-ja))) + (< 4096.0 (target-height-above-ground))))) (when (and (not (time-elapsed? (-> self control rider-time) (-> *TARGET-bank* ground-timeout))) - (logtest? (-> self control unknown-surface01 flags) (surface-flags moving-ground)) - ) + (logtest? (-> self control unknown-surface01 flags) (surface-flags moving-ground))) (+! (-> 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) - ) + (+! (-> self control transv z) (-> self control rider-last-move z))) + (go target-falling #f)) + (none)) (defbehavior slide-down-test target () (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf csmf07))) (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout)) (logtest? (-> self control status) (cshape-moving-flags tsurf)) - (< 0.5 (-> self control surface-angle)) - ) - (go target-slide-down) - ) - (none) - ) + (< 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) (cshape-moving-flags twall)) - (or arg0 (not (logtest? (-> self control status) (cshape-moving-flags t-act)))) - ) - ) - ) + (or arg0 (not (logtest? (-> self control status) (cshape-moving-flags t-act))))))) (defbehavior can-wheel? target () (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (or (not (logtest? (-> self control status) (cshape-moving-flags twall))) - (>= 0.7 (-> self control touch-angle)) - ) - (and (< (-> self control unknown-float61) 0.7) - (not (logtest? (-> self state-flags) (state-flags prevent-duck))) - ) - ) - ) + (or (not (logtest? (-> self control status) (cshape-moving-flags twall))) (>= 0.7 (-> self control touch-angle))) + (and (< (-> self control unknown-float61) 0.7) (not (logtest? (-> self state-flags) (state-flags prevent-duck)))))) (defbehavior can-duck? target () (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) @@ -820,148 +613,94 @@ (not (logtest? (-> self water flags) (water-flags wt11 wt12))) (not (logtest? (-> self state-flags) (state-flags prevent-duck))) (or (not (logtest? (-> self water flags) (water-flags wt10))) - (< (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6) - ) - ) - ) + (< (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 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) - ) + ((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) s5-0) - ) + (set! (-> gp-0 spheres) 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) (new 'static 'pat-surface :noentity #x1)) (set! (-> gp-0 solid-only) #t) - (if (fill-and-probe-using-spheres *collide-cache* gp-0) - #f - #t - ) - ) - ) + (if (fill-and-probe-using-spheres *collide-cache* gp-0) #f #t))) (defbehavior can-hands? target ((arg0 symbol)) (cond ((or (not (cpad-pressed? (-> self control unknown-cpad-info00 number) square)) (or (and (logtest? (-> self state-flags) (state-flags prevent-attack)) (or (not (logtest? (-> self state-flags) (state-flags remove-prevents))) - (not (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0))) - ) - ) - (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) - ) - ) - #f - ) - ((and (or (not arg0) (and (not (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout))) - (< (-> self control unknown-float61) 0.7) - ) - ) - (time-elapsed? - (if (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) - (-> *TARGET-bank* yellow-attack-timeout) - (-> *TARGET-bank* attack-timeout) - ) - (-> self control unknown-dword31) - ) - ) - #t - ) - (else - (set-time! (-> self control unknown-dword32)) - #f - ) - ) - ) + (not (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0))))) + (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)))) + #f) + ((and (or (not arg0) + (and (not (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout))) + (< (-> self control unknown-float61) 0.7))) + (time-elapsed? (if (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) + (-> *TARGET-bank* yellow-attack-timeout) + (-> *TARGET-bank* attack-timeout)) + (-> self control unknown-dword31))) + #t) + (else (set-time! (-> self control unknown-dword32)) #f))) (defbehavior can-feet? target () (cond ((or (logtest? (-> self state-flags) (state-flags prevent-attack)) - (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf09)) - ) - #f - ) - ((time-elapsed? (-> *TARGET-bank* attack-timeout) (-> self control unknown-dword33)) - #t - ) - (else - (set-time! (-> self control unknown-dword34)) - #f - ) - ) - ) + (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf09))) + #f) + ((time-elapsed? (-> *TARGET-bank* attack-timeout) (-> self control unknown-dword33)) #t) + (else (set-time! (-> self control unknown-dword34)) #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+! arg0 arg0 s5-0))) (defbehavior move-forward target ((arg0 float)) (let ((a1-0 (new-stack-vector0)) - (gp-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) - ) - ) + (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)) (set! (-> gp-0 z) arg0) (set! (-> gp-0 x) 0.0) - (vector-matrix*! (-> self control transv) gp-0 (-> self control unknown-matrix01)) - ) - ) + (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))) - ) + (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)) - ) - ) - ) - ) + (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)))))) 0 - (none) - ) + (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)) (set! (-> gp-0 x) arg0) (set! (-> gp-0 z) 0.0) - (vector-matrix*! (-> self control transv) gp-0 (-> self control unknown-matrix01)) - ) - ) + (vector-matrix*! (-> self control transv) gp-0 (-> self control unknown-matrix01)))) (defun target-timed-invulnerable ((arg0 time-frame) (arg1 target)) (logior! (-> arg1 state-flags) (state-flags timed-invulnerable)) @@ -969,104 +708,51 @@ (set! (-> arg1 control unknown-dword81) arg0) (set-collide-kinds (-> arg1 control) 2 (collide-kind target-attack) (collide-kind)) 0 - (none) - ) + (none)) (defun target-timed-invulnerable-off ((arg0 target)) (logclear! (-> arg0 draw status) (draw-status hidden)) (logclear! (-> arg0 state-flags) (state-flags timed-invulnerable)) (set-collide-kinds (-> arg0 control) 2 (collide-kind) (collide-kind target-attack)) 0 - (none) - ) + (none)) (defmethod combine! ((this attack-info) (arg0 attack-info)) (with-pp (let ((s4-0 (-> arg0 mask))) (set! (-> this mask) (-> arg0 mask)) - (if (logtest? s4-0 (attack-mask attacker)) - (set! (-> this attacker) (-> arg0 attacker)) - ) - (if (logtest? s4-0 (attack-mask mode)) - (set! (-> this mode) (-> arg0 mode)) - ) - (if (logtest? s4-0 (attack-mask angle)) - (set! (-> this angle) (-> arg0 angle)) - ) - (if (logtest? s4-0 (attack-mask dist)) - (set! (-> this dist) (-> arg0 dist)) - ) - (if (logtest? s4-0 (attack-mask control)) - (set! (-> this control) (-> arg0 control)) - ) - (if (logtest? s4-0 (attack-mask speed)) - (set! (-> this speed) (-> arg0 speed)) - ) - (if (logtest? s4-0 (attack-mask shove-back)) - (set! (-> this shove-back) (-> arg0 shove-back)) - ) - (if (logtest? s4-0 (attack-mask shove-up)) - (set! (-> this shove-up) (-> arg0 shove-up)) - ) - (if (logtest? s4-0 (attack-mask invinc-time)) - (set! (-> this invinc-time) (-> arg0 invinc-time)) - ) - (if (logtest? s4-0 (attack-mask rotate-to)) - (set! (-> this rotate-to) (-> arg0 rotate-to)) - ) - (if (logtest? s4-0 (attack-mask intersection)) - (set! (-> this intersection quad) (-> arg0 intersection quad)) - ) + (if (logtest? s4-0 (attack-mask attacker)) (set! (-> this attacker) (-> arg0 attacker))) + (if (logtest? s4-0 (attack-mask mode)) (set! (-> this mode) (-> arg0 mode))) + (if (logtest? s4-0 (attack-mask angle)) (set! (-> this angle) (-> arg0 angle))) + (if (logtest? s4-0 (attack-mask dist)) (set! (-> this dist) (-> arg0 dist))) + (if (logtest? s4-0 (attack-mask control)) (set! (-> this control) (-> arg0 control))) + (if (logtest? s4-0 (attack-mask speed)) (set! (-> this speed) (-> arg0 speed))) + (if (logtest? s4-0 (attack-mask shove-back)) (set! (-> this shove-back) (-> arg0 shove-back))) + (if (logtest? s4-0 (attack-mask shove-up)) (set! (-> this shove-up) (-> arg0 shove-up))) + (if (logtest? s4-0 (attack-mask invinc-time)) (set! (-> this invinc-time) (-> arg0 invinc-time))) + (if (logtest? s4-0 (attack-mask rotate-to)) (set! (-> this rotate-to) (-> arg0 rotate-to))) + (if (logtest? s4-0 (attack-mask intersection)) (set! (-> this intersection quad) (-> arg0 intersection quad))) (cond ((not (logtest? s4-0 (attack-mask vector))) (let* ((s3-0 pp) (s2-0 (handle->process (-> this attacker))) - (v1-39 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) - s2-0 - ) - ) - ) + (v1-39 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) s2-0))) (when v1-39 (set! (-> this trans quad) (-> (the-as process-drawable v1-39) root trans quad)) - (vector-! - (-> this vector) - (-> (the-as process-drawable s3-0) root trans) - (-> (the-as process-drawable v1-39) root trans) - ) - (logior! (-> this mask) (attack-mask vector)) - ) - ) - ) + (vector-! (-> this vector) + (-> (the-as process-drawable s3-0) root trans) + (-> (the-as process-drawable v1-39) root trans)) + (logior! (-> this mask) (attack-mask vector))))) (else - (let* ((s3-1 (handle->process (-> this attacker))) - (a0-16 (if (and (nonzero? s3-1) (type-type? (-> s3-1 type) process-drawable)) - s3-1 - ) - ) - ) - (if a0-16 - (set! (-> this trans quad) (-> (the-as process-drawable a0-16) root trans quad)) - ) - ) - (set! (-> this vector quad) (-> arg0 vector quad)) - (if (not (logtest? s4-0 (attack-mask shove-back))) - (set! (-> this shove-back) (vector-xz-length (-> this vector))) - ) - (if (not (logtest? s4-0 (attack-mask shove-up))) - (set! (-> this shove-up) (-> this vector y)) - ) - ) - ) - (if (not (logtest? (-> this mask) (attack-mask dist))) - (set! (-> this dist) (fabs (-> this shove-back))) - ) - (if (logtest? s4-0 (attack-mask trans)) - (set! (-> this trans quad) (-> arg0 trans quad)) - ) - ) - (none) - ) - ) + (let* ((s3-1 (handle->process (-> this attacker))) + (a0-16 (if (and (nonzero? s3-1) (type-type? (-> s3-1 type) process-drawable)) s3-1))) + (if a0-16 (set! (-> this trans quad) (-> (the-as process-drawable a0-16) root trans quad)))) + (set! (-> this vector quad) (-> arg0 vector quad)) + (if (not (logtest? s4-0 (attack-mask shove-back))) (set! (-> this shove-back) (vector-xz-length (-> this vector)))) + (if (not (logtest? s4-0 (attack-mask shove-up))) (set! (-> this shove-up) (-> this vector y))))) + (if (not (logtest? (-> this mask) (attack-mask dist))) (set! (-> this dist) (fabs (-> this shove-back)))) + (if (logtest? s4-0 (attack-mask trans)) (set! (-> this trans quad) (-> arg0 trans quad)))) + (none))) (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) @@ -1076,121 +762,71 @@ (set! (-> arg0 group 4) arg6) (dotimes (s3-0 3) (set! (-> arg0 chan s3-0) (+ arg1 s3-0)) - (ja :chan (-> arg0 chan s3-0) :group! arg2 :num! min :frame-interp (fabs (-> arg0 blend s3-0))) - ) - arg0 - ) + (ja :chan (-> arg0 chan s3-0) :group! arg2 :num! min :frame-interp (fabs (-> arg0 blend s3-0)))) + arg0) (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)))) - ) + (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))))) - ) + (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))))) - ) - ) + (set! (-> arg0 blend 2) (seek (the-as float (-> arg0 blend 2)) f30-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-7))))))) (if (>= (-> arg0 blend 1) 0.0) - (ja :chan (-> arg0 chan 1) :group! (-> arg0 group 1) :frame-interp (fabs (-> arg0 blend 1))) - (ja :chan (-> arg0 chan 1) :group! (-> arg0 group 2) :frame-interp (fabs (-> arg0 blend 1))) - ) + (ja :chan (-> arg0 chan 1) :group! (-> arg0 group 1) :frame-interp (fabs (-> arg0 blend 1))) + (ja :chan (-> arg0 chan 1) :group! (-> arg0 group 2) :frame-interp (fabs (-> arg0 blend 1)))) (if (>= (-> arg0 blend 2) 0.0) - (ja :chan (-> arg0 chan 2) :group! (-> arg0 group 4) :frame-interp (fabs (-> arg0 blend 2))) - (ja :chan (-> arg0 chan 2) :group! (-> arg0 group 3) :frame-interp (fabs (-> arg0 blend 2))) - ) + (ja :chan (-> arg0 chan 2) :group! (-> arg0 group 4) :frame-interp (fabs (-> arg0 blend 2))) + (ja :chan (-> arg0 chan 2) :group! (-> arg0 group 3) :frame-interp (fabs (-> arg0 blend 2)))) 0 - (none) - ) + (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)) - ) - ) - (else - (camera-pos) - ) - ) - ) - ) + (a1-0 (if (zero? arg0) (-> a1-0 control trans) (vector<-cspace! (new 'static 'vector) (-> a1-0 node-list data arg0)))) + (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) (state-flags use-alt-cam-pos)) - (add-debug-sphere - *display-camera-marks* - (bucket-id debug-no-zbuf) - (-> gp-0 alt-cam-pos) - 819.2 - (new 'static 'rgba :r #xff :a #x80) - ) - (-> gp-0 alt-cam-pos) - ) - ((logtest? (state-flags has-saved-position) (-> gp-0 state-flags)) - (add-debug-sphere - *display-camera-marks* - (bucket-id debug-no-zbuf) - (-> gp-0 alt-cam-pos) - 819.2 - (new 'static 'rgba :r #xff :a #x80) - ) - (-> gp-0 alt-cam-pos) - ) - ((logtest? (state-flags falling-into-pool-of-bad) (-> 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-no-zbuf) - (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-no-zbuf) - (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) (state-flags use-alt-cam-pos)) + (add-debug-sphere *display-camera-marks* + (bucket-id debug-no-zbuf) + (-> gp-0 alt-cam-pos) + 819.2 + (new 'static 'rgba :r #xff :a #x80)) + (-> gp-0 alt-cam-pos)) + ((logtest? (state-flags has-saved-position) (-> gp-0 state-flags)) + (add-debug-sphere *display-camera-marks* + (bucket-id debug-no-zbuf) + (-> gp-0 alt-cam-pos) + 819.2 + (new 'static 'rgba :r #xff :a #x80)) + (-> gp-0 alt-cam-pos)) + ((logtest? (state-flags falling-into-pool-of-bad) (-> 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-no-zbuf) + (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-no-zbuf) + (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 () (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* - ) - ) - ) + (let ((v1-0 *target*)) (if v1-0 (-> v1-0 control unknown-quaternion00) *unity-quaternion*))) diff --git a/goal_src/jak1/engine/target/target.gc b/goal_src/jak1/engine/target/target.gc index d0f31475ab..3a8db585e4 100644 --- a/goal_src/jak1/engine/target/target.gc +++ b/goal_src/jak1/engine/target/target.gc @@ -1,26 +1,32 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/target/target-handler.gc") -;; name: target.gc -;; name in dgo: target -;; dgos: GAME, ENGINE ;; note: changed for high fps ;; TODO - almost all of these are in target-handler or target2, temporary (define-extern target-state-hook-exit (function none :behavior target)) + (define-extern target-effect-exit (function none :behavior target)) + (define-extern target-post (function none :behavior target)) + (define-extern target-walk-event-handler (function process int symbol event-message-block object :behavior target)) + (define-extern target-land-effect (function none :behavior target)) + (define-extern target-dangerous-event-handler (function process int symbol event-message-block object :behavior target)) + (define-extern target-standard-event-handler (function process int symbol event-message-block object :behavior target)) + (define-extern target-jump-event-handler (function process int symbol event-message-block object :behavior target)) + (define-extern target-shoved (function meters meters process (state object object target) object :behavior target)) + (define-extern target-send-attack (function process uint touching-shapes-entry int int symbol :behavior target)) + (define-extern target-bonk-event-handler (function process int symbol event-message-block object :behavior target)) ;; DECOMP BEGINS @@ -28,56 +34,38 @@ (defbehavior target-falling-anim target ((arg0 time-frame) (arg1 time-frame)) (let ((v1-2 (ja-group))) (cond - ((or (= v1-2 eichar-jump-loop-ja) (= v1-2 eichar-attack-uppercut-ja)) - ) - ((let ((v1-8 (ja-group))) - (or (= v1-8 eichar-edge-grab-stance0-ja) (= v1-8 eichar-edge-grab-stance1-ja)) - ) + ((or (= v1-2 eichar-jump-loop-ja) (= v1-2 eichar-attack-uppercut-ja))) + ((let ((v1-8 (ja-group))) (or (= v1-8 eichar-edge-grab-stance0-ja) (= v1-8 eichar-edge-grab-stance1-ja))) (ja-channel-push! 1 (seconds 0.15)) (ja-no-eval :group! eichar-edge-grab-off-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) ((ja-group? eichar-edge-grab-off-ja) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.15)) - ) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.15))) ((ja-group? eichar-yellow-jumping-blast-ja) (ja-channel-push! 1 (seconds 0.15)) (ja-no-eval :group! eichar-jump-ja :num! (seek!) :frame-num (ja-aframe (the-as float 20.0) 0)) (until (ja-done? 0) (ja :num! (seek!)) - (suspend) - ) - ) + (suspend))) (else - (ja-channel-push! 1 arg1) - (ja :group! eichar-jump-loop-ja) - (while (!= (-> self skel root-channel 0) (-> self skel channel)) - (suspend) - ) - ) - ) - ) + (ja-channel-push! 1 arg1) + (ja :group! eichar-jump-loop-ja) + (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (suspend))))) (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) (let ((s5-1 (current-time))) (while (or (= arg0 -1) (not (time-elapsed? s5-1 arg0))) (suspend) - (ja :group! eichar-jump-loop-ja :num! (loop!)) - ) - ) - #f - ) + (ja :group! eichar-jump-loop-ja :num! (loop!)))) + #f) (defbehavior target-falling-anim-trans target () - (let ((v1-2 (ja-group))) - (b! (or (= v1-2 eichar-jump-loop-ja) (= v1-2 eichar-jump-land-ja)) cfg-7 :delay (empty-form)) - ) + (let ((v1-2 (ja-group))) (b! (or (= v1-2 eichar-jump-loop-ja) (= v1-2 eichar-jump-land-ja)) cfg-7 :delay (empty-form))) (ja-channel-push! 1 (seconds 0.33)) (ja :group! eichar-jump-loop-ja) (b! #t cfg-23 :delay (nop!)) @@ -85,58 +73,35 @@ (cond ((and (logtest? (-> self control status) (cshape-moving-flags onsurf)) (not (ja-group? eichar-jump-land-ja))) (ja-channel-push! 1 (seconds 0.02)) - (ja :group! eichar-jump-land-ja) - ) - ((ja-group? eichar-jump-loop-ja) - (ja :num! (loop!)) - ) - ((ja-group? eichar-jump-land-ja) - (ja :num! (seek!)) - ) - ) + (ja :group! eichar-jump-land-ja)) + ((ja-group? eichar-jump-loop-ja) (ja :num! (loop!))) + ((ja-group? eichar-jump-land-ja) (ja :num! (seek!)))) (label cfg-23) 0 - (none) - ) + (none)) (defbehavior target-falling-trans target ((arg0 basic) (arg1 time-frame)) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) - (go target-attack-air #f) - ) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) (go target-attack-air #f)) (when (= arg0 'target-eco-powerup) (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) (not (logtest? (-> self water flags) (water-flags wt09))) (not (time-elapsed? (-> self state-time) (seconds 3))) - (not (logtest? (-> self state-flags) (state-flags prevent-jump))) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - ) - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-hit-ground #f) - ) + (not (logtest? (-> self state-flags) (state-flags prevent-jump)))) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)))) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-hit-ground #f)) (when (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) (>= arg1 0) (time-elapsed? (-> self state-time) arg1) - (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - #t - ) + (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2)))) + #t) (logior! (-> self control status) (cshape-moving-flags onsurf)) - (go target-hit-ground 'stuck) - ) - (if (!= (-> self state-time) (current-time)) - (slide-down-test) - ) + (go target-hit-ground 'stuck)) + (if (!= (-> self state-time) (current-time)) (slide-down-test)) 0 - (none) - ) + (none)) (defbehavior target-hit-ground-anim target ((arg0 symbol)) (let ((v1-2 (ja-group))) @@ -144,169 +109,92 @@ ((or (= v1-2 eichar-flop-down-ja) (= v1-2 eichar-flop-down-loop-ja) (= v1-2 eichar-moving-flop-down-ja) - (= v1-2 eichar-moving-flop-down-loop-ja) - ) + (= v1-2 eichar-moving-flop-down-loop-ja)) (let ((gp-0 (or (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (< (-> self control unknown-float01) 61440.0) - ) - ) - (f30-0 (the-as float (if (= arg0 'swim) - 0.4 - 1.0 - ) - ) - ) - ) + (< (-> self control unknown-float01) 61440.0))) + (f30-0 (the-as float (if (= arg0 'swim) 0.4 1.0)))) (ja-channel-set! 1) (let ((s5-0 (-> self skel root-channel 0))) - (set! (-> s5-0 frame-group) (the-as art-joint-anim (if gp-0 - eichar-flop-down-land-ja - eichar-moving-flop-down-land-ja - ) - ) - ) - (set! (-> s5-0 param 0) (the float (+ (-> (the-as art-joint-anim (if gp-0 - eichar-flop-down-land-ja - eichar-moving-flop-down-land-ja - ) - ) - data - 0 - length - ) - -1 - ) - ) - ) + (set! (-> s5-0 frame-group) (the-as art-joint-anim (if gp-0 eichar-flop-down-land-ja eichar-moving-flop-down-land-ja))) + (set! (-> s5-0 param 0) + (the float + (+ (-> (the-as art-joint-anim (if gp-0 eichar-flop-down-land-ja eichar-moving-flop-down-land-ja)) data 0 length) -1))) (let ((f30-1 (seek f30-0 (the-as float 1.0) (* 0.5 (seconds-per-frame))))) (set! (-> s5-0 param 1) f30-1) (set! (-> s5-0 frame-num) 0.0) - (joint-control-channel-group! - s5-0 - (the-as art-joint-anim (if gp-0 - eichar-flop-down-land-ja - eichar-moving-flop-down-land-ja - ) - ) - num-func-seek! - ) + (joint-control-channel-group! s5-0 + (the-as art-joint-anim (if gp-0 eichar-flop-down-land-ja eichar-moving-flop-down-land-ja)) + num-func-seek!) (until (ja-done? 0) (compute-alignment! (-> self align)) - (align! - (-> self align) - (if gp-0 - (align-opts adjust-y-vel) - (align-opts adjust-y-vel adjust-xz-vel) - ) - (the-as float 1.0) - (the-as float 1.0) - (the-as float 1.5) - ) - (when (and (>= 25.0 (ja-aframe-num 0)) (and (>= (ja-aframe-num 0) 21.0) - (= (-> self next-state name) 'target-flop-hit-ground) - (!= (-> self control unknown-spoolanim00) 'stuck) - ) - ) + (align! (-> self align) + (if gp-0 (align-opts adjust-y-vel) (align-opts adjust-y-vel adjust-xz-vel)) + (the-as float 1.0) + (the-as float 1.0) + (the-as float 1.5)) + (when (and (>= 25.0 (ja-aframe-num 0)) + (and (>= (ja-aframe-num 0) 21.0) + (= (-> self next-state name) 'target-flop-hit-ground) + (!= (-> self control unknown-spoolanim00) 'stuck))) (set! (-> self event-hook) target-jump-event-handler) (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) x) (can-jump? #f)) (ja-channel-set! 0) - (go - target-high-jump - (-> *TARGET-bank* flop-jump-height-min) - (-> *TARGET-bank* flop-jump-height-max) - (if gp-0 - 'flop - 'flop-forward - ) - ) - ) - ) + (go target-high-jump + (-> *TARGET-bank* flop-jump-height-min) + (-> *TARGET-bank* flop-jump-height-max) + (if gp-0 'flop 'flop-forward)))) (suspend) (let ((s5-1 (-> self skel root-channel 0))) (set! (-> s5-1 param 0) (the float (+ (-> s5-1 frame-group data 0 length) -1))) (set! f30-1 (seek f30-1 (the-as float 1.0) (* 0.5 (seconds-per-frame)))) (set! (-> s5-1 param 1) f30-1) - (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ) - #f - ) - ((and (= (-> self control ground-pat material) (pat-material ice)) - (< 16384.0 (-> self control unknown-float01)) - ) - #f - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim #f) num-func-seek!)))))) + #f) + ((and (= (-> self control ground-pat material) (pat-material ice)) (< 16384.0 (-> self control unknown-float01))) #f) ((let ((v1-95 (ja-group))) (or (or (= v1-95 eichar-jump-loop-ja) (= v1-95 eichar-launch-jump-ja) (= v1-95 eichar-launch-jump-loop-ja)) - (and (ja-group? eichar-jump-ja) (>= (ja-aframe-num 0) 38.0)) - ) - ) + (and (ja-group? eichar-jump-ja) (>= (ja-aframe-num 0) 38.0)))) (ja-channel-push! 1 (seconds 0.02)) (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - #f - ) + (ja :num! (seek!))) + #f) ((and (ja-group? eichar-jump-ja) (>= (ja-aframe-num 0) 35.0)) (ja-channel-set! 1) (ja-no-eval :group! eichar-jump-short-land-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) + (ja :num! (seek!))) (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 50.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - #f - ) - ((let ((v1-187 (ja-group))) - (or (= v1-187 eichar-jump-ja) (= v1-187 eichar-duck-high-jump-ja)) - ) + (ja :num! (seek!))) + #f) + ((let ((v1-187 (ja-group))) (or (= v1-187 eichar-jump-ja) (= v1-187 eichar-duck-high-jump-ja))) (ja-channel-set! 1) (ja-no-eval :group! eichar-jump-short-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 38.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) + (ja :num! (seek!))) (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 50.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - #f - ) - ((let ((v1-242 (ja-group))) - (or (= v1-242 eichar-hit-from-front-ja) (= v1-242 eichar-hit-from-back-ja)) - ) - (let ((f30-2 (the-as float (if (ja-group? eichar-hit-from-back-ja) - 24576.0 - -24576.0 - ) - ) - ) - ) + (ja :num! (seek!))) + #f) + ((let ((v1-242 (ja-group))) (or (= v1-242 eichar-hit-from-front-ja) (= v1-242 eichar-hit-from-back-ja))) + (let ((f30-2 (the-as float (if (ja-group? eichar-hit-from-back-ja) 24576.0 -24576.0)))) (ja-channel-push! 1 (seconds 0.04)) (ja-no-eval :group! eichar-jump-short-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 38.0) 0)) (until (ja-done? 0) (set-forward-vel f30-2) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 50.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - #f - ) + (ja :num! (seek!))) + #f) ((let ((v1-305 (ja-group))) (or (= v1-305 eichar-jump-ja) (= v1-305 eichar-attack-from-jump-ja) @@ -314,1428 +202,919 @@ (= v1-305 eichar-attack-from-jump-end-ja) (= v1-305 eichar-moving-flop-down-land-ja) (= v1-305 eichar-flop-down-land-ja) - (= v1-305 eichar-attack-uppercut-ja) - ) - ) + (= v1-305 eichar-attack-uppercut-ja))) (ja-channel-push! 1 (seconds 0.04)) (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 42.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - #f - ) - ((ja-group? eichar-jump-land-ja) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - #f - ) - ) - ) - ) + (ja :num! (seek!))) + #f) + ((ja-group? eichar-jump-land-ja) (ja-no-eval :num! (seek!)) (while (not (ja-done? 0)) (suspend) (ja-eval)) #f)))) (defstate target-startup (target) :event target-standard-event-handler - :code (behavior () - (suspend) - (suspend) - (go target-stance) - ) - :post target-no-move-post - ) + :code + (behavior () + (suspend) + (suspend) + (go target-stance)) + :post target-no-move-post) (defstate target-stance (target) :event target-standard-event-handler - :enter (behavior () - (set! (-> self control unknown-surface00) *walk-mods*) - (set-time! (-> self state-time)) - ) - :exit (behavior () - (set! (-> self control unknown-float81) 0.0) - (target-state-hook-exit) - ) - :trans (behavior () - ((-> self state-hook)) - (if (logtest? (-> self water flags) (water-flags wt10)) - (go target-wade-stance) - ) - (when (= (-> self control ground-pat material) (pat-material ice)) - (set! (-> self control unknown-float81) 0.0) - (remove-exit) - (go target-ice-stance) - ) - (when (move-legs?) - (set! (-> self control unknown-float81) 0.0) - (remove-exit) - (go target-walk) - ) - (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + :enter + (behavior () + (set! (-> self control unknown-surface00) *walk-mods*) + (set-time! (-> self state-time))) + :exit + (behavior () (set! (-> self control unknown-float81) 0.0) - (remove-exit) - (go target-duck-stance) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons circle) - ) - (can-feet?) - ) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - (slide-down-test) - (fall-test) - ) - :code (behavior () - (let ((s5-0 22) - (gp-0 (new 'stack 'ground-tween-info)) - ) - (let ((v1-3 (ja-group))) - (cond - ((or (= v1-3 eichar-wade-shallow-walk-ja) (= v1-3 eichar-wade-deep-walk-ja)) - (set! s5-0 45) - ) - ((ja-group? eichar-wheel-flip-ja) - (ja-no-eval :group! eichar-wheel-flip-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? eichar-attack-from-stance-ja) - (cond - ((rand-vu-percent? (the-as float 0.3)) - (ja-no-eval :group! eichar-attack-from-stance-alt-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! eichar-attack-from-stance-end-ja :num! (seek!) :frame-num 0.0) + (target-state-hook-exit)) + :trans + (behavior () + ((-> self state-hook)) + (if (logtest? (-> self water flags) (water-flags wt10)) (go target-wade-stance)) + (when (= (-> self control ground-pat material) (pat-material ice)) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-ice-stance)) + (when (move-legs?) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-walk)) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (set! (-> self control unknown-float81) 0.0) + (remove-exit) + (go target-duck-stance)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons circle)) + (can-feet?)) + (go target-attack)) + (if (can-hands? #t) (go target-running-attack)) + (slide-down-test) + (fall-test)) + :code + (behavior () + (let ((s5-0 22) + (gp-0 (new 'stack 'ground-tween-info))) + (let ((v1-3 (ja-group))) + (cond + ((or (= v1-3 eichar-wade-shallow-walk-ja) (= v1-3 eichar-wade-deep-walk-ja)) (set! s5-0 45)) + ((ja-group? eichar-wheel-flip-ja) + (ja-no-eval :group! eichar-wheel-flip-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((ja-group? eichar-attack-from-stance-ja) + (cond + ((rand-vu-percent? (the-as float 0.3)) + (ja-no-eval :group! eichar-attack-from-stance-alt-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! eichar-attack-from-stance-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) + ((ja-group? eichar-smack-surface-ja) + (ja-no-eval :group! eichar-smack-surface-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((ja-group? eichar-yellow-running-blast-ja) + (ja-no-eval :group! eichar-yellow-running-blast-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! s5-0 0)) + ((ja-group? eichar-attack-punch-ja) + (set! (-> self control unknown-float81) (-> self control unknown-float80)) + (set! (-> self control unknown-surface00) *walk-no-turn-mods*) + (ja-no-eval :group! + (if (rand-vu-percent? (the-as float 0.3)) eichar-attack-punch-alt-end-ja eichar-attack-punch-end-ja) + :num! (seek!) + :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self control unknown-float81) (the-as float 0.0) (seconds-per-frame)) + (suspend) + (ja :num! (seek!))) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control unknown-float81) 0.0) + (rot->dir-targ! (-> self control))) + ((let ((v1-206 (ja-group))) (or (= v1-206 eichar-duck-stance-ja) (= v1-206 eichar-duck-walk-ja))) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! eichar-stance-to-duck-ja :num! (seek! 0.0 1.2) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0 1.2))) + (set! s5-0 12)) + ((or (and (ja-group? eichar-walk-ja) (begin (set! s5-0 45) (< 0.5 (-> self skel root-channel 6 frame-interp)))) + (let ((v1-243 (ja-group))) + (or (= v1-243 eichar-run-squash-ja) + (= v1-243 eichar-run-squash-weak-ja) + (= v1-243 eichar-attack-from-stance-run-end-ja) + (= v1-243 eichar-attack-from-stance-run-alt-end-ja)))) + (let ((f30-1 (the-as float + (cond + ((ja-group? eichar-walk-ja) + (let ((f0-57 (+ 50.0 (* 0.8333333 (+ -25.0 (ja-aframe-num 0)))))) + (- f0-57 (* (the float (the int (/ f0-57 50.0))) 50.0)))) + (else 0.0))))) + (set! s5-0 45) + (ja-channel-push! 3 (the-as time-frame s5-0)) + (ground-tween-initialize gp-0 + (the-as uint 0) + (the-as uint eichar-run-to-stance-loop-ja) + (the-as uint eichar-run-to-stance-loop-up-ja) + (the-as uint eichar-run-to-stance-loop-down-ja) + (the-as uint eichar-run-to-stance-loop-left-ja) + (the-as uint eichar-run-to-stance-loop-right-ja)) + (ja :num-func num-func-identity :frame-num (ja-aframe f30-1 0))) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (dotimes (s4-2 3) (until (ja-done? 0) + (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) (suspend) (ja :num! (seek!)) - ) - ) - ) - ) - ((ja-group? eichar-smack-surface-ja) - (ja-no-eval :group! eichar-smack-surface-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? eichar-yellow-running-blast-ja) - (ja-no-eval :group! eichar-yellow-running-blast-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! s5-0 0) - ) - ((ja-group? eichar-attack-punch-ja) - (set! (-> self control unknown-float81) (-> self control unknown-float80)) - (set! (-> self control unknown-surface00) *walk-no-turn-mods*) - (ja-no-eval :group! (if (rand-vu-percent? (the-as float 0.3)) - eichar-attack-punch-alt-end-ja - eichar-attack-punch-end-ja - ) - :num! (seek!) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek! (-> self control unknown-float81) (the-as float 0.0) (seconds-per-frame)) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control unknown-float81) 0.0) - (rot->dir-targ! (-> self control)) - ) - ((let ((v1-206 (ja-group))) - (or (= v1-206 eichar-duck-stance-ja) (= v1-206 eichar-duck-walk-ja)) - ) - (ja-channel-push! 1 (seconds 0.04)) - (ja-no-eval :group! eichar-stance-to-duck-ja :num! (seek! 0.0 1.2) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0 1.2)) - ) - (set! s5-0 12) - ) - ((or (and (ja-group? eichar-walk-ja) (begin (set! s5-0 45) (< 0.5 (-> self skel root-channel 6 frame-interp)))) - (let ((v1-243 (ja-group))) - (or (= v1-243 eichar-run-squash-ja) - (= v1-243 eichar-run-squash-weak-ja) - (= v1-243 eichar-attack-from-stance-run-end-ja) - (= v1-243 eichar-attack-from-stance-run-alt-end-ja) - ) - ) - ) - (let ((f30-1 (the-as float (cond - ((ja-group? eichar-walk-ja) - (let ((f0-57 (+ 50.0 (* 0.8333333 (+ -25.0 (ja-aframe-num 0)))))) - (- f0-57 (* (the float (the int (/ f0-57 50.0))) 50.0)) - ) - ) - (else - 0.0 - ) - ) - ) - ) - ) - (set! s5-0 45) - (ja-channel-push! 3 (the-as time-frame s5-0)) - (ground-tween-initialize - gp-0 - (the-as uint 0) - (the-as uint eichar-run-to-stance-loop-ja) - (the-as uint eichar-run-to-stance-loop-up-ja) - (the-as uint eichar-run-to-stance-loop-down-ja) - (the-as uint eichar-run-to-stance-loop-left-ja) - (the-as uint eichar-run-to-stance-loop-right-ja) - ) - (ja :num-func num-func-identity :frame-num (ja-aframe f30-1 0)) - ) - (ja :chan 1 :num! (chan 0)) - (ja :chan 2 :num! (chan 0)) - (dotimes (s4-2 3) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0))) + (ja :num-func num-func-identity :frame-num 0.0)) + (ground-tween-initialize gp-0 + (the-as uint 0) + (the-as uint eichar-run-to-stance-ja) + (the-as uint eichar-run-to-stance-up-ja) + (the-as uint eichar-run-to-stance-down-ja) + (the-as uint eichar-run-to-stance-left-ja) + (the-as uint eichar-run-to-stance-right-ja)) (until (ja-done? 0) (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) (suspend) (ja :num! (seek!)) (ja :chan 1 :num! (chan 0)) - (ja :chan 2 :num! (chan 0)) - ) - (ja :num-func num-func-identity :frame-num 0.0) - ) - (ground-tween-initialize - gp-0 - (the-as uint 0) - (the-as uint eichar-run-to-stance-ja) - (the-as uint eichar-run-to-stance-up-ja) - (the-as uint eichar-run-to-stance-down-ja) - (the-as uint eichar-run-to-stance-left-ja) - (the-as uint eichar-run-to-stance-right-ja) - ) - (until (ja-done? 0) - (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) - (suspend) - (ja :num! (seek!)) - (ja :chan 1 :num! (chan 0)) - (ja :chan 2 :num! (chan 0)) - ) - ) - ((and (ja-group? eichar-walk-ja) (>= (-> self control unknown-float01) 5734.4)) - (set! s5-0 45) - ) - ) - ) - (if (not (and (ja-group? eichar-stance-loop-ja) (= (ja-group-size) 3))) - (ja-channel-push! 3 (the-as time-frame s5-0)) - ) - (ground-tween-initialize - gp-0 - (the-as uint 0) - (the-as uint eichar-stance-loop-ja) - (the-as uint eichar-stance-loop-up-ja) - (the-as uint eichar-stance-loop-down-ja) - (the-as uint eichar-stance-loop-left-ja) - (the-as uint eichar-stance-loop-right-ja) - ) - (loop - (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) - (suspend) - (ja :num! (loop!)) - (ja :chan 1 :num! (chan 0)) - (ja :chan 2 :num! (chan 0)) - (if (can-play-stance-amibent?) - (go target-stance-ambient) - ) - ) - ) - ) - :post target-post - ) + (ja :chan 2 :num! (chan 0)))) + ((and (ja-group? eichar-walk-ja) (>= (-> self control unknown-float01) 5734.4)) (set! s5-0 45)))) + (if (not (and (ja-group? eichar-stance-loop-ja) (= (ja-group-size) 3))) (ja-channel-push! 3 (the-as time-frame s5-0))) + (ground-tween-initialize gp-0 + (the-as uint 0) + (the-as uint eichar-stance-loop-ja) + (the-as uint eichar-stance-loop-up-ja) + (the-as uint eichar-stance-loop-down-ja) + (the-as uint eichar-stance-loop-left-ja) + (the-as uint eichar-stance-loop-right-ja)) + (loop + (ground-tween-update gp-0 (-> self control unknown-float61) (-> self control unknown-float62)) + (suspend) + (ja :num! (loop!)) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (if (can-play-stance-amibent?) (go target-stance-ambient))))) + :post target-post) (defstate target-walk (target) :event target-walk-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *walk-mods*) - ) - :exit (behavior () - (target-effect-exit) - (target-state-hook-exit) - ) - :trans (behavior () - ((-> self state-hook)) - (when (= (-> self control ground-pat material) (pat-material ice)) - (target-effect-exit) - (remove-exit) - (go target-ice-walk) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons l1 r1) - ) - (and (time-elapsed? (-> *TARGET-bank* wheel-timeout) (-> self control unknown-dword30)) - (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (can-wheel?)) - ) - ) - (go target-wheel) - ) - (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *walk-mods*)) + :exit + (behavior () (target-effect-exit) - (remove-exit) - (go target-duck-walk) - ) - (when (not (move-legs?)) - (target-effect-exit) - (remove-exit) - (go target-stance) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons circle) - ) - (can-feet?) - ) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - (when (and (turn-around?) (time-elapsed? (-> self state-time) (seconds 0.3))) - (set! (-> self control transv quad) - (-> self control unknown-vector-array10 (-> self control unknown-int10) quad) - ) - (set! (-> self control transv w) 1.0) - (go target-turn-around) - ) - (slide-down-test) - (fall-test) - ) - :code (behavior () - (let ((f28-0 0.0) - (f30-0 (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -16384.0 (-> self control unknown-float01)))))) - (gp-0 #f) - ) - (cond - ((ja-group? eichar-turn-around-ja) - (set! f30-0 1.0) - (ja-channel-push! 7 (seconds 0.05)) - ) - ((ja-group? eichar-duck-roll-ja) - (ja-channel-push! 7 (seconds 0.075)) - (set! f30-0 1.0) - ) - ((ja-group? eichar-attack-from-stance-ja) - (let ((f30-1 (fmax 0.8 (fmin 1.0 (* 0.000048828126 (-> self control unknown-float01)))))) - (cond - ((and (rand-vu-percent? (the-as float 0.3)) (< 20480.0 (-> self control unknown-float01))) - (ja-no-eval :group! eichar-attack-from-stance-alt-end-ja - :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1)) - ) - (ja-no-eval :group! eichar-attack-from-stance-run-alt-end-ja :num! (seek! max f30-1) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-1)) - ) - ) - (else - (ja-no-eval :group! eichar-attack-from-stance-end-ja - :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1)) - ) - (ja-no-eval :group! eichar-attack-from-stance-run-end-ja :num! (seek! max f30-1) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-1)) - ) - ) - ) - ) - (ja-channel-push! 7 (seconds 0.05)) - (set! f30-0 1.0) - (set! f28-0 30.0) - ) - (else - (let ((v1-108 (ja-group))) - (cond - ((or (= v1-108 eichar-attack-punch-ja) (= v1-108 eichar-attack-punch-end-ja)) - (set! f30-0 1.0) - (set! f28-0 30.0) - (ja-channel-push! 7 (seconds 0.15)) - ) - ((let ((v1-116 (ja-group))) - (or (= v1-116 eichar-yellow-running-blast-ja) (= v1-116 eichar-yellow-running-blast-end-ja)) - ) - (set! f30-0 1.0) - (set! f28-0 26.0) - (ja-channel-push! 7 (seconds 0.1)) - ) - ((and (ja-group? eichar-walk-ja) (= (-> self skel root-channel 0) (-> self skel channel))) - (set! f28-0 (ja-aframe-num 0)) - ) - ((ja-group? eichar-ice-skate-ja) - (set! f28-0 (ja-aframe-num 0)) - (ja-channel-push! 7 (seconds 0.1)) - ) - ((ja-group? eichar-wade-shallow-walk-ja) - (set! f28-0 (ja-aframe-num 0)) - (ja-channel-push! 7 (seconds 0.05)) - ) - ((let ((v1-146 (ja-group))) - (and (or (or (= v1-146 eichar-jump-loop-ja) - (= v1-146 eichar-wheel-flip-ja) - (= v1-146 eichar-attack-from-jump-end-ja) - (= v1-146 eichar-attack-uppercut-ja) - (= v1-146 eichar-flop-down-land-ja) - (= v1-146 eichar-moving-flop-down-land-ja) - ) - (and (ja-group? eichar-jump-ja) (< 30.0 (ja-aframe-num 0))) - ) - (< 12288.0 (-> self control unknown-float01)) - ) - ) - (let ((s5-4 (ja-group)) - (f30-2 (-> self control ground-impact-vel)) - ) - (case (ja-group) - ((eichar-wheel-flip-ja eichar-attack-from-jump-end-ja) - (ja-channel-push! 1 (seconds 0.05)) - ) - (else - (ja-channel-set! 1) - ) - ) - (cond - ((< (the-as float (if (= s5-4 eichar-jump-ja) - 77824.0 - 102400.0 - ) - ) - f30-2 - ) - (ja-no-eval :group! eichar-run-squash-ja - :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001)) - ) - ) - ((< (the-as float (if (= s5-4 eichar-jump-ja) - 61440.0 - 102400.0 - ) - ) - f30-2 - ) - (ja-no-eval :group! eichar-run-squash-ja - :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001) - :frame-num (ja-aframe (the-as float -1.0) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001)) - ) - ) - (else - (ja-no-eval :group! eichar-run-squash-weak-ja - :num! (seek! (ja-aframe (the-as float 4.0) 0) 1.00001) - :frame-num 0.0 - ) + (target-state-hook-exit)) + :trans + (behavior () + ((-> self state-hook)) + (when (= (-> self control ground-pat material) (pat-material ice)) + (target-effect-exit) + (remove-exit) + (go target-ice-walk)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons l1 r1)) + (and (time-elapsed? (-> *TARGET-bank* wheel-timeout) (-> self control unknown-dword30)) + (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (can-wheel?)))) + (go target-wheel)) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (target-effect-exit) + (remove-exit) + (go target-duck-walk)) + (when (not (move-legs?)) + (target-effect-exit) + (remove-exit) + (go target-stance)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons circle)) + (can-feet?)) + (go target-attack)) + (if (can-hands? #t) (go target-running-attack)) + (when (and (turn-around?) (time-elapsed? (-> self state-time) (seconds 0.3))) + (set! (-> self control transv quad) (-> self control unknown-vector-array10 (-> self control unknown-int10) quad)) + (set! (-> self control transv w) 1.0) + (go target-turn-around)) + (slide-down-test) + (fall-test)) + :code + (behavior () + (let ((f28-0 0.0) + (f30-0 (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -16384.0 (-> self control unknown-float01)))))) + (gp-0 #f)) + (cond + ((ja-group? eichar-turn-around-ja) (set! f30-0 1.0) (ja-channel-push! 7 (seconds 0.05))) + ((ja-group? eichar-duck-roll-ja) (ja-channel-push! 7 (seconds 0.075)) (set! f30-0 1.0)) + ((ja-group? eichar-attack-from-stance-ja) + (let ((f30-1 (fmax 0.8 (fmin 1.0 (* 0.000048828126 (-> self control unknown-float01)))))) + (cond + ((and (rand-vu-percent? (the-as float 0.3)) (< 20480.0 (-> self control unknown-float01))) + (ja-no-eval :group! + eichar-attack-from-stance-alt-end-ja + :num! + (seek! (ja-aframe (the-as float 29.0) 0) f30-1) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1))) + (ja-no-eval :group! eichar-attack-from-stance-run-alt-end-ja :num! (seek! max f30-1) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-1)))) + (else + (ja-no-eval :group! + eichar-attack-from-stance-end-ja + :num! + (seek! (ja-aframe (the-as float 29.0) 0) f30-1) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 29.0) 0) f30-1))) + (ja-no-eval :group! eichar-attack-from-stance-run-end-ja :num! (seek! max f30-1) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-1)))))) + (ja-channel-push! 7 (seconds 0.05)) + (set! f30-0 1.0) + (set! f28-0 30.0)) + (else + (let ((v1-108 (ja-group))) + (cond + ((or (= v1-108 eichar-attack-punch-ja) (= v1-108 eichar-attack-punch-end-ja)) + (set! f30-0 1.0) + (set! f28-0 30.0) + (ja-channel-push! 7 (seconds 0.15))) + ((let ((v1-116 (ja-group))) (or (= v1-116 eichar-yellow-running-blast-ja) (= v1-116 eichar-yellow-running-blast-end-ja))) + (set! f30-0 1.0) + (set! f28-0 26.0) + (ja-channel-push! 7 (seconds 0.1))) + ((and (ja-group? eichar-walk-ja) (= (-> self skel root-channel 0) (-> self skel channel))) + (set! f28-0 (ja-aframe-num 0))) + ((ja-group? eichar-ice-skate-ja) (set! f28-0 (ja-aframe-num 0)) (ja-channel-push! 7 (seconds 0.1))) + ((ja-group? eichar-wade-shallow-walk-ja) (set! f28-0 (ja-aframe-num 0)) (ja-channel-push! 7 (seconds 0.05))) + ((let ((v1-146 (ja-group))) + (and (or (or (= v1-146 eichar-jump-loop-ja) + (= v1-146 eichar-wheel-flip-ja) + (= v1-146 eichar-attack-from-jump-end-ja) + (= v1-146 eichar-attack-uppercut-ja) + (= v1-146 eichar-flop-down-land-ja) + (= v1-146 eichar-moving-flop-down-land-ja)) + (and (ja-group? eichar-jump-ja) (< 30.0 (ja-aframe-num 0)))) + (< 12288.0 (-> self control unknown-float01)))) + (let ((s5-4 (ja-group)) + (f30-2 (-> self control ground-impact-vel))) + (case (ja-group) + ((eichar-wheel-flip-ja eichar-attack-from-jump-end-ja) (ja-channel-push! 1 (seconds 0.05))) + (else (ja-channel-set! 1))) + (cond + ((< (the-as float (if (= s5-4 eichar-jump-ja) 77824.0 102400.0)) f30-2) + (ja-no-eval :group! eichar-run-squash-ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 4.0) 0) 1.00001)) - ) - ) - ) - ) - (until (ja-done? 0) - (suspend) - ;; This controls the slow walk animation that occurs after landing from a jump. > 60fps was broken here so I think should not be tied to seconds-per-frame - ;; unknown-float01 is the magnitude of xz velocity - (ja :num! (seek! max (/ (* (fmax 20480.0 (-> self control unknown-float01)) (if (= (-> *setting-control* current video-mode) 'custom) - 0.016666668 - (-> *display* seconds-per-frame))) - (/ (-> *TARGET-bank* run-up-cycle-dist) (-> *TARGET-bank* run-cycle-length)) - ) - ) - ) - ) - (set! f28-0 30.0) - (set! f30-0 1.0) - (ja-channel-set! 7) - ) - ((ja-group? eichar-jump-ja) - (ja-channel-push! 7 (seconds 0.05)) - (set! gp-0 #t) - ) - ((ja-group? eichar-smack-surface-ja) - (ja-channel-push! 7 (seconds 0.15)) - ) - (else - (ja-channel-push! 7 (seconds 0.05)) - ) - ) - ) - ) - ) - (set! (-> self skel root-channel 3 command) 'push) - (set! (-> self skel root-channel 6 command) 'stack) - (ja :group! eichar-walk-ja) - (let ((f28-1 (ja-aframe f28-0 0))) - (ja :group! eichar-walk-ja :num! (identity f28-1) :frame-interp 0.0 :dist (-> *TARGET-bank* walk-cycle-dist)) - (ja :chan 1 - :group! eichar-walk-down-ja - :num! (identity f28-1) - :frame-interp 0.0 - :dist (-> *TARGET-bank* walk-down-cycle-dist) - ) - (ja :chan 2 - :group! eichar-walk-left-ja - :num! (identity f28-1) - :frame-interp 0.0 - :dist (-> *TARGET-bank* walk-side-cycle-dist) - ) - (ja :chan 4 - :group! eichar-run-down-ja - :num! (identity f28-1) - :frame-interp 0.0 - :dist (-> *TARGET-bank* run-down-cycle-dist) - ) - (ja :chan 5 - :group! eichar-run-left-ja - :num! (identity f28-1) - :frame-interp 0.0 - :dist (-> *TARGET-bank* run-side-cycle-dist) - ) - (ja :chan 3 - :group! eichar-run-ja - :num! (identity f28-1) - :frame-interp 0.0 - :dist (-> *TARGET-bank* run-cycle-dist) - ) - ) - (let ((f28-2 0.0) - (f26-1 0.0) - ) - (loop - (let ((f22-0 (fmax -1.0 (fmin 1.0 (* 2.0 (-> self control unknown-float61))))) - (f24-0 (fmax -1.0 (fmin 1.0 (* 1.6 (-> self control unknown-float62))))) - ) - (set! f30-0 (seek - f30-0 + (ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001)))) + ((< (the-as float (if (= s5-4 eichar-jump-ja) 61440.0 102400.0)) f30-2) + (ja-no-eval :group! + eichar-run-squash-ja + :num! + (seek! (ja-aframe (the-as float 3.0) 0) 1.00001) + :frame-num + (ja-aframe (the-as float -1.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 3.0) 0) 1.00001)))) + (else + (ja-no-eval :group! eichar-run-squash-weak-ja :num! (seek! (ja-aframe (the-as float 4.0) 0) 1.00001) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 4.0) 0) 1.00001)))))) + (until (ja-done? 0) + (suspend) + ;; This controls the slow walk animation that occurs after landing from a jump. > 60fps was broken here so I think should not be tied to seconds-per-frame + ;; unknown-float01 is the magnitude of xz velocity + (ja :num! + (seek! max + (/ (* (fmax 20480.0 (-> self control unknown-float01)) + (if (= (-> *setting-control* current video-mode) 'custom) 0.016666668 (-> *display* seconds-per-frame))) + (/ (-> *TARGET-bank* run-up-cycle-dist) (-> *TARGET-bank* run-cycle-length)))))) + (set! f28-0 30.0) + (set! f30-0 1.0) + (ja-channel-set! 7)) + ((ja-group? eichar-jump-ja) (ja-channel-push! 7 (seconds 0.05)) (set! gp-0 #t)) + ((ja-group? eichar-smack-surface-ja) (ja-channel-push! 7 (seconds 0.15))) + (else (ja-channel-push! 7 (seconds 0.05))))))) + (set! (-> self skel root-channel 3 command) 'push) + (set! (-> self skel root-channel 6 command) 'stack) + (ja :group! eichar-walk-ja) + (let ((f28-1 (ja-aframe f28-0 0))) + (ja :group! eichar-walk-ja :num! (identity f28-1) :frame-interp 0.0 :dist (-> *TARGET-bank* walk-cycle-dist)) + (ja :chan 1 + :group! + eichar-walk-down-ja + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-down-cycle-dist)) + (ja :chan 2 + :group! + eichar-walk-left-ja + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-side-cycle-dist)) + (ja :chan 4 + :group! + eichar-run-down-ja + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* run-down-cycle-dist)) + (ja :chan 5 + :group! + eichar-run-left-ja + :num! (identity f28-1) + :frame-interp 0.0 + :dist (-> *TARGET-bank* run-side-cycle-dist)) + (ja :chan 3 :group! eichar-run-ja :num! (identity f28-1) :frame-interp 0.0 :dist (-> *TARGET-bank* run-cycle-dist))) + (let ((f28-2 0.0) + (f26-1 0.0)) + (loop + (let ((f22-0 (fmax -1.0 (fmin 1.0 (* 2.0 (-> self control unknown-float61))))) + (f24-0 (fmax -1.0 (fmin 1.0 (* 1.6 (-> self control unknown-float62)))))) + (set! f30-0 + (seek f30-0 (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -16384.0 (-> self control unknown-float01))))) - (* 2.0 (seconds-per-frame)) - ) - ) - (let ((v1-317 (-> self skel effect))) - (set! (-> v1-317 channel-offset) (if (< 0.5 f30-0) - 3 - 0 - ) - ) - ) - 0 - (let ((f0-64 (fabs (- f22-0 f28-2)))) - (set! f28-2 (seek f28-2 f22-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-64))))) - ) - (let ((f0-69 (fabs (- f24-0 f26-1)))) - (set! f26-1 (seek f26-1 f24-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-69))))) - ) - ) - (cond - ((>= f28-2 0.0) - (ja :chan 1 :group! eichar-walk-up-ja :frame-interp (fabs f28-2) :dist (-> *TARGET-bank* walk-up-cycle-dist)) - (ja :chan 4 :group! eichar-run-up-ja :frame-interp (fabs f28-2) :dist (-> *TARGET-bank* run-up-cycle-dist)) - ) - (else - (ja :chan 1 - :group! eichar-walk-down-ja - :frame-interp (fabs f28-2) - :dist (-> *TARGET-bank* walk-down-cycle-dist) - ) - (ja :chan 4 - :group! eichar-run-down-ja - :frame-interp (fabs f28-2) - :dist (-> *TARGET-bank* run-down-cycle-dist) - ) - ) - ) - (cond - ((>= f26-1 0.0) - (ja :chan 2 - :group! eichar-walk-right-ja - :frame-interp (fabs f26-1) - :dist (-> *TARGET-bank* walk-side-cycle-dist) - ) - (ja :chan 5 - :group! eichar-run-right-ja - :frame-interp (fabs f26-1) - :dist (-> *TARGET-bank* run-side-cycle-dist) - ) - ) - (else - (ja :chan 2 - :group! eichar-walk-left-ja - :frame-interp (fabs f26-1) - :dist (-> *TARGET-bank* walk-side-cycle-dist) - ) - (ja :chan 5 - :group! eichar-run-left-ja - :frame-interp (fabs f26-1) - :dist (-> *TARGET-bank* run-side-cycle-dist) - ) - ) - ) - (set! (-> self skel root-channel 6 frame-interp) f30-0) - (let* ((f1-19 (current-cycle-distance (-> self skel))) - (f0-92 (/ (-> self control unknown-float01) (* 60.0 (/ f1-19 (-> *TARGET-bank* run-cycle-length))))) - ) - (ja :num! (loop! f0-92)) - ) - (ja :chan 1 :num! (chan 0)) - (ja :chan 2 :num! (chan 0)) - (ja :chan 3 :num! (chan 0)) - (ja :chan 4 :num! (chan 0)) - (ja :chan 5 :num! (chan 0)) - (if (and gp-0 (!= (-> self skel root-channel 0) (-> self skel channel))) - (ja-blend-eval) - ) - (suspend) - ) - ) - ) - ) - :post target-post - ) + (* 2.0 (seconds-per-frame)))) + (let ((v1-317 (-> self skel effect))) (set! (-> v1-317 channel-offset) (if (< 0.5 f30-0) 3 0))) + 0 + (let ((f0-64 (fabs (- f22-0 f28-2)))) (set! f28-2 (seek f28-2 f22-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-64)))))) + (let ((f0-69 (fabs (- f24-0 f26-1)))) (set! f26-1 (seek f26-1 f24-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-69))))))) + (cond + ((>= f28-2 0.0) + (ja :chan 1 :group! eichar-walk-up-ja :frame-interp (fabs f28-2) :dist (-> *TARGET-bank* walk-up-cycle-dist)) + (ja :chan 4 :group! eichar-run-up-ja :frame-interp (fabs f28-2) :dist (-> *TARGET-bank* run-up-cycle-dist))) + (else + (ja :chan 1 :group! eichar-walk-down-ja :frame-interp (fabs f28-2) :dist (-> *TARGET-bank* walk-down-cycle-dist)) + (ja :chan 4 :group! eichar-run-down-ja :frame-interp (fabs f28-2) :dist (-> *TARGET-bank* run-down-cycle-dist)))) + (cond + ((>= f26-1 0.0) + (ja :chan 2 :group! eichar-walk-right-ja :frame-interp (fabs f26-1) :dist (-> *TARGET-bank* walk-side-cycle-dist)) + (ja :chan 5 :group! eichar-run-right-ja :frame-interp (fabs f26-1) :dist (-> *TARGET-bank* run-side-cycle-dist))) + (else + (ja :chan 2 :group! eichar-walk-left-ja :frame-interp (fabs f26-1) :dist (-> *TARGET-bank* walk-side-cycle-dist)) + (ja :chan 5 :group! eichar-run-left-ja :frame-interp (fabs f26-1) :dist (-> *TARGET-bank* run-side-cycle-dist)))) + (set! (-> self skel root-channel 6 frame-interp) f30-0) + (let* ((f1-19 (current-cycle-distance (-> self skel))) + (f0-92 (/ (-> self control unknown-float01) (* 60.0 (/ f1-19 (-> *TARGET-bank* run-cycle-length)))))) + (ja :num! (loop! f0-92))) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (ja :chan 3 :num! (chan 0)) + (ja :chan 4 :num! (chan 0)) + (ja :chan 5 :num! (chan 0)) + (if (and gp-0 (!= (-> self skel root-channel 0) (-> self skel channel))) (ja-blend-eval)) + (suspend))))) + :post target-post) (defstate target-turn-around (target) :event target-standard-event-handler - :enter (behavior () - (vector-turn-to (-> self control transv)) - (set! (-> self control unknown-surface00) *turn-around-mods*) - (set! (-> self control unknown-float81) 1.0) - ) - :exit (behavior () - (target-state-hook-exit) - (set-forward-vel (the-as float 0.0)) - (set! (-> self control unknown-float01) 0.0) - (set-quaternion! (-> self control) (-> self control dir-targ)) - (set! (-> self control unknown-float81) 0.0) - ) - :trans (behavior () - ((-> self state-hook)) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (time-elapsed? (-> self control unknown-dword11) (seconds 0.08)) - ) - (go target-falling #f) - ) - (slide-down-test) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.04)) - (ja :group! eichar-turn-around-ja :num! min) - (quaternion-rotate-y! (-> self control dir-targ) (-> self control dir-targ) (the-as float 32768.0)) - (compute-alignment! (-> self align)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 2.0)) + :enter + (behavior () + (vector-turn-to (-> self control transv)) + (set! (-> self control unknown-surface00) *turn-around-mods*) + (set! (-> self control unknown-float81) 1.0)) + :exit + (behavior () + (target-state-hook-exit) + (set-forward-vel (the-as float 0.0)) + (set! (-> self control unknown-float01) 0.0) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (set! (-> self control unknown-float81) 0.0)) + :trans + (behavior () + ((-> self state-hook)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) (go target-attack)) + (if (can-hands? #t) (go target-running-attack)) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (time-elapsed? (-> self control unknown-dword11) (seconds 0.08))) + (go target-falling #f)) + (slide-down-test)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! eichar-turn-around-ja :num! min) + (quaternion-rotate-y! (-> self control dir-targ) (-> self control dir-targ) (the-as float 32768.0)) (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-quat) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) - ) - (remove-exit) - (set! (-> self control unknown-float81) 0.0) - (set-forward-vel (the-as float 40960.0)) - (set! (-> self control unknown-float01) 40960.0) - (target-state-hook-exit) - (go target-walk) - ) - :post target-no-stick-post - ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 2.0)) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-quat) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0))) + (remove-exit) + (set! (-> self control unknown-float81) 0.0) + (set-forward-vel (the-as float 40960.0)) + (set! (-> self control unknown-float01) 40960.0) + (target-state-hook-exit) + (go target-walk)) + :post target-no-stick-post) (defstate target-slide-down (target) :event target-walk-event-handler - :enter (behavior () - (set! (-> self control unknown-surface00) *jump-mods*) - ) - :exit (behavior () - (set-time! (-> self control unknown-dword35)) - ) - :trans (behavior () - (when (or (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (if (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) - #t - ) - ) - (logior! (-> self control status) (cshape-moving-flags onsurf)) - (go target-duck-stance) - ) - ) - :code (behavior () - (if (not (ja-group? eichar-duck-stance-ja)) - (ja-channel-push! 1 (seconds 0.1)) - ) - (loop - (ja-no-eval :group! eichar-duck-stance-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post target-post - ) + :enter + (behavior () + (set! (-> self control unknown-surface00) *jump-mods*)) + :exit + (behavior () + (set-time! (-> self control unknown-dword35))) + :trans + (behavior () + (when (or (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (if (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) #t)) + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (go target-duck-stance))) + :code + (behavior () + (if (not (ja-group? eichar-duck-stance-ja)) (ja-channel-push! 1 (seconds 0.1))) + (loop + (ja-no-eval :group! eichar-duck-stance-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post target-post) (defbehavior init-var-jump target ((arg0 float) (arg1 float) (arg2 vector) (arg3 vector) (arg4 vector)) (logclear! (-> self control status) (cshape-moving-flags csmf14)) (delete-back-vel) (when (not (time-elapsed? (-> self control rider-time) (seconds 0.05))) - (let ((f0-1 - (fmax - 0.0 - (fmin 28672.0 (* 0.5 (vector-dot (-> self control dynam gravity-normal) (-> self control rider-last-move)))) - ) - ) - ) + (let ((f0-1 (fmax 0.0 (fmin 28672.0 (* 0.5 (vector-dot (-> self control dynam gravity-normal) (-> self control rider-last-move))))))) (set! arg0 (+ arg0 f0-1)) - (set! arg1 (+ arg1 f0-1)) - ) + (set! arg1 (+ arg1 f0-1))) (when (or (logtest? (-> self control unknown-surface01 flags) (surface-flags moving-ground)) - (= (-> self control poly-pat material) (pat-material rotate)) - ) + (= (-> self control poly-pat material) (pat-material rotate))) (+! (-> self control transv x) (-> self control rider-last-move x)) - (+! (-> self control transv z) (-> self control rider-last-move z)) - ) - ) + (+! (-> self control transv z) (-> self control rider-last-move z)))) (set! (-> self control unknown-float123) 0.0) (set! (-> self control unknown-float124) 0.0) (cond (arg3 - (set! (-> self control unknown-uint20) - (the-as uint (- arg0 (+ -409.6 (-> *TARGET-bank* jump-collide-offset)))) - ) - (set! (-> self control unknown-int21) (the-as int (- arg1 (-> *TARGET-bank* jump-collide-offset)))) - ) + (set! (-> self control unknown-uint20) (the-as uint (- arg0 (+ -409.6 (-> *TARGET-bank* jump-collide-offset))))) + (set! (-> self control unknown-int21) (the-as int (- arg1 (-> *TARGET-bank* jump-collide-offset))))) (else - (set! (-> self control unknown-uint20) (the-as uint arg0)) - (set! (-> self control unknown-int21) (the-as int arg1)) - ) - ) + (set! (-> self control unknown-uint20) (the-as uint arg0)) + (set! (-> self control unknown-int21) (the-as int arg1)))) (when arg2 (let ((s4-1 (new-stack-vector0))) (let ((f0-16 (vector-dot (-> self control dynam gravity-normal) arg4))) 0.0 - (vector-! s4-1 arg4 (vector-float*! s4-1 (-> self control dynam gravity-normal) f0-16)) - ) + (vector-! s4-1 arg4 (vector-float*! s4-1 (-> self control dynam gravity-normal) f0-16))) (let* ((f0-17 (vector-length s4-1)) (f1-11 f0-17) - (f2-7 - (- (sqrtf (* 2.0 (-> self control dynam gravity-length) arg0)) - (* 0.008333334 (- (-> self control dynam gravity-length))) - ) - ) - ) - (vector+! - arg4 - (vector-float*! arg4 (-> self control dynam gravity-normal) f2-7) - (vector-float*! s4-1 s4-1 (/ f0-17 f1-11)) - ) - ) - ) - ) - (let ((v0-2 (-> self control unknown-vector102))) - (set! (-> v0-2 quad) (-> self control trans quad)) - v0-2 - ) - ) + (f2-7 (- (sqrtf (* 2.0 (-> self control dynam gravity-length) arg0)) + (* 0.008333334 (- (-> self control dynam gravity-length)))))) + (vector+! arg4 + (vector-float*! arg4 (-> self control dynam gravity-normal) f2-7) + (vector-float*! s4-1 s4-1 (/ f0-17 f1-11)))))) + (let ((v0-2 (-> self control unknown-vector102))) (set! (-> v0-2 quad) (-> self control trans quad)) v0-2)) (defbehavior mod-var-jump target ((arg0 symbol) (arg1 symbol) (arg2 symbol) (arg3 vector)) (local-vars (v0-2 vector)) (let ((f30-0 (* 0.033333335 (the float (- (current-time) (-> self state-time)))))) (cond ((or (< 1.0 f30-0) (< (-> self control unknown-float123) 0.0) (not arg2)) - (set! (-> self control unknown-float123) -1.0) - ) + (set! (-> self control unknown-float123) -1.0)) (else - (set! (-> self control unknown-float123) f30-0) - (set! (-> self control unknown-float124) f30-0) - (when arg0 - (let ((s3-1 (vector-! (new-stack-vector0) (-> self control trans) (-> self control unknown-vector102))) - (s4-0 (new-stack-vector0)) - ) - (let ((f0-5 (vector-dot (-> self control dynam gravity-normal) arg3))) - 0.0 - (vector-! s4-0 arg3 (vector-float*! s4-0 (-> self control dynam gravity-normal) f0-5)) - ) - (let* ((f28-0 (vector-length s4-0)) - (f26-0 f28-0) - (f0-13 - (- (sqrtf - (* 2.0 - (-> self control dynam gravity-length) - (- (lerp-scale - (the-as float (-> self control unknown-uint20)) - (the-as float (-> self control unknown-uint30)) - f30-0 - (the-as float 0.0) - (the-as float 1.0) - ) - (vector-dot (-> self control dynam gravity-normal) s3-1) - ) - ) - ) - (* 0.008333334 (- (-> self control dynam gravity-length))) - ) - ) - ) - (vector+! - arg3 - (vector-float*! arg3 (-> self control dynam gravity-normal) f0-13) - (vector-float*! s4-0 s4-0 (/ f28-0 f26-0)) - ) - ) - ) - ) - ) - ) - ) + (set! (-> self control unknown-float123) f30-0) + (set! (-> self control unknown-float124) f30-0) + (when arg0 + (let ((s3-1 (vector-! (new-stack-vector0) (-> self control trans) (-> self control unknown-vector102))) + (s4-0 (new-stack-vector0))) + (let ((f0-5 (vector-dot (-> self control dynam gravity-normal) arg3))) + 0.0 + (vector-! s4-0 arg3 (vector-float*! s4-0 (-> self control dynam gravity-normal) f0-5))) + (let* ((f28-0 (vector-length s4-0)) + (f26-0 f28-0) + (f0-13 (- (sqrtf (* 2.0 + (-> self control dynam gravity-length) + (- (lerp-scale (the-as float (-> self control unknown-uint20)) + (the-as float (-> self control unknown-uint30)) + f30-0 + (the-as float 0.0) + (the-as float 1.0)) + (vector-dot (-> self control dynam gravity-normal) s3-1)))) + (* 0.008333334 (- (-> self control dynam gravity-length)))))) + (vector+! arg3 + (vector-float*! arg3 (-> self control dynam gravity-normal) f0-13) + (vector-float*! s4-0 s4-0 (/ f28-0 f26-0))))))))) 0 (when (and arg1 (ja-group) (and (-> (ja-group) extra) #t)) (let ((v1-57 (res-lump-struct (-> (ja-group) extra) 'collide-offset vector :time (ja-frame-num 0)))) (cond - (v1-57 - (set! v0-2 (-> self control unknown-vector13)) - (set! (-> v0-2 quad) (-> v1-57 quad)) - ) - (else - (set! v0-2 (-> self control unknown-vector13)) - (set! (-> v0-2 quad) (the-as uint128 0)) - ) - ) - ) - v0-2 - ) - ) + (v1-57 (set! v0-2 (-> self control unknown-vector13)) (set! (-> v0-2 quad) (-> v1-57 quad))) + (else (set! v0-2 (-> self control unknown-vector13)) (set! (-> v0-2 quad) (the-as uint128 0))))) + v0-2)) (defstate target-duck-stance (target) :event target-standard-event-handler - :enter (behavior () - (set! (-> self control unknown-float81) 1.0) - (set! (-> self control unknown-surface00) *duck-mods*) - (target-collide-set! 'duck (the-as float 1.0)) - ) - :exit (behavior () - (if (not (or (= (-> self next-state name) 'target-duck-walk) - (= (-> self next-state name) 'target-duck-stance) - (= (-> self next-state name) 'target-walk) - (= (-> self next-state name) 'target-stance) - (= (-> self next-state name) 'target-stance-look-around) - ) - ) - (target-state-hook-exit) - ) - (target-exit) - (target-collide-set! 'normal (the-as float 0.0)) - ) - :trans (behavior () - ((-> self state-hook)) - (if (and (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) - (logtest? (-> self state-flags) (state-flags prevent-duck)) - ) - (let ((v1-13 (ja-group))) - (and (not (or (= v1-13 eichar-duck-roll-end-ja) (= v1-13 eichar-duck-roll-ja))) (can-exit-duck?)) - ) - ) - (go target-stance) - ) - (if (move-legs?) - (go target-duck-walk) - ) - (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + :enter + (behavior () + (set! (-> self control unknown-float81) 1.0) + (set! (-> self control unknown-surface00) *duck-mods*) + (target-collide-set! 'duck (the-as float 1.0))) + :exit + (behavior () + (if (not (or (= (-> self next-state name) 'target-duck-walk) + (= (-> self next-state name) 'target-duck-stance) + (= (-> self next-state name) 'target-walk) + (= (-> self next-state name) 'target-stance) + (= (-> self next-state name) 'target-stance-look-around))) + (target-state-hook-exit)) + (target-exit) + (target-collide-set! 'normal (the-as float 0.0))) + :trans + (behavior () + ((-> self state-hook)) + (if (and (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) + (logtest? (-> self state-flags) (state-flags prevent-duck))) + (let ((v1-13 (ja-group))) + (and (not (or (= v1-13 eichar-duck-roll-end-ja) (= v1-13 eichar-duck-roll-ja))) (can-exit-duck?)))) + (go target-stance)) + (if (move-legs?) (go target-duck-walk)) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (go target-high-jump (-> *TARGET-bank* duck-jump-height-min) (-> *TARGET-bank* duck-jump-height-max) 'duck) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - ) - (if (and (can-hands? #t) (can-exit-duck?)) - (go - target-attack-uppercut - (-> *TARGET-bank* attack-jump-height-min) - (-> *TARGET-bank* attack-jump-height-max) - ) - ) - (fall-test) - (slide-down-test) - ) - :code (behavior () - (cond - ((ja-group? eichar-duck-roll-ja) - (ja-no-eval :group! eichar-duck-roll-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((and (ja-group? eichar-duck-stance-ja) (= (-> self skel root-channel 0) (-> self skel channel))) - ) - ((ja-group? eichar-duck-walk-ja) - (ja-channel-push! 1 (seconds 0.1)) - ) - (else - (ja-channel-push! 1 (seconds 0.04)) - (ja-no-eval :group! eichar-stance-to-duck-ja :num! (seek!) :frame-num 0.0) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)))) + (if (and (can-hands? #t) (can-exit-duck?)) + (go target-attack-uppercut (-> *TARGET-bank* attack-jump-height-min) (-> *TARGET-bank* attack-jump-height-max))) + (fall-test) + (slide-down-test)) + :code + (behavior () + (cond + ((ja-group? eichar-duck-roll-ja) + (ja-no-eval :group! eichar-duck-roll-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((and (ja-group? eichar-duck-stance-ja) (= (-> self skel root-channel 0) (-> self skel channel)))) + ((ja-group? eichar-duck-walk-ja) (ja-channel-push! 1 (seconds 0.1))) + (else + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! eichar-stance-to-duck-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (loop + (ja-no-eval :group! eichar-duck-stance-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (loop - (ja-no-eval :group! eichar-duck-stance-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post target-post - ) + (ja :num! (seek!))))) + :post target-post) (defstate target-duck-walk (target) :event target-standard-event-handler - :enter (behavior () - (set! (-> self control unknown-float81) 1.0) - (target-collide-set! 'duck (the-as float 1.0)) - (if (not (ja-group? eichar-duck-roll-ja)) - (set! (-> self control unknown-surface00) *duck-mods*) - ) - ) - :exit (-> target-duck-stance exit) - :trans (behavior () - ((-> self state-hook)) - (if (and (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) - (logtest? (-> self state-flags) (state-flags prevent-duck)) - (and (logtest? (-> self water flags) (water-flags wt10)) - (>= (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6) - ) - ) - (can-exit-duck?) - ) - (go target-walk) - ) - (if (not (move-legs?)) - (go target-duck-stance) - ) - (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + :enter + (behavior () + (set! (-> self control unknown-float81) 1.0) + (target-collide-set! 'duck (the-as float 1.0)) + (if (not (ja-group? eichar-duck-roll-ja)) (set! (-> self control unknown-surface00) *duck-mods*))) + :exit + (-> target-duck-stance + exit) + :trans + (behavior () + ((-> self state-hook)) + (if (and (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) + (logtest? (-> self state-flags) (state-flags prevent-duck)) + (and (logtest? (-> self water flags) (water-flags wt10)) + (>= (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6))) + (can-exit-duck?)) + (go target-walk)) + (if (not (move-legs?)) (go target-duck-stance)) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (go target-high-jump (-> *TARGET-bank* duck-jump-height-min) (-> *TARGET-bank* duck-jump-height-max) 'duck) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - ) - (if (and (can-hands? #t) (can-exit-duck?)) - (go - target-attack-uppercut - (-> *TARGET-bank* attack-jump-height-min) - (-> *TARGET-bank* attack-jump-height-max) - ) - ) - (fall-test) - (slide-down-test) - ) - :code (behavior () - (cond - ((and (ja-group? eichar-duck-walk-ja) (= (-> self skel root-channel 0) (-> self skel channel))) - ) - ((ja-group? eichar-duck-stance-ja) - (ja-channel-push! 1 (seconds 0.45)) - (ja :group! eichar-duck-walk-ja :num! min) - ) - (else - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! eichar-duck-walk-ja :num! min) - ) - ) - (loop - (if (= (-> self skel root-channel 0) (-> self skel channel)) - (set! (-> self control unknown-surface00) *duck-mods*) - ) - (ja :num! (loop! (fmin 1.0 (/ (-> self control unknown-float01) - (* 60.0 (/ (-> *TARGET-bank* duck-walk-cycle-dist) (-> *TARGET-bank* run-cycle-length))) - ) - ) - ) - ) - (suspend) - ) - ) - :post target-post - ) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)))) + (if (and (can-hands? #t) (can-exit-duck?)) + (go target-attack-uppercut (-> *TARGET-bank* attack-jump-height-min) (-> *TARGET-bank* attack-jump-height-max))) + (fall-test) + (slide-down-test)) + :code + (behavior () + (cond + ((and (ja-group? eichar-duck-walk-ja) (= (-> self skel root-channel 0) (-> self skel channel)))) + ((ja-group? eichar-duck-stance-ja) (ja-channel-push! 1 (seconds 0.45)) (ja :group! eichar-duck-walk-ja :num! min)) + (else (ja-channel-push! 1 (seconds 0.1)) (ja :group! eichar-duck-walk-ja :num! min))) + (loop + (if (= (-> self skel root-channel 0) (-> self skel channel)) (set! (-> self control unknown-surface00) *duck-mods*)) + (ja :num! + (loop! (fmin 1.0 + (/ (-> self control unknown-float01) + (* 60.0 (/ (-> *TARGET-bank* duck-walk-cycle-dist) (-> *TARGET-bank* run-cycle-length))))))) + (suspend))) + :post target-post) (defstate target-jump (target) :event target-jump-event-handler - :enter (behavior ((arg0 float) (arg1 float) (arg2 surface)) - (when (= (-> self control unknown-symbol40) 'launch) - (level-hint-spawn (text-id sidekick-launcher1) "sksp009d" (the-as entity #f) *entity-pool* (game-task none)) - (level-hint-spawn (text-id sidekick-launcher2) "sksp009e" (the-as entity #f) *entity-pool* (game-task none)) - (case (-> (level-get-target-inside *level*) name) - (('citadel) - (level-hint-spawn (text-id citadel-launcher2) "sksp0393" (the-as entity #f) *entity-pool* (game-task none)) - (level-hint-spawn (text-id citadel-launcher) "sksp0388" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - enter-state - (let ((a0-9 (-> self control unknown-dword60)) - (a1-5 (-> self control unknown-dword61)) - (a2-5 (-> self control unknown-vector102)) - ) - (set! (-> a2-5 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) - (go target-launch (the-as float a0-9) (the-as symbol a1-5) a2-5 (-> self control unknown-dword63)) - ) - ) - (set-time! (-> self state-time)) - (sound-play "jump" :vol 70) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! arg2 (cond - (arg2 - (empty) - arg2 - ) - (else - *jump-mods* - ) - ) - ) - (set! (-> self control unknown-surface00) arg2) - (set! (-> self control unknown-float123) - (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) - ) - (set! (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) - ) - ) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 surface)) + (when (= (-> self control unknown-symbol40) 'launch) + (level-hint-spawn (text-id sidekick-launcher1) "sksp009d" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id sidekick-launcher2) "sksp009e" (the-as entity #f) *entity-pool* (game-task none)) + (case (-> (level-get-target-inside *level*) name) + (('citadel) + (level-hint-spawn (text-id citadel-launcher2) "sksp0393" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id citadel-launcher) "sksp0388" (the-as entity #f) *entity-pool* (game-task none)))) + enter-state + (let ((a0-9 (-> self control unknown-dword60)) + (a1-5 (-> self control unknown-dword61)) + (a2-5 (-> self control unknown-vector102))) + (set! (-> a2-5 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-9) (the-as symbol a1-5) a2-5 (-> self control unknown-dword63)))) + (set-time! (-> self state-time)) + (sound-play "jump" :vol 70) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! arg2 + (cond + (arg2 (empty) arg2) + (else *jump-mods*))) + (set! (-> self control unknown-surface00) arg2) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01)))))) + (set! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))))) :exit target-exit - :trans (behavior () - (set! (-> self control unknown-float123) - (fmax - (-> self control unknown-float123) - (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) - ) - ) - (target-falling-trans #f (the-as time-frame (if (ja-group? eichar-jump-loop-ja) - 15 - -1 - ) - ) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 12288.0) - (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (not (logtest? (-> self water flags) (water-flags wt09))) - (not (logtest? (-> self state-flags) (state-flags prevent-jump))) - ) - ) - (go target-double-jump (-> *TARGET-bank* double-jump-height-min) (-> *TARGET-bank* double-jump-height-max)) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 26624.0) - (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) - (not (logtest? (-> self state-flags) (state-flags prevent-attack))) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) - ) - ) - ) - (go - target-flop - (the-as float 65502.96) - (the-as float -163840.0) - (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - 0.0 - 68812.8 - ) - ) - ) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - (slide-down-test) - (seek! - (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) - (seconds-per-frame) - ) - ) - :code (behavior ((arg0 float) (arg1 float) (arg2 surface)) - (ja-channel-push! 2 (seconds 0.05)) - (ja :group! eichar-jump-ja :num! min) - (ja :chan 1 :group! eichar-jump-forward-ja :num! (chan 0) :frame-interp (-> self control unknown-float122)) - (suspend) - (ja :group! eichar-jump-ja :num! (+!)) - (ja :chan 1 :group! eichar-jump-forward-ja :num! (chan 0) :frame-interp (-> self control unknown-float122)) - (suspend) - (until (ja-done? 0) - (let ((f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (f0-8 (- 20.0 (ja-aframe-num 0))) - (gp-1 (-> self skel root-channel 0)) - ) - (set! (-> gp-1 param 0) (the float (+ (-> gp-1 frame-group data 0 length) -1))) - (let ((v1-45 (and (< 0.0 f30-0) (< 0.0 f0-8)))) - (set! (-> gp-1 param 1) - (the-as - float - (if v1-45 - (fmin (fmin 3.0 f0-8) (/ (* 5.0 f0-8) (the float (time-to-apex f30-0 (the-as float -245760.0))))) - 1.0 - ) - ) - ) - ) - (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) - ) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) + :trans + (behavior () + (set! (-> self control unknown-float123) + (fmax (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))))) + (target-falling-trans #f (the-as time-frame (if (ja-group? eichar-jump-loop-ja) 15 -1))) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 12288.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (not (logtest? (-> self water flags) (water-flags wt09))) + (not (logtest? (-> self state-flags) (state-flags prevent-jump))))) + (go target-double-jump (-> *TARGET-bank* double-jump-height-min) (-> *TARGET-bank* double-jump-height-max))) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 26624.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) + (not (logtest? (-> self state-flags) (state-flags prevent-attack))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08))))) + (go target-flop + (the-as float 65502.96) + (the-as float -163840.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) 0.0 68812.8)))) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (slide-down-test) + (seek! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (seconds-per-frame))) + :code + (behavior ((arg0 float) (arg1 float) (arg2 surface)) + (ja-channel-push! 2 (seconds 0.05)) + (ja :group! eichar-jump-ja :num! min) + (ja :chan 1 :group! eichar-jump-forward-ja :num! (chan 0) :frame-interp (-> self control unknown-float122)) (suspend) - ) - (target-falling-anim -1 (seconds 0.2)) - ) - :post target-post - ) + (ja :group! eichar-jump-ja :num! (+!)) + (ja :chan 1 :group! eichar-jump-forward-ja :num! (chan 0) :frame-interp (-> self control unknown-float122)) + (suspend) + (until (ja-done? 0) + (let ((f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (f0-8 (- 20.0 (ja-aframe-num 0))) + (gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (the float (+ (-> gp-1 frame-group data 0 length) -1))) + (let ((v1-45 (and (< 0.0 f30-0) (< 0.0 f0-8)))) + (set! (-> gp-1 param 1) + (the-as float + (if v1-45 (fmin (fmin 3.0 f0-8) (/ (* 5.0 f0-8) (the float (time-to-apex f30-0 (the-as float -245760.0))))) 1.0)))) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) + (suspend)) + (target-falling-anim -1 (seconds 0.2))) + :post target-post) (defstate target-jump-forward (target) :event target-jump-event-handler - :enter (behavior ((arg0 float) (arg1 float)) - ((-> target-jump enter) arg0 arg1 (the-as surface #f)) - (set! (-> self control unknown-surface00) *forward-jump-mods*) - ) + :enter + (behavior ((arg0 float) (arg1 float)) + ((-> target-jump enter) arg0 arg1 (the-as surface #f)) + (set! (-> self control unknown-surface00) *forward-jump-mods*)) :exit target-exit - :trans (-> target-jump trans) - :code (behavior ((arg0 float) (arg1 float)) - (ja-channel-set! 1) - (ja-no-eval :group! eichar-jump-ja :num! (seek!) :frame-num (ja-aframe (the-as float 3.0) 0)) - (until (ja-done? 0) - (set! (-> self control unknown-dword70) 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) - (loop - (suspend) - (ja :group! eichar-jump-loop-ja :num! (loop!)) - ) - ) - :post target-post - ) + :trans + (-> target-jump + trans) + :code + (behavior ((arg0 float) (arg1 float)) + (ja-channel-set! 1) + (ja-no-eval :group! eichar-jump-ja :num! (seek!) :frame-num (ja-aframe (the-as float 3.0) 0)) + (until (ja-done? 0) + (set! (-> self control unknown-dword70) 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) + (loop + (suspend) + (ja :group! eichar-jump-loop-ja :num! (loop!)))) + :post target-post) (defstate target-double-jump (target) :event target-jump-event-handler - :enter (behavior ((arg0 float) (arg1 float)) - (when (= (-> self control unknown-symbol40) 'launch) - enter-state - (let ((a0-3 (-> self control unknown-dword60)) - (a1-1 (-> self control unknown-dword61)) - (a2-0 (-> self control unknown-vector102)) - ) - (set! (-> a2-0 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) - (go target-launch (the-as float a0-3) (the-as symbol a1-1) a2-0 (-> self control unknown-dword63)) - ) - ) - (set-time! (-> self state-time)) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *double-jump-mods*) - ) + :enter + (behavior ((arg0 float) (arg1 float)) + (when (= (-> self control unknown-symbol40) 'launch) + enter-state + (let ((a0-3 (-> self control unknown-dword60)) + (a1-1 (-> self control unknown-dword61)) + (a2-0 (-> self control unknown-vector102))) + (set! (-> a2-0 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-3) (the-as symbol a1-1) a2-0 (-> self control unknown-dword63)))) + (set-time! (-> self state-time)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *double-jump-mods*)) :exit target-exit - :trans (behavior () - (target-falling-trans #f (the-as time-frame (if (ja-group? eichar-jump-loop-ja) - 15 - -1 - ) - ) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 22118.4) - (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) - (not (logtest? (-> self state-flags) (state-flags prevent-attack))) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) - ) - ) - ) - (go - target-flop - (the-as float 33775.48) - (the-as float -122880.0) - (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - 0.0 - 68812.8 - ) - ) - ) - ) - (if (!= (-> self state-time) (current-time)) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - ) - (seek! - (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) - (seconds-per-frame) - ) - ) - :code (behavior ((arg0 float) (arg1 float)) - (ja-channel-push! 2 (seconds 0.05)) - (effect-control-method-10 (-> self skel effect) 'jump-double (the-as float -1.0) -1) - (ja-no-eval :group! eichar-jump-ja :num! (seek!) :frame-num (ja-aframe (the-as float 5.0) 0)) - (ja :chan 1 :group! eichar-jump-forward-ja :num! (chan 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) - ) - (target-falling-anim -1 (seconds 0.2)) - ) - :post target-post - ) + :trans + (behavior () + (target-falling-trans #f (the-as time-frame (if (ja-group? eichar-jump-loop-ja) 15 -1))) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 22118.4) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) + (not (logtest? (-> self state-flags) (state-flags prevent-attack))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08))))) + (go target-flop + (the-as float 33775.48) + (the-as float -122880.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) 0.0 68812.8)))) + (if (!= (-> self state-time) (current-time)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv))) + (seek! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (seconds-per-frame))) + :code + (behavior ((arg0 float) (arg1 float)) + (ja-channel-push! 2 (seconds 0.05)) + (effect-control-method-10 (-> self skel effect) 'jump-double (the-as float -1.0) -1) + (ja-no-eval :group! eichar-jump-ja :num! (seek!) :frame-num (ja-aframe (the-as float 5.0) 0)) + (ja :chan 1 :group! eichar-jump-forward-ja :num! (chan 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122))) + (target-falling-anim -1 (seconds 0.2))) + :post target-post) (defstate target-high-jump (target) :event target-jump-event-handler - :enter (behavior ((arg0 float) (arg1 float) (arg2 basic)) - (when (and (= (-> self control unknown-symbol40) 'launch) (!= arg2 'launch)) - enter-state - (let ((a0-3 (-> self control unknown-dword60)) - (a1-1 (-> self control unknown-dword61)) - (a2-1 (-> self control unknown-vector102)) - ) - (set! (-> a2-1 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) - (go target-launch (the-as float a0-3) (the-as symbol a1-1) a2-1 (-> self control unknown-dword63)) - ) - ) - (set! (-> self control unknown-uint31) (the-as uint arg2)) - (if (or (= arg2 'duck) (= arg2 'launch)) - (go target-duck-high-jump arg0 arg1 (the-as symbol arg2)) - ) - (set-time! (-> self state-time)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (sound-play "jump" :pitch 0.3) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) - (set! (-> self control unknown-surface00) (cond - ((= arg2 'flip) - *flip-jump-mods* - ) - ((= arg2 'flop-forward) - *forward-high-jump-mods* - ) - (else - *high-jump-mods* - ) - ) - ) - (set! (-> self control unknown-float122) - (fmax 0.0 (fmin 0.5 (* 0.00008138021 (+ -409.6 (-> self control unknown-float01))))) - ) - ) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 basic)) + (when (and (= (-> self control unknown-symbol40) 'launch) (!= arg2 'launch)) + enter-state + (let ((a0-3 (-> self control unknown-dword60)) + (a1-1 (-> self control unknown-dword61)) + (a2-1 (-> self control unknown-vector102))) + (set! (-> a2-1 quad) (-> (the-as vector (-> self control unknown-dword62)) quad)) + (go target-launch (the-as float a0-3) (the-as symbol a1-1) a2-1 (-> self control unknown-dword63)))) + (set! (-> self control unknown-uint31) (the-as uint arg2)) + (if (or (= arg2 'duck) (= arg2 'launch)) (go target-duck-high-jump arg0 arg1 (the-as symbol arg2))) + (set-time! (-> self state-time)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (sound-play "jump" :pitch 0.3) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (set! (-> self control unknown-surface00) + (cond + ((= arg2 'flip) *flip-jump-mods*) + ((= arg2 'flop-forward) *forward-high-jump-mods*) + (else *high-jump-mods*))) + (set! (-> self control unknown-float122) + (fmax 0.0 (fmin 0.5 (* 0.00008138021 (+ -409.6 (-> self control unknown-float01))))))) :exit target-exit - :trans (behavior () - (target-falling-trans #f (the-as time-frame (if (ja-group? eichar-jump-loop-ja) - 15 - -1 - ) - ) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons square) - ) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 73728.0) - (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) - (not (logtest? (-> self state-flags) (state-flags prevent-attack))) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) - ) - ) - ) - (go - target-flop - (the-as float 33775.48) - (the-as float -122880.0) - (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - 0.0 - 68812.8 - ) - ) - ) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - (seek! - (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.00012207031 (+ -2048.0 (-> self control unknown-float01))))) - (seconds-per-frame) - ) - ) - :code (-> target-jump code) - :post target-post - ) + :trans + (behavior () + (target-falling-trans #f (the-as time-frame (if (ja-group? eichar-jump-loop-ja) 15 -1))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons square)) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 73728.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) + (not (logtest? (-> self state-flags) (state-flags prevent-attack))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08))))) + (go target-flop + (the-as float 33775.48) + (the-as float -122880.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) 0.0 68812.8)))) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (seek! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.00012207031 (+ -2048.0 (-> self control unknown-float01))))) + (seconds-per-frame))) + :code + (-> target-jump + code) + :post target-post) (defstate target-duck-high-jump (target) :event target-standard-event-handler - :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (set-time! (-> self state-time)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *turn-around-mods*) - ) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (set-time! (-> self state-time)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *turn-around-mods*)) :exit target-exit - :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (if (not (and (ja-group? eichar-duck-stance-ja) (= (-> self skel root-channel 0) (-> self skel channel)))) - (ja-channel-push! 1 (seconds 0.04)) - ) - (case arg2 - (('launch) - ;; og:preserve-this PAL patch here - (set! (-> self control unknown-soundid01) (sound-play "launch-fire")) - (ja-no-eval :group! eichar-launch-jump-ja :num! (seek! (ja-aframe (the-as float 16.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (let ((s3-2 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> s3-2 command) (sound-command set-param)) - (set! (-> s3-2 id) (-> self control unknown-soundid01)) - (let ((a1-5 (ear-trans))) - (let ((s2-1 self)) - (when (= a1-5 #t) - (if (and s2-1 (type-type? (-> s2-1 type) process-drawable) (nonzero? (-> s2-1 control))) + :code + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (if (not (and (ja-group? eichar-duck-stance-ja) (= (-> self skel root-channel 0) (-> self skel channel)))) + (ja-channel-push! 1 (seconds 0.04))) + (case arg2 + (('launch) + ;; og:preserve-this PAL patch here + (set! (-> self control unknown-soundid01) (sound-play "launch-fire")) + (ja-no-eval :group! eichar-launch-jump-ja :num! (seek! (ja-aframe (the-as float 16.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (let ((s3-2 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> s3-2 command) (sound-command set-param)) + (set! (-> s3-2 id) (-> self control unknown-soundid01)) + (let ((a1-5 (ear-trans))) + (let ((s2-1 self)) + (when (= a1-5 #t) + (if (and s2-1 (type-type? (-> s2-1 type) process-drawable) (nonzero? (-> s2-1 control))) (set! a1-5 (-> s2-1 control trans)) - (set! a1-5 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> s3-2 parms trans) a1-5) - ) - (set! (-> s3-2 parms mask) (sound-mask trans)) - (-> s3-2 id) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 16.0) 0))) - ) - ) - (else - (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe (the-as float 16.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 16.0) 0))) - ) - ) - ) - (go target-duck-high-jump-jump arg0 arg1 arg2) - ) - :post target-post - ) + (set! a1-5 (the-as vector #f))))) + (sound-trans-convert (-> s3-2 parms trans) a1-5)) + (set! (-> s3-2 parms mask) (sound-mask trans)) + (-> s3-2 id)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 16.0) 0))))) + (else + (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe (the-as float 16.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 16.0) 0)))))) + (go target-duck-high-jump-jump arg0 arg1 arg2)) + :post target-post) (defstate target-duck-high-jump-jump (target) :event target-jump-event-handler - :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (set-time! (-> self state-time)) - (sound-play "jump" :vol 80 :pitch -0.4) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (cond - ((= arg2 'launch) - (set! (-> self neck flex-blend) 0.0) - (set! (-> self control unknown-surface00) *launch-jump-mods*) - ) - (else - (set! (-> self control unknown-surface00) *high-jump-mods*) - ) - ) - ) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (set-time! (-> self state-time)) + (sound-play "jump" :vol 80 :pitch -0.4) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (cond + ((= arg2 'launch) (set! (-> self neck flex-blend) 0.0) (set! (-> self control unknown-surface00) *launch-jump-mods*)) + (else (set! (-> self control unknown-surface00) *high-jump-mods*)))) :exit target-exit ;; og:preserve-this PAL patch here - :trans (behavior () + :trans + (behavior () ((-> target-high-jump trans)) (case (-> self control unknown-int37) (('launch) @@ -1746,1360 +1125,846 @@ (let ((s5-0 self)) (when (= a1-0 #t) (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> s5-0 control))) - (set! a1-0 (-> s5-0 control trans)) - (set! a1-0 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> gp-0 parms trans) a1-0) - ) + (set! a1-0 (-> s5-0 control trans)) + (set! a1-0 (the-as vector #f))))) + (sound-trans-convert (-> gp-0 parms trans) a1-0)) (set! (-> gp-0 parms mask) (sound-mask trans)) - (-> gp-0 id) - ) - ) - ) - ) - :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (let ((f30-0 (the-as float (if (= arg2 'launch) - 110.0 - 35.0 - ) - ) - ) - (f28-0 1.0) - ) + (-> gp-0 id))))) + :code + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (let ((f30-0 (the-as float (if (= arg2 'launch) 110.0 35.0))) + (f28-0 1.0)) (until (ja-done? 0) (let* ((f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) (f26-0 (- f30-0 (ja-aframe-num 0))) (f22-1 (fmin (fmin 3.0 f26-0) (/ (* 5.0 f26-0) (the float (time-to-apex f24-0 (the-as float -245760.0)))))) - (s5-0 (-> self skel root-channel 0)) - ) + (s5-0 (-> self skel root-channel 0))) (set! (-> s5-0 param 0) (the float (+ (-> s5-0 frame-group data 0 length) -1))) (let ((v1-26 (cond ((and (< 0.0 f24-0) (< 0.0 f26-0)) - (if (= arg2 'launch) - (set! f28-0 (lerp f28-0 (* 4.0 f22-1) (the-as float 0.25))) - ) - f22-1 - ) - (else - f28-0 - ) - ) - ) - ) - (set! (-> s5-0 param 1) v1-26) - ) - (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim #f) num-func-seek!) - ) - (suspend) - ) + (if (= arg2 'launch) (set! f28-0 (lerp f28-0 (* 4.0 f22-1) (the-as float 0.25)))) + f22-1) + (else f28-0)))) + (set! (-> s5-0 param 1) v1-26)) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim #f) num-func-seek!)) + (suspend)) (cond ((= arg2 'launch) (ja-no-eval :group! eichar-launch-jump-loop-ja :num! (loop! f28-0) :frame-num 0.0) (loop (suspend) - (ja :group! eichar-launch-jump-loop-ja :num! (loop! f28-0)) - ) - ) + (ja :group! eichar-launch-jump-loop-ja :num! (loop! f28-0)))) (else - (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) - (loop - (suspend) - (ja :group! eichar-jump-loop-ja :num! (loop!)) - ) - ) - ) - ) - (the-as none 0) - ) - :post target-post - ) + (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) + (loop + (suspend) + (ja :group! eichar-jump-loop-ja :num! (loop!)))))) + (the-as none 0)) + :post target-post) (defstate target-falling (target) :event target-jump-event-handler - :enter (behavior ((arg0 symbol)) - (set! (-> self control unknown-surface00) *jump-mods*) - (set! (-> self control unknown-uint20) (the-as uint arg0)) - (set-time! (-> self state-time)) - ) - :trans (behavior () - (target-falling-trans - (-> self control unknown-spoolanim00) - (the-as time-frame (if (= (-> self control unknown-spoolanim00) #f) - 0 - (/ (the-as int (-> *TARGET-bank* stuck-time)) 2) - ) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (target-falling-anim -1 (seconds 0.33)) - ) - :post target-post - ) + :enter + (behavior ((arg0 symbol)) + (set! (-> self control unknown-surface00) *jump-mods*) + (set! (-> self control unknown-uint20) (the-as uint arg0)) + (set-time! (-> self state-time))) + :trans + (behavior () + (target-falling-trans (-> self control unknown-spoolanim00) + (the-as time-frame (if (= (-> self control unknown-spoolanim00) #f) 0 (/ (the-as int (-> *TARGET-bank* stuck-time)) 2))))) + :code + (behavior ((arg0 symbol)) + (target-falling-anim -1 (seconds 0.33))) + :post target-post) (defstate target-hit-ground (target) :event target-walk-event-handler - :enter (behavior ((arg0 symbol)) - (cond - ((= arg0 'stuck) - ) - ((let ((v1-4 (ja-group))) - (or (= v1-4 eichar-launch-jump-ja) (= v1-4 eichar-launch-jump-loop-ja)) - ) - (effect-control-method-10 (-> self skel effect) 'group-blue-hit-ground-effect (the-as float 0.0) -1) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) - ) - (else - (let ((f0-1 (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector52) (-> self control trans)) - ) - ) - ) - (if (and (< (-> *TARGET-bank* fall-far) f0-1) - (not (logtest? (-> self control status) (cshape-moving-flags on-water))) - ) - (go target-hit-ground-hard f0-1) - ) - ) - ) - ) - (cond - ((= arg0 'stuck) - ) - (else - (target-land-effect) - ) - ) - (set! (-> self control unknown-dword31) 0) - (set! (-> self control unknown-dword33) 0) - (if (>= (-> self control ground-impact-vel) (-> *TARGET-bank* fall-stumble-threshold)) - (set-forward-vel (the-as float 0.0)) - ) - (if (!= (-> self control ground-pat material) (pat-material ice)) - (delete-back-vel) - ) - (set! (-> self control unknown-surface00) *walk-mods*) - (start-bobbing! - (-> self water) - (lerp-scale - (the-as float 0.0) - (the-as float 4096.0) - (-> self control ground-impact-vel) - (the-as float 40960.0) - (the-as float 102400.0) - ) - 600 - 1500 - ) - ) - :trans (behavior () - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (not (can-exit-duck?)) (can-duck?)) - (go target-duck-stance) - ) - (when (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (if (logtest? (-> self water flags) (water-flags wt10)) - (go target-wade-walk) - (go target-walk) - ) - ) - (if (and (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (not (can-exit-duck?))) (can-duck?)) - (go target-duck-stance) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - (fall-test) - (slide-down-test) - ) - :code (behavior ((arg0 symbol)) - (target-hit-ground-anim #f) - (go target-stance) - ) - :post target-post - ) + :enter + (behavior ((arg0 symbol)) + (cond + ((= arg0 'stuck)) + ((let ((v1-4 (ja-group))) (or (= v1-4 eichar-launch-jump-ja) (= v1-4 eichar-launch-jump-loop-ja))) + (effect-control-method-10 (-> self skel effect) 'group-blue-hit-ground-effect (the-as float 0.0) -1) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3))) + (else + (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector52) (-> self control trans))))) + (if (and (< (-> *TARGET-bank* fall-far) f0-1) (not (logtest? (-> self control status) (cshape-moving-flags on-water)))) + (go target-hit-ground-hard f0-1))))) + (cond + ((= arg0 'stuck)) + (else (target-land-effect))) + (set! (-> self control unknown-dword31) 0) + (set! (-> self control unknown-dword33) 0) + (if (>= (-> self control ground-impact-vel) (-> *TARGET-bank* fall-stumble-threshold)) (set-forward-vel (the-as float 0.0))) + (if (!= (-> self control ground-pat material) (pat-material ice)) (delete-back-vel)) + (set! (-> self control unknown-surface00) *walk-mods*) + (start-bobbing! (-> self water) + (lerp-scale (the-as float 0.0) + (the-as float 4096.0) + (-> self control ground-impact-vel) + (the-as float 40960.0) + (the-as float 102400.0)) + 600 + 1500)) + :trans + (behavior () + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (not (can-exit-duck?)) (can-duck?)) (go target-duck-stance)) + (when (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (if (logtest? (-> self water flags) (water-flags wt10)) (go target-wade-walk) (go target-walk))) + (if (and (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (not (can-exit-duck?))) (can-duck?)) + (go target-duck-stance)) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) (go target-attack)) + (if (can-hands? #t) (go target-running-attack)) + (fall-test) + (slide-down-test)) + :code + (behavior ((arg0 symbol)) + (target-hit-ground-anim #f) + (go target-stance)) + :post target-post) (defstate target-attack (target) :event target-dangerous-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (target-start-attack) - (target-danger-set! 'spin #f) - (set! (-> self control unknown-surface00) *attack-mods*) - (set! (-> self water drip-mult) 4.0) - (set! (-> self neck flex-blend) 0.0) - ) - :exit (behavior () - (set-time! (-> self control unknown-dword33)) - (target-exit) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-attack-from-stance-ja - :num! (seek! max (-> self control unknown-surface01 align-speed)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) - (effect-control-method-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 74) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) - (level-hint-spawn - (text-id misty-eco-red-first-use) - "sksp0072" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (suspend) - (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) - ) - (go target-stance) - ) - :post target-post - ) - -(defstate target-running-attack (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (cond - (((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self control) - (the-as uint 224) - ) - (let ((gp-1 (target-send-attack - proc - (the-as uint (-> self control unknown-symbol30)) - (the-as touching-shapes-entry (-> block param 0)) - (-> self control unknown-dword50) - (-> self control unknown-dword51) - ) - ) - ) - (when gp-1 - (set! (-> self control unknown-uint20) (the-as uint (current-time))) - (let ((v1-9 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) - proc - ) - ) - ) - (when v1-9 - (let* ((s5-1 (-> (the-as process-drawable v1-9) root)) - (v1-11 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) collide-shape)) - (the-as collide-shape s5-1) - ) - ) - ) - (if (and v1-11 (or (logtest? (-> v1-11 root-prim prim-core collide-as) (collide-kind enemy)) - (logtest? (-> v1-11 root-prim prim-core action) (collide-action attackable)) - ) - ) - (set! (-> self control unknown-uint31) (the-as uint 1)) - ) - ) - ) - ) - (when (or (= gp-1 'die) (= gp-1 'push)) - (let ((v0-2 (the-as object (current-time)))) - (set! (-> self control unknown-int21) (the-as int v0-2)) - v0-2 - ) - ) - ) - ) - ) - (else - (target-dangerous-event-handler proc argc message block) - ) - ) - ) - (else - (target-dangerous-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (if (or (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) - (not (time-elapsed? (-> self control unknown-dword82) (seconds 1.5))) - ) - (go target-yellow-blast) - ) - (set-time! (-> self state-time)) - (set! (-> self control unknown-uint20) (the-as uint 0)) - (set! (-> self control unknown-int21) 0) - (set! (-> self control unknown-uint31) (the-as uint 0)) - (set! (-> self control unknown-surface00) *run-attack-mods*) - (set! (-> *run-attack-mods* turnv) 655360.0) - (set! (-> *run-attack-mods* turnvv) 655360.0) - (target-start-attack) - (target-danger-set! 'punch #f) - (if (or (< (fabs (-> self control unknown-float62)) 0.3) (< 0.3 (fabs (-> self control unknown-float61)))) - (set! (-> self control unknown-float81) 1.0) - ) - ) - :exit (behavior () - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (set! (-> *run-attack-mods* turnv) 0.0) - (set! (-> *run-attack-mods* turnvv) 0.0) - (set-time! (-> self control unknown-dword31)) - (target-exit) - ) - :trans (behavior () - (when (!= (-> self state-time) (current-time)) - (if (and (or (smack-surface? #t) - (and (>= (-> self control unknown-float63) 0.7) - (not (logtest? (-> self control status) (cshape-moving-flags t-act))) - ) - ) - (begin - (set! (-> self control unknown-int21) (the-as int (current-time))) - (set! (-> self control unknown-float81) 0.0) - (let ((gp-0 (new-stack-vector0)) - (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - 0.0 - (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) - (let* ((f0-5 (vector-length gp-0)) - (f1-1 f0-5) - (f2-1 (fmin 0.0 f30-0)) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) - (vector-float*! gp-0 gp-0 (/ f0-5 f1-1)) - ) - ) - ) - #t - ) - (or (zero? (-> self control unknown-uint20)) - (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 12)) - ) - (!= (-> self control unknown-uint31) 1) - ) - (target-shoved - (-> *TARGET-bank* smack-surface-dist) - (-> *TARGET-bank* smack-surface-height) - (the-as process #f) - target-hit - ) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) - (and (< 4096.0 (-> self control unknown-float01)) - (or (time-elapsed? (-> self state-time) (seconds 0.1)) - (not (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) - (pad-buttons square) - ) - ) - ) - (not (logtest? (-> self state-flags) (state-flags prevent-jump prevent-attack))) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump))) - ) - ) - (go - target-attack-uppercut - (-> *TARGET-bank* attack-jump-height-min) - (-> *TARGET-bank* attack-jump-height-max) - ) - ) - (if (and (logtest? (-> self water flags) (water-flags wt09)) - (zero? (mod (- (current-time) (-> self state-time)) 21)) - ) - (create-splash - (-> self water) - (the-as float 0.6) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg mouth)) - 0 - (-> self control transv) - ) - ) - (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) - (effect-control-method-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 23) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) - (level-hint-spawn - (text-id misty-eco-red-first-use) - "sksp0072" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - :code (behavior () - (if (logtest? (-> self water flags) (water-flags wt09)) - (sound-play "swim-stroke") - ) - (ja-channel-push! 1 (seconds 0.02)) - (ja :group! eichar-attack-punch-ja :num! min) - (set! (-> self control dynam gravity-max) 368640.0) - (set! (-> self control dynam gravity-length) 368640.0) - (let ((f28-0 0.0) - (f30-0 1.0) - (gp-2 0) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (target-start-attack) + (target-danger-set! 'spin #f) + (set! (-> self control unknown-surface00) *attack-mods*) + (set! (-> self water drip-mult) 4.0) + (set! (-> self neck flex-blend) 0.0)) + :exit + (behavior () + (set-time! (-> self control unknown-dword33)) + (target-exit)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! + eichar-attack-from-stance-ja + :num! + (seek! max (-> self control unknown-surface01 align-speed)) + :frame-num 0.0) (until (ja-done? 0) - (compute-alignment! (-> self align)) - (when (not (ja-min? 0)) - (cond - ((and (>= (ja-aframe-num 0) 20.0) - (and (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-39 (ja-group))) - (or (not (or (= v1-39 eichar-attack-punch-ja) - (= v1-39 eichar-attack-punch-end-ja) - (= v1-39 eichar-attack-punch-alt-end-ja) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 12)) - ) - ) - (go target-falling #f) - ) - ((and (nonzero? (-> self control unknown-uint30)) - (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint30)))) (the-as uint 12)) - ) - (set-forward-vel (the-as float 0.0)) - ) - ((and (not (cpad-hold? (-> self control unknown-cpad-info00 number) square)) - (time-elapsed? (-> self state-time) (seconds 0.05)) - ) - (if (= (-> self control ground-pat material) (pat-material ice)) - (set-forward-vel (fmax 32768.0 (* 0.8 (-> self control unknown-float01)))) - (set-forward-vel (* 0.8 (-> self control unknown-float01))) - ) - ) - ((ja-done? 0) - (set-forward-vel f28-0) - ) - (else - (set! f28-0 - (* (target-align-vel-z-adjust (-> self align delta trans z)) (-> *display* frames-per-second) f30-0) - ) - (set-forward-vel f28-0) - ) - ) - ) - (let ((s5-1 (new-stack-vector0))) - (vector-matrix*! s5-1 (-> self control transv) (-> self control unknown-matrix00)) - (set! (-> s5-1 y) 0.0) - (vector-matrix*! (-> self control unknown-vector120) s5-1 (-> self control unknown-matrix01)) - ) + (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) + (effect-control-method-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 74) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn (text-id misty-eco-red-first-use) "sksp0072" (the-as entity #f) *entity-pool* (game-task none))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) (suspend) - (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) - (if (time-elapsed? (-> self state-time) (seconds 0.1)) - (set! (-> *run-attack-mods* turnvv) 0.0) - ) - (if (< 2 gp-2) - (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) - ) - (+! gp-2 1) - ) - ) - (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-121 (ja-group))) - (or (not (or (= v1-121 eichar-attack-punch-ja) - (= v1-121 eichar-attack-punch-end-ja) - (= v1-121 eichar-attack-punch-alt-end-ja) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - (go target-falling #f) - ) - (go target-stance) - ) - :post target-post - ) + (ja :num! (seek! max (-> self control unknown-surface01 align-speed)))) + (go target-stance)) + :post target-post) -(defstate target-attack-air (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (let ((v0-0 (target-bonk-event-handler proc argc message block))) - (cond - (v0-0 - (empty) - v0-0 - ) - (else - (target-dangerous-event-handler proc argc message block) - ) - ) - ) - ) - :enter (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (target-start-attack) - (target-danger-set! 'spin-air #f) - (set! (-> self control unknown-surface00) *jump-attack-mods*) - (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - (cond - ((or (>= 0.0 f0-1) (= arg0 'flop)) - (let ((gp-1 (new-stack-vector0))) - (let ((f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-3)) - ) - (let* ((f0-4 (vector-length gp-1)) - (f1-2 f0-4) - (f2-0 33775.48) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) - (vector-float*! gp-1 gp-1 (/ f0-4 f1-2)) - ) - ) - ) - ) - (else - (let* ((f1-5 (/ f0-1 (* (-> self control dynam gravity-length) (seconds-per-frame)))) - (f30-0 (* 0.5 f1-5 (seconds-per-frame) f0-1)) - ) - (if (ja-group? eichar-attack-uppercut-ja) - (set! f30-0 - (fmax - 0.0 - (- (-> *TARGET-bank* attack-jump-height-max) - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control unknown-vector52)) - ) - ) - ) - ) - ) - (let ((gp-2 (new-stack-vector0))) - (let ((f0-8 (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-8)) - ) - (let* ((f0-9 (vector-length gp-2)) - (f1-11 f0-9) - (f2-7 (+ 1024.0 (sqrtf (* 245760.0 (+ 2048.0 f30-0))))) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-7) - (vector-float*! gp-2 gp-2 (/ f0-9 f1-11)) - ) - ) - ) - ) - ) - ) - ) - (set! (-> self control dynam gravity-length) 122880.0) - (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) - ) - :exit (behavior () - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - ((-> target-attack exit)) - ) - :trans (behavior () - (when (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (set-quaternion! (-> self control) (-> self control dir-targ)) - (go target-hit-ground #f) - ) - (if (time-elapsed? (-> self state-time) (seconds 0.5)) - (seek! - (-> self control dynam gravity-length) - (-> self control unknown-dynamics00 gravity-length) - (* 245760.0 (seconds-per-frame)) - ) - ) - (when (and (time-elapsed? (-> self state-time) (seconds 0.05)) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control unknown-vector10)) - (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) - ) - ) +(defstate target-running-attack (target) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (cond + (((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self control) + (the-as uint 224)) + (let ((gp-1 (target-send-attack proc + (the-as uint (-> self control unknown-symbol30)) + (the-as touching-shapes-entry (-> block param 0)) + (-> self control unknown-dword50) + (-> self control unknown-dword51)))) + (when gp-1 + (set! (-> self control unknown-uint20) (the-as uint (current-time))) + (let ((v1-9 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) proc))) + (when v1-9 + (let* ((s5-1 (-> (the-as process-drawable v1-9) root)) + (v1-11 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) collide-shape)) (the-as collide-shape s5-1)))) + (if (and v1-11 + (or (logtest? (-> v1-11 root-prim prim-core collide-as) (collide-kind enemy)) + (logtest? (-> v1-11 root-prim prim-core action) (collide-action attackable)))) + (set! (-> self control unknown-uint31) (the-as uint 1)))))) + (when (or (= gp-1 'die) (= gp-1 'push)) + (let ((v0-2 (the-as object (current-time)))) (set! (-> self control unknown-int21) (the-as int v0-2)) v0-2))))) + (else (target-dangerous-event-handler proc argc message block)))) + (else (target-dangerous-event-handler proc argc message block)))) + :enter + (behavior () + (if (or (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) + (not (time-elapsed? (-> self control unknown-dword82) (seconds 1.5)))) + (go target-yellow-blast)) + (set-time! (-> self state-time)) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control unknown-int21) 0) + (set! (-> self control unknown-uint31) (the-as uint 0)) + (set! (-> self control unknown-surface00) *run-attack-mods*) + (set! (-> *run-attack-mods* turnv) 655360.0) + (set! (-> *run-attack-mods* turnvv) 655360.0) + (target-start-attack) + (target-danger-set! 'punch #f) + (if (or (< (fabs (-> self control unknown-float62)) 0.3) (< 0.3 (fabs (-> self control unknown-float61)))) + (set! (-> self control unknown-float81) 1.0))) + :exit + (behavior () (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - ) - (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) - (effect-control-method-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 70) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) - (level-hint-spawn - (text-id misty-eco-red-first-use) - "sksp0072" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! eichar-attack-from-jump-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-quat) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! eichar-attack-from-jump-loop-ja :num! min) - (let ((f30-0 393216.0)) - (let ((f0-8 (target-height-above-ground)) - (f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - (while (not (or (and (< (fabs (/ f0-8 (* 0.0033333334 f1-1))) 150.0) (< f1-1 0.0)) - (time-elapsed? (-> self state-time) (seconds 1.7)) - ) - ) - (quaternion-rotate-y! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (* f30-0 (seconds-per-frame)) - ) + (set! (-> *run-attack-mods* turnv) 0.0) + (set! (-> *run-attack-mods* turnvv) 0.0) + (set-time! (-> self control unknown-dword31)) + (target-exit)) + :trans + (behavior () + (when (!= (-> self state-time) (current-time)) + (if (and (or (smack-surface? #t) + (and (>= (-> self control unknown-float63) 0.7) (not (logtest? (-> self control status) (cshape-moving-flags t-act))))) + (begin + (set! (-> self control unknown-int21) (the-as int (current-time))) + (set! (-> self control unknown-float81) 0.0) + (let ((gp-0 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) + (let* ((f0-5 (vector-length gp-0)) + (f1-1 f0-5) + (f2-1 (fmin 0.0 f30-0))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) + (vector-float*! gp-0 gp-0 (/ f0-5 f1-1))))) + #t) + (or (zero? (-> self control unknown-uint20)) + (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 12))) + (!= (-> self control unknown-uint31) 1)) + (target-shoved (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit)) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (and (< 4096.0 (-> self control unknown-float01)) + (or (time-elapsed? (-> self state-time) (seconds 0.1)) + (not (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons square)))) + (not (logtest? (-> self state-flags) (state-flags prevent-jump prevent-attack))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump))))) + (go target-attack-uppercut (-> *TARGET-bank* attack-jump-height-min) (-> *TARGET-bank* attack-jump-height-max))) + (if (and (logtest? (-> self water flags) (water-flags wt09)) (zero? (mod (- (current-time) (-> self state-time)) 21))) + (create-splash (-> self water) + (the-as float 0.6) + (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg mouth)) + 0 + (-> self control transv))) + (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) + (effect-control-method-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 23) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn (text-id misty-eco-red-first-use) "sksp0072" (the-as entity #f) *entity-pool* (game-task none))))) + :code + (behavior () + (if (logtest? (-> self water flags) (water-flags wt09)) (sound-play "swim-stroke")) + (ja-channel-push! 1 (seconds 0.02)) + (ja :group! eichar-attack-punch-ja :num! min) + (set! (-> self control dynam gravity-max) 368640.0) + (set! (-> self control dynam gravity-length) 368640.0) + (let ((f28-0 0.0) + (f30-0 1.0) + (gp-2 0)) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (when (not (ja-min? 0)) + (cond + ((and (>= (ja-aframe-num 0) 20.0) + (and (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-39 (ja-group))) + (or (not (or (= v1-39 eichar-attack-punch-ja) (= v1-39 eichar-attack-punch-end-ja) (= v1-39 eichar-attack-punch-alt-end-ja))) + (< 4096.0 (target-height-above-ground))))) + (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 12)))) + (go target-falling #f)) + ((and (nonzero? (-> self control unknown-uint30)) + (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint30)))) (the-as uint 12))) + (set-forward-vel (the-as float 0.0))) + ((and (not (cpad-hold? (-> self control unknown-cpad-info00 number) square)) + (time-elapsed? (-> self state-time) (seconds 0.05))) + (if (= (-> self control ground-pat material) (pat-material ice)) + (set-forward-vel (fmax 32768.0 (* 0.8 (-> self control unknown-float01)))) + (set-forward-vel (* 0.8 (-> self control unknown-float01))))) + ((ja-done? 0) (set-forward-vel f28-0)) + (else + (set! f28-0 (* (target-align-vel-z-adjust (-> self align delta trans z)) (-> *display* frames-per-second) f30-0)) + (set-forward-vel f28-0)))) + (let ((s5-1 (new-stack-vector0))) + (vector-matrix*! s5-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s5-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s5-1 (-> self control unknown-matrix01))) (suspend) - (ja :num! (loop!)) - (set! f0-8 (target-height-above-ground)) - (set! f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - ) - (ja-no-eval :group! eichar-attack-from-jump-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) + (if (time-elapsed? (-> self state-time) (seconds 0.1)) (set! (-> *run-attack-mods* turnvv) 0.0)) + (if (< 2 gp-2) (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140))))) + (+! gp-2 1))) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (time-elapsed? (-> self control unknown-dword11) (-> *TARGET-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-121 (ja-group))) + (or (not (or (= v1-121 eichar-attack-punch-ja) (= v1-121 eichar-attack-punch-end-ja) (= v1-121 eichar-attack-punch-alt-end-ja))) + (< 4096.0 (target-height-above-ground))))) + (go target-falling #f)) + (go target-stance)) + :post target-post) + +(defstate target-attack-air (target) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (let ((v0-0 (target-bonk-event-handler proc argc message block))) + (cond + (v0-0 (empty) v0-0) + (else (target-dangerous-event-handler proc argc message block))))) + :enter + (behavior ((arg0 symbol)) + (set-time! (-> self state-time)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (target-start-attack) + (target-danger-set! 'spin-air #f) + (set! (-> self control unknown-surface00) *jump-attack-mods*) + (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) (cond - ((< (ja-aframe-num 0) 32.0) - (quaternion-rotate-y! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (* f30-0 (seconds-per-frame)) - ) - ) + ((or (>= 0.0 f0-1) (= arg0 'flop)) + (let ((gp-1 (new-stack-vector0))) + (let ((f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-3))) + (let* ((f0-4 (vector-length gp-1)) + (f1-2 f0-4) + (f2-0 33775.48)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-1 gp-1 (/ f0-4 f1-2)))))) (else - (let ((f0-22 - (deg-diff - (quaternion-y-angle (-> self control unknown-quaternion00)) - (quaternion-y-angle (-> self control dir-targ)) - ) - ) - ) - (quaternion-rotate-y! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (* 0.2 (fabs f0-22)) - ) - ) - ) - ) + (let* ((f1-5 (/ f0-1 (* (-> self control dynam gravity-length) (seconds-per-frame)))) + (f30-0 (* 0.5 f1-5 (seconds-per-frame) f0-1))) + (if (ja-group? eichar-attack-uppercut-ja) + (set! f30-0 + (fmax 0.0 + (- (-> *TARGET-bank* attack-jump-height-max) + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control unknown-vector52))))))) + (let ((gp-2 (new-stack-vector0))) + (let ((f0-8 (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-8))) + (let* ((f0-9 (vector-length gp-2)) + (f1-11 f0-9) + (f2-7 (+ 1024.0 (sqrtf (* 245760.0 (+ 2048.0 f30-0)))))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-7) + (vector-float*! gp-2 gp-2 (/ f0-9 f1-11))))))))) + (set! (-> self control dynam gravity-length) 122880.0) + (set! (-> self control unknown-vector52 quad) (-> self control trans quad))) + :exit + (behavior () + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + ((-> target-attack exit))) + :trans + (behavior () + (when (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (go target-hit-ground #f)) + (if (time-elapsed? (-> self state-time) (seconds 0.5)) + (seek! (-> self control dynam gravity-length) + (-> self control unknown-dynamics00 gravity-length) + (* 245760.0 (seconds-per-frame)))) + (when (and (time-elapsed? (-> self state-time) (seconds 0.05)) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control unknown-vector10)) + (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length))) + (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) + (effect-control-method-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 70) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) + (level-hint-spawn (text-id misty-eco-red-first-use) "sksp0072" (the-as entity #f) *entity-pool* (game-task none)))) + :code + (behavior ((arg0 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! eichar-attack-from-jump-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-quat) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) (suspend) - (ja :num! (seek!)) - ) - ) - (go target-falling #f) - ) - :post target-post - ) + (ja :num! (seek!))) + (ja :group! eichar-attack-from-jump-loop-ja :num! min) + (let ((f30-0 393216.0)) + (let ((f0-8 (target-height-above-ground)) + (f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (while (not (or (and (< (fabs (/ f0-8 (* 0.0033333334 f1-1))) 150.0) (< f1-1 0.0)) + (time-elapsed? (-> self state-time) (seconds 1.7)))) + (quaternion-rotate-y! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* f30-0 (seconds-per-frame))) + (suspend) + (ja :num! (loop!)) + (set! f0-8 (target-height-above-ground)) + (set! f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))))) + (ja-no-eval :group! eichar-attack-from-jump-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (cond + ((< (ja-aframe-num 0) 32.0) + (quaternion-rotate-y! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* f30-0 (seconds-per-frame)))) + (else + (let ((f0-22 (deg-diff (quaternion-y-angle (-> self control unknown-quaternion00)) (quaternion-y-angle (-> self control dir-targ))))) + (quaternion-rotate-y! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (* 0.2 (fabs f0-22)))))) + (suspend) + (ja :num! (seek!)))) + (go target-falling #f)) + :post target-post) (defstate target-attack-uppercut (target) :event target-dangerous-event-handler - :enter (behavior ((arg0 float) (arg1 float)) - (set-time! (-> self state-time)) - (target-start-attack) - (target-danger-set! 'uppercut #f) - (set! (-> self control unknown-surface00) *turn-around-mods*) - ) + :enter + (behavior ((arg0 float) (arg1 float)) + (set-time! (-> self state-time)) + (target-start-attack) + (target-danger-set! 'uppercut #f) + (set! (-> self control unknown-surface00) *turn-around-mods*)) :exit target-exit - :code (behavior ((arg0 float) (arg1 float)) - (let ((s3-0 (ja-group? eichar-duck-stance-ja))) - (ja-no-eval :group! eichar-attack-uppercut-ja - :num! (seek! (ja-aframe (the-as float 7.0) 0)) - :frame-num (the-as float (if s3-0 - (ja-aframe (the-as float 5.0) 0) - 0.0 - ) - ) - ) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 7.0) 0))) - ) - (go target-attack-uppercut-jump arg0 arg1) - ) - :post target-post - ) + :code + (behavior ((arg0 float) (arg1 float)) + (let ((s3-0 (ja-group? eichar-duck-stance-ja))) + (ja-no-eval :group! + eichar-attack-uppercut-ja + :num! + (seek! (ja-aframe (the-as float 7.0) 0)) + :frame-num + (the-as float (if s3-0 (ja-aframe (the-as float 5.0) 0) 0.0)))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 7.0) 0)))) + (go target-attack-uppercut-jump arg0 arg1)) + :post target-post) (defstate target-attack-uppercut-jump (target) :event target-dangerous-event-handler - :enter (behavior ((arg0 float) (arg1 float)) - (if (and (= (-> self control ground-pat material) (pat-material ice)) - (< 32768.0 (-> self control unknown-float01)) - ) - (set-forward-vel (the-as float 32768.0)) - ) - (set-time! (-> self state-time)) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *uppercut-jump-mods*) - (target-start-attack) - (target-danger-set! 'uppercut #f) - ) + :enter + (behavior ((arg0 float) (arg1 float)) + (if (and (= (-> self control ground-pat material) (pat-material ice)) (< 32768.0 (-> self control unknown-float01))) + (set-forward-vel (the-as float 32768.0))) + (set-time! (-> self state-time)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *uppercut-jump-mods*) + (target-start-attack) + (target-danger-set! 'uppercut #f)) :exit target-exit - :trans (behavior () - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-hit-ground #f) - ) - (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 22118.4) - (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) - (not (logtest? (-> self state-flags) (state-flags prevent-attack))) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) - ) - ) - ) - (set-quaternion! (-> self control) (-> self control dir-targ)) - (build-conversions (-> self control transv)) - (go - target-flop - (the-as float 65502.96) - (the-as float -163840.0) - (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - 0.0 - 68812.8 - ) - ) - ) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) - (can-feet?) - (ja-group? eichar-attack-uppercut-ja) - (>= (ja-aframe-num 0) 12.0) - ) - (go target-attack-air 'uppercut) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) - (effect-control-method-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 23) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) - ) - (if (and (= (-> self control unknown-symbol30) 'uppercut) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) -8192.0) - ) - (target-danger-set! 'harmless #f) - ) - (slide-down-test) - ) - :code (behavior ((arg0 float) (arg1 float)) - (compute-alignment! (-> self align)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.9)) + :trans + (behavior () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-hit-ground #f)) + (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 22118.4) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) + (not (logtest? (-> self state-flags) (state-flags prevent-attack))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08))))) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (build-conversions (-> self control transv)) + (go target-flop + (the-as float 65502.96) + (the-as float -163840.0) + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) 0.0 68812.8)))) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) + (can-feet?) + (ja-group? eichar-attack-uppercut-ja) + (>= (ja-aframe-num 0) 12.0)) + (go target-attack-air 'uppercut)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) + (effect-control-method-10 (-> self skel effect) 'group-red-eco-spinkick (ja-frame-num 0) 23) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))) + (if (and (= (-> self control unknown-symbol30) 'uppercut) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) -8192.0)) + (target-danger-set! 'harmless #f)) + (slide-down-test)) + :code + (behavior ((arg0 float) (arg1 float)) (compute-alignment! (-> self align)) - (let* ((gp-0 (-> self align)) - (s5-0 (method-of-object gp-0 align!)) - (a1-2 (cond - ((>= 30.0 (ja-aframe-num 0)) - 18 - ) - ((>= 43.0 (ja-aframe-num 0)) - (set! (-> self control unknown-surface00) *double-jump-mods*) - 2 - ) - (else - 0 - ) - ) - ) - ) - (s5-0 gp-0 (the-as align-opts a1-2) (the-as float 1.0) (the-as float 0.95) (the-as float 1.0)) - ) - ) - (go target-falling #f) - ) - :post target-post - ) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.9)) + (compute-alignment! (-> self align)) + (let* ((gp-0 (-> self align)) + (s5-0 (method-of-object gp-0 align!)) + (a1-2 (cond + ((>= 30.0 (ja-aframe-num 0)) 18) + ((>= 43.0 (ja-aframe-num 0)) (set! (-> self control unknown-surface00) *double-jump-mods*) 2) + (else 0)))) + (s5-0 gp-0 (the-as align-opts a1-2) (the-as float 1.0) (the-as float 0.95) (the-as float 1.0)))) + (go target-falling #f)) + :post target-post) (defstate target-flop (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (let ((v0-0 (target-bonk-event-handler proc argc message block))) - (cond - (v0-0 - (empty) - v0-0 - ) - ((let ((v1-0 message)) - (= v1-0 'swim) - ) - (cond - ((< 6144.0 (target-height-above-ground)) - (effect-control-method-10 (-> self skel effect) 'swim-flop (the-as float -1.0) -1) - (let ((t9-3 enter-state)) - (set! (-> self next-state) target-swim-down) - ((the-as (function object :behavior target) t9-3)) - ) - ) - (else - (let ((t9-4 enter-state) - (a0-4 'swim) - ) - (set! (-> self next-state) target-flop-hit-ground) - ((the-as (function symbol object :behavior target) t9-4) a0-4) - ) - ) - ) - ) - (else - (target-dangerous-event-handler proc argc message block) - ) - ) - ) - ) - :enter (behavior ((arg0 float) (arg1 float) (arg2 float)) - (if (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) - (go target-yellow-jump-blast) - ) - (if (= arg2 0.0) - (set-forward-vel arg2) - (set-forward-vel (-> self control unknown-float01)) - ) - (set-time! (-> self state-time)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *flop-mods*) - (set! (-> self control unknown-uint20) (the-as uint 0)) - (set! (-> self control dynam gravity-max) 245760.0) - (set! (-> self control dynam gravity-length) 245760.0) - (let ((gp-1 (new-stack-vector0))) - (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-6)) - ) - (let* ((f0-7 (vector-length gp-1)) - (f1-3 f0-7) - (f2-0 29491.2) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) - (vector-float*! gp-1 gp-1 (/ f0-7 f1-3)) - ) - ) - ) - ) - :exit (behavior () - (target-danger-set! 'harmless #f) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad)) - ) - :trans (behavior () - (delete-back-vel) - (let ((gp-1 (logtest? (-> self control status) (cshape-moving-flags onsurf)))) - (when (and (not gp-1) (let ((v1-6 (ja-group))) - (or (= v1-6 eichar-flop-down-loop-ja) (= v1-6 eichar-moving-flop-down-ja)) - ) - ) - ;; og:preserve-this changed for high fps. This fixes the invisible wall when flopping - (when (and (or (< (target-move-dist (the time-frame (* (-> *display* time-adjust-ratio) (seconds 0.1)))) - (* (-> *display* time-adjust-ratio) 1638.4) - ) - (and (logtest? (-> self control status) (cshape-moving-flags twall)) (< 0.7 (-> self control poly-angle))) - ) - (not (logtest? (-> self control status) (cshape-moving-flags t-act))) - (>= (-> self control unknown-uint20) (the-as uint 2)) - ) - (set-time! (-> self control unknown-dword36)) - (set! gp-1 'stuck) - ) - ) - (when gp-1 - (logior! (-> self control status) (cshape-moving-flags onsurf)) - (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) - (effect-control-method-10 (-> self skel effect) 'group-red-eco-strike-ground (ja-frame-num 0) 0) - (let ((s5-1 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) 4096.0 30 :to self))) - (send-event (ppointer->process s5-1) 'event 'attack 'flop) - (send-event - (ppointer->process s5-1) - 'function - (lambda ((arg0 target)) (let ((f0-3 (seek - (-> arg0 control root-prim local-sphere w) - (the-as float 28672.0) - (* 286720.0 DISPLAY_FPS_RATIO 0.016666668) ;; og:preserve-this changed for high fps - ) - ) - ) - (set! (-> arg0 control root-prim local-sphere w) f0-3) - f0-3 - ) - ) - ) - ) - ) - (go target-flop-hit-ground gp-1) - ) - ) - (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) - (effect-control-method-10 - (-> self skel effect) - 'group-red-eco-spinkick - (ja-frame-num 0) - (if (rand-vu-percent? (the-as float 0.5)) - 23 - 17 - ) - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) - ) - (when (and (not (-> self control unknown-symbol30)) (ja-group? eichar-flop-down-ja) (>= (ja-aframe-num 0) 8.0)) - (target-start-attack) - (target-danger-set! 'flop #f) - ) - ) - :code (behavior ((arg0 float) (arg1 float) (arg2 float)) - (ja-channel-set! 2) - (ja-no-eval :group! eichar-flop-down-ja :num! (seek!) :frame-num 0.0) - (ja :chan 1 :group! eichar-moving-flop-down-ja :num! (chan 0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - (ja :chan 1 :num! (seek!) :frame-interp (lerp-scale - (the-as float 0.0) - (the-as float 1.0) - (-> self control unknown-float01) - (the-as float 0.0) - (the-as float 40960.0) - ) - ) - ) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad)) - (target-danger-set! 'flop-down #f) - (ja :group! eichar-flop-down-loop-ja :num! min) - (ja :chan 1 :group! eichar-moving-flop-down-loop-ja :num! min) - (let ((f30-0 1.0)) - (let ((gp-3 (new-stack-vector0))) - (let ((f0-18 (vector-dot (-> self control dynam gravity-normal) (-> self control unknown-vector120)))) - 0.0 - (vector-! - gp-3 - (-> self control unknown-vector120) - (vector-float*! gp-3 (-> self control dynam gravity-normal) f0-18) - ) - ) - (let* ((f0-19 (vector-length gp-3)) - (f1-1 f0-19) - (f2-0 -368640.0) - ) - (vector+! - (-> self control unknown-vector120) - (vector-float*! (-> self control unknown-vector120) (-> self control dynam gravity-normal) f2-0) - (vector-float*! gp-3 gp-3 (/ f0-19 f1-1)) - ) - ) - ) - (let ((gp-4 (new-stack-vector0))) - (let ((f0-22 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-4 (-> self control transv) (vector-float*! gp-4 (-> self control dynam gravity-normal) f0-22)) - ) - (let* ((f0-23 (vector-length gp-4)) - (f1-3 f0-23) - (f2-2 (* -368640.0 f30-0)) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) - (vector-float*! gp-4 gp-4 (/ f0-23 f1-3)) - ) - ) - ) - (suspend) - (loop - (+! (-> self control unknown-uint20) 1) - (ja :num! (+!)) - (ja :chan 1 :num! (chan 0) :frame-interp (lerp-scale - (the-as float 0.0) - (the-as float 1.0) - (-> self control unknown-float01) - (the-as float 0.0) - (the-as float 40960.0) - ) - ) - (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) - (let ((gp-6 (new-stack-vector0)) - (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (let ((v0-0 (target-bonk-event-handler proc argc message block))) + (cond + (v0-0 (empty) v0-0) + ((let ((v1-0 message)) (= v1-0 'swim)) + (cond + ((< 6144.0 (target-height-above-ground)) + (effect-control-method-10 (-> self skel effect) 'swim-flop (the-as float -1.0) -1) + (let ((t9-3 enter-state)) + (set! (-> self next-state) target-swim-down) + ((the-as (function object :behavior target) t9-3)))) + (else + (let ((t9-4 enter-state) + (a0-4 'swim)) + (set! (-> self next-state) target-flop-hit-ground) + ((the-as (function symbol object :behavior target) t9-4) a0-4))))) + (else (target-dangerous-event-handler proc argc message block))))) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 float)) + (if (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) + (go target-yellow-jump-blast)) + (if (= arg2 0.0) (set-forward-vel arg2) (set-forward-vel (-> self control unknown-float01))) + (set-time! (-> self state-time)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *flop-mods*) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control dynam gravity-max) 245760.0) + (set! (-> self control dynam gravity-length) 245760.0) + (let ((gp-1 (new-stack-vector0))) + (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! gp-6 (-> self control transv) (vector-float*! gp-6 (-> self control dynam gravity-normal) f28-0)) - (let* ((f1-5 (vector-length gp-6)) - (f0-34 f1-5) - ) - (if (< (-> self control unknown-surface01 transv-max) f1-5) - (set! f1-5 (-> self control unknown-surface01 transv-max)) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) - (vector-float*! gp-6 gp-6 (/ f1-5 f0-34)) - ) - ) - ) - (if (time-elapsed? (-> self state-time) (-> *TARGET-bank* fall-timeout)) - (go target-falling #f) - ) - (if (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*)) - (go target-falling #f) - ) + (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-6))) + (let* ((f0-7 (vector-length gp-1)) + (f1-3 f0-7) + (f2-0 29491.2)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-1 gp-1 (/ f0-7 f1-3)))))) + :exit + (behavior () + (target-danger-set! 'harmless #f) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad))) + :trans + (behavior () + (delete-back-vel) + (let ((gp-1 (logtest? (-> self control status) (cshape-moving-flags onsurf)))) + (when (and (not gp-1) (let ((v1-6 (ja-group))) (or (= v1-6 eichar-flop-down-loop-ja) (= v1-6 eichar-moving-flop-down-ja)))) + ;; og:preserve-this changed for high fps. This fixes the invisible wall when flopping + (when (and (or (< (target-move-dist (the time-frame (* (-> *display* time-adjust-ratio) (seconds 0.1)))) + (* (-> *display* time-adjust-ratio) 1638.4)) + (and (logtest? (-> self control status) (cshape-moving-flags twall)) (< 0.7 (-> self control poly-angle)))) + (not (logtest? (-> self control status) (cshape-moving-flags t-act))) + (>= (-> self control unknown-uint20) (the-as uint 2))) + (set-time! (-> self control unknown-dword36)) + (set! gp-1 'stuck))) + (when gp-1 + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) + (effect-control-method-10 (-> self skel effect) 'group-red-eco-strike-ground (ja-frame-num 0) 0) + (let ((s5-1 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) 4096.0 30 :to self))) + (send-event (ppointer->process s5-1) 'event 'attack 'flop) + (send-event (ppointer->process s5-1) + 'function + (lambda ((arg0 target)) + (let ((f0-3 (seek (-> arg0 control root-prim local-sphere w) + (the-as float 28672.0) + (* 286720.0 DISPLAY_FPS_RATIO 0.016666668) ;; og:preserve-this changed for high fps + ))) + (set! (-> arg0 control root-prim local-sphere w) f0-3) + f0-3))))) + (go target-flop-hit-ground gp-1))) + (when (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) + (effect-control-method-10 (-> self skel effect) + 'group-red-eco-spinkick + (ja-frame-num 0) + (if (rand-vu-percent? (the-as float 0.5)) 23 17)) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))) + (when (and (not (-> self control unknown-symbol30)) (ja-group? eichar-flop-down-ja) (>= (ja-aframe-num 0) 8.0)) + (target-start-attack) + (target-danger-set! 'flop #f))) + :code + (behavior ((arg0 float) (arg1 float) (arg2 float)) + (ja-channel-set! 2) + (ja-no-eval :group! eichar-flop-down-ja :num! (seek!) :frame-num 0.0) + (ja :chan 1 :group! eichar-moving-flop-down-ja :num! (chan 0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 + :num! (seek!) + :frame-interp + (lerp-scale (the-as float 0.0) + (the-as float 1.0) + (-> self control unknown-float01) + (the-as float 0.0) + (the-as float 40960.0)))) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad)) + (target-danger-set! 'flop-down #f) + (ja :group! eichar-flop-down-loop-ja :num! min) + (ja :chan 1 :group! eichar-moving-flop-down-loop-ja :num! min) + (let ((f30-0 1.0)) + (let ((gp-3 (new-stack-vector0))) + (let ((f0-18 (vector-dot (-> self control dynam gravity-normal) (-> self control unknown-vector120)))) + 0.0 + (vector-! gp-3 (-> self control unknown-vector120) (vector-float*! gp-3 (-> self control dynam gravity-normal) f0-18))) + (let* ((f0-19 (vector-length gp-3)) + (f1-1 f0-19) + (f2-0 -368640.0)) + (vector+! (-> self control unknown-vector120) + (vector-float*! (-> self control unknown-vector120) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-3 gp-3 (/ f0-19 f1-1))))) + (let ((gp-4 (new-stack-vector0))) + (let ((f0-22 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-4 (-> self control transv) (vector-float*! gp-4 (-> self control dynam gravity-normal) f0-22))) + (let* ((f0-23 (vector-length gp-4)) + (f1-3 f0-23) + (f2-2 (* -368640.0 f30-0))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! gp-4 gp-4 (/ f0-23 f1-3))))) (suspend) - ) - ) - ) - :post target-post - ) + (loop + (+! (-> self control unknown-uint20) 1) + (ja :num! (+!)) + (ja :chan 1 + :num! + (chan 0) + :frame-interp + (lerp-scale (the-as float 0.0) + (the-as float 1.0) + (-> self control unknown-float01) + (the-as float 0.0) + (the-as float 40960.0))) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) + (let ((gp-6 (new-stack-vector0)) + (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-6 (-> self control transv) (vector-float*! gp-6 (-> self control dynam gravity-normal) f28-0)) + (let* ((f1-5 (vector-length gp-6)) + (f0-34 f1-5)) + (if (< (-> self control unknown-surface01 transv-max) f1-5) (set! f1-5 (-> self control unknown-surface01 transv-max))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) + (vector-float*! gp-6 gp-6 (/ f1-5 f0-34))))) + (if (time-elapsed? (-> self state-time) (-> *TARGET-bank* fall-timeout)) (go target-falling #f)) + (if (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*)) + (go target-falling #f)) + (suspend)))) + :post target-post) (defstate target-flop-hit-ground (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('swim) - #f - ) - (else - (target-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior ((arg0 symbol)) - (let ((f0-1 (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) (-> self control trans)) - ) - ) - ) - (if (< (-> *TARGET-bank* fall-far) f0-1) - (go target-hit-ground-hard f0-1) - ) - ) - (target-land-effect) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.1)) - (set-time! (-> self state-time)) - (set! (-> self control unknown-uint20) (the-as uint arg0)) - (set-forward-vel (the-as float 0.0)) - (set! (-> self control unknown-surface00) *flop-land-mods*) - (logclear! (-> *flop-land-mods* flags) (surface-flags allow-edge-grab)) - (logior! (-> self state-flags) (state-flags flop-hit-ground)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('swim) #f) + (else (target-standard-event-handler proc argc message block)))) + :enter + (behavior ((arg0 symbol)) + (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) (-> self control trans))))) + (if (< (-> *TARGET-bank* fall-far) f0-1) (go target-hit-ground-hard f0-1))) + (target-land-effect) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.1)) + (set-time! (-> self state-time)) + (set! (-> self control unknown-uint20) (the-as uint arg0)) + (set-forward-vel (the-as float 0.0)) + (set! (-> self control unknown-surface00) *flop-land-mods*) + (logclear! (-> *flop-land-mods* flags) (surface-flags allow-edge-grab)) + (logior! (-> self state-flags) (state-flags flop-hit-ground))) :exit target-exit - :trans (behavior () - (when (!= (-> self control unknown-spoolanim00) 'stuck) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) - (go target-attack-air 'flop) - ) - ) - (when (and (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) - (not (time-elapsed? (-> self state-time) (seconds 0.25))) - ) - (effect-control-method-10 - (-> self skel effect) - 'group-red-eco-spinkick - (ja-frame-num 0) - (if (rand-vu-percent? (the-as float 0.5)) - 23 - 17 - ) - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1)) - ) - (let ((v1-33 (ja-group))) - (if (and (or (= v1-33 eichar-flop-down-land-ja) (= v1-33 eichar-moving-flop-down-land-ja)) - (>= (ja-aframe-num 0) 28.0) - ) - (logior! (-> *flop-land-mods* flags) (surface-flags allow-edge-grab)) - ) - ) - (slide-down-test) - ) - :code (behavior ((arg0 symbol)) - (target-hit-ground-anim arg0) - (go target-falling #f) - ) - :post target-post - ) + :trans + (behavior () + (when (!= (-> self control unknown-spoolanim00) 'stuck) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) (go target-attack-air 'flop))) + (when (and (and (= (-> self fact eco-type) (pickup-type eco-red)) (>= (-> self fact eco-level) 1.0)) + (not (time-elapsed? (-> self state-time) (seconds 0.25)))) + (effect-control-method-10 (-> self skel effect) + 'group-red-eco-spinkick + (ja-frame-num 0) + (if (rand-vu-percent? (the-as float 0.5)) 23 17)) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 153 (seconds 0.1))) + (let ((v1-33 (ja-group))) + (if (and (or (= v1-33 eichar-flop-down-land-ja) (= v1-33 eichar-moving-flop-down-land-ja)) (>= (ja-aframe-num 0) 28.0)) + (logior! (-> *flop-land-mods* flags) (surface-flags allow-edge-grab)))) + (slide-down-test)) + :code + (behavior ((arg0 symbol)) + (target-hit-ground-anim arg0) + (go target-falling #f)) + :post target-post) (defstate target-wheel (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (= message 'touched) - (send-event proc 'roll) - ) - (target-standard-event-handler proc argc message block) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *wheel-mods*) - (+! (-> self control unknown-int50) 1) - (rot->dir-targ! (-> self control)) - (set-forward-vel (+ (-> *TARGET-bank* wheel-speed-min) - (* (-> *TARGET-bank* wheel-speed-inc) (the float (+ (-> self control unknown-int50) -1))) - ) - ) - (if (or (< (fabs (-> self control unknown-float62)) 0.3) (< 0.3 (fabs (-> self control unknown-float61)))) - (set! (-> self control unknown-float81) 1.0) - ) - (set! (-> self control unknown-uint20) (the-as uint 0)) - (set! (-> self control unknown-int21) 0) - 0 - ) - :exit (behavior () - (when (!= (-> self next-state name) 'target-wheel) - (set! (-> self control unknown-int50) 0) - (set-time! (-> self control unknown-dword30)) - ) - (target-exit) - ) - :code (behavior () - (let ((gp-0 0)) - 0 - (let ((s5-0 0) - (f30-0 1.0) - ) - (ja-channel-push! 1 (seconds 0.04)) - (ja :group! eichar-duck-roll-ja :num! min) - (until (ja-done? 0) - (if (cpad-pressed? (-> self control unknown-cpad-info00 number) x) - (set! gp-0 (the-as int (current-time))) - ) - (when (and (or (smack-surface? #f) (>= (-> self control unknown-float63) 0.7)) - (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 3)) - (time-elapsed? (-> self state-time) 1) - ) - (if (>= 6.0 (ja-aframe-num 0)) - (target-shoved - (-> *TARGET-bank* smack-surface-dist) - (-> *TARGET-bank* smack-surface-height) - (the-as process #f) - target-hit - ) - ) - (if (zero? s5-0) - (set! s5-0 (the-as int (current-time))) - ) - ) - (if (cpad-pressed? (-> self control unknown-cpad-info00 number) square) - (current-time) - ) - (compute-alignment! (-> self align)) - (cond - ((nonzero? s5-0) - ) - (else - (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) f30-0) - (let ((s4-1 (new-stack-vector0))) - (vector-matrix*! s4-1 (-> self control transv) (-> self control unknown-matrix00)) - (set! (-> s4-1 y) 0.0) - (vector-matrix*! (-> self control unknown-vector120) s4-1 (-> self control unknown-matrix01)) - ) - ) - ) - (suspend) - (ja :num! (seek!)) - (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) - ) - ) - (if (and (or (not (time-elapsed? (the-as time-frame gp-0) (-> *TARGET-bank* wheel-jump-pre-window))) - (cpad-pressed? (-> self control unknown-cpad-info00 number) x) - ) - (can-jump? 'target-wheel-flip) - ) - (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist)) - ) - ) - (set-time! (-> self state-hook-time)) - (set! (-> self state-hook) - (lambda :behavior target - () + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (= message 'touched) (send-event proc 'roll)) + (target-standard-event-handler proc argc message block)) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *wheel-mods*) + (+! (-> self control unknown-int50) 1) + (rot->dir-targ! (-> self control)) + (set-forward-vel (+ (-> *TARGET-bank* wheel-speed-min) + (* (-> *TARGET-bank* wheel-speed-inc) (the float (+ (-> self control unknown-int50) -1))))) + (if (or (< (fabs (-> self control unknown-float62)) 0.3) (< 0.3 (fabs (-> self control unknown-float61)))) + (set! (-> self control unknown-float81) 1.0)) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control unknown-int21) 0) + 0) + :exit + (behavior () + (when (!= (-> self next-state name) 'target-wheel) + (set! (-> self control unknown-int50) 0) + (set-time! (-> self control unknown-dword30))) + (target-exit)) + :code + (behavior () + (let ((gp-0 0)) + 0 + (let ((s5-0 0) + (f30-0 1.0)) + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! eichar-duck-roll-ja :num! min) + (until (ja-done? 0) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) x) (set! gp-0 (the-as int (current-time)))) + (when (and (or (smack-surface? #f) (>= (-> self control unknown-float63) 0.7)) + (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 3)) + (time-elapsed? (-> self state-time) 1)) + (if (>= 6.0 (ja-aframe-num 0)) + (target-shoved (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit)) + (if (zero? s5-0) (set! s5-0 (the-as int (current-time))))) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) square) (current-time)) + (compute-alignment! (-> self align)) (cond - ((time-elapsed? (-> self state-hook-time) (-> *TARGET-bank* wheel-jump-post-window)) - (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) - ) + ((nonzero? s5-0)) (else - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? 'target-wheel-flip) - ) - (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist)) - ) - ) - ) - (none) - ) - ) - (go target-duck-stance) - ) - :post target-post - ) + (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) f30-0) + (let ((s4-1 (new-stack-vector0))) + (vector-matrix*! s4-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s4-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s4-1 (-> self control unknown-matrix01))))) + (suspend) + (ja :num! (seek!)) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))))) + (if (and (or (not (time-elapsed? (the-as time-frame gp-0) (-> *TARGET-bank* wheel-jump-pre-window))) + (cpad-pressed? (-> self control unknown-cpad-info00 number) x)) + (can-jump? 'target-wheel-flip)) + (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist)))) + (set-time! (-> self state-hook-time)) + (set! (-> self state-hook) + (lambda :behavior target () + (cond + ((time-elapsed? (-> self state-hook-time) (-> *TARGET-bank* wheel-jump-post-window)) + (set! (-> self state-hook) (the-as (function none :behavior target) nothing))) + (else + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? 'target-wheel-flip)) + (go target-wheel-flip (-> *TARGET-bank* wheel-flip-height) (-> *TARGET-bank* wheel-flip-dist))))) + (none))) + (go target-duck-stance)) + :post target-post) (defstate target-wheel-flip (target) :event target-standard-event-handler - :enter (behavior ((arg0 float) (arg1 float)) - (set! (-> self control unknown-surface00) *wheel-flip-mods*) - ) + :enter + (behavior ((arg0 float) (arg1 float)) + (set! (-> self control unknown-surface00) *wheel-flip-mods*)) :exit target-exit - :trans (behavior () - (if (and (or (smack-surface? #f) - (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) - ) - (!= (-> self state-time) (current-time)) - ) - (target-shoved - (-> *TARGET-bank* smack-surface-dist) - (-> *TARGET-bank* smack-surface-height) - (the-as process #f) - target-hit - ) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) - (can-feet?) - (and (ja-group? eichar-jump-loop-ja) (= (-> self skel root-channel 0) (-> self skel channel))) - ) - (go target-attack-air #f) - ) - ) - :code (behavior ((arg0 float) (arg1 float)) - (ja-channel-push! 1 (seconds 0.04)) - (ja :group! eichar-wheel-flip-ja :num! min) - (let ((f30-0 1.0)) - (until (or (ja-max? 0) - (and (>= (ja-aframe-num 0) 4.0) (logtest? (-> self control status) (cshape-moving-flags onsurf))) - ) - (when (and (>= (ja-aframe-num 0) 3.0) (not (-> self control unknown-symbol30))) - (set! (-> self event-hook) target-dangerous-event-handler) - (target-start-attack) - (target-danger-set! 'flip #f) - ) - (compute-alignment! (-> self align)) - (if (not (ja-max? 0)) - (align! - (-> self align) - (align-opts adjust-y-vel adjust-xz-vel) - (the-as float 1.0) - (/ arg0 (-> *TARGET-bank* wheel-flip-art-height)) - (* f30-0 (/ arg1 (-> *TARGET-bank* wheel-flip-art-dist))) - ) - (align! - (-> self align) - (align-opts adjust-xz-vel) - (the-as float 1.0) - (the-as float 1.0) - (* f30-0 (/ arg1 (-> *TARGET-bank* wheel-flip-art-dist))) - ) - ) - (let ((s4-1 (new-stack-vector0))) - (vector-matrix*! s4-1 (-> self control transv) (-> self control unknown-matrix00)) - (set! (-> s4-1 y) 0.0) - (vector-matrix*! (-> self control unknown-vector120) s4-1 (-> self control unknown-matrix01)) - ) + :trans + (behavior () + (if (and (or (smack-surface? #f) (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance))) + (!= (-> self state-time) (current-time))) + (target-shoved (-> *TARGET-bank* smack-surface-dist) + (-> *TARGET-bank* smack-surface-height) + (the-as process #f) + target-hit)) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) + (can-feet?) + (and (ja-group? eichar-jump-loop-ja) (= (-> self skel root-channel 0) (-> self skel channel)))) + (go target-attack-air #f))) + :code + (behavior ((arg0 float) (arg1 float)) + (ja-channel-push! 1 (seconds 0.04)) + (ja :group! eichar-wheel-flip-ja :num! min) + (let ((f30-0 1.0)) + (until (or (ja-max? 0) (and (>= (ja-aframe-num 0) 4.0) (logtest? (-> self control status) (cshape-moving-flags onsurf)))) + (when (and (>= (ja-aframe-num 0) 3.0) (not (-> self control unknown-symbol30))) + (set! (-> self event-hook) target-dangerous-event-handler) + (target-start-attack) + (target-danger-set! 'flip #f)) + (compute-alignment! (-> self align)) + (if (not (ja-max? 0)) + (align! (-> self align) + (align-opts adjust-y-vel adjust-xz-vel) + (the-as float 1.0) + (/ arg0 (-> *TARGET-bank* wheel-flip-art-height)) + (* f30-0 (/ arg1 (-> *TARGET-bank* wheel-flip-art-dist)))) + (align! (-> self align) + (align-opts adjust-xz-vel) + (the-as float 1.0) + (the-as float 1.0) + (* f30-0 (/ arg1 (-> *TARGET-bank* wheel-flip-art-dist))))) + (let ((s4-1 (new-stack-vector0))) + (vector-matrix*! s4-1 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> s4-1 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) s4-1 (-> self control unknown-matrix01))) + (suspend) + (ja :num! (seek!)) + (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))))) + (set-time! (-> self state-time)) + (while (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (when (time-elapsed? (-> self state-time) (seconds 0.01)) + (when (not (ja-group? eichar-jump-loop-ja)) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! eichar-jump-loop-ja :num! min))) + (let ((gp-2 (new-stack-vector0)) + (f30-1 (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) f30-1)) + (let* ((f1-6 (vector-length gp-2)) + (f0-21 f1-6) + (f1-7 (* 0.9 f1-6))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-1) + (vector-float*! gp-2 gp-2 (/ f1-7 f0-21))))) (suspend) - (ja :num! (seek!)) - (set! f30-0 (* f30-0 (fmin 1.0 (-> self control unknown-float140)))) - ) - ) - (set-time! (-> self state-time)) - (while (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (when (time-elapsed? (-> self state-time) (seconds 0.01)) - (when (not (ja-group? eichar-jump-loop-ja)) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! eichar-jump-loop-ja :num! min) - ) - ) - (let ((gp-2 (new-stack-vector0)) - (f30-1 (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) f30-1)) - (let* ((f1-6 (vector-length gp-2)) - (f0-21 f1-6) - (f1-7 (* 0.9 f1-6)) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-1) - (vector-float*! gp-2 gp-2 (/ f1-7 f0-21)) - ) - ) - ) - (suspend) - (if (ja-group? eichar-jump-loop-ja) - (ja :num! (loop!)) - (ja :num-func num-func-identity :frame-num max) - ) - ) - (target-land-effect) - (set-time! (-> self state-hook-time)) - (set! (-> self state-hook) - (lambda :behavior target - () - (cond - ((time-elapsed? (-> self state-hook-time) (seconds 0.1)) - (set! (-> self state-hook) (the-as (function none :behavior target) nothing)) - ) - (else - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-high-jump (-> *TARGET-bank* flip-jump-height-min) (-> *TARGET-bank* flip-jump-height-max) 'flip) - ) - ) - ) - (none) - ) - ) - (if (ja-group? eichar-jump-loop-ja) - (go target-hit-ground #f) - (go target-stance) - ) - ) - :post target-post - ) + (if (ja-group? eichar-jump-loop-ja) (ja :num! (loop!)) (ja :num-func num-func-identity :frame-num max))) + (target-land-effect) + (set-time! (-> self state-hook-time)) + (set! (-> self state-hook) + (lambda :behavior target () + (cond + ((time-elapsed? (-> self state-hook-time) (seconds 0.1)) + (set! (-> self state-hook) (the-as (function none :behavior target) nothing))) + (else + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-high-jump (-> *TARGET-bank* flip-jump-height-min) (-> *TARGET-bank* flip-jump-height-max) 'flip)))) + (none))) + (if (ja-group? eichar-jump-loop-ja) (go target-hit-ground #f) (go target-stance))) + :post target-post) diff --git a/goal_src/jak1/engine/target/target2.gc b/goal_src/jak1/engine/target/target2.gc index e06a3e39b8..12f4415ac2 100644 --- a/goal_src/jak1/engine/target/target2.gc +++ b/goal_src/jak1/engine/target/target2.gc @@ -1,184 +1,131 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/game/projectiles-h.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/target/target.gc") - -;; name: target2.gc -;; name in dgo: target2 -;; dgos: GAME, ENGINE - (declare-type first-person-hud process) - - ;; DECOMP BEGINS (defstate target-load-wait (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('loading) - (set-time! (-> self state-time)) - #f - ) - (else - (target-standard-event-handler proc argc message block) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('loading) (set-time! (-> self state-time)) #f) + (else (target-standard-event-handler proc argc message block)))) :exit target-exit - :code (behavior () - (set! (-> self control unknown-surface00) *walk-no-turn-mods*) - (set-time! (-> self state-time)) - (while (not (time-elapsed? (-> self state-time) (seconds 0.05))) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! eichar-trip-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) - (send-event *camera* 'joystick 0.0 0.0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 0.3)) + :code + (behavior () + (set! (-> self control unknown-surface00) *walk-no-turn-mods*) + (set-time! (-> self state-time)) + (while (not (time-elapsed? (-> self state-time) (seconds 0.05))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! eichar-trip-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) + (send-event *camera* 'joystick 0.0 0.0) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 19.0) 0) 0.05)) + (ja :num! (seek!))) + (let ((gp-0 (current-time))) + (until (time-elapsed? gp-0 (seconds 0.3)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 19.0) 0) 0.05)) + (suspend))) + (ja-channel-push! 1 (seconds 0.3)) + (ja-no-eval :group! eichar-painful-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 40.0) 0)) + (until (ja-done? 0) (suspend) - ) - ) - (ja-channel-push! 1 (seconds 0.3)) - (ja-no-eval :group! eichar-painful-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 40.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! eichar-painful-land-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (go target-stance) - ) - :post target-no-stick-post - ) + (ja :num! (seek!))) + (ja-no-eval :group! eichar-painful-land-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (go target-stance)) + :post target-no-stick-post) (defstate target-stance-ambient (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('movie) - (go target-stance) - ) - (else - (target-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set! (-> self neck flex-blend) 0.0) - ((-> target-stance enter)) - (let ((v1-2 (rand-vu-int-count 4))) - (cond - ((zero? v1-2) - (set! (-> self control unknown-uint20) - (the-as uint (new 'static 'spool-anim :name "eichar-ambient-1" :index #xe7 :parts 1 :command-list '())) - ) - ) - ((= v1-2 1) - (set! (-> self control unknown-uint20) - (the-as uint (new 'static 'spool-anim :name "eichar-ambient-2" :index #xe8 :parts 1 :command-list '())) - ) - ) - ((= v1-2 2) - (set! (-> self control unknown-uint20) - (the-as uint (new 'static 'spool-anim :name "eichar-ambient-3" :index #xe9 :parts 1 :command-list '())) - ) - ) - (else - (set! (-> self control unknown-uint20) - (the-as uint (new 'static 'spool-anim :name "eichar-ambient-4" :index #xea :parts 1 :command-list '())) - ) - ) - ) - ) - (set-time! (-> self state-time)) - ) - :exit (behavior () - (let ((a0-0 (-> self control unknown-spoolanim00))) - (when a0-0 - (ja-abort-spooled-anim a0-0 (the-as art-joint-anim #f) -1) - (ja-channel-set! 1) - (ja :group! eichar-stance-loop-ja :num! min) - ) - ) - ((-> target-stance exit)) - (target-exit) - ) - :trans (behavior () - (spool-push *art-control* (-> self control unknown-spoolanim00 name) 0 self (the-as float -99.0)) - (if (or (cpad-hold? (-> self control unknown-cpad-info00 number) start l1 r1 triangle circle x square) - *progress-process* - ) - (go target-stance) - ) - ) - :code (behavior () - (while (let ((v1-13 (file-status *art-control* (-> self control unknown-spoolanim00 name) 0))) - (not (or (= v1-13 'locked) (= v1-13 'active))) - ) - (suspend) - (ja :num! (loop!)) - (ja :chan 1 :num! (chan 0)) - (ja :chan 2 :num! (chan 0)) - ) - (ja-play-spooled-anim - (-> self control unknown-spoolanim00) - (the-as art-joint-anim eichar-stance-loop-ja) - (the-as art-joint-anim eichar-stance-loop-ja) - (the-as (function process-drawable symbol) (lambda () (!= (-> *cpad-list* cpads 0 stick0-speed) 0.0))) - ) - (set! (-> self control unknown-uint20) (the-as uint #f)) - (go target-stance) - ) - :post target-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('movie) (go target-stance)) + (else (target-standard-event-handler proc argc message block)))) + :enter + (behavior () + (set! (-> self neck flex-blend) 0.0) + ((-> target-stance enter)) + (let ((v1-2 (rand-vu-int-count 4))) + (cond + ((zero? v1-2) + (set! (-> self control unknown-uint20) + (the-as uint (new 'static 'spool-anim :name "eichar-ambient-1" :index #xe7 :parts 1 :command-list '())))) + ((= v1-2 1) + (set! (-> self control unknown-uint20) + (the-as uint (new 'static 'spool-anim :name "eichar-ambient-2" :index #xe8 :parts 1 :command-list '())))) + ((= v1-2 2) + (set! (-> self control unknown-uint20) + (the-as uint (new 'static 'spool-anim :name "eichar-ambient-3" :index #xe9 :parts 1 :command-list '())))) + (else + (set! (-> self control unknown-uint20) + (the-as uint (new 'static 'spool-anim :name "eichar-ambient-4" :index #xea :parts 1 :command-list '())))))) + (set-time! (-> self state-time))) + :exit + (behavior () + (let ((a0-0 (-> self control unknown-spoolanim00))) + (when a0-0 + (ja-abort-spooled-anim a0-0 (the-as art-joint-anim #f) -1) + (ja-channel-set! 1) + (ja :group! eichar-stance-loop-ja :num! min))) + ((-> target-stance exit)) + (target-exit)) + :trans + (behavior () + (spool-push *art-control* (-> self control unknown-spoolanim00 name) 0 self (the-as float -99.0)) + (if (or (cpad-hold? (-> self control unknown-cpad-info00 number) start l1 r1 triangle circle x square) *progress-process*) + (go target-stance))) + :code + (behavior () + (while (let ((v1-13 (file-status *art-control* (-> self control unknown-spoolanim00 name) 0))) + (not (or (= v1-13 'locked) (= v1-13 'active)))) + (suspend) + (ja :num! (loop!)) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0))) + (ja-play-spooled-anim (-> self control unknown-spoolanim00) + (the-as art-joint-anim eichar-stance-loop-ja) + (the-as art-joint-anim eichar-stance-loop-ja) + (the-as (function process-drawable symbol) (lambda () (!= (-> *cpad-list* cpads 0 stick0-speed) 0.0)))) + (set! (-> self control unknown-uint20) (the-as uint #f)) + (go target-stance)) + :post target-post) (deftype first-person-hud (process) - ((max-nb-of-particles int32) - (nb-of-particles int32) - (particles hud-particle 3) - (in-out-position int32) - (sides-x-scale float) - (sides-y-scale float) - (x-offset int32) - ) + ((max-nb-of-particles int32) + (nb-of-particles int32) + (particles hud-particle 3) + (in-out-position int32) + (sides-x-scale float) + (sides-y-scale float) + (x-offset int32)) (:methods - (dumb-15 (_type_) none) - ) + (dumb-15 (_type_) none)) (:states - hud-coming-in - hud-going-out - hud-normal - hud-waiting - ) - ) - + hud-coming-in + hud-going-out + hud-normal + hud-waiting)) (define *fp-hud-stack* (malloc 'global #x3800)) (defmethod deactivate ((this first-person-hud)) (dotimes (s5-0 (-> this nb-of-particles)) (kill-and-free-particles (-> this particles s5-0 part)) - (set! (-> this particles s5-0 part matrix) -1) - ) + (set! (-> this particles s5-0 part matrix) -1)) (enable-hud) (set! (-> *target* fp-hud) (the-as handle #f)) (call-parent-method this) - (none) - ) + (none)) (defbehavior first-person-hud-init-by-other first-person-hud () (logclear! (-> self mask) (process-mask pause)) @@ -192,10 +139,8 @@ (set! (-> self particles gp-0 init-pos x) -320.0) (set! (-> self particles gp-0 init-pos y) 254.0) (set! (-> self particles gp-0 init-pos z) 15.0) - (set! (-> self particles gp-0 part matrix) -1) - ) - (+! (-> self nb-of-particles) 1) - ) + (set! (-> self particles gp-0 part matrix) -1)) + (+! (-> self nb-of-particles) 1)) (when (< (-> self nb-of-particles) (-> self max-nb-of-particles)) (let ((gp-1 (-> self nb-of-particles))) (set! (-> self particles gp-1) (new 'static 'hud-particle)) @@ -203,10 +148,8 @@ (set! (-> self particles gp-1 init-pos x) -320.0) (set! (-> self particles gp-1 init-pos y) 192.0) (set! (-> self particles gp-1 init-pos z) 15.0) - (set! (-> self particles gp-1 part matrix) -1) - ) - (+! (-> self nb-of-particles) 1) - ) + (set! (-> self particles gp-1 part matrix) -1)) + (+! (-> self nb-of-particles) 1)) (when (< (-> self nb-of-particles) (-> self max-nb-of-particles)) (let ((gp-2 (-> self nb-of-particles))) (set! (-> self particles gp-2) (new 'static 'hud-particle)) @@ -214,2541 +157,1677 @@ (set! (-> self particles gp-2 init-pos x) 256.0) (set! (-> self particles gp-2 init-pos y) 244.0) (set! (-> self particles gp-2 init-pos z) 15.0) - (set! (-> self particles gp-2 part matrix) -1) - ) - (+! (-> self nb-of-particles) 1) - ) + (set! (-> self particles gp-2 part matrix) -1)) + (+! (-> self nb-of-particles) 1)) (case (get-aspect-ratio) - (('aspect4x3) - (set! (-> self sides-x-scale) 3.5) - (set! (-> self sides-y-scale) 13.0) - (set! (-> self x-offset) 0) - 0 - ) - (('aspect16x9) - (set! (-> self sides-x-scale) 2.8) - (set! (-> self sides-y-scale) 9.75) - (set! (-> self x-offset) 12) - ) - ) + (('aspect4x3) (set! (-> self sides-x-scale) 3.5) (set! (-> self sides-y-scale) 13.0) (set! (-> self x-offset) 0) 0) + (('aspect16x9) (set! (-> self sides-x-scale) 2.8) (set! (-> self sides-y-scale) 9.75) (set! (-> self x-offset) 12))) (set! (-> self event-hook) (-> hud-waiting event)) (go hud-waiting) - (none) - ) + (none)) (defmethod relocate ((this first-person-hud) (arg0 int)) (dotimes (v1-0 (-> this nb-of-particles)) (when (-> this particles v1-0 part) - (if (nonzero? (-> this particles v1-0 part)) - (&+! (-> this particles v1-0 part) arg0) - ) - ) - ) - (the-as first-person-hud ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this particles v1-0 part)) (&+! (-> this particles v1-0 part) arg0)))) + (the-as first-person-hud ((method-of-type process relocate) this arg0))) (defmethod dumb-15 ((this first-person-hud)) (dotimes (s5-0 (-> this nb-of-particles)) (set! (-> this particles s5-0 pos x) (+ -256.0 (-> this particles s5-0 init-pos x))) (set! (-> this particles s5-0 pos y) - (* 0.5 (- (* (-> this particles s5-0 init-pos y) (-> *video-parms* relative-y-scale)) - (the float (-> *video-parms* screen-sy)) - ) - ) - ) + (* 0.5 + (- (* (-> this particles s5-0 init-pos y) (-> *video-parms* relative-y-scale)) (the float (-> *video-parms* screen-sy))))) (set! (-> this particles s5-0 pos z) (-> this particles s5-0 init-pos z)) (if (> (-> this particles s5-0 part matrix) 0) - (set-vector! - (sprite-get-user-hvdf (-> this particles s5-0 part matrix)) - (the float (+ (the int (-> this particles s5-0 pos x)) 2048)) - (the float (+ (the int (-> this particles s5-0 pos y)) 2048)) - (- (-> *math-camera* hvdf-off z) (* 1024.0 (-> this particles s5-0 pos z))) - (-> *math-camera* hvdf-off w) - ) - ) - (spawn (-> this particles s5-0 part) *null-vector*) - ) + (set-vector! (sprite-get-user-hvdf (-> this particles s5-0 part matrix)) + (the float (+ (the int (-> this particles s5-0 pos x)) 2048)) + (the float (+ (the int (-> this particles s5-0 pos y)) 2048)) + (- (-> *math-camera* hvdf-off z) (* 1024.0 (-> this particles s5-0 pos z))) + (-> *math-camera* hvdf-off w))) + (spawn (-> this particles s5-0 part) *null-vector*)) 0 - (none) - ) + (none)) (defstate hud-waiting (first-person-hud) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('go-away) - (go hud-going-out) - ) - ) - ) - :enter (behavior () - (disable-hud (the-as int (-> *hud-parts* power))) - ) - :code (behavior () - (loop - (dotimes (gp-0 (-> self nb-of-particles)) - (if (= (-> self particles gp-0 part matrix) -1) - (set! (-> self particles gp-0 part matrix) (sprite-allocate-user-hvdf)) - ) - ) - (set-setting! 'common-page 'set 0.0 1) - (suspend) - (go hud-coming-in) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('go-away) (go hud-going-out)))) + :enter + (behavior () + (disable-hud (the-as int (-> *hud-parts* power)))) + :code + (behavior () + (loop + (dotimes (gp-0 (-> self nb-of-particles)) + (if (= (-> self particles gp-0 part matrix) -1) (set! (-> self particles gp-0 part matrix) (sprite-allocate-user-hvdf)))) + (set-setting! 'common-page 'set 0.0 1) + (suspend) + (go hud-coming-in) + (suspend)))) (defstate hud-coming-in (first-person-hud) - :event (-> hud-waiting event) - :code (behavior () - (loop - (seekl! (-> self in-out-position) 0 (the int (* 350.0 (-> *display* time-adjust-ratio)))) - (if (zero? (-> self in-out-position)) - (go hud-normal) - ) - (suspend) - ) - ) - :post (behavior () - (dumb-15 self) - ) - ) + :event + (-> hud-waiting + event) + :code + (behavior () + (loop + (seekl! (-> self in-out-position) 0 (the int (* 350.0 (-> *display* time-adjust-ratio)))) + (if (zero? (-> self in-out-position)) (go hud-normal)) + (suspend))) + :post + (behavior () + (dumb-15 self))) (defstate hud-normal (first-person-hud) - :event (-> hud-waiting event) - :code (behavior () - (loop - (if (or (not *progress-process*) - (= (-> *progress-process* 0 next-state name) 'progress-going-out) - (= (-> *progress-process* 0 next-state name) 'progress-gone) - ) + :event + (-> hud-waiting + event) + :code + (behavior () + (loop + (if (or (not *progress-process*) + (= (-> *progress-process* 0 next-state name) 'progress-going-out) + (= (-> *progress-process* 0 next-state name) 'progress-gone)) (seekl! (-> self in-out-position) 0 (the int (* 150.0 (-> *display* time-adjust-ratio)))) - (seekl! (-> self in-out-position) 4096 (the int (* 200.0 (-> *display* time-adjust-ratio)))) - ) - (suspend) - ) - ) - ) + (seekl! (-> self in-out-position) 4096 (the int (* 200.0 (-> *display* time-adjust-ratio))))) + (suspend)))) (defstate hud-going-out (first-person-hud) - :code (behavior () - (loop - (seekl! (-> self in-out-position) 4096 (the int (* 350.0 (-> *display* time-adjust-ratio)))) - (if (= (-> self in-out-position) 4096) - (deactivate self) - ) - (suspend) - ) - ) - :post (behavior () - (dumb-15 self) - ) - ) + :code + (behavior () + (loop + (seekl! (-> self in-out-position) 4096 (the int (* 350.0 (-> *display* time-adjust-ratio)))) + (if (= (-> self in-out-position) 4096) (deactivate self)) + (suspend))) + :post + (behavior () + (dumb-15 self))) (defun part-first-person-hud-left-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((s5-0 (handle->process (-> *target* fp-hud)))) (when s5-0 (let ((f30-0 (* 0.00024414062 (the float (-> (the-as first-person-hud s5-0) in-out-position))))) - (if (or (-> *setting-control* current movie) (movie?)) - (set! f30-0 1.0) - ) - (if (< 0.25 f30-0) - (set! f30-0 1.0) - (* 4.0 f30-0) - ) + (if (or (-> *setting-control* current movie) (movie?)) (set! f30-0 1.0)) + (if (< 0.25 f30-0) (set! f30-0 1.0) (* 4.0 f30-0)) (set! (-> (the-as first-person-hud s5-0) particles 0 init-pos x) - (the float (- 59 (-> (the-as first-person-hud s5-0) x-offset))) - ) + (the float (- 59 (-> (the-as first-person-hud s5-0) x-offset)))) (set! (-> arg2 vector 0 w) (* 4096.0 (+ (-> (the-as first-person-hud s5-0) sides-x-scale) (* 10.0 f30-0)))) - (set! (-> arg2 vector 1 w) (* 4096.0 (+ (-> (the-as first-person-hud s5-0) sides-y-scale) (* 10.0 f30-0)))) - ) - ) - ) + (set! (-> arg2 vector 1 w) (* 4096.0 (+ (-> (the-as first-person-hud s5-0) sides-y-scale) (* 10.0 f30-0))))))) 0 - (none) - ) + (none)) (defun part-first-person-hud-right-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((s5-0 (handle->process (-> *target* fp-hud)))) (when s5-0 (let ((f30-0 (* 0.00024414062 (the float (-> (the-as first-person-hud s5-0) in-out-position))))) - (if (or (-> *setting-control* current movie) (movie?)) - (set! f30-0 1.0) - ) - (if (< 0.25 f30-0) - (set! f30-0 1.0) - (* 4.0 f30-0) - ) + (if (or (-> *setting-control* current movie) (movie?)) (set! f30-0 1.0)) + (if (< 0.25 f30-0) (set! f30-0 1.0) (* 4.0 f30-0)) (set! (-> (the-as first-person-hud s5-0) particles 1 init-pos x) - (the float (+ (-> (the-as first-person-hud s5-0) x-offset) 452)) - ) + (the float (+ (-> (the-as first-person-hud s5-0) x-offset) 452))) (set! (-> arg2 vector 0 w) (* 4096.0 (+ (-> (the-as first-person-hud s5-0) sides-x-scale) (* 10.0 f30-0)))) - (set! (-> arg2 vector 1 w) (* 4096.0 (+ (-> (the-as first-person-hud s5-0) sides-y-scale) (* 10.0 f30-0)))) - ) - ) - ) + (set! (-> arg2 vector 1 w) (* 4096.0 (+ (-> (the-as first-person-hud s5-0) sides-y-scale) (* 10.0 f30-0))))))) 0 - (none) - ) + (none)) (defun part-first-person-hud-selector-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((v1-2 (handle->process (-> *target* fp-hud)))) (when v1-2 (let ((f30-0 (* 0.00024414062 (the float (-> (the-as first-person-hud v1-2) in-out-position))))) - (if (or (-> *setting-control* current movie) (movie?)) - (set! f30-0 1.0) - ) - (if (< 0.5 f30-0) - (set! f30-0 1.0) - (* 2.0 f30-0) - ) - (set! (-> arg2 vector 2 w) (- 64.0 (* 64.0 f30-0))) - ) - ) - ) + (if (or (-> *setting-control* current movie) (movie?)) (set! f30-0 1.0)) + (if (< 0.5 f30-0) (set! f30-0 1.0) (* 2.0 f30-0)) + (set! (-> arg2 vector 2 w) (- 64.0 (* 64.0 f30-0)))))) 0 - (none) - ) + (none)) ;; ERROR: function was not converted to expressions. Cannot decompile. (defstate target-stance-look-around (target) :event target-standard-event-handler - :enter (-> target-stance enter) - :exit (-> target-stance exit) - :trans (-> target-stance trans) - :code (behavior () - (while (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) 'dist-from-interp-src) - (and (< (send-event-function *camera* a1-0) 4915.2) - (not (time-elapsed? (-> self state-time) (seconds 0.07))) - (zero? (ja-group-size)) - ) - ) - (suspend) - ) - (let ((v1-8 target-stance)) - (set! (-> self next-state) v1-8) - (set! (-> self state) v1-8) - ) - ((the-as (function none :behavior target) (-> target-stance code))) - ) - :post target-post - ) + :enter + (-> target-stance + enter) + :exit + (-> target-stance + exit) + :trans + (-> target-stance + trans) + :code + (behavior () + (while (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) 'dist-from-interp-src) + (and (< (send-event-function *camera* a1-0) 4915.2) + (not (time-elapsed? (-> self state-time) (seconds 0.07))) + (zero? (ja-group-size)))) + (suspend)) + (let ((v1-8 target-stance)) (set! (-> self next-state) v1-8) (set! (-> self state) v1-8)) + ((the-as (function none :behavior target) (-> target-stance code)))) + :post target-post) (defstate target-look-around (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - (-> self state name) - ) - ((let ((v1-4 message)) - (= v1-4 'end-mode) - ) - (go target-stance-look-around) - ) - ((-> self control unknown-symbol30) - (target-dangerous-event-handler proc argc message block) - ) - (else - (target-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set! (-> self cam-user-mode) 'look-around) - (set! (-> self control unknown-surface00) *duck-mods*) - (logior! (-> self state-flags) (state-flags first-person-mode)) - (send-event *camera* 'blend-from-as-fixed) - (send-event *camera* 'no-intro) - (camera-change-to (the-as string 'cam-eye) 60 #f) - (let ((a0-5 (handle->process (-> self fp-hud)))) - (if a0-5 - (deactivate a0-5) - ) - ) - (set! (-> self fp-hud) - (ppointer->handle (process-spawn first-person-hud :to *dproc* :stack (&+ *fp-hud-stack* #x3800))) - ) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self fp-hud)))) - (if a0-1 - (send-event a0-1 'go-away) - ) - ) - (set! (-> self cam-user-mode) 'normal) - (target-exit) - (when (send-event *camera* 'query-state cam-eye) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) (-> self state name)) + ((let ((v1-4 message)) (= v1-4 'end-mode)) (go target-stance-look-around)) + ((-> self control unknown-symbol30) (target-dangerous-event-handler proc argc message block)) + (else (target-standard-event-handler proc argc message block)))) + :enter + (behavior () + (set! (-> self cam-user-mode) 'look-around) + (set! (-> self control unknown-surface00) *duck-mods*) + (logior! (-> self state-flags) (state-flags first-person-mode)) + (send-event *camera* 'blend-from-as-fixed) (send-event *camera* 'no-intro) - (send-event *camera* 'force-blend (seconds 0.2)) - (send-event *camera* 'clear-entity) - (camera-change-to (the-as string 'base) 60 #f) - ) - ) - :trans (behavior () - (local-vars (sv-48 vector)) - (rlet ((vf0 :class vf) - (vf4 :class vf) - (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons r2 circle square) - ) - (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) - (time-elapsed? (-> self control unknown-dword82) (seconds 0.5)) - (not *pause-lock*) - ) - (let ((gp-1 (vector-float*! - (new-stack-vector0) - (-> *math-camera* inv-camera-rot vector 2) - (the-as float (-> *TARGET-bank* yellow-projectile-speed)) - ) - ) - (s5-1 (vector-float*! (new-stack-vector0) (-> *math-camera* inv-camera-rot vector 2) 8192.0)) - ) - (vector+float*! s5-1 s5-1 (-> *math-camera* inv-camera-rot vector 1) (the-as float -2048.0)) - (let ((s4-0 (get-process *default-dead-pool* projectile-yellow #x4000))) - (when s4-0 - (let ((t9-2 (method-of-type projectile-yellow activate))) - (t9-2 (the-as projectile-yellow s4-0) self 'projectile-yellow (the-as pointer #x70004000)) - ) - (let ((s3-0 run-function-in-process) - (s2-0 s4-0) - (s1-0 projectile-init-by-other) - (s0-0 (-> self entity)) - ) - (set! sv-48 s5-1) - (let ((v0-3 (camera-pos))) - (.mov.vf vf6 vf0 :mask #b1000) - (.lvf vf4 (&-> v0-3 quad)) - ) - (.lvf vf5 (&-> s5-1 quad)) - (.add.vf vf6 vf4 vf5 :mask #b111) - (.svf (&-> sv-48 quad) vf6) - (let ((t1-0 (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) - 56 - 40 - ) - ) - (t2-0 #f) - ) - ((the-as (function object object object object object object object none) s3-0) - s2-0 - s1-0 - s0-0 - sv-48 - gp-1 - t1-0 - t2-0 - ) - ) - ) - (-> s4-0 ppointer) - ) - ) - ) - (set-time! (-> self control unknown-dword82)) - ) - (when (cpad-pressed? (-> self control unknown-cpad-info00 number) triangle) - (logclear! - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) - (pad-buttons triangle) - ) - (logclear! - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (pad-buttons triangle) - ) - (set! (-> self cam-user-mode) 'normal) - ) - ) - ) - :code (behavior () - (while (let ((f30-0 8192.0)) - (< f30-0 (send-event *camera* 'dist-from-interp-dest)) - ) - (if (!= (-> self cam-user-mode) 'look-around) - (go target-stance) - ) - (suspend) - ) - (ja-channel-set! 0) - (set! (-> self control transv quad) (the-as uint128 0)) - (loop - (if (!= (-> self cam-user-mode) 'look-around) - (go target-stance-look-around) - ) - (suspend) - ) - ) - :post target-no-move-post - ) + (camera-change-to (the-as string 'cam-eye) 60 #f) + (let ((a0-5 (handle->process (-> self fp-hud)))) (if a0-5 (deactivate a0-5))) + (set! (-> self fp-hud) + (ppointer->handle (process-spawn first-person-hud :to *dproc* :stack (&+ *fp-hud-stack* #x3800))))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self fp-hud)))) (if a0-1 (send-event a0-1 'go-away))) + (set! (-> self cam-user-mode) 'normal) + (target-exit) + (when (send-event *camera* 'query-state cam-eye) + (send-event *camera* 'no-intro) + (send-event *camera* 'force-blend (seconds 0.2)) + (send-event *camera* 'clear-entity) + (camera-change-to (the-as string 'base) 60 #f))) + :trans + (behavior () + (local-vars (sv-48 vector)) + (rlet ((vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf)) + (init-vf0-vector) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons r2 circle square)) + (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) + (time-elapsed? (-> self control unknown-dword82) (seconds 0.5)) + (not *pause-lock*)) + (let ((gp-1 (vector-float*! (new-stack-vector0) + (-> *math-camera* inv-camera-rot vector 2) + (the-as float (-> *TARGET-bank* yellow-projectile-speed)))) + (s5-1 (vector-float*! (new-stack-vector0) (-> *math-camera* inv-camera-rot vector 2) 8192.0))) + (vector+float*! s5-1 s5-1 (-> *math-camera* inv-camera-rot vector 1) (the-as float -2048.0)) + (let ((s4-0 (get-process *default-dead-pool* projectile-yellow #x4000))) + (when s4-0 + (let ((t9-2 (method-of-type projectile-yellow activate))) + (t9-2 (the-as projectile-yellow s4-0) self 'projectile-yellow (the-as pointer #x70004000))) + (let ((s3-0 run-function-in-process) + (s2-0 s4-0) + (s1-0 projectile-init-by-other) + (s0-0 (-> self entity))) + (set! sv-48 s5-1) + (let ((v0-3 (camera-pos))) (.mov.vf vf6 vf0 :mask #b1000) (.lvf vf4 (&-> v0-3 quad))) + (.lvf vf5 (&-> s5-1 quad)) + (.add.vf vf6 vf4 vf5 :mask #b111) + (.svf (&-> sv-48 quad) vf6) + (let ((t1-0 (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 56 40)) + (t2-0 #f)) + ((the-as (function object object object object object object object none) s3-0) s2-0 s1-0 s0-0 sv-48 gp-1 t1-0 t2-0))) + (-> s4-0 ppointer)))) + (set-time! (-> self control unknown-dword82))) + (when (cpad-pressed? (-> self control unknown-cpad-info00 number) triangle) + (logclear! (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons triangle)) + (logclear! (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) (pad-buttons triangle)) + (set! (-> self cam-user-mode) 'normal)))) + :code + (behavior () + (while (let ((f30-0 8192.0)) (< f30-0 (send-event *camera* 'dist-from-interp-dest))) + (if (!= (-> self cam-user-mode) 'look-around) (go target-stance)) + (suspend)) + (ja-channel-set! 0) + (set! (-> self control transv quad) (the-as uint128 0)) + (loop + (if (!= (-> self cam-user-mode) 'look-around) (go target-stance-look-around)) + (suspend))) + :post target-no-move-post) (defstate target-billy-game (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - (-> self state name) - ) - ((let ((v1-4 message)) - (= v1-4 'end-mode) - ) - (go target-stance) - ) - (else - (target-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set! (-> self neck flex-blend) 0.0) - (set! (-> self control unknown-surface00) *duck-mods*) - (logior! (-> self state-flags) (state-flags first-person-mode)) - (send-event *camera* 'blend-from-as-fixed) - (send-event *camera* 'clear-entity) - (send-event *camera* 'no-intro) - (camera-change-to (the-as string 'cam-billy) 0 #f) - (let ((a0-6 (handle->process (-> self fp-hud)))) - (if a0-6 - (deactivate a0-6) - ) - ) - (set! (-> self fp-hud) - (ppointer->handle (process-spawn first-person-hud :to *dproc* :stack (&+ *fp-hud-stack* #x3800))) - ) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self fp-hud)))) - (if a0-1 - (send-event a0-1 'go-away) - ) - ) - (when (send-event *camera* 'query-state cam-billy) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) (-> self state name)) + ((let ((v1-4 message)) (= v1-4 'end-mode)) (go target-stance)) + (else (target-standard-event-handler proc argc message block)))) + :enter + (behavior () + (set! (-> self neck flex-blend) 0.0) + (set! (-> self control unknown-surface00) *duck-mods*) + (logior! (-> self state-flags) (state-flags first-person-mode)) + (send-event *camera* 'blend-from-as-fixed) + (send-event *camera* 'clear-entity) (send-event *camera* 'no-intro) - (send-event *camera* 'force-blend 0) - (camera-change-to (the-as string 'base) 0 #f) - ) - (target-exit) - ) - :trans (behavior () - (local-vars (sv-48 vector)) - (rlet ((vf0 :class vf) - (vf4 :class vf) - (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons r2 circle square) - ) - (time-elapsed? (-> self control unknown-dword82) (seconds 0.45)) - (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) - (not *pause-lock*) - ) - (let ((gp-1 (vector-float*! - (new-stack-vector0) - (-> *math-camera* inv-camera-rot vector 2) - (the-as float (-> *TARGET-bank* yellow-projectile-speed)) - ) - ) - (s5-1 (vector-float*! (new-stack-vector0) (-> *math-camera* inv-camera-rot vector 2) 8192.0)) - ) - (vector+float*! s5-1 s5-1 (-> *math-camera* inv-camera-rot vector 1) (the-as float -2048.0)) - (let ((s4-0 (get-process *default-dead-pool* projectile-yellow #x4000))) - (when s4-0 - (let ((t9-2 (method-of-type projectile-yellow activate))) - (t9-2 (the-as projectile-yellow s4-0) self 'projectile-yellow (the-as pointer #x70004000)) - ) - (let ((s3-0 run-function-in-process) - (s2-0 s4-0) - (s1-0 projectile-init-by-other) - (s0-0 (-> self entity)) - ) - (set! sv-48 s5-1) - (let ((v0-4 (camera-pos))) - (.mov.vf vf6 vf0 :mask #b1000) - (.lvf vf4 (&-> v0-4 quad)) - ) - (.lvf vf5 (&-> s5-1 quad)) - (.add.vf vf6 vf4 vf5 :mask #b111) - (.svf (&-> sv-48 quad) vf6) - (let ((t1-0 (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) - 120 - 104 - ) - ) - (t2-0 #f) - ) - ((the-as (function object object object object object object object none) s3-0) - s2-0 - s1-0 - s0-0 - sv-48 - gp-1 - t1-0 - t2-0 - ) - ) - ) - (-> s4-0 ppointer) - ) - ) - ) - (set-time! (-> self control unknown-dword82)) - ) - ) - ) - :code (behavior () - (ja-channel-set! 0) - (set! (-> self control transv quad) (the-as uint128 0)) - (anim-loop) - ) - :post target-no-move-post - ) + (camera-change-to (the-as string 'cam-billy) 0 #f) + (let ((a0-6 (handle->process (-> self fp-hud)))) (if a0-6 (deactivate a0-6))) + (set! (-> self fp-hud) + (ppointer->handle (process-spawn first-person-hud :to *dproc* :stack (&+ *fp-hud-stack* #x3800))))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self fp-hud)))) (if a0-1 (send-event a0-1 'go-away))) + (when (send-event *camera* 'query-state cam-billy) + (send-event *camera* 'no-intro) + (send-event *camera* 'force-blend 0) + (camera-change-to (the-as string 'base) 0 #f)) + (target-exit)) + :trans + (behavior () + (local-vars (sv-48 vector)) + (rlet ((vf0 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf)) + (init-vf0-vector) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons r2 circle square)) + (time-elapsed? (-> self control unknown-dword82) (seconds 0.45)) + (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) + (not *pause-lock*)) + (let ((gp-1 (vector-float*! (new-stack-vector0) + (-> *math-camera* inv-camera-rot vector 2) + (the-as float (-> *TARGET-bank* yellow-projectile-speed)))) + (s5-1 (vector-float*! (new-stack-vector0) (-> *math-camera* inv-camera-rot vector 2) 8192.0))) + (vector+float*! s5-1 s5-1 (-> *math-camera* inv-camera-rot vector 1) (the-as float -2048.0)) + (let ((s4-0 (get-process *default-dead-pool* projectile-yellow #x4000))) + (when s4-0 + (let ((t9-2 (method-of-type projectile-yellow activate))) + (t9-2 (the-as projectile-yellow s4-0) self 'projectile-yellow (the-as pointer #x70004000))) + (let ((s3-0 run-function-in-process) + (s2-0 s4-0) + (s1-0 projectile-init-by-other) + (s0-0 (-> self entity))) + (set! sv-48 s5-1) + (let ((v0-4 (camera-pos))) (.mov.vf vf6 vf0 :mask #b1000) (.lvf vf4 (&-> v0-4 quad))) + (.lvf vf5 (&-> s5-1 quad)) + (.add.vf vf6 vf4 vf5 :mask #b111) + (.svf (&-> sv-48 quad) vf6) + (let ((t1-0 (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 120 104)) + (t2-0 #f)) + ((the-as (function object object object object object object object none) s3-0) s2-0 s1-0 s0-0 sv-48 gp-1 t1-0 t2-0))) + (-> s4-0 ppointer)))) + (set-time! (-> self control unknown-dword82))))) + :code + (behavior () + (ja-channel-set! 0) + (set! (-> self control transv quad) (the-as uint128 0)) + (anim-loop)) + :post target-no-move-post) (defstate target-grab (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - (-> self state name) - ) - (else - (case message - (('end-mode) - (go target-stance) - ) - (('play-anim) - (let ((v0-0 (the-as object (-> block param 0)))) - (set! (-> self control unknown-uint20) (the-as uint v0-0)) - v0-0 - ) - ) - (('clone-anim) - (go target-clone-anim (process->handle (the-as process (-> block param 0)))) - ) - (('change-mode) - (case (-> block param 0) - (('final-door) - (go - target-final-door - (the-as basic (process->handle (the-as process (-> block param 1)))) - (process->handle (the-as process (-> block param 2))) - ) - ) - ) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - ) - ) - :enter (behavior () - (set! (-> self control unknown-surface00) *grab-mods*) - (set! (-> self neck flex-blend) 0.0) - (logior! (-> self state-flags) (state-flags invulnerable grabbed)) - (set! (-> self control unknown-uint20) (the-as uint 'stance)) - ) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags invulnerable)) - (target-exit) - ) - :code (behavior () - (set-forward-vel (the-as float 0.0)) - (let ((gp-0 0)) - (while (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (target-falling-anim-trans) - (+! gp-0 (- (current-time) (-> *display* old-base-frame-counter))) - (suspend) - ) - (if (or (> gp-0 0) (let ((v1-11 (ja-group))) - (or (= v1-11 eichar-jump-ja) - (= v1-11 eichar-jump-loop-ja) - (= v1-11 eichar-launch-jump-ja) - (= v1-11 eichar-launch-jump-loop-ja) - (= v1-11 eichar-duck-high-jump-ja) - ) - ) - ) - (target-hit-ground-anim #f) - ) - ) - (-> self control unknown-spoolanim00) - (loop - (let ((gp-1 (-> self control unknown-spoolanim00))) - (case gp-1 - (('stance) - (cond - ((or (and (ja-group? eichar-walk-ja) (< 0.5 (-> self skel root-channel 6 frame-interp))) - (let ((v1-32 (ja-group))) - (or (= v1-32 eichar-run-squash-ja) - (= v1-32 eichar-run-squash-weak-ja) - (= v1-32 eichar-attack-from-stance-run-end-ja) - (= v1-32 eichar-attack-from-stance-run-alt-end-ja) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.15)) - (ja-no-eval :group! eichar-run-to-stance-loop-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! eichar-run-to-stance-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.15)) - ) - ((let ((v1-87 (ja-group))) - (and (or (= v1-87 eichar-jump-short-land-ja) (= v1-87 eichar-jump-land-ja)) (not (ja-max? 0))) - ) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (ja-channel-push! 1 (seconds 0.075)) - ) - ((not (and (ja-group? eichar-stance-loop-ja) (= (ja-group-size) 1))) - (ja-channel-push! 1 (seconds 0.075)) - ) - ) - (loop - (ja-no-eval :group! eichar-stance-loop-ja :num! (seek!) :frame-num 0.0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) (-> self state name)) + (else + (case message + (('end-mode) (go target-stance)) + (('play-anim) + (let ((v0-0 (the-as object (-> block param 0)))) (set! (-> self control unknown-uint20) (the-as uint v0-0)) v0-0)) + (('clone-anim) (go target-clone-anim (process->handle (the-as process (-> block param 0))))) + (('change-mode) + (case (-> block param 0) + (('final-door) + (go target-final-door + (the-as basic (process->handle (the-as process (-> block param 1)))) + (process->handle (the-as process (-> block param 2))))))) + (else (target-generic-event-handler proc argc message block)))))) + :enter + (behavior () + (set! (-> self control unknown-surface00) *grab-mods*) + (set! (-> self neck flex-blend) 0.0) + (logior! (-> self state-flags) (state-flags invulnerable grabbed)) + (set! (-> self control unknown-uint20) (the-as uint 'stance))) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags invulnerable)) + (target-exit)) + :code + (behavior () + (set-forward-vel (the-as float 0.0)) + (let ((gp-0 0)) + (while (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (target-falling-anim-trans) + (+! gp-0 (- (current-time) (-> *display* old-base-frame-counter))) + (suspend)) + (if (or (> gp-0 0) + (let ((v1-11 (ja-group))) + (or (= v1-11 eichar-jump-ja) + (= v1-11 eichar-jump-loop-ja) + (= v1-11 eichar-launch-jump-ja) + (= v1-11 eichar-launch-jump-loop-ja) + (= v1-11 eichar-duck-high-jump-ja)))) + (target-hit-ground-anim #f))) + (-> self control unknown-spoolanim00) + (loop + (let ((gp-1 (-> self control unknown-spoolanim00))) + (case gp-1 + (('stance) + (cond + ((or (and (ja-group? eichar-walk-ja) (< 0.5 (-> self skel root-channel 6 frame-interp))) + (let ((v1-32 (ja-group))) + (or (= v1-32 eichar-run-squash-ja) + (= v1-32 eichar-run-squash-weak-ja) + (= v1-32 eichar-attack-from-stance-run-end-ja) + (= v1-32 eichar-attack-from-stance-run-alt-end-ja)))) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! eichar-run-to-stance-loop-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! eichar-run-to-stance-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.15))) + ((let ((v1-87 (ja-group))) + (and (or (= v1-87 eichar-jump-short-land-ja) (= v1-87 eichar-jump-land-ja)) (not (ja-max? 0)))) + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (ja-channel-push! 1 (seconds 0.075))) + ((not (and (ja-group? eichar-stance-loop-ja) (= (ja-group-size) 1))) (ja-channel-push! 1 (seconds 0.075)))) + (loop + (ja-no-eval :group! eichar-stance-loop-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (!= gp-1 (-> self control unknown-spoolanim00)) (goto cfg-94)) + (suspend) + (ja :num! (seek!))))) + (('shock-in) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! eichar-shocked-ja :num! (seek! (ja-aframe (the-as float 18.0) 0)) :frame-num 0.0) (until (ja-done? 0) - (if (!= gp-1 (-> self control unknown-spoolanim00)) - (goto cfg-94) - ) + (if (!= gp-1 (-> self control unknown-spoolanim00)) (goto cfg-94)) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (('shock-in) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! eichar-shocked-ja :num! (seek! (ja-aframe (the-as float 18.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (if (!= gp-1 (-> self control unknown-spoolanim00)) - (goto cfg-94) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 18.0) 0))) - ) - (loop - (if (!= gp-1 (-> self control unknown-spoolanim00)) - (goto cfg-94) - ) - (suspend) - ) - ) - (('shock-out) - (if (not (ja-group? eichar-shocked-ja)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja-no-eval :group! eichar-shocked-ja :num! (seek!) :frame-num (ja-aframe (the-as float 18.0) 0)) - (until (ja-done? 0) - (if (!= gp-1 (-> self control unknown-spoolanim00)) - (goto cfg-94) - ) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self control unknown-uint20) (the-as uint 'stance)) - ) - ) - ) - (label cfg-94) - ) - ) - :post (behavior () - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (set! (-> self control transv quad) (the-as uint128 0)) - ) - (target-no-stick-post) - ) - ) + (ja :num! (seek! (ja-aframe (the-as float 18.0) 0)))) + (loop + (if (!= gp-1 (-> self control unknown-spoolanim00)) (goto cfg-94)) + (suspend))) + (('shock-out) + (if (not (ja-group? eichar-shocked-ja)) (ja-channel-push! 1 (seconds 0.2))) + (ja-no-eval :group! eichar-shocked-ja :num! (seek!) :frame-num (ja-aframe (the-as float 18.0) 0)) + (until (ja-done? 0) + (if (!= gp-1 (-> self control unknown-spoolanim00)) (goto cfg-94)) + (suspend) + (ja :num! (seek!))) + (set! (-> self control unknown-uint20) (the-as uint 'stance))))) + (label cfg-94))) + :post + (behavior () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (set! (-> self control transv quad) (the-as uint128 0))) + (target-no-stick-post))) (defstate target-pole-cycle (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (= message 'query) (= (-> block param 0) 'mode)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (= message 'query) (= (-> block param 0) 'mode)) (-> self state name) - (target-standard-event-handler proc argc message block) - ) - ) - :enter (behavior ((arg0 handle)) - (set! (-> self control unknown-handle10) arg0) - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *pole-mods*) - (logior! (-> self control root-prim prim-core action) (collide-action swingpole-active)) - (target-collide-set! 'pole (the-as float 0.0)) - (set! (-> self control unknown-vector102 quad) (-> self control transv quad)) - (set! (-> self control transv quad) (the-as uint128 0)) - (send-event *camera* 'ease-in) - (set! (-> self control unknown-int21) (the-as int #f)) - ) - :exit (behavior () - (target-collide-set! 'normal (the-as float 0.0)) - (logclear! (-> self control root-prim prim-core action) (collide-action swingpole-active)) - (set! (-> self control unknown-handle10) (the-as handle #f)) - ) - :trans (behavior () - (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (not (logtest? (-> self state-flags) (state-flags prevent-jump))) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) + (target-standard-event-handler proc argc message block))) + :enter + (behavior ((arg0 handle)) + (set! (-> self control unknown-handle10) arg0) + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *pole-mods*) + (logior! (-> self control root-prim prim-core action) (collide-action swingpole-active)) + (target-collide-set! 'pole (the-as float 0.0)) + (set! (-> self control unknown-vector102 quad) (-> self control transv quad)) (set! (-> self control transv quad) (the-as uint128 0)) + (send-event *camera* 'ease-in) + (set! (-> self control unknown-int21) (the-as int #f))) + :exit + (behavior () + (target-collide-set! 'normal (the-as float 0.0)) + (logclear! (-> self control root-prim prim-core action) (collide-action swingpole-active)) + (set! (-> self control unknown-handle10) (the-as handle #f))) + :trans + (behavior () + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (not (logtest? (-> self state-flags) (state-flags prevent-jump))) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (set! (-> self control transv quad) (the-as uint128 0)) + (cond + ((< 44.0 (ja-aframe-num 0)) + (set-forward-vel (the-as float -49152.0)) + (let ((gp-0 (new-stack-vector0))) + (let ((f0-2 (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-2))) + (let* ((f0-3 (vector-length gp-0)) + (f1-1 f0-3) + (f2-0 -81920.0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-0 gp-0 (/ f0-3 f1-1))))) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (go target-falling 'target-pole-cycle)) + ((>= (ja-aframe-num 0) 14.0) + (remove-exit) + (go target-pole-flip-up 28672.0 28672.0 (* 1024.0 (- 26.0 (ja-aframe-num 0))))) + (else (remove-exit) (go target-pole-flip-forward (the-as float 14336.0) (the-as float 14336.0) (the-as float 57344.0)))))) + :code + (behavior ((arg0 handle)) + (target-compute-pole) + (set! (-> self control unknown-uint20) + (the-as uint + (vector-dot (-> self control unknown-vector100) + (vector-normalize! (-> self control unknown-vector102) (the-as float 1.0))))) (cond - ((< 44.0 (ja-aframe-num 0)) - (set-forward-vel (the-as float -49152.0)) - (let ((gp-0 (new-stack-vector0))) - (let ((f0-2 (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-2)) - ) - (let* ((f0-3 (vector-length gp-0)) - (f1-1 f0-3) - (f2-0 -81920.0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) - (vector-float*! gp-0 gp-0 (/ f0-3 f1-1)) - ) - ) - ) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (go target-falling 'target-pole-cycle) - ) - ((>= (ja-aframe-num 0) 14.0) - (remove-exit) - (go target-pole-flip-up 28672.0 28672.0 (* 1024.0 (- 26.0 (ja-aframe-num 0)))) - ) - (else - (remove-exit) - (go target-pole-flip-forward (the-as float 14336.0) (the-as float 14336.0) (the-as float 57344.0)) - ) - ) - ) - ) - :code (behavior ((arg0 handle)) - (target-compute-pole) - (set! (-> self control unknown-uint20) - (the-as uint (vector-dot - (-> self control unknown-vector100) - (vector-normalize! (-> self control unknown-vector102) (the-as float 1.0)) - ) - ) - ) - (cond - ((ja-group? eichar-pole-jump-loop-ja) - (while (not (-> self control unknown-int21)) - (ja :num! (seek!)) - (suspend) - ) - (ja :num-func num-func-identity :frame-num (ja-aframe (the-as float 37.0) 0)) - ) - (else - (while (not (-> self control unknown-int21)) - (suspend) - ) - (suspend) - (ja-channel-push! 1 (seconds 0.15)) - ) - ) - (ja-no-eval :group! eichar-pole-cycle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (set! (-> self anim-seed) (the-as uint (if (rand-vu-percent? (the-as float 0.1)) - 0 - 1 - ) - ) - ) + ((ja-group? eichar-pole-jump-loop-ja) + (while (not (-> self control unknown-int21)) + (ja :num! (seek!)) + (suspend)) + (ja :num-func num-func-identity :frame-num (ja-aframe (the-as float 37.0) 0))) + (else (while (not (-> self control unknown-int21)) (suspend)) (suspend) (ja-channel-push! 1 (seconds 0.15)))) (ja-no-eval :group! eichar-pole-cycle-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post target-no-move-post - ) + (ja :num! (seek!))) + (loop + (set! (-> self anim-seed) (the-as uint (if (rand-vu-percent? (the-as float 0.1)) 0 1))) + (ja-no-eval :group! eichar-pole-cycle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post target-no-move-post) (defstate target-pole-flip-up (target) :event target-standard-event-handler - :exit (-> target-pole-cycle exit) - :code (behavior ((arg0 object) (arg1 object) (arg2 float)) - (ja-no-eval :group! eichar-pole-flip-up-ja - :num! (seek!) - :frame-num (ja-aframe (+ 1.0 (fmin 17.0 (ja-aframe-num 0))) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-forward-vel arg2) - (go target-pole-flip-up-jump (the-as float arg0) (the-as float arg1)) - ) - :post target-no-move-post - ) + :exit + (-> target-pole-cycle + exit) + :code + (behavior ((arg0 object) (arg1 object) (arg2 float)) + (ja-no-eval :group! eichar-pole-flip-up-ja :num! (seek!) :frame-num (ja-aframe (+ 1.0 (fmin 17.0 (ja-aframe-num 0))) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-forward-vel arg2) + (go target-pole-flip-up-jump (the-as float arg0) (the-as float arg1))) + :post target-no-move-post) (defstate target-pole-flip-up-jump (target) :event target-standard-event-handler - :enter (-> target-jump-forward enter) + :enter + (-> target-jump-forward + enter) :exit target-exit - :trans (behavior () - ((-> target-jump-forward trans)) - (vector-flatten! (-> self control transv) (-> self control transv) (-> self control unknown-vector100)) - ) - :code (behavior ((arg0 float) (arg1 float)) - (sound-play "jump") - (send-event *camera* 'damp-up) - (ja :group! eichar-pole-jump-loop-ja :num! min) - (let ((f0-1 (target-height-above-ground)) - (f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - (while (not (and (< (fabs (/ f0-1 (* 0.0033333334 f1-1))) 40.0) (and (< f1-1 0.0) (ja-min? 0)))) + :trans + (behavior () + ((-> target-jump-forward trans)) + (vector-flatten! (-> self control transv) (-> self control transv) (-> self control unknown-vector100))) + :code + (behavior ((arg0 float) (arg1 float)) + (sound-play "jump") + (send-event *camera* 'damp-up) + (ja :group! eichar-pole-jump-loop-ja :num! min) + (let ((f0-1 (target-height-above-ground)) + (f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (while (not (and (< (fabs (/ f0-1 (* 0.0033333334 f1-1))) 40.0) (and (< f1-1 0.0) (ja-min? 0)))) + (suspend) + (ja :num! (loop!)) + (set! f0-1 (target-height-above-ground)) + (set! f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))))) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) + (loop (suspend) - (ja :num! (loop!)) - (set! f0-1 (target-height-above-ground)) - (set! f1-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - ) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) - (loop - (suspend) - (ja :group! eichar-jump-loop-ja :num! (loop!)) - ) - ) - :post target-post - ) + (ja :group! eichar-jump-loop-ja :num! (loop!)))) + :post target-post) (defstate target-pole-flip-forward (target) :event target-standard-event-handler - :exit (-> target-pole-cycle exit) - :code (behavior ((arg0 float) (arg1 float) (arg2 float)) - (ja-no-eval :group! eichar-pole-flip-forward-ja - :num! (seek! (ja-aframe (the-as float 16.0) 0)) - :frame-num (ja-aframe (+ 1.0 (ja-aframe-num 0)) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 16.0) 0))) - ) - (set-forward-vel arg2) - (go target-pole-flip-forward-jump arg0 arg1) - ) - :post target-no-move-post - ) + :exit + (-> target-pole-cycle + exit) + :code + (behavior ((arg0 float) (arg1 float) (arg2 float)) + (ja-no-eval :group! + eichar-pole-flip-forward-ja + :num! + (seek! (ja-aframe (the-as float 16.0) 0)) + :frame-num + (ja-aframe (+ 1.0 (ja-aframe-num 0)) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 16.0) 0)))) + (set-forward-vel arg2) + (go target-pole-flip-forward-jump arg0 arg1)) + :post target-no-move-post) (defstate target-pole-flip-forward-jump (target) :event target-standard-event-handler - :enter (behavior ((arg0 float) (arg1 float)) - ((-> target-jump enter) arg0 arg1 (the-as surface #f)) - (set! (-> self control unknown-surface00) *forward-pole-jump-mods*) - ) + :enter + (behavior ((arg0 float) (arg1 float)) + ((-> target-jump enter) arg0 arg1 (the-as surface #f)) + (set! (-> self control unknown-surface00) *forward-pole-jump-mods*)) :exit target-exit - :trans (behavior () - ((-> target-jump-forward trans)) - (vector-flatten! (-> self control transv) (-> self control transv) (-> self control unknown-vector100)) - ) - :code (behavior ((arg0 float) (arg1 float)) - (sound-play "jump") - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ((the-as (function none :behavior target) (-> target-pole-flip-up-jump code))) - ) - :post target-post - ) + :trans + (behavior () + ((-> target-jump-forward trans)) + (vector-flatten! (-> self control transv) (-> self control transv) (-> self control unknown-vector100))) + :code + (behavior ((arg0 float) (arg1 float)) + (sound-play "jump") + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + ((the-as (function none :behavior target) (-> target-pole-flip-up-jump code)))) + :post target-post) (defstate target-edge-grab (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('end-mode) - (go target-falling 'target-edge-grab) - ) - (else - (target-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *edge-grab-mods*) - (set-time! (-> self control unknown-dword41)) - (logior! (-> self control root-prim prim-core action) (collide-action edgegrab-active edgegrab-cam)) - (set! (-> self control unknown-vector102 quad) (-> self control transv quad)) - (set! (-> self control transv quad) (the-as uint128 0)) - (send-event *camera* 'ease-in) - ) - :exit (behavior () - (when (logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-cam)) - (logclear! (-> self control root-prim prim-core action) (collide-action edgegrab-active edgegrab-cam)) - (send-event *camera* 'damp-up) - ) - ) - :trans (behavior () - (when (and (time-elapsed? (-> self state-time) (seconds 0.2)) - (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (not (logtest? (-> self state-flags) (state-flags prevent-jump))) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('end-mode) (go target-falling 'target-edge-grab)) + (else (target-standard-event-handler proc argc message block)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *edge-grab-mods*) + (set-time! (-> self control unknown-dword41)) + (logior! (-> self control root-prim prim-core action) (collide-action edgegrab-active edgegrab-cam)) + (set! (-> self control unknown-vector102 quad) (-> self control transv quad)) + (set! (-> self control transv quad) (the-as uint128 0)) + (send-event *camera* 'ease-in)) + :exit + (behavior () + (when (logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-cam)) + (logclear! (-> self control root-prim prim-core action) (collide-action edgegrab-active edgegrab-cam)) + (send-event *camera* 'damp-up))) + :trans + (behavior () + (when (and (time-elapsed? (-> self state-time) (seconds 0.2)) + (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (not (logtest? (-> self state-flags) (state-flags prevent-jump)))) + (cond + ((or (< -0.2 (local-pad-angle)) (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0)) + (let ((a1-2 (new 'stack-no-clear 'collide-using-spheres-params))) + (set! (-> a1-2 spheres) (-> *collide-edge-work* world-player-leap-up-spheres)) + (set! (-> a1-2 num-spheres) (the-as uint 6)) + (set! (-> a1-2 collide-with) (-> self control root-prim collide-with)) + (set! (-> a1-2 proc) #f) + (set! (-> a1-2 ignore-pat) (new 'static 'pat-surface :noentity #x1)) + (set! (-> a1-2 solid-only) #t) + (when (not (fill-and-probe-using-spheres *collide-cache* a1-2)) + (remove-exit) + (go target-edge-grab-jump (-> *TARGET-bank* edge-grab-jump-height-min) (-> *TARGET-bank* edge-grab-jump-height-max))))) + (else (remove-exit) (go target-edge-grab-off))))) + :code + (behavior () + (target-compute-edge) + (set! (-> self control unknown-uint20) + (the-as uint + (vector-dot (-> self control unknown-vector100) + (vector-normalize! (-> self control unknown-vector102) (the-as float 1.0))))) + (while (< 0.0 (-> self control unknown-float110)) + (when (not (ja-group? eichar-jump-loop-ja)) + (ja-channel-push! 1 (seconds 0.15)) + (ja :group! eichar-jump-loop-ja :num! min)) + (suspend)) + (ja-channel-push! 1 (seconds 0.15)) (cond - ((or (< -0.2 (local-pad-angle)) - (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - ) - (let ((a1-2 (new 'stack-no-clear 'collide-using-spheres-params))) - (set! (-> a1-2 spheres) (-> *collide-edge-work* world-player-leap-up-spheres)) - (set! (-> a1-2 num-spheres) (the-as uint 6)) - (set! (-> a1-2 collide-with) (-> self control root-prim collide-with)) - (set! (-> a1-2 proc) #f) - (set! (-> a1-2 ignore-pat) (new 'static 'pat-surface :noentity #x1)) - (set! (-> a1-2 solid-only) #t) - (when (not (fill-and-probe-using-spheres *collide-cache* a1-2)) - (remove-exit) - (go - target-edge-grab-jump - (-> *TARGET-bank* edge-grab-jump-height-min) - (-> *TARGET-bank* edge-grab-jump-height-max) - ) - ) - ) - ) - (else - (remove-exit) - (go target-edge-grab-off) - ) - ) - ) - ) - :code (behavior () - (target-compute-edge) - (set! (-> self control unknown-uint20) - (the-as uint (vector-dot - (-> self control unknown-vector100) - (vector-normalize! (-> self control unknown-vector102) (the-as float 1.0)) - ) - ) - ) - (while (< 0.0 (-> self control unknown-float110)) - (when (not (ja-group? eichar-jump-loop-ja)) - (ja-channel-push! 1 (seconds 0.15)) - (ja :group! eichar-jump-loop-ja :num! min) - ) - (suspend) - ) - (ja-channel-push! 1 (seconds 0.15)) - (cond - ((< (the-as float (-> self control unknown-uint20)) -0.3) - (ja :group! eichar-edge-grab-swing-right-ja :num! min) - ) - ((< 0.3 (the-as float (-> self control unknown-uint20))) - (ja :group! eichar-edge-grab-swing-left-ja :num! min) - ) - (else - (ja :group! eichar-falling-to-edge-grab-ja :num! min) - ) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-set! 1) - (loop - (ja-no-eval :group! eichar-edge-grab-stance0-ja :num! (seek!) :frame-num 0.0) + ((< (the-as float (-> self control unknown-uint20)) -0.3) (ja :group! eichar-edge-grab-swing-right-ja :num! min)) + ((< 0.3 (the-as float (-> self control unknown-uint20))) (ja :group! eichar-edge-grab-swing-left-ja :num! min)) + (else (ja :group! eichar-falling-to-edge-grab-ja :num! min))) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (+! (-> self anim-seed) 1) - (ja-no-eval :group! eichar-edge-grab-stance1-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post target-no-move-post - ) + (ja :num! (seek!))) + (ja-channel-set! 1) + (loop + (ja-no-eval :group! eichar-edge-grab-stance0-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (+! (-> self anim-seed) 1) + (ja-no-eval :group! eichar-edge-grab-stance1-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post target-no-move-post) (defstate target-edge-grab-jump (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('end-mode) - (go target-falling 'target-edge-grab) - ) - (else - (target-standard-event-handler proc argc message block) - ) - ) - ) - :exit (-> target-edge-grab exit) - :code (behavior ((arg0 float) (arg1 float)) - (ja-channel-set! 1) - (set-quaternion! (-> self control) (-> self control dir-targ)) - (logclear! (-> self control root-prim prim-core action) (collide-action edgegrab-active edgegrab-cam)) - (set! (-> self control transv quad) (the-as uint128 0)) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (ja-no-eval :group! eichar-edge-grab-to-jump-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (target-compute-edge-rider) - (compute-alignment! (-> self align)) - (when (not (logtest? (-> self align flags) (align-flags disabled))) - (vector-matrix*! s4-0 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) - (move-by-vector! (-> self control) s4-0) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-dword70) 0) - (set-forward-vel (the-as float 16384.0)) - (send-event *camera* 'damp-up) - (go target-jump-forward arg0 arg1) - ) - :post target-no-move-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('end-mode) (go target-falling 'target-edge-grab)) + (else (target-standard-event-handler proc argc message block)))) + :exit + (-> target-edge-grab + exit) + :code + (behavior ((arg0 float) (arg1 float)) + (ja-channel-set! 1) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (logclear! (-> self control root-prim prim-core action) (collide-action edgegrab-active edgegrab-cam)) + (set! (-> self control transv quad) (the-as uint128 0)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (ja-no-eval :group! eichar-edge-grab-to-jump-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (target-compute-edge-rider) + (compute-alignment! (-> self align)) + (when (not (logtest? (-> self align flags) (align-flags disabled))) + (vector-matrix*! s4-0 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) + (move-by-vector! (-> self control) s4-0)) + (suspend) + (ja :num! (seek!)))) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-dword70) 0) + (set-forward-vel (the-as float 16384.0)) + (send-event *camera* 'damp-up) + (go target-jump-forward arg0 arg1)) + :post target-no-move-post) (defstate target-edge-grab-off (target) :event target-standard-event-handler - :exit (-> target-edge-grab exit) - :code (behavior () - (ja-channel-set! 1) - (set-quaternion! (-> self control) (-> self control dir-targ)) - (send-event *camera* 'damp-up) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (ja-no-eval :group! eichar-edge-grab-off-ja :num! (seek! (ja-aframe (the-as float 191.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (when (not (logtest? (-> self align flags) (align-flags disabled))) - (vector-matrix*! gp-0 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) - (move-by-vector! (-> self control) gp-0) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 191.0) 0))) - ) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (logclear! (-> self control root-prim prim-core action) (collide-action edgegrab-active edgegrab-cam)) - (vector-float*! (-> self control transv) (-> self control unknown-vector101) -40960.0) - (when (and (not (time-elapsed? (-> self control rider-time) (seconds 0.2))) - (or (logtest? (-> self control unknown-surface01 flags) (surface-flags moving-ground)) - (= (-> self control poly-pat material) (pat-material rotate)) - ) - ) - (+! (-> self control transv x) (-> self control rider-last-move x)) - (+! (-> self control transv z) (-> self control rider-last-move z)) - ) - (go target-falling 'target-edge-grab) - ) - :post target-no-move-post - ) + :exit + (-> target-edge-grab + exit) + :code + (behavior () + (ja-channel-set! 1) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (send-event *camera* 'damp-up) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (ja-no-eval :group! eichar-edge-grab-off-ja :num! (seek! (ja-aframe (the-as float 191.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (when (not (logtest? (-> self align flags) (align-flags disabled))) + (vector-matrix*! gp-0 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) + (move-by-vector! (-> self control) gp-0)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 191.0) 0))))) + (set! (-> self control transv quad) (the-as uint128 0)) + (logclear! (-> self control root-prim prim-core action) (collide-action edgegrab-active edgegrab-cam)) + (vector-float*! (-> self control transv) (-> self control unknown-vector101) -40960.0) + (when (and (not (time-elapsed? (-> self control rider-time) (seconds 0.2))) + (or (logtest? (-> self control unknown-surface01 flags) (surface-flags moving-ground)) + (= (-> self control poly-pat material) (pat-material rotate)))) + (+! (-> self control transv x) (-> self control rider-last-move x)) + (+! (-> self control transv z) (-> self control rider-last-move z))) + (go target-falling 'target-edge-grab)) + :post target-no-move-post) (defstate target-yellow-blast (target) - :event (-> target-running-attack event) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *run-attack-mods*) - (set! (-> *run-attack-mods* turnv) 655360.0) - (set! (-> *run-attack-mods* turnvv) 655360.0) - (target-start-attack) - (target-danger-set! 'spin #f) - (set! (-> self control unknown-uint20) (the-as uint 0)) - (set! (-> self control unknown-int21) 0) - (set! (-> self control unknown-uint31) (the-as uint 0)) - (let ((gp-0 (new-stack-vector0)) - (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - 0.0 - (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) - (let* ((f0-5 (vector-length gp-0)) - (f1-0 f0-5) - ) - (if (< 0.0 f30-0) - (set! f30-0 0.0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-0) - (vector-float*! gp-0 gp-0 (/ f0-5 f1-0)) - ) - ) - ) - ) - :exit (behavior () - (set! (-> *run-attack-mods* turnv) 0.0) - (set! (-> *run-attack-mods* turnvv) 0.0) - (set-time! (-> self control unknown-dword31)) - (target-exit) - ) - :code (behavior () - (let ((gp-0 (the-as handle #f))) - (ja-channel-push! 1 (seconds 0.075)) - (level-hint-spawn - (text-id swamp-eco-yellow-first-use) - "sksp0145" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (case (-> (level-get-target-inside *level*) name) - (('maincave) - (level-hint-spawn - (text-id cave-gnawers-look-around) - "sksp0328" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (ja-no-eval :group! eichar-yellow-running-blast-ja - :num! (seek! (ja-aframe (the-as float 9.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (if (time-elapsed? (-> self state-time) (seconds 0.1)) - (set! (-> *run-attack-mods* turnvv) 0.0) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 9.0) 0))) - ) - (let ((s5-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat)))) - (set! (-> s5-2 y) 0.0) - (vector-normalize! s5-2 (-> *TARGET-bank* yellow-projectile-speed)) - (when (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) - (let ((gp-1 (get-process *default-dead-pool* projectile-yellow #x4000))) - (set! gp-0 (ppointer->handle - (when gp-1 - (let ((t9-12 (method-of-type projectile-yellow activate))) - (t9-12 (the-as projectile-yellow gp-1) self 'projectile-yellow (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-1 - projectile-init-by-other - (-> self entity) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg sk_rhand)) - s5-2 - (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) - 25 - 9 - ) - #f - ) - (-> gp-1 ppointer) - ) - ) - ) - ) - (set-time! (-> self control unknown-dword82)) - ) - ) - (ja-no-eval :group! eichar-yellow-running-blast-ja :num! (seek!) :frame-num (ja-aframe (the-as float 9.0) 0)) - (until (ja-done? 0) - (if (or (< (the-as uint (- (current-time) (the-as int (-> self control unknown-uint30)))) (the-as uint 30)) - (= (-> self control unknown-uint31) 1) - ) - (send-event (handle->process gp-0) 'die) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-stance) - (go target-falling #f) - ) - ) - :post target-post - ) + :event + (-> target-running-attack + event) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *run-attack-mods*) + (set! (-> *run-attack-mods* turnv) 655360.0) + (set! (-> *run-attack-mods* turnvv) 655360.0) + (target-start-attack) + (target-danger-set! 'spin #f) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control unknown-int21) 0) + (set! (-> self control unknown-uint31) (the-as uint 0)) + (let ((gp-0 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) + (let* ((f0-5 (vector-length gp-0)) + (f1-0 f0-5)) + (if (< 0.0 f30-0) (set! f30-0 0.0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-0) + (vector-float*! gp-0 gp-0 (/ f0-5 f1-0)))))) + :exit + (behavior () + (set! (-> *run-attack-mods* turnv) 0.0) + (set! (-> *run-attack-mods* turnvv) 0.0) + (set-time! (-> self control unknown-dword31)) + (target-exit)) + :code + (behavior () + (let ((gp-0 (the-as handle #f))) + (ja-channel-push! 1 (seconds 0.075)) + (level-hint-spawn (text-id swamp-eco-yellow-first-use) "sksp0145" (the-as entity #f) *entity-pool* (game-task none)) + (case (-> (level-get-target-inside *level*) name) + (('maincave) + (level-hint-spawn (text-id cave-gnawers-look-around) "sksp0328" (the-as entity #f) *entity-pool* (game-task none)))) + (ja-no-eval :group! eichar-yellow-running-blast-ja :num! (seek! (ja-aframe (the-as float 9.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (if (time-elapsed? (-> self state-time) (seconds 0.1)) (set! (-> *run-attack-mods* turnvv) 0.0)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 9.0) 0)))) + (let ((s5-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat)))) + (set! (-> s5-2 y) 0.0) + (vector-normalize! s5-2 (-> *TARGET-bank* yellow-projectile-speed)) + (when (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) + (let ((gp-1 (get-process *default-dead-pool* projectile-yellow #x4000))) + (set! gp-0 + (ppointer->handle (when gp-1 + (let ((t9-12 (method-of-type projectile-yellow activate))) + (t9-12 (the-as projectile-yellow gp-1) self 'projectile-yellow (the-as pointer #x70004000))) + (run-now-in-process gp-1 + projectile-init-by-other + (-> self entity) + (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg sk_rhand)) + s5-2 + (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 25 9) + #f) + (-> gp-1 ppointer))))) + (set-time! (-> self control unknown-dword82)))) + (ja-no-eval :group! eichar-yellow-running-blast-ja :num! (seek!) :frame-num (ja-aframe (the-as float 9.0) 0)) + (until (ja-done? 0) + (if (or (< (the-as uint (- (current-time) (the-as int (-> self control unknown-uint30)))) (the-as uint 30)) + (= (-> self control unknown-uint31) 1)) + (send-event (handle->process gp-0) 'die)) + (suspend) + (ja :num! (seek!)))) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-stance) (go target-falling #f))) + :post target-post) -(define *yellow-jump-mods* (new 'static 'surface - :name 'run - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 40960.0 - :target-speed 40960.0 - :fric 0.1 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags jump) - ) - ) +(define *yellow-jump-mods* + (new 'static + 'surface + :name 'run + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 40960.0 + :target-speed 40960.0 + :fric 0.1 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags jump))) (defstate target-yellow-jump-blast (target) :event target-standard-event-handler - :enter (behavior () - (set! (-> self control unknown-surface00) *yellow-jump-mods*) - (let ((gp-0 (new-stack-vector0))) - (let ((f0-1 (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-1)) - ) - (let* ((f0-2 (vector-length gp-0)) - (f1-1 f0-2) - (f2-0 46917.434) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) - (vector-float*! gp-0 gp-0 (/ f0-2 f1-1)) - ) - ) - ) - ) - :exit (behavior () - (rot->dir-targ! (-> self control)) - (set-time! (-> self control unknown-dword31)) - (target-exit) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! eichar-yellow-jumping-blast-ja - :num! (seek! (ja-aframe (the-as float 15.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 15.0) 0))) - ) - (suspend) - (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-0 46917.434) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) - (vector-float*! gp-2 gp-2 (/ f0-7 f1-1)) - ) - ) - ) - (ja :num! (seek!)) - (process-spawn - projectile-yellow - :init projectile-init-by-other - (-> self entity) - (-> self control unknown-vector90) - (vector-float*! - (new 'stack-no-clear 'vector) - (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat)) - (the-as float (-> *TARGET-bank* yellow-projectile-speed)) - ) - (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) - 16 - 0 - ) - #f - :to self - ) - (set-time! (-> self control unknown-dword82)) - (let ((gp-4 (current-time))) - (until (time-elapsed? gp-4 (seconds 0.1)) + :enter + (behavior () + (set! (-> self control unknown-surface00) *yellow-jump-mods*) + (let ((gp-0 (new-stack-vector0))) + (let ((f0-1 (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-1))) + (let* ((f0-2 (vector-length gp-0)) + (f1-1 f0-2) + (f2-0 46917.434)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-0 gp-0 (/ f0-2 f1-1)))))) + :exit + (behavior () + (rot->dir-targ! (-> self control)) + (set-time! (-> self control unknown-dword31)) + (target-exit)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! eichar-yellow-jumping-blast-ja :num! (seek! (ja-aframe (the-as float 15.0) 0)) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! eichar-yellow-jumping-blast-ja :num! (seek!) :frame-num (ja-frame-num 0)) - (until (ja-done? 0) + (ja :num! (seek! (ja-aframe (the-as float 15.0) 0)))) (suspend) + (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-0 46917.434)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! gp-2 gp-2 (/ f0-7 f1-1))))) (ja :num! (seek!)) - ) - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-stance) - (go target-falling #f) - ) - ) - :post target-no-stick-post - ) + (process-spawn projectile-yellow + :init + projectile-init-by-other + (-> self entity) + (-> self control unknown-vector90) + (vector-float*! (new 'stack-no-clear 'vector) + (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat)) + (the-as float (-> *TARGET-bank* yellow-projectile-speed))) + (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 16 0) + #f + :to + self) + (set-time! (-> self control unknown-dword82)) + (let ((gp-4 (current-time))) (until (time-elapsed? gp-4 (seconds 0.1)) (suspend))) + (ja-no-eval :group! eichar-yellow-jumping-blast-ja :num! (seek!) :frame-num (ja-frame-num 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-stance) (go target-falling #f))) + :post target-no-stick-post) (defstate target-eco-powerup (target) :event target-standard-event-handler :exit target-exit - :trans (behavior () - (slide-down-test) - ) - :code (behavior ((arg0 object) (arg1 float)) - (set! (-> self neck flex-blend) 0.0) - (set-time! (-> self state-time)) - (if (= arg1 (-> *FACT-bank* eco-full-inc)) + :trans + (behavior () + (slide-down-test)) + :code + (behavior ((arg0 object) (arg1 float)) + (set! (-> self neck flex-blend) 0.0) + (set-time! (-> self state-time)) + (if (= arg1 (-> *FACT-bank* eco-full-inc)) (set! (-> self control unknown-surface00) *double-jump-mods*) - (set! (-> self control unknown-surface00) *walk-mods*) - ) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-powerup-ja - :num! (seek! max (the-as float (if (= arg1 (-> *FACT-bank* eco-full-inc)) - 2.0 - 3.0 - ) - ) - ) - :frame-num (ja-aframe - (the-as float (if (= arg1 (-> *FACT-bank* eco-full-inc)) - 0.0 - 6.0 - ) - ) - 0 - ) - ) - (until (ja-done? 0) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (not (logtest? (-> self water flags) (water-flags wt09))) - (not (logtest? (-> self state-flags) (state-flags prevent-jump))) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) - (go target-attack-air #f) - ) - (when (can-hands? #f) - (if (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) + (set! (-> self control unknown-surface00) *walk-mods*)) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! + eichar-powerup-ja + :num! + (seek! max (the-as float (if (= arg1 (-> *FACT-bank* eco-full-inc)) 2.0 3.0))) + :frame-num + (ja-aframe (the-as float (if (= arg1 (-> *FACT-bank* eco-full-inc)) 0.0 6.0)) 0)) + (until (ja-done? 0) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (not (logtest? (-> self water flags) (water-flags wt09))) + (not (logtest? (-> self state-flags) (state-flags prevent-jump)))) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) (go target-attack-air #f)) + (when (can-hands? #f) + (if (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) (go target-yellow-jump-blast) - (go target-running-attack) - ) - ) - (compute-alignment! (-> self align)) - (align! - (-> self align) - (align-opts adjust-y-vel) - (the-as float 1.0) - (the-as float (if (= arg1 (-> *FACT-bank* eco-full-inc)) - 2.0 - 1.0 - ) - ) - (the-as float 1.0) - ) - (suspend) - (ja :num! (seek! max (the-as float (if (= arg1 (-> *FACT-bank* eco-full-inc)) - 2.0 - 3.0 - ) - ) - ) - ) - ) - (go target-falling 'target-eco-powerup) - ) - :post target-post - ) + (go target-running-attack))) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-y-vel) + (the-as float 1.0) + (the-as float (if (= arg1 (-> *FACT-bank* eco-full-inc)) 2.0 1.0)) + (the-as float 1.0)) + (suspend) + (ja :num! (seek! max (the-as float (if (= arg1 (-> *FACT-bank* eco-full-inc)) 2.0 3.0))))) + (go target-falling 'target-eco-powerup)) + :post target-post) (defstate target-wade-stance (target) :event target-standard-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *wade-mods*) - (set-zero! (-> self water bob)) - ) - :exit (behavior () - (target-state-hook-exit) - (target-exit) - (let ((v1-1 (-> self skel effect))) - (set! (-> v1-1 channel-offset) 0) - ) - 0 - ) - :trans (behavior () - ((-> self state-hook)) - (when (and (not (logtest? (-> self water flags) (water-flags wt10))) - (time-elapsed? (-> self water wade-time) (seconds 0.05)) - ) - (if (logtest? (-> self water flags) (water-flags wt11)) - (go target-swim-stance) - (go target-stance) - ) - ) - (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) - (go target-duck-stance) - ) - (if (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (go target-wade-walk) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) - (sound-play "swim-stroke") - (create-splash (-> self water) (the-as float 1.4) (-> self control trans) 0 (-> self control transv)) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - ) - :code (-> target-stance code) - :post target-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *wade-mods*) + (set-zero! (-> self water bob))) + :exit + (behavior () + (target-state-hook-exit) + (target-exit) + (let ((v1-1 (-> self skel effect))) (set! (-> v1-1 channel-offset) 0)) + 0) + :trans + (behavior () + ((-> self state-hook)) + (when (and (not (logtest? (-> self water flags) (water-flags wt10))) (time-elapsed? (-> self water wade-time) (seconds 0.05))) + (if (logtest? (-> self water flags) (water-flags wt11)) (go target-swim-stance) (go target-stance))) + (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) (go target-duck-stance)) + (if (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (go target-wade-walk)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (sound-play "swim-stroke") + (create-splash (-> self water) (the-as float 1.4) (-> self control trans) 0 (-> self control transv)) + (go target-attack)) + (if (can-hands? #t) (go target-running-attack))) + :code + (-> target-stance + code) + :post target-post) (defstate target-wade-walk (target) :event target-standard-event-handler - :enter (-> target-wade-stance enter) - :exit (-> target-wade-stance exit) - :trans (behavior () - ((-> self state-hook)) - (when (and (not (logtest? (-> self water flags) (water-flags wt10))) - (time-elapsed? (-> self water wade-time) (seconds 0.1)) - ) - (if (logtest? (-> self water flags) (water-flags wt11)) - (go target-swim-stance) - (go target-stance) - ) - ) - (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (go target-wade-stance) - ) - (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) - (go target-duck-walk) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) - (sound-play "swim-stroke") - (create-splash (-> self water) (the-as float 1.4) (-> self control trans) 0 (-> self control transv)) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - ) - :code (behavior () - (let ((gp-0 105) - (f30-0 0.0) - ) - (let ((v1-2 (ja-group))) + :enter + (-> target-wade-stance + enter) + :exit + (-> target-wade-stance + exit) + :trans + (behavior () + ((-> self state-hook)) + (when (and (not (logtest? (-> self water flags) (water-flags wt10))) (time-elapsed? (-> self water wade-time) (seconds 0.1))) + (if (logtest? (-> self water flags) (water-flags wt11)) (go target-swim-stance) (go target-stance))) + (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (go target-wade-stance)) + (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) (go target-duck-walk)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (when (and (cpad-pressed? (-> self control unknown-cpad-info00 number) circle) (can-feet?)) + (sound-play "swim-stroke") + (create-splash (-> self water) (the-as float 1.4) (-> self control trans) 0 (-> self control transv)) + (go target-attack)) + (if (can-hands? #t) (go target-running-attack))) + :code + (behavior () + (let ((gp-0 105) + (f30-0 0.0)) + (let ((v1-2 (ja-group))) + (cond + ((or (= v1-2 eichar-walk-ja) (= v1-2 eichar-run-ja)) (set! gp-0 15) (set! f30-0 (ja-frame-num 0))) + ((let ((v1-9 (ja-group))) (or (= v1-9 eichar-jump-ja) (= v1-9 eichar-jump-loop-ja))) (set! gp-0 30)) + ((ja-group? eichar-swim-walk-ja) (set! gp-0 120)))) (cond - ((or (= v1-2 eichar-walk-ja) (= v1-2 eichar-run-ja)) - (set! gp-0 15) - (set! f30-0 (ja-frame-num 0)) - ) - ((let ((v1-9 (ja-group))) - (or (= v1-9 eichar-jump-ja) (= v1-9 eichar-jump-loop-ja)) - ) - (set! gp-0 30) - ) - ((ja-group? eichar-swim-walk-ja) - (set! gp-0 120) - ) - ) - ) - (cond - ((and (= (ja-group-size) 6) (ja-group? eichar-wade-shallow-walk-ja)) - ) - (else - (ja-channel-push! 6 (the-as time-frame gp-0)) - (ja :group! eichar-wade-shallow-walk-ja - :num! (identity f30-0) - :dist (-> *TARGET-bank* wade-shallow-walk-cycle-dist) - ) - (ja :chan 1 - :group! eichar-wade-deep-walk-ja - :num! (identity f30-0) - :dist (-> *TARGET-bank* wade-deep-walk-cycle-dist) - ) - (ja :chan 2 - :group! eichar-walk-ja - :num! (identity f30-0) - :frame-interp 0.0 - :dist (-> *TARGET-bank* walk-cycle-dist) - ) - (ja :chan 3 - :group! eichar-walk-down-ja - :num! (identity f30-0) - :frame-interp 0.0 - :dist (-> *TARGET-bank* walk-down-cycle-dist) - ) - (ja :chan 4 - :group! eichar-walk-left-ja - :num! (identity f30-0) - :frame-interp 0.0 - :dist (-> *TARGET-bank* walk-side-cycle-dist) - ) - ) - ) - ) - (set! (-> self skel root-channel 2 command) 'push) - (set! (-> self skel root-channel 5 command) 'stack) - (let ((f30-1 0.0) - (f28-0 0.0) - (f26-0 (lerp-scale - (the-as float 1.0) - (the-as float 0.0) - (-> self control unknown-float01) - (the-as float 16384.0) - (the-as float 32768.0) - ) - ) - (gp-6 0) - ) - (loop - (let ((f0-10 (fmax -1.0 (fmin 1.0 (* 2.0 (-> self control unknown-float61))))) - (f24-0 (fmax -1.0 (fmin 1.0 (* 1.6 (-> self control unknown-float62))))) - ) - (let ((f1-4 (fabs (- f0-10 f30-1)))) - (set! f30-1 (seek f30-1 f0-10 (fmax 0.05 (fmin 0.2 (* 0.25 f1-4))))) - ) - (let ((f0-14 (fabs (- f24-0 f28-0)))) - (set! f28-0 (seek f28-0 f24-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-14))))) - ) - ) - (ja :chan 3 :group! eichar-walk-down-ja :dist (-> *TARGET-bank* walk-down-cycle-dist)) - (if (>= f30-1 0.0) + ((and (= (ja-group-size) 6) (ja-group? eichar-wade-shallow-walk-ja))) + (else + (ja-channel-push! 6 (the-as time-frame gp-0)) + (ja :group! eichar-wade-shallow-walk-ja :num! (identity f30-0) :dist (-> *TARGET-bank* wade-shallow-walk-cycle-dist)) + (ja :chan 1 :group! eichar-wade-deep-walk-ja :num! (identity f30-0) :dist (-> *TARGET-bank* wade-deep-walk-cycle-dist)) + (ja :chan 2 :group! eichar-walk-ja :num! (identity f30-0) :frame-interp 0.0 :dist (-> *TARGET-bank* walk-cycle-dist)) + (ja :chan 3 + :group! + eichar-walk-down-ja + :num! (identity f30-0) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-down-cycle-dist)) + (ja :chan 4 + :group! + eichar-walk-left-ja + :num! (identity f30-0) + :frame-interp 0.0 + :dist (-> *TARGET-bank* walk-side-cycle-dist))))) + (set! (-> self skel root-channel 2 command) 'push) + (set! (-> self skel root-channel 5 command) 'stack) + (let ((f30-1 0.0) + (f28-0 0.0) + (f26-0 (lerp-scale (the-as float 1.0) + (the-as float 0.0) + (-> self control unknown-float01) + (the-as float 16384.0) + (the-as float 32768.0))) + (gp-6 0)) + (loop + (let ((f0-10 (fmax -1.0 (fmin 1.0 (* 2.0 (-> self control unknown-float61))))) + (f24-0 (fmax -1.0 (fmin 1.0 (* 1.6 (-> self control unknown-float62)))))) + (let ((f1-4 (fabs (- f0-10 f30-1)))) (set! f30-1 (seek f30-1 f0-10 (fmax 0.05 (fmin 0.2 (* 0.25 f1-4)))))) + (let ((f0-14 (fabs (- f24-0 f28-0)))) (set! f28-0 (seek f28-0 f24-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-14))))))) + (ja :chan 3 :group! eichar-walk-down-ja :dist (-> *TARGET-bank* walk-down-cycle-dist)) + (if (>= f30-1 0.0) (ja :chan 3 :group! eichar-walk-up-ja :frame-interp (fabs f30-1) :dist (-> *TARGET-bank* walk-up-cycle-dist)) - (ja :chan 3 - :group! eichar-walk-down-ja - :frame-interp (fabs f30-1) - :dist (-> *TARGET-bank* walk-down-cycle-dist) - ) - ) - (if (>= f28-0 0.0) - (ja :chan 4 - :group! eichar-walk-right-ja - :frame-interp (fabs f28-0) - :dist (-> *TARGET-bank* walk-side-cycle-dist) - ) - (ja :chan 4 - :group! eichar-walk-left-ja - :frame-interp (fabs f28-0) - :dist (-> *TARGET-bank* walk-side-cycle-dist) - ) - ) - (let* ((f0-30 (- (-> self water height) (-> self control trans y))) - (f24-1 (lerp-scale - (the-as float 0.0) - (the-as float 1.0) - f0-30 - (lerp (-> self water wade-height) (-> self water swim-height) (the-as float 0.25)) - (lerp (-> self water wade-height) (-> self water swim-height) (the-as float 0.75)) - ) - ) - ) - (let ((v1-108 (-> self skel effect))) - (set! (-> v1-108 channel-offset) (if (< 0.5 f24-1) - 1 - 0 - ) - ) - ) - 0 - (set! f26-0 (seek - f26-0 - (lerp-scale - (the-as float 1.0) - (the-as float 0.0) - (-> self control unknown-float01) - (the-as float 16384.0) - (the-as float 32768.0) - ) - (* 4.0 (seconds-per-frame)) - ) - ) - (set! (-> self skel root-channel 1 frame-interp) f24-1) - (ja :num! (loop! (/ (-> self control unknown-float01) - (* 60.0 (/ (current-cycle-distance (-> self skel)) (-> *TARGET-bank* run-cycle-length))) - ) - ) - ) - (ja :chan 5 :frame-interp (lerp f26-0 (the-as float 0.0) f24-1)) - ) - (ja :chan 1 :num! (chan 0)) - (ja :chan 2 :num! (chan 0)) - (ja :chan 3 :num! (chan 0)) - (ja :chan 4 :num! (chan 0)) - (when (and (time-elapsed? (the-as time-frame gp-6) (seconds 0.2)) - (< (- (-> self water height) (-> self control trans y)) 4096.0) - ) - (case (the int (ja-aframe-num 0)) - ((15 16 17 18) - (create-splash - (-> self water) - (the-as float 0.2) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg Rtoes)) - 0 - (vector-float*! (new 'stack-no-clear 'vector) (-> self control transv) 2.5) - ) - (set! gp-6 (the-as int (current-time))) - ) - ((46 47 48 49) - (create-splash - (-> self water) - (the-as float 0.2) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg Ltoes)) - 0 - (vector-float*! (new 'stack-no-clear 'vector) (-> self control transv) 2.5) - ) - (set! gp-6 (the-as int (current-time))) - ) - ) - ) - (suspend) - ) - ) - ) - :post target-post - ) + (ja :chan 3 :group! eichar-walk-down-ja :frame-interp (fabs f30-1) :dist (-> *TARGET-bank* walk-down-cycle-dist))) + (if (>= f28-0 0.0) + (ja :chan 4 :group! eichar-walk-right-ja :frame-interp (fabs f28-0) :dist (-> *TARGET-bank* walk-side-cycle-dist)) + (ja :chan 4 :group! eichar-walk-left-ja :frame-interp (fabs f28-0) :dist (-> *TARGET-bank* walk-side-cycle-dist))) + (let* ((f0-30 (- (-> self water height) (-> self control trans y))) + (f24-1 (lerp-scale (the-as float 0.0) + (the-as float 1.0) + f0-30 + (lerp (-> self water wade-height) (-> self water swim-height) (the-as float 0.25)) + (lerp (-> self water wade-height) (-> self water swim-height) (the-as float 0.75))))) + (let ((v1-108 (-> self skel effect))) (set! (-> v1-108 channel-offset) (if (< 0.5 f24-1) 1 0))) + 0 + (set! f26-0 + (seek f26-0 + (lerp-scale (the-as float 1.0) + (the-as float 0.0) + (-> self control unknown-float01) + (the-as float 16384.0) + (the-as float 32768.0)) + (* 4.0 (seconds-per-frame)))) + (set! (-> self skel root-channel 1 frame-interp) f24-1) + (ja :num! + (loop! (/ (-> self control unknown-float01) + (* 60.0 (/ (current-cycle-distance (-> self skel)) (-> *TARGET-bank* run-cycle-length)))))) + (ja :chan 5 :frame-interp (lerp f26-0 (the-as float 0.0) f24-1))) + (ja :chan 1 :num! (chan 0)) + (ja :chan 2 :num! (chan 0)) + (ja :chan 3 :num! (chan 0)) + (ja :chan 4 :num! (chan 0)) + (when (and (time-elapsed? (the-as time-frame gp-6) (seconds 0.2)) + (< (- (-> self water height) (-> self control trans y)) 4096.0)) + (case (the int (ja-aframe-num 0)) + ((15 16 17 18) + (create-splash (-> self water) + (the-as float 0.2) + (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg Rtoes)) + 0 + (vector-float*! (new 'stack-no-clear 'vector) (-> self control transv) 2.5)) + (set! gp-6 (the-as int (current-time)))) + ((46 47 48 49) + (create-splash (-> self water) + (the-as float 0.2) + (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg Ltoes)) + 0 + (vector-float*! (new 'stack-no-clear 'vector) (-> self control transv) 2.5)) + (set! gp-6 (the-as int (current-time)))))) + (suspend)))) + :post target-post) (defbehavior target-swim-tilt target ((arg0 float) (arg1 float) (arg2 float) (arg3 float)) (let ((gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)))) (let ((v1-2 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ))) - (f0-1 - (fmin 1.0 (* arg0 (/ (-> self control unknown-float01) (-> self control unknown-surface01 target-speed)))) - ) - ) - (seek! - (-> self control unknown-float130) - (fmax (fmin (* (+ f0-1 arg2) (fmax 0.5 (+ 0.5 (vector-dot gp-0 v1-2)))) arg3) (- arg3)) - (* arg1 (seconds-per-frame)) - ) - ) + (f0-1 (fmin 1.0 (* arg0 (/ (-> self control unknown-float01) (-> self control unknown-surface01 target-speed)))))) + (seek! (-> self control unknown-float130) + (fmax (fmin (* (+ f0-1 arg2) (fmax 0.5 (+ 0.5 (vector-dot gp-0 v1-2)))) arg3) (- arg3)) + (* arg1 (seconds-per-frame)))) (let ((a2-2 (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)))) - (forward-up-nopitch->quaternion (-> self control unknown-quaternion01) gp-0 a2-2) - ) - ) - (quaternion-rotate-x! - (-> self control unknown-quaternion01) - (-> self control unknown-quaternion01) - (the-as float (if (>= (-> self control unknown-float130) 0.0) - 16384.0 - -16384.0 - ) - ) - ) + (forward-up-nopitch->quaternion (-> self control unknown-quaternion01) gp-0 a2-2))) + (quaternion-rotate-x! (-> self control unknown-quaternion01) + (-> self control unknown-quaternion01) + (the-as float (if (>= (-> self control unknown-float130) 0.0) 16384.0 -16384.0))) (set! (-> self control unknown-float00) (fabs (-> self control unknown-float130))) (if (= (-> self next-state name) 'target-swim-down) - (seek! (-> self control unknown-float131) (the-as float -6144.0) (* 4096.0 (seconds-per-frame))) - (seek! (-> self control unknown-float131) (the-as float 0.0) (* 2048.0 (seconds-per-frame))) - ) - (set! (-> self control unknown-vector11 y) (-> self control unknown-float131)) - ) + (seek! (-> self control unknown-float131) (the-as float -6144.0) (* 4096.0 (seconds-per-frame))) + (seek! (-> self control unknown-float131) (the-as float 0.0) (* 2048.0 (seconds-per-frame)))) + (set! (-> self control unknown-vector11 y) (-> self control unknown-float131))) (defstate target-swim-stance (target) :event target-standard-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *swim-mods*) - (logior! (-> self water flags) (water-flags wt04)) - ) - :exit (behavior () - (target-state-hook-exit) - (set! (-> self control unknown-surface00 target-speed) 28672.0) - (target-exit) - (when (not (or (= (-> self next-state name) 'target-swim-stance) - (= (-> self next-state name) 'target-swim-walk) - (= (-> self next-state name) 'target-swim-down) - (= (-> self next-state name) 'target-swim-up) - ) - ) - (quaternion-identity! (-> self control unknown-quaternion01)) - (set! (-> self control unknown-float00) 0.0) - ) - ) - :trans (behavior () - ((-> self state-hook)) - (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (not (logtest? (-> self control status) (cshape-moving-flags on-water))) - ) - (set-zero! (-> self water bob)) - ) - (when (and (not (logtest? (-> self water flags) (water-flags wt11))) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (if (logtest? (-> self water flags) (water-flags wt10)) - (go target-wade-stance) - (go target-stance) - ) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - (time-elapsed? (-> self water enter-swim-time) (seconds 0.1)) - ) - (go target-swim-jump (-> *TARGET-bank* swim-jump-height-min) (-> *TARGET-bank* swim-jump-height-max)) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons square) - ) - (< (-> *TARGET-bank* min-dive-depth) (target-height-above-ground)) - ) - (go target-swim-down) - ) - (if (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (let ((gp-0 (ja-group))) - (ja-aframe-num 0) - (if (or (and (= gp-0 eichar-swim-up-ja) #t) (and (= gp-0 eichar-swim-down-to-up-ja) #t)) - #f - #t - ) - ) - ) - (go target-swim-walk) - ) - (target-swim-tilt (the-as float 0.0) (the-as float 2.0) (the-as float 0.0) (the-as float 1.0)) - ) - :code (behavior () - (let ((v1-2 (ja-group))) - (cond - ((or (= v1-2 eichar-swim-up-ja) (= v1-2 eichar-swim-down-to-up-ja)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! eichar-swim-up-to-stance-ja - :num! (seek! - max - (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - 1.0 - 2.0 - ) - ) - ) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (let ((a0-9 (-> self skel root-channel 0))) - (set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1))) - (let ((v1-41 (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - 1.0 - 2.0 - ) - ) - ) - (set! (-> a0-9 param 1) (the-as float v1-41)) - ) - (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ((ja-group? eichar-swim-walk-ja) - (ja-channel-push! 1 (seconds 0.83)) - ) - (else - (ja-channel-push! 1 (seconds 0.15)) - ) - ) - ) - (loop - (ja :group! eichar-swim-stance-ja :num! min) - (until (and (ja-done? 0) (= (-> self skel root-channel 0) (-> self skel channel))) - (suspend) - (if (= (-> self skel root-channel 0) (-> self skel channel)) - (ja :num! (seek!)) - ) - ) - ) - ) - :post target-swim-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *swim-mods*) + (logior! (-> self water flags) (water-flags wt04))) + :exit + (behavior () + (target-state-hook-exit) + (set! (-> self control unknown-surface00 target-speed) 28672.0) + (target-exit) + (when (not (or (= (-> self next-state name) 'target-swim-stance) + (= (-> self next-state name) 'target-swim-walk) + (= (-> self next-state name) 'target-swim-down) + (= (-> self next-state name) 'target-swim-up))) + (quaternion-identity! (-> self control unknown-quaternion01)) + (set! (-> self control unknown-float00) 0.0))) + :trans + (behavior () + ((-> self state-hook)) + (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (not (logtest? (-> self control status) (cshape-moving-flags on-water)))) + (set-zero! (-> self water bob))) + (when (and (not (logtest? (-> self water flags) (water-flags wt11))) (time-elapsed? (-> self state-time) (seconds 0.1))) + (if (logtest? (-> self water flags) (water-flags wt10)) (go target-wade-stance) (go target-stance))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f) + (time-elapsed? (-> self water enter-swim-time) (seconds 0.1))) + (go target-swim-jump (-> *TARGET-bank* swim-jump-height-min) (-> *TARGET-bank* swim-jump-height-max))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons square)) + (< (-> *TARGET-bank* min-dive-depth) (target-height-above-ground))) + (go target-swim-down)) + (if (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (let ((gp-0 (ja-group))) + (ja-aframe-num 0) + (if (or (and (= gp-0 eichar-swim-up-ja) #t) (and (= gp-0 eichar-swim-down-to-up-ja) #t)) #f #t))) + (go target-swim-walk)) + (target-swim-tilt (the-as float 0.0) (the-as float 2.0) (the-as float 0.0) (the-as float 1.0))) + :code + (behavior () + (let ((v1-2 (ja-group))) + (cond + ((or (= v1-2 eichar-swim-up-ja) (= v1-2 eichar-swim-down-to-up-ja)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! + eichar-swim-up-to-stance-ja + :num! + (seek! max + (the-as float (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) 1.0 2.0))) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (let ((a0-9 (-> self skel root-channel 0))) + (set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1))) + (let ((v1-41 (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) 1.0 2.0))) + (set! (-> a0-9 param 1) (the-as float v1-41))) + (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!)))) + ((ja-group? eichar-swim-walk-ja) (ja-channel-push! 1 (seconds 0.83))) + (else (ja-channel-push! 1 (seconds 0.15))))) + (loop + (ja :group! eichar-swim-stance-ja :num! min) + (until (and (ja-done? 0) (= (-> self skel root-channel 0) (-> self skel channel))) + (suspend) + (if (= (-> self skel root-channel 0) (-> self skel channel)) (ja :num! (seek!)))))) + :post target-swim-post) (defstate target-swim-walk (target) :event target-standard-event-handler - :enter (behavior () - ((-> target-swim-stance enter)) - (die-on-next-update! (-> self water bob)) - (set! (-> self control unknown-uint20) (the-as uint (current-time))) - ) - :exit (-> target-swim-stance exit) - :trans (behavior () - ((-> self state-hook)) - (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (not (logtest? (-> self control status) (cshape-moving-flags on-water))) - ) - (set-zero! (-> self water bob)) - ) - (when (and (not (logtest? (-> self water flags) (water-flags wt11))) - (time-elapsed? (-> self water swim-time) (seconds 0.1)) - ) - (if (logtest? (-> self water flags) (water-flags wt10)) - (go target-wade-stance) - (go target-stance) - ) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - (time-elapsed? (-> self water enter-swim-time) (seconds 0.1)) - ) - (go target-swim-jump (-> *TARGET-bank* swim-jump-height-min) (-> *TARGET-bank* swim-jump-height-max)) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons square) - ) - (< (-> *TARGET-bank* min-dive-depth) (target-height-above-ground)) - ) - (go target-swim-down) - ) - (cond - ((= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (if (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 15)) - (go target-swim-stance) - ) - ) - (else - (set! (-> self control unknown-uint20) (the-as uint (current-time))) - ) - ) - (target-swim-tilt (the-as float 0.0) (the-as float 2.0) (the-as float 0.0) (the-as float 1.0)) - ) - :code (behavior () - (let ((v1-2 (ja-group))) + :enter + (behavior () + ((-> target-swim-stance enter)) + (die-on-next-update! (-> self water bob)) + (set! (-> self control unknown-uint20) (the-as uint (current-time)))) + :exit + (-> target-swim-stance + exit) + :trans + (behavior () + ((-> self state-hook)) + (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (not (logtest? (-> self control status) (cshape-moving-flags on-water)))) + (set-zero! (-> self water bob))) + (when (and (not (logtest? (-> self water flags) (water-flags wt11))) (time-elapsed? (-> self water swim-time) (seconds 0.1))) + (if (logtest? (-> self water flags) (water-flags wt10)) (go target-wade-stance) (go target-stance))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f) + (time-elapsed? (-> self water enter-swim-time) (seconds 0.1))) + (go target-swim-jump (-> *TARGET-bank* swim-jump-height-min) (-> *TARGET-bank* swim-jump-height-max))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons square)) + (< (-> *TARGET-bank* min-dive-depth) (target-height-above-ground))) + (go target-swim-down)) (cond - ((or (= v1-2 eichar-swim-up-ja) (= v1-2 eichar-swim-down-to-up-ja) (= v1-2 eichar-swim-up-to-stance-ja)) - (ja-channel-push! 1 (seconds 0.3)) - ) - ((ja-group? eichar-swim-up-to-stance-ja) - (ja-channel-push! 1 (seconds 0.15)) - (ja-no-eval :group! eichar-swim-walk-ja :num! (seek!) :frame-num (ja-aframe (the-as float 19.0) 0)) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (if (not (logtest? (-> self align flags) (align-flags disabled))) + ((= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (if (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 15)) + (go target-swim-stance))) + (else (set! (-> self control unknown-uint20) (the-as uint (current-time))))) + (target-swim-tilt (the-as float 0.0) (the-as float 2.0) (the-as float 0.0) (the-as float 1.0))) + :code + (behavior () + (let ((v1-2 (ja-group))) + (cond + ((or (= v1-2 eichar-swim-up-ja) (= v1-2 eichar-swim-down-to-up-ja) (= v1-2 eichar-swim-up-to-stance-ja)) + (ja-channel-push! 1 (seconds 0.3))) + ((ja-group? eichar-swim-up-to-stance-ja) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! eichar-swim-walk-ja :num! (seek!) :frame-num (ja-aframe (the-as float 19.0) 0)) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (if (not (logtest? (-> self align flags) (align-flags disabled))) (set! (-> self control unknown-surface00 target-speed) - (* (-> self align delta trans z) (-> self control unknown-surface01 alignv) (-> *display* frames-per-second)) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.15)) - ) - ) - ) - (loop - (ja-no-eval :group! eichar-swim-walk-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (if (not (logtest? (-> self align flags) (align-flags disabled))) + (* (-> self align delta trans z) (-> self control unknown-surface01 alignv) (-> *display* frames-per-second)))) + (suspend) + (ja :num! (seek!)))) + (else (ja-channel-push! 1 (seconds 0.15))))) + (loop + (ja-no-eval :group! eichar-swim-walk-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (if (not (logtest? (-> self align flags) (align-flags disabled))) (set! (-> self control unknown-surface00 target-speed) - (* (-> self align delta trans z) (-> self control unknown-surface01 alignv) (-> *display* frames-per-second)) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post target-swim-post - ) + (* (-> self align delta trans z) (-> self control unknown-surface01 alignv) (-> *display* frames-per-second)))) + (suspend) + (ja :num! (seek!))))) + :post target-swim-post) (defstate target-swim-down (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack 'attack-invinc) - (let ((v1-2 (the-as attack-info (-> block param 1)))) - (when (or (not (logtest? (-> v1-2 mask) (attack-mask mode))) (= (-> v1-2 mode) 'generic) (= (-> v1-2 mode) 'drown)) - (set! (-> v1-2 mode) 'damage) - (if (and (= (-> self game mode) 'play) (>= 1.0 (-> self fact health))) - (set! (-> v1-2 mode) 'drown-death) - ) - (logior! (-> v1-2 mask) (attack-mask mode)) - (set! (-> self control unknown-uint20) (the-as uint #t)) - ) - ) - ) - ) - (target-standard-event-handler proc argc message block) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self water flags) (water-flags wt04)) - (set! (-> self control unknown-surface00) *dive-mods*) - (set! (-> self control dynam gravity-max) 16384.0) - (set! (-> self control dynam gravity-length) 16384.0) - (set-time! (-> self water swim-time)) - (set! (-> self control unknown-uint20) (the-as uint #f)) - (if (= (-> self next-state name) 'target-swim-down) - (set! (-> self control unknown-float130) 0.0) - ) - ) - :exit (behavior () - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (target-exit) - (when (not (or (= (-> self next-state name) 'target-swim-stance) - (= (-> self next-state name) 'target-swim-walk) - (= (-> self next-state name) 'target-swim-down) - (= (-> self next-state name) 'target-swim-up) - ) - ) - (quaternion-identity! (-> self control unknown-quaternion01)) - (set! (-> self control unknown-float00) 0.0) - ) - ) - :trans (behavior () - (if (time-elapsed? (-> self water swim-time) (seconds 0.5)) - (go target-stance) - ) - (cond - ((time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) - (set! (-> self control unknown-surface00) *dive-mods*) - (if (= (-> self next-state name) 'target-swim-down) - (target-swim-tilt (the-as float -0.9) (the-as float 1.0) (the-as float 0.0) (the-as float 0.5)) - ) - ) - (else - (set! (-> self control unknown-surface00) *dive-bottom-mods*) - (if (or (= (-> self next-state name) 'target-swim-down) (= (-> self next-state name) 'target-swim-stance)) - (target-swim-tilt (the-as float 0.0) (the-as float 2.0) (the-as float -1.0) (the-as float 1.0)) - ) - ) - ) - ) - :code (behavior () - (let ((gp-0 60) - (s5-0 3000) - (f30-0 0.0) - ) - (let ((v1-2 (ja-group))) - (set! f30-0 - (cond - ((or (= v1-2 eichar-swim-stance-ja) - (= v1-2 eichar-swim-walk-ja) - (= v1-2 eichar-swim-up-to-stance-ja) - (= v1-2 eichar-swim-up-ja) - (= v1-2 eichar-swim-down-to-up-ja) - ) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! eichar-swim-walk-to-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (align! - (-> self align) - (align-opts adjust-y-vel adjust-xz-vel) - (the-as float 1.0) - (the-as float 1.0) - (the-as float 1.0) - ) - (if (= (ja-aframe-num 0) 73.0) - (create-splash (-> self water) (the-as float 0.7) (-> self control trans) 1 *null-vector*) - ) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! eichar-swim-down-ja :num! min) - f30-0 - ) - (else - (case (ja-group) - ((eichar-flop-down-ja eichar-moving-flop-down-ja eichar-flop-down-loop-ja eichar-moving-flop-down-loop-ja) - (ja-channel-push! 1 (seconds 0.075)) - (set! gp-0 120) - (ja :group! eichar-swim-down-ja :num! (identity (ja-aframe (the-as float 124.0) 0))) - -16384.0 - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack 'attack-invinc) + (let ((v1-2 (the-as attack-info (-> block param 1)))) + (when (or (not (logtest? (-> v1-2 mask) (attack-mask mode))) (= (-> v1-2 mode) 'generic) (= (-> v1-2 mode) 'drown)) + (set! (-> v1-2 mode) 'damage) + (if (and (= (-> self game mode) 'play) (>= 1.0 (-> self fact health))) (set! (-> v1-2 mode) 'drown-death)) + (logior! (-> v1-2 mask) (attack-mask mode)) + (set! (-> self control unknown-uint20) (the-as uint #t)))))) + (target-standard-event-handler proc argc message block)) + :enter + (behavior () + (set-time! (-> self state-time)) + (logclear! (-> self water flags) (water-flags wt04)) + (set! (-> self control unknown-surface00) *dive-mods*) + (set! (-> self control dynam gravity-max) 16384.0) + (set! (-> self control dynam gravity-length) 16384.0) + (set-time! (-> self water swim-time)) + (set! (-> self control unknown-uint20) (the-as uint #f)) + (if (= (-> self next-state name) 'target-swim-down) (set! (-> self control unknown-float130) 0.0))) + :exit + (behavior () + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (target-exit) + (when (not (or (= (-> self next-state name) 'target-swim-stance) + (= (-> self next-state name) 'target-swim-walk) + (= (-> self next-state name) 'target-swim-down) + (= (-> self next-state name) 'target-swim-up))) + (quaternion-identity! (-> self control unknown-quaternion01)) + (set! (-> self control unknown-float00) 0.0))) + :trans + (behavior () + (if (time-elapsed? (-> self water swim-time) (seconds 0.5)) (go target-stance)) + (cond + ((time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) + (set! (-> self control unknown-surface00) *dive-mods*) + (if (= (-> self next-state name) 'target-swim-down) + (target-swim-tilt (the-as float -0.9) (the-as float 1.0) (the-as float 0.0) (the-as float 0.5)))) + (else + (set! (-> self control unknown-surface00) *dive-bottom-mods*) + (if (or (= (-> self next-state name) 'target-swim-down) (= (-> self next-state name) 'target-swim-stance)) + (target-swim-tilt (the-as float 0.0) (the-as float 2.0) (the-as float -1.0) (the-as float 1.0)))))) + :code + (behavior () + (let ((gp-0 60) + (s5-0 3000) + (f30-0 0.0)) + (let ((v1-2 (ja-group))) + (set! f30-0 + (cond + ((or (= v1-2 eichar-swim-stance-ja) + (= v1-2 eichar-swim-walk-ja) + (= v1-2 eichar-swim-up-to-stance-ja) + (= v1-2 eichar-swim-up-ja) + (= v1-2 eichar-swim-down-to-up-ja)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! eichar-swim-walk-to-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-y-vel adjust-xz-vel) + (the-as float 1.0) + (the-as float 1.0) + (the-as float 1.0)) + (if (= (ja-aframe-num 0) 73.0) (create-splash (-> self water) (the-as float 0.7) (-> self control trans) 1 *null-vector*)) + (suspend) + (ja :num! (seek!))) + (ja :group! eichar-swim-down-ja :num! min) + f30-0) + (else + (case (ja-group) + ((eichar-flop-down-ja eichar-moving-flop-down-ja eichar-flop-down-loop-ja eichar-moving-flop-down-loop-ja) (ja-channel-push! 1 (seconds 0.075)) - (ja :group! eichar-swim-down-ja :num! min) - f30-0 - ) - ) - ) - ) - ) - ) - (loop - (if (and (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) square)) - (-> self control unknown-spoolanim00) - ) - (time-elapsed? (-> self state-time) gp-0) - ) - (go target-swim-up) - ) - (if (or (time-elapsed? (-> self state-time) s5-0) - (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (and (< (-> self water swim-depth) 8192.0) (time-elapsed? (-> self state-time) gp-0)) - ) - ) - (go target-swim-up) - ) - (let ((s4-3 (new-stack-vector0)) - (f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - 0.0 - (vector-! s4-3 (-> self control transv) (vector-float*! s4-3 (-> self control dynam gravity-normal) f24-0)) - (let* ((f28-0 (vector-length s4-3)) - (f26-0 f28-0) - (f24-1 (+ f24-0 f30-0)) - ) - (set! f30-0 (seek f30-0 (the-as float 0.0) (* 32768.0 (seconds-per-frame)))) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f24-1) - (vector-float*! s4-3 s4-3 (/ f28-0 f26-0)) - ) - ) - ) - (suspend) - (ja :num! (loop! (lerp-scale - (the-as float 0.4) - (the-as float 1.0) - (vector-length (-> self control transv)) - (the-as float 0.0) - (the-as float 16384.0) - ) - ) - ) - ) - ) - ) - :post target-swim-post - ) + (set! gp-0 120) + (ja :group! eichar-swim-down-ja :num! (identity (ja-aframe (the-as float 124.0) 0))) + -16384.0) + (else (ja-channel-push! 1 (seconds 0.075)) (ja :group! eichar-swim-down-ja :num! min) f30-0)))))) + (loop + (if (and (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) square)) (-> self control unknown-spoolanim00)) + (time-elapsed? (-> self state-time) gp-0)) + (go target-swim-up)) + (if (or (time-elapsed? (-> self state-time) s5-0) + (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (and (< (-> self water swim-depth) 8192.0) (time-elapsed? (-> self state-time) gp-0)))) + (go target-swim-up)) + (let ((s4-3 (new-stack-vector0)) + (f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! s4-3 (-> self control transv) (vector-float*! s4-3 (-> self control dynam gravity-normal) f24-0)) + (let* ((f28-0 (vector-length s4-3)) + (f26-0 f28-0) + (f24-1 (+ f24-0 f30-0))) + (set! f30-0 (seek f30-0 (the-as float 0.0) (* 32768.0 (seconds-per-frame)))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f24-1) + (vector-float*! s4-3 s4-3 (/ f28-0 f26-0))))) + (suspend) + (ja :num! + (loop! (lerp-scale (the-as float 0.4) + (the-as float 1.0) + (vector-length (-> self control transv)) + (the-as float 0.0) + (the-as float 16384.0))))))) + :post target-swim-post) (defstate target-swim-up (target) - :event (-> target-swim-down event) - :enter (-> target-swim-down enter) - :exit (-> target-swim-down exit) - :trans (behavior () - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) - (not (logtest? (-> self state-flags) (state-flags prevent-jump))) - (not (logtest? (-> self water flags) (water-flags wt13 wt14))) - ) - (go - target-swim-jump-jump - (-> *TARGET-bank* swim-jump-height-min) - (-> *TARGET-bank* swim-jump-height-max) - (the-as surface #f) - ) - ) - (if (and (time-elapsed? (-> self state-time) (seconds 10)) - (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) - ) - (send-event self 'attack #f (static-attack-info ((mode 'drown-death)))) - ) - ((-> target-swim-down trans)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (let ((f30-0 1.0)) - (let ((gp-0 #t)) - (ja-no-eval :group! eichar-swim-down-to-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (target-swim-tilt - (the-as float (if (< 8192.0 (-> self water swim-depth)) - 0.5 - 0.0 - ) - ) - (the-as float 1.0) - (the-as float 0.0) - (the-as float 0.1) - ) - (if (and (not (logtest? (-> self water flags) (water-flags wt12))) - (or (>= (ja-aframe-num 0) 222.0) - (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (>= (ja-aframe-num 0) 200.0) - ) - ) - ) - (goto cfg-37) - ) + :event + (-> target-swim-down + event) + :enter + (-> target-swim-down + enter) + :exit + (-> target-swim-down + exit) + :trans + (behavior () + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (not (logtest? (-> self state-flags) (state-flags prevent-jump))) + (not (logtest? (-> self water flags) (water-flags wt13 wt14)))) + (go target-swim-jump-jump + (-> *TARGET-bank* swim-jump-height-min) + (-> *TARGET-bank* swim-jump-height-max) + (the-as surface #f))) + (if (and (time-elapsed? (-> self state-time) (seconds 10)) + (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance))) + (send-event self 'attack #f (static-attack-info ((mode 'drown-death))))) + ((-> target-swim-down trans))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (let ((f30-0 1.0)) + (let ((gp-0 #t)) + (ja-no-eval :group! eichar-swim-down-to-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (target-swim-tilt (the-as float (if (< 8192.0 (-> self water swim-depth)) 0.5 0.0)) + (the-as float 1.0) + (the-as float 0.0) + (the-as float 0.1)) + (if (and (not (logtest? (-> self water flags) (water-flags wt12))) + (or (>= (ja-aframe-num 0) 222.0) + (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (>= (ja-aframe-num 0) 200.0)))) + (goto cfg-37)) + (compute-alignment! (-> self align)) + (when (not (logtest? (-> self water flags) (water-flags wt12))) + (logior! (-> self water flags) (water-flags wt04)) + (set! gp-0 #f)) + (if gp-0 (align! (-> self align) (align-opts adjust-y-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0))) + (suspend) + (ja :num! (seek!)))) + (ja :group! eichar-swim-up-ja :num! min) + (loop + (target-swim-tilt (the-as float (if (< 8192.0 (-> self water swim-depth)) 0.3 0.0)) + (the-as float 1.0) + (the-as float 0.0) + (the-as float 0.1)) + (if (not (logtest? (-> self water flags) (water-flags wt12))) (goto cfg-37)) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) x) (set! f30-0 2.0)) (compute-alignment! (-> self align)) - (when (not (logtest? (-> self water flags) (water-flags wt12))) - (logior! (-> self water flags) (water-flags wt04)) - (set! gp-0 #f) - ) - (if gp-0 - (align! (-> self align) (align-opts adjust-y-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) - ) + (when (logtest? (-> self water flags) (water-flags wt12)) + (align! (-> self align) (align-opts adjust-y-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) + (set! (-> self control transv y) (+ 8192.0 (* 8192.0 f30-0)))) (suspend) - (ja :num! (seek!)) - ) - ) - (ja :group! eichar-swim-up-ja :num! min) - (loop - (target-swim-tilt - (the-as float (if (< 8192.0 (-> self water swim-depth)) - 0.3 - 0.0 - ) - ) - (the-as float 1.0) - (the-as float 0.0) - (the-as float 0.1) - ) - (if (not (logtest? (-> self water flags) (water-flags wt12))) - (goto cfg-37) - ) - (if (cpad-pressed? (-> self control unknown-cpad-info00 number) x) - (set! f30-0 2.0) - ) - (compute-alignment! (-> self align)) - (when (logtest? (-> self water flags) (water-flags wt12)) - (align! (-> self align) (align-opts adjust-y-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) - (set! (-> self control transv y) (+ 8192.0 (* 8192.0 f30-0))) - ) - (suspend) - (ja :num! (loop! f30-0)) - (set! f30-0 (seek f30-0 (the-as float 1.0) (seconds-per-frame))) - ) - ) - (label cfg-37) - (logior! (-> self water flags) (water-flags wt04)) - (set-time! (-> self water swim-time)) - (start-bobbing! (-> self water) (the-as float -4096.0) 600 1500) - (set! (-> self water bob start-time) (+ (current-time) (seconds -0.05))) - (go target-swim-stance) - ) - :post target-swim-post - ) + (ja :num! (loop! f30-0)) + (set! f30-0 (seek f30-0 (the-as float 1.0) (seconds-per-frame))))) + (label cfg-37) + (logior! (-> self water flags) (water-flags wt04)) + (set-time! (-> self water swim-time)) + (start-bobbing! (-> self water) (the-as float -4096.0) 600 1500) + (set! (-> self water bob start-time) (+ (current-time) (seconds -0.05))) + (go target-swim-stance)) + :post target-swim-post) (defstate target-swim-jump-jump (target) - :event (-> target-jump event) - :enter (-> target-jump enter) + :event + (-> target-jump + event) + :enter + (-> target-jump + enter) :exit target-exit - :trans (behavior () - (cond - ((not (time-elapsed? (-> self state-time) (seconds 0.5))) - (logior! (-> self water flags) (water-flags wt16)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - ) - (else - (set! (-> self trans-hook) (-> target-jump trans)) - ) - ) - ((-> target-jump trans)) - ) - :code (-> target-jump code) - :post target-post - ) + :trans + (behavior () + (cond + ((not (time-elapsed? (-> self state-time) (seconds 0.5))) + (logior! (-> self water flags) (water-flags wt16)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf))) + (else (set! (-> self trans-hook) (-> target-jump trans)))) + ((-> target-jump trans))) + :code + (-> target-jump + code) + :post target-post) (defstate target-swim-jump (target) :event target-standard-event-handler - :enter (-> target-swim-stance enter) - :exit (behavior () - ((-> target-swim-stance exit)) - (die-on-next-update! (-> self water bob)) - (set! (-> self water align-offset) 0.0) - (logior! (-> self water flags) (water-flags wt16)) - ) - :code (behavior ((arg0 float) (arg1 float)) - (die-on-next-update! (-> self water bob)) - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! eichar-swim-jump-ja :num! min) - (until (and (ja-done? 0) (= (-> self skel root-channel 0) (-> self skel channel))) - (compute-alignment! (-> self align)) - (if (not (logtest? (-> self align flags) (align-flags disabled))) - (+! (-> self water align-offset) (* 0.6 (-> self align delta trans y))) - ) - (suspend) - (if (= (-> self skel root-channel 0) (-> self skel channel)) - (ja :num! (seek! max 2.0)) - ) - ) - (let ((f30-0 (fmax 0.0 (- (-> self water bob-offset))))) - (let ((s4-1 (new-stack-vector0))) - (let ((f0-8 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! s4-1 (-> self control transv) (vector-float*! s4-1 (-> self control dynam gravity-normal) f0-8)) - ) - (let* ((f0-9 (vector-length s4-1)) - (f1-5 f0-9) - (f2-1 0.4096) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) - (vector-float*! s4-1 s4-1 (/ f0-9 f1-5)) - ) - ) - ) - (go target-swim-jump-jump (+ f30-0 arg0) (+ f30-0 arg1) (the-as surface #f)) - ) - ) - :post target-swim-post - ) + :enter + (-> target-swim-stance + enter) + :exit + (behavior () + ((-> target-swim-stance exit)) + (die-on-next-update! (-> self water bob)) + (set! (-> self water align-offset) 0.0) + (logior! (-> self water flags) (water-flags wt16))) + :code + (behavior ((arg0 float) (arg1 float)) + (die-on-next-update! (-> self water bob)) + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! eichar-swim-jump-ja :num! min) + (until (and (ja-done? 0) (= (-> self skel root-channel 0) (-> self skel channel))) + (compute-alignment! (-> self align)) + (if (not (logtest? (-> self align flags) (align-flags disabled))) + (+! (-> self water align-offset) (* 0.6 (-> self align delta trans y)))) + (suspend) + (if (= (-> self skel root-channel 0) (-> self skel channel)) (ja :num! (seek! max 2.0)))) + (let ((f30-0 (fmax 0.0 (- (-> self water bob-offset))))) + (let ((s4-1 (new-stack-vector0))) + (let ((f0-8 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! s4-1 (-> self control transv) (vector-float*! s4-1 (-> self control dynam gravity-normal) f0-8))) + (let* ((f0-9 (vector-length s4-1)) + (f1-5 f0-9) + (f2-1 0.4096)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) + (vector-float*! s4-1 s4-1 (/ f0-9 f1-5))))) + (go target-swim-jump-jump (+ f30-0 arg0) (+ f30-0 arg1) (the-as surface #f)))) + :post target-swim-post) (defstate target-hit-ground-hard (target) :event target-standard-event-handler - :enter (behavior ((arg0 float)) - (set! (-> self control unknown-dword31) 0) - (set! (-> self control unknown-dword33) 0) - (set-forward-vel (the-as float 0.0)) - (set! (-> self control unknown-surface00) *walk-mods*) - ) - :code (behavior ((arg0 float)) - (when (!= arg0 0.0) - (let ((f0-5 (the float (the int (+ 1.0 (/ (- arg0 (-> *TARGET-bank* fall-far)) (-> *TARGET-bank* fall-far-inc)))))) - ) - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (* (-> *FACT-bank* health-single-inc) (- (fmax 0.0 f0-5))) - (the-as handle #f) - ) - ) - (if (not (cpad-hold? 0 l3)) - (target-timed-invulnerable (-> *TARGET-bank* hit-invulnerable-timeout) self) - ) - ) - (cond - ((and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) - (set! (-> self attack-info attacker) (the-as handle #f)) - (go target-death 'target-hit-ground-hard) - ) - (else - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.1)) - (ja-channel-push! 1 1) - (ja :group! eichar-painful-land-ja :num! min) - (until (and (ja-done? 0) (= (-> self skel root-channel 0) (-> self skel channel))) - (suspend) - (if (= (-> self skel root-channel 0) (-> self skel channel)) - (ja :num! (seek!)) - ) - ) - (ja :group! eichar-painful-land-end-ja :num! min) - (until (and (ja-done? 0) (= (-> self skel root-channel 0) (-> self skel channel))) - (suspend) - (if (= (-> self skel root-channel 0) (-> self skel channel)) - (ja :num! (seek!)) - ) - ) - (go target-stance) - ) - ) - ) - :post target-no-stick-post - ) + :enter + (behavior ((arg0 float)) + (set! (-> self control unknown-dword31) 0) + (set! (-> self control unknown-dword33) 0) + (set-forward-vel (the-as float 0.0)) + (set! (-> self control unknown-surface00) *walk-mods*)) + :code + (behavior ((arg0 float)) + (when (!= arg0 0.0) + (let ((f0-5 (the float (the int (+ 1.0 (/ (- arg0 (-> *TARGET-bank* fall-far)) (-> *TARGET-bank* fall-far-inc))))))) + (pickup-collectable! (-> self fact) + (pickup-type eco-green) + (* (-> *FACT-bank* health-single-inc) (- (fmax 0.0 f0-5))) + (the-as handle #f))) + (if (not (cpad-hold? 0 l3)) (target-timed-invulnerable (-> *TARGET-bank* hit-invulnerable-timeout) self))) + (cond + ((and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) + (set! (-> self attack-info attacker) (the-as handle #f)) + (go target-death 'target-hit-ground-hard)) + (else + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.1)) + (ja-channel-push! 1 1) + (ja :group! eichar-painful-land-ja :num! min) + (until (and (ja-done? 0) (= (-> self skel root-channel 0) (-> self skel channel))) + (suspend) + (if (= (-> self skel root-channel 0) (-> self skel channel)) (ja :num! (seek!)))) + (ja :group! eichar-painful-land-end-ja :num! min) + (until (and (ja-done? 0) (= (-> self skel root-channel 0) (-> self skel channel))) + (suspend) + (if (= (-> self skel root-channel 0) (-> self skel channel)) (ja :num! (seek!)))) + (go target-stance)))) + :post target-no-stick-post) (defstate target-launch (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (= message 'query) (= (-> block param 0) 'mode)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (= message 'query) (= (-> block param 0) 'mode)) 'target-launch - (target-standard-event-handler proc argc message block) - ) - ) - :code (behavior ((arg0 float) (arg1 symbol) (arg2 vector) (arg3 int)) - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *turn-around-mods*) - (ja-channel-push! 1 (seconds 0.15)) - (set-forward-vel (the-as float 0.0)) - (ja-no-eval :group! eichar-duck-stance-ja :num! (seek! (ja-aframe (the-as float 15.0) 0) 3.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 15.0) 0) 3.0)) - ) - (if arg1 - (send-event *camera* 'change-state arg1 (seconds 0.6)) - ) - (if (nonzero? arg3) - (process-spawn-function - process - (lambda :behavior process - ((arg0 vector) (arg1 time-frame) (arg2 float)) + (target-standard-event-handler proc argc message block))) + :code + (behavior ((arg0 float) (arg1 symbol) (arg2 vector) (arg3 int)) + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *turn-around-mods*) + (ja-channel-push! 1 (seconds 0.15)) + (set-forward-vel (the-as float 0.0)) + (ja-no-eval :group! eichar-duck-stance-ja :num! (seek! (ja-aframe (the-as float 15.0) 0) 3.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 15.0) 0) 3.0))) + (if arg1 (send-event *camera* 'change-state arg1 (seconds 0.6))) + (if (nonzero? arg3) + (process-spawn-function process + (lambda :behavior process ((arg0 vector) (arg1 time-frame) (arg2 float)) (local-vars (sv-32 time-frame) (sv-40 vector) (sv-44 symbol)) (set! sv-32 (current-time)) - (let ((v1-2 (new-stack-vector0))) - (set! (-> v1-2 quad) (-> arg0 quad)) - (set! sv-40 v1-2) - ) + (let ((v1-2 (new-stack-vector0))) (set! (-> v1-2 quad) (-> arg0 quad)) (set! sv-40 v1-2)) (set! sv-44 #t) (until (time-elapsed? sv-32 arg1) (let ((s4-0 (ppointer->process (-> self parent)))) (cond - ((and sv-44 - (< (- (-> (the-as target s4-0) control trans y) (-> (the-as target s4-0) control unknown-vector52 y)) arg2) - ) + ((and sv-44 (< (- (-> (the-as target s4-0) control trans y) (-> (the-as target s4-0) control unknown-vector52 y)) arg2)) (vector-xz-normalize! (-> (the-as target s4-0) control transv) (the-as float 0.0)) ;; og:preserve-this PAL patch here (when (< (vector-vector-xz-distance (-> (the-as target s4-0) control trans) sv-40) 20480.0) (let ((v1-16 (vector-! (new-stack-vector0) (-> (the-as target s4-0) control trans) sv-40))) (set! (-> (the-as target s4-0) control trans x) (+ (-> sv-40 x) (fmax -2867.2 (fmin 2867.2 (-> v1-16 x))))) - (set! (-> (the-as target s4-0) control trans z) (+ (-> sv-40 z) (fmax -2867.2 (fmin 2867.2 (-> v1-16 z))))) - ) - ) - ) + (set! (-> (the-as target s4-0) control trans z) (+ (-> sv-40 z) (fmax -2867.2 (fmin 2867.2 (-> v1-16 z)))))))) (else - (if sv-44 - (set! sv-32 (current-time)) - ) - (set! sv-44 (the-as symbol #f)) - (when (or (= (-> (the-as target s4-0) next-state name) 'target-duck-high-jump-jump) - (= (-> (the-as target s4-0) next-state name) 'target-falling) - ) - (let ((v1-30 (-> (the-as target s4-0) control trans)) - (s3-0 (-> (the-as target s4-0) control transv)) - ) - (set! (-> s3-0 x) (- (-> sv-40 x) (-> v1-30 x))) - (set! (-> s3-0 z) (- (-> sv-40 z) (-> v1-30 z))) - (let ((f30-0 (vector-xz-length s3-0))) - (if (< 122880.0 f30-0) - (vector-xz-normalize! s3-0 (the-as float 122880.0)) - ) - (if (< 4096.0 f30-0) - (forward-up-nopitch->quaternion - (-> (the-as target s4-0) control dir-targ) - (vector-normalize-copy! (new 'stack-no-clear 'vector) s3-0 (the-as float 1.0)) - (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> (the-as target s4-0) control quat)) - ) - ) - ) - ) - ) - ) - ) - ) + (if sv-44 (set! sv-32 (current-time))) + (set! sv-44 (the-as symbol #f)) + (when (or (= (-> (the-as target s4-0) next-state name) 'target-duck-high-jump-jump) + (= (-> (the-as target s4-0) next-state name) 'target-falling)) + (let ((v1-30 (-> (the-as target s4-0) control trans)) + (s3-0 (-> (the-as target s4-0) control transv))) + (set! (-> s3-0 x) (- (-> sv-40 x) (-> v1-30 x))) + (set! (-> s3-0 z) (- (-> sv-40 z) (-> v1-30 z))) + (let ((f30-0 (vector-xz-length s3-0))) + (if (< 122880.0 f30-0) (vector-xz-normalize! s3-0 (the-as float 122880.0))) + (if (< 4096.0 f30-0) + (forward-up-nopitch->quaternion (-> (the-as target s4-0) control dir-targ) + (vector-normalize-copy! (new 'stack-no-clear 'vector) s3-0 (the-as float 1.0)) + (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> (the-as target s4-0) control quat)))))))))) (suspend) - 0 - ) - #f - ) + 0) + #f) arg2 arg3 143360.0 - :to self - ) - ) - ;; PAL patch (sound plays elsewhere) - ;(sound-play "launch-fire") - (go target-high-jump arg0 arg0 'launch) - ) - :post target-no-stick-post - ) + :to + self)) + ;; PAL patch (sound plays elsewhere) + ;(sound-play "launch-fire") + (go target-high-jump arg0 arg0 'launch)) + :post target-no-stick-post) (defstate target-periscope (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('change-mode) - #f - ) - (('end-mode) - (when (-> self control unknown-spoolanim00) - (set! (-> self control unknown-uint20) (the-as uint #f)) - #t - ) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :exit (behavior () - (target-exit) - (set! (-> self cam-user-mode) 'normal) - ;; og:preserve-this PAL patch here - (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) - ) - :code (behavior ((arg0 handle)) - (set! (-> self neck flex-blend) 0.0) - (target-exit) - (logior! (-> self state-flags) (state-flags invulnerable do-not-notice)) - (let ((v1-4 (handle->process arg0))) - (if v1-4 - (quaterion<-rotate-y-vector (-> self control dir-targ) (vector-! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable v1-4) root trans) - (-> self control trans) - ) - ) - ) - ) - (set! (-> self control unknown-uint20) (the-as uint #t)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! eichar-periscope-grab-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (handle->process arg0) 'change-mode) - (while (-> self control unknown-spoolanim00) - (suspend) - ) - (ja-no-eval :group! eichar-periscope-grab-ja :num! (seek! 0.0 2.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0 2.0)) - ) - (go target-stance) - ) - :post target-no-stick-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('change-mode) #f) + (('end-mode) (when (-> self control unknown-spoolanim00) (set! (-> self control unknown-uint20) (the-as uint #f)) #t)) + (else (target-generic-event-handler proc argc message block)))) + :exit + (behavior () + (target-exit) + (set! (-> self cam-user-mode) 'normal) + ;; og:preserve-this PAL patch here + (logclear! (-> self state-flags) (state-flags invulnerable grabbed))) + :code + (behavior ((arg0 handle)) + (set! (-> self neck flex-blend) 0.0) + (target-exit) + (logior! (-> self state-flags) (state-flags invulnerable do-not-notice)) + (let ((v1-4 (handle->process arg0))) + (if v1-4 + (quaterion<-rotate-y-vector (-> self control dir-targ) + (vector-! (new 'stack-no-clear 'vector) (-> (the-as process-drawable v1-4) root trans) (-> self control trans))))) + (set! (-> self control unknown-uint20) (the-as uint #t)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! eichar-periscope-grab-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (handle->process arg0) 'change-mode) + (while (-> self control unknown-spoolanim00) + (suspend)) + (ja-no-eval :group! eichar-periscope-grab-ja :num! (seek! 0.0 2.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0 2.0))) + (go target-stance)) + :post target-no-stick-post) (defstate target-play-anim (target) :event target-generic-event-handler - :enter (behavior ((arg0 string) (arg1 handle)) - (set! (-> self control unknown-handle10) arg1) - (move-to-ground - (-> self control) - (the-as float 40960.0) - (the-as float 40960.0) - #f - (-> self control root-prim collide-with) - ) - (logior! (-> self state-flags) (state-flags grabbed)) - (set! (-> self neck flex-blend) 0.0) - ) - :exit (behavior () - (send-event (handle->process (-> self control unknown-handle10)) 'end-mode) - (target-exit) - ) - :code (behavior ((arg0 string) (arg1 handle)) - (let ((gp-0 (the-as art-joint-anim (lookup-art (-> self draw art-group) arg0 art-joint-anim)))) - (when gp-0 - (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) - (ja-channel-set! 1) - (ja-no-eval :group! gp-0 :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (ppointer->process (-> self sidekick)) 'matrix 'normal) - ) - ) - (go target-stance) - ) - :post target-no-stick-post - ) + :enter + (behavior ((arg0 string) (arg1 handle)) + (set! (-> self control unknown-handle10) arg1) + (move-to-ground (-> self control) + (the-as float 40960.0) + (the-as float 40960.0) + #f + (-> self control root-prim collide-with)) + (logior! (-> self state-flags) (state-flags grabbed)) + (set! (-> self neck flex-blend) 0.0)) + :exit + (behavior () + (send-event (handle->process (-> self control unknown-handle10)) 'end-mode) + (target-exit)) + :code + (behavior ((arg0 string) (arg1 handle)) + (let ((gp-0 (the-as art-joint-anim (lookup-art (-> self draw art-group) arg0 art-joint-anim)))) + (when gp-0 + (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) + (ja-channel-set! 1) + (ja-no-eval :group! gp-0 :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (ppointer->process (-> self sidekick)) 'matrix 'normal))) + (go target-stance)) + :post target-no-stick-post) (defstate target-clone-anim (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (= message 'trans) (= (-> block param 0) 'restore)) - (set! (-> self control unknown-uint20) (the-as uint #f)) - ) - ((-> target-grab event) proc argc message block) - ) - :enter (behavior ((arg0 handle)) - (set! (-> self control unknown-handle10) arg0) - (set! (-> self control unknown-vector102 quad) (-> self control trans quad)) - (set! (-> self control unknown-uint20) (the-as uint #t)) - (quaternion-copy! (the-as quaternion (-> self control unknown-vector103)) (-> self control quat)) - (logior! (-> self state-flags) (state-flags grabbed)) - (vector-reset! (-> self control transv)) - (set! (-> self neck flex-blend) 0.0) - (send-event (ppointer->process (-> self sidekick)) 'shadow #t) - ) - :exit (behavior () - (send-event (ppointer->process (-> self sidekick)) 'matrix 'normal) - (send-event (ppointer->process (-> self sidekick)) 'shadow #t) - (let ((gp-0 (joint-node eichar-lod0-jg main)) - (a1-2 (&-> (-> self control) unknown-qword00)) - ) - (cond - ((not (-> self control unknown-spoolanim00)) - ) - ((not (logtest? (-> self draw status) (draw-status hidden))) - (move-to-point! (-> 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)) - (move-to-ground - (-> self control) - (the-as float 4096.0) - (the-as float 40960.0) - #t - (-> self control root-prim collide-with) - ) - (when (logtest? (-> self control status) (cshape-moving-flags on-water)) - (let ((a1-6 (new-stack-vector0))) - (set! (-> a1-6 x) (-> self control trans x)) - (set! (-> a1-6 y) (-> self water height)) - (set! (-> a1-6 z) (-> self control trans z)) - (set! (-> a1-6 w) 1.0) - (move-to-point! (-> self control) a1-6) - ) - ) - ) - (else - (format 0 "ERROR: : camera used backup position~%") - (move-to-point! (-> self control) (-> self control unknown-vector102)) - (quaternion-copy! (-> self control quat) (the-as quaternion (-> self control unknown-vector103))) - ) - ) - ) - (rot->dir-targ! (-> self control)) - (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set-time! (-> self control unknown-dword11)) - (ja-channel-set! 0) - (ja-post) - (target-exit) - ) - :code (behavior ((arg0 handle)) - (clone-anim arg0 (the-as int (-> self draw origin-joint-index)) #t "") - (go target-stance) - ) - :post target-no-ja-move-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (= message 'trans) (= (-> block param 0) 'restore)) (set! (-> self control unknown-uint20) (the-as uint #f))) + ((-> target-grab event) proc argc message block)) + :enter + (behavior ((arg0 handle)) + (set! (-> self control unknown-handle10) arg0) + (set! (-> self control unknown-vector102 quad) (-> self control trans quad)) + (set! (-> self control unknown-uint20) (the-as uint #t)) + (quaternion-copy! (the-as quaternion (-> self control unknown-vector103)) (-> self control quat)) + (logior! (-> self state-flags) (state-flags grabbed)) + (vector-reset! (-> self control transv)) + (set! (-> self neck flex-blend) 0.0) + (send-event (ppointer->process (-> self sidekick)) 'shadow #t)) + :exit + (behavior () + (send-event (ppointer->process (-> self sidekick)) 'matrix 'normal) + (send-event (ppointer->process (-> self sidekick)) 'shadow #t) + (let ((gp-0 (joint-node eichar-lod0-jg main)) + (a1-2 (&-> (-> self control) unknown-qword00))) + (cond + ((not (-> self control unknown-spoolanim00))) + ((not (logtest? (-> self draw status) (draw-status hidden))) + (move-to-point! (-> 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)) + (move-to-ground (-> self control) + (the-as float 4096.0) + (the-as float 40960.0) + #t + (-> self control root-prim collide-with)) + (when (logtest? (-> self control status) (cshape-moving-flags on-water)) + (let ((a1-6 (new-stack-vector0))) + (set! (-> a1-6 x) (-> self control trans x)) + (set! (-> a1-6 y) (-> self water height)) + (set! (-> a1-6 z) (-> self control trans z)) + (set! (-> a1-6 w) 1.0) + (move-to-point! (-> self control) a1-6)))) + (else + (format 0 "ERROR: : camera used backup position~%") + (move-to-point! (-> self control) (-> self control unknown-vector102)) + (quaternion-copy! (-> self control quat) (the-as quaternion (-> self control unknown-vector103)))))) + (rot->dir-targ! (-> self control)) + (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set-time! (-> self control unknown-dword11)) + (ja-channel-set! 0) + (ja-post) + (target-exit)) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 (the-as int (-> self draw origin-joint-index)) #t "") + (go target-stance)) + :post target-no-ja-move-post) diff --git a/goal_src/jak1/engine/ui/credits.gc b/goal_src/jak1/engine/ui/credits.gc index 66a21224b5..acebdc2c0d 100644 --- a/goal_src/jak1/engine/ui/credits.gc +++ b/goal_src/jak1/engine/ui/credits.gc @@ -1,40 +1,24 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ui/text.gc") -;; name: credits.gc -;; name in dgo: credits -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun set-credits-font-color ((arg0 float)) 255.0 (dotimes (v1-0 4) (let ((f0-2 (* 64.0 arg0))) - (if (< 128.0 f0-2) - (set! f0-2 128.0) - ) - (set! (-> *font-work* color-table 32 color v1-0 r) (the int f0-2)) - ) + (if (< 128.0 f0-2) (set! f0-2 128.0)) + (set! (-> *font-work* color-table 32 color v1-0 r) (the int f0-2))) (let ((f0-5 (* 64.0 arg0))) - (if (< 128.0 f0-5) - (set! f0-5 128.0) - ) - (set! (-> *font-work* color-table 32 color v1-0 g) (the int f0-5)) - ) + (if (< 128.0 f0-5) (set! f0-5 128.0)) + (set! (-> *font-work* color-table 32 color v1-0 g) (the int f0-5))) (let ((f0-8 (* 64.0 arg0))) - (if (< 128.0 f0-8) - (set! f0-8 128.0) - ) - (set! (-> *font-work* color-table 32 color v1-0 b) (the int f0-8)) - ) - ) + (if (< 128.0 f0-8) (set! f0-8 128.0)) + (set! (-> *font-work* color-table 32 color v1-0 b) (the int f0-8)))) 0 - (none) - ) + (none)) (define *title-credits-scale* (new 'static 'boxed-array :type float 0.9 0.9 0.6 0.6 1.0 0.9 1.1 0.9)) @@ -45,77 +29,39 @@ (let* ((s4-0 11) (f30-0 (* arg0 (the float (+ s4-0 -2)))) (s5-0 (the int f30-0)) - (gp-0 - (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) + (gp-0 (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning)))) 1.0 - (let ((v1-3 gp-0)) - (set! (-> v1-3 width) (the float 600)) - ) - (let ((v1-4 gp-0)) - (set! (-> v1-4 height) (the float 10)) - ) + (let ((v1-3 gp-0)) (set! (-> v1-3 width) (the float 600))) + (let ((v1-4 gp-0)) (set! (-> v1-4 height) (the float 10))) (set! (-> gp-0 flags) (font-flags kerning middle large)) (let* ((s5-1 (- s5-0 (mod s5-0 3))) - (f0-10 (- f30-0 (the float s5-1))) - ) + (f0-10 (- f30-0 (the float s5-1)))) (when (and (>= s5-1 0) (< s5-1 s4-0)) (let ((f30-1 (cond - ((< f0-10 0.8) - 0.0 - ) - ((< f0-10 1.6) - (* 160.0 (+ -0.8 f0-10)) - ) - ((< f0-10 2.2) - 128.0 - ) - (else - (* 128.0 (- 1.0 (* 1.25 (+ -2.2 f0-10)))) - ) - ) - ) - ) + ((< f0-10 0.8) 0.0) + ((< f0-10 1.6) (* 160.0 (+ -0.8 f0-10))) + ((< f0-10 2.2) 128.0) + (else (* 128.0 (- 1.0 (* 1.25 (+ -2.2 f0-10)))))))) (set! (-> gp-0 origin x) -44.0) (set! (-> gp-0 origin y) 90.0) (dotimes (s4-1 3) (let* ((s2-0 (+ s4-1 3840 s5-1)) - (s3-0 (lookup-text! *common-text* (the-as text-id s2-0) #t)) - ) + (s3-0 (lookup-text! *common-text* (the-as text-id s2-0) #t))) (when (= s2-0 3841) (case (scf-get-territory) - ((GAME_TERRITORY_SCEE) - (set! s3-0 (lookup-text! *common-text* (text-id europe) #t)) - ) - ((GAME_TERRITORY_SCEI) - (set! s3-0 (lookup-text! *common-text* (text-id inc) #t)) - ) - ) - ) + ((GAME_TERRITORY_SCEE) (set! s3-0 (lookup-text! *common-text* (text-id europe) #t))) + ((GAME_TERRITORY_SCEI) (set! s3-0 (lookup-text! *common-text* (text-id inc) #t))))) (when s3-0 - (let ((v1-25 gp-0)) - (set! (-> v1-25 scale) (-> *title-credits-scale* (+ s5-1 s4-1))) - ) - (print-game-text s3-0 gp-0 #f (the int f30-1) 22) - ) - ) - (+! (-> gp-0 origin y) (the float (-> *title-credits-spacing* (+ s5-1 s4-1)))) - ) - ) - ) - ) - ) - ) + (let ((v1-25 gp-0)) (set! (-> v1-25 scale) (-> *title-credits-scale* (+ s5-1 s4-1)))) + (print-game-text s3-0 gp-0 #f (the int f30-1) 22))) + (+! (-> gp-0 origin y) (the float (-> *title-credits-spacing* (+ s5-1 s4-1)))))))))) 0 - (none) - ) + (none)) (defun draw-end-credits ((arg0 int)) (local-vars (v1-13 int)) (#when PC_PORT ;; og:preserve-this change text language during credits - ;; disable the automatic text loading for now (disable-level-text-file-loading) (protect ((-> *pc-settings* text-language)) @@ -126,56 +72,28 @@ (gp-0 2815) (s3-0 0) (s2-0 #t) - (s5-0 - (new 'stack 'font-context *font-default-matrix* 31 0 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-2 s5-0)) - (set! (-> v1-2 width) (the float 450)) - ) - (let ((v1-3 s5-0)) - (set! (-> v1-3 height) (the float 10)) - ) - (let ((v1-4 s5-0)) - (set! (-> v1-4 scale) 1.0) - ) + (s5-0 (new 'stack 'font-context *font-default-matrix* 31 0 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-2 s5-0)) (set! (-> v1-2 width) (the float 450))) + (let ((v1-3 s5-0)) (set! (-> v1-3 height) (the float 10))) + (let ((v1-4 s5-0)) (set! (-> v1-4 scale) 1.0)) (set! (-> s5-0 flags) (font-flags shadow kerning middle large)) (while (or s2-0 (and (< s4-0 (- s3-0)) (< (the-as uint gp-0) (the-as uint 3262)))) (+! s4-0 s3-0) (+! gp-0 1) (let ((a0-8 (lookup-text! *common-text* (the-as text-id gp-0) #t))) - (if a0-8 - (set! s3-0 (the int (+ 5.0 (print-game-text a0-8 s5-0 #t 128 20)))) - (set! s3-0 25) - ) - ) - (set! s2-0 #f) - ) + (if a0-8 (set! s3-0 (the int (+ 5.0 (print-game-text a0-8 s5-0 #t 128 20)))) (set! s3-0 25))) + (set! s2-0 #f)) (cond ((>= (the-as uint gp-0) (the-as uint 3262)) (#when PC_PORT - ;; credits are over - re-enable automatic text loading - (enable-level-text-file-loading)) - #t - ) + ;; credits are over - re-enable automatic text loading + (enable-level-text-file-loading)) + #t) (else - (set! (-> s5-0 origin y) (the float s4-0)) - (while (< (-> s5-0 origin y) (the float (-> *video-parms* screen-sy))) - (let ((a0-11 (lookup-text! *common-text* (the-as text-id gp-0) #t))) - (if a0-11 - (set! v1-13 (the int (+ 5.0 (print-game-text a0-11 s5-0 #f 128 20)))) - (set! v1-13 25) - ) - ) - (+! (-> s5-0 origin y) (the float v1-13)) - (+! gp-0 1) - ) - #f - ) - ) - ) - ) - - - - + (set! (-> s5-0 origin y) (the float s4-0)) + (while (< (-> s5-0 origin y) (the float (-> *video-parms* screen-sy))) + (let ((a0-11 (lookup-text! *common-text* (the-as text-id gp-0) #t))) + (if a0-11 (set! v1-13 (the int (+ 5.0 (print-game-text a0-11 s5-0 #f 128 20)))) (set! v1-13 25))) + (+! (-> s5-0 origin y) (the float v1-13)) + (+! gp-0 1)) + #f)))) diff --git a/goal_src/jak1/engine/ui/hud-classes.gc b/goal_src/jak1/engine/ui/hud-classes.gc index cd8f7fbf2b..b783102b61 100644 --- a/goal_src/jak1/engine/ui/hud-classes.gc +++ b/goal_src/jak1/engine/ui/hud-classes.gc @@ -1,12 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ui/hud.gc") -;; name: hud-classes.gc -;; name in dgo: hud-classes -;; dgos: GAME, ENGINE ;; note: changed for high fps ;; DECOMP BEGINS @@ -15,171 +11,144 @@ :id 75 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 303 :flags (launch-asap) :binding 304) - (sp-item 304 :flags (start-dead launch-asap) :binding 305) - (sp-item 305 :flags (start-dead launch-asap) :binding 306) - (sp-item 306 :flags (start-dead launch-asap) :binding 307) - (sp-item 306 :flags (start-dead launch-asap) :binding 307) - (sp-item 306 :flags (start-dead launch-asap) :binding 307) - (sp-item 306 :flags (start-dead launch-asap) :binding 307) - (sp-item 307 :fade-after (meters 40) :flags (start-dead)) - (sp-item 307 :fade-after (meters 40) :flags (start-dead)) - (sp-item 307 :fade-after (meters 40) :flags (start-dead)) - (sp-item 307 :fade-after (meters 40) :flags (start-dead)) - ) - ) + :parts + ((sp-item 303 :flags (launch-asap) :binding 304) + (sp-item 304 :flags (start-dead launch-asap) :binding 305) + (sp-item 305 :flags (start-dead launch-asap) :binding 306) + (sp-item 306 :flags (start-dead launch-asap) :binding 307) + (sp-item 306 :flags (start-dead launch-asap) :binding 307) + (sp-item 306 :flags (start-dead launch-asap) :binding 307) + (sp-item 306 :flags (start-dead launch-asap) :binding 307) + (sp-item 307 :fade-after (meters 40) :flags (start-dead)) + (sp-item 307 :fade-after (meters 40) :flags (start-dead)) + (sp-item 307 :fade-after (meters 40) :flags (start-dead)) + (sp-item 307 :fade-after (meters 40) :flags (start-dead)))) (defpart 303 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit3 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit3 bit9)))) (defpart 304 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.03)) - (:scale-x (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:a 24.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.026666667) (meters 0.026666667)) - (:vel-y (meters 0.0014814815)) - (:vel-z (meters 0)) - (:rotvel-z (degrees 0.2)) - (:timer (seconds -0.005)) - (:flags (bit7 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.03)) + (:scale-x (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:a 24.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.026666667) (meters 0.026666667)) + (:vel-y (meters 0.0014814815)) + (:vel-z (meters 0)) + (:rotvel-z (degrees 0.2)) + (:timer (seconds -0.005)) + (:flags (bit7 bit9)))) (defpart 305 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 3.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.065)) - (:scale-x (meters 1.5) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 92.0) - (:g 128.0 128.0) - (:a 24.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.017777778) (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.4) 1 (degrees 0.8)) - (:timer (seconds -0.005)) - (:flags (bit3 bit7 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 3.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.065)) + (:scale-x (meters 1.5) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 92.0) + (:g 128.0 128.0) + (:a 24.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.017777778) (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.4) 1 (degrees 0.8)) + (:timer (seconds -0.005)) + (:flags (bit3 bit7 bit9)))) (defpart 306 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.12)) - (:scale-x (meters 0.4)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 255.0) - (:a 24.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.053333335) (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit7 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.12)) + (:scale-x (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 255.0) + (:a 24.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.053333335) (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit7 bit9)))) (defpart 307 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:scale-x (meters 0.35)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 0.0) - (:a 96.0) - (:scalevel-x (meters -0.0012500001)) - (:scalevel-y :copy scalevel-x) - (:fade-r -2.125) - (:accel-y (meters -0.00002)) - (:timer (seconds 0.1) (seconds 0.797)) - (:flags (bit2 bit9)) - (:next-time (seconds 0.4)) - (:next-launcher 308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:scale-x (meters 0.35)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 0.0) + (:a 96.0) + (:scalevel-x (meters -0.0012500001)) + (:scalevel-y :copy scalevel-x) + (:fade-r -2.125) + (:accel-y (meters -0.00002)) + (:timer (seconds 0.1) (seconds 0.797)) + (:flags (bit2 bit9)) + (:next-time (seconds 0.4)) + (:next-launcher 308))) (defpart 308 - :init-specs ((:fade-r 0.0)) - ) - -(deftype hud-pickups (hud) - () - ) + :init-specs ((:fade-r 0.0))) +(deftype hud-pickups (hud) ()) (defmethod draw-hud ((this hud-pickups)) - (let ((t9-0 (method-of-type hud draw-hud))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type hud draw-hud))) (t9-0 this)) (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-0 (-> s5-0 base)) - ) + (gp-0 (-> s5-0 base))) (let ((s4-0 draw-string-xy)) (format (clear *temp-string*) "~D" (-> this value)) - (s4-0 - *temp-string* - s5-0 - (+ (-> this text-x) (* (-> this x-sgn) (-> this offset))) - (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) - (the int (-> *video-parms* relative-y-scale)) - ) - 2 - ) - (font-color green) - (font-flags shadow kerning large) - ) - ) + (s4-0 *temp-string* + s5-0 + (+ (-> this text-x) (* (-> this x-sgn) (-> this offset))) + (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) + (the int (-> *video-parms* relative-y-scale))) + 2) + (font-color green) + (font-flags shadow kerning large))) (let ((a3-7 (-> s5-0 base))) (let ((v1-8 (the-as object (-> s5-0 base)))) (set! (-> (the-as (pointer int64) v1-8)) #x20000000) (set! (-> (the-as dma-packet v1-8) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-8) vif1) (new 'static 'vif-tag)) - (set! (-> s5-0 base) (&+ (the-as pointer v1-8) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-0 - (the-as (pointer dma-tag) a3-7) - ) - ) - ) + (set! (-> s5-0 base) (&+ (the-as pointer v1-8) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-0 + (the-as (pointer dma-tag) a3-7)))) 0 - (none) - ) + (none)) (defmethod hud-update ((this hud-pickups)) - (if *target* - (tally-value this (the int (+ 0.5 (-> *target* fact eco-pill))) 0) - ) + (if *target* (tally-value this (the int (+ 0.5 (-> *target* fact eco-pill))) 0)) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-pickups) (arg0 int)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) @@ -189,169 +158,124 @@ (set! (-> this particles s5-0 init-pos x) 110.0) (set! (-> this particles s5-0 init-pos y) 55.0) (set! (-> this particles s5-0 init-pos z) 1.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-1 (-> this nb-of-particles)) - (if (= (-> this particles s5-1 part matrix) -1) - (set! (-> this particles s5-1 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-1 part matrix) -1) (set! (-> this particles s5-1 part matrix) (sprite-allocate-user-hvdf)))) (set! (-> this text-x) 118) (set! (-> this text-y) 45) (set! (-> this x-sgn) -1) (set! (-> this y-sgn) -1) (set! (-> this friend) 3) 0 - (none) - ) + (none)) (defpartgroup group-part-hud-health-1 :id 76 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 309 :flags (launch-asap))) - ) + :parts ((sp-item 309 :flags (launch-asap)))) (defpartgroup group-part-hud-health-2 :id 77 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 310 :flags (launch-asap))) - ) + :parts ((sp-item 310 :flags (launch-asap)))) (defpartgroup group-part-hud-health-3 :id 78 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 311 :flags (launch-asap))) - ) + :parts ((sp-item 311 :flags (launch-asap)))) (defpart 309 - :init-specs ((:texture (new 'static 'texture-id :index #x2d :page #x2)) - (:num 1.0) - (:scale-x (meters 1.7)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-health-01-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2d :page #x2)) + (:num 1.0) + (:scale-x (meters 1.7)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-health-01-func))) (defpart 310 - :init-specs ((:texture (new 'static 'texture-id :index #x2e :page #x2)) - (:num 1.0) - (:scale-x (meters 1.7)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-health-03-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2e :page #x2)) + (:num 1.0) + (:scale-x (meters 1.7)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-health-03-func))) (defpart 311 - :init-specs ((:texture (new 'static 'texture-id :index #x2f :page #x2)) - (:num 1.0) - (:scale-x (meters 1.7)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-health-02-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2f :page #x2)) + (:num 1.0) + (:scale-x (meters 1.7)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-health-02-func))) (deftype hud-health (hud) - ((scale float) - ) - ) + ((scale float))) - -(defun part-hud-health-01-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-0 (-> *hud-parts* health 0 scale))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) - ) +(defun part-hud-health-01-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-0 (-> *hud-parts* health 0 scale))) (set! (-> arg2 vector 0 w) f0-0) (set! (-> arg2 vector 1 w) f0-0)) (cond - ((and *target* (< (-> *target* fact health) 1.0)) - (set! (-> arg2 prev-pos x) 32.0) - ) + ((and *target* (< (-> *target* fact health) 1.0)) (set! (-> arg2 vector 2 w) 32.0)) (else - (let ((f0-3 128.0)) - ;; low health flashing - ;; og:preserve-this modified to support high fps - (when (and *target* (= (-> *target* fact health) 1.0)) - (let* ((scaled-frame-counter (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter)))) - (v1-16 (logand scaled-frame-counter 7))) - (set! f0-3 (if (zero? (logand scaled-frame-counter 8)) - (+ 128.0 (* 18.142857 (the float v1-16))) - (- 255.0 (* 18.142857 (the float v1-16))) - ) - ) - ) - ) - (set! (-> arg2 pos y) f0-3) - (set! (-> arg2 pos z) f0-3) - (set! (-> arg2 pos w) f0-3) - ) - (set! (-> arg2 prev-pos x) 128.0) - ) - ) + (let ((f0-3 128.0)) + ;; low health flashing + ;; og:preserve-this modified to support high fps + (when (and *target* (= (-> *target* fact health) 1.0)) + (let* ((scaled-frame-counter (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter)))) + (v1-16 (logand scaled-frame-counter 7))) + (set! f0-3 + (if (not (logtest? scaled-frame-counter 8)) + (+ 128.0 (* 18.142857 (the float v1-16))) + (- 255.0 (* 18.142857 (the float v1-16))))))) + (set! (-> arg2 vector 2 x) f0-3) + (set! (-> arg2 vector 2 y) f0-3) + (set! (-> arg2 vector 2 z) f0-3)) + (set! (-> arg2 vector 2 w) 128.0))) 0 - (none) - ) - -(defun part-hud-health-02-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-0 (-> *hud-parts* health 0 scale))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) - ) - (if (and *target* (< (-> *target* fact health) 2.0)) - (set! (-> arg2 prev-pos x) 32.0) - (set! (-> arg2 prev-pos x) 128.0) - ) + (none)) + +(defun part-hud-health-02-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-0 (-> *hud-parts* health 0 scale))) (set! (-> arg2 vector 0 w) f0-0) (set! (-> arg2 vector 1 w) f0-0)) + (if (and *target* (< (-> *target* fact health) 2.0)) (set! (-> arg2 vector 2 w) 32.0) (set! (-> arg2 vector 2 w) 128.0)) 0 - (none) - ) - -(defun part-hud-health-03-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-0 (-> *hud-parts* health 0 scale))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) - ) - (if (and *target* (< (-> *target* fact health) 3.0)) - (set! (-> arg2 prev-pos x) 32.0) - (set! (-> arg2 prev-pos x) 128.0) - ) + (none)) + +(defun part-hud-health-03-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-0 (-> *hud-parts* health 0 scale))) (set! (-> arg2 vector 0 w) f0-0) (set! (-> arg2 vector 1 w) f0-0)) + (if (and *target* (< (-> *target* fact health) 3.0)) (set! (-> arg2 vector 2 w) 32.0) (set! (-> arg2 vector 2 w) 128.0)) 0 - (none) - ) + (none)) (defmethod draw-hud ((this hud-health)) ((method-of-type hud draw-hud) this) 0 - (none) - ) + (none)) (defmethod hud-update ((this hud-health)) - (if *target* - (tally-value this (the int (-> *target* fact health)) (the-as int (-> *target* fact health-pickup-time))) - ) + (if *target* (tally-value this (the int (-> *target* fact health)) (the-as int (-> *target* fact health-pickup-time)))) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-health) (arg0 int)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) @@ -361,10 +285,8 @@ (set! (-> this particles s5-0 init-pos x) 61.0) (set! (-> this particles s5-0 init-pos y) 55.0) (set! (-> this particles s5-0 init-pos z) 5.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-1 (-> this nb-of-particles))) (set! (-> this particles s5-1) (new 'static 'hud-particle)) @@ -372,10 +294,8 @@ (set! (-> this particles s5-1 init-pos x) 98.0) (set! (-> this particles s5-1 init-pos y) 55.0) (set! (-> this particles s5-1 init-pos z) 5.0) - (set! (-> this particles s5-1 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-1 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-2 (-> this nb-of-particles))) (set! (-> this particles s5-2) (new 'static 'hud-particle)) @@ -383,174 +303,124 @@ (set! (-> this particles s5-2 init-pos x) 70.0) (set! (-> this particles s5-2 init-pos y) 76.0) (set! (-> this particles s5-2 init-pos z) 5.0) - (set! (-> this particles s5-2 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-2 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-3 (-> this nb-of-particles)) - (if (= (-> this particles s5-3 part matrix) -1) - (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-3 part matrix) -1) (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)))) (set-pos-and-scale this (= (get-aspect-ratio) 'aspect16x9) (= (get-video-mode) 'pal)) (set! (-> this x-sgn) -1) (set! (-> this y-sgn) -1) (set! (-> this friend) 0) 0 - (none) - ) + (none)) (defmethod set-pos-and-scale ((this hud-health) (arg0 symbol) (arg1 symbol)) (cond (arg0 - (set! (-> this particles 0 init-pos x) 65.0) - (set! (-> this particles 0 init-pos y) 55.0) - (set! (-> this particles 1 init-pos x) 98.0) - (set! (-> this particles 1 init-pos y) 55.0) - (set! (-> this particles 2 init-pos x) 73.0) - (set! (-> this particles 2 init-pos y) 80.0) - (set! (-> this scale) 6144.0) - ) + (set! (-> this particles 0 init-pos x) 65.0) + (set! (-> this particles 0 init-pos y) 55.0) + (set! (-> this particles 1 init-pos x) 98.0) + (set! (-> this particles 1 init-pos y) 55.0) + (set! (-> this particles 2 init-pos x) 73.0) + (set! (-> this particles 2 init-pos y) 80.0) + (set! (-> this scale) 6144.0)) (else - (set! (-> this particles 0 init-pos x) 61.0) - (set! (-> this particles 0 init-pos y) 55.0) - (set! (-> this particles 1 init-pos x) 98.0) - (set! (-> this particles 1 init-pos y) 55.0) - (set! (-> this particles 2 init-pos x) 70.0) - (set! (-> this particles 2 init-pos y) 76.0) - (set! (-> this scale) 6963.2) - (with-pc - (when (not (-> *pc-settings* use-vis?)) - (let ((base-x (-> this particles 0 init-pos x))) - (set! (-> this particles 1 init-pos x) (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles 1 init-pos x) base-x)))) - (set! (-> this particles 2 init-pos x) (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles 2 init-pos x) base-x)))) - ) - ) - ) - ) - ) + (set! (-> this particles 0 init-pos x) 61.0) + (set! (-> this particles 0 init-pos y) 55.0) + (set! (-> this particles 1 init-pos x) 98.0) + (set! (-> this particles 1 init-pos y) 55.0) + (set! (-> this particles 2 init-pos x) 70.0) + (set! (-> this particles 2 init-pos y) 76.0) + (set! (-> this scale) 6963.2) + (with-pc + (when (not (-> *pc-settings* use-vis?)) + (let ((base-x (-> this particles 0 init-pos x))) + (set! (-> this particles 1 init-pos x) + (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles 1 init-pos x) base-x)))) + (set! (-> this particles 2 init-pos x) + (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles 2 init-pos x) base-x))))))))) 0 - (none) - ) + (none)) (defpartgroup group-part-hud-orb-all :id 705 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 2964 :flags (launch-asap))) - ) + :parts ((sp-item 2964 :flags (launch-asap)))) (defpart 2964 - :init-specs ((:texture (new 'static 'texture-id :index #x2c :page #x2)) - (:num 1.0) - (:scale-x (meters 2.4)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2c :page #x2)) + (:num 1.0) + (:scale-x (meters 2.4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (deftype hud-money-all (hud) - ((x-scale float) - (y-scale float) - (y-pos int32) - (total-orbs int32) - (level-index int32) - (start-time time-frame) - ) - ) - + ((x-scale float) + (y-scale float) + (y-pos int32) + (total-orbs int32) + (level-index int32) + (start-time time-frame))) (defmethod draw-hud ((this hud-money-all)) - (let ((t9-0 (method-of-type hud draw-hud))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type hud draw-hud))) (t9-0 this)) 0 (let ((s5-0 0)) (when (>= (-> this level-index) 0) - (let ((s5-1 - (new - 'stack - 'font-context - *font-default-matrix* - (+ (* (-> this x-sgn) (-> this offset)) -60 (-> this text-x)) - (+ (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) - (the int (-> *video-parms* relative-y-scale)) - ) - 2 - ) - -17 - ) - 0.0 - (font-color red) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-12 s5-1)) - (set! (-> v1-12 width) (the float 228)) - ) - (let ((v1-13 s5-1)) - (set! (-> v1-13 height) (the float 45)) - ) - (let ((v1-14 s5-1)) - (set! (-> v1-14 scale) 0.6) - ) + (let ((s5-1 (new 'stack + 'font-context + *font-default-matrix* + (+ (* (-> this x-sgn) (-> this offset)) -60 (-> this text-x)) + (+ (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) + (the int (-> *video-parms* relative-y-scale))) + 2) + -17) + 0.0 + (font-color red) + (font-flags shadow kerning)))) + (let ((v1-12 s5-1)) (set! (-> v1-12 width) (the float 228))) + (let ((v1-13 s5-1)) (set! (-> v1-13 height) (the float 45))) + (let ((v1-14 s5-1)) (set! (-> v1-14 scale) 0.6)) (set! (-> s5-1 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text - (lookup-text! *common-text* (-> *level-task-data* (-> this level-index) level-name-id) #f) - s5-1 - #f - 128 - 18 - ) - ) - (set! s5-0 13) - ) + (print-game-text (lookup-text! *common-text* (-> *level-task-data* (-> this level-index) level-name-id) #f) + s5-1 + #f + 128 + 18)) + (set! s5-0 13)) (let* ((s1-0 50) (s3-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s4-1 (-> s3-0 base)) - ) + (s4-1 (-> s3-0 base))) (let ((s2-0 draw-string-xy)) (format (clear *temp-string*) "~D/~D" (-> this total-orbs) (-> this total-orbs)) - (s2-0 - *temp-string* - s3-0 - (+ (-> this text-x) (* (-> this x-sgn) (-> this offset)) s1-0) - (+ (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) - (the int (-> *video-parms* relative-y-scale)) - ) - 2 - ) - s5-0 - ) - (font-color yellow) - (font-flags shadow kerning middle large) - ) - ) + (s2-0 *temp-string* + s3-0 + (+ (-> this text-x) (* (-> this x-sgn) (-> this offset)) s1-0) + (+ (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) + (the int (-> *video-parms* relative-y-scale))) + 2) + s5-0) + (font-color yellow) + (font-flags shadow kerning middle large))) (let ((a3-12 (-> s3-0 base))) (let ((v1-32 (the-as dma-packet (-> s3-0 base)))) (set! (-> v1-32 dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> v1-32 vif0) (new 'static 'vif-tag)) (set! (-> v1-32 vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-32) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s4-1 - (the-as (pointer dma-tag) a3-12) - ) - ) - ) - ) + (set! (-> s3-0 base) (&+ (the-as pointer v1-32) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s4-1 + (the-as (pointer dma-tag) a3-12))))) 0 - (none) - ) + (none)) (defmethod hud-update ((this hud-money-all)) (when *target* @@ -561,21 +431,12 @@ (set! (-> this icons 0 scale-y) (-> this y-scale)) (set! (-> this icons 0 icon-y) (* (-> this y-pos) (the int (-> *video-parms* relative-y-scale)))) (let ((a0-6 (-> this icons 0 icon 0 root))) - (set-yaw-angle-clear-roll-pitch! - a0-6 - (- (y-angle a0-6) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio)))) - ) - ) - ) - ) + (set-yaw-angle-clear-roll-pitch! a0-6 (- (y-angle a0-6) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio)))))))) (if (>= (+ (current-time) (seconds -5)) (-> this start-time)) - (set! (-> this deactivate-when-hidden) #t) - (tally-value this (the-as int (current-time)) 0) - ) - ) + (set! (-> this deactivate-when-hidden) #t) + (tally-value this (the-as int (current-time)) 0))) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-money-all) (arg0 int)) (when (< (-> this nb-of-icons) 6) @@ -586,10 +447,7 @@ (set! (-> (the-as process-drawable (-> s3-0 0)) draw dma-add-func) dma-add-process-drawable-hud) (set-vector! (-> (the-as process-drawable (-> s3-0 0)) root trans) 0.0 0.0 0.0 1.0) (set-vector! (-> (the-as process-drawable (-> s3-0 0)) root scale) 0.0095 -0.011 0.0095 1.0) - (if #f - (send-event (ppointer->process s3-0) 'trans-hook #f) - ) - ) + (if #f (send-event (ppointer->process s3-0) 'trans-hook #f))) (set! (-> this icons s4-0 icon) (the-as (pointer manipy) s3-0)) (when s3-0 (logior! (-> s3-0 0 mask) (process-mask pause)) @@ -599,12 +457,8 @@ (set! (-> this icons s4-0 icon-y) 0) (set! (-> this icons s4-0 icon-z) 0) (set! (-> this icons s4-0 scale-x) 0.0095) - (set! (-> this icons s4-0 scale-y) -0.011) - ) - ) - ) - (+! (-> this nb-of-icons) 1) - ) + (set! (-> this icons s4-0 scale-y) -0.011)))) + (+! (-> this nb-of-icons) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s4-1 (-> this nb-of-particles))) (set! (-> this particles s4-1) (new 'static 'hud-particle)) @@ -612,16 +466,11 @@ (set! (-> this particles s4-1 init-pos x) 172.0) (set! (-> this particles s4-1 init-pos y) 330.0) (set! (-> this particles s4-1 init-pos z) 2.0) - (set! (-> this particles s4-1 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s4-1 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (set-pos-and-scale this (= (get-aspect-ratio) 'aspect16x9) (= (get-video-mode) 'pal)) (dotimes (s4-3 (-> this nb-of-particles)) - (if (= (-> this particles s4-3 part matrix) -1) - (set! (-> this particles s4-3 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s4-3 part matrix) -1) (set! (-> this particles s4-3 part matrix) (sprite-allocate-user-hvdf)))) (set! (-> this text-x) 251) (set! (-> this text-y) 305) (set! (-> this x-sgn) 0) @@ -629,157 +478,100 @@ (hide-bottom-hud) (let ((s4-4 0) (s3-2 0) - (s2-2 0) - ) + (s2-2 0)) (dotimes (s1-0 (length *level-task-data*)) (let ((v1-83 (-> *level-task-data* s1-0))) (when (!= v1-83 #f) (when (or (= *kernel-boot-message* 'play) (= (-> v1-83 level-name-id) (text-id misty-level-name))) - (if (= s1-0 arg0) - (set! s2-2 (the-as int (-> *game-info* money-per-level s1-0))) - ) + (if (= s1-0 arg0) (set! s2-2 (the-as int (-> *game-info* money-per-level s1-0)))) (+! s3-2 (-> *game-info* money-per-level s1-0)) - (+! s4-4 (-> (get-game-count s1-0) money-count)) - ) - ) - ) - ) + (+! s4-4 (-> (get-game-count s1-0) money-count)))))) (cond - ((= s3-2 s4-4) - (set! (-> this total-orbs) s4-4) - (set! (-> this total-orbs) s4-4) - (set! (-> this level-index) -1) - ) - ((begin (set! (-> this total-orbs) s2-2) (< arg0 (length *level-task-data*))) - (set! (-> this level-index) arg0) - ) - (else - (set! (-> this level-index) -1) - ) - ) - ) + ((= s3-2 s4-4) (set! (-> this total-orbs) s4-4) (set! (-> this total-orbs) s4-4) (set! (-> this level-index) -1)) + ((begin (set! (-> this total-orbs) s2-2) (< arg0 (length *level-task-data*))) (set! (-> this level-index) arg0)) + (else (set! (-> this level-index) -1)))) (set-time! (-> this start-time)) (sound-play "get-all-orbs") 0 - (none) - ) + (none)) (defmethod set-pos-and-scale ((this hud-money-all) (arg0 symbol) (arg1 symbol)) (cond - (arg0 - (set! (-> this x-scale) 0.01845) - (set! (-> this y-scale) -0.02175) - (set! (-> this y-pos) (if arg1 - 374 - 373 - ) - ) - ) - (else - (set! (-> this x-scale) 0.013499999) - (set! (-> this y-scale) -0.01575) - (set! (-> this y-pos) 361) - ) - ) + (arg0 (set! (-> this x-scale) 0.01845) (set! (-> this y-scale) -0.02175) (set! (-> this y-pos) (if arg1 374 373))) + (else (set! (-> this x-scale) 0.013499999) (set! (-> this y-scale) -0.01575) (set! (-> this y-pos) 361))) (when arg1 (set! (-> this x-scale) (* 1.02 (-> this x-scale))) (set! (-> this y-scale) (* 1.2 (-> this y-scale))) - (set! (-> this y-pos) (the int (* 1.21 (the float (-> this y-pos))))) - ) + (set! (-> this y-pos) (the int (* 1.21 (the float (-> this y-pos)))))) 0 - (none) - ) + (none)) (defpartgroup group-part-hud-orb :id 79 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 312 :flags (launch-asap))) - ) + :parts ((sp-item 312 :flags (launch-asap)))) (defpart 312 - :init-specs ((:texture (new 'static 'texture-id :index #x2c :page #x2)) - (:num 1.0) - (:scale-x (meters 1.6)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2c :page #x2)) + (:num 1.0) + (:scale-x (meters 1.6)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (deftype hud-money (hud) - ((x-scale float) - (y-scale float) - (y-pos int32) - ) - ) + ((x-scale float) + (y-scale float) + (y-pos int32))) (define-extern *game-counts* game-count-info) + (defmethod draw-hud ((this hud-money)) - (let ((t9-0 (method-of-type hud draw-hud))) - (t9-0 this) - ) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id debug)) + (let ((t9-0 (method-of-type hud draw-hud))) (t9-0 this)) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id debug)) (let* ((string-x (+ (-> this text-x) (* (-> this x-sgn) (-> this offset)))) - (string-y (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) (the int (-> *video-parms* relative-y-scale))) 2)) - ) + (string-y (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) + (the int (-> *video-parms* relative-y-scale))) + 2))) (case *hud-collectable-view* (((hud-collectable-view game-totals)) - ;; show orbs collected/total across entire game - (draw-string-xy-scaled - (string-format - "~D~%/~D" - (the int (-> *game-info* money-total)) - 2000 ;;(-> (the progress (-> *progress-process* 0)) total-nb-of-orbs) - ) - buf - string-x - (- string-y 5) - (font-color yellow) - (font-flags shadow kerning large) - 0.8 - ) - ) + ;; show orbs collected/total across entire game + (draw-string-xy-scaled (string-format "~D~%/~D" + (the int (-> *game-info* money-total)) + 2000 ;;(-> (the progress (-> *progress-process* 0)) total-nb-of-orbs) + ) + buf + string-x + (- string-y 5) + (font-color yellow) + (font-flags shadow kerning large) + 0.8)) (((hud-collectable-view level-totals)) - (let ((lvl-idx (-> *level-task-data-remap* (+ (-> *target* current-level info index) -1)))) - ;; show orbs collected/total this level - (draw-string-xy-scaled - (string-format - "~D~%/~D" - (-> *game-info* money-per-level lvl-idx) - (-> *game-counts* data lvl-idx money-count) - ) - buf - string-x - (- string-y 5) - (font-color yellow) - (font-flags shadow kerning large) - 0.8 - ) - ) - ) + (let ((lvl-idx (-> *level-task-data-remap* (+ (-> *target* current-level info index) -1)))) + ;; show orbs collected/total this level + (draw-string-xy-scaled (string-format "~D~%/~D" (-> *game-info* money-per-level lvl-idx) (-> *game-counts* data lvl-idx money-count)) + buf + string-x + (- string-y 5) + (font-color yellow) + (font-flags shadow kerning large) + 0.8))) (((hud-collectable-view original)) - ;; show original (total collected, unspent orbs) - (draw-string-xy - (string-format "~D" (-> this value)) - buf - string-x - string-y - (font-color yellow) - (font-flags shadow kerning large) - ) - ) - ) - ) - ) + ;; show original (total collected, unspent orbs) + (draw-string-xy (string-format "~D" (-> this value)) + buf + string-x + string-y + (font-color yellow) + (font-flags shadow kerning large)))))) 0 - (none) - ) + (none)) (defmethod hud-update ((this hud-money)) (when *target* @@ -789,18 +581,10 @@ (set! (-> this icons 0 scale-y) (-> this y-scale)) (set! (-> this icons 0 icon-y) (* (-> this y-pos) (the int (-> *video-parms* relative-y-scale)))) (let ((a0-6 (-> this icons 0 icon 0 root))) - (set-yaw-angle-clear-roll-pitch! - a0-6 - (- (y-angle a0-6) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio)))) - ) - ) - ) - ) - (tally-value this (the int (+ 0.5 (-> *target* game money))) 0) - ) + (set-yaw-angle-clear-roll-pitch! a0-6 (- (y-angle a0-6) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio)))))))) + (tally-value this (the int (+ 0.5 (-> *target* game money))) 0)) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-money) (arg0 int)) (when (< (-> this nb-of-icons) 6) @@ -811,10 +595,7 @@ (set! (-> (the-as process-drawable (-> s4-0 0)) draw dma-add-func) dma-add-process-drawable-hud) (set-vector! (-> (the-as process-drawable (-> s4-0 0)) root trans) 0.0 0.0 0.0 1.0) (set-vector! (-> (the-as process-drawable (-> s4-0 0)) root scale) 0.0095 -0.011 0.0095 1.0) - (if #f - (send-event (ppointer->process s4-0) 'trans-hook #f) - ) - ) + (if #f (send-event (ppointer->process s4-0) 'trans-hook #f))) (set! (-> this icons s5-0 icon) (the-as (pointer manipy) s4-0)) (when s4-0 (logior! (-> s4-0 0 mask) (process-mask pause)) @@ -824,12 +605,8 @@ (set! (-> this icons s5-0 icon-y) 79) (set! (-> this icons s5-0 icon-z) 0) (set! (-> this icons s5-0 scale-x) 0.0095) - (set! (-> this icons s5-0 scale-y) -0.011) - ) - ) - ) - (+! (-> this nb-of-icons) 1) - ) + (set! (-> this icons s5-0 scale-y) -0.011)))) + (+! (-> this nb-of-icons) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-1 (-> this nb-of-particles))) (set! (-> this particles s5-1) (new 'static 'hud-particle)) @@ -837,420 +614,339 @@ (set! (-> this particles s5-1 init-pos x) 400.0) (set! (-> this particles s5-1 init-pos y) 58.0) (set! (-> this particles s5-1 init-pos z) 2.0) - (set! (-> this particles s5-1 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-1 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (set-pos-and-scale this (= (get-aspect-ratio) 'aspect16x9) (= (get-video-mode) 'pal)) (dotimes (s5-3 (-> this nb-of-particles)) - (if (= (-> this particles s5-3 part matrix) -1) - (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-3 part matrix) -1) (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)))) (set! (-> this text-x) 420) (set! (-> this text-y) 45) (set! (-> this x-sgn) 1) (set! (-> this y-sgn) -1) (set! (-> this increment-on-event) #t) 0 - (none) - ) + (none)) (defmethod set-pos-and-scale ((this hud-money) (arg0 symbol) (arg1 symbol)) (cond - (arg0 - (set! (-> this x-scale) 0.0123) - (set! (-> this y-scale) -0.0145) - (set! (-> this y-pos) 86) - ) - (else - (set! (-> this x-scale) 0.0095) - (set! (-> this y-scale) -0.011) - (set! (-> this y-pos) 79) - ) - ) + (arg0 (set! (-> this x-scale) 0.0123) (set! (-> this y-scale) -0.0145) (set! (-> this y-pos) 86)) + (else (set! (-> this x-scale) 0.0095) (set! (-> this y-scale) -0.011) (set! (-> this y-pos) 79))) (when arg1 (set! (-> this x-scale) (* 1.1 (-> this x-scale))) (set! (-> this y-scale) (* 1.2 (-> this y-scale))) - (set! (-> this y-pos) (the int (* (the float (-> this y-pos)) (if arg0 - 0.95 - 0.9 - ) - ) - ) - ) - ) + (set! (-> this y-pos) (the int (* (the float (-> this y-pos)) (if arg0 0.95 0.9))))) 0 - (none) - ) + (none)) (defmethod get-icon-pos-x ((this hud-money)) - (-> this icons 0 icon-x) - ) + (-> this icons 0 icon-x)) (defmethod get-icon-pos-y ((this hud-money)) - (-> this icons 0 icon-y) - ) + (-> this icons 0 icon-y)) (defmethod get-icon-scale-x ((this hud-money)) - 0.01 - ) + 0.01) (defmethod get-icon-scale-y ((this hud-money)) - -0.011 - ) + -0.011) -(defskelgroup *fuelcell-naked-sg* fuelcell-naked fuelcell-naked-lod0-jg fuelcell-naked-idle-ja - ((fuelcell-naked-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.6) - :texture-level 2 - ) +(defskelgroup *fuelcell-naked-sg* + fuelcell-naked + fuelcell-naked-lod0-jg + fuelcell-naked-idle-ja + ((fuelcell-naked-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.6) + :texture-level 2) (defpart 313 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.4)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9)) - (:userdata 4.0) - (:func 'fuel-cell-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9)) + (:userdata 4.0) + (:func 'fuel-cell-hud-orbit-callback))) (defpart 314 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.4)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9)) - (:userdata 5.0) - (:func 'fuel-cell-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9)) + (:userdata 5.0) + (:func 'fuel-cell-hud-orbit-callback))) (defpart 315 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.4)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9)) - (:userdata 6.0) - (:func 'fuel-cell-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9)) + (:userdata 6.0) + (:func 'fuel-cell-hud-orbit-callback))) (defpart 316 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.4)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9)) - (:userdata 7.0) - (:func 'fuel-cell-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9)) + (:userdata 7.0) + (:func 'fuel-cell-hud-orbit-callback))) (defpart 317 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9)) - (:userdata 9.0) - (:func 'fuel-cell-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9)) + (:userdata 9.0) + (:func 'fuel-cell-hud-orbit-callback))) (defpart 318 - :init-specs ((:texture (new 'static 'texture-id :index #x30 :page #x2)) - (:num 1.0) - (:scale-x (meters 1.8)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'fuel-cell-hud-center-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x30 :page #x2)) + (:num 1.0) + (:scale-x (meters 1.8)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'fuel-cell-hud-center-callback))) (defpartgroup group-part-hud-power-cell-whole :id 80 :flags (use-local-clock screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 318 :flags (launch-asap)) - (sp-item 319 :fade-after (meters 35)) - (sp-item 320 :fade-after (meters 20)) - (sp-item 321 :flags (launch-asap) :period (seconds 12) :length (seconds 0.017)) - (sp-item 322 :flags (launch-asap) :period (seconds 12) :length (seconds 0.017)) - (sp-item 317 :flags (launch-asap)) - (sp-item 313 :flags (launch-asap)) - (sp-item 314 :flags (launch-asap)) - (sp-item 315 :flags (launch-asap)) - (sp-item 316 :flags (launch-asap)) - ) - ) + :parts + ((sp-item 318 :flags (launch-asap)) + (sp-item 319 :fade-after (meters 35)) + (sp-item 320 :fade-after (meters 20)) + (sp-item 321 :flags (launch-asap) :period (seconds 12) :length (seconds 0.017)) + (sp-item 322 :flags (launch-asap) :period (seconds 12) :length (seconds 0.017)) + (sp-item 317 :flags (launch-asap)) + (sp-item 313 :flags (launch-asap)) + (sp-item 314 :flags (launch-asap)) + (sp-item 315 :flags (launch-asap)) + (sp-item 316 :flags (launch-asap)))) (defpart 323 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 319 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.5) - (:z (meters 22.5)) - (:scale-x (meters 0.3) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1) (meters 0.8)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 0.35555556) - (:timer (seconds -0.005)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 232) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.5) + (:z (meters 22.5)) + (:scale-x (meters 0.3) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.8)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds -0.005)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 232))) (defpart 320 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.06) - (:z (meters 22.5)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 0.32) - (:timer (seconds -0.005)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.25)) - (:next-launcher 232) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.06) + (:z (meters 22.5)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds -0.005)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.25)) + (:next-launcher 232))) (defpart 321 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:z (meters 22.5)) - (:scale-x (meters 3.3)) - (:rot-z (degrees 0)) - (:scale-y (meters 2.8)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 64.0) - (:rotvel-z (degrees -0.4)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3)) - (:func 'fuel-cell-hud-starburst-3-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:z (meters 22.5)) + (:scale-x (meters 3.3)) + (:rot-z (degrees 0)) + (:scale-y (meters 2.8)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 64.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3)) + (:func 'fuel-cell-hud-starburst-3-callback))) (defpart 322 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:z (meters 22.5)) - (:scale-x (meters 3.8)) - (:rot-z (degrees 0)) - (:scale-y (meters 3.3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:rotvel-z (degrees 0.3)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3)) - (:func 'fuel-cell-hud-starburst-4-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:z (meters 22.5)) + (:scale-x (meters 3.8)) + (:rot-z (degrees 0)) + (:scale-y (meters 3.3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3)) + (:func 'fuel-cell-hud-starburst-4-callback))) (deftype hud-fuel-cell (hud) - ((scale-starburst-3-x float) - (scale-starburst-3-y float) - (scale-starburst-4-x float) - (scale-starburst-4-y float) - (scale-icon float) - (scale-center float) - (icon-pos-y int32) - ) - ) - + ((scale-starburst-3-x float) + (scale-starburst-3-y float) + (scale-starburst-4-x float) + (scale-starburst-4-y float) + (scale-icon float) + (scale-center float) + (icon-pos-y int32))) (defmethod draw-hud ((this hud-fuel-cell)) - (let ((t9-0 (method-of-type hud draw-hud))) - (t9-0 this) - ) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id debug)) + (let ((t9-0 (method-of-type hud draw-hud))) (t9-0 this)) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id debug)) (let* ((string-x (+ (-> this text-x) (* (-> this x-sgn) (-> this offset)))) - (string-y (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) (the int (-> *video-parms* relative-y-scale))) 2)) - ) + (string-y (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) + (the int (-> *video-parms* relative-y-scale))) + 2))) (case *hud-collectable-view* (((hud-collectable-view game-totals)) - ;; show cells collected/total across entire game - (draw-string-xy-scaled - (string-format - "~D~%/~D" - (the int (-> *game-info* fuel)) - 101 ;;(-> (the progress (-> *progress-process* 0)) total-nb-of-power-cells) - ) - buf - string-x - (- string-y 5) - (font-color yellow) - (font-flags shadow kerning large) - 0.8 - ) - ) + ;; show cells collected/total across entire game + (draw-string-xy-scaled (string-format "~D~%/~D" + (the int (-> *game-info* fuel)) + 101 ;;(-> (the progress (-> *progress-process* 0)) total-nb-of-power-cells) + ) + buf + string-x + (- string-y 5) + (font-color yellow) + (font-flags shadow kerning large) + 0.8)) (((hud-collectable-view level-totals)) - (let ((lvl-idx (-> *level-task-data-remap* (+ (-> *target* current-level info index) -1))) - (completed-task-count 0)) - ;; determine number of cells collected in this level - (dotimes (task-idx (-> *level-task-data* lvl-idx nb-of-tasks)) - (if (= (get-task-status (-> *level-task-data* lvl-idx task-info task-idx task-id)) (task-status invalid)) - (+! completed-task-count 1) - ) - ) - - ;; show cells/total collected this level - (draw-string-xy-scaled - (string-format - "~D~%/~D" - completed-task-count - (-> *level-task-data* lvl-idx nb-of-tasks) - ) - buf - string-x - (- string-y 5) - (font-color yellow) - (font-flags shadow kerning large) - 0.8 - ) - ) - ) + (let ((lvl-idx (-> *level-task-data-remap* (+ (-> *target* current-level info index) -1))) + (completed-task-count 0)) + ;; determine number of cells collected in this level + (dotimes (task-idx (-> *level-task-data* lvl-idx nb-of-tasks)) + (if (= (get-task-status (-> *level-task-data* lvl-idx task-info task-idx task-id)) (task-status invalid)) + (+! completed-task-count 1))) + ;; show cells/total collected this level + (draw-string-xy-scaled (string-format "~D~%/~D" completed-task-count (-> *level-task-data* lvl-idx nb-of-tasks)) + buf + string-x + (- string-y 5) + (font-color yellow) + (font-flags shadow kerning large) + 0.8))) (((hud-collectable-view original)) - ;; show original (cells collected across entire game) - (draw-string-xy - (string-format "~D" (-> this value)) - buf - string-x - string-y - (font-color yellow) - (font-flags shadow kerning large) - ) - ) - ) - ) - ) + ;; show original (cells collected across entire game) + (draw-string-xy (string-format "~D" (-> this value)) + buf + string-x + string-y + (font-color yellow) + (font-flags shadow kerning large)))))) 0 - (none) - ) + (none)) (defun fuel-cell-hud-orbit-callback ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((s3-0 (-> arg1 key proc)) (v1-1 (the int (-> arg1 user-float))) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (let ((s4-0 (new 'stack-no-clear 'vector))) (vector<-cspace! s5-0 (-> (the-as hud-fuel-cell s3-0) icons 0 icon 0 node-list data v1-1)) (vector<-cspace! s4-0 (-> (the-as hud-fuel-cell s3-0) icons 0 icon 0 node-list data 3)) - (vector-! s5-0 s5-0 s4-0) - ) + (vector-! s5-0 s5-0 s4-0)) (set! (-> arg2 vector 0 x) (* 60.0 (-> s5-0 x))) (set! (-> arg2 vector 0 y) (* 60.0 (-> s5-0 y))) - (set! (-> arg2 vector 0 z) (* 1024.0 (-> s5-0 z))) - ) + (set! (-> arg2 vector 0 z) (* 1024.0 (-> s5-0 z)))) 0 - (none) - ) + (none)) (defun fuel-cell-hud-starburst-3-callback ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 0 w) (-> *hud-parts* fuel-cell 0 scale-starburst-3-x)) (set! (-> arg2 vector 1 w) (-> *hud-parts* fuel-cell 0 scale-starburst-3-y)) 0 - (none) - ) + (none)) (defun fuel-cell-hud-starburst-4-callback ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 0 w) (-> *hud-parts* fuel-cell 0 scale-starburst-4-x)) (set! (-> arg2 vector 1 w) (-> *hud-parts* fuel-cell 0 scale-starburst-4-y)) 0 - (none) - ) + (none)) (defun fuel-cell-hud-center-callback ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-0 (-> *hud-parts* fuel-cell 0 scale-icon)) - (f1-0 (-> *hud-parts* fuel-cell 0 scale-center)) - ) + (f1-0 (-> *hud-parts* fuel-cell 0 scale-center))) (set-vector! (-> *hud-parts* fuel-cell 0 icons 0 icon 0 root scale) f0-0 f0-0 f0-0 1.0) (set! (-> arg2 vector 0 w) f1-0) - (set! (-> arg2 vector 1 w) f1-0) - ) + (set! (-> arg2 vector 1 w) f1-0)) 0 - (none) - ) + (none)) (defmethod hud-update ((this hud-fuel-cell)) (when *target* (when (!= *master-mode* 'pause) (let ((a0-2 (-> this icons 0 icon 0 root))) - (set-yaw-angle-clear-roll-pitch! - a0-2 - (+ (y-angle a0-2) (* 182.04445 (* 0.5 (-> *display* time-adjust-ratio)))) - ) - ) - ) + (set-yaw-angle-clear-roll-pitch! a0-2 (+ (y-angle a0-2) (* 182.04445 (* 0.5 (-> *display* time-adjust-ratio))))))) (set! (-> this icons 0 icon-y) (-> this icon-pos-y)) (tally-value this (the int (+ 0.5 (-> *target* game fuel))) 0) (let ((s5-1 (new 'stack-no-clear 'vector))) (vector<-cspace! s5-1 (-> this icons 0 icon 0 node-list data 3)) (set! (-> this particles 0 pos x) (-> s5-1 x)) (set! (-> this particles 0 pos y) (* 0.5 (-> s5-1 y))) - (set! (-> this particles 0 pos z) (+ 2.0 (* 0.05 (+ -2048.0 (-> s5-1 z))))) - ) - ) + (set! (-> this particles 0 pos z) (+ 2.0 (* 0.05 (+ -2048.0 (-> s5-1 z))))))) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-fuel-cell) (arg0 int)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) @@ -1260,15 +956,10 @@ (set! (-> this particles s5-0 init-pos x) 256.0) (set! (-> this particles s5-0 init-pos y) 224.0) (set! (-> this particles s5-0 init-pos z) 1.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-1 (-> this nb-of-particles)) - (if (= (-> this particles s5-1 part matrix) -1) - (set! (-> this particles s5-1 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-1 part matrix) -1) (set! (-> this particles s5-1 part matrix) (sprite-allocate-user-hvdf)))) (when (< (-> this nb-of-icons) 6) (let ((s5-2 (-> this nb-of-icons))) (set! (-> this icons s5-2) (new 'static 'hud-icon)) @@ -1277,10 +968,7 @@ (set! (-> (the-as process-drawable (-> s4-0 0)) draw dma-add-func) dma-add-process-drawable-hud) (set-vector! (-> (the-as process-drawable (-> s4-0 0)) root trans) 0.0 0.0 0.0 1.0) (set-vector! (-> (the-as process-drawable (-> s4-0 0)) root scale) 0.009 0.009 0.009 1.0) - (if #f - (send-event (ppointer->process s4-0) 'trans-hook #f) - ) - ) + (if #f (send-event (ppointer->process s4-0) 'trans-hook #f))) (set! (-> this icons s5-2 icon) (the-as (pointer manipy) s4-0)) (when s4-0 (logior! (-> s4-0 0 mask) (process-mask pause)) @@ -1290,12 +978,8 @@ (set! (-> this icons s5-2 icon-y) 62) (set! (-> this icons s5-2 icon-z) 0) (set! (-> this icons s5-2 scale-x) 0.009) - (set! (-> this icons s5-2 scale-y) 0.009) - ) - ) - ) - (+! (-> this nb-of-icons) 1) - ) + (set! (-> this icons s5-2 scale-y) 0.009)))) + (+! (-> this nb-of-icons) 1)) (set! (-> this text-x) 276) (set! (-> this text-y) 45) (set! (-> this x-sgn) 0) @@ -1305,179 +989,128 @@ (set-pos-and-scale this (= (get-aspect-ratio) 'aspect16x9) (= (get-video-mode) 'pal)) (let ((s5-4 (new 'stack-no-clear 'quaternion))) (quaternion-axis-angle! s5-4 0.0 1.0 0.0 16384.0) - (quaternion*! (-> this icons 0 icon 0 root quat) s5-4 (-> this icons 0 icon 0 root quat)) - ) + (quaternion*! (-> this icons 0 icon 0 root quat) s5-4 (-> this icons 0 icon 0 root quat))) 0 - (none) - ) + (none)) (defmethod set-pos-and-scale ((this hud-fuel-cell) (arg0 symbol) (arg1 symbol)) (cond (arg0 - (set! (-> this scale-starburst-3-x) 10240.0) - (set! (-> this scale-starburst-3-y) 9420.8) - (set! (-> this scale-starburst-4-x) 9420.8) - (set! (-> this scale-starburst-4-y) 8192.0) - (set! (-> this scale-icon) 0.007) - (set! (-> this scale-center) 6144.0) - (set! (-> this icon-pos-y) 62) - ) + (set! (-> this scale-starburst-3-x) 10240.0) + (set! (-> this scale-starburst-3-y) 9420.8) + (set! (-> this scale-starburst-4-x) 9420.8) + (set! (-> this scale-starburst-4-y) 8192.0) + (set! (-> this scale-icon) 0.007) + (set! (-> this scale-center) 6144.0) + (set! (-> this icon-pos-y) 62)) (else - (set! (-> this scale-starburst-3-x) 12288.0) - (set! (-> this scale-starburst-3-y) 10240.0) - (set! (-> this scale-starburst-4-x) 12288.0) - (set! (-> this scale-starburst-4-y) 10240.0) - (set! (-> this scale-icon) 0.009) - (set! (-> this scale-center) 7372.8) - (set! (-> this icon-pos-y) 62) - ) - ) - (if arg1 - (set! (-> this icon-pos-y) (the int (* (the float (-> this icon-pos-y)) (if arg0 - 1.1 - 1.14 - ) - ) - ) - ) - ) + (set! (-> this scale-starburst-3-x) 12288.0) + (set! (-> this scale-starburst-3-y) 10240.0) + (set! (-> this scale-starburst-4-x) 12288.0) + (set! (-> this scale-starburst-4-y) 10240.0) + (set! (-> this scale-icon) 0.009) + (set! (-> this scale-center) 7372.8) + (set! (-> this icon-pos-y) 62))) + (if arg1 (set! (-> this icon-pos-y) (the int (* (the float (-> this icon-pos-y)) (if arg0 1.1 1.14))))) 0 - (none) - ) + (none)) (defpartgroup group-part-hud-buzzer :id 81 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 324 :flags (launch-asap) :binding 325) (sp-item 325 :flags (start-dead launch-asap))) - ) + :parts ((sp-item 324 :flags (launch-asap) :binding 325) (sp-item 325 :flags (start-dead launch-asap)))) (defpart 324 - :init-specs ((:texture (new 'static 'texture-id :index #x2a :page #x2)) - (:num 1.0) - (:scale-x (meters 2.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2a :page #x2)) + (:num 1.0) + (:scale-x (meters 2.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit9)))) (defpart 325 - :init-specs ((:texture (new 'static 'texture-id :index #x2a :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 1.3333334)) - (:z (meters 0.1)) - (:scale-x (meters 1.8)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:omega 0.0) - (:vel-x (meters 0.053333335)) - (:vel-z (meters 0)) - (:timer (seconds -0.005)) - (:flags (bit2 bit7 bit9)) - (:func 'part-hud-buzzer-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2a :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 1.3333334)) + (:z (meters 0.1)) + (:scale-x (meters 1.8)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega 0.0) + (:vel-x (meters 0.053333335)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (bit2 bit7 bit9)) + (:func 'part-hud-buzzer-func))) (deftype hud-buzzers (hud) - ((scale float) - (text-y-offset int32) - ) - ) + ((scale float) + (text-y-offset int32))) - -(defun part-hud-buzzer-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-0 (-> *hud-parts* buzzers 0 scale))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) - ) - (none) - ) +(defun part-hud-buzzer-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-0 (-> *hud-parts* buzzers 0 scale))) (set! (-> arg2 vector 0 w) f0-0) (set! (-> arg2 vector 1 w) f0-0)) + (none)) (defmethod draw-hud ((this hud-buzzers)) - (let ((t9-0 (method-of-type hud draw-hud))) - (t9-0 this) - ) - (set! (-> this text-y) (+ (if (nonzero? (-> this next-y-offset)) - (-> this text-y-offset) - 0 - ) - 362 - ) - ) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id debug)) + (let ((t9-0 (method-of-type hud draw-hud))) (t9-0 this)) + (set! (-> this text-y) (+ (if (nonzero? (-> this next-y-offset)) (-> this text-y-offset) 0) 362)) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id debug)) (let* ((string-x (+ (-> this text-x) (* (-> this x-sgn) (-> this offset)))) - (string-y (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) (the int (-> *video-parms* relative-y-scale))) 2)) - ) + (string-y (/ (* (+ (-> this text-y) (* (-> this y-sgn) (-> this offset)) (-> this y-offset)) + (the int (-> *video-parms* relative-y-scale))) + 2))) (case *hud-collectable-view* (((hud-collectable-view game-totals)) - ;; show flies collected/total across entire game - (draw-string-xy-scaled - (string-format - " ~D~% /~D" - (the int (-> *game-info* buzzer-total)) - 112 ;; (-> (the progress (-> *progress-process* 0)) total-nb-of-buzzers) - ) - buf - string-x - (- string-y 5) - (font-color yellow) - (font-flags shadow kerning large) - 0.8 - ) - ) + ;; show flies collected/total across entire game + (draw-string-xy-scaled (string-format " ~D~% /~D" + (the int (-> *game-info* buzzer-total)) + 112 ;; (-> (the progress (-> *progress-process* 0)) total-nb-of-buzzers) + ) + buf + string-x + (- string-y 5) + (font-color yellow) + (font-flags shadow kerning large) + 0.8)) (((hud-collectable-view level-totals)) - (let ((lvl-idx (-> *level-task-data-remap* (+ (-> *target* current-level info index) -1)))) - ;; show flies collected/total this level - (draw-string-xy-scaled - (string-format - " ~D~% /~D" - (buzzer-count *game-info* (-> *level-task-data* lvl-idx task-info (-> *level-task-data* lvl-idx buzzer-task-index) task-id)) - (-> *game-counts* data lvl-idx buzzer-count) - ) - buf - string-x - (- string-y 5) - (font-color yellow) - (font-flags shadow kerning large) - 0.8 - ) - ) - ) + (let ((lvl-idx (-> *level-task-data-remap* (+ (-> *target* current-level info index) -1)))) + ;; show flies collected/total this level + (draw-string-xy-scaled (string-format " ~D~% /~D" + (buzzer-count *game-info* + (-> *level-task-data* lvl-idx task-info (-> *level-task-data* lvl-idx buzzer-task-index) task-id)) + (-> *game-counts* data lvl-idx buzzer-count)) + buf + string-x + (- string-y 5) + (font-color yellow) + (font-flags shadow kerning large) + 0.8))) (((hud-collectable-view original)) - ;; show original (flies collected this level) - (draw-string-xy - (string-format " ~D" (-> this value)) - buf - string-x - string-y - (font-color yellow) - (font-flags shadow kerning large) - ) - ) - ) - ) - ) + ;; show original (flies collected this level) + (draw-string-xy (string-format " ~D" (-> this value)) + buf + string-x + string-y + (font-color yellow) + (font-flags shadow kerning large)))))) 0 - (none) - ) + (none)) (defmethod hud-update ((this hud-buzzers)) - (if *target* - (tally-value this (the int (+ 0.5 (-> *target* fact buzzer))) 0) - ) + (if *target* (tally-value this (the int (+ 0.5 (-> *target* fact buzzer))) 0)) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-buzzers) (arg0 int)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) @@ -1487,15 +1120,10 @@ (set! (-> this particles s5-0 init-pos x) 60.0) (set! (-> this particles s5-0 init-pos y) 380.0) (set! (-> this particles s5-0 init-pos z) 1.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-1 (-> this nb-of-particles)) - (if (= (-> this particles s5-1 part matrix) -1) - (set! (-> this particles s5-1 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-1 part matrix) -1) (set! (-> this particles s5-1 part matrix) (sprite-allocate-user-hvdf)))) (set-pos-and-scale this (= (get-aspect-ratio) 'aspect16x9) (= (get-video-mode) 'pal)) (set! (-> this text-x) 85) (set! (-> this text-y) 362) @@ -1504,356 +1132,225 @@ (set! (-> this text-y-offset) 0) (set! (-> this increment-on-event) #t) 0 - (none) - ) + (none)) (defmethod get-icon-pos-x ((this hud-buzzers)) - (-> this text-x) - ) + (-> this text-x)) (defmethod get-icon-pos-y ((this hud-buzzers)) - (+ (if (= (-> *setting-control* current video-mode) 'pal) - (+ (-> this text-y) 120) - (+ (-> this text-y) 50) - ) - (-> this next-y-offset) - ) - ) + (+ (if (= (-> *setting-control* current video-mode) 'pal) (+ (-> this text-y) 120) (+ (-> this text-y) 50)) + (-> this next-y-offset))) (defmethod get-icon-scale-x ((this hud-buzzers)) - 0.008 - ) + 0.008) (defmethod get-icon-scale-y ((this hud-buzzers)) - -0.008 - ) + -0.008) (defmethod set-pos-and-scale ((this hud-buzzers) (arg0 symbol) (arg1 symbol)) (cond - (arg0 - (set! (-> this scale) 6553.6) - (set! (-> this text-y-offset) -40) - ) - (else - (set! (-> this scale) 7372.8) - (set! (-> this text-y-offset) 0) - 0 - ) - ) + (arg0 (set! (-> this scale) 6553.6) (set! (-> this text-y-offset) -40)) + (else (set! (-> this scale) 7372.8) (set! (-> this text-y-offset) 0) 0)) 0 - (none) - ) + (none)) (defpartgroup group-part-hud-eco-timer :id 82 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 327 :flags (launch-asap))) - ) + :parts ((sp-item 327 :flags (launch-asap)))) (defpartgroup group-part-hud-eco-timer-backing :id 83 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 328 :flags (launch-asap))) - ) + :parts ((sp-item 328 :flags (launch-asap)))) (defpart 327 - :init-specs ((:texture (new 'static 'texture-id :index #x2b :page #x2)) - (:num 1.0) - (:scale-x (meters 3.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-eco-timer-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2b :page #x2)) + (:num 1.0) + (:scale-x (meters 3.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-eco-timer-func))) (defpart 328 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:scale-x (meters 2.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 100.0) - (:b 63.0) - (:a 64.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-eco-timer-backing-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:scale-x (meters 2.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 100.0) + (:b 63.0) + (:a 64.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-eco-timer-backing-func))) (defpartgroup group-part-hud-timer-blue :id 84 :flags (use-local-clock screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 329 :flags (launch-asap)) (sp-item 330 :flags (launch-asap)) (sp-item 331 :flags (launch-asap))) - ) + :parts ((sp-item 329 :flags (launch-asap)) (sp-item 330 :flags (launch-asap)) (sp-item 331 :flags (launch-asap)))) (defpart 329 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 32.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-eco-timer-01-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 32.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-eco-timer-01-func))) (defpart 330 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 32.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-eco-timer-02-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 32.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-eco-timer-02-func))) (defpart 331 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 32.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-eco-timer-03-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 32.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-eco-timer-03-func))) (deftype hud-power (hud) - ((scale-timer float) - (scale-backing float) - (scale-blue float) - ) - ) + ((scale-timer float) + (scale-backing float) + (scale-blue float))) - -(defun calculate-rotation-and-color-for-slice ((arg0 int) (arg1 float) (arg2 int) (arg3 int) (arg4 int) (arg5 hud-particle)) +(defun calculate-rotation-and-color-for-slice ((arg0 int) (arg1 float) (arg2 int) (arg3 int) (arg4 int) (arg5 matrix)) (cond - ((>= 0.0 arg1) - (set! (-> arg5 init-pos w) -16566.045) - ) + ((>= 0.0 arg1) (set! (-> arg5 vector 1 z) -16566.045)) (else - (let ((v1-1 arg0)) - (cond - ((zero? v1-1) - (if (< 1.0 arg1) - (set! (-> arg5 init-pos w) 910.2222) - (set! (-> arg5 init-pos w) (* 182.04445 (+ 5.0 (* 263.0 (- 1.0 arg1))))) - ) - ) - ((= v1-1 1) - (if (< 0.6666667 arg1) - (set! (-> arg5 init-pos w) 17294.223) - (set! (-> arg5 init-pos w) (* 182.04445 (+ 95.0 (* 173.0 (- 1.0 (* 1.5 arg1)))))) - ) - ) - ((= v1-1 2) - (if (< 0.33333334 arg1) - (set! (-> arg5 init-pos w) 33678.223) - (set! (-> arg5 init-pos w) (* 182.04445 (+ 185.0 (* 83.0 (- 1.0 (* 3.0 arg1)))))) - ) - ) - ) - ) - ) - ) + (let ((v1-1 arg0)) + (cond + ((zero? v1-1) + (if (< 1.0 arg1) + (set! (-> arg5 vector 1 z) 910.2222) + (set! (-> arg5 vector 1 z) (* 182.04445 (+ 5.0 (* 263.0 (- 1.0 arg1))))))) + ((= v1-1 1) + (if (< 0.6666667 arg1) + (set! (-> arg5 vector 1 z) 17294.223) + (set! (-> arg5 vector 1 z) (* 182.04445 (+ 95.0 (* 173.0 (- 1.0 (* 1.5 arg1)))))))) + ((= v1-1 2) + (if (< 0.33333334 arg1) + (set! (-> arg5 vector 1 z) 33678.223) + (set! (-> arg5 vector 1 z) (* 182.04445 (+ 185.0 (* 83.0 (- 1.0 (* 3.0 arg1)))))))))))) ;; low eco flashing ;; og:preserve-this modified to support high fps - (if (and (< 0.0 arg1) (and (< arg1 0.2) (zero? (logand (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 4)))) - (set! arg3 (* arg3 2)) - ) - (set! (-> arg5 pos y) (the float arg2)) - (set! (-> arg5 pos z) (the float arg3)) - (set! (-> arg5 pos w) (the float arg4)) + (if (and (< 0.0 arg1) + (and (< arg1 0.2) (zero? (logand (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 4)))) + (set! arg3 (* arg3 2))) + (set! (-> arg5 vector 2 x) (the float arg2)) + (set! (-> arg5 vector 2 y) (the float arg3)) + (set! (-> arg5 vector 2 z) (the float arg4)) 0 - (none) - ) - -(defun part-hud-eco-timer-01-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-2 - (/ (the float - (the-as uint (- (-> *target* fact eco-timeout) - (the-as uint (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time))) - ) - ) - ) - (the float (the-as uint (-> *FACT-bank* eco-full-timeout))) - ) - ) + (none)) + +(defun part-hud-eco-timer-01-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-2 (/ (the float + (the-as uint + (- (-> *target* fact eco-timeout) + (the-as uint (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time)))))) + (the float (the-as uint (-> *FACT-bank* eco-full-timeout))))) (a2-1 0) (a3-0 64) - (t0-0 128) - ) + (t0-0 128)) (case (-> *target* fact eco-type) - (((pickup-type eco-yellow)) - (set! a2-1 128) - (set! a3-0 96) - (set! t0-0 0) - ) - (((pickup-type eco-red)) - (set! a2-1 128) - (set! a3-0 32) - (set! t0-0 0) - ) - (((pickup-type eco-green)) - (set! a2-1 0) - (set! a3-0 128) - (set! t0-0 32) - ) - ) - (calculate-rotation-and-color-for-slice 0 f0-2 a2-1 a3-0 t0-0 arg2) - ) - (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) - (set! (-> arg2 init-pos x) f0-3) - (set! (-> arg2 pos x) f0-3) - ) + (((pickup-type eco-yellow)) (set! a2-1 128) (set! a3-0 96) (set! t0-0 0)) + (((pickup-type eco-red)) (set! a2-1 128) (set! a3-0 32) (set! t0-0 0)) + (((pickup-type eco-green)) (set! a2-1 0) (set! a3-0 128) (set! t0-0 32))) + (calculate-rotation-and-color-for-slice 0 f0-2 a2-1 a3-0 t0-0 arg2)) + (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) (set! (-> arg2 vector 0 w) f0-3) (set! (-> arg2 vector 1 w) f0-3)) 0 - (none) - ) - -(defun part-hud-eco-timer-02-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-2 - (/ (the float - (the-as uint (- (-> *target* fact eco-timeout) - (the-as uint (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time))) - ) - ) - ) - (the float (the-as uint (-> *FACT-bank* eco-full-timeout))) - ) - ) + (none)) + +(defun part-hud-eco-timer-02-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-2 (/ (the float + (the-as uint + (- (-> *target* fact eco-timeout) + (the-as uint (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time)))))) + (the float (the-as uint (-> *FACT-bank* eco-full-timeout))))) (a2-1 0) (a3-0 64) - (t0-0 128) - ) + (t0-0 128)) (case (-> *target* fact eco-type) - (((pickup-type eco-yellow)) - (set! a2-1 128) - (set! a3-0 96) - (set! t0-0 0) - ) - (((pickup-type eco-red)) - (set! a2-1 128) - (set! a3-0 32) - (set! t0-0 0) - ) - (((pickup-type eco-green)) - (set! a2-1 0) - (set! a3-0 128) - (set! t0-0 32) - ) - ) - (calculate-rotation-and-color-for-slice 1 f0-2 a2-1 a3-0 t0-0 arg2) - ) - (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) - (set! (-> arg2 init-pos x) f0-3) - (set! (-> arg2 pos x) f0-3) - ) + (((pickup-type eco-yellow)) (set! a2-1 128) (set! a3-0 96) (set! t0-0 0)) + (((pickup-type eco-red)) (set! a2-1 128) (set! a3-0 32) (set! t0-0 0)) + (((pickup-type eco-green)) (set! a2-1 0) (set! a3-0 128) (set! t0-0 32))) + (calculate-rotation-and-color-for-slice 1 f0-2 a2-1 a3-0 t0-0 arg2)) + (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) (set! (-> arg2 vector 0 w) f0-3) (set! (-> arg2 vector 1 w) f0-3)) 0 - (none) - ) - -(defun part-hud-eco-timer-03-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-2 - (/ (the float - (the-as uint (- (-> *target* fact eco-timeout) - (the-as uint (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time))) - ) - ) - ) - (the float (the-as uint (-> *FACT-bank* eco-full-timeout))) - ) - ) + (none)) + +(defun part-hud-eco-timer-03-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-2 (/ (the float + (the-as uint + (- (-> *target* fact eco-timeout) + (the-as uint (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time)))))) + (the float (the-as uint (-> *FACT-bank* eco-full-timeout))))) (a2-1 0) (a3-0 64) - (t0-0 128) - ) + (t0-0 128)) (case (-> *target* fact eco-type) - (((pickup-type eco-yellow)) - (set! a2-1 128) - (set! a3-0 96) - (set! t0-0 0) - ) - (((pickup-type eco-red)) - (set! a2-1 128) - (set! a3-0 32) - (set! t0-0 0) - ) - (((pickup-type eco-green)) - (set! a2-1 0) - (set! a3-0 128) - (set! t0-0 32) - ) - ) - (calculate-rotation-and-color-for-slice 2 f0-2 a2-1 a3-0 t0-0 arg2) - ) - (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) - (set! (-> arg2 init-pos x) f0-3) - (set! (-> arg2 pos x) f0-3) - ) + (((pickup-type eco-yellow)) (set! a2-1 128) (set! a3-0 96) (set! t0-0 0)) + (((pickup-type eco-red)) (set! a2-1 128) (set! a3-0 32) (set! t0-0 0)) + (((pickup-type eco-green)) (set! a2-1 0) (set! a3-0 128) (set! t0-0 32))) + (calculate-rotation-and-color-for-slice 2 f0-2 a2-1 a3-0 t0-0 arg2)) + (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) (set! (-> arg2 vector 0 w) f0-3) (set! (-> arg2 vector 1 w) f0-3)) 0 - (none) - ) - -(defun part-hud-eco-timer-backing-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-0 (-> *hud-parts* power 0 scale-backing))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) - ) + (none)) + +(defun part-hud-eco-timer-backing-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-0 (-> *hud-parts* power 0 scale-backing))) (set! (-> arg2 vector 0 w) f0-0) (set! (-> arg2 vector 1 w) f0-0)) 0 - (none) - ) - -(defun part-hud-eco-timer-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) - (let ((f0-0 (-> *hud-parts* power 0 scale-timer))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) - ) + (none)) + +(defun part-hud-eco-timer-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) + (let ((f0-0 (-> *hud-parts* power 0 scale-timer))) (set! (-> arg2 vector 0 w) f0-0) (set! (-> arg2 vector 1 w) f0-0)) 0 - (none) - ) + (none)) (defmethod hud-update ((this hud-power)) (if *target* - (tally-value - this - (max - 0 - (min - (the-as int (- (-> *target* fact eco-timeout) - (the-as uint (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time))) - ) - ) - (the-as int (-> *target* fact eco-timeout)) - ) - ) - (the-as int (-> *target* fact eco-timeout)) - ) - ) + (tally-value this + (max 0 + (min (the-as int + (- (-> *target* fact eco-timeout) + (the-as uint (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time))))) + (the-as int (-> *target* fact eco-timeout)))) + (the-as int (-> *target* fact eco-timeout)))) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-power) (arg0 int)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) @@ -1863,10 +1360,8 @@ (set! (-> this particles s5-0 init-pos x) 435.0) (set! (-> this particles s5-0 init-pos y) 370.0) (set! (-> this particles s5-0 init-pos z) 10.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-1 (-> this nb-of-particles))) (set! (-> this particles s5-1) (new 'static 'hud-particle)) @@ -1874,10 +1369,8 @@ (set! (-> this particles s5-1 init-pos x) 432.0) (set! (-> this particles s5-1 init-pos y) 368.0) (set! (-> this particles s5-1 init-pos z) 3.0) - (set! (-> this particles s5-1 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-1 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-2 (-> this nb-of-particles))) (set! (-> this particles s5-2) (new 'static 'hud-particle)) @@ -1885,55 +1378,33 @@ (set! (-> this particles s5-2 init-pos x) 435.0) (set! (-> this particles s5-2 init-pos y) 370.0) (set! (-> this particles s5-2 init-pos z) 2.0) - (set! (-> this particles s5-2 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-2 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-3 (-> this nb-of-particles)) - (if (= (-> this particles s5-3 part matrix) -1) - (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-3 part matrix) -1) (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)))) (set-pos-and-scale this (= (get-aspect-ratio) 'aspect16x9) (= (get-video-mode) 'pal)) (set! (-> this x-sgn) 1) (set! (-> this y-sgn) 1) 0 - (none) - ) + (none)) (defmethod set-pos-and-scale ((this hud-power) (arg0 symbol) (arg1 symbol)) (cond - (arg0 - (set! (-> this scale-blue) 7168.0) - (set! (-> this scale-timer) 11468.8) - (set! (-> this scale-backing) 8960.0) - ) - (else - (set! (-> this scale-blue) 8192.0) - (set! (-> this scale-timer) 13107.2) - (set! (-> this scale-backing) 10240.0) - ) - ) + (arg0 (set! (-> this scale-blue) 7168.0) (set! (-> this scale-timer) 11468.8) (set! (-> this scale-backing) 8960.0)) + (else (set! (-> this scale-blue) 8192.0) (set! (-> this scale-timer) 13107.2) (set! (-> this scale-backing) 10240.0))) ;; og:preserve-this (#when PC_PORT - (let ((base-x (-> this particles 2 init-pos x))) - (+! base-x (* (- 512.0 base-x) (- 1.0 (-> *pc-settings* aspect-ratio-reciprocal)))) - (set! (-> this particles 0 init-pos x) 435.0) - (set! (-> this particles 1 init-pos x) 432.0) - (set! (-> this particles 2 init-pos x) 435.0) - - (when (not (-> *pc-settings* use-vis?)) - (dotimes (i (-> this nb-of-particles)) - (set! (-> this particles i init-pos x) (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))) - - )) - - ) - ) + (+! base-x (* (- 512.0 base-x) (- 1.0 (-> *pc-settings* aspect-ratio-reciprocal)))) + (set! (-> this particles 0 init-pos x) 435.0) + (set! (-> this particles 1 init-pos x) 432.0) + (set! (-> this particles 2 init-pos x) 435.0) + (when (not (-> *pc-settings* use-vis?)) + (dotimes (i (-> this nb-of-particles)) + (set! (-> this particles i init-pos x) + (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))))))) 0 - (none) - ) + (none)) (defun activate-hud ((arg0 process)) (set! (-> *hud-parts* pickups) (process-spawn hud-pickups :init hud-init-by-other 0 :to arg0)) @@ -1946,150 +1417,88 @@ (set! (-> *hud-parts* bike-heat) (the-as (pointer hud-bike-heat) #f)) (set! (-> *hud-parts* money-all) (the-as (pointer hud-money-all) #f)) 0 - (none) - ) + (none)) (defun hide-hud () (when *target* (dotimes (gp-0 9) - (if (-> *hud-parts* parts gp-0) - (send-event (ppointer->process (-> *hud-parts* parts gp-0)) 'hide) - ) - ) - ) + (if (-> *hud-parts* parts gp-0) (send-event (ppointer->process (-> *hud-parts* parts gp-0)) 'hide)))) 0 - (none) - ) + (none)) (defun hide-bottom-hud () (when *target* (dotimes (gp-0 4) - (if (-> *hud-parts* parts (+ gp-0 4)) - (send-event (ppointer->process (-> *hud-parts* parts (+ gp-0 4))) 'hide) - ) - ) - ) + (if (-> *hud-parts* parts (+ gp-0 4)) (send-event (ppointer->process (-> *hud-parts* parts (+ gp-0 4))) 'hide)))) 0 - (none) - ) + (none)) (defun disable-hud ((arg0 int)) (when *target* (dotimes (s5-0 9) (when (-> *hud-parts* parts s5-0) - (if (or (!= (-> *hud-parts* parts s5-0) arg0) - (zero? (-> (the-as (pointer hud) (-> *hud-parts* parts s5-0)) 0 value)) - ) - (send-event (ppointer->process (-> *hud-parts* parts s5-0)) 'hide) - ) - (if (!= (-> *hud-parts* parts s5-0) arg0) - (send-event (ppointer->process (-> *hud-parts* parts s5-0)) 'disable) - ) - ) - ) - ) + (if (or (!= (-> *hud-parts* parts s5-0) arg0) (zero? (-> (the-as (pointer hud) (-> *hud-parts* parts s5-0)) 0 value))) + (send-event (ppointer->process (-> *hud-parts* parts s5-0)) 'hide)) + (if (!= (-> *hud-parts* parts s5-0) arg0) (send-event (ppointer->process (-> *hud-parts* parts s5-0)) 'disable))))) 0 - (none) - ) + (none)) (defun enable-hud () (when *target* (dotimes (gp-0 9) - (if (-> *hud-parts* parts gp-0) - (send-event (ppointer->process (-> *hud-parts* parts gp-0)) 'enable) - ) - ) - ) + (if (-> *hud-parts* parts gp-0) (send-event (ppointer->process (-> *hud-parts* parts gp-0)) 'enable)))) 0 - (none) - ) + (none)) (defun hide-hud-quick () (when *target* (dotimes (gp-0 9) - (if (-> *hud-parts* parts gp-0) - (send-event (ppointer->process (-> *hud-parts* parts gp-0)) 'hide-quick) - ) - ) - ) + (if (-> *hud-parts* parts gp-0) (send-event (ppointer->process (-> *hud-parts* parts gp-0)) 'hide-quick)))) 0 - (none) - ) + (none)) (defun show-hud () (when (and *target* (or (not *progress-process*) (hidden? (-> *progress-process* 0)))) (dotimes (gp-0 9) - (if (-> *hud-parts* parts gp-0) - (send-event (ppointer->process (-> *hud-parts* parts gp-0)) 'show) - ) - ) - ) + (if (-> *hud-parts* parts gp-0) (send-event (ppointer->process (-> *hud-parts* parts gp-0)) 'show)))) 0 - (none) - ) + (none)) (defun set-hud-aspect-ratio ((arg0 symbol) (arg1 symbol)) (let ((gp-0 (= arg0 'aspect16x9)) - (s5-0 (= arg1 'pal)) - ) + (s5-0 (= arg1 'pal))) (when *target* (dotimes (s4-0 9) - (if (-> *hud-parts* parts s4-0) - (set-pos-and-scale (-> (the-as (pointer hud) (-> *hud-parts* parts s4-0)) 0) gp-0 s5-0) - ) - ) - ) - ) + (if (-> *hud-parts* parts s4-0) (set-pos-and-scale (-> (the-as (pointer hud) (-> *hud-parts* parts s4-0)) 0) gp-0 s5-0))))) 0 - (none) - ) + (none)) (defun hud-hidden? () (local-vars (gp-0 symbol)) (cond (*target* - (set! gp-0 #t) - (dotimes (s5-0 9) - (when (-> *hud-parts* parts s5-0) - (if (not (hidden? (-> (the-as (pointer hud) (-> *hud-parts* parts s5-0)) 0))) - (set! gp-0 #f) - ) - ) - ) - ) - (else - (set! gp-0 #t) - ) - ) - gp-0 - ) + (set! gp-0 #t) + (dotimes (s5-0 9) + (when (-> *hud-parts* parts s5-0) + (if (not (hidden? (-> (the-as (pointer hud) (-> *hud-parts* parts s5-0)) 0))) (set! gp-0 #f))))) + (else (set! gp-0 #t))) + gp-0) (defun bottom-hud-hidden? () (local-vars (gp-0 symbol)) (cond (*target* - (set! gp-0 #t) - (dotimes (s5-0 4) - (when (-> *hud-parts* parts (+ s5-0 4)) - (if (not (hidden? (-> (the-as (pointer hud) (-> *hud-parts* parts (+ s5-0 4))) 0))) - (set! gp-0 #f) - ) - ) - ) - ) - (else - (set! gp-0 #t) - ) - ) - gp-0 - ) + (set! gp-0 #t) + (dotimes (s5-0 4) + (when (-> *hud-parts* parts (+ s5-0 4)) + (if (not (hidden? (-> (the-as (pointer hud) (-> *hud-parts* parts (+ s5-0 4))) 0))) (set! gp-0 #f))))) + (else (set! gp-0 #t))) + gp-0) (defun activate-orb-all ((arg0 int)) (if (not (-> *hud-parts* money-all)) - (set! (-> *hud-parts* money-all) (process-spawn hud-money-all :init hud-init-by-other arg0 :to *target*)) - ) - 0 - ) + (set! (-> *hud-parts* money-all) (process-spawn hud-money-all :init hud-init-by-other arg0 :to *target*))) + 0) (defbehavior convert-to-hud-object process-drawable ((arg0 process-drawable) (arg1 hud)) (when arg1 @@ -2097,14 +1506,11 @@ (let ((s4-0 (new 'stack-no-clear 'vector))) (transform-point-vector-scale! s4-0 (-> arg0 root trans)) (set! (-> arg0 root trans x) (+ -2048.0 (-> s4-0 x))) - (set! (-> arg0 root trans y) (* 2.0 (+ -2048.0 (-> s4-0 y)))) - ) + (set! (-> arg0 root trans y) (* 2.0 (+ -2048.0 (-> s4-0 y))))) (set! (-> arg0 root trans z) 9999999.0) (set! (-> arg0 root trans w) 1.0) (set-vector! (-> arg0 root scale) (get-icon-scale-x arg1) (get-icon-scale-y arg1) (get-icon-scale-x arg1) 1.0) (set! (-> arg0 draw dma-add-func) dma-add-process-drawable-hud) - (go hud-collecting (process->handle arg1)) - ) + (go hud-collecting (process->handle arg1))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/ui/hud-h.gc b/goal_src/jak1/engine/ui/hud-h.gc index 61e28a7049..bf8e246c88 100644 --- a/goal_src/jak1/engine/ui/hud-h.gc +++ b/goal_src/jak1/engine/ui/hud-h.gc @@ -1,147 +1,139 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") - -;; name: hud-h.gc -;; name in dgo: hud-h -;; dgos: GAME, ENGINE - (define-extern activate-hud (function process none)) + (define-extern activate-orb-all (function int int)) + (define-extern hide-hud (function none)) + (define-extern hide-hud-quick (function none)) + (define-extern hide-bottom-hud (function none)) + (define-extern hud-hidden? (function symbol)) + (define-extern bottom-hud-hidden? (function symbol)) + (define-extern enable-hud (function none)) + (define-extern disable-hud (function int none)) (declare-type hud process) + (declare-type hud-pickups hud) + (declare-type hud-money hud) + (declare-type hud-fuel-cell hud) + (declare-type hud-health hud) + (declare-type hud-buzzers hud) + (declare-type hud-power hud) + (declare-type hud-bike-speed hud) + (declare-type hud-bike-heat hud) + (declare-type hud-money-all hud) ;; DECOMP BEGINS (deftype hud-icon (basic) - ((icon (pointer manipy)) - (icon-y int32) - (icon-x int32) - (icon-z int32) - (scale-x float) - (scale-y float) - ) - ) - + ((icon (pointer manipy)) + (icon-y int32) + (icon-x int32) + (icon-z int32) + (scale-x float) + (scale-y float))) (deftype hud-particle (basic) - ((part sparticle-launch-control) - (init-pos vector :inline) - (pos vector :inline) - (prev-pos vector :inline) - ) - ) - + ((part sparticle-launch-control) + (init-pos vector :inline) + (pos vector :inline) + (prev-pos vector :inline))) (deftype hud (process) - ((value int32) - (value2 int32) - (target-value int32) - (last-increment-time time-frame) - (last-target-equal-time time-frame) - (offset int32) - (y-offset int32) - (next-y-offset int32) - (x-sgn int32) - (y-sgn int32) - (text-x int32) - (text-y int32) - (friend int32) - (first-init symbol) - (increment-on-event symbol) - (skip-particle int32) - (disable symbol) - (force-on-screen symbol) - (deactivate-when-hidden symbol) - (trigger-time time-frame) - (last-hide-time time-frame) - (nb-of-icons int32) - (icons hud-icon 6) - (max-nb-of-particles int32) - (nb-of-particles int32) - (particles hud-particle 7) - ) + ((value int32) + (value2 int32) + (target-value int32) + (last-increment-time time-frame) + (last-target-equal-time time-frame) + (offset int32) + (y-offset int32) + (next-y-offset int32) + (x-sgn int32) + (y-sgn int32) + (text-x int32) + (text-y int32) + (friend int32) + (first-init symbol) + (increment-on-event symbol) + (skip-particle int32) + (disable symbol) + (force-on-screen symbol) + (deactivate-when-hidden symbol) + (trigger-time time-frame) + (last-hide-time time-frame) + (nb-of-icons int32) + (icons hud-icon 6) + (max-nb-of-particles int32) + (nb-of-particles int32) + (particles hud-particle 7)) (:methods - (hidden? (_type_) symbol) - (draw-hud (_type_) none) - (tally-value (_type_ int int) none) - (draw-icons (_type_) none) - (draw-particles (_type_) none) - (hud-update (_type_) none) - (init-particles! (_type_ int) none) - (get-icon-pos-x (_type_) int) - (get-icon-pos-y (_type_) int) - (hud-method-23 (_type_) none) - (set-pos-and-scale (_type_ symbol symbol) none) - (get-icon-scale-x (_type_) float) - (get-icon-scale-y (_type_) float) - ) + (hidden? (_type_) symbol) + (draw-hud (_type_) none) + (tally-value (_type_ int int) none) + (draw-icons (_type_) none) + (draw-particles (_type_) none) + (hud-update (_type_) none) + (init-particles! (_type_ int) none) + (get-icon-pos-x (_type_) int) + (get-icon-pos-y (_type_) int) + (hud-method-23 (_type_) none) + (set-pos-and-scale (_type_ symbol symbol) none) + (get-icon-scale-x (_type_) float) + (get-icon-scale-y (_type_) float)) (:states - hud-arriving - hud-hidden - hud-in - (hud-leaving int) - ) - ) - + hud-arriving + hud-hidden + hud-in + (hud-leaving int))) (deftype hud-parts (structure) - ((pickups (pointer hud-pickups)) - (money (pointer hud-money)) - (fuel-cell (pointer hud-fuel-cell)) - (health (pointer hud-health)) - (buzzers (pointer hud-buzzers)) - (power (pointer hud-power)) - (bike-speed (pointer hud-bike-speed)) - (bike-heat (pointer hud-bike-heat)) - (money-all (pointer hud-money-all)) - (parts (pointer hud) 9 :overlay-at pickups) - ) - ) - - -(define *hud-parts* (new 'static 'hud-parts - :pickups #f - :money #f - :fuel-cell #f - :health #f - :buzzers #f - :power #f - :bike-speed #f - :bike-heat #f - :money-all #f - ) - ) + ((pickups (pointer hud-pickups)) + (money (pointer hud-money)) + (fuel-cell (pointer hud-fuel-cell)) + (health (pointer hud-health)) + (buzzers (pointer hud-buzzers)) + (power (pointer hud-power)) + (bike-speed (pointer hud-bike-speed)) + (bike-heat (pointer hud-bike-heat)) + (money-all (pointer hud-money-all)) + (parts (pointer hud) 9 :overlay-at pickups))) + +(define *hud-parts* + (new 'static + 'hud-parts + :pickups #f + :money #f + :fuel-cell #f + :health #f + :buzzers #f + :power #f + :bike-speed #f + :bike-heat #f + :money-all #f)) ;; added for pc port (defenum hud-collectable-view (original) (game-totals) - (level-totals) - ) + (level-totals)) (define *hud-collectable-view* (hud-collectable-view original)) 0 - - - - diff --git a/goal_src/jak1/engine/ui/hud.gc b/goal_src/jak1/engine/ui/hud.gc index b58f5123c6..45396a35c0 100644 --- a/goal_src/jak1/engine/ui/hud.gc +++ b/goal_src/jak1/engine/ui/hud.gc @@ -1,411 +1,244 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/common-obs/collectables.gc") -;; name: hud.gc -;; name in dgo: hud -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod relocate ((this hud) (arg0 int)) (dotimes (v1-0 (-> this nb-of-particles)) - (if (nonzero? (-> this particles v1-0 part)) - (&+! (-> this particles v1-0 part) arg0) - ) - ) - (the-as hud ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this particles v1-0 part)) (&+! (-> this particles v1-0 part) arg0))) + (the-as hud ((method-of-type process relocate) this arg0))) (defmethod deactivate ((this hud)) (dotimes (v1-0 9) (if (and (-> *hud-parts* parts v1-0) (= (ppointer->process (-> *hud-parts* parts v1-0)) this)) - (set! (-> *hud-parts* parts v1-0) (the-as (pointer hud) #f)) - ) - ) + (set! (-> *hud-parts* parts v1-0) (the-as (pointer hud) #f)))) (dotimes (s5-0 (-> this nb-of-particles)) (kill-and-free-particles (-> this particles s5-0 part)) - (set! (-> this particles s5-0 part matrix) -1) - ) + (set! (-> this particles s5-0 part matrix) -1)) ((method-of-type process deactivate) this) - (none) - ) + (none)) (defmethod draw-hud ((this hud)) (when (and (not (hidden? this)) (not (paused?))) (dotimes (s5-0 (-> this nb-of-particles)) (when (!= s5-0 (-> this skip-particle)) (if (or (!= (-> this particles 0 pos x) 0.0) (!= (-> this particles 0 pos y) 0.0)) - (spawn (-> this particles s5-0 part) *null-vector*) - ) - ) - ) - ) + (spawn (-> this particles s5-0 part) *null-vector*))))) 0 - (none) - ) + (none)) (defmethod tally-value ((this hud) (arg0 int) (arg1 int)) - (if (= arg0 (-> this target-value)) - (set-time! (-> this last-target-equal-time)) - ) + (if (= arg0 (-> this target-value)) (set-time! (-> this last-target-equal-time))) (when (and (not *progress-process*) (and (!= (-> this last-hide-time) (current-time)) (not (movie?)) (time-elapsed? (-> *game-info* letterbox-time) (seconds 0.1)) (time-elapsed? (-> *game-info* blackout-time) (seconds 0.1)) - (not (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed)))) - ) - ) + (not (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed)))))) (when (or (!= (-> this value) arg0) (!= (-> this value2) arg1) (-> this force-on-screen) - (or (and (cpad-hold? 0 l2) (not (-> this disable))) - (and (not *cheat-mode*) (cpad-hold? 0 r2)) - (-> this first-init) - ) - ) + (or (and (cpad-hold? 0 l2) (not (-> this disable))) (and (not *cheat-mode*) (cpad-hold? 0 r2)) (-> this first-init))) ;; modified for pc port (cond - ((cpad-hold? 0 up) - (set! *hud-collectable-view* (hud-collectable-view game-totals)) - ) - ((cpad-hold? 0 down) - (set! *hud-collectable-view* (hud-collectable-view level-totals)) - ) - ((or (cpad-hold? 0 left) (cpad-hold? 0 right)) - (set! *hud-collectable-view* (hud-collectable-view original)) - ) - ) + ((cpad-hold? 0 up) (set! *hud-collectable-view* (hud-collectable-view game-totals))) + ((cpad-hold? 0 down) (set! *hud-collectable-view* (hud-collectable-view level-totals))) + ((or (cpad-hold? 0 left) (cpad-hold? 0 right)) (set! *hud-collectable-view* (hud-collectable-view original)))) (cond ((and (-> this increment-on-event) (< (-> this value) arg0) (not (-> this first-init)) - (not (time-elapsed? (-> this last-target-equal-time) (seconds 1.5))) - ) + (not (time-elapsed? (-> this last-target-equal-time) (seconds 1.5)))) (when (and (!= (-> this value) (-> this target-value)) (time-elapsed? (-> this last-increment-time) (seconds 0.1))) (sound-play "cursor-options") (+! (-> this value) 1) - (set-time! (-> this last-increment-time)) - ) - ) + (set-time! (-> this last-increment-time)))) (else - (if (not (and (not (-> this first-init)) (time-elapsed? (-> this last-target-equal-time) (seconds 1.5)))) - (set! (-> this value) arg0) - ) - (set! (-> this target-value) arg0) - (set-time! (-> this last-target-equal-time)) - ) - ) + (if (not (and (not (-> this first-init)) (time-elapsed? (-> this last-target-equal-time) (seconds 1.5)))) + (set! (-> this value) arg0)) + (set! (-> this target-value) arg0) + (set-time! (-> this last-target-equal-time)))) (set! (-> this value2) arg1) (when (and (not (movie?)) (= *master-mode* 'game) (not (-> this first-init)) (not (-> this disable))) - (if (>= (-> this friend) 0) - (send-event (ppointer->process (-> *hud-parts* parts (-> this friend))) 'show) - ) - (go hud-arriving) - ) + (if (>= (-> this friend) 0) (send-event (ppointer->process (-> *hud-parts* parts (-> this friend))) 'show)) + (go hud-arriving)) (set-time! (-> this trigger-time)) - (set! (-> this first-init) #f) - ) - ) + (set! (-> this first-init) #f))) 0 - (none) - ) + (none)) (defmethod draw-icons ((this hud)) (dotimes (v1-0 (-> this nb-of-icons)) - (set-vector! - (-> this icons v1-0 icon 0 root scale) - (* (-> this icons v1-0 scale-x) (-> *video-parms* relative-x-scale)) - (* (-> this icons v1-0 scale-y) (-> *video-parms* relative-y-scale)) - (* (-> this icons v1-0 scale-x) (-> *video-parms* relative-x-scale)) - 1.0 - ) + (set-vector! (-> this icons v1-0 icon 0 root scale) + (* (-> this icons v1-0 scale-x) (-> *video-parms* relative-x-scale)) + (* (-> this icons v1-0 scale-y) (-> *video-parms* relative-y-scale)) + (* (-> this icons v1-0 scale-x) (-> *video-parms* relative-x-scale)) + 1.0) (set! (-> this icons v1-0 icon 0 root trans x) - (the float (+ (-> this icons v1-0 icon-x) -256 (* (-> this x-sgn) (-> this offset)))) - ) + (the float (+ (-> this icons v1-0 icon-x) -256 (* (-> this x-sgn) (-> this offset))))) (set! (-> this icons v1-0 icon 0 root trans y) (- (+ (the float (-> this icons v1-0 icon-y)) (* (the float (-> this y-sgn)) (the float (-> this offset)) (-> *video-parms* relative-y-scale) - (-> *video-parms* relative-y-scale) - ) - (* (the float (-> this y-offset)) (-> *video-parms* relative-x-scale-reciprical)) - ) - (the float (-> *video-parms* screen-sy)) - ) - ) - ) + (-> *video-parms* relative-y-scale)) + (* (the float (-> this y-offset)) (-> *video-parms* relative-x-scale-reciprical))) + (the float (-> *video-parms* screen-sy))))) 0 - (none) - ) + (none)) (defmethod draw-particles ((this hud)) (dotimes (s5-0 (-> this nb-of-particles)) (when (!= (-> this skip-particle) -2) (set! (-> this particles s5-0 pos x) - (+ -256.0 (the float (* (-> this x-sgn) (-> this offset))) (-> this particles s5-0 init-pos x)) - ) + (+ -256.0 (the float (* (-> this x-sgn) (-> this offset))) (-> this particles s5-0 init-pos x))) (set! (-> this particles s5-0 pos y) - (* 0.5 (- (* (-> *video-parms* relative-y-scale) - (+ (-> this particles s5-0 init-pos y) - (the float (* (-> this y-sgn) (-> this offset))) - ;; og:preserve-this - (#if PC_PORT - (if (not (-> *pc-settings* use-vis?)) - (* (the float (-> this y-offset)) (-> *video-parms* relative-y-scale)) - (* (the float (-> this y-offset)) (-> *video-parms* relative-x-scale-reciprical)) - ) - (* (the float (-> this y-offset)) (-> *video-parms* relative-x-scale-reciprical)) - ) - ) - ) - (the float (-> *video-parms* screen-sy)) - ) - ) - ) - (set! (-> this particles s5-0 pos z) (-> this particles s5-0 init-pos z)) - ) + (* 0.5 + (- (* (-> *video-parms* relative-y-scale) + (+ (-> this particles s5-0 init-pos y) + (the float (* (-> this y-sgn) (-> this offset))) + ;; og:preserve-this + (#if PC_PORT + (if (not (-> *pc-settings* use-vis?)) + (* (the float (-> this y-offset)) (-> *video-parms* relative-y-scale)) + (* (the float (-> this y-offset)) (-> *video-parms* relative-x-scale-reciprical))) + (* (the float (-> this y-offset)) (-> *video-parms* relative-x-scale-reciprical))))) + (the float (-> *video-parms* screen-sy))))) + (set! (-> this particles s5-0 pos z) (-> this particles s5-0 init-pos z))) (if (> (-> this particles s5-0 part matrix) 0) - (set-vector! - (sprite-get-user-hvdf (-> this particles s5-0 part matrix)) - (the float (+ (the int (-> this particles s5-0 pos x)) 2048)) - (the float (+ (the int (-> this particles s5-0 pos y)) 2048)) - (- (-> *math-camera* hvdf-off z) (* 1024.0 (-> this particles s5-0 pos z))) - (-> *math-camera* hvdf-off w) - ) - ) - ) + (set-vector! (sprite-get-user-hvdf (-> this particles s5-0 part matrix)) + (the float (+ (the int (-> this particles s5-0 pos x)) 2048)) + (the float (+ (the int (-> this particles s5-0 pos y)) 2048)) + (- (-> *math-camera* hvdf-off z) (* 1024.0 (-> this particles s5-0 pos z))) + (-> *math-camera* hvdf-off w)))) 0 - (none) - ) + (none)) (defmethod hud-update ((this hud)) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud) (arg0 int)) 0 - (none) - ) + (none)) (defmethod get-icon-pos-x ((this hud)) - 0 - ) + 0) (defmethod get-icon-pos-y ((this hud)) - 0 - ) + 0) (defmethod get-icon-scale-x ((this hud)) - 0.0 - ) + 0.0) (defmethod get-icon-scale-y ((this hud)) - 0.0 - ) + 0.0) (defmethod set-pos-and-scale ((this hud) (arg0 symbol) (arg1 symbol)) 0 - (none) - ) + (none)) (defmethod hidden? ((this hud)) - (= (-> this next-state name) 'hud-hidden) - ) + (= (-> this next-state name) 'hud-hidden)) (defstate hud-hidden (hud) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('show) - (if (and (not *progress-process*) (!= (-> self last-hide-time) (current-time))) - (go hud-arriving) - ) - ) - (('hide) - (set! v0-0 (current-time)) - (set! (-> self last-hide-time) (the-as time-frame v0-0)) - v0-0 - ) - (('hide-quick) - (set! v0-0 (current-time)) - (set! (-> self last-hide-time) (the-as time-frame v0-0)) - v0-0 - ) - (('increment) - (set! v0-0 (+ (-> self target-value) 1)) - (set! (-> self target-value) (the-as int v0-0)) - v0-0 - ) - (('sync) - (set! v0-0 #t) - (set! (-> self first-init) (the-as symbol v0-0)) - v0-0 - ) - (('disable) - (set! v0-0 #t) - (set! (-> self disable) (the-as symbol v0-0)) - v0-0 - ) - (('enable) - (set! (-> self disable) #f) - #f - ) - ) - ) - :enter (behavior () - (set! (-> self offset) 128) - (draw-icons self) - (draw-particles self) - (let ((gp-0 (-> self child))) - (while gp-0 - (send-event (ppointer->process gp-0) 'draw #f) - (set! gp-0 (-> gp-0 0 brother)) - ) - ) - (dotimes (gp-1 (-> self nb-of-particles)) - (kill-and-free-particles (-> self particles gp-1 part)) - (set! (-> self particles gp-1 part matrix) -1) - ) - ) - :exit (behavior () - (set! (-> self y-offset) (-> self next-y-offset)) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (loop - (suspend) - ) - ) - :post (behavior () - (if (-> self deactivate-when-hidden) - (deactivate self) - ) - (hud-update self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('show) (if (and (not *progress-process*) (!= (-> self last-hide-time) (current-time))) (go hud-arriving))) + (('hide) (set! v0-0 (current-time)) (set! (-> self last-hide-time) (the-as time-frame v0-0)) v0-0) + (('hide-quick) (set! v0-0 (current-time)) (set! (-> self last-hide-time) (the-as time-frame v0-0)) v0-0) + (('increment) (set! v0-0 (+ (-> self target-value) 1)) (set! (-> self target-value) (the-as int v0-0)) v0-0) + (('sync) (set! v0-0 #t) (set! (-> self first-init) (the-as symbol v0-0)) v0-0) + (('disable) (set! v0-0 #t) (set! (-> self disable) (the-as symbol v0-0)) v0-0) + (('enable) (set! (-> self disable) #f) #f))) + :enter + (behavior () + (set! (-> self offset) 128) + (draw-icons self) + (draw-particles self) + (let ((gp-0 (-> self child))) + (while gp-0 + (send-event (ppointer->process gp-0) 'draw #f) + (set! gp-0 (-> gp-0 0 brother)))) + (dotimes (gp-1 (-> self nb-of-particles)) + (kill-and-free-particles (-> self particles gp-1 part)) + (set! (-> self particles gp-1 part matrix) -1))) + :exit + (behavior () + (set! (-> self y-offset) (-> self next-y-offset))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (loop + (suspend))) + :post + (behavior () + (if (-> self deactivate-when-hidden) (deactivate self)) + (hud-update self))) (defstate hud-arriving (hud) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-3 object)) - (case message - (('hide-quick) - (set-time! (-> self last-hide-time)) - (set! (-> self force-on-screen) #f) - (set! (-> self offset) 128) - (draw-particles self) - (draw-icons self) - (hud-update self) - (go hud-hidden) - ) - (('hide) - (set-time! (-> self last-hide-time)) - (set! (-> self force-on-screen) #f) - (go hud-leaving 10) - ) - (('show) - (if (and (not *progress-process*) (!= (-> self last-hide-time) (current-time))) - (go hud-arriving) - ) - ) - (('increment) - (set! v0-3 (+ (-> self target-value) 1)) - (set! (-> self target-value) (the-as int v0-3)) - v0-3 - ) - (('sync) - (set! v0-3 #t) - (set! (-> self first-init) (the-as symbol v0-3)) - v0-3 - ) - (('disable) - (set! v0-3 #t) - (set! (-> self disable) (the-as symbol v0-3)) - v0-3 - ) - (('enable) - (set! (-> self disable) #f) - #f - ) - ) - ) - :enter (behavior () - (let ((gp-0 (-> self child))) - (while gp-0 - (send-event (ppointer->process gp-0) 'draw #t) - (set! gp-0 (-> gp-0 0 brother)) - ) - ) - (dotimes (gp-1 (-> self nb-of-particles)) - (if (= (-> self particles gp-1 part matrix) -1) - (set! (-> self particles gp-1 part matrix) (sprite-allocate-user-hvdf)) - ) - ) - ) - :code (behavior () - (loop - (if (not (paused?)) - (seekl! (-> self offset) 0 (the int (* 15.0 (-> *display* time-adjust-ratio)))) - ) - (draw-icons self) - (if (<= (-> self offset) 0) - (go hud-in) - ) - (when (movie?) - (set-time! (-> self last-hide-time)) - (set! (-> self force-on-screen) #f) - (set! (-> self offset) 128) - (draw-particles self) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-3 object)) + (case message + (('hide-quick) + (set-time! (-> self last-hide-time)) + (set! (-> self force-on-screen) #f) + (set! (-> self offset) 128) + (draw-particles self) + (draw-icons self) + (hud-update self) + (go hud-hidden)) + (('hide) (set-time! (-> self last-hide-time)) (set! (-> self force-on-screen) #f) (go hud-leaving 10)) + (('show) (if (and (not *progress-process*) (!= (-> self last-hide-time) (current-time))) (go hud-arriving))) + (('increment) (set! v0-3 (+ (-> self target-value) 1)) (set! (-> self target-value) (the-as int v0-3)) v0-3) + (('sync) (set! v0-3 #t) (set! (-> self first-init) (the-as symbol v0-3)) v0-3) + (('disable) (set! v0-3 #t) (set! (-> self disable) (the-as symbol v0-3)) v0-3) + (('enable) (set! (-> self disable) #f) #f))) + :enter + (behavior () + (let ((gp-0 (-> self child))) + (while gp-0 + (send-event (ppointer->process gp-0) 'draw #t) + (set! gp-0 (-> gp-0 0 brother)))) + (dotimes (gp-1 (-> self nb-of-particles)) + (if (= (-> self particles gp-1 part matrix) -1) (set! (-> self particles gp-1 part matrix) (sprite-allocate-user-hvdf))))) + :code + (behavior () + (loop + (if (not (paused?)) (seekl! (-> self offset) 0 (the int (* 15.0 (-> *display* time-adjust-ratio))))) (draw-icons self) - (hud-update self) - (go hud-hidden) - ) - (suspend) - ) - ) - :post (behavior () - (hud-update self) - (draw-particles self) - (draw-hud self) - ) - ) - -(defstate hud-in (hud) - :event (-> hud-arriving event) - :code (behavior () - (set-time! (-> self trigger-time)) - (while (and (not (time-elapsed? (-> self trigger-time) (seconds 2))) (not (movie?))) - (set! (-> self offset) 0) - (draw-icons self) - (suspend) - ) - (when (movie?) - (set-time! (-> self last-hide-time)) - (set! (-> self force-on-screen) #f) - (set! (-> self offset) 128) - (draw-particles self) - (draw-icons self) + (if (<= (-> self offset) 0) (go hud-in)) + (when (movie?) + (set-time! (-> self last-hide-time)) + (set! (-> self force-on-screen) #f) + (set! (-> self offset) 128) + (draw-particles self) + (draw-icons self) + (hud-update self) + (go hud-hidden)) + (suspend))) + :post + (behavior () (hud-update self) - (go hud-hidden) - ) - (go hud-leaving 5) - ) - :post (-> hud-arriving post) - ) + (draw-particles self) + (draw-hud self))) -(defstate hud-leaving (hud) - :event (-> hud-arriving event) - :code (behavior ((arg0 int)) - (loop - (if (not (paused?)) - (seekl! (-> self offset) 128 (the int (* (the float arg0) (-> *display* time-adjust-ratio)))) - ) - (draw-icons self) +(defstate hud-in (hud) + :event + (-> hud-arriving + event) + :code + (behavior () + (set-time! (-> self trigger-time)) + (while (and (not (time-elapsed? (-> self trigger-time) (seconds 2))) (not (movie?))) + (set! (-> self offset) 0) + (draw-icons self) + (suspend)) (when (movie?) (set-time! (-> self last-hide-time)) (set! (-> self force-on-screen) #f) @@ -413,16 +246,34 @@ (draw-particles self) (draw-icons self) (hud-update self) - (go hud-hidden) - ) - (if (>= (-> self offset) 128) - (go hud-hidden) - ) - (suspend) - ) - ) - :post (-> hud-arriving post) - ) + (go hud-hidden)) + (go hud-leaving 5)) + :post + (-> hud-arriving + post)) + +(defstate hud-leaving (hud) + :event + (-> hud-arriving + event) + :code + (behavior ((arg0 int)) + (loop + (if (not (paused?)) (seekl! (-> self offset) 128 (the int (* (the float arg0) (-> *display* time-adjust-ratio))))) + (draw-icons self) + (when (movie?) + (set-time! (-> self last-hide-time)) + (set! (-> self force-on-screen) #f) + (set! (-> self offset) 128) + (draw-particles self) + (draw-icons self) + (hud-update self) + (go hud-hidden)) + (if (>= (-> self offset) 128) (go hud-hidden)) + (suspend))) + :post + (-> hud-arriving + post)) (defbehavior hud-init-by-other hud ((arg0 int)) (set! (-> self nb-of-icons) 0) @@ -446,70 +297,45 @@ (draw-icons self) (draw-particles self) (go hud-hidden) - (none) - ) + (none)) (defun send-hud-increment-event ((arg0 hud)) - (if (-> arg0 increment-on-event) - (send-event arg0 'increment) - ) - ) + (if (-> arg0 increment-on-event) (send-event arg0 'increment))) (defstate hud-collecting (process-drawable) - :trans (behavior () - (case (-> self type) - ((fuel-cell) - (fuel-cell-animate) - ) - ) - ) - :code (behavior ((arg0 handle)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (let ((s4-0 (handle->process arg0))) - (set! (-> s5-0 x) (- (the float (+ (get-icon-pos-x (the-as hud s4-0)) -256)) (-> self root trans x))) - (set! (-> s5-0 y) - (- (the float (- (get-icon-pos-y (the-as hud s4-0)) (-> *video-parms* screen-sy))) (-> self root trans y)) - ) - ) - (let ((f30-0 4.0) - (f26-0 0.0) - (f28-0 (-> self root scale x)) - (f24-0 (-> self root scale y)) - (f22-0 (-> self root scale z)) - ) - (loop - (let ((f0-7 (* f30-0 (seconds-per-frame)))) - (+! f26-0 f0-7) - (when (< 1.0 f26-0) - (let ((f0-8 (- f26-0 f0-7))) - (set! f0-7 (- 1.0 f0-8)) - ) - (set! f26-0 1.0) - ) - (+! (-> self root trans x) (* f0-7 (-> s5-0 x))) - (+! (-> self root trans y) (* f0-7 (-> s5-0 y))) - ) - (set-vector! - (-> self root scale) - (* f28-0 (-> *video-parms* relative-x-scale)) - (* f24-0 (-> *video-parms* relative-y-scale) (-> *video-parms* relative-y-scale)) - (* f22-0 (-> *video-parms* relative-x-scale)) - 1.0 - ) - (let ((a0-12 (-> self root))) - (set-yaw-angle-clear-roll-pitch! - a0-12 - (- (y-angle a0-12) (* 182.04445 (* 8.0 (-> *display* time-adjust-ratio)))) - ) - ) - (suspend) - (when (>= f26-0 1.0) - (send-hud-increment-event (the-as hud (handle->process arg0))) - (deactivate self) - ) - ) - ) - ) - ) - :post ja-post - ) + :trans + (behavior () + (case (-> self type) + ((fuel-cell) (fuel-cell-animate)))) + :code + (behavior ((arg0 handle)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (let ((s4-0 (handle->process arg0))) + (set! (-> s5-0 x) (- (the float (+ (get-icon-pos-x (the-as hud s4-0)) -256)) (-> self root trans x))) + (set! (-> s5-0 y) + (- (the float (- (get-icon-pos-y (the-as hud s4-0)) (-> *video-parms* screen-sy))) (-> self root trans y)))) + (let ((f30-0 4.0) + (f26-0 0.0) + (f28-0 (-> self root scale x)) + (f24-0 (-> self root scale y)) + (f22-0 (-> self root scale z))) + (loop + (let ((f0-7 (* f30-0 (seconds-per-frame)))) + (+! f26-0 f0-7) + (when (< 1.0 f26-0) + (let ((f0-8 (- f26-0 f0-7))) (set! f0-7 (- 1.0 f0-8))) + (set! f26-0 1.0)) + (+! (-> self root trans x) (* f0-7 (-> s5-0 x))) + (+! (-> self root trans y) (* f0-7 (-> s5-0 y)))) + (set-vector! (-> self root scale) + (* f28-0 (-> *video-parms* relative-x-scale)) + (* f24-0 (-> *video-parms* relative-y-scale) (-> *video-parms* relative-y-scale)) + (* f22-0 (-> *video-parms* relative-x-scale)) + 1.0) + (let ((a0-12 (-> self root))) + (set-yaw-angle-clear-roll-pitch! a0-12 (- (y-angle a0-12) (* 182.04445 (* 8.0 (-> *display* time-adjust-ratio)))))) + (suspend) + (when (>= f26-0 1.0) + (send-hud-increment-event (the-as hud (handle->process arg0))) + (deactivate self)))))) + :post ja-post) diff --git a/goal_src/jak1/engine/ui/progress/progress-draw.gc b/goal_src/jak1/engine/ui/progress/progress-draw.gc index e0ae88b00f..a1afa1b474 100644 --- a/goal_src/jak1/engine/ui/progress/progress-draw.gc +++ b/goal_src/jak1/engine/ui/progress/progress-draw.gc @@ -1,23 +1,14 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ui/progress/progress-static.gc") (require "engine/game/main.gc") (require "engine/ui/hud-classes.gc") -;; name: progress-draw.gc -;; name in dgo: progress-draw -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun adjust-pos ((arg0 int) (arg1 int)) - (if (< arg0 arg1) - 0 - (- arg0 arg1) - ) - ) + (if (< arg0 arg1) 0 (- arg0 arg1))) (defmethod draw-fuel-cell-screen ((this progress) (arg0 int)) (local-vars @@ -28,13 +19,10 @@ (sv-176 trsqv) (sv-192 int) (sv-208 int) - (sv-224 (function string float font-context int none)) - ) + (sv-224 (function string float font-context int none))) (hide-progress-icons) (let ((s5-0 (-> *level-task-data* arg0))) - (if (and (= *cheat-mode* 'debug) (cpad-hold? 0 l3)) - (format *stdcon* "fcd:~d~%" (-> *game-info* fuel-cell-deaths)) - ) + (if (and (= *cheat-mode* 'debug) (cpad-hold? 0 l3)) (format *stdcon* "fcd:~d~%" (-> *game-info* fuel-cell-deaths))) (set! (-> *progress-process* 0 particles 14 init-pos x) -320.0) (set! (-> *progress-process* 0 particles 15 init-pos x) -320.0) (set! (-> *progress-process* 0 icons 4 icon-x) -320) @@ -44,74 +32,43 @@ 0 (let ((s0-0 6) (s2-0 0) - (s4-1 (if (= (-> this level-transition) 1) - (- (-> this transition-offset)) - (-> this transition-offset) - ) - ) + (s4-1 (if (= (-> this level-transition) 1) (- (-> this transition-offset)) (-> this transition-offset))) (f30-0 (-> this transition-percentage-invert)) (s1-0 0) - (s3-0 #f) - ) + (s3-0 #f)) (when (-> this stat-transition) (set! sv-128 47) - (set! s2-0 (if (!= (-> this display-state) (-> this next-display-state)) - (- (-> this transition-offset)) - (-> this transition-offset) - ) - ) + (set! s2-0 + (if (!= (-> this display-state) (-> this next-display-state)) (- (-> this transition-offset)) (-> this transition-offset))) (set! s4-1 0) - (set! f30-0 1.0) - ) + (set! f30-0 1.0)) (set! sv-144 0) (while (< sv-144 4) (let ((a0-18 (-> this icons sv-144 icon 0 root))) (set! sv-176 a0-18) (set! sv-160 (method-of-object sv-176 set-yaw-angle-clear-roll-pitch!)) - (let ((a1-2 (+ (y-angle a0-18) (* 182.04445 (* 0.5 (-> *display* time-adjust-ratio)))))) - (sv-160 sv-176 a1-2) - ) - ) - (set! sv-144 (+ sv-144 1)) - ) + (let ((a1-2 (+ (y-angle a0-18) (* 182.04445 (* 0.5 (-> *display* time-adjust-ratio)))))) (sv-160 sv-176 a1-2))) + (set! sv-144 (+ sv-144 1))) (set! sv-192 (+ sv-112 (/ (- (* 47 (-> s5-0 nb-of-tasks)) (* sv-128 (-> s5-0 nb-of-tasks))) 2))) (set! sv-208 0) (while (< sv-208 (-> s5-0 nb-of-tasks)) (let ((v0-4 (get-task-status (-> s5-0 task-info sv-208 task-id))) (v1-59 -1) - (a0-25 #f) - ) + (a0-25 #f)) (set! (-> this particle-state s0-0) 2) (cond ((or (= v0-4 (task-status need-hint)) (= v0-4 (task-status unknown))) - (if (= *kernel-boot-message* 'play) - (set! (-> this particle-state s0-0) 1) - ) - ) + (if (= *kernel-boot-message* 'play) (set! (-> this particle-state s0-0) 1))) ((= v0-4 (task-status invalid)) (set! v1-59 (-> s5-0 task-info sv-208 text-index-when-resolved)) (set! (-> this particle-state s0-0) 3) - (set! a0-25 #t) - ) - ((= v0-4 (task-status need-introduction)) - (set! v1-59 0) - ) - ((= v0-4 (task-status need-reminder-a)) - (set! v1-59 0) - ) - ((= v0-4 (task-status need-reminder)) - (set! v1-59 1) - ) - ((= v0-4 (task-status need-reward-speech)) - (set! v1-59 2) - ) - ((= v0-4 (task-status need-resolution)) - (set! v1-59 2) - ) - ) - (if (and (!= *kernel-boot-message* 'play) (= v1-59 -1)) - (set! v1-59 0) - ) + (set! a0-25 #t)) + ((= v0-4 (task-status need-introduction)) (set! v1-59 0)) + ((= v0-4 (task-status need-reminder-a)) (set! v1-59 0)) + ((= v0-4 (task-status need-reminder)) (set! v1-59 1)) + ((= v0-4 (task-status need-reward-speech)) (set! v1-59 2)) + ((= v0-4 (task-status need-resolution)) (set! v1-59 2))) + (if (and (!= *kernel-boot-message* 'play) (= v1-59 -1)) (set! v1-59 0)) (set! (-> this particles s0-0 init-pos x) (the float (+ sv-192 s2-0))) (set! (-> this particles s0-0 init-pos y) (the float (+ s4-1 204))) (+! s0-0 1) @@ -119,521 +76,294 @@ (set! s1-0 v1-59) (set! s3-0 a0-25) (set! (-> this particles 5 init-pos x) (the float (+ sv-192 s2-0))) - (set! (-> this particles 5 init-pos y) (the float (+ s4-1 204))) - ) - ) + (set! (-> this particles 5 init-pos y) (the float (+ s4-1 204))))) (set! sv-192 (+ sv-192 sv-128)) - (set! sv-208 (+ sv-208 1)) - ) + (set! sv-208 (+ sv-208 1))) (dotimes (v1-77 (- 8 (-> s5-0 nb-of-tasks))) (set! (-> *progress-process* 0 particles s0-0 init-pos x) (the float (+ s2-0 -320))) (set! (-> this particles s0-0 init-pos y) (the float (+ s4-1 194))) - (+! s0-0 1) - ) + (+! s0-0 1)) (when *common-text* (when (and (!= s1-0 -1) (> (-> s5-0 nb-of-tasks) 0) (>= (-> this task-index) 0) - (< (-> this task-index) (-> s5-0 nb-of-tasks)) - ) - (let ((s0-1 (new - 'stack - 'font-context - *font-default-matrix* - (- (+ s2-0 32) (-> this left-x-offset)) - (+ (/ s4-1 2) 125) - 8325000.0 - (font-color progress-yellow) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-91 s0-1)) - (set! (-> v1-91 width) (the float 328)) - ) - (let ((v1-92 s0-1)) - (set! (-> v1-92 height) (the float 50)) - ) - (let ((v1-93 s0-1)) - (set! (-> v1-93 scale) 0.7) - ) + (< (-> this task-index) (-> s5-0 nb-of-tasks))) + (let ((s0-1 (new 'stack + 'font-context + *font-default-matrix* + (- (+ s2-0 32) (-> this left-x-offset)) + (+ (/ s4-1 2) 125) + 8325000.0 + (font-color progress-yellow) + (font-flags shadow kerning)))) + (let ((v1-91 s0-1)) (set! (-> v1-91 width) (the float 328))) + (let ((v1-92 s0-1)) (set! (-> v1-92 height) (the float 50))) + (let ((v1-93 s0-1)) (set! (-> v1-93 scale) 0.7)) (set! (-> s0-1 flags) (font-flags shadow kerning middle middle-vert large)) (set! sv-224 print-game-text-scaled) (let ((a0-47 (lookup-text! *common-text* (-> s5-0 task-info (-> this task-index) task-name s1-0) #f)) (a1-57 f30-0) (a2-15 s0-1) - (a3-2 (the int (* 128.0 f30-0))) - ) - (sv-224 a0-47 a1-57 a2-15 a3-2) - ) + (a3-2 (the int (* 128.0 f30-0)))) + (sv-224 a0-47 a1-57 a2-15 a3-2)) (when s3-0 (set! (-> s0-1 origin x) (the float (- (+ s2-0 32) (-> this left-x-offset)))) (set! (-> s0-1 origin y) (the float (+ (/ s4-1 2) 175))) - (let ((a0-49 s0-1)) - (set! (-> a0-49 color) (font-color progress-blue)) - ) - (let ((v1-104 s0-1)) - (set! (-> v1-104 height) (the float 15)) - ) - (let ((v1-105 s0-1)) - (set! (-> v1-105 scale) 0.5) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id task-completed) #f) - f30-0 - s0-1 - (the int (* 128.0 f30-0)) - ) - ) - ) - ) - ) - ) - ) - ) + (let ((a0-49 s0-1)) (set! (-> a0-49 color) (font-color progress-blue))) + (let ((v1-104 s0-1)) (set! (-> v1-104 height) (the float 15))) + (let ((v1-105 s0-1)) (set! (-> v1-105 scale) 0.5)) + (print-game-text-scaled (lookup-text! *common-text* (text-id task-completed) #f) f30-0 s0-1 (the int (* 128.0 f30-0)))))))))) 0 - (none) - ) + (none)) (defmethod draw-money-screen ((this progress) (arg0 int)) (hide-progress-icons) (let* ((v1-1 (/ (-> this transition-offset) 16)) - (s4-0 (if (= (-> this level-transition) 1) - (- (-> this transition-offset)) - (-> this transition-offset) - ) - ) + (s4-0 (if (= (-> this level-transition) 1) (- (-> this transition-offset)) (-> this transition-offset))) (f30-0 (-> this transition-percentage-invert)) - (s3-0 (- v1-1)) - ) + (s3-0 (- v1-1))) (when (-> this stat-transition) - (set! v1-1 (if (!= (-> this display-state) (-> this next-display-state)) - (- (-> this transition-offset)) - (-> this transition-offset) - ) - ) + (set! v1-1 + (if (!= (-> this display-state) (-> this next-display-state)) (- (-> this transition-offset)) (-> this transition-offset))) (set! s3-0 v1-1) (set! s4-0 0) - (set! f30-0 1.0) - ) + (set! f30-0 1.0)) (set! (-> this particles 15 init-pos x) (the float (- (+ v1-1 150) (-> this left-x-offset)))) (set! (-> this particles 15 init-pos y) (the float (+ s4-0 214))) (set! (-> this icons 4 icon-x) (- (+ v1-1 148) (-> this left-x-offset))) (set! (-> this icons 4 icon-y) (+ (-> this big-orb-y-offset) s4-0)) (let ((a0-15 (-> this icons 4 icon 0 root))) - (set-yaw-angle-clear-roll-pitch! - a0-15 - (- (y-angle a0-15) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio)))) - ) - ) - (let ((s4-1 - (new - 'stack - 'font-context - *font-default-matrix* - (- (+ s3-0 200) (-> this left-x-offset)) - (+ (/ s4-0 2) 96) - 8325000.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-19 s4-1)) - (set! (-> v1-19 width) (the float 328)) - ) - (let ((v1-20 s4-1)) - (set! (-> v1-20 height) (the float 70)) - ) + (set-yaw-angle-clear-roll-pitch! a0-15 (- (y-angle a0-15) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio)))))) + (let ((s4-1 (new 'stack + 'font-context + *font-default-matrix* + (- (+ s3-0 200) (-> this left-x-offset)) + (+ (/ s4-0 2) 96) + 8325000.0 + (font-color default) + (font-flags shadow kerning)))) + (let ((v1-19 s4-1)) (set! (-> v1-19 width) (the float 328))) + (let ((v1-20 s4-1)) (set! (-> v1-20 height) (the float 70))) (set! (-> s4-1 flags) (font-flags shadow kerning large)) (let ((s3-1 print-game-text-scaled)) - (format - (clear *temp-string*) - "~D/~D" - (-> *game-info* money-per-level arg0) - (-> *game-counts* data arg0 money-count) - ) - (s3-1 *temp-string* f30-0 s4-1 (the int (* 128.0 f30-0))) - ) - (let ((v1-26 s4-1)) - (set! (-> v1-26 width) (the float 428)) - ) + (format (clear *temp-string*) "~D/~D" (-> *game-info* money-per-level arg0) (-> *game-counts* data arg0 money-count)) + (s3-1 *temp-string* f30-0 s4-1 (the int (* 128.0 f30-0)))) + (let ((v1-26 s4-1)) (set! (-> v1-26 width) (the float 428))) (+! (-> s4-1 origin x) -220.0) (+! (-> s4-1 origin y) 40.0) (set! (-> s4-1 flags) (font-flags shadow kerning middle large)) - (print-game-text-scaled - (lookup-text! *common-text* (text-id total-collected) #f) - (* 0.7 f30-0) - s4-1 - (the int (* 128.0 f30-0)) - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id total-collected) #f) + (* 0.7 f30-0) + s4-1 + (the int (* 128.0 f30-0))) (+! (-> s4-1 origin y) 15.0) (let ((s5-2 print-game-text-scaled)) (format (clear *temp-string*) "~D/~D" (the int (-> *game-info* money-total)) (-> this total-nb-of-orbs)) - (s5-2 *temp-string* f30-0 s4-1 (the int (* 128.0 f30-0))) - ) - ) - ) + (s5-2 *temp-string* f30-0 s4-1 (the int (* 128.0 f30-0)))))) 0 - (none) - ) + (none)) (defmethod draw-buzzer-screen ((this progress) (arg0 int)) (hide-progress-icons) (let* ((v1-2 (-> *level-task-data* arg0)) (a0-3 (/ (-> this transition-offset) 16)) - (s4-0 (if (= (-> this level-transition) 1) - (- (-> this transition-offset)) - (-> this transition-offset) - ) - ) + (s4-0 (if (= (-> this level-transition) 1) (- (-> this transition-offset)) (-> this transition-offset))) (f30-0 (-> this transition-percentage-invert)) - (s3-0 (- a0-3)) - ) + (s3-0 (- a0-3))) (when (-> this stat-transition) - (set! a0-3 (if (!= (-> this display-state) (-> this next-display-state)) - (- (-> this transition-offset)) - (-> this transition-offset) - ) - ) + (set! a0-3 + (if (!= (-> this display-state) (-> this next-display-state)) (- (-> this transition-offset)) (-> this transition-offset))) (set! s3-0 a0-3) (set! s4-0 0) - (set! f30-0 1.0) - ) + (set! f30-0 1.0)) (set! (-> this particles 14 init-pos x) (the float (- (+ a0-3 150) (-> this left-x-offset)))) (set! (-> this particles 14 init-pos y) (the float (+ s4-0 214))) (let ((s2-0 0)) (let ((a1-8 (-> v1-2 buzzer-task-index))) - (if (!= a1-8 -1) - (set! s2-0 (buzzer-count *game-info* (-> v1-2 task-info a1-8 task-id))) - ) - ) - (let ((s4-1 - (new - 'stack - 'font-context - *font-default-matrix* - (- (+ s3-0 200) (-> this left-x-offset)) - (+ (/ s4-0 2) 96) - 8325000.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-9 s4-1)) - (set! (-> v1-9 width) (the float 328)) - ) - (let ((v1-10 s4-1)) - (set! (-> v1-10 height) (the float 70)) - ) + (if (!= a1-8 -1) (set! s2-0 (buzzer-count *game-info* (-> v1-2 task-info a1-8 task-id))))) + (let ((s4-1 (new 'stack + 'font-context + *font-default-matrix* + (- (+ s3-0 200) (-> this left-x-offset)) + (+ (/ s4-0 2) 96) + 8325000.0 + (font-color default) + (font-flags shadow kerning)))) + (let ((v1-9 s4-1)) (set! (-> v1-9 width) (the float 328))) + (let ((v1-10 s4-1)) (set! (-> v1-10 height) (the float 70))) (set! (-> s4-1 flags) (font-flags shadow kerning large)) (let ((s3-1 print-game-text-scaled)) (format (clear *temp-string*) "~D/~D" s2-0 (-> *game-counts* data arg0 buzzer-count)) - (s3-1 *temp-string* f30-0 s4-1 (the int (* 128.0 f30-0))) - ) - (let ((v1-14 s4-1)) - (set! (-> v1-14 width) (the float 428)) - ) + (s3-1 *temp-string* f30-0 s4-1 (the int (* 128.0 f30-0)))) + (let ((v1-14 s4-1)) (set! (-> v1-14 width) (the float 428))) (+! (-> s4-1 origin x) -220.0) (+! (-> s4-1 origin y) 40.0) (set! (-> s4-1 flags) (font-flags shadow kerning middle large)) - (print-game-text-scaled - (lookup-text! *common-text* (text-id total-collected) #f) - (* 0.7 f30-0) - s4-1 - (the int (* 128.0 f30-0)) - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id total-collected) #f) + (* 0.7 f30-0) + s4-1 + (the int (* 128.0 f30-0))) (+! (-> s4-1 origin y) 15.0) (let ((s5-2 print-game-text-scaled)) (format (clear *temp-string*) "~D/~D" (the int (-> *game-info* buzzer-total)) (-> this total-nb-of-buzzers)) - (s5-2 *temp-string* f30-0 s4-1 (the int (* 128.0 f30-0))) - ) - ) - ) - ) + (s5-2 *temp-string* f30-0 s4-1 (the int (* 128.0 f30-0))))))) 0 - (none) - ) + (none)) (defmethod draw-memcard-storage-error ((this progress) (arg0 font-context)) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 0.55) - ) - (let ((v1-1 arg0)) - (set! (-> v1-1 width) (the float 265)) - ) - (let ((v1-2 arg0)) - (set! (-> v1-2 height) (the float 55)) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 0.55)) + (let ((v1-1 arg0)) (set! (-> v1-1 width) (the float 265))) + (let ((v1-2 arg0)) (set! (-> v1-2 height) (the float 55))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (let ((s4-0 (text-id memcard-not-formatted-title))) (case (-> this display-state) - (((progress-screen memcard-no-space)) - (set! s4-0 (text-id memcard-no-space)) - ) - (((progress-screen memcard-not-inserted)) - (set! s4-0 (text-id memcard-not-inserted)) - ) - ) + (((progress-screen memcard-no-space)) (set! s4-0 (text-id memcard-no-space))) + (((progress-screen memcard-not-inserted)) (set! s4-0 (text-id memcard-not-inserted)))) (let ((s3-0 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* s4-0 #f) 1) - (s3-0 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) - ) + (s3-0 *temp-string* (-> this transition-percentage-invert) arg0 128))) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 70.0) - (let ((v1-12 arg0)) - (set! (-> v1-12 width) (the float 350)) - ) - (let ((v1-13 arg0)) - (set! (-> v1-13 height) (the float 40)) - ) + (let ((v1-12 arg0)) (set! (-> v1-12 width) (the float 350))) + (let ((v1-13 arg0)) (set! (-> v1-13 height) (the float 40))) (let ((s4-1 print-game-text-scaled)) - (format - (clear *temp-string*) - (lookup-text! *common-text* (text-id memcard-space-requirement1) #f) - (if (-> this card-info) - (-> this card-info mem-required) - 0 - ) - ) - (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) + (format (clear *temp-string*) + (lookup-text! *common-text* (text-id memcard-space-requirement1) #f) + (if (-> this card-info) (-> this card-info mem-required) 0)) + (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128)) (set! (-> arg0 origin y) 115.0) - (let ((v1-17 arg0)) - (set! (-> v1-17 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id memcard-space-requirement2) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - (let ((v1-19 arg0)) - (set! (-> v1-19 scale) 0.65) - ) + (let ((v1-17 arg0)) (set! (-> v1-17 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id memcard-space-requirement2) #f) + (-> this transition-percentage-invert) + arg0 + 128) + (let ((v1-19 arg0)) (set! (-> v1-19 scale) 0.65)) (set! (-> arg0 origin y) 160.0) - (print-game-text-scaled - (lookup-text! *common-text* (text-id continue?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-memcard-format ((this progress) (arg0 font-context)) (set! (-> arg0 origin y) 35.0) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 0.55) - ) - (let ((v1-1 arg0)) - (set! (-> v1-1 width) (the float 265)) - ) - (let ((v1-2 arg0)) - (set! (-> v1-2 height) (the float 55)) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 0.55)) + (let ((v1-1 arg0)) (set! (-> v1-1 width) (the float 265))) + (let ((v1-2 arg0)) (set! (-> v1-2 height) (the float 55))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (let ((s4-0 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* (text-id memcard-not-formatted-title) #f) 1) - (s4-0 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) + (s4-0 *temp-string* (-> this transition-percentage-invert) arg0 128)) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 105.0) - (let ((v1-7 arg0)) - (set! (-> v1-7 width) (the float 360)) - ) - (let ((v1-8 arg0)) - (set! (-> v1-8 height) (the float 40)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id memcard-not-formatted-msg) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - (let ((v1-10 arg0)) - (set! (-> v1-10 scale) 0.65) - ) + (let ((v1-7 arg0)) (set! (-> v1-7 width) (the float 360))) + (let ((v1-8 arg0)) (set! (-> v1-8 height) (the float 40))) + (print-game-text-scaled (lookup-text! *common-text* (text-id memcard-not-formatted-msg) #f) + (-> this transition-percentage-invert) + arg0 + 128) + (let ((v1-10 arg0)) (set! (-> v1-10 scale) 0.65)) (set! (-> arg0 origin y) 138.0) - (let ((v1-11 arg0)) - (set! (-> v1-11 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id format?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-11 arg0)) (set! (-> v1-11 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id format?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-memcard-data-exists ((this progress) (arg0 font-context)) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 0.65) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 0.65)) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 55.0) - (let ((v1-4 arg0)) - (set! (-> v1-4 width) (the float 365)) - ) - (let ((v1-5 arg0)) - (set! (-> v1-5 height) (the float 75)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id save-data-already-exists) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-4 arg0)) (set! (-> v1-4 width) (the float 365))) + (let ((v1-5 arg0)) (set! (-> v1-5 height) (the float 75))) + (print-game-text-scaled (lookup-text! *common-text* (text-id save-data-already-exists) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin y) 140.0) - (let ((v1-7 arg0)) - (set! (-> v1-7 width) (the float 360)) - ) - (let ((v1-8 arg0)) - (set! (-> v1-8 height) (the float 40)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id overwrite?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-7 arg0)) (set! (-> v1-7 width) (the float 360))) + (let ((v1-8 arg0)) (set! (-> v1-8 height) (the float 40))) + (print-game-text-scaled (lookup-text! *common-text* (text-id overwrite?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-memcard-no-data ((this progress) (arg0 font-context)) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 0.65) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 0.65)) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 40.0) - (let ((v1-4 arg0)) - (set! (-> v1-4 width) (the float 365)) - ) - (let ((v1-5 arg0)) - (set! (-> v1-5 height) (the float 75)) - ) + (let ((v1-4 arg0)) (set! (-> v1-4 width) (the float 365))) + (let ((v1-5 arg0)) (set! (-> v1-5 height) (the float 75))) (let ((s4-0 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* (text-id no-save-data) #f) 1) - (s4-0 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) + (s4-0 *temp-string* (-> this transition-percentage-invert) arg0 128)) (set! (-> arg0 origin y) 130.0) - (let ((v1-7 arg0)) - (set! (-> v1-7 width) (the float 360)) - ) - (let ((v1-8 arg0)) - (set! (-> v1-8 height) (the float 40)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id create-save-data?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-7 arg0)) (set! (-> v1-7 width) (the float 360))) + (let ((v1-8 arg0)) (set! (-> v1-8 height) (the float 40))) + (print-game-text-scaled (lookup-text! *common-text* (text-id create-save-data?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-memcard-accessing ((this progress) (arg0 font-context)) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 1.0) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 1.0)) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 35.0) - (let ((v1-4 arg0)) - (set! (-> v1-4 width) (the float 365)) - ) - (let ((v1-5 arg0)) - (set! (-> v1-5 height) (the float 75)) - ) + (let ((v1-4 arg0)) (set! (-> v1-4 width) (the float 365))) + (let ((v1-5 arg0)) (set! (-> v1-5 height) (the float 75))) (when (or (< (mod (-> *display* real-frame-counter) 300) 150) (!= (-> this transition-percentage-invert) 1.0)) (let ((a1-1 (text-id loading-data))) (case (-> this display-state) - (((progress-screen memcard-saving)) - (set! a1-1 (text-id saving-data)) - ) - (((progress-screen memcard-formatting)) - (set! a1-1 (text-id formatting)) - ) - (((progress-screen memcard-creating)) - (set! a1-1 (text-id creating-save-data)) - ) - ) - (print-game-text-scaled (lookup-text! *common-text* a1-1 #f) (-> this transition-percentage-invert) arg0 128) - ) - ) - (let ((v1-18 arg0)) - (set! (-> v1-18 scale) 0.65) - ) + (((progress-screen memcard-saving)) (set! a1-1 (text-id saving-data))) + (((progress-screen memcard-formatting)) (set! a1-1 (text-id formatting))) + (((progress-screen memcard-creating)) (set! a1-1 (text-id creating-save-data)))) + (print-game-text-scaled (lookup-text! *common-text* a1-1 #f) (-> this transition-percentage-invert) arg0 128))) + (let ((v1-18 arg0)) (set! (-> v1-18 scale) 0.65)) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (set! (-> arg0 origin x) (the float (- 15 (-> this left-x-offset)))) (set! (-> arg0 origin y) 100.0) - (let ((v1-22 arg0)) - (set! (-> v1-22 width) (the float 370)) - ) - (let ((v1-23 arg0)) - (set! (-> v1-23 height) (the float 75)) - ) + (let ((v1-22 arg0)) (set! (-> v1-22 width) (the float 370))) + (let ((v1-23 arg0)) (set! (-> v1-23 height) (the float 75))) (let ((s4-1 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* (text-id memcard-do-not-remove) #f) 1) - (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) + (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128)) 0 - (none) - ) + (none)) (defmethod draw-memcard-insert ((this progress) (arg0 font-context)) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 0.65) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 0.65)) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (set! (-> arg0 origin x) (the float (- 50 (-> this left-x-offset)))) (set! (-> arg0 origin y) 35.0) - (let ((v1-4 arg0)) - (set! (-> v1-4 width) (the float 310)) - ) - (let ((v1-5 arg0)) - (set! (-> v1-5 height) (the float 110)) - ) + (let ((v1-4 arg0)) (set! (-> v1-4 width) (the float 310))) + (let ((v1-5 arg0)) (set! (-> v1-5 height) (the float 110))) ;; og:preserve-this PAL patch here (let ((v1-6 (-> this card-info))) (when (and (= (-> *setting-control* default language) (language-enum japanese)) v1-6 (zero? (-> v1-6 handle))) (set! (-> arg0 origin y) -15.0) (let ((s4-0 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* (text-id memcard-not-inserted) #f) 1) - (s4-0 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) - (set! (-> arg0 origin y) 53.0) - ) - ) + (s4-0 *temp-string* (-> this transition-percentage-invert) arg0 128)) + (set! (-> arg0 origin y) 53.0))) (let ((s4-1 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* (text-id insert-memcard) #f) 1) - (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) - (let ((v1-12 arg0)) - (set! (-> v1-12 scale) 0.65) - ) + (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128)) + (let ((v1-12 arg0)) (set! (-> v1-12 scale) 0.65)) (set! (-> arg0 origin y) 130.0) - (let ((v1-13 arg0)) - (set! (-> v1-13 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id back?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-13 arg0)) (set! (-> v1-13 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id back?) #f) (-> this transition-percentage-invert) arg0 128) 0 - (none) - ) + (none)) (defmethod draw-memcard-file-select ((this progress) (arg0 font-context)) (local-vars @@ -645,170 +375,104 @@ (sv-96 (function _varargs_ object)) (sv-112 (function _varargs_ object)) (sv-128 (function _varargs_ object)) - (sv-144 (function _varargs_ object)) - ) + (sv-144 (function _varargs_ object))) (let ((s4-0 (* (+ (-> this transition-offset) -256) 2))) - (if (< s4-0 0) - (set! s4-0 0) - ) - (if (< 500 s4-0) - (set! s4-0 700) - ) + (if (< s4-0 0) (set! s4-0 0)) + (if (< 500 s4-0) (set! s4-0 700)) (set! (-> this particles 19 init-pos x) (the float (- (- 202 (adjust-pos s4-0 150)) (-> this left-x-offset)))) (set! (-> this particles 20 init-pos x) (the float (- (+ (adjust-pos s4-0 100) 202) (-> this left-x-offset)))) (set! (-> this particles 21 init-pos x) (the float (- (- 202 (adjust-pos s4-0 50)) (-> this left-x-offset)))) - (set! (-> this particles 22 init-pos x) (the float (- (+ s4-0 202) (-> this left-x-offset)))) - ) + (set! (-> this particles 22 init-pos x) (the float (- (+ s4-0 202) (-> this left-x-offset))))) (cond ((= (-> *setting-control* current video-mode) 'pal) (set! (-> this particles 21 init-pos y) 256.0) - (set! (-> this particles 22 init-pos y) 338.0) - ) - (else - (set! (-> this particles 21 init-pos y) 255.0) - (set! (-> this particles 22 init-pos y) 336.0) - ) - ) + (set! (-> this particles 22 init-pos y) 338.0)) + (else (set! (-> this particles 21 init-pos y) 255.0) (set! (-> this particles 22 init-pos y) 336.0))) (let ((f0-13 (* 2.0 (+ -0.5 (-> this transition-percentage-invert))))) 128 - (if (< f0-13 0.0) - (set! f0-13 0.0) - ) + (if (< f0-13 0.0) (set! f0-13 0.0)) (let ((s4-1 (the int (* 128.0 f0-13)))) - (let ((v1-29 arg0)) - (set! (-> v1-29 scale) 0.5) - ) + (let ((v1-29 arg0)) (set! (-> v1-29 scale) 0.5)) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (set! (-> arg0 origin x) (the float (- 102 (-> this left-x-offset)))) (set! (-> arg0 origin y) 5.0) - (let ((v1-33 arg0)) - (set! (-> v1-33 width) (the float 200)) - ) - (let ((v1-34 arg0)) - (set! (-> v1-34 height) (the float 20)) - ) - (print-game-text - (lookup-text! - *common-text* - (if (= (-> this display-state) (progress-screen load-game)) - (text-id select-file-to-load) - (text-id select-file-to-save) - ) - #f - ) - arg0 - #f - s4-1 - 22 - ) + (let ((v1-33 arg0)) (set! (-> v1-33 width) (the float 200))) + (let ((v1-34 arg0)) (set! (-> v1-34 height) (the float 20))) + (print-game-text (lookup-text! *common-text* + (if (= (-> this display-state) (progress-screen load-game)) (text-id select-file-to-load) (text-id select-file-to-save)) + #f) + arg0 + #f + s4-1 + 22) (set! (-> arg0 origin y) 26.0) - (let ((v1-37 arg0)) - (set! (-> v1-37 height) (the float 20)) - ) + (let ((v1-37 arg0)) (set! (-> v1-37 height) (the float 20))) (let ((s3-3 (-> this card-info)) - (s2-0 23) - ) + (s2-0 23)) (dotimes (s1-0 4) (set! (-> arg0 origin x) (the float (- 41 (-> this left-x-offset)))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) - (let ((a0-17 arg0)) - (set! (-> a0-17 color) (font-color default)) - ) - (let ((v1-42 arg0)) - (set! (-> v1-42 width) (the float 320)) - ) + (let ((a0-17 arg0)) (set! (-> a0-17 color) (font-color default))) + (let ((v1-42 arg0)) (set! (-> v1-42 width) (the float 320))) (cond ((and s3-3 (= (-> s3-3 formatted) 1) (= (-> s3-3 inited) 1) (= (-> s3-3 file s1-0 present) 1)) (set! (-> this particles s2-0 init-pos x) (the float (- 66 (-> this left-x-offset)))) - (let ((v1-57 arg0)) - (set! (-> v1-57 scale) 0.6) - ) - (if (and (< (-> s3-3 file s1-0 level-index) (length *level-task-data-remap*)) - (> (-> s3-3 file s1-0 level-index) 0) - ) - (print-game-text - (lookup-text! - *common-text* - (-> *level-task-data* (-> *level-task-data-remap* (+ (-> s3-3 file s1-0 level-index) -1)) level-name-id) - #f - ) - arg0 - #f - s4-1 - 22 - ) - (print-game-text "OLD SAVE GAME" arg0 #f s4-1 22) - ) - (let ((a0-28 arg0)) - (set! (-> a0-28 color) (font-color progress-memcard)) - ) + (let ((v1-57 arg0)) (set! (-> v1-57 scale) 0.6)) + (if (and (< (-> s3-3 file s1-0 level-index) (length *level-task-data-remap*)) (> (-> s3-3 file s1-0 level-index) 0)) + (print-game-text (lookup-text! *common-text* + (-> *level-task-data* (-> *level-task-data-remap* (+ (-> s3-3 file s1-0 level-index) -1)) level-name-id) + #f) + arg0 + #f + s4-1 + 22) + (print-game-text "OLD SAVE GAME" arg0 #f s4-1 22)) + (let ((a0-28 arg0)) (set! (-> a0-28 color) (font-color progress-memcard))) (cond ((or (>= (seconds 2) (- (-> *display* real-frame-counter) (-> this last-option-index-change))) (or (< (mod (- (-> *display* real-frame-counter) (-> this last-option-index-change)) 1200) 600) (!= (-> this option-index) s1-0) - (-> this in-transition) - ) - ) - (let ((v1-87 arg0)) - (set! (-> v1-87 scale) 0.5) - ) + (-> this in-transition))) + (let ((v1-87 arg0)) (set! (-> v1-87 scale) 0.5)) (+! (-> arg0 origin y) 16.0) (set! (-> arg0 flags) (font-flags shadow kerning middle large)) (set! (-> arg0 origin x) (the float (- -73 (-> this left-x-offset)))) - (let ((v1-91 arg0)) - (set! (-> v1-91 width) (the float 350)) - ) + (let ((v1-91 arg0)) (set! (-> v1-91 width) (the float 350))) (let ((s0-2 print-game-text)) (set! sv-16 format) (let ((a0-40 (clear *temp-string*)) (a1-13 "~D") - (a2-5 (the int (-> s3-3 file s1-0 fuel-cell-count))) - ) - (sv-16 a0-40 a1-13 a2-5) - ) - (s0-2 *temp-string* arg0 #f s4-1 22) - ) + (a2-5 (the int (-> s3-3 file s1-0 fuel-cell-count)))) + (sv-16 a0-40 a1-13 a2-5)) + (s0-2 *temp-string* arg0 #f s4-1 22)) (set! (-> arg0 origin x) (the float (- 1 (-> this left-x-offset)))) (let ((s0-3 print-game-text)) (set! sv-32 format) (let ((a0-44 (clear *temp-string*)) (a1-15 "~D") - (a2-7 (the int (-> s3-3 file s1-0 money-count))) - ) - (sv-32 a0-44 a1-15 a2-7) - ) - (s0-3 *temp-string* arg0 #f s4-1 22) - ) + (a2-7 (the int (-> s3-3 file s1-0 money-count)))) + (sv-32 a0-44 a1-15 a2-7)) + (s0-3 *temp-string* arg0 #f s4-1 22)) (set! (-> arg0 origin x) (the float (- 79 (-> this left-x-offset)))) (let ((s0-4 print-game-text)) (set! sv-48 format) (let ((a0-48 (clear *temp-string*)) (a1-17 "~D") - (a2-9 (the int (-> s3-3 file s1-0 buzzer-count))) - ) - (sv-48 a0-48 a1-17 a2-9) - ) - (s0-4 *temp-string* arg0 #f s4-1 22) - ) + (a2-9 (the int (-> s3-3 file s1-0 buzzer-count)))) + (sv-48 a0-48 a1-17 a2-9)) + (s0-4 *temp-string* arg0 #f s4-1 22)) (+! (-> arg0 origin y) 1.0) - (let ((v1-108 arg0)) - (set! (-> v1-108 scale) 1.0) - ) + (let ((v1-108 arg0)) (set! (-> v1-108 scale) 1.0)) (set! (-> arg0 flags) (font-flags shadow kerning right large)) (set! (-> arg0 origin x) (the float (- 352 (-> this left-x-offset)))) (let ((s0-5 print-game-text)) (set! sv-64 format) (let ((a0-52 (clear *temp-string*)) (a1-19 "~D%") - (a2-11 (the int (-> s3-3 file s1-0 completion-percentage))) - ) - (sv-64 a0-52 a1-19 a2-11) - ) - (s0-5 *temp-string* arg0 #f s4-1 22) - ) - (let ((v1-116 arg0)) - (set! (-> v1-116 scale) 0.5) - ) + (a2-11 (the int (-> s3-3 file s1-0 completion-percentage)))) + (sv-64 a0-52 a1-19 a2-11)) + (s0-5 *temp-string* arg0 #f s4-1 22)) + (let ((v1-116 arg0)) (set! (-> v1-116 scale) 0.5)) (+! (-> arg0 origin y) 9.0) (set! (-> arg0 flags) (font-flags shadow kerning large)) (set! (-> arg0 origin x) (the float (- 85 (-> this left-x-offset)))) @@ -816,1101 +480,679 @@ (set! sv-80 format) (let ((a0-56 (clear *temp-string*)) (a1-21 "/~D") - (a2-17 (if (< 100 (the int (-> s3-3 file s1-0 fuel-cell-count))) - (-> this total-nb-of-power-cells) - 100 - ) - ) - ) - (sv-80 a0-56 a1-21 a2-17) - ) - (s0-6 *temp-string* arg0 #f s4-1 22) - ) + (a2-17 (if (< 100 (the int (-> s3-3 file s1-0 fuel-cell-count))) (-> this total-nb-of-power-cells) 100))) + (sv-80 a0-56 a1-21 a2-17)) + (s0-6 *temp-string* arg0 #f s4-1 22)) (set! (-> arg0 origin x) (the float (- 150 (-> this left-x-offset)))) (let ((s0-7 print-game-text)) (set! sv-96 format) (let ((a0-60 (clear *temp-string*)) (a1-23 "/~D") - (a2-19 (-> this total-nb-of-orbs)) - ) - (sv-96 a0-60 a1-23 a2-19) - ) - (s0-7 *temp-string* arg0 #f s4-1 22) - ) + (a2-19 (-> this total-nb-of-orbs))) + (sv-96 a0-60 a1-23 a2-19)) + (s0-7 *temp-string* arg0 #f s4-1 22)) (set! (-> arg0 origin x) (the float (- 238 (-> this left-x-offset)))) (let ((s0-8 print-game-text)) (set! sv-112 format) (let ((a0-64 (clear *temp-string*)) (a1-25 "/~D") - (a2-21 (-> this total-nb-of-buzzers)) - ) - (sv-112 a0-64 a1-25 a2-21) - ) - (s0-8 *temp-string* arg0 #f s4-1 22) - ) - (+! (-> arg0 origin y) 15.0) - ) + (a2-21 (-> this total-nb-of-buzzers))) + (sv-112 a0-64 a1-25 a2-21)) + (s0-8 *temp-string* arg0 #f s4-1 22)) + (+! (-> arg0 origin y) 15.0)) (else - (+! (-> arg0 origin y) 18.0) - (set! (-> arg0 origin x) (the float (- 28 (-> this left-x-offset)))) - (let ((v1-131 arg0)) - (set! (-> v1-131 scale) 0.8) - ) - (set! (-> arg0 flags) (font-flags shadow kerning middle large)) - (let ((v1-133 arg0)) - (set! (-> v1-133 width) (the float 350)) - ) - ;; og:preserve-this pc port stuff here, added YMD - (case (scf-get-territory) - ((GAME_TERRITORY_SCEA) - (print-game-text (string-format "~X/~X/20~2X ~2X:~2X" - (-> s3-3 file s1-0 month) (-> s3-3 file s1-0 day) (-> s3-3 file s1-0 year) - (-> s3-3 file s1-0 hour) (-> s3-3 file s1-0 minute)) - arg0 #f s4-1 22) - ) - ((GAME_TERRITORY_SCEI) - (print-game-text (string-format "20~2X/~X/~X ~2X:~2X" - (-> s3-3 file s1-0 year) (-> s3-3 file s1-0 month) (-> s3-3 file s1-0 day) - (-> s3-3 file s1-0 hour) (-> s3-3 file s1-0 minute)) - arg0 #f s4-1 22) - ) - (else - (print-game-text (string-format "~X/~X/20~2X ~2X:~2X" - (-> s3-3 file s1-0 day) (-> s3-3 file s1-0 month) (-> s3-3 file s1-0 year) - (-> s3-3 file s1-0 hour) (-> s3-3 file s1-0 minute)) - arg0 #f s4-1 22) - ) - ) - (set! (-> this particles s2-0 init-pos x) -320.0) - (+! (-> arg0 origin y) 23.0) - ) - ) - ) + (+! (-> arg0 origin y) 18.0) + (set! (-> arg0 origin x) (the float (- 28 (-> this left-x-offset)))) + (let ((v1-131 arg0)) (set! (-> v1-131 scale) 0.8)) + (set! (-> arg0 flags) (font-flags shadow kerning middle large)) + (let ((v1-133 arg0)) (set! (-> v1-133 width) (the float 350))) + ;; og:preserve-this pc port stuff here, added YMD + (case (scf-get-territory) + ((GAME_TERRITORY_SCEA) + (print-game-text (string-format "~X/~X/20~2X ~2X:~2X" + (-> s3-3 file s1-0 month) + (-> s3-3 file s1-0 day) + (-> s3-3 file s1-0 year) + (-> s3-3 file s1-0 hour) + (-> s3-3 file s1-0 minute)) + arg0 + #f + s4-1 + 22)) + ((GAME_TERRITORY_SCEI) + (print-game-text (string-format "20~2X/~X/~X ~2X:~2X" + (-> s3-3 file s1-0 year) + (-> s3-3 file s1-0 month) + (-> s3-3 file s1-0 day) + (-> s3-3 file s1-0 hour) + (-> s3-3 file s1-0 minute)) + arg0 + #f + s4-1 + 22)) + (else + (print-game-text (string-format "~X/~X/20~2X ~2X:~2X" + (-> s3-3 file s1-0 day) + (-> s3-3 file s1-0 month) + (-> s3-3 file s1-0 year) + (-> s3-3 file s1-0 hour) + (-> s3-3 file s1-0 minute)) + arg0 + #f + s4-1 + 22))) + (set! (-> this particles s2-0 init-pos x) -320.0) + (+! (-> arg0 origin y) 23.0)))) (else - (set! (-> this particles s2-0 init-pos x) -320.0) - (+! (-> arg0 origin y) 12.0) - (let ((v1-173 arg0)) - (set! (-> v1-173 scale) 0.7) - ) - (print-game-text (lookup-text! *common-text* (text-id empty) #f) arg0 #f s4-1 22) - (+! (-> arg0 origin y) 29.0) - ) - ) - (+! s2-0 1) - ) - ) - ) - ) + (set! (-> this particles s2-0 init-pos x) -320.0) + (+! (-> arg0 origin y) 12.0) + (let ((v1-173 arg0)) (set! (-> v1-173 scale) 0.7)) + (print-game-text (lookup-text! *common-text* (text-id empty) #f) arg0 #f s4-1 22) + (+! (-> arg0 origin y) 29.0))) + (+! s2-0 1))))) 0 - (none) - ) + (none)) (defmethod draw-memcard-auto-save-error ((this progress) (arg0 font-context)) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 0.6) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 0.6)) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (set! (-> arg0 origin x) (the float (- 70 (-> this left-x-offset)))) (set! (-> arg0 origin y) 5.0) - (let ((v1-4 arg0)) - (set! (-> v1-4 width) (the float 265)) - ) - (let ((v1-5 arg0)) - (set! (-> v1-5 height) (the float 35)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id error-saving) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-4 arg0)) (set! (-> v1-4 width) (the float 265))) + (let ((v1-5 arg0)) (set! (-> v1-5 height) (the float 35))) + (print-game-text-scaled (lookup-text! *common-text* (text-id error-saving) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 34.0) - (let ((v1-9 arg0)) - (set! (-> v1-9 width) (the float 360)) - ) - (let ((v1-10 arg0)) - (set! (-> v1-10 height) (the float 50)) - ) + (let ((v1-9 arg0)) (set! (-> v1-9 width) (the float 360))) + (let ((v1-10 arg0)) (set! (-> v1-10 height) (the float 50))) (let ((s4-1 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* (text-id check-memcard) #f) 1) - (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) + (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128)) (set! (-> arg0 origin y) 89.0) - (let ((v1-12 arg0)) - (set! (-> v1-12 width) (the float 360)) - ) - (let ((v1-13 arg0)) - (set! (-> v1-13 height) (the float 20)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id autosave-disabled-title) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-12 arg0)) (set! (-> v1-12 width) (the float 360))) + (let ((v1-13 arg0)) (set! (-> v1-13 height) (the float 20))) + (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-disabled-title) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin y) 118.0) - (let ((v1-15 arg0)) - (set! (-> v1-15 width) (the float 360)) - ) - (let ((v1-16 arg0)) - (set! (-> v1-16 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id autosave-disabled-msg) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - (let ((v1-18 arg0)) - (set! (-> v1-18 scale) 0.65) - ) + (let ((v1-15 arg0)) (set! (-> v1-15 width) (the float 360))) + (let ((v1-16 arg0)) (set! (-> v1-16 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-disabled-msg) #f) + (-> this transition-percentage-invert) + arg0 + 128) + (let ((v1-18 arg0)) (set! (-> v1-18 scale) 0.65)) (set! (-> arg0 origin y) 160.0) - (let ((v1-19 arg0)) - (set! (-> v1-19 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id continue?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-19 arg0)) (set! (-> v1-19 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-memcard-removed ((this progress) (arg0 font-context)) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 0.6) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 0.6)) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (set! (-> arg0 origin x) (the float (- 70 (-> this left-x-offset)))) (set! (-> arg0 origin y) 10.0) - (let ((v1-4 arg0)) - (set! (-> v1-4 width) (the float 265)) - ) - (let ((v1-5 arg0)) - (set! (-> v1-5 height) (the float 55)) - ) + (let ((v1-4 arg0)) (set! (-> v1-4 width) (the float 265))) + (let ((v1-5 arg0)) (set! (-> v1-5 height) (the float 55))) (let ((s4-0 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* (text-id memcard-removed) #f) 1) - (s4-0 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) + (s4-0 *temp-string* (-> this transition-percentage-invert) arg0 128)) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 78.0) - (let ((v1-9 arg0)) - (set! (-> v1-9 width) (the float 360)) - ) - (let ((v1-10 arg0)) - (set! (-> v1-10 height) (the float 20)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id autosave-disabled-title) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-9 arg0)) (set! (-> v1-9 width) (the float 360))) + (let ((v1-10 arg0)) (set! (-> v1-10 height) (the float 20))) + (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-disabled-title) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin y) 112.0) - (let ((v1-12 arg0)) - (set! (-> v1-12 width) (the float 360)) - ) - (let ((v1-13 arg0)) - (set! (-> v1-13 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id autosave-disabled-msg) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - (let ((v1-15 arg0)) - (set! (-> v1-15 scale) 0.65) - ) + (let ((v1-12 arg0)) (set! (-> v1-12 width) (the float 360))) + (let ((v1-13 arg0)) (set! (-> v1-13 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-disabled-msg) #f) + (-> this transition-percentage-invert) + arg0 + 128) + (let ((v1-15 arg0)) (set! (-> v1-15 scale) 0.65)) (set! (-> arg0 origin y) 160.0) - (let ((v1-16 arg0)) - (set! (-> v1-16 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id continue?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-16 arg0)) (set! (-> v1-16 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-memcard-error ((this progress) (arg0 font-context)) (set! (-> arg0 origin y) 15.0) - (let ((v1-0 arg0)) - (set! (-> v1-0 scale) 0.7) - ) - (let ((v1-1 arg0)) - (set! (-> v1-1 width) (the float 265)) - ) - (let ((v1-2 arg0)) - (set! (-> v1-2 height) (the float 55)) - ) + (let ((v1-0 arg0)) (set! (-> v1-0 scale) 0.7)) + (let ((v1-1 arg0)) (set! (-> v1-1 width) (the float 265))) + (let ((v1-2 arg0)) (set! (-> v1-2 height) (the float 55))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) (let ((s4-0 (text-id error-loading))) (case (-> this display-state) - (((progress-screen memcard-error-saving)) - (set! s4-0 (text-id error-saving)) - ) - (((progress-screen memcard-error-formatting)) - (set! s4-0 (text-id error-formatting)) - ) - (((progress-screen memcard-error-creating)) - (set! s4-0 (text-id error-creating-data)) - ) - ) + (((progress-screen memcard-error-saving)) (set! s4-0 (text-id error-saving))) + (((progress-screen memcard-error-formatting)) (set! s4-0 (text-id error-formatting))) + (((progress-screen memcard-error-creating)) (set! s4-0 (text-id error-creating-data)))) (let ((s3-0 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* s4-0 #f) 1) - (s3-0 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) - ) + (s3-0 *temp-string* (-> this transition-percentage-invert) arg0 128))) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 80.0) - (let ((v1-13 arg0)) - (set! (-> v1-13 width) (the float 360)) - ) - (let ((v1-14 arg0)) - (set! (-> v1-14 height) (the float 70)) - ) + (let ((v1-13 arg0)) (set! (-> v1-13 width) (the float 360))) + (let ((v1-14 arg0)) (set! (-> v1-14 height) (the float 70))) (let ((s4-1 print-game-text-scaled)) (format (clear *temp-string*) (lookup-text! *common-text* (text-id check-memcard-and-retry) #f) 1) - (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128) - ) - (let ((v1-16 arg0)) - (set! (-> v1-16 scale) 0.65) - ) + (s4-1 *temp-string* (-> this transition-percentage-invert) arg0 128)) + (let ((v1-16 arg0)) (set! (-> v1-16 scale) 0.65)) (set! (-> arg0 origin y) 155.0) - (let ((v1-17 arg0)) - (set! (-> v1-17 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id continue?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-17 arg0)) (set! (-> v1-17 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-auto-save ((this progress) (arg0 font-context)) (set! (-> arg0 origin x) (the float (- 35 (-> this left-x-offset)))) (set! (-> arg0 origin y) 18.0) - (let ((v1-2 arg0)) - (set! (-> v1-2 scale) 0.6) - ) - (let ((v1-3 arg0)) - (set! (-> v1-3 width) (the float 330)) - ) - (let ((v1-4 arg0)) - (set! (-> v1-4 height) (the float 60)) - ) + (let ((v1-2 arg0)) (set! (-> v1-2 scale) 0.6)) + (let ((v1-3 arg0)) (set! (-> v1-3 width) (the float 330))) + (let ((v1-4 arg0)) (set! (-> v1-4 height) (the float 60))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled - (lookup-text! *common-text* (text-id autosave-warn-title) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-warn-title) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin x) (the float (- 15 (-> this left-x-offset)))) (set! (-> arg0 origin y) 110.0) - (let ((v1-9 arg0)) - (set! (-> v1-9 width) (the float 370)) - ) - (let ((v1-10 arg0)) - (set! (-> v1-10 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id autosave-warn-msg) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - (let ((v1-12 arg0)) - (set! (-> v1-12 scale) 0.65) - ) + (let ((v1-9 arg0)) (set! (-> v1-9 width) (the float 370))) + (let ((v1-10 arg0)) (set! (-> v1-10 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-warn-msg) #f) + (-> this transition-percentage-invert) + arg0 + 128) + (let ((v1-12 arg0)) (set! (-> v1-12 scale) 0.65)) (set! (-> arg0 origin y) 175.0) - (let ((v1-13 arg0)) - (set! (-> v1-13 height) (the float 20)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id continue?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - (set! (-> *progress-process* 0 particles 31 init-pos y) (the float (if (= (get-aspect-ratio) 'aspect16x9) - 170 - 180 - ) - ) - ) + (let ((v1-13 arg0)) (set! (-> v1-13 height) (the float 20))) + (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) + (-> this transition-percentage-invert) + arg0 + 128) + (set! (-> *progress-process* 0 particles 31 init-pos y) (the float (if (= (get-aspect-ratio) 'aspect16x9) 170 180))) (set! (-> *progress-process* 0 particles 31 init-pos x) (the float - (- (if (or (< (mod (-> *display* real-frame-counter) 300) 270) (!= (-> this transition-percentage-invert) 1.0)) - 205 - -320 - ) - (-> this left-x-offset) - ) - ) - ) + (- (if (or (< (mod (-> *display* real-frame-counter) 300) 270) (!= (-> this transition-percentage-invert) 1.0)) 205 -320) + (-> this left-x-offset)))) 0 - (none) - ) + (none)) (defmethod draw-pal-change-to-60hz ((this progress) (arg0 font-context)) (set! (-> arg0 origin x) (the float (- 50 (-> this left-x-offset)))) (set! (-> arg0 origin y) 20.0) - (let ((v1-2 arg0)) - (set! (-> v1-2 scale) 0.6) - ) - (let ((v1-3 arg0)) - (set! (-> v1-3 width) (the float 300)) - ) - (let ((v1-4 arg0)) - (set! (-> v1-4 height) (the float 40)) - ) + (let ((v1-2 arg0)) (set! (-> v1-2 scale) 0.6)) + (let ((v1-3 arg0)) (set! (-> v1-3 width) (the float 300))) + (let ((v1-4 arg0)) (set! (-> v1-4 height) (the float 40))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled - (lookup-text! *common-text* (text-id screen-change-to-60hz) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id screen-change-to-60hz) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin x) (the float (- 15 (-> this left-x-offset)))) (set! (-> arg0 origin y) 60.0) - (let ((v1-9 arg0)) - (set! (-> v1-9 width) (the float 370)) - ) - (let ((v1-10 arg0)) - (set! (-> v1-10 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id screen-60hz-warn-support) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-9 arg0)) (set! (-> v1-9 width) (the float 370))) + (let ((v1-10 arg0)) (set! (-> v1-10 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id screen-60hz-warn-support) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin y) 120.0) - (let ((v1-12 arg0)) - (set! (-> v1-12 height) (the float 50)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id screen-60hz-warn-timer) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - (let ((v1-14 arg0)) - (set! (-> v1-14 scale) 0.65) - ) + (let ((v1-12 arg0)) (set! (-> v1-12 height) (the float 50))) + (print-game-text-scaled (lookup-text! *common-text* (text-id screen-60hz-warn-timer) #f) + (-> this transition-percentage-invert) + arg0 + 128) + (let ((v1-14 arg0)) (set! (-> v1-14 scale) 0.65)) (set! (-> arg0 origin y) 175.0) - (let ((v1-15 arg0)) - (set! (-> v1-15 height) (the float 20)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id continue?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-15 arg0)) (set! (-> v1-15 height) (the float 20))) + (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-no-disc ((this progress) (arg0 font-context)) (set! (-> arg0 origin x) (the float (- 50 (-> this left-x-offset)))) (set! (-> arg0 origin y) 50.0) - (let ((v1-2 arg0)) - (set! (-> v1-2 scale) 0.6) - ) - (let ((v1-3 arg0)) - (set! (-> v1-3 width) (the float 300)) - ) - (let ((v1-4 arg0)) - (set! (-> v1-4 height) (the float 40)) - ) + (let ((v1-2 arg0)) (set! (-> v1-2 scale) 0.6)) + (let ((v1-3 arg0)) (set! (-> v1-3 width) (the float 300))) + (let ((v1-4 arg0)) (set! (-> v1-4 height) (the float 40))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled - (lookup-text! *common-text* (text-id no-disc-title) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id no-disc-title) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 90.0) - (let ((v1-9 arg0)) - (set! (-> v1-9 width) (the float 360)) - ) - (let ((v1-10 arg0)) - (set! (-> v1-10 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id no-disc-msg) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-9 arg0)) (set! (-> v1-9 width) (the float 360))) + (let ((v1-10 arg0)) (set! (-> v1-10 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id no-disc-msg) #f) + (-> this transition-percentage-invert) + arg0 + 128) (when (is-cd-in?) - (let ((v1-13 arg0)) - (set! (-> v1-13 scale) 0.65) - ) + (let ((v1-13 arg0)) (set! (-> v1-13 scale) 0.65)) (set! (-> arg0 origin y) 155.0) - (let ((v1-14 arg0)) - (set! (-> v1-14 height) (the float 20)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id continue?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - ) + (let ((v1-14 arg0)) (set! (-> v1-14 height) (the float 20))) + (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) + (-> this transition-percentage-invert) + arg0 + 128)) 0 - (none) - ) + (none)) (defmethod draw-bad-disc ((this progress) (arg0 font-context)) (set! (-> arg0 origin x) (the float (- 50 (-> this left-x-offset)))) (set! (-> arg0 origin y) 50.0) - (let ((v1-2 arg0)) - (set! (-> v1-2 scale) 0.6) - ) - (let ((v1-3 arg0)) - (set! (-> v1-3 width) (the float 300)) - ) - (let ((v1-4 arg0)) - (set! (-> v1-4 height) (the float 40)) - ) + (let ((v1-2 arg0)) (set! (-> v1-2 scale) 0.6)) + (let ((v1-3 arg0)) (set! (-> v1-3 width) (the float 300))) + (let ((v1-4 arg0)) (set! (-> v1-4 height) (the float 40))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled - (lookup-text! *common-text* (text-id bad-disc-title) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id bad-disc-title) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin x) (the float (- 20 (-> this left-x-offset)))) (set! (-> arg0 origin y) 90.0) - (let ((v1-9 arg0)) - (set! (-> v1-9 width) (the float 360)) - ) - (let ((v1-10 arg0)) - (set! (-> v1-10 height) (the float 60)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id bad-disc-msg) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) - (let ((v1-12 arg0)) - (set! (-> v1-12 scale) 0.65) - ) + (let ((v1-9 arg0)) (set! (-> v1-9 width) (the float 360))) + (let ((v1-10 arg0)) (set! (-> v1-10 height) (the float 60))) + (print-game-text-scaled (lookup-text! *common-text* (text-id bad-disc-msg) #f) + (-> this transition-percentage-invert) + arg0 + 128) + (let ((v1-12 arg0)) (set! (-> v1-12 scale) 0.65)) (set! (-> arg0 origin y) 155.0) - (let ((v1-13 arg0)) - (set! (-> v1-13 height) (the float 20)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id continue?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-13 arg0)) (set! (-> v1-13 height) (the float 20))) + (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-quit ((this progress) (arg0 font-context)) (set! (-> arg0 origin x) (the float (- 50 (-> this left-x-offset)))) (set! (-> arg0 origin y) 70.0) - (let ((v1-2 arg0)) - (set! (-> v1-2 scale) 0.6) - ) - (let ((v1-3 arg0)) - (set! (-> v1-3 width) (the float 300)) - ) - (let ((v1-4 arg0)) - (set! (-> v1-4 height) (the float 40)) - ) + (let ((v1-2 arg0)) (set! (-> v1-2 scale) 0.6)) + (let ((v1-3 arg0)) (set! (-> v1-3 width) (the float 300))) + (let ((v1-4 arg0)) (set! (-> v1-4 height) (the float 40))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled - (lookup-text! *common-text* (text-id quit?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id quit?) #f) (-> this transition-percentage-invert) arg0 128) 0 - (none) - ) + (none)) (defmethod draw-pal-now-60hz ((this progress) (arg0 font-context)) (set! (-> arg0 origin x) (the float (- 50 (-> this left-x-offset)))) (set! (-> arg0 origin y) 45.0) - (let ((v1-2 arg0)) - (set! (-> v1-2 scale) 0.6) - ) - (let ((v1-3 arg0)) - (set! (-> v1-3 width) (the float 300)) - ) - (let ((v1-4 arg0)) - (set! (-> v1-4 height) (the float 50)) - ) + (let ((v1-2 arg0)) (set! (-> v1-2 scale) 0.6)) + (let ((v1-3 arg0)) (set! (-> v1-3 width) (the float 300))) + (let ((v1-4 arg0)) (set! (-> v1-4 height) (the float 50))) (set! (-> arg0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled - (lookup-text! *common-text* (text-id screen-now-60hz) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (print-game-text-scaled (lookup-text! *common-text* (text-id screen-now-60hz) #f) + (-> this transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin y) 95.0) - (let ((v1-7 arg0)) - (set! (-> v1-7 height) (the float 50)) - ) - (print-game-text-scaled - (lookup-text! *common-text* (text-id screen-60hz-keep?) #f) - (-> this transition-percentage-invert) - arg0 - 128 - ) + (let ((v1-7 arg0)) (set! (-> v1-7 height) (the float 50))) + (print-game-text-scaled (lookup-text! *common-text* (text-id screen-60hz-keep?) #f) + (-> this transition-percentage-invert) + arg0 + 128) 0 - (none) - ) + (none)) (defmethod draw-notice-screen ((this progress)) (hide-progress-icons) (when *common-text* - (let ((a1-1 (new - 'stack - 'font-context - *font-default-matrix* - (- 70 (-> this left-x-offset)) - 10 - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) + (let ((a1-1 (new 'stack + 'font-context + *font-default-matrix* + (- 70 (-> this left-x-offset)) + 10 + 0.0 + (font-color default) + (font-flags shadow kerning)))) (case (-> this display-state) - (((progress-screen memcard-format)) - (draw-memcard-format this a1-1) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) - (draw-memcard-storage-error this a1-1) - ) - (((progress-screen memcard-data-exists)) - (draw-memcard-data-exists this a1-1) - ) - (((progress-screen memcard-no-data)) - (draw-memcard-no-data this a1-1) - ) + (((progress-screen memcard-format)) (draw-memcard-format this a1-1)) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) + (draw-memcard-storage-error this a1-1)) + (((progress-screen memcard-data-exists)) (draw-memcard-data-exists this a1-1)) + (((progress-screen memcard-no-data)) (draw-memcard-no-data this a1-1)) (((progress-screen memcard-loading) (progress-screen memcard-saving) (progress-screen memcard-formatting) - (progress-screen memcard-creating) - ) - (draw-memcard-accessing this a1-1) - ) - (((progress-screen memcard-insert)) - (draw-memcard-insert this a1-1) - ) + (progress-screen memcard-creating)) + (draw-memcard-accessing this a1-1)) + (((progress-screen memcard-insert)) (draw-memcard-insert this a1-1)) (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (draw-memcard-file-select this a1-1) - ) - (((progress-screen memcard-auto-save-error)) - (draw-memcard-auto-save-error this a1-1) - ) - (((progress-screen memcard-removed)) - (draw-memcard-removed this a1-1) - ) + (draw-memcard-file-select this a1-1)) + (((progress-screen memcard-auto-save-error)) (draw-memcard-auto-save-error this a1-1)) + (((progress-screen memcard-removed)) (draw-memcard-removed this a1-1)) (((progress-screen memcard-error-loading) (progress-screen memcard-error-saving) (progress-screen memcard-error-formatting) - (progress-screen memcard-error-creating) - ) - (draw-memcard-error this a1-1) - ) - (((progress-screen auto-save)) - (draw-auto-save this a1-1) - ) - (((progress-screen pal-change-to-60hz)) - (draw-pal-change-to-60hz this a1-1) - ) - (((progress-screen pal-now-60hz)) - (draw-pal-now-60hz this a1-1) - ) - (((progress-screen no-disc)) - (draw-no-disc this a1-1) - ) - (((progress-screen bad-disc)) - (draw-bad-disc this a1-1) - ) - (((progress-screen quit)) - (draw-quit this a1-1) - ) - ) - ) - ) + (progress-screen memcard-error-creating)) + (draw-memcard-error this a1-1)) + (((progress-screen auto-save)) (draw-auto-save this a1-1)) + (((progress-screen pal-change-to-60hz)) (draw-pal-change-to-60hz this a1-1)) + (((progress-screen pal-now-60hz)) (draw-pal-now-60hz this a1-1)) + (((progress-screen no-disc)) (draw-no-disc this a1-1)) + (((progress-screen bad-disc)) (draw-bad-disc this a1-1)) + (((progress-screen quit)) (draw-quit this a1-1))))) 0 - (none) - ) + (none)) (defun draw-percent-bar ((arg0 int) (arg1 int) (arg2 float) (arg3 rgba)) - (with-dma-buffer-add-bucket ((s2-0 (-> (current-frame) global-buf)) - (bucket-id sprite)) + (with-dma-buffer-add-bucket ((s2-0 (-> (current-frame) global-buf)) (bucket-id sprite)) (draw-sprite2d-xy s2-0 arg0 arg1 255 14 (new 'static 'rgba :a #x60)) - (draw-sprite2d-xy s2-0 arg0 (+ arg1 2) (the int (* 255.0 arg2)) 10 arg3) - ) + (draw-sprite2d-xy s2-0 arg0 (+ arg1 2) (the int (* 255.0 arg2)) 10 arg3)) 0 - (none) - ) + (none)) (defun print-language-name ((arg0 int) (arg1 font-context) (arg2 int) (arg3 symbol)) - (let ((s5-0 (if arg3 - arg2 - (- arg2) - ) - ) - ) + (let ((s5-0 (if arg3 arg2 (- arg2)))) (+! (-> arg1 origin x) (the float s5-0)) (let ((f30-0 (- 1.0 (* 0.0033333334 (the float arg2))))) - (print-game-text-scaled - (lookup-text! *common-text* (-> *language-name-remap* arg0) #f) - f30-0 - arg1 - (the int (* 128.0 f30-0)) - ) - ) - (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0))) - ) + (print-game-text-scaled (lookup-text! *common-text* (-> *language-name-remap* arg0) #f) + f30-0 + arg1 + (the int (* 128.0 f30-0)))) + (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0)))) (set! (-> arg1 color) (font-color default)) - arg1 - ) + arg1) -(defmethod draw-options progress ((this progress) (arg0 int) (arg1 int) (arg2 float)) +(defmethod draw-options ((this progress) (arg0 int) (arg1 int) (arg2 float)) (let ((s3-0 (-> *options-remap* (-> this display-state)))) (when s3-0 (let ((s2-1 (- arg0 (/ (* arg1 (length s3-0)) 2))) (s1-0 0) (unkx 27) (unk2 0) - (font (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))) - ) + (font (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning)))) (set-width! font 350) (set-height! font 25) (set! (-> font flags) (font-flags shadow kerning middle middle-vert large)) (dotimes (s0-0 (length s3-0)) - (let ((option-str (the string #f)) - (x-off 27) - (y-off s2-1) - ) - (let ((v1-18 (-> s3-0 s0-0 option-type))) - (cond - ((= v1-18 (game-option-type yes-no)) - (if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))) - (set! option-str (string-format "~0L~S ~30L~S~1L" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))) - ) - ) - ((or (= v1-18 (game-option-type menu)) (= v1-18 (game-option-type button))) - (cond - ((nonzero? (-> s3-0 s0-0 name)) - (set! option-str (lookup-text! *common-text* (-> s3-0 s0-0 name) #f)) - ) - (else - (set! option-str (the-as string #f)) - ) - ) - ) - ((and (-> this selected-option) (= (-> this option-index) s0-0)) - (set-color! font (font-color default)) - (set! (-> font origin x) (the float (- x-off (-> this left-x-offset)))) - (case (-> s3-0 s0-0 option-type) - (((game-option-type center-screen)) - (set! (-> font origin y) (the float (+ s2-1 -20))) - ) - (else - (set! (-> font origin y) (the float (+ s2-1 -8))) - ) - ) - (set-scale! font 0.6) - (print-game-text (lookup-text! *common-text* (-> s3-0 s0-0 name) #f) font #f 128 22) - (case (-> s3-0 s0-0 option-type) - (((game-option-type center-screen)) - (set! y-off (+ s2-1 3)) - ) - (else - (set! y-off (+ s2-1 7)) - ) - ) - (case (-> s3-0 s0-0 option-type) - (((game-option-type slider)) - (let* ((v1-82 (the-as uint #x8000ffff)) - (f0-12 (* 0.01 (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify))))) - (a0-34 (logior (logand v1-82 -256) (shr (shl (the int (+ 64.0 (* 191.0 f0-12))) 56) 56))) - (a3-5 (logior (logand a0-34 -65281) (shr (shl (shr (shl a0-34 56) 56) 56) 48))) - ) - (draw-percent-bar (- 75 (-> this left-x-offset)) (+ s2-1 8) f0-12 (the-as rgba a3-5)) - ) - (set! option-str (string-format "~D" (the int (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify)))))) - (set! x-off (+ (the int (* 2.5 (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify))))) -100)) - x-off - ) - (((game-option-type on-off)) - (if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id on) #f) (lookup-text! *common-text* (text-id off) #f))) - (set! option-str (string-format "~0L~S ~30L~S~1L" (lookup-text! *common-text* (text-id on) #f) (lookup-text! *common-text* (text-id off) #f))) - ) - ) - (((game-option-type language)) - (let ((old-lang (-> this language-selection)) - (new-lang (-> (the-as (pointer language-enum) (-> s3-0 s0-0 value-to-modify)))) - (max-lang (if (and (= (scf-get-territory) GAME_TERRITORY_SCEA) - (not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))) + (let ((option-str (the string #f)) + (x-off 27) + (y-off s2-1)) + (let ((v1-18 (-> s3-0 s0-0 option-type))) + (cond + ((= v1-18 (game-option-type yes-no)) + (if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))) + (set! option-str + (string-format "~0L~S ~30L~S~1L" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))))) + ((or (= v1-18 (game-option-type menu)) (= v1-18 (game-option-type button))) + (cond + ((nonzero? (-> s3-0 s0-0 name)) (set! option-str (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))) + (else (set! option-str (the-as string #f))))) + ((and (-> this selected-option) (= (-> this option-index) s0-0)) + (set-color! font (font-color default)) + (set! (-> font origin x) (the float (- x-off (-> this left-x-offset)))) + (case (-> s3-0 s0-0 option-type) + (((game-option-type center-screen)) (set! (-> font origin y) (the float (+ s2-1 -20)))) + (else (set! (-> font origin y) (the float (+ s2-1 -8))))) + (set-scale! font 0.6) + (print-game-text (lookup-text! *common-text* (-> s3-0 s0-0 name) #f) font #f 128 22) + (case (-> s3-0 s0-0 option-type) + (((game-option-type center-screen)) (set! y-off (+ s2-1 3))) + (else (set! y-off (+ s2-1 7)))) + (case (-> s3-0 s0-0 option-type) + (((game-option-type slider)) + (let* ((v1-82 (the-as uint #x8000ffff)) + (f0-12 (* 0.01 (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify))))) + (a0-34 (logior (logand v1-82 -256) (shr (shl (the int (+ 64.0 (* 191.0 f0-12))) 56) 56))) + (a3-5 (logior (logand a0-34 -65281) (shr (shl (shr (shl a0-34 56) 56) 56) 48)))) + (draw-percent-bar (- 75 (-> this left-x-offset)) (+ s2-1 8) f0-12 (the-as rgba a3-5))) + (set! option-str (string-format "~D" (the int (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify)))))) + (set! x-off (+ (the int (* 2.5 (-> (the-as (pointer float) (-> s3-0 s0-0 value-to-modify))))) -100)) + x-off) + (((game-option-type on-off)) + (if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))) + (set! option-str + (string-format "~0L~S ~30L~S~1L" + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))))) + (((game-option-type language)) + (let ((old-lang (-> this language-selection)) + (new-lang (-> (the-as (pointer language-enum) (-> s3-0 s0-0 value-to-modify)))) + (max-lang (if (and (= (scf-get-territory) GAME_TERRITORY_SCEA) + (not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))) 5 - 6 - )) - ) - (if (-> this language-transition) - (seekl! (-> this language-x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) - (when (>= (-> this language-x-offset) 100) - (set! (-> this language-selection) new-lang) - (set! old-lang new-lang) - (set! (-> this language-transition) #f) - (set! (-> this language-x-offset) 0) - ) - (set! (-> font origin y) (the float (+ s2-1 3))) - (set-color! font (font-color progress-blue)) - 0 - (let ((next-lang (mod (+ old-lang 1) max-lang)) - (a0-66 (mod (+ max-lang -1 old-lang) max-lang)) - (v1-153 (mod (+ old-lang 2) max-lang)) - (prev-lang (mod (+ max-lang -2 old-lang) max-lang)) - ) - (cond - ((-> this language-direction) - (let ((a2-22 (- 200 (+ (-> this language-x-offset) 100)))) - (print-language-name a0-66 font a2-22 #f) - ) - (let ((a2-23 (+ (-> this language-x-offset) 100))) - (cond - ((< a2-23 150) - (print-language-name (the int next-lang) font a2-23 #t) - ) - (else - (let ((a2-24 (- 200 (-> this language-x-offset)))) - (print-language-name prev-lang font a2-24 #f) - ) - ) - ) - ) - ) - (else - (let ((a2-25 (+ (-> this language-x-offset) 100))) - (cond - ((< a2-25 150) - (print-language-name a0-66 font a2-25 #f) - ) - (else - (let ((a2-26 (- 200 (-> this language-x-offset)))) - (print-language-name (the int v1-153) font a2-26 #t) - ) - ) - ) - ) - (let ((a2-27 (- 200 (+ (-> this language-x-offset) 100)))) - (print-language-name (the int next-lang) font a2-27 #t) - ) - ) - ) - ) - (if (not (-> this language-transition)) - (set-color! font (font-color progress-selected))) - (print-language-name (the-as int old-lang) font (-> this language-x-offset) (-> this language-direction)) - )) - (((game-option-type center-screen)) - (set! option-str (lookup-text! *common-text* (text-id move-dpad) #f)) - ) - (((game-option-type aspect-ratio)) - (if (= (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) 'aspect4x3) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id 4x3) #f) (lookup-text! *common-text* (text-id 16x9) #f))) - (set! option-str (string-format "~0L~S ~30L~S~1L" (lookup-text! *common-text* (text-id 4x3) #f) (lookup-text! *common-text* (text-id 16x9) #f))) - ) - ) - (((game-option-type video-mode)) - (if (= (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) 'ntsc) - (set! option-str (string-format "~0L~S ~30L~S~1L" (lookup-text! *common-text* (text-id 50hz) #f) (lookup-text! *common-text* (text-id 60hz) #f))) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id 50hz) #f) (lookup-text! *common-text* (text-id 60hz) #f))) - ) - ) - ) - ) - (else - (case (-> s3-0 s0-0 option-type) - (((game-option-type slider) - (game-option-type center-screen) - (game-option-type aspect-ratio) - (game-option-type video-mode) - ) - (set! option-str (lookup-text! *common-text* (-> s3-0 s0-0 name) #f)) - ) - (((game-option-type on-off)) - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> s3-0 s0-0 name) #f) - (if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) - (lookup-text! *common-text* (text-id on) #f) - (lookup-text! *common-text* (text-id off) #f) - ))) - ) - (((game-option-type language)) - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> s3-0 s0-0 name) #f) - (lookup-text! *common-text* (-> *language-name-remap* (-> (the-as (pointer uint64) (-> s3-0 s0-0 value-to-modify)))) #f))) - ) - ) - ) - ) - ) - (when option-str - (let ((f0-23 (-> this transition-percentage-invert))) - (set-color! font (if (and (= s0-0 (-> this option-index)) (not (-> this in-transition))) - (font-color progress-selected) - (font-color default) - ) - ) - (set! (-> font origin x) (the float (- x-off (-> this left-x-offset)))) - (set! (-> font origin y) (the float (the int (* (the float y-off) (if (-> s3-0 s0-0 scale) - f0-23 - 1.0 - ))))) - (set-scale! font (* arg2 f0-23)) - (print-game-text option-str font #f (the int (* 128.0 f0-23)) 22) - ) - ) - (+! s2-1 arg1) - (+! s1-0 1) - )) - ) - ) - ) + 6))) + (if (-> this language-transition) + (seekl! (-> this language-x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) + (when (>= (-> this language-x-offset) 100) + (set! (-> this language-selection) new-lang) + (set! old-lang new-lang) + (set! (-> this language-transition) #f) + (set! (-> this language-x-offset) 0)) + (set! (-> font origin y) (the float (+ s2-1 3))) + (set-color! font (font-color progress-blue)) + 0 + (let ((next-lang (mod (+ old-lang 1) max-lang)) + (a0-66 (mod (+ max-lang -1 old-lang) max-lang)) + (v1-153 (mod (+ old-lang 2) max-lang)) + (prev-lang (mod (+ max-lang -2 old-lang) max-lang))) + (cond + ((-> this language-direction) + (let ((a2-22 (- 200 (+ (-> this language-x-offset) 100)))) (print-language-name a0-66 font a2-22 #f)) + (let ((a2-23 (+ (-> this language-x-offset) 100))) + (cond + ((< a2-23 150) (print-language-name (the int next-lang) font a2-23 #t)) + (else (let ((a2-24 (- 200 (-> this language-x-offset)))) (print-language-name prev-lang font a2-24 #f)))))) + (else + (let ((a2-25 (+ (-> this language-x-offset) 100))) + (cond + ((< a2-25 150) (print-language-name a0-66 font a2-25 #f)) + (else (let ((a2-26 (- 200 (-> this language-x-offset)))) (print-language-name (the int v1-153) font a2-26 #t))))) + (let ((a2-27 (- 200 (+ (-> this language-x-offset) 100)))) (print-language-name (the int next-lang) font a2-27 #t))))) + (if (not (-> this language-transition)) (set-color! font (font-color progress-selected))) + (print-language-name (the-as int old-lang) font (-> this language-x-offset) (-> this language-direction)))) + (((game-option-type center-screen)) (set! option-str (lookup-text! *common-text* (text-id move-dpad) #f))) + (((game-option-type aspect-ratio)) + (if (= (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) 'aspect4x3) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id 4x3) #f) + (lookup-text! *common-text* (text-id 16x9) #f))) + (set! option-str + (string-format "~0L~S ~30L~S~1L" + (lookup-text! *common-text* (text-id 4x3) #f) + (lookup-text! *common-text* (text-id 16x9) #f))))) + (((game-option-type video-mode)) + (if (= (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) 'ntsc) + (set! option-str + (string-format "~0L~S ~30L~S~1L" + (lookup-text! *common-text* (text-id 50hz) #f) + (lookup-text! *common-text* (text-id 60hz) #f))) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id 50hz) #f) + (lookup-text! *common-text* (text-id 60hz) #f))))))) + (else + (case (-> s3-0 s0-0 option-type) + (((game-option-type slider) + (game-option-type center-screen) + (game-option-type aspect-ratio) + (game-option-type video-mode)) + (set! option-str (lookup-text! *common-text* (-> s3-0 s0-0 name) #f))) + (((game-option-type on-off)) + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> s3-0 s0-0 name) #f) + (if (-> (the-as (pointer uint32) (-> s3-0 s0-0 value-to-modify))) + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))))) + (((game-option-type language)) + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> s3-0 s0-0 name) #f) + (lookup-text! *common-text* (-> *language-name-remap* (-> (the-as (pointer uint64) (-> s3-0 s0-0 value-to-modify)))) #f)))))))) + (when option-str + (let ((f0-23 (-> this transition-percentage-invert))) + (set-color! font + (if (and (= s0-0 (-> this option-index)) (not (-> this in-transition))) (font-color progress-selected) (font-color default))) + (set! (-> font origin x) (the float (- x-off (-> this left-x-offset)))) + (set! (-> font origin y) (the float (the int (* (the float y-off) (if (-> s3-0 s0-0 scale) f0-23 1.0))))) + (set-scale! font (* arg2 f0-23)) + (print-game-text option-str font #f (the int (* 128.0 f0-23)) 22))) + (+! s2-1 arg1) + (+! s1-0 1)))))) 0 - (none) - ) + (none)) (defmethod draw-progress ((this progress)) (let ((f30-0 (+ -409.0 (-> this particles 2 init-pos x) (* 0.8 (the float (-> this left-x-offset))))) - (s5-0 (if (or (-> this stat-transition) (nonzero? (-> this level-transition))) - 0 - (-> this transition-offset) - ) - ) - ) - (let ((f28-0 (if (or (-> this stat-transition) (nonzero? (-> this level-transition))) - 1.0 - (-> this transition-percentage-invert) - ) - ) - ) + (s5-0 (if (or (-> this stat-transition) (nonzero? (-> this level-transition))) 0 (-> this transition-offset)))) + (let ((f28-0 (if (or (-> this stat-transition) (nonzero? (-> this level-transition))) 1.0 (-> this transition-percentage-invert)))) (let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s4-0 (-> s3-0 base)) - ) + (s4-0 (-> s3-0 base))) (let ((s2-0 draw-string-xy)) (format (clear *temp-string*) "~D" (the int (+ 0.5 (-> *target* game money)))) - (s2-0 - *temp-string* - s3-0 - (the int (+ 428.0 (the float s5-0) f30-0)) - (- 12 (the int (* 0.16666667 f30-0))) - (font-color default) - (font-flags shadow kerning large) - ) - ) + (s2-0 *temp-string* + s3-0 + (the int (+ 428.0 (the float s5-0) f30-0)) + (- 12 (the int (* 0.16666667 f30-0))) + (font-color default) + (font-flags shadow kerning large))) (let ((s2-1 draw-string-xy)) (format (clear *temp-string*) "~D" (the int (+ 0.5 (-> *target* game fuel)))) - (s2-1 - *temp-string* - s3-0 - (the int (+ 456.0 (the float (adjust-pos s5-0 50)) f30-0)) - (- 48 (the int (* 0.125 f30-0))) - (font-color default) - (font-flags shadow kerning large) - ) - ) + (s2-1 *temp-string* + s3-0 + (the int (+ 456.0 (the float (adjust-pos s5-0 50)) f30-0)) + (- 48 (the int (* 0.125 f30-0))) + (font-color default) + (font-flags shadow kerning large))) (let ((s2-2 draw-string-xy)) (format (clear *temp-string*) "~D" (the int (+ 0.5 (-> *target* fact buzzer)))) - (s2-2 - *temp-string* - s3-0 - (the int (+ 469.0 (the float (adjust-pos s5-0 100)) f30-0)) - 89 - (font-color default) - (font-flags shadow kerning large) - ) - ) + (s2-2 *temp-string* + s3-0 + (the int (+ 469.0 (the float (adjust-pos s5-0 100)) f30-0)) + 89 + (font-color default) + (font-flags shadow kerning large))) (let ((a3-4 (-> s3-0 base))) (let ((v1-20 (the-as object (-> s3-0 base)))) (set! (-> (the-as dma-packet v1-20) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-20) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-20) vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-20) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s4-0 - (the-as (pointer dma-tag) a3-4) - ) - ) - ) - (let ((s4-2 - (new - 'stack - 'font-context - *font-default-matrix* - (the int (+ (- 423.0 (the float (/ (-> this left-x-offset) 2))) f30-0 (the float (adjust-pos s5-0 150)))) - 131 - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-29 s4-2)) - (set! (-> v1-29 width) (the float 100)) - ) - (let ((v1-30 s4-2)) - (set! (-> v1-30 height) (the float 15)) - ) - (let ((v1-31 s4-2)) - (set! (-> v1-31 scale) 0.5) - ) + (set! (-> s3-0 base) (&+ (the-as pointer v1-20) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s4-0 + (the-as (pointer dma-tag) a3-4)))) + (let ((s4-2 (new 'stack + 'font-context + *font-default-matrix* + (the int (+ (- 423.0 (the float (/ (-> this left-x-offset) 2))) f30-0 (the float (adjust-pos s5-0 150)))) + 131 + 0.0 + (font-color default) + (font-flags shadow kerning)))) + (let ((v1-29 s4-2)) (set! (-> v1-29 width) (the float 100))) + (let ((v1-30 s4-2)) (set! (-> v1-30 height) (the float 15))) + (let ((v1-31 s4-2)) (set! (-> v1-31 scale) 0.5)) (set! (-> s4-2 flags) (font-flags shadow kerning large)) (print-game-text (lookup-text! *common-text* (text-id options) #f) s4-2 #f 128 22) - (let ((v1-34 s4-2)) - (set! (-> v1-34 width) (the float 160)) - ) - (let ((v1-35 s4-2)) - (set! (-> v1-35 height) (the float 22)) - ) - (let ((v1-36 s4-2)) - (set! (-> v1-36 scale) 1.3) - ) - (let ((a0-31 s4-2)) - (set! (-> a0-31 color) (font-color progress-percent)) - ) + (let ((v1-34 s4-2)) (set! (-> v1-34 width) (the float 160))) + (let ((v1-35 s4-2)) (set! (-> v1-35 height) (the float 22))) + (let ((v1-36 s4-2)) (set! (-> v1-36 scale) 1.3)) + (let ((a0-31 s4-2)) (set! (-> a0-31 color) (font-color progress-percent))) (set! (-> s4-2 origin x) - (+ (- 435.0 (the float (if (< (-> *progress-process* 0 completion-percentage) 10.0) - 93 - 80 - ) - ) - ) - f30-0 - ) - ) + (+ (- 435.0 (the float (if (< (-> *progress-process* 0 completion-percentage) 10.0) 93 80))) f30-0)) (set! (-> s4-2 origin y) 180.0) (set! (-> s4-2 flags) (font-flags shadow kerning middle middle-vert large)) (let ((s3-3 print-game-text)) (format (clear *temp-string*) "~2D%" (the int (-> *progress-process* 0 completion-percentage))) - (s3-3 *temp-string* s4-2 #f (the int (* 128.0 f28-0)) 22) - ) - ) - ) + (s3-3 *temp-string* s4-2 #f (the int (* 128.0 f28-0)) 22)))) 0.0 (let ((f28-1 (+ -94.0 (-> this particles 2 init-pos x))) (s3-4 90) (s4-3 224) (s2-5 (/ s5-0 5)) - (f26-3 (-> this button-scale)) - ) + (f26-3 (-> this button-scale))) (let ((f24-0 (* 182.04445 (- (/ -36.0 f26-3) (the float s2-5))))) (set! (-> this particles 27 init-pos x) (the float (+ s3-4 (the int (* f28-1 (cos f24-0)))))) - (set! (-> this particles 27 init-pos y) (the float (+ s4-3 (the int (* f28-1 (sin f24-0)))))) - ) + (set! (-> this particles 27 init-pos y) (the float (+ s4-3 (the int (* f28-1 (sin f24-0))))))) (let ((f24-2 (* 182.04445 (- (/ -21.0 f26-3) (the float (adjust-pos s2-5 10)))))) (set! (-> this particles 28 init-pos x) (the float (+ s3-4 (the int (* f28-1 (cos f24-2)))))) - (set! (-> this particles 28 init-pos y) (the float (+ s4-3 (the int (* f28-1 (sin f24-2)))))) - ) + (set! (-> this particles 28 init-pos y) (the float (+ s4-3 (the int (* f28-1 (sin f24-2))))))) (let ((f24-4 (* 182.04445 (- (/ -6.0 f26-3) (the float (adjust-pos s2-5 15)))))) (set! (-> this particles 29 init-pos x) (the float (+ s3-4 (the int (* f28-1 (cos f24-4)))))) - (set! (-> this particles 29 init-pos y) (the float (+ s4-3 (the int (* f28-1 (sin f24-4)))))) - ) + (set! (-> this particles 29 init-pos y) (the float (+ s4-3 (the int (* f28-1 (sin f24-4))))))) (let ((f26-5 (* 182.04445 (- (/ 9.0 f26-3) (the float (adjust-pos s2-5 20)))))) (set! (-> this particles 30 init-pos x) (the float (+ s3-4 (the int (* f28-1 (cos f26-5)))))) - (set! (-> this particles 30 init-pos y) (the float (+ s4-3 (the int (* f28-1 (sin f26-5)))))) - ) - ) + (set! (-> this particles 30 init-pos y) (the float (+ s4-3 (the int (* f28-1 (sin f26-5)))))))) (when *cheat-mode* (let ((a0-46 "AUTO SAVE OFF")) - (if (-> *setting-control* current auto-save) - (set! a0-46 "AUTO SAVE ON") - ) + (if (-> *setting-control* current auto-save) (set! a0-46 "AUTO SAVE ON")) (let* ((s3-5 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s4-4 (-> s3-5 base)) - ) - (draw-string-xy - a0-46 - s3-5 - (the int (+ 430.0 f30-0)) - 200 - (font-color progress-memcard) - (font-flags shadow kerning middle) - ) + (s4-4 (-> s3-5 base))) + (draw-string-xy a0-46 + s3-5 + (the int (+ 430.0 f30-0)) + 200 + (font-color progress-memcard) + (font-flags shadow kerning middle)) (let ((a3-9 (-> s3-5 base))) (let ((v1-81 (the-as object (-> s3-5 base)))) (set! (-> (the-as dma-packet v1-81) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-81) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-81) vif1) (new 'static 'vif-tag)) - (set! (-> s3-5 base) (&+ (the-as pointer v1-81) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s4-4 - (the-as (pointer dma-tag) a3-9) - ) - ) - ) - ) - ) + (set! (-> s3-5 base) (&+ (the-as pointer v1-81) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s4-4 + (the-as (pointer dma-tag) a3-9)))))) (let ((a0-52 (-> this icons 5 icon 0 root))) - (set-yaw-angle-clear-roll-pitch! - a0-52 - (- (y-angle a0-52) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio)))) - ) - ) + (set-yaw-angle-clear-roll-pitch! a0-52 (- (y-angle a0-52) (* 182.04445 (* 4.0 (-> *display* time-adjust-ratio)))))) (let* ((f28-2 (* 0.00024414062 (the float (-> *progress-process* 0 in-out-position)))) - (f30-1 (* 300.0 f28-2)) - ) + (f30-1 (* 300.0 f28-2))) (set! (-> this particles 18 init-pos x) - (the float (+ (the int (the float (adjust-pos s5-0 50))) 394 (the int f30-1) (-> this right-x-offset))) - ) + (the float (+ (the int (the float (adjust-pos s5-0 50))) 394 (the int f30-1) (-> this right-x-offset)))) (set! (-> this particles 18 init-pos y) (the float (- 40 (the int (* 80.0 f28-2))))) (set! (-> this icons 5 icon-x) - (+ (the int (the float (adjust-pos s5-0 50))) 393 (the int f30-1) (-> this right-x-offset)) - ) + (+ (the int (the float (adjust-pos s5-0 50))) 393 (the int f30-1) (-> this right-x-offset))) (set! (-> this icons 5 icon-y) (- (-> this small-orb-y-offset) (the int (* 80.0 f28-2)))) (set! (-> this particles 16 init-pos x) - (the float (+ (the int (the float (adjust-pos s5-0 100))) 425 (the int f30-1) (-> this right-x-offset))) - ) + (the float (+ (the int (the float (adjust-pos s5-0 100))) 425 (the int f30-1) (-> this right-x-offset)))) (set! (-> this particles 16 init-pos y) (the float (- 112 (the int (* 60.0 f28-2))))) - (set! (-> this particles 17 init-pos x) (the float (+ (the int (the float (adjust-pos s5-0 150))) - 442 - (the int f30-1) - (the int (* 0.7 (the float (-> this right-x-offset)))) - ) - ) - ) - ) - ) + (set! (-> this particles 17 init-pos x) + (the float + (+ (the int (the float (adjust-pos s5-0 150))) + 442 + (the int f30-1) + (the int (* 0.7 (the float (-> this right-x-offset))))))))) (set! (-> this particles 17 init-pos y) 193.0) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/ui/progress/progress-h.gc b/goal_src/jak1/engine/ui/progress/progress-h.gc index e544934b58..70040bcdd8 100644 --- a/goal_src/jak1/engine/ui/progress/progress-h.gc +++ b/goal_src/jak1/engine/ui/progress/progress-h.gc @@ -1,185 +1,167 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: progress-h.gc -;; name in dgo: progress-h -;; dgos: GAME, ENGINE - ;; PC port adds new menus and option types (#cond ((not PC_PORT) -(defenum progress-screen - :type int64 - (invalid -1) - (fuel-cell 0) - (money 1) - (buzzer 2) - (settings 3) - (game-settings 4) - (graphic-settings 5) - (sound-settings 6) - (memcard-no-space 7) - (memcard-not-inserted 8) - (memcard-not-formatted 9) - (memcard-format 10) - (memcard-data-exists 11) - (memcard-loading 12) - (memcard-saving 13) - (memcard-formatting 14) - (memcard-creating 15) - (load-game 16) - (save-game 17) - (save-game-title 18) - (memcard-insert 19) - (memcard-error-loading 20) - (memcard-error-saving 21) - (memcard-removed 22) - (memcard-no-data 23) - (memcard-error-formatting 24) - (memcard-error-creating 25) - (memcard-auto-save-error 26) - (title 27) - (settings-title 28) - (auto-save 29) - (pal-change-to-60hz 30) - (pal-now-60hz 31) - (no-disc 32) - (bad-disc 33) - (quit 34) - (max 35) - ) - -(defenum game-option-type - :type uint64 - (slider 0) - (language 1) - (on-off 2) - (center-screen 3) - (aspect-ratio 4) - (video-mode 5) - (menu 6) - (yes-no 7) - (button 8) - ) - ) + (defenum progress-screen + :type int64 + (invalid -1) + (fuel-cell 0) + (money 1) + (buzzer 2) + (settings 3) + (game-settings 4) + (graphic-settings 5) + (sound-settings 6) + (memcard-no-space 7) + (memcard-not-inserted 8) + (memcard-not-formatted 9) + (memcard-format 10) + (memcard-data-exists 11) + (memcard-loading 12) + (memcard-saving 13) + (memcard-formatting 14) + (memcard-creating 15) + (load-game 16) + (save-game 17) + (save-game-title 18) + (memcard-insert 19) + (memcard-error-loading 20) + (memcard-error-saving 21) + (memcard-removed 22) + (memcard-no-data 23) + (memcard-error-formatting 24) + (memcard-error-creating 25) + (memcard-auto-save-error 26) + (title 27) + (settings-title 28) + (auto-save 29) + (pal-change-to-60hz 30) + (pal-now-60hz 31) + (no-disc 32) + (bad-disc 33) + (quit 34) + (max 35)) + (defenum game-option-type + :type uint64 + (slider 0) + (language 1) + (on-off 2) + (center-screen 3) + (aspect-ratio 4) + (video-mode 5) + (menu 6) + (yes-no 7) + (button 8))) (#t -(defenum progress-screen - :type int64 - (invalid -1) - (fuel-cell 0) - (money 1) - (buzzer 2) - (settings 3) - (game-settings 4) - (graphic-settings 5) - (sound-settings 6) - (memcard-no-space 7) - (memcard-not-inserted 8) - (memcard-not-formatted 9) - (memcard-format 10) - (memcard-data-exists 11) - (memcard-loading 12) - (memcard-saving 13) - (memcard-formatting 14) - (memcard-creating 15) - (load-game 16) - (save-game 17) - (save-game-title 18) - (memcard-insert 19) - (memcard-error-loading 20) - (memcard-error-saving 21) - (memcard-removed 22) - (memcard-no-data 23) - (memcard-error-formatting 24) - (memcard-error-creating 25) - (memcard-auto-save-error 26) - (title 27) - (settings-title 28) - (auto-save 29) - (pal-change-to-60hz 30) - (pal-now-60hz 31) - (no-disc 32) - (bad-disc 33) - (quit 34) - - ;; extra screens for pc port - ;; input options - (input-options) - (select-controller) - (controller-binds) ;; 0x25 - (keyboard-binds) - (mouse-binds) - (controller-options) - (mouse-options) - (reassign-binds-options) - - (camera-options) - (accessibility-options) - (game-ps2-options) - (misc-options) - (resolution) - (aspect-msg) - (aspect-ratio) - (gfx-ps2-options) - (secrets) - (hint-log) - (cheats) - (scrapbook) - (music-player) - (scene-player) - (credits) - (quit-title) - (flava-player) - (memcard-disable-auto-save) - (memcard-auto-save-disabled) - (monitor) - (checkpoint-select) - (speedrun-options) - (speedrun-il-options) - (speedrun-cat-ext-options) - - ;; the last one! - (max) - ) - -(defenum game-option-type - :type uint64 - (slider 0) - (language 1) - (on-off 2) - (center-screen 3) - (aspect-ratio 4) - (video-mode 5) - (menu 6) - (yes-no 7) - (button 8) - - ;; extra types for pc port - (normal-inverted) - (display-mode) - (msaa) - (frame-rate) - (lod-bg) - (lod-fg) - (resolution) - (aspect-new) - (language-subtitles) - (language-text) - (speaker) - (aspect-native) - (button-music) - (button-flava) - (cheat-toggle) - (monitor) - (controller) - (binding-assignment) - (confirmation) - ) - - ) ;; end of PC_PORT = #t branch for enum initialization + (defenum progress-screen + :type int64 + (invalid -1) + (fuel-cell 0) + (money 1) + (buzzer 2) + (settings 3) + (game-settings 4) + (graphic-settings 5) + (sound-settings 6) + (memcard-no-space 7) + (memcard-not-inserted 8) + (memcard-not-formatted 9) + (memcard-format 10) + (memcard-data-exists 11) + (memcard-loading 12) + (memcard-saving 13) + (memcard-formatting 14) + (memcard-creating 15) + (load-game 16) + (save-game 17) + (save-game-title 18) + (memcard-insert 19) + (memcard-error-loading 20) + (memcard-error-saving 21) + (memcard-removed 22) + (memcard-no-data 23) + (memcard-error-formatting 24) + (memcard-error-creating 25) + (memcard-auto-save-error 26) + (title 27) + (settings-title 28) + (auto-save 29) + (pal-change-to-60hz 30) + (pal-now-60hz 31) + (no-disc 32) + (bad-disc 33) + (quit 34) + ;; extra screens for pc port + ;; input options + (input-options) + (select-controller) + (controller-binds) ;; 0x25 + (keyboard-binds) + (mouse-binds) + (controller-options) + (mouse-options) + (reassign-binds-options) + (camera-options) + (accessibility-options) + (game-ps2-options) + (misc-options) + (resolution) + (aspect-msg) + (aspect-ratio) + (gfx-ps2-options) + (secrets) + (hint-log) + (cheats) + (scrapbook) + (music-player) + (scene-player) + (credits) + (quit-title) + (flava-player) + (memcard-disable-auto-save) + (memcard-auto-save-disabled) + (monitor) + (checkpoint-select) + (speedrun-options) + (speedrun-il-options) + (speedrun-cat-ext-options) + ;; the last one! + (max)) + (defenum game-option-type + :type uint64 + (slider 0) + (language 1) + (on-off 2) + (center-screen 3) + (aspect-ratio 4) + (video-mode 5) + (menu 6) + (yes-no 7) + (button 8) + ;; extra types for pc port + (normal-inverted) + (display-mode) + (msaa) + (frame-rate) + (lod-bg) + (lod-fg) + (resolution) + (aspect-new) + (language-subtitles) + (language-text) + (speaker) + (aspect-native) + (button-music) + (button-flava) + (cheat-toggle) + (monitor) + (controller) + (binding-assignment) + (confirmation))) ;; end of PC_PORT = #t branch for enum initialization ) ;; end of PC_PORT cond (defenum game-option-menu @@ -187,194 +169,176 @@ :copy-entries progress-screen) (defun-extern activate-progress process progress-screen none) + (defun-extern hide-progress-screen none) + (defun-extern hide-progress-icons none) (defun-extern progress-allowed? symbol) + (defun-extern pause-allowed? symbol) ;; DECOMP BEGINS (deftype count-info (structure) - ((money-count int32) - (buzzer-count int32) - ) - :pack-me - ) - + ((money-count int32) + (buzzer-count int32)) + :pack-me) (deftype game-count-info (basic) - ((length int32) - (data count-info :inline :dynamic) - ) - ) - + ((length int32) + (data count-info :inline :dynamic))) (deftype task-info-data (basic) - ((task-id game-task) - (task-name text-id 4) - (text-index-when-resolved int32) - ) - ) - + ((task-id game-task) + (task-name text-id 4) + (text-index-when-resolved int32))) (deftype level-tasks-info (basic) - ((level-name-id text-id) - (text-group-index int32) - (nb-of-tasks int32) - (buzzer-task-index int32) - (task-info task-info-data 8) - ) - ) - + ((level-name-id text-id) + (text-group-index int32) + (nb-of-tasks int32) + (buzzer-task-index int32) + (task-info task-info-data 8))) (deftype game-option (basic) - ((option-type game-option-type) - (name text-id) - (scale symbol) - (param1 float) - (param2 float) - (param3 game-option-menu) - (value-to-modify pointer) + ((option-type game-option-type) + (name text-id) + (scale symbol) + (param1 float) + (param2 float) + (param3 game-option-menu) + (value-to-modify pointer) ;; fields below added in pc port - (option-disabled-func (function symbol)) - (name-override string) - (on-change (function object none)) - (on-confirm (function none)) - (slider-step-size float) - (slider-show-decimal? symbol) - (bind-info bind-assignment-info :inline) - ) - ) - + (option-disabled-func (function symbol)) + (name-override string) + (on-change (function object none)) + (on-confirm (function none)) + (slider-step-size float) + (slider-show-decimal? symbol) + (bind-info bind-assignment-info :inline))) (deftype progress (process) - ((current-debug-string int32) - (current-debug-language int32) - (current-debug-group int32) - (in-out-position int32) - (display-state progress-screen) - (next-display-state progress-screen) - (option-index int32) - (selected-option basic) - (completion-percentage float) - (ready-to-run basic) - (display-level-index int32) - (next-level-index int32) - (task-index int32) - (in-transition basic) - (last-in-transition basic) - (force-transition basic) - (stat-transition basic) - (level-transition int32) - (language-selection language-enum) - (language-direction symbol) - (language-transition basic) - (language-x-offset int32) - (sides-x-scale float) - (sides-y-scale float) - (left-x-offset int32) - (right-x-offset int32) - (button-scale float) - (slot-scale float) - (left-side-x-scale float) - (left-side-y-scale float) - (right-side-x-scale float) - (right-side-y-scale float) - (small-orb-y-offset int32) - (big-orb-y-offset int32) - (transition-offset int32) - (transition-offset-invert int32) - (transition-percentage float) - (transition-percentage-invert float) - (transition-speed float) - (total-nb-of-power-cells int32) - (total-nb-of-orbs int32) - (total-nb-of-buzzers int32) - (card-info mc-slot-info) - (last-option-index-change time-frame) - (video-mode-timeout time-frame) - (display-state-stack progress-screen 5) - (option-index-stack int32 5) - (display-state-pos int32) - (nb-of-icons int32) - (icons hud-icon 6) - (max-nb-of-particles int32) - (nb-of-particles int32) - (particles hud-particle 40) - (particle-state int32 40) - ) + ((current-debug-string int32) + (current-debug-language int32) + (current-debug-group int32) + (in-out-position int32) + (display-state progress-screen) + (next-display-state progress-screen) + (option-index int32) + (selected-option basic) + (completion-percentage float) + (ready-to-run basic) + (display-level-index int32) + (next-level-index int32) + (task-index int32) + (in-transition basic) + (last-in-transition basic) + (force-transition basic) + (stat-transition basic) + (level-transition int32) + (language-selection language-enum) + (language-direction symbol) + (language-transition basic) + (language-x-offset int32) + (sides-x-scale float) + (sides-y-scale float) + (left-x-offset int32) + (right-x-offset int32) + (button-scale float) + (slot-scale float) + (left-side-x-scale float) + (left-side-y-scale float) + (right-side-x-scale float) + (right-side-y-scale float) + (small-orb-y-offset int32) + (big-orb-y-offset int32) + (transition-offset int32) + (transition-offset-invert int32) + (transition-percentage float) + (transition-percentage-invert float) + (transition-speed float) + (total-nb-of-power-cells int32) + (total-nb-of-orbs int32) + (total-nb-of-buzzers int32) + (card-info mc-slot-info) + (last-option-index-change time-frame) + (video-mode-timeout time-frame) + (display-state-stack progress-screen 5) + (option-index-stack int32 5) + (display-state-pos int32) + (nb-of-icons int32) + (icons hud-icon 6) + (max-nb-of-particles int32) + (nb-of-particles int32) + (particles hud-particle 40) + (particle-state int32 40)) (:methods - (progress-method-14 (_type_) none) - (progress-method-15 (_type_) none) - (progress-method-16 (_type_) none) - (draw-progress (_type_) none) - (progress-method-18 () none) - (visible? (_type_) symbol) - (hidden? (_type_) symbol) - (adjust-sprites (_type_) none) - (adjust-icons (_type_) none) - (adjust-ratios (_type_ symbol symbol) none) - (draw-fuel-cell-screen (_type_ int) none) - (draw-money-screen (_type_ int) none) - (draw-buzzer-screen (_type_ int) none) - (draw-notice-screen (_type_) none) - (draw-options (_type_ int int float) none) - (respond-common (_type_) none) - (respond-progress (_type_) none) - (respond-memcard (_type_) none) - (can-go-back? (_type_) symbol) - (initialize-icons (_type_) none) - (initialize-particles (_type_) none) - (draw-memcard-storage-error (_type_ font-context) none) - (draw-memcard-data-exists (_type_ font-context) none) - (draw-memcard-no-data (_type_ font-context) none) - (draw-memcard-accessing (_type_ font-context) none) - (draw-memcard-insert (_type_ font-context) none) - (draw-memcard-file-select (_type_ font-context) none) - (draw-memcard-auto-save-error (_type_ font-context) none) - (draw-memcard-removed (_type_ font-context) none) - (draw-memcard-error (_type_ font-context) none) - (progress-method-44 (_type_) none) - (push! (_type_) none) - (pop! (_type_) none) - (progress-method-47 (_type_) none) - (enter! (_type_ progress-screen int) none) - (draw-memcard-format (_type_ font-context) none) - (draw-auto-save (_type_ font-context) none) - (set-transition-progress! (_type_ int) none) - (set-transition-speed! (_type_) none) - (set-memcard-screen (_type_ progress-screen) progress-screen) - (draw-pal-change-to-60hz (_type_ font-context) none) - (draw-pal-now-60hz (_type_ font-context) none) - (draw-no-disc (_type_ font-context) none) - (draw-bad-disc (_type_ font-context) none) - (draw-quit (_type_ font-context) none) - ) + (progress-method-14 (_type_) none) + (progress-method-15 (_type_) none) + (progress-method-16 (_type_) none) + (draw-progress (_type_) none) + (progress-method-18 () none) + (visible? (_type_) symbol) + (hidden? (_type_) symbol) + (adjust-sprites (_type_) none) + (adjust-icons (_type_) none) + (adjust-ratios (_type_ symbol symbol) none) + (draw-fuel-cell-screen (_type_ int) none) + (draw-money-screen (_type_ int) none) + (draw-buzzer-screen (_type_ int) none) + (draw-notice-screen (_type_) none) + (draw-options (_type_ int int float) none) + (respond-common (_type_) none) + (respond-progress (_type_) none) + (respond-memcard (_type_) none) + (can-go-back? (_type_) symbol) + (initialize-icons (_type_) none) + (initialize-particles (_type_) none) + (draw-memcard-storage-error (_type_ font-context) none) + (draw-memcard-data-exists (_type_ font-context) none) + (draw-memcard-no-data (_type_ font-context) none) + (draw-memcard-accessing (_type_ font-context) none) + (draw-memcard-insert (_type_ font-context) none) + (draw-memcard-file-select (_type_ font-context) none) + (draw-memcard-auto-save-error (_type_ font-context) none) + (draw-memcard-removed (_type_ font-context) none) + (draw-memcard-error (_type_ font-context) none) + (progress-method-44 (_type_) none) + (push! (_type_) none) + (pop! (_type_) none) + (progress-method-47 (_type_) none) + (enter! (_type_ progress-screen int) none) + (draw-memcard-format (_type_ font-context) none) + (draw-auto-save (_type_ font-context) none) + (set-transition-progress! (_type_ int) none) + (set-transition-speed! (_type_) none) + (set-memcard-screen (_type_ progress-screen) progress-screen) + (draw-pal-change-to-60hz (_type_ font-context) none) + (draw-pal-now-60hz (_type_ font-context) none) + (draw-no-disc (_type_ font-context) none) + (draw-bad-disc (_type_ font-context) none) + (draw-quit (_type_ font-context) none)) (:states - progress-coming-in - progress-debug - progress-going-out - progress-gone - progress-normal - progress-waiting - ) - ) - + progress-coming-in + progress-debug + progress-going-out + progress-gone + progress-normal + progress-waiting)) (define *progress-process* (the-as (pointer progress) #f)) (define *progress-last-task-index* 0) - (defun-extern get-game-count int count-info) (define-extern *level-task-data* (array level-tasks-info)) + (define-extern *level-task-data-remap* (array int32)) (defun-extern deactivate-progress none) -(defun-extern calculate-completion progress float) -(defun-extern make-current-level-available-to-progress none) - +(defun-extern calculate-completion progress float) +(defun-extern make-current-level-available-to-progress none) diff --git a/goal_src/jak1/engine/ui/progress/progress-part.gc b/goal_src/jak1/engine/ui/progress/progress-part.gc index 508f5c11fb..a42309db4a 100644 --- a/goal_src/jak1/engine/ui/progress/progress-part.gc +++ b/goal_src/jak1/engine/ui/progress/progress-part.gc @@ -1,933 +1,800 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ui/hud-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") (require "engine/anim/joint-h.gc") -;; name: progress-part.gc -;; name in dgo: progress-part -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defun part-progress-hud-left-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((v1-0 *progress-process*)) (set! (-> arg2 vector 0 w) (-> v1-0 0 left-side-x-scale)) - (set! (-> arg2 vector 1 w) (-> v1-0 0 left-side-y-scale)) - ) - (none) - ) + (set! (-> arg2 vector 1 w) (-> v1-0 0 left-side-y-scale))) + (none)) (defun part-progress-hud-right-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((v1-0 *progress-process*)) (set! (-> arg2 vector 0 w) (-> v1-0 0 right-side-x-scale)) - (set! (-> arg2 vector 1 w) (-> v1-0 0 right-side-y-scale)) - ) - (none) - ) + (set! (-> arg2 vector 1 w) (-> v1-0 0 right-side-y-scale))) + (none)) (defun part-progress-hud-orb-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) ;; og:preserve-this (#cond - (PC_PORT - (unless (and *pc-settings* (not (-> *pc-settings* use-vis?))) - (set! (-> arg2 vector 0 w) (/ 5324.8 (-> *progress-process* 0 sides-x-scale))) - (set! (-> arg2 vector 1 w) (/ 5324.8 (-> *progress-process* 0 sides-x-scale))) - ) - ) - (#t - (set! (-> arg2 vector 0 w) (/ 5324.8 (-> *progress-process* 0 sides-x-scale))) - (set! (-> arg2 vector 1 w) (/ 5324.8 (-> *progress-process* 0 sides-x-scale))) - ) - ) - (none) - ) + (PC_PORT + (unless (and *pc-settings* (not (-> *pc-settings* use-vis?))) + (set! (-> arg2 vector 0 w) (/ 5324.8 (-> *progress-process* 0 sides-x-scale))) + (set! (-> arg2 vector 1 w) (/ 5324.8 (-> *progress-process* 0 sides-x-scale))))) + (#t + (set! (-> arg2 vector 0 w) (/ 5324.8 (-> *progress-process* 0 sides-x-scale))) + (set! (-> arg2 vector 1 w) (/ 5324.8 (-> *progress-process* 0 sides-x-scale))))) + (none)) (defun part-progress-hud-buzzer-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) ;; og:preserve-this (#cond - (PC_PORT - (unless (and *pc-settings* (not (-> *pc-settings* use-vis?))) - (set! (-> arg2 vector 0 w) (/ 6144.0 (-> *progress-process* 0 sides-x-scale))) - (set! (-> arg2 vector 1 w) (/ 6144.0 (-> *progress-process* 0 sides-x-scale))) - ) - ) - (#t - (set! (-> arg2 vector 0 w) (/ 6144.0 (-> *progress-process* 0 sides-x-scale))) - (set! (-> arg2 vector 1 w) (/ 6144.0 (-> *progress-process* 0 sides-x-scale))) - ) - ) - (none) - ) + (PC_PORT + (unless (and *pc-settings* (not (-> *pc-settings* use-vis?))) + (set! (-> arg2 vector 0 w) (/ 6144.0 (-> *progress-process* 0 sides-x-scale))) + (set! (-> arg2 vector 1 w) (/ 6144.0 (-> *progress-process* 0 sides-x-scale))))) + (#t + (set! (-> arg2 vector 0 w) (/ 6144.0 (-> *progress-process* 0 sides-x-scale))) + (set! (-> arg2 vector 1 w) (/ 6144.0 (-> *progress-process* 0 sides-x-scale))))) + (none)) (defun part-progress-hud-button-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) ;; og:preserve-this (#cond - (PC_PORT - (unless (and *pc-settings* (not (-> *pc-settings* use-vis?))) - (set! (-> arg2 vector 0 w) (/ 6553.6 (-> *progress-process* 0 sides-x-scale))) - (set! (-> arg2 vector 1 w) (/ 6553.6 (-> *progress-process* 0 sides-x-scale))) - ) - ) - (#t - (set! (-> arg2 vector 0 w) (/ 6553.6 (-> *progress-process* 0 sides-x-scale))) - (set! (-> arg2 vector 1 w) (/ 6553.6 (-> *progress-process* 0 sides-x-scale))) - ) - ) - (none) - ) + (PC_PORT + (unless (and *pc-settings* (not (-> *pc-settings* use-vis?))) + (set! (-> arg2 vector 0 w) (/ 6553.6 (-> *progress-process* 0 sides-x-scale))) + (set! (-> arg2 vector 1 w) (/ 6553.6 (-> *progress-process* 0 sides-x-scale))))) + (#t + (set! (-> arg2 vector 0 w) (/ 6553.6 (-> *progress-process* 0 sides-x-scale))) + (set! (-> arg2 vector 1 w) (/ 6553.6 (-> *progress-process* 0 sides-x-scale))))) + (none)) (defun part-progress-hud-tint-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 2 w) (the float (- 64 (sar (* 63 (-> *progress-process* 0 in-out-position)) 12)))) ;; og:preserve-this (#when PC_PORT (if (and *pc-settings* (not (-> *pc-settings* use-vis?))) - (set! (-> arg2 vector 0 w) (* (meters 15) (-> *pc-settings* aspect-ratio-scale))) - ) - ) + (set! (-> arg2 vector 0 w) (* (meters 15) (-> *pc-settings* aspect-ratio-scale))))) 0 - (none) - ) + (none)) (defun part-progress-card-slot-01-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) - (set! (-> arg2 vector 2 w) (if (zero? (-> *progress-process* 0 option-index)) - 64.0 - 32.0 - ) - ) + (set! (-> arg2 vector 2 w) (if (zero? (-> *progress-process* 0 option-index)) 64.0 32.0)) (set! (-> arg2 vector 1 w) (-> *progress-process* 0 slot-scale)) 0 - (none) - ) + (none)) (defun part-progress-card-slot-02-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) - (set! (-> arg2 vector 2 w) (if (= (-> *progress-process* 0 option-index) 1) - 64.0 - 32.0 - ) - ) + (set! (-> arg2 vector 2 w) (if (= (-> *progress-process* 0 option-index) 1) 64.0 32.0)) (set! (-> arg2 vector 1 w) (-> *progress-process* 0 slot-scale)) 0 - (none) - ) + (none)) (defun part-progress-card-slot-03-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) - (set! (-> arg2 vector 2 w) (if (= (-> *progress-process* 0 option-index) 2) - 64.0 - 32.0 - ) - ) + (set! (-> arg2 vector 2 w) (if (= (-> *progress-process* 0 option-index) 2) 64.0 32.0)) (set! (-> arg2 vector 1 w) (-> *progress-process* 0 slot-scale)) 0 - (none) - ) + (none)) (defun part-progress-card-slot-04-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) - (set! (-> arg2 vector 2 w) (if (= (-> *progress-process* 0 option-index) 3) - 64.0 - 32.0 - ) - ) + (set! (-> arg2 vector 2 w) (if (= (-> *progress-process* 0 option-index) 3) 64.0 32.0)) (set! (-> arg2 vector 1 w) (-> *progress-process* 0 slot-scale)) 0 - (none) - ) + (none)) (defun part-progress-card-cell-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (* 2.0 (+ -0.5 (-> *progress-process* 0 transition-percentage-invert))))) - (if (< f0-1 0.0) - (set! f0-1 0.0) - ) - (set! (-> arg2 vector 2 w) (* 128.0 f0-1)) - ) + (if (< f0-1 0.0) (set! f0-1 0.0)) + (set! (-> arg2 vector 2 w) (* 128.0 f0-1))) 0 - (none) - ) + (none)) (defun part-progress-save-icon-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (* 6144.0 (-> *progress-process* 0 transition-percentage-invert)))) (set! (-> arg2 vector 0 w) f0-1) - (set! (-> arg2 vector 1 w) f0-1) - ) + (set! (-> arg2 vector 1 w) f0-1)) 0 - (none) - ) + (none)) (defun fuel-cell-progress-hud-orbit-callback ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let* ((a0-1 (-> arg1 key)) (s5-0 (the-as progress (-> a0-1 proc))) (v1-0 (the int (the-as float (-> arg1 user-float)))) - (s4-0 -1) - ) + (s4-0 -1)) (let ((a1-1 0)) (dotimes (a2-1 (-> *progress-process* 0 nb-of-particles)) - (if (= (-> a0-1 matrix) (-> s5-0 particles a1-1 part matrix)) - (set! s4-0 a1-1) - ) - (+! a1-1 1) - ) - ) + (if (= (-> a0-1 matrix) (-> s5-0 particles a1-1 part matrix)) (set! s4-0 a1-1)) + (+! a1-1 1))) (cond ((= v1-0 3) - (if (= (-> s5-0 particle-state s4-0) 1) - (set! (-> arg2 vector 2 w) 42.0) - (set! (-> arg2 vector 2 w) 128.0) - ) - 0 - ) + (if (= (-> s5-0 particle-state s4-0) 1) (set! (-> arg2 vector 2 w) 42.0) (set! (-> arg2 vector 2 w) 128.0)) + 0) (else - (let ((s3-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) - ) - (cond - ((or (= s4-0 -1) (= (-> s5-0 particle-state s4-0) 2) (= (-> s5-0 particle-state s4-0) 1)) - (set! (-> arg2 vector 0 x) 245760.0) - ) - ((= v1-0 -1) - (set! (-> arg2 vector 0 x) 0.0) - (set! (-> arg2 vector 0 y) 0.0) - ) - (else - (vector<-cspace! s3-0 (-> s5-0 icons (logand s4-0 3) icon 0 node-list data v1-0)) - (vector<-cspace! s2-0 (-> s5-0 icons (logand s4-0 3) icon 0 node-list data 3)) - (vector-! s3-0 s3-0 s2-0) - ;; og:preserve-this - (#when PC_PORT - (when (not (-> *pc-settings* use-vis?)) - (*! (-> s3-0 x) (-> *video-parms* relative-x-scale)) - ) - ) - (set! (-> arg2 vector 0 x) (* 48.0 (-> s3-0 x))) - (set! (-> arg2 vector 0 y) (* 60.0 (-> s3-0 y))) - (set! (-> arg2 vector 0 z) (* 32.0 (-> s3-0 z))) - ) - ) - ) - 0 - ) - ) - ) + (let ((s3-0 (new 'stack-no-clear 'vector)) + (s2-0 (new 'stack-no-clear 'vector))) + (cond + ((or (= s4-0 -1) (= (-> s5-0 particle-state s4-0) 2) (= (-> s5-0 particle-state s4-0) 1)) + (set! (-> arg2 vector 0 x) 245760.0)) + ((= v1-0 -1) (set! (-> arg2 vector 0 x) 0.0) (set! (-> arg2 vector 0 y) 0.0)) + (else + (vector<-cspace! s3-0 (-> s5-0 icons (logand s4-0 3) icon 0 node-list data v1-0)) + (vector<-cspace! s2-0 (-> s5-0 icons (logand s4-0 3) icon 0 node-list data 3)) + (vector-! s3-0 s3-0 s2-0) + ;; og:preserve-this + (#when PC_PORT + (when (not (-> *pc-settings* use-vis?)) + (*! (-> s3-0 x) (-> *video-parms* relative-x-scale)))) + (set! (-> arg2 vector 0 x) (* 48.0 (-> s3-0 x))) + (set! (-> arg2 vector 0 y) (* 60.0 (-> s3-0 y))) + (set! (-> arg2 vector 0 z) (* 32.0 (-> s3-0 z)))))) + 0))) 0 - (none) - ) + (none)) (defpartgroup group-part-progress-hud-previous :id 85 :flags (use-local-clock screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 332 :flags (launch-asap))) - ) + :parts ((sp-item 332 :flags (launch-asap)))) (defpartgroup group-part-progress-hud-next :id 86 :flags (use-local-clock screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 333 :flags (launch-asap))) - ) + :parts ((sp-item 333 :flags (launch-asap)))) (defpartgroup group-part-progress-hud-selector :id 87 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 334 :flags (launch-asap))) - ) + :parts ((sp-item 334 :flags (launch-asap)))) (defpartgroup group-part-progress-hud-left :id 88 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 335 :flags (launch-asap))) - ) + :parts ((sp-item 335 :flags (launch-asap)))) (defpartgroup group-part-progress-hud-right :id 89 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 336 :flags (launch-asap))) - ) + :parts ((sp-item 336 :flags (launch-asap)))) (defpartgroup group-part-progress-hud-tint :id 90 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 337 :flags (launch-asap))) - ) + :parts ((sp-item 337 :flags (launch-asap)))) (defpartgroup group-part-progress-card-cell :id 91 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2190 :flags (launch-asap)) (sp-item 2191 :flags (launch-asap)) (sp-item 2192 :flags (launch-asap))) - ) + :parts ((sp-item 2190 :flags (launch-asap)) (sp-item 2191 :flags (launch-asap)) (sp-item 2192 :flags (launch-asap)))) (defpartgroup group-part-progress-button-x :id 570 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2336 :flags (launch-asap))) - ) + :parts ((sp-item 2336 :flags (launch-asap)))) (defpartgroup group-part-progress-button-square :id 571 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2337 :flags (launch-asap))) - ) + :parts ((sp-item 2337 :flags (launch-asap)))) (defpartgroup group-part-progress-button-triangle :id 572 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2338 :flags (launch-asap))) - ) + :parts ((sp-item 2338 :flags (launch-asap)))) (defpartgroup group-part-progress-button-circle :id 573 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2339 :flags (launch-asap))) - ) + :parts ((sp-item 2339 :flags (launch-asap)))) (defpartgroup group-part-progress-card-slot-01 :id 92 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2142 :flags (launch-asap))) - ) + :parts ((sp-item 2142 :flags (launch-asap)))) (defpartgroup group-part-progress-card-slot-02 :id 93 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2143 :flags (launch-asap))) - ) + :parts ((sp-item 2143 :flags (launch-asap)))) (defpartgroup group-part-progress-card-slot-03 :id 94 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2144 :flags (launch-asap))) - ) + :parts ((sp-item 2144 :flags (launch-asap)))) (defpartgroup group-part-progress-card-slot-04 :id 95 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2145 :flags (launch-asap))) - ) + :parts ((sp-item 2145 :flags (launch-asap)))) (defpartgroup group-part-progress-hud-power-cell-center :id 96 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 338 :flags (launch-asap))) - ) + :parts ((sp-item 338 :flags (launch-asap)))) (defpart 337 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:scale-x (meters 15)) - (:scale-y (meters 11.5)) - (:r 128.0) - (:g 32.0) - (:b 0.0) - (:a 64.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-hud-tint-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:scale-x (meters 15)) + (:scale-y (meters 11.5)) + (:r 128.0) + (:g 32.0) + (:b 0.0) + (:a 64.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-hud-tint-func))) (defpart 2190 - :init-specs ((:texture (new 'static 'texture-id :index #x6e :page #x1cf)) - (:num 1.0) - (:scale-x (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:func 'part-progress-card-cell-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6e :page #x1cf)) + (:num 1.0) + (:scale-x (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:func 'part-progress-card-cell-func))) (defpart 2191 - :init-specs ((:texture (new 'static 'texture-id :index #x6d :page #x1cf)) - (:num 1.0) - (:x (meters 1.05)) - (:scale-x (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:func 'part-progress-card-cell-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6d :page #x1cf)) + (:num 1.0) + (:x (meters 1.05)) + (:scale-x (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:func 'part-progress-card-cell-func))) (defpart 2192 - :init-specs ((:texture (new 'static 'texture-id :index #x6c :page #x1cf)) - (:num 1.0) - (:x (meters 2.3)) - (:scale-x (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:func 'part-progress-card-cell-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6c :page #x1cf)) + (:num 1.0) + (:x (meters 2.3)) + (:scale-x (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:func 'part-progress-card-cell-func))) (defpart 2336 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x408)) - (:num 1.0) - (:scale-x (meters 1.6)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-hud-button-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x408)) + (:num 1.0) + (:scale-x (meters 1.6)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-hud-button-func))) (defpart 2337 - :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x408)) - (:num 1.0) - (:scale-x (meters 1.6)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-hud-button-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6 :page #x408)) + (:num 1.0) + (:scale-x (meters 1.6)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-hud-button-func))) (defpart 2338 - :init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x408)) - (:num 1.0) - (:scale-x (meters 1.6)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-hud-button-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x7 :page #x408)) + (:num 1.0) + (:scale-x (meters 1.6)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-hud-button-func))) (defpart 2339 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x408)) - (:num 1.0) - (:scale-x (meters 1.6)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-hud-button-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x408)) + (:num 1.0) + (:scale-x (meters 1.6)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-hud-button-func))) (defpart 2142 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:scale-x (meters 9.2)) - (:scale-y (meters 2)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 64.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:func 'part-progress-card-slot-01-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:scale-x (meters 9.2)) + (:scale-y (meters 2)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:func 'part-progress-card-slot-01-func))) (defpart 2143 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:scale-x (meters 9.2)) - (:scale-y (meters 2)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 64.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:func 'part-progress-card-slot-02-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:scale-x (meters 9.2)) + (:scale-y (meters 2)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:func 'part-progress-card-slot-02-func))) (defpart 2144 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:scale-x (meters 9.2)) - (:scale-y (meters 2)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 64.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:func 'part-progress-card-slot-03-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:scale-x (meters 9.2)) + (:scale-y (meters 2)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:func 'part-progress-card-slot-03-func))) (defpart 2145 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:scale-x (meters 9.2)) - (:scale-y (meters 2)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 64.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:func 'part-progress-card-slot-04-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:scale-x (meters 9.2)) + (:scale-y (meters 2)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 64.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:func 'part-progress-card-slot-04-func))) (defpart 332 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x408)) - (:num 1.0) - (:scale-x (meters 1.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x408)) + (:num 1.0) + (:scale-x (meters 1.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)))) (defpart 333 - :init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x408)) - (:num 1.0) - (:scale-x (meters 1.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1 :page #x408)) + (:num 1.0) + (:scale-x (meters 1.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)))) (defpart 334 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x408)) - (:num 1.0) - (:scale-x (meters 1.8)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x408)) + (:num 1.0) + (:scale-x (meters 1.8)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)))) (defpart 335 - :init-specs ((:texture (new 'static 'texture-id :page #x408)) - (:num 1.0) - (:scale-x (meters 3.5)) - (:scale-y (meters 13)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-hud-left-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x408)) + (:num 1.0) + (:scale-x (meters 3.5)) + (:scale-y (meters 13)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-hud-left-func))) (defpart 336 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x408)) - (:num 1.0) - (:scale-x (meters 6)) - (:scale-y (meters 13)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-hud-right-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x408)) + (:num 1.0) + (:scale-x (meters 6)) + (:scale-y (meters 13)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-hud-right-func))) (defpart 339 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:userdata 4.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:userdata 4.0) + (:func 'fuel-cell-progress-hud-orbit-callback))) (defpart 340 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:userdata 5.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:userdata 5.0) + (:func 'fuel-cell-progress-hud-orbit-callback))) (defpart 341 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:userdata 6.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:userdata 6.0) + (:func 'fuel-cell-progress-hud-orbit-callback))) (defpart 342 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:userdata 7.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:userdata 7.0) + (:func 'fuel-cell-progress-hud-orbit-callback))) (defpart 343 - :init-specs ((:texture (new 'static 'texture-id :index #x31 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - (:userdata 9.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x31 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)) + (:userdata 9.0) + (:func 'fuel-cell-progress-hud-orbit-callback))) (defpart 338 - :init-specs ((:texture (new 'static 'texture-id :index #x30 :page #x2)) - (:num 1.0) - (:scale-x (meters 1.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:userdata 3.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x30 :page #x2)) + (:num 1.0) + (:scale-x (meters 1.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:userdata 3.0) + (:func 'fuel-cell-progress-hud-orbit-callback))) (defpart 344 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 345 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.5) - (:z (meters 0.52734375)) - (:scale-x (meters 0.25)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.07) (meters 0.46)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 0.35555556) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit9 bit13)) - (:userdata -1.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - (:next-time (seconds 0.3)) - (:next-launcher 232) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.5) + (:z (meters 0.52734375)) + (:scale-x (meters 0.25)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.07) (meters 0.46)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit9 bit13)) + (:userdata -1.0) + (:func 'fuel-cell-progress-hud-orbit-callback) + (:next-time (seconds 0.3)) + (:next-launcher 232))) (defpart 346 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.06) - (:z (meters 0.52734375)) - (:scale-x (meters 1) (meters 0.25)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 0.32) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit9 bit13)) - (:userdata -1.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - (:next-time (seconds 0.25)) - (:next-launcher 232) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.06) + (:z (meters 0.52734375)) + (:scale-x (meters 1) (meters 0.25)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit9 bit13)) + (:userdata -1.0) + (:func 'fuel-cell-progress-hud-orbit-callback) + (:next-time (seconds 0.25)) + (:next-launcher 232))) (defpart 347 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:z (meters 0.52734375)) - (:scale-x (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.8)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 64.0) - (:rotvel-z (degrees -0.4)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit9 bit13)) - (:userdata -1.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:z (meters 0.52734375)) + (:scale-x (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.8)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 64.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit9 bit13)) + (:userdata -1.0) + (:func 'fuel-cell-progress-hud-orbit-callback))) (defpart 348 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:z (meters 0.52734375)) - (:scale-x (meters 2.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:rotvel-z (degrees 0.3)) - (:timer (seconds -0.005)) - (:flags (bit2 bit3 bit9 bit13)) - (:userdata -1.0) - (:func 'fuel-cell-progress-hud-orbit-callback) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:z (meters 0.52734375)) + (:scale-x (meters 2.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds -0.005)) + (:flags (bit2 bit3 bit9 bit13)) + (:userdata -1.0) + (:func 'fuel-cell-progress-hud-orbit-callback))) (defpartgroup group-part-progress-hud-power-cell-whole :id 97 :flags (use-local-clock screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 338 :flags (launch-asap)) - (sp-item 347 :flags (launch-asap) :period (seconds 12) :length (seconds 0.017)) - (sp-item 348 :flags (launch-asap) :period (seconds 12) :length (seconds 0.017)) - (sp-item 343 :flags (launch-asap)) - (sp-item 339 :flags (launch-asap)) - (sp-item 340 :flags (launch-asap)) - (sp-item 341 :flags (launch-asap)) - (sp-item 342 :flags (launch-asap)) - ) - ) + :parts + ((sp-item 338 :flags (launch-asap)) + (sp-item 347 :flags (launch-asap) :period (seconds 12) :length (seconds 0.017)) + (sp-item 348 :flags (launch-asap) :period (seconds 12) :length (seconds 0.017)) + (sp-item 343 :flags (launch-asap)) + (sp-item 339 :flags (launch-asap)) + (sp-item 340 :flags (launch-asap)) + (sp-item 341 :flags (launch-asap)) + (sp-item 342 :flags (launch-asap)))) (defpartgroup group-part-progress-buzzer :id 98 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 1982 :flags (launch-asap) :binding 1981) (sp-item 1981 :flags (start-dead launch-asap))) - ) + :parts ((sp-item 1982 :flags (launch-asap) :binding 1981) (sp-item 1981 :flags (start-dead launch-asap)))) (defpart 1982 - :init-specs ((:texture (new 'static 'texture-id :index #x2a :page #x2)) - (:num 1.0) - (:scale-x (meters 2.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2a :page #x2)) + (:num 1.0) + (:scale-x (meters 2.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)))) (defpart 1981 - :init-specs ((:texture (new 'static 'texture-id :index #x2a :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 1.3333334)) - (:z (meters 0.1)) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:omega 0.0) - (:vel-x (meters 0.053333335)) - (:vel-z (meters 0)) - (:timer (seconds -0.005)) - (:flags (bit2 bit7 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2a :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 1.3333334)) + (:z (meters 0.1)) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega 0.0) + (:vel-x (meters 0.053333335)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (bit2 bit7 bit9 bit13)))) (defpartgroup group-part-progress-orb :id 99 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 1983 :flags (launch-asap))) - ) + :parts ((sp-item 1983 :flags (launch-asap)))) (defpart 1983 - :init-specs ((:texture (new 'static 'texture-id :index #x2c :page #x2)) - (:num 1.0) - (:scale-x (meters 2.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2c :page #x2)) + (:num 1.0) + (:scale-x (meters 2.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)))) (defpartgroup group-part-progress-buzzer-small :id 100 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 1985 :flags (launch-asap) :binding 1984) (sp-item 1984 :flags (start-dead launch-asap))) - ) + :parts ((sp-item 1985 :flags (launch-asap) :binding 1984) (sp-item 1984 :flags (start-dead launch-asap)))) (defpart 1985 - :init-specs ((:texture (new 'static 'texture-id :index #x2a :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2a :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit9 bit13)))) (defpart 1984 - :init-specs ((:texture (new 'static 'texture-id :index #x2a :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 1.3333334)) - (:z (meters 0.05)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:omega 0.0) - (:vel-x (meters 0.05037037)) - (:vel-z (meters 0)) - (:timer (seconds -0.005)) - (:flags (bit2 bit7 bit9 bit13)) - (:func 'part-progress-hud-buzzer-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2a :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 1.3333334)) + (:z (meters 0.05)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega 0.0) + (:vel-x (meters 0.05037037)) + (:vel-z (meters 0)) + (:timer (seconds -0.005)) + (:flags (bit2 bit7 bit9 bit13)) + (:func 'part-progress-hud-buzzer-func))) (defpartgroup group-part-progress-orb-small :id 101 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 1986 :flags (launch-asap))) - ) + :parts ((sp-item 1986 :flags (launch-asap)))) (defpart 1986 - :init-specs ((:texture (new 'static 'texture-id :index #x2c :page #x2)) - (:num 1.0) - (:scale-x (meters 1.3)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-hud-orb-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2c :page #x2)) + (:num 1.0) + (:scale-x (meters 1.3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-hud-orb-func))) (defpartgroup group-part-progress-save-icon :id 615 :flags (screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 2478 :flags (launch-asap))) - ) + :parts ((sp-item 2478 :flags (launch-asap)))) (defpart 2478 - :init-specs ((:texture (new 'static 'texture-id :index #x6b :page #x1cf)) - (:num 1.0) - (:scale-x (meters 1.8)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - (:func 'part-progress-save-icon-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6b :page #x1cf)) + (:num 1.0) + (:scale-x (meters 1.8)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)) + (:func 'part-progress-save-icon-func))) (defmacro progress-new-particle (&key part &key x &key y &key z) `(when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) @@ -937,11 +804,8 @@ (set! (-> this particles part-nb init-pos x) ,x) (set! (-> this particles part-nb init-pos y) ,y) (set! (-> this particles part-nb init-pos z) ,z) - (set! (-> this particles part-nb part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) - ) + (set! (-> this particles part-nb part matrix) -1)) + (+! (-> this nb-of-particles) 1))) (defmethod initialize-particles ((this progress)) (progress-new-particle :part 90 :x 256.0 :y 224.0 :z 16.0) ;; tint @@ -981,5 +845,4 @@ (progress-new-particle :part 86 :x -320.0 :y 412.0 :z 14.0) ;; next ) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/ui/progress/progress-static.gc b/goal_src/jak1/engine/ui/progress/progress-static.gc index 18f09adfb9..72e4a3b184 100644 --- a/goal_src/jak1/engine/ui/progress/progress-static.gc +++ b/goal_src/jak1/engine/ui/progress/progress-static.gc @@ -1,163 +1,262 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ui/progress/progress-h.gc") (require "engine/ui/text-h.gc") (require "engine/game/task/game-task-h.gc") -;; name: progress-static.gc -;; name in dgo: progress-static -;; dgos: GAME, ENGINE - ;; This file contains the layouts for all of the menus. ;; options in the start menu options (define *main-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id save-game) :scale #t :param3 (game-option-menu save-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id quit-game) :scale #t :param3 (game-option-menu quit)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-options) + :scale #t + :param3 (game-option-menu game-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id graphic-options) + :scale #t + :param3 (game-option-menu graphic-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id sound-options) + :scale #t + :param3 (game-option-menu sound-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id load-game) + :scale #t + :param3 (game-option-menu load-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id save-game) + :scale #t + :param3 (game-option-menu save-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id quit-game) + :scale #t + :param3 (game-option-menu quit)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *title* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id new-game) :scale #t :param3 (game-option-menu save-game-title)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id options) :scale #t :param3 (game-option-menu settings-title)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id new-game) + :scale #t + :param3 (game-option-menu save-game-title)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id load-game) + :scale #t + :param3 (game-option-menu load-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id options) + :scale #t + :param3 (game-option-menu settings-title)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-options) + :scale #t + :param3 (game-option-menu game-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id graphic-options) + :scale #t + :param3 (game-option-menu graphic-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id sound-options) + :scale #t + :param3 (game-option-menu sound-settings)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *main-options-demo* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-options) + :scale #t + :param3 (game-option-menu game-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id graphic-options) + :scale #t + :param3 (game-option-menu graphic-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id sound-options) + :scale #t + :param3 (game-option-menu sound-settings)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *main-options-demo-shared* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id exit-demo) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-options) + :scale #t + :param3 (game-option-menu game-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id graphic-options) + :scale #t + :param3 (game-option-menu graphic-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id sound-options) + :scale #t + :param3 (game-option-menu sound-settings)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id exit-demo) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *game-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) - (new 'static 'game-option :option-type (game-option-type language) :name (text-id language) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) + (new 'static 'game-option :option-type (game-option-type language) :name (text-id language) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *game-options-japan* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *game-options-demo* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *graphic-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type center-screen) :name (text-id center-screen) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (text-id aspect-ratio) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type center-screen) :name (text-id center-screen) :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (text-id aspect-ratio) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *graphic-title-options-pal* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type center-screen) :name (text-id center-screen) :scale #t) - (new 'static 'game-option :option-type (game-option-type video-mode) :name (text-id video-mode) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (text-id aspect-ratio) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type center-screen) :name (text-id center-screen) :scale #t) + (new 'static 'game-option :option-type (game-option-type video-mode) :name (text-id video-mode) :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-ratio) :name (text-id aspect-ratio) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *sound-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :name (text-id sfx-volume) :scale #t :param2 100.0) - (new 'static 'game-option :name (text-id music-volume) :scale #t :param2 100.0) - (new 'static 'game-option :name (text-id speech-volume) :scale #t :param2 100.0) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :name (text-id sfx-volume) :scale #t :param2 100.0) + (new 'static 'game-option :name (text-id music-volume) :scale #t :param2 100.0) + (new 'static 'game-option :name (text-id speech-volume) :scale #t :param2 100.0) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *yes-no-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type yes-no) :scale #f) - ) - ) +(define *yes-no-options* + (new 'static 'boxed-array :type game-option (new 'static 'game-option :option-type (game-option-type yes-no) :scale #f))) (define *ok-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id ok) :scale #f) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id ok) :scale #f))) (define *load-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #f) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #f))) (define *save-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #f) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #f))) (define *save-options-title* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id continue-without-saving) :scale #f) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #f) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id continue-without-saving) :scale #f) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #f))) ;; maps options to a progress screen ;; the length matches with `(progress-screen max)` -(define *options-remap* (new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length (#if (not PC_PORT) 35 68))) +(define *options-remap* + (new 'static 'boxed-array :type (array game-option) :length 0 :allocated-length (#if (not PC_PORT) 35 68))) ;; added in PC port (defenum level-task-data-index @@ -178,1228 +277,1128 @@ (cave 13) (lavatube 14) (citadel 15) - (max 16) - ) + (max 16)) ;; maps level-info indices to the appropriate offset in *level-task-data* (define *level-task-data-remap* - (new 'static 'boxed-array :type int32 - (level-task-data-index training) - (level-task-data-index village1) - (level-task-data-index beach) - (level-task-data-index jungle) ;; jungle? - (level-task-data-index jungle) ;; jungleb? - (level-task-data-index misty) - (level-task-data-index firecanyon) - (level-task-data-index village2) - (level-task-data-index sunken) ;; sunken? - (level-task-data-index sunken) ;; sunkenb? - (level-task-data-index swamp) - (level-task-data-index rolling) - (level-task-data-index ogre) - (level-task-data-index village3) - (level-task-data-index snow) - (level-task-data-index cave) ;; maincave? - (level-task-data-index cave) ;; robocave? - (level-task-data-index cave) ;; darkcave? - (level-task-data-index lavatube) - (level-task-data-index citadel) ;; citadel? - (level-task-data-index citadel) ;; finalboss? - (level-task-data-index misty) ;; demo? - (level-task-data-index misty) ;; intro? - ) - ) + (new 'static + 'boxed-array + :type + int32 + (level-task-data-index training) + (level-task-data-index village1) + (level-task-data-index beach) + (level-task-data-index jungle) ;; jungle? + (level-task-data-index jungle) ;; jungleb? + (level-task-data-index misty) + (level-task-data-index firecanyon) + (level-task-data-index village2) + (level-task-data-index sunken) ;; sunken? + (level-task-data-index sunken) ;; sunkenb? + (level-task-data-index swamp) + (level-task-data-index rolling) + (level-task-data-index ogre) + (level-task-data-index village3) + (level-task-data-index snow) + (level-task-data-index cave) ;; maincave? + (level-task-data-index cave) ;; robocave? + (level-task-data-index cave) ;; darkcave? + (level-task-data-index lavatube) + (level-task-data-index citadel) ;; citadel? + (level-task-data-index citadel) ;; finalboss? + (level-task-data-index misty) ;; demo? + (level-task-data-index misty) ;; intro? + )) ;; maps goal language ID to its name string ID (define *language-name-remap* - (new 'static 'boxed-array :type text-id - (text-id english) - (text-id french) - (text-id german) - (text-id spanish) - (text-id italian) - (text-id japanese) - ) - ) + (new 'static + 'boxed-array + :type + text-id + (text-id english) + (text-id french) + (text-id german) + (text-id spanish) + (text-id italian) + (text-id japanese))) ;; all level tasks (define *level-task-data* - (new 'static 'boxed-array :type level-tasks-info - (new 'static 'level-tasks-info - :level-name-id (text-id training-level-name) - :text-group-index 1 - :nb-of-tasks 4 - :buzzer-task-index 3 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task training-gimmie) - :task-name - (new 'static 'array text-id 4 - (text-id training-gimmie-task-name) - (text-id training-gimmie-task-name) - (text-id training-gimmie-task-name) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task training-door) - :task-name - (new 'static 'array text-id 4 - (text-id training-door-task-name) - (text-id training-door-task-name) - (text-id training-door-task-name) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task training-climb) - :task-name - (new 'static 'array text-id 4 - (text-id training-climb-task-name) - (text-id training-climb-task-name) - (text-id training-climb-task-name) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task training-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id training-buzzer-task-name) - (text-id training-buzzer-task-name) - (text-id training-buzzer-task-name) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id village1-level-name) - :text-group-index 1 - :nb-of-tasks 6 - :buzzer-task-index 5 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task village1-mayor-money) - :task-name - (new 'static 'array text-id 4 - (text-id village1-mayor-money) - (text-id village1-mayor-money) - (text-id village1-mayor-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village1-uncle-money) - :task-name - (new 'static 'array text-id 4 - (text-id village1-uncle-money) - (text-id village1-uncle-money) - (text-id village1-uncle-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village1-yakow) - :task-name - (new 'static 'array text-id 4 - (text-id village1-yakow-herd) - (text-id village1-yakow-herd) - (text-id village1-yakow-return) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village1-oracle-money1) - :task-name - (new 'static 'array text-id 4 - (text-id village1-oracle) - (text-id village1-oracle) - (text-id village1-oracle) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village1-oracle-money2) - :task-name - (new 'static 'array text-id 4 - (text-id village1-oracle) - (text-id village1-oracle) - (text-id village1-oracle) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village1-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id beach-buzzer) - (text-id beach-buzzer) - (text-id beach-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id beach-level-name) - :text-group-index 1 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task beach-ecorocks) - :task-name - (new 'static 'array text-id 4 - (text-id beach-ecorocks) - (text-id beach-ecorocks) - (text-id beach-ecorocks) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task beach-flutflut) - :task-name - (new 'static 'array text-id 4 - (text-id beach-flutflut-push) - (text-id beach-flutflut-push) - (text-id beach-flutflut-meet) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task beach-pelican) - :task-name - (new 'static 'array text-id 4 - (text-id beach-pelican) - (text-id beach-pelican) - (text-id beach-pelican) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task beach-seagull) - :task-name - (new 'static 'array text-id 4 - (text-id beach-seagull) - (text-id beach-seagull) - (text-id beach-seagull-get) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task beach-cannon) - :task-name - (new 'static 'array text-id 4 - (text-id beach-cannon) - (text-id beach-cannon) - (text-id beach-cannon) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task beach-gimmie) - :task-name - (new 'static 'array text-id 4 - (text-id beach-gimmie) - (text-id beach-gimmie) - (text-id beach-gimmie) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task beach-sentinel) - :task-name - (new 'static 'array text-id 4 - (text-id beach-sentinel) - (text-id beach-sentinel) - (text-id beach-sentinel) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task beach-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id beach-buzzer) - (text-id beach-buzzer) - (text-id beach-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id jungle-level-name) - :text-group-index 1 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task jungle-lurkerm) - :task-name - (new 'static 'array text-id 4 - (text-id jungle-lurkerm-unblock) - (text-id jungle-lurkerm-connect) - (text-id jungle-lurkerm-return) - (text-id zero) - ) - :text-index-when-resolved 1 - ) - (new 'static 'task-info-data - :task-id (game-task jungle-tower) - :task-name - (new 'static 'array text-id 4 - (text-id jungle-tower) - (text-id jungle-tower) - (text-id jungle-tower) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task jungle-eggtop) - :task-name - (new 'static 'array text-id 4 - (text-id jungle-eggtop) - (text-id jungle-eggtop) - (text-id jungle-eggtop) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task jungle-plant) - :task-name - (new 'static 'array text-id 4 - (text-id jungle-plant) - (text-id jungle-plant) - (text-id jungle-plant) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task jungle-fishgame) - :task-name - (new 'static 'array text-id 4 - (text-id jungle-fishgame) - (text-id jungle-fishgame) - (text-id jungle-fishgame) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task jungle-canyon-end) - :task-name - (new 'static 'array text-id 4 - (text-id jungle-canyon-end) - (text-id jungle-canyon-end) - (text-id jungle-canyon-end) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task jungle-temple-door) - :task-name - (new 'static 'array text-id 4 - (text-id jungle-temple-door) - (text-id jungle-temple-door) - (text-id jungle-temple-door) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task jungle-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id beach-buzzer) - (text-id beach-buzzer) - (text-id beach-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id misty-level-name) - :text-group-index 1 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task misty-muse) - :task-name - (new 'static 'array text-id 4 - (text-id misty-muse-catch) - (text-id misty-muse-catch) - (text-id misty-muse-return) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task misty-boat) - :task-name - (new 'static 'array text-id 4 - (text-id misty-boat) - (text-id misty-boat) - (text-id misty-boat) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task misty-cannon) - :task-name - (new 'static 'array text-id 4 - (text-id misty-cannon) - (text-id misty-cannon) - (text-id misty-cannon) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task misty-warehouse) - :task-name - (new 'static 'array text-id 4 - (text-id misty-return-to-pool) - (text-id misty-return-to-pool) - (text-id misty-return-to-pool) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task misty-bike) - :task-name - (new 'static 'array text-id 4 - (text-id misty-find-transpad) - (text-id misty-balloon-lurkers) - (text-id misty-find-transpad) - (text-id zero) - ) - :text-index-when-resolved 1 - ) - (new 'static 'task-info-data - :task-id (game-task misty-bike-jump) - :task-name - (new 'static 'array text-id 4 - (text-id misty-bike-jump) - (text-id misty-bike-jump) - (text-id misty-bike-jump) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task misty-eco-challenge) - :task-name - (new 'static 'array text-id 4 - (text-id misty-eco-challenge) - (text-id misty-eco-challenge) - (text-id misty-eco-challenge) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task misty-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id beach-buzzer) - (text-id beach-buzzer) - (text-id beach-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id firecanyon-level-name) - :text-group-index 5 - :nb-of-tasks 2 - :buzzer-task-index 1 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task firecanyon-end) - :task-name - (new 'static 'array text-id 4 - (text-id firecanyon-end) - (text-id firecanyon-end) - (text-id firecanyon-end) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task firecanyon-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id firecanyon-buzzer) - (text-id firecanyon-buzzer) - (text-id firecanyon-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id village2-level-name) - :text-group-index 2 - :nb-of-tasks 6 - :buzzer-task-index 5 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task village2-gambler-money) - :task-name - (new 'static 'array text-id 4 - (text-id village2-gambler-money) - (text-id village2-gambler-money) - (text-id village2-gambler-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village2-geologist-money) - :task-name - (new 'static 'array text-id 4 - (text-id village2-geologist-money) - (text-id village2-geologist-money) - (text-id village2-geologist-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village2-warrior-money) - :task-name - (new 'static 'array text-id 4 - (text-id village2-warrior-money) - (text-id village2-warrior-money) - (text-id village2-warrior-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village2-oracle-money1) - :task-name - (new 'static 'array text-id 4 - (text-id village2-oracle-money) - (text-id village2-oracle-money) - (text-id village2-oracle-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village2-oracle-money2) - :task-name - (new 'static 'array text-id 4 - (text-id village2-oracle-money) - (text-id village2-oracle-money) - (text-id village2-oracle-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village2-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id generic-buzzer) - (text-id generic-buzzer) - (text-id generic-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id sunken-level-name) - :text-group-index 2 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task sunken-room) - :task-name - (new 'static 'array text-id 4 - (text-id sunken-elevator-raise) - (text-id sunken-elevator-raise) - (text-id sunken-elevator-get-to-roof) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task sunken-pipe) - :task-name - (new 'static 'array text-id 4 - (text-id sunken-pipe) - (text-id sunken-pipe) - (text-id sunken-pipe) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task sunken-slide) - :task-name - (new 'static 'array text-id 4 - (text-id sunken-slide) - (text-id sunken-slide) - (text-id sunken-slide) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task sunken-sharks) - :task-name - (new 'static 'array text-id 4 - (text-id sunken-pool) - (text-id sunken-pool) - (text-id sunken-pool) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task sunken-platforms) - :task-name - (new 'static 'array text-id 4 - (text-id sunken-platforms) - (text-id sunken-platforms) - (text-id sunken-platforms) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task sunken-top-of-helix) - :task-name - (new 'static 'array text-id 4 - (text-id sunken-climb-tube) - (text-id sunken-climb-tube) - (text-id sunken-climb-tube) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task sunken-spinning-room) - :task-name - (new 'static 'array text-id 4 - (text-id sunken-spinning-room) - (text-id sunken-spinning-room) - (text-id sunken-spinning-room) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task sunken-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id generic-buzzer) - (text-id generic-buzzer) - (text-id generic-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id swamp-level-name) - :text-group-index 2 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task swamp-flutflut) - :task-name - (new 'static 'array text-id 4 - (text-id swamp-flutflut) - (text-id swamp-flutflut) - (text-id swamp-flutflut) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task swamp-billy) - :task-name - (new 'static 'array text-id 4 - (text-id swamp-billy) - (text-id swamp-billy) - (text-id swamp-billy) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task swamp-battle) - :task-name - (new 'static 'array text-id 4 - (text-id swamp-battle) - (text-id swamp-battle) - (text-id swamp-battle) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task swamp-tether-4) - :task-name - (new 'static 'array text-id 4 - (text-id swamp-tether) - (text-id swamp-tether) - (text-id swamp-tether) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task swamp-tether-1) - :task-name - (new 'static 'array text-id 4 - (text-id swamp-tether) - (text-id swamp-tether) - (text-id swamp-tether) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task swamp-tether-2) - :task-name - (new 'static 'array text-id 4 - (text-id swamp-tether) - (text-id swamp-tether) - (text-id swamp-tether) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task swamp-tether-3) - :task-name - (new 'static 'array text-id 4 - (text-id swamp-tether) - (text-id swamp-tether) - (text-id swamp-tether) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task swamp-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id generic-buzzer) - (text-id generic-buzzer) - (text-id generic-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id rolling-level-name) - :text-group-index 2 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task rolling-moles) - :task-name - (new 'static 'array text-id 4 - (text-id rolling-moles) - (text-id rolling-moles) - (text-id rolling-moles-return) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task rolling-robbers) - :task-name - (new 'static 'array text-id 4 - (text-id rolling-robbers) - (text-id rolling-robbers) - (text-id rolling-robbers) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task rolling-race) - :task-name - (new 'static 'array text-id 4 - (text-id rolling-race) - (text-id rolling-race) - (text-id rolling-race-return) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task rolling-lake) - :task-name - (new 'static 'array text-id 4 - (text-id rolling-lake) - (text-id rolling-lake) - (text-id rolling-lake) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task rolling-plants) - :task-name - (new 'static 'array text-id 4 - (text-id rolling-plants) - (text-id rolling-plants) - (text-id rolling-plants) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task rolling-ring-chase-1) - :task-name - (new 'static 'array text-id 4 - (text-id rolling-ring-chase-1) - (text-id rolling-ring-chase-1) - (text-id rolling-ring-chase-1) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task rolling-ring-chase-2) - :task-name - (new 'static 'array text-id 4 - (text-id rolling-ring-chase-2) - (text-id rolling-ring-chase-2) - (text-id rolling-ring-chase-2) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task rolling-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id generic-buzzer) - (text-id generic-buzzer) - (text-id generic-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id ogre-level-name) - :text-group-index 6 - :nb-of-tasks 4 - :buzzer-task-index 3 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task ogre-boss) - :task-name - (new 'static 'array text-id 4 - (text-id ogre-boss) - (text-id ogre-boss) - (text-id ogre-boss) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task ogre-end) - :task-name - (new 'static 'array text-id 4 - (text-id ogre-end) - (text-id ogre-end) - (text-id ogre-end) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task ogre-secret) - :task-name - (new 'static 'array text-id 4 - (text-id hidden-power-cell) - (text-id hidden-power-cell) - (text-id hidden-power-cell) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task ogre-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id ogre-buzzer) - (text-id ogre-buzzer) - (text-id ogre-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id village3-level-name) - :text-group-index 3 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task village3-miner-money1) - :task-name - (new 'static 'array text-id 4 - (text-id village3-miner-money) - (text-id village3-miner-money) - (text-id village3-miner-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village3-miner-money2) - :task-name - (new 'static 'array text-id 4 - (text-id village3-miner-money) - (text-id village3-miner-money) - (text-id village3-miner-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village3-miner-money3) - :task-name - (new 'static 'array text-id 4 - (text-id village3-miner-money) - (text-id village3-miner-money) - (text-id village3-miner-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village3-miner-money4) - :task-name - (new 'static 'array text-id 4 - (text-id village3-miner-money) - (text-id village3-miner-money) - (text-id village3-miner-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village3-oracle-money1) - :task-name - (new 'static 'array text-id 4 - (text-id village3-oracle-money) - (text-id village3-oracle-money) - (text-id village3-oracle-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village3-oracle-money2) - :task-name - (new 'static 'array text-id 4 - (text-id village3-oracle-money) - (text-id village3-oracle-money) - (text-id village3-oracle-money) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village3-extra1) - :task-name - (new 'static 'array text-id 4 - (text-id hidden-power-cell) - (text-id hidden-power-cell) - (text-id hidden-power-cell) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task village3-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id village3-buzzer) - (text-id village3-buzzer) - (text-id village3-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id snow-level-name) - :text-group-index 3 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task snow-eggtop) - :task-name - (new 'static 'array text-id 4 - (text-id snow-eggtop) - (text-id snow-eggtop) - (text-id snow-eggtop) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task snow-ram) - :task-name - (new 'static 'array text-id 4 - (text-id snow-ram-3-left) - (text-id snow-ram-2-left) - (text-id snow-ram-1-left) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task snow-bumpers) - :task-name - (new 'static 'array text-id 4 - (text-id snow-bumpers) - (text-id snow-bumpers) - (text-id snow-bumpers) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task snow-cage) - :task-name - (new 'static 'array text-id 4 - (text-id snow-cage) - (text-id snow-cage) - (text-id snow-cage) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task snow-fort) - :task-name - (new 'static 'array text-id 4 - (text-id snow-fort) - (text-id snow-fort) - (text-id snow-fort) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task snow-ball) - :task-name - (new 'static 'array text-id 4 - (text-id snow-ball) - (text-id snow-ball) - (text-id snow-ball) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task snow-bunnies) - :task-name - (new 'static 'array text-id 4 - (text-id snow-bunnies) - (text-id snow-bunnies) - (text-id snow-bunnies) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task snow-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id village3-buzzer) - (text-id village3-buzzer) - (text-id village3-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id cave-level-name) - :text-group-index 3 - :nb-of-tasks 8 - :buzzer-task-index 7 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task cave-gnawers) - :task-name - (new 'static 'array text-id 4 - (text-id cave-gnawers) - (text-id cave-gnawers) - (text-id cave-gnawers) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task cave-dark-crystals) - :task-name - (new 'static 'array text-id 4 - (text-id cave-dark-crystals) - (text-id cave-dark-crystals) - (text-id cave-dark-crystals) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task cave-dark-climb) - :task-name - (new 'static 'array text-id 4 - (text-id cave-dark-climb) - (text-id cave-dark-climb) - (text-id cave-dark-climb) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task cave-robot-climb) - :task-name - (new 'static 'array text-id 4 - (text-id cave-robot-climb) - (text-id cave-robot-climb) - (text-id cave-robot-climb) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task cave-swing-poles) - :task-name - (new 'static 'array text-id 4 - (text-id cave-swing-poles) - (text-id cave-swing-poles) - (text-id cave-swing-poles) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task cave-spider-tunnel) - :task-name - (new 'static 'array text-id 4 - (text-id cave-spider-tunnel) - (text-id cave-spider-tunnel) - (text-id cave-spider-tunnel) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task cave-platforms) - :task-name - (new 'static 'array text-id 4 - (text-id cave-platforms) - (text-id cave-platforms) - (text-id cave-platforms) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task cave-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id village3-buzzer) - (text-id village3-buzzer) - (text-id village3-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id lavatube-level-name) - :text-group-index 3 - :nb-of-tasks 2 - :buzzer-task-index 1 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task lavatube-end) - :task-name - (new 'static 'array text-id 4 - (text-id lavatube-end) - (text-id lavatube-end) - (text-id lavatube-end) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task lavatube-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id lavatube-buzzer) - (text-id lavatube-buzzer) - (text-id lavatube-buzzer) - (text-id zero) - ) - ) - ) - ) - (new 'static 'level-tasks-info - :level-name-id (text-id citadel-level-name) - :text-group-index 4 - :nb-of-tasks 5 - :buzzer-task-index 4 - :task-info - (new 'static 'array task-info-data 8 - (new 'static 'task-info-data - :task-id (game-task citadel-sage-blue) - :task-name - (new 'static 'array text-id 4 - (text-id citadel-sage-blue) - (text-id citadel-sage-blue) - (text-id citadel-sage-blue) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task citadel-sage-red) - :task-name - (new 'static 'array text-id 4 - (text-id citadel-sage-red) - (text-id citadel-sage-red) - (text-id citadel-sage-red) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task citadel-sage-yellow) - :task-name - (new 'static 'array text-id 4 - (text-id citadel-sage-yellow) - (text-id citadel-sage-yellow) - (text-id citadel-sage-yellow) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task citadel-sage-green) - :task-name - (new 'static 'array text-id 4 - (text-id citadel-sage-green) - (text-id citadel-sage-green) - (text-id citadel-sage-green) - (text-id zero) - ) - ) - (new 'static 'task-info-data - :task-id (game-task citadel-buzzer) - :task-name - (new 'static 'array text-id 4 - (text-id citadel-buzzer) - (text-id citadel-buzzer) - (text-id citadel-buzzer) - (text-id zero) - ) - ) - ) - ) - ) - ) + (new 'static + 'boxed-array + :type + level-tasks-info + (new 'static + 'level-tasks-info + :level-name-id (text-id training-level-name) + :text-group-index 1 + :nb-of-tasks 4 + :buzzer-task-index 3 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task training-gimmie) + :task-name + (new 'static + 'array + text-id + 4 + (text-id training-gimmie-task-name) + (text-id training-gimmie-task-name) + (text-id training-gimmie-task-name) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task training-door) + :task-name + (new 'static + 'array + text-id + 4 + (text-id training-door-task-name) + (text-id training-door-task-name) + (text-id training-door-task-name) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task training-climb) + :task-name + (new 'static + 'array + text-id + 4 + (text-id training-climb-task-name) + (text-id training-climb-task-name) + (text-id training-climb-task-name) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task training-buzzer) + :task-name + (new 'static + 'array + text-id + 4 + (text-id training-buzzer-task-name) + (text-id training-buzzer-task-name) + (text-id training-buzzer-task-name) + (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id village1-level-name) + :text-group-index 1 + :nb-of-tasks 6 + :buzzer-task-index 5 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task village1-mayor-money) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village1-mayor-money) + (text-id village1-mayor-money) + (text-id village1-mayor-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village1-uncle-money) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village1-uncle-money) + (text-id village1-uncle-money) + (text-id village1-uncle-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village1-yakow) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village1-yakow-herd) + (text-id village1-yakow-herd) + (text-id village1-yakow-return) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village1-oracle-money1) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village1-oracle) + (text-id village1-oracle) + (text-id village1-oracle) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village1-oracle-money2) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village1-oracle) + (text-id village1-oracle) + (text-id village1-oracle) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village1-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id beach-buzzer) (text-id beach-buzzer) (text-id beach-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id beach-level-name) + :text-group-index 1 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task beach-ecorocks) + :task-name + (new 'static 'array text-id 4 (text-id beach-ecorocks) (text-id beach-ecorocks) (text-id beach-ecorocks) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task beach-flutflut) + :task-name + (new 'static + 'array + text-id + 4 + (text-id beach-flutflut-push) + (text-id beach-flutflut-push) + (text-id beach-flutflut-meet) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task beach-pelican) + :task-name + (new 'static 'array text-id 4 (text-id beach-pelican) (text-id beach-pelican) (text-id beach-pelican) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task beach-seagull) + :task-name + (new 'static 'array text-id 4 (text-id beach-seagull) (text-id beach-seagull) (text-id beach-seagull-get) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task beach-cannon) + :task-name + (new 'static 'array text-id 4 (text-id beach-cannon) (text-id beach-cannon) (text-id beach-cannon) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task beach-gimmie) + :task-name + (new 'static 'array text-id 4 (text-id beach-gimmie) (text-id beach-gimmie) (text-id beach-gimmie) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task beach-sentinel) + :task-name + (new 'static 'array text-id 4 (text-id beach-sentinel) (text-id beach-sentinel) (text-id beach-sentinel) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task beach-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id beach-buzzer) (text-id beach-buzzer) (text-id beach-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id jungle-level-name) + :text-group-index 1 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task jungle-lurkerm) + :task-name + (new 'static + 'array + text-id + 4 + (text-id jungle-lurkerm-unblock) + (text-id jungle-lurkerm-connect) + (text-id jungle-lurkerm-return) + (text-id zero)) + :text-index-when-resolved 1) + (new 'static + 'task-info-data + :task-id (game-task jungle-tower) + :task-name + (new 'static 'array text-id 4 (text-id jungle-tower) (text-id jungle-tower) (text-id jungle-tower) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task jungle-eggtop) + :task-name + (new 'static 'array text-id 4 (text-id jungle-eggtop) (text-id jungle-eggtop) (text-id jungle-eggtop) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task jungle-plant) + :task-name + (new 'static 'array text-id 4 (text-id jungle-plant) (text-id jungle-plant) (text-id jungle-plant) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task jungle-fishgame) + :task-name + (new 'static + 'array + text-id + 4 + (text-id jungle-fishgame) + (text-id jungle-fishgame) + (text-id jungle-fishgame) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task jungle-canyon-end) + :task-name + (new 'static + 'array + text-id + 4 + (text-id jungle-canyon-end) + (text-id jungle-canyon-end) + (text-id jungle-canyon-end) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task jungle-temple-door) + :task-name + (new 'static + 'array + text-id + 4 + (text-id jungle-temple-door) + (text-id jungle-temple-door) + (text-id jungle-temple-door) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task jungle-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id beach-buzzer) (text-id beach-buzzer) (text-id beach-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id misty-level-name) + :text-group-index 1 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task misty-muse) + :task-name + (new 'static + 'array + text-id + 4 + (text-id misty-muse-catch) + (text-id misty-muse-catch) + (text-id misty-muse-return) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task misty-boat) + :task-name + (new 'static 'array text-id 4 (text-id misty-boat) (text-id misty-boat) (text-id misty-boat) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task misty-cannon) + :task-name + (new 'static 'array text-id 4 (text-id misty-cannon) (text-id misty-cannon) (text-id misty-cannon) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task misty-warehouse) + :task-name + (new 'static + 'array + text-id + 4 + (text-id misty-return-to-pool) + (text-id misty-return-to-pool) + (text-id misty-return-to-pool) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task misty-bike) + :task-name + (new 'static + 'array + text-id + 4 + (text-id misty-find-transpad) + (text-id misty-balloon-lurkers) + (text-id misty-find-transpad) + (text-id zero)) + :text-index-when-resolved 1) + (new 'static + 'task-info-data + :task-id (game-task misty-bike-jump) + :task-name + (new 'static + 'array + text-id + 4 + (text-id misty-bike-jump) + (text-id misty-bike-jump) + (text-id misty-bike-jump) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task misty-eco-challenge) + :task-name + (new 'static + 'array + text-id + 4 + (text-id misty-eco-challenge) + (text-id misty-eco-challenge) + (text-id misty-eco-challenge) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task misty-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id beach-buzzer) (text-id beach-buzzer) (text-id beach-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id firecanyon-level-name) + :text-group-index 5 + :nb-of-tasks 2 + :buzzer-task-index 1 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task firecanyon-end) + :task-name + (new 'static 'array text-id 4 (text-id firecanyon-end) (text-id firecanyon-end) (text-id firecanyon-end) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task firecanyon-buzzer) + :task-name + (new 'static + 'array + text-id + 4 + (text-id firecanyon-buzzer) + (text-id firecanyon-buzzer) + (text-id firecanyon-buzzer) + (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id village2-level-name) + :text-group-index 2 + :nb-of-tasks 6 + :buzzer-task-index 5 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task village2-gambler-money) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village2-gambler-money) + (text-id village2-gambler-money) + (text-id village2-gambler-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village2-geologist-money) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village2-geologist-money) + (text-id village2-geologist-money) + (text-id village2-geologist-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village2-warrior-money) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village2-warrior-money) + (text-id village2-warrior-money) + (text-id village2-warrior-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village2-oracle-money1) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village2-oracle-money) + (text-id village2-oracle-money) + (text-id village2-oracle-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village2-oracle-money2) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village2-oracle-money) + (text-id village2-oracle-money) + (text-id village2-oracle-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village2-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id generic-buzzer) (text-id generic-buzzer) (text-id generic-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id sunken-level-name) + :text-group-index 2 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task sunken-room) + :task-name + (new 'static + 'array + text-id + 4 + (text-id sunken-elevator-raise) + (text-id sunken-elevator-raise) + (text-id sunken-elevator-get-to-roof) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task sunken-pipe) + :task-name + (new 'static 'array text-id 4 (text-id sunken-pipe) (text-id sunken-pipe) (text-id sunken-pipe) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task sunken-slide) + :task-name + (new 'static 'array text-id 4 (text-id sunken-slide) (text-id sunken-slide) (text-id sunken-slide) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task sunken-sharks) + :task-name + (new 'static 'array text-id 4 (text-id sunken-pool) (text-id sunken-pool) (text-id sunken-pool) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task sunken-platforms) + :task-name + (new 'static + 'array + text-id + 4 + (text-id sunken-platforms) + (text-id sunken-platforms) + (text-id sunken-platforms) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task sunken-top-of-helix) + :task-name + (new 'static + 'array + text-id + 4 + (text-id sunken-climb-tube) + (text-id sunken-climb-tube) + (text-id sunken-climb-tube) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task sunken-spinning-room) + :task-name + (new 'static + 'array + text-id + 4 + (text-id sunken-spinning-room) + (text-id sunken-spinning-room) + (text-id sunken-spinning-room) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task sunken-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id generic-buzzer) (text-id generic-buzzer) (text-id generic-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id swamp-level-name) + :text-group-index 2 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task swamp-flutflut) + :task-name + (new 'static 'array text-id 4 (text-id swamp-flutflut) (text-id swamp-flutflut) (text-id swamp-flutflut) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task swamp-billy) + :task-name + (new 'static 'array text-id 4 (text-id swamp-billy) (text-id swamp-billy) (text-id swamp-billy) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task swamp-battle) + :task-name + (new 'static 'array text-id 4 (text-id swamp-battle) (text-id swamp-battle) (text-id swamp-battle) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task swamp-tether-4) + :task-name + (new 'static 'array text-id 4 (text-id swamp-tether) (text-id swamp-tether) (text-id swamp-tether) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task swamp-tether-1) + :task-name + (new 'static 'array text-id 4 (text-id swamp-tether) (text-id swamp-tether) (text-id swamp-tether) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task swamp-tether-2) + :task-name + (new 'static 'array text-id 4 (text-id swamp-tether) (text-id swamp-tether) (text-id swamp-tether) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task swamp-tether-3) + :task-name + (new 'static 'array text-id 4 (text-id swamp-tether) (text-id swamp-tether) (text-id swamp-tether) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task swamp-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id generic-buzzer) (text-id generic-buzzer) (text-id generic-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id rolling-level-name) + :text-group-index 2 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task rolling-moles) + :task-name + (new 'static + 'array + text-id + 4 + (text-id rolling-moles) + (text-id rolling-moles) + (text-id rolling-moles-return) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task rolling-robbers) + :task-name + (new 'static + 'array + text-id + 4 + (text-id rolling-robbers) + (text-id rolling-robbers) + (text-id rolling-robbers) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task rolling-race) + :task-name + (new 'static 'array text-id 4 (text-id rolling-race) (text-id rolling-race) (text-id rolling-race-return) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task rolling-lake) + :task-name + (new 'static 'array text-id 4 (text-id rolling-lake) (text-id rolling-lake) (text-id rolling-lake) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task rolling-plants) + :task-name + (new 'static 'array text-id 4 (text-id rolling-plants) (text-id rolling-plants) (text-id rolling-plants) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task rolling-ring-chase-1) + :task-name + (new 'static + 'array + text-id + 4 + (text-id rolling-ring-chase-1) + (text-id rolling-ring-chase-1) + (text-id rolling-ring-chase-1) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task rolling-ring-chase-2) + :task-name + (new 'static + 'array + text-id + 4 + (text-id rolling-ring-chase-2) + (text-id rolling-ring-chase-2) + (text-id rolling-ring-chase-2) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task rolling-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id generic-buzzer) (text-id generic-buzzer) (text-id generic-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id ogre-level-name) + :text-group-index 6 + :nb-of-tasks 4 + :buzzer-task-index 3 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task ogre-boss) + :task-name + (new 'static 'array text-id 4 (text-id ogre-boss) (text-id ogre-boss) (text-id ogre-boss) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task ogre-end) + :task-name + (new 'static 'array text-id 4 (text-id ogre-end) (text-id ogre-end) (text-id ogre-end) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task ogre-secret) + :task-name + (new 'static + 'array + text-id + 4 + (text-id hidden-power-cell) + (text-id hidden-power-cell) + (text-id hidden-power-cell) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task ogre-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id ogre-buzzer) (text-id ogre-buzzer) (text-id ogre-buzzer) (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id village3-level-name) + :text-group-index 3 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task village3-miner-money1) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-miner-money) + (text-id village3-miner-money) + (text-id village3-miner-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village3-miner-money2) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-miner-money) + (text-id village3-miner-money) + (text-id village3-miner-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village3-miner-money3) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-miner-money) + (text-id village3-miner-money) + (text-id village3-miner-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village3-miner-money4) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-miner-money) + (text-id village3-miner-money) + (text-id village3-miner-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village3-oracle-money1) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-oracle-money) + (text-id village3-oracle-money) + (text-id village3-oracle-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village3-oracle-money2) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-oracle-money) + (text-id village3-oracle-money) + (text-id village3-oracle-money) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village3-extra1) + :task-name + (new 'static + 'array + text-id + 4 + (text-id hidden-power-cell) + (text-id hidden-power-cell) + (text-id hidden-power-cell) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task village3-buzzer) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-buzzer) + (text-id village3-buzzer) + (text-id village3-buzzer) + (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id snow-level-name) + :text-group-index 3 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task snow-eggtop) + :task-name + (new 'static 'array text-id 4 (text-id snow-eggtop) (text-id snow-eggtop) (text-id snow-eggtop) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task snow-ram) + :task-name + (new 'static + 'array + text-id + 4 + (text-id snow-ram-3-left) + (text-id snow-ram-2-left) + (text-id snow-ram-1-left) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task snow-bumpers) + :task-name + (new 'static 'array text-id 4 (text-id snow-bumpers) (text-id snow-bumpers) (text-id snow-bumpers) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task snow-cage) + :task-name + (new 'static 'array text-id 4 (text-id snow-cage) (text-id snow-cage) (text-id snow-cage) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task snow-fort) + :task-name + (new 'static 'array text-id 4 (text-id snow-fort) (text-id snow-fort) (text-id snow-fort) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task snow-ball) + :task-name + (new 'static 'array text-id 4 (text-id snow-ball) (text-id snow-ball) (text-id snow-ball) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task snow-bunnies) + :task-name + (new 'static 'array text-id 4 (text-id snow-bunnies) (text-id snow-bunnies) (text-id snow-bunnies) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task snow-buzzer) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-buzzer) + (text-id village3-buzzer) + (text-id village3-buzzer) + (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id cave-level-name) + :text-group-index 3 + :nb-of-tasks 8 + :buzzer-task-index 7 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task cave-gnawers) + :task-name + (new 'static 'array text-id 4 (text-id cave-gnawers) (text-id cave-gnawers) (text-id cave-gnawers) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task cave-dark-crystals) + :task-name + (new 'static + 'array + text-id + 4 + (text-id cave-dark-crystals) + (text-id cave-dark-crystals) + (text-id cave-dark-crystals) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task cave-dark-climb) + :task-name + (new 'static + 'array + text-id + 4 + (text-id cave-dark-climb) + (text-id cave-dark-climb) + (text-id cave-dark-climb) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task cave-robot-climb) + :task-name + (new 'static + 'array + text-id + 4 + (text-id cave-robot-climb) + (text-id cave-robot-climb) + (text-id cave-robot-climb) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task cave-swing-poles) + :task-name + (new 'static + 'array + text-id + 4 + (text-id cave-swing-poles) + (text-id cave-swing-poles) + (text-id cave-swing-poles) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task cave-spider-tunnel) + :task-name + (new 'static + 'array + text-id + 4 + (text-id cave-spider-tunnel) + (text-id cave-spider-tunnel) + (text-id cave-spider-tunnel) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task cave-platforms) + :task-name + (new 'static 'array text-id 4 (text-id cave-platforms) (text-id cave-platforms) (text-id cave-platforms) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task cave-buzzer) + :task-name + (new 'static + 'array + text-id + 4 + (text-id village3-buzzer) + (text-id village3-buzzer) + (text-id village3-buzzer) + (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id lavatube-level-name) + :text-group-index 3 + :nb-of-tasks 2 + :buzzer-task-index 1 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task lavatube-end) + :task-name + (new 'static 'array text-id 4 (text-id lavatube-end) (text-id lavatube-end) (text-id lavatube-end) (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task lavatube-buzzer) + :task-name + (new 'static + 'array + text-id + 4 + (text-id lavatube-buzzer) + (text-id lavatube-buzzer) + (text-id lavatube-buzzer) + (text-id zero))))) + (new 'static + 'level-tasks-info + :level-name-id (text-id citadel-level-name) + :text-group-index 4 + :nb-of-tasks 5 + :buzzer-task-index 4 + :task-info + (new 'static + 'array + task-info-data + 8 + (new 'static + 'task-info-data + :task-id (game-task citadel-sage-blue) + :task-name + (new 'static + 'array + text-id + 4 + (text-id citadel-sage-blue) + (text-id citadel-sage-blue) + (text-id citadel-sage-blue) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task citadel-sage-red) + :task-name + (new 'static + 'array + text-id + 4 + (text-id citadel-sage-red) + (text-id citadel-sage-red) + (text-id citadel-sage-red) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task citadel-sage-yellow) + :task-name + (new 'static + 'array + text-id + 4 + (text-id citadel-sage-yellow) + (text-id citadel-sage-yellow) + (text-id citadel-sage-yellow) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task citadel-sage-green) + :task-name + (new 'static + 'array + text-id + 4 + (text-id citadel-sage-green) + (text-id citadel-sage-green) + (text-id citadel-sage-green) + (text-id zero))) + (new 'static + 'task-info-data + :task-id (game-task citadel-buzzer) + :task-name + (new 'static 'array text-id 4 (text-id citadel-buzzer) (text-id citadel-buzzer) (text-id citadel-buzzer) (text-id zero))))))) ;; goes down by 24 or 23 every time -(define *task-egg-starting-x* - (new 'static 'boxed-array :type int32 - 218 - 194 - 171 - 147 - 124 - 100 - 77 - 53 - 30 - ) - ) +(define *task-egg-starting-x* (new 'static 'boxed-array :type int32 218 194 171 147 124 100 77 53 30)) (define *game-counts* (the-as game-count-info #f)) - - - diff --git a/goal_src/jak1/engine/ui/progress/progress.gc b/goal_src/jak1/engine/ui/progress/progress.gc index 03a04e5c0b..db15123901 100644 --- a/goal_src/jak1/engine/ui/progress/progress.gc +++ b/goal_src/jak1/engine/ui/progress/progress.gc @@ -1,39 +1,30 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ui/progress/progress-draw.gc") (require "engine/ui/progress/progress-part.gc") -;; name: progress.gc -;; name in dgo: progress -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (deftype progress-global-state (basic) - ((aspect-ratio-choice symbol) - (video-mode-choice symbol) - (yes-no-choice symbol) - (which int32) - (starting-state progress-screen) - (last-slot-saved int32) - (slider-backup float) - (language-backup language-enum) - (on-off-backup symbol) - (center-x-backup int32) - (center-y-backup int32) - (aspect-ratio-backup symbol) - (last-slider-sound time-frame) - ) - ) - + ((aspect-ratio-choice symbol) + (video-mode-choice symbol) + (yes-no-choice symbol) + (which int32) + (starting-state progress-screen) + (last-slot-saved int32) + (slider-backup float) + (language-backup language-enum) + (on-off-backup symbol) + (center-x-backup int32) + (center-y-backup int32) + (aspect-ratio-backup symbol) + (last-slider-sound time-frame))) (define *progress-state* (new 'static 'progress-global-state :yes-no-choice #f :which -1 :last-slot-saved -1)) (defun get-game-count ((arg0 int)) - (-> *game-counts* data arg0) - ) + (-> *game-counts* data arg0)) (defun progress-allowed? () (not (or (-> *setting-control* current talking) @@ -47,14 +38,9 @@ (!= (-> *setting-control* current bg-a-force) 0.0) (not (-> *setting-control* current allow-progress)) (or (and (handle->process (-> *game-info* auto-save-proc)) - (not (send-event (handle->process (-> *game-info* auto-save-proc)) 'progress-allowed?)) - ) + (not (send-event (handle->process (-> *game-info* auto-save-proc)) 'progress-allowed?))) (not *target*) - (= *cheat-mode* 'camera) - ) - ) - ) - ) + (= *cheat-mode* 'camera))))) (defun pause-allowed? () (not (or (< (-> *display* base-frame-counter) (-> *game-info* blackout-time)) @@ -62,88 +48,64 @@ (!= (-> *setting-control* current bg-a-force) 0.0) (not (-> *setting-control* current allow-pause)) (handle->process (-> *game-info* auto-save-proc)) - (not *target*) - ) - ) - ) + (not *target*)))) (defun init-game-options ((this progress)) "Set the options for all of the menus." - ;; start off by making them all invalid (dotimes (i (progress-screen max)) - (set! (-> *options-remap* i) #f) - ) - + (set! (-> *options-remap* i) #f)) ;; main menu (set! (-> *options-remap* (progress-screen settings)) - (case *kernel-boot-message* - (('demo) - ;; game demo - *main-options-demo* - ) - (('demo-shared) - ;; game demo with external launcher - *main-options-demo-shared* - ) - (else - ;; normal game - *main-options* - ) - ) - ) + (case *kernel-boot-message* + (('demo) + ;; game demo + *main-options-demo*) + (('demo-shared) + ;; game demo with external launcher + *main-options-demo-shared*) + (else + ;; normal game + *main-options*))) (set! (-> *options-remap* (progress-screen game-settings)) - (cond - ((!= *kernel-boot-message* 'play) - (if (= (scf-get-territory) GAME_TERRITORY_SCEE) - *game-options* - *game-options-demo* - ) - ) - ((and (= (scf-get-territory) GAME_TERRITORY_SCEI) - (not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))) - ;; if ntsc-j and we're not using language cheat (and holding l2+r2) - *game-options-japan* - ) - (else - *game-options* - ) - ) - ) + (cond + ((!= *kernel-boot-message* 'play) (if (= (scf-get-territory) GAME_TERRITORY_SCEE) *game-options* *game-options-demo*)) + ((and (= (scf-get-territory) GAME_TERRITORY_SCEI) + (not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))) + ;; if ntsc-j and we're not using language cheat (and holding l2+r2) + *game-options-japan*) + (else *game-options*))) (set! (-> *options-remap* (progress-screen graphic-settings)) - (if (and (= (-> *progress-state* starting-state) (progress-screen title)) - (or (= (scf-get-territory) GAME_TERRITORY_SCEE) - (and (= *progress-cheat* 'pal) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))) - ;; (only if we came from title) if PAL or we're using the PAL cheat (and holding l2+r2) - *graphic-title-options-pal* - *graphic-options* - ) - ) - (set! (-> *options-remap* (progress-screen sound-settings)) *sound-options*) - (set! (-> *options-remap* (progress-screen memcard-no-space)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-not-inserted)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-not-formatted)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-format)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen memcard-data-exists)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen memcard-insert)) *ok-options*) - (set! (-> *options-remap* (progress-screen load-game)) *load-options*) - (set! (-> *options-remap* (progress-screen save-game)) *save-options*) - (set! (-> *options-remap* (progress-screen save-game-title)) *save-options-title*) - (set! (-> *options-remap* (progress-screen memcard-error-loading)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-error-saving)) *ok-options*) + (if (and (= (-> *progress-state* starting-state) (progress-screen title)) + (or (= (scf-get-territory) GAME_TERRITORY_SCEE) (and (= *progress-cheat* 'pal) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))) + ;; (only if we came from title) if PAL or we're using the PAL cheat (and holding l2+r2) + *graphic-title-options-pal* + *graphic-options*)) + (set! (-> *options-remap* (progress-screen sound-settings)) *sound-options*) + (set! (-> *options-remap* (progress-screen memcard-no-space)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-not-inserted)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-not-formatted)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-format)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen memcard-data-exists)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen memcard-insert)) *ok-options*) + (set! (-> *options-remap* (progress-screen load-game)) *load-options*) + (set! (-> *options-remap* (progress-screen save-game)) *save-options*) + (set! (-> *options-remap* (progress-screen save-game-title)) *save-options-title*) + (set! (-> *options-remap* (progress-screen memcard-error-loading)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-error-saving)) *ok-options*) (set! (-> *options-remap* (progress-screen memcard-error-formatting)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-error-creating)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-auto-save-error)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-removed)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-no-data)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen title)) *title*) - (set! (-> *options-remap* (progress-screen settings-title)) *options*) - (set! (-> *options-remap* (progress-screen auto-save)) *ok-options*) - (set! (-> *options-remap* (progress-screen pal-change-to-60hz)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen pal-now-60hz)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen no-disc)) *ok-options*) - (set! (-> *options-remap* (progress-screen bad-disc)) *ok-options*) - (set! (-> *options-remap* (progress-screen quit)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen memcard-error-creating)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-auto-save-error)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-removed)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-no-data)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen title)) *title*) + (set! (-> *options-remap* (progress-screen settings-title)) *options*) + (set! (-> *options-remap* (progress-screen auto-save)) *ok-options*) + (set! (-> *options-remap* (progress-screen pal-change-to-60hz)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen pal-now-60hz)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen no-disc)) *ok-options*) + (set! (-> *options-remap* (progress-screen bad-disc)) *ok-options*) + (set! (-> *options-remap* (progress-screen quit)) *yes-no-options*) (set! (-> *progress-state* aspect-ratio-choice) (get-aspect-ratio)) (set! (-> *progress-state* video-mode-choice) (get-video-mode)) (set! (-> *progress-state* yes-no-choice) #f) @@ -161,32 +123,23 @@ (set! (-> *sound-options* 1 value-to-modify) (&-> *setting-control* default music-volume)) (set! (-> *sound-options* 2 value-to-modify) (&-> *setting-control* default dialog-volume)) (set! (-> *yes-no-options* 0 value-to-modify) (&-> *progress-state* yes-no-choice)) - (none) - ) + (none)) (defun make-current-level-available-to-progress () "exactly what it says on the tin." - (when (and *target* (-> *level* border?)) (let* ((cur-lev (-> *target* current-level)) - (lev-idx (+ (-> cur-lev info index) -1)) - ) + (lev-idx (+ (-> cur-lev info index) -1))) (if (and (>= lev-idx 0) (< lev-idx (-> *level-task-data-remap* length)) (zero? (-> *game-info* level-opened (-> *level-task-data-remap* lev-idx))) - (or (= *kernel-boot-message* 'play) (= (-> cur-lev nickname) 'mis)) - ) - (set! (-> *game-info* level-opened (-> *level-task-data-remap* lev-idx)) (the-as uint 1)) - ) - ) - ) + (or (= *kernel-boot-message* 'play) (= (-> cur-lev nickname) 'mis))) + (set! (-> *game-info* level-opened (-> *level-task-data-remap* lev-idx)) (the-as uint 1))))) 0 - (none) - ) + (none)) (defun make-levels-with-tasks-available-to-progress () "Open levels that have tasks to do!" - ;; go through EVERY LEVEL'S TASKS (dotimes (i (length *level-task-data*)) ;; level tasks @@ -195,101 +148,58 @@ (unless (or (= tasks #f) (= (-> *game-info* level-opened i) 1)) (cond ((!= *kernel-boot-message* 'play) - (if (= (-> tasks level-name-id) (text-id misty-level-name)) - (set! (-> *game-info* level-opened i) (the-as uint 1)) - ) - ) - (*cheat-mode* - (set! (-> *game-info* level-opened i) (the-as uint 1)) - ) + (if (= (-> tasks level-name-id) (text-id misty-level-name)) (set! (-> *game-info* level-opened i) (the-as uint 1)))) + (*cheat-mode* (set! (-> *game-info* level-opened i) (the-as uint 1))) (else - (dotimes (ii (-> tasks nb-of-tasks)) - (if (and (zero? (-> *game-info* level-opened ii)) - (!= ii (-> tasks buzzer-task-index)) - (task-known? (-> tasks task-info ii task-id)) - ) - (set! (-> *game-info* level-opened ii) (the-as uint 1)) - ) - ) - ) - ) - ) - ) - ) + (dotimes (ii (-> tasks nb-of-tasks)) + (if (and (zero? (-> *game-info* level-opened ii)) + (!= ii (-> tasks buzzer-task-index)) + (task-known? (-> tasks task-info ii task-id))) + (set! (-> *game-info* level-opened ii) (the-as uint 1))))))))) 0 - (none) - ) + (none)) (defun get-next-task-up ((cur-task-idx int) (lev-idx int)) "find next available task. skips over unknown tasks and doesn't do anything if none are found" - (let ((gp-0 cur-task-idx)) (let ((s4-0 (+ cur-task-idx 1)) - (s3-0 (-> *level-task-data* lev-idx)) - ) + (s3-0 (-> *level-task-data* lev-idx))) (while (and (< s4-0 (-> s3-0 nb-of-tasks)) (= gp-0 cur-task-idx)) - (if (or *cheat-mode* (task-known? (-> s3-0 task-info s4-0 task-id))) - (set! gp-0 s4-0) - ) - (+! s4-0 1) - ) - ) - gp-0 - ) - ) + (if (or *cheat-mode* (task-known? (-> s3-0 task-info s4-0 task-id))) (set! gp-0 s4-0)) + (+! s4-0 1))) + gp-0)) (defun get-next-task-down ((cur-task-idx int) (lev-idx int)) "find previous available task. skips over unknown tasks and doesn't do anything if none are found" - (let ((gp-0 cur-task-idx)) (let ((s4-0 (+ cur-task-idx -1)) - (s3-0 (-> *level-task-data* lev-idx)) - ) + (s3-0 (-> *level-task-data* lev-idx))) (while (and (>= s4-0 0) (= gp-0 cur-task-idx)) - (if (or *cheat-mode* (task-known? (-> s3-0 task-info s4-0 task-id))) - (set! gp-0 s4-0) - ) - (+! s4-0 -1) - ) - ) - gp-0 - ) - ) + (if (or *cheat-mode* (task-known? (-> s3-0 task-info s4-0 task-id))) (set! gp-0 s4-0)) + (+! s4-0 -1))) + gp-0)) (defun get-next-level-up ((lev-idx int)) (let ((gp-0 lev-idx)) (let ((s4-0 (+ lev-idx 1))) (while (and (< s4-0 (length *level-task-data*)) (= gp-0 lev-idx)) - (if (= (-> *game-info* level-opened s4-0) 1) - (set! gp-0 s4-0) - ) - (+! s4-0 1) - ) - ) - gp-0 - ) - ) + (if (= (-> *game-info* level-opened s4-0) 1) (set! gp-0 s4-0)) + (+! s4-0 1))) + gp-0)) (defun get-next-level-down ((lev-idx int)) (let ((v0-0 lev-idx)) (let ((v1-0 (+ lev-idx -1))) (while (and (>= v1-0 0) (= v0-0 lev-idx)) - (if (= (-> *game-info* level-opened v1-0) 1) - (set! v0-0 v1-0) - ) - (+! v1-0 -1) - ) - ) - v0-0 - ) - ) + (if (= (-> *game-info* level-opened v1-0) 1) (set! v0-0 v1-0)) + (+! v1-0 -1))) + v0-0)) (defun calculate-completion ((the-progress progress)) "Updates counters and calculates game completion. Cells are tallied 80% Buzzers are tallied 10% Orbs are tallied 10%" - (let ((current-cells 0) (current-buzzers 0) (current-orbs 0) @@ -301,100 +211,59 @@ (when (!= s4-0 #f) (when (or (= *kernel-boot-message* 'play) (= (-> s4-0 level-name-id) (text-id misty-level-name))) (dotimes (s3-0 (-> s4-0 nb-of-tasks)) - (if (= (get-task-status (-> s4-0 task-info s3-0 task-id)) (task-status invalid)) - (1+! current-cells) - ) - ) + (if (= (get-task-status (-> s4-0 task-info s3-0 task-id)) (task-status invalid)) (1+! current-cells))) (set! total-cells (+ total-cells (-> s4-0 nb-of-tasks))) (set! current-orbs (+ current-orbs (-> *game-info* money-per-level s5-0))) (set! total-orbs (+ total-orbs (-> *game-counts* data s5-0 money-count))) (let ((v1-20 (-> s4-0 buzzer-task-index))) (when (!= v1-20 -1) (set! current-buzzers (+ current-buzzers (buzzer-count *game-info* (-> s4-0 task-info v1-20 task-id)))) - (set! total-buzzers (+ total-buzzers (-> *game-counts* data s5-0 buzzer-count))) - ) - ) - ) - ) - ) - ) + (set! total-buzzers (+ total-buzzers (-> *game-counts* data s5-0 buzzer-count))))))))) (when the-progress (set! (-> the-progress total-nb-of-power-cells) total-cells) (set! (-> the-progress total-nb-of-buzzers) total-buzzers) - (set! (-> the-progress total-nb-of-orbs) total-orbs) - ) + (set! (-> the-progress total-nb-of-orbs) total-orbs)) (+ (/ (* 80.0 (the float current-cells)) (the float total-cells)) (/ (* 10.0 (the float current-orbs)) (the float total-orbs)) - (/ (* 10.0 (the float current-buzzers)) (the float total-buzzers)) - )) - ) + (/ (* 10.0 (the float current-buzzers)) (the float total-buzzers))))) (define *progress-save-info* (new 'global 'mc-slot-info)) -(defmacro progress-make-icon (this &key skel - &key x - &key y - &key z - &key scale-x - &key scale-y - ) +(defmacro progress-make-icon (this &key skel &key x &key y &key z &key scale-x &key scale-y) `(when (< (-> ,this nb-of-icons) 6) (let ((icon-idx (-> ,this nb-of-icons))) - (set! (-> ,this icons icon-idx) (new 'static 'hud-icon)) - (let ((new-manipy (manipy-spawn (new 'static 'vector :w 1.0) #f ,skel #f - :to ,this - :stack *scratch-memory-top* - ))) - (when new-manipy - (set! (-> (-> new-manipy) draw dma-add-func) dma-add-process-drawable-hud) - (set-vector! (-> (-> new-manipy) root trans) 0.0 0.0 0.0 1.0) - (set-vector! (-> (-> new-manipy) root scale) ,scale-x ,scale-y ,scale-x 1.0) - (when #f - (send-event (ppointer->process new-manipy) 'trans-hook #f) - ) - ) - (set! (-> ,this icons icon-idx icon) new-manipy) - (when new-manipy - (logior! (-> new-manipy 0 mask) (process-mask pause)) - (logclear! (-> new-manipy 0 mask) (process-mask menu progress)) - (set! (-> (-> new-manipy) root trans z) ,z) - (set! (-> ,this icons icon-idx icon-x) ,x) - (set! (-> ,this icons icon-idx icon-y) ,y) - (set! (-> ,this icons icon-idx icon-z) 0) - (set! (-> ,this icons icon-idx scale-x) ,scale-x) - (set! (-> ,this icons icon-idx scale-y) ,scale-y) - ) - ) - ) - (+! (-> ,this nb-of-icons) 1) - ) - ) + (set! (-> ,this icons icon-idx) (new 'static 'hud-icon)) + (let ((new-manipy (manipy-spawn (new 'static 'vector :w 1.0) #f ,skel #f :to ,this :stack *scratch-memory-top*))) + (when new-manipy + (set! (-> (-> new-manipy) draw dma-add-func) dma-add-process-drawable-hud) + (set-vector! (-> (-> new-manipy) root trans) 0.0 0.0 0.0 1.0) + (set-vector! (-> (-> new-manipy) root scale) ,scale-x ,scale-y ,scale-x 1.0) + (when #f + (send-event (ppointer->process new-manipy) 'trans-hook #f))) + (set! (-> ,this icons icon-idx icon) new-manipy) + (when new-manipy + (logior! (-> new-manipy 0 mask) (process-mask pause)) + (logclear! (-> new-manipy 0 mask) (process-mask menu progress)) + (set! (-> (-> new-manipy) root trans z) ,z) + (set! (-> ,this icons icon-idx icon-x) ,x) + (set! (-> ,this icons icon-idx icon-y) ,y) + (set! (-> ,this icons icon-idx icon-z) 0) + (set! (-> ,this icons icon-idx scale-x) ,scale-x) + (set! (-> ,this icons icon-idx scale-y) ,scale-y)))) + (+! (-> ,this nb-of-icons) 1))) (defmethod initialize-icons ((this progress)) - (progress-make-icon this :skel *fuelcell-naked-sg* - :x 256 :y 77 :z (meters 0.5) - :scale-x 0.006 :scale-y 0.006) - (progress-make-icon this :skel *fuelcell-naked-sg* - :x 256 :y 77 :z (meters 0.5) - :scale-x 0.006 :scale-y 0.006) - (progress-make-icon this :skel *fuelcell-naked-sg* - :x 256 :y 77 :z (meters 0.5) - :scale-x 0.006 :scale-y 0.006) - (progress-make-icon this :skel *fuelcell-naked-sg* - :x 256 :y 77 :z (meters 0.5) - :scale-x 0.006 :scale-y 0.006) - (progress-make-icon this :skel *money-sg* - :x -320 :y 253 :z (meters 17) - :scale-x 0.013 :scale-y -0.015) - (progress-make-icon this :skel *money-sg* - :x -320 :y 253 :z (meters 0.25) - :scale-x 0.008 :scale-y -0.009) + (progress-make-icon this :skel *fuelcell-naked-sg* :x 256 :y 77 :z (meters 0.5) :scale-x 0.006 :scale-y 0.006) + (progress-make-icon this :skel *fuelcell-naked-sg* :x 256 :y 77 :z (meters 0.5) :scale-x 0.006 :scale-y 0.006) + (progress-make-icon this :skel *fuelcell-naked-sg* :x 256 :y 77 :z (meters 0.5) :scale-x 0.006 :scale-y 0.006) + (progress-make-icon this :skel *fuelcell-naked-sg* :x 256 :y 77 :z (meters 0.5) :scale-x 0.006 :scale-y 0.006) + (progress-make-icon this :skel *money-sg* :x -320 :y 253 :z (meters 17) :scale-x 0.013 :scale-y -0.015) + (progress-make-icon this :skel *money-sg* :x -320 :y 253 :z (meters 0.25) :scale-x 0.008 :scale-y -0.009) (send-event (ppointer->process (-> this icons 1 icon)) 'set-frame-num 2.5) (send-event (ppointer->process (-> this icons 2 icon)) 'set-frame-num 10.0) (send-event (ppointer->process (-> this icons 3 icon)) 'set-frame-num 15.5) 0 - (none) - ) + (none)) (defmethod enter! ((this progress) (screen progress-screen) (option int)) (when (!= (-> this display-state) screen) @@ -406,32 +275,20 @@ (set! (-> this next-display-state) screen) (set-transition-speed! this) (case (-> this display-state) - (((progress-screen memcard-creating)) - (auto-save-command 'create-file 0 0 this) - ) + (((progress-screen memcard-creating)) (auto-save-command 'create-file 0 0 this)) (((progress-screen memcard-loading)) (set! (-> *progress-state* last-slot-saved) (-> *progress-state* which)) (sound-volume-off) - (auto-save-command 'restore 0 (-> *progress-state* which) this) - ) + (auto-save-command 'restore 0 (-> *progress-state* which) this)) (((progress-screen memcard-saving)) (set! (-> *progress-state* last-slot-saved) (-> *progress-state* which)) - (auto-save-command 'save 0 (-> *progress-state* which) this) - ) - (((progress-screen memcard-formatting)) - (auto-save-command 'format-card 0 0 this) - ) + (auto-save-command 'save 0 (-> *progress-state* which) this)) + (((progress-screen memcard-formatting)) (auto-save-command 'format-card 0 0 this)) (((progress-screen save-game) (progress-screen load-game)) - (set! (-> this option-index) (max 0 (-> *progress-state* last-slot-saved))) - ) - (((progress-screen memcard-removed)) - (set! (-> *progress-state* last-slot-saved) 0) - ) - ) - ) + (set! (-> this option-index) (max 0 (-> *progress-state* last-slot-saved)))) + (((progress-screen memcard-removed)) (set! (-> *progress-state* last-slot-saved) 0)))) 0 - (none) - ) + (none)) (defmethod push! ((this progress)) (let ((v1-0 (-> this display-state-pos))) @@ -439,16 +296,10 @@ ((< v1-0 5) (set! (-> this display-state-stack v1-0) (-> this display-state)) (set! (-> this option-index-stack v1-0) (-> this option-index)) - (set! (-> this display-state-pos) (+ v1-0 1)) - ) - (else - (format #t "ERROR: Can't push any more states on the display-state-stack.~%") - ) - ) - ) + (set! (-> this display-state-pos) (+ v1-0 1))) + (else (format #t "ERROR: Can't push any more states on the display-state-stack.~%")))) 0 - (none) - ) + (none)) (defmethod pop! ((this progress)) (let ((v1-0 (-> this display-state-pos))) @@ -456,17 +307,10 @@ ((> v1-0 0) (let ((a2-0 (+ v1-0 -1))) (set! (-> this display-state-pos) a2-0) - (enter! this (-> this display-state-stack a2-0) (-> this option-index-stack a2-0)) - ) - ) - (else - (set-master-mode 'game) - ) - ) - ) + (enter! this (-> this display-state-stack a2-0) (-> this option-index-stack a2-0)))) + (else (set-master-mode 'game)))) 0 - (none) - ) + (none)) (defmethod set-transition-progress! ((this progress) (arg0 int)) (set! (-> this transition-offset) arg0) @@ -474,8 +318,7 @@ (set! (-> this transition-percentage) (* (1/ 512) (the float arg0))) (set! (-> this transition-percentage-invert) (- 1.0 (-> this transition-percentage))) 0 - (none) - ) + (none)) (defmethod set-transition-speed! ((this progress)) (case (-> this display-state) @@ -484,17 +327,11 @@ (progress-screen buzzer) (progress-screen load-game) (progress-screen save-game) - (progress-screen save-game-title) - ) - (set! (-> this transition-speed) 15.0) - ) - (else - (set! (-> this transition-speed) 45.0) - ) - ) + (progress-screen save-game-title)) + (set! (-> this transition-speed) 15.0)) + (else (set! (-> this transition-speed) 45.0))) 0 - (none) - ) + (none)) (defbehavior progress-init-by-other progress () (logclear! (-> self mask) (process-mask menu progress)) @@ -520,8 +357,7 @@ (set! (-> self right-side-x-scale) 0.0) (set! (-> self right-side-y-scale) 0.0) (dotimes (v1-6 5) - (set! (-> self display-state-stack v1-6) (progress-screen fuel-cell)) - ) + (set! (-> self display-state-stack v1-6) (progress-screen fuel-cell))) (init-game-options self) (initialize-icons self) (initialize-particles self) @@ -565,16 +401,15 @@ (quaternion-axis-angle! gp-0 0.0 1.0 0.0 49152.0) (quaternion*! (-> self icons 2 icon 0 root quat) gp-0 (-> self icons 2 icon 0 root quat)) (quaternion-axis-angle! gp-0 0.0 1.0 0.0 0.0) - (quaternion*! (-> self icons 3 icon 0 root quat) gp-0 (-> self icons 3 icon 0 root quat)) - ) + (quaternion*! (-> self icons 3 icon 0 root quat) gp-0 (-> self icons 3 icon 0 root quat))) (adjust-ratios self (get-aspect-ratio) (get-video-mode)) (adjust-icons self) (set! (-> self event-hook) (-> progress-waiting event)) (go progress-waiting) - (none) - ) + (none)) (define *progress-stack* (the-as (pointer uint8) (malloc 'global #x3800))) + (defconstant *progress-stack-top* (&-> *progress-stack* #x3800)) (defun activate-progress ((creator process) (screen progress-screen)) @@ -592,73 +427,44 @@ (set! *master-mode* 'progress) (let ((s4-1 (-> *target* current-level))) (cond - ((!= *kernel-boot-message* 'play) - (set! (-> s5-1 0 display-level-index) 4) - ) - ((or (= s4-1 #f) (< (length *level-task-data-remap*) (-> s4-1 info index))) - (set! (-> s5-1 0 display-level-index) 0) - 0 - ) - (else - (set! (-> s5-1 0 display-level-index) (-> *level-task-data-remap* (+ (-> s4-1 info index) -1))) - ) - ) - ) + ((!= *kernel-boot-message* 'play) (set! (-> s5-1 0 display-level-index) 4)) + ((or (= s4-1 #f) (< (length *level-task-data-remap*) (-> s4-1 info index))) (set! (-> s5-1 0 display-level-index) 0) 0) + (else (set! (-> s5-1 0 display-level-index) (-> *level-task-data-remap* (+ (-> s4-1 info index) -1)))))) (set! (-> s5-1 0 next-level-index) (-> s5-1 0 display-level-index)) (set! (-> s5-1 0 display-state) (progress-screen invalid)) (set-transition-progress! (-> s5-1 0) 512) - (set! (-> s5-1 0 task-index) (get-next-task-up -1 (-> s5-1 0 display-level-index))) - ) - ) + (set! (-> s5-1 0 task-index) (get-next-task-up -1 (-> s5-1 0 display-level-index))))) (when *progress-process* (enter! (-> *progress-process* 0) screen 0) - (set! (-> *progress-process* 0 card-info) #f) - ) - ) + (set! (-> *progress-process* 0 card-info) #f))) (else - (push! (-> *progress-process* 0)) - (set! (-> *progress-process* 0 next-display-state) screen) - (set! (-> *progress-process* 0 card-info) #f) - ) - ) - ) + (push! (-> *progress-process* 0)) + (set! (-> *progress-process* 0 next-display-state) screen) + (set! (-> *progress-process* 0 card-info) #f)))) 0 - (none) - ) + (none)) (defun deactivate-progress () (when (and *progress-process* (= (-> *progress-process* 0 next-state name) 'progress-gone)) (apply-settings *setting-control*) (dotimes (gp-0 (-> *progress-process* 0 nb-of-particles)) (kill-and-free-particles (-> *progress-process* 0 particles gp-0 part)) - (set! (-> *progress-process* 0 particles gp-0 part matrix) -1) - ) + (set! (-> *progress-process* 0 particles gp-0 part matrix) -1)) (set! (-> *progress-process* 0 nb-of-particles) 0) (deactivate (-> *progress-process* 0)) (set! *progress-process* (the-as (pointer progress) #f)) - (enable-level-text-file-loading) - ) + (enable-level-text-file-loading)) 0 - (none) - ) + (none)) (defun hide-progress-screen () "shoo!" - - (if *progress-process* - (send-event (ppointer->process *progress-process*) 'go-away) - ) + (if *progress-process* (send-event (ppointer->process *progress-process*) 'go-away)) 0 - (none) - ) + (none)) (defun hide-progress-icons () - (let ((v1-0 6)) - (dotimes (a0-0 8) - (set! (-> *progress-process* 0 particles v1-0 init-pos x) -320.0) - (+! v1-0 1) - ) - ) + (let ((v1-0 6)) (dotimes (a0-0 8) (set! (-> *progress-process* 0 particles v1-0 init-pos x) -320.0) (+! v1-0 1))) (set! (-> *progress-process* 0 particles 5 init-pos x) -320.0) (set! (-> *progress-process* 0 particles 14 init-pos x) -320.0) (set! (-> *progress-process* 0 particles 15 init-pos x) -320.0) @@ -677,82 +483,62 @@ (set! (-> *progress-process* 0 particles 31 init-pos x) -320.0) (set! (-> *progress-process* 0 icons 4 icon-x) -320) 0 - (none) - ) + (none)) (defmethod relocate ((this game-count-info) (arg0 int)) "Load in the game-count-info. This is a bit of a hack." (set! *game-counts* this) - this - ) + this) (defmethod relocate ((this progress) (arg0 int)) (dotimes (v1-0 (-> this nb-of-particles)) (when (-> this particles v1-0 part) (if (nonzero? (-> this particles v1-0 part)) - (set! (-> this particles v1-0 part) - (the-as sparticle-launch-control (&+ (the-as pointer (-> this particles v1-0 part)) arg0)) - ) - ) - ) - ) - (the-as progress ((method-of-type process relocate) this arg0)) - ) + (set! (-> this particles v1-0 part) + (the-as sparticle-launch-control (&+ (the-as pointer (-> this particles v1-0 part)) arg0)))))) + (the-as progress ((method-of-type process relocate) this arg0))) (defmethod adjust-sprites ((this progress)) (let ((f0-1 (* (1/ METER_LENGTH) (the float (-> this in-out-position))))) (set! (-> this particles 2 init-pos x) (the float (+ (-> this right-x-offset) 409 (the int (* 301.5 f0-1))))) (set! (-> this particles 1 init-pos x) (the float (+ (-> this left-x-offset) 59))) - (set! (-> this left-side-x-scale) (meters (+ (/ (if (= (-> *pc-settings* aspect-custom-x) 16) 5.0 3.5) (-> this sides-x-scale)) (* 10.0 f0-1)))) + (set! (-> this left-side-x-scale) + (meters (+ (/ (if (= (-> *pc-settings* aspect-custom-x) 16) 5.0 3.5) (-> this sides-x-scale)) (* 10.0 f0-1)))) (set! (-> this left-side-y-scale) (meters (+ (-> this sides-y-scale) (* 10.0 f0-1)))) - (set! (-> this right-side-x-scale) (meters (+ (/ (if (= (-> *pc-settings* aspect-custom-x) 16) 8.5 6.0) (-> this sides-x-scale)) (* 4.0 f0-1)))) - (set! (-> this right-side-y-scale) (meters (+ (-> this sides-y-scale) (* 4.0 f0-1)))) - ) + (set! (-> this right-side-x-scale) + (meters (+ (/ (if (= (-> *pc-settings* aspect-custom-x) 16) 8.5 6.0) (-> this sides-x-scale)) (* 4.0 f0-1)))) + (set! (-> this right-side-y-scale) (meters (+ (-> this sides-y-scale) (* 4.0 f0-1))))) (dotimes (s5-0 (-> this nb-of-particles)) (set! (-> this particles s5-0 pos x) (+ -256.0 (-> this particles s5-0 init-pos x))) (set! (-> this particles s5-0 pos y) - (* 0.5 (- (* (-> this particles s5-0 init-pos y) (-> *video-parms* relative-y-scale)) - (the float (-> *video-parms* screen-sy)) - ) - ) - ) + (* 0.5 + (- (* (-> this particles s5-0 init-pos y) (-> *video-parms* relative-y-scale)) (the float (-> *video-parms* screen-sy))))) (set! (-> this particles s5-0 pos z) (-> this particles s5-0 init-pos z)) (if (> (-> this particles s5-0 part matrix) 0) - (set-vector! (sprite-get-user-hvdf (-> this particles s5-0 part matrix)) - (the float (+ (the int (-> this particles s5-0 pos x)) 2048)) - (the float (+ (the int (-> this particles s5-0 pos y)) 2048)) - (- (-> *math-camera* hvdf-off z) (* 1024.0 (-> this particles s5-0 pos z))) - (-> *math-camera* hvdf-off w) - ) - ) - (spawn (-> this particles s5-0 part) *null-vector*) - ) + (set-vector! (sprite-get-user-hvdf (-> this particles s5-0 part matrix)) + (the float (+ (the int (-> this particles s5-0 pos x)) 2048)) + (the float (+ (the int (-> this particles s5-0 pos y)) 2048)) + (- (-> *math-camera* hvdf-off z) (* 1024.0 (-> this particles s5-0 pos z))) + (-> *math-camera* hvdf-off w))) + (spawn (-> this particles s5-0 part) *null-vector*)) 0 - (none) - ) + (none)) (defmethod adjust-icons ((this progress)) (dotimes (v1-0 (-> this nb-of-icons)) (when (>= v1-0 4) (set-vector! (-> this icons v1-0 icon 0 root scale) - (* (-> this icons v1-0 scale-x) (-> *video-parms* relative-x-scale)) - (* (-> this icons v1-0 scale-y) (-> *video-parms* relative-y-scale)) - (* (-> this icons v1-0 scale-x) (-> *video-parms* relative-x-scale)) - 1.0 - ) + (* (-> this icons v1-0 scale-x) (-> *video-parms* relative-x-scale)) + (* (-> this icons v1-0 scale-y) (-> *video-parms* relative-y-scale)) + (* (-> this icons v1-0 scale-x) (-> *video-parms* relative-x-scale)) + 1.0) (set! (-> this icons v1-0 icon 0 root trans x) (the float (+ (-> this icons v1-0 icon-x) -256))) (set! (-> this icons v1-0 icon 0 root trans y) (* (-> *video-parms* relative-y-scale) (- (* (-> *video-parms* relative-y-scale) (the float (-> this icons v1-0 icon-y))) - (the float (-> *video-parms* screen-sy)) - ) - ) - ) - ) - ) + (the float (-> *video-parms* screen-sy))))))) 0 - (none) - ) + (none)) (defmethod adjust-ratios ((this progress) (aspect symbol) (video-mode symbol)) (case aspect @@ -768,8 +554,7 @@ (set! (-> this icons 5 scale-y) -0.009) (set! (-> this big-orb-y-offset) 243) (set! (-> this icons 4 scale-x) 0.013) - (set! (-> this icons 4 scale-y) -0.015) - ) + (set! (-> this icons 4 scale-y) -0.015)) (('aspect16x9) (set! (-> this sides-x-scale) 1.2) (set! (-> this sides-y-scale) 9.8) @@ -782,33 +567,18 @@ (set! (-> this icons 5 scale-y) -0.0098) (set! (-> this big-orb-y-offset) 255) (set! (-> this icons 4 scale-x) 0.017) - (set! (-> this icons 4 scale-y) -0.0205) - ) - ) + (set! (-> this icons 4 scale-y) -0.0205))) (when (= video-mode 'pal) (set! (-> this icons 5 scale-y) (* 1.15 (-> this icons 5 scale-y))) (set! (-> this icons 4 scale-x) (* 1.05 (-> this icons 4 scale-x))) - (set! (-> this icons 4 scale-y) (* (-> this icons 4 scale-y) (the-as float (if (= aspect 'aspect16x9) - 1.18 - 1.15 - ) - ) - ) - ) - (+! (-> this big-orb-y-offset) (if (= aspect 'aspect16x9) - 3 - 2 - ) - ) - ) + (set! (-> this icons 4 scale-y) (* (-> this icons 4 scale-y) (the-as float (if (= aspect 'aspect16x9) 1.18 1.15)))) + (+! (-> this big-orb-y-offset) (if (= aspect 'aspect16x9) 3 2))) 0 - (none) - ) + (none)) (defmethod can-go-back? ((this progress)) (let ((v1-2 (-> *progress-process* 0 display-state)) - (a1-1 (-> *progress-state* starting-state)) - ) + (a1-1 (-> *progress-state* starting-state))) (and (= (-> this next-state name) 'progress-normal) (not (-> this in-transition)) (not (-> this selected-option)) @@ -819,8 +589,7 @@ (= a1-1 (progress-screen money)) (= a1-1 (progress-screen buzzer)) (= a1-1 (progress-screen title)) - (= a1-1 (progress-screen speedrun-options)) - ) + (= a1-1 (progress-screen speedrun-options))) (#if (not PC_PORT) (or (= v1-2 (progress-screen settings)) (= v1-2 (progress-screen game-settings)) @@ -857,158 +626,87 @@ (= v1-2 (progress-screen mouse-binds)) (= v1-2 (progress-screen controller-options)) (= v1-2 (progress-screen mouse-options)) - (= v1-2 (progress-screen reassign-binds-options)) - ) - ) - ) - ) - ) - ) - ) + (= v1-2 (progress-screen reassign-binds-options))))))))) (defmethod visible? ((this progress)) - (the-as symbol (and *progress-process* (zero? (-> *progress-process* 0 in-out-position)))) - ) + (the-as symbol (and *progress-process* (zero? (-> *progress-process* 0 in-out-position))))) (defmethod hidden? ((this progress)) - (or (not *progress-process*) (= (-> *progress-process* 0 in-out-position) 4096)) - ) + (or (not *progress-process*) (= (-> *progress-process* 0 in-out-position) 4096))) (defstate progress-waiting (progress) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('go-away) - (go progress-gone) - ) - ) - ) - :code (behavior () - (loop - (when (hud-hidden?) - (dotimes (gp-0 (-> self nb-of-particles)) - (if (= (-> self particles gp-0 part matrix) -1) - (set! (-> self particles gp-0 part matrix) (sprite-allocate-user-hvdf)) - ) - ) - (set-setting! 'common-page 'set 0.0 1) - (suspend) - (go progress-coming-in) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('go-away) (go progress-gone)))) + :code + (behavior () + (loop + (when (hud-hidden?) + (dotimes (gp-0 (-> self nb-of-particles)) + (if (= (-> self particles gp-0 part matrix) -1) (set! (-> self particles gp-0 part matrix) (sprite-allocate-user-hvdf)))) + (set-setting! 'common-page 'set 0.0 1) + (suspend) + (go progress-coming-in)) + (suspend)))) (defstate progress-gone (progress) - :code (behavior () - (remove-setting! 'process-mask) - (apply-settings *setting-control*) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :code + (behavior () + (remove-setting! 'process-mask) + (apply-settings *setting-control*) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) (defmethod set-memcard-screen ((this progress) (arg0 progress-screen)) (let ((s4-0 (-> this card-info)) - (gp-0 arg0) - ) + (gp-0 arg0)) (when s4-0 (case arg0 - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) (cond - ((zero? (-> s4-0 handle)) - (set! gp-0 (progress-screen memcard-not-inserted)) - ) + ((zero? (-> s4-0 handle)) (set! gp-0 (progress-screen memcard-not-inserted))) ((zero? (-> s4-0 formatted)) (cond ((or (zero? (-> this display-state-pos)) - (and (!= (-> *progress-state* starting-state) 27) (nonzero? (-> *progress-state* starting-state))) - ) - (set-master-mode 'game) - ) - (else - (if (!= arg0 (progress-screen memcard-not-formatted)) - (set! gp-0 (progress-screen memcard-format)) - ) - ) - ) - ) + (and (!= (-> *progress-state* starting-state) 27) (nonzero? (-> *progress-state* starting-state)))) + (set-master-mode 'game)) + (else (if (!= arg0 (progress-screen memcard-not-formatted)) (set! gp-0 (progress-screen memcard-format)))))) ((and (zero? (-> s4-0 inited)) (< (-> s4-0 mem-actual) (-> s4-0 mem-required))) - (set! gp-0 (progress-screen memcard-no-space)) - ) + (set! gp-0 (progress-screen memcard-no-space))) ((or (zero? (-> this display-state-pos)) - (and (!= (-> *progress-state* starting-state) 27) (nonzero? (-> *progress-state* starting-state))) - ) - (set-master-mode 'game) - ) - (else - (set! gp-0 (progress-screen save-game)) - ) - ) - ) - (((progress-screen memcard-insert)) - (if (= (-> s4-0 inited) 1) - (set! gp-0 (progress-screen load-game)) - ) - ) - ) + (and (!= (-> *progress-state* starting-state) 27) (nonzero? (-> *progress-state* starting-state)))) + (set-master-mode 'game)) + (else (set! gp-0 (progress-screen save-game))))) + (((progress-screen memcard-insert)) (if (= (-> s4-0 inited) 1) (set! gp-0 (progress-screen load-game))))) (cond ((zero? (-> s4-0 handle)) (cond - ((-> *setting-control* current auto-save) - (set! gp-0 (progress-screen memcard-removed)) - ) + ((-> *setting-control* current auto-save) (set! gp-0 (progress-screen memcard-removed))) (else - (cond - ((= arg0 (progress-screen load-game)) - (set! gp-0 (progress-screen memcard-insert)) - ) - ((or (= arg0 (progress-screen memcard-format)) - (= arg0 (progress-screen memcard-no-space)) - (= arg0 (progress-screen memcard-not-formatted)) - (= arg0 (progress-screen save-game)) - (= arg0 (progress-screen save-game-title)) - (= arg0 (progress-screen memcard-no-data)) - (= arg0 (progress-screen memcard-data-exists)) - ) - (set! gp-0 (progress-screen memcard-not-inserted)) - ) - ) - ) - ) - ) + (cond + ((= arg0 (progress-screen load-game)) (set! gp-0 (progress-screen memcard-insert))) + ((or (= arg0 (progress-screen memcard-format)) + (= arg0 (progress-screen memcard-no-space)) + (= arg0 (progress-screen memcard-not-formatted)) + (= arg0 (progress-screen save-game)) + (= arg0 (progress-screen save-game-title)) + (= arg0 (progress-screen memcard-no-data)) + (= arg0 (progress-screen memcard-data-exists))) + (set! gp-0 (progress-screen memcard-not-inserted))))))) ((zero? (-> s4-0 formatted)) (case arg0 - (((progress-screen load-game)) - (set! gp-0 (progress-screen memcard-insert)) - ) - (((progress-screen save-game) (progress-screen save-game-title)) - (set! gp-0 (progress-screen memcard-format)) - ) - ) - ) + (((progress-screen load-game)) (set! gp-0 (progress-screen memcard-insert))) + (((progress-screen save-game) (progress-screen save-game-title)) (set! gp-0 (progress-screen memcard-format))))) ((zero? (-> s4-0 inited)) (case arg0 (((progress-screen save-game) (progress-screen save-game-title)) (if (>= (-> s4-0 mem-actual) (-> s4-0 mem-required)) - (set! gp-0 (progress-screen memcard-no-data)) - (set! gp-0 (progress-screen memcard-no-space)) - ) - ) - (((progress-screen load-game)) - (set! gp-0 (progress-screen memcard-insert)) - ) - ) - ) - ) - ) - gp-0 - ) - ) + (set! gp-0 (progress-screen memcard-no-data)) + (set! gp-0 (progress-screen memcard-no-space)))) + (((progress-screen load-game)) (set! gp-0 (progress-screen memcard-insert))))))) + gp-0)) (defmethod respond-memcard ((this progress)) (let ((s5-0 (-> this card-info))) @@ -1023,185 +721,114 @@ (when (nonzero? (-> s5-0 file (-> this option-index) present)) (sound-play "start-options") (set! (-> *progress-state* which) (-> this option-index)) - (set! (-> this next-display-state) (progress-screen memcard-loading)) - ) - ) - (else - (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) + (set! (-> this next-display-state) (progress-screen memcard-loading)))) + (else (sound-play "cursor-options") (set! (-> this next-display-state) (progress-screen invalid))))) (((progress-screen save-game) (progress-screen save-game-title)) (cond ((< (-> this option-index) 4) (sound-play "start-options") (set! (-> *progress-state* which) (-> this option-index)) (if (zero? (-> s5-0 file (-> this option-index) present)) - (set! (-> this next-display-state) (progress-screen memcard-saving)) - (set! (-> this next-display-state) (progress-screen memcard-data-exists)) - ) - ) + (set! (-> this next-display-state) (progress-screen memcard-saving)) + (set! (-> this next-display-state) (progress-screen memcard-data-exists)))) ((and (= (-> this display-state) (progress-screen save-game-title)) (= (-> this option-index) 4)) (sound-play "starts-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) (initialize! *game-info* 'game (the-as game-save #f) "intro-start") - (set-master-mode 'game) - ) - (else - (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) + (set-master-mode 'game)) + (else (sound-play "cursor-options") (set! (-> this next-display-state) (progress-screen invalid))))) (((progress-screen memcard-insert)) (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) + (set! (-> this next-display-state) (progress-screen invalid))) (((progress-screen memcard-data-exists)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> this next-display-state) (progress-screen memcard-saving)) - ) + (set! (-> this next-display-state) (progress-screen memcard-saving))) (else - (sound-play "cursor-options") - (if (= (-> this display-state-stack 0) (progress-screen title)) - (set! (-> this next-display-state) (progress-screen save-game-title)) - (set! (-> this next-display-state) (progress-screen save-game)) - ) - ) - ) - ) + (sound-play "cursor-options") + (if (= (-> this display-state-stack 0) (progress-screen title)) + (set! (-> this next-display-state) (progress-screen save-game-title)) + (set! (-> this next-display-state) (progress-screen save-game)))))) (((progress-screen memcard-no-data)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> this next-display-state) (progress-screen memcard-creating)) - ) + (set! (-> this next-display-state) (progress-screen memcard-creating))) ;; og:preserve-this PAL & NTSC-J patch here ((= (-> this display-state-stack 0) (progress-screen title)) (sound-play "cursor-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) (initialize! *game-info* 'game (the-as game-save #f) "intro-start") - (set-master-mode 'game) - ) - (else - (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) + (set-master-mode 'game)) + (else (sound-play "cursor-options") (set! (-> this next-display-state) (progress-screen invalid))))) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) (cond ((= (-> this display-state-stack 0) (progress-screen title)) (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) (initialize! *game-info* 'game (the-as game-save #f) "intro-start") - (set-master-mode 'game) - ) - ((nonzero? (-> this display-state-stack 0)) - (sound-play "start-options") - (set-master-mode 'game) - ) - (else - (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) + (set-master-mode 'game)) + ((nonzero? (-> this display-state-stack 0)) (sound-play "start-options") (set-master-mode 'game)) + (else (sound-play "cursor-options") (set! (-> this next-display-state) (progress-screen invalid))))) (((progress-screen memcard-error-loading) (progress-screen memcard-error-saving) (progress-screen memcard-error-formatting) (progress-screen memcard-error-creating) (progress-screen memcard-auto-save-error) (progress-screen memcard-removed) - (progress-screen auto-save) - ) + (progress-screen auto-save)) (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) + (set! (-> this next-display-state) (progress-screen invalid))) (((progress-screen pal-change-to-60hz)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") (set! (-> *setting-control* default video-mode) (-> *progress-state* video-mode-choice)) (set! (-> this video-mode-timeout) (-> *display* real-frame-counter)) - (set! (-> this next-display-state) (progress-screen pal-now-60hz)) - ) + (set! (-> this next-display-state) (progress-screen pal-now-60hz))) (else - (sound-play "cursor-options") - (set! (-> *progress-state* video-mode-choice) 'pal) - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) + (sound-play "cursor-options") + (set! (-> *progress-state* video-mode-choice) 'pal) + (set! (-> this next-display-state) (progress-screen invalid))))) (((progress-screen pal-now-60hz)) (cond ((not (-> *progress-state* yes-no-choice)) (set! (-> *progress-state* video-mode-choice) 'pal) (set! (-> *setting-control* default video-mode) (-> *progress-state* video-mode-choice)) - (sound-play "cursor-options") - ) - (else - (sound-play "start-options") - ) - ) - (set! (-> this next-display-state) (progress-screen invalid)) - ) + (sound-play "cursor-options")) + (else (sound-play "start-options"))) + (set! (-> this next-display-state) (progress-screen invalid))) (((progress-screen no-disc) (progress-screen bad-disc)) (when (is-cd-in?) (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) + (set! (-> this next-display-state) (progress-screen invalid)))) (((progress-screen quit)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) - (initialize! *game-info* 'game (the-as game-save #f) "title-start") - ) - (else - (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) + (initialize! *game-info* 'game (the-as game-save #f) "title-start")) + (else (sound-play "cursor-options") (set! (-> this next-display-state) (progress-screen invalid))))) (((progress-screen memcard-format)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> this next-display-state) (progress-screen memcard-formatting)) - ) + (set! (-> this next-display-state) (progress-screen memcard-formatting))) ;; og:preserve-this NTSC-J patch here ((= (-> this display-state-stack 0) (progress-screen title)) (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) (initialize! *game-info* 'game (the-as game-save #f) "intro-start") - (set-master-mode 'game) - ) - (else - (sound-play "cursor-options") - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) - ) - ) - ) - ) + (set-master-mode 'game)) + (else (sound-play "cursor-options") (set! (-> this next-display-state) (progress-screen invalid))))))))) 0 - (none) - ) + (none)) (defmethod respond-common ((this progress)) (mc-get-slot-info 0 *progress-save-info*) @@ -1213,79 +840,42 @@ (cond ((cpad-pressed? 0 up) (when (not (-> this selected-option)) - (if (!= (length s5-0) 1) - (sound-play "cursor-up-down") - ) + (if (!= (length s5-0) 1) (sound-play "cursor-up-down")) (set! (-> this last-option-index-change) (-> *display* real-frame-counter)) - (if (> (-> this option-index) 0) - (+! (-> this option-index) -1) - (set! (-> this option-index) (+ (length s5-0) -1)) - ) - ) - ) + (if (> (-> this option-index) 0) (+! (-> this option-index) -1) (set! (-> this option-index) (+ (length s5-0) -1))))) (else - (when (-> this selected-option) - (let ((v1-34 #f)) - (case (-> s5-0 (-> this option-index) option-type) - (((game-option-type center-screen)) - (when (< -48 (-> *setting-control* current screeny)) - (set! v1-34 #t) - (+! (-> *setting-control* default screeny) -1) - ) - ) - ) - (when v1-34 - (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) - (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) - (sound-play "slider2001") - ) - ) - ) - ) - ) - ) - ) + (when (-> this selected-option) + (let ((v1-34 #f)) + (case (-> s5-0 (-> this option-index) option-type) + (((game-option-type center-screen)) + (when (< -48 (-> *setting-control* current screeny)) + (set! v1-34 #t) + (+! (-> *setting-control* default screeny) -1)))) + (when v1-34 + (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) + (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) + (sound-play "slider2001")))))))) ((cpad-hold? 0 down) (cond ((cpad-pressed? 0 down) (when (not (-> this selected-option)) - (if (!= (length s5-0) 1) - (sound-play "cursor-up-down") - ) + (if (!= (length s5-0) 1) (sound-play "cursor-up-down")) (set! (-> this last-option-index-change) (-> *display* real-frame-counter)) (cond - ((< (-> this option-index) (+ (length s5-0) -1)) - (+! (-> this option-index) 1) - ) - (else - (set! (-> this option-index) 0) - 0 - ) - ) - ) - ) + ((< (-> this option-index) (+ (length s5-0) -1)) (+! (-> this option-index) 1)) + (else (set! (-> this option-index) 0) 0)))) (else - (when (-> this selected-option) - (let ((v1-69 #f)) - (case (-> s5-0 (-> this option-index) option-type) - (((game-option-type center-screen)) - (when (< (-> *setting-control* current screeny) 48) - (set! v1-69 #t) - (+! (-> *setting-control* default screeny) 1) - ) - ) - ) - (when v1-69 - (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) - (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) - (sound-play "slider2001") - ) - ) - ) - ) - ) - ) - ) + (when (-> this selected-option) + (let ((v1-69 #f)) + (case (-> s5-0 (-> this option-index) option-type) + (((game-option-type center-screen)) + (when (< (-> *setting-control* current screeny) 48) + (set! v1-69 #t) + (+! (-> *setting-control* default screeny) 1)))) + (when v1-69 + (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) + (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) + (sound-play "slider2001")))))))) ((cpad-hold? 0 left) (cond ((cpad-pressed? 0 left) @@ -1296,89 +886,53 @@ (when (not (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))) (set! s4-5 #t) (if (= (-> s5-0 (-> this option-index) value-to-modify) (&-> *setting-control* current vibration)) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) - ) - ) - (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify))) #t) - ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)))) + (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify))) #t)) (((game-option-type aspect-ratio)) (set! s4-5 (= (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'aspect16x9)) - (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'aspect4x3) - ) + (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'aspect4x3)) (((game-option-type video-mode)) (set! s4-5 (= (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'ntsc)) - (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'pal) - ) + (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'pal)) (((game-option-type language)) (if (> (the-as int (-> (the-as (pointer uint64) (-> s5-0 (-> this option-index) value-to-modify)))) 0) - (+! (-> (the-as (pointer uint64) (-> s5-0 (-> this option-index) value-to-modify))) -1) - (set! (-> (the-as (pointer int64) (-> s5-0 (-> this option-index) value-to-modify))) - (if (and (= (scf-get-territory) GAME_TERRITORY_SCEA) - (not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2))) - ) - 4 - 5 - ) - ) - ) + (+! (-> (the-as (pointer uint64) (-> s5-0 (-> this option-index) value-to-modify))) -1) + (set! (-> (the-as (pointer int64) (-> s5-0 (-> this option-index) value-to-modify))) + (if (and (= (scf-get-territory) GAME_TERRITORY_SCEA) + (not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))) + 4 + 5))) (set! (-> this language-transition) #t) (set! (-> this language-direction) #t) - (set! s4-5 #t) - ) - ) - (if s4-5 - (sound-play "cursor-l-r") - ) - ) - ) - ) + (set! s4-5 #t))) + (if s4-5 (sound-play "cursor-l-r"))))) (else - (when (-> this selected-option) - (let ((v1-157 #f)) - (case (-> s5-0 (-> this option-index) option-type) - (((game-option-type slider)) - (cond - ((>= (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) - (+ 1.0 (-> s5-0 (-> this option-index) param1)) - ) - (+! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) -1.0) - (set! v1-157 #t) - ) - ((< (-> s5-0 (-> this option-index) param1) - (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) - ) - (set! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) - (-> s5-0 (-> this option-index) param1) - ) - (set! v1-157 #t) - ) - ) - ) - (((game-option-type center-screen)) - (when (< -96 (-> *setting-control* default screenx)) - (set! v1-157 #t) - (+! (-> *setting-control* default screenx) -1) - ) - ) - ) - (when v1-157 - (let ((f30-0 100.0)) - (case (-> s5-0 (-> this option-index) name) - (((text-id music-volume) (text-id speech-volume)) - (set! f30-0 (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify)))) - ) - ) - (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) - (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) - (sound-play "slider2001" :vol f30-0) - ) - ) - ) - ) - ) - ) - ) - ) + (when (-> this selected-option) + (let ((v1-157 #f)) + (case (-> s5-0 (-> this option-index) option-type) + (((game-option-type slider)) + (cond + ((>= (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) + (+ 1.0 (-> s5-0 (-> this option-index) param1))) + (+! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) -1.0) + (set! v1-157 #t)) + ((< (-> s5-0 (-> this option-index) param1) + (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify)))) + (set! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) + (-> s5-0 (-> this option-index) param1)) + (set! v1-157 #t)))) + (((game-option-type center-screen)) + (when (< -96 (-> *setting-control* default screenx)) + (set! v1-157 #t) + (+! (-> *setting-control* default screenx) -1)))) + (when v1-157 + (let ((f30-0 100.0)) + (case (-> s5-0 (-> this option-index) name) + (((text-id music-volume) (text-id speech-volume)) + (set! f30-0 (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify)))))) + (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) + (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) + (sound-play "slider2001" :vol f30-0))))))))) ((cpad-hold? 0 right) (cond ((cpad-pressed? 0 right) @@ -1387,143 +941,85 @@ (case (-> s5-0 (-> this option-index) option-type) (((game-option-type on-off) (game-option-type yes-no)) (set! v1-217 (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))) - (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) #f) - ) + (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) #f)) (((game-option-type aspect-ratio)) (set! v1-217 (= (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'aspect4x3)) - (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'aspect16x9) - ) + (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'aspect16x9)) (((game-option-type video-mode)) (set! v1-217 (= (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'pal)) - (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'ntsc) - ) + (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) 'ntsc)) (((game-option-type language)) (let ((v1-243 (if (and (= (scf-get-territory) GAME_TERRITORY_SCEA) - (not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2))) - ) - 4 - 5 - ) - ) - ) + (not (and (= *progress-cheat* 'language) (cpad-hold? 0 l2) (cpad-hold? 0 r2)))) + 4 + 5))) (cond ((< (the-as int (-> (the-as (pointer uint64) (-> s5-0 (-> this option-index) value-to-modify)))) v1-243) - (+! (-> (the-as (pointer uint64) (-> s5-0 (-> this option-index) value-to-modify))) 1) - ) - (else - (set! (-> (the-as (pointer int64) (-> s5-0 (-> this option-index) value-to-modify))) 0) - 0 - ) - ) - ) + (+! (-> (the-as (pointer uint64) (-> s5-0 (-> this option-index) value-to-modify))) 1)) + (else (set! (-> (the-as (pointer int64) (-> s5-0 (-> this option-index) value-to-modify))) 0) 0))) (set! (-> this language-transition) #t) (set! (-> this language-direction) #f) - (set! v1-217 #t) - ) - ) - (if v1-217 - (sound-play "cursor-l-r") - ) - ) - ) - ) + (set! v1-217 #t))) + (if v1-217 (sound-play "cursor-l-r"))))) (else - (when (-> this selected-option) - (let ((v1-263 #f)) - (case (-> s5-0 (-> this option-index) option-type) - (((game-option-type slider)) - (cond - ((>= (+ -1.0 (-> s5-0 (-> this option-index) param2)) - (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) - ) - (+! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) 1.0) - (set! v1-263 #t) - ) - ((< (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) - (-> s5-0 (-> this option-index) param2) - ) - (set! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) - (-> s5-0 (-> this option-index) param2) - ) - (set! v1-263 #t) - ) - ) - ) - (((game-option-type center-screen)) - (when (< (-> *setting-control* default screenx) 96) - (set! v1-263 #t) - (+! (-> *setting-control* default screenx) 1) - ) - ) - ) - (when v1-263 - (let ((f30-1 100.0)) - (case (-> s5-0 (-> this option-index) name) - (((text-id music-volume) (text-id speech-volume)) - (set! f30-1 (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify)))) - ) - ) - (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) - (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) - (sound-play "slider2001" :vol f30-1) - ) - ) - ) - ) - ) - ) - ) - ) + (when (-> this selected-option) + (let ((v1-263 #f)) + (case (-> s5-0 (-> this option-index) option-type) + (((game-option-type slider)) + (cond + ((>= (+ -1.0 (-> s5-0 (-> this option-index) param2)) + (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify)))) + (+! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) 1.0) + (set! v1-263 #t)) + ((< (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) + (-> s5-0 (-> this option-index) param2)) + (set! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) + (-> s5-0 (-> this option-index) param2)) + (set! v1-263 #t)))) + (((game-option-type center-screen)) + (when (< (-> *setting-control* default screenx) 96) + (set! v1-263 #t) + (+! (-> *setting-control* default screenx) 1)))) + (when v1-263 + (let ((f30-1 100.0)) + (case (-> s5-0 (-> this option-index) name) + (((text-id music-volume) (text-id speech-volume)) + (set! f30-1 (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify)))))) + (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) + (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) + (sound-play "slider2001" :vol f30-1))))))))) ((or (cpad-pressed? 0 square) (cpad-pressed? 0 triangle)) (cond ((-> this selected-option) (case (-> s5-0 (-> this option-index) option-type) (((game-option-type slider)) (set! (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) - (-> *progress-state* slider-backup) - ) - ) + (-> *progress-state* slider-backup))) (((game-option-type language)) (set! (-> (the-as (pointer language-enum) (-> s5-0 (-> this option-index) value-to-modify))) - (-> *progress-state* language-backup) - ) - ) + (-> *progress-state* language-backup))) (((game-option-type on-off)) (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) - (-> *progress-state* on-off-backup) - ) - ) + (-> *progress-state* on-off-backup))) (((game-option-type center-screen)) (set! (-> *setting-control* default screenx) (-> *progress-state* center-x-backup)) - (set! (-> *setting-control* default screeny) (-> *progress-state* center-y-backup)) - ) + (set! (-> *setting-control* default screeny) (-> *progress-state* center-y-backup))) (((game-option-type aspect-ratio) (game-option-type video-mode)) (set! (-> (the-as (pointer symbol) (-> s5-0 (-> this option-index) value-to-modify)) 0) - (-> *progress-state* aspect-ratio-backup) - ) - ) - ) + (-> *progress-state* aspect-ratio-backup)))) (sound-play "cursor-options") - (set! (-> this selected-option) #f) - ) + (set! (-> this selected-option) #f)) ((or (can-go-back? this) (= (-> this display-state) (progress-screen load-game)) (= (-> this display-state) (progress-screen save-game)) - (= (-> this display-state) (progress-screen save-game-title)) - ) + (= (-> this display-state) (progress-screen save-game-title))) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons square)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons square)) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) - (if (= (-> this display-state) (progress-screen settings)) - (sound-play "menu-stats") - (sound-play "cursor-options") - ) + (if (= (-> this display-state) (progress-screen settings)) (sound-play "menu-stats") (sound-play "cursor-options")) (load-level-text-files (-> *level-task-data* (-> this display-level-index) text-group-index)) - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) + (set! (-> this next-display-state) (progress-screen invalid))))) ((or (cpad-pressed? 0 x) (cpad-pressed? 0 circle)) (cond ((not (-> this selected-option)) @@ -1538,53 +1034,31 @@ (set! (-> this next-display-state) (the-as progress-screen (-> s5-0 (-> this option-index) param3))) (case (-> this next-display-state) (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (set! (-> this next-display-state) (set-memcard-screen this (-> this next-display-state))) - ) - ) - ) + (set! (-> this next-display-state) (set-memcard-screen this (-> this next-display-state)))))) ((= (-> s5-0 (-> this option-index) option-type) (game-option-type button)) (cond - ((= (-> s5-0 (-> this option-index) name) (text-id exit-demo)) - (set! *master-exit* 'force) - (set-master-mode 'game) - ) + ((= (-> s5-0 (-> this option-index) name) (text-id exit-demo)) (set! *master-exit* 'force) (set-master-mode 'game)) ((= (-> s5-0 (-> this option-index) name) (text-id back)) - (if (= (-> this display-state) (progress-screen settings)) - (sound-play "menu-stats") - (sound-play "cursor-options") - ) + (if (= (-> this display-state) (progress-screen settings)) (sound-play "menu-stats") (sound-play "cursor-options")) (load-level-text-files (-> *level-task-data* (-> this display-level-index) text-group-index)) - (set! (-> this next-display-state) (progress-screen invalid)) - ) - ) - ) + (set! (-> this next-display-state) (progress-screen invalid))))) ((!= (-> s5-0 (-> this option-index) option-type) (game-option-type yes-no)) (case (-> s5-0 (-> this option-index) option-type) (((game-option-type slider)) (set! (-> *progress-state* slider-backup) - (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))) - ) - ) + (-> (the-as (pointer float) (-> s5-0 (-> this option-index) value-to-modify))))) (((game-option-type language)) (set! (-> *progress-state* language-backup) - (-> (the-as (pointer language-enum) (-> s5-0 (-> this option-index) value-to-modify))) - ) - ) + (-> (the-as (pointer language-enum) (-> s5-0 (-> this option-index) value-to-modify))))) (((game-option-type on-off)) (set! (-> *progress-state* on-off-backup) - (the-as symbol (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))) - ) - ) + (the-as symbol (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))))) (((game-option-type center-screen)) (set! (-> *progress-state* center-x-backup) (-> *setting-control* default screenx)) - (set! (-> *progress-state* center-y-backup) (-> *setting-control* default screeny)) - ) + (set! (-> *progress-state* center-y-backup) (-> *setting-control* default screeny))) (((game-option-type aspect-ratio) (game-option-type video-mode)) (set! (-> *progress-state* aspect-ratio-backup) - (the-as symbol (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))) - ) - ) - ) + (the-as symbol (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify))))))) (sound-play "select-option") (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons x)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons x)) @@ -1596,48 +1070,24 @@ (set! (-> this language-direction) #t) (set! (-> this language-transition) #f) (set! (-> this language-x-offset) 0) - 0 - ) - ) - ) - ) + 0)))) (else - (sound-play "start-options") - (set! (-> this selected-option) #f) - (case (-> s5-0 (-> this option-index) option-type) - (((game-option-type aspect-ratio)) - (set! (-> *setting-control* default aspect-ratio) - (the-as symbol (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))) - ) - ) - (((game-option-type video-mode)) - (case (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify))) - (('pal) - (set! (-> *setting-control* default video-mode) - (the-as symbol (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))) - ) - ) - (('ntsc) - (push! this) - (set! (-> this next-display-state) (progress-screen pal-change-to-60hz)) - ) - ) - ) - (((game-option-type language)) - (if (not (-> this language-transition)) - (load-level-text-files (-> this display-level-index)) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (sound-play "start-options") + (set! (-> this selected-option) #f) + (case (-> s5-0 (-> this option-index) option-type) + (((game-option-type aspect-ratio)) + (set! (-> *setting-control* default aspect-ratio) + (the-as symbol (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))))) + (((game-option-type video-mode)) + (case (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify))) + (('pal) + (set! (-> *setting-control* default video-mode) + (the-as symbol (-> (the-as (pointer uint32) (-> s5-0 (-> this option-index) value-to-modify)))))) + (('ntsc) (push! this) (set! (-> this next-display-state) (progress-screen pal-change-to-60hz))))) + (((game-option-type language)) + (if (not (-> this language-transition)) (load-level-text-files (-> this display-level-index))))))))))) 0 - (none) - ) + (none)) (defmethod respond-progress ((this progress)) (when (not (-> this in-transition)) @@ -1647,742 +1097,433 @@ (set! (-> this next-level-index) (get-next-level-down s5-0)) (when (!= s5-0 (-> this next-level-index)) (sound-play "cursor-up-down") - (set! (-> this level-transition) 2) - ) - ) - ) + (set! (-> this level-transition) 2)))) ((cpad-pressed? 0 down) (let ((s5-2 (-> this next-level-index))) (set! (-> this next-level-index) (get-next-level-up s5-2)) (when (!= s5-2 (-> this next-level-index)) (sound-play "cursor-up-down") - (set! (-> this level-transition) 1) - ) - ) - ) + (set! (-> this level-transition) 1)))) ((cpad-pressed? 0 square) (when (nonzero? (-> this display-state)) (sound-play "select-option") (set! (-> this next-display-state) (progress-screen fuel-cell)) - (set! (-> this stat-transition) #t) - ) - ) + (set! (-> this stat-transition) #t))) ((cpad-pressed? 0 x) (when (!= (-> this display-state) (progress-screen money)) (sound-play "select-option") (set! (-> this next-display-state) (progress-screen money)) - (set! (-> this stat-transition) #t) - ) - ) + (set! (-> this stat-transition) #t))) ((cpad-pressed? 0 triangle) (when (!= (-> this display-state) (progress-screen buzzer)) (sound-play "select-option") (set! (-> this next-display-state) (progress-screen buzzer)) - (set! (-> this stat-transition) #t) - ) - ) + (set! (-> this stat-transition) #t))) ((cpad-pressed? 0 circle) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons circle)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle)) (sound-play "start-options") (push! this) - (set! (-> this next-display-state) (progress-screen settings)) - ) + (set! (-> this next-display-state) (progress-screen settings))) ((= (-> this display-state) (progress-screen fuel-cell)) (cond ((cpad-pressed? 0 left) (let ((s5-8 (-> this task-index))) (set! (-> this task-index) (get-next-task-down (-> this task-index) (-> this display-level-index))) - (if (!= s5-8 (-> this task-index)) - (sound-play "cursor-l-r") - ) - ) - ) + (if (!= s5-8 (-> this task-index)) (sound-play "cursor-l-r")))) ((cpad-pressed? 0 right) (let ((s5-10 (-> this task-index))) (set! (-> this task-index) (get-next-task-up (-> this task-index) (-> this display-level-index))) - (if (!= s5-10 (-> this task-index)) - (sound-play "cursor-l-r") - ) - ) - ) - ) - ) - ) - ) + (if (!= s5-10 (-> this task-index)) (sound-play "cursor-l-r")))))))) 0 - (none) - ) + (none)) (defstate progress-normal (progress) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('go-away) - (go progress-going-out) - ) - (('notify) - (cond - ((= (-> block param 0) 'done) - (case (-> self display-state) - (((progress-screen memcard-saving)) - (cond - ((= (-> self display-state-stack 0) (progress-screen title)) - (let ((gp-1 (-> *setting-control* default auto-save))) - (sound-volume-off) - (set! (-> *game-info* mode) 'play) - (cond - ;; Start a new game differently if speedrunning mode is active - ((= (-> *pc-settings* speedrunner-mode?) #t) - (speedrun-start-full-game-run)) - ;; start the game normally - (else - (initialize! *game-info* 'game (the-as game-save #f) "intro-start") - (set! (-> *setting-control* default auto-save) gp-1))) - ) - (set-master-mode 'game) - ) - (else - (set! v0-0 -1) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - v0-0 - ) - ) - ) - (((progress-screen memcard-formatting)) - (set! (-> self force-transition) #t) - (set! v0-0 15) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - v0-0 - ) - (((progress-screen memcard-creating)) - (cond - ((= (-> self display-state-stack 0) (progress-screen title)) - (set! v0-0 18) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - ) - (else - (set! v0-0 17) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - ) - ) - v0-0 - ) - ) - ) - ((= (-> block param 0) 'error) - (format #t "ERROR NOTIFY: ~S ~D~%" (enum->string mc-status-code (-> block param 1)) (-> self display-state)) - (case (-> block param 1) - ((14) - (set! v0-0 7) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - v0-0 - ) - (else - (case (-> self display-state) - (((progress-screen memcard-formatting)) - (set! v0-0 24) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - v0-0 - ) - (((progress-screen memcard-creating)) - (set! v0-0 25) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - v0-0 - ) - (((progress-screen memcard-saving)) - (set! v0-0 21) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - v0-0 - ) - (((progress-screen memcard-loading)) - (set! v0-0 20) - (set! (-> self next-display-state) (the-as progress-screen v0-0)) - v0-0 - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (when (and (cpad-hold? 0 l1) (cpad-hold? 0 r1) *cheat-mode*) - (when (and (< (-> self task-index) (-> *level-task-data* (-> self display-level-index) nb-of-tasks)) - (>= (-> self task-index) 0) - ) - (let ((gp-0 (-> *level-task-data* (-> self display-level-index) task-info (-> self task-index) task-id))) - (close-specific-task! gp-0 (task-status need-resolution)) - (send-event *target* 'get-pickup 6 (the float gp-0)) - ) - ) - ) - (if (and (= (-> self display-state) (-> self next-display-state)) - (= (-> self display-level-index) (-> self next-level-index)) - ) - (seekl! - (-> self transition-offset) - 0 - (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) - (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) - 2 - 1 - ) - ) - ) - (seekl! - (-> self transition-offset) - 512 - (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) - (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) - 2 - 1 - ) - ) - ) - ) - (set-transition-progress! self (-> self transition-offset)) - (set! (-> self in-transition) (or (-> self force-transition) (nonzero? (-> self transition-offset)))) - (when (and (not (handle->process (-> *game-info* auto-save-proc))) - (or (-> self force-transition) (-> self in-transition)) - (>= (-> self transition-offset) (if (and (zero? (-> self level-transition)) - (nonzero? (-> self next-display-state)) - (!= (-> self next-display-state) 1) - (!= (-> self next-display-state) 2) - ) - 512 - 256 - ) - ) - ) - (if (>= (the-as int (-> self next-display-state)) 0) - (enter! self (-> self next-display-state) 0) - (pop! self) - ) - (set! (-> self display-level-index) (-> self next-level-index)) - (when (nonzero? (-> self level-transition)) - (set! (-> self task-index) (get-next-task-up -1 (-> self display-level-index))) - (case (-> self level-transition) - ((1) - (set! (-> self level-transition) 2) - ) - ((2) - (set! (-> self level-transition) 1) - ) - ) - ) - (set! (-> self force-transition) #f) - ) - (when (zero? (-> self transition-offset)) - (set! (-> self stat-transition) #f) - (set! (-> self level-transition) 0) - 0 - ) - (let ((gp-1 #f)) - (let ((v1-62 #f)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('go-away) (go progress-going-out)) + (('notify) + (cond + ((= (-> block param 0) 'done) + (case (-> self display-state) + (((progress-screen memcard-saving)) + (cond + ((= (-> self display-state-stack 0) (progress-screen title)) + (let ((gp-1 (-> *setting-control* default auto-save))) + (sound-volume-off) + (set! (-> *game-info* mode) 'play) + (cond + ;; Start a new game differently if speedrunning mode is active + ((= (-> *pc-settings* speedrunner-mode?) #t) (speedrun-start-full-game-run)) + ;; start the game normally + (else + (initialize! *game-info* 'game (the-as game-save #f) "intro-start") + (set! (-> *setting-control* default auto-save) gp-1)))) + (set-master-mode 'game)) + (else (set! v0-0 -1) (set! (-> self next-display-state) (the-as progress-screen v0-0)) v0-0))) + (((progress-screen memcard-formatting)) + (set! (-> self force-transition) #t) + (set! v0-0 15) + (set! (-> self next-display-state) (the-as progress-screen v0-0)) + v0-0) + (((progress-screen memcard-creating)) + (cond + ((= (-> self display-state-stack 0) (progress-screen title)) + (set! v0-0 18) + (set! (-> self next-display-state) (the-as progress-screen v0-0))) + (else (set! v0-0 17) (set! (-> self next-display-state) (the-as progress-screen v0-0)))) + v0-0))) + ((= (-> block param 0) 'error) + (format #t "ERROR NOTIFY: ~S ~D~%" (enum->string mc-status-code (-> block param 1)) (-> self display-state)) + (case (-> block param 1) + ((14) (set! v0-0 7) (set! (-> self next-display-state) (the-as progress-screen v0-0)) v0-0) + (else + (case (-> self display-state) + (((progress-screen memcard-formatting)) + (set! v0-0 24) + (set! (-> self next-display-state) (the-as progress-screen v0-0)) + v0-0) + (((progress-screen memcard-creating)) + (set! v0-0 25) + (set! (-> self next-display-state) (the-as progress-screen v0-0)) + v0-0) + (((progress-screen memcard-saving)) + (set! v0-0 21) + (set! (-> self next-display-state) (the-as progress-screen v0-0)) + v0-0) + (((progress-screen memcard-loading)) + (set! v0-0 20) + (set! (-> self next-display-state) (the-as progress-screen v0-0)) + v0-0))))))))) + :code + (behavior () + (loop + (when (and (cpad-hold? 0 l1) (cpad-hold? 0 r1) *cheat-mode*) + (when (and (< (-> self task-index) (-> *level-task-data* (-> self display-level-index) nb-of-tasks)) + (>= (-> self task-index) 0)) + (let ((gp-0 (-> *level-task-data* (-> self display-level-index) task-info (-> self task-index) task-id))) + (close-specific-task! gp-0 (task-status need-resolution)) + (send-event *target* 'get-pickup 6 (the float gp-0))))) + (if (and (= (-> self display-state) (-> self next-display-state)) + (= (-> self display-level-index) (-> self next-level-index))) + (seekl! (-> self transition-offset) + 0 + (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) + (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) 2 1))) + (seekl! (-> self transition-offset) + 512 + (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) + (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) 2 1)))) + (set-transition-progress! self (-> self transition-offset)) + (set! (-> self in-transition) (or (-> self force-transition) (nonzero? (-> self transition-offset)))) + (when (and (not (handle->process (-> *game-info* auto-save-proc))) + (or (-> self force-transition) (-> self in-transition)) + (>= (-> self transition-offset) + (if (and (zero? (-> self level-transition)) + (nonzero? (-> self next-display-state)) + (!= (-> self next-display-state) 1) + (!= (-> self next-display-state) 2)) + 512 + 256))) + (if (>= (the-as int (-> self next-display-state)) 0) (enter! self (-> self next-display-state) 0) (pop! self)) + (set! (-> self display-level-index) (-> self next-level-index)) + (when (nonzero? (-> self level-transition)) + (set! (-> self task-index) (get-next-task-up -1 (-> self display-level-index))) + (case (-> self level-transition) + ((1) (set! (-> self level-transition) 2)) + ((2) (set! (-> self level-transition) 1)))) + (set! (-> self force-transition) #f)) + (when (zero? (-> self transition-offset)) + (set! (-> self stat-transition) #f) + (set! (-> self level-transition) 0) + 0) + (let ((gp-1 #f)) + (let ((v1-62 #f)) + (case (-> self display-state) + (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) + (let ((s5-0 (-> self display-level-index))) + (when (and (< (mod (-> *display* real-frame-counter) (seconds 0.2)) (seconds 0.1)) + (zero? (-> *progress-process* 0 in-out-position)) + (not (-> self in-transition)) + (zero? (-> self transition-offset))) + (set! gp-1 (!= s5-0 (get-next-level-up s5-0))) + (set! v1-62 (!= s5-0 (get-next-level-down s5-0))))))) + (set! (-> self particles 3 init-pos x) (the float (if v1-62 (- 195 (-> *progress-process* 0 left-x-offset)) -320)))) + (set! (-> self particles 4 init-pos x) (the float (if gp-1 (- 195 (-> *progress-process* 0 left-x-offset)) -320)))) + (respond-common self) + (set! (-> self next-display-state) (set-memcard-screen self (-> self next-display-state))) + (let ((v1-74 (-> self display-state))) + (cond + ((or (= v1-74 (progress-screen fuel-cell)) (or (= v1-74 (progress-screen money)) (= v1-74 (progress-screen buzzer)))) + (respond-progress self)) + ((or (= v1-74 (progress-screen memcard-no-space)) + (= v1-74 (progress-screen memcard-format)) + (= v1-74 (progress-screen memcard-data-exists)) + (= v1-74 (progress-screen memcard-insert)) + (= v1-74 (progress-screen load-game)) + (= v1-74 (progress-screen save-game)) + (= v1-74 (progress-screen save-game-title)) + (= v1-74 (progress-screen memcard-error-loading)) + (= v1-74 (progress-screen memcard-error-saving)) + (= v1-74 (progress-screen memcard-error-formatting)) + (= v1-74 (progress-screen memcard-error-creating)) + (= v1-74 (progress-screen memcard-auto-save-error)) + (= v1-74 (progress-screen memcard-removed)) + (= v1-74 (progress-screen memcard-no-data)) + (= v1-74 (progress-screen memcard-not-inserted)) + (= v1-74 (progress-screen memcard-not-formatted)) + (= v1-74 (progress-screen auto-save)) + (= v1-74 (progress-screen pal-change-to-60hz)) + (= v1-74 (progress-screen pal-now-60hz)) + (= v1-74 (progress-screen no-disc)) + (= v1-74 (progress-screen bad-disc)) + (= v1-74 (progress-screen quit))) + (respond-memcard self)))) + (suspend))) + :post + (behavior () + (let* ((a1-0 (-> self display-level-index)) + (gp-0 (-> *level-task-data* a1-0))) + #t + (let ((s5-0 #f)) (case (-> self display-state) - (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) - (let ((s5-0 (-> self display-level-index))) - (when (and (< (mod (-> *display* real-frame-counter) (seconds 0.2)) (seconds 0.1)) - (zero? (-> *progress-process* 0 in-out-position)) - (not (-> self in-transition)) - (zero? (-> self transition-offset)) - ) - (set! gp-1 (!= s5-0 (get-next-level-up s5-0))) - (set! v1-62 (!= s5-0 (get-next-level-down s5-0))) - ) - ) - ) - ) - (set! (-> self particles 3 init-pos x) (the float (if v1-62 - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ) - ) - ) - ) - (set! (-> self particles 4 init-pos x) (the float (if gp-1 - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ) - ) - ) - ) - (respond-common self) - (set! (-> self next-display-state) (set-memcard-screen self (-> self next-display-state))) - (let ((v1-74 (-> self display-state))) - (cond - ((or (= v1-74 (progress-screen fuel-cell)) - (or (= v1-74 (progress-screen money)) (= v1-74 (progress-screen buzzer))) - ) - (respond-progress self) - ) - ((or (= v1-74 (progress-screen memcard-no-space)) - (= v1-74 (progress-screen memcard-format)) - (= v1-74 (progress-screen memcard-data-exists)) - (= v1-74 (progress-screen memcard-insert)) - (= v1-74 (progress-screen load-game)) - (= v1-74 (progress-screen save-game)) - (= v1-74 (progress-screen save-game-title)) - (= v1-74 (progress-screen memcard-error-loading)) - (= v1-74 (progress-screen memcard-error-saving)) - (= v1-74 (progress-screen memcard-error-formatting)) - (= v1-74 (progress-screen memcard-error-creating)) - (= v1-74 (progress-screen memcard-auto-save-error)) - (= v1-74 (progress-screen memcard-removed)) - (= v1-74 (progress-screen memcard-no-data)) - (= v1-74 (progress-screen memcard-not-inserted)) - (= v1-74 (progress-screen memcard-not-formatted)) - (= v1-74 (progress-screen auto-save)) - (= v1-74 (progress-screen pal-change-to-60hz)) - (= v1-74 (progress-screen pal-now-60hz)) - (= v1-74 (progress-screen no-disc)) - (= v1-74 (progress-screen bad-disc)) - (= v1-74 (progress-screen quit)) - ) - (respond-memcard self) - ) - ) - ) - (suspend) - ) - ) - :post (behavior () - (let* ((a1-0 (-> self display-level-index)) - (gp-0 (-> *level-task-data* a1-0)) - ) - #t - (let ((s5-0 #f)) - (case (-> self display-state) - (((progress-screen fuel-cell)) - (set! s5-0 #t) - (draw-fuel-cell-screen self a1-0) - ) - (((progress-screen money)) - (set! s5-0 #t) - (draw-money-screen self a1-0) - ) - (((progress-screen buzzer)) - (set! s5-0 #t) - (draw-buzzer-screen self a1-0) - ) - (((progress-screen game-settings) (progress-screen settings)) - (hide-progress-icons) - (draw-options self 115 30 (the-as float 0.82)) - ) - (((progress-screen graphic-settings) - (progress-screen sound-settings) - (progress-screen settings-title) - (progress-screen title) - ) - (hide-progress-icons) - (draw-options self 115 30 (the-as float 0.82)) - ) - (((progress-screen memcard-removed) (progress-screen memcard-auto-save-error)) - (draw-notice-screen self) - (draw-options self 192 0 (the-as float 0.82)) - ) - (((progress-screen memcard-no-data)) - (draw-notice-screen self) - (draw-options self 165 0 (the-as float 0.82)) - ) - (((progress-screen memcard-format)) - (draw-notice-screen self) - (draw-options self 172 0 (the-as float 0.82)) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) - (draw-notice-screen self) - (draw-options self 195 0 (the-as float 0.82)) - ) - (((progress-screen memcard-error-loading) - (progress-screen memcard-error-saving) - (progress-screen memcard-error-formatting) - (progress-screen memcard-error-creating) - (progress-screen memcard-auto-save-error) - ) - (draw-notice-screen self) - (draw-options self 190 0 (the-as float 0.82)) - ) - (((progress-screen pal-change-to-60hz)) - (draw-notice-screen self) - (draw-options self 190 0 (the-as float 0.82)) - ) - (((progress-screen pal-now-60hz)) - (when (< (seconds 10) (- (-> *display* real-frame-counter) (-> self video-mode-timeout))) - (set! (-> *progress-state* video-mode-choice) 'pal) - (set! (-> *setting-control* default video-mode) (-> *progress-state* video-mode-choice)) - (set! (-> self next-display-state) (progress-screen invalid)) - ) - (draw-notice-screen self) - (draw-options self 140 0 (the-as float 0.82)) - ) - (((progress-screen no-disc) (progress-screen bad-disc)) - (draw-notice-screen self) - (if (is-cd-in?) - (draw-options self 170 0 (the-as float 0.82)) - ) - ) - (((progress-screen quit)) - (draw-notice-screen self) - (draw-options self 110 0 (the-as float 0.82)) - ) - (((progress-screen auto-save)) - (draw-notice-screen self) - (draw-options self 190 0 (the-as float 0.82)) - ) - (((progress-screen memcard-insert)) - (draw-notice-screen self) - (draw-options self 165 0 (the-as float 0.82)) - ) - (((progress-screen memcard-data-exists)) - (draw-notice-screen self) - (draw-options self 168 0 (the-as float 0.82)) - ) - (((progress-screen memcard-loading) - (progress-screen memcard-saving) - (progress-screen memcard-formatting) - (progress-screen memcard-creating) - ) - (draw-notice-screen self) - ) - (((progress-screen load-game) (progress-screen save-game)) - (draw-notice-screen self) - (draw-options self 190 0 (the-as float 0.82)) - ) - (((progress-screen save-game-title)) - (draw-notice-screen self) - (draw-options self 169 15 (the-as float 0.6)) - ) - ) - (when s5-0 - (let* ((v1-98 (cond - ((-> self stat-transition) - 0 - ) - ((= (-> self level-transition) 1) - (- (-> self transition-offset)) - ) - (else - (-> self transition-offset) - ) - ) - ) - (f30-0 (the-as float (if (-> self stat-transition) - 1.0 - (-> self transition-percentage-invert) - ) - ) - ) - (s5-1 - (new - 'stack - 'font-context - *font-default-matrix* - (- 32 (-> self left-x-offset)) - (the int (* (+ 42.0 (the float (/ v1-98 2))) f30-0)) - (the-as float 8325000.0) - (font-color progress-blue) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-103 s5-1)) - (set! (-> v1-103 width) (the float 328)) - ) - (let ((v1-104 s5-1)) - (set! (-> v1-104 height) (the float 45)) - ) - (set! (-> s5-1 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled - (lookup-text! *common-text* (-> gp-0 level-name-id) #f) - f30-0 - s5-1 - (the int (* 128.0 f30-0)) - ) - ) - ) - ) - ) - (case (-> self display-state) - (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) - (draw-progress self) - ) - ) - (adjust-sprites self) - (adjust-icons self) - ) - ) + (((progress-screen fuel-cell)) (set! s5-0 #t) (draw-fuel-cell-screen self a1-0)) + (((progress-screen money)) (set! s5-0 #t) (draw-money-screen self a1-0)) + (((progress-screen buzzer)) (set! s5-0 #t) (draw-buzzer-screen self a1-0)) + (((progress-screen game-settings) (progress-screen settings)) + (hide-progress-icons) + (draw-options self 115 30 (the-as float 0.82))) + (((progress-screen graphic-settings) + (progress-screen sound-settings) + (progress-screen settings-title) + (progress-screen title)) + (hide-progress-icons) + (draw-options self 115 30 (the-as float 0.82))) + (((progress-screen memcard-removed) (progress-screen memcard-auto-save-error)) + (draw-notice-screen self) + (draw-options self 192 0 (the-as float 0.82))) + (((progress-screen memcard-no-data)) (draw-notice-screen self) (draw-options self 165 0 (the-as float 0.82))) + (((progress-screen memcard-format)) (draw-notice-screen self) (draw-options self 172 0 (the-as float 0.82))) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) + (draw-notice-screen self) + (draw-options self 195 0 (the-as float 0.82))) + (((progress-screen memcard-error-loading) + (progress-screen memcard-error-saving) + (progress-screen memcard-error-formatting) + (progress-screen memcard-error-creating) + (progress-screen memcard-auto-save-error)) + (draw-notice-screen self) + (draw-options self 190 0 (the-as float 0.82))) + (((progress-screen pal-change-to-60hz)) (draw-notice-screen self) (draw-options self 190 0 (the-as float 0.82))) + (((progress-screen pal-now-60hz)) + (when (< (seconds 10) (- (-> *display* real-frame-counter) (-> self video-mode-timeout))) + (set! (-> *progress-state* video-mode-choice) 'pal) + (set! (-> *setting-control* default video-mode) (-> *progress-state* video-mode-choice)) + (set! (-> self next-display-state) (progress-screen invalid))) + (draw-notice-screen self) + (draw-options self 140 0 (the-as float 0.82))) + (((progress-screen no-disc) (progress-screen bad-disc)) + (draw-notice-screen self) + (if (is-cd-in?) (draw-options self 170 0 (the-as float 0.82)))) + (((progress-screen quit)) (draw-notice-screen self) (draw-options self 110 0 (the-as float 0.82))) + (((progress-screen auto-save)) (draw-notice-screen self) (draw-options self 190 0 (the-as float 0.82))) + (((progress-screen memcard-insert)) (draw-notice-screen self) (draw-options self 165 0 (the-as float 0.82))) + (((progress-screen memcard-data-exists)) (draw-notice-screen self) (draw-options self 168 0 (the-as float 0.82))) + (((progress-screen memcard-loading) + (progress-screen memcard-saving) + (progress-screen memcard-formatting) + (progress-screen memcard-creating)) + (draw-notice-screen self)) + (((progress-screen load-game) (progress-screen save-game)) + (draw-notice-screen self) + (draw-options self 190 0 (the-as float 0.82))) + (((progress-screen save-game-title)) (draw-notice-screen self) (draw-options self 169 15 (the-as float 0.6)))) + (when s5-0 + (let* ((v1-98 (cond + ((-> self stat-transition) 0) + ((= (-> self level-transition) 1) (- (-> self transition-offset))) + (else (-> self transition-offset)))) + (f30-0 (the-as float (if (-> self stat-transition) 1.0 (-> self transition-percentage-invert)))) + (s5-1 (new 'stack + 'font-context + *font-default-matrix* + (- 32 (-> self left-x-offset)) + (the int (* (+ 42.0 (the float (/ v1-98 2))) f30-0)) + (the-as float 8325000.0) + (font-color progress-blue) + (font-flags shadow kerning)))) + (let ((v1-103 s5-1)) (set! (-> v1-103 width) (the float 328))) + (let ((v1-104 s5-1)) (set! (-> v1-104 height) (the float 45))) + (set! (-> s5-1 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text-scaled (lookup-text! *common-text* (-> gp-0 level-name-id) #f) f30-0 s5-1 (the int (* 128.0 f30-0))))))) + (case (-> self display-state) + (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) (draw-progress self))) + (adjust-sprites self) + (adjust-icons self))) (defstate progress-coming-in (progress) - :event (-> progress-waiting event) - :enter (behavior () - (sound-group-pause (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7)) - (logclear! (-> *setting-control* default process-mask) (process-mask pause menu)) - (add-setting! 'process-mask 'set 0.0 (process-mask progress)) - (apply-settings *setting-control*) - (sound-play "select-menu") - (set-blackout-frames 0) - (set! *pause-lock* #f) - ) - :code (behavior () - (loop - (seekl! (-> self in-out-position) 0 (the int (* 170.0 (-> *display* time-adjust-ratio)))) - (when (< (-> self in-out-position) 2867) - (seekl! - (-> self transition-offset) - 0 - (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) - ) - (set-transition-progress! self (-> self transition-offset)) - ) - (if (zero? (-> self in-out-position)) - (go progress-normal) - ) - (suspend) - ) - ) - :post (-> progress-normal post) - ) + :event + (-> progress-waiting + event) + :enter + (behavior () + (sound-group-pause (sound-group sfx music dialog sog3 ambient sog5 sog6 sog7)) + (logclear! (-> *setting-control* default process-mask) (process-mask pause menu)) + (add-setting! 'process-mask 'set 0.0 (process-mask progress)) + (apply-settings *setting-control*) + (sound-play "select-menu") + (set-blackout-frames 0) + (set! *pause-lock* #f)) + :code + (behavior () + (loop + (seekl! (-> self in-out-position) 0 (the int (* 170.0 (-> *display* time-adjust-ratio)))) + (when (< (-> self in-out-position) 2867) + (seekl! (-> self transition-offset) 0 (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio)))) + (set-transition-progress! self (-> self transition-offset))) + (if (zero? (-> self in-out-position)) (go progress-normal)) + (suspend))) + :post + (-> progress-normal + post)) (defstate progress-going-out (progress) - :enter (behavior () - (sound-play "menu-close") - (hide-progress-icons) - (set! (-> self particles 3 init-pos x) -320.0) - (set! (-> self particles 4 init-pos x) -320.0) - (case (-> self display-state) - (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (set! (-> self transition-speed) 30.0) - ) - ) - ) - :code (behavior () - (loop - (seekl! - (-> self transition-offset) - 512 - (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) - ) - (set-transition-progress! self (-> self transition-offset)) - (when (< 153 (-> self transition-offset)) - (seekl! (-> self in-out-position) 4096 (the int (* 170.0 (-> *display* time-adjust-ratio)))) - (if (= (-> self in-out-position) 4096) - (go progress-gone) - ) - ) - (suspend) - ) - ) - :post (-> progress-normal post) - ) + :enter + (behavior () + (sound-play "menu-close") + (hide-progress-icons) + (set! (-> self particles 3 init-pos x) -320.0) + (set! (-> self particles 4 init-pos x) -320.0) + (case (-> self display-state) + (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) + (set! (-> self transition-speed) 30.0)))) + :code + (behavior () + (loop + (seekl! (-> self transition-offset) 512 (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio)))) + (set-transition-progress! self (-> self transition-offset)) + (when (< 153 (-> self transition-offset)) + (seekl! (-> self in-out-position) 4096 (the int (* 170.0 (-> *display* time-adjust-ratio)))) + (if (= (-> self in-out-position) 4096) (go progress-gone))) + (suspend))) + :post + (-> progress-normal + post)) (defstate progress-debug (progress) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('go-away) - (go progress-going-out) - ) - ) - ) - :code (behavior () - (loop - (cond - ((cpad-pressed? 0 left) - (if (> (-> self current-debug-string) 0) - (+! (-> self current-debug-string) -1) - ) - ) - ((cpad-pressed? 0 right) - (if (< (-> self current-debug-string) (+ (-> *common-text* length) -1)) - (+! (-> self current-debug-string) 1) - ) - ) - ((cpad-pressed? 0 up) - (when (> (-> self current-debug-group) 0) - (+! (-> self current-debug-group) -1) - (set! (-> self current-debug-string) 0) - 0 - ) - ) - ((cpad-pressed? 0 down) - (when (< (-> self current-debug-group) (+ (-> *text-group-names* length) -1)) - (+! (-> self current-debug-group) 1) - (set! (-> self current-debug-string) 0) - 0 - ) - ) - ((cpad-pressed? 0 l1) - (if (> (the-as int (-> *setting-control* default language)) 0) - (+! (-> *setting-control* default language) -1) - ) - ) - ((cpad-pressed? 0 r1) - (if (< (the-as int (-> *setting-control* default language)) 6) - (+! (-> *setting-control* default language) 1) - ) - ) - ((cpad-pressed? 0 l2) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l2)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons l2)) - (go progress-normal) - ) - ) - (load-game-text-info (-> *text-group-names* (-> self current-debug-group)) '*common-text* *common-text-heap*) - (suspend) - ) - ) - :post (behavior () - (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-0 (-> s5-0 base)) - ) - (let ((s4-0 draw-string-xy)) - (let ((s3-0 format) - (a0-4 (clear *temp-string*)) - (a1-0 "TEXT DEBUG: LANGUAGE ~S ID 0x~X") - (v1-4 (-> *setting-control* current language)) - ) - (s3-0 - a0-4 - a1-0 - (cond - ((= v1-4 (language-enum uk-english)) - "uk-english" - ) - ((= v1-4 (language-enum japanese)) - "japanese" - ) - ((= v1-4 (language-enum italian)) - "italian" - ) - ((= v1-4 (language-enum spanish)) - "spanish" - ) - ((= v1-4 (language-enum german)) - "german" - ) - ((= v1-4 (language-enum french)) - "french" - ) - ((= v1-4 (language-enum english)) - "english" - ) - (else - "*unknown*" - ) - ) - (-> *common-text* data (-> self current-debug-string) id) - ) - ) - (s4-0 *temp-string* s5-0 40 40 (font-color default) (font-flags shadow kerning)) - ) - (let ((a3-4 (-> s5-0 base))) - (let ((v1-7 (the-as dma-packet (-> s5-0 base)))) - (set! (-> v1-7 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-7 vif0) (new 'static 'vif-tag)) - (set! (-> v1-7 vif1) (new 'static 'vif-tag)) - (set! (-> s5-0 base) (&+ (the-as pointer v1-7) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-0 - (the-as (pointer dma-tag) a3-4) - ) - ) - ) - (let* ((s5-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-1 (-> s5-1 base)) - ) - (let ((s4-1 draw-string-xy)) - (format (clear *temp-string*) "USE LEFT/RIGHT TO SELECT STRING") - (s4-1 *temp-string* s5-1 40 155 (font-color default) (font-flags shadow kerning)) - ) - (let ((a3-6 (-> s5-1 base))) - (let ((v1-16 (the-as dma-packet (-> s5-1 base)))) - (set! (-> v1-16 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-16 vif0) (new 'static 'vif-tag)) - (set! (-> v1-16 vif1) (new 'static 'vif-tag)) - (set! (-> s5-1 base) (the-as pointer (the-as dma-packet (&+ v1-16 16)))) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-1 - (the-as (pointer dma-tag) a3-6) - ) - ) - ) - (let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-2 (-> s5-2 base)) - ) - (let ((s4-2 draw-string-xy)) - (format (clear *temp-string*) "USE UP/DOWN TO SELECT GROUP") - (s4-2 *temp-string* s5-2 40 165 (font-color default) (font-flags shadow kerning)) - ) - (let ((a3-8 (-> s5-2 base))) - (let ((v1-25 (the-as dma-packet (-> s5-2 base)))) - (set! (-> v1-25 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-25 vif0) (new 'static 'vif-tag)) - (set! (-> v1-25 vif1) (new 'static 'vif-tag)) - (set! (-> s5-2 base) (the-as pointer (the-as dma-packet (&+ v1-25 16)))) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-2 - (the-as (pointer dma-tag) a3-8) - ) - ) - ) - (let* ((s5-3 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (gp-3 (-> s5-3 base)) - ) - (let ((s4-3 draw-string-xy)) - (format (clear *temp-string*) "USE L1/R1 TO SELECT LANGUAGE") - (s4-3 *temp-string* s5-3 40 175 (font-color default) (font-flags shadow kerning)) - ) - (let ((a3-10 (-> s5-3 base))) - (let ((v1-34 (the-as dma-packet (-> s5-3 base)))) - (set! (-> v1-34 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-34 vif0) (new 'static 'vif-tag)) - (set! (-> v1-34 vif1) (new 'static 'vif-tag)) - (set! (-> s5-3 base) (the-as pointer (the-as dma-packet (&+ v1-34 16)))) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - gp-3 - (the-as (pointer dma-tag) a3-10) - ) - ) - ) - (let ((gp-4 (new - 'stack - 'font-context - *font-default-matrix* - 32 - 50 - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-42 gp-4)) - (set! (-> v1-42 width) (the float 328)) - ) - (let ((v1-43 gp-4)) - (set! (-> v1-43 height) (the float 100)) - ) - (logior! (-> gp-4 flags) (font-flags shadow kerning large)) - (draw-debug-text-box gp-4) - (print-game-text (-> *common-text* data (-> self current-debug-string) text) gp-4 #f 128 22) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('go-away) (go progress-going-out)))) + :code + (behavior () + (loop + (cond + ((cpad-pressed? 0 left) (if (> (-> self current-debug-string) 0) (+! (-> self current-debug-string) -1))) + ((cpad-pressed? 0 right) + (if (< (-> self current-debug-string) (+ (-> *common-text* length) -1)) (+! (-> self current-debug-string) 1))) + ((cpad-pressed? 0 up) + (when (> (-> self current-debug-group) 0) + (+! (-> self current-debug-group) -1) + (set! (-> self current-debug-string) 0) + 0)) + ((cpad-pressed? 0 down) + (when (< (-> self current-debug-group) (+ (-> *text-group-names* length) -1)) + (+! (-> self current-debug-group) 1) + (set! (-> self current-debug-string) 0) + 0)) + ((cpad-pressed? 0 l1) + (if (> (the-as int (-> *setting-control* default language)) 0) (+! (-> *setting-control* default language) -1))) + ((cpad-pressed? 0 r1) + (if (< (the-as int (-> *setting-control* default language)) 6) (+! (-> *setting-control* default language) 1))) + ((cpad-pressed? 0 l2) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l2)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons l2)) + (go progress-normal))) + (load-game-text-info (-> *text-group-names* (-> self current-debug-group)) '*common-text* *common-text-heap*) + (suspend))) + :post + (behavior () + (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-0 (-> s5-0 base))) + (let ((s4-0 draw-string-xy)) + (let ((s3-0 format) + (a0-4 (clear *temp-string*)) + (a1-0 "TEXT DEBUG: LANGUAGE ~S ID 0x~X") + (v1-4 (-> *setting-control* current language))) + (s3-0 a0-4 + a1-0 + (cond + ((= v1-4 (language-enum uk-english)) "uk-english") + ((= v1-4 (language-enum japanese)) "japanese") + ((= v1-4 (language-enum italian)) "italian") + ((= v1-4 (language-enum spanish)) "spanish") + ((= v1-4 (language-enum german)) "german") + ((= v1-4 (language-enum french)) "french") + ((= v1-4 (language-enum english)) "english") + (else "*unknown*")) + (-> *common-text* data (-> self current-debug-string) id))) + (s4-0 *temp-string* s5-0 40 40 (font-color default) (font-flags shadow kerning))) + (let ((a3-4 (-> s5-0 base))) + (let ((v1-7 (the-as dma-packet (-> s5-0 base)))) + (set! (-> v1-7 dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> v1-7 vif0) (new 'static 'vif-tag)) + (set! (-> v1-7 vif1) (new 'static 'vif-tag)) + (set! (-> s5-0 base) (&+ (the-as pointer v1-7) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-0 + (the-as (pointer dma-tag) a3-4)))) + (let* ((s5-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-1 (-> s5-1 base))) + (let ((s4-1 draw-string-xy)) + (format (clear *temp-string*) "USE LEFT/RIGHT TO SELECT STRING") + (s4-1 *temp-string* s5-1 40 155 (font-color default) (font-flags shadow kerning))) + (let ((a3-6 (-> s5-1 base))) + (let ((v1-16 (the-as dma-packet (-> s5-1 base)))) + (set! (-> v1-16 dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> v1-16 vif0) (new 'static 'vif-tag)) + (set! (-> v1-16 vif1) (new 'static 'vif-tag)) + (set! (-> s5-1 base) (the-as pointer (the-as dma-packet (&+ v1-16 16))))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-1 + (the-as (pointer dma-tag) a3-6)))) + (let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-2 (-> s5-2 base))) + (let ((s4-2 draw-string-xy)) + (format (clear *temp-string*) "USE UP/DOWN TO SELECT GROUP") + (s4-2 *temp-string* s5-2 40 165 (font-color default) (font-flags shadow kerning))) + (let ((a3-8 (-> s5-2 base))) + (let ((v1-25 (the-as dma-packet (-> s5-2 base)))) + (set! (-> v1-25 dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> v1-25 vif0) (new 'static 'vif-tag)) + (set! (-> v1-25 vif1) (new 'static 'vif-tag)) + (set! (-> s5-2 base) (the-as pointer (the-as dma-packet (&+ v1-25 16))))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-2 + (the-as (pointer dma-tag) a3-8)))) + (let* ((s5-3 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-3 (-> s5-3 base))) + (let ((s4-3 draw-string-xy)) + (format (clear *temp-string*) "USE L1/R1 TO SELECT LANGUAGE") + (s4-3 *temp-string* s5-3 40 175 (font-color default) (font-flags shadow kerning))) + (let ((a3-10 (-> s5-3 base))) + (let ((v1-34 (the-as dma-packet (-> s5-3 base)))) + (set! (-> v1-34 dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> v1-34 vif0) (new 'static 'vif-tag)) + (set! (-> v1-34 vif1) (new 'static 'vif-tag)) + (set! (-> s5-3 base) (the-as pointer (the-as dma-packet (&+ v1-34 16))))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + gp-3 + (the-as (pointer dma-tag) a3-10)))) + (let ((gp-4 (new 'stack 'font-context *font-default-matrix* 32 50 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-42 gp-4)) (set! (-> v1-42 width) (the float 328))) + (let ((v1-43 gp-4)) (set! (-> v1-43 height) (the float 100))) + (logior! (-> gp-4 flags) (font-flags shadow kerning large)) + (draw-debug-text-box gp-4) + (print-game-text (-> *common-text* data (-> self current-debug-string) text) gp-4 #f 128 22)))) diff --git a/goal_src/jak1/engine/ui/text-h.gc b/goal_src/jak1/engine/ui/text-h.gc index f4b83d19d2..8f054a178c 100644 --- a/goal_src/jak1/engine/ui/text-h.gc +++ b/goal_src/jak1/engine/ui/text-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gkernel-h.gc") -;; name: text-h.gc -;; name in dgo: text-h -;; dgos: GAME, ENGINE - ;; This file contains types related to game text. ;; Each game string is assigned an ID number. ;; This ID is used to lookup the string for the currently selected language. @@ -17,7 +12,7 @@ (defenum text-id :type uint32 :bitfield #f -;; GAME-TEXT-ID ENUM BEGINS + ;; GAME-TEXT-ID ENUM BEGINS (zero 0) (one 1) (confirm #x103) @@ -71,7 +66,6 @@ (memcard-do-not-remove #x138) (overwrite? #x139) (format? #x13a) - (yes #x13c) (no #x13d) (back #x13e) @@ -119,7 +113,6 @@ (quit-game #x16f) (quit? #x170) (total-collected #x171) - (village1-mayor-money #x200) (village1-uncle-money #x201) (village1-yakow-herd #x202) @@ -176,26 +169,19 @@ (sidekick-hint-oracle #x235) (sidekick-hint-seagulls #x236) (sidekick-hint-pelican #x237) - (sidekick-hint-ecorocks #x239) (sidekick-hint-mistycannon #x23a) (sidekick-hint-dive #x23b) (sidekick-hint-rounddoor #x23c) (sidekick-hint-lurkerm #x23d) (sidekick-hint-tower #x23e) - (sidekick-reminder-fish #x240) - (firecanyon-need-cells #x24f) - (sidekick-hint-orb-cache-top #x251) - (sidekick-hint-precurbridge #x25b) (sidekick-hint-launcher #x25c) - (jungle-lurkerm-resolution #x25e) (jungle-lurkerm-hint #x25f) - (beach-gimmie #x262) (beach-sentinel #x263) (jungle-canyon-end #x264) @@ -207,16 +193,11 @@ (sidekick-seagulls2 #x26a) (sidekick-seagulls3 #x26b) (sidekick-seagulls4 #x26c) - (sidekick-warehouse #x26e) (sidekick-misty #x26f) - (beach-seagulls-avalanche #x273) - (beach-pelican-quick-get-cell #x274) - (beach-flutflutegg-hint #x275) - (sidekick-hint-fish-powerup #x278) (misty-bike-hint #x27e) (misty-bike-mines-hint #x27f) @@ -232,7 +213,6 @@ (jungle-eggtop-resolution #x289) (misty-cannon-resolution #x28a) (misty-bike-resolution #x28b) - (sidekick-hint-crate-steel-break2 #x28e) (sidekick-hint-crate-darkeco2 #x28f) (sidekick-launcher1 #x290) @@ -243,31 +223,25 @@ (sidekick-hint-buzzer3 #x295) (sidekick-buzzer-resolution #x296) (village1-yakow-resolution #x297) - (sidekick-hint-periscope #x29c) (sidekick-hint-reflector-mirror #x29d) (sidekick-hint-aphid #x29e) (sidekick-hint-periscope2 #x29f) (sidekick-hint-periscope3 #x2a0) (sidekick-hint-eco-door #x2a1) - (misty-teetertotter #x2a4) (misty-eco-red-hint #x2a5) (misty-eco-red-first-use #x2a6) (misty-eco-plat #x2a7) - (fish? #x2a9) (misty-bone-bridge-hint #x2aa) - (beach-grottopole-increment #x2af) - (village1cam-enough-cells #x2b1) (village1cam-enough-cells2 #x2b2) (firecanyon-need-cells-text #x2b3) (caught #x2b4) (missed #x2b5) (lose! #x2b6) - (village2-gambler-money #x300) (village2-geologist-money #x301) (village2-warrior-money #x302) @@ -309,7 +283,6 @@ (sunken-room-resolution #x326) (rolling-robbers-resolution #x327) (swamp-flutflut-resolution #x328) - (rolling-race-beat-record #x335) (sidekick-hint-crate-darkeco-rolling #x336) (rolling-moles-hint #x337) @@ -367,7 +340,6 @@ (swamp-arm-resolution #x36b) (village2-levitator-need-cells #x36c) (village2-levitator-find-cells #x36d) - (village2-button-reminder #x36f) (village2-button-reminder2 #x370) (village2-button-reminder3 #x371) @@ -377,7 +349,6 @@ (new-record #x375) (try-again #x376) (race-aborted #x377) - (village3-miner-money #x400) (village3-oracle-money #x401) (snow-ram-3-left #x402) @@ -415,7 +386,6 @@ (snow-birds #x422) (cave-spider-tunnel #x423) (cave-platforms #x424) - (cave-swing-poles #x426) (assistant-lavatube-hint #x427) (assistant-lavatube-need-cells #x428) @@ -423,7 +393,6 @@ (gondola-enough-cells #x42a) (snow-cage #x42b) (snow-bumpers #x42c) - (cave-dark-crystals-resolution #x432) (cave-gnawers-look-around #x433) (cave-darkeco #x434) @@ -460,7 +429,6 @@ (village3-button-reminder2 #x453) (village3-button-reminder3 #x454) (assistant-lavatube-need-cells-text #x455) - (firecanyon-end #x500) (firecanyon-buzzer #x501) (firecanyon-balloon-hint #x502) @@ -484,14 +452,12 @@ (firecanyon-heat-warning9 #x514) (firecanyon-end-resolution #x515) (firecanyon-buzzer-hint #x516) - (ogre-end #x600) (ogre-buzzer #x601) (ogre-poi-ogre #x602) (ogre-boss #x603) (ogre-boss-resolution #x604) (ogre-race-hint #x605) - (ogre-race-introduction #x607) (ogre-tnt-hint #x608) (ogre-race-ahead-hint #x609) @@ -515,7 +481,6 @@ (ogre-race-end-almost-losing #x61b) (ogre-plunger-lurker-resolution #x61c) (ogre-race-resolution #x61d) - (lavatube-end #x700) (lavatube-buzzer #x701) (lavatube-hurry #x702) @@ -534,7 +499,6 @@ (lavatube-balls-resolution #x710) (lavatube-tunnel3 #x711) (lavatube-end-resolution #x712) - (citadel-buzzer #x800) (citadel-level-name #x801) (citadel-sage-blue #x802) @@ -555,7 +519,6 @@ (citadel-hub2 #x811) (citadel-launcher2 #x812) (citadel-battle-end #x813) - (training-voicebox #x900) (training-money #x901) (training-fuel-cell #x902) @@ -588,192 +551,190 @@ (training-door-task-name #x91d) (training-climb-task-name #x91e) (training-level-name #x91f) - (inc #xf10) (europe #xf11) - ;; extra IDs for pc port - (camera-options #x1000) - (normal #x1001) - (inverted #x1002) - (camera-controls-first-horz #x1003) - (camera-controls-first-vert #x1004) - (camera-controls-third-horz #x1005) - (camera-controls-third-vert #x1006) - (restore-defaults #x1007) - (auto-save-disabled #x100c) - (disable-auto-save-query #x100d) - (disable-auto-save #x100e) - (misc-options #x100f) - (accessibility-options #x1010) - (money-starburst #x1011) - (ps2-options #x1020) - (ps2-load-speed #x1021) - (ps2-parts #x1022) - (music-fadeout #x1023) - (music-fadein #x1024) - (force-actors #x1025) - (force-background #x1026) - (force-envmap #x1027) - (discord-rpc #x1030) - (display-mode #x1031) - (windowed #x1032) - (borderless #x1033) - (fullscreen #x1034) - (game-resolution #x1035) - (resolution-fmt #x1036) - (ps2-aspect-ratio #x1037) - (ps2-aspect-ratio-msg #x1038) - (aspect-ratio-ps2 #x1039) - (fit-to-screen #x103a) - (vsync #x103b) - (aspect4x3-ps2 #x103c) - (aspect16x9-ps2 #x103d) - (aspect-fmt #x103e) - (subtitle-hint #x103f) - (subtitle-enabled #x1040) - (subtitle-disabled #x1041) - (text-language #x1042) - (display #x1043) - (display-fmt #x1044) - (msaa #x1050) - (x-times-fmt #x1051) - (2-times #x1052) - (4-times #x1053) - (8-times #x1054) - (16-times #x1055) - (frame-rate #x1060) - (60fps #x1061) - (100fps #x1062) - (150fps #x1063) - (lod-bg #x1070) - (lod-fg #x1071) - (lod-highest #x1072) - (lod-high #x1073) - (lod-mid #x1074) - (lod-low #x1075) - (lod-lowest #x1076) - (lod-ps2 #x1077) - (subtitles #x1078) - (hinttitles #x1079) - (subtitles-language #x107a) - (subtitles-speaker #x107b) - (speaker-always #x107c) - (speaker-never #x107d) - (speaker-auto #x107e) - (hint-log #x107f) - (cheats #x1080) - (secrets #x1081) - (select-level #x1082) - (select-flava #x1083) - (finalboss-level-name #x1084) - (credits #x1085) - (locked #x1086) - (ogreboss #x1087) - (fishgame #x1088) - (danger-mus #x1089) - (flava-player-controls #x108a) - (cheat-eco-blue #x1090) - (cheat-eco-red #x1091) - (cheat-eco-green #x1092) - (cheat-eco-yellow #x1093) - (cheat-sidekick-alt #x1094) - (cheat-invinc #x1095) - (cheat-tunes #x1096) - (cheat-sky #x1097) - (cheat-req-100-percent #x1098) - (cheat-req-beat-game #x1099) - (cheat-big-head #x109a) - (cheat-small-head #x109b) - (cheat-big-fist #x109c) - (cheat-big-head-npc #x109d) - (cheat-no-tex #x109e) - (cheat-mirror #x109f) - (cheat-huge-head #x10a0) - (music-player #x10c0) - (scene-player #x10c1) - (play-credits #x10c2) - (scrapbook #x10c3) - (default #x10d0) - (flava-vi1-unused0 #x10d1) - (flava-sage #x10d2) - (flava-sage-hut #x10d3) - (flava-birdlady #x10d4) - (flava-farmer #x10d5) - (flava-assistant #x10d6) - (flava-mayor #x10d7) - (flava-sculptor #x10d8) - (flava-explorer #x10d9) - (flava-dock #x10da) - (flava-jun-temple-exit #x10db) - (flava-jun-lurkerm #x10dc) - (flava-jun-temple-top #x10dd) - (flava-jub-eggtop #x10de) - (flava-jub-plant-boss #x10df) - (flava-bea-sentinel #x10e0) - (flava-bea-cannon #x10e1) - (flava-bea-grotto #x10e2) - (flava-mis-battle #x10e3) - (flava-mis-boat #x10e4) - (flava-mis-unused0 #x10e5) - (flava-racer #x10e6) - (flava-flutflut #x10e7) - (flava-fic-unused0 #x10e8) - (flava-warrior #x10e9) - (flava-geologist #x10ea) - (flava-gambler #x10eb) - (flava-levitator #x10ec) - (flava-swa-game #x10ed) - (flava-swa-launcher #x10ee) - (flava-swa-battle #x10ef) - (flava-rol-gorge #x10f0) - (flava-ogr-middle #x10f1) - (flava-ogr-end #x10f2) - (flava-vi3-mai #x10f3) - (flava-vi3-sno #x10f4) - (flava-vi3-miners #x10f5) - (flava-mai-rob #x10f6) - (flava-mai-rob-top #x10f7) - (flava-mai-mai #x10f8) - (flava-mai-dar #x10f9) - (flava-sno-battle #x10fa) - (flava-sno-cave #x10fb) - (flava-sno-fort #x10fc) - (flava-sno-balls #x10fd) - (flava-lav-middle #x10fe) - (flava-lav-end #x10ff) - (flava-cit-yellowsage #x1100) - (flava-cit-redsage #x1101) - (flava-cit-bluesage #x1102) - (flava-cit-hub #x1103) - (flava-fin-middle #x1104) - (flava-fin-end #x1105) - (flava-credits-middle #x1106) - (flava-credits-end #x1107) - (uk-english #x1110) - (portuguese #x1111) - (br-portuguese #x1112) - (finnish #x1113) - (swedish #x1114) - (danish #x1115) - (norwegian #x1116) - (hungarian #x1117) - (dutch #x1118) - (catalan #x1119) - (icelandic #x111a) - (polish #x111b) - (lithuanian #x111c) - (scene-0 #x1200) - (scene-255 #x12ff) - (hint-0 #x1300) - (hint-511 #x14ff) - (speedrunner-mode #x1500) - (cutscene-skips #x1501) - (checkpoint-select #x1502) - (speedrun-options-heading #x1503) - (speedrun-options-warning #x1504) - (speedrun-reset-current-run #x1505) - (speedrun-new-full-game #x1506) + (camera-options #x1000) + (normal #x1001) + (inverted #x1002) + (camera-controls-first-horz #x1003) + (camera-controls-first-vert #x1004) + (camera-controls-third-horz #x1005) + (camera-controls-third-vert #x1006) + (restore-defaults #x1007) + (auto-save-disabled #x100c) + (disable-auto-save-query #x100d) + (disable-auto-save #x100e) + (misc-options #x100f) + (accessibility-options #x1010) + (money-starburst #x1011) + (ps2-options #x1020) + (ps2-load-speed #x1021) + (ps2-parts #x1022) + (music-fadeout #x1023) + (music-fadein #x1024) + (force-actors #x1025) + (force-background #x1026) + (force-envmap #x1027) + (discord-rpc #x1030) + (display-mode #x1031) + (windowed #x1032) + (borderless #x1033) + (fullscreen #x1034) + (game-resolution #x1035) + (resolution-fmt #x1036) + (ps2-aspect-ratio #x1037) + (ps2-aspect-ratio-msg #x1038) + (aspect-ratio-ps2 #x1039) + (fit-to-screen #x103a) + (vsync #x103b) + (aspect4x3-ps2 #x103c) + (aspect16x9-ps2 #x103d) + (aspect-fmt #x103e) + (subtitle-hint #x103f) + (subtitle-enabled #x1040) + (subtitle-disabled #x1041) + (text-language #x1042) + (display #x1043) + (display-fmt #x1044) + (msaa #x1050) + (x-times-fmt #x1051) + (2-times #x1052) + (4-times #x1053) + (8-times #x1054) + (16-times #x1055) + (frame-rate #x1060) + (60fps #x1061) + (100fps #x1062) + (150fps #x1063) + (lod-bg #x1070) + (lod-fg #x1071) + (lod-highest #x1072) + (lod-high #x1073) + (lod-mid #x1074) + (lod-low #x1075) + (lod-lowest #x1076) + (lod-ps2 #x1077) + (subtitles #x1078) + (hinttitles #x1079) + (subtitles-language #x107a) + (subtitles-speaker #x107b) + (speaker-always #x107c) + (speaker-never #x107d) + (speaker-auto #x107e) + (hint-log #x107f) + (cheats #x1080) + (secrets #x1081) + (select-level #x1082) + (select-flava #x1083) + (finalboss-level-name #x1084) + (credits #x1085) + (locked #x1086) + (ogreboss #x1087) + (fishgame #x1088) + (danger-mus #x1089) + (flava-player-controls #x108a) + (cheat-eco-blue #x1090) + (cheat-eco-red #x1091) + (cheat-eco-green #x1092) + (cheat-eco-yellow #x1093) + (cheat-sidekick-alt #x1094) + (cheat-invinc #x1095) + (cheat-tunes #x1096) + (cheat-sky #x1097) + (cheat-req-100-percent #x1098) + (cheat-req-beat-game #x1099) + (cheat-big-head #x109a) + (cheat-small-head #x109b) + (cheat-big-fist #x109c) + (cheat-big-head-npc #x109d) + (cheat-no-tex #x109e) + (cheat-mirror #x109f) + (cheat-huge-head #x10a0) + (music-player #x10c0) + (scene-player #x10c1) + (play-credits #x10c2) + (scrapbook #x10c3) + (default #x10d0) + (flava-vi1-unused0 #x10d1) + (flava-sage #x10d2) + (flava-sage-hut #x10d3) + (flava-birdlady #x10d4) + (flava-farmer #x10d5) + (flava-assistant #x10d6) + (flava-mayor #x10d7) + (flava-sculptor #x10d8) + (flava-explorer #x10d9) + (flava-dock #x10da) + (flava-jun-temple-exit #x10db) + (flava-jun-lurkerm #x10dc) + (flava-jun-temple-top #x10dd) + (flava-jub-eggtop #x10de) + (flava-jub-plant-boss #x10df) + (flava-bea-sentinel #x10e0) + (flava-bea-cannon #x10e1) + (flava-bea-grotto #x10e2) + (flava-mis-battle #x10e3) + (flava-mis-boat #x10e4) + (flava-mis-unused0 #x10e5) + (flava-racer #x10e6) + (flava-flutflut #x10e7) + (flava-fic-unused0 #x10e8) + (flava-warrior #x10e9) + (flava-geologist #x10ea) + (flava-gambler #x10eb) + (flava-levitator #x10ec) + (flava-swa-game #x10ed) + (flava-swa-launcher #x10ee) + (flava-swa-battle #x10ef) + (flava-rol-gorge #x10f0) + (flava-ogr-middle #x10f1) + (flava-ogr-end #x10f2) + (flava-vi3-mai #x10f3) + (flava-vi3-sno #x10f4) + (flava-vi3-miners #x10f5) + (flava-mai-rob #x10f6) + (flava-mai-rob-top #x10f7) + (flava-mai-mai #x10f8) + (flava-mai-dar #x10f9) + (flava-sno-battle #x10fa) + (flava-sno-cave #x10fb) + (flava-sno-fort #x10fc) + (flava-sno-balls #x10fd) + (flava-lav-middle #x10fe) + (flava-lav-end #x10ff) + (flava-cit-yellowsage #x1100) + (flava-cit-redsage #x1101) + (flava-cit-bluesage #x1102) + (flava-cit-hub #x1103) + (flava-fin-middle #x1104) + (flava-fin-end #x1105) + (flava-credits-middle #x1106) + (flava-credits-end #x1107) + (uk-english #x1110) + (portuguese #x1111) + (br-portuguese #x1112) + (finnish #x1113) + (swedish #x1114) + (danish #x1115) + (norwegian #x1116) + (hungarian #x1117) + (dutch #x1118) + (catalan #x1119) + (icelandic #x111a) + (polish #x111b) + (lithuanian #x111c) + (scene-0 #x1200) + (scene-255 #x12ff) + (hint-0 #x1300) + (hint-511 #x14ff) + (speedrunner-mode #x1500) + (cutscene-skips #x1501) + (checkpoint-select #x1502) + (speedrun-options-heading #x1503) + (speedrun-options-warning #x1504) + (speedrun-reset-current-run #x1505) + (speedrun-new-full-game #x1506) ;; (speedrun-full-game-any #x1507) ;; (speedrun-full-game-100 #x1508) ;; (speedrun-full-game-nolts #x1509) @@ -782,29 +743,28 @@ ;; (speedrun-full-game-all-flies #x150c) ;; (speedrun-full-game-all-orbs #x150d) (speedrun-new-individual-level #x150e) - (speedrun-il-training #x150f) - (speedrun-il-village1 #x1510) - (speedrun-il-beach #x1511) - (speedrun-il-jungle #x1512) - (speedrun-il-misty #x1513) - (speedrun-il-firecanyon #x1514) - (speedrun-il-village2 #x1515) - (speedrun-il-sunken #x1516) - (speedrun-il-swamp #x1517) - (speedrun-il-rolling #x1518) - (speedrun-il-ogre #x1519) - (speedrun-il-village3 #x151a) - (speedrun-il-snow #x151b) - (speedrun-il-cave #x151c) - (speedrun-il-lavatube #x151d) - (speedrun-il-citadel #x151e) - (speedrun-new-cat-ext #x151f) - (speedrun-new-game-plus #x1520) - (speedrun-hub1-100 #x1521) - (speedrun-hub2-100 #x1522) - (speedrun-hub3-100 #x1523) - (speedrun-all-cutscenes #x1524) - + (speedrun-il-training #x150f) + (speedrun-il-village1 #x1510) + (speedrun-il-beach #x1511) + (speedrun-il-jungle #x1512) + (speedrun-il-misty #x1513) + (speedrun-il-firecanyon #x1514) + (speedrun-il-village2 #x1515) + (speedrun-il-sunken #x1516) + (speedrun-il-swamp #x1517) + (speedrun-il-rolling #x1518) + (speedrun-il-ogre #x1519) + (speedrun-il-village3 #x151a) + (speedrun-il-snow #x151b) + (speedrun-il-cave #x151c) + (speedrun-il-lavatube #x151d) + (speedrun-il-citadel #x151e) + (speedrun-new-cat-ext #x151f) + (speedrun-new-game-plus #x1520) + (speedrun-hub1-100 #x1521) + (speedrun-hub2-100 #x1522) + (speedrun-hub3-100 #x1523) + (speedrun-all-cutscenes #x1524) ;; input options (input-options #x1600) (input-opts-select-controller #x1601) @@ -843,23 +803,18 @@ ;; an individual string. (deftype game-text (structure) - ((id text-id) - (text string) - ) - :pack-me - ) + ((id text-id) + (text string)) + :pack-me) ;; A table of all strings. (deftype game-text-info (basic) - ((length int32) - (language-id int32) - (group-name string) - (data game-text :inline :dynamic) - ) + ((length int32) + (language-id int32) + (group-name string) + (data game-text :inline :dynamic)) (:methods - (lookup-text! (_type_ text-id symbol) string) - ) - ) + (lookup-text! (_type_ text-id symbol) string))) ;; all text is stored in the COMMON text files (one file per language). ;; in theory, you could have multiple text files that are only loaded when needed, but they didn't do this. @@ -888,10 +843,6 @@ (defun-extern print-game-text string font-context symbol int int float) - ;; added (defun-debug text-id->string ((text text-id)) - (enum->string text-id text) - ) - - + (enum->string text-id text)) diff --git a/goal_src/jak1/engine/ui/text.gc b/goal_src/jak1/engine/ui/text.gc index 399b8f2b38..b0e71517d2 100644 --- a/goal_src/jak1/engine/ui/text.gc +++ b/goal_src/jak1/engine/ui/text.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/ui/text-h.gc") (require "engine/debug/debug.gc") (require "engine/load/load-dgo.gc") -;; name: text.gc -;; name in dgo: text -;; dgos: GAME, ENGINE - ;; This file contains functions for: ;; - loading text files containing translated game text ;; - managing the memory for text @@ -23,7 +18,9 @@ ;; State of text drawing. (define *game-text-word* (new 'global 'string 128 (the string '#f))) + (define *game-text-line* (new 'global 'string 256 (the string '#f))) + (define *level-text-file-load-flag* #t) ;; allocate the game text heap if it isn't already allocated. @@ -35,42 +32,31 @@ (defmethod length ((this game-text-info)) "Get the length (number of strings) in a game-text-info." - (-> this length) - ) + (-> this length)) (defmethod asize-of ((this game-text-info)) "Get the size in memory of the game-text-info" ;; each record is 8 bytes - (the-as int (+ (-> this type size) (* (-> this length) 8))) - ) + (the-as int (+ (-> this type size) (* (-> this length) 8)))) (defmethod inspect ((this game-text-info)) "Print a game text info, including all strings" (format '#t "[~8x] ~A~%" this (-> this type)) (format '#t "~Tlength: ~D~%" (-> this length)) (format '#t "~Tdata[~D]: @ #x~X~%" (-> this length) (-> this data)) - (let ((i 0)) (while (< i (-> this length)) (format '#t "~T [~D] #x~X ~A~%" i (-> this data i id) (-> this data i text)) - (+! i 1) - ) - ) - this - ) + (+! i 1))) + this) (defmethod mem-usage ((this game-text-info) (arg0 memory-usage-block) (arg1 int)) "Get the memory usage." (set! (-> arg0 length) (max 81 (-> arg0 length))) (set! (-> arg0 data 80 name) "string") (+! (-> arg0 data 80 count) 1) - ;; get the size of this structure - (let ((v1-6 (asize-of this))) - (+! (-> arg0 data 80 used) v1-6) - (+! (-> arg0 data 80 total) (logand -16 (+ v1-6 15))) - ) - + (let ((v1-6 (asize-of this))) (+! (-> arg0 data 80 used) v1-6) (+! (-> arg0 data 80 total) (logand -16 (+ v1-6 15)))) ;; get the size of all the strings (dotimes (s4-0 (-> this length)) (set! (-> arg0 length) (max 81 (-> arg0 length))) @@ -78,58 +64,42 @@ (+! (-> arg0 data 80 count) 1) (let ((v1-18 (asize-of (-> this data s4-0 text)))) (+! (-> arg0 data 80 used) v1-18) - (+! (-> arg0 data 80 total) (logand -16 (+ v1-18 15))) - ) - ) - this - ) + (+! (-> arg0 data 80 total) (logand -16 (+ v1-18 15))))) + this) (defmethod lookup-text! ((this game-text-info) (arg0 text-id) (arg1 symbol)) "Look up text by ID. Will return the string. If the ID can't be found, and arg1 is #t, it will return #f, otherwise the temp string UNKNOWN ID " - ;; binary search for it - (let* ((a1-1 0) ;; min + (let* ((a1-1 0) ;; min (a3-0 (+ (-> this length) 1)) ;; max - (v1-2 (/ (+ a1-1 a3-0) 2)) ;; mid + (v1-2 (/ (+ a1-1 a3-0) 2)) ;; mid ) (let ((t0-0 -1)) ;; last time's lookup (while (and (!= (-> this data v1-2 id) arg0) (!= v1-2 t0-0)) ;; while we haven't found it/not the same as last time (if (< arg0 (-> this data v1-2 id)) - (set! a3-0 v1-2) ;; bisect, right - (set! a1-1 v1-2) ;; bisect, left - ) + (set! a3-0 v1-2) ;; bisect, right + (set! a1-1 v1-2) ;; bisect, left + ) (set! t0-0 v1-2) ;; remeber last time (set! v1-2 (/ (+ a1-1 a3-0) 2)) ;; midpoint for next time - ) - ) + )) (cond ((!= (-> this data v1-2 id) arg0) ;; didn't find it :( - (cond - (arg1 - (the-as string #f) - ) - (else - ;; First, look up the id in the fallback - (#if PC_PORT - (if *fallback-text-lookup?* - (let ((fallback-result (lookup-text! *fallback-text* arg0 #t))) - (if (!= fallback-result #f) - fallback-result - (string-format "UNKNOWN ID ~D" arg0))) - (string-format "UNKNOWN ID ~D" arg0)) + (cond + (arg1 (the-as string #f)) + (else + ;; First, look up the id in the fallback + (#if PC_PORT + (if *fallback-text-lookup?* + (let ((fallback-result (lookup-text! *fallback-text* arg0 #t))) + (if (!= fallback-result #f) fallback-result (string-format "UNKNOWN ID ~D" arg0))) (string-format "UNKNOWN ID ~D" arg0)) - ) - ) - ) + (string-format "UNKNOWN ID ~D" arg0))))) (else - (-> this data v1-2 text) ;; found it! - ) - ) - ) - ) - + (-> this data v1-2 text) ;; found it! + )))) ;; Game text loading. ;; The implementation of loading is blocking. @@ -145,188 +115,114 @@ the game-text-info, and heap is the heap to load to. The heap will be cleared." (local-vars (v0-2 int) (heap-sym-heap game-text-info) (lang language-enum) (load-status int) (heap-free int)) (set! heap-sym-heap (the-as game-text-info (-> curr-text value))) - ;; split languages in PC port - (set! lang (#if PC_PORT (the language-enum (-> *pc-settings* text-language)) - (-> *setting-control* current language))) + ;; split languages in PC port + (set! lang (#if PC_PORT (the language-enum (-> *pc-settings* text-language)) (-> *setting-control* current language))) (set! load-status 0) (set! heap-free (&- (-> heap top) (the-as uint (-> heap base)))) ;; english -> UK english in PAL ;; og:preserve-this no longer necessary. (#unless PC_PORT (if (and (= (scf-get-territory) GAME_TERRITORY_SCEE) (= lang (language-enum english))) - (set! lang (language-enum uk-english)) - ) - ) - + (set! lang (language-enum uk-english)))) ;; only load if we actually need to (when (or (= heap-sym-heap #f) ;; nothing loaded (!= (-> heap-sym-heap language-id) (the-as uint lang)) ;; loaded, but wrong lang (not (string= (-> heap-sym-heap group-name) txt-name)) ;; loaded, but wrong group ) - ;; clear the heap! - (let ((v1-16 heap)) - (set! (-> v1-16 current) (-> v1-16 base)) - ) + (let ((v1-16 heap)) (set! (-> v1-16 current) (-> v1-16 base))) (b! #t cfg-14) (label cfg-13) (load-dbg "Strange error during text load.~%") (set! v0-2 0) (b! #t cfg-27) (label cfg-14) - ;; call str-load to start loading the TXT file to the heap (let ((s3-0 str-load)) (format (clear *temp-string*) "~D~S.TXT" lang txt-name) ;; this branch is super weird. - (b! (not (s3-0 - *temp-string* - -1 - (logand -64 (&+ (-> heap current) 63)) - (&- (-> heap top) (the-as uint (-> heap current))) - ) - ) - cfg-13 - ) - ) - + (b! (not (s3-0 *temp-string* -1 (logand -64 (&+ (-> heap current) 63)) (&- (-> heap top) (the-as uint (-> heap current))))) + cfg-13)) ;; loop to wait until loading is complete (label cfg-16) (let ((v1-20 (str-load-status (the-as (pointer int32) (& load-status))))) (cond - ((= v1-20 'error) - (format 0 "Error loading text~%") - (return 0) - ) - ((>= load-status (+ heap-free -300)) - (format 0 "Game text heap overrun!~%") - (return 0) - ) - ((= v1-20 'busy) - (begin - (nop!) - (nop!) - (nop!) - (nop!) - (nop!) - (nop!) - (goto cfg-16) - ) - ) - ) - ) - + ((= v1-20 'error) (format 0 "Error loading text~%") (return 0)) + ((>= load-status (+ heap-free -300)) (format 0 "Game text heap overrun!~%") (return 0)) + ((= v1-20 'busy) (begin (nop!) (nop!) (nop!) (nop!) (nop!) (nop!) (goto cfg-16))))) ;; loading is done. now we link. (let ((s2-1 (logand -64 (&+ (-> heap current) 63)))) (flush-cache 0) (let ((s3-1 link)) (format (clear *temp-string*) "~D~S.TXT" lang txt-name) - (set! (-> curr-text value) - (s3-1 s2-1 (-> *temp-string* data) load-status heap 0) - ) - ) - ) - + (set! (-> curr-text value) (s3-1 s2-1 (-> *temp-string* data) load-status heap 0)))) ;; linking error occured? - (if (<= (the-as int (-> curr-text value)) 0) - (set! (-> curr-text value) (the-as object #f)) - ) - ) + (if (<= (the-as int (-> curr-text value)) 0) (set! (-> curr-text value) (the-as object #f)))) (set! v0-2 0) (label cfg-27) - - v0-2 - ) + v0-2) (defun load-level-text-files ((arg0 int)) "Load the text files needed for level idx. This function made more sense back when text files were split up, but in the end they put everything in a single text group and file." - (when (or *level-text-file-load-flag* (>= arg0 0)) (load-game-text-info "common" '*common-text* *common-text-heap*) (#when PC_PORT (protect ((-> *pc-settings* text-language)) - (set! (-> *pc-settings* text-language) (pc-language english)) + (set! (-> *pc-settings* text-language) (pc-language english)) (load-game-text-info "common" '*fallback-text* *fallback-text-heap*)))) - (none) - ) + (none)) (defun draw-debug-text-box ((arg0 font-context)) "Not used outside of a single thing in progress. Draws some lines" (let ((s5-0 (new 'static 'vector4w)) - (gp-0 (new 'static 'matrix)) - ) + (gp-0 (new 'static 'matrix))) (#when PC_PORT - (if (logtest? (-> arg0 flags) (font-flags right)) - (set! (-> arg0 width) (- (-> arg0 width))))) + (if (logtest? (-> arg0 flags) (font-flags right)) (set! (-> arg0 width) (- (-> arg0 width))))) (let ((s4-0 (new 'static 'vector))) (set-vector! s4-0 (-> arg0 origin x) (-> arg0 origin y) 0.0 1.0) (set! (-> s4-0 x) (* (-> s4-0 x) (-> *video-parms* relative-x-scale-reciprical))) (vector-matrix*! s4-0 s4-0 (-> arg0 mat)) - (set-vector! - (-> gp-0 vector 0) - (the-as float (the int (-> s4-0 x))) - (the-as float (the int (-> s4-0 y))) - (the-as float (the int (-> s4-0 z))) - (the-as float 1) - ) + (set-vector! (-> gp-0 vector 0) + (the-as float (the int (-> s4-0 x))) + (the-as float (the int (-> s4-0 y))) + (the-as float (the int (-> s4-0 z))) + (the-as float 1)) (set-vector! s4-0 (+ (-> arg0 origin x) (-> arg0 width)) (-> arg0 origin y) 0.0 1.0) (set! (-> s4-0 x) (* (-> s4-0 x) (-> *video-parms* relative-x-scale-reciprical))) (vector-matrix*! s4-0 s4-0 (-> arg0 mat)) - (set-vector! - (-> gp-0 vector 1) - (the-as float (the int (-> s4-0 x))) - (the-as float (the int (-> s4-0 y))) - (the-as float (the int (-> s4-0 z))) - (the-as float 1) - ) + (set-vector! (-> gp-0 vector 1) + (the-as float (the int (-> s4-0 x))) + (the-as float (the int (-> s4-0 y))) + (the-as float (the int (-> s4-0 z))) + (the-as float 1)) (set-vector! s4-0 (+ (-> arg0 origin x) (-> arg0 width)) (+ (-> arg0 origin y) (-> arg0 height)) 0.0 1.0) (set! (-> s4-0 x) (* (-> s4-0 x) (-> *video-parms* relative-x-scale-reciprical))) (vector-matrix*! s4-0 s4-0 (-> arg0 mat)) - (set-vector! - (-> gp-0 vector 2) - (the-as float (the int (-> s4-0 x))) - (the-as float (the int (-> s4-0 y))) - (the-as float (the int (-> s4-0 z))) - (the-as float 1) - ) + (set-vector! (-> gp-0 vector 2) + (the-as float (the int (-> s4-0 x))) + (the-as float (the int (-> s4-0 y))) + (the-as float (the int (-> s4-0 z))) + (the-as float 1)) (set-vector! s4-0 (-> arg0 origin x) (+ (-> arg0 origin y) (-> arg0 height)) 0.0 1.0) (set! (-> s4-0 x) (* (-> s4-0 x) (-> *video-parms* relative-x-scale-reciprical))) (vector-matrix*! s4-0 s4-0 (-> arg0 mat)) - (set-vector! - (-> gp-0 vector 3) - (the-as float (the int (-> s4-0 x))) - (the-as float (the int (-> s4-0 y))) - (the-as float (the int (-> s4-0 z))) - (the-as float 1) - ) - ) + (set-vector! (-> gp-0 vector 3) + (the-as float (the int (-> s4-0 x))) + (the-as float (the int (-> s4-0 y))) + (the-as float (the int (-> s4-0 z))) + (the-as float 1))) (set-vector! s5-0 128 128 128 128) - (add-debug-line2d - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> gp-0 vector)) - (-> gp-0 vector 1) - (the-as vector s5-0) - ) + (add-debug-line2d #t (bucket-id debug-no-zbuf) (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1) (the-as vector s5-0)) (add-debug-line2d #t (bucket-id debug-no-zbuf) (-> gp-0 vector 1) (-> gp-0 vector 2) (the-as vector s5-0)) (add-debug-line2d #t (bucket-id debug-no-zbuf) (-> gp-0 vector 2) (-> gp-0 vector 3) (the-as vector s5-0)) - (add-debug-line2d - #t - (bucket-id debug-no-zbuf) - (-> gp-0 vector 3) - (the-as vector (-> gp-0 vector)) - (the-as vector s5-0) - ) + (add-debug-line2d #t (bucket-id debug-no-zbuf) (-> gp-0 vector 3) (the-as vector (-> gp-0 vector)) (the-as vector s5-0)) (#when PC_PORT - (if (logtest? (-> arg0 flags) (font-flags right)) - (set! (-> arg0 width) (- (-> arg0 width))))) - ) + (if (logtest? (-> arg0 flags) (font-flags right)) (set! (-> arg0 width) (- (-> arg0 width)))))) 0 - (none) - ) + (none)) (defun set-font-color-alpha ((idx font-color) (alpha int)) "Set the alpha for a given color index" @@ -336,8 +232,7 @@ (set! (-> *font-work* color-table idx color 3 a) alpha) (set! (-> *font-work* color-shadow w) alpha) 0 - (none) - ) + (none)) (defun print-game-text-scaled ((str string) (scale float) (font-ctxt font-context) (alpha int)) "Print text, with a given scaling" @@ -345,33 +240,25 @@ (orig-height (-> font-ctxt height)) (orig-x (-> font-ctxt origin x)) (orig-y (-> font-ctxt origin y)) - (orig-scale (-> font-ctxt scale)) - ) + (orig-scale (-> font-ctxt scale))) (let ((scaled-width (* (-> font-ctxt width) scale)) - (scaled-height (* (-> font-ctxt height) scale)) - ) - (if (logtest? (-> font-ctxt flags) (font-flags middle)) - (+! (-> font-ctxt origin x) (* 0.5 (- orig-width scaled-width))) - ) + (scaled-height (* (-> font-ctxt height) scale))) + (if (logtest? (-> font-ctxt flags) (font-flags middle)) (+! (-> font-ctxt origin x) (* 0.5 (- orig-width scaled-width)))) (if (logtest? (-> font-ctxt flags) (font-flags middle-vert)) - ;; this code is really weird. it does the divide with an int, but fails - ;; to convert it back to a float before adding?? - (+! (-> font-ctxt origin y) (the-as float (/ (the int (- orig-height scaled-height)) 2))) - ) + ;; this code is really weird. it does the divide with an int, but fails + ;; to convert it back to a float before adding?? + (+! (-> font-ctxt origin y) (the-as float (/ (the int (- orig-height scaled-height)) 2)))) (set! (-> font-ctxt scale) (* orig-scale scale)) (set! (-> font-ctxt width) scaled-width) - (set! (-> font-ctxt height) scaled-height) - ) + (set! (-> font-ctxt height) scaled-height)) (print-game-text str font-ctxt #f alpha 22) (set! (-> font-ctxt origin x) orig-x) (set! (-> font-ctxt origin y) orig-y) (set! (-> font-ctxt width) orig-width) (set! (-> font-ctxt height) orig-height) - (set! (-> font-ctxt scale) orig-scale) - ) + (set! (-> font-ctxt scale) orig-scale)) 0 - (none) - ) + (none)) (defun print-game-text ((str string) (font-ctxt font-context) (no-draw symbol) (alpha int) (line-height int)) "Print text. Not worth commenting until we get stack variables in lets, I think" @@ -396,20 +283,15 @@ (sv-192 int) (sv-200 int) (sv-208 symbol) - (sv-212 symbol) - ) - (let ((gp-0 (new - 'stack - 'font-context - *font-default-matrix* - (the int (-> font-ctxt origin x)) - (the int (-> font-ctxt origin y)) - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) + (sv-212 symbol)) + (let ((gp-0 (new 'stack + 'font-context + *font-default-matrix* + (the int (-> font-ctxt origin x)) + (the int (-> font-ctxt origin y)) + 0.0 + (font-color default) + (font-flags shadow kerning)))) (when (< 0.1 (-> font-ctxt scale)) (set! sv-112 (-> font-ctxt mat vector 0 x)) (set! sv-116 (-> font-ctxt mat vector 1 y)) @@ -425,17 +307,12 @@ (when (logtest? (-> gp-0 flags) (font-flags middle-vert)) (logclear! (-> gp-0 flags) (font-flags middle-vert)) (let ((f30-0 (-> gp-0 width)) - (f28-0 (-> gp-0 height)) - ) + (f28-0 (-> gp-0 height))) (set! (-> gp-0 width) (-> font-ctxt width)) (set! (-> gp-0 height) (-> font-ctxt height)) - (+! (-> gp-0 origin y) - (the float (the int (* 0.5 (- (-> gp-0 height) (print-game-text str gp-0 #t 128 22))))) - ) + (+! (-> gp-0 origin y) (the float (the int (* 0.5 (- (-> gp-0 height) (print-game-text str gp-0 #t 128 22)))))) (set! (-> gp-0 width) f30-0) - (set! (-> gp-0 height) f28-0) - ) - ) + (set! (-> gp-0 height) f28-0))) (set! (-> gp-0 mat vector 0 x) (* (-> gp-0 mat vector 0 x) sv-136)) (set! (-> gp-0 mat vector 1 y) (* (-> gp-0 mat vector 1 y) sv-136)) (set! (-> *video-parms* relative-x-scale) (* (-> *video-parms* relative-x-scale) sv-136)) @@ -448,17 +325,9 @@ (set! sv-152 (+ (-> gp-0 origin x) (-> font-ctxt width))) (set! sv-156 (+ (-> gp-0 origin y) (-> font-ctxt height))) (set! sv-160 (* (get-string-length " " gp-0) (-> *video-parms* relative-x-scale))) - (set! sv-164 (* (if (logtest? (-> gp-0 flags) (font-flags large)) - (the float line-height) - 14.0 - ) - sv-136 - ) - ) + (set! sv-164 (* (if (logtest? (-> gp-0 flags) (font-flags large)) (the float line-height) 14.0) sv-136)) (set! sv-168 0) - (if (logtest? (-> gp-0 flags) (font-flags middle)) - (+! (-> gp-0 origin x) (* 0.5 (-> font-ctxt width))) - ) + (if (logtest? (-> gp-0 flags) (font-flags middle)) (+! (-> gp-0 origin x) (* 0.5 (-> font-ctxt width)))) (set! sv-176 (the-as int (-> sv-140 0))) (set! sv-184 0) (set! sv-192 0) @@ -471,43 +340,22 @@ ((= sv-176 32) (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) (set! sv-184 (+ sv-184 1)) - (set! sv-208 #t) - ) - ((zero? sv-176) - (if (zero? sv-184) - (set! sv-212 #t) - (set! sv-208 #t) - ) - ) + (set! sv-208 #t)) + ((zero? sv-176) (if (zero? sv-184) (set! sv-212 #t) (set! sv-208 #t))) (else - ;; og:preserve-this PAL patch here - (if (= sv-176 3) - (set! sv-176 32) - ) - (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) - (set! sv-184 (+ sv-184 1)) - ) - ) + ;; og:preserve-this PAL patch here + (if (= sv-176 3) (set! sv-176 32)) + (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) + (set! sv-184 (+ sv-184 1)))) (when (= sv-208 #t) (set! (-> *game-text-word* data sv-184) (the-as uint 0)) (let* ((f30-1 sv-144) (f0-49 (* (get-string-length *game-text-word* gp-0) (-> *video-parms* relative-x-scale))) - (f1-14 (+ f30-1 f0-49)) - ) - (if (= (-> *game-text-word* data (+ sv-184 -1)) 32) - (set! f1-14 (- f1-14 sv-160)) - ) + (f1-14 (+ f30-1 f0-49))) + (if (= (-> *game-text-word* data (+ sv-184 -1)) 32) (set! f1-14 (- f1-14 sv-160))) (cond - ((< sv-152 f1-14) - (set! sv-144 (+ sv-148 f0-49)) - (set! sv-212 #t) - ) - (else - (set! sv-144 (+ sv-144 f0-49)) - ) - ) - ) - ) + ((< sv-152 f1-14) (set! sv-144 (+ sv-148 f0-49)) (set! sv-212 #t)) + (else (set! sv-144 (+ sv-144 f0-49)))))) (when (= sv-212 #t) (when (>= sv-200 (the-as int (-> gp-0 start-line))) (let ((f30-2 (+ (-> gp-0 origin y) sv-164))) @@ -516,21 +364,14 @@ (set! (-> *game-text-line* data (+ sv-192 -1)) (the-as uint 0)) (when (and (= (-> *game-text-line* data (+ sv-192 -5)) 126) (= (-> *game-text-line* data (+ sv-192 -2)) 72)) (set! (-> *game-text-line* data (+ sv-192 -5)) (the-as uint 0)) - 0 - ) - ) - ) + 0))) (when (and (= (-> *game-text-line* data (+ sv-192 -4)) 126) (= (-> *game-text-line* data (+ sv-192 -1)) 72)) (set! (-> *game-text-line* data (+ sv-192 -4)) (the-as uint 0)) - 0 - ) - (if (nonzero? (-> *game-text-line* data 0)) - (set! sv-168 (+ sv-168 1)) - ) + 0) + (if (nonzero? (-> *game-text-line* data 0)) (set! sv-168 (+ sv-168 1))) (when (not no-draw) (let* ((s1-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s2-1 (-> s1-1 base)) - ) + (s2-1 (-> s1-1 base))) (set-font-color-alpha (-> font-ctxt color) alpha) (draw-string *game-text-line* s1-1 gp-0) (set-font-color-alpha (-> font-ctxt color) 128) @@ -540,36 +381,24 @@ (set! (-> (the-as dma-packet v1-127) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-127) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-127) vif1) (new 'static 'vif-tag)) - (set! (-> s1-1 base) (&+ (the-as pointer v1-127) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id debug) - s2-1 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - ) - (set! (-> gp-0 origin y) f30-2) - ) - ) + (set! (-> s1-1 base) (&+ (the-as pointer v1-127) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug) + s2-1 + (the-as (pointer dma-tag) a3-3))))) + (set! (-> gp-0 origin y) f30-2))) (set! sv-200 (+ sv-200 1)) (set! (-> *game-text-line* data 0) (the-as uint 0)) (set! sv-192 0) - (set! sv-212 (the-as symbol #f)) - ) + (set! sv-212 (the-as symbol #f))) (when (= sv-208 #t) (copy-charp<-charp (&-> *game-text-line* data sv-192) (-> *game-text-word* data)) (set! sv-192 (+ sv-192 sv-184)) (set! sv-184 0) - (set! sv-208 (the-as symbol #f)) - ) + (set! sv-208 (the-as symbol #f))) (when (nonzero? sv-176) (set! sv-140 (&-> sv-140 1)) - (set! sv-176 (the-as int (-> sv-140 0))) - ) - ) + (set! sv-176 (the-as int (-> sv-140 0))))) (set! (-> gp-0 mat vector 0 x) sv-112) (set! (-> gp-0 mat vector 1 y) sv-116) (set! (-> *video-parms* relative-x-scale) sv-120) @@ -577,24 +406,15 @@ (set! (-> *video-parms* relative-x-scale-reciprical) sv-128) (set! (-> *video-parms* relative-y-scale-reciprical) sv-132) (#when PC_PORT - (if (and *debug-segment* *display-text-box*) - (draw-debug-text-box font-ctxt))) - (if (> sv-168 0) - (* sv-164 (the float sv-168)) - 0.0 - ) - ) - ) - ) + (if (and *debug-segment* *display-text-box*) (draw-debug-text-box font-ctxt))) + (if (> sv-168 0) (* sv-164 (the float sv-168)) 0.0)))) (defun disable-level-text-file-loading () (set! *level-text-file-load-flag* #f) 0 - (none) - ) + (none)) (defun enable-level-text-file-loading () (set! *level-text-file-load-flag* #t) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/engine/util/capture.gc b/goal_src/jak1/engine/util/capture.gc index c03b8407a2..c1df875b54 100644 --- a/goal_src/jak1/engine/util/capture.gc +++ b/goal_src/jak1/engine/util/capture.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel/gkernel.gc") (require "engine/gfx/hw/gs.gc") -;; name: capture.gc -;; name in dgo: capture -;; dgos: GAME, ENGINE - ;; Functions for taking a screenshot of VRAM. ;; These are debug-only and leak memory. @@ -19,46 +14,33 @@ ;; vif/gif tags to do a transfer of data from VRAM to EE memory. (deftype gs-store-image-packet (structure) - ((vifcode vif-tag 4) - (giftag gif-tag) - (bitbltbuf gs-bitbltbuf) - (bitbltbuf-addr gs-reg64) - (trxpos gs-trxpos) - (trxpos-addr gs-reg64) - (trxreg gs-trxreg) - (trxreg-addr gs-reg64) - (finish int64) - (finish-addr gs-reg64) - (trxdir gs-trxdir) - (trxdir-addr gs-reg64) - ) - ) + ((vifcode vif-tag 4) + (giftag gif-tag) + (bitbltbuf gs-bitbltbuf) + (bitbltbuf-addr gs-reg64) + (trxpos gs-trxpos) + (trxpos-addr gs-reg64) + (trxreg gs-trxreg) + (trxreg-addr gs-reg64) + (finish int64) + (finish-addr gs-reg64) + (trxdir gs-trxdir) + (trxdir-addr gs-reg64))) (defun gs-set-default-store-image ((packet gs-store-image-packet) (src-fbp int) (src-w int) (src-psm int) (ssax int) (ssay int) (rrw int) (rrh int)) "Set up a gs-store-image-packet for storing" ;; nop (set! (-> packet vifcode 0) (new 'static 'vif-tag :cmd (vif-cmd nop))) ;; set mskpath3 - (set! (-> packet vifcode 1) - (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd mskpath3)) - ) + (set! (-> packet vifcode 1) (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd mskpath3))) ;; flush! - (set! (-> packet vifcode 2) - (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1) - ) + (set! (-> packet vifcode 2) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) ;; direct gif transfer. - (set! (-> packet vifcode 3) - (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) + (set! (-> packet vifcode 3) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) ;;gif a+d - (set! (-> packet giftag) (the-as gif-tag - (make-u128 - (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)) - (new 'static 'gif-tag64 :nloop #x5 :eop #x1 :nreg #x1) - ) - ) - ) - + (set! (-> packet giftag) + (the-as gif-tag + (make-u128 (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)) (new 'static 'gif-tag64 :nloop #x5 :eop #x1 :nreg #x1)))) ;; all the a+d (set! (-> packet bitbltbuf) (new 'static 'gs-bitbltbuf :sbp src-fbp :sbw src-w :spsm src-psm)) (set! (-> packet bitbltbuf-addr) (gs-reg64 bitbltbuf)) @@ -71,17 +53,14 @@ (set! (-> packet trxdir) (new 'static 'gs-trxdir :xdir #x1)) (set! (-> packet trxdir-addr) (gs-reg64 trxdir)) (.sync.l) - 7 - ) - + 7) (defun store-image ((oddeven int)) "Store an image to image.raw" (local-vars (ptr-1 (pointer uint128)) (y-idx int) (y-idx-2 int)) (let ((width 512) (height (-> *video-parms* screen-sy)) - (file (new 'debug 'file-stream "image.raw" 'write)) - ) + (file (new 'debug 'file-stream "image.raw" 'write))) ;; create (and leak memory) for 2 arrays. (let ((buff0 (the-as (array uint128) (new 'debug 'boxed-array uint128 (/ (* width height) 4))))) (let ((buff1 (the-as (array uint128) (new 'debug 'boxed-array uint128 (/ (* width height) 4))))) @@ -95,8 +74,7 @@ ;; capture other field (gs-set-default-store-image packet #x3000 (/ width 64) 0 0 0 width height) (flush-cache 0) - (gs-store-image packet (-> buff1 data)) - ) + (gs-store-image packet (-> buff1 data))) ;; wait for capture to complete. (sync-path 0 0) (let ((ptr-0 (-> buff0 data))) @@ -107,27 +85,17 @@ (while (< y-idx height) (file-stream-write file (&+ ptr-0 (* y-idx (* width 4))) (the-as uint (* width 4))) (file-stream-write file (&+ ptr-1 (* y-idx (* width 4))) (the-as uint (* width 4))) - (set! y-idx (+ y-idx 1)) - ) - ) + (set! y-idx (+ y-idx 1)))) (else - (set! y-idx-2 0) - (while (< y-idx-2 height) - (file-stream-write file (&+ ptr-1 (* y-idx-2 (* width 4))) (the-as uint (* width 4))) - (file-stream-write file (&+ ptr-0 (* y-idx-2 (* width 4))) (the-as uint (* width 4))) - (set! y-idx-2 (+ y-idx-2 1)) - ) - ) - ) - ) + (set! y-idx-2 0) + (while (< y-idx-2 height) + (file-stream-write file (&+ ptr-1 (* y-idx-2 (* width 4))) (the-as uint (* width 4))) + (file-stream-write file (&+ ptr-0 (* y-idx-2 (* width 4))) (the-as uint (* width 4))) + (set! y-idx-2 (+ y-idx-2 1)))))) (format #t "oddeven = ~d~%" oddeven) ;; this does nothing. - (delete buff1) - ) + (delete buff1)) ;; also does nothing. - (delete buff0) - ) - (file-stream-close file) - ) - 0 - ) + (delete buff0)) + (file-stream-close file)) + 0) diff --git a/goal_src/jak1/engine/util/glist-h.gc b/goal_src/jak1/engine/util/glist-h.gc index f1a6296df8..82bc8780bb 100644 --- a/goal_src/jak1/engine/util/glist-h.gc +++ b/goal_src/jak1/engine/util/glist-h.gc @@ -1,14 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: glist-h.gc -;; name in dgo: glist-h -;; dgos: GAME, ENGINE - - ;; Very very weird linked list system. ;; TODO add examples because this is extremely confusing. @@ -18,27 +12,18 @@ (declare-file (debug)) (deftype glst-node (structure) - ((next glst-node) - (prev glst-node) - ) - ) - + ((next glst-node) + (prev glst-node))) (deftype glst-named-node (glst-node) - ((privname string) - ) - ) - + ((privname string))) (deftype glst-list (structure) - ((head glst-node) - (tail glst-node) - (tailpred glst-node) - (numelem int32) - ) - :allow-misaligned - ) - + ((head glst-node) + (tail glst-node) + (tailpred glst-node) + (numelem int32)) + :allow-misaligned) ;; FUN FACT! The "defun" macro only checks if the first item in the function body is a ;; string (the docstring), but because these functions were marked as inline (or debug) @@ -48,61 +33,43 @@ (defun glst-next ((arg0 glst-node)) (declare (inline)) "return the next node in the list" - - (-> arg0 next) - ) + (-> arg0 next)) (defun glst-prev ((arg0 glst-node)) (declare (inline)) "return the previous node in the list" - - (-> arg0 prev) - ) + (-> arg0 prev)) (defun glst-head ((arg0 glst-list)) (declare (inline)) "return the start of the list" - - (-> arg0 head) - ) + (-> arg0 head)) (defun glst-tail ((arg0 glst-list)) (declare (inline)) "return the tail of the list" - - (-> arg0 tailpred) - ) + (-> arg0 tailpred)) (defun glst-end-of-list? ((arg0 glst-node)) (declare (inline)) "is this node the end of the list. #t = end" - - (not (-> arg0 next)) - ) + (not (-> arg0 next))) (defun glst-start-of-list? ((arg0 glst-node)) (declare (inline)) "is this node the start of the list. #t = start" - - (not (-> arg0 prev)) - ) + (not (-> arg0 prev))) (defun glst-empty? ((arg0 glst-list)) (declare (inline)) "is the list empty, #t = empty" - - (= (-> arg0 tailpred) arg0) - ) + (= (-> arg0 tailpred) arg0)) (defun glst-node-name ((arg0 glst-named-node)) "Return the name of the node" - - (-> arg0 privname) - ) + (-> arg0 privname)) (defun glst-set-name! ((arg0 glst-named-node) (arg1 string)) "Set the name of the node" (declare (inline)) - - (set! (-> arg0 privname) arg1) - ) + (set! (-> arg0 privname) arg1)) diff --git a/goal_src/jak1/engine/util/glist.gc b/goal_src/jak1/engine/util/glist.gc index af457d5610..c736f0a413 100644 --- a/goal_src/jak1/engine/util/glist.gc +++ b/goal_src/jak1/engine/util/glist.gc @@ -1,183 +1,106 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/util/glist-h.gc") (require "kernel/gstring.gc") -;; name: glist.gc -;; name in dgo: glist -;; dgos: GAME, ENGINE - - ;; THIS FILE IS REALLY WEIRD PLEASE JUST LOOK AWAY (declare-file (debug)) (defun-debug glst-num-elements ((list glst-list)) "Return the number of elements on the list" - (-> list numelem) - ) + (-> list numelem)) (defun-debug glst-remove ((list glst-list) (node glst-node)) "Remove the node from the list" - (let ((prev (glst-prev node)) (next (glst-next node))) - (set! (-> prev next) next) - (set! (-> next prev) prev) - ) - + (set! (-> prev next) next) + (set! (-> next prev) prev)) (+! (-> list numelem) -1) - node - ) + node) (defun-debug glst-remove-tail ((list glst-list)) "Remove the last node from the list, if it is not also the first. Returns the deleted node, or #f otherwise" - - (let ((tail (glst-tail list))) - (if (not (glst-start-of-list? (-> tail prev))) - (glst-remove list tail) - ) - ) - ) + (let ((tail (glst-tail list))) (if (not (glst-start-of-list? (-> tail prev))) (glst-remove list tail)))) (defun-debug glst-remove-head ((list glst-list)) "Remove the first node from the list, if it is not also the last. Returns the deleted node, or #f otherwise" - - (let ((head (glst-head list))) - (if (not (glst-end-of-list? (-> head next))) - (glst-remove list head) - ) - ) - ) + (let ((head (glst-head list))) (if (not (glst-end-of-list? (-> head next))) (glst-remove list head)))) (defun-debug glst-insert-before ((list glst-list) (node glst-node) (new-node glst-node)) "Insert a new node before node in the list. Returns the new node." - (let ((prev (glst-prev node))) - (set! (-> new-node prev) prev) - (set! (-> new-node next) node) - (set! (-> prev next) new-node) - (set! (-> node prev) new-node) - ) - + (set! (-> new-node prev) prev) + (set! (-> new-node next) node) + (set! (-> prev next) new-node) + (set! (-> node prev) new-node)) (+! (-> list numelem) 1) - new-node - ) + new-node) (defun-debug glst-insert-after ((list glst-list) (node glst-node) (new-node glst-node)) "Insert a new node after node in the list. Returns the new node." - (let ((next (glst-next node))) - (set! (-> new-node next) next) - (set! (-> new-node prev) node) - (set! (-> next prev) new-node) - (set! (-> node next) new-node) - ) - + (set! (-> new-node next) next) + (set! (-> new-node prev) node) + (set! (-> next prev) new-node) + (set! (-> node next) new-node)) (+! (-> list numelem) 1) - new-node - ) + new-node) (defun-debug glst-add-tail ((list glst-list) (node glst-node)) "Add a node to the end of the list" - - (glst-insert-before list (the-as glst-node (&-> list tail)) node) - ) + (glst-insert-before list (the-as glst-node (&-> list tail)) node)) (defun-debug glst-add-head ((list glst-list) (node glst-node)) "Add a node to the start of the list" - - (glst-insert-after list (the-as glst-node (&-> list head)) node) - ) + (glst-insert-after list (the-as glst-node (&-> list head)) node)) (defun-debug glst-init-list! ((list glst-list)) "Init the list" - (set! (-> list head) (the-as glst-node (&-> list tail))) (set! (-> list tail) #f) (set! (-> list tailpred) (the-as glst-node (&-> list head))) (set! (-> list numelem) 0) - list - ) + list) (defmacro glst-iterate-list (list node &rest body) "Iterate through the list using node as the current node variable" - - `(let ((,node (glst-head ,list))) - (while (not (glst-end-of-list? (-> ,node next))) - ,@body - (set! ,node (glst-next ,node)) - ) - ) - ) + `(let ((,node (glst-head ,list))) (while (not (glst-end-of-list? (-> ,node next))) ,@body (set! ,node (glst-next ,node))))) (defmacro glst-iterate-named-list (list node &rest body) "Iterate through the named node list using node as the current node variable" - `(let ((,node (the glst-named-node (glst-head ,list)))) - (while (not (glst-end-of-list? (-> ,node next))) - ,@body - (set! ,node (the glst-named-node (glst-next ,node))) - ) - ) - ) + (while (not (glst-end-of-list? (-> ,node next))) + ,@body + (set! ,node (the glst-named-node (glst-next ,node)))))) (defun-debug glst-find-node-by-name ((list glst-list) (name string)) "Find the node in the list with the given name and return it. If it is not found, #f is returned instead" - - (glst-iterate-named-list list node - (if (name= (-> node privname) name) - (return node) - ) - ) - (the-as glst-node #f) - ) + (glst-iterate-named-list list node (if (name= (-> node privname) name) (return node))) + (the-as glst-node #f)) (defun-debug glst-get-node-by-index ((list glst-list) (n int)) "Return the n-th node in the list, beginning at zero" - (if (and (< n (glst-num-elements list)) (>= n 0)) (let ((node (glst-head list))) - (dotimes (index n) - ;; (nop!) x4 - (set! node (glst-next node)) - ) - (return node) - ) - ) - (the-as glst-node #f) - ) + (dotimes (index n) + ;; (nop!) x4 + (set! node (glst-next node))) + (return node))) + (the-as glst-node #f)) (defun-debug glst-length-of-longest-name ((list glst-list)) "Returns the length of longest name in a list of named nodes" - (let ((max-len 0)) - (glst-iterate-named-list list node - (let ((len (length (-> node privname)))) - (when (< max-len len) - (set! max-len len) - ) - ) - ) - max-len - ) - ) + (glst-iterate-named-list list node (let ((len (length (-> node privname)))) (when (< max-len len) (set! max-len len)))) + max-len)) (defun-debug glst-get-node-index ((list glst-list) (node glst-node)) "Returns the index of the node in the list. If the node is not found on the list, returns -1" - - (let ((index 0)) - (glst-iterate-list list current-node - (if (= current-node node) (return index)) - (+! index 1) - ) - -1 - ) - ) - + (let ((index 0)) (glst-iterate-list list current-node (if (= current-node node) (return index)) (+! index 1)) -1)) diff --git a/goal_src/jak1/engine/util/smush-control-h.gc b/goal_src/jak1/engine/util/smush-control-h.gc index 54c093de95..3267ba5d3a 100644 --- a/goal_src/jak1/engine/util/smush-control-h.gc +++ b/goal_src/jak1/engine/util/smush-control-h.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/util/types-h.gc") -;; name: smush-control-h.gc -;; name in dgo: smush-control-h -;; dgos: GAME, ENGINE - ;; A "smush-control" generates a damped sinusoidal floating point value. ;; - on each full period, the amplitude and period are changed (multiplied) ;; - there is a maximum duration. @@ -17,32 +12,26 @@ ;; DECOMP BEGINS (deftype smush-control (structure) - ((start-time time-frame) - (period float) - (duration float) - (amp float) - (damp-amp float) - (damp-period float) ;; set a negative value here to flag as die on next update - (ticks float) - ) + ((start-time time-frame) + (period float) + (duration float) + (amp float) + (damp-amp float) + (damp-period float) ;; set a negative value here to flag as die on next update + (ticks float)) :pack-me (:methods - (set-zero! (_type_) _type_) - (update! (_type_) float) - (get-no-update (_type_) float) - (activate! (_type_ float int int float float) _type_) - (nonzero-amplitude? (_type_) symbol) - (die-on-next-update! (_type_) _type_) - ) - ) - + (set-zero! (_type_) _type_) + (update! (_type_) float) + (get-no-update (_type_) float) + (activate! (_type_ float int int float float) _type_) + (nonzero-amplitude? (_type_) symbol) + (die-on-next-update! (_type_) _type_))) (defmethod nonzero-amplitude? ((this smush-control)) "Return #t if amp is not zero, #f otherwise" (declare (inline)) - - (!= (-> this amp) 0.0) - ) + (!= (-> this amp) 0.0)) (defmethod set-zero! ((this smush-control)) (set! (-> this period) 0.0) @@ -51,76 +40,49 @@ (set! (-> this damp-amp) 0.0) (set! (-> this damp-period) 0.0) (set! (-> this ticks) 0.0) - this - ) + this) (defmethod update! ((this smush-control)) "Run the smush control and return the result. Updates the internal state." - (cond ((nonzero-amplitude? this) (let* ((time-since-start (the float (- (-> *display* base-frame-counter) (-> this start-time)))) ;; use float to int rounding to figure out offset into the current period. - (time-since-period-start (- time-since-start (* (the float (the int (/ time-since-start (-> this period)))) (-> this period)))) - ) - ;; we completed a new period! - (when (>= (- time-since-start (-> this ticks)) (-> this period)) - ;; once per period updates of amp/period - (set! (-> this amp) (* (-> this amp) (-> this damp-amp))) - (set! (-> this period) (* (-> this period) (-> this damp-period))) - ;; store the ticks that we did this on - (set! (-> this ticks) time-since-start) - ;; you can set damp-period to a negative number to indicate - ;; that it should die on the next update. Do that here. - (if (< (-> this damp-period) 0.0) - (set-zero! this) - ) - ) - - ;; absolute duraction check - (if (>= time-since-start (-> this duration)) - (set-zero! this) - ) - ;; sine term multiplied by amplitude, and scaled by how much is left to go. - (* (sin (/ (* DEGREES_PER_ROT time-since-period-start) (-> this period))) - (* (-> this amp) - (/ (- (-> this duration) time-since-start) (-> this duration))) - ) - ) - ) + (time-since-period-start (- time-since-start (* (the float (the int (/ time-since-start (-> this period)))) (-> this period))))) + ;; we completed a new period! + (when (>= (- time-since-start (-> this ticks)) (-> this period)) + ;; once per period updates of amp/period + (set! (-> this amp) (* (-> this amp) (-> this damp-amp))) + (set! (-> this period) (* (-> this period) (-> this damp-period))) + ;; store the ticks that we did this on + (set! (-> this ticks) time-since-start) + ;; you can set damp-period to a negative number to indicate + ;; that it should die on the next update. Do that here. + (if (< (-> this damp-period) 0.0) (set-zero! this))) + ;; absolute duraction check + (if (>= time-since-start (-> this duration)) (set-zero! this)) + ;; sine term multiplied by amplitude, and scaled by how much is left to go. + (* (sin (/ (* DEGREES_PER_ROT time-since-period-start) (-> this period))) + (* (-> this amp) (/ (- (-> this duration) time-since-start) (-> this duration)))))) ;; amplitude = 0, die. - (else 0.0) - ) - ) + (else 0.0))) (defmethod get-no-update ((this smush-control)) "Get the value, but don't update internal state" - (cond ((nonzero-amplitude? this) (let* ((time-since-start (the float (- (-> *display* base-frame-counter) (-> this start-time)))) - (time-since-period-start (- time-since-start (* (the float (the int (/ time-since-start (-> this period)))) (-> this period)))) - ) - (* (sin (/ (* DEGREES_PER_ROT time-since-period-start) (-> this period))) - (* (-> this amp) - (/ (- (-> this duration) time-since-start) (-> this duration))) - ) - ) - ) + (time-since-period-start (- time-since-start (* (the float (the int (/ time-since-start (-> this period)))) (-> this period))))) + (* (sin (/ (* DEGREES_PER_ROT time-since-period-start) (-> this period))) + (* (-> this amp) (/ (- (-> this duration) time-since-start) (-> this duration)))))) ;; amplitude = 0, die. - (else 0.0) - ) - ) + (else 0.0))) (defmethod die-on-next-update! ((this smush-control)) "On the next call to update!, zero everything. Calls to get-no-update will still work." - - (if (nonzero-amplitude? this) - (set! (-> this damp-period) -1.0) - ) - this - ) + (if (nonzero-amplitude? this) (set! (-> this damp-period) -1.0)) + this) (defmethod activate! ((this smush-control) (arg0 float) (arg1 int) (arg2 int) (arg3 float) (arg4 float)) "Activate the smush! This only activates if the ongoing smush is mostly done." @@ -131,7 +93,5 @@ (set! (-> this damp-amp) arg3) (set! (-> this damp-period) arg4) (set! (-> this ticks) 0.0) - (set-time! (-> this start-time)) - ) - this - ) + (set-time! (-> this start-time))) + this) diff --git a/goal_src/jak1/engine/util/sync-info-h.gc b/goal_src/jak1/engine/util/sync-info-h.gc index 5bd45a3d1d..26f3387b71 100644 --- a/goal_src/jak1/engine/util/sync-info-h.gc +++ b/goal_src/jak1/engine/util/sync-info-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: sync-info-h.gc -;; name in dgo: sync-info-h -;; dgos: GAME, ENGINE - ;; The sync-info system is used to synchronize the motion of objects. ;; For example, platforms use this to have consistent relative positions. @@ -18,122 +13,101 @@ ;; Simplest synchronization. Simply counts up, then resets once it reaches period. ;; For example, this is used to synchronize the "pies" in citadel. (deftype sync-info (structure) - ((offset float) ;; offset, stored as a time, not a phase. - (period uint32);; period, stored in seconds units + ((offset float) ;; offset, stored as a time, not a phase. + (period uint32) ;; period, stored in seconds units ) :pack-me (:methods - (get-current-value (_type_ float) float) - (get-current-phase-no-mod (_type_) float) - (get-current-phase (_type_) float) - (get-current-value-with-mirror (_type_ float) float) - (get-current-phase-with-mirror (_type_) float) - (setup-params! (_type_ uint float float float) none) - (load-params! (_type_ process uint float float float) symbol) - (sync-now! (_type_ float) float) - (get-phase-offset (_type_) float) - ) - ) + (get-current-value (_type_ float) float) + (get-current-phase-no-mod (_type_) float) + (get-current-phase (_type_) float) + (get-current-value-with-mirror (_type_ float) float) + (get-current-phase-with-mirror (_type_) float) + (setup-params! (_type_ uint float float float) none) + (load-params! (_type_ process uint float float float) symbol) + (sync-now! (_type_ float) float) + (get-phase-offset (_type_) float))) ;; Syncronized, but also includes some smoothing at the beginning. ;; This is used for motion of platforms. (deftype sync-info-eased (sync-info) - ((tlo float) - (thi float) - (ylo float) - (m2 float) - (yend float) - ) - :allow-misaligned - ) + ((tlo float) + (thi float) + (ylo float) + (m2 float) + (yend float)) + :allow-misaligned) ;; Syncronized, but includes a pause. ;; This is used for whirlpools in lpc and the pushers in the yellow-eco room in snowy (deftype sync-info-paused (sync-info) - ((pause-after-out float) - (pause-after-in float) - ) - :pack-me - ) + ((pause-after-out float) + (pause-after-in float)) + :pack-me) ;; This is a strange one. After a random amount of time, it changes to a random value. (deftype delayed-rand-float (structure) - ((min-time int32) - (max-time int32) - (max-val float) - (timer int32) - (start-time time-frame) - (value float) - ) + ((min-time int32) + (max-time int32) + (max-val float) + (timer int32) + (start-time time-frame) + (value float)) :pack-me (:methods - (set-params! (_type_ int int float) float) - (update! (_type_) float) - ) - ) + (set-params! (_type_ int int float) float) + (update! (_type_) float))) ;; second order oscillating float. (deftype oscillating-float (structure) - ((value float) - (target float) - (vel float) - (max-vel float) - (damping float) - (accel float) - ) + ((value float) + (target float) + (vel float) + (max-vel float) + (damping float) + (accel float)) :pack-me (:methods - (set-params! (_type_ float float float float) float) - (update! (_type_ float) float) - ) - ) + (set-params! (_type_ float float float float) float) + (update! (_type_ float) float))) ;; float that "bounces". (deftype bouncing-float (structure) - ((osc oscillating-float :inline) - (max-value float) - (min-value float) - (elasticity float) - (state int32) - ) + ((osc oscillating-float :inline) + (max-value float) + (min-value float) + (elasticity float) + (state int32)) :pack-me (:methods - (set-params! (_type_ float float float float float float float) float) - (update! (_type_ float) float) - (at-min? (_type_) symbol) - (at-max? (_type_) symbol) - ) - ) + (set-params! (_type_ float float float float float float float) float) + (update! (_type_ float) float) + (at-min? (_type_) symbol) + (at-max? (_type_) symbol))) ;; like delayed-rand-float, but does 4 at a time. (deftype delayed-rand-vector (structure) - ((min-time int32) - (max-time int32) - (xz-max float) - (y-max float) - (timer int32) - (start-time time-frame) - (value vector :inline) - ) + ((min-time int32) + (max-time int32) + (xz-max float) + (y-max float) + (timer int32) + (start-time time-frame) + (value vector :inline)) (:methods - (set-params! (_type_ int int float float) vector) - (update-now! (_type_) vector) - (update-with-delay! (_type_) vector) - (update-with-delay-or-reset! (_type_) vector) - ) - ) + (set-params! (_type_ int int float float) vector) + (update-now! (_type_) vector) + (update-with-delay! (_type_) vector) + (update-with-delay-or-reset! (_type_) vector))) ;; like oscillating-float, but does 4 at a time. (deftype oscillating-vector (structure) - ((value vector :inline) - (target vector :inline) - (vel vector :inline) - (max-vel float) - (damping float) - (accel float) - ) + ((value vector :inline) + (target vector :inline) + (vel vector :inline) + (max-vel float) + (damping float) + (accel float)) (:methods - (set-params! (_type_ vector float float float) vector) - (update! (_type_ vector) vector) - ) - ) + (set-params! (_type_ vector float float float) vector) + (update! (_type_ vector) vector))) diff --git a/goal_src/jak1/engine/util/sync-info.gc b/goal_src/jak1/engine/util/sync-info.gc index 9918a8a0cc..98dc0bf8f1 100644 --- a/goal_src/jak1/engine/util/sync-info.gc +++ b/goal_src/jak1/engine/util/sync-info.gc @@ -1,15 +1,10 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "engine/entity/res.gc") (require "engine/util/smush-control-h.gc") (require "engine/util/sync-info-h.gc") -;; name: sync-info.gc -;; name in dgo: sync-info -;; dgos: GAME, ENGINE - ;; DECOMP BEGINS (defmethod setup-params! ((this sync-info) (period uint) (phase float) (arg2 float) (arg3 float)) @@ -18,103 +13,65 @@ phase is the offset relative to the global clock, specified as a fraction of period." (set! (-> this period) period) (let* ((period-float (the float period)) - (value (* phase period-float)) - ) + (value (* phase period-float))) ;; this is like (fmod value period-float) - (set! (-> this offset) (- value (* (the float (the int (/ value period-float))) period-float))) - ) + (set! (-> this offset) (- value (* (the float (the int (/ value period-float))) period-float)))) 0 - (none) - ) + (none)) (defmethod setup-params! ((this sync-info-eased) (period uint) (phase float) (out-param float) (in-param float)) "Setup a sync-info-eased. The out-param and in-param are related to the smoothing at the beginning/end. it looks like the easing is cubic so the first derivative is continuous." (set! (-> this period) period) - ;; set the offset from the phase (let* ((period-float (the float period)) - (value (* phase period-float)) - ) - (set! (-> this offset) (- value (* (the float (the int (/ value period-float))) period-float))) - ) + (value (* phase period-float))) + (set! (-> this offset) (- value (* (the float (the int (/ value period-float))) period-float)))) ;; saturate the params - (if (< out-param 0.0) - (set! out-param 0.0) - ) - (if (< 1.0 out-param) - (set! out-param 1.0) - ) - (if (< in-param 0.001) - (set! in-param 0.001) - ) - (if (< 1.0 in-param) - (set! in-param 1.0) - ) + (if (< out-param 0.0) (set! out-param 0.0)) + (if (< 1.0 out-param) (set! out-param 1.0)) + (if (< in-param 0.001) (set! in-param 0.001)) + (if (< 1.0 in-param) (set! in-param 1.0)) (let ((total-easing-phase (+ out-param in-param))) (when (< 1.0 total-easing-phase) (set! total-easing-phase 1.0) - (set! out-param (- 1.0 in-param)) - ) + (set! out-param (- 1.0 in-param))) (let* ((total-normal-phase (- 1.0 total-easing-phase)) (f0-10 out-param) (f1-12 (+ out-param total-normal-phase)) (f2-5 (* f0-10 f0-10)) (f3-3 (+ (* 2.0 f0-10 (- f1-12 f0-10)) f2-5)) (f4-3 (/ f0-10 (- 1.0 f1-12))) - (y-end (+ (* (- 1.0 f1-12) (- 1.0 f1-12) f4-3) f3-3)) - ) + (y-end (+ (* (- 1.0 f1-12) (- 1.0 f1-12) f4-3) f3-3))) (set! (-> this tlo) f0-10) (set! (-> this thi) f1-12) (set! (-> this ylo) f2-5) (set! (-> this m2) f4-3) - (set! (-> this yend) y-end) - ) - ) + (set! (-> this yend) y-end))) 0 - (none) - ) + (none)) (defmethod setup-params! ((this sync-info-paused) (period uint) (phase float) (out-param float) (in-param float)) "Setup a sync-info-paused. The params are delays for the pause, specified in a fraction of period." (set! (-> this period) period) ;; set phase. (let* ((f0-1 (the float period)) - (f1-1 (* phase f0-1)) - ) - (set! (-> this offset) (- f1-1 (* (the float (the int (/ f1-1 f0-1))) f0-1))) - ) + (f1-1 (* phase f0-1))) + (set! (-> this offset) (- f1-1 (* (the float (the int (/ f1-1 f0-1))) f0-1)))) ;; saturate params (cond - ((< out-param 0.0) - (set! out-param 0.0) - ) - ((< 1.0 out-param) - (set! out-param 1.0) - ) - ) + ((< out-param 0.0) (set! out-param 0.0)) + ((< 1.0 out-param) (set! out-param 1.0))) (cond - ((< in-param 0.0) - (set! in-param 0.0) - ) + ((< in-param 0.0) (set! in-param 0.0)) ;; note: makes sure pauses don't overlap - ((< (- 1.0 out-param) in-param) - (set! in-param (- 1.0 out-param)) - ) - ) + ((< (- 1.0 out-param) in-param) (set! in-param (- 1.0 out-param)))) (set! (-> this pause-after-in) in-param) (set! (-> this pause-after-out) out-param) 0 - (none) - ) - -(defmethod load-params! ((this sync-info) - (proc process) - (default-period uint) - (default-phase float) - (default-out float) - (default-in float) - ) + (none)) + +(defmethod load-params! ((this sync-info) (proc process) (default-period uint) (default-phase float) (default-out float) (default-in float)) "Load params from the res of a process, and set them up. If the res lookup fails, returns #f and uses the specified defaults." (local-vars (sv-16 res-tag)) @@ -122,32 +79,19 @@ (let ((v1-1 (res-lump-data (-> proc entity) 'sync pointer :tag-ptr (& sv-16)))) (cond (v1-1 - ;; res lookup succeeded, we should have two values: a period (not yet in seconds) and a phase. - (setup-params! - this - (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) - (-> (the-as (pointer float) v1-1) 1) - 0.15 - 0.15 - ) - #t - ) + ;; res lookup succeeded, we should have two values: a period (not yet in seconds) and a phase. + (setup-params! this + (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) + (-> (the-as (pointer float) v1-1) 1) + 0.15 + 0.15) + #t) (else - ;; failed, set defaults - (setup-params! this default-period default-phase 0.15 0.15) - #f - ) - ) - ) - ) - -(defmethod load-params! ((this sync-info-eased) - (proc process) - (default-period uint) - (default-phase float) - (default-out float) - (default-in float) - ) + ;; failed, set defaults + (setup-params! this default-period default-phase 0.15 0.15) + #f)))) + +(defmethod load-params! ((this sync-info-eased) (proc process) (default-period uint) (default-phase float) (default-out float) (default-in float)) "Load settings from a res. Can load settings from just a sync-info and uses defaults. If res lookup totally fails, will return #f and use all defaults." (local-vars (sv-16 res-tag)) @@ -155,71 +99,41 @@ (let ((v1-1 (res-lump-data (-> proc entity) 'sync pointer :tag-ptr (& sv-16)))) (cond (v1-1 - ;; we may not get all the parameters - (if (>= (-> sv-16 elt-count) (the-as uint 4)) - (setup-params! - this - (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) - (-> (the-as (pointer float) v1-1) 1) - (-> (the-as (pointer float) v1-1) 2) - (-> (the-as (pointer float) v1-1) 3) - ) - (setup-params! - this - (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) - (-> (the-as (pointer float) v1-1) 1) - default-out - default-in - ) - ) - #t - ) - (else - (setup-params! this default-period default-phase default-out default-in) - #f - ) - ) - ) - ) - -(defmethod load-params! ((this sync-info-paused) - (proc process) - (default-period uint) - (default-phase float) - (default-out float) - (default-in float) - ) + ;; we may not get all the parameters + (if (>= (-> sv-16 elt-count) (the-as uint 4)) + (setup-params! this + (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) + (-> (the-as (pointer float) v1-1) 1) + (-> (the-as (pointer float) v1-1) 2) + (-> (the-as (pointer float) v1-1) 3)) + (setup-params! this + (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) + (-> (the-as (pointer float) v1-1) 1) + default-out + default-in)) + #t) + (else (setup-params! this default-period default-phase default-out default-in) #f)))) + +(defmethod load-params! ((this sync-info-paused) (proc process) (default-period uint) (default-phase float) (default-out float) (default-in float)) "Load and setup a sync-info-paused." (local-vars (sv-16 res-tag)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-1 (res-lump-data (-> proc entity) 'sync pointer :tag-ptr (& sv-16)))) (cond (v1-1 - (if (>= (-> sv-16 elt-count) (the-as uint 4)) - (setup-params! - this - (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) - (-> (the-as (pointer float) v1-1) 1) - (-> (the-as (pointer float) v1-1) 2) - (-> (the-as (pointer float) v1-1) 3) - ) - (setup-params! - this - (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) - (-> (the-as (pointer float) v1-1) 1) - default-out - default-in - ) - ) - #t - ) - (else - (setup-params! this default-period default-phase default-out default-in) - #f - ) - ) - ) - ) + (if (>= (-> sv-16 elt-count) (the-as uint 4)) + (setup-params! this + (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) + (-> (the-as (pointer float) v1-1) 1) + (-> (the-as (pointer float) v1-1) 2) + (-> (the-as (pointer float) v1-1) 3)) + (setup-params! this + (the-as uint (the int (* 300.0 (-> (the-as (pointer float) v1-1) 0)))) + (-> (the-as (pointer float) v1-1) 1) + default-out + default-in)) + #t) + (else (setup-params! this default-period default-phase default-out default-in) #f)))) (defmethod get-current-phase-no-mod ((this sync-info)) "Based on the current frame, get the current phase. Does not apply any modifications @@ -227,54 +141,36 @@ (let* ((period (-> this period)) (period-float (the float period)) ;; now + offset - (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset))) - ) + (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset)))) ;; compute wrapped phase from current-time - (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float) - ) - ) + (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float))) (defmethod get-phase-offset ((this sync-info)) "Get the offset, as a fraction of period" - (/ (-> this offset) (the float (-> this period))) - ) + (/ (-> this offset) (the float (-> this period)))) (defmethod sync-now! ((this sync-info) (user-time-offset float)) "Adjusts our offset so we are at phase user-phase-offset now" (let* ((period (-> this period)) (period-float (the float period)) ;; in (0, 1) - (wrapped-user-offset - (- user-time-offset (* (the float (the int (/ user-time-offset period-float))) period-float)) - ) + (wrapped-user-offset (- user-time-offset (* (the float (the int (/ user-time-offset period-float))) period-float))) ;; with the current offset, what is the time (0, period)? (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset))) ;; current period in (0, 1) - (current-time-wrapped - (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float) - ) + (current-time-wrapped (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float)) ;; a time - (combined-offset - (+ (* (- wrapped-user-offset current-time-wrapped) period-float) period-float (-> this offset)) - ) - ) + (combined-offset (+ (* (- wrapped-user-offset current-time-wrapped) period-float) period-float (-> this offset)))) ;; wrap it - (set! (-> this offset) - (- combined-offset (* (the float (the int (/ combined-offset period-float))) period-float)) - ) - ) - ) + (set! (-> this offset) (- combined-offset (* (the float (the int (/ combined-offset period-float))) period-float))))) (defmethod get-current-phase ((this sync-info)) "Get the current phase." (let* ((period (-> this period)) (period-float (the float period)) - (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset))) - ) + (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset)))) ;; don't need to wrap this again. - (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float) - ) - ) + (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float))) (defmethod get-current-phase ((this sync-info-paused)) "Get the current phase. this only uses the pause-after-out - use the mirrored version @@ -282,31 +178,21 @@ (let* ((period (-> this period)) (period-float (the float period)) (max-phase 1.0) - (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset))) - ) - (fmin max-phase (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) - (* period-float (- 1.0 (-> this pause-after-out))) - ) - ) - ) - ) + (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset)))) + (fmin max-phase + (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) + (* period-float (- 1.0 (-> this pause-after-out))))))) (defmethod get-current-value ((this sync-info) (max-val float)) "This is just get-current-phase multiplied by max-val" (let* ((period (-> this period)) (period-float (the float period)) - (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset))) - ) - (* (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float) - max-val - ) - ) - ) + (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset)))) + (* (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float) max-val))) (defmethod get-current-value ((this sync-info-paused) (arg0 float)) "This is just get-current-phase multiplied by max-val" - (* (get-current-phase this) arg0) - ) + (* (get-current-phase this) arg0)) (defmethod get-current-phase-with-mirror ((this sync-info)) "Gets the phase that goes from 0 to 1 back to 0 every period." @@ -314,18 +200,9 @@ (period-float (the float period)) (max-val 2.0) (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset))) - (phase-out-of-2 - (* max-val - (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float) - ) - ) - ) - (if (>= phase-out-of-2 1.0) - (set! phase-out-of-2 (- 2.0 phase-out-of-2)) - ) - phase-out-of-2 - ) - ) + (phase-out-of-2 (* max-val (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float)))) + (if (>= phase-out-of-2 1.0) (set! phase-out-of-2 (- 2.0 phase-out-of-2))) + phase-out-of-2)) (defmethod get-current-phase-with-mirror ((this sync-info-eased)) "Get the phase that goes from 0 to 1 back to 0 every period. @@ -334,48 +211,28 @@ (period-float (the float period)) (max-val 2.0) (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset))) - (current-val - (* max-val - (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float) - ) - ) - (in-mirror? #f) - ) - + (current-val (* max-val (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float))) + (in-mirror? #f)) ;; the input to the eased-phase calculation is un-mirrored, then mirrored after (when (>= current-val 1.0) (set! in-mirror? #t) - (set! current-val (+ -1.0 current-val)) - ) + (set! current-val (+ -1.0 current-val))) (let* ((tlo (-> this tlo)) (eased-phase (/ (cond ((< current-val tlo) ;; quadratic ramp in - (* current-val current-val) - ) + (* current-val current-val)) ((< current-val (-> this thi)) ;; linear part - (+ (* 2.0 tlo (- current-val tlo)) (-> this ylo)) - ) + (+ (* 2.0 tlo (- current-val tlo)) (-> this ylo))) (else - (let ((f1-7 (- 1.0 current-val))) - ;; quadratic ramp out - (- (-> this yend) (* f1-7 f1-7 (-> this m2))) - ) - ) - ) - (-> this yend) - ) - ) - ) + (let ((f1-7 (- 1.0 current-val))) + ;; quadratic ramp out + (- (-> this yend) (* f1-7 f1-7 (-> this m2)))))) + (-> this yend)))) ;; flip again - (if in-mirror? - (set! eased-phase (- 1.0 eased-phase)) - ) - eased-phase - ) - ) - ) + (if in-mirror? (set! eased-phase (- 1.0 eased-phase))) + eased-phase))) (defmethod get-current-phase-with-mirror ((this sync-info-paused)) "Get the phase that goes from 0 to 1 to 0 in one period." @@ -389,27 +246,20 @@ (f0-2 (* f0-1 (/ (- f2-2 (* (the float (the int (/ f2-2 f1-0))) f1-0)) f1-0))) ;; offset for pause (f1-3 (- 1.0 (* 2.0 (-> this pause-after-in)))) - (f2-7 (- 1.0 (* 2.0 (-> this pause-after-out)))) - ) + (f2-7 (- 1.0 (* 2.0 (-> this pause-after-out))))) (cond ((>= f0-2 (+ 1.0 f1-3)) 0.0 ;; before pause ends ) ((< 1.0 f0-2) ;; in mmoving part - (- 1.0 (/ (+ -1.0 f0-2) f1-3)) - ) + (- 1.0 (/ (+ -1.0 f0-2) f1-3))) ((>= f0-2 f2-7) ;; after end pause - 1.0 - ) + 1.0) (else - ;; in mmoving part - (/ f0-2 f2-7) - ) - ) - ) - ) + ;; in mmoving part + (/ f0-2 f2-7))))) (defmethod get-current-value-with-mirror ((this sync-info) (max-out-val float)) "Get the phase that goes from 0 to max-out-val to 0 in each period." @@ -417,28 +267,17 @@ (period-float (the float period)) (max-val 2.0) (current-time (+ (the float (mod (the-as uint (current-time)) period)) (-> this offset))) - (current-val - (* max-val - (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float) - ) - ) - ) - (if (>= current-val 1.0) - (set! current-val (- 2.0 current-val)) - ) - (* current-val max-out-val) - ) - ) + (current-val (* max-val (/ (- current-time (* (the float (the int (/ current-time period-float))) period-float)) period-float)))) + (if (>= current-val 1.0) (set! current-val (- 2.0 current-val))) + (* current-val max-out-val))) (defmethod get-current-value-with-mirror ((this sync-info-eased) (max-out-val float)) "Get phase that goes from 0 to max-out-val to 0 in each period" - (* (get-current-phase-with-mirror this) max-out-val) - ) + (* (get-current-phase-with-mirror this) max-out-val)) (defmethod get-current-value-with-mirror ((this sync-info-paused) (max-out-val float)) "Get phase that goes from 0 to max-out-val to 0 in each period" - (* (get-current-phase-with-mirror this) max-out-val) - ) + (* (get-current-phase-with-mirror this) max-out-val)) (defmethod set-params! ((this delayed-rand-float) (min-tim int) (max-time int) (max-times-two float)) "Float that changes randomly: @@ -451,8 +290,7 @@ (set! (-> this start-time) 0) (set! (-> this timer) 0) (set! (-> this value) 0.0) - (-> this value) - ) + (-> this value)) (defmethod update! ((this delayed-rand-float)) "Get the value." @@ -462,10 +300,8 @@ ;; come up with a random end time. (set! (-> this timer) (rand-vu-int-range (-> this min-time) (-> this max-time))) ;; come up with a random value in (-max, max) - (set! (-> this value) (rand-vu-float-range (- (-> this max-val)) (-> this max-val))) - ) - (-> this value) - ) + (set! (-> this value) (rand-vu-float-range (- (-> this max-val)) (-> this max-val)))) + (-> this value)) (defmethod set-params! ((this oscillating-float) (init-val float) (accel float) (max-vel float) (damping float)) "Setup an oscillating-float. It will head toward the target, but will overshoot and oscillate before @@ -480,37 +316,22 @@ (set! (-> this max-vel) max-vel) (set! (-> this damping) damping) (set! (-> this accel) accel) - (-> this value) - ) + (-> this value)) (defmethod update! ((this oscillating-float) (target-offset float)) ;; first compute desired acceleration - (let ((acc (* (- (+ (-> this target) target-offset) (-> this value)) - (* (-> this accel) (-> *display* time-adjust-ratio)) - ) - ) - ) + (let ((acc (* (- (+ (-> this target) target-offset) (-> this value)) (* (-> this accel) (-> *display* time-adjust-ratio))))) ;; integrate and update velocity - (+! (-> this vel) acc) - ) + (+! (-> this vel) acc)) ;; limit velocity (set! (-> this vel) (fmin (-> this max-vel) (fmax (- (-> this max-vel)) (-> this vel)))) ;; apply damping (set! (-> this vel) (* (-> this vel) (-> this damping))) ;; integrate and update position (+! (-> this value) (* (-> this vel) (-> *display* time-adjust-ratio))) - (-> this value) - ) - -(defmethod set-params! ((this bouncing-float) - (init-val float) - (max-val float) - (min-val float) - (elast float) - (accel float) - (max-vel float) - (damping float) - ) + (-> this value)) + +(defmethod set-params! ((this bouncing-float) (init-val float) (max-val float) (min-val float) (elast float) (accel float) (max-vel float) (damping float)) "Float that bounces. It's an oscillating float, but you can add a floor/ceiling that has an elastic collision. init-val: intial value and target. @@ -525,44 +346,34 @@ (set! (-> this min-value) min-val) (set! (-> this elasticity) elast) (set! (-> this state) 0) - (-> this osc value) - ) + (-> this osc value)) (defmethod update! ((this bouncing-float) (arg0 float)) ;; first, update the oscillator and assume we aren't in a bouncing part (update! (-> this osc) arg0) (set! (-> this state) 0) - (when (>= (-> this osc value) (-> this max-value)) ;; boucing off of the ceiling. first, saturate to max-val (set! (-> this osc value) (-> this max-value)) (if (< 0.0 (-> this osc vel)) - ;; then update our velocity for the elastic collision - (set! (-> this osc vel) (* (-> this osc vel) (- (-> this elasticity)))) - ) + ;; then update our velocity for the elastic collision + (set! (-> this osc vel) (* (-> this osc vel) (- (-> this elasticity))))) ;; and remember we did this, so at-min/at-max work - (set! (-> this state) 1) - ) + (set! (-> this state) 1)) ;; same for bouncing off of the floor (when (>= (-> this min-value) (-> this osc value)) (set! (-> this osc value) (-> this min-value)) - (if (< (-> this osc vel) 0.0) - (set! (-> this osc vel) (* (-> this osc vel) (- (-> this elasticity)))) - ) - (set! (-> this state) -1) - ) - (-> this osc value) - ) + (if (< (-> this osc vel) 0.0) (set! (-> this osc vel) (* (-> this osc vel) (- (-> this elasticity))))) + (set! (-> this state) -1)) + (-> this osc value)) (defmethod at-min? ((this bouncing-float)) "Did the last update hit the minimum value?" - (= (-> this state) -1) - ) + (= (-> this state) -1)) (defmethod at-max? ((this bouncing-float)) "Did the last update hit the maximum value?" - (= (-> this state) 1) - ) + (= (-> this state) 1)) (defmethod set-params! ((this delayed-rand-vector) (min-time int) (max-time int) (xz-range float) (y-range float)) "Set up a delayed-rand-vector. This vector randomly changes at random times. @@ -577,8 +388,7 @@ (set! (-> this start-time) 0) (set! (-> this timer) 0) (vector-reset! (-> this value)) - (-> this value) - ) + (-> this value)) (defmethod update-now! ((this delayed-rand-vector)) "update to a random value now" @@ -587,68 +397,41 @@ (set! (-> this value x) (rand-vu-float-range (- (-> this xz-max)) (-> this xz-max))) (set! (-> this value y) (rand-vu-float-range (- (-> this y-max)) (-> this y-max))) (set! (-> this value z) (rand-vu-float-range (- (-> this xz-max)) (-> this xz-max))) - (-> this value) - ) + (-> this value)) (defmethod update-with-delay! ((this delayed-rand-vector)) "Update, if enough time has passed" - (if (time-elapsed? (-> this start-time) (-> this timer)) - (update-now! this) - ) - (-> this value) - ) + (if (time-elapsed? (-> this start-time) (-> this timer)) (update-now! this)) + (-> this value)) (defmethod update-with-delay-or-reset! ((this delayed-rand-vector)) "Update, if enough time has passed. Otherwise reset to zero." - (if (time-elapsed? (-> this start-time) (-> this timer)) - (update-now! this) - (vector-reset! (-> this value)) - ) - (-> this value) - ) + (if (time-elapsed? (-> this start-time) (-> this timer)) (update-now! this) (vector-reset! (-> this value))) + (-> this value)) (defmethod set-params! ((this oscillating-vector) (init-val vector) (accel float) (max-vel float) (damping float)) "Works just like oscillating-float, but does a whole vector. init-val can be #f to reset to 0." (cond - (init-val - (set! (-> this value quad) (-> init-val quad)) - (set! (-> this target quad) (-> init-val quad)) - ) - (else - (vector-reset! (-> this value)) - (vector-reset! (-> this target)) - ) - ) + (init-val (set! (-> this value quad) (-> init-val quad)) (set! (-> this target quad) (-> init-val quad))) + (else (vector-reset! (-> this value)) (vector-reset! (-> this target)))) (vector-reset! (-> this vel)) (set! (-> this max-vel) max-vel) (set! (-> this damping) damping) (set! (-> this accel) accel) - (-> this value) - ) + (-> this value)) (defmethod update! ((this oscillating-vector) (target-offset vector)) "target-offset can be #f, acts like 0" (let ((s5-0 (new 'stack-no-clear 'vector))) (cond - (target-offset - (vector+! s5-0 (-> this target) target-offset) - (vector-! s5-0 s5-0 (-> this value)) - ) - (else - (vector-! s5-0 (-> this target) (-> this value)) - ) - ) + (target-offset (vector+! s5-0 (-> this target) target-offset) (vector-! s5-0 s5-0 (-> this value))) + (else (vector-! s5-0 (-> this target) (-> this value)))) (vector-float*! s5-0 s5-0 (* (-> this accel) (-> *display* time-adjust-ratio))) (vector+! (-> this vel) (-> this vel) s5-0) (let ((vel (vector-length (-> this vel)))) - (if (< (-> this max-vel) vel) - (vector-float*! (-> this vel) (-> this vel) (/ (-> this max-vel) vel)) - ) - ) + (if (< (-> this max-vel) vel) (vector-float*! (-> this vel) (-> this vel) (/ (-> this max-vel) vel)))) (vector-float*! (-> this vel) (-> this vel) (-> this damping)) (vector-float*! s5-0 (-> this vel) (-> *display* time-adjust-ratio)) - (vector+! (-> this value) (-> this value) s5-0) - ) - (-> this value) - ) + (vector+! (-> this value) (-> this value) s5-0)) + (-> this value)) diff --git a/goal_src/jak1/engine/util/types-h.gc b/goal_src/jak1/engine/util/types-h.gc index 1e436909b8..8944a1d4ce 100644 --- a/goal_src/jak1/engine/util/types-h.gc +++ b/goal_src/jak1/engine/util/types-h.gc @@ -1,23 +1,14 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ENGINE.CGO" "GAME.CGO") - (require "kernel-defs.gc") -;; name: types-h.gc -;; name in dgo: types-h -;; dgos: GAME, ENGINE - ;; these types may have bitfields in them. ;; these have runtime types. But nothing appears to use them? -(deftype time-frame (int64) - () - ) +(deftype time-frame (int64) ()) -(deftype part-id (uint32) - () - ) +(deftype part-id (uint32) ()) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Common Units @@ -36,20 +27,11 @@ If the input is a constant float or integer, the result will be a compile time constant float. Otherwise, it will not be constant. Returns float." - ;; we don't have enough constant propagation for the compiler to figure this out. (cond - ((float? x) - (* METER_LENGTH x) - ) - ((integer? x) - (* METER_LENGTH x) - ) - (#t - `(* METER_LENGTH ,x) - ) - ) - ) + ((float? x) (* METER_LENGTH x)) + ((integer? x) (* METER_LENGTH x)) + (#t `(* METER_LENGTH ,x)))) ;; rotations are stored in 65,536ths of a full rotation. ;; like with meters, you get a reasonable accuracy as an integer. @@ -62,16 +44,8 @@ "Convert number to degrees unit. Will keep a constant float/int constant." (cond - ((or (float? x) (integer? x)) - (* DEGREES_PER_ROT (/ (+ 0.0 x) 360.0)) - ) - (#t - `(* (/ (the float ,x) 360.0) - DEGREES_PER_ROT - ) - ) - ) - ) + ((or (float? x) (integer? x)) (* DEGREES_PER_ROT (/ (+ 0.0 x) 360.0))) + (#t `(* (/ (the float ,x) 360.0) DEGREES_PER_ROT)))) ;; times are stored in 300ths of a second. ;; this divides evenly into frames at both 50 and 60 fps. @@ -84,36 +58,21 @@ "Convert number to seconds unit. Returns uint." (cond - ((integer? x) - (* TICKS_PER_SECOND x) - ) - ((float? x) - (* 1 (* 1.0 x TICKS_PER_SECOND)) - ) - (#t - `(the uint (* TICKS_PER_SECOND ,x)) - ) - ) - ) + ((integer? x) (* TICKS_PER_SECOND x)) + ((float? x) (* 1 (* 1.0 x TICKS_PER_SECOND))) + (#t `(the uint (* TICKS_PER_SECOND ,x))))) (defmacro fsec (x) "Convert number to seconds unit. Returns float." (cond - ((or (integer? x) (float? x)) - (* 1.0 TICKS_PER_SECOND x) - ) - (#t - `(* 1.0 TICKS_PER_SECOND ,x) - ) - ) - ) + ((or (integer? x) (float? x)) (* 1.0 TICKS_PER_SECOND x)) + (#t `(* 1.0 TICKS_PER_SECOND ,x)))) ;; maybe rename to "velocity"? (defmacro vel-tick (vel) "turn a velocity value into a per-tick value" - `(* (/ 1.0 ,TICKS_PER_SECOND) ,vel) - ) + `(* (/ 1.0 ,TICKS_PER_SECOND) ,vel)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Debugging Stuff @@ -121,18 +80,11 @@ ;; set to #t to get lots of prints during loading (defglobalconstant DEBUG_LOAD #f) + (defglobalconstant DEBUG_TEX #f) (defmacro load-dbg (fmt-str &rest args) - (if DEBUG_LOAD - `(format 0 ,(string-append "[LOAD] " fmt-str) ,@args) - '(empty) - ) - ) + (if DEBUG_LOAD `(format 0 ,(string-append "[LOAD] " fmt-str) ,@args) '(empty))) (defmacro tex-dbg (fmt-str &rest args) - (if DEBUG_TEX - `(format 0 ,(string-append "[TEX] " fmt-str) ,@args) - '(empty) - ) - ) + (if DEBUG_TEX `(format 0 ,(string-append "[TEX] " fmt-str) ,@args) '(empty))) diff --git a/goal_src/jak1/examples/debug-collide.gc b/goal_src/jak1/examples/debug-collide.gc index c80a255565..5dfb738333 100644 --- a/goal_src/jak1/examples/debug-collide.gc +++ b/goal_src/jak1/examples/debug-collide.gc @@ -1,7 +1,3 @@ - - - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Unused version of line sphere, touching list test ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -15,45 +11,62 @@ (defmacro pabsw-hack (out in) `(let ((temp (new 'stack-no-clear 'array 'int32 4))) - (set! (-> (the (pointer uint128) temp)) ,in) - (set! (-> temp 0) (abs (-> temp 0))) - (set! (-> temp 1) (abs (-> temp 1))) - (set! (-> temp 2) (abs (-> temp 2))) - (set! (-> temp 3) (abs (-> temp 3))) - (set! ,out (-> (the (pointer uint128) temp))) - ) - ) + (set! (-> (the (pointer uint128) temp)) ,in) + (set! (-> temp 0) (abs (-> temp 0))) + (set! (-> temp 1) (abs (-> temp 1))) + (set! (-> temp 2) (abs (-> temp 2))) + (set! (-> temp 3) (abs (-> temp 3))) + (set! ,out (-> (the (pointer uint128) temp))))) ;; This is mostly stolen from collide-cache.gc. It builds the bounding box we'll use for later tests. ;; The bounding box is stored in *collide-work*. (defun setup-collide-for-line-sphere ((origin vector) (line vector) (radius float)) (local-vars (a0-2 uint128) (a0-3 uint128) (a0-7 float) (t0-1 uint128) (t0-2 uint128) (zero uint128)) - (rlet ((acc :class vf) (Q :class vf) (vf0 :class vf) (vf1 :class vf) (vf10 :class vf) (vf11 :class vf) (vf12 :class vf) - (vf13 :class vf) (vf14 :class vf) (vf15 :class vf) (vf16 :class vf) (vf17 :class vf) (vf18 :class vf) (vf19 :class vf) - (vf2 :class vf) (vf20 :class vf) (vf21 :class vf) (vf22 :class vf) (vf23 :class vf) (vf3 :class vf) (vf4 :class vf) - (vf5 :class vf) (vf6 :class vf) (vf7 :class vf) (vf8 :class vf) (vf9 :class vf)) + (rlet ((acc :class vf) + (Q :class vf) + (vf0 :class vf) + (vf1 :class vf) + (vf10 :class vf) + (vf11 :class vf) + (vf12 :class vf) + (vf13 :class vf) + (vf14 :class vf) + (vf15 :class vf) + (vf16 :class vf) + (vf17 :class vf) + (vf18 :class vf) + (vf19 :class vf) + (vf2 :class vf) + (vf20 :class vf) + (vf21 :class vf) + (vf22 :class vf) + (vf23 :class vf) + (vf3 :class vf) + (vf4 :class vf) + (vf5 :class vf) + (vf6 :class vf) + (vf7 :class vf) + (vf8 :class vf) + (vf9 :class vf)) (init-vf0-vector) (set! zero (the uint128 0)) (let ((v1-0 (new 'static 'vector4w :x #x1000 :y #x1000 :z #x1000))) - (.mov vf9 (the uint128 radius)) ;; vf9.x = radius - (.lvf vf3 (&-> line quad)) ;; vf3 = line - (let ((a0-1 (-> v1-0 quad))) ;; a0-1 = 0x1000, - (.ftoi.vf vf21 vf3) ;; vf21 is the line - (.lvf vf1 (&-> origin quad)) ;; vf1 is the origin - (.mul.vf vf8 vf3 vf3) ;; + (.mov vf9 (the uint128 radius)) ;; vf9.x = radius + (.lvf vf3 (&-> line quad)) ;; vf3 = line + (let ((a0-1 (-> v1-0 quad))) ;; a0-1 = 0x1000, + (.ftoi.vf vf21 vf3) ;; vf21 is the line + (.lvf vf1 (&-> origin quad)) ;; vf1 is the origin + (.mul.vf vf8 vf3 vf3) ;; (let ((v1-1 *collide-work*)) - (.add.vf vf2 vf1 vf3) ;; vf2 is the endpoint + (.add.vf vf2 vf1 vf3) ;; vf2 is the endpoint ;;(set! (-> obj ignore-mask) pat-ignore) - (.mov t0-1 vf21) ;; t0-1 is the line - (pabsw-hack t0-2 t0-1) ;; t0-2 is the line, absolute value + (.mov t0-1 vf21) ;; t0-1 is the line + (pabsw-hack t0-2 t0-1) ;; t0-2 is the line, absolute value (.pcgtw a0-2 t0-2 a0-1) (.ppach a0-3 zero a0-2) - (let ((a0-4 (shl (the-as int a0-3) 16))) - (b! (nonzero? a0-4) cfg-3) - ) + (let ((a0-4 (shl (the-as int a0-3) 16))) (b! (nonzero? a0-4) cfg-3)) (format 0 "BAD case in setup-collide-for-line-sphere") (b! #t cfg-13 :delay (nop!)) - (label cfg-3) (.add.y.vf vf8 vf8 vf8 :mask #b1) ;;(set! (-> obj num-tris) 0) @@ -119,50 +132,32 @@ (.sub.vf vf20 vf0 vf20) (.svf (&-> v1-1 inv-mat vector 2 quad) vf19) (.svf (&-> v1-1 inv-mat vector 3 quad) vf20) - (label cfg-13) - ) - ) - ) - ) - ) + (label cfg-13)))))) ;; convert vector of ints to floats. (defmacro vector-as-floats (in) `(let ((vec (new 'stack-no-clear 'vector))) - (rlet ((reg :class vf)) - (.lvf reg (&-> ,in quad)) - (.itof.vf reg reg) - (.svf (&-> vec quad) reg) - ) - vec - ) - ) + (rlet ((reg :class vf)) (.lvf reg (&-> ,in quad)) (.itof.vf reg reg) (.svf (&-> vec quad) reg)) + vec)) ;; incrementing counter to make the test input move around. (define *debug-counter* 0) (defun debug-draw-collide-work ((my-off float)) (when (not (paused?)) - (+! *debug-counter* 1) - - ) - + (+! *debug-counter* 1)) ;; create a test input that moves around sandover (let ((origin (new 'static 'vector :y (meters 7.0) :x (meters 5.) :z (meters 0.0))) (line (new 'static 'vector :y (meters 5.0) :x (meters -5.0))) (radius (meters 2.0)) - (val (+ my-off (* 0.003 (the float *debug-counter*)))) - ) - + (val (+ my-off (* 0.003 (the float *debug-counter*))))) (set! (-> line z) (* (sin (degrees val)) (meters 35.0))) (set! (-> line x) (* (cos (degrees val)) (meters 35.0))) - (let ((dbg2 (/ val 2))) (set! (-> origin x) (* (sin (degrees dbg2)) (meters 100.))) (set! (-> origin z) (* (cos (* 3.0 (degrees dbg2))) (meters 100.))) - (+! (-> origin x) (meters -50.)) - ) -#| + (+! (-> origin x) (meters -50.))) + #| ;;; PROBE (at the frag finding level) ;; setup the collide work @@ -228,23 +223,18 @@ ) ) ) -|# - + |# ;; CCACHE (fill from bounding box) (let ((bbox-fake (new 'stack 'bounding-box)) (bbox (new 'stack 'bounding-box))) - ;; make box (set! (-> bbox-fake min quad) (-> origin quad)) (vector+! (-> bbox-fake max) origin line) - (dotimes (i 3) (set! (-> bbox min data i) (fmin (-> bbox-fake min data i) (-> bbox-fake max data i))) - (set! (-> bbox max data i) (fmax (-> bbox-fake min data i) (-> bbox-fake max data i))) - ) + (set! (-> bbox max data i) (fmax (-> bbox-fake min data i) (-> bbox-fake max data i)))) (set! (-> bbox min w) 1.0) (set! (-> bbox max w) 1.0) - ;; BBOX ;; draw box ;(add-debug-box #t (bucket-id debug-draw0) (-> bbox min) (-> bbox max) (new 'static 'rgba :g #x30 :a #x80)) @@ -255,9 +245,6 @@ ; (the process-drawable #f) ; (the pat-surface 0) ; ) - - - ;; Y PROBE ; (+! (-> bbox min y) (meters 8.0)) ; (let ((vec (new 'stack-no-clear 'vector))) @@ -274,7 +261,6 @@ ; ) ; ) ; (fill-using-y-probe *collide-cache* (-> bbox min) (meters 20.0) (collide-kind background) (the process-drawable #f) (the uint 0)) - ;; LINE SPHERE ; (fill-using-line-sphere *collide-cache* origin line radius (collide-kind background) (the process-drawable #f) 0) ; ;; draw the line we're going to check @@ -287,7 +273,6 @@ ; #f ; (the rgba -1) ; ) - ; ;; debug draw spheres along the line ; (dotimes (i 10) ; (add-debug-sphere @@ -302,7 +287,6 @@ ; (new 'static 'rgba :g #x80 :r #x80 :b #x80 :a #x80) ; ) ; ) - ;; Y probe (actual probe) (+! (-> bbox min y) (meters 8.0)) (let ((vec (new 'stack-no-clear 'vector))) @@ -318,60 +302,31 @@ ; (the rgba -1) ; ) ) - (let ((result (new 'stack-no-clear 'collide-tri-result))) - - (let ((u (fill-and-probe-using-y-probe *collide-cache* (-> bbox min) (meters 20.0) (collide-kind background) (the process-drawable #f) result (the uint 0)))) + (let ((u (fill-and-probe-using-y-probe *collide-cache* + (-> bbox min) + (meters 20.0) + (collide-kind background) + (the process-drawable #f) + result + (the uint 0)))) (-! (-> bbox min y) (* u (meters 20.0))) ;; (format *stdcon* "u = ~f : ~`vector`P ~%" u (-> result vertex 0)) - (add-debug-sphere - #t - (bucket-id debug-draw0) - (-> bbox min) - (meters 2.0) - (new 'static 'rgba :r #x80 :a #x80) - ) - ) - ;(add-debug-outline-triangle #t (bucket-id debug-draw1) (-> result vertex 0) (-> result vertex 1) (-> result vertex 2) (new 'static 'rgba :r #x80 :g #x80 :a #x80)) - - - - + (add-debug-sphere #t (bucket-id debug-draw0) (-> bbox min) (meters 2.0) (new 'static 'rgba :r #x80 :a #x80))) + ;(add-debug-outline-triangle #t (bucket-id debug-draw1) (-> result vertex 0) (-> result vertex 1) (-> result vertex 2) (new 'static 'rgba :r #x80 :g #x80 :a #x80)) ) - - - ;(debug-draw *collide-cache*) - - ) - - #f - ) - ) + #f)) (defun start-debug-drawer () ;;(kill-by-name 'debug-drawer *active-pool*) (let ((proc (get-process *nk-dead-pool* process 1024))) (activate proc *active-pool* 'debug-drawer *kernel-dram-stack*) - (run-next-time-in-process - proc - (lambda () - (let ((my-off (rand-vu-float-range 0.0 1000.0))) - (while #t - (debug-draw-collide-work my-off) - (suspend) - ) - - - ) - ) - ) - ) - ) + (run-next-time-in-process proc + (lambda () + (let ((my-off (rand-vu-float-range 0.0 1000.0))) (while #t (debug-draw-collide-work my-off) (suspend))))))) (defun start-100-debug-drawer () (dotimes (i 100) - (start-debug-drawer) - ) - ) \ No newline at end of file + (start-debug-drawer))) diff --git a/goal_src/jak1/examples/debug-draw-example.gc b/goal_src/jak1/examples/debug-draw-example.gc index 8a66d6aeda..65465dde70 100644 --- a/goal_src/jak1/examples/debug-draw-example.gc +++ b/goal_src/jak1/examples/debug-draw-example.gc @@ -1,9 +1,7 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") - ;; This file demonstrates how to use the debug draw. ;; To run this: @@ -22,59 +20,45 @@ ;; you can turn on actor marks (full) or visibilty boxes in the debug menu. |# - (defun test-function ((iter int)) "This function draws the debug stuff. You can edit this, then reload this file to play with it." - ;; val will increase from 0 to 1, then reset back to 0. (let* ((frame (the float (mod (* 4 iter) 3200))) (val (/ frame 1600.0))) (format *stdcon* "~0kval ~f~%" val) - ;; orbit the camera around in a circle with radius 5 m. (let* ((rad (meters 5.0)) (x (* rad (sin (* (degrees 360.0) val)))) (z (* rad (cos (* (degrees 360.0) val)))) (cam-pos (new 'stack 'vector)) - (cam-inv-rot (new 'stack 'matrix)) - ) + (cam-inv-rot (new 'stack 'matrix))) ;; this matrix will look directly at the origin... (set! (-> cam-pos x) x) (set! (-> cam-pos z) z) (set! (-> cam-pos y) (meters 2.)) (forward-down->inv-matrix cam-inv-rot cam-pos (new 'static 'vector :y 1.0)) - ;; if the camera is here. (set! (-> cam-pos x) (- 0. x)) (set! (-> cam-pos z) (- 0. z)) (set! (-> cam-pos y) (meters -2.)) ;;(debug-set-camera-pos-rot! cam-pos cam-inv-rot) ;;(hack-update-camera cam-pos cam-inv-rot) - - ;; create some test points (let ((p0 (new 'static 'vector :x (meters .8) :y (meters .2) :z (meters 2.0))) (p1 (new 'static 'vector :x (meters .3) :y (meters .3) :z (meters 2.5))) - (p2 (new 'static 'vector :x (meters .5) :y (meters .7) :z (meters 1.5))) - ) - + (p2 (new 'static 'vector :x (meters .5) :y (meters .7) :z (meters 1.5)))) ;;(add-debug-point #t (bucket-id debug-draw0) (new 'static 'vector)) (add-debug-x #t (bucket-id debug-draw0) (new 'static 'vector) (new 'static 'rgba :g #x80 :a #x80)) (add-debug-box #t (bucket-id debug-draw0) p0 p2 (new 'static 'rgba :b #x80 :a #x80)) (add-debug-flat-triangle #t (bucket-id debug-draw0) p0 p1 p2 (new 'static 'rgba :r #x80)) (add-debug-text-3d #t (bucket-id debug-draw0) "triangle!" p0 (font-color menu-flag-on) (the vector2h #f)) - (add-debug-sphere #t (bucket-id debug-draw0) p2 (meters 0.5) (new 'static 'rgba :r #x80)) - ) - ) - + (add-debug-sphere #t (bucket-id debug-draw0) p2 (meters 0.5) (new 'static 'rgba :r #x80)))) (update-hack) ;; these also work ;;(draw-end-credits (the int frame)) ;; (draw-title-credits val) - ) - (none) - ) + (none)) (defun update-hack () (let ((a2-0 (new 'stack-no-clear 'vector))) @@ -85,11 +69,9 @@ (let ((gp-0 (vector+float*! (new 'stack-no-clear 'vector) (new 'static 'vector) a2-0 0.0))) (let* ((s5-0 (matrix-local->world #f #f)) (f28-0 (lerp-scale 122.88 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7)) - (f30-0 (lerp-scale 2048.0 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7)) - ) + (f30-0 (lerp-scale 2048.0 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7))) (let ((f26-0 (lerp-scale 0.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7)) - (f0-10 (lerp-scale 1.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7)) - ) + (f0-10 (lerp-scale 1.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7))) ; (if (< 0.0 f26-0) ; (send-event *camera* 'part-water-drip f26-0 f0-10) ; ) @@ -101,36 +83,19 @@ (set! (-> *part-id-table* 37 init-specs 5 initial-valuef) f30-0) (set! (-> *part-id-table* 37 init-specs 5 random-rangef) f30-0) (set! (-> *part-id-table* 38 init-specs 5 initial-valuef) f30-0) - (set! (-> *part-id-table* 38 init-specs 5 random-rangef) f30-0) - ) - + (set! (-> *part-id-table* 38 init-specs 5 random-rangef) f30-0)) (dotimes (i 10) (launch-particles (-> *part-id-table* 37) gp-0) - (launch-particles (-> *part-id-table* 38) gp-0) - ) - ) - ) + (launch-particles (-> *part-id-table* 38) gp-0)))) 0 - (none) - ) + (none)) (defun launch-test-process () "Call this to launch a process that draws the debug demo" (let ((proc (get-process *nk-dead-pool* process 1024))) (activate proc *active-pool* 'test *kernel-dram-stack*) - (run-next-time-in-process proc (lambda () - (let ((iter 0)) - (while #t - (test-function iter) - (suspend) - (+! iter 1) - ) - ) - ) - ) - proc) - - ) + (run-next-time-in-process proc (lambda () (let ((iter 0)) (while #t (test-function iter) (suspend) (+! iter 1))))) + proc)) #| (define *wasd-camera-transform* (new 'global 'transform)) @@ -290,6 +255,7 @@ |# (set! *display-profile* #t) + ; (set! *display-split-boxes* #t) ; (set! *display-level-border* #t) ; (set! *display-split-box-info* #t) @@ -298,16 +264,12 @@ (defun text-randomizer () (dotimes (i 10000) (let ((idx1 (rand-vu-int-count (-> *common-text* length)))) - (dotimes (j 20) (rand-vu)) + (dotimes (j 20) + (rand-vu)) (let ((idx2 (rand-vu-int-count (-> *common-text* length)))) (let ((temp (-> *common-text* data idx1 text))) (set! (-> *common-text* data idx1 text) (-> *common-text* data idx2 text)) - (set! (-> *common-text* data idx2 text) temp) - ) - ) - ) - ) - ) + (set! (-> *common-text* data idx2 text) temp)))))) (defun update-subdivide-settings! ((settings subdivide-settings) (math-cam math-camera) (idx int)) "Change the subdivide settings." @@ -316,7 +278,6 @@ (set! (-> settings meters 2) (meters 20.0)) (set! (-> settings meters 3) (meters 20.0)) (set! (-> settings meters 4) (meters 20.0)) - ; (set! (-> settings meters 0) (-> settings far idx)) ; (set! (-> settings meters 4) (-> settings close idx)) ; (let ((f0-3 (* 0.14285715 (- (-> settings meters 0) (-> settings meters 4))))) @@ -326,35 +287,26 @@ ; ) (let ((f0-7 (/ (-> math-cam inv-hmge-scale w) (-> math-cam d)))) (dotimes (v1-5 5) - (set! (-> settings dist v1-5) (* f0-7 (-> settings meters v1-5))) - ) - ) + (set! (-> settings dist v1-5) (* f0-7 (-> settings meters v1-5))))) (set! (-> *tfrag-work* frag-dists x) (- (-> settings meters 0))) (set! (-> *tfrag-work* frag-dists y) (- (-> settings meters 1))) (set! (-> *tfrag-work* frag-dists z) (- (-> settings meters 2))) (set! (-> *tfrag-work* frag-dists w) (- (-> settings meters 4))) 0 - (none) - ) + (none)) ;;(test-make-target) - (define *debug-load-level* #f) + (defun load-slot-1 ((lev symbol)) (load-state-want-levels (-> *load-state* want 0 name) lev) (set! *debug-load-level* lev) - (process-new-function - process - (lambda () - (suspend) - (suspend) - - (while (!= (-> *level* data 1 status) 'loaded) - (format 0 "waiting...~%") - (suspend) - ) - (load-state-want-display-level *debug-load-level* #t) - ) - ) - ) + (process-new-function process + (lambda () + (suspend) + (suspend) + (while (!= (-> *level* data 1 status) 'loaded) + (format 0 "waiting...~%") + (suspend)) + (load-state-want-display-level *debug-load-level* #t)))) diff --git a/goal_src/jak1/examples/debug-sprite.gc b/goal_src/jak1/examples/debug-sprite.gc index a2a08f113c..283fd1d5cf 100644 --- a/goal_src/jak1/examples/debug-sprite.gc +++ b/goal_src/jak1/examples/debug-sprite.gc @@ -1,12 +1,7 @@ - - (defun open-progress () - (if (not *target*) - (test-make-target)) + (if (not *target*) (test-make-target)) (activate-progress *dproc* (the progress-screen 0))) - - (defun debug-dump-hud-sprite ((count int)) (dotimes (i count) (let ((arr (the (inline-array sprite-vec-data-2d) (&-> *sprite-array-2d* data (* 1920 3))))) @@ -14,28 +9,16 @@ ;; first, the data (inspect (-> arr i)) ;; next, adgif - (let ((adg (-> *sprite-array-2d* adgif-data (+ 1920 i)))) - (inspect (-> adg tex0)) - (inspect (-> adg tex1)) - ) + (let ((adg (-> *sprite-array-2d* adgif-data (+ 1920 i)))) (inspect (-> adg tex0)) (inspect (-> adg tex1))) ;; matrix (when (nonzero? (-> arr i matrix)) - (inspect (the vector (-> *sprite-hvdf-data* data (-> arr i matrix)))) - ) + (inspect (the vector (-> *sprite-hvdf-data* data (-> arr i matrix))))) ;; vector (let ((vec (the (inline-array vector) (&+ (-> *sprite-array-2d* vec-data) (* 16 3 (+ i 1920)))))) (dotimes (j 3) (print (-> vec j)) - (format #t "~%") - ) - ) - (format #t "~%") - ) - ) - ) - + (format #t "~%"))) + (format #t "~%")))) ;; these are part-group-id-table entries for sprites that should work. -(define *test-sprite-ids* (new 'static 'boxed-array :type int32 :length 13 - 85 86 87 91 570 571 572 573 92 93 94 95 96) - ) \ No newline at end of file +(define *test-sprite-ids* (new 'static 'boxed-array :type int32 :length 13 85 86 87 91 570 571 572 573 92 93 94 95 96)) diff --git a/goal_src/jak1/game.gp b/goal_src/jak1/game.gp index eda8f9a4d5..4321fd2a8a 100644 --- a/goal_src/jak1/game.gp +++ b/goal_src/jak1/game.gp @@ -224,9 +224,9 @@ :tool 'build-level :out '(,(string-append "$OUT/obj/" name ".go"))))) -(defmacro build-actor (name) +(defmacro build-actor (name &key (gen-mesh #f)) (let* ((path (string-append "custom_assets/jak1/models/" name ".glb"))) - `(defstep :in ,path + `(defstep :in '(,path ,(symbol->string gen-mesh)) :tool 'build-actor :out '(,(string-append "$OUT/obj/" name "-ag.go"))))) @@ -1660,7 +1660,8 @@ ;; generate the art group for a custom actor. ;; requires a .glb model file in custom_assets/jak1/models -(build-actor "test-actor") +;; to also generate a collide-mesh, add :gen-mesh #t +(build-actor "test-actor" :gen-mesh #t) ;;;;;;;;;;;;;;;;;;;;; ;; Game Engine Code diff --git a/goal_src/jak1/kernel-defs.gc b/goal_src/jak1/kernel-defs.gc index e1c2455be0..4680bb6973 100644 --- a/goal_src/jak1/kernel-defs.gc +++ b/goal_src/jak1/kernel-defs.gc @@ -7,54 +7,103 @@ ;; fixed symbols (define-extern #f symbol) + (define-extern #t symbol) + (define-extern function type) + (define-extern basic type) + (define-extern string type) + (define-extern symbol type) + (define-extern type type) + (define-extern object type) + (define-extern link-block type) + (define-extern integer type) + (define-extern sinteger type) + (define-extern uinteger type) + (define-extern binteger type) + (define-extern int8 type) + (define-extern int16 type) + (define-extern int32 type) + (define-extern int64 type) + (define-extern int128 type) + (define-extern uint8 type) + (define-extern uint16 type) + (define-extern uint32 type) + (define-extern uint64 type) + (define-extern uint128 type) + (define-extern float type) + (define-extern process-tree type) + (define-extern process type) + (define-extern thread type) + (define-extern structure type) + (define-extern pair type) + (define-extern pointer type) + (define-extern number type) + (define-extern array type) + (define-extern vu-function type) + (define-extern connectable type) + (define-extern stack-frame type) + (define-extern file-stream type) + (define-extern kheap type) + (define-extern nothing (function none)) + (define-extern delete-basic (function basic none)) + (define-extern static symbol) + (define-extern global kheap) + (define-extern debug kheap) -(define-extern loading-level kheap) ;; not a kheap at boot + +(define-extern loading-level kheap) ;; not a kheap at boot + (define-extern loading-package kheap) ;; not a kheap at boot + (define-extern process-level-heap kheap) ;; not a kheap at boot + (define-extern stack symbol) + (define-extern scratch symbol) + (define-extern *scratch-top* pointer) + (define-extern zero-func (function int)) + ;; asize-of-basic-func - has a bug ;; copy-basic-func - has a bug ;; level - unknown type @@ -67,12 +116,11 @@ (defenum kmalloc-flags :bitfield #t - (align-16 4) - (align-64 6) - (align-256 8) - (memset 12) - (top 13) - ) + (align-16 4) + (align-64 6) + (align-256 8) + (memset 12) + (top 13)) (defenum link-flag :bitfield #t @@ -82,24 +130,36 @@ (execute-login 2) (print-login 3) (force-debug 4) - (fast-link 5) - ) - + (fast-link 5)) (define-extern string->symbol (function string symbol)) + (define-extern print (function object object)) + (define-extern inspect (function object object)) + (define-extern load (function string kheap object)) + (define-extern loado (function string kheap object)) + (define-extern unload (function string none)) + (define-extern _format (function _varargs_ object)) + (define-extern malloc (function symbol int pointer)) + (define-extern kmalloc (function kheap int kmalloc-flags string pointer)) + (define-extern new-dynamic-structure (function symbol type int structure)) + (define-extern method-set! (function type int object none)) ;; may actually return function. + (define-extern link (function pointer pointer int kheap int pointer)) + (define-extern dgo-load (function string kheap link-flag int none)) + (define-extern link-begin (function pointer (pointer uint8) int kheap link-flag int)) + (define-extern link-resume (function int)) (defenum mc-status-code @@ -121,8 +181,7 @@ (no-space 14) (bad-version 15) (no-process 16) - (no-auto-save 17) - ) + (no-auto-save 17)) (defenum language-enum :type int64 @@ -132,26 +191,37 @@ (spanish) (italian) (japanese) - (uk-english) - ) + (uk-english)) (define-extern mc-run (function none)) + (define-extern mc-format (function int mc-status-code)) + (define-extern mc-unformat (function int mc-status-code)) + (define-extern mc-create-file (function int uint mc-status-code)) + (define-extern mc-save (function int int pointer int mc-status-code)) + (define-extern mc-load (function int int pointer mc-status-code)) + (declare-type mc-slot-info structure) + (define-extern mc-sync (function int)) + (define-extern mc-get-slot-info (function int mc-slot-info none)) (define-extern mc-check-result (function int)) + ;; mc-makefile (define-extern kset-language (function language-enum int)) (define-extern *debug-segment* symbol) + (define-extern *enable-method-set* int) + (define-extern *boot-video-mode* int) + (define-extern *deci-count* int) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -160,62 +230,96 @@ ;; *listener-link-block* (define-extern *listener-function* (function object)) + ;; kernel-dispatcher ;; kernel-packages (define-extern *print-column* binteger) + ;; *print-column* ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; kmachine - InitMachineScheme ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (define-extern put-display-env (function object none)) + (define-extern syncv (function int int)) + (define-extern sync-path (function int int int)) + (define-extern reset-path (function none)) + (define-extern reset-graph (function int int int int none)) (define-extern dma-sync (function pointer int int int)) + ;; gs-put-imr ;; gs-get-imr (define-extern gs-store-image (function object object object)) + (define-extern flush-cache (function int none)) + (declare-type cpad-info basic) + (declare-type discord-info structure) + (define-extern cpad-open (function cpad-info int cpad-info)) + (define-extern cpad-get-data (function cpad-info cpad-info)) + (define-extern install-handler (function int function int)) ;; check return val + ;; install-debug-handler (defconstant SCE_SEEK_SET 0) + (defconstant SCE_SEEK_CUR 1) + (defconstant SCE_SEEK_END 2) + (define-extern file-stream-open (function file-stream basic basic file-stream)) + (define-extern file-stream-close (function file-stream file-stream)) + (define-extern file-stream-length (function file-stream int)) + (define-extern file-stream-seek (function file-stream int int int)) + (define-extern file-stream-read (function file-stream pointer int int)) + (define-extern file-stream-write (function file-stream pointer uint uint)) (defconstant GAME_TERRITORY_SCEA 0) + (defconstant GAME_TERRITORY_SCEE 1) + (defconstant GAME_TERRITORY_SCEI 2) (define-extern scf-get-language (function language-enum)) + (declare-type scf-time structure) + (define-extern scf-get-time (function scf-time none)) + (define-extern scf-get-aspect (function uint)) + (define-extern scf-get-volume (function int)) + (define-extern scf-get-territory (function int)) ;; not actually a scf function... + (define-extern scf-get-timeout (function int)) + (define-extern scf-get-inactive-timeout (function int)) + ;; dma-to-iop (define-extern kernel-shutdown (function none)) + (define-extern aybabtu (function int int)) ;; this is just sceCdMmode + ;; *stack-top* ;; *stack-base* ;; *stack-size* (define-extern *kernel-boot-message* symbol) + ;; *kernel-boot-mode* ;; *kernel-boot-level* @@ -224,8 +328,8 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-extern rpc-call (function int uint uint uint int uint int uint)) -(define-extern rpc-busy? (function int uint)) +(define-extern rpc-busy? (function int uint)) ;;;;;;;;;;;;;;;;;;;;;;;; ;;;; kernel types @@ -237,66 +341,64 @@ ;; So these deftypes generate no code. (defenum process-mask - :bitfield #t :type uint32 - (execute 0) ;; 1 - (draw 1) ;; 2 - (pause 2) ;; 4 - (menu 3) ;; 8 - (progress 4) ;; 16 - (actor-pause 5) ;; 32 - (sleep 6) ;; 64 - (sleep-code 7) ;; 128 - (process-tree 8) ;; 256 not an actual process, just a "tree node" for organization - (heap-shrunk 9) ;; 512 - (going 10) ;; 1024 - (movie 11) ;; 2048 - (movie-subject 12) ;; 4096 - (target 13) ;; 8192 - (sidekick 14) ;; 16384 - (crate 15) ;; 32768 - (collectable 16) ;; 65536 - (enemy 17) ;; 131072 - (camera 18) ;; 262144 - (platform 19) ;; 524288 - (ambient 20) ;; 1048576 - (entity 21) ;; 2097152 - (projectile 22) ;; 4194304 - (attackable 23) ;; 8388608 - (death 24) ;; 16777216 - ) + :bitfield #t + :type uint32 + (execute 0) ;; 1 + (draw 1) ;; 2 + (pause 2) ;; 4 + (menu 3) ;; 8 + (progress 4) ;; 16 + (actor-pause 5) ;; 32 + (sleep 6) ;; 64 + (sleep-code 7) ;; 128 + (process-tree 8) ;; 256 not an actual process, just a "tree node" for organization + (heap-shrunk 9) ;; 512 + (going 10) ;; 1024 + (movie 11) ;; 2048 + (movie-subject 12) ;; 4096 + (target 13) ;; 8192 + (sidekick 14) ;; 16384 + (crate 15) ;; 32768 + (collectable 16) ;; 65536 + (enemy 17) ;; 131072 + (camera 18) ;; 262144 + (platform 19) ;; 524288 + (ambient 20) ;; 1048576 + (entity 21) ;; 2097152 + (projectile 22) ;; 4194304 + (attackable 23) ;; 8388608 + (death 24) ;; 16777216 + ) (declare-type process basic) + (declare-type entity-actor basic) + (deftype process-tree (basic) - ((name basic :offset-assert 4) - (mask process-mask :offset-assert 8) - (parent (pointer process-tree) :offset-assert 12) - (brother (pointer process-tree) :offset-assert 16) - (child (pointer process-tree) :offset-assert 20) + ((name basic :offset-assert 4) + (mask process-mask :offset-assert 8) + (parent (pointer process-tree) :offset-assert 12) + (brother (pointer process-tree) :offset-assert 16) + (child (pointer process-tree) :offset-assert 20) (ppointer (pointer process) :offset-assert 24) - (self process-tree :offset-assert 28) - ) - + (self process-tree :offset-assert 28)) (:methods (new (symbol type basic) _type_) (activate (_type_ process-tree basic pointer) process-tree) ;; 9 - (deactivate (_type_) none) ;; 10 - (init-from-entity! (_type_ entity-actor) none) ;; 11 + (deactivate (_type_) none) ;; 10 + (init-from-entity! (_type_ entity-actor) none) ;; 11 (run-logic? (_type_) symbol) ;; 12 (process-tree-method-13 () none) ;; 13 ) - :size-assert #x20 :method-count-assert 14 :no-runtime-type ;; already defined by kscheme. Don't do it again. ) - (deftype stack-frame (basic) ((name symbol :offset 4) (next stack-frame :offset 8) ;; which way does this point? ) - :size-assert #xc :method-count-assert 9 :flag-assert #x90000000c @@ -307,17 +409,17 @@ ;;;; PC Port functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defenum pc-renderer-tree-type - (none 0) + (none 0) (tfrag3 1) - (tie3 2) + (tie3 2) (invalid)) (defenum pc-collision-mode - (none 0) - (mode 1) - (event 2) + (none 0) + (mode 1) + (event 2) (material 3) - (skip 4) + (skip 4) (skiphide 5)) (defenum pc-gfx-hack @@ -325,63 +427,108 @@ ;; TODO - make a common kernel-defs (define-extern __read-ee-timer (function uint)) + (define-extern __mem-move (function pointer pointer uint none)) + (define-extern __send-gfx-dma-chain (function object object none)) + (define-extern __pc-texture-upload-now (function object object none)) + (define-extern __pc-texture-relocate (function object object object none)) + (define-extern __pc-get-mips2c (function string function)) + (define-extern __pc-set-levels (function string string none)) ;; Input Related Functions (define-extern pc-get-controller-count (function int)) + (define-extern pc-get-controller-name (function int string symbol)) + (deftype bind-assignment-info (structure) - ((port int32) - (device-type int32) - (for-buttons? symbol) - (input-idx int32) + ((port int32) + (device-type int32) + (for-buttons? symbol) + (input-idx int32) (analog-min-range? symbol))) + (define-extern pc-get-current-bind (function bind-assignment-info string symbol)) + (define-extern pc-waiting-for-bind? (function symbol)) + (define-extern pc-set-waiting-for-bind! (function int symbol symbol int none)) + (define-extern pc-stop-waiting-for-bind! (function none)) + (define-extern pc-set-controller! (function int int none)) + (define-extern pc-get-keyboard-enabled? (function symbol)) + (define-extern pc-set-keyboard-enabled! (function symbol none)) + (define-extern pc-set-mouse-options! (function symbol symbol symbol none)) + (define-extern pc-set-mouse-camera-sens! (function float float none)) + (define-extern pc-current-controller-has-led? (function symbol)) + (define-extern pc-current-controller-has-rumble? (function symbol)) + (define-extern pc-set-controller-led! (function int int int int none)) + (define-extern pc-ignore-background-controller-events! (function symbol none)) + (define-extern pc-reset-bindings-to-defaults! (function int int none)) + (define-extern pc-set-auto-hide-cursor! (function symbol none)) ;; Display Related Functions (define-extern pc-get-display-mode (function symbol)) + (define-extern pc-get-active-display-size (function (pointer int64) (pointer int64) none)) + (define-extern pc-get-active-display-refresh-rate (function int)) + (define-extern pc-get-display-count (function int)) + (define-extern pc-get-display-name (function int string symbol)) + (define-extern pc-get-os (function symbol)) + (define-extern pc-get-window-size (function (pointer int64) (pointer int64) none)) + (define-extern pc-get-window-scale (function (pointer float) (pointer float) none)) + (define-extern pc-set-window-size (function int int none)) + (define-extern pc-set-fullscreen-display (function int none)) + (define-extern pc-set-display-mode (function symbol none)) + (define-extern pc-get-num-resolutions (function int)) + (define-extern pc-get-resolution (function int (pointer int64) (pointer int64) none)) (define-extern pc-set-frame-rate (function int none)) + (define-extern pc-set-vsync (function symbol none)) + (define-extern pc-renderer-tree-set-lod (function pc-renderer-tree-type int none)) + (define-extern pc-set-letterbox (function int int none)) + (define-extern pc-set-collision (function symbol none)) + (define-extern pc-set-collision-wireframe (function symbol none)) + (define-extern pc-get-collision-mask (function pc-collision-mode int symbol)) + (define-extern pc-set-collision-mask (function pc-collision-mode int symbol none)) + (define-extern pc-set-collision-mode (function pc-collision-mode none)) + (define-extern pc-discord-rpc-update (function discord-info none)) + (define-extern pc-discord-rpc-set (function int none)) @@ -396,37 +543,50 @@ (define-extern play-sound-file (function string int none)) (define-extern stop-sound-file (function none)) (define-extern pc-filepath-exists? (function string symbol)) + (define-extern pc-mkdir-file-path (function string none)) + (define-extern pc-sound-set-flava-hack (function int none)) + (define-extern pc-sound-set-fade-hack (function int none)) + (define-extern pc-set-window-lock (function symbol none)) + (define-extern pc-set-game-resolution (function int int none)) + (define-extern pc-set-msaa (function int none)) + (define-extern pc-set-gfx-hack (function pc-gfx-hack symbol none)) + (define-extern pc-get-unix-timestamp (function int)) + (define-extern pc-filter-debug-string? (function string float symbol)) + (define-extern pc-screen-shot (function none)) + (declare-type screen-shot-settings structure) + (define-extern pc-register-screen-shot-settings (function screen-shot-settings none)) (defenum pc-prof-event (begin 0) (end 1) - (instant 2) - ) + (instant 2)) (define-extern pc-prof (function string pc-prof-event none)) (defmacro get-user () - `(quote ,*user*) - ) + `(quote ,*user*)) + (defconstant *user* (get-user)) (define-extern pc-rand (function int)) ;; Constants generated within the C++ runtime (define-extern *pc-user-dir-base-path* string) + (define-extern *pc-settings-folder* string) + (define-extern *pc-settings-built-sha* string) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/goal_src/jak1/kernel/dgo-h.gc b/goal_src/jak1/kernel/dgo-h.gc index 02d89790ba..52d91ab132 100644 --- a/goal_src/jak1/kernel/dgo-h.gc +++ b/goal_src/jak1/kernel/dgo-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "KERNEL.CGO") - (require "kernel-defs.gc") -;; name: dgo-h.gc -;; name in dgo: dgo-h -;; dgos: KERNEL - ;; I suspect that these are unused, and were for an older version of DGO. ;; All DGO stuff is handled on the IOP. @@ -16,17 +11,13 @@ ;; seems to be unused, and not accurate to a DGO file anyway. ;; all DGO stuff is handled on the IOP. (deftype dgo-entry (structure) - ((offset uint32) - (length uint32) - ) - ) + ((offset uint32) + (length uint32))) ;; seems to be unused, and not accurate to a DGO file anyway. ;; all DGO stuff is handled on the IOP. (deftype dgo-file (basic) - ((num-go-files uint32) - (total-length uint32) - (rsvd uint32) - (data uint8 :dynamic) - ) - ) + ((num-go-files uint32) + (total-length uint32) + (rsvd uint32) + (data uint8 :dynamic))) diff --git a/goal_src/jak1/kernel/gcommon.gc b/goal_src/jak1/kernel/gcommon.gc index 7f98822946..5a3d3eeba1 100644 --- a/goal_src/jak1/kernel/gcommon.gc +++ b/goal_src/jak1/kernel/gcommon.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "KERNEL.CGO") - (require "compiler-setup.gc") (require "kernel-defs.gc") -;; name: gcommon.gc -;; name in dgo: gcommon -;; dgos: KERNEL - ;; gcommon is the first file compiled and loaded. ;; it implements some features of built-in types ;; and language constants @@ -22,6 +17,7 @@ ;; whether we're allowed to use more memory than the original game or not (defglobalconstant BIG_MEMORY #t) + (defglobalconstant PC_BIG_MEMORY (and PC_PORT BIG_MEMORY)) ;; redirects access to EE memory mapped registers through get-vm-ptr to valid addresses that @@ -47,7 +43,9 @@ ;; GOAL boxed offsets use the lower three bits to indicate if they are ;; an integer (binteger), a pair, or a strucutre with type info (basic) (defconstant BINTEGER_OFFSET 0) + (defconstant PAIR_OFFSET 2) + (defconstant BASIC_OFFSET 4) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -56,20 +54,13 @@ (defmacro symbol->string (sym) "Convert a symbol to a goal string." - `(-> (the-as (pointer string) (+ SYM_TO_STRING_OFFSET (the-as int ,sym)))) - ) + `(-> (the-as (pointer string) (+ SYM_TO_STRING_OFFSET (the-as int ,sym))))) (defmacro get-vm-ptr (ptr) "Turn an EE register address into a valid PS2 VM address" `(#cond - (USE_VM - (vm-ptr ,ptr) - ) - (#t - ,ptr - ) - ) - ) + (USE_VM (vm-ptr ,ptr)) + (#t ,ptr))) ;; DECOMP BEGINS @@ -84,37 +75,31 @@ (defun identity ((x object)) "Function which returns its input. The first function of the game! This will not preserve the upper 64-bits of a 128-bit value." - x - ) + x) (defun 1/ ((x float)) "Reciprocal floating point" (declare (inline)) - (/ 1. x) - ) + (/ 1. x)) (defun + ((x int) (y int)) "Compute the sum of two integers" - (+ x y) - ) + (+ x y)) (defun - ((x int) (y int)) "Compute the difference of two integers" - (- x y) - ) + (- x y)) (defun * ((x int) (y int)) "Compute the product of two integers" ;; TODO - verify that this matches the PS2 exactly. ;; Uses mult (three operand form) in MIPS - (* x y) - ) + (* x y)) (defun / ((x int) (y int)) "Compute the quotient of two integers" ;; TODO - verify this matches the PS2 exactly - (/ x y) - ) + (/ x y)) (defun ash ((value int) (shift-amount int)) "Arithmetic shift value by shift-amount. @@ -122,70 +107,52 @@ " ;; OpenGOAL does not support ash in the compiler, so we implement it here as an inline function. (declare (inline)) - (if (> shift-amount 0) - (shl value shift-amount) - (sar value (- shift-amount)) - ) - ) + (if (> shift-amount 0) (shl value shift-amount) (sar value (- shift-amount)))) (defun mod ((a int) (b int)) "Compute mod. It does what you expect for positive numbers. For negative numbers, nobody knows what to expect. This is a 32-bit operation. It uses an idiv on x86 and gets the remainder." - ;; The original implementation is div, mfhi - (mod a b) - ) - + (mod a b)) (defun rem ((a int) (b int)) "Compute remainder (32-bit). It is identical to mod. It uses a idiv and gets the remainder" - ;; The original implementation is div, mfhi - (mod a b) - ) + (mod a b)) (defun abs ((a int)) "Take the absolute value of an integer" - (declare (inline)) - ;; OpenGOAL doesn't support abs, so we implement it here. (if (> a 0) ;; condition is "a > 0" - a ;; true case, return a - (- a) ;; false case, return -a. (- a) is like (- 0 a) - ) - ) + a ;; true case, return a + (- a) ;; false case, return -a. (- a) is like (- 0 a) + )) (defun min ((a int) (b int)) "Compute minimum." - ;; The original implementation was inline assembly, to take advantage of branch delay slots: ;; (or v0 a0 r0) ;; move first arg to output (case of second arg being min) ;; (or v1 a1 r0) ;; move second arg to v1 (likely strange coloring) ;; (slt a0 v0 v1) ;; compare args ;; (movz v0 v1 a0) ;; conditional move the second arg to v0 if it's the minimum - ;; OpenGOAL doesn't support min, so we implement it here. (declare (inline)) - (if (> a b) b a) - ) + (if (> a b) b a)) (defun max ((a int) (b int)) "Compute maximum." (declare (inline)) ;; OpenGOAL doesn't support max so we implement it here. - (if (> a b) a b) - ) + (if (> a b) a b)) (defun logior ((a int) (b int)) "Compute the bitwise inclusive-or" - (logior a b) - ) + (logior a b)) (defun logand ((a int) (b int)) "Compute the bitwise and" - (logand a b) - ) + (logand a b)) (defun lognor ((a int) (b int)) "Compute not or." @@ -193,28 +160,23 @@ ;; the OpenGOAL x86 compiler therefore doesn't have a nor operation, ;; so lognor is implemented by this inline function instead. (declare (inline)) - (lognot (logior a b)) - ) + (lognot (logior a b))) (defun logxor ((a int) (b int)) "Compute the logical exclusive-or" - (logxor a b) - ) + (logxor a b)) (defun lognot ((a int)) "Compute the bitwise not" - (lognot a) - ) + (lognot a)) (defun false-func () "Return false" - '#f - ) + '#f) (defun true-func () "Return true" - '#t - ) + '#t) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; format @@ -239,8 +201,7 @@ ((x float :offset 0) (y float :offset 32) (z float :offset 64) - (w float :offset 96)) - ) + (w float :offset 96))) (defmethod inspect ((this vec4s)) (format #t "[~8x] ~A~%" this 'vec4s) @@ -248,49 +209,36 @@ (format #t "~Ty: ~f~%" (-> this y)) (format #t "~Tz: ~f~%" (-> this z)) (format #t "~Tw: ~f~%" (-> this w)) - this - ) + this) (defmethod print ((this vec4s)) - (format #t "#" - (-> this x) - (-> this y) - (-> this z) - (-> this w) - this) - this - ) + (format #t "#" (-> this x) (-> this y) (-> this z) (-> this w) this) + this) (defmacro print128 (value &key (stream #t)) "Print a 128-bit value" `(let ((temp (new 'stack-no-clear 'array 'uint64 2))) - (set! (-> (the (pointer uint128) temp)) ,value) - (format ,stream "#x~16X~16X" (-> temp 1) (-> temp 0)) - ) - ) + (set! (-> (the (pointer uint128) temp)) ,value) + (format ,stream "#x~16X~16X" (-> temp 1) (-> temp 0)))) (defmacro make-u128 (upper lower) "Make a i128 from two 64-bit values." `(rlet ((result :class i128) - (upper-xmm :class i128) - (lower-xmm :class i128)) - (.mov upper-xmm ,upper) - (.mov lower-xmm ,lower) - (.pcpyld result upper-xmm lower-xmm) - (the-as uint result) - ) - ) + (upper-xmm :class i128) + (lower-xmm :class i128)) + (.mov upper-xmm ,upper) + (.mov lower-xmm ,lower) + (.pcpyld result upper-xmm lower-xmm) + (the-as uint result))) ;; A "boxed float" type. Simply a float with type information. (deftype bfloat (basic) - ((data float)) - ) + ((data float))) (defmethod print ((this bfloat)) "Override the default print method to print a bfloat like a normal float" (format #t "~f" (-> this data)) - this - ) + this) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Type System @@ -303,25 +251,18 @@ ;; as other basics don't require 16-byte aligned sizes. ;; - maybe the 16-byte aligned size was a requirement if types were stored in the symbol table? ;; - maybe types used to be a little bit larger, they made an effort to pack fields tightly. - (logand #xfffffff0 (+ 15 (* 4 (-> this allocated-length)) 28)) - ) + (logand #xfffffff0 (+ 15 (* 4 (-> this allocated-length)) 28))) (defun basic-type? ((this basic) (parent-type type)) "Is this of type parent-type? Note: this will return #f if you put a parent-type of object. Only use this with types that are fully defined." (let ((obj-type (-> this type)) - (end-type object) - ) + (end-type object)) (until (= obj-type end-type) - (if (= obj-type parent-type) - (return #t) - ) - (set! obj-type (-> obj-type parent)) - ) - ) - #f - ) + (if (= obj-type parent-type) (return #t)) + (set! obj-type (-> obj-type parent)))) + #f) (defun type-type? ((child-type type) (parent-type type)) "Is child-type a child (or equal to) parent-type? @@ -329,14 +270,9 @@ but in this case it will return #f." (let ((end-type object)) (until (or (= child-type end-type) (zero? child-type)) - (if (= child-type parent-type) - (return #t) - ) - (set! child-type (-> child-type parent)) - ) - ) - #f - ) + (if (= child-type parent-type) (return #t)) + (set! child-type (-> child-type parent)))) + #f) (defun find-parent-method ((child-type type) (method-id int)) "Search the type tree for a parent type with a different method @@ -347,32 +283,21 @@ (local-vars (current-method function)) (let ((original-method (-> child-type method-table method-id))) (until (!= current-method original-method) - (if (= child-type object) - (return nothing) - ) + (if (= child-type object) (return nothing)) (set! child-type (-> child-type parent)) (set! current-method (-> child-type method-table method-id)) - (if (zero? current-method) - (return nothing) - ) - ) - ) - current-method - ) + (if (zero? current-method) (return nothing)))) + current-method) (defmacro call-parent-method (&rest args) "Find the first different implementation of the current method in a parent type and call it with these arguments." - `((the (current-method-function-type) (find-parent-method (current-method-type) (current-method-id))) - ,@args) - ) + `((the (current-method-function-type) (find-parent-method (current-method-type) (current-method-id))) ,@args)) (defmacro as-type (this type) "Macro to _safely_ convert to a different type, returning #f if the type doesn't match. Does a runtime type check so it's expensive." - `(if (and (nonzero? ,this) (type-type? (-> ,this type) ,type)) - (the-as ,type ,this) - ) - ) + `(if (and (nonzero? ,this) (type-type? (-> ,this type) ,type)) (the-as ,type ,this))) + ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; pairs, lists, etc ;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -382,60 +307,36 @@ (dotimes (count index) (nop!) (nop!) - (set! lst (cdr lst)) - ) - (car lst) - ) + (set! lst (cdr lst))) + (car lst)) (defmethod length ((this pair)) "Get the length of a proper list" (local-vars (result int)) (cond - ((null? this) - (set! result 0) - ) + ((null? this) (set! result 0)) (else (let ((iter (cdr this))) (set! result 1) (while (and (not (null? iter)) (pair? iter)) (+! result 1) - (set! iter (cdr iter)) - ) - ) - ) - ) - result - ) - + (set! iter (cdr iter)))))) + result) (defmethod asize-of ((this pair)) "Get the size in memory of pair." - (the-as int (-> pair size)) - ) + (the-as int (-> pair size))) (defun last ((lst object)) "Get the last element in a proper list" - (let ((iter lst)) - (while (not (null? (cdr iter))) - (nop!) - (nop!) - (set! iter (cdr iter)) - ) - iter - ) - ) + (let ((iter lst)) (while (not (null? (cdr iter))) (nop!) (nop!) (set! iter (cdr iter))) iter)) (defun member ((this object) (lst object)) "Is this in the list lst? Returns pair with this as its car, or #f if not found." (let ((iter lst)) (while (not (or (null? iter) (= (car iter) this))) - (set! iter (cdr iter)) - ) - (if (not (null? iter)) - iter - ) - ) - ) + (set! iter (cdr iter))) + (if (not (null? iter)) iter))) ;; need to forward declare this, we haven't loaded the string library yet. (define-extern name= (function basic basic symbol)) @@ -443,62 +344,34 @@ (defun nmember ((this basic) (lst object)) "Is this in the list lst? Check with the name= function." (while (not (or (= lst '()) (name= (the-as basic (car lst)) this))) - (set! lst (cdr lst)) - ) - (if (!= lst '()) - lst - ) - ) + (set! lst (cdr lst))) + (if (!= lst '()) lst)) (defun assoc ((item object) (alist object)) "Is there an entry with key item in the association list alist? Returns the key-value pair." (let ((iter alist)) (while (not (or (null? iter) (= (car (car iter)) item))) - (set! iter (cdr iter)) - ) - (if (not (null? iter)) - (car iter) - ) - ) - ) - + (set! iter (cdr iter))) + (if (not (null? iter)) (car iter)))) (defun assoce ((item object) (alist object)) "Is there an entry with key item in the association list alist? Returns the key-value pair. Treats a key of 'else like an else case" (let ((iter alist)) - (while (not (or (null? iter) - (= (car (car iter)) item) - (= (car (car iter)) 'else))) - (set! iter (cdr iter)) - ) - (if (not (null? iter)) - (car iter) - ) - ) - ) + (while (not (or (null? iter) (= (car (car iter)) item) (= (car (car iter)) 'else))) + (set! iter (cdr iter))) + (if (not (null? iter)) (car iter)))) (defun nassoc ((item-name string) (alist object)) "Is there an entry named item-name in the association list alist? Checks name with nmember or name= so you can have multiple keys. Returns the ([key|(key..)] . value) pair." (while (not (or (null? alist) - (let ((key (car (car alist)))) - (if (pair? key) - (nmember item-name key) - (name= (the-as basic key) item-name) - ) - ) - ) - ) - (set! alist (cdr alist)) - ) - (if (not (null? alist)) - (car alist) - ) - ) + (let ((key (car (car alist)))) (if (pair? key) (nmember item-name key) (name= (the-as basic key) item-name))))) + (set! alist (cdr alist))) + (if (not (null? alist)) (car alist))) (defun nassoce ((item-name string) (alist object)) "Is there an entry named item-name in the association list alist? @@ -506,102 +379,57 @@ Allows else as a single key that always matches" (while (not (or (null? alist) (let ((key (car (car alist)))) - (if (pair? key) - (nmember item-name key) - (or - (name= (the-as basic key) item-name) - (= key 'else) - ) - ) - ) - ) - ) - (set! alist (cdr alist)) - ) - (if (not (null? alist)) - (car alist) - ) - ) + (if (pair? key) (nmember item-name key) (or (name= (the-as basic key) item-name) (= key 'else)))))) + (set! alist (cdr alist))) + (if (not (null? alist)) (car alist))) (defun append! ((front object) (back object)) "Append back to front, return the combined list." (cond ((null? front) ;; can't append to '(), just return back. - back - ) + back) (else (let ((iter front)) (while (not (null? (cdr iter))) (nop!) (nop!) - (set! iter (cdr iter)) - ) - (if (not (null? iter)) - (set! (cdr iter) back) - ) - ) - front - ) - ) - ) + (set! iter (cdr iter))) + (if (not (null? iter)) (set! (cdr iter) back))) + front))) (defun delete! ((item object) (lst object)) "Remove the first occurance of item from lst (where item is actual a pair in the list)" (the-as pair (cond - ((= item (car lst)) - (cdr lst) - ) + ((= item (car lst)) (cdr lst)) (else (let ((iter-prev lst) - (iter (cdr lst)) - ) + (iter (cdr lst))) (while (not (or (null? iter) (= (car iter) item))) (set! iter-prev iter) - (set! iter (cdr iter)) - ) - (if (not (null? iter)) - (set! (cdr iter-prev) (cdr iter)) - ) - ) - lst - ) - ) - ) - ) + (set! iter (cdr iter))) + (if (not (null? iter)) (set! (cdr iter-prev) (cdr iter)))) + lst)))) (defun delete-car! ((item object) (lst object)) "Remove the first first occurance of an element from the list where (car elt) is item." (cond - ((= item (car (car lst))) - (cdr lst) - ) + ((= item (car (car lst))) (cdr lst)) (else (let ((iter-prev lst) - (iter (cdr lst)) - ) + (iter (cdr lst))) (while (not (or (null? iter) (= (car (car iter)) item))) (set! iter-prev iter) - (set! iter (cdr iter)) - ) - (if (not (null? iter)) - (set! (cdr iter-prev) (cdr iter)) - ) - ) - lst - ) - ) - ) + (set! iter (cdr iter))) + (if (not (null? iter)) (set! (cdr iter-prev) (cdr iter)))) + lst))) (defun insert-cons! ((kv object) (alist object)) "Update an association list to have the given (key . value) pair kv. If it already exists in the list, remove it. DANGER: this function allocates memory on the global heap." - (let ((updated-list (delete-car! (car kv) alist))) - (cons kv updated-list) - ) - ) + (let ((updated-list (delete-car! (car kv) alist))) (cons kv updated-list))) (defun sort ((lst pair) (compare-func (function object object object))) "Sort a list, using compare-func to compare elements. @@ -625,29 +453,18 @@ (while (not (or (null? (cdr iter)) (not (pair? (cdr iter))))) (let* ((first-elt (car iter)) (second-elt (car (cdr iter))) - (compare-result (compare-func first-elt second-elt)) - ) + (compare-result (compare-func first-elt second-elt))) ;; the compare function can return a few possible things. ;; we assume "unsorted" if compare-result is #f explicitly, or if it positive. ;; HOWEVER, '#t itself is positive. So if we get #t, we assume sorted. ;; there is possibly an ambiguity, if you happen to return a positive integer that ;; happens to be a pointer to #t, - (when (and - (or (not compare-result) (> (the-as int compare-result) 0)) - (!= compare-result #t) - ) + (when (and (or (not compare-result) (> (the-as int compare-result) 0)) (!= compare-result #t)) (+! unsorted-count 1) (set! (car iter) second-elt) - (set! (car (cdr iter)) first-elt) - ) - ) - (set! iter (cdr iter)) - ) - ) - ) - ) - lst - ) + (set! (car (cdr iter)) first-elt))) + (set! iter (cdr iter)))))) + lst) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; inline-array-class @@ -663,52 +480,33 @@ (allocated-length int32) ;; this is 16-byte aligned. ;; children of inline-array-class should define their own data which overlays this one. - (_data uint8 :dynamic :offset 16) - ) - + (_data uint8 :dynamic :offset 16)) (:methods - (new (symbol type int) _type_)) - ) - + (new (symbol type int) _type_))) (defmethod new inline-array-class ((allocation symbol) (type-to-make type) (len int)) "Allocate a new inline-array-class object with room for the given number of objects. Both length and allocated-length are set to the given size" (local-vars (this inline-array-class)) (set! this - (object-new allocation type-to-make + (object-new allocation + type-to-make ;; size is the normal type's size + room for elements. - (the-as int (+ (-> type-to-make size) - (* (the-as uint len) (-> type-to-make heap-base)) - ) - ) - ) - ) + (the-as int (+ (-> type-to-make size) (* (the-as uint len) (-> type-to-make heap-base)))))) ;; don't initialize if allocation failed. (when (nonzero? this) (set! (-> this length) len) - (set! (-> this allocated-length) len) - ) - this - ) - + (set! (-> this allocated-length) len)) + this) (defmethod length ((this inline-array-class)) "Get the length of the inline-array-class. This is the length field, not how much storage there is" - (-> this length) - ) + (-> this length)) (defmethod asize-of ((this inline-array-class)) "Get the size in memory of an inline-array-class." - (the-as int - (+ (-> this type size) - (the-as uint (* (-> this allocated-length) - (the-as int (-> this type heap-base))) - ) - ) - ) - ) + (the-as int (+ (-> this type size) (the-as uint (* (-> this allocated-length) (the-as int (-> this type heap-base))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; array @@ -727,154 +525,66 @@ The content should either be a numeric type (child of number) or the content should be a reference (will get 4-bytes for a pointer)" (local-vars (this array)) - (set! this (object-new - allocation - type-to-make - (the-as int (+ (-> type-to-make size) - (* len (if (type-type? content-type number) - ;; if content is a number, use its size - (-> content-type size) - ;; otherwise, pointer size - 4 - ) - ) - )) - )) + (set! this + (object-new allocation + type-to-make + (the-as int + (+ (-> type-to-make size) + (* len + (if (type-type? content-type number) + ;; if content is a number, use its size + (-> content-type size) + ;; otherwise, pointer size + 4)))))) (set! (-> this allocated-length) len) (set! (-> this length) len) (set! (-> this content-type) content-type) - this - ) - + this) (defmethod print ((this array)) "Print array." (format #t "#(") (cond - ((type-type? (-> this content-type) integer) - (case (-> this content-type symbol) - (('int32) - (dotimes (s5-0 (-> this length)) - (format #t (if (zero? s5-0) - "~D" - " ~D" - ) - (-> (the-as (array int32) this) s5-0) - ) - ) - ) - (('uint32) - (dotimes (s5-1 (-> this length)) - (format #t (if (zero? s5-1) - "~D" - " ~D" - ) - (-> (the-as (array uint32) this) s5-1) - ) - ) - ) - (('int64) - (dotimes (s5-2 (-> this length)) - (format #t (if (zero? s5-2) - "~D" - " ~D" - ) - (-> (the-as (array int64) this) s5-2) - ) - ) - ) - (('uint64) - (dotimes (s5-3 (-> this length)) - (format #t (if (zero? s5-3) - "#x~X" - " #x~X" - ) - (-> (the-as (array uint64) this) s5-3) - ) - ) - ) - (('int8) - (dotimes (s5-4 (-> this length)) - (format #t (if (zero? s5-4) - "~D" - " ~D" - ) - (-> (the-as (array int8) this) s5-4) - ) - ) - ) - (('uint8) - (dotimes (s5-5 (-> this length)) - (format #t (if (zero? s5-5) - "~D" - " ~D" - ) - (-> (the-as (array uint8) this) s5-5) - ) - ) - ) - (('int16) - (dotimes (s5-6 (-> this length)) - (format #t (if (zero? s5-6) - "~D" - " ~D" - ) - (-> (the-as (array int16) this) s5-6) - ) - ) - ) - (('uint16) - (dotimes (s5-7 (-> this length)) - (format #t (if (zero? s5-7) - "~D" - " ~D" - ) - (-> (the-as (array uint16) this) s5-7) - ) - ) - ) - (('uint128 'int128) - (dotimes (s5-8 (-> this length)) - (format #t (if (zero? s5-8) - "#x~X" - " #x~X" - ) - (-> (the-as (array uint128) this) s5-8) - ) - ) - ) - (else - (dotimes (s5-9 (-> this length)) - (format #t (if (zero? s5-9) - "~D" - " ~D" - ) - (-> (the-as (array int32) this) s5-9) - ) - ) - ) - ) - ) - ((= (-> this content-type) float) - (dotimes (s5-10 (-> this length)) - (if (zero? s5-10) - (format #t "~f" (-> (the-as (array float) this) s5-10)) - (format #t " ~f" (-> (the-as (array float) this) s5-10)) - ) - ) - ) - (else - (dotimes (s5-11 (-> this length)) - (if (zero? s5-11) - (format #t "~A" (-> (the-as (array basic) this) s5-11)) - (format #t " ~A" (-> (the-as (array basic) this) s5-11)) - ) - ) - ) - ) + ((type-type? (-> this content-type) integer) + (case (-> this content-type symbol) + (('int32) + (dotimes (s5-0 (-> this length)) + (format #t (if (zero? s5-0) "~D" " ~D") (-> (the-as (array int32) this) s5-0)))) + (('uint32) + (dotimes (s5-1 (-> this length)) + (format #t (if (zero? s5-1) "~D" " ~D") (-> (the-as (array uint32) this) s5-1)))) + (('int64) + (dotimes (s5-2 (-> this length)) + (format #t (if (zero? s5-2) "~D" " ~D") (-> (the-as (array int64) this) s5-2)))) + (('uint64) + (dotimes (s5-3 (-> this length)) + (format #t (if (zero? s5-3) "#x~X" " #x~X") (-> (the-as (array uint64) this) s5-3)))) + (('int8) (dotimes (s5-4 (-> this length)) (format #t (if (zero? s5-4) "~D" " ~D") (-> (the-as (array int8) this) s5-4)))) + (('uint8) + (dotimes (s5-5 (-> this length)) + (format #t (if (zero? s5-5) "~D" " ~D") (-> (the-as (array uint8) this) s5-5)))) + (('int16) + (dotimes (s5-6 (-> this length)) + (format #t (if (zero? s5-6) "~D" " ~D") (-> (the-as (array int16) this) s5-6)))) + (('uint16) + (dotimes (s5-7 (-> this length)) + (format #t (if (zero? s5-7) "~D" " ~D") (-> (the-as (array uint16) this) s5-7)))) + (('uint128 'int128) + (dotimes (s5-8 (-> this length)) + (format #t (if (zero? s5-8) "#x~X" " #x~X") (-> (the-as (array uint128) this) s5-8)))) + (else (dotimes (s5-9 (-> this length)) (format #t (if (zero? s5-9) "~D" " ~D") (-> (the-as (array int32) this) s5-9)))))) + ((= (-> this content-type) float) + (dotimes (s5-10 (-> this length)) + (if (zero? s5-10) + (format #t "~f" (-> (the-as (array float) this) s5-10)) + (format #t " ~f" (-> (the-as (array float) this) s5-10))))) + (else + (dotimes (s5-11 (-> this length)) + (if (zero? s5-11) + (format #t "~A" (-> (the-as (array basic) this) s5-11)) + (format #t " ~A" (-> (the-as (array basic) this) s5-11)))))) (format #t ")") - this - ) + this) (defmethod inspect ((this array)) "Inspect an array" @@ -884,91 +594,35 @@ (format #t "~Tcontent-type: ~A~%" (-> this content-type)) (format #t "~Tdata[~D]: @ #x~X~%" (-> this allocated-length) (-> this data)) (cond - ((type-type? (-> this content-type) integer) - (case (-> this content-type symbol) - (('int32) - (dotimes (s5-0 (-> this length)) - (format #t "~T [~D] ~D~%" s5-0 (-> (the-as (array int32) this) s5-0)) - ) - ) - (('uint32) - (dotimes (s5-1 (-> this length)) - (format #t "~T [~D] ~D~%" s5-1 (-> (the-as (array uint32) this) s5-1)) - ) - ) - (('int64) - (dotimes (s5-2 (-> this length)) - (format #t "~T [~D] ~D~%" s5-2 (-> (the-as (array int64) this) s5-2)) - ) - ) - (('uint64) - (dotimes (s5-3 (-> this length)) - (format #t "~T [~D] #x~X~%" s5-3 (-> (the-as (array uint64) this) s5-3)) - ) - ) - (('int8) - (dotimes (s5-4 (-> this length)) - (format #t "~T [~D] ~D~%" s5-4 (-> (the-as (array int8) this) s5-4)) - ) - ) - (('uint8) - (dotimes (s5-5 (-> this length)) - (format #t "~T [~D] ~D~%" s5-5 (-> (the-as (array int8) this) s5-5)) - ) - ) - (('int16) - (dotimes (s5-6 (-> this length)) - (format #t "~T [~D] ~D~%" s5-6 (-> (the-as (array int16) this) s5-6)) - ) - ) - (('uint16) - (dotimes (s5-7 (-> this length)) - (format #t "~T [~D] ~D~%" s5-7 (-> (the-as (array uint16) this) s5-7)) - ) - ) - (('int128 'uint128) - (dotimes (s5-8 (-> this length)) - (format #t "~T [~D] #x~X~%" s5-8 (-> (the-as (array uint128) this) s5-8)) - ) - ) - (else - (dotimes (s5-9 (-> this length)) - (format #t "~T [~D] ~D~%" s5-9 (-> (the-as (array int32) this) s5-9)) - ) - ) - ) - ) - ((= (-> this content-type) float) - (dotimes (s5-10 (-> this length)) - (format #t "~T [~D] ~f~%" s5-10 (-> (the-as (array float) this) s5-10)) - ) - ) - (else - (dotimes (s5-11 (-> this length)) - (format #t "~T [~D] ~A~%" s5-11 (-> (the-as (array basic) this) s5-11)) - ) - ) - ) - this - ) + ((type-type? (-> this content-type) integer) + (case (-> this content-type symbol) + (('int32) (dotimes (s5-0 (-> this length)) (format #t "~T [~D] ~D~%" s5-0 (-> (the-as (array int32) this) s5-0)))) + (('uint32) (dotimes (s5-1 (-> this length)) (format #t "~T [~D] ~D~%" s5-1 (-> (the-as (array uint32) this) s5-1)))) + (('int64) (dotimes (s5-2 (-> this length)) (format #t "~T [~D] ~D~%" s5-2 (-> (the-as (array int64) this) s5-2)))) + (('uint64) (dotimes (s5-3 (-> this length)) (format #t "~T [~D] #x~X~%" s5-3 (-> (the-as (array uint64) this) s5-3)))) + (('int8) (dotimes (s5-4 (-> this length)) (format #t "~T [~D] ~D~%" s5-4 (-> (the-as (array int8) this) s5-4)))) + (('uint8) (dotimes (s5-5 (-> this length)) (format #t "~T [~D] ~D~%" s5-5 (-> (the-as (array int8) this) s5-5)))) + (('int16) (dotimes (s5-6 (-> this length)) (format #t "~T [~D] ~D~%" s5-6 (-> (the-as (array int16) this) s5-6)))) + (('uint16) (dotimes (s5-7 (-> this length)) (format #t "~T [~D] ~D~%" s5-7 (-> (the-as (array uint16) this) s5-7)))) + (('int128 'uint128) + (dotimes (s5-8 (-> this length)) + (format #t "~T [~D] #x~X~%" s5-8 (-> (the-as (array uint128) this) s5-8)))) + (else (dotimes (s5-9 (-> this length)) (format #t "~T [~D] ~D~%" s5-9 (-> (the-as (array int32) this) s5-9)))))) + ((= (-> this content-type) float) + (dotimes (s5-10 (-> this length)) + (format #t "~T [~D] ~f~%" s5-10 (-> (the-as (array float) this) s5-10)))) + (else (dotimes (s5-11 (-> this length)) (format #t "~T [~D] ~A~%" s5-11 (-> (the-as (array basic) this) s5-11))))) + this) (defmethod length ((this array)) "Get the length of an array" - (-> this length) - ) + (-> this length)) (defmethod asize-of ((this array)) "Get the size in memory of an array" - (the-as int (+ (-> array size) - (* (-> this allocated-length) - (if (type-type? (-> this content-type) number) - (-> this content-type size) - 4 - ) - ) - ) - ) - ) + (the-as int + (+ (-> array size) + (* (-> this allocated-length) (if (type-type? (-> this content-type) number) (-> this content-type size) 4))))) ;;;;;;;;;;;;;;;;;;;;;;;; ;; memory manipulation @@ -981,11 +635,8 @@ (dotimes (i size) (set! (-> (the-as (pointer uint8) dst)) (-> (the-as (pointer uint8) src))) (&+! dst 1) - (&+! src 1) - ) - result - ) - ) + (&+! src 1)) + result)) (defun qmem-copy<-! ((dst pointer) (src pointer) (size int)) "Memory copy by quadword. More efficient, but has restrictions: @@ -994,16 +645,10 @@ - Ascending address copy." (let ((result dst)) (countdown (qwc (/ (+ size 15) 16)) - (set! - (-> (the-as (pointer uint128) dst)) - (-> (the-as (pointer uint128) src)) - ) + (set! (-> (the-as (pointer uint128) dst)) (-> (the-as (pointer uint128) src))) (&+! dst 16) - (&+! src 16) - ) - result - ) - ) + (&+! src 16)) + result)) (defun qmem-copy->! ((dst pointer) (src pointer) (size int)) "Memory copy by quadword (16-bytes). More efficient, but has restrictions: @@ -1013,64 +658,36 @@ (let ((result dst)) (let* ((qwc (/ (+ size 15) 16)) (dst-ptr (&+ dst (* qwc 16))) - (src-ptr (&+ src (* qwc 16))) - ) + (src-ptr (&+ src (* qwc 16)))) (while (nonzero? qwc) (+! qwc -1) (&+! dst-ptr -16) (&+! src-ptr -16) - (set! - (-> (the-as (pointer uint128) dst-ptr)) - (-> (the-as (pointer uint128) src-ptr)) - ) - ) - ) - result - ) - ) - + (set! (-> (the-as (pointer uint128) dst-ptr)) (-> (the-as (pointer uint128) src-ptr))))) + result)) (defun mem-set32! ((dst pointer) (size int) (value int)) "Normal memset, but by 32-bit word. NOTE: argument order is swapped from C" - (let ((result dst)) - (dotimes (i size) - (set! (-> (the-as (pointer int32) dst)) value) - (&+! dst 4) - (nop!) - ) - result - ) - ) + (let ((result dst)) (dotimes (i size) (set! (-> (the-as (pointer int32) dst)) value) (&+! dst 4) (nop!)) result)) (defun mem-or! ((dst pointer) (src pointer) (size int)) "Set the dst to (logior dst src) byte by byte. Not very efficient." (let ((result dst)) (dotimes (i size) - (logior! - (-> (the-as (pointer uint8) dst)) - (-> (the-as (pointer uint8) src)) - ) + (logior! (-> (the-as (pointer uint8) dst)) (-> (the-as (pointer uint8) src))) (&+! dst 1) - (&+! src 1) - ) - result - ) - ) - + (&+! src 1)) + result)) (defun quad-copy! ((dst pointer) (src pointer) (qwc int)) "Optimized memory copy. The original is pretty clever, but this isn't." (qmem-copy<-! dst src (* qwc 16)) - (none) - ) + (none)) (defun-recursive fact int ((x int)) - (if (= x 1) - 1 - (* x (fact (+ x -1)))) - ) + (if (= x 1) 1 (* x (fact (+ x -1))))) ;;;;;;;;;;;;;;;;;;;;;;;; ;; printing @@ -1087,8 +704,7 @@ (defun print ((arg0 object)) "Print out any boxed object. Does NOT insert a newline." ;; note that we use rtype-of, which works for pair, basic, and binteger. - ((method-of-type (rtype-of arg0) print) arg0) - ) + ((method-of-type (rtype-of arg0) print) arg0)) (defmacro printl (this) "Print out a boxed object and a newline. @@ -1096,25 +712,19 @@ The compiler will use the macro over the function, which will allow it to pick the correct print method for non-boxed objects" `(begin - (print ,this) - (format #t "~%") - ,this - ) - ) + (print ,this) + (format #t "~%") + ,this)) (defun printl ((arg0 object)) "Print out any boxed object and a newline at the end." - (let ((a0-1 arg0)) - ((method-of-type (rtype-of a0-1) print) a0-1) - ) + (let ((a0-1 arg0)) ((method-of-type (rtype-of a0-1) print) a0-1)) (format #t "~%") - arg0 - ) + arg0) (defun inspect ((arg0 object)) "Inspect any boxed object." - ((method-of-type (rtype-of arg0) inspect) arg0) - ) + ((method-of-type (rtype-of arg0) inspect) arg0)) ;;;;;;;;;;;;;;;;;;;;; ;; debug utils @@ -1124,16 +734,14 @@ "Print memory to runtime stdout by quadword. Input count is in 32-bit words" (dotimes (current-qword (/ word-count 4)) - (format 0 "~X: ~X ~X ~X ~X~%" + (format 0 + "~X: ~X ~X ~X ~X~%" (&-> data (* current-qword 4)) (-> data (* current-qword 4)) (-> data (+ (* current-qword 4) 1)) (-> data (+ (* current-qword 4) 2)) - (-> data (+ (* current-qword 4) 3)) - ) - ) - #f - ) + (-> data (+ (* current-qword 4) 3)))) + #f) ;; not sure what this is. (define *trace-list* '()) @@ -1141,21 +749,15 @@ (defun print-tree-bitmask ((bits int) (count int)) "Print out a single entry for a process tree 'tree' diagram" (dotimes (i count) - (if (zero? (logand bits 1)) - (format #t " ") - (format #t "| ") - ) - (set! bits (shr bits 1)) - ) - #f - ) + (if (zero? (logand bits 1)) (format #t " ") (format #t "| ")) + (set! bits (shr bits 1))) + #f) (defun breakpoint-range-set! ((a0 uint) (a1 uint) (a2 uint)) "Sets some debug register (COP0 Debug, dab, dabm) to break on memory access. This is not supported in OpenGOAL." (format 0 "breakpoint-range-set! not supported in OpenGOAL~%") - 0 - ) + 0) ;;;;;;;;;;;;;;;;;;;;;;; ;; valid @@ -1163,25 +765,15 @@ ;; these are not quite right, but it's close enough. (defmacro start-of-symbol-table () - `(rlet ((st :reg r14 :reset-here #t :type uint)) - (the uint (- st 32768)) - ) - ) + `(rlet ((st :reg r14 :reset-here #t :type uint)) (the uint (- st 32768)))) (defmacro end-of-symbol-table () - `(rlet ((st :reg r14 :reset-here #t :type uint)) - (the uint (+ st 32768)) - ) - ) + `(rlet ((st :reg r14 :reset-here #t :type uint)) (the uint (+ st 32768)))) ;; recursive, so needs to be forward declared with return type. (define-extern valid? (function object type basic basic object symbol)) -(defun valid? ((this object) - (expected-type type) - (name basic) - (allow-false basic) - (print-dest object) - ) + +(defun valid? ((this object) (expected-type type) (name basic) (allow-false basic) (print-dest object)) "Check if the given object is valid. This will work for structures, pairs, basics, bintegers, symbols, and types. If you set expected-type to #f, it just checks for a 4-byte aligned address that's in GOAL memory. If you're checking a structure, set expected-type to structure. This requires 16-byte alignment @@ -1194,39 +786,24 @@ The name is only used when printing out an error if the check fails. Use a name of #f to suppress error prints. " - (local-vars - (in-goal-mem symbol) - (v1-33 symbol) - ) - + (local-vars (in-goal-mem symbol) (v1-33 symbol)) ;; first, check if we are even in valid memory. This is the start of the symbol table to the end of RAM. ;; (note, this will fail stuff like the debug and global heap info objects, which aren't in GOAL heaps.) - (set! in-goal-mem (and (>= (the-as uint this) (start-of-symbol-table)) - (< (the-as uint this) END_OF_MEMORY) - ) - ) + (set! in-goal-mem (and (>= (the-as uint this) (start-of-symbol-table)) (< (the-as uint this) END_OF_MEMORY))) (cond ((not expected-type) ;; we didn't get an expected type, just check the alignment and address. (cond ((nonzero? (logand (the-as int this) 3)) ;; alignment is bad! - (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object (misaligned)~%" this name) - ) - '#f - ) + (if name (format print-dest "ERROR: object #x~X ~S is not a valid object (misaligned)~%" this name)) + '#f) ((not in-goal-mem) ;; address isn't within the memory we expect. - (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object (bad address)~%" this name) - ) - '#f - ) + (if name (format print-dest "ERROR: object #x~X ~S is not a valid object (bad address)~%" this name)) + '#f) ;; otherwise, we're good! - (else '#t) - ) - ) ;; end (not expected-type) check + (else '#t))) ;; end (not expected-type) check ((and allow-false (not this)) ;; we got a false, but its allowed! ;; note that we don't reject falses otherwise, as false is a perfectly valid symbol. @@ -1238,132 +815,104 @@ (cond ((nonzero? (logand (the-as int this) 15)) (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (misaligned)~%" this name expected-type) - ) - '#f - ) + (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (misaligned)~%" this name expected-type)) + '#f) ((or (not in-goal-mem) (< (the-as uint this) (end-of-symbol-table))) ;; structures should never be in the symbol table, they have a slightly stricter allowed memory range. (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (bad address)~%" this name expected-type) - ) - '#f - ) - (else '#t) - ) ;; end structure check + (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (bad address)~%" this name expected-type)) + '#f) + (else '#t)) ;; end structure check ) ((= expected-type pair) ;; pair alignment is 8 bytes + 2. (cond ((!= (logand (the-as int this) 7) PAIR_OFFSET) (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (misaligned)~%" this name expected-type) - ) - '#f - ) + (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (misaligned)~%" this name expected-type)) + '#f) ((not in-goal-mem) ;; the empty pair is in the symbol table, so we allow anything in GOAL memory. (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (bad address)~%" this name expected-type) - ) - '#f - ) + (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (bad address)~%" this name expected-type)) + '#f) ;; pass! - (else '#t) - ) - ) + (else '#t))) ((= expected-type binteger) (cond ;; binteger has 0 in the lower 3 bits. - ((zero? (logand (the-as int this) 7)) - '#t) + ((zero? (logand (the-as int this) 7)) '#t) (else (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (misaligned)~%" this name expected-type) - ) - '#f - ) - ) - ) + (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (misaligned)~%" this name expected-type)) + '#f))) ;; now we assume desired type is a basic. ((!= (logand (the-as int this) 7) BASIC_OFFSET) (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (misaligned)~%" this name expected-type) - ) - '#f - ) + (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (misaligned)~%" this name expected-type)) + '#f) ;; basics can be in the symbol table (basics are symbols...) ((not in-goal-mem) (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (bad address)~%" this name expected-type) - ) - '#f - ) + (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (bad address)~%" this name expected-type)) + '#f) ((and (= expected-type type) (!= (rtype-of this) type)) ;; special case for type, check the runtime type of the object and be done. (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (invalid type #x~X)~%" - this name expected-type (rtype-of this) - ) - ) - '#f - ) + (format print-dest + "ERROR: object #x~X ~S is not a valid object of type '~A' (invalid type #x~X)~%" + this + name + expected-type + (rtype-of this))) + '#f) (else ;; otherwise... we want to check and see if the type is actually a type. ;; we use valid? to do this check. ;; avoid infinite recursion by skipping this check if the expected-type is type. - (cond - ((and (!= expected-type type) - (not (valid? (rtype-of this) type '#f '#t 0)) - ) + ((and (!= expected-type type) (not (valid? (rtype-of this) type '#f '#t 0))) (if name - ;; note: print the invalid type as an address in case it's unprintable. - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (invalid type #x~X)~%" - this name expected-type (rtype-of this) - ) - ) - '#f - ) + ;; note: print the invalid type as an address in case it's unprintable. + (format print-dest + "ERROR: object #x~X ~S is not a valid object of type '~A' (invalid type #x~X)~%" + this + name + expected-type + (rtype-of this))) + '#f) ((not (type-type? (rtype-of this) expected-type)) ;; type check failed. (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (is type '~A' instead)~%" - this name expected-type (rtype-of this) - ) - ) - '#f - ) + (format print-dest + "ERROR: object #x~X ~S is not a valid object of type '~A' (is type '~A' instead)~%" + this + name + expected-type + (rtype-of this))) + '#f) ((= expected-type symbol) ;; got a symbol, expecting to be in the symbol table. (cond ((>= (the-as uint this) (end-of-symbol-table)) - (if name (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (not in symbol table)~%" - this name expected-type - ) - ) - '#f - ) - (else '#t) - ) - ) + (if name + (format print-dest + "ERROR: object #x~X ~S is not a valid object of type '~A' (not in symbol table)~%" + this + name + expected-type)) + '#f) + (else '#t))) ;; not a symbol, so expecting to be outside st. ((< (the-as uint this) (end-of-symbol-table)) (if name - (format print-dest "ERROR: object #x~X ~S is not a valid object of type '~A' (inside symbol table)~%" - this name expected-type - ) - ) - '#f - ) - (else '#t) - ) - ) - ) - ) - ) - ) - + (format print-dest + "ERROR: object #x~X ~S is not a valid object of type '~A' (inside symbol table)~%" + this + name + expected-type)) + '#f) + (else '#t))))))) ;;;;;;;;;;;;;;;;;;;;;;; ;; PC Port asm macros @@ -1376,9 +925,7 @@ ;; Copies the contents of a cop0 (system control) register to a gpr (fake-asm .mfc0 dest src) ;; Copies the contents of a gpr to a cop0 (system control) register - (fake-asm .mtc0 dest src) - ) - + (fake-asm .mtc0 dest src)) ;;;;;;;;;;;;;;;;;;;;;;;; ;; Decompiler Macros @@ -1389,42 +936,29 @@ "Branch!" ;; evaluate the predicate `(let ((should-branch ,pred)) - ;; normal delay slot: - ,delay - (when should-branch - ,likely-delay - (goto ,destination) - ) - ) - ) + ;; normal delay slot: + ,delay + (when should-branch + ,likely-delay + (goto ,destination)))) ;; the decompiler may fail to recognize setting fields of a 128-bit bitfield ;; and will rely on this macro: (defmacro copy-and-set-field (original field-name field-value) - `(let ((temp-copy ,original)) - (set! (-> temp-copy ,field-name) ,field-value) - temp-copy - ) - ) + `(let ((temp-copy ,original)) (set! (-> temp-copy ,field-name) ,field-value) temp-copy)) ;; inserted by the decompiler if a c->goal bool conversion can't be compacted into a single ;; expression. (defmacro cmove-#f-zero (dest condition src) - `(if (zero? ,condition) - (set! ,dest #f) - (set! ,dest ,src) - ) - ) + `(if (zero? ,condition) (set! ,dest #f) (set! ,dest ,src))) (defmacro empty-form () - `(none) - ) + `(none)) ;;;;;;;;;;;;;;;;;;;; ;; Profiler Macros ;;;;;;;;;;;;;;;;;;;; - (defmacro profiler-instant-event (name) "Record an 'instant' event in the profile. This can be used however you'd like, but there should be a @@ -1432,38 +966,28 @@ when no timed events are in progress, to allow the profiler to correctly recover the event stack." `(#when PC_PROFILER_ENABLE - (pc-prof ,name (pc-prof-event instant)) - ) - ) + (pc-prof ,name (pc-prof-event instant)))) (defmacro profiler-start-event (name) "Start a timed event with the given name." `(#when PC_PROFILER_ENABLE - (pc-prof ,name (pc-prof-event begin)) - ) - ) + (pc-prof ,name (pc-prof-event begin)))) (defmacro profiler-end-event () "End the most recently started event that hasn't been stopped yet. It is up to you to correctly balance the starts/ends, otherwise the profiling data will be corrupted." `(#when PC_PROFILER_ENABLE - (pc-prof "" (pc-prof-event end)) - ) - ) + (pc-prof "" (pc-prof-event end)))) (defmacro with-profiler (name &rest body) "Execute the body in a named profiler block. Do not `return` or `go` from inside this block, otherwise the end will be skipped." `(#if PC_PROFILER_ENABLE - (begin - (pc-prof ,name (pc-prof-event begin)) - ,@body - (pc-prof ,name (pc-prof-event end)) - ) - (begin - ,@body - ) - ) - ) + (begin + (pc-prof ,name (pc-prof-event begin)) + ,@body + (pc-prof ,name (pc-prof-event end))) + (begin + ,@body))) diff --git a/goal_src/jak1/kernel/gkernel-h.gc b/goal_src/jak1/kernel/gkernel-h.gc index c732b166a5..a583af51bf 100644 --- a/goal_src/jak1/kernel/gkernel-h.gc +++ b/goal_src/jak1/kernel/gkernel-h.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "KERNEL.CGO") - (require "kernel/gcommon.gc") -;; name: gkernel-h.gc -;; name in dgo: gkernel-h -;; dgos: KERNEL - ;; Type definitions and constants for the GOAL Kernel. The GOAL kernel is dipatched ;; from C++ through the *kernel-dispatcher* and is responsible for: ;; - running all GOAL code @@ -36,11 +31,13 @@ ;; the version of the kernel. This is checked in the C Kernel. ;; This must match the version in common/versions.h when building gk (defconstant *kernel-major-version* 2) + (defconstant *kernel-minor-version* 0) ;; the version of the OVERLORD I/O driver. ;; this may be unused. (defconstant *irx-major-version* 1) + (defconstant *irx-minor-version* 2) ;; -memory- @@ -63,8 +60,8 @@ ;; the size of the shared heap used by dynamically sized processes (#if PC_BIG_MEMORY (defconstant PROCESS_HEAP_MULT 3) ;; 3x actors - (defconstant PROCESS_HEAP_MULT 1) - ) + (defconstant PROCESS_HEAP_MULT 1)) + (defconstant PROCESS_HEAP_SIZE (* PROCESS_HEAP_MULT 984 1024)) ;; -system- @@ -83,38 +80,38 @@ ;; can be set by the user to prevent a process from running in certain conditions. (defenum process-mask - :bitfield #t :type uint32 - (execute 0) ;; when set, prevents a process from running, in every case. - (draw 1) ;; unused - (pause 2) ;; when set, the process won't run if the game is paused. - (menu 3) ;; when set, the process won't run if the debug menu system is open - (progress 4) ;; the process won't run if the start menu (progress menu) is open - (actor-pause 5) ;; when set, the entity system will try to pause it automatically if you are far away. - (sleep 6) ;; prevents the process from running, but can be woken up by state changes. - (sleep-code 7) ;; do not run the code (main thread) of this process (other stuff runs) - (process-tree 8) ;; not an actual process, just a "tree node" for organization - (heap-shrunk 9) ;; actor heap compactor has already shrunk the heap of this proc - (going 10) ;; there is a next state set that will be entered next time (pending enter-state) - (movie 11) ;; when set, don't run if we are in a movie - (movie-subject 12) ;; set on silostep, unused otherwise. - (target 13) ;; set on target - (sidekick 14) ;; set on sidekick - (crate 15) ;; set on all crates - (collectable 16) ;; set on all collectables - (enemy 17) ;; set on all enemies (inclues stuff like seagulls) - (camera 18) ;; set on all cameras - (platform 19) ;; set on all platforms - (ambient 20) ;; set on all ambients - (entity 21) ;; set on all processes spawned from entities - (projectile 22) ;; set on all projectiles - (attackable 23) ;; set on all "attackables" that can be targeted by projectiles or similar - (death 24) ;; set on misty-conveyor, appears unused. - ) + :bitfield #t + :type uint32 + (execute 0) ;; when set, prevents a process from running, in every case. + (draw 1) ;; unused + (pause 2) ;; when set, the process won't run if the game is paused. + (menu 3) ;; when set, the process won't run if the debug menu system is open + (progress 4) ;; the process won't run if the start menu (progress menu) is open + (actor-pause 5) ;; when set, the entity system will try to pause it automatically if you are far away. + (sleep 6) ;; prevents the process from running, but can be woken up by state changes. + (sleep-code 7) ;; do not run the code (main thread) of this process (other stuff runs) + (process-tree 8) ;; not an actual process, just a "tree node" for organization + (heap-shrunk 9) ;; actor heap compactor has already shrunk the heap of this proc + (going 10) ;; there is a next state set that will be entered next time (pending enter-state) + (movie 11) ;; when set, don't run if we are in a movie + (movie-subject 12) ;; set on silostep, unused otherwise. + (target 13) ;; set on target + (sidekick 14) ;; set on sidekick + (crate 15) ;; set on all crates + (collectable 16) ;; set on all collectables + (enemy 17) ;; set on all enemies (inclues stuff like seagulls) + (camera 18) ;; set on all cameras + (platform 19) ;; set on all platforms + (ambient 20) ;; set on all ambients + (entity 21) ;; set on all processes spawned from entities + (projectile 22) ;; set on all projectiles + (attackable 23) ;; set on all "attackables" that can be targeted by projectiles or similar + (death 24) ;; set on misty-conveyor, appears unused. + ) ;; -961 ;; these bits are cleared when inheriting the mask from a parent process. -(defconstant PROCESS_CLEAR_MASK - (lognot (process-mask sleep sleep-code process-tree heap-shrunk))) +(defconstant PROCESS_CLEAR_MASK (lognot (process-mask sleep sleep-code process-tree heap-shrunk))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; MACROS @@ -122,15 +119,13 @@ ;; trigger an exception. (GOAL used lw r0, 2(r0)) (defmacro break () - `(/ 0 0) - ) + `(/ 0 0)) (defmacro msg-err (&rest args) "Print a message to stdout immediately. This won't appear in the compiler. This is useful if the game is crashing before messages can be flushed to compiler." - `(format 0 ,@args) - ) + `(format 0 ,@args)) ;; DECOMP BEGINS @@ -140,8 +135,8 @@ ;; this stores the current state of the kernel. (deftype kernel-context (basic) - ((prevent-from-run process-mask) ;; don't run processes with any of these bits set. - (require-for-run process-mask) ;; unused + ((prevent-from-run process-mask) ;; don't run processes with any of these bits set. + (require-for-run process-mask) ;; unused (allow-to-run process-mask) ;; unused (next-pid int32) ;; next unused unique process ID (fast-stack-top pointer) @@ -152,11 +147,9 @@ (relocating-offset int32) ;; how far the memory being relocated is moving (low-memory-message symbol) ;; should we print warnings if low on memory? ) - :size-assert #x30 :method-count-assert 9 - :flag-assert #x900000030 - ) + :flag-assert #x900000030) ;; A thread belongs to a process and has a reference to a stack. ;; they have an "execution stack", which is where the stack goes when the thread runs. @@ -165,54 +158,51 @@ ;; optionally, threads may know how to suspend/resume themselves. (declare-type process basic) + (declare-type stack-frame basic) + (declare-type state basic) + (declare-type cpu-thread basic) + (declare-type dead-pool basic) + (declare-type event-message-block structure) ;; NOTE! - this type is created in kscheme.cpp. It has room for 12 methods and size 0x28 bytes. (deftype thread (basic) - ((name basic) ;; name of the thread (usually a symbol?) - (process process) ;; process that the thread belongs to - (previous thread) ;; previous thread that was running in the process - (suspend-hook (function cpu-thread none)) ;; function to suspend this thread - (resume-hook (function cpu-thread none)) ;; function to resume this thread - (pc pointer) ;; program counter of the thread - (sp pointer) ;; stack pointer of the thread (actual stack) - (stack-top pointer) ;; top of the thread's stack (actual stack) - (stack-size int32) ;; size of the thread's stack (backup stack) + ((name basic) ;; name of the thread (usually a symbol?) + (process process) ;; process that the thread belongs to + (previous thread) ;; previous thread that was running in the process + (suspend-hook (function cpu-thread none)) ;; function to suspend this thread + (resume-hook (function cpu-thread none)) ;; function to resume this thread + (pc pointer) ;; program counter of the thread + (sp pointer) ;; stack pointer of the thread (actual stack) + (stack-top pointer) ;; top of the thread's stack (actual stack) + (stack-size int32) ;; size of the thread's stack (backup stack) ) - (:methods - (stack-size-set! (_type_ int) none) - (thread-suspend (_type_) none) - (thread-resume (_type_) none) - ) + (stack-size-set! (_type_ int) none) + (thread-suspend (_type_) none) + (thread-resume (_type_) none)) ;; is already defined in kscheme but we define it again. ) ;; A CPU thread is a thread which has some memory to save registers and a stack (deftype cpu-thread (thread) - ( - ;; This is what GOAL did: + (;; This is what GOAL did: ;; (rreg uint64 8 :offset-assert 40) ;; general purpose saved registers ;; (freg float 6 :offset-assert 104) ;; floating point registers - ;; OpenGOAL has only 5 saved registers but 8 fregs, so we swap a rreg for 2 fregs. - (rreg uint64 7 :offset-assert 40) - (freg float 8) - + (rreg uint64 7 :offset-assert 40) + (freg float 8) ;; This is the same between GOAL and OpenGOAL - (stack uint8 :dynamic :offset-assert 128) ;; stack memory (dynamic array) + (stack uint8 :dynamic :offset-assert 128) ;; stack memory (dynamic array) ) - (:methods - (new (symbol type process symbol int pointer) _type_) - (thread-suspend (_type_) none) - (thread-resume (_type_) none) - ) - ) + (new (symbol type process symbol int pointer) _type_) + (thread-suspend (_type_) none) + (thread-resume (_type_) none))) ;; ppointer system: ;; a process may move in memory, but we need a way to keep track of a process. @@ -224,6 +214,7 @@ ;; A process-tree is a left-child right-sibling binary tree ;; (except GOAL is old and it looks like they called them left-child right-brother trees back then) (declare-type entity-actor basic) + (deftype process-tree (basic) ((name basic) (mask process-mask) @@ -232,66 +223,56 @@ (brother (pointer process-tree)) (child (pointer process-tree)) (ppointer (pointer process)) - ;; in cases where the process never moves, the kernel will set ppointer to the address of the self field - (self process-tree) - ) - + (self process-tree)) (:methods - (new (symbol type basic) _type_) - (activate (_type_ process-tree basic pointer) process-tree) - (deactivate (_type_) none) - (init-from-entity! (_type_ entity-actor) none) - (run-logic? (_type_) symbol) - (process-tree-method-13 () none) - ) - + (new (symbol type basic) _type_) + (activate (_type_ process-tree basic pointer) process-tree) + (deactivate (_type_) none) + (init-from-entity! (_type_ entity-actor) none) + (run-logic? (_type_) symbol) + (process-tree-method-13 () none)) :no-runtime-type ;; already defined by kscheme. Don't do it again. ) - ;; A GOAL process. A GOAL process contains memory and a suspendable main-thread. (deftype process (process-tree) - ((pool dead-pool) ;; the memory pool we came from, and should return to when we die - (status basic) - (pid int32) ;; unqiue process ID - (main-thread cpu-thread) ;; our suspendable main thread - (top-thread thread) ;; currently running thread - (entity entity-actor) ;; if we are a process spawned by an entity-actor, our entity - (state state) ;; if we use the state system, our current state - (trans-hook function) ;; function to call for trans - (post-hook function) ;; function to call for post - (event-hook (function process int symbol event-message-block object)) ;; function to call for events - (allocated-length int32) ;; size not included in process (including fields + heap) - (next-state state) ;; if we are "going", the next state to go to. - (heap-base pointer) ;; process heap - (heap-top pointer) - (heap-cur pointer) - (stack-frame-top stack-frame) ;; stack frame. top means "closest to current execution" - (connection-list connectable :inline) ;; list of engines we're connected to - (stack uint8 :dynamic) ;; memory for fields + process heap + ((pool dead-pool) ;; the memory pool we came from, and should return to when we die + (status basic) + (pid int32) ;; unqiue process ID + (main-thread cpu-thread) ;; our suspendable main thread + (top-thread thread) ;; currently running thread + (entity entity-actor) ;; if we are a process spawned by an entity-actor, our entity + (state state) ;; if we use the state system, our current state + (trans-hook function) ;; function to call for trans + (post-hook function) ;; function to call for post + (event-hook (function process int symbol event-message-block object)) ;; function to call for events + (allocated-length int32) ;; size not included in process (including fields + heap) + (next-state state) ;; if we are "going", the next state to go to. + (heap-base pointer) ;; process heap + (heap-top pointer) + (heap-cur pointer) + (stack-frame-top stack-frame) ;; stack frame. top means "closest to current execution" + (connection-list connectable :inline) ;; list of engines we're connected to + (stack uint8 :dynamic) ;; memory for fields + process heap ) (:methods - (new (symbol type basic int) _type_) - ) + (new (symbol type basic int) _type_)) (:states - dead-state - empty-state) + dead-state + empty-state) :no-runtime-type ;; already defined by kscheme. Don't do it again. ) ;; A dead pool is simply a process-tree node which contains all dead processes. ;; It supports getting and returning processes. (deftype dead-pool (process-tree) - ( - ;; nothing new! + (;; nothing new! ) (:methods - (new (symbol type int int basic) _type_) - (get-process (_type_ type int) process) - (return-process ( _type_ process) none) - ) - ) + (new (symbol type int int basic) _type_) + (get-process (_type_ type int) process) + (return-process (_type_ process) none))) ;; A dead-pool-heap-rec is a record for a process which lives on a dead-pool-heap. ;; The dead-pool-heap may move processes around in memory, but we need some constant address for each process. @@ -299,10 +280,9 @@ ;; A handle can use a pointer to this type's "process" field as a fixed ppointer. (deftype dead-pool-heap-rec (structure) ((process process) ;; the process of this record - (prev dead-pool-heap-rec) ;; next rec in the linked list - (next dead-pool-heap-rec) ;; prev. rec in the linked list + (prev dead-pool-heap-rec) ;; next rec in the linked list + (next dead-pool-heap-rec) ;; prev. rec in the linked list ) - :pack-me ; don't worry about aligning me to 16-bytes in arrays and types. ) @@ -310,35 +290,32 @@ ;; It doesn't quite behave like a tree, so there's some hacks related to child/brother etc. ;; Alive processes in a dead-pool-heap can be relocated and compacted to reduce heap fragmentation. (deftype dead-pool-heap (dead-pool) - ((allocated-length int32) ;; size of heap - (compact-time uint32) ;; unused... - (compact-count-targ uint32) ;; number of compactions requested - (compact-count uint32) ;; number of compactions perfomed - (fill-percent float) ;; unused - (first-gap dead-pool-heap-rec) ;; the lowest process with a gap in the heap - (first-shrink dead-pool-heap-rec) ;; the lowest process that needs shrinking - (heap kheap :inline) ;; our shared heap for processes - (alive-list dead-pool-heap-rec :inline) ;; records for processes that are alive - (last dead-pool-heap-rec :overlay-at (-> alive-list prev)) - (dead-list dead-pool-heap-rec :inline) ;; unused records - (process-list dead-pool-heap-rec :inline :dynamic) ;; array of records + ((allocated-length int32) ;; size of heap + (compact-time uint32) ;; unused... + (compact-count-targ uint32) ;; number of compactions requested + (compact-count uint32) ;; number of compactions perfomed + (fill-percent float) ;; unused + (first-gap dead-pool-heap-rec) ;; the lowest process with a gap in the heap + (first-shrink dead-pool-heap-rec) ;; the lowest process that needs shrinking + (heap kheap :inline) ;; our shared heap for processes + (alive-list dead-pool-heap-rec :inline) ;; records for processes that are alive + (last dead-pool-heap-rec :overlay-at (-> alive-list prev)) + (dead-list dead-pool-heap-rec :inline) ;; unused records + (process-list dead-pool-heap-rec :inline :dynamic) ;; array of records ) (:methods - (new (symbol type basic int int) _type_) - (compact (dead-pool-heap int) none) - (shrink-heap (dead-pool-heap process) dead-pool-heap) - (churn (dead-pool-heap int) none) - (memory-used (dead-pool-heap) int) - (memory-total (dead-pool-heap) int) - (gap-size (dead-pool-heap dead-pool-heap-rec) int) - (gap-location (dead-pool-heap dead-pool-heap-rec) pointer) - (find-gap (dead-pool-heap dead-pool-heap-rec) dead-pool-heap-rec) - (find-gap-by-size (dead-pool-heap int) dead-pool-heap-rec) - (memory-free (dead-pool-heap) int) - (compact-time (dead-pool-heap) uint) - ) - ) - + (new (symbol type basic int int) _type_) + (compact (dead-pool-heap int) none) + (shrink-heap (dead-pool-heap process) dead-pool-heap) + (churn (dead-pool-heap int) none) + (memory-used (dead-pool-heap) int) + (memory-total (dead-pool-heap) int) + (gap-size (dead-pool-heap dead-pool-heap-rec) int) + (gap-location (dead-pool-heap dead-pool-heap-rec) pointer) + (find-gap (dead-pool-heap dead-pool-heap-rec) dead-pool-heap-rec) + (find-gap-by-size (dead-pool-heap int) dead-pool-heap-rec) + (memory-free (dead-pool-heap) int) + (compact-time (dead-pool-heap) uint))) ;; GOAL can create a series of stack frames for unwinding/cleaning up. ;; This is the parent type for any stack frame. @@ -346,39 +323,29 @@ ((name symbol :offset 4) (next stack-frame :offset 8) ;; follow this to get to the root frame, away from top. ) - :no-runtime-type ;; already constructed, don't do it again. ) - ;; A catch frame is a frame you can "throw" to, by name. ;; You can "throw" out of a function and into a calling function, just like C++ exceptions. (deftype catch-frame (stack-frame) - ((sp int32 :offset 12) ;; where to reset the stack when throwing. - (ra int32 :offset 16) ;; where to jump when throwing - + ((sp int32 :offset 12) ;; where to reset the stack when throwing. + (ra int32 :offset 16) ;; where to jump when throwing ;; In GOAL ;; (freg float 6 :offset-assert 20) ;; saved floating point registers from "catch" statement ;; (rreg uint128 8 :offset-assert 48) ;; saved GPRs from "catch" statement (ugh they are 128s) - ;; In OpenGOAL, we swap a rreg for 4 more fregs. (freg float 10 :offset-assert 20) ;; only use 8 - (rreg uint128 7) ;; only use 5 + (rreg uint128 7) ;; only use 5 ) - (:methods - (new (symbol type symbol function (pointer uint64)) object) - ) - ) + (new (symbol type symbol function (pointer uint64)) object))) ;; A protect frame is a frame which has a cleanup function called on exit. (deftype protect-frame (stack-frame) ((exit (function object))) ;; function to call to clean up - (:methods - (new (symbol type (function object)) protect-frame) - ) - ) + (new (symbol type (function object)) protect-frame))) ;; A handle is a reference to a _specific_ process. ;; There are two tricks here: @@ -390,72 +357,52 @@ ;; This way we can check the handle's PID against the PID in the process. (deftype handle (uint64) ((process (pointer process) :offset 0) ;; set to #f for null. - (pid int32 :offset 32) - (u64 uint64 :offset 0) - ) - ) + (pid int32 :offset 32) + (u64 uint64 :offset 0))) (defmethod inspect ((this handle)) (format #t "[~8x] ~A~%" 'handle) (format #t "~Tprocess: #x~x~%" (-> this process)) (format #t "~Tpid: ~D~%" (-> this pid)) - this - ) - + this) (defmacro handle->process (handle) "Convert a handle to a process. If the process no longer exists, returns #f." `(let ((the-handle (the-as handle ,handle))) - (if (-> the-handle process) ;; if we don't point to a process, kernel sets this to #f - (let ((proc (-> (-> the-handle process)))) - (if (= (-> the-handle pid) (-> proc pid)) ;; make sure it's the same process - proc - ) - ) - ) - ) - ) + (if (-> the-handle process) ;; if we don't point to a process, kernel sets this to #f + (let ((proc (-> (-> the-handle process)))) + (if (= (-> the-handle pid) (-> proc pid)) ;; make sure it's the same process + proc))))) (defmacro ppointer->process (ppointer) "convert a (pointer process) to a process." ;; this uses the self field, which seems to always just get set to the object. ;; perhaps when deleting a process you could have it set self to #f? ;; I don't see this happen anywhere though, so it's not clear. - `(let ((the-pp ,ppointer)) - (the process-tree (if the-pp (-> the-pp 0 self))) - ) - ) + `(let ((the-pp ,ppointer)) (the process-tree (if the-pp (-> the-pp 0 self))))) (defmacro process->ppointer (proc) "safely get a (pointer process) from a process, returning #f if invalid." - `(let ((the-proc ,proc)) - (if the-proc (-> the-proc ppointer)) - ) - ) + `(let ((the-proc ,proc)) (if the-proc (-> the-proc ppointer)))) (defmacro ppointer->handle (pproc) "convert a ppointer to a handle. assumes the ppointer is valid." `(let ((the-process (the-as (pointer process) ,pproc))) - (new 'static 'handle :process the-process :pid (-> the-process 0 pid)) - ) - ) + (new 'static 'handle :process the-process :pid (-> the-process 0 pid)))) (defmacro process->handle (proc) "convert a process to a handle. if proc is #f, returns a #f handle." - `(ppointer->handle (process->ppointer ,proc)) - ) + `(ppointer->handle (process->ppointer ,proc))) (defmethod print ((this handle)) "print a handle" (if (nonzero? (-> this u64)) ;; zero-initialized handles can't be derefenced safely. - (format #t "#" - (handle->process this) ;; actually print the process stored - (-> this pid) - ) - (format #t "#") - ) - this - ) + (format #t + "#" + (handle->process this) ;; actually print the process stored + (-> this pid)) + (format #t "#")) + this) ;; A "state" is a collection of 6 functions that describe what code a process should run. ;; It contains "code", the code that's suspended and resumed, @@ -467,209 +414,143 @@ ;; While "state" is technically a stack frame, it's always the base stack frame, and just used for the exit ;; so if you abort out of a process, it cleans up the state too. (deftype state (protect-frame) - ((code function) - (trans (function object)) - (post function) - (enter function) - (event (function process int symbol event-message-block object)) - ) + ((code function) + (trans (function object)) + (post function) + (enter function) + (event (function process int symbol event-message-block object))) (:methods - (new (symbol type symbol function - (function object) - function - (function object) - (function process int symbol event-message-block object)) _type_) - ) - ) - + (new (symbol type symbol function (function object) function (function object) (function process int symbol event-message-block object)) _type_))) ;; this is used for the event system to pass around parameters from one process to another. (deftype event-message-block (structure) - ((to process) - (from process) - (num-params int32) - (message symbol) - (param uint64 7) - ) - :always-stack-singleton - ) + ((to process) + (from process) + (num-params int32) + (message symbol) + (param uint64 7)) + :always-stack-singleton) (defmacro process-stack-used (proc) ;; get how much stack the top thread of a process has used. - `(- (the int (-> ,proc top-thread stack-top)) - (the int (-> ,proc top-thread sp)) - ) - ) + `(- (the int (-> ,proc top-thread stack-top)) (the int (-> ,proc top-thread sp)))) (defmacro process-stack-size (proc) ;; get how much stack the top thread of a process has - `(-> ,proc top-thread stack-size) - ) + `(-> ,proc top-thread stack-size)) (defmacro process-heap-used (proc) ;; get how much heap a process has used. - `(- (-> ,proc allocated-length) - (- (the int (-> ,proc heap-top)) - (the int (-> ,proc heap-cur)) - ) - ) - ) + `(- (-> ,proc allocated-length) (- (the int (-> ,proc heap-top)) (the int (-> ,proc heap-cur))))) (defmacro process-heap-size (proc) ;; get how much heap a process has - `(the int (-> ,proc allocated-length)) - ) + `(the int (-> ,proc allocated-length))) (defmacro process-mask? (mask enum-value) - `(!= 0 (logand ,mask (process-mask ,enum-value))) - ) + `(!= 0 (logand ,mask (process-mask ,enum-value)))) (defmacro process-mask-set! (mask &rest enum-value) ;; sets the given bits in the process mask (with or) - `(set! ,mask (logior ,mask (process-mask ,@enum-value))) - ) + `(set! ,mask (logior ,mask (process-mask ,@enum-value)))) (defmacro process-mask-clear! (mask &rest enum-value) ;; sets the given bits in the process mask (with or) - `(set! ,mask (logand ,mask (lognot (process-mask ,@enum-value)))) - ) + `(set! ,mask (logand ,mask (lognot (process-mask ,@enum-value))))) (defmacro suspend () "suspend the current process, to be resumed on the next frame." `(rlet ((pp :reg r13 :reset-here #t)) - ;; debug check for stack overflow here, where we can easily print the process name. - (#when (or KERNEL_DEBUG) - (rlet ((sp :reg rsp :reset-here #t :type int) - (off :reg r15 :type uint)) - (let* ((sp-goal (- sp off)) - (stack-top-goal (-> (the process pp) top-thread stack-top)) - (stack-used (&- stack-top-goal sp-goal)) - (stack-size (-> (the process pp) top-thread stack-size)) - ) - (when (> stack-used stack-size) - (format 0 "ERROR: suspend called without enough stack in proc:~%~A~%Stack: ~D/~D~%" pp stack-used stack-size) - ) - ) - ) - ) - ;; set to the current thread - (set! pp (-> (the process pp) top-thread)) - ;; call the suspend hook (put nothing as the argument) - ((-> (the cpu-thread pp) suspend-hook) (the cpu-thread 0)) - ;; the kernel will set pp (possibly to a new value, if we've been relocated) on resume. - ) - ) + ;; debug check for stack overflow here, where we can easily print the process name. + (#when (or KERNEL_DEBUG) + (rlet ((sp :reg rsp :reset-here #t :type int) + (off :reg r15 :type uint)) + (let* ((sp-goal (- sp off)) + (stack-top-goal (-> (the process pp) top-thread stack-top)) + (stack-used (&- stack-top-goal sp-goal)) + (stack-size (-> (the process pp) top-thread stack-size))) + (when (> stack-used stack-size) + (format 0 "ERROR: suspend called without enough stack in proc:~%~A~%Stack: ~D/~D~%" pp stack-used stack-size))))) + ;; set to the current thread + (set! pp (-> (the process pp) top-thread)) + ;; call the suspend hook (put nothing as the argument) + ((-> (the cpu-thread pp) suspend-hook) (the cpu-thread 0)) + ;; the kernel will set pp (possibly to a new value, if we've been relocated) on resume. + )) (defmacro process-deactivate () "deactivate (kill) the current process" - `(rlet ((pp :reg r13 :reset-here #t :type process)) - (deactivate pp) - ) - ) + `(rlet ((pp :reg r13 :reset-here #t :type process)) (deactivate pp))) (defmacro with-pp (&rest body) "execute the body with pp bound to the current process register." - `(rlet ((pp :reg r13 :reset-here #t :type process)) - ,@body) - ) + `(rlet ((pp :reg r13 :reset-here #t :type process)) ,@body)) (defconstant PP (with-pp pp)) (defmacro with-proc (bindings &rest body) "execute the body with process register set to the given value and bound to pp. it is recommended to use run-now-in-process over this" - `(rlet ((pp :reg r13 :reset-here #t :type process)) - (protect (pp) - (set! pp ,(car bindings)) - ,@body - )) - ) + `(rlet ((pp :reg r13 :reset-here #t :type process)) (protect (pp) (set! pp ,(car bindings)) ,@body))) (defmacro defbehavior (name process-type bindings &rest body) "define a new behavior. This is simply a function where self is bound to the process register, which is assumed to have type process-type." - (if (and - (> (length body) 1) ;; more than one thing in function - (string? (first body)) ;; first thing is a string - ) - ;; then it's a docstring and we ignore it. - `(define ,name (lambda :name ,name :behavior ,process-type ,bindings ,@(cdr body))) - ;; otherwise don't ignore it. - `(define ,name (lambda :name ,name :behavior ,process-type ,bindings ,@body)) - ) - ) + (if (and (> (length body) 1) ;; more than one thing in function + (string? (first body)) ;; first thing is a string + ) + ;; then it's a docstring and we ignore it. + `(define ,name (lambda :name ,name :behavior ,process-type ,bindings ,@(cdr body))) + ;; otherwise don't ignore it. + `(define ,name (lambda :name ,name :behavior ,process-type ,bindings ,@body)))) (defconstant INVALID_HANDLE (the handle #f)) (defmacro handle->name (handle) "get the name of a process using a handle. #f is the result if the handle was invalid." - (with-gensyms (proc) - `(let ((,proc (handle->process ,handle))) - (if ,proc - (-> ,proc name) - ) - ) - ) - ) + `(let ((,proc (handle->process ,handle))) (if ,proc (-> ,proc name))))) (defmacro with-children (bindings &rest body) "run body for each child. not recursive. bindings are: (child proc); proc = process we do this on; child = var name for the current child ptr." `(let ((,(first bindings) (-> ,(second bindings) child))) (while ,(first bindings) - ,@body - - (set! ,(first bindings) (-> ,(first bindings) 0 brother)) - ) - ) - ) + (set! ,(first bindings) (-> ,(first bindings) 0 brother))))) (defmacro kheap-alloc (heap size) "allocate space for a kheap" - `(let ((heap ,heap) (size ,size)) + `(let ((heap ,heap) + (size ,size)) (set! (-> heap base) (malloc 'global size)) (set! (-> heap current) (-> heap base)) (set! (-> heap top-base) (&+ (-> heap base) size)) - (set! (-> heap top) (-> heap top-base)) - ) - ) + (set! (-> heap top) (-> heap top-base)))) (defmacro kheap-reset (heap) "reset the kheap, so you can use its memory again" - `(let ((heap ,heap)) - (set! (-> heap current) (-> heap base)) - ) - ) + `(let ((heap ,heap)) (set! (-> heap current) (-> heap base)))) (defmacro with-sp (&rest body) "execute the body with sp bound to the current stack pointer (be careful!)" - `(rlet ((sp :reg rsp :reset-here #t :type pointer)) - ,@body) - ) + `(rlet ((sp :reg rsp :reset-here #t :type pointer)) ,@body)) (defmacro scratchpad-object (type &key (offset 0)) "Access an object on the scratchpad." - `(the-as ,type (&+ *fake-scratchpad-data* ,offset)) - ) + `(the-as ,type (&+ *fake-scratchpad-data* ,offset))) (defmacro scratchpad-ptr (type &key (offset 0)) "Create a pointer to an object on the scratchpad." - `(the-as (pointer ,type) (&+ *fake-scratchpad-data* ,offset)) - ) - + `(the-as (pointer ,type) (&+ *fake-scratchpad-data* ,offset))) ;; Some assembly functions in GOAL are ported to C++, then accessed from GOAL using these mips2c macros. (defmacro def-mips2c (name type) "Define a mips2c object (typically a function)." `(begin - (define-extern ,name ,type) - (set! ,name (the-as ,type (__pc-get-mips2c ,(symbol->string name)))) - ) - ) + (define-extern ,name ,type) + (set! ,name (the-as ,type (__pc-get-mips2c ,(symbol->string name)))))) (defmacro defmethod-mips2c (name method-id method-type) "Define a mips2c method." - `(method-set! ,method-type ,method-id (__pc-get-mips2c ,name)) - ) \ No newline at end of file + `(method-set! ,method-type ,method-id (__pc-get-mips2c ,name))) diff --git a/goal_src/jak1/kernel/gkernel.gc b/goal_src/jak1/kernel/gkernel.gc index fe928bfd80..e19f3ec745 100644 --- a/goal_src/jak1/kernel/gkernel.gc +++ b/goal_src/jak1/kernel/gkernel.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "KERNEL.CGO") - (require "kernel/gkernel-h.gc") (require "kernel/gstring-h.gc") -;; name: gkernel.gc -;; name in dgo: gkernel -;; dgos: KERNEL - ;; The GOAL kernel provides: ;; - threads/stack management ;; - processes, and the process pools @@ -32,6 +27,7 @@ ;; Set version number symbols (define *kernel-version* (the binteger (logior (ash *kernel-major-version* 16) *kernel-minor-version*))) + (define *irx-version* (the binteger (logior (ash *irx-major-version* 16) *irx-minor-version*))) ;; Set default options. The C Kernel may modify these before loading the engine. @@ -49,7 +45,9 @@ ;; Some debug stats. Unused. (define *last-loado-length* 0) + (define *last-loado-global-usage* 0) + (define *last-loado-debug-usage* 0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -62,8 +60,7 @@ ;; Note - the actual relocation method of process is in relocate.gc. (defmethod relocate ((this object) (offset int)) - this - ) + this) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Kernel Package System @@ -79,41 +76,38 @@ "Load a Package from a CGO/DGO" (unless (nmember package *kernel-packages*) (dgo-load package allocation (link-flag output-load-msg output-load-true-msg execute-login print-login) #x200000) - (set! *kernel-packages* (cons package *kernel-packages*)) - ) - ) + (set! *kernel-packages* (cons package *kernel-packages*)))) (defun unload-package ((package string)) "Mark a package as unloaded, if it was loaded previously" (let ((pack (nmember package *kernel-packages*))) (when pack - (set! *kernel-packages* (delete! (car pack) *kernel-packages*)) - ) - *kernel-packages* - ) - ) + (set! *kernel-packages* (delete! (car pack) *kernel-packages*))) + *kernel-packages*)) (define *test-vec4s* (new 'static 'vec4s :x 0. :y 0. :z 0. :w 0.)) -(inspect *test-vec4s*) +(inspect *test-vec4s*) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Kernel Globals ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; The kernel context is a global which stores the state of the kernel. -(define *kernel-context* (new 'static 'kernel-context - :prevent-from-run (process-mask execute sleep) - :next-pid 2 ;; 1 will be listener - :current-process #f - :relocating-process #f - :low-memory-message #t - ) - ) +(define *kernel-context* + (new 'static + 'kernel-context + :prevent-from-run (process-mask execute sleep) + :next-pid 2 + ;; 1 will be listener + :current-process #f + :relocating-process #f + :low-memory-message #t)) ;; the main stack for running GOAL code! ;; most user code runs using *dram-stack* (define *dram-stack* (new 'global 'array 'uint8 DPROCESS_STACK_SIZE)) + ;; note - this name is a bit confusing. The kernel-dram-stack is not the stack that the kernel runs in. ;; I think it refers to the fact that it's _not_ the scratchpad stack (defconstant *kernel-dram-stack* (&+ *dram-stack* DPROCESS_STACK_SIZE)) @@ -125,48 +119,29 @@ ;; without executing anything, to find a process for instance. (define *null-kernel-context* (new 'static 'kernel-context)) - ;; scratchpad setup (#cond (PC_PORT - ;; we'll create a fake scratchpad: - ;; make sure the scratchpad is 64kb aligned, and make it 32 kB so we can big stacks on it. - ;; some (partially buggy) code in generic tie relies on 64 kB alignment. - (let* ((mem (new 'global 'array 'uint8 (* 128 1024))) - ) - (define *fake-scratchpad-data* (the pointer (align-n mem (* 64 1024)))) - ) - - ;; use the same memory for the scratchpad stacks. - ;; defining it as a separate thing so we can split them for debugging stack corruption easily. - (define *fake-scratchpad-stack* *fake-scratchpad-data*) - - (defmacro scratchpad-start () - "Get the start of the scratchpad. At least 64kB aligned." - '*fake-scratchpad-data* - ) - ) - (else - (defmacro scratchpad-start () - #x70000000 - ) - ) - ) + ;; we'll create a fake scratchpad: + ;; make sure the scratchpad is 64kb aligned, and make it 32 kB so we can big stacks on it. + ;; some (partially buggy) code in generic tie relies on 64 kB alignment. + (let* ((mem (new 'global 'array 'uint8 (* 128 1024)))) + (define *fake-scratchpad-data* (the pointer (align-n mem (* 64 1024))))) + ;; use the same memory for the scratchpad stacks. + ;; defining it as a separate thing so we can split them for debugging stack corruption easily. + (define *fake-scratchpad-stack* *fake-scratchpad-data*) + (defmacro scratchpad-start () + "Get the start of the scratchpad. At least 64kB aligned." + '*fake-scratchpad-data*)) + (else (defmacro scratchpad-start () #x70000000))) (defmacro scratchpad-end () "Get the end of the scratchpad memory" - `(&+ (scratchpad-start) (* 16 1024)) - ) + `(&+ (scratchpad-start) (* 16 1024))) (defmacro in-scratchpad? (x) "Is the given address in the scratchpad?" - `(and - (>= (the-as int ,x) (scratchpad-start)) - (< (the-as int ,x) (scratchpad-end)) - ) - ) - - + `(and (>= (the-as int ,x) (scratchpad-start)) (< (the-as int ,x) (scratchpad-end)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Thread and CPU Thread @@ -193,13 +168,10 @@ This assumes it's the top-thread of the process and restores the previous top thread." (when (eq? this (-> this process main-thread)) ;; We have attempted to delete the main thread, which is bad. - (break) - ) - + (break)) ;; restore the old top-thread. (set! (-> this process top-thread) (-> this previous)) - (none) - ) + (none)) (defmethod print ((this thread)) "Print thread." @@ -210,7 +182,6 @@ "Set the backup stack size of a thread. This should only be done on the main-thread. This should be done immediately after allocating the main-thread. Users can do this if they want a larger or smaller backup stack than the default." - (let ((proc (-> this process))) (cond ((neq? this (-> proc main-thread)) @@ -218,24 +189,15 @@ (msg-err "illegal attempt change stack size of ~A when the main-thread is not the top-thread.~%" proc) (break) ;; ADDED ) - ((= (-> this stack-size) stack-size) ;; we already have this size. Don't do anything. ) - ((eq? (-> proc heap-cur) (&+ this (-> this type size) (- *gtype-basic-offset*) (-> this stack-size))) ;; our heap cur point to right after us. So we can safely bump it forward to give us more space. (set! (-> proc heap-cur) (the pointer (&+ this (-> this type size) (- *gtype-basic-offset*) stack-size))) - (set! (-> this stack-size) stack-size) - ) - (else - (msg-err "illegal attempt change stack size of ~A after more heap allocation has occured.~%" proc) - (break) - ) - ) - ) - (none) - ) + (set! (-> this stack-size) stack-size)) + (else (msg-err "illegal attempt change stack size of ~A after more heap allocation has occured.~%" proc) (break)))) + (none)) (defmethod new cpu-thread ((allocation symbol) (type-to-make type) (parent-process process) (name symbol) (stack-size int) (stack-top pointer)) "Create a new CPU thread. If there is no main thread, it will allocate the main thread on the process. @@ -244,29 +206,22 @@ This is a special new method which ignores the allocation symbol. The stack-top is for the execution stack. The stack-size is for the backup stack (applicable for main thread only)" - ;; first, let's see if we're doing the main or temp thread (let* ((this (cond - ((-> parent-process top-thread) - ;; we're allocating a temporary thread, the main thread already exists. - ;; we can stash the cpu-thread structure at the bottom of the stack. - ;; we use the smaller PROCESS_STACK_SIZE, in case we're running on the scratchpad. - (the cpu-thread (&+ stack-top (- PROCESS_STACK_SIZE) *gtype-basic-offset*)) - ) - (else - ;; the main thread. We need the main thread's cpu-thread to stick around, so we put it in the - ;; process heap. - (let ((alloc (align16 (-> parent-process heap-cur)))) ;; start at heap cur, aligned - ;; bump heap to include our thread + its stack - (set! (-> parent-process heap-cur) (the pointer (+ alloc (-> type-to-make size) stack-size))) - (the cpu-thread (+ alloc *gtype-basic-offset*)) - ) - ) - ))) - + ((-> parent-process top-thread) + ;; we're allocating a temporary thread, the main thread already exists. + ;; we can stash the cpu-thread structure at the bottom of the stack. + ;; we use the smaller PROCESS_STACK_SIZE, in case we're running on the scratchpad. + (the cpu-thread (&+ stack-top (- PROCESS_STACK_SIZE) *gtype-basic-offset*))) + (else + ;; the main thread. We need the main thread's cpu-thread to stick around, so we put it in the + ;; process heap. + (let ((alloc (align16 (-> parent-process heap-cur)))) ;; start at heap cur, aligned + ;; bump heap to include our thread + its stack + (set! (-> parent-process heap-cur) (the pointer (+ alloc (-> type-to-make size) stack-size))) + (the cpu-thread (+ alloc *gtype-basic-offset*))))))) ;; set up the type manually, as we allocated the memory manually (set! (-> this type) type-to-make) - ;; set up thread (set! (-> this name) name) (set! (-> this process) parent-process) @@ -277,24 +232,18 @@ (set! (-> this previous) (-> parent-process top-thread)) ;; and make us the top! (set! (-> parent-process top-thread) this) - ;; set up our suspend/resume hooks. By default just use the thread's methods. ;; but something else could install a different hook if needed. (set! (-> this suspend-hook) (method-of-object this thread-suspend)) (set! (-> this resume-hook) (method-of-object this thread-resume)) - ;; remember how much space we have for the backup stack. (set! (-> this stack-size) stack-size) - this - ) - ) - + this)) (defmethod asize-of ((this cpu-thread)) "Get the size of a cpu-thread" ;; we need this because the cpu-thread is stored in the process stack - (the int (+ (-> this type size) (-> this stack-size))) - ) + (the int (+ (-> this type size) (-> this stack-size)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Remove Exit @@ -304,10 +253,7 @@ "Pops a single stack frame, if there is one. User code can call this before doing a 'go' to avoid running the exit for the current state." (when (-> self stack-frame-top) - (set! (-> self stack-frame-top) (-> self stack-frame-top next)) - ) - ) - + (set! (-> self stack-frame-top) (-> self stack-frame-top next)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Process Tree @@ -319,11 +265,11 @@ (defun-debug stream<-process-mask ((arg0 object) (arg1 process-mask)) (bit-enum->string process-mask arg1 arg0) - arg1 - ) + arg1) (define *master-mode* 'game) ;; game, process, menu, pause -(define *pause-lock* #f) ;; set to #t when paused and doing a single frame advance with R2. + +(define *pause-lock* #f) ;; set to #t when paused and doing a single frame advance with R2. (defmethod new process-tree ((allocation symbol) (type-to-make type) (name basic)) "Create a process-tree node" @@ -334,14 +280,11 @@ (set! (-> this parent) #f) (set! (-> this brother) #f) (set! (-> this child) #f) - (set! (-> this self) this) (set! (-> this ppointer) (the (pointer process) (&-> this self))) - this - ) - ) + this)) -(defmethod inspect process-tree ((this process-tree)) +(defmethod inspect ((this process-tree)) "Inspect a process-tree node." (format #t "[~8x] ~A~%" this (-> this type)) (format #t "~Tname: ~S~%" (-> this name)) @@ -349,17 +292,14 @@ (format #t "~Tparent: ~A~%" (ppointer->process (-> this parent))) (format #t "~Tbrother: ~A~%" (ppointer->process (-> this brother))) (format #t "~Tchild: ~A~%" (ppointer->process (-> this child))) - this - ) - + this) (defmethod new process ((allocation symbol) (type-to-make type) (name basic) (stack-size int)) "Allocate a new process. The process stack is initially set to the entire process memory." (let ((this (if (eq? (-> allocation type) symbol) - (object-new allocation type-to-make (the int (+ (-> process size) stack-size))) ;; symbol, allocate on heap - (the process (&+ allocation *gtype-basic-offset*))))) ;; treat as address. - + (object-new allocation type-to-make (the int (+ (-> process size) stack-size))) ;; symbol, allocate on heap + (the process (&+ allocation *gtype-basic-offset*))))) ;; treat as address. ;; initialize (set! (-> this name) name) (set! (-> this status) 'dead) @@ -368,11 +308,9 @@ (set! (-> this allocated-length) stack-size) (set! (-> this top-thread) #f) (set! (-> this main-thread) #f) - ;; set up the heap to start at the stack (set! (-> this heap-cur) (-> this stack)) (set! (-> this heap-base) (-> this stack)) - ;; and end at the end of the stack. (set! (-> this heap-top) (&-> (-> this stack) (-> this allocated-length))) ;;;;;;;;;;;;;;;;;;;;;;;;; @@ -382,29 +320,23 @@ ;; but this overlaps with the stack-frame-top and did nothing. ;; this is likely because they added the concept of heap "top" to kheaps in ;; general, but not to process heaps. - ;; setup state stuff (set! (-> this stack-frame-top) #f) (set! (-> this state) #f) (set! (-> this next-state) #f) (set! (-> this entity) #f) - ;; setup handlers (set! (-> this trans-hook) #f) (set! (-> this post-hook) #f) (set! (-> this event-hook) #f) - ;; setup process tree (set! (-> this parent) #f) (set! (-> this brother) #f) (set! (-> this child) #f) - ;; setup reference stuff. (set! (-> this self) this) (set! (-> this ppointer) (the (pointer process) (&-> this self))) - this - ) - ) + this)) (defun inspect-process-heap ((this process)) "Inspect the heap of a process." @@ -414,10 +346,7 @@ ;; inspect the object (inspect (the basic ptr)) ;; seek to the next object on the heap. - (&+! ptr (the int (align16 (asize-of (the basic ptr))))) - ) - ) - ) + (&+! ptr (the int (align16 (asize-of (the basic ptr)))))))) (defmethod inspect ((this process)) (format #t "[~8x] ~A~%" this (-> this type)) @@ -440,41 +369,35 @@ (format #t "~Theap-base: #x~X~%" (-> this heap-base)) (format #t "~Theap-top: #x~X~%" (-> this heap-top)) (format #t "~Theap-cur: #x~X~%" (-> this heap-cur)) - ;; print all objects on the process heap (protect (*print-column*) - (+! *print-column* *tab-size*) - (format #t "----~%") - (inspect-process-heap this) - (format #t "----~%") - ) - + (+! *print-column* *tab-size*) + (format #t "----~%") + (inspect-process-heap this) + (format #t "----~%")) (format #t "~Tallocated-length: ~D~%" (-> this allocated-length)) (format #t "~Tstack[~D] @ #x~X~%" (-> this allocated-length) (-> this stack)) - this - ) + this) (defmethod asize-of ((this process)) - (the int (+ (-> process size) (-> this allocated-length))) - ) + (the int (+ (-> process size) (-> this allocated-length)))) (defmethod print ((this process)) - (format #t "#<~A ~S ~A :state ~S " + (format #t + "#<~A ~S ~A :state ~S " (-> this type) (-> this name) (-> this status) - (when (-> this state) (-> this state name))) - - (format #t ":stack ~D/~D :heap ~D/~D @ #x~X>" + (when (-> this state) + (-> this state name))) + (format #t + ":stack ~D/~D :heap ~D/~D @ #x~X>" (process-stack-used this) (process-stack-size this) (process-heap-used this) (process-heap-size this) - this - ) - this - ) - + this) + this) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Context Suspend And Resume - Kernel @@ -496,7 +419,7 @@ To make sure this happens, all ops should be asm ops and we should have no GOAL expressions." (declare (asm-func none) - ;(print-asm) + ;(print-asm) ) (rlet ((sp :reg rsp :type uint) (off :reg r15 :type uint) @@ -504,13 +427,11 @@ (s1 :reg rbp :type uint) (s2 :reg r10 :type uint) (s3 :reg r11 :type uint) - (s4 :reg r12 :type uint) - ) + (s4 :reg r12 :type uint)) ;; get the kernel stack pointer as a GOAL pointer (won't use a temp reg) (.load-sym :sext #f sp *kernel-sp*) ;; convert it back to a real pointer (.add sp off) - ;; restore saved registers... ;; without coloring system because this is "cheating" and modifying saved registers without backing up. (.pop :color #f s4) @@ -520,15 +441,13 @@ (.pop :color #f s0) ;; return to the kernel function that called the user code ;; rax should still contain the return value. - (.ret) - ) - ) + (.ret))) (defun return-from-thread-dead () "Like return from thread, but we clean up our process with deactivate first. The return register is not preserved here, instead we return the value of deactivate" (declare (asm-func none) - ;(print-asm) + ;(print-asm) ) (rlet ((pp :reg r13 :type process) (sp :reg rsp :type uint) @@ -537,16 +456,13 @@ (s1 :reg rbp :type uint) (s2 :reg r10 :type uint) (s3 :reg r11 :type uint) - (s4 :reg r12 :type uint) - ) - + (s4 :reg r12 :type uint)) ;; first call the deactivate method. (deactivate pp) ;; get the kernel stack pointer as a GOAL pointer (.load-sym :sext #f sp *kernel-sp*) ;; convert it back to a real pointer (.add sp off) - ;; restore saved registers... ;; without coloring system because this is "cheating". (.pop :color #f s4) @@ -555,9 +471,7 @@ (.pop :color #f s1) (.pop :color #f s0) ;; return to the kernel function that called the user code - (.ret) - ) - ) + (.ret))) (defmacro abandon-thread () ;; abandon this one too. @@ -567,13 +481,11 @@ ;; I can't see how this makes a difference, as all non-main threads seem ;; temporary, but if this turns out to be false, we will need to change this. `(rlet ((temp) - (off :reg r15 :type uint :reset-here #t)) + (off :reg r15 :type uint :reset-here #t)) (.mov temp return-from-thread) ;; could probably just call this... (.add temp off) (.push temp) - (.ret) - ) - ) + (.ret))) (defun reset-and-call ((this thread) (func function)) "Make the given thread the top thread, reset the stack, and call the function. @@ -581,9 +493,7 @@ kernel context. Will NOT deactivate on return, so this is intended for temporary threads. NOTE: this should only be done from the kernel, running on the kernel's stack." - (declare (asm-func object) - ) - + (declare (asm-func object)) (rlet ((pp :reg r13 :type process) (sp :reg rsp :type uint) (off :reg r15 :type uint) @@ -592,41 +502,32 @@ (s2 :reg r10 :type uint) (s3 :reg r11 :type uint) (s4 :reg r12 :type uint) - (temp :reg rax :type uint) - ) - + (temp :reg rax :type uint)) ;; set up the process pointer (set! pp (-> this process)) ;; mark the process as running and set its top thread (set! (-> pp status) 'running) (set! (-> pp top-thread) this) - ;; save the current kernel regs (.push :color #f s0) (.push :color #f s1) (.push :color #f s2) (.push :color #f s3) (.push :color #f s4) - ;; make rsp a GOAL pointer (.sub sp off) ;; and store it (set! *kernel-sp* (the pointer sp)) ;; todo, asm form here? - ;; setup the rsp for the new thread (set! sp (the uint (-> this stack-top))) (.add sp off) - ;; push the return trampoline to the stack for the user code to return to (set! temp (the uint return-from-thread)) (.add temp off) - (.push temp) ;; stack now 16 + 8 aligned + (.push temp) ;; stack now 16 + 8 aligned ;; and call the function! (.add func off) - (.jr func) - ) - ) - + (.jr func))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Context Suspend And Resume - Thread @@ -636,9 +537,7 @@ (defmethod thread-suspend ((unused cpu-thread)) "Suspend the thread and return to the kernel." - (declare (asm-func none)) - ;; we begin this function with the thread object in pp. ;; not sure why we do this, maybe at one point suspending didn't clobber ;; temp registers? @@ -651,7 +550,6 @@ (s2 :reg r10 :type uint) (s3 :reg r11 :type uint) (s4 :reg r12 :type uint) - (xmm8 :reg xmm8 :class fpr) (xmm9 :reg xmm9 :class fpr) (xmm10 :reg xmm10 :class fpr) @@ -659,21 +557,17 @@ (xmm12 :reg xmm12 :class fpr) (xmm13 :reg xmm13 :class fpr) (xmm14 :reg xmm14 :class fpr) - (xmm15 :reg xmm15 :class fpr) - ) - + (xmm15 :reg xmm15 :class fpr)) ;; get the return address pushed by "call" in the suspend. (.pop temp) ;; convert to a GOAL address (.sub temp off) ;; store return address in thread (set! (-> this pc) (the pointer temp)) - ;; convert our stack pointer to a GOAL address (.sub sp off) ;; store in thread. (set! (-> this sp) (the pointer sp)) - ;; back up registers (.mov :color #f temp s0) (set! (-> this rreg 0) temp) @@ -685,7 +579,6 @@ (set! (-> this rreg 3) temp) (.mov :color #f temp s4) (set! (-> this rreg 4) temp) - ;; back up fprs (.mov :color #f temp xmm8) (set! (-> this freg 0) (the-as float temp)) @@ -703,9 +596,6 @@ (set! (-> this freg 6) (the-as float temp)) (.mov :color #f temp xmm15) (set! (-> this freg 7) (the-as float temp)) - - - ;; get our process (let ((proc (-> this process))) (when (> (process-stack-used proc) (-> this stack-size)) @@ -713,28 +603,20 @@ ;; if you hit this, try with DEBUG_PRINT_SUSPEND_FAIL set to #t (see gkernel-h.gc) ;; it will print more info before reaching here. ) - ;; mark the process as suspended and copy the stack (set! (-> proc status) 'suspended) (let ((cur (the (pointer uint64) (-> this stack-top))) - (save (&+ (the (pointer uint64) (-> this stack)) (-> this stack-size))) - ) + (save (&+ (the (pointer uint64) (-> this stack)) (-> this stack-size)))) (while (> (the int cur) (the int sp)) (set! cur (the (pointer uint64) (&- cur 8))) (set! save (the (pointer uint64) (&- save 8))) - (set! (-> save) (-> cur)) - ) - ) - ) - + (set! (-> save) (-> cur))))) ;; actually setting pp to 0 (set! this (the cpu-thread 0)) - ;; get the kernel stack pointer as a GOAL pointer (.load-sym :sext #f sp *kernel-sp*) ;; convert it back to a real pointer (.add sp off) - ;; restore saved registers... ;; without coloring system because this is "cheating". (.pop :color #f s4) @@ -743,11 +625,8 @@ (.pop :color #f s1) (.pop :color #f s0) ;; return to the kernel function that called the user code - (.ret) - ) - (none) - ) - + (.ret)) + (none)) (defmethod thread-resume ((thread-to-resume cpu-thread)) "Resume a suspended thread. Call this from the kernel only. @@ -756,7 +635,6 @@ (declare (asm-func none) ;;(print-asm) ) - (rlet ((this :reg r13 :type cpu-thread) (temp :reg rax :type uint) (off :reg r15 :type uint) @@ -768,7 +646,6 @@ (s4 :reg r12 :type uint) (a4 :reg r8 :type uint) (a5 :reg r9 :type uint) - (temp-float :reg xmm0 :class fpr) (xmm8 :reg xmm8 :class fpr) (xmm9 :reg xmm9 :class fpr) @@ -777,45 +654,33 @@ (xmm12 :reg xmm12 :class fpr) (xmm13 :reg xmm13 :class fpr) (xmm14 :reg xmm14 :class fpr) - (xmm15 :reg xmm15 :class fpr) - ) - + (xmm15 :reg xmm15 :class fpr)) ;; save the current kernel regs (.push :color #f s0) (.push :color #f s1) (.push :color #f s2) (.push :color #f s3) (.push :color #f s4) - ;; make rsp a GOAL pointer (.sub sp off) ;; and store it (set! *kernel-sp* (the pointer sp)) ;; todo, asm form here? - ;; temp, stash thread in process-pointer (set! this thread-to-resume) - ;; set stack pointer for the thread. leave it as a GOAL pointer for now.. (set! sp (the uint (-> this sp))) - ;; restore the stack (sp is a GOAL pointer) (let ((cur (the (pointer uint64) (-> this stack-top))) - (restore (&+ (the (pointer uint64) (-> this stack)) (-> this stack-size))) - ) + (restore (&+ (the (pointer uint64) (-> this stack)) (-> this stack-size)))) (while (> (the int cur) (the int sp)) (set! cur (the (pointer uint64) (&- cur 8))) (set! restore (the (pointer uint64) (&- restore 8))) - (set! (-> cur) (-> restore)) - ) - ) - + (set! (-> cur) (-> restore)))) ;; offset sp after we're done using it as a GOAL pointer. (.add sp off) - ;; setup process (set! (-> (-> this process) top-thread) this) (set! (-> (-> this process) status) 'running) - ;; restore reg (set! temp (-> this rreg 0)) (.mov :color #f s0 temp) @@ -843,12 +708,10 @@ (.mov :color #f xmm14 temp-float) (set! temp-float (-> this freg 7)) (.mov :color #f xmm15 temp-float) - ;; hack for set-to-run-bootstrap. The set-to-run-bootstrap in MIPS ;; expects to receive 7 values from the cpu thread's rregs. ;; usually rreg holds saved registers, but on the first resume after ;; a set-to-run, they hold arguments, and set-to-run-bootstrap copies them. - ;; We only have 5 saved regs, so we need to cheat and directly pass ;; two values in other registers ;; so we load the a4/a5 argument registers with rreg 5 and rreg 6 @@ -858,21 +721,16 @@ (.mov a4 temp) (set! temp (-> this rreg 6)) (.mov a5 temp) - ;; get the resume address (set! temp (the uint (-> this pc))) (.add temp off) - ;; setup the process (set! this (the cpu-thread (-> this process))) ;; resume! (.jr temp) (.add a4 a4) - (.add a5 a5) - ) - (none) - ) - + (.add a5 a5)) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Process Dead Pool @@ -880,7 +738,6 @@ ;; a dead pool is just a collection of dead processes of a fixed size. - (define-extern *debug-dead-pool* dead-pool-heap) (defmethod new dead-pool ((allocation symbol) (type-to-make type) (count int) (stack-size int) (name basic)) @@ -896,7 +753,6 @@ ;; setup ref (set! (-> this self) this) (set! (-> this ppointer) (the (pointer process) (&-> this self))) - (dotimes (i count) ;; create each process (let ((old-bro (-> this child)) @@ -904,31 +760,26 @@ (set! (-> this child) (process->ppointer next)) (set! (-> next parent) (process->ppointer this)) (set! (-> next pool) this) - (set! (-> next brother) old-bro) - ) - ) - this - ) - ) + (set! (-> next brother) old-bro))) + this)) (defmethod get-process ((this dead-pool) (type-to-make type) (stack-size int)) "Get a process from this dead pool of the given type." (let ((proc (-> this child))) - (when (and (not proc) *debug-segment* (neq? this *debug-dead-pool*)) ;; we failed, but we're in debug mode and not looking at the debug pool ;; try again from the debug pool and warn if this works (set! proc (the (pointer process-tree) (get-process *debug-dead-pool* type-to-make stack-size))) (when proc - (format 0 "WARNING: ~A ~A had to be allocated from the debug pool, because ~A was empty.~%" - type-to-make (ppointer->process proc) (-> this name)) - ) + (format 0 + "WARNING: ~A ~A had to be allocated from the debug pool, because ~A was empty.~%" + type-to-make + (ppointer->process proc) + (-> this name))) ;; there's a bug here. proc is a process here, but will be used as a process pointer. ;; let's just kill the program here. ;; this is likely a copy-paste bug from get-process dead-pool-heap. - (break) - ) - + (break)) (cond (proc ;; success! set our type and return. @@ -936,20 +787,17 @@ (the process (-> proc)) ;; cast from process-tree to process. ) (else - (format 0 "WARNING: ~A ~A could not be allocated, because ~A was empty.~%" - type-to-make (ppointer->process proc) (-> this name)) - (the process #f) - ) - ) - ) - ) - + (format 0 + "WARNING: ~A ~A could not be allocated, because ~A was empty.~%" + type-to-make + (ppointer->process proc) + (-> this name)) + (the process #f))))) (defmethod return-process ((this dead-pool) (proc process)) "Return a process to its pool once you are done with it." (change-parent proc this) - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Process Dead Pool Heap @@ -968,48 +816,39 @@ (defmethod new dead-pool-heap ((allocation symbol) (type-to-make type) (name basic) (allocated-length int) (heap-size int)) "Create a new dead pool heap. It will support allocated-length processes and have a total heap size of heap-size" - (let ((this (object-new allocation type-to-make (+ (the int (-> type-to-make size)) - (the int (align16 (* allocated-length 12))) - heap-size)))) + (let ((this (object-new allocation + type-to-make + (+ (the int (-> type-to-make size)) (the int (align16 (* allocated-length 12))) heap-size)))) (set! (-> this name) name) (set! (-> this mask) (process-mask process-tree)) (set! (-> this allocated-length) allocated-length) (set! (-> this parent) #f) (set! (-> this brother) #f) (set! (-> this child) #f) - (set! (-> this self) this) (set! (-> this ppointer) (the (pointer process) (&-> this self))) - ;; initialize each process handle ;; build them into a linked list of null-process (countdown (i allocated-length) (let ((rec (-> this process-list i))) (set! (-> rec process) *null-process*) - (set! (-> rec next) (-> this process-list (+ i 1))) - ) - ) - + (set! (-> rec next) (-> this process-list (+ i 1))))) ;; set up the dead-list (set! (-> this dead-list next) (-> this process-list 0)) (set! (-> this alive-list process) #f) ;; likely typo here, should be dead-list (set! (-> this process-list (- allocated-length 1) next) #f) - ;; nothing is alive (set! (-> this last) (-> this alive-list)) (set! (-> this alive-list next) #f) (set! (-> this alive-list process) #f) (set! (-> this first-gap) (-> this alive-list)) (set! (-> this first-shrink) #f) - ;; setup the heap. It just begins after the process records. (set! (-> this heap base) (the pointer (align16 (-> this process-list allocated-length)))) (set! (-> this heap current) (-> this heap base)) (set! (-> this heap top) (&+ (-> this heap base) heap-size)) (set! (-> this heap top-base) (-> this heap top)) - this - ) - ) + this)) (defmethod gap-location ((this dead-pool-heap) (rec dead-pool-heap-rec)) "Get the gap after the given process. @@ -1020,11 +859,7 @@ (the pointer (&+ (-> rec process) (-> process size) (-> rec process allocated-length) (- *gtype-basic-offset*))) ;; start of proc end of type data process's heap basic offset ) - (else - (-> this heap base) - ) - ) - ) + (else (-> this heap base)))) (defmethod gap-size ((this dead-pool-heap) (rec dead-pool-heap-rec)) "Determine the size between the given process and the next process or end of the heap. @@ -1035,32 +870,22 @@ ;; compute the end of my process (no basic offset) (let ((my-end (&+ (-> rec process) (-> process size) (-> rec process allocated-length)))) (if (-> rec next) - ;; if there's a next process, look at the difference to the next (basic offsets cancel) - (&- (-> rec next process) my-end) - ;; no next process, look at the top of the heap. - (&- (-> this heap top) (&+ my-end *gtype-basic-offset*)) - ) - ) - ) + ;; if there's a next process, look at the difference to the next (basic offsets cancel) + (&- (-> rec next process) my-end) + ;; no next process, look at the top of the heap. + (&- (-> this heap top) (&+ my-end *gtype-basic-offset*))))) (else (if (-> rec next) - (&- (-> rec next process) (&+ (-> this heap base) *gtype-basic-offset*)) - (&- (-> this heap top) (-> this heap base))) - ) - ) - ) - ) + (&- (-> rec next process) (&+ (-> this heap base) *gtype-basic-offset*)) + (&- (-> this heap top) (-> this heap base))))))) (defmethod find-gap ((this dead-pool-heap) (rec dead-pool-heap-rec)) "Start at the given record and find the closest gap after it. Returns the rec which has the gap after it. If no gaps, returns the last rec." (while (and (-> rec next) (zero? (gap-size this rec))) - ; no gap here! - (set! rec (-> rec next)) - ) - rec - ) - + ; no gap here! + (set! rec (-> rec next))) + rec) (defmethod inspect ((this dead-pool-heap)) "Inspect a dead-pool-heap and all of the recs and their gaps" @@ -1079,85 +904,62 @@ (format #t "~Talive-list: #~%" (-> this alive-list)) (format #t "~Tlast: #~%" (-> this last)) (format #t "~Tdead-list: #~%" (-> this dead-list)) - ;; here we consider the free memory to be all of the stuff after the last process. ;; we don't consider random gaps to be "free". ;; this means you can do a single allocation of free bytes and it will always succeed. (let* ((total (the int (&- (-> this heap top) (-> this heap base)))) - (free (if (-> this last) - (gap-size this (-> this last)) - total)) - ) - (format #t "~Tprocess-list[0] @ #x~X ~D/~D bytes used~%" (-> this process-list) (- total free) total) - ) - + (free (if (-> this last) (gap-size this (-> this last)) total))) + (format #t "~Tprocess-list[0] @ #x~X ~D/~D bytes used~%" (-> this process-list) (- total free) total)) (let ((rec (-> this alive-list)) - (i 0) - ) + (i 0)) (while rec (when (-> rec process) - (format #t "~T [~3D] # ~A~%" i rec (-> rec process)) - ) + (format #t "~T [~3D] # ~A~%" i rec (-> rec process))) (let ((gap (gap-size this rec))) (unless (zero? gap) - (format #t "~T gap: ~D bytes @ #x~X~%" gap (gap-location this rec))) - ) + (format #t "~T gap: ~D bytes @ #x~X~%" gap (gap-location this rec)))) (set! rec (-> rec next)) - (+! i 1) - ) - ) - + (+! i 1))) this) (defmethod asize-of ((this dead-pool-heap)) "Get our total size. Uses the heap top as the end." - (- (the int (-> this heap top)) (the int this) *gtype-basic-offset*) - ) + (- (the int (-> this heap top)) (the int this) *gtype-basic-offset*)) (defmethod memory-used ((this dead-pool-heap)) "Get the amount of memory used. This includes gaps between processes." (if (-> this last) - ; we have at least one process, get the not-last-gap memory - (- (memory-total this) (gap-size this (-> this last))) - ; no processes. - 0 - ) - ) + ; we have at least one process, get the not-last-gap memory + (- (memory-total this) (gap-size this (-> this last))) + ; no processes. + 0)) (defmethod memory-total ((this dead-pool-heap)) "Get the total amount of memory for processes" - (the int (&- (-> this heap top) (-> this heap base))) - ) + (the int (&- (-> this heap top) (-> this heap base)))) (defmethod memory-free ((this dead-pool-heap)) "Get the total memory free." (let ((top (-> this heap top))) (if (-> this last) - ; get the last gap size - (gap-size this (-> this last)) - ; otherwise just the whole heap. - (the int (&- top (-> this heap base))) - ) - ) - ) + ; get the last gap size + (gap-size this (-> this last)) + ; otherwise just the whole heap. + (the int (&- top (-> this heap base)))))) (defmethod compact-time ((this dead-pool-heap)) "Access the compact time field." - (-> this compact-time) - ) + (-> this compact-time)) (defmethod find-gap-by-size ((this dead-pool-heap) (size int)) "Find a gap which will fit at least size bytes. Returns the rec for the proc before the gap. Will return a #f rec if there's no gap big enough." - ; start our search at first-gap + ; start our search at first-gap (let ((rec (-> this first-gap))) (while (and rec (< (gap-size this rec) size)) ;; nope, not big enough. - (set! rec (-> rec next)) - ) - rec - ) - ) + (set! rec (-> rec next))) + rec)) ;; this will be set to #t if we're using visibility data. ;; if we aren't, there will be many cases where we try to spawn too many actors, and we shouldn't @@ -1166,151 +968,105 @@ (defmethod get-process ((this dead-pool-heap) (type-to-make type) (stack-size int)) "Allocate a process" - ;; get a record for the new process (let ((rec (-> this dead-list next)) ;; will eventually hold our new process (proc (the process #f)) ;; find the rec which has a big enough gap - (insert (find-gap-by-size this (+ (the int (-> process size)) stack-size))) - ) - + (insert (find-gap-by-size this (+ (the int (-> process size)) stack-size)))) (cond ;; check we got both a record and a gap ((and rec insert) - ;; pop the record off of the list (set! (-> this dead-list next) (-> rec next)) - ;; splice it into the alive list in the right spot (let ((next (-> insert next))) ;; after the gap rec (set! (-> insert next) rec) ;; us to the process after the gap (set! (-> rec next) next) - ;; link the proc after us back (when next - (set! (-> next prev) rec) - ) + (set! (-> next prev) rec)) ;; and us back to the proc before the gap (set! (-> rec prev) insert) - ;; if we are inserting after the last process, we should update the last. (when (eq? insert (-> this last)) - (set! (-> this last) rec) - ) - + (set! (-> this last) rec)) ;; get the gap (set! proc (the process (gap-location this insert))) ;; and allocate! The method new does the offset for us. (set! proc ((method-of-type process new) (the symbol proc) process 'process stack-size)) - ;; update our rec to contain this process. (set! (-> rec process) proc) ;; and the ppointer should point to the rec, not the processs, so we can track the process if it moves. (set! (-> proc ppointer) (&-> rec process)) - ;; if we used the first gap, update first gap (when (eq? (-> this first-gap) insert) - (set! (-> this first-gap) (find-gap this rec)) - ) - + (set! (-> this first-gap) (find-gap this rec))) ;; we haven't shrunk yet. If we don't have a first-shrink, or we are before it, ;; mark us as first shrink. - (when (or (not (-> this first-shrink)) - (< (the int proc) (the int (-> this first-shrink process))) - ) - (set! (-> this first-shrink) rec) - ) - + (when (or (not (-> this first-shrink)) (< (the int proc) (the int (-> this first-shrink process)))) + (set! (-> this first-shrink) rec)) ;; update tree stuff. (set! (-> proc parent) (-> this ppointer)) (set! (-> proc pool) this) - (set! (-> this child) (&-> rec process)) - ) - - ) + (set! (-> this child) (&-> rec process)))) (else ;; allocation failed! try again on the debug heap if we're debugging. (when (and *debug-segment* (not (eq? this *debug-dead-pool*))) (set! proc (get-process *debug-dead-pool* type-to-make stack-size)) (when (and proc *vis-boot*) - (format 0 "WARNING: ~A ~A had to be allocated from the debug pool, because ~A was empty.~%" type-to-make proc (-> this name))) - ) - - ) - ) - + (format 0 + "WARNING: ~A ~A had to be allocated from the debug pool, because ~A was empty.~%" + type-to-make + proc + (-> this name)))))) (cond (proc ;; success! set type and return. - (set! (-> proc type) type-to-make) - ) + (set! (-> proc type) type-to-make)) (else ;; failure. complain. - (format 0 "WARNING: ~A ~A could not be allocated, because ~A was empty.~%" type-to-make proc (-> this name)) - ) - ) - - proc) - ) + (format 0 "WARNING: ~A ~A could not be allocated, because ~A was empty.~%" type-to-make proc (-> this name)))) + proc)) (defmethod return-process ((this dead-pool-heap) (proc process)) "Return a process to a dead pool heap" - ;; check we are returning to the correct pool (unless (eq? this (-> proc pool)) - (format 0 "ERROR: process ~A does not belong to dead-pool-heap ~A.~%" proc this) - ) - + (format 0 "ERROR: process ~A does not belong to dead-pool-heap ~A.~%" proc this)) ;; reclaim us. (change-parent proc this) - ;; we don't maintain a real tree for a dead-pool-heap, so undo any change to child ;; done by change-parent (set! (-> this child) #f) - ;; we know our ppointer is really a rec for a dead-pool-heap process, so we can use ;; this trick to quickly find our rec. (let ((rec (the dead-pool-heap-rec (-> proc ppointer)))) - ;; if we are at or below the first gap, update first gap. (when (or (eq? (-> this first-gap) rec) - (< (the int (gap-location this rec)) (the int (gap-location this (-> this first-gap)))) - ) - (set! (-> this first-gap) (-> rec prev)) - ) - - + (< (the int (gap-location this rec)) (the int (gap-location this (-> this first-gap))))) + (set! (-> this first-gap) (-> rec prev))) ;; update the first-shrink. We aren't smart about this and just move it backward. (when (eq? (-> this first-shrink) rec) (set! (-> this first-shrink) (-> rec prev)) (when (not (-> this first-shrink process)) - (set! (-> this first-shrink) #f)) - ) - + (set! (-> this first-shrink) #f))) ;; remove us from list (set! (-> rec prev next) (-> rec next)) (cond ((-> rec next) ;; update links - (set! (-> rec next prev) (-> rec prev)) - ) + (set! (-> rec next prev) (-> rec prev))) (else ;; we were last, update that. - (set! (-> this last) (-> rec prev)) - ) - ) - + (set! (-> this last) (-> rec prev)))) ;; insert at the front of the dead list. (set! (-> rec next) (-> this dead-list next)) (set! (-> this dead-list next) rec) (set! (-> rec process) *null-process*) - - (none) - ) - ) + (none))) (defmethod shrink-heap ((this dead-pool-heap) (proc process)) "Shrink the heap of a process. @@ -1319,80 +1075,55 @@ ;; get our rec. (let ((rec (the dead-pool-heap-rec (-> proc ppointer)))) ;; check if it's ok to shrink - (unless (or (process-mask? (-> proc mask) heap-shrunk) ;; already shrunk - (and (not (-> proc next-state)) ;; uninitialized - (not (-> proc state))) ;; uninitialized + (unless (or (process-mask? (-> proc mask) heap-shrunk) ;; already shrunk + (and (not (-> proc next-state)) ;; uninitialized + (not (-> proc state))) ;; uninitialized ) ;; shrink! (set! (-> proc allocated-length) (the int (&- (-> proc heap-cur) (-> proc stack)))) (set! (-> proc heap-top) (&-> (-> proc stack) (-> proc allocated-length))) - ;; update first gap (when (< (the int proc) (the int (gap-location this (-> this first-gap)))) - (set! (-> this first-gap) (find-gap this rec)) - ) - + (set! (-> this first-gap) (find-gap this rec))) ;; mark us as shrunk - (process-mask-set! (-> proc mask) heap-shrunk) - ) - + (process-mask-set! (-> proc mask) heap-shrunk)) ;; update first shrink (when (eq? (-> this first-shrink) rec) - (set! (-> this first-shrink) (-> rec next)) - ) - ) - ) - this - ) + (set! (-> this first-shrink) (-> rec next))))) + this) (defmethod compact ((this dead-pool-heap) (count int)) "Do heap compaction. The count argument tells us how much work to do. If the heap is very full we will automatically do more work than requested." - ;; first we see how much memory is in use. (let ((free (memory-free this)) - (total (memory-total this)) - ) + (total (memory-total this))) (let ((perc (/ (the float free) (the float total)))) (cond ((< perc 0.1) ;; 90% full! set count very large to try to fix this and complain. (set! count 1000) (when (and *debug-segment* (-> *kernel-context* low-memory-message)) - (format *stdcon* "~3LLow Actor Memory~%~0L") - ) - ) + (format *stdcon* "~3LLow Actor Memory~%~0L"))) ((< perc 0.2) ;; 80% full, try 4x harder - (set! count (* count 4)) - ) + (set! count (* count 4))) ((< perc 0.3) ;; 70% full, try 2x harder - (set! count (* count 2)) - ) - ) - ) - ) - + (set! count (* count 2)))))) ;; update stats (set! (-> this compact-count-targ) count) (set! (-> this compact-count) 0) - ;; and do compaction! (countdown (ii count) - ;; first try to shrink a heap. (let ((shrink (-> this first-shrink))) (when (not shrink) ;; not sure when this happens, but reset shrink if we need to. - (set! shrink (set! (-> this first-shrink) (-> this alive-list next))) - ) + (set! shrink (set! (-> this first-shrink) (-> this alive-list next)))) (when shrink ;; do a shrink! - (shrink-heap this (-> shrink process)) - ) - ) - + (shrink-heap this (-> shrink process)))) ;; now find the first gap (let ((gap (-> this first-gap))) ;; and the thing after it @@ -1403,9 +1134,7 @@ ;;(format #t "[kernel] Relocating process ~A by ~D.~%" proc (- size)) (when (< size 0) ;; bug! - (break) - ) - + (break)) ;; try shrinking before relocating. (shrink-heap this proc) ;; relocate! @@ -1413,64 +1142,37 @@ ;; update first gap (set! (-> this first-gap) (find-gap this gap)) ;; and update stats. - (+! (-> this compact-count) 1) - ) - ) - ) - ) - ) - - (none) - ) + (+! (-> this compact-count) 1)))))) + (none)) (defmethod churn ((this dead-pool-heap) (count int)) "Mess with the heap" - (countdown (ii count) (let ((rec (-> this alive-list next))) (when rec (when (or (eq? (-> this first-gap) rec) - (< (the int (gap-location this rec)) (the int (gap-location this (-> this first-gap)))) - ) + (< (the int (gap-location this rec)) (the int (gap-location this (-> this first-gap))))) (set! (-> this first-gap) (-> rec prev))) - - (when (eq? (-> this first-shrink) rec) (set! (-> this first-shrink) (-> rec prev)) (when (not (-> this first-shrink process)) - (set! (-> this first-shrink) #f)) - ) - + (set! (-> this first-shrink) #f))) (set! (-> rec prev next) (-> rec next)) (cond - ((-> rec next) - (set! (-> rec next prev) (-> rec prev)) - ) - (else - (set! (-> this last) (-> rec prev)) - ) - ) - + ((-> rec next) (set! (-> rec next prev) (-> rec prev))) + (else (set! (-> this last) (-> rec prev)))) (let* ((insert (-> this last)) - (next (-> insert next)) - ) - + (next (-> insert next))) (set! (-> insert next) rec) (set! (-> rec next) next) (when next (set! (-> next prev) rec)) (set! (-> rec prev) insert) - (set! (-> this last) rec) - (set! (-> rec process) (relocate (-> rec process) (the int (&- (gap-location this insert) - (the int (&- (-> rec process) *gtype-basic-offset*)))))) - ) - ) - ) - ) - - (none) - ) + (set! (-> rec process) + (relocate (-> rec process) + (the int (&- (gap-location this insert) (the int (&- (-> rec process) *gtype-basic-offset*)))))))))) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Process Finding @@ -1478,75 +1180,52 @@ ;; GOAL lambdas aren't real lambdas, so you have to do this. (define *global-search-name* (the basic #f)) + (define *global-search-count* 0) (define-extern search-process-tree (function process-tree (function process-tree object) process)) + (define-extern iterate-process-tree (function process-tree (function object object) kernel-context object)) + (define-extern execute-process-tree (function process-tree (function object object) kernel-context object)) (defun process-by-name (name (pool process-tree)) "Look up a process in the given pool by name" (set! *global-search-name* (the basic name)) - (search-process-tree pool (lambda ((var process)) (name= (-> var name) *global-search-name*))) - ) + (search-process-tree pool (lambda ((var process)) (name= (-> var name) *global-search-name*)))) (defun process-not-name (name (pool process-tree)) "Look up a process with not the given name." (set! *global-search-name* (the basic name)) - (search-process-tree pool (lambda ((var process)) (not (name= (-> var name) *global-search-name*)))) - ) + (search-process-tree pool (lambda ((var process)) (not (name= (-> var name) *global-search-name*))))) (defun process-count ((this process-tree)) "Count number of processes in the given tree using iterate-process-tree" (set! *global-search-count* 0) - (iterate-process-tree this - (lambda ((this process)) - (+! *global-search-count* 1) - #t) - *null-kernel-context*) + (iterate-process-tree this (lambda ((this process)) (+! *global-search-count* 1) #t) *null-kernel-context*) *global-search-count*) (defun kill-by-name (name (pool process-tree)) "Call deactivate on all process with the given name." - (let ((proc (the process-tree #f))) - (while (set! proc (process-by-name name pool)) - (deactivate proc) - ) - ) - ) + (let ((proc (the process-tree #f))) (while (set! proc (process-by-name name pool)) (deactivate proc)))) (defun kill-by-type (type (pool process-tree)) "Call deactivate on all processes with the given type" (set! *global-search-name* (the basic type)) (let ((proc (the process #f))) - (while (set! proc (search-process-tree pool (lambda ((var process)) - (= (the type *global-search-name*) - (-> var type))))) - (deactivate proc) - ) - ) - ) + (while (set! proc (search-process-tree pool (lambda ((var process)) (= (the type *global-search-name*) (-> var type))))) + (deactivate proc)))) (defun kill-not-name (name (pool process-tree)) "Call deactivate on all processes that don't match the name" - (let ((proc (the process-tree #f))) - (while (set! proc (process-not-name name pool)) - (deactivate proc) - ) - ) - ) + (let ((proc (the process-tree #f))) (while (set! proc (process-not-name name pool)) (deactivate proc)))) (defun kill-not-type (type (pool process-tree)) "Call deactivate on all prcesses that don't match the given type" (set! *global-search-name* (the basic type)) (let ((proc (the process-tree #f))) - (while (set! proc (search-process-tree pool (lambda ((var process)) - (!= (the type *global-search-name*) - (-> var type))))) - (deactivate proc) - ) - ) - ) + (while (set! proc (search-process-tree pool (lambda ((var process)) (!= (the type *global-search-name*) (-> var type))))) + (deactivate proc)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Process Iterating @@ -1562,8 +1241,7 @@ (defun iterate-process-tree ((this process-tree) (func (function object object)) (context kernel-context)) "Call func on all processes that aren't a process-tree. If func returns 'dead, stop. The kernel-context is ignored." - (let ((ret (or (process-mask? (-> this mask) process-tree) - (func this)))) + (let ((ret (or (process-mask? (-> this mask) process-tree) (func this)))) (cond ((eq? ret 'dead) ;; stop. @@ -1575,70 +1253,40 @@ ;; kinda weird, we use the brother from _before_ recursing. (let ((old-brother (-> (-> brother) brother))) (iterate-process-tree (-> brother) func context) - (set! brother old-brother) - ) - ) - ) - ) - ) - ret - ) - ) + (set! brother old-brother)))))) + ret)) (defun execute-process-tree ((this process-tree) (func (function object object)) (context kernel-context)) "Like iterate, but also requires that prevent-from-run's mask doesn't block, and that run-logic? is true in order to call the function." - ;; check mask for tree, mask for prevent, run-logic?, then run! (let ((ret (or (process-mask? (-> this mask) process-tree) - (not (and (or (zero? (logand (-> context prevent-from-run) (-> this mask)))) - (run-logic? this))) - (func this) - ))) - + (not (and (or (zero? (logand (-> context prevent-from-run) (-> this mask)))) (run-logic? this))) + (func this)))) ;; run on our children (cond ((eq? ret 'dead) ;; if dead, don't bother checking children. ) - (else (let ((brother (-> this child))) - (while brother - (let ((temp (-> (-> brother) brother))) - (execute-process-tree (-> brother) func context) - (set! brother temp)) - ) - ) - ) - ) - ret) - ) - + (else + (let ((brother (-> this child))) + (while brother + (let ((temp (-> (-> brother) brother))) (execute-process-tree (-> brother) func context) (set! brother temp)))))) + ret)) (defun search-process-tree ((this process-tree) (func (function process-tree object))) "Find the first process which func return true on. Won't find process-tree's (by mask)" - ;; reject process-tree (unless (process-mask? (-> this mask) process-tree) ;; is this a match? (when (func this) - (return (the process this)) - ) - ) - + (return (the process this)))) ;; not a match, check out children (let ((brother (-> this child))) (while brother (let ((temp (-> (-> brother) brother))) - (let ((ret (search-process-tree (-> brother) func))) - (when ret - (return ret) - ) - ) - (set! brother temp) - ) - ) - ) - (the process #f) - ) + (let ((ret (search-process-tree (-> brother) func))) (when ret (return ret))) + (set! brother temp)))) + (the process #f)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Kernel Dispatcher @@ -1646,201 +1294,139 @@ (defmacro process-name-as-string (proc) `(let ((proc-type (-> ,proc name type))) - (cond - ((= proc-type string) - (the string (-> ,proc name)) - ) - ((= proc-type symbol) - (symbol->string (-> ,proc name)) - ) - (else - "??" - ) - ) - ) - ) + (cond + ((= proc-type string) (the string (-> ,proc name))) + ((= proc-type symbol) (symbol->string (-> ,proc name))) + (else "??")))) (define-extern *listener-process* process) + (define-extern *active-pool* process-tree) (defun kernel-dispatcher () "Run the kernel! This is the entry point from C++ to GOAL." - ;; outside of all profiler events, set a ROOT event (profiler-instant-event "ROOT") - ;; execute the listener function, if we got one. (when *listener-function* (+! *enable-method-set* 1) ;; allow out-of-order method definitions (slower) (let ((result (reset-and-call (-> *listener-process* main-thread) *listener-function*))) ;; run function! ;; print result. (if *use-old-listener-print* - (format #t "~D~%" result result result) - (format #t "~D #x~X ~F ~A~%" result result result result) - ) - ) + (format #t "~D~%" result result result) + (format #t "~D #x~X ~F ~A~%" result result result result))) ;; clear pending function (set! *listener-function* #f) - (+! *enable-method-set* -1) - ) - + (+! *enable-method-set* -1)) ;; iterate over all processes, running this lambda: - (execute-process-tree - *active-pool* - (lambda ((this process)) - (let ((context *kernel-context*)) - (cond - ((or (eq? (-> this status) 'waiting-to-run) - (eq? (-> this status) 'suspended)) - - ;; begin event in profiler. - (profiler-start-event (process-name-as-string this)) - - ;; set current process to us - (set! (-> context current-process) this) - - ;; pause tricks to prevent debug text and drawings from disappearing when pausing: - (cond - ((process-mask? (-> this mask) pause) - ;; we are a pausable object, so we should put our *stdcon* to the one that isn't cleared during pause: - (set! *stdcon* *stdcon1*) - ;; and we should do our debug drawing to a buffer that isn't cleared during pause: - (set! *debug-draw-pauseable* #t) - ) - (else - ;; non-pausable, use the *stdcon* that's cleared each time - (set! *stdcon* *stdcon0*) - ;; and don't debug draw to a buffer - (set! *debug-draw-pauseable* #f) - ) - ) - - ;; TRANS - ;; this function should run before resuming. - (cond - ((-> this trans-hook) - ;; we have a trans hook defined. let's create a thread and run it. we can reuse the stack of the main-thread - ;; it is safe to do this because the main-thread is currently suspended or hasn't run yet. - (let ((trans (new 'process 'cpu-thread this 'trans PROCESS_STACK_SAVE_SIZE (-> this main-thread stack-top)))) - ;; call the function in the thread. - (reset-and-call trans (-> this trans-hook)) - - (#when KERNEL_DEBUG - (when (!= (-> trans type) cpu-thread) - (format 0 "corrupted stack after trans for ~A~%" this) - ) - ) - ;; remove the cpu-thread - (delete trans) - ;; check for deadness - (when (eq? (-> this status) 'dead) - (set! (-> context current-process) #f) - (profiler-end-event) - (return 'dead) ;; tells the execute-process-tree function to skip our children. - ) - ) - ) - ) - - ;; MAIN CODE - (if (process-mask? (-> this mask) sleep-code) - ;; we're sleeping. Move us to suspended, in case we were in waiting to run. - (set! (-> this status) 'suspended) - - ;; not sleeping. call resume hook. This will return once the main thread suspends again. - ((-> this main-thread resume-hook) (-> this main-thread)) - - ) - ;; check for deadness - (cond - ((eq? (-> this status) 'dead) - ;; oops we died. return 'dead - (set! (-> context current-process) #f) - (profiler-end-event) - 'dead - ) - (else - ;; not dead. - ;; POST CODE - (cond - ((-> this post-hook) - ;; Note: use dram stack always. This will allow actors to use the scratchpad stack and get a speedup for trans/code - ;; but still be able to do joint-animation stuff that uses the scratchpad in post. - (let ((post (new 'process 'cpu-thread this 'post PROCESS_STACK_SAVE_SIZE *kernel-dram-stack*))) - (reset-and-call post (-> this post-hook)) - (delete post) - (when (eq? (-> this status) 'dead) - ;; oops we died. - (set! (-> context current-process) #f) - (profiler-end-event) - (return 'dead) - ) - (set! (-> this status) 'suspended) - ) - ) - ) - (set! (-> context current-process) #f) - (profiler-end-event) - #f - ) - ) - - ) - - ((eq? (-> this status) 'dead) - 'dead) - ) - ) - ) - *kernel-context* - ) - ) + (execute-process-tree *active-pool* + (lambda ((this process)) + (let ((context *kernel-context*)) + (cond + ((or (eq? (-> this status) 'waiting-to-run) (eq? (-> this status) 'suspended)) + ;; begin event in profiler. + (profiler-start-event (process-name-as-string this)) + ;; set current process to us + (set! (-> context current-process) this) + ;; pause tricks to prevent debug text and drawings from disappearing when pausing: + (cond + ((process-mask? (-> this mask) pause) + ;; we are a pausable object, so we should put our *stdcon* to the one that isn't cleared during pause: + (set! *stdcon* *stdcon1*) + ;; and we should do our debug drawing to a buffer that isn't cleared during pause: + (set! *debug-draw-pauseable* #t)) + (else + ;; non-pausable, use the *stdcon* that's cleared each time + (set! *stdcon* *stdcon0*) + ;; and don't debug draw to a buffer + (set! *debug-draw-pauseable* #f))) + ;; TRANS + ;; this function should run before resuming. + (cond + ((-> this trans-hook) + ;; we have a trans hook defined. let's create a thread and run it. we can reuse the stack of the main-thread + ;; it is safe to do this because the main-thread is currently suspended or hasn't run yet. + (let ((trans (new 'process 'cpu-thread this 'trans PROCESS_STACK_SAVE_SIZE (-> this main-thread stack-top)))) + ;; call the function in the thread. + (reset-and-call trans (-> this trans-hook)) + (#when KERNEL_DEBUG + (when (!= (-> trans type) cpu-thread) + (format 0 "corrupted stack after trans for ~A~%" this))) + ;; remove the cpu-thread + (delete trans) + ;; check for deadness + (when (eq? (-> this status) 'dead) + (set! (-> context current-process) #f) + (profiler-end-event) + (return 'dead) ;; tells the execute-process-tree function to skip our children. + )))) + ;; MAIN CODE + (if (process-mask? (-> this mask) sleep-code) + ;; we're sleeping. Move us to suspended, in case we were in waiting to run. + (set! (-> this status) 'suspended) + ;; not sleeping. call resume hook. This will return once the main thread suspends again. + ((-> this main-thread resume-hook) (-> this main-thread))) + ;; check for deadness + (cond + ((eq? (-> this status) 'dead) + ;; oops we died. return 'dead + (set! (-> context current-process) #f) + (profiler-end-event) + 'dead) + (else + ;; not dead. + ;; POST CODE + (cond + ((-> this post-hook) + ;; Note: use dram stack always. This will allow actors to use the scratchpad stack and get a speedup for trans/code + ;; but still be able to do joint-animation stuff that uses the scratchpad in post. + (let ((post (new 'process 'cpu-thread this 'post PROCESS_STACK_SAVE_SIZE *kernel-dram-stack*))) + (reset-and-call post (-> this post-hook)) + (delete post) + (when (eq? (-> this status) 'dead) + ;; oops we died. + (set! (-> context current-process) #f) + (profiler-end-event) + (return 'dead)) + (set! (-> this status) 'suspended)))) + (set! (-> context current-process) #f) + (profiler-end-event) + #f))) + ((eq? (-> this status) 'dead) 'dead)))) + *kernel-context*)) (define-extern inspect-process-tree (function process-tree int int symbol process-tree)) + (defun inspect-process-tree ((this process-tree) (level int) (mask int) (detail symbol)) "Debug print a pocess-tree" (print-tree-bitmask mask (+ 0 level)) - ;; print us (cond (detail (format #t "__________________~%") ;; this is here, but I removed it because it prints at the wrong indent and looks weird. - ;(format #t "~S~A~%" (if (zero? level) "" "+---") this) - (protect (*print-column*) - (set! *print-column* (the binteger (* level 4))) - (inspect this) - ) - ) - (else - (format #t "~S~A~%" (if (zero? level) "" "+---") this) - ) - ) - + ;(format #t "~S~A~%" (if (zero? level) "" "+---") this) + (protect (*print-column*) (set! *print-column* (the binteger (* level 4))) (inspect this))) + (else (format #t "~S~A~%" (if (zero? level) "" "+---") this))) ;; print our children (let ((child (-> this child))) (while child - (inspect-process-tree (-> child) (+ level 1) (if (not (-> (-> child) brother)) mask (logior mask (ash 1 (+ 1 level)))) detail) - (set! child (-> (-> child) brother)) - ) - ) - this - ) + (inspect-process-tree (-> child) + (+ level 1) + (if (not (-> (-> child) brother)) mask (logior mask (ash 1 (+ 1 level)))) + detail) + (set! child (-> (-> child) brother)))) + this) (defmacro set-u128-as-u64! (dst src) - `(set! (-> (the (pointer uint64) (& ,dst))) - ,src - ) - ) + `(set! (-> (the (pointer uint64) (& ,dst))) ,src)) (defmacro set-u64-from-u128! (dst src) - `(set! ,dst (-> (the (pointer uint64) (& ,src)))) - ) + `(set! ,dst (-> (the (pointer uint64) (& ,src))))) (defmacro the-super-u64-fucntion (func) - `(the-as (function uint uint uint uint uint uint object) ,func) - ) + `(the-as (function uint uint uint uint uint uint object) ,func)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Stack Frame Stuff @@ -1858,7 +1444,6 @@ (declare (asm-func object) (allow-saved-regs) ;; very dangerous! ) - (rlet ((pp :reg r13 :type process) (temp :reg rax :type uint) (off :reg r15 :type uint) @@ -1868,7 +1453,6 @@ (s2 :reg r10 :type (pointer uint64)) (s3 :reg r11 :type uint) (s4 :reg r12 :type uint) - (xmm8 :reg xmm8 :class fpr) (xmm9 :reg xmm9 :class fpr) (xmm10 :reg xmm10 :class fpr) @@ -1876,9 +1460,7 @@ (xmm12 :reg xmm12 :class fpr) (xmm13 :reg xmm13 :class fpr) (xmm14 :reg xmm14 :class fpr) - (xmm15 :reg xmm15 :class fpr) - ) - + (xmm15 :reg xmm15 :class fpr)) ;; we treat the allocation as an address. (let ((this (the catch-frame (&+ allocation *gtype-basic-offset*)))) ;; setup catch frame @@ -1891,13 +1473,11 @@ (.sub temp off) ;; store it (set! (-> this ra) (the int temp)) - ;; todo, do we need a stack offset here? ;; remember the stack pointer (set! temp sp) (.sub temp off) (set! (-> this sp) (the int temp)) - ;; back up registers we care about (.mov :color #f temp s0) (set-u128-as-u64! (-> this rreg 0) temp) @@ -1909,7 +1489,6 @@ (set-u128-as-u64! (-> this rreg 3) temp) (.mov :color #f temp s4) (set-u128-as-u64! (-> this rreg 4) temp) - (.mov :color #f temp xmm8) (set! (-> this freg 0) (the-as float temp)) (.mov :color #f temp xmm9) @@ -1926,45 +1505,28 @@ (set! (-> this freg 6) (the-as float temp)) (.mov :color #f temp xmm15) (set! (-> this freg 7) (the-as float temp)) - ;; push this stack frame (set! (-> this next) (-> pp stack-frame-top)) (set! (-> pp stack-frame-top) this) - ;; help coloring, it isn't smart enough to realize it's "safe" to use these registers. (.push :color #f s3) (.push :color #f s2) (.push :color #f s2) (set! s3 (the uint func)) (set! s2 param-block) - ;; todo - are we aligned correctly here? - (let ((ret ((the-super-u64-fucntion s3) - (-> s2 0) - (-> s2 1) - (-> s2 2) - (-> s2 3) - (-> s2 4) - (-> s2 5) - )) - ) + (let ((ret ((the-super-u64-fucntion s3) (-> s2 0) (-> s2 1) (-> s2 2) (-> s2 3) (-> s2 4) (-> s2 5)))) (.pop :color #f s2) (.pop :color #f s2) (.pop :color #f s3) (set! (-> pp stack-frame-top) (-> pp stack-frame-top next)) (.ret) - (the object ret) - ) - ) - ) - ) - + (the object ret))))) (defun throw-dispatch ((this catch-frame) value) "Throw the given value to the catch frame. Only can throw a 64-bit value. The original could throw 128 bits." (declare (asm-func none)) - (rlet ((pp :reg r13 :type process) (temp :reg rax :type uint) (off :reg r15 :type uint) @@ -1974,7 +1536,6 @@ (s2 :reg r10 :type (pointer uint64)) (s3 :reg r11 :type uint) (s4 :reg r12 :type uint) - (temp-float :reg xmm0 :class fpr) (xmm8 :reg xmm8 :class fpr) (xmm9 :reg xmm9 :class fpr) @@ -1983,12 +1544,9 @@ (xmm12 :reg xmm12 :class fpr) (xmm13 :reg xmm13 :class fpr) (xmm14 :reg xmm14 :class fpr) - (xmm15 :reg xmm15 :class fpr) - ) - + (xmm15 :reg xmm15 :class fpr)) ;; pop everything we threw past (set! (-> pp stack-frame-top) (-> this next)) - ;; restore regs we care about. (set-u64-from-u128! temp (-> this rreg 0)) (.mov :color #f s0 temp) @@ -2000,7 +1558,6 @@ (.mov :color #f s3 temp) (set-u64-from-u128! temp (-> this rreg 4)) (.mov :color #f s4 temp) - (set! temp-float (-> this freg 0)) (.mov :color #f xmm8 temp-float) (set! temp-float (-> this freg 1)) @@ -2017,22 +1574,17 @@ (.mov :color #f xmm14 temp-float) (set! temp-float (-> this freg 7)) (.mov :color #f xmm15 temp-float) - ;; set stack pointer (set! sp (the uint (-> this sp))) (.add sp off) - ;; overwrite our return address (.pop temp) (set! temp (the uint (-> this ra))) (.add temp off) (.push temp) - ;; load the return register (.mov temp value) - (.ret) - ) - ) + (.ret))) (defun throw ((name symbol) value) "Dynamic throw." @@ -2041,35 +1593,21 @@ (while cur (when (and (eq? (-> cur name) name) (eq? (-> cur type) catch-frame)) ;; match! - - (throw-dispatch (the catch-frame cur) value) - ) - + (throw-dispatch (the catch-frame cur) value)) (if (eq? (-> cur type) protect-frame) - ;; call the cleanup function - ((-> (the protect-frame cur) exit)) - ) - (set! cur (-> cur next)) - ) - ) - ) + ;; call the cleanup function + ((-> (the protect-frame cur) exit))) + (set! cur (-> cur next))))) (format 0 "ERROR: throw could not find tag ~A~%" name) - (break) - ) + (break)) (defmethod new protect-frame ((allocation symbol) (type-to-make type) (func (function object))) (let ((this (the protect-frame (&+ allocation *gtype-basic-offset*)))) (set! (-> this type) type-to-make) (set! (-> this name) 'protect-frame) (set! (-> this exit) func) - - (rlet ((pp :reg r13 :type process)) - (set! (-> this next) (-> pp stack-frame-top)) - (set! (-> pp stack-frame-top) this) - ) - this - ) - ) + (rlet ((pp :reg r13 :type process)) (set! (-> this next) (-> pp stack-frame-top)) (set! (-> pp stack-frame-top) this)) + this)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Tree Stuff @@ -2077,9 +1615,7 @@ (defun previous-brother ((proc process-tree)) "Get the process p where (-> p brother) is proc. Unused" - (local-vars (parent (pointer process-tree)) - (child (pointer process-tree)) - ) + (local-vars (parent (pointer process-tree)) (child (pointer process-tree))) ;; look up the tree to find our parent (set! parent (-> proc parent)) (the-as process-tree @@ -2090,64 +1626,49 @@ ;; iterate, until we find the one. (while child (if (= (-> child 0 brother) proc) (return child)) - (set! child (-> child 0 brother)) - ) + (set! child (-> child 0 brother))) ;; nope, didn't find it. bad tree. - '#f - ) - ) - ) - + '#f))) (defun change-parent ((this process-tree) (new-parent process-tree)) "Make this a child of new-parent" (let ((parent (-> this parent))) ;; parent is a ppointer. - ;; need to remove this from its current parent (when parent (let ((proc (-> (-> parent) child))) (if (eq? (ppointer->process proc) this) - ;; case where we're the first child is easy! - (set! (-> (-> parent) child) (-> this brother)) - ;; otherwise, look through brothers to find us. - (begin - (while (not (eq? (ppointer->process (-> (-> proc) brother)) this)) - (set! proc (-> (-> proc) brother)) - ) - ;; ok, got us, splice out of list. - (set! (-> (-> proc) brother) (-> this brother)) - ) - ) - ) - ) - + ;; case where we're the first child is easy! + (set! (-> (-> parent) child) (-> this brother)) + ;; otherwise, look through brothers to find us. + (begin + (while (not (eq? (ppointer->process (-> (-> proc) brother)) this)) + (set! proc (-> (-> proc) brother))) + ;; ok, got us, splice out of list. + (set! (-> (-> proc) brother) (-> this brother)))))) ;; add to new parent (set! (-> this parent) (-> new-parent ppointer)) (set! (-> this brother) (-> new-parent child)) (set! (-> new-parent child) (-> this ppointer)) - this - ) - ) + this)) (defun change-brother ((arg0 process-tree) (arg1 process-tree)) "Unused, and wrong. It seems like this was written when processes store process-trees, not (pointer process-tree)." (local-vars - (v1-4 (pointer process-tree)) - (a1-1 symbol) - (a2-1 (pointer process-tree)) - (a3-1 (pointer process-tree)) - (t0-0 (pointer process-tree)) - (t1-0 (pointer process-tree)) - (t1-3 (pointer process-tree)) - (t1-4 (pointer process-tree)) - (t1-7 (pointer process-tree)) - (t1-8 (pointer process-tree)) - (t1-12 (pointer process-tree)) - (t1-13 (pointer process-tree)) - (t1-17 (pointer process-tree)) - ) + (v1-4 (pointer process-tree)) + (a1-1 symbol) + (a2-1 (pointer process-tree)) + (a3-1 (pointer process-tree)) + (t0-0 (pointer process-tree)) + (t1-0 (pointer process-tree)) + (t1-3 (pointer process-tree)) + (t1-4 (pointer process-tree)) + (t1-7 (pointer process-tree)) + (t1-8 (pointer process-tree)) + (t1-12 (pointer process-tree)) + (t1-13 (pointer process-tree)) + (t1-17 (pointer process-tree))) (when (and arg0 (!= (-> arg0 brother) arg1) (!= arg0 arg1)) (set! a2-1 (-> arg0 parent)) (when a2-1 @@ -2157,33 +1678,27 @@ (set! t1-0 t0-0) (when (= (if t1-0 (-> t1-0 0 self)) arg0) (set! a3-1 a2-1) - (set! t1-3 a3-1) - ) + (set! t1-3 a3-1)) (set! t1-4 t0-0) (when (= (if t1-4 (-> t1-4 0 self)) arg1) (set! v1-4 a2-1) - (set! t1-7 v1-4) - ) + (set! t1-7 v1-4)) (while (and (-> t0-0 0 brother) (or (not a3-1) (not v1-4))) (set! t1-8 t0-0) (when (= (-> (if t1-8 (-> t1-8 0 self)) brother) arg1) (set! v1-4 t0-0) - (set! t1-12 v1-4) - ) + (set! t1-12 v1-4)) (set! t1-13 t0-0) (when (= (-> (if t1-13 (-> t1-13 0 self)) brother) arg0) (set! a3-1 t0-0) - (set! t1-17 a3-1) - ) - (set! t0-0 (-> t0-0 0 brother)) - ) + (set! t1-17 a3-1)) + (set! t0-0 (-> t0-0 0 brother))) (if (or (not a3-1) (not v1-4)) - (return 0) - (if (= a3-1 a2-1) - (set! (-> a3-1 4) (the process-tree (-> arg0 brother))) ;; wrong - (set! (-> a3-1 3) (the process-tree (-> arg0 brother))) ;; wrong - ) - ) + (return 0) + (if (= a3-1 a2-1) + (set! (-> a3-1 4) (the process-tree (-> arg0 brother))) ;; wrong + (set! (-> a3-1 3) (the process-tree (-> arg0 brother))) ;; wrong + )) (cond ((= v1-4 a2-1) (set! (-> arg0 brother) (the (pointer process-tree) (-> v1-4 4))) ;; wrong @@ -2191,52 +1706,33 @@ ) (else (set! (-> arg0 brother) (the (pointer process-tree) (-> v1-4 3))) - (set! (-> v1-4 3) (the process-tree (-> arg0 ppointer))) - ) - ) - ) - ) - (the-as process-tree arg0) - ) + (set! (-> v1-4 3) (the process-tree (-> arg0 ppointer))))))) + (the-as process-tree arg0)) (defun change-to-last-brother ((arg0 process-tree)) - (local-vars - (v1-4 (pointer process-tree)) - (v1-8 symbol) - (a1-0 (pointer process-tree)) - (a1-5 symbol) - (a1-9 symbol) - ) + (local-vars (v1-4 (pointer process-tree)) (v1-8 symbol) (a1-0 (pointer process-tree)) (a1-5 symbol) (a1-9 symbol)) (when (and (-> arg0 brother) (-> arg0 parent)) (set! a1-0 (-> arg0 parent)) (set! v1-4 (-> a1-0 0 child)) (cond - ((= (-> v1-4 0) arg0) - (set! (-> a1-0 0 child) (-> arg0 brother))) + ((= (-> v1-4 0) arg0) (set! (-> a1-0 0 child) (-> arg0 brother))) (else (while (!= (-> v1-4 0 brother 0) arg0) (nop!) (nop!) (nop!) (nop!) - (set! v1-4 (-> v1-4 0 brother)) - ) - (set! (-> v1-4 0 brother) (-> arg0 brother)) - ) - ) + (set! v1-4 (-> v1-4 0 brother))) + (set! (-> v1-4 0 brother) (-> arg0 brother)))) (while (-> v1-4 0 brother) (nop!) (nop!) (nop!) (nop!) - (set! v1-4 (-> v1-4 0 brother)) - ) + (set! v1-4 (-> v1-4 0 brother))) (set! (-> v1-4 0 brother) (-> arg0 ppointer)) - (set! (-> arg0 brother) '#f) - ) - arg0 - ) - + (set! (-> arg0 brother) '#f)) + arg0) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Process Control @@ -2244,25 +1740,18 @@ (defmethod activate ((this process) (dest process-tree) (name basic) (stack-top pointer)) "Activate a process! Put it on the given active tree and set up the main thread." - ;; if we got the scratchpad stack, move to the fake scratchpad. (#when PC_PORT (when (= stack-top *scratch-memory-top*) - (set! stack-top (&+ *fake-scratchpad-stack* (* 32 1024))) - ) - ) + (set! stack-top (&+ *fake-scratchpad-stack* (* 32 1024))))) ;; inherit mask (minus stuff like sleep) (set! (-> this mask) (logand (-> dest mask) PROCESS_CLEAR_MASK)) (set! (-> this status) 'ready) - ;; get a unique pid. - (let ((pid (-> *kernel-context* next-pid))) - (set! (-> this pid) pid) - (set! (-> *kernel-context* next-pid) (+ 1 pid))) + (let ((pid (-> *kernel-context* next-pid))) (set! (-> this pid) pid) (set! (-> *kernel-context* next-pid) (+ 1 pid))) (set! (-> this top-thread) #f) (set! (-> this main-thread) #f) (set! (-> this name) name) - ;; set up our heap. Note that we apply an offset of heap-base to leave room for fields of the actual type. ;; unclear why we can't just use the size of our type... but I guess this gives you the option ;; to put some other stuff in between the fields and the heap. @@ -2270,30 +1759,22 @@ (set! (-> this stack-frame-top) #f) ;; heaps should be 0 initialized. (mem-set32! (-> this stack) (the int (/ (-> this type heap-base) 4)) 0) - (set! (-> this trans-hook) #f) (set! (-> this post-hook) #f) (set! (-> this event-hook) #f) (set! (-> this state) #f) (set! (-> this next-state) #f) - ;; inherit entity if our parent is another process (if (process-mask? (-> dest mask) process-tree) - (set! (-> this entity) #f) - (set! (-> this entity) (-> (the process dest) entity)) - ) - + (set! (-> this entity) #f) + (set! (-> this entity) (-> (the process dest) entity))) ;; reset all connections (set! (-> this connection-list next1) #f) (set! (-> this connection-list prev1) #f) - ;; allocate the main thread (sets everything up.) (let ((thread (new 'process 'cpu-thread this 'code PROCESS_STACK_SAVE_SIZE stack-top))) - (set! (-> this main-thread) thread) - ) - - (change-parent this dest) - ) + (set! (-> this main-thread) thread)) + (change-parent this dest)) (defun run-function-in-process ((this process) (func function) a0 a1 a2 a3 a4 a5) "Switch to the given process and run the function. This is used to initialize a process. @@ -2301,27 +1782,22 @@ this function will return. The idea is that you use this when you want to initialize a process NOW. This will then return the value of the function you called!" (rlet ((pp :reg r13 :type process)) - - (let ((param-array (new 'stack-no-clear 'array 'uint64 6)) - ) + (let ((param-array (new 'stack-no-clear 'array 'uint64 6))) ;; copy params to the stack. - (set! (-> param-array 0) (the uint64 a0)) (set! (-> param-array 1) (the uint64 a1)) (set! (-> param-array 2) (the uint64 a2)) (set! (-> param-array 3) (the uint64 a3)) (set! (-> param-array 4) (the uint64 a4)) (set! (-> param-array 5) (the uint64 a5)) - (let* ((old-pp pp) (func-val (begin - ;; set the process - (set! pp this) - ;; set us as initializing - (set! (-> pp status) 'initialize) - ;; run! - (the object (new 'stack 'catch-frame 'initialize func param-array)) - ))) + ;; set the process + (set! pp this) + ;; set us as initializing + (set! (-> pp status) 'initialize) + ;; run! + (the object (new 'stack 'catch-frame 'initialize func param-array))))) ;; the function returned, either through a throw or through actually returning. ;; the status will give us a clue of what happened. (case (-> pp status) @@ -2329,28 +1805,18 @@ ;; we returned and didn't change status. (set! (-> pp status) 'initialize-dead) ;; this means we died, and we should be deactivated. - (deactivate pp) - ) + (deactivate pp)) (('initialize-go) ;; we returned with a (suspend) or (go) ? not sure ;; either way, we're ready for next time! (set! (-> pp status) 'waiting-to-run) (when (eq? (-> pp pool type) dead-pool-heap) ;; we can shrink the heap now. - (shrink-heap (the dead-pool-heap (-> pp pool)) pp) - ) - ) - (else - (format 0 "GOT UNKNOWN INIT: ~A~%" (-> pp status)) - ) - ) + (shrink-heap (the dead-pool-heap (-> pp pool)) pp))) + (else (format 0 "GOT UNKNOWN INIT: ~A~%" (-> pp status)))) ;; restore the old pp (set! pp old-pp) - func-val - ) - ) - ) - ) + func-val)))) (defun set-to-run-bootstrap () "This function is a clever hack. @@ -2362,43 +1828,31 @@ (declare (asm-func none) ;;(print-asm) ) - (rlet ((s0 :reg rbx :type uint) (s1 :reg rbp :type uint) (s2 :reg r10 :type uint) (s3 :reg r11 :type uint) (s4 :reg r12 :type uint) - (a0 :reg rdi :type uint) ; ok - (a1 :reg rsi :type uint) ; ok - (a2 :reg rdx :type uint) ; ok - (a3 :reg rcx :type uint) ; ok + (a0 :reg rdi :type uint) ; ok + (a1 :reg rsi :type uint) ; ok + (a2 :reg rdx :type uint) ; ok + (a3 :reg rcx :type uint) ; ok (off :reg r15 :type uint) (a4 :reg r8 :type uint) (a5 :reg r9 :type uint) - (temp :reg rax) - ) - - + (temp :reg rax)) (.mov temp return-from-thread-dead) (.add temp off) (.push temp) - ;; stack is 16 + 8 aligned now - (.mov :color #f a0 s1) (.mov :color #f a1 s2) (.mov :color #f a2 s3) (.mov :color #f a3 s4) - (.add :color #f s0 off) (.jr :color #f s0) - (.add a4 a4) - (.add a5 a5) - ) - - ) - + (.add a5 a5))) (defun set-to-run ((thread cpu-thread) (func function) a0 a1 a2 a3 a4 a5) "Set the given thread to call the given function with the given arguments next time it resumes. @@ -2406,7 +1860,6 @@ Once the function returns, the process deactivates." (let ((proc (-> thread process))) (set! (-> proc status) 'waiting-to-run) - ;; we store arguments and the function to call in saved registers (set! (-> thread rreg 0) (the uint func)) (set! (-> thread rreg 1) (the uint a0)) @@ -2415,15 +1868,12 @@ (set! (-> thread rreg 4) (the uint a3)) (set! (-> thread rreg 5) (the uint a4)) (set! (-> thread rreg 6) (the uint a5)) - ;; and have the thread first call set-to-run-bootstrap, which will properly call ;; the function with the arguments and install a return trampoline for ;; deactivating and returning to the kernel on return. (set! (-> thread pc) (the pointer set-to-run-bootstrap)) ;; reset sp. - (set! (-> thread sp) (-> thread stack-top)) - ) - ) + (set! (-> thread sp) (-> thread stack-top)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Process Deactivation @@ -2431,24 +1881,15 @@ (defmethod deactivate ((this process-tree)) "Can't deactivate a process-tree" - (none) - ) + (none)) ;; The defstate macro isn't defined yet, so we do it manually. (define dead-state - (the (state process) (new 'static 'state - :name 'dead-state - :next #f - :exit #f - :code #f - :trans #f - :post #f - :enter #f - :event #f))) + (the (state process) + (new 'static 'state :name 'dead-state :next #f :exit #f :code #f :trans #f :post #f :enter #f :event #f))) (set! (-> dead-state code) (the (function object :behavior process) nothing)) - ;; this is not yet defined. (define entity-deactivate-handler (the (function process entity-actor none) nothing)) @@ -2463,17 +1904,13 @@ All protects/states will be cleaned up, with pp set correctly for the process. But you might not have the stack of your main thread, so don't reference stack vars from within your exit handlers." - ;; don't do anything if we already died. (unless (eq? (-> this status) 'dead) ;; set our state to a dead-state that does nothing. (set! (-> this next-state) dead-state) - ;; call entity handler if we're from an entity. (when (-> this entity) - (entity-deactivate-handler this (-> this entity)) - ) - + (entity-deactivate-handler this (-> this entity))) ;; clean up stack frames the process is in. ;; first, set pp so the cleanup code thinks its running in the right process. ;; we might be getting deactivated from another process. @@ -2486,39 +1923,20 @@ (case (-> cur type) ((protect-frame state) ;; we're a state or protect-frame, we can exit. - ((-> (the-as protect-frame cur) exit)) - ) - ) - (set! cur (-> cur next)) - ) - ) - (set! pp old-pp) - ) - ) - + ((-> (the-as protect-frame cur) exit)))) + (set! cur (-> cur next)))) + (set! pp old-pp))) ;; remove our connections. ;; hack - if this isn't defined yet, don't try it. - (if (!= 0 (the uint process-disconnect)) - (process-disconnect this) - ) - + (if (!= 0 (the uint process-disconnect)) (process-disconnect this)) ;; kill our child and their brothers - (let ((bro (-> this child))) - (while bro - (let ((temp (-> (-> bro) brother))) - (deactivate (-> bro)) - (set! bro temp) - ) - ) - ) - + (let ((bro (-> this child))) (while bro (let ((temp (-> (-> bro) brother))) (deactivate (-> bro)) (set! bro temp)))) ;; return ourself to the pool (return-process (-> this pool) this) (set! (-> this state) #f) (set! (-> this next-state) #f) (set! (-> this entity) #f) (set! (-> this pid) 0) - ;; deal with getting out of here. (cond ;; first case - we deactivated the running process @@ -2529,26 +1947,14 @@ (set! (-> this status) 'dead) ;; and return (with no deactivate) ;; TODO: replace with abandon. - (let ((temp (the uint return-from-thread))) - (rlet ((off :reg r15 :type uint)) - (+! temp off) - (.push temp) - (.ret) - ) - ) - ) + (let ((temp (the uint return-from-thread))) (rlet ((off :reg r15 :type uint)) (+! temp off) (.push temp) (.ret)))) ;; second case - we deactivated while initializing. ((eq? (-> this status) 'initialize) (set! (-> this status) 'dead) ;; throw back to the place where we started initializing. - (throw 'initialize #f) - ) - ) - (set! (-> this status) 'dead) - ) - (none) - ) - + (throw 'initialize #f))) + (set! (-> this status) 'dead)) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Process Globals @@ -2558,8 +1964,7 @@ (let ((this (define *listener-process* (new 'global 'process 'listener 2048)))) (set! (-> this status) 'ready) (set! (-> this pid) 1) - (set! (-> this main-thread) (new 'process 'cpu-thread this 'main 256 *kernel-dram-stack*)) - ) + (set! (-> this main-thread) (new 'process 'cpu-thread this 'main 256 *kernel-dram-stack*))) ;; a dummy process for process records that don't have a process to point to. ;; it has a PID of 0, which matches nothing so the handle->process will return #f if the @@ -2572,28 +1977,37 @@ ;; a few pools of fixed size processes that are shared. (define *16k-dead-pool* (new 'global 'dead-pool 1 (* 16 1024) '*16k-dead-pool*)) + (define *8k-dead-pool* (new 'global 'dead-pool 1 (* 8 1024) '*8k-dead-pool*)) + (define *4k-dead-pool* (new 'global 'dead-pool 4 (* 4 1024) '*4k-dead-pool*)) ;; some very important process pools (define *target-dead-pool* (new 'global 'dead-pool 1 (* 48 1024) '*target-dead-pool*)) + (define *camera-dead-pool* (new 'global 'dead-pool 7 (* 4 1024) '*camera-dead-pool*)) + (define *camera-master-dead-pool* (new 'global 'dead-pool 1 (* 8 1024) '*camera-master-dead-pool*)) ;; used if other pools run out of space in debug mode -(if *debug-segment* - (define *debug-dead-pool* (new 'debug 'dead-pool-heap '*debug-dead-pool* 768 (* 1024 1024))) - ) +(if *debug-segment* (define *debug-dead-pool* (new 'debug 'dead-pool-heap '*debug-dead-pool* 768 (* 1024 1024)))) ;; variable sized actor pool (most actors go here) (define *nk-dead-pool* (new 'global 'dead-pool-heap '*nk-dead-pool* (* PROCESS_HEAP_MULT 768) PROCESS_HEAP_SIZE)) ;; use the nk-dead-pool in most places (define *default-dead-pool* (the dead-pool *nk-dead-pool*)) + (define *pickup-dead-pool* (the dead-pool *nk-dead-pool*)) ;; list of all dead pools held by the kernel. -(define *dead-pool-list* '(*4k-dead-pool* *8k-dead-pool* *16k-dead-pool* *nk-dead-pool* *target-dead-pool* *camera-dead-pool* *camera-master-dead-pool*)) +(define *dead-pool-list* + '(*4k-dead-pool* *8k-dead-pool* + *16k-dead-pool* + *nk-dead-pool* + *target-dead-pool* + *camera-dead-pool* + *camera-master-dead-pool*)) ;; main active pool. All active processes are under here. This is what the kernel-dispatcher looks at. (define *active-pool* (new 'global 'process-tree 'active-pool)) @@ -2605,19 +2019,22 @@ ;; the *camera-pool* will contain all cameras (change-parent (define *camera-pool* (new 'global 'process-tree 'camera-pool)) *active-pool*) + ;; all cameras should pause in menus (set! (-> *camera-pool* mask) (process-mask pause menu progress camera process-tree)) ;; the *target-pool* will contain jak (change-parent (define *target-pool* (new 'global 'process-tree 'target-pool)) *active-pool*) + ;; pause in menus (set! (-> *target-pool* mask) (process-mask pause menu progress process-tree)) ;; the *entity-pool* contains all processes spawned from entities. -(change-parent (define *entity-pool* (new 'global 'process-tree 'entity-pool)) *active-pool*) +(change-parent (define *entity-pool* (new 'global 'process-tree 'entity-pool)) *active-pool*) + (set! (-> *entity-pool* mask) (process-mask pause menu progress entity process-tree)) ;; the *default-pool* is used for processes that don't fall into the others. (change-parent (define *default-pool* (new 'global 'process-tree 'default-pool)) *active-pool*) -(set! (-> *default-pool* mask) (process-mask pause menu progress process-tree)) +(set! (-> *default-pool* mask) (process-mask pause menu progress process-tree)) diff --git a/goal_src/jak1/kernel/gstate.gc b/goal_src/jak1/kernel/gstate.gc index 01bac7281e..2152bdbe0e 100644 --- a/goal_src/jak1/kernel/gstate.gc +++ b/goal_src/jak1/kernel/gstate.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "KERNEL.CGO") - (require "kernel/gkernel.gc") -;; name: gstate.gc -;; name in dgo: gstate -;; dgos: KERNEL - #| Summary of state system: @@ -50,7 +45,6 @@ with the appropriate state type. The go-hook calls enter state and sets (-> proc next-state) for the given process. It type checks the arguments for the entry function. - |# (defmacro go (next-state &rest args) @@ -58,24 +52,16 @@ It type checks the arguments for the entry function. This will only return if this is called within the post thread. Otherwise, execution stops here and the kernel will run the next state next time." `(with-pp - (go-hook pp ,next-state ,@args) - ) - ) + (go-hook pp ,next-state ,@args))) (defmacro go-virtual (state-name &key (proc self) &rest args) "Same as go, but use a virtual state." - `(go (method-of-object ,proc ,state-name) ,@args) - ) + `(go (method-of-object ,proc ,state-name) ,@args)) (defmacro go-process (proc next-state &rest args) "Make another process go." `(with-pp - (protect (pp) - (set! pp ,proc) - (go-hook pp ,next-state ,@args) - ) - ) - ) + (protect (pp) (set! pp ,proc) (go-hook pp ,next-state ,@args)))) ;; run the given function in a process right now. ;; will return to here when: @@ -85,84 +71,60 @@ It type checks the arguments for the entry function. ;; - you throw to 'initialize (defmacro run-now-in-process (proc func &rest args) "Run a function in another process right now." - `((the (function _varargs_ object) run-function-in-process) - ,proc ,func ,@args - ) - ) + `((the (function _varargs_ object) run-function-in-process) ,proc ,func ,@args)) ;; sets the main thread of the given process to run the given thing. ;; this resets the main thread stack back to the top (defmacro run-next-time-in-process (proc func &rest args) "Set up a process to run a function the next time it is scheduled." - `((the (function _varargs_ object) set-to-run) - (-> ,proc main-thread) ,func ,@args - ) - ) + `((the (function _varargs_ object) set-to-run) (-> ,proc main-thread) ,func ,@args)) (defmacro process-spawn-function (proc-type func &key (from *default-dead-pool*) &key (to *default-pool*) &key (name #f) &key (stack-size #x4000) &key (stack *scratch-memory-top*) &rest args) "Start a new process that runs a function on its main thread. Returns a pointer to the new process (or #f? on error)." - (with-gensyms (new-proc) `(let ((,new-proc (the-as ,proc-type (get-process ,from ,proc-type ,stack-size)))) - (when ,new-proc - ((method-of-type ,proc-type activate) ,new-proc ,to ,(if name name `(quote ,proc-type)) ,stack) - (run-next-time-in-process ,new-proc ,func ,@args) - (the (pointer ,proc-type) (-> ,new-proc ppointer)) - ) - ) - ) - ) + (when ,new-proc + ((method-of-type ,proc-type activate) ,new-proc ,to ,(if name name `(quote ,proc-type)) ,stack) + (run-next-time-in-process ,new-proc ,func ,@args) + (the (pointer ,proc-type) (-> ,new-proc ppointer)))))) (defmacro process-spawn (proc-type &key (init #f) &key (from *default-dead-pool*) &key (to *default-pool*) &key (name #f) &key (stack-size #x4000) &key (stack *scratch-memory-top*) &rest args) "Start a new process and run an init function on it. Returns a pointer to the new process, or #f (or is it 0?) if something goes wrong." - (with-gensyms (new-proc) `(let ((,new-proc (the-as ,proc-type (get-process ,from ,proc-type ,stack-size)))) - (when ,new-proc - ((method-of-type ,proc-type activate) ,new-proc ,to ,(if name name `(quote ,proc-type)) ,stack) - (run-now-in-process ,new-proc ,(if init init (string->symbol (fmt #f "{}-init-by-other" proc-type))) ,@args) - (the (pointer ,proc-type) (-> ,new-proc ppointer)) - ) - ) - ) - ) + (when ,new-proc + ((method-of-type ,proc-type activate) ,new-proc ,to ,(if name name `(quote ,proc-type)) ,stack) + (run-now-in-process ,new-proc ,(if init init (string->symbol (fmt #f "{}-init-by-other" proc-type))) ,@args) + (the (pointer ,proc-type) (-> ,new-proc ppointer)))))) ;; display a listing of active processes. (defmacro ps (&key (detail #f)) - `(inspect-process-tree *active-pool* 0 0 ,detail) - ) + `(inspect-process-tree *active-pool* 0 0 ,detail)) ;; use a compile-time list to keep track of the type of an anonymous behavior. -(seval (define *defstate-type-stack* '())) +(seval + (define *defstate-type-stack* '())) + (desfun def-state-check-behavior (beh-form beh-type) "check if code block is an anonymous behavior. needed for anonymous behaviors on defstate." - (when (and (pair? beh-form) (eq? (first beh-form) 'behavior)) - (push! *defstate-type-stack* beh-type) - ) - ) + (push! *defstate-type-stack* beh-type))) + (defmacro clear-def-state-stack () (set! *defstate-type-stack* '()) - `(none) - ) + `(none)) ;; set when inside a defstate. -(seval (define *defstate-current-type* #f)) -(seval (define *defstate-current-state-name* #f)) +(seval + (define *defstate-current-type* #f)) + +(seval + (define *defstate-current-state-name* #f)) ;; *no-state* is just used for the compiler to know whether a handler was actually set or not -(defmacro defstate (state-name parents - &key (virtual #f) - &key (event *no-state*) - &key (enter *no-state*) - &key (trans *no-state*) - &key (exit *no-state*) - &key (code *no-state*) - &key (post *no-state*) - &rest body - ) +(defmacro defstate (state-name parents &key (virtual #f) &key (event *no-state*) &key (enter *no-state*) &key (trans *no-state*) &key (exit *no-state*) &key (code *no-state*) &key (post *no-state*) &rest body) "Define a new state!" (with-gensyms (new-state) (let ((defstate-type (first parents)) @@ -170,132 +132,115 @@ It type checks the arguments for the entry function. (when (and (> (length body) 1) (string? (first body))) (set! docstring (first body))) (when (not (null? *defstate-type-stack*)) - (fmt #t "*defstate-type-stack* leaked! An error probably happened in a previous defstate. stack is: {}" - *defstate-type-stack*) - ) + (fmt #t + "*defstate-type-stack* leaked! An error probably happened in a previous defstate. stack is: {}" + *defstate-type-stack*)) (set! *defstate-type-stack* '()) (when virtual (set! *defstate-current-type* defstate-type) - (set! *defstate-current-state-name* state-name) - ) + (set! *defstate-current-state-name* state-name)) ;; check for default handlers (let ((default-handlers (assoc defstate-type *default-state-handlers*))) - (when default-handlers - ;;(fmt #t "found default-handlers for {}: {}\n" defstate-type default-handlers) - ;; event - (set! default-handlers (cadr default-handlers)) - (when (and (eq? event '*no-state*) (car default-handlers)) - (set! event (car default-handlers))) - ;; enter - (set! default-handlers (cdr default-handlers)) - (when (and (eq? enter '*no-state*) (car default-handlers)) - (set! enter (car default-handlers))) - ;; trans - (set! default-handlers (cdr default-handlers)) - (when (and (eq? trans '*no-state*) (car default-handlers)) - (set! trans (car default-handlers))) - ;; exit - (set! default-handlers (cdr default-handlers)) - (when (and (eq? exit '*no-state*) (car default-handlers)) - (set! exit (car default-handlers))) - ;; code - (set! default-handlers (cdr default-handlers)) - (when (and (eq? code '*no-state*) (car default-handlers)) - (set! code (car default-handlers))) - ;; post - (set! default-handlers (cdr default-handlers)) - (when (and (eq? post '*no-state*) (car default-handlers)) - (set! post (car default-handlers))) - - (set! default-handlers (cdr default-handlers)) - ) - ) + (when default-handlers + ;;(fmt #t "found default-handlers for {}: {}\n" defstate-type default-handlers) + ;; event + (set! default-handlers (cadr default-handlers)) + (when (and (eq? event '*no-state*) (car default-handlers)) + (set! event (car default-handlers))) + ;; enter + (set! default-handlers (cdr default-handlers)) + (when (and (eq? enter '*no-state*) (car default-handlers)) + (set! enter (car default-handlers))) + ;; trans + (set! default-handlers (cdr default-handlers)) + (when (and (eq? trans '*no-state*) (car default-handlers)) + (set! trans (car default-handlers))) + ;; exit + (set! default-handlers (cdr default-handlers)) + (when (and (eq? exit '*no-state*) (car default-handlers)) + (set! exit (car default-handlers))) + ;; code + (set! default-handlers (cdr default-handlers)) + (when (and (eq? code '*no-state*) (car default-handlers)) + (set! code (car default-handlers))) + ;; post + (set! default-handlers (cdr default-handlers)) + (when (and (eq? post '*no-state*) (car default-handlers)) + (set! post (car default-handlers))) + (set! default-handlers (cdr default-handlers)))) (def-state-check-behavior event defstate-type) (def-state-check-behavior enter defstate-type) (def-state-check-behavior trans defstate-type) (def-state-check-behavior exit defstate-type) (def-state-check-behavior code defstate-type) (def-state-check-behavior post defstate-type) - `(let ((,new-state (new 'static 'state - :name (quote ,state-name) - :next #f - :exit #f - :code #f - :trans #f - :post #f - :enter #f - :event #f - ) - )) - ;; the compiler will set the fields of the given state and define the symbol. - ;; This way it can check the individual function types, make sure they make sense, and create - ;; a state with the appropriate type. - ,(if virtual - `(define-virtual-state-hook ,state-name ,defstate-type ,new-state ,docstring ,(eq? virtual 'override) :event ,event :enter ,enter :trans ,trans :exit ,exit :code ,code :post ,post) - `(define-state-hook ,state-name ,defstate-type ,new-state ,docstring :event ,event :enter ,enter :trans ,trans :exit ,exit :code ,code :post ,post) - ) - - ) - ) - ) - ) + `(let ((,new-state (new 'static 'state :name (quote ,state-name) :next #f :exit #f :code #f :trans #f :post #f :enter #f :event #f))) + ;; the compiler will set the fields of the given state and define the symbol. + ;; This way it can check the individual function types, make sure they make sense, and create + ;; a state with the appropriate type. + ,(if virtual + `(define-virtual-state-hook ,state-name + ,defstate-type + ,new-state + ,docstring + ,(eq? virtual 'override) + :event ,event + :enter ,enter + :trans ,trans + :exit ,exit + :code ,code + :post ,post) + `(define-state-hook ,state-name + ,defstate-type + ,new-state + ,docstring + :event ,event + :enter ,enter + :trans ,trans + :exit ,exit + :code ,code + :post ,post)))))) (defmacro find-parent-state () "Find the first different implementation of the current virtual state above this one." - (when (or (not *defstate-current-type*) - (not *defstate-current-state-name*)) - (error "use of find-parent-state outside of a defstate.") - ) - `(cast-to-method-type - ,*defstate-current-type* - ,*defstate-current-state-name* - (find-parent-method ,*defstate-current-type* (method-id-of-type ,*defstate-current-type* ,*defstate-current-state-name*)) - ) - ) + (when (or (not *defstate-current-type*) (not *defstate-current-state-name*)) + (error "use of find-parent-state outside of a defstate.")) + `(cast-to-method-type ,*defstate-current-type* + ,*defstate-current-state-name* + (find-parent-method ,*defstate-current-type* (method-id-of-type ,*defstate-current-type* ,*defstate-current-state-name*)))) (defmacro behavior (bindings &rest body) "Define an anonymous behavior for a process state. This may only be used inside a defstate!" - (let ((behavior-type (first *defstate-type-stack*))) (pop! *defstate-type-stack*) - `(lambda :behavior ,behavior-type ,bindings ,@body) - ) - ) + `(lambda :behavior ,behavior-type + ,bindings + ,@body))) ;; set the default handler functions for a process's state handlers -(seval (define *default-state-handlers* '())) -(defmacro defstatehandler (proc - &key (event #f) - &key (enter #f) - &key (trans #f) - &key (exit #f) - &key (code #f) - &key (post #f)) +(seval + (define *default-state-handlers* '())) + +(defmacro defstatehandler (proc &key (event #f) &key (enter #f) &key (trans #f) &key (exit #f) &key (code #f) &key (post #f)) (let ((old (assoc proc *default-state-handlers*)) (new (list proc (list event enter trans exit code post)))) - (if (not old) - (append!! *default-state-handlers* new) ;; add new set of default handlers - (dolist (hnd *default-state-handlers*) ;; replace old handlers with new ones - (when (eq? (car hnd) old) - (set-car! hnd new) - ) - ) - ) - ) - `(none) - ) + (if (not old) + (append!! *default-state-handlers* new) ;; add new set of default handlers + (dolist (hnd *default-state-handlers*) ;; replace old handlers with new ones + (when (eq? (car hnd) old) + (set-car! hnd new))))) + `(none)) ;; DECOMP BEGINS -(defmethod new state - ((allocation symbol) - (type-to-make type) - (name symbol) - (code function) - (trans (function object)) - (enter function) - (exit (function object)) - (event (function process int symbol event-message-block object))) +(defmethod new state ((allocation symbol) + (type-to-make type) + (name symbol) + (code function) + (trans (function object)) + (enter function) + (exit (function object)) + (event (function process int symbol event-message-block object))) "Allocate a new state. It seems like this isn't really used much and most states are statically allocated and as a result don't have the constructor called." (let ((this (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -307,9 +252,7 @@ It type checks the arguments for the entry function. (set! (-> this post) #f) (set! (-> this enter) enter) (set! (-> this event) event) - this - ) - ) + this)) (defun inherit-state ((child state) (parent state)) "Copy handler functions from parent to child" @@ -320,25 +263,20 @@ It type checks the arguments for the entry function. (set! (-> child trans) (-> parent trans)) (set! (-> child post) (-> parent post)) (set! (-> child enter) (-> parent enter)) - (set! (-> child event) (-> parent event)) - ) + (set! (-> child event) (-> parent event))) (else - ;; Note: this is added to let us defstate on a child before the parent. - ;; The child won't be usable like this, but it will prevent a crash. - (format 0 "[STATE ERROR] inherit-state got a null parent state. Child is ~A~%" (-> child name)) - ) - ) - - child - ) + ;; Note: this is added to let us defstate on a child before the parent. + ;; The child won't be usable like this, but it will prevent a crash. + (format 0 "[STATE ERROR] inherit-state got a null parent state. Child is ~A~%" (-> child name)))) + child) (defmethod print ((this state)) "Print a state." (format '#t "#<~A ~A @ #x~X>" (-> this type) (-> this name) this) - this - ) + this) (define-extern enter-state (function object object object object object object object)) + (defun enter-state (arg0 arg1 arg2 arg3 arg4 arg5) "Make the process stored in pp enter the state in pp next-state" (with-pp @@ -357,8 +295,7 @@ It type checks the arguments for the entry function. (set! (-> pp status) 'initialize-go) ;; abandon this thread, go back to what initialized us! (throw 'initialize #t) - #t - ) + #t) ((!= (-> *kernel-context* current-process) pp) ;; we aren't actually in process pp right now. ;; so set us up to go in the next run @@ -368,60 +305,36 @@ It type checks the arguments for the entry function. (set-to-run (-> pp main-thread) enter-state arg0 arg1 arg2 arg3 arg4 arg5) ;; restore the old status. (set! (-> pp status) status-backup) - #t - ) - ) + #t)) ((= (-> pp main-thread) (-> pp top-thread)) ;; we are in the right process, and in the main thread! ;; we will do a nonlocal control transfer to the new state's code. ;; the new state can then suspend and get back to the kernel dispatcher lambda ;; like normal. - ;; change state! (set! (-> pp state) (-> pp next-state)) - ;; do exits (let ((frame (-> pp stack-frame-top))) (while frame (case (-> frame type) - ((protect-frame state) - ((-> (the-as protect-frame frame) exit)) - ) - ) - (set! frame (-> frame next)) - ) - ) - + ((protect-frame state) ((-> (the-as protect-frame frame) exit)))) + (set! frame (-> frame next)))) ;; done with going, clear the mask (process-mask-clear! (-> pp mask) going) - ;; now, update the process: (let ((new-state (-> pp state))) ;; event hook from the current state (set! (-> pp event-hook) (-> new-state event)) ;; if we have an exit, push it onto the stack frame ;; and also blow away the old stack frame - (if (-> new-state exit) - (set! (-> pp stack-frame-top) new-state) - (set! (-> pp stack-frame-top) #f) - ) + (if (-> new-state exit) (set! (-> pp stack-frame-top) new-state) (set! (-> pp stack-frame-top) #f)) (set! (-> pp post-hook) (-> new-state post)) (set! (-> pp trans-hook) (-> new-state trans)) - - ;; start up the new state. First run the enter function (let ((enter-func (-> new-state enter))) - (if enter-func - ((the (function _varargs_ none) enter-func) arg0 arg1 arg2 arg3 arg4 arg5) - ) - ) - + (if enter-func ((the (function _varargs_ none) enter-func) arg0 arg1 arg2 arg3 arg4 arg5))) ;; run the trans function before the code. - (let ((trans-func (-> new-state trans))) - (if trans-func - (trans-func) - ) - ) + (let ((trans-func (-> new-state trans))) (if trans-func (trans-func))) ;; now we run the code, but in a tricky way. ;; we need to: ;; - make sure that when this code returns, we do a deactivate @@ -441,7 +354,6 @@ It type checks the arguments for the entry function. (.mov carg1 arg1) (.mov carg2 arg2) (.mov carg3 arg3) - ;; get the main code as an x86-64 pointer (.mov func (-> new-state code)) (.add func off) @@ -458,15 +370,12 @@ It type checks the arguments for the entry function. (.add carg0 carg1) (.add carg2 carg3) #f ;; can't get here - ) - ) - ) + ))) (else ;; not in the main-thread. ;; so we set up the main thread to try again. (set! (-> pp trans-hook) #f) - (set-to-run (-> pp main-thread) - enter-state arg0 arg1 arg2 arg3 arg4 arg5) + (set-to-run (-> pp main-thread) enter-state arg0 arg1 arg2 arg3 arg4 arg5) (when (!= (-> pp top-thread name) 'post) ;; abandon this one too. ;; NOTE - this is different from GOAL. @@ -481,64 +390,41 @@ It type checks the arguments for the entry function. (.push temp) (.ret) #f ;; can't get here - ) - ) - ) - ) - ) - ) + )))))) (defun send-event-function ((proc process-tree) (msg event-message-block)) "Function to send an event to a process. Please use the send-event macros when possible" - (with-pp (when (and proc (!= (-> proc type) process-tree) (-> (the process proc) event-hook)) (let ((pp-backup pp)) (set! pp (the process proc)) (let ((result ((-> (the process proc) event-hook) (-> msg from) (-> msg num-params) (-> msg message) msg))) (set! pp pp-backup) - result - ) - ) - ) - ) - ) + result))))) (defmacro send-event (proc msg &key (from (with-pp pp)) &rest params) "Send an event to a process. This should be used over send-event-function" - `(let ((event-data (new 'stack-no-clear 'event-message-block))) - (set! (-> event-data from) ,from) - (set! (-> event-data num-params) ,(length params)) - (set! (-> event-data message) ,msg) - ,@(apply-i (lambda (x i) `(set! (-> event-data param ,i) (the-as uint ,x))) params) - (send-event-function ,proc event-data) - ) - ) + (set! (-> event-data from) ,from) + (set! (-> event-data num-params) ,(length params)) + (set! (-> event-data message) ,msg) + ,@(apply-i (lambda (x i) `(set! (-> event-data param ,i) (the-as uint ,x))) params) + (send-event-function ,proc event-data))) (defun looping-code () "Loop." (loop - (suspend) - ) - #f - ) + (suspend)) + #f) (defmacro set-state-time () "set the state-time field of the current object to the current time. process-drawable has one" - - `(set! (-> self state-time) (current-time)) - ) + `(set! (-> self state-time) (current-time))) (defmacro time-passed () "how much time has passed since set-state-time" - `(- (current-time) (-> self state-time)) - ) + `(- (current-time) (-> self state-time))) (defmacro time-passed? (time) "has it been 'time' since set-state-time?" - `(>= (time-passed) ,time) - ) - - - + `(>= (time-passed) ,time)) diff --git a/goal_src/jak1/kernel/gstring-h.gc b/goal_src/jak1/kernel/gstring-h.gc index 9279725f2e..874c40a3a7 100644 --- a/goal_src/jak1/kernel/gstring-h.gc +++ b/goal_src/jak1/kernel/gstring-h.gc @@ -1,18 +1,18 @@ ;;-*-Lisp-*- (in-package goal) (bundles "KERNEL.CGO") - (require "kernel-defs.gc") -;; name: gstring-h.gc -;; name in dgo: gstring-h -;; dgos: KERNEL - ;; generates no code, see gstring.gc for the string implementation. (define-extern *string-tmp-str* string) + (define-extern *temp-string* string) + (define-extern *stdcon0* string) + (define-extern *stdcon1* string) + (define-extern *stdcon* string) + (define-extern *debug-draw-pauseable* symbol) diff --git a/goal_src/jak1/kernel/gstring.gc b/goal_src/jak1/kernel/gstring.gc index 598260887f..da2bfd4bcf 100644 --- a/goal_src/jak1/kernel/gstring.gc +++ b/goal_src/jak1/kernel/gstring.gc @@ -1,15 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "KERNEL.CGO") - (require "kernel/gstring-h.gc") (require "kernel/gcommon.gc") -;; name: gstring.gc -;; name in dgo: gstring -;; dgos: KERNEL - - ;; The GOAL string type is like a C string plus a length field. ;; The number of bytes stored is the length + 1 for the null terminator. ;; Note that string is a bit of a special type, and the compiler assumes there is no @@ -25,88 +19,58 @@ "Get the length of a string. Like strlen" (let ((str-ptr (-> this data))) (while (!= 0 (-> str-ptr 0)) - (set! str-ptr (the (pointer uint8) (&+ str-ptr 1))) - ) - (- (the int str-ptr) (the int (-> this data))) - ) - ) + (set! str-ptr (the (pointer uint8) (&+ str-ptr 1)))) + (- (the int str-ptr) (the int (-> this data))))) (defmethod asize-of ((this string)) "get the size in bytes of a string." - (+ (-> this allocated-length) 1 (-> string size)) - ) + (+ (-> this allocated-length) 1 (-> string size))) (defun copy-string<-string ((dst string) (src string)) "Copy data from one string to another, like strcpy" (let ((dst-ptr (-> dst data)) - (src-ptr (-> src data)) - ) + (src-ptr (-> src data))) (while (!= 0 (-> src-ptr)) (set! (-> dst-ptr) (-> src-ptr)) (&+! dst-ptr 1) - (&+! src-ptr 1) - ) - (set! (-> dst-ptr 0) 0) - ) - dst - ) + (&+! src-ptr 1)) + (set! (-> dst-ptr 0) 0)) + dst) (defun copyn-string<-string ((dst string) (src string) (len int)) "Copy len bytes of data from one string to another, like strncpy" (let ((dst-ptr (-> dst data)) - (src-ptr (-> src data)) - ) - (if (<= len (length src)) - (dotimes (i len) - (set! (-> dst-ptr) (-> src-ptr)) - (&+! dst-ptr 1) - (&+! src-ptr 1) - ) - ) - (set! (-> dst-ptr 0) 0) - ) - dst - ) + (src-ptr (-> src data))) + (if (<= len (length src)) (dotimes (i len) (set! (-> dst-ptr) (-> src-ptr)) (&+! dst-ptr 1) (&+! src-ptr 1))) + (set! (-> dst-ptr 0) 0)) + dst) (defun substring! ((dst string) (src string) (start int) (end int)) "Copy the specified substring to dst. Returns an empty string if invalid indices are given." (let ((strlen (length src))) (if (and (< start strlen) (<= end strlen)) (let ((start-ptr (-> src data)) - (dst-ptr (-> dst data)) - ) - (dotimes (i (- end start)) - (set! (-> dst-ptr) (-> start-ptr (+ start i))) - (&+! dst-ptr 1) - ) - (set! (-> dst-ptr 0) 0) - dst - ) - "" - ) - ) - ) + (dst-ptr (-> dst data))) + (dotimes (i (- end start)) + (set! (-> dst-ptr) (-> start-ptr (+ start i))) + (&+! dst-ptr 1)) + (set! (-> dst-ptr 0) 0) + dst) + ""))) (defmethod new string ((allocation symbol) (type-to-make type) (size int) (other string)) "Create a new string of the given size. If other is not #f, copy data from it." (cond (other - (let* ((desired-size (max (length other) size)) - (new-obj (object-new allocation type-to-make (+ desired-size 1 (-> type-to-make size)))) - ) - (set! (-> new-obj allocated-length) size) - (copy-string<-string new-obj other) - new-obj - ) - ) + (let* ((desired-size (max (length other) size)) + (new-obj (object-new allocation type-to-make (+ desired-size 1 (-> type-to-make size))))) + (set! (-> new-obj allocated-length) size) + (copy-string<-string new-obj other) + new-obj)) (else - (let ((new-obj (object-new allocation type-to-make (+ 1 size (-> type-to-make size))))) - (set! (-> new-obj allocated-length) size) - new-obj - ) - ) - ) - ) + (let ((new-obj (object-new allocation type-to-make (+ 1 size (-> type-to-make size))))) + (set! (-> new-obj allocated-length) size) + new-obj)))) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; String comparison @@ -116,36 +80,23 @@ "Does str-a hold the same data as str-b?. If either string is null, returns #f." (let ((a-ptr (-> str-a data)) - (b-ptr (-> str-b data)) - ) - (if (or (zero? str-a) (zero? str-b)) - (return #f) - ) + (b-ptr (-> str-b data))) + (if (or (zero? str-a) (zero? str-b)) (return #f)) (while (and (nonzero? (-> a-ptr 0)) (nonzero? (-> b-ptr 0))) - (if (!= (-> a-ptr 0) (-> b-ptr 0)) - (return #f) - ) + (if (!= (-> a-ptr 0) (-> b-ptr 0)) (return #f)) (set! a-ptr (&-> a-ptr 1)) - (set! b-ptr (&-> b-ptr 1)) - ) + (set! b-ptr (&-> b-ptr 1))) ;; only equal if both end here. - (and (zero? (-> a-ptr 0)) (zero? (-> b-ptr 0))) - ) - ) + (and (zero? (-> a-ptr 0)) (zero? (-> b-ptr 0))))) (defun string-charp= ((str string) (charp (pointer uint8))) "Is the data in str equal to the C string charp?" (let ((str-ptr (-> str data))) (while (and (nonzero? (-> str-ptr 0)) (nonzero? (-> charp 0))) - (if (!= (-> str-ptr 0) (-> charp 0)) - (return #f) - ) + (if (!= (-> str-ptr 0) (-> charp 0)) (return #f)) (set! str-ptr (&-> str-ptr 1)) - (set! charp (&-> charp 1)) - ) - (and (zero? (-> str-ptr 0)) (zero? (-> charp 0))) - ) - ) + (set! charp (&-> charp 1))) + (and (zero? (-> str-ptr 0)) (zero? (-> charp 0))))) (defun name= ((arg0 basic) (arg1 basic)) "Do arg0 and arg1 have the same name? @@ -154,18 +105,11 @@ ((= arg0 arg1) ;; Either same symbols, or same string objects, fast check pass! #t) - ((and (= (-> arg0 type) string) (= (-> arg1 type) string)) - (string= (the-as string arg0) (the-as string arg1)) - ) - ((and (= (-> arg0 type) string) (= (-> arg1 type) symbol)) - (string= (the-as string arg0) (symbol->string arg1)) - ) - ((and (= (-> arg1 type) string) (= (-> arg0 type) symbol)) - (string= (the-as string arg1) (symbol->string arg0)) - ) + ((and (= (-> arg0 type) string) (= (-> arg1 type) string)) (string= (the-as string arg0) (the-as string arg1))) + ((and (= (-> arg0 type) string) (= (-> arg1 type) symbol)) (string= (the-as string arg0) (symbol->string arg1))) + ((and (= (-> arg1 type) string) (= (-> arg0 type) symbol)) (string= (the-as string arg1) (symbol->string arg0))) ;; no need to check symbol - symbol, that would have passed the first check. - ) - ) + )) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; String copying @@ -177,12 +121,9 @@ (dotimes (i len) (set! (-> str-ptr 0) (-> charp 0)) (set! str-ptr (&-> str-ptr 1)) - (set! charp (&-> charp 1)) - ) - (set! (-> str-ptr 0) (the-as uint 0)) - ) - str - ) + (set! charp (&-> charp 1))) + (set! (-> str-ptr 0) (the-as uint 0))) + str) (defun string<-charp ((str string) (charp (pointer uint8))) "Copy all chars from a char* to a GOAL string. @@ -191,12 +132,9 @@ (while (nonzero? (-> charp 0)) (set! (-> str-ptr 0) (-> charp 0)) (set! str-ptr (&-> str-ptr 1)) - (set! charp (&-> charp 1)) - ) - (set! (-> str-ptr 0) (the-as uint 0)) - ) - str - ) + (set! charp (&-> charp 1))) + (set! (-> str-ptr 0) (the-as uint 0))) + str) (defun charp<-string ((dst (pointer uint8)) (src-string string)) "Copy a GOAL string into a character array." @@ -204,23 +142,18 @@ (while (!= 0 (-> src)) (set! (-> dst) (-> src)) (&+! dst 1) - (&+! src 1) - ) + (&+! src 1)) (set! (-> dst) 0) - 0 - ) - ) + 0)) (defun copy-charp<-charp ((dst (pointer uint8)) (src (pointer uint8))) "C string copy." (while (nonzero? (-> src 0)) (set! (-> dst 0) (-> src 0)) (set! dst (&-> dst 1)) - (set! src (&-> src 1)) - ) + (set! src (&-> src 1))) (set! (-> dst 0) 0) - dst - ) + dst) (defun cat-string<-string ((a string) (b string)) "Append b to a. No length checks" @@ -230,60 +163,43 @@ (nop!) (nop!) (nop!) - (set! a-ptr (&-> a-ptr 1)) - ) + (set! a-ptr (&-> a-ptr 1))) (while (nonzero? (-> b-ptr 0)) (set! (-> a-ptr 0) (-> b-ptr 0)) (set! a-ptr (&-> a-ptr 1)) - (set! b-ptr (&-> b-ptr 1)) - ) - ) - (set! (-> a-ptr 0) (the-as uint 0)) - ) - a - ) + (set! b-ptr (&-> b-ptr 1)))) + (set! (-> a-ptr 0) (the-as uint 0))) + a) (defun catn-string<-charp ((a string) (b (pointer uint8)) (len int)) "Append b to a, exactly len chars" (let ((a-ptr (-> a data))) (while (nonzero? (-> a-ptr 0)) - (set! a-ptr (&-> a-ptr 1)) - ) + (set! a-ptr (&-> a-ptr 1))) (dotimes (i len) (set! (-> a-ptr 0) (-> b 0)) (set! a-ptr (&-> a-ptr 1)) - (set! b (&-> b 1)) - ) - (set! (-> a-ptr 0) (the-as uint 0)) - ) - a - ) + (set! b (&-> b 1))) + (set! (-> a-ptr 0) (the-as uint 0))) + a) (defun cat-string<-string_to_charp ((a string) (b string) (end-ptr (pointer uint8))) "Append b to a, using chars of b up to (and including) the one pointed to by end-ptr, or, until the end of b, whichever comes first." - (let ((b-ptr (-> b data)) - (a-ptr (-> a data)) - ) + (a-ptr (-> a data))) ;; seek to end of a (while (nonzero? (-> a-ptr 0)) (nop!) (nop!) (nop!) - (set! a-ptr (&-> a-ptr 1)) - ) - (while (and (>= (the-as int end-ptr) (the-as int b-ptr)) - (nonzero? (-> b-ptr 0))) + (set! a-ptr (&-> a-ptr 1))) + (while (and (>= (the-as int end-ptr) (the-as int b-ptr)) (nonzero? (-> b-ptr 0))) (set! (-> a-ptr 0) (-> b-ptr 0)) (set! a-ptr (&-> a-ptr 1)) - (set! b-ptr (&-> b-ptr 1)) - ) + (set! b-ptr (&-> b-ptr 1))) (set! (-> a-ptr 0) 0) - a-ptr - ) - ) - + a-ptr)) (defun append-character-to-string ((str string) (char uint8)) "Append char to the end of the given string." @@ -292,13 +208,10 @@ (nop!) (nop!) (nop!) - (set! str-ptr (&-> str-ptr 1)) - ) + (set! str-ptr (&-> str-ptr 1))) (set! (-> str-ptr 0) char) (set! (-> str-ptr 1) 0) - 0 - ) - ) + 0)) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; String utilities @@ -309,70 +222,52 @@ (let* ((in-ptr (-> in data)) (in-data (-> in-ptr 0)) (in-idx 1) - (out-idx 0) - ) + (out-idx 0)) (while (nonzero? in-data) - (if (and (>= in-data (the-as uint 97)) (>= (the-as uint 122) in-data)) - (+! in-data -32) - ) + (if (and (>= in-data (the-as uint 97)) (>= (the-as uint 122) in-data)) (+! in-data -32)) (set! (-> out data out-idx) in-data) (set! in-data (-> in-ptr in-idx)) (+! in-idx 1) - (+! out-idx 1) - ) - (set! (-> out data out-idx) (the-as uint 0)) - ) - out - ) + (+! out-idx 1)) + (set! (-> out data out-idx) (the-as uint 0))) + out) (defun string-downcase ((in string) (out string)) "Lowercase the given string." (let* ((in-ptr (-> in data)) (in-data (-> in-ptr 0)) (in-idx 1) - (out-idx 0) - ) + (out-idx 0)) (while (nonzero? in-data) - (if (and (>= in-data (the-as uint 97)) (>= (the-as uint 122) in-data)) - (+! in-data 32) - ) + (if (and (>= in-data (the-as uint 97)) (>= (the-as uint 122) in-data)) (+! in-data 32)) (set! (-> out data out-idx) in-data) (set! in-data (-> in-ptr in-idx)) (+! in-idx 1) - (+! out-idx 1) - ) - (set! (-> out data out-idx) (the-as uint 0)) - ) - out - ) + (+! out-idx 1)) + (set! (-> out data out-idx) (the-as uint 0))) + out) (defun charp-basename ((charp (pointer uint8))) "Like basename in C" (let ((ptr charp)) ;; seek to end (while (nonzero? (-> ptr 0)) - (set! ptr (&-> ptr 1)) - ) + (set! ptr (&-> ptr 1))) ;; and back up... (while (< (the-as int charp) (the-as int ptr)) (set! ptr (&-> ptr -1)) ;; (if (or (zero? (+ (-> ptr 0) -47)) (zero? (+ (-> ptr 0) -92))) ;; check for equal to / or \ (if (or (= (-> ptr 0) #\/) (= (-> ptr 0) #\\)) - ;; return the next char after that - (return (&-> ptr 1)) - ) - ) + ;; return the next char after that + (return (&-> ptr 1)))) ;; didn't find any slashes, return the whole thing. - charp - ) - ) + charp)) (defun clear ((a0-0 string)) "Make string empty" - (set! (-> a0-0 data 0) 0) a0-0 - ) - + (set! (-> a0-0 data 0) 0) + a0-0) ;;;;;;;;;;;;;;;;;;;;;;;;; ;; String ordering @@ -388,66 +283,34 @@ (let ((len (min (length a) (length b)))) (dotimes (i len) (cond - ((< (-> a data i) (-> b data i)) - (return #t) - ) - ((< (-> b data i) (-> a data i)) - (return #f) - ) - ) - ) - ) - #f - ) + ((< (-> a data i) (-> b data i)) (return #t)) + ((< (-> b data i) (-> a data i)) (return #f))))) + #f) (defun string>? ((a string) (b string)) "In dictionary order, is a > b?" (let ((len (min (length a) (length b)))) (dotimes (i len) (cond - ((< (-> a data i) (-> b data i)) - (return #f) - ) - ((< (-> b data i) (-> a data i)) - (return #t) - ) - ) - ) - ) - #f - ) + ((< (-> a data i) (-> b data i)) (return #f)) + ((< (-> b data i) (-> a data i)) (return #t))))) + #f) (defun string<=? ((a string) (b string)) (let ((len (min (length a) (length b)))) (dotimes (i len) (cond - ((< (-> a data i) (-> b data i)) - (return #t) - ) - ((< (-> b data i) (-> a data i)) - (return #f) - ) - ) - ) - ) - #t - ) + ((< (-> a data i) (-> b data i)) (return #t)) + ((< (-> b data i) (-> a data i)) (return #f))))) + #t) (defun string>=? ((a string) (b string)) (let ((len (min (length a) (length b)))) (dotimes (i len) (cond - ((< (-> a data i) (-> b data i)) - (return #f) - ) - ((< (-> b data i) (-> a data i)) - (return #t) - ) - ) - ) - ) - #t - ) + ((< (-> a data i) (-> b data i)) (return #f)) + ((< (-> b data i) (-> a data i)) (return #t))))) + #t) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; String argument parsing @@ -459,10 +322,8 @@ (defun string-skip-to-char ((str (pointer uint8)) (char uint)) "Return pointer to first instance of char in C string, or to the null terminator if none" (while (and (nonzero? (-> str 0)) (!= (-> str 0) char)) - (set! str (&-> str 1)) - ) - str - ) + (set! str (&-> str 1))) + str) (defun string-cat-to-last-char ((base-str string) (append-str string) (char uint)) "Append append-str to the end of base-str, up to the last occurance of char in append-str" @@ -471,41 +332,24 @@ (when (= (-> location-of-char 0) char) (until (!= (-> location-of-char 0) char) (set! end-of-append location-of-char) - (set! location-of-char (string-skip-to-char (&-> location-of-char 1) char)) - ) - ) - ) - (cat-string<-string_to_charp base-str append-str end-of-append) - ) - ) - + (set! location-of-char (string-skip-to-char (&-> location-of-char 1) char))))) + (cat-string<-string_to_charp base-str append-str end-of-append))) (defmacro is-whitespace-char? (c) ;; 32 = space ;; 9 = \t ;; 13 = \r ;; 10 = \n - `(or (= ,c 32) - (= ,c 9) - (= ,c 13) - (= ,c 10) - ) - ) + `(or (= ,c 32) (= ,c 9) (= ,c 13) (= ,c 10))) (defmacro not-whitespace-char? (c) - `(not (is-whitespace-char? ,c)) - ) + `(not (is-whitespace-char? ,c))) (defun string-skip-whitespace ((arg0 (pointer uint8))) "Skip over spaces, tabs, r's and n's" - (while - (and (nonzero? (-> arg0 0)) - (is-whitespace-char? (-> arg0 0)) - ) - (set! arg0 (&-> arg0 1)) - ) - arg0 - ) + (while (and (nonzero? (-> arg0 0)) (is-whitespace-char? (-> arg0 0))) + (set! arg0 (&-> arg0 1))) + arg0) (defun string-suck-up! ((str string) (location (pointer uint8))) "Remove character between the start of string and location. @@ -517,53 +361,37 @@ (while (nonzero? (-> location 0)) (set! (-> str-ptr 0) (-> location 0)) (set! str-ptr (&-> str-ptr 1)) - (set! location (&-> location 1)) - ) + (set! location (&-> location 1))) ;; null terminate - (set! (-> str-ptr 0) 0) - ) - #f - ) - ) + (set! (-> str-ptr 0) 0)) + #f)) (defun string-strip-leading-whitespace! ((str string)) "Remove whitespace at the front of a string" - (let ((start-loc (string-skip-whitespace (-> str data)))) - (string-suck-up! str start-loc) - ) - #f - ) + (let ((start-loc (string-skip-whitespace (-> str data)))) (string-suck-up! str start-loc)) + #f) (defun string-strip-trailing-whitespace! ((str string)) "Remove whitespace at the end of a string" (when (nonzero? (length str)) (let ((ptr (&+ (-> str data) (+ (length str) -1)))) - (while (and - (>= (the-as int ptr) (the-as int (-> str data))) - (is-whitespace-char? (-> ptr 0)) - ) - (set! ptr (&-> ptr -1)) - ) - (set! (-> ptr 1) (the-as uint 0)) - ) - 0 - ) - #f - ) + (while (and (>= (the-as int ptr) (the-as int (-> str data))) (is-whitespace-char? (-> ptr 0))) + (set! ptr (&-> ptr -1))) + (set! (-> ptr 1) (the-as uint 0))) + 0) + #f) (defun string-strip-whitespace! ((arg0 string)) "Remove whitespace at the beginning and end of a string" (string-strip-trailing-whitespace! arg0) (string-strip-leading-whitespace! arg0) - #f - ) + #f) (defun string-get-arg!! ((a-str string) (arg string)) "Get the first argument from a whitespace separated list of arguments. The arguments can be in quotes or not. Removes argument from arg string, sucks up white space before the next one Outputs argument to a-str." - ;; seek to first arg (let ((arg-word-start (string-skip-whitespace (-> arg data)))) (cond @@ -573,55 +401,34 @@ ;; now find end (let ((arg-start arg-end)) (while (and (nonzero? (-> arg-end 0)) (!= (-> arg-end 0) 34)) ;; close quote - (set! arg-end (&-> arg-end 1)) - ) + (set! arg-end (&-> arg-end 1))) ;; copy to output - (copyn-string<-charp a-str arg-start (&- arg-end (the-as uint arg-start))) - ) - + (copyn-string<-charp a-str arg-start (&- arg-end (the-as uint arg-start)))) ;; if we got a close quote, seek past it. - (if (= (-> arg-end 0) 34) - (set! arg-end (&-> arg-end 1)) - ) - + (if (= (-> arg-end 0) 34) (set! arg-end (&-> arg-end 1))) ;; kill leading white space - (let ((a1-3 (string-skip-whitespace arg-end))) - (string-suck-up! arg a1-3) - ) - ) - (return #t) - ) + (let ((a1-3 (string-skip-whitespace arg-end))) (string-suck-up! arg a1-3))) + (return #t)) ((nonzero? (-> arg-word-start 0)) (let ((v1-11 arg-word-start)) ;; find end - (while (and - (nonzero? (-> arg-word-start 0)) - (!= (-> arg-word-start 0) 32) - (!= (-> arg-word-start 0) 9) - (!= (-> arg-word-start 0) 13) - (!= (-> arg-word-start 0) 10) - ) - (set! arg-word-start (&-> arg-word-start 1)) - ) - (copyn-string<-charp a-str v1-11 (&- arg-word-start (the-as uint v1-11))) - ) - (let ((a1-9 (string-skip-whitespace arg-word-start))) - (string-suck-up! arg a1-9) - ) - (return #t) - ) - ) - ) - #f - ) + (while (and (nonzero? (-> arg-word-start 0)) + (!= (-> arg-word-start 0) 32) + (!= (-> arg-word-start 0) 9) + (!= (-> arg-word-start 0) 13) + (!= (-> arg-word-start 0) 10)) + (set! arg-word-start (&-> arg-word-start 1))) + (copyn-string<-charp a-str v1-11 (&- arg-word-start (the-as uint v1-11)))) + (let ((a1-9 (string-skip-whitespace arg-word-start))) (string-suck-up! arg a1-9)) + (return #t)))) + #f) (defun string->int ((str string)) "String to int. Supports binary, hex, and decimal. Negative is implemented for decimal and hex But I think it's broken?" (let ((str-ptr (-> str data)) (result 0) - (negative #f) - ) + (negative #f)) (cond ((= (-> str-ptr 0) 35) ;; starts with #. @@ -633,91 +440,56 @@ (when (= (-> next-char-2 1) 45) ;; negate! (set! negative #t) - (set! next-char-2 (&-> next-char-2 1)) - ) - (while (or - (and (>= (-> next-char-2 0) (the-as uint 48)) (>= (the-as uint 57) (-> next-char-2 0))) - (and (>= (-> next-char-2 0) (the-as uint 65)) (>= (the-as uint 70) (-> next-char-2 0))) - (and (>= (-> next-char-2 0) (the-as uint 97)) (>= (the-as uint 102) (-> next-char-2 0))) - ) + (set! next-char-2 (&-> next-char-2 1))) + (while (or (and (>= (-> next-char-2 0) (the-as uint 48)) (>= (the-as uint 57) (-> next-char-2 0))) + (and (>= (-> next-char-2 0) (the-as uint 65)) (>= (the-as uint 70) (-> next-char-2 0))) + (and (>= (-> next-char-2 0) (the-as uint 97)) (>= (the-as uint 102) (-> next-char-2 0)))) (cond ((and (>= (-> next-char-2 0) (the-as uint 65)) (>= (the-as uint 70) (-> next-char-2 0))) - ;; is in [A-F] - (set! result (the-as int (+ (-> next-char-2 0) -55 (* result 16)))) - ) + ;; is in [A-F] + (set! result (the-as int (+ (-> next-char-2 0) -55 (* result 16))))) ((and (>= (-> next-char-2 0) (the-as uint 97)) (>= (the-as uint 102) (-> next-char-2 0))) - ;; is in [a-f] - (set! result (the-as int (+ (-> next-char-2 0) -87 (* result 16)))) - ) + ;; is in [a-f] + (set! result (the-as int (+ (-> next-char-2 0) -87 (* result 16))))) (else - ;; is in [0-9] - (set! result (the-as int (+ (-> next-char-2 0) -48 (* result 16)))) - ) - ) - (set! next-char-2 (&-> next-char-2 1)) - ) - ) - ) + ;; is in [0-9] + (set! result (the-as int (+ (-> next-char-2 0) -48 (* result 16)))))) + (set! next-char-2 (&-> next-char-2 1))))) ((or (= (-> next-char-1 0) 98) (= (-> next-char-1 0) 66)) ;; is #b (I guess we can't do negative binary?) (let ((a0-4 (&-> next-char-1 1))) (while (and (>= (-> a0-4 0) (the-as uint 48)) (>= (the-as uint 49) (-> a0-4 0))) (set! result (the-as int (+ (-> a0-4 0) -48 (* result 2)))) - (set! a0-4 (&-> a0-4 1)) - ) - ) - ) - ) - ) - ) + (set! a0-4 (&-> a0-4 1)))))))) (else - ;; decimal - - ;; check for negative - (when (= (-> str-ptr 1) 45) - (set! negative #t) - (set! str-ptr (&-> str-ptr 1)) - ) - (while (and (>= (-> str-ptr 0) (the-as uint 48)) (>= (the-as uint 57) (-> str-ptr 0))) - (set! result (the-as int (+ (-> str-ptr 0) -48 (* 10 result)))) - (set! str-ptr (&-> str-ptr 1)) - ) - ) - ) + ;; decimal + ;; check for negative + (when (= (-> str-ptr 1) 45) + (set! negative #t) + (set! str-ptr (&-> str-ptr 1))) + (while (and (>= (-> str-ptr 0) (the-as uint 48)) (>= (the-as uint 57) (-> str-ptr 0))) + (set! result (the-as int (+ (-> str-ptr 0) -48 (* 10 result)))) + (set! str-ptr (&-> str-ptr 1))))) (cond - (negative - (- result) - ) - (else - result - ) - ) - ) - ) + (negative (- result)) + (else result)))) (defun string->float ((str string)) "Convert a string to a float, but it is not implemented." ;(format 0 "string->float left as an excersize for the reader~%") ;0.0 - ;; added... (let ((charp (-> str data)) (result 0.0) (negative #f)) - (when (= (-> charp) #\-) (set! negative #t) - (&+! charp 1) - ) - + (&+! charp 1)) (while (and (>= (-> charp) #\0) (<= (-> charp) #\9)) ;; number - (*! result 10) ;; bump oom (e.g. 123 -> 1230) (+! result (- (-> charp) #\0)) ;; add unit (e.g. 1230 -> 1234) - (&+! charp 1) - ) - + (&+! charp 1)) (when (= (-> charp) #\.) ;; dot (&+! charp 1) @@ -725,62 +497,33 @@ (let ((frac 1.0)) (while (and (>= (-> charp) #\0) (<= (-> charp) #\9)) ;; number - (*! frac 10) ;; bump frac oom (+! result (/ (the float (- (-> charp) #\0)) frac)) ;; add frac (e.g. 1234 -> 1234.5) - (&+! charp 1) - ) - ) - ) - + (&+! charp 1)))) (cond - (negative - (- result) - ) - (else - result - ) - ) - ) - ) + (negative (- result)) + (else result)))) (defun string-get-int32!! ((arg0 (pointer int32)) (arg1 string)) "Get an int32 from a list of arguments" (cond - ((string-get-arg!! *string-tmp-str* arg1) - (set! (-> arg0 0) (string->int *string-tmp-str*)) - #t - ) - (else #f) - ) - ) + ((string-get-arg!! *string-tmp-str* arg1) (set! (-> arg0 0) (string->int *string-tmp-str*)) #t) + (else #f))) (defun string-get-float!! ((arg0 (pointer float)) (arg1 string)) (cond - ((string-get-arg!! *string-tmp-str* arg1) - (set! (-> arg0 0) (string->float *string-tmp-str*)) - #t - ) - (else #f) - ) - ) + ((string-get-arg!! *string-tmp-str* arg1) (set! (-> arg0 0) (string->float *string-tmp-str*)) #t) + (else #f))) (defun string-get-flag!! ((result (pointer symbol)) (in string) (first-flag string) (second-flag string)) (cond ((string-get-arg!! *string-tmp-str* in) (cond - ((or (string= *string-tmp-str* first-flag) - (string= *string-tmp-str* second-flag) - ) + ((or (string= *string-tmp-str* first-flag) (string= *string-tmp-str* second-flag)) (set! (-> result 0) (string= *string-tmp-str* first-flag)) - #t - ) - (else #f) - ) - ) - (else #f) - ) - ) + #t) + (else #f))) + (else #f))) ;;;;;;;;;;;;;;;;;;;;; ;; Globals @@ -798,12 +541,16 @@ (define *debug-draw-pauseable* #f) (define *stdcon0* (new 'global 'string 16384 (the string #f))) + (define *stdcon1* (new 'global 'string 16384 (the string #f))) + (define *stdcon* *stdcon0*) ;; shared temporary strings. (define *temp-string* (new 'global 'string 256 (the string #f))) + (define *temp-string2* (new 'global 'string 256 (the string #f))) + (define *pc-cpp-temp-string* "A convenient place to retrieve a string from C++" (new 'global 'string 256 (the-as string #f))) @@ -811,10 +558,6 @@ (defmacro string-format (&rest args) "Formats into *temp-string* and returns it, for in-place string formating. DO NOT USE *temp-string* WITH THIS MACRO! It is read as input AFTER all of the args evaluate." - `(begin - (format (clear *temp-string*) ,@args) - *temp-string* - ) - ) - + (format (clear *temp-string*) ,@args) + *temp-string*)) diff --git a/goal_src/jak1/kernel/pskernel.gc b/goal_src/jak1/kernel/pskernel.gc index 6d6447ab84..b6f5d10c10 100644 --- a/goal_src/jak1/kernel/pskernel.gc +++ b/goal_src/jak1/kernel/pskernel.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "KERNEL.CGO") - (require "kernel/gcommon.gc") -;; name: pskernel.gc -;; name in dgo: pskernel -;; dgos: KERNEL - #| pskernel.gc contains a bunch of utilities for poking around the PS2's kernel. These are unused in the retail game, and wouldn't be "safe" to use on a retail console, @@ -40,93 +35,74 @@ In the PC port, all of these functions are just stubs. (dma-tnext uint32) (dma-stack0 uint32) (dma-stack1 uint32) - (kernel-read-fn uint32) - ) - ) + (kernel-read-fn uint32))) (defmacro nyi-break (name) `(begin - (format 0 "~A is not implemented!~%" (quote ,name)) - (break) - (none) - ) - ) + (format 0 "~A is not implemented!~%" (quote ,name)) + (break) + (none))) (defun kernel-copy-function (unused source dest size) "Copy size words from source to dest. The a0 argument is ignored. Uses registers a0, a1, a2, a3" - (nyi-break kernel-copy-function) - ) + (nyi-break kernel-copy-function)) (defun kernel-copy-to-kernel-ram () "Does a syscall 102. This is CpuConfig on released PS2 BIOSes. I'm guessing this somehow calls kernel-copy-function" - (nyi-break kernel-copy-to-kernel-ram) - ) + (nyi-break kernel-copy-to-kernel-ram)) (defun kernel-write-function (unused source dest) "Writes a single word to the destination" - (nyi-break kernel-write-function) - ) + (nyi-break kernel-write-function)) (defun kernel-write () "Does a syscall 102. I'm guessing this somehow calls kernel-write-function." - (nyi-break kernel-write) - ) + (nyi-break kernel-write)) (defun kernel-read-function (unused source) "Read a single word (signed) from source" - (nyi-break kernel-read-function) - ) + (nyi-break kernel-read-function)) (defun kernel-read () "Does a syscall 102. I'm guessing this somehow calls kernel-read-function" - (nyi-break kernel-read) - ) + (nyi-break kernel-read)) (defun kernel-check-hardwired-addresses () "Checks a bunch of stuff in the kernel using kernel-read. If the memory layout isn't what it expects, it prints an error and crashes." - (nyi-break kernel-check-hardwired-addresses) - ) + (nyi-break kernel-check-hardwired-addresses)) (defun install-default-debug-handler (handler) "Installs the given handler as the debug handler 1 through 13. Uses the install-debug-handler function defined in kmachine.cpp" - (nyi-break install-default-debug-handler) - ) + (nyi-break install-default-debug-handler)) (defun return-from-exception (regs) "Restore the registers and eret." - (nyi-break return-from-exception) - ) + (nyi-break return-from-exception)) (defun kernel-set-exception-vector () "Use syscall 13/syscall 14 to set exception handlers" - (nyi-break kernel-set-exception-vector) - ) + (nyi-break kernel-set-exception-vector)) (defun kernel-set-interrupt-vector () "Use syscall 15 to set an interrupt handler" - (nyi-break kernel-set-interrupt-vector) - ) + (nyi-break kernel-set-interrupt-vector)) (defun kernel-set-level2-vector () "Set some handler by writing directly to kernel memory. Not sure what this is." - (nyi-break kernel-set-level2-vector) - ) + (nyi-break kernel-set-level2-vector)) (defun deinstall-debug-handler () "Set the kernel exception handler back to the default?" - (nyi-break deinstall-debug-handler) - ) + (nyi-break deinstall-debug-handler)) (defun deinstall-debug-handlers () "Set a bunch of excpetion handlers back to the default?" - (nyi-break deinstall-debug-handlers) - ) + (nyi-break deinstall-debug-handlers)) (defun resend-exception () "I think this was to return from a GOAL crash handler back to the EE kernel's crash handler." - (nyi-break resend-exception) - ) \ No newline at end of file + (nyi-break resend-exception)) diff --git a/goal_src/jak1/levels/beach/air-h.gc b/goal_src/jak1/levels/beach/air-h.gc index 55813b8e0f..2425f095bd 100644 --- a/goal_src/jak1/levels/beach/air-h.gc +++ b/goal_src/jak1/levels/beach/air-h.gc @@ -1,56 +1,34 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/math/vector-h.gc") -;; name: air-h.gc -;; name in dgo: air-h -;; dgos: BEA, L1 - ;; DECOMP BEGINS (deftype air-box (structure) - ((vecs vector 2 :inline) - (x-pos float :overlay-at (-> vecs 0 x)) - (height-level float :overlay-at (-> vecs 0 y)) - (z-pos float :overlay-at (-> vecs 0 z)) - (cos-angle float :overlay-at (-> vecs 0 w)) - (x-length float :offset 16) - (z-length float :offset 24) - (sin-angle float :offset 28) - ) - ) - + ((vecs vector 2 :inline) + (x-pos float :overlay-at (-> vecs 0 x)) + (height-level float :overlay-at (-> vecs 0 y)) + (z-pos float :overlay-at (-> vecs 0 z)) + (cos-angle float :overlay-at (-> vecs 0 w)) + (x-length float :offset 16) + (z-length float :offset 24) + (sin-angle float :offset 28))) (defun point-in-air-box-area? ((arg0 float) (arg1 float) (arg2 air-box)) (let ((v0-0 #f)) (let ((f0-2 (+ (* arg0 (-> arg2 cos-angle)) (* arg1 (-> arg2 sin-angle)))) - (f1-5 (- (* arg1 (-> arg2 cos-angle)) (* arg0 (-> arg2 sin-angle)))) - ) - (if (and (>= f0-2 0.0) (>= f1-5 0.0) (< f0-2 (-> arg2 x-length)) (< f1-5 (-> arg2 z-length))) - (set! v0-0 #t) - ) - ) - v0-0 - ) - ) + (f1-5 (- (* arg1 (-> arg2 cos-angle)) (* arg0 (-> arg2 sin-angle))))) + (if (and (>= f0-2 0.0) (>= f1-5 0.0) (< f0-2 (-> arg2 x-length)) (< f1-5 (-> arg2 z-length))) (set! v0-0 #t))) + v0-0)) (defun point-in-air-box? ((arg0 vector) (arg1 air-box)) (when (< (-> arg1 height-level) (-> arg0 y)) (let ((f1-2 (- (-> arg0 x) (the-as float (-> arg1 x-pos)))) (f2-1 (- (-> arg0 z) (-> arg1 z-pos))) (v1-0 arg1) - (v0-0 #f) - ) + (v0-0 #f)) (let ((f0-5 (+ (* f1-2 (-> v1-0 cos-angle)) (* f2-1 (-> v1-0 sin-angle)))) - (f1-4 (- (* f2-1 (-> v1-0 cos-angle)) (* f1-2 (-> v1-0 sin-angle)))) - ) - (if (and (>= f0-5 0.0) (>= f1-4 0.0) (< f0-5 (-> v1-0 x-length)) (< f1-4 (-> v1-0 z-length))) - (set! v0-0 #t) - ) - ) - v0-0 - ) - ) - ) + (f1-4 (- (* f2-1 (-> v1-0 cos-angle)) (* f1-2 (-> v1-0 sin-angle))))) + (if (and (>= f0-5 0.0) (>= f1-4 0.0) (< f0-5 (-> v1-0 x-length)) (< f1-4 (-> v1-0 z-length))) (set! v0-0 #t))) + v0-0))) diff --git a/goal_src/jak1/levels/beach/air.gc b/goal_src/jak1/levels/beach/air.gc index f1f64e4176..1c542cd449 100644 --- a/goal_src/jak1/levels/beach/air.gc +++ b/goal_src/jak1/levels/beach/air.gc @@ -1,99 +1,60 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "levels/beach/air-h.gc") (require "engine/debug/debug-h.gc") (require "engine/math/math.gc") -;; name: air.gc -;; name in dgo: air -;; dgos: BEA, L1 - ;; DECOMP BEGINS (defun point-in-air? ((arg0 vector) (arg1 (inline-array air-box)) (arg2 int)) (local-vars (t0-0 symbol)) (dotimes (v1-0 arg2) (let ((t1-0 arg0) - (a3-1 (-> arg1 v1-0)) - ) + (a3-1 (-> arg1 v1-0))) (set! t0-0 (when (< (-> a3-1 height-level) (-> t1-0 y)) (let ((f0-2 (- (-> t1-0 x) (-> a3-1 x-pos))) - (f2-1 (- (-> t1-0 z) (-> a3-1 z-pos))) - ) + (f2-1 (- (-> t1-0 z) (-> a3-1 z-pos)))) (set! t0-0 #f) (let ((f1-5 (+ (* f0-2 (-> a3-1 cos-angle)) (* f2-1 (-> a3-1 sin-angle)))) - (f0-4 (- (* f2-1 (-> a3-1 cos-angle)) (* f0-2 (-> a3-1 sin-angle)))) - ) - (if (and (>= f1-5 0.0) (>= f0-4 0.0) (< f1-5 (-> a3-1 x-length)) (< f0-4 (-> a3-1 z-length))) - (set! t0-0 #t) - ) - ) - ) - t0-0 - ) - ) - ) - (if t0-0 - (return #t) - ) - ) - #f - ) + (f0-4 (- (* f2-1 (-> a3-1 cos-angle)) (* f0-2 (-> a3-1 sin-angle))))) + (if (and (>= f1-5 0.0) (>= f0-4 0.0) (< f1-5 (-> a3-1 x-length)) (< f0-4 (-> a3-1 z-length))) (set! t0-0 #t)))) + t0-0))) + (if t0-0 (return #t))) + #f) (defun points-in-air? ((arg0 vector) (arg1 vector) (arg2 (inline-array air-box)) (arg3 int)) (local-vars (t1-4 symbol)) (dotimes (v1-0 arg3) (let* ((t0-1 (-> arg2 v1-0)) - (f0-0 (-> t0-1 height-level)) - ) + (f0-0 (-> t0-1 height-level))) (when (and (< f0-0 (-> arg0 y)) (< f0-0 (-> arg1 y))) (let ((f2-0 (- (-> arg0 x) (-> t0-1 x-pos))) (f4-0 (- (-> arg0 z) (-> t0-1 z-pos))) (f0-4 (- (-> arg1 x) (-> t0-1 x-pos))) (f1-6 (- (-> arg1 z) (-> t0-1 z-pos))) (t2-0 t0-1) - (t1-3 #f) - ) + (t1-3 #f)) (let ((f3-3 (+ (* f2-0 (-> t2-0 cos-angle)) (* f4-0 (-> t2-0 sin-angle)))) - (f2-2 (- (* f4-0 (-> t2-0 cos-angle)) (* f2-0 (-> t2-0 sin-angle)))) - ) - (if (and (>= f3-3 0.0) (>= f2-2 0.0) (< f3-3 (-> t2-0 x-length)) (< f2-2 (-> t2-0 z-length))) - (set! t1-3 #t) - ) - ) + (f2-2 (- (* f4-0 (-> t2-0 cos-angle)) (* f2-0 (-> t2-0 sin-angle))))) + (if (and (>= f3-3 0.0) (>= f2-2 0.0) (< f3-3 (-> t2-0 x-length)) (< f2-2 (-> t2-0 z-length))) (set! t1-3 #t))) (set! t1-4 - (and t1-3 (begin - (set! t1-4 #f) - (let ((f2-5 (+ (* f0-4 (-> t0-1 cos-angle)) (* f1-6 (-> t0-1 sin-angle)))) - (f0-6 (- (* f1-6 (-> t0-1 cos-angle)) (* f0-4 (-> t0-1 sin-angle)))) - ) - (if (and (>= f2-5 0.0) (>= f0-6 0.0) (< f2-5 (-> t0-1 x-length)) (< f0-6 (-> t0-1 z-length))) - (set! t1-4 #t) - ) - ) - t1-4 - ) - ) - ) - ) - (if t1-4 - (return #t) - ) - ) - ) - ) - #f - ) + (and t1-3 + (begin + (set! t1-4 #f) + (let ((f2-5 (+ (* f0-4 (-> t0-1 cos-angle)) (* f1-6 (-> t0-1 sin-angle)))) + (f0-6 (- (* f1-6 (-> t0-1 cos-angle)) (* f0-4 (-> t0-1 sin-angle))))) + (if (and (>= f2-5 0.0) (>= f0-6 0.0) (< f2-5 (-> t0-1 x-length)) (< f0-6 (-> t0-1 z-length))) (set! t1-4 #t))) + t1-4)))) + (if t1-4 (return #t))))) + #f) (defun-debug add-debug-air-box ((arg0 bucket-id) (arg1 air-box)) (local-vars (a0-1 symbol)) (let ((a1-1 (camera-pos)) (s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (-> arg1 cos-angle) (-> arg1 sin-angle) (let ((s2-0 (the-as uint #x800000ff))) @@ -101,24 +62,13 @@ (set! a0-1 (when (< (-> v1-0 height-level) (-> a1-1 y)) (let ((f0-4 (- (-> a1-1 x) (-> v1-0 x-pos))) - (f2-1 (- (-> a1-1 z) (-> v1-0 z-pos))) - ) + (f2-1 (- (-> a1-1 z) (-> v1-0 z-pos)))) (set! a0-1 #f) (let ((f1-5 (+ (* f0-4 (-> v1-0 cos-angle)) (* f2-1 (-> v1-0 sin-angle)))) - (f0-6 (- (* f2-1 (-> v1-0 cos-angle)) (* f0-4 (-> v1-0 sin-angle)))) - ) - (if (and (>= f1-5 0.0) (>= f0-6 0.0) (< f1-5 (-> v1-0 x-length)) (< f0-6 (-> v1-0 z-length))) - (set! a0-1 #t) - ) - ) - ) - a0-1 - ) - ) - ) - (if a0-1 - (set! s2-0 (the-as uint #x8000ff00)) - ) + (f0-6 (- (* f2-1 (-> v1-0 cos-angle)) (* f0-4 (-> v1-0 sin-angle))))) + (if (and (>= f1-5 0.0) (>= f0-6 0.0) (< f1-5 (-> v1-0 x-length)) (< f0-6 (-> v1-0 z-length))) (set! a0-1 #t)))) + a0-1))) + (if a0-1 (set! s2-0 (the-as uint #x8000ff00))) (set! (-> s5-0 y) (-> arg1 height-level)) (set! (-> s4-0 y) (-> arg1 height-level)) (set! (-> s5-0 w) 1.0) @@ -137,11 +87,4 @@ (add-debug-line #t arg0 s5-0 s4-0 (the-as rgba s2-0) #f (the-as rgba -1)) (set! (-> s4-0 x) (-> arg1 x-pos)) (set! (-> s4-0 z) (-> arg1 z-pos)) - (add-debug-line #t arg0 s5-0 s4-0 (the-as rgba s2-0) #f (the-as rgba -1)) - ) - ) - ) - - - - + (add-debug-line #t arg0 s5-0 s4-0 (the-as rgba s2-0) #f (the-as rgba -1))))) diff --git a/goal_src/jak1/levels/beach/beach-obs.gc b/goal_src/jak1/levels/beach/beach-obs.gc index 48495a788b..52a6d7b04c 100644 --- a/goal_src/jak1/levels/beach/beach-obs.gc +++ b/goal_src/jak1/levels/beach/beach-obs.gc @@ -1,72 +1,59 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/process-taskable.gc") (require "engine/camera/pov-camera-h.gc") (require "levels/beach/wobbler.gc") - -;; name: beach-obs.gc -;; name in dgo: beach-obs -;; dgos: BEA, L1 - (define-extern spawn-flying-rock (function vector vector float entity none)) ;; DECOMP BEGINS -(defskelgroup *beachcam-sg* beachcam beachcam-lod0-jg beachcam-anim-ja - ((beachcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 60) - ) +(defskelgroup *beachcam-sg* + beachcam + beachcam-lod0-jg + beachcam-anim-ja + ((beachcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 60)) (deftype windmill-one (process-drawable) - ((root collide-shape-moving :override) - (sound-id sound-id) - ) + ((root collide-shape-moving :override) + (sound-id sound-id)) (:states - windmill-one-idle - ) - ) - + windmill-one-idle)) -(defskelgroup *windmill-one-sg* windmill-one windmill-one-lod0-jg windmill-one-idle-ja - ((windmill-one-lod0-mg (meters 20)) (windmill-one-lod1-mg (meters 40)) (windmill-one-lod2-mg (meters 999999))) - :bounds (static-spherem -12 -8 -1 16) - :longest-edge (meters 7.5) - ) +(defskelgroup *windmill-one-sg* + windmill-one + windmill-one-lod0-jg + windmill-one-idle-ja + ((windmill-one-lod0-mg (meters 20)) (windmill-one-lod1-mg (meters 40)) (windmill-one-lod2-mg (meters 999999))) + :bounds (static-spherem -12 -8 -1 16) + :longest-edge (meters 7.5)) (defstate windmill-one-idle (windmill-one) - :exit (behavior () - (sound-stop (-> self sound-id)) - ) - :trans (behavior () - (rider-trans) - (let ((t2-0 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node windmill-one-lod0-jg big)))) - (if (!= (+ (-> t2-0 x) (-> t2-0 y) (-> t2-0 z)) 0.0) - (sound-play "gears-rumble" :id (-> self sound-id) :position (the-as symbol t2-0)) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! windmill-one-idle-ja :num! (seek! max 0.5) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.5)) - ) - ) - ) - :post rider-post - ) + :exit + (behavior () + (sound-stop (-> self sound-id))) + :trans + (behavior () + (rider-trans) + (let ((t2-0 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node windmill-one-lod0-jg big)))) + (if (!= (+ (-> t2-0 x) (-> t2-0 y) (-> t2-0 z)) 0.0) + (sound-play "gears-rumble" :id (-> self sound-id) :position (the-as symbol t2-0))))) + :code + (behavior () + (loop + (ja-no-eval :group! windmill-one-idle-ja :num! (seek! max 0.5) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.5))))) + :post rider-post) (defmethod init-from-entity! ((this windmill-one) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -82,8 +69,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 4915.2 0.0 -4915.2 13516.8) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -91,13 +77,10 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 9) (set-vector! (-> s2-1 local-sphere) 4915.2 0.0 -4915.2 13516.8) - (append-prim s3-0 s2-1) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (set! (-> this root pause-adjust-distance) 409600.0) (process-drawable-from-entity! this arg0) (initialize-skeleton this *windmill-one-sg* '()) @@ -105,220 +88,184 @@ (update-transforms! (-> this root)) (set! (-> this sound-id) (new-sound-id)) (go windmill-one-idle) - (none) - ) + (none)) (defpartgroup group-beach-grotto-pole-rocks :id 155 :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 539 :period (seconds 5) :length (seconds 0.05)) - (sp-item 539 :period (seconds 5) :length (seconds 0.1)) - (sp-item 539 :period (seconds 5) :length (seconds 0.15)) - (sp-item 539 :period (seconds 5) :length (seconds 0.25)) - (sp-item 539 :period (seconds 5) :length (seconds 0.5)) - (sp-item 539 :period (seconds 5) :length (seconds 1)) - (sp-item 540 :period (seconds 5) :length (seconds 0.1)) - ) - ) + :parts + ((sp-item 539 :period (seconds 5) :length (seconds 0.05)) + (sp-item 539 :period (seconds 5) :length (seconds 0.1)) + (sp-item 539 :period (seconds 5) :length (seconds 0.15)) + (sp-item 539 :period (seconds 5) :length (seconds 0.25)) + (sp-item 539 :period (seconds 5) :length (seconds 0.5)) + (sp-item 539 :period (seconds 5) :length (seconds 1)) + (sp-item 540 :period (seconds 5) :length (seconds 0.1)))) (defpart 539 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 0.5) - (:x (meters -9) (meters 18)) - (:y (meters -6)) - (:z (meters -9) (meters 18)) - (:scale-x (meters 0.1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 40.0) - (:g 32.0 40.0) - (:b 32.0 40.0) - (:a 128.0) - (:vel-y (meters 0) (meters -0.04)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:accel-y (meters -0.0016666667) (meters -0.00016666666)) - (:timer (seconds 1.3)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 0.5) + (:x (meters -9) (meters 18)) + (:y (meters -6)) + (:z (meters -9) (meters 18)) + (:scale-x (meters 0.1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 40.0) + (:g 32.0 40.0) + (:b 32.0 40.0) + (:a 128.0) + (:vel-y (meters 0) (meters -0.04)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:accel-y (meters -0.0016666667) (meters -0.00016666666)) + (:timer (seconds 1.3)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop))) (defpart 540 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:y (meters -7)) - (:scale-x (meters 3) (meters 4.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 16.0) - (:g 48.0) - (:b 48.0) - (:a 0.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 1.0666667) - (:accel-y (meters 0.000016666667)) - (:timer (seconds 4)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.2)) - (:next-launcher 541) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3.5) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:y (meters -7)) + (:scale-x (meters 3) (meters 4.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 16.0) + (:g 48.0) + (:b 48.0) + (:a 0.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 1.0666667) + (:accel-y (meters 0.000016666667)) + (:timer (seconds 4)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.2)) + (:next-launcher 541) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3.5) (meters 6)))) (defpart 541 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.797)) (:next-launcher 542)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.797)) (:next-launcher 542))) (defpart 542 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (deftype grottopole (process-drawable) - ((root collide-shape :override) - (speed meters) - (distance meters) - (position int32) - (max-position int32) - (incomming-attack-id uint64) - ) + ((root collide-shape :override) + (speed meters) + (distance meters) + (position int32) + (max-position int32) + (incomming-attack-id uint64)) (:states - grottopole-idle - grottopole-moving-down - grottopole-moving-up - ) - ) + grottopole-idle + grottopole-moving-down + grottopole-moving-up)) - -(defskelgroup *grottopole-sg* grottopole grottopole-lod0-jg grottopole-idle-ja - ((grottopole-lod0-mg (meters 20)) (grottopole-lod1-mg (meters 999999))) - :bounds (static-spherem 0 -8 0 9) - ) +(defskelgroup *grottopole-sg* + grottopole + grottopole-lod0-jg + grottopole-idle-ja + ((grottopole-lod0-mg (meters 20)) (grottopole-lod1-mg (meters 999999))) + :bounds (static-spherem 0 -8 0 9)) (defstate grottopole-idle (grottopole) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (= (-> proc type) target) - (case message - (('attack) - (let ((v1-2 (-> block param 2))) - (when (!= v1-2 (-> self incomming-attack-id)) - (set! (-> self incomming-attack-id) v1-2) - (case (-> block param 1) - (('uppercut) - (when (and (< (-> *target* control trans y) (+ -40960.0 (-> self root trans y))) - (< (-> self position) (-> self max-position)) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 2) - ) - ) - (sound-play "grotto-pole-hit") - (sound-play "dirt-crumble") - (increment-success-for-hint (text-id beach-grottopole-increment)) - (go grottopole-moving-up) - ) - ) - (('flop) - (when (and (< (+ -40960.0 (-> self root trans y)) (-> *target* control trans y)) - (> (-> self position) 0) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - ) - (sound-play "grotto-pole-hit") - (sound-play "dirt-crumble") - (go grottopole-moving-down) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (ja :group! grottopole-idle-ja :num! min) - (transform-post) - (suspend) - (loop - (logior! (-> self mask) (process-mask sleep)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (= (-> proc type) target) + (case message + (('attack) + (let ((v1-2 (-> block param 2))) + (when (!= v1-2 (-> self incomming-attack-id)) + (set! (-> self incomming-attack-id) v1-2) + (case (-> block param 1) + (('uppercut) + (when (and (< (-> *target* control trans y) (+ -40960.0 (-> self root trans y))) + (< (-> self position) (-> self max-position)) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 2))) + (sound-play "grotto-pole-hit") + (sound-play "dirt-crumble") + (increment-success-for-hint (text-id beach-grottopole-increment)) + (go grottopole-moving-up))) + (('flop) + (when (and (< (+ -40960.0 (-> self root trans y)) (-> *target* control trans y)) + (> (-> self position) 0) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1))) + (sound-play "grotto-pole-hit") + (sound-play "dirt-crumble") + (go grottopole-moving-down)))))))))) + :code + (behavior () + (set-time! (-> self state-time)) + (ja :group! grottopole-idle-ja :num! min) + (transform-post) (suspend) - ) - ) - ) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defun move-grottopole ((arg0 grottopole) (arg1 float)) (let ((f30-0 0.0) (s4-0 (new-stack-vector0)) (s3-0 (new-stack-vector0)) - (s2-0 #f) - ) + (s2-0 #f)) (set! (-> arg0 part local-clock) 0) (set-vector! s4-0 0.0 0.0 0.0 1.0) (while (and (not s2-0) (< f30-0 (-> arg0 distance))) (let ((f28-0 (* (-> arg0 speed) (seconds-per-frame)))) (when (< (-> arg0 distance) (+ f30-0 f28-0)) (set! f28-0 (- (-> arg0 distance) f30-0)) - (set! s2-0 #t) - ) + (set! s2-0 #t)) (set! (-> s4-0 y) (* f28-0 arg1)) (move-by-vector! (-> arg0 root) s4-0) - (+! f30-0 f28-0) - ) + (+! f30-0 f28-0)) (set! (-> s3-0 quad) (-> arg0 entity extra trans quad)) (+! (-> s3-0 y) -4096.0) (spawn (-> arg0 part) s3-0) (suspend) - 0 - ) - ) + 0)) 0 - (none) - ) + (none)) (defun move-grottopole-to-position ((arg0 grottopole)) (let ((a1-0 (new 'stack-no-clear 'vector))) (set-vector! a1-0 0.0 (* (-> arg0 distance) (the float (-> arg0 position))) 0.0 1.0) - (move-by-vector! (-> arg0 root) a1-0) - ) + (move-by-vector! (-> arg0 root) a1-0)) 0 - (none) - ) + (none)) (defstate grottopole-moving-up (grottopole) - :code (behavior () - (+! (-> self position) 1) - (let ((v1-4 (-> self entity extra perm))) - (logior! (-> v1-4 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-4 user-int16 0) (-> self position)) - ) - (move-grottopole self 1.0) - (go grottopole-idle) - ) - :post transform-post - ) + :code + (behavior () + (+! (-> self position) 1) + (let ((v1-4 (-> self entity extra perm))) + (logior! (-> v1-4 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-4 user-int16 0) (-> self position))) + (move-grottopole self 1.0) + (go grottopole-idle)) + :post transform-post) (defstate grottopole-moving-down (grottopole) - :code (behavior () - (+! (-> self position) -1) - (let ((v1-4 (-> self entity extra perm))) - (logior! (-> v1-4 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-4 user-int16 0) (-> self position)) - ) - (move-grottopole self -1.0) - (go grottopole-idle) - ) - :post transform-post - ) + :code + (behavior () + (+! (-> self position) -1) + (let ((v1-4 (-> self entity extra perm))) + (logior! (-> v1-4 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-4 user-int16 0) (-> self position))) + (move-grottopole self -1.0) + (go grottopole-idle)) + :post transform-post) (defmethod init-from-entity! ((this grottopole) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -335,8 +282,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 -20480.0 0.0 40960.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind wall-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -344,8 +290,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 -20480.0 0.0 40960.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 2)))) (set! (-> s2-2 prim-core collide-as) (collide-kind wall-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -353,13 +298,10 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 -20480.0 0.0 40960.0) - (append-prim s3-0 s2-2) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *grottopole-sg* '()) (set! (-> this speed) (res-lump-float arg0 'speed :default 81920.0)) @@ -370,282 +312,232 @@ (set! (-> this position) (-> this entity extra perm user-int16 0)) (move-grottopole-to-position this) (go grottopole-idle) - (none) - ) + (none)) (deftype ecoventrock (process-drawable) - ((root collide-shape :override) - ) - (:states - (ecoventrock-break symbol) - ecoventrock-idle - ) - ) - + ((root collide-shape :override)) + (:states (ecoventrock-break symbol) + ecoventrock-idle)) -(defskelgroup *ecoventrock-sg* ecoventrock ecoventrock-lod0-jg ecoventrock-idle-ja - ((ecoventrock-lod0-mg (meters 20)) (ecoventrock-lod1-mg (meters 999999))) - :bounds (static-spherem 0 1 0 3) - ) +(defskelgroup *ecoventrock-sg* + ecoventrock + ecoventrock-lod0-jg + ecoventrock-idle-ja + ((ecoventrock-lod0-mg (meters 20)) (ecoventrock-lod1-mg (meters 999999))) + :bounds (static-spherem 0 1 0 3)) (defpartgroup group-beach-harvester-rock-explosion :id 156 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 543 :period (seconds 5) :length (seconds 0.017)) - (sp-item 544 :period (seconds 5) :length (seconds 0.017)) - (sp-item 545 :period (seconds 5) :length (seconds 0.017)) - (sp-item 546 :period (seconds 5) :length (seconds 0.017)) - (sp-item 547 :period (seconds 5) :length (seconds 0.017)) - (sp-item 548 :period (seconds 5) :length (seconds 0.05)) - ) - ) + :parts + ((sp-item 543 :period (seconds 5) :length (seconds 0.017)) + (sp-item 544 :period (seconds 5) :length (seconds 0.017)) + (sp-item 545 :period (seconds 5) :length (seconds 0.017)) + (sp-item 546 :period (seconds 5) :length (seconds 0.017)) + (sp-item 547 :period (seconds 5) :length (seconds 0.017)) + (sp-item 548 :period (seconds 5) :length (seconds 0.05)))) (defpart 547 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 15)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 64.0) - (:b 54.0) - (:a 128.0) - (:fade-a -2.1333334) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 15)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 64.0) + (:b 54.0) + (:a 128.0) + (:fade-a -2.1333334) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)))) (defpart 543 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 4.0 6.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.06666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.58)) - (:next-launcher 549) - (:conerot-x (degrees 45)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 4.0 6.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.06666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.58)) + (:next-launcher 549) + (:conerot-x (degrees 45)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 544 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 4.0 6.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.417)) - (:next-launcher 549) - (:conerot-x (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 4.0 6.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.417)) + (:next-launcher 549) + (:conerot-x (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 545 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 4.0 6.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 16.0) - (:g 80.0 16.0) - (:b 80.0) - (:a 128.0) - (:vel-y (meters 0.08)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.65)) - (:next-launcher 549) - (:conerot-x (degrees 35)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 4.0 6.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 16.0) + (:g 80.0 16.0) + (:b 80.0) + (:a 128.0) + (:vel-y (meters 0.08)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.65)) + (:next-launcher 549) + (:conerot-x (degrees 35)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 549 - :init-specs ((:vel-y (meters 0.026666667)) (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) (:fade-a -1.0666667)) - ) + :init-specs ((:vel-y (meters 0.026666667)) (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) (:fade-a -1.0666667))) (defpart 548 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0.5) (meters 1)) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 32.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:scalevel-x (meters 0.013333334)) - (:scalevel-y (meters 0.0033333334)) - (:accel-y (meters -0.00026666667)) - (:friction 0.95) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 550) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0.5) (meters 1)) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.013333334)) + (:scalevel-y (meters 0.0033333334)) + (:accel-y (meters -0.00026666667)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 550) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 550 - :init-specs ((:fade-a -0.2)) - ) + :init-specs ((:fade-a -0.2))) (defstate ecoventrock-idle (ecoventrock) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (sound-play "cannon-shot") - (increment-success-for-hint (text-id sidekick-hint-ecorocks)) - (go ecoventrock-break #f) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (sound-play "cannon-shot") + (increment-success-for-hint (text-id sidekick-hint-ecorocks)) + (go ecoventrock-break #f)))) + :code + (behavior () + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defstate ecoventrock-break (ecoventrock) :event process-drawable-fuel-cell-handler - :enter (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - ) - :code (behavior ((arg0 symbol)) - (local-vars (sv-128 symbol)) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (send-event - (if v1-2 - (-> v1-2 extra process) - ) - 'update - ) - ) - (when (not arg0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 156) - -1 - #f - #f - #f - (-> self root root-prim prim-core) - :to *entity-pool* - ) - (let* ((s5-1 (-> self root trans)) - (v1-14 (target-pos 0)) - (f0-1 (- (-> s5-1 x) (-> v1-14 x))) - (f1-2 (- (-> s5-1 z) (-> v1-14 z))) - (f2-1 7372.8) - (f30-0 5734.4) - (f2-2 (/ f2-1 (sqrtf (+ (* f0-1 f0-1) (* f1-2 f1-2))))) - (f28-0 (* f0-1 f2-2)) - (f26-0 (* f1-2 f2-2)) - (s4-0 (new-stack-vector0)) - (s3-0 (new-stack-vector0)) - ) - (set-vector! s3-0 f28-0 f30-0 f26-0 1.0) - (set-vector! s4-0 (+ (-> s5-1 x) (-> s3-0 x)) (-> s5-1 y) (+ (-> s5-1 z) (-> s3-0 z)) 1.0) - (vector-float*! s3-0 s3-0 10.0) - (spawn-flying-rock s4-0 s3-0 1.0 (-> self entity)) - (let ((f20-0 (rand-vu-float-range 90.0 130.0)) - (f24-0 (rand-vu-float-range 230.0 270.0)) - ) - (let ((f22-0 (cos (* 182.04445 f20-0))) - (f0-14 (sin (* 182.04445 f20-0))) - ) - (set-vector! s3-0 (+ (* f26-0 f0-14) (* f28-0 f22-0)) f30-0 (+ (* f28-0 (- f0-14)) (* f26-0 f22-0)) 1.0) - ) + :enter + (behavior ((arg0 symbol)) + (set-time! (-> self state-time))) + :code + (behavior ((arg0 symbol)) + (local-vars (sv-128 symbol)) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor 0))) (send-event (if v1-2 (-> v1-2 extra process)) 'update)) + (when (not arg0) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 156) + -1 + #f + #f + #f + (-> self root root-prim prim-core) + :to + *entity-pool*) + (let* ((s5-1 (-> self root trans)) + (v1-14 (target-pos 0)) + (f0-1 (- (-> s5-1 x) (-> v1-14 x))) + (f1-2 (- (-> s5-1 z) (-> v1-14 z))) + (f2-1 7372.8) + (f30-0 5734.4) + (f2-2 (/ f2-1 (sqrtf (+ (* f0-1 f0-1) (* f1-2 f1-2))))) + (f28-0 (* f0-1 f2-2)) + (f26-0 (* f1-2 f2-2)) + (s4-0 (new-stack-vector0)) + (s3-0 (new-stack-vector0))) + (set-vector! s3-0 f28-0 f30-0 f26-0 1.0) (set-vector! s4-0 (+ (-> s5-1 x) (-> s3-0 x)) (-> s5-1 y) (+ (-> s5-1 z) (-> s3-0 z)) 1.0) (vector-float*! s3-0 s3-0 10.0) (spawn-flying-rock s4-0 s3-0 1.0 (-> self entity)) - (let ((f22-1 (cos (* 182.04445 f24-0))) - (f0-30 (sin (* 182.04445 f24-0))) - ) - (set-vector! s3-0 (+ (* f26-0 f0-30) (* f28-0 f22-1)) f30-0 (+ (* f28-0 (- f0-30)) (* f26-0 f22-1)) 1.0) - ) - ) - (set-vector! s4-0 (+ (-> s5-1 x) (-> s3-0 x)) (-> s5-1 y) (+ (-> s5-1 z) (-> s3-0 z)) 1.0) - (vector-float*! s3-0 s3-0 10.0) - (spawn-flying-rock s4-0 s3-0 1.0 (-> self entity)) - (set-vector! s3-0 (+ (* -0.866 f26-0) (* 0.5 f28-0)) (* 0.5 f30-0) (+ (* 0.866 f28-0) (* 0.5 f26-0)) 1.0) - (set-vector! s4-0 (-> s5-1 x) (+ 3276.8 (-> s5-1 y)) (-> s5-1 z) 1.0) - (vector-float*! s3-0 s3-0 10.0) - (spawn-flying-rock s4-0 s3-0 1.0 (-> self entity)) - ) - ) - (when (or (-> self link prev) (-> self link next)) - (set! sv-128 (the-as symbol #f)) - (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-128)) - (when sv-128 - (let ((s5-2 (current-time))) - (until (time-elapsed? s5-2 (seconds 0.5)) - (suspend) - ) - ) - (let ((gp-1 (cond - (arg0 - (the-as int #f) - ) - (else - (ambient-hint-spawn "gamcam10" (the-as vector #f) *entity-pool* 'camera) - (ppointer->handle - (process-spawn pov-camera (-> self root trans) *beachcam-sg* (-> self name) 0 #f '() :to self) - ) - ) - ) - ) - ) - (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #f) - (while (handle->process (the-as handle gp-1)) - (suspend) - ) - ) - (while (-> self child) - (suspend) - ) - ) - ) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - ) + (let ((f20-0 (rand-vu-float-range 90.0 130.0)) + (f24-0 (rand-vu-float-range 230.0 270.0))) + (let ((f22-0 (cos (* 182.04445 f20-0))) + (f0-14 (sin (* 182.04445 f20-0)))) + (set-vector! s3-0 (+ (* f26-0 f0-14) (* f28-0 f22-0)) f30-0 (+ (* f28-0 (- f0-14)) (* f26-0 f22-0)) 1.0)) + (set-vector! s4-0 (+ (-> s5-1 x) (-> s3-0 x)) (-> s5-1 y) (+ (-> s5-1 z) (-> s3-0 z)) 1.0) + (vector-float*! s3-0 s3-0 10.0) + (spawn-flying-rock s4-0 s3-0 1.0 (-> self entity)) + (let ((f22-1 (cos (* 182.04445 f24-0))) + (f0-30 (sin (* 182.04445 f24-0)))) + (set-vector! s3-0 (+ (* f26-0 f0-30) (* f28-0 f22-1)) f30-0 (+ (* f28-0 (- f0-30)) (* f26-0 f22-1)) 1.0))) + (set-vector! s4-0 (+ (-> s5-1 x) (-> s3-0 x)) (-> s5-1 y) (+ (-> s5-1 z) (-> s3-0 z)) 1.0) + (vector-float*! s3-0 s3-0 10.0) + (spawn-flying-rock s4-0 s3-0 1.0 (-> self entity)) + (set-vector! s3-0 (+ (* -0.866 f26-0) (* 0.5 f28-0)) (* 0.5 f30-0) (+ (* 0.866 f28-0) (* 0.5 f26-0)) 1.0) + (set-vector! s4-0 (-> s5-1 x) (+ 3276.8 (-> s5-1 y)) (-> s5-1 z) 1.0) + (vector-float*! s3-0 s3-0 10.0) + (spawn-flying-rock s4-0 s3-0 1.0 (-> self entity)))) + (when (or (-> self link prev) (-> self link next)) + (set! sv-128 (the-as symbol #f)) + (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-128)) + (when sv-128 + (let ((s5-2 (current-time))) (until (time-elapsed? s5-2 (seconds 0.5)) (suspend))) + (let ((gp-1 (cond + (arg0 (the-as int #f)) + (else + (ambient-hint-spawn "gamcam10" (the-as vector #f) *entity-pool* 'camera) + (ppointer->handle (process-spawn pov-camera (-> self root trans) *beachcam-sg* (-> self name) 0 #f '() :to self)))))) + (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #f) + (while (handle->process (the-as handle gp-1)) + (suspend))) + (while (-> self child) + (suspend)))) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self))) (defmethod init-from-entity! ((this ecoventrock) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) @@ -657,132 +549,98 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 6963.2) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *ecoventrock-sg* '()) (set! (-> this link) (new 'process 'actor-link-info this)) (transform-post) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go ecoventrock-break #t) - (go ecoventrock-idle) - ) - (none) - ) + (go ecoventrock-break #t) + (go ecoventrock-idle)) + (none)) (deftype flying-rock (process-drawable) - ((root collide-shape-moving :override) - (tumble quaternion :inline) - ) + ((root collide-shape-moving :override) + (tumble quaternion :inline)) (:states - flying-rock-idle - flying-rock-rolling - ) - ) + flying-rock-idle + flying-rock-rolling)) - -(defskelgroup *kickrock-sg* kickrock kickrock-lod0-jg kickrock-idle-ja - ((kickrock-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *kickrock-sg* + kickrock + kickrock-lod0-jg + kickrock-idle-ja + ((kickrock-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defstate flying-rock-rolling (flying-rock) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :code (behavior () - (let ((gp-0 #f) - (f30-0 0.99) - (s5-0 0) - ) - (while (< s5-0 2) + :enter + (behavior () + (set-time! (-> self state-time))) + :code + (behavior () + (let ((gp-0 #f) + (f30-0 0.99) + (s5-0 0)) + (while (< s5-0 2) + (cond + ((logtest? (-> self root status) (cshape-moving-flags onsurf)) + (when (not gp-0) + (+! s5-0 1) + (set! f30-0 0.8) + (set! gp-0 #t))) + (else (when gp-0 (set! f30-0 0.99) (set! gp-0 #f)))) + (vector-float*! (-> self root transv) (-> self root transv) f30-0) + (set! (-> self root transv w) 1.0) + (if (not gp-0) (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0))) + (update-transforms! (-> self root)) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (collide-kind background)) + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble)) + (suspend))) + (while (< 2048.0 (vector-length (-> self root transv))) (cond ((logtest? (-> self root status) (cshape-moving-flags onsurf)) - (when (not gp-0) - (+! s5-0 1) - (set! f30-0 0.8) - (set! gp-0 #t) - ) - ) + (vector-float*! (-> self root transv) (-> self root transv) 0.8)) (else - (when gp-0 - (set! f30-0 0.99) - (set! gp-0 #f) - ) - ) - ) - (vector-float*! (-> self root transv) (-> self root transv) f30-0) + (vector-float*! (-> self root transv) (-> self root transv) 0.99) + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)))) (set! (-> self root transv w) 1.0) - (if (not gp-0) - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) - ) (update-transforms! (-> self root)) (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (collide-kind background)) - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble)) - (suspend) - ) - ) - (while (< 2048.0 (vector-length (-> self root transv))) - (cond - ((logtest? (-> self root status) (cshape-moving-flags onsurf)) - (vector-float*! (-> self root transv) (-> self root transv) 0.8) - ) - (else - (vector-float*! (-> self root transv) (-> self root transv) 0.99) - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) - ) - ) - (set! (-> self root transv w) 1.0) - (update-transforms! (-> self root)) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (collide-kind background)) - (let ((gp-2 (new 'stack-no-clear 'vector)) - (f30-1 (vector-length (-> self root transv))) - ) - (set-vector! gp-2 (-> self root transv z) 0.0 (- (-> self root transv x)) 1.0) - (vector-normalize! gp-2 1.0) - (let ((f0-12 (* 0.00061035156 (seconds-per-frame) f30-1))) - (quaternion-vector-angle! (-> self tumble) gp-2 (* 10430.379 f0-12)) - ) - ) - (quaternion*! (-> self root quat) (-> self tumble) (-> self root quat)) - (suspend) - ) - (go flying-rock-idle) - ) - :post (behavior () - (if (time-elapsed? (-> self state-time) (seconds 3)) - (go flying-rock-idle) - ) - (ja-post) - ) - ) + (let ((gp-2 (new 'stack-no-clear 'vector)) + (f30-1 (vector-length (-> self root transv)))) + (set-vector! gp-2 (-> self root transv z) 0.0 (- (-> self root transv x)) 1.0) + (vector-normalize! gp-2 1.0) + (let ((f0-12 (* 0.00061035156 (seconds-per-frame) f30-1))) + (quaternion-vector-angle! (-> self tumble) gp-2 (* 10430.379 f0-12)))) + (quaternion*! (-> self root quat) (-> self tumble) (-> self root quat)) + (suspend)) + (go flying-rock-idle)) + :post + (behavior () + (if (time-elapsed? (-> self state-time) (seconds 3)) (go flying-rock-idle)) + (ja-post))) (defstate flying-rock-idle (flying-rock) - :code (behavior () - (clear-collide-with-as (-> self root)) - (while (or (logtest? (-> self draw status) (draw-status was-drawn)) - (and *target* (>= 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - ) - (suspend) - ) - (deactivate self) - ) - :post ja-post - ) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (while (or (logtest? (-> self draw status) (draw-status was-drawn)) + (and *target* (>= 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))))) + (suspend)) + (deactivate self)) + :post ja-post) (defbehavior flying-rock-init-by-other flying-rock ((arg0 vector) (arg1 vector) (arg2 float) (arg3 entity-actor)) (set! (-> self entity) arg3) (let ((s3-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s3-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s3-0 reaction) simple-collision-reaction) - (set! (-> s3-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s3-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-0 collide-with) (collide-kind background target)) @@ -790,80 +648,60 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 (* 409.6 arg2)) - (set-root-prim! s3-0 s2-0) - ) + (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) s3-0) - ) + (set! (-> self root) s3-0)) (set! (-> self root trans quad) (-> arg0 quad)) (set-vector! (-> self root scale) arg2 arg2 arg2 1.0) (let ((s5-1 (new-stack-vector0))) - (set-vector! - s5-1 - (rand-vu-float-range -1.0 1.0) - (rand-vu-float-range -1.0 1.0) - (rand-vu-float-range -1.0 1.0) - 1.0 - ) + (set-vector! s5-1 (rand-vu-float-range -1.0 1.0) (rand-vu-float-range -1.0 1.0) (rand-vu-float-range -1.0 1.0) 1.0) (vector-normalize! s5-1 1.0) - (quaternion-vector-angle! (-> self tumble) s5-1 (rand-vu-float-range 0.0 1820.4445)) - ) + (quaternion-vector-angle! (-> self tumble) s5-1 (rand-vu-float-range 0.0 1820.4445))) (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (rand-vu-float-range 0.0 65536.0)) (initialize-skeleton self *kickrock-sg* '()) (set! (-> self root transv quad) (-> arg1 quad)) (go flying-rock-rolling) - (none) - ) + (none)) (defun spawn-flying-rock ((arg0 vector) (arg1 vector) (arg2 float) (arg3 entity)) (process-spawn flying-rock arg0 arg1 arg2 arg3 :to *entity-pool*) 0 - (none) - ) + (none)) (deftype bladeassm (process-drawable) - ((root collide-shape-moving :override) - (angle float) - ) + ((root collide-shape-moving :override) + (angle float)) (:states - bladeassm-idle - ) - ) + bladeassm-idle)) - -(defskelgroup *bladeassm-sg* bladeassm bladeassm-lod0-jg bladeassm-idle-ja - ((bladeassm-lod0-mg (meters 20)) (bladeassm-lod1-mg (meters 40)) (bladeassm-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - :longest-edge (meters 10) - ) +(defskelgroup *bladeassm-sg* + bladeassm + bladeassm-lod0-jg + bladeassm-idle-ja + ((bladeassm-lod0-mg (meters 20)) (bladeassm-lod1-mg (meters 40)) (bladeassm-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10) + :longest-edge (meters 10)) (defstate bladeassm-idle (bladeassm) - :code (behavior () - (loop - (+! (-> self angle) (* 3640.889 (seconds-per-frame))) - (set! (-> self angle) (the float (sar (shl (the int (-> self angle)) 48) 48))) - (pusher-post) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (+! (-> self angle) (* 3640.889 (seconds-per-frame))) + (set! (-> self angle) (the float (sar (shl (the int (-> self angle)) 48) 48))) + (pusher-post) + (suspend)))) (defun bladeassm-prebind-function ((arg0 process-drawable) (arg1 int) (arg2 bladeassm) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (quaternion-axis-angle! (the-as quaternion (&-> arg0 link)) 0.0 0.0 1.0 (-> v1-0 angle)) - ) - 0 - ) + (let ((v1-0 arg2)) (quaternion-axis-angle! (the-as quaternion (&-> arg0 link)) 0.0 0.0 1.0 (-> v1-0 angle))) + 0) (defmethod init-from-entity! ((this bladeassm) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -871,358 +709,245 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 49152.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *bladeassm-sg* '()) - (set! (-> this skel prebind-function) - (the-as (function pointer int process-drawable none) bladeassm-prebind-function) - ) + (set! (-> this skel prebind-function) (the-as (function pointer int process-drawable none) bladeassm-prebind-function)) (logclear! (-> this mask) (process-mask actor-pause)) (go bladeassm-idle) - (none) - ) + (none)) (deftype flutflutegg (process-drawable) - ((root collide-shape-moving :override) - (fall-dist meters) - (start vector :inline) - (dir vector :inline) - (pos float) - (vel float) - (wobbler wobbler) - (last-impulse-time int32) - (incomming-attack-id uint64) - (ambients-played int32) - (ambient ambient-control :inline) - ) + ((root collide-shape-moving :override) + (fall-dist meters) + (start vector :inline) + (dir vector :inline) + (pos float) + (vel float) + (wobbler wobbler) + (last-impulse-time int32) + (incomming-attack-id uint64) + (ambients-played int32) + (ambient ambient-control :inline)) (:methods - (flutflutegg-method-20 (_type_ float float float) none) - ) - (:states - (flutflutegg-break symbol) - flutflutegg-idle - flutflutegg-physics - flutflutegg-physics-fall - ) - ) - - -(defskelgroup *flutflutegg-sg* flutflutegg flutflutegg-lod0-jg flutflutegg-idle-ja - ((flutflutegg-lod0-mg (meters 20)) (flutflutegg-lod1-mg (meters 40)) (flutflutegg-lod2-mg (meters 999999))) - :bounds (static-spherem 0 3.5 0 3.5) - ) - -(defskelgroup *flutflut-naked-sg* flutflut flutflut-lod0-jg flutflut-flutflut-idle-ja - ((flutflut-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) + (flutflutegg-method-20 (_type_ float float float) none)) + (:states (flutflutegg-break symbol) + flutflutegg-idle + flutflutegg-physics + flutflutegg-physics-fall)) + +(defskelgroup *flutflutegg-sg* + flutflutegg + flutflutegg-lod0-jg + flutflutegg-idle-ja + ((flutflutegg-lod0-mg (meters 20)) (flutflutegg-lod1-mg (meters 40)) (flutflutegg-lod2-mg (meters 999999))) + :bounds (static-spherem 0 3.5 0 3.5)) + +(defskelgroup *flutflut-naked-sg* + flutflut + flutflut-lod0-jg + flutflut-flutflut-idle-ja + ((flutflut-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defmethod relocate ((this flutflutegg) (arg0 int)) - (if (nonzero? (-> this wobbler)) - (&+! (-> this wobbler) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this wobbler)) (&+! (-> this wobbler) arg0)) + (call-parent-method this arg0)) ;; WARN: Function (method 20 flutflutegg) has a return type of none, but the expression builder found a return statement. (defmethod flutflutegg-method-20 ((this flutflutegg) (arg0 float) (arg1 float) (arg2 float)) - (if (not (time-elapsed? (the-as time-frame (-> this last-impulse-time)) (seconds 0.5))) - (return 0) - ) + (if (not (time-elapsed? (the-as time-frame (-> this last-impulse-time)) (seconds 0.5))) (return 0)) (set! (-> this last-impulse-time) (the-as int (current-time))) (+! (-> this vel) arg0) (inc-xy-vel! (-> this wobbler) arg1 arg2) 0 - (none) - ) + (none)) (defbehavior flutflutegg-hit-sounds flutflutegg () (sound-play "egg-hit") (cond - ((not (task-closed? (game-task beach-flutflut) (task-status need-introduction))) - ) + ((not (task-closed? (game-task beach-flutflut) (task-status need-introduction)))) ((not (logtest? (-> self ambients-played) 8)) - (if (play-ambient (-> self ambient) "BIR-AM04" #f (the-as vector #f)) - (logior! (-> self ambients-played) 8) - ) - ) + (if (play-ambient (-> self ambient) "BIR-AM04" #f (the-as vector #f)) (logior! (-> self ambients-played) 8))) ((not (logtest? (-> self ambients-played) 512)) - (if (play-ambient (-> self ambient) "BIR-AM10" #f (the-as vector #f)) - (logior! (-> self ambients-played) 512) - ) - ) - ) - (none) - ) + (if (play-ambient (-> self ambient) "BIR-AM10" #f (the-as vector #f)) (logior! (-> self ambients-played) 512)))) + (none)) (defstate flutflutegg-idle (flutflutegg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (and (= message 'attack) - (or (= (-> block param 1) 'punch) (= (-> block param 1) 'spin) (= (-> block param 1) 'spin-air)) - (!= (-> self incomming-attack-id) (-> block param 2)) - ) - (set! (-> self incomming-attack-id) (-> block param 2)) - (flutflutegg-hit-sounds) - (let ((s5-1 (vector-! (new-stack-vector0) (-> (the-as process-drawable proc) root trans) (-> self root trans)))) - (set! (-> s5-1 y) 0.0) - (vector-normalize! s5-1 1.0) - (let ((f0-2 (vector-dot s5-1 (-> self dir))) - (f1-2 (- (* (-> s5-1 x) (-> self dir z)) (* (-> s5-1 z) (-> self dir x)))) - ) - (if (< f0-2 -0.7) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (and (= message 'attack) + (or (= (-> block param 1) 'punch) (= (-> block param 1) 'spin) (= (-> block param 1) 'spin-air)) + (!= (-> self incomming-attack-id) (-> block param 2))) + (set! (-> self incomming-attack-id) (-> block param 2)) + (flutflutegg-hit-sounds) + (let ((s5-1 (vector-! (new-stack-vector0) (-> (the-as process-drawable proc) root trans) (-> self root trans)))) + (set! (-> s5-1 y) 0.0) + (vector-normalize! s5-1 1.0) + (let ((f0-2 (vector-dot s5-1 (-> self dir))) + (f1-2 (- (* (-> s5-1 x) (-> self dir z)) (* (-> s5-1 z) (-> self dir x))))) + (if (< f0-2 -0.7) (flutflutegg-method-20 self 24576.0 (* -8192.0 f1-2) (* -8192.0 f0-2)) - (flutflutegg-method-20 self 0.0 (* -8192.0 f1-2) (* -8192.0 f0-2)) - ) - ) - ) - (go flutflutegg-physics) - ) - ) - :trans (behavior () - (let* ((gp-0 (ambient-control-method-10 (-> self ambient) (new 'stack-no-clear 'vector) (seconds 3) 368640.0 self)) - (v1-2 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-3 (the-as number (logior #x3f800000 v1-2))) - (f30-0 (+ -1.0 (the-as float v1-3))) - ) - (cond - ((not (task-closed? (game-task beach-flutflut) (task-status need-introduction))) - ) - ((not gp-0) - ) - ((< 327680.0 (vector-length gp-0)) - (set! (-> self ambients-played) 0) - 0 - ) - ((and (not (logtest? (-> self ambients-played) 1)) (< (vector-length gp-0) 327680.0) (< -61440.0 (-> gp-0 y))) - (if (play-ambient (-> self ambient) "BIR-AM01" #f (the-as vector #f)) - (logior! (-> self ambients-played) 1) - ) - ) - ((and (not (logtest? (-> self ambients-played) 2)) (< (vector-length gp-0) 163840.0) (< -40960.0 (-> gp-0 y))) - (if (play-ambient (-> self ambient) "BIR-AM02" #f (the-as vector #f)) - (logior! (-> self ambients-played) 2) - ) - ) - ((and (not (logtest? (-> self ambients-played) 16)) (< (vector-length gp-0) 81920.0) (< -24576.0 (-> gp-0 y))) - (if (play-ambient (-> self ambient) "BIR-AM05" #f (the-as vector #f)) - (logior! (-> self ambients-played) 16) - ) - ) - ((and (not (logtest? (-> self ambients-played) 4)) (< (vector-length gp-0) 40960.0) (< -24576.0 (-> gp-0 y))) - (if (play-ambient (-> self ambient) "BIR-AM03" #f (the-as vector #f)) - (logior! (-> self ambients-played) 4) - ) - ) - ((< (-> gp-0 y) -24576.0) - ) - ((not (time-elapsed? (-> self ambient last-ambient-time) (seconds 30))) - ) - ((< 0.8 f30-0) - (play-ambient (-> self ambient) "BIR-AM07" #f (-> self root trans)) - ) - ((< 0.6 f30-0) - (play-ambient (-> self ambient) "BIR-AM08" #f (-> self root trans)) - ) - ((< 0.4 f30-0) - (play-ambient (-> self ambient) "BIR-AM09" #f (-> self root trans)) - ) - ((< 0.2 f30-0) - (play-ambient (-> self ambient) "BIR-AM12" #f (-> self root trans)) - ) - (else - (play-ambient (-> self ambient) "BIR-AM13" #f (-> self root trans)) - ) - ) - ) - ) - :code (behavior () - (ja-post) - (loop - (suspend) - ) - ) - ) + (flutflutegg-method-20 self 0.0 (* -8192.0 f1-2) (* -8192.0 f0-2))))) + (go flutflutegg-physics))) + :trans + (behavior () + (let* ((gp-0 (ambient-control-method-10 (-> self ambient) (new 'stack-no-clear 'vector) (seconds 3) 368640.0 self)) + (v1-2 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-3 (the-as number (logior #x3f800000 v1-2))) + (f30-0 (+ -1.0 (the-as float v1-3)))) + (cond + ((not (task-closed? (game-task beach-flutflut) (task-status need-introduction)))) + ((not gp-0)) + ((< 327680.0 (vector-length gp-0)) (set! (-> self ambients-played) 0) 0) + ((and (not (logtest? (-> self ambients-played) 1)) (< (vector-length gp-0) 327680.0) (< -61440.0 (-> gp-0 y))) + (if (play-ambient (-> self ambient) "BIR-AM01" #f (the-as vector #f)) (logior! (-> self ambients-played) 1))) + ((and (not (logtest? (-> self ambients-played) 2)) (< (vector-length gp-0) 163840.0) (< -40960.0 (-> gp-0 y))) + (if (play-ambient (-> self ambient) "BIR-AM02" #f (the-as vector #f)) (logior! (-> self ambients-played) 2))) + ((and (not (logtest? (-> self ambients-played) 16)) (< (vector-length gp-0) 81920.0) (< -24576.0 (-> gp-0 y))) + (if (play-ambient (-> self ambient) "BIR-AM05" #f (the-as vector #f)) (logior! (-> self ambients-played) 16))) + ((and (not (logtest? (-> self ambients-played) 4)) (< (vector-length gp-0) 40960.0) (< -24576.0 (-> gp-0 y))) + (if (play-ambient (-> self ambient) "BIR-AM03" #f (the-as vector #f)) (logior! (-> self ambients-played) 4))) + ((< (-> gp-0 y) -24576.0)) + ((not (time-elapsed? (-> self ambient last-ambient-time) (seconds 30)))) + ((< 0.8 f30-0) (play-ambient (-> self ambient) "BIR-AM07" #f (-> self root trans))) + ((< 0.6 f30-0) (play-ambient (-> self ambient) "BIR-AM08" #f (-> self root trans))) + ((< 0.4 f30-0) (play-ambient (-> self ambient) "BIR-AM09" #f (-> self root trans))) + ((< 0.2 f30-0) (play-ambient (-> self ambient) "BIR-AM12" #f (-> self root trans))) + (else (play-ambient (-> self ambient) "BIR-AM13" #f (-> self root trans)))))) + :code + (behavior () + (ja-post) + (loop + (suspend)))) (defstate flutflutegg-physics (flutflutegg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (and (time-elapsed? (-> self state-time) (seconds 0.5)) - (= message 'attack) - (or (= (-> block param 1) 'punch) (= (-> block param 1) 'spin) (= (-> block param 1) 'spin-air)) - (!= (-> self incomming-attack-id) (-> block param 2)) - ) - (set! (-> self incomming-attack-id) (-> block param 2)) - (flutflutegg-hit-sounds) - (let ((s5-1 (vector-! (new-stack-vector0) (-> (the-as process-drawable proc) root trans) (-> self root trans)))) - (set! (-> s5-1 y) 0.0) - (vector-normalize! s5-1 1.0) - (let ((f0-2 (vector-dot s5-1 (-> self dir))) - (f1-2 (- (* (-> s5-1 x) (-> self dir z)) (* (-> s5-1 z) (-> self dir x)))) - ) - (if (< f0-2 -0.7) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (and (time-elapsed? (-> self state-time) (seconds 0.5)) + (= message 'attack) + (or (= (-> block param 1) 'punch) (= (-> block param 1) 'spin) (= (-> block param 1) 'spin-air)) + (!= (-> self incomming-attack-id) (-> block param 2))) + (set! (-> self incomming-attack-id) (-> block param 2)) + (flutflutegg-hit-sounds) + (let ((s5-1 (vector-! (new-stack-vector0) (-> (the-as process-drawable proc) root trans) (-> self root trans)))) + (set! (-> s5-1 y) 0.0) + (vector-normalize! s5-1 1.0) + (let ((f0-2 (vector-dot s5-1 (-> self dir))) + (f1-2 (- (* (-> s5-1 x) (-> self dir z)) (* (-> s5-1 z) (-> self dir x))))) + (if (< f0-2 -0.7) (flutflutegg-method-20 self 24576.0 (* -8192.0 f1-2) (* -8192.0 f0-2)) - (flutflutegg-method-20 self 0.0 (* -8192.0 f1-2) (* -8192.0 f0-2)) - ) - ) - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (loop - (+! (-> self pos) (* (-> self vel) (seconds-per-frame))) - ;; og:preserve-this PAL patch here - (set! (-> self vel) (* (-> self vel) (- 1.0 (* 0.05 (-> *display* time-adjust-ratio))))) - (move! (-> self wobbler)) - (let ((a1-0 (new 'stack-no-clear 'vector))) - (vector-float*! a1-0 (-> self dir) (-> self pos)) - (vector+! a1-0 a1-0 (-> self start)) - (move-to-point! (-> self root) a1-0) - ) - (wobbler-method-12 (-> self wobbler) (-> self root quat)) - (let ((a2-3 (quaternion-axis-angle! (new 'stack-no-clear 'quaternion) 0.0 1.0 0.0 -18204.445))) - (quaternion*! (-> self root quat) (-> self root quat) a2-3) - ) - (suspend) - (when (>= (-> self pos) (-> self fall-dist)) - (when (task-closed? (game-task beach-flutflut) (task-status need-introduction)) - (if (play-ambient (-> self ambient) "BIR-AM06" #f (the-as vector #f)) - (logior! (-> self ambients-played) 32) - ) - ) - (go flutflutegg-physics-fall) - ) - ) - ) - :post ja-post - ) - -(defstate flutflutegg-physics-fall (flutflutegg) - :code (behavior () - (local-vars (v1-25 symbol)) - (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior camera-tracker - () - (while (not (process-grab? *target*)) - (suspend) - ) - (camera-change-to "camera-135" 0 #f) - (camera-look-at (the-as pair (ppointer->process (-> self parent))) (the-as uint 9)) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 4)) - (suspend) - ) - ) - (while (not (process-release? (handle->process (-> self grab-target)))) - (suspend) - ) - (camera-look-at (the-as pair *target*) (the-as uint 0)) - (send-event *camera* 'blend-from-as-fixed) - (camera-change-to (the-as string 'base) 75 #f) - (none) - ) - :to self - ) - (close-specific-task! (game-task beach-flutflut) (task-status need-reminder)) - (loop - (vector-float*! (-> self root transv) (-> self dir) (-> self vel)) + (flutflutegg-method-20 self 0.0 (* -8192.0 f1-2) (* -8192.0 f0-2))))))) + :code + (behavior () (set-time! (-> self state-time)) - (until v1-25 - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0)) - (integrate-for-enemy-with-move-to-ground! - (-> self root) - (-> self root transv) - (collide-kind background) - 8192.0 - #f - #f - #f - ) + (loop + (+! (-> self pos) (* (-> self vel) (seconds-per-frame))) + ;; og:preserve-this PAL patch here + (set! (-> self vel) (* (-> self vel) (- 1.0 (* 0.05 (-> *display* time-adjust-ratio))))) (move! (-> self wobbler)) + (let ((a1-0 (new 'stack-no-clear 'vector))) + (vector-float*! a1-0 (-> self dir) (-> self pos)) + (vector+! a1-0 a1-0 (-> self start)) + (move-to-point! (-> self root) a1-0)) (wobbler-method-12 (-> self wobbler) (-> self root quat)) - (let ((a2-6 (quaternion-axis-angle! (new 'stack-no-clear 'quaternion) 0.0 1.0 0.0 -18204.445))) - (quaternion*! (-> self root quat) (-> self root quat) a2-6) - ) + (let ((a2-3 (quaternion-axis-angle! (new 'stack-no-clear 'quaternion) 0.0 1.0 0.0 -18204.445))) + (quaternion*! (-> self root quat) (-> self root quat) a2-3)) (suspend) - (set! v1-25 (and (time-elapsed? (-> self state-time) (seconds 0.5)) - (logtest? (-> self root status) (cshape-moving-flags onsurf)) - ) - ) - ) - (sound-play "sack-land" :vol 200) - (go flutflutegg-break #f) - ) - ) - :post ja-post - ) + (when (>= (-> self pos) (-> self fall-dist)) + (when (task-closed? (game-task beach-flutflut) (task-status need-introduction)) + (if (play-ambient (-> self ambient) "BIR-AM06" #f (the-as vector #f)) (logior! (-> self ambients-played) 32))) + (go flutflutegg-physics-fall)))) + :post ja-post) + +(defstate flutflutegg-physics-fall (flutflutegg) + :code + (behavior () + (local-vars (v1-25 symbol)) + (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior camera-tracker () + (while (not (process-grab? *target*)) + (suspend)) + (camera-change-to "camera-135" 0 #f) + (camera-look-at (the-as pair (ppointer->process (-> self parent))) (the-as uint 9)) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 4)) (suspend))) + (while (not (process-release? (handle->process (-> self grab-target)))) + (suspend)) + (camera-look-at (the-as pair *target*) (the-as uint 0)) + (send-event *camera* 'blend-from-as-fixed) + (camera-change-to (the-as string 'base) 75 #f) + (none)) + :to + self) + (close-specific-task! (game-task beach-flutflut) (task-status need-reminder)) + (loop + (vector-float*! (-> self root transv) (-> self dir) (-> self vel)) + (set-time! (-> self state-time)) + (until v1-25 + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0)) + (integrate-for-enemy-with-move-to-ground! (-> self root) + (-> self root transv) + (collide-kind background) + 8192.0 + #f + #f + #f) + (move! (-> self wobbler)) + (wobbler-method-12 (-> self wobbler) (-> self root quat)) + (let ((a2-6 (quaternion-axis-angle! (new 'stack-no-clear 'quaternion) 0.0 1.0 0.0 -18204.445))) + (quaternion*! (-> self root quat) (-> self root quat) a2-6)) + (suspend) + (set! v1-25 + (and (time-elapsed? (-> self state-time) (seconds 0.5)) (logtest? (-> self root status) (cshape-moving-flags onsurf))))) + (sound-play "sack-land" :vol 200) + (go flutflutegg-break #f))) + :post ja-post) (defstate flutflutegg-break (flutflutegg) - :code (behavior ((arg0 symbol)) - (when arg0 - (set-vector! (-> self root trans) -231190.94 64559.105 -1164727.5 1.0) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 -18204.445) - ) - (suspend) - (update-transforms! (-> self root)) - (when (not arg0) - (ja-no-eval :group! flutflutegg-crack-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (ja :group! flutflutegg-crack-ja :num! max) - (while (and (not (task-closed? (game-task beach-flutflut) (task-status need-reward-speech))) - (not (logtest? (-> self ambients-played) 1024)) - ) - (if (play-ambient (-> self ambient) "BIR-AM11" #f (the-as vector #f)) - (logior! (-> self ambients-played) 1024) - ) - (suspend) - ) - (let ((gp-2 (current-time))) - (while (not (task-closed? (game-task beach-flutflut) (task-status need-reward-speech))) - (if (time-elapsed? gp-2 (seconds 10)) - (level-hint-spawn - (text-id beach-flutflutegg-hint) - "sksp0029" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (suspend) - ) - ) - (ja-channel-set! 0) - (while (not (task-closed? (game-task beach-flutflut) (task-status need-resolution))) - (suspend) - ) - (ja-channel-set! 1) - (set-vector! (-> self root trans) -231190.94 64559.105 -1164727.5 1.0) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 0.0) - (ja :group! flutflutegg-broke-ja :num! max) - (loop - (logior! (-> self mask) (process-mask sleep)) + :code + (behavior ((arg0 symbol)) + (when arg0 + (set-vector! (-> self root trans) -231190.94 64559.105 -1164727.5 1.0) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 -18204.445)) (suspend) - ) - ) - :post ja-post - ) + (update-transforms! (-> self root)) + (when (not arg0) + (ja-no-eval :group! flutflutegg-crack-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (ja :group! flutflutegg-crack-ja :num! max) + (while (and (not (task-closed? (game-task beach-flutflut) (task-status need-reward-speech))) + (not (logtest? (-> self ambients-played) 1024))) + (if (play-ambient (-> self ambient) "BIR-AM11" #f (the-as vector #f)) (logior! (-> self ambients-played) 1024)) + (suspend)) + (let ((gp-2 (current-time))) + (while (not (task-closed? (game-task beach-flutflut) (task-status need-reward-speech))) + (if (time-elapsed? gp-2 (seconds 10)) + (level-hint-spawn (text-id beach-flutflutegg-hint) "sksp0029" (the-as entity #f) *entity-pool* (game-task none))) + (suspend))) + (ja-channel-set! 0) + (while (not (task-closed? (game-task beach-flutflut) (task-status need-resolution))) + (suspend)) + (ja-channel-set! 1) + (set-vector! (-> self root trans) -231190.94 64559.105 -1164727.5 1.0) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 0.0) + (ja :group! flutflutegg-broke-ja :num! max) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this flutflutegg) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -1236,21 +961,17 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 8192.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core action) (collide-action solid)) (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 16384.0 0.0 7782.4) - (append-prim s3-0 s2-1) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *flutflutegg-sg* '()) (vector-z-quaternion! (-> this dir) (-> this root quat)) @@ -1263,71 +984,54 @@ (reset! (-> this wobbler) 0.1 0.98 4096.0) (set! (-> this last-impulse-time) 0) (set! (-> this ambients-played) 0) - (if (task-closed? (game-task beach-flutflut) (task-status need-reminder)) - (go flutflutegg-break #t) - (go flutflutegg-idle) - ) - (none) - ) + (if (task-closed? (game-task beach-flutflut) (task-status need-reminder)) (go flutflutegg-break #t) (go flutflutegg-idle)) + (none)) (deftype harvester (process-drawable) - ((root collide-shape :override) - (alt-actor entity-actor) - ) + ((root collide-shape :override) + (alt-actor entity-actor)) (:states - harvester-idle - (harvester-inflate symbol) - ) - ) - + harvester-idle + (harvester-inflate symbol))) -(defskelgroup *harvester-sg* harvester harvester-lod0-jg harvester-idle-ja - ((harvester-lod0-mg (meters 20)) (harvester-lod1-mg (meters 40)) (harvester-lod2-mg (meters 999999))) - :bounds (static-spherem 0 7 0 11) - ) +(defskelgroup *harvester-sg* + harvester + harvester-lod0-jg + harvester-idle-ja + ((harvester-lod0-mg (meters 20)) (harvester-lod1-mg (meters 40)) (harvester-lod2-mg (meters 999999))) + :bounds (static-spherem 0 7 0 11)) (defstate harvester-idle (harvester) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('update) - (if (and (-> self alt-actor) (logtest? (-> self alt-actor extra perm status) (entity-perm-status complete))) - (go harvester-inflate #f) - ) - ) - ) - ) - :code (behavior () - (if (and (-> self alt-actor) (logtest? (-> self alt-actor extra perm status) (entity-perm-status complete))) - (go harvester-inflate #t) - ) - (ja :group! harvester-inflate-ja :num! (identity (ja-aframe 1.0 0))) - (ja-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('update) + (if (and (-> self alt-actor) (logtest? (-> self alt-actor extra perm status) (entity-perm-status complete))) + (go harvester-inflate #f))))) + :code + (behavior () + (if (and (-> self alt-actor) (logtest? (-> self alt-actor extra perm status) (entity-perm-status complete))) + (go harvester-inflate #t)) + (ja :group! harvester-inflate-ja :num! (identity (ja-aframe 1.0 0))) + (ja-post) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defstate harvester-inflate (harvester) - :code (behavior ((arg0 symbol)) - (when (not arg0) - (ja-no-eval :group! harvester-inflate-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (loop - (ja-no-eval :group! harvester-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior ((arg0 symbol)) + (when (not arg0) + (ja-no-eval :group! harvester-inflate-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (loop + (ja-no-eval :group! harvester-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this harvester) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -1346,8 +1050,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 6144.0 0.0 24576.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -1355,8 +1058,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 16384.0 -20480.0 16384.0 20480.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -1364,8 +1066,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 16384.0 -20480.0 -16384.0 20480.0) - (append-prim s3-0 s2-2) - ) + (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) (collide-kind ground-object)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -1373,8 +1074,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 4) (set-vector! (-> s2-3 local-sphere) -16384.0 -20480.0 -16384.0 20480.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -1382,60 +1082,36 @@ (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 4) (set-vector! (-> s2-4 local-sphere) -16384.0 -20480.0 16384.0 20480.0) - (append-prim s3-0 s2-4) - ) - ) + (append-prim s3-0 s2-4))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *harvester-sg* '()) (set! (-> this alt-actor) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (go harvester-idle) - (none) - ) - -(deftype beachcam (process-hidden) - () - ) + (none)) +(deftype beachcam (process-hidden) ()) (defun beachcam-spawn () (with-pp (let ((gp-0 (entity-actor-lookup (-> pp entity) 'alt-actor 0))) (when gp-0 - (let* ((gp-1 - (ppointer->handle (process-spawn - pov-camera - (-> gp-0 extra trans) - *beachcam-sg* - (new 'static 'spool-anim :name "beachcam-cannon" :index 3 :parts 1 :command-list '()) - 0 - #f - '() - :to pp - ) - ) - ) - (s5-2 (ppointer->handle - (process-spawn fuel-cell :init fuel-cell-init-as-clone gp-1 (-> pp entity extra perm task) :to pp) - ) - ) - ) + (let* ((gp-1 (ppointer->handle (process-spawn pov-camera + (-> gp-0 extra trans) + *beachcam-sg* + (new 'static 'spool-anim :name "beachcam-cannon" :index 3 :parts 1 :command-list '()) + 0 + #f + '() + :to + pp))) + (s5-2 (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone gp-1 (-> pp entity extra perm task) :to pp)))) (let ((v1-13 (handle->process gp-1))) - (if v1-13 - (set! (-> (the-as pov-camera v1-13) notify-handle) (the-as handle s5-2)) - ) - ) + (if v1-13 (set! (-> (the-as pov-camera v1-13) notify-handle) (the-as handle s5-2)))) (while (handle->process gp-1) - (suspend) - ) - (send-event (handle->process s5-2) 'stop-cloning) - ) - ) - ) + (suspend)) + (send-event (handle->process s5-2) 'stop-cloning)))) 0 - (none) - ) - ) + (none))) diff --git a/goal_src/jak1/levels/beach/beach-part.gc b/goal_src/jak1/levels/beach/beach-part.gc index 000ce7f3c7..8ef104806e 100644 --- a/goal_src/jak1/levels/beach/beach-part.gc +++ b/goal_src/jak1/levels/beach/beach-part.gc @@ -1,730 +1,686 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: beach-part.gc -;; name in dgo: beach-part -;; dgos: BEA, L1 - ;; DECOMP BEGINS -(deftype beach-part (part-spawner) - () +(deftype beach-part (part-spawner) () (:states - beach-part-grotto-1 - ) - ) - + beach-part-grotto-1)) (defpart 666 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.01) - (:y (meters 1)) - (:scale-x (meters 15) (meters 5)) - (:rot-x 4) - (:rot-z (degrees -110) (degrees 20)) - (:scale-y (meters 5)) - (:r 192.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.0009765625)) - (:rotvel-z (degrees -0.0033333332) (degrees 0.0066666664)) - (:scalevel-y (meters 0.0009765625)) - (:fade-a 0.02) - (:timer (seconds 8)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 4)) - (:next-launcher 667) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 8)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.01) + (:y (meters 1)) + (:scale-x (meters 15) (meters 5)) + (:rot-x 4) + (:rot-z (degrees -110) (degrees 20)) + (:scale-y (meters 5)) + (:r 192.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.0009765625)) + (:rotvel-z (degrees -0.0033333332) (degrees 0.0066666664)) + (:scalevel-y (meters 0.0009765625)) + (:fade-a 0.02) + (:timer (seconds 8)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 4)) + (:next-launcher 667) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 8)) + (:rotate-y (degrees 0)))) (defpart 667 - :init-specs ((:fade-a -0.02)) - ) + :init-specs ((:fade-a -0.02))) (defpart 668 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.03 0.2) - (:y (meters -4)) - (:scale-x (meters 0.18)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:fade-a 0.21333334) - (:timer (seconds 2)) - (:flags (bit2 bit3)) - (:userdata 0.0) - (:next-time (seconds 0.5)) - (:next-launcher 669) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 8) (meters 5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.03 0.2) + (:y (meters -4)) + (:scale-x (meters 0.18)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (bit2 bit3)) + (:userdata 0.0) + (:next-time (seconds 0.5)) + (:next-launcher 669) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 8) (meters 5)))) (defpart 669 - :init-specs ((:scalevel-y (meters 0.0024414062)) - (:fade-a 0.0) - (:accel-y (meters -0.002)) - (:next-time (seconds 0.7)) - (:next-launcher 670) - ) - ) + :init-specs + ((:scalevel-y (meters 0.0024414062)) + (:fade-a 0.0) + (:accel-y (meters -0.002)) + (:next-time (seconds 0.7)) + (:next-launcher 670))) (defpart 670 - :init-specs ((:fade-a -0.16) (:timer (seconds 0.5)) (:func 'check-water-level-drop)) - ) + :init-specs ((:fade-a -0.16) (:timer (seconds 0.5)) (:func 'check-water-level-drop))) (defstate beach-part-grotto-1 (beach-part) - :code (behavior () - (loop - (when (is-visible? self) - (let* ((gp-0 (camera-pos)) - (f0-0 (vector-vector-distance (-> self root trans) gp-0)) - ) - (if (or (< (-> gp-0 y) (-> self root trans y)) (< 122880.0 f0-0)) - (launch-particles (-> *part-id-table* 666) (-> self root trans)) - ) - ) - (launch-particles (-> *part-id-table* 668) (-> self root trans)) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (when (is-visible? self) + (let* ((gp-0 (camera-pos)) + (f0-0 (vector-vector-distance (-> self root trans) gp-0))) + (if (or (< (-> gp-0 y) (-> self root trans y)) (< 122880.0 f0-0)) + (launch-particles (-> *part-id-table* 666) (-> self root trans)))) + (launch-particles (-> *part-id-table* 668) (-> self root trans))) + (suspend)))) (defpart 671 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.3 0.4) - (:x (meters -23) (meters 55)) - (:z (meters 0.5)) - (:scale-x (meters 0.18)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:fade-a 0.10666667) - (:timer (seconds 2)) - (:flags (bit2 bit3)) - (:userdata 0.0) - (:next-time (seconds 1)) - (:next-launcher 669) - (:conerot-x (degrees -40) (degrees 80)) - (:conerot-radius (meters 14.6)) - (:rotate-y (degrees 37)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.3 0.4) + (:x (meters -23) (meters 55)) + (:z (meters 0.5)) + (:scale-x (meters 0.18)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:fade-a 0.10666667) + (:timer (seconds 2)) + (:flags (bit2 bit3)) + (:userdata 0.0) + (:next-time (seconds 1)) + (:next-launcher 669) + (:conerot-x (degrees -40) (degrees 80)) + (:conerot-radius (meters 14.6)) + (:rotate-y (degrees 37)))) (defpartgroup group-beach-grotto-2 :id 161 :bounds (static-bspherem 0 -5 0 15) - :parts ((sp-item 671 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 671 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 672 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.0 1.0) - (:x (meters -10) (meters 4)) - (:y (meters 103)) - (:z (meters -8.5) (meters 16)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.65)) - (:flags (bit2 bit12 bit14)) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.0 1.0) + (:x (meters -10) (meters 4)) + (:y (meters 103)) + (:z (meters -8.5) (meters 16)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.65)) + (:flags (bit2 bit12 bit14)) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees -124.99999)))) (defpart 673 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.8 0.8) - (:x (meters -9) (meters 3.5)) - (:y (meters 103)) - (:z (meters -8.5) (meters 16)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 20.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.0011666666) (meters -0.00025)) - (:timer (seconds 2.85)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.8 0.8) + (:x (meters -9) (meters 3.5)) + (:y (meters 103)) + (:z (meters -8.5) (meters 16)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 20.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.0011666666) (meters -0.00025)) + (:timer (seconds 2.85)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees -124.99999)))) (defpart 674 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.9) - (:x (meters -10) (meters 4)) - (:y (meters 103)) - (:z (meters -9.5) (meters 18)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 28.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 2.2)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.9) + (:x (meters -10) (meters 4)) + (:y (meters 103)) + (:z (meters -9.5) (meters 18)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 28.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 2.2)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -124.99999)))) (defpart 675 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.04) - (:x (meters 6) (meters 6)) - (:y (meters 6.5)) - (:z (meters -8.5) (meters 16)) - (:scale-x (meters 18)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.026666667)) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.0044444446)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.42666668) - (:accel-y (meters 0.000033333334)) - (:friction 0.99) - (:timer (seconds 3.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 676) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.04) + (:x (meters 6) (meters 6)) + (:y (meters 6.5)) + (:z (meters -8.5) (meters 16)) + (:scale-x (meters 18)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.026666667)) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.0044444446)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.42666668) + (:accel-y (meters 0.000033333334)) + (:friction 0.99) + (:timer (seconds 3.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 676) + (:rotate-y (degrees -124.99999)))) (defpart 676 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (defpart 677 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.2) - (:x (meters 2) (meters 10)) - (:y (meters 8)) - (:z (meters -10.5) (meters 20)) - (:scale-x (meters 18)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 32.0 32.0) - (:vel-x (meters 0) (meters 0.06666667)) - (:vel-y (meters 0.008333334)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.01) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 0.42666668) - (:accel-y (meters 0.000033333334)) - (:friction 0.99) - (:timer (seconds 3.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 676) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.2) + (:x (meters 2) (meters 10)) + (:y (meters 8)) + (:z (meters -10.5) (meters 20)) + (:scale-x (meters 18)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 32.0 32.0) + (:vel-x (meters 0) (meters 0.06666667)) + (:vel-y (meters 0.008333334)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 0.42666668) + (:accel-y (meters 0.000033333334)) + (:friction 0.99) + (:timer (seconds 3.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 676) + (:rotate-y (degrees -124.99999)))) (defpartgroup group-beach-waterfall :id 162 :flags (always-draw unknown-bit-01) :bounds (static-bspherem 0 55 0 55) - :parts ((sp-item 677 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 675) - (sp-item 675 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 672) - (sp-item 672 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 672 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 673 :fade-after (meters 300) :falloff-to (meters 300)) - (sp-item 674 :fade-after (meters 90) :falloff-to (meters 90)) - ) - ) + :parts + ((sp-item 677 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 675) + (sp-item 675 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 672) + (sp-item 672 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 672 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 673 :fade-after (meters 300) :falloff-to (meters 300)) + (sp-item 674 :fade-after (meters 90) :falloff-to (meters 90)))) (defpartgroup group-beach-24 :id 163 :bounds (static-bspherem 0 3 0 50) - :parts ((sp-item 678 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 1200)) - ) + :parts ((sp-item 678 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 1200))) (defpartgroup group-beach-23 :id 164 :bounds (static-bspherem 0 3 0 50) - :parts ((sp-item 679 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 600)) - ) + :parts ((sp-item 679 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 600))) (defpartgroup group-beach-22 :id 165 :bounds (static-bspherem 0 3 0 50) - :parts ((sp-item 680 :fade-after (meters 80) :period (seconds 8) :length (seconds 5))) - ) + :parts ((sp-item 680 :fade-after (meters 80) :period (seconds 8) :length (seconds 5)))) (defpartgroup group-beach-18 :id 166 :bounds (static-bspherem 0 3 0 50) - :parts ((sp-item 681 :fade-after (meters 100) :period (seconds 8) :length (seconds 5) :offset 1200)) - ) + :parts ((sp-item 681 :fade-after (meters 100) :period (seconds 8) :length (seconds 5) :offset 1200))) (defpartgroup group-beach-17 :id 167 :bounds (static-bspherem 0 3 0 50) - :parts ((sp-item 682 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 600)) - ) + :parts ((sp-item 682 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 600))) (defpartgroup group-beach-16 :id 168 :bounds (static-bspherem 0 3 0 50) - :parts ((sp-item 683 :fade-after (meters 50) :period (seconds 8) :length (seconds 5))) - ) + :parts ((sp-item 683 :fade-after (meters 50) :period (seconds 8) :length (seconds 5)))) (defpartgroup group-beach-15 :id 169 :bounds (static-bspherem 0 3 0 50) - :parts ((sp-item 684 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 64936)) - ) + :parts ((sp-item 684 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 64936))) (defpartgroup group-beach-14 :id 170 :bounds (static-bspherem 0 3 0 50) - :parts ((sp-item 685 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 64336)) - ) + :parts ((sp-item 685 :fade-after (meters 50) :period (seconds 8) :length (seconds 5) :offset 64336))) (defpart 678 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.01 0.01) - (:x (meters -85) (meters 60)) - (:y (meters 13)) - (:z (meters -30) (meters 65)) - (:scale-x (meters 10) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 100.0) - (:b 54.0) - (:a 0.0) - (:vel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.15)) - (:fade-a 0.008888889) - (:timer (seconds 12)) - (:flags (bit2 bit12)) - (:next-time (seconds 6)) - (:next-launcher 686) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.01 0.01) + (:x (meters -85) (meters 60)) + (:y (meters 13)) + (:z (meters -30) (meters 65)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 100.0) + (:b 54.0) + (:a 0.0) + (:vel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.15)) + (:fade-a 0.008888889) + (:timer (seconds 12)) + (:flags (bit2 bit12)) + (:next-time (seconds 6)) + (:next-launcher 686) + (:rotate-y (degrees 40)))) (defpart 686 - :init-specs ((:fade-a -0.07111111)) - ) + :init-specs ((:fade-a -0.07111111))) (defpart 679 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.01 0.01) - (:x (meters -65) (meters 60)) - (:y (meters 8)) - (:z (meters -30) (meters 50)) - (:scale-x (meters 10) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 100.0) - (:b 54.0) - (:a 0.0) - (:vel-x (meters 0.02)) - (:rotvel-z (degrees -0.15)) - (:fade-a 0.008888889) - (:timer (seconds 12)) - (:flags (bit2 bit12)) - (:next-time (seconds 6)) - (:next-launcher 687) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.01 0.01) + (:x (meters -65) (meters 60)) + (:y (meters 8)) + (:z (meters -30) (meters 50)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 100.0) + (:b 54.0) + (:a 0.0) + (:vel-x (meters 0.02)) + (:rotvel-z (degrees -0.15)) + (:fade-a 0.008888889) + (:timer (seconds 12)) + (:flags (bit2 bit12)) + (:next-time (seconds 6)) + (:next-launcher 687) + (:rotate-y (degrees 40)))) (defpart 687 - :init-specs ((:fade-a -0.07111111)) - ) + :init-specs ((:fade-a -0.07111111))) (defpart 680 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.01 0.01) - (:x (meters -50) (meters 20)) - (:y (meters 0)) - (:z (meters -40) (meters 80)) - (:scale-x (meters 10) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 100.0) - (:b 54.0) - (:a 0.0) - (:vel-x (meters 0.026666667)) - (:vel-z (meters 0.016666668)) - (:rotvel-z (degrees -0.15)) - (:fade-a 0.010666667) - (:timer (seconds 12)) - (:flags (bit2 bit12)) - (:next-time (seconds 5)) - (:next-launcher 688) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.01 0.01) + (:x (meters -50) (meters 20)) + (:y (meters 0)) + (:z (meters -40) (meters 80)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 100.0) + (:b 54.0) + (:a 0.0) + (:vel-x (meters 0.026666667)) + (:vel-z (meters 0.016666668)) + (:rotvel-z (degrees -0.15)) + (:fade-a 0.010666667) + (:timer (seconds 12)) + (:flags (bit2 bit12)) + (:next-time (seconds 5)) + (:next-launcher 688) + (:rotate-y (degrees 120)))) (defpart 688 - :init-specs ((:fade-a -0.08533333)) - ) + :init-specs ((:fade-a -0.08533333))) (defpart 681 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.03 0.04) - (:x (meters -40) (meters 20)) - (:y (meters 1)) - (:z (meters -40) (meters 90)) - (:scale-x (meters 10) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 100.0) - (:b 54.0) - (:a 0.0) - (:vel-x (meters 0.026666667)) - (:vel-z (meters -0.016666668)) - (:rotvel-z (degrees -0.15)) - (:fade-a 0.008888889) - (:timer (seconds 12)) - (:flags (bit2 bit12)) - (:next-time (seconds 6)) - (:next-launcher 689) - (:rotate-y (degrees -60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.03 0.04) + (:x (meters -40) (meters 20)) + (:y (meters 1)) + (:z (meters -40) (meters 90)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 100.0) + (:b 54.0) + (:a 0.0) + (:vel-x (meters 0.026666667)) + (:vel-z (meters -0.016666668)) + (:rotvel-z (degrees -0.15)) + (:fade-a 0.008888889) + (:timer (seconds 12)) + (:flags (bit2 bit12)) + (:next-time (seconds 6)) + (:next-launcher 689) + (:rotate-y (degrees -60)))) (defpart 689 - :init-specs ((:fade-a -0.07111111)) - ) + :init-specs ((:fade-a -0.07111111))) (defpart 682 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.015 0.02) - (:x (meters -10)) - (:y (meters 1)) - (:z (meters -10) (meters 22.5)) - (:scale-x (meters 10) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 100.0) - (:b 54.0) - (:a 0.0) - (:vel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.15)) - (:fade-a 0.017777778) - (:timer (seconds 12)) - (:flags (bit2 bit12)) - (:next-time (seconds 3)) - (:next-launcher 690) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.015 0.02) + (:x (meters -10)) + (:y (meters 1)) + (:z (meters -10) (meters 22.5)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 100.0) + (:b 54.0) + (:a 0.0) + (:vel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.15)) + (:fade-a 0.017777778) + (:timer (seconds 12)) + (:flags (bit2 bit12)) + (:next-time (seconds 3)) + (:next-launcher 690) + (:rotate-y (degrees -15)))) (defpart 690 - :init-specs ((:fade-a -0.017777778)) - ) + :init-specs ((:fade-a -0.017777778))) (defpart 683 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.015 0.02) - (:x (meters -25)) - (:y (meters 1)) - (:z (meters -15) (meters 50)) - (:scale-x (meters 10) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 100.0) - (:b 54.0) - (:a 0.0) - (:vel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.15)) - (:fade-a 0.013333334) - (:timer (seconds 12)) - (:flags (bit2 bit12)) - (:next-time (seconds 4)) - (:next-launcher 691) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.015 0.02) + (:x (meters -25)) + (:y (meters 1)) + (:z (meters -15) (meters 50)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 100.0) + (:b 54.0) + (:a 0.0) + (:vel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.15)) + (:fade-a 0.013333334) + (:timer (seconds 12)) + (:flags (bit2 bit12)) + (:next-time (seconds 4)) + (:next-launcher 691) + (:rotate-y (degrees 0)))) (defpart 691 - :init-specs ((:fade-a -0.013333334)) - ) + :init-specs ((:fade-a -0.013333334))) (defpart 684 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.015 0.015) - (:x (meters -35)) - (:y (meters 1)) - (:z (meters -35) (meters 60)) - (:scale-x (meters 10) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 100.0) - (:b 54.0) - (:a 0.0) - (:vel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.15)) - (:fade-a 0.016410256) - (:timer (seconds 12)) - (:flags (bit2 bit12)) - (:next-time (seconds 3.25)) - (:next-launcher 692) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.015 0.015) + (:x (meters -35)) + (:y (meters 1)) + (:z (meters -35) (meters 60)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 100.0) + (:b 54.0) + (:a 0.0) + (:vel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.15)) + (:fade-a 0.016410256) + (:timer (seconds 12)) + (:flags (bit2 bit12)) + (:next-time (seconds 3.25)) + (:next-launcher 692) + (:rotate-y (degrees 45)))) (defpart 692 - :init-specs ((:fade-a -0.016410256)) - ) + :init-specs ((:fade-a -0.016410256))) (defpart 685 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.015 0.015) - (:x (meters -25)) - (:y (meters 14)) - (:z (meters -15) (meters 70)) - (:scale-x (meters 10) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 100.0) - (:b 54.0) - (:a 0.0) - (:vel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.15)) - (:fade-a 0.014222222) - (:timer (seconds 12)) - (:flags (bit2 bit12)) - (:next-time (seconds 3.75)) - (:next-launcher 693) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.015 0.015) + (:x (meters -25)) + (:y (meters 14)) + (:z (meters -15) (meters 70)) + (:scale-x (meters 10) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 100.0) + (:b 54.0) + (:a 0.0) + (:vel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.15)) + (:fade-a 0.014222222) + (:timer (seconds 12)) + (:flags (bit2 bit12)) + (:next-time (seconds 3.75)) + (:next-launcher 693) + (:rotate-y (degrees 0)))) (defpart 693 - :init-specs ((:fade-a -0.014222222)) - ) + :init-specs ((:fade-a -0.014222222))) (define sound-beach-waterfall (static-sound-spec "waterfall")) (defpartgroup group-beach-butterflies :id 171 :bounds (static-bspherem 0 0 0 30) - :parts ((sp-item 696 :fade-after (meters 120) :period (seconds 16.345) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 694) - (sp-item 696 :fade-after (meters 120) :period (seconds 22.125) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 694) - (sp-item 696 :fade-after (meters 120) :period (seconds 32.82) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 694) - (sp-item 694 :flags (start-dead launch-asap) :binding 695) - (sp-item 695 :flags (is-3d start-dead)) - (sp-item 694 :flags (start-dead launch-asap) :binding 695) - (sp-item 695 :flags (is-3d start-dead)) - (sp-item 694 :flags (start-dead launch-asap) :binding 695) - (sp-item 695 :flags (is-3d start-dead)) - (sp-item 694 :flags (start-dead launch-asap) :binding 695) - (sp-item 695 :flags (is-3d start-dead)) - (sp-item 694 :flags (start-dead launch-asap) :binding 695) - (sp-item 695 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 696 + :fade-after (meters 120) + :period (seconds 16.345) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 694) + (sp-item 696 + :fade-after (meters 120) + :period (seconds 22.125) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 694) + (sp-item 696 + :fade-after (meters 120) + :period (seconds 32.82) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 694) + (sp-item 694 :flags (start-dead launch-asap) :binding 695) + (sp-item 695 :flags (is-3d start-dead)) + (sp-item 694 :flags (start-dead launch-asap) :binding 695) + (sp-item 695 :flags (is-3d start-dead)) + (sp-item 694 :flags (start-dead launch-asap) :binding 695) + (sp-item 695 :flags (is-3d start-dead)) + (sp-item 694 :flags (start-dead launch-asap) :binding 695) + (sp-item 695 :flags (is-3d start-dead)) + (sp-item 694 :flags (start-dead launch-asap) :binding 695) + (sp-item 695 :flags (is-3d start-dead)))) (defpart 696 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 7.5)) - (:y (meters 14) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-y (meters -0.036666665)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 697) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 7.5)) + (:y (meters 14) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-y (meters -0.036666665)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 697) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 697 - :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 698)) - ) + :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 698))) (defpart 698 - :init-specs ((:accel-y (meters 0.00033333333))) - ) + :init-specs ((:accel-y (meters 0.00033333333)))) (defpart 694 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3) (meters 1)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:g 0.0 256.0) - (:b 128.0 1 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:vel-z (meters 0)) - (:timer (seconds 20)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 699) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3) (meters 1)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:g 0.0 256.0) + (:b 128.0 1 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:vel-z (meters 0)) + (:timer (seconds 20)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 699))) (defpart 699 - :init-specs ((:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 699) - ) - ) + :init-specs + ((:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 699))) (defpart 695 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.9)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 1.3)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:fade-a -8.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.9)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 1.3)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:fade-a -8.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-beach-moth :id 172 :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 702 :fade-after (meters 120) :flags (bit1) :period (seconds 60.1) :length (seconds 0.017) :hour-mask #b1111111110000000 :binding 700) - (sp-item 700 :flags (start-dead launch-asap) :binding 701) - (sp-item 701 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 702 + :fade-after (meters 120) + :flags (bit1) + :period (seconds 60.1) + :length (seconds 0.017) + :hour-mask #b1111111110000000 + :binding 700) + (sp-item 700 :flags (start-dead launch-asap) :binding 701) + (sp-item 701 :flags (is-3d start-dead)))) (defpart 702 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 60)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 60)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 700 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 1.5)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 60)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 703) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 1.5)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 60)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 703))) (defpart 703 - :init-specs ((:vel-x (meters -0.035555556) (meters 0.07111111)) - (:vel-y (meters -0.0148148155) (meters 0.029629631)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 703) - ) - ) + :init-specs + ((:vel-x (meters -0.035555556) (meters 0.07111111)) + (:vel-y (meters -0.0148148155) (meters 0.029629631)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 703))) (defpart 701 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.4)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.4)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit9 bit12)))) diff --git a/goal_src/jak1/levels/beach/beach-rocks.gc b/goal_src/jak1/levels/beach/beach-rocks.gc index 6ec04f0216..76372a227d 100644 --- a/goal_src/jak1/levels/beach/beach-rocks.gc +++ b/goal_src/jak1/levels/beach/beach-rocks.gc @@ -1,441 +1,347 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/collectables.gc") (require "engine/anim/aligner.gc") -;; name: beach-rocks.gc -;; name in dgo: beach-rocks -;; dgos: BEA, L1 - ;; DECOMP BEGINS -(defskelgroup *lrocklrg-sg* lrocklrg lrocklrg-lod0-jg lrocklrg-idle-ja - ((lrocklrg-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - :longest-edge (meters 11) - ) +(defskelgroup *lrocklrg-sg* + lrocklrg + lrocklrg-lod0-jg + lrocklrg-idle-ja + ((lrocklrg-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :longest-edge (meters 11)) (defpartgroup group-beach-rocks-start :id 553 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2340 :period (seconds 0.25) :length (seconds 0.035)) - (sp-item 2341 :period (seconds 0.25) :length (seconds 0.035)) - (sp-item 2289 :period (seconds 0.25) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 2340 :period (seconds 0.25) :length (seconds 0.035)) + (sp-item 2341 :period (seconds 0.25) :length (seconds 0.035)) + (sp-item 2289 :period (seconds 0.25) :length (seconds 0.035)))) (defpart 2341 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 3.0 6.0) - (:y (meters 0) (meters -4)) - (:scale-x (meters 0.25) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 1)) - (:r 96.0 64.0) - (:g 96.0 64.0) - (:b 0.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:scalevel-x (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0028333333) (meters -0.0021666666)) - (:friction 0.97) - (:timer (seconds 5)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 80) (degrees 200.00002)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 3.0 6.0) + (:y (meters 0) (meters -4)) + (:scale-x (meters 0.25) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 1)) + (:r 96.0 64.0) + (:g 96.0 64.0) + (:b 0.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:scalevel-x (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0028333333) (meters -0.0021666666)) + (:friction 0.97) + (:timer (seconds 5)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 80) (degrees 200.00002)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 5)))) (defpart 2340 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 8.0 16.0) - (:y (meters 0) (meters -4)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 1)) - (:r 64.0 128.0) - (:g 128.0 128.0) - (:b 0.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:scalevel-x (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.08533333) - (:accel-y (meters -0.00083333335) (meters -0.0021666666)) - (:friction 0.93) - (:timer (seconds 5)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 80) (degrees 200.00002)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 8.0 16.0) + (:y (meters 0) (meters -4)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 64.0 128.0) + (:g 128.0 128.0) + (:b 0.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:scalevel-x (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08533333) + (:accel-y (meters -0.00083333335) (meters -0.0021666666)) + (:friction 0.93) + (:timer (seconds 5)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 80) (degrees 200.00002)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 5)))) (defpart 2289 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 3.0) - (:y (meters 0) (meters -4)) - (:scale-x (meters 6) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:scalevel-x (meters 0.04)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.042666666) - (:fade-g -0.061333332) - (:fade-b -0.042666666) - (:fade-a -0.032) - (:accel-y (meters -0.0005) (meters -0.0018333334)) - (:friction 0.95) - (:timer (seconds 5)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 3.0) + (:y (meters 0) (meters -4)) + (:scale-x (meters 6) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:scalevel-x (meters 0.04)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.042666666) + (:fade-g -0.061333332) + (:fade-b -0.042666666) + (:fade-a -0.032) + (:accel-y (meters -0.0005) (meters -0.0018333334)) + (:friction 0.95) + (:timer (seconds 5)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 6)))) (defpartgroup group-beach-rocks-fall :id 554 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2290 :period (seconds 0.05) :length (seconds 0.017))) - ) + :parts ((sp-item 2290 :period (seconds 0.05) :length (seconds 0.017)))) (defpart 2290 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 3.0 3.0) - (:y (meters 0) (meters -4)) - (:scale-x (meters 7) (meters 9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 64.0) - (:a 16.0 48.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.15333334) - (:fade-b -0.10666667) - (:fade-a -0.10666667) - (:accel-y (meters -0.0005) (meters -0.0018333334)) - (:friction 0.98) - (:timer (seconds 5)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 3.0 3.0) + (:y (meters 0) (meters -4)) + (:scale-x (meters 7) (meters 9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 64.0) + (:a 16.0 48.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.15333334) + (:fade-b -0.10666667) + (:fade-a -0.10666667) + (:accel-y (meters -0.0005) (meters -0.0018333334)) + (:friction 0.98) + (:timer (seconds 5)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2)))) (defpartgroup group-beach-rocks-land :id 555 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2342 :period (seconds 3) :length (seconds 0.135)) - (sp-item 2343 :period (seconds 3) :length (seconds 0.135)) - (sp-item 2291 :period (seconds 3) :length (seconds 0.135)) - ) - ) + :parts + ((sp-item 2342 :period (seconds 3) :length (seconds 0.135)) + (sp-item 2343 :period (seconds 3) :length (seconds 0.135)) + (sp-item 2291 :period (seconds 3) :length (seconds 0.135)))) (defpart 2343 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters -3)) - (:scale-x (meters 0.4) (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 32) (meters 10)) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 3.4133334)) - (:fade-r -0.10666667) - (:fade-g -0.15333334) - (:fade-b -0.10666667) - (:fade-a -3.2) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters -3)) + (:scale-x (meters 0.4) (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 32) (meters 10)) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 3.4133334)) + (:fade-r -0.10666667) + (:fade-g -0.15333334) + (:fade-b -0.10666667) + (:fade-a -3.2) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)))) (defpart 2342 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 64.0 64.0) - (:y (meters 0) (meters -4)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 1)) - (:r 128.0 64.0) - (:g 192.0 64.0) - (:b 0.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.21333334)) - (:scalevel-x (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.08533333) - (:accel-y (meters -0.00083333335) (meters -0.0021666666)) - (:friction 0.95) - (:timer (seconds 5)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 64.0 64.0) + (:y (meters 0) (meters -4)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 1)) + (:r 128.0 64.0) + (:g 192.0 64.0) + (:b 0.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.21333334)) + (:scalevel-x (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08533333) + (:accel-y (meters -0.00083333335) (meters -0.0021666666)) + (:friction 0.95) + (:timer (seconds 5)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 5)))) (defpart 2291 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 32.0 32.0) - (:y (meters 0) (meters -4)) - (:scale-x (meters 8) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 64.0) - (:a 16.0 48.0) - (:vel-y (meters 0.10666667) (meters 0.32)) - (:scalevel-x (meters 0.033333335) (meters 0.02)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.15333334) - (:fade-b -0.10666667) - (:fade-a -0.10666667) - (:accel-y (meters -0.0005) (meters -0.0018333334)) - (:friction 0.85) - (:timer (seconds 5)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 100.00001)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 32.0 32.0) + (:y (meters 0) (meters -4)) + (:scale-x (meters 8) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 64.0) + (:a 16.0 48.0) + (:vel-y (meters 0.10666667) (meters 0.32)) + (:scalevel-x (meters 0.033333335) (meters 0.02)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.15333334) + (:fade-b -0.10666667) + (:fade-a -0.10666667) + (:accel-y (meters -0.0005) (meters -0.0018333334)) + (:friction 0.85) + (:timer (seconds 5)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 100.00001)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2)))) (deftype beach-rock (process-drawable) - ((root collide-shape-moving :override) - (trigger basic) - (movie-start time-frame) - (part-falling sparticle-launch-control) - (part-landing sparticle-launch-control) - (prev-frame float) - ) + ((root collide-shape-moving :override) + (trigger basic) + (movie-start time-frame) + (part-falling sparticle-launch-control) + (part-landing sparticle-launch-control) + (prev-frame float)) (:state-methods - idle - loading - falling - fallen - ) - ) - + idle + loading + falling + fallen)) (defmethod relocate ((this beach-rock) (arg0 int)) (if (nonzero? (-> this part-falling)) - (set! (-> this part-falling) (the-as sparticle-launch-control (+ (the-as int (-> this part-falling)) arg0))) - ) + (set! (-> this part-falling) (the-as sparticle-launch-control (+ (the-as int (-> this part-falling)) arg0)))) (if (nonzero? (-> this part-landing)) - (set! (-> this part-landing) (the-as sparticle-launch-control (+ (the-as int (-> this part-landing)) arg0))) - ) - (call-parent-method this arg0) - ) + (set! (-> this part-landing) (the-as sparticle-launch-control (+ (the-as int (-> this part-landing)) arg0)))) + (call-parent-method this arg0)) (defmethod deactivate ((this beach-rock)) - (if (nonzero? (-> this part-falling)) - (kill-and-free-particles (-> this part-falling)) - ) - (if (nonzero? (-> this part-landing)) - (kill-and-free-particles (-> this part-landing)) - ) + (if (nonzero? (-> this part-falling)) (kill-and-free-particles (-> this part-falling))) + (if (nonzero? (-> this part-landing)) (kill-and-free-particles (-> this part-landing))) (call-parent-method this) - (none) - ) + (none)) (defstate idle (beach-rock) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (set! (-> self trigger) #t) - (go-virtual falling) - ) - (('loading) - (go-virtual loading) - ) - ) - ) - :code (behavior () - (if (-> self trigger) - (go-virtual falling) - ) - (ja-channel-set! 0) - (ja-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (set! (-> self trigger) #t) (go-virtual falling)) + (('loading) (go-virtual loading)))) + :code + (behavior () + (if (-> self trigger) (go-virtual falling)) + (ja-channel-set! 0) + (ja-post) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defstate loading (beach-rock) :virtual #t - :event (-> (the-as state (method-of-type beach-rock idle)) event) - :code (behavior () - (loop - (spool-push *art-control* "lrocklrg-falling" 0 self -1.0) - (suspend) - ) - ) - ) + :event + (-> (the-as state (method-of-type beach-rock idle)) + event) + :code + (behavior () + (loop + (spool-push *art-control* "lrocklrg-falling" 0 self -1.0) + (suspend)))) (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 trans quad)) - (spawn (-> self part) gp-0) - (+! (-> gp-0 x) 122880.0) - (+! (-> gp-0 z) 102400.0) - (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) (joint-node lrocklrg-lod0-jg Lrocklrg)) - ) - ) - (if (and (< 270.0 f30-0) (< f30-0 333.0)) - (spawn - (-> self part-falling) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node lrocklrg-lod0-jg platformrock)) - ) - ) - (if (and (< (-> self prev-frame) 333.0) (>= f30-0 333.0)) - (spawn - (-> self part-landing) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node lrocklrg-lod0-jg platformrock)) - ) - ) - (if (and (< 169.0 f30-0) (< f30-0 202.0)) - (spawn - (-> self part-falling) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node lrocklrg-lod0-jg Rrocklrg)) - ) - ) - (if (and (< 240.0 f30-0) (< f30-0 270.0)) - (spawn - (-> self part-falling) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node lrocklrg-lod0-jg smlrock)) - ) - ) - (set! (-> self prev-frame) f30-0) - ) - ) - :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*))) - ) - (logclear! (-> self draw status) (draw-status hidden)) - (ja-channel-set! 1) - (ja :group! lrocklrg-idle-ja :num! min) - (let ((gp-2 (ppointer->handle (process-spawn othercam self 7 #f #t :to self))) - (s5-1 (ppointer->handle (process-spawn - fuel-cell - :init fuel-cell-init-as-clone - (process->handle self) - (-> self entity extra perm task) - :to self - ) - ) - ) - ) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (set-time! (-> self movie-start)) - (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)) - ) - (the-as art-joint-anim lrocklrg-idle-ja) - (the-as art-joint-anim lrocklrg-fallen-ja) - (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 - ) - ) - (let ((a0-28 (handle->process s5-1))) - (if a0-28 - (send-event a0-28 'stop-cloning) - ) - ) - ) - (until v1-49 - (suspend) - (set! v1-49 (or (not *target*) (process-release? *target*))) - ) - (set! (-> self draw bounds w) 20480.0) - (go-virtual fallen) - ) - :post transform-post - ) + :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 trans quad)) + (spawn (-> self part) gp-0) + (+! (-> gp-0 x) 122880.0) + (+! (-> gp-0 z) 102400.0) + (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) (joint-node lrocklrg-lod0-jg Lrocklrg)))) + (if (and (< 270.0 f30-0) (< f30-0 333.0)) + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node lrocklrg-lod0-jg platformrock)))) + (if (and (< (-> self prev-frame) 333.0) (>= f30-0 333.0)) + (spawn (-> self part-landing) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node lrocklrg-lod0-jg platformrock)))) + (if (and (< 169.0 f30-0) (< f30-0 202.0)) + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node lrocklrg-lod0-jg Rrocklrg)))) + (if (and (< 240.0 f30-0) (< f30-0 270.0)) + (spawn (-> self part-falling) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node lrocklrg-lod0-jg smlrock)))) + (set! (-> self prev-frame) f30-0))) + :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*)))) + (logclear! (-> self draw status) (draw-status hidden)) + (ja-channel-set! 1) + (ja :group! lrocklrg-idle-ja :num! min) + (let ((gp-2 (ppointer->handle (process-spawn othercam self 7 #f #t :to self))) + (s5-1 (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) (-> self entity extra perm task) :to self)))) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (set-time! (-> self movie-start)) + (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))) + (the-as art-joint-anim lrocklrg-idle-ja) + (the-as art-joint-anim lrocklrg-fallen-ja) + (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)) + (let ((a0-28 (handle->process s5-1))) (if a0-28 (send-event a0-28 'stop-cloning)))) + (until v1-49 + (suspend) + (set! v1-49 (or (not *target*) (process-release? *target*)))) + (set! (-> self draw bounds w) 20480.0) + (go-virtual fallen)) + :post transform-post) (defstate fallen (beach-rock) :virtual #t - :code (behavior () - (level-hint-spawn - (text-id beach-seagulls-avalanche) - "sksp0025" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (ja :group! lrocklrg-fallen-ja) - (compute-alignment! (-> self align)) - (let ((v1-6 (first-transform (-> self align)))) - (set! (-> self root trans quad) (-> self entity extra trans quad)) - (+! (-> self root trans y) (-> v1-6 trans y)) - ) - (suspend) - (update-transforms! (-> self root)) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - :post ja-post - ) + :code + (behavior () + (level-hint-spawn (text-id beach-seagulls-avalanche) "sksp0025" (the-as entity #f) *entity-pool* (game-task none)) + (ja :group! lrocklrg-fallen-ja) + (compute-alignment! (-> self align)) + (let ((v1-6 (first-transform (-> self align)))) + (set! (-> self root trans quad) (-> self entity extra trans quad)) + (+! (-> self root trans y) (-> v1-6 trans y))) + (suspend) + (update-transforms! (-> self root)) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0) + :post ja-post) (defmethod init-from-entity! ((this beach-rock) (arg0 entity-actor)) (set! (-> this link) (new 'process 'actor-link-info this)) @@ -448,44 +354,29 @@ (set! (-> this prev-frame) -1000.0) (set! (-> this draw origin-joint-index) (the-as uint 4)) (case (get-task-status (-> this entity extra perm task)) - (((task-status invalid)) - (go (method-of-object this fallen)) - ) + (((task-status invalid)) (go (method-of-object this fallen))) (((task-status need-resolution)) (let ((s5-0 (new 'stack-no-clear 'vector))) (ja-post) (vector<-cspace! s5-0 (-> this node-list data 8)) - (birth-pickup-at-point - s5-0 - (pickup-type fuel-cell) - (the float (the-as int (-> this entity extra perm task))) - #f - this - (the-as fact-info #f) - ) - ) - (go (method-of-object this fallen)) - ) - (else - (go (method-of-object this idle)) - ) - ) - (none) - ) - -(deftype lrocklrg (beach-rock) - () - ) + (birth-pickup-at-point s5-0 + (pickup-type fuel-cell) + (the float (the-as int (-> this entity extra perm task))) + #f + this + (the-as fact-info #f))) + (go (method-of-object this fallen))) + (else (go (method-of-object this idle)))) + (none)) +(deftype lrocklrg (beach-rock) ()) (defmethod init-from-entity! ((this lrocklrg) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind background)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -493,14 +384,11 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lrocklrg-sg* '()) ((method-of-type beach-rock init-from-entity!) this arg0) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/beach/bird-lady-beach.gc b/goal_src/jak1/levels/beach/bird-lady-beach.gc index 635ce45228..1236c6e3d5 100644 --- a/goal_src/jak1/levels/beach/bird-lady-beach.gc +++ b/goal_src/jak1/levels/beach/bird-lady-beach.gc @@ -1,47 +1,31 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: bird-lady-beach.gc -;; name in dgo: bird-lady-beach -;; dgos: BEA, L1 - ;; DECOMP BEGINS (deftype bird-lady-beach (process-taskable) - ((flutflut handle) - (egg handle) - ) - ) - + ((flutflut handle) + (egg handle))) -(defskelgroup *bird-lady-beach-sg* bird-lady-beach bird-lady-beach-lod0-jg bird-lady-beach-idle-ja - ((bird-lady-beach-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow bird-lady-beach-shadow-mg - ) +(defskelgroup *bird-lady-beach-sg* + bird-lady-beach + bird-lady-beach-lod0-jg + bird-lady-beach-idle-ja + ((bird-lady-beach-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow bird-lady-beach-shadow-mg) (defstate idle (bird-lady-beach) :virtual #t - :enter (behavior () - (when (not (should-display? self)) - (let ((a0-2 (handle->process (-> self flutflut)))) - (if a0-2 - (deactivate a0-2) - ) - ) - (let ((a0-6 (handle->process (-> self egg)))) - (if a0-6 - (deactivate a0-6) - ) - ) - (go-virtual hidden) - ) - ((-> (method-of-type process-taskable idle) enter)) - ) - ) + :enter + (behavior () + (when (not (should-display? self)) + (let ((a0-2 (handle->process (-> self flutflut)))) (if a0-2 (deactivate a0-2))) + (let ((a0-6 (handle->process (-> self egg)))) (if a0-6 (deactivate a0-6))) + (go-virtual hidden)) + ((-> (method-of-type process-taskable idle) enter)))) (defmethod play-anim! ((this bird-lady-beach) (arg0 symbol)) (case (current-status (-> this tasks)) @@ -50,48 +34,36 @@ (set! (-> this cell-for-task) (current-task (-> this tasks))) (close-current! (-> this tasks)) (set! (-> this flutflut) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *flutflut-naked-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *flutflut-naked-sg* #f :to this))) (send-event (handle->process (-> this flutflut)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this flutflut)) 'blend-shape #t) (set! (-> this egg) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *flutflutegg-sg* #f :to this)) - ) - (send-event (handle->process (-> this egg)) 'anim-mode 'clone-anim) - ) - (new 'static 'spool-anim - :name "bird-lady-beach-resolution" - :index 4 - :parts 10 - :command-list '((141 joint "cameraB") (535 joint "camera") (696 joint "cameraB") (758 joint "camera") (813 joint "cameraB")) - ) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *flutflutegg-sg* #f :to this))) + (send-event (handle->process (-> this egg)) 'anim-mode 'clone-anim)) + (new 'static + 'spool-anim + :name "bird-lady-beach-resolution" + :index 4 + :parts 10 + :command-list + '((141 joint "cameraB") (535 joint "camera") (696 joint "cameraB") (758 joint "camera") (813 joint "cameraB")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this bird-lady-beach)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod should-display? ((this bird-lady-beach)) - (= (current-status (-> this tasks)) (task-status need-reward-speech)) - ) + (= (current-status (-> this tasks)) (task-status need-reward-speech))) (defmethod init-from-entity! ((this bird-lady-beach) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *bird-lady-beach-sg* 3 51 (new 'static 'vector :y 4096.0 :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task beach-flutflut))) (set! (-> this sound-flava) (music-flava birdlady)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/beach/bird-lady.gc b/goal_src/jak1/levels/beach/bird-lady.gc index d5433d871b..5cfd4e039d 100644 --- a/goal_src/jak1/levels/beach/bird-lady.gc +++ b/goal_src/jak1/levels/beach/bird-lady.gc @@ -1,157 +1,101 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: bird-lady.gc -;; name in dgo: bird-lady -;; dgos: BEA, L1 - ;; DECOMP BEGINS -(deftype bird-lady (process-taskable) - () - ) +(deftype bird-lady (process-taskable) ()) - -(defskelgroup *bird-lady-sg* bird-lady bird-lady-lod0-jg bird-lady-idle-ja - ((bird-lady-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 2.5) - :shadow bird-lady-shadow-mg - ) +(defskelgroup *bird-lady-sg* + bird-lady + bird-lady-lod0-jg + bird-lady-idle-ja + ((bird-lady-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 2.5) + :shadow bird-lady-shadow-mg) (defmethod process-taskable-method-52 ((this bird-lady)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -1024.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -1024.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this bird-lady)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this bird-lady) (arg0 symbol)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "bird-lady-introduction" - :index 4 - :parts 11 - :command-list '((0 want-levels village1 beach) - (49 joint "cameraB") - (101 display-level beach special) - (101 kill "yakow-8") - (101 kill "yakow-9") - (101 kill "yakow-10") - (101 kill "yakow-11") - (101 kill "yakow-12") - (102 joint "camera") - (125 joint "cameraB") - (251 joint "camera") - (326 joint "cameraB") - (649 display-level beach movie) - (649 want-force-vis beach #t) - (650 alive "flutflutegg-1") - (651 joint "camera") - (1041 joint "cameraB") - (1046 dead "flutflutegg-1") - (1046 display-level beach display) - (1046 want-force-vis beach #f) - ) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "bird-lady-introduction" + :index 4 + :parts 11 + :command-list + '((0 want-levels village1 beach) + (49 joint "cameraB") + (101 display-level beach special) + (101 kill "yakow-8") + (101 kill "yakow-9") + (101 kill "yakow-10") + (101 kill "yakow-11") + (101 kill "yakow-12") + (102 joint "camera") + (125 joint "cameraB") + (251 joint "camera") + (326 joint "cameraB") + (649 display-level beach movie) + (649 want-force-vis beach #t) + (650 alive "flutflutegg-1") + (651 joint "camera") + (1041 joint "cameraB") + (1046 dead "flutflutegg-1") + (1046 display-level beach display) + (1046 want-force-vis beach #f)))) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((zero? (get-reminder (-> this tasks) 0)) - (if arg0 - (save-reminder (-> this tasks) 1 0) - ) - (new 'static 'spool-anim :name "bird-lady-reminder-1" :index 5 :parts 4 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 0)) + (new 'static 'spool-anim :name "bird-lady-reminder-1" :index 5 :parts 4 :command-list '())) (else - (if arg0 - (save-reminder (-> this tasks) 0 0) - ) - (new 'static 'spool-anim :name "bird-lady-reminder-2" :index 6 :parts 5 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 0)) + (new 'static 'spool-anim :name "bird-lady-reminder-2" :index 6 :parts 5 :command-list '())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this bird-lady)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod process-taskable-method-43 ((this bird-lady)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.66 f0-2) - (play-ambient (-> this ambient) "BIR-LO02" #f (-> this root trans)) - ) - ((< 0.33 f0-2) - (play-ambient (-> this ambient) "BIR-LO03" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "BIR-am08" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.66 f0-2) (play-ambient (-> this ambient) "BIR-LO02" #f (-> this root trans))) + ((< 0.33 f0-2) (play-ambient (-> this ambient) "BIR-LO03" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "BIR-am08" #f (-> this root trans))))))) (defmethod target-above-threshold? ((this bird-lady)) - (the-as symbol (and *target* (< (-> (target-pos 0) z) -81920.0))) - ) + (the-as symbol (and *target* (< (-> (target-pos 0) z) -81920.0)))) (defmethod init-from-entity! ((this bird-lady) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *bird-lady-sg* 3 51 (new 'static 'vector :y 4096.0 :w 4096.0) 5) @@ -159,8 +103,6 @@ (set! (-> this sound-flava) (music-flava birdlady)) (set! (-> this draw light-index) (the-as uint 4)) (if (closed? (-> this tasks) (game-task beach-flutflut) (task-status need-reminder)) - (cleanup-for-death this) - (go (method-of-object this idle)) - ) - (none) - ) + (cleanup-for-death this) + (go (method-of-object this idle))) + (none)) diff --git a/goal_src/jak1/levels/beach/lurkercrab.gc b/goal_src/jak1/levels/beach/lurkercrab.gc index bc5b4df697..565df30fb0 100644 --- a/goal_src/jak1/levels/beach/lurkercrab.gc +++ b/goal_src/jak1/levels/beach/lurkercrab.gc @@ -1,100 +1,77 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/nav-enemy.gc") (require "engine/target/target-util.gc") -;; name: lurkercrab.gc -;; name in dgo: lurkercrab -;; dgos: BEA, L1 - ;; DECOMP BEGINS (defpartgroup group-lurkercrab-slide :id 159 :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 663 :fade-after (meters 40) :falloff-to (meters 40)) - (sp-item 664 :fade-after (meters 40) :falloff-to (meters 40)) - ) - ) + :parts + ((sp-item 663 :fade-after (meters 40) :falloff-to (meters 40)) + (sp-item 664 :fade-after (meters 40) :falloff-to (meters 40)))) (defpart 663 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:y (meters -2)) - (:scale-x (meters 2) (meters 2)) - (:scale-y :copy scale-x) - (:r 100.0 30.0) - (:g 80.0 20.0) - (:b 30.0 30.0) - (:a 16.0 48.0) - (:vel-y (meters 0.0033333334)) - (:scalevel-x (meters 0.033333335)) - (:fade-a -0.21333334) - (:accel-y (meters -0.000033333334)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:y (meters -2)) + (:scale-x (meters 2) (meters 2)) + (:scale-y :copy scale-x) + (:r 100.0 30.0) + (:g 80.0 20.0) + (:b 30.0 30.0) + (:a 16.0 48.0) + (:vel-y (meters 0.0033333334)) + (:scalevel-x (meters 0.033333335)) + (:fade-a -0.21333334) + (:accel-y (meters -0.000033333334)) + (:timer (seconds 1)) + (:flags (bit2 bit12)))) (defpart 664 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:y (meters -2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 75.0 60.0) - (:g 60.0 20.0) - (:b 23.0 30.0) - (:a 128.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:y (meters -2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 75.0 60.0) + (:g 60.0 20.0) + (:b 23.0 30.0) + (:a 128.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.2)))) (deftype lurkercrab (nav-enemy) - ((orient basic) - ) + ((orient basic)) (:states - lurkercrab-pushed - ) - ) + lurkercrab-pushed)) - -(defskelgroup *lurkercrab-sg* lurkercrab lurkercrab-lod0-jg lurkercrab-idle-ja - ((lurkercrab-lod0-mg (meters 20)) (lurkercrab-lod1-mg (meters 40)) (lurkercrab-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - ) +(defskelgroup *lurkercrab-sg* + lurkercrab + lurkercrab-lod0-jg + lurkercrab-idle-ja + ((lurkercrab-lod0-mg (meters 20)) (lurkercrab-lod1-mg (meters 40)) (lurkercrab-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5)) (defmethod touch-handler ((this lurkercrab) (arg0 process) (arg1 event-message-block)) (if (and (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf6)) ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) - ) - (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) - ) - (send-shove-back - (-> this collide-info) - arg0 - (the-as touching-shapes-entry (-> arg1 param 0)) - 0.7 - 6144.0 - 16384.0 - ) - (if (not (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf8))) - (do-push-aways! (-> this collide-info)) - ) - ) + (the-as uint 1))) + (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic)) + (send-shove-back (-> this collide-info) arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 0.7 6144.0 16384.0) + (if (not (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf8))) (do-push-aways! (-> this collide-info)))) (defmethod attack-handler ((this lurkercrab) (arg0 process) (arg1 event-message-block)) (let ((s5-0 (-> this incomming-attack-id))) @@ -103,435 +80,320 @@ (cond ((or (= v1-1 'flop) (= v1-1 'explode) (= v1-1 'darkeco)) (logclear! (-> this mask) (process-mask actor-pause)) - (go (method-of-object this nav-enemy-die)) - ) + (go (method-of-object this nav-enemy-die))) ((= v1-1 'punch) (cond ((logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf5)) (logclear! (-> this mask) (process-mask actor-pause)) - (go (method-of-object this nav-enemy-die)) - ) + (go (method-of-object this nav-enemy-die))) ((begin (let ((s4-0 (new 'stack-no-clear 'vector))) (let ((f30-0 (quaternion-xz-angle (target-rot)))) - (set-vector! s4-0 (* 24576.0 (sin f30-0)) 0.0 (* 24576.0 (cos f30-0)) 1.0) - ) + (set-vector! s4-0 (* 24576.0 (sin f30-0)) 0.0 (* 24576.0 (cos f30-0)) 1.0)) (vector+! s4-0 (-> this collide-info trans) s4-0) - (set! (-> this nav target-pos quad) (-> s4-0 quad)) - ) + (set! (-> this nav target-pos quad) (-> s4-0 quad))) (go lurkercrab-pushed) - (= s5-0 (-> this incomming-attack-id)) - ) - 'push - ) - (else - #t - ) - ) - ) + (= s5-0 (-> this incomming-attack-id))) + 'push) + (else #t))) ((logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf5)) (logclear! (-> this mask) (process-mask actor-pause)) - (go (method-of-object this nav-enemy-die)) - ) + (go (method-of-object this nav-enemy-die))) ((begin (let ((s4-1 (new 'stack-no-clear 'vector))) (vector-! s4-1 (-> this collide-info trans) (target-pos 0)) (vector-normalize! s4-1 24576.0) (vector+! s4-1 (-> this collide-info trans) s4-1) - (set! (-> this nav target-pos quad) (-> s4-1 quad)) - ) + (set! (-> this nav target-pos quad) (-> s4-1 quad))) (go lurkercrab-pushed) - (= s5-0 (-> this incomming-attack-id)) - ) - 'push - ) - (else - #t - ) - ) - ) - ) - ) + (= s5-0 (-> this incomming-attack-id))) + 'push) + (else #t))))) nav-enemy-default-event-handler (defmethod nav-enemy-method-37 ((this lurkercrab)) (when (-> this orient) (if (logtest? (nav-control-flags navcf19) (-> this nav flags)) - (seek-to-point-toward-point! - (-> this collide-info) - (-> this nav target-pos) - (-> this rotate-speed) - (-> this turn-time) - ) - (seek-toward-heading-vec! - (-> this collide-info) - (-> this nav travel) - (-> this rotate-speed) - (-> this turn-time) - ) - ) - ) + (seek-to-point-toward-point! (-> this collide-info) (-> this nav target-pos) (-> this rotate-speed) (-> this turn-time)) + (seek-toward-heading-vec! (-> this collide-info) (-> this nav travel) (-> this rotate-speed) (-> this turn-time)))) (if (not (-> this orient)) - (quaternion-rotate-y! - (-> this collide-info quat) - (-> this collide-info quat) - (* 163840.0 (seconds-per-frame)) - ) - ) + (quaternion-rotate-y! (-> this collide-info quat) (-> this collide-info quat) (* 163840.0 (seconds-per-frame)))) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-38 ((this lurkercrab)) - (integrate-for-enemy-with-move-to-ground! - (-> this collide-info) - (-> this collide-info transv) - (collide-kind background) - 8192.0 - #f - #f - #f - ) + (integrate-for-enemy-with-move-to-ground! (-> this collide-info) + (-> this collide-info transv) + (collide-kind background) + 8192.0 + #f + #f + #f) 0 - (none) - ) + (none)) (defstate nav-enemy-idle (lurkercrab) :virtual #t :event nav-enemy-default-event-handler - :exit (behavior () - (set! (-> self draw force-lod) -1) - ) - :code (behavior () - (set! (-> self target-speed) 0.0) - (set! (-> self draw force-lod) 2) - (ja-channel-push! 1 (seconds 0.075)) - (loop - (ja :group! lurkercrab-idle-ja :num! (identity (ja-aframe 1.0 0))) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 3)) + :exit + (behavior () + (set! (-> self draw force-lod) -1)) + :code + (behavior () + (set! (-> self target-speed) 0.0) + (set! (-> self draw force-lod) 2) + (ja-channel-push! 1 (seconds 0.075)) + (loop + (ja :group! lurkercrab-idle-ja :num! (identity (ja-aframe 1.0 0))) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 3)) (suspend))) + (ja-no-eval :group! lurkercrab-idle-ja :num! (seek! (ja-aframe 19.0 0)) :frame-num (ja-aframe 1.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! lurkercrab-idle-ja :num! (seek! (ja-aframe 19.0 0)) :frame-num (ja-aframe 1.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 19.0 0))) - ) - (ja :num-func num-func-identity :frame-num (ja-aframe 19.0 0)) - (let ((gp-5 (current-time))) - (until (time-elapsed? gp-5 (seconds 1)) + (ja :num! (seek! (ja-aframe 19.0 0)))) + (ja :num-func num-func-identity :frame-num (ja-aframe 19.0 0)) + (let ((gp-5 (current-time))) (until (time-elapsed? gp-5 (seconds 1)) (suspend))) + (ja-no-eval :group! lurkercrab-idle-ja :num! (seek! (ja-aframe 1.0 0)) :frame-num (ja-aframe 19.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! lurkercrab-idle-ja :num! (seek! (ja-aframe 1.0 0)) :frame-num (ja-aframe 19.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 1.0 0))) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 1.0 0))))))) (defbehavior lurkercrab-invulnerable lurkercrab () (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf5)) (let ((v1-3 (find-prim-by-id (-> self collide-info) (the-as uint 2)))) (when v1-3 - (let ((v0-1 4)) - (set! (-> v1-3 prim-core offense) (the-as collide-offense v0-1)) - v0-1 - ) - ) - ) - ) + (let ((v0-1 4)) (set! (-> v1-3 prim-core offense) (the-as collide-offense v0-1)) v0-1)))) (defbehavior lurkercrab-vulnerable lurkercrab () (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf5)) (let ((v1-3 (find-prim-by-id (-> self collide-info) (the-as uint 2)))) (when v1-3 - (let ((v0-1 1)) - (set! (-> v1-3 prim-core offense) (the-as collide-offense v0-1)) - v0-1 - ) - ) - ) - ) + (let ((v0-1 1)) (set! (-> v1-3 prim-core offense) (the-as collide-offense v0-1)) v0-1)))) (defstate nav-enemy-patrol (lurkercrab) :virtual #t :event nav-enemy-default-event-handler - :exit (behavior () - (lurkercrab-invulnerable) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - ) - :code (behavior () - (when (ja-group? lurkercrab-idle-ja) - (ja-no-eval :group! lurkercrab-idle-to-walk-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (ja-channel-push! 1 (seconds 0.075)) - (loop - (dotimes (gp-0 6) - (ja-no-eval :group! lurkercrab-walk-ja :num! (seek!) :frame-num 0.0) + :exit + (behavior () + (lurkercrab-invulnerable) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate))) + :code + (behavior () + (when (ja-group? lurkercrab-idle-ja) + (ja-no-eval :group! lurkercrab-idle-to-walk-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - (when (nav-enemy-rnd-go-idle? 0.2) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (nav-enemy-rnd-int-range 2 6) - (until (not (nav-enemy-rnd-go-idle? 0.2)) - (ja :group! lurkercrab-idle-ja :num! (identity (ja-aframe 1.0 0))) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 2)) - (suspend) - ) - ) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (ja-no-eval :group! lurkercrab-idle-to-walk-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!)))) + (ja-channel-push! 1 (seconds 0.075)) + (loop + (dotimes (gp-0 6) + (ja-no-eval :group! lurkercrab-walk-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (when (nav-enemy-rnd-go-idle? 0.2) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.6)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (nav-enemy-rnd-int-range 2 6) + (until (not (nav-enemy-rnd-go-idle? 0.2)) + (ja :group! lurkercrab-idle-ja :num! (identity (ja-aframe 1.0 0))) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 2)) (suspend)))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (ja-no-eval :group! lurkercrab-idle-to-walk-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 30.0 0)) :frame-num (ja-aframe 1.0 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 30.0 0)) :frame-num (ja-aframe 1.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 30.0 0))) - ) - (lurkercrab-vulnerable) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) - (dotimes (gp-5 2) - (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 30.0 0)) + (ja :num! (seek! (ja-aframe 30.0 0)))) + (lurkercrab-vulnerable) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) + (dotimes (gp-5 2) + (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 30.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 60.0 0))))) + (lurkercrab-invulnerable) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) + (ja-no-eval :group! lurkercrab-peek-to-walk-ja :num! (seek! (ja-aframe 90.0 0)) :frame-num (ja-aframe 60.0 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe 60.0 0))) - ) - ) - (lurkercrab-invulnerable) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) - (ja-no-eval :group! lurkercrab-peek-to-walk-ja :num! (seek! (ja-aframe 90.0 0)) :frame-num (ja-aframe 60.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 90.0 0))) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 90.0 0))))))) (defstate nav-enemy-notice (lurkercrab) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-chase))) (defstate nav-enemy-chase (lurkercrab) :virtual #t :event nav-enemy-default-event-handler - :exit (behavior () - (lurkercrab-invulnerable) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) - ) - :trans (behavior () - (if (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - (go-virtual nav-enemy-victory) - ) - (if (< (ja-aframe-num 0) 2.0) - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - ) - ) - :code (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (ja-channel-push! 1 (seconds 0.075)) - (loop - (ja-no-eval :group! lurkercrab-walk-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (lurkercrab-vulnerable) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) - (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 30.0 0)) :frame-num (ja-aframe 1.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 30.0 0))) - ) - (ja-no-eval :group! lurkercrab-snip-ja :num! (seek! (ja-aframe 120.0 0)) :frame-num (ja-aframe 30.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 120.0 0))) - ) - (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 30.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 60.0 0))) - ) - (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 30.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 60.0 0))) - ) + :exit + (behavior () (lurkercrab-invulnerable) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) - (ja-no-eval :group! lurkercrab-peek-to-walk-ja :num! (seek! (ja-aframe 90.0 0)) :frame-num (ja-aframe 60.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 90.0 0))) - ) - (ja-no-eval :group! lurkercrab-walk-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! lurkercrab-walk-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6))) + :trans + (behavior () + (if (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)) + (go-virtual nav-enemy-victory)) + (if (< (ja-aframe-num 0) 2.0) ((-> (method-of-type nav-enemy nav-enemy-chase) trans)))) + :code + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (ja-channel-push! 1 (seconds 0.075)) + (loop + (ja-no-eval :group! lurkercrab-walk-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (lurkercrab-vulnerable) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) + (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 30.0 0)) :frame-num (ja-aframe 1.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 30.0 0)))) + (ja-no-eval :group! lurkercrab-snip-ja :num! (seek! (ja-aframe 120.0 0)) :frame-num (ja-aframe 30.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 120.0 0)))) + (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 30.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 60.0 0)))) + (ja-no-eval :group! lurkercrab-peek-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 30.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 60.0 0)))) + (lurkercrab-invulnerable) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) + (ja-no-eval :group! lurkercrab-peek-to-walk-ja :num! (seek! (ja-aframe 90.0 0)) :frame-num (ja-aframe 60.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 90.0 0)))) + (ja-no-eval :group! lurkercrab-walk-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! lurkercrab-walk-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) (defstate nav-enemy-stop-chase (lurkercrab) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-stare (lurkercrab) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-victory (lurkercrab) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (ja-channel-push! 1 (seconds 0.075)) - (ja :group! (-> self draw art-group data (-> self nav-info victory-anim))) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (set-time! (-> self state-time)) + (ja-channel-push! 1 (seconds 0.075)) + (ja :group! (-> self draw art-group data (-> self nav-info victory-anim))) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)) + (go-virtual nav-enemy-patrol))) (defstate lurkercrab-pushed (lurkercrab) :event nav-enemy-default-event-handler - :exit (behavior () - (set! (-> self orient) #t) - ) - :code (behavior () - (set! (-> self momentum-speed) 57344.0) - (set! (-> self target-speed) 0.0) - (set! (-> self orient) #f) - (ja-no-eval :group! lurkercrab-kickback-ja :num! (seek! (ja-aframe 18.0 0) 0.75) :frame-num (ja-aframe 1.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 18.0 0) 0.75)) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.25)) - (suspend) - ) - ) - (let ((gp-3 (current-time))) - (until (time-elapsed? gp-3 (seconds 0.1)) + :exit + (behavior () + (set! (-> self orient) #t)) + :code + (behavior () + (set! (-> self momentum-speed) 57344.0) + (set! (-> self target-speed) 0.0) + (set! (-> self orient) #f) + (ja-no-eval :group! lurkercrab-kickback-ja :num! (seek! (ja-aframe 18.0 0) 0.75) :frame-num (ja-aframe 1.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post (behavior () - (let ((a0-0 (-> self part)) - (a1-0 (-> self collide-info root-prim prim-core)) - ) - (spawn a0-0 (the-as vector a1-0)) - ) - (nav-enemy-travel-post) - ) - ) + (ja :num! (seek! (ja-aframe 18.0 0) 0.75))) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.25)) (suspend))) + (let ((gp-3 (current-time))) (until (time-elapsed? gp-3 (seconds 0.1)) (suspend))) + (go-virtual nav-enemy-chase)) + :post + (behavior () + (let ((a0-0 (-> self part)) + (a1-0 (-> self collide-info root-prim prim-core))) + (spawn a0-0 (the-as vector a1-0))) + (nav-enemy-travel-post))) -(define *lurkercrab-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 4 - :walk-anim 6 - :turn-anim -1 - :notice-anim 4 - :run-anim 6 - :jump-anim 6 - :jump-land-anim 6 - :victory-anim 4 - :taunt-anim 4 - :die-anim 11 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 5) - :run-rotate-speed (degrees 999.99994) - :run-acceleration (meters 12) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 2) - :walk-rotate-speed (degrees 999.99994) - :walk-acceleration (meters 12) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 1.2) - :attack-shove-up (meters 1.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 25) - :stop-chase-distance (meters 35) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 4.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #t - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *lurkercrab-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 4 + :walk-anim 6 + :turn-anim -1 + :notice-anim 4 + :run-anim 6 + :jump-anim 6 + :jump-land-anim 6 + :victory-anim 4 + :taunt-anim 4 + :die-anim 11 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 5) + :run-rotate-speed (degrees 999.99994) + :run-acceleration (meters 12) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 2) + :walk-rotate-speed (degrees 999.99994) + :walk-acceleration (meters 12) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 1.2) + :attack-shove-up (meters 1.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 25) + :stop-chase-distance (meters 35) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 4.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #t + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this lurkercrab) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -544,29 +406,24 @@ nav-enemy-default-event-handler (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 4096.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-1 transform-index) 16) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 1638.4) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-2 transform-index) 21) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 1638.4) - (append-prim s3-0 s2-2) - ) - ) + (append-prim s3-0 s2-2))) (set! (-> s4-0 nav-radius) 4096.0) (backup-collide-with-as s4-0) - (set! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lurkercrab-sg* '()) (init-defaults! this *lurkercrab-nav-enemy-info*) @@ -577,5 +434,4 @@ nav-enemy-default-event-handler (set! (-> this momentum-speed) 0.0) (set! (-> this draw force-lod) 2) (go (method-of-object this nav-enemy-idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/beach/lurkerpuppy.gc b/goal_src/jak1/levels/beach/lurkerpuppy.gc index 02fdf38f95..334f1e44c9 100644 --- a/goal_src/jak1/levels/beach/lurkerpuppy.gc +++ b/goal_src/jak1/levels/beach/lurkerpuppy.gc @@ -1,261 +1,213 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: lurkerpuppy.gc -;; name in dgo: lurkerpuppy -;; dgos: BEA, L1 - ;; DECOMP BEGINS -(deftype lurkerpuppy (nav-enemy) - () - ) +(deftype lurkerpuppy (nav-enemy) ()) - -(defskelgroup *lurkerpuppy-sg* lurkerpuppy lurkerpuppy-lod0-jg lurkerpuppy-idle-ja - ((lurkerpuppy-lod0-mg (meters 20)) (lurkerpuppy-lod1-mg (meters 40)) (lurkerpuppy-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - :shadow lurkerpuppy-shadow-mg - ) +(defskelgroup *lurkerpuppy-sg* + lurkerpuppy + lurkerpuppy-lod0-jg + lurkerpuppy-idle-ja + ((lurkerpuppy-lod0-mg (meters 20)) (lurkerpuppy-lod1-mg (meters 40)) (lurkerpuppy-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :shadow lurkerpuppy-shadow-mg) nav-enemy-default-event-handler (defstate nav-enemy-notice (lurkerpuppy) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.17)) - (ja-no-eval :group! lurkerpuppy-celebrate-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.17)) + (ja-no-eval :group! lurkerpuppy-celebrate-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-chase))) (defstate nav-enemy-chase (lurkerpuppy) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (cond - ((ja-group? lurkerpuppy-jump-land-ja) - (ja-channel-push! 1 (seconds 0.17)) - (ja-no-eval :group! lurkerpuppy-run-ja :num! (seek!) :frame-num (ja-aframe 4.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.17)) - ) - ) - (let ((f30-0 (rand-vu-float-range 0.9 1.1))) - (loop - (if (rand-vu-percent? 0.25) - (sound-play "puppy-bark") - ) - (ja-no-eval :group! lurkerpuppy-run-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (go-virtual nav-enemy-attack) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) + :code + (behavior () + (cond + ((ja-group? lurkerpuppy-jump-land-ja) + (ja-channel-push! 1 (seconds 0.17)) + (ja-no-eval :group! lurkerpuppy-run-ja :num! (seek!) :frame-num (ja-aframe 4.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else (ja-channel-push! 1 (seconds 0.17)))) + (let ((f30-0 (rand-vu-float-range 0.9 1.1))) + (loop + (if (rand-vu-percent? 0.25) (sound-play "puppy-bark")) + (ja-no-eval :group! lurkerpuppy-run-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) (go-virtual nav-enemy-attack)) + (suspend) + (ja :num! (seek! max f30-0))))))) (defstate nav-enemy-stare (lurkerpuppy) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (set! (-> self rotate-speed) 1456355.5) - (set! (-> self turn-time) (seconds 0.1)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (let ((f30-0 (rand-vu-float-range 0.8 1.2))) - (loop - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! lurkerpuppy-celebrate-ja :num! (seek! (ja-aframe 12.0 0) f30-0) :frame-num 0.0) - (until (ja-done? 0) - (let ((f0-3 (ja-aframe-num 0))) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (if (and (>= f0-3 2.5) (>= 7.5 f0-3)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - ) - (suspend) - (ja :num! (seek! (ja-aframe 12.0 0) f30-0)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! lurkerpuppy-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((gp-2 (rand-vu-int-range 750 900)) - (s5-0 (current-time)) - ) - (until (time-elapsed? s5-0 gp-2) - (ja :num! (loop!)) - (ja-blend-eval) + :code + (behavior () + (set! (-> self rotate-speed) 1456355.5) + (set! (-> self turn-time) (seconds 0.1)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (let ((f30-0 (rand-vu-float-range 0.8 1.2))) + (loop + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! lurkerpuppy-celebrate-ja :num! (seek! (ja-aframe 12.0 0) f30-0) :frame-num 0.0) + (until (ja-done? 0) + (let ((f0-3 (ja-aframe-num 0))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (if (and (>= f0-3 2.5) (>= 7.5 f0-3)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)))) (suspend) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 12.0 0) f30-0))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! lurkerpuppy-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((gp-2 (rand-vu-int-range 750 900)) + (s5-0 (current-time))) + (until (time-elapsed? s5-0 gp-2) + (ja :num! (loop!)) + (ja-blend-eval) + (suspend))))))) (defstate nav-enemy-give-up (lurkerpuppy) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (set! (-> self rotate-speed) 218453.33) - (set! (-> self turn-time) (seconds 0.5)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! lurkerpuppy-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! lurkerpuppy-idle-ja :num! (seek! max 1.4) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek! max 1.4)) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (set! (-> self rotate-speed) 218453.33) + (set! (-> self turn-time) (seconds 0.5)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! lurkerpuppy-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! lurkerpuppy-idle-ja :num! (seek! max 1.4) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek! max 1.4))) + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-attack (lurkerpuppy) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (sound-play "head-butt") - (go-virtual nav-enemy-victory) - ) - ) + :code + (behavior () + (sound-play "head-butt") + (go-virtual nav-enemy-victory))) (defstate nav-enemy-victory (lurkerpuppy) :virtual #t :event nav-enemy-default-event-handler - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - :code (behavior () - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-channel-push! 1 (seconds 0.075)) - (dotimes (gp-0 4) - (ja-no-eval :group! lurkerpuppy-celebrate-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((f0-4 (ja-aframe-num 0))) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (if (and (>= f0-4 2.5) (>= 7.5 f0-4)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-face-player-post - ) - -(define *lurkerpuppy-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 6 - :turn-anim 6 - :notice-anim 8 - :run-anim 7 - :jump-anim 9 - :jump-land-anim 10 - :victory-anim 8 - :taunt-anim 8 - :die-anim 11 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 5) - :run-rotate-speed (degrees 3999.9998) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.15) - :walk-travel-speed (meters 2) - :walk-rotate-speed (degrees 1999.9999) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 6.0 - :jump-anim-start-frame 3.5 - :jump-land-anim-end-frame 14.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.5) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))) + :code + (behavior () + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-channel-push! 1 (seconds 0.075)) + (dotimes (gp-0 4) + (ja-no-eval :group! lurkerpuppy-celebrate-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f0-4 (ja-aframe-num 0))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (if (and (>= f0-4 2.5) (>= 7.5 f0-4)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)))) + (suspend) + (ja :num! (seek!)))) + (go-virtual nav-enemy-chase)) + :post nav-enemy-face-player-post) + +(define *lurkerpuppy-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 6 + :turn-anim 6 + :notice-anim 8 + :run-anim 7 + :jump-anim 9 + :jump-land-anim 10 + :victory-anim 8 + :taunt-anim 8 + :die-anim 11 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 5) + :run-rotate-speed (degrees 3999.9998) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.15) + :walk-travel-speed (meters 2) + :walk-rotate-speed (degrees 1999.9999) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 6.0 + :jump-anim-start-frame 3.5 + :jump-land-anim-end-frame 14.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.5) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod initialize-collision ((this lurkerpuppy)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) 2048.0) (backup-collide-with-as s5-0) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this lurkerpuppy)) (initialize-skeleton this *lurkerpuppy-sg* '()) @@ -263,8 +215,6 @@ nav-enemy-default-event-handler (when (nonzero? (-> this neck)) (set! (-> this neck up) (the-as uint 0)) (set! (-> this neck nose) (the-as uint 1)) - (set! (-> this neck ear) (the-as uint 2)) - ) + (set! (-> this neck ear) (the-as uint 2))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/beach/lurkerworm.gc b/goal_src/jak1/levels/beach/lurkerworm.gc index 7a3625aca9..d00dae47b3 100644 --- a/goal_src/jak1/levels/beach/lurkerworm.gc +++ b/goal_src/jak1/levels/beach/lurkerworm.gc @@ -1,205 +1,180 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/nav-enemy.gc") (require "levels/beach/twister.gc") -;; name: lurkerworm.gc -;; name in dgo: lurkerworm -;; dgos: BEA, L1 - ;; DECOMP BEGINS (deftype lurkerworm (process-drawable) - ((root collide-shape-moving :override) - (twister twister) - (head-tilt float) - (strike-count int32) - (angle float) - (vulnerable symbol) - (part2 sparticle-launch-control) - ) + ((root collide-shape-moving :override) + (twister twister) + (head-tilt float) + (strike-count int32) + (angle float) + (vulnerable symbol) + (part2 sparticle-launch-control)) (:methods - (lurkerworm-method-20 (_type_) none) - (particle-effect (_type_) none) - ) + (lurkerworm-method-20 (_type_) none) + (particle-effect (_type_) none)) (:states - lurkerworm-die - lurkerworm-idle - lurkerworm-rest - lurkerworm-rise - lurkerworm-sink - lurkerworm-spot - lurkerworm-strike - ) - ) - + lurkerworm-die + lurkerworm-idle + lurkerworm-rest + lurkerworm-rise + lurkerworm-sink + lurkerworm-spot + lurkerworm-strike)) (defmethod relocate ((this lurkerworm) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this twister)) - (&+! (-> this twister) arg0) - ) - (the-as lurkerworm ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this twister)) (&+! (-> this twister) arg0)) + (the-as lurkerworm ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this lurkerworm)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) -(defskelgroup *lurkerworm-sg* lurkerworm lurkerworm-lod0-jg lurkerworm-idle-ja - ((lurkerworm-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 6.5) - :longest-edge (meters 1.5) - ) +(defskelgroup *lurkerworm-sg* + lurkerworm + lurkerworm-lod0-jg + lurkerworm-idle-ja + ((lurkerworm-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 6.5) + :longest-edge (meters 1.5)) (defpartgroup group-beach-sandworm :id 157 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 656 :fade-after (meters 90) :period (seconds 3) :length (seconds 1)) - (sp-item 657 :fade-after (meters 100) :period (seconds 3) :length (seconds 1.3)) - (sp-item 658 :fade-after (meters 150) :period (seconds 3) :length (seconds 1.4) :offset 120) - (sp-item 659 :fade-after (meters 60) :period (seconds 3) :length (seconds 1.4) :offset 120) - ) - ) + :parts + ((sp-item 656 :fade-after (meters 90) :period (seconds 3) :length (seconds 1)) + (sp-item 657 :fade-after (meters 100) :period (seconds 3) :length (seconds 1.3)) + (sp-item 658 :fade-after (meters 150) :period (seconds 3) :length (seconds 1.4) :offset 120) + (sp-item 659 :fade-after (meters 60) :period (seconds 3) :length (seconds 1.4) :offset 120))) (defpartgroup group-beach-sandworm-norocks :id 158 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 656 :fade-after (meters 90) :period (seconds 3) :length (seconds 1)) - (sp-item 658 :fade-after (meters 150) :period (seconds 3) :length (seconds 1.4) :offset 120) - (sp-item 659 :fade-after (meters 60) :period (seconds 3) :length (seconds 1.4) :offset 120) - ) - ) + :parts + ((sp-item 656 :fade-after (meters 90) :period (seconds 3) :length (seconds 1)) + (sp-item 658 :fade-after (meters 150) :period (seconds 3) :length (seconds 1.4) :offset 120) + (sp-item 659 :fade-after (meters 60) :period (seconds 3) :length (seconds 1.4) :offset 120))) (defpart 656 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 4.0) - (:x (meters 3) (meters 5)) - (:y (meters 1)) - (:scale-x (meters 1) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 130.0 20.0) - (:g 90.0 20.0) - (:b 50.0 8.0) - (:a 0.0) - (:vel-x (meters -0.02)) - (:vel-y (meters -0.0033333334)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 660) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 4.0) + (:x (meters 3) (meters 5)) + (:y (meters 1)) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 130.0 20.0) + (:g 90.0 20.0) + (:b 50.0 8.0) + (:a 0.0) + (:vel-x (meters -0.02)) + (:vel-y (meters -0.0033333334)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 660) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 660 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpart 658 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.4) - (:x (meters 0) (meters 1)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 90.0 60.0) - (:g 90.0 10.0) - (:b 50.0 8.0) - (:a 0.0) - (:vel-x (meters 0.0033333334) (meters 0.0033333334)) - (:vel-y (meters 0.026666667)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:fade-a 0.32) - (:accel-y (meters -0.001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.4) + (:x (meters 0) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 90.0 60.0) + (:g 90.0 10.0) + (:b 50.0 8.0) + (:a 0.0) + (:vel-x (meters 0.0033333334) (meters 0.0033333334)) + (:vel-y (meters 0.026666667)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a 0.32) + (:accel-y (meters -0.001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 659 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.6) - (:x (meters 0) (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 45.0 30.0) - (:g 45.0 5.0) - (:b 25.0 4.0) - (:a 0.0) - (:vel-x (meters 0.0033333334) (meters 0.0033333334)) - (:vel-y (meters 0.026666667)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:fade-a 0.42666668) - (:accel-y (meters -0.001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.6) + (:x (meters 0) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 45.0 30.0) + (:g 45.0 5.0) + (:b 25.0 4.0) + (:a 0.0) + (:vel-x (meters 0.0033333334) (meters 0.0033333334)) + (:vel-y (meters 0.026666667)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a 0.42666668) + (:accel-y (meters -0.001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 657 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 1)) - (:scale-x (meters 0.05) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 75.0 45.0) - (:g 75.0 10.0) - (:b 40.0 6.0) - (:a 96.0) - (:vel-x (meters 0.0033333334) (meters 0.0033333334)) - (:vel-y (meters 0.013333334) (meters 0.026666667)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:accel-y (meters -0.001)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 1)) + (:scale-x (meters 0.05) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 75.0 45.0) + (:g 75.0 10.0) + (:b 40.0 6.0) + (:a 96.0) + (:vel-x (meters 0.0033333334) (meters 0.0033333334)) + (:vel-y (meters 0.013333334) (meters 0.026666667)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:accel-y (meters -0.001)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 661 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1) - (:x (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 90.0 60.0) - (:g 90.0 10.0) - (:b 50.0 8.0) - (:a 0.0) - (:vel-x (meters 0.0033333334) (meters 0.00083333335)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:fade-a 0.21333334) - (:accel-y (meters -0.00013333333)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.5)) - (:next-launcher 662) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1) + (:x (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 90.0 60.0) + (:g 90.0 10.0) + (:b 50.0 8.0) + (:a 0.0) + (:vel-x (meters 0.0033333334) (meters 0.00083333335)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a 0.21333334) + (:accel-y (meters -0.00013333333)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.5)) + (:next-launcher 662))) (defpart 662 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defmethod lurkerworm-method-20 ((this lurkerworm)) (let ((s5-0 (new 'stack-no-clear 'vector))) @@ -207,77 +182,53 @@ (set-target! (-> this twister) (atan (-> s5-0 x) (-> s5-0 z))) (twister-method-11 (-> this 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)) - ) - (seek! (-> this head-tilt) f0-6 (* 5461.3335 (seconds-per-frame))) - ) - ) + (f0-6 (atan (-> s5-0 y) f0-5))) + (seek! (-> this head-tilt) f0-6 (* 5461.3335 (seconds-per-frame))))) (set! (-> this head-tilt) (fmin 8192.0 (fmax -5461.3335 (-> this head-tilt)))) 0 - (none) - ) + (none)) (defbehavior lurkerworm-prebind-function lurkerworm ((arg0 pointer) (arg1 int) (arg2 lurkerworm)) (let ((v1-0 arg2) (s5-0 (new 'stack-no-clear 'quaternion)) - (gp-0 (&+ arg0 432)) - ) + (gp-0 (&+ arg0 432))) (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*! (the-as quaternion gp-0) (the-as quaternion gp-0) s5-0)) 0 - (none) - ) + (none)) (defun lurkerworm-joint-callback ((arg0 lurkerworm)) - (let ((a1-0 arg0)) - (twister-method-12 (-> a1-0 twister) a1-0) - ) + (let ((a1-0 arg0)) (twister-method-12 (-> a1-0 twister) a1-0)) 0 - (none) - ) + (none)) (defmethod particle-effect ((this lurkerworm)) (let ((a2-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 5)))) - (launch-particles (-> *part-id-table* 661) a2-0) - ) + (launch-particles (-> *part-id-table* 661) a2-0)) (let ((a2-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 6)))) - (launch-particles (-> *part-id-table* 661) a2-1) - ) + (launch-particles (-> *part-id-table* 661) a2-1)) (let ((a2-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 7)))) - (launch-particles (-> *part-id-table* 661) a2-2) - ) + (launch-particles (-> *part-id-table* 661) a2-2)) (let ((a2-3 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 8)))) - (launch-particles (-> *part-id-table* 661) a2-3) - ) + (launch-particles (-> *part-id-table* 661) a2-3)) 0 - (none) - ) + (none)) (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) - ) + (('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) - (the-as uint 1) - ) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) - ) - ) - ) + (the-as uint 1)) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)))))) (defbehavior lurkerworm-default-post-behavior lurkerworm () (lurkerworm-method-20 self) (transform-post) 0 - (none) - ) + (none)) lurkerworm-default-event-handler @@ -285,192 +236,148 @@ lurkerworm-default-post-behavior (defstate lurkerworm-idle (lurkerworm) :event lurkerworm-default-event-handler - :enter (behavior () - (ja-channel-set! 0) - (set-time! (-> self state-time)) - ) - :code (behavior () - (loop - (if (and (time-elapsed? (-> self state-time) (seconds 1)) - *target* - (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go lurkerworm-spot) - ) - (suspend) - ) - ) - :post lurkerworm-default-post-behavior - ) + :enter + (behavior () + (ja-channel-set! 0) + (set-time! (-> self state-time))) + :code + (behavior () + (loop + (if (and (time-elapsed? (-> self state-time) (seconds 1)) + *target* + (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go lurkerworm-spot)) + (suspend))) + :post lurkerworm-default-post-behavior) (defstate lurkerworm-spot (lurkerworm) :event lurkerworm-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (sound-play "worm-rise1") - ) - :code (behavior () - (set! (-> self part local-clock) 0) - (loop - (spawn (-> self part) (-> self root trans)) - (particle-effect self) - (when (time-elapsed? (-> self state-time) (seconds 1)) - (if (and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (sound-play "worm-rise1")) + :code + (behavior () + (set! (-> self part local-clock) 0) + (loop + (spawn (-> self part) (-> self root trans)) + (particle-effect self) + (when (time-elapsed? (-> self state-time) (seconds 1)) + (if (and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) (go lurkerworm-rise) - (go lurkerworm-idle) - ) - ) - (suspend) - ) - ) - :post lurkerworm-default-post-behavior - ) + (go lurkerworm-idle))) + (suspend))) + :post lurkerworm-default-post-behavior) (defstate lurkerworm-rise (lurkerworm) :event lurkerworm-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :code (behavior () - (ja-channel-set! 1) - (ja-no-eval :group! lurkerworm-rise-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spawn (-> self part) (-> self root trans)) - (particle-effect self) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self strike-count) 3) - (go lurkerworm-rest) - ) - :post lurkerworm-default-post-behavior - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :code + (behavior () + (ja-channel-set! 1) + (ja-no-eval :group! lurkerworm-rise-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (-> self root trans)) + (particle-effect self) + (suspend) + (ja :num! (seek!))) + (set! (-> self strike-count) 3) + (go lurkerworm-rest)) + :post lurkerworm-default-post-behavior) (defstate lurkerworm-rest (lurkerworm) :event lurkerworm-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self vulnerable) #t) - ) - :exit (behavior () - (set! (-> self vulnerable) #f) - ) - :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) - ) - (ja-no-eval :group! lurkerworm-idle-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self vulnerable) #t)) + :exit + (behavior () + (set! (-> self vulnerable) #f)) + :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)) + (ja-no-eval :group! lurkerworm-idle-ja :num! (seek!) :frame-num 0.0) + (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 trans) (-> *target* control trans)) 4096000.0))))) + (f30-2 (* 0.2 f0-13))) + (if (< (rand-float-gen) f30-2) (go lurkerworm-strike)))) + (+! s5-0 -1) + (when (zero? s5-0) + (if gp-1 (go lurkerworm-strike) (go lurkerworm-sink))) + (suspend) + (ja :num! (seek!))) + (if gp-1 (go lurkerworm-strike) (go lurkerworm-sink)))) + :post lurkerworm-default-post-behavior) + +(defstate lurkerworm-strike (lurkerworm) + :event lurkerworm-default-event-handler + :code + (behavior () + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.135)) + (ja-no-eval :group! lurkerworm-chomp-ja :num! (seek! (ja-aframe 13.0 0)) :frame-num 0.0) (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 trans) (-> *target* control trans)) - 4096000.0 - ) - ) - ) - ) - ) - (f30-2 (* 0.2 f0-13)) - ) - (if (< (rand-float-gen) f30-2) - (go lurkerworm-strike) - ) - ) - ) - (+! s5-0 -1) - (when (zero? s5-0) - (if gp-1 - (go lurkerworm-strike) - (go lurkerworm-sink) - ) - ) (suspend) - (ja :num! (seek!)) - ) - (if gp-1 - (go lurkerworm-strike) - (go lurkerworm-sink) - ) - ) - ) - :post lurkerworm-default-post-behavior - ) - -(defstate lurkerworm-strike (lurkerworm) - :event lurkerworm-default-event-handler - :code (behavior () - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.135)) - (ja-no-eval :group! lurkerworm-chomp-ja :num! (seek! (ja-aframe 13.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (particle-effect self) - (suspend) - (ja :num! (seek! (ja-aframe 13.0 0))) - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.135)) - (go lurkerworm-rest) - ) - :post lurkerworm-default-post-behavior - ) + (ja :num! (seek! (ja-aframe 13.0 0)))) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.135)) + (go lurkerworm-rest)) + :post lurkerworm-default-post-behavior) (defstate lurkerworm-sink (lurkerworm) :event lurkerworm-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :code (behavior () - (ja-no-eval :group! lurkerworm-sink-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spawn (-> self part2) (-> self root trans)) - (particle-effect self) - (suspend) - (ja :num! (seek!)) - ) - (go lurkerworm-idle) - ) - :post lurkerworm-default-post-behavior - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :code + (behavior () + (ja-no-eval :group! lurkerworm-sink-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part2) (-> self root trans)) + (particle-effect self) + (suspend) + (ja :num! (seek!))) + (go lurkerworm-idle)) + :post lurkerworm-default-post-behavior) (defstate lurkerworm-die (lurkerworm) :event process-drawable-death-event-handler - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((v1-3 (-> self root root-prim))) - (set! (-> v1-3 collide-with) (collide-kind)) - (set! (-> v1-3 prim-core collide-as) (collide-kind)) - ) - 0 - (ja-no-eval :group! lurkerworm-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - ) - :post lurkerworm-default-post-behavior - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((v1-3 (-> self root root-prim))) + (set! (-> v1-3 collide-with) (collide-kind)) + (set! (-> v1-3 prim-core collide-as) (collide-kind))) + 0 + (ja-no-eval :group! lurkerworm-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self)) + :post lurkerworm-default-post-behavior) (defmethod init-from-entity! ((this lurkerworm) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -484,8 +391,7 @@ lurkerworm-default-post-behavior (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -493,8 +399,7 @@ lurkerworm-default-post-behavior (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -502,8 +407,7 @@ lurkerworm-default-post-behavior (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-2) - ) + (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) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -511,8 +415,7 @@ lurkerworm-default-post-behavior (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-3) - ) + (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) (collide-kind enemy)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -520,26 +423,20 @@ lurkerworm-default-post-behavior (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-4) - ) + (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) (collide-kind enemy)) (set! (-> s2-5 collide-with) (collide-kind target)) (set! (-> s2-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-5 transform-index) 11) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-5) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lurkerworm-sg* '()) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this angle) 0.0) (set! (-> this vulnerable) #f) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 157) this)) @@ -552,5 +449,4 @@ lurkerworm-default-post-behavior (set! (-> this root nav-radius) 12288.0) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (go lurkerworm-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/beach/mayor.gc b/goal_src/jak1/levels/beach/mayor.gc index 432d737d7b..0a46c30b57 100644 --- a/goal_src/jak1/levels/beach/mayor.gc +++ b/goal_src/jak1/levels/beach/mayor.gc @@ -1,79 +1,56 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: mayor.gc -;; name in dgo: mayor -;; dgos: BEA, L1 - ;; DECOMP BEGINS -(deftype mayor (process-taskable) - () - ) +(deftype mayor (process-taskable) ()) - -(defskelgroup *mayor-sg* mayor mayor-lod0-jg mayor-idle-ja - ((mayor-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow mayor-shadow-mg - ) +(defskelgroup *mayor-sg* + mayor + mayor-lod0-jg + mayor-idle-ja + ((mayor-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow mayor-shadow-mg) (defmethod process-taskable-method-52 ((this mayor)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0)))) 0 - (set! (-> v1-1 settings top-plane w) (- (+ 2048.0 f0-0))) - ) - 0 - ) - ) - (none) - ) + (set! (-> v1-1 settings top-plane w) (- (+ 2048.0 f0-0)))) + 0)) + (none)) (defmethod draw-npc-shadow ((this mayor)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (set! (-> v1-14 settings flags) (the-as shadow-flags (logior (the-as int (-> v1-14 settings flags)) 32))) - ) - 0 - ) - ) - (none) - ) + (let ((v1-14 (-> this draw shadow-ctrl))) + (set! (-> v1-14 settings flags) (the-as shadow-flags (logior (the-as int (-> v1-14 settings flags)) 32)))) + 0)) + (none)) (defun mayor-lurkerm-reward-speech ((arg0 mayor) (arg1 symbol)) (when arg1 (set! (-> arg0 cell-for-task) (game-task jungle-lurkerm)) (close-specific-task! (game-task jungle-lurkerm) (task-status need-reward-speech)) - (first-any (-> arg0 tasks) #t) - ) + (first-any (-> arg0 tasks) #t)) ;; og:preserve-this PAL patch here - (new 'static 'spool-anim - :name "mayor-resolution-beams" - :index 7 - :parts 6 - :command-list '((0 setting-unset ambient-volume)) - ) - ) + (new 'static + 'spool-anim + :name "mayor-resolution-beams" + :index 7 + :parts 6 + :command-list + '((0 setting-unset ambient-volume)))) (defmethod play-anim! ((this mayor) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) @@ -81,571 +58,536 @@ (((task-status need-hint) (task-status need-introduction)) (when arg0 (close-specific-task! (game-task jungle-lurkerm) (task-status need-introduction)) - (close-specific-task! (game-task village1-mayor-money) (task-status need-introduction)) - ) + (close-specific-task! (game-task village1-mayor-money) (task-status need-introduction))) (cond ((closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reminder)) - (mayor-lurkerm-reward-speech this arg0) - ) + (mayor-lurkerm-reward-speech this arg0)) (else - (new 'static 'spool-anim :name "mayor-introduction" :index 4 :parts 16 :command-list '()) - (new 'static 'spool-anim - :name "mayor-introduction" - :index 4 - :parts 16 - :command-list '((0 kill "villagea-part-65") - (0 kill "villagea-part-70") - (0 kill "med-res-level-2") - (0 kill "med-res-level-3") - (0 kill "med-res-level-4") - (0 kill "med-res-level-6") - (0 kill "med-res-level-7") - (0 kill "med-res-level-8") - (0 kill "med-res-level-11") - (0 kill "med-res-level-14") - (0 kill "fishermans-boat-2") - (0 kill "windspinner-9") - (0 kill "sagesail-6") - (0 kill "sharkey-12") - (0 kill "windmill-sail-4") - (0 kill "water-vol-7") - (0 kill "windspinner-8") - (0 kill "villagea-part-32") - (0 kill "water-vol-10") - (0 kill "ropebridge-4") - (0 kill "ropebridge-5") - (0 kill "reflector-end-1") - (0 kill "eco-10") - (0 kill "eco-11") - (0 kill "warp-gate-switch-3") - (0 kill "reflector-middle-2") - (0 kill "evilplant-2") - (0 kill "crate-3147") - (0 kill "villagea-water-2") - (0 kill "med-res-level-22") - (0 kill "med-res-level-23") - (0 kill "villagea-part-50") - (0 kill "water-vol-9") - (0 kill "crate-3144") - (0 kill "orb-cache-top-4") - (0 kill "village-cam-2") - (0 kill "villagea-part-18") - (0 kill "villagea-part-24") - (0 kill "money-2676") - (0 kill "villagea-part-64") - (0 kill "villagea-part-13") - (0 kill "villagea-part-17") - (0 kill "money-2689") - (0 kill "money-2690") - (0 kill "farmer-3") - (0 kill "villagea-part-26") - (0 kill "money-2692") - (0 kill "villagea-part-37") - (0 kill "villagea-part-38") - (0 kill "villagea-part-64") - (0 kill "crate-3142") - (0 kill "crate-3143") - (0 kill "money-2688") - (0 kill "villagea-part-14") - (0 kill "money-2691") - (0 kill "villagea-part-62") - (0 kill "villagea-part-63") - (0 kill "sharkey-1") - (0 kill "eco-82") - (0 kill "eco-83") - (0 kill "crate-2470") - (0 kill "villagea-part-3") - (0 kill "villagea-part-15") - (0 kill "villagea-part-22") - (0 kill "villagea-part-28") - (0 kill "explorer-4") - (0 kill "oracle-1") - (0 kill "crate-3141") - (0 kill "crate-3145") - (0 kill "water-vol-8") - (0 kill "water-vol-63") - (0 kill "lrocklrg-1") - (0 kill "crate-2469") - (0 kill "villagea-part-69") - (0 display-level beach special) - (565 joint "cameraB") - (850 joint "camera") - (915 joint "cameraB") - ) - ) - ) - ) - ) + (new 'static 'spool-anim :name "mayor-introduction" :index 4 :parts 16 :command-list '()) + (new 'static + 'spool-anim + :name "mayor-introduction" + :index 4 + :parts 16 + :command-list + '((0 kill "villagea-part-65") + (0 kill "villagea-part-70") + (0 kill "med-res-level-2") + (0 kill "med-res-level-3") + (0 kill "med-res-level-4") + (0 kill "med-res-level-6") + (0 kill "med-res-level-7") + (0 kill "med-res-level-8") + (0 kill "med-res-level-11") + (0 kill "med-res-level-14") + (0 kill "fishermans-boat-2") + (0 kill "windspinner-9") + (0 kill "sagesail-6") + (0 kill "sharkey-12") + (0 kill "windmill-sail-4") + (0 kill "water-vol-7") + (0 kill "windspinner-8") + (0 kill "villagea-part-32") + (0 kill "water-vol-10") + (0 kill "ropebridge-4") + (0 kill "ropebridge-5") + (0 kill "reflector-end-1") + (0 kill "eco-10") + (0 kill "eco-11") + (0 kill "warp-gate-switch-3") + (0 kill "reflector-middle-2") + (0 kill "evilplant-2") + (0 kill "crate-3147") + (0 kill "villagea-water-2") + (0 kill "med-res-level-22") + (0 kill "med-res-level-23") + (0 kill "villagea-part-50") + (0 kill "water-vol-9") + (0 kill "crate-3144") + (0 kill "orb-cache-top-4") + (0 kill "village-cam-2") + (0 kill "villagea-part-18") + (0 kill "villagea-part-24") + (0 kill "money-2676") + (0 kill "villagea-part-64") + (0 kill "villagea-part-13") + (0 kill "villagea-part-17") + (0 kill "money-2689") + (0 kill "money-2690") + (0 kill "farmer-3") + (0 kill "villagea-part-26") + (0 kill "money-2692") + (0 kill "villagea-part-37") + (0 kill "villagea-part-38") + (0 kill "villagea-part-64") + (0 kill "crate-3142") + (0 kill "crate-3143") + (0 kill "money-2688") + (0 kill "villagea-part-14") + (0 kill "money-2691") + (0 kill "villagea-part-62") + (0 kill "villagea-part-63") + (0 kill "sharkey-1") + (0 kill "eco-82") + (0 kill "eco-83") + (0 kill "crate-2470") + (0 kill "villagea-part-3") + (0 kill "villagea-part-15") + (0 kill "villagea-part-22") + (0 kill "villagea-part-28") + (0 kill "explorer-4") + (0 kill "oracle-1") + (0 kill "crate-3141") + (0 kill "crate-3145") + (0 kill "water-vol-8") + (0 kill "water-vol-63") + (0 kill "lrocklrg-1") + (0 kill "crate-2469") + (0 kill "villagea-part-69") + (0 display-level beach special) + (565 joint "cameraB") + (850 joint "camera") + (915 joint "cameraB")))))) (((task-status need-reminder-a) (task-status need-reminder)) (set! (-> this skippable) #t) (cond ((closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reward-speech)) - (new 'static 'spool-anim - :name "mayor-reminder-donation" - :index 6 - :parts 3 - :command-list '((0 kill "villagea-part-65") - (0 kill "villagea-part-70") - (0 kill "med-res-level-2") - (0 kill "med-res-level-3") - (0 kill "med-res-level-4") - (0 kill "med-res-level-6") - (0 kill "med-res-level-7") - (0 kill "med-res-level-8") - (0 kill "med-res-level-11") - (0 kill "med-res-level-14") - (0 kill "fishermans-boat-2") - (0 kill "windspinner-9") - (0 kill "sagesail-6") - (0 kill "sharkey-12") - (0 kill "windmill-sail-4") - (0 kill "water-vol-7") - (0 kill "windspinner-8") - (0 kill "villagea-part-32") - (0 kill "water-vol-10") - (0 kill "ropebridge-4") - (0 kill "ropebridge-5") - (0 kill "reflector-end-1") - (0 kill "eco-10") - (0 kill "eco-11") - (0 kill "warp-gate-switch-3") - (0 kill "reflector-middle-2") - (0 kill "evilplant-2") - (0 kill "crate-3147") - (0 kill "villagea-water-2") - (0 kill "med-res-level-22") - (0 kill "med-res-level-23") - (0 kill "villagea-part-50") - (0 kill "water-vol-9") - (0 kill "crate-3144") - (0 kill "orb-cache-top-4") - (0 kill "village-cam-2") - (0 kill "villagea-part-18") - (0 kill "villagea-part-24") - (0 kill "money-2676") - (0 kill "villagea-part-64") - (0 kill "villagea-part-13") - (0 kill "villagea-part-17") - (0 kill "money-2689") - (0 kill "money-2690") - (0 kill "farmer-3") - (0 kill "villagea-part-26") - (0 kill "money-2692") - (0 kill "villagea-part-37") - (0 kill "villagea-part-38") - (0 kill "villagea-part-64") - (0 kill "crate-3142") - (0 kill "crate-3143") - (0 kill "money-2688") - (0 kill "villagea-part-14") - (0 kill "money-2691") - (0 kill "villagea-part-62") - (0 kill "villagea-part-63") - (0 kill "sharkey-1") - (0 kill "eco-82") - (0 kill "eco-83") - (0 kill "crate-2470") - (0 kill "villagea-part-3") - (0 kill "villagea-part-15") - (0 kill "villagea-part-22") - (0 kill "villagea-part-28") - (0 kill "explorer-4") - (0 kill "oracle-1") - (0 kill "crate-3141") - (0 kill "crate-3145") - (0 kill "water-vol-8") - (0 kill "water-vol-63") - (0 kill "lrocklrg-1") - (0 kill "crate-2469") - (0 kill "villagea-part-69") - (0 display-level beach special) - ) - ) - ) + (new 'static + 'spool-anim + :name "mayor-reminder-donation" + :index 6 + :parts 3 + :command-list + '((0 kill "villagea-part-65") + (0 kill "villagea-part-70") + (0 kill "med-res-level-2") + (0 kill "med-res-level-3") + (0 kill "med-res-level-4") + (0 kill "med-res-level-6") + (0 kill "med-res-level-7") + (0 kill "med-res-level-8") + (0 kill "med-res-level-11") + (0 kill "med-res-level-14") + (0 kill "fishermans-boat-2") + (0 kill "windspinner-9") + (0 kill "sagesail-6") + (0 kill "sharkey-12") + (0 kill "windmill-sail-4") + (0 kill "water-vol-7") + (0 kill "windspinner-8") + (0 kill "villagea-part-32") + (0 kill "water-vol-10") + (0 kill "ropebridge-4") + (0 kill "ropebridge-5") + (0 kill "reflector-end-1") + (0 kill "eco-10") + (0 kill "eco-11") + (0 kill "warp-gate-switch-3") + (0 kill "reflector-middle-2") + (0 kill "evilplant-2") + (0 kill "crate-3147") + (0 kill "villagea-water-2") + (0 kill "med-res-level-22") + (0 kill "med-res-level-23") + (0 kill "villagea-part-50") + (0 kill "water-vol-9") + (0 kill "crate-3144") + (0 kill "orb-cache-top-4") + (0 kill "village-cam-2") + (0 kill "villagea-part-18") + (0 kill "villagea-part-24") + (0 kill "money-2676") + (0 kill "villagea-part-64") + (0 kill "villagea-part-13") + (0 kill "villagea-part-17") + (0 kill "money-2689") + (0 kill "money-2690") + (0 kill "farmer-3") + (0 kill "villagea-part-26") + (0 kill "money-2692") + (0 kill "villagea-part-37") + (0 kill "villagea-part-38") + (0 kill "villagea-part-64") + (0 kill "crate-3142") + (0 kill "crate-3143") + (0 kill "money-2688") + (0 kill "villagea-part-14") + (0 kill "money-2691") + (0 kill "villagea-part-62") + (0 kill "villagea-part-63") + (0 kill "sharkey-1") + (0 kill "eco-82") + (0 kill "eco-83") + (0 kill "crate-2470") + (0 kill "villagea-part-3") + (0 kill "villagea-part-15") + (0 kill "villagea-part-22") + (0 kill "villagea-part-28") + (0 kill "explorer-4") + (0 kill "oracle-1") + (0 kill "crate-3141") + (0 kill "crate-3145") + (0 kill "water-vol-8") + (0 kill "water-vol-63") + (0 kill "lrocklrg-1") + (0 kill "crate-2469") + (0 kill "villagea-part-69") + (0 display-level beach special)))) ((closed? (-> this tasks) (game-task village1-mayor-money) (task-status need-reward-speech)) - (new 'static 'spool-anim - :name "mayor-reminder-beams" - :index 5 - :parts 3 - :command-list '((0 kill "villagea-part-65") - (0 kill "villagea-part-70") - (0 kill "med-res-level-2") - (0 kill "med-res-level-3") - (0 kill "med-res-level-4") - (0 kill "med-res-level-6") - (0 kill "med-res-level-7") - (0 kill "med-res-level-8") - (0 kill "med-res-level-11") - (0 kill "med-res-level-14") - (0 kill "fishermans-boat-2") - (0 kill "windspinner-9") - (0 kill "sagesail-6") - (0 kill "sharkey-12") - (0 kill "windmill-sail-4") - (0 kill "water-vol-7") - (0 kill "windspinner-8") - (0 kill "villagea-part-32") - (0 kill "water-vol-10") - (0 kill "ropebridge-4") - (0 kill "ropebridge-5") - (0 kill "reflector-end-1") - (0 kill "eco-10") - (0 kill "eco-11") - (0 kill "warp-gate-switch-3") - (0 kill "reflector-middle-2") - (0 kill "evilplant-2") - (0 kill "crate-3147") - (0 kill "villagea-water-2") - (0 kill "med-res-level-22") - (0 kill "med-res-level-23") - (0 kill "villagea-part-50") - (0 kill "water-vol-9") - (0 kill "crate-3144") - (0 kill "orb-cache-top-4") - (0 kill "village-cam-2") - (0 kill "villagea-part-18") - (0 kill "villagea-part-24") - (0 kill "money-2676") - (0 kill "villagea-part-64") - (0 kill "villagea-part-13") - (0 kill "villagea-part-17") - (0 kill "money-2689") - (0 kill "money-2690") - (0 kill "farmer-3") - (0 kill "villagea-part-26") - (0 kill "money-2692") - (0 kill "villagea-part-37") - (0 kill "villagea-part-38") - (0 kill "villagea-part-64") - (0 kill "crate-3142") - (0 kill "crate-3143") - (0 kill "money-2688") - (0 kill "villagea-part-14") - (0 kill "money-2691") - (0 kill "villagea-part-62") - (0 kill "villagea-part-63") - (0 kill "sharkey-1") - (0 kill "eco-82") - (0 kill "eco-83") - (0 kill "crate-2470") - (0 kill "villagea-part-3") - (0 kill "villagea-part-15") - (0 kill "villagea-part-22") - (0 kill "villagea-part-28") - (0 kill "explorer-4") - (0 kill "oracle-1") - (0 kill "crate-3141") - (0 kill "crate-3145") - (0 kill "water-vol-8") - (0 kill "water-vol-63") - (0 kill "lrocklrg-1") - (0 kill "crate-2469") - (0 kill "villagea-part-69") - (0 display-level beach special) - ) - ) - ) + (new 'static + 'spool-anim + :name "mayor-reminder-beams" + :index 5 + :parts 3 + :command-list + '((0 kill "villagea-part-65") + (0 kill "villagea-part-70") + (0 kill "med-res-level-2") + (0 kill "med-res-level-3") + (0 kill "med-res-level-4") + (0 kill "med-res-level-6") + (0 kill "med-res-level-7") + (0 kill "med-res-level-8") + (0 kill "med-res-level-11") + (0 kill "med-res-level-14") + (0 kill "fishermans-boat-2") + (0 kill "windspinner-9") + (0 kill "sagesail-6") + (0 kill "sharkey-12") + (0 kill "windmill-sail-4") + (0 kill "water-vol-7") + (0 kill "windspinner-8") + (0 kill "villagea-part-32") + (0 kill "water-vol-10") + (0 kill "ropebridge-4") + (0 kill "ropebridge-5") + (0 kill "reflector-end-1") + (0 kill "eco-10") + (0 kill "eco-11") + (0 kill "warp-gate-switch-3") + (0 kill "reflector-middle-2") + (0 kill "evilplant-2") + (0 kill "crate-3147") + (0 kill "villagea-water-2") + (0 kill "med-res-level-22") + (0 kill "med-res-level-23") + (0 kill "villagea-part-50") + (0 kill "water-vol-9") + (0 kill "crate-3144") + (0 kill "orb-cache-top-4") + (0 kill "village-cam-2") + (0 kill "villagea-part-18") + (0 kill "villagea-part-24") + (0 kill "money-2676") + (0 kill "villagea-part-64") + (0 kill "villagea-part-13") + (0 kill "villagea-part-17") + (0 kill "money-2689") + (0 kill "money-2690") + (0 kill "farmer-3") + (0 kill "villagea-part-26") + (0 kill "money-2692") + (0 kill "villagea-part-37") + (0 kill "villagea-part-38") + (0 kill "villagea-part-64") + (0 kill "crate-3142") + (0 kill "crate-3143") + (0 kill "money-2688") + (0 kill "villagea-part-14") + (0 kill "money-2691") + (0 kill "villagea-part-62") + (0 kill "villagea-part-63") + (0 kill "sharkey-1") + (0 kill "eco-82") + (0 kill "eco-83") + (0 kill "crate-2470") + (0 kill "villagea-part-3") + (0 kill "villagea-part-15") + (0 kill "villagea-part-22") + (0 kill "villagea-part-28") + (0 kill "explorer-4") + (0 kill "oracle-1") + (0 kill "crate-3141") + (0 kill "crate-3145") + (0 kill "water-vol-8") + (0 kill "water-vol-63") + (0 kill "lrocklrg-1") + (0 kill "crate-2469") + (0 kill "villagea-part-69") + (0 display-level beach special)))) ((zero? (get-reminder (-> this tasks) 0)) - (if arg0 - (save-reminder (-> this tasks) 1 0) - ) - (new 'static 'spool-anim - :name "mayor-reminder-beams" - :index 5 - :parts 3 - :command-list '((0 kill "villagea-part-65") - (0 kill "villagea-part-70") - (0 kill "med-res-level-2") - (0 kill "med-res-level-3") - (0 kill "med-res-level-4") - (0 kill "med-res-level-6") - (0 kill "med-res-level-7") - (0 kill "med-res-level-8") - (0 kill "med-res-level-11") - (0 kill "med-res-level-14") - (0 kill "fishermans-boat-2") - (0 kill "windspinner-9") - (0 kill "sagesail-6") - (0 kill "sharkey-12") - (0 kill "windmill-sail-4") - (0 kill "water-vol-7") - (0 kill "windspinner-8") - (0 kill "villagea-part-32") - (0 kill "water-vol-10") - (0 kill "ropebridge-4") - (0 kill "ropebridge-5") - (0 kill "reflector-end-1") - (0 kill "eco-10") - (0 kill "eco-11") - (0 kill "warp-gate-switch-3") - (0 kill "reflector-middle-2") - (0 kill "evilplant-2") - (0 kill "crate-3147") - (0 kill "villagea-water-2") - (0 kill "med-res-level-22") - (0 kill "med-res-level-23") - (0 kill "villagea-part-50") - (0 kill "water-vol-9") - (0 kill "crate-3144") - (0 kill "orb-cache-top-4") - (0 kill "village-cam-2") - (0 kill "villagea-part-18") - (0 kill "villagea-part-24") - (0 kill "money-2676") - (0 kill "villagea-part-64") - (0 kill "villagea-part-13") - (0 kill "villagea-part-17") - (0 kill "money-2689") - (0 kill "money-2690") - (0 kill "farmer-3") - (0 kill "villagea-part-26") - (0 kill "money-2692") - (0 kill "villagea-part-37") - (0 kill "villagea-part-38") - (0 kill "villagea-part-64") - (0 kill "crate-3142") - (0 kill "crate-3143") - (0 kill "money-2688") - (0 kill "villagea-part-14") - (0 kill "money-2691") - (0 kill "villagea-part-62") - (0 kill "villagea-part-63") - (0 kill "sharkey-1") - (0 kill "eco-82") - (0 kill "eco-83") - (0 kill "crate-2470") - (0 kill "villagea-part-3") - (0 kill "villagea-part-15") - (0 kill "villagea-part-22") - (0 kill "villagea-part-28") - (0 kill "explorer-4") - (0 kill "oracle-1") - (0 kill "crate-3141") - (0 kill "crate-3145") - (0 kill "water-vol-8") - (0 kill "water-vol-63") - (0 kill "lrocklrg-1") - (0 kill "crate-2469") - (0 kill "villagea-part-69") - (0 display-level beach special) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 1 0)) + (new 'static + 'spool-anim + :name "mayor-reminder-beams" + :index 5 + :parts 3 + :command-list + '((0 kill "villagea-part-65") + (0 kill "villagea-part-70") + (0 kill "med-res-level-2") + (0 kill "med-res-level-3") + (0 kill "med-res-level-4") + (0 kill "med-res-level-6") + (0 kill "med-res-level-7") + (0 kill "med-res-level-8") + (0 kill "med-res-level-11") + (0 kill "med-res-level-14") + (0 kill "fishermans-boat-2") + (0 kill "windspinner-9") + (0 kill "sagesail-6") + (0 kill "sharkey-12") + (0 kill "windmill-sail-4") + (0 kill "water-vol-7") + (0 kill "windspinner-8") + (0 kill "villagea-part-32") + (0 kill "water-vol-10") + (0 kill "ropebridge-4") + (0 kill "ropebridge-5") + (0 kill "reflector-end-1") + (0 kill "eco-10") + (0 kill "eco-11") + (0 kill "warp-gate-switch-3") + (0 kill "reflector-middle-2") + (0 kill "evilplant-2") + (0 kill "crate-3147") + (0 kill "villagea-water-2") + (0 kill "med-res-level-22") + (0 kill "med-res-level-23") + (0 kill "villagea-part-50") + (0 kill "water-vol-9") + (0 kill "crate-3144") + (0 kill "orb-cache-top-4") + (0 kill "village-cam-2") + (0 kill "villagea-part-18") + (0 kill "villagea-part-24") + (0 kill "money-2676") + (0 kill "villagea-part-64") + (0 kill "villagea-part-13") + (0 kill "villagea-part-17") + (0 kill "money-2689") + (0 kill "money-2690") + (0 kill "farmer-3") + (0 kill "villagea-part-26") + (0 kill "money-2692") + (0 kill "villagea-part-37") + (0 kill "villagea-part-38") + (0 kill "villagea-part-64") + (0 kill "crate-3142") + (0 kill "crate-3143") + (0 kill "money-2688") + (0 kill "villagea-part-14") + (0 kill "money-2691") + (0 kill "villagea-part-62") + (0 kill "villagea-part-63") + (0 kill "sharkey-1") + (0 kill "eco-82") + (0 kill "eco-83") + (0 kill "crate-2470") + (0 kill "villagea-part-3") + (0 kill "villagea-part-15") + (0 kill "villagea-part-22") + (0 kill "villagea-part-28") + (0 kill "explorer-4") + (0 kill "oracle-1") + (0 kill "crate-3141") + (0 kill "crate-3145") + (0 kill "water-vol-8") + (0 kill "water-vol-63") + (0 kill "lrocklrg-1") + (0 kill "crate-2469") + (0 kill "villagea-part-69") + (0 display-level beach special)))) (else - (if arg0 - (save-reminder (-> this tasks) 0 0) - ) - (new 'static 'spool-anim - :name "mayor-reminder-donation" - :index 6 - :parts 3 - :command-list '((0 kill "villagea-part-65") - (0 kill "villagea-part-70") - (0 kill "med-res-level-2") - (0 kill "med-res-level-3") - (0 kill "med-res-level-4") - (0 kill "med-res-level-6") - (0 kill "med-res-level-7") - (0 kill "med-res-level-8") - (0 kill "med-res-level-11") - (0 kill "med-res-level-14") - (0 kill "fishermans-boat-2") - (0 kill "windspinner-9") - (0 kill "sagesail-6") - (0 kill "sharkey-12") - (0 kill "windmill-sail-4") - (0 kill "water-vol-7") - (0 kill "windspinner-8") - (0 kill "villagea-part-32") - (0 kill "water-vol-10") - (0 kill "ropebridge-4") - (0 kill "ropebridge-5") - (0 kill "reflector-end-1") - (0 kill "eco-10") - (0 kill "eco-11") - (0 kill "warp-gate-switch-3") - (0 kill "reflector-middle-2") - (0 kill "evilplant-2") - (0 kill "crate-3147") - (0 kill "villagea-water-2") - (0 kill "med-res-level-22") - (0 kill "med-res-level-23") - (0 kill "villagea-part-50") - (0 kill "water-vol-9") - (0 kill "crate-3144") - (0 kill "orb-cache-top-4") - (0 kill "village-cam-2") - (0 kill "villagea-part-18") - (0 kill "villagea-part-24") - (0 kill "money-2676") - (0 kill "villagea-part-64") - (0 kill "villagea-part-13") - (0 kill "villagea-part-17") - (0 kill "money-2689") - (0 kill "money-2690") - (0 kill "farmer-3") - (0 kill "villagea-part-26") - (0 kill "money-2692") - (0 kill "villagea-part-37") - (0 kill "villagea-part-38") - (0 kill "villagea-part-64") - (0 kill "crate-3142") - (0 kill "crate-3143") - (0 kill "money-2688") - (0 kill "villagea-part-14") - (0 kill "money-2691") - (0 kill "villagea-part-62") - (0 kill "villagea-part-63") - (0 kill "sharkey-1") - (0 kill "eco-82") - (0 kill "eco-83") - (0 kill "crate-2470") - (0 kill "villagea-part-3") - (0 kill "villagea-part-15") - (0 kill "villagea-part-22") - (0 kill "villagea-part-28") - (0 kill "explorer-4") - (0 kill "oracle-1") - (0 kill "crate-3141") - (0 kill "crate-3145") - (0 kill "water-vol-8") - (0 kill "water-vol-63") - (0 kill "lrocklrg-1") - (0 kill "crate-2469") - (0 kill "villagea-part-69") - (0 display-level beach special) - ) - ) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 0)) + (new 'static + 'spool-anim + :name "mayor-reminder-donation" + :index 6 + :parts 3 + :command-list + '((0 kill "villagea-part-65") + (0 kill "villagea-part-70") + (0 kill "med-res-level-2") + (0 kill "med-res-level-3") + (0 kill "med-res-level-4") + (0 kill "med-res-level-6") + (0 kill "med-res-level-7") + (0 kill "med-res-level-8") + (0 kill "med-res-level-11") + (0 kill "med-res-level-14") + (0 kill "fishermans-boat-2") + (0 kill "windspinner-9") + (0 kill "sagesail-6") + (0 kill "sharkey-12") + (0 kill "windmill-sail-4") + (0 kill "water-vol-7") + (0 kill "windspinner-8") + (0 kill "villagea-part-32") + (0 kill "water-vol-10") + (0 kill "ropebridge-4") + (0 kill "ropebridge-5") + (0 kill "reflector-end-1") + (0 kill "eco-10") + (0 kill "eco-11") + (0 kill "warp-gate-switch-3") + (0 kill "reflector-middle-2") + (0 kill "evilplant-2") + (0 kill "crate-3147") + (0 kill "villagea-water-2") + (0 kill "med-res-level-22") + (0 kill "med-res-level-23") + (0 kill "villagea-part-50") + (0 kill "water-vol-9") + (0 kill "crate-3144") + (0 kill "orb-cache-top-4") + (0 kill "village-cam-2") + (0 kill "villagea-part-18") + (0 kill "villagea-part-24") + (0 kill "money-2676") + (0 kill "villagea-part-64") + (0 kill "villagea-part-13") + (0 kill "villagea-part-17") + (0 kill "money-2689") + (0 kill "money-2690") + (0 kill "farmer-3") + (0 kill "villagea-part-26") + (0 kill "money-2692") + (0 kill "villagea-part-37") + (0 kill "villagea-part-38") + (0 kill "villagea-part-64") + (0 kill "crate-3142") + (0 kill "crate-3143") + (0 kill "money-2688") + (0 kill "villagea-part-14") + (0 kill "money-2691") + (0 kill "villagea-part-62") + (0 kill "villagea-part-63") + (0 kill "sharkey-1") + (0 kill "eco-82") + (0 kill "eco-83") + (0 kill "crate-2470") + (0 kill "villagea-part-3") + (0 kill "villagea-part-15") + (0 kill "villagea-part-22") + (0 kill "villagea-part-28") + (0 kill "explorer-4") + (0 kill "oracle-1") + (0 kill "crate-3141") + (0 kill "crate-3145") + (0 kill "water-vol-8") + (0 kill "water-vol-63") + (0 kill "lrocklrg-1") + (0 kill "crate-2469") + (0 kill "villagea-part-69") + (0 display-level beach special)))))) (((task-status need-reward-speech)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) - (((game-task jungle-lurkerm)) - (mayor-lurkerm-reward-speech this arg0) - ) + (((game-task jungle-lurkerm)) (mayor-lurkerm-reward-speech this arg0)) (else - (cond - (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - ) - (else - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim - :name "mayor-resolution-donation" - :index 8 - :parts 5 - :command-list '((0 kill "villagea-part-65") - (0 kill "villagea-part-70") - (0 kill "med-res-level-2") - (0 kill "med-res-level-3") - (0 kill "med-res-level-4") - (0 kill "med-res-level-6") - (0 kill "med-res-level-7") - (0 kill "med-res-level-8") - (0 kill "med-res-level-11") - (0 kill "med-res-level-14") - (0 kill "fishermans-boat-2") - (0 kill "windspinner-9") - (0 kill "sagesail-6") - (0 kill "sharkey-12") - (0 kill "windmill-sail-4") - (0 kill "water-vol-7") - (0 kill "windspinner-8") - (0 kill "villagea-part-32") - (0 kill "water-vol-10") - (0 kill "ropebridge-4") - (0 kill "ropebridge-5") - (0 kill "reflector-end-1") - (0 kill "eco-10") - (0 kill "eco-11") - (0 kill "warp-gate-switch-3") - (0 kill "reflector-middle-2") - (0 kill "evilplant-2") - (0 kill "crate-3147") - (0 kill "villagea-water-2") - (0 kill "med-res-level-22") - (0 kill "med-res-level-23") - (0 kill "villagea-part-50") - (0 kill "water-vol-9") - (0 kill "crate-3144") - (0 kill "orb-cache-top-4") - (0 kill "village-cam-2") - (0 kill "villagea-part-18") - (0 kill "villagea-part-24") - (0 kill "money-2676") - (0 kill "villagea-part-64") - (0 kill "villagea-part-13") - (0 kill "villagea-part-17") - (0 kill "money-2689") - (0 kill "money-2690") - (0 kill "farmer-3") - (0 kill "villagea-part-26") - (0 kill "money-2692") - (0 kill "villagea-part-37") - (0 kill "villagea-part-38") - (0 kill "villagea-part-64") - (0 kill "crate-3142") - (0 kill "crate-3143") - (0 kill "money-2688") - (0 kill "villagea-part-14") - (0 kill "money-2691") - (0 kill "villagea-part-62") - (0 kill "villagea-part-63") - (0 kill "sharkey-1") - (0 kill "eco-82") - (0 kill "eco-83") - (0 kill "crate-2470") - (0 kill "villagea-part-3") - (0 kill "villagea-part-15") - (0 kill "villagea-part-22") - (0 kill "villagea-part-28") - (0 kill "explorer-4") - (0 kill "oracle-1") - (0 kill "crate-3141") - (0 kill "crate-3145") - (0 kill "water-vol-8") - (0 kill "water-vol-63") - (0 kill "lrocklrg-1") - (0 kill "crate-2469") - (0 kill "villagea-part-69") - (0 display-level beach special) - ) - ) - ) - ) - ) + (cond + (arg0 + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc)))) + (else (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static + 'spool-anim + :name "mayor-resolution-donation" + :index 8 + :parts 5 + :command-list + '((0 kill "villagea-part-65") + (0 kill "villagea-part-70") + (0 kill "med-res-level-2") + (0 kill "med-res-level-3") + (0 kill "med-res-level-4") + (0 kill "med-res-level-6") + (0 kill "med-res-level-7") + (0 kill "med-res-level-8") + (0 kill "med-res-level-11") + (0 kill "med-res-level-14") + (0 kill "fishermans-boat-2") + (0 kill "windspinner-9") + (0 kill "sagesail-6") + (0 kill "sharkey-12") + (0 kill "windmill-sail-4") + (0 kill "water-vol-7") + (0 kill "windspinner-8") + (0 kill "villagea-part-32") + (0 kill "water-vol-10") + (0 kill "ropebridge-4") + (0 kill "ropebridge-5") + (0 kill "reflector-end-1") + (0 kill "eco-10") + (0 kill "eco-11") + (0 kill "warp-gate-switch-3") + (0 kill "reflector-middle-2") + (0 kill "evilplant-2") + (0 kill "crate-3147") + (0 kill "villagea-water-2") + (0 kill "med-res-level-22") + (0 kill "med-res-level-23") + (0 kill "villagea-part-50") + (0 kill "water-vol-9") + (0 kill "crate-3144") + (0 kill "orb-cache-top-4") + (0 kill "village-cam-2") + (0 kill "villagea-part-18") + (0 kill "villagea-part-24") + (0 kill "money-2676") + (0 kill "villagea-part-64") + (0 kill "villagea-part-13") + (0 kill "villagea-part-17") + (0 kill "money-2689") + (0 kill "money-2690") + (0 kill "farmer-3") + (0 kill "villagea-part-26") + (0 kill "money-2692") + (0 kill "villagea-part-37") + (0 kill "villagea-part-38") + (0 kill "villagea-part-64") + (0 kill "crate-3142") + (0 kill "crate-3143") + (0 kill "money-2688") + (0 kill "villagea-part-14") + (0 kill "money-2691") + (0 kill "villagea-part-62") + (0 kill "villagea-part-63") + (0 kill "sharkey-1") + (0 kill "eco-82") + (0 kill "eco-83") + (0 kill "crate-2470") + (0 kill "villagea-part-3") + (0 kill "villagea-part-15") + (0 kill "villagea-part-22") + (0 kill "villagea-part-28") + (0 kill "explorer-4") + (0 kill "oracle-1") + (0 kill "crate-3141") + (0 kill "crate-3145") + (0 kill "water-vol-8") + (0 kill "water-vol-63") + (0 kill "lrocklrg-1") + (0 kill "crate-2469") + (0 kill "villagea-part-69") + (0 display-level beach special)))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this mayor)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod should-display? ((this mayor)) (if *target* - (< (- (-> (target-pos 0) z) (-> this root trans z)) 57344.0) - (< (- (-> (camera-pos) z) (-> this root trans z)) 57344.0) - ) - ) + (< (- (-> (target-pos 0) z) (-> this root trans z)) 57344.0) + (< (- (-> (camera-pos) z) (-> this root trans z)) 57344.0))) (defmethod process-taskable-method-43 ((this mayor)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) @@ -653,65 +595,36 @@ (cond ((< 0.8888889 f0-2) (if (not (closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reminder))) - (play-ambient (-> this ambient) "CHI-LO01" #f (-> this root trans)) - ) - ) + (play-ambient (-> this ambient) "CHI-LO01" #f (-> this root trans)))) ((< 0.7777778 f0-2) (if (not (closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reminder))) - (play-ambient (-> this ambient) "CHI-LO02" #f (-> this root trans)) - ) - ) + (play-ambient (-> this ambient) "CHI-LO02" #f (-> this root trans)))) ((< 0.6666667 f0-2) (if (not (closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reminder))) - (play-ambient (-> this ambient) "CHI-AM07" #f (-> this root trans)) - ) - ) - ((< 0.5555556 f0-2) - (play-ambient (-> this ambient) "CHI-AM06" #f (-> this root trans)) - ) - ((< 0.44444445 f0-2) - (play-ambient (-> this ambient) "CHI-AM05" #f (-> this root trans)) - ) - ((< 0.33333334 f0-2) - (play-ambient (-> this ambient) "CHI-AM04" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "CHI-AM07" #f (-> this root trans)))) + ((< 0.5555556 f0-2) (play-ambient (-> this ambient) "CHI-AM06" #f (-> this root trans))) + ((< 0.44444445 f0-2) (play-ambient (-> this ambient) "CHI-AM05" #f (-> this root trans))) + ((< 0.33333334 f0-2) (play-ambient (-> this ambient) "CHI-AM04" #f (-> this root trans))) ((< 0.22222222 f0-2) (if (not (closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reminder))) - (play-ambient (-> this ambient) "CHI-AM03" #f (-> this root trans)) - ) - ) + (play-ambient (-> this ambient) "CHI-AM03" #f (-> this root trans)))) ((< 0.11111111 f0-2) (if (not (closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reminder))) - (play-ambient (-> this ambient) "CHI-AM02" #f (-> this root trans)) - ) - ) + (play-ambient (-> this ambient) "CHI-AM02" #f (-> this root trans)))) (else - (if (not (closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reminder))) - (play-ambient (-> this ambient) "CHI-AM01" #f (-> this root trans)) - ) - ) - ) - ) - ) - ) + (if (not (closed? (-> this tasks) (game-task jungle-lurkerm) (task-status need-reminder))) + (play-ambient (-> this ambient) "CHI-AM01" #f (-> this root trans)))))))) (defstate idle (mayor) :virtual #t - :trans (behavior () - (if (not (should-display? self)) - (go-virtual hidden) - ) - ((-> (method-of-type process-taskable idle) trans)) - ) - :post (behavior () - (let ((t9-0 (-> (method-of-type process-taskable idle) post))) - (if t9-0 - ((the-as (function none) t9-0)) - ) - ) - (do-push-aways! (-> self root)) - ) - ) + :trans + (behavior () + (if (not (should-display? self)) (go-virtual hidden)) + ((-> (method-of-type process-taskable idle) trans))) + :post + (behavior () + (let ((t9-0 (-> (method-of-type process-taskable idle) post))) (if t9-0 ((the-as (function none) t9-0)))) + (do-push-aways! (-> self root)))) (defmethod init-from-entity! ((this mayor) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *mayor-sg* 3 51 (new 'static 'vector :y 4096.0 :w 4096.0) 5) @@ -720,5 +633,4 @@ (set! (-> this sound-flava) (music-flava mayor)) (set! (-> this draw light-index) (the-as uint 2)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/beach/pelican.gc b/goal_src/jak1/levels/beach/pelican.gc index 7ae0000ec4..58132974f0 100644 --- a/goal_src/jak1/levels/beach/pelican.gc +++ b/goal_src/jak1/levels/beach/pelican.gc @@ -1,157 +1,121 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/process-taskable.gc") (require "engine/anim/aligner.gc") (require "engine/geometry/path.gc") -;; name: pelican.gc -;; name in dgo: pelican -;; dgos: BEA, L1 - ;; DECOMP BEGINS (deftype pelican-bank (basic) - ((circle-speed meters) - (dive-time seconds) - (to-nest0-time seconds) - (to-nest1-time seconds) - (land-time seconds) - (from-nest-time seconds) - (spit-time seconds) - (pre-spit-wait-time seconds) - (post-spit-wait-time seconds) - (run-away-time seconds) - ) - ) - + ((circle-speed meters) + (dive-time seconds) + (to-nest0-time seconds) + (to-nest1-time seconds) + (land-time seconds) + (from-nest-time seconds) + (spit-time seconds) + (pre-spit-wait-time seconds) + (post-spit-wait-time seconds) + (run-away-time seconds))) -(define *PELICAN-bank* (new 'static 'pelican-bank - :circle-speed (meters 16) - :dive-time (seconds 2) - :to-nest0-time (seconds 4) - :to-nest1-time (seconds 8) - :land-time (seconds 2.4) - :from-nest-time (seconds 20) - :spit-time (seconds 1) - :pre-spit-wait-time (seconds 0.5) - :post-spit-wait-time (seconds 1.5) - :run-away-time (seconds 10) - ) - ) +(define *PELICAN-bank* + (new 'static + 'pelican-bank + :circle-speed (meters 16) + :dive-time (seconds 2) + :to-nest0-time (seconds 4) + :to-nest1-time (seconds 8) + :land-time (seconds 2.4) + :from-nest-time (seconds 20) + :spit-time (seconds 1) + :pre-spit-wait-time (seconds 0.5) + :post-spit-wait-time (seconds 1.5) + :run-away-time (seconds 10))) (deftype pelican (process-drawable) - ((root collide-shape-moving :override) - (query gui-query :inline) - (fuel-cell handle) - (cam-tracker handle) - (path-data curve-control 8) - (path-circle curve-control :overlay-at (-> path-data 0)) - (path-dive0 curve-control :overlay-at (-> path-data 1)) - (path-to-nest0 curve-control :overlay-at (-> path-data 2)) - (path-from-nest0 curve-control :overlay-at (-> path-data 3)) - (path-spit0 curve-control :overlay-at (-> path-data 4)) - (path-dive1 curve-control :overlay-at (-> path-data 5)) - (path-to-nest1 curve-control :overlay-at (-> path-data 6)) - (path-to-nest2 curve-control :overlay-at (-> path-data 7)) - (path-cache curve-control) - (time-cache time-frame) - (path-pos float) - (path-speed float) - (path-max float) - (path-vector vector :inline) - (state-vector vector :inline) - (state-vector1 vector :inline) - (state-float float 2) - (state-object symbol) - (neck joint-mod) - ) + ((root collide-shape-moving :override) + (query gui-query :inline) + (fuel-cell handle) + (cam-tracker handle) + (path-data curve-control 8) + (path-circle curve-control :overlay-at (-> path-data 0)) + (path-dive0 curve-control :overlay-at (-> path-data 1)) + (path-to-nest0 curve-control :overlay-at (-> path-data 2)) + (path-from-nest0 curve-control :overlay-at (-> path-data 3)) + (path-spit0 curve-control :overlay-at (-> path-data 4)) + (path-dive1 curve-control :overlay-at (-> path-data 5)) + (path-to-nest1 curve-control :overlay-at (-> path-data 6)) + (path-to-nest2 curve-control :overlay-at (-> path-data 7)) + (path-cache curve-control) + (time-cache time-frame) + (path-pos float) + (path-speed float) + (path-max float) + (path-vector vector :inline) + (state-vector vector :inline) + (state-vector1 vector :inline) + (state-float float 2) + (state-object symbol) + (neck joint-mod)) (:states - pelican-circle - (pelican-dive path-control curve-control time-frame) - (pelican-explode symbol) - (pelican-fly-to-end path-control time-frame) - pelican-from-nest - pelican-spit - (pelican-to-nest path-control int) - (pelican-wait-at-end symbol) - (pelican-wait-at-nest symbol) - ) - ) - + pelican-circle + (pelican-dive path-control curve-control time-frame) + (pelican-explode symbol) + (pelican-fly-to-end path-control time-frame) + pelican-from-nest + pelican-spit + (pelican-to-nest path-control int) + (pelican-wait-at-end symbol) + (pelican-wait-at-nest symbol))) (defmethod relocate ((this pelican) (arg0 int)) (countdown (v1-0 8) - (if (nonzero? (-> this path-data v1-0)) - (&+! (-> this path-data v1-0) arg0) - ) - ) - (if (nonzero? (-> this path-cache)) - (&+! (-> this path-cache) arg0) - ) - (if (nonzero? (-> this neck)) - (&+! (-> this neck) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this path-data v1-0)) (&+! (-> this path-data v1-0) arg0))) + (if (nonzero? (-> this path-cache)) (&+! (-> this path-cache) arg0)) + (if (nonzero? (-> this neck)) (&+! (-> this neck) arg0)) + (call-parent-method this arg0)) -(defskelgroup *pelican-sg* pelican pelican-lod0-jg pelican-fly-ja - ((pelican-lod0-mg (meters 20)) (pelican-lod1-mg (meters 40)) (pelican-lod2-mg (meters 999999))) - :bounds (static-spherem 0 3 0 5) - :shadow pelican-shadow-mg - ) +(defskelgroup *pelican-sg* + pelican + pelican-lod0-jg + pelican-fly-ja + ((pelican-lod0-mg (meters 20)) (pelican-lod1-mg (meters 40)) (pelican-lod2-mg (meters 999999))) + :bounds (static-spherem 0 3 0 5) + :shadow pelican-shadow-mg) (defbehavior pelican-path-update pelican ((arg0 float) (arg1 int) (arg2 float) (arg3 float) (arg4 symbol)) (compute-alignment! (-> self align)) (let ((s3-0 (new 'stack-no-clear 'vector))) (let* ((f0-1 (+ (-> self path-pos) (* (-> self align align trans z) arg3))) (f1-2 (-> self path-max)) - (f30-0 (- f0-1 (* (the float (the int (/ f0-1 f1-2))) f1-2))) - ) + (f30-0 (- f0-1 (* (the float (the int (/ f0-1 f1-2))) f1-2)))) (eval-path-curve-div! (-> self path) s3-0 f30-0 'interp) (+! (-> s3-0 y) (-> self align align trans y)) (move-to-point! (-> self root) s3-0) - (path-control-method-12 (-> self path) s3-0 f30-0) - ) + (path-control-method-12 (-> self path) s3-0 f30-0)) (if arg4 - (set-heading-vec-clear-roll-pitch! (-> self root) s3-0) - (seek-toward-heading-vec! (-> self root) s3-0 arg0 (the-as time-frame arg1)) - ) - ) - ) + (set-heading-vec-clear-roll-pitch! (-> self root) s3-0) + (seek-toward-heading-vec! (-> self root) s3-0 arg0 (the-as time-frame arg1))))) (defbehavior pelican-fly pelican ((arg0 (function pelican int)) (arg1 (function pelican int))) (loop (cond - ((ja-group? pelican-fly-ja) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.25)) - ) - ) + ((ja-group? pelican-fly-ja) (ja-no-eval :num! (seek!)) (while (not (ja-done? 0)) (suspend) (ja-eval))) + (else (ja-channel-push! 1 (seconds 0.25)))) (let ((s4-0 (arg0 self))) (dotimes (s3-0 s4-0) (ja-no-eval :group! pelican-fly-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (ja-blend-eval) (suspend) - (ja :num! (seek!)) - ) - ) - ) + (ja :num! (seek!))))) (let ((s4-1 (arg1 self))) (when (> s4-1 0) (ja-no-eval :group! pelican-fly-ja :num! (seek! (ja-aframe 12.0 0)) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe 12.0 0))) - ) + (ja :num! (seek! (ja-aframe 12.0 0)))) (ja-no-eval :num! (loop! 0.25)) (ja-channel-push! 1 (seconds 1)) (dotimes (s3-3 s4-1) @@ -159,672 +123,458 @@ (until (ja-done? 0) (ja-blend-eval) (suspend) - (ja :num! (seek!)) - ) - ) - (ja-no-eval :num! (loop!)) - ) - ) - ) - (none) - ) + (ja :num! (seek!)))) + (ja-no-eval :num! (loop!))))) + (none)) (defbehavior pelican-post pelican () (ja-post) - (none) - ) + (none)) (defstate pelican-circle (pelican) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('dive) - (let ((v0-0 (the-as structure #t))) - (set! (-> self state-object) (the-as symbol v0-0)) - v0-0 - ) - ) - (('fuel-cell) - (handle->process (-> self fuel-cell)) - ) - (('position) - (set! (-> self path-pos) (the-as float (-> block param 0))) - (let ((a1-3 (path-control-method-12 (-> self path) (new 'stack-no-clear 'vector) (-> self path-pos)))) - (set-heading-vec! (-> self root) a1-3) - ) - ) - ) - ) - :enter (behavior () - (while (-> self child) - (deactivate (-> self child 0)) - ) - (set! (-> self state-object) #f) - (let ((gp-0 (-> self path-vector))) - (eval-path-curve-div! (-> self path-dive0) gp-0 4.5 'interp) - (+! (-> gp-0 y) -4505.6) - (let ((v1-8 (manipy-spawn gp-0 (-> self entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to self))) - (set! (-> self fuel-cell) (ppointer->handle v1-8)) - (if v1-8 - (send-event - (ppointer->process v1-8) - 'eval - (lambda :behavior pelican () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) - ) - ) - ) - (set! (-> self path) (-> self path-circle)) - (set! (-> self path-pos) 0.0) - (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) - (set! (-> self path-speed) - (/ (* (-> *PELICAN-bank* circle-speed) (-> self path-max)) (path-distance (-> self path))) - ) - (set-roll-to-grav-2! (-> self root) -2730.6667) - ) - :trans (behavior () - (pelican-path-update 728177.75 30 1.0 (/ (-> self path-max) (path-distance (-> self path))) #f) - (let ((f0-3 (+ (-> self path-pos) (* (-> self path-speed) (seconds-per-frame)))) - (f1-2 (-> self path-max)) - ) - (set! (-> self path-pos) (- f0-3 (* (the float (the int (/ f0-3 f1-2))) f1-2))) - ) - (when (and (and *target* (>= 81920.0 (vector-vector-xz-distance (-> self path-vector) (-> *target* control trans)))) - (not (handle->process (-> self cam-tracker))) - ) - (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior camera-tracker - () - (local-vars - (a0-6 process-tree) - (a1-5 event-message-block) - (t9-6 (function process-tree event-message-block object)) - ) - (while (not (process-grab? *target*)) - (suspend) - ) - (send-event (ppointer->process (-> self parent)) 'position 4.0) - (send-event (ppointer->process (-> self parent)) 'dive) - (suspend) - (suspend) - (send-event *camera* 'blend-from-as-fixed) - (camera-look-at (the-as pair (ppointer->process (-> self parent))) (the-as uint 0)) - (camera-change-to "camera-215" 0 #f) - (until (t9-6 a0-6 a1-5) - (suspend) - (set! a1-5 (new 'stack-no-clear 'event-message-block)) - (set! (-> a1-5 from) self) - (set! (-> a1-5 num-params) 0) - (set! (-> a1-5 message) 'got-cell?) - (set! t9-6 send-event-function) - (set! a0-6 (ppointer->process (-> self parent))) - ) - (send-event *camera* 'point-of-interest #f) - (while (!= (-> self message) 'release) - (suspend) - ) - (set! (-> self message) #f) - (while (not (process-release? (handle->process (-> self grab-target)))) - (suspend) - ) - (send-event *camera* 'blend-from-as-fixed) - (camera-look-at (the-as pair *target*) (the-as uint 0)) - (camera-change-to (the-as string 'base) 150 #f) - (none) - ) - :to self - ) - ) - ) - (set! (-> self draw force-lod) 0) - 0 - ) - (when (and (-> self state-object) (>= (-> self path-pos) 6.0) (< (-> self path-pos) 7.0)) - (let ((v1-24 (-> self entity extra perm))) - (logior! (-> v1-24 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-24 user-int8 0) 2) - ) - (go pelican-dive (-> self path-dive0) (-> self path-to-nest0) (-> *PELICAN-bank* to-nest0-time)) - ) - ) - :code (behavior () - (suspend) - (send-event (-> self fuel-cell process 0) 'trans-hook fuel-cell-animate) - (pelican-fly - (the-as (function pelican int) (lambda () (rand-vu-int-range 2 4))) - (the-as (function pelican int) (lambda () (rand-vu-int-range 3 5))) - ) - ) - :post pelican-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('dive) (let ((v0-0 (the-as structure #t))) (set! (-> self state-object) (the-as symbol v0-0)) v0-0)) + (('fuel-cell) (handle->process (-> self fuel-cell))) + (('position) + (set! (-> self path-pos) (the-as float (-> block param 0))) + (let ((a1-3 (path-control-method-12 (-> self path) (new 'stack-no-clear 'vector) (-> self path-pos)))) + (set-heading-vec! (-> self root) a1-3))))) + :enter + (behavior () + (while (-> self child) + (deactivate (-> self child 0))) + (set! (-> self state-object) #f) + (let ((gp-0 (-> self path-vector))) + (eval-path-curve-div! (-> self path-dive0) gp-0 4.5 'interp) + (+! (-> gp-0 y) -4505.6) + (let ((v1-8 (manipy-spawn gp-0 (-> self entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to self))) + (set! (-> self fuel-cell) (ppointer->handle v1-8)) + (if v1-8 + (send-event (ppointer->process v1-8) + 'eval + (lambda :behavior pelican () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) (set! (-> self part) v0-0) v0-0)))))) + (set! (-> self path) (-> self path-circle)) + (set! (-> self path-pos) 0.0) + (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) + (set! (-> self path-speed) (/ (* (-> *PELICAN-bank* circle-speed) (-> self path-max)) (path-distance (-> self path)))) + (set-roll-to-grav-2! (-> self root) -2730.6667)) + :trans + (behavior () + (pelican-path-update 728177.75 30 1.0 (/ (-> self path-max) (path-distance (-> self path))) #f) + (let ((f0-3 (+ (-> self path-pos) (* (-> self path-speed) (seconds-per-frame)))) + (f1-2 (-> self path-max))) + (set! (-> self path-pos) (- f0-3 (* (the float (the int (/ f0-3 f1-2))) f1-2)))) + (when (and (and *target* (>= 81920.0 (vector-vector-xz-distance (-> self path-vector) (-> *target* control trans)))) + (not (handle->process (-> self cam-tracker)))) + (set! (-> self cam-tracker) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior camera-tracker () + (local-vars (a0-6 process-tree) (a1-5 event-message-block) (t9-6 (function process-tree event-message-block object))) + (while (not (process-grab? *target*)) + (suspend)) + (send-event (ppointer->process (-> self parent)) 'position 4.0) + (send-event (ppointer->process (-> self parent)) 'dive) + (suspend) + (suspend) + (send-event *camera* 'blend-from-as-fixed) + (camera-look-at (the-as pair (ppointer->process (-> self parent))) (the-as uint 0)) + (camera-change-to "camera-215" 0 #f) + (until (t9-6 a0-6 a1-5) + (suspend) + (set! a1-5 (new 'stack-no-clear 'event-message-block)) + (set! (-> a1-5 from) self) + (set! (-> a1-5 num-params) 0) + (set! (-> a1-5 message) 'got-cell?) + (set! t9-6 send-event-function) + (set! a0-6 (ppointer->process (-> self parent)))) + (send-event *camera* 'point-of-interest #f) + (while (!= (-> self message) 'release) + (suspend)) + (set! (-> self message) #f) + (while (not (process-release? (handle->process (-> self grab-target)))) + (suspend)) + (send-event *camera* 'blend-from-as-fixed) + (camera-look-at (the-as pair *target*) (the-as uint 0)) + (camera-change-to (the-as string 'base) 150 #f) + (none)) + :to + self))) + (set! (-> self draw force-lod) 0) + 0) + (when (and (-> self state-object) (>= (-> self path-pos) 6.0) (< (-> self path-pos) 7.0)) + (let ((v1-24 (-> self entity extra perm))) + (logior! (-> v1-24 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-24 user-int8 0) 2)) + (go pelican-dive (-> self path-dive0) (-> self path-to-nest0) (-> *PELICAN-bank* to-nest0-time)))) + :code + (behavior () + (suspend) + (send-event (-> self fuel-cell process 0) 'trans-hook fuel-cell-animate) + (pelican-fly (the-as (function pelican int) (lambda () (rand-vu-int-range 2 4))) + (the-as (function pelican int) (lambda () (rand-vu-int-range 3 5))))) + :post pelican-post) (defstate pelican-dive (pelican) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('got-cell?) - (-> self state-object) - ) - (('fuel-cell) - (handle->process (-> self fuel-cell)) - ) - ) - ) - :enter (behavior ((arg0 path-control) (arg1 curve-control) (arg2 time-frame)) - (init! (-> self query) (the-as string #f) 40 150 25 #t (the-as string #f)) - (set! (-> self state-object) #f) - (set-time! (-> self state-time)) - (set-roll-to-grav-2! (-> self root) 0.0) - (let ((a0-4 (handle->process (-> self fuel-cell)))) - (cond - (a0-4 - (send-event a0-4 'trans-hook fuel-cell-animate) - ) - (else - ) - ) - ) - (set! (-> self path-cache) arg1) - (set! (-> self time-cache) arg2) - (set! (-> self path) arg0) - (set! (-> self path-pos) 0.0) - (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) - (set! (-> self path-speed) (/ (* 300.0 (-> self path-max)) (the float (-> *PELICAN-bank* dive-time)))) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (path-control-method-12 (-> self path) gp-1 (-> self path-pos)) - (set-heading-vec! (-> self root) gp-1) - ) - (set! (-> self draw force-lod) 0) - 0 - ) - :exit (behavior () - (set! (-> self draw force-lod) -1) - ) - :trans (behavior () - (if (not (handle->process (-> self fuel-cell))) - (go pelican-fly-to-end (-> self path-to-nest2) (-> *PELICAN-bank* run-away-time)) - ) - (pelican-path-update 364088.88 30 0.0 0.0 #t) - (seek! (-> self path-pos) (-> self path-max) (* (-> self path-speed) (seconds-per-frame))) - (if (= (-> self path-pos) (-> self path-max)) - (go pelican-to-nest (-> self path-cache) (the-as int (-> self time-cache))) - ) - ) - :code (behavior ((arg0 path-control) (arg1 curve-control) (arg2 time-frame)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! pelican-swoop-ja :num! (seek! (ja-aframe 48.0 0) 0.5) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (let ((gp-1 (handle->process (-> self fuel-cell)))) - (when (and gp-1 (>= (-> self path-pos) 3.8) (not (send-event gp-1 'query 'grab))) - (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) - (send-event gp-1 'grab self) - (send-event gp-1 'draw #f) - (send-event gp-1 'event-hook #f) - (set! (-> self state-object) #t) - ) - ) - (suspend) - (ja :num! (seek! (ja-aframe 48.0 0) 0.5)) - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! pelican-fly-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (anim-loop) - ) - :post pelican-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('got-cell?) (-> self state-object)) + (('fuel-cell) (handle->process (-> self fuel-cell))))) + :enter + (behavior ((arg0 path-control) (arg1 curve-control) (arg2 time-frame)) + (init! (-> self query) (the-as string #f) 40 150 25 #t (the-as string #f)) + (set! (-> self state-object) #f) + (set-time! (-> self state-time)) + (set-roll-to-grav-2! (-> self root) 0.0) + (let ((a0-4 (handle->process (-> self fuel-cell)))) + (cond + (a0-4 (send-event a0-4 'trans-hook fuel-cell-animate)) + (else))) + (set! (-> self path-cache) arg1) + (set! (-> self time-cache) arg2) + (set! (-> self path) arg0) + (set! (-> self path-pos) 0.0) + (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) + (set! (-> self path-speed) (/ (* 300.0 (-> self path-max)) (the float (-> *PELICAN-bank* dive-time)))) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (path-control-method-12 (-> self path) gp-1 (-> self path-pos)) + (set-heading-vec! (-> self root) gp-1)) + (set! (-> self draw force-lod) 0) + 0) + :exit + (behavior () + (set! (-> self draw force-lod) -1)) + :trans + (behavior () + (if (not (handle->process (-> self fuel-cell))) + (go pelican-fly-to-end (-> self path-to-nest2) (-> *PELICAN-bank* run-away-time))) + (pelican-path-update 364088.88 30 0.0 0.0 #t) + (seek! (-> self path-pos) (-> self path-max) (* (-> self path-speed) (seconds-per-frame))) + (if (= (-> self path-pos) (-> self path-max)) (go pelican-to-nest (-> self path-cache) (the-as int (-> self time-cache))))) + :code + (behavior ((arg0 path-control) (arg1 curve-control) (arg2 time-frame)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! pelican-swoop-ja :num! (seek! (ja-aframe 48.0 0) 0.5) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (let ((gp-1 (handle->process (-> self fuel-cell)))) + (when (and gp-1 (>= (-> self path-pos) 3.8) (not (send-event gp-1 'query 'grab))) + (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) + (send-event gp-1 'grab self) + (send-event gp-1 'draw #f) + (send-event gp-1 'event-hook #f) + (set! (-> self state-object) #t))) + (suspend) + (ja :num! (seek! (ja-aframe 48.0 0) 0.5))) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! pelican-fly-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (anim-loop)) + :post pelican-post) (defstate pelican-to-nest (pelican) - :enter (behavior ((arg0 path-control) (arg1 int)) - (set! (-> self path) arg0) - (set! (-> self path-pos) 0.0) - (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) - (set! (-> self path-speed) (/ (* 300.0 (-> self path-max)) (the float arg1))) - ) - :trans (behavior () - (pelican-path-update 546133.3 30 0.0 0.0 #f) - (seek! (-> self path-pos) (-> self path-max) (* (-> self path-speed) (seconds-per-frame))) - (if (= (-> self path-pos) (-> self path-max)) - (go pelican-wait-at-nest #f) - ) - ) - :code (behavior ((arg0 path-control) (arg1 int)) - (pelican-fly - (the-as (function pelican int) (lambda () 1)) - (lambda ((arg0 pelican)) (if (and (>= (-> arg0 path-pos) 4.0) (>= 6.0 (-> arg0 path-pos))) - 1 - 0 - ) - ) - ) - ) - :post pelican-post - ) + :enter + (behavior ((arg0 path-control) (arg1 int)) + (set! (-> self path) arg0) + (set! (-> self path-pos) 0.0) + (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) + (set! (-> self path-speed) (/ (* 300.0 (-> self path-max)) (the float arg1)))) + :trans + (behavior () + (pelican-path-update 546133.3 30 0.0 0.0 #f) + (seek! (-> self path-pos) (-> self path-max) (* (-> self path-speed) (seconds-per-frame))) + (if (= (-> self path-pos) (-> self path-max)) (go pelican-wait-at-nest #f))) + :code + (behavior ((arg0 path-control) (arg1 int)) + (pelican-fly (the-as (function pelican int) (lambda () 1)) + (lambda ((arg0 pelican)) + (if (and (>= (-> arg0 path-pos) 4.0) (>= 6.0 (-> arg0 path-pos))) 1 0)))) + :post pelican-post) (defstate pelican-wait-at-nest (pelican) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (case (-> block param 1) - (('explode) - (let ((a0-2 (handle->process (-> self fuel-cell)))) - (if a0-2 - (send-event a0-2 'trans (-> self root trans)) - ) - ) - (go pelican-explode #f) - #f - ) - (else - (let* ((gp-0 proc) - (v1-13 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - (f30-0 8192.0) - (gp-1 (-> self root)) - (s4-0 (-> (the-as process-drawable v1-13) root trans)) - ) - (if (< f30-0 - (fabs - (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-0 (-> gp-1 trans)))) - ) - ) - (go pelican-spit) - ) - ) - ) - ) - ) - (('touch) - (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0) - ) - ) - ) - :enter (behavior ((arg0 symbol)) - (set! (-> self path) (-> self path-from-nest0)) - (set! (-> self path-pos) 0.0) - (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) - (set! (-> self path-speed) (/ (* 300.0 (-> self path-max)) (the float (-> *PELICAN-bank* from-nest-time)))) - (let ((s5-0 (-> self state-vector))) - (eval-path-curve-div! (-> self path) s5-0 (-> self path-pos) 'interp) - (set! (-> self state-float 0) - (/ (* 300.0 (vector-vector-distance (-> self root trans) s5-0)) (the float (-> *PELICAN-bank* land-time))) - ) - ) - (path-control-method-12 (-> self path) (-> self path-vector) (-> self path-pos)) - (when arg0 - (move-to-point! (-> self root) (-> self state-vector)) - (set-heading-vec! (-> self root) (-> self path-vector)) - (let ((a0-7 (handle->process (-> self fuel-cell)))) - (if a0-7 - (send-event a0-7 'draw #f) - ) - ) - (let ((a0-10 (-> self entity extra perm))) - (if (< 2 (-> a0-10 user-int8 0)) - (go pelican-explode #t) - ) - ) - ) - (if (nonzero? (-> self neck)) - (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) - ) - ) - :exit (behavior () - (if (nonzero? (-> self neck)) - (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) - ) - ) - :trans (behavior () - (let ((a1-0 (-> self state-vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> gp-0 quad) (-> self root trans quad)) - (vector-seek! gp-0 a1-0 (* (-> self state-float 0) (seconds-per-frame))) - (move-to-point! (-> self root) gp-0) - ) - (do-push-aways! (-> self root)) - (seek-toward-heading-vec! (-> self root) (-> self path-vector) 131072.0 (seconds 1)) - (spool-push *art-control* "pelican-spit-ext" 0 self -99.0) - ) - :code (behavior ((arg0 symbol)) - (cond - (arg0 - (ja-channel-set! 1) - ) - (else - (ja-no-eval :num! (loop! 0.25)) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! pelican-fly-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - (until (vector= (-> self root trans) (-> self state-vector)) - (suspend) - (ja :num! (loop!)) - ) - (ja-no-eval :num! (loop!)) - (set! (-> self state-float 0) (* 4.0 (-> self state-float 0))) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! pelican-land-ja :num! (seek!) :frame-num 0.0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (case (-> block param 1) + (('explode) + (let ((a0-2 (handle->process (-> self fuel-cell)))) (if a0-2 (send-event a0-2 'trans (-> self root trans)))) + (go pelican-explode #f) + #f) + (else + (let* ((gp-0 proc) + (v1-13 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0)) + (f30-0 8192.0) + (gp-1 (-> self root)) + (s4-0 (-> (the-as process-drawable v1-13) root trans))) + (if (< f30-0 (fabs (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-0 (-> gp-1 trans)))))) + (go pelican-spit)))))) + (('touch) (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0)))) + :enter + (behavior ((arg0 symbol)) + (set! (-> self path) (-> self path-from-nest0)) + (set! (-> self path-pos) 0.0) + (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) + (set! (-> self path-speed) (/ (* 300.0 (-> self path-max)) (the float (-> *PELICAN-bank* from-nest-time)))) + (let ((s5-0 (-> self state-vector))) + (eval-path-curve-div! (-> self path) s5-0 (-> self path-pos) 'interp) + (set! (-> self state-float 0) + (/ (* 300.0 (vector-vector-distance (-> self root trans) s5-0)) (the float (-> *PELICAN-bank* land-time))))) + (path-control-method-12 (-> self path) (-> self path-vector) (-> self path-pos)) + (when arg0 + (move-to-point! (-> self root) (-> self state-vector)) + (set-heading-vec! (-> self root) (-> self path-vector)) + (let ((a0-7 (handle->process (-> self fuel-cell)))) (if a0-7 (send-event a0-7 'draw #f))) + (let ((a0-10 (-> self entity extra perm))) (if (< 2 (-> a0-10 user-int8 0)) (go pelican-explode #t)))) + (if (nonzero? (-> self neck)) (set-mode! (-> self neck) (joint-mod-handler-mode look-at)))) + :exit + (behavior () + (if (nonzero? (-> self neck)) (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)))) + :trans + (behavior () + (let ((a1-0 (-> self state-vector)) + (gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (vector-seek! gp-0 a1-0 (* (-> self state-float 0) (seconds-per-frame))) + (move-to-point! (-> self root) gp-0)) + (do-push-aways! (-> self root)) + (seek-toward-heading-vec! (-> self root) (-> self path-vector) 131072.0 (seconds 1)) + (spool-push *art-control* "pelican-spit-ext" 0 self -99.0)) + :code + (behavior ((arg0 symbol)) + (cond + (arg0 (ja-channel-set! 1)) + (else + (ja-no-eval :num! (loop! 0.25)) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! pelican-fly-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))) + (until (vector= (-> self root trans) (-> self state-vector)) + (suspend) + (ja :num! (loop!))) + (ja-no-eval :num! (loop!)) + (set! (-> self state-float 0) (* 4.0 (-> self state-float 0))) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! pelican-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.5)))) + (send-event (handle->process (-> self cam-tracker)) 'message 'release) + (loop + (ja-no-eval :group! pelican-sleep-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (ja-blend-eval) (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.5)) - ) - ) - (send-event (handle->process (-> self cam-tracker)) 'message 'release) - (loop - (ja-no-eval :group! pelican-sleep-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post (behavior () - (when *target* - (if *target* - (look-at-enemy! (-> *target* neck) (the-as vector (-> self root root-prim prim-core)) 'nothing self) - ) - (if (nonzero? (-> self neck)) - (set-target! (-> self neck) (target-pos 5)) - ) - ) - (pelican-post) - ) - ) + (ja :num! (seek!))))) + :post + (behavior () + (when *target* + (if *target* (look-at-enemy! (-> *target* neck) (the-as vector (-> self root root-prim prim-core)) 'nothing self)) + (if (nonzero? (-> self neck)) (set-target! (-> self neck) (target-pos 5)))) + (pelican-post))) (defstate pelican-spit (pelican) - :event (-> pelican-circle event) - :code (behavior () - (local-vars (v1-21 symbol) (v1-31 symbol)) - (let ((gp-1 - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *beachcam-sg* #f :to self)) - ) - ) - (let ((s5-0 (get-process *default-dead-pool* othercam #x4000))) - (ppointer->handle (when s5-0 - (let ((t9-4 (method-of-type othercam activate))) - (t9-4 (the-as othercam s5-0) (-> gp-1 process 0) 'othercam (the-as pointer #x70004000)) - ) - (run-now-in-process s5-0 othercam-init-by-other (-> gp-1 process 0) 4 #f #t) - (-> s5-0 ppointer) - ) - ) - ) - (let ((s4-0 - (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) 0 :to self)) - ) - (s5-2 (new 'stack-no-clear 'quaternion)) - ) - (quaternion-copy! s5-2 (-> self root quat)) - (until v1-21 - (suspend) - (set! v1-21 (or (not *target*) (process-grab? *target*))) - ) - (send-event (-> gp-1 process 0) 'anim-mode 'clone-anim) - (ja-play-spooled-anim - (new 'static 'spool-anim - :name "pelican-spit-ext" - :index 11 - :parts 2 - :command-list '((10 send-event camera 'teleport-to-vector-start-string (static-vectorm -179 16 -421))) - ) - (the-as art-joint-anim pelican-sleep-ja) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (until v1-31 - (suspend) - (set! v1-31 (or (not *target*) (process-release? *target*))) - ) - (if (handle->process gp-1) - (deactivate (-> gp-1 process 0)) - ) - (if (handle->process s4-0) - (deactivate (-> s4-0 process 0)) - ) - (quaternion-copy! (-> self root quat) s5-2) - ) - ) - (process-spawn-function - process - (lambda :behavior pelican - () - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - ) - (suspend) - ) - (level-hint-spawn - (text-id beach-pelican-quick-get-cell) - "sksp0027" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (none) - ) - :to self - ) - (let ((gp-3 (handle->process (-> self fuel-cell)))) - (when gp-3 - (send-event gp-3 'release) - (set! (-> self path-cache) (-> self path-spit0)) - (let ((s5-3 (new 'stack-no-clear 'vector))) - (eval-path-curve-div! - (-> self path-cache) - s5-3 - (the float (+ (-> self path-cache curve num-cverts) -1)) - 'interp - ) - (send-event gp-3 'trans s5-3) - ) - (send-event gp-3 'draw #t) - (send-event gp-3 'event-hook (lambda :behavior pelican - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (or (= arg2 'touch) (= arg2 'attack)) - (let ((v1-7 (birth-pickup-at-point - (-> self root trans) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - *entity-pool* - (the-as fact-info #f) - ) - ) - ) - (when v1-7 - (set! (-> (the-as collectable (-> v1-7 0)) collect-timeout) 0) - 0 - ) - ) - (deactivate self) - ) - ) - ) - ) - ) - (go pelican-from-nest) - ) - :post (behavior () - (if (not (ja-group? pelican-sleep-ja)) - (quaternion-identity! (-> self root quat)) - ) - (pelican-post) - ) - ) + :event + (-> pelican-circle + event) + :code + (behavior () + (local-vars (v1-21 symbol) (v1-31 symbol)) + (let ((gp-1 (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *beachcam-sg* #f :to self)))) + (let ((s5-0 (get-process *default-dead-pool* othercam #x4000))) + (ppointer->handle (when s5-0 + (let ((t9-4 (method-of-type othercam activate))) + (t9-4 (the-as othercam s5-0) (-> gp-1 process 0) 'othercam (the-as pointer #x70004000))) + (run-now-in-process s5-0 othercam-init-by-other (-> gp-1 process 0) 4 #f #t) + (-> s5-0 ppointer)))) + (let ((s4-0 (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) 0 :to self))) + (s5-2 (new 'stack-no-clear 'quaternion))) + (quaternion-copy! s5-2 (-> self root quat)) + (until v1-21 + (suspend) + (set! v1-21 (or (not *target*) (process-grab? *target*)))) + (send-event (-> gp-1 process 0) 'anim-mode 'clone-anim) + (ja-play-spooled-anim (new 'static + 'spool-anim + :name "pelican-spit-ext" + :index 11 + :parts 2 + :command-list + '((10 send-event camera 'teleport-to-vector-start-string (static-vectorm -179 16 -421)))) + (the-as art-joint-anim pelican-sleep-ja) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (until v1-31 + (suspend) + (set! v1-31 (or (not *target*) (process-release? *target*)))) + (if (handle->process gp-1) (deactivate (-> gp-1 process 0))) + (if (handle->process s4-0) (deactivate (-> s4-0 process 0))) + (quaternion-copy! (-> self root quat) s5-2))) + (process-spawn-function process + (lambda :behavior pelican () + (while (or (-> *setting-control* current ambient) (-> *setting-control* current movie) (-> *setting-control* current hint)) + (suspend)) + (level-hint-spawn (text-id beach-pelican-quick-get-cell) "sksp0027" (the-as entity #f) *entity-pool* (game-task none)) + (none)) + :to + self) + (let ((gp-3 (handle->process (-> self fuel-cell)))) + (when gp-3 + (send-event gp-3 'release) + (set! (-> self path-cache) (-> self path-spit0)) + (let ((s5-3 (new 'stack-no-clear 'vector))) + (eval-path-curve-div! (-> self path-cache) s5-3 (the float (+ (-> self path-cache curve num-cverts) -1)) 'interp) + (send-event gp-3 'trans s5-3)) + (send-event gp-3 'draw #t) + (send-event gp-3 + 'event-hook + (lambda :behavior pelican ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (when (or (= arg2 'touch) (= arg2 'attack)) + (let ((v1-7 (birth-pickup-at-point (-> self root trans) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + *entity-pool* + (the-as fact-info #f)))) + (when v1-7 + (set! (-> (the-as collectable (-> v1-7 0)) collect-timeout) 0) + 0)) + (deactivate self)))))) + (go pelican-from-nest)) + :post + (behavior () + (if (not (ja-group? pelican-sleep-ja)) (quaternion-identity! (-> self root quat))) + (pelican-post))) (defstate pelican-from-nest (pelican) - :enter (behavior () - (set! (-> self path-pos) 1.5) - ) - :trans (behavior () - (pelican-path-update 131072.0 150 0.0 0.0 #f) - (seek! (-> self path-pos) (-> self path-max) (* (-> self path-speed) (seconds-per-frame))) - (if (= (-> self path-pos) (-> self path-max)) - (go pelican-dive (-> self path-dive1) (-> self path-to-nest1) (-> *PELICAN-bank* to-nest1-time)) - ) - ) - :code (behavior () - (pelican-fly - (the-as (function pelican int) (lambda () (rand-vu-int-range 2 4))) - (the-as (function pelican int) zero-func) - ) - ) - :post pelican-post - ) + :enter + (behavior () + (set! (-> self path-pos) 1.5)) + :trans + (behavior () + (pelican-path-update 131072.0 150 0.0 0.0 #f) + (seek! (-> self path-pos) (-> self path-max) (* (-> self path-speed) (seconds-per-frame))) + (if (= (-> self path-pos) (-> self path-max)) + (go pelican-dive (-> self path-dive1) (-> self path-to-nest1) (-> *PELICAN-bank* to-nest1-time)))) + :code + (behavior () + (pelican-fly (the-as (function pelican int) (lambda () (rand-vu-int-range 2 4))) + (the-as (function pelican int) zero-func))) + :post pelican-post) (defstate pelican-fly-to-end (pelican) - :enter (behavior ((arg0 path-control) (arg1 time-frame)) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 0) 10) - ) - (set-time! (-> self state-time)) - (set! (-> self path) arg0) - (set! (-> self path-pos) 0.0) - (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) - (set! (-> self path-speed) (/ (* 300.0 (-> self path-max)) (the float arg1))) - (set! (-> self state-vector quad) (-> self root trans quad)) - (set! (-> self state-float 0) 0.0) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (eval-path-curve-div! (-> self path) gp-1 0.0 'interp) - (set! (-> self state-float 1) (* 0.0073242188 (vector-vector-distance (-> self root trans) gp-1))) - ) - ) - :trans (behavior () - (pelican-path-update 546133.3 30 0.0 0.0 #f) - (seek! (-> self path-pos) (-> self path-max) (* (-> self path-speed) (seconds-per-frame))) - (if (= (-> self path-pos) (-> self path-max)) - (go pelican-wait-at-end #f) - ) - (when (not (time-elapsed? (-> self state-time) (the int (-> self state-float 1)))) - (set! (-> self state-float 0) (/ (the float (- (current-time) (-> self state-time))) (-> self state-float 1))) - (vector-lerp! (-> self root trans) (-> self state-vector) (-> self root trans) (-> self state-float 0)) - ) - ) - :code (behavior ((arg0 path-control) (arg1 time-frame)) - (pelican-fly - (the-as (function pelican int) (lambda () 1)) - (lambda ((arg0 pelican)) (if (and (>= (-> arg0 path-pos) 4.0) (>= 6.0 (-> arg0 path-pos))) - 1 - 0 - ) - ) - ) - ) - :post pelican-post - ) + :enter + (behavior ((arg0 path-control) (arg1 time-frame)) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 0) 10)) + (set-time! (-> self state-time)) + (set! (-> self path) arg0) + (set! (-> self path-pos) 0.0) + (set! (-> self path-max) (the float (+ (-> self path curve num-cverts) -1))) + (set! (-> self path-speed) (/ (* 300.0 (-> self path-max)) (the float arg1))) + (set! (-> self state-vector quad) (-> self root trans quad)) + (set! (-> self state-float 0) 0.0) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (eval-path-curve-div! (-> self path) gp-1 0.0 'interp) + (set! (-> self state-float 1) (* 0.0073242188 (vector-vector-distance (-> self root trans) gp-1))))) + :trans + (behavior () + (pelican-path-update 546133.3 30 0.0 0.0 #f) + (seek! (-> self path-pos) (-> self path-max) (* (-> self path-speed) (seconds-per-frame))) + (if (= (-> self path-pos) (-> self path-max)) (go pelican-wait-at-end #f)) + (when (not (time-elapsed? (-> self state-time) (the int (-> self state-float 1)))) + (set! (-> self state-float 0) (/ (the float (- (current-time) (-> self state-time))) (-> self state-float 1))) + (vector-lerp! (-> self root trans) (-> self state-vector) (-> self root trans) (-> self state-float 0)))) + :code + (behavior ((arg0 path-control) (arg1 time-frame)) + (pelican-fly (the-as (function pelican int) (lambda () 1)) + (lambda ((arg0 pelican)) + (if (and (>= (-> arg0 path-pos) 4.0) (>= 6.0 (-> arg0 path-pos))) 1 0)))) + :post pelican-post) (defstate pelican-wait-at-end (pelican) - :code (behavior ((arg0 symbol)) - (cleanup-for-death self) - ) - ) + :code + (behavior ((arg0 symbol)) + (cleanup-for-death self))) (defstate pelican-explode (pelican) - :code (behavior ((arg0 symbol)) - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 0) 5) - ) - (when (not arg0) - (sound-play "scrate-break") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 71) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - ) - (let ((gp-2 (new-stack-vector0))) - (set! (-> gp-2 quad) (-> self root trans quad)) - (let ((a0-7 (handle->process (-> self fuel-cell)))) - (when a0-7 - (set! (-> gp-2 quad) (-> (the-as process-drawable a0-7) root trans quad)) - (+! (-> gp-2 y) 8192.0) - (deactivate a0-7) - ) - ) - (when (not (task-complete? *game-info* (-> self entity extra perm task))) - (let ((v1-29 (birth-pickup-at-point - gp-2 - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) + :code + (behavior ((arg0 symbol)) + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 0) 5)) + (when (not arg0) + (sound-play "scrate-break") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 71) + -1 + #f + #f #f - self - (the-as fact-info #f) - ) - ) - ) - (send-event (ppointer->process v1-29) 'movie-pos 1) - ) - ) - ) - (clear-collide-with-as (-> self root)) - (ja-channel-set! 0) - (anim-loop) - ) - :post ja-post - ) + (-> self root trans) + :to + *entity-pool*)) + (let ((gp-2 (new-stack-vector0))) + (set! (-> gp-2 quad) (-> self root trans quad)) + (let ((a0-7 (handle->process (-> self fuel-cell)))) + (when a0-7 + (set! (-> gp-2 quad) (-> (the-as process-drawable a0-7) root trans quad)) + (+! (-> gp-2 y) 8192.0) + (deactivate a0-7))) + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (let ((v1-29 (birth-pickup-at-point gp-2 + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f)))) + (send-event (ppointer->process v1-29) 'movie-pos 1)))) + (clear-collide-with-as (-> self root)) + (ja-channel-set! 0) + (anim-loop)) + :post ja-post) (defmethod init-from-entity! ((this pelican) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 12288.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *pelican-sg* '()) - (set! (-> this draw shadow-ctrl) - (new 'process 'shadow-control -81920.0 4096.0 614400.0 (the-as float 25) 409600.0) - ) + (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control -81920.0 4096.0 614400.0 (the-as float 25) 409600.0)) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this align) (new 'process 'align-control this)) (dotimes (s5-1 8) (let ((v1-27 (new 'process 'curve-control this 'path (the float (+ s5-1 1))))) (set! (-> this path-data s5-1) v1-27) - (logior! (-> v1-27 flags) (path-control-flag display draw-line draw-point draw-text)) - ) - ) + (logior! (-> v1-27 flags) (path-control-flag display draw-line draw-point draw-text)))) (set! (-> this fuel-cell) (the-as handle #f)) (set! (-> this cam-tracker) (the-as handle #f)) (set! (-> this neck) (new 'process 'joint-mod (joint-mod-handler-mode flex-blend) this 9)) @@ -835,40 +585,17 @@ (set! (-> this neck max-dist) 61440.0) (set! (-> this neck ignore-angle) 16384.0) (case (-> this entity extra perm user-int8 0) - ((10) - (go pelican-wait-at-end #t) - ) - ((5) - (go pelican-wait-at-nest #t) - ) + ((10) (go pelican-wait-at-end #t)) + ((5) (go pelican-wait-at-nest #t)) ((2) - (let ((s5-2 - (manipy-spawn (-> this root trans) (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this) - ) - ) - (set! (-> this fuel-cell) (if s5-2 - (ppointer->handle s5-2) - (the-as handle #f) - ) - ) + (let ((s5-2 (manipy-spawn (-> this root trans) (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this))) + (set! (-> this fuel-cell) (if s5-2 (ppointer->handle s5-2) (the-as handle #f))) (when s5-2 - (send-event - (ppointer->process s5-2) - 'eval - (lambda :behavior pelican () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) - (send-event (ppointer->process s5-2) 'trans-hook fuel-cell-animate) - ) - ) - (go pelican-wait-at-nest #t) - ) - (else - (go pelican-circle) - ) - ) - (none) - ) + (send-event (ppointer->process s5-2) + 'eval + (lambda :behavior pelican () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) (set! (-> self part) v0-0) v0-0))) + (send-event (ppointer->process s5-2) 'trans-hook fuel-cell-animate))) + (go pelican-wait-at-nest #t)) + (else (go pelican-circle))) + (none)) diff --git a/goal_src/jak1/levels/beach/sculptor.gc b/goal_src/jak1/levels/beach/sculptor.gc index d411b6ee89..49498f79b8 100644 --- a/goal_src/jak1/levels/beach/sculptor.gc +++ b/goal_src/jak1/levels/beach/sculptor.gc @@ -1,346 +1,238 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/common-obs/process-taskable.gc") - -;; name: sculptor.gc -;; name in dgo: sculptor -;; dgos: BEA, L1 (declare-type muse nav-enemy) ;; DECOMP BEGINS (deftype sculptor (process-taskable) - ((muse handle) - ) - ) - - -(defskelgroup *sculptor-muse-sg* sculptor-muse sculptor-muse-lod0-jg sculptor-muse-idle-ja - ((sculptor-muse-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - ) - -(defskelgroup *sculptor-sg* sculptor sculptor-lod0-jg sculptor-sigh-ja - ((sculptor-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow sculptor-shadow-mg - ) + ((muse handle))) + +(defskelgroup *sculptor-muse-sg* + sculptor-muse + sculptor-muse-lod0-jg + sculptor-muse-idle-ja + ((sculptor-muse-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5)) + +(defskelgroup *sculptor-sg* + sculptor + sculptor-lod0-jg + sculptor-sigh-ja + ((sculptor-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow sculptor-shadow-mg) (defmethod process-taskable-method-52 ((this sculptor)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0)))) 0 - (set! (-> v1-1 settings top-plane w) (- (+ 2048.0 f0-0))) - ) - 0 - ) - ) - (none) - ) + (set! (-> v1-1 settings top-plane w) (- (+ 2048.0 f0-0)))) + 0)) + (none)) (defmethod draw-npc-shadow ((this sculptor)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defbehavior muse-to-idle sculptor ((arg0 muse)) (if (not (handle->process (-> arg0 incomming-attack-id))) - (set! (-> arg0 incomming-attack-id) - (ppointer->handle (manipy-spawn (-> arg0 collide-info trans) (-> arg0 entity) *sculptor-muse-sg* #f :to arg0)) - ) - ) + (set! (-> arg0 incomming-attack-id) + (ppointer->handle (manipy-spawn (-> arg0 collide-info trans) (-> arg0 entity) *sculptor-muse-sg* #f :to arg0)))) (let ((v1-11 (handle->process (-> arg0 incomming-attack-id)))) - (if v1-11 - (set! (-> (the-as muse v1-11) draw light-index) (the-as uint 3)) - ) - ) + (if v1-11 (set! (-> (the-as muse v1-11) draw light-index) (the-as uint 3)))) (send-event (handle->process (-> arg0 incomming-attack-id)) 'anim-mode 'loop) (send-event (handle->process (-> arg0 incomming-attack-id)) 'art-joint-anim "idle" 0) (send-event (handle->process (-> arg0 incomming-attack-id)) 'draw #t) - (send-event (handle->process (-> arg0 incomming-attack-id)) 'origin-joint-index 26) - ) + (send-event (handle->process (-> arg0 incomming-attack-id)) 'origin-joint-index 26)) (defstate give-cell (sculptor) :virtual #t - :enter (behavior () - (muse-to-idle (the-as muse self)) - ) - ) + :enter + (behavior () + (muse-to-idle (the-as muse self)))) (defmethod play-anim! ((this sculptor) (arg0 symbol)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sculptor-introduction" - :index 16 - :parts 14 - :command-list '((0 display-level beach special) - (0 kill "med-res-level-2") - (0 kill "med-res-level-4") - (0 kill "med-res-level-6") - (0 kill "med-res-level-7") - (0 kill "med-res-level-8") - (0 kill "med-res-level-11") - (0 kill "med-res-level-14") - (0 kill "med-res-level-22") - (0 kill "med-res-level-23") - (285 joint "cameraB") - (331 joint "camera") - (614 joint "cameraB") - (760 joint "camera") - (1183 joint "cameraB") - (1278 joint "camera") - (1433 joint "cameraB") - ) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sculptor-introduction" + :index 16 + :parts 14 + :command-list + '((0 display-level beach special) + (0 kill "med-res-level-2") + (0 kill "med-res-level-4") + (0 kill "med-res-level-6") + (0 kill "med-res-level-7") + (0 kill "med-res-level-8") + (0 kill "med-res-level-11") + (0 kill "med-res-level-14") + (0 kill "med-res-level-22") + (0 kill "med-res-level-23") + (285 joint "cameraB") + (331 joint "camera") + (614 joint "cameraB") + (760 joint "camera") + (1183 joint "cameraB") + (1278 joint "camera") + (1433 joint "cameraB")))) (((task-status need-reminder)) (set! (-> this skippable) #t) - (new 'static 'spool-anim :name "sculptor-reminder-1" :index 17 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "sculptor-reminder-1" :index 17 :parts 2 :command-list '())) (((task-status need-reward-speech)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) (close-current! (-> this tasks)) (set! (-> this muse) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *sculptor-muse-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *sculptor-muse-sg* #f :to this))) (let ((v1-18 (handle->process (-> this muse)))) - (if v1-18 - (set! (-> (the-as muse v1-18) draw light-index) (the-as uint 3)) - ) - ) + (if v1-18 (set! (-> (the-as muse v1-18) draw light-index) (the-as uint 3)))) (send-event (handle->process (-> this muse)) 'center-joint 4) - (send-event (handle->process (-> this muse)) 'anim-mode 'clone-anim) - ) - (new 'static 'spool-anim - :name "sculptor-resolution" - :index 18 - :parts 4 - :command-list '((51 joint "cameraB") (87 joint "camera")) - ) - ) + (send-event (handle->process (-> this muse)) 'anim-mode 'clone-anim)) + (new 'static + 'spool-anim + :name "sculptor-resolution" + :index 18 + :parts 4 + :command-list + '((51 joint "cameraB") (87 joint "camera")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 4) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 4)))) (defmethod get-art-elem ((this sculptor)) (case (current-status (-> this tasks)) - (((task-status invalid) (task-status need-resolution)) - (-> this draw art-group data 11) - ) - (else - (-> this draw art-group data 3) - ) - ) - ) + (((task-status invalid) (task-status need-resolution)) (-> this draw art-group data 11)) + (else (-> this draw art-group data 3)))) (defmethod process-taskable-method-43 ((this sculptor)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.85714287 f0-2) - (play-ambient (-> this ambient) "SCU-LO01" #f (-> this root trans)) - ) - ((< 0.71428573 f0-2) - (play-ambient (-> this ambient) "SCU-AM05" #f (-> this root trans)) - ) - ((< 0.5714286 f0-2) - (play-ambient (-> this ambient) "SCU-AM06" #f (-> this root trans)) - ) - ((< 0.42857143 f0-2) - (play-ambient (-> this ambient) "SCU-AM03" #f (-> this root trans)) - ) - ((< 0.2857143 f0-2) - (play-ambient (-> this ambient) "SCU-AM04" #f (-> this root trans)) - ) - ((< 0.14285715 f0-2) - (play-ambient (-> this ambient) "SCU-AM01" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "SCU-AM02" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.85714287 f0-2) (play-ambient (-> this ambient) "SCU-LO01" #f (-> this root trans))) + ((< 0.71428573 f0-2) (play-ambient (-> this ambient) "SCU-AM05" #f (-> this root trans))) + ((< 0.5714286 f0-2) (play-ambient (-> this ambient) "SCU-AM06" #f (-> this root trans))) + ((< 0.42857143 f0-2) (play-ambient (-> this ambient) "SCU-AM03" #f (-> this root trans))) + ((< 0.2857143 f0-2) (play-ambient (-> this ambient) "SCU-AM04" #f (-> this root trans))) + ((< 0.14285715 f0-2) (play-ambient (-> this ambient) "SCU-AM01" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "SCU-AM02" #f (-> this root trans))))))) (defstate idle (sculptor) :virtual #t - :code (behavior () - (when (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (get-art-elem self)) - ) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (case (current-status (-> self tasks)) - (((task-status invalid) (task-status need-resolution)) - (ja-no-eval :group! sculptor-from-looking-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (muse-to-idle (the-as muse self)) - ) - ) - (loop - (let ((v1-43 (current-status (-> self tasks)))) - (cond - ((or (= v1-43 (task-status invalid)) (= v1-43 (task-status need-resolution))) - (ja-no-eval :group! sculptor-to-small-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let* ((f30-0 4.0) - (v1-68 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-69 (the-as number (logior #x3f800000 v1-68))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-69)))) 4)) - (ja-no-eval :group! sculptor-small-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (let ((f30-1 (rand-float-gen))) - (ja-no-eval :group! sculptor-small-to-looking-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sculptor-looking-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sculptor-from-looking-ja :num! (seek!) :frame-num 0.0) + :code + (behavior () + (when (!= (ja-group) (get-art-elem self)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (get-art-elem self))) + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (case (current-status (-> self tasks)) + (((task-status invalid) (task-status need-resolution)) + (ja-no-eval :group! sculptor-from-looking-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (muse-to-idle (the-as muse self)))) + (loop + (let ((v1-43 (current-status (-> self tasks)))) + (cond + ((or (= v1-43 (task-status invalid)) (= v1-43 (task-status need-resolution))) + (ja-no-eval :group! sculptor-to-small-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (when (< f30-1 0.5) - (ja-no-eval :group! sculptor-to-huge-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let* ((f30-2 2.0) - (v1-190 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-191 (the-as number (logior #x3f800000 v1-190))) - ) - (countdown (gp-2 (+ (the int (* f30-2 (+ -1.0 (the-as float v1-191)))) 2)) - (ja-no-eval :group! sculptor-huge-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! sculptor-huge-to-looking-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!))) + (let* ((f30-0 4.0) + (v1-68 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-69 (the-as number (logior #x3f800000 v1-68)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-69)))) 4)) + (ja-no-eval :group! sculptor-small-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (let ((f30-1 (rand-float-gen))) + (ja-no-eval :group! sculptor-small-to-looking-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) + (ja :num! (seek!))) (ja-no-eval :group! sculptor-looking-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) + (ja :num! (seek!))) (ja-no-eval :group! sculptor-from-looking-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ((begin - (process-taskable-method-43 self) - (let* ((f30-3 4.0) - (v1-287 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-288 (the-as number (logior #x3f800000 v1-287))) - ) - (countdown (gp-3 (+ (the int (* f30-3 (+ -1.0 (the-as float v1-288)))) 4)) - (ja-no-eval :group! sculptor-idle-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!))) + (when (< f30-1 0.5) + (ja-no-eval :group! sculptor-to-huge-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (< (rand-float-gen) 0.5) - ) - (ja-no-eval :group! sculptor-sigh-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! sculptor-strikestart-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sculptor-strikemiddle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sculptor-strikeend-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - ) + (ja :num! (seek!))) + (let* ((f30-2 2.0) + (v1-190 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-191 (the-as number (logior #x3f800000 v1-190)))) + (countdown (gp-2 (+ (the int (* f30-2 (+ -1.0 (the-as float v1-191)))) 2)) + (ja-no-eval :group! sculptor-huge-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (ja-no-eval :group! sculptor-huge-to-looking-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! sculptor-looking-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! sculptor-from-looking-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) + ((begin + (process-taskable-method-43 self) + (let* ((f30-3 4.0) + (v1-287 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-288 (the-as number (logior #x3f800000 v1-287)))) + (countdown (gp-3 (+ (the int (* f30-3 (+ -1.0 (the-as float v1-288)))) 4)) + (ja-no-eval :group! sculptor-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (< (rand-float-gen) 0.5)) + (ja-no-eval :group! sculptor-sigh-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! sculptor-strikestart-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! sculptor-strikemiddle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! sculptor-strikeend-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))))))) (defmethod init-from-entity! ((this sculptor) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sculptor-sg* 3 40 (new 'static 'vector :w 4096.0) 5) @@ -349,5 +241,4 @@ (set! (-> this sound-flava) (music-flava sculptor)) (set! (-> this draw light-index) (the-as uint 3)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/beach/seagull.gc b/goal_src/jak1/levels/beach/seagull.gc index eff9d1d7a4..53c5139d26 100644 --- a/goal_src/jak1/levels/beach/seagull.gc +++ b/goal_src/jak1/levels/beach/seagull.gc @@ -1,15 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "levels/beach/air.gc") (require "engine/geometry/path.gc") (require "engine/collide/collide-cache.gc") (require "engine/common-obs/process-drawable.gc") -;; name: seagull.gc -;; name in dgo: seagull -;; dgos: BEA, L1 ;; note: modified for high fps (declare-type seagullflock process) @@ -21,206 +17,208 @@ (defpartgroup group-seagull-takeoff :id 160 :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 663 :fade-after (meters 20))) - ) + :parts ((sp-item 663 :fade-after (meters 20)))) (defpart 665 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.4)) - (:accel-y (meters -0.2)) - (:timer (seconds 5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.4)) + (:accel-y (meters -0.2)) + (:timer (seconds 5)) + (:flags (bit2 bit3)))) (define sound-seagull-squall (static-sound-spec "seagulls-2")) (deftype seagull (process-drawable) - ((root collide-shape-moving :override) - (index int32) - (flock (pointer seagullflock)) - (heading float) - (tilt float) - (max-tilt float) - (angletan float) - (target-dist float) - (scared int32) - (temp-heading float) - (temp-heading-time int32) - (part-time time-frame) - (thrust float) - (teleport symbol) - ) + ((root collide-shape-moving :override) + (index int32) + (flock (pointer seagullflock)) + (heading float) + (tilt float) + (max-tilt float) + (angletan float) + (target-dist float) + (scared int32) + (temp-heading float) + (temp-heading-time int32) + (part-time time-frame) + (thrust float) + (teleport symbol)) (:methods - (move-vertically! (_type_ symbol) none) - (adjust-heading-around-point-slow! (_type_ float) none) - (seagull-method-22 (_type_) none) - (adjust-heading-around-point! (_type_ float) none) - (seagull-method-24 (_type_) none) - (seagull-method-25 (_type_ float) none) - (seagull-method-26 (_type_) symbol) - (seagull-method-27 (_type_) none) - ) + (move-vertically! (_type_ symbol) none) + (adjust-heading-around-point-slow! (_type_ float) none) + (seagull-method-22 (_type_) none) + (adjust-heading-around-point! (_type_ float) none) + (seagull-method-24 (_type_) none) + (seagull-method-25 (_type_ float) none) + (seagull-method-26 (_type_) symbol) + (seagull-method-27 (_type_) none)) (:states - seagull-flying - seagull-idle - (seagull-landing float) - seagull-soaring - seagull-takeoff - ) - ) - + seagull-flying + seagull-idle + (seagull-landing float) + seagull-soaring + seagull-takeoff)) (deftype seagullflock (process) - ((self-override seagullflock :overlay-at self) - (path path-control) - (trans vector :inline) - (bird (pointer seagull) SEAGULLFLOCK_MAX) - (birds int32) - (link actor-link-info) - (bird-at-waterfall uint64) - (birds-at-waterfall int32) - (target vector :inline) - (targetnum int32) - (alert-time time-frame) - (teleport-frames int32) - (cam-tracker uint64) - (state-time time-frame) - (squall ambient-sound) - (max-lift float) - ) + ((self-override seagullflock :overlay-at self) + (path path-control) + (trans vector :inline) + (bird (pointer seagull) SEAGULLFLOCK_MAX) + (birds int32) + (link actor-link-info) + (bird-at-waterfall uint64) + (birds-at-waterfall int32) + (target vector :inline) + (targetnum int32) + (alert-time time-frame) + (teleport-frames int32) + (cam-tracker uint64) + (state-time time-frame) + (squall ambient-sound) + (max-lift float)) (:methods - (spawn-bird (_type_ vector) (pointer process)) - (play-hint (_type_ int) none) - (seagullflock-method-16 (_type_ seagull) float) - ) + (spawn-bird (_type_ vector) (pointer process)) + (play-hint (_type_ int) none) + (seagullflock-method-16 (_type_ seagull) float)) (:states - seagullflock-at-waterfall - seagullflock-idle - ) - ) - + seagullflock-at-waterfall + seagullflock-idle)) (defmethod relocate ((this seagullflock) (arg0 int)) - (if (nonzero? (-> this path)) - (&+! (-> this path) arg0) - ) - (if (nonzero? (-> this link)) - (&+! (-> this link) arg0) - ) - (if (nonzero? (-> this squall)) - (&+! (-> this squall) arg0) - ) - (the-as seagullflock ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this path)) (&+! (-> this path) arg0)) + (if (nonzero? (-> this link)) (&+! (-> this link) arg0)) + (if (nonzero? (-> this squall)) (&+! (-> this squall) arg0)) + (the-as seagullflock ((method-of-type process relocate) this arg0))) (defmethod deactivate ((this seagullflock)) - (if (nonzero? (-> this squall)) - (stop! (-> this squall)) - ) + (if (nonzero? (-> this squall)) (stop! (-> this squall))) ((method-of-type process deactivate) this) - (none) - ) + (none)) (define *seagull-boxes* - (new 'static 'inline-array air-box 10 - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1146880.0 :y 143360.0 :z -1638400.0 :w -0.6427) - (new 'static 'vector :x 286720.0 :z 716800.0 :w -0.766) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1277952.0 :y 14336.0 :z -1306624.0 :w -0.6427) - (new 'static 'vector :x 675840.0 :z 114688.0 :w -0.766) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1474560.0 :y 10240.0 :z -1024000.0 :w -0.6427) - (new 'static 'vector :x 1228800.0 :z 339968.0 :w -0.766) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1822720.0 :y 27033.6 :z -1961984.0 :w -0.6427) - (new 'static 'vector :x 143360.0 :z 245760.0 :w -0.766) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1589248.0 :y 43417.6 :z -1933312.0 :w -0.6427) - (new 'static 'vector :x 204800.0 :z 184320.0 :w -0.766) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1597440.0 :y 24985.6 :z -1757184.0 :w -0.6427) - (new 'static 'vector :x 133120.0 :z 491520.0 :w -0.766) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1323008.0 :y 44236.8 :z -1771520.0 :w -0.6427) - (new 'static 'vector :x 360448.0 :z 221184.0 :w -0.766) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1441792.0 :y 24985.6 :z -1564672.0 :w -0.6427) - (new 'static 'vector :x 81920.0 :z 421888.0 :w -0.766) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -1124352.0 :y 27975.68 :z -1581465.6 :w -0.8533) - (new 'static 'vector :x 204800.0 :z 221184.0 :w -0.5214) - ) - ) - (new 'static 'air-box :vecs (new 'static 'inline-array vector 2 - (new 'static 'vector :x -737280.0 :y 122880.0 :z -1396736.0 :w -0.8533) - (new 'static 'vector :x 475136.0 :z 819200.0 :w -0.5214) - ) - ) - ) - ) - -(defskelgroup *seagull-sg* seagull seagull-lod0-jg seagull-idle-ja - ((seagull-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) + (new 'static + 'inline-array + air-box + 10 + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1146880.0 :y 143360.0 :z -1638400.0 :w -0.6427) + (new 'static 'vector :x 286720.0 :z 716800.0 :w -0.766))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1277952.0 :y 14336.0 :z -1306624.0 :w -0.6427) + (new 'static 'vector :x 675840.0 :z 114688.0 :w -0.766))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1474560.0 :y 10240.0 :z -1024000.0 :w -0.6427) + (new 'static 'vector :x 1228800.0 :z 339968.0 :w -0.766))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1822720.0 :y 27033.6 :z -1961984.0 :w -0.6427) + (new 'static 'vector :x 143360.0 :z 245760.0 :w -0.766))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1589248.0 :y 43417.6 :z -1933312.0 :w -0.6427) + (new 'static 'vector :x 204800.0 :z 184320.0 :w -0.766))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1597440.0 :y 24985.6 :z -1757184.0 :w -0.6427) + (new 'static 'vector :x 133120.0 :z 491520.0 :w -0.766))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1323008.0 :y 44236.8 :z -1771520.0 :w -0.6427) + (new 'static 'vector :x 360448.0 :z 221184.0 :w -0.766))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1441792.0 :y 24985.6 :z -1564672.0 :w -0.6427) + (new 'static 'vector :x 81920.0 :z 421888.0 :w -0.766))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -1124352.0 :y 27975.68 :z -1581465.6 :w -0.8533) + (new 'static 'vector :x 204800.0 :z 221184.0 :w -0.5214))) + (new 'static + 'air-box + :vecs + (new 'static + 'inline-array + vector + 2 + (new 'static 'vector :x -737280.0 :y 122880.0 :z -1396736.0 :w -0.8533) + (new 'static 'vector :x 475136.0 :z 819200.0 :w -0.5214))))) + +(defskelgroup *seagull-sg* + seagull + seagull-lod0-jg + seagull-idle-ja + ((seagull-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) (defmethod seagull-method-25 ((this seagull) (arg0 float)) (let ((f1-1 (the float (sar (shl (the int (- arg0 (-> this heading))) 48) 48))) - (f0-5 (- (-> this tilt))) - ) + (f0-5 (- (-> this tilt)))) (let ((f2-0 (-> this max-tilt))) - (set! f0-5 (cond - ((< f1-1 -364.0889) - (if (< (- f2-0) f0-5) - (set! f0-5 (+ -91.022224 f0-5)) - ) - f0-5 - ) - ((< 364.0889 f1-1) - (if (< f0-5 f2-0) - (set! f0-5 (+ 91.022224 f0-5)) - ) - f0-5 - ) - ((< f0-5 0.0) - (+ 91.022224 f0-5) - ) - (else - (+ -91.022224 f0-5) - ) - ) - ) - ) + (set! f0-5 + (cond + ((< f1-1 -364.0889) (if (< (- f2-0) f0-5) (set! f0-5 (+ -91.022224 f0-5))) f0-5) + ((< 364.0889 f1-1) (if (< f0-5 f2-0) (set! f0-5 (+ 91.022224 f0-5))) f0-5) + ((< f0-5 0.0) (+ 91.022224 f0-5)) + (else (+ -91.022224 f0-5))))) (set! (-> this tilt) (- f0-5)) - (set! (-> this heading) (the float (sar (shl (the int (+ (-> this heading) (* 0.05 f0-5))) 48) 48))) - ) + (set! (-> this heading) (the float (sar (shl (the int (+ (-> this heading) (* 0.05 f0-5))) 48) 48)))) 0 - (none) - ) + (none)) (defmethod seagull-method-24 ((this seagull)) (let ((s5-0 (new 'stack-no-clear 'vector))) @@ -229,934 +227,556 @@ (let ((v1-5 (ash 1 (-> this index)))) (when (not (logtest? v1-5 (-> this flock 0 bird-at-waterfall))) (logior! (-> this flock 0 bird-at-waterfall) v1-5) - (+! (-> this flock 0 birds-at-waterfall) 1) - ) - ) - ) + (+! (-> this flock 0 birds-at-waterfall) 1)))) (cond ((> (-> this temp-heading-time) 0) (+! (-> this temp-heading-time) -1) (let* ((v1-15 this) (f1-2 (the float (sar (shl (the int (- (-> this temp-heading) (-> v1-15 heading))) 48) 48))) - (f0-7 (- (-> v1-15 tilt))) - ) + (f0-7 (- (-> v1-15 tilt)))) (let ((f2-0 (-> v1-15 max-tilt))) - (set! f0-7 (cond - ((< f1-2 -364.0889) - (if (< (- f2-0) f0-7) - (set! f0-7 (+ -91.022224 f0-7)) - ) - f0-7 - ) - ((< 364.0889 f1-2) - (if (< f0-7 f2-0) - (set! f0-7 (+ 91.022224 f0-7)) - ) - f0-7 - ) - ((< f0-7 0.0) - (+ 91.022224 f0-7) - ) - (else - (+ -91.022224 f0-7) - ) - ) - ) - ) + (set! f0-7 + (cond + ((< f1-2 -364.0889) (if (< (- f2-0) f0-7) (set! f0-7 (+ -91.022224 f0-7))) f0-7) + ((< 364.0889 f1-2) (if (< f0-7 f2-0) (set! f0-7 (+ 91.022224 f0-7))) f0-7) + ((< f0-7 0.0) (+ 91.022224 f0-7)) + (else (+ -91.022224 f0-7))))) (set! (-> v1-15 tilt) (- f0-7)) - (set! (-> v1-15 heading) (the float (sar (shl (the int (+ (-> v1-15 heading) (* 0.05 f0-7))) 48) 48))) - ) - 0 - ) + (set! (-> v1-15 heading) (the float (sar (shl (the int (+ (-> v1-15 heading) (* 0.05 f0-7))) 48) 48)))) + 0) (else - (let* ((f0-15 (atan (-> s5-0 x) (-> s5-0 z))) - (v1-18 this) - (f1-12 (the float (sar (shl (the int (- f0-15 (-> v1-18 heading))) 48) 48))) - (f0-20 (- (-> v1-18 tilt))) - ) - (let ((f2-2 (-> v1-18 max-tilt))) - (set! f0-20 (cond - ((< f1-12 -364.0889) - (if (< (- f2-2) f0-20) - (set! f0-20 (+ -91.022224 f0-20)) - ) - f0-20 - ) - ((< 364.0889 f1-12) - (if (< f0-20 f2-2) - (set! f0-20 (+ 91.022224 f0-20)) - ) - f0-20 - ) - ((< f0-20 0.0) - (+ 91.022224 f0-20) - ) - (else - (+ -91.022224 f0-20) - ) - ) - ) - ) - (set! (-> v1-18 tilt) (- f0-20)) - (set! (-> v1-18 heading) (the float (sar (shl (the int (+ (-> v1-18 heading) (* 0.05 f0-20))) 48) 48))) - ) - 0 - ) - ) + (let* ((f0-15 (atan (-> s5-0 x) (-> s5-0 z))) + (v1-18 this) + (f1-12 (the float (sar (shl (the int (- f0-15 (-> v1-18 heading))) 48) 48))) + (f0-20 (- (-> v1-18 tilt)))) + (let ((f2-2 (-> v1-18 max-tilt))) + (set! f0-20 + (cond + ((< f1-12 -364.0889) (if (< (- f2-2) f0-20) (set! f0-20 (+ -91.022224 f0-20))) f0-20) + ((< 364.0889 f1-12) (if (< f0-20 f2-2) (set! f0-20 (+ 91.022224 f0-20))) f0-20) + ((< f0-20 0.0) (+ 91.022224 f0-20)) + (else (+ -91.022224 f0-20))))) + (set! (-> v1-18 tilt) (- f0-20)) + (set! (-> v1-18 heading) (the float (sar (shl (the int (+ (-> v1-18 heading) (* 0.05 f0-20))) 48) 48)))) + 0)) (let ((f0-28 (+ (* (-> s5-0 x) (-> s5-0 x)) (* (-> s5-0 z) (-> s5-0 z))))) (set! (-> this angletan) (/ (- (-> s5-0 y)) (sqrtf f0-28))) ;; og:preserve-this changed for high fps - (set! (-> this target-dist) (* DISPLAY_FPS_RATIO (sqrtf (+ f0-28 (* (-> s5-0 y) (-> s5-0 y)))))) - ) - ) + (set! (-> this target-dist) (* DISPLAY_FPS_RATIO (sqrtf (+ f0-28 (* (-> s5-0 y) (-> s5-0 y)))))))) 0 - (none) - ) + (none)) (defbehavior seagull-post seagull () (let ((s5-0 (new 'stack-no-clear 'quaternion)) - (gp-0 (new 'stack-no-clear 'quaternion)) - ) + (gp-0 (new 'stack-no-clear 'quaternion))) (quaternion-axis-angle! s5-0 0.0 0.0 1.0 (-> self tilt)) (quaternion-axis-angle! gp-0 0.0 1.0 0.0 (-> self heading)) - (quaternion*! (-> self root quat) gp-0 s5-0) - ) + (quaternion*! (-> self root quat) gp-0 s5-0)) (transform-post) 0 - (none) - ) + (none)) (defstate seagull-idle (seagull) - :enter (behavior () - (let* ((v1-0 (-> self flock)) - (f30-0 (seagullflock-method-16 - (if v1-0 - (-> v1-0 0 self-override) - ) - self - ) - ) - (f28-0 21845.334) - (f26-0 -0.5) - ) - (set! (-> self heading) - (the float (sar (shl (the int (+ f30-0 (* f28-0 (+ f26-0 (rand-float-gen))))) 48) 48)) - ) - ) - ) - :trans (behavior () - (when (nonzero? (-> self scared)) - (+! (-> self scared) -1) - (when (zero? (-> self scared)) - (restore-collide-with-as (-> self root)) - (go seagull-takeoff) - ) - ) - (when *target* - (let ((v1-12 (vector-! (new 'stack-no-clear 'vector) (-> *target* control trans) (-> self root trans)))) - (when (< (vector-dot v1-12 v1-12) 1677721600.0) - (let ((v1-14 (-> self flock))) - (play-hint - (if v1-14 - (-> v1-14 0 self-override) - ) - (-> self index) - ) - ) - ) - ) - ) - ) - :code (behavior () - (+! (-> self root trans y) 20480.0) - (move-to-ground (-> self root) 40960.0 40960.0 #t (collide-kind background)) - (update-transforms! (-> self root)) - (clear-collide-with-as (-> self root)) - (ja :group! seagull-idle-ja :num! (identity (ja-aframe 0.0 0))) - (loop - (let* ((f30-0 4.0) - (v1-14 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-15 (the-as number (logior #x3f800000 v1-14))) - (gp-1 (the int (* f30-0 (+ -1.0 (the-as float v1-15))))) - ) - (let* ((f30-1 60.0) - (v1-18 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-19 (the-as number (logior #x3f800000 v1-18))) - (s5-0 (the int (* f30-1 (+ -1.0 (the-as float v1-19))))) - ) - (dotimes (s4-0 s5-0) - (suspend) - ) - ) - (cond - ((zero? gp-1) - (ja-no-eval :group! seagull-idle-ja :num! (seek! (ja-aframe 4.0 0)) :frame-num (ja-aframe 0.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 4.0 0))) - ) - (let* ((f30-2 60.0) - (v1-37 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-38 (the-as number (logior #x3f800000 v1-37))) - (gp-4 (the int (* f30-2 (+ -1.0 (the-as float v1-38))))) - ) - (dotimes (s5-1 gp-4) + :enter + (behavior () + (let* ((v1-0 (-> self flock)) + (f30-0 (seagullflock-method-16 (if v1-0 (-> v1-0 0 self-override)) self)) + (f28-0 21845.334) + (f26-0 -0.5)) + (set! (-> self heading) (the float (sar (shl (the int (+ f30-0 (* f28-0 (+ f26-0 (rand-float-gen))))) 48) 48))))) + :trans + (behavior () + (when (nonzero? (-> self scared)) + (+! (-> self scared) -1) + (when (zero? (-> self scared)) + (restore-collide-with-as (-> self root)) + (go seagull-takeoff))) + (when *target* + (let ((v1-12 (vector-! (new 'stack-no-clear 'vector) (-> *target* control trans) (-> self root trans)))) + (when (< (vector-dot v1-12 v1-12) 1677721600.0) + (let ((v1-14 (-> self flock))) (play-hint (if v1-14 (-> v1-14 0 self-override)) (-> self index))))))) + :code + (behavior () + (+! (-> self root trans y) 20480.0) + (move-to-ground (-> self root) 40960.0 40960.0 #t (collide-kind background)) + (update-transforms! (-> self root)) + (clear-collide-with-as (-> self root)) + (ja :group! seagull-idle-ja :num! (identity (ja-aframe 0.0 0))) + (loop + (let* ((f30-0 4.0) + (v1-14 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-15 (the-as number (logior #x3f800000 v1-14))) + (gp-1 (the int (* f30-0 (+ -1.0 (the-as float v1-15)))))) + (let* ((f30-1 60.0) + (v1-18 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-19 (the-as number (logior #x3f800000 v1-18))) + (s5-0 (the int (* f30-1 (+ -1.0 (the-as float v1-19)))))) + (dotimes (s4-0 s5-0) + (suspend))) + (cond + ((zero? gp-1) + (ja-no-eval :group! seagull-idle-ja :num! (seek! (ja-aframe 4.0 0)) :frame-num (ja-aframe 0.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 4.0 0)))) + (let* ((f30-2 60.0) + (v1-37 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-38 (the-as number (logior #x3f800000 v1-37))) + (gp-4 (the int (* f30-2 (+ -1.0 (the-as float v1-38)))))) + (dotimes (s5-1 gp-4) + (suspend))) + (ja-no-eval :group! seagull-idle-ja :num! (seek! (ja-aframe 10.0 0)) :frame-num (ja-aframe 4.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 10.0 0)))) + (let* ((f30-3 60.0) + (v1-55 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-56 (the-as number (logior #x3f800000 v1-55))) + (gp-7 (the int (* f30-3 (+ -1.0 (the-as float v1-56)))))) + (dotimes (s5-2 gp-7) + (suspend))) + (ja-no-eval :group! seagull-idle-ja :num! (seek! (ja-aframe 14.0 0)) :frame-num (ja-aframe 10.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 14.0 0))))) + ((= gp-1 2) + (ja-no-eval :group! seagull-peck-ja :num! (seek! (ja-aframe 4.0 0)) :frame-num (ja-aframe 0.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 4.0 0))))) + ((= gp-1 3) + (ja-no-eval :group! seagull-peck-ja :num! (seek! (ja-aframe 8.0 0)) :frame-num (ja-aframe 4.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! seagull-idle-ja :num! (seek! (ja-aframe 10.0 0)) :frame-num (ja-aframe 4.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 10.0 0))) - ) - (let* ((f30-3 60.0) - (v1-55 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-56 (the-as number (logior #x3f800000 v1-55))) - (gp-7 (the int (* f30-3 (+ -1.0 (the-as float v1-56))))) - ) - (dotimes (s5-2 gp-7) + (ja :num! (seek! (ja-aframe 8.0 0))))) + ((= gp-1 4) + (ja-no-eval :group! seagull-peck-ja :num! (seek! (ja-aframe 12.0 0)) :frame-num (ja-aframe 8.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! seagull-idle-ja :num! (seek! (ja-aframe 14.0 0)) :frame-num (ja-aframe 10.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 14.0 0))) - ) - ) - ((= gp-1 2) - (ja-no-eval :group! seagull-peck-ja :num! (seek! (ja-aframe 4.0 0)) :frame-num (ja-aframe 0.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 4.0 0))) - ) - ) - ((= gp-1 3) - (ja-no-eval :group! seagull-peck-ja :num! (seek! (ja-aframe 8.0 0)) :frame-num (ja-aframe 4.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 8.0 0))) - ) - ) - ((= gp-1 4) - (ja-no-eval :group! seagull-peck-ja :num! (seek! (ja-aframe 12.0 0)) :frame-num (ja-aframe 8.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 12.0 0))) - ) - ) - ) - ) - ) - ) - :post seagull-post - ) + (ja :num! (seek! (ja-aframe 12.0 0))))))))) + :post seagull-post) (defmethod move-vertically! ((this seagull) (arg0 symbol)) (let ((f0-0 (-> this root transv y))) - (set! f0-0 (cond - (arg0 - (if (< f0-0 (-> this flock 0 max-lift)) - (set! f0-0 (+ 12288.0 f0-0)) - ) - f0-0 - ) - (else - (+ -4096.0 f0-0) - ) - ) - ) + (set! f0-0 + (cond + (arg0 (if (< f0-0 (-> this flock 0 max-lift)) (set! f0-0 (+ 12288.0 f0-0))) f0-0) + (else (+ -4096.0 f0-0)))) ;; og:preserve-this changed for high fps - (set! (-> this root transv y) (* DISPLAY_FPS_RATIO f0-0)) - ) + (set! (-> this root transv y) (* DISPLAY_FPS_RATIO f0-0))) 0 - (none) - ) + (none)) (defmethod seagull-method-26 ((this seagull)) (let ((s5-0 (new 'stack-no-clear 'vector))) (let ((f30-0 -4096.0) - (f28-0 8192.0) - ) - (set! (-> s5-0 x) (+ f30-0 (* f28-0 (rand-float-gen)) (-> this flock 0 target x))) - ) + (f28-0 8192.0)) + (set! (-> s5-0 x) (+ f30-0 (* f28-0 (rand-float-gen)) (-> this flock 0 target x)))) (let ((f30-1 -4096.0) - (f28-1 8192.0) - ) - (set! (-> s5-0 y) (+ f30-1 (* f28-1 (rand-float-gen)) (-> this flock 0 target y))) - ) + (f28-1 8192.0)) + (set! (-> s5-0 y) (+ f30-1 (* f28-1 (rand-float-gen)) (-> this flock 0 target y)))) (let ((f30-2 -4096.0) - (f28-2 8192.0) - ) - (set! (-> s5-0 z) (+ f30-2 (* f28-2 (rand-float-gen)) (-> this flock 0 target z))) - ) + (f28-2 8192.0)) + (set! (-> s5-0 z) (+ f30-2 (* f28-2 (rand-float-gen)) (-> this flock 0 target z)))) (vector-! s5-0 s5-0 (-> this root trans)) (vector-float*! s5-0 s5-0 0.9) - (move-by-vector! (-> this root) s5-0) - ) + (move-by-vector! (-> this root) s5-0)) (set! (-> this teleport) #f) - #f - ) + #f) (defmethod adjust-heading-around-point-slow! ((this seagull) (arg0 float)) (let ((f30-1 (* arg0 (sin (-> this heading)))) - (f0-4 (* arg0 (cos (-> this heading)))) - ) + (f0-4 (* arg0 (cos (-> this heading))))) ;; og:preserve-this changed for high fps (set! (-> this root transv x) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> this root transv x)) (* 0.2 f30-1)))) - (set! (-> this root transv z) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> this root transv z)) (* 0.2 f0-4)))) - ) + (set! (-> this root transv z) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> this root transv z)) (* 0.2 f0-4))))) 0 - (none) - ) + (none)) (defmethod adjust-heading-around-point! ((this seagull) (arg0 float)) (let ((f30-1 (* arg0 (sin (-> this heading)))) - (f0-4 (* arg0 (cos (-> this heading)))) - ) + (f0-4 (* arg0 (cos (-> this heading))))) ;; og:preserve-this changed for high fps (set! (-> this root transv x) (* DISPLAY_FPS_RATIO f30-1)) - (set! (-> this root transv z) (* DISPLAY_FPS_RATIO f0-4)) - ) + (set! (-> this root transv z) (* DISPLAY_FPS_RATIO f0-4))) 0 - (none) - ) + (none)) (defmethod seagull-method-22 ((this seagull)) (set! (-> this root transv y) -8192.0) 0 - (none) - ) + (none)) (defmethod seagull-method-27 ((this seagull)) (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((v1-0 (new 'stack-no-clear 'vector)) (a0-2 (-> this root trans)) (s5-0 (-> this root transv)) - (a1-1 (new 'stack-no-clear 'vector)) - ) + (a1-1 (new 'stack-no-clear 'vector))) (let ((a2-0 v1-0)) (.lvf vf1 (&-> s5-0 quad)) - (let ((f0-0 (seconds-per-frame))) - (.mov at-0 f0-0) - ) + (let ((f0-0 (seconds-per-frame))) (.mov at-0 f0-0)) (.mov vf2 at-0) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a2-0 quad) vf1) - ) + (.svf (&-> a2-0 quad) vf1)) (vector+! a1-1 a0-2 v1-0) (if (points-in-air? a0-2 a1-1 *seagull-boxes* 10) - (integrate-no-collide! (-> this root) (-> this root transv)) - (fill-cache-integrate-and-collide! (-> this root) s5-0 (collide-kind background)) - ) - ) - (none) - ) - ) + (integrate-no-collide! (-> this root) (-> this root transv)) + (fill-cache-integrate-and-collide! (-> this root) s5-0 (collide-kind background)))) + (none))) (defstate seagull-takeoff (seagull) - :trans (behavior () - (when (< (+ (current-time) (seconds -2)) (-> self part-time)) - (-> self part) - (-> self root root-prim prim-core) - ) - ) - :code (behavior () - (set-time! (-> self part-time)) - (ja-no-eval :group! seagull-takeoff-ja :num! (seek! (ja-aframe 4.0 0)) :frame-num (ja-aframe 1.0 0)) - (until (ja-done? 0) - (when (and (>= (ja-frame-num 0) (ja-aframe 2.0 0)) (>= (ja-aframe 3.0 0) (ja-frame-num 0))) - (let* ((v1-13 self) - (a0-7 #t) - (f0-5 (-> v1-13 root transv y)) - ) - (set! f0-5 (cond - (a0-7 - (if (< f0-5 (-> v1-13 flock 0 max-lift)) - (set! f0-5 (+ 12288.0 f0-5)) - ) - f0-5 - ) - (else - (+ -4096.0 f0-5) - ) - ) - ) - ;; og:preserve-this changed for high fps - (set! (-> v1-13 root transv y) (* DISPLAY_FPS_RATIO f0-5)) - ) - 0 - (let* ((gp-1 self) - (f28-0 (-> self thrust)) - (f30-2 (* f28-0 (sin (-> gp-1 heading)))) - (f0-10 (* f28-0 (cos (-> gp-1 heading)))) - ) - ;; og:preserve-this changed for high fps - (set! (-> gp-1 root transv x) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> gp-1 root transv x)) (* 0.2 f30-2)))) - (set! (-> gp-1 root transv z) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> gp-1 root transv z)) (* 0.2 f0-10)))) - ) - 0 - ) - (seagull-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 4.0 0))) - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.067)) - (go seagull-flying) - ) - :post seagull-post - ) + :trans + (behavior () + (when (< (+ (current-time) (seconds -2)) (-> self part-time)) + (-> self part) + (-> self root root-prim prim-core))) + :code + (behavior () + (set-time! (-> self part-time)) + (ja-no-eval :group! seagull-takeoff-ja :num! (seek! (ja-aframe 4.0 0)) :frame-num (ja-aframe 1.0 0)) + (until (ja-done? 0) + (when (and (>= (ja-frame-num 0) (ja-aframe 2.0 0)) (>= (ja-aframe 3.0 0) (ja-frame-num 0))) + (let* ((v1-13 self) + (a0-7 #t) + (f0-5 (-> v1-13 root transv y))) + (set! f0-5 + (cond + (a0-7 (if (< f0-5 (-> v1-13 flock 0 max-lift)) (set! f0-5 (+ 12288.0 f0-5))) f0-5) + (else (+ -4096.0 f0-5)))) + ;; og:preserve-this changed for high fps + (set! (-> v1-13 root transv y) (* DISPLAY_FPS_RATIO f0-5))) + 0 + (let* ((gp-1 self) + (f28-0 (-> self thrust)) + (f30-2 (* f28-0 (sin (-> gp-1 heading)))) + (f0-10 (* f28-0 (cos (-> gp-1 heading))))) + ;; og:preserve-this changed for high fps + (set! (-> gp-1 root transv x) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> gp-1 root transv x)) (* 0.2 f30-2)))) + (set! (-> gp-1 root transv z) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> gp-1 root transv z)) (* 0.2 f0-10))))) + 0) + (seagull-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 4.0 0)))) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.067)) + (go seagull-flying)) + :post seagull-post) (defstate seagull-flying (seagull) - :trans (behavior () - (when (< (+ (current-time) (seconds -2)) (-> self part-time)) - (-> self part) - (-> self root root-prim prim-core) - ) - ) - :code (behavior () - (set! (-> self max-tilt) 1820.4445) - (let ((gp-0 0)) + :trans + (behavior () + (when (< (+ (current-time) (seconds -2)) (-> self part-time)) + (-> self part) + (-> self root root-prim prim-core))) + :code + (behavior () + (set! (-> self max-tilt) 1820.4445) + (let ((gp-0 0)) + (loop + (ja-no-eval :group! seagull-fly-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (when (-> self teleport) + (seagull-method-26 self) + (suspend) + 0) + (let ((s5-0 self) + (s4-0 (new 'stack-no-clear 'vector))) + (vector-! s4-0 (-> s5-0 flock 0 target) (-> s5-0 root trans)) + (when (< (vector-dot s4-0 s4-0) 6710886400.0) + (let ((v1-24 (ash 1 (-> s5-0 index)))) + (when (not (logtest? v1-24 (-> s5-0 flock 0 bird-at-waterfall))) + (logior! (-> s5-0 flock 0 bird-at-waterfall) v1-24) + (+! (-> s5-0 flock 0 birds-at-waterfall) 1)))) + (cond + ((> (-> s5-0 temp-heading-time) 0) + (+! (-> s5-0 temp-heading-time) -1) + (let* ((v1-34 s5-0) + (f1-2 (the float (sar (shl (the int (- (-> s5-0 temp-heading) (-> v1-34 heading))) 48) 48))) + (f0-12 (- (-> v1-34 tilt)))) + (let ((f2-0 (-> v1-34 max-tilt))) + (set! f0-12 + (cond + ((< f1-2 -364.0889) (if (< (- f2-0) f0-12) (set! f0-12 (+ -91.022224 f0-12))) f0-12) + ((< 364.0889 f1-2) (if (< f0-12 f2-0) (set! f0-12 (+ 91.022224 f0-12))) f0-12) + ((< f0-12 0.0) (+ 91.022224 f0-12)) + (else (+ -91.022224 f0-12))))) + (set! (-> v1-34 tilt) (- f0-12)) + (set! (-> v1-34 heading) (the float (sar (shl (the int (+ (-> v1-34 heading) (* 0.05 f0-12))) 48) 48)))) + 0) + (else + (let* ((f0-20 (atan (-> s4-0 x) (-> s4-0 z))) + (v1-37 s5-0) + (f1-12 (the float (sar (shl (the int (- f0-20 (-> v1-37 heading))) 48) 48))) + (f0-25 (- (-> v1-37 tilt)))) + (let ((f2-2 (-> v1-37 max-tilt))) + (set! f0-25 + (cond + ((< f1-12 -364.0889) (if (< (- f2-2) f0-25) (set! f0-25 (+ -91.022224 f0-25))) f0-25) + ((< 364.0889 f1-12) (if (< f0-25 f2-2) (set! f0-25 (+ 91.022224 f0-25))) f0-25) + ((< f0-25 0.0) (+ 91.022224 f0-25)) + (else (+ -91.022224 f0-25))))) + (set! (-> v1-37 tilt) (- f0-25)) + (set! (-> v1-37 heading) (the float (sar (shl (the int (+ (-> v1-37 heading) (* 0.05 f0-25))) 48) 48)))) + 0)) + (let ((f0-33 (+ (* (-> s4-0 x) (-> s4-0 x)) (* (-> s4-0 z) (-> s4-0 z))))) + (set! (-> s5-0 angletan) (/ (- (-> s4-0 y)) (sqrtf f0-33))) + ;; og:preserve-this changed for high fps + (set! (-> s5-0 target-dist) (* DISPLAY_FPS_RATIO (sqrtf (+ f0-33 (* (-> s4-0 y) (-> s4-0 y)))))))) + 0 + (let ((v1-42 (>= (ja-frame-num 0) (ja-aframe 3.0 0)))) + (cond + ((and v1-42 (>= (ja-aframe 9.0 0) (ja-frame-num 0))) + (let* ((v1-44 self) + (a0-49 #t) + (f0-38 (-> v1-44 root transv y))) + (set! f0-38 + (cond + (a0-49 (if (< f0-38 (-> v1-44 flock 0 max-lift)) (set! f0-38 (+ 12288.0 f0-38))) f0-38) + (else (+ -4096.0 f0-38)))) + ;; og:preserve-this changed for high fps + (set! (-> v1-44 root transv y) (* DISPLAY_FPS_RATIO f0-38))) + 0) + (else + (let* ((v1-48 self) + (a0-55 #f) + (f0-39 (-> v1-48 root transv y))) + (set! f0-39 + (cond + (a0-55 (if (< f0-39 (-> v1-48 flock 0 max-lift)) (set! f0-39 (+ 12288.0 f0-39))) f0-39) + (else (+ -4096.0 f0-39)))) + ;; og:preserve-this changed for high fps + (set! (-> v1-48 root transv y) (* DISPLAY_FPS_RATIO f0-39))) + 0))) + (let* ((s5-1 self) + (f28-0 (-> self thrust)) + (f30-2 (* f28-0 (sin (-> s5-1 heading)))) + (f0-44 (* f28-0 (cos (-> s5-1 heading))))) + (set! (-> s5-1 root transv x) (+ (* 0.8 (-> s5-1 root transv x)) (* 0.2 f30-2))) + (set! (-> s5-1 root transv z) (+ (* 0.8 (-> s5-1 root transv z)) (* 0.2 f0-44)))) + 0 + (seagull-method-27 self) + (suspend) + (ja :num! (seek!))) + (+! gp-0 1) + (when (>= gp-0 0) + (when (>= (-> self angletan) 0.1) + (if (< 204800.0 (-> self root trans y)) (go seagull-soaring)) + (when (< 57344.0 (-> self root trans y)) + (let* ((f30-3 0.8) + (v1-77 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-78 (the-as number (logior #x3f800000 v1-77)))) + (if (< f30-3 (+ -1.0 (the-as float v1-78))) (go seagull-soaring))))))))) + :post seagull-post) + +(defstate seagull-soaring (seagull) + :trans + (behavior () + (when (< (+ (current-time) (seconds -2)) (-> self part-time)) + (-> self part) + (-> self root root-prim prim-core))) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self max-tilt) 4551.1113) (loop - (ja-no-eval :group! seagull-fly-ja :num! (seek!) :frame-num 0.0) + (ja-no-eval :group! seagull-slowfly-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (ja-blend-eval) (when (-> self teleport) (seagull-method-26 self) (suspend) - 0 - ) - (let ((s5-0 self) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (vector-! s4-0 (-> s5-0 flock 0 target) (-> s5-0 root trans)) - (when (< (vector-dot s4-0 s4-0) 6710886400.0) - (let ((v1-24 (ash 1 (-> s5-0 index)))) - (when (not (logtest? v1-24 (-> s5-0 flock 0 bird-at-waterfall))) - (logior! (-> s5-0 flock 0 bird-at-waterfall) v1-24) - (+! (-> s5-0 flock 0 birds-at-waterfall) 1) - ) - ) - ) + 0) + (let ((gp-0 self) + (s5-0 (new 'stack-no-clear 'vector))) + (vector-! s5-0 (-> gp-0 flock 0 target) (-> gp-0 root trans)) + (when (< (vector-dot s5-0 s5-0) 6710886400.0) + (let ((v1-26 (ash 1 (-> gp-0 index)))) + (when (not (logtest? v1-26 (-> gp-0 flock 0 bird-at-waterfall))) + (logior! (-> gp-0 flock 0 bird-at-waterfall) v1-26) + (+! (-> gp-0 flock 0 birds-at-waterfall) 1)))) (cond - ((> (-> s5-0 temp-heading-time) 0) - (+! (-> s5-0 temp-heading-time) -1) - (let* ((v1-34 s5-0) - (f1-2 (the float (sar (shl (the int (- (-> s5-0 temp-heading) (-> v1-34 heading))) 48) 48))) - (f0-12 (- (-> v1-34 tilt))) - ) - (let ((f2-0 (-> v1-34 max-tilt))) - (set! f0-12 (cond - ((< f1-2 -364.0889) - (if (< (- f2-0) f0-12) - (set! f0-12 (+ -91.022224 f0-12)) - ) - f0-12 - ) - ((< 364.0889 f1-2) - (if (< f0-12 f2-0) - (set! f0-12 (+ 91.022224 f0-12)) - ) - f0-12 - ) - ((< f0-12 0.0) - (+ 91.022224 f0-12) - ) - (else - (+ -91.022224 f0-12) - ) - ) - ) - ) - (set! (-> v1-34 tilt) (- f0-12)) - (set! (-> v1-34 heading) (the float (sar (shl (the int (+ (-> v1-34 heading) (* 0.05 f0-12))) 48) 48))) - ) - 0 - ) + ((> (-> gp-0 temp-heading-time) 0) + (+! (-> gp-0 temp-heading-time) -1) + (let* ((v1-36 gp-0) + (f1-2 (the float (sar (shl (the int (- (-> gp-0 temp-heading) (-> v1-36 heading))) 48) 48))) + (f0-12 (- (-> v1-36 tilt)))) + (let ((f2-0 (-> v1-36 max-tilt))) + (set! f0-12 + (cond + ((< f1-2 -364.0889) (if (< (- f2-0) f0-12) (set! f0-12 (+ -91.022224 f0-12))) f0-12) + ((< 364.0889 f1-2) (if (< f0-12 f2-0) (set! f0-12 (+ 91.022224 f0-12))) f0-12) + ((< f0-12 0.0) (+ 91.022224 f0-12)) + (else (+ -91.022224 f0-12))))) + (set! (-> v1-36 tilt) (- f0-12)) + (set! (-> v1-36 heading) (the float (sar (shl (the int (+ (-> v1-36 heading) (* 0.05 f0-12))) 48) 48)))) + 0) (else - (let* ((f0-20 (atan (-> s4-0 x) (-> s4-0 z))) - (v1-37 s5-0) - (f1-12 (the float (sar (shl (the int (- f0-20 (-> v1-37 heading))) 48) 48))) - (f0-25 (- (-> v1-37 tilt))) - ) - (let ((f2-2 (-> v1-37 max-tilt))) - (set! f0-25 (cond - ((< f1-12 -364.0889) - (if (< (- f2-2) f0-25) - (set! f0-25 (+ -91.022224 f0-25)) - ) - f0-25 - ) - ((< 364.0889 f1-12) - (if (< f0-25 f2-2) - (set! f0-25 (+ 91.022224 f0-25)) - ) - f0-25 - ) - ((< f0-25 0.0) - (+ 91.022224 f0-25) - ) - (else - (+ -91.022224 f0-25) - ) - ) - ) - ) - (set! (-> v1-37 tilt) (- f0-25)) - (set! (-> v1-37 heading) (the float (sar (shl (the int (+ (-> v1-37 heading) (* 0.05 f0-25))) 48) 48))) - ) - 0 - ) - ) - (let ((f0-33 (+ (* (-> s4-0 x) (-> s4-0 x)) (* (-> s4-0 z) (-> s4-0 z))))) - (set! (-> s5-0 angletan) (/ (- (-> s4-0 y)) (sqrtf f0-33))) + (let* ((f0-20 (atan (-> s5-0 x) (-> s5-0 z))) + (v1-39 gp-0) + (f1-12 (the float (sar (shl (the int (- f0-20 (-> v1-39 heading))) 48) 48))) + (f0-25 (- (-> v1-39 tilt)))) + (let ((f2-2 (-> v1-39 max-tilt))) + (set! f0-25 + (cond + ((< f1-12 -364.0889) (if (< (- f2-2) f0-25) (set! f0-25 (+ -91.022224 f0-25))) f0-25) + ((< 364.0889 f1-12) (if (< f0-25 f2-2) (set! f0-25 (+ 91.022224 f0-25))) f0-25) + ((< f0-25 0.0) (+ 91.022224 f0-25)) + (else (+ -91.022224 f0-25))))) + (set! (-> v1-39 tilt) (- f0-25)) + (set! (-> v1-39 heading) (the float (sar (shl (the int (+ (-> v1-39 heading) (* 0.05 f0-25))) 48) 48)))) + 0)) + (let ((f0-33 (+ (* (-> s5-0 x) (-> s5-0 x)) (* (-> s5-0 z) (-> s5-0 z))))) + (set! (-> gp-0 angletan) (/ (- (-> s5-0 y)) (sqrtf f0-33))) ;; og:preserve-this changed for high fps - (set! (-> s5-0 target-dist) (* DISPLAY_FPS_RATIO (sqrtf (+ f0-33 (* (-> s4-0 y) (-> s4-0 y)))))) - ) - ) + (set! (-> gp-0 target-dist) (* DISPLAY_FPS_RATIO (sqrtf (+ f0-33 (* (-> s5-0 y) (-> s5-0 y)))))))) 0 - (let ((v1-42 (>= (ja-frame-num 0) (ja-aframe 3.0 0)))) - (cond - ((and v1-42 (>= (ja-aframe 9.0 0) (ja-frame-num 0))) - (let* ((v1-44 self) - (a0-49 #t) - (f0-38 (-> v1-44 root transv y)) - ) - (set! f0-38 (cond - (a0-49 - (if (< f0-38 (-> v1-44 flock 0 max-lift)) - (set! f0-38 (+ 12288.0 f0-38)) - ) - f0-38 - ) - (else - (+ -4096.0 f0-38) - ) - ) - ) - ;; og:preserve-this changed for high fps - (set! (-> v1-44 root transv y) (* DISPLAY_FPS_RATIO f0-38)) - ) - 0 - ) - (else - (let* ((v1-48 self) - (a0-55 #f) - (f0-39 (-> v1-48 root transv y)) - ) - (set! f0-39 (cond - (a0-55 - (if (< f0-39 (-> v1-48 flock 0 max-lift)) - (set! f0-39 (+ 12288.0 f0-39)) - ) - f0-39 - ) - (else - (+ -4096.0 f0-39) - ) - ) - ) - ;; og:preserve-this changed for high fps - (set! (-> v1-48 root transv y) (* DISPLAY_FPS_RATIO f0-39)) - ) - 0 - ) - ) - ) - (let* ((s5-1 self) + (let ((v1-44 self)) (set! (-> v1-44 root transv y) -8192.0)) + 0 + (let* ((gp-1 self) (f28-0 (-> self thrust)) - (f30-2 (* f28-0 (sin (-> s5-1 heading)))) - (f0-44 (* f28-0 (cos (-> s5-1 heading)))) - ) - (set! (-> s5-1 root transv x) (+ (* 0.8 (-> s5-1 root transv x)) (* 0.2 f30-2))) - (set! (-> s5-1 root transv z) (+ (* 0.8 (-> s5-1 root transv z)) (* 0.2 f0-44))) - ) + (f30-0 (* f28-0 (sin (-> gp-1 heading)))) + (f0-41 (* f28-0 (cos (-> gp-1 heading))))) + ;; og:preserve-this changed for high fps + (set! (-> gp-1 root transv x) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> gp-1 root transv x)) (* 0.2 f30-0)))) + (set! (-> gp-1 root transv z) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> gp-1 root transv z)) (* 0.2 f0-41))))) 0 (seagull-method-27 self) + (when (< (-> self angletan) 0.2) + (if (< (-> self root trans y) 40960.0) (go seagull-flying)) + (when (< (-> self root trans y) 204800.0) + (if (and (time-elapsed? (-> self state-time) (seconds 0.5)) + (let* ((f30-1 0.99) + (v1-67 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-68 (the-as number (logior #x3f800000 v1-67)))) + (< f30-1 (+ -1.0 (the-as float v1-68))))) + (go seagull-flying)))) + (when (< (-> self target-dist) 81920.0) + (when (< 1.0 (-> self angletan)) + (if (< (-> self target-dist) 20480.0) (go seagull-flying))) + (if (and (< 0.4 (-> self angletan)) (>= 1.0 (-> self angletan))) (go seagull-landing 10.0)) + (if (and (>= (-> self angletan) 0.2) (>= 0.4 (-> self angletan))) (go seagull-landing 5.0))) (suspend) - (ja :num! (seek!)) - ) - (+! gp-0 1) - (when (>= gp-0 0) - (when (>= (-> self angletan) 0.1) - (if (< 204800.0 (-> self root trans y)) - (go seagull-soaring) - ) - (when (< 57344.0 (-> self root trans y)) - (let* ((f30-3 0.8) - (v1-77 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-78 (the-as number (logior #x3f800000 v1-77))) - ) - (if (< f30-3 (+ -1.0 (the-as float v1-78))) - (go seagull-soaring) - ) - ) - ) - ) - ) - ) - ) - ) - :post seagull-post - ) + (ja :num! (seek!))))) + :post seagull-post) -(defstate seagull-soaring (seagull) - :trans (behavior () - (when (< (+ (current-time) (seconds -2)) (-> self part-time)) - (-> self part) - (-> self root root-prim prim-core) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self max-tilt) 4551.1113) - (loop - (ja-no-eval :group! seagull-slowfly-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (when (-> self teleport) - (seagull-method-26 self) - (suspend) - 0 - ) - (let ((gp-0 self) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (vector-! s5-0 (-> gp-0 flock 0 target) (-> gp-0 root trans)) - (when (< (vector-dot s5-0 s5-0) 6710886400.0) - (let ((v1-26 (ash 1 (-> gp-0 index)))) - (when (not (logtest? v1-26 (-> gp-0 flock 0 bird-at-waterfall))) - (logior! (-> gp-0 flock 0 bird-at-waterfall) v1-26) - (+! (-> gp-0 flock 0 birds-at-waterfall) 1) - ) - ) - ) - (cond - ((> (-> gp-0 temp-heading-time) 0) - (+! (-> gp-0 temp-heading-time) -1) - (let* ((v1-36 gp-0) - (f1-2 (the float (sar (shl (the int (- (-> gp-0 temp-heading) (-> v1-36 heading))) 48) 48))) - (f0-12 (- (-> v1-36 tilt))) - ) - (let ((f2-0 (-> v1-36 max-tilt))) - (set! f0-12 (cond - ((< f1-2 -364.0889) - (if (< (- f2-0) f0-12) - (set! f0-12 (+ -91.022224 f0-12)) - ) - f0-12 - ) - ((< 364.0889 f1-2) - (if (< f0-12 f2-0) - (set! f0-12 (+ 91.022224 f0-12)) - ) - f0-12 - ) - ((< f0-12 0.0) - (+ 91.022224 f0-12) - ) - (else - (+ -91.022224 f0-12) - ) - ) - ) - ) - (set! (-> v1-36 tilt) (- f0-12)) - (set! (-> v1-36 heading) (the float (sar (shl (the int (+ (-> v1-36 heading) (* 0.05 f0-12))) 48) 48))) - ) - 0 - ) - (else - (let* ((f0-20 (atan (-> s5-0 x) (-> s5-0 z))) - (v1-39 gp-0) - (f1-12 (the float (sar (shl (the int (- f0-20 (-> v1-39 heading))) 48) 48))) - (f0-25 (- (-> v1-39 tilt))) - ) - (let ((f2-2 (-> v1-39 max-tilt))) - (set! f0-25 (cond - ((< f1-12 -364.0889) - (if (< (- f2-2) f0-25) - (set! f0-25 (+ -91.022224 f0-25)) - ) - f0-25 - ) - ((< 364.0889 f1-12) - (if (< f0-25 f2-2) - (set! f0-25 (+ 91.022224 f0-25)) - ) - f0-25 - ) - ((< f0-25 0.0) - (+ 91.022224 f0-25) - ) - (else - (+ -91.022224 f0-25) - ) - ) - ) - ) - (set! (-> v1-39 tilt) (- f0-25)) - (set! (-> v1-39 heading) (the float (sar (shl (the int (+ (-> v1-39 heading) (* 0.05 f0-25))) 48) 48))) - ) - 0 - ) - ) - (let ((f0-33 (+ (* (-> s5-0 x) (-> s5-0 x)) (* (-> s5-0 z) (-> s5-0 z))))) - (set! (-> gp-0 angletan) (/ (- (-> s5-0 y)) (sqrtf f0-33))) - ;; og:preserve-this changed for high fps - (set! (-> gp-0 target-dist) (* DISPLAY_FPS_RATIO (sqrtf (+ f0-33 (* (-> s5-0 y) (-> s5-0 y)))))) - ) - ) - 0 - (let ((v1-44 self)) - (set! (-> v1-44 root transv y) -8192.0) - ) - 0 - (let* ((gp-1 self) - (f28-0 (-> self thrust)) - (f30-0 (* f28-0 (sin (-> gp-1 heading)))) - (f0-41 (* f28-0 (cos (-> gp-1 heading)))) - ) - ;; og:preserve-this changed for high fps - (set! (-> gp-1 root transv x) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> gp-1 root transv x)) (* 0.2 f30-0)))) - (set! (-> gp-1 root transv z) (* DISPLAY_FPS_RATIO (+ (* 0.8 (-> gp-1 root transv z)) (* 0.2 f0-41)))) - ) - 0 - (seagull-method-27 self) - (when (< (-> self angletan) 0.2) - (if (< (-> self root trans y) 40960.0) - (go seagull-flying) - ) - (when (< (-> self root trans y) 204800.0) - (if (and (time-elapsed? (-> self state-time) (seconds 0.5)) - (let* ((f30-1 0.99) - (v1-67 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-68 (the-as number (logior #x3f800000 v1-67))) - ) - (< f30-1 (+ -1.0 (the-as float v1-68))) - ) - ) - (go seagull-flying) - ) - ) - ) - (when (< (-> self target-dist) 81920.0) - (when (< 1.0 (-> self angletan)) - (if (< (-> self target-dist) 20480.0) - (go seagull-flying) - ) - ) - (if (and (< 0.4 (-> self angletan)) (>= 1.0 (-> self angletan))) - (go seagull-landing 10.0) - ) - (if (and (>= (-> self angletan) 0.2) (>= 0.4 (-> self angletan))) - (go seagull-landing 5.0) - ) - ) +(defstate seagull-landing (seagull) + :code + (behavior ((arg0 float)) + (let ((s5-0 (new 'stack 'collide-tri-result))) + 0.0 + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> self root transv y) (* 4096.0 (- arg0))) + (set! (-> gp-0 quad) (-> self root transv quad)) + (let ((f30-0 (fill-and-probe-using-line-sphere *collide-cache* + (-> self root trans) + gp-0 + 409.6 + (collide-kind background) + self + s5-0 + (new 'static 'pat-surface :noentity #x1)))) + (when (or (< f30-0 0.0) (or (< 1.0 f30-0) (nonzero? (-> s5-0 pat mode)))) + (suspend) + (go seagull-soaring)) + (vector-float*! gp-0 gp-0 f30-0) + (vector+! gp-0 gp-0 (-> self root trans)) + (while (< 0.5 f30-0) + (suspend) + (set! f30-0 (- f30-0 (seconds-per-frame))) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (collide-kind background)) + (let* ((v1-21 self) + (f1-3 (the float (sar (shl (the int (- (-> self heading) (-> v1-21 heading))) 48) 48))) + (f0-12 (- (-> v1-21 tilt)))) + (let ((f2-0 (-> v1-21 max-tilt))) + (set! f0-12 + (cond + ((< f1-3 -364.0889) (if (< (- f2-0) f0-12) (set! f0-12 (+ -91.022224 f0-12))) f0-12) + ((< 364.0889 f1-3) (if (< f0-12 f2-0) (set! f0-12 (+ 91.022224 f0-12))) f0-12) + ((< f0-12 0.0) (+ 91.022224 f0-12)) + (else (+ -91.022224 f0-12))))) + (set! (-> v1-21 tilt) (- f0-12)) + (set! (-> v1-21 heading) (the float (sar (shl (the int (+ (-> v1-21 heading) (* 0.05 f0-12))) 48) 48)))) + 0) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.135)) + (ja :group! seagull-land-ja :num! (identity (ja-aframe 0.0 0))) + (while (< 0.0 f30-0) + (suspend) + (ja :num! (seek!)) + (set! f30-0 (- f30-0 (seconds-per-frame))) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (collide-kind background)) + (let* ((v1-48 self) + (f1-13 (the float (sar (shl (the int (- (-> self heading) (-> v1-48 heading))) 48) 48))) + (f0-32 (- (-> v1-48 tilt)))) + (let ((f2-2 (-> v1-48 max-tilt))) + (set! f0-32 + (cond + ((< f1-13 -364.0889) (if (< (- f2-2) f0-32) (set! f0-32 (+ -91.022224 f0-32))) f0-32) + ((< 364.0889 f1-13) (if (< f0-32 f2-2) (set! f0-32 (+ 91.022224 f0-32))) f0-32) + ((< f0-32 0.0) (+ 91.022224 f0-32)) + (else (+ -91.022224 f0-32))))) + (set! (-> v1-48 tilt) (- f0-32)) + (set! (-> v1-48 heading) (the float (sar (shl (the int (+ (-> v1-48 heading) (* 0.05 f0-32))) 48) 48)))) + 0)))) + (while (not (ja-done? 0)) (suspend) (ja :num! (seek!)) - ) - ) - ) - :post seagull-post - ) - -(defstate seagull-landing (seagull) - :code (behavior ((arg0 float)) - (let ((s5-0 (new 'stack 'collide-tri-result))) - 0.0 - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> self root transv y) (* 4096.0 (- arg0))) - (set! (-> gp-0 quad) (-> self root transv quad)) - (let ((f30-0 (fill-and-probe-using-line-sphere - *collide-cache* - (-> self root trans) - gp-0 - 409.6 - (collide-kind background) - self - s5-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - (when (or (< f30-0 0.0) (or (< 1.0 f30-0) (nonzero? (-> s5-0 pat mode)))) - (suspend) - (go seagull-soaring) - ) - (vector-float*! gp-0 gp-0 f30-0) - (vector+! gp-0 gp-0 (-> self root trans)) - (while (< 0.5 f30-0) - (suspend) - (set! f30-0 (- f30-0 (seconds-per-frame))) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (collide-kind background)) - (let* ((v1-21 self) - (f1-3 (the float (sar (shl (the int (- (-> self heading) (-> v1-21 heading))) 48) 48))) - (f0-12 (- (-> v1-21 tilt))) - ) - (let ((f2-0 (-> v1-21 max-tilt))) - (set! f0-12 (cond - ((< f1-3 -364.0889) - (if (< (- f2-0) f0-12) - (set! f0-12 (+ -91.022224 f0-12)) - ) - f0-12 - ) - ((< 364.0889 f1-3) - (if (< f0-12 f2-0) - (set! f0-12 (+ 91.022224 f0-12)) - ) - f0-12 - ) - ((< f0-12 0.0) - (+ 91.022224 f0-12) - ) - (else - (+ -91.022224 f0-12) - ) - ) - ) - ) - (set! (-> v1-21 tilt) (- f0-12)) - (set! (-> v1-21 heading) (the float (sar (shl (the int (+ (-> v1-21 heading) (* 0.05 f0-12))) 48) 48))) - ) - 0 - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.135)) - (ja :group! seagull-land-ja :num! (identity (ja-aframe 0.0 0))) - (while (< 0.0 f30-0) - (suspend) - (ja :num! (seek!)) - (set! f30-0 (- f30-0 (seconds-per-frame))) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (collide-kind background)) - (let* ((v1-48 self) - (f1-13 (the float (sar (shl (the int (- (-> self heading) (-> v1-48 heading))) 48) 48))) - (f0-32 (- (-> v1-48 tilt))) - ) - (let ((f2-2 (-> v1-48 max-tilt))) - (set! f0-32 (cond - ((< f1-13 -364.0889) - (if (< (- f2-2) f0-32) - (set! f0-32 (+ -91.022224 f0-32)) - ) - f0-32 - ) - ((< 364.0889 f1-13) - (if (< f0-32 f2-2) - (set! f0-32 (+ 91.022224 f0-32)) - ) - f0-32 - ) - ((< f0-32 0.0) - (+ 91.022224 f0-32) - ) - (else - (+ -91.022224 f0-32) - ) - ) - ) - ) - (set! (-> v1-48 tilt) (- f0-32)) - (set! (-> v1-48 heading) (the float (sar (shl (the int (+ (-> v1-48 heading) (* 0.05 f0-32))) 48) 48))) - ) - 0 - ) - ) - ) - ) - (while (not (ja-done? 0)) - (suspend) - (ja :num! (seek!)) - (let* ((v1-59 self) - (f1-23 (the float (sar (shl (the int (- (-> self heading) (-> v1-59 heading))) 48) 48))) - (f0-47 (- (-> v1-59 tilt))) - ) - (let ((f2-4 (-> v1-59 max-tilt))) - (set! f0-47 (cond - ((< f1-23 -364.0889) - (if (< (- f2-4) f0-47) - (set! f0-47 (+ -91.022224 f0-47)) - ) - f0-47 - ) - ((< 364.0889 f1-23) - (if (< f0-47 f2-4) - (set! f0-47 (+ 91.022224 f0-47)) - ) - f0-47 - ) - ((< f0-47 0.0) - (+ 91.022224 f0-47) - ) - (else - (+ -91.022224 f0-47) - ) - ) - ) - ) - (set! (-> v1-59 tilt) (- f0-47)) - (set! (-> v1-59 heading) (the float (sar (shl (the int (+ (-> v1-59 heading) (* 0.05 f0-47))) 48) 48))) - ) - 0 - ) - (go seagull-idle) - ) - :post seagull-post - ) + (let* ((v1-59 self) + (f1-23 (the float (sar (shl (the int (- (-> self heading) (-> v1-59 heading))) 48) 48))) + (f0-47 (- (-> v1-59 tilt)))) + (let ((f2-4 (-> v1-59 max-tilt))) + (set! f0-47 + (cond + ((< f1-23 -364.0889) (if (< (- f2-4) f0-47) (set! f0-47 (+ -91.022224 f0-47))) f0-47) + ((< 364.0889 f1-23) (if (< f0-47 f2-4) (set! f0-47 (+ 91.022224 f0-47))) f0-47) + ((< f0-47 0.0) (+ 91.022224 f0-47)) + (else (+ -91.022224 f0-47))))) + (set! (-> v1-59 tilt) (- f0-47)) + (set! (-> v1-59 heading) (the float (sar (shl (the int (+ (-> v1-59 heading) (* 0.05 f0-47))) 48) 48)))) + 0) + (go seagull-idle)) + :post seagull-post) (defun seagull-reaction ((arg0 collide-shape-moving) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) (let ((s5-0 0)) (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) (set! (-> a1-1 y) (-> arg1 move-vec y)) - (move-by-vector! arg0 a1-1) - ) + (move-by-vector! arg0 a1-1)) (let ((f0-3 (vector-dot (-> arg0 transv) (-> arg1 best-tri normal))) - (v1-6 (new 'stack-no-clear 'vector)) - ) + (v1-6 (new 'stack-no-clear 'vector))) (vector-float*! v1-6 (-> arg1 best-tri normal) f0-3) - (vector-! (-> arg0 transv) (-> arg0 transv) v1-6) - ) + (vector-! (-> arg0 transv) (-> arg0 transv) v1-6)) (let ((v1-7 (-> arg1 best-tri normal)) - (s4-1 (-> arg0 process)) - ) + (s4-1 (-> arg0 process))) (set! (-> (the-as seagull s4-1) temp-heading) (atan (-> v1-7 x) (-> v1-7 z))) - (set! (-> (the-as seagull s4-1) temp-heading-time) (seconds 1)) - ) + (set! (-> (the-as seagull s4-1) temp-heading-time) (seconds 1))) (let ((v0-2 (logior s5-0 3))) (set! (-> arg0 status) (the-as cshape-moving-flags v0-2)) - (the-as cshape-moving-flags v0-2) - ) - ) - ) + (the-as cshape-moving-flags v0-2)))) (defbehavior seagull-init-by-other seagull ((arg0 vector) (arg1 int) (arg2 seagullflock)) (let ((s3-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s3-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s3-0 reaction) seagull-reaction) - (set! (-> s3-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s3-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (collide-kind)) (set! (-> s2-0 collide-with) (collide-kind background)) (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 2048.0) - (set-root-prim! s3-0 s2-0) - ) + (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) s3-0) - ) + (set! (-> self root) s3-0)) (set! (-> self root trans quad) (-> arg0 quad)) (initialize-skeleton self *seagull-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) @@ -1165,150 +785,92 @@ (set! (-> self heading) 0.0) (set! (-> self tilt) 0.0) (let ((f30-0 51200.0) - (f28-0 20480.0) - ) - (set! (-> self thrust) (+ f30-0 (* f28-0 (rand-float-gen)))) - ) + (f28-0 20480.0)) + (set! (-> self thrust) (+ f30-0 (* f28-0 (rand-float-gen))))) (set! (-> self teleport) #f) (go seagull-idle) - (none) - ) + (none)) (defmethod play-hint ((this seagullflock) (arg0 int)) (when (time-elapsed? (-> this alert-time) (seconds 5)) (eval-path-curve-div! (-> this path) (-> this target) (the float (-> this targetnum)) 'interp) (let ((f0-2 4096.0) - (v1-6 (-> this targetnum)) - ) - (set! (-> this max-lift) (* f0-2 (cond - ((= v1-6 1) - 4.0 - ) - ((= v1-6 2) - 4.0 - ) - ((= v1-6 3) - 4.0 - ) - (else - 10.0 - ) - ) - ) - ) - ) + (v1-6 (-> this targetnum))) + (set! (-> this max-lift) + (* f0-2 + (cond + ((= v1-6 1) 4.0) + ((= v1-6 2) 4.0) + ((= v1-6 3) 4.0) + (else 10.0))))) (case (-> this targetnum) - ((1) - (level-hint-spawn (text-id sidekick-seagulls1) "sksp0020" (the-as entity #f) *entity-pool* (game-task none)) - ) - ((2) - (level-hint-spawn (text-id sidekick-seagulls2) "sksp0022" (the-as entity #f) *entity-pool* (game-task none)) - ) - ((3) - (level-hint-spawn (text-id sidekick-seagulls3) "sksp0023" (the-as entity #f) *entity-pool* (game-task none)) - ) - ((4) - (level-hint-spawn (text-id sidekick-seagulls4) "sksp0024" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) + ((1) (level-hint-spawn (text-id sidekick-seagulls1) "sksp0020" (the-as entity #f) *entity-pool* (game-task none))) + ((2) (level-hint-spawn (text-id sidekick-seagulls2) "sksp0022" (the-as entity #f) *entity-pool* (game-task none))) + ((3) (level-hint-spawn (text-id sidekick-seagulls3) "sksp0023" (the-as entity #f) *entity-pool* (game-task none))) + ((4) (level-hint-spawn (text-id sidekick-seagulls4) "sksp0024" (the-as entity #f) *entity-pool* (game-task none)))) (let ((v1-16 (-> this entity extra perm))) (logior! (-> v1-16 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-16 user-int8 0) (min 2 (-> this targetnum))) - ) + (set! (-> v1-16 user-int8 0) (min 2 (-> this targetnum)))) (+! (-> this targetnum) 1) (dotimes (v1-19 (-> this birds)) - (set! (-> this bird v1-19 0 scared) (+ (* v1-19 2) 5)) - ) + (set! (-> this bird v1-19 0 scared) (+ (* v1-19 2) 5))) (set! (-> this bird arg0 0 scared) 1) (set! (-> this bird-at-waterfall) (the-as uint 0)) (set! (-> this birds-at-waterfall) 0) - (if (>= (-> this targetnum) 4) - (set! (-> this teleport-frames) 1500) - ) + (if (>= (-> this targetnum) 4) (set! (-> this teleport-frames) 1500)) (sound-play "seagull-takeoff") - (set-time! (-> this alert-time)) - ) - (none) - ) + (set-time! (-> this alert-time))) + (none)) (defmethod seagullflock-method-16 ((this seagullflock) (arg0 seagull)) (let ((gp-0 (new 'stack-no-clear 'vector))) (eval-path-curve-div! (-> this path) gp-0 (the float (-> this targetnum)) 'interp) (vector-! gp-0 gp-0 (-> arg0 root trans)) - (atan (-> gp-0 x) (-> gp-0 z)) - ) - ) + (atan (-> gp-0 x) (-> gp-0 z)))) (defstate seagullflock-at-waterfall (seagullflock) - :code (behavior () - (local-vars - (a0-2 process) - (a1-0 event-message-block) - (t9-1 (function process-tree event-message-block object)) - ) - (aybabtu 2) - (set-time! (-> self state-time)) - (-> self link next) - (until (t9-1 a0-2 a1-0) - (suspend) - (let ((v1-5 (-> self link next))) - (set! a1-0 (new 'stack-no-clear 'event-message-block)) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 0) - (set! (-> a1-0 message) 'loading) - (set! t9-1 send-event-function) - (set! a0-2 (if v1-5 - (-> v1-5 extra process) - ) - ) - ) - ) - (until (time-elapsed? (-> self state-time) (-> self teleport-frames)) - (suspend) - ) - (close-specific-task! (game-task beach-seagull) (task-status need-reminder)) - (dotimes (v1-13 (-> self birds)) - (set! (-> self bird v1-13 0 teleport) #t) - ) - (let ((gp-0 (-> self link next))) - (set-blackout-frames (seconds 2)) - (suspend) - (let ((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-4 send-event-function) - (v1-18 gp-0) - ) - (t9-4 - (if v1-18 - (-> v1-18 extra process) - ) - a1-6 - ) - ) - ) - (while (not (logtest? (-> gp-0 extra perm status) (entity-perm-status complete))) + :code + (behavior () + (local-vars (a0-2 process) (a1-0 event-message-block) (t9-1 (function process-tree event-message-block object))) + (aybabtu 2) + (set-time! (-> self state-time)) + (-> self link next) + (until (t9-1 a0-2 a1-0) (suspend) - ) - ) - (process-entity-status! self (entity-perm-status dead) #t) - ) - ) + (let ((v1-5 (-> self link next))) + (set! a1-0 (new 'stack-no-clear 'event-message-block)) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 0) + (set! (-> a1-0 message) 'loading) + (set! t9-1 send-event-function) + (set! a0-2 (if v1-5 (-> v1-5 extra process))))) + (until (time-elapsed? (-> self state-time) (-> self teleport-frames)) + (suspend)) + (close-specific-task! (game-task beach-seagull) (task-status need-reminder)) + (dotimes (v1-13 (-> self birds)) + (set! (-> self bird v1-13 0 teleport) #t)) + (let ((gp-0 (-> self link next))) + (set-blackout-frames (seconds 2)) + (suspend) + (let ((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-4 send-event-function) + (v1-18 gp-0)) + (t9-4 (if v1-18 (-> v1-18 extra process)) a1-6))) + (while (not (logtest? (-> gp-0 extra perm status) (entity-perm-status complete))) + (suspend))) + (process-entity-status! self (entity-perm-status dead) #t))) (defstate seagullflock-idle (seagullflock) - :code (behavior () - (loop - (if (> (-> self teleport-frames) 0) - (go seagullflock-at-waterfall) - ) - (if (and *target* (>= 102400.0 (vector-vector-distance (-> self trans) (-> *target* control trans)))) - (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (if (> (-> self teleport-frames) 0) (go seagullflock-at-waterfall)) + (if (and *target* (>= 102400.0 (vector-vector-distance (-> self trans) (-> *target* control trans)))) + (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none))) + (suspend)))) (defmethod init-from-entity! ((this seagullflock) (arg0 entity-actor)) (logclear! (-> this mask) (process-mask actor-pause)) @@ -1321,8 +883,7 @@ (set! (-> this max-lift) 20480.0) (set! (-> this birds) 0) (dotimes (v1-16 SEAGULLFLOCK_MAX) - (set! (-> this bird v1-16) (the-as (pointer seagull) #f)) - ) + (set! (-> this bird v1-16) (the-as (pointer seagull) #f))) (spawn-bird this (-> this trans)) (dotimes (s5-1 20) (let ((s4-0 (new 'stack-no-clear 'vector))) @@ -1330,49 +891,32 @@ (f28-0 4096.0) (f26-0 10.0) (v1-22 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-23 (the-as number (logior #x3f800000 v1-22))) - ) - (set! (-> s4-0 x) (+ f30-0 (* f28-0 (* f26-0 (+ -1.0 (the-as float v1-23)))))) - ) + (v1-23 (the-as number (logior #x3f800000 v1-22)))) + (set! (-> s4-0 x) (+ f30-0 (* f28-0 (* f26-0 (+ -1.0 (the-as float v1-23))))))) (let* ((f30-1 (-> this trans z)) (f28-1 4096.0) (f26-1 10.0) (v1-26 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-27 (the-as number (logior #x3f800000 v1-26))) - ) - (set! (-> s4-0 z) (+ f30-1 (* f28-1 (* f26-1 (+ -1.0 (the-as float v1-27)))))) - ) + (v1-27 (the-as number (logior #x3f800000 v1-26)))) + (set! (-> s4-0 z) (+ f30-1 (* f28-1 (* f26-1 (+ -1.0 (the-as float v1-27))))))) (set! (-> s4-0 y) (-> this trans y)) (set! (-> s4-0 w) 1.0) - (spawn-bird this s4-0) - ) - ) + (spawn-bird this s4-0))) (set! (-> this squall) (new 'process 'ambient-sound sound-seagull-squall (-> this trans))) (set! (-> this teleport-frames) 0) (logior! (-> this mask) (process-mask enemy)) (go seagullflock-idle) - (none) - ) + (none)) (defmethod spawn-bird ((this seagullflock) (arg0 vector)) ;; og:preserve-this constant - (if (= (-> this birds) SEAGULLFLOCK_MAX) - (return (the-as (pointer process) #f)) - ) + (if (= (-> this birds) SEAGULLFLOCK_MAX) (return (the-as (pointer process) #f))) (let ((v0-0 (process-spawn seagull arg0 (-> this birds) this :to this))) (set! (-> this bird (-> this birds)) (the-as (pointer seagull) v0-0)) (+! (-> this birds) 1) - v0-0 - ) - ) + v0-0)) (defun-debug beach-rock-trigger () - (set! (-> (the-as - seagullflock - (search-process-tree *active-pool* (lambda ((arg0 process)) (= (-> arg0 type) seagullflock))) - ) - teleport-frames - ) - 600 - ) - ) + (set! (-> (the-as seagullflock (search-process-tree *active-pool* (lambda ((arg0 process)) (= (-> arg0 type) seagullflock)))) + teleport-frames) + 600)) diff --git a/goal_src/jak1/levels/beach/twister.gc b/goal_src/jak1/levels/beach/twister.gc index 3c11938a07..cae60d84b4 100644 --- a/goal_src/jak1/levels/beach/twister.gc +++ b/goal_src/jak1/levels/beach/twister.gc @@ -1,60 +1,39 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/math/matrix.gc") (require "engine/math/vector.gc") (require "engine/game/game-h.gc") -;; name: twister.gc -;; name in dgo: twister -;; dgos: BEA, L1 - ;; DECOMP BEGINS (deftype twist-joint (structure) - ((ry float) - (max-dry float) - ) - :allow-misaligned - ) - + ((ry float) + (max-dry float)) + :allow-misaligned) (deftype twister (basic) - ((num-joints int32) - (first-joint int32) - (last-joint int32) - (something uint16 :overlay-at last-joint) - (max-speed float) - (smoothing float) - (min-dist float) - (target float) - (ry float) - (max-speed-ry float) - (data twist-joint :inline :dynamic) - ) + ((num-joints int32) + (first-joint int32) + (last-joint int32) + (something uint16 :overlay-at last-joint) + (max-speed float) + (smoothing float) + (min-dist float) + (target float) + (ry float) + (max-speed-ry float) + (data twist-joint :inline :dynamic)) (:methods - (new (symbol type int int float float float float) _type_) - (twister-method-9 (_type_ int int float) none) - (set-target! (_type_ float) none) - (twister-method-11 (_type_) none) - (twister-method-12 (_type_ process-drawable) none) - ) - ) - + (new (symbol type int int float float float float) _type_) + (twister-method-9 (_type_ int int float) none) + (set-target! (_type_ float) none) + (twister-method-11 (_type_) none) + (twister-method-12 (_type_ process-drawable) none))) -(defmethod new twister ((allocation symbol) - (type-to-make type) - (arg0 int) - (arg1 int) - (arg2 float) - (arg3 float) - (arg4 float) - (arg5 float) - ) +(defmethod new twister ((allocation symbol) (type-to-make type) (arg0 int) (arg1 int) (arg2 float) (arg3 float) (arg4 float) (arg5 float)) (let* ((gp-0 (+ (- 1 arg0) arg1)) - (v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* gp-0 16))))) - ) + (v0-0 (object-new allocation type-to-make (the-as int (+ (-> type-to-make size) (* gp-0 16)))))) (set! (-> v0-0 first-joint) arg0) (set! (-> v0-0 last-joint) arg1) (set! (-> v0-0 num-joints) gp-0) @@ -66,74 +45,46 @@ (set! (-> v0-0 max-speed-ry) arg3) (dotimes (v1-4 gp-0) (set! (-> v0-0 data v1-4 ry) 0.0) - (set! (-> v0-0 data v1-4 max-dry) 0.0) - ) - v0-0 - ) - ) + (set! (-> v0-0 data v1-4 max-dry) 0.0)) + v0-0)) (defmethod asize-of ((this twister)) - (+ (* (-> this num-joints) 16) 40) - ) + (+ (* (-> this num-joints) 16) 40)) (defmethod twister-method-9 ((this twister) (arg0 int) (arg1 int) (arg2 float)) (let ((v1-1 (- arg0 (-> this first-joint))) - (a1-2 (- arg1 (-> this first-joint))) - ) + (a1-2 (- arg1 (-> this first-joint)))) (while (>= a1-2 v1-1) (set! (-> this data v1-1 max-dry) arg2) - (+! v1-1 1) - ) - ) + (+! v1-1 1))) 0 - (none) - ) + (none)) (defmethod set-target! ((this twister) (arg0 float)) (set! (-> this target) arg0) 0 - (none) - ) + (none)) (defmethod twister-method-11 ((this twister)) (let* ((s5-0 (+ (-> this num-joints) -1)) - (s4-0 (-> this data s5-0)) - ) + (s4-0 (-> this data s5-0))) (let ((f0-2 (deg-diff (-> s4-0 ry) (-> this target)))) - (+! (-> s4-0 ry) (seek-with-smooth 0.0 f0-2 (-> this max-speed) (-> this smoothing) (-> this min-dist))) - ) + (+! (-> s4-0 ry) (seek-with-smooth 0.0 f0-2 (-> this max-speed) (-> this smoothing) (-> this min-dist)))) (let ((f30-1 (-> s4-0 ry))) (while (> s5-0 0) (+! s5-0 -1) (let ((s4-1 (-> this data s5-0))) (let ((f0-9 (deg-diff f30-1 (-> s4-1 ry)))) (cond - ((= (-> s4-1 max-dry) 0.0) - (set! f0-9 0.0) - ) - ((< (fabs f0-9) (-> s4-1 max-dry)) - ) + ((= (-> s4-1 max-dry) 0.0) (set! f0-9 0.0)) + ((< (fabs f0-9) (-> s4-1 max-dry))) ((< f0-9 0.0) - (set! f0-9 - (seek-with-smooth f0-9 (- (-> s4-1 max-dry)) (-> this max-speed) (-> this smoothing) (-> this min-dist)) - ) - ) - (else - (set! f0-9 - (seek-with-smooth f0-9 (-> s4-1 max-dry) (-> this max-speed) (-> this smoothing) (-> this min-dist)) - ) - ) - ) - (+! f30-1 f0-9) - ) - (set! (-> s4-1 ry) f30-1) - ) - ) - ) - ) + (set! f0-9 (seek-with-smooth f0-9 (- (-> s4-1 max-dry)) (-> this max-speed) (-> this smoothing) (-> this min-dist)))) + (else (set! f0-9 (seek-with-smooth f0-9 (-> s4-1 max-dry) (-> this max-speed) (-> this smoothing) (-> this min-dist))))) + (+! f30-1 f0-9)) + (set! (-> s4-1 ry) f30-1))))) 0 - (none) - ) + (none)) (defmethod twister-method-12 ((this twister) (arg0 process-drawable)) (let ((s4-0 (new 'stack-no-clear 'matrix))) @@ -142,10 +93,6 @@ (matrix-rotate-y! s4-0 (-> this data s3-0 ry)) (vector-! (-> s2-0 vector 3) (-> s2-0 vector 3) (-> arg0 root trans)) (matrix*! s2-0 s2-0 s4-0) - (vector+! (-> s2-0 vector 3) (-> s2-0 vector 3) (-> arg0 root trans)) - ) - ) - ) + (vector+! (-> s2-0 vector 3) (-> s2-0 vector 3) (-> arg0 root trans))))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/beach/wobbler.gc b/goal_src/jak1/levels/beach/wobbler.gc index ea4b36dc46..b4f8584d97 100644 --- a/goal_src/jak1/levels/beach/wobbler.gc +++ b/goal_src/jak1/levels/beach/wobbler.gc @@ -1,33 +1,24 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO") - (require "engine/gfx/hw/display-h.gc") (require "engine/math/quaternion.gc") -;; name: wobbler.gc -;; name in dgo: wobbler -;; dgos: BEA, L1 - ;; DECOMP BEGINS (deftype wobbler (basic) - ((posx float) - (posy float) - (velx float) - (vely float) - (spring float) - (damping float) - (height float) - ) + ((posx float) + (posy float) + (velx float) + (vely float) + (spring float) + (damping float) + (height float)) (:methods - (reset! (_type_ float float float) none) - (inc-xy-vel! (_type_ float float) none) - (move! (_type_) none) - (wobbler-method-12 (_type_ quaternion) none) - ) - ) - + (reset! (_type_ float float float) none) + (inc-xy-vel! (_type_ float float) none) + (move! (_type_) none) + (wobbler-method-12 (_type_ quaternion) none))) (defmethod reset! ((this wobbler) (arg0 float) (arg1 float) (arg2 float)) (set! (-> this posx) 0.0) @@ -38,15 +29,13 @@ (set! (-> this damping) arg1) (set! (-> this height) arg2) 0 - (none) - ) + (none)) (defmethod inc-xy-vel! ((this wobbler) (arg0 float) (arg1 float)) (+! (-> this velx) arg0) (+! (-> this vely) arg1) 0 - (none) - ) + (none)) (defmethod move! ((this wobbler)) (+! (-> this posx) (* (-> this velx) (seconds-per-frame))) @@ -56,8 +45,7 @@ (+! (-> this velx) (* -1.0 (-> this posx) (-> this spring))) (+! (-> this vely) (* -1.0 (-> this posy) (-> this spring))) 0 - (none) - ) + (none)) (defmethod wobbler-method-12 ((this wobbler) (arg0 quaternion)) (let ((s5-0 (new 'stack-no-clear 'vector))) @@ -66,11 +54,7 @@ (set! (-> s5-0 z) (- (-> this posx))) (vector-normalize! s5-0 1.0) (let* ((f0-8 (/ (sqrtf (+ (* (-> this posx) (-> this posx)) (* (-> this posy) (-> this posy)))) (-> this height))) - (f0-9 (atan f0-8 1.0)) - ) - (quaternion-vector-angle! arg0 s5-0 f0-9) - ) - ) + (f0-9 (atan f0-8 1.0))) + (quaternion-vector-angle! arg0 s5-0 f0-9))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/citadel/assistant-citadel.gc b/goal_src/jak1/levels/citadel/assistant-citadel.gc index aebafb3ccf..4a7ff0cfc4 100644 --- a/goal_src/jak1/levels/citadel/assistant-citadel.gc +++ b/goal_src/jak1/levels/citadel/assistant-citadel.gc @@ -1,123 +1,92 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: assistant-citadel.gc -;; name in dgo: assistant-citadel -;; dgos: CIT, L1 - ;; DECOMP BEGINS -(deftype assistant-lavatube-end (process-taskable) - () - ) - +(deftype assistant-lavatube-end (process-taskable) ()) -(defskelgroup *assistant-lavatube-end-sg* assistant-lavatube-end assistant-lavatube-end-lod0-jg assistant-lavatube-end-idle-ja - ((assistant-lavatube-end-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow assistant-lavatube-end-shadow-mg - ) +(defskelgroup *assistant-lavatube-end-sg* + assistant-lavatube-end + assistant-lavatube-end-lod0-jg + assistant-lavatube-end-idle-ja + ((assistant-lavatube-end-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow assistant-lavatube-end-shadow-mg) (defmethod play-anim! ((this assistant-lavatube-end) (arg0 symbol)) (case (current-status (-> this tasks)) (((task-status unknown) (task-status need-hint)) - (new 'static 'spool-anim :name "assistant-lavatube-end-resolution" :index 4 :parts 11 :command-list '()) - ) + (new 'static 'spool-anim :name "assistant-lavatube-end-resolution" :index 4 :parts 11 :command-list '())) (((task-status need-reward-speech)) - (if arg0 - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim - :name "assistant-lavatube-end-resolution" - :index 4 - :parts 11 - :command-list '((61 joint "cameraB") - (151 joint "camera") - (226 joint "cameraB") - (273 joint "camera") - (316 joint "cameraB") - (451 joint "camera") - (651 joint "cameraB") - (786 joint "camera") - (888 joint "cameraB") - (1011 joint "camera") - (1011 shadow target #f) - (1140 shadow target #t) - (1191 joint "cameraB") - ) - ) - ) + (if arg0 (close-current! (-> this tasks))) + (new 'static + 'spool-anim + :name "assistant-lavatube-end-resolution" + :index 4 + :parts 11 + :command-list + '((61 joint "cameraB") + (151 joint "camera") + (226 joint "cameraB") + (273 joint "camera") + (316 joint "cameraB") + (451 joint "camera") + (651 joint "cameraB") + (786 joint "camera") + (888 joint "cameraB") + (1011 joint "camera") + (1011 shadow target #f) + (1140 shadow target #t) + (1191 joint "cameraB")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod get-art-elem ((this assistant-lavatube-end)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate hidden (assistant-lavatube-end) :virtual #t - :trans (behavior () - (process-taskable-method-33 self) - ((-> (method-of-type process-taskable hidden) trans)) - (when (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (not (closed? (-> self tasks) (game-task village4-button) (task-status need-reward-speech))) - ) - ) - ) - ) + :trans + (behavior () + (process-taskable-method-33 self) + ((-> (method-of-type process-taskable hidden) trans)) + (when (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (closed? (-> self tasks) (game-task village4-button) (task-status need-reward-speech))))))) (defstate idle (assistant-lavatube-end) :virtual #t - :enter (behavior () - ((-> (method-of-type process-taskable idle) enter)) - (case (get-task-status (game-task village4-button)) - (((task-status need-reward-speech)) - (send-event self 'play-anim) - ) - ) - ) - :code (behavior () - (loop - (when (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! assistant-lavatube-end-idle-ja) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) + :enter + (behavior () + ((-> (method-of-type process-taskable idle) enter)) + (case (get-task-status (game-task village4-button)) + (((task-status need-reward-speech)) (send-event self 'play-anim)))) + :code + (behavior () + (loop + (when (!= (ja-group) (get-art-elem self)) + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! assistant-lavatube-end-idle-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) (defmethod should-display? ((this assistant-lavatube-end)) (first-any (-> this tasks) #t) (let ((v1-3 (current-status (-> this tasks)))) (and (or (= v1-3 (task-status need-reward-speech)) (= v1-3 (task-status invalid))) - (not (task-closed? (game-task citadel-sage-green) (task-status need-hint))) - ) - ) - ) + (not (task-closed? (game-task citadel-sage-green) (task-status need-hint)))))) (defmethod init-from-entity! ((this assistant-lavatube-end) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-lavatube-end-sg* 3 29 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task village4-button))) (first-any (-> this tasks) #t) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/citadel/citadel-obs.gc b/goal_src/jak1/levels/citadel/citadel-obs.gc index 43c59a676f..5666d4f860 100644 --- a/goal_src/jak1/levels/citadel/citadel-obs.gc +++ b/goal_src/jak1/levels/citadel/citadel-obs.gc @@ -1,165 +1,141 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO") - (require "engine/common-obs/plat.gc") (require "engine/common-obs/baseplat.gc") (require "engine/common-obs/basebutton.gc") (require "levels/common/battlecontroller.gc") (require "engine/camera/pov-camera-h.gc") -;; name: citadel-obs.gc -;; name in dgo: citadel-obs -;; dgos: CIT, L1 - ;; DECOMP BEGINS (deftype citb-arm-section (process-drawable) - ((sync sync-info :inline) - (cull-dir-local vector :inline) - (cull-dot float) - (rot-scale float) - (y-angle float) - ) + ((sync sync-info :inline) + (cull-dir-local vector :inline) + (cull-dot float) + (rot-scale float) + (y-angle float)) (:methods - (init-root! (_type_) none) - (setup-new-process! (_type_) none) - (idle () _type_ :state) - ) - ) - - -(defskelgroup *citb-arm-a-sg* citb-arm citb-arm-a-lod0-jg citb-arm-a-idle-ja - ((citb-arm-a-lod0-mg (meters 20)) (citb-arm-a-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 14) - :longest-edge (meters 9) - ) - -(defskelgroup *citb-arm-b-sg* citb-arm citb-arm-b-lod0-jg citb-arm-b-idle-ja - ((citb-arm-b-lod0-mg (meters 20)) (citb-arm-b-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 20) - :longest-edge (meters 10) - ) - -(defskelgroup *citb-arm-c-sg* citb-arm citb-arm-c-lod0-jg citb-arm-c-idle-ja - ((citb-arm-c-lod0-mg (meters 20)) (citb-arm-c-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 25) - :longest-edge (meters 11) - ) - -(defskelgroup *citb-arm-d-sg* citb-arm citb-arm-d-lod0-jg citb-arm-d-idle-ja - ((citb-arm-d-lod0-mg (meters 20)) (citb-arm-d-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 29) - :longest-edge (meters 8) - ) - -(defskelgroup *citb-arm-shoulder-a-sg* citb-arm-shoulder citb-arm-shoulder-a-lod0-jg citb-arm-shoulder-a-idle-ja - ((citb-arm-shoulder-a-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 22) - :longest-edge (meters 10) - ) - -(defskelgroup *citb-arm-shoulder-b-sg* citb-arm-shoulder citb-arm-shoulder-b-lod0-jg citb-arm-shoulder-b-idle-ja - ((citb-arm-shoulder-b-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 22) - :longest-edge (meters 10) - ) + (init-root! (_type_) none) + (setup-new-process! (_type_) none) + (idle () _type_ :state))) + +(defskelgroup *citb-arm-a-sg* + citb-arm + citb-arm-a-lod0-jg + citb-arm-a-idle-ja + ((citb-arm-a-lod0-mg (meters 20)) (citb-arm-a-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 14) + :longest-edge (meters 9)) + +(defskelgroup *citb-arm-b-sg* + citb-arm + citb-arm-b-lod0-jg + citb-arm-b-idle-ja + ((citb-arm-b-lod0-mg (meters 20)) (citb-arm-b-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :longest-edge (meters 10)) + +(defskelgroup *citb-arm-c-sg* + citb-arm + citb-arm-c-lod0-jg + citb-arm-c-idle-ja + ((citb-arm-c-lod0-mg (meters 20)) (citb-arm-c-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 25) + :longest-edge (meters 11)) + +(defskelgroup *citb-arm-d-sg* + citb-arm + citb-arm-d-lod0-jg + citb-arm-d-idle-ja + ((citb-arm-d-lod0-mg (meters 20)) (citb-arm-d-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 29) + :longest-edge (meters 8)) + +(defskelgroup *citb-arm-shoulder-a-sg* + citb-arm-shoulder + citb-arm-shoulder-a-lod0-jg + citb-arm-shoulder-a-idle-ja + ((citb-arm-shoulder-a-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 22) + :longest-edge (meters 10)) + +(defskelgroup *citb-arm-shoulder-b-sg* + citb-arm-shoulder + citb-arm-shoulder-b-lod0-jg + citb-arm-shoulder-b-idle-ja + ((citb-arm-shoulder-b-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 22) + :longest-edge (meters 10)) (defstate idle (citb-arm-section) :virtual #t - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (loop - (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)) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (loop + (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 hidden)) - (logclear! (-> self draw status) (draw-status hidden)) - ) - (suspend) - ) - ) - ) - :post ja-post - ) + (logclear! (-> self draw status) (draw-status hidden))) + (suspend)))) + :post ja-post) (defmethod init-root! ((this citb-arm-section)) (set! (-> this root) (new 'process 'trsqv)) 0 - (none) - ) + (none)) (defmethod setup-new-process! ((this citb-arm-section)) (logclear! (-> this mask) (process-mask actor-pause)) (load-params! (-> this sync) this (the-as uint 3000) 0.0 0.15 0.15) (cond - ((> (-> this sync period) 0) - (set! (-> this rot-scale) 1.0) - ) + ((> (-> this sync period) 0) (set! (-> this rot-scale) 1.0)) (else - (set! (-> this rot-scale) -1.0) - (let ((v1-6 (abs (the-as int (-> this sync period))))) - (set! (-> this sync period) (the-as uint v1-6)) - ) - ) - ) + (set! (-> this rot-scale) -1.0) + (let ((v1-6 (abs (the-as int (-> this sync period))))) (set! (-> this sync period) (the-as uint v1-6))))) (logior! (-> this skel status) (janim-status inited)) (set-vector! (-> this cull-dir-local) 0.0 0.0 -1.0 1.0) (set! (-> this cull-dot) (cos 5461.3335)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this citb-arm-section) (arg0 entity-actor)) (init-root! this) (process-drawable-from-entity! this arg0) (setup-new-process! this) (go (method-of-object this idle)) - (none) - ) + (none)) (deftype citb-arm (citb-arm-section) - ((root collide-shape-moving :override) - ) - ) - + ((root collide-shape-moving :override))) (defstate idle (citb-arm) :virtual #t :trans rider-trans - :post (behavior () - (if (logtest? (-> self draw status) (draw-status hidden)) + :post + (behavior () + (if (logtest? (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root)) - (restore-collide-with-as (-> self root)) - ) - (rider-post) - ) - ) + (restore-collide-with-as (-> self root))) + (rider-post))) (defmethod init-root! ((this citb-arm)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -168,15 +144,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod setup-new-process! ((this citb-arm)) (call-parent-method this) @@ -184,13 +157,9 @@ (set-vector! (-> this cull-dir-local) 0.0 0.0 -1.0 1.0) (set! (-> this cull-dot) (cos 5461.3335)) 0 - (none) - ) - -(deftype citb-arm-shoulder (citb-arm-section) - () - ) + (none)) +(deftype citb-arm-shoulder (citb-arm-section) ()) (defmethod setup-new-process! ((this citb-arm-shoulder)) (call-parent-method this) @@ -198,157 +167,125 @@ (set-vector! (-> this cull-dir-local) 1.0 0.0 1.0 1.0) (set! (-> this cull-dot) (cos 8374.045)) 0 - (none) - ) - -(deftype citb-arm-a (citb-arm) - () - ) - - -(deftype citb-arm-b (citb-arm) - () - ) + (none)) +(deftype citb-arm-a (citb-arm) ()) -(deftype citb-arm-c (citb-arm) - () - ) +(deftype citb-arm-b (citb-arm) ()) +(deftype citb-arm-c (citb-arm) ()) -(deftype citb-arm-d (citb-arm) - () - ) +(deftype citb-arm-d (citb-arm) ()) +(deftype citb-arm-shoulder-a (citb-arm-shoulder) ()) -(deftype citb-arm-shoulder-a (citb-arm-shoulder) - () - ) - - -(deftype citb-arm-shoulder-b (citb-arm-shoulder) - () - ) - +(deftype citb-arm-shoulder-b (citb-arm-shoulder) ()) (defmethod setup-new-process! ((this citb-arm-a)) (initialize-skeleton this *citb-arm-a-sg* '()) (call-parent-method this) (set! (-> this root root-prim local-sphere z) -184320.0) 0 - (none) - ) + (none)) (defmethod setup-new-process! ((this citb-arm-b)) (initialize-skeleton this *citb-arm-b-sg* '()) (call-parent-method this) (set! (-> this root root-prim local-sphere z) -225280.0) 0 - (none) - ) + (none)) (defmethod setup-new-process! ((this citb-arm-c)) (initialize-skeleton this *citb-arm-c-sg* '()) (call-parent-method this) (set! (-> this root root-prim local-sphere z) -266240.0) 0 - (none) - ) + (none)) (defmethod setup-new-process! ((this citb-arm-d)) (initialize-skeleton this *citb-arm-d-sg* '()) (call-parent-method this) (set! (-> this root root-prim local-sphere z) -307200.0) 0 - (none) - ) + (none)) (defmethod setup-new-process! ((this citb-arm-shoulder-a)) (initialize-skeleton this *citb-arm-shoulder-a-sg* '()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod setup-new-process! ((this citb-arm-shoulder-b)) (initialize-skeleton this *citb-arm-shoulder-b-sg* '()) (call-parent-method this) 0 - (none) - ) - -(defskelgroup *citb-disc-a-sg* citb-disc citb-disc-a-lod0-jg citb-disc-a-idle-ja - ((citb-disc-a-lod0-mg (meters 20)) (citb-disc-a-lod1-mg (meters 40)) (citb-disc-a-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 12) - :longest-edge (meters 7.5) - ) - -(defskelgroup *citb-disc-b-sg* citb-disc citb-disc-b-lod0-jg citb-disc-b-idle-ja - ((citb-disc-b-lod0-mg (meters 20)) (citb-disc-b-lod1-mg (meters 40)) (citb-disc-b-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 12) - :longest-edge (meters 7.5) - ) - -(defskelgroup *citb-disc-c-sg* citb-disc citb-disc-c-lod0-jg citb-disc-c-idle-ja - ((citb-disc-c-lod0-mg (meters 20)) (citb-disc-c-lod1-mg (meters 40)) (citb-disc-c-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 12) - :longest-edge (meters 11) - ) - -(defskelgroup *citb-disc-d-sg* citb-disc citb-disc-d-lod0-jg citb-disc-d-idle-ja - ((citb-disc-d-lod0-mg (meters 20)) (citb-disc-d-lod1-mg (meters 40)) (citb-disc-d-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 12) - :longest-edge (meters 8) - ) + (none)) + +(defskelgroup *citb-disc-a-sg* + citb-disc + citb-disc-a-lod0-jg + citb-disc-a-idle-ja + ((citb-disc-a-lod0-mg (meters 20)) (citb-disc-a-lod1-mg (meters 40)) (citb-disc-a-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 7.5)) + +(defskelgroup *citb-disc-b-sg* + citb-disc + citb-disc-b-lod0-jg + citb-disc-b-idle-ja + ((citb-disc-b-lod0-mg (meters 20)) (citb-disc-b-lod1-mg (meters 40)) (citb-disc-b-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 7.5)) + +(defskelgroup *citb-disc-c-sg* + citb-disc + citb-disc-c-lod0-jg + citb-disc-c-idle-ja + ((citb-disc-c-lod0-mg (meters 20)) (citb-disc-c-lod1-mg (meters 40)) (citb-disc-c-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 11)) + +(defskelgroup *citb-disc-d-sg* + citb-disc + citb-disc-d-lod0-jg + citb-disc-d-idle-ja + ((citb-disc-d-lod0-mg (meters 20)) (citb-disc-d-lod1-mg (meters 40)) (citb-disc-d-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 12) + :longest-edge (meters 8)) (deftype citb-disc (process-drawable) - ((root collide-shape-moving :override) - (sync sync-info :inline) - (rot-scale float) - ) + ((root collide-shape-moving :override) + (sync sync-info :inline) + (rot-scale float)) (:methods - (init! (_type_) none) - (citb-disc-method-21 (_type_) none) - ) + (init! (_type_) none) + (citb-disc-method-21 (_type_) none)) (:states - citb-disc-idle - ) - ) - + citb-disc-idle)) (defstate citb-disc-idle (citb-disc) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 0.25)) - #f - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 0.25)) #f))) :trans rider-trans - :code (behavior () - (loop - (update! (-> self sound)) - (quaternion-axis-angle! - (-> self root quat) - 0.0 - 1.0 - 0.0 - (* 65536.0 (get-current-phase (-> self sync)) (-> self rot-scale)) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop + (update! (-> self sound)) + (quaternion-axis-angle! (-> self root quat) + 0.0 + 1.0 + 0.0 + (* 65536.0 (get-current-phase (-> self sync)) (-> self rot-scale))) + (suspend))) + :post rider-post) (defmethod init! ((this citb-disc)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -357,20 +294,16 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 49152.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod citb-disc-method-21 ((this citb-disc)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this citb-disc) (arg0 entity-actor)) (init! this) @@ -378,78 +311,52 @@ (logclear! (-> this mask) (process-mask actor-pause)) (load-params! (-> this sync) this (the-as uint 3000) 0.0 0.15 0.15) (cond - ((> (-> this sync period) 0) - (set! (-> this rot-scale) 1.0) - ) + ((> (-> this sync period) 0) (set! (-> this rot-scale) 1.0)) (else - (set! (-> this rot-scale) -1.0) - (let ((v1-8 (abs (the-as int (-> this sync period))))) - (set! (-> this sync period) (the-as uint v1-8)) - ) - ) - ) + (set! (-> this rot-scale) -1.0) + (let ((v1-8 (abs (the-as int (-> this sync period))))) (set! (-> this sync period) (the-as uint v1-8))))) (citb-disc-method-21 this) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "rotate-plat" :fo-max 20) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "rotate-plat" :fo-max 20) (-> this root trans))) (logior! (-> this skel status) (janim-status inited)) (go citb-disc-idle) - (none) - ) - -(deftype citb-disc-a (citb-disc) - () - ) + (none)) +(deftype citb-disc-a (citb-disc) ()) -(deftype citb-disc-b (citb-disc) - () - ) +(deftype citb-disc-b (citb-disc) ()) +(deftype citb-disc-c (citb-disc) ()) -(deftype citb-disc-c (citb-disc) - () - ) - - -(deftype citb-disc-d (citb-disc) - () - ) - +(deftype citb-disc-d (citb-disc) ()) (defmethod citb-disc-method-21 ((this citb-disc-a)) (initialize-skeleton this *citb-disc-a-sg* '()) 0 - (none) - ) + (none)) (defmethod citb-disc-method-21 ((this citb-disc-b)) (initialize-skeleton this *citb-disc-b-sg* '()) 0 - (none) - ) + (none)) (defmethod citb-disc-method-21 ((this citb-disc-c)) (initialize-skeleton this *citb-disc-c-sg* '()) 0 - (none) - ) + (none)) (defmethod citb-disc-method-21 ((this citb-disc-d)) (initialize-skeleton this *citb-disc-d-sg* '()) 0 - (none) - ) - -(deftype citb-iris-door (eco-door) - () - ) + (none)) +(deftype citb-iris-door (eco-door) ()) -(defskelgroup *citb-iris-door-sg* citb-iris-door citb-iris-door-lod0-jg citb-iris-door-idle-ja - ((citb-iris-door-lod0-mg (meters 20)) (citb-iris-door-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *citb-iris-door-sg* + citb-iris-door + citb-iris-door-lod0-jg + citb-iris-door-idle-ja + ((citb-iris-door-lod0-mg (meters 20)) (citb-iris-door-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defmethod eco-door-method-24 ((this citb-iris-door)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -460,15 +367,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod eco-door-method-25 ((this citb-iris-door)) (initialize-skeleton this *citb-iris-door-sg* '()) @@ -478,26 +382,22 @@ (process-entity-status! this (entity-perm-status complete) #t) (update-transforms! (-> this root)) 0 - (none) - ) + (none)) -(defskelgroup *citb-button-sg* citb-button citb-button-lod0-jg citb-button-idle-ja - ((citb-button-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) - -(deftype citb-button (basebutton) - () - ) +(defskelgroup *citb-button-sg* + citb-button + citb-button-lod0-jg + citb-button-idle-ja + ((citb-button-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) +(deftype citb-button (basebutton) ()) (defmethod basebutton-method-27 ((this citb-button)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-kind ground-object)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -505,14 +405,11 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) - (the-as collide-shape-moving 0) - ) + (set! (-> this root) s5-0)) + (the-as collide-shape-moving 0)) (defmethod basebutton-method-26 ((this citb-button)) (initialize-skeleton this *citb-button-sg* '()) @@ -521,245 +418,199 @@ (cond ((-> this down?) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-0 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-0 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1))))) (else - (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) - ) - ) + (let ((s5-1 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)))) (set! (-> this anim-speed) 2.0) (set! (-> this timeout) 1.0) (update-transforms! (-> this root)) (ja-post) - (none) - ) + (none)) (deftype citb-launcher (plat) - ((launcher (pointer launcher)) - ) - ) - + ((launcher (pointer launcher)))) (defstate plat-path-active (citb-launcher) :virtual #t - :post (behavior () - (let ((t9-0 (-> (method-of-type plat plat-path-active) post))) - (if t9-0 - ((the-as (function none :behavior citb-launcher) t9-0)) - ) - ) - (send-event (ppointer->process (-> self launcher)) 'trans (-> self basetrans)) - ) - ) - -(defskelgroup *citb-launcher-sg* citb-launcher citb-launcher-lod0-jg citb-launcher-idle-ja - ((citb-launcher-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) + :post + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-path-active) post))) + (if t9-0 ((the-as (function none :behavior citb-launcher) t9-0)))) + (send-event (ppointer->process (-> self launcher)) 'trans (-> self basetrans)))) + +(defskelgroup *citb-launcher-sg* + citb-launcher + citb-launcher-lod0-jg + citb-launcher-idle-ja + ((citb-launcher-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defmethod get-unlit-skel ((this citb-launcher)) - *citb-launcher-sg* - ) + *citb-launcher-sg*) (defmethod baseplat-method-26 ((this citb-launcher)) (let ((f30-0 (res-lump-float (-> this entity) 'spring-height :default 163840.0)) - (s5-0 (res-lump-value (-> this entity) 'mode uint128)) - ) - (set! (-> this launcher) (process-spawn launcher (-> this root trans) f30-0 s5-0 81920.0 :to this)) - ) + (s5-0 (res-lump-value (-> this entity) 'mode uint128))) + (set! (-> this launcher) (process-spawn launcher (-> this root trans) f30-0 s5-0 81920.0 :to this))) (set! (-> this root root-prim local-sphere w) 18432.0) (logclear! (-> this mask) (process-mask actor-pause)) 0 - (none) - ) - -(defskelgroup *citb-robotboss-sg* citb-robotboss citb-robotboss-lod0-jg citb-robotboss-idle-ja - ((citb-robotboss-lod0-mg (meters 999999))) - :bounds (static-spherem 0 17 0 18) - :longest-edge (meters 6) - ) - -(defskelgroup *citb-robotboss-head-sg* citb-robotboss citb-robotboss-head-lod0-jg citb-robotboss-head-idle-ja - ((citb-robotboss-head-lod0-mg (meters 999999))) - :bounds (static-spherem 0 30 10 12) - :longest-edge (meters 2) - ) - -(defskelgroup *citb-robotboss-nose-sg* citb-robotboss citb-robotboss-nose-lod0-jg citb-robotboss-nose-idle-ja - ((citb-robotboss-nose-lod0-mg (meters 999999))) - :bounds (static-spherem 0 10 20 15) - ) - -(defskelgroup *citb-robotboss-gun-sg* citb-robotboss citb-robotboss-gun-lod0-jg citb-robotboss-gun-idle-ja - ((citb-robotboss-gun-lod0-mg (meters 999999))) - :bounds (static-spherem 0 28 -10 14) - :longest-edge (meters 5) - ) - -(defskelgroup *citb-robotboss-leftshoulder-sg* citb-robotboss citb-robotboss-leftshoulder-lod0-jg citb-robotboss-leftshoulder-idle-ja - ((citb-robotboss-leftshoulder-lod0-mg (meters 999999))) - :bounds (static-spherem 17 27 0 14) - :longest-edge (meters 6) - ) - -(defskelgroup *citb-robotboss-rightshoulder-sg* citb-robotboss citb-robotboss-rightshoulder-lod0-jg citb-robotboss-rightshoulder-idle-ja - ((citb-robotboss-rightshoulder-lod0-mg (meters 999999))) - :bounds (static-spherem -17 27 0 14) - :longest-edge (meters 6) - ) - -(defskelgroup *citb-robotboss-leftarm-sg* citb-robotboss citb-robotboss-leftarm-lod0-jg citb-robotboss-leftarm-idle-ja - ((citb-robotboss-leftarm-lod0-mg (meters 999999))) - :bounds (static-spherem 15 5 -10 20) - :longest-edge (meters 9) - ) - -(defskelgroup *citb-robotboss-rightarm-sg* citb-robotboss citb-robotboss-rightarm-lod0-jg citb-robotboss-rightarm-idle-ja - ((citb-robotboss-rightarm-lod0-mg (meters 999999))) - :bounds (static-spherem -15 0 -8 16) - :longest-edge (meters 3) - ) - -(defskelgroup *citb-robotboss-belly-sg* citb-robotboss citb-robotboss-belly-lod0-jg citb-robotboss-belly-idle-ja - ((citb-robotboss-belly-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -2 3 10) - :longest-edge (meters 3) - ) + (none)) + +(defskelgroup *citb-robotboss-sg* + citb-robotboss + citb-robotboss-lod0-jg + citb-robotboss-idle-ja + ((citb-robotboss-lod0-mg (meters 999999))) + :bounds (static-spherem 0 17 0 18) + :longest-edge (meters 6)) + +(defskelgroup *citb-robotboss-head-sg* + citb-robotboss + citb-robotboss-head-lod0-jg + citb-robotboss-head-idle-ja + ((citb-robotboss-head-lod0-mg (meters 999999))) + :bounds (static-spherem 0 30 10 12) + :longest-edge (meters 2)) + +(defskelgroup *citb-robotboss-nose-sg* + citb-robotboss + citb-robotboss-nose-lod0-jg + citb-robotboss-nose-idle-ja + ((citb-robotboss-nose-lod0-mg (meters 999999))) + :bounds (static-spherem 0 10 20 15)) + +(defskelgroup *citb-robotboss-gun-sg* + citb-robotboss + citb-robotboss-gun-lod0-jg + citb-robotboss-gun-idle-ja + ((citb-robotboss-gun-lod0-mg (meters 999999))) + :bounds (static-spherem 0 28 -10 14) + :longest-edge (meters 5)) + +(defskelgroup *citb-robotboss-leftshoulder-sg* + citb-robotboss + citb-robotboss-leftshoulder-lod0-jg + citb-robotboss-leftshoulder-idle-ja + ((citb-robotboss-leftshoulder-lod0-mg (meters 999999))) + :bounds (static-spherem 17 27 0 14) + :longest-edge (meters 6)) + +(defskelgroup *citb-robotboss-rightshoulder-sg* + citb-robotboss + citb-robotboss-rightshoulder-lod0-jg + citb-robotboss-rightshoulder-idle-ja + ((citb-robotboss-rightshoulder-lod0-mg (meters 999999))) + :bounds (static-spherem -17 27 0 14) + :longest-edge (meters 6)) + +(defskelgroup *citb-robotboss-leftarm-sg* + citb-robotboss + citb-robotboss-leftarm-lod0-jg + citb-robotboss-leftarm-idle-ja + ((citb-robotboss-leftarm-lod0-mg (meters 999999))) + :bounds (static-spherem 15 5 -10 20) + :longest-edge (meters 9)) + +(defskelgroup *citb-robotboss-rightarm-sg* + citb-robotboss + citb-robotboss-rightarm-lod0-jg + citb-robotboss-rightarm-idle-ja + ((citb-robotboss-rightarm-lod0-mg (meters 999999))) + :bounds (static-spherem -15 0 -8 16) + :longest-edge (meters 3)) + +(defskelgroup *citb-robotboss-belly-sg* + citb-robotboss + citb-robotboss-belly-lod0-jg + citb-robotboss-belly-idle-ja + ((citb-robotboss-belly-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -2 3 10) + :longest-edge (meters 3)) (deftype citb-robotboss (process-drawable) - ((root collide-shape :override) - (shield-on symbol) - ) + ((root collide-shape :override) + (shield-on symbol)) (:states - citb-robotboss-die - citb-robotboss-idle - ) - ) - + citb-robotboss-die + citb-robotboss-idle)) (defstate citb-robotboss-idle (citb-robotboss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (sv-96 int) (sv-112 int)) - (the-as - symbol - (cond - ((= message 'shield-off) - (stop! (-> self sound)) - (if (-> self shield-on) - (sound-play "robotcage-off") - ) - (set! (-> self shield-on) #f) - #f - ) - ((= message 'shield-on) - (let ((v0-3 #t)) - (set! (-> self shield-on) v0-3) - v0-3 - ) - ) - ((= message 'die) - (cleanup-for-death self) - (the-as symbol (deactivate self)) - ) - ((or (= message 'touch) (= message '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 (the-as sound-group sv-112) (the-as symbol t2-1)) - ) - ) - (the-as symbol (send-event - proc - 'shove - (-> block param 0) - (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3)))) - ) - ) - ) - ) - ) - ) - :code (behavior () - (let ((gp-0 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-nose-sg* #f :to self))) - (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 ((gp-1 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-head-sg* #f :to self))) - (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 ((gp-2 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-gun-sg* #f :to self))) - (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 ((gp-3 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-leftshoulder-sg* #f :to self))) - (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 ((gp-4 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-rightshoulder-sg* #f :to self))) - (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 ((gp-5 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-leftarm-sg* #f :to self))) - (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 ((gp-6 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-rightarm-sg* #f :to self))) - (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 ((gp-7 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-belly-sg* #f :to self))) - (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) - ) - (update-transforms! (-> self root)) - (loop - (when (-> self shield-on) - (update! (-> self sound)) - (spawn (-> self part) (-> self root trans)) - (set! (-> *palette-fade-controls* control 7 fade) 1.0) - ) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (sv-96 int) (sv-112 int)) + (the-as symbol + (cond + ((= message 'shield-off) + (stop! (-> self sound)) + (if (-> self shield-on) (sound-play "robotcage-off")) + (set! (-> self shield-on) #f) + #f) + ((= message 'shield-on) (let ((v0-3 #t)) (set! (-> self shield-on) v0-3) v0-3)) + ((= message 'die) (cleanup-for-death self) (the-as symbol (deactivate self))) + ((or (= message 'touch) (= message '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 (the-as sound-group sv-112) (the-as symbol t2-1)))) + (the-as symbol + (send-event proc 'shove (-> block param 0) (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3)))))))))) + :code + (behavior () + (let ((gp-0 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-nose-sg* #f :to self))) + (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 ((gp-1 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-head-sg* #f :to self))) + (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 ((gp-2 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-gun-sg* #f :to self))) + (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 ((gp-3 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-leftshoulder-sg* #f :to self))) + (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 ((gp-4 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-rightshoulder-sg* #f :to self))) + (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 ((gp-5 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-leftarm-sg* #f :to self))) + (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 ((gp-6 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-rightarm-sg* #f :to self))) + (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 ((gp-7 (manipy-spawn (-> self root trans) (-> self entity) *citb-robotboss-belly-sg* #f :to self))) + (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)) + (update-transforms! (-> self root)) + (loop + (when (-> self shield-on) + (update! (-> self sound)) + (spawn (-> self part) (-> self root trans)) + (set! (-> *palette-fade-controls* control 7 fade) 1.0)) + (suspend))) + :post ja-post) (defstate citb-robotboss-die (citb-robotboss) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self))) (defmethod init-from-entity! ((this citb-robotboss) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -770,109 +621,84 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *citb-robotboss-sg* '()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 601) this)) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this shield-on) #t) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "robotcage-lp" :fo-max 150) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "robotcage-lp" :fo-max 150) (-> this root trans))) (if (= (get-task-status (-> this entity extra perm task)) (task-status invalid)) - (go citb-robotboss-die) - (go citb-robotboss-idle) - ) - (none) - ) + (go citb-robotboss-die) + (go citb-robotboss-idle)) + (none)) -(defskelgroup *citb-coil-sg* citb-coil citb-coil-lod0-jg citb-coil-idle-ja - ((citb-coil-lod0-mg (meters 20)) (citb-coil-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *citb-coil-sg* + citb-coil + citb-coil-lod0-jg + citb-coil-idle-ja + ((citb-coil-lod0-mg (meters 20)) (citb-coil-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (deftype citb-coil (process-drawable) - ((part-off sparticle-launch-control) - ) + ((part-off sparticle-launch-control)) (:states - citb-coil-break - citb-coil-broken - citb-coil-idle - ) - ) - + citb-coil-break + citb-coil-broken + citb-coil-idle)) (defmethod relocate ((this citb-coil) (arg0 int)) - (if (nonzero? (-> this part-off)) - (&+! (-> this part-off) arg0) - ) - (the-as citb-coil ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part-off)) (&+! (-> this part-off) arg0)) + (the-as citb-coil ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this citb-coil)) - (if (nonzero? (-> this part-off)) - (kill-and-free-particles (-> this part-off)) - ) + (if (nonzero? (-> this part-off)) (kill-and-free-particles (-> this part-off))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defstate citb-coil-idle (citb-coil) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go citb-coil-break) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post (behavior () - (spawn (-> self part) (-> self root trans)) - (ja-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go citb-coil-break)))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post + (behavior () + (spawn (-> self part) (-> self root trans)) + (ja-post))) (defstate citb-coil-break (citb-coil) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! citb-coil-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go citb-coil-broken) - ) - :post ja-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! citb-coil-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go citb-coil-broken)) + :post ja-post) (defstate citb-coil-broken (citb-coil) - :code (behavior () - (ja-no-eval :group! citb-coil-dead-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (spawn (-> self part-off) (-> self root trans)) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (ja-no-eval :group! citb-coil-dead-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop + (spawn (-> self part-off) (-> self root trans)) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this citb-coil) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -881,364 +707,235 @@ (set! (-> this part) (create-launch-control (-> *part-group-id-table* 596) this)) (set! (-> this part-off) (create-launch-control (-> *part-group-id-table* 602) this)) (let ((v1-9 (entity-actor-lookup (-> this entity) 'state-actor 0))) - (if (not v1-9) - (set! v1-9 (-> this entity)) - ) - (if (logtest? (-> v1-9 extra perm status) (entity-perm-status complete)) - (go citb-coil-broken) - (go citb-coil-idle) - ) - ) - (none) - ) - -(defskelgroup *citb-hose-sg* citb-hose citb-hose-lod0-jg citb-hose-idle-ja - ((citb-hose-lod0-mg (meters 20)) (citb-hose-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) - -(deftype citb-hose (process-drawable) - () + (if (not v1-9) (set! v1-9 (-> this entity))) + (if (logtest? (-> v1-9 extra perm status) (entity-perm-status complete)) (go citb-coil-broken) (go citb-coil-idle))) + (none)) + +(defskelgroup *citb-hose-sg* + citb-hose + citb-hose-lod0-jg + citb-hose-idle-ja + ((citb-hose-lod0-mg (meters 20)) (citb-hose-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) + +(deftype citb-hose (process-drawable) () (:states - citb-hose-die - citb-hose-idle - citb-hose-spawn - ) - ) - + citb-hose-die + citb-hose-idle + citb-hose-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) - ) - ) - ) + (('spawn) (go citb-hose-spawn)) + (('trigger) (go citb-hose-die)))) (defstate citb-hose-idle (citb-hose) :event citb-hose-event-handler - :code (behavior () - (loop - (ja-no-eval :group! citb-hose-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! citb-hose-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate citb-hose-spawn (citb-hose) :event citb-hose-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! citb-hose-spit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go citb-hose-idle) - ) - :post ja-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! citb-hose-spit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go citb-hose-idle)) + :post ja-post) (defstate citb-hose-die (citb-hose) :event citb-hose-event-handler - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! citb-hose-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (anim-loop) - ) - :post ja-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! citb-hose-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (anim-loop)) + :post ja-post) (defmethod init-from-entity! ((this citb-hose) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *citb-hose-sg* '()) (let ((v1-3 (entity-actor-lookup (-> this entity) 'state-actor 0))) - (if (not v1-3) - (set! v1-3 (-> this entity)) - ) - (if (logtest? (-> v1-3 extra perm status) (entity-perm-status complete)) - (go citb-hose-die) - (go citb-hose-idle) - ) - ) - (none) - ) - -(deftype citb-chains (process-hidden) - () - ) - - -(defskelgroup *citb-generator-sg* citb-generator citb-generator-lod0-jg citb-generator-idle-ja - ((citb-generator-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) - -(defskelgroup *citb-generator-broken-sg* citb-generator citb-generator-broken-lod0-jg citb-generator-idle-ja - ((citb-generator-broken-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) + (if (not v1-3) (set! v1-3 (-> this entity))) + (if (logtest? (-> v1-3 extra perm status) (entity-perm-status complete)) (go citb-hose-die) (go citb-hose-idle))) + (none)) + +(deftype citb-chains (process-hidden) ()) + +(defskelgroup *citb-generator-sg* + citb-generator + citb-generator-lod0-jg + citb-generator-idle-ja + ((citb-generator-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) + +(defskelgroup *citb-generator-broken-sg* + citb-generator + citb-generator-broken-lod0-jg + citb-generator-idle-ja + ((citb-generator-broken-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) (deftype citb-generator (process-drawable) - ((root collide-shape :override) - (normal-look lod-set :inline) - (broken-look lod-set :inline) - (mushroom-pos vector :inline) - (mushroom symbol) - (birth-fuel-cell symbol) - (trigger-others symbol) - (part-broken sparticle-launch-control) - (part-mushroom sparticle-launch-control) - ) + ((root collide-shape :override) + (normal-look lod-set :inline) + (broken-look lod-set :inline) + (mushroom-pos vector :inline) + (mushroom symbol) + (birth-fuel-cell symbol) + (trigger-others symbol) + (part-broken sparticle-launch-control) + (part-mushroom sparticle-launch-control)) (:methods - (init! (_type_) none) - (citb-generator-method-21 (_type_) none) - ) + (init! (_type_) none) + (citb-generator-method-21 (_type_) none)) (:states - citb-generator-break - citb-generator-broken - citb-generator-idle - ) - ) - + citb-generator-break + citb-generator-broken + citb-generator-idle)) (defmethod relocate ((this citb-generator) (arg0 int)) - (if (nonzero? (-> this part-broken)) - (&+! (-> this part-broken) arg0) - ) - (if (nonzero? (-> this part-mushroom)) - (&+! (-> this part-mushroom) arg0) - ) - (the-as citb-generator ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part-broken)) (&+! (-> this part-broken) arg0)) + (if (nonzero? (-> this part-mushroom)) (&+! (-> this part-mushroom) arg0)) + (the-as citb-generator ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this citb-generator)) - (if (nonzero? (-> this part-broken)) - (kill-and-free-particles (-> this part-broken)) - ) - (if (nonzero? (-> this part-mushroom)) - (kill-and-free-particles (-> this part-mushroom)) - ) + (if (nonzero? (-> this part-broken)) (kill-and-free-particles (-> this part-broken))) + (if (nonzero? (-> this part-mushroom)) (kill-and-free-particles (-> this part-mushroom))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (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)) - ) + (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 - ) - ) + (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 - ) - ) - ) - ) - ) - ) + (send-event (if s4-0 (-> s4-0 extra process)) 'trigger)))))) (let ((gp-1 (current-time))) (while (not (time-elapsed? gp-1 (seconds 0.5))) - (if (movie?) - (set! gp-1 (current-time)) - ) - (suspend) - ) - ) + (if (movie?) (set! gp-1 (current-time))) + (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)) - ) + (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 - ) - ) + (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 - ) - ) - ) - ) - ) - ) + (send-event (if s4-1 (-> s4-1 extra process)) 'trigger)))))) 0 - (none) - ) + (none)) (defstate citb-generator-idle (citb-generator) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (if (-> self mushroom) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (if (-> self mushroom) (increment-success-for-hint (text-id citadel-generator)) - (increment-success-for-hint (text-id citadel-generator-no-mushroom)) - ) - (go citb-generator-break) - ) - (('trigger) - #t - ) - ) - ) - :exit (behavior () - (stop! (-> self sound)) - ) - :code (behavior () - (lods-assign! (-> self draw) (-> self normal-look)) - (update-transforms! (-> self root)) - (loop - (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - (if (-> self mushroom) - (spawn (-> self part-mushroom) (-> self mushroom-pos)) - ) - (if (not (-> self mushroom)) - (+! (-> *palette-fade-controls* control 3 fade) 0.3333) - ) - (when (and *target* (>= 32768.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (if (-> self mushroom) + (increment-success-for-hint (text-id citadel-generator-no-mushroom))) + (go citb-generator-break)) + (('trigger) #t))) + :exit + (behavior () + (stop! (-> self sound))) + :code + (behavior () + (lods-assign! (-> self draw) (-> self normal-look)) + (update-transforms! (-> self root)) + (loop + (spawn (-> self part) (-> self root trans)) + (update! (-> self sound)) + (if (-> self mushroom) (spawn (-> self part-mushroom) (-> self mushroom-pos))) + (if (not (-> self mushroom)) (+! (-> *palette-fade-controls* control 3 fade) 0.3333)) + (when (and *target* (>= 32768.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (if (-> self mushroom) (level-hint-spawn (text-id citadel-generator) "sksp0381" (the-as entity #f) *entity-pool* (game-task none)) - (level-hint-spawn - (text-id citadel-generator-no-mushroom) - "sksp0384" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + (level-hint-spawn (text-id citadel-generator-no-mushroom) "sksp0384" (the-as entity #f) *entity-pool* (game-task none)))) + (suspend))) + :post ja-post) (defstate citb-generator-break (citb-generator) - :code (behavior () - (let ((gp-0 (entity-actor-count (-> self entity) 'open-actor))) - (dotimes (s5-0 gp-0) - (let ((s4-0 (entity-actor-lookup (-> self entity) 'open-actor s5-0)) - (a1-2 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 0) - (set! (-> a1-2 message) 'open) - (let ((t9-2 send-event-function) - (v1-1 s4-0) - ) - (when (not (t9-2 - (if v1-1 - (-> v1-1 extra process) - ) - a1-2 - ) - ) - (entity-birth-no-kill s4-0) - (suspend) - (send-event - (if s4-0 - (-> s4-0 extra process) - ) - 'open - ) - ) - ) - ) - ) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 598) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (sound-play "sagecage-open") - ;; og:preserve-this NTSC-J patch here - ; (if (name= (-> self name) "citb-generator-1") - ; (set-continue! *game-info* "citadel-elevator") - ; ) - (go citb-generator-broken) - ) - :post ja-post - ) + :code + (behavior () + (let ((gp-0 (entity-actor-count (-> self entity) 'open-actor))) + (dotimes (s5-0 gp-0) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'open-actor s5-0)) + (a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'open) + (let ((t9-2 send-event-function) + (v1-1 s4-0)) + (when (not (t9-2 (if v1-1 (-> v1-1 extra process)) a1-2)) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 (-> s4-0 extra process)) 'open)))))) + (process-entity-status! self (entity-perm-status complete) #t) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 598) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (sound-play "sagecage-open") + ;; og:preserve-this NTSC-J patch here + ; (if (name= (-> self name) "citb-generator-1") + ; (set-continue! *game-info* "citadel-elevator") + ; ) + (go citb-generator-broken)) + :post ja-post) (defstate citb-generator-broken (citb-generator) - :code (behavior () - (lods-assign! (-> self draw) (-> self broken-look)) - (update-transforms! (-> self root)) - (cond - ((-> self birth-fuel-cell) - (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #t) - (when (-> self child) - (while (-> self child) - (suspend) - ) - (citb-generator-trigger-others) - ) - ) - (else - (citb-generator-trigger-others) - ) - ) - (anim-loop) - ) - :post (behavior () - (spawn (-> self part-broken) (-> self root trans)) - (ja-post) - ) - ) + :code + (behavior () + (lods-assign! (-> self draw) (-> self broken-look)) + (update-transforms! (-> self root)) + (cond + ((-> self birth-fuel-cell) + (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #t) + (when (-> self child) + (while (-> self child) + (suspend)) + (citb-generator-trigger-others))) + (else (citb-generator-trigger-others))) + (anim-loop)) + :post + (behavior () + (spawn (-> self part-broken) (-> self root trans)) + (ja-post))) (defmethod init! ((this citb-generator)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -1248,15 +945,12 @@ (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod citb-generator-method-21 ((this citb-generator)) (initialize-skeleton this *citb-generator-sg* '()) @@ -1268,195 +962,118 @@ (set! (-> this mushroom-pos quad) (-> this root trans quad)) (let ((f30-0 0.0)) (cond - ((name= (-> this name) "citb-generator-1") - (set! (-> this mushroom) #t) - (set! f30-0 21845.334) - ) - ((name= (-> this name) "citb-generator-2") - (set! (-> this mushroom) #t) - (set! f30-0 16384.0) - ) - ((name= (-> this name) "citb-generator-3") - (set! (-> this mushroom) #t) - (set! f30-0 16384.0) - ) - ((name= (-> this name) "citb-generator-4") - (set! (-> this mushroom) #t) - (set! f30-0 -5461.3335) - ) - (else - (set! (-> this mushroom) #f) - ) - ) + ((name= (-> this name) "citb-generator-1") (set! (-> this mushroom) #t) (set! f30-0 21845.334)) + ((name= (-> this name) "citb-generator-2") (set! (-> this mushroom) #t) (set! f30-0 16384.0)) + ((name= (-> this name) "citb-generator-3") (set! (-> this mushroom) #t) (set! f30-0 16384.0)) + ((name= (-> this name) "citb-generator-4") (set! (-> this mushroom) #t) (set! f30-0 -5461.3335)) + (else (set! (-> this mushroom) #f))) (when (-> this mushroom) (+! (-> this mushroom-pos x) (* 19251.2 (sin f30-0))) - (+! (-> this mushroom-pos z) (* 19251.2 (cos f30-0))) - ) - ) + (+! (-> this mushroom-pos z) (* 19251.2 (cos f30-0))))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 600) this)) (set! (-> this part-broken) (create-launch-control (-> *part-group-id-table* 597) this)) (set! (-> this part-mushroom) (create-launch-control (-> *part-group-id-table* 599) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "mushroom-gen" :fo-max 20) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "mushroom-gen" :fo-max 20) (-> this root trans))) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this citb-generator) (arg0 entity-actor)) (init! this) (process-drawable-from-entity! this arg0) (citb-generator-method-21 this) (let ((v1-4 (entity-actor-lookup (-> this entity) 'state-actor 0))) - (if (not v1-4) - (set! v1-4 (-> this entity)) - ) - (if (logtest? (-> v1-4 extra perm status) (entity-perm-status complete)) - (go citb-generator-broken) - (go citb-generator-idle) - ) - ) - (none) - ) - -(defskelgroup *citadelcam-sg* citadelcam citadelcam-lod0-jg citadelcam-idle-ja - ((citadelcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 20) - ) - -(deftype citadelcam (process-drawable) - () + (if (not v1-4) (set! v1-4 (-> this entity))) + (if (logtest? (-> v1-4 extra perm status) (entity-perm-status complete)) (go citb-generator-broken) (go citb-generator-idle))) + (none)) + +(defskelgroup *citadelcam-sg* + citadelcam + citadelcam-lod0-jg + citadelcam-idle-ja + ((citadelcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 20)) + +(deftype citadelcam (process-drawable) () (:states - citadelcam-idle - citadelcam-stair-plats - ) - ) - + citadelcam-idle + citadelcam-stair-plats)) (defstate citadelcam-idle (citadelcam) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('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) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('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))) (defstate citadelcam-stair-plats (citadelcam) - :code (behavior () - (let ((gp-0 (entity-actor-count (-> self entity) 'trigger-actor))) - (dotimes (s5-0 gp-0) - (let ((s4-0 (entity-actor-lookup (-> self entity) 'trigger-actor s5-0)) - (a1-2 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 0) - (set! (-> a1-2 message) 'trigger) - (let ((t9-2 send-event-function) - (v1-1 s4-0) - ) - (when (not (t9-2 - (if v1-1 - (-> v1-1 extra process) - ) - a1-2 - ) - ) - (entity-birth-no-kill s4-0) - (suspend) - (send-event - (if s4-0 - (-> s4-0 extra process) - ) - 'trigger - ) - ) - ) - ) - ) - ) - (let ((gp-2 - (ppointer->handle - (process-spawn pov-camera (-> self root trans) *citadelcam-sg* "citadelcam-stair-plats" 0 #f '() :to self) - ) - ) - ) - (while (handle->process (the-as handle gp-2)) - (suspend) - ) - ) - (level-hint-spawn (text-id citadel-plat) "sksp0387" (the-as entity #f) *entity-pool* (game-task none)) - (go citadelcam-idle) - ) - ) + :code + (behavior () + (let ((gp-0 (entity-actor-count (-> self entity) 'trigger-actor))) + (dotimes (s5-0 gp-0) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'trigger-actor s5-0)) + (a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-1 s4-0)) + (when (not (t9-2 (if v1-1 (-> v1-1 extra process)) a1-2)) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 (-> s4-0 extra process)) 'trigger)))))) + (let ((gp-2 (ppointer->handle (process-spawn pov-camera (-> self root trans) *citadelcam-sg* "citadelcam-stair-plats" 0 #f '() :to self)))) + (while (handle->process (the-as handle gp-2)) + (suspend))) + (level-hint-spawn (text-id citadel-plat) "sksp0387" (the-as entity #f) *entity-pool* (game-task none)) + (go citadelcam-idle))) (defmethod init-from-entity! ((this citadelcam) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (go citadelcam-idle) - (none) - ) - -(deftype citb-battlecontroller (battlecontroller) - () - ) + (none)) +(deftype citb-battlecontroller (battlecontroller) ()) (defstate battlecontroller-play-intro-camera (citb-battlecontroller) :virtual #t - :code (behavior () - (level-hint-spawn (text-id citadel-battle) "sksp0383" (the-as entity #f) *entity-pool* (game-task none)) - (suspend) - (let ((gp-1 (ppointer->handle (process-spawn - pov-camera - (-> (entity-by-name "citadelcam-1") extra trans) - *citadelcam-sg* - "citadel-bunnies" - 0 - #f - '() - :to self - ) - ) - ) - ) - (send-event (handle->process (the-as handle gp-1)) 'mask 2048) - (while (handle->process (the-as handle gp-1)) - (logclear! (-> *target* state-flags) (state-flags invulnerable)) - (suspend) - ) - ) - (go-virtual battlecontroller-active) - ) - ) + :code + (behavior () + (level-hint-spawn (text-id citadel-battle) "sksp0383" (the-as entity #f) *entity-pool* (game-task none)) + (suspend) + (let ((gp-1 (ppointer->handle (process-spawn pov-camera + (-> (entity-by-name "citadelcam-1") extra trans) + *citadelcam-sg* + "citadel-bunnies" + 0 + #f + '() + :to + self)))) + (send-event (handle->process (the-as handle gp-1)) 'mask 2048) + (while (handle->process (the-as handle gp-1)) + (logclear! (-> *target* state-flags) (state-flags invulnerable)) + (suspend))) + (go-virtual battlecontroller-active))) (defstate battlecontroller-die (citb-battlecontroller) :virtual #t - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (let ((t9-2 (-> (find-parent-state) code))) - (if t9-2 - ((the-as (function none :behavior battlecontroller) t9-2)) - ) - ) - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (let ((t9-2 (-> (find-parent-state) code))) (if t9-2 ((the-as (function none :behavior battlecontroller) t9-2)))))) (defmethod battlecontroller-method-27 ((this citb-battlecontroller)) (call-parent-method this) (set! (-> this activate-distance) 143360.0) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/citadel/citadel-part.gc b/goal_src/jak1/levels/citadel/citadel-part.gc index 4f4c59ea66..c61a38995e 100644 --- a/goal_src/jak1/levels/citadel/citadel-part.gc +++ b/goal_src/jak1/levels/citadel/citadel-part.gc @@ -1,62 +1,51 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: citadel-part.gc -;; name in dgo: citadel-part -;; dgos: CIT, L1 - ;; DECOMP BEGINS -(deftype citb-part (part-spawner) - () - ) - +(deftype citb-part (part-spawner) ()) (defpartgroup group-firehose-blast-smoke :id 685 :flags (use-local-clock) :bounds (static-bspherem 0 -8 0 8) - :parts ((sp-item 2879) (sp-item 2880)) - ) + :parts ((sp-item 2879) (sp-item 2880))) (defpart 2880 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 8.0) - (:x (meters 0) (meters 2.5)) - (:y (meters -13)) - (:scale-x (meters 0.15) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.21333334)) - (:scalevel-x (meters -0.00083333335)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.56666666) - (:fade-g -2.8333333) - (:fade-b -2.8333333) - (:accel-y (meters -0.0016666667) (meters -0.00066666666)) - (:friction 0.85) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit0 bit2 bit3)) - (:userdata -409600.0) - (:func 'check-drop-level-firehose-pops) - (:next-time (seconds 0.4) (seconds 1.997)) - (:next-launcher 2881) - (:conerot-x (degrees 70) (degrees 10)) - (:conerot-y (degrees -1440) (degrees 2880)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 8.0) + (:x (meters 0) (meters 2.5)) + (:y (meters -13)) + (:scale-x (meters 0.15) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.21333334)) + (:scalevel-x (meters -0.00083333335)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.56666666) + (:fade-g -2.8333333) + (:fade-b -2.8333333) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.85) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit0 bit2 bit3)) + (:userdata -409600.0) + (:func 'check-drop-level-firehose-pops) + (:next-time (seconds 0.4) (seconds 1.997)) + (:next-launcher 2881) + (:conerot-x (degrees 70) (degrees 10)) + (:conerot-y (degrees -1440) (degrees 2880)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2881 - :init-specs ((:userdata 409600.0)) - ) + :init-specs ((:userdata 409600.0))) (defun check-drop-level-firehose-pops ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -64,316 +53,297 @@ (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg2 y) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 2882) gp-0 :rate (the-as float 1.0)) - (launch-particles (-> *part-id-table* 2883) gp-0 :rate (the-as float 1.0)) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 2883) gp-0 :rate (the-as float 1.0)))) + (none)) (defpart 2883 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 16.0 32.0) - (:fade-a -1.92) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 16.0 32.0) + (:fade-a -1.92) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)))) (defpart 2882 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 4.0) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:fade-r -1.4166666) - (:fade-g -8.5) - (:fade-b -8.5) - (:accel-y (meters -0.0016666667) (meters -0.00066666666)) - (:friction 0.85) - (:timer (seconds 0.05) (seconds 0.397)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 4.0) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:fade-r -1.4166666) + (:fade-g -8.5) + (:fade-b -8.5) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.85) + (:timer (seconds 0.05) (seconds 0.397)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2879 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 2)) - (:y (meters -2) (meters -1)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 0.8) (meters 0.6)) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters -0.36666667)) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 2)) + (:y (meters -2) (meters -1)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 0.8) (meters 0.6)) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters -0.36666667)) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2541 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:birth-func 'birth-func-set-quat) - (:num 1.0) - (:y (meters -11)) - (:scale-x (meters 6) (meters 2)) - (:scale-y (meters 16) (meters 4)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:birth-func 'birth-func-set-quat) + (:num 1.0) + (:y (meters -11)) + (:scale-x (meters 6) (meters 2)) + (:scale-y (meters 16) (meters 4)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-citb-generator-mushroom-on :id 599 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12.5) - :parts ((sp-item 2408 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 2409 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 2410 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 2411 :fade-after (meters 200) :falloff-to (meters 200) :binding 2407) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - (sp-item 2407 :flags (bit1 start-dead launch-asap)) - ) - ) + :parts + ((sp-item 2408 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 2409 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 2410 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 2411 :fade-after (meters 200) :falloff-to (meters 200) :binding 2407) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)) + (sp-item 2407 :flags (bit1 start-dead launch-asap)))) (defpartgroup group-citb-generator-on :id 600 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12.5) - :parts ((sp-item 2413 :fade-after (meters 300) :falloff-to (meters 300)) - (sp-item 2414 :fade-after (meters 200) :falloff-to (meters 200) :binding 2412) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - (sp-item 2412 :flags (bit1 start-dead launch-asap)) - ) - ) + :parts + ((sp-item 2413 :fade-after (meters 300) :falloff-to (meters 300)) + (sp-item 2414 :fade-after (meters 200) :falloff-to (meters 200) :binding 2412) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)) + (sp-item 2412 :flags (bit1 start-dead launch-asap)))) (defpart 2411 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.15) - (:y (meters 4.5) (meters 1)) - (:scale-x (meters 10.4) (meters 6)) - (:scale-y (meters 6.4) (meters 6)) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 8.0 16.0) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 3.0000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.15) + (:y (meters 4.5) (meters 1)) + (:scale-x (meters 10.4) (meters 6)) + (:scale-y (meters 6.4) (meters 6)) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 8.0 16.0) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 3.0000002)))) (defpart 2407 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0)) - (:z (meters 3.5)) - (:scale-x (meters 4.6) (meters 0.4)) - (:scale-y (meters 3) (meters 1)) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.10666667) 4 (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.8) - (:accel-z (meters 0)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - (:next-time (seconds 0.4)) - (:next-launcher 2415) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0)) + (:z (meters 3.5)) + (:scale-x (meters 4.6) (meters 0.4)) + (:scale-y (meters 3) (meters 1)) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.10666667) 4 (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.8) + (:accel-z (meters 0)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)) + (:next-time (seconds 0.4)) + (:next-launcher 2415))) (defpart 2408 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:y (meters 5)) - (:scale-x (meters 2.5) (meters 6.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - (:rotate-y (degrees 3.0000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:y (meters 5)) + (:scale-x (meters 2.5) (meters 6.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146) + (:rotate-y (degrees 3.0000002)))) (defpart 2409 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:y (meters 5)) - (:scale-x (meters 2.5) (meters 5.5)) - (:rot-x 4) - (:rot-z (degrees 20) (degrees 140)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - (:rotate-y (degrees 3.0000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:y (meters 5)) + (:scale-x (meters 2.5) (meters 5.5)) + (:rot-x 4) + (:rot-z (degrees 20) (degrees 140)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146) + (:rotate-y (degrees 3.0000002)))) (defpart 2410 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:y (meters 5)) - (:scale-x (meters 2.5) (meters 4.5)) - (:rot-x 4) - (:rot-z (degrees 20) (degrees 140)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - (:rotate-y (degrees 3.0000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:y (meters 5)) + (:scale-x (meters 2.5) (meters 4.5)) + (:rot-x 4) + (:rot-z (degrees 20) (degrees 140)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146) + (:rotate-y (degrees 3.0000002)))) (defpart 2413 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0.75)) - (:scale-x (meters 3) (meters 3)) - (:scale-y (meters 3)) - (:r 32.0) - (:g 32.0) - (:b 128.0) - (:a 64.0 64.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.2)) - (:next-launcher 2415) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0.75)) + (:scale-x (meters 3) (meters 3)) + (:scale-y (meters 3)) + (:r 32.0) + (:g 32.0) + (:b 128.0) + (:a 64.0 64.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.2)) + (:next-launcher 2415))) (defpart 2414 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.2) - (:y (meters 0.2) (meters 1.4)) - (:scale-x (meters 0.4)) - (:scale-y (meters 0.4)) - (:b 0.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.2) + (:y (meters 0.2) (meters 1.4)) + (:scale-x (meters 0.4)) + (:scale-y (meters 0.4)) + (:b 0.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14)))) (defpart 2412 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0)) - (:z (meters 1) (meters 0.02)) - (:scale-x (meters 0.6) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.10666667) 4 (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.8) - (:accel-z (meters 0)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - (:next-time (seconds 0.4)) - (:next-launcher 2415) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0)) + (:z (meters 1) (meters 0.02)) + (:scale-x (meters 0.6) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.10666667) 4 (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.8) + (:accel-z (meters 0)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)) + (:next-time (seconds 0.4)) + (:next-launcher 2415))) (defpart 2415 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 2416)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 2416))) (defpart 2416 - :init-specs ((:fade-a -0.8)) - ) + :init-specs ((:fade-a -0.8))) (defpartgroup group-citb-generator-break :id 598 @@ -381,184 +351,172 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 2423 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2424 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) - (sp-item 2425 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2426 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2423 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2424 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) + (sp-item 2425 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2426 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.067)))) (defpart 2424 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 1)) - (:scale-x (meters 0.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.42666668) - (:fade-g -0.21333334) - (:fade-b -0.21333334) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2427) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 1)) + (:scale-x (meters 0.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.42666668) + (:fade-g -0.21333334) + (:fade-b -0.21333334) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2427) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2427 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223))) (defpart 2426 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:y (meters 1)) - (:scale-x (meters 0.2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 8)) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.42666668)) - (:fade-r -2.1333334) - (:fade-g -1.0666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:y (meters 1)) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 8)) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.42666668)) + (:fade-r -2.1333334) + (:fade-g -1.0666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2423 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 16)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 96.0) - (:fade-r -2.3272727) - (:fade-g -1.1636363) - (:fade-b -1.1636363) - (:fade-a -1.7454545) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 16)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 96.0) + (:fade-r -2.3272727) + (:fade-g -1.1636363) + (:fade-b -1.1636363) + (:fade-a -1.7454545) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2425 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0) - (:y (meters 1)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.42666668) - (:fade-g -0.21333334) - (:fade-b -0.21333334) - (:fade-a -0.42666668) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 110)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0) + (:y (meters 1)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.42666668) + (:fade-g -0.21333334) + (:fade-b -0.21333334) + (:fade-a -0.42666668) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 110)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-citb-generator-off :id 597 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 2417 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 2418 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 2417 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2418 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 2417 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.25) - (:x (meters -0.5) (meters 1.1)) - (:y (meters 0.75)) - (:z (meters -0.5) (meters 1.1)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.18962963) - (:fade-g -0.094814815) - (:fade-b -0.094814815) - (:fade-a -0.047407407) - (:accel-y (meters -0.000006666667)) - (:friction 0.99) - (:timer (seconds 2.25)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.25) + (:x (meters -0.5) (meters 1.1)) + (:y (meters 0.75)) + (:z (meters -0.5) (meters 1.1)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.18962963) + (:fade-g -0.094814815) + (:fade-b -0.094814815) + (:fade-a -0.047407407) + (:accel-y (meters -0.000006666667)) + (:friction 0.99) + (:timer (seconds 2.25)) + (:flags (bit2)))) (defpart 2418 - :init-specs ((:num 0.2) - (:x (meters 0.2)) - (:y (meters 1.75)) - (:rot-x 8) - (:r 3276.8) - (:g 2662.4) - (:b 2867.2) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 2419) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters 0.2)) + (:y (meters 1.75)) + (:rot-x 8) + (:r 3276.8) + (:g 2662.4) + (:b 2867.2) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 2419) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2419 - :init-specs ((:fade-b -1.3653333)) - ) + :init-specs ((:fade-b -1.3653333))) (defun birth-func-random-rot ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (local-vars (v1-5 float) (v1-6 float)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((s3-0 (new 'stack-no-clear 'matrix)) (f30-0 (rand-vu-float-range (-> arg1 user-float) (+ 65536.0 (-> arg1 user-float)))) - (s2-0 (new 'stack-no-clear 'vector)) - ) + (s2-0 (new 'stack-no-clear 'vector))) (set! (-> s2-0 x) 116940.8) (set! (-> s2-0 y) 0.0) (set! (-> s2-0 z) 0.0) @@ -575,13 +533,11 @@ (a0-6 arg2) (f0-13 (-> a0-6 vector 1 x)) (f1-4 (-> a0-6 vector 1 y)) - (f2-0 (-> a0-6 vector 1 z)) - ) + (f2-0 (-> a0-6 vector 1 z))) (set! (-> v1-3 x) f0-13) (set! (-> v1-3 y) f1-4) (set! (-> v1-3 z) f2-0) - (set! (-> v1-3 w) (sqrtf (- (- (- 1.0 (* f2-0 f2-0)) (* f1-4 f1-4)) (* f0-13 f0-13)))) - ) + (set! (-> v1-3 w) (sqrtf (- (- (- 1.0 (* f2-0 f2-0)) (* f1-4 f1-4)) (* f0-13 f0-13))))) (quaternion-rotate-y! (the-as quaternion s5-0) (the-as quaternion s5-0) (+ 16384.0 f30-0)) (cond ((< (-> s5-0 w) 0.0) @@ -589,1587 +545,1504 @@ (.lvf vf2 (&-> s5-0 quad)) (.sub.vf vf1 vf0 vf2 :mask #b111) (.svf (&-> arg2 vector 1 quad) vf1) - (.mov v1-5 vf1) - ) + (.mov v1-5 vf1)) (else - (.lvf vf1 (&-> arg2 vector 1 quad)) - (.lvf vf2 (&-> s5-0 quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 vector 1 quad) vf1) - (.mov v1-6 vf1) - ) - ) - ) - ) + (.lvf vf1 (&-> arg2 vector 1 quad)) + (.lvf vf2 (&-> s5-0 quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 vector 1 quad) vf1) + (.mov v1-6 vf1))))) 0 - (none) - ) - ) + (none))) (defpartgroup group-citb-robotboss-shield :id 601 :flags (use-local-clock) :bounds (static-bspherem 0 23 0 34) - :parts ((sp-item 2420 :fade-after (meters 220) :falloff-to (meters 250) :flags (is-3d))) - ) + :parts ((sp-item 2420 :fade-after (meters 220) :falloff-to (meters 250) :flags (is-3d)))) (defpart 2420 - :init-specs ((:texture (new 'static 'texture-id :index #xc :page #x2)) - (:birth-func 'birth-func-random-rot) - (:num 4.0) - (:y (meters 23)) - (:scale-x (meters 6) (meters 6)) - (:rot-x (degrees 90)) - (:scale-y (meters 31)) - (:r 24.0 32.0) - (:g 0.0) - (:b 96.0 128.0) - (:a 0.0) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14 left-multiply-quat)) - (:userdata 0.0) - (:next-time (seconds 0.25)) - (:next-launcher 2421) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xc :page #x2)) + (:birth-func 'birth-func-random-rot) + (:num 4.0) + (:y (meters 23)) + (:scale-x (meters 6) (meters 6)) + (:rot-x (degrees 90)) + (:scale-y (meters 31)) + (:r 24.0 32.0) + (:g 0.0) + (:b 96.0 128.0) + (:a 0.0) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14 left-multiply-quat)) + (:userdata 0.0) + (:next-time (seconds 0.25)) + (:next-launcher 2421))) (defpart 2421 - :init-specs ((:g 32.0 32.0) (:a 96.0) (:fade-a 0.0) (:next-time (seconds 0.017)) (:next-launcher 2422)) - ) + :init-specs ((:g 32.0 32.0) (:a 96.0) (:fade-a 0.0) (:next-time (seconds 0.017)) (:next-launcher 2422))) (defpart 2422 - :init-specs ((:g 0.0 32.0) (:a 64.0) (:fade-a -0.85333335)) - ) + :init-specs ((:g 0.0 32.0) (:a 64.0) (:fade-a -0.85333335))) (defpartgroup group-citb-coil-glow :id 596 :flags (use-local-clock) :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 2429 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 2430 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 2431 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 2432 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 2433 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 2434 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) - (sp-item 2435 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 2436 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 2437 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 2438 :fade-after (meters 100) :falloff-to (meters 100) :binding 2428) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - (sp-item 2428 :flags (bit1 start-dead launch-asap)) - ) - ) + :parts + ((sp-item 2429 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 2430 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 2431 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 2432 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 2433 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 2434 :fade-after (meters 100) :falloff-to (meters 100) :flags (is-3d)) + (sp-item 2435 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2436 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2437 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2438 :fade-after (meters 100) :falloff-to (meters 100) :binding 2428) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)) + (sp-item 2428 :flags (bit1 start-dead launch-asap)))) (defpart 2434 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:x (meters -0.1)) - (:y (meters 1.0025)) - (:z (meters 2.3)) - (:scale-x (meters 4.1)) - (:rot-x (degrees 75)) - (:rot-y (degrees -80)) - (:scale-y (meters 3)) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees -72)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:x (meters -0.1)) + (:y (meters 1.0025)) + (:z (meters 2.3)) + (:scale-x (meters 4.1)) + (:rot-x (degrees 75)) + (:rot-y (degrees -80)) + (:scale-y (meters 3)) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees -72)))) (defpart 2433 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:x (meters -0.1)) - (:y (meters 3.9)) - (:z (meters 2.3)) - (:scale-x (meters 4.1)) - (:rot-x (degrees 105)) - (:rot-y (degrees -80)) - (:scale-y (meters 3)) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees -72)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:x (meters -0.1)) + (:y (meters 3.9)) + (:z (meters 2.3)) + (:scale-x (meters 4.1)) + (:rot-x (degrees 105)) + (:rot-y (degrees -80)) + (:scale-y (meters 3)) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees -72)))) (defpart 2432 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 3.2897)) - (:z (meters 2.485)) - (:scale-x (meters 3.1)) - (:rot-x (degrees 105)) - (:rot-y (degrees 67)) - (:scale-y (meters 2.9)) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 72)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 3.2897)) + (:z (meters 2.485)) + (:scale-x (meters 3.1)) + (:rot-x (degrees 105)) + (:rot-y (degrees 67)) + (:scale-y (meters 2.9)) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 72)))) (defpart 2431 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0.8025)) - (:z (meters 2.4)) - (:scale-x (meters 3.1)) - (:rot-x (degrees 75)) - (:rot-y (degrees 67)) - (:scale-y (meters 2.25)) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 72)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0.8025)) + (:z (meters 2.4)) + (:scale-x (meters 3.1)) + (:rot-x (degrees 75)) + (:rot-y (degrees 67)) + (:scale-y (meters 2.25)) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 72)))) (defpart 2430 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:x (meters -0.2)) - (:y (meters 0.8025)) - (:z (meters 2.8)) - (:scale-x (meters 3.1)) - (:rot-x (degrees 75)) - (:rot-y (degrees 10)) - (:scale-y (meters 3)) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:x (meters -0.2)) + (:y (meters 0.8025)) + (:z (meters 2.8)) + (:scale-x (meters 3.1)) + (:rot-x (degrees 75)) + (:rot-y (degrees 10)) + (:scale-y (meters 3)) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 2429 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:x (meters -0.2)) - (:y (meters 3.7)) - (:z (meters 2.8)) - (:scale-x (meters 3.1)) - (:rot-x (degrees 105)) - (:rot-y (degrees 10)) - (:scale-y (meters 3)) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:x (meters -0.2)) + (:y (meters 3.7)) + (:z (meters 2.8)) + (:scale-x (meters 3.1)) + (:rot-x (degrees 105)) + (:rot-y (degrees 10)) + (:scale-y (meters 3)) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 2438 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.2) - (:y (meters 0.5) (meters 4)) - (:scale-x (meters 0.4)) - (:scale-y (meters 0.4)) - (:b 0.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.2) + (:y (meters 0.5) (meters 4)) + (:scale-x (meters 0.4)) + (:scale-y (meters 0.4)) + (:b 0.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14)))) (defpart 2428 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0)) - (:z (meters 2.2) (meters 0.2)) - (:scale-x (meters 0.6) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 64.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.10666667) 4 (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.8) - (:accel-z (meters 0)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - (:next-time (seconds 0.4)) - (:next-launcher 2439) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0)) + (:z (meters 2.2) (meters 0.2)) + (:scale-x (meters 0.6) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 64.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.10666667) 4 (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.8) + (:accel-z (meters 0)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)) + (:next-time (seconds 0.4)) + (:next-launcher 2439))) (defpart 2439 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 2440)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.2)) (:next-launcher 2440))) (defpart 2440 - :init-specs ((:fade-a -0.8)) - ) + :init-specs ((:fade-a -0.8))) (defpart 2437 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.2 0.5) - (:y (meters 0.5) (meters 4)) - (:scale-x (meters 6) (meters 2.5)) - (:rot-z (degrees 0) 1 (degrees 180)) - (:scale-y (meters 8.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.2 0.5) + (:y (meters 0.5) (meters 4)) + (:scale-x (meters 6) (meters 2.5)) + (:rot-z (degrees 0) 1 (degrees 180)) + (:scale-y (meters 8.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2435 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:y (meters 0.5) (meters 4)) - (:scale-x (meters 3) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) 1 (degrees 180)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:y (meters 0.5) (meters 4)) + (:scale-x (meters 3) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) 1 (degrees 180)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2436 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 1.0) - (:y (meters 0.5) (meters 4)) - (:scale-x (meters 3) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) 1 (degrees 180)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 1.0) + (:y (meters 0.5) (meters 4)) + (:scale-x (meters 3) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) 1 (degrees 180)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpartgroup group-citb-coil-off :id 602 :flags (use-local-clock) :bounds (static-bspherem 0 6 0 8) - :parts ((sp-item 2441 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 2442 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 2441 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 2442 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 2442 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.06125) - (:x (meters 1.5) (meters 0.5)) - (:y (meters 4.5)) - (:scale-x (meters 2.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.011666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0023333333)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.21333334) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.026666667) - (:accel-y (meters 0.000006666667)) - (:friction 0.99) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 2)) - (:next-launcher 2443) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.06125) + (:x (meters 1.5) (meters 0.5)) + (:y (meters 4.5)) + (:scale-x (meters 2.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.011666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0023333333)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.21333334) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.026666667) + (:accel-y (meters 0.000006666667)) + (:friction 0.99) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 2)) + (:next-launcher 2443) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2443 - :init-specs ((:fade-r 0.0) - (:fade-g 0.0) - (:fade-b 0.0) - (:fade-a -0.035555556) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - ) - ) + :init-specs + ((:fade-r 0.0) + (:fade-g 0.0) + (:fade-b 0.0) + (:fade-a -0.035555556) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)))) (defpart 2441 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 1.5) (meters 0.5)) - (:y (meters 0) (meters 3)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.18962963) - (:fade-g -0.094814815) - (:fade-b -0.094814815) - (:fade-a -0.047407407) - (:accel-y (meters -0.000006666667)) - (:friction 0.99) - (:timer (seconds 2.25)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 1.5) (meters 0.5)) + (:y (meters 0) (meters 3)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.18962963) + (:fade-g -0.094814815) + (:fade-b -0.094814815) + (:fade-a -0.047407407) + (:accel-y (meters -0.000006666667)) + (:friction 0.99) + (:timer (seconds 2.25)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-citb-blue-sage-beam :id 603 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 34) - :parts ((sp-item 2447 :fade-after (meters 140) :falloff-to (meters 140) :binding 2444) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) - (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) - (sp-item 2445 :flags (bit1 start-dead)) - (sp-item 2446 :flags (bit1 start-dead)) - (sp-item 2445 :flags (bit1 start-dead)) - (sp-item 2446 :flags (bit1 start-dead)) - (sp-item 2445 :flags (bit1 start-dead)) - (sp-item 2446 :flags (bit1 start-dead)) - (sp-item 2445 :flags (bit1 start-dead)) - (sp-item 2446 :flags (bit1 start-dead)) - (sp-item 2445 :flags (bit1 start-dead)) - (sp-item 2446 :flags (bit1 start-dead)) - (sp-item 2445 :flags (bit1 start-dead)) - (sp-item 2448) - (sp-item 2449) - (sp-item 2450) - ) - ) + :parts + ((sp-item 2447 :fade-after (meters 140) :falloff-to (meters 140) :binding 2444) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2445) + (sp-item 2444 :flags (bit1 start-dead launch-asap) :binding 2446) + (sp-item 2445 :flags (bit1 start-dead)) + (sp-item 2446 :flags (bit1 start-dead)) + (sp-item 2445 :flags (bit1 start-dead)) + (sp-item 2446 :flags (bit1 start-dead)) + (sp-item 2445 :flags (bit1 start-dead)) + (sp-item 2446 :flags (bit1 start-dead)) + (sp-item 2445 :flags (bit1 start-dead)) + (sp-item 2446 :flags (bit1 start-dead)) + (sp-item 2445 :flags (bit1 start-dead)) + (sp-item 2446 :flags (bit1 start-dead)) + (sp-item 2445 :flags (bit1 start-dead)) + (sp-item 2448) + (sp-item 2449) + (sp-item 2450))) (defpartgroup group-citb-blue-sage-beam-impact :id 607 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 2451 :flags (is-3d))) - ) + :parts ((sp-item 2451 :flags (is-3d)))) (defpart 2451 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 24)) - (:rot-x (degrees 90)) - (:rot-y (degrees 25.000002) (degrees 20)) - (:rot-z (degrees 180)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 16.0 64.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 24)) + (:rot-x (degrees 90)) + (:rot-y (degrees 25.000002) (degrees 20)) + (:rot-z (degrees 180)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 16.0 64.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2447 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.025) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.019444445)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 6)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.025) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.019444445)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 6)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2444 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1) (meters 0.5)) - (:scale-x (meters 2.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 6)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1) (meters 0.5)) + (:scale-x (meters 2.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 6)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2445 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.0) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.0) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2446 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.0) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.0) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2448 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.8) - (:scale-x (meters 2) (meters 0.5)) - (:scale-y (meters 0.6) (meters 0.8)) - (:r 16.0 48.0) - (:g 16.0 48.0) - (:b 128.0) - (:a 128.0) - (:vel-y (meters 0.11666667)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.8) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y (meters 0.6) (meters 0.8)) + (:r 16.0 48.0) + (:g 16.0 48.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.11666667)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2450 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.8) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.058333334)) - (:scalevel-x (meters 0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.8) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.058333334)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2449 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.75) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 128.0) - (:g 0.0 64.0) - (:b 255.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.75) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 128.0) + (:g 0.0 64.0) + (:b 255.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-citb-red-sage-beam :id 604 :flags (use-local-clock) :bounds (static-bspherem 0 23 0 34) - :parts ((sp-item 2454 :fade-after (meters 140) :falloff-to (meters 140) :binding 2452) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2453 :flags (bit1 start-dead)) - (sp-item 2455) - (sp-item 2456) - (sp-item 2457) - ) - ) + :parts + ((sp-item 2454 :fade-after (meters 140) :falloff-to (meters 140) :binding 2452) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2452 :flags (bit1 start-dead launch-asap) :binding 2453) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2453 :flags (bit1 start-dead)) + (sp-item 2455) + (sp-item 2456) + (sp-item 2457))) (defpartgroup group-citb-red-sage-beam-impact :id 608 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 2458 :flags (is-3d))) - ) + :parts ((sp-item 2458 :flags (is-3d)))) (defpart 2458 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 24)) - (:rot-x (degrees 90)) - (:rot-y (degrees -20) (degrees 40)) - (:rot-z (degrees 68)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 192.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 24)) + (:rot-x (degrees 90)) + (:rot-y (degrees -20) (degrees 40)) + (:rot-z (degrees 68)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 192.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2454 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.05) - (:scale-x (meters 6) (meters 3)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 32.0) - (:vel-y (meters 0.062222224)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.05) + (:scale-x (meters 6) (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.062222224)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)))) (defpart 2452 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1.25) (meters 0.5)) - (:scale-x (meters 1.3) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0) - (:b 0.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1.25) (meters 0.5)) + (:scale-x (meters 1.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2453 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 64.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters -0.005555555)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.0) - (:fade-a -0.22857143) - (:accel-y (meters 0.000100000005) (meters 0.00015)) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 171) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.005555555)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.0) + (:fade-a -0.22857143) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 171))) (defpart 2455 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.75) - (:scale-x (meters 6) (meters 1)) - (:scale-y (meters 1.5) (meters 0.75)) - (:r 128.0 128.0) - (:g 16.0 32.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.18666667)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.75) + (:scale-x (meters 6) (meters 1)) + (:scale-y (meters 1.5) (meters 0.75)) + (:r 128.0 128.0) + (:g 16.0 32.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.18666667)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2457 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.4) - (:scale-x (meters 6) (meters 3)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.093333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.4) + (:scale-x (meters 6) (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.093333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)))) (defpart 2456 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 192.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 192.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-citb-yellow-sage-beam :id 605 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 34) - :parts ((sp-item 2461 :fade-after (meters 140) :falloff-to (meters 140) :binding 2459) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2460 :flags (bit1 start-dead)) - (sp-item 2462) - (sp-item 2463) - (sp-item 2464) - ) - ) + :parts + ((sp-item 2461 :fade-after (meters 140) :falloff-to (meters 140) :binding 2459) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2459 :flags (bit1 start-dead launch-asap) :binding 2460) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2460 :flags (bit1 start-dead)) + (sp-item 2462) + (sp-item 2463) + (sp-item 2464))) (defpartgroup group-citb-yellow-sage-beam-impact :id 609 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 2465 :flags (is-3d))) - ) + :parts ((sp-item 2465 :flags (is-3d)))) (defpart 2465 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 24)) - (:rot-x (degrees 90)) - (:rot-y (degrees -20) (degrees 40)) - (:rot-z (degrees 115)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 24)) + (:rot-x (degrees 90)) + (:rot-y (degrees -20) (degrees 40)) + (:rot-z (degrees 115)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2461 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.025) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.031111112)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 6)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 85)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.025) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.031111112)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 6)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 85)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2459 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1.25) (meters 0.5)) - (:scale-x (meters 1.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 96.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 6)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1.25) (meters 0.5)) + (:scale-x (meters 1.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 96.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 6)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2460 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.005)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.17777778) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.005)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.17777778) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)))) (defpart 2462 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.8) - (:scale-x (meters 2) (meters 0.5)) - (:scale-y (meters 0.6) (meters 0.8)) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.18666667)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 85)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.8) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y (meters 0.6) (meters 0.8)) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.18666667)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 85)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2464 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.75) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.093333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 85)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.75) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.093333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 85)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2463 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-citb-green-sage-beam :id 606 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 34) - :parts ((sp-item 2468 :binding 2466) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2467 :flags (bit1 start-dead)) - (sp-item 2469) - (sp-item 2470) - (sp-item 2471) - ) - ) + :parts + ((sp-item 2468 :binding 2466) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2466 :flags (bit1 start-dead launch-asap) :binding 2467) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2467 :flags (bit1 start-dead)) + (sp-item 2469) + (sp-item 2470) + (sp-item 2471))) (defpartgroup group-citb-green-sage-beam-impact :id 610 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 2472 :flags (is-3d))) - ) + :parts ((sp-item 2472 :flags (is-3d)))) (defpart 2472 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 24)) - (:rot-x (degrees 90)) - (:rot-y (degrees -20) (degrees 40)) - (:rot-z (degrees 180)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 24)) + (:rot-x (degrees 90)) + (:rot-y (degrees -20) (degrees 40)) + (:rot-z (degrees 180)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2468 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.025) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.027777778)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.025) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.027777778)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2466 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1.25) (meters 0.5)) - (:scale-x (meters 1.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 96.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 6)) - (:flags (bit2 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1.25) (meters 0.5)) + (:scale-x (meters 1.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 96.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 6)) + (:flags (bit2 bit7 bit14)))) (defpart 2467 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.005)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.005)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit14)))) (defpart 2469 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 0.5)) - (:scale-y (meters 0.6) (meters 0.8)) - (:r 32.0 32.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.16666667)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y (meters 0.6) (meters 0.8)) + (:r 32.0 32.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.16666667)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2471 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.083333336)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.083333336)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2470 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2473 - :init-specs ((:texture (new 'static 'texture-id :index #xc :page #x2)) - (:birth-func 'birth-func-set-quat) - (:num 1.0 1.0) - (:scale-x (meters 0.4) (meters 0.25)) - (:scale-y (meters 5.6)) - (:r 24.0 32.0) - (:g 0.0) - (:b 96.0 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14 left-multiply-quat)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xc :page #x2)) + (:birth-func 'birth-func-set-quat) + (:num 1.0 1.0) + (:scale-x (meters 0.4) (meters 0.25)) + (:scale-y (meters 5.6)) + (:r 24.0 32.0) + (:g 0.0) + (:b 96.0 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14 left-multiply-quat)))) (defpartgroup group-citadel-warpgate :id 662 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2689 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 2690 :fade-after (meters 60) :falloff-to (meters 100) :binding 2687) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2687 :flags (bit1 start-dead launch-asap)) - (sp-item 2691 :fade-after (meters 60) :falloff-to (meters 100) :binding 2688) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2688 :flags (bit1 start-dead launch-asap)) - (sp-item 2692 :fade-after (meters 100) :flags (is-3d)) - ) - ) + :parts + ((sp-item 2689 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 2690 :fade-after (meters 60) :falloff-to (meters 100) :binding 2687) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2687 :flags (bit1 start-dead launch-asap)) + (sp-item 2691 :fade-after (meters 60) :falloff-to (meters 100) :binding 2688) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2688 :flags (bit1 start-dead launch-asap)) + (sp-item 2692 :fade-after (meters 100) :flags (is-3d)))) (defpart 2692 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.5) - (:x (meters 0)) - (:scale-x (meters 5)) - (:rot-x (degrees 90)) - (:rot-z (degrees 82)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 255.0 32.0) - (:b 64.0 64.0) - (:a 0.0 64.0) - (:timer (seconds 0.035)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.5) + (:x (meters 0)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-z (degrees 82)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 255.0 32.0) + (:b 64.0 64.0) + (:a 0.0 64.0) + (:timer (seconds 0.035)) + (:flags (bit3 bit14)))) (defpart 2691 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -35)))) (defpart 2688 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters 4.3555555)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters 4.3555555)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2689 - :init-specs ((:num 3.0 3.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 2.968116) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees 6.0000005)) - ) - ) + :init-specs + ((:num 3.0 3.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 2.968116) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees 6.0000005)))) (defpart 2690 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:accel-x (meters 0.000016666667)) - (:timer (seconds 2.3)) - (:flags (bit3 bit14)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:accel-x (meters 0.000016666667)) + (:timer (seconds 2.3)) + (:flags (bit3 bit14)) + (:rotate-y (degrees 0)))) (defpart 2687 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters 4.3555555)) - (:y (meters 4)) - (:z (meters 2.2)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0033333334)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.21333334) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters 4.3555555)) + (:y (meters 4)) + (:z (meters 2.2)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0033333334)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.21333334) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpartgroup group-part-citadel-torch :id 683 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 2832 :fade-after (meters 180) :falloff-to (meters 200)) - (sp-item 2833 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 2834 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) - (sp-item 2835 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 2836 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 2837 :fade-after (meters 50) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 2832 :fade-after (meters 180) :falloff-to (meters 200)) + (sp-item 2833 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 2834 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) + (sp-item 2835 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 2836 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 2837 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 2837 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 2838) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 2838) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2838 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 2832 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5 1 1.0) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2839) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5 1 1.0) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2839))) (defpart 2839 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 2834 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2839) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2839))) (defpart 2835 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2839) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2839))) (defpart 2836 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2839) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2839))) (defpart 2833 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) diff --git a/goal_src/jak1/levels/citadel/citadel-sages.gc b/goal_src/jak1/levels/citadel/citadel-sages.gc index d8a103833c..d470170ad8 100644 --- a/goal_src/jak1/levels/citadel/citadel-sages.gc +++ b/goal_src/jak1/levels/citadel/citadel-sages.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO") - (require "levels/village2/sage-bluehut.gc") -;; name: citadel-sages.gc -;; name in dgo: citadel-sages -;; dgos: CIT, L1 - ;; TODO (define-extern *robotboss-sg* skeleton-group) @@ -15,143 +10,93 @@ ;; DECOMP BEGINS -(defskelgroup *citb-sagecage-sg* citb-sagecage citb-sagecage-lod0-jg citb-sagecage-redsage-idle-ja - ((citb-sagecage-lod0-mg (meters 20)) (citb-sagecage-lod1-mg (meters 999999))) - :bounds (static-spherem 0 -6 0 7) - ) +(defskelgroup *citb-sagecage-sg* + citb-sagecage + citb-sagecage-lod0-jg + citb-sagecage-redsage-idle-ja + ((citb-sagecage-lod0-mg (meters 20)) (citb-sagecage-lod1-mg (meters 999999))) + :bounds (static-spherem 0 -6 0 7)) (deftype citb-sagecage (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer citb-sage) :overlay-at parent) - (bar-array vector 12 :inline) - (angle-offset float) - (bars-on symbol) - (cloning symbol) - ) + ((root collide-shape-moving :override) + (parent-override (pointer citb-sage) :overlay-at parent) + (bar-array vector 12 :inline) + (angle-offset float) + (bars-on symbol) + (cloning symbol)) (:methods - (citb-sagecage-method-20 (_type_) none) - (citb-sagecage-method-21 (_type_) none) - ) + (citb-sagecage-method-20 (_type_) none) + (citb-sagecage-method-21 (_type_) none)) (:states - citb-sagecage-idle - ) - ) - + citb-sagecage-idle)) (defbehavior citb-sagecage-draw-bars citb-sagecage () (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((gp-0 (-> self node-list data 3 bone transform)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (let ((s4-0 (new 'stack-no-clear 'quaternion))) (let ((s3-0 (new 'stack-no-clear 'vector))) (matrix->quaternion s4-0 gp-0) (vector-! s3-0 (camera-pos) (-> self root trans)) - (let ((v1-7 (-> gp-0 vector 2))) - (set! (-> self angle-offset) (- (atan (-> v1-7 x) (-> v1-7 z)))) - ) + (let ((v1-7 (-> gp-0 vector 2))) (set! (-> self angle-offset) (- (atan (-> v1-7 x) (-> v1-7 z))))) (quaternion-rotate-local-x! s4-0 s4-0 16384.0) - (let ((f0-7 (+ (-> self angle-offset) (atan (-> s3-0 x) (-> s3-0 z))))) - (quaternion-rotate-local-z! s4-0 s4-0 f0-7) - ) - ) - (quaternion-copy! *particle-quat* s4-0) - ) + (let ((f0-7 (+ (-> self angle-offset) (atan (-> s3-0 x) (-> s3-0 z))))) (quaternion-rotate-local-z! s4-0 s4-0 f0-7))) + (quaternion-copy! *particle-quat* s4-0)) (let ((s4-1 (-> *part-id-table* 2473)) - (s3-1 *sp-particle-system-3d*) - ) + (s3-1 *sp-particle-system-3d*)) (dotimes (s2-2 12) (vector-matrix*! s5-0 (-> self bar-array s2-2) gp-0) - (launch-particles :system s3-1 s4-1 s5-0) - ) - ) - ) - ) + (launch-particles :system s3-1 s4-1 s5-0))))) 0 - (none) - ) + (none)) (defbehavior citb-sagecage-update-collision citb-sagecage () - (change-mesh (the-as collide-shape-prim-mesh (-> self root root-prim)) (if (-> self bars-on) - 0 - 1 - ) - ) + (change-mesh (the-as collide-shape-prim-mesh (-> self root root-prim)) (if (-> self bars-on) 0 1)) 0 - (none) - ) + (none)) (defstate citb-sagecage-idle (citb-sagecage) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-3 object)) - (case message - (('disable-bars) - (stop! (-> self sound)) - (sound-play "sagecage-off") - (set! (-> self bars-on) #f) - (citb-sagecage-update-collision) - ) - (('enable-bars) - (set! (-> self bars-on) #t) - (citb-sagecage-update-collision) - ) - (('start-cloning) - (set! v0-3 #t) - (set! (-> self cloning) (the-as symbol v0-3)) - v0-3 - ) - (('stop-cloning) - (set! (-> self cloning) #f) - (let ((v1-7 (-> self skel root-channel 0))) - (set! v0-3 citb-sagecage-idle-ja) - (set! (-> v1-7 frame-group) (the-as art-joint-anim v0-3)) - ) - v0-3 - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-3 object)) + (case message + (('disable-bars) + (stop! (-> self sound)) + (sound-play "sagecage-off") + (set! (-> self bars-on) #f) + (citb-sagecage-update-collision)) + (('enable-bars) (set! (-> self bars-on) #t) (citb-sagecage-update-collision)) + (('start-cloning) (set! v0-3 #t) (set! (-> self cloning) (the-as symbol v0-3)) v0-3) + (('stop-cloning) + (set! (-> self cloning) #f) + (let ((v1-7 (-> self skel root-channel 0))) + (set! v0-3 citb-sagecage-idle-ja) + (set! (-> v1-7 frame-group) (the-as art-joint-anim v0-3))) + v0-3))) :trans rider-trans - :code (behavior () - (loop - (cond - ((-> self cloning) - (let ((gp-0 (ppointer->process (-> self parent-override)))) - (when gp-0 - (joint-control-copy! (-> self skel) (-> (the-as citb-sage gp-0) skel)) - (joint-control-remap! - (-> self skel) - (-> self draw art-group) - (-> (the-as citb-sage gp-0) draw art-group) - '() - 0 - "" - ) - ) - ) - ) - (else - (ja :num! (loop!)) - ) - ) - (suspend) - ) - ) - :post (behavior () - (rider-post) - (when (-> self bars-on) - (update! (-> self sound)) - (citb-sagecage-draw-bars) - ) - ) - ) + :code + (behavior () + (loop + (cond + ((-> self cloning) + (let ((gp-0 (ppointer->process (-> self parent-override)))) + (when gp-0 + (joint-control-copy! (-> self skel) (-> (the-as citb-sage gp-0) skel)) + (joint-control-remap! (-> self skel) (-> self draw art-group) (-> (the-as citb-sage gp-0) draw art-group) '() 0 "")))) + (else (ja :num! (loop!)))) + (suspend))) + :post + (behavior () + (rider-post) + (when (-> self bars-on) + (update! (-> self sound)) + (citb-sagecage-draw-bars)))) (defmethod citb-sagecage-method-20 ((this citb-sagecage)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -160,15 +105,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 28672.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod citb-sagecage-method-21 ((this citb-sagecage)) (initialize-skeleton this *citb-sagecage-sg* '()) @@ -177,8 +119,7 @@ (let ((f0-1 20766.72) (f4-0 14745.6) (f1-0 -14745.6) - (f2-0 7372.8) - ) + (f2-0 7372.8)) (let ((f3-0 -7372.8)) (set-vector! (-> this bar-array 0) f4-0 f0-1 f3-0 1.0) (set-vector! (-> this bar-array 1) f4-0 f0-1 0.0 1.0) @@ -189,21 +130,16 @@ (set-vector! (-> this bar-array 6) f3-0 f0-1 f4-0 1.0) (set-vector! (-> this bar-array 7) 0.0 f0-1 f4-0 1.0) (set-vector! (-> this bar-array 8) f2-0 f0-1 f4-0 1.0) - (set-vector! (-> this bar-array 9) f3-0 f0-1 f1-0 1.0) - ) + (set-vector! (-> this bar-array 9) f3-0 f0-1 f1-0 1.0)) (set-vector! (-> this bar-array 10) 0.0 f0-1 f1-0 1.0) - (set-vector! (-> this bar-array 11) f2-0 f0-1 f1-0 1.0) - ) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "sagecage-gen" :fo-max 20) (-> this root trans)) - ) + (set-vector! (-> this bar-array 11) f2-0 f0-1 f1-0 1.0)) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "sagecage-gen" :fo-max 20) (-> this root trans))) (set! (-> this bars-on) (not (task-complete? *game-info* (-> this entity extra perm task)))) (citb-sagecage-update-collision) (set! (-> this cloning) #t) (set! (-> this event-hook) (-> citb-sagecage-idle event)) 0 - (none) - ) + (none)) (defbehavior citb-sagecage-init-by-other citb-sagecage ((arg0 citb-sage)) (citb-sagecage-method-20 self) @@ -212,97 +148,94 @@ (mem-copy! (the-as pointer (-> self root scale)) (the-as pointer (-> arg0 root scale)) 16) (citb-sagecage-method-21 self) (go citb-sagecage-idle) - (none) - ) - -(defskelgroup *redsage-sg* redsage redsage-lod0-jg redsage-redsage-idle-ja - ((redsage-lod0-mg (meters 20)) (redsage-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - :shadow redsage-shadow-mg - ) - -(defskelgroup *bluesage-sg* bluesage bluesage-lod0-jg bluesage-bluesage-idle-ja - ((bluesage-lod0-mg (meters 20)) (bluesage-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow bluesage-shadow-mg - ) - -(defskelgroup *yellowsage-sg* yellowsage yellowsage-lod0-jg yellowsage-yellowsage-idle-ja - ((yellowsage-lod0-mg (meters 20)) (yellowsage-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - :shadow yellowsage-shadow-mg - ) - -(defskelgroup *green-sagecage-sg* green-sagecage green-sagecage-lod0-jg green-sagecage-green-sagecage-idle-ja - ((green-sagecage-lod0-mg (meters 20)) (green-sagecage-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow green-sagecage-shadow-mg - ) - -(defskelgroup *evilbro-citadel-sg* evilbro-citadel evilbro-citadel-lod0-jg evilbro-citadel-idle-ja - ((evilbro-citadel-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - :shadow evilbro-citadel-shadow-mg - ) - -(defskelgroup *evilsis-citadel-sg* evilsis-citadel evilsis-citadel-lod0-jg evilsis-citadel-idle-ja - ((evilsis-citadel-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - :shadow evilsis-citadel-shadow-mg - ) + (none)) + +(defskelgroup *redsage-sg* + redsage + redsage-lod0-jg + redsage-redsage-idle-ja + ((redsage-lod0-mg (meters 20)) (redsage-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow redsage-shadow-mg) + +(defskelgroup *bluesage-sg* + bluesage + bluesage-lod0-jg + bluesage-bluesage-idle-ja + ((bluesage-lod0-mg (meters 20)) (bluesage-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow bluesage-shadow-mg) + +(defskelgroup *yellowsage-sg* + yellowsage + yellowsage-lod0-jg + yellowsage-yellowsage-idle-ja + ((yellowsage-lod0-mg (meters 20)) (yellowsage-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :shadow yellowsage-shadow-mg) + +(defskelgroup *green-sagecage-sg* + green-sagecage + green-sagecage-lod0-jg + green-sagecage-green-sagecage-idle-ja + ((green-sagecage-lod0-mg (meters 20)) (green-sagecage-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow green-sagecage-shadow-mg) + +(defskelgroup *evilbro-citadel-sg* + evilbro-citadel + evilbro-citadel-lod0-jg + evilbro-citadel-idle-ja + ((evilbro-citadel-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1) + :shadow evilbro-citadel-shadow-mg) + +(defskelgroup *evilsis-citadel-sg* + evilsis-citadel + evilsis-citadel-lod0-jg + evilsis-citadel-idle-ja + ((evilsis-citadel-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1) + :shadow evilsis-citadel-shadow-mg) (deftype citb-sage (process-taskable) - ((spawn-pos vector :inline) - (target-pos vector :inline) - (dir vector :inline) - (rot-y float) - (rot-x float) - (idle-anim int32) - (attack-start-anim int32) - (attack-anim int32) - (beam-joint int32) - (cage handle) - (part-impact sparticle-launch-control) - (beam-on symbol) - (resolution-anim spool-anim) - (sound-name string) - (sound-id sound-id) - (alt-actor entity-actor) - ) - ) - + ((spawn-pos vector :inline) + (target-pos vector :inline) + (dir vector :inline) + (rot-y float) + (rot-x float) + (idle-anim int32) + (attack-start-anim int32) + (attack-anim int32) + (beam-joint int32) + (cage handle) + (part-impact sparticle-launch-control) + (beam-on symbol) + (resolution-anim spool-anim) + (sound-name string) + (sound-id sound-id) + (alt-actor entity-actor))) (defmethod relocate ((this citb-sage) (arg0 int)) - (if (nonzero? (-> this part-impact)) - (&+! (-> this part-impact) arg0) - ) - (the-as citb-sage ((method-of-type process-taskable relocate) this arg0)) - ) + (if (nonzero? (-> this part-impact)) (&+! (-> this part-impact) arg0)) + (the-as citb-sage ((method-of-type process-taskable relocate) this arg0))) (defmethod deactivate ((this citb-sage)) - (if (nonzero? (-> this part-impact)) - (kill-and-free-particles (-> this part-impact)) - ) + (if (nonzero? (-> this part-impact)) (kill-and-free-particles (-> this part-impact))) (sound-stop (-> this sound-id)) ((method-of-type process-taskable deactivate) this) - (none) - ) + (none)) (defmethod play-reminder ((this citb-sage)) (set! (-> this root pause-adjust-distance) 409600.0) (set! (-> this cage) (ppointer->handle (process-spawn citb-sagecage this :to this))) (set! (-> this beam-on) #f) (set! (-> this sound-id) (new-sound-id)) - (if (zero? (-> this sound-name)) - (set! (-> this sound-name) "") - ) + (if (zero? (-> this sound-name)) (set! (-> this sound-name) "")) (let ((v1-9 (the-as entity (entity-actor-lookup (-> this entity) 'alt-actor 0))) - (s5-1 (new 'stack-no-clear 'vector)) - ) + (s5-1 (new 'stack-no-clear 'vector))) (let ((s4-0 (new 'stack-no-clear 'vector))) - (if (not (the-as entity-actor v1-9)) - (set! v1-9 (entity-by-name "citb-robotboss-1")) - ) + (if (not (the-as entity-actor v1-9)) (set! v1-9 (entity-by-name "citb-robotboss-1"))) (set! (-> this alt-actor) (the-as entity-actor v1-9)) (set! (-> this spawn-pos quad) (-> this root trans quad)) (set! (-> s5-1 quad) (-> v1-9 extra trans quad)) @@ -310,171 +243,108 @@ (vector-! s4-0 (-> this spawn-pos) s5-1) (set! (-> s4-0 y) 0.0) (vector-normalize! s4-0 1.0) - (vector+*! (-> this target-pos) s5-1 s4-0 116940.8) - ) + (vector+*! (-> this target-pos) s5-1 s4-0 116940.8)) (when (nonzero? (-> this part)) (vector-! s5-1 (-> this target-pos) (-> this spawn-pos)) (vector-float*! (the-as vector (-> this part group bounds)) s5-1 0.5) - (set! (-> this part group bounds w) (* 0.6 (vector-vector-distance (-> this spawn-pos) (-> this target-pos)))) - ) - ) - (the-as symbol 0) - ) + (set! (-> this part group bounds w) (* 0.6 (vector-vector-distance (-> this spawn-pos) (-> this target-pos)))))) + (the-as symbol 0)) (defmethod process-taskable-method-45 ((this citb-sage)) (set! (-> this spawn-pos quad) (-> this root trans quad)) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod process-taskable-method-42 ((this citb-sage)) - (if (not (should-display? this)) - (go (method-of-object this hidden)) - (go (method-of-object this idle)) - ) - (none) - ) + (if (not (should-display? this)) (go (method-of-object this hidden)) (go (method-of-object this idle))) + (none)) (defmethod play-anim! ((this citb-sage) (arg0 symbol)) - (the-as basic (-> this resolution-anim)) - ) + (the-as basic (-> this resolution-anim))) (defmethod get-art-elem ((this citb-sage)) (cond ((= (current-status (-> this tasks)) (task-status invalid)) (set! (-> this beam-on) #t) - (-> this draw art-group data (-> this attack-anim)) - ) - (else - (-> this draw art-group data (-> this idle-anim)) - ) - ) - ) + (-> this draw art-group data (-> this attack-anim))) + (else (-> this draw art-group data (-> this idle-anim))))) (defmethod should-display? ((this citb-sage)) - (!= (get-task-status (game-task citadel-sage-green)) (task-status invalid)) - ) + (!= (get-task-status (game-task citadel-sage-green)) (task-status invalid))) (defstate hidden (citb-sage) :virtual #t - :enter (behavior () - (send-event (handle->process (-> self cage)) 'disable-bars) - (send-event (handle->process (-> self cage)) 'stop-cloning) - ((-> (method-of-type process-taskable hidden) enter)) - ) - ) + :enter + (behavior () + (send-event (handle->process (-> self cage)) 'disable-bars) + (send-event (handle->process (-> self cage)) 'stop-cloning) + ((-> (method-of-type process-taskable hidden) enter)))) (defbehavior citb-sage-draw-beam citb-sage () (if (< (vector-vector-distance (ear-trans) (-> self spawn-pos)) 409600.0) - (sound-play-by-name - (string->sound-name (-> self sound-name)) - (-> self sound-id) - 1024 - 0 - 0 - (sound-group sfx) - (the-as symbol (-> self spawn-pos)) - ) - ) + (sound-play-by-name (string->sound-name (-> self sound-name)) + (-> self sound-id) + 1024 + 0 + 0 + (sound-group sfx) + (the-as symbol (-> self spawn-pos)))) (set! (-> self spawn-pos quad) (-> self node-list data (-> self beam-joint) bone transform vector 3 quad)) (vector-! (-> self dir) (-> self target-pos) (-> self spawn-pos)) (set! (-> self rot-y) (vector-y-angle (-> self dir))) (set! (-> self rot-x) (- 16384.0 (vector-x-angle (-> self dir)))) (process-taskable-method-45 self) (spawn (-> self part) (-> self spawn-pos)) - (spawn (-> self part-impact) (-> self target-pos)) - ) + (spawn (-> self part-impact) (-> self target-pos))) (defstate play-anim (citb-sage) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('disable-bars) - (send-event (handle->process (-> self cage)) 'disable-bars) - ) - (else - ((-> (method-of-type process-taskable play-anim) event) proc argc message block) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('disable-bars) (send-event (handle->process (-> self cage)) 'disable-bars)) + (else ((-> (method-of-type process-taskable play-anim) event) proc argc message block))))) (defstate idle (citb-sage) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('open) - (send-event (handle->process (-> self cage)) 'disable-bars) - ) - (else - ((-> (method-of-type process-taskable idle) event) proc argc message block) - ) - ) - ) - :trans (behavior () - ;; og:preserve-this fix infinite state recursion - (#if PC_PORT - (if (and (not (-> self been-kicked)) (not (should-display? self))) - (go-virtual hidden) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('open) (send-event (handle->process (-> self cage)) 'disable-bars)) + (else ((-> (method-of-type process-taskable idle) event) proc argc message block)))) + :trans + (behavior () + ;; og:preserve-this fix infinite state recursion + (#if PC_PORT + (if (and (not (-> self been-kicked)) (not (should-display? self))) (go-virtual hidden)) ;; no fix - (if (not (should-display? self)) - (go-virtual hidden) - ) - ) - ((-> (method-of-type process-taskable idle) trans)) - ) - :post (behavior () - ((the-as (function none :behavior citb-sage) (-> (method-of-type process-taskable idle) post))) - (if (-> self beam-on) - (citb-sage-draw-beam) - ) - ) - ) - -(deftype red-sagecage (citb-sage) - () - ) + (if (not (should-display? self)) (go-virtual hidden))) + ((-> (method-of-type process-taskable idle) trans))) + :post + (behavior () + ((the-as (function none :behavior citb-sage) (-> (method-of-type process-taskable idle) post))) + (if (-> self beam-on) (citb-sage-draw-beam)))) +(deftype red-sagecage (citb-sage) ()) (defmethod process-taskable-method-52 ((this red-sagecage)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 - (let ((a0-1 v1-1)) - (set! (-> a0-1 settings bot-plane w) (- -8192.0)) - ) + (let ((a0-1 v1-1)) (set! (-> a0-1 settings bot-plane w) (- -8192.0))) 0 - (let ((a0-3 v1-1)) - (set! (-> a0-3 settings top-plane w) (- 4096.0)) - ) + (let ((a0-3 v1-1)) (set! (-> a0-3 settings top-plane w) (- 4096.0))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf02 shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf02 shdf03)))) + (none)) (defmethod draw-npc-shadow ((this red-sagecage)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod process-taskable-method-45 ((this red-sagecage)) (set! (-> *part-id-table* 2455 init-specs 14 initial-valuef) (-> this rot-y)) @@ -483,8 +353,7 @@ (set! (-> *part-id-table* 2457 init-specs 13 initial-valuef) (-> this rot-x)) (set! (-> *part-id-table* 2454 init-specs 14 initial-valuef) (-> this rot-y)) (set! (-> *part-id-table* 2454 init-specs 13 initial-valuef) (-> this rot-x)) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod play-reminder ((this red-sagecage)) (set! (-> this idle-anim) 4) @@ -493,43 +362,26 @@ (set! (-> this beam-joint) 20) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 604) this)) (set! (-> this part-impact) (create-launch-control (-> *part-group-id-table* 608) this)) - (set! (-> this resolution-anim) (new 'static 'spool-anim - :name "redsage-resolution" - :index 7 - :parts 9 - :command-list '((15 send-event self disable-bars) - (45 joint "cameraB") - (216 joint "camera") - (435 joint "cameraB") - (685 joint "camera") - ) - ) - ) + (set! (-> this resolution-anim) + (new 'static + 'spool-anim + :name "redsage-resolution" + :index 7 + :parts 9 + :command-list + '((15 send-event self disable-bars) (45 joint "cameraB") (216 joint "camera") (435 joint "cameraB") (685 joint "camera")))) (set! (-> this sound-name) "redsage-fires") (call-parent-method this) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod process-taskable-method-43 ((this red-sagecage)) - (if (-> this beam-on) - (return #f) - ) + (if (-> this beam-on) (return #f)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.6666667 f0-2) - (play-ambient (-> this ambient) "RED-AM01" #f (-> this root trans)) - ) - ((< 0.33333334 f0-2) - (play-ambient (-> this ambient) "RED-AM02" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "RED-AM03" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.6666667 f0-2) (play-ambient (-> this ambient) "RED-AM01" #f (-> this root trans))) + ((< 0.33333334 f0-2) (play-ambient (-> this ambient) "RED-AM02" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "RED-AM03" #f (-> this root trans))))))) (defmethod init-from-entity! ((this red-sagecage) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *redsage-sg* 3 33 (new 'static 'vector :w 8192.0) 5) @@ -537,53 +389,29 @@ (play-reminder this) (set! (-> this sound-flava) (music-flava sage-red)) (process-taskable-method-42 this) - (none) - ) - -(deftype blue-sagecage (citb-sage) - () - ) + (none)) +(deftype blue-sagecage (citb-sage) ()) (defmethod process-taskable-method-52 ((this blue-sagecage)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 - (let ((a0-1 v1-1)) - (set! (-> a0-1 settings bot-plane w) (- -10035.2)) - ) + (let ((a0-1 v1-1)) (set! (-> a0-1 settings bot-plane w) (- -10035.2))) 0 - (let ((a0-3 v1-1)) - (set! (-> a0-3 settings top-plane w) (- 4096.0)) - ) + (let ((a0-3 v1-1)) (set! (-> a0-3 settings top-plane w) (- 4096.0))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf02 shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf02 shdf03)))) + (none)) (defmethod draw-npc-shadow ((this blue-sagecage)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod process-taskable-method-45 ((this blue-sagecage)) (set! (-> *part-id-table* 2448 init-specs 14 initial-valuef) (-> this rot-y)) @@ -592,8 +420,7 @@ (set! (-> *part-id-table* 2450 init-specs 13 initial-valuef) (-> this rot-x)) (set! (-> *part-id-table* 2447 init-specs 14 initial-valuef) (-> this rot-y)) (set! (-> *part-id-table* 2447 init-specs 13 initial-valuef) (-> this rot-x)) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod play-reminder ((this blue-sagecage)) (set! (-> this idle-anim) 4) @@ -602,48 +429,35 @@ (set! (-> this beam-joint) 53) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 603) this)) (set! (-> this part-impact) (create-launch-control (-> *part-group-id-table* 607) this)) - (set! (-> this resolution-anim) (new 'static 'spool-anim - :name "bluesage-resolution" - :index 7 - :parts 9 - :command-list '((15 send-event self disable-bars) - (45 joint "cameraB") - (74 shadow self #f) - (185 joint "camera") - (256 joint "cameraB") - (505 joint "camera") - (590 joint "cameraB") - (670 joint "camera") - (875 shadow self #t) - (876 joint "cameraB") - ) - ) - ) + (set! (-> this resolution-anim) + (new 'static + 'spool-anim + :name "bluesage-resolution" + :index 7 + :parts 9 + :command-list + '((15 send-event self disable-bars) + (45 joint "cameraB") + (74 shadow self #f) + (185 joint "camera") + (256 joint "cameraB") + (505 joint "camera") + (590 joint "cameraB") + (670 joint "camera") + (875 shadow self #t) + (876 joint "cameraB")))) (set! (-> this sound-name) "bluesage-fires") (call-parent-method this) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod process-taskable-method-43 ((this blue-sagecage)) - (if (-> this beam-on) - (return #f) - ) + (if (-> this beam-on) (return #f)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.6666667 f0-2) - (play-ambient (-> this ambient) "BLU-AM01" #f (-> this root trans)) - ) - ((< 0.33333334 f0-2) - (play-ambient (-> this ambient) "BLU-AM02" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "BLU-AM03" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.6666667 f0-2) (play-ambient (-> this ambient) "BLU-AM01" #f (-> this root trans))) + ((< 0.33333334 f0-2) (play-ambient (-> this ambient) "BLU-AM02" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "BLU-AM03" #f (-> this root trans))))))) (defmethod init-from-entity! ((this blue-sagecage) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *bluesage-sg* 3 54 (new 'static 'vector :w 8192.0) 5) @@ -651,53 +465,29 @@ (play-reminder this) (set! (-> this sound-flava) (music-flava sage-blue)) (process-taskable-method-42 this) - (none) - ) - -(deftype yellow-sagecage (citb-sage) - () - ) + (none)) +(deftype yellow-sagecage (citb-sage) ()) (defmethod process-taskable-method-52 ((this yellow-sagecage)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 - (let ((a0-1 v1-1)) - (set! (-> a0-1 settings bot-plane w) (- -6144.0)) - ) + (let ((a0-1 v1-1)) (set! (-> a0-1 settings bot-plane w) (- -6144.0))) 0 - (let ((a0-3 v1-1)) - (set! (-> a0-3 settings top-plane w) (- 4096.0)) - ) + (let ((a0-3 v1-1)) (set! (-> a0-3 settings top-plane w) (- 4096.0))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf02 shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf02 shdf03)))) + (none)) (defmethod draw-npc-shadow ((this yellow-sagecage)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod process-taskable-method-45 ((this yellow-sagecage)) (set! (-> *part-id-table* 2462 init-specs 14 initial-valuef) (-> this rot-y)) @@ -706,8 +496,7 @@ (set! (-> *part-id-table* 2464 init-specs 13 initial-valuef) (-> this rot-x)) (set! (-> *part-id-table* 2461 init-specs 14 initial-valuef) (-> this rot-y)) (set! (-> *part-id-table* 2461 init-specs 13 initial-valuef) (-> this rot-x)) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod play-reminder ((this yellow-sagecage)) (set! (-> this idle-anim) 4) @@ -716,43 +505,26 @@ (set! (-> this beam-joint) 74) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 605) this)) (set! (-> this part-impact) (create-launch-control (-> *part-group-id-table* 609) this)) - (set! (-> this resolution-anim) (new 'static 'spool-anim - :name "yellowsage-resolution" - :index 7 - :parts 6 - :command-list '((15 send-event self disable-bars) - (45 joint "cameraB") - (256 joint "camera") - (314 joint "cameraB") - (600 joint "camera") - ) - ) - ) + (set! (-> this resolution-anim) + (new 'static + 'spool-anim + :name "yellowsage-resolution" + :index 7 + :parts 6 + :command-list + '((15 send-event self disable-bars) (45 joint "cameraB") (256 joint "camera") (314 joint "cameraB") (600 joint "camera")))) (set! (-> this sound-name) "yellsage-fire") (call-parent-method this) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod process-taskable-method-43 ((this yellow-sagecage)) - (if (-> this beam-on) - (return #f) - ) + (if (-> this beam-on) (return #f)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.6666667 f0-2) - (play-ambient (-> this ambient) "YEL-AM01" #f (-> this root trans)) - ) - ((< 0.33333334 f0-2) - (play-ambient (-> this ambient) "YEL-AM02" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "YEL-AM03" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.6666667 f0-2) (play-ambient (-> this ambient) "YEL-AM01" #f (-> this root trans))) + ((< 0.33333334 f0-2) (play-ambient (-> this ambient) "YEL-AM02" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "YEL-AM03" #f (-> this root trans))))))) (defmethod init-from-entity! ((this yellow-sagecage) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *yellowsage-sg* 3 50 (new 'static 'vector :w 8192.0) 5) @@ -760,18 +532,14 @@ (play-reminder this) (set! (-> this sound-flava) (music-flava sage-yellow)) (process-taskable-method-42 this) - (none) - ) + (none)) (deftype green-sagecage (citb-sage) - ((which-movie int32) - (evilbro handle) - (evilsis handle) - (robotboss handle) - (exitplat handle) - ) - ) - + ((which-movie int32) + (evilbro handle) + (evilsis handle) + (robotboss handle) + (exitplat handle))) (defmethod process-taskable-method-45 ((this green-sagecage)) (set! (-> *part-id-table* 2469 init-specs 14 initial-valuef) (-> this rot-y)) @@ -780,8 +548,7 @@ (set! (-> *part-id-table* 2471 init-specs 13 initial-valuef) (-> this rot-x)) (set! (-> *part-id-table* 2468 init-specs 14 initial-valuef) (-> this rot-y)) (set! (-> *part-id-table* 2468 init-specs 13 initial-valuef) (-> this rot-x)) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod play-reminder ((this green-sagecage)) (set! (-> this idle-anim) 4) @@ -790,24 +557,23 @@ (set! (-> this beam-joint) 22) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 606) this)) (set! (-> this part-impact) (create-launch-control (-> *part-group-id-table* 610) this)) - (set! (-> this resolution-anim) (new 'static 'spool-anim - :name "green-sagecage-resolution" - :index 6 - :parts 12 - :command-list '((33 joint "cameraB") - (156 joint "camera") - (405 joint "cameraB") - (576 joint "camera") - (823 joint "cameraB") - (1156 joint "camera") - (1199 joint "cameraB") - ) - ) - ) + (set! (-> this resolution-anim) + (new 'static + 'spool-anim + :name "green-sagecage-resolution" + :index 6 + :parts 12 + :command-list + '((33 joint "cameraB") + (156 joint "camera") + (405 joint "cameraB") + (576 joint "camera") + (823 joint "cameraB") + (1156 joint "camera") + (1199 joint "cameraB")))) (set! (-> this sound-name) "greensage-fires") (call-parent-method this) - (the-as symbol 0) - ) + (the-as symbol 0)) (defmethod play-anim! ((this green-sagecage) (arg0 symbol)) (local-vars (v1-7 int)) @@ -819,285 +585,209 @@ (close-specific-task! (game-task citadel-sage-blue) (task-status need-hint)) (close-specific-task! (game-task citadel-sage-red) (task-status need-hint)) (close-specific-task! (game-task citadel-sage-yellow) (task-status need-hint)) - (set-continue! *game-info* "citadel-elevator") - ) - (new 'static 'spool-anim - :name "green-sagecage-introduction" - :index 5 - :parts 12 - :command-list '((71 joint "cameraB") - (207 joint "camera") - (343 joint "cameraB") - (574 joint "camera") - (1060 joint "cameraB") - (1061 send-event camera teleport) - ) - ) - ) - ((begin (set! v1-7 (-> this which-movie)) (zero? v1-7)) + (set-continue! *game-info* "citadel-elevator")) + (new 'static + 'spool-anim + :name "green-sagecage-introduction" + :index 5 + :parts 12 + :command-list + '((71 joint "cameraB") + (207 joint "camera") + (343 joint "cameraB") + (574 joint "camera") + (1060 joint "cameraB") + (1061 send-event camera teleport)))) + ((begin + (set! v1-7 (-> this which-movie)) + (zero? v1-7)) (when arg0 (send-event (handle->process (-> this cage)) 'disable-bars) (+! (-> this which-movie) 1) - (set! (-> this draw bounds w) 40960.0) - ) - (-> this resolution-anim) - ) + (set! (-> this draw bounds w) 40960.0)) + (-> this resolution-anim)) ((= v1-7 1) (when arg0 (+! (-> this which-movie) 1) (set! (-> this draw bounds w) 40960.0) (set! (-> this evilbro) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilbro-citadel-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilbro-citadel-sg* #f :to this))) (send-event (handle->process (-> this evilbro)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this evilbro)) 'blend-shape #t) (send-event (handle->process (-> this evilbro)) 'center-joint 3) (set! (-> this evilsis) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilsis-citadel-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilsis-citadel-sg* #f :to this))) (send-event (handle->process (-> this evilsis)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this evilsis)) 'blend-shape #t) (send-event (handle->process (-> this evilsis)) 'center-joint 3) - (if (handle->process (-> this exitplat)) - (format 0 "exitplat activated~%") - ) - ) - (new 'static 'spool-anim - :name "green-sagecage-outro-preboss" - :index 7 - :parts 22 - :command-list '((0 blackout 0) - (0 want-levels citadel finalboss) - (0 display-level finalboss special) - (0 send-event "citb-robotboss-1" 'die) - (335 joint "cameraB") - (581 joint "camera") - (696 joint "cameraB") - (828 joint "camera") - (1180 joint "cameraB") - (1380 send-event self 'spawn-robot) - (1382 joint "camera") - (1382 kill "citb-disc-d-2") - (1382 kill "citb-disc-c-4") - (1382 kill "citb-disc-c-5") - (1382 kill "citb-disc-c-6") - (1382 kill "citb-disc-b-12") - (1382 kill "citb-disc-b-13") - (1382 kill "citb-disc-b-14") - (1382 kill "citb-disc-a-11") - (1382 kill "citb-disc-a-12") - (1382 kill "citb-disc-a-13") - (1382 kill "citb-disc-a-14") - (1382 kill "citb-disc-a-15") - (1382 kill "citb-disc-a-16") - (1382 kill "citb-disc-b-21") - (1382 kill "citb-button-28") - (1382 kill "citb-button-32") - (1382 kill "citb-generator-1") - (1382 kill "citb-generator-2") - (1382 kill "citb-generator-3") - (1382 kill "citb-generator-4") - (1382 kill "citb-iris-door-15") - (1382 kill "citb-iris-door-16") - (1382 kill "crate-2996") - (1382 kill "crate-2997") - (1382 kill "crate-2998") - (1382 kill "crate-3000") - (1382 kill "citb-plat-eco-1") - (1382 kill "citb-plat-eco-2") - (1382 kill "citb-plat-eco-3") - (1382 kill "citb-stair-plat-1") - (1382 kill "citb-stair-plat-2") - (1382 kill "citb-stair-plat-3") - (1382 kill "citb-stair-plat-4") - (1382 kill "citb-stair-plat-5") - (1382 kill "citb-stair-plat-6") - (1382 kill "red-sagecage-1") - (1382 kill "blue-sagecage-1") - (1382 kill "yellow-sagecage-1") - (1382 kill "babak-391") - (1382 kill "citb-disc-c-10") - (1382 kill "citb-iris-door-32") - (1382 kill "citb-disc-b-18") - (1382 kill "citb-disc-b-19") - (1382 kill "citb-disc-b-20") - (1382 kill "citb-iris-door-14") - (1382 kill "orb-cache-top-32") - (1382 kill "citb-disc-b-17") - (1382 kill "citb-iris-door-13") - (1382 kill "citb-button-39") - (1382 kill "citb-button-40") - (1382 kill "babak-392") - (1382 kill "babak-393") - (1382 kill "citb-button-33") - (1382 kill "citb-button-34") - (1382 kill "citb-drop-plat-365") - (1382 kill "citb-drop-plat-366") - (1382 kill "citb-drop-plat-367") - (1382 kill "citb-iris-door-21") - (1382 kill "assistant-lavatube-end-3") - (1382 kill "babak-394") - (1382 kill "babak-396") - (1382 kill "citb-drop-plat-376") - (1605 joint "cameraB") - (1733 kill "citb-iris-door-2") - (1736 joint "camera") - ) - ) - ) + (if (handle->process (-> this exitplat)) (format 0 "exitplat activated~%"))) + (new 'static + 'spool-anim + :name "green-sagecage-outro-preboss" + :index 7 + :parts 22 + :command-list + '((0 blackout 0) + (0 want-levels citadel finalboss) + (0 display-level finalboss special) + (0 send-event "citb-robotboss-1" 'die) + (335 joint "cameraB") + (581 joint "camera") + (696 joint "cameraB") + (828 joint "camera") + (1180 joint "cameraB") + (1380 send-event self 'spawn-robot) + (1382 joint "camera") + (1382 kill "citb-disc-d-2") + (1382 kill "citb-disc-c-4") + (1382 kill "citb-disc-c-5") + (1382 kill "citb-disc-c-6") + (1382 kill "citb-disc-b-12") + (1382 kill "citb-disc-b-13") + (1382 kill "citb-disc-b-14") + (1382 kill "citb-disc-a-11") + (1382 kill "citb-disc-a-12") + (1382 kill "citb-disc-a-13") + (1382 kill "citb-disc-a-14") + (1382 kill "citb-disc-a-15") + (1382 kill "citb-disc-a-16") + (1382 kill "citb-disc-b-21") + (1382 kill "citb-button-28") + (1382 kill "citb-button-32") + (1382 kill "citb-generator-1") + (1382 kill "citb-generator-2") + (1382 kill "citb-generator-3") + (1382 kill "citb-generator-4") + (1382 kill "citb-iris-door-15") + (1382 kill "citb-iris-door-16") + (1382 kill "crate-2996") + (1382 kill "crate-2997") + (1382 kill "crate-2998") + (1382 kill "crate-3000") + (1382 kill "citb-plat-eco-1") + (1382 kill "citb-plat-eco-2") + (1382 kill "citb-plat-eco-3") + (1382 kill "citb-stair-plat-1") + (1382 kill "citb-stair-plat-2") + (1382 kill "citb-stair-plat-3") + (1382 kill "citb-stair-plat-4") + (1382 kill "citb-stair-plat-5") + (1382 kill "citb-stair-plat-6") + (1382 kill "red-sagecage-1") + (1382 kill "blue-sagecage-1") + (1382 kill "yellow-sagecage-1") + (1382 kill "babak-391") + (1382 kill "citb-disc-c-10") + (1382 kill "citb-iris-door-32") + (1382 kill "citb-disc-b-18") + (1382 kill "citb-disc-b-19") + (1382 kill "citb-disc-b-20") + (1382 kill "citb-iris-door-14") + (1382 kill "orb-cache-top-32") + (1382 kill "citb-disc-b-17") + (1382 kill "citb-iris-door-13") + (1382 kill "citb-button-39") + (1382 kill "citb-button-40") + (1382 kill "babak-392") + (1382 kill "babak-393") + (1382 kill "citb-button-33") + (1382 kill "citb-button-34") + (1382 kill "citb-drop-plat-365") + (1382 kill "citb-drop-plat-366") + (1382 kill "citb-drop-plat-367") + (1382 kill "citb-iris-door-21") + (1382 kill "assistant-lavatube-end-3") + (1382 kill "babak-394") + (1382 kill "babak-396") + (1382 kill "citb-drop-plat-376") + (1605 joint "cameraB") + (1733 kill "citb-iris-door-2") + (1736 joint "camera")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 4) - ) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 4))))) (defstate play-anim (green-sagecage) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('spawn-robot) - (let ((gp-0 (entity-by-name "robotboss-3"))) - (format 0 "robotboss ent ~A~%" gp-0) - (when gp-0 - (set! (-> self robotboss) - (ppointer->handle (manipy-spawn (-> self root trans) gp-0 *robotboss-sg* #f :to self)) - ) - (send-event (handle->process (-> self robotboss)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self robotboss)) 'center-joint 3) - (send-event (handle->process (-> self robotboss)) 'origin-joint-index 3) - (let ((s5-1 (handle->process (-> self robotboss)))) - (when s5-1 - (format 0 "robotboss activated ent ~A~%" gp-0) - (set! (-> (the-as process-drawable s5-1) draw bounds w) 327680.0) - ) - ) - ) - ) - ) - (else - ((-> (method-of-type citb-sage play-anim) event) proc argc message block) - ) - ) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self evilbro)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (let ((a0-5 (handle->process (-> self evilsis)))) - (if a0-5 - (deactivate a0-5) - ) - ) - (let ((a0-9 (handle->process (-> self robotboss)))) - (if a0-9 - (deactivate a0-9) - ) - ) - (let ((a0-13 (handle->process (-> self exitplat)))) - (if a0-13 - (deactivate a0-13) - ) - ) - (when (= (current-status (-> self tasks)) (task-status invalid)) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'shield-off) - (let ((t9-5 send-event-function) - (v1-28 (-> self alt-actor)) - ) - (t9-5 - (if v1-28 - (-> v1-28 extra process) - ) - a1-4 - ) - ) - ) - ) - ;; og:preserve-this - (#when PC_PORT - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1))) (= (-> self which-movie) 1)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('spawn-robot) + (let ((gp-0 (entity-by-name "robotboss-3"))) + (format 0 "robotboss ent ~A~%" gp-0) + (when gp-0 + (set! (-> self robotboss) (ppointer->handle (manipy-spawn (-> self root trans) gp-0 *robotboss-sg* #f :to self))) + (send-event (handle->process (-> self robotboss)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self robotboss)) 'center-joint 3) + (send-event (handle->process (-> self robotboss)) 'origin-joint-index 3) + (let ((s5-1 (handle->process (-> self robotboss)))) + (when s5-1 + (format 0 "robotboss activated ent ~A~%" gp-0) + (set! (-> (the-as process-drawable s5-1) draw bounds w) 327680.0)))))) + (else ((-> (method-of-type citb-sage play-anim) event) proc argc message block)))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self evilbro)))) (if a0-1 (deactivate a0-1))) + (let ((a0-5 (handle->process (-> self evilsis)))) (if a0-5 (deactivate a0-5))) + (let ((a0-9 (handle->process (-> self robotboss)))) (if a0-9 (deactivate a0-9))) + (let ((a0-13 (handle->process (-> self exitplat)))) (if a0-13 (deactivate a0-13))) + (when (= (current-status (-> self tasks)) (task-status invalid)) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'shield-off) + (let ((t9-5 send-event-function) + (v1-28 (-> self alt-actor))) + (t9-5 (if v1-28 (-> v1-28 extra process)) a1-4)))) + ;; og:preserve-this + (#when PC_PORT + (when (and (= (get-response (-> self query)) 'no) + (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1))) + (= (-> self which-movie) 1)) (format #t "skipped green-sagecage~%") (start 'play (get-continue-by-name *game-info* "citadel-elevator")) (send-event (process-by-name "citb-exit-plat-4" *active-pool*) 'trigger) (set! (-> self draw bounds w) 10240.0) ((-> (method-of-type process-taskable play-anim) exit)) (set! (-> self which-movie) 2) - (return #f) - )) - (cond - ((= (-> self which-movie) 1) - (set-blackout-frames (seconds 100)) - ) - ((= (-> self which-movie) 2) - (start 'play (get-continue-by-name *game-info* "citadel-elevator")) - ) - ) - (set! (-> self draw bounds w) 10240.0) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - :trans (behavior () - (case (-> self which-movie) - ((1) - (spool-push *art-control* "green-sagecage-outro-preboss" 0 self -1.0) - (if (< 1200.0 (ja-aframe-num 0)) - (citb-sage-draw-beam) - ) - (when (< 1310.0 (ja-aframe-num 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) 'shield-off) - (let ((t9-4 send-event-function) - (v1-8 (-> self alt-actor)) - ) - (t9-4 - (if v1-8 - (-> v1-8 extra process) - ) - a1-1 - ) - ) - ) - ) - ) - ) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (return #f))) + (cond + ((= (-> self which-movie) 1) (set-blackout-frames (seconds 100))) + ((= (-> self which-movie) 2) (start 'play (get-continue-by-name *game-info* "citadel-elevator")))) + (set! (-> self draw bounds w) 10240.0) + ((-> (method-of-type process-taskable play-anim) exit))) + :trans + (behavior () + (case (-> self which-movie) + ((1) + (spool-push *art-control* "green-sagecage-outro-preboss" 0 self -1.0) + (if (< 1200.0 (ja-aframe-num 0)) (citb-sage-draw-beam)) + (when (< 1310.0 (ja-aframe-num 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) 'shield-off) + (let ((t9-4 send-event-function) + (v1-8 (-> self alt-actor))) + (t9-4 (if v1-8 (-> v1-8 extra process)) a1-1)))))) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this green-sagecage)) - (< (-> this which-movie) 2) - ) + (< (-> this which-movie) 2)) (defstate idle (green-sagecage) :virtual #t - :trans (behavior () - (cond - ((and *target* - (and (< (-> (target-pos 0) z) -18821530.0) (= (current-status (-> self tasks)) (task-status need-hint))) - ) - (send-event self 'play-anim) - ) - ((= (-> self which-movie) 1) - (send-event self 'play-anim) - ) - ) - ((-> (method-of-type citb-sage idle) trans)) - ) - ) + :trans + (behavior () + (cond + ((and *target* (and (< (-> (target-pos 0) z) -18821530.0) (= (current-status (-> self tasks)) (task-status need-hint)))) + (send-event self 'play-anim)) + ((= (-> self which-movie) 1) (send-event self 'play-anim))) + ((-> (method-of-type citb-sage idle) trans)))) (defmethod init-from-entity! ((this green-sagecage) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *green-sagecage-sg* 3 40 (new 'static 'vector :w 4096.0) 5) @@ -1108,15 +798,8 @@ (set! (-> this robotboss) (the-as handle #f)) (set! (-> this exitplat) (the-as handle #f)) (cond - ((= (current-status (-> this tasks)) (task-status invalid)) - (set! (-> this which-movie) 2) - ) - (else - (set! (-> this which-movie) 0) - 0 - ) - ) + ((= (current-status (-> this tasks)) (task-status invalid)) (set! (-> this which-movie) 2)) + (else (set! (-> this which-movie) 0) 0)) (set! (-> this sound-flava) (music-flava sage)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/citadel/citb-bunny.gc b/goal_src/jak1/levels/citadel/citb-bunny.gc index 8f4bd2d464..ceccd0ca31 100644 --- a/goal_src/jak1/levels/citadel/citb-bunny.gc +++ b/goal_src/jak1/levels/citadel/citb-bunny.gc @@ -1,86 +1,78 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO") - (require "levels/snow/snow-bunny.gc") -;; name: citb-bunny.gc -;; name in dgo: citb-bunny -;; dgos: CIT, L1 - ;; DECOMP BEGINS -(deftype citb-bunny (snow-bunny) - () +(deftype citb-bunny (snow-bunny) () (:methods - (nav-enemy-method-48 (_type_ object) none :replace) - ) - ) - + (nav-enemy-method-48 (_type_ object) none :replace))) -(defskelgroup *citb-bunny-sg* citb-bunny citb-bunny-lod0-jg citb-bunny-idle-ja - ((citb-bunny-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0.25 0 2) - ) +(defskelgroup *citb-bunny-sg* + citb-bunny + citb-bunny-lod0-jg + citb-bunny-idle-ja + ((citb-bunny-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0.25 0 2)) -(define *citb-bunny-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 3 - :walk-anim 3 - :turn-anim 3 - :notice-anim 7 - :run-anim 3 - :jump-anim 5 - :jump-land-anim 8 - :victory-anim 7 - :taunt-anim 7 - :die-anim 9 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 4) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 1.2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 130) - :stop-chase-distance (meters 150) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 31.0 - :jump-anim-start-frame 11.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.6 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -3.5) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *citb-bunny-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 3 + :walk-anim 3 + :turn-anim 3 + :notice-anim 7 + :run-anim 3 + :jump-anim 5 + :jump-land-anim 8 + :victory-anim 7 + :taunt-anim 7 + :die-anim 9 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 4) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 1.2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 130) + :stop-chase-distance (meters 150) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 31.0 + :jump-anim-start-frame 11.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.6 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -3.5) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod nav-enemy-method-60 ((this citb-bunny)) (initialize-skeleton this *citb-bunny-sg* '()) (set! (-> this draw origin-joint-index) (the-as uint 3)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this citb-bunny) (arg0 object)) (nav-enemy-method-60 this) @@ -89,13 +81,8 @@ (cond ((zero? (res-lump-value (-> this entity) 'mode uint128)) (set! (-> this defense) (the-as uint 1)) - (set! (-> this retreat-timeout) 5.0) - ) - (else - (set! (-> this defense) (the-as uint 0)) - (set! (-> this retreat-timeout) 0.1) - ) - ) + (set! (-> this retreat-timeout) 5.0)) + (else (set! (-> this defense) (the-as uint 0)) (set! (-> this retreat-timeout) 0.1))) (set-time! (-> this last-nondangerous-time)) (set! (-> this gnd-popup) 16384.0) (set! (-> this got-jump-event?) #f) @@ -108,8 +95,7 @@ (set! (-> this patrol-hop-failed?) #f) (logclear! (-> this mask) (process-mask actor-pause)) 0 - (none) - ) + (none)) (defmethod set-jump-height-factor! ((this citb-bunny) (arg0 int)) (let ((v1-0 arg0)) @@ -117,19 +103,13 @@ ((zero? v1-0) (set! (-> this jump-anim) 6) (set! (-> this jump-height-min) 4096.0) - (set! (-> this jump-height-factor) 0.6) - ) + (set! (-> this jump-height-factor) 0.6)) ((= v1-0 1) (set! (-> this jump-anim) 5) (set! (-> this jump-height-min) 4096.0) - (set! (-> this jump-height-factor) 0.6) - ) + (set! (-> this jump-height-factor) 0.6)) ((= v1-0 2) (set! (-> this jump-anim) 5) (set! (-> this jump-height-min) 4096.0) - (set! (-> this jump-height-factor) 0.4) - ) - ) - ) - (none) - ) + (set! (-> this jump-height-factor) 0.4)))) + (none)) diff --git a/goal_src/jak1/levels/citadel/citb-drop-plat.gc b/goal_src/jak1/levels/citadel/citb-drop-plat.gc index 47ab247533..6df877e8f6 100644 --- a/goal_src/jak1/levels/citadel/citb-drop-plat.gc +++ b/goal_src/jak1/levels/citadel/citb-drop-plat.gc @@ -1,229 +1,181 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO") - (require "engine/common-obs/generic-obs.gc") -;; name: citb-drop-plat-CIT.gc -;; name in dgo: citb-drop-plat -;; dgos: CIT - ;; DECOMP BEGINS -(defskelgroup *citb-drop-plat-sg* citb-drop-plat citb-drop-plat-lod0-jg citb-drop-plat-idle-ja - ((citb-drop-plat-lod0-mg (meters 20)) (citb-drop-plat-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *citb-drop-plat-sg* + citb-drop-plat + citb-drop-plat-lod0-jg + citb-drop-plat-idle-ja + ((citb-drop-plat-lod0-mg (meters 20)) (citb-drop-plat-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(defskelgroup *citb-drop-plat-red-sg* citb-drop-plat citb-drop-plat-red-lod0-jg citb-drop-plat-red-idle-ja - ((citb-drop-plat-red-lod0-mg (meters 20)) (citb-drop-plat-red-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *citb-drop-plat-red-sg* + citb-drop-plat + citb-drop-plat-red-lod0-jg + citb-drop-plat-red-idle-ja + ((citb-drop-plat-red-lod0-mg (meters 20)) (citb-drop-plat-red-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(defskelgroup *citb-drop-plat-green-sg* citb-drop-plat citb-drop-plat-green-lod0-jg citb-drop-plat-green-idle-ja - ((citb-drop-plat-green-lod0-mg (meters 20)) (citb-drop-plat-green-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *citb-drop-plat-green-sg* + citb-drop-plat + citb-drop-plat-green-lod0-jg + citb-drop-plat-green-idle-ja + ((citb-drop-plat-green-lod0-mg (meters 20)) (citb-drop-plat-green-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(defskelgroup *citb-drop-plat-blue-sg* citb-drop-plat citb-drop-plat-blue-lod0-jg citb-drop-plat-blue-idle-ja - ((citb-drop-plat-blue-lod0-mg (meters 20)) (citb-drop-plat-blue-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *citb-drop-plat-blue-sg* + citb-drop-plat + citb-drop-plat-blue-lod0-jg + citb-drop-plat-blue-idle-ja + ((citb-drop-plat-blue-lod0-mg (meters 20)) (citb-drop-plat-blue-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(defskelgroup *citb-drop-plat-yellow-sg* citb-drop-plat citb-drop-plat-yellow-lod0-jg citb-drop-plat-yellow-idle-ja - ((citb-drop-plat-yellow-lod0-mg (meters 20)) (citb-drop-plat-yellow-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *citb-drop-plat-yellow-sg* + citb-drop-plat + citb-drop-plat-yellow-lod0-jg + citb-drop-plat-yellow-idle-ja + ((citb-drop-plat-yellow-lod0-mg (meters 20)) (citb-drop-plat-yellow-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (deftype drop-plat (process-drawable) - ((root collide-shape-moving :override) - (spin-axis vector :inline) - (spin-angle float) - (spin-speed float) - (interp float) - (duration time-frame) - (delay time-frame) - (color int8) - ) + ((root collide-shape-moving :override) + (spin-axis vector :inline) + (spin-angle float) + (spin-speed float) + (interp float) + (duration time-frame) + (delay time-frame) + (color int8)) (:methods - (drop-plat-method-20 (_type_) none) - (drop-plat-method-21 (_type_) none) - ) + (drop-plat-method-20 (_type_) none) + (drop-plat-method-21 (_type_) none)) (:states - drop-plat-die - drop-plat-drop - drop-plat-idle - (drop-plat-rise draw-control) - drop-plat-spawn - ) - ) - + drop-plat-die + drop-plat-drop + drop-plat-idle + (drop-plat-rise draw-control) + drop-plat-spawn)) (defstate drop-plat-idle (drop-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('drop) - (logclear! (-> self mask) (process-mask actor-pause)) - (go drop-plat-drop) - ) - (('touch 'attack) - (send-event *target* 'no-look-around (seconds 1)) - (send-event (ppointer->process (-> self parent)) 'player-stepped (-> self color)) - #f - ) - ) - ) - :code (behavior () - (suspend) - (update-transforms! (-> self root)) - (set-time! (-> self state-time)) - (logior! (-> self mask) (process-mask actor-pause)) - (loop - (if (time-elapsed? (-> self state-time) (-> self duration)) - (go drop-plat-drop) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('drop) (logclear! (-> self mask) (process-mask actor-pause)) (go drop-plat-drop)) + (('touch 'attack) + (send-event *target* 'no-look-around (seconds 1)) + (send-event (ppointer->process (-> self parent)) 'player-stepped (-> self color)) + #f))) + :code + (behavior () (suspend) - ) - ) - :post ja-post - ) + (update-transforms! (-> self root)) + (set-time! (-> self state-time)) + (logior! (-> self mask) (process-mask actor-pause)) + (loop + (if (time-elapsed? (-> self state-time) (-> self duration)) (go drop-plat-drop)) + (suspend))) + :post ja-post) (defbehavior drop-plat-set-fade drop-plat () - (let ((f0-1 - (fmin - 1.0 - (* 0.000012207031 - (- (-> self root 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) - ) + (let ((f0-1 (fmin 1.0 + (* 0.000012207031 + (- (-> self root 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)) 0 - (none) - ) + (none)) (defstate drop-plat-spawn (drop-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('drop) - (go drop-plat-die) - ) - ) - ) - :code (behavior () - (set! (-> self root trans y) (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y))) - (logior! (-> self draw status) (draw-status hidden)) - (ja-post) - (set-time! (-> self state-time)) - (loop - (when (time-elapsed? (-> self state-time) (-> self delay)) - (let ((v1-14 (logclear (-> self draw status) (draw-status hidden))) - (a0-5 (-> self draw)) - ) - (set! (-> a0-5 status) v1-14) - (go drop-plat-rise a0-5) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('drop) (go drop-plat-die)))) + :code + (behavior () + (set! (-> self root trans y) (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y))) + (logior! (-> self draw status) (draw-status hidden)) + (ja-post) + (set-time! (-> self state-time)) + (loop + (when (time-elapsed? (-> self state-time) (-> self delay)) + (let ((v1-14 (logclear (-> self draw status) (draw-status hidden))) + (a0-5 (-> self draw))) + (set! (-> a0-5 status) v1-14) + (go drop-plat-rise a0-5))) + (suspend)))) (defstate drop-plat-rise (drop-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('drop) - (go drop-plat-drop) - ) - ) - ) - :code (behavior ((arg0 draw-control)) - (set! (-> self interp) 1.0) - (set-time! (-> self state-time)) - (set! (-> self spin-angle) 0.0) - (set! (-> self root 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 trans quad)) - (set! (-> gp-0 y) (-> (the-as process-drawable (-> self parent 0)) root trans y)) - (loop - (let ((f0-6 (fmax 0.0 (- 1.0 (* 0.0033333334 (the float (- (current-time) (-> self state-time)))))))) - (set! (-> self interp) (* f0-6 f0-6)) - ) - (set! (-> self root 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 "bridge-piece-up" :position (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 trans y)) - (go drop-plat-idle) - ) - (suspend) - ) - ) - ) - :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'quaternion))) - (quaternion-vector-angle! gp-0 (-> self spin-axis) (-> self spin-angle)) - (quaternion*! (-> self root quat) (-> (the-as process-drawable (-> self parent 0)) root quat) gp-0) - ) - (drop-plat-set-fade) - (transform-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('drop) (go drop-plat-drop)))) + :code + (behavior ((arg0 draw-control)) + (set! (-> self interp) 1.0) + (set-time! (-> self state-time)) + (set! (-> self spin-angle) 0.0) + (set! (-> self root 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 trans quad)) + (set! (-> gp-0 y) (-> (the-as process-drawable (-> self parent 0)) root trans y)) + (loop + (let ((f0-6 (fmax 0.0 (- 1.0 (* 0.0033333334 (the float (- (current-time) (-> self state-time)))))))) + (set! (-> self interp) (* f0-6 f0-6))) + (set! (-> self root 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 "bridge-piece-up" :position (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 trans y)) (go drop-plat-idle)) + (suspend)))) + :post + (behavior () + (let ((gp-0 (new 'stack-no-clear 'quaternion))) + (quaternion-vector-angle! gp-0 (-> self spin-axis) (-> self spin-angle)) + (quaternion*! (-> self root quat) (-> (the-as process-drawable (-> self parent 0)) root quat) gp-0)) + (drop-plat-set-fade) + (transform-post))) (defstate drop-plat-drop (drop-plat) - :code (behavior () - (when (= (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root trans y)) - (set-time! (-> self state-time)) - (sound-play "bridge-piece-dn") - (let ((gp-1 (the int (* 300.0 (rand-vu-float-range 0.2 0.3))))) - (while (not (time-elapsed? (-> self state-time) gp-1)) - (set! (-> self interp) (/ (the float (- (current-time) (-> self state-time))) (the float gp-1))) - (set! (-> self spin-angle) (* 910.2222 (sin (* 196608.0 (-> self interp))))) - (suspend) - ) - ) - ) - (loop - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0)) - (vector-v++! (-> self root trans) (-> self root transv)) - (if (< 204800.0 (- (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root trans y))) - (go drop-plat-die) - ) - (+! (-> self spin-angle) (* (-> self spin-speed) (seconds-per-frame))) - (suspend) - ) - ) - :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'quaternion))) - (quaternion-vector-angle! gp-0 (-> self spin-axis) (-> self spin-angle)) - (quaternion*! (-> self root quat) (-> (the-as process-drawable (-> self parent 0)) root quat) gp-0) - ) - (drop-plat-set-fade) - (transform-post) - ) - ) + :code + (behavior () + (when (= (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root trans y)) + (set-time! (-> self state-time)) + (sound-play "bridge-piece-dn") + (let ((gp-1 (the int (* 300.0 (rand-vu-float-range 0.2 0.3))))) + (while (not (time-elapsed? (-> self state-time) gp-1)) + (set! (-> self interp) (/ (the float (- (current-time) (-> self state-time))) (the float gp-1))) + (set! (-> self spin-angle) (* 910.2222 (sin (* 196608.0 (-> self interp))))) + (suspend)))) + (loop + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0)) + (vector-v++! (-> self root trans) (-> self root transv)) + (if (< 204800.0 (- (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root trans y))) + (go drop-plat-die)) + (+! (-> self spin-angle) (* (-> self spin-speed) (seconds-per-frame))) + (suspend))) + :post + (behavior () + (let ((gp-0 (new 'stack-no-clear 'quaternion))) + (quaternion-vector-angle! gp-0 (-> self spin-axis) (-> self spin-angle)) + (quaternion*! (-> self root quat) (-> (the-as process-drawable (-> self parent 0)) root quat) gp-0)) + (drop-plat-set-fade) + (transform-post))) (defstate drop-plat-die (drop-plat) - :code (behavior () - (cleanup-for-death self) - ) - ) + :code + (behavior () + (cleanup-for-death self))) (defmethod drop-plat-method-20 ((this drop-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -232,56 +184,37 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod drop-plat-method-21 ((this drop-plat)) (case (-> this color) - ((1) - (initialize-skeleton this *citb-drop-plat-red-sg* '()) - ) - ((2) - (initialize-skeleton this *citb-drop-plat-green-sg* '()) - ) - ((3) - (initialize-skeleton this *citb-drop-plat-blue-sg* '()) - ) - ((4) - (initialize-skeleton this *citb-drop-plat-yellow-sg* '()) - ) - (else - (initialize-skeleton this *citb-drop-plat-sg* '()) - ) - ) + ((1) (initialize-skeleton this *citb-drop-plat-red-sg* '())) + ((2) (initialize-skeleton this *citb-drop-plat-green-sg* '())) + ((3) (initialize-skeleton this *citb-drop-plat-blue-sg* '())) + ((4) (initialize-skeleton this *citb-drop-plat-yellow-sg* '())) + (else (initialize-skeleton this *citb-drop-plat-sg* '()))) (logclear! (-> this 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)) - ) + (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))) - ) + (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! (-> this spin-axis x) (* (-> s4-0 y) (-> s4-0 x))) (set! (-> this spin-axis y) (-> s5-0 y)) - (set! (-> this spin-axis z) (* (-> s4-0 y) (-> s5-0 x))) - ) + (set! (-> this spin-axis z) (* (-> s4-0 y) (-> s5-0 x)))) (set! (-> this spin-axis w) 1.0) (set! (-> this spin-angle) 0.0) (set! (-> this spin-speed) (* 8192.0 (+ 1.0 (rand-vu)))) 0 - (none) - ) + (none)) (defbehavior drop-plat-init-by-other drop-plat ((arg0 vector) (arg1 time-frame) (arg2 time-frame) (arg3 int)) (set! (-> self color) arg3) @@ -293,45 +226,34 @@ (quaternion-copy! (-> self root quat) (-> (the-as process-drawable (-> self parent 0)) root quat)) (drop-plat-method-21 self) (go drop-plat-spawn) - (none) - ) + (none)) (deftype handle-inline-array (inline-array-class) - ((data handle :dynamic) - ) - ) - + ((data handle :dynamic))) (set! (-> handle-inline-array heap-base) (the-as uint 8)) (deftype citb-drop-plat (process-drawable) - ((x-count int32) - (z-count int32) - (child-count int32) - (child-array handle-inline-array) - (child-color-array (pointer int8)) - (x-dir vector :inline) - (z-dir vector :inline) - (origin vector :inline) - (x-spacing float) - (z-spacing float) - (idle-distance float) - (duration time-frame) - (drop-time time-frame) - ) + ((x-count int32) + (z-count int32) + (child-count int32) + (child-array handle-inline-array) + (child-color-array (pointer int8)) + (x-dir vector :inline) + (z-dir vector :inline) + (origin vector :inline) + (x-spacing float) + (z-spacing float) + (idle-distance float) + (duration time-frame) + (drop-time time-frame)) (:states - citb-drop-plat-active - citb-drop-plat-idle - ) - ) - + citb-drop-plat-active + citb-drop-plat-idle)) (defmethod relocate ((this citb-drop-plat) (arg0 int)) - (if (nonzero? (-> this child-array)) - (&+! (-> this child-array) arg0) - ) - (the-as citb-drop-plat ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this child-array)) (&+! (-> this child-array) arg0)) + (the-as citb-drop-plat ((method-of-type process-drawable relocate) this arg0))) (defbehavior citb-drop-plat-spawn-children citb-drop-plat () (local-vars (s0-0 int) (sv-48 process) (sv-64 int)) @@ -339,141 +261,86 @@ 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)) - ) + (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) - ) + (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)) - ) + (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)) - ) + (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 int int int none) t9-7) - a0-8 - a1-5 - a2-4 - sv-64 - (the-as int t0-0) - s0-0 - ) - ) - (-> sv-48 ppointer) - ) - ) - ) - ) - ) - ) - (let ((s2-1 (current-time))) - (until (time-elapsed? s2-1 (seconds 0.12)) - (suspend) - ) - ) - (+! s5-0 s4-0) - ) - ) - ) + (t0-0 (-> self duration))) + ((the-as (function process function vector int int int none) t9-7) a0-8 a1-5 a2-4 sv-64 (the-as int t0-0) s0-0)) + (-> sv-48 ppointer))))))) + (let ((s2-1 (current-time))) (until (time-elapsed? s2-1 (seconds 0.12)) (suspend))) + (+! s5-0 s4-0)))) (set-time! (-> self drop-time)) 0 - (none) - ) + (none)) (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)) - ) - #f - ) + (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) - ) + ((= 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)) - ) - ) - ) - ) - ) + (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) - ) + (none)) (defstate citb-drop-plat-idle (citb-drop-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go citb-drop-plat-active) - ) - ) - ) - :code (behavior () - (citb-drop-plat-drop-all-children) - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go citb-drop-plat-active)))) + :code + (behavior () + (citb-drop-plat-drop-all-children) + (loop + (suspend)))) (defstate citb-drop-plat-active (citb-drop-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('player-stepped) - (when (time-elapsed? (-> self drop-time) (seconds 0.2)) - (set-time! (-> self drop-time)) - (citb-drop-plat-drop-children (the-as int (-> block param 0))) - ) - ) - (('trigger) - (go citb-drop-plat-idle) - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (citb-drop-plat-spawn-children) - (loop - (if (or (time-elapsed? (-> self state-time) (+ (-> self duration) (seconds 2))) - (or (not *target*) - (< (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (not (-> self child)) - ) - (go citb-drop-plat-idle) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('player-stepped) + (when (time-elapsed? (-> self drop-time) (seconds 0.2)) + (set-time! (-> self drop-time)) + (citb-drop-plat-drop-children (the-as int (-> block param 0))))) + (('trigger) (go citb-drop-plat-idle)))) + :code + (behavior () + (set-time! (-> self state-time)) + (citb-drop-plat-spawn-children) + (loop + (if (or (time-elapsed? (-> self state-time) (+ (-> self duration) (seconds 2))) + (or (not *target*) + (< (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (-> self child))) + (go citb-drop-plat-idle)) + (suspend)))) (defmethod init-from-entity! ((this citb-drop-plat) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -481,33 +348,24 @@ (let ((v1-2 (res-lump-data arg0 'count pointer))) (when v1-2 (set! (-> this x-count) (-> (the-as (pointer int32) v1-2) 0)) - (set! (-> this z-count) (-> (the-as (pointer int32) v1-2) 1)) - ) - ) + (set! (-> this z-count) (-> (the-as (pointer int32) v1-2) 1)))) (set! (-> this child-count) (* (-> this x-count) (-> this z-count))) (set! (-> this child-color-array) (res-lump-data arg0 'plat-type (pointer int8))) (when (> (-> this child-count) 0) (set! (-> this child-array) (new 'process 'handle-inline-array (-> this child-count))) (dotimes (v1-9 (-> this child-count)) - (set! (-> this child-array data v1-9) (the-as handle #f)) - ) - ) + (set! (-> this child-array data v1-9) (the-as handle #f)))) (set! (-> this x-spacing) 16384.0) (set! (-> this z-spacing) 16384.0) (set! (-> this idle-distance) (+ 40960.0 (* 0.5 (the float (-> this z-count)) (-> this z-spacing)))) (set! (-> this duration) (the-as time-frame (the int (* 300.0 (+ 2.0 (the float (-> this z-count))))))) - (let ((f0-7 (res-lump-float arg0 'rotoffset))) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-7) - ) + (let ((f0-7 (res-lump-float arg0 'rotoffset))) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-7)) (vector-x-quaternion! (-> this x-dir) (-> this root quat)) (vector-z-quaternion! (-> this z-dir) (-> this root quat)) (set! (-> this origin quad) (-> this root trans quad)) (let ((f0-10 (* -0.5 (the float (+ (-> this x-count) -1)) (-> this x-spacing))) - (f30-0 (* -0.5 (the float (+ (-> this z-count) -1)) (-> this z-spacing))) - ) + (f30-0 (* -0.5 (the float (+ (-> this z-count) -1)) (-> this z-spacing)))) (vector+*! (-> this origin) (-> this origin) (-> this x-dir) f0-10) - (vector+*! (-> this origin) (-> this origin) (-> this z-dir) f30-0) - ) + (vector+*! (-> this origin) (-> this origin) (-> this z-dir) f30-0)) (go citb-drop-plat-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/citadel/citb-plat.gc b/goal_src/jak1/levels/citadel/citb-plat.gc index 8c0b747984..e41da9eca7 100644 --- a/goal_src/jak1/levels/citadel/citb-plat.gc +++ b/goal_src/jak1/levels/citadel/citb-plat.gc @@ -1,94 +1,78 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO") - (require "engine/common-obs/rigid-body.gc") (require "engine/common-obs/plat-eco.gc") (require "engine/common-obs/plat-button.gc") -;; name: citb-plat.gc -;; name in dgo: citb-plat -;; dgos: CIT, L1 - ;; DECOMP BEGINS -(defskelgroup *plat-citb-sg* plat-citb plat-citb-lod0-jg plat-citb-idle-ja - ((plat-citb-lod0-mg (meters 20)) (plat-citb-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) - -(defskelgroup *plat-eco-citb-unlit-sg* plat-eco-citb plat-eco-citb-lod0-jg plat-eco-citb-idle-ja - ((plat-eco-citb-lod0-mg (meters 20)) - (plat-eco-citb-lod1-mg (meters 40)) - (plat-eco-citb-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 3) - ) - -(defskelgroup *plat-eco-citb-lit-sg* plat-eco-citb plat-eco-citb-lit-lod0-jg plat-eco-citb-idle-ja - ((plat-eco-citb-lit-lod0-mg (meters 20)) - (plat-eco-citb-lit-lod1-mg (meters 40)) - (plat-eco-citb-lit-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 3) - ) - -(defskelgroup *citb-chain-plat-sg* citb-chain-plat citb-chain-plat-lod0-jg citb-chain-plat-idle-ja - ((citb-chain-plat-lod0-mg (meters 20)) (citb-chain-plat-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *plat-citb-sg* + plat-citb + plat-citb-lod0-jg + plat-citb-idle-ja + ((plat-citb-lod0-mg (meters 20)) (plat-citb-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) + +(defskelgroup *plat-eco-citb-unlit-sg* + plat-eco-citb + plat-eco-citb-lod0-jg + plat-eco-citb-idle-ja + ((plat-eco-citb-lod0-mg (meters 20)) (plat-eco-citb-lod1-mg (meters 40)) (plat-eco-citb-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) + +(defskelgroup *plat-eco-citb-lit-sg* + plat-eco-citb + plat-eco-citb-lit-lod0-jg + plat-eco-citb-idle-ja + ((plat-eco-citb-lit-lod0-mg (meters 20)) + (plat-eco-citb-lit-lod1-mg (meters 40)) + (plat-eco-citb-lit-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) + +(defskelgroup *citb-chain-plat-sg* + citb-chain-plat + citb-chain-plat-lod0-jg + citb-chain-plat-idle-ja + ((citb-chain-plat-lod0-mg (meters 20)) (citb-chain-plat-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (deftype citb-base-plat (process-drawable) - ((root collide-shape-moving :override) - (idle-distance float) - ) + ((root collide-shape-moving :override) + (idle-distance float)) (:state-methods - citb-base-plat-idle - ) + citb-base-plat-idle) (:methods - (citb-base-plat-method-21 (_type_) none) - (citb-base-plat-method-22 (_type_) none) - (citb-base-plat-active () _type_ :state) - (citb-base-plat-method-24 (_type_) none) - ) - ) - + (citb-base-plat-method-21 (_type_) none) + (citb-base-plat-method-22 (_type_) none) + (citb-base-plat-active () _type_ :state) + (citb-base-plat-method-24 (_type_) none))) (defstate citb-base-plat-idle (citb-base-plat) :virtual #t - :trans (behavior () - (if (and *target* - (>= (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go-virtual citb-base-plat-active) - ) - ) + :trans + (behavior () + (if (and *target* (>= (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go-virtual citb-base-plat-active))) :code anim-loop - :post ja-post - ) + :post ja-post) (defstate citb-base-plat-active (citb-base-plat) :virtual #t - :trans (behavior () - (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance (-> self root trans) (-> *target* control trans)) - ) - ) - (go-virtual citb-base-plat-idle) - ) - (rider-trans) - ) + :trans + (behavior () + (if (or (not *target*) + (< (+ 8192.0 (-> self idle-distance)) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go-virtual citb-base-plat-idle)) + (rider-trans)) :code anim-loop - :post rider-post - ) + :post rider-post) (defmethod citb-base-plat-method-21 ((this citb-base-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -97,27 +81,22 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (set-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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod citb-base-plat-method-22 ((this citb-base-plat)) (initialize-skeleton this *plat-citb-sg* '()) 0 - (none) - ) + (none)) (defmethod citb-base-plat-method-24 ((this citb-base-plat)) (go (method-of-object this citb-base-plat-idle)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this citb-base-plat) (arg0 entity-actor)) (citb-base-plat-method-21 this) @@ -126,21 +105,15 @@ (citb-base-plat-method-22 this) (logior! (-> this skel status) (janim-status inited)) (citb-base-plat-method-24 this) - (none) - ) - -(deftype citb-plat-eco (plat-eco) - () - ) + (none)) +(deftype citb-plat-eco (plat-eco) ()) (defmethod baseplat-method-24 ((this citb-plat-eco)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -149,64 +122,49 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod baseplat-method-26 ((this citb-plat-eco)) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this notice-dist) 8192.0) - (none) - ) + (none)) (defmethod get-unlit-skel ((this citb-plat-eco)) - *plat-eco-citb-unlit-sg* - ) + *plat-eco-citb-unlit-sg*) (defmethod get-lit-skel ((this citb-plat-eco)) - *plat-eco-citb-lit-sg* - ) + *plat-eco-citb-lit-sg*) (deftype citb-plat (plat) - ((trans-offset vector :inline) - ) - ) - + ((trans-offset vector :inline))) (defstate plat-path-active (citb-plat) :virtual #t - :trans (behavior () - (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options wrap-phase)) - (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 trans) (ear-trans)) 81920.0) - (sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) - ) - (plat-trans) - ) - ) + :trans + (behavior () + (set! (-> self path-pos) + (if (logtest? (-> self fact options) (fact-options wrap-phase)) + (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 trans) (ear-trans)) 81920.0) + (sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans)))) + (plat-trans))) (defmethod get-unlit-skel ((this citb-plat)) - *plat-citb-sg* - ) + *plat-citb-sg*) (defmethod baseplat-method-24 ((this citb-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -215,108 +173,83 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod baseplat-method-26 ((this citb-plat)) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this root scale quad) (-> (res-lump-struct (-> this entity) 'scale vector) quad)) (let ((f0-0 (-> this root scale x))) (set! (-> this root root-prim local-sphere w) (* (-> this root root-prim local-sphere w) f0-0)) - (set! (-> this draw bounds w) (* (-> this draw bounds w) f0-0)) - ) - (set! (-> this trans-offset quad) (-> (the-as vector ((method-of-type res-lump get-property-struct) - (-> this entity) - 'trans-offset - 'interp - -1000000000.0 - *null-vector* - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - quad - ) - ) + (set! (-> this draw bounds w) (* (-> this draw bounds w) f0-0))) + (set! (-> this trans-offset quad) + (-> (the-as vector + ((method-of-type res-lump get-property-struct) + (-> this entity) + 'trans-offset + 'interp + -1000000000.0 + *null-vector* + (the-as (pointer res-tag) #f) + *res-static-buf*)) + quad)) 0 - (none) - ) + (none)) (deftype citb-stair-plat (citb-base-plat) - ((idle-height float) - (rise-height float) - (delay time-frame) - (rise symbol) - ) - ) - + ((idle-height float) + (rise-height float) + (delay time-frame) + (rise symbol))) (defstate citb-base-plat-idle (citb-stair-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((v0-0 #t)) - (set! (-> self rise) v0-0) - v0-0 - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (logclear! (-> self mask) (process-mask actor-pause)) (let ((v0-0 #t)) (set! (-> self rise) v0-0) v0-0)))) :trans #f - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (while (not (-> self rise)) - (suspend) - ) - (logclear! (-> self draw status) (draw-status hidden)) - (set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0) - (set-time! (-> self state-time)) - (while (not (time-elapsed? (-> self state-time) (-> self delay))) - (ja-post) - (suspend) - ) - (set-time! (-> self state-time)) - (loop - (let ((f30-0 (- 1.0 (* 0.0011111111 (the float (- (current-time) (-> self state-time))))))) - (when (< f30-0 0.0) - (set! (-> self root trans y) (-> self rise-height)) - (go-virtual citb-base-plat-active) - ) - (set! (-> self root 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 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) - ) - ) - :post #f - ) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (while (not (-> self rise)) + (suspend)) + (logclear! (-> self draw status) (draw-status hidden)) + (set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0) + (set-time! (-> self state-time)) + (while (not (time-elapsed? (-> self state-time) (-> self delay))) + (ja-post) + (suspend)) + (set-time! (-> self state-time)) + (loop + (let ((f30-0 (- 1.0 (* 0.0011111111 (the float (- (current-time) (-> self state-time))))))) + (when (< f30-0 0.0) + (set! (-> self root trans y) (-> self rise-height)) + (go-virtual citb-base-plat-active)) + (set! (-> self root 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 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))) + :post #f) (defstate citb-base-plat-active (citb-stair-plat) :virtual #t :trans #f - :code (behavior () - (set! (-> self root trans y) (-> self rise-height)) - (suspend) - (update-transforms! (-> self root)) - (logior! (-> self mask) (process-mask actor-pause)) - (anim-loop) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self root trans y) (-> self rise-height)) + (suspend) + (update-transforms! (-> self root)) + (logior! (-> self mask) (process-mask actor-pause)) + (anim-loop)) + :post ja-post) (defmethod citb-base-plat-method-22 ((this citb-stair-plat)) (initialize-skeleton this *plat-citb-sg* '()) @@ -324,206 +257,159 @@ (set! (-> this idle-height) (+ -409600.0 (-> this rise-height))) (set! (-> this root trans y) (-> this idle-height)) (set! (-> this rise) #f) - (set! (-> this delay) - (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'delay :default 1.0)))) - ) + (set! (-> this delay) (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'delay :default 1.0))))) (let ((f0-7 1.5)) (set-vector! (-> this root scale) f0-7 f0-7 f0-7 1.0) (set! (-> this root root-prim local-sphere w) (* (-> this root root-prim local-sphere w) f0-7)) - (set! (-> this draw bounds w) (* (-> this draw bounds w) f0-7)) - ) + (set! (-> this draw bounds w) (* (-> this draw bounds w) f0-7))) 0 - (none) - ) + (none)) (defmethod citb-base-plat-method-24 ((this 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 this citb-base-plat-active)) - (go (method-of-object this citb-base-plat-idle)) - ) + (task-complete? *game-info* (game-task citadel-sage-yellow))) + (go (method-of-object this citb-base-plat-active)) + (go (method-of-object this 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) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 5 - :mass 2.0 - :inertial-tensor-x (meters 10) - :inertial-tensor-y (meters 5) - :inertial-tensor-z (meters 10) - :idle-distance (meters 70) - :platform #t - :sound-name "blue-eco-on" - ) - ) + (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) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 5 + :mass 2.0 + :inertial-tensor-x (meters 10) + :inertial-tensor-y (meters 5) + :inertial-tensor-z (meters 10) + :idle-distance (meters 70) + :platform #t + :sound-name "blue-eco-on")) (deftype citb-chain-plat (rigid-body-platform) - ((orig-trans vector :inline) - (orig-quat quaternion :inline) - (beam-end vector :inline) - (float-offset float) - (idle-offset float) - ) + ((orig-trans vector :inline) + (orig-quat quaternion :inline) + (beam-end vector :inline) + (float-offset float) + (idle-offset float)) (:states - citb-chain-plat-settle - ) - ) - + citb-chain-plat-settle)) (defmethod rigid-body-platform-method-22 ((this citb-chain-plat) (arg0 vector) (arg1 float)) (+ 12288.0 (* 2048.0 (fmax 0.0 (fmin 1.0 (* 0.000024414063 (-> this float-height-offset)))) - (cos (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z))))) - ) + (cos (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))) (-> this float-height-offset) - (-> this orig-trans y) - ) - ) + (-> this orig-trans y))) (defmethod rigid-body-platform-method-27 ((this citb-chain-plat) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-! gp-0 arg0 (-> this 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))))) - ) + (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)) - (rigid-body-method-15 (-> this rbody) gp-0) - ) - ) - ) + (rigid-body-method-15 (-> this rbody) gp-0)))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-23 ((this citb-chain-plat) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this orig-trans)) 0 - (none) - ) + (none)) (defstate rigid-body-platform-idle (citb-chain-plat) :virtual #t - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (set-time! (-> self state-time)) - (if (and (and *target* (>= (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - (go-virtual rigid-body-platform-float) - ) - ) - ) - :code (behavior () - (anim-loop) - ) - :post ja-post - ) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 0.1)) + (set-time! (-> self state-time)) + (if (and (and *target* + (>= (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (send-event *target* 'query 'powerup (pickup-type eco-blue))) + (go-virtual rigid-body-platform-float)))) + :code + (behavior () + (anim-loop)) + :post ja-post) (defstate rigid-body-platform-float (citb-chain-plat) :virtual #t :event rigid-body-platform-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :exit (behavior () - (stop! (-> self sound)) - ) - :trans (behavior () - (cond - ((and (and *target* (>= (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - (when (not (time-elapsed? (-> self state-time) (seconds 1))) - (if (rand-vu-percent? 0.05) - (spawn-projectile-blue *target*) - ) - ) - (seek! (-> self float-height-offset) (-> self float-offset) (* 8192.0 (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 - (seek! (-> self float-height-offset) (-> self idle-offset) (* 16384.0 (seconds-per-frame))) - (stop! (-> self sound)) - (if (= (-> self float-height-offset) (-> self idle-offset)) - (go citb-chain-plat-settle) - ) - ) - ) - ) - :code (behavior () - (anim-loop) - ) - :post rigid-body-platform-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :exit + (behavior () + (stop! (-> self sound))) + :trans + (behavior () + (cond + ((and (and *target* + (>= (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (send-event *target* 'query 'powerup (pickup-type eco-blue))) + (when (not (time-elapsed? (-> self state-time) (seconds 1))) + (if (rand-vu-percent? 0.05) (spawn-projectile-blue *target*))) + (seek! (-> self float-height-offset) (-> self float-offset) (* 8192.0 (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 + (seek! (-> self float-height-offset) (-> self idle-offset) (* 16384.0 (seconds-per-frame))) + (stop! (-> self sound)) + (if (= (-> self float-height-offset) (-> self idle-offset)) (go citb-chain-plat-settle))))) + :code + (behavior () + (anim-loop)) + :post rigid-body-platform-post) (defstate citb-chain-plat-settle (citb-chain-plat) :trans 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-time! (-> self state-time)) - (while (not (time-elapsed? (-> self state-time) (seconds 0.25))) - (let ((f30-0 (* 0.013333334 (the float (- (current-time) (-> 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) - ) - ) - (set! (-> self root-overlay trans quad) (-> self orig-trans quad)) - (quaternion-copy! (-> self root-overlay quat) (-> self orig-quat)) - (rigid-body-method-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) - ) - :post rider-post - ) + :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-time! (-> self state-time)) + (while (not (time-elapsed? (-> self state-time) (seconds 0.25))) + (let ((f30-0 (* 0.013333334 (the float (- (current-time) (-> 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))) + (set! (-> self root-overlay trans quad) (-> self orig-trans quad)) + (quaternion-copy! (-> self root-overlay quat) (-> self orig-quat)) + (rigid-body-method-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)) + :post rider-post) (defmethod rigid-body-platform-method-30 ((this citb-chain-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -532,15 +418,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this citb-chain-plat)) (initialize-skeleton this *citb-chain-plat-sg* '()) @@ -553,61 +436,46 @@ (set! (-> this float-offset) (res-lump-float (-> this entity) 'height-info :default 4096.0)) (set! (-> this float-height-offset) (-> this idle-offset)) (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "eco-plat-hover" :fo-max 50) (-> this root-overlay trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "eco-plat-hover" :fo-max 50) (-> this root-overlay trans))) (let ((s5-0 (-> this info control-point-count))) (dotimes (s4-0 s5-0) (let ((s3-0 (-> this 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 z) (* 16384.0 (cos f30-0)))) + (set! (-> s3-0 local-pos w) 1.0)))) 0 - (none) - ) + (none)) -(defskelgroup *citb-rotatebox-sg* citb-rotatebox citb-rotatebox-lod0-jg citb-rotatebox-idle-ja - ((citb-rotatebox-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -5 0 10) - ) - -(deftype citb-rotatebox (citb-base-plat) - () - ) +(defskelgroup *citb-rotatebox-sg* + citb-rotatebox + citb-rotatebox-lod0-jg + citb-rotatebox-idle-ja + ((citb-rotatebox-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -5 0 10)) +(deftype citb-rotatebox (citb-base-plat) ()) (defstate citb-base-plat-active (citb-rotatebox) :virtual #t :trans rider-trans - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance (-> self root trans) (-> *target* control trans)) - ) - ) - (go-virtual citb-base-plat-idle) - ) - ) - ) - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if (or (not *target*) + (< (+ 8192.0 (-> self idle-distance)) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go-virtual citb-base-plat-idle))))) (defmethod citb-base-plat-method-21 ((this citb-rotatebox)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -616,49 +484,41 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 -20480.0 0.0 40960.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod citb-base-plat-method-22 ((this citb-rotatebox)) (initialize-skeleton this *citb-rotatebox-sg* '()) 0 - (none) - ) + (none)) -(defskelgroup *citb-donut-sg* citb-donut citb-donut-lod0-jg citb-donut-idle-ja - ((citb-donut-lod0-mg (meters 20)) (citb-donut-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *citb-donut-sg* + citb-donut + citb-donut-lod0-jg + citb-donut-idle-ja + ((citb-donut-lod0-mg (meters 20)) (citb-donut-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (deftype citb-donut (citb-base-plat) - ((sync sync-info :inline) - ) - ) - + ((sync sync-info :inline))) (defstate citb-base-plat-active (citb-donut) :virtual #t - :post (behavior () - (update! (-> self sound)) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (* 65536.0 (get-current-phase (-> self sync)))) - (rider-post) - ) - ) + :post + (behavior () + (update! (-> self sound)) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (* 65536.0 (get-current-phase (-> self sync)))) + (rider-post))) (defmethod citb-base-plat-method-21 ((this citb-donut)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -667,60 +527,48 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod citb-base-plat-method-22 ((this citb-donut)) (initialize-skeleton this *citb-donut-sg* '()) (setup-params! (-> this sync) (the-as uint 9000) 0.0 0.15 0.15) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "rotate-plat" :fo-max 20) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "rotate-plat" :fo-max 20) (-> this root trans))) (logclear! (-> this mask) (process-mask actor-pause)) 0 - (none) - ) + (none)) -(defskelgroup *citb-stopbox-sg* citb-stopbox citb-stopbox-lod0-jg citb-stopbox-idle-ja - ((citb-stopbox-lod0-mg (meters 20)) (citb-stopbox-lod1-mg (meters 999999))) - :bounds (static-spherem 0 -2 0 5.5) - ) - -(deftype citb-stopbox (plat) - () - ) +(defskelgroup *citb-stopbox-sg* + citb-stopbox + citb-stopbox-lod0-jg + citb-stopbox-idle-ja + ((citb-stopbox-lod0-mg (meters 20)) (citb-stopbox-lod1-mg (meters 999999))) + :bounds (static-spherem 0 -2 0 5.5)) +(deftype citb-stopbox (plat) ()) (defstate plat-path-active (citb-stopbox) :virtual #t - :trans (behavior () - (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 trans) (ear-trans)) 81920.0) - (sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) - ) - (plat-trans) - ) - ) + :trans + (behavior () + (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 trans) (ear-trans)) 81920.0) + (sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans)))) + (plat-trans))) (defmethod get-unlit-skel ((this citb-stopbox)) - *citb-stopbox-sg* - ) + *citb-stopbox-sg*) (defmethod baseplat-method-24 ((this citb-stopbox)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -729,83 +577,63 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 22528.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod baseplat-method-26 ((this citb-stopbox)) (logior! (-> this fact options) (fact-options wrap-phase)) (logclear! (-> this mask) (process-mask actor-pause)) 0 - (none) - ) + (none)) (deftype citb-firehose (process-drawable) - ((root collide-shape :override) - (idle-distance float) - (sync sync-info :inline) - (last-sync float) - (blast-pos vector :inline) - ) + ((root collide-shape :override) + (idle-distance float) + (sync sync-info :inline) + (last-sync float) + (blast-pos vector :inline)) (:states - citb-firehose-active - citb-firehose-blast - citb-firehose-idle - ) - ) + citb-firehose-active + citb-firehose-blast + citb-firehose-idle)) - -(defskelgroup *citb-firehose-sg* citb-firehose citb-firehose-lod0-jg citb-firehose-idle-ja - ((citb-firehose-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3 0 15) - ) +(defskelgroup *citb-firehose-sg* + citb-firehose + citb-firehose-lod0-jg + citb-firehose-idle-ja + ((citb-firehose-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3 0 15)) (defstate citb-firehose-idle (citb-firehose) - :trans (behavior () - (if (and *target* - (>= (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go citb-firehose-active) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :trans + (behavior () + (if (and *target* (>= (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go citb-firehose-active))) + :code + (behavior () + (loop + (suspend))) + :post ja-post) (defstate citb-firehose-active (citb-firehose) - :trans (behavior () - (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance (-> self root 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) - ) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :trans + (behavior () + (if (or (not *target*) + (< (+ 8192.0 (-> self idle-distance)) (vector-vector-distance (-> self root 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)))) + :code + (behavior () + (loop + (suspend))) + :post ja-post) (defbehavior citb-firehose-blast-particles citb-firehose () (let ((gp-0 (new 'stack-no-clear 'quaternion))) @@ -814,54 +642,42 @@ (dotimes (s5-0 16) (quaternion-rotate-local-z! gp-0 gp-0 2048.0) (quaternion-copy! *particle-quat* gp-0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2541) (-> self blast-pos)) - ) - ) - (spawn (-> self part) (-> self blast-pos)) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2541) (-> self blast-pos)))) + (spawn (-> self part) (-> self blast-pos))) (defstate citb-firehose-blast (citb-firehose) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event - proc - 'attack - (-> block param 0) - (static-attack-info ((mode 'damage) (shove-back (meters 6)) (shove-up (meters 3)))) - ) - ) - ) - ) - :code (behavior () - (ja-no-eval :group! citb-firehose-start-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (restore-collide-with-as (-> self root)) - (sound-play "eco-torch" :position (the-as symbol (-> self blast-pos))) - (dotimes (gp-1 2) - (ja-no-eval :group! citb-firehose-loopflame-ja :num! (seek!) :frame-num 0.0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (send-event proc + 'attack + (-> block param 0) + (static-attack-info ((mode 'damage) (shove-back (meters 6)) (shove-up (meters 3)))))))) + :code + (behavior () + (ja-no-eval :group! citb-firehose-start-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (set! (-> self blast-pos quad) (-> self node-list data 5 bone transform vector 3 quad)) - (citb-firehose-blast-particles) (suspend) - (ja :num! (seek!)) - ) - ) - (clear-collide-with-as (-> self root)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! citb-firehose-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go citb-firehose-active) - ) - :post transform-post - ) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1)) + (restore-collide-with-as (-> self root)) + (sound-play "eco-torch" :position (the-as symbol (-> self blast-pos))) + (dotimes (gp-1 2) + (ja-no-eval :group! citb-firehose-loopflame-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self blast-pos quad) (-> self node-list data 5 bone transform vector 3 quad)) + (citb-firehose-blast-particles) + (suspend) + (ja :num! (seek!)))) + (clear-collide-with-as (-> self root)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! citb-firehose-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go citb-firehose-active)) + :post transform-post) (defmethod init-from-entity! ((this citb-firehose) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -876,27 +692,22 @@ (set! (-> s2-0 collide-with) (collide-kind target)) (set! (-> s2-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-0 local-sphere) 0.0 -49152.0 0.0 12288.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-1 local-sphere) 0.0 -61440.0 0.0 14336.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-2 local-sphere) 0.0 -73728.0 0.0 16384.0) - (append-prim s3-0 s2-2) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *citb-firehose-sg* '()) (load-params! (-> this sync) this (the-as uint 900) 0.0 0.15 0.15) @@ -904,66 +715,54 @@ (set! (-> this part) (create-launch-control (-> *part-group-id-table* 685) this)) (clear-collide-with-as (-> this root)) (go citb-firehose-idle) - (none) - ) + (none)) -(defskelgroup *citb-exit-plat-sg* citb-exit-plat citb-exit-plat-lod0-jg citb-exit-plat-idle-ja - ((citb-exit-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *citb-exit-plat-sg* + citb-exit-plat + citb-exit-plat-lod0-jg + citb-exit-plat-idle-ja + ((citb-exit-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (deftype citb-exit-plat (plat-button) - ((idle-height float) - (rise-height float) - (activated symbol) - ) + ((idle-height float) + (rise-height float) + (activated symbol)) (:states - citb-exit-plat-idle - citb-exit-plat-rise - ) - ) - + citb-exit-plat-idle + citb-exit-plat-rise)) (defstate citb-exit-plat-idle (citb-exit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('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) - ) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (clear-collide-with-as (-> self root)) - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('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)))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (clear-collide-with-as (-> self root)) + (loop + (suspend)))) (defstate citb-exit-plat-rise (citb-exit-plat) :trans rider-trans - :code (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (restore-collide-with-as (-> self root)) - (set-time! (-> self state-time)) - (loop - (let ((f30-0 (- 1.0 (* 0.0016666667 (the float (- (current-time) (-> self state-time))))))) - (when (< f30-0 0.0) - (set! (-> self root trans y) (-> self rise-height)) - (go-virtual plat-button-idle) - ) - (set! (-> self root trans y) (lerp (-> self rise-height) (-> self idle-height) (* f30-0 f30-0))) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (restore-collide-with-as (-> self root)) + (set-time! (-> self state-time)) + (loop + (let ((f30-0 (- 1.0 (* 0.0016666667 (the float (- (current-time) (-> self state-time))))))) + (when (< f30-0 0.0) + (set! (-> self root trans y) (-> self rise-height)) + (go-virtual plat-button-idle)) + (set! (-> self root trans y) (lerp (-> self rise-height) (-> self idle-height) (* f30-0 f30-0)))) + (suspend))) + :post rider-post) (defbehavior citb-exit-plat-move-player citb-exit-plat ((arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -974,74 +773,49 @@ (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)) - ) - ) - ) - (move-by-vector! (-> *target* control) gp-0) - ) + (vector+*! gp-0 gp-0 s5-0 (- 122880.0 f30-0))))) + (move-by-vector! (-> *target* control) gp-0)) (send-event *target* 'reset-height) 0 - (none) - ) + (none)) (defstate plat-button-move-downward (citb-exit-plat) :virtual #t - :trans (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (let ((t9-1 (-> (the-as (state plat-button) (find-parent-state)) trans))) - (if t9-1 - (t9-1) - ) - ) - (citb-exit-plat-move-player gp-0) - ) - ) - :post transform-post - ) + :trans + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (let ((t9-1 (-> (the-as (state plat-button) (find-parent-state)) trans))) (if t9-1 (t9-1))) + (citb-exit-plat-move-player gp-0))) + :post transform-post) (defstate plat-button-move-upward (citb-exit-plat) :virtual #t - :trans (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (let ((t9-1 (-> (the-as (state plat-button) (find-parent-state)) trans))) - (if t9-1 - (t9-1) - ) - ) - (citb-exit-plat-move-player gp-0) - ) - ) - :post transform-post - ) + :trans + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (let ((t9-1 (-> (the-as (state plat-button) (find-parent-state)) trans))) (if t9-1 (t9-1))) + (citb-exit-plat-move-player gp-0))) + :post transform-post) (defmethod can-activate? ((this citb-exit-plat)) - (not (movie?)) - ) + (not (movie?))) (defmethod plat-button-method-31 ((this citb-exit-plat)) (initialize-skeleton this *citb-exit-plat-sg* '()) - (none) - ) + (none)) (defmethod plat-button-method-32 ((this citb-exit-plat)) - (if (-> this activated) - (go (method-of-object this plat-button-idle)) - (go citb-exit-plat-idle) - ) + (if (-> this activated) (go (method-of-object this plat-button-idle)) (go citb-exit-plat-idle)) 0 - (none) - ) + (none)) (defmethod plat-button-method-28 ((this citb-exit-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -1057,8 +831,7 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -2867.2 0.0 7372.8) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 2)))) (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -1066,48 +839,35 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 122880.0) - (append-prim s4-0 s3-1) - ) - ) + (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! (-> this root) s5-0) - s5-0 - ) - ) + s5-0)) (defmethod can-target-move? ((this citb-exit-plat)) (process-entity-status! this (entity-perm-status bit-7) #t) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this draw light-index) (the-as uint 255)) (let ((a0-5 (entity-actor-lookup (-> this entity) 'state-actor 0))) - (set! (-> this activated) (logtest? (-> a0-5 extra perm status) (entity-perm-status complete))) - ) + (set! (-> this activated) (logtest? (-> a0-5 extra perm status) (entity-perm-status complete)))) (cond ((= (-> *game-info* current-continue level) 'finalboss) (let ((v1-8 (-> this entity extra perm))) (logior! (-> v1-8 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-8 user-int8 0) 1) - ) + (set! (-> v1-8 user-int8 0) 1)) (set! (-> this activated) #t) - (set! (-> this path-pos) 0.0) - ) - (else - (set! (-> this path-pos) 1.0) - ) - ) + (set! (-> this path-pos) 0.0)) + (else (set! (-> this path-pos) 1.0))) (let ((s5-0 (-> this root trans))) (eval-path-curve! (-> this path) s5-0 (-> this path-pos) 'interp) - (vector+! s5-0 s5-0 (-> this trans-off)) - ) + (vector+! s5-0 s5-0 (-> this trans-off))) (set! (-> this rise-height) (-> this root trans y)) (set! (-> this idle-height) (+ -286720.0 (-> this rise-height))) (if (-> this activated) - (set! (-> this root trans y) (-> this rise-height)) - (set! (-> this root trans y) (-> this idle-height)) - ) + (set! (-> this root trans y) (-> this rise-height)) + (set! (-> this root trans y) (-> this idle-height))) (set! (-> this allow-auto-kill) #f) (process-entity-status! this (entity-perm-status bit-3) #t) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/common/battlecontroller.gc b/goal_src/jak1/levels/common/battlecontroller.gc index 4795b6a0f2..07fe5f52c3 100644 --- a/goal_src/jak1/levels/common/battlecontroller.gc +++ b/goal_src/jak1/levels/common/battlecontroller.gc @@ -1,82 +1,63 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO" "MIS.DGO" "SWA.DGO") - (require "engine/common-obs/babak.gc") -;; name: battlecontroller.gc -;; name in dgo: battlecontroller -;; dgos: CIT, L1, MIS, SWA - ;; DECOMP BEGINS (deftype battlecontroller-spawner (structure) - ((path path-control) - (creature handle) - (trigger-actor entity-actor) - (blocker-actor entity-actor) - (state int8) - (enabled symbol) - ) - ) - + ((path path-control) + (creature handle) + (trigger-actor entity-actor) + (blocker-actor entity-actor) + (state int8) + (enabled symbol))) (deftype battlecontroller-creature-type (structure) - ((type2 type) - (percent float) - (pickup-percent float) - (pickup-type pickup-type) - (max-pickup-count int8) - (pickup-count int8) - ) - :allow-misaligned - ) - + ((type2 type) + (percent float) + (pickup-percent float) + (pickup-type pickup-type) + (max-pickup-count int8) + (pickup-count int8)) + :allow-misaligned) (deftype battlecontroller (process-drawable) - ((final-pickup-spawn-point vector :inline) - (activate-distance float) - (max-spawn-count int16) - (spawn-count int16) - (die-count int16) - (target-count int8) - (spawner-count int8) - (creature-type-count int8) - (spawner-array battlecontroller-spawner 8 :inline) - (spawn-period time-frame) - (path-spawn path-control) - (creature-type-array battlecontroller-creature-type 4 :inline) - (final-pickup-type pickup-type) - (prespawn symbol) - (noticed-player symbol) - (camera-on symbol) - (misty-ambush-collision-hack symbol) - (disable-ocean symbol) - (disable-near-ocean symbol) - (disable-mid-ocean symbol) - ) + ((final-pickup-spawn-point vector :inline) + (activate-distance float) + (max-spawn-count int16) + (spawn-count int16) + (die-count int16) + (target-count int8) + (spawner-count int8) + (creature-type-count int8) + (spawner-array battlecontroller-spawner 8 :inline) + (spawn-period time-frame) + (path-spawn path-control) + (creature-type-array battlecontroller-creature-type 4 :inline) + (final-pickup-type pickup-type) + (prespawn symbol) + (noticed-player symbol) + (camera-on symbol) + (misty-ambush-collision-hack symbol) + (disable-ocean symbol) + (disable-near-ocean symbol) + (disable-mid-ocean symbol)) (:methods - (battlecontroller-method-20 () none) - (battlecontroller-idle () _type_ :state) - (battlecontroller-play-intro-camera () _type_ :state) - (battlecontroller-method-23 () none) - (battlecontroller-active () _type_ :state) - (battlecontroller-method-25 () none) - (battlecontroller-die () _type_ :state) - (battlecontroller-method-27 (_type_) none) - (cleanup-if-finished! (_type_) none) - ) - ) - + (battlecontroller-method-20 () none) + (battlecontroller-idle () _type_ :state) + (battlecontroller-play-intro-camera () _type_ :state) + (battlecontroller-method-23 () none) + (battlecontroller-active () _type_ :state) + (battlecontroller-method-25 () none) + (battlecontroller-die () _type_ :state) + (battlecontroller-method-27 (_type_) none) + (cleanup-if-finished! (_type_) none))) (defbehavior battlecontroller-spawners-full? battlecontroller () (dotimes (v1-0 (-> self spawner-count)) - (if (= (-> self spawner-array v1-0 creature) #f) - (return #f) - ) - ) - #t - ) + (if (= (-> self spawner-array v1-0 creature) #f) (return #f))) + #t) (defbehavior battlecontroller-default-event-handler battlecontroller ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -87,214 +68,128 @@ (when v1-4 (set! (-> self final-pickup-spawn-point quad) (-> v1-4 root trans quad)) (case (-> self final-pickup-type) - (((pickup-type fuel-cell)) - #f - ) + (((pickup-type fuel-cell)) #f) (else - (set! (-> v1-4 fact pickup-type) (-> self final-pickup-type)) - (set! (-> v1-4 fact pickup-amount) 1.0) - (set! (-> v1-4 fact pickup-spawn-amount) 0.0) - ) - ) - ) - ) - ) - ) - (('trigger) - (go-virtual battlecontroller-die) - ) - ) - ) + (set! (-> v1-4 fact pickup-type) (-> self final-pickup-type)) + (set! (-> v1-4 fact pickup-amount) 1.0) + (set! (-> v1-4 fact pickup-spawn-amount) 0.0))))))) + (('trigger) (go-virtual battlecontroller-die)))) battlecontroller-default-event-handler (defbehavior battlecontroller-draw-debug battlecontroller () (dotimes (gp-0 (-> self spawner-count)) - (debug-draw (-> self spawner-array gp-0 path)) - ) + (debug-draw (-> self spawner-array gp-0 path))) 0 - (none) - ) + (none)) (defbehavior battlecontroller-camera-on battlecontroller () (when (not (-> self camera-on)) (set! (-> self camera-on) #t) (let ((v1-4 (res-lump-struct (-> self entity) 'camera-name structure))) - (if v1-4 - (send-event *camera* 'change-to-entity-by-name v1-4) - ) - ) - ) - 0 - ) + (if v1-4 (send-event *camera* 'change-to-entity-by-name v1-4)))) + 0) (defbehavior battlecontroller-camera-off battlecontroller () (set! (-> self camera-on) #f) (send-event *camera* 'clear-entity) 0 - (none) - ) + (none)) (defbehavior battlecontroller-update-spawners battlecontroller () (dotimes (gp-0 (-> self spawner-count)) (let* ((s5-0 (-> self spawner-array gp-0)) - (s4-0 (handle->process (-> s5-0 creature))) - ) + (s4-0 (handle->process (-> s5-0 creature)))) (when (and s4-0 (logtest? (-> (the-as nav-enemy s4-0) nav-enemy-flags) (nav-enemy-flags navenmf11))) (cond ((< (-> s5-0 state) (-> s5-0 path curve num-cverts)) (when (or (-> self noticed-player) (= (-> s5-0 state) 1)) (let ((s3-0 (new 'stack-no-clear 'vector))) (eval-path-curve-div! (-> s5-0 path) s3-0 (the float (-> s5-0 state)) 'interp) - (send-event s4-0 'cue-jump-to-point s3-0) - ) - (if (not (logtest? (-> (the-as nav-enemy s4-0) nav-enemy-flags) (nav-enemy-flags navenmf11))) - (+! (-> s5-0 state) 1) - ) - ) - ) - (else - (send-event s4-0 'cue-chase) - (set! (-> s5-0 creature) (the-as handle #f)) - ) - ) - ) - ) - ) + (send-event s4-0 'cue-jump-to-point s3-0)) + (if (not (logtest? (-> (the-as nav-enemy s4-0) nav-enemy-flags) (nav-enemy-flags navenmf11))) (+! (-> s5-0 state) 1)))) + (else (send-event s4-0 'cue-chase) (set! (-> s5-0 creature) (the-as handle #f))))))) 0 - (none) - ) + (none)) (defbehavior battlecontroller-spawn-creature battlecontroller ((arg0 vector) (arg1 vector)) (local-vars (v1-25 pickup-type)) (let ((f0-0 (rand-vu)) - (v1-0 0) - ) + (v1-0 0)) (dotimes (a0-1 (-> self creature-type-count)) (when (>= f0-0 0.0) (set! f0-0 (- f0-0 (-> self creature-type-array a0-1 percent))) - (if (< f0-0 0.0) - (set! v1-0 a0-1) - ) - ) - ) + (if (< f0-0 0.0) (set! v1-0 a0-1)))) (let* ((s5-0 (-> self creature-type-array v1-0)) (s2-0 (-> s5-0 type2)) (s1-0 (the-as nav-enemy (get-process *default-dead-pool* s2-0 #x4000))) (gp-0 (when s1-0 - (let ((t9-2 (method-of-type process activate))) - (t9-2 s1-0 self s2-0 (the-as pointer #x70004000)) - ) + (let ((t9-2 (method-of-type process activate))) (t9-2 s1-0 self s2-0 (the-as pointer #x70004000))) (run-now-in-process s1-0 nav-enemy-init-by-other self arg0 arg1) - (-> s1-0 ppointer) - ) - ) - ) - (if (and gp-0 (zero? (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info))) - (set! gp-0 (the-as (pointer process) #f)) - ) + (-> s1-0 ppointer)))) + (if (and gp-0 (zero? (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info))) (set! gp-0 (the-as (pointer process) #f))) (when (the-as (pointer nav-enemy) gp-0) (logclear! (-> (the-as (pointer nav-enemy) gp-0) 0 mask) (process-mask actor-pause)) (if (-> self misty-ambush-collision-hack) - (logior! (-> (the-as (pointer nav-enemy) gp-0) 0 nav-enemy-flags) (nav-enemy-flags navenmf15)) - ) + (logior! (-> (the-as (pointer nav-enemy) gp-0) 0 nav-enemy-flags) (nav-enemy-flags navenmf15))) (+! (-> self spawn-count) 1) (-> self fact pickup-type) (cond ((and (< (-> s5-0 pickup-count) (-> s5-0 max-pickup-count)) (rand-vu-percent? (-> s5-0 pickup-percent))) (+! (-> s5-0 pickup-count) 1) - (set! v1-25 (-> s5-0 pickup-type)) - ) - (else - (set! v1-25 (-> self fact pickup-type)) - ) - ) + (set! v1-25 (-> s5-0 pickup-type))) + (else (set! v1-25 (-> self fact pickup-type)))) (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-type) v1-25) (cond - ((= v1-25 (pickup-type eco-pill)) - ) + ((= v1-25 (pickup-type eco-pill))) ((= v1-25 (pickup-type none)) (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-amount) 0.0) - (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-spawn-amount) 0.0) - ) + (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-spawn-amount) 0.0)) (else - (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-amount) 1.0) - (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-spawn-amount) 0.0) - (logior! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info options) (fact-options fade)) - (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info fade-time) (seconds 4)) - ) - ) - ) - (the-as handle (ppointer->handle gp-0)) - ) - ) - ) + (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-amount) 1.0) + (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info pickup-spawn-amount) 0.0) + (logior! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info options) (fact-options fade)) + (set! (-> (the-as (pointer nav-enemy) gp-0) 0 enemy-info fade-time) (seconds 4))))) + (the-as handle (ppointer->handle gp-0))))) (defbehavior battlecontroller-spawn-creature-at-spawner battlecontroller ((arg0 int) (arg1 int)) (let* ((s5-0 (-> self spawner-array arg0)) (s3-0 (-> s5-0 path)) (s4-0 (eval-path-curve-div! s3-0 (new 'stack-no-clear 'vector) (the float arg1) 'interp)) - (a1-3 (eval-path-curve-div! s3-0 (new 'stack-no-clear 'vector) (the float (+ arg1 1)) 'interp)) - ) + (a1-3 (eval-path-curve-div! s3-0 (new 'stack-no-clear 'vector) (the float (+ arg1 1)) 'interp))) (when (and (not (handle->process (-> s5-0 creature))) (< (-> self spawn-count) (-> self max-spawn-count))) (let ((v1-10 (battlecontroller-spawn-creature s4-0 a1-3))) (when (handle->process v1-10) (set! (-> s5-0 creature) v1-10) - (set! (-> s5-0 state) (+ arg1 1)) - ) - ) - ) - ) + (set! (-> s5-0 state) (+ arg1 1)))))) 0 - (none) - ) + (none)) (defbehavior battlecontroller-spawn-creature-random-spawner battlecontroller () (let* ((gp-0 (rand-vu-int-count (-> self spawner-count))) - (v1-2 (-> self spawner-array gp-0)) - ) + (v1-2 (-> self spawner-array gp-0))) (when (and (-> v1-2 enabled) (-> v1-2 blocker-actor)) (when (logtest? (-> v1-2 blocker-actor extra perm status) (entity-perm-status complete)) (set! (-> v1-2 enabled) #f) (let ((a0-9 0)) (dotimes (a1-0 (-> self spawner-count)) - (if (-> self spawner-array a1-0 enabled) - (+! a0-9 1) - ) - ) - (if (zero? a0-9) - (set! (-> self spawn-count) (-> self max-spawn-count)) - ) - ) - ) - ) + (if (-> self spawner-array a1-0 enabled) (+! a0-9 1))) + (if (zero? a0-9) (set! (-> self spawn-count) (-> self max-spawn-count)))))) (when (and (-> v1-2 enabled) (not (handle->process (-> v1-2 creature)))) (let ((a1-7 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-7 from) self) (set! (-> a1-7 num-params) 0) (set! (-> a1-7 message) 'spawn) (let ((t9-1 send-event-function) - (v1-3 (-> v1-2 trigger-actor)) - ) - (t9-1 - (if v1-3 - (-> v1-3 extra process) - ) - a1-7 - ) - ) - ) - (battlecontroller-spawn-creature-at-spawner gp-0 0) - ) - ) + (v1-3 (-> v1-2 trigger-actor))) + (t9-1 (if v1-3 (-> v1-3 extra process)) a1-7))) + (battlecontroller-spawn-creature-at-spawner gp-0 0))) 0 - (none) - ) + (none)) (defbehavior battlecontroller-fill-all-spawners battlecontroller () (dotimes (gp-0 (-> self spawner-count)) - (battlecontroller-spawn-creature-at-spawner gp-0 1) - ) + (battlecontroller-spawn-creature-at-spawner gp-0 1)) (when (nonzero? (-> self path-spawn)) (let ((gp-1 (new 'stack-no-clear 'vector))) (dotimes (s5-0 (-> self path-spawn curve num-cverts)) @@ -302,27 +197,16 @@ battlecontroller-default-event-handler (let ((s4-0 (battlecontroller-spawn-creature gp-1 (-> self root trans)))) (when (handle->process s4-0) (suspend) - (send-event (handle->process s4-0) 'cue-chase) - ) - ) - ) - ) - ) + (send-event (handle->process s4-0) 'cue-chase)))))) 0 - (none) - ) + (none)) (defbehavior battlecontroller-battle-begin battlecontroller () (set-setting! 'music 'danger 0.0 0) (let ((gp-0 (entity-actor-count (-> self entity) 'kill-actor))) (dotimes (s5-0 gp-0) (let ((v1-2 (entity-actor-lookup (-> self entity) 'kill-actor s5-0))) - (if v1-2 - (logior! (-> v1-2 extra perm status) (entity-perm-status bit-9)) - ) - ) - ) - ) + (if v1-2 (logior! (-> v1-2 extra perm status) (entity-perm-status bit-9)))))) (let ((gp-1 (entity-actor-count (-> self entity) 'trigger-actor))) (dotimes (s5-1 gp-1) (let ((s4-0 (new 'stack-no-clear 'event-message-block))) @@ -330,291 +214,190 @@ battlecontroller-default-event-handler (set! (-> s4-0 num-params) 0) (set! (-> s4-0 message) 'trigger) (let ((s3-0 send-event-function) - (v1-7 (entity-actor-lookup (-> self entity) 'trigger-actor s5-1)) - ) - (s3-0 - (if v1-7 - (-> v1-7 extra process) - ) - s4-0 - ) - ) - ) - ) - ) + (v1-7 (entity-actor-lookup (-> self entity) 'trigger-actor s5-1))) + (s3-0 (if v1-7 (-> v1-7 extra process)) s4-0))))) (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) 0 - (none) - ) + (none)) (defbehavior battlecontroller-off battlecontroller () (remove-setting! 'music) (let ((gp-0 (entity-actor-count (-> self entity) 'kill-actor))) (dotimes (s5-0 gp-0) (let ((v1-2 (entity-actor-lookup (-> self entity) 'kill-actor s5-0))) - (if v1-2 - (logclear! (-> v1-2 extra perm status) (entity-perm-status bit-9)) - ) - ) - ) - ) + (if v1-2 (logclear! (-> v1-2 extra perm status) (entity-perm-status bit-9)))))) 0 - (none) - ) + (none)) (defbehavior battlecontroller-battle-end battlecontroller () (case (-> (level-get-target-inside *level*) name) - (('citadel) - (level-hint-spawn (text-id citadel-battle-end) "sksp0378" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) + (('citadel) (level-hint-spawn (text-id citadel-battle-end) "sksp0378" (the-as entity #f) *entity-pool* (game-task none)))) (battlecontroller-off) - (none) - ) + (none)) (defstate battlecontroller-idle (battlecontroller) :virtual #t :event battlecontroller-default-event-handler - :trans (behavior () - 0 - ) - :code (behavior () - (set-time! (-> self state-time)) - (if (-> self prespawn) - (battlecontroller-fill-all-spawners) - ) - (loop - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (set-time! (-> self state-time)) - (when (and *target* - (>= (-> self activate-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (set! (-> self noticed-player) #t) - (battlecontroller-battle-begin) - (when (not (-> self prespawn)) - (battlecontroller-fill-all-spawners) - (suspend) - 0 - ) - (go-virtual battlecontroller-play-intro-camera) - ) - ) - (suspend) - ) - ) - :post #f - ) + :trans + (behavior () + 0) + :code + (behavior () + (set-time! (-> self state-time)) + (if (-> self prespawn) (battlecontroller-fill-all-spawners)) + (loop + (when (time-elapsed? (-> self state-time) (seconds 0.1)) + (set-time! (-> self state-time)) + (when (and *target* + (>= (-> self activate-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (set! (-> self noticed-player) #t) + (battlecontroller-battle-begin) + (when (not (-> self prespawn)) + (battlecontroller-fill-all-spawners) + (suspend) + 0) + (go-virtual battlecontroller-play-intro-camera))) + (suspend))) + :post #f) (defstate battlecontroller-play-intro-camera (battlecontroller) :virtual #t :event battlecontroller-default-event-handler - :enter (behavior () - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - :exit (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - :code (behavior () - (go-virtual battlecontroller-active) - ) - ) + :enter + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t)) + :exit + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f)) + :code + (behavior () + (go-virtual battlecontroller-active))) (defbehavior battlecontroller-disable-ocean battlecontroller () (set! *ocean-off* (-> self disable-ocean)) (set! *ocean-mid-off* (-> self disable-mid-ocean)) (set! *ocean-near-off* (-> self disable-near-ocean)) 0 - (none) - ) + (none)) (defstate battlecontroller-active (battlecontroller) :virtual #t :event battlecontroller-default-event-handler - :trans (behavior () - (if (and *target* - (>= (-> self activate-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) - ) - (battlecontroller-disable-ocean) - (battlecontroller-update-spawners) - ) - :code (behavior () - (set-time! (-> self state-time)) - (battlecontroller-camera-on) - (loop - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (set-time! (-> self state-time)) - (let ((gp-0 0)) - (let ((v1-8 (-> self child))) - (while v1-8 - (+! gp-0 1) - (set! v1-8 (-> v1-8 0 brother)) - (nop!) - (nop!) - ) - ) - (if (and (zero? gp-0) (= (-> self spawn-count) (-> self max-spawn-count))) - (go-virtual battlecontroller-die) - ) - (when (< gp-0 (-> self target-count)) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (-> self spawn-period)) - (suspend) - ) - ) - (battlecontroller-spawn-creature-random-spawner) - ) - ) - ) - (suspend) - ) - ) - :post #f - ) + :trans + (behavior () + (if (and *target* + (>= (-> self activate-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none))) + (battlecontroller-disable-ocean) + (battlecontroller-update-spawners)) + :code + (behavior () + (set-time! (-> self state-time)) + (battlecontroller-camera-on) + (loop + (when (time-elapsed? (-> self state-time) (seconds 0.1)) + (set-time! (-> self state-time)) + (let ((gp-0 0)) + (let ((v1-8 (-> self child))) (while v1-8 (+! gp-0 1) (set! v1-8 (-> v1-8 0 brother)) (nop!) (nop!))) + (if (and (zero? gp-0) (= (-> self spawn-count) (-> self max-spawn-count))) (go-virtual battlecontroller-die)) + (when (< gp-0 (-> self target-count)) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (-> self spawn-period)) (suspend))) + (battlecontroller-spawn-creature-random-spawner)))) + (suspend))) + :post #f) (defbehavior battlecontroller-special-contents? battlecontroller () - (= (-> self final-pickup-type) (pickup-type fuel-cell)) - ) + (= (-> self final-pickup-type) (pickup-type fuel-cell))) (defbehavior battlecontroller-special-contents-collected? battlecontroller () - (= (-> self entity extra perm user-int8 0) 2) - ) + (= (-> self entity extra perm user-int8 0) 2)) (defbehavior battlecontroller-set-special-contents-collected battlecontroller () (let ((v1-2 (-> self entity extra perm))) (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 0) 2) - ) + (set! (-> v1-2 user-int8 0) 2)) 0 - (none) - ) + (none)) (defbehavior battlecontroller-task-completed? battlecontroller () - (>= (-> self entity extra perm user-int8 0) 1) - ) + (>= (-> self entity extra perm user-int8 0) 1)) (defbehavior battlecontroller-set-task-completed battlecontroller () (let ((v1-2 (-> self entity extra perm))) (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 0) 1) - ) + (set! (-> v1-2 user-int8 0) 1)) 0 - (none) - ) + (none)) (defstate battlecontroller-die (battlecontroller) :virtual #t :event process-drawable-fuel-cell-handler - :code (behavior () - (sound-play "money-pickup" :pitch -1.5 :position #f) - (battlecontroller-battle-end) - (battlecontroller-camera-off) - (battlecontroller-set-task-completed) - (countdown (gp-1 (entity-actor-count (-> self entity) 'fade-actor)) - (let ((s5-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> s5-1 from) self) - (set! (-> s5-1 num-params) 0) - (set! (-> s5-1 message) 'fade) - (let ((s4-0 send-event-function) - (v1-2 (entity-actor-lookup (-> self entity) 'fade-actor gp-1)) - ) - (s4-0 - (if v1-2 - (-> v1-2 extra process) - ) - s5-1 - ) - ) - ) - ) - (countdown (gp-2 (entity-actor-count (-> self entity) 'alt-actor)) - (let ((s5-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> s5-2 from) self) - (set! (-> s5-2 num-params) 0) - (set! (-> s5-2 message) 'trigger) - (let ((s4-1 send-event-function) - (v1-8 (entity-actor-lookup (-> self entity) 'alt-actor gp-2)) - ) - (s4-1 - (if v1-8 - (-> v1-8 extra process) - ) - s5-2 - ) - ) - ) - ) - (when (and (battlecontroller-special-contents?) (not (battlecontroller-special-contents-collected?))) - (label cfg-15) - (birth-pickup-at-point - (-> self final-pickup-spawn-point) - (-> self final-pickup-type) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - (when (not (-> self child)) - (suspend) - (goto cfg-15) - ) + :code + (behavior () + (sound-play "money-pickup" :pitch -1.5 :position #f) + (battlecontroller-battle-end) + (battlecontroller-camera-off) + (battlecontroller-set-task-completed) + (countdown (gp-1 (entity-actor-count (-> self entity) 'fade-actor)) + (let ((s5-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> s5-1 from) self) + (set! (-> s5-1 num-params) 0) + (set! (-> s5-1 message) 'fade) + (let ((s4-0 send-event-function) + (v1-2 (entity-actor-lookup (-> self entity) 'fade-actor gp-1))) + (s4-0 (if v1-2 (-> v1-2 extra process)) s5-1)))) + (countdown (gp-2 (entity-actor-count (-> self entity) 'alt-actor)) + (let ((s5-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> s5-2 from) self) + (set! (-> s5-2 num-params) 0) + (set! (-> s5-2 message) 'trigger) + (let ((s4-1 send-event-function) + (v1-8 (entity-actor-lookup (-> self entity) 'alt-actor gp-2))) + (s4-1 (if v1-8 (-> v1-8 extra process)) s5-2)))) + (when (and (battlecontroller-special-contents?) (not (battlecontroller-special-contents-collected?))) + (label cfg-15) + (birth-pickup-at-point (-> self final-pickup-spawn-point) + (-> self final-pickup-type) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f)) + (when (not (-> self child)) + (suspend) + (goto cfg-15)) + (while (-> self child) + (suspend)) + (battlecontroller-set-special-contents-collected)) (while (-> self child) - (suspend) - ) - (battlecontroller-set-special-contents-collected) - ) - (while (-> self child) - (suspend) - ) - (process-entity-status! self (entity-perm-status dead) #t) - ) - :post #f - ) + (suspend)) + (process-entity-status! self (entity-perm-status dead) #t)) + :post #f) (defmethod relocate ((this battlecontroller) (arg0 int)) (dotimes (v1-0 (-> this spawner-count)) - (let ((a0-3 (-> this spawner-array v1-0))) - (if (nonzero? (-> a0-3 path)) - (&+! (-> a0-3 path) arg0) - ) - ) - ) - (if (nonzero? (-> this path-spawn)) - (&+! (-> this path-spawn) arg0) - ) - (call-parent-method this arg0) - ) + (let ((a0-3 (-> this spawner-array v1-0))) (if (nonzero? (-> a0-3 path)) (&+! (-> a0-3 path) arg0)))) + (if (nonzero? (-> this path-spawn)) (&+! (-> this path-spawn) arg0)) + (call-parent-method this arg0)) (defmethod deactivate ((this battlecontroller)) (with-pp - (let ((gp-0 pp)) - (set! pp this) - (battlecontroller-off) - (set! pp gp-0) - ) + (let ((gp-0 pp)) (set! pp this) (battlecontroller-off) (set! pp gp-0)) (call-parent-method this) 0 - (none) - ) - ) + (none))) (defmethod battlecontroller-method-27 ((this battlecontroller)) (local-vars (sv-16 res-tag)) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> this activate-distance) 122880.0) (let ((s5-0 0)) (let* ((s4-0 '(patha pathb pathc pathd pathe pathf pathg pathh)) - (s2-0 (car s4-0)) - ) + (s2-0 (car s4-0))) (while (not (null? s4-0)) (let ((v1-7 (res-lump-struct (-> this entity) (the-as symbol s2-0) structure)) - (s3-0 (-> this spawner-array s5-0)) - ) + (s3-0 (-> this spawner-array s5-0))) (when (and v1-7 (< s5-0 8)) (set! (-> s3-0 path) (new 'process 'path-control this (the-as symbol s2-0) 0.0)) (set! (-> s3-0 creature) (the-as handle #f)) @@ -622,40 +405,23 @@ battlecontroller-default-event-handler (set! (-> s3-0 blocker-actor) #f) (set! (-> s3-0 enabled) #t) (logior! (-> s3-0 path flags) (path-control-flag display draw-line draw-point draw-text)) - (+! s5-0 1) - ) - ) + (+! s5-0 1))) (set! s4-0 (cdr s4-0)) - (set! s2-0 (car s4-0)) - ) - ) - (set! (-> this spawner-count) s5-0) - ) + (set! s2-0 (car s4-0)))) + (set! (-> this spawner-count) s5-0)) 0 (if (res-lump-struct (-> this entity) 'pathspawn structure) - (set! (-> this path-spawn) (new 'process 'path-control this 'pathspawn 0.0)) - ) + (set! (-> this path-spawn) (new 'process 'path-control this 'pathspawn 0.0))) (let ((s5-1 (entity-actor-count (-> this entity) 'spawner-trigger-actor))) (dotimes (s4-1 s5-1) (if (< s4-1 (-> this spawner-count)) - (set! (-> this spawner-array s4-1 trigger-actor) - (entity-actor-lookup (-> this entity) 'spawner-trigger-actor s4-1) - ) - ) - ) - ) + (set! (-> this spawner-array s4-1 trigger-actor) (entity-actor-lookup (-> this entity) 'spawner-trigger-actor s4-1))))) (let ((s5-2 (entity-actor-count (-> this entity) 'spawner-blocker-actor))) (dotimes (s4-2 s5-2) (if (< s4-2 (-> this spawner-count)) - (set! (-> this spawner-array s4-2 blocker-actor) - (entity-actor-lookup (-> this entity) 'spawner-blocker-actor s4-2) - ) - ) - ) - ) + (set! (-> this spawner-array s4-2 blocker-actor) (entity-actor-lookup (-> this entity) 'spawner-blocker-actor s4-2))))) (set! (-> this spawn-period) - (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'delay :default 0.1)))) - ) + (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'delay :default 0.1))))) (set! (-> this target-count) 10) (set! (-> this max-spawn-count) 100) (set! (-> this spawn-count) 0) @@ -666,9 +432,7 @@ battlecontroller-default-event-handler (let ((v1-46 (res-lump-data (-> this entity) 'num-lurkers (pointer int32)))) (when v1-46 (set! (-> this target-count) (-> v1-46 0)) - (set! (-> this max-spawn-count) (-> v1-46 1)) - ) - ) + (set! (-> this max-spawn-count) (-> v1-46 1)))) (set! (-> this creature-type-array 0 type2) babak) (set! (-> this creature-type-array 0 percent) 1.0) (let ((s5-3 0)) @@ -679,59 +443,31 @@ battlecontroller-default-event-handler (let ((a1-15 (-> (the-as (pointer uint32) (&+ v1-49 (* a0-22 4)))))) (when (nonzero? a1-15) (set! (-> this creature-type-array s5-3 type2) (the-as type a1-15)) - (+! s5-3 1) - ) - ) - ) - ) - ) - (set! (-> this creature-type-count) s5-3) - ) + (+! s5-3 1)))))) + (set! (-> this creature-type-count) s5-3)) (let ((v1-52 (res-lump-data (-> this entity) 'percent pointer)) - (f0-6 0.0) - ) + (f0-6 0.0)) (when v1-52 (dotimes (a0-26 (-> this creature-type-count)) (set! (-> this creature-type-array a0-26 percent) (fabs (-> (the-as (pointer float) (&+ v1-52 (* a0-26 4)))))) - (+! f0-6 (-> this creature-type-array a0-26 percent)) - ) + (+! f0-6 (-> this creature-type-array a0-26 percent))) (cond - ((= f0-6 0.0) - (set! (-> this creature-type-count) 1) - (set! (-> this creature-type-array 0 percent) 1.0) - ) + ((= f0-6 0.0) (set! (-> this creature-type-count) 1) (set! (-> this creature-type-array 0 percent) 1.0)) (else - (let ((f0-9 (/ 1.0 f0-6))) - (dotimes (v1-57 (-> this creature-type-count)) - (set! (-> this creature-type-array 0 percent) (* (-> this creature-type-array 0 percent) f0-9)) - ) - ) - ) - ) - ) - ) + (let ((f0-9 (/ 1.0 f0-6))) + (dotimes (v1-57 (-> this creature-type-count)) + (set! (-> this creature-type-array 0 percent) (* (-> this creature-type-array 0 percent) f0-9)))))))) (set! (-> this final-pickup-type) - (res-lump-value (-> this entity) 'final-pickup pickup-type :default (the-as uint128 7)) - ) + (res-lump-value (-> this entity) 'final-pickup pickup-type :default (the-as uint128 7))) (let ((s5-4 (res-lump-data (-> this entity) 'pickup-type pointer)) (s4-3 (res-lump-data (-> this entity) 'max-pickup-count pointer)) - (v1-63 (res-lump-data (-> this entity) 'pickup-percent pointer)) - ) + (v1-63 (res-lump-data (-> this entity) 'pickup-percent pointer))) (dotimes (a0-34 (-> this creature-type-count)) (let ((a1-34 (-> this creature-type-array a0-34))) (set! (-> a1-34 pickup-count) 0) - (if s5-4 - (set! (-> a1-34 pickup-type) (the-as pickup-type (-> (the-as (pointer int32) (&+ s5-4 (* a0-34 4)))))) - ) - (if s4-3 - (set! (-> a1-34 max-pickup-count) (-> (the-as (pointer int32) (&+ s4-3 (* a0-34 4))))) - ) - (if v1-63 - (set! (-> a1-34 pickup-percent) (-> (the-as (pointer float) (&+ v1-63 (* a0-34 4))))) - ) - ) - ) - ) + (if s5-4 (set! (-> a1-34 pickup-type) (the-as pickup-type (-> (the-as (pointer int32) (&+ s5-4 (* a0-34 4))))))) + (if s4-3 (set! (-> a1-34 max-pickup-count) (-> (the-as (pointer int32) (&+ s4-3 (* a0-34 4)))))) + (if v1-63 (set! (-> a1-34 pickup-percent) (-> (the-as (pointer float) (&+ v1-63 (* a0-34 4))))))))) (set! (-> this misty-ambush-collision-hack) #f) (set! (-> this disable-ocean) #f) (set! (-> this disable-mid-ocean) #f) @@ -739,17 +475,14 @@ battlecontroller-default-event-handler (set! (-> this final-pickup-spawn-point quad) (-> this root trans quad)) (set! (-> this prespawn) (= (res-lump-value (-> this entity) 'mode uint128) 1)) 0 - (none) - ) + (none)) (defmethod cleanup-if-finished! ((this battlecontroller)) (if (battlecontroller-task-completed?) - (go (method-of-object this battlecontroller-die)) - (go (method-of-object this battlecontroller-idle)) - ) + (go (method-of-object this battlecontroller-die)) + (go (method-of-object this battlecontroller-idle))) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this battlecontroller) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) @@ -757,5 +490,4 @@ battlecontroller-default-event-handler (process-drawable-from-entity! this arg0) (battlecontroller-method-27 this) (cleanup-if-finished! this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/common/blocking-plane.gc b/goal_src/jak1/levels/common/blocking-plane.gc index c7dc450af9..8950d84011 100644 --- a/goal_src/jak1/levels/common/blocking-plane.gc +++ b/goal_src/jak1/levels/common/blocking-plane.gc @@ -1,28 +1,21 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO" "SNO.DGO" "SWA.DGO") - (require "engine/geometry/path.gc") (require "engine/common-obs/process-drawable.gc") -;; name: blocking-plane.gc -;; name in dgo: blocking-plane -;; dgos: L1, FIC, LAV, MIS, OGR, RACERP, ROL, SNO, SWA - ;; DECOMP BEGINS -(deftype blocking-plane (process-drawable) - () +(deftype blocking-plane (process-drawable) () (:states - blocking-plane-idle - ) - ) - + blocking-plane-idle)) -(defskelgroup *ef-plane-sg* ef-plane ef-plane-lod0-jg ef-plane-idle-ja - ((ef-plane-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *ef-plane-sg* + ef-plane + ef-plane-lod0-jg + ef-plane-idle-ja + ((ef-plane-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (defstate blocking-plane-idle (blocking-plane) :trans (behavior () @@ -52,8 +45,7 @@ ) 0.0 (let ((f30-1 (* 0.5 (vector-vector-distance s5-0 gp-0))) - (s4-1 (new 'process 'collide-shape self (collide-list-enum usually-hit-by-player))) - ) + (s4-1 (new 'process 'collide-shape self (collide-list-enum usually-hit-by-player)))) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s4-1 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -65,8 +57,7 @@ ) (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) - ) + (set! (-> self root) s4-1)) (let ((s4-2 (new-stack-matrix0))) (vector+! (-> self root trans) s5-0 gp-0) (vector-float*! (-> self root trans) (-> self root trans) 0.5) @@ -80,9 +71,7 @@ (set! (-> s4-2 vector 1 quad) (-> (new 'static 'vector :y 1.0 :w 1.0) quad)) (vector-cross! (-> s4-2 vector 2) (the-as vector (-> s4-2 vector)) (-> s4-2 vector 1)) (vector-normalize! (-> s4-2 vector 2) 1.0) - (matrix->quaternion (-> self root quat) s4-2) - ) - ) + (matrix->quaternion (-> self root quat) s4-2))) (initialize-skeleton self *ef-plane-sg* '()) (logior! (-> self draw status) (draw-status skip-bones)) (go blocking-plane-idle) @@ -90,7 +79,7 @@ ) ;; Use the below function to spawn a blocking-plane between 2 vectors with a given height. -;; +;; ;; Example (spawn): ;; ;; (when (not (process-by-name "test-blocking-plane-1" *active-pool*)) @@ -100,7 +89,7 @@ ;; (blocking-plane-spawn-simple verts (meters 30.0) "test-blocking-plane-1") ;; ) ;; ) -;; +;; ;; Example (despawn): ;; ;; (let ((plane (process-by-name "test-blocking-plane-1" *active-pool*))) @@ -109,11 +98,10 @@ (defun blocking-plane-spawn-simple ((verts (inline-array vector)) (height float) (name string)) (process-spawn blocking-plane verts height :to *active-pool* :name name) ) - + (defbehavior blocking-plane-spawn process ((arg0 curve-control)) (cond - ((or (not arg0) (logtest? (-> arg0 flags) (path-control-flag not-found))) - ) + ((or (not arg0) (logtest? (-> arg0 flags) (path-control-flag not-found)))) (else (let ((s5-0 (the int (the float (+ (-> arg0 curve num-cverts) -1)))) (s2-0 (new 'stack-no-clear 'inline-array 'vector 2)) @@ -129,8 +117,7 @@ ) ) 0 - (none) - ) + (none)) (defun blocking-plane-destroy () (with-pp @@ -138,13 +125,6 @@ (while gp-0 (let ((s5-0 (ppointer->process gp-0))) (set! gp-0 (-> gp-0 0 brother)) - (if (type-type? (-> s5-0 type) blocking-plane) - (deactivate s5-0) - ) - ) - ) - ) + (if (type-type? (-> s5-0 type) blocking-plane) (deactivate s5-0))))) 0 - (none) - ) - ) + (none))) diff --git a/goal_src/jak1/levels/common/launcherdoor.gc b/goal_src/jak1/levels/common/launcherdoor.gc index 62cc9f2ed1..ec62f2e54a 100644 --- a/goal_src/jak1/levels/common/launcherdoor.gc +++ b/goal_src/jak1/levels/common/launcherdoor.gc @@ -1,136 +1,88 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO" "MAI.DGO" "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") -;; name: launcherdoor.gc -;; name in dgo: launcherdoor -;; dgos: JUN, JUNGLE, L1, MAI, MAINCAVE, SUN, SUNKEN - - ;; DECOMP BEGINS (deftype launcherdoor (process-drawable) - ((root collide-shape :override) - (notify-player-passed-thru? symbol) - (thresh-y float) - (open-speed float) - (close-speed float) - (load-mode symbol) - ) - (:states - (launcherdoor-closed symbol) - (launcherdoor-open symbol) - ) - ) + ((root collide-shape :override) + (notify-player-passed-thru? symbol) + (thresh-y float) + (open-speed float) + (close-speed float) + (load-mode symbol)) + (:states (launcherdoor-closed symbol) + (launcherdoor-open symbol))) +(defskelgroup *launcherdoor-sg* + launcherdoor + launcherdoor-geo-jg + -1 + ((launcherdoor-geo-mg (meters 20)) (launcherdoor-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) -(defskelgroup *launcherdoor-sg* launcherdoor launcherdoor-geo-jg -1 - ((launcherdoor-geo-mg (meters 20)) (launcherdoor-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) - -(defskelgroup *launcherdoor-maincave-sg* launcherdoor-maincave launcherdoor-maincave-geo-jg -1 - ((launcherdoor-maincave-geo-mg (meters 20)) (launcherdoor-maincave-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *launcherdoor-maincave-sg* + launcherdoor-maincave + launcherdoor-maincave-geo-jg + -1 + ((launcherdoor-maincave-geo-mg (meters 20)) (launcherdoor-maincave-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defstate launcherdoor-closed (launcherdoor) - :code (behavior ((arg0 symbol)) - (if (not arg0) - (sound-play "ldoor-close") - ) - (when *target* - (case (-> *target* current-level name) - (('jungle 'jungleb) - (send-event *target* 'no-load-wait (seconds 20)) - ) - ) - ) - (restore-collide-with-as (-> self root)) - (ja-no-eval :num! (seek! 0.0)) - (when arg0 - (ja :num-func num-func-identity :frame-num 0.0) - (set! (-> self draw force-lod) 1) - ) - (suspend) - (loop - (if (and *target* - (= (-> *target* control unknown-surface00 name) 'launch-jump) - (< (-> *target* control trans y) (-> self thresh-y)) - ) - (go launcherdoor-open #f) - ) - (ja :num! (seek! 0.0 (-> self close-speed))) + :code + (behavior ((arg0 symbol)) + (if (not arg0) (sound-play "ldoor-close")) + (when *target* + (case (-> *target* current-level name) + (('jungle 'jungleb) (send-event *target* 'no-load-wait (seconds 20))))) + (restore-collide-with-as (-> self root)) + (ja-no-eval :num! (seek! 0.0)) + (when arg0 + (ja :num-func num-func-identity :frame-num 0.0) + (set! (-> self draw force-lod) 1)) (suspend) - (when (ja-done? 0) - (set! (-> self draw force-lod) 1) - (when (-> self notify-player-passed-thru?) - (set! (-> self notify-player-passed-thru?) #f) - (let* ((gp-1 (-> self entity)) - (s5-1 (entity-actor-count gp-1 'alt-actor)) - ) - (dotimes (s4-1 s5-1) - (let ((v1-43 (entity-actor-lookup gp-1 'alt-actor s4-1))) - (if v1-43 - (send-event - (if v1-43 - (-> v1-43 extra process) - ) - 'notify - ) - ) - ) - ) - ) - (case (-> self load-mode) - (('jungle) - (load-state-want-levels 'village1 'jungle) - (load-state-want-display-level 'village1 'display) - ) - ) - ) - ) - ) - ) - :post ja-post - ) + (loop + (if (and *target* + (= (-> *target* control unknown-surface00 name) 'launch-jump) + (< (-> *target* control trans y) (-> self thresh-y))) + (go launcherdoor-open #f)) + (ja :num! (seek! 0.0 (-> self close-speed))) + (suspend) + (when (ja-done? 0) + (set! (-> self draw force-lod) 1) + (when (-> self notify-player-passed-thru?) + (set! (-> self notify-player-passed-thru?) #f) + (let* ((gp-1 (-> self entity)) + (s5-1 (entity-actor-count gp-1 'alt-actor))) + (dotimes (s4-1 s5-1) + (let ((v1-43 (entity-actor-lookup gp-1 'alt-actor s4-1))) + (if v1-43 (send-event (if v1-43 (-> v1-43 extra process)) 'notify))))) + (case (-> self load-mode) + (('jungle) (load-state-want-levels 'village1 'jungle) (load-state-want-display-level 'village1 'display))))))) + :post ja-post) (defstate launcherdoor-open (launcherdoor) - :code (behavior ((arg0 symbol)) - (if (not arg0) - (sound-play "ldoor-open") - ) - (set! (-> self draw force-lod) 0) - (clear-collide-with-as (-> self root)) - (ja-no-eval :num! (seek!)) - (if arg0 - (ja :num-func num-func-identity :frame-num max) - ) - (loop - (when (or (not *target*) - (!= (-> *target* control unknown-surface00 name) 'launch-jump) - (< (+ 4096.0 (-> self root trans y)) (-> *target* control trans y)) - ) - (when (and *target* (< (-> self thresh-y) (-> *target* control trans y))) - (let ((a1-3 (res-lump-struct (-> self entity) 'continue-name structure))) - (when a1-3 - (let ((v1-36 (set-continue! *game-info* (the-as basic a1-3)))) - (load-commands-set! *level* (-> v1-36 load-commands)) - ) - ) - ) - (set! (-> self notify-player-passed-thru?) #t) - ) - (go launcherdoor-closed #f) - ) - (ja :num! (seek! max (-> self open-speed))) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior ((arg0 symbol)) + (if (not arg0) (sound-play "ldoor-open")) + (set! (-> self draw force-lod) 0) + (clear-collide-with-as (-> self root)) + (ja-no-eval :num! (seek!)) + (if arg0 (ja :num-func num-func-identity :frame-num max)) + (loop + (when (or (not *target*) + (!= (-> *target* control unknown-surface00 name) 'launch-jump) + (< (+ 4096.0 (-> self root trans y)) (-> *target* control trans y))) + (when (and *target* (< (-> self thresh-y) (-> *target* control trans y))) + (let ((a1-3 (res-lump-struct (-> self entity) 'continue-name structure))) + (when a1-3 + (let ((v1-36 (set-continue! *game-info* (the-as basic a1-3)))) (load-commands-set! *level* (-> v1-36 load-commands))))) + (set! (-> self notify-player-passed-thru?) #t)) + (go launcherdoor-closed #f)) + (ja :num! (seek! max (-> self open-speed))) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this launcherdoor) (arg0 entity-actor)) (set! (-> this notify-player-passed-thru?) #f) @@ -144,64 +96,31 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (cond - ((= (-> (if (-> this entity) - (-> this entity extra level) - (-> *level* level-default) - ) - name - ) - 'maincave - ) + ((= (-> (if (-> this entity) (-> this entity extra level) (-> *level* level-default)) name) 'maincave) (set! (-> this close-speed) 4.0) (initialize-skeleton this *launcherdoor-maincave-sg* '()) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0))) (else - (initialize-skeleton this *launcherdoor-sg* '()) - (ja-channel-set! 1) - (let ((s5-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-2 frame-num) 0.0) - ) - ) - ) + (initialize-skeleton this *launcherdoor-sg* '()) + (ja-channel-set! 1) + (let ((s5-2 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-2 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-2 frame-num) 0.0)))) (transform-post) (case (-> this entity extra level name) - (('jungle) - (set! (-> this draw shadow-mask) (the-as uint 28)) - ) - ) - (set! (-> this load-mode) (-> (if (-> this entity) - (-> this entity extra level) - (-> *level* level-default) - ) - name - ) - ) + (('jungle) (set! (-> this draw shadow-mask) (the-as uint 28)))) + (set! (-> this load-mode) (-> (if (-> this entity) (-> this entity extra level) (-> *level* level-default)) name)) (set! (-> this thresh-y) (+ -81920.0 (-> this root trans y))) (if (and *target* (= (-> *target* control unknown-surface00 name) 'launch-jump)) - (go launcherdoor-open #t) - (go launcherdoor-closed #t) - ) - (none) - ) + (go launcherdoor-open #t) + (go launcherdoor-closed #t)) + (none)) diff --git a/goal_src/jak1/levels/darkcave/darkcave-obs.gc b/goal_src/jak1/levels/darkcave/darkcave-obs.gc index b2b65f938b..c3cda9eba3 100644 --- a/goal_src/jak1/levels/darkcave/darkcave-obs.gc +++ b/goal_src/jak1/levels/darkcave/darkcave-obs.gc @@ -1,191 +1,139 @@ ;;-*-Lisp-*- (in-package goal) (bundles "DAR.DGO") - (require "engine/common-obs/generic-obs.gc") (require "levels/maincave/cavecrystal-light.gc") -;; name: darkcave-obs.gc -;; name in dgo: darkcave-obs -;; dgos: DAR, L1 - ;; DECOMP BEGINS (deftype cavecrystal (process-drawable) - ((root collide-shape :override) - (is-master? symbol) - (crystal-id int32) - (glow-u float) - (glow-wf-period int32) - (glow-wf-offset int32) - (prev-compute-glow-time time-frame) - (start-fade-time time-frame) - (end-fade-time time-frame) - (activated-time time-frame) - (last-updated-user-lighting time-frame) - (player-attack-id uint64) - (on-color-mult vector :inline) - (on-color-emissive vector :inline) - (off-color-mult vector :inline) - (off-color-emissive vector :inline) - ) + ((root collide-shape :override) + (is-master? symbol) + (crystal-id int32) + (glow-u float) + (glow-wf-period int32) + (glow-wf-offset int32) + (prev-compute-glow-time time-frame) + (start-fade-time time-frame) + (end-fade-time time-frame) + (activated-time time-frame) + (last-updated-user-lighting time-frame) + (player-attack-id uint64) + (on-color-mult vector :inline) + (on-color-emissive vector :inline) + (off-color-mult vector :inline) + (off-color-emissive vector :inline)) (:methods - (update-connected-crystals! (_type_) none) - (compute-glow (_type_) float) - ) + (update-connected-crystals! (_type_) none) + (compute-glow (_type_) float)) (:states - cavecrystal-active - cavecrystal-idle - ) - ) - + cavecrystal-active + cavecrystal-idle)) -(defskelgroup *cavecrystal-sg* cavecrystal cavecrystal-lod0-jg -1 - ((cavecrystal-lod0-mg (meters 20)) (cavecrystal-lod1-mg (meters 999999))) - :bounds (static-spherem 0 4.7 0 5.4) - ) +(defskelgroup *cavecrystal-sg* + cavecrystal + cavecrystal-lod0-jg + -1 + ((cavecrystal-lod0-mg (meters 20)) (cavecrystal-lod1-mg (meters 999999))) + :bounds (static-spherem 0 4.7 0 5.4)) (defmethod update-connected-crystals! ((this cavecrystal)) (when (-> this is-master?) (let ((v1-2 (current-time))) (when (!= (-> this last-updated-user-lighting) v1-2) (set! (-> this last-updated-user-lighting) v1-2) - (execute-connections *cavecrystal-light-control*) - ) - ) - ) - (none) - ) + (execute-connections *cavecrystal-light-control*)))) + (none)) (defmethod compute-glow ((this cavecrystal)) (set! (-> this prev-compute-glow-time) (-> *display* game-frame-counter)) (let* ((gp-1 (max 1 (+ (- 1 (-> this activated-time)) (-> *display* game-frame-counter)))) (f0-2 (/ (the float (mod (+ (current-time) (-> this glow-wf-offset)) (-> this glow-wf-period))) - (the float (-> this glow-wf-period)) - ) - ) - (f30-1 (* 0.1 (cos (* 65536.0 f0-2)))) - ) + (the float (-> this glow-wf-period)))) + (f30-1 (* 0.1 (cos (* 65536.0 f0-2))))) (cond ((>= (seconds 0.067) gp-1) - (let ((v1-11 (* 0.05 (the float gp-1)))) - (fmax 0.0 (fmin 2.0 (+ (* 2.0 v1-11) (* v1-11 f30-1)))) - ) - ) + (let ((v1-11 (* 0.05 (the float gp-1)))) (fmax 0.0 (fmin 2.0 (+ (* 2.0 v1-11) (* v1-11 f30-1)))))) ((>= (seconds 0.6) gp-1) - (let ((a2-0 (* 0.00625 (the float (+ gp-1 (seconds -0.067)))))) - (fmin 2.0 (+ (lerp 2.0 1.0 a2-0) f30-1)) - ) - ) - ((>= (-> this start-fade-time) gp-1) - (+ 1.0 f30-1) - ) + (let ((a2-0 (* 0.00625 (the float (+ gp-1 (seconds -0.067)))))) (fmin 2.0 (+ (lerp 2.0 1.0 a2-0) f30-1)))) + ((>= (-> this start-fade-time) gp-1) (+ 1.0 f30-1)) (else - (let ((v1-20 (fmin 1.0 (* 0.004761905 (the float (- gp-1 (-> this start-fade-time))))))) - (fmax 0.0 (- (+ 1.0 (* (- 1.0 v1-20) f30-1)) v1-20)) - ) - ) - ) - ) - ) + (let ((v1-20 (fmin 1.0 (* 0.004761905 (the float (- gp-1 (-> this start-fade-time))))))) + (fmax 0.0 (- (+ 1.0 (* (- 1.0 v1-20) f30-1)) v1-20))))))) (defstate cavecrystal-idle (cavecrystal) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (go cavecrystal-active) - ) - ) - ) - :trans (behavior () - (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn (text-id darkcave-light-hint) "sksp0333" (the-as entity #f) *entity-pool* (game-task none)) - ) - (update-connected-crystals! self) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (go cavecrystal-active)))) + :trans + (behavior () + (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id darkcave-light-hint) "sksp0333" (the-as entity #f) *entity-pool* (game-task none))) + (update-connected-crystals! self)) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate cavecrystal-active (cavecrystal) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (let ((v1-1 (-> block param 2))) - (cond - ((!= v1-1 (-> self player-attack-id)) - (set! (-> self player-attack-id) v1-1) - (set! (-> self activated-time) (-> *display* game-frame-counter)) - #t - ) - (else - #f - ) - ) - ) - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self activated-time) (-> *display* game-frame-counter)) - (set! (-> self prev-compute-glow-time) (-> *display* game-frame-counter)) - ) - :exit (behavior () - (stop! (-> self sound)) - (if (not (-> self is-master?)) - (logior! (-> self mask) (process-mask actor-pause)) - ) - ) - :trans (behavior () - (let ((f30-0 (compute-glow self))) - (set! (-> self glow-u) f30-0) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f28-0 1.993) - ) - (let ((s5-0 (-> self draw color-mult))) - (vector-! gp-0 (-> self on-color-mult) (-> self off-color-mult)) - (vector+*! s5-0 (-> self off-color-mult) gp-0 f30-0) - (set! (-> s5-0 x) (fmax 0.0 (fmin (-> s5-0 x) f28-0))) - (set! (-> s5-0 y) (fmax 0.0 (fmin (-> s5-0 y) f28-0))) - (set! (-> s5-0 z) (fmax 0.0 (fmin (-> s5-0 z) f28-0))) - (set! (-> s5-0 w) 1.0) - ) - (let ((s5-1 (-> self draw color-emissive))) - (vector-! gp-0 (-> self on-color-emissive) (-> self off-color-emissive)) - (vector+*! s5-1 (-> self off-color-emissive) gp-0 f30-0) - (set! (-> s5-1 x) (fmax 0.0 (fmin (-> s5-1 x) f28-0))) - (set! (-> s5-1 y) (fmax 0.0 (fmin (-> s5-1 y) f28-0))) - (set! (-> s5-1 z) (fmax 0.0 (fmin (-> s5-1 z) f28-0))) - (set! (-> s5-1 w) 0.0) - ) - ) - (cavecrystal-light-control-method-9 *cavecrystal-light-control* (-> self crystal-id) (-> self glow-u) self) - (update-connected-crystals! self) - (when (>= 0.0 f30-0) - (level-hint-spawn (text-id darkcave-light-end) "sksp0332" (the-as entity #f) *entity-pool* (game-task none)) - (go cavecrystal-idle) - ) - ) - (update! (-> self sound)) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (let ((v1-1 (-> block param 2))) + (cond + ((!= v1-1 (-> self player-attack-id)) + (set! (-> self player-attack-id) v1-1) + (set! (-> self activated-time) (-> *display* game-frame-counter)) + #t) + (else #f)))))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self activated-time) (-> *display* game-frame-counter)) + (set! (-> self prev-compute-glow-time) (-> *display* game-frame-counter))) + :exit + (behavior () + (stop! (-> self sound)) + (if (not (-> self is-master?)) (logior! (-> self mask) (process-mask actor-pause)))) + :trans + (behavior () + (let ((f30-0 (compute-glow self))) + (set! (-> self glow-u) f30-0) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f28-0 1.993)) + (let ((s5-0 (-> self draw color-mult))) + (vector-! gp-0 (-> self on-color-mult) (-> self off-color-mult)) + (vector+*! s5-0 (-> self off-color-mult) gp-0 f30-0) + (set! (-> s5-0 x) (fmax 0.0 (fmin (-> s5-0 x) f28-0))) + (set! (-> s5-0 y) (fmax 0.0 (fmin (-> s5-0 y) f28-0))) + (set! (-> s5-0 z) (fmax 0.0 (fmin (-> s5-0 z) f28-0))) + (set! (-> s5-0 w) 1.0)) + (let ((s5-1 (-> self draw color-emissive))) + (vector-! gp-0 (-> self on-color-emissive) (-> self off-color-emissive)) + (vector+*! s5-1 (-> self off-color-emissive) gp-0 f30-0) + (set! (-> s5-1 x) (fmax 0.0 (fmin (-> s5-1 x) f28-0))) + (set! (-> s5-1 y) (fmax 0.0 (fmin (-> s5-1 y) f28-0))) + (set! (-> s5-1 z) (fmax 0.0 (fmin (-> s5-1 z) f28-0))) + (set! (-> s5-1 w) 0.0))) + (cavecrystal-light-control-method-9 *cavecrystal-light-control* (-> self crystal-id) (-> self glow-u) self) + (update-connected-crystals! self) + (when (>= 0.0 f30-0) + (level-hint-spawn (text-id darkcave-light-end) "sksp0332" (the-as entity #f) *entity-pool* (game-task none)) + (go cavecrystal-idle))) + (update! (-> self sound))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod deactivate ((this cavecrystal)) - (if (nonzero? (-> this sound)) - (stop! (-> this sound)) - ) + (if (nonzero? (-> this sound)) (stop! (-> this sound))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod init-from-entity! ((this cavecrystal) (arg0 entity-actor)) (set! (-> this glow-u) 0.0) @@ -203,23 +151,18 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 19251.2 0.0 22118.4) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 4915.2) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this crystal-id) (actor-count-before (-> this link))) (set! (-> this is-master?) (= (-> this crystal-id) 3)) (set! (-> this glow-wf-period) (rand-vu-int-range 225 375)) (set! (-> this glow-wf-offset) (rand-vu-int-range 0 300)) - (if (-> this is-master?) - (logclear! (-> this mask) (process-mask actor-pause)) - ) + (if (-> this is-master?) (logclear! (-> this mask) (process-mask actor-pause))) (set! (-> this start-fade-time) - (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'timeout :default 8.0)))) - ) + (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'timeout :default 8.0))))) (process-drawable-from-entity! this arg0) (initialize-skeleton this *cavecrystal-sg* '()) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) @@ -227,19 +170,11 @@ (set! (-> this draw color-emissive quad) (-> this off-color-emissive quad)) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (cavecrystal-light-control-method-9 *cavecrystal-light-control* (-> this crystal-id) 0.0 this) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "crystal-on" :fo-max 80) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "crystal-on" :fo-max 80) (-> this root trans))) (go cavecrystal-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/demo/demo-obs.gc b/goal_src/jak1/levels/demo/demo-obs.gc index b9f3e24d97..aadedc1576 100644 --- a/goal_src/jak1/levels/demo/demo-obs.gc +++ b/goal_src/jak1/levels/demo/demo-obs.gc @@ -1,343 +1,198 @@ ;;-*-Lisp-*- (in-package goal) (bundles "DEM.DGO") - (require "engine/target/logic-target.gc") (require "levels/demo/static-screen.gc") - -;; name: demo-obs.gc -;; name in dgo: demo-obs -;; dgos: DEM, L1 - -(define-extern static-screen-spawn (function int texture-id texture-id texture-id time-frame symbol process-tree (pointer static-screen))) +(define-extern static-screen-spawn + (function int texture-id texture-id texture-id time-frame symbol process-tree (pointer static-screen))) ;; DECOMP BEGINS (defstate target-demo (target) :event target-generic-event-handler - :code (behavior () - (if *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 hour) 12) - ) - (set-setting! 'allow-pause #f 0.0 0) - (set-setting! 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - (ja-channel-set! 0) - (ja-post) - (load-state-want-levels 'demo 'village1) - (load-state-want-vis 'vi1) - (case (scf-get-territory) - ((GAME_TERRITORY_SCEI) - (let ((gp-0 (ppointer->handle (static-screen-spawn - 6 - (new 'static 'texture-id :page #x27c) - (new 'static 'texture-id :index #x1 :page #x27c) - (new 'static 'texture-id :index #x2 :page #x27c) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-0) - (suspend) - ) - ) - (let ((gp-1 (ppointer->handle (static-screen-spawn - 7 - (new 'static 'texture-id :page #x27d) - (new 'static 'texture-id :index #x1 :page #x27d) - (new 'static 'texture-id :index #x2 :page #x27d) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-1) - (suspend) - ) - ) - (let ((gp-2 (ppointer->handle (static-screen-spawn - 8 - (new 'static 'texture-id :page #x2f0) - (new 'static 'texture-id :index #x1 :page #x2f0) - (new 'static 'texture-id :index #x2 :page #x2f0) - (seconds 60) - #t - self - ) - ) - ) - ) - (while (handle->process gp-2) - (suspend) - ) - ) - ) - ((GAME_TERRITORY_SCEE) - (case (-> *setting-control* current language) - (((language-enum french)) - (let ((gp-3 (ppointer->handle (static-screen-spawn - 10 - (new 'static 'texture-id :page #x63f) - (new 'static 'texture-id :index #x1 :page #x63f) - (new 'static 'texture-id :index #x2 :page #x63f) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-3) - (suspend) - ) - ) - ) - (((language-enum german)) - (let ((gp-4 (ppointer->handle (static-screen-spawn - 11 - (new 'static 'texture-id :page #x640) - (new 'static 'texture-id :index #x1 :page #x640) - (new 'static 'texture-id :index #x2 :page #x640) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-4) - (suspend) - ) - ) - ) - (((language-enum italian)) - (let ((gp-5 (ppointer->handle (static-screen-spawn - 12 - (new 'static 'texture-id :page #x641) - (new 'static 'texture-id :index #x1 :page #x641) - (new 'static 'texture-id :index #x2 :page #x641) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-5) - (suspend) - ) - ) - ) - (((language-enum spanish)) - (let ((gp-6 (ppointer->handle (static-screen-spawn - 13 - (new 'static 'texture-id :page #x642) - (new 'static 'texture-id :index #x1 :page #x642) - (new 'static 'texture-id :index #x2 :page #x642) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-6) - (suspend) - ) - ) - ) - (else - (let ((gp-7 (ppointer->handle (static-screen-spawn - 2 - (new 'static 'texture-id :page #x5cd) - (new 'static 'texture-id :index #x1 :page #x5cd) - (new 'static 'texture-id :index #x2 :page #x5cd) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-7) - (suspend) - ) - ) - ) - ) - (let ((gp-8 (ppointer->handle (static-screen-spawn - 3 - (new 'static 'texture-id :page #x5ce) - (new 'static 'texture-id :index #x1 :page #x5ce) - (new 'static 'texture-id :index #x2 :page #x5ce) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-8) - (suspend) - ) - ) - (case (-> *setting-control* current language) - (((language-enum french)) - (let ((gp-9 (ppointer->handle (static-screen-spawn - 15 - (new 'static 'texture-id :page #x644) - (new 'static 'texture-id :index #x1 :page #x644) - (new 'static 'texture-id :index #x2 :page #x644) - (seconds 60) - #t - self - ) - ) - ) - ) - (while (handle->process gp-9) - (suspend) - ) - ) - ) - (((language-enum german)) - (let ((gp-10 (ppointer->handle (static-screen-spawn - 16 - (new 'static 'texture-id :page #x645) - (new 'static 'texture-id :index #x1 :page #x645) - (new 'static 'texture-id :index #x2 :page #x645) - (seconds 60) - #t - self - ) - ) - ) - ) - (while (handle->process gp-10) - (suspend) - ) - ) - ) - (((language-enum italian)) - (let ((gp-11 (ppointer->handle (static-screen-spawn - 17 - (new 'static 'texture-id :page #x646) - (new 'static 'texture-id :index #x1 :page #x646) - (new 'static 'texture-id :index #x2 :page #x646) - (seconds 60) - #t - self - ) - ) - ) - ) - (while (handle->process gp-11) - (suspend) - ) - ) - ) - (((language-enum spanish)) - (let ((gp-12 (ppointer->handle (static-screen-spawn - 18 - (new 'static 'texture-id :page #x647) - (new 'static 'texture-id :index #x1 :page #x647) - (new 'static 'texture-id :index #x2 :page #x647) - (seconds 60) - #t - self - ) - ) - ) - ) - (while (handle->process gp-12) - (suspend) - ) - ) - ) - (else - (let ((gp-13 (ppointer->handle (static-screen-spawn - 14 - (new 'static 'texture-id :page #x643) - (new 'static 'texture-id :index #x1 :page #x643) - (new 'static 'texture-id :index #x2 :page #x643) - (seconds 60) - #t - self - ) - ) - ) - ) - (while (handle->process gp-13) - (suspend) - ) - ) - ) - ) - ) - (else - (let ((gp-14 (ppointer->handle (static-screen-spawn - 2 - (new 'static 'texture-id :page #x5cd) - (new 'static 'texture-id :index #x1 :page #x5cd) - (new 'static 'texture-id :index #x2 :page #x5cd) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-14) - (suspend) - ) - ) - (let ((gp-15 (ppointer->handle (static-screen-spawn - 3 - (new 'static 'texture-id :page #x5ce) - (new 'static 'texture-id :index #x1 :page #x5ce) - (new 'static 'texture-id :index #x2 :page #x5ce) - (seconds 5) - #f - self - ) - ) - ) - ) - (while (handle->process gp-15) - (suspend) - ) - ) - (let ((gp-16 (ppointer->handle (static-screen-spawn - 4 - (new 'static 'texture-id :page #x5cf) - (new 'static 'texture-id :index #x1 :page #x5cf) - (new 'static 'texture-id :index #x2 :page #x5cf) - (seconds 60) - #t - self - ) - ) - ) - ) - (while (handle->process gp-16) - (suspend) - ) - ) - ) - ) - (process-spawn-function process (lambda () - (set! (-> *setting-control* default bg-a) 0.0) - (start 'play (get-continue-by-name *game-info* "village1-demo-convo")) - ) - ) - (loop - (suspend) - ) - ) - :post target-no-move-post - ) + :code + (behavior () + (if *time-of-day-proc* (set! (-> *time-of-day-proc* 0 hour) 12)) + (set-setting! 'allow-pause #f 0.0 0) + (set-setting! 'allow-progress #f 0.0 0) + (apply-settings *setting-control*) + (ja-channel-set! 0) + (ja-post) + (load-state-want-levels 'demo 'village1) + (load-state-want-vis 'vi1) + (case (scf-get-territory) + ((GAME_TERRITORY_SCEI) + (let ((gp-0 (ppointer->handle (static-screen-spawn 6 + (new 'static 'texture-id :page #x27c) + (new 'static 'texture-id :index #x1 :page #x27c) + (new 'static 'texture-id :index #x2 :page #x27c) + (seconds 5) + #f + self)))) + (while (handle->process gp-0) + (suspend))) + (let ((gp-1 (ppointer->handle (static-screen-spawn 7 + (new 'static 'texture-id :page #x27d) + (new 'static 'texture-id :index #x1 :page #x27d) + (new 'static 'texture-id :index #x2 :page #x27d) + (seconds 5) + #f + self)))) + (while (handle->process gp-1) + (suspend))) + (let ((gp-2 (ppointer->handle (static-screen-spawn 8 + (new 'static 'texture-id :page #x2f0) + (new 'static 'texture-id :index #x1 :page #x2f0) + (new 'static 'texture-id :index #x2 :page #x2f0) + (seconds 60) + #t + self)))) + (while (handle->process gp-2) + (suspend)))) + ((GAME_TERRITORY_SCEE) + (case (-> *setting-control* current language) + (((language-enum french)) + (let ((gp-3 (ppointer->handle (static-screen-spawn 10 + (new 'static 'texture-id :page #x63f) + (new 'static 'texture-id :index #x1 :page #x63f) + (new 'static 'texture-id :index #x2 :page #x63f) + (seconds 5) + #f + self)))) + (while (handle->process gp-3) + (suspend)))) + (((language-enum german)) + (let ((gp-4 (ppointer->handle (static-screen-spawn 11 + (new 'static 'texture-id :page #x640) + (new 'static 'texture-id :index #x1 :page #x640) + (new 'static 'texture-id :index #x2 :page #x640) + (seconds 5) + #f + self)))) + (while (handle->process gp-4) + (suspend)))) + (((language-enum italian)) + (let ((gp-5 (ppointer->handle (static-screen-spawn 12 + (new 'static 'texture-id :page #x641) + (new 'static 'texture-id :index #x1 :page #x641) + (new 'static 'texture-id :index #x2 :page #x641) + (seconds 5) + #f + self)))) + (while (handle->process gp-5) + (suspend)))) + (((language-enum spanish)) + (let ((gp-6 (ppointer->handle (static-screen-spawn 13 + (new 'static 'texture-id :page #x642) + (new 'static 'texture-id :index #x1 :page #x642) + (new 'static 'texture-id :index #x2 :page #x642) + (seconds 5) + #f + self)))) + (while (handle->process gp-6) + (suspend)))) + (else + (let ((gp-7 (ppointer->handle (static-screen-spawn 2 + (new 'static 'texture-id :page #x5cd) + (new 'static 'texture-id :index #x1 :page #x5cd) + (new 'static 'texture-id :index #x2 :page #x5cd) + (seconds 5) + #f + self)))) + (while (handle->process gp-7) + (suspend))))) + (let ((gp-8 (ppointer->handle (static-screen-spawn 3 + (new 'static 'texture-id :page #x5ce) + (new 'static 'texture-id :index #x1 :page #x5ce) + (new 'static 'texture-id :index #x2 :page #x5ce) + (seconds 5) + #f + self)))) + (while (handle->process gp-8) + (suspend))) + (case (-> *setting-control* current language) + (((language-enum french)) + (let ((gp-9 (ppointer->handle (static-screen-spawn 15 + (new 'static 'texture-id :page #x644) + (new 'static 'texture-id :index #x1 :page #x644) + (new 'static 'texture-id :index #x2 :page #x644) + (seconds 60) + #t + self)))) + (while (handle->process gp-9) + (suspend)))) + (((language-enum german)) + (let ((gp-10 (ppointer->handle (static-screen-spawn 16 + (new 'static 'texture-id :page #x645) + (new 'static 'texture-id :index #x1 :page #x645) + (new 'static 'texture-id :index #x2 :page #x645) + (seconds 60) + #t + self)))) + (while (handle->process gp-10) + (suspend)))) + (((language-enum italian)) + (let ((gp-11 (ppointer->handle (static-screen-spawn 17 + (new 'static 'texture-id :page #x646) + (new 'static 'texture-id :index #x1 :page #x646) + (new 'static 'texture-id :index #x2 :page #x646) + (seconds 60) + #t + self)))) + (while (handle->process gp-11) + (suspend)))) + (((language-enum spanish)) + (let ((gp-12 (ppointer->handle (static-screen-spawn 18 + (new 'static 'texture-id :page #x647) + (new 'static 'texture-id :index #x1 :page #x647) + (new 'static 'texture-id :index #x2 :page #x647) + (seconds 60) + #t + self)))) + (while (handle->process gp-12) + (suspend)))) + (else + (let ((gp-13 (ppointer->handle (static-screen-spawn 14 + (new 'static 'texture-id :page #x643) + (new 'static 'texture-id :index #x1 :page #x643) + (new 'static 'texture-id :index #x2 :page #x643) + (seconds 60) + #t + self)))) + (while (handle->process gp-13) + (suspend)))))) + (else + (let ((gp-14 (ppointer->handle (static-screen-spawn 2 + (new 'static 'texture-id :page #x5cd) + (new 'static 'texture-id :index #x1 :page #x5cd) + (new 'static 'texture-id :index #x2 :page #x5cd) + (seconds 5) + #f + self)))) + (while (handle->process gp-14) + (suspend))) + (let ((gp-15 (ppointer->handle (static-screen-spawn 3 + (new 'static 'texture-id :page #x5ce) + (new 'static 'texture-id :index #x1 :page #x5ce) + (new 'static 'texture-id :index #x2 :page #x5ce) + (seconds 5) + #f + self)))) + (while (handle->process gp-15) + (suspend))) + (let ((gp-16 (ppointer->handle (static-screen-spawn 4 + (new 'static 'texture-id :page #x5cf) + (new 'static 'texture-id :index #x1 :page #x5cf) + (new 'static 'texture-id :index #x2 :page #x5cf) + (seconds 60) + #t + self)))) + (while (handle->process gp-16) + (suspend))))) + (process-spawn-function process + (lambda () + (set! (-> *setting-control* default bg-a) 0.0) + (start 'play (get-continue-by-name *game-info* "village1-demo-convo")))) + (loop + (suspend))) + :post target-no-move-post) diff --git a/goal_src/jak1/levels/demo/static-screen.gc b/goal_src/jak1/levels/demo/static-screen.gc index b95af9ae35..71a44ee0e9 100644 --- a/goal_src/jak1/levels/demo/static-screen.gc +++ b/goal_src/jak1/levels/demo/static-screen.gc @@ -1,140 +1,108 @@ ;;-*-Lisp-*- (in-package goal) (bundles "DEM.DGO" "TIT.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") (require "engine/ui/hud-h.gc") (require "engine/game/settings.gc") -;; name: static-screen.gc -;; name in dgo: static-screen -;; dgos: DEM, L1, TIT - ;; DECOMP BEGINS (deftype static-screen (process) - ((part sparticle-launch-control 1) - (state-time time-frame) - ) - (:state-methods - (idle int time-frame symbol) - ) - ) - + ((part sparticle-launch-control 1) + (state-time time-frame)) + (:state-methods (idle int time-frame symbol))) (defmethod relocate ((this static-screen) (arg0 int)) (let ((v1-0 *kernel-context*)) (set! (-> v1-0 relocating-process) this) (set! (-> v1-0 relocating-min) (the-as int (&-> this type))) - (set! (-> v1-0 relocating-max) - (the-as int (+ (+ (-> this allocated-length) -4 (-> process size)) (the-as int this))) - ) - (set! (-> v1-0 relocating-offset) arg0) - ) + (set! (-> v1-0 relocating-max) (the-as int (+ (+ (-> this allocated-length) -4 (-> process size)) (the-as int this)))) + (set! (-> v1-0 relocating-offset) arg0)) (dotimes (v1-2 1) - (if (nonzero? (-> this part v1-2)) - (&+! (-> this part v1-2) arg0) - ) - ) - (the-as static-screen ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this part v1-2)) (&+! (-> this part v1-2) arg0))) + (the-as static-screen ((method-of-type process relocate) this arg0))) (defmethod deactivate ((this static-screen)) (dotimes (s5-0 1) - (if (nonzero? (-> this part s5-0)) - (kill-and-free-particles (-> this part s5-0)) - ) - ) + (if (nonzero? (-> this part s5-0)) (kill-and-free-particles (-> this part s5-0)))) ((method-of-type process deactivate) this) - (none) - ) + (none)) (defpart 2966 - :init-specs ((:texture (new 'static 'texture-id :page #x5c6)) - (:num 1.0) - (:y (meters 1.18)) - (:scale-x (meters 15)) - (:scale-y (meters 6.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x5c6)) + (:num 1.0) + (:y (meters 1.18)) + (:scale-x (meters 15)) + (:scale-y (meters 6.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)))) (defpart 2967 - :init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x5c6)) - (:num 1.0) - (:y (meters -1.264)) - (:scale-x (meters 15)) - (:scale-y (meters 3.25)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1 :page #x5c6)) + (:num 1.0) + (:y (meters -1.264)) + (:scale-x (meters 15)) + (:scale-y (meters 3.25)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)))) (defpart 2968 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x5c6)) - (:num 1.0) - (:y (meters -2.482)) - (:scale-x (meters 15)) - (:scale-y (meters 1.625)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9 bit13)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x5c6)) + (:num 1.0) + (:y (meters -2.482)) + (:scale-x (meters 15)) + (:scale-y (meters 1.625)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9 bit13)))) (defpartgroup group-part-screen1 :id 707 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2966 :flags (launch-asap)) (sp-item 2967 :flags (launch-asap)) (sp-item 2968 :flags (launch-asap))) - ) + :parts ((sp-item 2966 :flags (launch-asap)) (sp-item 2967 :flags (launch-asap)) (sp-item 2968 :flags (launch-asap)))) (defstate idle (static-screen) :virtual #t - :enter (behavior ((arg0 int) (arg1 time-frame) (arg2 symbol)) - (set! (-> *setting-control* current bg-a) 1.0) - (set! (-> *setting-control* default bg-a) 0.0) - (add-setting! 'common-page 'set 0.0 (ash 1 (+ arg0 1))) - ) - :trans (behavior () - (hide-hud-quick) - (spawn (-> self part 0) *zero-vector*) - 0 - ) - :code (behavior ((arg0 int) (arg1 time-frame) (arg2 symbol)) - (local-vars (v1-6 symbol)) - (set-time! (-> self state-time)) - (until v1-6 - (suspend) - (set! v1-6 (or (and (> arg1 0) (time-elapsed? (-> self state-time) arg1)) - (and arg2 - (time-elapsed? (-> self state-time) (seconds 1)) - (cpad-pressed? 0 select start triangle circle x square) - ) - ) - ) - ) - (set! (-> *setting-control* default bg-a) 1.0) - (while (!= (-> *setting-control* current bg-a) (-> *setting-control* default bg-a)) + :enter + (behavior ((arg0 int) (arg1 time-frame) (arg2 symbol)) + (set! (-> *setting-control* current bg-a) 1.0) + (set! (-> *setting-control* default bg-a) 0.0) + (add-setting! 'common-page 'set 0.0 (ash 1 (+ arg0 1)))) + :trans + (behavior () + (hide-hud-quick) + (spawn (-> self part 0) *zero-vector*) + 0) + :code + (behavior ((arg0 int) (arg1 time-frame) (arg2 symbol)) + (local-vars (v1-6 symbol)) + (set-time! (-> self state-time)) + (until v1-6 + (suspend) + (set! v1-6 + (or (and (> arg1 0) (time-elapsed? (-> self state-time) arg1)) + (and arg2 (time-elapsed? (-> self state-time) (seconds 1)) (cpad-pressed? 0 select start triangle circle x square))))) + (set! (-> *setting-control* default bg-a) 1.0) + (while (!= (-> *setting-control* current bg-a) (-> *setting-control* default bg-a)) + (suspend)) + (remove-setting! 'common-page) (suspend) - ) - (remove-setting! 'common-page) - (suspend) - 0 - ) - ) + 0)) (defbehavior static-screen-init-by-other static-screen ((arg0 int) (arg1 texture-id) (arg2 texture-id) (arg3 texture-id) (arg4 time-frame) (arg5 symbol)) (let ((s3-0 (lookup-part-group-by-name "group-part-screen1"))) @@ -143,20 +111,9 @@ (set! (-> *part-id-table* 2967 init-specs 0 initial-valuef) (the-as float arg2)) (set! (-> *part-id-table* 2968 init-specs 0 initial-valuef) (the-as float arg3)) (set! (-> self part 0) (create-launch-control (the-as sparticle-launch-group s3-0) self)) - (go-virtual idle arg0 arg4 arg5) - ) - ) + (go-virtual idle arg0 arg4 arg5))) 0 - (none) - ) + (none)) -(defun static-screen-spawn ((arg0 int) - (arg1 texture-id) - (arg2 texture-id) - (arg3 texture-id) - (arg4 time-frame) - (arg5 symbol) - (arg6 process-tree) - ) - (process-spawn static-screen arg0 arg1 arg2 arg3 arg4 arg5 :to arg6) - ) +(defun static-screen-spawn ((arg0 int) (arg1 texture-id) (arg2 texture-id) (arg3 texture-id) (arg4 time-frame) (arg5 symbol) (arg6 process-tree)) + (process-spawn static-screen arg0 arg1 arg2 arg3 arg4 arg5 :to arg6)) diff --git a/goal_src/jak1/levels/finalboss/final-door.gc b/goal_src/jak1/levels/finalboss/final-door.gc index aef2d49490..bc0ba7ac4f 100644 --- a/goal_src/jak1/levels/finalboss/final-door.gc +++ b/goal_src/jak1/levels/finalboss/final-door.gc @@ -1,122 +1,97 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "engine/game/main.gc") (require "engine/physics/trajectory.gc") (require "engine/game/task/task-control.gc") (require "engine/target/logic-target.gc") - -;; name: final-door.gc -;; name in dgo: final-door -;; dgos: FIN, L1 - (define-extern power-left type) ;; DECOMP BEGINS -(deftype fin-door (process-hidden) - () - ) - +(deftype fin-door (process-hidden) ()) -(deftype final-door (process-drawable) - () +(deftype final-door (process-drawable) () (:state-methods - idle - ) + idle) (:methods - (final-door-method-21 (_type_) none) - (open (symbol) _type_ :state) - ) - ) + (final-door-method-21 (_type_) none) + (open (symbol) _type_ :state))) +(defskelgroup *power-left-sg* + power-left + power-left-lod0-jg + power-left-idle-ja + ((power-left-lod0-mg (meters 999999))) + :bounds (static-spherem 0 11 0 12)) -(defskelgroup *power-left-sg* power-left power-left-lod0-jg power-left-idle-ja - ((power-left-lod0-mg (meters 999999))) - :bounds (static-spherem 0 11 0 12) - ) +(defskelgroup *power-right-sg* + power-right + power-right-lod0-jg + power-right-idle-ja + ((power-right-lod0-mg (meters 999999))) + :bounds (static-spherem 0 11 0 12)) -(defskelgroup *power-right-sg* power-right power-right-lod0-jg power-right-idle-ja - ((power-right-lod0-mg (meters 999999))) - :bounds (static-spherem 0 11 0 12) - ) - -(defskelgroup *powercellalt-sg* powercellalt powercellalt-lod0-jg powercellalt-idle-ja - ((powercellalt-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) +(defskelgroup *powercellalt-sg* + powercellalt + powercellalt-lod0-jg + powercellalt-idle-ja + ((powercellalt-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) (defstate idle (final-door) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('open) - (go-virtual open #f) - ) - ) - ) - :code (behavior () - (transform-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('open) (go-virtual open #f)))) + :code + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) (defstate open (final-door) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('brightness) - (let ((f0-0 (the-as float (-> block param 0))) - (f1-0 (the-as float (-> block param 1))) - ) - (set-vector! (-> self draw color-mult) f0-0 f0-0 f0-0 f0-0) - (let ((v0-0 (-> self draw color-emissive))) - (set! (-> v0-0 x) f1-0) - (set! (-> v0-0 y) f1-0) - (set! (-> v0-0 z) f1-0) - (set! (-> v0-0 w) f1-0) - v0-0 - ) - ) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (case (-> self type) - ((power-left) - (ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! max 0.353) :frame-num 0.0) - (until (ja-done? 0) - (transform-post) - (suspend) - (ja :num! (seek! max 0.353)) - ) - ) - (else - (ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! max 0.353) :frame-num 0.0) - (until (ja-done? 0) - (transform-post) - (suspend) - (ja :num! (seek! max 0.353)) - ) - ) - ) - (transform-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('brightness) + (let ((f0-0 (the-as float (-> block param 0))) + (f1-0 (the-as float (-> block param 1)))) + (set-vector! (-> self draw color-mult) f0-0 f0-0 f0-0 f0-0) + (let ((v0-0 (-> self draw color-emissive))) + (set! (-> v0-0 x) f1-0) + (set! (-> v0-0 y) f1-0) + (set! (-> v0-0 z) f1-0) + (set! (-> v0-0 w) f1-0) + v0-0))))) + :code + (behavior ((arg0 symbol)) + (case (-> self type) + ((power-left) + (ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! max 0.353) :frame-num 0.0) + (until (ja-done? 0) + (transform-post) + (suspend) + (ja :num! (seek! max 0.353)))) + (else + (ja-no-eval :group! (-> self draw art-group data 2) :num! (seek! max 0.353) :frame-num 0.0) + (until (ja-done? 0) + (transform-post) + (suspend) + (ja :num! (seek! max 0.353))))) + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) (defmethod init-from-entity! ((this final-door) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -124,152 +99,113 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 45056.0 0.0 49152.0) - (set-root-prim! s4-0 s3-0) - ) + (set-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (final-door-method-21 this) (go (method-of-object this idle)) - (none) - ) - -(deftype power-left (final-door) - () - ) - + (none)) -(deftype power-right (final-door) - () - ) +(deftype power-left (final-door) ()) +(deftype power-right (final-door) ()) (defstate idle (power-left) :virtual #t - :code (behavior () - (ja-post) - (loop - (if (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and (not (logtest? (-> *target* state-flags) (state-flags grabbed))) - (and (>= (-> *game-info* fuel) 100.0) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (= (get-task-status (game-task finalboss-movies)) (task-status need-reward-speech)) - (send-event - *target* - 'change-mode - 'final-door - (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-right))) - (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left))) - ) - ) - ) - ) - (process-entity-status! self (entity-perm-status complete) #t) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (ja-post) + (loop + (if (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (not (logtest? (-> *target* state-flags) (state-flags grabbed))) + (and (>= (-> *game-info* fuel) 100.0) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (= (get-task-status (game-task finalboss-movies)) (task-status need-reward-speech)) + (send-event *target* + 'change-mode + 'final-door + (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-right))) + (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left))))))) + (process-entity-status! self (entity-perm-status complete) #t)) + (suspend)))) (defmethod final-door-method-21 ((this power-left)) (initialize-skeleton this *power-left-sg* '()) 0 - (none) - ) + (none)) (defmethod final-door-method-21 ((this power-right)) (initialize-skeleton this *power-right-sg* '()) 0 - (none) - ) + (none)) (deftype powercellalt (process-drawable) - ((root collide-shape-moving :override) - (jump-pos vector :inline) - (base vector :inline) - (index int32) - ) + ((root collide-shape-moving :override) + (jump-pos vector :inline) + (base vector :inline) + (index int32)) (:methods - (powercellalt-method-20 () none) - (jump () _type_ :state) - (idle () _type_ :state) - ) - ) - + (powercellalt-method-20 () none) + (jump () _type_ :state) + (idle () _type_ :state))) (defstate jump (powercellalt) :virtual #t - :code (behavior () - (sound-play "cell-prize") - (let ((gp-1 (new 'stack 'trajectory))) - (set! (-> self base y) (-> self jump-pos y)) - (setup-from-to-duration! gp-1 (-> self root trans) (-> self jump-pos) 300.0 -2.2755556) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (let ((f0-2 (the float (- (current-time) (-> self state-time))))) - (eval-position! gp-1 f0-2 (-> self root trans)) - ) - (transform-post) - (spawn (-> self part) (the-as vector (-> self root root-prim prim-core))) - (suspend) - (if (nonzero? (-> self skel)) - (ja :num! (loop! 0.5)) - ) - ) - ) - (set! (-> self root trans quad) (-> self jump-pos quad)) - (set! (-> self base quad) (-> self root trans quad)) - (transform-post) - (sound-play "land-pcmetal" :pitch 2) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 4) - -1 - #f - #f - #f - (-> self root root-prim prim-core) - :to *entity-pool* - ) - (go-virtual idle) - ) - ) + :code + (behavior () + (sound-play "cell-prize") + (let ((gp-1 (new 'stack 'trajectory))) + (set! (-> self base y) (-> self jump-pos y)) + (setup-from-to-duration! gp-1 (-> self root trans) (-> self jump-pos) 300.0 -2.2755556) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (let ((f0-2 (the float (- (current-time) (-> self state-time))))) (eval-position! gp-1 f0-2 (-> self root trans))) + (transform-post) + (spawn (-> self part) (the-as vector (-> self root root-prim prim-core))) + (suspend) + (if (nonzero? (-> self skel)) (ja :num! (loop! 0.5))))) + (set! (-> self root trans quad) (-> self jump-pos quad)) + (set! (-> self base quad) (-> self root trans quad)) + (transform-post) + (sound-play "land-pcmetal" :pitch 2) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 4) + -1 + #f + #f + #f + (-> self root root-prim prim-core) + :to + *entity-pool*) + (go-virtual idle))) (defstate idle (powercellalt) :virtual #t - :code (behavior () - (loop - (vector<-cspace! - (-> self root trans) - (-> (the-as process-drawable (-> self parent 0)) node-list data (-> self index)) - ) - (transform-post) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (vector<-cspace! (-> self root trans) (-> (the-as process-drawable (-> self parent 0)) node-list data (-> self index))) + (transform-post) + (suspend)))) (defbehavior powercellalt-init-by-other powercellalt ((arg0 entity-actor) (arg1 vector) (arg2 vector) (arg3 int)) (set! (-> self entity) arg0) (let ((s3-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s3-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s3-0 reaction) default-collision-reaction) - (set! (-> s3-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s3-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (collide-kind powerup)) (set! (-> s2-0 collide-with) (collide-kind target)) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) - (set-root-prim! s3-0 s2-0) - ) + (set-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) s3-0) - ) + (set! (-> self root) s3-0)) (set! (-> self root trans quad) (-> arg1 quad)) (set! (-> self jump-pos quad) (-> arg2 quad)) (set-vector! (-> self root scale) 0.5 0.5 0.5 1.0) @@ -280,114 +216,71 @@ (-> self root trans) (-> self jump-pos) (go-virtual jump) - (none) - ) + (none)) (defstate target-final-door (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - ((-> target-grab event) proc argc message block) - ) - :enter (behavior ((arg0 basic) (arg1 handle)) - (send-event *camera* 'change-to-entity-by-name "camera-403") - (set! (-> self control unknown-surface00) *empty-mods*) - (logior! (-> self state-flags) (state-flags invulnerable grabbed)) - (set-setting! 'allow-progress #f 0.0 0) - ) - :exit (behavior () - (send-event *camera* 'change-state *camera-base-mode* (seconds 0.2)) - (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) - (target-exit) - (remove-setting! 'allow-progress) - ) - :trans (behavior () - (set-letterbox-frames (seconds 0.017)) - ) - :code (behavior ((arg0 basic) (arg1 handle)) - (local-vars (sv-144 process) (sv-160 vector) (sv-176 process) (sv-192 vector)) - (let ((a0-2 (get-task-control (game-task finalboss-movies)))) - (save-reminder a0-2 (logior (get-reminder a0-2 0) 2) 0) - ) - (move-to-point! (-> self control) (new 'static 'vector :x 11368946.0 :y 2215900.2 :z -19405602.0 :w 1.0)) - (set-quaternion! (-> self control) (the-as quaternion (new 'static 'vector :y -0.8472 :w 0.5312))) - (rot->dir-targ! (-> self control)) - (transform-post) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! eichar-shocked-ja :num! (seek! (ja-aframe 18.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 18.0 0))) - ) - (let ((s4-3 (-> (handle->process (the-as handle arg0)) entity)) - (s3-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg neckB))) - ) - (dotimes (s2-0 50) - (when (handle->process (the-as handle arg0)) - (let ((s1-0 (handle->process (the-as handle arg0))) - (s0-0 (+ s2-0 4)) - ) - (set! sv-160 - (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable s1-0) node-list data s0-0)) - ) - (set! sv-144 (get-process *default-dead-pool* powercellalt #x4000)) - (when sv-144 - (let ((t9-16 (method-of-type powercellalt activate))) - (t9-16 (the-as powercellalt sv-144) s1-0 'powercellalt (the-as pointer #x70004000)) - ) - (run-now-in-process sv-144 powercellalt-init-by-other s4-3 s3-1 sv-160 s0-0) - (-> sv-144 ppointer) - ) - ) - ) - (let ((s1-1 (current-time))) - (until (time-elapsed? s1-1 (seconds 0.1)) - (suspend) - ) - ) - (when (handle->process arg1) - (let ((s1-2 (handle->process arg1)) - (s0-1 (+ s2-0 4)) - ) - (set! sv-192 - (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable s1-2) node-list data s0-1)) - ) - (set! sv-176 (get-process *default-dead-pool* powercellalt #x4000)) - (when sv-176 - (let ((t9-20 (method-of-type powercellalt activate))) - (t9-20 (the-as powercellalt sv-176) s1-2 'powercellalt (the-as pointer #x70004000)) - ) - (run-now-in-process sv-176 powercellalt-init-by-other s4-3 s3-1 sv-192 s0-1) - (-> sv-176 ppointer) - ) - ) - ) - (let ((s1-3 (current-time))) - (until (time-elapsed? s1-3 (seconds 0.1)) - (suspend) - ) - ) - ) - ) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 2)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + ((-> target-grab event) proc argc message block)) + :enter + (behavior ((arg0 basic) (arg1 handle)) + (send-event *camera* 'change-to-entity-by-name "camera-403") + (set! (-> self control unknown-surface00) *empty-mods*) + (logior! (-> self state-flags) (state-flags invulnerable grabbed)) + (set-setting! 'allow-progress #f 0.0 0)) + :exit + (behavior () + (send-event *camera* 'change-state *camera-base-mode* (seconds 0.2)) + (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) + (target-exit) + (remove-setting! 'allow-progress)) + :trans + (behavior () + (set-letterbox-frames (seconds 0.017))) + :code + (behavior ((arg0 basic) (arg1 handle)) + (local-vars (sv-144 process) (sv-160 vector) (sv-176 process) (sv-192 vector)) + (let ((a0-2 (get-task-control (game-task finalboss-movies)))) (save-reminder a0-2 (logior (get-reminder a0-2 0) 2) 0)) + (move-to-point! (-> self control) (new 'static 'vector :x 11368946.0 :y 2215900.2 :z -19405602.0 :w 1.0)) + (set-quaternion! (-> self control) (the-as quaternion (new 'static 'vector :y -0.8472 :w 0.5312))) + (rot->dir-targ! (-> self control)) + (transform-post) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! eichar-shocked-ja :num! (seek! (ja-aframe 18.0 0)) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (let ((v0-22 (entity-by-name "sage-finalboss-1")) - (a1-26 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-26 from) self) - (set! (-> a1-26 num-params) 0) - (set! (-> a1-26 message) 'play-anim) - (let ((v1-70 v0-22)) - (send-event-function - (if v1-70 - (-> v1-70 extra process) - ) - a1-26 - ) - ) - ) - (go target-stance) - ) - :post target-no-stick-post - ) + (ja :num! (seek! (ja-aframe 18.0 0)))) + (let ((s4-3 (-> (handle->process (the-as handle arg0)) entity)) + (s3-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg neckB)))) + (dotimes (s2-0 50) + (when (handle->process (the-as handle arg0)) + (let ((s1-0 (handle->process (the-as handle arg0))) + (s0-0 (+ s2-0 4))) + (set! sv-160 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable s1-0) node-list data s0-0))) + (set! sv-144 (get-process *default-dead-pool* powercellalt #x4000)) + (when sv-144 + (let ((t9-16 (method-of-type powercellalt activate))) + (t9-16 (the-as powercellalt sv-144) s1-0 'powercellalt (the-as pointer #x70004000))) + (run-now-in-process sv-144 powercellalt-init-by-other s4-3 s3-1 sv-160 s0-0) + (-> sv-144 ppointer)))) + (let ((s1-1 (current-time))) (until (time-elapsed? s1-1 (seconds 0.1)) (suspend))) + (when (handle->process arg1) + (let ((s1-2 (handle->process arg1)) + (s0-1 (+ s2-0 4))) + (set! sv-192 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable s1-2) node-list data s0-1))) + (set! sv-176 (get-process *default-dead-pool* powercellalt #x4000)) + (when sv-176 + (let ((t9-20 (method-of-type powercellalt activate))) + (t9-20 (the-as powercellalt sv-176) s1-2 'powercellalt (the-as pointer #x70004000))) + (run-now-in-process sv-176 powercellalt-init-by-other s4-3 s3-1 sv-192 s0-1) + (-> sv-176 ppointer)))) + (let ((s1-3 (current-time))) (until (time-elapsed? s1-3 (seconds 0.1)) (suspend))))) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 2)) (suspend))) + (let ((v0-22 (entity-by-name "sage-finalboss-1")) + (a1-26 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-26 from) self) + (set! (-> a1-26 num-params) 0) + (set! (-> a1-26 message) 'play-anim) + (let ((v1-70 v0-22)) (send-event-function (if v1-70 (-> v1-70 extra process)) a1-26))) + (go target-stance)) + :post target-no-stick-post) diff --git a/goal_src/jak1/levels/finalboss/green-eco-lurker.gc b/goal_src/jak1/levels/finalboss/green-eco-lurker.gc index 848fe28ba0..1100eef6a7 100644 --- a/goal_src/jak1/levels/finalboss/green-eco-lurker.gc +++ b/goal_src/jak1/levels/finalboss/green-eco-lurker.gc @@ -1,655 +1,520 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "levels/snow/snow-ram-boss.gc") -;; name: green-eco-lurker.gc -;; name in dgo: green-eco-lurker -;; dgos: FIN, L1 - ;; DECOMP BEGINS (deftype green-eco-lurker (nav-enemy) - ((played-sound? symbol) - (sound-delay int32) - (appear-dest vector :inline) - (traj trajectory :inline) - ) + ((played-sound? symbol) + (sound-delay int32) + (appear-dest vector :inline) + (traj trajectory :inline)) (:methods - (nav-enemy-method-51 (_type_ vector) symbol :replace) - ) + (nav-enemy-method-51 (_type_ vector) symbol :replace)) (:states - green-eco-lurker-appear - green-eco-lurker-appear-land - green-eco-lurker-tune-spheres - green-eco-lurker-wait-to-appear - ) - ) - + green-eco-lurker-appear + green-eco-lurker-appear-land + green-eco-lurker-tune-spheres + green-eco-lurker-wait-to-appear)) (deftype green-eco-lurker-gen (process-drawable) - ((num-to-spawn int32) - (num-spawned int32) - (num-alive int32) - ) + ((num-to-spawn int32) + (num-spawned int32) + (num-alive int32)) (:states - spawn-minions - ) - ) - - -(defskelgroup *green-eco-lurker-sg* green-eco-lurker green-eco-lurker-lod0-jg -1 - ((green-eco-lurker-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.95) - :shadow green-eco-lurker-shadow-mg - ) - -(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) - :run-rotate-speed (degrees 360) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 360) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 2.5) - :nav-nearest-y-threshold (meters 400) - :notice-distance (meters 300) - :stop-chase-distance (meters 400) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :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) - :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 (collide-kind background cak-2 ground-object) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + spawn-minions)) + +(defskelgroup *green-eco-lurker-sg* + green-eco-lurker + green-eco-lurker-lod0-jg + -1 + ((green-eco-lurker-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.95) + :shadow green-eco-lurker-shadow-mg) + +(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) + :run-rotate-speed (degrees 360) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 360) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 2.5) + :nav-nearest-y-threshold (meters 400) + :notice-distance (meters 300) + :stop-chase-distance (meters 400) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :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) + :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 (collide-kind background cak-2 ground-object) + :debug-draw-neck #f + :debug-draw-jump #f)) (defpartgroup group-green-eco-lurker-death :id 643 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2585 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 2583) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) - (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2586 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2587 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) - (sp-item 2588 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2589 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2585 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 2583) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2583 :flags (start-dead launch-asap) :binding 2584) + (sp-item 2584 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2586 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2587 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) + (sp-item 2588 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2589 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.067)))) (defpart 2587 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:scale-x (meters 0.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 96.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2590) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:scale-x (meters 0.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 96.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2590) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2590 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223))) (defpart 2589 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:scale-x (meters 0.2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 8)) - (:r 64.0 192.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.42666668)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 8)) + (:r 64.0 192.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.42666668)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2586 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 16)) - (:scale-y :copy scale-x) - (:r 64.0 192.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 96.0) - (:fade-a -1.7454545) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 16)) + (:scale-y :copy scale-x) + (:r 64.0 192.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 96.0) + (:fade-a -1.7454545) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2588 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 110)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 110)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2585 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 16.0) - (:y (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:accel-y (meters -0.00033333333)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 16.0) + (:y (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:accel-y (meters -0.00033333333)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2583 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.3) (meters 0.3)) - (:scale-x (meters 0.3) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters -0.000909091)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.26666668) - (:fade-a -0.19393939) - (:timer (seconds 0.3) (seconds 0.497)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.3) (meters 0.3)) + (:scale-x (meters 0.3) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters -0.000909091)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.26666668) + (:fade-a -0.19393939) + (:timer (seconds 0.3) (seconds 0.497)) + (:flags (bit2 bit3 bit7)))) (defpart 2584 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 32.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0006190476)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.01904762) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 32.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0006190476)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.01904762) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defmethod attack-handler ((this 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 (-> this parent)) 'blob-hit-jak) - ) - #f - ) - (else - (nav-enemy-set-hit-from-direction arg0) - ((method-of-type nav-enemy attack-handler) this arg0 arg1) - ) - ) - ) + (send-event (ppointer->process (-> this parent)) 'blob-hit-jak)) + #f) + (else (nav-enemy-set-hit-from-direction arg0) ((method-of-type nav-enemy attack-handler) this arg0 arg1)))) (defmethod nav-enemy-attack-handler ((this 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 (-> this parent)) 'blob-hit-jak) - ) - #f - ) - (else - ((method-of-type nav-enemy nav-enemy-attack-handler) this arg0 arg1) - ) - ) - ) + (send-event (ppointer->process (-> this parent)) 'blob-hit-jak)) + #f) + (else ((method-of-type nav-enemy nav-enemy-attack-handler) this arg0 arg1)))) (defmethod touch-handler ((this green-eco-lurker) (arg0 process) (arg1 event-message-block)) (when (and (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf6)) ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) - ) + (the-as uint 1))) (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) - (send-event (ppointer->process (-> this parent)) 'blob-hit-jak) - ) - ) - ) + (send-event (ppointer->process (-> this parent)) 'blob-hit-jak)))) (defmethod nav-enemy-touch-handler ((this green-eco-lurker) (arg0 process) (arg1 event-message-block)) (when (and (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf6)) ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) - ) + (the-as uint 1))) (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) - (send-event (ppointer->process (-> this parent)) 'blob-hit-jak) - ) - ) - ) + (send-event (ppointer->process (-> this parent)) 'blob-hit-jak)))) (defmethod nav-enemy-method-51 ((this green-eco-lurker) (arg0 vector)) (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) (-> this collide-info root-prim local-sphere w)) - ) - (if (not (nav-enemy-method-50 this arg0)) - (return #t) - ) - ) - #f - ) + (set! (-> v1-3 w) (-> this collide-info root-prim local-sphere w))) + (if (not (nav-enemy-method-50 this arg0)) (return #t))) + #f) (defmethod nav-enemy-method-52 ((this green-eco-lurker) (arg0 vector)) (let ((s4-0 (-> this path curve num-cverts))) (when (> s4-0 0) (let ((s2-0 (nav-enemy-rnd-int-count s4-0)) - (s3-0 s4-0) - ) + (s3-0 s4-0)) (while (> s3-0 0) (eval-path-curve-div! (-> this path) arg0 (the float s2-0) 'interp) - (if (nav-enemy-method-51 this arg0) - (return #t) - ) + (if (nav-enemy-method-51 this arg0) (return #t)) (set! s2-0 (mod (+ s2-0 1) s4-0)) - (+! s3-0 -1) - ) - ) - ) - ) - #f - ) + (+! s3-0 -1))))) + #f) (defstate green-eco-lurker-tune-spheres (green-eco-lurker) - :trans (behavior () - 0 - ) - :code (behavior () - 0 - ) - :post transform-post - ) + :trans + (behavior () + 0) + :code + (behavior () + 0) + :post transform-post) (defstate green-eco-lurker-wait-to-appear (green-eco-lurker) - :enter (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (clear-collide-with-as (-> self collide-info)) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (restore-collide-with-as (-> self collide-info)) - ) - :trans (behavior () - (if (nav-enemy-method-52 self (-> self appear-dest)) - (go green-eco-lurker-appear) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :enter + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (clear-collide-with-as (-> self collide-info))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (restore-collide-with-as (-> self collide-info))) + :trans + (behavior () + (if (nav-enemy-method-52 self (-> self appear-dest)) (go green-eco-lurker-appear))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod nav-enemy-method-53 ((this green-eco-lurker)) - (the-as symbol (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((f0-0 (-> this appear-dest y)) - (v1-7 (-> this draw shadow-ctrl)) - ) - (let ((a0-1 v1-7)) - (logclear! (-> a0-1 settings flags) (shadow-flags disable-draw)) - ) - 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 (-> this draw shadow-ctrl))) - (logior! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) - ) + (the-as symbol + (cond + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((f0-0 (-> this appear-dest y)) + (v1-7 (-> this draw shadow-ctrl))) + (let ((a0-1 v1-7)) (logclear! (-> a0-1 settings flags) (shadow-flags disable-draw))) + 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 (-> this draw shadow-ctrl))) (logior! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0)))) (defstate green-eco-lurker-appear (green-eco-lurker) - :enter (behavior () - (set-time! (-> self state-time)) - (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 green-eco-lurker-gen (-> self parent 0)) root trans x)))) - (set! (-> self collide-info trans x) - (+ (-> (the-as green-eco-lurker-gen (-> self parent 0)) root trans x) (fmax -32768.0 (fmin 32768.0 f0-1))) - ) - ) - (logior! (-> self collide-info nav-flags) (nav-flags navf1)) - (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)) - (+! (-> gp-0 y) 8192.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 643) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (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*) - ) - ) - :trans (behavior () - (let ((f30-0 (fmin (the float (- (current-time) (-> 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) (nav-flags navf0)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - (go green-eco-lurker-appear-land) - ) - ) - (when (and (not (-> self played-sound?)) (time-elapsed? (-> self state-time) (-> self sound-delay))) - (set! (-> self played-sound?) #t) - (sound-play "blob-jump" :pitch (nav-enemy-rnd-float-range -0.5 0.5)) - ) - (nav-enemy-method-53 self) - 0 - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (sound-play "blob-out" :pitch (nav-enemy-rnd-float-range -1.0 1.0)) - (cond - ((zero? (nav-enemy-rnd-int-count 2)) - (ja-no-eval :group! green-eco-lurker-jump-with-flip-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! green-eco-lurker-jump-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (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 green-eco-lurker-gen (-> self parent 0)) root trans x)))) + (set! (-> self collide-info trans x) + (+ (-> (the-as green-eco-lurker-gen (-> self parent 0)) root trans x) (fmax -32768.0 (fmin 32768.0 f0-1))))) + (logior! (-> self collide-info nav-flags) (nav-flags navf1)) + (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)) + (+! (-> gp-0 y) 8192.0) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 643) -1 #f #f #f gp-0 :to *entity-pool*)) + (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*))) + :trans + (behavior () + (let ((f30-0 (fmin (the float (- (current-time) (-> 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) (nav-flags navf0)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) + (go green-eco-lurker-appear-land))) + (when (and (not (-> self played-sound?)) (time-elapsed? (-> self state-time) (-> self sound-delay))) + (set! (-> self played-sound?) #t) + (sound-play "blob-jump" :pitch (nav-enemy-rnd-float-range -0.5 0.5))) + (nav-enemy-method-53 self) + 0) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (sound-play "blob-out" :pitch (nav-enemy-rnd-float-range -1.0 1.0)) + (cond + ((zero? (nav-enemy-rnd-int-count 2)) + (ja-no-eval :group! green-eco-lurker-jump-with-flip-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! green-eco-lurker-jump-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post transform-post) (defstate green-eco-lurker-appear-land (green-eco-lurker) :event nav-enemy-default-event-handler - :code (behavior () - (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) - (sound-play "blob-land" :pitch (nav-enemy-rnd-float-range -1.0 1.0)) - (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)) - ) + :code + (behavior () + (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) + (sound-play "blob-land" :pitch (nav-enemy-rnd-float-range -1.0 1.0)) + (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 + (logclear! (-> v1-4 settings flags) (shadow-flags shdf03)) + (logclear! (-> v1-4 settings flags) (shadow-flags shdf02)) + (logclear! (-> v1-4 settings flags) (shadow-flags disable-draw))) 0 - (logclear! (-> v1-4 settings flags) (shadow-flags shdf03)) - (logclear! (-> v1-4 settings flags) (shadow-flags shdf02)) - (logclear! (-> v1-4 settings flags) (shadow-flags disable-draw)) - ) - 0 - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! green-eco-lurker-jump-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go-virtual nav-enemy-chase) - ) - :post transform-post - ) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! green-eco-lurker-jump-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (go-virtual nav-enemy-chase)) + :post transform-post) (defstate nav-enemy-patrol (green-eco-lurker) :virtual #t - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - (if t9-1 - ((the-as (function none) t9-1)) - ) - ) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) (if t9-1 ((the-as (function none) t9-1)))))) (defstate nav-enemy-chase (green-eco-lurker) :virtual #t - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (cond - ((ja-group? green-eco-lurker-jump-land-ja) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - ) - ) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - ) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (cond + ((ja-group? green-eco-lurker-jump-land-ja) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max f30-0)))) + (else + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) + (ja :num-func num-func-identity :frame-num 0.0))) + (loop + (suspend) + (ja :num! (loop! f30-0)))))) (defstate nav-enemy-jump-land (green-eco-lurker) :virtual #t - :code (behavior () - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info jump-land-anim)) - :num! (seek! (ja-aframe 32.0 0) 0.5) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe 32.0 0) 0.5)) - ) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info jump-land-anim)) + :num! + (seek! (ja-aframe 32.0 0) 0.5) + :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe 32.0 0) 0.5))) + (go-virtual nav-enemy-chase))) (defstate nav-enemy-die (green-eco-lurker) :virtual #t - :enter (behavior () - (send-event (ppointer->process (-> self parent)) 'blob-died) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 643) - -1 - #f - #f - #f - (-> self collide-info trans) - :to *entity-pool* - ) - (sound-play "blob-explode") - (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) - (let ((v1-14 (-> self draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - (let ((t9-7 (-> (method-of-type nav-enemy nav-enemy-die) enter))) - (if t9-7 - (t9-7) - ) - ) - ) - ) + :enter + (behavior () + (send-event (ppointer->process (-> self parent)) 'blob-died) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 643) + -1 + #f + #f + #f + (-> self collide-info trans) + :to + *entity-pool*) + (sound-play "blob-explode") + (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) + (let ((v1-14 (-> self draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) + 0 + (let ((t9-7 (-> (method-of-type nav-enemy nav-enemy-die) enter))) (if t9-7 (t9-7))))) (defmethod initialize-collision ((this green-eco-lurker)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -663,65 +528,55 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2785.28 0.0 3276.8) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6615.04 0.0 3276.8) - (append-prim s4-0 s3-1) - ) + (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) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core action) (collide-action solid)) (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 10444.8 0.0 3276.8) - (append-prim s4-0 s3-2) - ) + (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) (collide-kind enemy)) (set! (-> s3-3 collide-with) (collide-kind target)) (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 6) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s4-0 s3-3) - ) + (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) (collide-kind enemy)) (set! (-> s3-4 collide-with) (collide-kind target)) (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 4) (set-vector! (-> s3-4 local-sphere) 0.0 -3276.8 -2048.0 5734.4) - (append-prim s4-0 s3-4) - ) + (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) (collide-kind enemy)) (set! (-> s3-5 collide-with) (collide-kind target)) (set! (-> s3-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-5 transform-index) 12) (set-vector! (-> s3-5 local-sphere) 0.0 0.0 0.0 2457.6) - (append-prim s4-0 s3-5) - ) + (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) (collide-kind enemy)) (set! (-> s3-6 collide-with) (collide-kind target)) (set! (-> s3-6 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-6 transform-index) 16) (set-vector! (-> s3-6 local-sphere) 0.0 0.0 0.0 2457.6) - (append-prim s4-0 s3-6) - ) - ) + (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! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this green-eco-lurker)) (initialize-skeleton this *green-eco-lurker-sg* '()) @@ -733,8 +588,7 @@ (set! (-> this neck nose) (the-as uint 1)) (set! (-> this neck ear) (the-as uint 2)) 0 - (none) - ) + (none)) (defbehavior green-eco-lurker-init-by-other green-eco-lurker ((arg0 entity-actor) (arg1 green-eco-lurker-gen) (arg2 vector)) (initialize-collision self) @@ -745,51 +599,38 @@ (nav-enemy-method-48 self) (logclear! (-> self mask) (process-mask actor-pause)) (go green-eco-lurker-wait-to-appear) - (none) - ) + (none)) (defstate spawn-minions (green-eco-lurker-gen) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('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) - ) - ) - ) - :code (behavior () - (while (< (-> self num-spawned) (-> self num-to-spawn)) - (when (< (-> self num-alive) 3) - (when (nonzero? (-> self num-spawned)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (suspend) - ) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (+! (-> gp-0 y) -16384.0) - (process-spawn green-eco-lurker (-> self entity) self gp-0 :to self) - ) - (+! (-> 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)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('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)))) + :code + (behavior () + (while (< (-> self num-spawned) (-> self num-to-spawn)) + (when (< (-> self num-alive) 3) + (when (nonzero? (-> self num-spawned)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (+! (-> gp-0 y) -16384.0) + (process-spawn green-eco-lurker (-> self entity) self gp-0 :to self)) + (+! (-> 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)) (suspend) - ) - (suspend) - 0 - ) - ) + 0)) (defbehavior green-eco-lurker-gen-init-by-other green-eco-lurker-gen ((arg0 entity-actor) (arg1 vector) (arg2 int)) (set! (-> self num-to-spawn) arg2) @@ -802,5 +643,4 @@ (quaternion-identity! (-> self root quat)) (logclear! (-> self mask) (process-mask actor-pause)) (go spawn-minions) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/finalboss/light-eco.gc b/goal_src/jak1/levels/finalboss/light-eco.gc index b7bd813dcf..b1dd97823d 100644 --- a/goal_src/jak1/levels/finalboss/light-eco.gc +++ b/goal_src/jak1/levels/finalboss/light-eco.gc @@ -1,183 +1,164 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "engine/game/projectiles-h.gc") (require "engine/physics/trajectory.gc") (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/process-drawable.gc") -;; name: light-eco.gc -;; name in dgo: light-eco -;; dgos: FIN, L1 - ;; DECOMP BEGINS (deftype light-eco-child (process-drawable) - ((root collide-shape :override) - (angle-bit int32) - (ground-y float) - (falling-start-time time-frame) - (last-update-time time-frame) - (rot vector :inline) - (rotv vector :inline) - (traj trajectory :inline) - ) + ((root collide-shape :override) + (angle-bit int32) + (ground-y float) + (falling-start-time time-frame) + (last-update-time time-frame) + (rot vector :inline) + (rotv vector :inline) + (traj trajectory :inline)) (:methods - (common-trans (_type_) none) - ) + (common-trans (_type_) none)) (:states - light-eco-child-appear - light-eco-child-die - light-eco-child-grabbed - light-eco-child-hit-ground - light-eco-child-idle - ) - ) - + light-eco-child-appear + light-eco-child-die + light-eco-child-grabbed + light-eco-child-hit-ground + light-eco-child-idle)) (deftype light-eco-mother (process-drawable) - ((player-got-eco? symbol) - (angle-mask int64) - (delay-til-spawn int32) - (part2 sparticle-launch-control) - (last-update-time time-frame) - (last-spawned-time time-frame) - ) + ((player-got-eco? symbol) + (angle-mask int64) + (delay-til-spawn int32) + (part2 sparticle-launch-control) + (last-update-time time-frame) + (last-spawned-time time-frame)) (:methods - (spawn-child-eco (_type_) symbol) - (common-trans (_type_) none) - ) + (spawn-child-eco (_type_) symbol) + (common-trans (_type_) none)) (:states - light-eco-mother-active - light-eco-mother-appear - light-eco-mother-discipate - ) - ) - - -(defskelgroup *light-eco-big-sg* light-eco light-eco-big-lod0-jg -1 - ((light-eco-big-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 9) - ) - -(defskelgroup *light-eco-small-sg* light-eco light-eco-small-lod0-jg -1 - ((light-eco-small-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1.5) - ) + light-eco-mother-active + light-eco-mother-appear + light-eco-mother-discipate)) + +(defskelgroup *light-eco-big-sg* + light-eco + light-eco-big-lod0-jg + -1 + ((light-eco-big-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 9)) + +(defskelgroup *light-eco-small-sg* + light-eco + light-eco-small-lod0-jg + -1 + ((light-eco-small-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1.5)) (defpartgroup group-light-eco-mother-growing :id 690 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 2902) (sp-item 2900) (sp-item 2897) (sp-item 2898)) - ) + :parts ((sp-item 2902) (sp-item 2900) (sp-item 2897) (sp-item 2898))) (defpart 2897 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.5) - (:scale-x (meters 10.5) (meters 4.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2.1) (meters 1.8)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 0.35555556) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.3)) - (:next-launcher 2899) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.5) + (:scale-x (meters 10.5) (meters 4.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2.1) (meters 1.8)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.3)) + (:next-launcher 2899))) (defpart 2899 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 2898 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.06) - (:scale-x (meters 20) (meters 4.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.2)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 0.32) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 232) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.06) + (:scale-x (meters 20) (meters 4.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.2)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 232))) (defpart 2900 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.05 0.05) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 10) (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 0.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.016666668)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 2)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.8) (seconds 0.197)) - (:next-launcher 2901) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.05 0.05) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 0.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.8) (seconds 0.197)) + (:next-launcher 2901))) (defpart 2901 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpart 2902 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 8.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.21333334)) - (:scalevel-x (meters -0.00083333335)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0016666667) (meters -0.00066666666)) - (:friction 0.9) - (:timer (seconds 0.1) (seconds 0.497)) - (:flags (bit0 bit2 bit3)) - (:userdata 1638400.0) - (:func 'check-drop-level-lighteco-big-pops) - (:next-time (seconds 0.15) (seconds 0.997)) - (:next-launcher 2903) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees -1440) (degrees 2880)) - (:conerot-radius (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 8.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.21333334)) + (:scalevel-x (meters -0.00083333335)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.9) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (bit0 bit2 bit3)) + (:userdata 1638400.0) + (:func 'check-drop-level-lighteco-big-pops) + (:next-time (seconds 0.15) (seconds 0.997)) + (:next-launcher 2903) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees -1440) (degrees 2880)) + (:conerot-radius (meters 4)))) (defpart 2903 - :init-specs ((:userdata 2252800.0)) - ) + :init-specs ((:userdata 2252800.0))) (defun check-drop-level-lighteco-big-pops ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -185,118 +166,107 @@ (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg2 y) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 2904) gp-0) - (launch-particles (-> *part-id-table* 2905) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 2905) gp-0))) + (none)) (defpart 2905 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 16.0 32.0) - (:fade-a -1.92) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 16.0 32.0) + (:fade-a -1.92) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)))) (defpart 2904 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 4.0) - (:scale-x (meters 0.3) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:accel-y (meters -0.0016666667) (meters -0.00066666666)) - (:friction 0.85) - (:timer (seconds 0.05) (seconds 0.397)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 4.0) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.85) + (:timer (seconds 0.05) (seconds 0.397)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-light-eco-mother :id 691 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 2902) (sp-item 2900) (sp-item 2897) (sp-item 2898)) - ) + :parts ((sp-item 2902) (sp-item 2900) (sp-item 2897) (sp-item 2898))) (defpartgroup group-light-eco-child :id 692 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 2906) (sp-item 2907)) - ) + :parts ((sp-item 2906) (sp-item 2907))) (defpart 2907 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.025 0.025) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 2) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 0.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.4) (seconds 0.097)) - (:next-launcher 2908) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.025 0.025) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 2) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 0.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.4) (seconds 0.097)) + (:next-launcher 2908))) (defpart 2908 - :init-specs ((:fade-a -0.85333335)) - ) + :init-specs ((:fade-a -0.85333335))) (defpart 2906 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 2.0) - (:scale-x (meters 0.15) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.21333334)) - (:scalevel-x (meters -0.00083333335)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0016666667) (meters -0.00066666666)) - (:friction 0.5) - (:timer (seconds 0.1) (seconds 0.497)) - (:flags (bit0 bit2 bit3)) - (:userdata 1638400.0) - (:func 'check-drop-level-lighteco-pops) - (:next-time (seconds 0.15) (seconds 0.997)) - (:next-launcher 2909) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees -1440) (degrees 2880)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 2.0) + (:scale-x (meters 0.15) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.21333334)) + (:scalevel-x (meters -0.00083333335)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.5) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (bit0 bit2 bit3)) + (:userdata 1638400.0) + (:func 'check-drop-level-lighteco-pops) + (:next-time (seconds 0.15) (seconds 0.997)) + (:next-launcher 2909) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees -1440) (degrees 2880)))) (defpart 2909 - :init-specs ((:userdata 2048000.0)) - ) + :init-specs ((:userdata 2048000.0))) (defun check-drop-level-lighteco-pops ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -304,57 +274,48 @@ (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg2 y) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 2910) gp-0) - (launch-particles (-> *part-id-table* 2911) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 2911) gp-0))) + (none)) (defpart 2911 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 16.0 32.0) - (:fade-a -1.92) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 16.0 32.0) + (:fade-a -1.92) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)))) (defpart 2910 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 4.0) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:accel-y (meters -0.0016666667) (meters -0.00066666666)) - (:friction 0.85) - (:timer (seconds 0.05) (seconds 0.397)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 4.0) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.85) + (:timer (seconds 0.05) (seconds 0.397)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)))) (defbehavior light-eco-child-default-event-handler light-eco-child ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch 'attack) (when (= (-> arg0 type) target) (send-event (ppointer->process (-> self parent)) 'trigger (-> self angle-bit)) - (go light-eco-child-grabbed) - ) - ) - ) - ) + (go light-eco-child-grabbed))))) (defmethod common-trans ((this light-eco-child)) (let ((v1-1 (current-time))) @@ -362,157 +323,122 @@ (set! (-> this last-update-time) v1-1) (let* ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (-> this rot)) - (f30-0 (-> s4-0 w)) - ) + (f30-0 (-> s4-0 w))) (vector-v++! s4-0 (-> this rotv)) (set! (-> s4-0 w) (+ f30-0 (* (-> this rotv w) (seconds-per-frame)))) (set-vector! s5-0 (cos (-> s4-0 x)) (cos (-> s4-0 y)) (cos (-> s4-0 z)) 1.0) (vector-normalize! s5-0 1.0) - (quaternion-vector-angle! (-> this root quat) s5-0 f30-0) - ) - (spawn (-> this part) (-> this root trans)) - ) - ) - (none) - ) + (quaternion-vector-angle! (-> this root quat) s5-0 f30-0)) + (spawn (-> this part) (-> this root trans)))) + (none)) (defstate light-eco-child-appear (light-eco-child) :event light-eco-child-default-event-handler - :enter (behavior () - (set-time! (-> self falling-start-time)) - ) - :trans (behavior () - (let ((f30-0 (fmin (the float (- (current-time) (-> self falling-start-time))) (-> self traj time)))) - (eval-position! (-> self traj) f30-0 (-> self root trans)) - (if (= f30-0 (-> self traj time)) - (go light-eco-child-hit-ground) - ) - ) - (common-trans self) - ) - :code (behavior () - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self falling-start-time))) + :trans + (behavior () + (let ((f30-0 (fmin (the float (- (current-time) (-> self falling-start-time))) (-> self traj time)))) + (eval-position! (-> self traj) f30-0 (-> self root trans)) + (if (= f30-0 (-> self traj time)) (go light-eco-child-hit-ground))) + (common-trans self)) + :code + (behavior () + (loop + (suspend) + (ja :num! (loop!)))) + :post transform-post) (defstate light-eco-child-hit-ground (light-eco-child) :event light-eco-child-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (let ((f30-0 (+ (-> self root transv y) (* -544768.0 (seconds-per-frame))))) - (when (and (< f30-0 0.0) (>= (-> self ground-y) (-> self root trans y))) - (if (>= 4096.0 (fabs f30-0)) - (go light-eco-child-idle) - ) - (set! (-> self root transv y) 0.0) - (vector-normalize! (-> self root transv) (* 0.25 (vector-xz-length (-> self root transv)))) - (set! f30-0 (* 0.35 (- f30-0))) - ) - (set! (-> self root transv y) f30-0) - ) - (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) - (let ((f0-8 - (vector-vector-xz-distance (-> self root trans) (-> (the-as light-eco-mother (-> self parent 0)) root trans)) - ) - ) - (when (< 92610.56 f0-8) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector-! gp-1 (-> self root trans) (-> (the-as light-eco-mother (-> self parent 0)) root trans)) - (set! (-> gp-1 y) 0.0) - (vector-normalize! gp-1 92610.56) - (vector+! gp-1 gp-1 (-> (the-as light-eco-mother (-> self parent 0)) root trans)) - (set! (-> gp-1 y) (-> self root trans y)) - (set! (-> self root trans quad) (-> gp-1 quad)) - ) - ) - ) - (common-trans self) - ) - :code (behavior () - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (let ((f30-0 (+ (-> self root transv y) (* -544768.0 (seconds-per-frame))))) + (when (and (< f30-0 0.0) (>= (-> self ground-y) (-> self root trans y))) + (if (>= 4096.0 (fabs f30-0)) (go light-eco-child-idle)) + (set! (-> self root transv y) 0.0) + (vector-normalize! (-> self root transv) (* 0.25 (vector-xz-length (-> self root transv)))) + (set! f30-0 (* 0.35 (- f30-0)))) + (set! (-> self root transv y) f30-0)) + (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) + (let ((f0-8 (vector-vector-xz-distance (-> self root trans) (-> (the-as light-eco-mother (-> self parent 0)) root trans)))) + (when (< 92610.56 f0-8) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector-! gp-1 (-> self root trans) (-> (the-as light-eco-mother (-> self parent 0)) root trans)) + (set! (-> gp-1 y) 0.0) + (vector-normalize! gp-1 92610.56) + (vector+! gp-1 gp-1 (-> (the-as light-eco-mother (-> self parent 0)) root trans)) + (set! (-> gp-1 y) (-> self root trans y)) + (set! (-> self root trans quad) (-> gp-1 quad))))) + (common-trans self)) + :code + (behavior () + (loop + (suspend) + (ja :num! (loop!)))) + :post transform-post) (defstate light-eco-child-idle (light-eco-child) :event light-eco-child-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (time-elapsed? (-> self state-time) (seconds 4)) - (go light-eco-child-die) - ) - (common-trans self) - ) - :code (behavior () - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (seconds 4)) (go light-eco-child-die)) + (common-trans self)) + :code + (behavior () + (loop + (suspend) + (ja :num! (loop!)))) + :post transform-post) (defstate light-eco-child-die (light-eco-child) - :code (behavior () - (send-event (ppointer->process (-> self parent)) 'untrigger (-> self angle-bit)) - (clear-collide-with-as (-> self root)) - (logior! (-> self draw status) (draw-status hidden)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.1)) - (suspend) - ) - ) - ) + :code + (behavior () + (send-event (ppointer->process (-> self parent)) 'untrigger (-> self angle-bit)) + (clear-collide-with-as (-> self root)) + (logior! (-> self draw status) (draw-status hidden)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.1)) + (suspend)))) (defstate light-eco-child-grabbed (light-eco-child) - :code (behavior () - (suspend) - 0 - ) - ) + :code + (behavior () + (suspend) + 0)) (defbehavior light-eco-child-init-by-other light-eco-child ((arg0 entity-actor) (arg1 vector) (arg2 vector) (arg3 int)) (set! (-> self entity) arg0) (set! (-> self angle-bit) arg3) (set! (-> self ground-y) (-> arg2 y)) (set! (-> self last-update-time) 0) - (set-vector! - (-> self rotv) - (rand-vu-float-range 5898.24 9539.129) - (rand-vu-float-range 5552.3555 9193.244) - (rand-vu-float-range 6007.467 9648.355) - (rand-vu-float-range 11013.688 18295.467) - ) - (set-vector! - (-> self rot) - (rand-vu-float-range 0.0 65536.0) - (rand-vu-float-range 0.0 65536.0) - (rand-vu-float-range 0.0 65536.0) - (rand-vu-float-range 0.0 65536.0) - ) + (set-vector! (-> self rotv) + (rand-vu-float-range 5898.24 9539.129) + (rand-vu-float-range 5552.3555 9193.244) + (rand-vu-float-range 6007.467 9648.355) + (rand-vu-float-range 11013.688 18295.467)) + (set-vector! (-> self rot) + (rand-vu-float-range 0.0 65536.0) + (rand-vu-float-range 0.0 65536.0) + (rand-vu-float-range 0.0 65536.0) + (rand-vu-float-range 0.0 65536.0)) (let ((s4-2 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-2 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) - (set-root-prim! s4-2 s3-0) - ) + (set-root-prim! s4-2 s3-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! (-> self root) s4-2)) (set! (-> self root trans quad) (-> arg1 quad)) (set-vector! (-> self root scale) 2.0 2.0 2.0 1.0) (quaternion-identity! (-> self root quat)) @@ -521,8 +447,7 @@ (vector-! s4-3 arg2 arg1) (set! (-> s4-3 y) 0.0) (vector-normalize! s4-3 163840.0) - (set! (-> s4-3 y) -122880.0) - ) + (set! (-> s4-3 y) -122880.0)) (logclear! (-> self mask) (process-mask actor-pause)) (initialize-skeleton self *light-eco-small-sg* '()) (ja-channel-set! 1) @@ -531,44 +456,32 @@ (set! (-> self part) (create-launch-control (-> *part-group-id-table* 692) self)) (transform-post) (go light-eco-child-appear) - (none) - ) + (none)) (defmethod common-trans ((this light-eco-mother)) (let ((v1-1 (current-time))) (when (!= v1-1 (-> this last-update-time)) (set! (-> this last-update-time) v1-1) (let ((s5-0 (new 'stack-no-clear 'vector))) - (set-vector! - s5-0 - (cos (* 25.700392 (the float (mod (current-time) 2550)))) - (cos (* 24.59229 (the float (mod (current-time) 2664)))) - (cos (* 26.121408 (the float (mod (current-time) 2508)))) - 1.0 - ) + (set-vector! s5-0 + (cos (* 25.700392 (the float (mod (current-time) 2550)))) + (cos (* 24.59229 (the float (mod (current-time) 2664)))) + (cos (* 26.121408 (the float (mod (current-time) 2508)))) + 1.0) (vector-normalize! s5-0 1.0) - (quaternion-vector-angle! (-> this root quat) s5-0 (* 48.860058 (the float (mod (current-time) 1341)))) - ) + (quaternion-vector-angle! (-> this root quat) s5-0 (* 48.860058 (the float (mod (current-time) 1341))))) (cond ((and *target* (logtest? (-> *target* state-flags) (state-flags grabbed))) (set-time! (-> this last-spawned-time)) - (set! (-> this delay-til-spawn) 2400) - ) + (set! (-> this delay-til-spawn) 2400)) (else - (when (time-elapsed? (-> this last-spawned-time) (-> this delay-til-spawn)) - (when (spawn-child-eco this) - (set-time! (-> this last-spawned-time)) - (set! (-> this delay-til-spawn) (rand-vu-int-range 300 600)) - ) - ) - ) - ) + (when (time-elapsed? (-> this last-spawned-time) (-> this delay-til-spawn)) + (when (spawn-child-eco this) + (set-time! (-> this last-spawned-time)) + (set! (-> this delay-til-spawn) (rand-vu-int-range 300 600)))))) (update! (-> this sound)) - 0 - ) - ) - (none) - ) + 0)) + (none)) (defmethod spawn-child-eco ((this light-eco-mother)) (countdown (s3-0 4) @@ -576,122 +489,88 @@ (when (not (logtest? (-> this angle-mask) (ash 1 gp-0))) (let ((f28-0 (* 2048.0 (the float gp-0))) (f30-0 (rand-vu-float-range 61440.0 88514.56)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (set-vector! s4-0 (* (sin f28-0) f30-0) 0.0 (* (cos f28-0) f30-0) 1.0) (vector+! s4-0 s4-0 (-> this root trans)) (set! (-> s4-0 y) 1974272.0) (when (or (not *target*) (>= (vector-vector-xz-distance s4-0 (target-pos 0)) 49152.0)) (logior! (-> this angle-mask) (ash 1 gp-0)) (process-spawn light-eco-child (-> this entity) (-> this root trans) s4-0 gp-0 :to this) - (return #t) - ) - ) - ) - ) - ) - #f - ) + (return #t)))))) + #f) (defbehavior light-eco-mother-default-event-handler light-eco-mother ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (the-as - int - (case arg2 - (('untrigger) - (the-as int (when (= (-> arg0 type) light-eco-child) - (let* ((a1-3 (-> arg3 param 0)) - (v0-0 (logxor (-> self angle-mask) (ash 1 a1-3))) - ) - (set! (-> self angle-mask) v0-0) - v0-0 - ) - ) - ) - ) - (('trigger) - (the-as int (when (not (-> self player-got-eco?)) - (set! (-> self player-got-eco?) #t) - (the-as int (send-event (ppointer->process (-> self parent)) 'white-eco-picked-up)) - ) - ) - ) - (('beam-off) - (the-as int (go light-eco-mother-discipate)) - ) - ) - ) - ) + (the-as int + (case arg2 + (('untrigger) + (the-as int + (when (= (-> arg0 type) light-eco-child) + (let* ((a1-3 (-> arg3 param 0)) + (v0-0 (logxor (-> self angle-mask) (ash 1 a1-3)))) + (set! (-> self angle-mask) v0-0) + v0-0)))) + (('trigger) + (the-as int + (when (not (-> self player-got-eco?)) + (set! (-> self player-got-eco?) #t) + (the-as int (send-event (ppointer->process (-> self parent)) 'white-eco-picked-up))))) + (('beam-off) (the-as int (go light-eco-mother-discipate)))))) (defstate light-eco-mother-appear (light-eco-mother) :event light-eco-mother-default-event-handler - :trans (behavior () - (common-trans self) - (spawn (-> self part2) (-> self root trans)) - ) - :code (behavior () - (while (!= (-> self root scale x) 12.0) - (let ((f0-3 (seek-with-smooth (-> self root scale x) 12.0 (* 6.0 (seconds-per-frame)) 0.25 0.001))) - (set-vector! (-> self root scale) f0-3 f0-3 f0-3 1.0) - ) - (suspend) - (ja :num! (loop!)) - ) - (go light-eco-mother-active) - ) - :post ja-post - ) + :trans + (behavior () + (common-trans self) + (spawn (-> self part2) (-> self root trans))) + :code + (behavior () + (while (!= (-> self root scale x) 12.0) + (let ((f0-3 (seek-with-smooth (-> self root scale x) 12.0 (* 6.0 (seconds-per-frame)) 0.25 0.001))) + (set-vector! (-> self root scale) f0-3 f0-3 f0-3 1.0)) + (suspend) + (ja :num! (loop!))) + (go light-eco-mother-active)) + :post ja-post) (defstate light-eco-mother-active (light-eco-mother) :event light-eco-mother-default-event-handler - :trans (behavior () - (common-trans self) - (spawn (-> self part) (-> self root trans)) - 0 - ) - :code (behavior () - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post ja-post - ) + :trans + (behavior () + (common-trans self) + (spawn (-> self part) (-> self root trans)) + 0) + :code + (behavior () + (loop + (suspend) + (ja :num! (loop!)))) + :post ja-post) (defstate light-eco-mother-discipate (light-eco-mother) :event light-eco-mother-default-event-handler - :trans (behavior () - (common-trans self) - ) - :code (behavior () - (while (!= (-> self root scale x) 0.0) - (let ((f0-3 (seek-with-smooth (-> self root scale x) 0.0 (* 12.0 (seconds-per-frame)) 0.5 0.001))) - (set-vector! (-> self root scale) f0-3 f0-3 f0-3 1.0) - ) - (suspend) - (ja :num! (loop!)) - ) - (logior! (-> self draw status) (draw-status hidden)) - (until (not (-> self child)) - (suspend) - ) - ) - :post ja-post - ) + :trans + (behavior () + (common-trans self)) + :code + (behavior () + (while (!= (-> self root scale x) 0.0) + (let ((f0-3 (seek-with-smooth (-> self root scale x) 0.0 (* 12.0 (seconds-per-frame)) 0.5 0.001))) + (set-vector! (-> self root scale) f0-3 f0-3 f0-3 1.0)) + (suspend) + (ja :num! (loop!))) + (logior! (-> self draw status) (draw-status hidden)) + (until (not (-> self child)) + (suspend))) + :post ja-post) (defmethod deactivate ((this light-eco-mother)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type projectile deactivate) (the-as projectile this)) - (none) - ) + (none)) (defmethod relocate ((this light-eco-mother) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as light-eco-mother ((method-of-type projectile relocate) (the-as projectile this) arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as light-eco-mother ((method-of-type projectile relocate) (the-as projectile this) arg0))) (defbehavior light-eco-mother-init-by-other light-eco-mother ((arg0 entity-actor) (arg1 vector)) (set! (-> self entity) arg0) @@ -712,17 +591,11 @@ (set! (-> self part) (create-launch-control (-> *part-group-id-table* 691) self)) (set! (-> self part2) (create-launch-control (-> *part-group-id-table* 690) self)) (set! (-> self sound) - (new 'process 'ambient-sound (static-sound-spec "white-eco-lp" :fo-min 300 :fo-max 400) (-> self root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "white-eco-lp" :fo-min 300 :fo-max 400) (-> self root trans))) (ja-post) (let ((f0-4 0.0)) (countdown (v1-33 4) - (let ((a2-4 (the int (* 0.00048828125 f0-4)))) - (logior! (-> self angle-mask) (ash 1 a2-4)) - ) - (set! f0-4 (+ 16384.0 f0-4)) - ) - ) + (let ((a2-4 (the int (* 0.00048828125 f0-4)))) (logior! (-> self angle-mask) (ash 1 a2-4))) + (set! f0-4 (+ 16384.0 f0-4)))) (go light-eco-mother-appear) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/finalboss/robotboss-h.gc b/goal_src/jak1/levels/finalboss/robotboss-h.gc index 1bfc7c05fe..2535de3b8c 100644 --- a/goal_src/jak1/levels/finalboss/robotboss-h.gc +++ b/goal_src/jak1/levels/finalboss/robotboss-h.gc @@ -1,135 +1,101 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "engine/data/art-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") -;; name: robotboss-h.gc -;; name in dgo: robotboss-h -;; dgos: FIN, L1 - ;; DECOMP BEGINS (deftype robotboss-dda (structure) - ((blue-bomb-time float) - (num-blobs int32) - (green-bomb-time float) - (red-shots-min int32) - (red-shots-rnd int32) - (red-shot-time-min float) - (red-shot-time-rnd float) - (red-bomb-time float) - (yellow-shot-time-min float) - (yellow-shot-time-rnd float) - (yellow-gun-hits int32) - (yellow-bomb-time float) - ) - ) - + ((blue-bomb-time float) + (num-blobs int32) + (green-bomb-time float) + (red-shots-min int32) + (red-shots-rnd int32) + (red-shot-time-min float) + (red-shot-time-rnd float) + (red-bomb-time float) + (yellow-shot-time-min float) + (yellow-shot-time-rnd float) + (yellow-gun-hits int32) + (yellow-bomb-time float))) (deftype robotboss (process-drawable) - ((root collide-shape-moving :override) - (alts entity-actor 13) - (desired-loc vector :inline) - (old-loc vector :inline) - (loc-t float) - (loc-t-start time-frame) - (loc-t-duration time-frame) - (hits-to-go int32) - (took-hit symbol) - (children-spawned int32) - (vulnerable int64) - (till-next-shot int64) - (shot-attractor handle) - (desired-pool-y float) - (particle sparticle-launch-control 7) - (blue-smoke symbol) - (red-smoke symbol) - (yellow-smoke symbol) - (white-eco handle) - (des-cam-entity string) - (use-interesting symbol) - (ignore-camera symbol) - (ambient ambient-control :inline) - (yellow-gun joint-mod) - (palette-val float) - (looping-sound ambient-sound 4) - (dda robotboss-dda) - (valid-frames int32) - (skip-cut symbol) - (keep-charging symbol) - ) + ((root collide-shape-moving :override) + (alts entity-actor 13) + (desired-loc vector :inline) + (old-loc vector :inline) + (loc-t float) + (loc-t-start time-frame) + (loc-t-duration time-frame) + (hits-to-go int32) + (took-hit symbol) + (children-spawned int32) + (vulnerable int64) + (till-next-shot int64) + (shot-attractor handle) + (desired-pool-y float) + (particle sparticle-launch-control 7) + (blue-smoke symbol) + (red-smoke symbol) + (yellow-smoke symbol) + (white-eco handle) + (des-cam-entity string) + (use-interesting symbol) + (ignore-camera symbol) + (ambient ambient-control :inline) + (yellow-gun joint-mod) + (palette-val float) + (looping-sound ambient-sound 4) + (dda robotboss-dda) + (valid-frames int32) + (skip-cut symbol) + (keep-charging symbol)) (:methods - (ease-loc-t (_type_) float) - ) + (ease-loc-t (_type_) float)) (:states - robotboss-blue-dark-bomb - robotboss-blue-dark-bomb-wait - robotboss-blue-wait - robotboss-daxter-sacrifice-movie - robotboss-green - robotboss-green-dark-bomb - robotboss-green-dark-bomb-wait - robotboss-green-wait - robotboss-red - robotboss-red-dark-bomb - robotboss-red-dark-bomb-wait - robotboss-red-wait - robotboss-white-eco-movie - robotboss-yellow - robotboss-yellow-dark-bomb - robotboss-yellow-dark-bomb-wait - robotboss-yellow-wait - ) - ) - + robotboss-blue-dark-bomb + robotboss-blue-dark-bomb-wait + robotboss-blue-wait + robotboss-daxter-sacrifice-movie + robotboss-green + robotboss-green-dark-bomb + robotboss-green-dark-bomb-wait + robotboss-green-wait + robotboss-red + robotboss-red-dark-bomb + robotboss-red-dark-bomb-wait + robotboss-red-wait + robotboss-white-eco-movie + robotboss-yellow + robotboss-yellow-dark-bomb + robotboss-yellow-dark-bomb-wait + robotboss-yellow-wait)) (defmethod relocate ((this robotboss) (arg0 int)) (dotimes (v1-0 7) - (if (nonzero? (-> this particle v1-0)) - (&+! (-> this particle v1-0) arg0) - ) - ) + (if (nonzero? (-> this particle v1-0)) (&+! (-> this particle v1-0) arg0))) (dotimes (v1-3 4) - (if (nonzero? (-> this looping-sound v1-3)) - (&+! (-> this looping-sound v1-3) arg0) - ) - ) - (if (nonzero? (-> this yellow-gun)) - (&+! (-> this yellow-gun) arg0) - ) - (the-as robotboss ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this looping-sound v1-3)) (&+! (-> this looping-sound v1-3) arg0))) + (if (nonzero? (-> this yellow-gun)) (&+! (-> this yellow-gun) arg0)) + (the-as robotboss ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this robotboss)) (dotimes (s5-0 7) - (let ((a0-1 (-> this particle s5-0))) - (if (nonzero? a0-1) - (kill-and-free-particles a0-1) - ) - ) - ) + (let ((a0-1 (-> this particle s5-0))) (if (nonzero? a0-1) (kill-and-free-particles a0-1)))) (dotimes (s5-1 4) - (let ((a0-2 (-> this looping-sound s5-1))) - (if (nonzero? a0-2) - (stop! a0-2) - ) - ) - ) + (let ((a0-2 (-> this looping-sound s5-1))) (if (nonzero? a0-2) (stop! a0-2)))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defbehavior target-has-all-the-cells? process () - (the-as - symbol - (and *target* (>= (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 100)) - ) - ) + (the-as symbol + (and *target* (>= (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 100)))) -(defskelgroup *robotboss-sg* robotboss robotboss-basic-lod0-jg robotboss-idle-ja - ((robotboss-basic-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -10 0 80) - :longest-edge (meters 19.9) - ) +(defskelgroup *robotboss-sg* + robotboss + robotboss-basic-lod0-jg + robotboss-idle-ja + ((robotboss-basic-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -10 0 80) + :longest-edge (meters 19.9)) diff --git a/goal_src/jak1/levels/finalboss/robotboss-misc.gc b/goal_src/jak1/levels/finalboss/robotboss-misc.gc index 88d98880a1..cc95bdcd90 100644 --- a/goal_src/jak1/levels/finalboss/robotboss-misc.gc +++ b/goal_src/jak1/levels/finalboss/robotboss-misc.gc @@ -1,116 +1,85 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "levels/finalboss/robotboss-h.gc") (require "levels/citadel/citadel-sages.gc") - -;; name: robotboss-misc.gc -;; name in dgo: robotboss-misc -;; dgos: FIN, L1 - (declare-type ecoclaw process-drawable) -(define-extern *ecoclaw* (pointer ecoclaw)) +(define-extern *ecoclaw* (pointer ecoclaw)) ;; DECOMP BEGINS -(defskelgroup *med-res-snow1-sg* medres-snowback 0 2 - ((1 (meters 999999))) - :bounds (static-spherem -360 100 100 380) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-snow1-sg* + medres-snowback + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem -360 100 100 380) + :longest-edge (meters 0.01)) (defstate cam-robotboss (camera-slave) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('set-pivot) - (let ((v0-0 (the-as object (-> self pivot-pt)))) - (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> block param 0)) quad)) - v0-0 - ) - ) - (('teleport) - #f - ) - (else - (cam-standard-event-handler proc argc message block) - ) - ) - ) - :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)) - ) - ) - ) - :trans (behavior () - (when (not (logtest? (-> *camera* master-options) 2)) - (set! *camera-base-mode* cam-string) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (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)) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('set-pivot) + (let ((v0-0 (the-as object (-> self pivot-pt)))) + (set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> block param 0)) quad)) + v0-0)) + (('teleport) #f) + (else (cam-standard-event-handler proc argc message block)))) + :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))))) + :trans + (behavior () + (when (not (logtest? (-> *camera* master-options) 2)) + (set! *camera-base-mode* cam-string) + (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (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)))) + (suspend)))) (deftype ecoclaw-part-info (structure) - ((tracker handle) - (kind basic) - (trans vector :inline) - ) - ) - + ((tracker handle) + (kind basic) + (trans vector :inline))) (deftype ecoclaw (process-drawable) - ((particles ecoclaw-part-info 3 :inline) - ) + ((particles ecoclaw-part-info 3 :inline)) (:states - ecoclaw-activate - ecoclaw-idle - ) - ) - + ecoclaw-activate + ecoclaw-idle)) -(defskelgroup *ecoclaw-sg* ecoclaw ecoclaw-lod0-jg ecoclaw-idle-ja - ((ecoclaw-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 9) - ) +(defskelgroup *ecoclaw-sg* + ecoclaw + ecoclaw-lod0-jg + ecoclaw-idle-ja + ((ecoclaw-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 9)) (defun ecoclaw-beam-particle-callback ((arg0 part-tracker)) (let* ((a0-1 (the-as (pointer projectile) (-> arg0 userdata))) @@ -118,8 +87,7 @@ (a0-3 (-> a0-1 0 base-vector)) (gp-1 (vector-! (new 'stack-no-clear 'vector) a0-3 v1-1)) (f30-0 (vector-y-angle gp-1)) - (f0-1 (- 16384.0 (vector-x-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) @@ -143,11 +111,9 @@ (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* 2740 init-specs 13 initial-valuef) f0-1)) 0 - (none) - ) + (none)) ;; ERROR: Failed load: (set! a0-3 (l.wu (+ gp-1 -4))) at op 13 (defbehavior ecoclaw-handler ecoclaw ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -155,108 +121,66 @@ (('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 - ) - ) - ) - ) + (the-as basic (if (and (nonzero? gp-1) (type-type? (rtype-of gp-1) sparticle-launch-group)) gp-1)))) (set! (-> self particles 0 trans quad) (-> self root trans quad)) - (set! (-> self particles 0 trans y) (+ 12288.0 (-> self particles 0 trans y))) - ) + (set! (-> self particles 0 trans y) (+ 12288.0 (-> self particles 0 trans y)))) (('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 - ) - ) - ) - ) + (the-as basic (if (and (nonzero? s5-0) (type-type? (rtype-of s5-0) sparticle-launch-group)) s5-0)))) (set! (-> self particles 1 trans quad) (-> self root trans quad)) (+! (-> self particles 1 trans y) 24576.0) (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 - ) - ) - ) - ) + (the-as basic (if (and (nonzero? s5-1) (type-type? (rtype-of s5-1) sparticle-launch-group)) s5-1)))) (set! (-> self particles 2 trans quad) (-> (the-as vector (-> arg3 param 2)) quad)) - (set! (-> self particles 2 trans y) (+ 81920.0 (-> self particles 2 trans y))) - ) + (set! (-> self particles 2 trans y) (+ 81920.0 (-> self particles 2 trans y)))) (('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) - ) - ) - ) - ) - ) + (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) :event 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-time! (-> (the-as part-tracker (-> self particles gp-0 tracker process 0)) start-time)) - ) - ((-> self particles gp-0 kind) - (set! (-> self particles gp-0 tracker) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> self particles gp-0 kind) - -1 - ecoclaw-beam-particle-callback - (-> self ppointer) - #f - (&+ (&-> self stack 80) (* gp-0 32)) - :to self - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post ja-post - ) + :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-time! (-> (the-as part-tracker (-> self particles gp-0 tracker process 0)) start-time))) + ((-> self particles gp-0 kind) + (set! (-> self particles gp-0 tracker) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> self particles gp-0 kind) + -1 + ecoclaw-beam-particle-callback + (-> self ppointer) + #f + (&+ (&-> self stack 80) (* gp-0 32)) + :to + self))))))) + :code + (behavior () + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop + (suspend))) + :post ja-post) (defstate ecoclaw-idle (ecoclaw) :event ecoclaw-handler - :code (behavior () - (loop - (if (-> self particles 0 kind) - (go ecoclaw-activate) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (if (-> self particles 0 kind) (go ecoclaw-activate)) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this ecoclaw) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -264,92 +188,67 @@ (initialize-skeleton this *ecoclaw-sg* '()) (dotimes (v1-3 3) (set! (-> this particles v1-3 kind) #f) - (set! (-> this particles v1-3 tracker) (the-as handle #f)) - ) + (set! (-> this particles v1-3 tracker) (the-as handle #f))) (set! *ecoclaw* (the-as (pointer ecoclaw) (process->ppointer this))) (go ecoclaw-idle) - (none) - ) + (none)) (deftype silodoor (process-drawable) - ((part-opened float) - ) + ((part-opened float)) (:state-methods - idle - hidden - ) - ) + idle + hidden)) - -(defskelgroup *silodoor-sg* silodoor silodoor-lod0-jg silodoor-idle-ja - ((silodoor-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 25) - ) +(defskelgroup *silodoor-sg* + silodoor + silodoor-lod0-jg + silodoor-idle-ja + ((silodoor-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 25)) (defstate idle (silodoor) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('open) - (set! (-> self part-opened) (the-as float (-> block param 0))) - ) - (('hide) - (go-virtual hidden) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('open) (set! (-> self part-opened) (the-as float (-> block param 0)))) + (('hide) (go-virtual hidden)))) :trans rider-trans - :code (behavior () - (loop - (when (not (movie?)) - (ja :num! (seek! (* (-> self part-opened) (the float (ja-num-frames 0))) 0.01)) - (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)) - ) - ) - ) - (suspend) - ) - ) - :post (behavior () - (if (and (< (vector-vector-xz-distance (target-pos 0) (-> self root trans)) 57344.0) (not (ja-min? 0))) + :code + (behavior () + (loop + (when (not (movie?)) + (ja :num! (seek! (* (-> self part-opened) (the float (ja-num-frames 0))) 0.01)) + (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))))) + (suspend))) + :post + (behavior () + (if (and (< (vector-vector-xz-distance (target-pos 0) (-> self root trans)) 57344.0) (not (ja-min? 0))) (rider-post) - (transform-post) - ) - ) - ) + (transform-post)))) (defstate hidden (silodoor) :virtual #t - :code (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (logior! (-> self draw status) (draw-status hidden)) - (ja-post) - (while (not (task-closed? (game-task finalboss-movies) (task-status need-reminder-a))) - (suspend) - ) - (logclear! (-> self draw status) (draw-status hidden)) - (ja :num-func num-func-identity :frame-num 0.0) - (set! (-> self part-opened) 0.0) - (go-virtual idle) - ) - ) + :code + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (logior! (-> self draw status) (draw-status hidden)) + (ja-post) + (while (not (task-closed? (game-task finalboss-movies) (task-status need-reminder-a))) + (suspend)) + (logclear! (-> self draw status) (draw-status hidden)) + (ja :num-func num-func-identity :frame-num 0.0) + (set! (-> self part-opened) 0.0) + (go-virtual idle))) (defmethod init-from-entity! ((this silodoor) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders 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) (collide-kind ground-object)) @@ -365,8 +264,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 102400.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -374,8 +272,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 102400.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -383,8 +280,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 102400.0) - (append-prim s3-0 s2-2) - ) + (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) (collide-kind ground-object)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -392,92 +288,65 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 6) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 102400.0) - (append-prim s3-0 s2-3) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *silodoor-sg* '()) (logior! (-> this skel status) (janim-status inited)) (set! (-> this root pause-adjust-distance) 1228800.0) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "silo-moves" :fo-max 80) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "silo-moves" :fo-max 80) (-> this root trans))) (logclear! (-> this mask) (process-mask actor-pause crate enemy attackable)) (set! (-> this part-opened) 0.0) (go (method-of-object this idle)) - (none) - ) + (none)) (deftype finalbosscam (process-taskable) - ((robotboss handle) - ) - ) - + ((robotboss handle))) -(defskelgroup *finalbosscam-sg* finalbosscam finalbosscam-lod0-jg finalbosscam-idle-ja - ((finalbosscam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *finalbosscam-sg* + finalbosscam + finalbosscam-lod0-jg + finalbosscam-idle-ja + ((finalbosscam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defbehavior robotboss-manipy-trans-hook robotboss () (let ((gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg blue_eco_piece)) - (spawn (-> self part) gp-0) - ) + (spawn (-> self part) gp-0)) 0 - (none) - ) + (none)) (defmethod play-anim! ((this finalbosscam) (arg0 symbol)) (when arg0 (set! (-> this robotboss) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *robotboss-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *robotboss-sg* #f :to this))) (send-event (handle->process (-> this robotboss)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this robotboss)) 'center-joint 3) (send-event (handle->process (-> this robotboss)) 'origin-joint-index 3) (send-event (handle->process (-> this robotboss)) 'trans-hook robotboss-manipy-trans-hook) - (send-event - (handle->process (-> this robotboss)) - 'eval - (lambda :behavior finalbosscam () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 645) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) + (send-event (handle->process (-> this 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 (-> this 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 '())) - ) + (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 '()))) (defmethod get-art-elem ((this finalbosscam)) - (-> this draw art-group data 2) - ) + (-> this draw art-group data 2)) (defmethod should-display? ((this finalbosscam)) - #f - ) + #f) (defstate play-anim (finalbosscam) :virtual #t - :exit (behavior () - (let ((a0-1 (handle->process (-> self robotboss)))) - (if a0-1 - (deactivate a0-1) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self robotboss)))) (if a0-1 (deactivate a0-1))) + ((-> (method-of-type process-taskable play-anim) exit)))) (defbehavior finalbosscam-init-by-other finalbosscam ((arg0 entity-actor)) (set! (-> self entity) arg0) @@ -485,5 +354,4 @@ (set! (-> self tasks) (get-task-control (game-task finalboss-movies))) (set! (-> self robotboss) (the-as handle #f)) (go-virtual hidden) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/finalboss/robotboss-part.gc b/goal_src/jak1/levels/finalboss/robotboss-part.gc index 34ec76fffb..79020b92ed 100644 --- a/goal_src/jak1/levels/finalboss/robotboss-part.gc +++ b/goal_src/jak1/levels/finalboss/robotboss-part.gc @@ -1,3068 +1,2884 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: robotboss-part.gc -;; name in dgo: robotboss-part -;; dgos: FIN, L1 - ;; DECOMP BEGINS (defpartgroup group-robotboss-blue-beam :id 636 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 34) - :parts ((sp-item 2680) - (sp-item 2545 :binding 2542) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) - (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) - (sp-item 2543 :flags (bit1 start-dead)) - (sp-item 2544 :flags (bit1 start-dead)) - (sp-item 2543 :flags (bit1 start-dead)) - (sp-item 2544 :flags (bit1 start-dead)) - (sp-item 2543 :flags (bit1 start-dead)) - (sp-item 2544 :flags (bit1 start-dead)) - (sp-item 2543 :flags (bit1 start-dead)) - (sp-item 2544 :flags (bit1 start-dead)) - (sp-item 2543 :flags (bit1 start-dead)) - (sp-item 2544 :flags (bit1 start-dead)) - (sp-item 2543 :flags (bit1 start-dead)) - (sp-item 2546) - (sp-item 2548) - (sp-item 2547) - ) - ) + :parts + ((sp-item 2680) + (sp-item 2545 :binding 2542) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2543) + (sp-item 2542 :flags (bit1 start-dead launch-asap) :binding 2544) + (sp-item 2543 :flags (bit1 start-dead)) + (sp-item 2544 :flags (bit1 start-dead)) + (sp-item 2543 :flags (bit1 start-dead)) + (sp-item 2544 :flags (bit1 start-dead)) + (sp-item 2543 :flags (bit1 start-dead)) + (sp-item 2544 :flags (bit1 start-dead)) + (sp-item 2543 :flags (bit1 start-dead)) + (sp-item 2544 :flags (bit1 start-dead)) + (sp-item 2543 :flags (bit1 start-dead)) + (sp-item 2544 :flags (bit1 start-dead)) + (sp-item 2543 :flags (bit1 start-dead)) + (sp-item 2546) + (sp-item 2548) + (sp-item 2547))) (defpartgroup group-robotboss-blue-beam-impact :id 637 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 34) - :parts ((sp-item 2681) - (sp-item 2682 :period (seconds 1.12) :length (seconds 0.017)) - (sp-item 2682 :period (seconds 0.467) :length (seconds 0.017)) - (sp-item 2682 :period (seconds 0.205) :length (seconds 0.017)) - (sp-item 2683) - (sp-item 2549) - ) - ) + :parts + ((sp-item 2681) + (sp-item 2682 :period (seconds 1.12) :length (seconds 0.017)) + (sp-item 2682 :period (seconds 0.467) :length (seconds 0.017)) + (sp-item 2682 :period (seconds 0.205) :length (seconds 0.017)) + (sp-item 2683) + (sp-item 2549))) (defpart 2681 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 0.1) - (:y (meters -0.5)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 6) (meters 9)) - (:r 192.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.42666668)) - (:fade-r -2.1333334) - (:fade-g -1.4222223) - (:fade-b 0.7111111) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 0.1) + (:y (meters -0.5)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 6) (meters 9)) + (:r 192.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.42666668)) + (:fade-r -2.1333334) + (:fade-g -1.4222223) + (:fade-b 0.7111111) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2683 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -0.5) (meters 1)) - (:y (meters -2.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.2) - (:fade-g 0.0) - (:fade-b 0.0) - (:fade-a -0.21333334) - (:accel-x (meters 0.00066666666) (meters 0.00033333333)) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.97) - (:timer (seconds 2.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5)) - (:next-launcher 2684) - (:conerot-x (degrees 0) (degrees 45)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -0.5) (meters 1)) + (:y (meters -2.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.2) + (:fade-g 0.0) + (:fade-b 0.0) + (:fade-a -0.21333334) + (:accel-x (meters 0.00066666666) (meters 0.00033333333)) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.97) + (:timer (seconds 2.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5)) + (:next-launcher 2684) + (:conerot-x (degrees 0) (degrees 45)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2684 - :init-specs ((:fade-a -0.07111111)) - ) + :init-specs ((:fade-a -0.07111111))) (defpart 2549 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.25) - (:scale-x (meters 5) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 1 128.0) - (:g 64.0 1 64.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.25) + (:scale-x (meters 5) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 1 128.0) + (:g 64.0 1 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2682 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0 6.0) - (:y (meters 0)) - (:scale-x (meters 0.3) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 192.0 32.0) - (:b 192.0) - (:a 32.0 96.0) - (:vel-y (meters 0.033333335) (meters 0.10666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g -0.64) - (:fade-b -0.64) - (:accel-y (meters -0.0033333334) (meters -0.0033333334)) - (:friction 0.85) - (:timer (seconds 1)) - (:flags (bit0 bit2 bit14)) - (:conerot-x (degrees -90) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0 6.0) + (:y (meters 0)) + (:scale-x (meters 0.3) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 192.0 32.0) + (:b 192.0) + (:a 32.0 96.0) + (:vel-y (meters 0.033333335) (meters 0.10666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g -0.64) + (:fade-b -0.64) + (:accel-y (meters -0.0033333334) (meters -0.0033333334)) + (:friction 0.85) + (:timer (seconds 1)) + (:flags (bit0 bit2 bit14)) + (:conerot-x (degrees -90) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2545 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.025) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.07777778)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 1) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.025) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.07777778)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 1) (meters 0.5)))) (defpart 2542 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1) (meters 0.5)) - (:scale-x (meters 2.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1) (meters 0.5)) + (:scale-x (meters 2.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2543 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2544 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2546 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 2.0) - (:scale-x (meters 0.6) (meters 0.6)) - (:scale-y (meters 0.3) (meters 0.4)) - (:r 64.0 48.0) - (:g 64.0 48.0) - (:b 128.0) - (:a 128.0) - (:vel-y (meters 0.24666667)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 2.0) + (:scale-x (meters 0.6) (meters 0.6)) + (:scale-y (meters 0.3) (meters 0.4)) + (:r 64.0 48.0) + (:g 64.0 48.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.24666667)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 1)))) (defpart 2548 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.25) - (:scale-x (meters 6) (meters 3)) - (:scale-y (meters 4) (meters 3)) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 8.0 16.0) - (:vel-y (meters 0.12)) - (:scalevel-x (meters 0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.25) + (:scale-x (meters 6) (meters 3)) + (:scale-y (meters 4) (meters 3)) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 8.0 16.0) + (:vel-y (meters 0.12)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2547 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 5) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 32.0 32.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 5) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 32.0 32.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)))) (defpart 2680 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 192.0 64.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 0.085)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 192.0 64.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.085)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-robotboss-blue-blowup :id 644 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2591 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2592 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2593 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2594 :period (seconds 2) :length (seconds 0.135)) - ) - ) + :parts + ((sp-item 2591 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2592 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2593 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2594 :period (seconds 2) :length (seconds 0.135)))) (defpart 2592 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0)) - (:scale-x (meters 0.8) (meters 1.6)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 192.0 32.0) - (:b 192.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0053333333)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.6) - (:fade-g -1.6) - (:fade-b 0.0) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.3) (seconds 0.097)) - (:next-launcher 2595) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0)) + (:scale-x (meters 0.8) (meters 1.6)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 192.0 32.0) + (:b 192.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0053333333)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.6) + (:fade-g -1.6) + (:fade-b 0.0) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.3) (seconds 0.097)) + (:next-launcher 2595) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2595 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2594 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0)) - (:scale-x (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 32)) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.7066667)) - (:fade-r -2.1333334) - (:fade-g -1.4222223) - (:fade-b 0.7111111) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0)) + (:scale-x (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 32)) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.7066667)) + (:fade-r -2.1333334) + (:fade-g -1.4222223) + (:fade-b 0.7111111) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2591 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 64)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 192.0 32.0) - (:b 255.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 64)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 192.0 32.0) + (:b 255.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2593 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 8) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0 64.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0.16) (meters 0.08)) - (:scalevel-x (meters 0.033333335)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2596) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0 64.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0.16) (meters 0.08)) + (:scalevel-x (meters 0.033333335)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2596) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 6)))) (defpart 2596 - :init-specs ((:fade-r -2.1333334) (:fade-g -1.0666667) (:fade-b 0.0) (:next-time (seconds 0.2)) (:next-launcher 2597)) - ) + :init-specs ((:fade-r -2.1333334) (:fade-g -1.0666667) (:fade-b 0.0) (:next-time (seconds 0.2)) (:next-launcher 2597))) (defpart 2597 - :init-specs ((:fade-r 0.0) - (:fade-g -0.28444445) - (:fade-b 0.0) - (:fade-a -0.42666668) - (:next-time (seconds 0.5)) - (:next-launcher 2598) - ) - ) + :init-specs + ((:fade-r 0.0) + (:fade-g -0.28444445) + (:fade-b 0.0) + (:fade-a -0.42666668) + (:next-time (seconds 0.5)) + (:next-launcher 2598))) (defpart 2598 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-robotboss-blue-smoke :id 645 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2685 :period (seconds 0.12) :length (seconds 0.017)) - (sp-item 2685 :period (seconds 0.467) :length (seconds 0.017)) - (sp-item 2685 :period (seconds 0.205) :length (seconds 0.017)) - (sp-item 2599 :period (seconds 0.05) :length (seconds 0.017)) - (sp-item 2686) - ) - ) + :parts + ((sp-item 2685 :period (seconds 0.12) :length (seconds 0.017)) + (sp-item 2685 :period (seconds 0.467) :length (seconds 0.017)) + (sp-item 2685 :period (seconds 0.205) :length (seconds 0.017)) + (sp-item 2599 :period (seconds 0.05) :length (seconds 0.017)) + (sp-item 2686))) (defpart 2686 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.25) - (:y (meters 0)) - (:scale-x (meters 4) (meters 16)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 192.0 32.0) - (:b 255.0) - (:a 32.0 64.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.25) + (:y (meters 0)) + (:scale-x (meters 4) (meters 16)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 192.0 32.0) + (:b 255.0) + (:a 32.0 64.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2599 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 4) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0 64.0) - (:b 255.0) - (:a 32.0 32.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.9) - (:timer (seconds 2.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067) (seconds 0.297)) - (:next-launcher 2596) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0 64.0) + (:b 255.0) + (:a 32.0 32.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.9) + (:timer (seconds 2.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067) (seconds 0.297)) + (:next-launcher 2596))) (defpart 2685 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.0 1 8.0) - (:y (meters 0)) - (:scale-x (meters 0.6) (meters 1)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 192.0 32.0) - (:b 192.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.6) - (:fade-g -1.6) - (:fade-b 0.0) - (:accel-y (meters -0.0018333334) (meters -0.0018333334)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.3) (seconds 0.097)) - (:next-launcher 2595) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.0 1 8.0) + (:y (meters 0)) + (:scale-x (meters 0.6) (meters 1)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 192.0 32.0) + (:b 192.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.6) + (:fade-g -1.6) + (:fade-b 0.0) + (:accel-y (meters -0.0018333334) (meters -0.0018333334)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.3) (seconds 0.097)) + (:next-launcher 2595) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpartgroup group-robotboss-darkecobomb-launch :id 638 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2600 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2602 :period (seconds 2) :length (seconds 0.135)) - ) - ) + :parts ((sp-item 2600 :period (seconds 2) :length (seconds 0.017)) (sp-item 2602 :period (seconds 2) :length (seconds 0.135)))) (defpart 2600 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 64)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.185)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 64)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.185)) + (:flags (bit2 bit3 bit14)))) (defpart 2602 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 8.0) - (:scale-x (meters 8) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 16.0 48.0) - (:vel-y (meters 0.21333334) (meters 0.08)) - (:scalevel-x (meters 0.053333335)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.95) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 8.0) + (:scale-x (meters 8) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 16.0 48.0) + (:vel-y (meters 0.21333334) (meters 0.08)) + (:scalevel-x (meters 0.053333335)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.95) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2)))) (defpartgroup group-robotboss-darkecobomb-glow :id 639 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2753) - (sp-item 2754) - (sp-item 2755 :fade-after (meters 120) :falloff-to (meters 140) :binding 2752) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) - ) - ) + :parts + ((sp-item 2753) + (sp-item 2754) + (sp-item 2755 :fade-after (meters 120) :falloff-to (meters 140) :binding 2752) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2752 :flags (bit1 start-dead launch-asap) :binding 2671))) (defpart 2755 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:y (meters 0)) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:y (meters 0)) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root-prim))) (defpart 2752 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:z (meters 2.25)) - (:scale-x (meters 4) (meters 1)) - (:scale-y (meters 2) (meters 0.2)) - (:r 0.0) - (:g 0.0 128.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7 bit14)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:z (meters 2.25)) + (:scale-x (meters 4) (meters 1)) + (:scale-y (meters 2) (meters 0.2)) + (:r 0.0) + (:g 0.0 128.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7 bit14)) + (:func 'sparticle-track-root-prim))) (defpart 2753 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.0 1.0) - (:y (meters 4)) - (:scale-x (meters 2) (meters 2)) - (:scale-y (meters 8) (meters 2)) - (:r 0.0) - (:g 0.0 128.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -1.0666667) - (:timer (seconds 0.067) (seconds 0.097)) - (:flags (bit2 bit3)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.0 1.0) + (:y (meters 4)) + (:scale-x (meters 2) (meters 2)) + (:scale-y (meters 8) (meters 2)) + (:r 0.0) + (:g 0.0 128.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -1.0666667) + (:timer (seconds 0.067) (seconds 0.097)) + (:flags (bit2 bit3)) + (:func 'sparticle-track-root-prim))) (defpart 2754 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.0 1.0) - (:y (meters -3)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 180)) - (:scale-y (meters 8) (meters 2)) - (:r 0.0) - (:g 0.0 128.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -1.0666667) - (:timer (seconds 0.067) (seconds 0.097)) - (:flags (bit2 bit3)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.0 1.0) + (:y (meters -3)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 180)) + (:scale-y (meters 8) (meters 2)) + (:r 0.0) + (:g 0.0 128.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -1.0666667) + (:timer (seconds 0.067) (seconds 0.097)) + (:flags (bit2 bit3)) + (:func 'sparticle-track-root-prim))) (defpartgroup group-robotboss-darkecobomb-tick :id 663 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2756) (sp-item 2757) (sp-item 2758) (sp-item 2759)) - ) + :parts ((sp-item 2756) (sp-item 2757) (sp-item 2758) (sp-item 2759))) (defpart 2759 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.5) - (:y (meters 0)) - (:scale-x (meters 10) (meters 16)) - (:scale-y :copy scale-x) - (:g 0.0 128.0) - (:b 128.0 128.0) - (:a 128.0) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.1333334) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.5) + (:y (meters 0)) + (:scale-x (meters 10) (meters 16)) + (:scale-y :copy scale-x) + (:g 0.0 128.0) + (:b 128.0 128.0) + (:a 128.0) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.1333334) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2758 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.2 1.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 16) (meters 6)) - (:rot-x 4) - (:rot-z (degrees -160) (degrees 140)) - (:scale-y (meters 0.6) (meters 0.3)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.2 1.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 16) (meters 6)) + (:rot-x 4) + (:rot-z (degrees -160) (degrees 140)) + (:scale-y (meters 0.6) (meters 0.3)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2757 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 1.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 16) (meters 6)) - (:rot-x 4) - (:rot-z (degrees -160) (degrees 140)) - (:scale-y (meters 0.6) (meters 0.3)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 1.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 16) (meters 6)) + (:rot-x 4) + (:rot-z (degrees -160) (degrees 140)) + (:scale-y (meters 0.6) (meters 0.3)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2756 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 16) (meters 6)) - (:rot-x 4) - (:rot-z (degrees -160) (degrees 140)) - (:scale-y (meters 0.6) (meters 0.3)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 16) (meters 6)) + (:rot-x 4) + (:rot-z (degrees -160) (degrees 140)) + (:scale-y (meters 0.6) (meters 0.3)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpartgroup group-final-boss-mine-explosion :id 619 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2500 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)) - (sp-item 2501 :period (seconds 3) :length (seconds 0.017)) - (sp-item 2502 :period (seconds 3) :length (seconds 0.135)) - (sp-item 2503 :period (seconds 3) :length (seconds 0.067) :binding 2499) - (sp-item 2504 :period (seconds 3) :length (seconds 0.135)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2499 :flags (start-dead)) - (sp-item 2505 :period (seconds 3) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2500 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)) + (sp-item 2501 :period (seconds 3) :length (seconds 0.017)) + (sp-item 2502 :period (seconds 3) :length (seconds 0.135)) + (sp-item 2503 :period (seconds 3) :length (seconds 0.067) :binding 2499) + (sp-item 2504 :period (seconds 3) :length (seconds 0.135)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2499 :flags (start-dead)) + (sp-item 2505 :period (seconds 3) :length (seconds 0.067)))) (defpart 2503 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:y (meters 0)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0.64) (meters 0.85333335)) - (:scalevel-x (meters 0)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.007166667) (meters -0.013833334)) - (:friction 0.88 0.04) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 35) (degrees 55)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:y (meters 0)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0.64) (meters 0.85333335)) + (:scalevel-x (meters 0)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.007166667) (meters -0.013833334)) + (:friction 0.88 0.04) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 35) (degrees 55)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 10)))) (defpart 2499 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.01) (meters 0.01)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2506) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2506))) (defpart 2506 - :init-specs ((:fade-r -0.14222223) (:fade-g -0.14222223) (:fade-b -0.14222223)) - ) + :init-specs ((:fade-r -0.14222223) (:fade-g -0.14222223) (:fade-b -0.14222223))) (defpart 2502 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 64.0) - (:y (meters 0)) - (:scale-x (meters 2.6) (meters 2)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 192.0 64.0) - (:b 192.0) - (:a 16.0 112.0) - (:vel-y (meters 0.64) (meters 1.28)) - (:scalevel-x (meters -0.009333333)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.4222223) - (:fade-g -1.4222223) - (:accel-y (meters -0.0011666666) (meters -0.011166667)) - (:friction 0.85) - (:timer (seconds 2.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2507) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 64.0) + (:y (meters 0)) + (:scale-x (meters 2.6) (meters 2)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 192.0 64.0) + (:b 192.0) + (:a 16.0 112.0) + (:vel-y (meters 0.64) (meters 1.28)) + (:scalevel-x (meters -0.009333333)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.4222223) + (:fade-g -1.4222223) + (:accel-y (meters -0.0011666666) (meters -0.011166667)) + (:friction 0.85) + (:timer (seconds 2.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2507) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 12)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2507 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.21333334)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.21333334))) (defpart 2505 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0)) - (:scale-x (meters 0.6) (meters 0.2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 256)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 96.0) - (:scalevel-y (meters 6)) - (:fade-r -1.6) - (:fade-g -1.0666667) - (:fade-b 1.0666667) - (:fade-a -1.0666667) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0)) + (:scale-x (meters 0.6) (meters 0.2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 256)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 96.0) + (:scalevel-y (meters 6)) + (:fade-r -1.6) + (:fade-g -1.0666667) + (:fade-b 1.0666667) + (:fade-a -1.0666667) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)))) (defpart 2501 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 160)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.7066667) - (:timer (seconds 0.25)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 160)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.7066667) + (:timer (seconds 0.25)) + (:flags (bit2 bit3 bit14)))) (defpart 2504 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 32.0) - (:y (meters 10)) - (:scale-x (meters 20) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 255.0) - (:a 16.0 80.0) - (:vel-y (meters 0.21333334) (meters 0.42666668)) - (:scalevel-x (meters 0.06666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.0005) (meters 0.0005)) - (:friction 0.87) - (:timer (seconds 2.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2508) - (:conerot-x (degrees 60) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 20)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 32.0) + (:y (meters 10)) + (:scale-x (meters 20) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 255.0) + (:a 16.0 80.0) + (:vel-y (meters 0.21333334) (meters 0.42666668)) + (:scalevel-x (meters 0.06666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.0005) (meters 0.0005)) + (:friction 0.87) + (:timer (seconds 2.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2508) + (:conerot-x (degrees 60) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 20)))) (defpart 2508 - :init-specs ((:fade-r -1.6) (:fade-g -1.6) (:fade-b -1.0666667) (:next-time (seconds 0.2)) (:next-launcher 2509)) - ) + :init-specs ((:fade-r -1.6) (:fade-g -1.6) (:fade-b -1.0666667) (:next-time (seconds 0.2)) (:next-launcher 2509))) (defpart 2509 - :init-specs ((:fade-r -0.26666668) - (:fade-g -0.26666668) - (:fade-b -0.17777778) - (:fade-a -0.16) - (:next-time (seconds 0.6)) - (:next-launcher 2510) - ) - ) + :init-specs + ((:fade-r -0.26666668) + (:fade-g -0.26666668) + (:fade-b -0.17777778) + (:fade-a -0.16) + (:next-time (seconds 0.6)) + (:next-launcher 2510))) (defpart 2510 - :init-specs ((:fade-r -0.114285715) (:fade-g -0.114285715) (:fade-b 0.0)) - ) + :init-specs ((:fade-r -0.114285715) (:fade-g -0.114285715) (:fade-b 0.0))) (defpart 2500 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 4.0) - (:y (meters 10)) - (:scale-x (meters 30)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 255.0) - (:a 128.0) - (:scalevel-x (meters 0.33333334) (meters 0.6666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1.1)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 0.2)) - (:next-launcher 2511) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 4.0) + (:y (meters 10)) + (:scale-x (meters 30)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters 0.33333334) (meters 0.6666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1.1)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 0.2)) + (:next-launcher 2511))) (defpart 2511 - :init-specs ((:fade-a -1.4222223)) - ) + :init-specs ((:fade-a -1.4222223))) (defpartgroup group-robotboss-greenshot-launch :id 640 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2799 :period (seconds 2) :length (seconds 0.035)) - (sp-item 2800 :period (seconds 2) :length (seconds 0.035)) - (sp-item 2801 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2802 :period (seconds 2) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 2799 :period (seconds 2) :length (seconds 0.035)) + (sp-item 2800 :period (seconds 2) :length (seconds 0.035)) + (sp-item 2801 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2802 :period (seconds 2) :length (seconds 0.035)))) (defpart 2800 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 16.0) - (:scale-x (meters 32) (meters 128)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2) (meters 4)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.01953125)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.01953125)) - (:fade-a 1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2803) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 16.0) + (:scale-x (meters 32) (meters 128)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2) (meters 4)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.01953125)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.01953125)) + (:fade-a 1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2803))) (defpart 2803 - :init-specs ((:fade-a -1.6)) - ) + :init-specs ((:fade-a -1.6))) (defpart 2801 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:scale-x (meters 32) (meters 32)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 4)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.01953125)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 4.266667) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2803) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:scale-x (meters 32) (meters 32)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 4)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.01953125)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 4.266667) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2803))) (defpart 2802 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 100)) - (:rot-z (degrees 0)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0) - (:rotvel-z (degrees -0.8)) - (:fade-a -1.6) - (:timer (seconds 0.267)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.135)) - (:next-launcher 2804) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 100)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0) + (:rotvel-z (degrees -0.8)) + (:fade-a -1.6) + (:timer (seconds 0.267)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.135)) + (:next-launcher 2804))) (defpart 2799 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 255.0) - (:b 128.0) - (:a 128.0) - (:scalevel-x (meters 0.4)) - (:rotvel-z (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.7066667) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 255.0) + (:b 128.0) + (:a 128.0) + (:scalevel-x (meters 0.4)) + (:rotvel-z (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.7066667) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-robotboss-greenshot :id 664 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2769 :binding 2766) - (sp-item 2766 :flags (bit1 start-dead launch-asap) :binding 2767) - (sp-item 2767 :flags (start-dead) :binding 2768) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - (sp-item 2768 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 2769 :binding 2766) + (sp-item 2766 :flags (bit1 start-dead launch-asap) :binding 2767) + (sp-item 2767 :flags (start-dead) :binding 2768) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)) + (sp-item 2768 :flags (start-dead launch-asap)))) (defpart 2769 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:y (meters 0)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:b 0.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:y (meters 0)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:b 0.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root))) (defpart 2766 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 2.25)) - (:scale-x (meters 3)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.10666667)) - (:vel-z (meters 0)) - (:timer (seconds 4)) - (:flags (bit3 bit7)) - (:func 'sparticle-track-root-prim) - (:next-time (seconds 0.035)) - (:next-launcher 2770) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 2.25)) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.10666667)) + (:vel-z (meters 0)) + (:timer (seconds 4)) + (:flags (bit3 bit7)) + (:func 'sparticle-track-root-prim) + (:next-time (seconds 0.035)) + (:next-launcher 2770))) (defpart 2770 - :init-specs ((:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0 128.0) - (:b 128.0 128.0) - (:next-time (seconds 0.035)) - (:next-launcher 2770) - ) - ) + :init-specs + ((:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0 128.0) + (:b 128.0 128.0) + (:next-time (seconds 0.035)) + (:next-launcher 2770))) (defpart 2767 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0 64.0) - (:a 128.0) - (:scalevel-x (meters -0.026666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -2.1333334) - (:fade-b -1.0666667) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:next-time (seconds 0.27)) - (:next-launcher 2771) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0 64.0) + (:a 128.0) + (:scalevel-x (meters -0.026666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -2.1333334) + (:fade-b -1.0666667) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:next-time (seconds 0.27)) + (:next-launcher 2771) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.1)))) (defpart 2771 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 2768 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 5.0) - (:scale-x (meters 1) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0 64.0) - (:a 128.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:scalevel-x (meters -0.008333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -3.2) - (:fade-b -1.0666667) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit0 bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 2771) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 5.0) + (:scale-x (meters 1) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0 64.0) + (:a 128.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:scalevel-x (meters -0.008333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -3.2) + (:fade-b -1.0666667) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit0 bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 2771) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1) (meters 1)))) (defpartgroup group-robotboss-redshot-charge :id 646 :duration (seconds 3) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2699) (sp-item 2700) (sp-item 2701)) - ) + :parts ((sp-item 2699) (sp-item 2700) (sp-item 2701))) (defpart 2699 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 3.0) - (:scale-x (meters 12) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.5) (meters 1)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 4.266667) - (:timer (seconds 0.335)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2703) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 3.0) + (:scale-x (meters 12) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.5) (meters 1)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 4.266667) + (:timer (seconds 0.335)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2703))) (defpart 2703 - :init-specs ((:fade-a -1.4222221)) - ) + :init-specs ((:fade-a -1.4222221))) (defpart 2700 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 1.0) - (:scale-x (meters 8) (meters 32)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2.5)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 1.4222221) - (:timer (seconds 0.135)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2703) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 1.0) + (:scale-x (meters 8) (meters 32)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2.5)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 1.4222221) + (:timer (seconds 0.135)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2703))) (defpart 2701 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 128.0) - (:scalevel-x (meters 0.4)) - (:rotvel-z (degrees -0.8)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.05)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters 0.4)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.05)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-robotboss-redshot-launch :id 641 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2805 :period (seconds 2) :length (seconds 0.035)) - (sp-item 2806 :period (seconds 2) :length (seconds 0.035)) - (sp-item 2807 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2808 :period (seconds 2) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 2805 :period (seconds 2) :length (seconds 0.035)) + (sp-item 2806 :period (seconds 2) :length (seconds 0.035)) + (sp-item 2807 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2808 :period (seconds 2) :length (seconds 0.035)))) (defpart 2806 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 16.0) - (:scale-x (meters 32) (meters 128)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2) (meters 4)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.01953125)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.01953125)) - (:fade-a 1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2809) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 16.0) + (:scale-x (meters 32) (meters 128)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2) (meters 4)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.01953125)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.01953125)) + (:fade-a 1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2809))) (defpart 2809 - :init-specs ((:fade-a -1.6)) - ) + :init-specs ((:fade-a -1.6))) (defpart 2807 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:scale-x (meters 32) (meters 32)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 4)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.01953125)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 4.266667) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2809) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:scale-x (meters 32) (meters 32)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 4)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.01953125)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 4.266667) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2809))) (defpart 2808 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 100)) - (:rot-z (degrees 0)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 32.0) - (:rotvel-z (degrees -0.8)) - (:fade-a -1.6) - (:timer (seconds 0.267)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.135)) - (:next-launcher 2810) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 100)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 32.0) + (:rotvel-z (degrees -0.8)) + (:fade-a -1.6) + (:timer (seconds 0.267)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.135)) + (:next-launcher 2810))) (defpart 2805 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 64.0) - (:b 128.0) - (:a 128.0) - (:scalevel-x (meters 0.4)) - (:rotvel-z (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.7066667) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 64.0) + (:b 128.0) + (:a 128.0) + (:scalevel-x (meters 0.4)) + (:rotvel-z (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.7066667) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-robotboss-redshot-body :id 665 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2709) (sp-item 2710) (sp-item 2711)) - ) + :parts ((sp-item 2709) (sp-item 2710) (sp-item 2711))) (defpart 2710 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0)) - (:timer (seconds 0.017)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0)) + (:timer (seconds 0.017)) + (:flags (bit2)))) (defpart 2711 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 6) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0)) - (:timer (seconds 0.017)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 6) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0)) + (:timer (seconds 0.017)) + (:flags (bit2)))) (defpart 2709 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 8.0) - (:y (meters 1)) - (:scale-x (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-g -4.266667) - (:fade-a -0.42666668) - (:timer (seconds 0.035)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 1440)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 8.0) + (:y (meters 1)) + (:scale-x (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-g -4.266667) + (:fade-a -0.42666668) + (:timer (seconds 0.035)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 1440)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 1)))) (defpartgroup group-robotboss-redshot-warning :id 647 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2712) (sp-item 2713) (sp-item 2714 :period (seconds 0.15) :length (seconds 0.017))) - ) + :parts ((sp-item 2712) (sp-item 2713) (sp-item 2714 :period (seconds 0.15) :length (seconds 0.017)))) (defpart 2714 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 10) (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:scalevel-x (meters -0.06666667)) - (:rotvel-z (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-a -2.1333334) - (:timer (seconds 0.15)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 10) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:scalevel-x (meters -0.06666667)) + (:rotvel-z (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-a -2.1333334) + (:timer (seconds 0.15)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.25)))) (defpart 2712 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 8.0) - (:y (meters 1)) - (:scale-x (meters 2) (meters 4)) - (:rot-x 4) - (:rot-z (degrees -720) (degrees 1440)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 64.0) - (:scalevel-x (meters 0.08)) - (:fade-r 0.0) - (:fade-g -6.4) - (:fade-b -4.266667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 8.0) + (:y (meters 1)) + (:scale-x (meters 2) (meters 4)) + (:rot-x 4) + (:rot-z (degrees -720) (degrees 1440)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 64.0) + (:scalevel-x (meters 0.08)) + (:fade-r 0.0) + (:fade-g -6.4) + (:fade-b -4.266667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2713 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 2.0 16.0) - (:y (meters 1)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.1) (seconds 0.097)) - (:flags (bit0 bit2 bit14)) - (:conerot-x (degrees -180) (degrees 720)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 2.0 16.0) + (:y (meters 1)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.1) (seconds 0.097)) + (:flags (bit0 bit2 bit14)) + (:conerot-x (degrees -180) (degrees 720)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 1)))) (defpartgroup group-robotboss-redshot :id 648 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2626 :flags (is-3d))) - ) + :parts ((sp-item 2626 :flags (is-3d)))) (defpart 2626 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 10)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 255.0) - (:b 0.0) - (:a 96.0 32.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 255.0) + (:b 0.0) + (:a 96.0 32.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-robotboss-redshot-test :id 679 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2772)) - ) + :parts ((sp-item 2772))) (defpart 2772 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 255.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -2.8444443) - (:timer (seconds 0.135)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 255.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -2.8444443) + (:timer (seconds 0.135)) + (:flags (bit2 bit3)))) (defpartgroup group-robotboss-red-blowup :id 649 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2629 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2630 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2631 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2632 :period (seconds 2) :length (seconds 0.135)) - ) - ) + :parts + ((sp-item 2629 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2630 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2631 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2632 :period (seconds 2) :length (seconds 0.135)))) (defpart 2630 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0)) - (:scale-x (meters 0.8) (meters 1.6)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0 32.0) - (:b 192.0 32.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0053333333)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.6) - (:fade-g -1.6) - (:fade-b 0.0) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.3) (seconds 0.097)) - (:next-launcher 2633) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0)) + (:scale-x (meters 0.8) (meters 1.6)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0 32.0) + (:b 192.0 32.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0053333333)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.6) + (:fade-g -1.6) + (:fade-b 0.0) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.3) (seconds 0.097)) + (:next-launcher 2633) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2633 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2632 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0)) - (:scale-x (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 32)) - (:r 192.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.7066667)) - (:fade-r -2.1333334) - (:fade-g -1.4222223) - (:fade-b 0.7111111) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0)) + (:scale-x (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 32)) + (:r 192.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.7066667)) + (:fade-r -2.1333334) + (:fade-g -1.4222223) + (:fade-b 0.7111111) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2629 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 64)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 64)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2631 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 8) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.16) (meters 0.08)) - (:scalevel-x (meters 0.033333335)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2634) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.16) (meters 0.08)) + (:scalevel-x (meters 0.033333335)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2634) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 6)))) (defpart 2634 - :init-specs ((:fade-r 0.0) (:fade-g -1.0666667) (:fade-b -2.1333334) (:next-time (seconds 0.2)) (:next-launcher 2635)) - ) + :init-specs ((:fade-r 0.0) (:fade-g -1.0666667) (:fade-b -2.1333334) (:next-time (seconds 0.2)) (:next-launcher 2635))) (defpart 2635 - :init-specs ((:fade-r 0.0) - (:fade-g -0.28444445) - (:fade-b 0.0) - (:fade-a -0.42666668) - (:next-time (seconds 0.5)) - (:next-launcher 2636) - ) - ) + :init-specs + ((:fade-r 0.0) + (:fade-g -0.28444445) + (:fade-b 0.0) + (:fade-a -0.42666668) + (:next-time (seconds 0.5)) + (:next-launcher 2636))) (defpart 2636 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-robotboss-red-smoke :id 650 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2776 :period (seconds 0.12) :length (seconds 0.017)) - (sp-item 2776 :period (seconds 0.467) :length (seconds 0.017)) - (sp-item 2776 :period (seconds 0.205) :length (seconds 0.017)) - (sp-item 2637 :period (seconds 0.05) :length (seconds 0.017)) - (sp-item 2777) - ) - ) + :parts + ((sp-item 2776 :period (seconds 0.12) :length (seconds 0.017)) + (sp-item 2776 :period (seconds 0.467) :length (seconds 0.017)) + (sp-item 2776 :period (seconds 0.205) :length (seconds 0.017)) + (sp-item 2637 :period (seconds 0.05) :length (seconds 0.017)) + (sp-item 2777))) (defpart 2777 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 0) (meters 4)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 32.0 64.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 0) (meters 4)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 32.0 64.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2637 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 4) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.9) - (:timer (seconds 2.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067) (seconds 0.297)) - (:next-launcher 2596) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 4) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.9) + (:timer (seconds 2.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067) (seconds 0.297)) + (:next-launcher 2596))) (defpart 2776 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.0 1 8.0) - (:y (meters 0)) - (:scale-x (meters 0.6) (meters 1)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0 32.0) - (:b 192.0 32.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g -1.6) - (:fade-b -1.6) - (:accel-y (meters -0.0018333334) (meters -0.0018333334)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.3) (seconds 0.097)) - (:next-launcher 2595) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.0 1 8.0) + (:y (meters 0)) + (:scale-x (meters 0.6) (meters 1)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0 32.0) + (:b 192.0 32.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g -1.6) + (:fade-b -1.6) + (:accel-y (meters -0.0018333334) (meters -0.0018333334)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.3) (seconds 0.097)) + (:next-launcher 2595) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpartgroup group-robotboss-yellowshot-launch :id 642 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2778 :period (seconds 2) :length (seconds 0.035)) - (sp-item 2779 :period (seconds 2) :length (seconds 0.035)) - (sp-item 2780 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2781 :period (seconds 2) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 2778 :period (seconds 2) :length (seconds 0.035)) + (sp-item 2779 :period (seconds 2) :length (seconds 0.035)) + (sp-item 2780 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2781 :period (seconds 2) :length (seconds 0.035)))) (defpart 2779 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 16.0) - (:scale-x (meters 32) (meters 128)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2) (meters 4)) - (:r 128.0 128.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.01953125)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.01953125)) - (:fade-a 1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2782) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 16.0) + (:scale-x (meters 32) (meters 128)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2) (meters 4)) + (:r 128.0 128.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.01953125)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.01953125)) + (:fade-a 1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2782))) (defpart 2782 - :init-specs ((:fade-a -1.6)) - ) + :init-specs ((:fade-a -1.6))) (defpart 2780 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:scale-x (meters 32) (meters 32)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 4)) - (:r 128.0 128.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.01953125)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 4.266667) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2782) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:scale-x (meters 32) (meters 32)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 4)) + (:r 128.0 128.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.01953125)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 4.266667) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2782))) (defpart 2781 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 100)) - (:rot-z (degrees 0)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0) - (:rotvel-z (degrees -0.8)) - (:fade-a -1.6) - (:timer (seconds 0.267)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.135)) - (:next-launcher 2783) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 100)) + (:rot-z (degrees 0)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0) + (:rotvel-z (degrees -0.8)) + (:fade-a -1.6) + (:timer (seconds 0.267)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.135)) + (:next-launcher 2783))) (defpart 2778 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 128.0) - (:a 128.0) - (:scalevel-x (meters 0.4)) - (:rotvel-z (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.7066667) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 128.0) + (:a 128.0) + (:scalevel-x (meters 0.4)) + (:rotvel-z (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.7066667) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-robotboss-yellowshot-charge :id 651 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2811) (sp-item 2812) (sp-item 2813)) - ) + :parts ((sp-item 2811) (sp-item 2812) (sp-item 2813))) (defpart 2811 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 3.0) - (:scale-x (meters 16) (meters 1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.5) (meters 1)) - (:r 128.0 128.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 4.266667) - (:timer (seconds 0.335)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2814) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 3.0) + (:scale-x (meters 16) (meters 1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.5) (meters 1)) + (:r 128.0 128.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 4.266667) + (:timer (seconds 0.335)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2814))) (defpart 2814 - :init-specs ((:fade-a -1.4222221)) - ) + :init-specs ((:fade-a -1.4222221))) (defpart 2812 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 32)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2.5)) - (:r 128.0 128.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 1.4222221) - (:timer (seconds 0.135)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.065)) - (:next-launcher 2814) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 32)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2.5)) + (:r 128.0 128.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 1.4222221) + (:timer (seconds 0.135)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.065)) + (:next-launcher 2814))) (defpart 2813 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 10) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:scalevel-x (meters 0.4)) - (:rotvel-z (degrees -0.8)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.05)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 10) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.4)) + (:rotvel-z (degrees -0.8)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.05)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-robotboss-yellowshot :id 652 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2815) (sp-item 2816) (sp-item 2817) (sp-item 2818) (sp-item 2819)) - ) + :parts ((sp-item 2815) (sp-item 2816) (sp-item 2817) (sp-item 2818) (sp-item 2819))) (defpart 2816 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 32.0) - (:scale-x (meters 0.6) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 96.0 64.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-g -4.266667) - (:fade-a -0.42666668) - (:timer (seconds 0.035)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 1440)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 32.0) + (:scale-x (meters 0.6) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 96.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-g -4.266667) + (:fade-a -0.42666668) + (:timer (seconds 0.035)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 1440)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 2)))) (defpart 2819 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 8.0) - (:y (meters 1)) - (:scale-x (meters 8) (meters 4)) - (:rot-z (degrees -720) (degrees 1440)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 64.0) - (:scalevel-x (meters 0.08)) - (:fade-r 0.0) - (:fade-g -6.4) - (:fade-b -4.266667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 8.0) + (:y (meters 1)) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees -720) (degrees 1440)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 64.0) + (:scalevel-x (meters 0.08)) + (:fade-r 0.0) + (:fade-g -6.4) + (:fade-b -4.266667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2815 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 2.0 16.0) - (:y (meters 1)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-a -2.1333334) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.1) (seconds 0.097)) - (:flags (bit0 bit2 bit14)) - (:conerot-x (degrees -180) (degrees 720)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 2.0 16.0) + (:y (meters 1)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-a -2.1333334) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.1) (seconds 0.097)) + (:flags (bit0 bit2 bit14)) + (:conerot-x (degrees -180) (degrees 720)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 1)))) (defpart 2817 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:scale-x (meters 5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0)) - (:scalevel-x (meters -0.10666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -1.7066667) - (:fade-a -1.7066667) - (:timer (seconds 0.25)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:scale-x (meters 5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0)) + (:scalevel-x (meters -0.10666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.7066667) + (:fade-a -1.7066667) + (:timer (seconds 0.25)) + (:flags (bit2)))) (defpart 2818 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 10) (meters 1.6)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0)) - (:timer (seconds 0.017)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 10) (meters 1.6)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0)) + (:timer (seconds 0.017)) + (:flags (bit2)))) (defpartgroup group-robotboss-yellow-blowup :id 653 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2648 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2649 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2650 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2651 :period (seconds 2) :length (seconds 0.135)) - ) - ) + :parts + ((sp-item 2648 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2649 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2650 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2651 :period (seconds 2) :length (seconds 0.135)))) (defpart 2649 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0)) - (:scale-x (meters 1) (meters 2)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0.10666667) (meters 0.30666667)) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.7111111) - (:fade-g -1.4222223) - (:fade-b 0.0) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.3) (seconds 0.097)) - (:next-launcher 2652) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0)) + (:scale-x (meters 1) (meters 2)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0.10666667) (meters 0.30666667)) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.7111111) + (:fade-g -1.4222223) + (:fade-b 0.0) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.3) (seconds 0.097)) + (:next-launcher 2652) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2652 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2651 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0)) - (:scale-x (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 64)) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 0.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.7066667)) - (:fade-r -0.7111111) - (:fade-g -1.4222223) - (:fade-b 0.0) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0)) + (:scale-x (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 64)) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 0.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.7066667)) + (:fade-r -0.7111111) + (:fade-g -1.4222223) + (:fade-b 0.0) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2648 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 128)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 192.0 64.0) - (:b 128.0 64.0) - (:a 0.0 32.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 128)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 192.0 64.0) + (:b 128.0 64.0) + (:a 0.0 32.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2650 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 16) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.21333334) (meters 0.12)) - (:scalevel-x (meters 0.033333335)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2653) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 16) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.21333334) (meters 0.12)) + (:scalevel-x (meters 0.033333335)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2653) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 12)))) (defpart 2653 - :init-specs ((:fade-r 0.0) (:fade-g -1.0666667) (:fade-b -2.1333334) (:next-time (seconds 0.2)) (:next-launcher 2654)) - ) + :init-specs ((:fade-r 0.0) (:fade-g -1.0666667) (:fade-b -2.1333334) (:next-time (seconds 0.2)) (:next-launcher 2654))) (defpart 2654 - :init-specs ((:fade-r -0.28444445) - (:fade-g -0.28444445) - (:fade-b 0.0) - (:fade-a -0.42666668) - (:next-time (seconds 0.5)) - (:next-launcher 2655) - ) - ) + :init-specs + ((:fade-r -0.28444445) + (:fade-g -0.28444445) + (:fade-b 0.0) + (:fade-a -0.42666668) + (:next-time (seconds 0.5)) + (:next-launcher 2655))) (defpart 2655 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-robotboss-yellow-smoke :id 654 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2820 :period (seconds 0.12) :length (seconds 0.017)) - (sp-item 2820 :period (seconds 0.467) :length (seconds 0.017)) - (sp-item 2820 :period (seconds 0.205) :length (seconds 0.017)) - (sp-item 2656 :period (seconds 0.05) :length (seconds 0.017)) - (sp-item 2821) - ) - ) + :parts + ((sp-item 2820 :period (seconds 0.12) :length (seconds 0.017)) + (sp-item 2820 :period (seconds 0.467) :length (seconds 0.017)) + (sp-item 2820 :period (seconds 0.205) :length (seconds 0.017)) + (sp-item 2656 :period (seconds 0.05) :length (seconds 0.017)) + (sp-item 2821))) (defpart 2821 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 0) (meters 4)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 64.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 0) (meters 4)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 64.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2656 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 8) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.9) - (:timer (seconds 2.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067) (seconds 0.297)) - (:next-launcher 2596) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.9) + (:timer (seconds 2.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067) (seconds 0.297)) + (:next-launcher 2596))) (defpart 2820 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.0 2 8.0) - (:y (meters 0)) - (:scale-x (meters 0.6) (meters 1)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b -1.0666667) - (:accel-y (meters -0.0018333334) (meters -0.0018333334)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.3) (seconds 0.097)) - (:next-launcher 2595) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) - -(defpartgroup group-white-eco :id 655 :bounds (static-bspherem 0 0.5 0 1.5) :parts ((sp-item 2852))) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.0 2 8.0) + (:y (meters 0)) + (:scale-x (meters 0.6) (meters 1)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -1.0666667) + (:fade-b -1.0666667) + (:accel-y (meters -0.0018333334) (meters -0.0018333334)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.3) (seconds 0.097)) + (:next-launcher 2595) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) + +(defpartgroup group-white-eco + :id 655 + :bounds (static-bspherem 0 0.5 0 1.5) + :parts ((sp-item 2852))) (defpart 2852 - :init-specs ((:num 1.0) - (:rot-x 16) - (:r 4096.0) - (:g 3276.8) - (:b 2457.6) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:timer (seconds 0.2)) - (:flags (aux-list)) - (:conerot-x (degrees -1440) (degrees 2880)) - (:conerot-y (degrees -1440) (degrees 2880)) - (:rotate-y (degrees 6.0000005)) - ) - ) + :init-specs + ((:num 1.0) + (:rot-x 16) + (:r 4096.0) + (:g 3276.8) + (:b 2457.6) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:timer (seconds 0.2)) + (:flags (aux-list)) + (:conerot-x (degrees -1440) (degrees 2880)) + (:conerot-y (degrees -1440) (degrees 2880)) + (:rotate-y (degrees 6.0000005)))) (defpart 2657 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.0) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1) (meters 0.8)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 0.35555556) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.3)) - (:next-launcher 2661) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.0) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.8)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.3)) + (:next-launcher 2661))) (defpart 2661 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 2658 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.0) - (:scale-x (meters 2) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2)) - (:r 0.0 1 255.0) - (:g 0.0 1 255.0) - (:b 0.0 1 255.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 0.32) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.25)) - (:next-launcher 2661) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.0) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2)) + (:r 0.0 1 255.0) + (:g 0.0 1 255.0) + (:b 0.0 1 255.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.32) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.25)) + (:next-launcher 2661))) (defpart 2659 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.0) - (:scale-x (meters 3.5)) - (:rot-z (degrees 0)) - (:scale-y (meters 3)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 64.0) - (:rotvel-z (degrees -0.4)) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.0) + (:scale-x (meters 3.5)) + (:rot-z (degrees 0)) + (:scale-y (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 64.0) + (:rotvel-z (degrees -0.4)) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root))) (defpart 2660 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.0) - (:scale-x (meters 4)) - (:rot-z (degrees 0)) - (:scale-y (meters 3.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:rotvel-z (degrees 0.3)) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:func 'sparticle-track-root) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.0) + (:scale-x (meters 4)) + (:rot-z (degrees 0)) + (:scale-y (meters 3.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:rotvel-z (degrees 0.3)) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:func 'sparticle-track-root))) (defpartgroup group-finalboss-blue-claw-beam :id 666 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2719 :binding 2716) - (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2717) - (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2718) - (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2717) - (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2718) - (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2717) - (sp-item 2717 :flags (bit1 start-dead)) - (sp-item 2718 :flags (bit1 start-dead)) - (sp-item 2717 :flags (bit1 start-dead)) - (sp-item 2718 :flags (bit1 start-dead)) - (sp-item 2717 :flags (bit1 start-dead)) - (sp-item 2718 :flags (bit1 start-dead)) - (sp-item 2721) - (sp-item 2722) - ) - ) + :parts + ((sp-item 2719 :binding 2716) + (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2717) + (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2718) + (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2717) + (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2718) + (sp-item 2716 :flags (bit1 start-dead launch-asap) :binding 2717) + (sp-item 2717 :flags (bit1 start-dead)) + (sp-item 2718 :flags (bit1 start-dead)) + (sp-item 2717 :flags (bit1 start-dead)) + (sp-item 2718 :flags (bit1 start-dead)) + (sp-item 2717 :flags (bit1 start-dead)) + (sp-item 2718 :flags (bit1 start-dead)) + (sp-item 2721) + (sp-item 2722))) (defpartgroup group-finalboss-blue-claw-beam-impact :id 667 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 2723 :flags (is-3d))) - ) + :parts ((sp-item 2723 :flags (is-3d)))) (defpart 2723 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 24)) - (:rot-x (degrees 90)) - (:rot-y (degrees 25.000002) (degrees 20)) - (:rot-z (degrees 180)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 16.0 64.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 24)) + (:rot-x (degrees 90)) + (:rot-y (degrees 25.000002) (degrees 20)) + (:rot-z (degrees 180)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 16.0 64.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2719 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.01) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.019444445)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 6)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.01) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.019444445)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 6)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2716 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1) (meters 0.5)) - (:scale-x (meters 2.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 6)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1) (meters 0.5)) + (:scale-x (meters 2.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 6)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2717 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2718 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2720 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.85) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y (meters 2.5) (meters 1.5)) - (:r 16.0 48.0) - (:g 16.0 48.0) - (:b 128.0) - (:a 128.0) - (:vel-y (meters 0.26666668)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.85) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y (meters 2.5) (meters 1.5)) + (:r 16.0 48.0) + (:g 16.0 48.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.26666668)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2722 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 1)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.13333334)) - (:scalevel-x (meters 0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 1)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.13333334)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2721 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 4) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 128.0) - (:g 0.0 64.0) - (:b 255.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 128.0) + (:g 0.0 64.0) + (:b 255.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-finalboss-red-claw-beam :id 668 :flags (use-local-clock) :bounds (static-bspherem 0 23 0 64) - :parts ((sp-item 2726 :binding 2724) - (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) - (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) - (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) - (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) - (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) - (sp-item 2725 :flags (bit1 start-dead)) - (sp-item 2725 :flags (bit1 start-dead)) - (sp-item 2725 :flags (bit1 start-dead)) - (sp-item 2725 :flags (bit1 start-dead)) - (sp-item 2725 :flags (bit1 start-dead)) - (sp-item 2728) - (sp-item 2729) - ) - ) + :parts + ((sp-item 2726 :binding 2724) + (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) + (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) + (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) + (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) + (sp-item 2724 :flags (bit1 start-dead launch-asap) :binding 2725) + (sp-item 2725 :flags (bit1 start-dead)) + (sp-item 2725 :flags (bit1 start-dead)) + (sp-item 2725 :flags (bit1 start-dead)) + (sp-item 2725 :flags (bit1 start-dead)) + (sp-item 2725 :flags (bit1 start-dead)) + (sp-item 2728) + (sp-item 2729))) (defpart 2730 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 24)) - (:rot-x (degrees 90)) - (:rot-y (degrees -20) (degrees 40)) - (:rot-z (degrees 68)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 192.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 24)) + (:rot-x (degrees 90)) + (:rot-y (degrees -20) (degrees 40)) + (:rot-z (degrees 68)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 192.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2726 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.02) - (:scale-x (meters 6) (meters 3)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 32.0) - (:vel-y (meters 0.08888889)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.02) + (:scale-x (meters 6) (meters 3)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.08888889)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)))) (defpart 2724 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1.25) (meters 0.5)) - (:scale-x (meters 1.3) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0) - (:b 0.0) - (:a 127.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1.25) (meters 0.5)) + (:scale-x (meters 1.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0) + (:b 0.0) + (:a 127.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2725 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 64.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters -0.005555555)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.0) - (:fade-a -0.22857143) - (:accel-y (meters 0.000100000005) (meters 0.00015)) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 171) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters -0.005555555)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.0) + (:fade-a -0.22857143) + (:accel-y (meters 0.000100000005) (meters 0.00015)) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 171))) (defpart 2727 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.85) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y (meters 2.5) (meters 1.5)) - (:r 128.0 128.0) - (:g 16.0 32.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.26666668)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.85) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y (meters 2.5) (meters 1.5)) + (:r 128.0 128.0) + (:g 16.0 32.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.26666668)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2729 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.8) - (:scale-x (meters 4) (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.13333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.8) + (:scale-x (meters 4) (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.13333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)))) (defpart 2728 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 4) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 192.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 192.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-finalboss-yellow-claw-beam :id 670 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2733 :binding 2731) - (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) - (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) - (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) - (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) - (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) - (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) - (sp-item 2732 :flags (bit1 start-dead)) - (sp-item 2732 :flags (bit1 start-dead)) - (sp-item 2732 :flags (bit1 start-dead)) - (sp-item 2732 :flags (bit1 start-dead)) - (sp-item 2732 :flags (bit1 start-dead)) - (sp-item 2732 :flags (bit1 start-dead)) - (sp-item 2735) - (sp-item 2736) - ) - ) + :parts + ((sp-item 2733 :binding 2731) + (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) + (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) + (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) + (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) + (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) + (sp-item 2731 :flags (bit1 start-dead launch-asap) :binding 2732) + (sp-item 2732 :flags (bit1 start-dead)) + (sp-item 2732 :flags (bit1 start-dead)) + (sp-item 2732 :flags (bit1 start-dead)) + (sp-item 2732 :flags (bit1 start-dead)) + (sp-item 2732 :flags (bit1 start-dead)) + (sp-item 2732 :flags (bit1 start-dead)) + (sp-item 2735) + (sp-item 2736))) (defpartgroup group-finalboss-yellow-claw-beam-impact :id 671 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 2737 :flags (is-3d))) - ) + :parts ((sp-item 2737 :flags (is-3d)))) (defpart 2737 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 24)) - (:rot-x (degrees 90)) - (:rot-y (degrees -20) (degrees 40)) - (:rot-z (degrees 115)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 24)) + (:rot-x (degrees 90)) + (:rot-y (degrees -20) (degrees 40)) + (:rot-z (degrees 115)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2733 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.025) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.06666667)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 85)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.025) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.06666667)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 85)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2731 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1.25) (meters 0.5)) - (:scale-x (meters 1.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 96.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1.25) (meters 0.5)) + (:scale-x (meters 1.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 96.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2732 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.005)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:fade-a -0.17777778) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.005)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:fade-a -0.17777778) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3 bit14)))) (defpart 2734 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.85) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y (meters 2.5) (meters 1.5)) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.26666668)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 85)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.85) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y (meters 2.5) (meters 1.5)) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.26666668)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 85)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2736 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.7) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 64.0 64.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.13333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 85)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.7) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 64.0 64.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.13333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 85)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2735 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.7) - (:scale-x (meters 4) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 128.0) - (:b 0.0 64.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.7) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 128.0) + (:b 0.0 64.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-finalboss-green-claw-beam :id 672 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2740 :binding 2738) - (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) - (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) - (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) - (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) - (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) - (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) - (sp-item 2739 :flags (bit1 start-dead)) - (sp-item 2739 :flags (bit1 start-dead)) - (sp-item 2739 :flags (bit1 start-dead)) - (sp-item 2739 :flags (bit1 start-dead)) - (sp-item 2739 :flags (bit1 start-dead)) - (sp-item 2739 :flags (bit1 start-dead)) - (sp-item 2742) - (sp-item 2743) - ) - ) + :parts + ((sp-item 2740 :binding 2738) + (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) + (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) + (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) + (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) + (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) + (sp-item 2738 :flags (bit1 start-dead launch-asap) :binding 2739) + (sp-item 2739 :flags (bit1 start-dead)) + (sp-item 2739 :flags (bit1 start-dead)) + (sp-item 2739 :flags (bit1 start-dead)) + (sp-item 2739 :flags (bit1 start-dead)) + (sp-item 2739 :flags (bit1 start-dead)) + (sp-item 2739 :flags (bit1 start-dead)) + (sp-item 2742) + (sp-item 2743))) (defpartgroup group-finalboss-green-claw-beam-impact :id 673 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 2744 :flags (is-3d))) - ) + :parts ((sp-item 2744 :flags (is-3d)))) (defpart 2744 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 12) (meters 24)) - (:rot-x (degrees 90)) - (:rot-y (degrees -20) (degrees 40)) - (:rot-z (degrees 180)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 12) (meters 24)) + (:rot-x (degrees 90)) + (:rot-y (degrees -20) (degrees 40)) + (:rot-z (degrees 180)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2740 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.025) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.06666667)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.025) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.06666667)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2738 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1.25) (meters 0.5)) - (:scale-x (meters 1.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 96.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 2)) - (:flags (bit2 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1.25) (meters 0.5)) + (:scale-x (meters 1.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 96.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 2)) + (:flags (bit2 bit7 bit14)))) (defpart 2739 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.005)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17777778) - (:accel-y (meters -0.000100000005) (meters -0.00015)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.005)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17777778) + (:accel-y (meters -0.000100000005) (meters -0.00015)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit14)))) (defpart 2741 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.85) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y (meters 2.5) (meters 1.5)) - (:r 32.0 32.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.26666668)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.85) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y (meters 2.5) (meters 1.5)) + (:r 32.0 32.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.26666668)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2743 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.75) - (:scale-x (meters 4) (meters 1)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0.13333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.75) + (:scale-x (meters 4) (meters 1)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0.13333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2742 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 4) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 192.0) - (:g 255.0) - (:b 0.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 192.0) + (:g 255.0) + (:b 0.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-robotboss-blue-claw-glow :id 674 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2324)) - ) + :parts ((sp-item 2324))) (defpartgroup group-robotboss-green-claw-glow :id 675 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2324)) - ) + :parts ((sp-item 2324))) (defpartgroup group-robotboss-red-claw-glow :id 676 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2324)) - ) + :parts ((sp-item 2324))) (defpartgroup group-robotboss-yellow-claw-glow :id 677 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2324)) - ) + :parts ((sp-item 2324))) diff --git a/goal_src/jak1/levels/finalboss/robotboss-weapon.gc b/goal_src/jak1/levels/finalboss/robotboss-weapon.gc index 008b886d8f..c81b472aa8 100644 --- a/goal_src/jak1/levels/finalboss/robotboss-weapon.gc +++ b/goal_src/jak1/levels/finalboss/robotboss-weapon.gc @@ -1,68 +1,44 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "engine/common-obs/process-drawable.gc") -;; name: robotboss-weapon.gc -;; name in dgo: robotboss-weapon -;; dgos: FIN, L1 - ;; DECOMP BEGINS (deftype torus (structure) - ((origin vector :inline) - (axis vector :inline) - (radius-primary float) - (radius-secondary float) - ) + ((origin vector :inline) + (axis vector :inline) + (radius-primary float) + (radius-secondary float)) (:methods - (torus-method-9 (_type_ vector) none) - (torus-method-10 (_type_ collide-prim-core vector) symbol) - (torus-method-11 (_type_ vector) symbol) - (torus-method-12 (_type_ vector) vector) - ) - ) - + (torus-method-9 (_type_ vector) none) + (torus-method-10 (_type_ collide-prim-core vector) symbol) + (torus-method-11 (_type_ vector) symbol) + (torus-method-12 (_type_ vector) vector))) (defmethod torus-method-10 ((this torus) (arg0 collide-prim-core) (arg1 vector)) (let ((gp-0 (new 'stack-no-clear 'vector)) (s5-0 (new 'stack-no-clear 'vector)) - (f30-0 (+ (-> this radius-secondary) (-> arg0 world-sphere w))) - ) + (f30-0 (+ (-> this radius-secondary) (-> arg0 world-sphere w)))) (vector-! gp-0 (the-as vector arg0) (-> this origin)) (vector-flatten! s5-0 gp-0 (-> this axis)) (vector-normalize! s5-0 (-> this radius-primary)) (vector-! arg1 gp-0 s5-0) - (< (vector-length-squared arg1) (* f30-0 f30-0)) - ) - ) + (< (vector-length-squared arg1) (* f30-0 f30-0)))) (defmethod torus-method-11 ((this 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) (collide-kind target)) - (torus-method-10 this (-> s4-0 prim-core) arg0) - ) + (when (and (logtest? (-> s4-0 prim-core collide-as) (collide-kind target)) (torus-method-10 this (-> 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) (collide-action solid)) (logtest? (-> v1-9 prim-core collide-as) (collide-kind target)) - (torus-method-10 this (-> v1-9 prim-core) arg0) - ) - (return #t) - ) - ) - ) - ) - ) - #f - ) + (torus-method-10 this (-> v1-9 prim-core) arg0)) + (return #t)))))) + #f) (deftype torus-verts (structure) - ((vert vector 8 :inline) - ) - ) - + ((vert vector 8 :inline))) (defmethod torus-method-9 ((this torus) (arg0 vector)) (local-vars (sv-256 int) (sv-272 int) (sv-288 int)) @@ -70,25 +46,20 @@ (s4-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'vector)) (s2-0 (new 'stack-no-clear 'matrix)) - (s1-0 (new 'stack-no-clear 'inline-array 'vector 8)) - ) + (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 (-> this axis)) - (if (= (vector-normalize-ret-len! s0-0 1.0) 0.0) - (set-vector! s0-0 0.0 1.0 0.0 1.0) - ) + (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 (-> this axis)) (matrix-axis-angle! s2-0 s4-0 8192.0) (vector-float*! (-> s1-0 0) s0-0 (-> this 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)) - ) + (set! sv-256 (+ sv-256 1))) (vector-float*! s0-0 s0-0 (-> this radius-primary)) (dotimes (v1-21 8) - (vector+! (-> s1-0 v1-21) (-> s1-0 v1-21) s0-0) - ) + (vector+! (-> s1-0 v1-21) (-> s1-0 v1-21) s0-0)) (matrix-axis-angle! s2-0 (-> this axis) 4096.0) (dotimes (s0-1 16) (set! sv-272 0) @@ -96,8 +67,7 @@ (vector+! s4-0 (-> s1-0 sv-272) (-> this origin)) (vector+! s3-0 (-> s1-0 (+ sv-272 1)) (-> this origin)) (camera-line s4-0 s3-0 (the-as vector4w arg0)) - (set! sv-272 (+ sv-272 1)) - ) + (set! sv-272 (+ sv-272 1))) (vector+! s4-0 (-> s1-0 0) (-> this origin)) (camera-line s4-0 s3-0 (the-as vector4w arg0)) (set! sv-288 0) @@ -106,24 +76,18 @@ (vector-matrix*! (-> s1-0 sv-288) (-> s1-0 sv-288) s2-0) (vector+! s3-0 (-> s1-0 sv-288) (-> this origin)) (camera-line s4-0 s3-0 (the-as vector4w arg0)) - (set! sv-288 (+ sv-288 1)) - ) - ) - ) + (set! sv-288 (+ sv-288 1))))) 0 - (none) - ) + (none)) (defmethod torus-method-12 ((this torus) (arg0 vector)) (let* ((f30-0 65536.0) (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-2 (the-as number (logior #x3f800000 v1-1))) - (f30-1 (* f30-0 (+ -1.0 (the-as float v1-2)))) - ) + (f30-1 (* f30-0 (+ -1.0 (the-as float v1-2))))) (set! (-> arg0 x) 0.0) (set! (-> arg0 y) (* (-> this radius-secondary) (sin f30-1))) - (set! (-> arg0 z) (* (-> this radius-secondary) (cos f30-1))) - ) + (set! (-> arg0 z) (* (-> this radius-secondary) (cos f30-1)))) (+! (-> arg0 z) (-> this radius-primary)) (set! (-> arg0 w) 0.0) (let ((s2-0 (new 'stack-no-clear 'matrix))) @@ -131,298 +95,225 @@ (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)))) - ) + (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) (-> this axis)) - (vector-matrix*! arg0 arg0 s2-0) - ) + (vector-matrix*! arg0 arg0 s2-0)) (vector+! arg0 arg0 (-> this origin)) - arg0 - ) + arg0) (deftype arcing-shot (process-drawable) - ((root collide-shape-moving :override) - (y-vel float) - (grav float) - (from vector :inline) - (to vector :inline) - ) + ((root collide-shape-moving :override) + (y-vel float) + (grav float) + (from vector :inline) + (to vector :inline)) (:states - arcing-shot-debug-trajectory - ) - ) - + arcing-shot-debug-trajectory)) (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))) - ) - (set! (-> self grav) (/ (- (* (-> self y-vel) (-> self y-vel))) (* 2.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)))) + (set! (-> self grav) (/ (- (* (-> self y-vel) (-> self y-vel))) (* 2.0 v1-2))))) (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)) - (set! (-> arg0 y) (+ (-> arg0 y) (* 0.5 s5-0 s5-0 (-> self grav)))) - ) - ) + (set! (-> arg0 y) (+ (-> arg0 y) (* 0.5 s5-0 s5-0 (-> self grav)))))) (defbehavior arcing-shot-draw arcing-shot () (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-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)) - ) - ) - #f - ) + (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) - ) - :code (behavior () - (loop - (format *stdcon* "debug trajectory~%") - (suspend) - ) - ) - ) + :trans + (behavior () + (arcing-shot-setup (camera-pos) (-> self entity extra trans) 40960.0) + (arcing-shot-draw)) + :code + (behavior () + (loop + (format *stdcon* "debug trajectory~%") + (suspend)))) (deftype darkecobomb (arcing-shot) - ((flight-time time-frame) - (countdown-time float) - (anim-speed float) - (next-tick float) - ) + ((flight-time time-frame) + (countdown-time float) + (anim-speed float) + (next-tick float)) (:states - darkecobomb-countdown - (darkecobomb-explode symbol) - darkecobomb-idle - darkecobomb-land - ) - ) - - -(defskelgroup *darkecobomb-sg* darkecobomb darkecobomb-lod0-jg darkecobomb-idle-ja - ((darkecobomb-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3.5 0 6) - ) + darkecobomb-countdown + (darkecobomb-explode symbol) + darkecobomb-idle + darkecobomb-land)) + +(defskelgroup *darkecobomb-sg* + darkecobomb + darkecobomb-lod0-jg + darkecobomb-idle-ja + ((darkecobomb-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3.5 0 6)) (defstate darkecobomb-explode (darkecobomb) - :code (behavior ((arg0 symbol)) - (send-event *target* 'reset-pickup 'eco) - (sound-play "explod-bomb" :position #f) - (activate! *camera-smush-control* 819.2 37 600 1.0 0.995) - (send-event (ppointer->process (-> self parent)) 'flash 255.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 619) - 900 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (logior! (-> self draw status) (draw-status hidden)) - (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-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (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)) - ) - (send-event *target* 'attack-invinc #f (static-attack-info ((mode 'instant-death)))) - ) - (else - (send-event (ppointer->process (-> self parent)) 'bomb-done) - ) - ) - (deactivate self) - ) - :post ja-post - ) + :code + (behavior ((arg0 symbol)) + (send-event *target* 'reset-pickup 'eco) + (sound-play "explod-bomb" :position #f) + (activate! *camera-smush-control* 819.2 37 600 1.0 0.995) + (send-event (ppointer->process (-> self parent)) 'flash 255.0) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 619) + 900 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (logior! (-> self draw status) (draw-status hidden)) + (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-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (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))) + (send-event *target* 'attack-invinc #f (static-attack-info ((mode 'instant-death))))) + (else (send-event (ppointer->process (-> self parent)) 'bomb-done))) + (deactivate self)) + :post ja-post) (defbehavior darkecobomb-handler darkecobomb ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('touch 'attack) - (go darkecobomb-explode #t) - ) - ) - ) + (('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) - ) - (none) - ) + (go darkecobomb-explode #f)) + (none)) (defstate darkecobomb-countdown (darkecobomb) :event darkecobomb-handler - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (set! (-> self next-tick) 0.9) - ) - :exit (behavior () - (stop! (-> self sound)) - ) - :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)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 663) - 150 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (+! (-> self next-tick) -0.06) - (sound-play "robo-warning") - ) - ) - (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (the int (-> self countdown-time))) - (go darkecobomb-explode #f) - ) - (when (ja-group? darkecobomb-spin-cycle-ja) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-2 (joint-node darkecobomb-lod0-jg particles)) - (spawn (-> self part) gp-2) - ) - ) - ) - :code (behavior () - (sound-play "bomb-open") - (ja-no-eval :group! darkecobomb-open-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (ja-no-eval :group! darkecobomb-spin-cycle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (set! (-> self next-tick) 0.9)) + :exit + (behavior () + (stop! (-> self sound))) + :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)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 663) + 150 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (+! (-> self next-tick) -0.06) + (sound-play "robo-warning"))) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (the int (-> self countdown-time))) + (go darkecobomb-explode #f)) + (when (ja-group? darkecobomb-spin-cycle-ja) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-2 (joint-node darkecobomb-lod0-jg particles)) + (spawn (-> self part) gp-2)))) + :code + (behavior () + (sound-play "bomb-open") + (ja-no-eval :group! darkecobomb-open-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (update! (-> self sound)) (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (ja-no-eval :group! darkecobomb-spin-cycle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + (until (ja-done? 0) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! max (-> self anim-speed)))))) + :post transform-post) (defstate darkecobomb-land (darkecobomb) :event darkecobomb-handler - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - 0 - ) - :trans (behavior () - (darkecobomb-explode-if-player-high-enough) - (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 0.5)) - (go darkecobomb-countdown) - ) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (loop - (ja-no-eval :group! darkecobomb-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + 0) + :trans + (behavior () + (darkecobomb-explode-if-player-high-enough) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 0.5)) (go darkecobomb-countdown))) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja-eval)) + (loop + (ja-no-eval :group! darkecobomb-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate darkecobomb-idle (darkecobomb) - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - ) - :trans (behavior () - (arcing-shot-calculate - (-> self root 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) - ) - ) - :code (behavior () - (ja-no-eval :group! darkecobomb-blast-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (ja-no-eval :group! darkecobomb-idle-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter))) + :trans + (behavior () + (arcing-shot-calculate (-> self root 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))) + :code + (behavior () + (ja-no-eval :group! darkecobomb-blast-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (ja-no-eval :group! darkecobomb-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defbehavior darkecobomb-init-by-other darkecobomb ((arg0 vector) (arg1 vector) (arg2 float) (arg3 time-frame) (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) - ) + (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) (collide-kind wall-object)) (set! (-> s0-0 collide-with) (collide-kind target)) @@ -430,12 +321,10 @@ (set! (-> s0-0 prim-core offense) (collide-offense indestructible)) (set! (-> s0-0 transform-index) 3) (set-vector! (-> s0-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s1-0 s0-0) - ) + (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) s1-0) - ) + (set! (-> self root) s1-0)) (set! (-> self root trans quad) (-> arg0 quad)) (initialize-skeleton self *darkecobomb-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) @@ -445,67 +334,53 @@ (set! (-> self flight-time) arg3) (set! (-> self sound) (new 'process 'ambient-sound (static-sound-spec "bomb-spin" :fo-max 80) (-> self to))) (go darkecobomb-idle) - (none) - ) + (none)) (deftype greenshot (arcing-shot) - ((flight-time time-frame) - ) + ((flight-time time-frame)) (:states - greenshot-idle - ) - ) - + greenshot-idle)) -(defskelgroup *greenshot-sg* greenshot greenshot-lod0-jg greenshot-idle-ja - ((greenshot-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *greenshot-sg* + greenshot + greenshot-lod0-jg + greenshot-idle-ja + ((greenshot-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defstate greenshot-idle (greenshot) - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - ) - :trans (behavior () - (arcing-shot-calculate - (-> self root 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 trans)) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter))) + :trans + (behavior () + (arcing-shot-calculate (-> self root 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 trans))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defbehavior greenshot-init-by-other greenshot ((arg0 vector) (arg1 vector) (arg2 float) (arg3 time-frame)) (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) - ) + (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) (collide-kind enemy)) (set! (-> s1-0 collide-with) (collide-kind target)) (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) 0.0 8192.0 0.0 8192.0) - (set-root-prim! s2-0 s1-0) - ) + (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) s2-0) - ) + (set! (-> self root) s2-0)) (set! (-> self root trans quad) (-> arg0 quad)) (initialize-skeleton self *greenshot-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) @@ -514,202 +389,145 @@ (set! (-> self part) (create-launch-control (-> *part-group-id-table* 664) self)) (logior! (-> self draw status) (draw-status hidden)) (go greenshot-idle) - (none) - ) + (none)) (deftype redshot (arcing-shot) - ((flight-time time-frame) - (stall-time time-frame) - (ring torus :inline) - (rotation-offset int64) - (part-track handle) - (shot-particle sparticle-launch-control) - (test-particle sparticle-launch-control) - ) + ((flight-time time-frame) + (stall-time time-frame) + (ring torus :inline) + (rotation-offset int64) + (part-track handle) + (shot-particle sparticle-launch-control) + (test-particle sparticle-launch-control)) (:states - redshot-explode - redshot-idle - redshot-wait - ) - ) - + redshot-explode + redshot-idle + redshot-wait)) (defmethod relocate ((this redshot) (arg0 int)) - (if (nonzero? (-> this shot-particle)) - (&+! (-> this shot-particle) arg0) - ) - (if (nonzero? (-> this test-particle)) - (&+! (-> this test-particle) arg0) - ) - (the-as redshot ((method-of-type arcing-shot relocate) this arg0)) - ) + (if (nonzero? (-> this shot-particle)) (&+! (-> this shot-particle) arg0)) + (if (nonzero? (-> this test-particle)) (&+! (-> this test-particle) arg0)) + (the-as redshot ((method-of-type arcing-shot relocate) this arg0))) (defmethod deactivate ((this redshot)) - (if (nonzero? (-> this shot-particle)) - (kill-and-free-particles (-> this shot-particle)) - ) - (if (nonzero? (-> this test-particle)) - (kill-and-free-particles (-> this test-particle)) - ) + (if (nonzero? (-> this shot-particle)) (kill-and-free-particles (-> this shot-particle))) + (if (nonzero? (-> this test-particle)) (kill-and-free-particles (-> this test-particle))) ((method-of-type arcing-shot deactivate) this) - (none) - ) + (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)) - ) - ) + (* 2.25 (-> (the-as (pointer redshot) v1-0) 0 ring radius-primary)))) 0 - (none) - ) + (none)) -(defskelgroup *redring-sg* redring redring-lod0-jg redring-idle-ja - ((redring-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 40) - ) +(defskelgroup *redring-sg* + redring + redring-lod0-jg + redring-idle-ja + ((redring-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 40)) (defbehavior redshot-trans redshot ((arg0 time-frame)) (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)))) - ) - (matrix->quaternion (-> self root quat) s5-0) - ) - (if (< (* 0.006666667 (the float (min 150 arg0))) 1.0) - (spawn (-> self part) (-> self root trans)) - ) - (none) - ) + (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 quat) s5-0)) + (if (< (* 0.006666667 (the float (min 150 arg0))) 1.0) (spawn (-> self part) (-> self root trans))) + (none)) (defstate redshot-explode (redshot) - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (sound-play "red-explode") - (logclear! (-> self draw status) (draw-status hidden)) - (quaternion-identity! (-> self root quat)) - (set! (-> self ring radius-secondary) 3072.0) - (set! (-> self ring origin quad) (-> self root trans quad)) - (+! (-> self ring origin y) (-> self ring radius-secondary)) - (set-vector! (-> self ring axis) 0.0 1.0 0.0 1.0) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 648) - -1 - redshot-particle-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - ) - :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 (torus-method-11 (-> self ring) gp-0) - (vector-normalize! gp-0 16384.0) - (send-event *target* 'attack #f (static-attack-info ((vector gp-0)))) - (send-event (ppointer->process (-> self parent)) 'hit-jak) - ) - ) - (dotimes (gp-1 5) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (torus-method-12 (-> self ring) s5-0) - (spawn (-> self test-particle) s5-0) - ) - ) - (let ((f0-3 - (fmin - 1.0 - (* 0.006666667 (the float (- (seconds 2) (- (-> *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)) (seconds 2)) - (send-event (ppointer->process (-> self parent)) 'missed-jak) - (deactivate self) - ) - ) - :code (behavior () - (loop - (ja :num-func num-func-identity :frame-num (* 0.000016276043 (-> self ring radius-primary))) - (suspend) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (sound-play "red-explode") + (logclear! (-> self draw status) (draw-status hidden)) + (quaternion-identity! (-> self root quat)) + (set! (-> self ring radius-secondary) 3072.0) + (set! (-> self ring origin quad) (-> self root trans quad)) + (+! (-> self ring origin y) (-> self ring radius-secondary)) + (set-vector! (-> self ring axis) 0.0 1.0 0.0 1.0) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 648) + -1 + redshot-particle-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)))) + :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 (torus-method-11 (-> self ring) gp-0) + (vector-normalize! gp-0 16384.0) + (send-event *target* 'attack #f (static-attack-info ((vector gp-0)))) + (send-event (ppointer->process (-> self parent)) 'hit-jak))) + (dotimes (gp-1 5) + (let ((s5-0 (new 'stack-no-clear 'vector))) (torus-method-12 (-> self ring) s5-0) (spawn (-> self test-particle) s5-0))) + (let ((f0-3 (fmin 1.0 (* 0.006666667 (the float (- (seconds 2) (- (-> *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)) (seconds 2)) + (send-event (ppointer->process (-> self parent)) 'missed-jak) + (deactivate self))) + :code + (behavior () + (loop + (ja :num-func num-func-identity :frame-num (* 0.000016276043 (-> self ring radius-primary))) + (suspend))) + :post transform-post) (defbehavior redshot-handler redshot ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack 'touch) - (go redshot-explode) - ) - ) - ) + (('attack 'touch) (go redshot-explode)))) (defstate redshot-wait (redshot) :event redshot-handler - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - ) - :trans (behavior () - (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 trans)) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter))) + :trans + (behavior () + (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 trans))) + :code + (behavior () + (loop + (suspend))) + :post transform-post) (defstate redshot-idle (redshot) :event redshot-handler - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - ) - :trans (behavior () - (redshot-trans (seconds 5)) - (arcing-shot-calculate - (-> self root 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 trans)) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter))) + :trans + (behavior () + (redshot-trans (seconds 5)) + (arcing-shot-calculate (-> self root 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 trans))) + :code + (behavior () + (loop + (suspend))) + :post transform-post) (defbehavior redshot-init-by-other redshot ((arg0 vector) (arg1 vector) (arg2 float) (arg3 time-frame) (arg4 time-frame) (arg5 int)) (local-vars (sv-16 collide-shape-prim-sphere)) (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! (-> 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) (collide-kind wall-object)) (set! (-> sv-16 collide-with) (collide-kind target)) @@ -720,8 +538,7 @@ (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) s0-0) - ) + (set! (-> self root) s0-0)) (set! (-> self root trans quad) (-> arg0 quad)) (initialize-skeleton self *redring-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) @@ -733,74 +550,55 @@ (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 hidden)) - (set! (-> self sound) - (new 'process 'ambient-sound (static-sound-spec "red-fireball" :fo-max 80) (-> self root trans)) - ) + (set! (-> self sound) (new 'process 'ambient-sound (static-sound-spec "red-fireball" :fo-max 80) (-> self root trans))) (go redshot-idle) - (none) - ) + (none)) (deftype yellowshot (arcing-shot) - ((flight-time time-frame) - ) + ((flight-time time-frame)) (:states - yellowshot-idle - ) - ) - + yellowshot-idle)) (defstate yellowshot-idle (yellowshot) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (send-event *target* 'attack (-> block param 0) (static-attack-info ((mode 'generic)))) - (send-event (ppointer->process (-> self parent)) 'hit-jak) - ) - ) - ) - ) - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - ) - :trans (behavior () - (arcing-shot-calculate - (-> self root trans) - (/ (the float (- (-> *display* game-frame-counter) (-> self state-time))) (the float (-> self flight-time))) - ) - (spawn (-> self part) (-> self root trans)) - (when (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self flight-time)) - (send-event (ppointer->process (-> self parent)) 'missed-jak) - (deactivate self) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (send-event *target* 'attack (-> block param 0) (static-attack-info ((mode 'generic)))) + (send-event (ppointer->process (-> self parent)) 'hit-jak))))) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter))) + :trans + (behavior () + (arcing-shot-calculate (-> self root trans) + (/ (the float (- (-> *display* game-frame-counter) (-> self state-time))) (the float (-> self flight-time)))) + (spawn (-> self part) (-> self root trans)) + (when (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self flight-time)) + (send-event (ppointer->process (-> self parent)) 'missed-jak) + (deactivate self))) + :code + (behavior () + (loop + (suspend))) + :post transform-post) (defbehavior yellowshot-init-by-other yellowshot ((arg0 vector) (arg1 vector) (arg2 float) (arg3 time-frame)) (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) - ) + (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) (collide-kind wall-object)) (set! (-> s1-0 collide-with) (collide-kind target)) (set! (-> s1-0 prim-core action) (collide-action solid)) (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s2-0 s1-0) - ) + (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) s2-0) - ) + (set! (-> self root) s2-0)) (set! (-> self root trans quad) (-> arg0 quad)) (initialize-skeleton self *redring-sg* '()) (logior! (-> self draw status) (draw-status hidden)) @@ -808,5 +606,4 @@ (set! (-> self flight-time) arg3) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 652) self)) (go yellowshot-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/finalboss/robotboss.gc b/goal_src/jak1/levels/finalboss/robotboss.gc index 3eb1dcac3c..6268c2844f 100644 --- a/goal_src/jak1/levels/finalboss/robotboss.gc +++ b/goal_src/jak1/levels/finalboss/robotboss.gc @@ -1,126 +1,96 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "levels/finalboss/light-eco.gc") (require "levels/finalboss/robotboss-misc.gc") (require "levels/finalboss/robotboss-weapon.gc") (require "levels/finalboss/green-eco-lurker.gc") -;; name: robotboss.gc -;; name in dgo: robotboss -;; dgos: FIN, L1 - ;; DECOMP BEGINS (defmethod ease-loc-t ((this robotboss)) - (parameter-ease-sin-clamp (-> this loc-t)) - ) + (parameter-ease-sin-clamp (-> this loc-t))) -(defskelgroup *robotboss-blueeco-sg* robotboss-blueeco robotboss-blueeco-lod0-jg robotboss-blueeco-idle-ja - ((robotboss-blueeco-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 200) - ) +(defskelgroup *robotboss-blueeco-sg* + robotboss-blueeco + robotboss-blueeco-lod0-jg + robotboss-blueeco-idle-ja + ((robotboss-blueeco-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 200)) -(defskelgroup *robotboss-redeco-sg* robotboss-redeco robotboss-redeco-lod0-jg robotboss-redeco-idle-ja - ((robotboss-redeco-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 200) - ) +(defskelgroup *robotboss-redeco-sg* + robotboss-redeco + robotboss-redeco-lod0-jg + robotboss-redeco-idle-ja + ((robotboss-redeco-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 200)) -(defskelgroup *robotboss-yelloweco-sg* robotboss-yelloweco robotboss-yelloweco-lod0-jg robotboss-yelloweco-idle-ja - ((robotboss-yelloweco-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 200) - ) +(defskelgroup *robotboss-yelloweco-sg* + robotboss-yelloweco + robotboss-yelloweco-lod0-jg + robotboss-yelloweco-idle-ja + ((robotboss-yelloweco-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 200)) (defbehavior robotboss-cut-cam-exit robotboss () (set! (-> self valid-frames) 0) - (if (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed))) - (process-release? *target*) - ) + (if (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed))) (process-release? *target*)) (logclear! (-> self skel status) (janim-status inited)) (set! (-> self skip-cut) #f) - (none) - ) + (none)) (defbehavior robotboss-cut-cam robotboss ((arg0 float) (arg1 float) (arg2 int)) (let ((f0-0 (ja-aframe-num 0))) (cond - ((or (not (ja-group? arg2)) (< f0-0 arg0) (< arg1 f0-0)) - (robotboss-cut-cam-exit) - ) + ((or (not (ja-group? arg2)) (< f0-0 arg0) (< arg1 f0-0)) (robotboss-cut-cam-exit)) ((or (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (-> self skip-cut) - ) - (set! (-> self skip-cut) #t) - ) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (-> self skip-cut)) + (set! (-> self skip-cut) #t)) (else - (logior! (-> self skel status) (janim-status inited)) - (process-grab? *target*) - (set! (-> *camera-other-root* quad) (-> self root trans quad)) - (let ((s5-1 (-> self node-list data 88 bone transform)) - (gp-1 (-> self node-list data 88 bone scale)) - ) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! s4-1 (joint-node robotboss-basic-lod0-jg camera)) - (set! (-> *camera-other-trans* quad) (-> s4-1 quad)) - ) - (vector-normalize-copy! - (the-as vector (-> *camera-other-matrix* vector)) - (the-as vector (-> s5-1 vector)) - (the-as float -1.0) - ) - (set! (-> *camera-other-matrix* vector 0 w) 0.0) - (vector-normalize-copy! (-> *camera-other-matrix* vector 1) (-> s5-1 vector 1) (the-as float 1.0)) - (set! (-> *camera-other-matrix* vector 1 w) 0.0) - (vector-normalize-copy! (-> *camera-other-matrix* vector 2) (-> s5-1 vector 2) (the-as float -1.0)) - (set! (-> *camera-other-matrix* vector 2 w) 0.0) - (vector-reset! (-> *camera-other-matrix* vector 3)) - (othercam-calc (-> gp-1 x)) - ) - (hide-hud-quick) - (set! *camera-look-through-other* 2) - (when (< (-> self valid-frames) 2) - (set-blackout-frames (seconds 0.035)) - (+! (-> self valid-frames) 1) - ) - ) - ) - ) - (none) - ) + (logior! (-> self skel status) (janim-status inited)) + (process-grab? *target*) + (set! (-> *camera-other-root* quad) (-> self root trans quad)) + (let ((s5-1 (-> self node-list data 88 bone transform)) + (gp-1 (-> self node-list data 88 bone scale))) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! s4-1 (joint-node robotboss-basic-lod0-jg camera)) + (set! (-> *camera-other-trans* quad) (-> s4-1 quad))) + (vector-normalize-copy! (the-as vector (-> *camera-other-matrix* vector)) + (the-as vector (-> s5-1 vector)) + (the-as float -1.0)) + (set! (-> *camera-other-matrix* vector 0 w) 0.0) + (vector-normalize-copy! (-> *camera-other-matrix* vector 1) (-> s5-1 vector 1) (the-as float 1.0)) + (set! (-> *camera-other-matrix* vector 1 w) 0.0) + (vector-normalize-copy! (-> *camera-other-matrix* vector 2) (-> s5-1 vector 2) (the-as float -1.0)) + (set! (-> *camera-other-matrix* vector 2 w) 0.0) + (vector-reset! (-> *camera-other-matrix* vector 3)) + (othercam-calc (-> gp-1 x))) + (hide-hud-quick) + (set! *camera-look-through-other* 2) + (when (< (-> self valid-frames) 2) + (set-blackout-frames (seconds 0.035)) + (+! (-> self valid-frames) 1))))) + (none)) (defbehavior robotboss-always-trans robotboss ((arg0 (state robotboss))) (when (-> self blue-smoke) (let ((s5-0 (new 'stack-no-clear 'vector))) (vector<-cspace! s5-0 (joint-node robotboss-basic-lod0-jg blue_eco_piece)) - (spawn (-> self particle 2) s5-0) - ) - ) + (spawn (-> self particle 2) s5-0))) (when (-> self red-smoke) (let ((s5-1 (new 'stack-no-clear 'vector))) (vector<-cspace! s5-1 (joint-node robotboss-basic-lod0-jg rArmTopWireC)) (spawn (-> self particle 3) s5-1) (vector<-cspace! s5-1 (joint-node robotboss-basic-lod0-jg rArmBotWireC)) - (spawn (-> self particle 3) s5-1) - ) - ) + (spawn (-> self particle 3) s5-1))) (when (-> self yellow-smoke) (let ((s5-2 (new 'stack-no-clear 'vector))) (vector<-cspace! s5-2 (joint-node robotboss-basic-lod0-jg Lyellow_ecoTubeA)) - (spawn (-> self particle 4) s5-2) - ) - ) + (spawn (-> self particle 4) s5-2))) (let* ((f0-1 (- 0.0 (-> self palette-val))) - (f0-2 (if (< 0.0 f0-1) - (fmin 0.1 f0-1) - (fmax -0.1 f0-1) - ) - ) - ) - (+! (-> self palette-val) f0-2) - ) + (f0-2 (if (< 0.0 f0-1) (fmin 0.1 f0-1) (fmax -0.1 f0-1)))) + (+! (-> self palette-val) f0-2)) (set! (-> *palette-fade-controls* control 2 fade) (-> self palette-val)) (b! (not (-> self ignore-camera)) cfg-11 :delay (empty-form)) (b! #t cfg-66 :delay (nop!)) @@ -133,8 +103,7 @@ (set! (-> a1-8 num-params) 1) (set! (-> a1-8 message) 'query-state) (set! (-> a1-8 param 0) (the-as uint cam-eye)) - (b! (not (send-event-function *camera* a1-8)) cfg-15 :delay (empty-form)) - ) + (b! (not (send-event-function *camera* a1-8)) cfg-15 :delay (empty-form))) (b! #t cfg-66 :delay (nop!)) (label cfg-15) (let ((a1-9 (new 'stack-no-clear 'event-message-block))) @@ -142,89 +111,59 @@ (set! (-> a1-9 num-params) 1) (set! (-> a1-9 message) 'query-state) (set! (-> a1-9 param 0) (the-as uint cam-launcher-longfall)) - (b! (not (send-event-function *camera* a1-9)) cfg-19 :delay (empty-form)) - ) + (b! (not (send-event-function *camera* a1-9)) cfg-19 :delay (empty-form))) (when (-> *camera* cam-entity) (let ((s5-4 *camera-base-mode*)) (set! *camera-base-mode* cam-launcher-longfall) (send-event *camera* 'clear-entity) - (set! *camera-base-mode* s5-4) - ) - ) + (set! *camera-base-mode* s5-4))) (b! #t cfg-66 :delay (nop!)) (label cfg-19) - (b! - (not (and (-> self des-cam-entity) - (or (< (vector-vector-xz-distance (-> self entity extra trans) (target-pos 0)) 188416.0) - (and *target* (>= 290816.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - ) - ) - cfg-37 - :delay (empty-form) - ) + (b! (not (and (-> self des-cam-entity) + (or (< (vector-vector-xz-distance (-> self entity extra trans) (target-pos 0)) 188416.0) + (and *target* (>= 290816.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))))) + cfg-37 + :delay (empty-form)) (if (or (not (-> *camera* cam-entity)) - (not (string= - (-> self des-cam-entity) - (res-lump-struct (-> *camera* cam-entity) 'name string :time (the-as float -1000000000.0)) - ) - ) - ) - (send-event *camera* 'change-to-entity-by-name (-> self des-cam-entity)) - ) + (not (string= (-> self des-cam-entity) + (res-lump-struct (-> *camera* cam-entity) 'name string :time (the-as float -1000000000.0))))) + (send-event *camera* 'change-to-entity-by-name (-> self des-cam-entity))) (b! #t cfg-66 :delay (nop!)) (label cfg-37) - (b! - (not (or (< (vector-vector-xz-distance (-> self entity extra trans) (target-pos 0)) 73728.0) - (and *target* (>= 290816.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - ) - cfg-49 - :delay (empty-form) - ) + (b! (not (or (< (vector-vector-xz-distance (-> self entity extra trans) (target-pos 0)) 73728.0) + (and *target* (>= 290816.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))))) + cfg-49 + :delay (empty-form)) (when (not (send-event *camera* 'query-state cam-robotboss)) (send-event *camera* 'change-state cam-robotboss (seconds 1)) - (send-event *camera* 'clear-entity) - ) + (send-event *camera* 'clear-entity)) (b! #t cfg-66 :delay (nop!)) (label cfg-49) (when (and (< 196608.0 (vector-vector-xz-distance (-> self entity extra trans) (target-pos 0))) (< (vector-vector-xz-distance (-> self entity extra trans) (target-pos 0)) 614400.0) - (not (and *target* (>= 299008.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - ) + (not (and *target* (>= 299008.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))))) (when (not (send-event *camera* 'query-state cam-string)) (send-event *camera* 'point-of-interest #f) (send-event *camera* 'force-blend (seconds 1)) (send-event *camera* 'clear-entity) - (send-event *camera* 'change-state cam-string (seconds 1)) - ) - ) + (send-event *camera* 'change-state cam-string (seconds 1)))) (label cfg-66) (cond - ((send-event *camera* 'query-state cam-string) - ) + ((send-event *camera* 'query-state cam-string)) ((-> self use-interesting) (let ((s5-10 (new 'stack-no-clear 'vector))) (vector<-cspace! s5-10 (joint-node robotboss-basic-lod0-jg interesting)) - (send-event *camera* 'point-of-interest s5-10) - ) - ) - ) + (send-event *camera* 'point-of-interest s5-10)))) (when (and arg0 *debug-segment* (cpad-pressed? 0 l3)) ;; og:preserve-this changed from (cpad-pressed? 1 x) (cpad-clear! 0 l3) - (go arg0) - ) - (none) - ) + (go arg0)) + (none)) (defbehavior robotboss-shooting-trans robotboss ((arg0 int)) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (-> self node-list data arg0)) - (send-event (handle->process (-> self shot-attractor)) 'trans gp-0) - ) - (none) - ) + (send-event (handle->process (-> self shot-attractor)) 'trans gp-0)) + (none)) (defbehavior robotboss-setup-for-hits robotboss ((arg0 int) (arg1 int)) (set! (-> self took-hit) #f) @@ -233,12 +172,9 @@ (let ((gp-0 (new 'stack 'sphere))) (set! (-> gp-0 w) 4096.0) (set! (-> self shot-attractor) - (ppointer->handle (manipy-spawn (-> self root trans) (-> self entity) *redring-sg* gp-0 :to self)) - ) - ) + (ppointer->handle (manipy-spawn (-> self root trans) (-> self entity) *redring-sg* gp-0 :to self)))) (send-event (handle->process (-> self shot-attractor)) 'attackable #t) - (send-event (handle->process (-> self shot-attractor)) 'draw #f) - ) + (send-event (handle->process (-> self shot-attractor)) 'draw #f)) (defbehavior robotboss-yellow-eco-off robotboss () ;; patches the one frame of ghost yellow eco bug that can @@ -247,47 +183,34 @@ (logclear! (-> self alts 7 extra perm status) (entity-perm-status bit-3)) (logclear! (-> self alts 8 extra perm status) (entity-perm-status bit-3)) (logclear! (-> self alts 9 extra perm status) (entity-perm-status bit-3)) - (logclear! (-> self alts 10 extra perm status) (entity-perm-status bit-3)) - ) - + (logclear! (-> self alts 10 extra perm status) (entity-perm-status bit-3))) (logior! (-> self alts 7 extra perm status) (entity-perm-status bit-9)) (logior! (-> self alts 8 extra perm status) (entity-perm-status bit-9)) (logior! (-> self alts 9 extra perm status) (entity-perm-status bit-9)) (logior! (-> self alts 10 extra perm status) (entity-perm-status bit-9)) - (none) - ) + (none)) (defbehavior robotboss-yellow-eco-on robotboss () (logclear! (-> self alts 7 extra perm status) (entity-perm-status bit-9)) (logclear! (-> self alts 8 extra perm status) (entity-perm-status bit-9)) (logclear! (-> self alts 9 extra perm status) (entity-perm-status bit-9)) (logclear! (-> self alts 10 extra perm status) (entity-perm-status bit-9)) - (none) - ) + (none)) (defbehavior robotboss-anim-blend-loop robotboss ((arg0 art-joint-anim)) - (let ((s5-0 (ja-group))) - (ja-channel-push! 2 0) - (ja :group! arg0 :num! min) - (ja :chan 1 :group! s5-0 :num! min) - ) + (let ((s5-0 (ja-group))) (ja-channel-push! 2 0) (ja :group! arg0 :num! min) (ja :chan 1 :group! s5-0 :num! min)) (loop (ja :num! (loop!)) (ja :chan 1 :num! (chan 0) :frame-interp (- 1.0 (ease-loc-t self))) - (suspend) - ) - (none) - ) + (suspend)) + (none)) (defbehavior robotboss-position robotboss () (let ((s5-0 (-> self entity extra trans)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (let ((s4-0 (new 'stack-no-clear 'matrix))) - (set! (-> self loc-t) (/ (the float (- (-> *display* game-frame-counter) (-> self loc-t-start))) - (the float (-> self loc-t-duration)) - ) - ) + (set! (-> self loc-t) + (/ (the float (- (-> *display* game-frame-counter) (-> self loc-t-start))) (the float (-> self loc-t-duration)))) (set! (-> self loc-t) (fmin 1.0 (-> self loc-t))) (vector-lerp! gp-0 (-> self old-loc) (-> self desired-loc) (ease-loc-t self)) (matrix-rotate-y! s4-0 (-> gp-0 x)) @@ -296,36 +219,23 @@ (vector+! (-> self root trans) gp-0 (-> self entity extra trans)) (vector-negate! (the-as vector (-> s4-0 vector)) (the-as vector (-> s4-0 vector))) (vector-negate! (-> s4-0 vector 2) (-> s4-0 vector 2)) - (matrix->quaternion (-> self root quat) s4-0) - ) + (matrix->quaternion (-> self root quat) s4-0)) (vector-! gp-0 s5-0 (-> self root trans)) (set! (-> gp-0 y) 0.0) (vector-normalize! gp-0 (the-as float 204800.0)) (set! (-> gp-0 y) 32768.0) (vector+! gp-0 gp-0 s5-0) - (send-event *camera* 'set-pivot gp-0) - ) + (send-event *camera* 'set-pivot gp-0)) (when (-> self alts 6) (let ((a0-16 (-> self alts 6 extra process)) - (f0-10 (+ (-> self entity extra trans y) (-> self desired-pool-y))) - ) + (f0-10 (+ (-> self entity extra trans y) (-> self desired-pool-y)))) (when a0-16 (let ((v1-23 (new 'stack-no-clear 'vector))) (set! (-> v1-23 quad) (-> (the-as process-drawable a0-16) root trans quad)) (cond - ((< (-> v1-23 y) (+ -204.8 f0-10)) - (+! (-> v1-23 y) 20.48) - ) - ((< (+ 204.8 f0-10) (-> v1-23 y)) - (+! (-> v1-23 y) -20.48) - ) - ) - (send-event a0-16 'move-to v1-23) - ) - ) - ) - ) - ) + ((< (-> v1-23 y) (+ -204.8 f0-10)) (+! (-> v1-23 y) 20.48)) + ((< (+ 204.8 f0-10) (-> v1-23 y)) (+! (-> v1-23 y) -20.48))) + (send-event a0-16 'move-to v1-23)))))) (defbehavior robotboss-darkecobomb robotboss ((arg0 vector) (arg1 float)) (+! (-> self children-spawned) 1) @@ -334,28 +244,13 @@ (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg darkbombD)) (set! (-> s4-0 quad) (-> self entity extra trans quad)) (vector+! s4-0 s4-0 arg0) - (process-spawn darkecobomb gp-0 s4-0 61440.0 300 arg1 :to self) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 638) - 300 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - ) + (process-spawn darkecobomb gp-0 s4-0 61440.0 300 arg1 :to self)) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 638) 300 #f #f #f gp-0 :to *entity-pool*))) (defbehavior robotboss-bomb-handler robotboss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-0 object)) (case arg2 - (('flash) - (set! (-> self palette-val) (* 0.0078125 (the-as float (-> arg3 param 0)))) - ) + (('flash) (set! (-> self palette-val) (* 0.0078125 (the-as float (-> arg3 param 0))))) (('bomb-done) (set! (-> self des-cam-entity) #f) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) @@ -363,482 +258,302 @@ (set! (-> a1-1 num-params) 0) (set! (-> a1-1 message) 'hide) (let ((t9-0 send-event-function) - (v1-4 (-> self alts 11)) - ) - (t9-0 - (if v1-4 - (-> v1-4 extra process) - ) - a1-1 - ) - ) - ) + (v1-4 (-> self alts 11))) + (t9-0 (if v1-4 (-> v1-4 extra process)) a1-1))) (set! v0-0 (+ (-> self children-spawned) -2)) (set! (-> self children-spawned) (the-as int v0-0)) - v0-0 - ) + v0-0) (('bomb-going) (set! (-> self des-cam-entity) #f) (set! v0-0 #t) (set! (-> self ignore-camera) (the-as symbol v0-0)) - v0-0 - ) - ) - ) + v0-0))) (defbehavior robotboss-handler robotboss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('flash) - (set! (-> self palette-val) (* 0.0078125 (the-as float (-> arg3 param 0)))) - ) + (('flash) (set! (-> self palette-val) (* 0.0078125 (the-as float (-> arg3 param 0))))) (('attack) (when (>= arg1 2) (case (-> arg3 param 1) (('eco-yellow) (let ((a0-5 (-> arg3 param 0))) - (when (and a0-5 ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry a0-5) - (-> self root) - (the-as uint (-> self vulnerable)) - ) - ) + (when (and a0-5 + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry a0-5) + (-> self root) + (the-as uint (-> self vulnerable)))) (when (> (-> self hits-to-go) 0) (set! (-> self took-hit) #t) - (let ((v0-0 (the-as number (+ (-> self hits-to-go) -1)))) - (set! (-> self hits-to-go) (the-as int v0-0)) - v0-0 - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (let ((v0-0 (the-as number (+ (-> self hits-to-go) -1)))) (set! (-> self hits-to-go) (the-as int v0-0)) v0-0)))))))))) (defstate robotboss-yellow-dark-bomb-wait (robotboss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('white-eco-picked-up) - (close-specific-task! (game-task finalboss-movies) (task-status unknown)) - (entity-birth-no-kill (-> self alts 5)) - (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) 'play-anim) - (let ((t9-2 send-event-function) - (v1-2 (-> self alts 5)) - ) - (t9-2 - (if v1-2 - (-> v1-2 extra process) - ) - a1-2 - ) - ) - ) - (cleanup-for-death self) - (deactivate self) - ) - (else - (robotboss-bomb-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (set! (-> self children-spawned) 0) - 0 - ) - :exit (behavior () - (set! (-> self des-cam-entity) #f) - (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) 'beam-off) - (let ((t9-0 send-event-function) - (v1-1 (-> self alts 3)) - ) - (t9-0 - (if v1-1 - (-> v1-1 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) 'beam-off) - (let ((t9-1 send-event-function) - (v1-5 (-> self alts 2)) - ) - (t9-1 - (if v1-5 - (-> v1-5 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) 'beam-off) - (let ((t9-2 send-event-function) - (v1-9 (-> self alts 1)) - ) - (t9-2 - (if v1-9 - (-> v1-9 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) 'beam-off) - (let ((t9-3 send-event-function) - (v1-13 (-> self alts 4)) - ) - (t9-3 - (if v1-13 - (-> v1-13 extra process) - ) - a1-3 - ) - ) - ) - (send-event (handle->process (-> self white-eco)) 'beam-off) - ) - :trans (behavior () - (robotboss-always-trans (the-as (state robotboss) #f)) - (spool-push *art-control* "green-sagecage-outro-beat-boss-a" 0 self (the-as float -1.0)) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-dark-shoot-no-yellow-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 1)) - (robotboss-darkecobomb (new 'static 'vector :y 40960.0 :z 81920.0) (-> self dda yellow-bomb-time)) - (play-ambient (-> self ambient) "GOL-AM20" #t (the-as vector #f)) - ) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-dark-shoot-no-yellow-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 2)) - (robotboss-darkecobomb (new 'static 'vector :y 40960.0 :z -81920.0) (+ -150.0 (-> self dda yellow-bomb-time))) - ) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-dark-shoot-no-yellow-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 3)) - (robotboss-darkecobomb (new 'static 'vector :x 81920.0 :y 40960.0) (+ -300.0 (-> self dda yellow-bomb-time))) - ) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-dark-shoot-no-yellow-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 4)) - (robotboss-darkecobomb (new 'static 'vector :x -81920.0 :y 40960.0) (+ -450.0 (-> self dda yellow-bomb-time))) - (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)) - (set! (-> self des-cam-entity) "camera-365") - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (when (not (ja-group? robotboss-idle-hover-no-yellow-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-yellow-ja) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('white-eco-picked-up) + (close-specific-task! (game-task finalboss-movies) (task-status unknown)) + (entity-birth-no-kill (-> self alts 5)) + (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) 'play-anim) + (let ((t9-2 send-event-function) + (v1-2 (-> self alts 5))) + (t9-2 (if v1-2 (-> v1-2 extra process)) a1-2))) + (cleanup-for-death self) + (deactivate self)) + (else (robotboss-bomb-handler proc argc message block)))) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (set! (-> self children-spawned) 0) + 0) + :exit + (behavior () + (set! (-> self des-cam-entity) #f) + (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) 'beam-off) + (let ((t9-0 send-event-function) + (v1-1 (-> self alts 3))) + (t9-0 (if v1-1 (-> v1-1 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) 'beam-off) + (let ((t9-1 send-event-function) + (v1-5 (-> self alts 2))) + (t9-1 (if v1-5 (-> v1-5 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) 'beam-off) + (let ((t9-2 send-event-function) + (v1-9 (-> self alts 1))) + (t9-2 (if v1-9 (-> v1-9 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) 'beam-off) + (let ((t9-3 send-event-function) + (v1-13 (-> self alts 4))) + (t9-3 (if v1-13 (-> v1-13 extra process)) a1-3))) + (send-event (handle->process (-> self white-eco)) 'beam-off)) + :trans + (behavior () + (robotboss-always-trans (the-as (state robotboss) #f)) + (spool-push *art-control* "green-sagecage-outro-beat-boss-a" 0 self (the-as float -1.0)) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-dark-shoot-no-yellow-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 1)) + (robotboss-darkecobomb (new 'static 'vector :y 40960.0 :z 81920.0) (-> self dda yellow-bomb-time)) + (play-ambient (-> self ambient) "GOL-AM20" #t (the-as vector #f))) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-dark-shoot-no-yellow-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 2)) + (robotboss-darkecobomb (new 'static 'vector :y 40960.0 :z -81920.0) (+ -150.0 (-> self dda yellow-bomb-time)))) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-dark-shoot-no-yellow-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 3)) + (robotboss-darkecobomb (new 'static 'vector :x 81920.0 :y 40960.0) (+ -300.0 (-> self dda yellow-bomb-time)))) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-dark-shoot-no-yellow-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 4)) + (robotboss-darkecobomb (new 'static 'vector :x -81920.0 :y 40960.0) (+ -450.0 (-> self dda yellow-bomb-time))) + (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)) + (set! (-> self des-cam-entity) "camera-365")) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (when (not (ja-group? robotboss-idle-hover-no-yellow-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-yellow-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robotboss-daxter-sacrifice-movie (robotboss) - :code (behavior () - (set-blackout-frames (seconds 100)) - (entity-birth-no-kill (-> self alts 5)) - (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) 'play-anim) - (let ((t9-2 send-event-function) - (v1-1 (-> self alts 5)) - ) - (t9-2 - (if v1-1 - (-> v1-1 extra process) - ) - a1-0 - ) - ) - ) - (suspend) - (while (movie?) + :code + (behavior () + (set-blackout-frames (seconds 100)) + (entity-birth-no-kill (-> self alts 5)) + (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) 'play-anim) + (let ((t9-2 send-event-function) + (v1-1 (-> self alts 5))) + (t9-2 (if v1-1 (-> v1-1 extra process)) a1-0))) (suspend) - ) - (set-blackout-frames 0) - (go robotboss-yellow-dark-bomb-wait) - ) - ) + (while (movie?) + (suspend)) + (set-blackout-frames 0) + (go robotboss-yellow-dark-bomb-wait))) (defstate robotboss-white-eco-movie (robotboss) - :enter (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (set! (-> self children-spawned) 0) - (set-time! (-> self state-time)) - (ja-post) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (spool-push *art-control* "green-sagecage-daxter-sacrifice" 0 self (the-as float -1.0)) - (when (and (< (-> self children-spawned) 1) (time-elapsed? (-> self state-time) (seconds 0.95))) - (+! (-> self children-spawned) 1) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self entity extra trans quad)) - (+! (-> gp-0 y) 81920.0) - (set! (-> self white-eco) (ppointer->handle (process-spawn light-eco-mother (-> self entity) gp-0 :to self))) - ) - ) - ) - :code (behavior () - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 1) - (set! (-> a1-0 message) 'open) - (set! (-> a1-0 param 0) (the-as uint (-> *part-group-id-table* 674))) - (let ((t9-0 send-event-function) - (v1-4 (-> self alts 3)) - ) - (t9-0 - (if v1-4 - (-> v1-4 extra process) - ) - a1-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) 'open) - (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 675))) - (let ((t9-1 send-event-function) - (v1-11 (-> self alts 2)) - ) - (t9-1 - (if v1-11 - (-> v1-11 extra process) - ) - a1-1 - ) - ) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 1) - (set! (-> a1-2 message) 'open) - (set! (-> a1-2 param 0) (the-as uint (-> *part-group-id-table* 676))) - (let ((t9-2 send-event-function) - (v1-18 (-> self alts 1)) - ) - (t9-2 - (if v1-18 - (-> v1-18 extra process) - ) - a1-2 - ) - ) - ) - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 1) - (set! (-> a1-3 message) 'open) - (set! (-> a1-3 param 0) (the-as uint (-> *part-group-id-table* 677))) - (let ((t9-3 send-event-function) - (v1-25 (-> self alts 4)) - ) - (t9-3 - (if v1-25 - (-> v1-25 extra process) - ) - a1-3 - ) - ) - ) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 3) - (set! (-> a1-4 message) 'beam-on) - (set! (-> a1-4 param 0) (the-as uint (-> *part-group-id-table* 666))) - (set! (-> a1-4 param 1) (the-as uint (-> *part-group-id-table* 666))) - (set! (-> a1-4 param 2) (the-as uint (-> self entity extra trans))) - (let ((t9-4 send-event-function) - (v1-37 (-> self alts 3)) - ) - (t9-4 - (if v1-37 - (-> v1-37 extra process) - ) - a1-4 - ) - ) - ) - (let ((a1-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-5 from) self) - (set! (-> a1-5 num-params) 3) - (set! (-> a1-5 message) 'beam-on) - (set! (-> a1-5 param 0) (the-as uint (-> *part-group-id-table* 672))) - (set! (-> a1-5 param 1) (the-as uint (-> *part-group-id-table* 672))) - (set! (-> a1-5 param 2) (the-as uint (-> self entity extra trans))) - (let ((t9-5 send-event-function) - (v1-49 (-> self alts 2)) - ) - (t9-5 - (if v1-49 - (-> v1-49 extra process) - ) - a1-5 - ) - ) - ) - (let ((a1-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-6 from) self) - (set! (-> a1-6 num-params) 3) - (set! (-> a1-6 message) 'beam-on) - (set! (-> a1-6 param 0) (the-as uint (-> *part-group-id-table* 668))) - (set! (-> a1-6 param 1) (the-as uint (-> *part-group-id-table* 668))) - (set! (-> a1-6 param 2) (the-as uint (-> self entity extra trans))) - (let ((t9-6 send-event-function) - (v1-61 (-> self alts 1)) - ) - (t9-6 - (if v1-61 - (-> v1-61 extra process) - ) - a1-6 - ) - ) - ) - (let ((a1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-7 from) self) - (set! (-> a1-7 num-params) 3) - (set! (-> a1-7 message) 'beam-on) - (set! (-> a1-7 param 0) (the-as uint (-> *part-group-id-table* 670))) - (set! (-> a1-7 param 1) (the-as uint (-> *part-group-id-table* 670))) - (set! (-> a1-7 param 2) (the-as uint (-> self entity extra trans))) - (let ((t9-7 send-event-function) - (v1-73 (-> self alts 4)) - ) - (t9-7 - (if v1-73 - (-> v1-73 extra process) - ) - a1-7 - ) - ) - ) - (let ((gp-1 (ppointer->handle (process-spawn finalbosscam (-> self entity) :to self)))) - (send-event (handle->process gp-1) 'play-anim) - (suspend) - (while (movie?) + :enter + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (set! (-> self children-spawned) 0) + (set-time! (-> self state-time)) + (ja-post)) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (spool-push *art-control* "green-sagecage-daxter-sacrifice" 0 self (the-as float -1.0)) + (when (and (< (-> self children-spawned) 1) (time-elapsed? (-> self state-time) (seconds 0.95))) + (+! (-> self children-spawned) 1) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self entity extra trans quad)) + (+! (-> gp-0 y) 81920.0) + (set! (-> self white-eco) (ppointer->handle (process-spawn light-eco-mother (-> self entity) gp-0 :to self)))))) + :code + (behavior () + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) 'open) + (set! (-> a1-0 param 0) (the-as uint (-> *part-group-id-table* 674))) + (let ((t9-0 send-event-function) + (v1-4 (-> self alts 3))) + (t9-0 (if v1-4 (-> v1-4 extra process)) a1-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) 'open) + (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 675))) + (let ((t9-1 send-event-function) + (v1-11 (-> self alts 2))) + (t9-1 (if v1-11 (-> v1-11 extra process)) a1-1))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'open) + (set! (-> a1-2 param 0) (the-as uint (-> *part-group-id-table* 676))) + (let ((t9-2 send-event-function) + (v1-18 (-> self alts 1))) + (t9-2 (if v1-18 (-> v1-18 extra process)) a1-2))) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 1) + (set! (-> a1-3 message) 'open) + (set! (-> a1-3 param 0) (the-as uint (-> *part-group-id-table* 677))) + (let ((t9-3 send-event-function) + (v1-25 (-> self alts 4))) + (t9-3 (if v1-25 (-> v1-25 extra process)) a1-3))) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 3) + (set! (-> a1-4 message) 'beam-on) + (set! (-> a1-4 param 0) (the-as uint (-> *part-group-id-table* 666))) + (set! (-> a1-4 param 1) (the-as uint (-> *part-group-id-table* 666))) + (set! (-> a1-4 param 2) (the-as uint (-> self entity extra trans))) + (let ((t9-4 send-event-function) + (v1-37 (-> self alts 3))) + (t9-4 (if v1-37 (-> v1-37 extra process)) a1-4))) + (let ((a1-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-5 from) self) + (set! (-> a1-5 num-params) 3) + (set! (-> a1-5 message) 'beam-on) + (set! (-> a1-5 param 0) (the-as uint (-> *part-group-id-table* 672))) + (set! (-> a1-5 param 1) (the-as uint (-> *part-group-id-table* 672))) + (set! (-> a1-5 param 2) (the-as uint (-> self entity extra trans))) + (let ((t9-5 send-event-function) + (v1-49 (-> self alts 2))) + (t9-5 (if v1-49 (-> v1-49 extra process)) a1-5))) + (let ((a1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-6 from) self) + (set! (-> a1-6 num-params) 3) + (set! (-> a1-6 message) 'beam-on) + (set! (-> a1-6 param 0) (the-as uint (-> *part-group-id-table* 668))) + (set! (-> a1-6 param 1) (the-as uint (-> *part-group-id-table* 668))) + (set! (-> a1-6 param 2) (the-as uint (-> self entity extra trans))) + (let ((t9-6 send-event-function) + (v1-61 (-> self alts 1))) + (t9-6 (if v1-61 (-> v1-61 extra process)) a1-6))) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 3) + (set! (-> a1-7 message) 'beam-on) + (set! (-> a1-7 param 0) (the-as uint (-> *part-group-id-table* 670))) + (set! (-> a1-7 param 1) (the-as uint (-> *part-group-id-table* 670))) + (set! (-> a1-7 param 2) (the-as uint (-> self entity extra trans))) + (let ((t9-7 send-event-function) + (v1-73 (-> self alts 4))) + (t9-7 (if v1-73 (-> v1-73 extra process)) a1-7))) + (let ((gp-1 (ppointer->handle (process-spawn finalbosscam (-> self entity) :to self)))) + (send-event (handle->process gp-1) 'play-anim) (suspend) - ) - ;; og:preserve-this - (#when PC_PORT - (-! (-> self state-time) (seconds 0.95)) - ((-> self state trans)) - ) - (let ((a0-18 (handle->process gp-1))) - (if a0-18 - (deactivate a0-18) - ) - ) - ) - (case (get-task-status (game-task finalboss-movies)) - (((task-status unknown)) - (go robotboss-daxter-sacrifice-movie) - ) - (else - (go robotboss-yellow-dark-bomb-wait) - ) - ) - ) - ) + (while (movie?) + (suspend)) + ;; og:preserve-this + (#when PC_PORT + (-! (-> self state-time) (seconds 0.95)) + ((-> self state trans))) + (let ((a0-18 (handle->process gp-1))) (if a0-18 (deactivate a0-18)))) + (case (get-task-status (game-task finalboss-movies)) + (((task-status unknown)) (go robotboss-daxter-sacrifice-movie)) + (else (go robotboss-yellow-dark-bomb-wait))))) (defstate robotboss-yellow-dark-bomb (robotboss) - :enter (behavior () - (set! (-> self old-loc quad) (-> self desired-loc quad)) - (set-vector! (-> self desired-loc) 16384.0 -81920.0 716800.0 1.0) - (set! (-> self loc-t) 0.0) - (set! (-> self loc-t-start) (-> *display* game-frame-counter)) - (set! (-> self loc-t-duration) (seconds 4)) - (set! (-> self desired-pool-y) -16384.0) - (play-ambient (-> self ambient) "GOL-AM01" #t (the-as vector #f)) - ) - :trans (behavior () - (robotboss-always-trans (the-as (state robotboss) #f)) - (spool-push *art-control* "finalbosscam-white-eco" 0 self (the-as float -1.0)) - (if (>= (-> self loc-t) 1.0) - (go robotboss-white-eco-movie) - ) - (robotboss-position) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-dark-reveal-no-yellow-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (not (ja-group? robotboss-idle-hover-no-yellow-ja)) + :enter + (behavior () + (set! (-> self old-loc quad) (-> self desired-loc quad)) + (set-vector! (-> self desired-loc) 16384.0 -81920.0 716800.0 1.0) + (set! (-> self loc-t) 0.0) + (set! (-> self loc-t-start) (-> *display* game-frame-counter)) + (set! (-> self loc-t-duration) (seconds 4)) + (set! (-> self desired-pool-y) -16384.0) + (play-ambient (-> self ambient) "GOL-AM01" #t (the-as vector #f))) + :trans + (behavior () + (robotboss-always-trans (the-as (state robotboss) #f)) + (spool-push *art-control* "finalbosscam-white-eco" 0 self (the-as float -1.0)) + (if (>= (-> self loc-t) 1.0) (go robotboss-white-eco-movie)) + (robotboss-position)) + :code + (behavior () (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-yellow-ja) - ) - (loop + (ja :group! robotboss-dark-reveal-no-yellow-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (when (not (ja-group? robotboss-idle-hover-no-yellow-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-yellow-ja)) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defbehavior robotboss-yellowshot robotboss () (+! (-> self children-spawned) 1) @@ -846,524 +561,341 @@ (let ((s5-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg Lyellow_ecoBarrell)) (set! (-> gp-0 y) 1972633.6) - (if *target* - (set! (-> s5-0 quad) (-> (target-pos 0) quad)) - (set! (-> s5-0 quad) (-> self entity extra trans quad)) - ) + (if *target* (set! (-> s5-0 quad) (-> (target-pos 0) quad)) (set! (-> s5-0 quad) (-> self entity extra trans quad))) (set! (-> s5-0 y) (+ 8192.0 (-> self entity extra trans y))) (vector-! s5-0 s5-0 gp-0) (vector-normalize! s5-0 (the-as float 819200.0)) (vector+! s5-0 s5-0 gp-0) - (process-spawn yellowshot gp-0 s5-0 0.0 750 :to self) - ) + (process-spawn yellowshot gp-0 s5-0 0.0 750 :to self)) (send-event self 'flash 255.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 642) - 300 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 642) 300 #f #f #f gp-0 :to *entity-pool*)) (sound-play "bfg-fire") - (none) - ) + (none)) (defbehavior robotboss-is-yellow-hit robotboss () - (or (ja-group? robotboss-yellow-hit-ja) (ja-group? robotboss-yellow-last-hit-ja)) - ) + (or (ja-group? robotboss-yellow-hit-ja) (ja-group? robotboss-yellow-last-hit-ja))) (defbehavior robotboss-time-to-shoot-yellow robotboss () - (>= (- (-> *display* game-frame-counter) (-> self state-time)) (+ (-> self till-next-shot) 750)) - ) + (>= (- (-> *display* game-frame-counter) (-> self state-time)) (+ (-> self till-next-shot) 750))) (defstate robotboss-yellow-wait (robotboss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hit-jak) - (let ((f0-2 (rand-float-gen))) - (cond - ((< 0.75 f0-2) - (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f)) - ) - ((< 0.5 f0-2) - (play-ambient (-> self ambient) "GOL-AM12" #t (the-as vector #f)) - ) - ((< 0.25 f0-2) - (play-ambient (-> self ambient) "GOL-AM15" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)) - ) - ) - ) - ) - (('missed-jak) - (let ((f0-5 (rand-float-gen))) - (if (< 0.5 f0-5) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hit-jak) + (let ((f0-2 (rand-float-gen))) + (cond + ((< 0.75 f0-2) (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f))) + ((< 0.5 f0-2) (play-ambient (-> self ambient) "GOL-AM12" #t (the-as vector #f))) + ((< 0.25 f0-2) (play-ambient (-> self ambient) "GOL-AM15" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)))))) + (('missed-jak) + (let ((f0-5 (rand-float-gen))) + (if (< 0.5 f0-5) (play-ambient (-> self ambient) "GOL-AM14" #t (the-as vector #f)) - (play-ambient (-> self ambient) "MAI-AM02" #t (the-as vector #f)) - ) - ) - ) - (else - (robotboss-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set! (-> self hits-to-go) -1) - (set! (-> self state-time) (-> *display* game-frame-counter)) - (set! (-> self till-next-shot) 300) - (set! (-> self use-interesting) #t) - (set! (-> self keep-charging) #f) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self shot-attractor)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (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) 'open) - (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 677))) - (let ((t9-1 send-event-function) - (v1-10 (-> self alts 4)) - ) - (t9-1 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 1) - (set! (-> a1-2 message) 'open) - (set! (-> a1-2 param 0) (the-as uint 0.4)) - (let ((t9-2 send-event-function) - (v1-17 (-> self alts 0)) - ) - (t9-2 - (if v1-17 - (-> v1-17 extra process) - ) - a1-2 - ) - ) - ) - (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 3 collide-with) (collide-kind)) - (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 3 prim-core collide-as) - (collide-kind) - ) - (set! (-> self use-interesting) #f) - (send-event *camera* 'point-of-interest #f) - (if (nonzero? (-> self yellow-gun)) - (set-mode! (-> self yellow-gun) (joint-mod-handler-mode flex-blend)) - ) - (robotboss-yellow-eco-off) - (robotboss-cut-cam-exit) - (stop! (-> self looping-sound 3)) - ) - :trans (behavior () - (robotboss-always-trans robotboss-yellow-dark-bomb) - (robotboss-shooting-trans 21) - (cond - ((zero? (-> self hits-to-go)) - (set! (-> self keep-charging) #f) - (stop! (-> self looping-sound 3)) - (robotboss-yellow-eco-off) - (set! (-> self took-hit) #f) - (+! (-> self hits-to-go) -1) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-yellow-last-hit-ja) - (set! (-> self yellow-smoke) #t) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg Lyellow_ecoTubeA)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 653) - 300 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (let ((gp-1 (manipy-spawn (-> self root trans) (-> self entity) *robotboss-yelloweco-sg* #f :to self))) - (send-event (ppointer->process (-> self parent)) 'flash 255.0) - (send-event (ppointer->process gp-1) 'anim-mode 'play1) - (send-event (ppointer->process gp-1) 'rot-quat (-> self root quat)) - ;; og:preserve-this the zero passed here was missing in the original game, but is a bug that causes undefined behavior - (send-event (ppointer->process gp-1) 'art-joint-anim "robotboss-yelloweco-yellow-last-hit" 0) - ) - ) - ((and (> (-> self hits-to-go) 0) (-> self took-hit)) - (if (not (play-ambient (-> self ambient) "GOL-AM17" #t (the-as vector #f))) - (play-ambient (-> self ambient) "MAI-AM06" #t (the-as vector #f)) - ) - (set! (-> self took-hit) #f) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-yellow-hit-ja) - ) - ) - (robotboss-position) - (robotboss-cut-cam (the-as float 5.0) (the-as float 50.0) (the-as int robotboss-yellow-roar-ja)) - (when (and (-> self keep-charging) - (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) - ) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (update! (-> self looping-sound 3)) - (vector<-cspace! gp-2 (joint-node robotboss-basic-lod0-jg Lyellow_ecoBarrell)) - (spawn (-> self particle 6) gp-2) - ) - ) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (robotboss-setup-for-hits 8 (-> self dda yellow-gun-hits)) - (if (nonzero? (-> self yellow-gun)) - (set-mode! (-> self yellow-gun) (joint-mod-handler-mode look-at)) - ) - (loop - (when (not (robotboss-time-to-shoot-yellow)) - (when (not (ja-group? robotboss-yellow-idle-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-yellow-idle-ja) - ) - (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) - (ja :num-func num-func-identity :frame-num 15.0) - ) - (while (not (or (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) - (ja-group? robotboss-yellow-last-hit-ja) - ) - ) - (when (not (ja-group? robotboss-yellow-idle-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-yellow-idle-ja) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (robotboss-is-yellow-hit) - (goto cfg-36) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (label cfg-36) - (when (not (robotboss-is-yellow-hit)) + (play-ambient (-> self ambient) "MAI-AM02" #t (the-as vector #f))))) + (else (robotboss-handler proc argc message block)))) + :enter + (behavior () + (set! (-> self hits-to-go) -1) + (set! (-> self state-time) (-> *display* game-frame-counter)) + (set! (-> self till-next-shot) 300) + (set! (-> self use-interesting) #t) + (set! (-> self keep-charging) #f)) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self shot-attractor)))) (if a0-1 (deactivate a0-1))) + (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) 'open) + (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 677))) + (let ((t9-1 send-event-function) + (v1-10 (-> self alts 4))) + (t9-1 (if v1-10 (-> v1-10 extra process)) a1-1))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'open) + (set! (-> a1-2 param 0) (the-as uint 0.4)) + (let ((t9-2 send-event-function) + (v1-17 (-> self alts 0))) + (t9-2 (if v1-17 (-> v1-17 extra process)) a1-2))) + (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 3 collide-with) (collide-kind)) + (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 3 prim-core collide-as) (collide-kind)) + (set! (-> self use-interesting) #f) + (send-event *camera* 'point-of-interest #f) + (if (nonzero? (-> self yellow-gun)) (set-mode! (-> self yellow-gun) (joint-mod-handler-mode flex-blend))) + (robotboss-yellow-eco-off) + (robotboss-cut-cam-exit) + (stop! (-> self looping-sound 3))) + :trans + (behavior () + (robotboss-always-trans robotboss-yellow-dark-bomb) + (robotboss-shooting-trans 21) + (cond + ((zero? (-> self hits-to-go)) + (set! (-> self keep-charging) #f) + (stop! (-> self looping-sound 3)) + (robotboss-yellow-eco-off) + (set! (-> self took-hit) #f) + (+! (-> self hits-to-go) -1) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-yellow-last-hit-ja) + (set! (-> self yellow-smoke) #t) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg Lyellow_ecoTubeA)) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 653) 300 #f #f #f gp-0 :to *entity-pool*)) + (let ((gp-1 (manipy-spawn (-> self root trans) (-> self entity) *robotboss-yelloweco-sg* #f :to self))) + (send-event (ppointer->process (-> self parent)) 'flash 255.0) + (send-event (ppointer->process gp-1) 'anim-mode 'play1) + (send-event (ppointer->process gp-1) 'rot-quat (-> self root quat)) + ;; og:preserve-this the zero passed here was missing in the original game, but is a bug that causes undefined behavior + (send-event (ppointer->process gp-1) 'art-joint-anim "robotboss-yelloweco-yellow-last-hit" 0))) + ((and (> (-> self hits-to-go) 0) (-> self took-hit)) + (if (not (play-ambient (-> self ambient) "GOL-AM17" #t (the-as vector #f))) + (play-ambient (-> self ambient) "MAI-AM06" #t (the-as vector #f))) + (set! (-> self took-hit) #f) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-yellow-hit-ja))) + (robotboss-position) + (robotboss-cut-cam (the-as float 5.0) (the-as float 50.0) (the-as int robotboss-yellow-roar-ja)) + (when (and (-> self keep-charging) (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot))) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (update! (-> self looping-sound 3)) + (vector<-cspace! gp-2 (joint-node robotboss-basic-lod0-jg Lyellow_ecoBarrell)) + (spawn (-> self particle 6) gp-2)))) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (robotboss-setup-for-hits 8 (-> self dda yellow-gun-hits)) + (if (nonzero? (-> self yellow-gun)) (set-mode! (-> self yellow-gun) (joint-mod-handler-mode look-at))) + (loop + (when (not (robotboss-time-to-shoot-yellow)) (when (not (ja-group? robotboss-yellow-idle-ja)) (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-yellow-idle-ja) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (robotboss-is-yellow-hit) - (goto cfg-55) - ) - (if (< 15.0 (ja-aframe-num 0)) - (set! (-> self keep-charging) #t) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (label cfg-55) - (when (and (not (ja-group? robotboss-yellow-last-hit-ja)) - (or (robotboss-time-to-shoot-yellow) (not (ja-group? robotboss-yellow-hit-ja))) - ) - (set! (-> self state-time) (-> *display* game-frame-counter)) - (let ((f30-1 (-> self dda yellow-shot-time-min)) - (f28-0 (-> self dda yellow-shot-time-rnd)) - ) - (set! (-> self till-next-shot) (the int (+ f30-1 (the float (the int (* f28-0 (rand-float-gen))))))) - ) - (stop! (-> self looping-sound 3)) - (robotboss-yellowshot) - (robotboss-yellow-eco-on) - (let ((f0-29 (rand-float-gen))) - (cond - ((< 0.8333333 f0-29) - (play-ambient (-> self ambient) "GOL-AM04" #t (the-as vector #f)) - ) - ((< 0.6666667 f0-29) - (play-ambient (-> self ambient) "GOL-AM09" #t (the-as vector #f)) - ) - ((< 0.5 f0-29) - (play-ambient (-> self ambient) "GOL-AM08" #t (the-as vector #f)) - ) - ((< 0.33333334 f0-29) - (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f)) - ) - ((< 0.16666667 f0-29) - (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "MAI-AM02" #t (the-as vector #f)) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! robotboss-yellow-blast-ja) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (ja-group? robotboss-yellow-last-hit-ja) - (ja-no-eval :group! robotboss-yellow-roar-ja :num! (seek!) :frame-num 0.0) + (ja :group! robotboss-yellow-idle-ja)) + (if (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) + (ja :num-func num-func-identity :frame-num 15.0)) + (while (not (or (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) + (ja-group? robotboss-yellow-last-hit-ja))) + (when (not (ja-group? robotboss-yellow-idle-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-yellow-idle-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (robotboss-is-yellow-hit) (goto cfg-36)) + (suspend) + (ja :num! (seek!)))) + (label cfg-36) + (when (not (robotboss-is-yellow-hit)) + (when (not (ja-group? robotboss-yellow-idle-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-yellow-idle-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (robotboss-is-yellow-hit) (goto cfg-55)) + (if (< 15.0 (ja-aframe-num 0)) (set! (-> self keep-charging) #t)) + (suspend) + (ja :num! (seek!))))) + (label cfg-55) + (when (and (not (ja-group? robotboss-yellow-last-hit-ja)) + (or (robotboss-time-to-shoot-yellow) (not (ja-group? robotboss-yellow-hit-ja)))) + (set! (-> self state-time) (-> *display* game-frame-counter)) + (let ((f30-1 (-> self dda yellow-shot-time-min)) + (f28-0 (-> self dda yellow-shot-time-rnd))) + (set! (-> self till-next-shot) (the int (+ f30-1 (the float (the int (* f28-0 (rand-float-gen)))))))) + (stop! (-> self looping-sound 3)) + (robotboss-yellowshot) + (robotboss-yellow-eco-on) + (let ((f0-29 (rand-float-gen))) + (cond + ((< 0.8333333 f0-29) (play-ambient (-> self ambient) "GOL-AM04" #t (the-as vector #f))) + ((< 0.6666667 f0-29) (play-ambient (-> self ambient) "GOL-AM09" #t (the-as vector #f))) + ((< 0.5 f0-29) (play-ambient (-> self ambient) "GOL-AM08" #t (the-as vector #f))) + ((< 0.33333334 f0-29) (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f))) + ((< 0.16666667 f0-29) (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "MAI-AM02" #t (the-as vector #f))))) + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! robotboss-yellow-blast-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (go robotboss-yellow-dark-bomb) - ) - ) - ) - :post (behavior () - (when *target* - (if (nonzero? (-> self yellow-gun)) - (set-target! (-> self yellow-gun) (target-pos 5)) - ) - ) - (transform-post) - ) - ) + (ja :num! (seek!))) + (when (ja-group? robotboss-yellow-last-hit-ja) + (ja-no-eval :group! robotboss-yellow-roar-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go robotboss-yellow-dark-bomb)))) + :post + (behavior () + (when *target* + (if (nonzero? (-> self yellow-gun)) (set-target! (-> self yellow-gun) (target-pos 5)))) + (transform-post))) (defstate robotboss-yellow (robotboss) :event robotboss-handler - :enter (behavior () - (set! (-> self old-loc quad) (-> self desired-loc quad)) - (set-vector! (-> self desired-loc) 13653.333 77824.0 491520.0 1.0) - (set! (-> self loc-t) 0.0) - (set! (-> self loc-t-start) (-> *display* game-frame-counter)) - (set! (-> self loc-t-duration) (seconds 3)) - (set! (-> self desired-pool-y) -18432.0) - ) - :trans (behavior () - (robotboss-always-trans robotboss-yellow-wait) - (if (>= (-> self loc-t) 1.0) - (go robotboss-yellow-wait) - ) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-dark-return-after-red-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (cond - ((and *target* (< (+ 81920.0 (-> self entity extra trans y)) (-> (target-pos 0) y))) - (when (not (ja-group? robotboss-idle-hover-lookup-no-red-ja)) - (ja-channel-push! 1 (seconds 0.8)) - (ja :group! robotboss-idle-hover-lookup-no-red-ja) - ) - ) - ((not (ja-group? robotboss-idle-hover-no-red-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-red-ja) - ) - ) + :enter + (behavior () + (set! (-> self old-loc quad) (-> self desired-loc quad)) + (set-vector! (-> self desired-loc) 13653.333 77824.0 491520.0 1.0) + (set! (-> self loc-t) 0.0) + (set! (-> self loc-t-start) (-> *display* game-frame-counter)) + (set! (-> self loc-t-duration) (seconds 3)) + (set! (-> self desired-pool-y) -18432.0)) + :trans + (behavior () + (robotboss-always-trans robotboss-yellow-wait) + (if (>= (-> self loc-t) 1.0) (go robotboss-yellow-wait)) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-dark-return-after-red-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (cond + ((and *target* (< (+ 81920.0 (-> self entity extra trans y)) (-> (target-pos 0) y))) + (when (not (ja-group? robotboss-idle-hover-lookup-no-red-ja)) + (ja-channel-push! 1 (seconds 0.8)) + (ja :group! robotboss-idle-hover-lookup-no-red-ja))) + ((not (ja-group? robotboss-idle-hover-no-red-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-red-ja))) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robotboss-red-dark-bomb-wait (robotboss) :event robotboss-bomb-handler - :enter (behavior () - (set! (-> self children-spawned) 0) - (logior! (-> self alts 11 extra perm status) (entity-perm-status bit-3)) - ) - :exit (behavior () - (set! (-> self ignore-camera) #f) - (set! (-> self des-cam-entity) #f) - (logclear! (-> self alts 11 extra perm status) (entity-perm-status bit-3)) - ) - :trans (behavior () - (robotboss-always-trans robotboss-yellow) - (if (and (< (-> self children-spawned) 0) - (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) - ) - (go robotboss-yellow) - ) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-dark-shoot-no-red-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 1)) - (robotboss-darkecobomb (new 'static 'vector :y 32768.0) (-> self dda red-bomb-time)) - (set! (-> self des-cam-entity) "camera-365") - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (when (not (ja-group? robotboss-idle-hover-no-red-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-red-ja) - ) + :enter + (behavior () + (set! (-> self children-spawned) 0) + (logior! (-> self alts 11 extra perm status) (entity-perm-status bit-3))) + :exit + (behavior () + (set! (-> self ignore-camera) #f) + (set! (-> self des-cam-entity) #f) + (logclear! (-> self alts 11 extra perm status) (entity-perm-status bit-3))) + :trans + (behavior () + (robotboss-always-trans robotboss-yellow) + (if (and (< (-> self children-spawned) 0) (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump))) + (go robotboss-yellow)) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-dark-shoot-no-red-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 1)) + (robotboss-darkecobomb (new 'static 'vector :y 32768.0) (-> self dda red-bomb-time)) + (set! (-> self des-cam-entity) "camera-365")) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (when (not (ja-group? robotboss-idle-hover-no-red-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-red-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robotboss-red-dark-bomb (robotboss) - :enter (behavior () - (set! (-> self old-loc quad) (-> self desired-loc quad)) - (set-vector! (-> self desired-loc) 0.0 -81920.0 716800.0 1.0) - (set! (-> self loc-t) 0.0) - (set! (-> self loc-t-start) (-> *display* game-frame-counter)) - (set! (-> self loc-t-duration) (seconds 3)) - (set! (-> self desired-pool-y) -20480.0) - ) - :trans (behavior () - (robotboss-always-trans robotboss-red-dark-bomb-wait) - (robotboss-position) - (if (>= (-> self loc-t) 1.0) - (go robotboss-red-dark-bomb-wait) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-dark-reveal-no-red-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (not (ja-group? robotboss-idle-hover-no-red-ja)) + :enter + (behavior () + (set! (-> self old-loc quad) (-> self desired-loc quad)) + (set-vector! (-> self desired-loc) 0.0 -81920.0 716800.0 1.0) + (set! (-> self loc-t) 0.0) + (set! (-> self loc-t-start) (-> *display* game-frame-counter)) + (set! (-> self loc-t-duration) (seconds 3)) + (set! (-> self desired-pool-y) -20480.0)) + :trans + (behavior () + (robotboss-always-trans robotboss-red-dark-bomb-wait) + (robotboss-position) + (if (>= (-> self loc-t) 1.0) (go robotboss-red-dark-bomb-wait))) + :code + (behavior () (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-red-ja) - ) - (loop + (ja :group! robotboss-dark-reveal-no-red-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (when (not (ja-group? robotboss-idle-hover-no-red-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-red-ja)) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (deftype redshot-launch-info (structure) - ((dest vector :inline) - (flight-time time-frame) - (stall-time time-frame) - ) - ) - + ((dest vector :inline) + (flight-time time-frame) + (stall-time time-frame))) (deftype redshot-launch-array (structure) - ((info redshot-launch-info 6 :inline) - ) - ) - + ((info redshot-launch-info 6 :inline))) (defbehavior robotboss-redshot-fill-array robotboss ((arg0 redshot-launch-array)) (let ((s2-0 0) (s4-0 (new 'stack-no-clear 'vector)) - (s5-0 (new-stack-vector0)) - ) + (s5-0 (new-stack-vector0))) 0.0 (dotimes (s3-0 6) (let ((s1-0 (-> arg0 info s3-0))) (let ((f30-0 -40960.0) - (f28-0 81920.0) - ) - (set! (-> s1-0 dest x) (+ f30-0 (* f28-0 (rand-float-gen)))) - ) + (f28-0 81920.0)) + (set! (-> s1-0 dest x) (+ f30-0 (* f28-0 (rand-float-gen))))) (set! (-> s1-0 dest y) 0.0) (let ((f30-1 -40960.0) - (f28-1 81920.0) - ) - (set! (-> s1-0 dest z) (+ f30-1 (* f28-1 (rand-float-gen)))) - ) - (set! (-> s1-0 dest w) 1.0) - ) + (f28-1 81920.0)) + (set! (-> s1-0 dest z) (+ f30-1 (* f28-1 (rand-float-gen))))) + (set! (-> s1-0 dest w) 1.0)) (dotimes (s1-1 s3-0) (vector-! s4-0 (the-as vector (-> arg0 info s3-0)) (the-as vector (-> arg0 info s1-1))) (let ((f0-13 (vector-length-squared s4-0))) (if (< f0-13 1073741800.0) - (vector+float*! - (the-as vector (-> arg0 info s3-0)) - (the-as vector (-> arg0 info s1-1)) - s4-0 - (/ 32768.0 (sqrtf f0-13)) - ) - ) - ) - ) + (vector+float*! (the-as vector (-> arg0 info s3-0)) (the-as vector (-> arg0 info s1-1)) s4-0 (/ 32768.0 (sqrtf f0-13)))))) (vector+! s5-0 s5-0 (the-as vector (-> arg0 info s3-0))) (let* ((f30-2 60.0) (v1-27 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-28 (the-as number (logior #x3f800000 v1-27))) - ) - (set! (-> arg0 info s3-0 flight-time) - (the-as time-frame (+ (the int (* f30-2 (+ -1.0 (the-as float v1-28)))) 180)) - ) - ) + (v1-28 (the-as number (logior #x3f800000 v1-27)))) + (set! (-> arg0 info s3-0 flight-time) (the-as time-frame (+ (the int (* f30-2 (+ -1.0 (the-as float v1-28)))) 180)))) (let ((s1-3 (max 150 (- (the-as time-frame s2-0) (-> arg0 info s3-0 flight-time)))) - (f30-3 60.0) - ) - (set! (-> arg0 info s3-0 stall-time) (the-as time-frame (+ (the int (* f30-3 (rand-float-gen))) 300 s1-3))) - ) - (set! s2-0 (the-as int (+ (-> arg0 info s3-0 flight-time) (-> arg0 info s3-0 stall-time)))) - ) + (f30-3 60.0)) + (set! (-> arg0 info s3-0 stall-time) (the-as time-frame (+ (the int (* f30-3 (rand-float-gen))) 300 s1-3)))) + (set! s2-0 (the-as int (+ (-> arg0 info s3-0 flight-time) (-> arg0 info s3-0 stall-time))))) (vector-float*! s5-0 s5-0 0.16666667) (vector-! s5-0 (-> self entity extra trans) s5-0) (dotimes (v1-53 6) (vector+! (the-as vector (-> arg0 info v1-53)) (the-as vector (-> arg0 info v1-53)) s5-0) - (+! (-> arg0 info v1-53 dest y) 2048.0) - ) - ) - (none) - ) + (+! (-> arg0 info v1-53 dest y) 2048.0))) + (none)) ;; WARN: Stack slot load at 64 mismatch: defined as size 4, got size 16 (defbehavior robotboss-redshot robotboss ((arg0 redshot-launch-info) (arg1 symbol)) @@ -1375,27 +907,21 @@ (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg red_ecoTip)) (let ((s4-0 (get-process *default-dead-pool* redshot #x4000))) (when s4-0 - (let ((t9-2 (method-of-type redshot activate))) - (t9-2 (the-as redshot s4-0) self 'redshot (the-as pointer #x70004000)) - ) + (let ((t9-2 (method-of-type redshot activate))) (t9-2 (the-as redshot s4-0) self 'redshot (the-as pointer #x70004000))) (let ((s3-0 run-function-in-process) (s2-0 s4-0) (s1-0 redshot-init-by-other) - (s0-0 gp-0) - ) + (s0-0 gp-0)) (set! sv-48 (-> sv-32 dest)) (let ((f30-0 20480.0) - (f28-0 12288.0) - ) - (set! sv-64 (+ f30-0 (* f28-0 (rand-float-gen)))) - ) + (f28-0 12288.0)) + (set! sv-64 (+ f30-0 (* f28-0 (rand-float-gen))))) (set! sv-80 (-> sv-32 flight-time)) (set! sv-96 (-> sv-32 stall-time)) (let* ((f30-1 300.0) (v1-19 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-20 (the-as number (logior #x3f800000 v1-19))) - (t3-0 (the int (* f30-1 (+ -1.0 (the-as float v1-20))))) - ) + (t3-0 (the int (* f30-1 (+ -1.0 (the-as float v1-20)))))) ((the-as (function object object object object object object object object none) s3-0) s2-0 s1-0 @@ -1404,442 +930,287 @@ sv-64 sv-80 sv-96 - t3-0 - ) - ) - ) - (-> s4-0 ppointer) - ) - ) + t3-0))) + (-> s4-0 ppointer))) (when s5-0 - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 641) - 300 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - (sound-play "red-fire") - ) - ) - ) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 641) 300 #f #f #f gp-0 :to *entity-pool*) + (sound-play "red-fire"))))) (defbehavior robotboss-is-red-hit robotboss () - (or (ja-group? robotboss-red-hit-ja) (ja-group? robotboss-red-last-hit-ja)) - ) + (or (ja-group? robotboss-red-hit-ja) (ja-group? robotboss-red-last-hit-ja))) (defstate robotboss-red-wait (robotboss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hit-jak) - (let ((f0-2 (rand-float-gen))) - (cond - ((< 0.75 f0-2) - (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f)) - ) - ((< 0.5 f0-2) - (play-ambient (-> self ambient) "GOL-AM12" #t (the-as vector #f)) - ) - ((< 0.25 f0-2) - (play-ambient (-> self ambient) "GOL-AM15" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)) - ) - ) - ) - ) - (('missed-jak) - (let ((f0-5 (rand-float-gen))) - (if (< 0.5 f0-5) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hit-jak) + (let ((f0-2 (rand-float-gen))) + (cond + ((< 0.75 f0-2) (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f))) + ((< 0.5 f0-2) (play-ambient (-> self ambient) "GOL-AM12" #t (the-as vector #f))) + ((< 0.25 f0-2) (play-ambient (-> self ambient) "GOL-AM15" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)))))) + (('missed-jak) + (let ((f0-5 (rand-float-gen))) + (if (< 0.5 f0-5) (play-ambient (-> self ambient) "GOL-AM14" #t (the-as vector #f)) - (play-ambient (-> self ambient) "MAI-AM01" #t (the-as vector #f)) - ) - ) - ) - (else - (robotboss-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set! (-> self hits-to-go) -1) - (set! (-> self des-cam-entity) "camera-390") - (set! (-> self use-interesting) #t) - (set! (-> self state-time) (-> *display* game-frame-counter)) - (set! (-> self till-next-shot) 0) - 0 - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self shot-attractor)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (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) 'open) - (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 676))) - (let ((t9-1 send-event-function) - (v1-10 (-> self alts 1)) - ) - (t9-1 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 1) - (set! (-> a1-2 message) 'open) - (set! (-> a1-2 param 0) (the-as uint 0.3)) - (let ((t9-2 send-event-function) - (v1-17 (-> self alts 0)) - ) - (t9-2 - (if v1-17 - (-> v1-17 extra process) - ) - a1-2 - ) - ) - ) - (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 5 collide-with) (collide-kind)) - (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 5 prim-core collide-as) - (collide-kind) - ) - (set! (-> self use-interesting) #f) - (set! (-> self des-cam-entity) #f) - (robotboss-yellow-eco-off) - (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) 'show) - (let ((t9-4 send-event-function) - (v1-27 (-> self alts 11)) - ) - (t9-4 - (if v1-27 - (-> v1-27 extra process) - ) - a1-3 - ) - ) - ) - ) - :trans (behavior () - (robotboss-always-trans robotboss-red-dark-bomb) - (robotboss-shooting-trans 40) - (cond - ((zero? (-> self hits-to-go)) - (robotboss-yellow-eco-off) - (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) 'show) - (let ((t9-3 send-event-function) - (v1-3 (-> self alts 11)) - ) - (t9-3 - (if v1-3 - (-> v1-3 extra process) - ) - a1-0 - ) - ) - ) - (set! (-> self took-hit) #f) - (+! (-> self hits-to-go) -1) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-red-last-hit-ja) - (set! (-> self red-smoke) #t) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg rArmBotWireC)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 649) - 300 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (let ((gp-1 (manipy-spawn (-> self root trans) (-> self entity) *robotboss-redeco-sg* #f :to self))) - (send-event (ppointer->process (-> self parent)) 'flash 255.0) - (send-event (ppointer->process gp-1) 'anim-mode 'play1) - (send-event (ppointer->process gp-1) 'rot-quat (-> self root quat)) - ;; og:preserve-this the zero passed here was missing in the original game, but is a bug that causes undefined behavior - (send-event (ppointer->process gp-1) 'art-joint-anim "robotboss-redeco-red-last-hit" 0) - ) - ) - ((and (> (-> self hits-to-go) 0) (-> self took-hit)) - (if (not (play-ambient (-> self ambient) "GOL-AM17" #t (the-as vector #f))) - (play-ambient (-> self ambient) "MAI-AM06" #t (the-as vector #f)) - ) - (set! (-> self took-hit) #f) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-red-hit-ja) - ) - ) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (robotboss-setup-for-hits 1 5) - (loop - (until (or (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) - (ja-group? robotboss-red-last-hit-ja) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-red-idle-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (ja-group? robotboss-red-last-hit-ja) - (goto cfg-24) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (label cfg-24) + (play-ambient (-> self ambient) "MAI-AM01" #t (the-as vector #f))))) + (else (robotboss-handler proc argc message block)))) + :enter + (behavior () + (set! (-> self hits-to-go) -1) + (set! (-> self des-cam-entity) "camera-390") + (set! (-> self use-interesting) #t) (set! (-> self state-time) (-> *display* game-frame-counter)) - (let ((f30-0 (-> self dda red-shot-time-min)) - (f28-0 (-> self dda red-shot-time-rnd)) - ) - (set! (-> self till-next-shot) (the int (+ f30-0 (the float (the int (* f28-0 (rand-float-gen))))))) - ) - (when (not (robotboss-is-red-hit)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-red-charge-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (update! (-> self looping-sound 2)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg red_ecoTip)) - (spawn (-> self particle 5) gp-0) - ) - (if (robotboss-is-red-hit) - (goto cfg-37) - ) - (suspend) - (ja :num! (seek!)) - ) - (label cfg-37) - (stop! (-> self looping-sound 2)) - ) - (when (not (ja-group? robotboss-red-last-hit-ja)) - (let ((f30-1 (rand-float-gen)) - (gp-1 (new 'stack-no-clear 'redshot-launch-array)) - (s5-0 (-> self dda red-shots-min)) - ) - (robotboss-yellow-eco-on) - (robotboss-redshot-fill-array gp-1) - (robotboss-redshot (the-as redshot-launch-info (-> gp-1 info)) #t) - (let* ((v1-127 (+ s5-0 (the int (* f30-1 (the float (-> self dda red-shots-rnd)))))) - (s5-1 (+ (min 6 v1-127) -1)) - ) - (dotimes (s4-0 s5-1) - (robotboss-redshot (-> gp-1 info (+ s4-0 1)) #f) - ) - ) - ) - ) - (when (not (robotboss-is-red-hit)) - (let ((f0-33 (rand-float-gen))) - (cond - ((< 0.8333333 f0-33) - (play-ambient (-> self ambient) "GOL-AM04" #t (the-as vector #f)) - ) - ((< 0.6666667 f0-33) - (play-ambient (-> self ambient) "GOL-AM05" #t (the-as vector #f)) - ) - ((< 0.5 f0-33) - (play-ambient (-> self ambient) "GOL-AM08" #t (the-as vector #f)) - ) - ((< 0.33333334 f0-33) - (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f)) - ) - ((< 0.16666667 f0-33) - (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "MAI-AM02" #t (the-as vector #f)) - ) - ) - ) - (ja :group! robotboss-red-blast-ja) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + (set! (-> self till-next-shot) 0) + 0) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self shot-attractor)))) (if a0-1 (deactivate a0-1))) + (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) 'open) + (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 676))) + (let ((t9-1 send-event-function) + (v1-10 (-> self alts 1))) + (t9-1 (if v1-10 (-> v1-10 extra process)) a1-1))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'open) + (set! (-> a1-2 param 0) (the-as uint 0.3)) + (let ((t9-2 send-event-function) + (v1-17 (-> self alts 0))) + (t9-2 (if v1-17 (-> v1-17 extra process)) a1-2))) + (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 5 collide-with) (collide-kind)) + (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 5 prim-core collide-as) (collide-kind)) + (set! (-> self use-interesting) #f) + (set! (-> self des-cam-entity) #f) + (robotboss-yellow-eco-off) + (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) 'show) + (let ((t9-4 send-event-function) + (v1-27 (-> self alts 11))) + (t9-4 (if v1-27 (-> v1-27 extra process)) a1-3)))) + :trans + (behavior () + (robotboss-always-trans robotboss-red-dark-bomb) + (robotboss-shooting-trans 40) + (cond + ((zero? (-> self hits-to-go)) + (robotboss-yellow-eco-off) + (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) 'show) + (let ((t9-3 send-event-function) + (v1-3 (-> self alts 11))) + (t9-3 (if v1-3 (-> v1-3 extra process)) a1-0))) + (set! (-> self took-hit) #f) + (+! (-> self hits-to-go) -1) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-red-last-hit-ja) + (set! (-> self red-smoke) #t) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg rArmBotWireC)) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 649) 300 #f #f #f gp-0 :to *entity-pool*)) + (let ((gp-1 (manipy-spawn (-> self root trans) (-> self entity) *robotboss-redeco-sg* #f :to self))) + (send-event (ppointer->process (-> self parent)) 'flash 255.0) + (send-event (ppointer->process gp-1) 'anim-mode 'play1) + (send-event (ppointer->process gp-1) 'rot-quat (-> self root quat)) + ;; og:preserve-this the zero passed here was missing in the original game, but is a bug that causes undefined behavior + (send-event (ppointer->process gp-1) 'art-joint-anim "robotboss-redeco-red-last-hit" 0))) + ((and (> (-> self hits-to-go) 0) (-> self took-hit)) + (if (not (play-ambient (-> self ambient) "GOL-AM17" #t (the-as vector #f))) + (play-ambient (-> self ambient) "MAI-AM06" #t (the-as vector #f))) + (set! (-> self took-hit) #f) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-red-hit-ja))) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) (suspend) - (ja :num! (seek!)) - ) - (when (ja-group? robotboss-red-last-hit-ja) - (ja-no-eval :group! robotboss-red-roar-ja :num! (seek!) :frame-num 0.0) + (ja-eval)) + (robotboss-setup-for-hits 1 5) + (loop + (until (or (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) + (ja-group? robotboss-red-last-hit-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-red-idle-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (ja-group? robotboss-red-last-hit-ja) (goto cfg-24)) + (suspend) + (ja :num! (seek!)))) + (label cfg-24) + (set! (-> self state-time) (-> *display* game-frame-counter)) + (let ((f30-0 (-> self dda red-shot-time-min)) + (f28-0 (-> self dda red-shot-time-rnd))) + (set! (-> self till-next-shot) (the int (+ f30-0 (the float (the int (* f28-0 (rand-float-gen)))))))) + (when (not (robotboss-is-red-hit)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-red-charge-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (update! (-> self looping-sound 2)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node robotboss-basic-lod0-jg red_ecoTip)) + (spawn (-> self particle 5) gp-0)) + (if (robotboss-is-red-hit) (goto cfg-37)) + (suspend) + (ja :num! (seek!))) + (label cfg-37) + (stop! (-> self looping-sound 2))) + (when (not (ja-group? robotboss-red-last-hit-ja)) + (let ((f30-1 (rand-float-gen)) + (gp-1 (new 'stack-no-clear 'redshot-launch-array)) + (s5-0 (-> self dda red-shots-min))) + (robotboss-yellow-eco-on) + (robotboss-redshot-fill-array gp-1) + (robotboss-redshot (the-as redshot-launch-info (-> gp-1 info)) #t) + (let* ((v1-127 (+ s5-0 (the int (* f30-1 (the float (-> self dda red-shots-rnd)))))) + (s5-1 (+ (min 6 v1-127) -1))) + (dotimes (s4-0 s5-1) + (robotboss-redshot (-> gp-1 info (+ s4-0 1)) #f))))) + (when (not (robotboss-is-red-hit)) + (let ((f0-33 (rand-float-gen))) + (cond + ((< 0.8333333 f0-33) (play-ambient (-> self ambient) "GOL-AM04" #t (the-as vector #f))) + ((< 0.6666667 f0-33) (play-ambient (-> self ambient) "GOL-AM05" #t (the-as vector #f))) + ((< 0.5 f0-33) (play-ambient (-> self ambient) "GOL-AM08" #t (the-as vector #f))) + ((< 0.33333334 f0-33) (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f))) + ((< 0.16666667 f0-33) (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "MAI-AM02" #t (the-as vector #f))))) + (ja :group! robotboss-red-blast-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (go robotboss-red-dark-bomb) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (when (ja-group? robotboss-red-last-hit-ja) + (ja-no-eval :group! robotboss-red-roar-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go robotboss-red-dark-bomb)))) + :post transform-post) (defstate robotboss-red (robotboss) :event robotboss-handler - :enter (behavior () - (set! (-> self old-loc quad) (-> self desired-loc quad)) - (set-vector! (-> self desired-loc) 8192.0 -40960.0 327680.0 1.0) - (set! (-> self loc-t) 0.0) - (set! (-> self loc-t-start) (-> *display* game-frame-counter)) - (set! (-> self loc-t-duration) (seconds 3)) - (set! (-> self desired-pool-y) -22528.0) - (set-setting! 'sound-flava #f 40.0 (music-flava finalboss-end)) - ) - :trans (behavior () - (robotboss-always-trans robotboss-red-wait) - (if (>= (-> self loc-t) 1.0) - (go robotboss-red-wait) - ) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-dark-return-after-green-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-blue-ja) - ) + :enter + (behavior () + (set! (-> self old-loc quad) (-> self desired-loc quad)) + (set-vector! (-> self desired-loc) 8192.0 -40960.0 327680.0 1.0) + (set! (-> self loc-t) 0.0) + (set! (-> self loc-t-start) (-> *display* game-frame-counter)) + (set! (-> self loc-t-duration) (seconds 3)) + (set! (-> self desired-pool-y) -22528.0) + (set-setting! 'sound-flava #f 40.0 (music-flava finalboss-end))) + :trans + (behavior () + (robotboss-always-trans robotboss-red-wait) + (if (>= (-> self loc-t) 1.0) (go robotboss-red-wait)) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-dark-return-after-green-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-blue-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robotboss-green-dark-bomb-wait (robotboss) :event robotboss-bomb-handler - :enter (behavior () - (set! (-> self children-spawned) 0) - 0 - ) - :exit (behavior () - (set! (-> self ignore-camera) #f) - (set! (-> self des-cam-entity) #f) - ) - :trans (behavior () - (robotboss-always-trans robotboss-red) - (if (and (< (-> self children-spawned) 0) - (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) - ) - (go robotboss-red) - ) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-dark-shoot-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 1)) - (robotboss-darkecobomb (new 'static 'vector :y 32768.0) (-> self dda green-bomb-time)) - (set! (-> self des-cam-entity) "camera-365") - (play-ambient (-> self ambient) "GOL-AM11" #t (the-as vector #f)) - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-blue-ja) - ) + :enter + (behavior () + (set! (-> self children-spawned) 0) + 0) + :exit + (behavior () + (set! (-> self ignore-camera) #f) + (set! (-> self des-cam-entity) #f)) + :trans + (behavior () + (robotboss-always-trans robotboss-red) + (if (and (< (-> self children-spawned) 0) (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump))) + (go robotboss-red)) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-dark-shoot-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 1)) + (robotboss-darkecobomb (new 'static 'vector :y 32768.0) (-> self dda green-bomb-time)) + (set! (-> self des-cam-entity) "camera-365") + (play-ambient (-> self ambient) "GOL-AM11" #t (the-as vector #f))) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-blue-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robotboss-green-dark-bomb (robotboss) - :enter (behavior () - (set! (-> self old-loc quad) (-> self desired-loc quad)) - (set-vector! (-> self desired-loc) 16384.0 -81920.0 716800.0 1.0) - (set! (-> self loc-t) 0.0) - (set! (-> self loc-t-start) (-> *display* game-frame-counter)) - (set! (-> self loc-t-duration) (seconds 3)) - (set! (-> self desired-pool-y) -24576.0) - (play-ambient (-> self ambient) "MAI-AM01" #t (the-as vector #f)) - ) - :trans (behavior () - (robotboss-always-trans robotboss-green-dark-bomb-wait) - (robotboss-position) - (if (>= (-> self loc-t) 1.0) - (go robotboss-green-dark-bomb-wait) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-dark-reveal-green-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) + :enter + (behavior () + (set! (-> self old-loc quad) (-> self desired-loc quad)) + (set-vector! (-> self desired-loc) 16384.0 -81920.0 716800.0 1.0) + (set! (-> self loc-t) 0.0) + (set! (-> self loc-t-start) (-> *display* game-frame-counter)) + (set! (-> self loc-t-duration) (seconds 3)) + (set! (-> self desired-pool-y) -24576.0) + (play-ambient (-> self ambient) "MAI-AM01" #t (the-as vector #f))) + :trans + (behavior () + (robotboss-always-trans robotboss-green-dark-bomb-wait) + (robotboss-position) + (if (>= (-> self loc-t) 1.0) (go robotboss-green-dark-bomb-wait))) + :code + (behavior () (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-blue-ja) - ) - (loop + (ja :group! robotboss-dark-reveal-green-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-blue-ja)) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defbehavior robotboss-greenshot robotboss ((arg0 vector) (arg1 float) (arg2 int) (arg3 symbol)) (+! (-> self children-spawned) 1) @@ -1849,480 +1220,305 @@ (set! (-> s2-0 quad) (-> self entity extra trans quad)) (+! (-> s2-0 y) -40960.0) (vector+! s2-0 s2-0 arg0) - (process-spawn greenshot gp-0 s2-0 arg1 arg2 :to self) - ) + (process-spawn greenshot gp-0 s2-0 arg1 arg2 :to self)) (when arg3 - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 640) - 300 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - (sound-play "green-fire") - ) - ) - (none) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 640) 300 #f #f #f gp-0 :to *entity-pool*) + (sound-play "green-fire"))) + (none)) (defstate robotboss-green-wait (robotboss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-green-roar-ja) - (robotboss-yellow-eco-off) - (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) 'show) - (let ((t9-2 send-event-function) - (v1-5 (-> self alts 11)) - ) - (t9-2 - (if v1-5 - (-> v1-5 extra process) - ) - a1-2 - ) - ) - ) - ) - (('hit-jak) - (let ((f0-2 (rand-float-gen))) - (cond - ((< 0.75 f0-2) - (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f)) - ) - ((< 0.5 f0-2) - (play-ambient (-> self ambient) "GOL-AM12" #t (the-as vector #f)) - ) - ((< 0.25 f0-2) - (play-ambient (-> self ambient) "GOL-AM15" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)) - ) - ) - ) - ) - (('blob-died) - (let ((f0-5 (rand-float-gen))) - (cond - ((< 0.75 f0-5) - (play-ambient (-> self ambient) "MAI-AM02" #t (the-as vector #f)) - ) - ((< 0.5 f0-5) - (play-ambient (-> self ambient) "GOL-AM03" #t (the-as vector #f)) - ) - ((< 0.25 f0-5) - (play-ambient (-> self ambient) "GOL-AM14" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "GOL-AM02" #t (the-as vector #f)) - ) - ) - ) - ) - (else - (robotboss-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (set! (-> self children-spawned) 0) - (robotboss-setup-for-hits 2 5) - (set! (-> self des-cam-entity) "camera-385") - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self shot-attractor)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (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) 'open) - (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 675))) - (let ((t9-1 send-event-function) - (v1-10 (-> self alts 2)) - ) - (t9-1 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 1) - (set! (-> a1-2 message) 'open) - (set! (-> a1-2 param 0) (the-as uint 0.2)) - (let ((t9-2 send-event-function) - (v1-17 (-> self alts 0)) - ) - (t9-2 - (if v1-17 - (-> v1-17 extra process) - ) - a1-2 - ) - ) - ) - (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 9 collide-with) (collide-kind)) - (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 9 prim-core collide-as) - (collide-kind) - ) - (set! (-> self des-cam-entity) #f) - (robotboss-yellow-eco-off) - (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) 'show) - (let ((t9-4 send-event-function) - (v1-27 (-> self alts 11)) - ) - (t9-4 - (if v1-27 - (-> v1-27 extra process) - ) - a1-3 - ) - ) - ) - ) - :trans (behavior () - (robotboss-always-trans robotboss-green-dark-bomb) - (cond - ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 0.4)) - (< (-> self children-spawned) 1) - ) - (robotboss-greenshot (new 'static 'vector) (the-as float 24576.0) 600 #t) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-green-spawn-ja) - ) - ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 1.2)) - (< (-> self children-spawned) 3) - ) - (robotboss-greenshot (new 'static 'vector :x 8192.0) (the-as float 16384.0) 600 #t) - (robotboss-greenshot (new 'static 'vector :z 8192.0) (the-as float 32768.0) 660 #f) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-green-spawn-ja) - ) - ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 2.6)) - (< (-> self children-spawned) 6) - ) - (robotboss-greenshot (new 'static 'vector :z 12288.0) (the-as float 20480.0) 600 #t) - (robotboss-greenshot (new 'static 'vector :x 8192.0) (the-as float 8192.0) 660 #f) - (robotboss-greenshot (new 'static 'vector) (the-as float 36864.0) 720 #f) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-green-spawn-ja) - ) - ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 4)) - (< (-> self children-spawned) 7) - ) - (robotboss-greenshot (new 'static 'vector) (the-as float 24576.0) 600 #t) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-green-spawn-ja) - ) - ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 5.5)) - (< (-> self children-spawned) 9) - ) - (robotboss-greenshot (new 'static 'vector) (the-as float 12288.0) 600 #t) - (robotboss-greenshot (new 'static 'vector :x 4096.0 :z 12288.0) (the-as float 32768.0) 600 #f) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-green-spawn-ja) - ) - ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 8)) - (< (-> self children-spawned) 10) - ) - (+! (-> self children-spawned) 1) - (process-spawn - green-eco-lurker-gen - (-> self entity) - (-> self entity extra trans) - (-> self dda num-blobs) - :to self - ) - (set! (-> self old-loc quad) (-> self desired-loc quad)) - (set-vector! (-> self desired-loc) 24576.0 0.0 655360.0 1.0) - (set! (-> self loc-t) 0.0) - (set! (-> self loc-t-start) (-> *display* game-frame-counter)) - (set! (-> self loc-t-duration) (seconds 3)) - (set! (-> self desired-pool-y) -26624.0) - ) - ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 8.2)) - (< (-> self children-spawned) 11) - ) - (+! (-> self children-spawned) 1) - (robotboss-yellow-eco-on) - ) - ) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (loop + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-green-roar-ja) + (robotboss-yellow-eco-off) + (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) 'show) + (let ((t9-2 send-event-function) + (v1-5 (-> self alts 11))) + (t9-2 (if v1-5 (-> v1-5 extra process)) a1-2)))) + (('hit-jak) + (let ((f0-2 (rand-float-gen))) + (cond + ((< 0.75 f0-2) (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f))) + ((< 0.5 f0-2) (play-ambient (-> self ambient) "GOL-AM12" #t (the-as vector #f))) + ((< 0.25 f0-2) (play-ambient (-> self ambient) "GOL-AM15" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)))))) + (('blob-died) + (let ((f0-5 (rand-float-gen))) + (cond + ((< 0.75 f0-5) (play-ambient (-> self ambient) "MAI-AM02" #t (the-as vector #f))) + ((< 0.5 f0-5) (play-ambient (-> self ambient) "GOL-AM03" #t (the-as vector #f))) + ((< 0.25 f0-5) (play-ambient (-> self ambient) "GOL-AM14" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "GOL-AM02" #t (the-as vector #f)))))) + (else (robotboss-handler proc argc message block)))) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (set! (-> self children-spawned) 0) + (robotboss-setup-for-hits 2 5) + (set! (-> self des-cam-entity) "camera-385")) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self shot-attractor)))) (if a0-1 (deactivate a0-1))) + (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) 'open) + (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 675))) + (let ((t9-1 send-event-function) + (v1-10 (-> self alts 2))) + (t9-1 (if v1-10 (-> v1-10 extra process)) a1-1))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'open) + (set! (-> a1-2 param 0) (the-as uint 0.2)) + (let ((t9-2 send-event-function) + (v1-17 (-> self alts 0))) + (t9-2 (if v1-17 (-> v1-17 extra process)) a1-2))) + (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 9 collide-with) (collide-kind)) + (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 9 prim-core collide-as) (collide-kind)) + (set! (-> self des-cam-entity) #f) + (robotboss-yellow-eco-off) + (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) 'show) + (let ((t9-4 send-event-function) + (v1-27 (-> self alts 11))) + (t9-4 (if v1-27 (-> v1-27 extra process)) a1-3)))) + :trans + (behavior () + (robotboss-always-trans robotboss-green-dark-bomb) (cond - ((ja-group? robotboss-green-roar-ja) - (go robotboss-green-dark-bomb) - ) - ((not (ja-group? robotboss-idle-hover-no-blue-ja)) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 0.4)) (< (-> self children-spawned) 1)) + (robotboss-greenshot (new 'static 'vector) (the-as float 24576.0) 600 #t) (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-blue-ja) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + (ja :group! robotboss-green-spawn-ja)) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 1.2)) (< (-> self children-spawned) 3)) + (robotboss-greenshot (new 'static 'vector :x 8192.0) (the-as float 16384.0) 600 #t) + (robotboss-greenshot (new 'static 'vector :z 8192.0) (the-as float 32768.0) 660 #f) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-green-spawn-ja)) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 2.6)) (< (-> self children-spawned) 6)) + (robotboss-greenshot (new 'static 'vector :z 12288.0) (the-as float 20480.0) 600 #t) + (robotboss-greenshot (new 'static 'vector :x 8192.0) (the-as float 8192.0) 660 #f) + (robotboss-greenshot (new 'static 'vector) (the-as float 36864.0) 720 #f) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-green-spawn-ja)) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 4)) (< (-> self children-spawned) 7)) + (robotboss-greenshot (new 'static 'vector) (the-as float 24576.0) 600 #t) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-green-spawn-ja)) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 5.5)) (< (-> self children-spawned) 9)) + (robotboss-greenshot (new 'static 'vector) (the-as float 12288.0) 600 #t) + (robotboss-greenshot (new 'static 'vector :x 4096.0 :z 12288.0) (the-as float 32768.0) 600 #f) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-green-spawn-ja)) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 8)) (< (-> self children-spawned) 10)) + (+! (-> self children-spawned) 1) + (process-spawn green-eco-lurker-gen (-> self entity) (-> self entity extra trans) (-> self dda num-blobs) :to self) + (set! (-> self old-loc quad) (-> self desired-loc quad)) + (set-vector! (-> self desired-loc) 24576.0 0.0 655360.0 1.0) + (set! (-> self loc-t) 0.0) + (set! (-> self loc-t-start) (-> *display* game-frame-counter)) + (set! (-> self loc-t-duration) (seconds 3)) + (set! (-> self desired-pool-y) -26624.0)) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 8.2)) (< (-> self children-spawned) 11)) + (+! (-> self children-spawned) 1) + (robotboss-yellow-eco-on))) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja-eval)) + (loop + (cond + ((ja-group? robotboss-green-roar-ja) (go robotboss-green-dark-bomb)) + ((not (ja-group? robotboss-idle-hover-no-blue-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-blue-ja))) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robotboss-green (robotboss) :event robotboss-handler - :enter (behavior () - (set! (-> self old-loc quad) (-> self desired-loc quad)) - (set-vector! (-> self desired-loc) 24576.0 0.0 245760.0 1.0) - (set! (-> self loc-t) 0.0) - (set! (-> self loc-t-start) (-> *display* game-frame-counter)) - (set! (-> self loc-t-duration) (seconds 3)) - (set! (-> self desired-pool-y) -26624.0) - (play-ambient (-> self ambient) "GOL-AM01" #t (the-as vector #f)) - (set-setting! 'sound-flava #f 40.0 (music-flava finalboss-middle)) - ) - :trans (behavior () - (robotboss-always-trans robotboss-green-wait) - (if (>= (-> self loc-t) 1.0) - (go robotboss-green-wait) - ) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-dark-return-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-blue-ja) - ) + :enter + (behavior () + (set! (-> self old-loc quad) (-> self desired-loc quad)) + (set-vector! (-> self desired-loc) 24576.0 0.0 245760.0 1.0) + (set! (-> self loc-t) 0.0) + (set! (-> self loc-t-start) (-> *display* game-frame-counter)) + (set! (-> self loc-t-duration) (seconds 3)) + (set! (-> self desired-pool-y) -26624.0) + (play-ambient (-> self ambient) "GOL-AM01" #t (the-as vector #f)) + (set-setting! 'sound-flava #f 40.0 (music-flava finalboss-middle))) + :trans + (behavior () + (robotboss-always-trans robotboss-green-wait) + (if (>= (-> self loc-t) 1.0) (go robotboss-green-wait)) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-dark-return-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-blue-ja)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robotboss-blue-dark-bomb-wait (robotboss) :event robotboss-bomb-handler - :enter (behavior () - (set! (-> self children-spawned) 0) - 0 - ) - :exit (behavior () - (set! (-> self ignore-camera) #f) - (set! (-> self des-cam-entity) #f) - ) - :trans (behavior () - (robotboss-always-trans robotboss-green) - (if (and (< (-> self children-spawned) 0) - (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) - ) - (go robotboss-green) - ) - (robotboss-position) - ) - :code (behavior () - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-dark-shoot-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 1)) - (robotboss-darkecobomb (new 'static 'vector :y 32768.0) (the-as float 3600.0)) - (set! (-> self des-cam-entity) "camera-365") - (play-ambient (-> self ambient) "MAI-AM04" #t (the-as vector #f)) - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (cond - ((and *target* (< (+ 81920.0 (-> self entity extra trans y)) (-> (target-pos 0) y))) - (when (not (ja-group? robotboss-idle-hover-lookup-no-blue-ja)) - (ja-channel-push! 1 (seconds 0.8)) - (ja :group! robotboss-idle-hover-lookup-no-blue-ja) - ) - ) - ((not (ja-group? robotboss-idle-hover-no-blue-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-blue-ja) - ) - ) + :enter + (behavior () + (set! (-> self children-spawned) 0) + 0) + :exit + (behavior () + (set! (-> self ignore-camera) #f) + (set! (-> self des-cam-entity) #f)) + :trans + (behavior () + (robotboss-always-trans robotboss-green) + (if (and (< (-> self children-spawned) 0) (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump))) + (go robotboss-green)) + (robotboss-position)) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-dark-shoot-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (when (and (>= (ja-frame-num 0) 15.0) (< (-> self children-spawned) 1)) + (robotboss-darkecobomb (new 'static 'vector :y 32768.0) (the-as float 3600.0)) + (set! (-> self des-cam-entity) "camera-365") + (play-ambient (-> self ambient) "MAI-AM04" #t (the-as vector #f))) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (loop + (cond + ((and *target* (< (+ 81920.0 (-> self entity extra trans y)) (-> (target-pos 0) y))) + (when (not (ja-group? robotboss-idle-hover-lookup-no-blue-ja)) + (ja-channel-push! 1 (seconds 0.8)) + (ja :group! robotboss-idle-hover-lookup-no-blue-ja))) + ((not (ja-group? robotboss-idle-hover-no-blue-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-blue-ja))) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robotboss-blue-dark-bomb (robotboss) - :enter (behavior () - (set! (-> self old-loc quad) (-> self desired-loc quad)) - (set-vector! (-> self desired-loc) 16384.0 -118784.0 614400.0 1.0) - (set! (-> self loc-t) 0.0) - (set! (-> self loc-t-start) (-> *display* game-frame-counter)) - (set! (-> self loc-t-duration) (seconds 3)) - (set! (-> self desired-pool-y) -28672.0) - ) - :trans (behavior () - (robotboss-always-trans robotboss-blue-dark-bomb-wait) - (robotboss-position) - (if (>= (-> self loc-t) 1.0) - (go robotboss-blue-dark-bomb-wait) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-dark-reveal-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) + :enter + (behavior () + (set! (-> self old-loc quad) (-> self desired-loc quad)) + (set-vector! (-> self desired-loc) 16384.0 -118784.0 614400.0 1.0) + (set! (-> self loc-t) 0.0) + (set! (-> self loc-t-start) (-> *display* game-frame-counter)) + (set! (-> self loc-t-duration) (seconds 3)) + (set! (-> self desired-pool-y) -28672.0)) + :trans + (behavior () + (robotboss-always-trans robotboss-blue-dark-bomb-wait) + (robotboss-position) + (if (>= (-> self loc-t) 1.0) (go robotboss-blue-dark-bomb-wait))) + :code + (behavior () (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-hover-no-blue-ja) - ) - (loop + (ja :group! robotboss-dark-reveal-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (when (not (ja-group? robotboss-idle-hover-no-blue-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-hover-no-blue-ja)) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defbehavior robotboss-blue-beam robotboss ((arg0 int) (arg1 symbol)) (let ((s4-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (let ((s3-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self entity extra trans quad)) (vector<-cspace! s4-0 (-> self node-list data arg0)) (vector-! s3-0 gp-0 s4-0) (let ((f30-0 (vector-y-angle s3-0)) - (f0-1 (- 16384.0 (vector-x-angle s3-0))) - ) + (f0-1 (- 16384.0 (vector-x-angle s3-0)))) (set! (-> *part-id-table* 2546 init-specs 14 initial-valuef) f30-0) (set! (-> *part-id-table* 2546 init-specs 13 initial-valuef) f0-1) (set! (-> *part-id-table* 2548 init-specs 14 initial-valuef) f30-0) (set! (-> *part-id-table* 2548 init-specs 13 initial-valuef) f0-1) (set! (-> *part-id-table* 2545 init-specs 14 initial-valuef) f30-0) - (set! (-> *part-id-table* 2545 init-specs 13 initial-valuef) f0-1) - ) - ) + (set! (-> *part-id-table* 2545 init-specs 13 initial-valuef) f0-1))) (cond - ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 0.4)) - (ja-group? robotboss-idle-blue-ja) - ) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 0.4)) (ja-group? robotboss-idle-blue-ja)) (spawn (-> self particle 0) s4-0) (when (and arg1 (nonzero? (-> self looping-sound 0))) (update! (-> self looping-sound 0)) (when (and *target* (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) (let ((t2-0 (new 'stack-no-clear 'collide-tri-result)) - (a2-0 (new 'stack-no-clear 'vector)) - ) + (a2-0 (new 'stack-no-clear 'vector))) (vector-! a2-0 gp-0 s4-0) - (if (>= (fill-and-probe-using-line-sphere - *collide-cache* - s4-0 - a2-0 - (the-as float 4096.0) - (collide-kind target) - self - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (send-event *target* 'attack #f (static-attack-info ((shove-up (meters 2.5)) (shove-back (meters 7.5))))) - ) - ) - ) - ) - ) - ((nonzero? (-> self looping-sound 0)) - (stop! (-> self looping-sound 0)) - ) - ) + (if (>= (fill-and-probe-using-line-sphere *collide-cache* + s4-0 + a2-0 + (the-as float 4096.0) + (collide-kind target) + self + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (send-event *target* 'attack #f (static-attack-info ((shove-up (meters 2.5)) (shove-back (meters 7.5)))))))))) + ((nonzero? (-> self looping-sound 0)) (stop! (-> self looping-sound 0)))) (cond ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) (seconds 1.4)) - (not (ja-group? robotboss-blue-roar-ja)) - ) + (not (ja-group? robotboss-blue-roar-ja))) (spawn (-> self particle 1) gp-0) (when (and arg1 (nonzero? (-> self looping-sound 1))) (update! (-> self looping-sound 1)) (if (and *target* (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (>= 8192.0 (vector-vector-distance gp-0 (target-pos 0))) - ) - (send-event *target* 'attack #f (static-attack-info ((shove-up (meters 2.5)) (shove-back (meters 7.5))))) - ) - ) - ) - ((nonzero? (-> self looping-sound 1)) - (stop! (-> self looping-sound 1)) - ) - ) - ) - (none) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (>= 8192.0 (vector-vector-distance gp-0 (target-pos 0)))) + (send-event *target* 'attack #f (static-attack-info ((shove-up (meters 2.5)) (shove-back (meters 7.5)))))))) + ((nonzero? (-> self looping-sound 1)) (stop! (-> self looping-sound 1))))) + (none)) (defbehavior robotboss-set-dda robotboss () 0 @@ -2330,69 +1526,61 @@ (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) (seekl! (-> gp-0 user-int8 0) 255 1) (let ((v1-5 (-> gp-0 user-int8 0))) - (set! (-> self dda) (cond - ((< 15 v1-5) - (new 'static 'robotboss-dda - :blue-bomb-time 4800.0 - :num-blobs 8 - :green-bomb-time 4200.0 - :red-shots-min 3 - :red-shot-time-min 5400.0 - :red-shot-time-rnd 600.0 - :red-bomb-time 3600.0 - :yellow-shot-time-min 1800.0 - :yellow-gun-hits 7 - :yellow-bomb-time 4800.0 - ) - ) - ((< 10 v1-5) - (new 'static 'robotboss-dda - :blue-bomb-time 4800.0 - :num-blobs 10 - :green-bomb-time 4200.0 - :red-shots-min 4 - :red-shot-time-min 4800.0 - :red-shot-time-rnd 600.0 - :red-bomb-time 3600.0 - :yellow-shot-time-min 1500.0 - :yellow-gun-hits 10 - :yellow-bomb-time 4800.0 - ) - ) - ((< 5 v1-5) - (new 'static 'robotboss-dda - :blue-bomb-time 4800.0 - :num-blobs 11 - :green-bomb-time 4200.0 - :red-shots-min 4 - :red-shot-time-min 4200.0 - :red-shot-time-rnd 600.0 - :red-bomb-time 3600.0 - :yellow-shot-time-min 1200.0 - :yellow-gun-hits 13 - :yellow-bomb-time 4800.0 - ) - ) - (else - (new 'static 'robotboss-dda - :blue-bomb-time 4800.0 - :num-blobs 12 - :green-bomb-time 4200.0 - :red-shots-min 5 - :red-shot-time-min 3600.0 - :red-shot-time-rnd 600.0 - :red-bomb-time 3600.0 - :yellow-shot-time-min 900.0 - :yellow-gun-hits 16 - :yellow-bomb-time 4800.0 - ) - ) - ) - ) - ) - ) - (none) - ) + (set! (-> self dda) + (cond + ((< 15 v1-5) + (new 'static + 'robotboss-dda + :blue-bomb-time 4800.0 + :num-blobs 8 + :green-bomb-time 4200.0 + :red-shots-min 3 + :red-shot-time-min 5400.0 + :red-shot-time-rnd 600.0 + :red-bomb-time 3600.0 + :yellow-shot-time-min 1800.0 + :yellow-gun-hits 7 + :yellow-bomb-time 4800.0)) + ((< 10 v1-5) + (new 'static + 'robotboss-dda + :blue-bomb-time 4800.0 + :num-blobs 10 + :green-bomb-time 4200.0 + :red-shots-min 4 + :red-shot-time-min 4800.0 + :red-shot-time-rnd 600.0 + :red-bomb-time 3600.0 + :yellow-shot-time-min 1500.0 + :yellow-gun-hits 10 + :yellow-bomb-time 4800.0)) + ((< 5 v1-5) + (new 'static + 'robotboss-dda + :blue-bomb-time 4800.0 + :num-blobs 11 + :green-bomb-time 4200.0 + :red-shots-min 4 + :red-shot-time-min 4200.0 + :red-shot-time-rnd 600.0 + :red-bomb-time 3600.0 + :yellow-shot-time-min 1200.0 + :yellow-gun-hits 13 + :yellow-bomb-time 4800.0)) + (else + (new 'static + 'robotboss-dda + :blue-bomb-time 4800.0 + :num-blobs 12 + :green-bomb-time 4200.0 + :red-shots-min 5 + :red-shot-time-min 3600.0 + :red-shot-time-rnd 600.0 + :red-bomb-time 3600.0 + :yellow-shot-time-min 900.0 + :yellow-gun-hits 16 + :yellow-bomb-time 4800.0)))))) + (none)) (defbehavior robotboss-blue-done robotboss () (robotboss-yellow-eco-off) @@ -2401,230 +1589,134 @@ (set! (-> a1-0 num-params) 0) (set! (-> a1-0 message) 'show) (let ((t9-1 send-event-function) - (v1-1 (-> self alts 11)) - ) - (t9-1 - (if v1-1 - (-> v1-1 extra process) - ) - a1-0 - ) - ) - ) - ) + (v1-1 (-> self alts 11))) + (t9-1 (if v1-1 (-> v1-1 extra process)) a1-0)))) (defstate robotboss-blue-wait (robotboss) :event robotboss-handler - :enter (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (robotboss-setup-for-hits 4 5) - (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) 'hide) - (let ((t9-1 send-event-function) - (v1-3 (-> self alts 11)) - ) - (t9-1 - (if v1-3 - (-> v1-3 extra process) - ) - a1-1 - ) - ) - ) - (process-entity-status! self (entity-perm-status bit-3) #t) - (set! (-> self use-interesting) #t) - (robotboss-yellow-eco-on) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self shot-attractor)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (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) 'open) - (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 674))) - (let ((t9-1 send-event-function) - (v1-10 (-> self alts 3)) - ) - (t9-1 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 1) - (set! (-> a1-2 message) 'open) - (set! (-> a1-2 param 0) (the-as uint 0.1)) - (let ((t9-2 send-event-function) - (v1-17 (-> self alts 0)) - ) - (t9-2 - (if v1-17 - (-> v1-17 extra process) - ) - a1-2 - ) - ) - ) - (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 collide-with) (collide-kind)) - (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core collide-as) - (collide-kind) - ) - (set! (-> self use-interesting) #f) - (send-event *camera* 'point-of-interest #f) - (robotboss-blue-done) - (if (nonzero? (-> self looping-sound 0)) - (stop! (-> self looping-sound 0)) - ) - (if (nonzero? (-> self looping-sound 1)) - (stop! (-> self looping-sound 1)) - ) - (robotboss-set-dda) - (robotboss-cut-cam-exit) - ) - :trans (behavior () - (robotboss-always-trans robotboss-blue-dark-bomb) - (robotboss-shooting-trans 9) - (cond - ((zero? (-> self hits-to-go)) - (play-ambient (-> self ambient) "GOL-AM06" #t (the-as vector #f)) - (robotboss-blue-done) - (set! (-> self took-hit) #f) - (+! (-> self hits-to-go) -1) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-blue-last-hit-ja) - (sound-play "explod-eye") - (set! (-> self blue-smoke) #t) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-1 (joint-node robotboss-basic-lod0-jg blue_eco_piece)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 644) - 300 - #f - #f - #f - gp-1 - :to *entity-pool* - ) - ) - (let ((gp-2 (manipy-spawn (-> self root trans) (-> self entity) *robotboss-blueeco-sg* #f :to self))) - (send-event (ppointer->process (-> self parent)) 'flash 255.0) - (send-event (ppointer->process gp-2) 'anim-mode 'play1) - (send-event (ppointer->process gp-2) 'rot-quat (-> self root quat)) - ;; og:preserve-this the zero passed here was missing in the original game, but is a bug that causes undefined behavior - (send-event (ppointer->process gp-2) 'art-joint-anim "robotboss-blueeco-blue-last-hit" 0) - ) - ) - ((-> self took-hit) - (if (not (play-ambient (-> self ambient) "GOL-AM17" #t (the-as vector #f))) - (play-ambient (-> self ambient) "MAI-AM06" #t (the-as vector #f)) - ) - (set! (-> self took-hit) #f) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-blue-hit-ja) - ) - ) - (when (not (or (ja-group? robotboss-blue-roar-ja) (ja-group? robotboss-blue-last-hit-ja))) - ) - (robotboss-blue-beam 8 #t) - (robotboss-blue-beam 9 #f) - (when (ambient-control-method-10 - (-> self ambient) - (new 'stack-no-clear 'vector) - (seconds 10) - (the-as float 327680.0) - self - ) - (let ((f0-2 (rand-float-gen))) - (cond - ((< 0.8 f0-2) - (play-ambient (-> self ambient) "GOL-AM02" #t (the-as vector #f)) - ) - ((< 0.6 f0-2) - (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f)) - ) - ((< 0.4 f0-2) - (play-ambient (-> self ambient) "MAI-AM08" #t (the-as vector #f)) - ) - ((< 0.2 f0-2) - (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "GOL-AM07" #t (the-as vector #f)) - ) - ) - ) - ) - (robotboss-position) - (robotboss-cut-cam (the-as float 5.0) (the-as float 50.0) (the-as int robotboss-blue-roar-ja)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.4)) - (ja-no-eval :group! robotboss-idle-blue-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (when (not (ja-group? robotboss-idle-blue-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robotboss-idle-blue-ja) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (robotboss-setup-for-hits 4 5) + (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) 'hide) + (let ((t9-1 send-event-function) + (v1-3 (-> self alts 11))) + (t9-1 (if v1-3 (-> v1-3 extra process)) a1-1))) + (process-entity-status! self (entity-perm-status bit-3) #t) + (set! (-> self use-interesting) #t) + (robotboss-yellow-eco-on)) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self shot-attractor)))) (if a0-1 (deactivate a0-1))) + (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) 'open) + (set! (-> a1-1 param 0) (the-as uint (-> *part-group-id-table* 674))) + (let ((t9-1 send-event-function) + (v1-10 (-> self alts 3))) + (t9-1 (if v1-10 (-> v1-10 extra process)) a1-1))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'open) + (set! (-> a1-2 param 0) (the-as uint 0.1)) + (let ((t9-2 send-event-function) + (v1-17 (-> self alts 0))) + (t9-2 (if v1-17 (-> v1-17 extra process)) a1-2))) + (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 collide-with) (collide-kind)) + (set! (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core collide-as) (collide-kind)) + (set! (-> self use-interesting) #f) + (send-event *camera* 'point-of-interest #f) + (robotboss-blue-done) + (if (nonzero? (-> self looping-sound 0)) (stop! (-> self looping-sound 0))) + (if (nonzero? (-> self looping-sound 1)) (stop! (-> self looping-sound 1))) + (robotboss-set-dda) + (robotboss-cut-cam-exit)) + :trans + (behavior () + (robotboss-always-trans robotboss-blue-dark-bomb) + (robotboss-shooting-trans 9) + (cond + ((zero? (-> self hits-to-go)) + (play-ambient (-> self ambient) "GOL-AM06" #t (the-as vector #f)) + (robotboss-blue-done) + (set! (-> self took-hit) #f) + (+! (-> self hits-to-go) -1) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-blue-last-hit-ja) + (sound-play "explod-eye") + (set! (-> self blue-smoke) #t) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-1 (joint-node robotboss-basic-lod0-jg blue_eco_piece)) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 644) 300 #f #f #f gp-1 :to *entity-pool*)) + (let ((gp-2 (manipy-spawn (-> self root trans) (-> self entity) *robotboss-blueeco-sg* #f :to self))) + (send-event (ppointer->process (-> self parent)) 'flash 255.0) + (send-event (ppointer->process gp-2) 'anim-mode 'play1) + (send-event (ppointer->process gp-2) 'rot-quat (-> self root quat)) + ;; og:preserve-this the zero passed here was missing in the original game, but is a bug that causes undefined behavior + (send-event (ppointer->process gp-2) 'art-joint-anim "robotboss-blueeco-blue-last-hit" 0))) + ((-> self took-hit) + (if (not (play-ambient (-> self ambient) "GOL-AM17" #t (the-as vector #f))) + (play-ambient (-> self ambient) "MAI-AM06" #t (the-as vector #f))) + (set! (-> self took-hit) #f) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-blue-hit-ja))) + (when (not (or (ja-group? robotboss-blue-roar-ja) (ja-group? robotboss-blue-last-hit-ja)))) + (robotboss-blue-beam 8 #t) + (robotboss-blue-beam 9 #f) + (when (ambient-control-method-10 (-> self ambient) (new 'stack-no-clear 'vector) (seconds 10) (the-as float 327680.0) self) + (let ((f0-2 (rand-float-gen))) + (cond + ((< 0.8 f0-2) (play-ambient (-> self ambient) "GOL-AM02" #t (the-as vector #f))) + ((< 0.6 f0-2) (play-ambient (-> self ambient) "GOL-AM10" #t (the-as vector #f))) + ((< 0.4 f0-2) (play-ambient (-> self ambient) "MAI-AM08" #t (the-as vector #f))) + ((< 0.2 f0-2) (play-ambient (-> self ambient) "MAI-AM03" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "GOL-AM07" #t (the-as vector #f)))))) + (robotboss-position) + (robotboss-cut-cam (the-as float 5.0) (the-as float 50.0) (the-as int robotboss-blue-roar-ja))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.4)) + (ja-no-eval :group! robotboss-idle-blue-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (when (<= (-> self hits-to-go) 0) - (let ((a1-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-6 from) self) - (set! (-> a1-6 num-params) 1) - (set! (-> a1-6 message) 'target) - (set! (-> a1-6 param 0) (the-as uint 0.0)) - (let ((t9-8 send-event-function) - (v1-69 (-> self alts 12)) - ) - (t9-8 - (if v1-69 - (-> v1-69 extra process) - ) - a1-6 - ) - ) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! robotboss-blue-roar-ja) + (ja :num! (seek!))) + (loop + (when (not (ja-group? robotboss-idle-blue-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robotboss-idle-blue-ja)) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (go robotboss-blue-dark-bomb) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (when (<= (-> self hits-to-go) 0) + (let ((a1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-6 from) self) + (set! (-> a1-6 num-params) 1) + (set! (-> a1-6 message) 'target) + (set! (-> a1-6 param 0) (the-as uint 0.0)) + (let ((t9-8 send-event-function) + (v1-69 (-> self alts 12))) + (t9-8 (if v1-69 (-> v1-69 extra process)) a1-6))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! robotboss-blue-roar-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go robotboss-blue-dark-bomb)))) + :post transform-post) (defmethod init-from-entity! ((this robotboss) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (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 19) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -2639,8 +1731,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 7) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -2648,8 +1739,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 57344.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -2657,8 +1747,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 -57344.0 61440.0 73728.0) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 8)))) (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -2666,8 +1755,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 16) (set-vector! (-> s2-3 local-sphere) 0.0 -20480.0 69632.0 237568.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -2675,8 +1763,7 @@ (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 14) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 81920.0) - (append-prim s3-0 s2-4) - ) + (append-prim s3-0 s2-4)) (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 5) (the-as uint 1)))) (set! (-> s2-5 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-5 collide-with) (collide-kind target)) @@ -2684,8 +1771,7 @@ (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 39) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 69632.0) - (append-prim s3-0 s2-5) - ) + (append-prim s3-0 s2-5)) (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 6) (the-as uint 0)))) (set! (-> s2-6 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-6 collide-with) (collide-kind target)) @@ -2693,8 +1779,7 @@ (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 31) (set-vector! (-> s2-6 local-sphere) 0.0 -57344.0 0.0 90112.0) - (append-prim s3-0 s2-6) - ) + (append-prim s3-0 s2-6)) (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 7) (the-as uint 0)))) (set! (-> s2-7 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-7 collide-with) (collide-kind target)) @@ -2702,8 +1787,7 @@ (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 30) (set-vector! (-> s2-7 local-sphere) 0.0 24576.0 0.0 81920.0) - (append-prim s3-0 s2-7) - ) + (append-prim s3-0 s2-7)) (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 8) (the-as uint 0)))) (set! (-> s2-8 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-8 collide-with) (collide-kind target)) @@ -2711,8 +1795,7 @@ (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 57) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 81920.0) - (append-prim s3-0 s2-8) - ) + (append-prim s3-0 s2-8)) (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 9) (the-as uint 2)))) (set! (-> s2-9 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-9 collide-with) (collide-kind target)) @@ -2720,8 +1803,7 @@ (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 68) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 49152.0) - (append-prim s3-0 s2-9) - ) + (append-prim s3-0 s2-9)) (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 10) (the-as uint 0)))) (set! (-> s2-10 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-10 collide-with) (collide-kind target)) @@ -2729,8 +1811,7 @@ (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 4) (set-vector! (-> s2-10 local-sphere) 0.0 24576.0 0.0 102400.0) - (append-prim s3-0 s2-10) - ) + (append-prim s3-0 s2-10)) (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 11) (the-as uint 0)))) (set! (-> s2-11 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-11 collide-with) (collide-kind target)) @@ -2738,8 +1819,7 @@ (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 77) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 73728.0) - (append-prim s3-0 s2-11) - ) + (append-prim s3-0 s2-11)) (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 12) (the-as uint 0)))) (set! (-> s2-12 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-12 collide-with) (collide-kind target)) @@ -2747,8 +1827,7 @@ (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 75) (set-vector! (-> s2-12 local-sphere) 0.0 24576.0 0.0 81920.0) - (append-prim s3-0 s2-12) - ) + (append-prim s3-0 s2-12)) (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 13) (the-as uint 0)))) (set! (-> s2-13 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-13 collide-with) (collide-kind target)) @@ -2756,8 +1835,7 @@ (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 74) (set-vector! (-> s2-13 local-sphere) 0.0 40960.0 0.0 73728.0) - (append-prim s3-0 s2-13) - ) + (append-prim s3-0 s2-13)) (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 14) (the-as uint 0)))) (set! (-> s2-14 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-14 collide-with) (collide-kind target)) @@ -2765,8 +1843,7 @@ (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 73) (set-vector! (-> s2-14 local-sphere) 0.0 32768.0 0.0 61440.0) - (append-prim s3-0 s2-14) - ) + (append-prim s3-0 s2-14)) (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 15) (the-as uint 0)))) (set! (-> s2-15 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-15 collide-with) (collide-kind target)) @@ -2774,8 +1851,7 @@ (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 84) (set-vector! (-> s2-15 local-sphere) 0.0 40960.0 -8192.0 98304.0) - (append-prim s3-0 s2-15) - ) + (append-prim s3-0 s2-15)) (let ((s2-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 16) (the-as uint 0)))) (set! (-> s2-16 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-16 collide-with) (collide-kind target)) @@ -2783,8 +1859,7 @@ (set! (-> s2-16 prim-core offense) (collide-offense indestructible)) (set! (-> s2-16 transform-index) 83) (set-vector! (-> s2-16 local-sphere) 0.0 65536.0 0.0 73728.0) - (append-prim s3-0 s2-16) - ) + (append-prim s3-0 s2-16)) (let ((s2-17 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 17) (the-as uint 0)))) (set! (-> s2-17 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-17 collide-with) (collide-kind target)) @@ -2792,8 +1867,7 @@ (set! (-> s2-17 prim-core offense) (collide-offense indestructible)) (set! (-> s2-17 transform-index) 82) (set-vector! (-> s2-17 local-sphere) 0.0 32768.0 0.0 61440.0) - (append-prim s3-0 s2-17) - ) + (append-prim s3-0 s2-17)) (let ((s2-18 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 18) (the-as uint 0)))) (set! (-> s2-18 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-18 collide-with) (collide-kind target)) @@ -2801,13 +1875,10 @@ (set! (-> s2-18 prim-core offense) (collide-offense indestructible)) (set! (-> s2-18 transform-index) 3) (set-vector! (-> s2-18 local-sphere) 0.0 0.0 0.0 61440.0) - (append-prim s3-0 s2-18) - ) - ) + (append-prim s3-0 s2-18))) (set! (-> s4-0 nav-radius) 4096.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *robotboss-sg* '()) (aybabtu 2) @@ -2830,13 +1901,10 @@ (set! (-> this use-interesting) #f) (set! (-> this ignore-camera) #f) (dotimes (v1-211 13) - (set! (-> this alts v1-211) #f) - ) + (set! (-> this alts v1-211) #f)) (let ((s5-1 (entity-actor-count (-> this entity) 'alt-actor))) (dotimes (s4-1 (min 13 s5-1)) - (set! (-> this alts s4-1) (entity-actor-lookup (-> this entity) 'alt-actor s4-1)) - ) - ) + (set! (-> this alts s4-1) (entity-actor-lookup (-> this entity) 'alt-actor s4-1)))) (set! (-> this particle 0) (create-launch-control (-> *part-group-id-table* 636) this)) (set! (-> this particle 1) (create-launch-control (-> *part-group-id-table* 637) this)) (set! (-> this particle 2) (create-launch-control (-> *part-group-id-table* 645) this)) @@ -2845,17 +1913,13 @@ (set! (-> this particle 5) (create-launch-control (-> *part-group-id-table* 646) this)) (set! (-> this particle 6) (create-launch-control (-> *part-group-id-table* 651) this)) (set! (-> this looping-sound 0) - (new 'process 'ambient-sound (static-sound-spec "robo-blue-lp" :fo-max 80) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "robo-blue-lp" :fo-max 80) (-> this root trans))) (set! (-> this looping-sound 1) - (new 'process 'ambient-sound (static-sound-spec "eco-torch" :fo-max 80) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "eco-torch" :fo-max 80) (-> this root trans))) (set! (-> this looping-sound 2) - (new 'process 'ambient-sound (static-sound-spec "red-buzz" :fo-max 80) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "red-buzz" :fo-max 80) (-> this root trans))) (set! (-> this looping-sound 3) - (new 'process 'ambient-sound (static-sound-spec "bfg-buzz" :fo-max 80) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "bfg-buzz" :fo-max 80) (-> this root trans))) (set! (-> this blue-smoke) #f) (set! (-> this red-smoke) #f) (set! (-> this yellow-smoke) #f) @@ -2868,20 +1932,19 @@ (set! (-> this yellow-gun max-dist) 819200.0) (set! (-> this yellow-gun ignore-angle) 16384.0) (set! (-> this palette-val) 0.0) - (set! (-> this dda) (new 'static 'robotboss-dda - :blue-bomb-time 4200.0 - :num-blobs 12 - :green-bomb-time 4200.0 - :red-shots-min 5 - :red-shot-time-min 3600.0 - :red-shot-time-rnd 600.0 - :red-bomb-time 3600.0 - :yellow-shot-time-min 900.0 - :yellow-shot-time-rnd 600.0 - :yellow-gun-hits 5 - :yellow-bomb-time 3600.0 - ) - ) + (set! (-> this dda) + (new 'static + 'robotboss-dda + :blue-bomb-time 4200.0 + :num-blobs 12 + :green-bomb-time 4200.0 + :red-shots-min 5 + :red-shot-time-min 3600.0 + :red-shot-time-rnd 600.0 + :red-bomb-time 3600.0 + :yellow-shot-time-min 900.0 + :yellow-shot-time-rnd 600.0 + :yellow-gun-hits 5 + :yellow-bomb-time 3600.0)) (go robotboss-blue-wait) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/finalboss/sage-finalboss-part.gc b/goal_src/jak1/levels/finalboss/sage-finalboss-part.gc index 1ab6b3b3c3..540b05f37a 100644 --- a/goal_src/jak1/levels/finalboss/sage-finalboss-part.gc +++ b/goal_src/jak1/levels/finalboss/sage-finalboss-part.gc @@ -1,351 +1,324 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") -;; name: sage-finalboss-part.gc -;; name in dgo: sage-finalboss-part -;; dgos: FIN, L1 - ;; DECOMP BEGINS (defpartgroup group-2d-credits-mist :id 682 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2825 :period (seconds 1) :length (seconds 0.017) :binding 2823) - (sp-item 2823 :flags (start-dead launch-asap) :binding 2824) - (sp-item 2823 :flags (start-dead launch-asap) :binding 2824) - (sp-item 2824 :flags (start-dead)) - (sp-item 2824 :flags (start-dead)) - (sp-item 2824 :flags (start-dead)) - (sp-item 2826) - (sp-item 2827) - ) - ) + :parts + ((sp-item 2825 :period (seconds 1) :length (seconds 0.017) :binding 2823) + (sp-item 2823 :flags (start-dead launch-asap) :binding 2824) + (sp-item 2823 :flags (start-dead launch-asap) :binding 2824) + (sp-item 2824 :flags (start-dead)) + (sp-item 2824 :flags (start-dead)) + (sp-item 2824 :flags (start-dead)) + (sp-item 2826) + (sp-item 2827))) (defpart 2825 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -2.5) (meters 5)) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:conerot-z (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -2.5) (meters 5)) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:conerot-z (degrees 0) (degrees 360)))) (defpart 2823 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.5) (meters 0.2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) - (:scalevel-x (meters -0.0012121212)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.5) (meters 0.2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) + (:scalevel-x (meters -0.0012121212)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 2824 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 32.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.0010952381)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0) (meters -0.000033333334)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 32.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.0010952381)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0) (meters -0.000033333334)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpart 2827 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:z (meters -3.90625)) - (:scale-x (meters 15)) - (:scale-y (meters 12)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit13 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:z (meters -3.90625)) + (:scale-x (meters 15)) + (:scale-y (meters 12)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit13 bit14)))) (defpart 2826 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -4) (meters 8)) - (:y (meters -3) (meters 6)) - (:z (meters 0) (meters 3.4179688)) - (:scale-x (meters 6) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 6) (meters 8)) - (:r 16.0 80.0) - (:g 0.0 16.0) - (:b 16.0 150.0) - (:a 0.0) - (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) - (:rotvel-z (degrees -0.075) (degrees 0.15)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.497)) - (:next-launcher 2828) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -4) (meters 8)) + (:y (meters -3) (meters 6)) + (:z (meters 0) (meters 3.4179688)) + (:scale-x (meters 6) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 6) (meters 8)) + (:r 16.0 80.0) + (:g 0.0 16.0) + (:b 16.0 150.0) + (:a 0.0) + (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.075) (degrees 0.15)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.497)) + (:next-launcher 2828))) (defpart 2828 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2829)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2829))) (defpart 2829 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-target-white-eco-ground :id 699 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2921) - (sp-item 2922 :flags (is-3d)) - (sp-item 2923 :flags (is-3d)) - (sp-item 2924 :flags (is-3d)) - (sp-item 2925) - (sp-item 2926) - ) - ) + :parts + ((sp-item 2921) + (sp-item 2922 :flags (is-3d)) + (sp-item 2923 :flags (is-3d)) + (sp-item 2924 :flags (is-3d)) + (sp-item 2925) + (sp-item 2926))) (defpart 2921 - :init-specs ((:num 1.5) - (:x (meters 2.5)) - (:y (meters -0.5)) - (:rot-x 8) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.9)) - (:flags (aux-list)) - (:next-time (seconds 0.6)) - (:next-launcher 2927) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 1.5) + (:x (meters 2.5)) + (:y (meters -0.5)) + (:rot-x 8) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.9)) + (:flags (aux-list)) + (:next-time (seconds 0.6)) + (:next-launcher 2927) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2927 - :init-specs ((:fade-b -4.551111)) - ) + :init-specs ((:fade-b -4.551111))) (defpart 2924 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 2)) - (:y (meters 0.1)) - (:scale-x (meters 1)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 8.0 8.0) - (:scalevel-x (meters 0.14648438)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.27)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 2)) + (:y (meters 0.1)) + (:scale-x (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 8.0 8.0) + (:scalevel-x (meters 0.14648438)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.27)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2922 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 2)) - (:y (meters 0) (meters 16)) - (:scale-x (meters 0.2) (meters 0.2)) - (:rot-x (degrees 90)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 8) (meters 8)) - (:r 0.0 1 128.0) - (:g 64.0 196.0) - (:b 128.0 128.0) - (:a 128.0) - (:scalevel-x (meters -0.0025)) - (:scalevel-y (meters 0.24414062) (meters 0.48828125)) - (:timer (seconds 0.27)) - (:flags (bit3 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 2)) + (:y (meters 0) (meters 16)) + (:scale-x (meters 0.2) (meters 0.2)) + (:rot-x (degrees 90)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 8) (meters 8)) + (:r 0.0 1 128.0) + (:g 64.0 196.0) + (:b 128.0 128.0) + (:a 128.0) + (:scalevel-x (meters -0.0025)) + (:scalevel-y (meters 0.24414062) (meters 0.48828125)) + (:timer (seconds 0.27)) + (:flags (bit3 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2923 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 2.0) - (:x (meters 1.8) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-x (degrees 90)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1) (meters 3)) - (:r 0.0 1 128.0) - (:g 64.0 196.0) - (:b 128.0 128.0) - (:a 128.0) - (:scalevel-x (meters -0.0025)) - (:scalevel-y (meters 0.048828125) (meters 0.09765625)) - (:timer (seconds 0.27)) - (:flags (bit3 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 2.0) + (:x (meters 1.8) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-x (degrees 90)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1) (meters 3)) + (:r 0.0 1 128.0) + (:g 64.0 196.0) + (:b 128.0 128.0) + (:a 128.0) + (:scalevel-x (meters -0.0025)) + (:scalevel-y (meters 0.048828125) (meters 0.09765625)) + (:timer (seconds 0.27)) + (:flags (bit3 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2925 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 3.0) - (:x (meters 0) (meters 5.5)) - (:y (meters -0.5)) - (:scale-x (meters 0.15) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-x (meters -0.011666667) (meters -0.0033333334)) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) - (:fade-a -0.42666668) - (:accel-y (meters 0.0016666667)) - (:friction 0.996) - (:timer (seconds 0.6) (seconds 0.397)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 3.0) + (:x (meters 0) (meters 5.5)) + (:y (meters -0.5)) + (:scale-x (meters 0.15) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-x (meters -0.011666667) (meters -0.0033333334)) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:fade-a -0.42666668) + (:accel-y (meters 0.0016666667)) + (:friction 0.996) + (:timer (seconds 0.6) (seconds 0.397)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2926 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 3.0) - (:x (meters 0) (meters 5)) - (:y (meters -0.5)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 32.0 32.0) - (:b 10.0 5.0) - (:a 0.0) - (:vel-x (meters -0.011666667) (meters -0.0033333334)) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) - (:fade-a 0.6) - (:accel-y (meters 0.0016666667)) - (:friction 0.996) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.15)) - (:next-launcher 2928) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 3.0) + (:x (meters 0) (meters 5)) + (:y (meters -0.5)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 32.0 32.0) + (:b 10.0 5.0) + (:a 0.0) + (:vel-x (meters -0.011666667) (meters -0.0033333334)) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:fade-a 0.6) + (:accel-y (meters 0.0016666667)) + (:friction 0.996) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.15)) + (:next-launcher 2928) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2928 - :init-specs ((:fade-a -0.18)) - ) + :init-specs ((:fade-a -0.18))) (defpartgroup group-target-white-eco-joints :id 700 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2929) (sp-item 2930)) - ) + :parts ((sp-item 2929) (sp-item 2930))) (defpart 2930 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.2) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 2) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 0.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0) (meters 0.00033333333)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.4) (seconds 0.097)) - (:next-launcher 2931) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.2) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 2) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 0.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0) (meters 0.00033333333)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.4) (seconds 0.097)) + (:next-launcher 2931))) (defpart 2931 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpart 2929 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 8.0) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.21333334)) - (:scalevel-x (meters -0.00083333335)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.0016666667) (meters 0.00066666666)) - (:friction 0.5) - (:timer (seconds 0.1) (seconds 0.497)) - (:flags (bit0 bit2 bit3 bit14)) - (:userdata 1638400.0) - (:func 'check-drop-level-eichar-lighteco-pops) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 2932) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees -1440) (degrees 2880)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 8.0) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.21333334)) + (:scalevel-x (meters -0.00083333335)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.0016666667) (meters 0.00066666666)) + (:friction 0.5) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (bit0 bit2 bit3 bit14)) + (:userdata 1638400.0) + (:func 'check-drop-level-eichar-lighteco-pops) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 2932) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees -1440) (degrees 2880)))) (defpart 2932 - :init-specs ((:userdata 2048000.0)) - ) + :init-specs ((:userdata 2048000.0))) (defun check-drop-level-eichar-lighteco-pops ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -353,674 +326,633 @@ (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg2 y) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 2933) gp-0 :rate 1.0) - (launch-particles (-> *part-id-table* 2934) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 2934) gp-0 :rate 1.0))) + (none)) (defpart 2934 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 16.0) - (:fade-a -1.92) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 16.0) + (:fade-a -1.92) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpart 2933 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 4.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:accel-y (meters 0.0016666667) (meters 0.00066666666)) - (:friction 0.85) - (:timer (seconds 0.05) (seconds 0.397)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 4.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:accel-y (meters 0.0016666667) (meters 0.00066666666)) + (:friction 0.85) + (:timer (seconds 0.05) (seconds 0.397)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-target-white-eco-hand-glow :id 701 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2892)) - ) + :parts ((sp-item 2892))) (defpart 2892 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0 3.0) - (:x (meters -0.2) (meters -0.1)) - (:z (meters 0.2) (meters 0.1)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 32.0) - (:vel-y (meters 0)) - (:scalevel-x (meters -0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0.0016666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0 3.0) + (:x (meters -0.2) (meters -0.1)) + (:z (meters 0.2) (meters 0.1)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 32.0) + (:vel-y (meters 0)) + (:scalevel-x (meters -0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0.0016666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defpartgroup group-target-white-eco-hand-shot :id 702 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2893) (sp-item 2935)) - ) + :parts ((sp-item 2893) (sp-item 2935))) (defpart 2935 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:x (meters -0.2) (meters -0.1)) - (:z (meters 0.2) (meters 0.1)) - (:scale-x (meters 0.05)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 6) (meters 9)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0 128.0) - (:scalevel-y (meters 0.42666668)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:x (meters -0.2) (meters -0.1)) + (:z (meters 0.2) (meters 0.1)) + (:scale-x (meters 0.05)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 6) (meters 9)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0 128.0) + (:scalevel-y (meters 0.42666668)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2893 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -0.2) (meters -0.1)) - (:z (meters 0.2) (meters 0.1)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0) - (:vel-x (meters -0.033333335)) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.21333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -0.2) (meters -0.1)) + (:z (meters 0.2) (meters 0.1)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0) + (:vel-x (meters -0.033333335)) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.21333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defpartgroup group-robotboss-joints :id 703 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2936 :period (seconds 0.12) :length (seconds 0.017)) - (sp-item 2936 :period (seconds 0.467) :length (seconds 0.017)) - (sp-item 2936 :period (seconds 0.205) :length (seconds 0.017)) - (sp-item 2894 :period (seconds 0.05) :length (seconds 0.017)) - (sp-item 2937) - ) - ) + :parts + ((sp-item 2936 :period (seconds 0.12) :length (seconds 0.017)) + (sp-item 2936 :period (seconds 0.467) :length (seconds 0.017)) + (sp-item 2936 :period (seconds 0.205) :length (seconds 0.017)) + (sp-item 2894 :period (seconds 0.05) :length (seconds 0.017)) + (sp-item 2937))) (defpart 2937 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 4) (meters 16)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 192.0 32.0) - (:b 255.0) - (:a 32.0 64.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 4) (meters 16)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 192.0 32.0) + (:b 255.0) + (:a 32.0 64.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2894 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 4) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0 64.0) - (:b 255.0) - (:a 32.0 32.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.9) - (:timer (seconds 2.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067) (seconds 0.297)) - (:next-launcher 2596) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0 64.0) + (:b 255.0) + (:a 32.0 32.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.9) + (:timer (seconds 2.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067) (seconds 0.297)) + (:next-launcher 2596))) (defpart 2936 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.0 1 8.0) - (:y (meters 0)) - (:scale-x (meters 0.6) (meters 1)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 192.0 32.0) - (:b 192.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.6) - (:fade-g -1.6) - (:fade-b 0.0) - (:accel-y (meters -0.0018333334) (meters -0.0018333334)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.3) (seconds 0.097)) - (:next-launcher 2595) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.0 1 8.0) + (:y (meters 0)) + (:scale-x (meters 0.6) (meters 1)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 192.0 32.0) + (:b 192.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.6) + (:fade-g -1.6) + (:fade-b 0.0) + (:accel-y (meters -0.0018333334) (meters -0.0018333334)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.3) (seconds 0.097)) + (:next-launcher 2595) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpartgroup group-robotboss-explode :id 696 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2939 :period (seconds 4) :length (seconds 0.067) :binding 2938) - (sp-item 2940 :period (seconds 4) :length (seconds 0.017)) - (sp-item 2941 :period (seconds 4) :length (seconds 0.135)) - (sp-item 2942 :period (seconds 4) :length (seconds 0.067)) - (sp-item 2943 :period (seconds 4) :length (seconds 0.067)) - (sp-item 2944 :period (seconds 4) :length (seconds 0.067)) - (sp-item 2945 :flags (is-3d) :period (seconds 4) :length (seconds 0.017)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - (sp-item 2938 :flags (start-dead)) - ) - ) + :parts + ((sp-item 2939 :period (seconds 4) :length (seconds 0.067) :binding 2938) + (sp-item 2940 :period (seconds 4) :length (seconds 0.017)) + (sp-item 2941 :period (seconds 4) :length (seconds 0.135)) + (sp-item 2942 :period (seconds 4) :length (seconds 0.067)) + (sp-item 2943 :period (seconds 4) :length (seconds 0.067)) + (sp-item 2944 :period (seconds 4) :length (seconds 0.067)) + (sp-item 2945 :flags (is-3d) :period (seconds 4) :length (seconds 0.017)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)) + (sp-item 2938 :flags (start-dead)))) (defpart 2939 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:y (meters 0)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0 128.0) - (:vel-y (meters 0.33333334) (meters 0.85333335)) - (:scalevel-x (meters 0)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0038333333) (meters -0.017166667)) - (:friction 0.96 0.06) - (:timer (seconds 3.5)) - (:flags (bit2 bit14)) - (:conerot-x (degrees -120) (degrees 240)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:y (meters 0)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0 128.0) + (:vel-y (meters 0.33333334) (meters 0.85333335)) + (:scalevel-x (meters 0)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0038333333) (meters -0.017166667)) + (:friction 0.96 0.06) + (:timer (seconds 3.5)) + (:flags (bit2 bit14)) + (:conerot-x (degrees -120) (degrees 240)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 40)))) (defpart 2938 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 4) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 8.0 16.0) - (:scalevel-x (meters 0.02) (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.053333335) - (:timer (seconds 3.5)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2946) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 4) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 8.0 16.0) + (:scalevel-x (meters 0.02) (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.053333335) + (:timer (seconds 3.5)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2946))) (defpart 2946 - :init-specs ((:fade-g -0.14222223) (:fade-b -0.14222223)) - ) + :init-specs ((:fade-g -0.14222223) (:fade-b -0.14222223))) (defpart 2945 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 6.0) - (:y (meters 10)) - (:scale-x (meters 8) (meters 60)) - (:rot-x (degrees 0) (degrees 1440)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 8.0 48.0) - (:scalevel-x (meters 0.33333334) (meters 0.6666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1.7)) - (:flags (bit2 bit3 bit12 bit14 left-multiply-quat)) - (:next-time (seconds 0.2) (seconds 0.497)) - (:next-launcher 2947) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 6.0) + (:y (meters 10)) + (:scale-x (meters 8) (meters 60)) + (:rot-x (degrees 0) (degrees 1440)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 8.0 48.0) + (:scalevel-x (meters 0.33333334) (meters 0.6666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1.7)) + (:flags (bit2 bit3 bit12 bit14 left-multiply-quat)) + (:next-time (seconds 0.2) (seconds 0.497)) + (:next-launcher 2947))) (defpart 2947 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpart 2941 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 128.0) - (:y (meters 0)) - (:scale-x (meters 4) (meters 1)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.85333335) (meters 0.85333335)) - (:accel-y (meters -0.0016666667) (meters -0.0016666667)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2948) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 128.0) + (:y (meters 0)) + (:scale-x (meters 4) (meters 1)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.85333335) (meters 0.85333335)) + (:accel-y (meters -0.0016666667) (meters -0.0016666667)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2948) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2948 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2944 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 16.0) - (:y (meters 0)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 128)) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 8.0 88.0) - (:scalevel-y (meters 3.4133334)) - (:fade-a -0.64) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 16.0) + (:y (meters 0)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 128)) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 8.0 88.0) + (:scalevel-y (meters 3.4133334)) + (:fade-a -0.64) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)))) (defpart 2940 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 256)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 256)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2942 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters -8) (meters 16)) - (:scale-x (meters 20) (meters 40)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 8.0 90.0) - (:vel-y (meters 0.21333334) (meters 0.21333334)) - (:scalevel-x (meters 0.04)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.32666665) - (:accel-y (meters 0.0013333333) (meters 0.0013333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 1440)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 0) (meters 32)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters -8) (meters 16)) + (:scale-x (meters 20) (meters 40)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 8.0 90.0) + (:vel-y (meters 0.21333334) (meters 0.21333334)) + (:scalevel-x (meters 0.04)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.32666665) + (:accel-y (meters 0.0013333333) (meters 0.0013333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 1440)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 0) (meters 32)))) (defpart 2943 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 20.0) - (:y (meters -8) (meters 16)) - (:scale-x (meters 40) (meters 40)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 8.0 64.0) - (:vel-y (meters 0.85333335) (meters 0.85333335)) - (:scalevel-x (meters 0.04)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.068571426) - (:accel-y (meters 0.0013333333) (meters 0.0013333333)) - (:friction 0.9) - (:timer (seconds 3.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 1440)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 0) (meters 32)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 20.0) + (:y (meters -8) (meters 16)) + (:scale-x (meters 40) (meters 40)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 8.0 64.0) + (:vel-y (meters 0.85333335) (meters 0.85333335)) + (:scalevel-x (meters 0.04)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.068571426) + (:accel-y (meters 0.0013333333) (meters 0.0013333333)) + (:friction 0.9) + (:timer (seconds 3.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 1440)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 0) (meters 32)))) (defpartgroup group-robotboss-splash :id 704 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2949) (sp-item 2950)) - ) + :parts ((sp-item 2949) (sp-item 2950))) (defpart 2950 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 128.0) - (:x (meters 0) (meters 5)) - (:y (meters -8)) - (:scale-x (meters 0.5) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 96.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.42666668)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00066666666) (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 3.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.997)) - (:next-launcher 2951) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 128.0) + (:x (meters 0) (meters 5)) + (:y (meters -8)) + (:scale-x (meters 0.5) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 96.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.42666668)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666) (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 3.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.997)) + (:next-launcher 2951) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2951 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.21333334)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.21333334))) (defpart 2949 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:x (meters 0) (meters 10)) - (:y (meters -10)) - (:scale-x (meters 6) (meters 6)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 96.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.10666667)) - (:accel-y (meters -0.00033333333)) - (:friction 0.94) - (:timer (seconds 3.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.997)) - (:next-launcher 2951) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:x (meters 0) (meters 10)) + (:y (meters -10)) + (:scale-x (meters 6) (meters 6)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 96.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.10666667)) + (:accel-y (meters -0.00033333333)) + (:friction 0.94) + (:timer (seconds 3.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.997)) + (:next-launcher 2951) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-bigdoor-open :id 698 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2952 :flags (is-3d)) - (sp-item 2953 :flags (is-3d)) - (sp-item 2954 :flags (is-3d)) - (sp-item 2955) - (sp-item 2956) - (sp-item 2957) - (sp-item 2958) - ) - ) + :parts + ((sp-item 2952 :flags (is-3d)) + (sp-item 2953 :flags (is-3d)) + (sp-item 2954 :flags (is-3d)) + (sp-item 2955) + (sp-item 2956) + (sp-item 2957) + (sp-item 2958))) (defpart 2952 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1) - (:y (meters 10)) - (:z (meters 4)) - (:scale-x (meters 48)) - (:rot-x (degrees 90)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:rotvel-y (degrees -0.1) (degrees 0.2)) - (:fade-a 0.16) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 2959) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1) + (:y (meters 10)) + (:z (meters 4)) + (:scale-x (meters 48)) + (:rot-x (degrees 90)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:rotvel-y (degrees -0.1) (degrees 0.2)) + (:fade-a 0.16) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 2959) + (:rotate-y (degrees 40)))) (defpart 2959 - :init-specs ((:fade-a -0.16)) - ) + :init-specs ((:fade-a -0.16))) (defpart 2953 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1) - (:y (meters 10)) - (:z (meters 4)) - (:scale-x (meters 48)) - (:rot-z (degrees -90)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:rotvel-y (degrees -0.1) (degrees 0.2)) - (:fade-a 0.16) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 2959) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1) + (:y (meters 10)) + (:z (meters 4)) + (:scale-x (meters 48)) + (:rot-z (degrees -90)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:rotvel-y (degrees -0.1) (degrees 0.2)) + (:fade-a 0.16) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 2959) + (:rotate-y (degrees 40)))) (defpart 2954 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1) - (:y (meters 0.5)) - (:z (meters 4)) - (:scale-x (meters 40)) - (:rot-y (degrees -50.000004)) - (:rot-z (degrees 1)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:rotvel-y (degrees -0.1) (degrees 0.2)) - (:fade-a 0.16) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 2959) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1) + (:y (meters 0.5)) + (:z (meters 4)) + (:scale-x (meters 40)) + (:rot-y (degrees -50.000004)) + (:rot-z (degrees 1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:rotvel-y (degrees -0.1) (degrees 0.2)) + (:fade-a 0.16) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 2959) + (:rotate-y (degrees 40)))) (defpart 2955 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 1.0 2.0) - (:y (meters 10)) - (:z (meters 8)) - (:scale-x (meters 8) (meters 32)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 2.5) (meters 5.5)) - (:r 128.0 1 128.0) - (:g 128.0 1 128.0) - (:b 128.0 1 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 0.21333334) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 2959) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 1.0 2.0) + (:y (meters 10)) + (:z (meters 8)) + (:scale-x (meters 8) (meters 32)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 2.5) (meters 5.5)) + (:r 128.0 1 128.0) + (:g 128.0 1 128.0) + (:b 128.0 1 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 0.21333334) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 2959) + (:rotate-y (degrees 40)))) (defpart 2956 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.5) - (:y (meters 10)) - (:z (meters 8)) - (:scale-x (meters 64)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.5)) - (:r 128.0 1 128.0) - (:g 128.0 1 128.0) - (:b 128.0 1 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 0.21333334) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 2959) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.5) + (:y (meters 10)) + (:z (meters 8)) + (:scale-x (meters 64)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.5)) + (:r 128.0 1 128.0) + (:g 128.0 1 128.0) + (:b 128.0 1 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 0.21333334) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 2959) + (:rotate-y (degrees 40)))) (defpart 2957 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:x (meters 10) (meters 40)) - (:y (meters 1) (meters 20)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters -0.00066666666) (meters -0.0026666666)) - (:fade-a 0.85333335) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 2960) - (:rotate-y (degrees -135) (degrees 1440)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:x (meters 10) (meters 40)) + (:y (meters 1) (meters 20)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters -0.00066666666) (meters -0.0026666666)) + (:fade-a 0.85333335) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 2960) + (:rotate-y (degrees -135) (degrees 1440)))) (defpart 2960 - :init-specs ((:fade-a -0.85333335)) - ) + :init-specs ((:fade-a -0.85333335))) (defpart 2958 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 10) (meters 30)) - (:y (meters 1) (meters 20)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters -0.00066666666) (meters -0.0026666666)) - (:fade-a 0.85333335) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:userdata -4096000.0) - (:func 'check-drop-level-bigdoor-open-pops) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 2961) - (:rotate-y (degrees -135) (degrees 1440)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 10) (meters 30)) + (:y (meters 1) (meters 20)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters -0.00066666666) (meters -0.0026666666)) + (:fade-a 0.85333335) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:userdata -4096000.0) + (:func 'check-drop-level-bigdoor-open-pops) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 2961) + (:rotate-y (degrees -135) (degrees 1440)))) (defpart 2961 - :init-specs ((:userdata 4096000.0)) - ) + :init-specs ((:userdata 4096000.0))) (defun check-drop-level-bigdoor-open-pops ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -1028,65 +960,58 @@ (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg2 y) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 2962) gp-0 :rate 1.0) - (launch-particles (-> *part-id-table* 2963) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 2963) gp-0 :rate 1.0))) + (none)) (defpart 2963 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 16.0 32.0) - (:fade-a -1.92) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 16.0 32.0) + (:fade-a -1.92) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)))) (defpart 2962 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 4.0) - (:scale-x (meters 0.3) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:accel-y (meters -0.0016666667) (meters -0.00066666666)) - (:friction 0.85) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 4.0) + (:scale-x (meters 0.3) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:accel-y (meters -0.0016666667) (meters -0.00066666666)) + (:friction 0.85) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-2d-big-door-whiteout :id 706 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2965)) - ) + :parts ((sp-item 2965))) (defpart 2965 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:z (meters -3.90625)) - (:scale-x (meters 15)) - (:scale-y (meters 12)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:z (meters -3.90625)) + (:scale-x (meters 15)) + (:scale-y (meters 12)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) diff --git a/goal_src/jak1/levels/finalboss/sage-finalboss.gc b/goal_src/jak1/levels/finalboss/sage-finalboss.gc index dced65273c..3af6147864 100644 --- a/goal_src/jak1/levels/finalboss/sage-finalboss.gc +++ b/goal_src/jak1/levels/finalboss/sage-finalboss.gc @@ -1,60 +1,57 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIN.DGO") - (require "engine/common-obs/plat-eco.gc") (require "levels/finalboss/robotboss-misc.gc") (require "levels/finalboss/final-door.gc") (require "engine/ui/credits.gc") -;; name: sage-finalboss-FIN.gc -;; name in dgo: sage-finalboss -;; dgos: FIN ;; DECOMP BEGINS -(defskelgroup *robotboss-cinematic-sg* robotboss-cinematic robotboss-cinematic-lod0-jg robotboss-cinematic-idle-ja - ((robotboss-cinematic-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -10 0 2000) - ) - -(defskelgroup *jak-white-sg* jak-white jak-white-lod0-jg jak-white-idle-ja - ((jak-white-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) - -(defskelgroup *plat-eco-finalboss-unlit-sg* plat-eco-finalboss plat-eco-finalboss-lod0-jg plat-eco-finalboss-idle-ja - ((plat-eco-finalboss-lod0-mg (meters 20)) - (plat-eco-finalboss-lod1-mg (meters 40)) - (plat-eco-finalboss-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 3) - ) - -(defskelgroup *plat-eco-finalboss-lit-sg* plat-eco-finalboss plat-eco-finalboss-lit-lod0-jg plat-eco-finalboss-idle-ja - ((plat-eco-finalboss-lit-lod0-mg (meters 20)) - (plat-eco-finalboss-lit-lod1-mg (meters 40)) - (plat-eco-finalboss-lit-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *robotboss-cinematic-sg* + robotboss-cinematic + robotboss-cinematic-lod0-jg + robotboss-cinematic-idle-ja + ((robotboss-cinematic-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -10 0 2000)) + +(defskelgroup *jak-white-sg* + jak-white + jak-white-lod0-jg + jak-white-idle-ja + ((jak-white-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) + +(defskelgroup *plat-eco-finalboss-unlit-sg* + plat-eco-finalboss + plat-eco-finalboss-lod0-jg + plat-eco-finalboss-idle-ja + ((plat-eco-finalboss-lod0-mg (meters 20)) + (plat-eco-finalboss-lod1-mg (meters 40)) + (plat-eco-finalboss-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) + +(defskelgroup *plat-eco-finalboss-lit-sg* + plat-eco-finalboss + plat-eco-finalboss-lit-lod0-jg + plat-eco-finalboss-idle-ja + ((plat-eco-finalboss-lit-lod0-mg (meters 20)) + (plat-eco-finalboss-lit-lod1-mg (meters 40)) + (plat-eco-finalboss-lit-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (deftype plat-eco-finalboss (plat-eco) - ((force-dest float) - (targ-dest float) - (dest float) - (speed float) - (touch-time time-frame) - ) - ) - + ((force-dest float) + (targ-dest float) + (dest float) + (speed float) + (touch-time time-frame))) (defmethod get-unlit-skel ((this plat-eco-finalboss)) - *plat-eco-finalboss-unlit-sg* - ) + *plat-eco-finalboss-unlit-sg*) (defmethod get-lit-skel ((this plat-eco-finalboss)) - *plat-eco-finalboss-lit-sg* - ) + *plat-eco-finalboss-lit-sg*) (defmethod baseplat-method-26 ((this plat-eco-finalboss)) (set! (-> this force-dest) -1.0) @@ -63,160 +60,101 @@ (set! (-> this speed) 0.1) (logclear! (-> this mask) (process-mask actor-pause)) (process-entity-status! this (entity-perm-status bit-3) #t) - (none) - ) + (none)) (defstate plat-path-active (plat-eco-finalboss) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('target) - (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> self force-dest) (the-as float (-> block param 0))) - ) - (('ridden 'edge-grabbed) - (if (time-elapsed? (-> self touch-time) (seconds 2)) - (set! (-> self targ-dest) (cond - ((= (-> self path-pos) 0.0) - (set! (-> self force-dest) -1.0) - 0.99 - ) - ((= (-> self path-pos) 0.99) - 0.0 - ) - (else - (-> self targ-dest) - ) - ) - ) - ) - (set-time! (-> self touch-time)) - #f - ) - (else - (plat-event proc argc message block) - ) - ) - ) - :enter (behavior ((arg0 plat)) - (set-time! (-> self state-time)) - (lods-assign! (-> self draw) (-> self lit-look)) - (process-entity-status! self (entity-perm-status complete) #t) - (cond - (arg0 - ) - (else - (dotimes (gp-1 5) - (spawn-projectile-blue *target*) - ) - ) - ) - ) - :trans (behavior () - (let ((s5-0 (eval-path-curve! (-> self path) (new 'stack-no-clear 'vector) 0.0 'interp)) - (gp-0 (eval-path-curve! (-> self path) (new 'stack-no-clear 'vector) 1.0 'interp)) - ) - (if (time-elapsed? (-> self touch-time) (seconds 3)) - (set! (-> self targ-dest) -1.0) - ) - (set! (-> self dest) - (cond - ((>= (-> self force-dest) 0.0) - (-> self force-dest) - ) - ((>= (-> self targ-dest) 0.0) - (-> self targ-dest) - ) - ((< (vector-vector-xz-distance (target-pos 0) s5-0) (vector-vector-xz-distance (target-pos 0) gp-0)) - 0.0 - ) - (else - 0.99 - ) - ) - ) - ) - (if (= (-> self state-time) (current-time)) - (set! (-> self path-pos) (-> self dest)) - ) - (seek! (-> self path-pos) (-> self dest) (* (-> self speed) (seconds-per-frame))) - (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) - (if (< (vector-vector-distance (-> self root trans) (ear-trans)) 81920.0) - (sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) - ) - (plat-trans) - (when (send-event *target* 'query 'powerup (pickup-type eco-yellow)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('target) + (process-entity-status! self (entity-perm-status complete) #t) + (set! (-> self force-dest) (the-as float (-> block param 0)))) + (('ridden 'edge-grabbed) + (if (time-elapsed? (-> self touch-time) (seconds 2)) + (set! (-> self targ-dest) + (cond + ((= (-> self path-pos) 0.0) (set! (-> self force-dest) -1.0) 0.99) + ((= (-> self path-pos) 0.99) 0.0) + (else (-> self targ-dest))))) + (set-time! (-> self touch-time)) + #f) + (else (plat-event proc argc message block)))) + :enter + (behavior ((arg0 plat)) + (set-time! (-> self state-time)) + (lods-assign! (-> self draw) (-> self lit-look)) (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> self force-dest) 0.0) - ) - ) - ) + (cond + (arg0) + (else (dotimes (gp-1 5) (spawn-projectile-blue *target*))))) + :trans + (behavior () + (let ((s5-0 (eval-path-curve! (-> self path) (new 'stack-no-clear 'vector) 0.0 'interp)) + (gp-0 (eval-path-curve! (-> self path) (new 'stack-no-clear 'vector) 1.0 'interp))) + (if (time-elapsed? (-> self touch-time) (seconds 3)) (set! (-> self targ-dest) -1.0)) + (set! (-> self dest) + (cond + ((>= (-> self force-dest) 0.0) (-> self force-dest)) + ((>= (-> self targ-dest) 0.0) (-> self targ-dest)) + ((< (vector-vector-xz-distance (target-pos 0) s5-0) (vector-vector-xz-distance (target-pos 0) gp-0)) 0.0) + (else 0.99)))) + (if (= (-> self state-time) (current-time)) (set! (-> self path-pos) (-> self dest))) + (seek! (-> self path-pos) (-> self dest) (* (-> self speed) (seconds-per-frame))) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (if (< (vector-vector-distance (-> self root trans) (ear-trans)) 81920.0) + (sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans)))) + (plat-trans) + (when (send-event *target* 'query 'powerup (pickup-type eco-yellow)) + (process-entity-status! self (entity-perm-status complete) #t) + (set! (-> self force-dest) 0.0)))) (deftype sage-finalboss-particle (structure) - ((part sparticle-launch-control) - (active symbol) - ) - :allow-misaligned - ) - + ((part sparticle-launch-control) + (active symbol)) + :allow-misaligned) (deftype sage-finalboss (process-taskable) - ((redsage handle) - (bluesage handle) - (yellowsage handle) - (assistant handle) - (robotplat handle) - (robotboss handle) - (silodoor handle) - (jak-white handle) - (left-door entity-actor) - (right-door entity-actor) - (kick-in-the-door symbol) - (kick-the-credits symbol) - (credit-fade float) - (palette-val float) - (particle sage-finalboss-particle 9 :inline) - (particle-whiteout sparticle-launch-control) - (credits-played symbol) - ) + ((redsage handle) + (bluesage handle) + (yellowsage handle) + (assistant handle) + (robotplat handle) + (robotboss handle) + (silodoor handle) + (jak-white handle) + (left-door entity-actor) + (right-door entity-actor) + (kick-in-the-door symbol) + (kick-the-credits symbol) + (credit-fade float) + (palette-val float) + (particle sage-finalboss-particle 9 :inline) + (particle-whiteout sparticle-launch-control) + (credits-played symbol)) (:states - sage-finalboss-credits - ) - ) - + sage-finalboss-credits)) (defmethod relocate ((this sage-finalboss) (arg0 int)) (dotimes (v1-0 9) - (if (nonzero? (-> this particle v1-0 part)) - (&+! (-> this particle v1-0 part) arg0) - ) - ) - (if (nonzero? (-> this particle-whiteout)) - (&+! (-> this particle-whiteout) arg0) - ) - (the-as sage-finalboss ((method-of-type process-taskable relocate) this arg0)) - ) + (if (nonzero? (-> this particle v1-0 part)) (&+! (-> this particle v1-0 part) arg0))) + (if (nonzero? (-> this particle-whiteout)) (&+! (-> this particle-whiteout) arg0)) + (the-as sage-finalboss ((method-of-type process-taskable relocate) this arg0))) (defmethod deactivate ((this sage-finalboss)) (dotimes (s5-0 9) - (let ((a0-1 (-> this particle s5-0 part))) - (if (nonzero? a0-1) - (kill-and-free-particles a0-1) - ) - ) - ) - (if (nonzero? (-> this particle-whiteout)) - (kill-and-free-particles (-> this particle-whiteout)) - ) + (let ((a0-1 (-> this particle s5-0 part))) (if (nonzero? a0-1) (kill-and-free-particles a0-1)))) + (if (nonzero? (-> this particle-whiteout)) (kill-and-free-particles (-> this particle-whiteout))) ((method-of-type process-taskable deactivate) this) - (none) - ) + (none)) -(defskelgroup *sage-finalboss-sg* green-sagecage green-sagecage-lod0-jg green-sagecage-green-sagecage-idle-ja - ((green-sagecage-lod0-mg (meters 20)) (green-sagecage-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow green-sagecage-shadow-mg - ) +(defskelgroup *sage-finalboss-sg* + green-sagecage + green-sagecage-lod0-jg + green-sagecage-green-sagecage-idle-ja + ((green-sagecage-lod0-mg (meters 20)) (green-sagecage-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow green-sagecage-shadow-mg) (defmethod play-reminder ((this sage-finalboss)) (let ((s5-0 (entity-by-name "red-sagecage-1"))) @@ -225,151 +163,115 @@ (send-event (handle->process (-> this redsage)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this redsage)) 'blend-shape #t) (send-event (handle->process (-> this redsage)) 'center-joint 3) - (send-event (handle->process (-> this redsage)) 'origin-joint-index 3) - ) - ) + (send-event (handle->process (-> this redsage)) 'origin-joint-index 3))) (let ((s5-1 (entity-by-name "blue-sagecage-1"))) (when s5-1 - (set! (-> this bluesage) - (ppointer->handle (manipy-spawn (-> this root trans) s5-1 *bluesage-sg* #f :to this)) - ) + (set! (-> this bluesage) (ppointer->handle (manipy-spawn (-> this root trans) s5-1 *bluesage-sg* #f :to this))) (send-event (handle->process (-> this bluesage)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this bluesage)) 'blend-shape #t) (send-event (handle->process (-> this bluesage)) 'center-joint 3) - (send-event (handle->process (-> this bluesage)) 'origin-joint-index 3) - ) - ) + (send-event (handle->process (-> this bluesage)) 'origin-joint-index 3))) (let ((s5-2 (entity-by-name "yellow-sagecage-1"))) - (the-as - symbol - (when s5-2 - (set! (-> this yellowsage) - (ppointer->handle (manipy-spawn (-> this root trans) s5-2 *yellowsage-sg* #f :to this)) - ) - (send-event (handle->process (-> this yellowsage)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> this yellowsage)) 'blend-shape #t) - (send-event (handle->process (-> this yellowsage)) 'center-joint 3) - (send-event (handle->process (-> this yellowsage)) 'origin-joint-index 3) - ) - ) - ) - ) + (the-as symbol + (when s5-2 + (set! (-> this yellowsage) (ppointer->handle (manipy-spawn (-> this root trans) s5-2 *yellowsage-sg* #f :to this))) + (send-event (handle->process (-> this yellowsage)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> this yellowsage)) 'blend-shape #t) + (send-event (handle->process (-> this yellowsage)) 'center-joint 3) + (send-event (handle->process (-> this yellowsage)) 'origin-joint-index 3))))) (defmethod process-taskable-method-45 ((this sage-finalboss)) (let ((s5-0 (entity-by-name "assistant-lavatube-end-3"))) - (the-as - symbol - (when s5-0 - (set! (-> this assistant) - (ppointer->handle (manipy-spawn (-> this root trans) s5-0 *assistant-lavatube-end-sg* #f :to this)) - ) - (let ((s5-1 (handle->process (-> this assistant)))) - (if (the-as manipy s5-1) - (set! (-> (the-as manipy s5-1) draw level-index) (the-as uint (-> (level-get *level* 'finalboss) index))) - ) - ) - (send-event (handle->process (-> this assistant)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> this assistant)) 'blend-shape #t) - (send-event (handle->process (-> this assistant)) 'center-joint 3) - (send-event (handle->process (-> this assistant)) 'origin-joint-index 3) - ) - ) - ) - ) + (the-as symbol + (when s5-0 + (set! (-> this assistant) + (ppointer->handle (manipy-spawn (-> this root trans) s5-0 *assistant-lavatube-end-sg* #f :to this))) + (let ((s5-1 (handle->process (-> this assistant)))) + (if (the-as manipy s5-1) + (set! (-> (the-as manipy s5-1) draw level-index) (the-as uint (-> (level-get *level* 'finalboss) index))))) + (send-event (handle->process (-> this assistant)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> this assistant)) 'blend-shape #t) + (send-event (handle->process (-> this assistant)) 'center-joint 3) + (send-event (handle->process (-> this assistant)) 'origin-joint-index 3))))) (defmethod play-anim! ((this sage-finalboss) (arg0 symbol)) (case (current-status (-> this tasks)) (((task-status unknown)) (when arg0 (close-current! (-> this tasks)) - (set-yaw-angle-clear-roll-pitch! (-> this root) 0.0) - ) - (new 'static 'spool-anim - :name "green-sagecage-daxter-sacrifice" - :index 8 - :parts 6 - :command-list '((1 blackout 0) (236 joint "cameraB") (439 joint "camera")) - ) - ) + (set-yaw-angle-clear-roll-pitch! (-> this root) 0.0)) + (new 'static + 'spool-anim + :name "green-sagecage-daxter-sacrifice" + :index 8 + :parts 6 + :command-list + '((1 blackout 0) (236 joint "cameraB") (439 joint "camera")))) (((task-status need-introduction)) (when arg0 (set-yaw-angle-clear-roll-pitch! (-> this root) 0.0) (close-current! (-> this tasks)) (set! (-> this jak-white) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *jak-white-sg* #f :to this)) - ) - (send-event - (handle->process (-> this jak-white)) - 'eval - (lambda :behavior sage-finalboss () (set-vector! (-> self draw color-emissive) 0.5 0.5 0.5 0.0) (none)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *jak-white-sg* #f :to this))) + (send-event (handle->process (-> this jak-white)) + 'eval + (lambda :behavior sage-finalboss () + (set-vector! (-> self draw color-emissive) 0.5 0.5 0.5 0.0) + (none))) (send-event (handle->process (-> this jak-white)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this jak-white)) 'origin-joint-index 3) (send-event (handle->process (-> this jak-white)) 'blend-shape #t) (set! (-> this robotboss) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *robotboss-cinematic-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *robotboss-cinematic-sg* #f :to this))) (send-event (handle->process (-> this robotboss)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this robotboss)) 'origin-joint-index 3) (let ((v1-67 (handle->process (-> this robotboss)))) - (if (the-as manipy v1-67) - (set! (-> (the-as manipy v1-67) draw bounds w) 2048000.0) - ) - ) + (if (the-as manipy v1-67) (set! (-> (the-as manipy v1-67) draw bounds w) 2048000.0))) (set! (-> this silodoor) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *silodoor-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *silodoor-sg* #f :to this))) (send-event (handle->process (-> this silodoor)) 'anim-mode 'clone-anim) (let ((v1-84 (handle->process (-> this silodoor)))) - (if (the-as manipy v1-84) - (set! (-> (the-as silodoor v1-84) draw bounds w) 2048000.0) - ) - ) + (if (the-as manipy v1-84) (set! (-> (the-as silodoor v1-84) draw bounds w) 2048000.0))) (send-event (process-by-name "silodoor-5" *active-pool*) 'hide) (set-setting! 'music #f 0.0 0) - (set-setting! 'allow-progress #f 0.0 0) - ) - (new 'static 'spool-anim - :name "green-sagecage-outro-beat-boss-a" - :index 9 - :parts 8 - :command-list '((0 send-event self activate-particle 0) - (0 send-event self activate-particle 1) - (0 send-event self activate-particle 7) - (1 blackout 0) - (61 joint "cameraB") - (71 send-event self activate-particle 2) - (156 joint "camera") - (216 joint "cameraB") - (259 send-event self deactivate-particle 2) - (259 send-event self activate-particle 3) - (268 send-event self activate-particle 4) - (270 send-event self deactivate-particle 3) - (270 send-event self deactivate-particle 0) - (270 send-event self deactivate-particle 1) - (271 joint "camera") - (269 send-event self activate-particle 5) - (272 send-event self flash) - (272 eval ,(lambda :behavior sage-finalboss - () - (let ((a0-1 (get-task-control (game-task finalboss-movies)))) - (save-reminder a0-1 (logior (get-reminder a0-1 0) 1) 0) - ) - (none) - ) - ) - (273 send-event self deactivate-particle 5) - (333 joint "cameraB") - (395 joint "camera") - (453 joint "cameraB") - (478 send-event self deactivate-particle 4) - (478 send-event self activate-particle 6) - (482 send-event self deactivate-particle 6) - (583 joint "camera") - (640 send-event self deactivate-particle 7) - ) - ) - ) + (set-setting! 'allow-progress #f 0.0 0)) + (new 'static + 'spool-anim + :name "green-sagecage-outro-beat-boss-a" + :index 9 + :parts 8 + :command-list + '((0 send-event self activate-particle 0) + (0 send-event self activate-particle 1) + (0 send-event self activate-particle 7) + (1 blackout 0) + (61 joint "cameraB") + (71 send-event self activate-particle 2) + (156 joint "camera") + (216 joint "cameraB") + (259 send-event self deactivate-particle 2) + (259 send-event self activate-particle 3) + (268 send-event self activate-particle 4) + (270 send-event self deactivate-particle 3) + (270 send-event self deactivate-particle 0) + (270 send-event self deactivate-particle 1) + (271 joint "camera") + (269 send-event self activate-particle 5) + (272 send-event self flash) + (272 + eval + ,(lambda :behavior sage-finalboss () + (let ((a0-1 (get-task-control (game-task finalboss-movies)))) (save-reminder a0-1 (logior (get-reminder a0-1 0) 1) 0)) + (none))) + (273 send-event self deactivate-particle 5) + (333 joint "cameraB") + (395 joint "camera") + (453 joint "cameraB") + (478 send-event self deactivate-particle 4) + (478 send-event self activate-particle 6) + (482 send-event self deactivate-particle 6) + (583 joint "camera") + (640 send-event self deactivate-particle 7)))) (((task-status need-reminder-a)) (when arg0 (set-yaw-angle-clear-roll-pitch! (-> this root) 0.0) @@ -378,101 +280,88 @@ (process-taskable-method-45 this) (set! (-> this kick-the-credits) #t) (set! (-> this robotplat) - (ppointer->handle - (manipy-spawn (-> this root trans) (-> this entity) *plat-eco-finalboss-lit-sg* #f :to this) - ) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *plat-eco-finalboss-lit-sg* #f :to this))) (send-event (handle->process (-> this robotplat)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this robotplat)) 'origin-joint-index 3) (set! (-> this old-target-pos trans quad) - (-> (new 'static 'vector :x 11368946.0 :y 2215900.2 :z -19405602.0 :w 1.0) quad) - ) + (-> (new 'static 'vector :x 11368946.0 :y 2215900.2 :z -19405602.0 :w 1.0) quad)) (quaternion-copy! (-> this old-target-pos quat) (new 'static 'quaternion :y -0.8472 :w 0.5312)) (set-setting! 'music #f 0.0 0) (set-setting! 'sfx-volume 'abs 0.0 0) (set-setting! 'ambient-volume 'abs 0.0 0) - (set-setting! 'allow-progress #f 0.0 0) - ) - (new 'static 'spool-anim - :name "green-sagecage-outro-beat-boss-b" - :index 10 - :parts 27 - :command-list '((0 kill "crate-3250") - (0 kill "crate-3251") - (0 kill "crate-3252") - (0 kill "crate-3253") - (0 kill "crate-3254") - (0 kill "crate-3255") - (0 kill "crate-3256") - (0 kill "crate-3257") - (0 kill "crate-3258") - (0 kill "crate-3259") - (0 kill "plat-eco-finalboss-1") - (1 blackout 0) - (61 joint "cameraB") - (136 joint "camera") - (510 joint "cameraB") - (641 joint "camera") - (751 joint "cameraB") - (1096 joint "camera") - (1321 joint "cameraB") - (1521 joint "camera") - (1636 joint "cameraB") - (1751 joint "camera") - (1916 joint "cameraB") - (1996 joint "camera") - (2256 joint "cameraB") - ) - ) - ) + (set-setting! 'allow-progress #f 0.0 0)) + (new 'static + 'spool-anim + :name "green-sagecage-outro-beat-boss-b" + :index 10 + :parts 27 + :command-list + '((0 kill "crate-3250") + (0 kill "crate-3251") + (0 kill "crate-3252") + (0 kill "crate-3253") + (0 kill "crate-3254") + (0 kill "crate-3255") + (0 kill "crate-3256") + (0 kill "crate-3257") + (0 kill "crate-3258") + (0 kill "crate-3259") + (0 kill "plat-eco-finalboss-1") + (1 blackout 0) + (61 joint "cameraB") + (136 joint "camera") + (510 joint "cameraB") + (641 joint "camera") + (751 joint "cameraB") + (1096 joint "camera") + (1321 joint "cameraB") + (1521 joint "camera") + (1636 joint "cameraB") + (1751 joint "camera") + (1916 joint "cameraB") + (1996 joint "camera") + (2256 joint "cameraB")))) (((task-status need-reminder)) (when arg0 (set-yaw-angle-clear-roll-pitch! (-> this root) -13116.667) (close-current! (-> this tasks)) (process-taskable-method-45 this) (send-event *camera* 'teleport) - (set-setting! 'allow-progress #f 0.0 0) - ) + (set-setting! 'allow-progress #f 0.0 0)) (cond ((target-has-all-the-cells?) - (new 'static 'spool-anim - :name "green-sagecage-outro-beat-boss-enough-cells" - :index 12 - :parts 6 - :command-list '((0 send-event self fade) - (1 blackout 0) - (65 joint "cameraB") - (104 joint "camera") - (134 joint "cameraB") - (165 joint "camera") - (292 joint "cameraB") - (488 joint "camera") - (488 auto-save auto-save) - ) - ) - ) + (new 'static + 'spool-anim + :name "green-sagecage-outro-beat-boss-enough-cells" + :index 12 + :parts 6 + :command-list + '((0 send-event self fade) + (1 blackout 0) + (65 joint "cameraB") + (104 joint "camera") + (134 joint "cameraB") + (165 joint "camera") + (292 joint "cameraB") + (488 joint "camera") + (488 auto-save auto-save)))) (else - (if arg0 - (set-setting! 'allow-progress #f 0.0 0) - ) - (new 'static 'spool-anim - :name "green-sagecage-outro-beat-boss-need-cells" - :index 11 - :parts 8 - :command-list '((0 send-event self fade) - (1 blackout 0) - (65 joint "cameraB") - (104 joint "camera") - (134 joint "cameraB") - (165 joint "camera") - (292 joint "cameraB") - (488 joint "camera") - (488 auto-save auto-save) - ) - ) - ) - ) - ) + (if arg0 (set-setting! 'allow-progress #f 0.0 0)) + (new 'static + 'spool-anim + :name "green-sagecage-outro-beat-boss-need-cells" + :index 11 + :parts 8 + :command-list + '((0 send-event self fade) + (1 blackout 0) + (65 joint "cameraB") + (104 joint "camera") + (134 joint "cameraB") + (165 joint "camera") + (292 joint "cameraB") + (488 joint "camera") + (488 auto-save auto-save)))))) (((task-status need-reward-speech)) (when arg0 (set-yaw-angle-clear-roll-pitch! (-> this root) -13116.667) @@ -480,508 +369,303 @@ (process-taskable-method-45 this) (set! (-> this left-door) (the-as entity-actor (entity-by-name "power-left-2"))) (set! (-> this right-door) (the-as entity-actor (entity-by-name "power-right-2"))) - (set-setting! 'allow-progress #f 0.0 0) - ) - (new 'static 'spool-anim - :name "green-sagecage-outro-big-finish" - :index 13 - :parts 7 - :command-list '((1 blackout 0) - (61 joint "cameraB") - (102 joint "camera") - (145 joint "cameraB") - (220 send-event "power-left-2" open) - (220 send-event "power-right-2" open) - (235 joint "camera") - (243 send-event self activate-particle 8) - (322 joint "cameraB") - (428 joint "camera") - (519 joint "cameraB") - (602 joint "camera") - ) - ) - ) + (set-setting! 'allow-progress #f 0.0 0)) + (new 'static + 'spool-anim + :name "green-sagecage-outro-big-finish" + :index 13 + :parts 7 + :command-list + '((1 blackout 0) + (61 joint "cameraB") + (102 joint "camera") + (145 joint "cameraB") + (220 send-event "power-left-2" open) + (220 send-event "power-right-2" open) + (235 joint "camera") + (243 send-event self activate-particle 8) + (322 joint "cameraB") + (428 joint "camera") + (519 joint "cameraB") + (602 joint "camera")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 4) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 4)))) (defmethod get-art-elem ((this sage-finalboss)) - (-> this draw art-group data 4) - ) + (-> this draw art-group data 4)) (defbehavior sage-finalboss-credit-particle sage-finalboss () (when (< 0.0 (-> self credit-fade)) (if (> (-> self part matrix) 0) - (set-vector! - (sprite-get-user-hvdf (-> self part matrix)) - 2048.0 - 2048.0 - (+ -1024.0 (-> *math-camera* hvdf-off z)) - (-> *math-camera* hvdf-off w) - ) - ) + (set-vector! (sprite-get-user-hvdf (-> self part matrix)) + 2048.0 + 2048.0 + (+ -1024.0 (-> *math-camera* hvdf-off z)) + (-> *math-camera* hvdf-off w))) (set! (-> *part-id-table* 2827 init-specs 8 initial-valuef) (* 128.0 (-> self credit-fade))) (cond ((< (-> self credit-fade) 1.0) (set! (-> *part-id-table* 2825 init-specs 1 initial-valuef) 0.0) - (set! (-> *part-id-table* 2826 init-specs 1 initial-valuef) 0.0) - ) + (set! (-> *part-id-table* 2826 init-specs 1 initial-valuef) 0.0)) (else - (set! (-> *part-id-table* 2825 init-specs 1 initial-valuef) 1.0) - (set! (-> *part-id-table* 2826 init-specs 1 initial-valuef) 0.3) - ) - ) + (set! (-> *part-id-table* 2825 init-specs 1 initial-valuef) 1.0) + (set! (-> *part-id-table* 2826 init-specs 1 initial-valuef) 0.3))) (spawn (-> self part) *zero-vector*) - (+! (-> self credit-fade) -0.008333334) - ) - (none) - ) + (+! (-> self credit-fade) -0.008333334)) + (none)) (defstate play-anim (sage-finalboss) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('fade) - (set! (-> self credit-fade) 1.0) - ) - (('flash) - (set! (-> self palette-val) 1.9921875) - ) - (('activate-particle) - (let ((v0-0 (the-as object #t))) - (set! (-> self particle (-> block param 0) active) (the-as symbol v0-0)) - v0-0 - ) - ) - (('deactivate-particle) - (set! (-> self particle (-> block param 0) active) #f) - #f - ) - ) - ) - :enter (behavior () - (set! (-> self credit-fade) 0.0) - ((-> (method-of-type process-taskable play-anim) enter)) - ) - :exit (behavior () - (when (= (current-status (-> self tasks)) (task-status invalid)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('fade) (set! (-> self credit-fade) 1.0)) + (('flash) (set! (-> self palette-val) 1.9921875)) + (('activate-particle) + (let ((v0-0 (the-as object #t))) (set! (-> self particle (-> block param 0) active) (the-as symbol v0-0)) v0-0)) + (('deactivate-particle) (set! (-> self particle (-> block param 0) active) #f) #f))) + :enter + (behavior () + (set! (-> self credit-fade) 0.0) + ((-> (method-of-type process-taskable play-anim) enter))) + :exit + (behavior () + (when (= (current-status (-> self tasks)) (task-status invalid)) + (cond + ((not (-> self credits-played)) (set! (-> self kick-the-credits) #t)) + (else (set-blackout-frames 0) (initialize! *game-info* 'game (the-as game-save #f) "title-start")))) + (let ((a0-4 (handle->process (-> self redsage)))) (if a0-4 (deactivate a0-4))) + (let ((a0-8 (handle->process (-> self bluesage)))) (if a0-8 (deactivate a0-8))) + (let ((a0-12 (handle->process (-> self yellowsage)))) (if a0-12 (deactivate a0-12))) + (let ((a0-16 (handle->process (-> self assistant)))) (if a0-16 (deactivate a0-16))) + (let ((a0-20 (handle->process (-> self robotplat)))) (if a0-20 (deactivate a0-20))) + (let ((a0-24 (handle->process (-> self robotboss)))) (if a0-24 (deactivate a0-24))) + (let ((a0-28 (handle->process (-> self jak-white)))) (if a0-28 (deactivate a0-28))) + (let ((a0-32 (handle->process (-> self silodoor)))) (if a0-32 (deactivate a0-32))) + (when (-> self left-door) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) self) + (set! (-> a1-9 num-params) 2) + (set! (-> a1-9 message) 'brightness) + (set! (-> a1-9 param 0) (the-as uint 1.0)) + (set! (-> a1-9 param 1) (the-as uint 0.0)) + (let ((t9-11 send-event-function) + (v1-61 (-> self left-door))) + (t9-11 (if v1-61 (-> v1-61 extra process)) a1-9))) + (set! (-> self left-door) #f)) + (when (-> self right-door) + (let ((a1-10 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-10 from) self) + (set! (-> a1-10 num-params) 2) + (set! (-> a1-10 message) 'brightness) + (set! (-> a1-10 param 0) (the-as uint 1.0)) + (set! (-> a1-10 param 1) (the-as uint 0.0)) + (let ((t9-12 send-event-function) + (v1-71 (-> self right-door))) + (t9-12 (if v1-71 (-> v1-71 extra process)) a1-10))) + (set! (-> self right-door) #f)) (cond - ((not (-> self credits-played)) - (set! (-> self kick-the-credits) #t) - ) - (else - (set-blackout-frames 0) - (initialize! *game-info* 'game (the-as game-save #f) "title-start") - ) - ) - ) - (let ((a0-4 (handle->process (-> self redsage)))) - (if a0-4 - (deactivate a0-4) - ) - ) - (let ((a0-8 (handle->process (-> self bluesage)))) - (if a0-8 - (deactivate a0-8) - ) - ) - (let ((a0-12 (handle->process (-> self yellowsage)))) - (if a0-12 - (deactivate a0-12) - ) - ) - (let ((a0-16 (handle->process (-> self assistant)))) - (if a0-16 - (deactivate a0-16) - ) - ) - (let ((a0-20 (handle->process (-> self robotplat)))) - (if a0-20 - (deactivate a0-20) - ) - ) - (let ((a0-24 (handle->process (-> self robotboss)))) - (if a0-24 - (deactivate a0-24) - ) - ) - (let ((a0-28 (handle->process (-> self jak-white)))) - (if a0-28 - (deactivate a0-28) - ) - ) - (let ((a0-32 (handle->process (-> self silodoor)))) - (if a0-32 - (deactivate a0-32) - ) - ) - (when (-> self left-door) - (let ((a1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-9 from) self) - (set! (-> a1-9 num-params) 2) - (set! (-> a1-9 message) 'brightness) - (set! (-> a1-9 param 0) (the-as uint 1.0)) - (set! (-> a1-9 param 1) (the-as uint 0.0)) - (let ((t9-11 send-event-function) - (v1-61 (-> self left-door)) - ) - (t9-11 - (if v1-61 - (-> v1-61 extra process) - ) - a1-9 - ) - ) - ) - (set! (-> self left-door) #f) - ) - (when (-> self right-door) - (let ((a1-10 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-10 from) self) - (set! (-> a1-10 num-params) 2) - (set! (-> a1-10 message) 'brightness) - (set! (-> a1-10 param 0) (the-as uint 1.0)) - (set! (-> a1-10 param 1) (the-as uint 0.0)) - (let ((t9-12 send-event-function) - (v1-71 (-> self right-door)) - ) - (t9-12 - (if v1-71 - (-> v1-71 extra process) - ) - a1-10 - ) - ) - ) - (set! (-> self right-door) #f) - ) - (cond - ((= (current-status (-> self tasks)) (task-status need-reward-speech)) - (if (target-has-all-the-cells?) + ((= (current-status (-> self tasks)) (task-status need-reward-speech)) + (if (target-has-all-the-cells?) (set! (-> self kick-in-the-door) #t) - (start 'play (get-continue-by-name *game-info* "finalboss-start")) - ) - ) - ((= (current-status (-> self tasks)) (task-status invalid)) - ) - (else - (set-blackout-frames (seconds 100)) - ) - ) - (dotimes (v1-84 9) - (set! (-> self particle v1-84 active) #f) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - :trans (behavior () - (local-vars (f28-0 float)) - (when (-> self left-door) - (let ((f30-0 (ja-aframe-num 0))) - 0.0 - (let ((f30-1 - (cond - ((< f30-0 235.0) - (set! f28-0 1.0) - 0.0 - ) - ((< 320.0 f30-0) - (set! f28-0 1.0) - 0.0 - ) - (else - (if (> (-> self particle-whiteout matrix) 0) - (set-vector! - (sprite-get-user-hvdf (-> self particle-whiteout matrix)) - 2048.0 - 2048.0 - (+ -1024.0 (-> *math-camera* hvdf-off z)) - (-> *math-camera* hvdf-off w) - ) - ) - (set! (-> *part-id-table* 2965 init-specs 8 initial-valuef) (fmax 0.0 (fmin 128.0 (* 0.75 (+ -240.0 f30-0))))) - (spawn (-> self particle-whiteout) *zero-vector*) - (set! f28-0 (fmin 2.0 (fmax 0.0 (* 0.033333335 (+ -235.0 f30-0))))) - f28-0 - ) - ) - ) - ) - (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) 'brightness) - (set! (-> a1-1 param 0) (the-as uint f28-0)) - (set! (-> a1-1 param 1) (the-as uint f30-1)) - (let ((t9-3 send-event-function) - (v1-20 (-> self left-door)) - ) - (t9-3 - (if v1-20 - (-> v1-20 extra process) - ) - a1-1 - ) - ) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'brightness) - (set! (-> a1-2 param 0) (the-as uint f28-0)) - (set! (-> a1-2 param 1) (the-as uint f30-1)) - (let ((t9-4 send-event-function) - (v1-27 (-> self right-door)) - ) - (t9-4 - (if v1-27 - (-> v1-27 extra process) - ) - a1-2 - ) - ) - ) - ) - ) - ) - (when (and *target* (-> self particle 0 active)) - (let ((a1-3 (new 'stack-no-clear 'vector))) - (set! (-> a1-3 quad) (-> *target* draw origin quad)) - (set! (-> a1-3 y) 1970176.0) - (spawn (-> self particle 0 part) a1-3) - ) - ) - (when (and (handle->process (-> self jak-white)) (-> self particle 1 active)) - (let ((a0-17 (handle->process (-> self jak-white)))) - (spawn - (-> self particle 1 part) - (process-drawable-random-point! (the-as process-drawable a0-17) (new 'stack-no-clear 'vector)) - ) - ) - ) - (when (and (handle->process (-> self jak-white)) (-> self particle 2 active)) - (let* ((v1-52 (handle->process (-> self jak-white))) - (a1-11 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable v1-52) node-list data 52))) - ) - (spawn (-> self particle 2 part) a1-11) - ) - ) - (when (and (handle->process (-> self jak-white)) (-> self particle 3 active)) - (let* ((v1-63 (handle->process (-> self jak-white))) - (a1-15 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable v1-63) node-list data 52))) - ) - (spawn (-> self particle 3 part) a1-15) - ) - ) - (if (and (handle->process (-> self robotboss)) (-> self particle 4 active)) - (spawn (-> self particle 4 part) (process-drawable-random-point! - (the-as process-drawable (handle->process (-> self robotboss))) - (new 'stack-no-clear 'vector) - ) - ) - ) - (if (and (handle->process (-> self robotboss)) (-> self particle 5 active)) - (spawn - (-> self particle 5 part) - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 15) - ) - ) - ) - (if (and (handle->process (-> self robotboss)) (-> self particle 6 active)) - (spawn - (-> self particle 6 part) - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 6) - ) - ) - ) - (when (and (handle->process (-> self robotboss)) (-> self particle 7 active)) - (let ((gp-4 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-4 (-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 7)) - (spawn (-> self particle 7 part) gp-4) - ) - ) - (when (-> self particle 8 active) - (let ((gp-5 (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left)))) - (a0-70 (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left)))) - (a1-43 (new 'stack-no-clear 'vector)) - ) - (vector+! a1-43 (-> (the-as final-door gp-5) root trans) (-> (the-as final-door a0-70) root trans)) - (vector-float*! a1-43 a1-43 0.5) - (spawn (-> self particle 8 part) a1-43) - ) - ) - (sage-finalboss-credit-particle) - (let* ((f0-14 (- 0.0 (-> self palette-val))) - (f0-15 (if (< 0.0 f0-14) - (fmin 0.025 f0-14) - (fmax -0.025 f0-14) - ) - ) - ) - (+! (-> self palette-val) f0-15) - ) - (set! (-> *palette-fade-controls* control 2 fade) (-> self palette-val)) - (case (current-status (-> self tasks)) - (((task-status need-introduction)) - (spool-push *art-control* "green-sagecage-outro-beat-boss-a" 0 self -1.0) - ) - (((task-status need-reminder-a)) - (spool-push *art-control* "green-sagecage-outro-beat-boss-b" 0 self -1.0) - ) - (((task-status need-reminder)) - (if (target-has-all-the-cells?) + (start 'play (get-continue-by-name *game-info* "finalboss-start")))) + ((= (current-status (-> self tasks)) (task-status invalid))) + (else (set-blackout-frames (seconds 100)))) + (dotimes (v1-84 9) + (set! (-> self particle v1-84 active) #f)) + ((-> (method-of-type process-taskable play-anim) exit))) + :trans + (behavior () + (local-vars (f28-0 float)) + (when (-> self left-door) + (let ((f30-0 (ja-aframe-num 0))) + 0.0 + (let ((f30-1 (cond + ((< f30-0 235.0) (set! f28-0 1.0) 0.0) + ((< 320.0 f30-0) (set! f28-0 1.0) 0.0) + (else + (if (> (-> self particle-whiteout matrix) 0) + (set-vector! (sprite-get-user-hvdf (-> self particle-whiteout matrix)) + 2048.0 + 2048.0 + (+ -1024.0 (-> *math-camera* hvdf-off z)) + (-> *math-camera* hvdf-off w))) + (set! (-> *part-id-table* 2965 init-specs 8 initial-valuef) (fmax 0.0 (fmin 128.0 (* 0.75 (+ -240.0 f30-0))))) + (spawn (-> self particle-whiteout) *zero-vector*) + (set! f28-0 (fmin 2.0 (fmax 0.0 (* 0.033333335 (+ -235.0 f30-0))))) + f28-0)))) + (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) 'brightness) + (set! (-> a1-1 param 0) (the-as uint f28-0)) + (set! (-> a1-1 param 1) (the-as uint f30-1)) + (let ((t9-3 send-event-function) + (v1-20 (-> self left-door))) + (t9-3 (if v1-20 (-> v1-20 extra process)) a1-1))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'brightness) + (set! (-> a1-2 param 0) (the-as uint f28-0)) + (set! (-> a1-2 param 1) (the-as uint f30-1)) + (let ((t9-4 send-event-function) + (v1-27 (-> self right-door))) + (t9-4 (if v1-27 (-> v1-27 extra process)) a1-2)))))) + (when (and *target* (-> self particle 0 active)) + (let ((a1-3 (new 'stack-no-clear 'vector))) + (set! (-> a1-3 quad) (-> *target* draw origin quad)) + (set! (-> a1-3 y) 1970176.0) + (spawn (-> self particle 0 part) a1-3))) + (when (and (handle->process (-> self jak-white)) (-> self particle 1 active)) + (let ((a0-17 (handle->process (-> self jak-white)))) + (spawn (-> self particle 1 part) + (process-drawable-random-point! (the-as process-drawable a0-17) (new 'stack-no-clear 'vector))))) + (when (and (handle->process (-> self jak-white)) (-> self particle 2 active)) + (let* ((v1-52 (handle->process (-> self jak-white))) + (a1-11 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable v1-52) node-list data 52)))) + (spawn (-> self particle 2 part) a1-11))) + (when (and (handle->process (-> self jak-white)) (-> self particle 3 active)) + (let* ((v1-63 (handle->process (-> self jak-white))) + (a1-15 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable v1-63) node-list data 52)))) + (spawn (-> self particle 3 part) a1-15))) + (if (and (handle->process (-> self robotboss)) (-> self particle 4 active)) + (spawn (-> self particle 4 part) + (process-drawable-random-point! (the-as process-drawable (handle->process (-> self robotboss))) + (new 'stack-no-clear 'vector)))) + (if (and (handle->process (-> self robotboss)) (-> self particle 5 active)) + (spawn (-> self particle 5 part) + (vector<-cspace! (new 'stack-no-clear 'vector) + (-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 15)))) + (if (and (handle->process (-> self robotboss)) (-> self particle 6 active)) + (spawn (-> self particle 6 part) + (vector<-cspace! (new 'stack-no-clear 'vector) + (-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 6)))) + (when (and (handle->process (-> self robotboss)) (-> self particle 7 active)) + (let ((gp-4 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-4 (-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 7)) + (spawn (-> self particle 7 part) gp-4))) + (when (-> self particle 8 active) + (let ((gp-5 (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left)))) + (a0-70 (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left)))) + (a1-43 (new 'stack-no-clear 'vector))) + (vector+! a1-43 (-> (the-as final-door gp-5) root trans) (-> (the-as final-door a0-70) root trans)) + (vector-float*! a1-43 a1-43 0.5) + (spawn (-> self particle 8 part) a1-43))) + (sage-finalboss-credit-particle) + (let* ((f0-14 (- 0.0 (-> self palette-val))) + (f0-15 (if (< 0.0 f0-14) (fmin 0.025 f0-14) (fmax -0.025 f0-14)))) + (+! (-> self palette-val) f0-15)) + (set! (-> *palette-fade-controls* control 2 fade) (-> self palette-val)) + (case (current-status (-> self tasks)) + (((task-status need-introduction)) (spool-push *art-control* "green-sagecage-outro-beat-boss-a" 0 self -1.0)) + (((task-status need-reminder-a)) (spool-push *art-control* "green-sagecage-outro-beat-boss-b" 0 self -1.0)) + (((task-status need-reminder)) + (if (target-has-all-the-cells?) (spool-push *art-control* "green-sagecage-outro-beat-boss-enough-cells" 0 self -1.0) - (spool-push *art-control* "green-sagecage-outro-beat-boss-need-cells" 0 self -1.0) - ) - ) - (((task-status need-reward-speech)) - (spool-push *art-control* "green-sagecage-outro-big-finish" 0 self -1.0) - ) - ) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (spool-push *art-control* "green-sagecage-outro-beat-boss-need-cells" 0 self -1.0))) + (((task-status need-reward-speech)) (spool-push *art-control* "green-sagecage-outro-big-finish" 0 self -1.0))) + ((-> (method-of-type process-taskable play-anim) trans)))) (defstate sage-finalboss-credits (sage-finalboss) - :exit (behavior () - (when (= (current-status (-> self tasks)) (task-status invalid)) + :exit + (behavior () + (when (= (current-status (-> self tasks)) (task-status invalid)) + (set-blackout-frames 0) + (initialize! *game-info* 'game (the-as game-save #f) "title-start"))) + :code + (behavior () + (local-vars (s5-0 symbol)) + (set! (-> self credits-played) #t) (set-blackout-frames 0) - (initialize! *game-info* 'game (the-as game-save #f) "title-start") - ) - ) - :code (behavior () - (local-vars (s5-0 symbol)) - (set! (-> self credits-played) #t) - (set-blackout-frames 0) - (set-blackout-frames (seconds 0.05)) - (remove-setting! 'sfx-volume) - (remove-setting! 'ambient-volume) - (set-setting! 'allow-pause #f 0.0 0) - (set-setting! 'allow-progress #f 0.0 0) - (set-setting! 'music 'ogreboss 0.0 0) - (set! (-> self state-time) (-> *display* game-frame-counter)) - (logior! (-> self draw status) (draw-status hidden)) - (let ((gp-0 (-> self mask))) - (load-state-want-display-level 'finalboss 'special) - (logclear! (-> self mask) (process-mask pause progress)) - (add-setting! 'process-mask 'set 0.0 (process-mask pause progress target)) + (set-blackout-frames (seconds 0.05)) + (remove-setting! 'sfx-volume) + (remove-setting! 'ambient-volume) + (set-setting! 'allow-pause #f 0.0 0) + (set-setting! 'allow-progress #f 0.0 0) + (set-setting! 'music 'ogreboss 0.0 0) + (set! (-> self state-time) (-> *display* game-frame-counter)) + (logior! (-> self draw status) (draw-status hidden)) + (let ((gp-0 (-> self mask))) + (load-state-want-display-level 'finalboss 'special) + (logclear! (-> self mask) (process-mask pause progress)) + (add-setting! 'process-mask 'set 0.0 (process-mask pause progress target)) + (apply-settings *setting-control*) + (let ((f30-0 0.0) + (f28-0 0.5)) + (until s5-0 + (hide-hud-quick) + (set! (-> self credit-fade) 1.0) + (sage-finalboss-credit-particle) + (set! s5-0 (draw-end-credits (the int f30-0))) + (if (and *cheat-mode* (cpad-pressed? 0 triangle)) (set! s5-0 #t)) + (cond + ((paused?)) + ((and (< 1300.0 f30-0) (cpad-hold? 0 circle x)) + (set! f28-0 (seek f28-0 16.0 (* 4.0 (seconds-per-frame)))) + (+! f30-0 (* f28-0 (-> *display* time-adjust-ratio)))) + (else (set! f28-0 (seek f28-0 0.5 (* 16.0 (seconds-per-frame)))) (+! f30-0 (* f28-0 (-> *display* time-adjust-ratio))))) + (suspend))) + (set! (-> self mask) gp-0)) + (load-state-want-display-level 'finalboss 'display) + (remove-setting! 'allow-pause) + (remove-setting! 'allow-progress) + (remove-setting! 'process-mask) + (remove-setting! 'music) (apply-settings *setting-control*) - (let ((f30-0 0.0) - (f28-0 0.5) - ) - (until s5-0 - (hide-hud-quick) - (set! (-> self credit-fade) 1.0) - (sage-finalboss-credit-particle) - (set! s5-0 (draw-end-credits (the int f30-0))) - (if (and *cheat-mode* (cpad-pressed? 0 triangle)) - (set! s5-0 #t) - ) - (cond - ((paused?) - ) - ((and (< 1300.0 f30-0) (cpad-hold? 0 circle x)) - (set! f28-0 (seek f28-0 16.0 (* 4.0 (seconds-per-frame)))) - (+! f30-0 (* f28-0 (-> *display* time-adjust-ratio))) - ) - (else - (set! f28-0 (seek f28-0 0.5 (* 16.0 (seconds-per-frame)))) - (+! f30-0 (* f28-0 (-> *display* time-adjust-ratio))) - ) - ) - (suspend) - ) - ) - (set! (-> self mask) gp-0) - ) - (load-state-want-display-level 'finalboss 'display) - (remove-setting! 'allow-pause) - (remove-setting! 'allow-progress) - (remove-setting! 'process-mask) - (remove-setting! 'music) - (apply-settings *setting-control*) - (set-blackout-frames (seconds 0.05)) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 0.05)) - (suspend) - ) - ) - (go-virtual hidden) - ) - ) + (set-blackout-frames (seconds 0.05)) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 0.05)) (suspend))) + (go-virtual hidden))) (defmethod should-display? ((this sage-finalboss)) - #f - ) + #f) (defbehavior sage-finalboss-extra-trans sage-finalboss () (case (current-status (-> self tasks)) - (((task-status need-reminder-a) (task-status need-reminder)) - (send-event self 'play-anim) - ) - ) - (none) - ) + (((task-status need-reminder-a) (task-status need-reminder)) (send-event self 'play-anim))) + (none)) (defbehavior sage-finalboss-extra-enter sage-finalboss () (cond - ((-> self kick-the-credits) - (set! (-> self kick-the-credits) #f) - (go sage-finalboss-credits) - ) + ((-> self kick-the-credits) (set! (-> self kick-the-credits) #f) (go sage-finalboss-credits)) ((-> self kick-in-the-door) (set! (-> self kick-in-the-door) #f) (entity-birth-no-kill (entity-by-type power-right)) (entity-birth-no-kill (entity-by-type power-left)) - (send-event - *target* - 'change-mode - 'final-door - (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-right))) - (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left))) - ) - ) - ) - (none) - ) + (send-event *target* + 'change-mode + 'final-door + (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-right))) + (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left)))))) + (none)) (defstate hidden (sage-finalboss) :virtual #t - :enter (behavior () - (sage-finalboss-extra-enter) - ((-> (method-of-type process-taskable hidden) enter)) - (remove-setting! 'allow-progress) - ) - :trans (behavior () - (sage-finalboss-extra-trans) - ((-> (method-of-type process-taskable hidden) trans)) - ) - ) + :enter + (behavior () + (sage-finalboss-extra-enter) + ((-> (method-of-type process-taskable hidden) enter)) + (remove-setting! 'allow-progress)) + :trans + (behavior () + (sage-finalboss-extra-trans) + ((-> (method-of-type process-taskable hidden) trans)))) (defstate idle (sage-finalboss) :virtual #t - :enter (behavior () - (sage-finalboss-extra-enter) - ((-> (method-of-type process-taskable idle) enter)) - ) - :trans (behavior () - (sage-finalboss-extra-trans) - ((-> (method-of-type process-taskable idle) trans)) - ) - ) + :enter + (behavior () + (sage-finalboss-extra-enter) + ((-> (method-of-type process-taskable idle) enter))) + :trans + (behavior () + (sage-finalboss-extra-trans) + ((-> (method-of-type process-taskable idle) trans)))) (defmethod init-from-entity! ((this sage-finalboss) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sage-finalboss-sg* 3 40 (new 'static 'vector :w 4096.0) 5) @@ -1013,13 +697,8 @@ (set! (-> this particle 6 part) (create-launch-control (-> *part-group-id-table* 704) this)) (set! (-> this particle 8 part) (create-launch-control (-> *part-group-id-table* 698) this)) (dotimes (v1-37 9) - (set! (-> this particle v1-37 active) #f) - ) + (set! (-> this particle v1-37 active) #f)) (set! (-> this palette-val) 0.0) (+! (-> this root trans y) 2048.0) - (if (not (should-display? this)) - (go (method-of-object this hidden)) - (go (method-of-object this idle)) - ) - (none) - ) + (if (not (should-display? this)) (go (method-of-object this hidden)) (go (method-of-object this idle))) + (none)) diff --git a/goal_src/jak1/levels/firecanyon/assistant-firecanyon.gc b/goal_src/jak1/levels/firecanyon/assistant-firecanyon.gc index 716cce3fec..771c2a44be 100644 --- a/goal_src/jak1/levels/firecanyon/assistant-firecanyon.gc +++ b/goal_src/jak1/levels/firecanyon/assistant-firecanyon.gc @@ -1,261 +1,175 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: assistant-firecanyon.gc -;; name in dgo: assistant-firecanyon -;; dgos: L1, FIC - ;; DECOMP BEGINS -(deftype assistant-firecanyon (process-taskable) - () - ) - +(deftype assistant-firecanyon (process-taskable) ()) -(defskelgroup *assistant-firecanyon-sg* assistant-firecanyon assistant-firecanyon-lod0-jg assistant-firecanyon-idle-twist-ja - ((assistant-firecanyon-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow assistant-firecanyon-shadow-mg - ) +(defskelgroup *assistant-firecanyon-sg* + assistant-firecanyon + assistant-firecanyon-lod0-jg + assistant-firecanyon-idle-twist-ja + ((assistant-firecanyon-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow assistant-firecanyon-shadow-mg) (defmethod play-anim! ((this assistant-firecanyon) (arg0 symbol)) (case (current-status (-> this tasks)) (((task-status need-reward-speech)) - (if arg0 - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim - :name "assistant-firecanyon-resolution" - :index 13 - :parts 11 - :command-list '((0 want-levels village1 firecanyon) - (151 joint "cameraB") - (346 joint "camera") - (346 shadow self #f) - (461 joint "cameraB") - (546 joint "camera") - (636 joint "cameraB") - (695 alive "balloon-12") - (696 joint "camera") - (821 alive "balloon-16") - (822 joint "cameraB") - (962 joint "camera") - (1268 shadow self #t) - ) - ) - ) + (if arg0 (close-current! (-> this tasks))) + (new 'static + 'spool-anim + :name "assistant-firecanyon-resolution" + :index 13 + :parts 11 + :command-list + '((0 want-levels village1 firecanyon) + (151 joint "cameraB") + (346 joint "camera") + (346 shadow self #f) + (461 joint "cameraB") + (546 joint "camera") + (636 joint "cameraB") + (695 alive "balloon-12") + (696 joint "camera") + (821 alive "balloon-16") + (822 joint "cameraB") + (962 joint "camera") + (1268 shadow self #t)))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this assistant-firecanyon)) (if (= (current-status (-> this tasks)) (task-status invalid)) - (-> this draw art-group data 8) - (-> this draw art-group data 3) - ) - ) + (-> this draw art-group data 8) + (-> this draw art-group data 3))) (defstate hidden (assistant-firecanyon) :virtual #t - :trans (behavior () - ((-> (method-of-type process-taskable hidden) trans)) - (when (and (cond - ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - #t - ) - (else - (set-time! (-> self state-time)) - #f - ) - ) - (and (not (closed? (-> self tasks) (game-task firecanyon-assistant) (task-status need-reward-speech))) - (not (movie?)) - (not (level-hint-displayed?)) - (not (and *cheat-mode* (cpad-hold? 0 l3))) - (not (time-elapsed? (-> self state-time) (seconds 10))) - ) - ) - (hide-hud) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (seen-text? *game-info* (text-id firecanyon-need-cells)) - (hud-hidden?) - (can-grab-display? self) - (not (-> *setting-control* current hint)) - ) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-26 gp-0)) - (set! (-> v1-26 width) (the float 448)) - ) - (let ((v1-27 gp-0)) - (set! (-> v1-27 height) (the float 80)) - ) - (let ((v1-28 gp-0)) - (set! (-> v1-28 scale) 0.8) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) - (print-game-text (lookup-text! *common-text* (text-id firecanyon-need-cells-text) #f) gp-0 #f 128 22) - ) - ) - (level-hint-spawn - (text-id firecanyon-need-cells) - "asstvb09" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) + :trans + (behavior () + ((-> (method-of-type process-taskable hidden) trans)) + (when (and (cond + ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) #t) + (else (set-time! (-> self state-time)) #f)) + (and (not (closed? (-> self tasks) (game-task firecanyon-assistant) (task-status need-reward-speech))) + (not (movie?)) + (not (level-hint-displayed?)) + (not (and *cheat-mode* (cpad-hold? 0 l3))) + (not (time-elapsed? (-> self state-time) (seconds 10))))) + (hide-hud) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (when (and (seen-text? *game-info* (text-id firecanyon-need-cells)) + (hud-hidden?) + (can-grab-display? self) + (not (-> *setting-control* current hint))) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-26 gp-0)) (set! (-> v1-26 width) (the float 448))) + (let ((v1-27 gp-0)) (set! (-> v1-27 height) (the float 80))) + (let ((v1-28 gp-0)) (set! (-> v1-28 scale) 0.8)) + (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) + (print-game-text (lookup-text! *common-text* (text-id firecanyon-need-cells-text) #f) gp-0 #f 128 22))) + (level-hint-spawn (text-id firecanyon-need-cells) "asstvb09" (the-as entity #f) *entity-pool* (game-task none))))) (defstate idle (assistant-firecanyon) :virtual #t - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (let ((gp-0 #t)) - (cond - ((= (current-status (-> self tasks)) (task-status invalid)) - (when (< (rand-float-gen) 0.5) - (ja :group! assistant-firecanyon-idle-a-ja) - (let* ((f30-0 2.0) - (v1-16 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-17 (the-as number (logior #x3f800000 v1-16))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-17)))) 3)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (set! gp-0 #f) - ) - (when (or gp-0 (< (rand-float-gen) 0.5)) - (ja-no-eval :group! assistant-firecanyon-idle-to-b-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! assistant-firecanyon-idle-b-ja) - (let* ((f30-1 2.0) - (v1-83 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-84 (the-as number (logior #x3f800000 v1-83))) - ) - (countdown (gp-2 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-84)))) 3)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! assistant-firecanyon-idle-to-a-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (when (< (rand-float-gen) 0.25) - (ja :group! assistant-firecanyon-idle-wipe-brow-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (else - (when (< (rand-float-gen) 0.8) - (ja :group! assistant-firecanyon-idle-twist-ja) - (let* ((f30-2 4.0) - (v1-184 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-185 (the-as number (logior #x3f800000 v1-184))) - ) - (countdown (gp-3 (+ (the int (* f30-2 (+ -1.0 (the-as float v1-185)))) 8)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (set! gp-0 #f) - ) - (when (or gp-0 (< (rand-float-gen) 0.5)) - (ja-no-eval :group! assistant-firecanyon-idle-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! assistant-firecanyon-idle-examine-ja) - (let* ((f30-3 2.0) - (v1-251 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-252 (the-as number (logior #x3f800000 v1-251))) - ) - (countdown (gp-4 (+ (the int (* f30-3 (+ -1.0 (the-as float v1-252)))) 3)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! assistant-firecanyon-idle-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (when (< (rand-float-gen) 0.5) - (ja :group! assistant-firecanyon-idle-fiddle-ja) - (let* ((f30-4 2.0) - (v1-316 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-317 (the-as number (logior #x3f800000 v1-316))) - ) - (countdown (gp-5 (+ (the int (* f30-4 (+ -1.0 (the-as float v1-317)))) 3)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop + (let ((gp-0 #t)) + (cond + ((= (current-status (-> self tasks)) (task-status invalid)) + (when (< (rand-float-gen) 0.5) + (ja :group! assistant-firecanyon-idle-a-ja) + (let* ((f30-0 2.0) + (v1-16 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-17 (the-as number (logior #x3f800000 v1-16)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-17)))) 3)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (set! gp-0 #f)) + (when (or gp-0 (< (rand-float-gen) 0.5)) + (ja-no-eval :group! assistant-firecanyon-idle-to-b-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja :group! assistant-firecanyon-idle-b-ja) + (let* ((f30-1 2.0) + (v1-83 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-84 (the-as number (logior #x3f800000 v1-83)))) + (countdown (gp-2 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-84)))) 3)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (ja-no-eval :group! assistant-firecanyon-idle-to-a-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (when (< (rand-float-gen) 0.25) + (ja :group! assistant-firecanyon-idle-wipe-brow-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (else + (when (< (rand-float-gen) 0.8) + (ja :group! assistant-firecanyon-idle-twist-ja) + (let* ((f30-2 4.0) + (v1-184 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-185 (the-as number (logior #x3f800000 v1-184)))) + (countdown (gp-3 (+ (the int (* f30-2 (+ -1.0 (the-as float v1-185)))) 8)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (set! gp-0 #f)) + (when (or gp-0 (< (rand-float-gen) 0.5)) + (ja-no-eval :group! assistant-firecanyon-idle-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja :group! assistant-firecanyon-idle-examine-ja) + (let* ((f30-3 2.0) + (v1-251 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-252 (the-as number (logior #x3f800000 v1-251)))) + (countdown (gp-4 (+ (the int (* f30-3 (+ -1.0 (the-as float v1-252)))) 3)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (ja-no-eval :group! assistant-firecanyon-idle-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (when (< (rand-float-gen) 0.5) + (ja :group! assistant-firecanyon-idle-fiddle-ja) + (let* ((f30-4 2.0) + (v1-316 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-317 (the-as number (logior #x3f800000 v1-316)))) + (countdown (gp-5 (+ (the int (* f30-4 (+ -1.0 (the-as float v1-317)))) 3)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))))))) (defmethod should-display? ((this assistant-firecanyon)) (first-any (-> this tasks) #t) - (= (current-status (-> this tasks)) (task-status need-reward-speech)) - ) + (= (current-status (-> this tasks)) (task-status need-reward-speech))) (defmethod init-from-entity! ((this assistant-firecanyon) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-firecanyon-sg* 3 29 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task firecanyon-assistant))) (first-any (-> this tasks) #t) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/firecanyon/firecanyon-obs.gc b/goal_src/jak1/levels/firecanyon/firecanyon-obs.gc index 0076ec9807..30eb17de89 100644 --- a/goal_src/jak1/levels/firecanyon/firecanyon-obs.gc +++ b/goal_src/jak1/levels/firecanyon/firecanyon-obs.gc @@ -1,137 +1,115 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "OGR.DGO") - (require "engine/common-obs/generic-obs.gc") -;; name: firecanyon-obs.gc -;; name in dgo: firecanyon-obs -;; dgos: L1, FIC, OGR - - ;; DECOMP BEGINS (deftype balloon (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:states - balloon-idle - balloon-popping - ) - ) - + balloon-idle + balloon-popping)) (defpartgroup group-balloon :id 227 :duration (seconds 0.017) :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 1006) (sp-item 1007) (sp-item 1008)) - ) + :parts ((sp-item 1006) (sp-item 1007) (sp-item 1008))) (defpart 1007 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters -1) (meters 2)) - (:y (meters 1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 255.0) - (:a 32.0 32.0) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.42666668) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters -1) (meters 2)) + (:y (meters 1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 255.0) + (:a 32.0 32.0) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.42666668) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defpart 1008 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 2)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 255.0) - (:a 32.0 32.0) - (:vel-y (meters 0.04) (meters 0.08)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.85333335) - (:friction 0.98) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 2)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 255.0) + (:a 32.0 32.0) + (:vel-y (meters 0.04) (meters 0.08)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.85333335) + (:friction 0.98) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1.5)))) (defpart 1006 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 100.0) - (:b 80.0) - (:a 96.0) - (:fade-a -0.08) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 100.0) + (:b 80.0) + (:a 96.0) + (:fade-a -0.08) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defstate balloon-popping (balloon) - :code (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (sound-play "cool-balloon") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 227) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (suspend) - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (sound-play "cool-balloon") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 227) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (suspend) + (cleanup-for-death self) + (deactivate self))) (defstate balloon-idle (balloon) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (send-event proc 'heat -10.0) - (go balloon-popping) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (send-event proc 'heat -10.0) (go balloon-popping)))) + :code + (behavior () + (transform-post) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this balloon) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -140,159 +118,100 @@ (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *balloon-sg* '()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 227) this)) (go balloon-idle) - (none) - ) + (none)) (deftype spike (process-drawable) - ((root collide-shape :override) - (num-alts int32) - ) + ((root collide-shape :override) + (num-alts int32)) (:states - spike-down - spike-idle - spike-up - ) - ) - - -(defskelgroup *spike-sg* spike spike-lod0-jg spike-idle-ja - ((spike-lod0-mg (meters 20)) (spike-lod1-mg (meters 999999))) - :bounds (static-spherem 0 8 0 10.2) - :longest-edge (meters 5) - ) + spike-down + spike-idle + spike-up)) + +(defskelgroup *spike-sg* + spike + spike-lod0-jg + spike-idle-ja + ((spike-lod0-mg (meters 20)) (spike-lod1-mg (meters 999999))) + :bounds (static-spherem 0 8 0 10.2) + :longest-edge (meters 5)) (defstate spike-up (spike) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('go-spike-up) - #t - ) - ) - ) - :trans (behavior () - (when (nonzero? (-> self num-alts)) - (let ((s5-0 (/ (-> self num-alts) 2)) - (gp-0 #t) - ) - (while (< s5-0 (+ (-> self num-alts) -1)) - (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) - (if (and v1-2 (-> v1-2 extra process) (not (send-event - (if v1-2 - (-> v1-2 extra process) - ) - 'go-spike-up - ) - ) - ) - (set! gp-0 #f) - ) - ) - (+! s5-0 1) - ) - (when gp-0 - (set! (-> self num-alts) 0) - 0 - ) - ) - ) - ) - :code (behavior () - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (transform-post) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('go-spike-up) #t))) + :trans + (behavior () + (when (nonzero? (-> self num-alts)) + (let ((s5-0 (/ (-> self num-alts) 2)) + (gp-0 #t)) + (while (< s5-0 (+ (-> self num-alts) -1)) + (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) + (if (and v1-2 (-> v1-2 extra process) (not (send-event (if v1-2 (-> v1-2 extra process)) 'go-spike-up))) (set! gp-0 #f))) + (+! s5-0 1)) + (when gp-0 + (set! (-> self num-alts) 0) + 0)))) + :code + (behavior () + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (transform-post) + (suspend) + (ja :num! (seek!))) + (loop + (suspend)))) (defstate spike-down (spike) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('go-spike-up) - (go spike-up) - #t - ) - ) - ) - :trans (behavior () - (when (nonzero? (-> self num-alts)) - (let ((s5-0 0) - (gp-0 #t) - ) - (while (< s5-0 (/ (-> self num-alts) 2)) - (let ((v1-1 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) - (if (and v1-1 (-> v1-1 extra process) (not (send-event - (if v1-1 - (-> v1-1 extra process) - ) - 'go-spike-up - ) - ) - ) - (set! gp-0 #f) - ) - ) - (+! s5-0 1) - ) - (when gp-0 - (set! (-> self num-alts) 0) - 0 - ) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('go-spike-up) (go spike-up) #t))) + :trans + (behavior () + (when (nonzero? (-> self num-alts)) + (let ((s5-0 0) + (gp-0 #t)) + (while (< s5-0 (/ (-> self num-alts) 2)) + (let ((v1-1 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) + (if (and v1-1 (-> v1-1 extra process) (not (send-event (if v1-1 (-> v1-1 extra process)) 'go-spike-up))) (set! gp-0 #f))) + (+! s5-0 1)) + (when gp-0 + (set! (-> self num-alts) 0) + 0)))) + :code + (behavior () + (transform-post) + (loop + (suspend)))) (defstate spike-idle (spike) - :trans (behavior () - (when (and *target* - (= (send-event *target* 'query 'mode) 'racer) - (< (vector-vector-distance (-> self root trans) (target-pos 0)) 225280.0) - ) - (sound-play "magma-rock") - (let ((v1-8 (entity-actor-count (-> self entity) 'alt-actor))) - 0 - (cond - ((>= 1 v1-8) - (go spike-up) - ) - ((< (rand-float-gen) 0.5) - (go spike-down) - ) - (else - (go spike-up) - ) - ) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (suspend) - ) - ) - ) + :trans + (behavior () + (when (and *target* + (= (send-event *target* 'query 'mode) 'racer) + (< (vector-vector-distance (-> self root trans) (target-pos 0)) 225280.0)) + (sound-play "magma-rock") + (let ((v1-8 (entity-actor-count (-> self entity) 'alt-actor))) + 0 + (cond + ((>= 1 v1-8) (go spike-up)) + ((< (rand-float-gen) 0.5) (go spike-down)) + (else (go spike-up)))))) + :code + (behavior () + (transform-post) + (loop + (suspend)))) (defmethod init-from-entity! ((this spike) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -311,8 +230,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 16384.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -320,8 +238,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 16384.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -329,8 +246,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 32768.0 0.0 16384.0) - (append-prim s3-0 s2-2) - ) + (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) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -338,265 +254,243 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 45056.0 0.0 16384.0) - (append-prim s3-0 s2-3) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *spike-sg* '()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (set! (-> this num-alts) (entity-actor-count (-> this entity) 'alt-actor)) - (if (zero? (-> this num-alts)) - (go spike-down) - (go spike-idle) - ) - (none) - ) + (if (zero? (-> this num-alts)) (go spike-down) (go spike-idle)) + (none)) -(defskelgroup *crate-darkeco-cluster-sg* crate-darkeco-cluster crate-darkeco-cluster-lod0-jg crate-darkeco-cluster-idle-ja - ((crate-darkeco-cluster-lod0-mg (meters 20)) (crate-darkeco-cluster-lod1-mg (meters 999999))) - :bounds (static-spherem 0 1.6 0 3.3) - ) +(defskelgroup *crate-darkeco-cluster-sg* + crate-darkeco-cluster + crate-darkeco-cluster-lod0-jg + crate-darkeco-cluster-idle-ja + ((crate-darkeco-cluster-lod0-mg (meters 20)) (crate-darkeco-cluster-lod1-mg (meters 999999))) + :bounds (static-spherem 0 1.6 0 3.3)) (deftype crate-darkeco-cluster (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:state-methods - idle - die - ) - ) - + idle + die)) (defpartgroup group-dark-cluster-explosion :id 228 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2100 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2101 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2102 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2103 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2104 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - ) - ) + :parts + ((sp-item 2100 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2101 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2102 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2103 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2104 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)))) (defpart 2104 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:x (meters -2) (meters 4)) - (:y (meters 1) (meters 2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:accel-y (meters -0.00033333333)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:x (meters -2) (meters 4)) + (:y (meters 1) (meters 2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:accel-y (meters -0.00033333333)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2101 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 32.0) - (:b 128.0 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2105) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 32.0) + (:b 128.0 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2105) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2105 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2103 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 128.0 128.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 128.0 128.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2100 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 0.0 32.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 0.0 32.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2102 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4)))) (defstate die (crate-darkeco-cluster) :virtual #t - :code (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (sound-play "dcrate-break") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 228) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (suspend) - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (sound-play "dcrate-break") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 228) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (suspend) + (cleanup-for-death self) + (deactivate self))) (defstate idle (crate-darkeco-cluster) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack 'touch) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'darkeco)))) - (go-virtual die) - ) - ) - ) - :code (behavior () - (transform-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack 'touch) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'darkeco)))) (go-virtual die)))) + :code + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) (defmethod init-from-entity! ((this crate-darkeco-cluster) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -607,14 +501,11 @@ (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 6553.6 0.0 13516.8) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *crate-darkeco-cluster-sg* '()) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/firecanyon/firecanyon-part.gc b/goal_src/jak1/levels/firecanyon/firecanyon-part.gc index fd1c49ae0a..2d8f8166bd 100644 --- a/goal_src/jak1/levels/firecanyon/firecanyon-part.gc +++ b/goal_src/jak1/levels/firecanyon/firecanyon-part.gc @@ -1,2941 +1,3095 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: firecanyon-part.gc -;; name in dgo: firecanyon-part -;; dgos: L1, FIC - ;; DECOMP BEGINS -(deftype firecanyon-part (part-spawner) - () - ) - +(deftype firecanyon-part (part-spawner) ()) (defpartgroup group-firecanyon-lava-1 :id 229 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1011 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1012 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1013 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1014 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1014 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1014 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1011 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1012 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1013 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1014 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1014 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1014 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1012 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -9) (meters 19)) - (:y (meters 0.5)) - (:z (meters -7) (meters 6)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -165)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -9) (meters 19)) + (:y (meters 0.5)) + (:z (meters -7) (meters 6)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -165)))) (defpart 1014 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -8) (meters 17)) - (:y (meters 0.5)) - (:z (meters -6) (meters 4)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -165)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -8) (meters 17)) + (:y (meters 0.5)) + (:z (meters -6) (meters 4)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -165)))) (defpart 1013 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.03 0.03) - (:x (meters -8) (meters 17)) - (:y (meters 0.5)) - (:z (meters -6) (meters 4)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -165)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.03 0.03) + (:x (meters -8) (meters 17)) + (:y (meters 0.5)) + (:z (meters -6) (meters 4)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -165)))) (defpart 1011 - :init-specs ((:num 0.5) - (:x (meters -9) (meters 19)) - (:y (meters 0.5)) - (:z (meters -7) (meters 6)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -165)) - ) - ) + :init-specs + ((:num 0.5) + (:x (meters -9) (meters 19)) + (:y (meters 0.5)) + (:z (meters -7) (meters 6)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -165)))) (defpartgroup group-firecanyon-lava-2 :id 230 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1017 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1018 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1019 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1020 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1020 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1020 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1017 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1018 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1019 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1020 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1020 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1020 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1018 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -10) (meters 19)) - (:y (meters 0.5)) - (:z (meters -5) (meters 12)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -10) (meters 19)) + (:y (meters 0.5)) + (:z (meters -5) (meters 12)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -90)))) (defpart 1020 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -9) (meters 17)) - (:y (meters 0.5)) - (:z (meters -4) (meters 10)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -9) (meters 17)) + (:y (meters 0.5)) + (:z (meters -4) (meters 10)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -90)))) (defpart 1019 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -9) (meters 17)) - (:y (meters 0.5)) - (:z (meters -4) (meters 10)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -9) (meters 17)) + (:y (meters 0.5)) + (:z (meters -4) (meters 10)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -90)))) (defpart 1017 - :init-specs ((:num 1.0) - (:x (meters -10) (meters 19)) - (:y (meters 0.5)) - (:z (meters -5) (meters 12)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters -10) (meters 19)) + (:y (meters 0.5)) + (:z (meters -5) (meters 12)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -90)))) (defpartgroup group-firecanyon-lava-3 :id 231 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1021 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1022 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1023 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1024 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1024 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1024 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1021 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1022 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1023 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1024 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1024 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1024 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1022 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -10.5) (meters 20)) - (:y (meters 0.5)) - (:z (meters -20) (meters 36)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -10.5) (meters 20)) + (:y (meters 0.5)) + (:z (meters -20) (meters 36)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -120)))) (defpart 1024 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.5) - (:x (meters -9.5) (meters 18)) - (:y (meters 0.5)) - (:z (meters -19) (meters 34)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -1.1333333) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.5) + (:x (meters -9.5) (meters 18)) + (:y (meters 0.5)) + (:z (meters -19) (meters 34)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -1.1333333) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -120)))) (defpart 1023 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -9.5) (meters 18)) - (:y (meters 0.5)) - (:z (meters -19) (meters 34)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -9.5) (meters 18)) + (:y (meters 0.5)) + (:z (meters -19) (meters 34)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -120)))) (defpart 1021 - :init-specs ((:num 1.6) - (:x (meters -10.5) (meters 20)) - (:y (meters 0.5)) - (:z (meters -20) (meters 36)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -120)) - ) - ) + :init-specs + ((:num 1.6) + (:x (meters -10.5) (meters 20)) + (:y (meters 0.5)) + (:z (meters -20) (meters 36)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -120)))) (defpartgroup group-firecanyon-lava-5 :id 232 :bounds (static-bspherem -2 0 -2 14) - :parts ((sp-item 1025 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1026 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1027 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1028 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1028 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1028 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1025 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1026 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1027 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1028 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1028 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1028 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1028 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -6) (meters 13)) - (:y (meters 0)) - (:z (meters -11) (meters 17)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -3.4666667) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -6) (meters 13)) + (:y (meters 0)) + (:z (meters -11) (meters 17)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -3.4666667) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -45)))) (defpart 1010 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 6.0) - (:scale-x (meters 0.2) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:vel-y (meters 0.006666667) (meters 0.02)) - (:scalevel-x (meters -0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 1.2)) - (:flags (bit0 bit3)) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 6.0) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:vel-y (meters 0.006666667) (meters 0.02)) + (:scalevel-x (meters -0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 1.2)) + (:flags (bit0 bit3)) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1027 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -6) (meters 13)) - (:y (meters 0)) - (:z (meters -11) (meters 17)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -6) (meters 13)) + (:y (meters 0)) + (:z (meters -11) (meters 17)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -45)))) (defpart 1009 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:scalevel-x (meters -0.0029166667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.1) (seconds 0.597)) - (:flags (bit0 bit3)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:scalevel-x (meters -0.0029166667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.1) (seconds 0.597)) + (:flags (bit0 bit3)) + (:rotate-y (degrees 45)))) (defpart 1025 - :init-specs ((:num 1.5) - (:x (meters -8) (meters 16)) - (:y (meters 0.5)) - (:z (meters -13) (meters 20)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:num 1.5) + (:x (meters -8) (meters 16)) + (:y (meters 0.5)) + (:z (meters -13) (meters 20)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -45)))) (defpart 1016 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 1026 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -8) (meters 16)) - (:y (meters -0.5)) - (:z (meters -13) (meters 20)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -8) (meters 16)) + (:y (meters -0.5)) + (:z (meters -13) (meters 20)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -45)))) (defpart 1015 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 1029)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 1029))) (defpart 1029 - :init-specs ((:fade-r -0.8) (:fade-b 0.8) (:next-time (seconds 0.5)) (:next-launcher 1030)) - ) + :init-specs ((:fade-r -0.8) (:fade-b 0.8) (:next-time (seconds 0.5)) (:next-launcher 1030))) (defpart 1030 - :init-specs ((:fade-r 0.0) (:fade-b 0.0) (:fade-a -0.14222223)) - ) + :init-specs ((:fade-r 0.0) (:fade-b 0.0) (:fade-a -0.14222223))) (defpartgroup group-firecanyon-lava-6 :id 233 :bounds (static-bspherem 2 0 2 14) - :parts ((sp-item 1031 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1032 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1033 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1034 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1034 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1034 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1031 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1032 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1033 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1034 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1034 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1034 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1034 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -5) (meters 17)) - (:y (meters 0.5)) - (:z (meters -5.5) (meters 13)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -3.4666667) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -5) (meters 17)) + (:y (meters 0.5)) + (:z (meters -5.5) (meters 13)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -3.4666667) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -110)))) (defpart 1032 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -6) (meters 19)) - (:y (meters 0.5)) - (:z (meters -6.5) (meters 15)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -6) (meters 19)) + (:y (meters 0.5)) + (:z (meters -6.5) (meters 15)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -110)))) (defpart 1033 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -5) (meters 17)) - (:y (meters 0.5)) - (:z (meters -5.5) (meters 13)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -5) (meters 17)) + (:y (meters 0.5)) + (:z (meters -5.5) (meters 13)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -110)))) (defpart 1031 - :init-specs ((:num 1.3) - (:x (meters -6) (meters 19)) - (:y (meters 0.5)) - (:z (meters -6.5) (meters 15)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:num 1.3) + (:x (meters -6) (meters 19)) + (:y (meters 0.5)) + (:z (meters -6.5) (meters 15)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -110)))) (defpartgroup group-firecanyon-lava-7 :id 234 :bounds (static-bspherem 0 0 0 14) - :parts ((sp-item 1035 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1036 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1037 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1038 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1038 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1038 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1035 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1036 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1037 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1038 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1038 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1038 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1036 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -6.5) (meters 12)) - (:y (meters 0.5)) - (:z (meters -1.5) (meters 15)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -170)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -6.5) (meters 12)) + (:y (meters 0.5)) + (:z (meters -1.5) (meters 15)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -170)))) (defpart 1038 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -5.5) (meters 10)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 13)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -3.4666667) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -170)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -5.5) (meters 10)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 13)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -3.4666667) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -170)))) (defpart 1037 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -5.5) (meters 10)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 13)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -170)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -5.5) (meters 10)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 13)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -170)))) (defpart 1035 - :init-specs ((:num 1.1) - (:x (meters -6.5) (meters 12)) - (:y (meters 0.5)) - (:z (meters -1.5) (meters 15)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -170)) - ) - ) + :init-specs + ((:num 1.1) + (:x (meters -6.5) (meters 12)) + (:y (meters 0.5)) + (:z (meters -1.5) (meters 15)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -170)))) (defpartgroup group-firecanyon-lava-8 :id 235 :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1039 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1040 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1041 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1042 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1042 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1042 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1039 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1040 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1041 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1042 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1042 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1042 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1040 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -9.5) (meters 14)) - (:y (meters 0.5)) - (:z (meters -13) (meters 28)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -9.5) (meters 14)) + (:y (meters 0.5)) + (:z (meters -13) (meters 28)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -90)))) (defpart 1042 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -8.5) (meters 12)) - (:y (meters 0.5)) - (:z (meters -12) (meters 26)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -3.4666667) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -8.5) (meters 12)) + (:y (meters 0.5)) + (:z (meters -12) (meters 26)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -3.4666667) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -90)))) (defpart 1041 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -8.5) (meters 12)) - (:y (meters 0.5)) - (:z (meters -12) (meters 26)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -8.5) (meters 12)) + (:y (meters 0.5)) + (:z (meters -12) (meters 26)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -90)))) (defpart 1039 - :init-specs ((:num 1.4) - (:x (meters -9.5) (meters 14)) - (:y (meters 0.5)) - (:z (meters -13) (meters 28)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:num 1.4) + (:x (meters -9.5) (meters 14)) + (:y (meters 0.5)) + (:z (meters -13) (meters 28)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -90)))) (defpartgroup group-firecanyon-lava-9 :id 236 :bounds (static-bspherem 0 0 0 9) - :parts ((sp-item 1043 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1044 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1045 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1046 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1046 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1046 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1043 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1044 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1045 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1046 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1046 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1046 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1044 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08) - (:x (meters -3.5) (meters 7)) - (:y (meters 0.5)) - (:z (meters -7) (meters 15)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08) + (:x (meters -3.5) (meters 7)) + (:y (meters 0.5)) + (:z (meters -7) (meters 15)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -30)))) (defpart 1046 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.6) - (:x (meters -2.5) (meters 5)) - (:y (meters 0.5)) - (:z (meters -6) (meters 13)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -3.4666667) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.6) + (:x (meters -2.5) (meters 5)) + (:y (meters 0.5)) + (:z (meters -6) (meters 13)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -3.4666667) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -30)))) (defpart 1045 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.03 0.03) - (:x (meters -2.5) (meters 5)) - (:y (meters 0.5)) - (:z (meters -6) (meters 13)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.03 0.03) + (:x (meters -2.5) (meters 5)) + (:y (meters 0.5)) + (:z (meters -6) (meters 13)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -30)))) (defpart 1043 - :init-specs ((:num 0.6) - (:x (meters -3.5) (meters 7)) - (:y (meters 0.5)) - (:z (meters -7) (meters 15)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:num 0.6) + (:x (meters -3.5) (meters 7)) + (:y (meters 0.5)) + (:z (meters -7) (meters 15)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -30)))) (defpartgroup group-firecanyon-lava-10 :id 237 :bounds (static-bspherem -4 0 0 15) - :parts ((sp-item 1047 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1048 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1049 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1050 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1050 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1050 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1047 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1048 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1049 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1050 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1050 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1050 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1048 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -13.5) (meters 20)) - (:y (meters 0.5)) - (:z (meters -14) (meters 22)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -13.5) (meters 20)) + (:y (meters 0.5)) + (:z (meters -14) (meters 22)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -35)))) (defpart 1050 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -12.5) (meters 18)) - (:y (meters 0.5)) - (:z (meters -13) (meters 20)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -3.4666667) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -12.5) (meters 18)) + (:y (meters 0.5)) + (:z (meters -13) (meters 20)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -3.4666667) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -35)))) (defpart 1049 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -12.5) (meters 18)) - (:y (meters 0.5)) - (:z (meters -13) (meters 20)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -12.5) (meters 18)) + (:y (meters 0.5)) + (:z (meters -13) (meters 20)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -35)))) (defpart 1047 - :init-specs ((:num 1.5) - (:x (meters -13.5) (meters 20)) - (:y (meters 0.5)) - (:z (meters -14) (meters 22)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:num 1.5) + (:x (meters -13.5) (meters 20)) + (:y (meters 0.5)) + (:z (meters -14) (meters 22)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -35)))) (defpartgroup group-firecanyon-lava-11 :id 238 :bounds (static-bspherem -4 0 0 12) - :parts ((sp-item 1051 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1052 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1053 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1054 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1054 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1054 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1051 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1052 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1053 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1054 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1054 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1054 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1052 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -10.5) (meters 12)) - (:y (meters 0.5)) - (:z (meters -11) (meters 14)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -10.5) (meters 12)) + (:y (meters 0.5)) + (:z (meters -11) (meters 14)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -55)))) (defpart 1054 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -9.5) (meters 10)) - (:y (meters 0.5)) - (:z (meters -10) (meters 12)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -3.8000002) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -9.5) (meters 10)) + (:y (meters 0.5)) + (:z (meters -10) (meters 12)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -3.8000002) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -55)))) (defpart 1053 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -9.5) (meters 10)) - (:y (meters 0.5)) - (:z (meters -10) (meters 12)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -9.5) (meters 10)) + (:y (meters 0.5)) + (:z (meters -10) (meters 12)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -55)))) (defpart 1051 - :init-specs ((:num 0.7) - (:x (meters -10.5) (meters 12)) - (:y (meters 0.5)) - (:z (meters -11) (meters 14)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:num 0.7) + (:x (meters -10.5) (meters 12)) + (:y (meters 0.5)) + (:z (meters -11) (meters 14)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -55)))) (defpartgroup group-firecanyon-lava-14 :id 239 :bounds (static-bspherem -4 0 0 15) - :parts ((sp-item 1055 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1056 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1057 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1058 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1058 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1058 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1055 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1056 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1057 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1058 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1058 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1058 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1056 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -17.5) (meters 25)) - (:y (meters 0.5)) - (:z (meters -12) (meters 24)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -17.5) (meters 25)) + (:y (meters 0.5)) + (:z (meters -12) (meters 24)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -55)))) (defpart 1058 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -16.5) (meters 23)) - (:y (meters 0.5)) - (:z (meters -11) (meters 22)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -4.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -16.5) (meters 23)) + (:y (meters 0.5)) + (:z (meters -11) (meters 22)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -4.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -55)))) (defpart 1057 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -16.5) (meters 23)) - (:y (meters 0.5)) - (:z (meters -11) (meters 22)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -16.5) (meters 23)) + (:y (meters 0.5)) + (:z (meters -11) (meters 22)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -55)))) (defpart 1055 - :init-specs ((:num 1.5) - (:x (meters -17.5) (meters 25)) - (:y (meters 0.5)) - (:z (meters -12) (meters 24)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:num 1.5) + (:x (meters -17.5) (meters 25)) + (:y (meters 0.5)) + (:z (meters -12) (meters 24)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -55)))) (defpartgroup group-firecanyon-lava-15 :id 240 :bounds (static-bspherem -4 0 0 12) - :parts ((sp-item 1059 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1060 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1061 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1062 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1062 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1062 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1059 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1060 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1061 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1062 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1062 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1062 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1060 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -10.5) (meters 12)) - (:y (meters 0.5)) - (:z (meters -11) (meters 24)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -10.5) (meters 12)) + (:y (meters 0.5)) + (:z (meters -11) (meters 24)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -55)))) (defpart 1062 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -9.5) (meters 10)) - (:y (meters 0.5)) - (:z (meters -10) (meters 22)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -5.133333) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -9.5) (meters 10)) + (:y (meters 0.5)) + (:z (meters -10) (meters 22)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -5.133333) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -55)))) (defpart 1061 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.04 0.04) - (:x (meters -9.5) (meters 10)) - (:y (meters 0.5)) - (:z (meters -10) (meters 22)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.04 0.04) + (:x (meters -9.5) (meters 10)) + (:y (meters 0.5)) + (:z (meters -10) (meters 22)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -55)))) (defpart 1059 - :init-specs ((:num 1.0) - (:x (meters -10.5) (meters 12)) - (:y (meters 0.5)) - (:z (meters -11) (meters 24)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters -10.5) (meters 12)) + (:y (meters 0.5)) + (:z (meters -11) (meters 24)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -55)))) (defpartgroup group-firecanyon-lava-16 :id 241 :bounds (static-bspherem 0 0 0 14) - :parts ((sp-item 1063 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1064 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1065 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1066 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1066 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1066 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1063 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1064 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1065 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1066 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1066 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1066 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1064 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -9.5) (meters 16)) - (:y (meters 0.5)) - (:z (meters -12) (meters 26)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -9.5) (meters 16)) + (:y (meters 0.5)) + (:z (meters -12) (meters 26)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -130)))) (defpart 1066 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -8.5) (meters 14)) - (:y (meters 0.5)) - (:z (meters -11) (meters 24)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -3.4666667) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -8.5) (meters 14)) + (:y (meters 0.5)) + (:z (meters -11) (meters 24)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -3.4666667) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -130)))) (defpart 1065 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -8.5) (meters 14)) - (:y (meters 0.5)) - (:z (meters -11) (meters 24)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -8.5) (meters 14)) + (:y (meters 0.5)) + (:z (meters -11) (meters 24)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -130)))) (defpart 1063 - :init-specs ((:num 1.1) - (:x (meters -9.5) (meters 16)) - (:y (meters 0.5)) - (:z (meters -12) (meters 26)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -130)) - ) - ) + :init-specs + ((:num 1.1) + (:x (meters -9.5) (meters 16)) + (:y (meters 0.5)) + (:z (meters -12) (meters 26)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -130)))) (defpartgroup group-firecanyon-lava-18 :id 242 :bounds (static-bspherem -4 0 -4 26) - :parts ((sp-item 1067 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1068 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1069 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1070 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1070 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1070 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1067 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1068 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1069 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1070 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1070 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1070 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1068 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -11) (meters 24)) - (:y (meters 0.5)) - (:z (meters -28) (meters 42)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -11) (meters 24)) + (:y (meters 0.5)) + (:z (meters -28) (meters 42)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -55)))) (defpart 1070 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.0) - (:x (meters -10) (meters 22)) - (:y (meters 0.5)) - (:z (meters -27) (meters 40)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.0) + (:x (meters -10) (meters 22)) + (:y (meters 0.5)) + (:z (meters -27) (meters 40)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -55)))) (defpart 1069 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.07 0.07) - (:x (meters -10) (meters 22)) - (:y (meters 0.5)) - (:z (meters -27) (meters 40)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.07 0.07) + (:x (meters -10) (meters 22)) + (:y (meters 0.5)) + (:z (meters -27) (meters 40)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -55)))) (defpart 1067 - :init-specs ((:num 1.9) - (:x (meters -11) (meters 24)) - (:y (meters 0.5)) - (:z (meters -28) (meters 42)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:num 1.9) + (:x (meters -11) (meters 24)) + (:y (meters 0.5)) + (:z (meters -28) (meters 42)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -55)))) (defpartgroup group-firecanyon-lava-19 :id 243 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1071 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1072 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1073 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1074 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1074 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1074 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1071 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1072 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1073 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1074 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1074 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1074 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1072 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -10) (meters 23)) - (:y (meters 0.5)) - (:z (meters -18) (meters 28)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -10) (meters 23)) + (:y (meters 0.5)) + (:z (meters -18) (meters 28)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -55)))) (defpart 1074 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.5) - (:x (meters -9) (meters 21)) - (:y (meters 0.5)) - (:z (meters -17) (meters 26)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.5) + (:x (meters -9) (meters 21)) + (:y (meters 0.5)) + (:z (meters -17) (meters 26)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -55)))) (defpart 1073 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -9) (meters 21)) - (:y (meters 0.5)) - (:z (meters -17) (meters 26)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -9) (meters 21)) + (:y (meters 0.5)) + (:z (meters -17) (meters 26)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -55)))) (defpart 1071 - :init-specs ((:num 1.4) - (:x (meters -10) (meters 23)) - (:y (meters 0.5)) - (:z (meters -18) (meters 28)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -55)) - ) - ) + :init-specs + ((:num 1.4) + (:x (meters -10) (meters 23)) + (:y (meters 0.5)) + (:z (meters -18) (meters 28)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -55)))) (defpartgroup group-firecanyon-lava-21 :id 244 :bounds (static-bspherem -4 0 4 22) - :parts ((sp-item 1075 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1076 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1077 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1078 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1078 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1078 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1075 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1076 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1077 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1078 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1078 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1078 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1076 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.17) - (:x (meters -23) (meters 32)) - (:y (meters 0.5)) - (:z (meters -5) (meters 4)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.17) + (:x (meters -23) (meters 32)) + (:y (meters 0.5)) + (:z (meters -5) (meters 4)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -30)))) (defpart 1078 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.8) - (:x (meters -22) (meters 30)) - (:y (meters 0.5)) - (:z (meters -4) (meters 2)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.8) + (:x (meters -22) (meters 30)) + (:y (meters 0.5)) + (:z (meters -4) (meters 2)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -30)))) (defpart 1077 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.03 0.03) - (:x (meters -22) (meters 30)) - (:y (meters 0.5)) - (:z (meters -4) (meters 2)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.03 0.03) + (:x (meters -22) (meters 30)) + (:y (meters 0.5)) + (:z (meters -4) (meters 2)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -30)))) (defpart 1075 - :init-specs ((:num 0.7) - (:x (meters -23) (meters 32)) - (:y (meters 0.5)) - (:z (meters -5) (meters 4)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:num 0.7) + (:x (meters -23) (meters 32)) + (:y (meters 0.5)) + (:z (meters -5) (meters 4)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -30)))) (defpartgroup group-firecanyon-lava-22 :id 245 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1079 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1080 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1081 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1082 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1082 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1082 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1079 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1080 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1081 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1082 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1082 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1082 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1080 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -7) (meters 25)) - (:y (meters 0.5)) - (:z (meters -4) (meters 6)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees -120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -7) (meters 25)) + (:y (meters 0.5)) + (:z (meters -4) (meters 6)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees -120)))) (defpart 1082 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -6) (meters 23)) - (:y (meters 0.5)) - (:z (meters -3) (meters 4)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -6) (meters 23)) + (:y (meters 0.5)) + (:z (meters -3) (meters 4)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -120)))) (defpart 1081 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -6) (meters 23)) - (:y (meters 0.5)) - (:z (meters -3) (meters 4)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -6) (meters 23)) + (:y (meters 0.5)) + (:z (meters -3) (meters 4)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -120)))) (defpart 1079 - :init-specs ((:num 0.5) - (:x (meters -7) (meters 25)) - (:y (meters 0.5)) - (:z (meters -4) (meters 6)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees -120)) - ) - ) + :init-specs + ((:num 0.5) + (:x (meters -7) (meters 25)) + (:y (meters 0.5)) + (:z (meters -4) (meters 6)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees -120)))) (defpartgroup group-firecanyon-lava-60 :id 246 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1083 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1084 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1085 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1086 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1086 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1086 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1083 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1084 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1085 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1086 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1086 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1086 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1084 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -11) (meters 21)) - (:y (meters 0.5)) - (:z (meters -17) (meters 30)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -11) (meters 21)) + (:y (meters 0.5)) + (:z (meters -17) (meters 30)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 50.000004)))) (defpart 1086 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.3) - (:x (meters -10) (meters 19)) - (:y (meters 0.5)) - (:z (meters -16) (meters 28)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.3) + (:x (meters -10) (meters 19)) + (:y (meters 0.5)) + (:z (meters -16) (meters 28)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 50.000004)))) (defpart 1085 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.05 0.05) - (:x (meters -10) (meters 19)) - (:y (meters 0.5)) - (:z (meters -16) (meters 28)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.05 0.05) + (:x (meters -10) (meters 19)) + (:y (meters 0.5)) + (:z (meters -16) (meters 28)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 50.000004)))) (defpart 1083 - :init-specs ((:num 1.0) - (:x (meters -11) (meters 21)) - (:y (meters 0.5)) - (:z (meters -17) (meters 30)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters -11) (meters 21)) + (:y (meters 0.5)) + (:z (meters -17) (meters 30)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 50.000004)))) (defpartgroup group-firecanyon-lava-62 :id 247 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1087 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1088 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1089 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1090 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1090 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1090 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1087 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1088 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1089 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1090 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1090 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1090 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1088 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -9) (meters 17)) - (:y (meters 0.5)) - (:z (meters -8) (meters 14)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 100.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -9) (meters 17)) + (:y (meters 0.5)) + (:z (meters -8) (meters 14)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 100.00001)))) (defpart 1090 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -8) (meters 15)) - (:y (meters 0.5)) - (:z (meters -7) (meters 12)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 100.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -8) (meters 15)) + (:y (meters 0.5)) + (:z (meters -7) (meters 12)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 100.00001)))) (defpart 1089 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.04 0.04) - (:x (meters -8) (meters 15)) - (:y (meters 0.5)) - (:z (meters -7) (meters 12)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 100.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.04 0.04) + (:x (meters -8) (meters 15)) + (:y (meters 0.5)) + (:z (meters -7) (meters 12)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 100.00001)))) (defpart 1087 - :init-specs ((:num 0.7) - (:x (meters -9) (meters 17)) - (:y (meters 0.5)) - (:z (meters -8) (meters 14)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 100.00001)) - ) - ) + :init-specs + ((:num 0.7) + (:x (meters -9) (meters 17)) + (:y (meters 0.5)) + (:z (meters -8) (meters 14)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 100.00001)))) (defpartgroup group-firecanyon-lava-63 :id 248 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1091 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1092 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1093 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1094 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1094 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1094 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1091 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1092 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1093 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1094 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1094 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1094 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1092 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -8) (meters 12)) - (:y (meters 0.5)) - (:z (meters -10) (meters 16)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -8) (meters 12)) + (:y (meters 0.5)) + (:z (meters -10) (meters 16)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 110)))) (defpart 1094 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -7) (meters 10)) - (:y (meters 0.5)) - (:z (meters -8) (meters 14)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -7) (meters 10)) + (:y (meters 0.5)) + (:z (meters -8) (meters 14)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 110)))) (defpart 1093 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.04 0.04) - (:x (meters -7) (meters 10)) - (:y (meters 0.5)) - (:z (meters -8) (meters 14)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.04 0.04) + (:x (meters -7) (meters 10)) + (:y (meters 0.5)) + (:z (meters -8) (meters 14)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 110)))) (defpart 1091 - :init-specs ((:num 0.7) - (:x (meters -8) (meters 12)) - (:y (meters 0.5)) - (:z (meters -10) (meters 16)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:num 0.7) + (:x (meters -8) (meters 12)) + (:y (meters 0.5)) + (:z (meters -10) (meters 16)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 110)))) (defpartgroup group-firecanyon-lava-64 :id 249 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1095 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1096 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1097 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1009 :flags (start-dead)) - (sp-item 1098 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.457) :length (seconds 0.017) :binding 1010) - (sp-item 1098 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.78) :length (seconds 0.017) :binding 1010) - (sp-item 1098 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 0.307) :length (seconds 0.017) :binding 1010) - (sp-item 1010 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1095 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1096 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1097 :fade-after (meters 100) :falloff-to (meters 100) :binding 1009) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1009 :flags (start-dead)) + (sp-item 1098 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1010) + (sp-item 1098 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1010) + (sp-item 1098 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1010) + (sp-item 1010 :flags (start-dead)))) (defpart 1096 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1) - (:x (meters -3) (meters 10)) - (:y (meters 0.5)) - (:z (meters -5) (meters 9)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1) + (:x (meters -3) (meters 10)) + (:y (meters 0.5)) + (:z (meters -5) (meters 9)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 110)))) (defpart 1098 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.6) - (:x (meters -2) (meters 8)) - (:y (meters 0.5)) - (:z (meters -4) (meters 7)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.6) + (:x (meters -2) (meters 8)) + (:y (meters 0.5)) + (:z (meters -4) (meters 7)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 110)))) (defpart 1097 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.02 0.02) - (:x (meters -2) (meters 8)) - (:y (meters 0.5)) - (:z (meters -4) (meters 7)) - (:scale-x (meters 0.4) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.02 0.02) + (:x (meters -2) (meters 8)) + (:y (meters 0.5)) + (:z (meters -4) (meters 7)) + (:scale-x (meters 0.4) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 110)))) (defpart 1095 - :init-specs ((:num 0.4) - (:x (meters -3) (meters 10)) - (:y (meters 0.5)) - (:z (meters -5) (meters 9)) - (:rot-x 5) - (:r 6144.0) - (:g 3686.4) - (:b 4096.0) - (:vel-y (meters 0.016666668)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:num 0.4) + (:x (meters -3) (meters 10)) + (:y (meters 0.5)) + (:z (meters -5) (meters 9)) + (:rot-x 5) + (:r 6144.0) + (:g 3686.4) + (:b 4096.0) + (:vel-y (meters 0.016666668)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 110)))) (defpartgroup group-firecanyon-heat-44 :id 250 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1099 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1100 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1099 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1100 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1100 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters 0) (meters 14)) - (:y (meters -6)) - (:z (meters -16) (meters 18)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters 0) (meters 14)) + (:y (meters -6)) + (:z (meters -16) (meters 18)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 0)))) (defpart 1099 - :init-specs ((:num 1.25) - (:x (meters 0) (meters 14)) - (:y (meters -6)) - (:z (meters -16) (meters 18)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 1.25) + (:x (meters 0) (meters 14)) + (:y (meters -6)) + (:z (meters -16) (meters 18)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 0)))) (defpartgroup group-firecanyon-heat-45 :id 251 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1101 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1102 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1101 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1102 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1102 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters 0) (meters 12)) - (:y (meters -6)) - (:z (meters -4) (meters 16)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters 0) (meters 12)) + (:y (meters -6)) + (:z (meters -4) (meters 16)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 0)))) (defpart 1101 - :init-specs ((:num 1.0) - (:x (meters 0) (meters 12)) - (:y (meters -6)) - (:z (meters -4) (meters 16)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters 0) (meters 12)) + (:y (meters -6)) + (:z (meters -4) (meters 16)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 0)))) (defpartgroup group-firecanyon-heat-46 :id 252 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1103 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1104 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1103 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1104 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1104 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1) - (:x (meters -3) (meters 5)) - (:y (meters -6)) - (:z (meters 0) (meters 14)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1) + (:x (meters -3) (meters 5)) + (:y (meters -6)) + (:z (meters 0) (meters 14)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 5)))) (defpart 1103 - :init-specs ((:num 0.5) - (:x (meters -3) (meters 5)) - (:y (meters -6)) - (:z (meters 0) (meters 14)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 5)) - ) - ) + :init-specs + ((:num 0.5) + (:x (meters -3) (meters 5)) + (:y (meters -6)) + (:z (meters 0) (meters 14)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 5)))) (defpartgroup group-firecanyon-heat-47 :id 253 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1105 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1106 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1105 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1106 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1106 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08) - (:x (meters 2) (meters 5)) - (:y (meters -6)) - (:z (meters -12) (meters 14)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08) + (:x (meters 2) (meters 5)) + (:y (meters -6)) + (:z (meters -12) (meters 14)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 5)))) (defpart 1105 - :init-specs ((:num 0.4) - (:x (meters 2) (meters 5)) - (:y (meters -6)) - (:z (meters -12) (meters 14)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 5)) - ) - ) + :init-specs + ((:num 0.4) + (:x (meters 2) (meters 5)) + (:y (meters -6)) + (:z (meters -12) (meters 14)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 5)))) (defpartgroup group-firecanyon-heat-48 :id 254 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1107 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1108 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1107 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1108 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1108 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -13) (meters 17)) - (:y (meters -6)) - (:z (meters -19) (meters 23)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -13) (meters 17)) + (:y (meters -6)) + (:z (meters -19) (meters 23)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 0)))) (defpart 1107 - :init-specs ((:num 2.0) - (:x (meters -13) (meters 17)) - (:y (meters -6)) - (:z (meters -19) (meters 23)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 2.0) + (:x (meters -13) (meters 17)) + (:y (meters -6)) + (:z (meters -19) (meters 23)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 0)))) (defpartgroup group-firecanyon-heat-50 :id 255 :bounds (static-bspherem 0 0 0 14) - :parts ((sp-item 1109 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1110 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1109 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1110 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1110 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -6) (meters 1)) - (:y (meters -6)) - (:z (meters 0) (meters 18)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 20)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -6) (meters 1)) + (:y (meters -6)) + (:z (meters 0) (meters 18)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 20)))) (defpart 1109 - :init-specs ((:num 0.7) - (:x (meters -6) (meters 1)) - (:y (meters -6)) - (:z (meters 0) (meters 18)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 20)) - ) - ) + :init-specs + ((:num 0.7) + (:x (meters -6) (meters 1)) + (:y (meters -6)) + (:z (meters 0) (meters 18)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 20)))) (defpartgroup group-firecanyon-heat-52 :id 256 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1111 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1112 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1111 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1112 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1112 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -12) (meters 18)) - (:y (meters -6)) - (:z (meters -12) (meters 16)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -12) (meters 18)) + (:y (meters -6)) + (:z (meters -12) (meters 16)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 150)))) (defpart 1111 - :init-specs ((:num 0.75) - (:x (meters -12) (meters 18)) - (:y (meters -6)) - (:z (meters -12) (meters 16)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 150)) - ) - ) + :init-specs + ((:num 0.75) + (:x (meters -12) (meters 18)) + (:y (meters -6)) + (:z (meters -12) (meters 16)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 150)))) (defpartgroup group-firecanyon-heat-53 :id 257 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1113 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1114 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1113 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1114 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1114 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -10) (meters 18)) - (:y (meters -6)) - (:z (meters -3) (meters 16)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -10) (meters 18)) + (:y (meters -6)) + (:z (meters -3) (meters 16)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 150)))) (defpart 1113 - :init-specs ((:num 0.75) - (:x (meters -10) (meters 18)) - (:y (meters -6)) - (:z (meters -3) (meters 16)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 150)) - ) - ) + :init-specs + ((:num 0.75) + (:x (meters -10) (meters 18)) + (:y (meters -6)) + (:z (meters -3) (meters 16)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 150)))) (defpartgroup group-firecanyon-heat-54 :id 258 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1115 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1116 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1115 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1116 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1116 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -10) (meters 13)) - (:y (meters -6)) - (:z (meters -18) (meters 20)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 155)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -10) (meters 13)) + (:y (meters -6)) + (:z (meters -18) (meters 20)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 155)))) (defpart 1115 - :init-specs ((:num 1.5) - (:x (meters -10) (meters 13)) - (:y (meters -6)) - (:z (meters -18) (meters 20)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 155)) - ) - ) + :init-specs + ((:num 1.5) + (:x (meters -10) (meters 13)) + (:y (meters -6)) + (:z (meters -18) (meters 20)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 155)))) (defpartgroup group-firecanyon-heat-55 :id 259 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1117 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1118 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1117 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1118 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1118 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.35) - (:x (meters -3) (meters 10)) - (:y (meters -6)) - (:z (meters -3) (meters 32)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 155)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.35) + (:x (meters -3) (meters 10)) + (:y (meters -6)) + (:z (meters -3) (meters 32)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 155)))) (defpart 1117 - :init-specs ((:num 1.9) - (:x (meters -3) (meters 10)) - (:y (meters -6)) - (:z (meters -3) (meters 32)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 155)) - ) - ) + :init-specs + ((:num 1.9) + (:x (meters -3) (meters 10)) + (:y (meters -6)) + (:z (meters -3) (meters 32)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 155)))) (defpartgroup group-firecanyon-heat-56 :id 260 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1119 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1120 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1119 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1120 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1120 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -7) (meters 16)) - (:y (meters -6)) - (:z (meters -8) (meters 15)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 256.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.21333334) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -7) (meters 16)) + (:y (meters -6)) + (:z (meters -8) (meters 15)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 256.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.21333334) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 110)))) (defpart 1119 - :init-specs ((:num 1.0) - (:x (meters -7) (meters 16)) - (:y (meters -6)) - (:z (meters -8) (meters 15)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters -7) (meters 16)) + (:y (meters -6)) + (:z (meters -8) (meters 15)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 110)))) (defpartgroup group-firecanyon-heat-57 :id 261 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1121 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1122 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1121 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1122 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1122 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -6) (meters 8)) - (:y (meters -6)) - (:z (meters -2) (meters 20)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -6) (meters 8)) + (:y (meters -6)) + (:z (meters -2) (meters 20)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 135)))) (defpart 1121 - :init-specs ((:num 0.75) - (:x (meters -6) (meters 8)) - (:y (meters -6)) - (:z (meters -2) (meters 20)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:num 0.75) + (:x (meters -6) (meters 8)) + (:y (meters -6)) + (:z (meters -2) (meters 20)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 135)))) (defpartgroup group-firecanyon-heat-58 :id 262 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1123 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1124 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1123 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1124 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1124 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -1) (meters 8)) - (:y (meters -6)) - (:z (meters -18) (meters 20)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 170)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -1) (meters 8)) + (:y (meters -6)) + (:z (meters -18) (meters 20)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 170)))) (defpart 1123 - :init-specs ((:num 0.75) - (:x (meters -1) (meters 8)) - (:y (meters -6)) - (:z (meters -18) (meters 20)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 170)) - ) - ) + :init-specs + ((:num 0.75) + (:x (meters -1) (meters 8)) + (:y (meters -6)) + (:z (meters -18) (meters 20)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 170)))) (defpartgroup group-firecanyon-heat-59 :id 263 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1125 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1126 :fade-after (meters 150) :falloff-to (meters 150)) - ) - ) + :parts + ((sp-item 1125 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1126 :fade-after (meters 150) :falloff-to (meters 150)))) (defpart 1126 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15) - (:x (meters -2) (meters 4)) - (:y (meters -6)) - (:z (meters -4) (meters 20)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.10666667) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1015) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15) + (:x (meters -2) (meters 4)) + (:y (meters -6)) + (:z (meters -4) (meters 20)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.10666667) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1015) + (:rotate-y (degrees 135)))) (defpart 1125 - :init-specs ((:num 0.75) - (:x (meters -2) (meters 4)) - (:y (meters -6)) - (:z (meters -4) (meters 20)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 6144.0) - (:vel-y (meters 0.053333335)) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.8)) - (:next-launcher 1016) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:num 0.75) + (:x (meters -2) (meters 4)) + (:y (meters -6)) + (:z (meters -4) (meters 20)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 6144.0) + (:vel-y (meters 0.053333335)) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.8)) + (:next-launcher 1016) + (:rotate-y (degrees 135)))) diff --git a/goal_src/jak1/levels/flut_common/flut-part.gc b/goal_src/jak1/levels/flut_common/flut-part.gc index f64251e679..e91cb30896 100644 --- a/goal_src/jak1/levels/flut_common/flut-part.gc +++ b/goal_src/jak1/levels/flut_common/flut-part.gc @@ -1,137 +1,125 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO" "SWA.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: flut-part.gc -;; name in dgo: flut-part -;; dgos: L1, SNO, SWA - ;; DECOMP BEGINS (defpartgroup group-flut-trans-pad :id 120 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 746 :fade-after (meters 160)) - (sp-item 747 :fade-after (meters 160)) - (sp-item 748 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)) - ) - ) + :parts + ((sp-item 746 :fade-after (meters 160)) + (sp-item 747 :fade-after (meters 160)) + (sp-item 748 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)))) (defpart 746 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 7)) - (:scale-x (meters 14) (meters 1)) - (:scale-y (meters 14)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 32.0 32.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 7)) + (:scale-x (meters 14) (meters 1)) + (:scale-y (meters 14)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 32.0 32.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 747 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 14)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 14)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 748 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.75) (meters 0.1)) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 15)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0) - (:g 0.0 127.0) - (:b 127.0) - (:a 127.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.02)) - (:rotvel-y (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00015)) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.75) (meters 0.1)) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 15)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0) + (:g 0.0 127.0) + (:b 127.0) + (:a 127.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.02)) + (:rotvel-y (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00015)) + (:timer (seconds 1)) + (:flags (bit2 bit3)))) (defpartgroup group-flut-attack-strike-ground :id 121 :duration (seconds 0.035) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 749) (sp-item 750)) - ) + :parts ((sp-item 749) (sp-item 750))) (defpart 749 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 24.0) - (:y (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 8.0 56.0) - (:vel-y (meters 0.13333334) (meters 0.16666667)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-g -1.4222223) - (:fade-a -0.35555556) - (:accel-y (meters 0.00008333333)) - (:friction 0.7) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 751) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 24.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 8.0 56.0) + (:vel-y (meters 0.13333334) (meters 0.16666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.4222223) + (:fade-a -0.35555556) + (:accel-y (meters 0.00008333333)) + (:friction 0.7) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 751) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 750 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 8.0) - (:vel-y (meters 0.3)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.8444445) - (:fade-a -0.82222223) - (:friction 0.7) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.15)) - (:next-launcher 751) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 8.0) + (:vel-y (meters 0.3)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.8444445) + (:fade-a -0.82222223) + (:friction 0.7) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.15)) + (:next-launcher 751) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) diff --git a/goal_src/jak1/levels/flut_common/flutflut.gc b/goal_src/jak1/levels/flut_common/flutflut.gc index d3f3f25e61..737e1f6b6c 100644 --- a/goal_src/jak1/levels/flut_common/flutflut.gc +++ b/goal_src/jak1/levels/flut_common/flutflut.gc @@ -1,173 +1,123 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO" "SWA.DGO") - (require "levels/common/blocking-plane.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/entity/ambient.gc") -;; name: flutflut.gc -;; name in dgo: flutflut -;; dgos: L1, SNO, SWA - ;; DECOMP BEGINS (define-extern *allow-flutflut-anywhere* symbol) -(if (not (nmember "flutp" *kernel-packages*)) - (set! *kernel-packages* (cons "flutp" *kernel-packages*)) - ) +(if (not (nmember "flutp" *kernel-packages*)) (set! *kernel-packages* (cons "flutp" *kernel-packages*))) (deftype flutflut (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer target) :overlay-at parent) - (extra-trans vector :inline) - (condition int32) - (auto-get-off symbol) - (cell handle) - (path-data path-control 2) - (path-target path-control :overlay-at (-> path-data 0)) - (path-flut path-control :overlay-at (-> path-data 1)) - (touch-time time-frame) - ) + ((root collide-shape-moving :override) + (parent-override (pointer target) :overlay-at parent) + (extra-trans vector :inline) + (condition int32) + (auto-get-off symbol) + (cell handle) + (path-data path-control 2) + (path-target path-control :overlay-at (-> path-data 0)) + (path-flut path-control :overlay-at (-> path-data 1)) + (touch-time time-frame)) :pack-me (:state-methods - wait-for-start - idle - (pickup (state flutflut)) - wait-for-return - ) - ) - + wait-for-start + idle + (pickup (state flutflut)) + wait-for-return)) (defmethod relocate ((this flutflut) (arg0 int)) (countdown (v1-0 2) - (if (-> this path-data v1-0) - (&+! (-> this path-data v1-0) arg0) - ) - ) - (the-as flutflut ((method-of-type process-drawable relocate) this arg0)) - ) + (if (-> this path-data v1-0) (&+! (-> this path-data v1-0) arg0))) + (the-as flutflut ((method-of-type process-drawable relocate) this arg0))) (define *flutflut-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w 81920.0) - :top-plane (new 'static 'plane :y 1.0 :w -2867.2) - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags disable-fade shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 81920.0) + :top-plane + (new 'static 'plane :y 1.0 :w -2867.2)))) -(defskelgroup *flutflut-sg* flut-saddle flut-saddle-lod0-jg -1 - ((flut-saddle-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.5) - :shadow flut-saddle-shadow-mg - :sort 1 - ) +(defskelgroup *flutflut-sg* + flut-saddle + flut-saddle-lod0-jg + -1 + ((flut-saddle-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.5) + :shadow flut-saddle-shadow-mg + :sort 1) (defbehavior flutflut-effect flutflut () (spawn (-> self part) (-> self root trans)) (update! (-> self sound)) 0 - (none) - ) + (none)) (defstate wait-for-start (flutflut) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - (('notify) - (let ((v0-1 (the-as structure #t))) - (set! (-> self auto-get-off) (the-as symbol v0-1)) - v0-1 - ) - ) - (('touch 'attack) - (set-time! (-> self touch-time)) - #f - ) - ) - ) - :exit (behavior () - (set! (-> self root root-prim prim-core action) (collide-action)) - (set! (-> self root root-prim prim-core offense) (collide-offense no-offense)) - 0 - ) - :code (behavior () - (loop - (let ((v1-0 (-> self condition))) - (cond - ((or (zero? v1-0) (= v1-0 1)) - (if (or (and (task-complete? *game-info* (game-task beach-flutflut)) - (or (and (zero? (-> self condition)) (task-closed? (game-task village2-levitator) (task-status need-hint))) - (and (= (-> self condition) 1) (task-closed? (game-task village3-button) (task-status need-hint))) - ) - ) - (and *cheat-mode* (cpad-hold? 0 l3)) - (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) - ) - (goto cfg-75) - ) - ) - ((= v1-0 4) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) - (goto cfg-75) - ) - ) - ((= v1-0 3) - (cond - ((and (task-complete? *game-info* (-> self entity extra perm task)) (not (handle->process (-> self cell)))) - (when (and (-> self auto-get-off) (send-event *target* 'end-mode)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans))) + (('notify) (let ((v0-1 (the-as structure #t))) (set! (-> self auto-get-off) (the-as symbol v0-1)) v0-1)) + (('touch 'attack) (set-time! (-> self touch-time)) #f))) + :exit + (behavior () + (set! (-> self root root-prim prim-core action) (collide-action)) + (set! (-> self root root-prim prim-core offense) (collide-offense no-offense)) + 0) + :code + (behavior () + (loop + (let ((v1-0 (-> self condition))) + (cond + ((or (zero? v1-0) (= v1-0 1)) + (if (or (and (task-complete? *game-info* (game-task beach-flutflut)) + (or (and (zero? (-> self condition)) (task-closed? (game-task village2-levitator) (task-status need-hint))) + (and (= (-> self condition) 1) (task-closed? (game-task village3-button) (task-status need-hint))))) + (and *cheat-mode* (cpad-hold? 0 l3)) + (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) + (goto cfg-75))) + ((= v1-0 4) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) (goto cfg-75))) + ((= v1-0 3) + (cond + ((and (task-complete? *game-info* (-> self entity extra perm task)) (not (handle->process (-> self cell)))) + (when (and (-> self auto-get-off) (send-event *target* 'end-mode)) + (set! (-> self auto-get-off) #f) + (go-virtual pickup (method-of-object self idle))) (set! (-> self auto-get-off) #f) - (go-virtual pickup (method-of-object self idle)) - ) - (set! (-> self auto-get-off) #f) - (if (= (-> self condition) 3) - (goto cfg-75) - ) - (if (and *target* - (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)) - (not (time-elapsed? (-> self touch-time) (seconds 0.05))) - ) - (go-virtual pickup (method-of-object self idle)) - ) - ) - ((not (handle->process (-> self cell))) - (set! (-> self cell) - (ppointer->handle - (birth-pickup-at-point - (vector+! (new 'stack-no-clear 'vector) (-> self root trans) (new 'static 'vector :y 8192.0 :w 1.0)) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (-> self fact) - ) - ) - ) - ) - ) - ) - (else - (goto cfg-75) - ) - ) - ) - (flutflut-effect) - (suspend) - ) - (label cfg-75) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) + (if (= (-> self condition) 3) (goto cfg-75)) + (if (and *target* + (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)) + (not (time-elapsed? (-> self touch-time) (seconds 0.05)))) + (go-virtual pickup (method-of-object self idle)))) + ((not (handle->process (-> self cell))) + (set! (-> self cell) + (ppointer->handle (birth-pickup-at-point (vector+! (new 'stack-no-clear 'vector) (-> self root trans) (new 'static 'vector :y 8192.0 :w 1.0)) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (-> self fact))))))) + (else (goto cfg-75)))) + (flutflut-effect) + (suspend)) + (label cfg-75) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) (go-virtual wait-for-return) - (go-virtual idle) - ) - ) - ) + (go-virtual idle)))) (defstate idle (flutflut) :virtual #t @@ -236,49 +186,33 @@ (defstate pickup (flutflut) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('draw) - (ja-channel-set! 1) - (ja :group! flut-saddle-flut-idle-ja) - (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - (transform-post) - ) - (('trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - (('touch 'attack) - #f - ) - ) - ) - :enter (behavior ((arg0 (state flutflut))) - ((-> arg0 enter)) - ) - :code (behavior ((arg0 (state flutflut))) - (ja-channel-set! 0) - (ja-post) - (while (zero? (ja-group-size)) - (if (or (not *target*) (< 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (go arg0) - ) - (flutflut-effect) - (suspend) - ) - (while (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) - (flutflut-effect) - (suspend) - ) - (let ((s5-0 (current-time))) - (until (time-elapsed? s5-0 (seconds 1)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('draw) + (ja-channel-set! 1) + (ja :group! flut-saddle-flut-idle-ja) + (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) + (transform-post)) + (('trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans))) + (('touch 'attack) #f))) + :enter + (behavior ((arg0 (state flutflut))) + ((-> arg0 enter))) + :code + (behavior ((arg0 (state flutflut))) + (ja-channel-set! 0) + (ja-post) + (while (zero? (ja-group-size)) + (if (or (not *target*) (< 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) (go arg0)) (flutflut-effect) - (suspend) - ) - ) - (go arg0) - ) - ) + (suspend)) + (while (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action flut))) + (flutflut-effect) + (suspend)) + (let ((s5-0 (current-time))) (until (time-elapsed? s5-0 (seconds 1)) (flutflut-effect) (suspend))) + (go arg0))) (defstate wait-for-return (flutflut) :virtual #t @@ -314,19 +248,15 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 6144.0) - (set-root-prim! s4-0 s3-0) - ) + (set-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set-yaw-angle-clear-roll-pitch! (-> this root) (res-lump-float arg0 'rotoffset)) (initialize-skeleton this *flutflut-sg* '()) @@ -335,20 +265,13 @@ (let ((v1-24 (-> this node-list data))) (set! (-> v1-24 0 param0) cspace<-transformq+trans!) (set! (-> v1-24 0 param1) (the-as basic (-> this root trans))) - (set! (-> v1-24 0 param2) (the-as basic (-> this extra-trans))) - ) + (set! (-> v1-24 0 param2) (the-as basic (-> this extra-trans)))) (dotimes (s4-2 2) (let ((v1-27 (new 'process 'curve-control this 'path (the float (+ s4-2 1))))) (set! (-> this path-data s4-2) v1-27) - (if v1-27 - (logior! (-> v1-27 flags) (path-control-flag display draw-line draw-point draw-text)) - ) - ) - ) + (if v1-27 (logior! (-> v1-27 flags) (path-control-flag display draw-line draw-point draw-text))))) (set! (-> this condition) (res-lump-value arg0 'index int)) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 120) this)) (set! (-> this auto-get-off) #f) (move-to-ground (-> this root) 40960.0 40960.0 #t (collide-kind background)) @@ -369,5 +292,4 @@ (new 'process 'ambient-sound (static-sound-spec "zoom-teleport" :fo-max 30) (-> this root trans)) ) (go (method-of-object this wait-for-start)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/flut_common/target-flut.gc b/goal_src/jak1/levels/flut_common/target-flut.gc index 7f602f5cf2..97c05399a7 100644 --- a/goal_src/jak1/levels/flut_common/target-flut.gc +++ b/goal_src/jak1/levels/flut_common/target-flut.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO" "SWA.DGO") - (require "engine/game/projectiles-h.gc") (require "engine/target/target-death.gc") (require "engine/anim/aligner.gc") @@ -9,344 +8,267 @@ (require "levels/flut_common/flutflut.gc") (require "engine/common-obs/nav-enemy-h.gc") -;; name: target-flut.gc -;; name in dgo: target-flut -;; dgos: L1, SNO, SWA - ;; DECOMP BEGINS (deftype flut-info (basic) - ((entity entity-actor) - (flut-trans vector :inline) - (flut-quat vector :inline) - (flut-scale vector :inline) - (stick-lock basic) - (flap-sound-id sound-id) - ) - ) - + ((entity entity-actor) + (flut-trans vector :inline) + (flut-quat vector :inline) + (flut-scale vector :inline) + (stick-lock basic) + (flap-sound-id sound-id))) (deftype flut-bank (basic) - ((jump-height-min meters) - (jump-height-max meters) - (double-jump-height-min meters) - (double-jump-height-max meters) - (air-attack-speed meters) - (ground-timeout time-frame) - ) - ) - + ((jump-height-min meters) + (jump-height-max meters) + (double-jump-height-min meters) + (double-jump-height-max meters) + (air-attack-speed meters) + (ground-timeout time-frame))) -(define *FLUT-bank* (new 'static 'flut-bank - :jump-height-min (meters 5) - :jump-height-max (meters 7) - :double-jump-height-min (meters 1) - :double-jump-height-max (meters 2) - :air-attack-speed (meters 20) - :ground-timeout (seconds 0.5) - ) - ) +(define *FLUT-bank* + (new 'static + 'flut-bank + :jump-height-min (meters 5) + :jump-height-max (meters 7) + :double-jump-height-min (meters 1) + :double-jump-height-max (meters 2) + :air-attack-speed (meters 20) + :ground-timeout (seconds 0.5))) -(define *flut-walk-mods* (new 'static 'surface - :name 'run - :turnv 54613.332 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 81920.0 - :target-speed 81920.0 - :seek0 1.5 - :seek90 3.0 - :seek180 2.0 - :fric 1.0 - :nonlin-fric-dist 0.1 - :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 - :flags (surface-flags no-turn-around) - ) - ) +(define *flut-walk-mods* + (new 'static + 'surface + :name 'run + :turnv 54613.332 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 81920.0 + :target-speed 81920.0 + :seek0 1.5 + :seek90 3.0 + :seek180 2.0 + :fric 1.0 + :nonlin-fric-dist 0.1 + :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 + :flags (surface-flags no-turn-around))) -(define *flut-jump-mods* (new 'static 'surface - :name 'jump - :turnv 131072.0 - :turnvv 54613.332 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 81920.0 - :target-speed 81920.0 - :seek0 0.9 - :seek90 1.5 - :seek180 1.5 - :fric 0.2 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags jump) - ) - ) +(define *flut-jump-mods* + (new 'static + 'surface + :name 'jump + :turnv 131072.0 + :turnvv 54613.332 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 81920.0 + :target-speed 81920.0 + :seek0 0.9 + :seek90 1.5 + :seek180 1.5 + :fric 0.2 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags jump))) -(define *flut-double-jump-mods* (new 'static 'surface - :name 'jump-double - :turnv 131072.0 - :turnvv 54613.332 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 81920.0 - :target-speed 81920.0 - :seek0 0.9 - :seek90 1.5 - :seek180 1.5 - :fric 0.1 - :nonlin-fric-dist 10.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 (surface-flags jump) - ) - ) +(define *flut-double-jump-mods* + (new 'static + 'surface + :name 'jump-double + :turnv 131072.0 + :turnvv 54613.332 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 81920.0 + :target-speed 81920.0 + :seek0 0.9 + :seek90 1.5 + :seek180 1.5 + :fric 0.1 + :nonlin-fric-dist 10.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 (surface-flags jump))) -(define *flut-run-attack-mods* (new 'static 'surface - :name 'wheel-flip - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 122880.0 - :target-speed 122880.0 - :seek90 0.5 - :seek180 0.15 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 0.25 - :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 'attack - :flags (surface-flags no-turn-around no-rotate-toward-transv attacking) - ) - ) +(define *flut-run-attack-mods* + (new 'static + 'surface + :name 'wheel-flip + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 122880.0 + :target-speed 122880.0 + :seek90 0.5 + :seek180 0.15 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 0.25 + :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 'attack + :flags (surface-flags no-turn-around no-rotate-toward-transv attacking))) -(define *flut-air-attack-mods* (new 'static 'surface - :name 'flop - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 122880.0 - :target-speed 122880.0 - :seek0 1.0 - :seek90 0.3 - :seek180 1.5 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 0.25 - :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 'attack - :flags (surface-flags jump attacking) - ) - ) +(define *flut-air-attack-mods* + (new 'static + 'surface + :name 'flop + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 122880.0 + :target-speed 122880.0 + :seek0 1.0 + :seek90 0.3 + :seek180 1.5 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 0.25 + :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 'attack + :flags (surface-flags jump attacking))) (defbehavior target-flut-post-post target () (vector+! (-> self flut flut-trans) (-> self control trans) (-> self control unknown-vector12)) (quaternion-copy! (the-as quaternion (-> self flut flut-quat)) (-> self control quat)) (set! (-> self flut flut-scale quad) (-> self control scale quad)) (let ((v1-8 (-> *target-shadow-control* settings shadow-dir quad))) - (set! (-> *flutflut-shadow-control* settings shadow-dir quad) v1-8) - ) + (set! (-> *flutflut-shadow-control* settings shadow-dir quad) v1-8)) 0 - (none) - ) + (none)) (defbehavior target-flut-post target () (target-post) (target-flut-post-post) 0 - (none) - ) + (none)) (defbehavior target-flut-falling-anim-trans target () (let ((v1-2 (ja-group))) - (b! (or (= v1-2 eichar-flut-jump-loop-ja) (= v1-2 eichar-flut-jump-land-ja)) cfg-7 :delay (empty-form)) - ) + (b! (or (= v1-2 eichar-flut-jump-loop-ja) (= v1-2 eichar-flut-jump-land-ja)) cfg-7 :delay (empty-form))) (ja-channel-push! 1 (seconds 0.33)) (ja :group! eichar-flut-jump-loop-ja) (b! #t cfg-23 :delay (nop!)) (label cfg-7) (cond - ((and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (not (ja-group? eichar-flut-jump-land-ja)) - ) + ((and (logtest? (-> self control status) (cshape-moving-flags onsurf)) (not (ja-group? eichar-flut-jump-land-ja))) (ja-channel-push! 1 (seconds 0.02)) - (ja :group! eichar-flut-jump-land-ja) - ) - ((ja-group? eichar-flut-jump-loop-ja) - (ja :num! (loop!)) - ) - ((ja-group? eichar-flut-jump-land-ja) - (ja :num! (seek!)) - ) - ) + (ja :group! eichar-flut-jump-land-ja)) + ((ja-group? eichar-flut-jump-loop-ja) (ja :num! (loop!))) + ((ja-group? eichar-flut-jump-land-ja) (ja :num! (seek!)))) (label cfg-23) 0 - (none) - ) + (none)) (defbehavior target-flut-hit-ground-anim target () (cond ((ja-group? eichar-flut-jump-loop-ja) - (if (!= (-> self skel root-channel 0) (-> self skel channel)) - (ja-channel-push! 2 (seconds 0.05)) - (ja-channel-set! 2) - ) + (if (!= (-> self skel root-channel 0) (-> self skel channel)) (ja-channel-push! 2 (seconds 0.05)) (ja-channel-set! 2)) (ja :group! eichar-flut-jump-land-ja :num! min) (ja :chan 1 :group! eichar-flut-jump-forward-land-ja :num! min) (until (ja-done? 0) (suspend) (ja :num! (seek!)) - (ja :chan 1 :num! (chan 0)) - ) - #f - ) - ((let ((v1-33 (ja-group))) - (or (= v1-33 eichar-flut-jump-ja) (= v1-33 eichar-flut-jump-land-ja)) - ) - #f - ) + (ja :chan 1 :num! (chan 0))) + #f) + ((let ((v1-33 (ja-group))) (or (= v1-33 eichar-flut-jump-ja) (= v1-33 eichar-flut-jump-land-ja))) #f) ((ja-group? eichar-flut-double-jump-ja) (ja-channel-set! 1) (ja-no-eval :group! eichar-flut-jump-land-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - #f - ) - ((let ((v1-68 (ja-group))) - (or (= v1-68 eichar-flut-air-attack-ja) (= v1-68 eichar-flut-air-attack-loop-ja)) - ) + (ja :num! (seek!))) + #f) + ((let ((v1-68 (ja-group))) (or (= v1-68 eichar-flut-air-attack-ja) (= v1-68 eichar-flut-air-attack-loop-ja))) (ja-channel-set! 1) (ja-no-eval :group! eichar-flut-air-attack-land-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (compute-alignment! (-> self align)) (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) (suspend) - (ja :num! (seek!)) - ) - #f - ) - ) - ) + (ja :num! (seek!))) + #f))) (defbehavior target-flut-standard-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) - 'flut - ) + ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) 'flut) (else - (case arg2 - (('end-mode) - (go target-flut-get-off (process->handle arg0)) - ) - (('attack 'attack-or-shove 'attack-invinc) - (target-attacked - arg2 - (the-as attack-info (-> arg3 param 1)) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) - target-flut-hit - ) - ) - (('shove) - (when (!= (-> self next-state name) 'target-hit) - (mem-copy! (the-as pointer (-> self attack-info-rec)) (the-as pointer (-> arg3 param 1)) 104) - (when (not (logtest? (-> self attack-info-rec mask) (attack-mask attacker))) - (set! (-> self attack-info-rec attacker) (process->handle arg0)) - (logior! (-> self attack-info-rec mask) (attack-mask attacker)) - ) - (go target-flut-hit 'shove (-> self attack-info-rec)) - ) - ) - (('falling) - (if #t - (go target-flut-falling #f) - ) - ) - (('swim) - (let* ((gp-1 (-> self control last-known-safe-ground)) - (s3-1 (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self control trans))) - (f30-1 (fmax 8192.0 (fmin 40960.0 (vector-xz-length s3-1)))) - ) - (vector-xz-normalize! s3-1 f30-1) - (send-event - self - 'shove - #f - (static-attack-info - ((vector s3-1) - (shove-up - (+ (lerp-scale (the-as float 4096.0) (the-as float 16384.0) f30-1 (the-as float 4096.0) (the-as float 40960.0)) - (fmax 0.0 (- (-> gp-1 y) (-> self control trans y))) - ) - ) - (angle 'up) - ) - ) - ) - ) - ) - (('change-mode) - (case (-> arg3 param 0) - (('grab) - (go target-flut-grab) - ) - ) - ) - (('clone-anim) - (go target-flut-clone-anim (process->handle (the-as process (-> arg3 param 0)))) - ) - (else - (target-generic-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) - ) - ) + (case arg2 + (('end-mode) (go target-flut-get-off (process->handle arg0))) + (('attack 'attack-or-shove 'attack-invinc) + (target-attacked arg2 + (the-as attack-info (-> arg3 param 1)) + arg0 + (the-as touching-shapes-entry (-> arg3 param 0)) + target-flut-hit)) + (('shove) + (when (!= (-> self next-state name) 'target-hit) + (mem-copy! (the-as pointer (-> self attack-info-rec)) (the-as pointer (-> arg3 param 1)) 104) + (when (not (logtest? (-> self attack-info-rec mask) (attack-mask attacker))) + (set! (-> self attack-info-rec attacker) (process->handle arg0)) + (logior! (-> self attack-info-rec mask) (attack-mask attacker))) + (go target-flut-hit 'shove (-> self attack-info-rec)))) + (('falling) (if #t (go target-flut-falling #f))) + (('swim) + (let* ((gp-1 (-> self control last-known-safe-ground)) + (s3-1 (vector-! (new 'stack-no-clear 'vector) gp-1 (-> self control trans))) + (f30-1 (fmax 8192.0 (fmin 40960.0 (vector-xz-length s3-1))))) + (vector-xz-normalize! s3-1 f30-1) + (send-event self + 'shove + #f + (static-attack-info ((vector s3-1) + (shove-up (+ (lerp-scale (the-as float 4096.0) (the-as float 16384.0) f30-1 (the-as float 4096.0) (the-as float 40960.0)) + (fmax 0.0 (- (-> gp-1 y) (-> self control trans y))))) + (angle 'up)))))) + (('change-mode) + (case (-> arg3 param 0) + (('grab) (go target-flut-grab)))) + (('clone-anim) (go target-flut-clone-anim (process->handle (the-as process (-> arg3 param 0))))) + (else (target-generic-event-handler arg0 arg1 arg2 arg3)))))) (defbehavior target-flut-dangerous-event-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -354,1709 +276,1151 @@ (if ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> self control) - (the-as uint 224) - ) - (target-send-attack - arg0 - (the-as uint (-> self control unknown-symbol30)) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self control unknown-dword50) - (-> self control unknown-dword51) - ) - (target-flut-standard-event-handler arg0 arg1 arg2 arg3) - ) - ) + (the-as uint 224)) + (target-send-attack arg0 + (the-as uint (-> self control unknown-symbol30)) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control unknown-dword50) + (-> self control unknown-dword51)) + (target-flut-standard-event-handler arg0 arg1 arg2 arg3))) (('attack 'attack-or-shove 'attack-invinc) - (target-attacked - arg2 - (the-as attack-info (-> arg3 param 1)) - arg0 - (the-as touching-shapes-entry (-> arg3 param 0)) - target-flut-hit - ) - ) - (else - (target-flut-standard-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (target-attacked arg2 + (the-as attack-info (-> arg3 param 1)) + arg0 + (the-as touching-shapes-entry (-> arg3 param 0)) + target-flut-hit)) + (else (target-flut-standard-event-handler arg0 arg1 arg2 arg3)))) (defstate target-flut-start (target) :event target-flut-standard-event-handler - :exit (behavior () - (when (not (or (= (-> self next-state name) 'target-flut-stance) - (= (-> self next-state name) 'target-flut-walk) - (= (-> self next-state name) 'target-flut-jump) - (= (-> self next-state name) 'target-flut-double-jump) - (= (-> self next-state name) 'target-flut-hit-ground) - (= (-> self next-state name) 'target-flut-falling) - (= (-> self next-state name) 'target-flut-running-attack) - (= (-> self next-state name) 'target-flut-air-attack) - (= (-> self next-state name) 'target-flut-air-attack-hit-ground) - (= (-> self next-state name) 'target-flut-hit) - (= (-> self next-state name) 'target-flut-death) - (= (-> self next-state name) 'target-flut-get-on) - (= (-> self next-state name) 'target-flut-get-off) - (= (-> self next-state name) 'target-flut-get-off-jump) - (= (-> self next-state name) 'target-flut-grab) - (= (-> self next-state name) 'target-flut-clone-anim) - ) - ) - (let ((v1-33 (-> self manipy))) - (when v1-33 - (deactivate (-> v1-33 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (logclear! (-> self control root-prim prim-core action) (collide-action flut)) - (set! (-> self control unknown-surface00) *walk-mods*) - (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (target-collide-set! 'normal (the-as float 0.0)) - (set! (-> self control reaction) target-collision-reaction) - (set! (-> self control unknown-vector12 quad) (the-as uint128 0)) - (remove-setting! 'sound-flava) + :exit + (behavior () + (when (not (or (= (-> self next-state name) 'target-flut-stance) + (= (-> self next-state name) 'target-flut-walk) + (= (-> self next-state name) 'target-flut-jump) + (= (-> self next-state name) 'target-flut-double-jump) + (= (-> self next-state name) 'target-flut-hit-ground) + (= (-> self next-state name) 'target-flut-falling) + (= (-> self next-state name) 'target-flut-running-attack) + (= (-> self next-state name) 'target-flut-air-attack) + (= (-> self next-state name) 'target-flut-air-attack-hit-ground) + (= (-> self next-state name) 'target-flut-hit) + (= (-> self next-state name) 'target-flut-death) + (= (-> self next-state name) 'target-flut-get-on) + (= (-> self next-state name) 'target-flut-get-off) + (= (-> self next-state name) 'target-flut-get-off-jump) + (= (-> self next-state name) 'target-flut-grab) + (= (-> self next-state name) 'target-flut-clone-anim))) + (let ((v1-33 (-> self manipy))) + (when v1-33 + (deactivate (-> v1-33 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)))) + (logclear! (-> self control root-prim prim-core action) (collide-action flut)) + (set! (-> self control unknown-surface00) *walk-mods*) + (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (target-collide-set! 'normal (the-as float 0.0)) + (set! (-> self control reaction) target-collision-reaction) + (set! (-> self control unknown-vector12 quad) (the-as uint128 0)) + (remove-setting! 'sound-flava) + (target-exit))) + :code + (behavior ((arg0 handle)) (target-exit) - ) - ) - :code (behavior ((arg0 handle)) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (set-setting! 'sound-flava #f 30.0 (music-flava flutflut)) - (if (zero? (-> self flut)) - (set! (-> self flut) (new 'process 'flut-info)) - ) - (set! (-> self flut stick-lock) #f) - (set! (-> self flut flap-sound-id) (new-sound-id)) - (set! (-> self flut entity) #f) - (let ((v1-11 (handle->process arg0))) - (if v1-11 - (set! (-> self flut entity) (-> v1-11 entity)) - ) - ) - (target-collide-set! 'flut (the-as float 0.0)) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) (collide-action flut)) - (let ((s5-0 (-> self entity))) - (set! (-> self entity) (-> self flut entity)) - (set! (-> self manipy) - (manipy-spawn (-> self control trans) (-> self entity) *flutflut-sg* 'collide-shape-moving :to self) - ) - (set! (-> self entity) s5-0) - ) - (when (-> self manipy) - (send-event - (ppointer->process (-> self manipy)) - 'trans-hook - (lambda :behavior flutflut - () - (let* ((a0-0 (-> self parent-override)) - (v1-0 (if a0-0 - (-> a0-0 0 self-override) - ) - ) - ) - (set! (-> self root trans quad) (-> v1-0 flut flut-trans quad)) - (let ((a0-4 (-> v1-0 flut flut-quat quad))) - (set! (-> self root quat vec quad) a0-4) - ) - (set! (-> self root scale quad) (-> v1-0 flut flut-scale quad)) - (set! (-> self root ground-pat material) (the-as int (-> v1-0 control ground-pat material))) - (set! (-> self draw light-index) (the-as uint 255)) - (let ((a0-13 (-> v1-0 draw color-mult quad))) - (set! (-> self draw color-mult quad) a0-13) - ) - (let ((a0-15 (-> v1-0 draw color-emissive quad))) - (set! (-> self draw color-emissive quad) a0-15) - ) - (set! (-> self draw secondary-interp) (-> v1-0 draw secondary-interp)) - ) - ) - ) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) - (send-event (ppointer->process (-> self manipy)) 'art-joint-anim "flut-get-on" 0.0) - (send-event (ppointer->process (-> self manipy)) 'blend-shape #t) - (send-event - (ppointer->process (-> self manipy)) - 'eval - (lambda :behavior target - () - (set! (-> self attack-info intersection z) (the-as float #f)) - (let ((v1-1 (-> *target-shadow-control* settings shadow-dir quad))) - (set! (-> *flutflut-shadow-control* settings shadow-dir quad) v1-1) - ) - (let ((v0-0 *flutflut-shadow-control*)) - (set! (-> self draw shadow-ctrl) v0-0) - v0-0 - ) - ) - ) - ) - (remove-exit) - (go target-flut-get-on arg0) - ) - :post target-post - ) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (set-setting! 'sound-flava #f 30.0 (music-flava flutflut)) + (if (zero? (-> self flut)) (set! (-> self flut) (new 'process 'flut-info))) + (set! (-> self flut stick-lock) #f) + (set! (-> self flut flap-sound-id) (new-sound-id)) + (set! (-> self flut entity) #f) + (let ((v1-11 (handle->process arg0))) (if v1-11 (set! (-> self flut entity) (-> v1-11 entity)))) + (target-collide-set! 'flut (the-as float 0.0)) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (logior! (-> self control root-prim prim-core action) (collide-action flut)) + (let ((s5-0 (-> self entity))) + (set! (-> self entity) (-> self flut entity)) + (set! (-> self manipy) + (manipy-spawn (-> self control trans) (-> self entity) *flutflut-sg* 'collide-shape-moving :to self)) + (set! (-> self entity) s5-0)) + (when (-> self manipy) + (send-event (ppointer->process (-> self manipy)) + 'trans-hook + (lambda :behavior flutflut () + (let* ((a0-0 (-> self parent-override)) + (v1-0 (if a0-0 (-> a0-0 0 self-override)))) + (set! (-> self root trans quad) (-> v1-0 flut flut-trans quad)) + (let ((a0-4 (-> v1-0 flut flut-quat quad))) (set! (-> self root quat vec quad) a0-4)) + (set! (-> self root scale quad) (-> v1-0 flut flut-scale quad)) + (set! (-> self root ground-pat material) (the-as int (-> v1-0 control ground-pat material))) + (set! (-> self draw light-index) (the-as uint 255)) + (let ((a0-13 (-> v1-0 draw color-mult quad))) (set! (-> self draw color-mult quad) a0-13)) + (let ((a0-15 (-> v1-0 draw color-emissive quad))) (set! (-> self draw color-emissive quad) a0-15)) + (set! (-> self draw secondary-interp) (-> v1-0 draw secondary-interp))))) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) + (send-event (ppointer->process (-> self manipy)) 'art-joint-anim "flut-get-on" 0.0) + (send-event (ppointer->process (-> self manipy)) 'blend-shape #t) + (send-event (ppointer->process (-> self manipy)) + 'eval + (lambda :behavior target () + (set! (-> self attack-info intersection z) (the-as float #f)) + (let ((v1-1 (-> *target-shadow-control* settings shadow-dir quad))) + (set! (-> *flutflut-shadow-control* settings shadow-dir quad) v1-1)) + (let ((v0-0 *flutflut-shadow-control*)) (set! (-> self draw shadow-ctrl) v0-0) v0-0)))) + (remove-exit) + (go target-flut-get-on arg0)) + :post target-post) (defstate target-flut-stance (target) :event target-flut-standard-event-handler - :enter (behavior () - (set! (-> self control unknown-surface00) *flut-walk-mods*) - ) - :exit (-> target-flut-start exit) - :trans (behavior () - (if (move-legs?) - (go target-flut-walk) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max)) - ) - (if (can-hands? #t) - (go target-flut-running-attack) - ) - (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (and (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-37 (ja-group))) - (or (not (or (= v1-37 eichar-attack-punch-ja) - (= v1-37 eichar-attack-punch-end-ja) - (= v1-37 eichar-attack-punch-alt-end-ja) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - ) - (go target-flut-falling #f) - ) - ) - :code (behavior () - (let ((gp-0 22)) - (let ((v1-2 (ja-group))) - (cond - ((or (= v1-2 eichar-flut-walk-ja) (= v1-2 eichar-flut-squash-run-ja)) - (set! gp-0 60) - ) - ((ja-group? eichar-flut-get-on-ja) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - ) - ((ja-group? eichar-flut-smack-surface-ja) - (ja-no-eval :group! eichar-flut-smack-surface-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? eichar-flut-running-attack-ja) - (ja-no-eval :group! eichar-flut-running-attack-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - (if (not (ja-group? eichar-flut-idle-ja)) - (ja-channel-push! 1 (the-as time-frame gp-0)) - ) - ) - (ja :group! eichar-flut-idle-ja) - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post target-flut-post - ) - -(defstate target-flut-walk (target) - :event target-flut-standard-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *flut-walk-mods*) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-surface00 turnv))) - (set! (-> self control unknown-int21) (the-as int (-> self control unknown-surface00 target-speed))) - ) - :exit (behavior () - (set! (-> self control unknown-surface00 turnv) (the-as float (-> self control unknown-uint20))) - (set! (-> self control unknown-surface00 target-speed) (the-as float (-> self control unknown-uint30))) - ((-> target-flut-start exit)) - ) - :trans (behavior () - (if (not (move-legs?)) - (go target-flut-stance) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max)) - ) - (if (can-hands? #t) - (go target-flut-running-attack) - ) - (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (and (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-37 (ja-group))) - (or (not (or (= v1-37 eichar-attack-punch-ja) - (= v1-37 eichar-attack-punch-end-ja) - (= v1-37 eichar-attack-punch-alt-end-ja) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - ) - (go target-flut-falling #f) - ) - (let ((f30-1 (fabs (deg-diff (quaternion-y-angle (-> self control dir-targ)) (y-angle (-> self control)))))) - (set! (-> self control unknown-surface00 turnv) (lerp-scale - (the-as float (-> self control unknown-uint20)) - (* 4.0 (the-as float (-> self control unknown-uint20))) - f30-1 - (the-as float 8192.0) - (the-as float 21845.334) - ) - ) - (if (and (= (-> self control surf name) '*tar-surface*) (< 8192.0 f30-1)) - (seek! - (-> self control unknown-surface00 target-speed) - (the-as float 4096.0) - (* 245760.0 (seconds-per-frame)) - ) - (seek! - (-> self control unknown-surface00 target-speed) - (the-as float (-> self control unknown-uint30)) - (* 81920.0 (seconds-per-frame)) - ) - ) - ) - ) - :code (behavior () - (let ((f28-0 0.0) - (f30-0 0.0) - ) + :enter + (behavior () + (set! (-> self control unknown-surface00) *flut-walk-mods*)) + :exit + (-> target-flut-start + exit) + :trans + (behavior () + (if (move-legs?) (go target-flut-walk)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max))) + (if (can-hands? #t) (go target-flut-running-attack)) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (and (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-37 (ja-group))) + (or (not (or (= v1-37 eichar-attack-punch-ja) (= v1-37 eichar-attack-punch-end-ja) (= v1-37 eichar-attack-punch-alt-end-ja))) + (< 4096.0 (target-height-above-ground)))))) + (go target-flut-falling #f))) + :code + (behavior () (let ((gp-0 22)) - (cond - ((ja-group? eichar-flut-idle-ja) - (set! gp-0 60) - ) - ((let ((v1-9 (ja-group))) - (or (= v1-9 eichar-flut-jump-ja) - (= v1-9 eichar-flut-jump-loop-ja) - (= v1-9 eichar-flut-air-attack-ja) - (= v1-9 eichar-flut-air-attack-land-ja) - ) - ) - (ja-channel-push! 1 (seconds 0.08)) - (ja-no-eval :group! eichar-flut-squash-run-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (set! f30-0 (cond - ((ja-group? eichar-flut-squash-run-ja) - (ja-channel-set! 2) - 1.0 - ) - ((ja-group? eichar-flut-walk-ja) - (set! f28-0 (ja-frame-num 0)) - (-> self skel root-channel 1 frame-interp) - ) - (else - (ja-channel-push! 2 (the-as time-frame gp-0)) - f30-0 - ) - ) - ) - ) - (ja-no-eval :group! eichar-flut-walk-ja :num! (loop!) :dist 49152.0 :frame-num f28-0) - (ja-no-eval :chan 1 - :group! eichar-flut-run-ja - :num! (identity (* 0.5 f28-0)) - :frame-interp f30-0 - :dist 40960.0 - ) + (let ((v1-2 (ja-group))) + (cond + ((or (= v1-2 eichar-flut-walk-ja) (= v1-2 eichar-flut-squash-run-ja)) (set! gp-0 60)) + ((ja-group? eichar-flut-get-on-ja) (ja-no-eval :num! (seek!)) (while (not (ja-done? 0)) (suspend) (ja-eval))) + ((ja-group? eichar-flut-smack-surface-ja) + (ja-no-eval :group! eichar-flut-smack-surface-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((ja-group? eichar-flut-running-attack-ja) + (ja-no-eval :group! eichar-flut-running-attack-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) + (if (not (ja-group? eichar-flut-idle-ja)) (ja-channel-push! 1 (the-as time-frame gp-0)))) + (ja :group! eichar-flut-idle-ja) (loop (suspend) - (let ((f0-13 (lerp-scale - (the-as float 0.0) - (the-as float 1.0) - (-> self control unknown-float01) - (the-as float 49152.0) - (the-as float 77824.0) - ) - ) - ) - (set! f30-0 (seek f30-0 f0-13 (* 4.0 (seconds-per-frame)))) - ) - (set! (-> self skel root-channel 1 frame-interp) f30-0) - (let* ((f0-16 (current-cycle-distance (-> self skel))) - (f0-18 (/ (* 58.0 (-> self control unknown-float01)) (* 60.0 f0-16))) - ) - (if (= (-> self control surf name) '*tar-surface*) - (set! f0-18 (* 0.4 (-> self control unknown-float12))) - ) - (ja :num! (loop! f0-18)) - ) - (ja :chan 1 :num-func num-func-identity :frame-num (* 0.5 (ja-frame-num 0))) - (let ((f0-22 (ja-aframe-num 0))) + (ja :num! (loop!)))) + :post target-flut-post) + +(defstate target-flut-walk (target) + :event target-flut-standard-event-handler + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *flut-walk-mods*) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-surface00 turnv))) + (set! (-> self control unknown-int21) (the-as int (-> self control unknown-surface00 target-speed)))) + :exit + (behavior () + (set! (-> self control unknown-surface00 turnv) (the-as float (-> self control unknown-uint20))) + (set! (-> self control unknown-surface00 target-speed) (the-as float (-> self control unknown-uint30))) + ((-> target-flut-start exit))) + :trans + (behavior () + (if (not (move-legs?)) (go target-flut-stance)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max))) + (if (can-hands? #t) (go target-flut-running-attack)) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (and (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-37 (ja-group))) + (or (not (or (= v1-37 eichar-attack-punch-ja) (= v1-37 eichar-attack-punch-end-ja) (= v1-37 eichar-attack-punch-alt-end-ja))) + (< 4096.0 (target-height-above-ground)))))) + (go target-flut-falling #f)) + (let ((f30-1 (fabs (deg-diff (quaternion-y-angle (-> self control dir-targ)) (y-angle (-> self control)))))) + (set! (-> self control unknown-surface00 turnv) + (lerp-scale (the-as float (-> self control unknown-uint20)) + (* 4.0 (the-as float (-> self control unknown-uint20))) + f30-1 + (the-as float 8192.0) + (the-as float 21845.334))) + (if (and (= (-> self control surf name) '*tar-surface*) (< 8192.0 f30-1)) + (seek! (-> self control unknown-surface00 target-speed) (the-as float 4096.0) (* 245760.0 (seconds-per-frame))) + (seek! (-> self control unknown-surface00 target-speed) + (the-as float (-> self control unknown-uint30)) + (* 81920.0 (seconds-per-frame)))))) + :code + (behavior () + (let ((f28-0 0.0) + (f30-0 0.0)) + (let ((gp-0 22)) (cond - ((and (>= (-> self skel effect last-frame-num) 20.0) (< f0-22 20.0)) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 51 (seconds 0.4)) - ) - ((and (< (-> self skel effect last-frame-num) 12.0) (>= f0-22 12.0)) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 51 (seconds 0.4)) - ) - ) - ) - ) - ) - ) - :post target-flut-post - ) + ((ja-group? eichar-flut-idle-ja) (set! gp-0 60)) + ((let ((v1-9 (ja-group))) + (or (= v1-9 eichar-flut-jump-ja) + (= v1-9 eichar-flut-jump-loop-ja) + (= v1-9 eichar-flut-air-attack-ja) + (= v1-9 eichar-flut-air-attack-land-ja))) + (ja-channel-push! 1 (seconds 0.08)) + (ja-no-eval :group! eichar-flut-squash-run-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (set! f30-0 + (cond + ((ja-group? eichar-flut-squash-run-ja) (ja-channel-set! 2) 1.0) + ((ja-group? eichar-flut-walk-ja) (set! f28-0 (ja-frame-num 0)) (-> self skel root-channel 1 frame-interp)) + (else (ja-channel-push! 2 (the-as time-frame gp-0)) f30-0)))) + (ja-no-eval :group! eichar-flut-walk-ja :num! (loop!) :dist 49152.0 :frame-num f28-0) + (ja-no-eval :chan 1 :group! eichar-flut-run-ja :num! (identity (* 0.5 f28-0)) :frame-interp f30-0 :dist 40960.0) + (loop + (suspend) + (let ((f0-13 (lerp-scale (the-as float 0.0) + (the-as float 1.0) + (-> self control unknown-float01) + (the-as float 49152.0) + (the-as float 77824.0)))) + (set! f30-0 (seek f30-0 f0-13 (* 4.0 (seconds-per-frame))))) + (set! (-> self skel root-channel 1 frame-interp) f30-0) + (let* ((f0-16 (current-cycle-distance (-> self skel))) + (f0-18 (/ (* 58.0 (-> self control unknown-float01)) (* 60.0 f0-16)))) + (if (= (-> self control surf name) '*tar-surface*) (set! f0-18 (* 0.4 (-> self control unknown-float12)))) + (ja :num! (loop! f0-18))) + (ja :chan 1 :num-func num-func-identity :frame-num (* 0.5 (ja-frame-num 0))) + (let ((f0-22 (ja-aframe-num 0))) + (cond + ((and (>= (-> self skel effect last-frame-num) 20.0) (< f0-22 20.0)) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 51 (seconds 0.4))) + ((and (< (-> self skel effect last-frame-num) 12.0) (>= f0-22 12.0)) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 51 (seconds 0.4)))))))) + :post target-flut-post) (defstate target-flut-jump (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (and (= message 'touched) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self control) - (the-as uint 6) - ) - (< 0.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> self control trans-old)) (-> self control trans)) - ) - ) - ) - (send-event proc 'bonk (-> block param 0) (-> self control ground-impact-vel)) - (when (target-send-attack - proc - (the-as uint 'flut-bonk) - (the-as touching-shapes-entry (-> block param 0)) - (-> self control unknown-dword50) - (-> self control unknown-dword51) - ) - ) - ) - (case message - (('jump) - (go target-flut-jump (the-as float (-> block param 0)) (the-as float (-> block param 0))) - ) - (else - (target-flut-standard-event-handler proc argc message block) - ) - ) - ) - :enter (behavior ((arg0 float) (arg1 float)) - (set-time! (-> self state-time)) - (sound-play "jump" :pitch -0.5) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *flut-jump-mods*) - (set! (-> self control unknown-float123) - (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) - ) - (set! (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) - ) - ) - :exit (behavior () - (target-exit) - ((-> target-flut-start exit)) - ) - :trans (behavior () - (set! (-> self control unknown-float123) - (fmax - (-> self control unknown-float123) - (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) - ) - ) - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-flut-hit-ground) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 40960.0) - (and (not (logtest? (-> self water flags) (water-flags wt09))) - (not (logtest? (-> self state-flags) (state-flags prevent-jump))) - (< 4096.0 (target-height-above-ground)) - ) - ) - (go target-flut-double-jump (-> *FLUT-bank* double-jump-height-min) (-> *FLUT-bank* double-jump-height-max)) - ) - (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 61440.0) - (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) - (not (logtest? (-> self state-flags) (state-flags prevent-attack))) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) - ) - ) - ) - (go target-flut-air-attack (-> *FLUT-bank* air-attack-speed)) - ) - (when (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) - (and (time-elapsed? (-> self state-time) (seconds 0.1)) - (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - ) - #t - ) - (logior! (-> self control status) (cshape-moving-flags onsurf)) - enter-state - 'stuck - (go target-flut-hit-ground) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - (seek! - (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) - (seconds-per-frame) - ) - ) - :code (behavior ((arg0 float) (arg1 float)) - (ja-channel-push! 2 (seconds 0.12)) - (ja :group! eichar-flut-jump-ja :num! min) - (ja :chan 1 - :group! eichar-flut-jump-forward-ja - :num! (chan 0) - :frame-interp (-> self control unknown-float122) - ) - (suspend) - (ja :group! eichar-flut-jump-ja :num! (+!)) - (ja :chan 1 - :group! eichar-flut-jump-forward-ja - :num! (chan 0) - :frame-interp (-> self control unknown-float122) - ) - (suspend) - (until (ja-done? 0) - (let ((f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (f0-10 (/ (- 10.0 (ja-aframe-num 0)) (* (ja-step 0) (ja-speed 0)))) - (gp-1 (-> self skel root-channel 0)) - ) - (set! (-> gp-1 param 0) (the float (+ (-> gp-1 frame-group data 0 length) -1))) - (let ((v1-45 (and (< 0.0 f30-0) (< 0.0 f0-10)))) - (set! (-> gp-1 param 1) - (the-as - float - (if v1-45 - (fmin (fmin 3.0 f0-10) (/ (* 5.0 f0-10) (the float (time-to-apex f30-0 (the-as float -245760.0))))) - 1.0 - ) - ) - ) - ) - (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) - ) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (and (= message 'touched) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self control) + (the-as uint 6)) + (< 0.0 + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> self control trans-old)) (-> self control trans))))) + (send-event proc 'bonk (-> block param 0) (-> self control ground-impact-vel)) + (when (target-send-attack proc + (the-as uint 'flut-bonk) + (the-as touching-shapes-entry (-> block param 0)) + (-> self control unknown-dword50) + (-> self control unknown-dword51)))) + (case message + (('jump) (go target-flut-jump (the-as float (-> block param 0)) (the-as float (-> block param 0)))) + (else (target-flut-standard-event-handler proc argc message block)))) + :enter + (behavior ((arg0 float) (arg1 float)) + (set-time! (-> self state-time)) + (sound-play "jump" :pitch -0.5) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *flut-jump-mods*) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01)))))) + (set! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))))) + :exit + (behavior () + (target-exit) + ((-> target-flut-start exit))) + :trans + (behavior () + (set! (-> self control unknown-float123) + (fmax (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))))) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-flut-hit-ground)) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) x) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 40960.0) + (and (not (logtest? (-> self water flags) (water-flags wt09))) + (not (logtest? (-> self state-flags) (state-flags prevent-jump))) + (< 4096.0 (target-height-above-ground)))) + (go target-flut-double-jump (-> *FLUT-bank* double-jump-height-min) (-> *FLUT-bank* double-jump-height-max))) + (if (and (cpad-pressed? (-> self control unknown-cpad-info00 number) square) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 61440.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) + (not (logtest? (-> self state-flags) (state-flags prevent-attack))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08))))) + (go target-flut-air-attack (-> *FLUT-bank* air-attack-speed))) + (when (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + (and (time-elapsed? (-> self state-time) (seconds 0.1)) + (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))))) + #t) + (logior! (-> self control status) (cshape-moving-flags onsurf)) + enter-state + 'stuck + (go target-flut-hit-ground)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (seek! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (seconds-per-frame))) + :code + (behavior ((arg0 float) (arg1 float)) + (ja-channel-push! 2 (seconds 0.12)) + (ja :group! eichar-flut-jump-ja :num! min) + (ja :chan 1 :group! eichar-flut-jump-forward-ja :num! (chan 0) :frame-interp (-> self control unknown-float122)) (suspend) - ) - (ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0) - (ja :chan 1 - :group! eichar-flut-jump-forward-loop-ja - :num! (chan 0) - :frame-interp (-> self control unknown-float122) - ) - (loop + (ja :group! eichar-flut-jump-ja :num! (+!)) + (ja :chan 1 :group! eichar-flut-jump-forward-ja :num! (chan 0) :frame-interp (-> self control unknown-float122)) (suspend) - (ja :group! eichar-flut-jump-loop-ja :num! (loop!)) - (ja :chan 1 - :group! eichar-flut-jump-forward-loop-ja - :num! (chan 0) - :frame-interp (-> self control unknown-float122) - ) - ) - ) - :post target-flut-post - ) + (until (ja-done? 0) + (let ((f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (f0-10 (/ (- 10.0 (ja-aframe-num 0)) (* (ja-step 0) (ja-speed 0)))) + (gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (the float (+ (-> gp-1 frame-group data 0 length) -1))) + (let ((v1-45 (and (< 0.0 f30-0) (< 0.0 f0-10)))) + (set! (-> gp-1 param 1) + (the-as float + (if v1-45 (fmin (fmin 3.0 f0-10) (/ (* 5.0 f0-10) (the float (time-to-apex f30-0 (the-as float -245760.0))))) 1.0)))) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) + (suspend)) + (ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0) + (ja :chan 1 :group! eichar-flut-jump-forward-loop-ja :num! (chan 0) :frame-interp (-> self control unknown-float122)) + (loop + (suspend) + (ja :group! eichar-flut-jump-loop-ja :num! (loop!)) + (ja :chan 1 :group! eichar-flut-jump-forward-loop-ja :num! (chan 0) :frame-interp (-> self control unknown-float122)))) + :post target-flut-post) (defstate target-flut-double-jump (target) - :event (-> target-flut-jump event) - :enter (behavior ((arg0 float) (arg1 float)) - (set-time! (-> self state-time)) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) - (set! (-> self control dynam gravity-max) 40960.0) - (set! (-> self control dynam gravity-length) 245760.0) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *flut-double-jump-mods*) - ) - :exit (behavior () - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (target-exit) - ((-> target-flut-start exit)) - ) - :trans (behavior () - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-flut-hit-ground) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons square) - ) - (and (not (logtest? (-> self state-flags) (state-flags prevent-attack))) - (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08)) - ) - (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) - (< 4096.0 (target-height-above-ground)) - ) - ) - (go target-flut-air-attack (-> *FLUT-bank* air-attack-speed)) - ) - (if (!= (-> self state-time) (current-time)) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - ) - (if (ja-group? eichar-flut-double-jump-ja) - (sound-play "flut-flap" :id (-> self flut flap-sound-id)) - ) - (seek! - (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) - (seconds-per-frame) - ) - ) - :code (behavior ((arg0 float) (arg1 float)) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-flut-double-jump-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 3 (seconds 0.1)) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self control unknown-surface00) *flut-jump-mods*) - (dotimes (gp-0 1) - (ja-no-eval :group! eichar-flut-double-jump-ja :num! (seek!) :frame-num (ja-aframe (the-as float 14.0) 0)) + :event + (-> target-flut-jump + event) + :enter + (behavior ((arg0 float) (arg1 float)) + (set-time! (-> self state-time)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #t) (-> self control transv)) + (set! (-> self control dynam gravity-max) 40960.0) + (set! (-> self control dynam gravity-length) 245760.0) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *flut-double-jump-mods*)) + :exit + (behavior () + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (target-exit) + ((-> target-flut-start exit))) + :trans + (behavior () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-flut-hit-ground)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons square)) + (and (not (logtest? (-> self state-flags) (state-flags prevent-attack))) + (not (logtest? (-> self control unknown-surface01 flags) (surface-flags prevent-attacks-during-launch-jump surf08))) + (time-elapsed? (-> self control unknown-dword36) (the-as time-frame (-> *TARGET-bank* stuck-timeout))) + (< 4096.0 (target-height-above-ground)))) + (go target-flut-air-attack (-> *FLUT-bank* air-attack-speed))) + (if (!= (-> self state-time) (current-time)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv))) + (if (ja-group? eichar-flut-double-jump-ja) (sound-play "flut-flap" :id (-> self flut flap-sound-id))) + (seek! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (seconds-per-frame))) + :code + (behavior ((arg0 float) (arg1 float)) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-flut-double-jump-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 3 (seconds 0.1)) (suspend) - (ja :num! (seek!)) - ) - ) - (while (< 8192.0 (target-height-above-ground)) - (suspend) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 3 (seconds 0.1)) - (ja :num! (loop!)) - (if (< (ja-aframe-num 0) 14.0) - (ja :num-func num-func-identity :frame-num (ja-aframe (the-as float 14.0) 0)) - ) - (seek! - (-> self control dynam gravity-max) - (-> self control unknown-dynamics00 gravity-max) - (* 163840.0 (seconds-per-frame)) - ) - (seek! - (-> self control dynam gravity-length) - (-> self control unknown-dynamics00 gravity-length) - (* 163840.0 (seconds-per-frame)) - ) - ) - (current-time) - (ja-channel-push! 2 (seconds 0.1)) - (ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0) - (ja :chan 1 - :group! eichar-flut-jump-forward-loop-ja - :num! min - :frame-interp (-> self control unknown-float122) - ) - (loop - (suspend) - (seek! - (-> self control dynam gravity-max) - (-> self control unknown-dynamics00 gravity-max) - (* 163840.0 (seconds-per-frame)) - ) - (seek! - (-> self control dynam gravity-length) - (-> self control unknown-dynamics00 gravity-length) - (* 163840.0 (seconds-per-frame)) - ) - (ja :num! (loop! max)) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) - ) - ) - :post target-flut-post - ) + (ja :num! (seek!))) + (set! (-> self control unknown-surface00) *flut-jump-mods*) + (dotimes (gp-0 1) + (ja-no-eval :group! eichar-flut-double-jump-ja :num! (seek!) :frame-num (ja-aframe (the-as float 14.0) 0)) + (until (ja-done? 0) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 3 (seconds 0.1)) + (suspend) + (ja :num! (seek!)))) + (while (< 8192.0 (target-height-above-ground)) + (suspend) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 3 (seconds 0.1)) + (ja :num! (loop!)) + (if (< (ja-aframe-num 0) 14.0) (ja :num-func num-func-identity :frame-num (ja-aframe (the-as float 14.0) 0))) + (seek! (-> self control dynam gravity-max) + (-> self control unknown-dynamics00 gravity-max) + (* 163840.0 (seconds-per-frame))) + (seek! (-> self control dynam gravity-length) + (-> self control unknown-dynamics00 gravity-length) + (* 163840.0 (seconds-per-frame)))) + (current-time) + (ja-channel-push! 2 (seconds 0.1)) + (ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0) + (ja :chan 1 :group! eichar-flut-jump-forward-loop-ja :num! min :frame-interp (-> self control unknown-float122)) + (loop + (suspend) + (seek! (-> self control dynam gravity-max) + (-> self control unknown-dynamics00 gravity-max) + (* 163840.0 (seconds-per-frame))) + (seek! (-> self control dynam gravity-length) + (-> self control unknown-dynamics00 gravity-length) + (* 163840.0 (seconds-per-frame))) + (ja :num! (loop! max)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)))) + :post target-flut-post) (defstate target-flut-hit-ground (target) :event target-flut-standard-event-handler - :enter (behavior () - (target-land-effect) - (if (< 40960.0 (-> self control ground-impact-vel)) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.2)) - ) - (set! (-> self control unknown-dword31) 0) - (set! (-> self control unknown-dword33) 0) - (set! (-> self control unknown-surface00) *flut-walk-mods*) - ) - :exit (-> target-flut-start exit) - :trans (behavior () - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max)) - ) - (if (move-legs?) - (go target-flut-walk) - ) - (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (and (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-34 (ja-group))) - (or (not (or (= v1-34 eichar-attack-punch-ja) - (= v1-34 eichar-attack-punch-end-ja) - (= v1-34 eichar-attack-punch-alt-end-ja) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - ) - (go target-flut-falling #f) - ) - ) - :code (behavior () - (let ((t9-0 target-flut-hit-ground-anim)) - (t9-0) - ) - (go target-flut-stance) - ) - :post target-flut-post - ) + :enter + (behavior () + (target-land-effect) + (if (< 40960.0 (-> self control ground-impact-vel)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.2))) + (set! (-> self control unknown-dword31) 0) + (set! (-> self control unknown-dword33) 0) + (set! (-> self control unknown-surface00) *flut-walk-mods*)) + :exit + (-> target-flut-start + exit) + :trans + (behavior () + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max))) + (if (move-legs?) (go target-flut-walk)) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (and (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-34 (ja-group))) + (or (not (or (= v1-34 eichar-attack-punch-ja) (= v1-34 eichar-attack-punch-end-ja) (= v1-34 eichar-attack-punch-alt-end-ja))) + (< 4096.0 (target-height-above-ground)))))) + (go target-flut-falling #f))) + :code + (behavior () + (let ((t9-0 target-flut-hit-ground-anim)) (t9-0)) + (go target-flut-stance)) + :post target-flut-post) (defstate target-flut-falling (target) - :event (-> target-flut-jump event) - :enter (behavior ((arg0 symbol)) - (set! (-> self control unknown-surface00) *flut-jump-mods*) - (set-time! (-> self state-time)) - ) - :exit (-> target-flut-start exit) - :trans (behavior () - (when (or (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) - (and (time-elapsed? (-> self state-time) (/ (the-as int (-> *TARGET-bank* stuck-time)) 2)) - (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - ) - #t - ) - ) - (logior! (-> self control status) (cshape-moving-flags onsurf)) - (go target-flut-hit-ground) - ) - (seek! - (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) - (seconds-per-frame) - ) - ) - :code (behavior ((arg0 symbol)) - (cond - ((ja-group? eichar-flut-jump-loop-ja) - ) - ((ja-group? eichar-flut-double-jump-ja) - (ja-channel-push! 2 (seconds 0.2)) - ) - (else - (ja-channel-push! 2 (seconds 0.5)) - ) - ) - (ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0) - (ja :chan 1 - :group! eichar-flut-jump-forward-loop-ja - :num! min - :frame-interp (-> self control unknown-float122) - ) - (loop - (suspend) - (ja :num! (loop! max)) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)) - ) - ) - :post target-flut-post - ) + :event + (-> target-flut-jump + event) + :enter + (behavior ((arg0 symbol)) + (set! (-> self control unknown-surface00) *flut-jump-mods*) + (set-time! (-> self state-time))) + :exit + (-> target-flut-start + exit) + :trans + (behavior () + (when (or (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + (and (time-elapsed? (-> self state-time) (/ (the-as int (-> *TARGET-bank* stuck-time)) 2)) + (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))))) + #t)) + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (go target-flut-hit-ground)) + (seek! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.000048828126 (+ -10240.0 (-> self control unknown-float01))))) + (seconds-per-frame))) + :code + (behavior ((arg0 symbol)) + (cond + ((ja-group? eichar-flut-jump-loop-ja)) + ((ja-group? eichar-flut-double-jump-ja) (ja-channel-push! 2 (seconds 0.2))) + (else (ja-channel-push! 2 (seconds 0.5)))) + (ja-no-eval :group! eichar-flut-jump-loop-ja :num! (loop!) :frame-num 0.0) + (ja :chan 1 :group! eichar-flut-jump-forward-loop-ja :num! min :frame-interp (-> self control unknown-float122)) + (loop + (suspend) + (ja :num! (loop! max)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self control unknown-float122)))) + :post target-flut-post) (defstate target-flut-running-attack (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (cond - (((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self control) - (the-as uint 224) - ) - (let ((gp-1 (target-send-attack - proc - (the-as uint (-> self control unknown-symbol30)) - (the-as touching-shapes-entry (-> block param 0)) - (-> self control unknown-dword50) - (-> self control unknown-dword51) - ) - ) - ) - (when gp-1 - (set! (-> self control unknown-uint20) (the-as uint (current-time))) - (let ((v1-9 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) - proc - ) - ) - ) - (when v1-9 - (let* ((s5-1 (-> (the-as process-drawable v1-9) root)) - (v1-11 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) collide-shape)) - s5-1 - ) - ) - ) - (if (and v1-11 - (or (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core collide-as) (collide-kind enemy)) - (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core action) (collide-action attackable)) - ) - ) - (set! (-> self control unknown-uint31) (the-as uint 1)) - ) - ) - ) - ) - (when (or (= gp-1 'die) (= gp-1 'push)) - (let ((v0-2 (the-as object (current-time)))) - (set! (-> self control unknown-int21) (the-as int v0-2)) - v0-2 - ) - ) - ) - ) - ) - (else - (target-flut-dangerous-event-handler proc argc message block) - ) - ) - ) - (else - (target-flut-dangerous-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-uint20) (the-as uint 0)) - (set! (-> self control unknown-int21) 0) - (set! (-> self control unknown-uint31) (the-as uint 0)) - (set! (-> self control unknown-surface00) *flut-run-attack-mods*) - (set! (-> *run-attack-mods* turnv) 655360.0) - (set! (-> *run-attack-mods* turnvv) 655360.0) - (target-start-attack) - (target-danger-set! 'flut-attack #f) - (when (and (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) - (time-elapsed? (-> self control unknown-dword82) (seconds 0.25)) - ) - (let ((gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat))) - (s5-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 32))) - ) - (set! (-> gp-0 y) 0.0) - (vector-normalize! gp-0 (+ 81920.0 (-> *TARGET-bank* yellow-projectile-speed))) - (vector+! gp-0 gp-0 (-> self control transv)) - (process-spawn - projectile-yellow - :init projectile-init-by-other - (-> self entity) - s5-0 - gp-0 - (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) - 281 - 265 - ) - #f - :to self - ) - ) - (set-time! (-> self control unknown-dword82)) - ) - ) - :exit (behavior () - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (set! (-> *run-attack-mods* turnv) 0.0) - (set! (-> *run-attack-mods* turnvv) 0.0) - (set-time! (-> self control unknown-dword31)) - (target-exit) - ) - :trans (behavior () - (when (!= (-> self state-time) (current-time)) - (if (and (or (smack-surface? #t) - (and (>= (-> self control unknown-float63) 0.7) - (not (logtest? (-> self control status) (cshape-moving-flags t-act))) - ) - ) - (begin - (set! (-> self control unknown-int21) (the-as int (current-time))) - (set! (-> self control unknown-float81) 0.0) - (let ((gp-0 (new-stack-vector0)) - (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - 0.0 - (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) - (let* ((f0-5 (vector-length gp-0)) - (f1-1 f0-5) - (f2-1 (fmin 0.0 f30-0)) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) - (vector-float*! gp-0 gp-0 (/ f0-5 f1-1)) - ) - ) - ) - #t - ) - (or (zero? (-> self control unknown-uint20)) - (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 12)) - ) - (!= (-> self control unknown-uint31) 1) - ) - (target-shoved (meters 2) (-> *TARGET-bank* smack-surface-height) (the-as process #f) target-flut-hit) - ) - (if (and (logtest? (-> self water flags) (water-flags wt09)) - (zero? (mod (- (current-time) (-> self state-time)) 21)) - ) - (create-splash - (-> self water) - (the-as float 0.6) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg mouth)) - 0 - (-> self control transv) - ) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.02)) - (sound-play "flut-hit") - (ja :group! eichar-flut-running-attack-ja :num! min) - (set! (-> self control dynam gravity-max) 368640.0) - (set! (-> self control dynam gravity-length) 368640.0) - (let ((f28-0 0.0) - (f30-0 (the-as float (if (= (-> self control unknown-dword82) (current-time)) - 0.2 - 0.8 - ) - ) - ) - ) - (until (or (ja-done? 0) (< f30-0 0.05)) - (compute-alignment! (-> self align)) - (when (not (ja-min? 0)) - (cond - ((and (>= (ja-aframe-num 0) 20.0) - (and (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-39 (ja-group))) - (or (not (or (= v1-39 eichar-attack-punch-ja) - (= v1-39 eichar-attack-punch-end-ja) - (= v1-39 eichar-attack-punch-alt-end-ja) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 12)) - ) - ) - (go target-flut-falling #f) - ) - ((and (nonzero? (-> self control unknown-uint30)) - (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint30)))) (the-as uint 12)) - ) - (set-forward-vel (the-as float 0.0)) - (set! f30-0 0.0) - ) - ((ja-done? 0) - (set-forward-vel f28-0) - ) - (else - (set! f28-0 - (* f30-0 (target-align-vel-z-adjust (-> self align delta trans z)) (-> *display* frames-per-second)) - ) - (set-forward-vel f28-0) - ) - ) - ) - (let ((gp-2 (new-stack-vector0))) - (vector-matrix*! gp-2 (-> self control transv) (-> self control unknown-matrix00)) - (set! (-> gp-2 y) 0.0) - (vector-matrix*! (-> self control unknown-vector120) gp-2 (-> self control unknown-matrix01)) - ) - (suspend) - (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) - (if (time-elapsed? (-> self state-time) (seconds 0.1)) - (set! (-> *flut-run-attack-mods* turnvv) 0.0) - ) - (if (time-elapsed? (-> self state-time) (seconds 0.1)) - (set! f30-0 (* f30-0 (the-as float (fmin 1.0 (the-as float (-> self control unknown-float140)))))) - ) - ) - (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-105 (ja-group))) - (or (not (or (= v1-105 eichar-attack-punch-ja) - (= v1-105 eichar-attack-punch-end-ja) - (= v1-105 eichar-attack-punch-alt-end-ja) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - (go target-flut-falling #f) - ) - (when (!= f30-0 0.0) - (set! (-> self trans-hook) (-> target-flut-hit-ground trans)) - (if (not (ja-done? 0)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (ja-no-eval :group! eichar-flut-running-attack-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (cond + (((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self control) + (the-as uint 224)) + (let ((gp-1 (target-send-attack proc + (the-as uint (-> self control unknown-symbol30)) + (the-as touching-shapes-entry (-> block param 0)) + (-> self control unknown-dword50) + (-> self control unknown-dword51)))) + (when gp-1 + (set! (-> self control unknown-uint20) (the-as uint (current-time))) + (let ((v1-9 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) proc))) + (when v1-9 + (let* ((s5-1 (-> (the-as process-drawable v1-9) root)) + (v1-11 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) collide-shape)) s5-1))) + (if (and v1-11 + (or (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core collide-as) (collide-kind enemy)) + (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core action) (collide-action attackable)))) + (set! (-> self control unknown-uint31) (the-as uint 1)))))) + (when (or (= gp-1 'die) (= gp-1 'push)) + (let ((v0-2 (the-as object (current-time)))) (set! (-> self control unknown-int21) (the-as int v0-2)) v0-2))))) + (else (target-flut-dangerous-event-handler proc argc message block)))) + (else (target-flut-dangerous-event-handler proc argc message block)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-uint20) (the-as uint 0)) + (set! (-> self control unknown-int21) 0) + (set! (-> self control unknown-uint31) (the-as uint 0)) + (set! (-> self control unknown-surface00) *flut-run-attack-mods*) + (set! (-> *run-attack-mods* turnv) 655360.0) + (set! (-> *run-attack-mods* turnvv) 655360.0) + (target-start-attack) + (target-danger-set! 'flut-attack #f) + (when (and (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) + (time-elapsed? (-> self control unknown-dword82) (seconds 0.25))) + (let ((gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat))) + (s5-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 32)))) + (set! (-> gp-0 y) 0.0) + (vector-normalize! gp-0 (+ 81920.0 (-> *TARGET-bank* yellow-projectile-speed))) + (vector+! gp-0 gp-0 (-> self control transv)) + (process-spawn projectile-yellow + :init + projectile-init-by-other + (-> self entity) + s5-0 + gp-0 + (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 281 265) + #f + :to + self)) + (set-time! (-> self control unknown-dword82)))) + :exit + (behavior () + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> *run-attack-mods* turnv) 0.0) + (set! (-> *run-attack-mods* turnvv) 0.0) + (set-time! (-> self control unknown-dword31)) + (target-exit)) + :trans + (behavior () + (when (!= (-> self state-time) (current-time)) + (if (and (or (smack-surface? #t) + (and (>= (-> self control unknown-float63) 0.7) (not (logtest? (-> self control status) (cshape-moving-flags t-act))))) + (begin + (set! (-> self control unknown-int21) (the-as int (current-time))) + (set! (-> self control unknown-float81) 0.0) + (let ((gp-0 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) + (let* ((f0-5 (vector-length gp-0)) + (f1-1 f0-5) + (f2-1 (fmin 0.0 f30-0))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) + (vector-float*! gp-0 gp-0 (/ f0-5 f1-1))))) + #t) + (or (zero? (-> self control unknown-uint20)) + (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 12))) + (!= (-> self control unknown-uint31) 1)) + (target-shoved (meters 2) (-> *TARGET-bank* smack-surface-height) (the-as process #f) target-flut-hit)) + (if (and (logtest? (-> self water flags) (water-flags wt09)) (zero? (mod (- (current-time) (-> self state-time)) 21))) + (create-splash (-> self water) + (the-as float 0.6) + (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node eichar-lod0-jg mouth)) + 0 + (-> self control transv))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.02)) + (sound-play "flut-hit") + (ja :group! eichar-flut-running-attack-ja :num! min) + (set! (-> self control dynam gravity-max) 368640.0) + (set! (-> self control dynam gravity-length) 368640.0) + (let ((f28-0 0.0) + (f30-0 (the-as float (if (= (-> self control unknown-dword82) (current-time)) 0.2 0.8)))) + (until (or (ja-done? 0) (< f30-0 0.05)) (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) f30-0) + (when (not (ja-min? 0)) + (cond + ((and (>= (ja-aframe-num 0) 20.0) + (and (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-39 (ja-group))) + (or (not (or (= v1-39 eichar-attack-punch-ja) (= v1-39 eichar-attack-punch-end-ja) (= v1-39 eichar-attack-punch-alt-end-ja))) + (< 4096.0 (target-height-above-ground))))) + (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint20)))) (the-as uint 12)))) + (go target-flut-falling #f)) + ((and (nonzero? (-> self control unknown-uint30)) + (>= (the-as uint (- (current-time) (the-as int (-> self control unknown-uint30)))) (the-as uint 12))) + (set-forward-vel (the-as float 0.0)) + (set! f30-0 0.0)) + ((ja-done? 0) (set-forward-vel f28-0)) + (else + (set! f28-0 (* f30-0 (target-align-vel-z-adjust (-> self align delta trans z)) (-> *display* frames-per-second))) + (set-forward-vel f28-0)))) + (let ((gp-2 (new-stack-vector0))) + (vector-matrix*! gp-2 (-> self control transv) (-> self control unknown-matrix00)) + (set! (-> gp-2 y) 0.0) + (vector-matrix*! (-> self control unknown-vector120) gp-2 (-> self control unknown-matrix01))) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go target-flut-stance) - ) - :post target-flut-post - ) + (ja :num! (seek! max (-> self control unknown-surface01 align-speed))) + (if (time-elapsed? (-> self state-time) (seconds 0.1)) (set! (-> *flut-run-attack-mods* turnvv) 0.0)) + (if (time-elapsed? (-> self state-time) (seconds 0.1)) + (set! f30-0 (* f30-0 (the-as float (fmin 1.0 (the-as float (-> self control unknown-float140)))))))) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (time-elapsed? (-> self control unknown-dword11) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-105 (ja-group))) + (or (not (or (= v1-105 eichar-attack-punch-ja) (= v1-105 eichar-attack-punch-end-ja) (= v1-105 eichar-attack-punch-alt-end-ja))) + (< 4096.0 (target-height-above-ground))))) + (go target-flut-falling #f)) + (when (!= f30-0 0.0) + (set! (-> self trans-hook) (-> target-flut-hit-ground trans)) + (if (not (ja-done? 0)) (ja-channel-push! 1 (seconds 0.05))) + (ja-no-eval :group! eichar-flut-running-attack-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) f30-0) + (suspend) + (ja :num! (seek!))))) + (go target-flut-stance)) + :post target-flut-post) (defstate target-flut-air-attack (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (= message 'touched) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self control) - (the-as uint 6) - ) - (< 0.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> self control trans-old)) (-> self control trans)) - ) - ) - ) - (send-event proc 'bonk (-> block param 0) (-> self control ground-impact-vel)) - ) - (case message - (('jump) - (go target-flut-jump (the-as float (-> block param 0)) (the-as float (-> block param 0))) - ) - (else - (target-flut-dangerous-event-handler proc argc message block) - ) - ) - ) - :enter (behavior ((arg0 float)) - (set-forward-vel arg0) - (set-time! (-> self state-time)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *flut-air-attack-mods*) - (target-start-attack) - (target-danger-set! 'flut-attack #f) - (let ((gp-0 (new-stack-vector0))) - (let ((f0-1 (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-1)) - ) - (let* ((f0-2 (vector-length gp-0)) - (f1-1 f0-2) - (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-2 f1-1)) - ) - ) - ) - ) - :exit (behavior () - (target-danger-set! 'harmless #f) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad)) - ) - :trans (behavior () - (let ((s5-0 (new-stack-vector0))) - (vector-z-quaternion! s5-0 (-> self control unknown-quaternion00)) - (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)) - ) - ) - ) - ) - (when (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (logior! (-> self control status) (cshape-moving-flags onsurf)) - (remove-exit) - (go target-flut-air-attack-hit-ground) - ) - (when (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) 4096.0) - (and (time-elapsed? (-> self state-time) (seconds 0.5)) - (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - ) - #t - ) - (logior! (-> self control status) (cshape-moving-flags onsurf)) - (go target-flut-hit-ground) - ) - ) - :code (behavior ((arg0 float)) - (sound-play "flut-hit" :pitch -0.5) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-flut-air-attack-ja :num! (seek! (ja-aframe (the-as float 8.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (align! - (-> self align) - (align-opts adjust-y-vel adjust-xz-vel) - (the-as float 1.0) - (the-as float 1.0) - (the-as float 1.0) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 8.0) 0))) - ) - (ja-no-eval :group! eichar-flut-air-attack-ja :num! (seek!) :frame-num (ja-aframe (the-as float 8.0) 0)) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (align! - (-> self align) - (align-opts adjust-y-vel adjust-xz-vel) - (the-as float 1.0) - (the-as float 1.0) - (the-as float 1.0) - ) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! eichar-flut-air-attack-loop-ja :num! min) - (loop - (suspend) - ) - ) - :post target-flut-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (= message 'touched) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self control) + (the-as uint 6)) + (< 0.0 + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> self control trans-old)) (-> self control trans))))) + (send-event proc 'bonk (-> block param 0) (-> self control ground-impact-vel))) + (case message + (('jump) (go target-flut-jump (the-as float (-> block param 0)) (the-as float (-> block param 0)))) + (else (target-flut-dangerous-event-handler proc argc message block)))) + :enter + (behavior ((arg0 float)) + (set-forward-vel arg0) + (set-time! (-> self state-time)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *flut-air-attack-mods*) + (target-start-attack) + (target-danger-set! 'flut-attack #f) + (let ((gp-0 (new-stack-vector0))) + (let ((f0-1 (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-1))) + (let* ((f0-2 (vector-length gp-0)) + (f1-1 f0-2) + (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-2 f1-1)))))) + :exit + (behavior () + (target-danger-set! 'harmless #f) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (set! (-> self control dynam gravity quad) (-> self control unknown-dynamics00 gravity quad))) + :trans + (behavior () + (let ((s5-0 (new-stack-vector0))) + (vector-z-quaternion! s5-0 (-> self control unknown-quaternion00)) + (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)))))) + (when (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (remove-exit) + (go target-flut-air-attack-hit-ground)) + (when (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) 4096.0) + (and (time-elapsed? (-> self state-time) (seconds 0.5)) + (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))))) + #t) + (logior! (-> self control status) (cshape-moving-flags onsurf)) + (go target-flut-hit-ground))) + :code + (behavior ((arg0 float)) + (sound-play "flut-hit" :pitch -0.5) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-flut-air-attack-ja :num! (seek! (ja-aframe (the-as float 8.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-y-vel adjust-xz-vel) + (the-as float 1.0) + (the-as float 1.0) + (the-as float 1.0)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 8.0) 0)))) + (ja-no-eval :group! eichar-flut-air-attack-ja :num! (seek!) :frame-num (ja-aframe (the-as float 8.0) 0)) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-y-vel adjust-xz-vel) + (the-as float 1.0) + (the-as float 1.0) + (the-as float 1.0)) + (suspend) + (ja :num! (seek!))) + (ja :group! eichar-flut-air-attack-loop-ja :num! min) + (loop + (suspend))) + :post target-flut-post) (defstate target-flut-air-attack-hit-ground (target) :event target-flut-standard-event-handler - :enter (behavior () - (target-land-effect) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.4)) - (set! (-> self control unknown-dword31) 0) - (set! (-> self control unknown-dword33) 0) - (set! (-> self control unknown-surface00) *flut-air-attack-mods*) - (sound-play "flop-land" :pitch -0.4) - (effect-control-method-10 (-> self skel effect) 'group-flut-attack-strike-ground (ja-frame-num 0) 0) - (let ((gp-2 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) 4096.0 30 :to self))) - (send-event (ppointer->process gp-2) 'event 'attack 'flut-attack) - (send-event (ppointer->process gp-2) 'function (lambda :behavior target - ((arg0 nav-enemy)) - (seek! - (-> arg0 collide-info root-prim local-sphere w) - (the-as float 28672.0) - (* 286720.0 (seconds-per-frame)) - ) - (update-transforms! (-> arg0 collide-info)) - (none) - ) - ) - ) - ) - :exit (-> target-flut-air-attack exit) - :trans (-> target-flut-hit-ground trans) - :code (behavior () - (ja-channel-set! 1) - (ja-no-eval :group! eichar-flut-air-attack-land-ja - :num! (seek! (ja-aframe (the-as float 22.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 22.0) 0))) - ) - (target-danger-set! 'harmless #f) - (ja-no-eval :group! eichar-flut-air-attack-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 22.0) 0)) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) - (suspend) - (ja :num! (seek!)) - ) - (go target-flut-stance) - ) - :post target-flut-post - ) + :enter + (behavior () + (target-land-effect) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.4)) + (set! (-> self control unknown-dword31) 0) + (set! (-> self control unknown-dword33) 0) + (set! (-> self control unknown-surface00) *flut-air-attack-mods*) + (sound-play "flop-land" :pitch -0.4) + (effect-control-method-10 (-> self skel effect) 'group-flut-attack-strike-ground (ja-frame-num 0) 0) + (let ((gp-2 (process-spawn touch-tracker :init touch-tracker-init (-> self control trans) 4096.0 30 :to self))) + (send-event (ppointer->process gp-2) 'event 'attack 'flut-attack) + (send-event (ppointer->process gp-2) + 'function + (lambda :behavior target ((arg0 nav-enemy)) + (seek! (-> arg0 collide-info root-prim local-sphere w) (the-as float 28672.0) (* 286720.0 (seconds-per-frame))) + (update-transforms! (-> arg0 collide-info)) + (none))))) + :exit + (-> target-flut-air-attack + exit) + :trans + (-> target-flut-hit-ground + trans) + :code + (behavior () + (ja-channel-set! 1) + (ja-no-eval :group! eichar-flut-air-attack-land-ja :num! (seek! (ja-aframe (the-as float 22.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 22.0) 0)))) + (target-danger-set! 'harmless #f) + (ja-no-eval :group! eichar-flut-air-attack-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 22.0) 0)) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (align! (-> self align) (align-opts adjust-xz-vel) (the-as float 1.0) (the-as float 1.0) (the-as float 1.0)) + (suspend) + (ja :num! (seek!))) + (go target-flut-stance)) + :post target-flut-post) (defstate target-flut-hit (target) :event target-flut-standard-event-handler - :exit (behavior () - (if (!= (-> self next-state name) 'target-flut-death) - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - ) - (target-exit) - ((-> target-flut-start exit)) - ) - :trans (behavior () - (when (= *cheat-mode* 'debug) - (when (and (not *pause-lock*) (cpad-hold? (-> self control unknown-cpad-info00 number) r2)) - (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float 1.0) (the-as handle #f)) - (go target-flut-stance) - ) - ) - ) - :code (behavior ((arg0 symbol) (arg1 attack-info)) - (set-time! (-> self state-time)) - (let ((gp-0 (-> self attack-info))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (let ((v1-2 gp-0)) - (set! (-> v1-2 attacker) (the-as handle #f)) - (set! (-> v1-2 mode) 'generic) - (set! (-> v1-2 shove-back) 10240.0) - (set! (-> v1-2 shove-up) 9011.2) - (set! (-> v1-2 angle) #f) - (set! (-> v1-2 trans quad) (-> self control trans quad)) - (set! (-> v1-2 control) 0.0) - (set! (-> v1-2 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout)) - ) - (case arg0 - (('shove) - (let ((v1-5 gp-0)) - (set! (-> v1-5 shove-back) (-> *TARGET-bank* smack-surface-dist)) - (set! (-> v1-5 shove-up) (-> *TARGET-bank* smack-surface-height)) - (set! (-> v1-5 angle) 'shove) - ) - ) - ) - (combine! gp-0 arg1) - (when (not (logtest? (-> gp-0 mask) (attack-mask vector))) - (vector-z-quaternion! (-> gp-0 vector) (-> self control unknown-quaternion00)) - (vector-xz-normalize! (-> gp-0 vector) (- (fabs (-> gp-0 shove-back)))) - (set! (-> gp-0 vector y) (-> gp-0 shove-up)) - ) - (set! (-> s5-0 quad) (-> gp-0 vector quad)) - (let ((f0-10 (vector-dot - (vector-normalize-copy! (new 'stack-no-clear 'vector) s5-0 (the-as float 1.0)) - (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)) - ) - ) - ) - (if (not (-> self attack-info angle)) - (set! (-> self attack-info angle) (if (>= 0.0 f0-10) - 'front - 'back - ) - ) - ) - ) - (when (= arg0 'attack) - (logior! (-> self state-flags) (state-flags being-attacked)) - (set-time! (-> self game hit-time)) - (case (-> gp-0 mode) - (('endlessfall) - (cond - ((= (-> self game mode) 'debug) - (let ((s4-1 (new-stack-vector0))) - (set! (-> s4-1 quad) (-> self control last-known-safe-ground quad)) - (ja-channel-set! 0) - (let ((s3-1 (current-time))) - (until (time-elapsed? s3-1 (seconds 1)) - (suspend) - ) - ) - (move-to-point! (-> self control) s4-1) - ) - (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) - (send-event *camera* 'teleport) - (go target-flut-stance) - ) - (else - (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f)) - (go target-flut-death (-> gp-0 mode)) - ) - ) - ) - (('water-vol 'sharkey) - (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f)) - (if (= (-> self game mode) 'play) - (go target-flut-death (-> gp-0 mode)) - ) - ) - (('death) - (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f)) - ) - (else - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - ) - ) - (target-hit-effect gp-0) - (sound-play "flut-hit" :pitch -1) - ) - (set! (-> self control unknown-surface00) *smack-mods*) - (let ((f30-0 1.0)) - (case (-> gp-0 angle) + :exit + (behavior () + (if (!= (-> self next-state name) 'target-flut-death) (logclear! (-> self state-flags) (state-flags being-attacked dying))) + (target-exit) + ((-> target-flut-start exit))) + :trans + (behavior () + (when (= *cheat-mode* 'debug) + (when (and (not *pause-lock*) (cpad-hold? (-> self control unknown-cpad-info00 number) r2)) + (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float 1.0) (the-as handle #f)) + (go target-flut-stance)))) + :code + (behavior ((arg0 symbol) (arg1 attack-info)) + (set-time! (-> self state-time)) + (let ((gp-0 (-> self attack-info))) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (let ((v1-2 gp-0)) + (set! (-> v1-2 attacker) (the-as handle #f)) + (set! (-> v1-2 mode) 'generic) + (set! (-> v1-2 shove-back) 10240.0) + (set! (-> v1-2 shove-up) 9011.2) + (set! (-> v1-2 angle) #f) + (set! (-> v1-2 trans quad) (-> self control trans quad)) + (set! (-> v1-2 control) 0.0) + (set! (-> v1-2 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout))) + (case arg0 (('shove) - (when (not (ja-group? eichar-flut-smack-surface-ja)) - (ja-channel-set! 1) - (ja :group! eichar-flut-smack-surface-ja :num! min) - ) - (sound-play "smack-surface") - (sound-play "flut-hit" :pitch 1) - ) - (else - (when (not (ja-group? eichar-flut-hit-back-ja)) - (ja-channel-push! 1 (seconds 0.075)) - (ja :group! eichar-flut-hit-back-ja :num! min) - ) - ) - ) - (target-hit-move gp-0 (target-hit-orient gp-0 s5-0) target-flut-falling-anim-trans f30-0) - ) - ) - (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) - (go target-flut-death (-> gp-0 mode)) - ) - ) - (go target-flut-hit-ground) - ) - :post target-flut-post - ) + (let ((v1-5 gp-0)) + (set! (-> v1-5 shove-back) (-> *TARGET-bank* smack-surface-dist)) + (set! (-> v1-5 shove-up) (-> *TARGET-bank* smack-surface-height)) + (set! (-> v1-5 angle) 'shove)))) + (combine! gp-0 arg1) + (when (not (logtest? (-> gp-0 mask) (attack-mask vector))) + (vector-z-quaternion! (-> gp-0 vector) (-> self control unknown-quaternion00)) + (vector-xz-normalize! (-> gp-0 vector) (- (fabs (-> gp-0 shove-back)))) + (set! (-> gp-0 vector y) (-> gp-0 shove-up))) + (set! (-> s5-0 quad) (-> gp-0 vector quad)) + (let ((f0-10 (vector-dot (vector-normalize-copy! (new 'stack-no-clear 'vector) s5-0 (the-as float 1.0)) + (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))))) + (if (not (-> self attack-info angle)) (set! (-> self attack-info angle) (if (>= 0.0 f0-10) 'front 'back)))) + (when (= arg0 'attack) + (logior! (-> self state-flags) (state-flags being-attacked)) + (set-time! (-> self game hit-time)) + (case (-> gp-0 mode) + (('endlessfall) + (cond + ((= (-> self game mode) 'debug) + (let ((s4-1 (new-stack-vector0))) + (set! (-> s4-1 quad) (-> self control last-known-safe-ground quad)) + (ja-channel-set! 0) + (let ((s3-1 (current-time))) (until (time-elapsed? s3-1 (seconds 1)) (suspend))) + (move-to-point! (-> self control) s4-1)) + (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) + (send-event *camera* 'teleport) + (go target-flut-stance)) + (else + (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f)) + (go target-flut-death (-> gp-0 mode))))) + (('water-vol 'sharkey) + (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f)) + (if (= (-> self game mode) 'play) (go target-flut-death (-> gp-0 mode)))) + (('death) (pickup-collectable! (-> self fact) (pickup-type eco-green) (the-as float -1000.0) (the-as handle #f))) + (else + (pickup-collectable! (-> self fact) (pickup-type eco-green) (- (-> *FACT-bank* health-single-inc)) (the-as handle #f)))) + (target-hit-effect gp-0) + (sound-play "flut-hit" :pitch -1)) + (set! (-> self control unknown-surface00) *smack-mods*) + (let ((f30-0 1.0)) + (case (-> gp-0 angle) + (('shove) + (when (not (ja-group? eichar-flut-smack-surface-ja)) + (ja-channel-set! 1) + (ja :group! eichar-flut-smack-surface-ja :num! min)) + (sound-play "smack-surface") + (sound-play "flut-hit" :pitch 1)) + (else + (when (not (ja-group? eichar-flut-hit-back-ja)) + (ja-channel-push! 1 (seconds 0.075)) + (ja :group! eichar-flut-hit-back-ja :num! min)))) + (target-hit-move gp-0 (target-hit-orient gp-0 s5-0) target-flut-falling-anim-trans f30-0))) + (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) (go target-flut-death (-> gp-0 mode)))) + (go target-flut-hit-ground)) + :post target-flut-post) (defstate target-flut-death (target) - :event (-> target-death event) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - (target-exit) - (remove-setting! 'process-mask) - (apply-settings *setting-control*) - ) - :trans (-> target-hit trans) - :code (behavior ((arg0 symbol)) - (local-vars (v1-104 symbol)) - (logior! (-> self state-flags) (state-flags dying)) - (set! (-> self neck flex-blend) 0.0) - (target-timed-invulnerable-off self) - (add-setting! 'process-mask 'set 0.0 (process-mask enemy platform projectile death)) - (apply-settings *setting-control*) - (set! (-> self control transv quad) (the-as uint128 0)) - (cond - ((or (= arg0 'none) (= arg0 'water-vol) (= arg0 'sharkey)) - ) - ((= arg0 'endlessfall) - (sound-play "death-fall") - (sound-play "flut-hit" :vol 70 :pitch -1.4) - (camera-change-to (the-as string cam-endlessfall) 30 #f) - (set! (-> self control pat-ignore-mask unknown-bit) 1) - (logclear! (-> self water flags) (water-flags wt04)) - (let ((f30-0 (fmin -4096.0 (- (-> self control ground-impact-vel))))) - (set! (-> self control unknown-uint20) (the-as uint f30-0)) - (let ((gp-3 (new-stack-vector0))) - (let ((f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-3 (-> self control transv) (vector-float*! gp-3 (-> self control dynam gravity-normal) f0-3)) - ) - (let* ((f0-4 (vector-length gp-3)) - (f1-3 f0-4) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-0) - (vector-float*! gp-3 gp-3 (/ f0-4 f1-3)) - ) - ) - ) - ) - (let ((gp-4 (current-time))) - (until (time-elapsed? gp-4 (seconds 1)) - (target-flut-falling-anim-trans) - (vector-seek! (-> self draw color-mult) *zero-vector* (seconds-per-frame)) - (let ((s5-2 (new-stack-vector0)) - (f30-1 (the-as number (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - ) - 0.0 - (vector-! - s5-2 - (-> self control transv) - (vector-float*! s5-2 (-> self control dynam gravity-normal) (the-as float f30-1)) - ) - (let* ((f0-10 (vector-length s5-2)) - (f1-4 f0-10) - ) - (if (< (the-as float (-> self control unknown-uint20)) (the-as float f30-1)) - (set! f30-1 (-> self control unknown-uint20)) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) (the-as float f30-1)) - (vector-float*! s5-2 s5-2 (/ f0-10 f1-4)) - ) - ) - ) - (target-flut-post-post) + :event + (-> target-death + event) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags being-attacked dying)) + (target-exit) + (remove-setting! 'process-mask) + (apply-settings *setting-control*)) + :trans + (-> target-hit + trans) + :code + (behavior ((arg0 symbol)) + (local-vars (v1-104 symbol)) + (logior! (-> self state-flags) (state-flags dying)) + (set! (-> self neck flex-blend) 0.0) + (target-timed-invulnerable-off self) + (add-setting! 'process-mask 'set 0.0 (process-mask enemy platform projectile death)) + (apply-settings *setting-control*) + (set! (-> self control transv quad) (the-as uint128 0)) + (cond + ((or (= arg0 'none) (= arg0 'water-vol) (= arg0 'sharkey))) + ((= arg0 'endlessfall) + (sound-play "death-fall") + (sound-play "flut-hit" :vol 70 :pitch -1.4) + (camera-change-to (the-as string cam-endlessfall) 30 #f) + (set! (-> self control pat-ignore-mask unknown-bit) 1) + (logclear! (-> self water flags) (water-flags wt04)) + (let ((f30-0 (fmin -4096.0 (- (-> self control ground-impact-vel))))) + (set! (-> self control unknown-uint20) (the-as uint f30-0)) + (let ((gp-3 (new-stack-vector0))) + (let ((f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-3 (-> self control transv) (vector-float*! gp-3 (-> self control dynam gravity-normal) f0-3))) + (let* ((f0-4 (vector-length gp-3)) + (f1-3 f0-4)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f30-0) + (vector-float*! gp-3 gp-3 (/ f0-4 f1-3)))))) + (let ((gp-4 (current-time))) + (until (time-elapsed? gp-4 (seconds 1)) + (target-flut-falling-anim-trans) + (vector-seek! (-> self draw color-mult) *zero-vector* (seconds-per-frame)) + (let ((s5-2 (new-stack-vector0)) + (f30-1 (the-as number (vector-dot (-> self control dynam gravity-normal) (-> self control transv))))) + 0.0 + (vector-! s5-2 + (-> self control transv) + (vector-float*! s5-2 (-> self control dynam gravity-normal) (the-as float f30-1))) + (let* ((f0-10 (vector-length s5-2)) + (f1-4 f0-10)) + (if (< (the-as float (-> self control unknown-uint20)) (the-as float f30-1)) (set! f30-1 (-> self control unknown-uint20))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) (the-as float f30-1)) + (vector-float*! s5-2 s5-2 (/ f0-10 f1-4))))) + (target-flut-post-post) + (suspend))) + (camera-change-to (the-as string 'base) 0 #f)) + (else + (set! (-> self control unknown-surface00) *neutral-mods*) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! eichar-flut-deatha-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (let ((gp-5 (new 'stack-no-clear 'vector))) + (when (not (logtest? (-> self align flags) (align-flags disabled))) + (vector-matrix*! gp-5 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) + (vector-float*! (-> self control transv) gp-5 (-> *display* frames-per-second)))) (suspend) - ) - ) - (camera-change-to (the-as string 'base) 0 #f) - ) - (else - (set! (-> self control unknown-surface00) *neutral-mods*) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! eichar-flut-deatha-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (let ((gp-5 (new 'stack-no-clear 'vector))) - (when (not (logtest? (-> self align flags) (align-flags disabled))) - (vector-matrix*! gp-5 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) - (vector-float*! (-> self control transv) gp-5 (-> *display* frames-per-second)) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) - (set-time! (-> self state-time)) - (until v1-104 - (suspend) - (set! v1-104 (and (time-elapsed? (-> self state-time) (seconds 1)) (not (movie?)))) - ) - (go target-flut-stance) - ) - :post target-no-stick-post - ) + (ja :num! (seek!))))) + (set! (-> self control transv quad) (the-as uint128 0)) + (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) + (set-time! (-> self state-time)) + (until v1-104 + (suspend) + (set! v1-104 (and (time-elapsed? (-> self state-time) (seconds 1)) (not (movie?))))) + (go target-flut-stance)) + :post target-no-stick-post) (defstate target-flut-get-on (target) :event target-generic-event-handler - :exit (-> target-flut-start exit) - :code (behavior ((arg0 handle)) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self alt-cam-pos quad) (-> (&-> (-> self control) unknown-qword00) 0)) - (logior! (-> self state-flags) (state-flags use-alt-cam-pos)) - (set-time! (-> self state-time)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control trans quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self control trans quad)) - (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) - (let* ((s3-0 (handle->process arg0)) - (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) - s3-0 - ) - ) - ) - (when s4-1 - (set! (-> s5-0 quad) (-> (the-as process-drawable s4-1) root trans quad)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> (the-as process-drawable s4-1) root quat)) - (send-event s4-1 'trans (-> self flut flut-trans)) - (quaternion-copy! (the-as quaternion (-> self flut flut-quat)) (-> (the-as process-drawable s4-1) root quat)) - (set! (-> self flut flut-scale quad) (-> (the-as process-drawable s4-1) root scale quad)) - (set! (-> self control unknown-int21) (the-as int (-> self flut flut-trans y))) - ) - ) - (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) - (set! (-> self control unknown-vector103 quad) (-> s5-0 quad)) - ) - ) - (let ((gp-1 #f)) - (sound-play "uppercut") - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-flut-get-on-ja :num! (seek! (ja-aframe (the-as float 24.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-1) (= (-> self skel root-channel 0) (-> self skel channel))) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) - (set! gp-1 #t) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 24.0) 0))) - ) - ) - (sound-play "flut-coo") - (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) - (set! (-> self control transv quad) (the-as uint128 0)) - (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) - (rot->dir-targ! (-> self control)) - (go target-flut-stance) - ) - :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f30-0 (fmin 1.0 (* 0.0044444446 (the float (- (current-time) (-> self state-time)))))) - ) - (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) - (set! (-> gp-0 y) - (lerp - (-> self control unknown-vector102 y) - (-> self control unknown-vector103 y) - (fmax 0.0 (fmin 1.0 (* 0.006666667 (the float (+ (- (the-as int (-> self state-time))) (current-time)))))) - ) - ) - (move-to-point! (-> self control) gp-0) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion02) - (-> self control unknown-quaternion03) - f30-0 - ) - ) - (target-no-move-post) - ) - ) + :exit + (-> target-flut-start + exit) + :code + (behavior ((arg0 handle)) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self alt-cam-pos quad) (-> (&-> (-> self control) unknown-qword00) 0)) + (logior! (-> self state-flags) (state-flags use-alt-cam-pos)) + (set-time! (-> self state-time)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self control trans quad)) + (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (let* ((s3-0 (handle->process arg0)) + (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) s3-0))) + (when s4-1 + (set! (-> s5-0 quad) (-> (the-as process-drawable s4-1) root trans quad)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> (the-as process-drawable s4-1) root quat)) + (send-event s4-1 'trans (-> self flut flut-trans)) + (quaternion-copy! (the-as quaternion (-> self flut flut-quat)) (-> (the-as process-drawable s4-1) root quat)) + (set! (-> self flut flut-scale quad) (-> (the-as process-drawable s4-1) root scale quad)) + (set! (-> self control unknown-int21) (the-as int (-> self flut flut-trans y))))) + (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) + (set! (-> self control unknown-vector103 quad) (-> s5-0 quad)))) + (let ((gp-1 #f)) + (sound-play "uppercut") + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-flut-get-on-ja :num! (seek! (ja-aframe (the-as float 24.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-1) (= (-> self skel root-channel 0) (-> self skel channel))) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) + (set! gp-1 #t)) + (set! (-> self control transv quad) (the-as uint128 0)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 24.0) 0))))) + (sound-play "flut-coo") + (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) + (set! (-> self control transv quad) (the-as uint128 0)) + (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) + (rot->dir-targ! (-> self control)) + (go target-flut-stance)) + :post + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f30-0 (fmin 1.0 (* 0.0044444446 (the float (- (current-time) (-> self state-time))))))) + (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) + (set! (-> gp-0 y) + (lerp (-> self control unknown-vector102 y) + (-> self control unknown-vector103 y) + (fmax 0.0 (fmin 1.0 (* 0.006666667 (the float (+ (- (the-as int (-> self state-time))) (current-time)))))))) + (move-to-point! (-> self control) gp-0) + (quaternion-slerp! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion02) + (-> self control unknown-quaternion03) + f30-0)) + (target-no-move-post))) (defstate target-flut-get-off (target) :event target-generic-event-handler - :exit (-> target-flut-start exit) - :code (behavior ((arg0 handle)) - (set-forward-vel (the-as float 0.0)) - (let ((s5-0 0)) - (while (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (target-flut-falling-anim-trans) - (+! s5-0 (- (current-time) (-> *display* old-base-frame-counter))) - (suspend) - ) - ) - (go target-flut-get-off-jump arg0) - ) - :post (behavior () - (target-no-stick-post) - (target-flut-post-post) - ) - ) + :exit + (-> target-flut-start + exit) + :code + (behavior ((arg0 handle)) + (set-forward-vel (the-as float 0.0)) + (let ((s5-0 0)) + (while (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (target-flut-falling-anim-trans) + (+! s5-0 (- (current-time) (-> *display* old-base-frame-counter))) + (suspend))) + (go target-flut-get-off-jump arg0)) + :post + (behavior () + (target-no-stick-post) + (target-flut-post-post))) (defstate target-flut-get-off-jump (target) :event target-generic-event-handler - :exit (-> target-flut-start exit) - :code (behavior ((arg0 handle)) - (set-time! (-> self state-time)) - (set! (-> self control transv quad) (the-as uint128 0)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control trans quad)) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (set! (-> s4-0 quad) (-> self control trans quad)) - (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) - (let* ((s2-0 (handle->process arg0)) - (s3-0 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) - s2-0 - ) - ) - ) - (when s3-0 - (set! (-> s4-0 quad) (-> (the-as process-drawable s3-0) root trans quad)) - (set-yaw-angle-clear-roll-pitch! - (-> (the-as process-drawable s3-0) root) - (quaternion-y-angle (-> self control quat)) - ) - (quaternion-copy! (-> self control unknown-quaternion03) (-> (the-as process-drawable s3-0) root quat)) - (send-event s3-0 'trans (-> self flut flut-trans)) - (quaternion-copy! (the-as quaternion (-> self flut flut-quat)) (-> (the-as process-drawable s3-0) root quat)) - (set! (-> self flut flut-scale quad) (-> (the-as process-drawable s3-0) root scale quad)) - (set! (-> self control unknown-int21) (the-as int (-> self flut flut-trans y))) - ) - ) - (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) - (set! (-> self control unknown-vector103 quad) (-> s4-0 quad)) - ) - (sound-play "flut-coo" :vol 90 :pitch -0.5) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-flut-get-off-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (handle->process arg0) 'draw) - (set-yaw-angle-clear-roll-pitch! - (-> self control) - (quaternion-y-angle (-> self control unknown-quaternion03)) - ) - (rot->dir-targ! (-> self control)) - (ja-post) - (vector<-cspace! gp-0 (joint-node eichar-lod0-jg main)) - (+! (-> gp-0 y) -5896.192) - (move-to-point! (-> self control) gp-0) - ) - (send-event *camera* 'ease-in) - (ja-channel-set! 0) - (go target-flut-get-off-hit-ground #f) - ) - :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f30-0 (fmax 0.0 (fmin 1.0 (* 0.006666667 (the float (- (current-time) (-> self state-time))))))) - ) - (fmax 0.0 (fmin 1.0 (* 0.006666667 (the float (- (current-time) (-> self state-time)))))) - (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) - (set! (-> gp-0 y) - (lerp - (-> self control unknown-vector102 y) - (-> self control unknown-vector103 y) - (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))) - ) - ) - (move-to-point! (-> self control) gp-0) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion02) - (-> self control unknown-quaternion03) - f30-0 - ) - ) - (vector+! (-> self flut flut-trans) (-> self control trans) (-> self control unknown-vector12)) - (quaternion-copy! (the-as quaternion (-> self flut flut-quat)) (-> self control quat)) - (set! (-> self flut flut-scale quad) (-> self control scale quad)) - (target-no-move-post) - ) - ) + :exit + (-> target-flut-start + exit) + :code + (behavior ((arg0 handle)) + (set-time! (-> self state-time)) + (set! (-> self control transv quad) (the-as uint128 0)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control trans quad)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> self control trans quad)) + (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (let* ((s2-0 (handle->process arg0)) + (s3-0 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) s2-0))) + (when s3-0 + (set! (-> s4-0 quad) (-> (the-as process-drawable s3-0) root trans quad)) + (set-yaw-angle-clear-roll-pitch! (-> (the-as process-drawable s3-0) root) (quaternion-y-angle (-> self control quat))) + (quaternion-copy! (-> self control unknown-quaternion03) (-> (the-as process-drawable s3-0) root quat)) + (send-event s3-0 'trans (-> self flut flut-trans)) + (quaternion-copy! (the-as quaternion (-> self flut flut-quat)) (-> (the-as process-drawable s3-0) root quat)) + (set! (-> self flut flut-scale quad) (-> (the-as process-drawable s3-0) root scale quad)) + (set! (-> self control unknown-int21) (the-as int (-> self flut flut-trans y))))) + (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) + (set! (-> self control unknown-vector103 quad) (-> s4-0 quad))) + (sound-play "flut-coo" :vol 90 :pitch -0.5) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-flut-get-off-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (handle->process arg0) 'draw) + (set-yaw-angle-clear-roll-pitch! (-> self control) (quaternion-y-angle (-> self control unknown-quaternion03))) + (rot->dir-targ! (-> self control)) + (ja-post) + (vector<-cspace! gp-0 (joint-node eichar-lod0-jg main)) + (+! (-> gp-0 y) -5896.192) + (move-to-point! (-> self control) gp-0)) + (send-event *camera* 'ease-in) + (ja-channel-set! 0) + (go target-flut-get-off-hit-ground #f)) + :post + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f30-0 (fmax 0.0 (fmin 1.0 (* 0.006666667 (the float (- (current-time) (-> self state-time)))))))) + (fmax 0.0 (fmin 1.0 (* 0.006666667 (the float (- (current-time) (-> self state-time)))))) + (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) + (set! (-> gp-0 y) + (lerp (-> self control unknown-vector102 y) + (-> self control unknown-vector103 y) + (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))))) + (move-to-point! (-> self control) gp-0) + (quaternion-slerp! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion02) + (-> self control unknown-quaternion03) + f30-0)) + (vector+! (-> self flut flut-trans) (-> self control trans) (-> self control unknown-vector12)) + (quaternion-copy! (the-as quaternion (-> self flut flut-quat)) (-> self control quat)) + (set! (-> self flut flut-scale quad) (-> self control scale quad)) + (target-no-move-post))) (defstate target-flut-get-off-hit-ground (target) :event target-standard-event-handler - :enter (-> target-hit-ground enter) - :trans (behavior () - (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - ((-> target-hit-ground trans)) - ) - :code (behavior ((arg0 symbol)) - (ja-channel-set! 1) - (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 42.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go target-stance) - ) - :post target-post - ) + :enter + (-> target-hit-ground + enter) + :trans + (behavior () + (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + ((-> target-hit-ground trans))) + :code + (behavior ((arg0 symbol)) + (ja-channel-set! 1) + (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe (the-as float 42.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go target-stance)) + :post target-post) (defstate target-flut-grab (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - (-> self state name) - ) - (else - (case message - (('end-mode) - (go target-flut-stance) - ) - (('clone-anim) - (go target-flut-clone-anim (process->handle (the-as process (-> block param 0)))) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - ) - ) - :enter (behavior () - (set! (-> self control unknown-surface00) *grab-mods*) - (set! (-> self neck flex-blend) 0.0) - (logior! (-> self state-flags) (state-flags invulnerable grabbed)) - ) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) - (target-exit) - ((-> target-flut-start exit)) - ) - :code (-> target-flut-stance code) - :post (behavior () - (target-no-stick-post) - (target-flut-post-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) (-> self state name)) + (else + (case message + (('end-mode) (go target-flut-stance)) + (('clone-anim) (go target-flut-clone-anim (process->handle (the-as process (-> block param 0))))) + (else (target-generic-event-handler proc argc message block)))))) + :enter + (behavior () + (set! (-> self control unknown-surface00) *grab-mods*) + (set! (-> self neck flex-blend) 0.0) + (logior! (-> self state-flags) (state-flags invulnerable grabbed))) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) + (target-exit) + ((-> target-flut-start exit))) + :code + (-> target-flut-stance + code) + :post + (behavior () + (target-no-stick-post) + (target-flut-post-post))) (defstate target-flut-clone-anim (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (= message 'trans) (= (-> block param 0) 'restore)) - (set! (-> self control unknown-uint20) (the-as uint #f)) - ) - ((-> target-flut-grab event) proc argc message block) - ) - :enter (-> target-clone-anim enter) - :exit (behavior () - (send-event (ppointer->process (-> self sidekick)) 'matrix #f) - ((-> target-clone-anim exit)) - ((-> target-flut-start exit)) - ) - :code (behavior ((arg0 handle)) - (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) - (clone-anim arg0 33 #t "") - (go target-flut-stance) - ) - :post (behavior () - (target-no-ja-move-post) - (target-flut-post-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (= message 'trans) (= (-> block param 0) 'restore)) (set! (-> self control unknown-uint20) (the-as uint #f))) + ((-> target-flut-grab event) proc argc message block)) + :enter + (-> target-clone-anim + enter) + :exit + (behavior () + (send-event (ppointer->process (-> self sidekick)) 'matrix #f) + ((-> target-clone-anim exit)) + ((-> target-flut-start exit))) + :code + (behavior ((arg0 handle)) + (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) + (clone-anim arg0 33 #t "") + (go target-flut-stance)) + :post + (behavior () + (target-no-ja-move-post) + (target-flut-post-post))) diff --git a/goal_src/jak1/levels/intro/evilbro.gc b/goal_src/jak1/levels/intro/evilbro.gc index c07eeba740..a34bef7250 100644 --- a/goal_src/jak1/levels/intro/evilbro.gc +++ b/goal_src/jak1/levels/intro/evilbro.gc @@ -1,141 +1,105 @@ ;;-*-Lisp-*- (in-package goal) (bundles "INT.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: evilbro.gc -;; name in dgo: evilbro -;; dgos: INT, L1 - ;; DECOMP BEGINS (deftype evilbro (process-taskable) - ((evilsis entity-actor) - ) - ) + ((evilsis entity-actor))) - -(defskelgroup *evilbro-intro-sg* evilbro evilbro-lod0-jg evilbro-idle-ja - ((evilbro-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow evilbro-shadow-mg - ) +(defskelgroup *evilbro-intro-sg* + evilbro + evilbro-lod0-jg + evilbro-idle-ja + ((evilbro-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow evilbro-shadow-mg) (defmethod play-anim! ((this evilbro) (arg0 symbol)) (cond (arg0 - (close-specific-task! (game-task leaving-misty) (task-status need-introduction)) - (send-event (-> this evilsis extra process) 'clone (process->handle this)) - ) - (else - (set! (-> this will-talk) #t) - ) - ) - (the-as basic (new 'static 'spool-anim :name "evilbro-misty-end" :index 5 :parts 9 :command-list '())) - ) + (close-specific-task! (game-task leaving-misty) (task-status need-introduction)) + (send-event (-> this evilsis extra process) 'clone (process->handle this))) + (else (set! (-> this will-talk) #t))) + (the-as basic (new 'static 'spool-anim :name "evilbro-misty-end" :index 5 :parts 9 :command-list '()))) (defmethod get-art-elem ((this evilbro)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate play-anim (evilbro) :virtual #t - :exit (behavior () - (send-event (-> self evilsis extra process) 'end-mode) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (send-event (-> self evilsis extra process) 'end-mode) + ((-> (method-of-type process-taskable play-anim) exit)))) (defstate idle (evilbro) :virtual #t - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (ja-no-eval :group! evilbro-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-0 (current-time))) - (while (let ((s5-0 (current-time)) - (f30-0 300.0) - (f28-0 0.16) - (f26-0 0.17000002) - ) - (< (- s5-0 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-0) - ) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop + (ja-no-eval :group! evilbro-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 0.0 0)) :frame-num (ja-aframe 16.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 0.0 0))) - ) - (let ((gp-3 (current-time))) - (while (let ((s5-1 (current-time)) - (f30-1 300.0) - (f28-1 0.16) - (f26-1 0.17000002) - ) - (< (- s5-1 (the-as time-frame (the int (* f30-1 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-3) - ) + (ja :num! (seek!))) + (let ((gp-0 (current-time))) + (while (let ((s5-0 (current-time)) + (f30-0 300.0) + (f28-0 0.16) + (f26-0 0.17000002)) + (< (- s5-0 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-0)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 0.0 0)) :frame-num (ja-aframe 16.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 0.0 0)))) + (let ((gp-3 (current-time))) + (while (let ((s5-1 (current-time)) + (f30-1 300.0) + (f28-1 0.16) + (f26-1 0.17000002)) + (< (- s5-1 (the-as time-frame (the int (* f30-1 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-3)) + (suspend)))))) (defmethod init-from-entity! ((this evilbro) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *evilbro-intro-sg* 3 40 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task leaving-misty))) (set! (-> this evilsis) (entity-actor-lookup arg0 'alt-actor 0)) (process-taskable-method-42 this) - (none) - ) - -(deftype evilsis (process-taskable) - () - ) + (none)) +(deftype evilsis (process-taskable) ()) -(defskelgroup *evilsis-intro-sg* evilsis evilsis-lod0-jg evilsis-idle-ja - ((evilsis-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow evilsis-shadow-mg - ) +(defskelgroup *evilsis-intro-sg* + evilsis + evilsis-lod0-jg + evilsis-idle-ja + ((evilsis-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow evilsis-shadow-mg) (defmethod play-anim! ((this evilsis) (arg0 symbol)) (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (the-as basic (get-art-elem this)) - ) + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (the-as basic (get-art-elem this))) (defmethod get-art-elem ((this evilsis)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate idle (evilsis) :virtual #t - :trans (behavior () - (set! (-> self will-talk) #f) - ((-> (method-of-type process-taskable idle) trans)) - ) - ) + :trans + (behavior () + (set! (-> self will-talk) #f) + ((-> (method-of-type process-taskable idle) trans)))) (defmethod init-from-entity! ((this evilsis) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *evilsis-intro-sg* 3 0 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task leaving-misty))) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungle/bouncer.gc b/goal_src/jak1/levels/jungle/bouncer.gc index 38f3ff848c..54929021e3 100644 --- a/goal_src/jak1/levels/jungle/bouncer.gc +++ b/goal_src/jak1/levels/jungle/bouncer.gc @@ -1,128 +1,91 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/entity/entity.gc") - -;; name: bouncer.gc -;; name in dgo: bouncer -;; dgos: JUN, JUNGLE, L1 - (declare-type springbox process-drawable) ;; DECOMP BEGINS (deftype springbox (process-drawable) - ((spring-height meters) - (smush float) - ) + ((spring-height meters) + (smush float)) (:states - bouncer-fire - bouncer-smush - bouncer-wait - ) - ) - + bouncer-fire + bouncer-smush + bouncer-wait)) (method-set! springbox 12 (method-of-type process run-logic?)) -(defskelgroup *bouncer-sg* bounceytarp bounceytarp-lod0-jg bounceytarp-idle-ja - ((bounceytarp-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *bouncer-sg* + bounceytarp + bounceytarp-lod0-jg + bounceytarp-idle-ja + ((bounceytarp-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defstate bouncer-wait (springbox) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (when (send-event proc 'jump (-> self spring-height) (-> self spring-height) #f) - (sound-play "trampoline") - (go bouncer-fire) - ) - ) - (('touch) - (if (not (or (= (-> self next-state name) 'bouncer-smush) (= (-> self next-state name) 'bouncer-fire))) - (go bouncer-smush) - ) - ) - (('attack) - (when (and (= (-> block param 1) 'flop) (send-event proc 'jump (-> self spring-height) (-> self spring-height) #f)) - (go bouncer-fire) - #f - ) - ) - ) - ) - :code (behavior () - (ja :group! bounceytarp-idle-ja :num! min) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) + (when (send-event proc 'jump (-> self spring-height) (-> self spring-height) #f) + (sound-play "trampoline") + (go bouncer-fire))) + (('touch) + (if (not (or (= (-> self next-state name) 'bouncer-smush) (= (-> self next-state name) 'bouncer-fire))) (go bouncer-smush))) + (('attack) + (when (and (= (-> block param 1) 'flop) (send-event proc 'jump (-> self spring-height) (-> self spring-height) #f)) + (go bouncer-fire) + #f)))) + :code + (behavior () + (ja :group! bounceytarp-idle-ja :num! min) + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defstate bouncer-smush (springbox) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (set-time! (-> self state-time)) - #f - ) - (else - ((-> bouncer-wait event) proc argc message block) - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self smush) 0.0) - (loop - (if (time-elapsed? (-> self state-time) (seconds 0.2)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (set-time! (-> self state-time)) #f) + (else ((-> bouncer-wait event) proc argc message block)))) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self smush) 0.0) + (loop + (if (time-elapsed? (-> self state-time) (seconds 0.2)) (ja :num! (seek! 0.0 0.1)) - (ja :num! (seek! - (lerp-scale - (ja-aframe 6.0 0) - (ja-aframe 2.0 0) - (vector-vector-xz-distance (target-pos 0) (-> self root trans)) - 0.0 - 4096.0 - ) - 0.2 - ) - ) - ) - (suspend) - (if (ja-min? 0) - (go bouncer-wait) - ) - ) - ) - :post transform-post - ) + (ja :num! + (seek! (lerp-scale (ja-aframe 6.0 0) + (ja-aframe 2.0 0) + (vector-vector-xz-distance (target-pos 0) (-> self root trans)) + 0.0 + 4096.0) + 0.2))) + (suspend) + (if (ja-min? 0) (go bouncer-wait)))) + :post transform-post) (defstate bouncer-fire (springbox) - :code (behavior () - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1)) - (ja-no-eval :group! bounceytarp-idle-ja :num! (seek!) :frame-num (ja-aframe 6.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go bouncer-wait) - ) - :post transform-post - ) + :code + (behavior () + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1)) + (ja-no-eval :group! bounceytarp-idle-ja :num! (seek!) :frame-num (ja-aframe 6.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go bouncer-wait)) + :post transform-post) (defmethod init-from-entity! ((this springbox) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind crate)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -130,16 +93,13 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 3072.0 0.0 6963.2) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *bouncer-sg* '()) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (set! (-> this spring-height) (res-lump-float arg0 'spring-height :default 45056.0)) (go bouncer-wait) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungle/darkvine.gc b/goal_src/jak1/levels/jungle/darkvine.gc index 30b25b6dfc..608dfabde3 100644 --- a/goal_src/jak1/levels/jungle/darkvine.gc +++ b/goal_src/jak1/levels/jungle/darkvine.gc @@ -1,130 +1,111 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/game/task/task-control.gc") - -;; name: darkvine.gc -;; name in dgo: darkvine -;; dgos: JUN, JUNGLE, L1 - (define-extern *darkvine-sg* skeleton-group) (declare-type darkvine process-drawable) - ;; DECOMP BEGINS (deftype darkvine (process-drawable) - ((root collide-shape :override) - (speed float) - (tip-index int8) - (dangerous symbol) - (vulnerable symbol) - (hit-player symbol) - (touch-time time-frame) - (player-attack-id int32) - ) - (:states - (darkvine-die symbol) - darkvine-idle - darkvine-retreat - ) - ) - + ((root collide-shape :override) + (speed float) + (tip-index int8) + (dangerous symbol) + (vulnerable symbol) + (hit-player symbol) + (touch-time time-frame) + (player-attack-id int32)) + (:states (darkvine-die symbol) + darkvine-idle + darkvine-retreat)) (defmethod run-logic? ((this darkvine)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (or (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> this root pause-adjust-distance)) - (vector-vector-distance (-> this root trans) (math-camera-pos)) - ) - ) + (vector-vector-distance (-> this root trans) (math-camera-pos)))) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) -(defskelgroup *darkvine-sg* darkvine darkvine-lod0-jg darkvine-idle-ja - ((darkvine-lod0-mg (meters 20)) (darkvine-lod1-mg (meters 999999))) - :bounds (static-spherem 0 2 0 3.5) - ) +(defskelgroup *darkvine-sg* + darkvine + darkvine-lod0-jg + darkvine-idle-ja + ((darkvine-lod0-mg (meters 20)) (darkvine-lod1-mg (meters 999999))) + :bounds (static-spherem 0 2 0 3.5)) (defpartgroup group-darkvine-puffs :id 175 :duration (seconds 0.5) :flags (use-local-clock) :bounds (static-bspherem 0 2 0 3) - :parts ((sp-item 800) (sp-item 801) (sp-item 802)) - ) + :parts ((sp-item 800) (sp-item 801) (sp-item 802))) (defpart 800 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.8) - (:x (meters 0) (meters 0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 30.0 20.0) - (:g 25.0 10.0) - (:b 10.0 5.0) - (:a 0.0 32.0) - (:vel-x (meters 0.0016666667) (meters 0.0033333334)) - (:vel-y (meters 0.013333334)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:fade-a 0.1882353) - (:accel-y (meters -0.0005)) - (:timer (seconds 0.85)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.8) + (:x (meters 0) (meters 0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 30.0 20.0) + (:g 25.0 10.0) + (:b 10.0 5.0) + (:a 0.0 32.0) + (:vel-x (meters 0.0016666667) (meters 0.0033333334)) + (:vel-y (meters 0.013333334)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:fade-a 0.1882353) + (:accel-y (meters -0.0005)) + (:timer (seconds 0.85)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 802 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 0.25) - (:x (meters 0) (meters 0.6)) - (:scale-x (meters 0.025) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 45.0 45.0) - (:g 45.0 10.0) - (:b 20.0 6.0) - (:a 96.0) - (:vel-x (meters 0.0016666667) (meters 0.0033333334)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 1.25)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 0.25) + (:x (meters 0) (meters 0.6)) + (:scale-x (meters 0.025) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 45.0 45.0) + (:g 45.0 10.0) + (:b 20.0 6.0) + (:a 96.0) + (:vel-x (meters 0.0016666667) (meters 0.0033333334)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 1.25)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 801 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.6)) - (:scale-x (meters 0.3) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1) (meters 0.1)) - (:r 10.0 6.0) - (:g 40.0 90.0) - (:b 10.0 6.0) - (:a 96.0) - (:vel-x (meters 0.0016666667) (meters 0.0033333334)) - (:vel-y (meters 0.01) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.6)) + (:scale-x (meters 0.3) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1) (meters 0.1)) + (:r 10.0 6.0) + (:g 40.0 90.0) + (:b 10.0 6.0) + (:a 96.0) + (:vel-x (meters 0.0016666667) (meters 0.0033333334)) + (:vel-y (meters 0.01) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) 1 (degrees 2.4)) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 0) (degrees 360)))) (defbehavior darkvine-event-handler darkvine ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -132,10 +113,7 @@ (do-push-aways! (-> self root)) (when (-> self dangerous) (if (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - (set-collide-offense (-> self root) 2 (collide-offense no-offense)) - ) - ) - ) + (set-collide-offense (-> self root) 2 (collide-offense no-offense))))) (('attack) (let ((v1-10 (-> arg3 param 2))) (cond @@ -143,127 +121,91 @@ (set! (-> self player-attack-id) (the-as int v1-10)) (when (-> self vulnerable) (do-push-aways! (-> self root)) - (go darkvine-retreat) - ) - ) - (else - 'push - ) - ) - ) - ) - ) - ) + (go darkvine-retreat))) + (else 'push)))))) (defstate darkvine-idle (darkvine) :event darkvine-event-handler - :code (behavior () - (set! (-> self dangerous) #t) - (set! (-> self vulnerable) #t) - (let ((f30-0 0.0)) - (loop - (if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1) - (go darkvine-die #f) - ) - (ja-no-eval :group! darkvine-idle-ja :num! (seek! max (-> self speed)) :frame-num 0.0) - (until (ja-done? 0) - (if (and (>= (ja-aframe-num 0) 120.0) (>= 180.0 (ja-aframe-num 0))) - (seek-toward-yaw-angle! (-> self root) f30-0 32768.0 (seconds 0.5)) - ) - (suspend) - (ja :num! (seek! max (-> self speed))) - ) - (set! f30-0 (if (rand-vu-percent? 0.5) - (+ 16384.0 f30-0) - (+ -16384.0 f30-0) - ) - ) - ) - ) - ) - :post (behavior () - (when (and (-> self hit-player) (or (not *target*) (time-elapsed? (-> self touch-time) (seconds 0.05)))) - (set-collide-offense (-> self root) 2 (collide-offense indestructible)) - (set! (-> self hit-player) #f) - ) - (transform-post) - (if *target* - (look-at-enemy! - (-> *target* neck) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data (-> self tip-index))) - 'nothing - self - ) - ) - ) - ) + :code + (behavior () + (set! (-> self dangerous) #t) + (set! (-> self vulnerable) #t) + (let ((f30-0 0.0)) + (loop + (if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1) (go darkvine-die #f)) + (ja-no-eval :group! darkvine-idle-ja :num! (seek! max (-> self speed)) :frame-num 0.0) + (until (ja-done? 0) + (if (and (>= (ja-aframe-num 0) 120.0) (>= 180.0 (ja-aframe-num 0))) + (seek-toward-yaw-angle! (-> self root) f30-0 32768.0 (seconds 0.5))) + (suspend) + (ja :num! (seek! max (-> self speed)))) + (set! f30-0 (if (rand-vu-percent? 0.5) (+ 16384.0 f30-0) (+ -16384.0 f30-0)))))) + :post + (behavior () + (when (and (-> self hit-player) (or (not *target*) (time-elapsed? (-> self touch-time) (seconds 0.05)))) + (set-collide-offense (-> self root) 2 (collide-offense indestructible)) + (set! (-> self hit-player) #f)) + (transform-post) + (if *target* + (look-at-enemy! (-> *target* neck) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data (-> self tip-index))) + 'nothing + self)))) (defstate darkvine-retreat (darkvine) :event darkvine-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self dangerous) #f) - (set! (-> self vulnerable) #f) - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.15)) - (ja-no-eval :group! darkvine-retreat-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (launch-particles (-> *part-id-table* 800) (-> self root trans)) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-set! 0) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 2)) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self dangerous) #f) + (set! (-> self vulnerable) #f) + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! darkvine-retreat-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (launch-particles (-> *part-id-table* 800) (-> self root trans)) (suspend) - ) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 175) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.5)) + (ja :num! (seek!))) + (ja-channel-set! 0) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 2)) (suspend))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 175) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.5)) (suspend))) + (set! (-> self dangerous) #t) + (logior! (-> self mask) (process-mask actor-pause)) + (ja-channel-set! 1) + (ja-no-eval :group! darkvine-pushup-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (set! (-> self dangerous) #t) - (logior! (-> self mask) (process-mask actor-pause)) - (ja-channel-set! 1) - (ja-no-eval :group! darkvine-pushup-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go darkvine-idle) - ) - :post (-> darkvine-idle post) - ) + (ja :num! (seek!))) + (go darkvine-idle)) + :post + (-> darkvine-idle + post)) (defstate darkvine-die (darkvine) - :code (behavior ((arg0 symbol)) - (logclear! (-> self mask) (process-mask actor-pause)) - (if arg0 - (ja-channel-set! 1) - (ja-channel-push! 1 (seconds 0.5)) - ) - (clear-collide-with-as (-> self root)) - (ja :group! darkvine-dead-ja :num! min) - (while (!= (-> self skel root-channel 0) (-> self skel channel)) - (suspend) - ) - (logior! (-> self mask) (process-mask sleep)) - (anim-loop) - ) - :post (-> darkvine-idle post) - ) + :code + (behavior ((arg0 symbol)) + (logclear! (-> self mask) (process-mask actor-pause)) + (if arg0 (ja-channel-set! 1) (ja-channel-push! 1 (seconds 0.5))) + (clear-collide-with-as (-> self root)) + (ja :group! darkvine-dead-ja :num! min) + (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (suspend)) + (logior! (-> self mask) (process-mask sleep)) + (anim-loop)) + :post + (-> darkvine-idle + post)) (defmethod init-from-entity! ((this darkvine) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) @@ -281,8 +223,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -290,8 +231,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 2867.2) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -299,8 +239,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 2457.6) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -308,22 +247,16 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 8) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s3-0 s2-3) - ) - ) + (append-prim s3-0 s2-3))) (set! (-> s4-0 nav-radius) 2048.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (set! (-> this tip-index) 8) (process-drawable-from-entity! this arg0) (initialize-skeleton this *darkvine-sg* '()) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (set! (-> this hit-player) #f) (set! (-> this speed) (rand-vu-float-range 0.95 1.05)) - (if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1) - (go darkvine-die #t) - ) + (if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1) (go darkvine-die #t)) (go darkvine-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungle/fisher.gc b/goal_src/jak1/levels/jungle/fisher.gc index 3a1ab39529..6937772412 100644 --- a/goal_src/jak1/levels/jungle/fisher.gc +++ b/goal_src/jak1/levels/jungle/fisher.gc @@ -1,32 +1,22 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/geometry/path.gc") (require "engine/common-obs/process-taskable.gc") (require "engine/target/logic-target.gc") (require "engine/target/sidekick.gc") - -;; name: fisher-JUN.gc -;; name in dgo: fisher -;; dgos: JUN - (declare-type fisher-fish process-drawable) ;; DECOMP BEGINS (deftype fisher-bank (basic) - ((width meters) - (net-radius meters) - (max-caught int32) - (max-missed int32) - ) - ) - + ((width meters) + (net-radius meters) + (max-caught int32) + (max-missed int32))) (define *FISHER-bank* - (new 'static 'fisher-bank :width (meters 3.3) :net-radius (meters 0.7) :max-caught #xc8 :max-missed 20) - ) + (new 'static 'fisher-bank :width (meters 3.3) :net-radius (meters 0.7) :max-caught #xc8 :max-missed 20)) (defpartgroup group-bad-fish :id 177 @@ -34,50 +24,46 @@ :linger-duration (seconds 1.5) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 828) (sp-item 2013)) - ) + :parts ((sp-item 828) (sp-item 2013))) (defpart 828 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:y (meters 0.2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:b 128.0 128.0) - (:a 0.0) - (:vel-x (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.53333336) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.035) (seconds 0.177)) - (:next-launcher 829) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:y (meters 0.2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:b 128.0 128.0) + (:a 0.0) + (:vel-x (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.53333336) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.035) (seconds 0.177)) + (:next-launcher 829))) (defpart 829 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpart 2013 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1 1.0) - (:x (meters -0.7) (meters 0.5)) - (:z (meters -0.1) (meters 0.2)) - (:scale-x (meters 0.05) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 32.0) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1 1.0) + (:x (meters -0.7) (meters 0.5)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 0.05) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 32.0) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-normal-fish :id 178 @@ -85,26 +71,24 @@ :linger-duration (seconds 1.5) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2001)) - ) + :parts ((sp-item 2001))) (defpart 2001 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1 1.0) - (:x (meters -0.4) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.05) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 32.0) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1 1.0) + (:x (meters -0.4) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.05) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 32.0) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-fish-collect :id 179 @@ -112,723 +96,674 @@ :linger-duration (seconds 4) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 830) (sp-item 831)) - ) + :parts ((sp-item 830) (sp-item 831))) (defpart 831 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.0) - (:scale-x (meters 5) (meters 1)) - (:scale-y :copy scale-x) - (:r 32.0 64.0) - (:g 128.0 128.0) - (:a 16.0) - (:fade-a -1.6) - (:timer (seconds 0.085)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.0) + (:scale-x (meters 5) (meters 1)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g 128.0 128.0) + (:a 16.0) + (:fade-a -1.6) + (:timer (seconds 0.085)) + (:flags (bit2 bit3)))) (defpart 830 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 16.0) - (:scale-x (meters 2) (meters 2)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.5)) - (:r 32.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 1.2) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.035) (seconds 0.03)) - (:next-launcher 832) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 16.0) + (:scale-x (meters 2) (meters 2)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.5)) + (:r 32.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 1.2) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.035) (seconds 0.03)) + (:next-launcher 832))) (defpart 832 - :init-specs ((:fade-a -0.8)) - ) + :init-specs ((:fade-a -0.8))) (deftype fisher-params (structure) - ((timeout time-frame) - (vel float) - (swing-min time-frame) - (swing-max time-frame) - (period time-frame) - (fish-vel float) - (bad-percent float) - (deadly-percent float) - (powerup-percent float) - ) - :allow-misaligned - ) - + ((timeout time-frame) + (vel float) + (swing-min time-frame) + (swing-max time-frame) + (period time-frame) + (fish-vel float) + (bad-percent float) + (deadly-percent float) + (powerup-percent float)) + :allow-misaligned) -(define *fisher-params* (new 'static 'boxed-array :type (inline-array fisher-params) - (new 'static 'inline-array fisher-params 16 - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 0.5) - :vel 0.6 - :swing-max (seconds 0.1) - :period (seconds 0.5) - :fish-vel 1.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 10) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.6) - :fish-vel 1.5 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 8) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.6) - :fish-vel 1.6 - :bad-percent 0.5 - :powerup-percent 0.25 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 15) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.45) - :fish-vel 1.7 - :bad-percent 0.1 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 15) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.4) - :fish-vel 1.8 - :bad-percent 0.1 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 15) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.5) - :fish-vel 1.9 - :bad-percent 0.9 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 2000) - :vel 0.8 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.35) - :fish-vel 2.0 - :bad-percent 0.1 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params) - ) - (new 'static 'inline-array fisher-params 16 - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 1) - :vel 0.6 - :swing-max (seconds 0.1) - :period (seconds 0.5) - :fish-vel 1.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 11) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.7) - :fish-vel 1.4 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 9) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.7) - :fish-vel 1.5 - :bad-percent 0.4 - :powerup-percent 0.25 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 18) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.527) - :fish-vel 1.6 - :bad-percent 0.083 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 18) - :vel 2.41 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.48) - :fish-vel 1.7 - :bad-percent 0.083 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 14) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.58) - :fish-vel 1.8 - :bad-percent 0.8 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 2000) - :vel 0.8 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.43) - :fish-vel 1.8 - :bad-percent 0.083 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params) - ) - (new 'static 'inline-array fisher-params 16 - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 1.5) - :vel 0.6 - :swing-max (seconds 0.1) - :period (seconds 0.5) - :fish-vel 1.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 12) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.8) - :fish-vel 1.4 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 10) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.8) - :fish-vel 1.5 - :bad-percent 0.3 - :powerup-percent 0.25 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 21) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.61) - :fish-vel 1.5 - :bad-percent 0.066 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 21) - :vel 1.83 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.56) - :fish-vel 1.6 - :bad-percent 0.066 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 14) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.66) - :fish-vel 1.6 - :bad-percent 0.6 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 2000) - :vel 0.8 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.515) - :fish-vel 1.7 - :bad-percent 0.066 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params) - ) - (new 'static 'inline-array fisher-params 16 - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 2) - :vel 0.6 - :swing-max (seconds 0.1) - :period (seconds 0.5) - :fish-vel 1.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 13) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.9) - :fish-vel 1.3 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 11) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.9) - :fish-vel 1.4 - :bad-percent 0.2 - :powerup-percent 0.25 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 23) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.7) - :fish-vel 1.4 - :bad-percent 0.05 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 23) - :vel 1.25 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.65) - :fish-vel 1.5 - :bad-percent 0.05 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 13) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.75) - :fish-vel 1.5 - :bad-percent 0.5 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 2000) - :vel 0.8 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.6) - :fish-vel 1.6 - :bad-percent 0.05 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params) - ) - (new 'static 'inline-array fisher-params 26 - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 2.5) - :vel 0.6 - :swing-max (seconds 0.1) - :period (seconds 0.5) - :fish-vel 1.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 13) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.9) - :fish-vel 1.3 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 11) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.9) - :fish-vel 1.3 - :bad-percent 0.2 - :powerup-percent 0.25 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 3) - :vel 0.6 - :swing-min (seconds 333.33) - :swing-max (seconds 0.335) - :period (seconds 0.5) - :fish-vel 1.3 - :powerup-percent 0.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 3) - :vel 0.6 - :swing-min (seconds 333.33) - :period (seconds 0.5) - :fish-vel 1.3 - :powerup-percent 0.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 3) - :vel 0.6 - :swing-min (seconds 333.33) - :swing-max (seconds 0.335) - :period (seconds 0.5) - :fish-vel 1.3 - :powerup-percent 0.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 3) - :vel 0.6 - :swing-min (seconds 333.33) - :period (seconds 0.5) - :fish-vel 1.3 - :powerup-percent 0.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 11) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.9) - :fish-vel 1.3 - :bad-percent 0.05 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 3) - :vel 0.6 - :swing-min (seconds 333.33) - :swing-max (seconds 0.335) - :period (seconds 0.5) - :fish-vel 1.3 - :powerup-percent 0.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 3) - :vel 0.6 - :swing-min (seconds 333.33) - :period (seconds 0.5) - :fish-vel 1.3 - :powerup-percent 0.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 3) - :vel 0.6 - :swing-min (seconds 333.33) - :swing-max (seconds 0.335) - :period (seconds 0.5) - :fish-vel 1.3 - :powerup-percent 0.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 2000) - :vel 0.7 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.9) - :fish-vel 1.3 - :bad-percent 0.05 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params) - ) - (new 'static 'inline-array fisher-params 22 - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 3) - :vel 0.6 - :swing-max (seconds 0.1) - :period (seconds 0.5) - :fish-vel 1.5 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 10) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.6) - :fish-vel 2.0 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 5) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.6) - :fish-vel 2.0 - :bad-percent 0.75 - :powerup-percent 0.25 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 15) - :vel 0.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.3) - :fish-vel 2.0 - :bad-percent 0.1 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 15) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.4) - :fish-vel 2.0 - :bad-percent 0.1 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 15) - :vel 3.0 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.4) - :fish-vel 2.0 - :bad-percent 0.9 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 30) - :vel 1.4 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.25) - :fish-vel 2.0 - :bad-percent 0.1 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 30) - :vel 1.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.15) - :fish-vel 2.2 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 30) - :vel 1.4 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.25) - :fish-vel 2.0 - :bad-percent 0.2 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params - :timeout (seconds 31535998) - :vel 1.6 - :swing-min (seconds 0.5) - :swing-max (seconds 2) - :period (seconds 0.15) - :fish-vel 2.2 - :bad-percent 0.1 - :powerup-percent 0.1 - ) - (new 'static 'fisher-params :timeout (seconds 2)) - (new 'static 'fisher-params) - ) - ) - ) +(define *fisher-params* + (new 'static + 'boxed-array + :type (inline-array fisher-params) + (new 'static + 'inline-array + fisher-params + 16 + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params :timeout (seconds 0.5) :vel 0.6 :swing-max (seconds 0.1) :period (seconds 0.5) :fish-vel 1.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 10) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.6) + :fish-vel 1.5 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 8) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.6) + :fish-vel 1.6 + :bad-percent 0.5 + :powerup-percent 0.25) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 15) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.45) + :fish-vel 1.7 + :bad-percent 0.1 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 15) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.4) + :fish-vel 1.8 + :bad-percent 0.1 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 15) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.5) + :fish-vel 1.9 + :bad-percent 0.9 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 2000) + :vel 0.8 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.35) + :fish-vel 2.0 + :bad-percent 0.1 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params)) + (new 'static + 'inline-array + fisher-params + 16 + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params :timeout (seconds 1) :vel 0.6 :swing-max (seconds 0.1) :period (seconds 0.5) :fish-vel 1.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 11) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.7) + :fish-vel 1.4 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 9) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.7) + :fish-vel 1.5 + :bad-percent 0.4 + :powerup-percent 0.25) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 18) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.527) + :fish-vel 1.6 + :bad-percent 0.083 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 18) + :vel 2.41 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.48) + :fish-vel 1.7 + :bad-percent 0.083 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 14) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.58) + :fish-vel 1.8 + :bad-percent 0.8 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 2000) + :vel 0.8 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.43) + :fish-vel 1.8 + :bad-percent 0.083 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params)) + (new 'static + 'inline-array + fisher-params + 16 + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params :timeout (seconds 1.5) :vel 0.6 :swing-max (seconds 0.1) :period (seconds 0.5) :fish-vel 1.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 12) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.8) + :fish-vel 1.4 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 10) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.8) + :fish-vel 1.5 + :bad-percent 0.3 + :powerup-percent 0.25) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 21) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.61) + :fish-vel 1.5 + :bad-percent 0.066 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 21) + :vel 1.83 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.56) + :fish-vel 1.6 + :bad-percent 0.066 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 14) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.66) + :fish-vel 1.6 + :bad-percent 0.6 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 2000) + :vel 0.8 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.515) + :fish-vel 1.7 + :bad-percent 0.066 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params)) + (new 'static + 'inline-array + fisher-params + 16 + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params :timeout (seconds 2) :vel 0.6 :swing-max (seconds 0.1) :period (seconds 0.5) :fish-vel 1.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 13) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.9) + :fish-vel 1.3 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 11) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.9) + :fish-vel 1.4 + :bad-percent 0.2 + :powerup-percent 0.25) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 23) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.7) + :fish-vel 1.4 + :bad-percent 0.05 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 23) + :vel 1.25 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.65) + :fish-vel 1.5 + :bad-percent 0.05 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 13) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.75) + :fish-vel 1.5 + :bad-percent 0.5 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 2000) + :vel 0.8 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.6) + :fish-vel 1.6 + :bad-percent 0.05 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params)) + (new 'static + 'inline-array + fisher-params + 26 + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params :timeout (seconds 2.5) :vel 0.6 :swing-max (seconds 0.1) :period (seconds 0.5) :fish-vel 1.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 13) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.9) + :fish-vel 1.3 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 11) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.9) + :fish-vel 1.3 + :bad-percent 0.2 + :powerup-percent 0.25) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 3) + :vel 0.6 + :swing-min (seconds 333.33) + :swing-max (seconds 0.335) + :period (seconds 0.5) + :fish-vel 1.3 + :powerup-percent 0.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 3) + :vel 0.6 + :swing-min (seconds 333.33) + :period (seconds 0.5) + :fish-vel 1.3 + :powerup-percent 0.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 3) + :vel 0.6 + :swing-min (seconds 333.33) + :swing-max (seconds 0.335) + :period (seconds 0.5) + :fish-vel 1.3 + :powerup-percent 0.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 3) + :vel 0.6 + :swing-min (seconds 333.33) + :period (seconds 0.5) + :fish-vel 1.3 + :powerup-percent 0.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 11) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.9) + :fish-vel 1.3 + :bad-percent 0.05 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 3) + :vel 0.6 + :swing-min (seconds 333.33) + :swing-max (seconds 0.335) + :period (seconds 0.5) + :fish-vel 1.3 + :powerup-percent 0.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 3) + :vel 0.6 + :swing-min (seconds 333.33) + :period (seconds 0.5) + :fish-vel 1.3 + :powerup-percent 0.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 3) + :vel 0.6 + :swing-min (seconds 333.33) + :swing-max (seconds 0.335) + :period (seconds 0.5) + :fish-vel 1.3 + :powerup-percent 0.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 2000) + :vel 0.7 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.9) + :fish-vel 1.3 + :bad-percent 0.05 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params)) + (new 'static + 'inline-array + fisher-params + 22 + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params :timeout (seconds 3) :vel 0.6 :swing-max (seconds 0.1) :period (seconds 0.5) :fish-vel 1.5) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 10) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.6) + :fish-vel 2.0 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 5) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.6) + :fish-vel 2.0 + :bad-percent 0.75 + :powerup-percent 0.25) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 15) + :vel 0.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.3) + :fish-vel 2.0 + :bad-percent 0.1 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 15) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.4) + :fish-vel 2.0 + :bad-percent 0.1 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 15) + :vel 3.0 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.4) + :fish-vel 2.0 + :bad-percent 0.9 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 30) + :vel 1.4 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.25) + :fish-vel 2.0 + :bad-percent 0.1 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 30) + :vel 1.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.15) + :fish-vel 2.2 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 30) + :vel 1.4 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.25) + :fish-vel 2.0 + :bad-percent 0.2 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static + 'fisher-params + :timeout (seconds 31535998) + :vel 1.6 + :swing-min (seconds 0.5) + :swing-max (seconds 2) + :period (seconds 0.15) + :fish-vel 2.2 + :bad-percent 0.1 + :powerup-percent 0.1) + (new 'static 'fisher-params :timeout (seconds 2)) + (new 'static 'fisher-params)))) (deftype fisher (process-taskable) - ((paddle-end vector 2 :inline) - (paddle-pos vector :inline) - (paddle float) - (paddle-vel float) - (spawner float) - (spawner-last float) - (spawn-time time-frame) - (turn-time time-frame) - (swing-time time-frame) - (block-time time-frame) - (block int32) - (caught int32) - (missed int32) - (difficulty int32) - (start-time time-frame) - (ambient-big-one time-frame) - (ambient-steady time-frame) - (ambient-sagging time-frame) - (ambient-almost time-frame) - (cheat-temp int32) - (hard symbol) - (training symbol) - (params fisher-params :inline) - ) + ((paddle-end vector 2 :inline) + (paddle-pos vector :inline) + (paddle float) + (paddle-vel float) + (spawner float) + (spawner-last float) + (spawn-time time-frame) + (turn-time time-frame) + (swing-time time-frame) + (block-time time-frame) + (block int32) + (caught int32) + (missed int32) + (difficulty int32) + (start-time time-frame) + (ambient-big-one time-frame) + (ambient-steady time-frame) + (ambient-sagging time-frame) + (ambient-almost time-frame) + (cheat-temp int32) + (hard symbol) + (training symbol) + (params fisher-params :inline)) (:states - fisher-done - fisher-playing - ) - ) - + fisher-done + fisher-playing)) (deftype fisher-fish (process-drawable) - ((dir vector :inline) - (offset float) - (pos float) - (vel float) - (mode basic) - (size meters) - ) + ((dir vector :inline) + (offset float) + (pos float) + (vel float) + (mode basic) + (size meters)) (:states - fisher-fish-caught - fisher-fish-die - fisher-fish-fall - ) - ) + fisher-fish-caught + fisher-fish-die + fisher-fish-fall)) +(defskelgroup *catch-fisha-sg* + catch-fisha + catch-fisha-lod0-jg + catch-fisha-idle-ja + ((catch-fisha-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) -(defskelgroup *catch-fisha-sg* catch-fisha catch-fisha-lod0-jg catch-fisha-idle-ja - ((catch-fisha-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *catch-fishb-sg* + catch-fishb + catch-fishb-lod0-jg + catch-fishb-idle-ja + ((catch-fishb-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) -(defskelgroup *catch-fishb-sg* catch-fishb catch-fishb-lod0-jg catch-fishb-idle-ja - ((catch-fishb-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *catch-fishc-sg* + catch-fishc + catch-fishc-lod0-jg + catch-fishc-idle-ja + ((catch-fishc-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) -(defskelgroup *catch-fishc-sg* catch-fishc catch-fishc-lod0-jg catch-fishc-idle-ja - ((catch-fishc-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *fish-net-sg* + fish-net + fish-net-lod0-jg + fish-net-fishing-ja + ((fish-net-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) -(defskelgroup *fish-net-sg* fish-net fish-net-lod0-jg fish-net-fishing-ja - ((fish-net-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) - -(defskelgroup *fisher-sg* fisher fisher-lod0-jg fisher-idle-more-often-ja - ((fisher-lod0-mg (meters 20)) (fisher-lod1-mg (meters 40)) (fisher-lod2-mg (meters 999999))) - :bounds (static-spherem 0 -6 0 14) - :shadow fisher-shadow-mg - ) +(defskelgroup *fisher-sg* + fisher + fisher-lod0-jg + fisher-idle-more-often-ja + ((fisher-lod0-mg (meters 20)) (fisher-lod1-mg (meters 40)) (fisher-lod2-mg (meters 999999))) + :bounds (static-spherem 0 -6 0 14) + :shadow fisher-shadow-mg) (defmethod process-taskable-method-52 ((this fisher)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -1024.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -1024.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this fisher)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defbehavior fisher-fish-water fisher-fish ((arg0 vector) (arg1 float)) (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -839,11 +774,9 @@ (set! (-> *part-id-table* 118 init-specs 1 initial-valuef) 0.05) (set! (-> *part-id-table* 118 init-specs 2 initial-valuef) 0.0) (set! (-> *part-id-table* 118 init-specs 13 initial-valuef) 0.35555556) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 118) gp-0) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 118) gp-0)) 0 - (none) - ) + (none)) (defbehavior fisher-fish-move fisher-fish () (+! (-> self pos) (* (-> self vel) (seconds-per-frame))) @@ -851,185 +784,131 @@ (path-control-method-12 (-> (the-as fisher (-> self parent 0)) path) (-> self dir) (-> self pos)) (seek-toward-heading-vec! (-> self root) (-> self dir) 291271.12 (seconds 0.2)) (let ((f30-1 (+ 16384.0 (y-angle (-> self root)))) - (gp-0 (new-stack-vector0)) - ) + (gp-0 (new-stack-vector0))) (set! (-> gp-0 x) (sin f30-1)) (set! (-> gp-0 y) 0.0) (set! (-> gp-0 z) (cos f30-1)) (set! (-> gp-0 w) 1.0) (vector-normalize! gp-0 (* 2.0 (+ -0.5 (-> self offset)) (-> *FISHER-bank* width))) - (vector+! (-> self root trans) (-> self root trans) gp-0) - ) + (vector+! (-> self root trans) (-> self root trans) gp-0)) (fisher-fish-water (-> self root trans) (y-angle (-> self root))) - (if (nonzero? (-> self part)) - (spawn (-> self part) (-> self root trans)) - ) + (if (nonzero? (-> self part)) (spawn (-> self part) (-> self root trans))) 0 - (none) - ) + (none)) (defstate fisher-fish-fall (fisher-fish) - :code (behavior () - (set-heading-vec! - (-> self root) - (path-control-method-12 (-> (the-as fisher (-> self parent 0)) path) (-> self dir) (-> self pos)) - ) - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (fisher-fish-move) - (if (< (vector-vector-xz-distance (-> self root trans) (-> (the-as fisher (-> self parent 0)) paddle-pos)) - (+ (-> *FISHER-bank* net-radius) (* (-> self size) (-> self root scale x))) - ) - (go fisher-fish-caught) - ) - (if (or (>= (-> self pos) (the float (+ (-> (the-as fisher (-> self parent 0)) path curve num-cverts) -1))) - (>= (-> self pos) 7.2) - ) - (go fisher-fish-die) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (set-heading-vec! (-> self root) + (path-control-method-12 (-> (the-as fisher (-> self parent 0)) path) (-> self dir) (-> self pos))) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (fisher-fish-move) + (if (< (vector-vector-xz-distance (-> self root trans) (-> (the-as fisher (-> self parent 0)) paddle-pos)) + (+ (-> *FISHER-bank* net-radius) (* (-> self size) (-> self root scale x)))) + (go fisher-fish-caught)) + (if (or (>= (-> self pos) (the float (+ (-> (the-as fisher (-> self parent 0)) path curve num-cverts) -1))) + (>= (-> self pos) 7.2)) + (go fisher-fish-die)) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate fisher-fish-caught (fisher-fish) - :code (behavior () - (case (-> self mode) - (('deadly 'bad) - (sound-play "caught-eel") - (ambient-hint-spawn "sksp0a42" (-> self root trans) *entity-pool* 'ambient) - (send-event (ppointer->process (-> self parent)) 'deadly) - ) - (('powerup) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 179) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (sound-play "get-big-fish") - (send-event (ppointer->process (-> self parent)) 'fisher-fish-caught 5) - ) - (else - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 179) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (sound-play "get-small-fish") - (send-event (ppointer->process (-> self parent)) 'fisher-fish-caught 1) - ) - ) - (set! (-> self vel) (* 0.25 (-> self vel))) - (while (< 0.1 (-> self root scale x)) - (set! (-> self offset) (-> (the-as fisher (-> self parent 0)) paddle)) - (fisher-fish-move) - (vector-float*! (-> self root scale) (-> self root scale) 0.93) - (ja-post) - (suspend) - (ja :num! (loop!)) - ) - ) - ) + :code + (behavior () + (case (-> self mode) + (('deadly 'bad) + (sound-play "caught-eel") + (ambient-hint-spawn "sksp0a42" (-> self root trans) *entity-pool* 'ambient) + (send-event (ppointer->process (-> self parent)) 'deadly)) + (('powerup) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 179) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (sound-play "get-big-fish") + (send-event (ppointer->process (-> self parent)) 'fisher-fish-caught 5)) + (else + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 179) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (sound-play "get-small-fish") + (send-event (ppointer->process (-> self parent)) 'fisher-fish-caught 1))) + (set! (-> self vel) (* 0.25 (-> self vel))) + (while (< 0.1 (-> self root scale x)) + (set! (-> self offset) (-> (the-as fisher (-> self parent 0)) paddle)) + (fisher-fish-move) + (vector-float*! (-> self root scale) (-> self root scale) 0.93) + (ja-post) + (suspend) + (ja :num! (loop!))))) (defstate fisher-fish-die (fisher-fish) - :code (behavior () - (case (-> self mode) - (('deadly 'bad) - ) - (('powerup) - (level-hint-spawn - (text-id sidekick-hint-fish-powerup) - "sksp0b42" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (let ((f0-2 (rand-float-gen))) - (if (< 0.5 f0-2) + :code + (behavior () + (case (-> self mode) + (('deadly 'bad)) + (('powerup) + (level-hint-spawn (text-id sidekick-hint-fish-powerup) "sksp0b42" (the-as entity #f) *entity-pool* (game-task none)) + (let ((f0-2 (rand-float-gen))) + (if (< 0.5 f0-2) (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA04" #t (-> self root trans)) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA05" #t (-> self root trans)) - ) - ) - (send-event (ppointer->process (-> self parent)) 'fisher-fish-die 5) - ) - (else - (let ((f0-5 (rand-float-gen))) - (cond - ((and (< 0.8333 f0-5) (< (-> (the-as fisher (-> self parent 0)) paddle-pos z) (-> self root trans z))) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA01" #t (-> self root trans)) - ) - ((< 0.8333 f0-5) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA02" #t (-> self root trans)) - ) - ((and (< 0.6666 f0-5) (< (-> (the-as fisher (-> self parent 0)) paddle-pos z) (-> self root trans z))) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA1A" #t (-> self root trans)) - ) - ((< 0.6666 f0-5) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA2A" #t (-> self root trans)) - ) - ((< 0.5 f0-5) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA06" #t (-> self root trans)) - ) - ((< 0.3333 f0-5) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA08" #t (-> self root trans)) - ) - ((< 0.1666 f0-5) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA09" #t (-> self root trans)) - ) - ((> (-> (the-as fisher (-> self parent 0)) missed) 0) - (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA10" #t (-> self root trans)) - ) - ) - ) - (send-event (ppointer->process (-> self parent)) 'fisher-fish-die 1) - ) - ) - ) - ) + (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA05" #t (-> self root trans)))) + (send-event (ppointer->process (-> self parent)) 'fisher-fish-die 5)) + (else + (let ((f0-5 (rand-float-gen))) + (cond + ((and (< 0.8333 f0-5) (< (-> (the-as fisher (-> self parent 0)) paddle-pos z) (-> self root trans z))) + (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA01" #t (-> self root trans))) + ((< 0.8333 f0-5) (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA02" #t (-> self root trans))) + ((and (< 0.6666 f0-5) (< (-> (the-as fisher (-> self parent 0)) paddle-pos z) (-> self root trans z))) + (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA1A" #t (-> self root trans))) + ((< 0.6666 f0-5) (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA2A" #t (-> self root trans))) + ((< 0.5 f0-5) (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA06" #t (-> self root trans))) + ((< 0.3333 f0-5) (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA08" #t (-> self root trans))) + ((< 0.1666 f0-5) (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA09" #t (-> self root trans))) + ((> (-> (the-as fisher (-> self parent 0)) missed) 0) + (play-ambient (-> (the-as fisher (-> self parent 0)) ambient) "FIS-TA10" #t (-> self root trans))))) + (send-event (ppointer->process (-> self parent)) 'fisher-fish-die 1))))) (defbehavior fisher-fish-init-by-other fisher-fish ((arg0 symbol) (arg1 float) (arg2 float)) (set! (-> self mode) arg0) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self size) 3276.8) - (initialize-skeleton - self - (cond - ((or (= arg0 'deadly) (= arg0 'bad)) - (set! (-> self size) 409.6) - (set-vector! (-> self root scale) 0.9 0.9 0.7 1.0) - (set! (-> self part) (create-launch-control (-> *part-group-id-table* 177) self)) - *catch-fishc-sg* - ) - ((= arg0 'powerup) - (set-vector! (-> self root scale) 0.4 0.4 0.4 1.0) - (set! (-> self part) (create-launch-control (-> *part-group-id-table* 178) self)) - *catch-fishb-sg* - ) - (else - (set-vector! (-> self root scale) 0.3 0.3 0.3 1.0) - (set! (-> self part) (create-launch-control (-> *part-group-id-table* 178) self)) - *catch-fisha-sg* - ) - ) - '() - ) + (initialize-skeleton self + (cond + ((or (= arg0 'deadly) (= arg0 'bad)) + (set! (-> self size) 409.6) + (set-vector! (-> self root scale) 0.9 0.9 0.7 1.0) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 177) self)) + *catch-fishc-sg*) + ((= arg0 'powerup) + (set-vector! (-> self root scale) 0.4 0.4 0.4 1.0) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 178) self)) + *catch-fishb-sg*) + (else + (set-vector! (-> self root scale) 0.3 0.3 0.3 1.0) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 178) self)) + *catch-fisha-sg*)) + '()) (set! (-> self pos) 1.0) (set! (-> self offset) arg1) (set! (-> self vel) arg2) @@ -1038,625 +917,431 @@ (set-vector! (-> self draw color-mult) 0.6 0.6 0.6 1.0) (set-vector! (-> self draw color-emissive) 0.6 0.6 0.6 0.0) (go fisher-fish-fall) - (none) - ) + (none)) (defbehavior fisher-draw-display fisher ((arg0 fisher)) - (let ((s5-0 - (new 'stack 'font-context *font-default-matrix* 435 10 0.0 (font-color red) (font-flags shadow kerning)) - ) - ) - (let ((v1-1 s5-0)) - (set! (-> v1-1 width) (the float 200)) - ) - (let ((v1-2 s5-0)) - (set! (-> v1-2 height) (the float 30)) - ) - (let ((v1-3 s5-0)) - (set! (-> v1-3 scale) 0.7) - ) + (let ((s5-0 (new 'stack 'font-context *font-default-matrix* 435 10 0.0 (font-color red) (font-flags shadow kerning)))) + (let ((v1-1 s5-0)) (set! (-> v1-1 width) (the float 200))) + (let ((v1-2 s5-0)) (set! (-> v1-2 height) (the float 30))) + (let ((v1-3 s5-0)) (set! (-> v1-3 scale) 0.7)) (set! (-> s5-0 flags) (font-flags shadow kerning right large)) (print-game-text (lookup-text! *common-text* (text-id caught) #f) s5-0 #f 128 22) (set! (-> s5-0 origin x) 488.0) - (let ((s4-1 print-game-text)) - (format (clear *temp-string*) "~3D" (-> arg0 caught)) - (s4-1 *temp-string* s5-0 #f 128 22) - ) + (let ((s4-1 print-game-text)) (format (clear *temp-string*) "~3D" (-> arg0 caught)) (s4-1 *temp-string* s5-0 #f 128 22)) (set! (-> s5-0 origin x) 435.0) (set! (-> s5-0 origin y) 25.0) (print-game-text (lookup-text! *common-text* (text-id missed) #f) s5-0 #f 128 22) (set! (-> s5-0 origin x) 488.0) - (let ((s4-3 print-game-text)) - (format (clear *temp-string*) "~3D" (-> arg0 missed)) - (s4-3 *temp-string* s5-0 #f 128 22) - ) - ) - (none) - ) + (let ((s4-3 print-game-text)) (format (clear *temp-string*) "~3D" (-> arg0 missed)) (s4-3 *temp-string* s5-0 #f 128 22))) + (none)) (defmethod play-anim! ((this fisher) (arg0 symbol)) - (if arg0 - (set! (-> this training) #f) - ) + (if arg0 (set! (-> this training) #f)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) (when arg0 (set! (-> this blend-on-exit) (the-as art-joint-anim #t)) (close-status! (-> this tasks) (task-status need-introduction)) - (set! (-> this training) #t) - ) - (new 'static 'spool-anim - :name "fisher-introduction" - :index 8 - :parts 9 - :command-list '((0 want-levels village1 jungle) - (0 alive "jungle-part-1") - (130 blackout 10) - (130 display-level village1 movie) - (130 want-force-vis village1 #t) - (134 blackout 0) - (229 blackout 10) - (232 blackout 0) - (235 display-level village1 #f) - (235 want-force-vis village1 #f) - (419 blackout 10) - (422 blackout 0) - (518 blackout 10) - (521 blackout 0) - (585 blackout 10) - (588 blackout 0) - (668 blackout 10) - (671 blackout 0) - (848 display-level village1 movie) - (848 want-force-vis village1 #t) - (849 alive "fishermans-boat-2") - (878 blackout 10) - (881 blackout 0) - (958 blackout 10) - (961 blackout 0) - (965 dead "fishermans-boat-2") - (965 display-level village1 display) - (965 want-force-vis village1 #f) - ) - ) - ) + (set! (-> this training) #t)) + (new 'static + 'spool-anim + :name "fisher-introduction" + :index 8 + :parts 9 + :command-list + '((0 want-levels village1 jungle) + (0 alive "jungle-part-1") + (130 blackout 10) + (130 display-level village1 movie) + (130 want-force-vis village1 #t) + (134 blackout 0) + (229 blackout 10) + (232 blackout 0) + (235 display-level village1 #f) + (235 want-force-vis village1 #f) + (419 blackout 10) + (422 blackout 0) + (518 blackout 10) + (521 blackout 0) + (585 blackout 10) + (588 blackout 0) + (668 blackout 10) + (671 blackout 0) + (848 display-level village1 movie) + (848 want-force-vis village1 #t) + (849 alive "fishermans-boat-2") + (878 blackout 10) + (881 blackout 0) + (958 blackout 10) + (961 blackout 0) + (965 dead "fishermans-boat-2") + (965 display-level village1 display) + (965 want-force-vis village1 #f)))) (((task-status need-reminder-a) (task-status need-reminder)) (set! (-> this skippable) #t) (set! (-> this blend-on-exit) (the-as art-joint-anim #t)) - (new 'static 'spool-anim :name "fisher-reminder-1" :index 10 :parts 1 :command-list '()) - ) + (new 'static 'spool-anim :name "fisher-reminder-1" :index 10 :parts 1 :command-list '())) (((task-status need-reward-speech)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim - :name "fisher-resolution" - :index 9 - :parts 4 - :command-list '((188 blackout 10) (199 blackout 0)) - ) - ) + (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "fisher-resolution" :index 9 :parts 4 :command-list '((188 blackout 10) (199 blackout 0)))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod get-art-elem ((this fisher)) (if (closed? (-> this tasks) (game-task jungle-fishgame) (task-status need-reminder)) - (-> this draw art-group data 7) - (-> this draw art-group data 6) - ) - ) + (-> this draw art-group data 7) + (-> this draw art-group data 6))) (defmethod process-taskable-method-38 ((this fisher)) (case (current-status (-> this tasks)) - (((task-status need-reminder-a) (task-status need-reminder)) - (go (method-of-object this query)) - ) - (((task-status need-reward-speech)) - (go (method-of-object this play-anim)) - ) - (else - (call-parent-method this) - ) - ) - (none) - ) + (((task-status need-reminder-a) (task-status need-reminder)) (go (method-of-object this query))) + (((task-status need-reward-speech)) (go (method-of-object this play-anim))) + (else (call-parent-method this))) + (none)) (defmethod get-accept-anim ((this fisher) (arg0 symbol)) (when arg0 (close-current! (-> this tasks)) - (aybabtu 2) - ) - (new 'static 'spool-anim - :name "fisher-accept" - :index 12 - :parts 6 - :command-list '((0 send-event self emissive-on) (700 send-event self emissive-off)) - ) - ) + (aybabtu 2)) + (new 'static + 'spool-anim + :name "fisher-accept" + :index 12 + :parts 6 + :command-list + '((0 send-event self emissive-on) (700 send-event self emissive-off)))) (defmethod get-reject-anim ((this fisher) (arg0 symbol)) - (new 'static 'spool-anim :name "fisher-reject" :index 11 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "fisher-reject" :index 11 :parts 2 :command-list '())) (defstate fisher-done (fisher) - :enter (behavior () - (init! - (-> self query) - (lookup-text! *common-text* (text-id play-again?) #f) - 40 - 150 - 30 - #f - (lookup-text! *common-text* (text-id quit) #f) - ) - (ja-channel-set! 1) - (ja :group! (get-art-elem self)) - (set-time! (-> self state-time)) - (while (-> self child) - (deactivate (-> self child 0)) - ) - (set! *camera-look-through-other* 2) - (cond - ((>= (-> self caught) (-> *FISHER-bank* max-caught)) - (send-event *target* 'end-mode) - (set! (-> self trans-hook) (lambda :behavior fisher - () - (set! *camera-look-through-other* 2) - (when (process-grab? *target*) - (close-current! (-> self tasks)) - (go-virtual play-anim) - ) - (none) - ) - ) - ) - ((< (-> self caught) 0) - (send-event *target* 'end-mode) - (go-virtual idle) - ) - (else - (let ((gp-2 (-> self entity extra perm))) - (logior! (-> gp-2 status) (entity-perm-status user-set-from-cstage)) - (cond - ((-> self hard) - ) - ((and (< (-> self caught) 40) (< (-> self missed) 5)) - ) - ((and (< (-> self caught) 80) (< (-> self missed) 10)) - ) - (else + :enter + (behavior () + (init! (-> self query) + (lookup-text! *common-text* (text-id play-again?) #f) + 40 + 150 + 30 + #f + (lookup-text! *common-text* (text-id quit) #f)) + (ja-channel-set! 1) + (ja :group! (get-art-elem self)) + (set-time! (-> self state-time)) + (while (-> self child) + (deactivate (-> self child 0))) + (set! *camera-look-through-other* 2) + (cond + ((>= (-> self caught) (-> *FISHER-bank* max-caught)) + (send-event *target* 'end-mode) + (set! (-> self trans-hook) + (lambda :behavior fisher () + (set! *camera-look-through-other* 2) + (when (process-grab? *target*) + (close-current! (-> self tasks)) + (go-virtual play-anim)) + (none)))) + ((< (-> self caught) 0) (send-event *target* 'end-mode) (go-virtual idle)) + (else + (let ((gp-2 (-> self entity extra perm))) + (logior! (-> gp-2 status) (entity-perm-status user-set-from-cstage)) + (cond + ((-> self hard)) + ((and (< (-> self caught) 40) (< (-> self missed) 5))) + ((and (< (-> self caught) 80) (< (-> self missed) 10))) + (else (set! (-> gp-2 user-int8 4) (the-as int (+ (-> gp-2 user-uint8 4) 1))) (let ((v1-40 (-> self caught))) - (if (>= v1-40 90) - (set! v1-40 (+ v1-40 -90 v1-40)) - ) + (if (>= v1-40 90) (set! v1-40 (+ v1-40 -90 v1-40))) (set! (-> gp-2 user-object 0) - (+ (the-as float (-> gp-2 user-object 0)) - (* 12.903226 (/ (the float v1-40) (fmax 5.0 (the float (-> self missed))))) - ) - ) - ) - ) - ) - (let ((f0-4 (if (zero? (-> gp-2 user-uint8 4)) - 200.0 - (/ (the-as float (-> gp-2 user-object 0)) (the float (-> gp-2 user-uint8 4))) - ) - ) - ) - (when (zero? (mod (+ (-> gp-2 user-uint8 5) 1) (the-as uint 5))) - (cond - ((-> self hard) - ) - ((= (-> gp-2 user-uint8 5) 4) - (if (< f0-4 60.0) - (set! (-> gp-2 user-int8 6) (seekl (the-as int (-> gp-2 user-uint8 6)) 4 1)) - ) - (set! (-> gp-2 user-object 0) 0.0) - (set! (-> gp-2 user-int8 4) 0) - 0 - ) - ((= (-> gp-2 user-uint8 5) 9) - (if (< f0-4 120.0) - (set! (-> gp-2 user-int8 6) (seekl (the-as int (-> gp-2 user-uint8 6)) 4 1)) - ) - ) - (else - (set! (-> gp-2 user-int8 6) (seekl (the-as int (-> gp-2 user-uint8 6)) 4 1)) - ) - ) - ) - ) - (set! (-> gp-2 user-int8 5) (seekl (the-as int (-> gp-2 user-uint8 5)) 255 1)) - (set! (-> self difficulty) (the-as int (-> gp-2 user-uint8 6))) - (if (-> self hard) - (set! (-> self difficulty) 5) - ) - (format - #t - "fisher: accum ~f div ~d tries ~d diff ~d~%" - (the-as float (-> gp-2 user-object 0)) - (-> gp-2 user-uint8 4) - (-> gp-2 user-uint8 5) - (-> gp-2 user-uint8 6) - ) - ) - (process-spawn-function process (lambda :behavior process - () - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 0.1)) - (suspend) - ) - ) - (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) - (none) - ) - ) - (send-event *target* 'lose) - ) - ) - ) - :exit (behavior () - (when (and *target* (the-as target #f)) - (send-event *target* 'end-mode) - (process-grab? *target*) - ) - ) - :trans (behavior () - (set! *camera-look-through-other* 2) - (cond - ((>= (-> self caught) (-> *FISHER-bank* max-caught)) - ) - ((< (-> self caught) 0) - ) - (else - (when (< (mod (-> *display* base-frame-counter) (seconds 1)) (seconds 0.5)) - ;; og:preserve-this PAL patch here - (let ((gp-0 (new - 'stack - 'font-context - *font-default-matrix* - 56 - 100 - 0.0 - (font-color red) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-10 gp-0)) - (set! (-> v1-10 width) (the float 400)) - ) - (let ((v1-11 gp-0)) - (set! (-> v1-11 height) (the float 50)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) - (print-game-text (lookup-text! *common-text* (text-id lose!) #f) gp-0 #f 128 22) - ) - ) - (fisher-draw-display self) - (let ((gp-1 (get-response (-> self query)))) - (cond - ((and (= gp-1 'yes) (process-release? *target*)) - (go-virtual enter-playing) - ) - ((= gp-1 'no) - (go-virtual play-reject) - ) - ) - ) - ) - ) - (spool-push *art-control* "fisher-reject" 0 self -99.0) - ) + (+ (the-as float (-> gp-2 user-object 0)) (* 12.903226 (/ (the float v1-40) (fmax 5.0 (the float (-> self missed)))))))))) + (let ((f0-4 (if (zero? (-> gp-2 user-uint8 4)) 200.0 (/ (the-as float (-> gp-2 user-object 0)) (the float (-> gp-2 user-uint8 4)))))) + (when (zero? (mod (+ (-> gp-2 user-uint8 5) 1) (the-as uint 5))) + (cond + ((-> self hard)) + ((= (-> gp-2 user-uint8 5) 4) + (if (< f0-4 60.0) (set! (-> gp-2 user-int8 6) (seekl (the-as int (-> gp-2 user-uint8 6)) 4 1))) + (set! (-> gp-2 user-object 0) 0.0) + (set! (-> gp-2 user-int8 4) 0) + 0) + ((= (-> gp-2 user-uint8 5) 9) + (if (< f0-4 120.0) (set! (-> gp-2 user-int8 6) (seekl (the-as int (-> gp-2 user-uint8 6)) 4 1)))) + (else (set! (-> gp-2 user-int8 6) (seekl (the-as int (-> gp-2 user-uint8 6)) 4 1)))))) + (set! (-> gp-2 user-int8 5) (seekl (the-as int (-> gp-2 user-uint8 5)) 255 1)) + (set! (-> self difficulty) (the-as int (-> gp-2 user-uint8 6))) + (if (-> self hard) (set! (-> self difficulty) 5)) + (format #t + "fisher: accum ~f div ~d tries ~d diff ~d~%" + (the-as float (-> gp-2 user-object 0)) + (-> gp-2 user-uint8 4) + (-> gp-2 user-uint8 5) + (-> gp-2 user-uint8 6))) + (process-spawn-function process + (lambda :behavior process () + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 0.1)) (suspend))) + (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) + (none))) + (send-event *target* 'lose)))) + :exit + (behavior () + (when (and *target* (the-as target #f)) + (send-event *target* 'end-mode) + (process-grab? *target*))) + :trans + (behavior () + (set! *camera-look-through-other* 2) + (cond + ((>= (-> self caught) (-> *FISHER-bank* max-caught))) + ((< (-> self caught) 0)) + (else + (when (< (mod (-> *display* base-frame-counter) (seconds 1)) (seconds 0.5)) + ;; og:preserve-this PAL patch here + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 56 100 0.0 (font-color red) (font-flags shadow kerning)))) + (let ((v1-10 gp-0)) (set! (-> v1-10 width) (the float 400))) + (let ((v1-11 gp-0)) (set! (-> v1-11 height) (the float 50))) + (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) + (print-game-text (lookup-text! *common-text* (text-id lose!) #f) gp-0 #f 128 22))) + (fisher-draw-display self) + (let ((gp-1 (get-response (-> self query)))) + (cond + ((and (= gp-1 'yes) (process-release? *target*)) (go-virtual enter-playing)) + ((= gp-1 'no) (go-virtual play-reject)))))) + (spool-push *art-control* "fisher-reject" 0 self -99.0)) :code process-taskable-anim-loop - :post ja-post - ) + :post ja-post) (defbehavior fisher-spawn-ambient fisher () (let ((f0-2 (rand-float-gen))) (cond ((and (< 0.3 f0-2) (< (+ (-> *FISHER-bank* max-caught) -30) (-> self caught))) (if (and (time-elapsed? (-> self ambient-almost) (seconds 10)) - (play-ambient (-> self ambient) "FIS-TA11" #t (-> self root trans)) - ) - (set-time! (-> self ambient-almost)) - ) - ) - ((< 0.125 f0-2) - ) + (play-ambient (-> self ambient) "FIS-TA11" #t (-> self root trans))) + (set-time! (-> self ambient-almost)))) + ((< 0.125 f0-2)) ((< 0.1 f0-2) (if (and (time-elapsed? (-> self ambient-steady) (seconds 10)) - (play-ambient (-> self ambient) "FIS-TA06" #t (-> self root trans)) - ) - (set-time! (-> self ambient-steady)) - ) - ) + (play-ambient (-> self ambient) "FIS-TA06" #t (-> self root trans))) + (set-time! (-> self ambient-steady)))) ((< (+ (-> *FISHER-bank* max-missed) -6) (-> self missed)) (if (and (time-elapsed? (-> self ambient-sagging) (seconds 10)) - (play-ambient (-> self ambient) "FIS-TA07" #t (-> self root trans)) - ) - (set-time! (-> self ambient-sagging)) - ) - ) - ) - ) - (none) - ) + (play-ambient (-> self ambient) "FIS-TA07" #t (-> self root trans))) + (set-time! (-> self ambient-sagging)))))) + (none)) (defbehavior fisher-game-update fisher () (when (time-elapsed? (-> self block-time) (-> self params timeout)) (set-time! (-> self block-time)) (+! (-> self block) 1) - (mem-copy! - (the-as pointer (-> self params)) - (the-as pointer (-> *fisher-params* (-> self difficulty) (-> self block))) - 56 - ) - ) + (mem-copy! (the-as pointer (-> self params)) + (the-as pointer (-> *fisher-params* (-> self difficulty) (-> self block))) + 56)) (when (time-elapsed? (-> self turn-time) (-> self swing-time)) (set-time! (-> self turn-time)) (set! (-> self swing-time) - (rand-vu-int-range (the-as int (-> self params swing-min)) (the-as int (-> self params swing-max))) - ) - (set! (-> self params vel) (- (-> self params vel))) - ) + (rand-vu-int-range (the-as int (-> self params swing-min)) (the-as int (-> self params swing-max)))) + (set! (-> self params vel) (- (-> self params vel)))) (+! (-> self spawner) (* (-> self params vel) (seconds-per-frame))) (if (= (-> self params swing-min) (seconds 333.33)) - (set! (-> self spawner) (* 0.01 (the float (-> self params swing-max)))) - ) + (set! (-> self spawner) (* 0.01 (the float (-> self params swing-max))))) (cond ((and (< 0.0 (-> self params vel)) (>= (-> self spawner) 1.0)) (set! (-> self params vel) (- (-> self params vel))) - (set! (-> self spawner) 1.0) - ) + (set! (-> self spawner) 1.0)) ((and (< (-> self params vel) 0.0) (>= 0.0 (-> self spawner))) (set! (-> self params vel) (- (-> self params vel))) - (set! (-> self spawner) 0.0) - ) - ) + (set! (-> self spawner) 0.0))) (when (and (nonzero? (-> self params period)) (time-elapsed? (-> self spawn-time) (-> self params period))) - (let ((gp-0 - (cond - ((rand-vu-percent? (-> self params powerup-percent)) - (if (and (time-elapsed? (-> self ambient-big-one) (seconds 30)) - (play-ambient (-> self ambient) "FIS-TA03" #t (-> self root trans)) - ) - (set-time! (-> self ambient-big-one)) - ) - 'powerup - ) - ((rand-vu-percent? (-> self params bad-percent)) - 'bad - ) - ((rand-vu-percent? (-> self params deadly-percent)) - 'deadly - ) - (else - 'normal - ) - ) - ) - ) + (let ((gp-0 (cond + ((rand-vu-percent? (-> self params powerup-percent)) + (if (and (time-elapsed? (-> self ambient-big-one) (seconds 30)) + (play-ambient (-> self ambient) "FIS-TA03" #t (-> self root trans))) + (set-time! (-> self ambient-big-one))) + 'powerup) + ((rand-vu-percent? (-> self params bad-percent)) 'bad) + ((rand-vu-percent? (-> self params deadly-percent)) 'deadly) + (else 'normal)))) (if (and (!= gp-0 'bad) (< 0.8 (fabs (- (-> self spawner-last) (-> self spawner))))) - (set! (-> self spawner) (* 0.5 (+ (-> self spawner-last) (-> self spawner)))) - ) + (set! (-> self spawner) (* 0.5 (+ (-> self spawner-last) (-> self spawner))))) (set! (-> self spawner-last) (-> self spawner)) (set-time! (-> self spawn-time)) (sound-play "fish-spawn" :vol 70) (fisher-spawn-ambient) - (process-spawn fisher-fish gp-0 (-> self spawner) (* 1.85 (-> self params fish-vel)) :to self) - ) - ) + (process-spawn fisher-fish gp-0 (-> self spawner) (* 1.85 (-> self params fish-vel)) :to self))) (let ((f1-14 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 32.0 110.0 28.0))) - (+! (-> self paddle-vel) (* f1-14 (seconds-per-frame))) - ) + (+! (-> self paddle-vel) (* f1-14 (seconds-per-frame)))) (seek! (-> self paddle-vel) 0.0 (* 15.0 (seconds-per-frame))) (set! (-> self paddle-vel) (fmax -2.0 (fmin 2.0 (-> self paddle-vel)))) (+! (-> self paddle) (* (-> self paddle-vel) (seconds-per-frame))) (set! (-> self paddle) (fmax 0.0 (fmin 1.0 (-> self paddle)))) - (vector-lerp! - (-> self paddle-pos) - (the-as vector (-> self paddle-end)) - (the-as vector (&-> self stack 288)) - (-> self paddle) - ) + (vector-lerp! (-> self paddle-pos) + (the-as vector (-> self paddle-end)) + (the-as vector (&-> self stack 288)) + (-> self paddle)) 0 - (none) - ) + (none)) (defstate fisher-playing (fisher) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-2 object)) - (case message - (('fisher-fish-die) - (sound-play "fish-miss") - (set! v0-2 (+ (-> self missed) (-> block param 0))) - (set! (-> self missed) (the-as int v0-2)) - v0-2 - ) - (('fisher-fish-caught) - (send-event *target* 'bounce) - (set! v0-2 (+ (-> self caught) (-> block param 0))) - (set! (-> self caught) (the-as int v0-2)) - v0-2 - ) - (('deadly) - (go fisher-done) - ) - (('bad) - (set! v0-2 (seekl (-> self caught) 0 10)) - (set! (-> self caught) (the-as int v0-2)) - v0-2 - ) - ) - ) - :enter (behavior () - (set-setting! 'ambient-volume 'rel 50.0 0) - (send-event *target* 'reset-pickup 'eco) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (process-spawn-function - process - (lambda :behavior fisher-fish - () - (logclear! (-> self mask) (process-mask pause)) - (loop - (fisher-draw-display (the-as fisher (ppointer->process (-> self parent)))) - (suspend) - ) - (none) - ) - :to self - ) - (send-event *camera* 'change-to-entity-by-name "camera-152") - (init! (-> self query) (the-as string #f) 40 150 25 #t (lookup-text! *common-text* (text-id quit) #f)) - ) - :exit (behavior () - (remove-setting! 'ambient-volume) - (let* ((v1-2 *camera-other-matrix*) - (a3-0 (-> *camera-combiner* inv-camera-rot)) - (a0-2 (-> a3-0 vector 0 quad)) - (a1-1 (-> a3-0 vector 1 quad)) - (a2-1 (-> a3-0 vector 2 quad)) - (a3-1 (-> a3-0 vector 3 quad)) - ) - (set! (-> v1-2 vector 0 quad) a0-2) - (set! (-> v1-2 vector 1 quad) a1-1) - (set! (-> v1-2 vector 2 quad) a2-1) - (set! (-> v1-2 vector 3 quad) a3-1) - ) - (set! (-> *camera-other-fov* data) (-> *camera-combiner* fov)) - (set! (-> *camera-other-trans* quad) (-> *camera-combiner* trans quad)) - (set! (-> *camera-other-root* quad) (-> self root trans quad)) - (restore-collide-with-as (-> self root)) - (send-event *camera* 'blend-from-as-fixed) - (send-event *camera* 'change-state *camera-base-mode* 0) - (send-event *camera* 'clear-entity) - 0 - ) - :trans (behavior () - (spool-push *art-control* "fisher-resolution" 0 self -99.0) - (spool-push *art-control* "fisher-reject" 0 self -99.0) - ) - :code (behavior () - (set! *display-profile* #f) - (set! (-> self paddle) 0.5) - (set! (-> self paddle-vel) 0.0) - (set-time! (-> self start-time)) - (set! (-> self caught) 0) - (set! (-> self missed) 0) - (set! (-> self spawner) 0.5) - (set! (-> self spawner-last) 0.5) - (set! (-> self swing-time) 0) - (set! (-> self block) -1) - (set-time! (-> self block-time)) - (+! (-> self block) 1) - (mem-copy! - (the-as pointer (-> self params)) - (the-as pointer (-> *fisher-params* (-> self difficulty) (-> self block))) - 56 - ) - (set! (-> self ambient-big-one) 0) - (set! (-> self ambient-steady) 0) - (set! (-> self ambient-sagging) 0) - (set! (-> self ambient-almost) 0) - (loop - (hide-hud-quick) - (fisher-game-update) - (if (or (zero? (-> self params timeout)) - (>= (-> self missed) (-> *FISHER-bank* max-missed)) - (>= (-> self caught) (-> *FISHER-bank* max-caught)) - ) - (go fisher-done) - ) - (suspend) - ) - ) - :post (behavior () - (ja-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-2 object)) + (case message + (('fisher-fish-die) + (sound-play "fish-miss") + (set! v0-2 (+ (-> self missed) (-> block param 0))) + (set! (-> self missed) (the-as int v0-2)) + v0-2) + (('fisher-fish-caught) + (send-event *target* 'bounce) + (set! v0-2 (+ (-> self caught) (-> block param 0))) + (set! (-> self caught) (the-as int v0-2)) + v0-2) + (('deadly) (go fisher-done)) + (('bad) (set! v0-2 (seekl (-> self caught) 0 10)) (set! (-> self caught) (the-as int v0-2)) v0-2))) + :enter + (behavior () + (set-setting! 'ambient-volume 'rel 50.0 0) + (send-event *target* 'reset-pickup 'eco) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (process-spawn-function process + (lambda :behavior fisher-fish () + (logclear! (-> self mask) (process-mask pause)) + (loop + (fisher-draw-display (the-as fisher (ppointer->process (-> self parent)))) + (suspend)) + (none)) + :to + self) + (send-event *camera* 'change-to-entity-by-name "camera-152") + (init! (-> self query) (the-as string #f) 40 150 25 #t (lookup-text! *common-text* (text-id quit) #f))) + :exit + (behavior () + (remove-setting! 'ambient-volume) + (let* ((v1-2 *camera-other-matrix*) + (a3-0 (-> *camera-combiner* inv-camera-rot)) + (a0-2 (-> a3-0 vector 0 quad)) + (a1-1 (-> a3-0 vector 1 quad)) + (a2-1 (-> a3-0 vector 2 quad)) + (a3-1 (-> a3-0 vector 3 quad))) + (set! (-> v1-2 vector 0 quad) a0-2) + (set! (-> v1-2 vector 1 quad) a1-1) + (set! (-> v1-2 vector 2 quad) a2-1) + (set! (-> v1-2 vector 3 quad) a3-1)) + (set! (-> *camera-other-fov* data) (-> *camera-combiner* fov)) + (set! (-> *camera-other-trans* quad) (-> *camera-combiner* trans quad)) + (set! (-> *camera-other-root* quad) (-> self root trans quad)) + (restore-collide-with-as (-> self root)) + (send-event *camera* 'blend-from-as-fixed) + (send-event *camera* 'change-state *camera-base-mode* 0) + (send-event *camera* 'clear-entity) + 0) + :trans + (behavior () + (spool-push *art-control* "fisher-resolution" 0 self -99.0) + (spool-push *art-control* "fisher-reject" 0 self -99.0)) + :code + (behavior () + (set! *display-profile* #f) + (set! (-> self paddle) 0.5) + (set! (-> self paddle-vel) 0.0) + (set-time! (-> self start-time)) + (set! (-> self caught) 0) + (set! (-> self missed) 0) + (set! (-> self spawner) 0.5) + (set! (-> self spawner-last) 0.5) + (set! (-> self swing-time) 0) + (set! (-> self block) -1) + (set-time! (-> self block-time)) + (+! (-> self block) 1) + (mem-copy! (the-as pointer (-> self params)) + (the-as pointer (-> *fisher-params* (-> self difficulty) (-> self block))) + 56) + (set! (-> self ambient-big-one) 0) + (set! (-> self ambient-steady) 0) + (set! (-> self ambient-sagging) 0) + (set! (-> self ambient-almost) 0) + (loop + (hide-hud-quick) + (fisher-game-update) + (if (or (zero? (-> self params timeout)) + (>= (-> self missed) (-> *FISHER-bank* max-missed)) + (>= (-> self caught) (-> *FISHER-bank* max-caught))) + (go fisher-done)) + (suspend))) + :post + (behavior () + (ja-post))) (defstate enter-playing (fisher) :virtual #t - :trans (behavior () - (set-blackout-frames (seconds 0.017)) - (if (send-event *target* 'change-mode 'fishing self) - (go fisher-playing) - ) - ) - ) + :trans + (behavior () + (set-blackout-frames (seconds 0.017)) + (if (send-event *target* 'change-mode 'fishing self) (go fisher-playing)))) ;; og:preserve-this pc port needs its own implementation of play-anim for cutscene skipping (#when PC_PORT -(define *fisher-camera-backup-fov* (degrees 46.2356)) -(define *fisher-camera-backup-trans* (new 'static 'vector :x 1095664.2500 :y 15926.4003 :z -945203.3750 :w 1.0000)) -(define *fisher-camera-backup-matrix* (new 'static 'matrix :vector (new 'static 'inline-array vector 4 - (new 'static 'vector :x -0.8677 :y -0.0000 :z 0.4969) - (new 'static 'vector :x -0.0081 :y 0.9998 :z -0.0141) - (new 'static 'vector :x -0.4968 :y -0.0163 :z -0.8676) - (new 'static 'vector :w 1.0) - ))) -(define *fisher-camera-use-backup* #f) - -(defstate play-anim (fisher) - :virtual #t - - :enter (behavior () - (set! *fisher-camera-use-backup* #f) - ((-> (method-of-type process-taskable play-anim) enter)) - 0 - (none)) - - :exit (behavior () - (set! *fisher-camera-use-backup* (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1))) - (-> self training))) - (set! (-> self cur-trans-hook) (lambda () (when *fisher-camera-use-backup* - (set! (-> *camera-other-fov* data) *fisher-camera-backup-fov*) - (vector-copy! *camera-other-trans* *fisher-camera-backup-trans*) - (matrix-copy! *camera-other-matrix* *fisher-camera-backup-matrix*) - ) - (none))) - ((-> (method-of-type process-taskable play-anim) exit)) - 0 - (none)) - - ) -) + (define *fisher-camera-backup-fov* (degrees 46.2356)) + (define *fisher-camera-backup-trans* (new 'static 'vector :x 1095664.2500 :y 15926.4003 :z -945203.3750 :w 1.0000)) + (define *fisher-camera-backup-matrix* + (new 'static + 'matrix + :vector + (new 'static + 'inline-array + vector + 4 + (new 'static 'vector :x -0.8677 :y -0.0000 :z 0.4969) + (new 'static 'vector :x -0.0081 :y 0.9998 :z -0.0141) + (new 'static 'vector :x -0.4968 :y -0.0163 :z -0.8676) + (new 'static 'vector :w 1.0)))) + (define *fisher-camera-use-backup* #f) + (defstate play-anim (fisher) + :virtual #t + :enter + (behavior () + (set! *fisher-camera-use-backup* #f) + ((-> (method-of-type process-taskable play-anim) enter)) + 0 + (none)) + :exit + (behavior () + (set! *fisher-camera-use-backup* + (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1))) (-> self training))) + (set! (-> self cur-trans-hook) + (lambda () + (when *fisher-camera-use-backup* + (set! (-> *camera-other-fov* data) *fisher-camera-backup-fov*) + (vector-copy! *camera-other-trans* *fisher-camera-backup-trans*) + (matrix-copy! *camera-other-matrix* *fisher-camera-backup-matrix*)) + (none))) + ((-> (method-of-type process-taskable play-anim) exit)) + 0 + (none)))) (defstate query (fisher) :virtual #t - :enter (behavior () - (init! - (-> self query) - (lookup-text! *common-text* (text-id fish?) #f) - 40 - 150 - 25 - #f - (lookup-text! *common-text* (text-id quit) #f) - ) - ) + :enter + (behavior () + (init! (-> self query) + (lookup-text! *common-text* (text-id fish?) #f) + 40 + 150 + 25 + #f + (lookup-text! *common-text* (text-id quit) #f))) ;; og:preserve-this needed for cutscene skipping - :exit (behavior () + :exit + (behavior () (#when PC_PORT - (set! (-> self cur-trans-hook) nothing) - ) - ((-> (method-of-type process-taskable play-anim) exit))) - ) + (set! (-> self cur-trans-hook) nothing)) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod process-taskable-method-43 ((this fisher)) (cond @@ -1664,246 +1349,130 @@ (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 1) 122880.0 this) (let ((f0-2 (rand-float-gen))) (if (< 0.5 f0-2) - (play-ambient (-> this ambient) "FIS-LO03" #f (-> this root trans)) - (play-ambient (-> this ambient) "FIS-LO05" #f (-> this root trans)) - ) - ) - ) - ) + (play-ambient (-> this ambient) "FIS-LO03" #f (-> this root trans)) + (play-ambient (-> this ambient) "FIS-LO05" #f (-> this root trans)))))) (else - (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) - (let ((f0-5 (rand-float-gen))) - (cond - ((< 0.875 f0-5) - (play-ambient (-> this ambient) "FIS-LO01" #f (-> this root trans)) - ) - ((< 0.75 f0-5) - (play-ambient (-> this ambient) "FIS-LO04" #f (-> this root trans)) - ) - ((< 0.625 f0-5) - (play-ambient (-> this ambient) "FIS-AM01" #f (-> this root trans)) - ) - ((< 0.5 f0-5) - (play-ambient (-> this ambient) "FIS-AM02" #f (-> this root trans)) - ) - ((< 0.375 f0-5) - (play-ambient (-> this ambient) "FIS-AM03" #f (-> this root trans)) - ) - ((< 0.25 f0-5) - (play-ambient (-> this ambient) "FIS-AM04" #f (-> this root trans)) - ) - ((< 0.125 f0-5) - (play-ambient (-> this ambient) "FIS-AM05" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "FIS-AM06" #f (-> this root trans)) - ) - ) - ) - ) - ) - ) - ) + (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) + (let ((f0-5 (rand-float-gen))) + (cond + ((< 0.875 f0-5) (play-ambient (-> this ambient) "FIS-LO01" #f (-> this root trans))) + ((< 0.75 f0-5) (play-ambient (-> this ambient) "FIS-LO04" #f (-> this root trans))) + ((< 0.625 f0-5) (play-ambient (-> this ambient) "FIS-AM01" #f (-> this root trans))) + ((< 0.5 f0-5) (play-ambient (-> this ambient) "FIS-AM02" #f (-> this root trans))) + ((< 0.375 f0-5) (play-ambient (-> this ambient) "FIS-AM03" #f (-> this root trans))) + ((< 0.25 f0-5) (play-ambient (-> this ambient) "FIS-AM04" #f (-> this root trans))) + ((< 0.125 f0-5) (play-ambient (-> this ambient) "FIS-AM05" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "FIS-AM06" #f (-> this root trans))))))))) (defstate play-accept (fisher) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 rgbaf)) - (case message - (('emissive-on) - (set-vector! (-> self draw color-mult) 0.6 0.6 0.6 1.0) - (set! v0-0 (-> self draw color-emissive)) - (set! (-> v0-0 x) 0.6) - (set! (-> v0-0 y) 0.6) - (set! (-> v0-0 z) 0.6) - (set! (-> v0-0 w) 0.0) - v0-0 - ) - (('emissive-off) - (set-vector! (-> self draw color-mult) 1.0 1.0 1.0 1.0) - (set! v0-0 (-> self draw color-emissive)) - (set! (-> v0-0 x) 0.0) - (set! (-> v0-0 y) 0.0) - (set! (-> v0-0 z) 0.0) - (set! (-> v0-0 w) 0.0) - v0-0 - ) - ) - ) - :trans (behavior () - (when (-> self training) - (let ((gp-0 (new-stack-vector0))) - (vector<-cspace! gp-0 (joint-node fisher-lod0-jg mainA)) - (launch-particles (-> *part-id-table* 2001) gp-0) - (fisher-fish-water gp-0 (+ 32768.0 (vector-y-angle (-> self node-list data 75 bone transform vector 1)))) - (vector<-cspace! gp-0 (joint-node fisher-lod0-jg mainB)) - (launch-particles (-> *part-id-table* 2001) gp-0) - (fisher-fish-water gp-0 (+ 32768.0 (vector-y-angle (-> self node-list data 78 bone transform vector 1)))) - (vector<-cspace! gp-0 (joint-node fisher-lod0-jg top)) - (launch-particles (-> *part-id-table* 828) gp-0) - (launch-particles (-> *part-id-table* 2013) gp-0) - (fisher-fish-water gp-0 (+ 32768.0 (vector-y-angle (-> self node-list data 80 bone transform vector 1)))) - ) - ) - (let ((t9-14 (-> (find-parent-state) trans))) - (if t9-14 - (t9-14) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 rgbaf)) + (case message + (('emissive-on) + (set-vector! (-> self draw color-mult) 0.6 0.6 0.6 1.0) + (set! v0-0 (-> self draw color-emissive)) + (set! (-> v0-0 x) 0.6) + (set! (-> v0-0 y) 0.6) + (set! (-> v0-0 z) 0.6) + (set! (-> v0-0 w) 0.0) + v0-0) + (('emissive-off) + (set-vector! (-> self draw color-mult) 1.0 1.0 1.0 1.0) + (set! v0-0 (-> self draw color-emissive)) + (set! (-> v0-0 x) 0.0) + (set! (-> v0-0 y) 0.0) + (set! (-> v0-0 z) 0.0) + (set! (-> v0-0 w) 0.0) + v0-0))) + :trans + (behavior () + (when (-> self training) + (let ((gp-0 (new-stack-vector0))) + (vector<-cspace! gp-0 (joint-node fisher-lod0-jg mainA)) + (launch-particles (-> *part-id-table* 2001) gp-0) + (fisher-fish-water gp-0 (+ 32768.0 (vector-y-angle (-> self node-list data 75 bone transform vector 1)))) + (vector<-cspace! gp-0 (joint-node fisher-lod0-jg mainB)) + (launch-particles (-> *part-id-table* 2001) gp-0) + (fisher-fish-water gp-0 (+ 32768.0 (vector-y-angle (-> self node-list data 78 bone transform vector 1)))) + (vector<-cspace! gp-0 (joint-node fisher-lod0-jg top)) + (launch-particles (-> *part-id-table* 828) gp-0) + (launch-particles (-> *part-id-table* 2013) gp-0) + (fisher-fish-water gp-0 (+ 32768.0 (vector-y-angle (-> self node-list data 80 bone transform vector 1)))))) + (let ((t9-14 (-> (find-parent-state) trans))) (if t9-14 (t9-14))))) (defstate idle (fisher) :virtual #t - :trans (behavior () - (let ((t9-1 (-> (find-parent-state) trans))) - (if t9-1 - (t9-1) - ) - ) - (when (task-complete? *game-info* (-> self entity extra perm task)) - (when (nonzero? (-> *cpad-list* cpads 0 button0-rel 0)) - (let ((v1-9 (-> self cheat-temp))) - (cond - ((zero? v1-9) - (cond - ((cpad-pressed? 0 left) - (+! (-> self cheat-temp) 1) - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ((= v1-9 1) - (cond - ((cpad-pressed? 0 left) - (+! (-> self cheat-temp) 1) - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ((= v1-9 2) - (cond - ((cpad-pressed? 0 right) - (+! (-> self cheat-temp) 1) - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ((= v1-9 3) - (cond - ((cpad-pressed? 0 right) - (+! (-> self cheat-temp) 1) - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ((= v1-9 4) - (cond - ((cpad-pressed? 0 left) - (+! (-> self cheat-temp) 1) - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ((= v1-9 5) - (cond - ((cpad-pressed? 0 left) - (+! (-> self cheat-temp) 1) - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ((= v1-9 6) - (cond - ((cpad-pressed? 0 right) - (+! (-> self cheat-temp) 1) - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ((= v1-9 7) - (cond - ((cpad-pressed? 0 right) - (+! (-> self cheat-temp) 1) - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ((= v1-9 8) - (cond - ((cpad-pressed? 0 x) - (set! (-> self hard) #t) - (set! (-> self difficulty) 5) - (set! (-> *FISHER-bank* max-caught) #x70000000) - (ambient-hint-spawn "FIS-LO03" (the-as vector #f) *entity-pool* 'stinger) - (set! (-> self cheat-temp) 0) - 0 - ) - (else - (set! (-> self cheat-temp) 0) - 0 - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (ja :group! (get-art-elem self)) - (let* ((f30-0 5.0) - (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-10 (the-as number (logior #x3f800000 v1-9))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + :trans + (behavior () + (let ((t9-1 (-> (find-parent-state) trans))) (if t9-1 (t9-1))) + (when (task-complete? *game-info* (-> self entity extra perm task)) + (when (nonzero? (-> *cpad-list* cpads 0 button0-rel 0)) + (let ((v1-9 (-> self cheat-temp))) + (cond + ((zero? v1-9) + (cond + ((cpad-pressed? 0 left) (+! (-> self cheat-temp) 1)) + (else (set! (-> self cheat-temp) 0) 0))) + ((= v1-9 1) + (cond + ((cpad-pressed? 0 left) (+! (-> self cheat-temp) 1)) + (else (set! (-> self cheat-temp) 0) 0))) + ((= v1-9 2) + (cond + ((cpad-pressed? 0 right) (+! (-> self cheat-temp) 1)) + (else (set! (-> self cheat-temp) 0) 0))) + ((= v1-9 3) + (cond + ((cpad-pressed? 0 right) (+! (-> self cheat-temp) 1)) + (else (set! (-> self cheat-temp) 0) 0))) + ((= v1-9 4) + (cond + ((cpad-pressed? 0 left) (+! (-> self cheat-temp) 1)) + (else (set! (-> self cheat-temp) 0) 0))) + ((= v1-9 5) + (cond + ((cpad-pressed? 0 left) (+! (-> self cheat-temp) 1)) + (else (set! (-> self cheat-temp) 0) 0))) + ((= v1-9 6) + (cond + ((cpad-pressed? 0 right) (+! (-> self cheat-temp) 1)) + (else (set! (-> self cheat-temp) 0) 0))) + ((= v1-9 7) + (cond + ((cpad-pressed? 0 right) (+! (-> self cheat-temp) 1)) + (else (set! (-> self cheat-temp) 0) 0))) + ((= v1-9 8) + (cond + ((cpad-pressed? 0 x) + (set! (-> self hard) #t) + (set! (-> self difficulty) 5) + (set! (-> *FISHER-bank* max-caught) #x70000000) + (ambient-hint-spawn "FIS-LO03" (the-as vector #f) *entity-pool* 'stinger) + (set! (-> self cheat-temp) 0) + 0) + (else (set! (-> self cheat-temp) 0) 0)))))))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.2))) + (loop + (ja :group! (get-art-elem self)) + (let* ((f30-0 5.0) + (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-10 (the-as number (logior #x3f800000 v1-9)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (process-taskable-method-43 self) + (suspend) + (ja :num! (seek!))))) + (when (ja-group? fisher-idle-more-often-ja) + (ja-no-eval :group! fisher-idle-less-often-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (process-taskable-method-43 self) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (when (ja-group? fisher-idle-more-often-ja) - (ja-no-eval :group! fisher-idle-less-often-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (process-taskable-method-43 self) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) + (ja :num! (seek!))))))) (defmethod initialize-collision ((this fisher) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -1921,8 +1490,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 6553.6) - (append-prim s4-0 s2-0) - ) + (append-prim s4-0 s2-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -1930,20 +1498,15 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 57) (set-vector! (-> s3-1 local-sphere) 0.0 4096.0 0.0 4096.0) - (append-prim s4-0 s3-1) - ) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod target-above-threshold? ((this fisher)) - (or (= (current-task (-> this tasks)) (game-task jungle-fishgame)) (-> this hard)) - ) + (or (= (current-task (-> this tasks)) (game-task jungle-fishgame)) (-> this hard))) (defmethod init-from-entity! ((this fisher) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *fisher-sg* 3 49 (new 'static 'vector :w 4096.0) 33) @@ -1951,151 +1514,107 @@ (set! (-> this path) (new 'process 'curve-control this 'path -1000000000.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (let ((s5-0 (eval-path-curve-div! (-> this path) (-> this paddle-pos) 6.5 'interp)) - (s4-0 (path-control-method-12 (-> this path) (new-stack-vector0) 6.5)) - ) + (s4-0 (path-control-method-12 (-> this path) (new-stack-vector0) 6.5))) (+! (-> s5-0 y) 2457.6) (vector-normalize! (vector-rotate-y! s4-0 s4-0 16384.0) (-> *FISHER-bank* width)) (vector-! (the-as vector (-> this paddle-end)) s5-0 s4-0) - (vector+! (the-as vector (&-> this stack 288)) s5-0 s4-0) - ) + (vector+! (the-as vector (&-> this stack 288)) s5-0 s4-0)) (set! (-> this music) 'fishgame) (set! (-> this difficulty) (the-as int (-> this entity extra perm user-uint8 6))) (set! (-> this hard) #f) (set! (-> *FISHER-bank* max-caught) 200) (set! (-> this training) #f) (process-taskable-method-42 this) - (none) - ) + (none)) (defstate target-fishing (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((= message 'bounce) - (set-zero! (-> self control unknown-smush00)) - (activate! (-> self control unknown-smush00) 1.0 120 210 0.3 1.0) - ) - ((= message 'lose) - (set! (-> self control unknown-uint20) (the-as uint message)) - message - ) - (else - ((-> target-grab event) proc argc message block) - ) - ) - ) - :enter (behavior ((arg0 handle)) - (set! (-> self control unknown-surface00) *empty-mods*) - (logior! (-> self state-flags) (state-flags invulnerable)) - (set-zero! (-> self control unknown-smush00)) - (set! (-> self control unknown-uint20) (the-as uint #f)) - ) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags invulnerable)) - (let ((v1-2 (-> self manipy))) - (when v1-2 - (deactivate (-> v1-2 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (-> target-periscope exit) - ) - :code (behavior ((arg0 handle)) - (let ((v1-1 (handle->process arg0))) - (when (and v1-1 (type-type? (-> v1-1 type) fisher)) - (set-vector! (-> self control trans) 1067827.2 9420.8 -955596.8 1.0) - (set-yaw-angle-clear-roll-pitch! (-> self control) -20024.889) - (rot->dir-targ! (-> self control)) - ) - ) - (ja-channel-set! 1) - (let ((s5-0 (get-process *default-dead-pool* manipy #x4000))) - (set! (-> self manipy) - (the-as (pointer manipy) (when s5-0 - (let ((t9-5 (method-of-type manipy activate))) - (t9-5 (the-as manipy s5-0) self 'manipy (the-as pointer #x70004000)) - ) - (let ((t9-6 run-function-in-process) - (a0-11 s5-0) - (a1-5 manipy-init) - (a2-2 (-> self control trans)) - (v1-16 (handle->process arg0)) - ) - ((the-as (function object object object object object object none) t9-6) - a0-11 - a1-5 - a2-2 - (if v1-16 - (-> v1-16 entity) - (the-as entity-actor #f) - ) - *fish-net-sg* - #f - ) - ) - (-> s5-0 ppointer) - ) - ) - ) - ) - (when (-> self manipy) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'copy-parent) - (send-event - (ppointer->process (-> self manipy)) - 'eval - (lambda :behavior manipy - () - (set! (-> self joint 0) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 6)) - (set! (-> self joint 1) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 5)) - (none) - ) - ) - (let ((v1-35 (-> self manipy 0 node-list data))) - (set! (-> v1-35 0 param0) cspace<-cspace+quaternion!) - (set! (-> v1-35 0 param1) (the-as basic (joint-node eichar-lod0-jg sk_rhand))) - (set! (-> v1-35 0 param2) (the-as basic (-> self control quat))) - ) - ) - (ja :group! eichar-fishing-ja :num! (identity (ja-aframe 15.0 0))) - (let ((s5-2 (new 'stack-no-clear 'vector))) - (until (-> self control unknown-spoolanim00) - (let ((v1-42 (handle->process arg0))) - (when v1-42 - (ja :num! (seek! - (* (fmax 0.0 (- 1.0 (-> (the-as fisher v1-42) paddle))) (the float (+ (-> (ja-group) data 0 length) -1))) - ) - ) - (when (-> self manipy) - (let ((s2-0 (new-stack-vector0)) - (s4-0 (new-stack-vector0)) - (s3-0 (quaternion-identity! (new-stack-quaternion0))) - (f30-0 (update! (-> self control unknown-smush00))) - ) - (quaternion-rotate-y! s3-0 s3-0 (* 5461.3335 f30-0)) - (set-vector! s2-0 1.0 1.0 1.0 1.0) - (set-vector! s4-0 0.0 (* 2048.0 (-> s5-2 y)) (* 819.2 (-> s5-2 y)) 1.0) - (set-trs! (-> self manipy 0 joint 0) s4-0 s3-0 s2-0) - (set-vector! s4-0 0.0 (* -614.4 f30-0) 0.0 1.0) - (set-trs! (-> self manipy 0 joint 1) s4-0 (the-as quaternion #f) (the-as vector #f)) - (set! (-> s5-2 y) (-> s5-2 x)) - (set! (-> s5-2 x) f30-0) - ) - ) - ) - ) - (suspend) - ) - ) - (case (-> self control unknown-spoolanim00) - (('lose) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! eichar-fishing-lose-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (anim-loop) - ) - ) - ) - :post target-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((= message 'bounce) + (set-zero! (-> self control unknown-smush00)) + (activate! (-> self control unknown-smush00) 1.0 120 210 0.3 1.0)) + ((= message 'lose) (set! (-> self control unknown-uint20) (the-as uint message)) message) + (else ((-> target-grab event) proc argc message block)))) + :enter + (behavior ((arg0 handle)) + (set! (-> self control unknown-surface00) *empty-mods*) + (logior! (-> self state-flags) (state-flags invulnerable)) + (set-zero! (-> self control unknown-smush00)) + (set! (-> self control unknown-uint20) (the-as uint #f))) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags invulnerable)) + (let ((v1-2 (-> self manipy))) + (when v1-2 + (deactivate (-> v1-2 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)))) + (-> target-periscope exit)) + :code + (behavior ((arg0 handle)) + (let ((v1-1 (handle->process arg0))) + (when (and v1-1 (type-type? (-> v1-1 type) fisher)) + (set-vector! (-> self control trans) 1067827.2 9420.8 -955596.8 1.0) + (set-yaw-angle-clear-roll-pitch! (-> self control) -20024.889) + (rot->dir-targ! (-> self control)))) + (ja-channel-set! 1) + (let ((s5-0 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> self manipy) + (the-as (pointer manipy) + (when s5-0 + (let ((t9-5 (method-of-type manipy activate))) (t9-5 (the-as manipy s5-0) self 'manipy (the-as pointer #x70004000))) + (let ((t9-6 run-function-in-process) + (a0-11 s5-0) + (a1-5 manipy-init) + (a2-2 (-> self control trans)) + (v1-16 (handle->process arg0))) + ((the-as (function object object object object object object none) t9-6) + a0-11 + a1-5 + a2-2 + (if v1-16 (-> v1-16 entity) (the-as entity-actor #f)) + *fish-net-sg* + #f)) + (-> s5-0 ppointer))))) + (when (-> self manipy) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'copy-parent) + (send-event (ppointer->process (-> self manipy)) + 'eval + (lambda :behavior manipy () + (set! (-> self joint 0) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 6)) + (set! (-> self joint 1) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 5)) + (none))) + (let ((v1-35 (-> self manipy 0 node-list data))) + (set! (-> v1-35 0 param0) cspace<-cspace+quaternion!) + (set! (-> v1-35 0 param1) (the-as basic (joint-node eichar-lod0-jg sk_rhand))) + (set! (-> v1-35 0 param2) (the-as basic (-> self control quat))))) + (ja :group! eichar-fishing-ja :num! (identity (ja-aframe 15.0 0))) + (let ((s5-2 (new 'stack-no-clear 'vector))) + (until (-> self control unknown-spoolanim00) + (let ((v1-42 (handle->process arg0))) + (when v1-42 + (ja :num! + (seek! (* (fmax 0.0 (- 1.0 (-> (the-as fisher v1-42) paddle))) (the float (+ (-> (ja-group) data 0 length) -1))))) + (when (-> self manipy) + (let ((s2-0 (new-stack-vector0)) + (s4-0 (new-stack-vector0)) + (s3-0 (quaternion-identity! (new-stack-quaternion0))) + (f30-0 (update! (-> self control unknown-smush00)))) + (quaternion-rotate-y! s3-0 s3-0 (* 5461.3335 f30-0)) + (set-vector! s2-0 1.0 1.0 1.0 1.0) + (set-vector! s4-0 0.0 (* 2048.0 (-> s5-2 y)) (* 819.2 (-> s5-2 y)) 1.0) + (set-trs! (-> self manipy 0 joint 0) s4-0 s3-0 s2-0) + (set-vector! s4-0 0.0 (* -614.4 f30-0) 0.0 1.0) + (set-trs! (-> self manipy 0 joint 1) s4-0 (the-as quaternion #f) (the-as vector #f)) + (set! (-> s5-2 y) (-> s5-2 x)) + (set! (-> s5-2 x) f30-0))))) + (suspend))) + (case (-> self control unknown-spoolanim00) + (('lose) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! eichar-fishing-lose-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (anim-loop)))) + :post target-post) diff --git a/goal_src/jak1/levels/jungle/hopper.gc b/goal_src/jak1/levels/jungle/hopper.gc index e261d286f9..ff4855ea42 100644 --- a/goal_src/jak1/levels/jungle/hopper.gc +++ b/goal_src/jak1/levels/jungle/hopper.gc @@ -1,313 +1,255 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: hopper.gc -;; name in dgo: hopper -;; dgos: JUN, JUNGLE, L1 - ;; DECOMP BEGINS (deftype hopper (nav-enemy) - ((jump-length float) - (shadow-min-y float) - ) - ) - + ((jump-length float) + (shadow-min-y float))) -(defskelgroup *hopper-sg* hopper hopper-lod0-jg hopper-idle-ja - ((hopper-lod0-mg (meters 20)) (hopper-lod1-mg (meters 40)) (hopper-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - :longest-edge (meters 1) - :shadow hopper-shadow-mg - ) +(defskelgroup *hopper-sg* + hopper + hopper-lod0-jg + hopper-idle-ja + ((hopper-lod0-mg (meters 20)) (hopper-lod1-mg (meters 40)) (hopper-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3) + :longest-edge (meters 1) + :shadow hopper-shadow-mg) nav-enemy-default-event-handler (defmethod common-post ((this hopper)) (let ((v1-1 (-> this draw shadow-ctrl))) - (set! (-> v1-1 settings bot-plane w) (- (- (-> this shadow-min-y) (-> this collide-info trans y)))) - ) + (set! (-> v1-1 settings bot-plane w) (- (- (-> this shadow-min-y) (-> this collide-info trans y))))) 0 (call-parent-method this) 0 - (none) - ) + (none)) (defbehavior hopper-find-ground hopper ((arg0 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) (let ((t1-0 (new 'stack-no-clear 'collide-tri-result)) - (f30-0 61440.0) - ) + (f30-0 61440.0)) (set! (-> s5-0 quad) (-> arg0 quad)) (+! (-> s5-0 y) 20480.0) - (let ((f0-2 (fill-and-probe-using-y-probe - *collide-cache* - s5-0 - f30-0 - (collide-kind background) - self - t1-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - (if (< f0-2 0.0) - (return (the-as object #f)) - ) - (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))) - ) - ) - (set! (-> arg0 quad) (-> s5-0 quad)) - ) - 0 - ) + (let ((f0-2 (fill-and-probe-using-y-probe *collide-cache* + s5-0 + f30-0 + (collide-kind background) + self + t1-0 + (new 'static 'pat-surface :noentity #x1)))) + (if (< f0-2 0.0) (return (the-as object #f))) + (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))))) + (set! (-> arg0 quad) (-> s5-0 quad))) + 0) (defbehavior hopper-jump-to hopper ((arg0 vector)) (set! (-> self jump-dest quad) (-> arg0 quad)) (hopper-find-ground (-> self jump-dest)) (set! (-> self shadow-min-y) - (+ (fmin (-> self collide-info trans y) (-> self jump-dest y)) (-> self nav-info shadow-min-y)) - ) - (nav-enemy-initialize-custom-jump - (-> self jump-dest) - #f - (-> self nav-info jump-height-min) - (-> self nav-info jump-height-factor) - -409600.0 - ) + (+ (fmin (-> self collide-info trans y) (-> self jump-dest y)) (-> self nav-info shadow-min-y))) + (nav-enemy-initialize-custom-jump (-> self jump-dest) + #f + (-> self nav-info jump-height-min) + (-> self nav-info jump-height-factor) + -409600.0) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags drop-jump)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) (ja-channel-push! 1 (seconds 0.2)) - (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445) - ) + (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445)) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) (nav-enemy-execute-jump) (set! (-> self shadow-min-y) (+ (-> self collide-info trans y) (-> self nav-info shadow-min-y))) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) (nav-enemy-jump-land-anim) 0 - (none) - ) + (none)) (defbehavior hopper-do-jump hopper () (nav-control-method-11 (-> self nav) (-> self nav target-pos)) (if (< (-> self jump-length) (vector-length (-> self nav travel))) - (vector-normalize! (-> self nav travel) (-> self jump-length)) - ) + (vector-normalize! (-> self nav travel) (-> self jump-length))) (vector+! (-> self jump-dest) (-> self collide-info trans) (-> self nav travel)) (hopper-jump-to (-> self jump-dest)) 0 - (none) - ) + (none)) (defstate nav-enemy-idle (hopper) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (loop - (dotimes (gp-0 3) - (ja-no-eval :group! hopper-idle-ja :num! (seek!) :frame-num 0.0) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (loop + (dotimes (gp-0 3) + (ja-no-eval :group! hopper-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (ja-no-eval :group! hopper-burp-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - (ja-no-eval :group! hopper-burp-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) + (ja :num! (seek!)))))) (defstate nav-enemy-patrol (hopper) :virtual #t :event nav-enemy-jump-event-handler - :trans (behavior () - (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate))) - ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) - ) - ) - :code (behavior () - (vector-reset! (-> self collide-info transv)) - (set! (-> self jump-length) 16384.0) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (loop - (cond - ((ja-group? hopper-jump-long-ja) - (ja-channel-push! 1 (seconds 0.067)) - (ja-no-eval :group! hopper-jump-long-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - ((ja-group? hopper-jump-short-ja) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! hopper-jump-short-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - (else - (ja-channel-push! 1 (seconds 0.075)) - ) - ) - (set-time! (-> self state-time)) - (ja :group! hopper-idle-ja :num! min) - (until (time-elapsed? (-> self state-time) (seconds 0.5)) - (suspend) - (ja :num! (loop!)) - ) - (when (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) (< 2.0 (-> self nav block-count))) - (set! (-> self nav block-count) 0.0) - (logior! (-> self nav flags) (nav-control-flags navcf10)) - (nav-enemy-get-new-patrol-point) - (set! (-> self nav target-pos quad) (-> self nav destination-pos quad)) - ) - (hopper-do-jump) - ) - ) - :post nav-enemy-jump-post - ) + :trans + (behavior () + (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate))) + ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)))) + :code + (behavior () + (vector-reset! (-> self collide-info transv)) + (set! (-> self jump-length) 16384.0) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (loop + (cond + ((ja-group? hopper-jump-long-ja) + (ja-channel-push! 1 (seconds 0.067)) + (ja-no-eval :group! hopper-jump-long-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))) + ((ja-group? hopper-jump-short-ja) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! hopper-jump-short-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))) + (else (ja-channel-push! 1 (seconds 0.075)))) + (set-time! (-> self state-time)) + (ja :group! hopper-idle-ja :num! min) + (until (time-elapsed? (-> self state-time) (seconds 0.5)) + (suspend) + (ja :num! (loop!))) + (when (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) (< 2.0 (-> self nav block-count))) + (set! (-> self nav block-count) 0.0) + (logior! (-> self nav flags) (nav-control-flags navcf10)) + (nav-enemy-get-new-patrol-point) + (set! (-> self nav target-pos quad) (-> self nav destination-pos quad))) + (hopper-do-jump))) + :post nav-enemy-jump-post) (defstate nav-enemy-notice (hopper) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-chase))) (defstate nav-enemy-chase (hopper) :virtual #t :event nav-enemy-jump-event-handler - :trans (behavior () - (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate))) - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - ) - ) - :code (behavior () - (vector-reset! (-> self collide-info transv)) - (set! (-> self jump-length) 32768.0) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (loop - (cond - ((ja-group? hopper-jump-long-ja) - (ja-channel-push! 1 (seconds 0.067)) - (ja-no-eval :group! hopper-jump-long-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - ((ja-group? hopper-jump-short-ja) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! hopper-jump-short-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - (else - (ja-channel-push! 1 (seconds 0.075)) - ) - ) - (set-time! (-> self state-time)) - (ja :group! hopper-idle-ja :num! min) - (until (time-elapsed? (-> self state-time) (seconds 0.2)) - (suspend) - (ja :num! (loop!)) - ) - (set! (-> self nav target-pos quad) (-> (target-pos 0) quad)) - (hopper-do-jump) - ) - ) - :post nav-enemy-jump-post - ) + :trans + (behavior () + (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate))) + ((-> (method-of-type nav-enemy nav-enemy-chase) trans)))) + :code + (behavior () + (vector-reset! (-> self collide-info transv)) + (set! (-> self jump-length) 32768.0) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (loop + (cond + ((ja-group? hopper-jump-long-ja) + (ja-channel-push! 1 (seconds 0.067)) + (ja-no-eval :group! hopper-jump-long-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))) + ((ja-group? hopper-jump-short-ja) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! hopper-jump-short-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))) + (else (ja-channel-push! 1 (seconds 0.075)))) + (set-time! (-> self state-time)) + (ja :group! hopper-idle-ja :num! min) + (until (time-elapsed? (-> self state-time) (seconds 0.2)) + (suspend) + (ja :num! (loop!))) + (set! (-> self nav target-pos quad) (-> (target-pos 0) quad)) + (hopper-do-jump))) + :post nav-enemy-jump-post) (defstate nav-enemy-stop-chase (hopper) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-stare) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-stare))) -(define *hopper-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 5 - :turn-anim 9 - :notice-anim 5 - :run-anim 5 - :jump-anim 7 - :jump-land-anim 8 - :victory-anim 6 - :taunt-anim 6 - :die-anim 11 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 10) - :run-rotate-speed (degrees 7999.9995) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 6) - :walk-rotate-speed (degrees 7999.9995) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-anim-start-frame 3.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #t - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #t - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #t - ) - ) +(define *hopper-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 5 + :turn-anim 9 + :notice-anim 5 + :run-anim 5 + :jump-anim 7 + :jump-land-anim 8 + :victory-anim 6 + :taunt-anim 6 + :die-anim 11 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 10) + :run-rotate-speed (degrees 7999.9995) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 6) + :walk-rotate-speed (degrees 7999.9995) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-anim-start-frame 3.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #t + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #t + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #t)) (defmethod initialize-collision ((this hopper)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -320,30 +262,24 @@ nav-enemy-default-event-handler (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 4096.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6963.2 0.0 4096.0) - (append-prim s4-0 s3-1) - ) - ) + (append-prim s4-0 s3-1))) (set! (-> s5-0 nav-radius) 6144.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this hopper)) (initialize-skeleton this *hopper-sg* '()) (init-defaults! this *hopper-nav-enemy-info*) (set! (-> this shadow-min-y) (+ (-> this collide-info trans y) (-> this nav-info shadow-min-y))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungle/jungle-elevator.gc b/goal_src/jak1/levels/jungle/jungle-elevator.gc index fcb0535052..9e9140d126 100644 --- a/goal_src/jak1/levels/jungle/jungle-elevator.gc +++ b/goal_src/jak1/levels/jungle/jungle-elevator.gc @@ -1,159 +1,91 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/common-obs/plat-button.gc") -;; name: jungle-elevator.gc -;; name in dgo: jungle-elevator -;; dgos: JUN, JUNGLE, L1 - ;; DECOMP BEGINS (deftype jungle-elevator (plat-button) - ((bottom-height float) - (teleport-if-below-y float) - (teleport-if-above-y float) - ) - ) - + ((bottom-height float) + (teleport-if-below-y float) + (teleport-if-above-y float))) (defmethod can-activate? ((this jungle-elevator)) - (and ((method-of-type plat-button can-activate?) this) (task-complete? *game-info* (game-task jungle-tower))) - ) + (and ((method-of-type plat-button can-activate?) this) (task-complete? *game-info* (game-task jungle-tower)))) (defstate plat-button-move-downward (jungle-elevator) :virtual #t - :enter (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-downward) enter))) - (if t9-0 - (t9-0) - ) - ) - (set! (-> self draw light-index) (the-as uint 255)) - (set! (-> self bottom-height) (-> jungle bottom-height)) - (set! (-> jungle bottom-height) (-> jungleb bottom-height)) - (send-event *target* 'reset-pickup 'eco) - ) - :exit (behavior () - (set! (-> jungle bottom-height) (-> self bottom-height)) - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-downward) exit))) - (if t9-0 - (t9-0) - ) - ) - ) - :trans (behavior () - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> s5-0 quad) (-> self root trans quad)) - (let ((t9-1 (-> (find-parent-state) trans))) - (if t9-1 - (t9-1) - ) - ) - (vector-! gp-0 (-> self root trans) s5-0) - (when (< (-> self path-pos) 0.9) - (move-by-vector! (-> *target* control) gp-0) - (send-event *target* 'reset-height) - ) - ) - (if (and (>= (-> self path-pos) 0.2) (not (time-elapsed? (-> self state-time) (seconds 0.2)))) - (load-commands-set! *level* (load-command-get-index *level* 'jungle 0)) - ) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-downward) enter))) (if t9-0 (t9-0))) + (set! (-> self draw light-index) (the-as uint 255)) + (set! (-> self bottom-height) (-> jungle bottom-height)) + (set! (-> jungle bottom-height) (-> jungleb bottom-height)) + (send-event *target* 'reset-pickup 'eco)) + :exit + (behavior () + (set! (-> jungle bottom-height) (-> self bottom-height)) + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-downward) exit))) (if t9-0 (t9-0)))) + :trans + (behavior () + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self root trans quad)) + (let ((t9-1 (-> (find-parent-state) trans))) (if t9-1 (t9-1))) + (vector-! gp-0 (-> self root trans) s5-0) + (when (< (-> self path-pos) 0.9) + (move-by-vector! (-> *target* control) gp-0) + (send-event *target* 'reset-height))) + (if (and (>= (-> self path-pos) 0.2) (not (time-elapsed? (-> self state-time) (seconds 0.2)))) + (load-commands-set! *level* (load-command-get-index *level* 'jungle 0))))) (defstate plat-button-move-upward (jungle-elevator) :virtual #t - :enter (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) enter))) - (if t9-0 - (t9-0) - ) - ) - (set! (-> self draw light-index) (the-as uint 255)) - (set! (-> self bottom-height) (-> jungle bottom-height)) - (set! (-> jungle bottom-height) (-> jungleb bottom-height)) - (set! (-> self grab-player?) (process-grab? *target*)) - ) - :exit (behavior () - (set! (-> jungle bottom-height) (-> self bottom-height)) - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) exit))) - (if t9-0 - (t9-0) - ) - ) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) trans))) - (if t9-0 - (t9-0) - ) - ) - (if (and (< (-> self path-pos) 0.8) (not (time-elapsed? (-> self state-time) (seconds 0.2)))) - (load-commands-set! *level* (load-command-get-index *level* 'jungle 1)) - ) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) enter))) (if t9-0 (t9-0))) + (set! (-> self draw light-index) (the-as uint 255)) + (set! (-> self bottom-height) (-> jungle bottom-height)) + (set! (-> jungle bottom-height) (-> jungleb bottom-height)) + (set! (-> self grab-player?) (process-grab? *target*))) + :exit + (behavior () + (set! (-> jungle bottom-height) (-> self bottom-height)) + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) exit))) (if t9-0 (t9-0)))) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) trans))) (if t9-0 (t9-0))) + (if (and (< (-> self path-pos) 0.8) (not (time-elapsed? (-> self state-time) (seconds 0.2)))) + (load-commands-set! *level* (load-command-get-index *level* 'jungle 1))))) (defstate plat-button-at-end (jungle-elevator) :virtual #t - :code (behavior () - (cond - ((!= (-> self path-pos) 0.0) - (set! (-> self draw light-index) (the-as uint 1)) - (let ((a1-1 (res-lump-struct (-> self entity) 'continue-name structure))) - (when a1-1 - (let ((v1-4 (set-continue! *game-info* (the-as basic a1-1)))) - (load-commands-set! *level* (-> v1-4 load-commands)) - ) - ) - ) - ) - (else - (set! (-> self draw light-index) (the-as uint 255)) - (load-commands-set! *level* '()) - ) - ) - (let ((t9-4 (-> (method-of-type plat-button plat-button-at-end) code))) - (if t9-4 - ((the-as (function none :behavior plat-button) t9-4)) - ) - ) - ) - ) + :code + (behavior () + (cond + ((!= (-> self path-pos) 0.0) + (set! (-> self draw light-index) (the-as uint 1)) + (let ((a1-1 (res-lump-struct (-> self entity) 'continue-name structure))) + (when a1-1 + (let ((v1-4 (set-continue! *game-info* (the-as basic a1-1)))) (load-commands-set! *level* (-> v1-4 load-commands)))))) + (else (set! (-> self draw light-index) (the-as uint 255)) (load-commands-set! *level* '()))) + (let ((t9-4 (-> (method-of-type plat-button plat-button-at-end) code))) + (if t9-4 ((the-as (function none :behavior plat-button) t9-4)))))) (defmethod should-teleport? ((this jungle-elevator)) (let ((f0-0 (-> (camera-pos) y))) (case (-> this path-pos) - ((0.0) - (when (< f0-0 (-> this teleport-if-below-y)) - (set! (-> this draw light-index) (the-as uint 1)) - (return #t) - ) - ) - ((1.0) - (when (< (-> this teleport-if-above-y) f0-0) - (set! (-> this draw light-index) (the-as uint 255)) - (return #t) - ) - ) - ) - ) - #f - ) + ((0.0) (when (< f0-0 (-> this teleport-if-below-y)) (set! (-> this draw light-index) (the-as uint 1)) (return #t))) + ((1.0) (when (< (-> this teleport-if-above-y) f0-0) (set! (-> this draw light-index) (the-as uint 255)) (return #t))))) + #f) (defmethod can-target-move? ((this jungle-elevator)) (let ((s5-0 (new 'stack-no-clear 'vector))) (eval-path-curve! (-> this path) s5-0 0.4 'interp) (set! (-> this teleport-if-above-y) (-> s5-0 y)) (eval-path-curve! (-> this path) s5-0 0.6 'interp) - (set! (-> this teleport-if-below-y) (-> s5-0 y)) - ) + (set! (-> this teleport-if-below-y) (-> s5-0 y))) (set! (-> this draw light-index) (the-as uint 255)) (set! (-> this bidirectional?) #f) (set! (-> this should-grab-player?) #t) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungle/jungle-mirrors.gc b/goal_src/jak1/levels/jungle/jungle-mirrors.gc index a65b4f2120..a825e9b1b7 100644 --- a/goal_src/jak1/levels/jungle/jungle-mirrors.gc +++ b/goal_src/jak1/levels/jungle/jungle-mirrors.gc @@ -1,17 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/entity/ambient.gc") (require "engine/collide/collide-cache.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/camera/pov-camera-h.gc") - -;; name: jungle-mirrors.gc -;; name in dgo: jungle-mirrors -;; dgos: JUN, JUNGLE, L1 - (declare-type reflector process-drawable) (define-extern draw-power-beam (function vector vector none)) @@ -22,711 +16,622 @@ :id 176 :flags (screen-space) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 803) - (sp-item 804) - (sp-item 805) - (sp-item 806) - (sp-item 807) - (sp-item 808) - (sp-item 809) - (sp-item 810) - (sp-item 811) - (sp-item 812) - (sp-item 813) - (sp-item 814) - (sp-item 815) - (sp-item 816) - (sp-item 817) - (sp-item 818) - (sp-item 819) - (sp-item 820) - (sp-item 821) - (sp-item 822) - (sp-item 823) - ) - ) + :parts + ((sp-item 803) + (sp-item 804) + (sp-item 805) + (sp-item 806) + (sp-item 807) + (sp-item 808) + (sp-item 809) + (sp-item 810) + (sp-item 811) + (sp-item 812) + (sp-item 813) + (sp-item 814) + (sp-item 815) + (sp-item 816) + (sp-item 817) + (sp-item 818) + (sp-item 819) + (sp-item 820) + (sp-item 821) + (sp-item 822) + (sp-item 823))) (defpart 823 - :init-specs ((:texture (new 'static 'texture-id :index #x28 :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-z (degrees -45)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 1.45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x28 :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-z (degrees -45)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 1.45)))) (defpart 815 - :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-z (degrees -15)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 30)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x26 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-z (degrees -15)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 30)) + (:conerot-radius (meters 1)))) (defpart 816 - :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-z (degrees 15)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 60)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x26 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-z (degrees 15)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 60)) + (:conerot-radius (meters 1)))) (defpart 817 - :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-z (degrees 75)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 120)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x26 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-z (degrees 75)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 120)) + (:conerot-radius (meters 1)))) (defpart 818 - :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-z (degrees 105)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 150)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x26 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-z (degrees 105)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 150)) + (:conerot-radius (meters 1)))) (defpart 819 - :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-z (degrees 165)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 210)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x26 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-z (degrees 165)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 210)) + (:conerot-radius (meters 1)))) (defpart 820 - :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-z (degrees 195)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 240)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x26 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-z (degrees 195)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 240)) + (:conerot-radius (meters 1)))) (defpart 821 - :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-z (degrees 255)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 300)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x26 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-z (degrees 255)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 300)) + (:conerot-radius (meters 1)))) (defpart 822 - :init-specs ((:texture (new 'static 'texture-id :index #x26 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-z (degrees 285)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 330)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x26 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-z (degrees 285)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 330)) + (:conerot-radius (meters 1)))) (defpart 811 - :init-specs ((:texture (new 'static 'texture-id :index #x27 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.75)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.75)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x27 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.75)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.75)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 1)))) (defpart 812 - :init-specs ((:texture (new 'static 'texture-id :index #x27 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.75)) - (:rot-z (degrees 90)) - (:scale-y (meters 0.75)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 90)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x27 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.75)) + (:rot-z (degrees 90)) + (:scale-y (meters 0.75)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 90)) + (:conerot-radius (meters 1)))) (defpart 813 - :init-specs ((:texture (new 'static 'texture-id :index #x27 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.75)) - (:rot-z (degrees 180)) - (:scale-y (meters 0.75)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 180)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x27 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.75)) + (:rot-z (degrees 180)) + (:scale-y (meters 0.75)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 180)) + (:conerot-radius (meters 1)))) (defpart 814 - :init-specs ((:texture (new 'static 'texture-id :index #x27 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.75)) - (:rot-z (degrees 270)) - (:scale-y (meters 0.75)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - (:conerot-z (degrees 270)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x27 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.75)) + (:rot-z (degrees 270)) + (:scale-y (meters 0.75)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)) + (:conerot-z (degrees 270)) + (:conerot-radius (meters 1)))) (defpart 803 - :init-specs ((:texture (new 'static 'texture-id :index #x25 :page #x2)) - (:num 1.0) - (:x (meters -2.9)) - (:y (meters 2.1)) - (:scale-x (meters 4.5)) - (:scale-y (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x25 :page #x2)) + (:num 1.0) + (:x (meters -2.9)) + (:y (meters 2.1)) + (:scale-x (meters 4.5)) + (:scale-y (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 804 - :init-specs ((:texture (new 'static 'texture-id :index #x25 :page #x2)) - (:num 1.0) - (:x (meters 1.11)) - (:y (meters 2.1)) - (:scale-x (meters 4.5)) - (:scale-y (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x25 :page #x2)) + (:num 1.0) + (:x (meters 1.11)) + (:y (meters 2.1)) + (:scale-x (meters 4.5)) + (:scale-y (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 805 - :init-specs ((:texture (new 'static 'texture-id :index #x25 :page #x2)) - (:num 1.0) - (:x (meters -1.11)) - (:y (meters 2.1)) - (:scale-x (meters 3)) - (:rot-z (degrees -90)) - (:scale-y (meters 4.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x25 :page #x2)) + (:num 1.0) + (:x (meters -1.11)) + (:y (meters 2.1)) + (:scale-x (meters 3)) + (:rot-z (degrees -90)) + (:scale-y (meters 4.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 806 - :init-specs ((:texture (new 'static 'texture-id :index #x25 :page #x2)) - (:num 1.0) - (:x (meters 2.9)) - (:y (meters 2.1)) - (:scale-x (meters 3)) - (:rot-z (degrees -90)) - (:scale-y (meters 4.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x25 :page #x2)) + (:num 1.0) + (:x (meters 2.9)) + (:y (meters 2.1)) + (:scale-x (meters 3)) + (:rot-z (degrees -90)) + (:scale-y (meters 4.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 807 - :init-specs ((:texture (new 'static 'texture-id :index #x25 :page #x2)) - (:num 1.0) - (:x (meters -2.9)) - (:y (meters -2.1)) - (:scale-x (meters 3)) - (:rot-z (degrees 90)) - (:scale-y (meters 4.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x25 :page #x2)) + (:num 1.0) + (:x (meters -2.9)) + (:y (meters -2.1)) + (:scale-x (meters 3)) + (:rot-z (degrees 90)) + (:scale-y (meters 4.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 808 - :init-specs ((:texture (new 'static 'texture-id :index #x25 :page #x2)) - (:num 1.0) - (:x (meters 1.11)) - (:y (meters -2.1)) - (:scale-x (meters 3)) - (:rot-z (degrees 90)) - (:scale-y (meters 4.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x25 :page #x2)) + (:num 1.0) + (:x (meters 1.11)) + (:y (meters -2.1)) + (:scale-x (meters 3)) + (:rot-z (degrees 90)) + (:scale-y (meters 4.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 809 - :init-specs ((:texture (new 'static 'texture-id :index #x25 :page #x2)) - (:num 1.0) - (:x (meters -1.11)) - (:y (meters -2.1)) - (:scale-x (meters 4.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x25 :page #x2)) + (:num 1.0) + (:x (meters -1.11)) + (:y (meters -2.1)) + (:scale-x (meters 4.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 810 - :init-specs ((:texture (new 'static 'texture-id :index #x25 :page #x2)) - (:num 1.0) - (:x (meters 2.9)) - (:y (meters -2.1)) - (:scale-x (meters 4.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x25 :page #x2)) + (:num 1.0) + (:x (meters 2.9)) + (:y (meters -2.1)) + (:scale-x (meters 4.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpartgroup group-jungle-binoculars-aligned :id 689 :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 2840) (sp-item 2863) (sp-item 2864) (sp-item 2865)) - ) + :parts ((sp-item 2840) (sp-item 2863) (sp-item 2864) (sp-item 2865))) (defpart 2865 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 5.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 96.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.85333335) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 2866) - (:conerot-x (degrees -360) (degrees 720)) - (:conerot-y (degrees -1440) (degrees 2880)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 5.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 96.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.85333335) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 2866) + (:conerot-x (degrees -360) (degrees 720)) + (:conerot-y (degrees -1440) (degrees 2880)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2866 - :init-specs ((:fade-a -0.85333335)) - ) + :init-specs ((:fade-a -0.85333335))) (defpart 2864 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 96.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters -0.0033333334) (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 4.266667) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05) (seconds 0.047)) - (:next-launcher 2867) - (:conerot-x (degrees -360) (degrees 720)) - (:conerot-y (degrees -360) (degrees 360)) - (:conerot-radius (meters -2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 96.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters -0.0033333334) (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 4.266667) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05) (seconds 0.047)) + (:next-launcher 2867) + (:conerot-x (degrees -360) (degrees 720)) + (:conerot-y (degrees -360) (degrees 360)) + (:conerot-radius (meters -2) (meters 4)))) (defpart 2867 - :init-specs ((:fade-a -4.266667)) - ) + :init-specs ((:fade-a -4.266667))) (defpart 2863 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.15) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 128.0 96.0) - (:b 255.0) - (:a 128.0) - (:scalevel-x (meters -0.0125)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.8) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.15) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 128.0 96.0) + (:b 255.0) + (:a 128.0) + (:scalevel-x (meters -0.0125)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.8) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)))) (defpart 2840 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 13) (meters 5)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 96.0) - (:b 128.0 128.0) - (:a 64.0 32.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 13) (meters 5)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 96.0) + (:b 128.0 128.0) + (:a 64.0 32.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (deftype periscope (process-drawable) - ((root collide-shape :override) - (y-offset meters) - (y-offset-grips meters) - (height meters) - (turn degrees) - (tilt degrees) - (target-turn degrees) - (target-tilt degrees) - (base vector :inline) - (reflector-trans vector :inline) - (next-reflector-trans vector :inline) - (prev-reflector-trans vector :inline) - (old-camera-matrix matrix :inline) - (reflector (pointer reflector)) - (gauge-rot degrees) - (lock-time time-frame) - (aligned? symbol) - (raised? symbol) - (player-touching-grips? symbol) - (grips-moving? symbol) - (sound-id sound-id) - (rise-sound-id sound-id) - (grips-sound-id sound-id) - (grips joint-mod-set-world) - (part-aligned sparticle-launch-control) - ) + ((root collide-shape :override) + (y-offset meters) + (y-offset-grips meters) + (height meters) + (turn degrees) + (tilt degrees) + (target-turn degrees) + (target-tilt degrees) + (base vector :inline) + (reflector-trans vector :inline) + (next-reflector-trans vector :inline) + (prev-reflector-trans vector :inline) + (old-camera-matrix matrix :inline) + (reflector (pointer reflector)) + (gauge-rot degrees) + (lock-time time-frame) + (aligned? symbol) + (raised? symbol) + (player-touching-grips? symbol) + (grips-moving? symbol) + (sound-id sound-id) + (rise-sound-id sound-id) + (grips-sound-id sound-id) + (grips joint-mod-set-world) + (part-aligned sparticle-launch-control)) (:states - periscope-activate - periscope-idle - periscope-player-control - periscope-power-on - periscope-wait-for-player - periscope-wait-for-power-input - ) - ) - + periscope-activate + periscope-idle + periscope-player-control + periscope-power-on + periscope-wait-for-player + periscope-wait-for-power-input)) (defmethod relocate ((this periscope) (arg0 int)) - (if (nonzero? (-> this grips)) - (&+! (-> this grips) arg0) - ) - (if (nonzero? (-> this part-aligned)) - (&+! (-> this part-aligned) arg0) - ) - (the-as periscope ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this grips)) (&+! (-> this grips) arg0)) + (if (nonzero? (-> this part-aligned)) (&+! (-> this part-aligned) arg0)) + (the-as periscope ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this periscope)) - (if (nonzero? (-> this part-aligned)) - (kill-and-free-particles (-> this part-aligned)) - ) + (if (nonzero? (-> this part-aligned)) (kill-and-free-particles (-> this part-aligned))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (deftype reflector (process-drawable) - ((root collide-shape :override) - (parent-override (pointer periscope) :overlay-at parent) - ) + ((root collide-shape :override) + (parent-override (pointer periscope) :overlay-at parent)) (:states - reflector-idle - ) - ) - + reflector-idle)) (deftype reflector-origin (process-drawable) - ((reflector-trans vector :inline) - (next-reflector-trans vector :inline) - (reflector uint32) - (next basic) - (blocker entity-actor) - ) + ((reflector-trans vector :inline) + (next-reflector-trans vector :inline) + (reflector uint32) + (next basic) + (blocker entity-actor)) (:states - reflector-origin-idle - ) - ) - + reflector-origin-idle)) (deftype reflector-mirror (process-drawable) - ((root collide-shape :override) - (beam-end vector :inline) - ) - (:states - (reflector-mirror-broken symbol) - reflector-mirror-idle - ) - ) - - -(defskelgroup *periscope-base-sg* periscope periscope-base-lod0-jg periscope-base-idle-ja - ((periscope-base-lod0-mg (meters 20)) (periscope-base-lod1-mg (meters 999999))) - :bounds (static-spherem 0 23.5 0 24) - :longest-edge (meters 4.5) - ) - -(defskelgroup *periscope-mirror-sg* periscope periscope-mirror-lod0-jg periscope-mirror-idle-ja - ((periscope-mirror-lod0-mg (meters 20)) (periscope-mirror-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) - -(defskelgroup *reflector-mirror-sg* reflector-mirror reflector-mirror-lod0-jg reflector-mirror-idle-ja - ((reflector-mirror-lod0-mg (meters 999999))) - :bounds (static-spherem 0 9 0 9) - :longest-edge (meters 3) - ) - -(defskelgroup *reflector-mirror-break-sg* reflector-mirror reflector-mirror-break-lod0-jg reflector-mirror-break-break-ja - ((reflector-mirror-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 9 0 9) - ) + ((root collide-shape :override) + (beam-end vector :inline)) + (:states (reflector-mirror-broken symbol) + reflector-mirror-idle)) + +(defskelgroup *periscope-base-sg* + periscope + periscope-base-lod0-jg + periscope-base-idle-ja + ((periscope-base-lod0-mg (meters 20)) (periscope-base-lod1-mg (meters 999999))) + :bounds (static-spherem 0 23.5 0 24) + :longest-edge (meters 4.5)) + +(defskelgroup *periscope-mirror-sg* + periscope + periscope-mirror-lod0-jg + periscope-mirror-idle-ja + ((periscope-mirror-lod0-mg (meters 20)) (periscope-mirror-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) + +(defskelgroup *reflector-mirror-sg* + reflector-mirror + reflector-mirror-lod0-jg + reflector-mirror-idle-ja + ((reflector-mirror-lod0-mg (meters 999999))) + :bounds (static-spherem 0 9 0 9) + :longest-edge (meters 3)) + +(defskelgroup *reflector-mirror-break-sg* + reflector-mirror + reflector-mirror-break-lod0-jg + reflector-mirror-break-break-ja + ((reflector-mirror-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 9 0 9)) (defstate cam-periscope (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (let ((v1-2 (-> self change-event-from))) - (set! (-> self trans quad) (-> (the-as periscope (-> v1-2 0)) reflector-trans quad)) - (matrix-rotate-yx! - (the-as matrix (-> self tracking)) - (-> (the-as periscope (-> v1-2 0)) turn) - (-> (the-as periscope (-> v1-2 0)) tilt) - ) - ) - (set! (-> self blend-from-type) (the-as uint 0)) - (set! (-> self blend-to-type) (the-as uint 0)) - 0 - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (local-vars (sv-32 int) (sv-48 int)) - (let* ((gp-0 (-> self change-event-from)) - (f28-0 (the-as float (-> (the-as periscope (-> gp-0 0)) tilt))) - (f30-0 (the-as float (-> (the-as periscope (-> gp-0 0)) turn))) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (loop - (when (not (or (paused?) (-> (the-as periscope (-> self change-event-from 0)) aligned?))) - (vector-reset! s5-0) - (when *camera-read-analog* - ;; og:preserve-this Mirror controls changed to respect PC Port settings - (let ((f26-0 (analog-input-horizontal-first - (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) - 0.0 - 48.0 - 110.0 - -1.0 - ) - ) - (f0-0 (analog-input-vertical-first - (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) - 0.0 - 48.0 - 110.0 - -1.0 - ) - ) - ) - (set! (-> s5-0 y) (- (-> s5-0 y) (* 136.53334 (- f26-0)))) - (set! (-> s5-0 x) (- (-> s5-0 x) (* 136.53334 (- f0-0)))) - (cond - ((and (= f26-0 0.0) (= f0-0 0.0)) - (sound-stop (-> (the-as periscope (-> gp-0 0)) sound-id)) - ) - (else - (let ((s4-0 sound-play-by-name) - (s3-0 (make-u128 101 (the-as uint #x706f6373656c6574))) - (s2-0 (-> (the-as periscope (-> gp-0 0)) sound-id)) - (s1-0 1024) - (s0-0 0) - ) - (set! sv-32 0) - (set! sv-48 1) - (let ((t2-0 (target-pos 0))) - (the-as - int - (s4-0 (the-as sound-name s3-0) s2-0 s1-0 s0-0 sv-32 (the-as sound-group sv-48) (the-as symbol t2-0)) - ) - ) - ) - ) - ) - ) - ) - (cond - ((< 136.53334 (-> s5-0 x)) - (set! (-> s5-0 x) 136.53334) - ) - ((< (-> s5-0 x) -136.53334) - (set! (-> s5-0 x) -136.53334) - ) - ) - (cond - ((< 136.53334 (-> s5-0 y)) - (set! (-> s5-0 y) 136.53334) - ) - ((< (-> s5-0 y) -136.53334) - (set! (-> s5-0 y) -136.53334) - ) - ) - (+! f30-0 (* (-> s5-0 y) (-> *display* time-adjust-ratio))) - (set! f28-0 (fmax -12743.111 (fmin 12743.111 (+ f28-0 (* (-> s5-0 x) (-> *display* time-adjust-ratio)))))) - (matrix-rotate-yx! (the-as matrix (-> self tracking)) f30-0 f28-0) - ) - (suspend) - ) - ) - ) - ) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (let ((v1-2 (-> self change-event-from))) + (set! (-> self trans quad) (-> (the-as periscope (-> v1-2 0)) reflector-trans quad)) + (matrix-rotate-yx! (the-as matrix (-> self tracking)) + (-> (the-as periscope (-> v1-2 0)) turn) + (-> (the-as periscope (-> v1-2 0)) tilt))) + (set! (-> self blend-from-type) (the-as uint 0)) + (set! (-> self blend-to-type) (the-as uint 0)) + 0)) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (local-vars (sv-32 int) (sv-48 int)) + (let* ((gp-0 (-> self change-event-from)) + (f28-0 (the-as float (-> (the-as periscope (-> gp-0 0)) tilt))) + (f30-0 (the-as float (-> (the-as periscope (-> gp-0 0)) turn))) + (s5-0 (new 'stack-no-clear 'vector))) + (loop + (when (not (or (paused?) (-> (the-as periscope (-> self change-event-from 0)) aligned?))) + (vector-reset! s5-0) + (when *camera-read-analog* + ;; og:preserve-this Mirror controls changed to respect PC Port settings + (let ((f26-0 (analog-input-horizontal-first (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) + 0.0 + 48.0 + 110.0 + -1.0)) + (f0-0 (analog-input-vertical-first (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) + 0.0 + 48.0 + 110.0 + -1.0))) + (set! (-> s5-0 y) (- (-> s5-0 y) (* 136.53334 (- f26-0)))) + (set! (-> s5-0 x) (- (-> s5-0 x) (* 136.53334 (- f0-0)))) + (cond + ((and (= f26-0 0.0) (= f0-0 0.0)) (sound-stop (-> (the-as periscope (-> gp-0 0)) sound-id))) + (else + (let ((s4-0 sound-play-by-name) + (s3-0 (make-u128 101 (the-as uint #x706f6373656c6574))) + (s2-0 (-> (the-as periscope (-> gp-0 0)) sound-id)) + (s1-0 1024) + (s0-0 0)) + (set! sv-32 0) + (set! sv-48 1) + (let ((t2-0 (target-pos 0))) + (the-as int (s4-0 (the-as sound-name s3-0) s2-0 s1-0 s0-0 sv-32 (the-as sound-group sv-48) (the-as symbol t2-0))))))))) + (cond + ((< 136.53334 (-> s5-0 x)) (set! (-> s5-0 x) 136.53334)) + ((< (-> s5-0 x) -136.53334) (set! (-> s5-0 x) -136.53334))) + (cond + ((< 136.53334 (-> s5-0 y)) (set! (-> s5-0 y) 136.53334)) + ((< (-> s5-0 y) -136.53334) (set! (-> s5-0 y) -136.53334))) + (+! f30-0 (* (-> s5-0 y) (-> *display* time-adjust-ratio))) + (set! f28-0 (fmax -12743.111 (fmin 12743.111 (+ f28-0 (* (-> s5-0 x) (-> *display* time-adjust-ratio)))))) + (matrix-rotate-yx! (the-as matrix (-> self tracking)) f30-0 f28-0)) + (suspend))))) (defstate reflector-idle (reflector) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (loop - (set! (-> gp-0 x) (-> self parent-override 0 tilt)) - (set! (-> gp-0 y) (-> self parent-override 0 turn)) - (set! (-> gp-0 z) 0.0) - (set! (-> gp-0 w) 1.0) - (quaternion-zxy! (-> self root quat) gp-0) - (set! (-> self root trans quad) (-> self parent-override 0 node-list data 6 bone transform vector 3 quad)) - (ja-post) - (update-transforms! (-> self root)) - (suspend) - ) - ) - ) - ) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (loop + (set! (-> gp-0 x) (-> self parent-override 0 tilt)) + (set! (-> gp-0 y) (-> self parent-override 0 turn)) + (set! (-> gp-0 z) 0.0) + (set! (-> gp-0 w) 1.0) + (quaternion-zxy! (-> self root quat) gp-0) + (set! (-> self root trans quad) (-> self parent-override 0 node-list data 6 bone transform vector 3 quad)) + (ja-post) + (update-transforms! (-> self root)) + (suspend))))) (defbehavior reflector-init-by-other reflector ((arg0 vector)) (set! (-> self entity) (-> self parent-override 0 entity)) @@ -738,25 +643,21 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 quad)) (initialize-skeleton self *periscope-mirror-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) (go reflector-idle) - (none) - ) + (none)) (defbehavior periscope-crosshair periscope () (let ((s3-0 (matrix-local->world #f #f)) (s5-0 (new 'static 'vector4w-4)) (s4-0 (new 'static 'vector)) - (gp-0 #f) - ) + (gp-0 #f)) (set! (-> self turn) (vector-y-angle (-> s3-0 vector 2))) (set! (-> self tilt) (- (vector-x-angle (-> s3-0 vector 2)))) (set! (-> s4-0 quad) (-> self next-reflector-trans quad)) @@ -765,11 +666,7 @@ (transform-float-point s4-0 (the-as vector4w (-> s5-0 quad))) (let* ((v1-1 (-> self link)) (s4-1 (and (-> v1-1 next) (-> v1-1 next extra process))) - (v1-5 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) periscope)) - s4-1 - ) - ) - ) + (v1-5 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) periscope)) s4-1))) (when (or (not v1-5) (-> (the-as periscope v1-5) raised?)) (cond ((>= (-> s5-0 vector 0 z) 0) @@ -777,53 +674,30 @@ (set! (-> s5-0 vector 0 y) (- (- 2048 (/ (-> s5-0 vector 0 y) 16)))) (let ((v1-15 (abs (-> s5-0 vector 0 x)))) (cond - ((and (< v1-15 20) (let ((v1-17 (abs (-> s5-0 vector 0 y)))) - (< v1-17 10) - ) - ) + ((and (< v1-15 20) (let ((v1-17 (abs (-> s5-0 vector 0 y)))) (< v1-17 10))) (when (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) (sound-stop (-> self sound-id)) - (sound-play "beam-connect" :position (the-as symbol (target-pos 0))) - ) + (sound-play "beam-connect" :position (the-as symbol (target-pos 0)))) (process-entity-status! self (entity-perm-status complete) #t) - (set! gp-0 #t) - ) - (else - (process-entity-status! self (entity-perm-status complete) #f) - ) - ) - ) - ) - (else - (process-entity-status! self (entity-perm-status complete) #f) - ) - ) - ) - ) + (set! gp-0 #t)) + (else (process-entity-status! self (entity-perm-status complete) #f))))) + (else (process-entity-status! self (entity-perm-status complete) #f))))) (let* ((s5-2 (position-in-front-of-camera! (new 'stack-no-clear 'vector) 40960.0 0.0)) - (v1-28 - (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> self next-reflector-trans) s5-2) 20480.0) - ) - (s4-4 (vector+! (new 'stack-no-clear 'vector) s5-2 v1-28)) - ) + (v1-28 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> self next-reflector-trans) s5-2) 20480.0)) + (s4-4 (vector+! (new 'stack-no-clear 'vector) s5-2 v1-28))) (init-for-transform *identity-matrix*) (let ((v1-30 (transform-float-point s4-4 (new 'stack 'vector4w)))) (when (>= (-> v1-30 z) 0) (set! (-> v1-30 x) (+ (/ (-> v1-30 x) 16) -2048)) - (set! (-> v1-30 y) (- (- 2048 (/ (-> v1-30 y) 16)))) - ) + (set! (-> v1-30 y) (- (- 2048 (/ (-> v1-30 y) 16))))) (let ((f0-9 (- (atan (the float (-> v1-30 x)) (the float (- (-> v1-30 y))))))) - (set! (-> self gauge-rot) (deg-seek (-> self gauge-rot) f0-9 (* 131072.0 (seconds-per-frame)))) - ) - ) - ) + (set! (-> self gauge-rot) (deg-seek (-> self gauge-rot) f0-9 (* 131072.0 (seconds-per-frame))))))) (let ((f0-13 (-> self gauge-rot))) (set! (-> *part-id-table* 823 init-specs 3 initial-valuef) (+ -8192.0 f0-13)) (set! (-> *part-id-table* 823 init-specs 11 initial-valuef) f0-13) (if gp-0 - (set! (-> *part-id-table* 823 init-specs 1 initial-valuef) 0.0) - (set! (-> *part-id-table* 823 init-specs 1 initial-valuef) 1.0) - ) + (set! (-> *part-id-table* 823 init-specs 1 initial-valuef) 0.0) + (set! (-> *part-id-table* 823 init-specs 1 initial-valuef) 1.0)) (set! (-> *part-id-table* 815 init-specs 3 initial-valuef) (- -2730.6667 f0-13)) (set! (-> *part-id-table* 815 init-specs 11 initial-valuef) (- 5461.3335 f0-13)) (set! (-> *part-id-table* 816 init-specs 3 initial-valuef) (- 2730.6667 f0-13)) @@ -847,13 +721,11 @@ (set! (-> *part-id-table* 813 init-specs 3 initial-valuef) (- 32768.0 f0-13)) (set! (-> *part-id-table* 813 init-specs 11 initial-valuef) (- 32768.0 f0-13)) (set! (-> *part-id-table* 814 init-specs 3 initial-valuef) (- 49152.0 f0-13)) - (set! (-> *part-id-table* 814 init-specs 11 initial-valuef) (- 49152.0 f0-13)) - ) + (set! (-> *part-id-table* 814 init-specs 11 initial-valuef) (- 49152.0 f0-13))) (spawn (-> self part) *zero-vector*) (let ((s4-5 (new 'stack-no-clear 'vector)) (s3-2 (new 'stack-no-clear 'vector)) - (s5-4 (new 'stack-no-clear 'vector)) - ) + (s5-4 (new 'stack-no-clear 'vector))) (set! (-> s4-5 quad) (-> (camera-pos) quad)) (vector-! s3-2 (-> self prev-reflector-trans) s4-5) (vector-normalize! s3-2 1.0) @@ -863,86 +735,67 @@ (vector-! s3-2 (-> self next-reflector-trans) s4-5) (vector-normalize! s3-2 1.0) (vector+*! s5-4 s4-5 s3-2 20480.0) - (spawn (-> self part-aligned) s5-4) - ) - ) + (spawn (-> self part-aligned) s5-4))) (set! (-> self aligned?) gp-0) - gp-0 - ) - ) + gp-0)) (defpart 825 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 4.5) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 0.0 64.0) - (:b 255.0) - (:a 96.0) - (:vel-y (meters 0.010666667)) - (:scalevel-x (meters -0.008333334)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.17777778) - (:fade-a -0.53333336) - (:accel-y (meters 0.00016666666)) - (:timer (seconds 0.55)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-z (degrees 90)) - (:conerot-radius (meters 0) (meters 2.3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 4.5) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 0.0 64.0) + (:b 255.0) + (:a 96.0) + (:vel-y (meters 0.010666667)) + (:scalevel-x (meters -0.008333334)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.17777778) + (:fade-a -0.53333336) + (:accel-y (meters 0.00016666666)) + (:timer (seconds 0.55)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-z (degrees 90)) + (:conerot-radius (meters 0) (meters 2.3)))) (defbehavior periscope-find-next periscope () (let ((gp-0 (-> self link next))) (let ((a0-0 (-> self link prev))) (when a0-0 (set! (-> self prev-reflector-trans quad) (-> a0-0 extra trans quad)) - (+! (-> self prev-reflector-trans y) (res-lump-float a0-0 'height-info)) - ) - ) + (+! (-> self prev-reflector-trans y) (res-lump-float a0-0 'height-info)))) (cond (gp-0 - (set! (-> self next-reflector-trans quad) (-> gp-0 extra trans quad)) - (+! (-> self next-reflector-trans y) (res-lump-float gp-0 'height-info)) - ) + (set! (-> self next-reflector-trans quad) (-> gp-0 extra trans quad)) + (+! (-> self next-reflector-trans y) (res-lump-float gp-0 'height-info))) (else - (let ((v1-9 (res-lump-struct (-> self entity) 'alt-vector structure))) - (set! (-> self next-reflector-trans quad) (-> (the-as vector v1-9) quad)) - ) - ) - ) - ) - (none) - ) + (let ((v1-9 (res-lump-struct (-> self entity) 'alt-vector structure))) + (set! (-> self next-reflector-trans quad) (-> (the-as vector v1-9) quad)))))) + (none)) (defbehavior periscope-set-target-direction periscope ((arg0 vector)) (let ((f30-0 (vector-xz-length arg0))) (set! (-> self target-turn) (atan (-> arg0 x) (-> arg0 z))) - (set! (-> self target-tilt) (atan (- (-> arg0 y)) f30-0)) - ) - (none) - ) + (set! (-> self target-tilt) (atan (- (-> arg0 y)) f30-0))) + (none)) (defbehavior periscope-find-aim-at-angles periscope () (let ((a0-0 (-> self link next)) (gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (when a0-0 (set! (-> gp-0 quad) (-> a0-0 extra trans quad)) (+! (-> gp-0 y) (res-lump-float a0-0 'height-info)) (vector-! s5-0 gp-0 (-> self reflector-trans)) (vector-normalize! s5-0 1.0) - (periscope-set-target-direction s5-0) - ) - ) - (none) - ) + (periscope-set-target-direction s5-0))) + (none)) (defbehavior periscope-find-reflection-angles periscope () (let ((a0-0 (-> self link next)) @@ -950,8 +803,7 @@ (s3-0 (new 'stack-no-clear 'vector)) (s5-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (when (and s2-0 a0-0) (set! (-> s3-0 quad) (-> a0-0 extra trans quad)) (+! (-> s3-0 y) (res-lump-float a0-0 'height-info)) @@ -963,38 +815,25 @@ (vector-normalize! gp-0 1.0) (vector+! s4-0 gp-0 s5-0) (vector-normalize! s4-0 1.0) - (periscope-set-target-direction s4-0) - ) - ) - (none) - ) + (periscope-set-target-direction s4-0))) + (none)) (defbehavior periscope-has-power-input? periscope () - (let ((v1-1 (-> self link prev))) - (if v1-1 - (logtest? (-> v1-1 extra perm status) (entity-perm-status complete)) - ) - ) - ) + (let ((v1-1 (-> self link prev))) (if v1-1 (logtest? (-> v1-1 extra perm status) (entity-perm-status complete))))) (defbehavior periscope-draw-beam-impact periscope () (when (periscope-has-power-input?) (update! (-> self sound)) (if (logtest? (-> self draw status) (draw-status was-drawn)) - (launch-particles (-> *part-id-table* 825) (-> self reflector-trans)) - ) - ) + (launch-particles (-> *part-id-table* 825) (-> self reflector-trans)))) 0 - (none) - ) + (none)) (defbehavior periscope-draw-beam periscope () (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (draw-power-beam (-> self reflector-trans) (-> self next-reflector-trans)) - ) + (draw-power-beam (-> self reflector-trans) (-> self next-reflector-trans))) 0 - (none) - ) + (none)) (defbehavior periscope-update-joints periscope () (let ((a1-0 (new 'stack-no-clear 'event-message-block))) @@ -1002,14 +841,11 @@ (set! (-> a1-0 from) (the-as process (-> self turn))) (set! (-> a1-0 num-params) (the-as int 0.0)) (set! (-> a1-0 message) (the-as symbol 1.0)) - (quaternion-zxy! (-> self root quat) (the-as vector a1-0)) - ) + (quaternion-zxy! (-> self root quat) (the-as vector a1-0))) (set! (-> self root trans y) (+ -184320.0 (-> self y-offset) (-> self base y))) (set! (-> self grips transform trans y) - (+ (- (+ (-> self base y) (-> self y-offset)) (-> self height)) (-> self y-offset-grips)) - ) - (none) - ) + (+ (- (+ (-> self base y) (-> self y-offset)) (-> self height)) (-> self y-offset-grips))) + (none)) (defbehavior periscope-post periscope () (periscope-draw-beam) @@ -1018,596 +854,414 @@ (ja-post) (update-transforms! (-> self root)) 0 - (none) - ) + (none)) (defbehavior periscope-test-task-complete? periscope () (local-vars (sv-16 symbol)) (set! sv-16 #t) - (apply-all - (-> self link) - (lambda ((arg0 entity-actor) (arg1 (pointer symbol))) - (when (and (= (-> arg0 etype) periscope) (not (logtest? (-> arg0 extra perm status) (entity-perm-status complete)))) - (set! (-> arg1 0) #f) - #t - ) - ) - (& sv-16) - ) - sv-16 - ) + (apply-all (-> self link) + (lambda ((arg0 entity-actor) (arg1 (pointer symbol))) + (when (and (= (-> arg0 etype) periscope) (not (logtest? (-> arg0 extra perm status) (entity-perm-status complete)))) + (set! (-> arg1 0) #f) + #t)) + (& sv-16)) + sv-16) (defbehavior peri-beamcam-init-by-other process ((arg0 string)) (let ((gp-0 (entity-by-name "junglecam-1"))) - (the-as - (pointer pov-camera) - (cond - (gp-0 - (cond - ((name= arg0 "reflector-mirror-2") - (process-spawn - pov-camera - (-> gp-0 extra trans) - *junglecam-sg* - "tower1" - 0 - #f - '((0 ambient camera "gamcam14")) - :to self - ) - ) - ((name= arg0 "periscope-11") - (process-spawn - pov-camera - (-> gp-0 extra trans) - *junglecam-sg* - "tower2" - 0 - #f - '((0 ambient camera "gamcam15") (0 want-force-vis jungle #t) (0 want-force-vis village1 #t)) - :to self - ) - ) - ((name= arg0 "periscope-12") - (process-spawn - pov-camera - (-> gp-0 extra trans) - *junglecam-sg* - "tower3" - 0 - #f - '((0 ambient camera "gamcam16")) - :to self - ) - ) - ((name= arg0 "periscope-13") - (process-spawn - pov-camera - (-> gp-0 extra trans) - *junglecam-sg* - "tower4" - 0 - #f - '((0 ambient camera "gamcam17")) - :to self - ) - ) - ((name= arg0 "periscope-14") - (process-spawn - pov-camera - (-> gp-0 extra trans) - *junglecam-sg* - "tower5" - 0 - #f - '((0 ambient camera "gamcam18") (0 want-force-vis jungle #t) (0 want-force-vis village1 #t)) - :to self - ) - ) - ((name= arg0 "periscope-15") - (process-spawn - pov-camera - (-> gp-0 extra trans) - *junglecam-sg* - "beamcam" - 0 - #f - '((0 ambient camera "gamcam19") - (0 want-force-vis jungle #t) - (0 want-force-vis village1 #t) - (0 display-level village1 movie) - ) - :to self - ) - ) - (else - (format #t "ERROR: don't know which peri-beamcam to play for ~S~%" arg0) - ) - ) - ) - (else - (format #t "ERROR: couldn't find junglecam-1 to initialize peri-beamcam~%") - ) - ) - ) - ) - ) + (the-as (pointer pov-camera) + (cond + (gp-0 + (cond + ((name= arg0 "reflector-mirror-2") + (process-spawn pov-camera (-> gp-0 extra trans) *junglecam-sg* "tower1" 0 #f '((0 ambient camera "gamcam14")) :to self)) + ((name= arg0 "periscope-11") + (process-spawn pov-camera + (-> gp-0 extra trans) + *junglecam-sg* + "tower2" + 0 + #f + '((0 ambient camera "gamcam15") (0 want-force-vis jungle #t) (0 want-force-vis village1 #t)) + :to + self)) + ((name= arg0 "periscope-12") + (process-spawn pov-camera (-> gp-0 extra trans) *junglecam-sg* "tower3" 0 #f '((0 ambient camera "gamcam16")) :to self)) + ((name= arg0 "periscope-13") + (process-spawn pov-camera (-> gp-0 extra trans) *junglecam-sg* "tower4" 0 #f '((0 ambient camera "gamcam17")) :to self)) + ((name= arg0 "periscope-14") + (process-spawn pov-camera + (-> gp-0 extra trans) + *junglecam-sg* + "tower5" + 0 + #f + '((0 ambient camera "gamcam18") (0 want-force-vis jungle #t) (0 want-force-vis village1 #t)) + :to + self)) + ((name= arg0 "periscope-15") + (process-spawn pov-camera + (-> gp-0 extra trans) + *junglecam-sg* + "beamcam" + 0 + #f + '((0 ambient camera "gamcam19") + (0 want-force-vis jungle #t) + (0 want-force-vis village1 #t) + (0 display-level village1 movie)) + :to + self)) + (else (format #t "ERROR: don't know which peri-beamcam to play for ~S~%" arg0)))) + (else (format #t "ERROR: couldn't find junglecam-1 to initialize peri-beamcam~%")))))) (defbehavior periscope-debug-trans periscope () 0 - (none) - ) + (none)) (defstate periscope-idle (periscope) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('activate) - (logclear! (-> self mask) (process-mask actor-pause)) - (go periscope-activate) - ) - ) - ) - :enter (behavior () - (clear-collide-with-as (-> self root)) - ) - :exit (behavior () - (restore-collide-with-as (-> self root)) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans periscope-debug-trans - :code (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (set! (-> self raised?) #f) - (set! (-> self y-offset) 0.0) - (set! (-> self y-offset-grips) (+ -20480.0 (-> self height))) - (set! (-> self tilt) 16384.0) - (set! (-> self turn) (+ 18204.445 (-> self target-turn))) - (periscope-update-joints) - (ja-post) - (suspend) - (update-transforms! (-> self root)) - (logior! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - ) - -(defstate periscope-activate (periscope) - :exit (behavior () - (sound-stop (-> self rise-sound-id)) - (sound-play "eco-tower-stop" :position (the-as symbol (-> self base))) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('activate) (logclear! (-> self mask) (process-mask actor-pause)) (go periscope-activate)))) + :enter + (behavior () + (clear-collide-with-as (-> self root))) + :exit + (behavior () + (restore-collide-with-as (-> self root)) + (logclear! (-> self draw status) (draw-status hidden))) :trans periscope-debug-trans - :code (behavior () - (local-vars (v1-13 symbol)) - (logclear! (-> self mask) (process-mask actor-pause)) - (set-time! (-> self state-time)) - (link-to-next-and-prev-actor (-> self link)) - (periscope-find-next) - (periscope-find-reflection-angles) - (when (< 61440.0 (-> self height)) - (set! (-> self y-offset) (+ -61440.0 (-> self height))) + :code + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (set! (-> self raised?) #f) + (set! (-> self y-offset) 0.0) + (set! (-> self y-offset-grips) (+ -20480.0 (-> self height))) + (set! (-> self tilt) 16384.0) (set! (-> self turn) (+ 18204.445 (-> self target-turn))) - ) - (until (and v1-13 (= (-> self turn) (-> self target-turn)) (= (-> self tilt) (-> self target-tilt))) - (sound-play "eco-tower-rise" :id (-> self rise-sound-id) :position (the-as symbol (-> self base))) - (seek! (-> self y-offset) (-> self height) (* 16384.0 (seconds-per-frame))) - (seek! (-> self turn) (-> self target-turn) (* 7281.778 (seconds-per-frame))) - (seek! (-> self tilt) (-> self target-tilt) (* 7281.778 (seconds-per-frame))) - (set! (-> self raised?) (< (+ -12288.0 (-> self height)) (-> self y-offset))) (periscope-update-joints) + (ja-post) (suspend) - (set! v1-13 (= (-> self y-offset) (-> self height))) - ) - (set! (-> self raised?) #t) - (go periscope-wait-for-power-input) - ) - :post periscope-post - ) + (update-transforms! (-> self root)) + (logior! (-> self draw status) (draw-status hidden)) + (loop + (suspend)))) -(defstate periscope-wait-for-power-input (periscope) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self raised?) #t) - (let ((f30-0 (+ -20480.0 (-> self height)))) - (until (= (-> self y-offset-grips) f30-0) - (seek! (-> self y-offset-grips) f30-0 (* 16384.0 (seconds-per-frame))) +(defstate periscope-activate (periscope) + :exit + (behavior () + (sound-stop (-> self rise-sound-id)) + (sound-play "eco-tower-stop" :position (the-as symbol (-> self base)))) + :trans periscope-debug-trans + :code + (behavior () + (local-vars (v1-13 symbol)) + (logclear! (-> self mask) (process-mask actor-pause)) + (set-time! (-> self state-time)) + (link-to-next-and-prev-actor (-> self link)) + (periscope-find-next) + (periscope-find-reflection-angles) + (when (< 61440.0 (-> self height)) + (set! (-> self y-offset) (+ -61440.0 (-> self height))) + (set! (-> self turn) (+ 18204.445 (-> self target-turn)))) + (until (and v1-13 (= (-> self turn) (-> self target-turn)) (= (-> self tilt) (-> self target-tilt))) + (sound-play "eco-tower-rise" :id (-> self rise-sound-id) :position (the-as symbol (-> self base))) + (seek! (-> self y-offset) (-> self height) (* 16384.0 (seconds-per-frame))) + (seek! (-> self turn) (-> self target-turn) (* 7281.778 (seconds-per-frame))) + (seek! (-> self tilt) (-> self target-tilt) (* 7281.778 (seconds-per-frame))) + (set! (-> self raised?) (< (+ -12288.0 (-> self height)) (-> self y-offset))) (periscope-update-joints) (suspend) - ) - ) - (update-transforms! (-> self root)) - (set! (-> self y-offset) (-> self height)) - (loop - (if (periscope-has-power-input?) - (go periscope-wait-for-player) - ) - (suspend) - ) - ) - :post ja-post - ) + (set! v1-13 (= (-> self y-offset) (-> self height)))) + (set! (-> self raised?) #t) + (go periscope-wait-for-power-input)) + :post periscope-post) + +(defstate periscope-wait-for-power-input (periscope) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self raised?) #t) + (let ((f30-0 (+ -20480.0 (-> self height)))) + (until (= (-> self y-offset-grips) f30-0) + (seek! (-> self y-offset-grips) f30-0 (* 16384.0 (seconds-per-frame))) + (periscope-update-joints) + (suspend))) + (update-transforms! (-> self root)) + (set! (-> self y-offset) (-> self height)) + (loop + (if (periscope-has-power-input?) (go periscope-wait-for-player)) + (suspend))) + :post ja-post) (defun target-close-to-point? ((arg0 vector) (arg1 float)) - (the-as symbol (and *target* (>= arg1 (vector-vector-distance arg0 (-> *target* control trans))))) - ) + (the-as symbol (and *target* (>= arg1 (vector-vector-distance arg0 (-> *target* control trans)))))) (defstate periscope-wait-for-player (periscope) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when (and *target* (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - ) - (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (let ((v0-0 (the-as object #t))) - (set! (-> self player-touching-grips?) (the-as symbol v0-0)) - v0-0 - ) - ) - ) - ) - (('change-mode) - (level-hint-spawn - (text-id sidekick-hint-periscope) - "sksp0049" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (go periscope-player-control) - ) - ) - ) - :exit (behavior () - (sound-stop (-> self grips-sound-id)) - ) - :code (behavior () - (hide-hud) - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self raised?) #t) - (set! (-> self grips-moving?) #t) - (let ((f30-0 8192.0) - (gp-0 (res-lump-value (-> self entity) 'text-id uint128)) - ) - (until (= (-> self y-offset-grips) f30-0) - (if (nonzero? gp-0) - (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) - ) - (sound-play "site-moves" :id (-> self grips-sound-id) :position (the-as symbol (-> self grips transform))) - (seek! (-> self y-offset-grips) f30-0 (* 16384.0 (seconds-per-frame))) - (periscope-update-joints) - (suspend) - ) - ) - (set! (-> self grips-moving?) #f) - (set! (-> self player-touching-grips?) #f) - (let ((gp-1 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) - (loop - (set! (-> s5-0 quad) (-> self node-list data 4 bone transform vector 3 quad)) - (let ((a0-10 s5-0) - (f30-1 81920.0) - ) - (when (and *target* (>= f30-1 (vector-vector-distance a0-10 (-> *target* control trans)))) - (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) - (let ((f0-7 (fmax 4096.0 (fmin 12288.0 (+ (- 5120.0 (-> self base y)) (-> *target* control trans y)))))) - (seek! (-> self y-offset-grips) f0-7 (* 16384.0 (seconds-per-frame))) - ) - ) - (vector-! gp-1 (target-pos 0) (-> self base)) - (vector-z-quaternion! s4-0 (-> self grips transform quat)) - (quaternion-rotate-y-to-vector! - (-> self grips transform quat) - (-> self grips transform quat) - (the-as quaternion gp-1) - (* 27306.666 (seconds-per-frame)) - ) - (vector-z-quaternion! s3-0 (-> self grips transform quat)) - (set! (-> self grips-moving?) (< (vector-dot s4-0 s3-0) (cos 182.04445))) - (periscope-update-joints) - (update-transforms! (-> self root)) - (when (and (-> self player-touching-grips?) (not (level-hint-displayed?))) - (set! (-> self player-touching-grips?) #f) - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (hud-hidden?) (can-grab-display? self)) - (let ((s2-2 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-43 s2-2)) - (set! (-> v1-43 width) (the float 440)) - ) - (let ((v1-44 s2-2)) - (set! (-> v1-44 height) (the float 80)) - ) - (set! (-> s2-2 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s2-2 #f 128 22) - ) - (when (cpad-pressed? 0 circle) - (set! (-> self grips-moving?) #f) - (loop - (send-event *target* 'change-mode 'periscope self) - (hide-hud) - (suspend) - (hide-hud) - (suspend) - ) - ) - ) - ) - ) - ) - (if (not (periscope-has-power-input?)) - (go periscope-wait-for-power-input) - ) - (suspend) - ) - ) - ) - :post (behavior () - (if (-> self grips-moving?) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when (and *target* + (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))))) + (when ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1)) + (let ((v0-0 (the-as object #t))) (set! (-> self player-touching-grips?) (the-as symbol v0-0)) v0-0)))) + (('change-mode) + (level-hint-spawn (text-id sidekick-hint-periscope) "sksp0049" (the-as entity #f) *entity-pool* (game-task none)) + (go periscope-player-control)))) + :exit + (behavior () + (sound-stop (-> self grips-sound-id))) + :code + (behavior () + (hide-hud) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self raised?) #t) + (set! (-> self grips-moving?) #t) + (let ((f30-0 8192.0) + (gp-0 (res-lump-value (-> self entity) 'text-id uint128))) + (until (= (-> self y-offset-grips) f30-0) + (if (nonzero? gp-0) (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none))) + (sound-play "site-moves" :id (-> self grips-sound-id) :position (the-as symbol (-> self grips transform))) + (seek! (-> self y-offset-grips) f30-0 (* 16384.0 (seconds-per-frame))) + (periscope-update-joints) + (suspend))) + (set! (-> self grips-moving?) #f) + (set! (-> self player-touching-grips?) #f) + (let ((gp-1 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'vector))) + (loop + (set! (-> s5-0 quad) (-> self node-list data 4 bone transform vector 3 quad)) + (let ((a0-10 s5-0) + (f30-1 81920.0)) + (when (and *target* (>= f30-1 (vector-vector-distance a0-10 (-> *target* control trans)))) + (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) + (let ((f0-7 (fmax 4096.0 (fmin 12288.0 (+ (- 5120.0 (-> self base y)) (-> *target* control trans y)))))) + (seek! (-> self y-offset-grips) f0-7 (* 16384.0 (seconds-per-frame))))) + (vector-! gp-1 (target-pos 0) (-> self base)) + (vector-z-quaternion! s4-0 (-> self grips transform quat)) + (quaternion-rotate-y-to-vector! (-> self grips transform quat) + (-> self grips transform quat) + (the-as quaternion gp-1) + (* 27306.666 (seconds-per-frame))) + (vector-z-quaternion! s3-0 (-> self grips transform quat)) + (set! (-> self grips-moving?) (< (vector-dot s4-0 s3-0) (cos 182.04445))) + (periscope-update-joints) + (update-transforms! (-> self root)) + (when (and (-> self player-touching-grips?) (not (level-hint-displayed?))) + (set! (-> self player-touching-grips?) #f) + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (when (and (hud-hidden?) (can-grab-display? self)) + (let ((s2-2 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-43 s2-2)) (set! (-> v1-43 width) (the float 440))) + (let ((v1-44 s2-2)) (set! (-> v1-44 height) (the float 80))) + (set! (-> s2-2 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s2-2 #f 128 22)) + (when (cpad-pressed? 0 circle) + (set! (-> self grips-moving?) #f) + (loop + (send-event *target* 'change-mode 'periscope self) + (hide-hud) + (suspend) + (hide-hud) + (suspend))))))) + (if (not (periscope-has-power-input?)) (go periscope-wait-for-power-input)) + (suspend)))) + :post + (behavior () + (if (-> self grips-moving?) (sound-play "site-moves" :id (-> self grips-sound-id) :position (the-as symbol (-> self grips transform))) - (sound-stop (-> self grips-sound-id)) - ) - (periscope-draw-beam-impact) - (ja-post) - ) - ) + (sound-stop (-> self grips-sound-id))) + (periscope-draw-beam-impact) + (ja-post))) (defstate periscope-player-control (periscope) - :exit (behavior () - (logclear! (-> self reflector 0 draw status) (draw-status hidden)) - (periscope-find-reflection-angles) - (set! (-> self turn) (-> self target-turn)) - (set! (-> self tilt) (-> self target-tilt)) - ) - :trans (behavior () - (hide-hud) - ) - :code (behavior () - (set-time! (-> self lock-time)) - (link-to-next-and-prev-actor (-> self link)) - (periscope-find-next) - (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) 'activate) - (let ((t9-2 send-event-function) - (v1-5 (-> self link)) - ) - (t9-2 (the-as process-tree (and (-> v1-5 next) (-> v1-5 next extra process))) a1-0) - ) - ) - (periscope-find-aim-at-angles) - (set! (-> self turn) (-> self target-turn)) - (set! (-> self tilt) (-> self target-tilt)) - (let ((v1-10 (res-lump-data (-> self entity) 'rotoffset (pointer float)))) - (cond - (v1-10 - (+! (-> self turn) (-> v1-10 0)) - (+! (-> self tilt) (-> v1-10 1)) - ) - (else - (+! (-> self turn) 910.2222) - ) - ) - ) - (case (get-aspect-ratio) - (('aspect16x9) - (set! (-> *part-id-table* 823 init-specs 12 initial-valuef) 5120.0) - (set! (-> *part-id-table* 815 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 816 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 817 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 818 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 819 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 820 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 821 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 822 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 811 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 812 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 813 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 814 init-specs 12 initial-valuef) 3276.8) - (set! (-> *part-id-table* 803 init-specs 2 initial-valuef) -10854.4) - (set! (-> *part-id-table* 803 init-specs 3 initial-valuef) 6553.6) - (set! (-> *part-id-table* 804 init-specs 2 initial-valuef) 4546.56) - (set! (-> *part-id-table* 804 init-specs 3 initial-valuef) 6553.6) - (set! (-> *part-id-table* 805 init-specs 2 initial-valuef) -4546.56) - (set! (-> *part-id-table* 805 init-specs 3 initial-valuef) 6553.6) - (set! (-> *part-id-table* 806 init-specs 2 initial-valuef) 10854.4) - (set! (-> *part-id-table* 806 init-specs 3 initial-valuef) 6553.6) - (set! (-> *part-id-table* 807 init-specs 2 initial-valuef) -10854.4) - (set! (-> *part-id-table* 807 init-specs 3 initial-valuef) -6553.6) - (set! (-> *part-id-table* 808 init-specs 2 initial-valuef) 4546.56) - (set! (-> *part-id-table* 808 init-specs 3 initial-valuef) -6553.6) - (set! (-> *part-id-table* 809 init-specs 2 initial-valuef) -4546.56) - (set! (-> *part-id-table* 809 init-specs 3 initial-valuef) -6553.6) - (set! (-> *part-id-table* 810 init-specs 2 initial-valuef) 10854.4) - (set! (-> *part-id-table* 810 init-specs 3 initial-valuef) -6553.6) - ) - (('aspect4x3) - (set! (-> *part-id-table* 823 init-specs 12 initial-valuef) 5939.2) - (set! (-> *part-id-table* 815 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 816 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 817 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 818 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 819 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 820 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 821 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 822 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 811 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 812 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 813 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 814 init-specs 12 initial-valuef) 4096.0) - (set! (-> *part-id-table* 803 init-specs 2 initial-valuef) -11878.4) - (set! (-> *part-id-table* 803 init-specs 3 initial-valuef) 8601.6) - (set! (-> *part-id-table* 804 init-specs 2 initial-valuef) 4546.56) - (set! (-> *part-id-table* 804 init-specs 3 initial-valuef) 8601.6) - (set! (-> *part-id-table* 805 init-specs 2 initial-valuef) -4546.56) - (set! (-> *part-id-table* 805 init-specs 3 initial-valuef) 8601.6) - (set! (-> *part-id-table* 806 init-specs 2 initial-valuef) 11878.4) - (set! (-> *part-id-table* 806 init-specs 3 initial-valuef) 8601.6) - (set! (-> *part-id-table* 807 init-specs 2 initial-valuef) -11878.4) - (set! (-> *part-id-table* 807 init-specs 3 initial-valuef) -8601.6) - (set! (-> *part-id-table* 808 init-specs 2 initial-valuef) 4546.56) - (set! (-> *part-id-table* 808 init-specs 3 initial-valuef) -8601.6) - (set! (-> *part-id-table* 809 init-specs 2 initial-valuef) -4546.56) - (set! (-> *part-id-table* 809 init-specs 3 initial-valuef) -8601.6) - (set! (-> *part-id-table* 810 init-specs 2 initial-valuef) 11878.4) - (set! (-> *part-id-table* 810 init-specs 3 initial-valuef) -8601.6) - ) - ) - (let* ((gp-0 (-> self old-camera-matrix)) - (a2-1 (matrix-local->world #f #f)) - (v1-191 (-> a2-1 vector 0 quad)) - (a0-8 (-> a2-1 vector 1 quad)) - (a1-3 (-> a2-1 vector 2 quad)) - (a2-2 (-> a2-1 vector 3 quad)) - ) - (set! (-> gp-0 vector 0 quad) v1-191) - (set! (-> gp-0 vector 1 quad) a0-8) - (set! (-> gp-0 vector 2 quad) a1-3) - (set! (-> gp-0 vector 3 quad) a2-2) - ) - (send-event *camera* 'change-state cam-periscope 0) - (logior! (-> self reflector 0 draw status) (draw-status hidden)) - (suspend) - (loop - (if (not (-> self aligned?)) - (set-time! (-> self lock-time)) - ) - (periscope-crosshair) - (when (or (cpad-pressed? 0 triangle x) (and (-> self aligned?) (time-elapsed? (-> self lock-time) (seconds 3)))) - (sound-stop (-> self sound-id)) - (if (periscope-test-task-complete?) - (close-specific-task! (game-task jungle-lurkerm) (task-status need-reminder)) - ) - (loop - (when (send-event *target* 'end-mode) - (cond - ((and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (let ((gp-1 (ppointer->handle (peri-beamcam-init-by-other (the-as string (-> self name)))))) - (suspend) - (while (and *target* (= (-> *target* next-state name) 'target-periscope)) - (periscope-crosshair) + :exit + (behavior () + (logclear! (-> self reflector 0 draw status) (draw-status hidden)) + (periscope-find-reflection-angles) + (set! (-> self turn) (-> self target-turn)) + (set! (-> self tilt) (-> self target-tilt))) + :trans + (behavior () + (hide-hud)) + :code + (behavior () + (set-time! (-> self lock-time)) + (link-to-next-and-prev-actor (-> self link)) + (periscope-find-next) + (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) 'activate) + (let ((t9-2 send-event-function) + (v1-5 (-> self link))) + (t9-2 (the-as process-tree (and (-> v1-5 next) (-> v1-5 next extra process))) a1-0))) + (periscope-find-aim-at-angles) + (set! (-> self turn) (-> self target-turn)) + (set! (-> self tilt) (-> self target-tilt)) + (let ((v1-10 (res-lump-data (-> self entity) 'rotoffset (pointer float)))) + (cond + (v1-10 (+! (-> self turn) (-> v1-10 0)) (+! (-> self tilt) (-> v1-10 1))) + (else (+! (-> self turn) 910.2222)))) + (case (get-aspect-ratio) + (('aspect16x9) + (set! (-> *part-id-table* 823 init-specs 12 initial-valuef) 5120.0) + (set! (-> *part-id-table* 815 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 816 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 817 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 818 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 819 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 820 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 821 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 822 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 811 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 812 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 813 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 814 init-specs 12 initial-valuef) 3276.8) + (set! (-> *part-id-table* 803 init-specs 2 initial-valuef) -10854.4) + (set! (-> *part-id-table* 803 init-specs 3 initial-valuef) 6553.6) + (set! (-> *part-id-table* 804 init-specs 2 initial-valuef) 4546.56) + (set! (-> *part-id-table* 804 init-specs 3 initial-valuef) 6553.6) + (set! (-> *part-id-table* 805 init-specs 2 initial-valuef) -4546.56) + (set! (-> *part-id-table* 805 init-specs 3 initial-valuef) 6553.6) + (set! (-> *part-id-table* 806 init-specs 2 initial-valuef) 10854.4) + (set! (-> *part-id-table* 806 init-specs 3 initial-valuef) 6553.6) + (set! (-> *part-id-table* 807 init-specs 2 initial-valuef) -10854.4) + (set! (-> *part-id-table* 807 init-specs 3 initial-valuef) -6553.6) + (set! (-> *part-id-table* 808 init-specs 2 initial-valuef) 4546.56) + (set! (-> *part-id-table* 808 init-specs 3 initial-valuef) -6553.6) + (set! (-> *part-id-table* 809 init-specs 2 initial-valuef) -4546.56) + (set! (-> *part-id-table* 809 init-specs 3 initial-valuef) -6553.6) + (set! (-> *part-id-table* 810 init-specs 2 initial-valuef) 10854.4) + (set! (-> *part-id-table* 810 init-specs 3 initial-valuef) -6553.6)) + (('aspect4x3) + (set! (-> *part-id-table* 823 init-specs 12 initial-valuef) 5939.2) + (set! (-> *part-id-table* 815 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 816 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 817 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 818 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 819 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 820 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 821 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 822 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 811 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 812 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 813 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 814 init-specs 12 initial-valuef) 4096.0) + (set! (-> *part-id-table* 803 init-specs 2 initial-valuef) -11878.4) + (set! (-> *part-id-table* 803 init-specs 3 initial-valuef) 8601.6) + (set! (-> *part-id-table* 804 init-specs 2 initial-valuef) 4546.56) + (set! (-> *part-id-table* 804 init-specs 3 initial-valuef) 8601.6) + (set! (-> *part-id-table* 805 init-specs 2 initial-valuef) -4546.56) + (set! (-> *part-id-table* 805 init-specs 3 initial-valuef) 8601.6) + (set! (-> *part-id-table* 806 init-specs 2 initial-valuef) 11878.4) + (set! (-> *part-id-table* 806 init-specs 3 initial-valuef) 8601.6) + (set! (-> *part-id-table* 807 init-specs 2 initial-valuef) -11878.4) + (set! (-> *part-id-table* 807 init-specs 3 initial-valuef) -8601.6) + (set! (-> *part-id-table* 808 init-specs 2 initial-valuef) 4546.56) + (set! (-> *part-id-table* 808 init-specs 3 initial-valuef) -8601.6) + (set! (-> *part-id-table* 809 init-specs 2 initial-valuef) -4546.56) + (set! (-> *part-id-table* 809 init-specs 3 initial-valuef) -8601.6) + (set! (-> *part-id-table* 810 init-specs 2 initial-valuef) 11878.4) + (set! (-> *part-id-table* 810 init-specs 3 initial-valuef) -8601.6))) + (let* ((gp-0 (-> self old-camera-matrix)) + (a2-1 (matrix-local->world #f #f)) + (v1-191 (-> a2-1 vector 0 quad)) + (a0-8 (-> a2-1 vector 1 quad)) + (a1-3 (-> a2-1 vector 2 quad)) + (a2-2 (-> a2-1 vector 3 quad))) + (set! (-> gp-0 vector 0 quad) v1-191) + (set! (-> gp-0 vector 1 quad) a0-8) + (set! (-> gp-0 vector 2 quad) a1-3) + (set! (-> gp-0 vector 3 quad) a2-2)) + (send-event *camera* 'change-state cam-periscope 0) + (logior! (-> self reflector 0 draw status) (draw-status hidden)) + (suspend) + (loop + (if (not (-> self aligned?)) (set-time! (-> self lock-time))) + (periscope-crosshair) + (when (or (cpad-pressed? 0 triangle x) (and (-> self aligned?) (time-elapsed? (-> self lock-time) (seconds 3)))) + (sound-stop (-> self sound-id)) + (if (periscope-test-task-complete?) (close-specific-task! (game-task jungle-lurkerm) (task-status need-reminder))) + (loop + (when (send-event *target* 'end-mode) + (cond + ((and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (let ((gp-1 (ppointer->handle (peri-beamcam-init-by-other (the-as string (-> self name)))))) (suspend) - ) - (logclear! (-> self reflector 0 draw status) (draw-status hidden)) - (periscope-find-reflection-angles) - (set! (-> self turn) (-> self target-turn)) - (set! (-> self tilt) (-> self target-tilt)) + (while (and *target* (= (-> *target* next-state name) 'target-periscope)) + (periscope-crosshair) + (suspend)) + (logclear! (-> self reflector 0 draw status) (draw-status hidden)) + (periscope-find-reflection-angles) + (set! (-> self turn) (-> self target-turn)) + (set! (-> self tilt) (-> self target-tilt)) + (set! *camera-init-mat* (-> self old-camera-matrix)) + (send-event *camera* 'change-state *camera-base-mode* 0) + (set! *camera-init-mat* #f) + (while (handle->process (the-as handle gp-1)) + (suspend))) + (process-spawn-function process + (lambda ((arg0 string)) + (while (or (-> *setting-control* current ambient) (-> *setting-control* current movie) (-> *setting-control* current hint)) + (suspend)) + (cond + ((name= arg0 "periscope-11") + (level-hint-spawn (text-id sidekick-hint-periscope3) "sksp0053" (the-as entity #f) *entity-pool* (game-task none))) + ((name= arg0 "periscope-12") + (level-hint-spawn (text-id sidekick-hint-periscope2) "sksp0052" (the-as entity #f) *entity-pool* (game-task none))) + ((name= arg0 "periscope-15") + (level-hint-spawn (text-id jungle-lurkerm-resolution) "sksp0018" (the-as entity #f) *entity-pool* (game-task none)))) + (none)) + (-> self name) + :to + self)) + (else (set! *camera-init-mat* (-> self old-camera-matrix)) (send-event *camera* 'change-state *camera-base-mode* 0) - (set! *camera-init-mat* #f) - (while (handle->process (the-as handle gp-1)) - (suspend) - ) - ) - (process-spawn-function - process - (lambda ((arg0 string)) - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - ) - (suspend) - ) - (cond - ((name= arg0 "periscope-11") - (level-hint-spawn - (text-id sidekick-hint-periscope3) - "sksp0053" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((name= arg0 "periscope-12") - (level-hint-spawn - (text-id sidekick-hint-periscope2) - "sksp0052" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((name= arg0 "periscope-15") - (level-hint-spawn - (text-id jungle-lurkerm-resolution) - "sksp0018" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (none) - ) - (-> self name) - :to self - ) - ) - (else - (set! *camera-init-mat* (-> self old-camera-matrix)) - (send-event *camera* 'change-state *camera-base-mode* 0) - (set! *camera-init-mat* #f) - ) - ) - (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (set! *camera-init-mat* #f))) + (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) (go periscope-power-on) - (go periscope-wait-for-player) - ) - ) - (suspend) - ) - ) - (suspend) - ) - ) - :post (behavior () - (periscope-draw-beam) - (periscope-update-joints) - (ja-post) - ) - ) + (go periscope-wait-for-player))) + (suspend))) + (suspend))) + :post + (behavior () + (periscope-draw-beam) + (periscope-update-joints) + (ja-post))) (defstate periscope-power-on (periscope) :trans periscope-debug-trans - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self y-offset) (-> self height)) - (link-to-next-and-prev-actor (-> self link)) - (periscope-find-reflection-angles) - (set! (-> self turn) (-> self target-turn)) - (set! (-> self tilt) (-> self target-tilt)) - (let ((f30-0 (+ -20480.0 (-> self height)))) - (until (= (-> self y-offset-grips) f30-0) - (seek! (-> self y-offset-grips) f30-0 (* 16384.0 (seconds-per-frame))) - (periscope-update-joints) - (sound-play "site-moves" :id (-> self grips-sound-id) :position (the-as symbol (-> self grips transform))) - (suspend) - ) - ) - (sound-stop (-> self grips-sound-id)) - (ja-post) - (loop - (suspend) - ) - ) - :post periscope-post - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self y-offset) (-> self height)) + (link-to-next-and-prev-actor (-> self link)) + (periscope-find-reflection-angles) + (set! (-> self turn) (-> self target-turn)) + (set! (-> self tilt) (-> self target-tilt)) + (let ((f30-0 (+ -20480.0 (-> self height)))) + (until (= (-> self y-offset-grips) f30-0) + (seek! (-> self y-offset-grips) f30-0 (* 16384.0 (seconds-per-frame))) + (periscope-update-joints) + (sound-play "site-moves" :id (-> self grips-sound-id) :position (the-as symbol (-> self grips transform))) + (suspend))) + (sound-stop (-> self grips-sound-id)) + (ja-post) + (loop + (suspend))) + :post periscope-post) (defmethod init-from-entity! ((this periscope) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -1626,8 +1280,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 96256.0 0.0 98304.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind wall-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -1635,21 +1288,17 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 9216.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-2 prim-core collide-as) (collide-kind wall-object)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 11264.0) - (append-prim s3-0 s2-2) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this height) (res-lump-float (-> this entity) 'height-info)) (set! (-> this y-offset) (-> this height)) @@ -1671,85 +1320,57 @@ (periscope-update-joints) (set! (-> this grips-moving?) #f) (set! (-> this sound-id) (new-sound-id)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "eco-beam" :fo-max 50) (-> this reflector-trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "eco-beam" :fo-max 50) (-> this reflector-trans))) (set! (-> this rise-sound-id) (new-sound-id)) (set! (-> this grips-sound-id) (new-sound-id)) (set! (-> this root nav-radius) 8192.0) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (cond ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go periscope-power-on) - ) - ((periscope-has-power-input?) - (set! (-> this y-offset-grips) 8192.0) - (go periscope-wait-for-player) - ) - (else - (go periscope-idle) - ) - ) - (none) - ) + (go periscope-power-on)) + ((periscope-has-power-input?) (set! (-> this y-offset-grips) 8192.0) (go periscope-wait-for-player)) + (else (go periscope-idle))) + (none)) (defbehavior reflector-origin-update reflector-origin ((arg0 entity-actor)) (when arg0 (set! (-> self next-reflector-trans quad) (-> arg0 extra trans quad)) - (+! (-> self next-reflector-trans y) (res-lump-float arg0 'height-info)) - ) + (+! (-> self next-reflector-trans y) (res-lump-float arg0 'height-info))) 0 - (none) - ) + (none)) (defstate reflector-origin-idle (reflector-origin) - :code (behavior () - (reflector-origin-update (-> self blocker)) - (while (not (logtest? (-> self blocker extra perm status) (entity-perm-status complete))) - (suspend) - ) - (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) 'activate) - (let ((t9-1 send-event-function) - (v1-6 (-> self link)) - ) - (t9-1 (the-as process-tree (and (-> v1-6 next) (-> v1-6 next extra process))) a1-0) - ) - ) - (reflector-origin-update (-> self link next)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (-> self next-reflector-trans) (-> self reflector-trans)) - (vector-normalize! gp-0 819200.0) - (vector+! (-> self next-reflector-trans) (-> self reflector-trans) gp-0) - ) - (let ((gp-1 #f)) - (until gp-1 - (let* ((v1-13 (-> self link)) - (s5-0 (and (-> v1-13 next) (-> v1-13 next extra process))) - (v1-17 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) periscope)) - s5-0 - ) - ) - ) - (if v1-17 - (set! gp-1 (-> (the-as periscope v1-17) raised?)) - ) - ) - (suspend) - ) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (reflector-origin-update (-> self link next)) - (loop - (suspend) - ) - ) - :post (behavior () - (draw-power-beam (-> self reflector-trans) (-> self next-reflector-trans)) - ) - ) + :code + (behavior () + (reflector-origin-update (-> self blocker)) + (while (not (logtest? (-> self blocker extra perm status) (entity-perm-status complete))) + (suspend)) + (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) 'activate) + (let ((t9-1 send-event-function) + (v1-6 (-> self link))) + (t9-1 (the-as process-tree (and (-> v1-6 next) (-> v1-6 next extra process))) a1-0))) + (reflector-origin-update (-> self link next)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (-> self next-reflector-trans) (-> self reflector-trans)) + (vector-normalize! gp-0 819200.0) + (vector+! (-> self next-reflector-trans) (-> self reflector-trans) gp-0)) + (let ((gp-1 #f)) + (until gp-1 + (let* ((v1-13 (-> self link)) + (s5-0 (and (-> v1-13 next) (-> v1-13 next extra process))) + (v1-17 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) periscope)) s5-0))) + (if v1-17 (set! gp-1 (-> (the-as periscope v1-17) raised?)))) + (suspend))) + (process-entity-status! self (entity-perm-status complete) #t) + (reflector-origin-update (-> self link next)) + (loop + (suspend))) + :post + (behavior () + (draw-power-beam (-> self reflector-trans) (-> self next-reflector-trans)))) (defmethod init-from-entity! ((this reflector-origin) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -1759,103 +1380,65 @@ (set! (-> this blocker) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this reflector-trans quad) (-> this root trans quad)) (go reflector-origin-idle) - (none) - ) + (none)) (defstate reflector-mirror-idle (reflector-mirror) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (sound-play "mirror-smash") - (go reflector-mirror-broken #f) - ) - ) - ) - :exit (behavior () - (stop! (-> self sound)) - ) - :code (behavior () - (let ((gp-0 (new-stack-vector0))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (+! (-> gp-0 y) 49152.0) - (loop - (draw-power-beam gp-0 (-> self beam-end)) - (update! (-> self sound)) - (when (logtest? (-> self draw status) (draw-status was-drawn)) - (launch-particles (-> *part-id-table* 825) (-> self beam-end)) - (when (and *target* (>= 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (start-hint-timer (text-id sidekick-hint-reflector-mirror)) - (level-hint-spawn - (text-id sidekick-hint-reflector-mirror) - "sksp0050" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (suspend) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (sound-play "mirror-smash") (go reflector-mirror-broken #f)))) + :exit + (behavior () + (stop! (-> self sound))) + :code + (behavior () + (let ((gp-0 (new-stack-vector0))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (+! (-> gp-0 y) 49152.0) + (loop + (draw-power-beam gp-0 (-> self beam-end)) + (update! (-> self sound)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) + (launch-particles (-> *part-id-table* 825) (-> self beam-end)) + (when (and *target* (>= 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (start-hint-timer (text-id sidekick-hint-reflector-mirror)) + (level-hint-spawn (text-id sidekick-hint-reflector-mirror) "sksp0050" (the-as entity #f) *entity-pool* (game-task none)))) + (suspend)))) + :post ja-post) (defstate reflector-mirror-broken (reflector-mirror) - :code (behavior ((arg0 symbol)) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (let ((s5-0 (entity-actor-count (-> self entity) 'alt-actor))) - (dotimes (s4-0 s5-0) - (while (let ((s3-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> s3-0 from) self) - (set! (-> s3-0 num-params) 0) - (set! (-> s3-0 message) 'stop) - (let ((s2-0 send-event-function) - (v1-3 (entity-actor-lookup (-> self entity) 'alt-actor s4-0)) - ) - (not (s2-0 - (if v1-3 - (-> v1-3 extra process) - ) - s3-0 - ) - ) - ) - ) - (suspend) - ) - ) - ) - (when (not arg0) - (ambient-hint-spawn "gamcam21" (the-as vector #f) *entity-pool* 'camera) - (let ((v1-11 (manipy-spawn (-> self root trans) (-> self entity) *reflector-mirror-break-sg* #f :to self))) - (send-event (ppointer->process v1-11) 'anim-mode 'play1) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.5)) - (suspend) - ) - ) - (process-grab? *target*) - (while (or (-> self child) (-> *setting-control* current ambient)) - (suspend) - ) - (process-release? *target*) - (peri-beamcam-init-by-other (the-as string (-> self name))) - (process-entity-status! self (entity-perm-status complete) #t) - (close-specific-task! (game-task jungle-lurkerm) (task-status need-reminder-a)) - (while (-> self child) - (suspend) - ) - ) - (logior! (-> self mask) (process-mask actor-pause)) - (loop - (suspend) - ) - ) - ) + :code + (behavior ((arg0 symbol)) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (let ((s5-0 (entity-actor-count (-> self entity) 'alt-actor))) + (dotimes (s4-0 s5-0) + (while (let ((s3-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> s3-0 from) self) + (set! (-> s3-0 num-params) 0) + (set! (-> s3-0 message) 'stop) + (let ((s2-0 send-event-function) + (v1-3 (entity-actor-lookup (-> self entity) 'alt-actor s4-0))) + (not (s2-0 (if v1-3 (-> v1-3 extra process)) s3-0)))) + (suspend)))) + (when (not arg0) + (ambient-hint-spawn "gamcam21" (the-as vector #f) *entity-pool* 'camera) + (let ((v1-11 (manipy-spawn (-> self root trans) (-> self entity) *reflector-mirror-break-sg* #f :to self))) + (send-event (ppointer->process v1-11) 'anim-mode 'play1)) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.5)) (suspend))) + (process-grab? *target*) + (while (or (-> self child) (-> *setting-control* current ambient)) + (suspend)) + (process-release? *target*) + (peri-beamcam-init-by-other (the-as string (-> self name))) + (process-entity-status! self (entity-perm-status complete) #t) + (close-specific-task! (game-task jungle-lurkerm) (task-status need-reminder-a)) + (while (-> self child) + (suspend))) + (logior! (-> self mask) (process-mask actor-pause)) + (loop + (suspend)))) (defmethod init-from-entity! ((this reflector-mirror) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -1872,43 +1455,34 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 6144.0 0.0 6963.2) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core action) (collide-action solid)) (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 18432.0 0.0 6963.2) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core action) (collide-action solid)) (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 30720.0 0.0 8192.0) - (append-prim s3-0 s2-2) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this link) (new 'process 'actor-link-info this)) (initialize-skeleton this *reflector-mirror-sg* '()) (set-vector! (-> this beam-end) 1805721.6 167936.0 -932659.2 1.0) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "eco-beam" :fo-max 50) (-> this beam-end)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "eco-beam" :fo-max 50) (-> this beam-end))) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go reflector-mirror-broken #t) - (go reflector-mirror-idle) - ) - (none) - ) + (go reflector-mirror-broken #t) + (go reflector-mirror-idle)) + (none)) (defun draw-power-beam ((arg0 vector) (arg1 vector)) (when (line-in-view-frustum? arg0 arg1) @@ -1916,28 +1490,17 @@ (vector-length s4-1) (let ((t2-0 (new 'stack-no-clear 'collide-tri-result))) 0.0 - (if (>= (fill-and-probe-using-line-sphere - *collide-cache* - arg0 - s4-1 - 6144.0 - (collide-kind target) - (the-as process #f) - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (send-event *target* 'get-pickup 3 5.0) - ) - ) - ) - (if (and (< 4096.0 (vector-vector-distance (camera-pos) arg0)) - (< 4096.0 (vector-vector-distance (camera-pos) arg1)) - ) - (draw-eco-beam arg0 arg1) - ) - ) + (if (>= (fill-and-probe-using-line-sphere *collide-cache* + arg0 + s4-1 + 6144.0 + (collide-kind target) + (the-as process #f) + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (send-event *target* 'get-pickup 3 5.0)))) + (if (and (< 4096.0 (vector-vector-distance (camera-pos) arg0)) (< 4096.0 (vector-vector-distance (camera-pos) arg1))) + (draw-eco-beam arg0 arg1))) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungle/jungle-obs.gc b/goal_src/jak1/levels/jungle/jungle-obs.gc index 0905fe4bac..8da921a582 100644 --- a/goal_src/jak1/levels/jungle/jungle-obs.gc +++ b/goal_src/jak1/levels/jungle/jungle-obs.gc @@ -1,135 +1,108 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/util/sync-info.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/common-obs/baseplat.gc") (require "engine/common-obs/water-anim.gc") (require "engine/camera/pov-camera-h.gc") -;; name: jungle-obs.gc -;; name in dgo: jungle-obs -;; dgos: JUN, JUNGLE, L1 - ;; DECOMP BEGINS -(defskelgroup *med-res-firecanyon-sg* medres-firecanyon medres-firecanyon-lod0-jg medres-firecanyon-idle-ja - ((medres-firecanyon-lod0-mg (meters 999999))) - :bounds (static-spherem -200 0 -440 530) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-firecanyon-sg* + medres-firecanyon + medres-firecanyon-lod0-jg + medres-firecanyon-idle-ja + ((medres-firecanyon-lod0-mg (meters 999999))) + :bounds (static-spherem -200 0 -440 530) + :longest-edge (meters 0.01)) -(defskelgroup *jungle-camera-sg* jungle-camera 0 2 - ((1 (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :texture-level 2 - ) +(defskelgroup *jungle-camera-sg* + jungle-camera + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :texture-level 2) (deftype logtrap (process-drawable) - ((root collide-shape-moving :override) - ) + ((root collide-shape-moving :override)) (:state-methods - idle - ) - ) + idle)) - -(defskelgroup *logtrap-sg* logtrap logtrap-lod0-jg logtrap-idle-ja - ((logtrap-lod0-mg (meters 20)) (logtrap-lod1-mg (meters 999999))) - :bounds (static-spherem 0 8 0 13) - :longest-edge (meters 6) - :shadow logtrap-shadow-mg - ) +(defskelgroup *logtrap-sg* + logtrap + logtrap-lod0-jg + logtrap-idle-ja + ((logtrap-lod0-mg (meters 20)) (logtrap-lod1-mg (meters 999999))) + :bounds (static-spherem 0 8 0 13) + :longest-edge (meters 6) + :shadow logtrap-shadow-mg) (defstate idle (logtrap) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (or (= message 'touch) (= message 'attack)) - (send-event proc 'attack (-> block param 0) (new 'static 'attack-info)) - ) - ) - :code (behavior () - (transform-post) - (loop - (ja-no-eval :group! logtrap-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (logtest? (-> self draw status) (draw-status was-drawn)) - (cond - ((> (-> self draw cur-lod) 0) - (ja-post) - ) - (else - (transform-post) - (if *target* - (look-at-enemy! (-> *target* neck) (the-as vector (-> self root root-prim prim-core)) #f self) - ) - ) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (or (= message 'touch) (= message 'attack)) (send-event proc 'attack (-> block param 0) (new 'static 'attack-info)))) + :code + (behavior () + (transform-post) + (loop + (ja-no-eval :group! logtrap-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (logtest? (-> self draw status) (draw-status was-drawn)) + (cond + ((> (-> self draw cur-lod) 0) (ja-post)) + (else + (transform-post) + (if *target* (look-at-enemy! (-> *target* neck) (the-as vector (-> self root root-prim prim-core)) #f self))))) + (suspend) + (ja :num! (seek!)))))) (defmethod init-from-entity! ((this logtrap) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 transform-index) 6) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 19251.2) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *logtrap-sg* '()) - (set! (-> this draw shadow-ctrl) - (new 'process 'shadow-control -5734.4 0.0 614400.0 (the-as float 1) 163840.0) - ) + (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control -5734.4 0.0 614400.0 (the-as float 1) 163840.0)) (logclear! (-> this mask) (process-mask actor-pause)) (update-transforms! (-> this root)) (go (method-of-object this idle)) - (none) - ) + (none)) (deftype towertop (process-drawable) - ((root-override trsq :overlay-at root) - ) + ((root-override trsq :overlay-at root)) (:states - towertop-idle - ) - ) - + towertop-idle)) -(defskelgroup *towertop-sg* towertop towertop-lod0-jg towertop-idle-ja - ((towertop-lod0-mg (meters 20)) (towertop-lod1-mg (meters 40)) (towertop-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *towertop-sg* + towertop + towertop-lod0-jg + towertop-idle-ja + ((towertop-lod0-mg (meters 20)) (towertop-lod1-mg (meters 40)) (towertop-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (defstate towertop-idle (towertop) - :code (behavior () - (loop - (ja-no-eval :group! towertop-idle-ja :num! (seek! max 0.4) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.4)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! towertop-idle-ja :num! (seek! max 0.4) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.4))))) + :post ja-post) (defmethod init-from-entity! ((this towertop) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -138,64 +111,47 @@ (logclear! (-> this mask) (process-mask actor-pause)) (initialize-skeleton this *towertop-sg* '()) (go towertop-idle) - (none) - ) + (none)) (deftype lurkerm-tall-sail (process-drawable) - ((root collide-shape-moving :override) - (speed float) - (alt-actor entity-actor) - ) + ((root collide-shape-moving :override) + (speed float) + (alt-actor entity-actor)) (:states - lurkerm-tall-sail-idle - ) - ) - - -(defskelgroup *lurkerm-tall-sail-sg* lurkerm-tall-sail lurkerm-tall-sail-lod0-jg lurkerm-tall-sail-idle-ja - ((lurkerm-tall-sail-lod0-mg (meters 20)) - (lurkerm-tall-sail-lod1-mg (meters 40)) - (lurkerm-tall-sail-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 5 0 7) - :longest-edge (meters 4) - ) + lurkerm-tall-sail-idle)) + +(defskelgroup *lurkerm-tall-sail-sg* + lurkerm-tall-sail + lurkerm-tall-sail-lod0-jg + lurkerm-tall-sail-idle-ja + ((lurkerm-tall-sail-lod0-mg (meters 20)) + (lurkerm-tall-sail-lod1-mg (meters 40)) + (lurkerm-tall-sail-lod2-mg (meters 999999))) + :bounds (static-spherem 0 5 0 7) + :longest-edge (meters 4)) (defstate lurkerm-tall-sail-idle (lurkerm-tall-sail) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop) - (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> self speed) 0.0) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self speed) 0.0)))) :trans rider-trans - :code (behavior () - (loop - (ja-no-eval :group! lurkerm-tall-sail-idle-ja :num! (seek! max (* 0.5 (-> self speed))) :frame-num 0.0) - (until (ja-done? 0) - (quaternion-rotate-local-y! - (-> self root quat) - (-> self root quat) - (* 12743.111 (seconds-per-frame) (-> self speed)) - ) - (suspend) - (ja :num! (seek! max (* 0.5 (-> self speed)))) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! lurkerm-tall-sail-idle-ja :num! (seek! max (* 0.5 (-> self speed))) :frame-num 0.0) + (until (ja-done? 0) + (quaternion-rotate-local-y! (-> self root quat) (-> self root quat) (* 12743.111 (seconds-per-frame) (-> self speed))) + (suspend) + (ja :num! (seek! max (* 0.5 (-> self speed))))))) + :post rider-post) (defmethod init-from-entity! ((this lurkerm-tall-sail) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders 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) (collide-kind ground-object)) @@ -211,13 +167,10 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 39321.6 0.0 0.0 43417.6) - (append-prim s3-0 s2-0) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lurkerm-tall-sail-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -225,63 +178,46 @@ (set! (-> this alt-actor) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (set! (-> this speed) 1.0) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (set! (-> this speed) 0.0) - ) + (set! (-> this speed) 0.0)) (go lurkerm-tall-sail-idle) - (none) - ) + (none)) (deftype lurkerm-short-sail (process-drawable) - ((root collide-shape-moving :override) - (speed float) - (alt-actor entity-actor) - ) + ((root collide-shape-moving :override) + (speed float) + (alt-actor entity-actor)) (:states - lurkerm-short-sail-idle - ) - ) - + lurkerm-short-sail-idle)) -(defskelgroup *lurkerm-short-sail-sg* lurkerm-short-sail 0 4 - ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) - :bounds (static-spherem 0 5 0 9) - ) +(defskelgroup *lurkerm-short-sail-sg* + lurkerm-short-sail + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 5 0 9)) (defstate lurkerm-short-sail-idle (lurkerm-short-sail) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop) - (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> self speed) 0.0) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self speed) 0.0)))) :trans rider-trans - :code (behavior () - (loop - (ja-no-eval :group! (-> self draw art-group data 4) :num! (seek! max (* 0.5 (-> self speed))) :frame-num 0.0) - (until (ja-done? 0) - (quaternion-rotate-local-y! - (-> self root quat) - (-> self root quat) - (* -12743.111 (seconds-per-frame) (-> self speed)) - ) - (suspend) - (ja :num! (seek! max (* 0.5 (-> self speed)))) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (-> self draw art-group data 4) :num! (seek! max (* 0.5 (-> self speed))) :frame-num 0.0) + (until (ja-done? 0) + (quaternion-rotate-local-y! (-> self root quat) (-> self root quat) (* -12743.111 (seconds-per-frame) (-> self speed))) + (suspend) + (ja :num! (seek! max (* 0.5 (-> self speed))))))) + :post rider-post) (defmethod init-from-entity! ((this lurkerm-short-sail) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -296,8 +232,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 36864.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -305,8 +240,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 40960.0 0.0 0.0 24576.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -314,13 +248,10 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 40960.0 0.0 0.0 24576.0) - (append-prim s3-0 s2-2) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lurkerm-short-sail-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -328,57 +259,45 @@ (set! (-> this alt-actor) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (set! (-> this speed) 1.0) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (set! (-> this speed) 0.0) - ) + (set! (-> this speed) 0.0)) (go lurkerm-short-sail-idle) - (none) - ) + (none)) (deftype lurkerm-piston (process-drawable) - ((root collide-shape-moving :override) - (sync sync-info :inline) - (base vector :inline) - (height vector :inline) - (speed float) - (alt-actor entity-actor) - ) + ((root collide-shape-moving :override) + (sync sync-info :inline) + (base vector :inline) + (height vector :inline) + (speed float) + (alt-actor entity-actor)) (:states - lurkerm-piston-idle - ) - ) - + lurkerm-piston-idle)) -(defskelgroup *lurkerm-piston-sg* lurkerm-piston lurkerm-piston-geo-jg lurkerm-piston-idle-ja - ((lurkerm-piston-geo-mg (meters 999999))) - :bounds (static-spherem 0 0 0 6) - ) +(defskelgroup *lurkerm-piston-sg* + lurkerm-piston + lurkerm-piston-geo-jg + lurkerm-piston-idle-ja + ((lurkerm-piston-geo-mg (meters 999999))) + :bounds (static-spherem 0 0 0 6)) (defstate lurkerm-piston-idle (lurkerm-piston) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop) - (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> self speed) 0.0) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self speed) 0.0)))) :trans rider-trans - :code (behavior () - (loop - (ja-no-eval :group! lurkerm-piston-idle-ja :num! (seek! max (-> self speed)) :frame-num 0.0) - (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))) - (move-to-point! (-> self root) gp-0) - ) - (suspend) - (ja :num! (seek! max (-> self speed))) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! lurkerm-piston-idle-ja :num! (seek! max (-> self speed)) :frame-num 0.0) + (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))) + (move-to-point! (-> self root) gp-0)) + (suspend) + (ja :num! (seek! max (-> self speed)))))) + :post rider-post) (defmethod init-from-entity! ((this lurkerm-piston) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-32 res-tag)) @@ -386,9 +305,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -397,12 +314,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 24576.0 0.0 0.0 20480.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (initialize-skeleton this *lurkerm-piston-sg* '()) @@ -412,74 +327,51 @@ (let ((f30-0 (-> this base y))) (set! sv-16 (new 'static 'res-tag)) (let ((v1-32 (res-lump-data arg0 'height-info pointer :tag-ptr (& sv-16)))) - (set! (-> this 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! (-> this 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 (-> this height))) (set! (-> s4-1 x) 0.0) (set! sv-32 (new 'static 'res-tag)) (let ((v1-35 (res-lump-data arg0 'height-info (pointer float) :tag-ptr (& sv-32)))) - (set! (-> s4-1 y) (if (and v1-35 (< 1 (the-as int (-> sv-32 elt-count)))) - (-> v1-35 1) - 20480.0 - ) - ) - ) + (set! (-> s4-1 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 w) 1.0)) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (set! (-> this alt-actor) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (set! (-> this speed) 1.0) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (set! (-> this speed) 0.0) - ) + (set! (-> this speed) 0.0)) (go lurkerm-piston-idle) - (none) - ) + (none)) (deftype accordian (process-drawable) - ((speed float) - (alt-actor entity-actor) - ) + ((speed float) + (alt-actor entity-actor)) (:states - accordian-idle - ) - ) - + accordian-idle)) -(defskelgroup *accordian-sg* accordian accordian-lod0-jg accordian-idle-ja - ((accordian-lod0-mg (meters 20)) (accordian-lod1-mg (meters 999999))) - :bounds (static-spherem -7 0 23 25) - :longest-edge (meters 4) - ) +(defskelgroup *accordian-sg* + accordian + accordian-lod0-jg + accordian-idle-ja + ((accordian-lod0-mg (meters 20)) (accordian-lod1-mg (meters 999999))) + :bounds (static-spherem -7 0 23 25) + :longest-edge (meters 4)) (defstate accordian-idle (accordian) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop) - (process-entity-status! self (entity-perm-status complete) #t) - (set! (-> self speed) 0.0) - ) - ) - ) - :code (behavior () - (ja-no-eval :num! (loop!) :frame-num 0.0) - (ja-post) - (loop - (suspend) - (when (logtest? (-> self draw status) (draw-status was-drawn)) - (ja :num! (loop! (-> self speed))) - (ja-post) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop) (process-entity-status! self (entity-perm-status complete) #t) (set! (-> self speed) 0.0)))) + :code + (behavior () + (ja-no-eval :num! (loop!) :frame-num 0.0) + (ja-post) + (loop + (suspend) + (when (logtest? (-> self draw status) (draw-status was-drawn)) + (ja :num! (loop! (-> self speed))) + (ja-post))))) (defmethod init-from-entity! ((this accordian) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -489,205 +381,151 @@ (set! (-> this alt-actor) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (set! (-> this speed) 1.0) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (set! (-> this speed) 0.0) - ) + (set! (-> this speed) 0.0)) (go accordian-idle) - (none) - ) + (none)) -(defskelgroup *junglecam-sg* junglecam junglecam-lod0-jg junglecam-beamcam-ja - ((junglecam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 80) - ) +(defskelgroup *junglecam-sg* + junglecam + junglecam-lod0-jg + junglecam-beamcam-ja + ((junglecam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 80)) -(deftype junglecam (process-hidden) - () - ) - - -(deftype precurbridgecam (pov-camera) - () - ) +(deftype junglecam (process-hidden) ()) +(deftype precurbridgecam (pov-camera) ()) (defstate pov-camera-playing (precurbridgecam) :virtual #t - :code (behavior () - (ambient-hint-spawn "gamcam30" (the-as vector #f) *entity-pool* 'camera) - (ja :group! junglecam-precurbridgecam-ja) - (ja-no-eval :group! junglecam-precurbridgecam-ja :num! (seek! (ja-aframe 0.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 0.0 0))) - ) - (send-event (ppointer->process (-> self parent)) 'go) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (go-virtual pov-camera-done-playing) - ) - ) - -(deftype precurbridge-span (structure) - () - ) + :code + (behavior () + (ambient-hint-spawn "gamcam30" (the-as vector #f) *entity-pool* 'camera) + (ja :group! junglecam-precurbridgecam-ja) + (ja-no-eval :group! junglecam-precurbridgecam-ja :num! (seek! (ja-aframe 0.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 0.0 0)))) + (send-event (ppointer->process (-> self parent)) 'go) + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (go-virtual pov-camera-done-playing))) +(deftype precurbridge-span (structure) ()) (deftype precurbridge (process-drawable) - ((root collide-shape-moving :override) - (smush smush-control :inline) - (base vector :inline) - (activation-point vector :inline) - (span-array precurbridge-span 8) - ) + ((root collide-shape-moving :override) + (smush smush-control :inline) + (base vector :inline) + (activation-point vector :inline) + (span-array precurbridge-span 8)) (:states - precurbridge-activate - (precurbridge-active symbol) - precurbridge-idle - ) - ) - - -(defskelgroup *precurbridge-sg* precurbridge precurbridge-geo-jg precurbridge-idle-ja - ((precurbridge-geo-mg (meters 20)) (precurbridge-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 40) - :longest-edge (meters 3.6) - ) + precurbridge-activate + (precurbridge-active symbol) + precurbridge-idle)) + +(defskelgroup *precurbridge-sg* + precurbridge + precurbridge-geo-jg + precurbridge-idle-ja + ((precurbridge-geo-mg (meters 20)) (precurbridge-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 40) + :longest-edge (meters 3.6)) (defstate precurbridge-idle (precurbridge) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('go) - (go precurbridge-activate) - ) - ) - ) - :code (behavior () - (ja :group! precurbridge-idle-ja :num! min) - (transform-post) - (loop - (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)) - ) - (cond - ((send-event *target* 'query 'powerup (pickup-type eco-blue)) - (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self mask) (process-mask platform)) - (let ((gp-1 (entity-by-name "junglecam-1"))) - (cond - (gp-1 - (process-spawn - precurbridgecam - :init pov-camera-init-by-other - (-> gp-1 extra trans) - *junglecam-sg* - "precurbridgecam" - 0 - #f - '() - :to self - ) - ) - (else - (format #t "ERROR: position for precursor bridge camera not found~%") - (go precurbridge-activate) - ) - ) - ) - ) - (else - (level-hint-spawn - (text-id sidekick-hint-precurbridge) - "sksp0039" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('go) (go precurbridge-activate)))) + :code + (behavior () + (ja :group! precurbridge-idle-ja :num! min) + (transform-post) + (loop + (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))) + (cond + ((send-event *target* 'query 'powerup (pickup-type eco-blue)) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self mask) (process-mask platform)) + (let ((gp-1 (entity-by-name "junglecam-1"))) + (cond + (gp-1 + (process-spawn precurbridgecam + :init + pov-camera-init-by-other + (-> gp-1 extra trans) + *junglecam-sg* + "precurbridgecam" + 0 + #f + '() + :to + self)) + (else (format #t "ERROR: position for precursor bridge camera not found~%") (go precurbridge-activate))))) + (else + (level-hint-spawn (text-id sidekick-hint-precurbridge) "sksp0039" (the-as entity #f) *entity-pool* (game-task none))))) + (suspend))) + :post ja-post) (defstate precurbridge-activate (precurbridge) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) :trans rider-trans - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (sound-play "blue-eco-on" :position (the-as symbol (-> self root trans))) - (ja-no-eval :group! precurbridge-idle-ja :num! (seek! max 0.25) :frame-num 0.0) - (until (ja-done? 0) - (if (rand-vu-percent? 0.1) - (spawn-projectile-blue *target*) - ) - (suspend) - (ja :num! (seek! max 0.25)) - ) - (go precurbridge-active #f) - ) - :post rider-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play "blue-eco-on" :position (the-as symbol (-> self root trans))) + (ja-no-eval :group! precurbridge-idle-ja :num! (seek! max 0.25) :frame-num 0.0) + (until (ja-done? 0) + (if (rand-vu-percent? 0.1) (spawn-projectile-blue *target*)) + (suspend) + (ja :num! (seek! max 0.25))) + (go precurbridge-active #f)) + :post rider-post) (defstate precurbridge-active (precurbridge) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (let* ((gp-0 (the-as object (-> block param 0))) - (a0-2 (-> (the-as touching-shapes-entry gp-0) head)) - (s5-0 (-> self root)) - ) - (get-touched-prim a0-2 s5-0 (the-as touching-shapes-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) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) + (let* ((gp-0 (the-as object (-> block param 0))) + (a0-2 (-> (the-as touching-shapes-entry gp-0) head)) + (s5-0 (-> self root))) + (get-touched-prim a0-2 s5-0 (the-as touching-shapes-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 rider-trans - :code (behavior ((arg0 symbol)) - (set! (-> self draw bounds w) 81920.0) - (when arg0 - (ja-channel-set! 1) - (ja :group! precurbridge-float-ja :num! min) - ) - (ja-post) - (update-transforms! (-> self root)) - (logior! (-> self mask) (process-mask actor-pause)) - (loop - (if (not (movie?)) - (logior! (-> self mask) (process-mask platform)) - ) - (cond - ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (when (not (ja-group? precurbridge-static-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! precurbridge-static-ja :num! min) - ) - ) - (else - (when (not (ja-group? precurbridge-float-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! precurbridge-float-ja :num! min) - ) - ) - ) - (update! (-> self sound)) - (ja :num! (loop! 0.4)) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw bounds w) 81920.0) + (when arg0 + (ja-channel-set! 1) + (ja :group! precurbridge-float-ja :num! min)) + (ja-post) + (update-transforms! (-> self root)) + (logior! (-> self mask) (process-mask actor-pause)) + (loop + (if (not (movie?)) (logior! (-> self mask) (process-mask platform))) + (cond + ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (when (not (ja-group? precurbridge-static-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! precurbridge-static-ja :num! min))) + (else + (when (not (ja-group? precurbridge-float-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! precurbridge-float-ja :num! min)))) + (update! (-> self sound)) + (ja :num! (loop! 0.4)) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this precurbridge) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -695,9 +533,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders 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) (collide-kind ground-object)) @@ -713,8 +549,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -722,8 +557,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -731,8 +565,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 9) (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-2) - ) + (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) (collide-kind ground-object)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -740,8 +573,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 11) (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-3) - ) + (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) (collide-kind ground-object)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -749,8 +581,7 @@ (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 13) (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-4) - ) + (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) (collide-kind ground-object)) (set! (-> s2-5 collide-with) (collide-kind target)) @@ -758,8 +589,7 @@ (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 15) (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-5) - ) + (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) (collide-kind ground-object)) (set! (-> s2-6 collide-with) (collide-kind target)) @@ -767,8 +597,7 @@ (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 17) (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-6) - ) + (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) (collide-kind ground-object)) (set! (-> s2-7 collide-with) (collide-kind target)) @@ -776,8 +605,7 @@ (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 19) (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) - (append-prim s3-0 s2-7) - ) + (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) (collide-kind ground-object)) (set! (-> s2-8 collide-with) (collide-kind target)) @@ -785,8 +613,7 @@ (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 4) (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-8) - ) + (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) (collide-kind ground-object)) (set! (-> s2-9 collide-with) (collide-kind target)) @@ -794,8 +621,7 @@ (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 6) (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-9) - ) + (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) (collide-kind ground-object)) (set! (-> s2-10 collide-with) (collide-kind target)) @@ -803,8 +629,7 @@ (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 8) (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-10) - ) + (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) (collide-kind ground-object)) (set! (-> s2-11 collide-with) (collide-kind target)) @@ -812,8 +637,7 @@ (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 10) (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-11) - ) + (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) (collide-kind ground-object)) (set! (-> s2-12 collide-with) (collide-kind target)) @@ -821,8 +645,7 @@ (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 12) (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-12) - ) + (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) (collide-kind ground-object)) (set! (-> s2-13 collide-with) (collide-kind target)) @@ -830,8 +653,7 @@ (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 14) (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-13) - ) + (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) (collide-kind ground-object)) (set! (-> s2-14 collide-with) (collide-kind target)) @@ -839,8 +661,7 @@ (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 16) (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-14) - ) + (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) (collide-kind ground-object)) (set! (-> s2-15 collide-with) (collide-kind target)) @@ -848,13 +669,10 @@ (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 18) (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-15) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set-vector! (-> this activation-point) 1765785.6 61440.0 -1279180.8 1.0) (initialize-skeleton this *precurbridge-sg* '()) @@ -866,97 +684,63 @@ (cond ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (logclear! (-> this mask) (process-mask actor-pause)) - (go precurbridge-active #t) - ) - (else - (go precurbridge-idle) - ) - ) - (none) - ) + (go precurbridge-active #t)) + (else (go precurbridge-idle))) + (none)) (deftype maindoor (process-drawable) - ((root collide-shape :override) - (thresh vector :inline) - ) - (:states - (maindoor-closed symbol) - (maindoor-open symbol) - ) - ) - - -(defskelgroup *maindoor-sg* maindoor maindoor-lod0-jg maindoor-idle-ja - ((maindoor-lod0-mg (meters 20)) (maindoor-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 7) - ) + ((root collide-shape :override) + (thresh vector :inline)) + (:states (maindoor-closed symbol) + (maindoor-open symbol))) + +(defskelgroup *maindoor-sg* + maindoor + maindoor-lod0-jg + maindoor-idle-ja + ((maindoor-lod0-mg (meters 20)) (maindoor-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 7)) (defstate maindoor-closed (maindoor) - :code (behavior ((arg0 symbol)) - (set! (-> self draw force-lod) 1) - (logclear! (-> self draw status) (draw-status hidden)) - (if arg0 - (ja :num-func num-func-identity :frame-num 0.0) - ) - (suspend) - (update-transforms! (-> self root)) - (loop - (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 trans) (-> *target* control trans))) - ) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - ) - (sound-play "blue-eco-on" :position (the-as symbol (-> self root trans))) - (go maindoor-open #f) - ) - (if (and *target* - (>= (-> self thresh w) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (level-hint-spawn - (text-id sidekick-hint-rounddoor) - "sksp0038" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (when (ja-min? 0) - (set! (-> self root root-prim prim-core action) (collide-action solid)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - ) - (ja :num! (seek! 0.0)) - (ja-post) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw force-lod) 1) + (logclear! (-> self draw status) (draw-status hidden)) + (if arg0 (ja :num-func num-func-identity :frame-num 0.0)) (suspend) - ) - ) - ) + (update-transforms! (-> self root)) + (loop + (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 trans) (-> *target* control trans)))) + (send-event *target* 'query 'powerup (pickup-type eco-blue)))) + (sound-play "blue-eco-on" :position (the-as symbol (-> self root trans))) + (go maindoor-open #f)) + (if (and *target* (>= (-> self thresh w) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id sidekick-hint-rounddoor) "sksp0038" (the-as entity #f) *entity-pool* (game-task none))) + (when (ja-min? 0) + (set! (-> self root root-prim prim-core action) (collide-action solid)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible))) + (ja :num! (seek! 0.0)) + (ja-post) + (suspend)))) (defstate maindoor-open (maindoor) - :code (behavior ((arg0 symbol)) - (set! (-> self draw force-lod) 0) - (logclear! (-> self draw status) (draw-status hidden)) - (process-entity-status! self (entity-perm-status complete) #t) - (if arg0 - (ja :num-func num-func-identity :frame-num max) - ) - (set! (-> self root root-prim prim-core action) (collide-action)) - (set! (-> self root root-prim prim-core offense) (collide-offense no-offense)) - (while (not (ja-max? 0)) - (ja :num! (seek! max 2.0)) - (if (and (not arg0) (rand-vu-percent? 0.2)) - (spawn-projectile-blue *target*) - ) - (suspend) - ) - (logior! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior ((arg0 symbol)) + (set! (-> self draw force-lod) 0) + (logclear! (-> self draw status) (draw-status hidden)) + (process-entity-status! self (entity-perm-status complete) #t) + (if arg0 (ja :num-func num-func-identity :frame-num max)) + (set! (-> self root root-prim prim-core action) (collide-action)) + (set! (-> self root root-prim prim-core offense) (collide-offense no-offense)) + (while (not (ja-max? 0)) + (ja :num! (seek! max 2.0)) + (if (and (not arg0) (rand-vu-percent? 0.2)) (spawn-projectile-blue *target*)) + (suspend)) + (logior! (-> self draw status) (draw-status hidden)) + (loop + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this maindoor) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -967,38 +751,29 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *maindoor-sg* '()) (update-transforms! (-> this root)) (set! (-> this thresh w) 61440.0) (if (or (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (and (and *target* - (>= (-> this thresh w) (vector-vector-distance (-> this root trans) (-> *target* control trans))) - ) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - ) - (go maindoor-open #t) - (go maindoor-closed #t) - ) - (none) - ) + (and (and *target* (>= (-> this thresh w) (vector-vector-distance (-> this root trans) (-> *target* control trans)))) + (send-event *target* 'query 'powerup (pickup-type eco-blue)))) + (go maindoor-open #t) + (go maindoor-closed #t)) + (none)) -(deftype sidedoor (eco-door) - () - ) +(deftype sidedoor (eco-door) ()) - -(defskelgroup *sidedoor-sg* sidedoor sidedoor-geo-jg sidedoor-idle-ja - ((sidedoor-geo-mg (meters 20)) (sidedoor-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *sidedoor-sg* + sidedoor + sidedoor-geo-jg + sidedoor-idle-ja + ((sidedoor-geo-mg (meters 20)) (sidedoor-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defmethod eco-door-method-24 ((this sidedoor)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -1009,15 +784,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod eco-door-method-25 ((this sidedoor)) (initialize-skeleton this *sidedoor-sg* '()) @@ -1026,61 +798,49 @@ (set! (-> this speed) 6.0) (update-transforms! (-> this root)) 0 - (none) - ) + (none)) (deftype jngpusher (process-drawable) - ((root trsqv :override) - (sync sync-info :inline) - (back-prim collide-shape-prim) - ) + ((root trsqv :override) + (sync sync-info :inline) + (back-prim collide-shape-prim)) (:states - jngpusher-idle - ) - ) - + jngpusher-idle)) (defmethod relocate ((this jngpusher) (arg0 int)) - (if (nonzero? (-> this back-prim)) - (&+! (-> this back-prim) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this back-prim)) (&+! (-> this back-prim) arg0)) + (call-parent-method this arg0)) -(defskelgroup *jngpusher-sg* jngpusher 0 2 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 10)) +(defskelgroup *jngpusher-sg* + jngpusher + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defstate jngpusher-idle (jngpusher) :trans rider-trans - :code (behavior () - (loop - (ja :num-func num-func-identity - :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) (collide-kind)) - (set! (-> self back-prim collide-with) (collide-kind)) - 0 - ) - (else - (set! (-> self back-prim prim-core collide-as) (collide-kind ground-object)) - (set! (-> self back-prim collide-with) (collide-kind target)) - ) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop + (ja :num-func num-func-identity :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) (collide-kind)) + (set! (-> self back-prim collide-with) (collide-kind)) + 0) + (else + (set! (-> self back-prim prim-core collide-as) (collide-kind ground-object)) + (set! (-> self back-prim collide-with) (collide-kind target)))) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this jngpusher) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-kind ground-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -1095,8 +855,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 8192.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -1105,49 +864,41 @@ (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! (-> this back-prim) s2-1) - ) - ) + (set! (-> this 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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *jngpusher-sg* '()) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (go jngpusher-idle) - (none) - ) - -(deftype jungle-water (water-anim) - () - ) - - -(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) - ) - ) - ) + (none)) + +(deftype jungle-water (water-anim) ()) + +(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 water-vol-method-22 ((this jungle-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this 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) - (set! (-> v1-2 waveform) ripple-for-jungle-water) - ) - (none) - ) + (set! (-> v1-2 waveform) ripple-for-jungle-water)) + (none)) diff --git a/goal_src/jak1/levels/jungle/jungle-part.gc b/goal_src/jak1/levels/jungle/jungle-part.gc index 477d7b5a1f..058897856c 100644 --- a/goal_src/jak1/levels/jungle/jungle-part.gc +++ b/goal_src/jak1/levels/jungle/jungle-part.gc @@ -1,1752 +1,1745 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: jungle-part.gc -;; name in dgo: jungle-part -;; dgos: JUN, JUNGLE, L1 - ;; DECOMP BEGINS -(deftype jungle-part (part-spawner) - () - ) - +(deftype jungle-part (part-spawner) ()) (defpart 833 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.9 0.9) - (:x (meters -8) (meters 4)) - (:y (meters 47.5)) - (:z (meters -3.5) (meters 7)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.22)) - (:flags (bit2 bit12 bit14)) - (:launchrot-x (degrees -15) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.9 0.9) + (:x (meters -8) (meters 4)) + (:y (meters 47.5)) + (:z (meters -3.5) (meters 7)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.22)) + (:flags (bit2 bit12 bit14)) + (:launchrot-x (degrees -15) (degrees 30)))) (defpart 834 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.06) - (:x (meters 6) (meters 6)) - (:y (meters -6.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.026666667)) - (:vel-y (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.06) + (:x (meters 6) (meters 6)) + (:y (meters -6.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.026666667)) + (:vel-y (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)))) (defpart 835 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters 4) (meters 8)) - (:y (meters -1) (meters 1)) - (:z (meters -7) (meters 14)) - (:scale-x (meters 0.15) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.07666667)) - (:fade-r -0.42666668) - (:fade-g -0.42666668) - (:fade-b -0.21333334) - (:fade-a -0.28444445) - (:accel-y (meters -0.0022222223)) - (:timer (seconds 0.75)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 80)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters 4) (meters 8)) + (:y (meters -1) (meters 1)) + (:z (meters -7) (meters 14)) + (:scale-x (meters 0.15) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.07666667)) + (:fade-r -0.42666668) + (:fade-g -0.42666668) + (:fade-b -0.21333334) + (:fade-a -0.28444445) + (:accel-y (meters -0.0022222223)) + (:timer (seconds 0.75)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 80)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 836 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -8) (meters 4)) - (:y (meters 47.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.8)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -8) (meters 4)) + (:y (meters 47.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.8)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)))) (defpart 837 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -7) (meters 3.5)) - (:y (meters 47.5)) - (:z (meters -4) (meters 8)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.2)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -7) (meters 3.5)) + (:y (meters 47.5)) + (:z (meters -4) (meters 8)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.2)) + (:flags (bit2 bit12 bit14)))) (defpart 838 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.8 0.8) - (:x (meters -10) (meters 4)) - (:y (meters 20)) - (:z (meters -5.5) (meters 8.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.8)) - (:flags (bit2 bit12 bit14)) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.8 0.8) + (:x (meters -10) (meters 4)) + (:y (meters 20)) + (:z (meters -5.5) (meters 8.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.8)) + (:flags (bit2 bit12 bit14)) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 135)))) (defpart 839 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.4) - (:x (meters -9) (meters 3.5)) - (:y (meters 20)) - (:z (meters -5.5) (meters 8.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.4) + (:x (meters -9) (meters 3.5)) + (:y (meters 20)) + (:z (meters -5.5) (meters 8.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees 135)))) (defpart 840 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 4)) - (:y (meters 20)) - (:z (meters -6.5) (meters 11)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 4)) + (:y (meters 20)) + (:z (meters -6.5) (meters 11)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 135)))) (defpart 841 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.06) - (:x (meters 0) (meters 6)) - (:y (meters -4.5)) - (:z (meters -5.5) (meters 9.5)) - (:scale-x (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.026666667)) - (:vel-y (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.17066666) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 2.5)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.06) + (:x (meters 0) (meters 6)) + (:y (meters -4.5)) + (:z (meters -5.5) (meters 9.5)) + (:scale-x (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.026666667)) + (:vel-y (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.17066666) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 2.5)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees 135)))) (defpart 842 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.5) - (:x (meters 1) (meters 7)) - (:y (meters -1) (meters 1)) - (:z (meters -6) (meters 10)) - (:scale-x (meters 0.15) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.07666667)) - (:fade-r -0.42666668) - (:fade-g -0.42666668) - (:fade-b -0.21333334) - (:fade-a -0.28444445) - (:accel-y (meters -0.0022222223)) - (:timer (seconds 0.75)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 80)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.5) + (:x (meters 1) (meters 7)) + (:y (meters -1) (meters 1)) + (:z (meters -6) (meters 10)) + (:scale-x (meters 0.15) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.07666667)) + (:fade-r -0.42666668) + (:fade-g -0.42666668) + (:fade-b -0.21333334) + (:fade-a -0.28444445) + (:accel-y (meters -0.0022222223)) + (:timer (seconds 0.75)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 80)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 135)))) (defpart 843 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.0 0.6) - (:x (meters -9) (meters 4)) - (:y (meters 20)) - (:z (meters -4.5) (meters 13.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12 bit14)) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees -150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.0 0.6) + (:x (meters -9) (meters 4)) + (:y (meters 20)) + (:z (meters -4.5) (meters 13.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12 bit14)) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees -150)))) (defpart 844 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.9 0.4) - (:x (meters -8) (meters 3.5)) - (:y (meters 20)) - (:z (meters -4.5) (meters 13.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.3)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees -150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.9 0.4) + (:x (meters -8) (meters 3.5)) + (:y (meters 20)) + (:z (meters -4.5) (meters 13.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.3)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees -150)))) (defpart 845 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -9) (meters 4)) - (:y (meters 20)) - (:z (meters -4.5) (meters 13.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -9) (meters 4)) + (:y (meters 20)) + (:z (meters -4.5) (meters 13.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -150)))) (defpart 846 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.15) - (:x (meters 0) (meters 6)) - (:y (meters -3.4)) - (:z (meters -5) (meters 14.5)) - (:scale-x (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.026666667)) - (:vel-y (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 2)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees -150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.15) + (:x (meters 0) (meters 6)) + (:y (meters -3.4)) + (:z (meters -5) (meters 14.5)) + (:scale-x (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.026666667)) + (:vel-y (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees -150)))) (defpart 847 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 7)) - (:y (meters -1) (meters 1)) - (:z (meters -5) (meters 14.5)) - (:scale-x (meters 0.15) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.07666667)) - (:fade-r -0.42666668) - (:fade-g -0.42666668) - (:fade-b -0.21333334) - (:fade-a -0.28444445) - (:accel-y (meters -0.0022222223)) - (:timer (seconds 0.75)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 80)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 7)) + (:y (meters -1) (meters 1)) + (:z (meters -5) (meters 14.5)) + (:scale-x (meters 0.15) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.07666667)) + (:fade-r -0.42666668) + (:fade-g -0.42666668) + (:fade-b -0.21333334) + (:fade-a -0.28444445) + (:accel-y (meters -0.0022222223)) + (:timer (seconds 0.75)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 80)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -150)))) (defpart 848 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.8 0.8) - (:x (meters -12) (meters 4)) - (:y (meters 25)) - (:z (meters -6.5) (meters 3.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.8)) - (:flags (bit2 bit12 bit14)) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.8 0.8) + (:x (meters -12) (meters 4)) + (:y (meters 25)) + (:z (meters -6.5) (meters 3.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.8)) + (:flags (bit2 bit12 bit14)) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 135)))) (defpart 849 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.4) - (:x (meters -11) (meters 3.5)) - (:y (meters 25)) - (:z (meters -6.5) (meters 3.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.4) + (:x (meters -11) (meters 3.5)) + (:y (meters 25)) + (:z (meters -6.5) (meters 3.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees 135)))) (defpart 850 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 4)) - (:y (meters 25)) - (:z (meters -6.5) (meters 3.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 4)) + (:y (meters 25)) + (:z (meters -6.5) (meters 3.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 135)))) (defpart 851 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.05) - (:x (meters -3) (meters 6)) - (:y (meters -4.5)) - (:z (meters -7) (meters 4.5)) - (:scale-x (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.026666667)) - (:vel-y (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 2)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.05) + (:x (meters -3) (meters 6)) + (:y (meters -4.5)) + (:z (meters -7) (meters 4.5)) + (:scale-x (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.026666667)) + (:vel-y (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees 135)))) (defpart 852 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -2) (meters 7)) - (:y (meters -1) (meters 1)) - (:z (meters -6.5) (meters 3.5)) - (:scale-x (meters 0.15) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.07666667)) - (:fade-r -0.42666668) - (:fade-g -0.42666668) - (:fade-b -0.21333334) - (:fade-a -0.28444445) - (:accel-y (meters -0.0022222223)) - (:timer (seconds 0.75)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 80)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -2) (meters 7)) + (:y (meters -1) (meters 1)) + (:z (meters -6.5) (meters 3.5)) + (:scale-x (meters 0.15) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.07666667)) + (:fade-r -0.42666668) + (:fade-g -0.42666668) + (:fade-b -0.21333334) + (:fade-a -0.28444445) + (:accel-y (meters -0.0022222223)) + (:timer (seconds 0.75)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 80)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 135)))) (defpartgroup group-jungle-waterfall-1 :id 180 :flags (always-draw) :bounds (static-bspherem 0 25 0 100) - :parts ((sp-item 833) - (sp-item 833 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 834) - (sp-item 834 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 837 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 835 :fade-after (meters 70) :falloff-to (meters 70)) - (sp-item 836 :fade-after (meters 70) :falloff-to (meters 70)) - ) - ) + :parts + ((sp-item 833) + (sp-item 833 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 834) + (sp-item 834 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 837 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 835 :fade-after (meters 70) :falloff-to (meters 70)) + (sp-item 836 :fade-after (meters 70) :falloff-to (meters 70)))) (defpartgroup group-jungle-waterfall-2 :id 181 :flags (always-draw) :bounds (static-bspherem 2 9 4 90) - :parts ((sp-item 838) - (sp-item 838 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 841) - (sp-item 841 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 839 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 842 :fade-after (meters 90)) - (sp-item 840 :fade-after (meters 90)) - ) - ) + :parts + ((sp-item 838) + (sp-item 838 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 841) + (sp-item 841 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 839 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 842 :fade-after (meters 90)) + (sp-item 840 :fade-after (meters 90)))) (defpartgroup group-jungle-waterfall-3 :id 182 :flags (always-draw) :bounds (static-bspherem 0 8 0 90) - :parts ((sp-item 843) - (sp-item 843 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 846) - (sp-item 846 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 844) - (sp-item 847 :fade-after (meters 90)) - (sp-item 845 :fade-after (meters 90)) - ) - ) + :parts + ((sp-item 843) + (sp-item 843 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 846) + (sp-item 846 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 844) + (sp-item 847 :fade-after (meters 90)) + (sp-item 845 :fade-after (meters 90)))) (defpartgroup group-jungle-waterfall-4 :id 183 :flags (always-draw) :bounds (static-bspherem 0 10 8 90) - :parts ((sp-item 848) - (sp-item 848 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 851) - (sp-item 851 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 849 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 852 :fade-after (meters 90)) - (sp-item 850 :fade-after (meters 90)) - ) - ) + :parts + ((sp-item 848) + (sp-item 848 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 851) + (sp-item 851 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 849 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 852 :fade-after (meters 90)) + (sp-item 850 :fade-after (meters 90)))) (defpart 853 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1) - (:x (meters -70) (meters 100)) - (:y (meters 3.5) (meters 4)) - (:z (meters -30) (meters 52.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 0.0) - (:a 0.0) - (:vel-x (meters -0.005) 1 (meters 0.01)) - (:vel-y (meters 0.0013333333)) - (:vel-z (meters -0.005) 1 (meters 0.01)) - (:fade-a 0.85333335) - (:timer (seconds 11)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 854) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1) + (:x (meters -70) (meters 100)) + (:y (meters 3.5) (meters 4)) + (:z (meters -30) (meters 52.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 0.0) + (:a 0.0) + (:vel-x (meters -0.005) 1 (meters 0.01)) + (:vel-y (meters 0.0013333333)) + (:vel-z (meters -0.005) 1 (meters 0.01)) + (:fade-a 0.85333335) + (:timer (seconds 11)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 854))) (defpart 854 - :init-specs ((:scalevel-x (meters 0)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:fade-a 0.0) - (:accel-y (meters -0.000050000002)) - (:next-time (seconds 2)) - (:next-launcher 855) - ) - ) + :init-specs + ((:scalevel-x (meters 0)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:fade-a 0.0) + (:accel-y (meters -0.000050000002)) + (:next-time (seconds 2)) + (:next-launcher 855))) (defpart 855 - :init-specs ((:scalevel-x (meters -0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.64) - (:fade-g -0.85333335) - (:accel-y (meters 0.000050000002)) - (:next-time (seconds 0.5)) - (:next-launcher 856) - ) - ) + :init-specs + ((:scalevel-x (meters -0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.64) + (:fade-g -0.85333335) + (:accel-y (meters 0.000050000002)) + (:next-time (seconds 0.5)) + (:next-launcher 856))) (defpart 856 - :init-specs ((:scalevel-x (meters 0)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:next-time (seconds 1)) - (:next-launcher 857) - ) - ) + :init-specs + ((:scalevel-x (meters 0)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:next-time (seconds 1)) + (:next-launcher 857))) (defpart 857 - :init-specs ((:scalevel-x (meters 0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.64) - (:fade-g 0.85333335) - (:next-time (seconds 0.5)) - (:next-launcher 858) - ) - ) + :init-specs + ((:scalevel-x (meters 0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.64) + (:fade-g 0.85333335) + (:next-time (seconds 0.5)) + (:next-launcher 858))) (defpart 858 - :init-specs ((:scalevel-x (meters 0)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:fade-a 0.0) - (:accel-y (meters -0.000050000002)) - (:next-time (seconds 1)) - (:next-launcher 859) - ) - ) + :init-specs + ((:scalevel-x (meters 0)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:fade-a 0.0) + (:accel-y (meters -0.000050000002)) + (:next-time (seconds 1)) + (:next-launcher 859))) (defpart 859 - :init-specs ((:scalevel-x (meters -0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.64) - (:fade-g -0.85333335) - (:accel-y (meters 0.000050000002)) - (:next-time (seconds 0.5)) - (:next-launcher 860) - ) - ) + :init-specs + ((:scalevel-x (meters -0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.64) + (:fade-g -0.85333335) + (:accel-y (meters 0.000050000002)) + (:next-time (seconds 0.5)) + (:next-launcher 860))) (defpart 860 - :init-specs ((:scalevel-x (meters 0)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:next-time (seconds 1)) - (:next-launcher 861) - ) - ) + :init-specs + ((:scalevel-x (meters 0)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:next-time (seconds 1)) + (:next-launcher 861))) (defpart 861 - :init-specs ((:scalevel-x (meters 0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.64) - (:fade-g 0.85333335) - (:next-time (seconds 0.5)) - (:next-launcher 862) - ) - ) + :init-specs + ((:scalevel-x (meters 0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.64) + (:fade-g 0.85333335) + (:next-time (seconds 0.5)) + (:next-launcher 862))) (defpart 862 - :init-specs ((:scalevel-x (meters 0)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:fade-a 0.0) - (:accel-y (meters -0.000050000002)) - (:next-time (seconds 2)) - (:next-launcher 863) - ) - ) + :init-specs + ((:scalevel-x (meters 0)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:fade-a 0.0) + (:accel-y (meters -0.000050000002)) + (:next-time (seconds 2)) + (:next-launcher 863))) (defpart 863 - :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x) (:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.8)) - ) + :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x) (:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.8))) (defpart 864 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.02) - (:x (meters -55) (meters 75)) - (:y (meters 28)) - (:z (meters -35) (meters 60)) - (:scale-x (meters 15) (meters 15)) - (:rot-x 4) - (:rot-z (degrees -120) (degrees 20)) - (:scale-y (meters 2) (meters 2)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.0007324219)) - (:rotvel-z (degrees -0.0033333332) (degrees 0.0066666664)) - (:scalevel-y (meters 0.0007324219)) - (:fade-a 0.02) - (:timer (seconds 8)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 4)) - (:next-launcher 865) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.02) + (:x (meters -55) (meters 75)) + (:y (meters 28)) + (:z (meters -35) (meters 60)) + (:scale-x (meters 15) (meters 15)) + (:rot-x 4) + (:rot-z (degrees -120) (degrees 20)) + (:scale-y (meters 2) (meters 2)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.0007324219)) + (:rotvel-z (degrees -0.0033333332) (degrees 0.0066666664)) + (:scalevel-y (meters 0.0007324219)) + (:fade-a 0.02) + (:timer (seconds 8)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 4)) + (:next-launcher 865) + (:rotate-y (degrees 0)))) (defpart 865 - :init-specs ((:fade-a -0.02)) - ) + :init-specs ((:fade-a -0.02))) (defpartgroup group-jungle-dapple-light-1 :id 184 :bounds (static-bspherem 0 0 0 55) - :parts ((sp-item 864 :hour-mask #b111111100000000000111111) - (sp-item 853 :fade-after (meters 130) :falloff-to (meters 160) :hour-mask #b11111111111000000) - ) - ) + :parts + ((sp-item 864 :hour-mask #b111111100000000000111111) + (sp-item 853 :fade-after (meters 130) :falloff-to (meters 160) :hour-mask #b11111111111000000))) (defpartgroup group-jungle-tower-spewer :id 185 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 866 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 866 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 867 :fade-after (meters 300) :falloff-to (meters 300)) - (sp-item 868 :fade-after (meters 400) :falloff-to (meters 400)) - ) - ) + :parts + ((sp-item 866 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 866 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 867 :fade-after (meters 300) :falloff-to (meters 300)) + (sp-item 868 :fade-after (meters 400) :falloff-to (meters 400)))) (defpart 866 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.25 1.0) - (:y (meters 1.6) (meters 2)) - (:scale-x (meters 5) (meters 1)) - (:rot-x 4) - (:rot-z (degrees -90)) - (:scale-y (meters 1) (meters 0.7)) - (:r 32.0 32.0) - (:g 32.0 32.0) - (:b 128.0 64.0) - (:a 128.0) - (:fade-a -0.8) - (:timer (seconds 0.6)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.067)) - (:next-launcher 869) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 5) (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.25 1.0) + (:y (meters 1.6) (meters 2)) + (:scale-x (meters 5) (meters 1)) + (:rot-x 4) + (:rot-z (degrees -90)) + (:scale-y (meters 1) (meters 0.7)) + (:r 32.0 32.0) + (:g 32.0 32.0) + (:b 128.0 64.0) + (:a 128.0) + (:fade-a -0.8) + (:timer (seconds 0.6)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.067)) + (:next-launcher 869) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 5) (meters 2)))) (defpart 869 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -0.4) (:fade-g -0.4) (:fade-a -0.93333334)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -0.4) (:fade-g -0.4) (:fade-a -0.93333334))) (defpart 867 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 2.5) - (:y (meters 0.75)) - (:scale-x (meters 3) (meters 2)) - (:scale-y (meters 6.5) (meters 1)) - (:r 32.0) - (:g 32.0 16.0) - (:b 128.0 128.0) - (:a 32.0 64.0) - (:fade-a -1.28) - (:timer (seconds 0.25)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 2.5) + (:y (meters 0.75)) + (:scale-x (meters 3) (meters 2)) + (:scale-y (meters 6.5) (meters 1)) + (:r 32.0) + (:g 32.0 16.0) + (:b 128.0 128.0) + (:a 32.0 64.0) + (:fade-a -1.28) + (:timer (seconds 0.25)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 7)))) (defpart 868 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1 1.25) - (:y (meters 0.75)) - (:scale-x (meters 3.5) (meters 2)) - (:rot-z (degrees 0) 1 (degrees 180)) - (:scale-y (meters 6.5) (meters 1.25)) - (:r 32.0) - (:g 32.0) - (:b 64.0 64.0) - (:a 128.0 64.0) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a -0.64) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1 1.25) + (:y (meters 0.75)) + (:scale-x (meters 3.5) (meters 2)) + (:rot-z (degrees 0) 1 (degrees 180)) + (:scale-y (meters 6.5) (meters 1.25)) + (:r 32.0) + (:g 32.0) + (:b 64.0 64.0) + (:a 128.0 64.0) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a -0.64) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 7)))) (defpart 870 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 0.5) - (:y (meters 0.75)) - (:scale-x (meters 4)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3) (meters 1)) - (:r 192.0) - (:g 192.0) - (:b 0.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 0.35555556) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.3)) - (:next-launcher 871) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 0.5) + (:y (meters 0.75)) + (:scale-x (meters 4)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3) (meters 1)) + (:r 192.0) + (:g 192.0) + (:b 0.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 0.35555556) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.3)) + (:next-launcher 871) + (:rotate-y (degrees 0)))) (defpart 871 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpartgroup group-jungle-lurkermachine-3 :id 186 :bounds (static-bspherem 0 6 6 16) - :parts ((sp-item 872 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 1) :length (seconds 0.86)) - (sp-item 872 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 0.675) :length (seconds 0.12)) - (sp-item 872 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127)) - (sp-item 872 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.857) :length (seconds 0.355)) - (sp-item 872 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.127) :length (seconds 0.137)) - (sp-item 873 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.777) :offset 150) - (sp-item 873 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.675) :length (seconds 0.12) :offset 150) - (sp-item 873 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127) :offset 150) - (sp-item 873 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.857) :length (seconds 0.355) :offset 150) - (sp-item 873 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.127) :length (seconds 0.137) :offset 150) - (sp-item 874 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.79) :offset 255) - (sp-item 874 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.675) :length (seconds 0.12) :offset 255) - (sp-item 874 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127) :offset 255) - (sp-item 874 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.857) :length (seconds 0.355) :offset 255) - (sp-item 874 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.127) :length (seconds 0.137) :offset 255) - (sp-item 875 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) - (sp-item 875 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 875 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 876 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 877 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.125) :length (seconds 0.25)) - (sp-item 877 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.27) :length (seconds 0.32)) - (sp-item 877 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.92) :length (seconds 0.2)) - (sp-item 878 :fade-after (meters 100) :falloff-to (meters 120)) - (sp-item 879 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.98) :length (seconds 0.25)) - (sp-item 879 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 6.167) :length (seconds 0.32)) - (sp-item 879 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.05) :length (seconds 0.2)) - (sp-item 880 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 881 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.98) :length (seconds 0.25)) - (sp-item 881 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.667) :length (seconds 0.32)) - (sp-item 881 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 5.25) :length (seconds 0.2)) - (sp-item 882 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 883 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.06) :length (seconds 0.25)) - (sp-item 883 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.605) :length (seconds 0.32)) - (sp-item 883 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.847) :length (seconds 0.2)) - (sp-item 884 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 885 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.66) :length (seconds 0.25)) - (sp-item 885 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.205) :length (seconds 0.32)) - (sp-item 885 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.147) :length (seconds 0.2)) - (sp-item 886 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 887 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) - (sp-item 887 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 887 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 888 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 889 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.98) :length (seconds 0.25)) - (sp-item 889 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 6.167) :length (seconds 0.32)) - (sp-item 889 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.05) :length (seconds 0.2)) - (sp-item 890 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 891 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.98) :length (seconds 0.25)) - (sp-item 891 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.667) :length (seconds 0.32)) - (sp-item 891 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 5.25) :length (seconds 0.2)) - (sp-item 892 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 893 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.125) :length (seconds 0.25)) - (sp-item 893 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.27) :length (seconds 0.32)) - (sp-item 893 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.92) :length (seconds 0.2)) - (sp-item 894 :fade-after (meters 100) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 872 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 1) :length (seconds 0.86)) + (sp-item 872 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 0.675) :length (seconds 0.12)) + (sp-item 872 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127)) + (sp-item 872 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.857) :length (seconds 0.355)) + (sp-item 872 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.127) :length (seconds 0.137)) + (sp-item 873 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.777) :offset 150) + (sp-item 873 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 0.675) + :length (seconds 0.12) + :offset 150) + (sp-item 873 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 1.5) + :length (seconds 0.127) + :offset 150) + (sp-item 873 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 2.857) + :length (seconds 0.355) + :offset 150) + (sp-item 873 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 4.127) + :length (seconds 0.137) + :offset 150) + (sp-item 874 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.79) :offset 255) + (sp-item 874 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 0.675) + :length (seconds 0.12) + :offset 255) + (sp-item 874 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 1.5) + :length (seconds 0.127) + :offset 255) + (sp-item 874 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 2.857) + :length (seconds 0.355) + :offset 255) + (sp-item 874 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 4.127) + :length (seconds 0.137) + :offset 255) + (sp-item 875 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 875 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 875 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 876 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 877 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.125) :length (seconds 0.25)) + (sp-item 877 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.27) :length (seconds 0.32)) + (sp-item 877 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.92) :length (seconds 0.2)) + (sp-item 878 :fade-after (meters 100) :falloff-to (meters 120)) + (sp-item 879 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.98) :length (seconds 0.25)) + (sp-item 879 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 6.167) :length (seconds 0.32)) + (sp-item 879 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.05) :length (seconds 0.2)) + (sp-item 880 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 881 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.98) :length (seconds 0.25)) + (sp-item 881 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.667) :length (seconds 0.32)) + (sp-item 881 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 5.25) :length (seconds 0.2)) + (sp-item 882 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 883 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.06) :length (seconds 0.25)) + (sp-item 883 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.605) :length (seconds 0.32)) + (sp-item 883 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.847) :length (seconds 0.2)) + (sp-item 884 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 885 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.66) :length (seconds 0.25)) + (sp-item 885 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.205) :length (seconds 0.32)) + (sp-item 885 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.147) :length (seconds 0.2)) + (sp-item 886 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 887 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 887 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 887 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 888 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 889 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.98) :length (seconds 0.25)) + (sp-item 889 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 6.167) :length (seconds 0.32)) + (sp-item 889 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.05) :length (seconds 0.2)) + (sp-item 890 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 891 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.98) :length (seconds 0.25)) + (sp-item 891 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.667) :length (seconds 0.32)) + (sp-item 891 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 5.25) :length (seconds 0.2)) + (sp-item 892 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 893 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.125) :length (seconds 0.25)) + (sp-item 893 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.27) :length (seconds 0.32)) + (sp-item 893 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 5.92) :length (seconds 0.2)) + (sp-item 894 :fade-after (meters 100) :falloff-to (meters 120)))) (defpart 894 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters 3.8)) - (:y (meters 4.5)) - (:z (meters 6)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 96.0) - (:vel-x (meters 0.0033333334) (meters 0.0033333334)) - (:vel-y (meters -0.006666667)) - (:vel-z (meters 0.013333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters 3.8)) + (:y (meters 4.5)) + (:z (meters 6)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 96.0) + (:vel-x (meters 0.0033333334) (meters 0.0033333334)) + (:vel-y (meters -0.006666667)) + (:vel-z (meters 0.013333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 893 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 3.8)) - (:y (meters 4.5)) - (:z (meters 6)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 96.0) - (:vel-x (meters 0.02) (meters 0.0033333334)) - (:vel-y (meters -0.02)) - (:vel-z (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 3.8)) + (:y (meters 4.5)) + (:z (meters 6)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 96.0) + (:vel-x (meters 0.02) (meters 0.0033333334)) + (:vel-y (meters -0.02)) + (:vel-z (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 892 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters -2)) - (:y (meters 4.7)) - (:z (meters 6.7)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0) (meters 0.0033333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters 0.013333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-b -1.3066666) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters -2)) + (:y (meters 4.7)) + (:z (meters 6.7)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0) (meters 0.0033333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters 0.013333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-b -1.3066666) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 891 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -2)) - (:y (meters 4.7)) - (:z (meters 6.7)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0.006666667) (meters 0.0033333334)) - (:vel-y (meters -0.01)) - (:vel-z (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.21333334) - (:fade-b -0.6533333) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -2)) + (:y (meters 4.7)) + (:z (meters 6.7)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0.006666667) (meters 0.0033333334)) + (:vel-y (meters -0.01)) + (:vel-z (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.21333334) + (:fade-b -0.6533333) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 890 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters -6.5)) - (:y (meters 2.3)) - (:z (meters 5.9)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0) (meters 0.0033333334)) - (:vel-y (meters -0.013333334)) - (:vel-z (meters 0.013333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-b -1.3066666) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters -6.5)) + (:y (meters 2.3)) + (:z (meters 5.9)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0) (meters 0.0033333334)) + (:vel-y (meters -0.013333334)) + (:vel-z (meters 0.013333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-b -1.3066666) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 889 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -6.5)) - (:y (meters 2.3)) - (:z (meters 5.9)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0.006666667) (meters 0.0033333334)) - (:vel-y (meters -0.06666667)) - (:vel-z (meters 0.026666667) (meters 0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.21333334) - (:fade-b -0.6533333) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.94) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.12)) - (:next-launcher 895) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -6.5)) + (:y (meters 2.3)) + (:z (meters 5.9)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0.006666667) (meters 0.0033333334)) + (:vel-y (meters -0.06666667)) + (:vel-z (meters 0.026666667) (meters 0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.21333334) + (:fade-b -0.6533333) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.12)) + (:next-launcher 895) + (:rotate-y (degrees 35)))) (defpart 888 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters -6.3)) - (:y (meters 6.8)) - (:z (meters 8)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 96.0) - (:vel-x (meters 0) (meters 0.0033333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0.013333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters -6.3)) + (:y (meters 6.8)) + (:z (meters 8)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 96.0) + (:vel-x (meters 0) (meters 0.0033333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0.013333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 887 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -6.3)) - (:y (meters 6.8)) - (:z (meters 8)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 96.0) - (:vel-x (meters 0.006666667) (meters 0.0033333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -6.3)) + (:y (meters 6.8)) + (:z (meters 8)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 96.0) + (:vel-x (meters 0.006666667) (meters 0.0033333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 886 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters 8.7)) - (:y (meters 6.8)) - (:z (meters 2.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0.01) (meters 0.0033333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-b -1.3066666) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters 8.7)) + (:y (meters 6.8)) + (:z (meters 2.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0.01) (meters 0.0033333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-b -1.3066666) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 885 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 8.7)) - (:y (meters 6.8)) - (:z (meters 2.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0.026666667) (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters -0.01) (meters -0.01)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.21333334) - (:fade-b -0.6533333) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.94) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 8.7)) + (:y (meters 6.8)) + (:z (meters 2.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0.026666667) (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters -0.01) (meters -0.01)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.21333334) + (:fade-b -0.6533333) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 884 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters 6.9)) - (:y (meters 5.3)) - (:z (meters -5.2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 96.0) - (:vel-x (meters 0.01) (meters 0.0033333334)) - (:vel-y (meters 0)) - (:vel-z (meters -0.01) (meters -0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters 6.9)) + (:y (meters 5.3)) + (:z (meters -5.2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 96.0) + (:vel-x (meters 0.01) (meters 0.0033333334)) + (:vel-y (meters 0)) + (:vel-z (meters -0.01) (meters -0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 883 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 6.9)) - (:y (meters 5.3)) - (:z (meters -5.2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 96.0) - (:vel-x (meters 0.04) (meters 0.02)) - (:vel-y (meters -0.01)) - (:vel-z (meters -0.04) (meters -0.02)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.94) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 6.9)) + (:y (meters 5.3)) + (:z (meters -5.2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 96.0) + (:vel-x (meters 0.04) (meters 0.02)) + (:vel-y (meters -0.01)) + (:vel-z (meters -0.04) (meters -0.02)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 882 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters 2.9)) - (:y (meters 8.9)) - (:z (meters -7.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0.0033333334) (meters 0.0033333334)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.013333334) (meters -0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-b -1.3066666) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters 2.9)) + (:y (meters 8.9)) + (:z (meters -7.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0.0033333334) (meters 0.0033333334)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.013333334) (meters -0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-b -1.3066666) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 881 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 2.9)) - (:y (meters 8.9)) - (:z (meters -7.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0.016666668) (meters 0.0033333334)) - (:vel-y (meters 0.025)) - (:vel-z (meters -0.026666667) (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.21333334) - (:fade-b -0.6533333) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.94) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 2.9)) + (:y (meters 8.9)) + (:z (meters -7.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0.016666668) (meters 0.0033333334)) + (:vel-y (meters 0.025)) + (:vel-z (meters -0.026666667) (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.21333334) + (:fade-b -0.6533333) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 880 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters -7.7)) - (:y (meters 2.3)) - (:z (meters -5.1)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters -0.0033333334) (meters 0.0033333334)) - (:vel-y (meters -0.013333334)) - (:vel-z (meters -0.013333334) (meters -0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-b -1.3066666) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters -7.7)) + (:y (meters 2.3)) + (:z (meters -5.1)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters -0.0033333334) (meters 0.0033333334)) + (:vel-y (meters -0.013333334)) + (:vel-z (meters -0.013333334) (meters -0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-b -1.3066666) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 879 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -7.7)) - (:y (meters 2.3)) - (:z (meters -5.1)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters -0.0033333334) (meters 0.0033333334)) - (:vel-y (meters -0.086666666)) - (:vel-z (meters -0.026666667) (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.21333334) - (:fade-b -0.6533333) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.94) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.085)) - (:next-launcher 895) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -7.7)) + (:y (meters 2.3)) + (:z (meters -5.1)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters -0.0033333334) (meters 0.0033333334)) + (:vel-y (meters -0.086666666)) + (:vel-z (meters -0.026666667) (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.21333334) + (:fade-b -0.6533333) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.085)) + (:next-launcher 895) + (:rotate-y (degrees 35)))) (defpart 895 - :init-specs ((:vel-y (meters 0))) - ) + :init-specs ((:vel-y (meters 0)))) (defpart 878 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters -4.2)) - (:y (meters 10.9)) - (:z (meters -5.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 96.0) - (:vel-x (meters -0.0033333334) (meters 0.0033333334)) - (:vel-y (meters 0.013333334)) - (:vel-z (meters -0.013333334) (meters -0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters -4.2)) + (:y (meters 10.9)) + (:z (meters -5.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 96.0) + (:vel-x (meters -0.0033333334) (meters 0.0033333334)) + (:vel-y (meters 0.013333334)) + (:vel-z (meters -0.013333334) (meters -0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 877 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -4.2)) - (:y (meters 10.9)) - (:z (meters -5.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 96.0) - (:vel-x (meters -0.0033333334) (meters 0.0033333334)) - (:vel-y (meters 0.06666667)) - (:vel-z (meters -0.026666667) (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.94) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -4.2)) + (:y (meters 10.9)) + (:z (meters -5.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 96.0) + (:vel-x (meters -0.0033333334) (meters 0.0033333334)) + (:vel-y (meters 0.06666667)) + (:vel-z (meters -0.026666667) (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.94) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 876 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters -8.2)) - (:y (meters 6.8)) - (:z (meters -7)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters -0.0033333334) (meters 0.0033333334)) - (:vel-y (meters 0)) - (:vel-z (meters -0.013333334) (meters -0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.42666668) - (:fade-b -1.3066666) - (:fade-a -0.85333335) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters -8.2)) + (:y (meters 6.8)) + (:z (meters -7)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters -0.0033333334) (meters 0.0033333334)) + (:vel-y (meters 0)) + (:vel-z (meters -0.013333334) (meters -0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.42666668) + (:fade-b -1.3066666) + (:fade-a -0.85333335) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 875 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -8.2)) - (:y (meters 6.8)) - (:z (meters -7)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 196.0 64.0) - (:a 32.0 96.0) - (:vel-x (meters -0.0033333334) (meters 0.0033333334)) - (:vel-y (meters 0)) - (:vel-z (meters -0.053333335) (meters -0.026666667)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.21333334) - (:fade-b -0.6533333) - (:fade-a -0.42666668) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -8.2)) + (:y (meters 6.8)) + (:z (meters -7)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 196.0 64.0) + (:a 32.0 96.0) + (:vel-x (meters -0.0033333334) (meters 0.0033333334)) + (:vel-y (meters 0)) + (:vel-z (meters -0.053333335) (meters -0.026666667)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.21333334) + (:fade-b -0.6533333) + (:fade-a -0.42666668) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 35)))) (defpart 872 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -2.2) (meters 2.4)) - (:y (meters 5.5) (meters 1.3)) - (:z (meters -7.4)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 53)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -2.2) (meters 2.4)) + (:y (meters 5.5) (meters 1.3)) + (:z (meters -7.4)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 53)))) (defpart 873 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -3.75) (meters 2.4)) - (:y (meters 8.5) (meters 1.3)) - (:z (meters 6)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.013333334)) - (:vel-z (meters 0.013333334) (meters 0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -3.75) (meters 2.4)) + (:y (meters 8.5) (meters 1.3)) + (:z (meters 6)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.013333334)) + (:vel-z (meters 0.013333334) (meters 0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 40)))) (defpart 874 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters -10.5) (meters 0.8)) - (:y (meters 1.3)) - (:z (meters -1.3)) - (:scale-x (meters 0.75) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.013333334)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters -10.5) (meters 0.8)) + (:y (meters 1.3)) + (:z (meters -1.3)) + (:scale-x (meters 0.75) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.013333334)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpartgroup group-jungle-lurkermachine-1 :id 187 :bounds (static-bspherem 0 10 0 12) - :parts ((sp-item 896 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 1) :length (seconds 0.86)) - (sp-item 896 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 0.675) :length (seconds 0.12)) - (sp-item 896 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127)) - (sp-item 896 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.857) :length (seconds 0.355)) - (sp-item 896 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.127) :length (seconds 0.137)) - (sp-item 897 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.777) :offset 198) - (sp-item 897 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.675) :length (seconds 0.12) :offset 198) - (sp-item 897 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127) :offset 198) - (sp-item 897 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.857) :length (seconds 0.355) :offset 198) - (sp-item 897 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.127) :length (seconds 0.137) :offset 198) - (sp-item 898 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.777) :offset 99) - (sp-item 898 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.675) :length (seconds 0.12) :offset 99) - (sp-item 898 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127) :offset 99) - (sp-item 898 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.857) :length (seconds 0.355) :offset 99) - (sp-item 898 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.127) :length (seconds 0.137) :offset 99) - ) - ) + :parts + ((sp-item 896 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 1) :length (seconds 0.86)) + (sp-item 896 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 0.675) :length (seconds 0.12)) + (sp-item 896 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127)) + (sp-item 896 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.857) :length (seconds 0.355)) + (sp-item 896 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.127) :length (seconds 0.137)) + (sp-item 897 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.777) :offset 198) + (sp-item 897 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 0.675) + :length (seconds 0.12) + :offset 198) + (sp-item 897 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 1.5) + :length (seconds 0.127) + :offset 198) + (sp-item 897 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 2.857) + :length (seconds 0.355) + :offset 198) + (sp-item 897 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 4.127) + :length (seconds 0.137) + :offset 198) + (sp-item 898 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.777) :offset 99) + (sp-item 898 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 0.675) + :length (seconds 0.12) + :offset 99) + (sp-item 898 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.127) :offset 99) + (sp-item 898 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 2.857) + :length (seconds 0.355) + :offset 99) + (sp-item 898 + :fade-after (meters 100) + :falloff-to (meters 120) + :period (seconds 4.127) + :length (seconds 0.137) + :offset 99))) (defpart 896 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 1) (meters 2.2)) - (:y (meters 9.4) (meters 1.3)) - (:z (meters -6.8)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 53)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 1) (meters 2.2)) + (:y (meters 9.4) (meters 1.3)) + (:z (meters -6.8)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 53)))) (defpart 897 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -1.2) (meters 2.4)) - (:y (meters 8.5) (meters 1.3)) - (:z (meters 7.3)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.013333334)) - (:vel-z (meters 0.013333334) (meters 0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -1.2) (meters 2.4)) + (:y (meters 8.5) (meters 1.3)) + (:z (meters 7.3)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.013333334)) + (:vel-z (meters 0.013333334) (meters 0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 40)))) (defpart 898 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 4.4)) - (:y (meters 8.5) (meters 1.3)) - (:z (meters -1.2) (meters 2.4)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters 0.013333334) (meters 0.026666667)) - (:vel-y (meters 0.013333334)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 4.4)) + (:y (meters 8.5) (meters 1.3)) + (:z (meters -1.2) (meters 2.4)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters 0.013333334) (meters 0.026666667)) + (:vel-y (meters 0.013333334)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 40)))) diff --git a/goal_src/jak1/levels/jungle/junglefish.gc b/goal_src/jak1/levels/jungle/junglefish.gc index 4ec2b15144..7aae5806a2 100644 --- a/goal_src/jak1/levels/jungle/junglefish.gc +++ b/goal_src/jak1/levels/jungle/junglefish.gc @@ -1,25 +1,19 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/common-obs/nav-enemy.gc") (require "engine/common-obs/water.gc") -;; name: junglefish.gc -;; name in dgo: junglefish -;; dgos: JUN, JUNGLE, L1 - ;; DECOMP BEGINS -(deftype junglefish (nav-enemy) - () - ) +(deftype junglefish (nav-enemy) ()) - -(defskelgroup *junglefish-sg* junglefish junglefish-lod0-jg junglefish-swim-ja - ((junglefish-lod0-mg (meters 20)) (junglefish-lod1-mg (meters 40)) (junglefish-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.5) - ) +(defskelgroup *junglefish-sg* + junglefish + junglefish-lod0-jg + junglefish-swim-ja + ((junglefish-lod0-mg (meters 20)) (junglefish-lod1-mg (meters 40)) (junglefish-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.5)) nav-enemy-default-event-handler @@ -27,217 +21,180 @@ nav-enemy-default-event-handler (water-control-method-10 (-> this water)) (call-parent-method this) 0 - (none) - ) + (none)) (defstate nav-enemy-patrol (junglefish) :virtual #t :event nav-enemy-default-event-handler - :exit (behavior () - (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (when (nav-enemy-rnd-go-idle? 0.2) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (set! (-> self target-speed) 0.0) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) + :exit + (behavior () + (set! (-> self target-speed) (-> self nav-info walk-travel-speed))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (loop + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) - (ja-blend-eval) (suspend) - (ja :num! (seek! max f30-0)) - ) - (until (not (nav-enemy-rnd-go-idle? 0.2)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) + (ja :num! (seek! max f30-0))) + (when (nav-enemy-rnd-go-idle? 0.2) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.6)) + (set! (-> self target-speed) 0.0) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) + (ja-blend-eval) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! max f30-0))) + (until (not (nav-enemy-rnd-go-idle? 0.2)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.6)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max f30-0)))))))) (defstate nav-enemy-notice (junglefish) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-chase))) (defstate nav-enemy-chase (junglefish) :virtual #t :event nav-enemy-default-event-handler - :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - (if (and *target* (>= 8192.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (go-virtual nav-enemy-attack) - ) - ) - ) + :trans + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) + (if (and *target* (>= 8192.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-attack)))) (defstate nav-enemy-stop-chase (junglefish) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-stare (junglefish) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-give-up (junglefish) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-attack (junglefish) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! junglefish-chomp-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-chase-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! junglefish-chomp-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-chase)) + :post nav-enemy-chase-post) (defstate nav-enemy-victory (junglefish) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! junglefish-swim-ja :num! (seek! max 2.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 2.0)) - ) - (ja-no-eval :group! junglefish-swim-ja :num! (seek! max 2.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 2.0)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - -(define *junglefish-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 4 - :walk-anim 4 - :turn-anim -1 - :notice-anim 4 - :run-anim 4 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 4 - :taunt-anim 4 - :die-anim 6 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 5.5) - :run-rotate-speed (degrees 720) - :run-acceleration (meters 6) - :run-turn-time (seconds 0.15) - :walk-travel-speed (meters 4) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 6) - :walk-turn-time (seconds 0.15) - :attack-shove-back (meters 1) - :attack-shove-up (meters 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 25) - :stop-chase-distance (meters 35) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #f - :move-to-ground #f - :hover-if-no-ground #f - :use-momentum #t - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! junglefish-swim-ja :num! (seek! max 2.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 2.0))) + (ja-no-eval :group! junglefish-swim-ja :num! (seek! max 2.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 2.0))) + (go-virtual nav-enemy-patrol))) + +(define *junglefish-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 4 + :walk-anim 4 + :turn-anim -1 + :notice-anim 4 + :run-anim 4 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 4 + :taunt-anim 4 + :die-anim 6 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 5.5) + :run-rotate-speed (degrees 720) + :run-acceleration (meters 6) + :run-turn-time (seconds 0.15) + :walk-travel-speed (meters 4) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 6) + :walk-turn-time (seconds 0.15) + :attack-shove-back (meters 1) + :attack-shove-up (meters 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 25) + :stop-chase-distance (meters 35) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #f + :move-to-ground #f + :hover-if-no-ground #f + :use-momentum #t + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this junglefish) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 3276.8 0.0 2457.6) - (set-root-prim! s4-0 s3-0) - ) + (set-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! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *junglefish-sg* '()) (init-defaults! this *junglefish-nav-enemy-info*) @@ -247,5 +204,4 @@ nav-enemy-default-event-handler (set! (-> this water ripple-size) 5734.4) (set! (-> this collide-info trans y) (+ -4096.0 (-> this water height))) (go (method-of-object this nav-enemy-idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungle/junglesnake.gc b/goal_src/jak1/levels/jungle/junglesnake.gc index ff19e4dbf5..6082a356a0 100644 --- a/goal_src/jak1/levels/jungle/junglesnake.gc +++ b/goal_src/jak1/levels/jungle/junglesnake.gc @@ -1,228 +1,158 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUN.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: junglesnake.gc -;; name in dgo: junglesnake -;; dgos: JUN, JUNGLE, L1 - ;; DECOMP BEGINS -(defskelgroup *junglesnake-sg* junglesnake junglesnake-lod0-jg junglesnake-idle-ja - ((junglesnake-lod0-mg (meters 999999))) - :bounds (static-spherem 0 14 0 18) - :longest-edge (meters 2.5) - ) +(defskelgroup *junglesnake-sg* + junglesnake + junglesnake-lod0-jg + junglesnake-idle-ja + ((junglesnake-lod0-mg (meters 999999))) + :bounds (static-spherem 0 14 0 18) + :longest-edge (meters 2.5)) (defpartgroup group-junglesnake-dropping-down :id 173 :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 799 :period (seconds 1) :length (seconds 0.5))) - ) + :parts ((sp-item 799 :period (seconds 1) :length (seconds 0.5)))) (defpart 799 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:x (meters -9) (meters 18)) - (:y (meters -6)) - (:z (meters -9) (meters 18)) - (:scale-x (meters 0.1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 40.0) - (:g 32.0 40.0) - (:b 32.0 40.0) - (:a 128.0) - (:vel-y (meters 0) (meters -0.04)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:accel-y (meters -0.0016666667) (meters -0.00016666666)) - (:timer (seconds 1.3)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:x (meters -9) (meters 18)) + (:y (meters -6)) + (:z (meters -9) (meters 18)) + (:scale-x (meters 0.1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 40.0) + (:g 32.0 40.0) + (:b 32.0 40.0) + (:a 128.0) + (:vel-y (meters 0) (meters -0.04)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:accel-y (meters -0.0016666667) (meters -0.00016666666)) + (:timer (seconds 1.3)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop))) (deftype junglesnake-twist-joint (structure) - ((joint-index int32) - (ry float) - (drag-delta-ry float) - ) - :allow-misaligned - ) - + ((joint-index int32) + (ry float) + (drag-delta-ry float)) + :allow-misaligned) (deftype junglesnake-tilt-joint (structure) - ((joint-index int32) - (flip-it symbol) - ) - :allow-misaligned - ) - + ((joint-index int32) + (flip-it symbol)) + :allow-misaligned) (deftype junglesnake (process-drawable) - ((root collide-shape :override) - (state-time2 time-frame) - (hit-player symbol :offset 184) - (is-lethal? symbol) - (refractory-delay int32) - (ry float) - (des-ry float) - (tilt float) - (des-tilt float) - (track-player-ry symbol) - (track-player-tilt symbol) - (twist-joints junglesnake-twist-joint 24 :inline :offset 220) - (tilt-joints junglesnake-tilt-joint 3 :inline :offset 604) - ) + ((root collide-shape :override) + (state-time2 time-frame) + (hit-player symbol :offset 184) + (is-lethal? symbol) + (refractory-delay int32) + (ry float) + (des-ry float) + (tilt float) + (des-tilt float) + (track-player-ry symbol) + (track-player-tilt symbol) + (twist-joints junglesnake-twist-joint 24 :inline :offset 220) + (tilt-joints junglesnake-tilt-joint 3 :inline :offset 604)) (:methods - (junglesnake-method-20 (_type_) symbol) - (junglesnake-method-21 (_type_) symbol) - (junglesnake-method-22 (_type_ float) symbol) - (junglesnake-method-23 (_type_) none) - (junglesnake-method-24 (_type_) none) - ) + (junglesnake-method-20 (_type_) symbol) + (junglesnake-method-21 (_type_) symbol) + (junglesnake-method-22 (_type_ float) symbol) + (junglesnake-method-23 (_type_) none) + (junglesnake-method-24 (_type_) none)) (:states - junglesnake-attack - junglesnake-die - junglesnake-give-up - junglesnake-sleeping - junglesnake-tracking - junglesnake-wake - ) - ) - + junglesnake-attack + junglesnake-die + junglesnake-give-up + junglesnake-sleeping + junglesnake-tracking + junglesnake-wake)) ;; 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)) - (the-as uint 1) - ) - ) + (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)) + (the-as uint 1))) (cond ((and (-> self is-lethal?) (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) (when (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - (let ((v0-1 (the-as object #t))) - (set! (-> self hit-player) (the-as symbol v0-1)) - v0-1 - ) - ) - ) + (let ((v0-1 (the-as object #t))) (set! (-> self hit-player) (the-as symbol v0-1)) v0-1))) (else - (do-push-aways! (-> self root)) - (send-event - arg0 - 'shove - (-> arg3 param 0) - (static-attack-info ((shove-back (meters 2)) (shove-up (meters 0.5)))) - ) - ) - ) - ) - ) - (('attack) - (go junglesnake-die) - ) - ) - ) + (do-push-aways! (-> self root)) + (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-back (meters 2)) (shove-up (meters 0.5))))))))) + (('attack) (go junglesnake-die)))) junglesnake-default-event-handler (defmethod junglesnake-method-20 ((this junglesnake)) (when (and *target* (-> this track-player-ry)) (let ((v1-3 (target-pos 0))) - (set! (-> this des-ry) (atan (- (-> v1-3 x) (-> this root trans x)) (- (-> v1-3 z) (-> this root trans z)))) - ) - ) + (set! (-> this des-ry) (atan (- (-> v1-3 x) (-> this root trans x)) (- (-> v1-3 z) (-> this root trans z)))))) (let ((f0-7 (deg-diff (-> this ry) (-> this des-ry)))) - (+! (-> this ry) (seek-with-smooth 0.0 f0-7 (* 655360.0 (seconds-per-frame)) 0.125 0.001)) - ) + (+! (-> this ry) (seek-with-smooth 0.0 f0-7 (* 655360.0 (seconds-per-frame)) 0.125 0.001))) (let ((f30-1 (-> this ry))) (dotimes (s5-0 24) (let ((s4-0 (-> this twist-joints s5-0))) (let ((f28-0 (-> s4-0 drag-delta-ry))) (cond - ((= f28-0 0.0) - (set! (-> s4-0 ry) f30-1) - ) + ((= 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 (seconds-per-frame)) 0.25 0.001)) - ) - ) - ) - ) - ) - (set! f30-1 (-> s4-0 ry)) - ) - ) - ) - #f - ) + (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 (seconds-per-frame)) 0.25 0.001))))))) + (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)) - ) + (s2-0 (new 'stack-no-clear 'matrix))) (let ((s1-0 (new 'stack-no-clear 'vector))) (set-vector! s1-0 (-> arg0 root trans x) (-> arg0 root trans y) (-> arg0 root trans z) 1.0) (matrix-translate! s2-0 s1-0) (vector-negate! s1-0 s1-0) - (matrix-translate! s3-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) - ) - ) - ) - ) + (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)) - ) + (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) - ) + (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) - ) - ) + (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)) - ) + (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))) @@ -230,48 +160,27 @@ junglesnake-default-event-handler (+! (-> s1-2 y) 9011.2) (vector-normalize! s1-2 1.0) (let ((s0-2 (new 'stack-no-clear 'vector)) - (s3-4 (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)) - ) + (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) - ) - ) + ((< 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) - ) - ) + (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 (seconds-per-frame)) 0.2 0.001))) - ) + (f28-0 (+ f30-1 (seek-with-smooth 0.0 f0-21 (* 65536.0 (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)) - ) + (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) @@ -282,331 +191,252 @@ junglesnake-default-event-handler (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)) - ) + (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! (-> 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) - ) - ) - ) - ) - ) - ) + (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) - ) + (none)) (defstate junglesnake-sleeping (junglesnake) :event 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) (draw-status hidden)) - ) - :trans (behavior () - (when *target* - (let* ((a0-1 (target-pos 0)) - (f0-1 (- (-> a0-1 y) (-> self root trans y))) - ) - (if (and (>= 40960.0 f0-1) (>= 143360.0 (vector-vector-xz-distance a0-1 (-> self root trans)))) - (go junglesnake-wake) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :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) (draw-status hidden))) + :trans + (behavior () + (when *target* + (let* ((a0-1 (target-pos 0)) + (f0-1 (- (-> a0-1 y) (-> self root trans y)))) + (if (and (>= 40960.0 f0-1) (>= 143360.0 (vector-vector-xz-distance a0-1 (-> self root trans)))) (go junglesnake-wake))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate junglesnake-wake (junglesnake) :event junglesnake-default-event-handler - :enter (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (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 - ) - :trans (behavior () - (junglesnake-method-20 self) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - ) - ) - :code (behavior () - (ja-no-eval :group! junglesnake-drop-down-ja :num! (seek! max 0.85) :frame-num 0.5) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.85)) - ) - (go junglesnake-tracking) - ) - :post transform-post - ) + :enter + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (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) + :trans + (behavior () + (junglesnake-method-20 self) + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)))) + :code + (behavior () + (ja-no-eval :group! junglesnake-drop-down-ja :num! (seek! max 0.85) :frame-num 0.5) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.85))) + (go junglesnake-tracking)) + :post transform-post) (defstate junglesnake-tracking (junglesnake) :event junglesnake-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self track-player-ry) #t) - (set! (-> self track-player-tilt) #t) - ) - :trans (behavior () - (if (and (and *target* (>= 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (time-elapsed? (-> self state-time) (-> self refractory-delay)) - (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) - (go junglesnake-attack) - ) - (when *target* - (let ((a0-8 (target-pos 0))) - (if (or (>= (- (-> a0-8 y) (-> self root trans y)) 57344.0) - (>= (vector-vector-xz-distance a0-8 (-> self root trans)) 163840.0) - ) - (go junglesnake-give-up) - ) - ) - ) - (junglesnake-method-20 self) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - ) - ) - :code (behavior () - (cond - ((ja-group? junglesnake-idle-ja) - (while (not (ja-done? 0)) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.15)) - ) - ) - (loop - (ja-no-eval :group! junglesnake-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self track-player-ry) #t) + (set! (-> self track-player-tilt) #t)) + :trans + (behavior () + (if (and (and *target* (>= 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self refractory-delay)) + (not (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) + (go junglesnake-attack)) + (when *target* + (let ((a0-8 (target-pos 0))) + (if (or (>= (- (-> a0-8 y) (-> self root trans y)) 57344.0) + (>= (vector-vector-xz-distance a0-8 (-> self root trans)) 163840.0)) + (go junglesnake-give-up)))) + (junglesnake-method-20 self) + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)))) + :code + (behavior () + (cond + ((ja-group? junglesnake-idle-ja) (while (not (ja-done? 0)) (suspend) (ja :num! (seek!)))) + (else (ja-channel-push! 1 (seconds 0.15)))) + (loop + (ja-no-eval :group! junglesnake-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate junglesnake-attack (junglesnake) :event junglesnake-default-event-handler - :enter (behavior () - (set! (-> self hit-player) #f) - ) - :exit (behavior () - (junglesnake-method-24 self) - ) - :trans (behavior () - (junglesnake-method-20 self) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - ) - ) - :code (behavior () - (set! (-> self track-player-ry) #t) - (set! (-> self track-player-tilt) #t) - (ja-channel-push! 2 (seconds 0.15)) - (junglesnake-method-23 self) - (let ((f30-0 (lerp-scale 0.0 1.0 (vector-vector-distance (target-pos 0) (-> self root trans)) 0.0 24576.0))) - (ja-no-eval :group! junglesnake-strike-close-ja :num! (seek! max 1.25) :frame-num 0.0) - (ja-no-eval :chan 1 :group! junglesnake-strike-far-ja :num! (chan 0) :frame-interp f30-0 :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (set! f30-0 (seek - f30-0 + :enter + (behavior () + (set! (-> self hit-player) #f)) + :exit + (behavior () + (junglesnake-method-24 self)) + :trans + (behavior () + (junglesnake-method-20 self) + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)))) + :code + (behavior () + (set! (-> self track-player-ry) #t) + (set! (-> self track-player-tilt) #t) + (ja-channel-push! 2 (seconds 0.15)) + (junglesnake-method-23 self) + (let ((f30-0 (lerp-scale 0.0 1.0 (vector-vector-distance (target-pos 0) (-> self root trans)) 0.0 24576.0))) + (ja-no-eval :group! junglesnake-strike-close-ja :num! (seek! max 1.25) :frame-num 0.0) + (ja-no-eval :chan 1 :group! junglesnake-strike-far-ja :num! (chan 0) :frame-interp f30-0 :frame-num 0.0) + (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 trans)) 0.0 24576.0) - (* 2.0 (seconds-per-frame)) - ) - ) - (ja :num! (seek! max 1.25)) - (ja :chan 1 :num! (chan 0) :frame-interp f30-0) - (let ((f0-12 (ja-aframe-num 0))) - (cond - ((and (>= f0-12 22.0) (< f0-12 44.0)) - (if (not (-> self is-lethal?)) - (junglesnake-method-23 self) - ) - ) - (else - (if (-> self is-lethal?) - (junglesnake-method-24 self) - ) - ) - ) - ) - ) - ) - (if (-> self hit-player) + (* 2.0 (seconds-per-frame)))) + (ja :num! (seek! max 1.25)) + (ja :chan 1 :num! (chan 0) :frame-interp f30-0) + (let ((f0-12 (ja-aframe-num 0))) + (cond + ((and (>= f0-12 22.0) (< f0-12 44.0)) (if (not (-> self is-lethal?)) (junglesnake-method-23 self))) + (else (if (-> self is-lethal?) (junglesnake-method-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) - ) - :post transform-post - ) + (set! (-> self refractory-delay) (rand-vu-int-range 150 300))) + (go junglesnake-tracking)) + :post transform-post) (defstate junglesnake-give-up (junglesnake) :event junglesnake-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self track-player-ry) #f) - (set! (-> self track-player-tilt) #f) - (set! (-> self des-ry) (-> self ry)) - (set! (-> self des-tilt) (-> self tilt)) - ) - :trans (behavior () - (junglesnake-method-20 self) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (set! (-> s5-0 quad) (-> gp-0 quad)) - (+! (-> s5-0 y) 131072.0) - (ja-no-eval :group! junglesnake-give-up-ja :num! (seek! max 0.5) :frame-num 0.0) - (until (ja-done? 0) - (let* ((f0-6 (ja-frame-num 0)) - (v1-18 (ja-group)) - (f0-7 (/ f0-6 (the float (+ (-> v1-18 data 0 length) -1)))) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (set-vector! (-> self root scale) 1.0 (- 1.0 f0-7) 1.0 1.0) - (vector-lerp! s4-0 gp-0 s5-0 f0-7) - (move-to-point! (-> self root) s4-0) - ) - (suspend) - (ja :num! (seek! max 0.5)) - ) - ) - (move-to-point! (-> self root) gp-0) - ) - (set-vector! (-> self root scale) 1.0 1.0 1.0 1.0) - (go junglesnake-sleeping) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self track-player-ry) #f) + (set! (-> self track-player-tilt) #f) + (set! (-> self des-ry) (-> self ry)) + (set! (-> self des-tilt) (-> self tilt))) + :trans + (behavior () + (junglesnake-method-20 self)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (set! (-> s5-0 quad) (-> gp-0 quad)) + (+! (-> s5-0 y) 131072.0) + (ja-no-eval :group! junglesnake-give-up-ja :num! (seek! max 0.5) :frame-num 0.0) + (until (ja-done? 0) + (let* ((f0-6 (ja-frame-num 0)) + (v1-18 (ja-group)) + (f0-7 (/ f0-6 (the float (+ (-> v1-18 data 0 length) -1)))) + (s4-0 (new 'stack-no-clear 'vector))) + (set-vector! (-> self root scale) 1.0 (- 1.0 f0-7) 1.0 1.0) + (vector-lerp! s4-0 gp-0 s5-0 f0-7) + (move-to-point! (-> self root) s4-0)) + (suspend) + (ja :num! (seek! max 0.5)))) + (move-to-point! (-> self root) gp-0)) + (set-vector! (-> self root scale) 1.0 1.0 1.0 1.0) + (go junglesnake-sleeping)) + :post transform-post) (defstate junglesnake-die (junglesnake) :event process-drawable-death-event-handler - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root)) - (ja-channel-push! 1 (seconds 0.15)) - (ja-no-eval :group! junglesnake-death-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - ) - :post ja-post - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root)) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! junglesnake-death-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self)) + :post ja-post) (defmethod junglesnake-method-23 ((this junglesnake)) (when (not (-> this is-lethal?)) (set! (-> this is-lethal?) #t) (let ((v1-5 (-> (the-as collide-shape-prim-group (-> this root root-prim)) prims 0))) - (logclear! (-> v1-5 prim-core action) (collide-action solid)) - ) - ) + (logclear! (-> v1-5 prim-core action) (collide-action solid)))) 0 - (none) - ) + (none)) (defmethod junglesnake-method-24 ((this junglesnake)) (when (-> this is-lethal?) (set! (-> this is-lethal?) #f) (let ((v1-4 (-> (the-as collide-shape-prim-group (-> this root root-prim)) prims 0))) - (logior! (-> v1-4 prim-core action) (collide-action solid)) - ) - (do-push-aways! (-> this root)) - ) + (logior! (-> v1-4 prim-core action) (collide-action solid))) + (do-push-aways! (-> this root))) 0 - (none) - ) + (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 junglesnake-method-22 ((this junglesnake) (arg0 float)) (let ((f0-0 0.0)) @@ -614,33 +444,17 @@ junglesnake-default-event-handler (let ((a2-2 (-> this 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 - ) + (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 junglesnake-method-21 ((this junglesnake)) (dotimes (v1-0 3) - (let ((a1-2 (-> this tilt-joints v1-0))) - (set! (-> a1-2 joint-index) (+ v1-0 23)) - (set! (-> a1-2 flip-it) #f) - ) - ) - (let ((v1-3 (the-as object (&-> this stack 524)))) - (set! (-> (the-as junglesnake-tilt-joint v1-3) flip-it) #t) - ) + (let ((a1-2 (-> this tilt-joints v1-0))) (set! (-> a1-2 joint-index) (+ v1-0 23)) (set! (-> a1-2 flip-it) #f))) + (let ((v1-3 (the-as object (&-> this stack 524)))) (set! (-> (the-as junglesnake-tilt-joint v1-3) flip-it) #t)) (let ((v1-4 (the-as object (&-> this stack 476))) - (v0-0 #t) - ) + (v0-0 #t)) (set! (-> (the-as junglesnake-twist-joint v1-4) ry) (the-as float v0-0)) - v0-0 - ) - ) + v0-0)) (defmethod init-from-entity! ((this junglesnake) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) @@ -658,8 +472,7 @@ junglesnake-default-event-handler (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 25) (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -667,8 +480,7 @@ junglesnake-default-event-handler (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 21) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -676,8 +488,7 @@ junglesnake-default-event-handler (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set! (-> s2-2 transform-index) 20) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-2) - ) + (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) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -685,8 +496,7 @@ junglesnake-default-event-handler (set! (-> s2-3 prim-core offense) (collide-offense touch)) (set! (-> s2-3 transform-index) 19) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-3) - ) + (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) (collide-kind enemy)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -694,8 +504,7 @@ junglesnake-default-event-handler (set! (-> s2-4 prim-core offense) (collide-offense touch)) (set! (-> s2-4 transform-index) 18) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-4) - ) + (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) (collide-kind enemy)) (set! (-> s2-5 collide-with) (collide-kind target)) @@ -703,8 +512,7 @@ junglesnake-default-event-handler (set! (-> s2-5 prim-core offense) (collide-offense touch)) (set! (-> s2-5 transform-index) 17) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-5) - ) + (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) (collide-kind enemy)) (set! (-> s2-6 collide-with) (collide-kind target)) @@ -712,8 +520,7 @@ junglesnake-default-event-handler (set! (-> s2-6 prim-core offense) (collide-offense touch)) (set! (-> s2-6 transform-index) 16) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-6) - ) + (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) (collide-kind enemy)) (set! (-> s2-7 collide-with) (collide-kind target)) @@ -721,8 +528,7 @@ junglesnake-default-event-handler (set! (-> s2-7 prim-core offense) (collide-offense touch)) (set! (-> s2-7 transform-index) 15) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-7) - ) + (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) (collide-kind enemy)) (set! (-> s2-8 collide-with) (collide-kind target)) @@ -730,18 +536,13 @@ junglesnake-default-event-handler (set! (-> s2-8 prim-core offense) (collide-offense touch)) (set! (-> s2-8 transform-index) 14) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 3276.8) - (append-prim s3-0 s2-8) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *junglesnake-sg* '()) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 173) this)) (set! (-> this is-lethal?) #f) (set! (-> this ry) (y-angle (-> this root))) @@ -755,5 +556,4 @@ junglesnake-default-event-handler (junglesnake-method-21 this) (logior! (-> this skel status) (janim-status inited)) (go junglesnake-sleeping) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungleb/aphid.gc b/goal_src/jak1/levels/jungleb/aphid.gc index b24f8ea480..54007e1e74 100644 --- a/goal_src/jak1/levels/jungleb/aphid.gc +++ b/goal_src/jak1/levels/jungleb/aphid.gc @@ -1,279 +1,214 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUB.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: aphid.gc -;; name in dgo: aphid -;; dgos: JUB, L1 - ;; DECOMP BEGINS (deftype aphid (nav-enemy) - ((try int32) - ) - ) - + ((try int32))) -(defskelgroup *aphid-sg* aphid-lurker aphid-lurker-lod0-jg -1 - ((aphid-lurker-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 2) - :shadow aphid-lurker-shadow-mg - ) +(defskelgroup *aphid-sg* + aphid-lurker + aphid-lurker-lod0-jg + -1 + ((aphid-lurker-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 2) + :shadow aphid-lurker-shadow-mg) (defbehavior aphid-invulnerable aphid () (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf5)) (set-collide-offense (-> self collide-info) 2 (collide-offense indestructible)) - (none) - ) + (none)) (defbehavior aphid-vulnerable aphid () (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf5)) (set-collide-offense (-> self collide-info) 2 (collide-offense touch)) - (none) - ) + (none)) (defmethod attack-handler ((this aphid) (arg0 process) (arg1 event-message-block)) (cond - ((or (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf5)) - (= arg0 (ppointer->process (-> this parent))) - ) + ((or (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf5)) (= arg0 (ppointer->process (-> this parent)))) (send-event arg0 'get-attack-count 1) (logclear! (-> this mask) (process-mask actor-pause attackable)) - (go (method-of-object this nav-enemy-die)) - ) - (else - (touch-handler this arg0 arg1) - ) - ) - ) + (go (method-of-object this nav-enemy-die))) + (else (touch-handler this arg0 arg1)))) (defstate nav-enemy-chase (aphid) :virtual #t :exit aphid-vulnerable - :code (behavior () - (let ((gp-0 (cond - ((>= (-> self try) 15) - 450 - ) - ((>= (-> self try) 10) - 300 - ) - ((>= (-> self try) 5) - 150 - ) - (else - 0 - ) - ) - ) - ) - (loop - (ja-channel-push! 1 (seconds 0.05)) - (sound-play "aphid-spike-out") - (ja-no-eval :group! aphid-lurker-spike-out-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (aphid-invulnerable) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! aphid-lurker-walk-deadly-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)) - (s5-1 (current-time)) - (s4-1 (- (the int (nav-enemy-rnd-float-range 900.0 1440.0)) gp-0)) - ) - (until (time-elapsed? s5-1 s4-1) + :code + (behavior () + (let ((gp-0 (cond + ((>= (-> self try) 15) 450) + ((>= (-> self try) 10) 300) + ((>= (-> self try) 5) 150) + (else 0)))) + (loop + (ja-channel-push! 1 (seconds 0.05)) + (sound-play "aphid-spike-out") + (ja-no-eval :group! aphid-lurker-spike-out-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - (ja :num! (loop! f30-0)) - ) - ) - (aphid-vulnerable) - (ja-channel-push! 1 (seconds 0.05)) - (sound-play "aphid-spike-in") - (ja-no-eval :group! aphid-lurker-spike-out-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((f30-1 (nav-enemy-rnd-float-range 0.9 1.1)) - (s5-3 (current-time)) - (s4-3 (+ (the int (nav-enemy-rnd-float-range 660.0 900.0)) gp-0)) - ) - (until (time-elapsed? s5-3 s4-3) + (ja :num! (seek!))) + (aphid-invulnerable) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! aphid-lurker-walk-deadly-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)) + (s5-1 (current-time)) + (s4-1 (- (the int (nav-enemy-rnd-float-range 900.0 1440.0)) gp-0))) + (until (time-elapsed? s5-1 s4-1) + (suspend) + (ja :num! (loop! f30-0)))) + (aphid-vulnerable) + (ja-channel-push! 1 (seconds 0.05)) + (sound-play "aphid-spike-in") + (ja-no-eval :group! aphid-lurker-spike-out-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) (suspend) - (ja :num! (loop! f30-1)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! 0.0))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((f30-1 (nav-enemy-rnd-float-range 0.9 1.1)) + (s5-3 (current-time)) + (s4-3 (+ (the int (nav-enemy-rnd-float-range 660.0 900.0)) gp-0))) + (until (time-elapsed? s5-3 s4-3) + (suspend) + (ja :num! (loop! f30-1)))))))) (defstate nav-enemy-stare (aphid) :virtual #t - :code (behavior () - (set! (-> self turn-time) (seconds 0.2)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (when (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! aphid-lurker-win-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (loop - (when (not (nav-enemy-facing-player? 2730.6667)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! aphid-lurker-walk-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (until (nav-enemy-facing-player? 1820.4445) - (ja-blend-eval) - (suspend) - (ja :num! (loop! 0.75)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - (when (nav-enemy-rnd-percent? 0.3) - (if (not (ja-group? aphid-lurker-win-ja)) - (ja-channel-push! 1 (seconds 0.1)) - ) + :code + (behavior () + (set! (-> self turn-time) (seconds 0.2)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (when (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) + (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5))) + (ja-channel-push! 1 (seconds 0.1)) (ja-no-eval :group! aphid-lurker-win-ja :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! max f30-0)))) + (loop + (when (not (nav-enemy-facing-player? 2730.6667)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! aphid-lurker-walk-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (until (nav-enemy-facing-player? 1820.4445) + (ja-blend-eval) + (suspend) + (ja :num! (loop! 0.75))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))) + (when (nav-enemy-rnd-percent? 0.3) + (if (not (ja-group? aphid-lurker-win-ja)) (ja-channel-push! 1 (seconds 0.1))) + (ja-no-eval :group! aphid-lurker-win-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))))))) (defstate nav-enemy-give-up (aphid) :virtual #t - :code (behavior () - (set! (-> self rotate-speed) 218453.33) - (set! (-> self turn-time) (seconds 0.5)) - (ja-channel-push! 1 (seconds 0.15)) - (let ((s4-0 (-> self collide-info)) - (s5-0 (target-pos 0)) - ) - (when (< (fabs - (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) - ) - 12743.111 - ) - (ja-no-eval :group! aphid-lurker-give-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! aphid-lurker-give-up-hop-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - -(define *aphid-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 3 - :walk-anim 4 - :turn-anim 9 - :notice-anim 3 - :run-anim 4 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 10 - :taunt-anim 10 - :die-anim 11 - :neck-joint 10 - :player-look-at-joint 5 - :run-travel-speed (meters 5) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -0.25) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #t - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + :code + (behavior () + (set! (-> self rotate-speed) 218453.33) + (set! (-> self turn-time) (seconds 0.5)) + (ja-channel-push! 1 (seconds 0.15)) + (let ((s4-0 (-> self collide-info)) + (s5-0 (target-pos 0))) + (when (< (fabs (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans))))) + 12743.111) + (ja-no-eval :group! aphid-lurker-give-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! aphid-lurker-give-up-hop-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-patrol))) + +(define *aphid-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 3 + :walk-anim 4 + :turn-anim 9 + :notice-anim 3 + :run-anim 4 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 10 + :taunt-anim 10 + :die-anim 11 + :neck-joint 10 + :player-look-at-joint 5 + :run-travel-speed (meters 5) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -0.25) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #t + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod initialize-collision ((this aphid)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) 6144.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this aphid)) (initialize-skeleton this *aphid-sg* '()) @@ -282,8 +217,7 @@ (set! (-> this neck nose) (the-as uint 1)) (set! (-> this neck ear) (the-as uint 2)) 0 - (none) - ) + (none)) (defbehavior aphid-init-by-other aphid ((arg0 nav-enemy) (arg1 vector) (arg2 vector)) (initialize-collision self) @@ -293,13 +227,11 @@ (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) arg2 arg1))) (set! (-> s3-1 y) 0.0) (vector-normalize! s3-1 1.0) - (forward-up->quaternion (-> self collide-info quat) s3-1 *up-vector*) - ) + (forward-up->quaternion (-> self collide-info quat) s3-1 *up-vector*)) (vector-identity! (-> self collide-info scale)) (set! (-> self entity) (-> arg0 entity)) (nav-enemy-method-48 self) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf12)) (set! (-> self try) (the-as int (send-event (ppointer->process (-> self parent)) 'try))) (go-virtual nav-enemy-chase) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungleb/jungleb-obs.gc b/goal_src/jak1/levels/jungleb/jungleb-obs.gc index 9f06027d05..fe50c22ab6 100644 --- a/goal_src/jak1/levels/jungleb/jungleb-obs.gc +++ b/goal_src/jak1/levels/jungleb/jungleb-obs.gc @@ -1,302 +1,244 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUB.DGO") - (require "engine/common-obs/baseplat.gc") (require "engine/entity/entity.gc") (require "engine/game/task/task-control.gc") -;; name: jungleb-obs.gc -;; name in dgo: jungleb-obs -;; dgos: JUB, L1 - - ;; DECOMP BEGINS (deftype eggtop (process-drawable) - ((root collide-shape-moving :override) - (cam-tracker handle) - (sound-id sound-id) - ) - (:states - (eggtop-close symbol) - eggtop-idle - ) - ) + ((root collide-shape-moving :override) + (cam-tracker handle) + (sound-id sound-id)) + (:states (eggtop-close symbol) + eggtop-idle)) - -(defskelgroup *eggtop-sg* eggtop eggtop-lod0-jg eggtop-idle-ja - ((eggtop-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -4.5 0 4.5) - ) +(defskelgroup *eggtop-sg* + eggtop + eggtop-lod0-jg + eggtop-idle-ja + ((eggtop-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -4.5 0 4.5)) (defpartgroup group-jungle-blue-eco-room-open :id 189 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 899 :fade-after (meters 110)) - (sp-item 900 :fade-after (meters 110)) - (sp-item 901 :fade-after (meters 110)) - (sp-item 902 :fade-after (meters 110)) - (sp-item 903 :fade-after (meters 110)) - ) - ) + :parts + ((sp-item 899 :fade-after (meters 110)) + (sp-item 900 :fade-after (meters 110)) + (sp-item 901 :fade-after (meters 110)) + (sp-item 902 :fade-after (meters 110)) + (sp-item 903 :fade-after (meters 110)))) (defpartgroup group-jungle-blue-eco-room-activate :id 190 :duration (seconds 3) :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 903) (sp-item 903) (sp-item 904 :flags (bit1) :period (seconds 4) :length (seconds 0.05))) - ) + :parts ((sp-item 903) (sp-item 903) (sp-item 904 :flags (bit1) :period (seconds 4) :length (seconds 0.05)))) (defpart 904 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 30.0) - (:y (meters -4)) - (:scale-x (meters 20) (meters 10)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 5) (meters 2)) - (:r 0.0 16.0) - (:g 16.0 32.0) - (:b 127.0) - (:a 0.0) - (:rotvel-z (degrees -0.05) (degrees 0.1)) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.25)) - (:next-launcher 905) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 30.0) + (:y (meters -4)) + (:scale-x (meters 20) (meters 10)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 5) (meters 2)) + (:r 0.0 16.0) + (:g 16.0 32.0) + (:b 127.0) + (:a 0.0) + (:rotvel-z (degrees -0.05) (degrees 0.1)) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.25)) + (:next-launcher 905))) (defpart 905 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.75)) (:next-launcher 906)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.75)) (:next-launcher 906))) (defpart 906 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (defpart 899 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -4)) - (:scale-x (meters 10) (meters 2)) - (:scale-y (meters 8) (meters 2)) - (:r 0.0 64.0) - (:g 0.0 64.0) - (:b 255.0) - (:a 128.0 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -4)) + (:scale-x (meters 10) (meters 2)) + (:scale-y (meters 8) (meters 2)) + (:r 0.0 64.0) + (:g 0.0 64.0) + (:b 255.0) + (:a 128.0 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 900 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 901 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.5 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 3)) - (:rot-x 4) - (:rot-z (degrees -30) (degrees 60)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 907) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.5 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 3)) + (:rot-x 4) + (:rot-z (degrees -30) (degrees 60)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 907))) (defpart 907 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0))) (defpart 902 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.5 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 150) (degrees 60)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 907) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.5 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 150) (degrees 60)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 907))) (defpart 903 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0 1.0) - (:y (meters -6.5) (meters 1)) - (:scale-x (meters 6) (meters 2)) - (:rot-x 4) - (:rot-z (degrees -140) (degrees 100.00001)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 907) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 80) (degrees 200.00002)) - (:conerot-radius (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0 1.0) + (:y (meters -6.5) (meters 1)) + (:scale-x (meters 6) (meters 2)) + (:rot-x 4) + (:rot-z (degrees -140) (degrees 100.00001)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 907) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 80) (degrees 200.00002)) + (:conerot-radius (meters 4)))) (defstate eggtop-idle (eggtop) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (case (-> block param 0) - (('pickup) - (if (type-type? (-> proc type) fuel-cell) - (save-reminder (get-task-control (-> self entity extra perm task)) 1 0) - ) - ) - ) - ) - ) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - ) - :trans (behavior () - (if (and (not (-> self child)) (task-complete? *game-info* (-> self entity extra perm task))) - (go eggtop-close #f) - ) - (spawn (-> self part) (-> self root trans)) - (sound-play "electric-loop" :id (-> self sound-id)) - ) - :code (behavior () - (suspend) - (update-transforms! (-> self root)) - (anim-loop) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (case (-> block param 0) + (('pickup) + (if (type-type? (-> proc type) fuel-cell) (save-reminder (get-task-control (-> self entity extra perm task)) 1 0))))))) + :exit + (behavior () + (sound-stop (-> self sound-id))) + :trans + (behavior () + (if (and (not (-> self child)) (task-complete? *game-info* (-> self entity extra perm task))) (go eggtop-close #f)) + (spawn (-> self part) (-> self root trans)) + (sound-play "electric-loop" :id (-> self sound-id))) + :code + (behavior () + (suspend) + (update-transforms! (-> self root)) + (anim-loop)) + :post ja-post) (defstate eggtop-close (eggtop) - :trans (behavior () - (rider-trans) - (hide-hud-quick) - ) - :code (behavior ((arg0 symbol)) - (when (not arg0) - (sound-play "vent-switch" :vol 200) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 190) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior camera-tracker - () - (while (not (process-grab? *target*)) - (suspend) - ) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 1)) - (suspend) - ) - ) - (send-event *camera* 'blend-from-as-fixed) - (camera-look-at (the-as pair "ecovent-171") (the-as uint 0)) - (camera-change-to "camera-223" 0 #f) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 3)) - (suspend) - ) - ) - (while (not (process-release? (handle->process (-> self grab-target)))) - (suspend) - ) - (send-event *camera* 'blend-from-as-fixed) - (level-hint-spawn - (text-id jungle-eggtop-resolution) - "asstvb02" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (camera-look-at (the-as pair *target*) (the-as uint 0)) - (camera-change-to (the-as string 'base) 150 #f) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show) - (none) - ) - :to self - ) - ) - ) - (save-reminder (get-task-control (-> self entity extra perm task)) 2 0) - (sound-play "jngb-eggtop-seq") - (ja-no-eval :group! eggtop-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((a0-20 (-> self entity))) - (if (and a0-20 (= self (-> a0-20 extra process))) - (entity-task-complete-on a0-20) - ) - ) - (ja :group! eggtop-idle-ja :num! max) - (suspend) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - :post rider-post - ) + :trans + (behavior () + (rider-trans) + (hide-hud-quick)) + :code + (behavior ((arg0 symbol)) + (when (not arg0) + (sound-play "vent-switch" :vol 200) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 190) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (set! (-> self cam-tracker) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior camera-tracker () + (while (not (process-grab? *target*)) + (suspend)) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 1)) (suspend))) + (send-event *camera* 'blend-from-as-fixed) + (camera-look-at (the-as pair "ecovent-171") (the-as uint 0)) + (camera-change-to "camera-223" 0 #f) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 3)) (suspend))) + (while (not (process-release? (handle->process (-> self grab-target)))) + (suspend)) + (send-event *camera* 'blend-from-as-fixed) + (level-hint-spawn (text-id jungle-eggtop-resolution) "asstvb02" (the-as entity #f) *entity-pool* (game-task none)) + (camera-look-at (the-as pair *target*) (the-as uint 0)) + (camera-change-to (the-as string 'base) 150 #f) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show) + (none)) + :to + self))) + (save-reminder (get-task-control (-> self entity extra perm task)) 2 0) + (sound-play "jngb-eggtop-seq") + (ja-no-eval :group! eggtop-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((a0-20 (-> self entity))) (if (and a0-20 (= self (-> a0-20 extra process))) (entity-task-complete-on a0-20))) + (ja :group! eggtop-idle-ja :num! max) + (suspend) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0) + :post rider-post) (defmethod init-from-entity! ((this eggtop) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -305,12 +247,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 16384.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *eggtop-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -318,33 +258,25 @@ (set! (-> this part) (create-launch-control (-> *part-group-id-table* 189) this)) (set! (-> this sound-id) (new-sound-id)) (cond - ((task-complete? *game-info* (-> this entity extra perm task)) - (go eggtop-close #t) - ) + ((task-complete? *game-info* (-> this entity extra perm task)) (go eggtop-close #t)) (else - (birth-pickup-at-point - (vector+! (new 'stack-no-clear 'vector) (-> this root trans) (new 'static 'vector :y 6144.0 :w 1.0)) - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - (go eggtop-idle) - ) - ) - (none) - ) - -(deftype jng-iris-door (eco-door) - () - ) + (birth-pickup-at-point (vector+! (new 'stack-no-clear 'vector) (-> this root trans) (new 'static 'vector :y 6144.0 :w 1.0)) + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f)) + (go eggtop-idle))) + (none)) +(deftype jng-iris-door (eco-door) ()) -(defskelgroup *jng-iris-door-sg* jng-iris-door jng-iris-door-lod0-jg jng-iris-door-idle-ja - ((jng-iris-door-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *jng-iris-door-sg* + jng-iris-door + jng-iris-door-lod0-jg + jng-iris-door-idle-ja + ((jng-iris-door-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defmethod eco-door-method-24 ((this jng-iris-door)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -355,15 +287,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod eco-door-method-25 ((this jng-iris-door)) (initialize-skeleton this *jng-iris-door-sg* '()) @@ -371,5 +300,4 @@ (set! (-> this close-distance) 49152.0) (update-transforms! (-> this root)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungleb/plant-boss.gc b/goal_src/jak1/levels/jungleb/plant-boss.gc index 54d670738f..8324ca5e94 100644 --- a/goal_src/jak1/levels/jungleb/plant-boss.gc +++ b/goal_src/jak1/levels/jungleb/plant-boss.gc @@ -1,170 +1,148 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUB.DGO") - (require "levels/jungleb/aphid.gc") - -;; name: plant-boss.gc -;; name in dgo: plant-boss -;; dgos: JUB, L1 - (declare-type plant-boss-leaf process-drawable) ;; DECOMP BEGINS (deftype plant-boss (process-drawable) - ((root collide-shape :override) - (neck joint-mod) - (body joint-mod) - (leaf (pointer plant-boss-leaf) 2) - (energy float) - (health float) - (ate symbol) - (cycle-count int32) - (snap-count int32) - (attack-prim collide-shape-prim-sphere 3) - (death-prim collide-shape-prim-mesh 3) - (cam-tracker handle) - (want-aphid-count int32) - (aphid-count int32) - (aphid-spawn-time time-frame) - (interp float) - (try int32) - (camera handle) - (money handle) - (try-inc symbol) - ) - (:states - (plant-boss-attack int) - (plant-boss-dead symbol) - (plant-boss-dead-bounce float) - plant-boss-dead-idle - plant-boss-eat - plant-boss-far-idle - (plant-boss-hit symbol) - plant-boss-idle - plant-boss-intro - (plant-boss-reset int) - plant-boss-spawn - plant-boss-vulnerable - ) - ) - + ((root collide-shape :override) + (neck joint-mod) + (body joint-mod) + (leaf (pointer plant-boss-leaf) 2) + (energy float) + (health float) + (ate symbol) + (cycle-count int32) + (snap-count int32) + (attack-prim collide-shape-prim-sphere 3) + (death-prim collide-shape-prim-mesh 3) + (cam-tracker handle) + (want-aphid-count int32) + (aphid-count int32) + (aphid-spawn-time time-frame) + (interp float) + (try int32) + (camera handle) + (money handle) + (try-inc symbol)) + (:states (plant-boss-attack int) + (plant-boss-dead symbol) + (plant-boss-dead-bounce float) + plant-boss-dead-idle + plant-boss-eat + plant-boss-far-idle + (plant-boss-hit symbol) + plant-boss-idle + plant-boss-intro + (plant-boss-reset int) + plant-boss-spawn + plant-boss-vulnerable)) (defmethod relocate ((this plant-boss) (arg0 int)) - (if (nonzero? (-> this neck)) - (&+! (-> this neck) arg0) - ) - (if (nonzero? (-> this body)) - (&+! (-> this body) arg0) - ) + (if (nonzero? (-> this neck)) (&+! (-> this neck) arg0)) + (if (nonzero? (-> this body)) (&+! (-> this body) arg0)) (dotimes (v1-8 3) - (if (nonzero? (-> this attack-prim v1-8)) - (&+! (-> this attack-prim v1-8) arg0) - ) - (if (nonzero? (-> this death-prim v1-8)) - (&+! (-> this death-prim v1-8) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this attack-prim v1-8)) (&+! (-> this attack-prim v1-8) arg0)) + (if (nonzero? (-> this death-prim v1-8)) (&+! (-> this death-prim v1-8) arg0))) + (call-parent-method this arg0)) (deftype plant-boss-arm (process-drawable) - ((root collide-shape :override) - (parent-override (pointer plant-boss) :overlay-at parent) - (side int32) - ) - (:states - (plant-boss-arm-die symbol) - (plant-boss-arm-hit basic) - plant-boss-arm-idle - (plant-boss-back-arms-die symbol) - (plant-boss-back-arms-hit symbol) - plant-boss-back-arms-idle - (plant-boss-root-die symbol) - plant-boss-root-idle - (plant-boss-vine-die symbol) - (plant-boss-vine-hit basic) - plant-boss-vine-idle - ) - ) - + ((root collide-shape :override) + (parent-override (pointer plant-boss) :overlay-at parent) + (side int32)) + (:states (plant-boss-arm-die symbol) + (plant-boss-arm-hit basic) + plant-boss-arm-idle + (plant-boss-back-arms-die symbol) + (plant-boss-back-arms-hit symbol) + plant-boss-back-arms-idle + (plant-boss-root-die symbol) + plant-boss-root-idle + (plant-boss-vine-die symbol) + (plant-boss-vine-hit basic) + plant-boss-vine-idle)) (deftype plant-boss-leaf (process-drawable) - ((root collide-shape-moving :override) - (side int32) - (state-object symbol) - (state-time-frame time-frame) - ) + ((root collide-shape-moving :override) + (side int32) + (state-object symbol) + (state-time-frame time-frame)) (:states - plant-boss-leaf-bounce - plant-boss-leaf-close - (plant-boss-leaf-die basic) - (plant-boss-leaf-idle symbol) - (plant-boss-leaf-open symbol) - (plant-boss-leaf-open-idle symbol) - ) - ) + plant-boss-leaf-bounce + plant-boss-leaf-close + (plant-boss-leaf-die basic) + (plant-boss-leaf-idle symbol) + (plant-boss-leaf-open symbol) + (plant-boss-leaf-open-idle symbol))) +(defskelgroup *plant-boss-sg* + plant-boss + plant-boss-main-lod0-jg + plant-boss-main-idle-ja + ((plant-boss-main-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 10 20) + :shadow plant-boss-main-shadow-mg) -(defskelgroup *plant-boss-sg* plant-boss plant-boss-main-lod0-jg plant-boss-main-idle-ja - ((plant-boss-main-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 10 20) - :shadow plant-boss-main-shadow-mg - ) +(defskelgroup *plant-boss-arm-sg* + plant-boss + plant-boss-arms-lod0-jg + plant-boss-arms-idle-ja + ((plant-boss-arms-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :shadow plant-boss-arms-shadow-mg) -(defskelgroup *plant-boss-arm-sg* plant-boss plant-boss-arms-lod0-jg plant-boss-arms-idle-ja - ((plant-boss-arms-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 20) - :shadow plant-boss-arms-shadow-mg - ) +(defskelgroup *plant-boss-leaf-sg* + plant-boss + plant-boss-leaf-lod0-jg + plant-boss-leaf-idle-left-ja + ((plant-boss-leaf-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 6) + :shadow plant-boss-leaf-shadow-mg) -(defskelgroup *plant-boss-leaf-sg* plant-boss plant-boss-leaf-lod0-jg plant-boss-leaf-idle-left-ja - ((plant-boss-leaf-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 6) - :shadow plant-boss-leaf-shadow-mg - ) +(defskelgroup *plant-boss-back-arms-sg* + plant-boss + plant-boss-back-arms-lod0-jg + plant-boss-back-arms-idle-ja + ((plant-boss-back-arms-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :shadow plant-boss-back-arms-shadow-mg) -(defskelgroup *plant-boss-back-arms-sg* plant-boss plant-boss-back-arms-lod0-jg plant-boss-back-arms-idle-ja - ((plant-boss-back-arms-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - :shadow plant-boss-back-arms-shadow-mg - ) +(defskelgroup *plant-boss-vine-sg* + plant-boss + plant-boss-vine-lod0-jg + plant-boss-vine-idle-ja + ((plant-boss-vine-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) -(defskelgroup *plant-boss-vine-sg* plant-boss plant-boss-vine-lod0-jg plant-boss-vine-idle-ja - ((plant-boss-vine-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) - -(defskelgroup *plant-boss-root-sg* plant-boss plant-boss-root-lod0-jg plant-boss-root-idle-ja - ((plant-boss-root-lod0-mg (meters 999999))) - :bounds (static-spherem 0 20 0 20) - ) +(defskelgroup *plant-boss-root-sg* + plant-boss + plant-boss-root-lod0-jg + plant-boss-root-idle-ja + ((plant-boss-root-lod0-mg (meters 999999))) + :bounds (static-spherem 0 20 0 20)) (define *plant-boss-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade) - :shadow-dir (new 'static 'vector :y -1.0 :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 + :flags (shadow-flags disable-fade) + :shadow-dir + (new 'static 'vector :y -1.0 :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)))) (defbehavior plant-boss-generic-event-handler plant-boss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-0 object)) (case arg2 - (('child-die) - (set! v0-0 (seekl (-> self aphid-count) 0 1)) - (set! (-> self aphid-count) (the-as int v0-0)) - v0-0 - ) - (('joint) - 24 - ) - (('try) - (-> self try) - ) + (('child-die) (set! v0-0 (seekl (-> self aphid-count) 0 1)) (set! (-> self aphid-count) (the-as int v0-0)) v0-0) + (('joint) 24) + (('try) (-> self try)) (('notify) (case (-> arg3 param 0) (('pickup) @@ -172,24 +150,11 @@ (let ((gp-0 (-> self entity extra perm))) (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) (set! v0-0 (seekl (-> gp-0 user-int8 1) 5 1)) - (set! (-> gp-0 user-int8 1) (the-as int v0-0)) - ) - v0-0 - ) - ) - ) - ) + (set! (-> gp-0 user-int8 1) (the-as int v0-0))) + v0-0)))) (('target) (case (-> arg3 param 0) - (('die) - (if (= (-> arg3 param 1) 'plant-boss) - (go plant-boss-eat) - ) - ) - ) - ) - ) - ) + (('die) (if (= (-> arg3 param 1) 'plant-boss) (go plant-boss-eat))))))) (defbehavior plant-boss-default-event-handler plant-boss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -197,335 +162,237 @@ (if (and ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (not (ja-group? plant-boss-main-vulnerable2idle-ja)) - ) - (send-event arg0 'attack-or-shove (-> arg3 param 0) (new 'static 'attack-info)) - ) - ) - (else - (plant-boss-generic-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (the-as uint 1)) + (not (ja-group? plant-boss-main-vulnerable2idle-ja))) + (send-event arg0 'attack-or-shove (-> arg3 param 0) (new 'static 'attack-info)))) + (else (plant-boss-generic-event-handler arg0 arg1 arg2 arg3)))) (defbehavior plant-boss-post plant-boss () (when *target* (let ((gp-0 (-> *target* control root-prim prim-core))) (set-target! (-> self neck) (the-as vector gp-0)) - (set-target! (-> self body) (the-as vector gp-0)) - ) - ) + (set-target! (-> self body) (the-as vector gp-0)))) (transform-post) - (none) - ) + (none)) (defstate plant-boss-arm-idle (plant-boss-arm) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide 'die) - (go plant-boss-arm-die (the-as symbol (-> block param 0))) - ) - (('hit) - (go plant-boss-arm-hit (the-as basic (-> block param 0))) - ) - ) - ) - :code (behavior () - (ja-channel-set! 2) - (ja :group! plant-boss-arms-idle-ja :num! min) - (ja :chan 1 :group! plant-boss-arms-still-ja :num! min) - (loop - (ja :num! (loop!)) - (ja :chan 1 :frame-interp (- 1.0 (-> self parent-override 0 energy))) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide 'die) (go plant-boss-arm-die (the-as symbol (-> block param 0)))) + (('hit) (go plant-boss-arm-hit (the-as basic (-> block param 0)))))) + :code + (behavior () + (ja-channel-set! 2) + (ja :group! plant-boss-arms-idle-ja :num! min) + (ja :chan 1 :group! plant-boss-arms-still-ja :num! min) + (loop + (ja :num! (loop!)) + (ja :chan 1 :frame-interp (- 1.0 (-> self parent-override 0 energy))) + (suspend))) + :post ja-post) (defstate plant-boss-arm-hit (plant-boss-arm) - :event (-> plant-boss-arm-idle event) - :code (behavior ((arg0 basic)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! plant-boss-arms-hit-ja :num! (seek! (ja-aframe (the-as float 90.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 90.0) 0))) - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-arms-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 90.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go plant-boss-arm-idle) - ) - :post ja-post - ) + :event + (-> plant-boss-arm-idle + event) + :code + (behavior ((arg0 basic)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! plant-boss-arms-hit-ja :num! (seek! (ja-aframe (the-as float 90.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 90.0) 0)))) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! plant-boss-arms-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 90.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go plant-boss-arm-idle)) + :post ja-post) (defstate plant-boss-arm-die (plant-boss-arm) - :code (behavior ((arg0 symbol)) - (let ((a0-1 (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0))) - (set! (-> self root root-prim local-sphere w) 81920.0) - (set! (-> (the-as collide-shape-prim-mesh a0-1) local-sphere w) 69632.0) - (set! (-> (the-as collide-shape-prim-mesh a0-1) collide-with) (collide-kind target)) - (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core collide-as) (collide-kind enemy)) - (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core offense) (collide-offense indestructible)) - (let ((t9-0 (method-of-object (the-as collide-shape-prim-mesh a0-1) change-mesh)) - (v1-10 (-> self side)) - ) - (t9-0 (the-as collide-shape-prim-mesh a0-1) (if (= v1-10 1) - 1 - 0 - ) - ) - ) - ) - (cond - (arg0 - (ja-channel-set! 1) - ) - (else - (ja-channel-push! 1 (seconds 0.25)) - (let ((f30-0 (rand-vu-float-range (the-as float 0.8) (the-as float 1.0)))) - (case (-> self side) - ((1) - (ja-no-eval :group! plant-boss-arms-die-right-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else + :code + (behavior ((arg0 symbol)) + (let ((a0-1 (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0))) + (set! (-> self root root-prim local-sphere w) 81920.0) + (set! (-> (the-as collide-shape-prim-mesh a0-1) local-sphere w) 69632.0) + (set! (-> (the-as collide-shape-prim-mesh a0-1) collide-with) (collide-kind target)) + (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core collide-as) (collide-kind enemy)) + (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core offense) (collide-offense indestructible)) + (let ((t9-0 (method-of-object (the-as collide-shape-prim-mesh a0-1) change-mesh)) + (v1-10 (-> self side))) + (t9-0 (the-as collide-shape-prim-mesh a0-1) (if (= v1-10 1) 1 0)))) + (cond + (arg0 (ja-channel-set! 1)) + (else + (ja-channel-push! 1 (seconds 0.25)) + (let ((f30-0 (rand-vu-float-range (the-as float 0.8) (the-as float 1.0)))) + (case (-> self side) + ((1) + (ja-no-eval :group! plant-boss-arms-die-right-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max f30-0)))) + (else (ja-no-eval :group! plant-boss-arms-die-ja :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) (ja-blend-eval) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) - ) - (case (-> self side) - ((1) - (ja :group! plant-boss-arms-die-right-ja :num! max) - ) - (else - (ja :group! plant-boss-arms-die-ja :num! max) - ) - ) - (set! (-> (find-prim-by-id (-> self root) (the-as uint 1)) prim-core action) (collide-action)) - 0 - (set! (-> (find-prim-by-id (-> self root) (the-as uint 2)) prim-core action) (collide-action)) - 0 - (update-transforms! (-> self root)) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - :post ja-post - ) + (ja :num! (seek! max f30-0)))))))) + (case (-> self side) + ((1) (ja :group! plant-boss-arms-die-right-ja :num! max)) + (else (ja :group! plant-boss-arms-die-ja :num! max))) + (set! (-> (find-prim-by-id (-> self root) (the-as uint 1)) prim-core action) (collide-action)) + 0 + (set! (-> (find-prim-by-id (-> self root) (the-as uint 2)) prim-core action) (collide-action)) + 0 + (update-transforms! (-> self root)) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend))) + :post ja-post) (defstate plant-boss-back-arms-idle (plant-boss-arm) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (or (= message 'touch) (= message 'attack)) - (send-event proc 'attack (-> block param 0) (new 'static 'attack-info)) - ) - (cond - ((= message 'hit) - (go plant-boss-back-arms-hit (the-as symbol (-> block param 0))) - ) - ((= message 'die) - (go plant-boss-back-arms-die (the-as symbol (-> block param 0))) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! plant-boss-back-arms-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) - -(defstate plant-boss-back-arms-hit (plant-boss-arm) - :event (-> plant-boss-back-arms-idle event) - :code (behavior ((arg0 symbol)) - (ja-channel-push! 1 (seconds 0.1)) - (cond - ((or (= arg0 'spin) (= arg0 'spin-air)) - (ja-no-eval :group! plant-boss-back-arms-hit-kick-ja - :num! (seek! (ja-aframe (the-as float 45.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 45.0) 0))) - ) - ) - (else - (ja-no-eval :group! plant-boss-back-arms-hit-ja - :num! (seek! (ja-aframe (the-as float 45.0) 0)) - :frame-num 0.0 - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (or (= message 'touch) (= message 'attack)) (send-event proc 'attack (-> block param 0) (new 'static 'attack-info))) + (cond + ((= message 'hit) (go plant-boss-back-arms-hit (the-as symbol (-> block param 0)))) + ((= message 'die) (go plant-boss-back-arms-die (the-as symbol (-> block param 0)))))) + :code + (behavior () + (loop + (ja-no-eval :group! plant-boss-back-arms-idle-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 45.0) 0))) - ) - ) - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-back-arms-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 45.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go plant-boss-back-arms-idle) - ) - :post ja-post - ) + (ja :num! (seek!))))) + :post ja-post) + +(defstate plant-boss-back-arms-hit (plant-boss-arm) + :event + (-> plant-boss-back-arms-idle + event) + :code + (behavior ((arg0 symbol)) + (ja-channel-push! 1 (seconds 0.1)) + (cond + ((or (= arg0 'spin) (= arg0 'spin-air)) + (ja-no-eval :group! plant-boss-back-arms-hit-kick-ja :num! (seek! (ja-aframe (the-as float 45.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 45.0) 0))))) + (else + (ja-no-eval :group! plant-boss-back-arms-hit-ja :num! (seek! (ja-aframe (the-as float 45.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 45.0) 0)))))) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! plant-boss-back-arms-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 45.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go plant-boss-back-arms-idle)) + :post ja-post) (defstate plant-boss-back-arms-die (plant-boss-arm) - :code (behavior ((arg0 symbol)) - (cond - (arg0 - (ja-channel-set! 1) - ) - (else - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-back-arms-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (clear-collide-with-as (-> self root)) - (ja :group! plant-boss-back-arms-die-ja :num! max) - (loop - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior ((arg0 symbol)) + (cond + (arg0 (ja-channel-set! 1)) + (else + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! plant-boss-back-arms-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))))) + (clear-collide-with-as (-> self root)) + (ja :group! plant-boss-back-arms-die-ja :num! max) + (loop + (suspend))) + :post ja-post) (defstate plant-boss-vine-idle (plant-boss-arm) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide 'die) - (go plant-boss-vine-die (the-as symbol (-> block param 0))) - ) - (('hit) - (go plant-boss-vine-hit (the-as basic (-> block param 0))) - ) - ) - ) - :code (behavior () - (let ((f30-0 (rand-vu-float-range (the-as float 0.9) (the-as float 1.1)))) - (loop - (ja-no-eval :group! plant-boss-vine-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide 'die) (go plant-boss-vine-die (the-as symbol (-> block param 0)))) + (('hit) (go plant-boss-vine-hit (the-as basic (-> block param 0)))))) + :code + (behavior () + (let ((f30-0 (rand-vu-float-range (the-as float 0.9) (the-as float 1.1)))) + (loop + (ja-no-eval :group! plant-boss-vine-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))))) + :post ja-post) (defstate plant-boss-vine-hit (plant-boss-arm) - :event (-> plant-boss-vine-idle event) - :code (behavior ((arg0 basic)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! plant-boss-vine-hit-ja :num! (seek! (ja-aframe (the-as float 45.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 45.0) 0))) - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-vine-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 45.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go plant-boss-vine-idle) - ) - :post ja-post - ) - -(defstate plant-boss-vine-die (plant-boss-arm) - :code (behavior ((arg0 symbol)) - (when (not arg0) - (let ((f30-0 (rand-vu-float-range (the-as float 0.0) (the-as float 1.0))) - (gp-0 (current-time)) - ) - (until (time-elapsed? gp-0 (the int (* 300.0 f30-0))) - (ja :num! (loop!)) - (suspend) - ) - ) + :event + (-> plant-boss-vine-idle + event) + :code + (behavior ((arg0 basic)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! plant-boss-vine-hit-ja :num! (seek! (ja-aframe (the-as float 45.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 45.0) 0)))) + (ja-no-eval :num! (seek!)) (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-vine-die-ja :num! (seek!) :frame-num 0.0) + (ja-no-eval :group! plant-boss-vine-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 45.0) 0)) (until (ja-done? 0) - (ja-blend-eval) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (go plant-boss-vine-idle)) + :post ja-post) -(defstate plant-boss-root-idle (plant-boss-arm) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide 'die) - (go plant-boss-root-die (the-as symbol (-> block param 0))) - ) - ) - ) - :code (behavior () - (let ((f30-0 (rand-vu-float-range (the-as float 0.9) (the-as float 1.1)))) - (loop - (ja-no-eval :group! plant-boss-root-idle-ja :num! (seek! max f30-0) :frame-num 0.0) +(defstate plant-boss-vine-die (plant-boss-arm) + :code + (behavior ((arg0 symbol)) + (when (not arg0) + (let ((f30-0 (rand-vu-float-range (the-as float 0.0) (the-as float 1.0))) + (gp-0 (current-time))) + (until (time-elapsed? gp-0 (the int (* 300.0 f30-0))) + (ja :num! (loop!)) + (suspend))) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! plant-boss-vine-die-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (ja-blend-eval) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))))) + :post ja-post) + +(defstate plant-boss-root-idle (plant-boss-arm) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide 'die) (go plant-boss-root-die (the-as symbol (-> block param 0)))))) + :code + (behavior () + (let ((f30-0 (rand-vu-float-range (the-as float 0.9) (the-as float 1.1)))) + (loop + (ja-no-eval :group! plant-boss-root-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))))) + :post ja-post) (defstate plant-boss-root-die (plant-boss-arm) - :code (behavior ((arg0 symbol)) - (when (not arg0) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 4)) - (+! (-> self root trans z) (* -4096.0 (seconds-per-frame))) - (suspend) - ) - ) - ) - ) - :post ja-post - ) + :code + (behavior ((arg0 symbol)) + (when (not arg0) + (let ((gp-0 (current-time))) + (until (time-elapsed? gp-0 (seconds 4)) + (+! (-> self root trans z) (* -4096.0 (seconds-per-frame))) + (suspend))))) + :post ja-post) (defbehavior plant-boss-arm-init plant-boss-arm ((arg0 vector) (arg1 float) (arg2 int)) (stack-size-set! (-> self main-thread) 128) @@ -544,37 +411,31 @@ (set! (-> s1-0 prim-core offense) (collide-offense no-offense)) (set! (-> s1-0 transform-index) 5) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 81920.0) - (append-prim s2-0 s1-0) - ) + (append-prim s2-0 s1-0)) (let ((s1-1 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 1)))) (set! (-> s1-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s1-1 collide-with) (collide-kind target)) (set! (-> s1-1 prim-core action) (collide-action solid)) (set! (-> s1-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-1 local-sphere) 0.0 12288.0 0.0 12288.0) - (append-prim s2-0 s1-1) - ) + (append-prim s2-0 s1-1)) (let ((s1-2 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 2)))) (set! (-> s1-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s1-2 collide-with) (collide-kind target)) (set! (-> s1-2 prim-core action) (collide-action solid)) (set! (-> s1-2 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-2 local-sphere) 0.0 20480.0 0.0 12288.0) - (append-prim s2-0 s1-2) - ) - ) + (append-prim s2-0 s1-2))) (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) (backup-collide-with-as s3-0) - (set! (-> self root) s3-0) - ) + (set! (-> self root) s3-0)) (set! (-> self root trans quad) (-> arg0 quad)) (set-yaw-angle-clear-roll-pitch! (-> self root) arg1) (set! (-> self side) arg2) (initialize-skeleton self *plant-boss-arm-sg* '()) (set! (-> self draw shadow-ctrl) *plant-boss-shadow-control*) (go plant-boss-arm-idle) - (none) - ) + (none)) (defbehavior plant-boss-back-arms-init plant-boss-arm ((arg0 vector) (arg1 float) (arg2 int)) (stack-size-set! (-> self main-thread) 128) @@ -592,29 +453,24 @@ (set! (-> s1-0 prim-core action) (collide-action solid)) (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) -32768.0 6144.0 32768.0 4915.2) - (append-prim s2-0 s1-0) - ) + (append-prim s2-0 s1-0)) (let ((s1-1 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) (set! (-> s1-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s1-1 collide-with) (collide-kind target)) (set! (-> s1-1 prim-core action) (collide-action solid)) (set! (-> s1-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-1 local-sphere) -28672.0 6144.0 20480.0 4915.2) - (append-prim s2-0 s1-1) - ) - ) + (append-prim s2-0 s1-1))) (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) (backup-collide-with-as s3-0) - (set! (-> self root) s3-0) - ) + (set! (-> self root) s3-0)) (set! (-> self root trans quad) (-> arg0 quad)) (set-yaw-angle-clear-roll-pitch! (-> self root) arg1) (set! (-> self side) arg2) (initialize-skeleton self *plant-boss-back-arms-sg* '()) (set! (-> self draw shadow-ctrl) *plant-boss-shadow-control*) (go plant-boss-back-arms-idle) - (none) - ) + (none)) (defbehavior plant-boss-vine-init plant-boss-arm ((arg0 vector) (arg1 vector) (arg2 float) (arg3 int)) (stack-size-set! (-> self main-thread) 128) @@ -625,8 +481,7 @@ (set! (-> self side) arg3) (initialize-skeleton self *plant-boss-vine-sg* '()) (go plant-boss-vine-idle) - (none) - ) + (none)) (defbehavior plant-boss-root-init plant-boss-arm ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 int)) (stack-size-set! (-> self main-thread) 128) @@ -637,242 +492,165 @@ (set! (-> self side) arg3) (initialize-skeleton self *plant-boss-root-sg* '()) (go plant-boss-root-idle) - (none) - ) + (none)) (defstate plant-boss-leaf-idle (plant-boss-leaf) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go plant-boss-leaf-open (the-as symbol (-> block param 0))) - ) - (('die) - (go plant-boss-leaf-die (the-as basic (-> block param 0))) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (loop - (case (-> self side) - ((1) - (dotimes (gp-0 4) - (ja-no-eval :group! plant-boss-leaf-stubby-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (else - (dotimes (gp-1 5) - (ja-no-eval :group! plant-boss-leaf-stubby-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go plant-boss-leaf-open (the-as symbol (-> block param 0)))) + (('die) (go plant-boss-leaf-die (the-as basic (-> block param 0)))))) + :code + (behavior ((arg0 symbol)) + (loop + (case (-> self side) + ((1) + (dotimes (gp-0 4) + (ja-no-eval :group! plant-boss-leaf-stubby-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (else + (dotimes (gp-1 5) + (ja-no-eval :group! plant-boss-leaf-stubby-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))) + :post ja-post) (defstate plant-boss-leaf-open (plant-boss-leaf) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('kill) - (go plant-boss-leaf-close) - ) - (('die) - (go plant-boss-leaf-die (the-as basic (-> block param 0))) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('kill) (go plant-boss-leaf-close)) + (('die) (go plant-boss-leaf-die (the-as basic (-> block param 0)))))) :trans rider-trans - :code (behavior ((arg0 symbol)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.1)) - (case (-> self side) - ((1) - (ja-no-eval :group! plant-boss-leaf-grow-right-ja - :num! (seek! (ja-aframe (the-as float 30.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 30.0) 0))) - ) - (sound-play "plant-leaf") - (ja-no-eval :group! plant-boss-leaf-grow-right-ja :num! (seek!) :frame-num (ja-aframe (the-as float 30.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! plant-boss-leaf-grow-left-ja - :num! (seek! (ja-aframe (the-as float 30.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 30.0) 0))) - ) - (sound-play "plant-leaf") - (ja-no-eval :group! plant-boss-leaf-grow-left-ja :num! (seek!) :frame-num (ja-aframe (the-as float 30.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go plant-boss-leaf-open-idle #f) - ) - :post rider-post - ) + :code + (behavior ((arg0 symbol)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.1)) + (case (-> self side) + ((1) + (ja-no-eval :group! plant-boss-leaf-grow-right-ja :num! (seek! (ja-aframe (the-as float 30.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 30.0) 0)))) + (sound-play "plant-leaf") + (ja-no-eval :group! plant-boss-leaf-grow-right-ja :num! (seek!) :frame-num (ja-aframe (the-as float 30.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! plant-boss-leaf-grow-left-ja :num! (seek! (ja-aframe (the-as float 30.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 30.0) 0)))) + (sound-play "plant-leaf") + (ja-no-eval :group! plant-boss-leaf-grow-left-ja :num! (seek!) :frame-num (ja-aframe (the-as float 30.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go plant-boss-leaf-open-idle #f)) + :post rider-post) (defstate plant-boss-leaf-open-idle (plant-boss-leaf) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('kill) - (set! (-> self state-object) #t) - (let ((v0-0 (the-as object (+ (current-time) (the-as time-frame (-> block param 0)))))) - (set! (-> self state-time-frame) (the-as time-frame v0-0)) - v0-0 - ) - ) - (('bonk) - (if (not (-> self state-object)) - (go plant-boss-leaf-bounce) - ) - ) - (('die) - (go plant-boss-leaf-die (the-as basic (-> block param 0))) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('kill) + (set! (-> self state-object) #t) + (let ((v0-0 (the-as object (+ (current-time) (the-as time-frame (-> block param 0)))))) + (set! (-> self state-time-frame) (the-as time-frame v0-0)) + v0-0)) + (('bonk) (if (not (-> self state-object)) (go plant-boss-leaf-bounce))) + (('die) (go plant-boss-leaf-die (the-as basic (-> block param 0)))))) :trans rider-trans - :code (behavior ((arg0 symbol)) - (local-vars (v1-19 symbol)) - (set! (-> self state-object) arg0) - (case (ja-group) - ((plant-boss-leaf-right-bounce-ja plant-boss-leaf-left-bounce-ja) - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - (case (-> self side) - ((1) - (ja :group! plant-boss-leaf-idle-right-ja) - ) - (else - (ja :group! plant-boss-leaf-idle-left-ja) - ) - ) - (until v1-19 - (suspend) - (ja :num! (loop!)) - (set! v1-19 (and (-> self state-object) (< (-> self state-time-frame) (current-time)))) - ) - (go plant-boss-leaf-close) - ) - :post rider-post - ) + :code + (behavior ((arg0 symbol)) + (local-vars (v1-19 symbol)) + (set! (-> self state-object) arg0) + (case (ja-group) + ((plant-boss-leaf-right-bounce-ja plant-boss-leaf-left-bounce-ja) (ja-channel-push! 1 (seconds 0.1)))) + (case (-> self side) + ((1) (ja :group! plant-boss-leaf-idle-right-ja)) + (else (ja :group! plant-boss-leaf-idle-left-ja))) + (until v1-19 + (suspend) + (ja :num! (loop!)) + (set! v1-19 (and (-> self state-object) (< (-> self state-time-frame) (current-time))))) + (go plant-boss-leaf-close)) + :post rider-post) (defstate plant-boss-leaf-bounce (plant-boss-leaf) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('kill) - (set! (-> self state-object) #t) - (let ((v0-0 (the-as object (+ (current-time) (the-as time-frame (-> block param 0)))))) - (set! (-> self state-time-frame) (the-as time-frame v0-0)) - v0-0 - ) - ) - (('die) - (go plant-boss-leaf-die (the-as basic (-> block param 0))) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('kill) + (set! (-> self state-object) #t) + (let ((v0-0 (the-as object (+ (current-time) (the-as time-frame (-> block param 0)))))) + (set! (-> self state-time-frame) (the-as time-frame v0-0)) + v0-0)) + (('die) (go plant-boss-leaf-die (the-as basic (-> block param 0)))))) :trans rider-trans - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (case (-> self side) - ((1) - (ja-no-eval :group! plant-boss-leaf-right-bounce-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! plant-boss-leaf-left-bounce-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go plant-boss-leaf-open-idle (-> self state-object)) - ) - :post rider-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (case (-> self side) + ((1) + (ja-no-eval :group! plant-boss-leaf-right-bounce-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! plant-boss-leaf-left-bounce-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))))) + (go plant-boss-leaf-open-idle (-> self state-object))) + :post rider-post) (defstate plant-boss-leaf-close (plant-boss-leaf) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (go plant-boss-leaf-die (the-as basic (-> block param 0))) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) (go plant-boss-leaf-die (the-as basic (-> block param 0)))))) :trans rider-trans - :code (behavior () - (case (-> self side) - ((1) - (sound-play "plant-leaf") - (ja-no-eval :group! plant-boss-leaf-grow-right-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - (else - (sound-play "plant-leaf") - (ja-no-eval :group! plant-boss-leaf-grow-left-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - (go plant-boss-leaf-idle #f) - ) - :post rider-post - ) + :code + (behavior () + (case (-> self side) + ((1) + (sound-play "plant-leaf") + (ja-no-eval :group! plant-boss-leaf-grow-right-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0)))) + (else + (sound-play "plant-leaf") + (ja-no-eval :group! plant-boss-leaf-grow-left-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))))) + (go plant-boss-leaf-idle #f)) + :post rider-post) (defstate plant-boss-leaf-die (plant-boss-leaf) - :code (behavior ((arg0 basic)) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior ((arg0 basic)) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend))) + :post ja-post) (defbehavior plant-boss-leaf-init plant-boss-leaf ((arg0 vector) (arg1 float) (arg2 int)) (stack-size-set! (-> self main-thread) 128) (let ((s3-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s3-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s3-0 reaction) default-collision-reaction) - (set! (-> s3-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s3-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s3-0 1) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) @@ -881,822 +659,582 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 12288.0 13926.4) - (set-root-prim! s3-0 s2-0) - ) + (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) s3-0) - ) + (set! (-> self root) s3-0)) (set! (-> self root trans quad) (-> arg0 quad)) (set-yaw-angle-clear-roll-pitch! (-> self root) arg1) (set! (-> self side) arg2) (initialize-skeleton self *plant-boss-leaf-sg* '()) (set! (-> self draw shadow-ctrl) *plant-boss-shadow-control*) (go plant-boss-leaf-idle #f) - (none) - ) + (none)) (defstate plant-boss-far-idle (plant-boss) - :code (behavior () - (remove-setting! 'music) - (let ((gp-0 (-> self child))) - (while gp-0 - (let ((s5-0 (ppointer->process gp-0))) - (set! gp-0 (-> gp-0 0 brother)) - (if (type-type? (-> s5-0 type) aphid) - (deactivate s5-0) - ) - ) - ) - ) - (set! (-> self aphid-count) 0) - (let ((v1-9 (-> self neck))) - (set! (-> v1-9 blend) 0.0) - ) - (let ((v1-10 (-> self body))) - (set! (-> v1-10 blend) 0.0) - ) - (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) - (set-mode! (-> self body) (joint-mod-handler-mode flex-blend)) - (set! (-> self body flex-blend) 0.0) - (ja-channel-set! 1) - (loop - (ja-no-eval :group! plant-boss-main-initial-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek! (-> self energy) (the-as float 0.25) (seconds-per-frame)) - (if (and (and *target* (>= 245760.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (< (fabs (- (-> (target-pos 0) y) (-> self root trans y))) 40960.0) - ) - (go plant-boss-intro) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (remove-setting! 'music) + (let ((gp-0 (-> self child))) + (while gp-0 + (let ((s5-0 (ppointer->process gp-0))) + (set! gp-0 (-> gp-0 0 brother)) + (if (type-type? (-> s5-0 type) aphid) (deactivate s5-0))))) + (set! (-> self aphid-count) 0) + (let ((v1-9 (-> self neck))) (set! (-> v1-9 blend) 0.0)) + (let ((v1-10 (-> self body))) (set! (-> v1-10 blend) 0.0)) + (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) + (set-mode! (-> self body) (joint-mod-handler-mode flex-blend)) + (set! (-> self body flex-blend) 0.0) + (ja-channel-set! 1) + (loop + (ja-no-eval :group! plant-boss-main-initial-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self energy) (the-as float 0.25) (seconds-per-frame)) + (if (and (and *target* (>= 245760.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (< (fabs (- (-> (target-pos 0) y) (-> self root trans y))) 40960.0)) + (go plant-boss-intro)) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate plant-boss-intro (plant-boss) - :code (behavior () - (set-setting! 'music 'danger 0.0 0) - (send-event *target* 'reset-pickup 'eco) - (let ((v1-9 (-> self entity extra perm))) - (logior! (-> v1-9 status) (entity-perm-status user-set-from-cstage)) - (b! (zero? (-> v1-9 user-int8 2)) cfg-5 :delay (empty-form)) - ) - (ja-channel-push! 1 (seconds 0.5)) - (ja :group! plant-boss-main-intro-ja :num! (identity (ja-aframe (the-as float 510.0) 0))) - (b! #t cfg-3 :delay (nop!)) - (label cfg-2) - (seek! (-> self energy) (the-as float 1.0) (* 2.0 (seconds-per-frame))) - (suspend) - (label cfg-3) - (let ((v1-22 (-> self skel channel))) - (b! (!= (-> self skel root-channel 0) v1-22) cfg-2 :delay (nop!)) - ) - (set-mode! (-> self neck) (joint-mod-handler-mode world-look-at)) - (set-mode! (-> self body) (joint-mod-handler-mode world-look-at)) - (b! #t cfg-17 :delay (nop!)) - (label cfg-5) - (if (not (handle->process (-> self cam-tracker))) - (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior camera-tracker - () - (while (not (process-grab? *target*)) - (suspend) - ) - (ambient-hint-spawn "gamcam28" (the-as vector #f) *entity-pool* 'ambient) - (send-event *camera* 'blend-from-as-fixed) - (camera-look-at (the-as pair (ppointer->process (-> self parent))) (the-as uint 13)) - (camera-change-to "camera-220" 0 #f) - (while (not (send-event *camera* 'intro-done?)) - (suspend) - ) - (camera-change-to "camera-222" 600 #f) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 2)) - (suspend) - ) - ) - (while (not (process-release? (handle->process (-> self grab-target)))) - (suspend) - ) - (send-event *camera* 'blend-from-as-fixed) - (camera-look-at (the-as pair *target*) (the-as uint 0)) - (camera-change-to (the-as string 'base) 150 #f) - (none) - ) - :to self - ) - ) - ) - ) - (let ((v1-37 (-> self neck))) - (set! (-> v1-37 blend) 0.0) - ) - (let ((v1-38 (-> self body))) - (set! (-> v1-38 blend) 0.0) - ) - (set-mode! (-> self neck) (joint-mod-handler-mode world-look-at)) - (set-mode! (-> self body) (joint-mod-handler-mode world-look-at)) - (set! (-> self body flex-blend) 0.0) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.5)) - (ja-no-eval :group! plant-boss-main-intro-ja :num! (seek! (ja-aframe (the-as float 510.0) 0)) :frame-num 0.0) - (until (ja-done? 0) - (seek! (-> self energy) (the-as float 1.0) (* 0.2 (seconds-per-frame))) - (ja-blend-eval) + :code + (behavior () + (set-setting! 'music 'danger 0.0 0) + (send-event *target* 'reset-pickup 'eco) + (let ((v1-9 (-> self entity extra perm))) + (logior! (-> v1-9 status) (entity-perm-status user-set-from-cstage)) + (b! (zero? (-> v1-9 user-int8 2)) cfg-5 :delay (empty-form))) + (ja-channel-push! 1 (seconds 0.5)) + (ja :group! plant-boss-main-intro-ja :num! (identity (ja-aframe (the-as float 510.0) 0))) + (b! #t cfg-3 :delay (nop!)) + (label cfg-2) + (seek! (-> self energy) (the-as float 1.0) (* 2.0 (seconds-per-frame))) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 510.0) 0))) - ) - (ja-no-eval :num! (seek!)) - (let ((v1-77 (-> self entity extra perm))) - (logior! (-> v1-77 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-77 user-int8 2) 1) - ) - (label cfg-17) - (set! (-> self cycle-count) 0) - (set! (-> self snap-count) 0) - (go plant-boss-reset 0) - ) - :post ja-post - ) + (label cfg-3) + (let ((v1-22 (-> self skel channel))) (b! (!= (-> self skel root-channel 0) v1-22) cfg-2 :delay (nop!))) + (set-mode! (-> self neck) (joint-mod-handler-mode world-look-at)) + (set-mode! (-> self body) (joint-mod-handler-mode world-look-at)) + (b! #t cfg-17 :delay (nop!)) + (label cfg-5) + (if (not (handle->process (-> self cam-tracker))) + (set! (-> self cam-tracker) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior camera-tracker () + (while (not (process-grab? *target*)) + (suspend)) + (ambient-hint-spawn "gamcam28" (the-as vector #f) *entity-pool* 'ambient) + (send-event *camera* 'blend-from-as-fixed) + (camera-look-at (the-as pair (ppointer->process (-> self parent))) (the-as uint 13)) + (camera-change-to "camera-220" 0 #f) + (while (not (send-event *camera* 'intro-done?)) + (suspend)) + (camera-change-to "camera-222" 600 #f) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 2)) (suspend))) + (while (not (process-release? (handle->process (-> self grab-target)))) + (suspend)) + (send-event *camera* 'blend-from-as-fixed) + (camera-look-at (the-as pair *target*) (the-as uint 0)) + (camera-change-to (the-as string 'base) 150 #f) + (none)) + :to + self)))) + (let ((v1-37 (-> self neck))) (set! (-> v1-37 blend) 0.0)) + (let ((v1-38 (-> self body))) (set! (-> v1-38 blend) 0.0)) + (set-mode! (-> self neck) (joint-mod-handler-mode world-look-at)) + (set-mode! (-> self body) (joint-mod-handler-mode world-look-at)) + (set! (-> self body flex-blend) 0.0) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.5)) + (ja-no-eval :group! plant-boss-main-intro-ja :num! (seek! (ja-aframe (the-as float 510.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self energy) (the-as float 1.0) (* 0.2 (seconds-per-frame))) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 510.0) 0)))) + (ja-no-eval :num! (seek!)) + (let ((v1-77 (-> self entity extra perm))) + (logior! (-> v1-77 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-77 user-int8 2) 1)) + (label cfg-17) + (set! (-> self cycle-count) 0) + (set! (-> self snap-count) 0) + (go plant-boss-reset 0)) + :post ja-post) (defstate plant-boss-idle (plant-boss) :event plant-boss-default-event-handler - :enter (behavior () - (set-setting! 'music 'danger 0.0 0) - (set-time! (-> self state-time)) - (set! (-> self body flex-blend) 0.0) - (set! (-> self neck flex-blend) 1.0) - ) - :trans (behavior () - (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self root trans)))) - (if (< 409600.0 f30-0) - (go plant-boss-far-idle) - ) - (if (and (< f30-0 143360.0) - (time-elapsed? (-> self state-time) (cond - ((>= (-> self try) 15) - 1500 - ) - ((>= (-> self try) 10) - 1200 - ) - ((>= (-> self try) 5) - 900 - ) - (else - 600 - ) - ) - ) - *target* - (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) - (go plant-boss-attack 1) - ) - ) - ) - :code (behavior () - (cond - ((ja-group? plant-boss-main-reset-ja) - (ja-channel-push! 1 (seconds 0.5)) - (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 60.0) 0)) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? plant-boss-main-vulnerable-ja) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-main-vulnerable2idle-ja - :num! (seek! (ja-aframe (the-as float 75.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 75.0) 0))) - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 75.0) 0)) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? plant-boss-main-intro-ja) - ) - (else - (ja-channel-push! 1 (seconds 0.25)) - ) - ) - (loop - (when (or (and *cheat-mode* (cpad-hold? 1 r3)) (zero? (-> self aphid-count))) - (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num 0.0) - (go plant-boss-vulnerable) - ) - (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (and *cheat-mode* (cpad-hold? 1 r3)) + :enter + (behavior () + (set-setting! 'music 'danger 0.0 0) + (set-time! (-> self state-time)) + (set! (-> self body flex-blend) 0.0) + (set! (-> self neck flex-blend) 1.0)) + :trans + (behavior () + (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self root trans)))) + (if (< 409600.0 f30-0) (go plant-boss-far-idle)) + (if (and (< f30-0 143360.0) + (time-elapsed? (-> self state-time) + (cond + ((>= (-> self try) 15) 1500) + ((>= (-> self try) 10) 1200) + ((>= (-> self try) 5) 900) + (else 600))) + *target* + (not (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) + (go plant-boss-attack 1)))) + :code + (behavior () + (cond + ((ja-group? plant-boss-main-reset-ja) + (ja-channel-push! 1 (seconds 0.5)) + (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 60.0) 0)) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!)))) + ((ja-group? plant-boss-main-vulnerable-ja) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! plant-boss-main-vulnerable2idle-ja :num! (seek! (ja-aframe (the-as float 75.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 75.0) 0)))) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 75.0) 0)) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!)))) + ((ja-group? plant-boss-main-intro-ja)) + (else (ja-channel-push! 1 (seconds 0.25)))) + (loop + (when (or (and *cheat-mode* (cpad-hold? 1 r3)) (zero? (-> self aphid-count))) + (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num 0.0) + (go plant-boss-vulnerable)) (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num 0.0) - (go plant-boss-vulnerable) - ) - (when (rand-vu-percent? (the-as float 0.2)) - (ja-no-eval :group! plant-boss-main-idle-alt-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - :post plant-boss-post - ) + (ja :num! (seek!))) + (when (and *cheat-mode* (cpad-hold? 1 r3)) + (ja-no-eval :group! plant-boss-main-idle-ja :num! (seek!) :frame-num 0.0) + (go plant-boss-vulnerable)) + (when (rand-vu-percent? (the-as float 0.2)) + (ja-no-eval :group! plant-boss-main-idle-alt-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) + :post plant-boss-post) (defstate plant-boss-spawn (plant-boss) :event plant-boss-default-event-handler - :enter (behavior () - (when (not (-> self try-inc)) - (let ((gp-0 (-> self entity extra perm))) - (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) - (seekl! (-> gp-0 user-int8 0) 255 1) - (set! (-> self try) (-> gp-0 user-int8 0)) - ) - (set! (-> self try-inc) #t) - ) - (set-time! (-> self state-time)) - (+! (-> self cycle-count) 1) - (set! (-> self snap-count) 0) - (set! (-> self body flex-blend) 0.0) - (set! (-> self neck flex-blend) 1.0) - (set! (-> self want-aphid-count) (min (- 4 (the int (-> self health))) (cond - ((>= (-> self try) 15) - 1 - ) - ((>= (-> self try) 10) - 2 - ) - (else - 3 - ) - ) - ) - ) - ) - :trans (behavior () - (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self root trans)))) - (if (< 409600.0 f0-0) - (go plant-boss-far-idle) - ) - ) - (cond - ((zero? (-> self want-aphid-count)) - enter-state - (let ((v1-7 (the int (-> self health)))) - (go plant-boss-attack (cond - ((= v1-7 2) - 2 - ) - ((= v1-7 1) - 3 - ) - (else - 1 - ) - ) - ) - ) - ) - ((time-elapsed? (-> self aphid-spawn-time) (seconds 1.4)) - (when (process-spawn aphid self (-> self root trans) (target-pos 0) :to self) - (+! (-> self aphid-count) 1) - (seekl! (-> self want-aphid-count) 0 1) - (set-time! (-> self aphid-spawn-time)) - ) - ) - ) - ) - :code (-> plant-boss-idle code) - :post plant-boss-post - ) + :enter + (behavior () + (when (not (-> self try-inc)) + (let ((gp-0 (-> self entity extra perm))) + (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) + (seekl! (-> gp-0 user-int8 0) 255 1) + (set! (-> self try) (-> gp-0 user-int8 0))) + (set! (-> self try-inc) #t)) + (set-time! (-> self state-time)) + (+! (-> self cycle-count) 1) + (set! (-> self snap-count) 0) + (set! (-> self body flex-blend) 0.0) + (set! (-> self neck flex-blend) 1.0) + (set! (-> self want-aphid-count) + (min (- 4 (the int (-> self health))) + (cond + ((>= (-> self try) 15) 1) + ((>= (-> self try) 10) 2) + (else 3))))) + :trans + (behavior () + (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self root trans)))) + (if (< 409600.0 f0-0) (go plant-boss-far-idle))) + (cond + ((zero? (-> self want-aphid-count)) + enter-state + (let ((v1-7 (the int (-> self health)))) + (go plant-boss-attack + (cond + ((= v1-7 2) 2) + ((= v1-7 1) 3) + (else 1))))) + ((time-elapsed? (-> self aphid-spawn-time) (seconds 1.4)) + (when (process-spawn aphid self (-> self root trans) (target-pos 0) :to self) + (+! (-> self aphid-count) 1) + (seekl! (-> self want-aphid-count) 0 1) + (set-time! (-> self aphid-spawn-time)))))) + :code + (-> plant-boss-idle + code) + :post plant-boss-post) (defstate plant-boss-vulnerable (plant-boss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (send-event - proc - 'shove - (-> block param 0) - (static-attack-info ((shove-up (meters 2)) (shove-back (meters 6)))) - ) - (go plant-boss-hit (the-as symbol (-> block param 1))) - ) - ) - (else - (plant-boss-generic-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self body flex-blend) 0.0) - (set! (-> self neck flex-blend) 0.0) - (set! (-> self attack-prim 0 local-sphere w) 12288.0) - (set! (-> self attack-prim 0 prim-core offense) (collide-offense indestructible)) - (logior! (-> self attack-prim 0 prim-core action) (collide-action solid)) - ) - :exit (behavior () - (send-event (ppointer->process (-> self leaf 1)) 'kill 0) - (send-event (ppointer->process (-> self leaf 0)) 'kill 150) - (set! (-> self attack-prim 0 local-sphere w) 16384.0) - (set! (-> self attack-prim 0 prim-core offense) (collide-offense no-offense)) - (logclear! (-> self attack-prim 0 prim-core action) (collide-action solid)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-main-idle2vulnerable-ja - :num! (seek! (ja-aframe (the-as float 60.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 60.0) 0))) - ) - (send-event (ppointer->process (-> self leaf 1)) 'trigger) - (ja-no-eval :group! plant-boss-main-idle2vulnerable-ja - :num! (seek! (ja-aframe (the-as float 120.0) 0)) - :frame-num (ja-aframe (the-as float 60.0) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 120.0) 0))) - ) - (send-event (ppointer->process (-> self leaf 0)) 'trigger) - (ja-no-eval :group! plant-boss-main-idle2vulnerable-ja - :num! (seek!) - :frame-num (ja-aframe (the-as float 120.0) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-5 (cond - ((>= (-> self try) 15) - 6000 - ) - ((>= (-> self try) 10) - 3600 - ) - ((>= (-> self try) 5) - 3000 - ) - (else - 2400 - ) - ) - ) - ) - (while (not (time-elapsed? (-> self state-time) gp-5)) - (ja-no-eval :group! plant-boss-main-vulnerable-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go plant-boss-spawn) - ) - :post plant-boss-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (when ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1)) + (send-event proc 'shove (-> block param 0) (static-attack-info ((shove-up (meters 2)) (shove-back (meters 6))))) + (go plant-boss-hit (the-as symbol (-> block param 1))))) + (else (plant-boss-generic-event-handler proc argc message block)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self body flex-blend) 0.0) + (set! (-> self neck flex-blend) 0.0) + (set! (-> self attack-prim 0 local-sphere w) 12288.0) + (set! (-> self attack-prim 0 prim-core offense) (collide-offense indestructible)) + (logior! (-> self attack-prim 0 prim-core action) (collide-action solid))) + :exit + (behavior () + (send-event (ppointer->process (-> self leaf 1)) 'kill 0) + (send-event (ppointer->process (-> self leaf 0)) 'kill 150) + (set! (-> self attack-prim 0 local-sphere w) 16384.0) + (set! (-> self attack-prim 0 prim-core offense) (collide-offense no-offense)) + (logclear! (-> self attack-prim 0 prim-core action) (collide-action solid))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! plant-boss-main-idle2vulnerable-ja :num! (seek! (ja-aframe (the-as float 60.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 60.0) 0)))) + (send-event (ppointer->process (-> self leaf 1)) 'trigger) + (ja-no-eval :group! + plant-boss-main-idle2vulnerable-ja + :num! + (seek! (ja-aframe (the-as float 120.0) 0)) + :frame-num + (ja-aframe (the-as float 60.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 120.0) 0)))) + (send-event (ppointer->process (-> self leaf 0)) 'trigger) + (ja-no-eval :group! plant-boss-main-idle2vulnerable-ja :num! (seek!) :frame-num (ja-aframe (the-as float 120.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-5 (cond + ((>= (-> self try) 15) 6000) + ((>= (-> self try) 10) 3600) + ((>= (-> self try) 5) 3000) + (else 2400)))) + (while (not (time-elapsed? (-> self state-time) gp-5)) + (ja-no-eval :group! plant-boss-main-vulnerable-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go plant-boss-spawn)) + :post plant-boss-post) (defstate plant-boss-attack (plant-boss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (not (ja-group? plant-boss-main-vulnerable2idle-ja)) - ) - (when (send-event proc 'attack-or-shove (-> block param 0) (static-attack-info ((mode 'plant-boss)))) - (let ((v0-1 (the-as object #t))) - (set! (-> self ate) (the-as symbol v0-1)) - v0-1 - ) - ) - ) - ) - (else - (plant-boss-default-event-handler proc argc message block) - ) - ) - ) - :code (behavior ((arg0 int)) - (local-vars (v1-64 symbol)) - (+! (-> self snap-count) 1) - (set! (-> self ate) #f) - (set! (-> self interp) 0.0) - (let ((s5-0 #f)) - (if (ja-group? plant-boss-main-reset-ja) - (set! s5-0 #t) - ) - (ja-channel-push! 2 (seconds 0.25)) - (ja :group! plant-boss-main-attack-ja :num! min) - (ja :chan 1 :group! plant-boss-main-attack-close-ja :num! min) - (when s5-0 - (ja :num-func num-func-identity :frame-num (ja-aframe (the-as float 100.0) 0)) - (ja :chan 1 :num-func num-func-identity :frame-num (ja-aframe (the-as float 100.0) 0)) - ) - ) - (let ((f30-0 (lerp-scale - (the-as float 0.0) - (the-as float 1.0) - (vector-vector-distance (target-pos 0) (-> self root trans)) - (the-as float 26624.0) - (the-as float 86016.0) - ) - ) - ) - (until (or v1-64 (ja-done? 0)) - (seek! (-> self body flex-blend) (the-as float 1.0) (* 2.0 (seconds-per-frame))) - (seek! (-> self neck flex-blend) (the-as float 0.0) (* 2.0 (seconds-per-frame))) - (set! f30-0 (seek - f30-0 - (lerp-scale - (the-as float 1.0) - (the-as float 0.0) - (vector-vector-distance (target-pos 0) (-> self root trans)) - (the-as float 26624.0) - (the-as float 86016.0) - ) - (* 2.0 (seconds-per-frame)) - ) - ) - (set! (-> self interp) f30-0) - (ja :num! (seek!)) - (ja :chan 1 :num! (chan 0) :frame-interp f30-0) - (suspend) - (set! v1-64 (>= (ja-aframe-num 0) 149.0)) - ) - ) - (go plant-boss-reset arg0) - ) - :post plant-boss-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1)) + (not (ja-group? plant-boss-main-vulnerable2idle-ja))) + (when (send-event proc 'attack-or-shove (-> block param 0) (static-attack-info ((mode 'plant-boss)))) + (let ((v0-1 (the-as object #t))) (set! (-> self ate) (the-as symbol v0-1)) v0-1)))) + (else (plant-boss-default-event-handler proc argc message block)))) + :code + (behavior ((arg0 int)) + (local-vars (v1-64 symbol)) + (+! (-> self snap-count) 1) + (set! (-> self ate) #f) + (set! (-> self interp) 0.0) + (let ((s5-0 #f)) + (if (ja-group? plant-boss-main-reset-ja) (set! s5-0 #t)) + (ja-channel-push! 2 (seconds 0.25)) + (ja :group! plant-boss-main-attack-ja :num! min) + (ja :chan 1 :group! plant-boss-main-attack-close-ja :num! min) + (when s5-0 + (ja :num-func num-func-identity :frame-num (ja-aframe (the-as float 100.0) 0)) + (ja :chan 1 :num-func num-func-identity :frame-num (ja-aframe (the-as float 100.0) 0)))) + (let ((f30-0 (lerp-scale (the-as float 0.0) + (the-as float 1.0) + (vector-vector-distance (target-pos 0) (-> self root trans)) + (the-as float 26624.0) + (the-as float 86016.0)))) + (until (or v1-64 (ja-done? 0)) + (seek! (-> self body flex-blend) (the-as float 1.0) (* 2.0 (seconds-per-frame))) + (seek! (-> self neck flex-blend) (the-as float 0.0) (* 2.0 (seconds-per-frame))) + (set! f30-0 + (seek f30-0 + (lerp-scale (the-as float 1.0) + (the-as float 0.0) + (vector-vector-distance (target-pos 0) (-> self root trans)) + (the-as float 26624.0) + (the-as float 86016.0)) + (* 2.0 (seconds-per-frame)))) + (set! (-> self interp) f30-0) + (ja :num! (seek!)) + (ja :chan 1 :num! (chan 0) :frame-interp f30-0) + (suspend) + (set! v1-64 (>= (ja-aframe-num 0) 149.0)))) + (go plant-boss-reset arg0)) + :post plant-boss-post) (defstate plant-boss-eat (plant-boss) :event plant-boss-generic-event-handler - :exit (behavior () - (logclear! (-> self skel status) (janim-status spool)) - (let ((a0-4 (handle->process (-> self camera)))) - (if a0-4 - (deactivate a0-4) - ) - ) - ) - :code (behavior () - (let ((f30-1 (the-as float (if (ja-group? plant-boss-main-attack-ja) - (fmax 129.0 (ja-aframe-num 0)) - 129.0 - ) - ) - ) - (gp-0 0) - ) - (send-event *camera* 'change-state cam-lookat 0) - (logior! (-> self skel status) (janim-status inited)) - (ja-channel-push! 2 (seconds 0.1)) - (ja :group! plant-boss-main-plant-boss-kill-ja :num! (identity (ja-aframe f30-1 0))) - (ja :chan 1 - :group! plant-boss-main-plant-boss-kill-close-ja - :num! (identity (ja-aframe f30-1 0)) - :frame-interp (-> self interp) - ) - (until (>= (ja-aframe-num 0) 285.0) - (try-preload-stream *art-control* "$GAMCAM29" 0 self (the-as float -99.0)) - (seek! (-> self energy) (the-as float 0.5) (* 0.2 (seconds-per-frame))) - (when (and (>= (ja-aframe-num 0) 175.0) (zero? gp-0)) - (set! gp-0 1) - (set! (-> self camera) (ppointer->handle (process-spawn othercam self 28 #f #t :to self))) - (logior! (-> self skel status) (janim-status spool)) - (ambient-hint-spawn "gamcam29" (the-as vector #f) *entity-pool* 'ambient) - ) - (when (and (>= (ja-aframe-num 0) 236.0) (= gp-0 1)) - (set! gp-0 2) - (send-event (handle->process (-> self camera)) 'joint "camera2") - ) - (seek! (-> self body flex-blend) (the-as float 0.0) (seconds-per-frame)) - (seek! (-> self interp) (the-as float 0.0) (seconds-per-frame)) - (ja :num! (seek! max 0.66)) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self interp)) - (suspend) - ) - ) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! plant-boss-main-swallow-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - (send-event *target* 'end-mode) - (logclear! (-> self skel status) (janim-status inited)) - (go plant-boss-idle) - ) - :post plant-boss-post - ) - -(defstate plant-boss-reset (plant-boss) - :event (-> plant-boss-eat event) - :code (behavior ((arg0 int)) - (let ((gp-0 #f)) - (cond - ((ja-group? plant-boss-main-intro-ja) - (set! gp-0 #t) - (ja-channel-push! 1 (seconds 0.5)) - ) - (else - (ja-channel-push! 1 (seconds 1)) - ) - ) - (ja-no-eval :group! plant-boss-main-reset-ja :num! (seek! (ja-aframe (the-as float 210.0) 0)) :frame-num 0.0) + :exit + (behavior () + (logclear! (-> self skel status) (janim-status spool)) + (let ((a0-4 (handle->process (-> self camera)))) (if a0-4 (deactivate a0-4)))) + :code + (behavior () + (let ((f30-1 (the-as float (if (ja-group? plant-boss-main-attack-ja) (fmax 129.0 (ja-aframe-num 0)) 129.0))) + (gp-0 0)) + (send-event *camera* 'change-state cam-lookat 0) + (logior! (-> self skel status) (janim-status inited)) + (ja-channel-push! 2 (seconds 0.1)) + (ja :group! plant-boss-main-plant-boss-kill-ja :num! (identity (ja-aframe f30-1 0))) + (ja :chan 1 + :group! + plant-boss-main-plant-boss-kill-close-ja + :num! + (identity (ja-aframe f30-1 0)) + :frame-interp (-> self interp)) + (until (>= (ja-aframe-num 0) 285.0) + (try-preload-stream *art-control* "$GAMCAM29" 0 self (the-as float -99.0)) + (seek! (-> self energy) (the-as float 0.5) (* 0.2 (seconds-per-frame))) + (when (and (>= (ja-aframe-num 0) 175.0) (zero? gp-0)) + (set! gp-0 1) + (set! (-> self camera) (ppointer->handle (process-spawn othercam self 28 #f #t :to self))) + (logior! (-> self skel status) (janim-status spool)) + (ambient-hint-spawn "gamcam29" (the-as vector #f) *entity-pool* 'ambient)) + (when (and (>= (ja-aframe-num 0) 236.0) (= gp-0 1)) + (set! gp-0 2) + (send-event (handle->process (-> self camera)) 'joint "camera2")) + (seek! (-> self body flex-blend) (the-as float 0.0) (seconds-per-frame)) + (seek! (-> self interp) (the-as float 0.0) (seconds-per-frame)) + (ja :num! (seek! max 0.66)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self interp)) + (suspend))) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! plant-boss-main-swallow-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (ja-blend-eval) - (seek! (-> self body flex-blend) (the-as float 0.0) (seconds-per-frame)) - (if (>= 1 arg0) - (seek! (-> self neck flex-blend) (the-as float 1.0) (seconds-per-frame)) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 210.0) 0))) - ) - (if (< 1 arg0) - (go plant-boss-attack (+ arg0 -1)) - ) - (ja-no-eval :group! plant-boss-main-reset-ja - :num! (seek! (ja-aframe (the-as float 240.0) 0)) - :frame-num (ja-aframe (the-as float 210.0) 0) - ) - (until (ja-done? 0) - (seek! (-> self body flex-blend) (the-as float 0.0) (seconds-per-frame)) - (seek! (-> self neck flex-blend) (the-as float 1.0) (* 2.0 (seconds-per-frame))) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 240.0) 0))) - ) - (ja-no-eval :num! (seek!)) - (if gp-0 - (go plant-boss-spawn) - (go plant-boss-idle) - ) - ) - ) - :post plant-boss-post - ) + (ja :num! (seek!))) + (send-event *target* 'end-mode) + (logclear! (-> self skel status) (janim-status inited)) + (go plant-boss-idle)) + :post plant-boss-post) -(defstate plant-boss-hit (plant-boss) - :event (-> plant-boss-eat event) - :code (behavior ((arg0 symbol)) - (let ((s5-0 (-> self child))) - (while s5-0 - (send-event (ppointer->process s5-0) 'hit arg0) - (set! s5-0 (-> s5-0 0 brother)) - ) - ) - (seek! (-> self health) (the-as float 0.0) (the-as float 1.0)) - (send-event (ppointer->process (-> self leaf 1)) 'kill 0) - (send-event (ppointer->process (-> self leaf 0)) 'kill 0) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.2)) - (cond - ((= arg0 'spin) - (ja-no-eval :group! plant-boss-main-hit-kick-ja - :num! (seek! (ja-aframe (the-as float 20.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 20.0) 0))) - ) - ) - ((= arg0 'spin-air) - (ja-no-eval :group! plant-boss-main-hit-jumpkick-ja - :num! (seek! (ja-aframe (the-as float 20.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 20.0) 0))) - ) - ) - (else - (ja-no-eval :group! plant-boss-main-hit-ja :num! (seek! (ja-aframe (the-as float 20.0) 0)) :frame-num 0.0) +(defstate plant-boss-reset (plant-boss) + :event + (-> plant-boss-eat + event) + :code + (behavior ((arg0 int)) + (let ((gp-0 #f)) + (cond + ((ja-group? plant-boss-main-intro-ja) (set! gp-0 #t) (ja-channel-push! 1 (seconds 0.5))) + (else (ja-channel-push! 1 (seconds 1)))) + (ja-no-eval :group! plant-boss-main-reset-ja :num! (seek! (ja-aframe (the-as float 210.0) 0)) :frame-num 0.0) (until (ja-done? 0) (ja-blend-eval) + (seek! (-> self body flex-blend) (the-as float 0.0) (seconds-per-frame)) + (if (>= 1 arg0) (seek! (-> self neck flex-blend) (the-as float 1.0) (seconds-per-frame))) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 20.0) 0))) - ) - ) - ) - (if (= (-> self health) 0.0) - (go plant-boss-dead #f) - ) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (go plant-boss-spawn) - ) - :post plant-boss-post - ) + (ja :num! (seek! (ja-aframe (the-as float 210.0) 0)))) + (if (< 1 arg0) (go plant-boss-attack (+ arg0 -1))) + (ja-no-eval :group! + plant-boss-main-reset-ja + :num! + (seek! (ja-aframe (the-as float 240.0) 0)) + :frame-num + (ja-aframe (the-as float 210.0) 0)) + (until (ja-done? 0) + (seek! (-> self body flex-blend) (the-as float 0.0) (seconds-per-frame)) + (seek! (-> self neck flex-blend) (the-as float 1.0) (* 2.0 (seconds-per-frame))) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 240.0) 0)))) + (ja-no-eval :num! (seek!)) + (if gp-0 (go plant-boss-spawn) (go plant-boss-idle)))) + :post plant-boss-post) + +(defstate plant-boss-hit (plant-boss) + :event + (-> plant-boss-eat + event) + :code + (behavior ((arg0 symbol)) + (let ((s5-0 (-> self child))) + (while s5-0 + (send-event (ppointer->process s5-0) 'hit arg0) + (set! s5-0 (-> s5-0 0 brother)))) + (seek! (-> self health) (the-as float 0.0) (the-as float 1.0)) + (send-event (ppointer->process (-> self leaf 1)) 'kill 0) + (send-event (ppointer->process (-> self leaf 0)) 'kill 0) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.2)) + (cond + ((= arg0 'spin) + (ja-no-eval :group! plant-boss-main-hit-kick-ja :num! (seek! (ja-aframe (the-as float 20.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 20.0) 0))))) + ((= arg0 'spin-air) + (ja-no-eval :group! plant-boss-main-hit-jumpkick-ja :num! (seek! (ja-aframe (the-as float 20.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 20.0) 0))))) + (else + (ja-no-eval :group! plant-boss-main-hit-ja :num! (seek! (ja-aframe (the-as float 20.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 20.0) 0)))))) + (if (= (-> self health) 0.0) (go plant-boss-dead #f)) + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (go plant-boss-spawn)) + :post plant-boss-post) (defstate plant-boss-dead (plant-boss) :event plant-boss-generic-event-handler - :code (behavior ((arg0 symbol)) - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self neck flex-blend) 0.0) - (set! (-> self body flex-blend) 0.0) - (let* ((s5-0 (get-task-control (game-task jungle-plant))) - (v1-5 (get-reminder s5-0 0)) - ) - (save-reminder s5-0 (logior v1-5 1) 0) - ) - (cond - (arg0 - (ja-channel-set! 1) - (ja :group! plant-boss-main-die-ja :num! max) - (suspend) - (if (not (task-complete? *game-info* (-> self entity extra perm task))) - (birth-pickup-at-point - (-> self node-list data 42 bone transform vector 3) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - ) - (else - (let ((s4-0 #f) - (s5-2 #f) - ) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.5)) - (ja-no-eval :group! plant-boss-main-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (when (< 100.0 (ja-aframe-num 0)) - (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) - (set-mode! (-> self body) (joint-mod-handler-mode flex-blend)) - ) - (when (and (>= (ja-aframe-num 0) 180.0) (not s4-0)) - (let ((s4-1 (-> self child))) - (while s4-1 - (send-event (ppointer->process s4-1) 'hide #f) - (set! s4-1 (-> s4-1 0 brother)) - ) - ) - (set! s4-0 #t) - ) - (when (and (>= (ja-aframe-num 0) 189.0) (not s5-2)) - (process-entity-status! self (entity-perm-status complete) #t) - (when (not (task-complete? *game-info* (-> self entity extra perm task))) - (set! s5-2 #t) - (birth-pickup-at-point - (-> self node-list data 42 bone transform vector 3) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - (let ((s5-3 (-> self child))) - (while s5-3 - (send-event (ppointer->process s5-3) 'die arg0) - (set! s5-3 (-> s5-3 0 brother)) - ) - ) - (set! (-> self death-prim 0 collide-with) (collide-kind target)) - (set! (-> self death-prim 0 prim-core collide-as) (collide-kind enemy)) - (set! (-> self death-prim 0 prim-core offense) (collide-offense indestructible)) - (logior! (-> self death-prim 0 prim-core action) (collide-action solid)) - (set! (-> self death-prim 1 prim-core collide-as) (collide-kind enemy)) - (set! (-> self death-prim 1 collide-with) (collide-kind target)) - (set! (-> self death-prim 1 prim-core offense) (collide-offense indestructible)) - (logior! (-> self death-prim 1 prim-core action) (collide-action solid)) - (set! (-> (find-prim-by-id (-> self root) (the-as uint 8)) prim-core action) (collide-action)) - 0 - (set! (-> (find-prim-by-id (-> self root) (the-as uint 16)) prim-core action) (collide-action)) - 0 - (logior! (-> self mask) (process-mask actor-pause)) - (remove-setting! 'music) - (go plant-boss-dead-idle) - ) - :post (behavior () - (plant-boss-post) - (do-push-aways! (-> self root)) - ) - ) + :code + (behavior ((arg0 symbol)) + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self neck flex-blend) 0.0) + (set! (-> self body flex-blend) 0.0) + (let* ((s5-0 (get-task-control (game-task jungle-plant))) + (v1-5 (get-reminder s5-0 0))) + (save-reminder s5-0 (logior v1-5 1) 0)) + (cond + (arg0 + (ja-channel-set! 1) + (ja :group! plant-boss-main-die-ja :num! max) + (suspend) + (if (not (task-complete? *game-info* (-> self entity extra perm task))) + (birth-pickup-at-point (-> self node-list data 42 bone transform vector 3) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f)))) + (else + (let ((s4-0 #f) + (s5-2 #f)) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.5)) + (ja-no-eval :group! plant-boss-main-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (when (< 100.0 (ja-aframe-num 0)) + (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) + (set-mode! (-> self body) (joint-mod-handler-mode flex-blend))) + (when (and (>= (ja-aframe-num 0) 180.0) (not s4-0)) + (let ((s4-1 (-> self child))) + (while s4-1 + (send-event (ppointer->process s4-1) 'hide #f) + (set! s4-1 (-> s4-1 0 brother)))) + (set! s4-0 #t)) + (when (and (>= (ja-aframe-num 0) 189.0) (not s5-2)) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (set! s5-2 #t) + (birth-pickup-at-point (-> self node-list data 42 bone transform vector 3) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f)))) + (suspend) + (ja :num! (seek!)))))) + (let ((s5-3 (-> self child))) + (while s5-3 + (send-event (ppointer->process s5-3) 'die arg0) + (set! s5-3 (-> s5-3 0 brother)))) + (set! (-> self death-prim 0 collide-with) (collide-kind target)) + (set! (-> self death-prim 0 prim-core collide-as) (collide-kind enemy)) + (set! (-> self death-prim 0 prim-core offense) (collide-offense indestructible)) + (logior! (-> self death-prim 0 prim-core action) (collide-action solid)) + (set! (-> self death-prim 1 prim-core collide-as) (collide-kind enemy)) + (set! (-> self death-prim 1 collide-with) (collide-kind target)) + (set! (-> self death-prim 1 prim-core offense) (collide-offense indestructible)) + (logior! (-> self death-prim 1 prim-core action) (collide-action solid)) + (set! (-> (find-prim-by-id (-> self root) (the-as uint 8)) prim-core action) (collide-action)) + 0 + (set! (-> (find-prim-by-id (-> self root) (the-as uint 16)) prim-core action) (collide-action)) + 0 + (logior! (-> self mask) (process-mask actor-pause)) + (remove-setting! 'music) + (go plant-boss-dead-idle)) + :post + (behavior () + (plant-boss-post) + (do-push-aways! (-> self root)))) (defstate plant-boss-dead-idle (plant-boss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (go plant-boss-dead-bounce (lerp-scale - (the-as float 0.1) - (the-as float 1.0) - (the-as float (-> block param 1)) - (the-as float 40960.0) - (the-as float 81920.0) - ) - ) - ) - (else - (plant-boss-generic-event-handler proc argc message block) - ) - ) - ) - :code (behavior () - (ja-channel-set! 1) - (ja :group! plant-boss-main-die-ja :num! max) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 5)) - (transform-post) - (do-push-aways! (-> self root)) - (suspend) - ) - ) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) + (go plant-boss-dead-bounce + (lerp-scale (the-as float 0.1) + (the-as float 1.0) + (the-as float (-> block param 1)) + (the-as float 40960.0) + (the-as float 81920.0)))) + (else (plant-boss-generic-event-handler proc argc message block)))) + :code + (behavior () + (ja-channel-set! 1) + (ja :group! plant-boss-main-die-ja :num! max) + (let ((gp-1 (current-time))) + (until (time-elapsed? gp-1 (seconds 5)) + (transform-post) + (do-push-aways! (-> self root)) + (suspend))) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defstate plant-boss-dead-bounce (plant-boss) :event plant-boss-generic-event-handler :trans rider-trans - :code (behavior ((arg0 float)) - (let ((v1-2 (-> self entity extra perm))) - (if (and (< 0.3 arg0) (and (not (handle->process (-> self money))) (< (-> v1-2 user-int8 1) 5))) - (set! (-> self money) (ppointer->handle (birth-pickup-at-point - (-> self node-list data 42 bone transform vector 3) - (pickup-type money) - (the-as float 1.0) - #t - self - (the-as fact-info #f) - ) - ) - ) - ) - ) - (ja-channel-set! 2) - (ja :group! plant-boss-main-bounce-ja :num! min) - (ja :chan 1 :group! plant-boss-main-die-ja :num! max :frame-interp (- 1.0 arg0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - (ja :chan 1 :frame-interp (- 1.0 arg0) :num-func num-func-identity :frame-num max) - ) - (go plant-boss-dead-idle) - ) - :post rider-post - ) + :code + (behavior ((arg0 float)) + (let ((v1-2 (-> self entity extra perm))) + (if (and (< 0.3 arg0) (and (not (handle->process (-> self money))) (< (-> v1-2 user-int8 1) 5))) + (set! (-> self money) + (ppointer->handle (birth-pickup-at-point (-> self node-list data 42 bone transform vector 3) + (pickup-type money) + (the-as float 1.0) + #t + self + (the-as fact-info #f)))))) + (ja-channel-set! 2) + (ja :group! plant-boss-main-bounce-ja :num! min) + (ja :chan 1 :group! plant-boss-main-die-ja :num! max :frame-interp (- 1.0 arg0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)) + (ja :chan 1 :frame-interp (- 1.0 arg0) :num-func num-func-identity :frame-num max)) + (go plant-boss-dead-idle)) + :post rider-post) (defmethod init-from-entity! ((this plant-boss) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -1714,16 +1252,14 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 12288.0 12288.0 12288.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 16)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core action) (collide-action solid)) (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 12288.0 12288.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 5)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -1731,8 +1267,7 @@ (set! (-> s2-2 transform-index) 13) (set-vector! (-> s2-2 local-sphere) 0.0 8192.0 0.0 16384.0) (append-prim s3-0 s2-2) - (set! (-> this attack-prim 0) s2-2) - ) + (set! (-> this attack-prim 0) s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (collide-kind)) (set! (-> s2-3 collide-with) (collide-kind)) @@ -1740,8 +1275,7 @@ (set! (-> s2-3 transform-index) 13) (set-vector! (-> s2-3 local-sphere) 0.0 8192.0 0.0 16384.0) (append-prim s3-0 s2-3) - (set! (-> this death-prim 0) s2-3) - ) + (set! (-> this death-prim 0) s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) (set! (-> s2-4 prim-core collide-as) (collide-kind)) (set! (-> s2-4 collide-with) (collide-kind)) @@ -1749,125 +1283,118 @@ (set! (-> s2-4 transform-index) 12) (set-vector! (-> s2-4 local-sphere) 0.0 -24576.0 0.0 40960.0) (append-prim s3-0 s2-4) - (set! (-> this death-prim 1) s2-4) - ) - ) + (set! (-> this death-prim 1) s2-4))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *plant-boss-sg* '()) (set! (-> this draw shadow-ctrl) *plant-boss-shadow-control*) - (process-spawn - plant-boss-arm - :init plant-boss-arm-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -24576.0 :z 8192.0 :w 1.0)) - -8192.0 - 1 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-arm-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x 24576.0 :z 8192.0 :w 1.0)) - 8192.0 - 0 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-back-arms-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :w 1.0)) - 0.0 - 2 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-vine-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x 38912.0 :z 8192.0 :w 1.0)) - (new 'static 'vector :y 14563.556) - 1.0 - 3 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-vine-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -40960.0 :z 8192.0 :w 1.0)) - (new 'static 'vector :y -5461.3335) - 1.0 - 3 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-vine-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -29491.2 :z -7168.0 :w 1.0)) - (new 'static 'vector :x -1820.4445 :y -11286.756) - 0.8 - 3 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-vine-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x 32768.0 :z -3072.0 :w 1.0)) - (new 'static 'vector :x -910.2222 :y 22755.555) - 0.8 - 3 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-root-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x 18841.6 :z 4096.0 :w 1.0)) - (new 'static 'vector :y -4096.0) - (new 'static 'vector :x 1.0 :y 1.0 :z 1.0) - 4 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-root-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -18841.6 :z 4096.0 :w 1.0)) - (new 'static 'vector :x 364.0889 :y 4096.0) - (new 'static 'vector :x 1.0 :y 1.25 :z 1.0) - 4 - :to this - ) - (process-spawn - plant-boss-arm - :init plant-boss-root-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :z -2048.0 :w 1.0)) - (new 'static 'vector :x 1820.4445) - (new 'static 'vector :x 0.9 :y 1.5 :z 1.0) - 4 - :to this - ) - (set! (-> this leaf 0) (process-spawn - plant-boss-leaf - :init plant-boss-leaf-init - (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :w 1.0)) - 0.0 - 0 - :to this - ) - ) - (set! (-> this leaf 1) (process-spawn - plant-boss-leaf - :init plant-boss-leaf-init - (vector+! - (new-stack-vector0) - (-> this root trans) - (new 'static 'vector :x -13189.12 :y 2838.528 :z 12288.0 :w 1.0) - ) - 0.0 - 1 - :to this - ) - ) + (process-spawn plant-boss-arm + :init + plant-boss-arm-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -24576.0 :z 8192.0 :w 1.0)) + -8192.0 + 1 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-arm-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x 24576.0 :z 8192.0 :w 1.0)) + 8192.0 + 0 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-back-arms-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :w 1.0)) + 0.0 + 2 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-vine-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x 38912.0 :z 8192.0 :w 1.0)) + (new 'static 'vector :y 14563.556) + 1.0 + 3 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-vine-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -40960.0 :z 8192.0 :w 1.0)) + (new 'static 'vector :y -5461.3335) + 1.0 + 3 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-vine-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -29491.2 :z -7168.0 :w 1.0)) + (new 'static 'vector :x -1820.4445 :y -11286.756) + 0.8 + 3 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-vine-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x 32768.0 :z -3072.0 :w 1.0)) + (new 'static 'vector :x -910.2222 :y 22755.555) + 0.8 + 3 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-root-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x 18841.6 :z 4096.0 :w 1.0)) + (new 'static 'vector :y -4096.0) + (new 'static 'vector :x 1.0 :y 1.0 :z 1.0) + 4 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-root-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -18841.6 :z 4096.0 :w 1.0)) + (new 'static 'vector :x 364.0889 :y 4096.0) + (new 'static 'vector :x 1.0 :y 1.25 :z 1.0) + 4 + :to + this) + (process-spawn plant-boss-arm + :init + plant-boss-root-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :z -2048.0 :w 1.0)) + (new 'static 'vector :x 1820.4445) + (new 'static 'vector :x 0.9 :y 1.5 :z 1.0) + 4 + :to + this) + (set! (-> this leaf 0) + (process-spawn plant-boss-leaf + :init + plant-boss-leaf-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :w 1.0)) + 0.0 + 0 + :to + this)) + (set! (-> this leaf 1) + (process-spawn plant-boss-leaf + :init + plant-boss-leaf-init + (vector+! (new-stack-vector0) (-> this root trans) (new 'static 'vector :x -13189.12 :y 2838.528 :z 12288.0 :w 1.0)) + 0.0 + 1 + :to + this)) (set! (-> this energy) 0.25) (set! (-> this health) 3.0) (set! (-> this cam-tracker) (the-as handle #f)) @@ -1885,8 +1412,6 @@ (set! (-> this body nose) (the-as uint 0)) (set! (-> this body ear) (the-as uint 2)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go plant-boss-dead #t) - ) + (go plant-boss-dead #t)) (go plant-boss-far-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/jungleb/plat-flip.gc b/goal_src/jak1/levels/jungleb/plat-flip.gc index 38ef0fa6c6..02b2ded0fd 100644 --- a/goal_src/jak1/levels/jungleb/plat-flip.gc +++ b/goal_src/jak1/levels/jungleb/plat-flip.gc @@ -1,105 +1,78 @@ ;;-*-Lisp-*- (in-package goal) (bundles "JUB.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") -;; name: plat-flip.gc -;; name in dgo: plat-flip -;; dgos: JUB, L1 - ;; DECOMP BEGINS (deftype plat-flip (process-drawable) - ((root collide-shape-moving :override) - (path-pos float) - (before-turn-down-time float) - (turn-down-time float) - (before-turn-up-time float) - (turn-up-time float) - (total-time float) - (sync sync-info :inline) - (base-pos vector :inline) - (smush smush-control :inline) - ) + ((root collide-shape-moving :override) + (path-pos float) + (before-turn-down-time float) + (turn-down-time float) + (before-turn-up-time float) + (turn-up-time float) + (total-time float) + (sync sync-info :inline) + (base-pos vector :inline) + (smush smush-control :inline)) (:states - plat-flip-idle - ) - ) - + plat-flip-idle)) -(defskelgroup *plat-flip-sg* plat-flip plat-flip-geo-jg plat-flip-turn-down-ja - ((plat-flip-geo-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *plat-flip-sg* + plat-flip + plat-flip-geo-jg + plat-flip-turn-down-ja + ((plat-flip-geo-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defstate plat-flip-idle (plat-flip) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (activate! (-> self smush) -1.0 90 300 1.0 1.0) - ) - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - (the-as smush-control #f) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (activate! (-> self smush) -1.0 90 300 1.0 1.0)) + (('touch) (send-event proc 'no-look-around (seconds 1.5)) (the-as smush-control #f)))) :trans rider-trans - :code (behavior () - (local-vars (f30-0 float) (f30-1 float)) - (let ((gp-0 #f)) - (loop - (let ((f0-1 (get-current-value (-> self sync) (-> self total-time)))) - (cond - ((< f0-1 (-> self before-turn-down-time)) - (ja :group! plat-flip-turn-down-ja :num! min) - (set! gp-0 #f) - ) - ((begin (set! f30-0 (- f0-1 (-> self before-turn-down-time))) (< f30-0 (-> self turn-down-time))) - (when (not gp-0) - (set! gp-0 #t) - (sound-play "plat-flip") - ) - (ja :group! plat-flip-turn-down-ja - :num! (identity (/ (* f30-0 (the float (+ (-> (the-as art-joint-anim plat-flip-turn-down-ja) data 0 length) -1))) - (-> self turn-down-time) - ) - ) - ) - ) - ((begin (set! f30-1 (- f30-0 (-> self turn-down-time))) (< f30-1 (-> self before-turn-up-time))) - (set! gp-0 #f) - (ja :group! plat-flip-turn-down-ja :num! max) - ) - (else - (when (not gp-0) - (set! gp-0 #t) - (sound-play "plat-flip") - ) - (let ((f30-2 (- f30-1 (-> self before-turn-up-time)))) - (ja :group! plat-flip-turn-up-ja - :num! (identity (/ (* f30-2 (the float (+ (-> (the-as art-joint-anim plat-flip-turn-up-ja) data 0 length) -1))) - (-> self turn-up-time) - ) - ) - ) - ) - ) - ) - ) - (let ((s5-5 (new 'stack-no-clear 'vector))) - (set! (-> s5-5 quad) (-> self base-pos quad)) - (+! (-> s5-5 y) (* 1638.4 (update! (-> self smush)))) - (move-to-point! (-> self root) s5-5) - ) - (suspend) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (local-vars (f30-0 float) (f30-1 float)) + (let ((gp-0 #f)) + (loop + (let ((f0-1 (get-current-value (-> self sync) (-> self total-time)))) + (cond + ((< f0-1 (-> self before-turn-down-time)) (ja :group! plat-flip-turn-down-ja :num! min) (set! gp-0 #f)) + ((begin + (set! f30-0 (- f0-1 (-> self before-turn-down-time))) + (< f30-0 (-> self turn-down-time))) + (when (not gp-0) + (set! gp-0 #t) + (sound-play "plat-flip")) + (ja :group! + plat-flip-turn-down-ja + :num! + (identity (/ (* f30-0 (the float (+ (-> (the-as art-joint-anim plat-flip-turn-down-ja) data 0 length) -1))) + (-> self turn-down-time))))) + ((begin + (set! f30-1 (- f30-0 (-> self turn-down-time))) + (< f30-1 (-> self before-turn-up-time))) + (set! gp-0 #f) + (ja :group! plat-flip-turn-down-ja :num! max)) + (else + (when (not gp-0) + (set! gp-0 #t) + (sound-play "plat-flip")) + (let ((f30-2 (- f30-1 (-> self before-turn-up-time)))) + (ja :group! + plat-flip-turn-up-ja + :num! + (identity (/ (* f30-2 (the float (+ (-> (the-as art-joint-anim plat-flip-turn-up-ja) data 0 length) -1))) (-> self turn-up-time)))))))) + (let ((s5-5 (new 'stack-no-clear 'vector))) + (set! (-> s5-5 quad) (-> self base-pos quad)) + (+! (-> s5-5 y) (* 1638.4 (update! (-> self smush)))) + (move-to-point! (-> self root) s5-5)) + (suspend)))) + :post rider-post) (defmethod init-from-entity! ((this plat-flip) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-32 res-tag) (sv-48 res-tag)) @@ -107,9 +80,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -118,12 +89,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this base-pos quad) (-> this root trans quad)) (initialize-skeleton this *plat-flip-sg* '()) @@ -131,52 +100,27 @@ (let ((f30-0 300.0)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-28 (res-lump-data arg0 'delay pointer :tag-ptr (& sv-16)))) - (set! (-> this before-turn-down-time) (* f30-0 (if (and v1-28 (> (the-as int (-> sv-16 elt-count)) 0)) - (-> (the-as (pointer float) v1-28)) - 2.0 - ) - ) - ) - ) - ) + (set! (-> this before-turn-down-time) + (* f30-0 (if (and v1-28 (> (the-as int (-> sv-16 elt-count)) 0)) (-> (the-as (pointer float) v1-28)) 2.0))))) (let ((f30-1 300.0)) (set! sv-32 (new 'static 'res-tag)) (let ((v1-31 (res-lump-data arg0 'delay pointer :tag-ptr (& sv-32)))) - (set! (-> this before-turn-up-time) (* f30-1 (if (and v1-31 (< 1 (the-as int (-> sv-32 elt-count)))) - (-> (the-as (pointer float) v1-31) 1) - 0.2 - ) - ) - ) - ) - ) + (set! (-> this before-turn-up-time) + (* f30-1 (if (and v1-31 (< 1 (the-as int (-> sv-32 elt-count)))) (-> (the-as (pointer float) v1-31) 1) 0.2))))) (set! (-> this turn-down-time) 300.0) (set! (-> this turn-up-time) 300.0) - (set! (-> this total-time) (+ (-> this before-turn-down-time) - (-> this turn-down-time) - (-> this before-turn-up-time) - (-> this turn-up-time) - ) - ) + (set! (-> this total-time) + (+ (-> this before-turn-down-time) (-> this turn-down-time) (-> this before-turn-up-time) (-> this turn-up-time))) (let ((s4-1 (-> this sync)) (s3-1 (method-of-type sync-info setup-params!)) - (s2-0 (the int (-> this total-time))) - ) + (s2-0 (the int (-> this total-time)))) (set! sv-48 (new 'static 'res-tag)) (let ((v1-35 (res-lump-data arg0 'sync-percent pointer :tag-ptr (& sv-48)))) - (s3-1 - s4-1 - (the-as uint s2-0) - (if (and v1-35 (> (the-as int (-> sv-48 elt-count)) 0)) - (-> (the-as (pointer float) v1-35) 0) - 0.0 - ) - 0.15 - 0.15 - ) - ) - ) + (s3-1 s4-1 + (the-as uint s2-0) + (if (and v1-35 (> (the-as int (-> sv-48 elt-count)) 0)) (-> (the-as (pointer float) v1-35) 0) 0.0) + 0.15 + 0.15))) (update-transforms! (-> this root)) (go plat-flip-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/lavatube/assistant-lavatube.gc b/goal_src/jak1/levels/lavatube/assistant-lavatube.gc index 5fca462118..e95279c491 100644 --- a/goal_src/jak1/levels/lavatube/assistant-lavatube.gc +++ b/goal_src/jak1/levels/lavatube/assistant-lavatube.gc @@ -1,151 +1,98 @@ ;;-*-Lisp-*- (in-package goal) (bundles "LAV.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: assistant-lavatube.gc -;; name in dgo: assistant-lavatube -;; dgos: L1, LAV - ;; DECOMP BEGINS -(deftype assistant-lavatube-start (process-taskable) - () - ) - +(deftype assistant-lavatube-start (process-taskable) ()) -(defskelgroup *assistant-lavatube-start-sg* assistant-lavatube-start assistant-lavatube-start-lod0-jg assistant-lavatube-start-idle-ja - ((assistant-lavatube-start-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow assistant-lavatube-start-shadow-mg - ) +(defskelgroup *assistant-lavatube-start-sg* + assistant-lavatube-start + assistant-lavatube-start-lod0-jg + assistant-lavatube-start-idle-ja + ((assistant-lavatube-start-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow assistant-lavatube-start-shadow-mg) (defmethod play-anim! ((this assistant-lavatube-start) (arg0 symbol)) (case (current-status (-> this tasks)) (((task-status need-reward-speech)) - (if arg0 - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim - :name "assistant-lavatube-start-resolution" - :index 5 - :parts 11 - :command-list '((232 joint "cameraB") (491 joint "camera") (866 joint "cameraB") (1061 joint "camera")) - ) - ) + (if arg0 (close-current! (-> this tasks))) + (new 'static + 'spool-anim + :name "assistant-lavatube-start-resolution" + :index 5 + :parts 11 + :command-list + '((232 joint "cameraB") (491 joint "camera") (866 joint "cameraB") (1061 joint "camera")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod get-art-elem ((this assistant-lavatube-start)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate hidden (assistant-lavatube-start) :virtual #t - :trans (behavior () - ((-> (method-of-type process-taskable hidden) trans)) - (when (and (cond - ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - #t - ) - (else - (set-time! (-> self state-time)) - #f - ) - ) - (and (not (closed? (-> self tasks) (game-task lavatube-start) (task-status need-reward-speech))) - (not (movie?)) - (not (level-hint-displayed?)) - (not (and *cheat-mode* (cpad-hold? 0 l3))) - (not (time-elapsed? (-> self state-time) (seconds 10))) - ) - ) - (hide-hud) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (seen-text? *game-info* (text-id assistant-lavatube-need-cells)) - (hud-hidden?) - (can-grab-display? self) - (not (-> *setting-control* current hint)) - ) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-26 gp-0)) - (set! (-> v1-26 width) (the float 448)) - ) - (let ((v1-27 gp-0)) - (set! (-> v1-27 height) (the float 80)) - ) - (let ((v1-28 gp-0)) - (set! (-> v1-28 scale) 0.8) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) - (print-game-text (lookup-text! *common-text* (text-id assistant-lavatube-need-cells-text) #f) gp-0 #f 128 22) - ) - ) - (level-hint-spawn - (text-id assistant-lavatube-need-cells) - "asstva74" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) + :trans + (behavior () + ((-> (method-of-type process-taskable hidden) trans)) + (when (and (cond + ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) #t) + (else (set-time! (-> self state-time)) #f)) + (and (not (closed? (-> self tasks) (game-task lavatube-start) (task-status need-reward-speech))) + (not (movie?)) + (not (level-hint-displayed?)) + (not (and *cheat-mode* (cpad-hold? 0 l3))) + (not (time-elapsed? (-> self state-time) (seconds 10))))) + (hide-hud) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (when (and (seen-text? *game-info* (text-id assistant-lavatube-need-cells)) + (hud-hidden?) + (can-grab-display? self) + (not (-> *setting-control* current hint))) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-26 gp-0)) (set! (-> v1-26 width) (the float 448))) + (let ((v1-27 gp-0)) (set! (-> v1-27 height) (the float 80))) + (let ((v1-28 gp-0)) (set! (-> v1-28 scale) 0.8)) + (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) + (print-game-text (lookup-text! *common-text* (text-id assistant-lavatube-need-cells-text) #f) gp-0 #f 128 22))) + (level-hint-spawn (text-id assistant-lavatube-need-cells) "asstva74" (the-as entity #f) *entity-pool* (game-task none))))) (defstate idle (assistant-lavatube-start) :virtual #t - :code (behavior () - (loop - (when (!= (ja-group) (get-art-elem self)) + :code + (behavior () + (loop + (when (!= (ja-group) (get-art-elem self)) + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! assistant-lavatube-start-idle-ja)) + (let* ((f30-0 2.0) + (v1-7 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-8 (the-as number (logior #x3f800000 v1-7)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-8)))) 2)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) (ja-channel-push! 1 (seconds 0.05)) - (ja :group! assistant-lavatube-start-idle-ja) - ) - (let* ((f30-0 2.0) - (v1-7 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-8 (the-as number (logior #x3f800000 v1-7))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-8)))) 2)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! assistant-lavatube-start-idle-b-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) + (ja-no-eval :group! assistant-lavatube-start-idle-b-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) (defmethod should-display? ((this assistant-lavatube-start)) (first-any (-> this tasks) #t) - (= (current-status (-> this tasks)) (task-status need-reward-speech)) - ) + (= (current-status (-> this tasks)) (task-status need-reward-speech))) (defmethod init-from-entity! ((this assistant-lavatube-start) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-lavatube-start-sg* 3 29 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task lavatube-start))) (first-any (-> this tasks) #t) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/lavatube/lavatube-energy.gc b/goal_src/jak1/levels/lavatube/lavatube-energy.gc index 10cbe9df51..7d0decc22e 100644 --- a/goal_src/jak1/levels/lavatube/lavatube-energy.gc +++ b/goal_src/jak1/levels/lavatube/lavatube-energy.gc @@ -1,543 +1,458 @@ ;;-*-Lisp-*- (in-package goal) (bundles "LAV.DGO") - (require "engine/util/sync-info.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/game/task/hint-control.gc") -;; name: lavatube-energy.gc -;; name in dgo: lavatube-energy -;; dgos: L1, LAV - ;; DECOMP BEGINS (defpartgroup group-energyarm :id 544 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1931 :fade-after (meters 120)) (sp-item 2167 :fade-after (meters 60) :falloff-to (meters 60))) - ) + :parts ((sp-item 1931 :fade-after (meters 120)) (sp-item 2167 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1931 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 128.0) - (:a 64.0 32.0) - (:scalevel-x (meters -0.016666668)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.0666667) - (:timer (seconds 0.2)) - (:flags (bit0 bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 128.0) + (:a 64.0 32.0) + (:scalevel-x (meters -0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.0666667) + (:timer (seconds 0.2)) + (:flags (bit0 bit2 bit3 bit14)))) (defpart 2167 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 8.0) - (:scale-x (meters 0.5) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.6) - (:accel-y (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 0.1) (seconds 0.497)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 8.0) + (:scale-x (meters 0.5) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.6) + (:accel-y (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 0.1) (seconds 0.497)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-energyball-always :id 545 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2168 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 2169 :fade-after (meters 120)) - (sp-item 2170 :fade-after (meters 120)) - (sp-item 2171 :fade-after (meters 120) :flags (is-3d)) - (sp-item 2172 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 2173 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 2174 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 2175 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 2168 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 2169 :fade-after (meters 120)) + (sp-item 2170 :fade-after (meters 120)) + (sp-item 2171 :fade-after (meters 120) :flags (is-3d)) + (sp-item 2172 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 2173 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 2174 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 2175 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 2168 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 8.0) - (:y (meters -5.5)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 8.0 24.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 0.35555556) - (:accel-y (meters -0.0004) (meters -0.0004)) - (:friction 0.9) - (:timer (seconds 0.4) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1) (seconds 0.397)) - (:next-launcher 2176) - (:conerot-x (degrees 0) (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 8.0) + (:y (meters -5.5)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 8.0 24.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 0.35555556) + (:accel-y (meters -0.0004) (meters -0.0004)) + (:friction 0.9) + (:timer (seconds 0.4) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1) (seconds 0.397)) + (:next-launcher 2176) + (:conerot-x (degrees 0) (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2176 - :init-specs ((:scale-x (meters 1.2)) (:scale-y :copy scale-x) (:a 48.0) (:timer (seconds 0.017))) - ) + :init-specs ((:scale-x (meters 1.2)) (:scale-y :copy scale-x) (:a 48.0) (:timer (seconds 0.017)))) (defpart 2177 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 8.0) - (:scale-x (meters 0.3) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 64.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:friction 0.9) - (:timer (seconds 0.035) (seconds 0.137)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035) (seconds 0.137)) - (:next-launcher 2176) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 5.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 8.0) + (:scale-x (meters 0.3) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 64.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:friction 0.9) + (:timer (seconds 0.035) (seconds 0.137)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035) (seconds 0.137)) + (:next-launcher 2176) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 5.5)))) (defpart 2169 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -5.5)) - (:scale-x (meters 8) (meters 4)) - (:scale-y (meters 24)) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 128.0) - (:a 64.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -5.5)) + (:scale-x (meters 8) (meters 4)) + (:scale-y (meters 24)) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 128.0) + (:a 64.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 2170 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -5.5)) - (:scale-x (meters 12) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 128.0) - (:a 16.0 32.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -5.5)) + (:scale-x (meters 12) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 128.0) + (:a 16.0 32.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 2171 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -5)) - (:scale-x (meters 12) (meters 8)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 128.0) - (:a 16.0 32.0) - (:scalevel-x (meters -0.040404037)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.12121211) - (:timer (seconds 0.66)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -5)) + (:scale-x (meters 12) (meters 8)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 128.0) + (:a 16.0 32.0) + (:scalevel-x (meters -0.040404037)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.12121211) + (:timer (seconds 0.66)) + (:flags (bit2 bit3 bit14)))) (defpart 2172 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:y (meters -5.5)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 70) (degrees 40)) - (:scale-y (meters 12)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.85333335)) - (:fade-g -3.2666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:y (meters -5.5)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 70) (degrees 40)) + (:scale-y (meters 12)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.85333335)) + (:fade-g -3.2666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2173 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0) - (:scale-x (meters 8) (meters 6)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1) (meters 0.5)) - (:r 255.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:fade-a -6.4) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 2178) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0) + (:scale-x (meters 8) (meters 6)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1) (meters 0.5)) + (:r 255.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:fade-a -6.4) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 2178))) (defpart 2178 - :init-specs ((:b 0.0) (:a 64.0) (:fade-g -4.266667)) - ) + :init-specs ((:b 0.0) (:a 64.0) (:fade-g -4.266667))) (defpart 2174 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 1.0) - (:scale-x (meters 8) (meters 4)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1) (meters 0.5)) - (:r 255.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:fade-a -6.4) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 2178) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 1.0) + (:scale-x (meters 8) (meters 4)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1) (meters 0.5)) + (:r 255.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:fade-a -6.4) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 2178))) (defpart 2175 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 1.0) - (:scale-x (meters 8) (meters 4)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1) (meters 0.5)) - (:r 255.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:fade-a -6.4) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 2178) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 1.0) + (:scale-x (meters 8) (meters 4)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1) (meters 0.5)) + (:r 255.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:fade-a -6.4) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 2178))) (defpartgroup group-energyball-explode :id 546 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 45) - :parts ((sp-item 2179 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2180 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2181 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2182 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2179 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2180 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2181 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2182 :period (seconds 2) :length (seconds 0.067)))) (defpart 2180 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0)) - (:scale-x (meters 0.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.06666667) (meters 0.26666668)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2183) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0)) + (:scale-x (meters 0.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.06666667) (meters 0.26666668)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2183) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2183 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2182 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 24)) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.6666666)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 24)) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.6666666)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2179 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 40)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 40)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2181 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:x (meters -2) (meters 4)) - (:y (meters -2) (meters 4)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.000033333334)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:x (meters -2) (meters 4)) + (:y (meters -2) (meters 4)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.000033333334)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 6)))) (deftype energydoor (process-drawable) - ((root collide-shape-moving :override) - (alt-actor entity-actor) - ) + ((root collide-shape-moving :override) + (alt-actor entity-actor)) (:states - energydoor-closed-till-near - energydoor-closed-till-task - energydoor-closing - energydoor-opened - energydoor-opening - ) - ) - - -(defskelgroup *energydoor-sg* energydoor energydoor-lod0-jg energydoor-idle-ja - ((energydoor-lod0-mg (meters 999999))) - :bounds (static-spherem 0 14 0 35) - ) + energydoor-closed-till-near + energydoor-closed-till-task + energydoor-closing + energydoor-opened + energydoor-opening)) + +(defskelgroup *energydoor-sg* + energydoor + energydoor-lod0-jg + energydoor-idle-ja + ((energydoor-lod0-mg (meters 999999))) + :bounds (static-spherem 0 14 0 35)) (defbehavior energydoor-player-dist energydoor () (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'matrix)) - ) + (s5-0 (new 'stack-no-clear 'matrix))) (vector-! gp-0 (target-pos 0) (-> self root trans)) (quaternion->matrix s5-0 (-> self root quat)) - (vector-dot gp-0 (the-as vector (-> s5-0 vector))) - ) - ) + (vector-dot gp-0 (the-as vector (-> s5-0 vector))))) (defbehavior energydoor-open-handler energydoor ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('open?) - #t - ) - ) - ) + (('open?) #t))) (defbehavior energydoor-closed-handler energydoor ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('open) - (go energydoor-opening) - ) - (('open?) - #f - ) - ) - ) + (('open) (go energydoor-opening)) + (('open?) #f))) (defstate energydoor-closing (energydoor) :event energydoor-closed-handler - :code (behavior () - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (if (or (task-closed? (-> self entity extra perm task) (task-status need-resolution)) - (< (energydoor-player-dist) 0.0) - ) + :code + (behavior () + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))) + (if (or (task-closed? (-> self entity extra perm task) (task-status need-resolution)) (< (energydoor-player-dist) 0.0)) (go energydoor-closed-till-near) - (go energydoor-closed-till-task) - ) - ) - :post transform-post - ) + (go energydoor-closed-till-task))) + :post transform-post) (defstate energydoor-opened (energydoor) :event energydoor-open-handler - :trans (behavior () - (let ((f30-0 (energydoor-player-dist))) - (cond - ((< f30-0 -450560.0) - (go energydoor-closing) - ) - ((and (not (task-closed? (-> self entity extra perm task) (task-status need-resolution))) - (< 61440.0 f30-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) 'open?) - (let ((t9-3 send-event-function) - (v1-7 (-> self alt-actor)) - ) - (not (t9-3 - (if v1-7 - (-> v1-7 extra process) - ) - a1-1 - ) - ) - ) - ) - ) - (go energydoor-closing) - ) - ) - ) - ) - :code (behavior () - (ja :num-func num-func-identity :frame-num max) - (transform-post) - (loop - (suspend) - ) - ) - ) + :trans + (behavior () + (let ((f30-0 (energydoor-player-dist))) + (cond + ((< f30-0 -450560.0) (go energydoor-closing)) + ((and (not (task-closed? (-> self entity extra perm task) (task-status need-resolution))) + (< 61440.0 f30-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) 'open?) + (let ((t9-3 send-event-function) + (v1-7 (-> self alt-actor))) + (not (t9-3 (if v1-7 (-> v1-7 extra process)) a1-1))))) + (go energydoor-closing))))) + :code + (behavior () + (ja :num-func num-func-identity :frame-num max) + (transform-post) + (loop + (suspend)))) (defstate energydoor-opening (energydoor) :event energydoor-open-handler - :code (behavior () - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go energydoor-opened) - ) - :post transform-post - ) + :code + (behavior () + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go energydoor-opened)) + :post transform-post) (defstate energydoor-closed-till-task (energydoor) :event energydoor-closed-handler - :trans (behavior () - (cond - ((task-closed? (-> self entity extra perm task) (task-status need-resolution)) - (go energydoor-opening) - ) - ((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) 'open?) - (let ((t9-2 send-event-function) - (v1-5 (-> self alt-actor)) - ) - (t9-2 - (if v1-5 - (-> v1-5 extra process) - ) - a1-1 - ) - ) - ) - (go energydoor-opening) - ) - ) - ) - :code (behavior () - (ja :num-func num-func-identity :frame-num 0.0) - (transform-post) - (loop - (suspend) - ) - ) - ) + :trans + (behavior () + (cond + ((task-closed? (-> self entity extra perm task) (task-status need-resolution)) (go energydoor-opening)) + ((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) 'open?) + (let ((t9-2 send-event-function) + (v1-5 (-> self alt-actor))) + (t9-2 (if v1-5 (-> v1-5 extra process)) a1-1))) + (go energydoor-opening)))) + :code + (behavior () + (ja :num-func num-func-identity :frame-num 0.0) + (transform-post) + (loop + (suspend)))) (defstate energydoor-closed-till-near (energydoor) :event energydoor-closed-handler - :trans (behavior () - (if (< -409600.0 (energydoor-player-dist)) - (go energydoor-opening) - ) - ) - :code (behavior () - (ja :num-func num-func-identity :frame-num 0.0) - (transform-post) - (loop - (suspend) - ) - ) - ) + :trans + (behavior () + (if (< -409600.0 (energydoor-player-dist)) (go energydoor-opening))) + :code + (behavior () + (ja :num-func num-func-identity :frame-num 0.0) + (transform-post) + (loop + (suspend)))) (defmethod init-from-entity! ((this energydoor) (arg0 entity-actor)) (with-pp (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -545,275 +460,199 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 8) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *energydoor-sg* '()) (set! (-> this root pause-adjust-distance) 245760.0) (set! (-> this alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) (cond - ((< (energydoor-player-dist) -409600.0) - (go energydoor-closed-till-near) - ) - ((task-closed? (-> this entity extra perm task) (task-status need-resolution)) - (go energydoor-opened) - ) + ((< (energydoor-player-dist) -409600.0) (go energydoor-closed-till-near)) + ((task-closed? (-> this entity extra perm task) (task-status need-resolution)) (go energydoor-opened)) (else - (let ((a1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-9 from) pp) - (set! (-> a1-9 num-params) 0) - (set! (-> a1-9 message) 'open?) - (let ((t9-12 send-event-function) - (v1-25 (-> this alt-actor)) - ) - (cond - ((t9-12 - (if v1-25 - (-> v1-25 extra process) - ) - a1-9 - ) - (go energydoor-opened) - ) - ((< 0.0 (energydoor-player-dist)) - (go energydoor-closed-till-task) - ) - (else - (go energydoor-opened) - ) - ) - ) - ) - ) - ) - (none) - ) - ) - -(deftype energybase (process-drawable) - () + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) pp) + (set! (-> a1-9 num-params) 0) + (set! (-> a1-9 message) 'open?) + (let ((t9-12 send-event-function) + (v1-25 (-> this alt-actor))) + (cond + ((t9-12 (if v1-25 (-> v1-25 extra process)) a1-9) (go energydoor-opened)) + ((< 0.0 (energydoor-player-dist)) (go energydoor-closed-till-task)) + (else (go energydoor-opened))))))) + (none))) + +(deftype energybase (process-drawable) () (:states - energybase-idle - energybase-stopped - energybase-stopping - ) - ) + energybase-idle + energybase-stopped + energybase-stopping)) - -(defskelgroup *energybase-sg* energybase energybase-lod0-jg energybase-idle-ja - ((energybase-lod0-mg (meters 999999))) - :bounds (static-spherem 0 40 0 40) - ) +(defskelgroup *energybase-sg* + energybase + energybase-lod0-jg + energybase-idle-ja + ((energybase-lod0-mg (meters 999999))) + :bounds (static-spherem 0 40 0 40)) (defstate energybase-stopped (energybase) - :code (behavior () - (ja-post) - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (ja-post) + (loop + (suspend)))) (defstate energybase-stopping (energybase) - :code (behavior () - (let ((f30-0 1.0)) + :code + (behavior () + (let ((f30-0 1.0)) + (loop + (ja-no-eval :group! (ja-group) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (set! f30-0 (- f30-0 (* 0.002 (-> *display* time-adjust-ratio)))) + (if (< f30-0 0.0) (go energybase-stopped)) + (suspend) + (ja :num! (seek! max f30-0)))))) + :post ja-post) + +(defstate energybase-idle (energybase) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop) (go energybase-stopping)))) + :code + (behavior () (loop - (ja-no-eval :group! (ja-group) :num! (seek! max f30-0) :frame-num 0.0) + (if (and *target* (>= 307200.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id lavatube-balls) "sksp0375" (the-as entity #f) *entity-pool* (game-task none))) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (set! f30-0 (- f30-0 (* 0.002 (-> *display* time-adjust-ratio)))) - (if (< f30-0 0.0) - (go energybase-stopped) - ) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - :post ja-post - ) - -(defstate energybase-idle (energybase) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop) - (go energybase-stopping) - ) - ) - ) - :code (behavior () - (loop - (if (and *target* (>= 307200.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn (text-id lavatube-balls) "sksp0375" (the-as entity #f) *entity-pool* (game-task none)) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this energybase) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *energybase-sg* '()) - (if (task-closed? (game-task lavatube-balls) (task-status need-resolution)) - (go energybase-stopped) - (go energybase-idle) - ) - (none) - ) + (if (task-closed? (game-task lavatube-balls) (task-status need-resolution)) (go energybase-stopped) (go energybase-idle)) + (none)) (deftype energyhub (process-drawable) - ((self-override energyhub :overlay-at self) - (alts entity-actor 3) - (arm handle 5) - (rot-mat matrix :inline) - (rot-mat-init matrix :inline) - (rotation-speed oscillating-float :inline) - (rotation-speed-offset delayed-rand-float :inline) - (y-rotation float) - (x-rotation float) - (palette-val float) - ) + ((self-override energyhub :overlay-at self) + (alts entity-actor 3) + (arm handle 5) + (rot-mat matrix :inline) + (rot-mat-init matrix :inline) + (rotation-speed oscillating-float :inline) + (rotation-speed-offset delayed-rand-float :inline) + (y-rotation float) + (x-rotation float) + (palette-val float)) (:states - energyhub-idle - energyhub-stop - energyhub-stopped - ) - ) - + energyhub-idle + energyhub-stop + energyhub-stopped)) (deftype energyarm (process-drawable) - ((root collide-shape-moving :override) - (parent-overide (pointer energyhub) :overlay-at parent) - (self-override energyarm :overlay-at self) - (offset vector :inline) - (y-rotation float) - (y-chatter-rotation bouncing-float :inline) - (y-chatter-min delayed-rand-float :inline) - (x-rotation bouncing-float :inline) - (x-fall-rotation bouncing-float :inline) - (rot-mat matrix :inline) - (ball handle) - (x-correction float) - ) + ((root collide-shape-moving :override) + (parent-overide (pointer energyhub) :overlay-at parent) + (self-override energyarm :overlay-at self) + (offset vector :inline) + (y-rotation float) + (y-chatter-rotation bouncing-float :inline) + (y-chatter-min delayed-rand-float :inline) + (x-rotation bouncing-float :inline) + (x-fall-rotation bouncing-float :inline) + (rot-mat matrix :inline) + (ball handle) + (x-correction float)) (:states - energyarm-fall - energyarm-idle - energyarm-no-ball - energyarm-stop - ) - ) - + energyarm-fall + energyarm-idle + energyarm-no-ball + energyarm-stop)) (deftype energyball (process-drawable) - ((root collide-shape-moving :override) - (parent-overide (pointer energyarm) :overlay-at parent) - ) + ((root collide-shape-moving :override) + (parent-overide (pointer energyarm) :overlay-at parent)) (:states - energyball-idle - ) - ) + energyball-idle)) - -(defskelgroup *energyball-sg* energyball energyball-lod0-jg energyball-idle-ja - ((energyball-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 6) - ) +(defskelgroup *energyball-sg* + energyball + energyball-lod0-jg + energyball-idle-ja + ((energyball-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 6)) (defstate energyball-idle (energyball) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (when (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) - (increment-success-for-hint (text-id lavatube-balls)) - (sound-play "dcrate-break") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 546) - 600 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (cleanup-for-death self) - (deactivate self) - ) - ) - ) - ) - :trans (behavior () - (rider-trans) - (spawn (-> self part) (-> self root trans)) - (let* ((v1-3 (-> self parent-overide)) - (s5-0 (if v1-3 - (-> v1-3 0 self-override) - ) - ) - (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) energyarm)) - s5-0 - ) - ) - (s4-0 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'matrix)) - (f0-1 (the float (current-time))) - (f30-0 (- f0-1 (* (the float (the int (/ f0-1 -150.0))) -150.0))) - ) - (when gp-0 - (set-vector! s4-0 0.0 -61440.0 -106496.0 1.0) - (vector-matrix*! s4-0 s4-0 (-> gp-0 rot-mat)) - (vector+! (-> self root trans) s4-0 (-> gp-0 root trans)) - (matrix-rotate-y! s5-1 (* -436.90668 f30-0)) - (matrix*! s5-1 s5-1 (-> gp-0 rot-mat)) - (matrix->quaternion (-> self root quat) s5-1) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post rider-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (when (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) + (increment-success-for-hint (text-id lavatube-balls)) + (sound-play "dcrate-break") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 546) + 600 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (cleanup-for-death self) + (deactivate self))))) + :trans + (behavior () + (rider-trans) + (spawn (-> self part) (-> self root trans)) + (let* ((v1-3 (-> self parent-overide)) + (s5-0 (if v1-3 (-> v1-3 0 self-override))) + (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) energyarm)) s5-0)) + (s4-0 (new 'stack-no-clear 'vector)) + (s5-1 (new 'stack-no-clear 'matrix)) + (f0-1 (the float (current-time))) + (f30-0 (- f0-1 (* (the float (the int (/ f0-1 -150.0))) -150.0)))) + (when gp-0 + (set-vector! s4-0 0.0 -61440.0 -106496.0 1.0) + (vector-matrix*! s4-0 s4-0 (-> gp-0 rot-mat)) + (vector+! (-> self root trans) s4-0 (-> gp-0 root trans)) + (matrix-rotate-y! s5-1 (* -436.90668 f30-0)) + (matrix*! s5-1 s5-1 (-> gp-0 rot-mat)) + (matrix->quaternion (-> self root quat) s5-1)))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post rider-post) (defun energyball-init ((arg0 energyball)) (logior! (-> arg0 mask) (process-mask attackable)) (let ((s5-0 (new 'process 'collide-shape-moving arg0 (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> arg0 root) s5-0) - s5-0 - ) - ) + s5-0)) (defbehavior energyball-init-by-other energyball ((arg0 vector)) (energyball-init self) @@ -821,230 +660,161 @@ (initialize-skeleton self *energyball-sg* '()) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 545) self)) (go energyball-idle) - (none) - ) + (none)) -(defskelgroup *energyarm-sg* energyarm energyarm-lod0-jg energyarm-idle-ja - ((energyarm-lod0-mg (meters 20)) (energyarm-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 -20 17) - ) +(defskelgroup *energyarm-sg* + energyarm + energyarm-lod0-jg + energyarm-idle-ja + ((energyarm-lod0-mg (meters 20)) (energyarm-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 -20 17)) (defbehavior energyarm-trans energyarm () (rider-trans) (let* ((v1-0 (-> self parent-overide)) - (gp-0 (if v1-0 - (-> v1-0 0 self-override) - ) - ) - (s5-0 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) energyhub)) - gp-0 - ) - ) + (gp-0 (if v1-0 (-> v1-0 0 self-override))) + (s5-0 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) energyhub)) gp-0)) (gp-1 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'matrix)) - ) + (s4-0 (new 'stack-no-clear 'matrix))) 0.0 (when s5-0 - (matrix-rotate-y! - (-> self rot-mat) - (+ (* -1820.4445 (-> self y-chatter-rotation osc value)) (-> self y-rotation)) - ) + (matrix-rotate-y! (-> self rot-mat) (+ (* -1820.4445 (-> self y-chatter-rotation osc value)) (-> self y-rotation))) (matrix*! (-> self rot-mat) (-> self rot-mat) (-> s5-0 rot-mat)) (let ((f0-7 (* (-> self x-correction) (-> s5-0 x-rotation) (cos (-> self y-rotation))))) - (matrix-rotate-x! - s4-0 - (+ f0-7 (* 910.2222 (-> self x-rotation osc value)) (* -7281.778 (-> self x-fall-rotation osc value))) - ) - ) + (matrix-rotate-x! s4-0 + (+ f0-7 (* 910.2222 (-> self x-rotation osc value)) (* -7281.778 (-> self x-fall-rotation osc value))))) (matrix*! (-> self rot-mat) s4-0 (-> self rot-mat)) (set-vector! gp-1 0.0 0.0 -81920.0 1.0) (vector-matrix*! (-> self draw bounds) gp-1 (-> self rot-mat)) (set! (-> self draw bounds w) 69632.0) (matrix->quaternion (-> self root quat) (-> self rot-mat)) (vector-matrix*! gp-1 (-> self offset) (-> s5-0 rot-mat)) - (vector+! (-> self root trans) (-> s5-0 root trans) gp-1) - ) - ) - ) + (vector+! (-> self root trans) (-> s5-0 root trans) gp-1)))) (defstate energyarm-stop (energyarm) - :enter (behavior () - '() - ) - :trans (behavior () - (update! (-> self x-rotation) 0.0) - (update! (-> self y-chatter-rotation) 0.0) - (energyarm-trans) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post rider-post - ) + :enter + (behavior () + '()) + :trans + (behavior () + (update! (-> self x-rotation) 0.0) + (update! (-> self y-chatter-rotation) 0.0) + (energyarm-trans)) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post rider-post) (defstate energyarm-no-ball (energyarm) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop) - (go energyarm-stop) - ) - ) - ) - :enter (behavior () - (set! (-> self y-chatter-rotation osc target) 1.0) - ) - :trans (behavior () - (set! (-> self x-correction) (fmax -1.0 (+ -0.1 (-> self x-correction)))) - (update! (-> self x-rotation) 0.0) - (when (at-min? (-> self x-rotation)) - (let* ((f30-0 0.15) - (v1-6 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-7 (the-as number (logior #x3f800000 v1-6))) - ) - (set! (-> self x-rotation osc vel) (fmax (* f30-0 (+ -1.0 (the-as float v1-7))) (-> self x-rotation osc vel))) - ) - ) - (update! (-> self y-chatter-rotation) 0.0) - (when (at-max? (-> self y-chatter-rotation)) - (let* ((f30-1 -0.1) - (v1-16 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-17 (the-as number (logior #x3f800000 v1-16))) - (f30-2 (* f30-1 (+ -1.0 (the-as float v1-17)))) - ) - (update! (-> self y-chatter-min)) - (set! (-> self y-chatter-rotation min-value) (fabs (-> self y-chatter-min value))) - (set! (-> self y-chatter-rotation osc vel) (fmin f30-2 (-> self y-chatter-rotation osc vel))) - ) - ) - (energyarm-trans) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post rider-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop) (go energyarm-stop)))) + :enter + (behavior () + (set! (-> self y-chatter-rotation osc target) 1.0)) + :trans + (behavior () + (set! (-> self x-correction) (fmax -1.0 (+ -0.1 (-> self x-correction)))) + (update! (-> self x-rotation) 0.0) + (when (at-min? (-> self x-rotation)) + (let* ((f30-0 0.15) + (v1-6 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-7 (the-as number (logior #x3f800000 v1-6)))) + (set! (-> self x-rotation osc vel) (fmax (* f30-0 (+ -1.0 (the-as float v1-7))) (-> self x-rotation osc vel))))) + (update! (-> self y-chatter-rotation) 0.0) + (when (at-max? (-> self y-chatter-rotation)) + (let* ((f30-1 -0.1) + (v1-16 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-17 (the-as number (logior #x3f800000 v1-16))) + (f30-2 (* f30-1 (+ -1.0 (the-as float v1-17))))) + (update! (-> self y-chatter-min)) + (set! (-> self y-chatter-rotation min-value) (fabs (-> self y-chatter-min value))) + (set! (-> self y-chatter-rotation osc vel) (fmin f30-2 (-> self y-chatter-rotation osc vel))))) + (energyarm-trans)) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post rider-post) (defstate energyarm-fall (energyarm) - :enter (behavior () - (set! (-> self x-fall-rotation osc target) 1.0) - ) - :trans (behavior () - (update! (-> self x-fall-rotation) 0.0) - (update! (-> self y-chatter-rotation) 0.0) - (when (at-max? (-> self x-fall-rotation)) - (set! (-> self y-chatter-rotation min-value) -1.0) - (set! (-> self y-chatter-rotation osc vel) 0.2) - (if (< -0.01 (-> self x-fall-rotation osc vel)) - (go energyarm-no-ball) - ) - ) - (energyarm-trans) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post rider-post - ) + :enter + (behavior () + (set! (-> self x-fall-rotation osc target) 1.0)) + :trans + (behavior () + (update! (-> self x-fall-rotation) 0.0) + (update! (-> self y-chatter-rotation) 0.0) + (when (at-max? (-> self x-fall-rotation)) + (set! (-> self y-chatter-rotation min-value) -1.0) + (set! (-> self y-chatter-rotation osc vel) 0.2) + (if (< -0.01 (-> self x-fall-rotation osc vel)) (go energyarm-no-ball))) + (energyarm-trans)) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post rider-post) (defstate energyarm-idle (energyarm) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop) - (go energyarm-stop) - ) - ) - ) - :trans (behavior () - (update! (-> self x-rotation) 0.0) - (when (at-min? (-> self x-rotation)) - (let* ((f30-0 0.15) - (v1-6 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-7 (the-as number (logior #x3f800000 v1-6))) - ) - (set! (-> self x-rotation osc vel) (fmax (* f30-0 (+ -1.0 (the-as float v1-7))) (-> self x-rotation osc vel))) - ) - ) - (energyarm-trans) - (cond - ((handle->process (-> self ball)) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node energyarm-lod0-jg zapa)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node energyarm-lod0-jg zapb)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node energyarm-lod0-jg zapc)) - ) - ) - ((!= (-> self ball) #f) - (set! (-> self ball) (the-as handle #f)) - (let ((a1-8 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-8 from) self) - (set! (-> a1-8 num-params) 0) - (set! (-> a1-8 message) 'flash) - (let ((t9-10 send-event-function) - (v1-24 (-> self parent-overide)) - ) - (t9-10 - (if v1-24 - (-> v1-24 0 self-override) - ) - a1-8 - ) - ) - ) - ) - ) - ) - :code (behavior () - (let ((gp-0 (-> self skel root-channel 0))) - (set! (-> gp-0 num-func) num-func-identity) - (set! (-> gp-0 frame-num) (* (rand-float-gen) (the float (ja-num-frames 0)))) - ) - (loop - (suspend) - (let* ((f30-1 0.25) - (f28-0 0.25) - (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-10 (the-as number (logior #x3f800000 v1-9))) - (f0-9 (+ f30-1 (* f28-0 (+ -1.0 (the-as float v1-10))))) - ) - (ja :num! (loop! f0-9)) - ) - ) - ) - :post rider-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop) (go energyarm-stop)))) + :trans + (behavior () + (update! (-> self x-rotation) 0.0) + (when (at-min? (-> self x-rotation)) + (let* ((f30-0 0.15) + (v1-6 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-7 (the-as number (logior #x3f800000 v1-6)))) + (set! (-> self x-rotation osc vel) (fmax (* f30-0 (+ -1.0 (the-as float v1-7))) (-> self x-rotation osc vel))))) + (energyarm-trans) + (cond + ((handle->process (-> self ball)) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node energyarm-lod0-jg zapa))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node energyarm-lod0-jg zapb))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node energyarm-lod0-jg zapc)))) + ((!= (-> self ball) #f) + (set! (-> self ball) (the-as handle #f)) + (let ((a1-8 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-8 from) self) + (set! (-> a1-8 num-params) 0) + (set! (-> a1-8 message) 'flash) + (let ((t9-10 send-event-function) + (v1-24 (-> self parent-overide))) + (t9-10 (if v1-24 (-> v1-24 0 self-override)) a1-8)))))) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 num-func) num-func-identity) + (set! (-> gp-0 frame-num) (* (rand-float-gen) (the float (ja-num-frames 0))))) + (loop + (suspend) + (let* ((f30-1 0.25) + (f28-0 0.25) + (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-10 (the-as number (logior #x3f800000 v1-9))) + (f0-9 (+ f30-1 (* f28-0 (+ -1.0 (the-as float v1-10)))))) + (ja :num! (loop! f0-9))))) + :post rider-post) (defun energyarm-init ((arg0 energyarm)) (let ((s5-0 (new 'process 'collide-shape-moving arg0 (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) - ) + (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) (collide-kind wall-object)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -1052,34 +822,18 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -12288.0 -81920.0 69632.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> arg0 root) s5-0) - ) - (let ((v0-5 (create-launch-control (-> *part-group-id-table* 544) arg0))) - (set! (-> arg0 part) v0-5) - v0-5 - ) - ) + (set! (-> arg0 root) s5-0)) + (let ((v0-5 (create-launch-control (-> *part-group-id-table* 544) arg0))) (set! (-> arg0 part) v0-5) v0-5)) (defbehavior energyarm-init-by-other energyarm ((arg0 vector) (arg1 float)) (energyarm-init self) (let* ((v1-0 (-> self parent-overide)) - (s4-0 (if v1-0 - (-> v1-0 0 self-override) - ) - ) - (a0-3 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) energyhub)) - s4-0 - ) - ) - ) - (if a0-3 - (set! (-> self root trans quad) (-> a0-3 root trans quad)) - ) - ) + (s4-0 (if v1-0 (-> v1-0 0 self-override))) + (a0-3 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) energyhub)) s4-0))) + (if a0-3 (set! (-> self root trans quad) (-> a0-3 root trans quad)))) (initialize-skeleton self *energyarm-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self offset quad) (-> arg0 quad)) @@ -1092,48 +846,34 @@ (cond ((task-closed? (game-task lavatube-balls) (task-status need-resolution)) (set! (-> self ball) (the-as handle #f)) - (go energyarm-stop) - ) + (go energyarm-stop)) (else - (set! (-> self ball) (ppointer->handle (process-spawn energyball (-> self root trans) :to self))) - (go energyarm-idle) - ) - ) - (none) - ) - -(defskelgroup *energyhub-sg* energyhub energyhub-lod0-jg energyhub-idle-ja - ((energyhub-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 10) - ) + (set! (-> self ball) (ppointer->handle (process-spawn energyball (-> self root trans) :to self))) + (go energyarm-idle))) + (none)) + +(defskelgroup *energyhub-sg* + energyhub + energyhub-lod0-jg + energyhub-idle-ja + ((energyhub-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 10)) (defbehavior energyhub-trans energyhub () - (+! (-> self y-rotation) (* 36.40889 - (-> self rotation-speed value) - (the float (- (current-time) (-> *display* old-base-frame-counter))) - ) - ) + (+! (-> self y-rotation) + (* 36.40889 (-> self rotation-speed value) (the float (- (current-time) (-> *display* old-base-frame-counter))))) (cond - ((< 65536.0 (-> self y-rotation)) - (+! (-> self y-rotation) -65536.0) - ) - ((< (-> self y-rotation) 0.0) - (+! (-> self y-rotation) 65536.0) - ) - ) + ((< 65536.0 (-> self y-rotation)) (+! (-> self y-rotation) -65536.0)) + ((< (-> self y-rotation) 0.0) (+! (-> self y-rotation) 65536.0))) (let ((gp-0 (new 'stack-no-clear 'matrix))) (let* ((f0-9 (the float (current-time))) - (f28-0 (- f0-9 (* (the float (the int (/ f0-9 1200.0))) 1200.0))) - ) + (f28-0 (- f0-9 (* (the float (the int (/ f0-9 1200.0))) 1200.0)))) (matrix-rotate-y! gp-0 (-> self y-rotation)) (matrix*! (-> self rot-mat) gp-0 (-> self rot-mat-init)) - (set! (-> self x-rotation) (* 728.1778 (sin (* 54.613335 f28-0)))) - ) + (set! (-> self x-rotation) (* 728.1778 (sin (* 54.613335 f28-0))))) (matrix-rotate-x! gp-0 (-> self x-rotation)) - (matrix*! (-> self rot-mat) gp-0 (-> self rot-mat)) - ) - (matrix->quaternion (-> self root quat) (-> self rot-mat)) - ) + (matrix*! (-> self rot-mat) gp-0 (-> self rot-mat))) + (matrix->quaternion (-> self root quat) (-> self rot-mat))) (defbehavior energyhub-set-lava-height energyhub ((arg0 float)) (let ((v1-0 (-> self alts 2))) @@ -1141,203 +881,115 @@ (let ((v1-2 (-> v1-0 extra process))) (when v1-2 (let* ((f0-1 (- 0.0 (-> self palette-val))) - (f0-2 (if (< 0.0 f0-1) - (fmin 0.1 f0-1) - (fmax -0.1 f0-1) - ) - ) - ) - (+! (-> self palette-val) f0-2) - ) + (f0-2 (if (< 0.0 f0-1) (fmin 0.1 f0-1) (fmax -0.1 f0-1)))) + (+! (-> self palette-val) f0-2)) (set! (-> *palette-fade-controls* control 2 fade) (-> self palette-val)) (set! (-> (the-as process-drawable v1-2) root scale x) 1.25) - (set! (-> (the-as process-drawable v1-2) root scale z) 1.25) - ) - ) - ) - ) - ) + (set! (-> (the-as process-drawable v1-2) root scale z) 1.25)))))) (defstate energyhub-stopped (energyhub) - :enter (behavior () - (set! (-> self rotation-speed target) 0.0) - (set! (-> self rotation-speed accel) 0.0005) - (dotimes (gp-0 5) - (send-event (handle->process (-> self arm gp-0)) 'stop) - ) - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - ) - :trans (behavior () - (update! (-> self rotation-speed) 0.0) - (energyhub-trans) - (energyhub-set-lava-height -122880.0) - ) - :code (behavior () - (loop - (suspend) - (let* ((f30-0 1.0) - (f28-0 0.25) - (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-2 (the-as number (logior #x3f800000 v1-1))) - (f0-4 (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2))))) - ) - (ja :num! (loop! f0-4)) - ) - ) - ) - :post ja-post - ) + :enter + (behavior () + (set! (-> self rotation-speed target) 0.0) + (set! (-> self rotation-speed accel) 0.0005) + (dotimes (gp-0 5) + (send-event (handle->process (-> self arm gp-0)) 'stop)) + (if (nonzero? (-> self sound)) (stop! (-> self sound)))) + :trans + (behavior () + (update! (-> self rotation-speed) 0.0) + (energyhub-trans) + (energyhub-set-lava-height -122880.0)) + :code + (behavior () + (loop + (suspend) + (let* ((f30-0 1.0) + (f28-0 0.25) + (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-2 (the-as number (logior #x3f800000 v1-1))) + (f0-4 (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2)))))) + (ja :num! (loop! f0-4))))) + :post ja-post) (defstate energyhub-stop (energyhub) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('flash) - (set! (-> self palette-val) 1.9921875) - ) - ) - ) - :enter (behavior () - (set! (-> self rotation-speed target) 0.0) - (set! (-> self rotation-speed accel) 0.0005) - (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) 'stop) - (let ((t9-0 send-event-function) - (v1-1 (-> self alts 0)) - ) - (t9-0 - (if v1-1 - (-> v1-1 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) 'open) - (let ((t9-1 send-event-function) - (v1-5 (-> self alts 1)) - ) - (t9-1 - (if v1-5 - (-> v1-5 extra process) - ) - a1-1 - ) - ) - ) - (close-specific-task! (game-task lavatube-balls) (task-status need-resolution)) - (level-hint-spawn - (text-id lavatube-balls-resolution) - "sksp0378" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - ) - :trans (behavior () - (update! (-> self rotation-speed) 0.0) - (energyhub-trans) - (energyhub-set-lava-height -122880.0) - (if (< (-> self rotation-speed value) 0.3) - (go energyhub-stopped) - ) - ) - :code (behavior () - (loop - (suspend) - (let* ((f30-0 1.0) - (f28-0 0.25) - (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-2 (the-as number (logior #x3f800000 v1-1))) - (f0-4 (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2))))) - ) - (ja :num! (loop! f0-4)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('flash) (set! (-> self palette-val) 1.9921875)))) + :enter + (behavior () + (set! (-> self rotation-speed target) 0.0) + (set! (-> self rotation-speed accel) 0.0005) + (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) 'stop) + (let ((t9-0 send-event-function) + (v1-1 (-> self alts 0))) + (t9-0 (if v1-1 (-> v1-1 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) 'open) + (let ((t9-1 send-event-function) + (v1-5 (-> self alts 1))) + (t9-1 (if v1-5 (-> v1-5 extra process)) a1-1))) + (close-specific-task! (game-task lavatube-balls) (task-status need-resolution)) + (level-hint-spawn (text-id lavatube-balls-resolution) "sksp0378" (the-as entity #f) *entity-pool* (game-task none)) + (if (nonzero? (-> self sound)) (stop! (-> self sound)))) + :trans + (behavior () + (update! (-> self rotation-speed) 0.0) + (energyhub-trans) + (energyhub-set-lava-height -122880.0) + (if (< (-> self rotation-speed value) 0.3) (go energyhub-stopped))) + :code + (behavior () + (loop + (suspend) + (let* ((f30-0 1.0) + (f28-0 0.25) + (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-2 (the-as number (logior #x3f800000 v1-1))) + (f0-4 (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2)))))) + (ja :num! (loop! f0-4))))) + :post ja-post) (defstate energyhub-idle (energyhub) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('flash) - (set! (-> self palette-val) 1.9921875) - ) - ) - ) - :trans (behavior () - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (let ((gp-0 0)) - (dotimes (s5-0 5) - (let* ((s4-0 (handle->process (-> self arm s5-0))) - (v1-10 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) energyarm)) - (the-as energyarm s4-0) - ) - ) - ) - (if (and v1-10 (handle->process (-> v1-10 ball))) - (+! gp-0 1) - ) - ) - ) - (cond - ((zero? gp-0) - (energyhub-set-lava-height -122880.0) - (go energyhub-stop) - ) - ((= gp-0 1) - (set! (-> self rotation-speed target) 1.8) - (energyhub-set-lava-height -129024.0) - ) - ((= gp-0 2) - (set! (-> self rotation-speed target) 1.6) - (energyhub-set-lava-height -135168.0) - ) - ((= gp-0 3) - (set! (-> self rotation-speed target) 1.4) - (energyhub-set-lava-height -141312.0) - ) - ((= gp-0 4) - (set! (-> self rotation-speed target) 1.2) - (energyhub-set-lava-height -147456.0) - ) - (else - (set! (-> self rotation-speed target) 1.0) - (energyhub-set-lava-height -151552.0) - ) - ) - ) - (update! (-> self rotation-speed-offset)) - (update! (-> self rotation-speed) (-> self rotation-speed-offset value)) - (energyhub-trans) - ) - :code (behavior () - (loop - (suspend) - (let* ((f30-0 1.0) - (f28-0 0.25) - (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-2 (the-as number (logior #x3f800000 v1-1))) - (f0-4 (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2))))) - ) - (ja :num! (loop! f0-4)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('flash) (set! (-> self palette-val) 1.9921875)))) + :trans + (behavior () + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (let ((gp-0 0)) + (dotimes (s5-0 5) + (let* ((s4-0 (handle->process (-> self arm s5-0))) + (v1-10 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) energyarm)) (the-as energyarm s4-0)))) + (if (and v1-10 (handle->process (-> v1-10 ball))) (+! gp-0 1)))) + (cond + ((zero? gp-0) (energyhub-set-lava-height -122880.0) (go energyhub-stop)) + ((= gp-0 1) (set! (-> self rotation-speed target) 1.8) (energyhub-set-lava-height -129024.0)) + ((= gp-0 2) (set! (-> self rotation-speed target) 1.6) (energyhub-set-lava-height -135168.0)) + ((= gp-0 3) (set! (-> self rotation-speed target) 1.4) (energyhub-set-lava-height -141312.0)) + ((= gp-0 4) (set! (-> self rotation-speed target) 1.2) (energyhub-set-lava-height -147456.0)) + (else (set! (-> self rotation-speed target) 1.0) (energyhub-set-lava-height -151552.0)))) + (update! (-> self rotation-speed-offset)) + (update! (-> self rotation-speed) (-> self rotation-speed-offset value)) + (energyhub-trans)) + :code + (behavior () + (loop + (suspend) + (let* ((f30-0 1.0) + (f28-0 0.25) + (v1-1 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-2 (the-as number (logior #x3f800000 v1-1))) + (f0-4 (+ f30-0 (* f28-0 (+ -1.0 (the-as float v1-2)))))) + (ja :num! (loop! f0-4))))) + :post ja-post) (defmethod init-from-entity! ((this energyhub) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -1346,23 +998,16 @@ (set! (-> this sound) (new 'process 'ambient-sound arg0 (-> this root trans))) (let ((s5-1 (entity-actor-count (-> this entity) 'alt-actor))) (dotimes (s4-0 (min 3 s5-1)) - (set! (-> this alts s4-0) (entity-actor-lookup (-> this entity) 'alt-actor s4-0)) - ) - ) + (set! (-> this alts s4-0) (entity-actor-lookup (-> this entity) 'alt-actor s4-0)))) (quaternion->matrix (-> this rot-mat-init) (-> this root quat)) (let ((f30-0 13107.2) (s5-2 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'matrix)) - ) + (s4-1 (new 'stack-no-clear 'matrix))) (set-vector! s5-2 0.0 2457.6 -24576.0 1.0) (matrix-rotate-y! s4-1 f30-0) (dotimes (s3-0 5) - (set! (-> this arm s3-0) - (ppointer->handle (process-spawn energyarm s5-2 (* (the float s3-0) f30-0) :to this)) - ) - (vector-matrix*! s5-2 s5-2 s4-1) - ) - ) + (set! (-> this arm s3-0) (ppointer->handle (process-spawn energyarm s5-2 (* (the float s3-0) f30-0) :to this))) + (vector-matrix*! s5-2 s5-2 s4-1))) (set! (-> this root pause-adjust-distance) 245760.0) (set! (-> this y-rotation) 0.0) (set! (-> this x-rotation) 0.0) @@ -1371,43 +1016,34 @@ (cond ((task-closed? (game-task lavatube-balls) (task-status need-resolution)) (set-params! (-> this rotation-speed) 0.0 0.01 0.1 0.9) - (go energyhub-stopped) - ) - (else - (set-params! (-> this rotation-speed) 1.0 0.01 0.1 0.9) - (go energyhub-idle) - ) - ) - (none) - ) - -(deftype energylava (process-drawable) - () - (:states - energylava-idle - ) - ) + (go energyhub-stopped)) + (else (set-params! (-> this rotation-speed) 1.0 0.01 0.1 0.9) (go energyhub-idle))) + (none)) +(deftype energylava (process-drawable) () + (:states + energylava-idle)) -(defskelgroup *energylava-sg* energylava 0 2 ((1 (meters 999999))) :bounds (static-spherem 0 0 0 120)) +(defskelgroup *energylava-sg* + energylava + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 120)) (defstate energylava-idle (energylava) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this energylava) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *energylava-sg* '()) (go energylava-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/lavatube/lavatube-obs.gc b/goal_src/jak1/levels/lavatube/lavatube-obs.gc index b4c247b9ba..629448ba9b 100644 --- a/goal_src/jak1/levels/lavatube/lavatube-obs.gc +++ b/goal_src/jak1/levels/lavatube/lavatube-obs.gc @@ -1,410 +1,359 @@ ;;-*-Lisp-*- (in-package goal) (bundles "LAV.DGO") - (require "engine/geometry/path.gc") (require "engine/util/sync-info.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/common-obs/water-anim.gc") -;; name: lavatube-obs.gc -;; name in dgo: lavatube-obs -;; dgos: L1, LAV - ;; DECOMP BEGINS -(deftype lavabase (process-drawable) - () +(deftype lavabase (process-drawable) () (:states - lavabase-idle - ) - ) - + lavabase-idle)) -(defskelgroup *lavabase-sg* lavabase lavabase-lod0-jg lavabase-idle-ja - ((lavabase-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 22) - :longest-edge (meters 9.4) - ) +(defskelgroup *lavabase-sg* + lavabase + lavabase-lod0-jg + lavabase-idle-ja + ((lavabase-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 22) + :longest-edge (meters 9.4)) (defstate lavabase-idle (lavabase) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this lavabase) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lavabase-sg* '()) (go lavabase-idle) - (none) - ) + (none)) -(deftype lavafall (process-drawable) - () +(deftype lavafall (process-drawable) () (:states - lavafall-idle - ) - ) + lavafall-idle)) - -(defskelgroup *lavafall-sg* lavafall lavafall-lod0-jg lavafall-idle-ja - ((lavafall-lod0-mg (meters 999999))) - :bounds (static-spherem 0 10 0 13) - :longest-edge (meters 5.4) - ) +(defskelgroup *lavafall-sg* + lavafall + lavafall-lod0-jg + lavafall-idle-ja + ((lavafall-lod0-mg (meters 999999))) + :bounds (static-spherem 0 10 0 13) + :longest-edge (meters 5.4)) (defstate lavafall-idle (lavafall) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this lavafall) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lavafall-sg* '()) (go lavafall-idle) - (none) - ) + (none)) -(deftype lavashortcut (process-drawable) - () +(deftype lavashortcut (process-drawable) () (:states - lavashortcut-idle - ) - ) - + lavashortcut-idle)) -(defskelgroup *lavashortcut-sg* lavashortcut lavashortcut-lod0-jg lavashortcut-idle-ja - ((lavashortcut-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -34 0 105) - :longest-edge (meters 11.9) - ) +(defskelgroup *lavashortcut-sg* + lavashortcut + lavashortcut-lod0-jg + lavashortcut-idle-ja + ((lavashortcut-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -34 0 105) + :longest-edge (meters 11.9)) (defstate lavashortcut-idle (lavashortcut) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this lavashortcut) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lavashortcut-sg* '()) (go lavashortcut-idle) - (none) - ) + (none)) (defpartgroup group-darkecobarrel-hit :id 540 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1932 :period (seconds 0.05) :length (seconds 0.017))) - ) + :parts ((sp-item 1932 :period (seconds 0.05) :length (seconds 0.017)))) (defpart 1932 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -2) (meters 4)) - (:y (meters 4) (meters 2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters -0.00008333333) (meters -0.00008333333)) - (:friction 0.9) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -2) (meters 4)) + (:y (meters 4) (meters 2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters -0.00008333333) (meters -0.00008333333)) + (:friction 0.9) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)))) (defpartgroup group-darkecobarrel-explode :id 541 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2125 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2126 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2127 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2128 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2166 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.067) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - ) - ) + :parts + ((sp-item 2125 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2126 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2127 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2128 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2166 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.067) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)))) (defpart 2166 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 8.0) - (:x (meters -2) (meters 4)) - (:y (meters -2) (meters 4)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:accel-y (meters -0.00033333333)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 8.0) + (:x (meters -2) (meters 4)) + (:y (meters -2) (meters 4)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:accel-y (meters -0.00033333333)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2126 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 96.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2129) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 96.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2129) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2129 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2128 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 16)) - (:r 64.0 192.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 16)) + (:r 64.0 192.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2125 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 32)) - (:scale-y :copy scale-x) - (:r 64.0 192.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 32)) + (:scale-y :copy scale-x) + (:r 64.0 192.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2127 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 6)))) (deftype darkecobarrel-leak (structure) - ((offset vector :inline) - (first-frame basic) - ) - ) - + ((offset vector :inline) + (first-frame basic))) (deftype darkecobarrel-base (process-drawable) - ((root collide-shape-moving :override) - (speed float) - (sync time-frame) - ) - ) - + ((root collide-shape-moving :override) + (speed float) + (sync time-frame))) (deftype darkecobarrel-mover (darkecobarrel-base) - ((start-time time-frame) - (hits int32) - (leak darkecobarrel-leak 1 :inline) - (y-offset bouncing-float :inline) - (y-offset-tgt delayed-rand-float :inline) - (down oscillating-vector :inline) - (down-tgt delayed-rand-vector :inline) - ) + ((start-time time-frame) + (hits int32) + (leak darkecobarrel-leak 1 :inline) + (y-offset bouncing-float :inline) + (y-offset-tgt delayed-rand-float :inline) + (down oscillating-vector :inline) + (down-tgt delayed-rand-vector :inline)) (:states - darkecobarrel-mover-die - darkecobarrel-mover-move - ) - ) - + darkecobarrel-mover-die + darkecobarrel-mover-move)) (deftype darkecobarrel (darkecobarrel-base) - ((self-override darkecobarrel :overlay-at self) - (spawn-array (array int64)) - (cur-spawn int32) - ) + ((self-override darkecobarrel :overlay-at self) + (spawn-array (array int64)) + (cur-spawn int32)) (:states - darkecobarrel-spawner - ) - ) - + darkecobarrel-spawner)) (defmethod relocate ((this darkecobarrel) (arg0 int)) - (if (nonzero? (-> this spawn-array)) - (&+! (-> this spawn-array) arg0) - ) - (call-parent-method this arg0) - ) - -(defskelgroup *darkecobarrel-sg* darkecobarrel darkecobarrel-lod0-jg darkecobarrel-idle-ja - ((darkecobarrel-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -7.75 0 8.6) - :longest-edge (meters 2.8) - ) + (if (nonzero? (-> this spawn-array)) (&+! (-> this spawn-array) arg0)) + (call-parent-method this arg0)) + +(defskelgroup *darkecobarrel-sg* + darkecobarrel + darkecobarrel-lod0-jg + darkecobarrel-idle-ja + ((darkecobarrel-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -7.75 0 8.6) + :longest-edge (meters 2.8)) (defbehavior darkecobarrel-base-time darkecobarrel-base () - (+ (current-time) (-> self sync)) - ) + (+ (current-time) (-> self sync))) (defbehavior darkecobarrel-base-pos darkecobarrel-base ((arg0 time-frame)) (if (< 0.0 (-> self speed)) - (* (-> self speed) (the float (- (darkecobarrel-base-time) arg0))) - (+ 1.0 (* (-> self speed) (the float (- (darkecobarrel-base-time) arg0)))) - ) - ) + (* (-> self speed) (the float (- (darkecobarrel-base-time) arg0))) + (+ 1.0 (* (-> self speed) (the float (- (darkecobarrel-base-time) arg0)))))) (defbehavior darkecobarrel-base-done? darkecobarrel-base ((arg0 float)) - (or (and (< 0.0 (-> self speed)) (< 1.0 arg0)) (and (< (-> self speed) 0.0) (< arg0 0.0))) - ) + (or (and (< 0.0 (-> self speed)) (< 1.0 arg0)) (and (< (-> self speed) 0.0) (< arg0 0.0)))) (defbehavior darkecobarrel-base-init darkecobarrel-base ((arg0 res-lump)) (process-drawable-from-entity! self (the-as entity-actor arg0)) @@ -412,178 +361,115 @@ (set! (-> self path) (new 'process 'path-control self 'path 0.0)) (let ((v0-3 (logior (-> self path flags) (path-control-flag display draw-line draw-point draw-text)))) (set! (-> self path flags) v0-3) - v0-3 - ) - ) + v0-3)) (defbehavior darkecobarrel-mover-pos darkecobarrel-mover () (let ((f30-0 (darkecobarrel-base-pos (-> self start-time)))) - (if (darkecobarrel-base-done? f30-0) - (deactivate self) - ) + (if (darkecobarrel-base-done? f30-0) (deactivate self)) (eval-path-curve! (-> self path) (-> self root trans) f30-0 'interp) (+! (-> self root trans y) (* 4096.0 (-> self y-offset osc value))) (+! (-> self root trans y) -4096.0) (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'matrix)) - ) + (gp-0 (new 'stack-no-clear 'matrix))) (let ((s4-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> self path) s5-0 f30-0) (set! (-> s4-0 quad) (-> self down value quad)) (set! (-> s4-0 y) -1.0) (vector-normalize! s4-0 1.0) - (forward-down-nopitch->inv-matrix gp-0 s5-0 s4-0) - ) + (forward-down-nopitch->inv-matrix gp-0 s5-0 s4-0)) (matrix->quaternion (-> self root quat) gp-0) (dotimes (s5-1 (-> self hits)) (when (-> self leak s5-1 first-frame) (set! (-> self leak s5-1 first-frame) #f) (let ((s4-1 (new 'stack-no-clear 'matrix))) (matrix-transpose! s4-1 gp-0) - (vector-matrix*! (the-as vector (-> self leak s5-1)) (the-as vector (-> self leak s5-1)) s4-1) - ) - ) + (vector-matrix*! (the-as vector (-> self leak s5-1)) (the-as vector (-> self leak s5-1)) s4-1))) (let ((s4-2 (new 'stack-no-clear 'vector))) (vector-matrix*! s4-2 (the-as vector (-> self leak s5-1)) gp-0) (vector+! s4-2 s4-2 (-> self root trans)) - (spawn (-> self part) s4-2) - ) - ) - ) - ) + (spawn (-> self part) s4-2))))) (if (< (vector-vector-xz-distance-squared (-> self root trans) (camera-pos)) 1073741800.0) - (logior! (-> self draw status) (draw-status skip-bones)) - (set! (-> self draw status) (the-as draw-status (logclear (-> self draw status) (draw-status skip-bones)))) - ) - (none) - ) + (logior! (-> self draw status) (draw-status skip-bones)) + (set! (-> self draw status) (the-as draw-status (logclear (-> self draw status) (draw-status skip-bones))))) + (none)) (defstate darkecobarrel-mover-die (darkecobarrel-mover) - :code (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (sound-play "dcrate-break") - (let ((gp-1 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 quad) (-> self root trans quad)) - (+! (-> gp-1 y) -49152.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 541) - 600 - #f - #f - #f - gp-1 - :to *entity-pool* - ) - ) - (suspend) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) + :code + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (sound-play "dcrate-break") + (let ((gp-1 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 quad) (-> self root trans quad)) + (+! (-> gp-1 y) -49152.0) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 541) 600 #f #f #f gp-1 :to *entity-pool*)) (suspend) - ) - (cleanup-for-death self) - (deactivate self) - ) - ) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend)) + (cleanup-for-death self) + (deactivate self))) (defstate darkecobarrel-mover-move (darkecobarrel-mover) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (cond - ((= proc *target*) - (let ((s5-0 (-> block param 0))) - (if (and s5-0 - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry s5-0) - (-> self root) - (the-as uint 1) - ) - (send-event proc 'attack-invinc s5-0 (static-attack-info ((mode 'death)))) - ) - (go darkecobarrel-mover-die) - ) - ) - ) - ((>= argc 2) - (case (-> block param 1) - (('eco-yellow) - (+! (-> self hits) 1) - (cond - ((>= (-> self hits) 2) - (go darkecobarrel-mover-die) - ) - (else - (let ((v1-17 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) - proc - ) - ) - (gp-1 (new 'stack-no-clear 'vector)) - ) - (set! (-> self leak (+ (-> self hits) -1) first-frame) #t) - (cond - (v1-17 + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (cond + ((= proc *target*) + (let ((s5-0 (-> block param 0))) + (if (and s5-0 + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry s5-0) + (-> self root) + (the-as uint 1)) + (send-event proc 'attack-invinc s5-0 (static-attack-info ((mode 'death))))) + (go darkecobarrel-mover-die)))) + ((>= argc 2) + (case (-> block param 1) + (('eco-yellow) + (+! (-> self hits) 1) + (cond + ((>= (-> self hits) 2) (go darkecobarrel-mover-die)) + (else + (let ((v1-17 (if (and (nonzero? proc) (type-type? (-> proc type) process-drawable)) proc)) + (gp-1 (new 'stack-no-clear 'vector))) + (set! (-> self leak (+ (-> self hits) -1) first-frame) #t) + (cond + (v1-17 (vector-! gp-1 (-> (the-as process-drawable v1-17) root trans) (-> self root trans)) (set! (-> self leak (+ (-> self hits) -1) offset quad) (-> gp-1 quad)) (vector-normalize! gp-1 -0.04) - (let ((v0-0 (the-as object (-> self down vel)))) - (set! (-> (the-as vector v0-0) quad) (-> gp-1 quad)) - v0-0 - ) - ) - (else + (let ((v0-0 (the-as object (-> self down vel)))) (set! (-> (the-as vector v0-0) quad) (-> gp-1 quad)) v0-0)) + (else (set! (-> self leak (+ (-> self hits) -1) offset quad) (-> self root trans quad)) - (set! (-> self leak (+ (-> self hits) -1) offset y) - (+ -49152.0 (-> self leak (+ (-> self hits) -1) offset y)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :trans (behavior () - (update! (-> self y-offset) 0.0) - (if (and (at-min? (-> self y-offset)) (< (-> self y-offset osc vel) 0.03)) - (set! (-> self y-offset osc vel) (fabs (update! (-> self y-offset-tgt)))) - ) - (update! (-> self down) (update-with-delay! (-> self down-tgt))) - (darkecobarrel-mover-pos) - ) - :code (behavior () - (let ((f30-0 0.9) - (f28-0 0.25) - ) - (+ f30-0 (* f28-0 (rand-float-gen))) - ) - (let ((gp-0 (-> self skel root-channel 0))) - (set! (-> gp-0 num-func) num-func-identity) - (set! (-> gp-0 frame-num) (* (rand-float-gen) (the float (ja-num-frames 0)))) - ) - (loop - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - ) - :post pusher-post - ) + (set! (-> self leak (+ (-> self hits) -1) offset y) (+ -49152.0 (-> self leak (+ (-> self hits) -1) offset y))))))))))))))) + :trans + (behavior () + (update! (-> self y-offset) 0.0) + (if (and (at-min? (-> self y-offset)) (< (-> self y-offset osc vel) 0.03)) + (set! (-> self y-offset osc vel) (fabs (update! (-> self y-offset-tgt))))) + (update! (-> self down) (update-with-delay! (-> self down-tgt))) + (darkecobarrel-mover-pos)) + :code + (behavior () + (let ((f30-0 0.9) + (f28-0 0.25)) + (+ f30-0 (* f28-0 (rand-float-gen)))) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 num-func) num-func-identity) + (set! (-> gp-0 frame-num) (* (rand-float-gen) (the float (ja-num-frames 0))))) + (loop + (ja :num-func num-func-identity :frame-num 0.0) + (suspend))) + :post pusher-post) (defbehavior darkecobarrel-mover-init-by-other darkecobarrel-mover ((arg0 res-lump) (arg1 float) (arg2 time-frame) (arg3 time-frame)) (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) - ) + (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-group s2-0 (the-as uint 2) 0))) (set! (-> s1-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s1-0 collide-with) (collide-kind target)) @@ -598,8 +484,7 @@ (set! (-> s0-0 prim-core offense) (collide-offense indestructible)) (set! (-> s0-0 transform-index) 3) (set-vector! (-> s0-0 local-sphere) 0.0 -32768.0 0.0 32768.0) - (append-prim s1-0 s0-0) - ) + (append-prim s1-0 s0-0)) (let ((s0-1 (new 'process 'collide-shape-prim-mesh s2-0 (the-as uint 1) (the-as uint 0)))) (set! (-> s0-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s0-1 collide-with) (collide-kind target)) @@ -607,13 +492,10 @@ (set! (-> s0-1 prim-core offense) (collide-offense indestructible)) (set! (-> s0-1 transform-index) 3) (set-vector! (-> s0-1 local-sphere) 0.0 -32768.0 0.0 32768.0) - (append-prim s1-0 s0-1) - ) - ) + (append-prim s1-0 s0-1))) (set! (-> s2-0 nav-radius) (* 0.75 (-> s2-0 root-prim local-sphere w))) (backup-collide-with-as s2-0) - (set! (-> self root) s2-0) - ) + (set! (-> self root) s2-0)) (darkecobarrel-base-init arg0) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 540) self)) (set! (-> self speed) arg1) @@ -628,399 +510,312 @@ (logclear! (-> self mask) (process-mask actor-pause)) (logior! (-> self mask) (process-mask attackable)) (go darkecobarrel-mover-move) - (none) - ) + (none)) (defbehavior darkecobarrel-advance-curspawn darkecobarrel () (+! (-> self cur-spawn) 1) (when (>= (-> self cur-spawn) (-> self spawn-array length)) (set! (-> self self-override cur-spawn) 0) - 0 - ) - (none) - ) + 0) + (none)) (defbehavior darkecobarrel-cycle-time darkecobarrel () - (-> self spawn-array (+ (-> self spawn-array length) -1)) - ) + (-> self spawn-array (+ (-> self spawn-array length) -1))) (defstate darkecobarrel-spawner (darkecobarrel) - :trans (behavior () - (let ((gp-1 (mod (darkecobarrel-base-time) (darkecobarrel-cycle-time)))) - (if (and (> (-> self cur-spawn) 0) (< gp-1 (-> self spawn-array (+ (-> self cur-spawn) -1)))) - (+! gp-1 (darkecobarrel-cycle-time)) - ) - (let ((gp-2 (- gp-1 (-> self spawn-array (-> self cur-spawn))))) - (when (>= gp-2 0) - (process-spawn - darkecobarrel-mover - (-> self entity) - (-> self speed) - (- (darkecobarrel-base-time) (the-as time-frame gp-2)) - (-> self sync) - :to self - ) - (darkecobarrel-advance-curspawn) - ) - ) - ) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) + :trans + (behavior () + (let ((gp-1 (mod (darkecobarrel-base-time) (darkecobarrel-cycle-time)))) + (if (and (> (-> self cur-spawn) 0) (< gp-1 (-> self spawn-array (+ (-> self cur-spawn) -1)))) + (+! gp-1 (darkecobarrel-cycle-time))) + (let ((gp-2 (- gp-1 (-> self spawn-array (-> self cur-spawn))))) + (when (>= gp-2 0) + (process-spawn darkecobarrel-mover + (-> self entity) + (-> self speed) + (- (darkecobarrel-base-time) (the-as time-frame gp-2)) + (-> self sync) + :to + self) + (darkecobarrel-advance-curspawn)))) + (if (nonzero? (-> self sound)) (update! (-> self sound)))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) (defmethod init-from-entity! ((this darkecobarrel) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (set! (-> this root) (the-as collide-shape-moving (new 'process 'trsqv))) (darkecobarrel-base-init arg0) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "lav-dark-eco" :fo-max 30) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "lav-dark-eco" :fo-max 30) (-> this root trans))) (logior! (-> this draw status) (draw-status hidden)) (set! (-> this speed) (/ 300.0 (res-lump-float (-> this entity) 'speed :default 61440.0))) (set! sv-16 (new 'static 'res-tag)) (let ((s5-1 (res-lump-data arg0 'delay pointer :tag-ptr (& sv-16)))) (cond (s5-1 - (set! (-> this spawn-array) (new 'process 'boxed-array time-frame (the-as int (-> sv-16 elt-count)))) - (dotimes (v1-12 (the-as int (-> sv-16 elt-count))) - (set! (-> this spawn-array v1-12) - (the int (* (fabs (-> this speed)) (-> (the-as (pointer float) (&+ s5-1 (* v1-12 4)))))) - ) - ) - ) + (set! (-> this spawn-array) (new 'process 'boxed-array time-frame (the-as int (-> sv-16 elt-count)))) + (dotimes (v1-12 (the-as int (-> sv-16 elt-count))) + (set! (-> this spawn-array v1-12) + (the int (* (fabs (-> this speed)) (-> (the-as (pointer float) (&+ s5-1 (* v1-12 4))))))))) (else - (set! (-> this spawn-array) (new 'process 'boxed-array time-frame 4)) - (set! (-> this spawn-array 0) (the int (* 45056.0 (fabs (-> this speed))))) - (set! (-> this spawn-array 1) (the int (* 90112.0 (fabs (-> this speed))))) - (set! (-> this spawn-array 2) (the int (* 45056.0 (fabs (-> this speed))))) - (set! (-> this spawn-array 3) (the int (* 135168.0 (fabs (-> this speed))))) - ) - ) - ) + (set! (-> this spawn-array) (new 'process 'boxed-array time-frame 4)) + (set! (-> this spawn-array 0) (the int (* 45056.0 (fabs (-> this speed))))) + (set! (-> this spawn-array 1) (the int (* 90112.0 (fabs (-> this speed))))) + (set! (-> this spawn-array 2) (the int (* 45056.0 (fabs (-> this speed))))) + (set! (-> this spawn-array 3) (the int (* 135168.0 (fabs (-> this speed)))))))) (dotimes (v1-19 (+ (-> this spawn-array length) -1)) - (+! (-> this spawn-array (+ v1-19 1)) (-> this spawn-array v1-19)) - ) - (set! (-> this sync) - (the-as time-frame (the int (* (fabs (-> this speed)) (res-lump-float (-> this entity) 'sync)))) - ) + (+! (-> this spawn-array (+ v1-19 1)) (-> this spawn-array v1-19))) + (set! (-> this sync) (the-as time-frame (the int (* (fabs (-> this speed)) (res-lump-float (-> this entity) 'sync))))) (set! (-> this speed) (/ 1.0 (* (-> this speed) (path-distance (-> this path))))) (let ((s5-3 (mod (darkecobarrel-base-time) (darkecobarrel-cycle-time)))) (set! (-> this cur-spawn) 0) (while (>= s5-3 (-> this spawn-array (-> this cur-spawn))) - (darkecobarrel-advance-curspawn) - ) + (darkecobarrel-advance-curspawn)) (+! (-> this cur-spawn) -1) (when (< (-> this cur-spawn) 0) (set! (-> this cur-spawn) (+ (-> this spawn-array length) -1)) - (+! s5-3 (-> this spawn-array (-> this cur-spawn))) - ) + (+! s5-3 (-> this spawn-array (-> this cur-spawn)))) (let ((s4-0 (-> this cur-spawn)) - (s5-4 (- (darkecobarrel-base-time) (the-as time-frame (- s5-3 (-> this spawn-array (-> this cur-spawn)))))) - ) + (s5-4 (- (darkecobarrel-base-time) (the-as time-frame (- s5-3 (-> this spawn-array (-> this cur-spawn))))))) (until (darkecobarrel-base-done? (darkecobarrel-base-pos s5-4)) (process-spawn darkecobarrel-mover (-> this entity) (-> this speed) s5-4 (-> this sync) :to this) (set! s5-4 (- s5-4 (the-as time-frame (-> this spawn-array s4-0)))) (+! s4-0 -1) - (if (< s4-0 0) - (set! s4-0 (+ (-> this spawn-array length) -1)) - (+! s5-4 (-> this spawn-array s4-0)) - ) - ) - ) - ) + (if (< s4-0 0) (set! s4-0 (+ (-> this spawn-array length) -1)) (+! s5-4 (-> this spawn-array s4-0)))))) (darkecobarrel-advance-curspawn) (go darkecobarrel-spawner) - (none) - ) + (none)) -(deftype lavafallsewera (process-drawable) - () +(deftype lavafallsewera (process-drawable) () (:states - lavafallsewera-idle - ) - ) - + lavafallsewera-idle)) -(defskelgroup *lavafallsewera-sg* lavafallsewera lavafallsewera-lod0-jg lavafallsewera-idle-ja - ((lavafallsewera-lod0-mg (meters 999999))) - :bounds (static-spherem -15 0 -5 185) - ) +(defskelgroup *lavafallsewera-sg* + lavafallsewera + lavafallsewera-lod0-jg + lavafallsewera-idle-ja + ((lavafallsewera-lod0-mg (meters 999999))) + :bounds (static-spherem -15 0 -5 185)) (defstate lavafallsewera-idle (lavafallsewera) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this lavafallsewera) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lavafallsewera-sg* '()) (go lavafallsewera-idle) - (none) - ) + (none)) -(deftype lavafallsewerb (process-drawable) - () +(deftype lavafallsewerb (process-drawable) () (:states - lavafallsewerb-idle - ) - ) + lavafallsewerb-idle)) - -(defskelgroup *lavafallsewerb-sg* lavafallsewerb lavafallsewerb-lod0-jg lavafallsewerb-idle-ja - ((lavafallsewerb-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 120) - ) +(defskelgroup *lavafallsewerb-sg* + lavafallsewerb + lavafallsewerb-lod0-jg + lavafallsewerb-idle-ja + ((lavafallsewerb-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 120)) (defstate lavafallsewerb-idle (lavafallsewerb) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this lavafallsewerb) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lavafallsewerb-sg* '()) (go lavafallsewerb-idle) - (none) - ) + (none)) (deftype chainmine (process-drawable) - ((root collide-shape-moving :override) - ) + ((root collide-shape-moving :override)) (:state-methods - die - idle - ) - ) - + die + idle)) (defpartgroup group-chainmine-explode :id 542 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2132 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2133 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2134 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2135 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2132 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2133 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2134 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2135 :period (seconds 2) :length (seconds 0.067)))) (defpart 2133 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2136) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2136) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2136 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2135 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 16)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-g -3.2666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 16)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-g -3.2666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2132 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 32)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 32)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2134 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2137) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2137) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2)))) (defpart 2137 - :init-specs ((:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b -2.1166666) - (:next-time (seconds 0.2)) - (:next-launcher 2138) - ) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-b -2.1166666) (:next-time (seconds 0.2)) (:next-launcher 2138))) (defpart 2138 - :init-specs ((:fade-r -0.5688889) - (:fade-g -0.28444445) - (:fade-b 0.0) - (:fade-a -0.21333334) - (:next-time (seconds 0.75)) - (:next-launcher 2139) - ) - ) + :init-specs + ((:fade-r -0.5688889) + (:fade-g -0.28444445) + (:fade-b 0.0) + (:fade-a -0.21333334) + (:next-time (seconds 0.75)) + (:next-launcher 2139))) (defpart 2139 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) -(defskelgroup *chainmine-sg* chainmine chainmine-lod0-jg chainmine-idle-ja - ((chainmine-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -10.75 0 12.75) - :longest-edge (meters 2.4) - ) +(defskelgroup *chainmine-sg* + chainmine + chainmine-lod0-jg + chainmine-idle-ja + ((chainmine-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -10.75 0 12.75) + :longest-edge (meters 2.4)) (defstate die (chainmine) :virtual #t - :code (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (sound-play "dcrate-break") - (let ((gp-1 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 quad) (-> self root trans quad)) - (+! (-> gp-1 y) -73728.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 542) - 600 - #f - #f - #f - gp-1 - :to *entity-pool* - ) - ) - (suspend) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) + :code + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (sound-play "dcrate-break") + (let ((gp-1 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 quad) (-> self root trans quad)) + (+! (-> gp-1 y) -73728.0) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 542) 600 #f #f #f gp-1 :to *entity-pool*)) (suspend) - ) - (cleanup-for-death self) - (deactivate self) - ) - ) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend)) + (cleanup-for-death self) + (deactivate self))) (defstate idle (chainmine) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack 'touch) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'deadly)))) - (go-virtual die) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack 'touch) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'deadly)))) (go-virtual die)))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this chainmine) (arg0 entity-actor)) (logior! (-> this mask) (process-mask attackable)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -1028,156 +823,135 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 -73728.0 0.0 18432.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *chainmine-sg* '()) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "lava-mine-chain" :fo-max 30) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "lava-mine-chain" :fo-max 30) (-> this root trans))) (go (method-of-object this idle)) - (none) - ) + (none)) -(defskelgroup *lavaballoon-sg* lavaballoon lavaballoon-lod0-jg lavaballoon-idle-ja - ((lavaballoon-lod0-mg (meters 20)) (lavaballoon-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0.8 0 3.8) - ) +(defskelgroup *lavaballoon-sg* + lavaballoon + lavaballoon-lod0-jg + lavaballoon-idle-ja + ((lavaballoon-lod0-mg (meters 20)) (lavaballoon-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0.8 0 3.8)) (deftype lavaballoon (process-drawable) - ((root collide-shape :override) - (move-per-tick float) - ) + ((root collide-shape :override) + (move-per-tick float)) (:state-methods - idle - die - ) - ) - + idle + die)) (defpartgroup group-lavaballoon :id 543 :duration (seconds 0.017) :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 1987) (sp-item 1988) (sp-item 1989)) - ) + :parts ((sp-item 1987) (sp-item 1988) (sp-item 1989))) (defpart 1988 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters -1) (meters 2)) - (:y (meters 1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 255.0) - (:a 32.0 32.0) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.42666668) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters -1) (meters 2)) + (:y (meters 1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 255.0) + (:a 32.0 32.0) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.42666668) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defpart 1989 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 2)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 255.0) - (:a 32.0 32.0) - (:vel-y (meters 0.04) (meters 0.08)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.85333335) - (:friction 0.98) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 2)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 255.0) + (:a 32.0 32.0) + (:vel-y (meters 0.04) (meters 0.08)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.85333335) + (:friction 0.98) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1.5)))) (defpart 1987 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 100.0) - (:b 80.0) - (:a 96.0) - (:fade-a -0.08) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 100.0) + (:b 80.0) + (:a 96.0) + (:fade-a -0.08) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defstate die (lavaballoon) :virtual #t - :code (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (sound-play "cool-balloon") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 543) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (suspend) - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (sound-play "cool-balloon") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 543) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (suspend) + (cleanup-for-death self) + (deactivate self))) (defstate idle (lavaballoon) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (send-event proc 'heat -10.0) - (go-virtual die) - ) - ) - ) - :trans (behavior () - (when (not (logtest? (-> self path flags) (path-control-flag not-found))) - (let ((f0-4 (* 0.5 (+ 1.0 (sin (* (-> self move-per-tick) (the float (current-time)))))))) - (eval-path-curve! (-> self path) (-> self root trans) f0-4 'interp) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (send-event proc 'heat -10.0) (go-virtual die)))) + :trans + (behavior () + (when (not (logtest? (-> self path flags) (path-control-flag not-found))) + (let ((f0-4 (* 0.5 (+ 1.0 (sin (* (-> self move-per-tick) (the float (current-time)))))))) + (eval-path-curve! (-> self path) (-> self root trans) f0-4 'interp)))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defmethod init-from-entity! ((this lavaballoon) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -1186,12 +960,10 @@ (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lavaballoon-sg* '()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 543) this)) @@ -1200,87 +972,70 @@ (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (when (not (logtest? (-> this path flags) (path-control-flag not-found))) (let ((f30-0 (res-lump-float (-> this entity) 'speed :default 12288.0))) - (set! (-> this move-per-tick) (* 32768.0 (/ 1.0 (* 300.0 (path-distance (-> this path)))) f30-0)) - ) - ) + (set! (-> this move-per-tick) (* 32768.0 (/ 1.0 (* 300.0 (path-distance (-> this path)))) f30-0)))) (go (method-of-object this idle)) - (none) - ) - -(deftype lavatube-lava (water-anim) - () - ) - - -(define ripple-for-lavatube-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) - ) - ) - ) + (none)) + +(deftype lavatube-lava (water-anim) ()) + +(define ripple-for-lavatube-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)))) (defstate water-vol-idle (lavatube-lava) :virtual #t - :post (behavior () - (let ((t9-0 (-> (method-of-type water-anim water-vol-idle) post))) - (if t9-0 - ((the-as (function none :behavior lavatube-lava) t9-0)) - ) - ) - (ja-post) - ) - ) + :post + (behavior () + (let ((t9-0 (-> (method-of-type water-anim water-vol-idle) post))) + (if t9-0 ((the-as (function none :behavior lavatube-lava) t9-0)))) + (ja-post))) (defmethod water-vol-method-22 ((this lavatube-lava)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set! (-> v1-2 global-scale) 2048.0) - (set! (-> v1-2 waveform) ripple-for-lavatube-lava) - ) + (set! (-> v1-2 waveform) ripple-for-lavatube-lava)) (logclear! (-> this flags) (water-flags wt23)) (logior! (-> this flags) (water-flags wt25)) (set! (-> this attack-event) 'heat) - (none) - ) + (none)) -(deftype lavayellowtarp (process-drawable) - () +(deftype lavayellowtarp (process-drawable) () (:states - lavayellowtarp-idle - ) - ) - + lavayellowtarp-idle)) -(defskelgroup *lavayellowtarp-sg* lavayellowtarp lavayellowtarp-lod0-jg lavayellowtarp-idle-ja - ((lavayellowtarp-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *lavayellowtarp-sg* + lavayellowtarp + lavayellowtarp-lod0-jg + lavayellowtarp-idle-ja + ((lavayellowtarp-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defstate lavayellowtarp-idle (lavayellowtarp) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this lavayellowtarp) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lavayellowtarp-sg* '()) (go lavayellowtarp-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/lavatube/lavatube-part.gc b/goal_src/jak1/levels/lavatube/lavatube-part.gc index b1322d3070..4e4b33d38d 100644 --- a/goal_src/jak1/levels/lavatube/lavatube-part.gc +++ b/goal_src/jak1/levels/lavatube/lavatube-part.gc @@ -1,629 +1,577 @@ ;;-*-Lisp-*- (in-package goal) (bundles "LAV.DGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/sound/gsound-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: lavatube-part.gc -;; name in dgo: lavatube-part -;; dgos: L1, LAV - ;; DECOMP BEGINS -(deftype lavatube-part (part-spawner) - () - ) - +(deftype lavatube-part (part-spawner) ()) (defpartgroup group-lavatube-crust-20x20 :id 616 :bounds (static-bspherem 0 0 0 14) - :parts ((sp-item 2489 :fade-after (meters 140) :falloff-to (meters 140))) - ) + :parts ((sp-item 2489 :fade-after (meters 140) :falloff-to (meters 140)))) (defpartgroup group-lavatube-lowlava-20x20 :id 617 :bounds (static-bspherem 0 12 0 48) - :parts ((sp-item 2490 :fade-after (meters 190) :falloff-to (meters 190))) - ) + :parts ((sp-item 2490 :fade-after (meters 190) :falloff-to (meters 190)))) (defpart 2490 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1) - (:x (meters -10) (meters 20)) - (:y (meters 3)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.6564103) - (:fade-a 0.13333334) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.2) (seconds 0.197)) - (:next-launcher 2491) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1) + (:x (meters -10) (meters 20)) + (:y (meters 3)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.6564103) + (:fade-a 0.13333334) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.2) (seconds 0.197)) + (:next-launcher 2491) + (:rotate-y (degrees 0)))) (defpart 2491 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2492)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2492))) (defpart 2492 - :init-specs ((:fade-r -1.28) (:fade-g 0.0) (:fade-b 0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2493)) - ) + :init-specs ((:fade-r -1.28) (:fade-g 0.0) (:fade-b 0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2493))) (defpart 2493 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.035555556)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.035555556))) (defpart 2489 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.16) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 2494) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.16) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 2494) + (:rotate-y (degrees 0)))) (defpart 2494 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2496)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2496))) (defpart 2496 - :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2497)) - ) + :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2497))) (defpart 2497 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.026666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.026666667))) (defpartgroup group-lavatube-crust-40x40 :id 629 :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 2529 :fade-after (meters 180) :falloff-to (meters 180))) - ) + :parts ((sp-item 2529 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-lavatube-lowlava-40x40 :id 630 :bounds (static-bspherem 0 12 0 32) - :parts ((sp-item 2530 :fade-after (meters 200) :falloff-to (meters 200))) - ) + :parts ((sp-item 2530 :fade-after (meters 200) :falloff-to (meters 200)))) (defpart 2530 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -20) (meters 40)) - (:y (meters 3)) - (:z (meters -20) (meters 40)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.04)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.6564103) - (:fade-a 0.13333334) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.2) (seconds 0.197)) - (:next-launcher 2491) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -20) (meters 40)) + (:y (meters 3)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.04)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.6564103) + (:fade-a 0.13333334) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.2) (seconds 0.197)) + (:next-launcher 2491) + (:rotate-y (degrees 0)))) (defpart 2529 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.8) - (:x (meters -20) (meters 40)) - (:y (meters 0)) - (:z (meters -20) (meters 40)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.16) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 2494) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.8) + (:x (meters -20) (meters 40)) + (:y (meters 0)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.16) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 2494) + (:rotate-y (degrees 0)))) (defpartgroup group-lavatube-green-smoke-down-1 :id 621 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) - (sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 2516 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 2517 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 2516 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 2517 :fade-after (meters 100) :falloff-to (meters 100)))) (defpartgroup group-lavatube-green-smoke-down-2 :id 622 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 5.12) :length (seconds 0.25)) - (sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.987) :length (seconds 0.32)) - (sp-item 2516 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.567) :length (seconds 0.2)) - (sp-item 2517 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 5.12) :length (seconds 0.25)) + (sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.987) :length (seconds 0.32)) + (sp-item 2516 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.567) :length (seconds 0.2)) + (sp-item 2517 :fade-after (meters 100) :falloff-to (meters 100)))) (defpartgroup group-lavatube-green-smoke-down-3 :id 623 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.87) :length (seconds 0.25)) - (sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.897) :length (seconds 0.32)) - (sp-item 2516 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.43) :length (seconds 0.2)) - (sp-item 2517 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.87) :length (seconds 0.25)) + (sp-item 2516 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.897) :length (seconds 0.32)) + (sp-item 2516 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.43) :length (seconds 0.2)) + (sp-item 2517 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 2517 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:x (meters 0) (meters 3)) - (:y (meters -1)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 255.0) - (:b 89.0 60.0) - (:a 0.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.01)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067) (seconds 0.015)) - (:next-launcher 2518) - (:conerot-x (degrees 180)) - (:conerot-y (degrees 0)) - (:conerot-z (degrees 0)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:x (meters 0) (meters 3)) + (:y (meters -1)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 255.0) + (:b 89.0 60.0) + (:a 0.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.01)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067) (seconds 0.015)) + (:next-launcher 2518) + (:conerot-x (degrees 180)) + (:conerot-y (degrees 0)) + (:conerot-z (degrees 0)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2518 - :init-specs ((:fade-a -0.47407407)) - ) + :init-specs ((:fade-a -0.47407407))) (defpart 2516 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:x (meters 0) (meters 3)) - (:y (meters -1)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 255.0) - (:b 89.0 60.0) - (:a 0.0) - (:vel-y (meters 0.16) (meters 0.08)) - (:scalevel-x (meters 0.02) (meters 0.01)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.00016666666) (meters 0.000033333334)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067) (seconds 0.015)) - (:next-launcher 2518) - (:conerot-x (degrees 180)) - (:conerot-y (degrees 0)) - (:conerot-z (degrees 0)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:x (meters 0) (meters 3)) + (:y (meters -1)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 255.0) + (:b 89.0 60.0) + (:a 0.0) + (:vel-y (meters 0.16) (meters 0.08)) + (:scalevel-x (meters 0.02) (meters 0.01)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.00016666666) (meters 0.000033333334)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067) (seconds 0.015)) + (:next-launcher 2518) + (:conerot-x (degrees 180)) + (:conerot-y (degrees 0)) + (:conerot-z (degrees 0)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-lavatube-green-smoke-angle-1 :id 624 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.5) :length (seconds 0.25)) - (sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.955) :length (seconds 0.32)) - (sp-item 2519 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 4.255) :length (seconds 0.2)) - (sp-item 2520 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.5) :length (seconds 0.25)) + (sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.955) :length (seconds 0.32)) + (sp-item 2519 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 4.255) :length (seconds 0.2)) + (sp-item 2520 :fade-after (meters 100) :falloff-to (meters 100)))) (defpartgroup group-lavatube-green-smoke-angle-2 :id 625 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 6.1) :length (seconds 0.25)) - (sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.235) :length (seconds 0.32)) - (sp-item 2519 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.675) :length (seconds 0.2)) - (sp-item 2520 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 6.1) :length (seconds 0.25)) + (sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.235) :length (seconds 0.32)) + (sp-item 2519 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.675) :length (seconds 0.2)) + (sp-item 2520 :fade-after (meters 100) :falloff-to (meters 100)))) (defpartgroup group-lavatube-green-smoke-angle-3 :id 626 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 5.1) :length (seconds 0.25)) - (sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.965) :length (seconds 0.32)) - (sp-item 2519 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 2.875) :length (seconds 0.2)) - (sp-item 2520 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 5.1) :length (seconds 0.25)) + (sp-item 2519 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 3.965) :length (seconds 0.32)) + (sp-item 2519 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 2.875) :length (seconds 0.2)) + (sp-item 2520 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 2520 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.5) - (:scale-x (meters 5) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 255.0) - (:b 89.0 60.0) - (:a 0.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.01)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.00016666666) (meters 0.0005)) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067) (seconds 0.015)) - (:next-launcher 2518) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 0)) - (:conerot-z (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.5) + (:scale-x (meters 5) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 255.0) + (:b 89.0 60.0) + (:a 0.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.01)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.00016666666) (meters 0.0005)) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067) (seconds 0.015)) + (:next-launcher 2518) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 0)) + (:conerot-z (degrees 0)))) (defpart 2519 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4 0.3) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 255.0) - (:b 89.0 60.0) - (:a 0.0) - (:vel-y (meters 0.16) (meters 0.08)) - (:scalevel-x (meters 0.016666668) (meters 0.006666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.00033333333) (meters 0.001)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067) (seconds 0.015)) - (:next-launcher 2518) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 0)) - (:conerot-z (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4 0.3) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 255.0) + (:b 89.0 60.0) + (:a 0.0) + (:vel-y (meters 0.16) (meters 0.08)) + (:scalevel-x (meters 0.016666668) (meters 0.006666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.00033333333) (meters 0.001)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067) (seconds 0.015)) + (:next-launcher 2518) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 0)) + (:conerot-z (degrees 0)))) (defpartgroup group-lavatube-fountain :id 627 :bounds (static-bspherem 0 -10 0 12) - :parts ((sp-item 2521 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 2522 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 2521 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2522 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 2522 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 1.0) - (:y (meters -0.75) (meters 0.25)) - (:scale-x (meters 0.4) (meters 0.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:scalevel-x (meters -0.00033333333) (meters 0.00033333333)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0013333333) (meters -0.0013333333)) - (:friction 0.98) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 80) (degrees 20)) - (:conerot-y (degrees -70) (degrees 50.000004)) - (:conerot-z (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 1.0) + (:y (meters -0.75) (meters 0.25)) + (:scale-x (meters 0.4) (meters 0.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:scalevel-x (meters -0.00033333333) (meters 0.00033333333)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0013333333) (meters -0.0013333333)) + (:friction 0.98) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 80) (degrees 20)) + (:conerot-y (degrees -70) (degrees 50.000004)) + (:conerot-z (degrees 0)))) (defpart 2521 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.1) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.01)) - (:scalevel-x (meters 0.0033333334) (meters 0.0013333333)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:fade-a 0.16) - (:timer (seconds 3)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.7) (seconds 0.297)) - (:next-launcher 2523) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees -60) (degrees 30)) - (:conerot-z (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.1) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.01)) + (:scalevel-x (meters 0.0033333334) (meters 0.0013333333)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:fade-a 0.16) + (:timer (seconds 3)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.7) (seconds 0.297)) + (:next-launcher 2523) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees -60) (degrees 30)) + (:conerot-z (degrees 0)))) (defpart 2523 - :init-specs ((:fade-r -0.64) - (:fade-g 0.0) - (:fade-b 0.21333334) - (:fade-a -0.08) - (:next-time (seconds 0.7) (seconds 0.297)) - (:next-launcher 2524) - ) - ) + :init-specs + ((:fade-r -0.64) + (:fade-g 0.0) + (:fade-b 0.21333334) + (:fade-a -0.08) + (:next-time (seconds 0.7) (seconds 0.297)) + (:next-launcher 2524))) (defpart 2524 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-lavatube-vents :id 628 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2525 :fade-after (meters 160) :falloff-to (meters 160))) - ) + :parts ((sp-item 2525 :fade-after (meters 160) :falloff-to (meters 160)))) (defpart 2525 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.3) - (:y (meters -1)) - (:scale-x (meters 8) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.01)) - (:scalevel-x (meters 0.0033333334) (meters 0.0013333333)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:fade-a 0.32) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 2526) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 0)) - (:conerot-z (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.3) + (:y (meters -1)) + (:scale-x (meters 8) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.01)) + (:scalevel-x (meters 0.0033333334) (meters 0.0013333333)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:fade-a 0.32) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 2526) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 0)) + (:conerot-z (degrees 0)))) (defpart 2526 - :init-specs ((:fade-r -1.28) - (:fade-g 0.0) - (:fade-b 0.42666668) - (:fade-a -0.10666667) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 2527) - ) - ) + :init-specs + ((:fade-r -1.28) + (:fade-g 0.0) + (:fade-b 0.42666668) + (:fade-a -0.10666667) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 2527))) (defpart 2527 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-lavatube-heavy-smoke :id 631 :bounds (static-bspherem 0 10 0 22) - :parts ((sp-item 2531 :fade-after (meters 140) :falloff-to (meters 140))) - ) + :parts ((sp-item 2531 :fade-after (meters 140) :falloff-to (meters 140)))) (defpart 2531 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 0.4) - (:x (meters -16) (meters 32)) - (:z (meters -16) (meters 32)) - (:scale-x (meters 12) (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.02)) - (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:fade-a 0.16) - (:timer (seconds 3)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.7) (seconds 0.297)) - (:next-launcher 2523) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 0.4) + (:x (meters -16) (meters 32)) + (:z (meters -16) (meters 32)) + (:scale-x (meters 12) (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.02)) + (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:fade-a 0.16) + (:timer (seconds 3)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.7) (seconds 0.297)) + (:next-launcher 2523) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2532 - :init-specs ((:fade-r -0.64) - (:fade-g 0.0) - (:fade-b 0.21333334) - (:fade-a -0.08) - (:next-time (seconds 0.7) (seconds 0.297)) - (:next-launcher 2524) - ) - ) + :init-specs + ((:fade-r -0.64) + (:fade-g 0.0) + (:fade-b 0.21333334) + (:fade-a -0.08) + (:next-time (seconds 0.7) (seconds 0.297)) + (:next-launcher 2524))) (defpart 2533 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-lavatube-heavy-smoke-start :id 632 :bounds (static-bspherem 0 10 0 22) - :parts ((sp-item 2534 :fade-after (meters 140) :falloff-to (meters 140)) - (sp-item 2535 :fade-after (meters 200) :falloff-to (meters 200)) - ) - ) + :parts + ((sp-item 2534 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 2535 :fade-after (meters 200) :falloff-to (meters 200)))) (defpart 2534 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 5.0) - (:x (meters -14) (meters 28)) - (:y (meters 8) (meters 8)) - (:z (meters 4) (meters 1)) - (:scale-x (meters 0.4) (meters 0.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 64.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters -0.04) (meters -0.013333334)) - (:scalevel-x (meters -0.00033333333) (meters 0.00033333333)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.002) (meters -0.00066666666)) - (:friction 0.98) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 60)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 5.0) + (:x (meters -14) (meters 28)) + (:y (meters 8) (meters 8)) + (:z (meters 4) (meters 1)) + (:scale-x (meters 0.4) (meters 0.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 64.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters -0.04) (meters -0.013333334)) + (:scalevel-x (meters -0.00033333333) (meters 0.00033333333)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.002) (meters -0.00066666666)) + (:friction 0.98) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 60)) + (:rotate-y (degrees 90)))) (defpart 2535 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4 0.8) - (:x (meters -16) (meters 32)) - (:y (meters -14) (meters 30)) - (:z (meters -8) (meters 8)) - (:scale-x (meters 12) (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.02)) - (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:fade-a 0.16) - (:timer (seconds 3)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.7) (seconds 0.297)) - (:next-launcher 2523) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4 0.8) + (:x (meters -16) (meters 32)) + (:y (meters -14) (meters 30)) + (:z (meters -8) (meters 8)) + (:scale-x (meters 12) (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.02)) + (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:fade-a 0.16) + (:timer (seconds 3)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.7) (seconds 0.297)) + (:next-launcher 2523) + (:rotate-y (degrees 90)))) (defpartgroup group-lavatube-heavy-smoke-end :id 633 :bounds (static-bspherem 0 10 0 22) - :parts ((sp-item 2536 :fade-after (meters 140) :falloff-to (meters 140)) - (sp-item 2537 :fade-after (meters 200) :falloff-to (meters 200)) - ) - ) + :parts + ((sp-item 2536 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 2537 :fade-after (meters 200) :falloff-to (meters 200)))) (defpart 2536 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 3.0) - (:x (meters -10) (meters 20)) - (:y (meters 0) (meters 8)) - (:z (meters 2) (meters 1)) - (:scale-x (meters 0.4) (meters 0.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 64.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters -0.04) (meters -0.013333334)) - (:scalevel-x (meters -0.00033333333) (meters 0.00033333333)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.002) (meters -0.00066666666)) - (:friction 0.98) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 60)) - (:rotate-y (degrees 240)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 3.0) + (:x (meters -10) (meters 20)) + (:y (meters 0) (meters 8)) + (:z (meters 2) (meters 1)) + (:scale-x (meters 0.4) (meters 0.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 64.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters -0.04) (meters -0.013333334)) + (:scalevel-x (meters -0.00033333333) (meters 0.00033333333)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.002) (meters -0.00066666666)) + (:friction 0.98) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 60)) + (:rotate-y (degrees 240)))) (defpart 2537 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.4) - (:x (meters -10) (meters 20)) - (:y (meters -22) (meters 30)) - (:z (meters -8) (meters 8)) - (:scale-x (meters 12) (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.02)) - (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:fade-a 0.16) - (:timer (seconds 3)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.7) (seconds 0.297)) - (:next-launcher 2523) - (:rotate-y (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.4) + (:x (meters -10) (meters 20)) + (:y (meters -22) (meters 30)) + (:z (meters -8) (meters 8)) + (:scale-x (meters 12) (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.02)) + (:scalevel-x (meters 0.006666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:fade-a 0.16) + (:timer (seconds 3)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.7) (seconds 0.297)) + (:next-launcher 2523) + (:rotate-y (degrees 180)))) diff --git a/goal_src/jak1/levels/maincave/baby-spider.gc b/goal_src/jak1/levels/maincave/baby-spider.gc index 0e42a2e063..b231467314 100644 --- a/goal_src/jak1/levels/maincave/baby-spider.gc +++ b/goal_src/jak1/levels/maincave/baby-spider.gc @@ -1,13 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "levels/maincave/cavecrystal-light.gc") (require "levels/snow/snow-ram-boss.gc") -;; name: baby-spider.gc -;; name in dgo: baby-spider -;; dgos: L1, MAI, MAINCAVE ;; note: changed for high fps (declare-type cave-trap process-drawable) @@ -15,169 +11,155 @@ ;; DECOMP BEGINS (deftype baby-spider-spawn-params (structure) - ((hatched? symbol) - (fast-start? symbol) - (hack-move-above-ground? symbol) - (die-if-not-visible? symbol) - (pickup int32) - (pickup-amount int32) - (event-death symbol) - (delay-before-dying-if-not-visible time-frame) - ) + ((hatched? symbol) + (fast-start? symbol) + (hack-move-above-ground? symbol) + (die-if-not-visible? symbol) + (pickup int32) + (pickup-amount int32) + (event-death symbol) + (delay-before-dying-if-not-visible time-frame)) (:methods - (init! (_type_ symbol symbol symbol symbol int int symbol) none) - (set-delay! (_type_ time-frame) none) - ) - ) - + (init! (_type_ symbol symbol symbol symbol int int symbol) none) + (set-delay! (_type_ time-frame) none))) (deftype baby-spider (nav-enemy) - ((die-if-not-visible? symbol) - (hack-move-above-ground? symbol) - (state-float float) - (wiggle-angle float) - (delta-wiggle-angle float) - (wiggle-factor float) - (event-death symbol) - (delay-before-dying-if-not-visible time-frame) - (chase-rest-time time-frame) - (target-nav-time time-frame) - (unknown00 basic) - (unknown01 basic) - (wiggle-time time-frame) - (last-visible-time time-frame) - (up-vector vector :inline) - (state-vector vector :inline) - ) + ((die-if-not-visible? symbol) + (hack-move-above-ground? symbol) + (state-float float) + (wiggle-angle float) + (delta-wiggle-angle float) + (wiggle-factor float) + (event-death symbol) + (delay-before-dying-if-not-visible time-frame) + (chase-rest-time time-frame) + (target-nav-time time-frame) + (unknown00 basic) + (unknown01 basic) + (wiggle-time time-frame) + (last-visible-time time-frame) + (up-vector vector :inline) + (state-vector vector :inline)) (:states - baby-spider-die-fast - baby-spider-hatching - baby-spider-resume - ) - ) - - -(defskelgroup *baby-spider-sg* baby-spider baby-spider-lod0-jg -1 - ((baby-spider-lod0-mg (meters 20)) (baby-spider-lod1-mg (meters 40)) (baby-spider-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 2.25) - :shadow baby-spider-shadow-mg - ) - -(define *baby-spider-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 6 - :walk-anim 8 - :turn-anim 8 - :notice-anim 11 - :run-anim 7 - :jump-anim 9 - :jump-land-anim 10 - :victory-anim 12 - :taunt-anim 12 - :die-anim 13 - :neck-joint 18 - :run-travel-speed (meters 7) - :run-rotate-speed (degrees 7999.9995) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.075) - :walk-travel-speed (meters 2) - :walk-rotate-speed (degrees 7999.9995) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.075) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 1) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 3) - :frustration-time (seconds 1.5) - :die-anim-hold-frame 10000000000.0 - :jump-anim-start-frame 2.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :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 (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) - -(define *baby-spider-nav-enemy-info-for-cave-trap* (new 'static 'nav-enemy-info - :idle-anim 6 - :walk-anim 8 - :turn-anim 8 - :notice-anim 11 - :run-anim 7 - :jump-anim 9 - :jump-land-anim 10 - :victory-anim 12 - :taunt-anim 12 - :die-anim 13 - :neck-joint 18 - :run-travel-speed (meters 7) - :run-rotate-speed (degrees 7999.9995) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.075) - :walk-travel-speed (meters 2) - :walk-rotate-speed (degrees 7999.9995) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.075) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 1) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 80) - :stop-chase-distance (meters 90) - :frustration-distance (meters 3) - :frustration-time (seconds 1.5) - :die-anim-hold-frame 10000000000.0 - :jump-anim-start-frame 2.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :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 (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) - -(defmethod init! ((this baby-spider-spawn-params) - (arg0 symbol) - (arg1 symbol) - (arg2 symbol) - (arg3 symbol) - (arg4 int) - (arg5 int) - (arg6 symbol) - ) + baby-spider-die-fast + baby-spider-hatching + baby-spider-resume)) + +(defskelgroup *baby-spider-sg* + baby-spider + baby-spider-lod0-jg + -1 + ((baby-spider-lod0-mg (meters 20)) (baby-spider-lod1-mg (meters 40)) (baby-spider-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 2.25) + :shadow baby-spider-shadow-mg) + +(define *baby-spider-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 6 + :walk-anim 8 + :turn-anim 8 + :notice-anim 11 + :run-anim 7 + :jump-anim 9 + :jump-land-anim 10 + :victory-anim 12 + :taunt-anim 12 + :die-anim 13 + :neck-joint 18 + :run-travel-speed (meters 7) + :run-rotate-speed (degrees 7999.9995) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.075) + :walk-travel-speed (meters 2) + :walk-rotate-speed (degrees 7999.9995) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.075) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 1) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 3) + :frustration-time (seconds 1.5) + :die-anim-hold-frame 10000000000.0 + :jump-anim-start-frame 2.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :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 (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) + +(define *baby-spider-nav-enemy-info-for-cave-trap* + (new 'static + 'nav-enemy-info + :idle-anim 6 + :walk-anim 8 + :turn-anim 8 + :notice-anim 11 + :run-anim 7 + :jump-anim 9 + :jump-land-anim 10 + :victory-anim 12 + :taunt-anim 12 + :die-anim 13 + :neck-joint 18 + :run-travel-speed (meters 7) + :run-rotate-speed (degrees 7999.9995) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.075) + :walk-travel-speed (meters 2) + :walk-rotate-speed (degrees 7999.9995) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.075) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 1) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 80) + :stop-chase-distance (meters 90) + :frustration-distance (meters 3) + :frustration-time (seconds 1.5) + :die-anim-hold-frame 10000000000.0 + :jump-anim-start-frame 2.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :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 (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) + +(defmethod init! ((this baby-spider-spawn-params) (arg0 symbol) (arg1 symbol) (arg2 symbol) (arg3 symbol) (arg4 int) (arg5 int) (arg6 symbol)) (set! (-> this hatched?) arg0) (set! (-> this fast-start?) arg1) (set! (-> this die-if-not-visible?) arg2) @@ -186,481 +168,323 @@ (set! (-> this pickup-amount) arg5) (set! (-> this event-death) arg6) (set! (-> this delay-before-dying-if-not-visible) (seconds 2)) - (none) - ) + (none)) (defmethod set-delay! ((this baby-spider-spawn-params) (arg0 time-frame)) (set! (-> this delay-before-dying-if-not-visible) arg0) - (none) - ) + (none)) (defmethod touch-handler ((this baby-spider) (arg0 process) (arg1 event-message-block)) (when ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) + (the-as uint 1)) (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) - (go (method-of-object this nav-enemy-victory)) - ) - ) - ) + (go (method-of-object this nav-enemy-victory))))) (defbehavior baby-spider-default-event-handler baby-spider ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('victory) - (go-virtual nav-enemy-victory) - ) - (else - (nav-enemy-default-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (('victory) (go-virtual nav-enemy-victory)) + (else (nav-enemy-default-event-handler arg0 arg1 arg2 arg3)))) baby-spider-default-event-handler (defmethod common-post ((this baby-spider)) (when (logtest? (-> this collide-info status) (cshape-moving-flags onsurf)) (vector-deg-seek (-> this up-vector) (-> this up-vector) (-> this collide-info surface-normal) 910.2222) - (vector-normalize! (-> this up-vector) 1.0) - ) - (forward-up-nopitch->quaternion - (-> this collide-info quat) - (vector-z-quaternion! (new-stack-vector0) (-> this collide-info quat)) - (-> this up-vector) - ) + (vector-normalize! (-> this up-vector) 1.0)) + (forward-up-nopitch->quaternion (-> this collide-info quat) + (vector-z-quaternion! (new-stack-vector0) (-> this collide-info quat)) + (-> this up-vector)) (call-parent-method this) - (none) - ) + (none)) (defmethod nav-enemy-method-38 ((this baby-spider)) - (integrate-for-enemy-with-move-to-ground! - (-> this collide-info) - (-> this collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (none) - ) + (integrate-for-enemy-with-move-to-ground! (-> this collide-info) + (-> this collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (none)) (defmethod nav-enemy-method-51 ((this baby-spider)) (let* ((f0-0 (rand-vu-float-range 0.0 1.0)) (f1-1 (+ 1.0 (* 2.0 f0-0))) (f2-2 f1-1) (f2-4 (/ 1.0 f2-2)) - (f0-2 (+ 1.0 (* 0.2 f0-0))) - ) + (f0-2 (+ 1.0 (* 0.2 f0-0)))) (set! (-> this delta-wiggle-angle) (* 910.2222 f1-1)) (set! (-> this wiggle-factor) (* 1.5 f2-4)) - (set! (-> this target-speed) (* 28672.0 f0-2)) - ) - (none) - ) + (set! (-> this target-speed) (* 28672.0 f0-2))) + (none)) (defmethod nav-enemy-method-52 ((this baby-spider) (arg0 vector)) ;; og:preserve-this changed for high fps (+! (-> this wiggle-angle) (* DISPLAY_FPS_RATIO (-> this delta-wiggle-angle))) - (if (< 65536.0 (-> this wiggle-angle)) - (+! (-> this wiggle-angle) -65536.0) - ) + (if (< 65536.0 (-> this wiggle-angle)) (+! (-> this wiggle-angle) -65536.0)) (let* ((v1-3 (-> this collide-info trans)) (a1-2 (vector-! (new 'stack-no-clear 'vector) v1-3 arg0)) (s2-0 (vector-rotate-around-y! (new 'stack-no-clear 'vector) a1-2 16384.0)) - (v1-4 - (vector+*! (new 'stack-no-clear 'vector) arg0 s2-0 (* (-> this wiggle-factor) (sin (-> this wiggle-angle)))) - ) - (v0-3 (-> this nav target-pos)) - ) + (v1-4 (vector+*! (new 'stack-no-clear 'vector) arg0 s2-0 (* (-> this wiggle-factor) (sin (-> this wiggle-angle))))) + (v0-3 (-> this nav target-pos))) (set! (-> v0-3 quad) (-> v1-4 quad)) - (the-as symbol v0-3) - ) - ) + (the-as symbol v0-3))) (defmethod nav-enemy-method-53 ((this baby-spider)) (cond - ((logtest? (-> this draw status) (draw-status was-drawn)) - (set-time! (-> this last-visible-time)) - (return #f) - ) + ((logtest? (-> this draw status) (draw-status was-drawn)) (set-time! (-> this last-visible-time)) (return #f)) (else - (if (-> this die-if-not-visible?) - (return (time-elapsed? (-> this last-visible-time) (-> this delay-before-dying-if-not-visible))) - ) - ) - ) - #f - ) + (if (-> this die-if-not-visible?) + (return (time-elapsed? (-> this last-visible-time) (-> this delay-before-dying-if-not-visible)))))) + #f) (defstate baby-spider-hatching (baby-spider) :event baby-spider-default-event-handler - :code (behavior () - (ja-channel-push! 1 0) - (ja-no-eval :group! baby-spider-birth-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (suspend) - (ja :num! (seek!)) - ) - (go baby-spider-resume) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (ja-channel-push! 1 0) + (ja-no-eval :group! baby-spider-birth-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (suspend) + (ja :num! (seek!))) + (go baby-spider-resume)) + :post nav-enemy-simple-post) (defstate baby-spider-resume (baby-spider) :event baby-spider-default-event-handler - :code (behavior () - (cond - ((not *target*) - (go-virtual nav-enemy-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - ) - ((and (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status was-drawn)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - (go-virtual nav-enemy-idle) - ) - ) + :code + (behavior () + (cond + ((not *target*) (go-virtual nav-enemy-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase)) + ((and (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status was-drawn))) + (go-virtual nav-enemy-patrol))) + (go-virtual nav-enemy-idle))) (defstate nav-enemy-idle (baby-spider) :virtual #t :event baby-spider-default-event-handler - :enter (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self collide-info trans quad)) - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - (if (-> self hack-move-above-ground?) - (set! (-> self collide-info trans quad) (-> gp-0 quad)) - ) - ) - ) - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-idle) trans))) - (if t9-2 - (t9-2) - ) - ) - ) - :post (behavior () - (ja-post) - ) - ) + :enter + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self collide-info trans quad)) + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) (if t9-0 (t9-0))) + (if (-> self hack-move-above-ground?) (set! (-> self collide-info trans quad) (-> gp-0 quad))))) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-idle) trans))) (if t9-2 (t9-2)))) + :post + (behavior () + (ja-post))) (defstate nav-enemy-patrol (baby-spider) :virtual #t :event baby-spider-default-event-handler - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-patrol) trans))) - (if t9-2 - (t9-2) - ) - ) - ) - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-patrol) trans))) (if t9-2 (t9-2)))) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (loop + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))))))) (defstate nav-enemy-notice (baby-spider) :virtual #t :event baby-spider-default-event-handler - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-notice) trans))) - (if t9-2 - (t9-2) - ) - ) - ) - :code (behavior () - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.17)) - (ja-no-eval :group! baby-spider-notice-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :num! (seek!)) - (go-virtual nav-enemy-chase) - ) - ) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-notice) trans))) (if t9-2 (t9-2)))) + :code + (behavior () + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.17)) + (ja-no-eval :group! baby-spider-notice-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :num! (seek!)) + (go-virtual nav-enemy-chase))) (defstate nav-enemy-chase (baby-spider) :virtual #t :event baby-spider-default-event-handler - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (if (time-elapsed? (-> self state-time) (-> self chase-rest-time)) - (go-virtual nav-enemy-victory) - ) - (let ((t9-3 (-> (method-of-type nav-enemy nav-enemy-chase) trans))) - (if t9-3 - (t9-3) - ) - ) - ) - :code (behavior () - (set-time! (-> self target-nav-time)) - (set! (-> self wiggle-time) (+ (current-time) (seconds -10))) - (set! (-> self wiggle-angle) 0.0) - (set! (-> self chase-rest-time) (rand-vu-int-range (seconds 1) (seconds 4))) - (ja-channel-push! 1 (seconds 0.17)) - (ja :group! baby-spider-run-ja :num! min) - (loop - (when (time-elapsed? (-> self wiggle-time) (seconds 1)) - (set-time! (-> self wiggle-time)) - (nav-enemy-method-51 self) - ) - (suspend) - (ja :num! (loop!)) - ) - ) - :post (behavior () - (nav-enemy-method-52 self (target-pos 0)) - (nav-enemy-travel-post) - ) - ) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (if (time-elapsed? (-> self state-time) (-> self chase-rest-time)) (go-virtual nav-enemy-victory)) + (let ((t9-3 (-> (method-of-type nav-enemy nav-enemy-chase) trans))) (if t9-3 (t9-3)))) + :code + (behavior () + (set-time! (-> self target-nav-time)) + (set! (-> self wiggle-time) (+ (current-time) (seconds -10))) + (set! (-> self wiggle-angle) 0.0) + (set! (-> self chase-rest-time) (rand-vu-int-range (seconds 1) (seconds 4))) + (ja-channel-push! 1 (seconds 0.17)) + (ja :group! baby-spider-run-ja :num! min) + (loop + (when (time-elapsed? (-> self wiggle-time) (seconds 1)) + (set-time! (-> self wiggle-time)) + (nav-enemy-method-51 self)) + (suspend) + (ja :num! (loop!)))) + :post + (behavior () + (nav-enemy-method-52 self (target-pos 0)) + (nav-enemy-travel-post))) (defstate nav-enemy-stop-chase (baby-spider) :virtual #t :event baby-spider-default-event-handler - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-stop-chase) trans))) - (if t9-2 - (t9-2) - ) - ) - ) - :code (-> (method-of-type nav-enemy nav-enemy-stop-chase) code) - ) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-stop-chase) trans))) (if t9-2 (t9-2)))) + :code + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + code)) (defstate nav-enemy-stare (baby-spider) :virtual #t :event baby-spider-default-event-handler - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-stare) trans))) - (if t9-2 - (t9-2) - ) - ) - ) - :code (behavior () - (set! (-> self rotate-speed) 1456355.5) - (set! (-> self turn-time) (seconds 0.075)) - (let ((f30-0 (rand-vu-float-range 0.8 1.2))) - (loop - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! baby-spider-celebrate-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ja-no-eval :num! (loop!)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (let ((gp-0 (rand-vu-int-range 300 600)) - (s5-0 (current-time)) - ) - (until (time-elapsed? s5-0 gp-0) - (ja :num-func num-func-identity :frame-num 0.0) - (ja-blend-eval) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-stare) trans))) (if t9-2 (t9-2)))) + :code + (behavior () + (set! (-> self rotate-speed) 1456355.5) + (set! (-> self turn-time) (seconds 0.075)) + (let ((f30-0 (rand-vu-float-range 0.8 1.2))) + (loop + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! baby-spider-celebrate-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) (suspend) - (suspend) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! max f30-0))) + (ja-no-eval :num! (loop!)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (let ((gp-0 (rand-vu-int-range 300 600)) + (s5-0 (current-time))) + (until (time-elapsed? s5-0 gp-0) + (ja :num-func num-func-identity :frame-num 0.0) + (ja-blend-eval) + (suspend) + (suspend))))))) (defstate nav-enemy-give-up (baby-spider) :virtual #t :event baby-spider-default-event-handler - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-give-up) trans))) - (if t9-2 - (t9-2) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! baby-spider-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! baby-spider-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-give-up) trans))) (if t9-2 (t9-2)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! baby-spider-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! baby-spider-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-attack (baby-spider) :virtual #t :event baby-spider-default-event-handler - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-attack) trans))) - (if t9-2 - (t9-2) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! baby-spider-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-victory) - ) - ) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-attack) trans))) (if t9-2 (t9-2)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! baby-spider-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-victory))) (defstate nav-enemy-victory (baby-spider) :virtual #t :event baby-spider-default-event-handler - :trans (behavior () - (if (nav-enemy-method-53 self) - (go baby-spider-die-fast) - ) - (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-victory) trans))) - (if t9-2 - (t9-2) - ) - ) - ) - :code (-> (method-of-type nav-enemy nav-enemy-victory) code) - ) + :trans + (behavior () + (if (nav-enemy-method-53 self) (go baby-spider-die-fast)) + (let ((t9-2 (-> (method-of-type nav-enemy nav-enemy-victory) trans))) (if t9-2 (t9-2)))) + :code + (-> (method-of-type nav-enemy nav-enemy-victory) + code)) (defstate nav-enemy-die (baby-spider) :virtual #t :event process-drawable-death-event-handler - :enter (behavior () - (let ((v1-0 (-> self event-death))) - (if v1-0 - (send-event (ppointer->process (-> self parent)) v1-0) - ) - ) - (set! (-> self draw bounds y) 8192.0) - (set! (-> self draw bounds w) 22528.0) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-die) enter))) - (if t9-1 - (t9-1) - ) - ) - ) - ) + :enter + (behavior () + (let ((v1-0 (-> self event-death))) (if v1-0 (send-event (ppointer->process (-> self parent)) v1-0))) + (set! (-> self draw bounds y) 8192.0) + (set! (-> self draw bounds w) 22528.0) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-die) enter))) (if t9-1 (t9-1))))) (defstate baby-spider-die-fast (baby-spider) :event baby-spider-default-event-handler - :code (behavior () - (cleanup-for-death self) - (let ((v1-2 (-> self event-death))) - (if v1-2 - (send-event (ppointer->process (-> self parent)) v1-2) - ) - ) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (let ((v1-2 (-> self event-death))) (if v1-2 (send-event (ppointer->process (-> self parent)) v1-2))))) (defmethod initialize-collision ((this baby-spider)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4096.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) 4096.0) (backup-collide-with-as s5-0) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this baby-spider)) (set-time! (-> this last-visible-time)) (initialize-skeleton this *baby-spider-sg* '()) (if (= (-> this parent 0 type) cave-trap) - (init-defaults! this *baby-spider-nav-enemy-info-for-cave-trap*) - (init-defaults! this *baby-spider-nav-enemy-info*) - ) + (init-defaults! this *baby-spider-nav-enemy-info-for-cave-trap*) + (init-defaults! this *baby-spider-nav-enemy-info*)) (let ((v1-11 (-> this draw shadow-ctrl settings))) (logclear! (-> v1-11 flags) (shadow-flags shdf03)) - (set! (-> v1-11 fade-dist) 98304.0) - ) + (set! (-> v1-11 fade-dist) 98304.0)) (vector-float*! (-> this collide-info scale) *identity-vector* 0.63) (set! (-> this neck up) (the-as uint 1)) (set! (-> this neck nose) (the-as uint 2)) @@ -672,8 +496,7 @@ baby-spider-default-event-handler (set! (-> this chase-rest-time) (seconds 1)) (set! (-> this up-vector quad) (-> *y-vector* quad)) 0 - (none) - ) + (none)) (defbehavior baby-spider-init-by-other baby-spider ((arg0 baby-spider) (arg1 vector) (arg2 vector) (arg3 baby-spider-spawn-params)) (set! (-> self event-death) (-> arg3 event-death)) @@ -690,27 +513,17 @@ baby-spider-default-event-handler (nav-enemy-method-48 self) (set! (-> self enemy-info pickup-type) (the-as pickup-type (-> arg3 pickup))) (set! (-> self enemy-info pickup-amount) (the float (-> arg3 pickup-amount))) - (create-connection! - *cavecrystal-light-control* - self - (-> self entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - -1 - 4096.0 - ) + (create-connection! *cavecrystal-light-control* + self + (-> self entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + -1 + 4096.0) (cond - ((-> arg3 hatched?) - (go baby-spider-hatching) - ) - ((-> arg3 fast-start?) - (go baby-spider-resume) - ) - (else - (go-virtual nav-enemy-idle) - ) - ) - (none) - ) + ((-> arg3 hatched?) (go baby-spider-hatching)) + ((-> arg3 fast-start?) (go baby-spider-resume)) + (else (go-virtual nav-enemy-idle))) + (none)) (defmethod init-from-entity! ((this baby-spider) (arg0 entity-actor)) (set! (-> this die-if-not-visible?) #f) @@ -725,15 +538,12 @@ baby-spider-default-event-handler (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (create-connection! - *cavecrystal-light-control* - this - (-> this entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - -1 - 4096.0 - ) + (create-connection! *cavecrystal-light-control* + this + (-> this entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + -1 + 4096.0) (nav-enemy-method-48 this) (go (method-of-object this nav-enemy-idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/maincave/cavecrystal-light.gc b/goal_src/jak1/levels/maincave/cavecrystal-light.gc index 40a8b52278..3b72b01a60 100644 --- a/goal_src/jak1/levels/maincave/cavecrystal-light.gc +++ b/goal_src/jak1/levels/maincave/cavecrystal-light.gc @@ -1,46 +1,34 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "engine/anim/joint-h.gc") (require "engine/gfx/mood/time-of-day.gc") -;; name: cavecrystal-light.gc -;; name in dgo: cavecrystal-light -;; dgos: L1, MAI, MAINCAVE - ;; DECOMP BEGINS (define *cavecrystal-engine* (new 'loading-level 'engine 'cavecrystal 64)) (deftype cavecrystal-light (structure) - ((next cavecrystal-light) - (crystal-id int32) - (intensity float) - (fade-start float) - (fade-end float) - (crystal-handle handle) - (trans vector :inline) - ) - ) - + ((next cavecrystal-light) + (crystal-id int32) + (intensity float) + (fade-start float) + (fade-end float) + (crystal-handle handle) + (trans vector :inline))) (deftype cavecrystal-light-control (basic) - ((active-count int32) - (head cavecrystal-light) - (last-known-valid-time time-frame) - (crystal cavecrystal-light 7 :inline) - ) + ((active-count int32) + (head cavecrystal-light) + (last-known-valid-time time-frame) + (crystal cavecrystal-light 7 :inline)) (:methods - (cavecrystal-light-control-method-9 (_type_ int float process-drawable) none) - (cavecrystal-light-control-method-10 (_type_ vector) float) - (inc-intensities! (_type_) none) - (cavecrystal-light-control-method-12 (_type_) none) - (create-connection! (_type_ process-drawable res-lump (function object object object object object) int float) connection) - (execute-connections (_type_) int) - ) - ) - + (cavecrystal-light-control-method-9 (_type_ int float process-drawable) none) + (cavecrystal-light-control-method-10 (_type_ vector) float) + (inc-intensities! (_type_) none) + (cavecrystal-light-control-method-12 (_type_) none) + (create-connection! (_type_ process-drawable res-lump (function object object object object object) int float) connection) + (execute-connections (_type_) int))) (define *cavecrystal-light-control* (new 'static 'cavecrystal-light-control :head #f)) @@ -48,41 +36,25 @@ (let ((s5-0 (new 'stack-no-clear 'vector))) (let ((v1-1 (-> arg0 0 node-list))) (if (and (>= arg1 0) (nonzero? v1-1)) - (vector<-cspace! s5-0 (-> v1-1 data arg1)) - (set! (-> s5-0 quad) (-> arg0 0 root trans quad)) - ) - ) + (vector<-cspace! s5-0 (-> v1-1 data arg1)) + (set! (-> s5-0 quad) (-> arg0 0 root trans quad)))) (set! (-> s5-0 w) arg2) (let ((f0-1 (cavecrystal-light-control-method-10 *cavecrystal-light-control* s5-0)) (a2-2 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) - (a1-5 (new 'static 'vector :x 0.05 :y 0.05 :z 0.05 :w 1.0)) - ) - (vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f0-1) - ) - ) - (none) - ) + (a1-5 (new 'static 'vector :x 0.05 :y 0.05 :z 0.05 :w 1.0))) + (vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f0-1))) + (none)) -(defmethod create-connection! ((this cavecrystal-light-control) - (arg0 process-drawable) - (arg1 res-lump) - (arg2 (function object object object object object)) - (arg3 int) - (arg4 float) - ) +(defmethod create-connection! ((this cavecrystal-light-control) (arg0 process-drawable) (arg1 res-lump) (arg2 (function object object object object object)) (arg3 int) (arg4 float)) (if (nonzero? (res-lump-value arg1 'crystal-light uint128)) - (add-connection *cavecrystal-engine* arg0 arg2 (process->ppointer arg0) arg3 arg4) - ) - ) + (add-connection *cavecrystal-engine* arg0 arg2 (process->ppointer arg0) arg3 arg4))) (defmethod execute-connections ((this cavecrystal-light-control)) - (execute-connections *cavecrystal-engine* #f) - ) + (execute-connections *cavecrystal-engine* #f)) (defmethod cavecrystal-light-control-method-12 ((this cavecrystal-light-control)) (let ((v1-0 (-> this last-known-valid-time)) - (a1-1 (current-time)) - ) + (a1-1 (current-time))) (when (!= v1-0 a1-1) (set! (-> this last-known-valid-time) a1-1) (cond @@ -96,74 +68,43 @@ (set! (-> a1-5 intensity) 0.0) (set! (-> a1-5 fade-start) 20480.0) (set! (-> a1-5 fade-end) 286720.0) - (set! (-> a1-5 crystal-handle) (the-as handle #f)) - ) - ) - ) + (set! (-> a1-5 crystal-handle) (the-as handle #f))))) (else - (when (> (-> this active-count) 0) - (let ((v1-4 (the-as cavecrystal-light #f)) - (a1-7 (-> this head)) - ) - (while a1-7 - (cond - ((handle->process (-> a1-7 crystal-handle)) - (set! v1-4 a1-7) - (set! a1-7 (-> a1-7 next)) - ) - (else - (let ((a2-4 (-> a1-7 next))) - (+! (-> this active-count) -1) - (set! (-> a1-7 next) #f) - (set! (-> a1-7 intensity) 0.0) - (if v1-4 - (set! (-> this head) a2-4) - (set! (-> v1-4 next) a2-4) - ) - (set! a1-7 a2-4) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (when (> (-> this active-count) 0) + (let ((v1-4 (the-as cavecrystal-light #f)) + (a1-7 (-> this head))) + (while a1-7 + (cond + ((handle->process (-> a1-7 crystal-handle)) (set! v1-4 a1-7) (set! a1-7 (-> a1-7 next))) + (else + (let ((a2-4 (-> a1-7 next))) + (+! (-> this active-count) -1) + (set! (-> a1-7 next) #f) + (set! (-> a1-7 intensity) 0.0) + (if v1-4 (set! (-> this head) a2-4) (set! (-> v1-4 next) a2-4)) + (set! a1-7 a2-4))))))))))) + (none)) (defmethod inc-intensities! ((this cavecrystal-light-control)) (set! (-> this head) #f) (let ((a1-0 (the-as cavecrystal-light #f)) - (v0-0 0) - ) + (v0-0 0)) (dotimes (v1-0 7) (let ((a2-3 (-> this crystal v1-0))) (set! (-> a2-3 next) #f) (when (< 0.0 (-> a2-3 intensity)) (+! v0-0 1) - (if a1-0 - (set! (-> a1-0 next) a2-3) - (set! (-> this head) a2-3) - ) - (set! a1-0 a2-3) - ) - ) - ) - (set! (-> this active-count) v0-0) - ) - (none) - ) + (if a1-0 (set! (-> a1-0 next) a2-3) (set! (-> this head) a2-3)) + (set! a1-0 a2-3)))) + (set! (-> this active-count) v0-0)) + (none)) ;; WARN: Function (method 9 cavecrystal-light-control) has a return type of none, but the expression builder found a return statement. (defmethod cavecrystal-light-control-method-9 ((this cavecrystal-light-control) (arg0 int) (arg1 float) (arg2 process-drawable)) (cavecrystal-light-control-method-12 this) (when (or (< arg0 0) (>= arg0 7)) (format 0 "ERROR: Bogus cavecrystal id!~%") - (return #f) - ) + (return #f)) (let ((s3-0 (-> this crystal arg0))) (cond ((and (< 0.0 arg1) (>= 0.0 (-> s3-0 intensity))) @@ -171,42 +112,26 @@ (set! (-> s3-0 intensity) arg1) (set! (-> s3-0 crystal-handle) (process->handle arg2)) (set! (-> s3-0 trans quad) (-> arg2 root trans quad)) - (inc-intensities! this) - ) + (inc-intensities! this)) ((and (>= 0.0 arg1) (< 0.0 (-> s3-0 intensity))) (+! (-> this active-count) -1) (set! (-> s3-0 intensity) 0.0) - (inc-intensities! this) - ) - ((< 0.0 arg1) - (set! (-> s3-0 intensity) arg1) - ) - ) - (set-fade! *palette-fade-controls* (+ arg0 1) arg1 0.0 (-> s3-0 trans)) - ) - (none) - ) + (inc-intensities! this)) + ((< 0.0 arg1) (set! (-> s3-0 intensity) arg1))) + (set-fade! *palette-fade-controls* (+ arg0 1) arg1 0.0 (-> s3-0 trans))) + (none)) (defmethod cavecrystal-light-control-method-10 ((this cavecrystal-light-control) (arg0 vector)) (cavecrystal-light-control-method-12 this) (let ((s5-1 (-> this head)) - (f30-0 0.0) - ) + (f30-0 0.0)) (when s5-1 (until (not s5-1) (let* ((f26-0 (-> s5-1 fade-start)) (f28-0 (- (-> s5-1 fade-end) f26-0)) (f1-1 (fmin (fmax 0.0 (- (- (vector-vector-distance (-> s5-1 trans) arg0) (-> arg0 w)) f26-0)) f28-0)) - (f0-7 (* (- 1.0 (/ f1-1 f28-0)) (-> s5-1 intensity))) - ) - (if (< f30-0 f0-7) - (set! f30-0 f0-7) - ) - ) - (set! s5-1 (-> s5-1 next)) - ) - (set! f30-0 (fmin 2.0 f30-0)) - ) - f30-0 - ) - ) + (f0-7 (* (- 1.0 (/ f1-1 f28-0)) (-> s5-1 intensity)))) + (if (< f30-0 f0-7) (set! f30-0 f0-7))) + (set! s5-1 (-> s5-1 next))) + (set! f30-0 (fmin 2.0 f30-0))) + f30-0)) diff --git a/goal_src/jak1/levels/maincave/dark-crystal.gc b/goal_src/jak1/levels/maincave/dark-crystal.gc index 8ce4fe8911..423949601e 100644 --- a/goal_src/jak1/levels/maincave/dark-crystal.gc +++ b/goal_src/jak1/levels/maincave/dark-crystal.gc @@ -1,259 +1,247 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/anim/joint-exploder.gc") (require "engine/game/task/task-control.gc") -;; name: dark-crystal.gc -;; name in dgo: dark-crystal -;; dgos: L1, MAI, MAINCAVE - - ;; DECOMP BEGINS (deftype dark-crystal (process-drawable) - ((root collide-shape :override) - (crystal-num int32) - (underwater? symbol) - (explode-danger-radius float) - (lit-color-mult vector :inline) - (lit-color-emissive vector :inline) - (unlit-color-mult vector :inline) - (unlit-color-emissive vector :inline) - ) + ((root collide-shape :override) + (crystal-num int32) + (underwater? symbol) + (explode-danger-radius float) + (lit-color-mult vector :inline) + (lit-color-emissive vector :inline) + (unlit-color-mult vector :inline) + (unlit-color-emissive vector :inline)) (:methods - (dark-crystal-method-20 (_type_) none) - (dark-crystal-method-21 (_type_) symbol) - ) + (dark-crystal-method-20 (_type_) none) + (dark-crystal-method-21 (_type_) symbol)) (:states - dark-crystal-activate - dark-crystal-explode - dark-crystal-idle - dark-crystal-spawn-fuel-cell - ) - ) - - -(defskelgroup *dark-crystal-sg* dark-crystal dark-crystal-lod0-jg -1 - ((dark-crystal-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3.4 0 3.8) - ) - -(defskelgroup *dark-crystal-explode-sg* dark-crystal dark-crystal-explode-lod0-jg -1 - ((dark-crystal-explode-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -15 0 50) - ) + dark-crystal-activate + dark-crystal-explode + dark-crystal-idle + dark-crystal-spawn-fuel-cell)) + +(defskelgroup *dark-crystal-sg* + dark-crystal + dark-crystal-lod0-jg + -1 + ((dark-crystal-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3.4 0 3.8)) + +(defskelgroup *dark-crystal-explode-sg* + dark-crystal + dark-crystal-explode-lod0-jg + -1 + ((dark-crystal-explode-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -15 0 50)) (define *dark-crystal-flash-delays* (new 'static 'boxed-array :type int32 #xb4 #x96 #x78 90 60 30 15 7 3)) (define *dark-crystal-exploder-params* - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1) - ) - ) - ) + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1)))) (defpartgroup group-dark-crystal-gnd-explode :id 322 :duration (seconds 0.25) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 2153 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2154 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2155 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2156 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2157 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2153 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2154 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2155 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2156 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2157 :period (seconds 2) :length (seconds 0.067)))) (defpart 2153 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:x (meters -2) (meters 4)) - (:y (meters 1) (meters 2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:accel-y (meters -0.00033333333)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:x (meters -2) (meters 4)) + (:y (meters 1) (meters 2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:accel-y (meters -0.00033333333)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2155 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 24.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2158) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 24.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2158) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2158 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2157 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 64.0 192.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 64.0 192.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2154 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2156 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4)))) (defpartgroup group-dark-crystal-water-explode :id 323 @@ -261,305 +249,250 @@ :linger-duration (seconds 40) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 2159 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2160 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2161 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2162 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2163 :period (seconds 2) :length (seconds 0.25)) - (sp-item 2164 :period (seconds 2) :length (seconds 0.25)) - ) - ) + :parts + ((sp-item 2159 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2160 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2161 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2162 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2163 :period (seconds 2) :length (seconds 0.25)) + (sp-item 2164 :period (seconds 2) :length (seconds 0.25)))) (defpart 2160 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 24.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0 32.0) - (:b 128.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.4) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2158) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 24.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0 32.0) + (:b 128.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.4) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2158) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2162 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 128.0 128.0) - (:g 128.0 32.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-r -1.0666667) - (:fade-g -2.1333334) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 128.0 128.0) + (:g 128.0 32.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-r -1.0666667) + (:fade-g -2.1333334) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2159 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 32.0) - (:b 128.0 64.0) - (:a 128.0) - (:fade-g -2.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 32.0) + (:b 128.0 64.0) + (:a 128.0) + (:fade-g -2.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2161 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 96.0) - (:g 128.0 32.0) - (:b 128.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.2) - (:fade-g -0.2) - (:fade-b 0.0) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 96.0) + (:g 128.0 32.0) + (:b 128.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.2) + (:fade-g -0.2) + (:fade-b 0.0) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4)))) (defpart 2163 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 32.0) - (:x (meters -4) (meters 8)) - (:y (meters 1) (meters 6)) - (:z (meters -4) (meters 8)) - (:scale-x (meters 0.15) (meters 0.05)) - (:scale-y (meters 0.125) (meters 0.025)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:fade-a 0.8) - (:timer (seconds 40)) - (:flags (bit2 bit3 bit14)) - (:userdata 143360.0) - (:func 'check-water-level-above-and-die) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2165) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 32.0) + (:x (meters -4) (meters 8)) + (:y (meters 1) (meters 6)) + (:z (meters -4) (meters 8)) + (:scale-x (meters 0.15) (meters 0.05)) + (:scale-y (meters 0.125) (meters 0.025)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:fade-a 0.8) + (:timer (seconds 40)) + (:flags (bit2 bit3 bit14)) + (:userdata 143360.0) + (:func 'check-water-level-above-and-die) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2165) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2165 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpart 2164 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 4.0) - (:x (meters -4) (meters 8)) - (:y (meters 1) (meters 6)) - (:z (meters -4) (meters 8)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:fade-a 0.8) - (:timer (seconds 40)) - (:flags (bit2 bit3 bit14)) - (:userdata 143360.0) - (:func 'check-water-level-above-and-die) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2165) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 4.0) + (:x (meters -4) (meters 8)) + (:y (meters 1) (meters 6)) + (:z (meters -4) (meters 8)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:fade-a 0.8) + (:timer (seconds 40)) + (:flags (bit2 bit3 bit14)) + (:userdata 143360.0) + (:func 'check-water-level-above-and-die) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2165) + (:rotate-y (degrees 0) (degrees 360)))) (defstate dark-crystal-idle (dark-crystal) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (if (= (-> proc type) target) - (level-hint-spawn - (text-id cave-dark-crystals-flee) - "sksp0334" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (close-specific-task! (game-task cave-dark-crystals) (task-status need-hint)) - (go dark-crystal-activate) - ) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (if (= (-> proc type) target) + (level-hint-spawn (text-id cave-dark-crystals-flee) "sksp0334" (the-as entity #f) *entity-pool* (game-task none))) + (close-specific-task! (game-task cave-dark-crystals) (task-status need-hint)) + (go dark-crystal-activate)))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate dark-crystal-activate (dark-crystal) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (dotimes (gp-0 (-> *dark-crystal-flash-delays* length)) - (sound-play "warning") - (set! (-> self draw color-mult quad) (-> self lit-color-mult quad)) - (set! (-> self draw color-emissive quad) (-> self lit-color-emissive quad)) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (dotimes (gp-0 (-> *dark-crystal-flash-delays* length)) + (sound-play "warning") + (set! (-> self draw color-mult quad) (-> self lit-color-mult quad)) + (set! (-> self draw color-emissive quad) (-> self lit-color-emissive quad)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.1)) + (suspend)) + (set! (-> self draw color-mult quad) (-> self unlit-color-mult quad)) + (set! (-> self draw color-emissive quad) (-> self unlit-color-emissive quad)) + (set-time! (-> self state-time)) + (let ((s5-1 (-> *dark-crystal-flash-delays* gp-0))) (until (time-elapsed? (-> self state-time) s5-1) (suspend)))) + (go dark-crystal-explode))) + +(defstate dark-crystal-explode (dark-crystal) + :code + (behavior () (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.1)) + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root)) + (let ((gp-0 (new 'stack 'joint-exploder-tuning 0))) + (when (-> self underwater?) + (set! (-> gp-0 duration) (seconds 4)) + (set! (-> gp-0 gravity) -20480.0) + (set! (-> gp-0 rot-speed) 4.2) + (set-vector! (-> gp-0 fountain-rand-transv-lo) -40960.0 20480.0 -40960.0 1.0) + (set-vector! (-> gp-0 fountain-rand-transv-hi) 40960.0 49152.0 40960.0 1.0)) + (process-spawn joint-exploder *dark-crystal-explode-sg* 5 gp-0 *dark-crystal-exploder-params* :to self)) + (activate! *camera-smush-control* 819.2 37 210 1.0 0.995) + (let ((gp-1 (dark-crystal-method-21 self))) (suspend) - ) - (set! (-> self draw color-mult quad) (-> self unlit-color-mult quad)) - (set! (-> self draw color-emissive quad) (-> self unlit-color-emissive quad)) - (set-time! (-> self state-time)) - (let ((s5-1 (-> *dark-crystal-flash-delays* gp-0))) - (until (time-elapsed? (-> self state-time) s5-1) - (suspend) - ) - ) - ) - (go dark-crystal-explode) - ) - ) + (ja-channel-set! 0) + (ja-post) + (logior! (-> self draw status) (draw-status hidden)) + (dark-crystal-method-20 self) + (if (-> self underwater?) (sound-play "water-explosion") (sound-play "crystal-explode")) + (process-spawn part-tracker + :init + part-tracker-init + (if (-> self underwater?) (-> *part-group-id-table* 323) (-> *part-group-id-table* 322)) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (let ((s5-4 (current-time))) (until (time-elapsed? s5-4 (seconds 0.25)) (suspend))) + (if gp-1 (go dark-crystal-spawn-fuel-cell))) + (cleanup-for-death self) + (until (not (-> self child)) + (suspend)))) -(defstate dark-crystal-explode (dark-crystal) - :code (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root)) - (let ((gp-0 (new 'stack 'joint-exploder-tuning 0))) - (when (-> self underwater?) - (set! (-> gp-0 duration) (seconds 4)) - (set! (-> gp-0 gravity) -20480.0) - (set! (-> gp-0 rot-speed) 4.2) - (set-vector! (-> gp-0 fountain-rand-transv-lo) -40960.0 20480.0 -40960.0 1.0) - (set-vector! (-> gp-0 fountain-rand-transv-hi) 40960.0 49152.0 40960.0 1.0) - ) - (process-spawn joint-exploder *dark-crystal-explode-sg* 5 gp-0 *dark-crystal-exploder-params* :to self) - ) - (activate! *camera-smush-control* 819.2 37 210 1.0 0.995) - (let ((gp-1 (dark-crystal-method-21 self))) - (suspend) +(defstate dark-crystal-spawn-fuel-cell (dark-crystal) + :event process-drawable-fuel-cell-handler + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root)) + (level-hint-spawn (text-id cave-dark-crystals-resolution) "sksp0327" (the-as entity #f) *entity-pool* (game-task none)) (ja-channel-set! 0) (ja-post) (logior! (-> self draw status) (draw-status hidden)) - (dark-crystal-method-20 self) - (if (-> self underwater?) - (sound-play "water-explosion") - (sound-play "crystal-explode") - ) - (process-spawn - part-tracker - :init part-tracker-init - (if (-> self underwater?) - (-> *part-group-id-table* 323) - (-> *part-group-id-table* 322) - ) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (let ((s5-4 (current-time))) - (until (time-elapsed? s5-4 (seconds 0.25)) - (suspend) - ) - ) - (if gp-1 - (go dark-crystal-spawn-fuel-cell) - ) - ) - (cleanup-for-death self) - (until (not (-> self child)) - (suspend) - ) - ) - ) - -(defstate dark-crystal-spawn-fuel-cell (dark-crystal) - :event process-drawable-fuel-cell-handler - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root)) - (level-hint-spawn - (text-id cave-dark-crystals-resolution) - "sksp0327" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (ja-channel-set! 0) - (ja-post) - (logior! (-> self draw status) (draw-status hidden)) - (if (not (task-complete? *game-info* (-> self entity extra perm task))) - (birth-pickup-at-point - (-> self root trans) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #t - self - (the-as fact-info #f) - ) - ) - (suspend) - (until (not (-> self child)) + (if (not (task-complete? *game-info* (-> self entity extra perm task))) + (birth-pickup-at-point (-> self root trans) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #t + self + (the-as fact-info #f))) (suspend) - ) - (aybabtu 2) - (cleanup-for-death self) - ) - ) + (until (not (-> self child)) + (suspend)) + (aybabtu 2) + (cleanup-for-death self))) (defmethod dark-crystal-method-20 ((this dark-crystal)) (when *target* (let ((s5-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> this root trans quad)) (+! (-> s5-0 y) 6144.0) (set! (-> s3-0 quad) (-> (target-pos 0) quad)) @@ -567,43 +500,28 @@ (when (>= (-> this explode-danger-radius) (vector-vector-distance s5-0 s3-0)) (vector-! s4-0 s3-0 s5-0) (let ((t2-0 (new 'stack-no-clear 'collide-tri-result))) - (if (< (fill-and-probe-using-line-sphere - *collide-cache* - s5-0 - s4-0 - 819.2 - (collide-kind background) - this - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (send-event *target* 'attack #f (new 'static 'attack-info)) - ) - ) - ) - ) - ) - (none) - ) + (if (< (fill-and-probe-using-line-sphere *collide-cache* + s5-0 + s4-0 + 819.2 + (collide-kind background) + this + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (send-event *target* 'attack #f (new 'static 'attack-info))))))) + (none)) (defmethod dark-crystal-method-21 ((this dark-crystal)) (let ((s5-0 #f)) (when (nonzero? (-> this crystal-num)) (let* ((s4-0 (get-task-control (game-task cave-dark-crystals))) - (s3-0 (logior (get-reminder s4-0 3) (ash 1 (-> this crystal-num)))) - ) + (s3-0 (logior (get-reminder s4-0 3) (ash 1 (-> this crystal-num))))) (save-reminder s4-0 s3-0 3) (when (= s3-0 62) (set! s5-0 #t) - (process-entity-status! this (entity-perm-status complete) #t) - ) - ) - ) - s5-0 - ) - ) + (process-entity-status! this (entity-perm-status complete) #t)))) + s5-0)) (defmethod init-from-entity! ((this dark-crystal) (arg0 entity-actor)) (set-vector! (-> this unlit-color-mult) 0.5 0.5 0.5 1.0) @@ -619,12 +537,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 6963.2 0.0 15564.8) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *dark-crystal-sg* '()) (logior! (-> this mask) (process-mask attackable)) @@ -636,18 +552,11 @@ (set-vector! (-> this root scale) 2.0 2.0 2.0 1.0) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go dark-crystal-spawn-fuel-cell) - (go dark-crystal-idle) - ) - (none) - ) + (go dark-crystal-spawn-fuel-cell) + (go dark-crystal-idle)) + (none)) diff --git a/goal_src/jak1/levels/maincave/driller-lurker.gc b/goal_src/jak1/levels/maincave/driller-lurker.gc index 18899b387d..ee7fc9b94b 100644 --- a/goal_src/jak1/levels/maincave/driller-lurker.gc +++ b/goal_src/jak1/levels/maincave/driller-lurker.gc @@ -1,208 +1,194 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "levels/maincave/cavecrystal-light.gc") (require "engine/common-obs/nav-enemy.gc") -;; name: driller-lurker.gc -;; name in dgo: driller-lurker -;; dgos: L1, MAI, MAINCAVE - - ;; DECOMP BEGINS (deftype driller-lurker (process-drawable) - ((root-overeride collide-shape-moving :overlay-at root) - (hit-player? symbol) - (played-drill-sound? symbol) - (mode uint64) - (path-u float) - (path-units-per-meter float) - (path-speed float) - (targ-path-speed float) - (path-dir float) - (path-ry float) - (facing-ry float) - (drill-rz float) - (drill-speed float) - (up-blend float) - (player-path-u float) - (ambient-drilling-u float) - (timeout int32) - (neck joint-mod) - (drill joint-mod) - (sound2 ambient-sound) - (last-update-time time-frame) - (last-player-path-u-time time-frame) - (started-chasing-time time-frame) - (hit-player-time time-frame) - (player-attack-id uint64) - ) + ((root-overeride collide-shape-moving :overlay-at root) + (hit-player? symbol) + (played-drill-sound? symbol) + (mode uint64) + (path-u float) + (path-units-per-meter float) + (path-speed float) + (targ-path-speed float) + (path-dir float) + (path-ry float) + (facing-ry float) + (drill-rz float) + (drill-speed float) + (up-blend float) + (player-path-u float) + (ambient-drilling-u float) + (timeout int32) + (neck joint-mod) + (drill joint-mod) + (sound2 ambient-sound) + (last-update-time time-frame) + (last-player-path-u-time time-frame) + (started-chasing-time time-frame) + (hit-player-time time-frame) + (player-attack-id uint64)) (:methods - (driller-lurker-method-20 (_type_ symbol target) symbol) - (driller-lurker-method-21 (_type_) none) - (driller-lurker-method-22 (_type_) none) - (driller-lurker-method-23 (_type_) float) - (driller-lurker-method-24 (_type_) symbol) - (driller-lurker-method-25 (_type_) symbol) - (driller-lurker-method-26 (_type_) symbol) - (driller-lurker-method-27 (_type_) object) - ) + (driller-lurker-method-20 (_type_ symbol target) symbol) + (driller-lurker-method-21 (_type_) none) + (driller-lurker-method-22 (_type_) none) + (driller-lurker-method-23 (_type_) float) + (driller-lurker-method-24 (_type_) symbol) + (driller-lurker-method-25 (_type_) symbol) + (driller-lurker-method-26 (_type_) symbol) + (driller-lurker-method-27 (_type_) object)) (:states - driller-lurker-attack - (driller-lurker-chase symbol) - driller-lurker-debug-play-anims - driller-lurker-die - driller-lurker-idle-drilling - driller-lurker-jammed-standing - driller-lurker-patrol - driller-lurker-patrol-pause - ) - ) - - -(defskelgroup *driller-lurker-sg* driller-lurker driller-lurker-lod0-jg -1 - ((driller-lurker-lod0-mg (meters 20)) - (driller-lurker-lod1-mg (meters 40)) - (driller-lurker-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1.5 0 7.75) - :longest-edge (meters 2.3) - :shadow driller-lurker-shadow-mg - ) + driller-lurker-attack + (driller-lurker-chase symbol) + driller-lurker-debug-play-anims + driller-lurker-die + driller-lurker-idle-drilling + driller-lurker-jammed-standing + driller-lurker-patrol + driller-lurker-patrol-pause)) + +(defskelgroup *driller-lurker-sg* + driller-lurker + driller-lurker-lod0-jg + -1 + ((driller-lurker-lod0-mg (meters 20)) (driller-lurker-lod1-mg (meters 40)) (driller-lurker-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 7.75) + :longest-edge (meters 2.3) + :shadow driller-lurker-shadow-mg) (define *driller-lurker-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags shdf00 shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w 4096.0) - :top-plane (new 'static 'plane :y 1.0 :w -2048.0) - :fade-dist 245760.0 - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags shdf00 shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 4096.0) + :top-plane + (new 'static 'plane :y 1.0 :w -2048.0) + :fade-dist 245760.0))) (defpartgroup group-driller-lurker-drilling-debris :id 331 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 728 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 2075 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 2076 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 2077 :fade-after (meters 40) :falloff-to (meters 40)) - ) - ) + :parts + ((sp-item 728 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 2075 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 2076 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 2077 :fade-after (meters 40) :falloff-to (meters 40)))) (defpart 728 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 64.0 32.0) - (:a 32.0 64.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.45714286) - (:accel-y (meters 0.00066666666)) - (:friction 0.9) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 64.0 32.0) + (:a 32.0 64.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.45714286) + (:accel-y (meters 0.00066666666)) + (:friction 0.9) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2075 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 64.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.053333335) (meters 0.10666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.30476192) - (:accel-y (meters 0.00066666666)) - (:friction 0.9) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 64.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.053333335) (meters 0.10666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.30476192) + (:accel-y (meters 0.00066666666)) + (:friction 0.9) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2076 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 4.0) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.1) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 128.0 64.0) - (:b 192.0 64.0) - (:a 128.0) - (:vel-y (meters 0.053333335) (meters 0.10666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 1.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.25)) - (:next-launcher 2078) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 4.0) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 128.0 64.0) + (:b 192.0 64.0) + (:a 128.0) + (:vel-y (meters 0.053333335) (meters 0.10666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 1.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.25)) + (:next-launcher 2078) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2078 - :init-specs ((:fade-a -1.7066667)) - ) + :init-specs ((:fade-a -1.7066667))) (defpart 2077 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 8.0 8.0) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.05) (meters 0.15)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 128.0 64.0) - (:b 192.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.10666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.017)) - (:next-launcher 2078) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 8.0 8.0) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.05) (meters 0.15)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 128.0 64.0) + (:b 192.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.10666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.017)) + (:next-launcher 2078) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defbehavior driller-lurker-default-event-handler driller-lurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (sv-96 collide-shape-prim)) @@ -217,148 +203,68 @@ ((5) (let ((v1-5 *target*)) (when (!= (-> arg3 param 1) 'flop) - (let ((f0-4 (atan - (- (-> v1-5 control trans x) (-> self root-overeride trans x)) - (- (-> v1-5 control trans z) (-> self root-overeride trans z)) - ) - ) - ) - (quaternion-axis-angle! (-> self root-overeride quat) 0.0 1.0 0.0 f0-4) - ) - ) - ) - (go driller-lurker-die) - ) + (let ((f0-4 (atan (- (-> v1-5 control trans x) (-> self root-overeride trans x)) + (- (-> v1-5 control trans z) (-> self root-overeride trans z))))) + (quaternion-axis-angle! (-> self root-overeride quat) 0.0 1.0 0.0 f0-4)))) + (go driller-lurker-die)) (else - (let ((s4-0 *target*) - (s2-0 #f) - (s3-0 #f) - ) - (let* ((s1-0 (the-as touching-shapes-entry (-> arg3 param 0))) - (s0-0 (-> s1-0 head)) - ) - (while s0-0 - (set! sv-96 (get-touched-prim s0-0 (-> self root-overeride) s1-0)) - (if (and (logtest? (-> (get-touched-prim s0-0 (-> s4-0 control) s1-0) prim-core action) (collide-action solid)) - (logtest? (-> sv-96 prim-id) 1) - ) - (set! s2-0 #t) - ) - (if (logtest? (-> sv-96 prim-id) 2) - (set! s3-0 #t) - ) - (set! s0-0 (-> s0-0 next)) - ) - ) - (cond - ((or s2-0 (not s3-0)) - (when (send-event - arg0 - 'attack - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3)))) - ) - (set! (-> self hit-player?) #t) - (set-time! (-> self hit-player-time)) - (set-collide-offense (-> self root-overeride) 2 (collide-offense no-offense)) - (let ((v1-39 (-> self mode))) - (if (or (zero? v1-39) (= v1-39 1) (= v1-39 2)) - (go driller-lurker-chase #t) - ) - ) - ) - ) - (s3-0 - (when (!= (-> arg3 param 1) 'flop) - (let ((f0-11 (atan - (- (-> s4-0 control trans x) (-> self root-overeride trans x)) - (- (-> s4-0 control trans z) (-> self root-overeride trans z)) - ) - ) - ) - (quaternion-axis-angle! (-> self root-overeride quat) 0.0 1.0 0.0 f0-11) - ) - ) - (go driller-lurker-die) - ) - ) - ) - ) - ) - ) - ) - ) - (else - (go driller-lurker-die) - ) - ) - ) + (let ((s4-0 *target*) + (s2-0 #f) + (s3-0 #f)) + (let* ((s1-0 (the-as touching-shapes-entry (-> arg3 param 0))) + (s0-0 (-> s1-0 head))) + (while s0-0 + (set! sv-96 (get-touched-prim s0-0 (-> self root-overeride) s1-0)) + (if (and (logtest? (-> (get-touched-prim s0-0 (-> s4-0 control) s1-0) prim-core action) (collide-action solid)) + (logtest? (-> sv-96 prim-id) 1)) + (set! s2-0 #t)) + (if (logtest? (-> sv-96 prim-id) 2) (set! s3-0 #t)) + (set! s0-0 (-> s0-0 next)))) + (cond + ((or s2-0 (not s3-0)) + (when (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3))))) + (set! (-> self hit-player?) #t) + (set-time! (-> self hit-player-time)) + (set-collide-offense (-> self root-overeride) 2 (collide-offense no-offense)) + (let ((v1-39 (-> self mode))) (if (or (zero? v1-39) (= v1-39 1) (= v1-39 2)) (go driller-lurker-chase #t))))) + (s3-0 + (when (!= (-> arg3 param 1) 'flop) + (let ((f0-11 (atan (- (-> s4-0 control trans x) (-> self root-overeride trans x)) + (- (-> s4-0 control trans z) (-> self root-overeride trans z))))) + (quaternion-axis-angle! (-> self root-overeride quat) 0.0 1.0 0.0 f0-11))) + (go driller-lurker-die))))))))) + (else (go driller-lurker-die)))) ((= arg2 'touch) (when (= (-> arg0 type) target) - (when (send-event - arg0 - 'attack - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3)))) - ) + (when (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3))))) (set! (-> self hit-player?) #t) (set-time! (-> self hit-player-time)) (set-collide-offense (-> self root-overeride) 2 (collide-offense no-offense)) - (let ((v1-62 (-> self mode))) - (if (or (zero? v1-62) (= v1-62 1) (= v1-62 2)) - (go driller-lurker-chase #t) - ) - ) - ) - ) - ) - ) - ) + (let ((v1-62 (-> self mode))) (if (or (zero? v1-62) (= v1-62 1) (= v1-62 2)) (go driller-lurker-chase #t)))))))) (defmethod driller-lurker-method-20 ((this driller-lurker) (arg0 symbol) (arg1 target)) (let ((v1-1 (current-time))) (when (!= v1-1 (-> this last-update-time)) (set! (-> this last-update-time) v1-1) (let* ((f0-0 (-> this path-speed)) - (f1-1 (seek f0-0 (-> this targ-path-speed) (* 12288.0 (seconds-per-frame)))) - ) + (f1-1 (seek f0-0 (-> this targ-path-speed) (* 12288.0 (seconds-per-frame))))) (set! (-> this path-speed) f1-1) (when (< 0.0 f1-1) (let* ((f0-5 (-> this path-u)) (f30-0 (* (-> this path-dir) f1-1 (seconds-per-frame))) (s4-0 #t) - (f0-6 (+ f0-5 (* 0.00024414062 (-> this path-units-per-meter) f30-0))) - ) + (f0-6 (+ f0-5 (* 0.00024414062 (-> this path-units-per-meter) f30-0)))) (cond ((< f0-6 0.0) (set! s4-0 #f) (cond - (arg0 - (set! f0-6 (- f0-6)) - (set! (-> this path-dir) (- (-> this path-dir))) - (set! (-> this path-speed) 0.0) - ) - (else - (set! f0-6 0.0) - (set! (-> this path-speed) 0.0) - ) - ) - ) + (arg0 (set! f0-6 (- f0-6)) (set! (-> this path-dir) (- (-> this path-dir))) (set! (-> this path-speed) 0.0)) + (else (set! f0-6 0.0) (set! (-> this path-speed) 0.0)))) ((< 1.0 f0-6) (set! s4-0 #f) (cond - (arg0 - (set! f0-6 (- 2.0 f0-6)) - (set! (-> this path-dir) (- (-> this path-dir))) - (set! (-> this path-speed) 0.0) - ) - (else - (set! f0-6 1.0) - (set! (-> this path-speed) 0.0) - ) - ) - ) - ) + (arg0 (set! f0-6 (- 2.0 f0-6)) (set! (-> this path-dir) (- (-> this path-dir))) (set! (-> this path-speed) 0.0)) + (else (set! f0-6 1.0) (set! (-> this path-speed) 0.0))))) (set! (-> this path-u) f0-6) (let ((s3-1 (new 'stack-no-clear 'vector))) (set! (-> s3-1 quad) (-> this root-overeride trans quad)) @@ -377,55 +283,31 @@ accurate for tiny numbers |# (when (> f0-7 0.00001) - (set! (-> this path-units-per-meter) (* (/ (fabs f30-0) f0-7) (-> this path-units-per-meter))))) - ) - ) - ) - ) - ) + (set! (-> this path-units-per-meter) (* (/ (fabs f30-0) f0-7) (-> this path-units-per-meter)))))))))) (let ((s4-1 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> this path) s4-1 (-> this path-u)) (let ((f0-13 (atan (-> s4-1 x) (-> s4-1 z)))) - (if (< (-> this path-dir) 0.0) - (set! f0-13 (+ 32768.0 f0-13)) - ) - (set! (-> this path-ry) f0-13) - ) - ) + (if (< (-> this path-dir) 0.0) (set! f0-13 (+ 32768.0 f0-13))) + (set! (-> this path-ry) f0-13))) (case (-> this mode) ((4) (when *target* (let ((a0-13 (target-pos 0)) - (v1-26 (new 'stack-no-clear 'vector)) - ) + (v1-26 (new 'stack-no-clear 'vector))) (vector-! v1-26 a0-13 (-> this root-overeride trans)) (let ((f0-16 (atan (-> v1-26 x) (-> v1-26 z)))) - (set! (-> this facing-ry) (deg-seek-smooth (-> this facing-ry) f0-16 (* 32768.0 (seconds-per-frame)) 0.25)) - ) - ) + (set! (-> this facing-ry) (deg-seek-smooth (-> this facing-ry) f0-16 (* 32768.0 (seconds-per-frame)) 0.25)))) (when (< 16384.0 (fabs (deg- (-> this facing-ry) (-> this path-ry)))) (set! (-> this path-dir) (- (-> this path-dir))) - (+! (-> this path-ry) 32768.0) - ) - ) - ) + (+! (-> this path-ry) 32768.0)))) (else - (if (!= (-> this mode) 1) - (set! (-> this facing-ry) - (deg-seek-smooth (-> this facing-ry) (-> this path-ry) (* 32768.0 (seconds-per-frame)) 0.25) - ) - ) - ) - ) + (if (!= (-> this mode) 1) + (set! (-> this facing-ry) (deg-seek-smooth (-> this facing-ry) (-> this path-ry) (* 32768.0 (seconds-per-frame)) 0.25))))) (quaternion-axis-angle! (-> this root-overeride quat) 0.0 1.0 0.0 (-> this facing-ry)) (let ((f30-2 0.0)) (when *target* (let ((f0-34 (vector-vector-xz-distance (target-pos 0) (-> this root-overeride trans)))) - (if (< f0-34 36864.0) - (set! f30-2 (- 1.0 (* 0.00006510417 (fmax 0.0 (+ -21504.0 f0-34))))) - ) - ) - ) + (if (< f0-34 36864.0) (set! f30-2 (- 1.0 (* 0.00006510417 (fmax 0.0 (+ -21504.0 f0-34)))))))) (let ((f28-1 (* 0.0001373291 (fmin 7281.778 (fabs (deg- (-> this path-ry) (-> this facing-ry))))))) (cond ((< 0.0 f30-2) @@ -434,96 +316,49 @@ (let* ((f1-27 (vector-x-angle s3-2)) (f1-29 (fmax 728.1778 (fmin 10194.489 f1-27))) (f0-46 (* 0.000105637766 (+ -728.1778 f1-29))) - (f0-47 (lerp f28-1 f0-46 f30-2)) - ) - (set! (-> this up-blend) (seek-with-smooth (-> this up-blend) f0-47 (* 8192.0 (seconds-per-frame)) 0.25 0.01)) - ) - ) - ) - (else - (set! (-> this up-blend) - (seek-with-smooth (-> this up-blend) f28-1 (* 8192.0 (seconds-per-frame)) 0.125 0.01) - ) - ) - ) - ) - ) + (f0-47 (lerp f28-1 f0-46 f30-2))) + (set! (-> this up-blend) (seek-with-smooth (-> this up-blend) f0-47 (* 8192.0 (seconds-per-frame)) 0.25 0.01))))) + (else (set! (-> this up-blend) (seek-with-smooth (-> this up-blend) f28-1 (* 8192.0 (seconds-per-frame)) 0.125 0.01)))))) (when (and arg1 *target*) (set-target! (-> this neck) (target-pos 5)) (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> this root-overeride root-prim prim-core)) - 'attacking - this - ) - ) - ) + (look-at-enemy! (-> *target* neck) (the-as vector (-> this root-overeride root-prim prim-core)) 'attacking this))) (let ((f30-3 (-> this drill-speed))) (let ((v1-56 (-> this mode))) (cond - ((or (= v1-56 2) (zero? v1-56)) - (set! f30-3 (seek f30-3 72817.78 (* 372827.03 (seconds-per-frame)))) - ) - ((= v1-56 1) - (set! f30-3 (seek f30-3 276707.56 (* 372827.03 (seconds-per-frame)))) - ) + ((or (= v1-56 2) (zero? v1-56)) (set! f30-3 (seek f30-3 72817.78 (* 372827.03 (seconds-per-frame))))) + ((= v1-56 1) (set! f30-3 (seek f30-3 276707.56 (* 372827.03 (seconds-per-frame))))) ((or (= v1-56 3) (= v1-56 4)) - (set! f30-3 (if (time-elapsed? (-> this started-chasing-time) (seconds 2.25)) - (seek f30-3 0.0 (* 600746.7 (seconds-per-frame))) - (seek f30-3 276707.56 (* 372827.03 (seconds-per-frame))) - ) - ) - ) + (set! f30-3 + (if (time-elapsed? (-> this started-chasing-time) (seconds 2.25)) + (seek f30-3 0.0 (* 600746.7 (seconds-per-frame))) + (seek f30-3 276707.56 (* 372827.03 (seconds-per-frame)))))) ((= v1-56 5) - (set! f30-3 (if (time-elapsed? (-> this started-chasing-time) (seconds 5.75)) - (seek f30-3 276707.56 (* 372827.03 (seconds-per-frame))) - (seek f30-3 0.0 (* 600746.7 (seconds-per-frame))) - ) - ) - ) - ) - ) + (set! f30-3 + (if (time-elapsed? (-> this started-chasing-time) (seconds 5.75)) + (seek f30-3 276707.56 (* 372827.03 (seconds-per-frame))) + (seek f30-3 0.0 (* 600746.7 (seconds-per-frame)))))))) (set! (-> this drill-speed) f30-3) (cond ((>= f30-3 36408.89) (update-trans! (-> this sound) (-> this root-overeride trans)) (update! (-> this sound)) - (set! (-> this played-drill-sound?) #t) - ) - (else - (when (-> this played-drill-sound?) - (set! (-> this played-drill-sound?) #f) - (stop! (-> this sound)) - ) - ) - ) + (set! (-> this played-drill-sound?) #t)) + (else (when (-> this played-drill-sound?) (set! (-> this played-drill-sound?) #f) (stop! (-> this sound))))) (let ((f0-69 (+ (-> this drill-rz) (* f30-3 (seconds-per-frame))))) - (set! (-> this drill-rz) (- f0-69 (* (the float (the int (/ f0-69 65536.0))) 65536.0))) - ) - ) + (set! (-> this drill-rz) (- f0-69 (* (the float (the int (/ f0-69 65536.0))) 65536.0))))) (let ((s5-2 (new 'stack-no-clear 'quaternion))) (quaternion-axis-angle! s5-2 0.0 0.0 1.0 (-> this drill-rz)) - (set-trs! (-> this drill) (the-as vector #f) s5-2 (the-as vector #f)) - ) - 0 - ) - ) + (set-trs! (-> this drill) (the-as vector #f) s5-2 (the-as vector #f))) + 0)) (when (and (-> this hit-player?) (or (not *target*) (and (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (time-elapsed? (-> this hit-player-time) (seconds 0.05)) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (time-elapsed? (-> this hit-player-time) (seconds 0.05))))) (set-collide-offense (-> this root-overeride) 2 (collide-offense touch)) (set! (-> this hit-player?) #f) - #f - ) - ) + #f)) (defmethod driller-lurker-method-23 ((this driller-lurker)) (let ((v1-1 (current-time))) @@ -531,442 +366,282 @@ (set! (-> this last-player-path-u-time) v1-1) (cond (*target* - (let* ((s5-0 (-> this path)) - (s4-0 (method-of-object s5-0 path-control-method-20)) - ) - (target-pos 0) - (set! (-> this player-path-u) (s4-0 s5-0)) - ) - ) - (else - (set! (-> this player-path-u) 0.0) - ) - ) - ) - ) - (-> this player-path-u) - ) + (let* ((s5-0 (-> this path)) + (s4-0 (method-of-object s5-0 path-control-method-20))) + (target-pos 0) + (set! (-> this player-path-u) (s4-0 s5-0)))) + (else (set! (-> this player-path-u) 0.0))))) + (-> this player-path-u)) (defmethod driller-lurker-method-25 ((this driller-lurker)) (when *target* (let* ((s5-0 (target-pos 0)) - (f0-1 (- (-> s5-0 y) (-> this root-overeride trans y))) - ) + (f0-1 (- (-> s5-0 y) (-> this root-overeride trans y)))) (when (and (>= 32768.0 f0-1) (>= f0-1 -2048.0)) (case (-> this mode) - ((1) - (if (>= 73728.0 (vector-vector-xz-distance (-> this root-overeride trans) s5-0)) - (return #t) - ) - ) + ((1) (if (>= 73728.0 (vector-vector-xz-distance (-> this root-overeride trans) s5-0)) (return #t))) (else - (when (>= 102400.0 (vector-vector-xz-distance (-> this root-overeride trans) s5-0)) - (let ((f0-8 - (atan (- (-> s5-0 x) (-> this root-overeride trans x)) (- (-> s5-0 z) (-> this root-overeride trans z))) - ) - ) - (if (>= 20024.889 (fabs (deg- f0-8 (-> this facing-ry)))) - (return #t) - ) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (when (>= 102400.0 (vector-vector-xz-distance (-> this root-overeride trans) s5-0)) + (let ((f0-8 (atan (- (-> s5-0 x) (-> this root-overeride trans x)) (- (-> s5-0 z) (-> this root-overeride trans z))))) + (if (>= 20024.889 (fabs (deg- f0-8 (-> this facing-ry)))) (return #t))))))))) + #f) (defmethod driller-lurker-method-26 ((this driller-lurker)) (when *target* (let* ((a1-0 (target-pos 0)) - (f0-1 (- (-> a1-0 y) (-> this root-overeride trans y))) - ) - (if (and (< f0-1 40960.0) - (< -10240.0 f0-1) - (< (vector-vector-xz-distance (-> this root-overeride trans) a1-0) 143360.0) - ) - (return #f) - ) - ) - ) - #t - ) + (f0-1 (- (-> a1-0 y) (-> this root-overeride trans y)))) + (if (and (< f0-1 40960.0) (< -10240.0 f0-1) (< (vector-vector-xz-distance (-> this root-overeride trans) a1-0) 143360.0)) + (return #f)))) + #t) (defmethod driller-lurker-method-24 ((this driller-lurker)) (when *target* (let* ((a1-0 (target-pos 0)) - (f0-1 (- (-> a1-0 y) (-> this root-overeride trans y))) - ) + (f0-1 (- (-> a1-0 y) (-> this root-overeride trans y)))) (when (and (< f0-1 40960.0) (< -10240.0 f0-1)) (let ((f0-2 (vector-vector-xz-distance (-> this root-overeride trans) a1-0))) (cond - ((>= 17408.0 f0-2) - (return #t) - ) + ((>= 17408.0 f0-2) (return #t)) ((< f0-2 143360.0) (let ((f0-3 (driller-lurker-method-23 this)) - (f1-5 (-> this path-u)) - ) - (if (>= (* 0.1 (-> this path-units-per-meter)) (fabs (- f0-3 f1-5))) - (return #t) - ) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (f1-5 (-> this path-u))) + (if (>= (* 0.1 (-> this path-units-per-meter)) (fabs (- f0-3 f1-5))) (return #t))))))))) + #f) (defmethod driller-lurker-method-27 ((this driller-lurker)) (let ((a2-0 (-> this node-list data 25 bone transform)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set-vector! s5-0 0.0 0.0 8192.0 1.0) (vector-matrix*! s5-0 s5-0 a2-0) (vector-float*! s5-0 s5-0 (/ 1.0 (-> s5-0 w))) - (spawn (-> this part) s5-0) - ) - ) + (spawn (-> this part) s5-0))) (defstate driller-lurker-debug-play-anims (driller-lurker) - :code (behavior () - 0 - ) - :post transform-post - ) + :code + (behavior () + 0) + :post transform-post) (defstate driller-lurker-idle-drilling (driller-lurker) :event driller-lurker-default-event-handler - :enter (behavior () - (set! (-> self mode) (the-as uint 1)) - (set! (-> self targ-path-speed) 0.0) - (set! (-> self path-speed) 0.0) - (shut-down! (-> self neck)) - ) - :exit (behavior () - (stop! (-> self sound2)) - ) - :trans (behavior () - (if (driller-lurker-method-25 self) - (go driller-lurker-chase #t) - ) - (driller-lurker-method-20 self #t (the-as target #f)) - ) - :code (behavior () - (update-trans! (-> self sound2) (-> self root-overeride trans)) - (loop - (set! (-> self timeout) (rand-vu-int-range 4 8)) - (ja-channel-push! 1 (seconds 0.2)) - (dotimes (gp-0 (-> self timeout)) - (let ((f30-0 (rand-vu-float-range 1.0 1.8))) - (ja-no-eval :group! driller-lurker-idle-drilling-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (update! (-> self sound2)) - (if (and (>= (ja-aframe-num 0) 7.0) (>= 13.0 (ja-aframe-num 0))) - (driller-lurker-method-27 self) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - (stop! (-> self sound2)) - (ja-channel-push! 1 (seconds 0.2)) - (if (zero? (rand-vu-int-count 2)) + :enter + (behavior () + (set! (-> self mode) (the-as uint 1)) + (set! (-> self targ-path-speed) 0.0) + (set! (-> self path-speed) 0.0) + (shut-down! (-> self neck))) + :exit + (behavior () + (stop! (-> self sound2))) + :trans + (behavior () + (if (driller-lurker-method-25 self) (go driller-lurker-chase #t)) + (driller-lurker-method-20 self #t (the-as target #f))) + :code + (behavior () + (update-trans! (-> self sound2) (-> self root-overeride trans)) + (loop + (set! (-> self timeout) (rand-vu-int-range 4 8)) + (ja-channel-push! 1 (seconds 0.2)) + (dotimes (gp-0 (-> self timeout)) + (let ((f30-0 (rand-vu-float-range 1.0 1.8))) + (ja-no-eval :group! driller-lurker-idle-drilling-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (update! (-> self sound2)) + (if (and (>= (ja-aframe-num 0) 7.0) (>= 13.0 (ja-aframe-num 0))) (driller-lurker-method-27 self)) + (suspend) + (ja :num! (seek! max f30-0))))) + (stop! (-> self sound2)) + (ja-channel-push! 1 (seconds 0.2)) + (if (zero? (rand-vu-int-count 2)) (ja :group! driller-lurker-idle-look-left-ja :num! min) - (ja :group! driller-lurker-idle-look-right-ja :num! min) - ) - (ja-no-eval :num! (seek!)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :group! driller-lurker-idle-look-right-ja :num! min)) + (ja-no-eval :num! (seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate driller-lurker-patrol (driller-lurker) :event driller-lurker-default-event-handler - :enter (behavior () - (set! (-> self mode) (the-as uint 2)) - (set-time! (-> self state-time)) - (set! (-> self timeout) (rand-vu-int-range 900 3600)) - (set! (-> self targ-path-speed) 15360.0) - (if (>= 4096.0 (-> self path-speed)) - (set! (-> self targ-path-speed) 15360.0) - ) - (shut-down! (-> self neck)) - ) - :trans (behavior () - (if (driller-lurker-method-25 self) - (go driller-lurker-chase #t) - ) - (driller-lurker-method-20 self #t (the-as target #f)) - ) - :code (behavior () - (ja-channel-push! 2 (seconds 0.2)) - (ja :group! driller-lurker-walk-ja :num! min) - (ja :chan 1 :group! driller-lurker-walk-up-ja :num! (chan 0) :frame-interp (-> self up-blend)) - (loop - (suspend) - (ja :num! (seek!)) - (if (= (ja-group-size) 2) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self up-blend)) - ) - (when (ja-done? 0) - (if (and (time-elapsed? (-> self state-time) (-> self timeout)) - (>= 546.13336 (fabs (deg- (-> self path-ry) (-> self facing-ry)))) - ) - (go driller-lurker-patrol-pause) - ) - (ja :num-func num-func-identity :frame-num 0.0) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self mode) (the-as uint 2)) + (set-time! (-> self state-time)) + (set! (-> self timeout) (rand-vu-int-range 900 3600)) + (set! (-> self targ-path-speed) 15360.0) + (if (>= 4096.0 (-> self path-speed)) (set! (-> self targ-path-speed) 15360.0)) + (shut-down! (-> self neck))) + :trans + (behavior () + (if (driller-lurker-method-25 self) (go driller-lurker-chase #t)) + (driller-lurker-method-20 self #t (the-as target #f))) + :code + (behavior () + (ja-channel-push! 2 (seconds 0.2)) + (ja :group! driller-lurker-walk-ja :num! min) + (ja :chan 1 :group! driller-lurker-walk-up-ja :num! (chan 0) :frame-interp (-> self up-blend)) + (loop + (suspend) + (ja :num! (seek!)) + (if (= (ja-group-size) 2) (ja :chan 1 :num! (chan 0) :frame-interp (-> self up-blend))) + (when (ja-done? 0) + (if (and (time-elapsed? (-> self state-time) (-> self timeout)) + (>= 546.13336 (fabs (deg- (-> self path-ry) (-> self facing-ry))))) + (go driller-lurker-patrol-pause)) + (ja :num-func num-func-identity :frame-num 0.0)))) + :post transform-post) (defstate driller-lurker-patrol-pause (driller-lurker) :event driller-lurker-default-event-handler - :enter (behavior () - (set! (-> self mode) (the-as uint 2)) - (set! (-> self path-speed) 0.0) - (set! (-> self targ-path-speed) 0.0) - (shut-down! (-> self neck)) - ) - :trans (behavior () - (if (driller-lurker-method-25 self) - (go driller-lurker-chase #t) - ) - (driller-lurker-method-20 self #t (the-as target #f)) - ) - :code (behavior () - (set! (-> self timeout) (rand-vu-int-range 2 4)) - (let ((s5-0 -1)) - (dotimes (gp-0 (-> self timeout)) - (let ((v1-0 (rand-vu-int-count 3))) - (if (= v1-0 s5-0) - (set! v1-0 (mod (+ v1-0 1) 3)) - ) - (set! s5-0 v1-0) - (cond - ((zero? v1-0) - (if (not (ja-group? driller-lurker-idle-ja)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja :group! driller-lurker-idle-ja :num! min) - ) - ((= v1-0 1) - (if (not (ja-group? driller-lurker-idle-look-left-ja)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja :group! driller-lurker-idle-look-left-ja :num! min) - ) - ((= v1-0 2) - (if (not (ja-group? driller-lurker-idle-look-right-ja)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja :group! driller-lurker-idle-look-right-ja :num! min) - ) - ) - ) - (ja-no-eval :num! (seek!)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go driller-lurker-patrol) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self mode) (the-as uint 2)) + (set! (-> self path-speed) 0.0) + (set! (-> self targ-path-speed) 0.0) + (shut-down! (-> self neck))) + :trans + (behavior () + (if (driller-lurker-method-25 self) (go driller-lurker-chase #t)) + (driller-lurker-method-20 self #t (the-as target #f))) + :code + (behavior () + (set! (-> self timeout) (rand-vu-int-range 2 4)) + (let ((s5-0 -1)) + (dotimes (gp-0 (-> self timeout)) + (let ((v1-0 (rand-vu-int-count 3))) + (if (= v1-0 s5-0) (set! v1-0 (mod (+ v1-0 1) 3))) + (set! s5-0 v1-0) + (cond + ((zero? v1-0) + (if (not (ja-group? driller-lurker-idle-ja)) (ja-channel-push! 1 (seconds 0.2))) + (ja :group! driller-lurker-idle-ja :num! min)) + ((= v1-0 1) + (if (not (ja-group? driller-lurker-idle-look-left-ja)) (ja-channel-push! 1 (seconds 0.2))) + (ja :group! driller-lurker-idle-look-left-ja :num! min)) + ((= v1-0 2) + (if (not (ja-group? driller-lurker-idle-look-right-ja)) (ja-channel-push! 1 (seconds 0.2))) + (ja :group! driller-lurker-idle-look-right-ja :num! min)))) + (ja-no-eval :num! (seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go driller-lurker-patrol)) + :post transform-post) (defstate driller-lurker-chase (driller-lurker) :event driller-lurker-default-event-handler - :enter (behavior ((arg0 symbol)) - (if arg0 - (set-time! (-> self started-chasing-time)) - ) - (set! (-> self mode) (the-as uint 3)) - (set-time! (-> self state-time)) - (set! (-> self targ-path-speed) 23552.0) - ) - :trans (behavior () - (if (driller-lurker-method-24 self) - (go driller-lurker-attack) - ) - (if (driller-lurker-method-26 self) - (go driller-lurker-patrol) - ) - (if (time-elapsed? (-> self started-chasing-time) (seconds 3)) - (go driller-lurker-jammed-standing) - ) - (let* ((gp-0 (-> self path)) - (s5-0 (method-of-object gp-0 path-control-method-20)) - ) - (target-pos 0) - (let ((f0-1 (- (s5-0 gp-0) (-> self path-u)))) - (when (>= (fabs f0-1) (* 0.1 (-> self path-units-per-meter))) - (cond - ((< 0.0 f0-1) - (when (< (-> self path-dir) 0.0) - (set! (-> self path-dir) 1.0) - (set! (-> self path-speed) 0.0) - ) - ) - (else - (when (>= (-> self path-dir) 0.0) - (set! (-> self path-dir) -1.0) - (set! (-> self path-speed) 0.0) - ) - ) - ) - ) - ) - ) - (driller-lurker-method-20 self #f (the-as target #t)) - ) - :code (behavior ((arg0 symbol)) - (ja-channel-push! 2 (seconds 0.2)) - (ja :group! driller-lurker-run-ja :num! min) - (ja :chan 1 :group! driller-lurker-run-up-ja :num! (chan 0) :frame-interp (-> self up-blend)) - (loop - (suspend) - (ja :num! (seek!)) - (if (= (ja-group-size) 2) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self up-blend)) - ) - (if (ja-done? 0) - (ja :num-func num-func-identity :frame-num 0.0) - ) - ) - ) - :post transform-post - ) + :enter + (behavior ((arg0 symbol)) + (if arg0 (set-time! (-> self started-chasing-time))) + (set! (-> self mode) (the-as uint 3)) + (set-time! (-> self state-time)) + (set! (-> self targ-path-speed) 23552.0)) + :trans + (behavior () + (if (driller-lurker-method-24 self) (go driller-lurker-attack)) + (if (driller-lurker-method-26 self) (go driller-lurker-patrol)) + (if (time-elapsed? (-> self started-chasing-time) (seconds 3)) (go driller-lurker-jammed-standing)) + (let* ((gp-0 (-> self path)) + (s5-0 (method-of-object gp-0 path-control-method-20))) + (target-pos 0) + (let ((f0-1 (- (s5-0 gp-0) (-> self path-u)))) + (when (>= (fabs f0-1) (* 0.1 (-> self path-units-per-meter))) + (cond + ((< 0.0 f0-1) (when (< (-> self path-dir) 0.0) (set! (-> self path-dir) 1.0) (set! (-> self path-speed) 0.0))) + (else (when (>= (-> self path-dir) 0.0) (set! (-> self path-dir) -1.0) (set! (-> self path-speed) 0.0))))))) + (driller-lurker-method-20 self #f (the-as target #t))) + :code + (behavior ((arg0 symbol)) + (ja-channel-push! 2 (seconds 0.2)) + (ja :group! driller-lurker-run-ja :num! min) + (ja :chan 1 :group! driller-lurker-run-up-ja :num! (chan 0) :frame-interp (-> self up-blend)) + (loop + (suspend) + (ja :num! (seek!)) + (if (= (ja-group-size) 2) (ja :chan 1 :num! (chan 0) :frame-interp (-> self up-blend))) + (if (ja-done? 0) (ja :num-func num-func-identity :frame-num 0.0)))) + :post transform-post) (defstate driller-lurker-attack (driller-lurker) :event driller-lurker-default-event-handler - :enter (behavior () - (set! (-> self mode) (the-as uint 4)) - (set-time! (-> self state-time)) - (set! (-> self path-speed) 0.0) - (set! (-> self targ-path-speed) 0.0) - ) - :trans (behavior () - (cond - ((driller-lurker-method-24 self) - (set-time! (-> self state-time)) - ) - (else - (if (time-elapsed? (-> self state-time) (seconds 0.5)) - (go driller-lurker-chase #f) - ) - ) - ) - (if (time-elapsed? (-> self started-chasing-time) (seconds 3)) - (go driller-lurker-jammed-standing) - ) - (driller-lurker-method-20 self #f (the-as target #t)) - ) - :code (behavior () - (ja-channel-push! 2 (seconds 0.2)) - (ja :group! driller-lurker-attack-ja :num! min) - (ja :chan 1 :group! driller-lurker-attack-up-ja :num! (chan 0) :frame-interp (-> self up-blend)) - (loop - (suspend) - (ja :num! (seek!)) - (if (= (ja-group-size) 2) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self up-blend)) - ) - (if (ja-done? 0) - (ja :num-func num-func-identity :frame-num 0.0) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self mode) (the-as uint 4)) + (set-time! (-> self state-time)) + (set! (-> self path-speed) 0.0) + (set! (-> self targ-path-speed) 0.0)) + :trans + (behavior () + (cond + ((driller-lurker-method-24 self) (set-time! (-> self state-time))) + (else (if (time-elapsed? (-> self state-time) (seconds 0.5)) (go driller-lurker-chase #f)))) + (if (time-elapsed? (-> self started-chasing-time) (seconds 3)) (go driller-lurker-jammed-standing)) + (driller-lurker-method-20 self #f (the-as target #t))) + :code + (behavior () + (ja-channel-push! 2 (seconds 0.2)) + (ja :group! driller-lurker-attack-ja :num! min) + (ja :chan 1 :group! driller-lurker-attack-up-ja :num! (chan 0) :frame-interp (-> self up-blend)) + (loop + (suspend) + (ja :num! (seek!)) + (if (= (ja-group-size) 2) (ja :chan 1 :num! (chan 0) :frame-interp (-> self up-blend))) + (if (ja-done? 0) (ja :num-func num-func-identity :frame-num 0.0)))) + :post transform-post) (defstate driller-lurker-jammed-standing (driller-lurker) :event driller-lurker-default-event-handler - :enter (behavior () - (set! (-> self mode) (the-as uint 5)) - (set! (-> self path-speed) 0.0) - (set! (-> self targ-path-speed) 0.0) - (shut-down! (-> self neck)) - ) - :trans (behavior () - (driller-lurker-method-20 self #f (the-as target #f)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! driller-lurker-drill-jams-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self started-chasing-time)) - (cond - (*target* - (go driller-lurker-chase #f) - (set! (-> self path-speed) 5888.0) - ) - (else - (set! (-> self path-speed) 7680.0) - (go driller-lurker-patrol) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self mode) (the-as uint 5)) + (set! (-> self path-speed) 0.0) + (set! (-> self targ-path-speed) 0.0) + (shut-down! (-> self neck))) + :trans + (behavior () + (driller-lurker-method-20 self #f (the-as target #f))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! driller-lurker-drill-jams-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self started-chasing-time)) + (cond + (*target* (go driller-lurker-chase #f) (set! (-> self path-speed) 5888.0)) + (else (set! (-> self path-speed) 7680.0) (go driller-lurker-patrol)))) + :post transform-post) (defstate driller-lurker-die (driller-lurker) :event process-drawable-death-event-handler - :code (behavior () - (shut-down! (-> self neck)) - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.2)) - (clear-collide-with-as (-> self root-overeride)) - (ja-no-eval :group! driller-lurker-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event self 'death-end) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - :post ja-post - ) + :code + (behavior () + (shut-down! (-> self neck)) + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.2)) + (clear-collide-with-as (-> self root-overeride)) + (ja-no-eval :group! driller-lurker-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event self 'death-end) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post ja-post) (defmethod relocate ((this driller-lurker) (arg0 int)) - (if (nonzero? (-> this neck)) - (&+! (-> this neck) arg0) - ) - (if (nonzero? (-> this drill)) - (&+! (-> this drill) arg0) - ) - (if (nonzero? (-> this sound2)) - (&+! (-> this sound2) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this neck)) (&+! (-> this neck) arg0)) + (if (nonzero? (-> this drill)) (&+! (-> this drill) arg0)) + (if (nonzero? (-> this sound2)) (&+! (-> this sound2) arg0)) + (call-parent-method this arg0)) (defmethod deactivate ((this driller-lurker)) - (if (nonzero? (-> this sound2)) - (stop! (-> this sound2)) - ) + (if (nonzero? (-> this sound2)) (stop! (-> this sound2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod init-from-entity! ((this driller-lurker) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -985,9 +660,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -1001,118 +674,81 @@ (set! (-> s2-0 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 3276.8 0.0 4505.6) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 7372.8 0.0 4505.6) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 11468.8 0.0 4505.6) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) (set! (-> s2-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-3 transform-index) 25) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 4096.0 3276.8) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-4 collide-with) (collide-kind target)) (set! (-> s2-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-4 transform-index) 25) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 5734.4 3686.4) - (append-prim s3-0 s2-4) - ) + (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) (collide-kind enemy)) (set! (-> s2-5 collide-with) (collide-kind target)) (set! (-> s2-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-5 transform-index) 25) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 9420.8 2457.6) - (append-prim s3-0 s2-5) - ) - ) + (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! (-> this root-overeride) s4-0) - ) + (set! (-> this root-overeride) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *driller-lurker-sg* '()) (set! (-> this path) (new 'process 'curve-control this 'path -1000000000.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (if (< (-> this path curve num-cverts) 2) - (go process-drawable-art-error "bad path") - ) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (if (< (-> this path curve num-cverts) 2) (go process-drawable-art-error "bad path")) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this draw shadow-ctrl) *driller-lurker-shadow-control*) (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "drill-idle" :fo-max 40) (-> this root-overeride trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "drill-idle" :fo-max 40) (-> this root-overeride trans))) (set! (-> this sound2) - (new 'process 'ambient-sound (static-sound-spec "drill-idle2" :fo-max 60) (-> this root-overeride trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "drill-idle2" :fo-max 60) (-> this root-overeride trans))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 331) this)) - (let ((f0-34 (path-distance (-> this path)))) - (set! (-> this path-units-per-meter) (/ 4096.0 f0-34)) - ) + (let ((f0-34 (path-distance (-> this path)))) (set! (-> this path-units-per-meter) (/ 4096.0 f0-34))) (set! (-> this path-dir) 1.0) (set! (-> this path-u) 0.0) (set! (-> this path-speed) 15360.0) (set! (-> this targ-path-speed) 15360.0) (set! (-> this up-blend) 0.0) (set! sv-16 (new 'static 'res-tag)) - (let ((v1-91 - (res-lump-data - arg0 - 'driller-lurker - (pointer float) - :tag-ptr (the-as (pointer res-tag) (new 'stack-no-clear 'vector)) - ) - ) - ) + (let ((v1-91 (res-lump-data arg0 'driller-lurker (pointer float) :tag-ptr (the-as (pointer res-tag) (new 'stack-no-clear 'vector))))) (when v1-91 (set! (-> this path-u) (fmax 0.0 (fmin 1.0 (-> v1-91 0)))) - (if (< (-> v1-91 1) 0.0) - (set! (-> this path-dir) -1.0) - ) + (if (< (-> v1-91 1) 0.0) (set! (-> this path-dir) -1.0)) (let ((f0-45 (-> v1-91 2))) (when (!= f0-45 12345.0) (let ((f30-0 (* 182.04445 f0-45))) (set! (-> this ambient-drilling-u) (-> this path-u)) (quaternion-axis-angle! (-> this root-overeride quat) 0.0 1.0 0.0 f30-0) - (set! (-> this facing-ry) f30-0) - ) - ) - ) - ) - ) + (set! (-> this facing-ry) f30-0)))))) (eval-path-curve! (-> this path) (-> this root-overeride trans) (-> this path-u) 'interp) (let ((s5-1 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> this path) s5-1 (-> this path-u)) (let ((f0-51 (atan (-> s5-1 x) (-> s5-1 z)))) - (if (< (-> this path-dir) 0.0) - (set! f0-51 (+ 32768.0 f0-51)) - ) + (if (< (-> this path-dir) 0.0) (set! f0-51 (+ 32768.0 f0-51))) (set! (-> this path-ry) f0-51) - (if (< (-> this ambient-drilling-u) 0.0) - (set! (-> this facing-ry) f0-51) - ) - ) - ) + (if (< (-> this ambient-drilling-u) 0.0) (set! (-> this facing-ry) f0-51)))) (let ((v1-103 (new 'process 'joint-mod (joint-mod-handler-mode reset) this 6))) (set! (-> this neck) v1-103) (set-vector! (-> this neck twist-max) 8192.0 8192.0 0.0 1.0) @@ -1120,21 +756,14 @@ (set! (-> v1-103 nose) (the-as uint 2)) (set! (-> v1-103 ear) (the-as uint 0)) (set! (-> v1-103 max-dist) 102400.0) - (set! (-> v1-103 ignore-angle) 16384.0) - ) + (set! (-> v1-103 ignore-angle) 16384.0)) (set! (-> this drill) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) this 38)) (transform-post) - (create-connection! - *cavecrystal-light-control* - this - (-> this entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - -1 - 8192.0 - ) - (if (>= (-> this ambient-drilling-u) 0.0) - (go driller-lurker-idle-drilling) - (go driller-lurker-patrol) - ) - (none) - ) + (create-connection! *cavecrystal-light-control* + this + (-> this entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + -1 + 8192.0) + (if (>= (-> this ambient-drilling-u) 0.0) (go driller-lurker-idle-drilling) (go driller-lurker-patrol)) + (none)) diff --git a/goal_src/jak1/levels/maincave/gnawer.gc b/goal_src/jak1/levels/maincave/gnawer.gc index a078f1958d..0d855798f3 100644 --- a/goal_src/jak1/levels/maincave/gnawer.gc +++ b/goal_src/jak1/levels/maincave/gnawer.gc @@ -1,339 +1,304 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "engine/game/task/task-control.gc") (require "engine/geometry/path.gc") (require "levels/maincave/maincave-obs.gc") - -;; name: gnawer.gc -;; name in dgo: gnawer -;; dgos: L1, MAI, MAINCAVE - (declare-type gnawer process-drawable) - (define-extern gnawer-joint-callback (function gnawer none)) ;; DECOMP BEGINS (deftype gnawer-falling-segment (process-drawable) - ((transv vector :inline) - (facing-rot vector :inline) - (facing-rotv vector :inline) - ) + ((transv vector :inline) + (facing-rot vector :inline) + (facing-rotv vector :inline)) (:state-methods - falling - ) - ) - + falling)) (deftype gnawer-segment-info (structure) - ((num-joints int32) - (joint-index int8 8) - ) - ) - + ((num-joints int32) + (joint-index int8 8))) (deftype gnawer-segment (structure) - ((place int32) - (world-pos vector :inline) - (anim-to-local-trans-offset vector :inline) - (orient-mat matrix :inline) - ) - ) - + ((place int32) + (world-pos vector :inline) + (anim-to-local-trans-offset vector :inline) + (orient-mat matrix :inline))) (deftype gnawer-route (structure) - ((src-pt-index int32) - (dest-pt-index int32) - (total-travel-time time-frame) - (src-ang float) - (dest-ang float) - (delta-ang float) - (surface-dist float) - (total-dist float) - (src-pt-offset vector :inline) - (dest-pt-offset vector :inline) - (surface-dir vector :inline) - ) - ) - + ((src-pt-index int32) + (dest-pt-index int32) + (total-travel-time time-frame) + (src-ang float) + (dest-ang float) + (delta-ang float) + (surface-dist float) + (total-dist float) + (src-pt-offset vector :inline) + (dest-pt-offset vector :inline) + (surface-dir vector :inline))) (deftype gnawer (process-drawable) - ((root collide-shape :override) - (hit-points int32) - (gnawer-id int32) - (total-money int32) - (money-mask uint32) - (eco-green-mask uint32) - (hidden? symbol) - (show-damage? symbol) - (route-dist float) - (speed float) - (anim-speed float) - (part2 sparticle-launch-control) - (sound2 ambient-sound) - (last-hit-time time-frame) - (post-trans vector :inline) - (fall-trans vector :inline) - (route gnawer-route :inline) - (segments gnawer-segment 10 :inline) - ) + ((root collide-shape :override) + (hit-points int32) + (gnawer-id int32) + (total-money int32) + (money-mask uint32) + (eco-green-mask uint32) + (hidden? symbol) + (show-damage? symbol) + (route-dist float) + (speed float) + (anim-speed float) + (part2 sparticle-launch-control) + (sound2 ambient-sound) + (last-hit-time time-frame) + (post-trans vector :inline) + (fall-trans vector :inline) + (route gnawer-route :inline) + (segments gnawer-segment 10 :inline)) (:methods - (gnawer-method-20 (_type_ int) matrix) - (gnawer-method-21 (_type_ int bounding-box symbol float) float) - (gnawer-method-22 (_type_ float) symbol) - (gnawer-method-23 (_type_) none) - (gnawer-method-24 (_type_) none) - (gnawer-method-25 (_type_) symbol) - (gnawer-method-26 (_type_) none) - (gnawer-method-27 (_type_) none) - (gnawer-method-28 (_type_ int int) symbol) - (gnawer-method-29 (_type_ int vector vector) float) - (gnawer-method-30 (_type_ process-drawable) uint) - ) + (gnawer-method-20 (_type_ int) matrix) + (gnawer-method-21 (_type_ int bounding-box symbol float) float) + (gnawer-method-22 (_type_ float) symbol) + (gnawer-method-23 (_type_) none) + (gnawer-method-24 (_type_) none) + (gnawer-method-25 (_type_) symbol) + (gnawer-method-26 (_type_) none) + (gnawer-method-27 (_type_) none) + (gnawer-method-28 (_type_ int int) symbol) + (gnawer-method-29 (_type_ int vector vector) float) + (gnawer-method-30 (_type_ process-drawable) uint)) (:states - gnawer-chewing-on-post - gnawer-die - gnawer-dying-give-pickups - gnawer-give-fuel-cell - gnawer-put-items-at-dest - gnawer-retreat-into-post - gnawer-run - gnawer-wait-to-run - ) - ) - + gnawer-chewing-on-post + gnawer-die + gnawer-dying-give-pickups + gnawer-give-fuel-cell + gnawer-put-items-at-dest + gnawer-retreat-into-post + gnawer-run + gnawer-wait-to-run)) -(defskelgroup *gnawer-sg* gnawer gnawer-lod0-jg -1 - ((gnawer-lod0-mg (meters 20)) (gnawer-lod1-mg (meters 40)) (gnawer-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0.5 0 8) - :longest-edge (meters 0.8) - ) +(defskelgroup *gnawer-sg* + gnawer + gnawer-lod0-jg + -1 + ((gnawer-lod0-mg (meters 20)) (gnawer-lod1-mg (meters 40)) (gnawer-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0.5 0 8) + :longest-edge (meters 0.8)) -(defskelgroup *gnawer-segment-sg* gnawer gnawer-segment-lod0-jg -1 - ((gnawer-segment-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) +(defskelgroup *gnawer-segment-sg* + gnawer + gnawer-segment-lod0-jg + -1 + ((gnawer-segment-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) (define *gnawer-segment-infos* - (new 'static 'inline-array gnawer-segment-info 10 - (new 'static 'gnawer-segment-info - :num-joints 8 - :joint-index (new 'static 'array int8 8 4 31 13 32 33 34 35 36) - ) - (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 5 14 15 0 0 0 0 0)) - (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 6 16 17 0 0 0 0 0)) - (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 7 18 19 0 0 0 0 0)) - (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 8 20 21 0 0 0 0 0)) - (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 9 22 23 0 0 0 0 0)) - (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 10 24 25 0 0 0 0 0)) - (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 11 26 27 0 0 0 0 0)) - (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 12 28 29 0 0 0 0 0)) - (new 'static 'gnawer-segment-info :num-joints 1 :joint-index (new 'static 'array int8 8 30 0 0 0 0 0 0 0)) - ) - ) + (new 'static + 'inline-array + gnawer-segment-info + 10 + (new 'static 'gnawer-segment-info :num-joints 8 :joint-index (new 'static 'array int8 8 4 31 13 32 33 34 35 36)) + (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 5 14 15 0 0 0 0 0)) + (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 6 16 17 0 0 0 0 0)) + (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 7 18 19 0 0 0 0 0)) + (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 8 20 21 0 0 0 0 0)) + (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 9 22 23 0 0 0 0 0)) + (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 10 24 25 0 0 0 0 0)) + (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 11 26 27 0 0 0 0 0)) + (new 'static 'gnawer-segment-info :num-joints 3 :joint-index (new 'static 'array int8 8 12 28 29 0 0 0 0 0)) + (new 'static 'gnawer-segment-info :num-joints 1 :joint-index (new 'static 'array int8 8 30 0 0 0 0 0 0 0)))) (defpartgroup group-gnawer-loses-segment :id 329 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 727 :binding 2309) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2309 :flags (start-dead)) - (sp-item 2310) - ) - ) + :parts + ((sp-item 727 :binding 2309) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2309 :flags (start-dead)) + (sp-item 2310))) (defpart 2310 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.0) - (:scale-x (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 192.0 128.0) - (:a 128.0) - (:fade-a -4.266667) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.0) + (:scale-x (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 192.0 128.0) + (:a 128.0) + (:fade-a -4.266667) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)))) (defpart 727 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 16.0 16.0) - (:scale-x (meters 0.25) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 64.0) - (:g 0.0 16.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.02) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:fade-a -0.28444445) - (:accel-y (meters -0.001) (meters -0.00066666666)) - (:friction 0.975) - (:timer (seconds 1) (seconds 0.497)) - (:flags (bit2)) - (:conerot-x (degrees 45) (degrees 135)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 16.0 16.0) + (:scale-x (meters 0.25) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g 0.0 16.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.02) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:fade-a -0.28444445) + (:accel-y (meters -0.001) (meters -0.00066666666)) + (:friction 0.975) + (:timer (seconds 1) (seconds 0.497)) + (:flags (bit2)) + (:conerot-x (degrees 45) (degrees 135)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2)))) (defpart 2309 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.25 0.5) - (:scale-x (meters 0.7) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 64.0) - (:g 0.0 16.0) - (:b 96.0 64.0) - (:a 16.0 48.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.42666668) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.5) (seconds 0.997)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.25 0.5) + (:scale-x (meters 0.7) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g 0.0 16.0) + (:b 96.0 64.0) + (:a 16.0 48.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.42666668) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.5) (seconds 0.997)) + (:flags (bit2)))) (defpartgroup group-gnawer-crumbs :id 330 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2141 :fade-after (meters 60) :falloff-to (meters 60))) - ) + :parts ((sp-item 2141 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 2141 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 1.0 2.0) - (:scale-x (meters 0.15) (meters 0.35)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 64.0 128.0) - (:b 64.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.006666667) (meters 0.008333334)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:fade-a -0.16) - (:accel-y (meters -0.00083333335)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 1.0 2.0) + (:scale-x (meters 0.15) (meters 0.35)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 64.0 128.0) + (:b 64.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.008333334)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:fade-a -0.16) + (:accel-y (meters -0.00083333335)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defstate falling (gnawer-falling-segment) :virtual #t - :trans (behavior () - (+! (-> self transv y) (* -409600.0 (seconds-per-frame))) - (vector-v+! (-> self root trans) (-> self root trans) (-> self transv)) - (+! (-> self facing-rot x) (* (-> self facing-rotv x) (seconds-per-frame))) - (set! (-> self facing-rot z) - (deg-seek (-> self facing-rot z) 16384.0 (* (-> self facing-rotv z) (seconds-per-frame))) - ) - (quaternion-zxy! (-> self root quat) (-> self facing-rot)) - (seek! (-> self root scale x) 0.0 (* 0.5 (seconds-per-frame))) - (set! (-> self root scale y) (-> self root scale x)) - (set! (-> self root scale z) (-> self root scale x)) - ) - :code (behavior () - (ja-channel-push! 1 0) - (dotimes (gp-0 1) - (ja-no-eval :group! gnawer-segment-idle-ja :num! (seek!) :frame-num 0.0) + :trans + (behavior () + (+! (-> self transv y) (* -409600.0 (seconds-per-frame))) + (vector-v+! (-> self root trans) (-> self root trans) (-> self transv)) + (+! (-> self facing-rot x) (* (-> self facing-rotv x) (seconds-per-frame))) + (set! (-> self facing-rot z) (deg-seek (-> self facing-rot z) 16384.0 (* (-> self facing-rotv z) (seconds-per-frame)))) + (quaternion-zxy! (-> self root quat) (-> self facing-rot)) + (seek! (-> self root scale x) 0.0 (* 0.5 (seconds-per-frame))) + (set! (-> self root scale y) (-> self root scale x)) + (set! (-> self root scale z) (-> self root scale x))) + :code + (behavior () + (ja-channel-push! 1 0) + (dotimes (gp-0 1) + (ja-no-eval :group! gnawer-segment-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (ja-no-eval :group! gnawer-segment-die-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - (ja-no-eval :group! gnawer-segment-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - :post ja-post - ) + (ja :num! (seek!)))) + :post ja-post) (defbehavior gnawer-falling-segment-init-by-other gnawer-falling-segment ((arg0 gnawer) (arg1 vector) (arg2 vector)) (set! (-> self entity) (-> arg0 entity)) @@ -343,38 +308,29 @@ (vector-identity! (-> self root scale)) (let ((s5-1 (new 'stack-no-clear 'vector))) (let ((s4-0 (new 'stack-no-clear 'vector))) - (set-vector! - s5-1 - (+ (-> arg2 x) (rand-vu-float-range -0.2 0.2)) - (+ (-> arg2 y) (rand-vu-float-range -0.2 0.2)) - (+ (-> arg2 z) (rand-vu-float-range -0.2 0.2)) - 1.0 - ) + (set-vector! s5-1 + (+ (-> arg2 x) (rand-vu-float-range -0.2 0.2)) + (+ (-> arg2 y) (rand-vu-float-range -0.2 0.2)) + (+ (-> arg2 z) (rand-vu-float-range -0.2 0.2)) + 1.0) (vector-normalize! s5-1 1.0) - (set-vector! - s4-0 - (+ (-> arg2 x) (rand-vu-float-range -0.2 0.2)) - (+ (-> arg2 y) (rand-vu-float-range 0.0 0.4)) - (+ (-> arg2 z) (rand-vu-float-range -0.2 0.2)) - 1.0 - ) + (set-vector! s4-0 + (+ (-> arg2 x) (rand-vu-float-range -0.2 0.2)) + (+ (-> arg2 y) (rand-vu-float-range 0.0 0.4)) + (+ (-> arg2 z) (rand-vu-float-range -0.2 0.2)) + 1.0) (vector-normalize! s4-0 1.0) (set-heading-vec-clear-roll-pitch! (-> self root) s5-1) - (vector-float*! (-> self transv) s4-0 (rand-vu-float-range 20480.0 40960.0)) - ) - (rot-zxy-from-vector! (-> self facing-rot) s5-1) - ) - (set-vector! - (-> self facing-rotv) - (rand-vu-float-range 5461.3335 16384.0) - 0.0 - (rand-vu-float-range 16384.0 36408.89) - 1.0 - ) + (vector-float*! (-> self transv) s4-0 (rand-vu-float-range 20480.0 40960.0))) + (rot-zxy-from-vector! (-> self facing-rot) s5-1)) + (set-vector! (-> self facing-rotv) + (rand-vu-float-range 5461.3335 16384.0) + 0.0 + (rand-vu-float-range 16384.0 36408.89) + 1.0) (initialize-skeleton self *gnawer-segment-sg* '()) (go-virtual falling) - (none) - ) + (none)) (defmethod gnawer-method-23 ((this gnawer)) (when (not (-> this hidden?)) @@ -385,41 +341,30 @@ (set! (-> this root trans quad) (-> this post-trans quad)) (clear-collide-with-as (-> this root)) (dotimes (v1-12 10) - (set! (-> this segments v1-12 world-pos quad) (-> this post-trans quad)) - ) - (set-vector! (-> this draw bounds) 0.0 0.0 0.0 12288.0) - ) - (none) - ) + (set! (-> this segments v1-12 world-pos quad) (-> this post-trans quad))) + (set-vector! (-> this draw bounds) 0.0 0.0 0.0 12288.0)) + (none)) (defmethod gnawer-method-26 ((this gnawer)) (when (-> this hidden?) (set! (-> this hidden?) #f) (restore-collide-with-as (-> this root)) (set! (-> this skel postbind-function) gnawer-joint-callback) - (logclear! (-> this draw status) (draw-status hidden)) - ) - (none) - ) + (logclear! (-> this draw status) (draw-status hidden))) + (none)) (defmethod gnawer-method-24 ((this gnawer)) (local-vars (sv-48 vector) (sv-64 vector)) (let ((s5-0 0) - (s4-0 0) - ) + (s4-0 0)) (let ((f30-0 -1.0) - (s3-0 (-> this path curve num-cverts)) - ) + (s3-0 (-> this path curve num-cverts))) (dotimes (s2-0 3) (let ((s1-0 (rand-vu-int-count s3-0)) - (s0-0 (rand-vu-int-count s3-0)) - ) + (s0-0 (rand-vu-int-count s3-0))) (when (= s1-0 s0-0) (set! s0-0 (rand-vu-int-count s3-0)) - (if (= s1-0 s0-0) - (set! s0-0 (mod (+ s1-0 1) s3-0)) - ) - ) + (if (= s1-0 s0-0) (set! s0-0 (mod (+ s1-0 1) s3-0)))) (set! sv-48 (new 'stack-no-clear 'vector)) (set! sv-64 (new 'stack-no-clear 'vector)) (eval-path-curve-div! (-> this path) sv-48 (the float s1-0) 'interp) @@ -428,224 +373,137 @@ (when (< f30-0 f0-4) (set! f30-0 f0-4) (set! s5-0 s1-0) - (set! s4-0 s0-0) - ) - ) - ) - ) - ) + (set! s4-0 s0-0)))))) (set! (-> this route src-pt-index) s5-0) - (set! (-> this route dest-pt-index) s4-0) - ) + (set! (-> this route dest-pt-index) s4-0)) (let ((v1-13 (-> this route src-pt-index)) - (s5-1 (-> this route dest-pt-index)) - ) + (s5-1 (-> this route dest-pt-index))) (eval-path-curve-div! (-> this path) (-> this route src-pt-offset) (the float v1-13) 'interp) - (eval-path-curve-div! (-> this path) (-> this route dest-pt-offset) (the float s5-1) 'interp) - ) + (eval-path-curve-div! (-> this path) (-> this route dest-pt-offset) (the float s5-1) 'interp)) (vector-! (-> this route src-pt-offset) (-> this route src-pt-offset) (-> this post-trans)) (vector-! (-> this route dest-pt-offset) (-> this route dest-pt-offset) (-> this post-trans)) (let ((f30-1 (-> this route src-pt-offset y))) (set! (-> this route src-pt-offset y) 0.0) (vector-normalize! (-> this route src-pt-offset) 10240.0) - (set! (-> this route src-pt-offset y) f30-1) - ) + (set! (-> this route src-pt-offset y) f30-1)) (let ((f30-2 (-> this route dest-pt-offset y))) (set! (-> this route dest-pt-offset y) 0.0) (vector-normalize! (-> this route dest-pt-offset) 10240.0) - (set! (-> this route dest-pt-offset y) f30-2) - ) + (set! (-> this route dest-pt-offset y) f30-2)) (let ((f30-3 (atan (-> this route src-pt-offset x) (-> this route src-pt-offset z))) - (f0-15 (atan (-> this route dest-pt-offset x) (-> this route dest-pt-offset z))) - ) + (f0-15 (atan (-> this route dest-pt-offset x) (-> this route dest-pt-offset z)))) (set! (-> this route src-ang) f30-3) (set! (-> this route dest-ang) f0-15) (let ((f30-4 (deg- f0-15 f30-3))) 0.0 (let* ((v0-13 (rand-vu-int-count 100)) (f0-17 (cond - ((< v0-13 67) - 131072.0 - ) - ((< v0-13 82) - 196608.0 - ) - (else - 65536.0 - ) - ) - ) - ) - (set! (-> this route delta-ang) (if (>= f30-4 0.0) - (- f30-4 f0-17) - (+ f30-4 f0-17) - ) - ) - ) - ) - ) + ((< v0-13 67) 131072.0) + ((< v0-13 82) 196608.0) + (else 65536.0)))) + (set! (-> this route delta-ang) (if (>= f30-4 0.0) (- f30-4 f0-17) (+ f30-4 f0-17)))))) (let ((f30-5 (* 0.9817476 (-> this route delta-ang))) - (f28-0 (- (-> this route dest-pt-offset y) (-> this route src-pt-offset y))) - ) + (f28-0 (- (-> this route dest-pt-offset y) (-> this route src-pt-offset y)))) (set-vector! (-> this route surface-dir) f30-5 f28-0 0.0 1.0) (vector-normalize! (-> this route surface-dir) 1.0) (let ((f0-25 (sqrtf (+ (* f30-5 f30-5) (* f28-0 f28-0))))) (set! (-> this route surface-dist) f0-25) - (set! (-> this route total-dist) (+ 20480.0 f0-25)) - ) - ) + (set! (-> this route total-dist) (+ 20480.0 f0-25)))) (set! (-> this route total-travel-time) - (the-as time-frame (the int (/ (-> this route total-dist) (* 0.016666668 (-> this speed))))) - ) - (none) - ) + (the-as time-frame (the int (/ (-> this route total-dist) (* 0.016666668 (-> this speed)))))) + (none)) (defmethod gnawer-method-22 ((this gnawer) (arg0 float)) (let ((s4-0 (new 'stack-no-clear 'bounding-box)) (a3-0 #t) - (gp-0 #t) - ) + (gp-0 #t)) (dotimes (s2-0 10) (let ((v1-4 (-> this segments s2-0 place))) (cond ((>= v1-4 0) (let ((f0-1 (- arg0 (* 3891.2 (the float v1-4))))) (cond - ((< f0-1 0.0) - (set! f0-1 0.0) - (set! gp-0 #f) - ) - ((>= f0-1 (-> this route total-dist)) - (set! f0-1 (-> this route total-dist)) - ) - (else - (set! gp-0 #f) - ) - ) - (gnawer-method-21 this s2-0 s4-0 a3-0 f0-1) - ) - ) - (else - (gnawer-method-20 this s2-0) - ) - ) - ) - (set! a3-0 #f) - ) - (set-vector! - (-> this root trans) - (* 0.5 (+ (-> s4-0 min x) (-> s4-0 max x))) - (* 0.5 (+ (-> s4-0 min y) (-> s4-0 max y))) - (* 0.5 (+ (-> s4-0 min z) (-> s4-0 max z))) - 1.0 - ) + ((< f0-1 0.0) (set! f0-1 0.0) (set! gp-0 #f)) + ((>= f0-1 (-> this route total-dist)) (set! f0-1 (-> this route total-dist))) + (else (set! gp-0 #f))) + (gnawer-method-21 this s2-0 s4-0 a3-0 f0-1))) + (else (gnawer-method-20 this s2-0)))) + (set! a3-0 #f)) + (set-vector! (-> this root trans) + (* 0.5 (+ (-> s4-0 min x) (-> s4-0 max x))) + (* 0.5 (+ (-> s4-0 min y) (-> s4-0 max y))) + (* 0.5 (+ (-> s4-0 min z) (-> s4-0 max z))) + 1.0) (let* ((f0-10 (- (-> s4-0 max x) (-> this root trans x))) (f1-12 (- (-> s4-0 max y) (-> this root trans y))) (f2-7 (- (-> s4-0 max z) (-> this root trans z))) (f0-14 (sqrtf (+ (* f0-10 f0-10) (* f1-12 f1-12) (* f2-7 f2-7)))) (a0-3 (-> this draw bounds)) (v1-21 (-> this root root-prim)) - (f0-15 (+ 12288.0 f0-14)) - ) + (f0-15 (+ 12288.0 f0-14))) (vector-reset! a0-3) (set! (-> a0-3 w) f0-15) (vector-reset! (-> v1-21 local-sphere)) (set! (-> v1-21 local-sphere w) f0-15) (set! (-> v1-21 prim-core world-sphere quad) (-> this root trans quad)) - (set! (-> v1-21 prim-core world-sphere w) f0-15) - ) - gp-0 - ) - ) + (set! (-> v1-21 prim-core world-sphere w) f0-15)) + gp-0)) (defmethod gnawer-method-21 ((this gnawer) (arg0 int) (arg1 bounding-box) (arg2 symbol) (arg3 float)) (let ((gp-0 (-> this segments arg0))) (let ((f0-1 (+ 10240.0 (-> this route surface-dist)))) (cond ((< arg3 10240.0) - (let ((f0-3 (* 0.00009765625 arg3))) - (vector-float*! (-> gp-0 world-pos) (-> this route src-pt-offset) f0-3) - ) + (let ((f0-3 (* 0.00009765625 arg3))) (vector-float*! (-> gp-0 world-pos) (-> this route src-pt-offset) f0-3)) (set! (-> gp-0 world-pos y) (-> this route src-pt-offset y)) - (vector+! (-> gp-0 world-pos) (-> gp-0 world-pos) (-> this post-trans)) - ) + (vector+! (-> gp-0 world-pos) (-> gp-0 world-pos) (-> this post-trans))) ((< arg3 f0-1) (let* ((f30-0 (/ (+ -10240.0 arg3) (-> this route surface-dist))) - (f28-0 (+ (* (-> this route delta-ang) f30-0) (-> this route src-ang))) - ) - (set-vector! - (-> gp-0 world-pos) - (* 10240.0 (sin f28-0)) - (lerp (-> this route src-pt-offset y) (-> this route dest-pt-offset y) f30-0) - (* 10240.0 (cos f28-0)) - 1.0 - ) - ) - (vector+! (-> gp-0 world-pos) (-> gp-0 world-pos) (-> this post-trans)) - ) + (f28-0 (+ (* (-> this route delta-ang) f30-0) (-> this route src-ang)))) + (set-vector! (-> gp-0 world-pos) + (* 10240.0 (sin f28-0)) + (lerp (-> this route src-pt-offset y) (-> this route dest-pt-offset y) f30-0) + (* 10240.0 (cos f28-0)) + 1.0)) + (vector+! (-> gp-0 world-pos) (-> gp-0 world-pos) (-> this post-trans))) (else - (let ((f0-19 (- 1.0 (* 0.00009765625 (- arg3 f0-1))))) - (vector-float*! (-> gp-0 world-pos) (-> this route dest-pt-offset) f0-19) - ) - (set! (-> gp-0 world-pos y) (-> this route dest-pt-offset y)) - (vector+! (-> gp-0 world-pos) (-> gp-0 world-pos) (-> this post-trans)) - ) - ) - ) + (let ((f0-19 (- 1.0 (* 0.00009765625 (- arg3 f0-1))))) + (vector-float*! (-> gp-0 world-pos) (-> this route dest-pt-offset) f0-19)) + (set! (-> gp-0 world-pos y) (-> this route dest-pt-offset y)) + (vector+! (-> gp-0 world-pos) (-> gp-0 world-pos) (-> this post-trans))))) (cond - (arg2 - (set! (-> arg1 min quad) (-> gp-0 world-pos quad)) - (set! (-> arg1 max quad) (-> gp-0 world-pos quad)) - ) - (else - (add-point! arg1 (the-as vector3s (-> gp-0 world-pos))) - ) - ) + (arg2 (set! (-> arg1 min quad) (-> gp-0 world-pos quad)) (set! (-> arg1 max quad) (-> gp-0 world-pos quad))) + (else (add-point! arg1 (the-as vector3s (-> gp-0 world-pos))))) (let ((s4-1 (new 'stack-no-clear 'vector))) (vector-! s4-1 (-> gp-0 world-pos) (-> this post-trans)) (set! (-> s4-1 y) 0.0) (vector-normalize! s4-1 1.0) (let ((f0-24 (atan (-> s4-1 x) (-> s4-1 z))) - (s3-1 (new 'stack-no-clear 'vector)) - ) + (s3-1 (new 'stack-no-clear 'vector))) (vector-rotate-around-y! s3-1 (-> this route surface-dir) f0-24) (set! (-> gp-0 orient-mat vector 1 quad) (-> s4-1 quad)) - (set! (-> gp-0 orient-mat vector 2 quad) (-> s3-1 quad)) - ) - ) - (vector-cross! - (the-as vector (-> gp-0 orient-mat)) - (-> gp-0 orient-mat vector 1) - (-> gp-0 orient-mat vector 2) - ) + (set! (-> gp-0 orient-mat vector 2 quad) (-> s3-1 quad)))) + (vector-cross! (the-as vector (-> gp-0 orient-mat)) (-> gp-0 orient-mat vector 1) (-> gp-0 orient-mat vector 2)) (vector-normalize! (the-as vector (-> gp-0 orient-mat)) 1.0) (set! (-> gp-0 orient-mat vector 0 w) 0.0) (set! (-> gp-0 orient-mat vector 1 w) 0.0) - (set! (-> gp-0 orient-mat vector 2 w) 0.0) - ) - ) + (set! (-> gp-0 orient-mat vector 2 w) 0.0))) (defmethod gnawer-method-20 ((this gnawer) (arg0 int)) (let ((v1-3 (-> this segments arg0)) - (a0-1 (-> this segments (+ arg0 -1))) - ) + (a0-1 (-> this segments (+ arg0 -1)))) (set! (-> v1-3 world-pos quad) (-> a0-1 world-pos quad)) (let ((v0-0 (-> v1-3 orient-mat))) (let* ((a2-3 (-> a0-1 orient-mat)) (v1-4 (-> a2-3 vector 0 quad)) (a0-2 (-> a2-3 vector 1 quad)) (a1-5 (-> a2-3 vector 2 quad)) - (a2-4 (-> a2-3 vector 3 quad)) - ) + (a2-4 (-> a2-3 vector 3 quad))) (set! (-> v0-0 vector 0 quad) v1-4) (set! (-> v0-0 vector 1 quad) a0-2) (set! (-> v0-0 vector 2 quad) a1-5) - (set! (-> v0-0 vector 3 quad) a2-4) - ) - v0-0 - ) - ) - ) + (set! (-> v0-0 vector 3 quad) a2-4)) + v0-0))) (defmethod gnawer-method-25 ((this gnawer)) (dotimes (s5-0 3) @@ -657,651 +515,437 @@ (let ((s4-0 (+ (-> this hit-points) 2))) (let ((s3-0 (-> this segments s4-0))) (let ((s1-0 (new 'stack-no-clear 'vector)) - (s2-0 (-> s3-0 world-pos)) - ) + (s2-0 (-> s3-0 world-pos))) (vector-! s1-0 s2-0 (-> this root trans)) (set! (-> s1-0 y) 0.0) (vector-normalize! s1-0 1.0) - (process-spawn gnawer-falling-segment this s2-0 s1-0 :to this) - ) - (set! (-> s3-0 place) -1) - ) + (process-spawn gnawer-falling-segment this s2-0 s1-0 :to this)) + (set! (-> s3-0 place) -1)) (while (< s4-0 10) - (let ((v1-20 (-> this segments s4-0))) - (if (>= (-> v1-20 place) 0) - (+! (-> v1-20 place) -1) - ) - ) - (+! s4-0 1) - ) - ) - ) - ) - ) + (let ((v1-20 (-> this segments s4-0))) (if (>= (-> v1-20 place) 0) (+! (-> v1-20 place) -1))) + (+! s4-0 1)))))) (close-specific-task! (game-task cave-gnawers) (task-status need-hint)) - (<= (-> this hit-points) 0) - ) + (<= (-> this hit-points) 0)) (defmethod gnawer-method-28 ((this gnawer) (arg0 int) (arg1 int)) (when (> arg0 0) (let* ((v1-1 (rand-vu-int-count arg0)) - (a0-2 v1-1) - ) + (a0-2 v1-1)) (until (= a0-2 v1-1) - (let ((a1-2 (ash 1 a0-2))) - (if (not (logtest? a1-2 arg1)) - (return (the-as symbol a1-2)) - ) - ) - (set! a0-2 (mod (+ a0-2 1) arg0)) - ) - ) - ) - (the-as symbol 0) - ) + (let ((a1-2 (ash 1 a0-2))) (if (not (logtest? a1-2 arg1)) (return (the-as symbol a1-2)))) + (set! a0-2 (mod (+ a0-2 1) arg0))))) + (the-as symbol 0)) (defmethod gnawer-method-27 ((this gnawer)) (set! (-> this eco-green-mask) (the-as uint 0)) (let ((s4-0 (-> this path curve num-cverts)) (s3-0 (get-death-count *game-info* #f)) - (s5-0 (-> this money-mask)) - ) - (when (and *target* (or (and (= s3-0 1) (and (>= 1.0 (-> *target* fact health)) (rand-vu-percent? 0.1))) - (and (< 1 s3-0) (and (>= 2.0 (-> *target* fact health)) (rand-vu-percent? 0.05))) - ) - ) + (s5-0 (-> this money-mask))) + (when (and *target* + (or (and (= s3-0 1) (and (>= 1.0 (-> *target* fact health)) (rand-vu-percent? 0.1))) + (and (< 1 s3-0) (and (>= 2.0 (-> *target* fact health)) (rand-vu-percent? 0.05))))) (let ((v1-14 (gnawer-method-28 this s4-0 (the-as int s5-0)))) (logior s5-0 (the-as uint v1-14)) - (set! (-> this eco-green-mask) (the-as uint (logior (-> this eco-green-mask) (the-as uint v1-14)))) - ) - ) - ) - (none) - ) + (set! (-> this eco-green-mask) (the-as uint (logior (-> this eco-green-mask) (the-as uint v1-14))))))) + (none)) (defmethod gnawer-method-29 ((this gnawer) (arg0 int) (arg1 vector) (arg2 vector)) (let ((s1-0 (-> this path curve num-cverts)) - (s2-0 (new 'stack-no-clear 'vector)) - ) + (s2-0 (new 'stack-no-clear 'vector))) 0.0 0.0 (eval-path-curve-div! (-> this path) s2-0 0.0 'interp) (let* ((f30-0 (-> s2-0 y)) - (f28-0 f30-0) - ) + (f28-0 f30-0)) (eval-path-curve-div! (-> this path) s2-0 (the float (+ s1-0 -1)) 'interp) (let ((f30-1 (fmin f30-0 (-> s2-0 y))) - (f28-1 (fmax f28-0 (-> s2-0 y))) - ) + (f28-1 (fmax f28-0 (-> s2-0 y)))) (eval-path-curve-div! (-> this path) arg1 (the float arg0) 'interp) (vector-! arg2 arg1 (-> this post-trans)) (let ((f0-9 (+ 16384.0 (* 16384.0 (/ (fmax 0.0 (- (-> arg2 y) f30-1)) (- f28-1 f30-1)))))) (set! (-> arg2 y) 0.0) - (vector-normalize! arg2 f0-9) - ) - ) - ) - ) + (vector-normalize! arg2 f0-9))))) (vector+! arg2 arg2 (-> this post-trans)) - (set! (-> arg2 y) (+ 4096.0 (-> arg2 y))) - ) + (set! (-> arg2 y) (+ 4096.0 (-> arg2 y)))) (defmethod gnawer-method-30 ((this gnawer) (arg0 process-drawable)) (local-vars (sv-48 vector)) (let ((gp-0 (-> this entity extra perm))) (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) (let ((s5-0 (-> gp-0 user-uint16 0)) - (s2-0 -1) - ) + (s2-0 -1)) (let ((f30-0 0.0) - (s1-0 (-> this path curve num-cverts)) - ) + (s1-0 (-> this path curve num-cverts))) (dotimes (s0-0 s1-0) (when (logtest? (ash 1 s0-0) s5-0) (let ((a2-0 (new 'stack-no-clear 'vector))) (set! sv-48 (new 'stack-no-clear 'vector)) - (gnawer-method-29 this s0-0 a2-0 sv-48) - ) + (gnawer-method-29 this s0-0 a2-0 sv-48)) (let* ((t9-1 vector-vector-xz-distance) (a1-2 (-> arg0 root trans)) - (f0-0 (t9-1 sv-48 a1-2)) - ) + (f0-0 (t9-1 sv-48 a1-2))) (when (or (< s2-0 0) (< f0-0 f30-0)) (set! s2-0 s0-0) - (set! f30-0 f0-0) - ) - ) - ) - ) - ) + (set! f30-0 f0-0)))))) (when (>= s2-0 0) - (let ((v0-2 (logxor s5-0 (the-as uint (ash 1 s2-0))))) - (set! (-> gp-0 user-int16 0) (the-as int v0-2)) - v0-2 - ) - ) - ) - ) - ) + (let ((v0-2 (logxor s5-0 (the-as uint (ash 1 s2-0))))) (set! (-> gp-0 user-int16 0) (the-as int v0-2)) v0-2))))) (defstate gnawer-chewing-on-post (gnawer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (if (= (-> proc type) target) - (send-event - proc - 'shove - (-> block param 0) - (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))) - ) - ) - (go gnawer-retreat-into-post) - ) - (('attack) - (sound-play "gnawer-dies" :pitch -0.25) - (go gnawer-retreat-into-post) - ) - ) - ) - :exit (behavior () - (stop! (-> self sound2)) - ) - :trans (behavior () - (if (and *target* (>= 81920.0 (vector-vector-distance (target-pos 0) (-> self root trans)))) - (go gnawer-retreat-into-post) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (if (zero? (rand-vu-int-count 2)) - (ja :group! gnawer-tear-side-to-side-ja - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (ja :group! gnawer-tug-ja - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - ) - (ja-no-eval :num! (seek!)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (let ((gp-2 (rand-vu-int-range 1 2)) - (s4-0 (rand-vu-int-range 1 2)) - ) - (dotimes (s5-0 gp-2) - (dotimes (s3-0 s4-0) - (set! (-> self anim-speed) (rand-vu-float-range 0.8 1.0)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! gnawer-tear-side-to-side-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - (set! s4-0 (rand-vu-int-range 1 2)) - (dotimes (s3-1 s4-0) - (set! (-> self anim-speed) (rand-vu-float-range 0.8 1.0)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (if (= (-> proc type) target) + (send-event proc 'shove (-> block param 0) (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))))) + (go gnawer-retreat-into-post)) + (('attack) (sound-play "gnawer-dies" :pitch -0.25) (go gnawer-retreat-into-post)))) + :exit + (behavior () + (stop! (-> self sound2))) + :trans + (behavior () + (if (and *target* (>= 81920.0 (vector-vector-distance (target-pos 0) (-> self root trans)))) (go gnawer-retreat-into-post))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (if (zero? (rand-vu-int-count 2)) + (ja :group! + gnawer-tear-side-to-side-ja + :num! + (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))))) + (ja :group! gnawer-tug-ja :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))))) + (ja-no-eval :num! (seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop + (let ((gp-2 (rand-vu-int-range 1 2)) + (s4-0 (rand-vu-int-range 1 2))) + (dotimes (s5-0 gp-2) + (dotimes (s3-0 s4-0) + (set! (-> self anim-speed) (rand-vu-float-range 0.8 1.0)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! gnawer-tear-side-to-side-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed))))) + (set! s4-0 (rand-vu-int-range 1 2)) + (dotimes (s3-1 s4-0) + (set! (-> self anim-speed) (rand-vu-float-range 0.8 1.0)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! gnawer-tug-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed))))))) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! gnawer-up-to-chew-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((gp-3 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-3 (joint-node gnawer-lod0-jg nandibleR)) + (spawn (-> self part2) gp-3)) + (let ((gp-4 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-4 (joint-node gnawer-lod0-jg mandibleL)) + (spawn (-> self part2) gp-4)) + (suspend) + (ja :num! (seek!))) + (let ((gp-5 (rand-vu-int-range 1 4))) + (set! (-> self anim-speed) (rand-vu-float-range 0.8 1.0)) + (dotimes (s5-1 gp-5) (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! gnawer-tug-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + (ja-no-eval :group! gnawer-chew-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) (until (ja-done? 0) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! s4-1 (joint-node gnawer-lod0-jg nandibleR)) + (spawn (-> self part2) s4-1)) + (let ((s4-2 (new 'stack-no-clear 'vector))) + (vector<-cspace! s4-2 (joint-node gnawer-lod0-jg mandibleL)) + (spawn (-> self part2) s4-2)) + (update! (-> self sound2)) (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - ) + (ja :num! (seek! max (-> self anim-speed)))))) + (stop! (-> self sound2)) + (ja-no-eval :group! gnawer-down-from-chew-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) + +(defstate gnawer-retreat-into-post (gnawer) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! gnawer-up-to-chew-ja :num! (seek!) :frame-num 0.0) + (ja-no-eval :group! gnawer-notice-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (let ((gp-3 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-3 (joint-node gnawer-lod0-jg nandibleR)) - (spawn (-> self part2) gp-3) - ) - (let ((gp-4 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-4 (joint-node gnawer-lod0-jg mandibleL)) - (spawn (-> self part2) gp-4) - ) (suspend) - (ja :num! (seek!)) - ) - (let ((gp-5 (rand-vu-int-range 1 4))) - (set! (-> self anim-speed) (rand-vu-float-range 0.8 1.0)) - (dotimes (s5-1 gp-5) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! gnawer-chew-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) - (until (ja-done? 0) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! s4-1 (joint-node gnawer-lod0-jg nandibleR)) - (spawn (-> self part2) s4-1) - ) - (let ((s4-2 (new 'stack-no-clear 'vector))) - (vector<-cspace! s4-2 (joint-node gnawer-lod0-jg mandibleL)) - (spawn (-> self part2) s4-2) - ) - (update! (-> self sound2)) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - (stop! (-> self sound2)) - (ja-no-eval :group! gnawer-down-from-chew-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) - -(defstate gnawer-retreat-into-post (gnawer) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! gnawer-notice-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (quaternion-identity! (-> self root quat)) - (go gnawer-wait-to-run) - ) - :post transform-post - ) + (ja :num! (seek!))) + (quaternion-identity! (-> self root quat)) + (go gnawer-wait-to-run)) + :post transform-post) (defstate gnawer-wait-to-run (gnawer) - :code (behavior () - (set! (-> self draw origin-joint-index) (the-as uint 0)) - (gnawer-method-23 self) - (set-time! (-> self state-time)) - (let ((gp-0 (rand-vu-int-range 240 360))) - (until (time-elapsed? (-> self state-time) gp-0) - (suspend) - ) - ) - (go gnawer-run) - ) - ) + :code + (behavior () + (set! (-> self draw origin-joint-index) (the-as uint 0)) + (gnawer-method-23 self) + (set-time! (-> self state-time)) + (let ((gp-0 (rand-vu-int-range 240 360))) (until (time-elapsed? (-> self state-time) gp-0) (suspend))) + (go gnawer-run))) (defstate gnawer-run (gnawer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('touch) - (if (= (-> proc type) target) - (send-event - proc - 'shove - (-> block param 0) - (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))) - ) - ) - ) - (('attack) - (cond - ((= (-> proc type) target) - (send-event - proc - 'attack - (-> block param 0) - (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))) - ) - ) - (else - (if (not (time-elapsed? (-> self last-hit-time) (seconds 0.5))) - (return #f) - ) - (let* ((a2-1 (the-as object (-> block param 0))) - (v1-19 (-> (get-touched-prim - (-> (the-as touching-shapes-entry a2-1) head) - (-> self root) - (the-as touching-shapes-entry a2-1) - ) - prim-id - ) - ) - (v1-22 (-> self segments v1-19)) - ) - (spawn (-> self part) (-> v1-22 world-pos)) - ) - (if (gnawer-method-25 self) - (go gnawer-die) - ) - (return #t) - v0-0 - ) - ) - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self route-dist) 0.0) - (gnawer-method-24 self) - (set-time! (-> self last-hit-time)) - (gnawer-method-26 self) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (stop! (-> self sound)) - ) - :trans (behavior () - (+! (-> self route-dist) (* (-> self speed) (seconds-per-frame))) - (if (gnawer-method-22 self (-> self route-dist)) - (go gnawer-wait-to-run) - ) - (update! (-> self sound)) - ) - :code (behavior () - (local-vars (v1-19 symbol) (v1-35 symbol)) - (ja-channel-set! 1) - (ja :group! gnawer-run-ja :num! min) - (ja-no-eval :num! (seek!)) - (loop - (until v1-19 - (suspend) - (ja :num! (seek!)) - (set! v1-19 (or (ja-done? 0) (-> self show-damage?))) - ) - (when (-> self show-damage?) - (until (not (-> self show-damage?)) - (set! (-> self show-damage?) #f) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! gnawer-takes-hit-ja :num! min) - (until v1-35 - (suspend) - (ja :num! (seek!)) - (set! v1-35 (or (ja-done? 0) (-> self show-damage?))) - ) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('touch) + (if (= (-> proc type) target) + (send-event proc 'shove (-> block param 0) (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5))))))) + (('attack) + (cond + ((= (-> proc type) target) + (send-event proc 'attack (-> block param 0) (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))))) + (else + (if (not (time-elapsed? (-> self last-hit-time) (seconds 0.5))) (return #f)) + (let* ((a2-1 (the-as object (-> block param 0))) + (v1-19 (-> (get-touched-prim (-> (the-as touching-shapes-entry a2-1) head) (-> self root) (the-as touching-shapes-entry a2-1)) + prim-id)) + (v1-22 (-> self segments v1-19))) + (spawn (-> self part) (-> v1-22 world-pos))) + (if (gnawer-method-25 self) (go gnawer-die)) + (return #t) + v0-0))))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (set! (-> self route-dist) 0.0) + (gnawer-method-24 self) + (set-time! (-> self last-hit-time)) + (gnawer-method-26 self)) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (stop! (-> self sound))) + :trans + (behavior () + (+! (-> self route-dist) (* (-> self speed) (seconds-per-frame))) + (if (gnawer-method-22 self (-> self route-dist)) (go gnawer-wait-to-run)) + (update! (-> self sound))) + :code + (behavior () + (local-vars (v1-19 symbol) (v1-35 symbol)) + (ja-channel-set! 1) (ja :group! gnawer-run-ja :num! min) - ) - ) - :post transform-post - ) + (ja-no-eval :num! (seek!)) + (loop + (until v1-19 + (suspend) + (ja :num! (seek!)) + (set! v1-19 (or (ja-done? 0) (-> self show-damage?)))) + (when (-> self show-damage?) + (until (not (-> self show-damage?)) + (set! (-> self show-damage?) #f) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! gnawer-takes-hit-ja :num! min) + (until v1-35 + (suspend) + (ja :num! (seek!)) + (set! v1-35 (or (ja-done? 0) (-> self show-damage?))))) + (ja-channel-push! 1 (seconds 0.1))) + (ja :group! gnawer-run-ja :num! min))) + :post transform-post) (defstate gnawer-die (gnawer) - :enter (behavior () - (let ((v1-0 (-> self segments))) - (set! (-> self fall-trans quad) (-> v1-0 0 world-pos quad)) - (vector-! (-> self root transv) (-> v1-0 0 world-pos) (-> self post-trans)) - ) - (set! (-> self root transv y) 0.0) - (vector-normalize! (-> self root transv) 1.0) - (set! (-> self root transv y) 0.3) - (vector-normalize! (-> self root transv) 32768.0) - ) - :trans (behavior () - (+! (-> self root transv y) (* -409600.0 (seconds-per-frame))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self fall-trans quad)) - (vector-v+! (-> self fall-trans) (-> self fall-trans) (-> self root transv)) - (vector-! gp-0 (-> self fall-trans) gp-0) - (dotimes (v1-6 10) - (let ((a1-3 (-> self segments v1-6))) - (vector+! (-> a1-3 world-pos) (-> a1-3 world-pos) gp-0) - ) - ) - (vector+! (-> self root trans) (-> self root trans) gp-0) - ) - (spool-push *art-control* "maincavecam-gnawer-fuel-cell" 0 self -1.0) - ) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (ja-channel-push! 1 (seconds 0.1)) - (clear-collide-with-as (-> self root)) - (ja-no-eval :group! gnawer-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go gnawer-dying-give-pickups) - ) - :post ja-post - ) + :enter + (behavior () + (let ((v1-0 (-> self segments))) + (set! (-> self fall-trans quad) (-> v1-0 0 world-pos quad)) + (vector-! (-> self root transv) (-> v1-0 0 world-pos) (-> self post-trans))) + (set! (-> self root transv y) 0.0) + (vector-normalize! (-> self root transv) 1.0) + (set! (-> self root transv y) 0.3) + (vector-normalize! (-> self root transv) 32768.0)) + :trans + (behavior () + (+! (-> self root transv y) (* -409600.0 (seconds-per-frame))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self fall-trans quad)) + (vector-v+! (-> self fall-trans) (-> self fall-trans) (-> self root transv)) + (vector-! gp-0 (-> self fall-trans) gp-0) + (dotimes (v1-6 10) + (let ((a1-3 (-> self segments v1-6))) (vector+! (-> a1-3 world-pos) (-> a1-3 world-pos) gp-0))) + (vector+! (-> self root trans) (-> self root trans) gp-0)) + (spool-push *art-control* "maincavecam-gnawer-fuel-cell" 0 self -1.0)) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (ja-channel-push! 1 (seconds 0.1)) + (clear-collide-with-as (-> self root)) + (ja-no-eval :group! gnawer-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go gnawer-dying-give-pickups)) + :post ja-post) (defstate gnawer-dying-give-pickups (gnawer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (if (and (= (-> proc type) money) (= (-> block param 0) 'pickup)) - (gnawer-method-30 self (the-as process-drawable proc)) - ) - ) - ) - ) - :trans (behavior () - (spool-push *art-control* "maincavecam-gnawer-fuel-cell" 0 self -1.0) - ) - :code (behavior () - (local-vars (sv-128 symbol)) - (clear-collide-with-as (-> self root)) - (set! (-> self skel postbind-function) #f) - (ja-channel-set! 0) - (ja-post) - (logior! (-> self draw status) (draw-status hidden)) - (process-entity-status! self (entity-perm-status complete) #t) - (gnawer-method-27 self) - (let ((v1-10 (-> self entity extra perm))) - (logior! (-> v1-10 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-10 user-int16 0) (the-as int (-> self money-mask))) - ) - (dotimes (gp-0 (-> self path curve num-cverts)) - (let ((s4-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (gnawer-method-29 self gp-0 s4-0 s5-0) - (let ((a1-2 7)) - (let ((v1-14 (ash 1 gp-0))) - (cond - ((logtest? v1-14 (-> self eco-green-mask)) - (set! a1-2 4) - ) - ((logtest? v1-14 (-> self money-mask)) - (set! a1-2 5) - ) - ) - ) - (let ((v1-19 (birth-pickup-at-point s4-0 (the-as pickup-type a1-2) 1.0 #f self (the-as fact-info #f)))) - (send-event (ppointer->process v1-19) 'jump s5-0) - ) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.05)) - (suspend) - ) - ) - (set! sv-128 (the-as symbol #f)) - (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-128)) - (when sv-128 - (save-reminder (get-task-control (game-task cave-gnawers)) (-> self gnawer-id) 3) - (go gnawer-give-fuel-cell) - ) - (set! (-> self trans-hook) #f) - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - (until (not (-> self child)) - (suspend) - ) - (cleanup-for-death self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (if (and (= (-> proc type) money) (= (-> block param 0) 'pickup)) (gnawer-method-30 self (the-as process-drawable proc)))))) + :trans + (behavior () + (spool-push *art-control* "maincavecam-gnawer-fuel-cell" 0 self -1.0)) + :code + (behavior () + (local-vars (sv-128 symbol)) + (clear-collide-with-as (-> self root)) + (set! (-> self skel postbind-function) #f) + (ja-channel-set! 0) + (ja-post) + (logior! (-> self draw status) (draw-status hidden)) + (process-entity-status! self (entity-perm-status complete) #t) + (gnawer-method-27 self) + (let ((v1-10 (-> self entity extra perm))) + (logior! (-> v1-10 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-10 user-int16 0) (the-as int (-> self money-mask)))) + (dotimes (gp-0 (-> self path curve num-cverts)) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (gnawer-method-29 self gp-0 s4-0 s5-0) + (let ((a1-2 7)) + (let ((v1-14 (ash 1 gp-0))) + (cond + ((logtest? v1-14 (-> self eco-green-mask)) (set! a1-2 4)) + ((logtest? v1-14 (-> self money-mask)) (set! a1-2 5)))) + (let ((v1-19 (birth-pickup-at-point s4-0 (the-as pickup-type a1-2) 1.0 #f self (the-as fact-info #f)))) + (send-event (ppointer->process v1-19) 'jump s5-0)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.05)) + (suspend))) + (set! sv-128 (the-as symbol #f)) + (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-128)) + (when sv-128 + (save-reminder (get-task-control (game-task cave-gnawers)) (-> self gnawer-id) 3) + (go gnawer-give-fuel-cell)) + (set! (-> self trans-hook) #f) + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause)) + (until (not (-> self child)) + (suspend)) + (cleanup-for-death self))) (defstate gnawer-give-fuel-cell (gnawer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (cond - ((and (= (-> proc type) maincavecam) (= (-> block param 0) 'die)) - (process-entity-status! self (entity-perm-status bit-3) #f) - (let ((v0-0 (the-as uint (logior (-> self mask) (process-mask actor-pause))))) - (set! (-> self mask) (the-as process-mask v0-0)) - v0-0 - ) - ) - ((and (= (-> proc type) money) (= (-> block param 0) 'pickup)) - (gnawer-method-30 self (the-as process-drawable proc)) - ) - ) - ) - ) - ) - :code (behavior () - (when (not (task-complete? *game-info* (-> self entity extra perm task))) - (spool-push *art-control* "maincavecam-gnawer-fuel-cell" 0 self -1.0) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set-vector! gp-0 4503813.0 46363.85 -12796366.0 1.0) - (let ((s5-0 (the-as maincavecam (get-process *default-dead-pool* maincavecam #x4000)))) - (set! (-> (the-as - maincavecam - (-> (when s5-0 - (let ((t9-4 (method-of-type maincavecam activate))) - (t9-4 s5-0 self 'maincavecam (the-as pointer #x70004000)) - ) - (run-now-in-process - s5-0 - pov-camera-init-by-other - gp-0 - *maincavecam-sg* - (new 'static 'spool-anim :name "maincavecam-gnawer-fuel-cell" :index 3 :parts 1 :command-list '()) - 0 - self - '() - ) - (-> s5-0 ppointer) - ) - 0 - ) - ) - seq - ) - (the-as uint 0) - ) - ) - ) - 0 - (sound-play "cell-prize") - (until (not (-> self child)) - (suspend) - ) - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - (cleanup-for-death self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (cond + ((and (= (-> proc type) maincavecam) (= (-> block param 0) 'die)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (let ((v0-0 (the-as uint (logior (-> self mask) (process-mask actor-pause))))) + (set! (-> self mask) (the-as process-mask v0-0)) + v0-0)) + ((and (= (-> proc type) money) (= (-> block param 0) 'pickup)) (gnawer-method-30 self (the-as process-drawable proc))))))) + :code + (behavior () + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (spool-push *art-control* "maincavecam-gnawer-fuel-cell" 0 self -1.0) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set-vector! gp-0 4503813.0 46363.85 -12796366.0 1.0) + (let ((s5-0 (the-as maincavecam (get-process *default-dead-pool* maincavecam #x4000)))) + (set! (-> (the-as maincavecam + (-> (when s5-0 + (let ((t9-4 (method-of-type maincavecam activate))) (t9-4 s5-0 self 'maincavecam (the-as pointer #x70004000))) + (run-now-in-process s5-0 + pov-camera-init-by-other + gp-0 + *maincavecam-sg* + (new 'static 'spool-anim :name "maincavecam-gnawer-fuel-cell" :index 3 :parts 1 :command-list '()) + 0 + self + '()) + (-> s5-0 ppointer)) + 0)) + seq) + (the-as uint 0)))) + 0 + (sound-play "cell-prize") + (until (not (-> self child)) + (suspend))) + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause)) + (cleanup-for-death self))) (defstate gnawer-put-items-at-dest (gnawer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (if (and (= (-> proc type) money) (= (-> block param 0) 'pickup)) - (gnawer-method-30 self (the-as process-drawable proc)) - ) - ) - ) - ) - :code (behavior () - (set! (-> self draw origin-joint-index) (the-as uint 0)) - (clear-collide-with-as (-> self root)) - (set! (-> self skel postbind-function) #f) - (ja-channel-set! 0) - (ja-post) - (logior! (-> self draw status) (draw-status hidden)) - (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))) - (let ((a0-7 (new 'stack-no-clear 'vector))) - (set-vector! a0-7 4485903.0 51184.027 -12815461.0 1.0) - (birth-pickup-at-point - a0-7 - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - ) - ) - ) - (let ((gp-0 (-> self entity extra perm user-uint16 0))) - (when (nonzero? gp-0) - (let ((s5-0 (-> self path curve num-cverts))) - (dotimes (s4-0 s5-0) - (when (logtest? (ash 1 s4-0) gp-0) - (let ((a2-1 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) - (gnawer-method-29 self s4-0 a2-1 s3-0) - (birth-pickup-at-point s3-0 (pickup-type money) 1.0 #f self (the-as fact-info #f)) - ) - ) - ) - ) - ) - ) - (until (not (-> self child)) - (suspend) - ) - (cleanup-for-death self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (if (and (= (-> proc type) money) (= (-> block param 0) 'pickup)) (gnawer-method-30 self (the-as process-drawable proc)))))) + :code + (behavior () + (set! (-> self draw origin-joint-index) (the-as uint 0)) + (clear-collide-with-as (-> self root)) + (set! (-> self skel postbind-function) #f) + (ja-channel-set! 0) + (ja-post) + (logior! (-> self draw status) (draw-status hidden)) + (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))) + (let ((a0-7 (new 'stack-no-clear 'vector))) + (set-vector! a0-7 4485903.0 51184.027 -12815461.0 1.0) + (birth-pickup-at-point a0-7 + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f)))))) + (let ((gp-0 (-> self entity extra perm user-uint16 0))) + (when (nonzero? gp-0) + (let ((s5-0 (-> self path curve num-cverts))) + (dotimes (s4-0 s5-0) + (when (logtest? (ash 1 s4-0) gp-0) + (let ((a2-1 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'vector))) + (gnawer-method-29 self s4-0 a2-1 s3-0) + (birth-pickup-at-point s3-0 (pickup-type money) 1.0 #f self (the-as fact-info #f)))))))) + (until (not (-> self child)) + (suspend)) + (cleanup-for-death self))) (defun gnawer-joint-callback ((arg0 gnawer)) (dotimes (s5-0 10) (let* ((v1-1 (-> *gnawer-segment-infos* s5-0)) (s4-0 (-> arg0 segments s5-0)) - (s3-0 (-> v1-1 joint-index)) - ) + (s3-0 (-> v1-1 joint-index))) (countdown (s2-0 (-> v1-1 num-joints)) (let ((s1-0 (-> arg0 node-list data (-> s3-0 0) bone transform))) (vector-! (-> s1-0 vector 3) (-> s1-0 vector 3) (-> arg0 root trans)) (vector+! (-> s1-0 vector 3) (-> s1-0 vector 3) (-> s4-0 anim-to-local-trans-offset)) (matrix*! s1-0 s1-0 (-> s4-0 orient-mat)) - (vector+! (-> s1-0 vector 3) (-> s1-0 vector 3) (-> s4-0 world-pos)) - ) - (set! s3-0 (&-> s3-0 1)) - ) - ) - ) + (vector+! (-> s1-0 vector 3) (-> s1-0 vector 3) (-> s4-0 world-pos))) + (set! s3-0 (&-> s3-0 1))))) 0 - (none) - ) + (none)) (defmethod deactivate ((this gnawer)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this sound2)) - (stop! (-> this sound2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this sound2)) (stop! (-> this sound2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this gnawer) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this sound2)) - (&+! (-> this sound2) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this sound2)) (&+! (-> this sound2) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this gnawer) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-32 res-tag) (sv-48 res-tag)) @@ -1324,91 +968,76 @@ (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 13) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 -409.6 1228.8 6144.0) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4)))) (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set! (-> s2-3 transform-index) 8) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 5)))) (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-4 collide-with) (collide-kind target)) (set! (-> s2-4 prim-core offense) (collide-offense no-offense)) (set! (-> s2-4 transform-index) 9) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-4) - ) + (append-prim s3-0 s2-4)) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 6)))) (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-5 collide-with) (collide-kind target)) (set! (-> s2-5 prim-core offense) (collide-offense no-offense)) (set! (-> s2-5 transform-index) 10) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-5) - ) + (append-prim s3-0 s2-5)) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 7)))) (set! (-> s2-6 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-6 collide-with) (collide-kind target)) (set! (-> s2-6 prim-core offense) (collide-offense no-offense)) (set! (-> s2-6 transform-index) 11) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-6) - ) + (append-prim s3-0 s2-6)) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 7)))) (set! (-> s2-7 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-7 collide-with) (collide-kind target)) (set! (-> s2-7 prim-core offense) (collide-offense no-offense)) (set! (-> s2-7 transform-index) 12) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 6144.0) - (append-prim s3-0 s2-7) - ) - ) + (append-prim s3-0 s2-7))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (quaternion-identity! (-> this root quat)) (initialize-skeleton this *gnawer-sg* '()) (set! (-> this draw origin-joint-index) (the-as uint 8)) (set! (-> this post-trans quad) (-> this root trans quad)) (let ((f0-40 (res-lump-float (-> this entity) 'rotoffset))) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-40) - ) + (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-40)) (+! (-> this root trans y) -2048.0) (set! sv-16 (new 'static 'res-tag)) (let ((v1-81 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) (when v1-81 (+! (-> this root trans x) (-> v1-81 0)) (+! (-> this root trans y) (-> v1-81 1)) - (+! (-> this root trans z) (-> v1-81 2)) - ) - ) + (+! (-> this root trans z) (-> v1-81 2)))) (set! (-> this path) (new 'process 'curve-control this 'path -1000000000.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (if (< (-> this path curve num-cverts) 2) - (go process-drawable-art-error "bad path") - ) + (if (< (-> this path curve num-cverts) 2) (go process-drawable-art-error "bad path")) (set! (-> this part2) (create-launch-control (-> *part-group-id-table* 330) this)) (set! (-> this total-money) 0) (set! (-> this money-mask) (the-as uint 0)) @@ -1416,53 +1045,31 @@ (let ((v1-96 (res-lump-data arg0 'extra-count (pointer int32) :tag-ptr (& sv-32)))) (when v1-96 (case (-> v1-96 0) - ((5) - (set! (-> this total-money) (-> v1-96 1)) - ) - ) - ) - ) + ((5) (set! (-> this total-money) (-> v1-96 1)))))) (when (> (-> this total-money) 0) (set! sv-48 (new 'static 'res-tag)) (let ((a0-49 (res-lump-data arg0 'gnawer (pointer int32) :tag-ptr (& sv-48)))) (cond (a0-49 - (let ((v1-100 0)) - (dotimes (a1-30 (-> this total-money)) - (let ((a3-15 (-> a0-49 a1-30))) - (set! v1-100 (logior v1-100 (ash 1 a3-15))) - ) - ) - (set! (-> this money-mask) (the-as uint v1-100)) - ) - ) - (else - (go process-drawable-art-error "bad actor params") - ) - ) - ) - ) + (let ((v1-100 0)) + (dotimes (a1-30 (-> this total-money)) + (let ((a3-15 (-> a0-49 a1-30))) (set! v1-100 (logior v1-100 (ash 1 a3-15))))) + (set! (-> this money-mask) (the-as uint v1-100)))) + (else (go process-drawable-art-error "bad actor params"))))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 329) this)) (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "gnawer-crawl" :fo-min 30 :fo-max 30) (-> this root trans)) - ) - (set! (-> this sound2) - (new 'process 'ambient-sound (static-sound-spec "gnawer-chew" :fo-max 40) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "gnawer-crawl" :fo-min 30 :fo-max 30) (-> this root trans))) + (set! (-> this sound2) (new 'process 'ambient-sound (static-sound-spec "gnawer-chew" :fo-max 40) (-> this root trans))) (dotimes (v1-110 10) (let ((a0-59 (-> this segments v1-110))) (set! (-> a0-59 place) v1-110) (set! (-> a0-59 world-pos quad) (-> this post-trans quad)) (vector-reset! (-> a0-59 anim-to-local-trans-offset)) - (+! (-> a0-59 anim-to-local-trans-offset z) (* 5447.68 (the float v1-110))) - ) - ) + (+! (-> a0-59 anim-to-local-trans-offset z) (* 5447.68 (the float v1-110))))) (logior! (-> this skel status) (janim-status inited)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this gnawer-id) (+ (actor-count-before (-> this link)) 1)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go gnawer-put-items-at-dest) - (go gnawer-chewing-on-post) - ) - (none) - ) + (go gnawer-put-items-at-dest) + (go gnawer-chewing-on-post)) + (none)) diff --git a/goal_src/jak1/levels/maincave/maincave-obs.gc b/goal_src/jak1/levels/maincave/maincave-obs.gc index a30dd379b2..13932d67c5 100644 --- a/goal_src/jak1/levels/maincave/maincave-obs.gc +++ b/goal_src/jak1/levels/maincave/maincave-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "levels/maincave/cavecrystal-light.gc") (require "engine/util/sync-info.gc") (require "engine/geometry/path-h.gc") @@ -9,147 +8,106 @@ (require "engine/common-obs/water-anim.gc") (require "engine/camera/pov-camera-h.gc") -;; name: maincave-obs.gc -;; name in dgo: maincave-obs -;; dgos: L1, MAI, MAINCAVE - ;; DECOMP BEGINS (deftype maincavecam (pov-camera) - ((seq uint64) - ) - ) - + ((seq uint64))) -(defskelgroup *maincavecam-sg* maincavecam maincavecam-lod0-jg -1 - ((maincavecam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *maincavecam-sg* + maincavecam + maincavecam-lod0-jg + -1 + ((maincavecam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defmethod set-stack-size! ((this maincavecam)) (stack-size-set! (-> this main-thread) 512) - (none) - ) + (none)) (defstate pov-camera-playing (maincavecam) :virtual #t - :code (behavior () - (cond - ((zero? (-> self seq)) - (let ((gp-1 - (ppointer->handle - (process-spawn - fuel-cell - :init fuel-cell-init-as-clone - (process->handle self) - (-> self entity extra perm task) - :to (ppointer->process (-> self parent)) - ) - ) - ) - ) - (ja-play-spooled-anim - (new 'static 'spool-anim :name "maincavecam-gnawer-fuel-cell" :index 3 :parts 1 :command-list '()) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (let ((a0-7 (handle->process gp-1))) - (if a0-7 - (send-event a0-7 'stop-cloning) - ) - ) - ) - ) - (else - (suspend) - 0 - ) - ) - (go-virtual pov-camera-done-playing) - ) - ) - -(deftype cave-water (water-anim) - () - ) - - -(define ripple-for-cave-water (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) + :code + (behavior () + (cond + ((zero? (-> self seq)) + (let ((gp-1 (ppointer->handle (process-spawn fuel-cell + :init + fuel-cell-init-as-clone + (process->handle self) + (-> self entity extra perm task) + :to + (ppointer->process (-> self parent)))))) + (ja-play-spooled-anim (new 'static 'spool-anim :name "maincavecam-gnawer-fuel-cell" :index 3 :parts 1 :command-list '()) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (let ((a0-7 (handle->process gp-1))) (if a0-7 (send-event a0-7 'stop-cloning))))) + (else (suspend) 0)) + (go-virtual pov-camera-done-playing))) + +(deftype cave-water (water-anim) ()) + +(define ripple-for-cave-water + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this cave-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set! (-> v1-2 global-scale) 3072.0) (set! (-> v1-2 close-fade-dist) 163840.0) (set! (-> v1-2 far-fade-dist) 245760.0) - (set! (-> v1-2 waveform) ripple-for-cave-water) - ) + (set! (-> v1-2 waveform) ripple-for-cave-water)) (case (-> this look) - ((37 14) - (set-vector! (-> this draw color-mult) 0.2 0.1 0.3 0.75) - ) - ) - (none) - ) + ((37 14) (set-vector! (-> this draw color-mult) 0.2 0.1 0.3 0.75))) + (none)) (deftype cavecrusher (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:states - cavecrusher-idle - ) - ) + cavecrusher-idle)) - -(defskelgroup *cavecrusher-sg* cavecrusher cavecrusher-lod0-jg -1 - ((cavecrusher-lod0-mg (meters 20)) (cavecrusher-lod1-mg (meters 40)) (cavecrusher-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *cavecrusher-sg* + cavecrusher + cavecrusher-lod0-jg + -1 + ((cavecrusher-lod0-mg (meters 20)) (cavecrusher-lod1-mg (meters 40)) (cavecrusher-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (defstate cavecrusher-idle (cavecrusher) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (if ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> block param 0)) - (-> *target* control) - (collide-action solid) - (collide-action) - ) - (target-attack-up *target* 'attack-or-shove 'deadlyup) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! cavecrusher-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (update! (-> self sound)) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (if ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry (-> block param 0)) + (-> *target* control) + (collide-action solid) + (collide-action)) + (target-attack-up *target* 'attack-or-shove 'deadlyup)))))) + :code + (behavior () + (loop + (ja-no-eval :group! cavecrusher-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (update! (-> self sound)) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this cavecrusher) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -160,146 +118,108 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) - (set-root-prim! s4-0 s3-0) - ) + (set-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *cavecrusher-sg* '()) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "crush-click" :fo-max 30) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "crush-click" :fo-max 30) (-> this root trans))) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 4)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 4)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (go cavecrusher-idle) - (none) - ) + (none)) (deftype cavetrapdoor (process-drawable) - ((root collide-shape-moving :override) - (delay-before-wiggle int32) - ) + ((root collide-shape-moving :override) + (delay-before-wiggle int32)) (:state-methods - idle - trigger - ) - ) + idle + trigger)) - -(defskelgroup *cavetrapdoor-sg* cavetrapdoor cavetrapdoor-lod0-jg -1 - ((cavetrapdoor-lod0-mg (meters 20)) (cavetrapdoor-lod1-mg (meters 40)) (cavetrapdoor-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :longest-edge (meters 5.7) - ) +(defskelgroup *cavetrapdoor-sg* + cavetrapdoor + cavetrapdoor-lod0-jg + -1 + ((cavetrapdoor-lod0-mg (meters 20)) (cavetrapdoor-lod1-mg (meters 40)) (cavetrapdoor-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 5.7)) (defstate idle (cavetrapdoor) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when (= (-> proc type) target) - (when (>= (- (-> (target-pos 0) y) (-> self root trans y)) 409.6) - (send-event proc 'no-look-around (seconds 1.5)) - (go-virtual trigger) - ) - ) - ) - ) - ) - :code (behavior () - (ja-no-eval :group! cavetrapdoor-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (transform-post) - (suspend) - (ja :num! (seek!)) - ) - (anim-loop) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when (= (-> proc type) target) + (when (>= (- (-> (target-pos 0) y) (-> self root trans y)) 409.6) + (send-event proc 'no-look-around (seconds 1.5)) + (go-virtual trigger)))))) + :code + (behavior () + (ja-no-eval :group! cavetrapdoor-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (transform-post) + (suspend) + (ja :num! (seek!))) + (anim-loop))) (defstate trigger (cavetrapdoor) :virtual #t - :code (behavior () - (when (nonzero? (-> self delay-before-wiggle)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (-> self delay-before-wiggle)) + :code + (behavior () + (when (nonzero? (-> self delay-before-wiggle)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (-> self delay-before-wiggle)) + (suspend))) + (ja-no-eval :group! cavetrapdoor-bob-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! cavetrapdoor-bob-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (clear-collide-with-as (-> self root)) - (ja-no-eval :group! cavetrapdoor-swing-ja :num! (seek! (ja-aframe 290.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 290.0 0))) - ) - (restore-collide-with-as (-> self root)) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (until (or (or (not *target*) (< 28672.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - (not (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-cam))) - ) - ) - (ja-no-eval :group! cavetrapdoor-idle-down-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!))) + (clear-collide-with-as (-> self root)) + (ja-no-eval :group! cavetrapdoor-swing-ja :num! (seek! (ja-aframe 290.0 0)) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (label cfg-14) - ) - (ja-no-eval :group! cavetrapdoor-reset-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (and *target* (>= 28672.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (or (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-cam)) - ) - ) - (while (not (ja-min? 0)) + (ja :num! (seek! (ja-aframe 290.0 0)))) + (restore-collide-with-as (-> self root)) + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (until (or (or (not *target*) (< 28672.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))))) + (not (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-cam))))) + (ja-no-eval :group! cavetrapdoor-idle-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - (ja :num! (seek! 0.0)) - ) - (goto cfg-14) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual idle) - ) - :post pusher-post - ) + (ja :num! (seek!))) + (label cfg-14)) + (ja-no-eval :group! cavetrapdoor-reset-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (and *target* (>= 28672.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (or (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (logtest? (-> *target* control root-prim prim-core action) (collide-action edgegrab-cam)))) + (while (not (ja-min? 0)) + (suspend) + (ja :num! (seek! 0.0))) + (goto cfg-14)) + (suspend) + (ja :num! (seek!))) + (go-virtual idle)) + :post pusher-post) (defmethod init-from-entity! ((this cavetrapdoor) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -308,198 +228,140 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 9830.4 10240.0 0.0 17203.2) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *cavetrapdoor-sg* '()) (ja-channel-push! 1 0) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 4)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 4)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (let ((f0-7 (quaternion-y-angle (-> this root quat))) - (s4-2 (-> this draw bounds)) - ) + (s4-2 (-> this draw bounds))) (set-vector! s4-2 0.0 -8192.0 4096.0 1.0) (vector-rotate-around-y! s4-2 s4-2 f0-7) - (set! (-> s4-2 w) 25600.0) - ) + (set! (-> s4-2 w) 25600.0)) (set! (-> this delay-before-wiggle) (the int (* 300.0 (res-lump-float arg0 'delay)))) - (create-connection! - *cavecrystal-light-control* - this - (-> this entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - -1 - 8192.0 - ) + (create-connection! *cavecrystal-light-control* + this + (-> this entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + -1 + 8192.0) (go (method-of-object this idle)) - (none) - ) + (none)) (deftype caveflamepots (process-drawable) - ((root collide-shape :override) - (shove-up float) - (cycle-speed int32) - (cycle-pause int32) - (cycle-offset uint32) - (was-deadly? symbol) - (should-play-sound? symbol) - (launch-pos vector 2 :inline) - ) + ((root collide-shape :override) + (shove-up float) + (cycle-speed int32) + (cycle-pause int32) + (cycle-offset uint32) + (was-deadly? symbol) + (should-play-sound? symbol) + (launch-pos vector 2 :inline)) (:states - caveflamepots-active - ) - ) - + caveflamepots-active)) (defpart 704 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:rot-z (degrees -180) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.01)) - (:scalevel-x (meters -0.0039999997)) - (:rotvel-z (degrees -1.8) (degrees 1.8)) - (:scalevel-y :copy scalevel-x) - (:fade-g -1.28) - (:fade-a -0.85333335) - (:accel-y (meters -0.0006)) - (:timer (seconds 16.68)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:rot-z (degrees -180) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.01)) + (:scalevel-x (meters -0.0039999997)) + (:rotvel-z (degrees -1.8) (degrees 1.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.28) + (:fade-a -0.85333335) + (:accel-y (meters -0.0006)) + (:timer (seconds 16.68)) + (:flags (bit2 bit3)))) (defpart 705 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:rot-z (degrees -180) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.01)) - (:scalevel-x (meters -0.0039999997)) - (:rotvel-z (degrees -1.8) (degrees 1.8)) - (:scalevel-y :copy scalevel-x) - (:fade-g -1.28) - (:fade-a -0.85333335) - (:accel-y (meters -0.0006)) - (:timer (seconds 16.68)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:rot-z (degrees -180) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.01)) + (:scalevel-x (meters -0.0039999997)) + (:rotvel-z (degrees -1.8) (degrees 1.8)) + (:scalevel-y :copy scalevel-x) + (:fade-g -1.28) + (:fade-a -0.85333335) + (:accel-y (meters -0.0006)) + (:timer (seconds 16.68)) + (:flags (bit2 bit3)))) (defstate caveflamepots-active (caveflamepots) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (when ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> block param 0)) - (-> *target* control) - (collide-action solid) - (collide-action) - ) - (let ((s4-0 (new 'stack 'attack-info))) - (calc-shove-up (-> self root) s4-0 (-> self shove-up)) - (if (or (= (-> *target* control unknown-surface00 mode) 'air) - (>= (+ (current-time) (seconds -0.2)) (-> *target* control unknown-dword11)) - (< 0.75 (-> *target* control poly-normal y)) - ) - (send-event - proc - 'attack-or-shove - (-> block param 0) - (static-attack-info ((mode 'burn) (vector (-> s4-0 vector)) (shove-up (-> s4-0 shove-up)))) - ) - (send-event - proc - 'attack-or-shove - (-> block param 0) - (static-attack-info ((mode 'burn) - (shove-up (meters 0)) - (shove-back (meters 2)) - (vector (-> *target* control poly-normal)) - (angle 'shove) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :trans (behavior () - (let* ((v1-0 (-> self cycle-speed)) - (a0-1 (- v1-0 (-> self cycle-pause))) - (gp-0 (mod (+ (current-time) (the-as time-frame (-> self cycle-offset))) v1-0)) - ) - (cond - ((< gp-0 a0-1) - (when (sphere-in-view-frustum? (the-as sphere (-> self root root-prim prim-core))) - (launch-particles (-> *part-id-table* 704) (the-as vector (-> self launch-pos))) - (launch-particles (-> *part-id-table* 705) (the-as vector (&-> self stack 112))) - ) - (when (-> self should-play-sound?) - (set! (-> self should-play-sound?) #f) - (sound-play "hot-flame") - ) - (cond - ((< gp-0 30) - (when (-> self was-deadly?) - (set! (-> self was-deadly?) #f) - (clear-collide-with-as (-> self root)) - ) - ) - (else - (when (not (-> self was-deadly?)) - (set! (-> self was-deadly?) #t) - (restore-collide-with-as (-> self root)) - ) - ) - ) - (when (and (not (-> self was-deadly?)) (< 60 gp-0)) - (set! (-> self was-deadly?) #t) - (restore-collide-with-as (-> self root)) - ) - ) - (else - (set! (-> self should-play-sound?) #t) - (when (-> self was-deadly?) - (set! (-> self was-deadly?) #f) - (clear-collide-with-as (-> self root)) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (when ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry (-> block param 0)) + (-> *target* control) + (collide-action solid) + (collide-action)) + (let ((s4-0 (new 'stack 'attack-info))) + (calc-shove-up (-> self root) s4-0 (-> self shove-up)) + (if (or (= (-> *target* control unknown-surface00 mode) 'air) + (>= (+ (current-time) (seconds -0.2)) (-> *target* control unknown-dword11)) + (< 0.75 (-> *target* control poly-normal y))) + (send-event proc + 'attack-or-shove + (-> block param 0) + (static-attack-info ((mode 'burn) (vector (-> s4-0 vector)) (shove-up (-> s4-0 shove-up))))) + (send-event proc + 'attack-or-shove + (-> block param 0) + (static-attack-info ((mode 'burn) (shove-up (meters 0)) (shove-back (meters 2)) (vector (-> *target* control poly-normal)) (angle 'shove))))))))))) + :trans + (behavior () + (let* ((v1-0 (-> self cycle-speed)) + (a0-1 (- v1-0 (-> self cycle-pause))) + (gp-0 (mod (+ (current-time) (the-as time-frame (-> self cycle-offset))) v1-0))) + (cond + ((< gp-0 a0-1) + (when (sphere-in-view-frustum? (the-as sphere (-> self root root-prim prim-core))) + (launch-particles (-> *part-id-table* 704) (the-as vector (-> self launch-pos))) + (launch-particles (-> *part-id-table* 705) (the-as vector (&-> self stack 112)))) + (when (-> self should-play-sound?) + (set! (-> self should-play-sound?) #f) + (sound-play "hot-flame")) + (cond + ((< gp-0 30) (when (-> self was-deadly?) (set! (-> self was-deadly?) #f) (clear-collide-with-as (-> self root)))) + (else (when (not (-> self was-deadly?)) (set! (-> self was-deadly?) #t) (restore-collide-with-as (-> self root))))) + (when (and (not (-> self was-deadly?)) (< 60 gp-0)) + (set! (-> self was-deadly?) #t) + (restore-collide-with-as (-> self root)))) + (else + (set! (-> self should-play-sound?) #t) + (when (-> self was-deadly?) + (set! (-> self was-deadly?) #f) + (clear-collide-with-as (-> self root))))))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this caveflamepots) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-32 res-tag) (sv-48 res-tag)) @@ -521,159 +383,111 @@ (set! (-> s2-0 collide-with) (collide-kind target)) (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-0 local-sphere) 4915.2 8192.0 0.0 3686.4) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-1 local-sphere) 4915.2 14336.0 0.0 3276.8) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-2 local-sphere) -4915.2 8192.0 0.0 3686.4) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-3 local-sphere) -4915.2 14336.0 0.0 3276.8) - (append-prim s3-0 s2-3) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (let ((v1-42 (new 'process 'path-control this 'path 0.0))) (set! (-> this path) v1-42) (logior! (-> v1-42 flags) (path-control-flag display draw-line draw-point draw-text)) - (if (<= (-> v1-42 curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) - ) + (if (<= (-> v1-42 curve num-cverts) 0) (go process-drawable-art-error "no path"))) (let ((f0-23 (res-lump-float arg0 'rotoffset))) - (if (!= f0-23 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-23) - ) - ) + (if (!= f0-23 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-23))) (let ((f30-0 (quaternion-y-angle (-> this root quat)))) (let ((s4-1 (-> this launch-pos))) (let ((v1-53 s4-1)) (set! (-> v1-53 0 x) 6144.0) (set! (-> v1-53 0 y) 0.0) (set! (-> v1-53 0 z) 0.0) - (set! (-> v1-53 0 w) 1.0) - ) + (set! (-> v1-53 0 w) 1.0)) (vector-rotate-around-y! (the-as vector s4-1) (the-as vector s4-1) f30-0) - (vector+! (the-as vector s4-1) (the-as vector s4-1) (-> this root trans)) - ) + (vector+! (the-as vector s4-1) (the-as vector s4-1) (-> this root trans))) (let ((s4-2 (the-as object (&-> this stack 112)))) (set-vector! (the-as vector s4-2) -6144.0 0.0 0.0 1.0) (vector-rotate-around-y! (the-as vector s4-2) (the-as vector s4-2) f30-0) - (vector+! (the-as vector s4-2) (the-as vector s4-2) (-> this root trans)) - ) + (vector+! (the-as vector s4-2) (the-as vector s4-2) (-> this root trans))) (let ((s4-3 (-> this root root-prim))) (dotimes (s3-1 (-> (the-as collide-shape-prim-group s4-3) num-prims)) (let ((a1-19 (-> (the-as collide-shape-prim-group s4-3) prims s3-1 local-sphere))) - (vector-rotate-around-y! a1-19 a1-19 f30-0) - ) - ) - ) - ) + (vector-rotate-around-y! a1-19 a1-19 f30-0))))) (update-transforms! (-> this root)) (let ((f30-1 300.0)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-70 (res-lump-data arg0 'cycle-speed (pointer float) :tag-ptr (& sv-16)))) - (set! (-> this cycle-speed) (the int (* f30-1 (if (and v1-70 (> (the-as int (-> sv-16 elt-count)) 0)) - (-> v1-70 0) - 4.0 - ) - ) - ) - ) - ) - ) + (set! (-> this cycle-speed) + (the int (* f30-1 (if (and v1-70 (> (the-as int (-> sv-16 elt-count)) 0)) (-> v1-70 0) 4.0)))))) (let ((f30-2 (the float (-> this cycle-speed)))) (set! sv-32 (new 'static 'res-tag)) (let ((v1-74 (res-lump-data arg0 'cycle-speed (pointer float) :tag-ptr (& sv-32)))) (set! (-> this cycle-offset) - (the-as uint (the int (* f30-2 (if (and v1-74 (< 1 (the-as int (-> sv-32 elt-count)))) - (-> v1-74 1) - 0.0 - ) - ) - ) - ) - ) - ) - ) + (the-as uint (the int (* f30-2 (if (and v1-74 (< 1 (the-as int (-> sv-32 elt-count)))) (-> v1-74 1) 0.0))))))) (let ((f30-3 300.0)) (set! sv-48 (new 'static 'res-tag)) (let ((v1-77 (res-lump-data arg0 'cycle-speed (pointer float) :tag-ptr (& sv-48)))) - (set! (-> this cycle-pause) (the int (* f30-3 (if (and v1-77 (< 2 (the-as int (-> sv-48 elt-count)))) - (-> v1-77 2) - 2.0 - ) - ) - ) - ) - ) - ) + (set! (-> this cycle-pause) + (the int (* f30-3 (if (and v1-77 (< 2 (the-as int (-> sv-48 elt-count)))) (-> v1-77 2) 2.0)))))) (go caveflamepots-active) - (none) - ) + (none)) (deftype cavespatula (process-drawable) - ((root collide-shape-moving :override) - (sync sync-info :inline) - ) + ((root collide-shape-moving :override) + (sync sync-info :inline)) (:states - cavespatula-idle - ) - ) - + cavespatula-idle)) -(defskelgroup *cavespatula-sg* cavespatula 0 -1 - ((1 (meters 20)) (2 (meters 999999))) - :bounds (static-spherem 0 -1 0 18) - ) +(defskelgroup *cavespatula-sg* + cavespatula + 0 + -1 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 -1 0 18)) -(defskelgroup *cavespatula-darkcave-sg* cavespatula-darkcave cavespatula-darkcave-lod0-jg -1 - ((cavespatula-darkcave-lod0-mg (meters 20)) (cavespatula-darkcave-lod1-mg (meters 999999))) - :bounds (static-spherem 0 -1 0 18) - ) +(defskelgroup *cavespatula-darkcave-sg* + cavespatula-darkcave + cavespatula-darkcave-lod0-jg + -1 + ((cavespatula-darkcave-lod0-mg (meters 20)) (cavespatula-darkcave-lod1-mg (meters 999999))) + :bounds (static-spherem 0 -1 0 18)) (defstate cavespatula-idle (cavespatula) - :trans (behavior () - (rider-trans) - (update! (-> self sound)) - (let ((f0-0 (get-current-phase (-> self sync)))) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (* -65536.0 f0-0)) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post rider-post - ) + :trans + (behavior () + (rider-trans) + (update! (-> self sound)) + (let ((f0-0 (get-current-phase (-> self sync)))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (* -65536.0 f0-0)))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this cavespatula) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -682,104 +496,73 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 -8192.0 0.0 67584.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "spatula" :fo-min 25 :fo-max 50) (-> this root trans)) - ) - (case (-> (if (-> this entity) - (-> this entity extra level) - (-> *level* level-default) - ) - name - ) + (new 'process 'ambient-sound (static-sound-spec "spatula" :fo-min 25 :fo-max 50) (-> this root trans))) + (case (-> (if (-> this entity) (-> this entity extra level) (-> *level* level-default)) name) (('darkcave) (initialize-skeleton this *cavespatula-darkcave-sg* '()) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0))) (else - (initialize-skeleton this *cavespatula-sg* '()) - (ja-channel-push! 1 0) - (let ((s5-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-2 frame-num) 0.0) - ) - ) - ) + (initialize-skeleton this *cavespatula-sg* '()) + (ja-channel-push! 1 0) + (let ((s5-2 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-2 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-2 frame-num) 0.0)))) (logior! (-> this skel status) (janim-status inited)) (load-params! (-> this sync) this (the-as uint 3000) 0.0 0.15 0.15) (ja-post) (update-transforms! (-> this root)) - (create-connection! - *cavecrystal-light-control* - this - (-> this entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - -1 - 32768.0 - ) + (create-connection! *cavecrystal-light-control* + this + (-> this entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + -1 + 32768.0) (go cavespatula-idle) - (none) - ) + (none)) (deftype cavespatulatwo (process-drawable) - ((root collide-shape-moving :override) - (sync sync-info :inline) - ) + ((root collide-shape-moving :override) + (sync sync-info :inline)) (:states - cavespatulatwo-idle - ) - ) + cavespatulatwo-idle)) - -(defskelgroup *cavespatulatwo-sg* cavespatulatwo cavespatulatwo-lod0-jg -1 - ((cavespatulatwo-lod0-mg (meters 20)) (cavespatulatwo-lod1-mg (meters 999999))) - :bounds (static-spherem 0 2.5 0 21) - :longest-edge (meters 8.7) - ) +(defskelgroup *cavespatulatwo-sg* + cavespatulatwo + cavespatulatwo-lod0-jg + -1 + ((cavespatulatwo-lod0-mg (meters 20)) (cavespatulatwo-lod1-mg (meters 999999))) + :bounds (static-spherem 0 2.5 0 21) + :longest-edge (meters 8.7)) (defstate cavespatulatwo-idle (cavespatulatwo) - :trans (behavior () - (rider-trans) - (update! (-> self sound)) - (let ((f0-0 (get-current-phase (-> self sync)))) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (* -65536.0 f0-0)) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post rider-post - ) + :trans + (behavior () + (rider-trans) + (update! (-> self sound)) + (let ((f0-0 (get-current-phase (-> self sync)))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (* -65536.0 f0-0)))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this cavespatulatwo) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -788,12 +571,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 75776.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *cavespatulatwo-sg* '()) (logclear! (-> this mask) (process-mask actor-pause)) @@ -801,69 +582,53 @@ (load-params! (-> this sync) this (the-as uint 3000) 0.0 0.15 0.15) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (transform-post) (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "spatula" :fo-min 25 :fo-max 50) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "spatula" :fo-min 25 :fo-max 50) (-> this root trans))) (go cavespatulatwo-idle) - (none) - ) + (none)) (deftype caveelevator (process-drawable) - ((root collide-shape-moving :override) - (elev-mode uint64) - (elev-type int32) - (prev-frame-num float) - (last-update-bounce-time time-frame) - (orig-trans vector :inline) - (sync sync-info :inline) - (smush smush-control :inline) - (anim int32 2) - (wheel-ry-mat matrix :inline :offset 272) - ) + ((root collide-shape-moving :override) + (elev-mode uint64) + (elev-type int32) + (prev-frame-num float) + (last-update-bounce-time time-frame) + (orig-trans vector :inline) + (sync sync-info :inline) + (smush smush-control :inline) + (anim int32 2) + (wheel-ry-mat matrix :inline :offset 272)) (:methods - (caveelevator-method-20 (_type_) none) - (caveelevator-method-21 (_type_) float) - ) + (caveelevator-method-20 (_type_) none) + (caveelevator-method-21 (_type_) float)) (:states - caveelevator-cycle-active - caveelevator-one-way-idle-end - caveelevator-one-way-idle-start - caveelevator-one-way-travel-to-end - caveelevator-one-way-travel-to-start - ) - ) - - -(defskelgroup *caveelevator-sg* caveelevator caveelevator-lod0-jg -1 - ((caveelevator-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4.25) - ) + caveelevator-cycle-active + caveelevator-one-way-idle-end + caveelevator-one-way-idle-start + caveelevator-one-way-travel-to-end + caveelevator-one-way-travel-to-start)) + +(defskelgroup *caveelevator-sg* + caveelevator + caveelevator-lod0-jg + -1 + ((caveelevator-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4.25)) (defun cavecrystal-light-control-caveelevator-callback ((arg0 (pointer cavecrystal)) (arg1 int) (arg2 float)) (let ((s5-0 (new 'stack-no-clear 'vector))) (let ((v1-1 (-> arg0 0 node-list))) (if (and (>= arg1 0) (nonzero? v1-1)) - (vector<-cspace! s5-0 (-> v1-1 data arg1)) - (set! (-> s5-0 quad) (-> arg0 0 root trans quad)) - ) - ) + (vector<-cspace! s5-0 (-> v1-1 data arg1)) + (set! (-> s5-0 quad) (-> arg0 0 root trans quad)))) (set! (-> s5-0 w) arg2) (let ((f0-1 (cavecrystal-light-control-method-10 *cavecrystal-light-control* s5-0)) (a2-2 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) - (a1-5 (new 'static 'vector :x 0.3 :y 0.3 :z 0.3 :w 1.0)) - ) - (vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f0-1) - ) - ) - ) + (a1-5 (new 'static 'vector :x 0.3 :y 0.3 :z 0.3 :w 1.0))) + (vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f0-1)))) (defmethod caveelevator-method-20 ((this caveelevator)) (let ((v1-1 (current-time))) @@ -873,196 +638,149 @@ (let ((s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> this orig-trans quad)) (+! (-> s5-0 y) (* 819.2 (update! (-> this smush)))) - (move-to-point! (-> this root) s5-0) - ) - ) - ) - ) - (none) - ) + (move-to-point! (-> this root) s5-0))))) + (none)) (defmethod caveelevator-method-21 ((this caveelevator)) (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (-> this draw bounds)) - ) + (gp-0 (-> this draw bounds))) (vector<-cspace! s5-0 (-> this node-list data 3)) (vector-! gp-0 s5-0 (-> this root trans)) - (set! (-> gp-0 w) 17408.0) - ) - ) + (set! (-> gp-0 w) 17408.0))) (defstate caveelevator-cycle-active (caveelevator) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (activate! (-> self smush) -1.0 60 150 1.0 1.0) - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (rider-trans) - (caveelevator-method-20 self) - ) - :code (behavior () - (loop - (let ((f30-1 (* (get-current-phase (-> self sync)) (the float (ja-num-frames 0))))) - (if (< (-> self prev-frame-num) f30-1) - (ja :num! (seek! f30-1 10000.0)) - (ja :num-func num-func-identity :frame-num f30-1) - ) - (set! (-> self prev-frame-num) f30-1) - ) - (suspend) - ) - ) - :post (behavior () - (rider-post) - (caveelevator-method-21 self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0)))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (rider-trans) + (caveelevator-method-20 self)) + :code + (behavior () + (loop + (let ((f30-1 (* (get-current-phase (-> self sync)) (the float (ja-num-frames 0))))) + (if (< (-> self prev-frame-num) f30-1) (ja :num! (seek! f30-1 10000.0)) (ja :num-func num-func-identity :frame-num f30-1)) + (set! (-> self prev-frame-num) f30-1)) + (suspend))) + :post + (behavior () + (rider-post) + (caveelevator-method-21 self))) (defstate caveelevator-one-way-idle-start (caveelevator) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (activate! (-> self smush) -1.0 60 150 1.0 1.0) - (go caveelevator-one-way-travel-to-end) - ) - (('attack 'touch) - (if (and (= (-> proc type) target) (>= 8192.0 (vector-vector-xz-distance (target-pos 0) (-> self root trans)))) - (go caveelevator-one-way-travel-to-end) - ) - ) - ) - ) - :trans (behavior () - (rider-trans) - (caveelevator-method-20 self) - ) - :code (behavior () - (ja :group! (-> (the-as art-joint-anim (+ (* (-> self anim 0) 4) (the-as int (-> self draw art-group)))) - master-art-group-name - ) - :num! min - ) - (loop - (suspend) - ) - ) - :post (behavior () - (rider-post) - (caveelevator-method-21 self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0) (go caveelevator-one-way-travel-to-end)) + (('attack 'touch) + (if (and (= (-> proc type) target) (>= 8192.0 (vector-vector-xz-distance (target-pos 0) (-> self root trans)))) + (go caveelevator-one-way-travel-to-end))))) + :trans + (behavior () + (rider-trans) + (caveelevator-method-20 self)) + :code + (behavior () + (ja :group! + (-> (the-as art-joint-anim (+ (* (-> self anim 0) 4) (the-as int (-> self draw art-group)))) master-art-group-name) + :num! + min) + (loop + (suspend))) + :post + (behavior () + (rider-post) + (caveelevator-method-21 self))) (defstate caveelevator-one-way-travel-to-end (caveelevator) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (activate! (-> self smush) -1.0 60 150 1.0 1.0) - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (rider-trans) - (caveelevator-method-20 self) - ) - :code (behavior () - (ja :group! (-> self draw art-group data (-> self anim 0)) :num! min) - (ja-no-eval :num! (seek!)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go caveelevator-one-way-idle-end) - ) - :post (behavior () - (rider-post) - (caveelevator-method-21 self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0)))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (rider-trans) + (caveelevator-method-20 self)) + :code + (behavior () + (ja :group! (-> self draw art-group data (-> self anim 0)) :num! min) + (ja-no-eval :num! (seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go caveelevator-one-way-idle-end)) + :post + (behavior () + (rider-post) + (caveelevator-method-21 self))) (defstate caveelevator-one-way-idle-end (caveelevator) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (activate! (-> self smush) -1.0 60 150 1.0 1.0) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (cond - ((zero? (-> self root riders num-riders)) - (if (time-elapsed? (-> self state-time) (seconds 3)) - (go caveelevator-one-way-travel-to-start) - ) - ) - (else - (set-time! (-> self state-time)) - ) - ) - (rider-trans) - (caveelevator-method-20 self) - ) - :code (behavior () - (ja :group! (-> self draw art-group data (-> self anim 0)) :num! max) - (loop - (suspend) - ) - ) - :post (behavior () - (rider-post) - (caveelevator-method-21 self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0)))) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (cond + ((zero? (-> self root riders num-riders)) + (if (time-elapsed? (-> self state-time) (seconds 3)) (go caveelevator-one-way-travel-to-start))) + (else (set-time! (-> self state-time)))) + (rider-trans) + (caveelevator-method-20 self)) + :code + (behavior () + (ja :group! (-> self draw art-group data (-> self anim 0)) :num! max) + (loop + (suspend))) + :post + (behavior () + (rider-post) + (caveelevator-method-21 self))) (defstate caveelevator-one-way-travel-to-start (caveelevator) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (activate! (-> self smush) -1.0 60 150 1.0 1.0) - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (rider-trans) - (caveelevator-method-20 self) - ) - :code (behavior () - (ja :group! (-> self draw art-group data (-> self anim 1)) :num! min) - (ja-no-eval :num! (seek!)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go caveelevator-one-way-idle-start) - ) - :post (behavior () - (rider-post) - (caveelevator-method-21 self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (activate! (-> self smush) -1.0 60 150 1.0 1.0)))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (rider-trans) + (caveelevator-method-20 self)) + :code + (behavior () + (ja :group! (-> self draw art-group data (-> self anim 1)) :num! min) + (ja-no-eval :num! (seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go caveelevator-one-way-idle-start)) + :post + (behavior () + (rider-post) + (caveelevator-method-21 self))) (defun caveelevator-joint-callback ((arg0 caveelevator)) (let* ((gp-0 arg0) @@ -1070,8 +788,7 @@ (f30-0 (* 5.0929585 (- f1-1 (* (the float (the int (/ f1-1 12867.963))) 12867.963)))) (s3-0 (-> arg0 node-list data 5 bone transform)) (s4-0 (-> arg0 node-list data 4 bone transform)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> s3-0 vector 3 quad)) (matrix-rotate-x! s3-0 f30-0) (matrix*! s3-0 s3-0 (-> gp-0 wheel-ry-mat)) @@ -1079,11 +796,9 @@ (set! (-> s5-0 quad) (-> s4-0 vector 3 quad)) (matrix-rotate-x! s4-0 (- f30-0)) (matrix*! s4-0 s4-0 (-> gp-0 wheel-ry-mat)) - (set! (-> s4-0 vector 3 quad) (-> s5-0 quad)) - ) + (set! (-> s4-0 vector 3 quad) (-> s5-0 quad))) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this caveelevator) (arg0 entity-actor)) (local-vars (v1-43 int) (sv-16 res-tag)) @@ -1093,9 +808,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1104,12 +817,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17408.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *caveelevator-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -1119,84 +830,44 @@ (when v1-28 (+! (-> this root trans x) (-> v1-28 0)) (+! (-> this root trans y) (-> v1-28 1)) - (+! (-> this root trans z) (-> v1-28 2)) - ) - ) + (+! (-> this root trans z) (-> v1-28 2)))) (set! (-> this orig-trans quad) (-> this root trans quad)) (let ((f0-13 (res-lump-float (-> this entity) 'rotoffset))) - (if (!= f0-13 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-13) - ) - ) - (let ((f0-14 (quaternion-y-angle (-> this root quat)))) - (matrix-rotate-y! (-> this wheel-ry-mat) f0-14) - ) + (if (!= f0-13 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-13))) + (let ((f0-14 (quaternion-y-angle (-> this root quat)))) (matrix-rotate-y! (-> this wheel-ry-mat) f0-14)) (set-zero! (-> this smush)) (let ((s5-1 (res-lump-value arg0 'mode uint128))) 0 (set! (-> this elev-type) (the-as int s5-1)) (let ((v1-42 s5-1)) (cond - ((zero? v1-42) - (set! v1-43 0) - (set! (-> this anim 0) 2) - ) - ((= (the-as uint v1-42) 1) - (set! v1-43 1) - (set! (-> this anim 0) 3) - (set! (-> this anim 1) 4) - ) - ((= (the-as uint v1-42) 2) - (set! v1-43 0) - (set! (-> this anim 0) 5) - ) - (else - (set! v1-43 0) - (set! (-> this anim 0) 2) - (set! (-> this elev-type) (the-as int s5-1)) - ) - ) - ) + ((zero? v1-42) (set! v1-43 0) (set! (-> this anim 0) 2)) + ((= (the-as uint v1-42) 1) (set! v1-43 1) (set! (-> this anim 0) 3) (set! (-> this anim 1) 4)) + ((= (the-as uint v1-42) 2) (set! v1-43 0) (set! (-> this anim 0) 5)) + (else (set! v1-43 0) (set! (-> this anim 0) 2) (set! (-> this elev-type) (the-as int s5-1))))) (set! (-> this elev-mode) (the-as uint v1-43)) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data (-> this anim 0))) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 + (the-as art-joint-anim (-> this draw art-group data (-> this anim 0))) + num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (if (= (the-as uint s5-1) 1) - (create-connection! - *cavecrystal-light-control* - this - (-> this entity) - (the-as (function object object object object object) cavecrystal-light-control-caveelevator-callback) - 3 - 8192.0 - ) - (create-connection! - *cavecrystal-light-control* - this - (-> this entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - 3 - 8192.0 - ) - ) - ) + (create-connection! *cavecrystal-light-control* + this + (-> this entity) + (the-as (function object object object object object) cavecrystal-light-control-caveelevator-callback) + 3 + 8192.0) + (create-connection! *cavecrystal-light-control* + this + (-> this entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + 3 + 8192.0))) (transform-post) (let ((v1-55 (-> this elev-mode))) (cond - ((zero? v1-55) - (load-params! (-> this sync) this (the-as uint 3000) 0.0 0.15 0.15) - (go caveelevator-cycle-active) - ) - ((= v1-55 1) - (go caveelevator-one-way-idle-start) - ) - ) - ) - (none) - ) + ((zero? v1-55) (load-params! (-> this sync) this (the-as uint 3000) 0.0 0.15 0.15) (go caveelevator-cycle-active)) + ((= v1-55 1) (go caveelevator-one-way-idle-start)))) + (none)) diff --git a/goal_src/jak1/levels/maincave/maincave-part.gc b/goal_src/jak1/levels/maincave/maincave-part.gc index 3e5928cb14..45312aa9e7 100644 --- a/goal_src/jak1/levels/maincave/maincave-part.gc +++ b/goal_src/jak1/levels/maincave/maincave-part.gc @@ -1,297 +1,265 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: maincave-part.gc -;; name in dgo: maincave-part -;; dgos: L1, MAI, MAINCAVE - ;; DECOMP BEGINS -(deftype maincave-part (part-spawner) - () - ) - - -(deftype darkcave-part (part-spawner) - () - ) +(deftype maincave-part (part-spawner) ()) +(deftype darkcave-part (part-spawner) ()) (defpartgroup group-part-maincave-torch :id 318 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 706 :fade-after (meters 200) :falloff-to (meters 220)) - (sp-item 707 :fade-after (meters 140) :falloff-to (meters 140)) - (sp-item 708 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) - (sp-item 709 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 710 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 711 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 706 :fade-after (meters 200) :falloff-to (meters 220)) + (sp-item 707 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 708 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) + (sp-item 709 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 710 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 711 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 711 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 712) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 712) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 712 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 706 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5 1 1.0) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 713) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5 1 1.0) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 713))) (defpart 713 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 708 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 713) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 713))) (defpart 709 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 713) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 713))) (defpart 710 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 713) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 713))) (defpart 707 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-cave-cavedrip-1 :id 319 :bounds (static-bspherem 0 8 0 8.25) - :parts ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 1.23) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.56) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.89) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 5.67) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 9.121) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 12.77) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 1.23) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.56) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.89) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 5.67) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 9.121) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 12.77) :length (seconds 0.017)))) (defpartgroup group-cave-cavedrip-2 :id 320 :bounds (static-bspherem 0 8 0 8.25) - :parts ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 1.557) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.781) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.281) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 7.457) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 8.657) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 11.957) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 1.557) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.781) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.281) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 7.457) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 8.657) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 11.957) :length (seconds 0.017)))) (defpartgroup group-cave-cavedrip-3 :id 321 :bounds (static-bspherem 0 8 0 8.25) - :parts ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.67) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.89) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 4.23) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 6.61) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 8.67) :length (seconds 0.017)) - (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 16.87) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.67) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.89) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 4.23) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 6.61) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 8.67) :length (seconds 0.017)) + (sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 16.87) :length (seconds 0.017)))) (defpart 2231 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 3.0 4.0) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:fade-a -0.5688889) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 20) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 3.0 4.0) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:fade-a -0.5688889) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 20) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2232 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 16.0) - (:b 192.0 32.0) - (:a 64.0 64.0) - (:scalevel-x (meters 0.016666668) (meters 0.01)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.2222222) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit12 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 16.0) + (:b 192.0 32.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.016666668) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.2222222) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit12 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2230 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:birth-func 'birth-func-y->userdata) - (:num 1.0) - (:y (meters 24)) - (:scale-x (meters 0.1)) - (:scale-y (meters 0.4)) - (:r 96.0 64.0) - (:g 64.0 16.0) - (:b 192.0 32.0) - (:a 128.0) - (:vel-y (meters -0.045714285)) - (:fade-a 0.5688889) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:userdata -98304.0) - (:func 'check-drop-level-maincave-drip) - (:next-time (seconds 0.5) (seconds 0.247)) - (:next-launcher 2233) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:birth-func 'birth-func-y->userdata) + (:num 1.0) + (:y (meters 24)) + (:scale-x (meters 0.1)) + (:scale-y (meters 0.4)) + (:r 96.0 64.0) + (:g 64.0 16.0) + (:b 192.0 32.0) + (:a 128.0) + (:vel-y (meters -0.045714285)) + (:fade-a 0.5688889) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:userdata -98304.0) + (:func 'check-drop-level-maincave-drip) + (:next-time (seconds 0.5) (seconds 0.247)) + (:next-launcher 2233))) (defpart 2233 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defun check-drop-level-maincave-drip ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 2231) gp-0 :rate 1.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2232) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2232) gp-0 :rate 1.0))) + (none)) diff --git a/goal_src/jak1/levels/maincave/mother-spider-egg.gc b/goal_src/jak1/levels/maincave/mother-spider-egg.gc index 79f5d7f9c3..74fc47ba2a 100644 --- a/goal_src/jak1/levels/maincave/mother-spider-egg.gc +++ b/goal_src/jak1/levels/maincave/mother-spider-egg.gc @@ -1,63 +1,54 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "engine/gfx/shadow/shadow.gc") (require "levels/maincave/cavecrystal-light.gc") (require "engine/physics/trajectory.gc") (require "engine/common-obs/process-drawable.gc") (require "engine/nav/navigate-h.gc") -;; name: mother-spider-egg.gc -;; name in dgo: mother-spider-egg -;; dgos: L1, MAI, MAINCAVE - - ;; DECOMP BEGINS (deftype mother-spider-egg (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer mother-spider) :overlay-at parent) - (anim-speed float) - (part2 sparticle-launch-control) - (falling-start-time time-frame) - (fall-dest vector :inline) - (fall-dest-normal vector :inline) - (broken-look lod-set :inline) - (traj trajectory :inline) - (shadow-pos vector :inline) - ) + ((root collide-shape-moving :override) + (parent-override (pointer mother-spider) :overlay-at parent) + (anim-speed float) + (part2 sparticle-launch-control) + (falling-start-time time-frame) + (fall-dest vector :inline) + (fall-dest-normal vector :inline) + (broken-look lod-set :inline) + (traj trajectory :inline) + (shadow-pos vector :inline)) (:methods - (mother-spider-egg-method-20 (_type_) none) - (draw-egg-shadow (_type_ vector symbol) symbol) - ) + (mother-spider-egg-method-20 (_type_) none) + (draw-egg-shadow (_type_ vector symbol) symbol)) (:states - mother-spider-egg-die - mother-spider-egg-die-exit - mother-spider-egg-die-while-falling - mother-spider-egg-falling - mother-spider-egg-hatch - mother-spider-egg-on-ground - ) - ) + mother-spider-egg-die + mother-spider-egg-die-exit + mother-spider-egg-die-while-falling + mother-spider-egg-falling + mother-spider-egg-hatch + mother-spider-egg-on-ground)) +(defskelgroup *mother-spider-egg-unbroken-sg* + spider-egg + spider-egg-unbroken-lod0-jg + -1 + ((spider-egg-unbroken-lod0-mg (meters 20)) + (spider-egg-unbroken-lod1-mg (meters 40)) + (spider-egg-unbroken-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 2) + :shadow spider-egg-unbroken-shadow-mg) -(defskelgroup *mother-spider-egg-unbroken-sg* spider-egg spider-egg-unbroken-lod0-jg -1 - ((spider-egg-unbroken-lod0-mg (meters 20)) - (spider-egg-unbroken-lod1-mg (meters 40)) - (spider-egg-unbroken-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 2) - :shadow spider-egg-unbroken-shadow-mg - ) - -(defskelgroup *mother-spider-egg-broken-sg* spider-egg spider-egg-broken-lod0-jg -1 - ((spider-egg-broken-lod0-mg (meters 20)) - (spider-egg-broken-lod1-mg (meters 40)) - (spider-egg-broken-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 2) - ) +(defskelgroup *mother-spider-egg-broken-sg* + spider-egg + spider-egg-broken-lod0-jg + -1 + ((spider-egg-broken-lod0-mg (meters 20)) + (spider-egg-broken-lod1-mg (meters 40)) + (spider-egg-broken-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 2)) (defpartgroup group-spider-egg-hatches :id 324 @@ -65,64 +56,59 @@ :linger-duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2018 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 2071 :fade-after (meters 50) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 2018 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 2071 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 2071 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 16.0) - (:y (meters 0.5)) - (:scale-x (meters 0.1)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.1)) - (:r 255.0) - (:g 64.0) - (:b 255.0) - (:a 32.0 96.0) - (:timer (seconds 0.75)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.25)) - (:next-launcher 2072) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 16.0) + (:y (meters 0.5)) + (:scale-x (meters 0.1)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.1)) + (:r 255.0) + (:g 64.0) + (:b 255.0) + (:a 32.0 96.0) + (:timer (seconds 0.75)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.25)) + (:next-launcher 2072))) (defpart 2072 - :init-specs ((:scale-x (meters 0.1)) (:scale-y (meters 2)) (:scalevel-y (meters 0.2)) (:fade-a -1.4222223)) - ) + :init-specs ((:scale-x (meters 0.1)) (:scale-y (meters 2)) (:scalevel-y (meters 0.2)) (:fade-a -1.4222223))) (defpart 2018 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:y (meters 0.5) (meters 0.5)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 0.0 16.0) - (:b 32.0 32.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a 1.4222223) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 1.25)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15)) - (:next-launcher 2073) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:y (meters 0.5) (meters 0.5)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 0.0 16.0) + (:b 32.0 32.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.4222223) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 1.25)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15)) + (:next-launcher 2073) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2073 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-spider-egg-explodes :id 325 @@ -130,322 +116,240 @@ :linger-duration (seconds 1.25) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2074 :fade-after (meters 50) :falloff-to (meters 50))) - ) + :parts ((sp-item 2074 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 2074 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:y (meters 0.5) (meters 0.5)) - (:scale-x (meters 1.5) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 0.0 16.0) - (:b 32.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.4222223) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 1.25)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:y (meters 0.5) (meters 0.5)) + (:scale-x (meters 1.5) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 0.0 16.0) + (:b 32.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.4222223) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 1.25)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defmethod draw-egg-shadow ((this mother-spider-egg) (arg0 vector) (arg1 symbol)) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-1 (new 'stack-no-clear 'vector)) - (a2-1 (new 'stack-no-clear 'vector)) - ) + (a2-1 (new 'stack-no-clear 'vector))) (set! (-> a1-1 quad) (-> this root trans quad)) (+! (-> a1-1 y) 1228.8) (set-vector! a2-1 0.0 -61440.0 0.0 1.0) (cond - ((>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-1 - a2-1 - 7372.8 - (collide-kind background) - this - s5-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (let ((v1-11 (-> this draw shadow-ctrl))) - (logclear! (-> v1-11 settings flags) (shadow-flags disable-draw)) - ) + ((>= (fill-and-probe-using-line-sphere *collide-cache* + a1-1 + a2-1 + 7372.8 + (collide-kind background) + this + s5-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (let ((v1-11 (-> this draw shadow-ctrl))) (logclear! (-> v1-11 settings flags) (shadow-flags disable-draw))) 0 - (let ((v1-14 (-> this draw shadow-ctrl))) - (set! (-> v1-14 settings bot-plane w) (- (+ -4096.0 (-> s5-0 intersect y)))) - ) + (let ((v1-14 (-> this draw shadow-ctrl))) (set! (-> v1-14 settings bot-plane w) (- (+ -4096.0 (-> s5-0 intersect y))))) 0 - (let ((v1-17 (-> this draw shadow-ctrl))) - (set! (-> v1-17 settings top-plane w) (- (+ 6144.0 (-> s5-0 intersect y)))) - ) + (let ((v1-17 (-> this draw shadow-ctrl))) (set! (-> v1-17 settings top-plane w) (- (+ 6144.0 (-> s5-0 intersect y))))) 0 - (return #t) - ) - (else - (let ((v1-22 (-> this draw shadow-ctrl))) - (logior! (-> v1-22 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) - ) - (else - (let ((v1-25 (-> this draw shadow-ctrl))) - (logior! (-> v1-25 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - #f - ) + (return #t)) + (else (let ((v1-22 (-> this draw shadow-ctrl))) (logior! (-> v1-22 settings flags) (shadow-flags disable-draw))) 0)))) + (else (let ((v1-25 (-> this draw shadow-ctrl))) (logior! (-> v1-25 settings flags) (shadow-flags disable-draw))) 0)) + #f) (defstate mother-spider-egg-falling (mother-spider-egg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (go mother-spider-egg-die-while-falling) - ) - ) - ) - :enter (behavior () - (set-time! (-> self falling-start-time)) - ) - :trans (behavior () - (let ((f30-0 (fmin (the float (- (current-time) (-> self falling-start-time))) (-> self traj time)))) - (let ((f28-0 (/ f30-0 (-> self traj time)))) - (eval-position! (-> self traj) f30-0 (-> self root trans)) - (let ((f0-3 (lerp 0.3 0.4 f28-0))) - (set-vector! (-> self root scale) f0-3 f0-3 f0-3 1.0) - ) - ) - (when (= f30-0 (-> self traj time)) - (sound-play "eggs-lands") - (go mother-spider-egg-on-ground) - ) - ) - (draw-egg-shadow self (-> self shadow-pos) #t) - ) - :code (behavior () - (ja-channel-push! 1 0) - (loop - (ja-no-eval :group! spider-egg-idle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) (go mother-spider-egg-die-while-falling)))) + :enter + (behavior () + (set-time! (-> self falling-start-time))) + :trans + (behavior () + (let ((f30-0 (fmin (the float (- (current-time) (-> self falling-start-time))) (-> self traj time)))) + (let ((f28-0 (/ f30-0 (-> self traj time)))) + (eval-position! (-> self traj) f30-0 (-> self root trans)) + (let ((f0-3 (lerp 0.3 0.4 f28-0))) (set-vector! (-> self root scale) f0-3 f0-3 f0-3 1.0))) + (when (= f30-0 (-> self traj time)) + (sound-play "eggs-lands") + (go mother-spider-egg-on-ground))) + (draw-egg-shadow self (-> self shadow-pos) #t)) + :code + (behavior () + (ja-channel-push! 1 0) + (loop + (ja-no-eval :group! spider-egg-idle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed)))))) + :post transform-post) (defstate mother-spider-egg-on-ground (mother-spider-egg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0) - ) - (('attack) - (go mother-spider-egg-die) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (if (not (draw-egg-shadow self (-> self shadow-pos) #t)) - (set! (-> self shadow-pos quad) (-> self fall-dest quad)) - ) - ) - :trans (behavior () - (if (time-elapsed? (-> self state-time) (seconds 2)) - (go mother-spider-egg-hatch) - ) - (draw-egg-shadow self (-> self shadow-pos) #f) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (let ((gp-0 (new 'stack-no-clear 'quaternion)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) - (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (quaternion-copy! gp-0 (-> self root quat)) - (set-vector! s4-0 0.0 1.0 0.0 1.0) - (set! (-> s3-0 quad) (-> self fall-dest-normal quad)) - (vector-normalize! s3-0 1.0) - (quaternion-from-two-vectors! s5-0 s4-0 s3-0) - ) - (quaternion*! s5-0 s5-0 gp-0) - (ja-no-eval :group! spider-egg-bounce-ja :num! (seek! max 1.3) :frame-num 0.0) - (until (ja-done? 0) - (let* ((f0-8 (ja-frame-num 0)) - (v1-19 (ja-group)) - (f0-9 (/ f0-8 (the float (+ (-> v1-19 data 0 length) -1)))) - ) - (quaternion-slerp! (-> self root quat) gp-0 s5-0 f0-9) - ) - (suspend) - (ja :num! (seek! max 1.3)) - ) - ) - (loop - (ja-no-eval :group! spider-egg-idle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0)) + (('attack) (go mother-spider-egg-die)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (if (not (draw-egg-shadow self (-> self shadow-pos) #t)) (set! (-> self shadow-pos quad) (-> self fall-dest quad)))) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (seconds 2)) (go mother-spider-egg-hatch)) + (draw-egg-shadow self (-> self shadow-pos) #f)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (let ((gp-0 (new 'stack-no-clear 'quaternion)) + (s5-0 (new 'stack-no-clear 'quaternion))) + (let ((s3-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector))) + (quaternion-copy! gp-0 (-> self root quat)) + (set-vector! s4-0 0.0 1.0 0.0 1.0) + (set! (-> s3-0 quad) (-> self fall-dest-normal quad)) + (vector-normalize! s3-0 1.0) + (quaternion-from-two-vectors! s5-0 s4-0 s3-0)) + (quaternion*! s5-0 s5-0 gp-0) + (ja-no-eval :group! spider-egg-bounce-ja :num! (seek! max 1.3) :frame-num 0.0) + (until (ja-done? 0) + (let* ((f0-8 (ja-frame-num 0)) + (v1-19 (ja-group)) + (f0-9 (/ f0-8 (the float (+ (-> v1-19 data 0 length) -1))))) + (quaternion-slerp! (-> self root quat) gp-0 s5-0 f0-9)) + (suspend) + (ja :num! (seek! max 1.3)))) + (loop + (ja-no-eval :group! spider-egg-idle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed)))))) + :post transform-post) (defstate mother-spider-egg-hatch (mother-spider-egg) - :trans (behavior () - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) - (let ((a1-0 (new 'stack-no-clear 'vector))) - (set! (-> a1-0 quad) (-> self fall-dest quad)) - (compute-and-draw-shadow - (-> self root trans) - a1-0 - (-> self fall-dest-normal) - (the-as vector 7372.8) - 81920.0 - (the-as float 0) - ) - ) - ) - ) - :code (behavior () - (send-event (ppointer->process (-> self parent-override)) 'trigger) - (clear-collide-with-as (-> self root)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 324) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! spider-egg-crack-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((v1-37 (-> self draw shadow-ctrl))) - (logior! (-> v1-37 settings flags) (shadow-flags disable-draw)) - ) - 0 - (go mother-spider-egg-die-exit) - ) - :post transform-post - ) + :trans + (behavior () + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) + (let ((a1-0 (new 'stack-no-clear 'vector))) + (set! (-> a1-0 quad) (-> self fall-dest quad)) + (compute-and-draw-shadow (-> self root trans) + a1-0 + (-> self fall-dest-normal) + (the-as vector 7372.8) + 81920.0 + (the-as float 0))))) + :code + (behavior () + (send-event (ppointer->process (-> self parent-override)) 'trigger) + (clear-collide-with-as (-> self root)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 324) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! spider-egg-crack-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((v1-37 (-> self draw shadow-ctrl))) (logior! (-> v1-37 settings flags) (shadow-flags disable-draw))) + 0 + (go mother-spider-egg-die-exit)) + :post transform-post) (defstate mother-spider-egg-die (mother-spider-egg) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((v1-3 (-> self draw shadow-ctrl))) - (logior! (-> v1-3 settings flags) (shadow-flags disable-draw)) - ) - 0 - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-channel-push! 1 (seconds 0.1)) - (clear-collide-with-as (-> self root)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 325) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go mother-spider-egg-die-exit) - ) - :post ja-post - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((v1-3 (-> self draw shadow-ctrl))) (logior! (-> v1-3 settings flags) (shadow-flags disable-draw))) + 0 + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-channel-push! 1 (seconds 0.1)) + (clear-collide-with-as (-> self root)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 325) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go mother-spider-egg-die-exit)) + :post ja-post) (defstate mother-spider-egg-die-while-falling (mother-spider-egg) - :trans (behavior () - (let ((f0-2 (fmin (the float (- (current-time) (-> self falling-start-time))) (-> self traj time)))) - (eval-position! (-> self traj) f0-2 (-> self root trans)) - ) - ) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root)) - (let ((v1-5 (-> self draw shadow-ctrl))) - (logior! (-> v1-5 settings flags) (shadow-flags disable-draw)) - ) - 0 - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 325) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go mother-spider-egg-die-exit) - ) - :post ja-post - ) + :trans + (behavior () + (let ((f0-2 (fmin (the float (- (current-time) (-> self falling-start-time))) (-> self traj time)))) + (eval-position! (-> self traj) f0-2 (-> self root trans)))) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root)) + (let ((v1-5 (-> self draw shadow-ctrl))) (logior! (-> v1-5 settings flags) (shadow-flags disable-draw))) + 0 + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 325) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go mother-spider-egg-die-exit)) + :post ja-post) (defstate mother-spider-egg-die-exit (mother-spider-egg) - :code (behavior () - (send-event (ppointer->process (-> self parent-override)) 'untrigger) - (logior! (-> self draw status) (draw-status hidden)) - (let ((v1-8 (-> self draw shadow-ctrl))) - (logior! (-> v1-8 settings flags) (shadow-flags disable-draw)) - ) - 0 - (logclear! (-> self root nav-flags) (nav-flags navf0)) - (logclear! (-> self root nav-flags) (nav-flags navf1)) - (clear-collide-with-as (-> self root)) - (until (not (-> self child)) - (suspend) - ) - ) - ) + :code + (behavior () + (send-event (ppointer->process (-> self parent-override)) 'untrigger) + (logior! (-> self draw status) (draw-status hidden)) + (let ((v1-8 (-> self draw shadow-ctrl))) (logior! (-> v1-8 settings flags) (shadow-flags disable-draw))) + 0 + (logclear! (-> self root nav-flags) (nav-flags navf0)) + (logclear! (-> self root nav-flags) (nav-flags navf1)) + (clear-collide-with-as (-> self root)) + (until (not (-> self child)) + (suspend)))) (defbehavior mother-spider-egg-init-by-other mother-spider-egg ((arg0 entity-actor) (arg1 vector) (arg2 vector) (arg3 vector)) (set! (-> self entity) arg0) @@ -456,21 +360,17 @@ (let ((s4-1 (new 'process 'collide-shape-moving self (collide-list-enum usually-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) - ) + (set! (-> s4-1 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4) - (set-root-prim! s4-1 s3-0) - ) + (set-root-prim! s4-1 s3-0)) (set! (-> s4-1 nav-radius) 4096.0) (backup-collide-with-as s4-1) - (set! (-> self root) s4-1) - ) + (set! (-> self root) s4-1)) (set! (-> self root trans quad) (-> arg1 quad)) (set-vector! (-> self root scale) 0.3 0.3 0.3 1.0) (quaternion-copy! (-> self root quat) (-> self parent-override 0 root quat)) @@ -487,14 +387,11 @@ (set! (-> self nav extra-nav-sphere quad) (-> self fall-dest quad)) (set! (-> self nav extra-nav-sphere w) 4096.0) (setup-from-to-height! (-> self traj) (-> self root trans) arg2 4096.0 -4.551111) - (create-connection! - *cavecrystal-light-control* - self - (-> self entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - -1 - 4096.0 - ) + (create-connection! *cavecrystal-light-control* + self + (-> self entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + -1 + 4096.0) (go mother-spider-egg-falling) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/maincave/mother-spider-h.gc b/goal_src/jak1/levels/maincave/mother-spider-h.gc index 7ce4e8a557..037f884cec 100644 --- a/goal_src/jak1/levels/maincave/mother-spider-h.gc +++ b/goal_src/jak1/levels/maincave/mother-spider-h.gc @@ -1,131 +1,106 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "engine/game/game-h.gc") (require "kernel/gcommon.gc") -;; name: mother-spider-h.gc -;; name in dgo: mother-spider-h -;; dgos: L1, MAI, MAINCAVE - ;; DECOMP BEGINS (deftype mother-spider-leg (process-drawable) - ((gravity float) - (transv vector :inline) - (facing-rot vector :inline) - (facing-rotv vector :inline) - ) + ((gravity float) + (transv vector :inline) + (facing-rot vector :inline) + (facing-rotv vector :inline)) (:states - mother-spider-leg-flying - ) - ) - + mother-spider-leg-flying)) (deftype mother-spider-thread (structure) - ((joint-index int32) - (trans-u float) - (swing-arc-u float) - ) - :pack-me - ) - + ((joint-index int32) + (trans-u float) + (swing-arc-u float)) + :pack-me) (deftype mother-spider-leg-info (structure) - ((joint-index0 int32) - (joint-index1 int32) - (cprim-index int32) - ) - ) - + ((joint-index0 int32) + (joint-index1 int32) + (cprim-index int32))) (deftype mother-spider-history (structure) - ((trans vector :inline) - ) - ) - + ((trans vector :inline))) (deftype mother-spider-history-array (inline-array-class) - ((data mother-spider-history :dynamic) - ) - ) - + ((data mother-spider-history :dynamic))) (set! (-> mother-spider-history-array heap-base) (the-as uint 16)) (deftype mother-spider (process-drawable) - ((root collide-shape :override) - (mode uint64) - (damage int32) - (baby-count int32) - (max-baby-count int32) - (birthing-counter int32) - (spit-counter int32) - (leg-socket-part-mask int32) - (dist-from-anchor float) - (targ-dist-from-anchor float) - (idle-dist-from-anchor float) - (player-sticky-dist-from-anchor float) - (max-dist-from-anchor float) - (activate-xz-dist float) - (deactivate-xz-dist float) - (max-spit-xz-dist float) - (max-swing-radius float) - (spin-vel float) - (thread-speed float) - (thread-vel float) - (history mother-spider-history-array) - (history-len int32) - (history-next-index int32) - (hit? symbol) - (going-up? symbol) - (check-z-thresh? symbol) - (activate-z-thresh float) - (deactivate-z-thresh float) - (spawned-time time-frame) - (last-update-time time-frame) - (spin-time time-frame) - (last-spit-time time-frame) - (last-player-in-air-time time-frame) - (started-birthing-time time-frame) - (neck joint-mod) - (player-attack-id uint64) - (leg-socket-part-time time-frame 6) - (orient-rot vector :inline) - (anchor-trans vector :inline) - (thread-min-trans vector :inline) - (swing-pos vector :inline) - (swing-base-pos vector :inline) - (swing-vel vector :inline) - ) + ((root collide-shape :override) + (mode uint64) + (damage int32) + (baby-count int32) + (max-baby-count int32) + (birthing-counter int32) + (spit-counter int32) + (leg-socket-part-mask int32) + (dist-from-anchor float) + (targ-dist-from-anchor float) + (idle-dist-from-anchor float) + (player-sticky-dist-from-anchor float) + (max-dist-from-anchor float) + (activate-xz-dist float) + (deactivate-xz-dist float) + (max-spit-xz-dist float) + (max-swing-radius float) + (spin-vel float) + (thread-speed float) + (thread-vel float) + (history mother-spider-history-array) + (history-len int32) + (history-next-index int32) + (hit? symbol) + (going-up? symbol) + (check-z-thresh? symbol) + (activate-z-thresh float) + (deactivate-z-thresh float) + (spawned-time time-frame) + (last-update-time time-frame) + (spin-time time-frame) + (last-spit-time time-frame) + (last-player-in-air-time time-frame) + (started-birthing-time time-frame) + (neck joint-mod) + (player-attack-id uint64) + (leg-socket-part-time time-frame 6) + (orient-rot vector :inline) + (anchor-trans vector :inline) + (thread-min-trans vector :inline) + (swing-pos vector :inline) + (swing-base-pos vector :inline) + (swing-vel vector :inline)) (:methods - (mother-spider-method-20 (_type_ vector vector) symbol) - (mother-spider-method-21 (_type_ vector float symbol) symbol) - (mother-spider-method-22 (_type_ matrix vector) float) - (mother-spider-method-23 (_type_) none) - (shadow-handler (_type_) number) - (letgo-player? (_type_) symbol) - (grab-player? (_type_) symbol) - (mother-spider-method-27 (_type_) none) - (mother-spider-method-28 (_type_) none) - (mother-spider-method-29 (_type_ symbol symbol) none) - (spawn-child (_type_ vector vector symbol) int) - (is-player-stuck? (_type_) symbol) - ) + (mother-spider-method-20 (_type_ vector vector) symbol) + (mother-spider-method-21 (_type_ vector float symbol) symbol) + (mother-spider-method-22 (_type_ matrix vector) float) + (mother-spider-method-23 (_type_) none) + (shadow-handler (_type_) number) + (letgo-player? (_type_) symbol) + (grab-player? (_type_) symbol) + (mother-spider-method-27 (_type_) none) + (mother-spider-method-28 (_type_) none) + (mother-spider-method-29 (_type_ symbol symbol) none) + (spawn-child (_type_ vector vector symbol) int) + (is-player-stuck? (_type_) symbol)) (:states - mother-spider-birth-baby - mother-spider-birthing - mother-spider-die - mother-spider-die-from-uppercut - mother-spider-die-wait-for-children - mother-spider-hit-while-birthing - mother-spider-hit-while-tracking - mother-spider-idle - mother-spider-spit - mother-spider-stop-traveling - mother-spider-tracking - (mother-spider-traveling uint) - wait-for-children - ) - ) + mother-spider-birth-baby + mother-spider-birthing + mother-spider-die + mother-spider-die-from-uppercut + mother-spider-die-wait-for-children + mother-spider-hit-while-birthing + mother-spider-hit-while-tracking + mother-spider-idle + mother-spider-spit + mother-spider-stop-traveling + mother-spider-tracking + (mother-spider-traveling uint) + wait-for-children)) diff --git a/goal_src/jak1/levels/maincave/mother-spider-proj.gc b/goal_src/jak1/levels/maincave/mother-spider-proj.gc index dee815ab7a..02b22f8791 100644 --- a/goal_src/jak1/levels/maincave/mother-spider-proj.gc +++ b/goal_src/jak1/levels/maincave/mother-spider-proj.gc @@ -1,228 +1,210 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "engine/game/projectiles.gc") -;; name: mother-spider-proj.gc -;; name in dgo: mother-spider-proj -;; dgos: L1, MAI, MAINCAVE - ;; DECOMP BEGINS (deftype mother-spider-proj (projectile) - ((parent-process (pointer projectile) :overlay-at parent) - (facing-dir vector :inline) - ) - ) - + ((parent-process (pointer projectile) :overlay-at parent) + (facing-dir vector :inline))) (defpartgroup group-mother-spider-proj-fly :id 326 :duration (seconds 1) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 718 :flags (launch-asap) :binding 716) - (sp-item 716 :flags (start-dead) :binding 717) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 718 :flags (launch-asap) :binding 716) + (sp-item 716 :flags (start-dead) :binding 717) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)))) (defpart 718 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3)) + (:func 'sparticle-track-root-prim))) (defpart 716 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b 0.0) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:next-time (seconds 0.27)) - (:next-launcher 720) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -1.0666667) + (:fade-b 0.0) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:next-time (seconds 0.27)) + (:next-launcher 720) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.1)))) (defpart 720 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 717 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 5.0) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b 0.0) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 720) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 5.0) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -1.0666667) + (:fade-b 0.0) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 720) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpartgroup group-mother-spider-proj-hit :id 327 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 722) (sp-item 723) (sp-item 724)) - ) + :parts ((sp-item 722) (sp-item 723) (sp-item 724))) (defpart 722 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 64.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.10666667) (meters 0.10666667)) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.7111111) - (:fade-g -0.7111111) - (:fade-b 0.0) - (:accel-y (meters -0.00016666666)) - (:friction 0.85 0.05) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.3)) - (:next-launcher 720) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 64.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.10666667) (meters 0.10666667)) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.7111111) + (:fade-g -0.7111111) + (:fade-b 0.0) + (:accel-y (meters -0.00016666666)) + (:friction 0.85 0.05) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.3)) + (:next-launcher 720) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpart 724 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 32.0 32.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-r -0.35555556) - (:fade-g -0.35555556) - (:fade-b 0.0) - (:fade-a -0.30476192) - (:accel-y (meters -0.00016666666) (meters 0.00016666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 720) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 32.0 32.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-r -0.35555556) + (:fade-g -0.35555556) + (:fade-b 0.0) + (:fade-a -0.30476192) + (:accel-y (meters -0.00016666666) (meters 0.00016666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 720) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 723 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 128.0 32.0) - (:a 96.0) - (:fade-a -4.8) - (:timer (seconds 0.05)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 128.0 32.0) + (:a 96.0) + (:fade-a -4.8) + (:timer (seconds 0.05)) + (:flags (bit2)))) (defpartgroup group-mother-spider-proj-die :id 328 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 722)) - ) + :parts ((sp-item 722))) (defmethod projectile-method-24 ((this mother-spider-proj)) (with-pp @@ -234,91 +216,60 @@ (let ((s4-0 pp)) (when (= a1-1 #t) (if (and s4-0 (type-type? (-> s4-0 type) process-drawable) (nonzero? (-> (the-as process-drawable s4-0) root))) - (set! a1-1 (-> (the-as process-drawable s4-0) root trans)) - (set! a1-1 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> s5-0 parms trans) a1-1) - ) + (set! a1-1 (-> (the-as process-drawable s4-0) root trans)) + (set! a1-1 (the-as vector #f))))) + (sound-trans-convert (-> s5-0 parms trans) a1-1)) (set! (-> s5-0 parms mask) (sound-mask trans)) - (-> s5-0 id) - ) + (-> s5-0 id)) (let ((f0-5 (* 5120.0 (+ 0.9 (* 0.1 (cos (* 873.81335 (the float (mod (current-time) 75))))))))) - (find-ground-and-draw-shadow - (-> this root trans) - (the-as vector #f) - f0-5 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - ) - (none) - ) - ) + (find-ground-and-draw-shadow (-> this root trans) + (the-as vector #f) + f0-5 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0)) + (none))) (defun mother-spider-proj-update-velocity ((arg0 mother-spider-proj)) (when (>= (vector-vector-xz-distance (-> arg0 parent-process 0 root trans) (-> arg0 target)) - (vector-vector-xz-distance (-> arg0 parent-process 0 root trans) (-> arg0 root trans)) - ) + (vector-vector-xz-distance (-> arg0 parent-process 0 root trans) (-> arg0 root trans))) (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) (-> arg0 target) (-> arg0 root trans))) (s4-0 (new 'stack-no-clear 'vector)) - (s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root transv) 1.0)) - ) - (if (logtest? (-> arg0 root status) (cshape-moving-flags tsurf)) - (vector-flatten! s3-1 s3-1 (-> arg0 root local-normal)) - ) + (s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root transv) 1.0))) + (if (logtest? (-> arg0 root status) (cshape-moving-flags tsurf)) (vector-flatten! s3-1 s3-1 (-> arg0 root local-normal))) (vector-normalize-copy! s4-0 s3-1 1.0) (let ((s3-2 (new 'stack-no-clear 'matrix))) - (matrix-from-two-vectors-max-angle-partial! - s3-2 - s5-0 - s4-0 - (* (-> arg0 max-turn) (seconds-per-frame)) - (-> arg0 tween) - ) - (vector-matrix*! s5-0 s5-0 s3-2) - ) + (matrix-from-two-vectors-max-angle-partial! s3-2 s5-0 s4-0 (* (-> arg0 max-turn) (seconds-per-frame)) (-> arg0 tween)) + (vector-matrix*! s5-0 s5-0 s3-2)) (vector-normalize! s5-0 1.0) - (vector-float*! (-> arg0 root transv) s5-0 (-> arg0 max-speed)) - ) - ) + (vector-float*! (-> arg0 root transv) s5-0 (-> arg0 max-speed)))) 0 - (none) - ) + (none)) (defmethod projectile-method-26 ((this mother-spider-proj)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) - (set! (-> s4-0 collide-with) - (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) - ) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (logclear! (-> this mask) (process-mask enemy)) (logclear! (-> this mask) (process-mask crate)) (logclear! (-> this mask) (process-mask attackable)) (logior! (-> this mask) (process-mask projectile)) 0 - (none) - ) + (none)) (defmethod projectile-method-27 ((this mother-spider-proj)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 326) this)) @@ -333,77 +284,58 @@ (set! (-> this target-base quad) (-> this target quad)) (set! (-> this sound-id) (sound-play "mother-track")) (sound-play "mother-fire") - (none) - ) + (none)) (defmethod projectile-method-28 ((this mother-spider-proj)) (when (and *target* (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) (let ((gp-0 (-> this target))) (set! (-> gp-0 quad) (-> (target-pos 0) quad)) (+! (-> gp-0 y) 4915.2) (let ((f0-2 (vector-vector-distance gp-0 (-> this root trans))) - (a2-0 (new 'stack-no-clear 'vector)) - ) - (if (>= 0.0 f0-2) - (set! f0-2 409.6) - ) + (a2-0 (new 'stack-no-clear 'vector))) + (if (>= 0.0 f0-2) (set! f0-2 409.6)) (set! (-> a2-0 quad) (-> *target* control transv quad)) (set! (-> a2-0 y) 0.0) - (let ((f0-3 (/ f0-2 (* 32768.0 (seconds-per-frame))))) - (vector+float*! gp-0 gp-0 a2-0 (* f0-3 (seconds-per-frame))) - ) - ) - ) - ) - (none) - ) + (let ((f0-3 (/ f0-2 (* 32768.0 (seconds-per-frame))))) (vector+float*! gp-0 gp-0 a2-0 (* f0-3 (seconds-per-frame))))))) + (none)) (defstate projectile-impact (mother-spider-proj) :virtual #t - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 327) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (sound-play "mother-hit") - (suspend) - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 327) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (sound-play "mother-hit") + (suspend) + (go-virtual projectile-die))) (defstate projectile-dissipate (mother-spider-proj) :virtual #t - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 328) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (suspend) - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 328) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (suspend) + (go-virtual projectile-die))) diff --git a/goal_src/jak1/levels/maincave/mother-spider.gc b/goal_src/jak1/levels/maincave/mother-spider.gc index 50660686eb..aa28eadb15 100644 --- a/goal_src/jak1/levels/maincave/mother-spider.gc +++ b/goal_src/jak1/levels/maincave/mother-spider.gc @@ -1,181 +1,153 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "levels/maincave/mother-spider-egg.gc") (require "levels/maincave/mother-spider-proj.gc") (require "levels/maincave/baby-spider.gc") (require "levels/maincave/mother-spider-h.gc") - -;; name: mother-spider.gc -;; name in dgo: mother-spider -;; dgos: L1, MAI, MAINCAVE - (declare-type mother-spider process-drawable) + (define-extern mother-spider-full-joint-callback (function mother-spider none)) ;; DECOMP BEGINS -(defskelgroup *mother-spider-sg* mother-spider mother-spider-lod0-jg -1 - ((mother-spider-lod0-mg (meters 20)) - (mother-spider-lod1-mg (meters 40)) - (mother-spider-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 8) - :shadow mother-spider-shadow-mg - ) +(defskelgroup *mother-spider-sg* + mother-spider + mother-spider-lod0-jg + -1 + ((mother-spider-lod0-mg (meters 20)) (mother-spider-lod1-mg (meters 40)) (mother-spider-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :shadow mother-spider-shadow-mg) -(defskelgroup *mother-spider-leg-sg* mother-spider mother-spider-leg-lod0-jg -1 - ((mother-spider-leg-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *mother-spider-leg-sg* + mother-spider + mother-spider-leg-lod0-jg + -1 + ((mother-spider-leg-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (define *mother-spider-threads* - (new 'static 'inline-array mother-spider-thread 9 - (new 'static 'mother-spider-thread :joint-index 27) - (new 'static 'mother-spider-thread :trans-u (the-as float #x1a) :swing-arc-u 0.35) - (new 'static 'mother-spider-thread :joint-index #x3dcccccd :swing-arc-u (the-as float #x19)) - (new 'static 'mother-spider-thread :joint-index #x3f19999a :trans-u 0.35) - (new 'static 'mother-spider-thread :joint-index 24 :trans-u 0.8 :swing-arc-u 0.65) - (new 'static 'mother-spider-thread :trans-u (the-as float #x17) :swing-arc-u 0.9) - (new 'static 'mother-spider-thread :joint-index #x3f4ccccd :swing-arc-u (the-as float #x16)) - (new 'static 'mother-spider-thread :joint-index #x3f733333 :trans-u 0.95) - (new 'static 'mother-spider-thread :joint-index 3 :trans-u 1.0 :swing-arc-u 1.0) - ) - ) + (new 'static + 'inline-array + mother-spider-thread + 9 + (new 'static 'mother-spider-thread :joint-index 27) + (new 'static 'mother-spider-thread :trans-u (the-as float #x1a) :swing-arc-u 0.35) + (new 'static 'mother-spider-thread :joint-index #x3dcccccd :swing-arc-u (the-as float #x19)) + (new 'static 'mother-spider-thread :joint-index #x3f19999a :trans-u 0.35) + (new 'static 'mother-spider-thread :joint-index 24 :trans-u 0.8 :swing-arc-u 0.65) + (new 'static 'mother-spider-thread :trans-u (the-as float #x17) :swing-arc-u 0.9) + (new 'static 'mother-spider-thread :joint-index #x3f4ccccd :swing-arc-u (the-as float #x16)) + (new 'static 'mother-spider-thread :joint-index #x3f733333 :trans-u 0.95) + (new 'static 'mother-spider-thread :joint-index 3 :trans-u 1.0 :swing-arc-u 1.0))) (define *mother-spider-leg-infos* - (new 'static 'inline-array mother-spider-leg-info 8 - (new 'static 'mother-spider-leg-info :joint-index0 13 :joint-index1 14 :cprim-index 8) - (new 'static 'mother-spider-leg-info :joint-index0 7 :joint-index1 8 :cprim-index 5) - (new 'static 'mother-spider-leg-info :joint-index0 15 :joint-index1 16 :cprim-index 7) - (new 'static 'mother-spider-leg-info :joint-index0 9 :joint-index1 10 :cprim-index 4) - (new 'static 'mother-spider-leg-info :joint-index0 17 :joint-index1 18 :cprim-index 6) - (new 'static 'mother-spider-leg-info :joint-index0 11 :joint-index1 12 :cprim-index 3) - (new 'static 'mother-spider-leg-info :joint-index0 27) - (new 'static 'mother-spider-leg-info :joint-index0 26 :joint-index1 #x3eb33333 :cprim-index #x3dcccccd) - ) - ) + (new 'static + 'inline-array + mother-spider-leg-info + 8 + (new 'static 'mother-spider-leg-info :joint-index0 13 :joint-index1 14 :cprim-index 8) + (new 'static 'mother-spider-leg-info :joint-index0 7 :joint-index1 8 :cprim-index 5) + (new 'static 'mother-spider-leg-info :joint-index0 15 :joint-index1 16 :cprim-index 7) + (new 'static 'mother-spider-leg-info :joint-index0 9 :joint-index1 10 :cprim-index 4) + (new 'static 'mother-spider-leg-info :joint-index0 17 :joint-index1 18 :cprim-index 6) + (new 'static 'mother-spider-leg-info :joint-index0 11 :joint-index1 12 :cprim-index 3) + (new 'static 'mother-spider-leg-info :joint-index0 27) + (new 'static 'mother-spider-leg-info :joint-index0 26 :joint-index1 #x3eb33333 :cprim-index #x3dcccccd))) (defpartgroup group-mother-spider-leg :id 614 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2477)) - ) + :parts ((sp-item 2477))) (defpart 2477 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 0.1) (meters 0.35)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0) - (:b 96.0 128.0) - (:a 48.0 48.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:scalevel-y (meters 0.002)) - (:fade-a -0.4) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:conerot-x (degrees 90) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.1) (meters 0.35)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0) + (:b 96.0 128.0) + (:a 48.0 48.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:scalevel-y (meters 0.002)) + (:fade-a -0.4) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:conerot-x (degrees 90) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defstate mother-spider-leg-flying (mother-spider-leg) - :trans (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (+! (-> self transv y) (* (-> self gravity) (seconds-per-frame))) - (let ((gp-0 (new 'stack-no-clear 'collide-tri-result)) - (a2-0 (new 'stack-no-clear 'vector)) - ) - (let ((v1-1 a2-0)) - (.lvf vf1 (&-> (-> self transv) quad)) - (let ((f0-2 (seconds-per-frame))) - (.mov at-0 f0-2) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-1 quad) vf1) - ) - (when (>= (fill-and-probe-using-line-sphere - *collide-cache* - (-> self root trans) - a2-0 - 3276.8 - (collide-kind background) - self - gp-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (let ((f28-0 (vector-xz-length (-> self transv)))) - (vector-reflect! (-> self transv) (-> self transv) (-> gp-0 normal)) - (let ((f30-0 (-> self transv y))) - (set! (-> self transv y) 0.0) - (vector-normalize! (-> self transv) (* f28-0 (rand-vu-float-range 0.3 0.8))) - (set! (-> self transv y) (* 0.7 f30-0)) - ) - ) - (set-vector! - (-> self facing-rotv) - (rand-vu-float-range 5461.3335 40049.777) - 0.0 - (rand-vu-float-range 16384.0 54613.332) - 1.0 - ) - ) - ) - (vector-v+! (-> self root trans) (-> self root trans) (-> self transv)) - (+! (-> self facing-rot x) (* (-> self facing-rotv x) (seconds-per-frame))) - (set! (-> self facing-rot z) - (deg-seek (-> self facing-rot z) 16384.0 (* (-> self facing-rotv z) (seconds-per-frame))) - ) - (quaternion-zxy! (-> self root quat) (-> self facing-rot)) - (seek! (-> self root scale x) 0.0 (* 0.5 (seconds-per-frame))) - (set! (-> self root scale y) (-> self root scale x)) - (set! (-> self root scale z) (-> self root scale x)) - ) - ) - :code (behavior () - (ja-channel-push! 1 0) - (let ((f30-0 (rand-vu-float-range 0.2 0.7))) - (dotimes (gp-0 3) - (ja-no-eval :group! mother-spider-leg-twitching-ja :num! (seek! max f30-0) :frame-num 0.0) + :trans + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) + (init-vf0-vector) + (+! (-> self transv y) (* (-> self gravity) (seconds-per-frame))) + (let ((gp-0 (new 'stack-no-clear 'collide-tri-result)) + (a2-0 (new 'stack-no-clear 'vector))) + (let ((v1-1 a2-0)) + (.lvf vf1 (&-> (-> self transv) quad)) + (let ((f0-2 (seconds-per-frame))) (.mov at-0 f0-2)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-1 quad) vf1)) + (when (>= (fill-and-probe-using-line-sphere *collide-cache* + (-> self root trans) + a2-0 + 3276.8 + (collide-kind background) + self + gp-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (let ((f28-0 (vector-xz-length (-> self transv)))) + (vector-reflect! (-> self transv) (-> self transv) (-> gp-0 normal)) + (let ((f30-0 (-> self transv y))) + (set! (-> self transv y) 0.0) + (vector-normalize! (-> self transv) (* f28-0 (rand-vu-float-range 0.3 0.8))) + (set! (-> self transv y) (* 0.7 f30-0)))) + (set-vector! (-> self facing-rotv) + (rand-vu-float-range 5461.3335 40049.777) + 0.0 + (rand-vu-float-range 16384.0 54613.332) + 1.0))) + (vector-v+! (-> self root trans) (-> self root trans) (-> self transv)) + (+! (-> self facing-rot x) (* (-> self facing-rotv x) (seconds-per-frame))) + (set! (-> self facing-rot z) (deg-seek (-> self facing-rot z) 16384.0 (* (-> self facing-rotv z) (seconds-per-frame)))) + (quaternion-zxy! (-> self root quat) (-> self facing-rot)) + (seek! (-> self root scale x) 0.0 (* 0.5 (seconds-per-frame))) + (set! (-> self root scale y) (-> self root scale x)) + (set! (-> self root scale z) (-> self root scale x)))) + :code + (behavior () + (ja-channel-push! 1 0) + (let ((f30-0 (rand-vu-float-range 0.2 0.7))) + (dotimes (gp-0 3) + (ja-no-eval :group! mother-spider-leg-twitching-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (-> self root trans)) + (suspend) + (ja :num! (seek! max f30-0)))) + (ja-no-eval :group! mother-spider-leg-die-ja :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) - (spawn (-> self part) (-> self root trans)) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (ja-no-eval :group! mother-spider-leg-die-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek! max f30-0))))) + :post ja-post) (defstate wait-for-children (mother-spider) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (until (not (-> self child)) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (until (not (-> self child)) + (suspend))) + :post ja-post) (defbehavior mother-spider-leg-init-by-other mother-spider-leg ((arg0 mother-spider) (arg1 vector) (arg2 vector) (arg3 vector)) (set! (-> self entity) (-> arg0 entity)) @@ -186,54 +158,47 @@ (set-heading-vec-clear-roll-pitch! (-> self root) arg2) (vector-float*! (-> self transv) arg3 (rand-vu-float-range 10240.0 30720.0)) (rot-zxy-from-vector! (-> self facing-rot) arg2) - (set-vector! - (-> self facing-rotv) - (rand-vu-float-range 5461.3335 16384.0) - 0.0 - (rand-vu-float-range 16384.0 36408.89) - 1.0 - ) + (set-vector! (-> self facing-rotv) + (rand-vu-float-range 5461.3335 16384.0) + 0.0 + (rand-vu-float-range 16384.0 36408.89) + 1.0) (set! (-> self gravity) (rand-vu-float-range -266240.0 -163840.0)) (initialize-skeleton self *mother-spider-leg-sg* '()) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 614) self)) - (create-connection! - *cavecrystal-light-control* - self - (-> self entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - -1 - 4096.0 - ) + (create-connection! *cavecrystal-light-control* + self + (-> self entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + -1 + 4096.0) (go mother-spider-leg-flying) - (none) - ) + (none)) (defpartgroup group-mother-spider-leg-socket :id 618 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2498 :period (seconds 0.3) :length (seconds 0.1))) - ) + :parts ((sp-item 2498 :period (seconds 0.3) :length (seconds 0.1)))) (defpart 2498 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 2.0) - (:scale-x (meters 0.1) (meters 0.35)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0) - (:b 96.0 128.0) - (:a 48.0 48.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-y (meters 0.002)) - (:fade-a -0.4) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 2.0) + (:scale-x (meters 0.1) (meters 0.35)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0) + (:b 96.0 128.0) + (:a 48.0 48.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-y (meters 0.002)) + (:fade-a -0.4) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)))) (defbehavior mother-spider-default-event-handler mother-spider ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -244,287 +209,158 @@ (when (!= v1-2 (-> self player-attack-id)) (set! (-> self player-attack-id) v1-2) (case (-> arg3 param 1) - (('uppercut) - (go mother-spider-die-from-uppercut) - ) + (('uppercut) (go mother-spider-die-from-uppercut)) (else - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((v1-5 (target-pos 0))) - (vector-! gp-0 (-> self root trans) v1-5) - ) - (set! (-> gp-0 y) 0.0) - (vector-normalize! gp-0 1.0) - (+! (-> self thread-vel) -40960.0) - (if (mother-spider-method-21 self gp-0 102400.0 #t) - (go mother-spider-die) - ) - ) - ) - ) - ) - ) - ) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((v1-5 (target-pos 0))) (vector-! gp-0 (-> self root trans) v1-5)) + (set! (-> gp-0 y) 0.0) + (vector-normalize! gp-0 1.0) + (+! (-> self thread-vel) -40960.0) + (if (mother-spider-method-21 self gp-0 102400.0 #t) (go mother-spider-die)))))))) (else - (let ((gp-1 (new 'stack-no-clear 'vector))) - (let ((v1-10 (-> (the-as process-drawable arg0) root trans))) - (vector-! gp-1 (-> self root trans) v1-10) - ) - (set! (-> gp-1 y) 0.0) - (vector-normalize! gp-1 1.0) - (+! (-> self thread-vel) -40960.0) - (if (mother-spider-method-21 self gp-1 102400.0 #t) - (go mother-spider-die) - ) - ) - ) - ) - ) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (let ((v1-10 (-> (the-as process-drawable arg0) root trans))) (vector-! gp-1 (-> self root trans) v1-10)) + (set! (-> gp-1 y) 0.0) + (vector-normalize! gp-1 1.0) + (+! (-> self thread-vel) -40960.0) + (if (mother-spider-method-21 self gp-1 102400.0 #t) (go mother-spider-die)))))) (('touch) (when (= (-> arg0 type) target) - (when (send-event - arg0 - 'attack - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 2)))) - ) + (when (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 2))))) (let ((gp-2 (new 'stack-no-clear 'vector))) - (let ((v1-20 (target-pos 0))) - (vector-! gp-2 (-> self root trans) v1-20) - ) + (let ((v1-20 (target-pos 0))) (vector-! gp-2 (-> self root trans) v1-20)) (set! (-> gp-2 y) 0.0) (vector-normalize! gp-2 1.0) (+! (-> self thread-vel) -8192.0) - (mother-spider-method-21 self gp-2 40960.0 #f) - ) - ) - ) - ) + (mother-spider-method-21 self gp-2 40960.0 #f))))) (('trigger) (when (= (-> arg0 type) mother-spider-egg) (let ((gp-3 (new 'stack-no-clear 'vector)) - (s5-0 (-> (the-as process-drawable arg0) root trans)) - ) + (s5-0 (-> (the-as process-drawable arg0) root trans))) (vector-! gp-3 (target-pos 0) s5-0) (set! (-> gp-3 y) 0.0) (vector-normalize! gp-3 1.0) - (spawn-child self s5-0 gp-3 #t) - ) - ) - ) + (spawn-child self s5-0 gp-3 #t)))) (('untrigger) (when (or (= (-> arg0 type) mother-spider-egg) (= (-> arg0 type) baby-spider)) - (let ((v0-0 (the-as object (+ (-> self baby-count) -1)))) - (set! (-> self baby-count) (the-as int v0-0)) - v0-0 - ) - ) - ) - ) - ) + (let ((v0-0 (the-as object (+ (-> self baby-count) -1)))) (set! (-> self baby-count) (the-as int v0-0)) v0-0))))) (defbehavior mother-spider-death-event-handler mother-spider ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('trigger) (when (= (-> arg0 type) mother-spider-egg) (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (-> (the-as process-drawable arg0) root trans)) - ) + (s5-0 (-> (the-as process-drawable arg0) root trans))) (vector-! gp-0 (target-pos 0) s5-0) (set! (-> gp-0 y) 0.0) (vector-normalize! gp-0 1.0) - (spawn-child self s5-0 gp-0 #t) - ) - ) - ) - (('death-start) - (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) - ) + (spawn-child self s5-0 gp-0 #t)))) + (('death-start) (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0)) (('death-end) (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) - v0-0 - ) - ) - ) - ) + v0-0)))) (defmethod spawn-child ((this mother-spider) (arg0 vector) (arg1 vector) (arg2 symbol)) (let ((s3-0 (new 'stack-no-clear 'baby-spider-spawn-params))) (init! s3-0 arg2 #f #t #f 7 1 'untrigger) (set-delay! s3-0 (seconds 9)) - (process-spawn baby-spider this arg0 arg1 s3-0 :to this) - ) - (let ((v0-5 (+ (-> this baby-count) 1))) - (set! (-> this baby-count) v0-5) - v0-5 - ) - ) + (process-spawn baby-spider this arg0 arg1 s3-0 :to this)) + (let ((v0-5 (+ (-> this baby-count) 1))) (set! (-> this baby-count) v0-5) v0-5)) (defmethod is-player-stuck? ((this mother-spider)) - (when (and *target* (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - ) + (when (and *target* + (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))))) (let* ((v1-10 (target-pos 0)) (f0-1 (- (-> this anchor-trans y) (-> v1-10 y))) - (f1-2 (- (-> this player-sticky-dist-from-anchor) f0-1)) - ) + (f1-2 (- (-> this player-sticky-dist-from-anchor) f0-1))) (when (or (< 8192.0 f1-2) (< f1-2 -8192.0)) (set! (-> this player-sticky-dist-from-anchor) f0-1) - (return #t) - ) - ) - ) - #f - ) + (return #t)))) + #f) (defmethod mother-spider-method-27 ((this mother-spider)) - (none) - ) + (none)) (defmethod mother-spider-method-28 ((this mother-spider)) 0 - (none) - ) + (none)) (defmethod shadow-handler ((this mother-spider)) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) - (a2-0 (new 'stack-no-clear 'vector)) - ) + (a2-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> this root trans quad)) (set-vector! a2-0 0.0 -81920.0 0.0 1.0) (+! (-> a1-0 y) -8192.0) (cond - ((>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-0 - a2-0 - 8192.0 - (collide-kind background) - this - s5-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (let ((v1-11 (-> this draw shadow-ctrl))) - (logclear! (-> v1-11 settings flags) (shadow-flags disable-draw)) - ) + ((>= (fill-and-probe-using-line-sphere *collide-cache* + a1-0 + a2-0 + 8192.0 + (collide-kind background) + this + s5-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (let ((v1-11 (-> this draw shadow-ctrl))) (logclear! (-> v1-11 settings flags) (shadow-flags disable-draw))) 0 - (let ((v1-14 (-> this draw shadow-ctrl))) - (set! (-> v1-14 settings bot-plane w) (- (+ -6144.0 (-> s5-0 intersect y)))) - ) + (let ((v1-14 (-> this draw shadow-ctrl))) (set! (-> v1-14 settings bot-plane w) (- (+ -6144.0 (-> s5-0 intersect y))))) 0 - (let ((v1-17 (-> this draw shadow-ctrl))) - (set! (-> v1-17 settings top-plane w) (- (+ 6144.0 (-> s5-0 intersect y)))) - ) + (let ((v1-17 (-> this draw shadow-ctrl))) (set! (-> v1-17 settings top-plane w) (- (+ 6144.0 (-> s5-0 intersect y))))) 0 (let* ((f3-0 (vector-vector-distance (-> s5-0 intersect) (-> this root trans))) - (f0-14 (* 0.000030517578 (fmin 32768.0 (fmax 0.0 (+ -57344.0 f3-0))))) - ) - (set! (-> this draw shadow-ctrl settings shadow-dir w) (lerp 409600.0 40960.0 f0-14)) - ) - ) - (else - (let ((v1-23 (-> this draw shadow-ctrl))) - (logior! (-> v1-23 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) - ) - (else - (let ((v1-25 (-> this draw shadow-ctrl))) - (logior! (-> v1-25 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) + (f0-14 (* 0.000030517578 (fmin 32768.0 (fmax 0.0 (+ -57344.0 f3-0)))))) + (set! (-> this draw shadow-ctrl settings shadow-dir w) (lerp 409600.0 40960.0 f0-14)))) + (else (let ((v1-23 (-> this draw shadow-ctrl))) (logior! (-> v1-23 settings flags) (shadow-flags disable-draw))) 0)))) + (else (let ((v1-25 (-> this draw shadow-ctrl))) (logior! (-> v1-25 settings flags) (shadow-flags disable-draw))) 0))) (defmethod grab-player? ((this mother-spider)) (when *target* (let ((s5-0 (target-pos 0))) (when (and (>= 40960.0 (- (-> this thread-min-trans y) (-> s5-0 y))) - (>= (-> this activate-xz-dist) (vector-vector-xz-distance (-> this thread-min-trans) s5-0)) - ) + (>= (-> this activate-xz-dist) (vector-vector-xz-distance (-> this thread-min-trans) s5-0))) (cond ((-> this check-z-thresh?) - (let ((f0-3 (- (-> s5-0 z) (-> this root trans z)))) - (if (>= (-> this activate-z-thresh) f0-3) - (return #t) - ) - ) - ) - (else - (return #t) - ) - ) - ) - ) - ) - #f - ) + (let ((f0-3 (- (-> s5-0 z) (-> this root trans z)))) (if (>= (-> this activate-z-thresh) f0-3) (return #t)))) + (else (return #t)))))) + #f) (defmethod letgo-player? ((this mother-spider)) - (if (not *target*) - (return #t) - ) + (if (not *target*) (return #t)) (let ((a1-0 (target-pos 0))) (when (-> this check-z-thresh?) - (if (>= (- (-> a1-0 z) (-> this root trans z)) (-> this deactivate-z-thresh)) - (return #t) - ) - ) + (if (>= (- (-> a1-0 z) (-> this root trans z)) (-> this deactivate-z-thresh)) (return #t))) (if (or (>= (- (-> this thread-min-trans y) (-> a1-0 y)) 49152.0) - (>= (vector-vector-xz-distance (-> this thread-min-trans) a1-0) (-> this deactivate-xz-dist)) - ) - (return #t) - ) - ) - #f - ) + (>= (vector-vector-xz-distance (-> this thread-min-trans) a1-0) (-> this deactivate-xz-dist))) + (return #t))) + #f) (defmethod mother-spider-method-21 ((this mother-spider) (arg0 vector) (arg1 float) (arg2 symbol)) (local-vars (sv-112 process) (sv-128 vector) (sv-144 vector)) (let ((f30-0 (vector-length (-> this swing-pos)))) (when (< 0.0 f30-0) (let ((s1-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) - ) + (s2-0 (new 'stack-no-clear 'vector))) (vector-normalize-copy! s1-0 (-> this swing-pos) 1.0) (vector-rotate-around-y! s2-0 s1-0 16384.0) - (if (< (vector-dot arg0 s2-0) 0.0) - (vector-negate! s2-0 s2-0) - ) - (let ((f0-4 (fmin 1.0 (/ f30-0 (-> this max-swing-radius))))) - (vector-lerp! arg0 arg0 s2-0 f0-4) - ) - ) - (vector-normalize! arg0 1.0) - ) - ) + (if (< (vector-dot arg0 s2-0) 0.0) (vector-negate! s2-0 s2-0)) + (let ((f0-4 (fmin 1.0 (/ f30-0 (-> this max-swing-radius))))) (vector-lerp! arg0 arg0 s2-0 f0-4))) + (vector-normalize! arg0 1.0))) (let ((s2-1 (new 'stack-no-clear 'vector))) (vector-float*! s2-1 arg0 arg1) (vector-flatten! (-> this swing-vel) (-> this swing-vel) arg0) - (vector+! (-> this swing-vel) (-> this swing-vel) s2-1) - ) + (vector+! (-> this swing-vel) (-> this swing-vel) s2-1)) (set! (-> this swing-vel y) 0.0) (when arg2 (set! (-> this hit?) #t) (set! (-> this spin-vel) 131072.0) (set-time! (-> this spin-time)) (let ((s4-1 (-> this damage)) - (s3-1 (-> this root root-prim)) - ) + (s3-1 (-> this root root-prim))) (dotimes (s2-2 2) (when (< (-> this damage) 6) (+! (-> this damage) 1) @@ -545,25 +381,15 @@ (set! sv-112 (get-process *default-dead-pool* mother-spider-leg #x4000)) (when sv-112 (let ((t9-15 (method-of-type mother-spider-leg activate))) - (t9-15 (the-as mother-spider-leg sv-112) this 'mother-spider-leg (the-as pointer #x70004000)) - ) + (t9-15 (the-as mother-spider-leg sv-112) this 'mother-spider-leg (the-as pointer #x70004000))) (run-now-in-process sv-112 mother-spider-leg-init-by-other this s0-0 sv-128 sv-144) - (-> sv-112 ppointer) - ) - ) + (-> sv-112 ppointer))) (let ((v1-43 (-> (the-as collide-shape-prim-group s3-1) prims (-> s1-1 cprim-index)))) (set! (-> v1-43 collide-with) (collide-kind)) - (set! (-> v1-43 prim-core collide-as) (collide-kind)) - ) - ) + (set! (-> v1-43 prim-core collide-as) (collide-kind)))) 0 - (+! s4-1 1) - ) - ) - ) - ) - (>= (-> this damage) 6) - ) + (+! s4-1 1))))) + (>= (-> this damage) 6)) (defmethod mother-spider-method-29 ((this mother-spider) (arg0 symbol) (arg1 symbol)) (let ((v1-1 (current-time))) @@ -572,115 +398,56 @@ (mother-spider-method-23 this) (let ((f0-1 (fmax 0.0 (- (-> this dist-from-anchor) (-> this idle-dist-from-anchor))))) (cond - ((>= f0-1 20480.0) - (vector-identity! (-> this root scale)) - ) - (else - (let ((f0-2 (* 0.000048828126 f0-1))) - (set-vector! (-> this root scale) f0-2 f0-2 f0-2 1.0) - ) - ) - ) - ) - (if arg0 - (shadow-handler this) - ) + ((>= f0-1 20480.0) (vector-identity! (-> this root scale))) + (else (let ((f0-2 (* 0.000048828126 f0-1))) (set-vector! (-> this root scale) f0-2 f0-2 f0-2 1.0))))) + (if arg0 (shadow-handler this)) (let ((s4-1 (-> this leg-socket-part-mask))) (when (nonzero? s4-1) (dotimes (s3-0 6) (when (logtest? s4-1 1) (cond ((>= (+ (current-time) (seconds -1)) (-> this leg-socket-part-time s3-0)) - (logxor! (-> this leg-socket-part-mask) (ash 1 s3-0)) - ) + (logxor! (-> this leg-socket-part-mask) (ash 1 s3-0))) (else - (let ((v1-20 (-> *mother-spider-leg-infos* s3-0)) - (s2-0 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! s2-0 (-> this node-list data (-> v1-20 joint-index0))) - (spawn (-> this part) s2-0) - ) - ) - ) - ) - (set! s4-1 (/ s4-1 2)) - ) - ) - ) + (let ((v1-20 (-> *mother-spider-leg-infos* s3-0)) + (s2-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! s2-0 (-> this node-list data (-> v1-20 joint-index0))) + (spawn (-> this part) s2-0))))) + (set! s4-1 (/ s4-1 2))))) (when arg1 (when *target* (case (-> this mode) ((1 2) - (if *target* - (look-at-enemy! (-> *target* neck) (the-as vector (-> this root root-prim prim-core)) 'attacking this) - ) - ) - ) - ) - (set-target! (-> this neck) (target-pos 5)) - ) - ) - ) - (none) - ) + (if *target* (look-at-enemy! (-> *target* neck) (the-as vector (-> this root root-prim prim-core)) 'attacking this))))) + (set-target! (-> this neck) (target-pos 5))))) + (none)) (defmethod mother-spider-method-23 ((this mother-spider)) (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let* ((f2-0 (-> this dist-from-anchor)) (f1-0 (- (-> this targ-dist-from-anchor) f2-0)) - (f0-1 (-> this thread-vel)) - ) + (f0-1 (-> this thread-vel))) (when (or (!= f0-1 0.0) (!= f1-0 0.0)) (let ((f0-2 (+ f0-1 (* 2.0 f1-0)))) - (let ((f3-4 (-> this thread-speed))) - (if (< f3-4 (fabs f0-2)) - (set! f0-2 (if (>= f0-2 0.0) - f3-4 - (- f3-4) - ) - ) - ) - ) + (let ((f3-4 (-> this thread-speed))) (if (< f3-4 (fabs f0-2)) (set! f0-2 (if (>= f0-2 0.0) f3-4 (- f3-4))))) (let ((f2-1 (+ f2-0 (* f0-2 (seconds-per-frame))))) (let ((f3-8 (- (-> this targ-dist-from-anchor) f2-1))) (cond - ((>= f1-0 0.0) - (if (>= 0.0 f3-8) - (set! f0-2 (- f0-2 (* 0.55 f0-2))) - ) - ) - (else - (if (>= f3-8 0.0) - (set! f0-2 (- f0-2 (* 0.55 f0-2))) - ) - ) - ) - ) - (set! (-> this dist-from-anchor) (fmax 0.0 f2-1)) - ) - (set! (-> this thread-vel) f0-2) - ) - ) - ) + ((>= f1-0 0.0) (if (>= 0.0 f3-8) (set! f0-2 (- f0-2 (* 0.55 f0-2))))) + (else (if (>= f3-8 0.0) (set! f0-2 (- f0-2 (* 0.55 f0-2))))))) + (set! (-> this dist-from-anchor) (fmax 0.0 f2-1))) + (set! (-> this thread-vel) f0-2)))) (let ((s5-0 (new 'stack-no-clear 'vector))) (vector-negate! s5-0 (-> this swing-base-pos)) (set! (-> s5-0 y) 0.0) (let ((f0-4 (vector-length s5-0))) (when (< 0.0 f0-4) - (let ((f1-11 (* 61440.0 (seconds-per-frame)))) - (if (< f1-11 f0-4) - (vector-normalize! s5-0 f1-11) - ) - ) - (vector+! (-> this swing-vel) (-> this swing-vel) s5-0) - ) - ) - ) + (let ((f1-11 (* 61440.0 (seconds-per-frame)))) (if (< f1-11 f0-4) (vector-normalize! s5-0 f1-11))) + (vector+! (-> this swing-vel) (-> this swing-vel) s5-0)))) (let ((f0-5 (vector-length (-> this swing-vel)))) (when (< 0.0 f0-5) (let ((f0-6 (* 0.995 f0-5))) @@ -689,621 +456,403 @@ (vector-normalize! (-> this swing-vel) f0-6) (let ((s5-1 (new 'stack-no-clear 'event-message-block)) (s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (vector<-cspace! s4-0 (-> this node-list data 6)) (let ((v1-20 s3-0)) (.lvf vf1 (&-> (-> this swing-vel) quad)) - (let ((f0-7 (seconds-per-frame))) - (.mov at-0 f0-7) - ) + (let ((f0-7 (seconds-per-frame))) (.mov at-0 f0-7)) (.mov vf2 at-0) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-20 quad) vf1) - ) - (when (>= (fill-and-probe-using-line-sphere - *collide-cache* - s4-0 - s3-0 - 4915.2 - (collide-kind background) - this - (the-as collide-tri-result s5-1) - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (.svf (&-> v1-20 quad) vf1)) + (when (>= (fill-and-probe-using-line-sphere *collide-cache* + s4-0 + s3-0 + 4915.2 + (collide-kind background) + this + (the-as collide-tri-result s5-1) + (new 'static 'pat-surface :noentity #x1)) + 0.0) (vector-reflect! (-> this swing-vel) (-> this swing-vel) (the-as vector (&-> s5-1 param 6))) (set! (-> this swing-vel y) 0.0) (vector-normalize! (-> this swing-vel) (* 0.5 (vector-length (-> this swing-vel)))) (when (and (!= (-> this spin-vel) 0.0) (time-elapsed? (-> this spin-time) (seconds 0.5))) (set! (-> this spin-vel) (* 0.75 (- (-> this spin-vel)))) - (set-time! (-> this spin-time)) - ) - ) - ) + (set-time! (-> this spin-time))))) (vector-v+! (-> this swing-base-pos) (-> this swing-base-pos) (-> this swing-vel)) - 0 - ) - (else - (vector-reset! (-> this swing-vel)) - ) - ) - ) - ) - ) + 0) + (else (vector-reset! (-> this swing-vel))))))) (set! (-> this swing-pos quad) (-> this swing-base-pos quad)) (let ((f30-1 (the float (- (current-time) (-> this spawned-time))))) (+! (-> this swing-pos x) (* 1024.0 (cos (* 54.613335 f30-1)))) - (+! (-> this swing-pos z) (* 1024.0 (cos (* 81.817726 f30-1)))) - ) + (+! (-> this swing-pos z) (* 1024.0 (cos (* 81.817726 f30-1))))) (let ((f0-26 (vector-length (-> this swing-pos)))) (cond ((!= f0-26 0.0) (let* ((f30-2 (-> this dist-from-anchor)) - (f28-2 (* 10430.379 (/ f0-26 f30-2))) - ) - (set-vector! (-> this root trans) 0.0 (* (cos f28-2) (- f30-2)) (* (sin f28-2) f30-2) 1.0) - ) + (f28-2 (* 10430.379 (/ f0-26 f30-2)))) + (set-vector! (-> this root trans) 0.0 (* (cos f28-2) (- f30-2)) (* (sin f28-2) f30-2) 1.0)) (let ((f0-36 (atan (-> this swing-pos x) (-> this swing-pos z)))) - (vector-rotate-around-y! (-> this root trans) (-> this root trans) f0-36) - ) - (vector+! (-> this root trans) (-> this root trans) (-> this anchor-trans)) - ) + (vector-rotate-around-y! (-> this root trans) (-> this root trans) f0-36)) + (vector+! (-> this root trans) (-> this root trans) (-> this anchor-trans))) (else - (set! (-> this root trans quad) (-> this anchor-trans quad)) - (set! (-> this root trans y) (- (-> this root trans y) (-> this dist-from-anchor))) - ) - ) - ) + (set! (-> this root trans quad) (-> this anchor-trans quad)) + (set! (-> this root trans y) (- (-> this root trans y) (-> this dist-from-anchor)))))) (let ((v1-51 (-> this draw bounds))) (vector+! v1-51 (-> this root trans) (-> this anchor-trans)) (vector-float*! v1-51 v1-51 0.5) (vector-! v1-51 v1-51 (-> this root trans)) - (set! (-> v1-51 w) (+ 28672.0 (* 0.5 (-> this dist-from-anchor)))) - ) + (set! (-> v1-51 w) (+ 28672.0 (* 0.5 (-> this dist-from-anchor))))) (cond ((!= (-> this spin-vel) 0.0) (let ((f0-44 (+ (-> this orient-rot y) (* (-> this spin-vel) (seconds-per-frame))))) - (set! (-> this orient-rot y) (- f0-44 (* (the float (the int (/ f0-44 65536.0))) 65536.0))) - ) + (set! (-> this orient-rot y) (- f0-44 (* (the float (the int (/ f0-44 65536.0))) 65536.0)))) (seek! (-> this spin-vel) 0.0 (* 91022.22 (seconds-per-frame))) (when (< (fabs (-> this spin-vel)) 69176.89) - (if (>= (-> this spin-vel) 0.0) - (set! (-> this spin-vel) 69176.89) - (set! (-> this spin-vel) -69176.89) - ) + (if (>= (-> this spin-vel) 0.0) (set! (-> this spin-vel) 69176.89) (set! (-> this spin-vel) -69176.89)) (cond (*target* - (let* ((v1-59 (target-pos 0)) - (f0-59 (atan (- (-> v1-59 x) (-> this root trans x)) (- (-> v1-59 z) (-> this root trans z)))) - ) - (if (>= 3640.889 (fabs (deg- f0-59 (-> this orient-rot y)))) - (set! (-> this spin-vel) 0.0) - ) - ) - ) - (else - (set! (-> this spin-vel) 0.0) - ) - ) - ) - ) + (let* ((v1-59 (target-pos 0)) + (f0-59 (atan (- (-> v1-59 x) (-> this root trans x)) (- (-> v1-59 z) (-> this root trans z))))) + (if (>= 3640.889 (fabs (deg- f0-59 (-> this orient-rot y)))) (set! (-> this spin-vel) 0.0)))) + (else (set! (-> this spin-vel) 0.0))))) (else - (when *target* - (let* ((v1-66 (target-pos 0)) - (f0-69 (atan (- (-> v1-66 x) (-> this root trans x)) (- (-> v1-66 z) (-> this root trans z)))) - ) - (set! (-> this orient-rot y) - (deg-seek-smooth (-> this orient-rot y) f0-69 (* 32768.0 (seconds-per-frame)) 0.2) - ) - ) - ) - ) - ) + (when *target* + (let* ((v1-66 (target-pos 0)) + (f0-69 (atan (- (-> v1-66 x) (-> this root trans x)) (- (-> v1-66 z) (-> this root trans z))))) + (set! (-> this orient-rot y) (deg-seek-smooth (-> this orient-rot y) f0-69 (* 32768.0 (seconds-per-frame)) 0.2)))))) (quaternion-zxy! (-> this root quat) (-> this orient-rot)) 0 - (none) - ) - ) + (none))) (defstate mother-spider-idle (mother-spider) - :enter (behavior () - (let ((v1-1 (-> self draw shadow-ctrl))) - (logior! (-> v1-1 settings flags) (shadow-flags disable-draw)) - ) - 0 - (set! (-> self mode) (the-as uint 0)) - (set! (-> self skel postbind-function) (the-as (function process-drawable none) 0)) - (clear-collide-with-as (-> self root)) - (shut-down! (-> self neck)) - (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self draw status) (draw-status hidden)) - ) - :exit (behavior () - (restore-collide-with-as (-> self root)) - (set! (-> self skel postbind-function) mother-spider-full-joint-callback) - (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (if (grab-player? self) - (go mother-spider-traveling (the-as uint 1)) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :enter + (behavior () + (let ((v1-1 (-> self draw shadow-ctrl))) (logior! (-> v1-1 settings flags) (shadow-flags disable-draw))) + 0 + (set! (-> self mode) (the-as uint 0)) + (set! (-> self skel postbind-function) (the-as (function process-drawable none) 0)) + (clear-collide-with-as (-> self root)) + (shut-down! (-> self neck)) + (logior! (-> self mask) (process-mask actor-pause)) + (logior! (-> self draw status) (draw-status hidden))) + :exit + (behavior () + (restore-collide-with-as (-> self root)) + (set! (-> self skel postbind-function) mother-spider-full-joint-callback) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (if (grab-player? self) (go mother-spider-traveling (the-as uint 1)))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate mother-spider-traveling (mother-spider) :event mother-spider-default-event-handler - :enter (behavior ((arg0 uint)) - (is-player-stuck? self) - (let ((v1-2 arg0)) - (cond - ((zero? v1-2) - (set! (-> self targ-dist-from-anchor) (-> self idle-dist-from-anchor)) - (set! (-> self thread-speed) 81920.0) - ) - ((= v1-2 1) - (set! (-> self targ-dist-from-anchor) - (fmax - (fmin (+ -28672.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) - (-> self idle-dist-from-anchor) - ) - ) - (if (zero? (-> self mode)) - (set! (-> self thread-speed) 327680.0) - (set! (-> self thread-speed) 81920.0) - ) - (set! (-> self spit-counter) 3) - ) - ((= v1-2 2) - (set! (-> self targ-dist-from-anchor) - (fmax - (fmin (+ -43008.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) - (-> self idle-dist-from-anchor) - ) - ) - (set! (-> self thread-speed) 28672.0) - ) - ) - ) - (set! (-> self mode) arg0) - (set! (-> self hit?) #f) - (set! (-> self going-up?) (< (-> self targ-dist-from-anchor) (-> self dist-from-anchor))) - ) - :trans (behavior () - (let ((gp-0 (is-player-stuck? self)) - (v1-1 (-> self mode)) - ) - (cond - ((zero? v1-1) - (if (grab-player? self) - (go mother-spider-traveling (the-as uint 1)) - ) - ) - ((= v1-1 1) - (if (letgo-player? self) - (go mother-spider-traveling (the-as uint 0)) - ) - (when gp-0 + :enter + (behavior ((arg0 uint)) + (is-player-stuck? self) + (let ((v1-2 arg0)) + (cond + ((zero? v1-2) + (set! (-> self targ-dist-from-anchor) (-> self idle-dist-from-anchor)) + (set! (-> self thread-speed) 81920.0)) + ((= v1-2 1) (set! (-> self targ-dist-from-anchor) - (fmax - (fmin (+ -28672.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) - (-> self idle-dist-from-anchor) - ) - ) - (set! (-> self going-up?) (< (-> self targ-dist-from-anchor) (-> self dist-from-anchor))) - ) - ) - ((= v1-1 2) - (if (letgo-player? self) - (go mother-spider-traveling (the-as uint 0)) - ) - (when gp-0 + (fmax (fmin (+ -28672.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) + (-> self idle-dist-from-anchor))) + (if (zero? (-> self mode)) (set! (-> self thread-speed) 327680.0) (set! (-> self thread-speed) 81920.0)) + (set! (-> self spit-counter) 3)) + ((= v1-2 2) (set! (-> self targ-dist-from-anchor) - (fmax - (fmin (+ -43008.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) - (-> self idle-dist-from-anchor) - ) - ) - (set! (-> self going-up?) (< (-> self targ-dist-from-anchor) (-> self dist-from-anchor))) - ) - ) - ) - ) - (cond - ((-> self going-up?) - (if (>= (-> self targ-dist-from-anchor) (-> self dist-from-anchor)) - (go mother-spider-stop-traveling) - ) - ) - (else - (if (>= (-> self dist-from-anchor) (-> self targ-dist-from-anchor)) - (go mother-spider-stop-traveling) - ) - ) - ) - (mother-spider-method-29 self #t #t) - ) - :code (behavior ((arg0 uint)) - (local-vars (v1-12 symbol) (v1-28 symbol)) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! mother-spider-lowering-ja :num! min) - (loop - (until v1-12 - (suspend) - (ja :num! (seek!)) - (set! v1-12 (or (ja-done? 0) (-> self hit?))) - ) - (when (-> self hit?) - (until (not (-> self hit?)) - (set! (-> self hit?) #f) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! mother-spider-takes-hit-ja :num! min) - (until v1-28 - (suspend) - (ja :num! (seek!)) - (set! v1-28 (or (ja-done? 0) (-> self hit?))) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - ) + (fmax (fmin (+ -43008.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) + (-> self idle-dist-from-anchor))) + (set! (-> self thread-speed) 28672.0)))) + (set! (-> self mode) arg0) + (set! (-> self hit?) #f) + (set! (-> self going-up?) (< (-> self targ-dist-from-anchor) (-> self dist-from-anchor)))) + :trans + (behavior () + (let ((gp-0 (is-player-stuck? self)) + (v1-1 (-> self mode))) + (cond + ((zero? v1-1) (if (grab-player? self) (go mother-spider-traveling (the-as uint 1)))) + ((= v1-1 1) + (if (letgo-player? self) (go mother-spider-traveling (the-as uint 0))) + (when gp-0 + (set! (-> self targ-dist-from-anchor) + (fmax (fmin (+ -28672.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) + (-> self idle-dist-from-anchor))) + (set! (-> self going-up?) (< (-> self targ-dist-from-anchor) (-> self dist-from-anchor))))) + ((= v1-1 2) + (if (letgo-player? self) (go mother-spider-traveling (the-as uint 0))) + (when gp-0 + (set! (-> self targ-dist-from-anchor) + (fmax (fmin (+ -43008.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) + (-> self idle-dist-from-anchor))) + (set! (-> self going-up?) (< (-> self targ-dist-from-anchor) (-> self dist-from-anchor))))))) + (cond + ((-> self going-up?) + (if (>= (-> self targ-dist-from-anchor) (-> self dist-from-anchor)) (go mother-spider-stop-traveling))) + (else (if (>= (-> self dist-from-anchor) (-> self targ-dist-from-anchor)) (go mother-spider-stop-traveling)))) + (mother-spider-method-29 self #t #t)) + :code + (behavior ((arg0 uint)) + (local-vars (v1-12 symbol) (v1-28 symbol)) + (ja-channel-push! 1 (seconds 0.1)) (ja :group! mother-spider-lowering-ja :num! min) - ) - ) - :post transform-post - ) + (loop + (until v1-12 + (suspend) + (ja :num! (seek!)) + (set! v1-12 (or (ja-done? 0) (-> self hit?)))) + (when (-> self hit?) + (until (not (-> self hit?)) + (set! (-> self hit?) #f) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! mother-spider-takes-hit-ja :num! min) + (until v1-28 + (suspend) + (ja :num! (seek!)) + (set! v1-28 (or (ja-done? 0) (-> self hit?))))) + (ja-channel-push! 1 (seconds 0.2))) + (ja :group! mother-spider-lowering-ja :num! min))) + :post transform-post) (defstate mother-spider-stop-traveling (mother-spider) :event mother-spider-default-event-handler - :enter (behavior () - (set! (-> self hit?) #f) - ) - :trans (behavior () - (if (-> self hit?) - (go mother-spider-hit-while-tracking) - ) - (mother-spider-method-29 self #t #t) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! mother-spider-stopped-lowering-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((v1-22 (-> self mode))) - (cond - ((zero? v1-22) - (go mother-spider-idle) - ) - ((= v1-22 1) - (go mother-spider-tracking) - ) - ((= v1-22 2) - (set-time! (-> self started-birthing-time)) - (set! (-> self birthing-counter) (max 0 (- (-> self max-baby-count) (-> self baby-count)))) - (go mother-spider-birthing) - ) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self hit?) #f)) + :trans + (behavior () + (if (-> self hit?) (go mother-spider-hit-while-tracking)) + (mother-spider-method-29 self #t #t)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! mother-spider-stopped-lowering-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((v1-22 (-> self mode))) + (cond + ((zero? v1-22) (go mother-spider-idle)) + ((= v1-22 1) (go mother-spider-tracking)) + ((= v1-22 2) + (set-time! (-> self started-birthing-time)) + (set! (-> self birthing-counter) (max 0 (- (-> self max-baby-count) (-> self baby-count)))) + (go mother-spider-birthing))))) + :post transform-post) (defstate mother-spider-tracking (mother-spider) :event mother-spider-default-event-handler - :enter (behavior () - (set! (-> self hit?) #f) - (set-time! (-> self state-time)) - (set-time! (-> self last-player-in-air-time)) - ) - :trans (behavior () - (if (-> self hit?) - (go mother-spider-hit-while-tracking) - ) - (if (letgo-player? self) - (go mother-spider-traveling (the-as uint 0)) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node mother-spider-lod0-jg bodA)) - (if (or (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - (< (vector-vector-distance gp-0 (camera-pos)) 8192.0) - ) - (go mother-spider-traveling (the-as uint 2)) - ) - ) - (when (is-player-stuck? self) - (let ((f1-4 (fmax - (fmin (+ -28672.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) - (-> self idle-dist-from-anchor) - ) - ) - ) - (if (< 409.6 (fabs (- f1-4 (-> self dist-from-anchor)))) - (go mother-spider-traveling (the-as uint 1)) - ) - ) - ) - (if (or (not *target*) (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - (set-time! (-> self last-player-in-air-time)) - ) - (when (and *target* - (time-elapsed? (-> self last-spit-time) (seconds 3)) - (time-elapsed? (-> self last-player-in-air-time) (seconds 0.06)) - (>= (-> self max-spit-xz-dist) (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - ) - (let ((gp-2 (new 'stack-no-clear 'vector)) - (s5-2 (new 'stack-no-clear 'vector)) - ) - (set! (-> gp-2 quad) (-> self root trans quad)) - (set! (-> gp-2 w) 4096.0) - (when (sphere-in-view-frustum? (the-as sphere gp-2)) - (vector<-cspace! gp-2 (joint-node mother-spider-lod0-jg jaw)) - (set! (-> s5-2 quad) (-> (target-pos 0) quad)) - (+! (-> s5-2 y) 4915.2) - (cond - ((< 24576.0 (vector-vector-distance gp-2 s5-2)) - (go mother-spider-spit) - ) - (else - (if (time-elapsed? (-> self last-spit-time) (seconds 5)) - (go mother-spider-traveling (the-as uint 2)) - ) - ) - ) - ) - ) - ) - (mother-spider-method-29 self #t #t) - ) - :code (behavior () - (cond - ((ja-group? mother-spider-idle-ja) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.25)) - ) - ) - (loop - (ja-no-eval :group! mother-spider-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self hit?) #f) + (set-time! (-> self state-time)) + (set-time! (-> self last-player-in-air-time))) + :trans + (behavior () + (if (-> self hit?) (go mother-spider-hit-while-tracking)) + (if (letgo-player? self) (go mother-spider-traveling (the-as uint 0))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node mother-spider-lod0-jg bodA)) + (if (or (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)) + (< (vector-vector-distance gp-0 (camera-pos)) 8192.0)) + (go mother-spider-traveling (the-as uint 2)))) + (when (is-player-stuck? self) + (let ((f1-4 (fmax (fmin (+ -28672.0 (-> self player-sticky-dist-from-anchor)) (-> self max-dist-from-anchor)) + (-> self idle-dist-from-anchor)))) + (if (< 409.6 (fabs (- f1-4 (-> self dist-from-anchor)))) (go mother-spider-traveling (the-as uint 1))))) + (if (or (not *target*) + (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))))) + (set-time! (-> self last-player-in-air-time))) + (when (and *target* + (time-elapsed? (-> self last-spit-time) (seconds 3)) + (time-elapsed? (-> self last-player-in-air-time) (seconds 0.06)) + (>= (-> self max-spit-xz-dist) (vector-vector-xz-distance (-> self root trans) (target-pos 0)))) + (let ((gp-2 (new 'stack-no-clear 'vector)) + (s5-2 (new 'stack-no-clear 'vector))) + (set! (-> gp-2 quad) (-> self root trans quad)) + (set! (-> gp-2 w) 4096.0) + (when (sphere-in-view-frustum? (the-as sphere gp-2)) + (vector<-cspace! gp-2 (joint-node mother-spider-lod0-jg jaw)) + (set! (-> s5-2 quad) (-> (target-pos 0) quad)) + (+! (-> s5-2 y) 4915.2) + (cond + ((< 24576.0 (vector-vector-distance gp-2 s5-2)) (go mother-spider-spit)) + (else (if (time-elapsed? (-> self last-spit-time) (seconds 5)) (go mother-spider-traveling (the-as uint 2)))))))) + (mother-spider-method-29 self #t #t)) + :code + (behavior () + (cond + ((ja-group? mother-spider-idle-ja) (ja-no-eval :num! (seek!)) (while (not (ja-done? 0)) (suspend) (ja-eval))) + (else (ja-channel-push! 1 (seconds 0.25)))) + (loop + (ja-no-eval :group! mother-spider-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate mother-spider-hit-while-tracking (mother-spider) :event mother-spider-default-event-handler - :enter (behavior () - (set! (-> self hit?) #f) - ) - :trans (behavior () - (if (-> self hit?) - (go mother-spider-hit-while-tracking) - ) - (when (= (-> self spin-vel) 0.0) - (set! (-> self last-spit-time) 0) - (go mother-spider-tracking) - ) - (mother-spider-method-29 self #t #t) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! mother-spider-takes-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (loop - (ja-no-eval :group! mother-spider-idle-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set! (-> self hit?) #f)) + :trans + (behavior () + (if (-> self hit?) (go mother-spider-hit-while-tracking)) + (when (= (-> self spin-vel) 0.0) + (set! (-> self last-spit-time) 0) + (go mother-spider-tracking)) + (mother-spider-method-29 self #t #t)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! mother-spider-takes-hit-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1)) + (loop + (ja-no-eval :group! mother-spider-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate mother-spider-spit (mother-spider) :event mother-spider-default-event-handler - :enter (behavior () - (set! (-> self hit?) #f) - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (-> self hit?) - (go mother-spider-hit-while-tracking) - ) - (mother-spider-method-29 self #t #t) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.25)) - (let ((gp-0 #f)) - (ja-no-eval :group! mother-spider-spit-ja :num! (seek! max 1.5) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-0) (>= (ja-aframe-num 0) 6.0) (>= 8.0 (ja-aframe-num 0))) - (when *target* - (let ((s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! s4-0 (joint-node mother-spider-lod0-jg jaw)) - (set! (-> s5-0 quad) (-> (target-pos 0) quad)) - (+! (-> s5-0 y) 4915.2) - (when (< 24576.0 (vector-vector-distance s5-0 s4-0)) - (let ((a2-1 (-> self node-list data 19 bone transform))) - (set-vector! s2-0 0.0 0.0 1.0 1.0) - (vector-rotate*! s2-0 s2-0 a2-1) - ) - (set! (-> s2-0 w) 1.0) - (vector-! s5-0 s5-0 s4-0) - (vector-normalize! s5-0 1.0) - (vector-deg-seek s5-0 s2-0 s5-0 6371.5557) - (vector-normalize-copy! s3-0 s5-0 32768.0) - (process-spawn - mother-spider-proj - :init projectile-init-by-other - (-> self entity) - s4-0 - s3-0 - 0 - (process->handle *target*) - :to self - ) - (set! gp-0 #t) - (set-time! (-> self last-spit-time)) - (vector-negate! s5-0 s5-0) - (mother-spider-method-21 self s5-0 49152.0 #f) - (when (nonzero? (-> self max-baby-count)) - (+! (-> self spit-counter) -1) - (when (< (-> self spit-counter) 0) - (set! (-> self spit-counter) 0) - 0 - ) - ) - ) - ) - ) - ) - (suspend) - (ja :num! (seek! max 1.5)) - ) - ) - (if (> (-> self spit-counter) 0) - (go mother-spider-tracking) - (go mother-spider-traveling (the-as uint 2)) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self hit?) #f) + (set-time! (-> self state-time))) + :trans + (behavior () + (if (-> self hit?) (go mother-spider-hit-while-tracking)) + (mother-spider-method-29 self #t #t)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.25)) + (let ((gp-0 #f)) + (ja-no-eval :group! mother-spider-spit-ja :num! (seek! max 1.5) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-0) (>= (ja-aframe-num 0) 6.0) (>= 8.0 (ja-aframe-num 0))) + (when *target* + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (s2-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! s4-0 (joint-node mother-spider-lod0-jg jaw)) + (set! (-> s5-0 quad) (-> (target-pos 0) quad)) + (+! (-> s5-0 y) 4915.2) + (when (< 24576.0 (vector-vector-distance s5-0 s4-0)) + (let ((a2-1 (-> self node-list data 19 bone transform))) + (set-vector! s2-0 0.0 0.0 1.0 1.0) + (vector-rotate*! s2-0 s2-0 a2-1)) + (set! (-> s2-0 w) 1.0) + (vector-! s5-0 s5-0 s4-0) + (vector-normalize! s5-0 1.0) + (vector-deg-seek s5-0 s2-0 s5-0 6371.5557) + (vector-normalize-copy! s3-0 s5-0 32768.0) + (process-spawn mother-spider-proj + :init + projectile-init-by-other + (-> self entity) + s4-0 + s3-0 + 0 + (process->handle *target*) + :to + self) + (set! gp-0 #t) + (set-time! (-> self last-spit-time)) + (vector-negate! s5-0 s5-0) + (mother-spider-method-21 self s5-0 49152.0 #f) + (when (nonzero? (-> self max-baby-count)) + (+! (-> self spit-counter) -1) + (when (< (-> self spit-counter) 0) + (set! (-> self spit-counter) 0) + 0)))))) + (suspend) + (ja :num! (seek! max 1.5)))) + (if (> (-> self spit-counter) 0) (go mother-spider-tracking) (go mother-spider-traveling (the-as uint 2)))) + :post transform-post) (defstate mother-spider-birthing (mother-spider) :event mother-spider-default-event-handler - :enter (behavior () - (set! (-> self hit?) #f) - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (-> self hit?) - (go mother-spider-hit-while-birthing) - ) - (if (letgo-player? self) - (go mother-spider-traveling (the-as uint 0)) - ) - (if (and (time-elapsed? (-> self started-birthing-time) (seconds 6)) - (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) - (go mother-spider-traveling (the-as uint 1)) - ) - (if (and (time-elapsed? (-> self state-time) (seconds 0.25)) - (> (-> self birthing-counter) 0) - (and (>= 49152.0 (- (-> self max-dist-from-anchor) (-> self dist-from-anchor))) - (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (nav-control-method-21 (-> self nav) (-> self root trans)) - ) - ) - (go mother-spider-birth-baby) - ) - (mother-spider-method-29 self #t #t) - ) - :code (behavior () - (cond - ((ja-group? mother-spider-idle-ja) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.25)) - ) - ) - (loop - (ja-no-eval :group! mother-spider-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self hit?) #f) + (set-time! (-> self state-time))) + :trans + (behavior () + (if (-> self hit?) (go mother-spider-hit-while-birthing)) + (if (letgo-player? self) (go mother-spider-traveling (the-as uint 0))) + (if (and (time-elapsed? (-> self started-birthing-time) (seconds 6)) + (not (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) + (go mother-spider-traveling (the-as uint 1))) + (if (and (time-elapsed? (-> self state-time) (seconds 0.25)) + (> (-> self birthing-counter) 0) + (and (>= 49152.0 (- (-> self max-dist-from-anchor) (-> self dist-from-anchor))) + (not (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (nav-control-method-21 (-> self nav) (-> self root trans)))) + (go mother-spider-birth-baby)) + (mother-spider-method-29 self #t #t)) + :code + (behavior () + (cond + ((ja-group? mother-spider-idle-ja) (ja-no-eval :num! (seek!)) (while (not (ja-done? 0)) (suspend) (ja-eval))) + (else (ja-channel-push! 1 (seconds 0.25)))) + (loop + (ja-no-eval :group! mother-spider-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate mother-spider-birth-baby (mother-spider) :event mother-spider-default-event-handler - :enter (behavior () - (set! (-> self hit?) #f) - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (-> self hit?) - (go mother-spider-hit-while-birthing) - ) - (if (letgo-player? self) - (go mother-spider-traveling (the-as uint 0)) - ) - (if (not (nav-control-method-21 (-> self nav) (-> self root trans))) - (go mother-spider-birthing) - ) - (mother-spider-method-29 self #t #t) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.25)) - (let ((gp-0 #f)) - (ja-no-eval :group! mother-spider-birth-ja :num! (seek! max 1.4) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-0) (>= (ja-aframe-num 0) 10.0)) - (set! gp-0 #t) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (when (mother-spider-method-20 self s5-0 s4-0) - (process-spawn mother-spider-egg (-> self entity) (-> self root trans) s5-0 s4-0 :to self) - (+! (-> self baby-count) 1) - (+! (-> self birthing-counter) -1) - (sound-play "lay-eggs") - ) - ) - ) - (suspend) - (ja :num! (seek! max 1.4)) - ) - ) - (go mother-spider-birthing) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self hit?) #f) + (set-time! (-> self state-time))) + :trans + (behavior () + (if (-> self hit?) (go mother-spider-hit-while-birthing)) + (if (letgo-player? self) (go mother-spider-traveling (the-as uint 0))) + (if (not (nav-control-method-21 (-> self nav) (-> self root trans))) (go mother-spider-birthing)) + (mother-spider-method-29 self #t #t)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.25)) + (let ((gp-0 #f)) + (ja-no-eval :group! mother-spider-birth-ja :num! (seek! max 1.4) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-0) (>= (ja-aframe-num 0) 10.0)) + (set! gp-0 #t) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector))) + (when (mother-spider-method-20 self s5-0 s4-0) + (process-spawn mother-spider-egg (-> self entity) (-> self root trans) s5-0 s4-0 :to self) + (+! (-> self baby-count) 1) + (+! (-> self birthing-counter) -1) + (sound-play "lay-eggs")))) + (suspend) + (ja :num! (seek! max 1.4)))) + (go mother-spider-birthing)) + :post transform-post) (defmethod mother-spider-method-20 ((this mother-spider) (arg0 vector) (arg1 vector)) (set! (-> this nav nav-cull-radius) 40960.0) @@ -1311,254 +860,188 @@ (nav-control-method-28 (-> this nav) (the-as collide-kind -1)) (dotimes (s3-1 4) (let ((f28-0 (+ 32768.0 (-> this orient-rot y))) - (f30-0 (rand-vu-float-range 16384.0 40960.0)) - ) + (f30-0 (rand-vu-float-range 16384.0 40960.0))) (let ((s1-0 (new 'stack-no-clear 'vector)) - (s2-1 (new 'stack-no-clear 'vector)) - ) - (let ((f28-1 (+ f28-0 (rand-vu-float-range -9102.223 9102.223)))) - (set-vector! s1-0 (sin f28-1) 0.0 (cos f28-1) 1.0) - ) + (s2-1 (new 'stack-no-clear 'vector))) + (let ((f28-1 (+ f28-0 (rand-vu-float-range -9102.223 9102.223)))) (set-vector! s1-0 (sin f28-1) 0.0 (cos f28-1) 1.0)) (vector-float*! s2-1 s1-0 f30-0) - (nav-control-method-35 (-> this nav) (-> this nav travel) (-> this root trans) s2-1 s1-0 f30-0) - ) - (nav-control-method-24 (-> this nav) f30-0 (the-as clip-travel-vector-to-mesh-return-info #f)) - ) + (nav-control-method-35 (-> this nav) (-> this nav travel) (-> this root trans) s2-1 s1-0 f30-0)) + (nav-control-method-24 (-> this nav) f30-0 (the-as clip-travel-vector-to-mesh-return-info #f))) (cond ((>= (vector-xz-length (-> this nav travel)) 4096.0) (vector+! arg0 (-> this root trans) (-> this nav travel)) (let ((s2-2 (new 'stack-no-clear 'collide-tri-result))) (cond - ((>= (fill-and-probe-using-line-sphere - *collide-cache* - arg0 - (new 'static 'vector :y -69632.0 :w 1.0) - 40.96 - (collide-kind background) - this - s2-2 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + ((>= (fill-and-probe-using-line-sphere *collide-cache* + arg0 + (new 'static 'vector :y -69632.0 :w 1.0) + 40.96 + (collide-kind background) + this + s2-2 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> arg0 y) (-> s2-2 intersect y)) (set! (-> arg1 quad) (-> s2-2 normal quad)) - (return #t) - ) - (else - 0 - ) - ) - ) - ) - (else - 0 - ) - ) - ) + (return #t)) + (else 0)))) + (else 0))) (project-onto-nav-mesh (-> this nav) arg0 (-> this root trans)) (let ((a1-12 (new 'stack-no-clear 'vector)) - (s3-2 (new 'stack-no-clear 'collide-tri-result)) - ) + (s3-2 (new 'stack-no-clear 'collide-tri-result))) (set! (-> a1-12 quad) (-> arg0 quad)) (+! (-> a1-12 y) 8192.0) (cond - ((>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-12 - (new 'static 'vector :y -69632.0 :w 1.0) - 40.96 - (collide-kind background) - this - s3-2 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + ((>= (fill-and-probe-using-line-sphere *collide-cache* + a1-12 + (new 'static 'vector :y -69632.0 :w 1.0) + 40.96 + (collide-kind background) + this + s3-2 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> arg0 y) (-> s3-2 intersect y)) (set! (-> arg1 quad) (-> s3-2 normal quad)) - (return #t) - ) - (else - 0 - ) - ) - ) - #f - ) + (return #t)) + (else 0))) + #f) (defstate mother-spider-hit-while-birthing (mother-spider) :event mother-spider-default-event-handler - :enter (behavior () - (set! (-> self hit?) #f) - ) - :trans (behavior () - (if (-> self hit?) - (go mother-spider-hit-while-birthing) - ) - (if (= (-> self spin-vel) 0.0) - (go mother-spider-birthing) - ) - (mother-spider-method-29 self #t #t) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! mother-spider-takes-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (loop - (ja-no-eval :group! mother-spider-idle-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set! (-> self hit?) #f)) + :trans + (behavior () + (if (-> self hit?) (go mother-spider-hit-while-birthing)) + (if (= (-> self spin-vel) 0.0) (go mother-spider-birthing)) + (mother-spider-method-29 self #t #t)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! mother-spider-takes-hit-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1)) + (loop + (ja-no-eval :group! mother-spider-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate mother-spider-die-from-uppercut (mother-spider) :event mother-spider-death-event-handler - :enter (behavior () - (shut-down! (-> self neck)) - (set! (-> self thread-speed) 122880.0) - (set! (-> self targ-dist-from-anchor) (+ -24576.0 (-> self dist-from-anchor))) - (let ((gp-0 (- 6 (-> self damage))) - (s5-0 (-> self damage)) - ) - (set! (-> self damage) 6) - (when (> gp-0 0) - (dotimes (s4-0 gp-0) - (let ((s0-0 (-> *mother-spider-leg-infos* s5-0)) - (s3-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) - (s1-0 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! s3-0 (-> self node-list data (-> s0-0 joint-index0))) - (vector<-cspace! s2-0 (-> self node-list data (-> s0-0 joint-index1))) - (vector-! s2-0 s2-0 s3-0) - (vector-normalize! s2-0 1.0) - (set! (-> s1-0 quad) (-> s2-0 quad)) - (+! (-> s1-0 y) 0.3) - (vector-normalize! s1-0 1.0) - (process-spawn mother-spider-leg self s3-0 s2-0 s1-0 :to self) - ) - (+! s5-0 1) - ) - ) - ) - ) - :trans (behavior () - (mother-spider-method-29 self #f #f) - ) - :code (behavior () - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 0) 1) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.1)) - (clear-collide-with-as (-> self root)) - (ja-no-eval :group! mother-spider-die-from-uppercut-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go mother-spider-die-wait-for-children) - ) - :post ja-post - ) + :enter + (behavior () + (shut-down! (-> self neck)) + (set! (-> self thread-speed) 122880.0) + (set! (-> self targ-dist-from-anchor) (+ -24576.0 (-> self dist-from-anchor))) + (let ((gp-0 (- 6 (-> self damage))) + (s5-0 (-> self damage))) + (set! (-> self damage) 6) + (when (> gp-0 0) + (dotimes (s4-0 gp-0) + (let ((s0-0 (-> *mother-spider-leg-infos* s5-0)) + (s3-0 (new 'stack-no-clear 'vector)) + (s2-0 (new 'stack-no-clear 'vector)) + (s1-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! s3-0 (-> self node-list data (-> s0-0 joint-index0))) + (vector<-cspace! s2-0 (-> self node-list data (-> s0-0 joint-index1))) + (vector-! s2-0 s2-0 s3-0) + (vector-normalize! s2-0 1.0) + (set! (-> s1-0 quad) (-> s2-0 quad)) + (+! (-> s1-0 y) 0.3) + (vector-normalize! s1-0 1.0) + (process-spawn mother-spider-leg self s3-0 s2-0 s1-0 :to self)) + (+! s5-0 1))))) + :trans + (behavior () + (mother-spider-method-29 self #f #f)) + :code + (behavior () + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 0) 1)) + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.1)) + (clear-collide-with-as (-> self root)) + (ja-no-eval :group! mother-spider-die-from-uppercut-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go mother-spider-die-wait-for-children)) + :post ja-post) (defstate mother-spider-die (mother-spider) :event mother-spider-death-event-handler - :trans (behavior () - (mother-spider-method-29 self #f #f) - ) - :code (behavior () - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 0) 1) - ) - (shut-down! (-> self neck)) - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.1)) - (clear-collide-with-as (-> self root)) - (ja-no-eval :group! mother-spider-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go mother-spider-die-wait-for-children) - ) - :post ja-post - ) + :trans + (behavior () + (mother-spider-method-29 self #f #f)) + :code + (behavior () + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 0) 1)) + (shut-down! (-> self neck)) + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.1)) + (clear-collide-with-as (-> self root)) + (ja-no-eval :group! mother-spider-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go mother-spider-die-wait-for-children)) + :post ja-post) (defstate mother-spider-die-wait-for-children (mother-spider) :event mother-spider-death-event-handler - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root)) - (set! (-> self skel postbind-function) #f) - (logior! (-> self draw status) (draw-status hidden)) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root)) + (set! (-> self skel postbind-function) #f) + (logior! (-> self draw status) (draw-status hidden)) + (while (-> self child) + (suspend)) + (cleanup-for-death self))) (defun mother-spider-full-joint-callback ((arg0 mother-spider)) (/ (-> arg0 dist-from-anchor) (-> arg0 max-dist-from-anchor)) (let ((a1-0 (the-as matrix #f))) (dotimes (s5-0 7) (let* ((v1-1 (the-as mother-spider-thread (+ (the-as uint *mother-spider-threads*) (* s5-0 16)))) - (s4-0 (-> arg0 node-list data (-> v1-1 joint-index) bone transform)) - ) + (s4-0 (-> arg0 node-list data (-> v1-1 joint-index) bone transform))) (vector-! (-> s4-0 vector 3) (-> arg0 root trans) (-> arg0 anchor-trans)) (vector-float*! (-> s4-0 vector 3) (-> s4-0 vector 3) (-> v1-1 trans-u)) (vector+! (-> s4-0 vector 3) (-> s4-0 vector 3) (-> arg0 anchor-trans)) (let ((f1-2 (- (-> s4-0 vector 3 x) (-> arg0 anchor-trans x))) - (f0-5 (- (-> s4-0 vector 3 z) (-> arg0 anchor-trans z))) - ) + (f0-5 (- (-> s4-0 vector 3 z) (-> arg0 anchor-trans z)))) (set! (-> s4-0 vector 3 x) (+ (-> arg0 anchor-trans x) (* f1-2 (-> v1-1 swing-arc-u)))) - (set! (-> s4-0 vector 3 z) (+ (-> arg0 anchor-trans z) (* f0-5 (-> v1-1 swing-arc-u)))) - ) - (if a1-0 - (mother-spider-method-22 arg0 a1-0 (-> s4-0 vector 3)) - ) - (set! a1-0 s4-0) - ) - ) + (set! (-> s4-0 vector 3 z) (+ (-> arg0 anchor-trans z) (* f0-5 (-> v1-1 swing-arc-u))))) + (if a1-0 (mother-spider-method-22 arg0 a1-0 (-> s4-0 vector 3))) + (set! a1-0 s4-0))) (let ((a0-11 (-> arg0 node-list data 22 bone transform)) - (a2-7 (new 'stack-no-clear 'vector)) - ) + (a2-7 (new 'stack-no-clear 'vector))) (vector-! a2-7 (-> arg0 root trans) (-> a0-11 vector 3)) (vector+! a2-7 a2-7 (-> arg0 root trans)) - (mother-spider-method-22 arg0 a1-0 a2-7) - ) - ) + (mother-spider-method-22 arg0 a1-0 a2-7))) (dotimes (v1-16 (-> arg0 damage)) (let ((a0-17 (-> *mother-spider-leg-infos* v1-16))) (let ((a1-5 (-> arg0 node-list data (-> a0-17 joint-index0) bone transform))) (set! (-> a1-5 vector 0 quad) (the-as uint128 0)) (set! (-> a1-5 vector 1 quad) (the-as uint128 0)) - (set! (-> a1-5 vector 2 quad) (the-as uint128 0)) - ) + (set! (-> a1-5 vector 2 quad) (the-as uint128 0))) 0 (let ((a0-22 (-> arg0 node-list data (-> a0-17 joint-index1) bone transform))) (set! (-> a0-22 vector 0 quad) (the-as uint128 0)) (set! (-> a0-22 vector 1 quad) (the-as uint128 0)) - (set! (-> a0-22 vector 2 quad) (the-as uint128 0)) - ) - ) - 0 - ) + (set! (-> a0-22 vector 2 quad) (the-as uint128 0)))) + 0) 0 - (none) - ) + (none)) (defmethod mother-spider-method-22 ((this mother-spider) (arg0 matrix) (arg1 vector)) (rlet ((vf0 :class vf)) @@ -1567,37 +1050,23 @@ (vector-normalize! (-> arg0 vector 2) 1.0) (.svf (&-> (-> arg0 vector) 0 quad) vf0) (cond - ((and (= (-> arg0 vector 2 x) 0.0) (= (-> arg0 vector 2 y) 0.0)) - (set! (-> arg0 vector 0 x) (-> arg0 vector 2 z)) - ) - (else - (set! (-> arg0 vector 0 x) (- (-> arg0 vector 2 y))) - (set! (-> arg0 vector 0 y) (-> arg0 vector 2 x)) - ) - ) + ((and (= (-> arg0 vector 2 x) 0.0) (= (-> arg0 vector 2 y) 0.0)) (set! (-> arg0 vector 0 x) (-> arg0 vector 2 z))) + (else (set! (-> arg0 vector 0 x) (- (-> arg0 vector 2 y))) (set! (-> arg0 vector 0 y) (-> arg0 vector 2 x)))) (vector-cross! (-> arg0 vector 1) (the-as vector (-> arg0 vector)) (-> arg0 vector 2)) (vector-normalize! (-> arg0 vector 1) 1.0) (set! (-> arg0 vector 0 w) 0.0) (set! (-> arg0 vector 1 w) 0.0) - (set! (-> arg0 vector 2 w) 0.0) - ) - ) + (set! (-> arg0 vector 2 w) 0.0))) (defmethod run-logic? ((this mother-spider)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (or (< (vector-vector-xz-distance (-> this root trans) (math-camera-pos)) (-> this deactivate-xz-dist)) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) (defmethod relocate ((this mother-spider) (arg0 int)) - (if (nonzero? (-> this neck)) - (&+! (-> this neck) arg0) - ) - (the-as mother-spider ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this neck)) (&+! (-> this neck) arg0)) + (the-as mother-spider ((method-of-type process-drawable relocate) this arg0))) (defmethod init-from-entity! ((this mother-spider) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-64 vector)) @@ -1625,8 +1094,7 @@ (when (name= (-> this name) "mother-spider-7") (set! (-> this check-z-thresh?) #t) (set! (-> this activate-z-thresh) -12288.0) - (set! (-> this deactivate-z-thresh) 24985.6) - ) + (set! (-> this deactivate-z-thresh) 24985.6)) (logior! (-> this mask) (process-mask enemy)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) @@ -1641,77 +1109,66 @@ (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 6) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4505.6) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (collide-kind mother-spider)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4505.6) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-2 prim-core collide-as) (collide-kind mother-spider)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 20) (set-vector! (-> s2-2 local-sphere) 0.0 -409.6 1228.8 2457.6) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-3 prim-core collide-as) (collide-kind mother-spider)) (set! (-> s2-3 collide-with) (collide-kind target)) (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set! (-> s2-3 transform-index) 12) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-4 prim-core collide-as) (collide-kind mother-spider)) (set! (-> s2-4 collide-with) (collide-kind target)) (set! (-> s2-4 prim-core offense) (collide-offense no-offense)) (set! (-> s2-4 transform-index) 10) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s3-0 s2-4) - ) + (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) (collide-kind mother-spider)) (set! (-> s2-5 collide-with) (collide-kind target)) (set! (-> s2-5 prim-core offense) (collide-offense no-offense)) (set! (-> s2-5 transform-index) 8) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s3-0 s2-5) - ) + (append-prim s3-0 s2-5)) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-6 prim-core collide-as) (collide-kind mother-spider)) (set! (-> s2-6 collide-with) (collide-kind target)) (set! (-> s2-6 prim-core offense) (collide-offense no-offense)) (set! (-> s2-6 transform-index) 18) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s3-0 s2-6) - ) + (append-prim s3-0 s2-6)) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-7 prim-core collide-as) (collide-kind mother-spider)) (set! (-> s2-7 collide-with) (collide-kind target)) (set! (-> s2-7 prim-core offense) (collide-offense no-offense)) (set! (-> s2-7 transform-index) 16) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s3-0 s2-7) - ) + (append-prim s3-0 s2-7)) (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-8 prim-core collide-as) (collide-kind mother-spider)) (set! (-> s2-8 collide-with) (collide-kind target)) (set! (-> s2-8 prim-core offense) (collide-offense no-offense)) (set! (-> s2-8 transform-index) 14) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s3-0 s2-8) - ) - ) + (append-prim s3-0 s2-8))) (set! (-> s4-0 nav-radius) 4096.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *mother-spider-sg* '()) (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) @@ -1721,9 +1178,7 @@ (logclear! (-> this root nav-flags) (nav-flags navf1)) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 4096000.0 (the-as float 60) 245760.0)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 618) this)) (logior! (-> this skel status) (janim-status inited)) @@ -1734,8 +1189,7 @@ (set! (-> v0-30 nose) (the-as uint 2)) (set! (-> v0-30 ear) (the-as uint 0)) (set! (-> v0-30 max-dist) 102400.0) - (set! (-> v0-30 ignore-angle) 16384.0) - ) + (set! (-> v0-30 ignore-angle) 16384.0)) (set! (-> this thread-min-trans quad) (-> this root trans quad)) (set! (-> this anchor-trans quad) (-> this root trans quad)) (set! (-> this max-swing-radius) 73728.0) @@ -1745,24 +1199,20 @@ (let ((v0-31 (res-lump-data arg0 'mother-spider pointer :tag-ptr (& sv-16)))) (cond (v0-31 - (+! (-> this thread-min-trans y) (-> (the-as (pointer float) v0-31) 0)) - (+! (-> this anchor-trans y) (-> (the-as (pointer float) v0-31) 1)) - (set! (-> this max-swing-radius) (-> (the-as (pointer float) v0-31) 2)) - (set! (-> this max-baby-count) (the int (-> (the-as (pointer float) v0-31) 3))) - (set! s4-1 (!= (-> (the-as (pointer float) v0-31) 4) 0.0)) - (set! (-> this max-spit-xz-dist) (-> (the-as (pointer float) v0-31) 5)) - (set! (-> this activate-xz-dist) (-> (the-as (pointer float) v0-31) 6)) - (set! (-> this deactivate-xz-dist) (-> (the-as (pointer float) v0-31) 7)) - ) + (+! (-> this thread-min-trans y) (-> (the-as (pointer float) v0-31) 0)) + (+! (-> this anchor-trans y) (-> (the-as (pointer float) v0-31) 1)) + (set! (-> this max-swing-radius) (-> (the-as (pointer float) v0-31) 2)) + (set! (-> this max-baby-count) (the int (-> (the-as (pointer float) v0-31) 3))) + (set! s4-1 (!= (-> (the-as (pointer float) v0-31) 4) 0.0)) + (set! (-> this max-spit-xz-dist) (-> (the-as (pointer float) v0-31) 5)) + (set! (-> this activate-xz-dist) (-> (the-as (pointer float) v0-31) 6)) + (set! (-> this deactivate-xz-dist) (-> (the-as (pointer float) v0-31) 7))) (else - (+! (-> this thread-min-trans y) 28672.0) - (+! (-> this anchor-trans y) 204800.0) - (set! (-> this max-spit-xz-dist) 81920.0) - (set! (-> this activate-xz-dist) 143360.0) - (set! (-> this deactivate-xz-dist) 163430.4) - ) - ) - ) + (+! (-> this thread-min-trans y) 28672.0) + (+! (-> this anchor-trans y) 204800.0) + (set! (-> this max-spit-xz-dist) 81920.0) + (set! (-> this activate-xz-dist) 143360.0) + (set! (-> this deactivate-xz-dist) 163430.4)))) (set! (-> this thread-min-trans w) 1.0) (set! (-> this anchor-trans w) 1.0) (set! (-> this idle-dist-from-anchor) 16384.0) @@ -1775,58 +1225,34 @@ (quaternion-zxy! (-> this root quat) (-> this orient-rot)) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 5)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 5)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (transform-post) - (create-connection! - *cavecrystal-light-control* - this - (-> this entity) - (the-as (function object object object object object) cavecrystal-light-control-default-callback) - -1 - 10240.0 - ) + (create-connection! *cavecrystal-light-control* + this + (-> this entity) + (the-as (function object object object object object) cavecrystal-light-control-default-callback) + -1 + 10240.0) (let ((v1-121 #f)) - (if (nonzero? (-> this entity extra perm user-int8 0)) - (set! v1-121 #t) - ) + (if (nonzero? (-> this entity extra perm user-int8 0)) (set! v1-121 #t)) (cond - (v1-121 - (go mother-spider-die-wait-for-children) - ) + (v1-121 (go mother-spider-die-wait-for-children)) (else - (when s4-1 - (let ((s5-3 (max 0 (min (+ (-> this path curve num-cverts) -1) (-> this max-baby-count)))) - (s4-2 (new 'stack-no-clear 'vector)) - (s3-1 (new 'stack-no-clear 'vector)) - ) - (dotimes (s2-9 s5-3) - (eval-path-curve-div! (-> this path) s4-2 (the float s2-9) 'interp) - (vector-! s3-1 (target-pos 0) s4-2) - (set! (-> s3-1 y) 0.0) - (let ((s1-2 vector-rotate-around-y!) - (s0-0 s3-1) - ) - (set! sv-64 s3-1) - (let ((a2-21 (rand-vu-float-range -7281.778 7281.778))) - (s1-2 s0-0 sv-64 a2-21) - ) - ) - (vector-normalize! s3-1 1.0) - (spawn-child this s4-2 s3-1 #f) - ) - ) - ) - (logclear! (-> this mask) (process-mask actor-pause)) - (go mother-spider-idle) - ) - ) - ) - ) - (none) - ) + (when s4-1 + (let ((s5-3 (max 0 (min (+ (-> this path curve num-cverts) -1) (-> this max-baby-count)))) + (s4-2 (new 'stack-no-clear 'vector)) + (s3-1 (new 'stack-no-clear 'vector))) + (dotimes (s2-9 s5-3) + (eval-path-curve-div! (-> this path) s4-2 (the float s2-9) 'interp) + (vector-! s3-1 (target-pos 0) s4-2) + (set! (-> s3-1 y) 0.0) + (let ((s1-2 vector-rotate-around-y!) + (s0-0 s3-1)) + (set! sv-64 s3-1) + (let ((a2-21 (rand-vu-float-range -7281.778 7281.778))) (s1-2 s0-0 sv-64 a2-21))) + (vector-normalize! s3-1 1.0) + (spawn-child this s4-2 s3-1 #f)))) + (logclear! (-> this mask) (process-mask actor-pause)) + (go mother-spider-idle))))) + (none)) diff --git a/goal_src/jak1/levels/maincave/spiderwebs.gc b/goal_src/jak1/levels/maincave/spiderwebs.gc index 97100b41e5..b344250780 100644 --- a/goal_src/jak1/levels/maincave/spiderwebs.gc +++ b/goal_src/jak1/levels/maincave/spiderwebs.gc @@ -1,133 +1,104 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MAI.DGO") - (require "engine/common-obs/generic-obs.gc") -;; name: spiderwebs.gc -;; name in dgo: spiderwebs -;; dgos: L1, MAI, MAINCAVE - ;; DECOMP BEGINS -(define *spider-jump-mods* (new 'static 'surface - :name 'jump - :turnv 131072.0 - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 49152.0 - :target-speed 49152.0 - :seek0 0.6 - :seek90 0.6 - :seek180 0.6 - :fric 0.2 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-edge-grab jump) - ) - ) +(define *spider-jump-mods* + (new 'static + 'surface + :name 'jump + :turnv 131072.0 + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 49152.0 + :target-speed 49152.0 + :seek0 0.6 + :seek90 0.6 + :seek180 0.6 + :fric 0.2 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-edge-grab jump))) (deftype spiderwebs (process-drawable) - ((spring-height meters) - ) + ((spring-height meters)) (:states - spiderwebs-bounce - spiderwebs-idle - ) - ) - + spiderwebs-bounce + spiderwebs-idle)) -(defskelgroup *spiderwebs-sg* spiderwebs spiderwebs-good-lod0-jg -1 - ((spiderwebs-good-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.5) - ) +(defskelgroup *spiderwebs-sg* + spiderwebs + spiderwebs-good-lod0-jg + -1 + ((spiderwebs-good-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.5)) (defbehavior spiderwebs-default-event-handler spiderwebs ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('bonk) - (if (send-event arg0 'jump (-> self spring-height) (-> self spring-height) *spider-jump-mods*) - (go spiderwebs-bounce) - ) - ) + (if (send-event arg0 'jump (-> self spring-height) (-> self spring-height) *spider-jump-mods*) (go spiderwebs-bounce))) (('touch) (when (= (-> arg0 type) target) (let* ((a0-8 (target-pos 0)) - (f1-1 (- (-> a0-8 y) (-> self root trans y))) - ) + (f1-1 (- (-> a0-8 y) (-> self root trans y)))) (if (and (>= 2048.0 (fabs f1-1)) (and (>= 13516.8 (vector-vector-distance a0-8 (-> self root trans))) - (send-event arg0 'jump (-> self spring-height) (-> self spring-height) *spider-jump-mods*) - ) - ) - (go spiderwebs-bounce) - ) - ) - ) - ) + (send-event arg0 'jump (-> self spring-height) (-> self spring-height) *spider-jump-mods*))) + (go spiderwebs-bounce))))) (('attack) (if (and (= (-> arg3 param 1) 'flop) - (send-event arg0 'jump (-> self spring-height) (-> self spring-height) *spider-jump-mods*) - ) - (go spiderwebs-bounce) - ) - #f - ) - ) - ) + (send-event arg0 'jump (-> self spring-height) (-> self spring-height) *spider-jump-mods*)) + (go spiderwebs-bounce)) + #f))) (defstate spiderwebs-idle (spiderwebs) :event spiderwebs-default-event-handler - :code (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (ja :group! spiderwebs-bounce-ja :num! min) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (ja :group! spiderwebs-bounce-ja :num! min) + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate spiderwebs-bounce (spiderwebs) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (sound-play "web-tramp") - (ja-no-eval :group! spiderwebs-bounce-ja :num! (seek! (ja-aframe 10.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 10.0 0))) - ) - (set! (-> self event-hook) (-> spiderwebs-idle event)) - (ja-no-eval :group! spiderwebs-bounce-ja :num! (seek!) :frame-num (ja-aframe 10.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go spiderwebs-idle) - ) - :post transform-post - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (sound-play "web-tramp") + (ja-no-eval :group! spiderwebs-bounce-ja :num! (seek! (ja-aframe 10.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 10.0 0)))) + (set! (-> self event-hook) (-> spiderwebs-idle event)) + (ja-no-eval :group! spiderwebs-bounce-ja :num! (seek!) :frame-num (ja-aframe 10.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go spiderwebs-idle)) + :post transform-post) (defmethod init-from-entity! ((this spiderwebs) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -135,12 +106,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 13926.4) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *spiderwebs-sg* '()) (set! (-> this spring-height) (res-lump-float arg0 'spring-height :default 45056.0)) @@ -148,18 +117,11 @@ (let ((a0-11 (-> this 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.0) - (joint-control-channel-group! a0-11 (the-as art-joint-anim #f) num-func-seek!) - ) + (joint-control-channel-group! a0-11 (the-as art-joint-anim #f) num-func-seek!)) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (transform-post) (go spiderwebs-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/babak-with-cannon.gc b/goal_src/jak1/levels/misty/babak-with-cannon.gc index 9130ab9869..866ee65c86 100644 --- a/goal_src/jak1/levels/misty/babak-with-cannon.gc +++ b/goal_src/jak1/levels/misty/babak-with-cannon.gc @@ -1,368 +1,243 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO" "MIS.DGO") - (require "levels/misty/mistycannon.gc") (require "engine/common-obs/babak.gc") - -;; name: babak-with-cannon.gc -;; name in dgo: babak-with-cannon -;; dgos: BEA, L1, MIS - (declare-type babak-with-cannon babak) ;; DECOMP BEGINS (deftype babak-with-cannon (babak) - ((cannon-ent entity) - (distance float) - ) + ((cannon-ent entity) + (distance float)) (:states - babak-with-cannon-jump-off-cannon - babak-with-cannon-jump-onto-cannon - babak-with-cannon-shooting - ) - ) - + babak-with-cannon-jump-off-cannon + babak-with-cannon-jump-onto-cannon + babak-with-cannon-shooting)) nav-enemy-default-event-handler (defstate nav-enemy-idle (babak-with-cannon) :virtual #t :event nav-enemy-default-event-handler - :trans (behavior () - (if (and (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-post) - (suspend) - (ja :num! (seek!)) - ) - (anim-loop) - ) - :post #f - ) + :trans + (behavior () + (if (and (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self state-timeout))) + (go-virtual nav-enemy-patrol))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-post) + (suspend) + (ja :num! (seek!))) + (anim-loop)) + :post #f) (defstate nav-enemy-patrol (babak-with-cannon) :virtual #t :event nav-enemy-default-event-handler - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (let ((f30-0 (- (-> (target-pos 0) y) (-> self collide-info trans y)))) - (if (and (time-elapsed? (-> self state-time) (seconds 3)) - (or (or (not *target*) - (< (-> self distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) - (< f30-0 -40960.0) - ) - ) - (go babak-run-to-cannon) - ) - ) - (when (time-elapsed? (-> self state-time) (-> self state-timeout)) - (if (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go-virtual nav-enemy-idle) - ) - ) - (if (nav-enemy-notice-player?) - (go-virtual nav-enemy-notice) - ) - ) - ) - :code (-> (method-of-type babak nav-enemy-patrol) code) - ) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 0.1)) + (let ((f30-0 (- (-> (target-pos 0) y) (-> self collide-info trans y)))) + (if (and (time-elapsed? (-> self state-time) (seconds 3)) + (or (or (not *target*) + (< (-> self distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (< f30-0 -40960.0))) + (go babak-run-to-cannon))) + (when (time-elapsed? (-> self state-time) (-> self state-timeout)) + (if (or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-idle))) + (if (nav-enemy-notice-player?) (go-virtual nav-enemy-notice)))) + :code + (-> (method-of-type babak nav-enemy-patrol) + code)) (defstate babak-run-to-cannon (babak) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self nav destination-pos quad) (-> self entity extra trans quad)) - (set! (-> self nav target-pos quad) (-> self entity extra trans quad)) - ) - :trans (behavior () - (if (nav-enemy-notice-player?) - (go-virtual nav-enemy-chase) - ) - (if (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (go babak-with-cannon-jump-onto-cannon) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (loop - (ja-no-eval :group! babak-charge-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post (behavior () - (nav-enemy-travel-post) - ) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self nav destination-pos quad) (-> self entity extra trans quad)) + (set! (-> self nav target-pos quad) (-> self entity extra trans quad))) + :trans + (behavior () + (if (nav-enemy-notice-player?) (go-virtual nav-enemy-chase)) + (if (logtest? (nav-control-flags navcf19) (-> self nav flags)) (go babak-with-cannon-jump-onto-cannon))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (loop + (ja-no-eval :group! babak-charge-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post + (behavior () + (nav-enemy-travel-post))) (defun handle->process-safe ((arg0 handle)) - (let ((v0-0 (the-as process #f))) - (if (handle->process arg0) - (set! v0-0 (-> arg0 process 0)) - ) - v0-0 - ) - ) + (let ((v0-0 (the-as process #f))) (if (handle->process arg0) (set! v0-0 (-> arg0 process 0))) v0-0)) (defun babak-with-cannon-compute-cannon-dir ((arg0 mistycannon) (arg1 vector)) (set! (-> arg1 quad) (-> arg0 node-list data 3 bone transform vector 2 quad)) - arg1 - ) + arg1) (defun babak-with-cannon-compute-ride-point ((arg0 mistycannon) (arg1 vector)) (set! (-> arg1 quad) (-> arg0 root trans quad)) (let ((a1-4 (new 'static 'vector :y 18149.377 :z -17289.217 :w 1.0)) - (a2-0 (-> arg0 node-list data 3 bone transform)) - ) - (vector-matrix*! arg1 a1-4 a2-0) - ) - arg1 - ) + (a2-0 (-> arg0 node-list data 3 bone transform))) + (vector-matrix*! arg1 a1-4 a2-0)) + arg1) (defbehavior babak-with-cannon-ride-cannon-post babak-with-cannon () (let* ((v1-0 (-> self cannon-ent)) - (s5-0 (if v1-0 - (-> v1-0 extra process) - ) - ) - (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - s5-0 - ) - ) - ) + (s5-0 (if v1-0 (-> v1-0 extra process))) + (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) s5-0))) (when gp-0 (let ((s5-1 (new 'stack-no-clear 'vector))) (babak-with-cannon-compute-cannon-dir (the-as mistycannon gp-0) s5-1) - (forward-up->quaternion (-> self collide-info quat) s5-1 *y-vector*) - ) - (babak-with-cannon-compute-ride-point (the-as mistycannon gp-0) (-> self collide-info trans)) - ) - ) + (forward-up->quaternion (-> self collide-info quat) s5-1 *y-vector*)) + (babak-with-cannon-compute-ride-point (the-as mistycannon gp-0) (-> self collide-info trans)))) (nav-enemy-simple-post) - (none) - ) + (none)) (defstate babak-with-cannon-jump-onto-cannon (babak-with-cannon) :event nav-enemy-jump-event-handler - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - ) - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) - (set! (-> self turn-time) (-> self nav-info run-turn-time)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (nav-enemy-neck-control-inactive) - (let* ((v1-7 (-> self cannon-ent)) - (gp-0 (if v1-7 - (-> v1-7 extra process) - ) - ) - (a0-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - ) - (cond - (a0-2 - (babak-with-cannon-compute-ride-point (the-as mistycannon a0-2) (-> self event-param-point)) - (nav-enemy-initialize-jump (-> self event-param-point)) - ) - (else - (go-virtual nav-enemy-idle) - ) - ) - ) - (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) - (ja-channel-push! 1 (seconds 0.2)) - (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (nav-enemy-execute-jump) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (let* ((v1-20 (-> self cannon-ent)) - (gp-1 (if v1-20 - (-> v1-20 extra process) - ) - ) - (a0-9 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) process-drawable)) - gp-1 - ) - ) - ) - (when a0-9 - (let ((gp-2 (babak-with-cannon-compute-cannon-dir (the-as mistycannon a0-9) (new 'stack-no-clear 'vector)))) - (when (not (nav-enemy-facing-direction? gp-2 1820.4445)) - (ja-channel-push! 1 (seconds 0.2)) - (nav-enemy-turn-to-face-dir gp-2 182.04445) - (forward-up->quaternion (-> self collide-info quat) gp-2 *y-vector*) - ) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! babak-look-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go babak-with-cannon-shooting) - ) - :post nav-enemy-jump-post - ) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel))) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (-> self nav-info run-turn-time)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (nav-enemy-neck-control-inactive) + (let* ((v1-7 (-> self cannon-ent)) + (gp-0 (if v1-7 (-> v1-7 extra process))) + (a0-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0))) + (cond + (a0-2 + (babak-with-cannon-compute-ride-point (the-as mistycannon a0-2) (-> self event-param-point)) + (nav-enemy-initialize-jump (-> self event-param-point))) + (else (go-virtual nav-enemy-idle)))) + (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) + (ja-channel-push! 1 (seconds 0.2)) + (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (nav-enemy-execute-jump) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (let* ((v1-20 (-> self cannon-ent)) + (gp-1 (if v1-20 (-> v1-20 extra process))) + (a0-9 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) process-drawable)) gp-1))) + (when a0-9 + (let ((gp-2 (babak-with-cannon-compute-cannon-dir (the-as mistycannon a0-9) (new 'stack-no-clear 'vector)))) + (when (not (nav-enemy-facing-direction? gp-2 1820.4445)) + (ja-channel-push! 1 (seconds 0.2)) + (nav-enemy-turn-to-face-dir gp-2 182.04445) + (forward-up->quaternion (-> self collide-info quat) gp-2 *y-vector*))))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! babak-look-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go babak-with-cannon-shooting)) + :post nav-enemy-jump-post) (defstate babak-with-cannon-jump-off-cannon (babak-with-cannon) :event nav-enemy-jump-event-handler - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - ) - :code (behavior () - (set-time! (-> self state-time)) - (nav-enemy-initialize-jump (-> self entity extra trans)) - (nav-enemy-neck-control-look-at) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (ja-no-eval :group! babak-look-ja :num! (seek! 0.0 2.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0 2.0)) - ) - (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) - (ja-channel-push! 1 (seconds 0.2)) - (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (nav-enemy-execute-jump) - (let ((a1-6 (nav-control-method-16 (-> self nav) (-> self jump-dest)))) - (set-current-poly! (-> self nav) a1-6) - ) - (go-virtual nav-enemy-jump-land) - ) - :post nav-enemy-jump-post - ) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel))) + :code + (behavior () + (set-time! (-> self state-time)) + (nav-enemy-initialize-jump (-> self entity extra trans)) + (nav-enemy-neck-control-look-at) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (ja-no-eval :group! babak-look-ja :num! (seek! 0.0 2.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0 2.0))) + (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) + (ja-channel-push! 1 (seconds 0.2)) + (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (nav-enemy-execute-jump) + (let ((a1-6 (nav-control-method-16 (-> self nav) (-> self jump-dest)))) (set-current-poly! (-> self nav) a1-6)) + (go-virtual nav-enemy-jump-land)) + :post nav-enemy-jump-post) (defstate babak-with-cannon-shooting (babak-with-cannon) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (if v1-2 - (logior! (-> v1-2 extra perm status) (entity-perm-status complete)) - ) - ) - ) - :exit (behavior () - (let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (if v1-0 - (logclear! (-> v1-0 extra perm status) (entity-perm-status complete)) - ) - ) - ) - :trans (behavior () - (let ((f0-1 (- (-> (target-pos 0) y) (-> self collide-info trans y)))) - (if (and (< -40960.0 f0-1) - (and (and *target* - (>= (-> self distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) - (time-elapsed? (-> self state-time) (seconds 3)) - ) - ) - (go babak-with-cannon-jump-off-cannon) - ) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post babak-with-cannon-ride-cannon-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (if v1-2 (logior! (-> v1-2 extra perm status) (entity-perm-status complete))))) + :exit + (behavior () + (let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (if v1-0 (logclear! (-> v1-0 extra perm status) (entity-perm-status complete))))) + :trans + (behavior () + (let ((f0-1 (- (-> (target-pos 0) y) (-> self collide-info trans y)))) + (if (and (< -40960.0 f0-1) + (and (and *target* (>= (-> self distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (seconds 3)))) + (go babak-with-cannon-jump-off-cannon)))) + :code + (behavior () + (loop + (suspend))) + :post babak-with-cannon-ride-cannon-post) (defstate nav-enemy-die (babak-with-cannon) :virtual #t :event nav-enemy-default-event-handler - :trans (behavior () - (if (and *target* (= (-> *target* current-level name) 'beach)) - (spool-push *art-control* "beachcam-cannon" 0 self -1.0) - ) - (if (and *target* (= (-> *target* current-level name) 'misty)) - (spool-push *art-control* "mistycam-cannon" 0 self -1.0) - ) - (let ((t9-3 (-> (find-parent-state) trans))) - (if t9-3 - (t9-3) - ) - ) - ) - ) + :trans + (behavior () + (if (and *target* (= (-> *target* current-level name) 'beach)) (spool-push *art-control* "beachcam-cannon" 0 self -1.0)) + (if (and *target* (= (-> *target* current-level name) 'misty)) (spool-push *art-control* "mistycam-cannon" 0 self -1.0)) + (let ((t9-3 (-> (find-parent-state) trans))) (if t9-3 (t9-3))))) (defstate nav-enemy-fuel-cell (babak-with-cannon) :virtual #t :event process-drawable-fuel-cell-handler - :code (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self collide-info)) - (ja-post) - (when (not (task-complete? *game-info* (-> self entity extra perm task))) - (when (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (process-entity-status! self (entity-perm-status complete) #t) - (if (and *target* (= (-> *target* current-level name) 'beach)) - (beachcam-spawn) - ) - (if (and *target* (= (-> *target* current-level name) 'misty)) - (mistycam-spawn) - ) - ) - (if (not (-> self child)) - (birth-pickup-at-point - (-> self collide-info trans) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - (while (-> self child) - (suspend) - ) - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self collide-info)) + (ja-post) + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (when (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (process-entity-status! self (entity-perm-status complete) #t) + (if (and *target* (= (-> *target* current-level name) 'beach)) (beachcam-spawn)) + (if (and *target* (= (-> *target* current-level name) 'misty)) (mistycam-spawn))) + (if (not (-> self child)) + (birth-pickup-at-point (-> self collide-info trans) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f))) + (while (-> self child) + (suspend))) + (cleanup-for-death self))) (defmethod common-post ((this babak-with-cannon)) (cond - ((= (level-status *level* 'beach) 'active) - (spool-push *art-control* "beachcam-cannon" 0 this -99.0) - ) - ((= (level-status *level* 'misty) 'active) - (spool-push *art-control* "mistycam-cannon" 0 this -99.0) - ) - ) + ((= (level-status *level* 'beach) 'active) (spool-push *art-control* "beachcam-cannon" 0 this -99.0)) + ((= (level-status *level* 'misty) 'active) (spool-push *art-control* "mistycam-cannon" 0 this -99.0))) ((method-of-type nav-enemy common-post) this) - (none) - ) + (none)) (defmethod init-from-entity! ((this babak-with-cannon) (arg0 entity-actor)) (initialize-collision this) @@ -372,10 +247,7 @@ nav-enemy-default-event-handler (set! (-> this cannon-ent) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (logclear! (-> this mask) (process-mask actor-pause)) (if (or (not (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete)))) - (not (logtest? (-> this enemy-info options) (fact-options has-power-cell))) - ) - (go (method-of-object this nav-enemy-idle)) - ) + (not (logtest? (-> this enemy-info options) (fact-options has-power-cell)))) + (go (method-of-object this nav-enemy-idle))) (go (method-of-object this nav-enemy-fuel-cell)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/balloonlurker.gc b/goal_src/jak1/levels/misty/balloonlurker.gc index 1702cc32e8..ef6ce49ef1 100644 --- a/goal_src/jak1/levels/misty/balloonlurker.gc +++ b/goal_src/jak1/levels/misty/balloonlurker.gc @@ -1,14 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/rigid-body.gc") (require "engine/common-obs/nav-enemy.gc") -;; name: balloonlurker.gc -;; name in dgo: balloonlurker -;; dgos: L1, MIS - ;; DECOMP BEGINS (defpartgroup group-balloonlurker-pilot-death @@ -17,393 +12,348 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2015)) - ) + :parts ((sp-item 2015))) (defpart 2015 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:fade-a -3.2) - (:timer (seconds 0.085)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:fade-a -3.2) + (:timer (seconds 0.085)) + (:flags (bit2 bit3)))) (defpartgroup group-balloonlurker-mine-explosion :id 204 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 964 :period (seconds 4) :length (seconds 0.1)) - (sp-item 965 :fade-after (meters 60) :period (seconds 4) :length (seconds 0.05)) - (sp-item 966 :period (seconds 4) :length (seconds 0.05) :offset 15) - (sp-item 967 :period (seconds 4) :length (seconds 0.05)) - (sp-item 968 :fade-after (meters 80) :period (seconds 4) :length (seconds 0.1) :binding 963) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - (sp-item 963 :flags (start-dead)) - ) - ) + :parts + ((sp-item 964 :period (seconds 4) :length (seconds 0.1)) + (sp-item 965 :fade-after (meters 60) :period (seconds 4) :length (seconds 0.05)) + (sp-item 966 :period (seconds 4) :length (seconds 0.05) :offset 15) + (sp-item 967 :period (seconds 4) :length (seconds 0.05)) + (sp-item 968 :fade-after (meters 80) :period (seconds 4) :length (seconds 0.1) :binding 963) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)) + (sp-item 963 :flags (start-dead)))) (defpart 964 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:y (meters 0.5) (meters 0.5)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0) - (:g 70.0) - (:b 70.0 16.0) - (:a 96.0) - (:vel-y (meters 0.006666667) (meters 0.033333335)) - (:scalevel-x (meters 0.006)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00005)) - (:friction 0.92) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 969) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:y (meters 0.5) (meters 0.5)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 70.0) + (:b 70.0 16.0) + (:a 96.0) + (:vel-y (meters 0.006666667) (meters 0.033333335)) + (:scalevel-x (meters 0.006)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00005)) + (:friction 0.92) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 969) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 969 - :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x) (:fade-a -0.32)) - ) + :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x) (:fade-a -0.32))) (defpart 965 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:y (meters 0.75)) - (:scale-x (meters 8) (meters 8)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.2) (meters 3)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 970) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:y (meters 0.75)) + (:scale-x (meters 8) (meters 8)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.2) (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 970) + (:rotate-y (degrees 0)))) (defpart 970 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 966 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 967 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 32.0) - (:b 32.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 32.0) + (:b 32.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 968 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0 10.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 127.0 1 127.0) - (:b 0.0) - (:a 127.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:fade-g -4.266667) - (:fade-b -2.8444445) - (:accel-y (meters -0.004)) - (:friction 0.97) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.017) (seconds 0.127)) - (:next-launcher 971) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0 10.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 127.0 1 127.0) + (:b 0.0) + (:a 127.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:fade-g -4.266667) + (:fade-b -2.8444445) + (:accel-y (meters -0.004)) + (:friction 0.97) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.017) (seconds 0.127)) + (:next-launcher 971) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 971 - :init-specs ((:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -4.266667) - (:fade-g 0.7111111) - (:fade-b 1.4222223) - (:fade-a -2.8444445) - ) - ) + :init-specs + ((:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -4.266667) + (:fade-g 0.7111111) + (:fade-b 1.4222223) + (:fade-a -2.8444445))) (defpart 963 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0) - (:g 70.0) - (:b 70.0 16.0) - (:a 20.0 8.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.11666667) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 70.0) + (:b 70.0 16.0) + (:a 20.0 8.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.11666667) + (:timer (seconds 1)) + (:flags (bit2 bit12)))) (deftype balloonlurker-bank (basic) - ((buoyancy-depth-offset meters) - (player-mass float) - (rudder-factor float) - (max-engine-thrust float) - (max-rudder-deflection-angle float) - (throttle-factor float) - (throttle-distance float) - (throttle-close-distance float) - (explosion-force float) - (mine-weight float) - ) - ) - - -(define *BALLOONLURKER-bank* (new 'static 'balloonlurker-bank - :buoyancy-depth-offset (meters 30) - :player-mass 20.0 - :rudder-factor 32.0 - :max-engine-thrust 409600.0 - :max-rudder-deflection-angle 8192.0 - :throttle-factor 0.5 - :throttle-distance 53248.0 - :throttle-close-distance 81920.0 - :explosion-force 24576000.0 - :mine-weight 53248.0 - ) - ) - -(define *balloonlurker-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 1.6 - :buoyancy-factor 1.2 - :max-buoyancy-depth (meters 15) - :gravity-factor 1.0 - :gravity (meters 60) - :player-weight (meters 6.6) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 7 - :mass 2.0 - :inertial-tensor-x (meters 12) - :inertial-tensor-y (meters 12) - :inertial-tensor-z (meters 20) - :cm-joint-y (meters 9) - :idle-distance (meters 50) - :platform #f - :sound-name #f - ) - ) + ((buoyancy-depth-offset meters) + (player-mass float) + (rudder-factor float) + (max-engine-thrust float) + (max-rudder-deflection-angle float) + (throttle-factor float) + (throttle-distance float) + (throttle-close-distance float) + (explosion-force float) + (mine-weight float))) + +(define *BALLOONLURKER-bank* + (new 'static + 'balloonlurker-bank + :buoyancy-depth-offset (meters 30) + :player-mass 20.0 + :rudder-factor 32.0 + :max-engine-thrust 409600.0 + :max-rudder-deflection-angle 8192.0 + :throttle-factor 0.5 + :throttle-distance 53248.0 + :throttle-close-distance 81920.0 + :explosion-force 24576000.0 + :mine-weight 53248.0)) + +(define *balloonlurker-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 1.6 + :buoyancy-factor 1.2 + :max-buoyancy-depth (meters 15) + :gravity-factor 1.0 + :gravity (meters 60) + :player-weight (meters 6.6) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 7 + :mass 2.0 + :inertial-tensor-x (meters 12) + :inertial-tensor-y (meters 12) + :inertial-tensor-z (meters 20) + :cm-joint-y (meters 9) + :idle-distance (meters 50) + :platform #f + :sound-name #f)) (deftype balloonlurker (rigid-body-platform) - ((explosion-force-position vector :inline) - (explosion-force vector :inline) - (explosion symbol) - (explosion-joint-index uint16 2) - (explosion-joint-index-bytes int8 4 :overlay-at (-> explosion-joint-index 0)) - (vulnerable symbol) - (water-y float) - (propeller joint-mod-spinner) - (rudder joint-mod-set-local) - (mine joint-mod-set-world 2) - (buoyancy-factor float) - (rudder-control float) - (throttle-control float) - (engine-thrust float) - (dest-point vector :inline) - (dest-point-old vector :inline) - (dest-index int8) - (auto-pilot symbol) - (dead symbol) - (anim-frame float) - (engine-sound-id sound-id) - (pedal-sound-id sound-id) - (frame-count int8) - ) + ((explosion-force-position vector :inline) + (explosion-force vector :inline) + (explosion symbol) + (explosion-joint-index uint16 2) + (explosion-joint-index-bytes int8 4 :overlay-at (-> explosion-joint-index 0)) + (vulnerable symbol) + (water-y float) + (propeller joint-mod-spinner) + (rudder joint-mod-set-local) + (mine joint-mod-set-world 2) + (buoyancy-factor float) + (rudder-control float) + (throttle-control float) + (engine-thrust float) + (dest-point vector :inline) + (dest-point-old vector :inline) + (dest-index int8) + (auto-pilot symbol) + (dead symbol) + (anim-frame float) + (engine-sound-id sound-id) + (pedal-sound-id sound-id) + (frame-count int8)) (:states - balloonlurker-die - (balloonlurker-mine-explode int) - balloonlurker-patrol - ) - ) - + balloonlurker-die + (balloonlurker-mine-explode int) + balloonlurker-patrol)) (deftype balloonlurker-pilot (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer balloonlurker) :overlay-at parent) - ) + ((root collide-shape-moving :override) + (parent-override (pointer balloonlurker) :overlay-at parent)) (:methods - (balloonlurker-pilot-method-20 (_type_) none) - (balloonlurker-pilot-method-21 (_type_) none) - ) + (balloonlurker-pilot-method-20 (_type_) none) + (balloonlurker-pilot-method-21 (_type_) none)) (:states - balloonlurker-pilot-die - balloonlurker-pilot-idle - ) - ) - - -(defskelgroup *balloonlurker-sg* balloonlurker balloonlurker-lod0-jg balloonlurker-idle-ja - ((balloonlurker-lod0-mg (meters 20)) - (balloonlurker-lod1-mg (meters 40)) - (balloonlurker-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 12 0 17) - ) - -(defskelgroup *balloonlurker-pilot-sg* balloonlurker balloonlurker-pilot-lod0-jg balloonlurker-pilot-idle-ja - ((balloonlurker-pilot-lod0-mg (meters 20)) - (balloonlurker-pilot-lod1-mg (meters 40)) - (balloonlurker-pilot-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 4) - ) + balloonlurker-pilot-die + balloonlurker-pilot-idle)) + +(defskelgroup *balloonlurker-sg* + balloonlurker + balloonlurker-lod0-jg + balloonlurker-idle-ja + ((balloonlurker-lod0-mg (meters 20)) (balloonlurker-lod1-mg (meters 40)) (balloonlurker-lod2-mg (meters 999999))) + :bounds (static-spherem 0 12 0 17)) + +(defskelgroup *balloonlurker-pilot-sg* + balloonlurker + balloonlurker-pilot-lod0-jg + balloonlurker-pilot-idle-ja + ((balloonlurker-pilot-lod0-mg (meters 20)) + (balloonlurker-pilot-lod1-mg (meters 40)) + (balloonlurker-pilot-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defbehavior balloonlurker-get-path-point balloonlurker ((arg0 int)) - (if (<= (-> self path curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) + (if (<= (-> self path curve num-cverts) 0) (go process-drawable-art-error "no path")) (set! (-> self dest-index) arg0) (set! (-> self dest-point-old quad) (-> self dest-point quad)) (eval-path-curve-div! (-> self path) (-> self dest-point) (the float arg0) 'interp) 0 - (none) - ) + (none)) (defbehavior balloonlurker-get-next-path-point balloonlurker () - (if (<= (-> self path curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) + (if (<= (-> self path curve num-cverts) 0) (go process-drawable-art-error "no path")) (let ((a0-1 (+ (-> self dest-index) 1))) - (if (= a0-1 (-> self path curve num-cverts)) - (set! a0-1 0) - ) - (balloonlurker-get-path-point a0-1) - ) + (if (= a0-1 (-> self path curve num-cverts)) (set! a0-1 0)) + (balloonlurker-get-path-point a0-1)) 0 - (none) - ) + (none)) (defbehavior balloonlurker-snap-to-path-point balloonlurker ((arg0 int)) (let ((s4-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (eval-path-curve-div! (-> self path) s4-0 (the float arg0) 'interp) (set! (-> self root-overlay trans quad) (-> s4-0 quad)) (path-control-method-12 (-> self path) gp-0 (the float arg0)) (set! (-> gp-0 y) 0.0) (vector-normalize! gp-0 1.0) - (forward-up-nopitch->quaternion (-> self root-overlay quat) gp-0 *up-vector*) - ) - ) + (forward-up-nopitch->quaternion (-> self root-overlay quat) gp-0 *up-vector*))) (defbehavior balloonlurker-find-nearest-path-point balloonlurker () (let ((gp-0 0)) (let ((f30-0 409600000.0) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (dotimes (s4-0 (-> self path curve num-cverts)) (eval-path-curve-div! (-> self path) s5-0 (the float s4-0) 'interp) (let ((f0-2 (vector-vector-xz-distance (-> self root-overlay trans) s5-0))) (when (< f0-2 f30-0) (set! f30-0 f0-2) - (set! gp-0 s4-0) - ) - ) - ) - ) - (balloonlurker-get-path-point gp-0) - ) + (set! gp-0 s4-0))))) + (balloonlurker-get-path-point gp-0)) (set! (-> self dest-point-old quad) (-> self dest-point quad)) 0 - (none) - ) + (none)) (defbehavior balloonlurker-player-impulse balloonlurker () (when *target* (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) (set! (-> self player-force-position quad) (-> *target* control trans quad)) (vector-! (-> self player-force) (-> self player-velocity) (-> *target* control transv)) - (vector-float*! (-> self player-force) (-> self player-force) (-> *BALLOONLURKER-bank* player-mass)) - ) - ) + (vector-float*! (-> self player-force) (-> self player-force) (-> *BALLOONLURKER-bank* player-mass)))) (defbehavior balloonlurker-event-handler balloonlurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -412,190 +362,110 @@ (when ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> self root-overlay) - (the-as uint 1) - ) + (the-as uint 1)) (do-push-aways! (-> self root-overlay)) - (send-event - arg0 - 'shove - (-> arg3 param 0) - (static-attack-info ((shove-back (meters 2)) (shove-up (meters 0.5)))) - ) - ) + (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-back (meters 2)) (shove-up (meters 0.5)))))) (dotimes (s4-0 2) - (let ((s3-0 (if (zero? s4-0) - 8 - 16 - ) - ) - ) + (let ((s3-0 (if (zero? s4-0) 8 16))) (when ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> self root-overlay) - (the-as uint s3-0) - ) + (the-as uint s3-0)) (let ((a0-10 (find-prim-by-id (-> self root-overlay) (the-as uint s3-0)))) (when a0-10 (set! (-> self explosion-force-position quad) (-> a0-10 prim-core world-sphere quad)) (if (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'balloonlurker)))) - (level-hint-spawn - (text-id misty-bike-mines-hint) - "sksp0063" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (go balloonlurker-mine-explode s4-0) - ) - ) - ) - ) - ) - #f - ) - (('die) - (go balloonlurker-die) - ) - ) - ) + (level-hint-spawn (text-id misty-bike-mines-hint) "sksp0063" (the-as entity #f) *entity-pool* (game-task none))) + (go balloonlurker-mine-explode s4-0)))))) + #f) + (('die) (go balloonlurker-die)))) (defmethod rigid-body-platform-method-23 ((this balloonlurker) (arg0 float)) (let ((s5-0 (new 'stack-no-clear 'vector))) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (-> this rbody matrix)) - ) + (s4-0 (-> this rbody matrix))) (dotimes (s2-0 4) (let ((s1-0 (-> this control-point-array data s2-0))) (vector-matrix*! (-> s1-0 world-pos) (-> s1-0 local-pos) s4-0) (rigid-body-method-17 (-> this rbody) (-> s1-0 world-pos) (-> s1-0 velocity)) (let* ((f30-0 (vector-vector-xz-distance (-> this dest-point) (-> this root-overlay trans))) (f0-0 (vector-vector-xz-distance (-> this dest-point-old) (-> this root-overlay trans))) - (f0-6 - (/ (- (+ (/ (+ (* f30-0 (-> this dest-point-old y)) (* f0-0 (-> this dest-point y))) (fmax 409.6 (+ f30-0 f0-0))) - (-> *BALLOONLURKER-bank* buoyancy-depth-offset) - ) - (-> s1-0 world-pos y) - ) - (-> this info max-buoyancy-depth) - ) - ) - ) - (vector-float*! - s5-0 - *y-vector* - (* 0.25 - (-> this buoyancy-factor) - (-> this info gravity-factor) - (fmax 0.3 (fmin 1.0 f0-6)) - (-> this info gravity) - (-> this rbody mass) - ) - ) - ) + (f0-6 (/ (- (+ (/ (+ (* f30-0 (-> this dest-point-old y)) (* f0-0 (-> this dest-point y))) (fmax 409.6 (+ f30-0 f0-0))) + (-> *BALLOONLURKER-bank* buoyancy-depth-offset)) + (-> s1-0 world-pos y)) + (-> this info max-buoyancy-depth)))) + (vector-float*! s5-0 + *y-vector* + (* 0.25 + (-> this buoyancy-factor) + (-> this info gravity-factor) + (fmax 0.3 (fmin 1.0 f0-6)) + (-> this info gravity) + (-> this rbody mass)))) (rigid-body-method-13 (-> this rbody) (-> s1-0 world-pos) s5-0) (vector-float*! s5-0 (-> s1-0 velocity) (* -1.0 (-> this info drag-factor))) - (rigid-body-method-13 (-> this rbody) (-> s1-0 world-pos) s5-0) - ) - 0 - ) + (rigid-body-method-13 (-> this rbody) (-> s1-0 world-pos) s5-0)) + 0) (let ((s2-1 (-> this control-point-array data 4))) (let ((f30-1 (* (-> *BALLOONLURKER-bank* max-rudder-deflection-angle) (-> this rudder-control)))) (vector-matrix*! (-> s2-1 world-pos) (-> s2-1 local-pos) s4-0) (rigid-body-method-17 (-> this rbody) (-> s2-1 world-pos) (-> s2-1 velocity)) - (set-vector! s3-0 (cos f30-1) 0.0 (sin f30-1) 1.0) - ) + (set-vector! s3-0 (cos f30-1) 0.0 (sin f30-1) 1.0)) (vector-rotate*! s3-0 s3-0 s4-0) - (vector-float*! - s5-0 - s3-0 - (* -1.0 (-> *BALLOONLURKER-bank* rudder-factor) (vector-dot s3-0 (-> s2-1 velocity))) - ) - (rigid-body-method-13 (-> this rbody) (-> s2-1 world-pos) s5-0) - ) + (vector-float*! s5-0 s3-0 (* -1.0 (-> *BALLOONLURKER-bank* rudder-factor) (vector-dot s3-0 (-> s2-1 velocity)))) + (rigid-body-method-13 (-> this rbody) (-> s2-1 world-pos) s5-0)) 0 (let ((s3-1 (-> this control-point-array data 5))) (vector-matrix*! (-> s3-1 world-pos) (-> s3-1 local-pos) s4-0) (set! (-> s3-1 world-pos quad) (-> s3-1 world-pos quad)) (vector-float*! s5-0 (-> s4-0 vector 2) (-> this engine-thrust)) - (rigid-body-method-13 (-> this rbody) (-> s3-1 world-pos) s5-0) - ) - ) + (rigid-body-method-13 (-> this rbody) (-> s3-1 world-pos) s5-0))) (dotimes (s4-1 2) (when (-> this mine s4-1 enable) - (let ((v1-43 (-> this control-point-array data (if (zero? s4-1) - 5 - 4 - ) - ) - ) - ) + (let ((v1-43 (-> this control-point-array data (if (zero? s4-1) 5 4)))) (vector-float*! s5-0 *y-vector* (-> *BALLOONLURKER-bank* mine-weight)) - (rigid-body-method-13 (-> this rbody) (-> v1-43 world-pos) s5-0) - ) - ) - ) - (vector-float*! - s5-0 - *y-vector* - (* -1.0 (-> this info gravity-factor) (-> this info gravity) (-> this rbody mass)) - ) - (rigid-body-method-15 (-> this rbody) s5-0) - ) + (rigid-body-method-13 (-> this rbody) (-> v1-43 world-pos) s5-0)))) + (vector-float*! s5-0 *y-vector* (* -1.0 (-> this info gravity-factor) (-> this info gravity) (-> this rbody mass))) + (rigid-body-method-15 (-> this rbody) s5-0)) (when (or (-> this player-impulse) (-> this player-contact)) (set! (-> this player-impulse) #f) - (rigid-body-method-13 (-> this rbody) (-> this player-force-position) (-> this player-force)) - ) + (rigid-body-method-13 (-> this rbody) (-> this player-force-position) (-> this player-force))) (when (-> this explosion) (set! (-> this explosion) #f) - (rigid-body-method-13 (-> this rbody) (-> this explosion-force-position) (-> this explosion-force)) - ) + (rigid-body-method-13 (-> this rbody) (-> this explosion-force-position) (-> this explosion-force))) 0 - (none) - ) + (none)) (define *balloonlurker-rudder-joint-home* (new 'static 'vector :x 0.5 :y -0.5 :z -0.5 :w 0.5)) (defbehavior balloonlurker-play-sounds balloonlurker () (cond ((not (-> self dead)) - (if (zero? (-> self engine-sound-id)) - (set! (-> self engine-sound-id) (new-sound-id)) - ) - (if (zero? (-> self pedal-sound-id)) - (set! (-> self pedal-sound-id) (new-sound-id)) - ) + (if (zero? (-> self engine-sound-id)) (set! (-> self engine-sound-id) (new-sound-id))) + (if (zero? (-> self pedal-sound-id)) (set! (-> self pedal-sound-id) (new-sound-id))) (when (< (vector-vector-distance (-> self root-overlay trans) (ear-trans)) 286720.0) (let* ((f0-2 (/ (-> self engine-thrust) (-> *BALLOONLURKER-bank* max-engine-thrust))) (f1-2 100.0) - (f0-3 (* 3.0 f0-2)) - ) - (sound-play - "propeller" - :id (-> self engine-sound-id) - :vol f1-2 - :pitch f0-3 - :position (the-as symbol (-> self node-list data 4 bone transform vector 3)) - ) - ) - (sound-play "pedals" :id (-> self pedal-sound-id) :position (the-as symbol (-> self root-overlay trans))) - ) - ) + (f0-3 (* 3.0 f0-2))) + (sound-play "propeller" + :id (-> self engine-sound-id) + :vol + f1-2 + :pitch + f0-3 + :position + (the-as symbol (-> self node-list data 4 bone transform vector 3)))) + (sound-play "pedals" :id (-> self pedal-sound-id) :position (the-as symbol (-> self root-overlay trans))))) (else - (when (nonzero? (-> self engine-sound-id)) - (sound-stop (-> self engine-sound-id)) - (set! (-> self engine-sound-id) (new 'static 'sound-id)) - 0 - ) - (when (nonzero? (-> self pedal-sound-id)) - (sound-stop (-> self pedal-sound-id)) - (set! (-> self pedal-sound-id) (new 'static 'sound-id)) - 0 - ) - ) - ) - (none) - ) + (when (nonzero? (-> self engine-sound-id)) + (sound-stop (-> self engine-sound-id)) + (set! (-> self engine-sound-id) (new 'static 'sound-id)) + 0) + (when (nonzero? (-> self pedal-sound-id)) + (sound-stop (-> self pedal-sound-id)) + (set! (-> self pedal-sound-id) (new 'static 'sound-id)) + 0))) + (none)) (defbehavior balloonlurker-post balloonlurker () (set! (-> self anim-frame) (ja-frame-num 0)) @@ -604,59 +474,37 @@ (let* ((s4-0 (-> self rbody matrix vector 2)) (s5-0 (-> self rbody matrix)) (gp-0 (-> self rbody position)) - (f30-0 (vector-vector-xz-distance (-> self dest-point) gp-0)) - ) + (f30-0 (vector-vector-xz-distance (-> self dest-point) gp-0))) (when (< f30-0 (-> *BALLOONLURKER-bank* throttle-close-distance)) (balloonlurker-get-next-path-point) - (set! f30-0 (vector-vector-xz-distance (-> self dest-point) gp-0)) - ) + (set! f30-0 (vector-vector-xz-distance (-> self dest-point) gp-0))) (let ((f0-4 (- (vector-dot s4-0 (-> self dest-point)) (vector-dot s4-0 gp-0))) - (f2-2 (- (vector-dot (the-as vector s5-0) (-> self dest-point)) (vector-dot (the-as vector s5-0) gp-0))) - ) - (seek! - (-> self rudder-control) - (fmax -1.0 (fmin 1.0 (/ f2-2 (fmax 4096.0 f0-4)))) - (* 4.0 (seconds-per-frame)) - ) - ) + (f2-2 (- (vector-dot (the-as vector s5-0) (-> self dest-point)) (vector-dot (the-as vector s5-0) gp-0)))) + (seek! (-> self rudder-control) (fmax -1.0 (fmin 1.0 (/ f2-2 (fmax 4096.0 f0-4)))) (* 4.0 (seconds-per-frame)))) (let ((f0-12 0.0) (f1-7 1.0) (f2-4 (* (-> *BALLOONLURKER-bank* throttle-factor) (- f30-0 (-> *BALLOONLURKER-bank* throttle-distance)))) - (f3-3 (-> *BALLOONLURKER-bank* throttle-distance)) - ) - (set! (-> self throttle-control) (fmax f0-12 (fmin f1-7 (* f2-4 (/ 1.0 f3-3))))) - ) - ) - 0 - ) + (f3-3 (-> *BALLOONLURKER-bank* throttle-distance))) + (set! (-> self throttle-control) (fmax f0-12 (fmin f1-7 (* f2-4 (/ 1.0 f3-3))))))) + 0) (else - (let ((f0-14 (analog-input (the-as int (-> *cpad-list* cpads 1 leftx)) 128.0 48.0 110.0 -1.0))) - (seek! (-> self rudder-control) f0-14 (* 2.0 (seconds-per-frame))) - ) - (if (cpad-hold? 1 x) - (seek! (-> self throttle-control) 1.0 (seconds-per-frame)) - (seek! (-> self throttle-control) 0.0 (* 0.25 (seconds-per-frame))) - ) - ) - ) - (seek! - (-> self engine-thrust) - (* (-> self throttle-control) (-> *BALLOONLURKER-bank* max-engine-thrust)) - (* 0.005 (-> *BALLOONLURKER-bank* max-engine-thrust)) - ) + (let ((f0-14 (analog-input (the-as int (-> *cpad-list* cpads 1 leftx)) 128.0 48.0 110.0 -1.0))) + (seek! (-> self rudder-control) f0-14 (* 2.0 (seconds-per-frame)))) + (if (cpad-hold? 1 x) + (seek! (-> self throttle-control) 1.0 (seconds-per-frame)) + (seek! (-> self throttle-control) 0.0 (* 0.25 (seconds-per-frame)))))) + (seek! (-> self engine-thrust) + (* (-> self throttle-control) (-> *BALLOONLURKER-bank* max-engine-thrust)) + (* 0.005 (-> *BALLOONLURKER-bank* max-engine-thrust))) (let ((f0-31 60.0) (f1-14 1820.4445) (f2-6 6735.6445) - (f3-6 (-> *BALLOONLURKER-bank* max-engine-thrust)) - ) - (set! (-> self propeller spin-rate) (* f0-31 (+ f1-14 (* f2-6 (/ 1.0 f3-6) (-> self engine-thrust))))) - ) + (f3-6 (-> *BALLOONLURKER-bank* max-engine-thrust))) + (set! (-> self propeller spin-rate) (* f0-31 (+ f1-14 (* f2-6 (/ 1.0 f3-6) (-> self engine-thrust)))))) (let ((f0-34 (* (-> *BALLOONLURKER-bank* max-rudder-deflection-angle) (-> self rudder-control))) - (gp-1 (new 'stack-no-clear 'quaternion)) - ) + (gp-1 (new 'stack-no-clear 'quaternion))) (quaternion-vector-angle! gp-1 *x-vector* f0-34) - (quaternion*! (-> self rudder transform quat) (the-as quaternion *balloonlurker-rudder-joint-home*) gp-1) - ) + (quaternion*! (-> self rudder transform quat) (the-as quaternion *balloonlurker-rudder-joint-home*) gp-1)) (rigid-body-platform-method-28 self) (quaternion-copy! (-> self root-overlay quat) (-> self rbody rotation)) (rigid-body-method-18 (-> self rbody) (-> self root-overlay trans)) @@ -664,263 +512,198 @@ (when (nonzero? (-> self draw)) (cond ((or (logtest? (-> self draw status) (draw-status no-skeleton-update)) - (logtest? (-> self draw status) (draw-status was-drawn)) - ) + (logtest? (-> self draw status) (draw-status was-drawn))) (logclear! (-> self draw status) (draw-status skip-bones)) (update-transforms! (-> self root-overlay)) - (ja-post) - ) + (ja-post)) (else - (set! (-> self draw origin quad) (-> self root-overlay trans quad)) - (logior! (-> self draw status) (draw-status skip-bones)) - ) - ) - ) - (none) - ) + (set! (-> self draw origin quad) (-> self root-overlay trans quad)) + (logior! (-> self draw status) (draw-status skip-bones))))) + (none)) (defstate balloonlurker-patrol (balloonlurker) :event balloonlurker-event-handler - :trans (behavior () - (ja :num! (loop!)) - (set! (-> self anim-frame) (ja-frame-num 0)) - ) - :code (behavior () - (when (not (ja-group? balloonlurker-idle-ja)) - (ja-channel-push! 1 (seconds 0.07)) - (ja :group! balloonlurker-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - ) - (ja-post) - (anim-loop) - ) - :post balloonlurker-post - ) + :trans + (behavior () + (ja :num! (loop!)) + (set! (-> self anim-frame) (ja-frame-num 0))) + :code + (behavior () + (when (not (ja-group? balloonlurker-idle-ja)) + (ja-channel-push! 1 (seconds 0.07)) + (ja :group! balloonlurker-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0)) + (ja-post) + (anim-loop)) + :post balloonlurker-post) (defstate balloonlurker-mine-explode (balloonlurker) :event balloonlurker-event-handler - :code (behavior ((arg0 int)) - (set! (-> self explosion-force-position quad) - (-> self node-list data (-> self explosion-joint-index-bytes arg0) bone transform vector 3 quad) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 204) - -1 - #f - #f - #f - (-> self explosion-force-position) - :to *entity-pool* - ) - (sound-play "explosion") - (set! (-> self explosion) #t) - (vector-! (-> self explosion-force) (-> self rbody position) (-> self explosion-force-position)) - (set! (-> self explosion-force y) (* 2.0 (-> self explosion-force y))) - (vector-length (-> self explosion-force)) - (vector-normalize! (-> self explosion-force) (-> *BALLOONLURKER-bank* explosion-force)) - (suspend) - (ja :num! (loop!)) - (let ((v1-16 (-> self mine arg0))) - (set! (-> v1-16 enable) #t) - (set-vector! (-> v1-16 transform scale) 0.0 0.0 0.0 1.0) - ) - (if (-> self dead) - (go balloonlurker-die) - (go balloonlurker-patrol) - ) - ) - :post balloonlurker-post - ) + :code + (behavior ((arg0 int)) + (set! (-> self explosion-force-position quad) + (-> self node-list data (-> self explosion-joint-index-bytes arg0) bone transform vector 3 quad)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 204) + -1 + #f + #f + #f + (-> self explosion-force-position) + :to + *entity-pool*) + (sound-play "explosion") + (set! (-> self explosion) #t) + (vector-! (-> self explosion-force) (-> self rbody position) (-> self explosion-force-position)) + (set! (-> self explosion-force y) (* 2.0 (-> self explosion-force y))) + (vector-length (-> self explosion-force)) + (vector-normalize! (-> self explosion-force) (-> *BALLOONLURKER-bank* explosion-force)) + (suspend) + (ja :num! (loop!)) + (let ((v1-16 (-> self mine arg0))) (set! (-> v1-16 enable) #t) (set-vector! (-> v1-16 transform scale) 0.0 0.0 0.0 1.0)) + (if (-> self dead) (go balloonlurker-die) (go balloonlurker-patrol))) + :post balloonlurker-post) (defstate balloonlurker-die (balloonlurker) :event #f - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self vulnerable) #f) - (set! (-> self dead) #t) - ) - :code (behavior () - (local-vars (v1-27 symbol) (sv-16 symbol) (sv-20 (pointer process-tree)) (sv-24 entity-actor)) - (process-entity-status! self (entity-perm-status bit-4) #t) - (process-entity-status! self (entity-perm-status dead) #t) - (when (or (-> self link prev) (-> self link next)) - (set! sv-16 (the-as symbol #f)) - (set! sv-20 (-> self child)) - (set! sv-24 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - (entity-birth-no-kill sv-24) - (apply-all (-> self link) actor-link-dead-hook (& sv-16)) - (when (and sv-16 sv-24) - (process-grab? *target*) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 1)) - (suspend) - ) - ) - (process-release? *target*) - (while (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'task-complete) - (let ((t9-7 send-event-function) - (v1-17 sv-24) - ) - (not (t9-7 - (if v1-17 - (-> v1-17 extra process) - ) - a1-4 - ) - ) - ) - ) - (suspend) - ) - ) - ) - (set! (-> self buoyancy-factor) (* 4.0 (-> self buoyancy-factor))) - (until v1-27 - (suspend) - (ja :num! (loop!)) - (set! v1-27 (or (time-elapsed? (-> self state-time) (seconds 30)) - (< 819200.0 (- (-> self root-overlay trans y) (-> self water-y))) - ) - ) - ) - (cleanup-for-death self) - (while (-> self child) - (suspend) - ) - ) - :post balloonlurker-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self vulnerable) #f) + (set! (-> self dead) #t)) + :code + (behavior () + (local-vars (v1-27 symbol) (sv-16 symbol) (sv-20 (pointer process-tree)) (sv-24 entity-actor)) + (process-entity-status! self (entity-perm-status bit-4) #t) + (process-entity-status! self (entity-perm-status dead) #t) + (when (or (-> self link prev) (-> self link next)) + (set! sv-16 (the-as symbol #f)) + (set! sv-20 (-> self child)) + (set! sv-24 (entity-actor-lookup (-> self entity) 'alt-actor 0)) + (entity-birth-no-kill sv-24) + (apply-all (-> self link) actor-link-dead-hook (& sv-16)) + (when (and sv-16 sv-24) + (process-grab? *target*) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 1)) (suspend))) + (process-release? *target*) + (while (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'task-complete) + (let ((t9-7 send-event-function) + (v1-17 sv-24)) + (not (t9-7 (if v1-17 (-> v1-17 extra process)) a1-4)))) + (suspend)))) + (set! (-> self buoyancy-factor) (* 4.0 (-> self buoyancy-factor))) + (until v1-27 + (suspend) + (ja :num! (loop!)) + (set! v1-27 + (or (time-elapsed? (-> self state-time) (seconds 30)) (< 819200.0 (- (-> self root-overlay trans y) (-> self water-y)))))) + (cleanup-for-death self) + (while (-> self child) + (suspend))) + :post balloonlurker-post) (defmethod relocate ((this balloonlurker) (arg0 int)) - (if (nonzero? (-> this propeller)) - (&+! (-> this propeller) arg0) - ) - (if (nonzero? (-> this rudder)) - (&+! (-> this rudder) arg0) - ) - (if (nonzero? (-> this mine 0)) - (&+! (-> this mine 0) arg0) - ) - (if (nonzero? (-> this mine 1)) - (&+! (-> this mine 1) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this propeller)) (&+! (-> this propeller) arg0)) + (if (nonzero? (-> this rudder)) (&+! (-> this rudder) arg0)) + (if (nonzero? (-> this mine 0)) (&+! (-> this mine 0) arg0)) + (if (nonzero? (-> this mine 1)) (&+! (-> this mine 1) arg0)) + (call-parent-method this arg0)) (defstate balloonlurker-pilot-idle (balloonlurker-pilot) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (send-event (ppointer->process (-> self parent-override)) 'die) - (go balloonlurker-pilot-die) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! balloonlurker-pilot-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (suspend) - (ja :num-func num-func-identity :frame-num (-> self parent-override 0 anim-frame)) - ) - ) - :post (behavior () - (set! (-> self root trans quad) (-> self parent-override 0 root-overlay trans quad)) - (quaternion-copy! (-> self root quat) (-> self parent-override 0 root-overlay quat)) - (update-transforms! (-> self root)) - (ja-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (send-event (ppointer->process (-> self parent-override)) 'die) (go balloonlurker-pilot-die)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! balloonlurker-pilot-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (loop + (suspend) + (ja :num-func num-func-identity :frame-num (-> self parent-override 0 anim-frame)))) + :post + (behavior () + (set! (-> self root trans quad) (-> self parent-override 0 root-overlay trans quad)) + (quaternion-copy! (-> self root quat) (-> self parent-override 0 root-overlay quat)) + (update-transforms! (-> self root)) + (ja-post))) (defstate balloonlurker-pilot-die (balloonlurker-pilot) :event process-drawable-death-event-handler - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 203) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (rigid-body-method-17 (-> self parent-override 0 rbody) (-> self root trans) (-> self root transv)) - (clear-collide-with-as (-> self root)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! balloonlurker-pilot-death-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - ) - :post (behavior () - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0)) - (integrate-no-collide! (-> self root) (-> self root transv)) - (ja-post) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 203) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (rigid-body-method-17 (-> self parent-override 0 rbody) (-> self root trans) (-> self root transv)) + (clear-collide-with-as (-> self root)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! balloonlurker-pilot-death-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self)) + :post + (behavior () + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0)) + (integrate-no-collide! (-> self root) (-> self root transv)) + (ja-post))) (defmethod balloonlurker-pilot-method-20 ((this balloonlurker-pilot)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 2)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 6) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 10240.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod balloonlurker-pilot-method-21 ((this balloonlurker-pilot)) (initialize-skeleton this *balloonlurker-pilot-sg* '()) (set! (-> this draw origin-joint-index) (the-as uint 6)) 0 - (none) - ) + (none)) (defbehavior balloonlurker-pilot-init-by-other balloonlurker-pilot ((arg0 balloonlurker)) (logior! (-> self mask) (process-mask enemy)) (balloonlurker-pilot-method-20 self) (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self fact) - (new 'process 'fact-info-enemy self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> self fact) (new 'process 'fact-info-enemy self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> self root trans quad) (-> arg0 root-overlay trans quad)) (set! (-> self root quat vec quad) (-> arg0 root-overlay quat vec quad)) (set! (-> self root scale quad) (-> arg0 root-overlay scale quad)) (balloonlurker-pilot-method-21 self) (go balloonlurker-pilot-idle) - (none) - ) + (none)) (defmethod rigid-body-platform-method-30 ((this balloonlurker)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 4) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -933,49 +716,40 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 57344.0 0.0 28672.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 4)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-1 transform-index) 4) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 -8192.0 10240.0) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 8)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 10) (set-vector! (-> s3-2 local-sphere) 0.0 -8192.0 0.0 6144.0) - (append-prim s4-0 s3-2) - ) + (append-prim s4-0 s3-2)) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 16)))) (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-3 collide-with) (collide-kind target)) (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 7) (set-vector! (-> s3-3 local-sphere) 0.0 -8192.0 0.0 6144.0) - (append-prim s4-0 s3-3) - ) - ) + (append-prim s4-0 s3-3))) (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this balloonlurker)) (logclear! (-> this mask) (process-mask actor-pause)) (initialize-skeleton this *balloonlurker-sg* '()) (set! (-> this root-overlay pause-adjust-distance) 1228800.0) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this water-y) (-> this root-overlay trans y)) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) @@ -988,29 +762,23 @@ (let ((f30-0 (* 16384.0 (the float (logand s5-0 3))))) (set! (-> s4-0 local-pos x) (* 24576.0 (cos f30-0))) (set! (-> s4-0 local-pos y) 61440.0) - (set! (-> s4-0 local-pos z) (* 36864.0 (sin f30-0))) - ) - (set! (-> s4-0 local-pos w) 1.0) - ) - ) + (set! (-> s4-0 local-pos z) (* 36864.0 (sin f30-0)))) + (set! (-> s4-0 local-pos w) 1.0))) (let ((v1-22 (-> this control-point-array data 4))) (set! (-> v1-22 local-pos x) 0.0) (set! (-> v1-22 local-pos y) 61440.0) (set! (-> v1-22 local-pos z) -40960.0) - (set! (-> v1-22 local-pos w) 1.0) - ) + (set! (-> v1-22 local-pos w) 1.0)) (let ((v1-24 (-> this control-point-array data 5))) (set! (-> v1-24 local-pos x) 0.0) (set! (-> v1-24 local-pos y) 61440.0) (set! (-> v1-24 local-pos z) 40960.0) - (set! (-> v1-24 local-pos w) 1.0) - ) + (set! (-> v1-24 local-pos w) 1.0)) (let ((v1-26 (-> this control-point-array data 6))) (set! (-> v1-26 local-pos x) 0.0) (set! (-> v1-26 local-pos y) 0.0) (set! (-> v1-26 local-pos z) 0.0) - (set! (-> v1-26 local-pos w) 1.0) - ) + (set! (-> v1-26 local-pos w) 1.0)) (set! (-> this buoyancy-factor) (-> this info buoyancy-factor)) (set! (-> this player-impulse) #f) (set! (-> this player-contact) #f) @@ -1018,9 +786,7 @@ (set! (-> this vulnerable) #t) (set! (-> this dead) #f) (set! (-> this explosion) #f) - (set! (-> this propeller) - (new 'process 'joint-mod-spinner this 4 (new 'static 'vector :z -1.0 :w 1.0) 8192.0) - ) + (set! (-> this propeller) (new 'process 'joint-mod-spinner this 4 (new 'static 'vector :z -1.0 :w 1.0) 8192.0)) (set! (-> this rudder) (new 'process 'joint-mod-set-local this 12 #f #t #f)) (set! (-> this mine 0) (new 'process 'joint-mod-set-world this 8 #f)) (set! (-> this mine 1) (new 'process 'joint-mod-set-world this 5 #f)) @@ -1031,8 +797,7 @@ (set! (-> this player-force quad) (-> *null-vector* quad)) (set! (-> this player-velocity quad) (-> *null-vector* quad)) 0 - (none) - ) + (none)) ;; WARN: Function (method 11 balloonlurker) has a return type of none, but the expression builder found a return statement. (defmethod init-from-entity! ((this balloonlurker) (arg0 entity-actor)) @@ -1041,16 +806,8 @@ (process-drawable-from-entity! this arg0) (rigid-body-platform-method-31 this) (cond - ((logtest? (-> (entity-actor-lookup (-> this entity) 'alt-actor 0) extra perm status) - (entity-perm-status complete) - ) + ((logtest? (-> (entity-actor-lookup (-> this entity) 'alt-actor 0) extra perm status) (entity-perm-status complete)) (process-entity-status! this (entity-perm-status dead) #t) - (return #f) - ) - (else - (process-spawn balloonlurker-pilot this :to this) - (go balloonlurker-patrol) - ) - ) - (none) - ) + (return #f)) + (else (process-spawn balloonlurker-pilot this :to this) (go balloonlurker-patrol))) + (none)) diff --git a/goal_src/jak1/levels/misty/bonelurker.gc b/goal_src/jak1/levels/misty/bonelurker.gc index 387020ce35..470be722f8 100644 --- a/goal_src/jak1/levels/misty/bonelurker.gc +++ b/goal_src/jak1/levels/misty/bonelurker.gc @@ -1,58 +1,43 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/nav-enemy.gc") - -;; name: bonelurker.gc -;; name in dgo: bonelurker -;; dgos: L1, MIS - (declare-type bonelurker nav-enemy) ;; DECOMP BEGINS (deftype bonelurker (nav-enemy) - ((bump-player-time time-frame) - ) + ((bump-player-time time-frame)) (:states - bonelurker-stun - ) - ) - + bonelurker-stun)) -(defskelgroup *bonelurker-sg* bonelurker bonelurker-lod0-jg bonelurker-idle-ja - ((bonelurker-lod0-mg (meters 20)) (bonelurker-lod1-mg (meters 40)) (bonelurker-lod2-mg (meters 999999))) - :bounds (static-spherem 0 2 0 6) - :shadow bonelurker-shadow-mg - ) +(defskelgroup *bonelurker-sg* + bonelurker + bonelurker-lod0-jg + bonelurker-idle-ja + ((bonelurker-lod0-mg (meters 20)) (bonelurker-lod1-mg (meters 40)) (bonelurker-lod2-mg (meters 999999))) + :bounds (static-spherem 0 2 0 6) + :shadow bonelurker-shadow-mg) (defbehavior bonelurker-set-small-bounds-sphere bonelurker () (set! (-> self draw bounds w) 12288.0) 0 - (none) - ) + (none)) (defbehavior bonelurker-set-large-bounds-sphere bonelurker () (set! (-> self draw bounds w) 24576.0) 0 - (none) - ) + (none)) (defmethod touch-handler ((this bonelurker) (arg0 process) (arg1 event-message-block)) (when (and (logtest? (-> this nav-enemy-flags) (nav-enemy-flags navenmf6)) ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) - ) + (the-as uint 1))) (when (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) (set! (-> this speed-scale) 0.5) - #t - ) - ) - ) + #t))) (defmethod attack-handler ((this bonelurker) (arg0 process) (arg1 event-message-block)) (with-pp @@ -67,44 +52,27 @@ ((or (send-event-function *target* a1-1) (= (-> arg1 param 1) 'explode)) (logclear! (-> this mask) (process-mask actor-pause)) (go (method-of-object this nav-enemy-die)) - 'die - ) + 'die) (else - (cond - (((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg1 param 0)) - (-> this collide-info) - (the-as uint 2) - ) - (send-event arg0 'shove (-> arg1 param 0) (static-attack-info ((shove-back (meters 4))))) - (go bonelurker-stun) - #t - ) - ((and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg1 param 0)) - (-> this collide-info) - (the-as uint 1) - ) - (= (-> this skel root-channel 0) (-> this skel channel)) - (let ((v1-30 (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - ) - ) - (or (= v1-30 (-> this draw art-group data 9)) (= v1-30 (-> this draw art-group data 10))) - ) - ) - (send-event arg0 'shove (-> arg1 param 0) (static-attack-info ((shove-back (meters 4))))) - (set-time! (-> this bump-player-time)) - (logclear! (-> this nav-enemy-flags) (nav-enemy-flags navenmf6)) - 'push - ) - ) - ) - ) - ) - ) - ) + (cond + (((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> this collide-info) + (the-as uint 2)) + (send-event arg0 'shove (-> arg1 param 0) (static-attack-info ((shove-back (meters 4))))) + (go bonelurker-stun) + #t) + ((and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> this collide-info) + (the-as uint 1)) + (= (-> this skel root-channel 0) (-> this skel channel)) + (let ((v1-30 (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)))) + (or (= v1-30 (-> this draw art-group data 9)) (= v1-30 (-> this draw art-group data 10))))) + (send-event arg0 'shove (-> arg1 param 0) (static-attack-info ((shove-back (meters 4))))) + (set-time! (-> this bump-player-time)) + (logclear! (-> this nav-enemy-flags) (nav-enemy-flags navenmf6)) + 'push))))))) (defbehavior bonelurker-stunned-event-handler bonelurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -114,342 +82,276 @@ (send-event arg0 'get-attack-count 1) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual nav-enemy-die) - 'die - ) - ) - ) - ) + 'die)))) nav-enemy-default-event-handler (defbehavior bonelurker-push-post bonelurker () (compute-alignment! (-> self align)) (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - (align-vel-and-quat-only! - (-> self align) - (align-opts adjust-xz-vel) - (-> self nav travel) - (the-as int 1.0) - 1.0 - (* (-> self enemy-info speed) (-> self speed-scale)) - ) - (vector-v++! - (-> self collide-info transv) - (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0) - ) + (align-vel-and-quat-only! (-> self align) + (align-opts adjust-xz-vel) + (-> self nav travel) + (the-as int 1.0) + 1.0 + (* (-> self enemy-info speed) (-> self speed-scale))) + (vector-v++! (-> self collide-info transv) (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0)) (align! (-> self align) (align-opts adjust-quat) 1.0 1.0 1.0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) (nav-enemy-common-post) - (none) - ) + (none)) (defstate nav-enemy-idle (bonelurker) :virtual #t :event nav-enemy-default-event-handler - :exit (behavior () - (bonelurker-set-large-bounds-sphere) - ) - :code (behavior () - (bonelurker-set-small-bounds-sphere) - ((the-as (function none :behavior bonelurker) (-> (method-of-type nav-enemy nav-enemy-idle) code))) - ) - ) + :exit + (behavior () + (bonelurker-set-large-bounds-sphere)) + :code + (behavior () + (bonelurker-set-small-bounds-sphere) + ((the-as (function none :behavior bonelurker) (-> (method-of-type nav-enemy nav-enemy-idle) code))))) (defstate nav-enemy-patrol (bonelurker) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - ((the-as (function none :behavior bonelurker) (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + ((the-as (function none :behavior bonelurker) (-> (method-of-type nav-enemy nav-enemy-patrol) code))))) (defstate nav-enemy-notice (bonelurker) :virtual #t :event nav-enemy-default-event-handler - :code (-> (method-of-type nav-enemy nav-enemy-notice) code) - ) + :code + (-> (method-of-type nav-enemy nav-enemy-notice) + code)) (defstate nav-enemy-chase (bonelurker) :virtual #t :event nav-enemy-default-event-handler - :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - (if (and (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf6))) - (time-elapsed? (-> self bump-player-time) (seconds 0.5)) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)) - ) - ) - :code (behavior () - (set! (-> self rotate-speed) 524288.0) - (set! (-> self turn-time) (seconds 0.1)) - (set! (-> self speed-scale) 1.0) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (cond - ((ja-group? bonelurker-win-ja) - (ja-channel-push! 1 (seconds 0.3)) - ) - ((ja-group? bonelurker-stun-ja) - (ja-channel-push! 1 (seconds 0.2)) - ) - (else - (ja-channel-push! 1 (seconds 0.15)) - ) - ) - (ja-no-eval :group! bonelurker-charge-left-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ja-no-eval :group! bonelurker-charge-right-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (loop + :trans + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) + (if (and (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf6))) + (time-elapsed? (-> self bump-player-time) (seconds 0.5))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf6)))) + :code + (behavior () + (set! (-> self rotate-speed) 524288.0) + (set! (-> self turn-time) (seconds 0.1)) + (set! (-> self speed-scale) 1.0) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) (cond - ((or (not *target*) - (< 36864.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) - (ja-no-eval :group! bonelurker-charge-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (ja-no-eval :group! bonelurker-charge-left-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (go-virtual nav-enemy-victory) - ) - (ja-no-eval :group! bonelurker-charge-right-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (go-virtual nav-enemy-victory) - ) - (ja-no-eval :group! bonelurker-charge-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) - ) - ) + ((ja-group? bonelurker-win-ja) (ja-channel-push! 1 (seconds 0.3))) + ((ja-group? bonelurker-stun-ja) (ja-channel-push! 1 (seconds 0.2))) + (else (ja-channel-push! 1 (seconds 0.15)))) + (ja-no-eval :group! bonelurker-charge-left-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (ja-no-eval :group! bonelurker-charge-right-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (loop + (cond + ((or (not *target*) (< 36864.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (ja-no-eval :group! bonelurker-charge-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (else + (ja-no-eval :group! bonelurker-charge-left-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) (go-virtual nav-enemy-victory)) + (ja-no-eval :group! bonelurker-charge-right-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) (go-virtual nav-enemy-victory)) + (ja-no-eval :group! bonelurker-charge-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))))))))) (defstate nav-enemy-stop-chase (bonelurker) :virtual #t :event nav-enemy-default-event-handler - :code (-> (method-of-type nav-enemy nav-enemy-stop-chase) code) - ) + :code + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + code)) (defstate nav-enemy-stare (bonelurker) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (set! (-> self rotate-speed) 524288.0) - (set! (-> self turn-time) (seconds 0.2)) - (let ((f30-0 (rand-vu-float-range 0.8 1.2))) - (when (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! bonelurker-win-ja :num! (seek! (ja-aframe 48.0 0) f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 48.0 0) f30-0)) - ) - ) - (loop - (when (not (nav-enemy-facing-player? 2730.6667)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! bonelurker-turn-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (until (nav-enemy-facing-player? 1820.4445) - (ja-blend-eval) - (suspend) - (ja :num! (loop!)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - (ja-channel-push! 1 (seconds 0.25)) - (ja-no-eval :group! bonelurker-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ja-no-eval :num! (loop!)) - (when (rand-vu-percent? 0.15) + :code + (behavior () + (set! (-> self rotate-speed) 524288.0) + (set! (-> self turn-time) (seconds 0.2)) + (let ((f30-0 (rand-vu-float-range 0.8 1.2))) + (when (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) (ja-channel-push! 1 (seconds 0.1)) (ja-no-eval :group! bonelurker-win-ja :num! (seek! (ja-aframe 48.0 0) f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe 48.0 0) f30-0)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 48.0 0) f30-0)))) + (loop + (when (not (nav-enemy-facing-player? 2730.6667)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! bonelurker-turn-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (until (nav-enemy-facing-player? 1820.4445) + (ja-blend-eval) + (suspend) + (ja :num! (loop!))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))) + (ja-channel-push! 1 (seconds 0.25)) + (ja-no-eval :group! bonelurker-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (ja-no-eval :num! (loop!)) + (when (rand-vu-percent? 0.15) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! bonelurker-win-ja :num! (seek! (ja-aframe 48.0 0) f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 48.0 0) f30-0)))))))) (defstate nav-enemy-give-up (bonelurker) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (set! (-> self rotate-speed) 524288.0) - (set! (-> self turn-time) (seconds 0.1)) - (ja-channel-push! 1 (seconds 0.15)) - (let ((s4-0 (-> self collide-info)) - (s5-0 (target-pos 0)) - ) - (when (< (fabs - (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) - ) - 12743.111 - ) - (ja-no-eval :group! bonelurker-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! bonelurker-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! bonelurker-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! bonelurker-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (set! (-> self rotate-speed) 524288.0) + (set! (-> self turn-time) (seconds 0.1)) + (ja-channel-push! 1 (seconds 0.15)) + (let ((s4-0 (-> self collide-info)) + (s5-0 (target-pos 0))) + (when (< (fabs (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans))))) + 12743.111) + (ja-no-eval :group! bonelurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! bonelurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! bonelurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! bonelurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-victory (bonelurker) :virtual #t :event nav-enemy-default-event-handler - :code (-> (method-of-type nav-enemy nav-enemy-victory) code) - ) + :code + (-> (method-of-type nav-enemy nav-enemy-victory) + code)) (defstate bonelurker-stun (bonelurker) :event bonelurker-stunned-event-handler - :enter (behavior () - (nav-enemy-neck-control-inactive) - ) - :exit (behavior () - (nav-enemy-neck-control-look-at) - ) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-normalize-copy! gp-0 (-> self hit-from-dir) 16384.0) - (vector+! gp-0 (-> self collide-info trans) gp-0) - (set! (-> self nav target-pos quad) (-> gp-0 quad)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! bonelurker-stun-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-chase) - ) - :post bonelurker-push-post - ) + :enter + (behavior () + (nav-enemy-neck-control-inactive)) + :exit + (behavior () + (nav-enemy-neck-control-look-at)) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-normalize-copy! gp-0 (-> self hit-from-dir) 16384.0) + (vector+! gp-0 (-> self collide-info trans) gp-0) + (set! (-> self nav target-pos quad) (-> gp-0 quad))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! bonelurker-stun-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-chase)) + :post bonelurker-push-post) -(define *bonelurker-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 6 - :turn-anim 16 - :notice-anim 7 - :run-anim 8 - :jump-anim 17 - :jump-land-anim 18 - :victory-anim 13 - :taunt-anim 13 - :die-anim 14 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 2880) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 5) - :nav-nearest-y-threshold (meters 5) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 32.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #t - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #t - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *bonelurker-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 6 + :turn-anim 16 + :notice-anim 7 + :run-anim 8 + :jump-anim 17 + :jump-land-anim 18 + :victory-anim 13 + :taunt-anim 13 + :die-anim 14 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 2880) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 5) + :nav-nearest-y-threshold (meters 5) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 32.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #t + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #t + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod initialize-collision ((this bonelurker)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 3) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -462,33 +364,27 @@ nav-enemy-default-event-handler (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 4096.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 11468.8 0.0 4096.0) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 29) (set-vector! (-> s3-2 local-sphere) 0.0 4915.2 0.0 4915.2) - (append-prim s4-0 s3-2) - ) - ) + (append-prim s4-0 s3-2))) (set! (-> s5-0 nav-radius) 8192.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 1)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this bonelurker)) (initialize-skeleton this *bonelurker-sg* '()) @@ -497,5 +393,4 @@ nav-enemy-default-event-handler (set! (-> this neck nose) (the-as uint 1)) (set! (-> this neck ear) (the-as uint 2)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/misty-conveyor.gc b/goal_src/jak1/levels/misty/misty-conveyor.gc index 9e2052d260..25b53d9bd3 100644 --- a/goal_src/jak1/levels/misty/misty-conveyor.gc +++ b/goal_src/jak1/levels/misty/misty-conveyor.gc @@ -1,20 +1,15 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/geometry/path.gc") (require "engine/util/sync-info.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/anim/joint-mod-h.gc") - -;; name: misty-conveyor.gc -;; name in dgo: misty-conveyor -;; dgos: L1, MIS - (declare-type keg-conveyor process-drawable) + (declare-type keg-conveyor-paddle process-drawable) -(declare-type keg process-drawable) +(declare-type keg process-drawable) ;; DECOMP BEGINS @@ -24,506 +19,370 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2014 :fade-after (meters 100) :falloff-to (meters 100))) - ) + :parts ((sp-item 2014 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 2014 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:x (meters -3) (meters 6)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 96.0 32.0) - (:b 64.0 32.0) - (:a 16.0 16.0) - (:vel-z (meters -0.013333334) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:x (meters -3) (meters 6)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 96.0 32.0) + (:b 64.0 32.0) + (:a 16.0 16.0) + (:vel-z (meters -0.013333334) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defun keg-bounce-set-particle-rotation-callback ((arg0 part-tracker)) (let ((v1-0 (the-as object (-> arg0 userdata)))) (set! (-> *part-id-table* 2014 init-specs 18 initial-valuef) - (quaternion-y-angle (-> (the-as (pointer process-drawable) v1-0) 0 root quat)) - ) - ) + (quaternion-y-angle (-> (the-as (pointer process-drawable) v1-0) 0 root quat)))) 0 - (none) - ) + (none)) (deftype keg-conveyor (process-drawable) - ((pivot joint-mod-spinner) - (quat quaternion :inline) - ) + ((pivot joint-mod-spinner) + (quat quaternion :inline)) (:states - keg-conveyor-idle - ) - ) - + keg-conveyor-idle)) (deftype keg-conveyor-paddle (process-drawable) - ((root collide-shape-moving :override) - (object-on-paddle (pointer bouncing-float)) - (sync sync-info :inline) - ) + ((root collide-shape-moving :override) + (object-on-paddle (pointer bouncing-float)) + (sync sync-info :inline)) (:states - keg-conveyor-paddle-idle - ) - ) - + keg-conveyor-paddle-idle)) (deftype keg (process-drawable) - ((root collide-shape-moving :override) - (sync-offset float) - (keg-behavior int8) - (path-position vector :inline) - (shadow-enable-plane vector :inline) - (smush smush-control :inline) - (sound-id sound-id) - ) + ((root collide-shape-moving :override) + (sync-offset float) + (keg-behavior int8) + (path-position vector :inline) + (shadow-enable-plane vector :inline) + (smush smush-control :inline) + (sound-id sound-id)) (:states - keg-die - keg-in-chute - keg-on-paddle - keg-on-path - keg-paddle-to-path - ) - ) - - -(defskelgroup *keg-conveyor-sg* keg-conveyor keg-conveyor-lod0-jg keg-conveyor-idle-ja - ((keg-conveyor-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -6 0 8) - ) - -(defskelgroup *keg-conveyor-paddle-sg* keg-conveyor-paddle keg-conveyor-paddle-lod0-jg keg-conveyor-paddle-idle-ja - ((keg-conveyor-paddle-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -6 0 8) - ) - -(defskelgroup *keg-sg* keg keg-lod0-jg keg-idle-ja - ((keg-lod0-mg (meters 20)) (keg-lod1-mg (meters 40)) (keg-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow keg-shadow-mg - ) + keg-die + keg-in-chute + keg-on-paddle + keg-on-path + keg-paddle-to-path)) + +(defskelgroup *keg-conveyor-sg* + keg-conveyor + keg-conveyor-lod0-jg + keg-conveyor-idle-ja + ((keg-conveyor-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -6 0 8)) + +(defskelgroup *keg-conveyor-paddle-sg* + keg-conveyor-paddle + keg-conveyor-paddle-lod0-jg + keg-conveyor-paddle-idle-ja + ((keg-conveyor-paddle-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -6 0 8)) + +(defskelgroup *keg-sg* + keg + keg-lod0-jg + keg-idle-ja + ((keg-lod0-mg (meters 20)) (keg-lod1-mg (meters 40)) (keg-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow keg-shadow-mg) (defun keg-update-smush ((arg0 keg) (arg1 float)) (set! (-> arg0 root scale x) (+ 1.0 (* -1.0 arg1))) (set! (-> arg0 root scale y) (+ 1.0 (* 2.0 arg1))) (set! (-> arg0 root scale z) (+ 1.0 (* -1.0 arg1))) 0 - (none) - ) + (none)) (defbehavior keg-event-handler keg ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch 'attack) (when (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) (sound-play "icrate-break") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 71) - 20 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 71) + 20 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) (sound-stop (-> self sound-id)) - (deactivate self) - ) - ) - ) - ) + (deactivate self))))) (defbehavior keg-post keg () (cond - ((= (-> self keg-behavior) 1) - ) + ((= (-> self keg-behavior) 1)) (else - (if (< (vector-vector-distance (-> self root trans) (ear-trans)) 163840.0) - (sound-play "barrel-roll" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) - ) - ) - ) - (transform-post) - ) + (if (< (vector-vector-distance (-> self root trans) (ear-trans)) 163840.0) + (sound-play "barrel-roll" :id (-> self sound-id) :position (the-as symbol (-> self root trans)))))) + (transform-post)) (defstate keg-on-paddle (keg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('detach) - (go keg-paddle-to-path) - ) - ) - ) - :code (behavior () - (set! (-> (the-as keg (-> self parent 0)) sync-offset) (the-as float (process->ppointer self))) - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (let ((gp-0 (-> (the-as process-drawable (-> self parent 0)) node-list data 4))) - (matrix->quaternion (-> self root quat) (-> gp-0 bone transform)) - (vector<-cspace! (-> self root trans) gp-0) - ) - (set! (-> self path-position quad) (-> self root trans quad)) - (set-time! (-> self state-time)) - (suspend) - ) - ) - :post keg-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('detach) (go keg-paddle-to-path)))) + :code + (behavior () + (set! (-> (the-as keg (-> self parent 0)) sync-offset) (the-as float (process->ppointer self))) + (ja :num-func num-func-identity :frame-num 0.0) + (loop + (let ((gp-0 (-> (the-as process-drawable (-> self parent 0)) node-list data 4))) + (matrix->quaternion (-> self root quat) (-> gp-0 bone transform)) + (vector<-cspace! (-> self root trans) gp-0)) + (set! (-> self path-position quad) (-> self root trans quad)) + (set-time! (-> self state-time)) + (suspend))) + :post keg-post) (defstate keg-paddle-to-path (keg) :event keg-event-handler - :code (behavior () - (let ((gp-0 (new-stack-vector0))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (let ((s5-0 - (eval-path-curve-div! (-> (the-as process-drawable (-> self parent 0)) path) (new-stack-vector0) 0.0 'interp) - ) - (s4-0 (quaternion-copy! (new-stack-quaternion0) (-> self root quat))) - (s3-0 (new-stack-quaternion0)) - (a1-3 (path-control-method-12 (-> (the-as process-drawable (-> self parent 0)) path) (new-stack-vector0) 0.0)) - (f30-0 45.0) - ) - 0.0 - 0.0 - (forward-up-nopitch->quaternion s3-0 a1-3 (new 'static 'vector :y 1.0 :w 1.0)) - (loop - (if (>= (the float (- (current-time) (-> self state-time))) f30-0) - (go keg-on-path) - ) - (let ((f28-0 (/ (the float (- (current-time) (-> self state-time))) f30-0))) - (vector-lerp! (-> self root trans) gp-0 s5-0 f28-0) - (set! (-> self path-position quad) (-> self root trans quad)) - (quaternion-slerp! (-> self root quat) s4-0 s3-0 f28-0) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - ) - ) - :post keg-post - ) + :code + (behavior () + (let ((gp-0 (new-stack-vector0))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (let ((s5-0 (eval-path-curve-div! (-> (the-as process-drawable (-> self parent 0)) path) (new-stack-vector0) 0.0 'interp)) + (s4-0 (quaternion-copy! (new-stack-quaternion0) (-> self root quat))) + (s3-0 (new-stack-quaternion0)) + (a1-3 (path-control-method-12 (-> (the-as process-drawable (-> self parent 0)) path) (new-stack-vector0) 0.0)) + (f30-0 45.0)) + 0.0 + 0.0 + (forward-up-nopitch->quaternion s3-0 a1-3 (new 'static 'vector :y 1.0 :w 1.0)) + (loop + (if (>= (the float (- (current-time) (-> self state-time))) f30-0) (go keg-on-path)) + (let ((f28-0 (/ (the float (- (current-time) (-> self state-time))) f30-0))) + (vector-lerp! (-> self root trans) gp-0 s5-0 f28-0) + (set! (-> self path-position quad) (-> self root trans quad)) + (quaternion-slerp! (-> self root quat) s4-0 s3-0 f28-0)) + (ja :num! (loop!)) + (suspend))))) + :post keg-post) (defstate keg-on-path (keg) :event keg-event-handler - :code (behavior () - (local-vars (sv-48 float) (sv-64 float) (sv-80 float) (sv-96 float) (sv-112 float)) - (let ((gp-0 (new-stack-vector0)) - (s5-0 (new 'stack 'vector3s)) - ) - 0.0 - (let ((f30-0 0.0)) + :code + (behavior () + (local-vars (sv-48 float) (sv-64 float) (sv-80 float) (sv-96 float) (sv-112 float)) + (let ((gp-0 (new-stack-vector0)) + (s5-0 (new 'stack 'vector3s))) 0.0 - (let ((f28-0 (the float (+ (-> (the-as keg-conveyor-paddle (-> self parent 0)) path curve num-cverts) -1)))) + (let ((f30-0 0.0)) 0.0 - (let ((f26-1 (- 1.0 (get-current-phase (-> (the-as keg-conveyor-paddle (-> self parent 0)) sync)))) - (f24-0 102379.1) - ) - (/ 1.0 f24-0) - (let ((f22-0 1.0) - (f20-0 2.5) - ) - (set! sv-48 0.0) - (set! sv-64 0.0) - (set! sv-80 (- (-> *standard-dynamics* gravity-length))) - (loop - (let ((f0-13 (+ (get-current-phase (-> (the-as keg-conveyor-paddle (-> self parent 0)) sync)) f26-1))) - (set! sv-96 (- f0-13 (the float (the int f0-13)))) - ) - (if (< sv-96 f30-0) - (go keg-in-chute) - ) - (set! f30-0 sv-96) - (set! sv-112 (* sv-96 f28-0)) - (eval-path-curve-div! - (-> (the-as keg-conveyor-paddle (-> self parent 0)) path) - (-> self path-position) - sv-112 - 'interp - ) - (path-control-method-12 (-> (the-as keg-conveyor-paddle (-> self parent 0)) path) gp-0 sv-112) - (seek-toward-heading-vec! (-> self root) gp-0 131072.0 (seconds 0.1)) - (set! (-> self root trans quad) (-> self path-position quad)) - (when (= (-> self keg-behavior) 1) - (cond - ((>= (vector4-dot (camera-pos) (-> self shadow-enable-plane)) 0.0) - (let ((v1-32 (-> self draw shadow-ctrl))) - (logclear! (-> v1-32 settings flags) (shadow-flags disable-draw)) - ) - 0 - (let ((v1-35 (-> self draw shadow-ctrl))) - (set! (-> v1-35 settings top-plane w) (- (-> self path-position y))) - ) - 0 - (let ((v1-38 (-> self draw shadow-ctrl))) - (set! (-> v1-38 settings bot-plane w) (- (+ -8192.0 (-> self path-position y)))) - ) - 0 - ) - (else - (let ((v1-41 (-> self draw shadow-ctrl))) - (logior! (-> v1-41 settings flags) (shadow-flags disable-draw)) - ) - 0 - (let ((v1-44 (-> self draw shadow-ctrl))) - (set! (-> v1-44 settings top-plane w) (- (-> self path-position y))) - ) - 0 - (let ((v1-47 (-> self draw shadow-ctrl))) - (set! (-> v1-47 settings bot-plane w) (- (+ -8192.0 (-> self path-position y)))) - ) - 0 - ) - ) - (let ((f0-32 (- f28-0 sv-112))) - (if (< f0-32 f20-0) - (set! f22-0 (/ f0-32 f20-0)) - ) - ) - (set! sv-64 (+ sv-64 (* sv-80 (seconds-per-frame)))) - (set! sv-48 (+ sv-48 (* sv-64 (seconds-per-frame)))) - (when (< sv-48 0.0) - (set! sv-48 0.0) - (activate! (-> self smush) -0.15 90 150 1.0 1.0) - (set! sv-64 f24-0) - (sound-play "barrel-bounce" :vol 80) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 197) - -1 - keg-bounce-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - (let ((f0-39 (update! (-> self smush)))) - (keg-update-smush self f0-39) - ) - (+! (-> self root trans y) (* f22-0 sv-48)) - (set! (-> s5-0 x) 0.0) - (set! (-> s5-0 y) 1.0) - (set! (-> s5-0 z) 0.0) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - ) - ) - ) - ) - ) - :post keg-post - ) + (let ((f28-0 (the float (+ (-> (the-as keg-conveyor-paddle (-> self parent 0)) path curve num-cverts) -1)))) + 0.0 + (let ((f26-1 (- 1.0 (get-current-phase (-> (the-as keg-conveyor-paddle (-> self parent 0)) sync)))) + (f24-0 102379.1)) + (/ 1.0 f24-0) + (let ((f22-0 1.0) + (f20-0 2.5)) + (set! sv-48 0.0) + (set! sv-64 0.0) + (set! sv-80 (- (-> *standard-dynamics* gravity-length))) + (loop + (let ((f0-13 (+ (get-current-phase (-> (the-as keg-conveyor-paddle (-> self parent 0)) sync)) f26-1))) + (set! sv-96 (- f0-13 (the float (the int f0-13))))) + (if (< sv-96 f30-0) (go keg-in-chute)) + (set! f30-0 sv-96) + (set! sv-112 (* sv-96 f28-0)) + (eval-path-curve-div! (-> (the-as keg-conveyor-paddle (-> self parent 0)) path) (-> self path-position) sv-112 'interp) + (path-control-method-12 (-> (the-as keg-conveyor-paddle (-> self parent 0)) path) gp-0 sv-112) + (seek-toward-heading-vec! (-> self root) gp-0 131072.0 (seconds 0.1)) + (set! (-> self root trans quad) (-> self path-position quad)) + (when (= (-> self keg-behavior) 1) + (cond + ((>= (vector4-dot (camera-pos) (-> self shadow-enable-plane)) 0.0) + (let ((v1-32 (-> self draw shadow-ctrl))) (logclear! (-> v1-32 settings flags) (shadow-flags disable-draw))) + 0 + (let ((v1-35 (-> self draw shadow-ctrl))) (set! (-> v1-35 settings top-plane w) (- (-> self path-position y)))) + 0 + (let ((v1-38 (-> self draw shadow-ctrl))) + (set! (-> v1-38 settings bot-plane w) (- (+ -8192.0 (-> self path-position y))))) + 0) + (else + (let ((v1-41 (-> self draw shadow-ctrl))) (logior! (-> v1-41 settings flags) (shadow-flags disable-draw))) + 0 + (let ((v1-44 (-> self draw shadow-ctrl))) (set! (-> v1-44 settings top-plane w) (- (-> self path-position y)))) + 0 + (let ((v1-47 (-> self draw shadow-ctrl))) + (set! (-> v1-47 settings bot-plane w) (- (+ -8192.0 (-> self path-position y))))) + 0)) + (let ((f0-32 (- f28-0 sv-112))) (if (< f0-32 f20-0) (set! f22-0 (/ f0-32 f20-0)))) + (set! sv-64 (+ sv-64 (* sv-80 (seconds-per-frame)))) + (set! sv-48 (+ sv-48 (* sv-64 (seconds-per-frame)))) + (when (< sv-48 0.0) + (set! sv-48 0.0) + (activate! (-> self smush) -0.15 90 150 1.0 1.0) + (set! sv-64 f24-0) + (sound-play "barrel-bounce" :vol 80) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 197) + -1 + keg-bounce-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)) + (let ((f0-39 (update! (-> self smush)))) (keg-update-smush self f0-39)) + (+! (-> self root trans y) (* f22-0 sv-48)) + (set! (-> s5-0 x) 0.0) + (set! (-> s5-0 y) 1.0) + (set! (-> s5-0 z) 0.0)) + (ja :num! (loop!)) + (suspend)))))))) + :post keg-post) (defstate keg-in-chute (keg) :event keg-event-handler - :code (behavior () - (let ((gp-0 (path-control-method-12 - (-> (the-as process-drawable (-> self parent 0)) path) - (new-stack-vector0) - (the float (+ (-> (the-as process-drawable (-> self parent 0)) path curve num-cverts) -1)) - ) - ) - (s5-0 (new-stack-vector0)) - (f30-0 61440.0) - (f28-0 0.0) - (f26-0 (- (-> *standard-dynamics* gravity-length))) - ) - (let ((v1-10 (-> self draw shadow-ctrl))) - (logior! (-> v1-10 settings flags) (shadow-flags disable-draw)) - ) - 0 - (clear-collide-with-as (-> self root)) - (vector-normalize! gp-0 1.0) - (set-time! (-> self state-time)) - (loop - (if (time-elapsed? (-> self state-time) (seconds 1)) - (go keg-die) - ) - (let ((v1-23 (-> self root trans))) - (vector-float*! s5-0 gp-0 (* f30-0 (seconds-per-frame))) - (set! (-> s5-0 y) (* f28-0 (seconds-per-frame))) - (+! f28-0 (* f26-0 (seconds-per-frame))) - (vector+! v1-23 v1-23 s5-0) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - ) - :post keg-post - ) + :code + (behavior () + (let ((gp-0 (path-control-method-12 (-> (the-as process-drawable (-> self parent 0)) path) + (new-stack-vector0) + (the float (+ (-> (the-as process-drawable (-> self parent 0)) path curve num-cverts) -1)))) + (s5-0 (new-stack-vector0)) + (f30-0 61440.0) + (f28-0 0.0) + (f26-0 (- (-> *standard-dynamics* gravity-length)))) + (let ((v1-10 (-> self draw shadow-ctrl))) (logior! (-> v1-10 settings flags) (shadow-flags disable-draw))) + 0 + (clear-collide-with-as (-> self root)) + (vector-normalize! gp-0 1.0) + (set-time! (-> self state-time)) + (loop + (if (time-elapsed? (-> self state-time) (seconds 1)) (go keg-die)) + (let ((v1-23 (-> self root trans))) + (vector-float*! s5-0 gp-0 (* f30-0 (seconds-per-frame))) + (set! (-> s5-0 y) (* f28-0 (seconds-per-frame))) + (+! f28-0 (* f26-0 (seconds-per-frame))) + (vector+! v1-23 v1-23 s5-0)) + (ja :num! (loop!)) + (suspend)))) + :post keg-post) (defstate keg-die (keg) :event #f - :code (behavior () - (sound-stop (-> self sound-id)) - (cleanup-for-death self) - ) - :post transform-post - ) + :code + (behavior () + (sound-stop (-> self sound-id)) + (cleanup-for-death self)) + :post transform-post) (defbehavior keg-init-by-other keg ((arg0 keg) (arg1 int)) (stack-size-set! (-> self main-thread) 512) (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> self root) s4-0) - ) + (set! (-> self root) s4-0)) (set! (-> self root trans quad) (-> arg0 root trans quad)) (initialize-skeleton self *keg-sg* '()) (set! (-> self draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0)) - (let ((v1-25 (-> self draw shadow-ctrl))) - (logior! (-> v1-25 settings flags) (shadow-flags disable-draw)) - ) + (let ((v1-25 (-> self draw shadow-ctrl))) (logior! (-> v1-25 settings flags) (shadow-flags disable-draw))) 0 (let ((s5-1 (new 'static 'vector :x -514715.0 :y 226968.0 :z 3906894.8 :w 1.0))) (let ((v1-27 (new 'static 'vector :x 115430.4 :y 109848.9 :z 4391595.5 :w 1.0)) (s3-1 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (vector-! s3-1 v1-27 s5-1) (vector-normalize! s3-1 1.0) (vector-cross! s4-1 s3-1 *y-vector*) (vector-normalize! s4-1 1.0) - (vector-cross! (-> self shadow-enable-plane) s4-1 s3-1) - ) + (vector-cross! (-> self shadow-enable-plane) s4-1 s3-1)) (vector-normalize! (-> self shadow-enable-plane) 1.0) - (set! (-> self shadow-enable-plane w) (- (vector-dot (-> self shadow-enable-plane) s5-1))) - ) + (set! (-> self shadow-enable-plane w) (- (vector-dot (-> self shadow-enable-plane) s5-1)))) (set! (-> self keg-behavior) arg1) (logclear! (-> self mask) (process-mask actor-pause enemy)) (let ((gp-1 (new-stack-vector0))) (path-control-method-12 (-> (the-as process-drawable (-> self parent 0)) path) gp-1 0.0) - (set-heading-vec! (-> self root) gp-1) - ) + (set-heading-vec! (-> self root) gp-1)) (set! (-> self sound-id) (new-sound-id)) (go keg-on-paddle) - (none) - ) + (none)) (defun keg-conveyor-spawn-keg ((arg0 keg-conveyor)) - (process-spawn keg arg0 0 :to arg0) - ) + (process-spawn keg arg0 0 :to arg0)) (defun keg-conveyor-spawn-bouncing-keg ((arg0 keg-conveyor)) - (process-spawn keg arg0 1 :to arg0) - ) + (process-spawn keg arg0 1 :to arg0)) (define *keg-conveyor-keg-spawn-table* (new 'static 'boxed-array :type int8 1 2 1 1 2 1)) (defstate keg-conveyor-idle (keg-conveyor) - :code (behavior () - (ja :num-func num-func-identity :frame-num 0.0) - 0.0 - (loop - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (ja :num-func num-func-identity :frame-num 0.0) + 0.0 + (loop + (suspend))) + :post ja-post) (defstate keg-conveyor-paddle-idle (keg-conveyor-paddle) - :code (behavior () - (let ((f30-0 57.0) - (gp-0 0) - (s5-0 (length *keg-conveyor-keg-spawn-table*)) - ) - (loop - (let ((s4-0 #f)) - (when (or (not *target*) (< 102400.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (let ((v1-10 (-> *keg-conveyor-keg-spawn-table* gp-0))) - (cond - ((zero? v1-10) - (nothing) - ) - ((= v1-10 1) - (keg-conveyor-spawn-keg (the-as keg-conveyor self)) - ) - ((= v1-10 2) - (keg-conveyor-spawn-bouncing-keg (the-as keg-conveyor self)) - ) - (else - (nothing) - ) - ) - ) - ) - (+! gp-0 1) - (if (>= gp-0 s5-0) - (set! gp-0 0) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not s4-0) (>= (ja-aframe-num 0) f30-0)) - (set! s4-0 #t) - (when (-> self object-on-paddle) - (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) 'detach) - (let ((t9-8 send-event-function) - (v1-42 (-> self object-on-paddle)) - ) - (t9-8 - (the-as process-tree (if v1-42 - (-> v1-42 0 max-value) - ) - ) - a1-2 - ) - ) - ) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - :post transform-post - ) + :code + (behavior () + (let ((f30-0 57.0) + (gp-0 0) + (s5-0 (length *keg-conveyor-keg-spawn-table*))) + (loop + (let ((s4-0 #f)) + (when (or (not *target*) (< 102400.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (let ((v1-10 (-> *keg-conveyor-keg-spawn-table* gp-0))) + (cond + ((zero? v1-10) (nothing)) + ((= v1-10 1) (keg-conveyor-spawn-keg (the-as keg-conveyor self))) + ((= v1-10 2) (keg-conveyor-spawn-bouncing-keg (the-as keg-conveyor self))) + (else (nothing))))) + (+! gp-0 1) + (if (>= gp-0 s5-0) (set! gp-0 0)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not s4-0) (>= (ja-aframe-num 0) f30-0)) + (set! s4-0 #t) + (when (-> self object-on-paddle) + (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) 'detach) + (let ((t9-8 send-event-function) + (v1-42 (-> self object-on-paddle))) + (t9-8 (the-as process-tree (if v1-42 (-> v1-42 0 max-value))) a1-2))))) + (suspend) + (ja :num! (seek!))))))) + :post transform-post) (defbehavior keg-conveyor-paddle-init-by-other keg-conveyor-paddle ((arg0 keg-conveyor-paddle)) (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) - ) + (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) (collide-kind ground-object)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -531,12 +390,10 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self path) (new 'process 'curve-control self 'path -1000000000.0)) (logior! (-> self path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> self root trans quad) (-> arg0 root trans quad)) @@ -547,15 +404,11 @@ (logclear! (-> self mask) (process-mask actor-pause enemy)) (set! (-> self object-on-paddle) (the-as (pointer bouncing-float) #f)) (go keg-conveyor-paddle-idle) - (none) - ) + (none)) (defmethod relocate ((this keg-conveyor) (arg0 int)) - (if (nonzero? (-> this pivot)) - (&+! (-> this pivot) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this pivot)) (&+! (-> this pivot) arg0)) + (call-parent-method this arg0)) ;; WARN: Function (method 11 keg-conveyor) has a return type of none, but the expression builder found a return statement. (defmethod init-from-entity! ((this keg-conveyor) (arg0 entity-actor)) @@ -567,8 +420,7 @@ (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (when (logtest? (-> this path flags) (path-control-flag not-found)) (go process-drawable-art-error "path") - (return #f) - ) + (return #f)) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this pivot) (new 'process 'joint-mod-spinner this 4 (new 'static 'vector :x 1.0 :w 1.0) 65536.0)) (let ((s5-1 (new-stack-vector0))) @@ -577,11 +429,8 @@ (set-heading-vec! (-> this root) s5-1) (quaternion->matrix s4-0 (-> this root quat)) (set-vector! s5-1 -4096.0 -3072.0 -1433.6 1.0) - (vector-rotate*! s5-1 s5-1 s4-0) - ) - (vector+! (-> this root trans) (-> this root trans) s5-1) - ) + (vector-rotate*! s5-1 s5-1 s4-0)) + (vector+! (-> this root trans) (-> this root trans) s5-1)) (process-spawn keg-conveyor-paddle this :to this) (go keg-conveyor-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/misty-obs.gc b/goal_src/jak1/levels/misty/misty-obs.gc index 8ef1062723..cedf423618 100644 --- a/goal_src/jak1/levels/misty/misty-obs.gc +++ b/goal_src/jak1/levels/misty/misty-obs.gc @@ -1,1048 +1,987 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/rigid-body.gc") (require "levels/common/battlecontroller.gc") (require "engine/camera/pov-camera-h.gc") -;; name: misty-obs.gc -;; name in dgo: misty-obs -;; dgos: L1, MIS - ;; DECOMP BEGINS (defpartgroup group-windturbine-particles :id 191 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 908 :fade-after (meters 60) :period (seconds 4.04) :length (seconds 0.035)) - (sp-item 908 :fade-after (meters 60) :period (seconds 19.3) :length (seconds 0.035)) - (sp-item 908 :fade-after (meters 60) :period (seconds 16.627) :length (seconds 0.035)) - (sp-item 908 :fade-after (meters 60) :period (seconds 11.7) :length (seconds 0.035)) - (sp-item 908 :fade-after (meters 60) :period (seconds 6.125) :length (seconds 0.035)) - (sp-item 909 :fade-after (meters 60) :period (seconds 5.5) :length (seconds 0.035)) - (sp-item 909 :fade-after (meters 60) :period (seconds 12.6) :length (seconds 0.035)) - (sp-item 909 :fade-after (meters 60) :period (seconds 7.4) :length (seconds 0.035)) - (sp-item 909 :fade-after (meters 60) :period (seconds 27.45) :length (seconds 0.035)) - (sp-item 909 :fade-after (meters 60) :period (seconds 11.121) :length (seconds 0.035)) - (sp-item 910 :fade-after (meters 60) :period (seconds 0.5) :length (seconds 0.25)) - (sp-item 910 :fade-after (meters 120) :period (seconds 0.5) :length (seconds 0.25)) - (sp-item 910 :fade-after (meters 180) :period (seconds 0.5) :length (seconds 0.25)) - (sp-item 911 :fade-after (meters 60) :period (seconds 0.5) :length (seconds 0.25) :offset 75) - (sp-item 911 :fade-after (meters 120) :period (seconds 0.5) :length (seconds 0.25) :offset 75) - (sp-item 911 :fade-after (meters 180) :period (seconds 0.5) :length (seconds 0.25) :offset 75) - ) - ) + :parts + ((sp-item 908 :fade-after (meters 60) :period (seconds 4.04) :length (seconds 0.035)) + (sp-item 908 :fade-after (meters 60) :period (seconds 19.3) :length (seconds 0.035)) + (sp-item 908 :fade-after (meters 60) :period (seconds 16.627) :length (seconds 0.035)) + (sp-item 908 :fade-after (meters 60) :period (seconds 11.7) :length (seconds 0.035)) + (sp-item 908 :fade-after (meters 60) :period (seconds 6.125) :length (seconds 0.035)) + (sp-item 909 :fade-after (meters 60) :period (seconds 5.5) :length (seconds 0.035)) + (sp-item 909 :fade-after (meters 60) :period (seconds 12.6) :length (seconds 0.035)) + (sp-item 909 :fade-after (meters 60) :period (seconds 7.4) :length (seconds 0.035)) + (sp-item 909 :fade-after (meters 60) :period (seconds 27.45) :length (seconds 0.035)) + (sp-item 909 :fade-after (meters 60) :period (seconds 11.121) :length (seconds 0.035)) + (sp-item 910 :fade-after (meters 60) :period (seconds 0.5) :length (seconds 0.25)) + (sp-item 910 :fade-after (meters 120) :period (seconds 0.5) :length (seconds 0.25)) + (sp-item 910 :fade-after (meters 180) :period (seconds 0.5) :length (seconds 0.25)) + (sp-item 911 :fade-after (meters 60) :period (seconds 0.5) :length (seconds 0.25) :offset 75) + (sp-item 911 :fade-after (meters 120) :period (seconds 0.5) :length (seconds 0.25) :offset 75) + (sp-item 911 :fade-after (meters 180) :period (seconds 0.5) :length (seconds 0.25) :offset 75))) (defpart 910 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.066 0.066) - (:x (meters -4)) - (:y (meters -2) (meters 0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 32.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.0003)) - (:timer (seconds 2) (seconds 4.997)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.25)) - (:next-launcher 912) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.066 0.066) + (:x (meters -4)) + (:y (meters -2) (meters 0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 32.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.0003)) + (:timer (seconds 2) (seconds 4.997)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.25)) + (:next-launcher 912))) (defpart 912 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.8)) (:next-launcher 913)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.8)) (:next-launcher 913))) (defpart 913 - :init-specs ((:vel-x (meters -0.06666667)) - (:vel-y (meters 0.0033333334)) - (:scalevel-x (meters 0.016666668)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.2) - (:accel-x (meters 0.00033333333)) - ) - ) + :init-specs + ((:vel-x (meters -0.06666667)) + (:vel-y (meters 0.0033333334)) + (:scalevel-x (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.2) + (:accel-x (meters 0.00033333333)))) (defpart 911 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.066 0.066) - (:x (meters -4)) - (:y (meters -2) (meters 0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 32.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.0003)) - (:timer (seconds 2) (seconds 4.997)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.5)) - (:next-launcher 912) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.066 0.066) + (:x (meters -4)) + (:y (meters -2) (meters 0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 32.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.0003)) + (:timer (seconds 2) (seconds 4.997)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.5)) + (:next-launcher 912))) (defpart 908 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0 24.0) - (:x (meters -4)) - (:y (meters -4.5) (meters 1)) - (:z (meters -0.5)) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.6) - (:accel-y (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -220) (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0 24.0) + (:x (meters -4)) + (:y (meters -4.5) (meters 1)) + (:z (meters -0.5)) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.6) + (:accel-y (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -220) (degrees 110)))) (defpart 909 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0 24.0) - (:x (meters -4)) - (:y (meters -4.5) (meters 1)) - (:z (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.6) - (:accel-y (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -110) (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0 24.0) + (:x (meters -4)) + (:y (meters -4.5) (meters 1)) + (:z (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.6) + (:accel-y (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -110) (degrees 110)))) (defpartgroup group-misty-bone-01 :id 192 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 24) - :parts ((sp-item 914 :period (seconds 2.6) :length (seconds 0.05)) - (sp-item 915 :period (seconds 2.6) :length (seconds 0.05)) - (sp-item 916 :period (seconds 2.6) :length (seconds 0.215)) - (sp-item 917 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 918 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 919 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 920 :period (seconds 2.6) :length (seconds 0.107) :offset 65056) - (sp-item 921 :period (seconds 2.6) :length (seconds 0.107) :offset 64996) - ) - ) + :parts + ((sp-item 914 :period (seconds 2.6) :length (seconds 0.05)) + (sp-item 915 :period (seconds 2.6) :length (seconds 0.05)) + (sp-item 916 :period (seconds 2.6) :length (seconds 0.215)) + (sp-item 917 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 918 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 919 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 920 :period (seconds 2.6) :length (seconds 0.107) :offset 65056) + (sp-item 921 :period (seconds 2.6) :length (seconds 0.107) :offset 64996))) (defpart 921 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters -0.01) (meters 0.04)) - (:vel-z (meters -0.023333333) (meters 0.046666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -80)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 187)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters -0.01) (meters 0.04)) + (:vel-z (meters -0.023333333) (meters 0.046666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -80)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 187)))) (defpart 920 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters 2.5)) - (:y (meters 1) (meters 1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 32.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.000033333334)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 187)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters 2.5)) + (:y (meters 1) (meters 1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 32.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.000033333334)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 187)))) (defpart 919 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters -0.01) (meters 0.04)) - (:vel-z (meters -0.023333333) (meters 0.046666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -80)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 187)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters -0.01) (meters 0.04)) + (:vel-z (meters -0.023333333) (meters 0.046666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -80)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 187)))) (defpart 918 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 0.05) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 64.0 32.0) - (:vel-x (meters -0.026666667) (meters 0.013333334)) - (:vel-y (meters -0.013333334) (meters 0.053333335)) - (:vel-z (meters -0.033333335) (meters 0.06666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:accel-y (meters -0.0016666667)) - (:friction 0.996) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.3)) - (:next-launcher 922) - (:conerot-z (degrees -80)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 187)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 0.05) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 64.0 32.0) + (:vel-x (meters -0.026666667) (meters 0.013333334)) + (:vel-y (meters -0.013333334) (meters 0.053333335)) + (:vel-z (meters -0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:accel-y (meters -0.0016666667)) + (:friction 0.996) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.3)) + (:next-launcher 922) + (:conerot-z (degrees -80)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 187)))) (defpart 922 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 917 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:y (meters -1) (meters 1.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 8.0) - (:vel-y (meters -0.0016666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:fade-a -0.026666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -80)) - (:conerot-radius (meters 4) (meters 16)) - (:rotate-y (degrees 187)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:y (meters -1) (meters 1.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 8.0) + (:vel-y (meters -0.0016666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:fade-a -0.026666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -80)) + (:conerot-radius (meters 4) (meters 16)) + (:rotate-y (degrees 187)))) (defpart 914 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:y (meters 1) (meters 1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 32.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.000033333334)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:y (meters 1) (meters 1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 32.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.000033333334)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 140)))) (defpart 915 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:y (meters 1) (meters 1)) - (:scale-x (meters 0.05) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 64.0 32.0) - (:vel-y (meters 0.04) (meters 0.026666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:accel-y (meters -0.0016666667)) - (:friction 0.996) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.3)) - (:next-launcher 923) - (:conerot-x (degrees 70) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:y (meters 1) (meters 1)) + (:scale-x (meters 0.05) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 64.0 32.0) + (:vel-y (meters 0.04) (meters 0.026666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:accel-y (meters -0.0016666667)) + (:friction 0.996) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.3)) + (:next-launcher 923) + (:conerot-x (degrees 70) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 140)))) (defpart 923 - :init-specs ((:fade-a -3.2)) - ) + :init-specs ((:fade-a -3.2))) (defpart 916 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 2.0) - (:x (meters -3.5) (meters 4.5)) - (:y (meters 1) (meters 12)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 8.0 8.0) - (:vel-y (meters -0.0016666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:fade-a -0.017777778) - (:accel-y (meters -0.0001)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 187)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 2.0) + (:x (meters -3.5) (meters 4.5)) + (:y (meters 1) (meters 12)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 8.0 8.0) + (:vel-y (meters -0.0016666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:fade-a -0.017777778) + (:accel-y (meters -0.0001)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 187)))) (defpartgroup group-misty-bone-03 :id 193 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 24) - :parts ((sp-item 914 :period (seconds 2.6) :length (seconds 0.05)) - (sp-item 915 :period (seconds 2.6) :length (seconds 0.05)) - (sp-item 924 :period (seconds 2.6) :length (seconds 0.215)) - (sp-item 925 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 926 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 927 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 928 :period (seconds 2.6) :length (seconds 0.107) :offset 65056) - (sp-item 929 :period (seconds 2.6) :length (seconds 0.107) :offset 64996) - ) - ) + :parts + ((sp-item 914 :period (seconds 2.6) :length (seconds 0.05)) + (sp-item 915 :period (seconds 2.6) :length (seconds 0.05)) + (sp-item 924 :period (seconds 2.6) :length (seconds 0.215)) + (sp-item 925 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 926 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 927 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 928 :period (seconds 2.6) :length (seconds 0.107) :offset 65056) + (sp-item 929 :period (seconds 2.6) :length (seconds 0.107) :offset 64996))) (defpart 929 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters -0.01) (meters 0.04)) - (:vel-z (meters -0.023333333) (meters 0.046666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -80)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 249.99998)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters -0.01) (meters 0.04)) + (:vel-z (meters -0.023333333) (meters 0.046666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -80)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 249.99998)))) (defpart 928 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters 2.5)) - (:y (meters 1) (meters 1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 32.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.000033333334)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 249.99998)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters 2.5)) + (:y (meters 1) (meters 1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 32.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.000033333334)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 249.99998)))) (defpart 927 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters -0.01) (meters 0.04)) - (:vel-z (meters -0.023333333) (meters 0.046666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -80)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 249.99998)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters -0.01) (meters 0.04)) + (:vel-z (meters -0.023333333) (meters 0.046666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -80)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 249.99998)))) (defpart 926 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 0.05) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 64.0 32.0) - (:vel-x (meters -0.026666667) (meters 0.013333334)) - (:vel-y (meters -0.013333334) (meters 0.053333335)) - (:vel-z (meters -0.033333335) (meters 0.06666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:accel-y (meters -0.0016666667)) - (:friction 0.996) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.3)) - (:next-launcher 922) - (:conerot-z (degrees -80)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 249.99998)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 0.05) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 64.0 32.0) + (:vel-x (meters -0.026666667) (meters 0.013333334)) + (:vel-y (meters -0.013333334) (meters 0.053333335)) + (:vel-z (meters -0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:accel-y (meters -0.0016666667)) + (:friction 0.996) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.3)) + (:next-launcher 922) + (:conerot-z (degrees -80)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 249.99998)))) (defpart 925 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:y (meters -1) (meters 1.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 8.0) - (:vel-y (meters -0.0016666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:fade-a -0.026666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -80)) - (:conerot-radius (meters 4) (meters 16)) - (:rotate-y (degrees 249.99998)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:y (meters -1) (meters 1.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 8.0) + (:vel-y (meters -0.0016666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:fade-a -0.026666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -80)) + (:conerot-radius (meters 4) (meters 16)) + (:rotate-y (degrees 249.99998)))) (defpart 924 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 2.0) - (:x (meters -3.5) (meters 4.5)) - (:y (meters 1) (meters 12)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 8.0 8.0) - (:vel-y (meters -0.0016666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:fade-a -0.017777778) - (:accel-y (meters -0.0001)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 249.99998)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 2.0) + (:x (meters -3.5) (meters 4.5)) + (:y (meters 1) (meters 12)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 8.0 8.0) + (:vel-y (meters -0.0016666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:fade-a -0.017777778) + (:accel-y (meters -0.0001)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 249.99998)))) (defpartgroup group-misty-bone-02 :id 194 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 24) - :parts ((sp-item 914 :period (seconds 2.6) :length (seconds 0.05)) - (sp-item 915 :period (seconds 2.6) :length (seconds 0.05)) - (sp-item 930 :period (seconds 2.6) :length (seconds 0.215)) - (sp-item 931 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 932 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 933 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 934 :period (seconds 2.6) :length (seconds 0.107) :offset 65056) - (sp-item 935 :period (seconds 2.6) :length (seconds 0.107) :offset 64996) - ) - ) + :parts + ((sp-item 914 :period (seconds 2.6) :length (seconds 0.05)) + (sp-item 915 :period (seconds 2.6) :length (seconds 0.05)) + (sp-item 930 :period (seconds 2.6) :length (seconds 0.215)) + (sp-item 931 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 932 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 933 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 934 :period (seconds 2.6) :length (seconds 0.107) :offset 65056) + (sp-item 935 :period (seconds 2.6) :length (seconds 0.107) :offset 64996))) (defpart 935 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters -0.01) (meters 0.04)) - (:vel-z (meters -0.023333333) (meters 0.046666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -94)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 114)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters -0.01) (meters 0.04)) + (:vel-z (meters -0.023333333) (meters 0.046666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -94)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 114)))) (defpart 934 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters 2.5)) - (:y (meters 1) (meters 1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 32.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.000033333334)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 114)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters 2.5)) + (:y (meters 1) (meters 1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 32.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.000033333334)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 114)))) (defpart 933 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters -0.01) (meters 0.04)) - (:vel-z (meters -0.023333333) (meters 0.046666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -94)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 114)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters -0.01) (meters 0.04)) + (:vel-z (meters -0.023333333) (meters 0.046666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -94)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 114)))) (defpart 932 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 0.05) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 64.0 32.0) - (:vel-x (meters -0.026666667) (meters 0.013333334)) - (:vel-y (meters -0.013333334) (meters 0.053333335)) - (:vel-z (meters -0.033333335) (meters 0.06666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:accel-y (meters -0.0016666667)) - (:friction 0.996) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.3)) - (:next-launcher 922) - (:conerot-z (degrees -94)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 114)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 0.05) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 64.0 32.0) + (:vel-x (meters -0.026666667) (meters 0.013333334)) + (:vel-y (meters -0.013333334) (meters 0.053333335)) + (:vel-z (meters -0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:accel-y (meters -0.0016666667)) + (:friction 0.996) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.3)) + (:next-launcher 922) + (:conerot-z (degrees -94)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 114)))) (defpart 931 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:y (meters -1) (meters 1.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 8.0) - (:vel-y (meters -0.0016666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:fade-a -0.026666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -90)) - (:conerot-radius (meters 4) (meters 16)) - (:rotate-y (degrees 114)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:y (meters -1) (meters 1.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 8.0) + (:vel-y (meters -0.0016666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:fade-a -0.026666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -90)) + (:conerot-radius (meters 4) (meters 16)) + (:rotate-y (degrees 114)))) (defpart 930 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 2.0) - (:x (meters -3.5) (meters 4.5)) - (:y (meters 1) (meters 12)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 8.0 8.0) - (:vel-y (meters -0.0016666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:fade-a -0.017777778) - (:accel-y (meters -0.0001)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 114)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 2.0) + (:x (meters -3.5) (meters 4.5)) + (:y (meters 1) (meters 12)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 8.0 8.0) + (:vel-y (meters -0.0016666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:fade-a -0.017777778) + (:accel-y (meters -0.0001)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 114)))) (defpartgroup group-misty-bone-07 :id 195 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 24) - :parts ((sp-item 914 :period (seconds 2.6) :length (seconds 0.05)) - (sp-item 915 :period (seconds 2.6) :length (seconds 0.05)) - (sp-item 936 :period (seconds 2.6) :length (seconds 0.215)) - (sp-item 937 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 938 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 939 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) - (sp-item 940 :period (seconds 2.6) :length (seconds 0.107) :offset 65056) - (sp-item 941 :period (seconds 2.6) :length (seconds 0.107) :offset 64966) - ) - ) + :parts + ((sp-item 914 :period (seconds 2.6) :length (seconds 0.05)) + (sp-item 915 :period (seconds 2.6) :length (seconds 0.05)) + (sp-item 936 :period (seconds 2.6) :length (seconds 0.215)) + (sp-item 937 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 938 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 939 :period (seconds 2.6) :length (seconds 0.107) :offset 65131) + (sp-item 940 :period (seconds 2.6) :length (seconds 0.107) :offset 65056) + (sp-item 941 :period (seconds 2.6) :length (seconds 0.107) :offset 64966))) (defpart 941 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters -0.01) (meters 0.04)) - (:vel-z (meters -0.023333333) (meters 0.046666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -94)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 14.000005)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters -0.01) (meters 0.04)) + (:vel-z (meters -0.023333333) (meters 0.046666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -94)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 14.000005)))) (defpart 940 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters 2.5)) - (:y (meters 1) (meters 1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 32.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.000033333334)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 14.000005)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters 2.5)) + (:y (meters 1) (meters 1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 32.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.000033333334)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 14.000005)))) (defpart 939 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 3.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters -0.01) (meters 0.04)) - (:vel-z (meters -0.023333333) (meters 0.046666667)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -94)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 14.000005)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 3.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters -0.01) (meters 0.04)) + (:vel-z (meters -0.023333333) (meters 0.046666667)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -94)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 14.000005)))) (defpart 938 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.5) (meters 0.5)) - (:z (meters -2.5) (meters 5)) - (:scale-x (meters 0.05) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 64.0 32.0) - (:vel-x (meters -0.026666667) (meters 0.013333334)) - (:vel-y (meters -0.013333334) (meters 0.053333335)) - (:vel-z (meters -0.033333335) (meters 0.06666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:accel-y (meters -0.0016666667)) - (:friction 0.996) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.3)) - (:next-launcher 922) - (:conerot-z (degrees -94)) - (:conerot-radius (meters 18)) - (:rotate-y (degrees 14.000005)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.5) (meters 0.5)) + (:z (meters -2.5) (meters 5)) + (:scale-x (meters 0.05) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 64.0 32.0) + (:vel-x (meters -0.026666667) (meters 0.013333334)) + (:vel-y (meters -0.013333334) (meters 0.053333335)) + (:vel-z (meters -0.033333335) (meters 0.06666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:accel-y (meters -0.0016666667)) + (:friction 0.996) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.3)) + (:next-launcher 922) + (:conerot-z (degrees -94)) + (:conerot-radius (meters 18)) + (:rotate-y (degrees 14.000005)))) (defpart 937 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 8.0) - (:y (meters -1) (meters 1.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 16.0 8.0) - (:vel-y (meters -0.0016666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:fade-a -0.026666667) - (:accel-y (meters -0.0001)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:conerot-z (degrees -90)) - (:conerot-radius (meters 4) (meters 16)) - (:rotate-y (degrees 14.000005)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 8.0) + (:y (meters -1) (meters 1.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 16.0 8.0) + (:vel-y (meters -0.0016666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:fade-a -0.026666667) + (:accel-y (meters -0.0001)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:conerot-z (degrees -90)) + (:conerot-radius (meters 4) (meters 16)) + (:rotate-y (degrees 14.000005)))) (defpart 936 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 2.0) - (:x (meters -3.5) (meters 4.5)) - (:y (meters 1) (meters 12)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 2) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 100.0 32.0) - (:b 90.0 32.0) - (:a 8.0 8.0) - (:vel-y (meters -0.0016666667)) - (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) - (:fade-a -0.017777778) - (:accel-y (meters -0.0001)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:rotate-y (degrees 14.000005)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 2.0) + (:x (meters -3.5) (meters 4.5)) + (:y (meters 1) (meters 12)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 2) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 100.0 32.0) + (:b 90.0 32.0) + (:a 8.0 8.0) + (:vel-y (meters -0.0016666667)) + (:rotvel-z (degrees -0.15) 1 (degrees 0.3)) + (:fade-a -0.017777778) + (:accel-y (meters -0.0001)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:rotate-y (degrees 14.000005)))) (defpartgroup group-misty-boat-paddle :id 196 :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 944 :fade-after (meters 100))) - ) + :parts ((sp-item 944 :fade-after (meters 100)))) (defpart 944 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.8) - (:x (meters -11) (meters 22)) - (:y (meters 0)) - (:z (meters 5) (meters 5)) - (:scale-x (meters 5.5) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0) - (:g 64.0) - (:b 96.0 32.0) - (:a 0.0) - (:vel-z (meters -0.016666668) (meters 0.033333335)) - (:rotvel-z (degrees -0.2) 1 (degrees 0.4)) - (:fade-a 0.53333336) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 945) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.8) + (:x (meters -11) (meters 22)) + (:y (meters 0)) + (:z (meters 5) (meters 5)) + (:scale-x (meters 5.5) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0) + (:g 64.0) + (:b 96.0 32.0) + (:a 0.0) + (:vel-z (meters -0.016666668) (meters 0.033333335)) + (:rotvel-z (degrees -0.2) 1 (degrees 0.4)) + (:fade-a 0.53333336) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 945) + (:rotate-y (degrees 140)))) (defpart 945 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 943 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:x (meters -9) (meters 18)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 96.0) - (:b 100.0 28.0) - (:a 0.0) - (:vel-y (meters 0.001) (meters 0.033333335)) - (:fade-a 0.53333336) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.7)) - (:next-launcher 946) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) 3 (degrees 45)) - (:conerot-z (degrees 90)) - (:conerot-radius (meters 9)) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:x (meters -9) (meters 18)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 96.0) + (:b 100.0 28.0) + (:a 0.0) + (:vel-y (meters 0.001) (meters 0.033333335)) + (:fade-a 0.53333336) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.7)) + (:next-launcher 946) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) 3 (degrees 45)) + (:conerot-z (degrees 90)) + (:conerot-radius (meters 9)) + (:rotate-y (degrees 140)))) (defpart 946 - :init-specs ((:fade-a -2.0)) - ) + :init-specs ((:fade-a -2.0))) (defpart 942 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.0) - (:x (meters -11) (meters 22)) - (:y (meters 0.5)) - (:z (meters 6) (meters 4)) - (:scale-x (meters 3.5)) - (:rot-z (degrees 0) 1 (degrees 180)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.001) (meters 0.033333335)) - (:vel-z (meters -0.016666668) (meters 0.033333335)) - (:fade-a 0.53333336) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 947) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.0) + (:x (meters -11) (meters 22)) + (:y (meters 0.5)) + (:z (meters 6) (meters 4)) + (:scale-x (meters 3.5)) + (:rot-z (degrees 0) 1 (degrees 180)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.001) (meters 0.033333335)) + (:vel-z (meters -0.016666668) (meters 0.033333335)) + (:fade-a 0.53333336) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 947) + (:rotate-y (degrees 140)))) (defpart 947 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.2)) (:next-launcher 948)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.2)) (:next-launcher 948))) (defpart 948 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) -(deftype boatpaddle (process-drawable) - () +(deftype boatpaddle (process-drawable) () (:states - boatpaddle-idle - ) - ) - + boatpaddle-idle)) -(defskelgroup *boatpaddle-sg* boatpaddle boatpaddle-lod0-jg boatpaddle-idle-ja - ((boatpaddle-lod0-mg (meters 20)) (boatpaddle-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 18) - ) +(defskelgroup *boatpaddle-sg* + boatpaddle + boatpaddle-lod0-jg + boatpaddle-idle-ja + ((boatpaddle-lod0-mg (meters 20)) (boatpaddle-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 18)) (defstate boatpaddle-idle (boatpaddle) - :code (behavior () - (local-vars (s4-0 int)) - (loop - (quaternion-rotate-local-x! (-> self root quat) (-> self root quat) (* -5461.3335 (seconds-per-frame))) - (let ((gp-0 (-> self part)) - (s5-0 (-> self root trans)) - ) - (let ((f30-0 1274.3112) - (f28-0 (the float s4-0)) - ) - ;; og:preserve-this - (set! s4-0 (/-0-guard (the int (* 65536.0 (ja-frame-num 0))) (+ (-> (ja-group) data 0 length) -1))) - (set! (-> *part-id-table* 943 init-specs 17 initial-valuef) - (+ f30-0 (- f28-0 (* (the float (the int (/ (the float s4-0) 8192.0))) 8192.0))) - ) - ) - (spawn gp-0 s5-0) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (local-vars (s4-0 int)) + (loop + (quaternion-rotate-local-x! (-> self root quat) (-> self root quat) (* -5461.3335 (seconds-per-frame))) + (let ((gp-0 (-> self part)) + (s5-0 (-> self root trans))) + (let ((f30-0 1274.3112) + (f28-0 (the float s4-0))) + ;; og:preserve-this + (set! s4-0 (/-0-guard (the int (* 65536.0 (ja-frame-num 0))) (+ (-> (ja-group) data 0 length) -1))) + (set! (-> *part-id-table* 943 init-specs 17 initial-valuef) + (+ f30-0 (- f28-0 (* (the float (the int (/ (the float s4-0) 8192.0))) 8192.0))))) + (spawn gp-0 s5-0)) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this boatpaddle) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -1052,51 +991,33 @@ (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 196) this)) (go boatpaddle-idle) - (none) - ) + (none)) (deftype windturbine (process-drawable) - ((spawn-particle-enable symbol) - (angle-speed float) - ) + ((spawn-particle-enable symbol) + (angle-speed float)) (:states - windturbine-idle - ) - ) - + windturbine-idle)) -(defskelgroup *windturbine-sg* windturbine windturbine-lod0-jg windturbine-idle-ja - ((windturbine-lod0-mg (meters 20)) (windturbine-lod1-mg (meters 40)) (windturbine-lod2-mg (meters 999999))) - :bounds (static-spherem 0 3 0 7) - ) +(defskelgroup *windturbine-sg* + windturbine + windturbine-lod0-jg + windturbine-idle-ja + ((windturbine-lod0-mg (meters 20)) (windturbine-lod1-mg (meters 40)) (windturbine-lod2-mg (meters 999999))) + :bounds (static-spherem 0 3 0 7)) (defstate windturbine-idle (windturbine) - :code (behavior () - (loop - (let* ((a0-0 (-> self root trans)) - (f2-0 - (-> *wind-work* - wind-force - (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63) - ) - ) - (f0-5 (* 0.992 (+ (-> self angle-speed) (* 3.6408892 f2-0)))) - ) - (set! (-> self angle-speed) (fmin 65536.0 f0-5)) - ) - (quaternion-rotate-local-y! - (-> self root quat) - (-> self root quat) - (* -1.0 (seconds-per-frame) (-> self angle-speed)) - ) - (if (-> self spawn-particle-enable) - (spawn (-> self part) (-> self root trans)) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (let* ((a0-0 (-> self root trans)) + (f2-0 (-> *wind-work* wind-force (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63))) + (f0-5 (* 0.992 (+ (-> self angle-speed) (* 3.6408892 f2-0))))) + (set! (-> self angle-speed) (fmin 65536.0 f0-5))) + (quaternion-rotate-local-y! (-> self root quat) (-> self root quat) (* -1.0 (seconds-per-frame) (-> self angle-speed))) + (if (-> self spawn-particle-enable) (spawn (-> self part) (-> self root trans))) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this windturbine) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -1104,34 +1025,29 @@ (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this spawn-particle-enable) (= (res-lump-value arg0 'particle-select uint128) 1)) - (if (-> this spawn-particle-enable) - (set! (-> this part) (create-launch-control (-> *part-group-id-table* 191) this)) - ) + (if (-> this spawn-particle-enable) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 191) this))) (initialize-skeleton this *windturbine-sg* '()) (go windturbine-idle) - (none) - ) + (none)) (deftype mis-bone-bridge (process-drawable) - ((root collide-shape-moving :override) - (particle-group sparticle-launch-group) - (player-attack-id int32) - (fall-anim-index int32) - (hit-points int8) - ) + ((root collide-shape-moving :override) + (particle-group sparticle-launch-group) + (player-attack-id int32) + (fall-anim-index int32) + (hit-points int8)) (:states - mis-bone-bridge-bump - (mis-bone-bridge-fall symbol) - mis-bone-bridge-hit - mis-bone-bridge-idle - ) - ) - - -(defskelgroup *mis-bone-bridge-sg* mis-bone-bridge mis-bone-bridge-lod0-jg mis-bone-bridge-idle-ja - ((mis-bone-bridge-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 20) - ) + mis-bone-bridge-bump + (mis-bone-bridge-fall symbol) + mis-bone-bridge-hit + mis-bone-bridge-idle)) + +(defskelgroup *mis-bone-bridge-sg* + mis-bone-bridge + mis-bone-bridge-lod0-jg + mis-bone-bridge-idle-ja + ((mis-bone-bridge-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 20)) (defbehavior mis-bone-bridge-event-handler mis-bone-bridge ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -1139,126 +1055,90 @@ (let ((s5-0 (-> arg3 param 2)) (gp-0 (vector-x-quaternion! (new-stack-vector0) (-> self root quat))) (a0-4 (vector-z-quaternion! (new-stack-vector0) (-> self root quat))) - (v1-4 (vector-! (new-stack-vector0) (-> *target* control trans) (-> self root trans))) - ) + (v1-4 (vector-! (new-stack-vector0) (-> *target* control trans) (-> self root trans)))) 0.0 0.0 (when (!= s5-0 (-> self player-attack-id)) (set! (-> self player-attack-id) (the-as int s5-0)) (let ((f0-3 (vector-dot gp-0 v1-4)) - (f1-1 (vector-dot a0-4 v1-4)) - ) + (f1-1 (vector-dot a0-4 v1-4))) (cond ((and (< 0.0 f1-1) (< (fabs (* 0.5 f0-3)) f1-1)) - (if (send-event *target* 'query 'powerup (pickup-type eco-red)) - (go mis-bone-bridge-fall #f) - (go mis-bone-bridge-hit) - ) - ) - (else - (go mis-bone-bridge-bump) - #f - ) - ) - ) - ) - ) - ) - ) - ) + (if (send-event *target* 'query 'powerup (pickup-type eco-red)) (go mis-bone-bridge-fall #f) (go mis-bone-bridge-hit))) + (else (go mis-bone-bridge-bump) #f)))))))) (defstate mis-bone-bridge-idle (mis-bone-bridge) :event mis-bone-bridge-event-handler - :code (behavior () - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (if (and *target* (>= 32768.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn - (text-id misty-bone-bridge-hint) - "sksp0435" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (ja :num-func num-func-identity :frame-num 0.0) + (loop + (if (and *target* (>= 32768.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id misty-bone-bridge-hint) "sksp0435" (the-as entity #f) *entity-pool* (game-task none))) + (suspend))) + :post transform-post) (defstate mis-bone-bridge-bump (mis-bone-bridge) :event mis-bone-bridge-event-handler :trans rider-trans - :code (behavior () - (ja-no-eval :group! mis-bone-bridge-bumped-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go mis-bone-bridge-idle) - ) - :post rider-post - ) + :code + (behavior () + (ja-no-eval :group! mis-bone-bridge-bumped-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go mis-bone-bridge-idle)) + :post rider-post) (defstate mis-bone-bridge-hit (mis-bone-bridge) :event mis-bone-bridge-event-handler :trans rider-trans - :code (behavior () - (+! (-> self hit-points) -1) - (if (zero? (-> self hit-points)) - (go mis-bone-bridge-fall #f) - ) - (ja-no-eval :group! mis-bone-bridge-kicked-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go mis-bone-bridge-idle) - ) - :post rider-post - ) + :code + (behavior () + (+! (-> self hit-points) -1) + (if (zero? (-> self hit-points)) (go mis-bone-bridge-fall #f)) + (ja-no-eval :group! mis-bone-bridge-kicked-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go mis-bone-bridge-idle)) + :post rider-post) (defstate mis-bone-bridge-fall (mis-bone-bridge) :trans rider-trans - :code (behavior ((arg0 symbol)) - (process-entity-status! self (entity-perm-status complete) #t) - (when (not arg0) - (process-spawn - part-tracker - :init part-tracker-init - (-> self particle-group) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (ja-no-eval :group! (-> self draw art-group data (-> self fall-anim-index)) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (ja :group! (-> self draw art-group data (-> self fall-anim-index)) - :num! (identity (the float (+ (-> (ja-group) data 0 length) -1))) - ) - (loop - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior ((arg0 symbol)) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not arg0) + (process-spawn part-tracker + :init + part-tracker-init + (-> self particle-group) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (ja-no-eval :group! (-> self draw art-group data (-> self fall-anim-index)) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (ja :group! + (-> self draw art-group data (-> self fall-anim-index)) + :num! + (identity (the float (+ (-> (ja-group) data 0 length) -1)))) + (loop + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this mis-bone-bridge) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1275,8 +1155,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 9011.2) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -1284,138 +1163,95 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 49152.0 0.0 49152.0) - (append-prim s3-0 s2-1) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *mis-bone-bridge-sg* '()) (let ((v1-40 (res-lump-value arg0 'animation-select uint128))) (cond ((= (the-as uint v1-40) 1) (set! (-> this fall-anim-index) 2) - (set! (-> this particle-group) (-> *part-group-id-table* 192)) - ) + (set! (-> this particle-group) (-> *part-group-id-table* 192))) ((= (the-as uint v1-40) 2) (set! (-> this fall-anim-index) 3) - (set! (-> this particle-group) (-> *part-group-id-table* 194)) - ) + (set! (-> this particle-group) (-> *part-group-id-table* 194))) ((= (the-as uint v1-40) 3) (set! (-> this fall-anim-index) 2) - (set! (-> this particle-group) (-> *part-group-id-table* 193)) - ) + (set! (-> this particle-group) (-> *part-group-id-table* 193))) ((= (the-as uint v1-40) 7) (set! (-> this fall-anim-index) 4) - (set! (-> this particle-group) (-> *part-group-id-table* 195)) - ) - (else - (set! (-> this fall-anim-index) 2) - (set! (-> this particle-group) (-> *part-group-id-table* 192)) - ) - ) - ) + (set! (-> this particle-group) (-> *part-group-id-table* 195))) + (else (set! (-> this fall-anim-index) 2) (set! (-> this particle-group) (-> *part-group-id-table* 192))))) (set! (-> this hit-points) 3) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go mis-bone-bridge-fall #t) - (go mis-bone-bridge-idle) - ) - (none) - ) + (go mis-bone-bridge-fall #t) + (go mis-bone-bridge-idle)) + (none)) (deftype breakaway (process-drawable) - ((root collide-shape-moving :override) - ) + ((root collide-shape-moving :override)) (:methods - (init! (_type_ res-lump int) none) - (go-idle (_type_) none) - ) + (init! (_type_ res-lump int) none) + (go-idle (_type_) none)) (:states - breakaway-about-to-fall - breakaway-fall - breakaway-idle - ) - ) - + breakaway-about-to-fall + breakaway-fall + breakaway-idle)) (defstate breakaway-idle (breakaway) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - (go breakaway-about-to-fall) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) (go breakaway-about-to-fall)))) :code anim-loop - :post transform-post - ) + :post transform-post) (defun actor-wait-for-period ((arg0 time-frame)) - (let ((s5-0 (current-time))) - (while (not (time-elapsed? s5-0 arg0)) - (suspend) - ) - ) - #f - ) + (let ((s5-0 (current-time))) (while (not (time-elapsed? s5-0 arg0)) (suspend))) + #f) (defstate breakaway-about-to-fall (breakaway) - :code (behavior () - (sound-play "falling-bones") - (launch-particles (-> *part-id-table* 281) (-> self root trans)) - (let ((gp-1 #f) - (s5-1 (current-time)) - ) - (loop - (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 15.0 0)) :frame-num (ja-aframe 1.0 0)) - (until (ja-done? 0) - (when (and (not gp-1) (time-elapsed? s5-1 (seconds 0.15))) - (set! gp-1 #t) - (send-to-next-and-prev (-> self link) 'touch) - ) - (if (time-elapsed? s5-1 (seconds 0.25)) - (go breakaway-fall) - ) - (suspend) - (ja :num! (seek! (ja-aframe 15.0 0))) - ) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (sound-play "falling-bones") + (launch-particles (-> *part-id-table* 281) (-> self root trans)) + (let ((gp-1 #f) + (s5-1 (current-time))) + (loop + (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 15.0 0)) :frame-num (ja-aframe 1.0 0)) + (until (ja-done? 0) + (when (and (not gp-1) (time-elapsed? s5-1 (seconds 0.15))) + (set! gp-1 #t) + (send-to-next-and-prev (-> self link) 'touch)) + (if (time-elapsed? s5-1 (seconds 0.25)) (go breakaway-fall)) + (suspend) + (ja :num! (seek! (ja-aframe 15.0 0))))))) + :post rider-post) (defstate breakaway-fall (breakaway) - :code (behavior () - (let ((f30-0 0.0) - (f28-0 0.0) - (f26-0 (* 0.1 (- (-> *standard-dynamics* gravity-length)))) - ) - (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 32.0 0) 0.4) :frame-num (ja-aframe 16.0 0)) - (until (ja-done? 0) - (+! f30-0 (* f28-0 (seconds-per-frame))) - (+! f28-0 (* f26-0 (seconds-per-frame))) - (+! (-> self root trans y) f30-0) - (suspend) - (ja :num! (seek! (ja-aframe 32.0 0) 0.4)) - ) - ) - (cleanup-for-death self) - ) - :post rider-post - ) + :code + (behavior () + (let ((f30-0 0.0) + (f28-0 0.0) + (f26-0 (* 0.1 (- (-> *standard-dynamics* gravity-length))))) + (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 32.0 0) 0.4) :frame-num (ja-aframe 16.0 0)) + (until (ja-done? 0) + (+! f30-0 (* f28-0 (seconds-per-frame))) + (+! f28-0 (* f26-0 (seconds-per-frame))) + (+! (-> self root trans y) f30-0) + (suspend) + (ja :num! (seek! (ja-aframe 32.0 0) 0.4)))) + (cleanup-for-death self)) + :post rider-post) (defmethod init! ((this breakaway) (arg0 res-lump) (arg1 int)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) @@ -1424,188 +1260,156 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg1) (set-vector! (-> s2-0 local-sphere) 8192.0 -4096.0 8192.0 16384.0) - (set-root-prim! s4-0 s2-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (set! (-> this link) (new 'process 'actor-link-info this)) (process-drawable-from-entity! this (the-as entity-actor arg0)) - (none) - ) + (none)) (defmethod go-idle ((this breakaway)) (go breakaway-idle) - (none) - ) - -(deftype breakaway-right (breakaway) - () - ) + (none)) +(deftype breakaway-right (breakaway) ()) -(deftype breakaway-mid (breakaway) - () - ) +(deftype breakaway-mid (breakaway) ()) +(deftype breakaway-left (breakaway) ()) -(deftype breakaway-left (breakaway) - () - ) +(defskelgroup *breakaway-right-sg* + breakaway-right + breakaway-right-lod0-jg + breakaway-right-idle-ja + ((breakaway-right-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 7)) +(defskelgroup *breakaway-mid-sg* + breakaway-mid + breakaway-mid-lod0-jg + breakaway-mid-idle-ja + ((breakaway-mid-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 7)) -(defskelgroup *breakaway-right-sg* breakaway-right breakaway-right-lod0-jg breakaway-right-idle-ja - ((breakaway-right-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 7) - ) - -(defskelgroup *breakaway-mid-sg* breakaway-mid breakaway-mid-lod0-jg breakaway-mid-idle-ja - ((breakaway-mid-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 7) - ) - -(defskelgroup *breakaway-left-sg* breakaway-left breakaway-left-lod0-jg breakaway-left-idle-ja - ((breakaway-left-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 7) - ) +(defskelgroup *breakaway-left-sg* + breakaway-left + breakaway-left-lod0-jg + breakaway-left-idle-ja + ((breakaway-left-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 7)) (defmethod init-from-entity! ((this breakaway-right) (arg0 entity-actor)) (init! this arg0 3) (initialize-skeleton this *breakaway-right-sg* '()) (go-idle this) - (none) - ) + (none)) (defmethod init-from-entity! ((this breakaway-mid) (arg0 entity-actor)) (init! this arg0 3) (initialize-skeleton this *breakaway-mid-sg* '()) (go-idle this) - (none) - ) + (none)) (defmethod init-from-entity! ((this breakaway-left) (arg0 entity-actor)) (init! this arg0 3) (initialize-skeleton this *breakaway-left-sg* '()) (go-idle this) - (none) - ) - -(define *bone-platform-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 2.0 - :max-buoyancy-depth (meters 3) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 5 - :mass 2.0 - :inertial-tensor-x (meters 3) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 3) - :cm-joint-y (meters -3) - :idle-distance (meters 50) - :platform #t - :sound-name "mud-plat" - ) - ) + (none)) + +(define *bone-platform-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 3) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 5 + :mass 2.0 + :inertial-tensor-x (meters 3) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 3) + :cm-joint-y (meters -3) + :idle-distance (meters 50) + :platform #t + :sound-name "mud-plat")) (deftype bone-platform (rigid-body-platform) - ((anchor-point vector :inline) - ) - ) - + ((anchor-point vector :inline))) -(defskelgroup *mis-bone-platform-sg* mis-bone-platform mis-bone-platform-lod0-jg mis-bone-platform-idle-ja - ((mis-bone-platform-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *mis-bone-platform-sg* + mis-bone-platform + mis-bone-platform-lod0-jg + mis-bone-platform-idle-ja + ((mis-bone-platform-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defmethod rigid-body-platform-method-27 ((this bone-platform) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-! gp-0 arg0 (-> this rbody position)) (set! (-> gp-0 y) 0.0) (let* ((f0-1 (vector-length gp-0)) - (f1-1 (* 20.0 (fmax 0.0 (fmin 4096.0 (+ -819.2 f0-1))))) - ) + (f1-1 (* 20.0 (fmax 0.0 (fmin 4096.0 (+ -819.2 f0-1)))))) (when (< 0.0 f1-1) (vector-float*! gp-0 gp-0 (/ f1-1 f0-1)) - (rigid-body-method-15 (-> this rbody) gp-0) - ) - ) - ) + (rigid-body-method-15 (-> this rbody) gp-0)))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-23 ((this bone-platform) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) (defstate rigid-body-platform-idle (bone-platform) :virtual #t - :enter (behavior () - (ja-channel-set! 0) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (ja-channel-set! 0)) + :code + (behavior () + (loop + (suspend))) + :post ja-post) (defstate rigid-body-platform-float (bone-platform) :virtual #t :event rigid-body-platform-event-handler - :trans (behavior () - (-> self entity extra trans y) - (cond - ((or (not *target*) (< (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (let ((f30-1 -4096.0)) - (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) - (if (= (-> self float-height-offset) f30-1) - (go-virtual rigid-body-platform-idle) - ) - ) - ) - (else - (seek! (-> self float-height-offset) 4096.0 (* 2048.0 (seconds-per-frame))) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! mis-bone-platform-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (suspend) - ) - ) - :post rigid-body-platform-post - ) + :trans + (behavior () + (-> self entity extra trans y) + (cond + ((or (not *target*) + (< (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (let ((f30-1 -4096.0)) + (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) + (if (= (-> self float-height-offset) f30-1) (go-virtual rigid-body-platform-idle)))) + (else (seek! (-> self float-height-offset) 4096.0 (* 2048.0 (seconds-per-frame)))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! mis-bone-platform-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (loop + (suspend))) + :post rigid-body-platform-post) (defmethod rigid-body-platform-method-30 ((this bone-platform)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -1614,121 +1418,81 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this bone-platform)) (initialize-skeleton this *mis-bone-platform-sg* '()) (rigid-body-platform-method-29 this *bone-platform-constants*) (set! (-> this float-height-offset) -4096.0) - (if (name= (-> this name) "bone-platform-5") - (set-vector! (-> this root-overlay scale) 0.8 1.0 0.8 1.0) - ) + (if (name= (-> this name) "bone-platform-5") (set-vector! (-> this root-overlay scale) 0.8 1.0 0.8 1.0)) (let ((s5-0 (-> this info control-point-count))) (dotimes (s4-0 s5-0) (let ((s3-0 (-> this control-point-array data s4-0))) (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) (set! (-> s3-0 local-pos x) (* 12288.0 (sin f30-0))) (set! (-> s3-0 local-pos y) -12288.0) - (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0))) - ) - (set! (-> s3-0 local-pos w) 1.0) - ) - ) - ) + (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0)))) + (set! (-> s3-0 local-pos w) 1.0)))) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) 0 - (none) - ) - -(deftype mistycam (process-hidden) - () - ) + (none)) +(deftype mistycam (process-hidden) ()) -(defskelgroup *mistycam-sg* mistycam mistycam-lod0-jg mistycam-anim-ja - ((mistycam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 20) - ) +(defskelgroup *mistycam-sg* + mistycam + mistycam-lod0-jg + mistycam-anim-ja + ((mistycam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 20)) (defun mistycam-spawn () (with-pp (let ((gp-0 (entity-actor-lookup (-> pp entity) 'alt-actor 0))) (when gp-0 - (let* ((gp-1 - (ppointer->handle (process-spawn - pov-camera - (-> gp-0 extra trans) - *mistycam-sg* - (new 'static 'spool-anim :name "mistycam-cannon" :index 5 :parts 1 :command-list '()) - 0 - #f - '() - :to pp - ) - ) - ) - (s5-2 (ppointer->handle - (process-spawn fuel-cell :init fuel-cell-init-as-clone gp-1 (-> pp entity extra perm task) :to pp) - ) - ) - ) + (let* ((gp-1 (ppointer->handle (process-spawn pov-camera + (-> gp-0 extra trans) + *mistycam-sg* + (new 'static 'spool-anim :name "mistycam-cannon" :index 5 :parts 1 :command-list '()) + 0 + #f + '() + :to + pp))) + (s5-2 (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone gp-1 (-> pp entity extra perm task) :to pp)))) (let ((v1-13 (handle->process gp-1))) - (if v1-13 - (set! (-> (the-as pov-camera v1-13) notify-handle) (the-as handle s5-2)) - ) - ) + (if v1-13 (set! (-> (the-as pov-camera v1-13) notify-handle) (the-as handle s5-2)))) (while (handle->process gp-1) - (suspend) - ) - (send-event (handle->process s5-2) 'stop-cloning) - ) - ) - ) + (suspend)) + (send-event (handle->process s5-2) 'stop-cloning)))) 0 - (none) - ) - ) - -(deftype misty-battlecontroller (battlecontroller) - () - ) + (none))) +(deftype misty-battlecontroller (battlecontroller) ()) (defstate battlecontroller-play-intro-camera (misty-battlecontroller) :virtual #t - :code (behavior () - (let ((gp-1 (ppointer->handle - (process-spawn pov-camera (-> self root trans) *mistycam-sg* "lurkerattack" 0 #f '() :to self) - ) - ) - ) - (while (handle->process (the-as handle gp-1)) - (suspend) - ) - ) - (go-virtual battlecontroller-active) - ) - ) + :code + (behavior () + (let ((gp-1 (ppointer->handle (process-spawn pov-camera (-> self root trans) *mistycam-sg* "lurkerattack" 0 #f '() :to self)))) + (while (handle->process (the-as handle gp-1)) + (suspend))) + (go-virtual battlecontroller-active))) (defmethod battlecontroller-method-27 ((this misty-battlecontroller)) (call-parent-method this) (set! (-> this misty-ambush-collision-hack) #t) 0 - (none) - ) + (none)) (defun-debug misty-cam-restore () (let ((a0-0 (new-stack-vector0)) - (a1-0 (new-stack-matrix0)) - ) + (a1-0 (new-stack-matrix0))) (set! (-> a0-0 x) -711702.3) (set! (-> a0-0 y) 268833.34) (set! (-> a0-0 z) 4193524.2) @@ -1749,8 +1513,7 @@ (set! (-> a1-0 vector 3 y) 0.0) (set! (-> a1-0 vector 3 z) 0.0) (set! (-> a1-0 vector 3 w) 1.0) - (debug-set-camera-pos-rot! a0-0 a1-0) - ) + (debug-set-camera-pos-rot! a0-0 a1-0)) (send-event *camera* 'set-fov 11650.845) (clear *camera-old-level*) (format *camera-old-level* "misty") @@ -1760,65 +1523,43 @@ (clear *camera-old-stat-string-tfrag*) (clear *camera-old-stat-string-tfrag-near*) (clear *camera-old-stat-string-total*) - (let ((v0-7 #t)) - (set! *display-camera-old-stats* v0-7) - v0-7 - ) - ) + (let ((v0-7 #t)) (set! *display-camera-old-stats* v0-7) v0-7)) (deftype boat-fuelcell (process-drawable) - ((play-cutscene? symbol) - ) + ((play-cutscene? symbol)) (:states - boat-fuelcell-die - boat-fuelcell-idle - boat-fuelcell-spawn - ) - ) - + boat-fuelcell-die + boat-fuelcell-idle + boat-fuelcell-spawn)) (defstate boat-fuelcell-idle (boat-fuelcell) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('task-complete) - (set! (-> self play-cutscene?) #t) - (process-entity-status! self (entity-perm-status complete) #t) - (go boat-fuelcell-spawn) - ) - ) - ) - :code anim-loop - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('task-complete) + (set! (-> self play-cutscene?) #t) + (process-entity-status! self (entity-perm-status complete) #t) + (go boat-fuelcell-spawn)))) + :code anim-loop) (defstate boat-fuelcell-spawn (boat-fuelcell) :event process-drawable-fuel-cell-handler - :code (behavior () - (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #f) - (when (and *target* (-> self play-cutscene?)) - (ambient-hint-spawn "gamcam02" (the-as vector #f) *entity-pool* 'camera) - (let ((gp-1 - (ppointer->handle - (process-spawn pov-camera (-> self root trans) *mistycam-sg* "mistycam-balloon-fuel-cell" 0 #f '() :to self) - ) - ) - ) - (while (handle->process (the-as handle gp-1)) - (suspend) - ) - ) - ) - (while (-> self child) - (suspend) - ) - (go boat-fuelcell-die) - ) - ) + :code + (behavior () + (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #f) + (when (and *target* (-> self play-cutscene?)) + (ambient-hint-spawn "gamcam02" (the-as vector #f) *entity-pool* 'camera) + (let ((gp-1 (ppointer->handle (process-spawn pov-camera (-> self root trans) *mistycam-sg* "mistycam-balloon-fuel-cell" 0 #f '() :to self)))) + (while (handle->process (the-as handle gp-1)) + (suspend)))) + (while (-> self child) + (suspend)) + (go boat-fuelcell-die))) (defstate boat-fuelcell-die (boat-fuelcell) - :code (behavior () - (cleanup-for-death self) - ) - ) + :code + (behavior () + (cleanup-for-death self))) (defmethod init-from-entity! ((this boat-fuelcell) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -1826,8 +1567,6 @@ (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this play-cutscene?) #f) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go boat-fuelcell-spawn) - (go boat-fuelcell-idle) - ) - (none) - ) + (go boat-fuelcell-spawn) + (go boat-fuelcell-idle)) + (none)) diff --git a/goal_src/jak1/levels/misty/misty-part.gc b/goal_src/jak1/levels/misty/misty-part.gc index 9528727073..6f8f7fd3c8 100644 --- a/goal_src/jak1/levels/misty/misty-part.gc +++ b/goal_src/jak1/levels/misty/misty-part.gc @@ -1,998 +1,934 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/sound/gsound-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: misty-part.gc -;; name in dgo: misty-part -;; dgos: L1, MIS - ;; DECOMP BEGINS -(deftype misty-part (part-spawner) - () - ) - +(deftype misty-part (part-spawner) ()) (defpart 972 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:y (meters 1)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters 0.00016666666)) - (:friction 0.996) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:y (meters 1)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters 0.00016666666)) + (:friction 0.996) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpart 973 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 3.0) - (:y (meters 1)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters 0.0001)) - (:friction 0.993) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 3.0) + (:y (meters 1)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0.0001)) + (:friction 0.993) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpartgroup group-misty-ship-steam :id 205 :bounds (static-bspherem 0 0.5 0 4.5) - :parts ((sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) - (sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) - (sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) - (sp-item 973 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) - ) - ) + :parts + ((sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) + (sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) + (sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) + (sp-item 973 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)))) (defpartgroup group-part-misty-torch :id 206 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 974 :fade-after (meters 180) :falloff-to (meters 200)) - (sp-item 975 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 976 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) - (sp-item 977 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 978 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 979 :fade-after (meters 50) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 974 :fade-after (meters 180) :falloff-to (meters 200)) + (sp-item 975 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 976 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) + (sp-item 977 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 978 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 979 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 979 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 980) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 980) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 980 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 974 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5 1 1.0) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 981) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5 1 1.0) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 981))) (defpart 981 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 976 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 981) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 981))) (defpart 977 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 981) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 981))) (defpart 978 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 981) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 981))) (defpart 975 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-misty-fog :id 207 :bounds (static-bspherem 64 7 0 96) - :parts ((sp-item 982 :flags (is-3d))) - ) + :parts ((sp-item 982 :flags (is-3d)))) (defpart 982 - :init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x2)) - (:num 0.06125) - (:x (meters 0) (meters 128)) - (:y (meters 5.5) (meters 1.5)) - (:z (meters -20) (meters 80)) - (:scale-x (meters 36)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 127.0) - (:g 127.0) - (:b 95.0 32.0) - (:a 0.0) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-y (degrees -0.033333335) (degrees 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 10)) - (:flags (bit2 bit14 left-multiply-quat)) - (:next-time (seconds 1) (seconds 0.997)) - (:next-launcher 983) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 16) (meters 32)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x7 :page #x2)) + (:num 0.06125) + (:x (meters 0) (meters 128)) + (:y (meters 5.5) (meters 1.5)) + (:z (meters -20) (meters 80)) + (:scale-x (meters 36)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 127.0) + (:g 127.0) + (:b 95.0 32.0) + (:a 0.0) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-y (degrees -0.033333335) (degrees 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 10)) + (:flags (bit2 bit14 left-multiply-quat)) + (:next-time (seconds 1) (seconds 0.997)) + (:next-launcher 983) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 16) (meters 32)) + (:rotate-y (degrees 25.000002)))) (defpart 983 - :init-specs ((:fade-a 0.0) (:next-time (seconds 4) (seconds 0.997)) (:next-launcher 984)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 4) (seconds 0.997)) (:next-launcher 984))) (defpart 984 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-misty-lurkermachine-vent-316 :id 208 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 985 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 985 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 985 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 70)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 70)))) (defpartgroup group-misty-lurkermachine-vent-313 :id 209 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 986 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 986 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 986 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 0)))) (defpartgroup group-misty-lurkermachine-vent-308 :id 210 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 987 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 987 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 987 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 80)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 80)))) (defpartgroup group-misty-lurkermachine-vent-307 :id 211 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 988 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 988 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 988 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 120)))) (defpartgroup group-misty-lurkermachine-vent-305 :id 212 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 989 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 989 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 989 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees -20)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees -20)))) (defpartgroup group-misty-lurkermachine-vent-309 :id 213 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 990 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 990 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 990 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 150)))) (defpartgroup group-misty-lurkermachine-vent-2 :id 214 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 991 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 991 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 991 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 50.000004)))) (defpartgroup group-misty-lurkermachine-vent-328 :id 215 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 992 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 992 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 992 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 150)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 150)))) (defpartgroup group-misty-lurkermachine-vent-325 :id 216 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 993 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 993 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 993 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -0.8) (meters 1.6)) - (:y (meters -0.3) (meters 0.6)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.005) (meters 0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees -50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -0.8) (meters 1.6)) + (:y (meters -0.3) (meters 0.6)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.005) (meters 0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees -50.000004)))) (defpartgroup group-misty-lurkermachine-vent-320 :id 217 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 994 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 994 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 994 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -0.8) (meters 1.6)) - (:y (meters -0.3) (meters 0.6)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.005) (meters 0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -0.8) (meters 1.6)) + (:y (meters -0.3) (meters 0.6)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.005) (meters 0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 50.000004)))) (defpartgroup group-misty-lurkermachine-vent-324 :id 218 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 995 :fade-after (meters 80) :falloff-to (meters 80))) - ) + :parts ((sp-item 995 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 995 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.45 0.8) - (:x (meters -0.8) (meters 1.6)) - (:y (meters -0.3) (meters 0.6)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.005) (meters 0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 220)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -0.8) (meters 1.6)) + (:y (meters -0.3) (meters 0.6)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.005) (meters 0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 220)))) (defpartgroup group-misty-fort-steam :id 219 :bounds (static-bspherem 0 0.5 0 4.5) - :parts ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) - (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) - ) - ) + :parts + ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) + (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)))) (defpartgroup group-misty-fort-steam2 :id 220 :bounds (static-bspherem 0 0.5 0 4.5) - :parts ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 4.1) :length (seconds 1)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.5) :length (seconds 1.2)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 20.34) :length (seconds 0.6)) - (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.7) :length (seconds 0.15)) - ) - ) + :parts + ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 4.1) :length (seconds 1)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.5) :length (seconds 1.2)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 20.34) :length (seconds 0.6)) + (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.7) :length (seconds 0.15)))) (defpartgroup group-misty-fort-steam3 :id 221 :bounds (static-bspherem 0 0.5 0 4.5) - :parts ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 6) :length (seconds 1)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.53) :length (seconds 1.2)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 17.34) :length (seconds 0.6)) - (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.8) :length (seconds 0.15)) - ) - ) + :parts + ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 6) :length (seconds 1)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.53) :length (seconds 1.2)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 17.34) :length (seconds 0.6)) + (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.8) :length (seconds 0.15)))) (defpartgroup group-misty-fort-steam4 :id 222 :bounds (static-bspherem 0 0.5 0 4.5) - :parts ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5.2) :length (seconds 1)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.67) :length (seconds 1.2)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 16.16) :length (seconds 0.6)) - (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.9) :length (seconds 0.15)) - ) - ) + :parts + ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5.2) :length (seconds 1)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.67) :length (seconds 1.2)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 16.16) :length (seconds 0.6)) + (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.9) :length (seconds 0.15)))) (defpart 996 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.6) - (:y (meters 0)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters 0.00016666666)) - (:friction 0.996) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:y (meters 0)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters 0.00016666666)) + (:friction 0.996) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpart 997 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 2.0) - (:y (meters 0)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters 0.0001)) - (:friction 0.993) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 2.0) + (:y (meters 0)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0.0001)) + (:friction 0.993) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpartgroup group-misty-lurkermachine-spout-314 :id 223 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 998 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) - (sp-item 998 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 998 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 999 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 998 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 998 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 998 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 999 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 999 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters -0.02)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters -0.02)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpart 998 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-y (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.00033333333) (meters 0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-y (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.00033333333) (meters 0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpartgroup group-misty-lurkermachine-spout-310 :id 224 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1000 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) - (sp-item 1000 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 1000 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 1001 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1000 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 1000 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 1000 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 1001 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1001 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-x (meters -0.02) (meters 0.0033333334)) - (:vel-y (meters -0.02)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-x (meters -0.02) (meters 0.0033333334)) + (:vel-y (meters -0.02)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpart 1000 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-x (meters -0.053333335) (meters 0.0033333334)) - (:vel-y (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.001) (meters 0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-x (meters -0.053333335) (meters 0.0033333334)) + (:vel-y (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.001) (meters 0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpartgroup group-misty-lurkermachine-spout-311 :id 225 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1002 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) - (sp-item 1002 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 1002 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 1003 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1002 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 1002 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 1002 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 1003 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1003 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0.01) (meters 0.0033333334)) - (:vel-y (meters -0.02)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0.01) (meters 0.0033333334)) + (:vel-y (meters -0.02)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpart 1002 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-x (meters 0.026666667) (meters 0.0033333334)) - (:vel-y (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.001) (meters 0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-x (meters 0.026666667) (meters 0.0033333334)) + (:vel-y (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.001) (meters 0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpartgroup group-misty-lurkermachine-spout-312 :id 226 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1004 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) - (sp-item 1004 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 1004 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 1005 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1004 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 1004 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 1004 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 1005 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1005 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters -0.02)) - (:vel-z (meters -0.013333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters -0.02)) + (:vel-z (meters -0.013333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpart 1004 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-y (meters -0.053333335)) - (:vel-z (meters -0.04) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.001) (meters 0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-y (meters -0.053333335)) + (:vel-z (meters -0.04) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.001) (meters 0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) diff --git a/goal_src/jak1/levels/misty/misty-teetertotter.gc b/goal_src/jak1/levels/misty/misty-teetertotter.gc index dd11868cd7..c1c3797f5b 100644 --- a/goal_src/jak1/levels/misty/misty-teetertotter.gc +++ b/goal_src/jak1/levels/misty/misty-teetertotter.gc @@ -1,147 +1,104 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/game/task/hint-control.gc") - -;; name: misty-teetertotter.gc -;; name in dgo: misty-teetertotter -;; dgos: L1, MIS - (declare-type teetertotter process-drawable) ;; DECOMP BEGINS (deftype teetertotter (process-drawable) - ((launched-player basic) - (in-launch-window basic) - (rock-is-dangerous basic) - ) + ((launched-player basic) + (in-launch-window basic) + (rock-is-dangerous basic)) (:states - teetertotter-bend - teetertotter-idle - teetertotter-launch - ) - ) - + teetertotter-bend + teetertotter-idle + teetertotter-launch)) -(defskelgroup *teetertotter-sg* teetertotter teetertotter-lod0-jg teetertotter-idle-ja - ((teetertotter-lod0-mg (meters 20)) (teetertotter-lod1-mg (meters 40)) (teetertotter-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *teetertotter-sg* + teetertotter + teetertotter-lod0-jg + teetertotter-idle-ja + ((teetertotter-lod0-mg (meters 20)) (teetertotter-lod1-mg (meters 40)) (teetertotter-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defun target-on-end-of-teetertotter? ((arg0 teetertotter)) (let ((gp-1 (vector-! (new-stack-vector0) (-> *target* control trans) (-> arg0 root trans)))) - (if (< (vector-dot (vector-x-quaternion! (new-stack-vector0) (-> arg0 root quat)) gp-1) -8192.0) - #t - ) - ) - ) + (if (< (vector-dot (vector-x-quaternion! (new-stack-vector0) (-> arg0 root quat)) gp-1) -8192.0) #t))) (defstate teetertotter-idle (teetertotter) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (case (-> block param 1) - (('flop) - (when (target-on-end-of-teetertotter? self) - (set! (-> self in-launch-window) #f) - (increment-success-for-hint (text-id misty-teetertotter)) - (go teetertotter-launch) - ) - ) - ) - ) - (('bonk) - (when (target-on-end-of-teetertotter? self) - (level-hint-spawn (text-id misty-teetertotter) "sksp0070" (the-as entity #f) *entity-pool* (game-task none)) - (go teetertotter-bend) - ) - ) - ) - ) - :code (behavior () - (ja :group! teetertotter-idle-ja :num! min) - (loop - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (case (-> block param 1) + (('flop) + (when (target-on-end-of-teetertotter? self) + (set! (-> self in-launch-window) #f) + (increment-success-for-hint (text-id misty-teetertotter)) + (go teetertotter-launch))))) + (('bonk) + (when (target-on-end-of-teetertotter? self) + (level-hint-spawn (text-id misty-teetertotter) "sksp0070" (the-as entity #f) *entity-pool* (game-task none)) + (go teetertotter-bend))))) + :code + (behavior () + (ja :group! teetertotter-idle-ja :num! min) + (loop + (suspend))) + :post transform-post) (defstate teetertotter-launch (teetertotter) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (= message 'touch) - (if (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (-> self rock-is-dangerous) - ) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'deadly)))) - ) - (when (and ((method-of-type touching-shapes-entry prims-touching?) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (= message 'touch) + (if (and ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> block param 0)) (the-as collide-shape-moving (-> self root)) - (the-as uint 2) - ) - (target-on-end-of-teetertotter? self) - (not (-> self launched-player)) - (-> self in-launch-window) - ) - (when (send-event - proc - 'shove - #f - (static-attack-info ((shove-back (meters 0)) (shove-up (meters 13)) (angle 'jump) (control 1.0))) - ) - (let ((v0-0 #t)) - (set! (-> self launched-player) v0-0) - v0-0 - ) - ) - ) - ) - ) - :code (behavior () - (set! (-> self launched-player) #f) - (ja-no-eval :group! teetertotter-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((f0-4 (ja-aframe-num 0))) - (set! (-> self in-launch-window) (and (>= f0-4 76.0) (>= 82.0 f0-4))) - (let ((v1-16 (>= f0-4 12.0))) - (set! (-> self rock-is-dangerous) (and v1-16 (>= 76.0 f0-4))) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - (go teetertotter-idle) - ) - :post rider-post - ) + (the-as uint 1)) + (-> self rock-is-dangerous)) + (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'deadly))))) + (when (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 2)) + (target-on-end-of-teetertotter? self) + (not (-> self launched-player)) + (-> self in-launch-window)) + (when (send-event proc + 'shove + #f + (static-attack-info ((shove-back (meters 0)) (shove-up (meters 13)) (angle 'jump) (control 1.0)))) + (let ((v0-0 #t)) (set! (-> self launched-player) v0-0) v0-0))))) + :code + (behavior () + (set! (-> self launched-player) #f) + (ja-no-eval :group! teetertotter-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f0-4 (ja-aframe-num 0))) + (set! (-> self in-launch-window) (and (>= f0-4 76.0) (>= 82.0 f0-4))) + (let ((v1-16 (>= f0-4 12.0))) (set! (-> self rock-is-dangerous) (and v1-16 (>= 76.0 f0-4))))) + (suspend) + (ja :num! (seek!))) + (go teetertotter-idle)) + :post rider-post) (defstate teetertotter-bend (teetertotter) - :code (behavior () - (ja-no-eval :group! teetertotter-landing-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go teetertotter-idle) - ) - :post rider-post - ) + :code + (behavior () + (ja-no-eval :group! teetertotter-landing-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go teetertotter-idle)) + :post rider-post) (defmethod init-from-entity! ((this teetertotter) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -156,8 +113,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -4096.0 2048.0 0.0 5120.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -165,8 +121,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -174,8 +129,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -183,8 +137,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 2)))) (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -192,18 +145,14 @@ (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 3) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-4) - ) - ) + (append-prim s3-0 s2-4))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *teetertotter-sg* '()) (set! (-> this launched-player) #f) (set! (-> this in-launch-window) #f) (set! (-> this rock-is-dangerous) #f) (go teetertotter-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/misty-warehouse.gc b/goal_src/jak1/levels/misty/misty-warehouse.gc index e9bc0076ba..cffe44e544 100644 --- a/goal_src/jak1/levels/misty/misty-warehouse.gc +++ b/goal_src/jak1/levels/misty/misty-warehouse.gc @@ -1,136 +1,97 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/game/task/task-control.gc") (require "engine/common-obs/baseplat.gc") - -;; name: misty-warehouse.gc -;; name in dgo: misty-warehouse -;; dgos: L1, MIS - (declare-type silostep process-drawable) ;; DECOMP BEGINS (deftype silostep (process-drawable) - ((anim-limit float) - (cam-tracker handle) - ) + ((anim-limit float) + (cam-tracker handle)) (:states - silostep-camera - silostep-idle - (silostep-rise symbol) - ) - ) + silostep-camera + silostep-idle + (silostep-rise symbol))) - -(defskelgroup *silostep-sg* silostep silostep-lod0-jg silostep-idle-ja - ((silostep-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 8) - ) +(defskelgroup *silostep-sg* + silostep + silostep-lod0-jg + silostep-idle-ja + ((silostep-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 8)) (defstate silostep-idle (silostep) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go silostep-camera) - ) - (('trigger-rise) - (go silostep-rise #f) - ) - ) - ) - :code (behavior () - (ja :group! silostep-idle-ja :num! min) - (transform-post) - (loop - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go silostep-camera)) + (('trigger-rise) (go silostep-rise #f)))) + :code + (behavior () + (ja :group! silostep-idle-ja :num! min) + (transform-post) + (loop + (suspend))) + :post ja-post) (defbehavior misty-camera-view silostep () (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior camera-tracker - () - (while (not (process-grab? *target*)) - (suspend) - ) - (camera-change-to "camera-160" 150 #f) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 3)) - (suspend) - ) - ) - (while (not (process-release? (handle->process (-> self grab-target)))) - (suspend) - ) - (camera-change-to (the-as string 'base) 150 #f) - (none) - ) - :to self - ) - ) - ) - (none) - ) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior camera-tracker () + (while (not (process-grab? *target*)) + (suspend)) + (camera-change-to "camera-160" 150 #f) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 3)) (suspend))) + (while (not (process-release? (handle->process (-> self grab-target)))) + (suspend)) + (camera-change-to (the-as string 'base) 150 #f) + (none)) + :to + self))) + (none)) (defstate silostep-camera (silostep) - :code (behavior () - (misty-camera-view) - (let* ((gp-0 (get-task-control (game-task misty-warehouse))) - (v1-1 (get-reminder gp-0 0)) - ) - (save-reminder gp-0 (logior v1-1 2) 0) - ) - (set-time! (-> self state-time)) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 1)) - (suspend) - ) - ) - (sound-play "arena-steps") - (send-to-all-after (-> self link) 'trigger-rise) - (go silostep-rise #f) - ) - :post ja-post - ) + :code + (behavior () + (misty-camera-view) + (let* ((gp-0 (get-task-control (game-task misty-warehouse))) + (v1-1 (get-reminder gp-0 0))) + (save-reminder gp-0 (logior v1-1 2) 0)) + (set-time! (-> self state-time)) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 1)) (suspend))) + (sound-play "arena-steps") + (send-to-all-after (-> self link) 'trigger-rise) + (go silostep-rise #f)) + :post ja-post) (defstate silostep-rise (silostep) - :code (behavior ((arg0 symbol)) - (process-entity-status! self (entity-perm-status complete) #t) - (when (not arg0) - (ja-no-eval :group! silostep-idle-ja :num! (seek! (-> self anim-limit)) :frame-num 0.0) - (until (ja-done? 0) - (rider-trans) - (rider-post) - (suspend) - (ja :num! (seek! (-> self anim-limit))) - ) - ) - (ja :group! silostep-idle-ja :num! (identity (-> self anim-limit))) - (rider-post) - (loop - (ja-post) - (suspend) - ) - ) - :post #f - ) + :code + (behavior ((arg0 symbol)) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not arg0) + (ja-no-eval :group! silostep-idle-ja :num! (seek! (-> self anim-limit)) :frame-num 0.0) + (until (ja-done? 0) + (rider-trans) + (rider-post) + (suspend) + (ja :num! (seek! (-> self anim-limit))))) + (ja :group! silostep-idle-ja :num! (identity (-> self anim-limit))) + (rider-post) + (loop + (ja-post) + (suspend))) + :post #f) (defmethod init-from-entity! ((this silostep) (arg0 entity-actor)) (logior! (-> this mask) (process-mask movie-subject)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -139,36 +100,29 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 18432.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *silostep-sg* '()) (set! (-> this anim-limit) (* (res-lump-float arg0 'distance :default 1.0) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) + (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)))) (set! (-> this link) (new 'process 'actor-link-info this)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go silostep-rise #t) - (go silostep-idle) - ) - (none) - ) - -(defskelgroup *rounddoor-sg* rounddoor rounddoor-lod0-jg rounddoor-idle-ja - ((rounddoor-lod0-mg (meters 20)) (rounddoor-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) + (go silostep-rise #t) + (go silostep-idle)) + (none)) -(deftype rounddoor (eco-door) - () - ) +(defskelgroup *rounddoor-sg* + rounddoor + rounddoor-lod0-jg + rounddoor-idle-ja + ((rounddoor-lod0-mg (meters 20)) (rounddoor-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) +(deftype rounddoor (eco-door) ()) (defmethod eco-door-method-24 ((this rounddoor)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -179,15 +133,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) -12288.0 0.0 0.0 40960.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod eco-door-method-25 ((this rounddoor)) (initialize-skeleton this *rounddoor-sg* '()) @@ -202,5 +153,4 @@ (set! (-> this out-dir w) (- 8192.0 (vector-dot (-> this out-dir) (-> this root trans)))) (update-transforms! (-> this root)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/mistycannon.gc b/goal_src/jak1/levels/misty/mistycannon.gc index 4305d1f1a0..3124999c13 100644 --- a/goal_src/jak1/levels/misty/mistycannon.gc +++ b/goal_src/jak1/levels/misty/mistycannon.gc @@ -1,931 +1,752 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO" "MIS.DGO") - (require "engine/gfx/shadow/shadow.gc") (require "engine/common-obs/water.gc") (require "engine/entity/ambient.gc") -;; name: mistycannon.gc -;; name in dgo: mistycannon -;; dgos: BEA, L1, MIS - ;; DECOMP BEGINS (deftype angle-tracker (structure) - ((value float) - (min float) - (range float) - (speed float) - ) - ) - + ((value float) + (min float) + (range float) + (speed float))) (defun angle-tracker-apply-move! ((arg0 angle-tracker) (arg1 float)) (let* ((f0-2 (* arg1 (-> arg0 speed) (seconds-per-frame))) - (f0-3 (+ (-> arg0 value) f0-2)) - ) + (f0-3 (+ (-> arg0 value) f0-2))) (when (!= (-> arg0 range) 0.0) - (if (< f0-3 0.0) - (set! f0-3 0.0) - ) - (if (< (-> arg0 range) f0-3) - (set! f0-3 (-> arg0 range)) - ) - ) + (if (< f0-3 0.0) (set! f0-3 0.0)) + (if (< (-> arg0 range) f0-3) (set! f0-3 (-> arg0 range)))) (let ((f1-7 (- (-> arg0 value) f0-3))) - (if (= (-> arg0 range) 0.0) - (set! f0-3 (the float (sar (shl (the int f0-3) 48) 48))) - ) + (if (= (-> arg0 range) 0.0) (set! f0-3 (the float (sar (shl (the int f0-3) 48) 48)))) (set! (-> arg0 value) f0-3) - f1-7 - ) - ) - ) + f1-7))) (defun angle-tracker-init-range! ((arg0 angle-tracker) (arg1 float) (arg2 float) (arg3 float)) (set! (-> arg0 min) arg1) (set! (-> arg0 range) (the float (sar (shl (the int (- arg2 arg1)) 48) 48))) - (if (< (-> arg0 range) 0.0) - (+! (-> arg0 range) 65536.0) - ) + (if (< (-> arg0 range) 0.0) (+! (-> arg0 range) 65536.0)) (set! (-> arg0 value) (* 0.5 (-> arg0 range))) (set! (-> arg0 speed) arg3) 0 - (none) - ) + (none)) (defun angle-tracker-get-value ((arg0 angle-tracker)) - (the float (sar (shl (the int (+ (-> arg0 min) (-> arg0 value))) 48) 48)) - ) + (the float (sar (shl (the int (+ (-> arg0 min) (-> arg0 value))) 48) 48))) (defun angle-tracker-set-value ((arg0 angle-tracker) (arg1 float)) (let ((v1-0 (- arg1 (-> arg0 min)))) (when (!= (-> arg0 range) 0.0) - (if (< v1-0 0.0) - (set! v1-0 0.0) - ) - (if (< (-> arg0 range) v1-0) - (set! v1-0 (-> arg0 range)) - ) - ) + (if (< v1-0 0.0) (set! v1-0 0.0)) + (if (< (-> arg0 range) v1-0) (set! v1-0 (-> arg0 range)))) (set! (-> arg0 value) v1-0) - (+ (-> arg0 min) v1-0) - ) - ) + (+ (-> arg0 min) v1-0))) (defun angle-tracker-seek! ((arg0 angle-tracker) (arg1 float)) (let* ((v1-0 arg0) (f1-1 (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48))) (f0-6 (* (-> arg0 speed) (seconds-per-frame))) - (v1-9 (the float (sar (shl (the int (- arg1 f1-1)) 48) 48))) - ) + (v1-9 (the float (sar (shl (the int (- arg1 f1-1)) 48) 48)))) (when (< (fabs v1-9) f0-6) (let ((f0-8 (+ (-> arg0 value) v1-9))) (cond - ((= (-> arg0 range) 0.0) - (set! (-> arg0 value) (the float (sar (shl (the int f0-8) 48) 48))) - (return #t) - ) + ((= (-> arg0 range) 0.0) (set! (-> arg0 value) (the float (sar (shl (the int f0-8) 48) 48))) (return #t)) (else - (when (< f0-8 0.0) - (set! (-> arg0 value) 0.0) - (return #f) - ) - (when (< (-> arg0 range) f0-8) - (set! (-> arg0 value) (-> arg0 range)) - (return #f) - ) - (set! (-> arg0 value) f0-8) - (return #t) - ) - ) - ) - (set! v1-9 (the-as float 0)) - ) + (when (< f0-8 0.0) + (set! (-> arg0 value) 0.0) + (return #f)) + (when (< (-> arg0 range) f0-8) + (set! (-> arg0 value) (-> arg0 range)) + (return #f)) + (set! (-> arg0 value) f0-8) + (return #t)))) + (set! v1-9 (the-as float 0))) (cond ((< v1-9 0.0) (let ((f0-14 (- (-> arg0 value) f0-6))) - (set! f0-14 (cond - ((= (-> arg0 range) 0.0) - (the float (sar (shl (the int f0-14) 48) 48)) - ) - (else - (if (< f0-14 0.0) - (set! f0-14 0.0) - ) - f0-14 - ) - ) - ) - (set! (-> arg0 value) (the float (sar (shl (the int f0-14) 48) 48))) - ) - ) + (set! f0-14 + (cond + ((= (-> arg0 range) 0.0) (the float (sar (shl (the int f0-14) 48) 48))) + (else (if (< f0-14 0.0) (set! f0-14 0.0)) f0-14))) + (set! (-> arg0 value) (the float (sar (shl (the int f0-14) 48) 48))))) (else - (let ((f0-20 (+ (-> arg0 value) f0-6))) - (set! f0-20 (cond - ((= (-> arg0 range) 0.0) - (the float (sar (shl (the int f0-20) 48) 48)) - ) - (else - (if (< (-> arg0 range) f0-20) - (set! f0-20 (-> arg0 range)) - ) - f0-20 - ) - ) - ) - (set! (-> arg0 value) (the float (sar (shl (the int f0-20) 48) 48))) - ) - ) - ) - ) - #f - ) + (let ((f0-20 (+ (-> arg0 value) f0-6))) + (set! f0-20 + (cond + ((= (-> arg0 range) 0.0) (the float (sar (shl (the int f0-20) 48) 48))) + (else (if (< (-> arg0 range) f0-20) (set! f0-20 (-> arg0 range))) f0-20))) + (set! (-> arg0 value) (the float (sar (shl (the int f0-20) 48) 48))))))) + #f) (defpartgroup group-beach-sack-fuse :id 117 :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 517 :fade-after (meters 30)) - (sp-item 518 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 519 :fade-after (meters 80) :falloff-to (meters 80)) - ) - ) + :parts + ((sp-item 517 :fade-after (meters 30)) + (sp-item 518 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 519 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 517 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 4.0 24.0) - (:vel-y (meters 0.013333334)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 2.1333334) - (:accel-y (meters -0.0001)) - (:timer (seconds 0.15) (seconds 0.047)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 4.0 24.0) + (:vel-y (meters 0.013333334)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 2.1333334) + (:accel-y (meters -0.0001)) + (:timer (seconds 0.15) (seconds 0.047)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 518 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.25) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 48.0 48.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.25) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 48.0 48.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 519 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 4.0) - (:scale-x (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 8.0 24.0) - (:a 160.0 95.0) - (:scalevel-x (meters 0.016666668)) - (:scalevel-y :copy scalevel-x) - (:fade-a -8.366014) - (:accel-y (meters -0.002)) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.6) (meters 0.2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 4.0) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 8.0 24.0) + (:a 160.0 95.0) + (:scalevel-x (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a -8.366014) + (:accel-y (meters -0.002)) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.6) (meters 0.2)))) (defpartgroup group-beach-sack-explosion :id 118 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 520 :period (seconds 4) :length (seconds 0.1)) - (sp-item 521 :fade-after (meters 60) :period (seconds 4) :length (seconds 0.05)) - (sp-item 522 :period (seconds 4) :length (seconds 0.05) :offset 15) - (sp-item 523 :period (seconds 4) :length (seconds 0.05)) - (sp-item 524 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.1) :binding 525) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - ) - ) + :parts + ((sp-item 520 :period (seconds 4) :length (seconds 0.1)) + (sp-item 521 :fade-after (meters 60) :period (seconds 4) :length (seconds 0.05)) + (sp-item 522 :period (seconds 4) :length (seconds 0.05) :offset 15) + (sp-item 523 :period (seconds 4) :length (seconds 0.05)) + (sp-item 524 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.1) :binding 525) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)))) (defpart 520 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:y (meters 0.5) (meters 0.5)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0) - (:g 70.0) - (:b 70.0 16.0) - (:a 96.0) - (:vel-y (meters 0.006666667) (meters 0.033333335)) - (:scalevel-x (meters 0.006)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00005)) - (:friction 0.92) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 526) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:y (meters 0.5) (meters 0.5)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 70.0) + (:b 70.0 16.0) + (:a 96.0) + (:vel-y (meters 0.006666667) (meters 0.033333335)) + (:scalevel-x (meters 0.006)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00005)) + (:friction 0.92) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 526) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 526 - :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x) (:fade-a -0.32)) - ) + :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x) (:fade-a -0.32))) (defpart 521 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:y (meters 0.75)) - (:scale-x (meters 8) (meters 8)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.2) (meters 3)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 527) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:y (meters 0.75)) + (:scale-x (meters 8) (meters 8)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.2) (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 527) + (:rotate-y (degrees 0)))) (defpart 527 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 522 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 523 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 32.0) - (:b 32.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 32.0) + (:b 32.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 524 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0 10.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 127.0 1 127.0) - (:b 0.0) - (:a 127.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:fade-g -4.266667) - (:fade-b -2.8444445) - (:accel-y (meters -0.004)) - (:friction 0.97) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.127)) - (:next-launcher 528) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0 10.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 127.0 1 127.0) + (:b 0.0) + (:a 127.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:fade-g -4.266667) + (:fade-b -2.8444445) + (:accel-y (meters -0.004)) + (:friction 0.97) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.127)) + (:next-launcher 528) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 528 - :init-specs ((:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -4.266667) - (:fade-g 0.7111111) - (:fade-b 1.4222223) - (:fade-a -2.8444445) - ) - ) + :init-specs + ((:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -4.266667) + (:fade-g 0.7111111) + (:fade-b 1.4222223) + (:fade-a -2.8444445))) (defpart 525 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0) - (:g 70.0) - (:b 70.0 16.0) - (:a 20.0 8.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.11666667) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 70.0) + (:b 70.0 16.0) + (:a 20.0 8.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.11666667) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpartgroup group-beach-cannon-fire :id 119 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 24) - :parts ((sp-item 529 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 4) :length (seconds 0.1)) - (sp-item 530 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.05)) - (sp-item 531 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 4) :length (seconds 0.05)) - (sp-item 532 :period (seconds 4) :length (seconds 0.05) :offset 15) - (sp-item 533 :period (seconds 4) :length (seconds 0.05)) - (sp-item 534 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 4) :length (seconds 0.05) :binding 535) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - ) - ) + :parts + ((sp-item 529 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 4) :length (seconds 0.1)) + (sp-item 530 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.05)) + (sp-item 531 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 4) :length (seconds 0.05)) + (sp-item 532 :period (seconds 4) :length (seconds 0.05) :offset 15) + (sp-item 533 :period (seconds 4) :length (seconds 0.05)) + (sp-item 534 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 4) :length (seconds 0.05) :binding 535) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)))) (defpart 529 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0 16.0) - (:a 48.0) - (:vel-y (meters 0.1) (meters 0.013333334)) - (:vel-z (meters -0.033333335)) - (:scalevel-x (meters 0.016666668)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00006666667)) - (:friction 0.92) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 536) - (:launchrot-x (degrees 90)) - (:launchrot-y (degrees 0) (degrees 360)) - (:conerot-x (degrees 45)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0 16.0) + (:a 48.0) + (:vel-y (meters 0.1) (meters 0.013333334)) + (:vel-z (meters -0.033333335)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00006666667)) + (:friction 0.92) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 536) + (:launchrot-x (degrees 90)) + (:launchrot-y (degrees 0) (degrees 360)) + (:conerot-x (degrees 45)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 90)))) (defpart 536 - :init-specs ((:scalevel-x (meters 0.006666667)) (:scalevel-y :copy scalevel-x) (:fade-a -0.16)) - ) + :init-specs ((:scalevel-x (meters 0.006666667)) (:scalevel-y :copy scalevel-x) (:fade-a -0.16))) (defpart 530 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 5.0) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0 16.0) - (:a 48.0) - (:vel-z (meters 0.3) (meters 0.06666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00006666667)) - (:friction 0.96) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.497)) - (:next-launcher 536) - (:launchrot-x (degrees -83) (degrees -7.0000005)) - (:launchrot-y (degrees 0) (degrees 360)) - (:conerot-x (degrees 45)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 5.0) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0 16.0) + (:a 48.0) + (:vel-z (meters 0.3) (meters 0.06666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00006666667)) + (:friction 0.96) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.497)) + (:next-launcher 536) + (:launchrot-x (degrees -83) (degrees -7.0000005)) + (:launchrot-y (degrees 0) (degrees 360)) + (:conerot-x (degrees 45)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 90)))) (defpart 531 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:y (meters 0.75)) - (:scale-x (meters 16) (meters 16)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.2) (meters 3)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 537) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:y (meters 0.75)) + (:scale-x (meters 16) (meters 16)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.2) (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 537))) (defpart 537 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 532 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 533 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 32.0) - (:b 32.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 32.0) + (:b 32.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 534 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0 10.0) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 0.0) - (:a 128.0) - (:vel-z (meters 0.16666667) (meters 0.16666667)) - (:fade-g -4.2222223) - (:fade-b -2.8) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:friction 0.95) - (:timer (seconds 2)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035) (seconds 0.297)) - (:next-launcher 538) - (:launchrot-x (degrees -60) (degrees -60)) - (:launchrot-y (degrees 0) (degrees 360)) - (:conerot-x (degrees 45)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0 10.0) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 0.0) + (:a 128.0) + (:vel-z (meters 0.16666667) (meters 0.16666667)) + (:fade-g -4.2222223) + (:fade-b -2.8) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035) (seconds 0.297)) + (:next-launcher 538) + (:launchrot-x (degrees -60) (degrees -60)) + (:launchrot-y (degrees 0) (degrees 360)) + (:conerot-x (degrees 45)) + (:rotate-y (degrees 90)))) (defpart 538 - :init-specs ((:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.6) - (:fade-g -1.8) - (:fade-a -0.85333335) - ) - ) + :init-specs + ((:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.6) + (:fade-g -1.8) + (:fade-a -0.85333335))) (defpart 535 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.08) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08) + (:timer (seconds 1)) + (:flags (bit2 bit12)))) (deftype mistycannon-missile (process-drawable) - ((root collide-shape-moving :override) - (muzzle-time float) - (tumble-quat quaternion :inline) - (blast-radius float) - (water-height float) - (sfx uint32) - (part2 sparticle-launch-control) - (ground-time time-frame) - ) + ((root collide-shape-moving :override) + (muzzle-time float) + (tumble-quat quaternion :inline) + (blast-radius float) + (water-height float) + (sfx uint32) + (part2 sparticle-launch-control) + (ground-time time-frame)) (:methods - (spawn-part (_type_) none) - ) + (spawn-part (_type_) none)) (:states - mistycannon-missile-explode - mistycannon-missile-idle - mistycannon-missile-in-water - ) - ) - + mistycannon-missile-explode + mistycannon-missile-idle + mistycannon-missile-in-water)) (defmethod relocate ((this mistycannon-missile) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as mistycannon-missile ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as mistycannon-missile ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this mistycannon-missile)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) -(defskelgroup *mistycannon-missile-sg* sack sack-lod0-jg sack-idle-ja - ((sack-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *mistycannon-missile-sg* + sack + sack-lod0-jg + sack-idle-ja + ((sack-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defmethod spawn-part ((this mistycannon-missile)) (let ((gp-0 (-> this part)) - (a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 7))) - ) - (spawn gp-0 a1-1) - ) + (a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 7)))) + (spawn gp-0 a1-1)) 0 - (none) - ) + (none)) (defstate mistycannon-missile-idle (mistycannon-missile) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (go mistycannon-missile-explode) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self sfx) (the-as uint 0)) - 0 - ) - :trans (behavior () - (if (< (-> self root trans y) (-> self water-height)) - (go mistycannon-missile-in-water) - ) - ) - :code (behavior () - (clear-collide-with-as (-> self root)) - (while (not (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self muzzle-time))))) - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) - (suspend) - (let ((f0-1 - (fmin - 1.0 - (/ (the float (- (current-time) (-> self state-time))) (the float (the int (* 300.0 (-> self muzzle-time))))) - ) - ) - ) - (set! (-> self root scale x) (* 0.6 f0-1)) - (set! (-> self root scale y) (* 0.6 f0-1)) - (set! (-> self root scale z) (* 0.6 f0-1)) - ) - ) - (restore-collide-with-as (-> self root)) - (set-vector! (-> self root scale) 0.6 0.6 0.6 1.0) - (while (not (logtest? (-> self root status) (cshape-moving-flags onsurf))) - (if (and (zero? (-> self sfx)) (< (if *target* - (vector-vector-distance (-> self root trans) (-> *target* control trans)) - 4096000.0 - ) - 409600.0 - ) - ) - (set! (-> self sfx) (the-as uint (sound-play "sack-incoming" :position (the-as symbol (-> self root trans))))) - ) - (when (nonzero? (-> self sfx)) - (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> gp-1 command) (sound-command set-param)) - (set! (-> gp-1 id) (the-as sound-id (-> self sfx))) - (let ((a1-3 (-> self root trans))) - (let ((s5-1 self)) - (when (= a1-3 #t) - (if (and s5-1 (type-type? (-> s5-1 type) process-drawable) (nonzero? (-> s5-1 root))) - (set! a1-3 (-> s5-1 root trans)) - (set! a1-3 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> gp-1 parms trans) a1-3) - ) - (set! (-> gp-1 parms mask) (sound-mask trans)) - (-> gp-1 id) - ) - ) - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) - (suspend) - ) - (quaternion-set! (-> self root quat) 0.0 0.0 0.0 1.0) - (update-transforms! (-> self root)) - (when (nonzero? (-> self sfx)) - (sound-stop (the-as sound-id (-> self sfx))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (go mistycannon-missile-explode)))) + :enter + (behavior () + (set-time! (-> self state-time)) (set! (-> self sfx) (the-as uint 0)) - 0 - ) - (set-time! (-> self ground-time)) - (sound-play "sack-land" :position (the-as symbol (-> self root trans))) - (ja-no-eval :group! sack-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sack-fuse-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go mistycannon-missile-explode) - ) - :post (behavior () - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) - (set! (-> self root root-prim prim-core offense) (collide-offense touch)) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - (spawn-part self) - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) - (if (logtest? (-> self root status) (cshape-moving-flags onsurf)) - (draw-shadow - (-> self root shadow-pos) - (-> self root shadow-pos) - (-> self root ground-poly-normal) - 8192.0 - 4096.0 - (the-as float 0) - ) - (find-ground-and-draw-shadow - (-> self root trans) - (-> self root shadow-pos) - 8192.0 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - ) - ) - (ja-post) - ) - ) + 0) + :trans + (behavior () + (if (< (-> self root trans y) (-> self water-height)) (go mistycannon-missile-in-water))) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (while (not (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self muzzle-time))))) + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) + (suspend) + (let ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> self state-time))) (the float (the int (* 300.0 (-> self muzzle-time)))))))) + (set! (-> self root scale x) (* 0.6 f0-1)) + (set! (-> self root scale y) (* 0.6 f0-1)) + (set! (-> self root scale z) (* 0.6 f0-1)))) + (restore-collide-with-as (-> self root)) + (set-vector! (-> self root scale) 0.6 0.6 0.6 1.0) + (while (not (logtest? (-> self root status) (cshape-moving-flags onsurf))) + (if (and (zero? (-> self sfx)) + (< (if *target* (vector-vector-distance (-> self root trans) (-> *target* control trans)) 4096000.0) 409600.0)) + (set! (-> self sfx) (the-as uint (sound-play "sack-incoming" :position (the-as symbol (-> self root trans)))))) + (when (nonzero? (-> self sfx)) + (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> gp-1 command) (sound-command set-param)) + (set! (-> gp-1 id) (the-as sound-id (-> self sfx))) + (let ((a1-3 (-> self root trans))) + (let ((s5-1 self)) + (when (= a1-3 #t) + (if (and s5-1 (type-type? (-> s5-1 type) process-drawable) (nonzero? (-> s5-1 root))) + (set! a1-3 (-> s5-1 root trans)) + (set! a1-3 (the-as vector #f))))) + (sound-trans-convert (-> gp-1 parms trans) a1-3)) + (set! (-> gp-1 parms mask) (sound-mask trans)) + (-> gp-1 id))) + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) + (suspend)) + (quaternion-set! (-> self root quat) 0.0 0.0 0.0 1.0) + (update-transforms! (-> self root)) + (when (nonzero? (-> self sfx)) + (sound-stop (the-as sound-id (-> self sfx))) + (set! (-> self sfx) (the-as uint 0)) + 0) + (set-time! (-> self ground-time)) + (sound-play "sack-land" :position (the-as symbol (-> self root trans))) + (ja-no-eval :group! sack-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! sack-fuse-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go mistycannon-missile-explode)) + :post + (behavior () + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) + (set! (-> self root root-prim prim-core offense) (collide-offense touch)) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) + (spawn-part self) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) + (if (logtest? (-> self root status) (cshape-moving-flags onsurf)) + (draw-shadow (-> self root shadow-pos) + (-> self root shadow-pos) + (-> self root ground-poly-normal) + 8192.0 + 4096.0 + (the-as float 0)) + (find-ground-and-draw-shadow (-> self root trans) + (-> self root shadow-pos) + 8192.0 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0))) + (ja-post))) (defstate mistycannon-missile-in-water (mistycannon-missile) - :code (behavior () - (when (nonzero? (-> self sfx)) - (sound-stop (the-as sound-id (-> self sfx))) - (set! (-> self sfx) (the-as uint 0)) - 0 - ) - (let ((a1-0 (new-stack-vector0))) - (set! (-> a1-0 x) (-> self root trans x)) - (set! (-> a1-0 y) (-> self water-height)) - (set! (-> a1-0 z) (-> self root trans z)) - (set! (-> a1-0 w) 1.0) - (splash-spawn (the-as basic 1.0) (the-as basic a1-0) 1) - ) - (label cfg-3) - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) - (vector-float*! (-> self root transv) (-> self root transv) 0.5) - (update-transforms! (-> self root)) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) - (seek! (-> self root scale x) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) - (seek! (-> self root scale y) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) - (seek! (-> self root scale z) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) - (when (< 0.05 (-> self root scale x)) - (suspend) - (goto cfg-3) - ) - (ja-channel-set! 0) - ) - :post ja-post - ) + :code + (behavior () + (when (nonzero? (-> self sfx)) + (sound-stop (the-as sound-id (-> self sfx))) + (set! (-> self sfx) (the-as uint 0)) + 0) + (let ((a1-0 (new-stack-vector0))) + (set! (-> a1-0 x) (-> self root trans x)) + (set! (-> a1-0 y) (-> self water-height)) + (set! (-> a1-0 z) (-> self root trans z)) + (set! (-> a1-0 w) 1.0) + (splash-spawn (the-as basic 1.0) (the-as basic a1-0) 1)) + (label cfg-3) + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) + (vector-float*! (-> self root transv) (-> self root transv) 0.5) + (update-transforms! (-> self root)) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) + (seek! (-> self root scale x) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) + (seek! (-> self root scale y) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) + (seek! (-> self root scale z) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) + (when (< 0.05 (-> self root scale x)) + (suspend) + (goto cfg-3)) + (ja-channel-set! 0)) + :post ja-post) (defstate mistycannon-missile-explode (mistycannon-missile) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (let* ((s4-0 proc) - (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) - (when v1-2 - (let* ((v1-3 (-> (the-as mistycannon-missile v1-2) root)) - (a1-2 (-> self root root-prim prim-core)) - (v1-5 (-> v1-3 root-prim prim-core)) - (a2-1 (new 'stack-no-clear 'vector)) - (t2-0 (new 'stack-no-clear 'collide-tri-result)) - ) - 0.0 - (vector-! a2-1 (the-as vector v1-5) (the-as vector a1-2)) - (when (< (fill-and-probe-using-line-sphere - *collide-cache* - (the-as vector a1-2) - a2-1 - 40.96 - (collide-kind background) - self - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (cond - ((= (-> proc type) target) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode)))) - ) - (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) (-> block param 0)) - (set! (-> a1-4 param 1) (the-as uint 'explode)) - (let ((v1-18 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-18) - (set! (-> a1-4 param 2) (the-as uint v1-18)) - ) - (set! (-> a1-4 param 3) (the-as uint 0)) - (send-event-function proc a1-4) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (if (and *target* (= (-> *target* next-state name) 'target-periscope)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (let* ((s4-0 proc) + (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) + (when v1-2 + (let* ((v1-3 (-> (the-as mistycannon-missile v1-2) root)) + (a1-2 (-> self root root-prim prim-core)) + (v1-5 (-> v1-3 root-prim prim-core)) + (a2-1 (new 'stack-no-clear 'vector)) + (t2-0 (new 'stack-no-clear 'collide-tri-result))) + 0.0 + (vector-! a2-1 (the-as vector v1-5) (the-as vector a1-2)) + (when (< (fill-and-probe-using-line-sphere *collide-cache* + (the-as vector a1-2) + a2-1 + 40.96 + (collide-kind background) + self + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (cond + ((= (-> proc type) target) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode))))) + (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) (-> block param 0)) + (set! (-> a1-4 param 1) (the-as uint 'explode)) + (let ((v1-18 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-18) (set! (-> a1-4 param 2) (the-as uint v1-18))) + (set! (-> a1-4 param 3) (the-as uint 0)) + (send-event-function proc a1-4))))))))))) + :code + (behavior () + (if (and *target* (= (-> *target* next-state name) 'target-periscope)) (sound-play-by-spec (static-sound-spec "explosion" :fo-min 200 :fo-max 400) (new-sound-id) (the-as vector #t)) - (sound-play-by-spec (static-sound-spec "explosion") (new-sound-id) (the-as vector #t)) - ) - (spawn (-> self part2) (-> self root trans)) - (ja-channel-set! 0) - (let ((v1-11 (-> self root root-prim))) - (set! (-> v1-11 local-sphere w) (-> self blast-radius)) - (set! (-> v1-11 prim-core world-sphere w) (-> self blast-radius)) - (set! (-> v1-11 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object)) - (set! (-> v1-11 prim-core collide-as) (collide-kind enemy)) - ) - (update-transforms! (-> self root)) - (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) - (set! (-> a1-3 options) (the-as uint 0)) - (set! (-> a1-3 tlist) *touching-list*) - (find-overlapping-shapes (-> self root) a1-3) - ) - (suspend) - (clear-collide-with-as (-> self root)) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 3)) - (spawn (-> self part2) (-> self root trans)) - (suspend) - ) - ) - (kill-and-free-particles (-> self part2)) - (deactivate self) - ) - :post ja-post - ) + (sound-play-by-spec (static-sound-spec "explosion") (new-sound-id) (the-as vector #t))) + (spawn (-> self part2) (-> self root trans)) + (ja-channel-set! 0) + (let ((v1-11 (-> self root root-prim))) + (set! (-> v1-11 local-sphere w) (-> self blast-radius)) + (set! (-> v1-11 prim-core world-sphere w) (-> self blast-radius)) + (set! (-> v1-11 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object)) + (set! (-> v1-11 prim-core collide-as) (collide-kind enemy))) + (update-transforms! (-> self root)) + (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) + (set! (-> a1-3 options) (the-as uint 0)) + (set! (-> a1-3 tlist) *touching-list*) + (find-overlapping-shapes (-> self root) a1-3)) + (suspend) + (clear-collide-with-as (-> self root)) + (let ((gp-2 (current-time))) + (until (time-elapsed? gp-2 (seconds 3)) + (spawn (-> self part2) (-> self root trans)) + (suspend))) + (kill-and-free-particles (-> self part2)) + (deactivate self)) + :post ja-post) (defun mistycannon-collision-reaction ((arg0 collide-shape-moving) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) (let ((s5-0 0)) (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (move-by-vector! arg0 a1-1) - ) + (move-by-vector! arg0 a1-1)) (let ((f0-2 (vector-dot (-> arg0 transv) (-> arg1 best-tri normal))) - (v1-6 (new 'stack-no-clear 'vector)) - ) + (v1-6 (new 'stack-no-clear 'vector))) (vector-float*! v1-6 (-> arg1 best-tri normal) (* 2.0 f0-2)) - (vector-! (-> arg0 transv) (-> arg0 transv) v1-6) - ) + (vector-! (-> arg0 transv) (-> arg0 transv) v1-6)) (vector-float*! (-> arg0 transv) (-> arg0 transv) 0.15) - (let ((v0-1 (logior s5-0 7))) - (logior! (-> arg0 status) v0-1) - (the-as cshape-moving-flags v0-1) - ) - ) - ) + (let ((v0-1 (logior s5-0 7))) (logior! (-> arg0 status) v0-1) (the-as cshape-moving-flags v0-1)))) (deftype mistycannon-init-data (structure) - ((pos vector) - (vel vector) - (rotate float) - (flight-time float) - (muzzle-time float) - (blast-radius float) - ) - ) - + ((pos vector) + (vel vector) + (rotate float) + (flight-time float) + (muzzle-time float) + (blast-radius float))) (defbehavior mistycannon-missile-init-by-other mistycannon-missile ((arg0 mistycannon-init-data) (arg1 entity-actor)) (logior! (-> self mask) (process-mask projectile)) @@ -934,9 +755,7 @@ (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) mistycannon-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object)) @@ -944,21 +763,18 @@ (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1720.3201) - (set-root-prim! s5-0 s4-0) - ) + (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 event-self) 'touched) (set! (-> s5-0 max-iteration-count) (the-as uint 4)) - (set! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 pos quad)) (set-vector! (-> self root scale) 0.0 0.0 0.0 1.0) (set! (-> self muzzle-time) (-> arg0 muzzle-time)) (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> arg0 rotate)) (let ((f0-13 (/ 655360.0 (the float (the int (* 300.0 (-> arg0 flight-time))))))) - (quaternion-axis-angle! (-> self tumble-quat) 1.0 0.0 0.0 f0-13) - ) + (quaternion-axis-angle! (-> self tumble-quat) 1.0 0.0 0.0 f0-13)) (initialize-skeleton self *mistycannon-missile-sg* '()) (set! (-> self root transv quad) (-> arg0 vel quad)) (set! (-> self blast-radius) (-> arg0 blast-radius)) @@ -966,18 +782,9 @@ (set! (-> self part) (create-launch-control (-> *part-group-id-table* 117) self)) (set! (-> self part2) (create-launch-control (-> *part-group-id-table* 118) self)) (go mistycannon-missile-idle) - (none) - ) - -(defun spawn-mistycannon-missile ((arg0 process-tree) - (arg1 vector) - (arg2 vector) - (arg3 float) - (arg4 float) - (arg5 float) - (arg6 float) - (arg7 entity) - ) + (none)) + +(defun spawn-mistycannon-missile ((arg0 process-tree) (arg1 vector) (arg2 vector) (arg3 float) (arg4 float) (arg5 float) (arg6 float) (arg7 entity)) (let ((s5-0 (new 'stack-no-clear 'mistycannon-init-data))) (set! (-> s5-0 pos) arg1) (set! (-> s5-0 vel) arg2) @@ -985,154 +792,119 @@ (set! (-> s5-0 flight-time) arg4) (set! (-> s5-0 muzzle-time) arg5) (set! (-> s5-0 blast-radius) arg6) - (process-spawn mistycannon-missile s5-0 arg7 :to arg0) - ) + (process-spawn mistycannon-missile s5-0 arg7 :to arg0)) 0 - (none) - ) + (none)) (deftype mistycannon (process-drawable) - ((root collide-shape-moving :override) - (fact fact-info-enemy :override) - (rotate angle-tracker :inline) - (tilt angle-tracker :inline) - (front-wheel float) - (rear-wheel float) - (last-known-rotation float) - (part-timer time-frame) - (hellmouth vector :inline) - (postbindinfo-ok symbol) - (launch-origin vector :inline) - (goggles vector :inline) - (avoid-entity entity-actor) - (center-point vector :inline) - (at-point vector :inline) - (accuracy-range float) - (target-theta float) - (sound-id sound-id) - (aim-sound-id sound-id) - (player-touching-grips? symbol) - ) + ((root collide-shape-moving :override) + (fact fact-info-enemy :override) + (rotate angle-tracker :inline) + (tilt angle-tracker :inline) + (front-wheel float) + (rear-wheel float) + (last-known-rotation float) + (part-timer time-frame) + (hellmouth vector :inline) + (postbindinfo-ok symbol) + (launch-origin vector :inline) + (goggles vector :inline) + (avoid-entity entity-actor) + (center-point vector :inline) + (at-point vector :inline) + (accuracy-range float) + (target-theta float) + (sound-id sound-id) + (aim-sound-id sound-id) + (player-touching-grips? symbol)) (:methods - (rotate! (_type_ float) none) - (tilt! (_type_ float) none) - (mistycannon-method-22 (_type_ float float float) none) - (mistycannon-method-23 (_type_) none) - ) + (rotate! (_type_ float) none) + (tilt! (_type_ float) none) + (mistycannon-method-22 (_type_ float float float) none) + (mistycannon-method-23 (_type_) none)) (:states - mistycannon-aim-at-player - mistycannon-idle - mistycannon-player-control - mistycannon-waiting-for-player - mistycannon-waiting-for-player-to-fuck-off - ) - ) - + mistycannon-aim-at-player + mistycannon-idle + mistycannon-player-control + mistycannon-waiting-for-player + mistycannon-waiting-for-player-to-fuck-off)) (defbehavior mistycannon-pick-random-target-point mistycannon () (let ((f30-0 (* (sqrtf (rand-vu)) (-> self center-point w))) - (f28-1 (* 65536.0 (rand-vu))) - ) + (f28-1 (* 65536.0 (rand-vu)))) (set! (-> self at-point x) (+ (-> self center-point x) (* f30-0 (cos f28-1)))) (set! (-> self at-point y) (-> self center-point y)) - (set! (-> self at-point z) (+ (-> self center-point z) (* f30-0 (sin f28-1)))) - ) + (set! (-> self at-point z) (+ (-> self center-point z) (* f30-0 (sin f28-1))))) (set! (-> self at-point w) 1.0) (set! (-> self target-theta) (rand-vu-float-range 2730.6667 12743.111)) - (none) - ) + (none)) (defmethod rotate! ((this mistycannon) (arg0 float)) (angle-tracker-apply-move! (-> this rotate) arg0) 0 - (none) - ) + (none)) (defmethod tilt! ((this mistycannon) (arg0 float)) (angle-tracker-apply-move! (-> this tilt) arg0) 0 - (none) - ) + (none)) ;; WARN: Function (method 22 mistycannon) has a return type of none, but the expression builder found a return statement. (defmethod mistycannon-method-22 ((this mistycannon) (arg0 float) (arg1 float) (arg2 float)) - (if (not (-> this postbindinfo-ok)) - (return #f) - ) + (if (not (-> this postbindinfo-ok)) (return #f)) (let* ((s3-0 (-> this launch-origin)) (s2-0 (new 'stack-no-clear 'vector)) (v1-3 (-> this rotate)) (f30-0 (the float (sar (shl (the int (+ (-> v1-3 min) (-> v1-3 value))) 48) 48))) (v1-8 (-> this tilt)) (f26-0 (the float (sar (shl (the int (+ (-> v1-8 min) (-> v1-8 value))) 48) 48))) - (f28-0 (/ 24576.0 arg0)) - ) - (let ((f24-0 (cos f26-0))) - (set! (-> s2-0 x) (* arg0 f24-0 (sin f30-0))) - (set! (-> s2-0 z) (* arg0 f24-0 (cos f30-0))) - ) + (f28-0 (/ 24576.0 arg0))) + (let ((f24-0 (cos f26-0))) (set! (-> s2-0 x) (* arg0 f24-0 (sin f30-0))) (set! (-> s2-0 z) (* arg0 f24-0 (cos f30-0)))) (set! (-> s2-0 y) (* arg0 (sin f26-0))) (vector-float*! (-> this hellmouth) s2-0 f28-0) (vector+! (-> this hellmouth) (-> this hellmouth) s3-0) - (spawn-mistycannon-missile this s3-0 s2-0 f30-0 arg1 f28-0 arg2 (-> this entity)) - ) + (spawn-mistycannon-missile this s3-0 s2-0 f30-0 arg1 f28-0 arg2 (-> this entity))) (sound-play "cannon-shot") (set! (-> this part local-clock) 0) (set-time! (-> this part-timer)) (mistycannon-pick-random-target-point) 0 - (none) - ) + (none)) (defmethod mistycannon-method-23 ((this mistycannon)) (when (not (time-elapsed? (-> this part-timer) (seconds 3))) (let ((v1-4 (-> this rotate))) (set! (-> *part-id-table* 529 init-specs 24 initial-valuef) - (the float (sar (shl (the int (+ (-> v1-4 min) (-> v1-4 value))) 48) 48)) - ) - ) + (the float (sar (shl (the int (+ (-> v1-4 min) (-> v1-4 value))) 48) 48)))) (let ((v1-12 (-> this rotate))) (set! (-> *part-id-table* 530 init-specs 23 initial-valuef) - (the float (sar (shl (the int (+ (-> v1-12 min) (-> v1-12 value))) 48) 48)) - ) - ) + (the float (sar (shl (the int (+ (-> v1-12 min) (-> v1-12 value))) 48) 48)))) (let ((v1-20 (-> this rotate))) (set! (-> *part-id-table* 534 init-specs 21 initial-valuef) - (the float (sar (shl (the int (+ (-> v1-20 min) (-> v1-20 value))) 48) 48)) - ) - ) + (the float (sar (shl (the int (+ (-> v1-20 min) (-> v1-20 value))) 48) 48)))) (let ((f0-18 16384.0) - (v1-28 (-> this tilt)) - ) + (v1-28 (-> this tilt))) (set! (-> *part-id-table* 529 init-specs 22 initial-valuef) - (- f0-18 (the float (sar (shl (the int (+ (-> v1-28 min) (-> v1-28 value))) 48) 48))) - ) - ) + (- f0-18 (the float (sar (shl (the int (+ (-> v1-28 min) (-> v1-28 value))) 48) 48))))) (let ((f0-20 16384.0) - (v1-36 (-> this tilt)) - ) + (v1-36 (-> this tilt))) (set! (-> *part-id-table* 530 init-specs 21 initial-valuef) - (- f0-20 (the float (sar (shl (the int (+ (-> v1-36 min) (-> v1-36 value))) 48) 48))) - ) - ) + (- f0-20 (the float (sar (shl (the int (+ (-> v1-36 min) (-> v1-36 value))) 48) 48))))) (let ((f0-22 16384.0) - (v1-44 (-> this tilt)) - ) + (v1-44 (-> this tilt))) (set! (-> *part-id-table* 534 init-specs 20 initial-valuef) - (- f0-22 (the float (sar (shl (the int (+ (-> v1-44 min) (-> v1-44 value))) 48) 48))) - ) - ) - (spawn (-> this part) (-> this hellmouth)) - ) + (- f0-22 (the float (sar (shl (the int (+ (-> v1-44 min) (-> v1-44 value))) 48) 48))))) + (spawn (-> this part) (-> this hellmouth))) 0 - (none) - ) + (none)) -(defskelgroup *mistycannon-sg* mistycannon mistycannon-lod0-jg mistycannon-idle-ja - ((mistycannon-lod0-mg (meters 20)) (mistycannon-lod1-mg (meters 999999))) - :bounds (static-spherem 0 5 0 9) - :longest-edge (meters 4) - ) +(defskelgroup *mistycannon-sg* + mistycannon + mistycannon-lod0-jg + mistycannon-idle-ja + ((mistycannon-lod0-mg (meters 20)) (mistycannon-lod1-mg (meters 999999))) + :bounds (static-spherem 0 5 0 9) + :longest-edge (meters 4)) (defun mistycannon-prebind-function ((arg0 pointer) (arg1 int) (arg2 mistycannon)) (let ((t9-0 quaternion-axis-angle!) @@ -1140,92 +912,58 @@ (a1-1 0.0) (a2-1 1.0) (a3-0 0.0) - (v1-0 (-> arg2 rotate)) - ) - (t9-0 - (the-as quaternion a0-1) - a1-1 - a2-1 - a3-0 - (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48)) - ) - ) + (v1-0 (-> arg2 rotate))) + (t9-0 (the-as quaternion a0-1) a1-1 a2-1 a3-0 (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48)))) (let ((t9-1 quaternion-axis-angle!) (a0-2 (&+ arg0 192)) (a1-2 -1.0) (a2-2 0.0) (a3-1 0.0) - (v1-4 (-> arg2 tilt)) - ) - (t9-1 - (the-as quaternion a0-2) - a1-2 - a2-2 - a3-1 - (the float (sar (shl (the int (+ (-> v1-4 min) (-> v1-4 value))) 48) 48)) - ) - ) + (v1-4 (-> arg2 tilt))) + (t9-1 (the-as quaternion a0-2) a1-2 a2-2 a3-1 (the float (sar (shl (the int (+ (-> v1-4 min) (-> v1-4 value))) 48) 48)))) (let* ((v1-8 (-> arg2 rotate)) - (f0-16 - (- (the float (sar (shl (the int (+ (-> v1-8 min) (-> v1-8 value))) 48) 48)) (-> arg2 last-known-rotation)) - ) - ) + (f0-16 (- (the float (sar (shl (the int (+ (-> v1-8 min) (-> v1-8 value))) 48) 48)) (-> arg2 last-known-rotation)))) (set! (-> arg2 front-wheel) (the float (sar (shl (the int (+ (-> arg2 front-wheel) (* 5.0 f0-16))) 48) 48))) - (set! (-> arg2 rear-wheel) (the float (sar (shl (the int (+ (-> arg2 rear-wheel) (* 3.0 f0-16))) 48) 48))) - ) + (set! (-> arg2 rear-wheel) (the float (sar (shl (the int (+ (-> arg2 rear-wheel) (* 3.0 f0-16))) 48) 48)))) (let ((v1-19 (-> arg2 rotate))) - (set! (-> arg2 last-known-rotation) - (the float (sar (shl (the int (+ (-> v1-19 min) (-> v1-19 value))) 48) 48)) - ) - ) + (set! (-> arg2 last-known-rotation) (the float (sar (shl (the int (+ (-> v1-19 min) (-> v1-19 value))) 48) 48)))) (quaternion-axis-angle! (the-as quaternion (&+ arg0 432)) -1.0 0.0 0.0 (-> arg2 front-wheel)) (quaternion-axis-angle! (the-as quaternion (&+ arg0 384)) 1.0 0.0 0.0 (-> arg2 front-wheel)) (quaternion-axis-angle! (the-as quaternion (&+ arg0 288)) -1.0 0.0 0.0 (-> arg2 rear-wheel)) (quaternion-axis-angle! (the-as quaternion (&+ arg0 336)) 1.0 0.0 0.0 (-> arg2 rear-wheel)) 0 - (none) - ) + (none)) (defun mistycannon-postbind-function ((arg0 mistycannon)) (set! (-> arg0 launch-origin quad) (-> arg0 node-list data 4 bone transform vector 3 quad)) (let ((s5-0 (new 'stack-no-clear 'vector))) (set-vector! s5-0 0.0 53248.0 -4096.0 1.0) (vector-matrix*! s5-0 s5-0 (-> arg0 node-list data 3 bone transform)) - (set! (-> arg0 goggles quad) (-> s5-0 quad)) - ) + (set! (-> arg0 goggles quad) (-> s5-0 quad))) (set! (-> arg0 postbindinfo-ok) #t) 0 - (none) - ) + (none)) (defstate mistycannon-idle (mistycannon) - :trans (behavior () - (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (go mistycannon-waiting-for-player) - ) - (if (and (-> self postbindinfo-ok) - *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go mistycannon-aim-at-player) - ) - (rider-trans) - ) - :code (behavior () - (loop - (mistycannon-method-23 self) - (suspend) - ) - ) - :post rider-post - ) + :trans + (behavior () + (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (go mistycannon-waiting-for-player)) + (if (and (-> self postbindinfo-ok) + *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go mistycannon-aim-at-player)) + (rider-trans)) + :code + (behavior () + (loop + (mistycannon-method-23 self) + (suspend))) + :post rider-post) (deftype quadratic-solution (structure) - ((s1 float) - (s2 float) - ) - ) - + ((s1 float) + (s2 float))) (defun solve-missile-tilt ((arg0 quadratic-solution) (arg1 float) (arg2 float) (arg3 float) (arg4 float)) (let* ((f1-3 (* 0.5 arg2 arg2 arg4)) @@ -1233,396 +971,259 @@ (f30-0 (- (* arg2 arg1 arg1))) (f2-6 (+ f1-3 (* arg1 arg1 arg3))) (f1-5 (- (* f30-0 f30-0) (* 4.0 f2-6 f0-3))) - (f28-0 (/ 0.5 f0-3)) - ) - (if (< f1-5 0.0) - (return #f) - ) + (f28-0 (/ 0.5 f0-3))) + (if (< f1-5 0.0) (return #f)) (let ((f26-0 (sqrtf f1-5))) (set! (-> arg0 s1) (atan (* (+ (- f30-0) f26-0) f28-0) 1.0)) - (set! (-> arg0 s2) (atan (* (- (- f30-0) f26-0) f28-0) 1.0)) - ) - ) - #t - ) + (set! (-> arg0 s2) (atan (* (- (- f30-0) f26-0) f28-0) 1.0)))) + #t) (deftype trajectory-params (structure) - ((x float) - (y float) - (gravity float) - (theta float) - (speed float) - (time float) - ) - ) - + ((x float) + (y float) + (gravity float) + (theta float) + (speed float) + (time float))) (defun solve-missile-velocity ((arg0 trajectory-params) (arg1 float)) (set! (-> arg0 theta) arg1) (let ((f0-4 (* (- (* (-> arg0 x) (tan arg1)) (-> arg0 y)) (/ 2.0 (-> arg0 gravity))))) (when (< 0.0 f0-4) (set! (-> arg0 time) (sqrtf f0-4)) - (set! (-> arg0 speed) (/ (-> arg0 x) (* (-> arg0 time) (cos arg1)))) - ) - ) + (set! (-> arg0 speed) (/ (-> arg0 x) (* (-> arg0 time) (cos arg1)))))) 0 - (none) - ) + (none)) (defbehavior mistycannon-find-best-solution mistycannon ((arg0 quadratic-solution)) (let ((v1-0 #t) (a1-0 #t) - (v0-0 -1) - ) + (v0-0 -1)) (let ((f1-0 (-> self tilt min)) - (f0-1 (+ (-> self tilt range) (-> self tilt min))) - ) - (if (< (-> arg0 s1) f1-0) - (set! v1-0 #f) - ) - (if (< f0-1 (-> arg0 s1)) - (set! v1-0 #f) - ) - (if (< (-> arg0 s2) f1-0) - (set! a1-0 #f) - ) - (if (< f0-1 (-> arg0 s2)) - (set! a1-0 #f) - ) - ) - (if v1-0 - (set! v0-0 0) - ) - (if a1-0 - (set! v0-0 1) - ) + (f0-1 (+ (-> self tilt range) (-> self tilt min)))) + (if (< (-> arg0 s1) f1-0) (set! v1-0 #f)) + (if (< f0-1 (-> arg0 s1)) (set! v1-0 #f)) + (if (< (-> arg0 s2) f1-0) (set! a1-0 #f)) + (if (< f0-1 (-> arg0 s2)) (set! a1-0 #f))) + (if v1-0 (set! v0-0 0)) + (if a1-0 (set! v0-0 1)) (set! a1-0 (and v1-0 a1-0)) (when a1-0 - (if (< (-> arg0 s1) (-> arg0 s2)) - (set! v0-0 0) - (set! v0-0 1) - ) - ) - v0-0 - ) - ) + (if (< (-> arg0 s1) (-> arg0 s2)) (set! v0-0 0) (set! v0-0 1))) + v0-0)) (defbehavior mistycannon-find-trajectory mistycannon ((arg0 trajectory-params)) (set! (-> arg0 time) 0.0) (solve-missile-velocity arg0 (-> arg0 theta)) - (none) - ) + (none)) ;; WARN: Function mistycannon-do-aim has a return type of none, but the expression builder found a return statement. (defbehavior mistycannon-do-aim mistycannon ((arg0 vector) (arg1 vector)) - (if (not (-> self postbindinfo-ok)) - (return #f) - ) + (if (not (-> self postbindinfo-ok)) (return #f)) (when (-> self avoid-entity) - (let ((a1-1 (-> self avoid-entity extra trans))) - (if (< (vector-vector-distance arg0 a1-1) 122880.0) - (return #f) - ) - ) - ) + (let ((a1-1 (-> self avoid-entity extra trans))) (if (< (vector-vector-distance arg0 a1-1) 122880.0) (return #f)))) (let ((gp-0 (new 'stack-no-clear 'trajectory-params))) (let ((s4-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 arg0 (-> self launch-origin)) (set! (-> gp-0 x) (vector-xz-length s4-0)) - (set! (-> gp-0 y) (-> s4-0 y)) - ) + (set! (-> gp-0 y) (-> s4-0 y))) (set! (-> gp-0 gravity) (-> *standard-dynamics* gravity-length)) (set! (-> gp-0 speed) 409600.0) (set! (-> gp-0 theta) (-> self target-theta)) (mistycannon-find-trajectory gp-0) (let ((v1-12 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (vector-float*! v1-12 arg1 (* 0.4 (+ 2.0 (-> gp-0 time)))) (vector+! s4-1 arg0 v1-12) (let ((f30-0 (* (sqrtf (rand-vu)) (-> self accuracy-range))) - (f28-1 (* 65536.0 (rand-vu))) - ) + (f28-1 (* 65536.0 (rand-vu)))) (+! (-> s4-1 x) (* f30-0 (cos f28-1))) - (+! (-> s4-1 z) (* f30-0 (sin f28-1))) - ) + (+! (-> s4-1 z) (* f30-0 (sin f28-1)))) (let ((s5-1 (new 'stack-no-clear 'vector))) (vector-! s5-1 s4-1 (-> self launch-origin)) - (let ((f0-19 (atan (-> s5-1 x) (-> s5-1 z)))) - (angle-tracker-seek! (-> self rotate) f0-19) - ) + (let ((f0-19 (atan (-> s5-1 x) (-> s5-1 z)))) (angle-tracker-seek! (-> self rotate) f0-19)) (set! (-> gp-0 x) (vector-xz-length s5-1)) - (set! (-> gp-0 y) (-> s5-1 y)) - ) - ) + (set! (-> gp-0 y) (-> s5-1 y)))) (mistycannon-find-trajectory gp-0) (when (= (-> gp-0 time) 0.0) (when (time-elapsed? (-> self state-time) (seconds 3)) (mistycannon-method-22 self 409600.0 2.0 20480.0) - (set-time! (-> self state-time)) - ) - (return #f) - ) + (set-time! (-> self state-time))) + (return #f)) (when (angle-tracker-seek! (-> self tilt) (-> gp-0 theta)) (when (time-elapsed? (-> self state-time) (seconds 3)) (mistycannon-method-22 self (fmax 163840.0 (fmin 409600.0 (-> gp-0 speed))) (-> gp-0 time) 20480.0) - (set-time! (-> self state-time)) - ) - ) - ) + (set-time! (-> self state-time))))) 0 - (none) - ) + (none)) (defstate mistycannon-aim-at-player (mistycannon) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (go mistycannon-waiting-for-player) - ) - (if (not (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - ) - (go mistycannon-idle) - ) - (rider-trans) - ) - :code (behavior () - (loop - (if (< (vector-vector-xz-distance (target-pos 0) (-> self center-point)) (-> self center-point w)) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (go mistycannon-waiting-for-player)) + (if (not (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))))) + (go mistycannon-idle)) + (rider-trans)) + :code + (behavior () + (loop + (if (< (vector-vector-xz-distance (target-pos 0) (-> self center-point)) (-> self center-point w)) (mistycannon-do-aim (-> *target* control trans) (-> *target* control transv)) - (mistycannon-do-aim (-> self at-point) (new-stack-vector0)) - ) - (mistycannon-method-23 self) - (suspend) - ) - ) - :post rider-post - ) + (mistycannon-do-aim (-> self at-point) (new-stack-vector0))) + (mistycannon-method-23 self) + (suspend))) + :post rider-post) (defstate mistycannon-waiting-for-player (mistycannon) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self root) - (the-as uint 1) - ) - (let ((v0-1 (the-as object #t))) - (set! (-> self player-touching-grips?) (the-as symbol v0-1)) - v0-1 - ) - ) - ) - (('change-mode) - (go mistycannon-player-control) - ) - ) - ) - :trans (behavior () - (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (go mistycannon-aim-at-player) - ) - (rider-trans) - ) - :code (behavior () - (set! (-> self player-touching-grips?) #f) - (loop - (let ((f0-0 2730.6667) - (v1-0 (-> self tilt)) - ) - (if (< f0-0 (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48))) - (angle-tracker-seek! (-> self tilt) 2730.6667) - ) - ) - (mistycannon-method-23 self) - (when (and (-> self player-touching-grips?) (not (level-hint-displayed?))) - (set! (-> self player-touching-grips?) #f) - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (hud-hidden?) (can-grab-display? self)) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-15 gp-0)) - (set! (-> v1-15 width) (the float 440)) - ) - (let ((v1-16 gp-0)) - (set! (-> v1-16 height) (the float 80)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22) - ) - (when (cpad-pressed? 0 circle) - (loop - (send-event *target* 'change-mode 'periscope self) - (suspend) - (suspend) - ) - ) - ) - ) - (suspend) - ) - ) - :post rider-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self root) + (the-as uint 1)) + (let ((v0-1 (the-as object #t))) (set! (-> self player-touching-grips?) (the-as symbol v0-1)) v0-1))) + (('change-mode) (go mistycannon-player-control)))) + :trans + (behavior () + (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (go mistycannon-aim-at-player)) + (rider-trans)) + :code + (behavior () + (set! (-> self player-touching-grips?) #f) + (loop + (let ((f0-0 2730.6667) + (v1-0 (-> self tilt))) + (if (< f0-0 (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48))) + (angle-tracker-seek! (-> self tilt) 2730.6667))) + (mistycannon-method-23 self) + (when (and (-> self player-touching-grips?) (not (level-hint-displayed?))) + (set! (-> self player-touching-grips?) #f) + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (when (and (hud-hidden?) (can-grab-display? self)) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-15 gp-0)) (set! (-> v1-15 width) (the float 440))) + (let ((v1-16 gp-0)) (set! (-> v1-16 height) (the float 80))) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)) + (when (cpad-pressed? 0 circle) + (loop + (send-event *target* 'change-mode 'periscope self) + (suspend) + (suspend))))) + (suspend))) + :post rider-post) (defstate cam-mistycannon (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self blend-from-type) (the-as uint 1)) - (set! (-> self blend-to-type) (the-as uint 1)) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (let ((v1-0 (-> self change-event-from))) - (set! (-> self trans quad) (-> (the-as mistycannon (-> v1-0 0)) goggles quad)) - (let ((t9-0 matrix-rotate-yx!) - (a0-1 (-> self tracking)) - (v1-2 (-> (the-as mistycannon (-> v1-0 0)) rotate)) - ) - (t9-0 (the-as matrix a0-1) (the float (sar (shl (the int (+ (-> v1-2 min) (-> v1-2 value))) 48) 48)) 3640.889) - ) - ) - (suspend) - ) - ) - ) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self blend-from-type) (the-as uint 1)) + (set! (-> self blend-to-type) (the-as uint 1)))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop + (let ((v1-0 (-> self change-event-from))) + (set! (-> self trans quad) (-> (the-as mistycannon (-> v1-0 0)) goggles quad)) + (let ((t9-0 matrix-rotate-yx!) + (a0-1 (-> self tracking)) + (v1-2 (-> (the-as mistycannon (-> v1-0 0)) rotate))) + (t9-0 (the-as matrix a0-1) (the float (sar (shl (the int (+ (-> v1-2 min) (-> v1-2 value))) 48) 48)) 3640.889))) + (suspend)))) (defstate mistycannon-player-control (mistycannon) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('change-mode) - (send-event *camera* 'change-state cam-mistycannon 0) - ) - ) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - (sound-stop (-> self aim-sound-id)) - ) - :trans (behavior () - (mistycannon-method-23 self) - (rider-trans) - ) - :code (behavior () - (send-event *camera* 'change-state cam-mistycannon 0) - (suspend) - (set-time! (-> self state-time)) - (let ((gp-0 0) - (s5-0 0) - ) - (loop - (when *camera-read-analog* - (let ((f30-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0)) - (f28-0 (analog-input (the-as int (-> *cpad-list* cpads 0 lefty)) 128.0 48.0 110.0 -1.0)) - ) - (rotate! self f30-0) - (tilt! self (- f28-0)) - (if (or (!= f30-0 0.0) (!= f28-0 0.0)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('change-mode) (send-event *camera* 'change-state cam-mistycannon 0)))) + :exit + (behavior () + (sound-stop (-> self sound-id)) + (sound-stop (-> self aim-sound-id))) + :trans + (behavior () + (mistycannon-method-23 self) + (rider-trans)) + :code + (behavior () + (send-event *camera* 'change-state cam-mistycannon 0) + (suspend) + (set-time! (-> self state-time)) + (let ((gp-0 0) + (s5-0 0)) + (loop + (when *camera-read-analog* + (let ((f30-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0)) + (f28-0 (analog-input (the-as int (-> *cpad-list* cpads 0 lefty)) 128.0 48.0 110.0 -1.0))) + (rotate! self f30-0) + (tilt! self (- f28-0)) + (if (or (!= f30-0 0.0) (!= f28-0 0.0)) (sound-play "telescope" :id (-> self aim-sound-id)) - (sound-stop (-> self aim-sound-id)) - ) - ) - ) - (when (cpad-pressed? 0 triangle) - (process-entity-status! self (entity-perm-status bit-3) #t) - (sound-stop (-> self sound-id)) - (send-event *camera* 'change-to-entity-by-name "camera-111") - (suspend) - (loop - (when (send-event *target* 'end-mode) - (send-event *camera* 'change-state *camera-base-mode* 0) - (process-entity-status! self (entity-perm-status bit-3) #f) - (go mistycannon-waiting-for-player-to-fuck-off) - ) + (sound-stop (-> self aim-sound-id))))) + (when (cpad-pressed? 0 triangle) + (process-entity-status! self (entity-perm-status bit-3) #t) + (sound-stop (-> self sound-id)) + (send-event *camera* 'change-to-entity-by-name "camera-111") (suspend) - ) - ) - (let ((v1-45 (and (cpad-hold? 0 x) (time-elapsed? (-> self state-time) (seconds 1))))) - (when (zero? s5-0) - (when v1-45 - (set! gp-0 (seekl gp-0 300 (the-as int (- (current-time) (-> *display* old-base-frame-counter))))) - (sound-play "cannon-charge" :id (-> self sound-id) :pitch (* 0.008 (the float gp-0))) - ) - (when (or (= gp-0 300) (and (not (cpad-hold? 0 x)) (nonzero? gp-0))) - (let ((gp-1 (+ 50 (the int (* 0.16666667 (the float gp-0)))))) - (level-hint-spawn (text-id sidekick-mistycannon) "sksp009f" (the-as entity #f) *entity-pool* (game-task none)) - (mistycannon-method-22 self (* 4096.0 (the float gp-1)) 2.0 40960.0) - ) - (set-time! (-> self state-time)) - (set! gp-0 0) - (set! s5-0 1) - (sound-stop (-> self sound-id)) - ) - (if (nonzero? gp-0) - (debug-percent-bar - #t - (bucket-id debug) - 192 - 160 - (* 0.0033333334 (the float gp-0)) - (new 'static 'rgba :r #xff :a #x80) - ) - ) - ) - ) - (if (not (cpad-hold? 0 x)) - (set! s5-0 0) - ) - (suspend) - ) - ) - ) - :post rider-post - ) + (loop + (when (send-event *target* 'end-mode) + (send-event *camera* 'change-state *camera-base-mode* 0) + (process-entity-status! self (entity-perm-status bit-3) #f) + (go mistycannon-waiting-for-player-to-fuck-off)) + (suspend))) + (let ((v1-45 (and (cpad-hold? 0 x) (time-elapsed? (-> self state-time) (seconds 1))))) + (when (zero? s5-0) + (when v1-45 + (set! gp-0 (seekl gp-0 300 (the-as int (- (current-time) (-> *display* old-base-frame-counter))))) + (sound-play "cannon-charge" :id (-> self sound-id) :pitch (* 0.008 (the float gp-0)))) + (when (or (= gp-0 300) (and (not (cpad-hold? 0 x)) (nonzero? gp-0))) + (let ((gp-1 (+ 50 (the int (* 0.16666667 (the float gp-0)))))) + (level-hint-spawn (text-id sidekick-mistycannon) "sksp009f" (the-as entity #f) *entity-pool* (game-task none)) + (mistycannon-method-22 self (* 4096.0 (the float gp-1)) 2.0 40960.0)) + (set-time! (-> self state-time)) + (set! gp-0 0) + (set! s5-0 1) + (sound-stop (-> self sound-id))) + (if (nonzero? gp-0) + (debug-percent-bar #t (bucket-id debug) 192 160 (* 0.0033333334 (the float gp-0)) (new 'static 'rgba :r #xff :a #x80))))) + (if (not (cpad-hold? 0 x)) (set! s5-0 0)) + (suspend)))) + :post rider-post) (defstate mistycannon-waiting-for-player-to-fuck-off (mistycannon) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self root) - (the-as uint 1) - ) - (let ((v0-0 (current-time))) - (set! (-> self state-time) v0-0) - v0-0 - ) - ) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self root) + (the-as uint 1)) + (let ((v0-0 (current-time))) (set! (-> self state-time) v0-0) v0-0))))) + :enter + (behavior () + (set-time! (-> self state-time))) :trans rider-trans - :code (behavior () - (loop - (suspend) - (mistycannon-method-23 self) - (if (time-elapsed? (-> self state-time) (seconds 1)) - (go mistycannon-waiting-for-player) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop + (suspend) + (mistycannon-method-23 self) + (if (time-elapsed? (-> self state-time) (seconds 1)) (go mistycannon-waiting-for-player)))) + :post rider-post) (defmethod init-from-entity! ((this mistycannon) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-32 res-tag) (sv-48 res-tag)) @@ -1630,9 +1231,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1648,21 +1247,17 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 20480.0 0.0 40960.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 28672.0 -8192.0 4096.0) - (append-prim s3-0 s2-1) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (quaternion-identity! (-> this root quat)) (initialize-skeleton this *mistycannon-sg* '()) @@ -1670,71 +1265,43 @@ (update-transforms! (-> this root)) (set! (-> this skel prebind-function) mistycannon-prebind-function) (set! (-> this skel postbind-function) mistycannon-postbind-function) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (logclear! (-> this mask) (process-mask actor-pause)) (let ((f30-0 (res-lump-float arg0 'rotmin :default 16384.0)) (f28-0 (res-lump-float arg0 'rotmax :default 32768.0)) - (f0-15 (res-lump-float arg0 'rotspeed :default 3640.889)) - ) - (angle-tracker-init-range! (-> this rotate) f30-0 f28-0 f0-15) - ) + (f0-15 (res-lump-float arg0 'rotspeed :default 3640.889))) + (angle-tracker-init-range! (-> this rotate) f30-0 f28-0 f0-15)) (let ((f30-1 (res-lump-float arg0 'tiltmin :default -1820.4445)) (f28-1 (res-lump-float arg0 'tiltmax :default 12743.111)) - (f0-16 (res-lump-float arg0 'tiltspeed :default 3640.889)) - ) - (angle-tracker-init-range! (-> this tilt) f30-1 f28-1 f0-16) - ) + (f0-16 (res-lump-float arg0 'tiltspeed :default 3640.889))) + (angle-tracker-init-range! (-> this tilt) f30-1 f28-1 f0-16)) (set! (-> this avoid-entity) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (set! (-> this center-point w) (res-lump-float arg0 'center-radius)) (cond ((= (-> this center-point w) 0.0) (set! (-> this center-point quad) (-> this root trans quad)) - (set! (-> this center-point w) (-> this fact idle-distance)) - ) + (set! (-> this center-point w) (-> this fact idle-distance))) (else - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-64 (res-lump-data arg0 'center-point pointer :tag-ptr (& sv-16)))) - (set! (-> this center-point x) (if (and v1-64 (< 0.0 (the float (-> sv-16 elt-count)))) - (-> (the-as (pointer float) v1-64)) - 0.0 - ) - ) - ) - (set! sv-32 (new 'static 'res-tag)) - (let ((v1-67 (res-lump-data arg0 'center-point (pointer float) :tag-ptr (& sv-32)))) - (set! (-> this center-point y) (if (and v1-67 (< 1.0 (the float (-> sv-32 elt-count)))) - (-> v1-67 1) - 0.0 - ) - ) - ) - (set! sv-48 (new 'static 'res-tag)) - (let ((v1-70 (res-lump-data arg0 'center-point (pointer float) :tag-ptr (& sv-48)))) - (set! (-> this center-point z) (if (and v1-70 (< 2.0 (the float (-> sv-48 elt-count)))) - (-> v1-70 2) - 0.0 - ) - ) - ) - ) - ) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-64 (res-lump-data arg0 'center-point pointer :tag-ptr (& sv-16)))) + (set! (-> this center-point x) + (if (and v1-64 (< 0.0 (the float (-> sv-16 elt-count)))) (-> (the-as (pointer float) v1-64)) 0.0))) + (set! sv-32 (new 'static 'res-tag)) + (let ((v1-67 (res-lump-data arg0 'center-point (pointer float) :tag-ptr (& sv-32)))) + (set! (-> this center-point y) (if (and v1-67 (< 1.0 (the float (-> sv-32 elt-count)))) (-> v1-67 1) 0.0))) + (set! sv-48 (new 'static 'res-tag)) + (let ((v1-70 (res-lump-data arg0 'center-point (pointer float) :tag-ptr (& sv-48)))) + (set! (-> this center-point z) (if (and v1-70 (< 2.0 (the float (-> sv-48 elt-count)))) (-> v1-70 2) 0.0))))) (set! (-> this accuracy-range) 16384.0) (mistycannon-pick-random-target-point) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 119) this)) (set! (-> this part-timer) (+ (current-time) (seconds -10))) (set! (-> this postbindinfo-ok) #f) (let ((v1-79 (-> this rotate))) - (set! (-> this last-known-rotation) - (the float (sar (shl (the int (+ (-> v1-79 min) (-> v1-79 value))) 48) 48)) - ) - ) + (set! (-> this last-known-rotation) (the float (sar (shl (the int (+ (-> v1-79 min) (-> v1-79 value))) 48) 48)))) (set! (-> this sound-id) (new-sound-id)) (set! (-> this aim-sound-id) (new-sound-id)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go mistycannon-idle) - (go mistycannon-waiting-for-player) - ) - (none) - ) + (go mistycannon-idle) + (go mistycannon-waiting-for-player)) + (none)) diff --git a/goal_src/jak1/levels/misty/mud.gc b/goal_src/jak1/levels/misty/mud.gc index e5459e56d7..c7f277c7fe 100644 --- a/goal_src/jak1/levels/misty/mud.gc +++ b/goal_src/jak1/levels/misty/mud.gc @@ -1,50 +1,46 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/water-anim.gc") -;; name: mud.gc -;; name in dgo: mud -;; dgos: L1, MIS - ;; DECOMP BEGINS -(deftype mud (water-anim) - () - ) - - -(define ripple-for-mud (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) - -(define ripple-for-small-mud (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 20.0 :xdiv 2 :speed 0.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv -2 :zdiv 2 :speed 0.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) +(deftype mud (water-anim) ()) + +(define ripple-for-mud + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) + +(define ripple-for-small-mud + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 20.0 :xdiv 2 :speed 0.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv -2 :zdiv 2 :speed 0.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this mud)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (logclear! (-> this flags) (water-flags wt23)) (logior! (-> this flags) (water-flags wt18)) (let ((gp-0 (new 'process 'ripple-control))) @@ -54,20 +50,9 @@ (let ((v1-9 (res-lump-data (-> this entity) 'water-anim-fade-dist (pointer float)))) (when v1-9 (set! (-> gp-0 close-fade-dist) (-> v1-9 0)) - (set! (-> gp-0 far-fade-dist) (-> v1-9 1)) - ) - ) + (set! (-> gp-0 far-fade-dist) (-> v1-9 1)))) (case (-> this look) - ((21 25 29) - (set! (-> gp-0 close-fade-dist) 4096000000.0) - (set! (-> gp-0 far-fade-dist) 8192000000.0) - ) - ) + ((21 25 29) (set! (-> gp-0 close-fade-dist) 4096000000.0) (set! (-> gp-0 far-fade-dist) 8192000000.0))) (case (-> this look) - ((22 25 24 27 26 31) - (set! (-> gp-0 waveform) ripple-for-small-mud) - ) - ) - ) - (none) - ) + ((22 25 24 27 26 31) (set! (-> gp-0 waveform) ripple-for-small-mud)))) + (none)) diff --git a/goal_src/jak1/levels/misty/muse.gc b/goal_src/jak1/levels/misty/muse.gc index a32617ad5c..71920c96d4 100644 --- a/goal_src/jak1/levels/misty/muse.gc +++ b/goal_src/jak1/levels/misty/muse.gc @@ -1,46 +1,34 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: muse.gc -;; name in dgo: muse -;; dgos: L1, MIS - ;; DECOMP BEGINS (deftype muse (nav-enemy) - ((root collide-shape-moving :override) - (current-path-index float) - (prev-path-index float) - (dest-path-index float) - (player-path-index float) - (max-path-index float) - (sprint-distance float) - (dest-point vector :inline) - (anim spool-anim) - (victory-anim spool-anim) - (old-target-pos transformq :inline) - ) + ((root collide-shape-moving :override) + (current-path-index float) + (prev-path-index float) + (dest-path-index float) + (player-path-index float) + (max-path-index float) + (sprint-distance float) + (dest-point vector :inline) + (anim spool-anim) + (victory-anim spool-anim) + (old-target-pos transformq :inline)) (:states - muse-caught - muse-idle - ) - ) - + muse-caught + muse-idle)) (deftype point-on-path-segment-info (structure) - ((point vector :inline) - (segment vector 2 :inline) - (dir vector :inline) - (nearest-point vector :inline) - (segment-length float) - (distance-to-segment float) - (parametric-index float) - ) - ) - + ((point vector :inline) + (segment vector 2 :inline) + (dir vector :inline) + (nearest-point vector :inline) + (segment-length float) + (distance-to-segment float) + (parametric-index float))) (defun analyze-point-on-path-segment ((arg0 point-on-path-segment-info)) (vector-! (-> arg0 dir) (-> arg0 segment 1) (the-as vector (-> arg0 segment))) @@ -52,395 +40,311 @@ (vector+! (-> arg0 nearest-point) (-> arg0 point) s5-0) (set! (-> arg0 distance-to-segment) (vector-length s5-0)) (vector-! s5-0 (-> arg0 point) (the-as vector (-> arg0 segment))) - (set! (-> arg0 parametric-index) (/ (vector-dot (-> arg0 dir) s5-0) (-> arg0 segment-length))) - ) + (set! (-> arg0 parametric-index) (/ (vector-dot (-> arg0 dir) s5-0) (-> arg0 segment-length)))) (cond ((< (-> arg0 parametric-index) 0.0) (set! (-> arg0 parametric-index) 0.0) (set! (-> arg0 nearest-point quad) (-> arg0 segment 0 quad)) - (set! (-> arg0 distance-to-segment) (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point))) - ) + (set! (-> arg0 distance-to-segment) (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point)))) ((< 1.0 (-> arg0 parametric-index)) (set! (-> arg0 parametric-index) 1.0) (set! (-> arg0 nearest-point quad) (-> arg0 segment 1 quad)) - (set! (-> arg0 distance-to-segment) (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point))) - ) - ) - ) + (set! (-> arg0 distance-to-segment) (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point)))))) (defbehavior muse-get-path-point muse ((arg0 vector) (arg1 int)) (eval-path-curve-div! (-> self path) arg0 (the float arg1) 'interp) 0 - (none) - ) + (none)) (defbehavior muse-check-dest-point muse () (let ((gp-0 (new 'stack-no-clear 'point-on-path-segment-info)) (f26-0 4096000.0) (f30-0 0.0) (f24-0 4096000.0) - (f28-0 0.0) - ) + (f28-0 0.0)) (let ((s5-0 (+ (-> self path curve num-cverts) -1)) - (s4-0 (target-pos 0)) - ) + (s4-0 (target-pos 0))) (dotimes (s3-0 s5-0) (let ((f22-0 (the float s3-0))) (let ((f20-0 (the float (+ s3-0 1)))) (eval-path-curve-div! (-> self path) (the-as vector (-> gp-0 segment)) f22-0 'interp) - (eval-path-curve-div! (-> self path) (-> gp-0 segment 1) f20-0 'interp) - ) + (eval-path-curve-div! (-> self path) (-> gp-0 segment 1) f20-0 'interp)) (set! (-> gp-0 point quad) (-> s4-0 quad)) (analyze-point-on-path-segment gp-0) (when (< (-> gp-0 distance-to-segment) f24-0) (set! f24-0 (-> gp-0 distance-to-segment)) - (set! f28-0 (+ f22-0 (-> gp-0 parametric-index))) - ) + (set! f28-0 (+ f22-0 (-> gp-0 parametric-index)))) (set! (-> gp-0 point quad) (-> self collide-info trans quad)) (analyze-point-on-path-segment gp-0) (when (< (-> gp-0 distance-to-segment) f26-0) (set! f26-0 (-> gp-0 distance-to-segment)) - (set! f30-0 (+ f22-0 (-> gp-0 parametric-index))) - ) - ) - 0 - ) - ) + (set! f30-0 (+ f22-0 (-> gp-0 parametric-index))))) + 0)) (let ((f0-6 (- f30-0 f28-0))) - (if (< f0-6 (* -0.5 (-> self max-path-index))) - (+! f0-6 (-> self max-path-index)) - ) - (if (< (* 0.5 (-> self max-path-index)) f0-6) - (set! f0-6 (- f0-6 (-> self max-path-index))) - ) + (if (< f0-6 (* -0.5 (-> self max-path-index))) (+! f0-6 (-> self max-path-index))) + (if (< (* 0.5 (-> self max-path-index)) f0-6) (set! f0-6 (- f0-6 (-> self max-path-index)))) (cond ((>= f0-6 0.0) (set! (-> self dest-path-index) (the float (the int (+ 2.5 f30-0)))) (if (>= (-> self dest-path-index) (-> self max-path-index)) - (set! (-> self dest-path-index) (- (-> self dest-path-index) (-> self max-path-index))) - ) - ) + (set! (-> self dest-path-index) (- (-> self dest-path-index) (-> self max-path-index))))) (else - (set! (-> self dest-path-index) (+ -1.5 f30-0)) - (if (< (-> self dest-path-index) 0.0) - (+! (-> self dest-path-index) (-> self max-path-index)) - ) - (set! (-> self dest-path-index) (the float (the int (-> self dest-path-index)))) - ) - ) - ) - ) + (set! (-> self dest-path-index) (+ -1.5 f30-0)) + (if (< (-> self dest-path-index) 0.0) (+! (-> self dest-path-index) (-> self max-path-index))) + (set! (-> self dest-path-index) (the float (the int (-> self dest-path-index)))))))) (eval-path-curve-div! (-> self path) (-> self dest-point) (-> self dest-path-index) 'interp) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-51 ((this muse)) (dotimes (s5-0 2) (let ((v1-2 (rand-vu-int-range 3 (+ (-> this node-list length) -1)))) - (launch-particles - (-> *part-id-table* 271) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data v1-2)) - ) - ) - ) + (launch-particles (-> *part-id-table* 271) (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data v1-2))))) 0 - (none) - ) + (none)) (defmethod common-post ((this muse)) (spool-push *art-control* (-> this anim name) 0 this -99.0) (nav-enemy-method-51 this) ((method-of-type nav-enemy common-post) this) - (none) - ) + (none)) -(defskelgroup *muse-sg* muse muse-lod0-jg muse-idle-ja - ((muse-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 3) - :shadow muse-shadow-mg - ) +(defskelgroup *muse-sg* + muse + muse-lod0-jg + muse-idle-ja + ((muse-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 3) + :shadow muse-shadow-mg) (defmethod touch-handler ((this muse) (arg0 process) (arg1 event-message-block)) - (go muse-caught) - ) + (go muse-caught)) (defmethod attack-handler ((this muse) (arg0 process) (arg1 event-message-block)) - (go muse-caught) - ) + (go muse-caught)) nav-enemy-default-event-handler (defstate muse-idle (muse) :event nav-enemy-default-event-handler - :trans (behavior () - (seek! (-> self sprint-distance) 61440.0 (* 8192.0 (seconds-per-frame))) - (if (and *target* (>= 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) - ) - (if (and *target* (>= 81920.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (go-virtual nav-enemy-chase) - ) - ) - :code (behavior () - (when (ja-group? muse-run-ja) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :num! (loop!)) - (ja-no-eval :group! muse-run-to-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - (loop - (ja-no-eval :group! muse-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spool-push *art-control* (-> self anim name) 0 self -99.0) - (nav-enemy-method-51 self) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :trans + (behavior () + (seek! (-> self sprint-distance) 61440.0 (* 8192.0 (seconds-per-frame))) + (if (and *target* (>= 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none))) + (if (and *target* (>= 81920.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-chase))) + :code + (behavior () + (when (ja-group? muse-run-ja) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :num! (loop!)) + (ja-no-eval :group! muse-run-to-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!)))) + (loop + (ja-no-eval :group! muse-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spool-push *art-control* (-> self anim name) 0 self -99.0) + (nav-enemy-method-51 self) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate nav-enemy-chase (muse) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (cond - ((or (not *target*) - (< 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) - (set! (-> self target-speed) 0.0) - (if (= (-> self momentum-speed) 0.0) - (go muse-idle) - ) - ) - ((or (not *target*) (< (-> self sprint-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (set! (-> self target-speed) 40960.0) - ) - (else - (set! (-> self target-speed) 61440.0) - ) - ) - (seek! (-> self sprint-distance) 0.0 (* 4096.0 (seconds-per-frame))) - (muse-check-dest-point) - ) - :code (behavior () - (cond - ((ja-group? muse-idle-ja) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :num! (loop!)) - (ja-no-eval :group! muse-idle-to-run-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - (ja :group! muse-run-ja :num! min) - (loop - (suspend) - (ja :num! (loop! (* 0.000016276043 (-> self momentum-speed)))) - ) - ) - :post (behavior () - (set! (-> self nav destination-pos quad) (-> self dest-point quad)) - (nav-control-method-19 - (-> self nav) - (-> self nav target-pos) - (-> self collide-info) - (-> self nav destination-pos) - 546133.3 - ) - (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) - (logclear! (-> self nav flags) (nav-control-flags navcf10)) - ) - (nav-enemy-travel-post) - ) - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (cond + ((or (not *target*) (< 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (set! (-> self target-speed) 0.0) + (if (= (-> self momentum-speed) 0.0) (go muse-idle))) + ((or (not *target*) + (< (-> self sprint-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (set! (-> self target-speed) 40960.0)) + (else (set! (-> self target-speed) 61440.0))) + (seek! (-> self sprint-distance) 0.0 (* 4096.0 (seconds-per-frame))) + (muse-check-dest-point)) + :code + (behavior () + (cond + ((ja-group? muse-idle-ja) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :num! (loop!)) + (ja-no-eval :group! muse-idle-to-run-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!)))) + (else (ja-channel-push! 1 (seconds 0.1)))) + (ja :group! muse-run-ja :num! min) + (loop + (suspend) + (ja :num! (loop! (* 0.000016276043 (-> self momentum-speed)))))) + :post + (behavior () + (set! (-> self nav destination-pos quad) (-> self dest-point quad)) + (nav-control-method-19 (-> self nav) + (-> self nav target-pos) + (-> self collide-info) + (-> self nav destination-pos) + 546133.3) + (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) (logclear! (-> self nav flags) (nav-control-flags navcf10))) + (nav-enemy-travel-post))) (defstate nav-enemy-jump (muse) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - ((-> (method-of-type nav-enemy nav-enemy-jump) enter)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)) - ) - :code (-> (method-of-type nav-enemy nav-enemy-jump) code) - ) + :enter + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-jump) enter)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump))) + :code + (-> (method-of-type nav-enemy nav-enemy-jump) + code)) (defstate nav-enemy-jump-land (muse) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! muse-run-ja :num! (seek! max 0.8) :frame-num (ja-aframe 6.0 0)) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! max 0.8)) - ) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! muse-run-ja :num! (seek! max 0.8) :frame-num (ja-aframe 6.0 0)) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max 0.8))) + (go-virtual nav-enemy-chase))) (defstate muse-caught (muse) :event #f - :trans (behavior () - (spool-push *art-control* (-> self anim name) 0 self -1.0) - ) - :code (behavior () - (sound-play "money-pickup") - (close-specific-task! (game-task misty-muse) (task-status need-reminder)) - (process-entity-status! self (entity-perm-status dead) #t) - (suspend) - (when (send-event *target* 'clone-anim self) - (set-blackout-frames (seconds 10)) - (let ((gp-1 (res-lump-struct (-> self entity) 'movie-pos vector))) + :trans + (behavior () + (spool-push *art-control* (-> self anim name) 0 self -1.0)) + :code + (behavior () + (sound-play "money-pickup") + (close-specific-task! (game-task misty-muse) (task-status need-reminder)) + (process-entity-status! self (entity-perm-status dead) #t) + (suspend) + (when (send-event *target* 'clone-anim self) + (set-blackout-frames (seconds 10)) + (let ((gp-1 (res-lump-struct (-> self entity) 'movie-pos vector))) + (cond + (gp-1 (move-to-point! (-> self collide-info) gp-1) (set-yaw-angle-clear-roll-pitch! (-> self collide-info) (-> gp-1 w))) + (else + (move-to-point! (-> self collide-info) (-> *target* control trans)) + (quaternion-copy! (-> self collide-info quat) (-> *target* control quat)) + (move-to-ground (-> self collide-info) 40960.0 40960.0 #f (collide-kind background))))) + (send-event *target* 'trans 'save (-> self old-target-pos)) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (if (!= *kernel-boot-message* 'play) + (set! (-> self trans-hook) + (lambda :behavior muse () + (spool-push *art-control* (-> self victory-anim name) 0 self -1.0) + (none)))) + (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) + (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) + (add-setting! 'ambient-volume 'rel (-> *setting-control* current ambient-volume-movie) 0) + (logclear! (-> self mask) (process-mask enemy)) + (process-spawn othercam self 3 #f #t :to self) + (auto-save-command 'auto-save 0 0 *default-pool*) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim muse-idle-ja) + (the-as art-joint-anim muse-idle-ja) + (the-as (function process-drawable symbol) false-func)) + (remove-setting! 'music-volume) + (remove-setting! 'sfx-volume) + (remove-setting! 'ambient-volume) + (send-event *target* 'blend-shape #f) (cond - (gp-1 - (move-to-point! (-> self collide-info) gp-1) - (set-yaw-angle-clear-roll-pitch! (-> self collide-info) (-> gp-1 w)) - ) + ((!= *kernel-boot-message* 'play) + (set-blackout-frames 0) + (ja-channel-set! 0) + (ja-post) + (clear-collide-with-as (-> self collide-info)) + (send-event *target* 'trans 'reset) + (let ((gp-4 (ppointer->handle (birth-pickup-at-point (target-pos 0) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f))))) + (send-event (handle->process (the-as handle gp-4)) 'pickup) + (while (handle->process (the-as handle gp-4)) + (suspend)))) (else - (move-to-point! (-> self collide-info) (-> *target* control trans)) - (quaternion-copy! (-> self collide-info quat) (-> *target* control quat)) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #f (collide-kind background)) - ) - ) - ) - (send-event *target* 'trans 'save (-> self old-target-pos)) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (if (!= *kernel-boot-message* 'play) - (set! (-> self trans-hook) - (lambda :behavior muse () (spool-push *art-control* (-> self victory-anim name) 0 self -1.0) (none)) - ) - ) - (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) - (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) - (add-setting! 'ambient-volume 'rel (-> *setting-control* current ambient-volume-movie) 0) - (logclear! (-> self mask) (process-mask enemy)) - (process-spawn othercam self 3 #f #t :to self) - (auto-save-command 'auto-save 0 0 *default-pool*) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim muse-idle-ja) - (the-as art-joint-anim muse-idle-ja) - (the-as (function process-drawable symbol) false-func) - ) - (remove-setting! 'music-volume) - (remove-setting! 'sfx-volume) - (remove-setting! 'ambient-volume) - (send-event *target* 'blend-shape #f) - (cond - ((!= *kernel-boot-message* 'play) - (set-blackout-frames 0) - (ja-channel-set! 0) - (ja-post) - (clear-collide-with-as (-> self collide-info)) - (send-event *target* 'trans 'reset) - (let ((gp-4 (ppointer->handle (birth-pickup-at-point - (target-pos 0) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - ) - ) - (send-event (handle->process (the-as handle gp-4)) 'pickup) - (while (handle->process (the-as handle gp-4)) - (suspend) - ) - ) - ) - (else - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (set-blackout-frames 0) - (set-blackout-frames (seconds 0.1)) - ) - ) - ) - ) - :post (behavior () - (nav-enemy-method-51 self) - (level-hint-surpress!) - (kill-current-level-hint '() '() 'exit) - (ja-post) - ) - ) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (set-blackout-frames 0) + (set-blackout-frames (seconds 0.1)))))) + :post + (behavior () + (nav-enemy-method-51 self) + (level-hint-surpress!) + (kill-current-level-hint '() '() 'exit) + (ja-post))) -(define *muse-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 3 - :walk-anim 4 - :turn-anim -1 - :notice-anim 3 - :run-anim 4 - :jump-anim 7 - :jump-land-anim 8 - :victory-anim 3 - :taunt-anim 3 - :die-anim 3 - :neck-joint 6 - :player-look-at-joint 5 - :run-travel-speed (meters 10) - :run-rotate-speed (degrees 999.99994) - :run-acceleration (meters 5) - :run-turn-time (seconds 0.15) - :walk-travel-speed (meters 10) - :walk-rotate-speed (degrees 999.99994) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.15) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-anim-start-frame 6.5 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *muse-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 3 + :walk-anim 4 + :turn-anim -1 + :notice-anim 3 + :run-anim 4 + :jump-anim 7 + :jump-land-anim 8 + :victory-anim 3 + :taunt-anim 3 + :die-anim 3 + :neck-joint 6 + :player-look-at-joint 5 + :run-travel-speed (meters 10) + :run-rotate-speed (degrees 999.99994) + :run-acceleration (meters 5) + :run-turn-time (seconds 0.15) + :walk-travel-speed (meters 10) + :walk-rotate-speed (degrees 999.99994) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.15) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-anim-start-frame 6.5 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this muse) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -448,21 +352,17 @@ nav-enemy-default-event-handler (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 2457.6) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *muse-sg* '()) (logclear! (-> this mask) (process-mask actor-pause)) @@ -481,14 +381,8 @@ nav-enemy-default-event-handler (set! (-> this neck ear) (the-as uint 2)) (set! (-> this neck max-dist) 102400.0) (set! (-> this neck ignore-angle) 16384.0) - (set! (-> this anim) (new 'static 'spool-anim - :name "muse-victory" - :index 9 - :parts 2 - :command-list '((1 blackout 0) (219 blackout 60)) - ) - ) + (set! (-> this anim) + (new 'static 'spool-anim :name "muse-victory" :index 9 :parts 2 :command-list '((1 blackout 0) (219 blackout 60)))) (set! (-> this victory-anim) (fuel-cell-pick-anim this)) (go muse-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/quicksandlurker.gc b/goal_src/jak1/levels/misty/quicksandlurker.gc index 1f7fb0331d..9cb60eee90 100644 --- a/goal_src/jak1/levels/misty/quicksandlurker.gc +++ b/goal_src/jak1/levels/misty/quicksandlurker.gc @@ -1,849 +1,679 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/water-anim.gc") (require "engine/common-obs/nav-enemy.gc") -;; name: quicksandlurker.gc -;; name in dgo: quicksandlurker -;; dgos: L1, MIS - ;; DECOMP BEGINS (defpartgroup group-quicksandlurker-missile :id 198 :bounds (static-bspherem 0 0 0 3) - :parts ((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)) - ) - ) + :parts + ((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)))) (defpart 2481 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3)) + (:func 'sparticle-track-root-prim))) (defpart 2479 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b 0.0) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:next-time (seconds 0.27)) - (:next-launcher 2482) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -1.0666667) + (:fade-b 0.0) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:next-time (seconds 0.27)) + (:next-launcher 2482) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.1)))) (defpart 2482 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 2480 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 5.0) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b 0.0) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 2482) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 5.0) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -1.0666667) + (:fade-b 0.0) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 2482) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpartgroup group-quicksandlurker-pre-missile :id 199 :duration (seconds 0.017) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 2483)) - ) + :parts ((sp-item 2483))) (defpart 2483 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.7111111) - (:fade-g -0.7111111) - (:fade-b 0.0) - (:accel-y (meters -0.00016666666)) - (:friction 0.85 0.05) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.3)) - (:next-launcher 2482) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.7111111) + (:fade-g -0.7111111) + (:fade-b 0.0) + (:accel-y (meters -0.00016666666)) + (:friction 0.85 0.05) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.3)) + (:next-launcher 2482) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpartgroup group-quicksandlurker-missile-impact :id 200 :duration (seconds 0.035) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 2484) (sp-item 2485) (sp-item 2486)) - ) + :parts ((sp-item 2484) (sp-item 2485) (sp-item 2486))) (defpart 2484 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 64.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.10666667) (meters 0.10666667)) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.7111111) - (:fade-g -0.7111111) - (:fade-b 0.0) - (:accel-y (meters -0.00016666666)) - (:friction 0.85 0.05) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.3)) - (:next-launcher 2482) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 64.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.10666667) (meters 0.10666667)) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.7111111) + (:fade-g -0.7111111) + (:fade-b 0.0) + (:accel-y (meters -0.00016666666)) + (:friction 0.85 0.05) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.3)) + (:next-launcher 2482) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpart 2486 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 32.0 32.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-r -0.35555556) - (:fade-g -0.35555556) - (:fade-b 0.0) - (:fade-a -0.30476192) - (:accel-y (meters -0.00016666666) (meters 0.00016666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 2482) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 32.0 32.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-r -0.35555556) + (:fade-g -0.35555556) + (:fade-b 0.0) + (:fade-a -0.30476192) + (:accel-y (meters -0.00016666666) (meters 0.00016666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 2482) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 2485 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 128.0 32.0) - (:a 96.0) - (:fade-a -4.8) - (:timer (seconds 0.05)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 128.0 32.0) + (:a 96.0) + (:fade-a -4.8) + (:timer (seconds 0.05)) + (:flags (bit2)))) (defpartgroup group-quicksandlurker-hide :id 201 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) - (sp-item 125 :period (seconds 3) :length (seconds 0.05)) - (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - ) - ) + :parts + ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) + (sp-item 125 :period (seconds 3) :length (seconds 0.05)) + (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)))) (defpartgroup group-quicksandlurker-popup :id 202 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) - (sp-item 125 :period (seconds 3) :length (seconds 0.05)) - (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - ) - ) + :parts + ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) + (sp-item 125 :period (seconds 3) :length (seconds 0.05)) + (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)))) (deftype quicksandlurker-missile (process-drawable) - ((root collide-shape-moving :override) - ) + ((root collide-shape-moving :override)) (:states - quicksandlurker-missile-idle - quicksandlurker-missile-impact - ) - ) - + quicksandlurker-missile-idle + quicksandlurker-missile-impact)) (defstate quicksandlurker-missile-idle (quicksandlurker-missile) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (when (cond - ((= (-> proc type) target) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode)))) - ) - (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) (-> block 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 proc a1-4) - ) - ) - ) - (send-event (ppointer->process (-> self parent)) 'victory) - (go quicksandlurker-missile-impact) - ) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :code (behavior () - (while (not (time-elapsed? (-> self state-time) (seconds 4))) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) - (if (or (logtest? (-> self root status) (cshape-moving-flags twall)) - (< (vector-vector-distance (-> self root trans) (the-as vector (-> self root trans-old))) 40.96) - ) - (go quicksandlurker-missile-impact) - ) - (spawn (-> self part) (-> self root trans)) - (find-ground-and-draw-shadow - (-> self root trans) - (the-as vector #f) - 8192.0 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - (suspend) - ) - (cleanup-for-death self) - ) - :post (behavior () - (update-transforms! (-> self root)) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (when (cond + ((= (-> proc type) target) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode))))) + (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) (-> block 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 proc a1-4)))) + (send-event (ppointer->process (-> self parent)) 'victory) + (go quicksandlurker-missile-impact))))) + :enter + (behavior () + (set-time! (-> self state-time))) + :code + (behavior () + (while (not (time-elapsed? (-> self state-time) (seconds 4))) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) + (if (or (logtest? (-> self root status) (cshape-moving-flags twall)) + (< (vector-vector-distance (-> self root trans) (the-as vector (-> self root trans-old))) 40.96)) + (go quicksandlurker-missile-impact)) + (spawn (-> self part) (-> self root trans)) + (find-ground-and-draw-shadow (-> self root trans) + (the-as vector #f) + 8192.0 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0) + (suspend)) + (cleanup-for-death self)) + :post + (behavior () + (update-transforms! (-> self root)))) (defstate quicksandlurker-missile-impact (quicksandlurker-missile) - :code (behavior () - (sound-play "sack-land" :position (the-as symbol (-> self root trans))) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 200) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (suspend) - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (sound-play "sack-land" :position (the-as symbol (-> self root trans))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 200) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend)) + (cleanup-for-death self))) (deftype quicksandlurker-missile-init-data (structure) - ((position vector) - (velocity vector) - ) - ) - + ((position vector) + (velocity vector))) (defbehavior quicksandlurker-missile-init-by-other quicksandlurker-missile ((arg0 quicksandlurker-missile-init-data) (arg1 entity-actor)) (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) - (set! (-> s4-0 collide-with) - (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) - ) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) - (set-root-prim! s5-0 s4-0) - ) + (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) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 position quad)) (set! (-> self root quat vec quad) (-> (the-as process-drawable (-> self parent 0)) root quat vec quad)) (vector-identity! (-> self root scale)) (set! (-> self root transv quad) (-> arg0 velocity quad)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 198) self)) (go quicksandlurker-missile-idle) - (none) - ) + (none)) (defun spawn-quicksandlurker-missile ((arg0 process) (arg1 vector) (arg2 vector) (arg3 entity-actor)) (let ((s5-0 (new 'stack-no-clear 'quicksandlurker-missile-init-data))) (set! (-> s5-0 position) arg1) (set! (-> s5-0 velocity) arg2) - (process-spawn quicksandlurker-missile s5-0 arg3 :to arg0) - ) + (process-spawn quicksandlurker-missile s5-0 arg3 :to arg0)) 0 - (none) - ) + (none)) (deftype quicksandlurker (process-drawable) - ((root collide-shape :override) - (original-position vector :inline) - (y-offset float) - (theta-angle float) - (radial-offset float) - (bob-angle float) - (mud-entity entity-actor) - ) + ((root collide-shape :override) + (original-position vector :inline) + (y-offset float) + (theta-angle float) + (radial-offset float) + (bob-angle float) + (mud-entity entity-actor)) (:states - quicksandlurker-attack - quicksandlurker-die - quicksandlurker-hide - quicksandlurker-idle - quicksandlurker-popup - quicksandlurker-track - quicksandlurker-victory - quicksandlurker-wait - quicksandlurker-yawn - ) - ) - - -(defskelgroup *quicksandlurker-sg* quicksandlurker quicksandlurker-lod0-jg quicksandlurker-idle-ja - ((quicksandlurker-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) + quicksandlurker-attack + quicksandlurker-die + quicksandlurker-hide + quicksandlurker-idle + quicksandlurker-popup + quicksandlurker-track + quicksandlurker-victory + quicksandlurker-wait + quicksandlurker-yawn)) + +(defskelgroup *quicksandlurker-sg* + quicksandlurker + quicksandlurker-lod0-jg + quicksandlurker-idle-ja + ((quicksandlurker-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defbehavior orient-to-face-target quicksandlurker () - (if *target* - (seek-to-point-toward-point! (-> self root) (-> *target* control trans) 65536.0 (seconds 0.2)) - ) - ) + (if *target* (seek-to-point-toward-point! (-> self root) (-> *target* control trans) 65536.0 (seconds 0.2)))) ;; ERROR: function has no type analysis. Cannot decompile. (defun intersects-nav-mesh? ((arg0 nav-control) (arg1 vector)) - (if (nav-control-method-16 arg0 arg1) - #t - ) - ) + (if (nav-control-method-16 arg0 arg1) #t)) (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) - ) - ) - ) + (('attack) enter-state (go quicksandlurker-die)) + (('victory) (go quicksandlurker-victory)))) (defun inc-angle ((arg0 (pointer float)) (arg1 float)) (+! (-> arg0 0) arg1) - (if (< 65536.0 (-> arg0 0)) - (set! (-> arg0 0) (+ -65536.0 (-> arg0 0))) - ) - ) + (if (< 65536.0 (-> arg0 0)) (set! (-> arg0 0) (+ -65536.0 (-> arg0 0))))) (defbehavior quicksandlurker-post quicksandlurker () (inc-angle (&-> self theta-angle) (* 9102.223 (seconds-per-frame))) (inc-angle (&-> self bob-angle) (* 14563.556 (seconds-per-frame))) (let ((f28-0 (* (-> self radial-offset) (cos (-> self theta-angle)))) - (f30-2 (* 0.0 (sin (-> self theta-angle)))) - ) + (f30-2 (* 0.0 (sin (-> self theta-angle))))) (let ((f0-10 (* (-> self radial-offset) (sin (-> self theta-angle))))) (set! (-> self root trans x) (+ (-> self original-position x) f28-0)) - (set! (-> self root trans z) (+ (-> self original-position z) f0-10)) - ) + (set! (-> self root trans z) (+ (-> self original-position z) f0-10))) (let* ((v1-4 (-> self mud-entity)) - (a0-5 (if v1-4 - (-> v1-4 extra process) - ) - ) - ) + (a0-5 (if v1-4 (-> v1-4 extra process)))) (if a0-5 - (set! (-> self root trans y) - (+ (get-ripple-height (the-as water-anim a0-5) (-> self root trans)) f30-2 (-> self y-offset)) - ) - (set! (-> self root trans y) (+ (-> self original-position y) f30-2 (-> self y-offset))) - ) - ) - ) + (set! (-> self root trans y) + (+ (get-ripple-height (the-as water-anim a0-5) (-> self root trans)) f30-2 (-> self y-offset))) + (set! (-> self root trans y) (+ (-> self original-position y) f30-2 (-> self y-offset)))))) (transform-post) - (none) - ) + (none)) (defbehavior quicksandlurker-check-hide-transition quicksandlurker () (when *target* (if (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (!= (-> *target* next-state name) 'target-flop) - ) - (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 (nav-control-method-16 a0-2 a1-1) - #t - ) - (if (< (- (-> *target* control trans y) (-> self original-position y)) 0.0) - (go quicksandlurker-hide) - ) - ) - ) - ) - (none) - ) + (a1-1 (-> *target* control trans))) + (when (if (nav-control-method-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 #f - :enter (behavior () - (logior! (-> self draw status) (draw-status hidden)) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (go quicksandlurker-wait) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (logior! (-> self draw status) (draw-status hidden))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go quicksandlurker-wait))) + :code + (behavior () + (loop + (suspend))) + :post ja-post) (defstate quicksandlurker-wait (quicksandlurker) :event quicksandlurker-default-event-handler - :trans (behavior () - (cond - ((and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (set! (-> self y-offset) 1228.8) - (go quicksandlurker-track) - ) - ((or (not *target*) (< 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (seek! (-> self y-offset) -6553.6 (* 20480.0 (seconds-per-frame))) - (if (= (-> self y-offset) -6553.6) - (go quicksandlurker-idle) - ) - ) - (else - (seek! (-> self y-offset) 1228.8 (* 20480.0 (seconds-per-frame))) - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (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 (seconds 0.1)) - (loop - (when (time-elapsed? (-> self state-time) gp-0) - (ja-no-eval :group! quicksandlurker-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self state-time)) - (+! s4-0 1) - (when (< s5-0 s4-0) - (set! s4-0 0) - (ja-no-eval :group! quicksandlurker-yawn-ja :num! (seek!) :frame-num 0.0) + :trans + (behavior () + (cond + ((and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (set! (-> self y-offset) 1228.8) + (go quicksandlurker-track)) + ((or (not *target*) (< 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (seek! (-> self y-offset) -6553.6 (* 20480.0 (seconds-per-frame))) + (if (= (-> self y-offset) -6553.6) (go quicksandlurker-idle))) + (else (seek! (-> self y-offset) 1228.8 (* 20480.0 (seconds-per-frame)))))) + :code + (behavior () + (set-time! (-> self state-time)) + (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 (seconds 0.1)) + (loop + (when (time-elapsed? (-> self state-time) gp-0) + (ja-no-eval :group! quicksandlurker-idle-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (orient-to-face-target) - (ja :group! quicksandlurker-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - ) - ) - :post quicksandlurker-post - ) + (ja :num! (seek!))) + (set-time! (-> self state-time)) + (+! s4-0 1) + (when (< s5-0 s4-0) + (set! s4-0 0) + (ja-no-eval :group! quicksandlurker-yawn-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (orient-to-face-target) + (ja :group! quicksandlurker-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)))) + :post quicksandlurker-post) (defstate quicksandlurker-yawn (quicksandlurker) :event quicksandlurker-default-event-handler - :code (behavior () - (ja-no-eval :group! quicksandlurker-yawn-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go quicksandlurker-wait) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (ja-no-eval :group! quicksandlurker-yawn-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go quicksandlurker-wait)) + :post quicksandlurker-post) (defstate quicksandlurker-track (quicksandlurker) :event quicksandlurker-default-event-handler - :trans (behavior () - (if (or (not *target*) (< 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (go quicksandlurker-wait) - ) - (quicksandlurker-check-hide-transition) - ) - :code (behavior () - (set-time! (-> self state-time)) - (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 0.8 1.2)))) - (s5-0 1) - (s4-0 0) - ) - (loop - (when (time-elapsed? (-> self state-time) gp-0) - (ja-no-eval :group! quicksandlurker-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self state-time)) - (+! s4-0 1) - (when (>= s4-0 s5-0) - (if (logtest? (-> self draw status) (draw-status was-drawn)) - (go quicksandlurker-attack) - ) - ) - ) - (orient-to-face-target) - (ja :group! quicksandlurker-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - ) - ) - :post quicksandlurker-post - ) + :trans + (behavior () + (if (or (not *target*) (< 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go quicksandlurker-wait)) + (quicksandlurker-check-hide-transition)) + :code + (behavior () + (set-time! (-> self state-time)) + (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 0.8 1.2)))) + (s5-0 1) + (s4-0 0)) + (loop + (when (time-elapsed? (-> self state-time) gp-0) + (ja-no-eval :group! quicksandlurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self state-time)) + (+! s4-0 1) + (when (>= s4-0 s5-0) + (if (logtest? (-> self draw status) (draw-status was-drawn)) (go quicksandlurker-attack)))) + (orient-to-face-target) + (ja :group! quicksandlurker-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)))) + :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) (joint-node quicksandlurker-lod0-jg jawEND)) quad) - ) + (-> (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node quicksandlurker-lod0-jg jawEND)) 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))) - ) + (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)) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 199) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - ) + (spawn-quicksandlurker-missile self gp-0 s5-0 (-> self entity))) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 199) -1 #f #f #f gp-0 :to *entity-pool*))) (defstate quicksandlurker-attack (quicksandlurker) :event quicksandlurker-default-event-handler :trans quicksandlurker-check-hide-transition - :code (behavior () - (let ((gp-0 #f) - (f30-0 51.0) - ) - (ja-no-eval :group! quicksandlurker-spit-ja :num! (seek!) :frame-num 0.0) - (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) - (ja :num! (seek!)) - ) - ) - (go quicksandlurker-track) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (let ((gp-0 #f) + (f30-0 51.0)) + (ja-no-eval :group! quicksandlurker-spit-ja :num! (seek!) :frame-num 0.0) + (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) + (ja :num! (seek!)))) + (go quicksandlurker-track)) + :post quicksandlurker-post) (defstate quicksandlurker-victory (quicksandlurker) :event quicksandlurker-default-event-handler :trans quicksandlurker-check-hide-transition - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (cond - ((rand-vu-percent? 0.5) - (ja-no-eval :group! quicksandlurker-victory-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! quicksandlurker-victory2-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go quicksandlurker-track) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (cond + ((rand-vu-percent? 0.5) + (ja-no-eval :group! quicksandlurker-victory-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! quicksandlurker-victory2-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go quicksandlurker-track)) + :post quicksandlurker-post) (defstate quicksandlurker-hide (quicksandlurker) :event quicksandlurker-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :exit (behavior () - (restore-collide-with-as (-> self root)) - ) - :trans (behavior () - (if (not *target*) - (go quicksandlurker-wait) - ) - (let ((a0-0 (-> self nav)) - (a1-0 (-> *target* control trans)) - ) - (cond - ((or (if (nav-control-method-16 a0-0 a1-0) - #t - ) - (and *target* (>= 16384.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - ) - (set-time! (-> self state-time)) - ) - (else - (if (time-elapsed? (-> self state-time) (seconds 2)) - (go quicksandlurker-popup) - ) - ) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! quicksandlurker-hide-ja :num! (seek! max 0.75) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.75)) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 201) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (clear-collide-with-as (-> self root)) - (loop - (orient-to-face-target) - (suspend) - ) - ) - :post quicksandlurker-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :exit + (behavior () + (restore-collide-with-as (-> self root))) + :trans + (behavior () + (if (not *target*) (go quicksandlurker-wait)) + (let ((a0-0 (-> self nav)) + (a1-0 (-> *target* control trans))) + (cond + ((or (if (nav-control-method-16 a0-0 a1-0) #t) + (and *target* (>= 16384.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))))) + (set-time! (-> self state-time))) + (else (if (time-elapsed? (-> self state-time) (seconds 2)) (go quicksandlurker-popup)))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! quicksandlurker-hide-ja :num! (seek! max 0.75) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.75))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 201) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (clear-collide-with-as (-> self root)) + (loop + (orient-to-face-target) + (suspend))) + :post quicksandlurker-post) (defstate quicksandlurker-popup (quicksandlurker) :trans quicksandlurker-check-hide-transition - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 202) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (ja-no-eval :group! quicksandlurker-popup-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (orient-to-face-target) - (suspend) - (ja :num! (seek!)) - ) - (go quicksandlurker-track) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 202) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (ja-no-eval :group! quicksandlurker-popup-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (orient-to-face-target) + (suspend) + (ja :num! (seek!))) + (go quicksandlurker-track)) + :post quicksandlurker-post) (defstate quicksandlurker-die (quicksandlurker) :event process-drawable-death-event-handler - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! quicksandlurker-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! quicksandlurker-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self)) + :post quicksandlurker-post) (defmethod init-from-entity! ((this quicksandlurker) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) @@ -861,8 +691,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -870,19 +699,15 @@ (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-offense normal-attack)) (set! (-> s2-2 transform-index) 5) (set-vector! (-> s2-2 local-sphere) 0.0 -2048.0 0.0 5324.8) - (append-prim s3-0 s2-2) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (+! (-> this root trans y) -2048.0) (set! (-> this original-position quad) (-> this root trans quad)) @@ -894,10 +719,7 @@ (initialize-skeleton this *quicksandlurker-sg* '()) (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this mud-entity) (entity-actor-lookup (-> this entity) 'water-actor 0)) (go quicksandlurker-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/sidekick-human.gc b/goal_src/jak1/levels/misty/sidekick-human.gc index ac621e87e6..6d1e0f0aff 100644 --- a/goal_src/jak1/levels/misty/sidekick-human.gc +++ b/goal_src/jak1/levels/misty/sidekick-human.gc @@ -1,1047 +1,1002 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "levels/village1/sequence-a-village1.gc") (require "engine/common-obs/babak.gc") (require "levels/intro/evilbro.gc") -;; name: sidekick-human.gc -;; name in dgo: sidekick-human -;; dgos: L1, MIS - ;; DECOMP BEGINS -(deftype sequenceA (process-hidden) - () - ) - +(deftype sequenceA (process-hidden) ()) (defpartgroup group-2d-intro-mist :id 657 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2665 :period (seconds 1) :length (seconds 0.017) :binding 2663) - (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) - (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) - (sp-item 2664 :flags (start-dead)) - (sp-item 2664 :flags (start-dead)) - (sp-item 2664 :flags (start-dead)) - (sp-item 2666) - (sp-item 2667) - ) - ) + :parts + ((sp-item 2665 :period (seconds 1) :length (seconds 0.017) :binding 2663) + (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) + (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) + (sp-item 2664 :flags (start-dead)) + (sp-item 2664 :flags (start-dead)) + (sp-item 2664 :flags (start-dead)) + (sp-item 2666) + (sp-item 2667))) (defpart 2665 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -2.5) (meters 5)) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:conerot-z (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -2.5) (meters 5)) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:conerot-z (degrees 0) (degrees 360)))) (defpart 2663 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.5) (meters 0.2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) - (:scalevel-x (meters -0.0012121212)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.5) (meters 0.2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) + (:scalevel-x (meters -0.0012121212)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 2664 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 32.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.0010952381)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0) (meters -0.000033333334)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 32.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.0010952381)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0) (meters -0.000033333334)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpart 2667 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:z (meters -3.90625)) - (:scale-x (meters 15)) - (:scale-y (meters 12)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:z (meters -3.90625)) + (:scale-x (meters 15)) + (:scale-y (meters 12)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit14)))) (defpart 2666 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -4) (meters 8)) - (:y (meters -3) (meters 6)) - (:z (meters 0) (meters 3.4179688)) - (:scale-x (meters 6) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 6) (meters 8)) - (:r 16.0 80.0) - (:g 0.0 16.0) - (:b 16.0 150.0) - (:a 0.0) - (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) - (:rotvel-z (degrees -0.075) (degrees 0.15)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.497)) - (:next-launcher 2668) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -4) (meters 8)) + (:y (meters -3) (meters 6)) + (:z (meters 0) (meters 3.4179688)) + (:scale-x (meters 6) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 6) (meters 8)) + (:r 16.0 80.0) + (:g 0.0 16.0) + (:b 16.0 150.0) + (:a 0.0) + (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.075) (degrees 0.15)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.497)) + (:next-launcher 2668))) (defpart 2668 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2669)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2669))) (defpart 2669 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-evilsib-appear :id 557 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2345 :period (seconds 5) :length (seconds 0.067) :offset 1500) - (sp-item 2346 :period (seconds 5) :length (seconds 0.067) :offset 1500) - (sp-item 2347 :period (seconds 5) :length (seconds 0.017) :offset 1500) - (sp-item 2348 :period (seconds 5) :length (seconds 0.067) :offset 1500) - (sp-item 2349 :period (seconds 5) :length (seconds 3) :offset 750 :binding 2344) - (sp-item 2350 :period (seconds 5) :length (seconds 2.5) :offset 600 :binding 2344) - (sp-item 2351 :period (seconds 5) :length (seconds 2) :offset 450 :binding 2344) - (sp-item 2351 :period (seconds 5) :length (seconds 1.5) :offset 300 :binding 2344) - (sp-item 2352 :period (seconds 5) :length (seconds 1) :offset 150 :binding 2344) - (sp-item 2352 :period (seconds 5) :length (seconds 0.5) :binding 2344) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - ) - ) + :parts + ((sp-item 2345 :period (seconds 5) :length (seconds 0.067) :offset 1500) + (sp-item 2346 :period (seconds 5) :length (seconds 0.067) :offset 1500) + (sp-item 2347 :period (seconds 5) :length (seconds 0.017) :offset 1500) + (sp-item 2348 :period (seconds 5) :length (seconds 0.067) :offset 1500) + (sp-item 2349 :period (seconds 5) :length (seconds 3) :offset 750 :binding 2344) + (sp-item 2350 :period (seconds 5) :length (seconds 2.5) :offset 600 :binding 2344) + (sp-item 2351 :period (seconds 5) :length (seconds 2) :offset 450 :binding 2344) + (sp-item 2351 :period (seconds 5) :length (seconds 1.5) :offset 300 :binding 2344) + (sp-item 2352 :period (seconds 5) :length (seconds 1) :offset 150 :binding 2344) + (sp-item 2352 :period (seconds 5) :length (seconds 0.5) :binding 2344) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)))) (defpart 2349 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.1)) - (:y (meters -1) (meters 4)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.1)) + (:y (meters -1) (meters 4)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2353 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpart 2350 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.1)) - (:y (meters -1) (meters 4)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 1)) - (:next-launcher 2353) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.1)) + (:y (meters -1) (meters 4)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 1)) + (:next-launcher 2353) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2351 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.3)) - (:y (meters 0) (meters 2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 1)) - (:next-launcher 2353) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.3)) + (:y (meters 0) (meters 2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 1)) + (:next-launcher 2353) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2352 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.5)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 1)) - (:next-launcher 2353) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.5)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 1)) + (:next-launcher 2353) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2344 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 5) (meters 1.5)) - (:scale-x (meters 0.05) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 64.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.074074075) (meters 0.14814815)) - (:vel-y (meters 0)) - (:vel-z (meters -0.015)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit7 bit14)) - (:next-time (seconds 0.9)) - (:next-launcher 2354) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 5) (meters 1.5)) + (:scale-x (meters 0.05) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 64.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.074074075) (meters 0.14814815)) + (:vel-y (meters 0)) + (:vel-z (meters -0.015)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit7 bit14)) + (:next-time (seconds 0.9)) + (:next-launcher 2354))) (defpart 2354 - :init-specs ((:fade-a -3.2)) - ) + :init-specs ((:fade-a -3.2))) (defpart 2345 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters 1) (meters 2)) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.21333334)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:accel-y (meters -0.00016666666) (meters -0.00083333335)) - (:friction 0.8 0.05) - (:timer (seconds 5)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.1) (seconds 2.497)) - (:next-launcher 2355) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-z (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters 1) (meters 2)) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.21333334)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:accel-y (meters -0.00016666666) (meters -0.00083333335)) + (:friction 0.8 0.05) + (:timer (seconds 5)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.1) (seconds 2.497)) + (:next-launcher 2355) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-z (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2355 - :init-specs ((:fade-g 0.0) (:fade-a 0.0)) - ) + :init-specs ((:fade-g 0.0) (:fade-a 0.0))) (defpart 2346 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters 0) (meters 3)) - (:scale-x (meters 0.1) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.026666667)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:accel-y (meters -0.00016666666) (meters -0.00083333335)) - (:friction 0.75 0.05) - (:timer (seconds 5)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.1) (seconds 2.497)) - (:next-launcher 2355) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-z (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters 0) (meters 3)) + (:scale-x (meters 0.1) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.026666667)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:accel-y (meters -0.00016666666) (meters -0.00083333335)) + (:friction 0.75 0.05) + (:timer (seconds 5)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.1) (seconds 2.497)) + (:next-launcher 2355) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-z (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2347 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 28) (meters 4)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 128.0) - (:fade-g -2.3272727) - (:fade-a -2.3272727) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 28) (meters 4)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 128.0) + (:fade-g -2.3272727) + (:fade-a -2.3272727) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 2348 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:y (meters 0.5) (meters 2)) - (:scale-x (meters 0.25) (meters 0.1)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 16)) - (:r 255.0) - (:g 128.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:scalevel-y (meters 0.6)) - (:fade-r -2.1333334) - (:fade-g -2.1333334) - (:fade-a -1.0666667) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:y (meters 0.5) (meters 2)) + (:scale-x (meters 0.25) (meters 0.1)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 16)) + (:r 255.0) + (:g 128.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:scalevel-y (meters 0.6)) + (:fade-r -2.1333334) + (:fade-g -2.1333334) + (:fade-a -1.0666667) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-evilsib-hover :id 558 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2386 :binding 2385) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - ) - ) + :parts + ((sp-item 2386 :binding 2385) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)))) (defpart 2386 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0.25) (meters 1.5)) - (:scale-x (meters 0.2) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:a 0.0) - (:accel-y (meters -0.0005)) - (:timer (seconds 1)) - (:flags (bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0.25) (meters 1.5)) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:a 0.0) + (:accel-y (meters -0.0005)) + (:timer (seconds 1)) + (:flags (bit14)))) (defpart 2385 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0)) - (:z (meters 0.25) (meters 0.25)) - (:scale-x (meters 0.05) (meters 0.025)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.04444444) (meters 0.08888888)) - (:vel-y (meters 0)) - (:vel-z (meters 0.0027777778)) - (:scalevel-x (meters 0.00027777778)) - (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit7 bit14)) - (:next-time (seconds 0.1) (seconds 0.047)) - (:next-launcher 2388) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0)) + (:z (meters 0.25) (meters 0.25)) + (:scale-x (meters 0.05) (meters 0.025)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.04444444) (meters 0.08888888)) + (:vel-y (meters 0)) + (:vel-z (meters 0.0027777778)) + (:scalevel-x (meters 0.00027777778)) + (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit7 bit14)) + (:next-time (seconds 0.1) (seconds 0.047)) + (:next-launcher 2388))) (defpart 2388 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.5)) (:next-launcher 2389)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.5)) (:next-launcher 2389))) (defpart 2389 - :init-specs ((:vel-z (meters -0.008333334)) - (:scalevel-x (meters -0.00041666668)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.0666667) - ) - ) + :init-specs + ((:vel-z (meters -0.008333334)) + (:scalevel-x (meters -0.00041666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.0666667))) (defpart 2384 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1) - (:scale-x (meters 0.4) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 64.0 32.0) - (:scalevel-x (meters -0.03)) - (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -4.8) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.05)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1) + (:scale-x (meters 0.4) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 64.0 32.0) + (:scalevel-x (meters -0.03)) + (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -4.8) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.05)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-sequenceC-glowing-can :id 560 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2298)) - ) + :parts ((sp-item 2298))) (defpart 2298 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 96.0 32.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.42666668) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 96.0 32.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.42666668) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defpartgroup group-sequenceC-exploding-can :id 561 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2785 :period (seconds 6) :length (seconds 0.017)) - (sp-item 2786 :period (seconds 6) :length (seconds 0.135)) - (sp-item 2787 :period (seconds 6) :length (seconds 0.067)) - (sp-item 2788 :period (seconds 6) :length (seconds 0.067)) - (sp-item 2830 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - ) - ) + :parts + ((sp-item 2785 :period (seconds 6) :length (seconds 0.017)) + (sp-item 2786 :period (seconds 6) :length (seconds 0.135)) + (sp-item 2787 :period (seconds 6) :length (seconds 0.067)) + (sp-item 2788 :period (seconds 6) :length (seconds 0.067)) + (sp-item 2830 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)))) (defpart 2830 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:x (meters -2) (meters 4)) - (:y (meters 1) (meters 2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:accel-y (meters -0.00033333333)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:x (meters -2) (meters 4)) + (:y (meters 1) (meters 2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:accel-y (meters -0.00033333333)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2786 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 32.0) - (:b 128.0 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2789) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 32.0) + (:b 128.0 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2789) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2789 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2788 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 128.0 128.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 128.0 128.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2785 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 0.0 32.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 0.0 32.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2787 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4)))) (defpartgroup group-sequenceC-dark-splash :id 562 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 295 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2095 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2096 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) - (sp-item 2097 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 295 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2095 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2096 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) + (sp-item 2097 :period (seconds 2) :length (seconds 0.067)))) (defpartgroup group-sequenceC-blow-dust :id 681 @@ -1049,452 +1004,379 @@ :linger-duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2790)) - ) + :parts ((sp-item 2790))) (defpart 2790 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 96.0 64.0) - (:b 64.0 32.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.0033333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.4) - (:accel-y (meters 0.00033333333) (meters -0.00033333333)) - (:friction 0.92) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05) (seconds 0.147)) - (:next-launcher 2822) - (:conerot-x (degrees 112.99999) (degrees 2)) - (:conerot-y (degrees -12.500001) (degrees 15)) - (:conerot-radius (meters 0.3) (meters -0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 96.0 64.0) + (:b 64.0 32.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.0033333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.4) + (:accel-y (meters 0.00033333333) (meters -0.00033333333)) + (:friction 0.92) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05) (seconds 0.147)) + (:next-launcher 2822) + (:conerot-x (degrees 112.99999) (degrees 2)) + (:conerot-y (degrees -12.500001) (degrees 15)) + (:conerot-radius (meters 0.3) (meters -0.5)))) (defpart 2822 - :init-specs ((:fade-a -0.1)) - ) + :init-specs ((:fade-a -0.1))) (deftype sequenceB (process-taskable) - ((bonelurker handle) - (evilbro handle) - (evilsis handle) - (lurker-army handle 9) - ) - ) - + ((bonelurker handle) + (evilbro handle) + (evilsis handle) + (lurker-army handle 9))) (deftype sequenceC (process-taskable) - ((bonelurker handle) - (darkecocan handle) - (darkecocan-glowing-look lod-set :inline) - ) - ) - - -(defskelgroup *sidekick-human-sg* sidekick-human sidekick-human-lod0-jg sidekick-human-idle-ja - ((sidekick-human-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow sidekick-human-shadow-mg - ) - -(defskelgroup *darkecocan-sg* darkecocan darkecocan-lod0-jg darkecocan-idle-ja - ((darkecocan-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) - -(defskelgroup *darkecocan-glow-sg* darkecocan darkecocan-glow-lod0-jg darkecocan-idle-ja - ((darkecocan-glow-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) - -(defskelgroup *evilbro-sg* evilbro evilbro-lod0-jg evilbro-idle-ja - ((evilbro-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) - -(defskelgroup *evilsis-sg* evilsis evilsis-lod0-jg evilsis-idle-ja - ((evilsis-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) + ((bonelurker handle) + (darkecocan handle) + (darkecocan-glowing-look lod-set :inline))) + +(defskelgroup *sidekick-human-sg* + sidekick-human + sidekick-human-lod0-jg + sidekick-human-idle-ja + ((sidekick-human-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow sidekick-human-shadow-mg) + +(defskelgroup *darkecocan-sg* + darkecocan + darkecocan-lod0-jg + darkecocan-idle-ja + ((darkecocan-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) + +(defskelgroup *darkecocan-glow-sg* + darkecocan + darkecocan-glow-lod0-jg + darkecocan-idle-ja + ((darkecocan-glow-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) + +(defskelgroup *evilbro-sg* + evilbro + evilbro-lod0-jg + evilbro-idle-ja + ((evilbro-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) + +(defskelgroup *evilsis-sg* + evilsis + evilsis-lod0-jg + evilsis-idle-ja + ((evilsis-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) (deftype army-info (structure) - ((pos vector) - (rot float) - (start-frame float) - (skel symbol) - ) - ) - - -(define *lurker-army* (new 'static 'boxed-array :type army-info - (new 'static 'army-info - :pos (new 'static 'vector :x -920633.4 :y 83546.11 :z 4210409.5) - :rot 28556.04 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -873488.4 :y 86441.984 :z 4225454.0) - :rot 37861.24 - :start-frame 5.0 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -905871.4 :y 83132.414 :z 4231934.0) - :rot 32054.021 - :start-frame 10.0 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -926765.06 :y 83496.96 :z 4236230.5) - :rot 30001.652 - :start-frame 15.0 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -893345.8 :y 83517.44 :z 4212961.5) - :rot 32755.074 - :start-frame 20.0 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -842797.06 :y 84041.73 :z 4218855.5) - :rot 43916.402 - :skel 'bonelurker - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -839274.5 :y 82644.99 :z 4248723.5) - :rot 40510.715 - :start-frame 6.0 - :skel 'bonelurker - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -871485.44 :y 85909.51 :z 4243181.5) - :rot 37046.043 - :start-frame 12.0 - :skel 'bonelurker - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -947523.56 :y 85835.77 :z 4219314.0) - :rot 26980.078 - :start-frame 18.0 - :skel 'bonelurker - ) - ) - ) + ((pos vector) + (rot float) + (start-frame float) + (skel symbol))) + +(define *lurker-army* + (new 'static + 'boxed-array + :type + army-info + (new 'static 'army-info :pos (new 'static 'vector :x -920633.4 :y 83546.11 :z 4210409.5) :rot 28556.04 :skel 'babak) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -873488.4 :y 86441.984 :z 4225454.0) + :rot 37861.24 + :start-frame 5.0 + :skel 'babak) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -905871.4 :y 83132.414 :z 4231934.0) + :rot 32054.021 + :start-frame 10.0 + :skel 'babak) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -926765.06 :y 83496.96 :z 4236230.5) + :rot 30001.652 + :start-frame 15.0 + :skel 'babak) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -893345.8 :y 83517.44 :z 4212961.5) + :rot 32755.074 + :start-frame 20.0 + :skel 'babak) + (new 'static 'army-info :pos (new 'static 'vector :x -842797.06 :y 84041.73 :z 4218855.5) :rot 43916.402 :skel 'bonelurker) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -839274.5 :y 82644.99 :z 4248723.5) + :rot 40510.715 + :start-frame 6.0 + :skel 'bonelurker) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -871485.44 :y 85909.51 :z 4243181.5) + :rot 37046.043 + :start-frame 12.0 + :skel 'bonelurker) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -947523.56 :y 85835.77 :z 4219314.0) + :rot 26980.078 + :start-frame 18.0 + :skel 'bonelurker))) (defbehavior evilsib-trans-hook-hover evilbro () 0 - (none) - ) + (none)) (defbehavior evilsib-trans-hook-wait evilbro () (when (>= (ja-aframe-num 0) 425.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 557) - -1 - #f - #f - #f - (-> self draw origin) - :to *entity-pool* - ) - (send-event self 'trans-hook evilsib-trans-hook-hover) - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 557) + -1 + #f + #f + #f + (-> self draw origin) + :to + *entity-pool*) + (send-event self 'trans-hook evilsib-trans-hook-hover)) 0 - (none) - ) + (none)) (defmethod play-anim! ((this sequenceB) (arg0 symbol)) (cond (arg0 - (send-event *target* 'sidekick #f) - (set! (-> this bonelurker) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *bonelurker-sg* #f :to this)) - ) - (send-event (handle->process (-> this bonelurker)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> this bonelurker)) 'center-joint 3) - (set-setting! 'music-volume-movie 'abs 0.0 0) - (set-setting! 'sfx-volume-movie 'abs 0.0 0) - (set-setting! 'ambient-volume-movie 'abs 0.0 0) - (dotimes (s5-1 9) - (let ((s4-0 (-> *lurker-army* s5-1))) - (cond - ((= (-> s4-0 skel) 'bonelurker) - (set! (-> this lurker-army s5-1) - (ppointer->handle (manipy-spawn (-> s4-0 pos) (-> this entity) *bonelurker-sg* #f :to this)) - ) - (let ((s3-1 (handle->process (-> this lurker-army s5-1)))) - (when s3-1 - (set! (-> (the-as babak s3-1) draw light-index) (the-as uint 1)) - (set! (-> (the-as babak s3-1) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))) - ) - ) - ) - (else - (set! (-> this lurker-army s5-1) - (ppointer->handle (manipy-spawn (-> s4-0 pos) (-> this entity) *babak-sg* #f :to this)) - ) - (let ((s3-3 (handle->process (-> this lurker-army s5-1)))) - (when s3-3 - (set! (-> (the-as babak s3-3) draw light-index) (the-as uint 1)) - (set! (-> (the-as babak s3-3) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))) - ) - ) - (send-event (handle->process (-> this lurker-army s5-1)) 'art-joint-anim "idle" 0) - ) - ) - (send-event (handle->process (-> this lurker-army s5-1)) 'rot (-> s4-0 rot)) - ) - ) - ) - ((!= (level-status *level* 'intro) 'active) - (return (get-art-elem this)) - ) - ) - (new 'static 'spool-anim - :name "sidekick-human-intro-sequence-b" - :index 5 - :parts 11 - :command-list '((0 blackout 0) - (0 setting-reset ocean-off near) - (0 want-levels misty intro) - (0 display-level intro special) - (0 kill "money-1404") - (0 kill "money-1405") - (0 kill "money-1406") - (0 kill "money-1407") - (0 kill "money-1551") - (0 kill "money-1552") - (0 kill "money-1553") - (0 kill "balloonlurker-9") - (0 kill "balloonlurker-10") - (0 kill "balloonlurker-11") - (0 kill "balloonlurker-12") - (0 kill "balloonlurker-13") - (0 kill "balloonlurker-14") - (0 kill "keg-conveyor-8") - (0 kill "mistycannon-8") - (0 kill "muse-2") - (0 kill "mud-1") - (0 kill "mud-2") - (0 kill "mud-3") - (0 kill "mud-4") - (0 kill "mud-5") - (0 kill "mud-6") - (0 kill "mud-7") - (0 kill "mud-8") - (0 kill "mud-9") - (0 kill "mud-10") - (0 kill "mud-11") - (0 kill "dark-eco-pool-11") - (0 kill "sharkey-32") - (0 kill "sharkey-34") - (0 kill "sharkey-39") - (0 kill "sharkey-41") - (0 kill "bonelurker-14") - (0 kill "bonelurker-15") - (0 kill "bonelurker-16") - (0 kill "bonelurker-17") - (0 kill "bonelurker-18") - (0 kill "bonelurker-19") - (0 kill "bonelurker-20") - (0 kill "bonelurker-21") - (0 kill "bonelurker-22") - (0 kill "bonelurker-23") - (0 kill "bonelurker-24") - (0 kill "bonelurker-26") - (0 kill "babak-with-cannon-5") - (0 kill "babak-200") - (0 kill "babak-201") - (0 kill "babak-202") - (0 kill "babak-203") - (0 kill "babak-204") - (0 kill "babak-205") - (0 kill "babak-206") - (0 kill "babak-207") - (0 kill "babak-208") - (0 kill "babak-209") - (0 kill "babak-212") - (0 kill "quicksandlurker-5") - (0 kill "boatpaddle-4") - (0 kill "silostep-7") - (0 kill "silostep-8") - (0 kill "silostep-9") - (0 kill "silostep-10") - (0 kill "orb-cache-top-15") - (0 kill "windturbine-11") - (0 kill "teetertotter-5") - (0 kill "bone-platform-4") - (0 kill "misty-battle-controller-1") - (30 send-event self offset-army) - (196 joint "cameraB") - (196 shadow target #f) - (196 shadow self #f) - (380 send-event self evilbro) - (385 send-event "evilbro" draw #t) - (385 send-event "evilsis" draw #t) - (397 joint "camera") - (410 setting-reset ocean-off #t) - (456 joint "cameraB") - (546 joint "camera") - (701 joint "cameraB") - (701 setting-reset ocean-off near) - (776 joint "camera") - (776 setting-reset ocean-off #t) - (937 joint "cameraB") - (1027 joint "camera") - (1122 joint "cameraB") - (1221 joint "cameraB") - (1221 setting-reset ocean-off near) - (1280 alive "sequenceC-1") - (1281 save) - (1281 shadow target #t) - (1281 setting-unset ocean-off) - ) - ) - ) + (send-event *target* 'sidekick #f) + (set! (-> this bonelurker) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *bonelurker-sg* #f :to this))) + (send-event (handle->process (-> this bonelurker)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> this bonelurker)) 'center-joint 3) + (set-setting! 'music-volume-movie 'abs 0.0 0) + (set-setting! 'sfx-volume-movie 'abs 0.0 0) + (set-setting! 'ambient-volume-movie 'abs 0.0 0) + (dotimes (s5-1 9) + (let ((s4-0 (-> *lurker-army* s5-1))) + (cond + ((= (-> s4-0 skel) 'bonelurker) + (set! (-> this lurker-army s5-1) + (ppointer->handle (manipy-spawn (-> s4-0 pos) (-> this entity) *bonelurker-sg* #f :to this))) + (let ((s3-1 (handle->process (-> this lurker-army s5-1)))) + (when s3-1 + (set! (-> (the-as babak s3-1) draw light-index) (the-as uint 1)) + (set! (-> (the-as babak s3-1) draw level-index) (the-as uint (-> (level-get *level* 'misty) index)))))) + (else + (set! (-> this lurker-army s5-1) + (ppointer->handle (manipy-spawn (-> s4-0 pos) (-> this entity) *babak-sg* #f :to this))) + (let ((s3-3 (handle->process (-> this lurker-army s5-1)))) + (when s3-3 + (set! (-> (the-as babak s3-3) draw light-index) (the-as uint 1)) + (set! (-> (the-as babak s3-3) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))))) + (send-event (handle->process (-> this lurker-army s5-1)) 'art-joint-anim "idle" 0))) + (send-event (handle->process (-> this lurker-army s5-1)) 'rot (-> s4-0 rot))))) + ((!= (level-status *level* 'intro) 'active) (return (get-art-elem this)))) + (new 'static + 'spool-anim + :name "sidekick-human-intro-sequence-b" + :index 5 + :parts 11 + :command-list + '((0 blackout 0) + (0 setting-reset ocean-off near) + (0 want-levels misty intro) + (0 display-level intro special) + (0 kill "money-1404") + (0 kill "money-1405") + (0 kill "money-1406") + (0 kill "money-1407") + (0 kill "money-1551") + (0 kill "money-1552") + (0 kill "money-1553") + (0 kill "balloonlurker-9") + (0 kill "balloonlurker-10") + (0 kill "balloonlurker-11") + (0 kill "balloonlurker-12") + (0 kill "balloonlurker-13") + (0 kill "balloonlurker-14") + (0 kill "keg-conveyor-8") + (0 kill "mistycannon-8") + (0 kill "muse-2") + (0 kill "mud-1") + (0 kill "mud-2") + (0 kill "mud-3") + (0 kill "mud-4") + (0 kill "mud-5") + (0 kill "mud-6") + (0 kill "mud-7") + (0 kill "mud-8") + (0 kill "mud-9") + (0 kill "mud-10") + (0 kill "mud-11") + (0 kill "dark-eco-pool-11") + (0 kill "sharkey-32") + (0 kill "sharkey-34") + (0 kill "sharkey-39") + (0 kill "sharkey-41") + (0 kill "bonelurker-14") + (0 kill "bonelurker-15") + (0 kill "bonelurker-16") + (0 kill "bonelurker-17") + (0 kill "bonelurker-18") + (0 kill "bonelurker-19") + (0 kill "bonelurker-20") + (0 kill "bonelurker-21") + (0 kill "bonelurker-22") + (0 kill "bonelurker-23") + (0 kill "bonelurker-24") + (0 kill "bonelurker-26") + (0 kill "babak-with-cannon-5") + (0 kill "babak-200") + (0 kill "babak-201") + (0 kill "babak-202") + (0 kill "babak-203") + (0 kill "babak-204") + (0 kill "babak-205") + (0 kill "babak-206") + (0 kill "babak-207") + (0 kill "babak-208") + (0 kill "babak-209") + (0 kill "babak-212") + (0 kill "quicksandlurker-5") + (0 kill "boatpaddle-4") + (0 kill "silostep-7") + (0 kill "silostep-8") + (0 kill "silostep-9") + (0 kill "silostep-10") + (0 kill "orb-cache-top-15") + (0 kill "windturbine-11") + (0 kill "teetertotter-5") + (0 kill "bone-platform-4") + (0 kill "misty-battle-controller-1") + (30 send-event self offset-army) + (196 joint "cameraB") + (196 shadow target #f) + (196 shadow self #f) + (380 send-event self evilbro) + (385 send-event "evilbro" draw #t) + (385 send-event "evilsis" draw #t) + (397 joint "camera") + (410 setting-reset ocean-off #t) + (456 joint "cameraB") + (546 joint "camera") + (701 joint "cameraB") + (701 setting-reset ocean-off near) + (776 joint "camera") + (776 setting-reset ocean-off #t) + (937 joint "cameraB") + (1027 joint "camera") + (1122 joint "cameraB") + (1221 joint "cameraB") + (1221 setting-reset ocean-off near) + (1280 alive "sequenceC-1") + (1281 save) + (1281 shadow target #t) + (1281 setting-unset ocean-off)))) (defmethod get-art-elem ((this sequenceB)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate play-anim (sequenceB) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('offset-army) - (dotimes (gp-0 9) - (let ((v1-3 (-> *lurker-army* gp-0))) - (send-event (handle->process (-> self lurker-army gp-0)) 'set-frame-num (-> v1-3 start-frame)) - ) - ) - #f - ) - (('evilbro) - (when (= (level-status *level* 'intro) 'active) - (let ((gp-2 (entity-by-name "evilbro-2"))) - (when gp-2 - (set! (-> self evilbro) (ppointer->handle (manipy-spawn (-> self root trans) gp-2 *evilbro-sg* #f :to self))) - (let ((gp-3 (handle->process (-> self evilbro)))) - (when gp-3 - (set! (-> (the-as evilbro gp-3) draw light-index) (the-as uint 1)) - (set! (-> (the-as evilbro gp-3) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))) - ) - ) - (send-event (handle->process (-> self evilbro)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self evilbro)) 'blend-shape #t) - (send-event (handle->process (-> self evilbro)) 'center-joint 3) - (send-event (handle->process (-> self evilbro)) 'trans-hook evilsib-trans-hook-wait) - (send-event (handle->process (-> self evilbro)) 'draw #f) - (send-event - (handle->process (-> self evilbro)) - 'eval - (lambda :behavior sequenceB () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 558) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) - ) - ) - (let ((gp-4 (entity-by-name "evilsis-2"))) - (when gp-4 - (set! (-> self evilsis) (ppointer->handle (manipy-spawn (-> self root trans) gp-4 *evilsis-sg* #f :to self))) - (let ((gp-5 (handle->process (-> self evilsis)))) - (when gp-5 - (set! (-> (the-as evilsis gp-5) draw light-index) (the-as uint 1)) - (set! (-> (the-as evilsis gp-5) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))) - ) - ) - (send-event (handle->process (-> self evilsis)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self evilsis)) 'blend-shape #t) - (send-event (handle->process (-> self evilsis)) 'center-joint 3) - (send-event (handle->process (-> self evilsis)) 'trans-hook evilsib-trans-hook-wait) - (send-event (handle->process (-> self evilsis)) 'draw #f) - (send-event - (handle->process (-> self evilsis)) - 'eval - (lambda :behavior sequenceB () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 558) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) - ) - ) - ) - ) - ) - ) - :exit (behavior () - (send-event *target* 'sidekick #t) - (let ((a0-2 (handle->process (-> self bonelurker)))) - (if a0-2 - (deactivate a0-2) - ) - ) - (let ((a0-6 (handle->process (-> self evilbro)))) - (if a0-6 - (deactivate a0-6) - ) - ) - (let ((a0-10 (handle->process (-> self evilsis)))) - (if a0-10 - (deactivate a0-10) - ) - ) - (dotimes (gp-0 9) - (let ((a0-14 (handle->process (-> self lurker-army gp-0)))) - (if a0-14 - (deactivate a0-14) - ) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ;; og:preserve-this - (#when PC_PORT - ;; extra stuff when skipping cutscene - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('offset-army) + (dotimes (gp-0 9) + (let ((v1-3 (-> *lurker-army* gp-0))) + (send-event (handle->process (-> self lurker-army gp-0)) 'set-frame-num (-> v1-3 start-frame)))) + #f) + (('evilbro) + (when (= (level-status *level* 'intro) 'active) + (let ((gp-2 (entity-by-name "evilbro-2"))) + (when gp-2 + (set! (-> self evilbro) (ppointer->handle (manipy-spawn (-> self root trans) gp-2 *evilbro-sg* #f :to self))) + (let ((gp-3 (handle->process (-> self evilbro)))) + (when gp-3 + (set! (-> (the-as evilbro gp-3) draw light-index) (the-as uint 1)) + (set! (-> (the-as evilbro gp-3) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))))) + (send-event (handle->process (-> self evilbro)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self evilbro)) 'blend-shape #t) + (send-event (handle->process (-> self evilbro)) 'center-joint 3) + (send-event (handle->process (-> self evilbro)) 'trans-hook evilsib-trans-hook-wait) + (send-event (handle->process (-> self evilbro)) 'draw #f) + (send-event (handle->process (-> self evilbro)) + 'eval + (lambda :behavior sequenceB () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 558) self))) (set! (-> self part) v0-0) v0-0))))) + (let ((gp-4 (entity-by-name "evilsis-2"))) + (when gp-4 + (set! (-> self evilsis) (ppointer->handle (manipy-spawn (-> self root trans) gp-4 *evilsis-sg* #f :to self))) + (let ((gp-5 (handle->process (-> self evilsis)))) + (when gp-5 + (set! (-> (the-as evilsis gp-5) draw light-index) (the-as uint 1)) + (set! (-> (the-as evilsis gp-5) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))))) + (send-event (handle->process (-> self evilsis)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self evilsis)) 'blend-shape #t) + (send-event (handle->process (-> self evilsis)) 'center-joint 3) + (send-event (handle->process (-> self evilsis)) 'trans-hook evilsib-trans-hook-wait) + (send-event (handle->process (-> self evilsis)) 'draw #f) + (send-event (handle->process (-> self evilsis)) + 'eval + (lambda :behavior sequenceB () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 558) self))) (set! (-> self part) v0-0) v0-0))))))))) + :exit + (behavior () + (send-event *target* 'sidekick #t) + (let ((a0-2 (handle->process (-> self bonelurker)))) (if a0-2 (deactivate a0-2))) + (let ((a0-6 (handle->process (-> self evilbro)))) (if a0-6 (deactivate a0-6))) + (let ((a0-10 (handle->process (-> self evilsis)))) (if a0-10 (deactivate a0-10))) + (dotimes (gp-0 9) + (let ((a0-14 (handle->process (-> self lurker-army gp-0)))) (if a0-14 (deactivate a0-14)))) + ((-> (method-of-type process-taskable play-anim) exit)) + ;; og:preserve-this + (#when PC_PORT + ;; extra stuff when skipping cutscene + (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) (set! (-> *time-of-day-proc* 0 hour) 7) - (return #f) - ) - ) - (let ((gp-1 (entity-by-name "sequenceC-1"))) - (set-blackout-frames (seconds 20)) - (send-event *camera* 'clear-entity) - (entity-birth-no-kill gp-1) - (send-event - (if gp-1 - (-> gp-1 extra process) - ) - 'play-anim - ) - ) - ) - :trans (behavior () - (spool-push *art-control* "sidekick-human-intro-sequence-c" 0 self (the-as float -1.0)) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (return #f))) + (let ((gp-1 (entity-by-name "sequenceC-1"))) + (set-blackout-frames (seconds 20)) + (send-event *camera* 'clear-entity) + (entity-birth-no-kill gp-1) + (send-event (if gp-1 (-> gp-1 extra process)) 'play-anim))) + :trans + (behavior () + (spool-push *art-control* "sidekick-human-intro-sequence-c" 0 self (the-as float -1.0)) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this sequenceB)) - #f - ) + #f) (defmethod init-from-entity! ((this sequenceB) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sidekick-human-sg* 3 44 (new 'static 'vector :w 4096.0) -1) @@ -1503,44 +1385,35 @@ (set! (-> this evilbro) (the-as handle #f)) (set! (-> this evilsis) (the-as handle #f)) (dotimes (v1-2 9) - (set! (-> this lurker-army v1-2) (the-as handle #f)) - ) + (set! (-> this lurker-army v1-2) (the-as handle #f))) (process-taskable-method-42 this) - (none) - ) + (none)) (defbehavior sequenceC-can-trans-hook-2 sequenceC () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (-> self node-list data 4)) - (spawn (-> self part) gp-0) - ) + (let ((gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (-> self node-list data 4)) (spawn (-> self part) gp-0)) (when (>= (ja-aframe-num 0) 1590.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 561) - -1 - #f - #f - #f - (-> self draw origin) - :to *entity-pool* - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 561) + -1 + #f + #f + #f + (-> self draw origin) + :to + *entity-pool*) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior sequenceC-can-trans-hook sequenceC () (when (>= (ja-aframe-num 0) 1055.0) (lods-assign! (-> self draw) (the-as lod-set (&-> (the-as process-taskable (-> self parent 0)) stack 288))) (send-event self 'trans-hook sequenceC-can-trans-hook-2) - (set-vector! (-> self draw color-emissive) 0.5 0.0 0.0 0.0) - ) + (set-vector! (-> self draw color-emissive) 0.5 0.0 0.0 0.0)) 0 - (none) - ) + (none)) (defmethod play-anim! ((this sequenceC) (arg0 symbol)) (when arg0 @@ -1548,156 +1421,118 @@ (set-setting! 'sfx-volume-movie 'abs 0.0 0) (set-setting! 'ambient-volume-movie 'abs 0.0 0) (set! (-> this bonelurker) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *bonelurker-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *bonelurker-sg* #f :to this))) (send-event (handle->process (-> this bonelurker)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this bonelurker)) 'center-joint 3) (set! (-> this darkecocan) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *darkecocan-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *darkecocan-sg* #f :to this))) (send-event (handle->process (-> this darkecocan)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this darkecocan)) 'center-joint 3) (send-event (handle->process (-> this darkecocan)) 'trans-hook sequenceC-can-trans-hook) - (send-event - (handle->process (-> this darkecocan)) - 'eval - (lambda :behavior sequenceC - () - ((method-of-type lod-set setup-lods!) - (the-as lod-set (&-> (the-as process-taskable (-> self parent 0)) stack 288)) - *darkecocan-glow-sg* - (-> self draw art-group) - (-> (the-as process-taskable (-> self parent 0)) entity) - ) - (let ((v0-1 (create-launch-control (-> *part-group-id-table* 560) self))) - (set! (-> self part) v0-1) - v0-1 - ) - ) - ) - ) - (the-as basic (new 'static 'spool-anim - :name "sidekick-human-intro-sequence-c" - :index 6 - :parts 22 - :command-list '((0 blackout 0) - (0 kill "fuel-cell-11") - (0 kill "fuel-cell-50") - (0 kill "money-1561") - (0 kill "money-1562") - (0 kill "money-1563") - (0 kill "money-1564") - (0 kill "money-1565") - (5 alive "dark-eco-pool-11") - (151 joint "cameraB") - (200 want-levels misty village1) - (236 joint "camera") - (301 joint "cameraB") - (421 joint "camera") - (460 shadow self #f) - (470 shadow self #t) - (496 joint "cameraB") - (611 joint "camera") - (721 joint "cameraB") - (1176 joint "camera") - (1271 joint "cameraB") - (1331 joint "camera") - (1386 joint "cameraB") - (1461 joint "camera") - (1524 joint "cameraB") - (1558 joint "camera") - (1602 joint "cameraB") - (1628 joint "camera") - (1676 joint "cameraB") - (1728 joint "camera") - (1791 joint "cameraB") - (1831 joint "camera") - (1942 joint "cameraB") - (2000 display-level village1 special) - (2028 joint "camera") - (2096 joint "cameraB") - (2154 joint "camera") - (2226 joint "cameraB") - (2266 joint "camera") - (2307 joint "cameraB") - (2431 joint "camera") - (2476 joint "cameraB") - (2530 display-level misty movie) - (2530 want-force-vis misty #t) - (2530 dead "dark-eco-pool-11") - (2534 display-level village1 display) - (2535 want-vis vi1) - (2536 joint "camera") - (2580 alive "sage-23") - (2596 save) - ) - ) - ) - ) + (send-event (handle->process (-> this darkecocan)) + 'eval + (lambda :behavior sequenceC () + ((method-of-type lod-set setup-lods!) + (the-as lod-set (&-> (the-as process-taskable (-> self parent 0)) stack 288)) + *darkecocan-glow-sg* + (-> self draw art-group) + (-> (the-as process-taskable (-> self parent 0)) entity)) + (let ((v0-1 (create-launch-control (-> *part-group-id-table* 560) self))) (set! (-> self part) v0-1) v0-1)))) + (the-as basic + (new 'static + 'spool-anim + :name "sidekick-human-intro-sequence-c" + :index 6 + :parts 22 + :command-list + '((0 blackout 0) + (0 kill "fuel-cell-11") + (0 kill "fuel-cell-50") + (0 kill "money-1561") + (0 kill "money-1562") + (0 kill "money-1563") + (0 kill "money-1564") + (0 kill "money-1565") + (5 alive "dark-eco-pool-11") + (151 joint "cameraB") + (200 want-levels misty village1) + (236 joint "camera") + (301 joint "cameraB") + (421 joint "camera") + (460 shadow self #f) + (470 shadow self #t) + (496 joint "cameraB") + (611 joint "camera") + (721 joint "cameraB") + (1176 joint "camera") + (1271 joint "cameraB") + (1331 joint "camera") + (1386 joint "cameraB") + (1461 joint "camera") + (1524 joint "cameraB") + (1558 joint "camera") + (1602 joint "cameraB") + (1628 joint "camera") + (1676 joint "cameraB") + (1728 joint "camera") + (1791 joint "cameraB") + (1831 joint "camera") + (1942 joint "cameraB") + (2000 display-level village1 special) + (2028 joint "camera") + (2096 joint "cameraB") + (2154 joint "camera") + (2226 joint "cameraB") + (2266 joint "camera") + (2307 joint "cameraB") + (2431 joint "camera") + (2476 joint "cameraB") + (2530 display-level misty movie) + (2530 want-force-vis misty #t) + (2530 dead "dark-eco-pool-11") + (2534 display-level village1 display) + (2535 want-vis vi1) + (2536 joint "camera") + (2580 alive "sage-23") + (2596 save))))) (defmethod get-art-elem ((this sequenceC)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate play-anim (sequenceC) :virtual #t - :exit (behavior () - (let ((a0-1 (handle->process (-> self bonelurker)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (let ((a0-5 (handle->process (-> self darkecocan)))) - (if a0-5 - (deactivate a0-5) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ;; og:preserve-this - (#when PC_PORT - ;; extra stuff when skipping cutscene - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self bonelurker)))) (if a0-1 (deactivate a0-1))) + (let ((a0-5 (handle->process (-> self darkecocan)))) (if a0-5 (deactivate a0-5))) + ((-> (method-of-type process-taskable play-anim) exit)) + ;; og:preserve-this + (#when PC_PORT + ;; extra stuff when skipping cutscene + (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) (set! (-> *time-of-day-proc* 0 hour) 7) - (return #f) - ) - ) - (start 'play (get-continue-by-name *game-info* "village1-intro")) - ) - :trans (behavior () - (spool-push *art-control* "sage-intro-sequence-d1" 0 self (the-as float -1.0)) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (return #f))) + (start 'play (get-continue-by-name *game-info* "village1-intro"))) + :trans + (behavior () + (spool-push *art-control* "sage-intro-sequence-d1" 0 self (the-as float -1.0)) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this sequenceC)) - #f - ) + #f) (defbehavior sequenceC-trans-hook sequenceC () (when (>= (ja-aframe-num 0) 1655.0) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (-> self node-list data 3)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 562) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (set! (-> self cur-trans-hook) nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 562) -1 #f #f #f gp-0 :to *entity-pool*)) + (set! (-> self cur-trans-hook) nothing)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this sequenceC) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sidekick-human-sg* 3 44 (new 'static 'vector :w 4096.0) -1) @@ -1706,5 +1541,4 @@ (set! (-> this darkecocan) (the-as handle #f)) (set! (-> this cur-trans-hook) sequenceC-trans-hook) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/ogre/flying-lurker.gc b/goal_src/jak1/levels/ogre/flying-lurker.gc index 0d8d6f0a8f..9e3528c249 100644 --- a/goal_src/jak1/levels/ogre/flying-lurker.gc +++ b/goal_src/jak1/levels/ogre/flying-lurker.gc @@ -1,256 +1,186 @@ ;;-*-Lisp-*- (in-package goal) (bundles "OGR.DGO") - (require "engine/geometry/path.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/collide/collide-cache.gc") (require "engine/entity/entity.gc") -;; name: flying-lurker.gc -;; name in dgo: flying-lurker -;; dgos: L1, OGR - ;; DECOMP BEGINS -(defskelgroup *ogrecam-sg* ogrecam ogrecam-lod0-jg -1 - ((ogrecam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 6) - ) +(defskelgroup *ogrecam-sg* + ogrecam + ogrecam-lod0-jg + -1 + ((ogrecam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 6)) (deftype plunger-lurker (process-drawable) - ((alt-actor entity-actor) - (got-hit symbol) - ) + ((alt-actor entity-actor) + (got-hit symbol)) (:states - plunger-lurker-die - plunger-lurker-flee - plunger-lurker-idle - plunger-lurker-plunge - ) - ) - - -(defskelgroup *plunger-lurker-sg* plunger-lurker plunger-lurker-lod0-jg plunger-lurker-idle-ja - ((plunger-lurker-lod0-mg (meters 20)) - (plunger-lurker-lod1-mg (meters 40)) - (plunger-lurker-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 2 4 0 12) - ) + plunger-lurker-die + plunger-lurker-flee + plunger-lurker-idle + plunger-lurker-plunge)) + +(defskelgroup *plunger-lurker-sg* + plunger-lurker + plunger-lurker-lod0-jg + plunger-lurker-idle-ja + ((plunger-lurker-lod0-mg (meters 20)) (plunger-lurker-lod1-mg (meters 40)) (plunger-lurker-lod2-mg (meters 999999))) + :bounds (static-spherem 2 4 0 12)) (defstate plunger-lurker-plunge (plunger-lurker) - :code (behavior () - (set-setting! 'allow-progress #f 0.0 0) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (while (or (not *target*) (logtest? (-> *target* state-flags) (state-flags being-attacked dying))) - (suspend) - ) - (while (not (process-grab? *target*)) - (suspend) - ) - (let ((gp-1 - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *ogrecam-sg* #f :to self)) - ) - ) - (let ((s5-0 (the-as othercam (get-process *default-dead-pool* othercam #x4000)))) - (ppointer->handle (when s5-0 - (let ((t9-7 (method-of-type othercam activate))) - (t9-7 s5-0 (-> gp-1 process 0) 'othercam (the-as pointer #x70004000)) - ) - (run-now-in-process s5-0 othercam-init-by-other (-> gp-1 process 0) 4 #f #t) - (-> s5-0 ppointer) - ) - ) - ) - (send-event - (handle->process gp-1) - 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) - (set! (-> self draw status) v0-0) - (the-as uint v0-0) - ) - ) - ) - (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-and-kill-links) - (set! (-> a1-9 param 0) (the-as uint (process->handle self))) - (let ((t9-10 send-event-function) - (v1-34 (-> self alt-actor)) - ) - (t9-10 - (if v1-34 - (-> v1-34 extra process) - ) - a1-9 - ) - ) - ) - (send-event (-> gp-1 process 0) 'clone-copy-trans #f) - (send-event (-> gp-1 process 0) 'anim-mode 'clone-anim) - (ja-play-spooled-anim - (new 'static 'spool-anim - :name "plunger-lurker-blowup" - :index 7 - :parts 4 - :command-list '((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) - (the-as art-joint-anim plunger-lurker-idle-ja) - (the-as (function process-drawable symbol) false-func) - ) - (if (handle->process gp-1) - (deactivate (-> gp-1 process 0)) - ) - ) - (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) 'reset) - (let ((t9-15 send-event-function) - (v1-56 (-> self alt-actor)) - ) - (t9-15 - (if v1-56 - (-> v1-56 extra process) - ) - a1-14 - ) - ) - ) - (process-release? *target*) - (suspend) - 0 - (send-event *target* 'attack-invinc #f (static-attack-info ((mode 'instant-death)))) - (cleanup-for-death self) - (deactivate self) - (loop + :code + (behavior () + (set-setting! 'allow-progress #f 0.0 0) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (while (or (not *target*) (logtest? (-> *target* state-flags) (state-flags being-attacked dying))) + (suspend)) + (while (not (process-grab? *target*)) + (suspend)) + (let ((gp-1 (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *ogrecam-sg* #f :to self)))) + (let ((s5-0 (the-as othercam (get-process *default-dead-pool* othercam #x4000)))) + (ppointer->handle (when s5-0 + (let ((t9-7 (method-of-type othercam activate))) (t9-7 s5-0 (-> gp-1 process 0) 'othercam (the-as pointer #x70004000))) + (run-now-in-process s5-0 othercam-init-by-other (-> gp-1 process 0) 4 #f #t) + (-> s5-0 ppointer)))) + (send-event (handle->process gp-1) + 'eval + (lambda :behavior manipy () + (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) + (set! (-> self draw status) v0-0) + (the-as uint v0-0)))) + (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-and-kill-links) + (set! (-> a1-9 param 0) (the-as uint (process->handle self))) + (let ((t9-10 send-event-function) + (v1-34 (-> self alt-actor))) + (t9-10 (if v1-34 (-> v1-34 extra process)) a1-9))) + (send-event (-> gp-1 process 0) 'clone-copy-trans #f) + (send-event (-> gp-1 process 0) 'anim-mode 'clone-anim) + (ja-play-spooled-anim (new 'static + 'spool-anim + :name "plunger-lurker-blowup" + :index 7 + :parts 4 + :command-list + '((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) + (the-as art-joint-anim plunger-lurker-idle-ja) + (the-as (function process-drawable symbol) false-func)) + (if (handle->process gp-1) (deactivate (-> gp-1 process 0)))) + (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) 'reset) + (let ((t9-15 send-event-function) + (v1-56 (-> self alt-actor))) + (t9-15 (if v1-56 (-> v1-56 extra process)) a1-14))) + (process-release? *target*) (suspend) - ) - ) - :post ja-post - ) - -(defstate plunger-lurker-flee (plunger-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (let ((v0-0 #t)) - (set! (-> self got-hit) v0-0) - v0-0 - ) - ) - ) - ) - :trans (behavior () - (when (-> self got-hit) - (close-specific-task! (game-task plunger-lurker-hit) (task-status need-hint)) - (process-entity-status! self (entity-perm-status complete) #t) - (level-hint-spawn - (text-id ogre-plunger-lurker-resolution) - "sksp0321" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 474) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) + 0 + (send-event *target* 'attack-invinc #f (static-attack-info ((mode 'instant-death)))) (cleanup-for-death self) (deactivate self) - ) - ) - :code (behavior () - (ja-no-eval :group! plunger-lurker-notice-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! plunger-lurker-death-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post ja-post - ) + (loop + (suspend))) + :post ja-post) -(defstate plunger-lurker-idle (plunger-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('plunge) - (logclear! (-> self mask) (process-mask actor-pause)) - (go plunger-lurker-plunge) - ) - ) - ) - :trans (behavior () - (spool-push *art-control* "plunger-lurker-blowup" 0 self -99.0) - (when (and *target* (< (vector-vector-distance-squared (-> self root trans) (target-pos 0)) 6710886400.0)) - (logclear! (-> self mask) (process-mask actor-pause)) - (go plunger-lurker-flee) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! plunger-lurker-idle-ja :num! (seek!) :frame-num 0.0) +(defstate plunger-lurker-flee (plunger-lurker) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (let ((v0-0 #t)) (set! (-> self got-hit) v0-0) v0-0)))) + :trans + (behavior () + (when (-> self got-hit) + (close-specific-task! (game-task plunger-lurker-hit) (task-status need-hint)) + (process-entity-status! self (entity-perm-status complete) #t) + (level-hint-spawn (text-id ogre-plunger-lurker-resolution) "sksp0321" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 474) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (cleanup-for-death self) + (deactivate self))) + :code + (behavior () + (ja-no-eval :group! plunger-lurker-notice-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! plunger-lurker-death-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (loop + (suspend))) + :post ja-post) + +(defstate plunger-lurker-idle (plunger-lurker) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('plunge) (logclear! (-> self mask) (process-mask actor-pause)) (go plunger-lurker-plunge)))) + :trans + (behavior () + (spool-push *art-control* "plunger-lurker-blowup" 0 self -99.0) + (when (and *target* (< (vector-vector-distance-squared (-> self root trans) (target-pos 0)) 6710886400.0)) + (logclear! (-> self mask) (process-mask actor-pause)) + (go plunger-lurker-flee))) + :code + (behavior () + (loop + (ja-no-eval :group! plunger-lurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate plunger-lurker-die (plunger-lurker) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - (suspend) - 0 - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self) + (suspend) + 0)) (defmethod init-from-entity! ((this plunger-lurker) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -262,150 +192,112 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 -16384.0 40960.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *plunger-lurker-sg* '()) (set! (-> this alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this got-hit) #f) (quaternion-rotate-y! (-> this root quat) (-> this root quat) -16384.0) (if (= (get-task-status (game-task plunger-lurker-hit)) (task-status invalid)) - (go plunger-lurker-die) - (go plunger-lurker-idle) - ) - (none) - ) + (go plunger-lurker-die) + (go plunger-lurker-idle)) + (none)) (deftype flying-lurker (process-drawable) - ((curve-position float) - (speed float) - (tangent vector :inline) - (anim-blend float) - (y-offset float) - (y-offset-desired float) - (y-vel float) - (last-look-time time-frame) - (time-to-next-look time-frame) - (take-off symbol) - (race-seconds float) - (race-start-time time-frame) - (rank int32) - (alt-actor entity-actor) - (alt-trans vector) - (shadow-backup shadow-geo) - (try-count uint8) - (try-counted symbol) - (default-bounds vector :inline) - ) + ((curve-position float) + (speed float) + (tangent vector :inline) + (anim-blend float) + (y-offset float) + (y-offset-desired float) + (y-vel float) + (last-look-time time-frame) + (time-to-next-look time-frame) + (take-off symbol) + (race-seconds float) + (race-start-time time-frame) + (rank int32) + (alt-actor entity-actor) + (alt-trans vector) + (shadow-backup shadow-geo) + (try-count uint8) + (try-counted symbol) + (default-bounds vector :inline)) (:methods - (flying-lurker-method-20 (_type_) none) - ) - (:states - (flying-lurker-clone handle string) - flying-lurker-die - flying-lurker-fly - flying-lurker-idle - flying-lurker-sleep - flying-lurker-start - ) - ) - - -(defskelgroup *flying-lurker-sg* flying-lurker flying-lurker-lod0-jg flying-lurker-fly-ja - ((flying-lurker-lod0-mg (meters 20)) - (flying-lurker-lod1-mg (meters 40)) - (flying-lurker-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 2 0 6) - :longest-edge (meters 2.3) - :shadow flying-lurker-shadow-mg - ) + (flying-lurker-method-20 (_type_) none)) + (:states (flying-lurker-clone handle string) + flying-lurker-die + flying-lurker-fly + flying-lurker-idle + flying-lurker-sleep + flying-lurker-start)) + +(defskelgroup *flying-lurker-sg* + flying-lurker + flying-lurker-lod0-jg + flying-lurker-fly-ja + ((flying-lurker-lod0-mg (meters 20)) (flying-lurker-lod1-mg (meters 40)) (flying-lurker-lod2-mg (meters 999999))) + :bounds (static-spherem 0 2 0 6) + :longest-edge (meters 2.3) + :shadow flying-lurker-shadow-mg) (defmethod flying-lurker-method-20 ((this flying-lurker)) (with-pp (let ((s5-0 (-> this draw shadow-ctrl)) - (s4-0 #f) - ) + (s4-0 #f)) (when (-> this draw shadow) (when (or (logtest? (-> this draw status) (draw-status was-drawn)) - (< (vector-vector-xz-distance-squared (-> this root trans) (camera-pos)) 10485760000.0) - ) + (< (vector-vector-xz-distance-squared (-> this root trans) (camera-pos)) 10485760000.0)) (let ((s3-1 (new 'stack-no-clear 'collide-tri-result)) (a1-1 (new 'stack-no-clear 'vector)) - (a2-0 (new 'stack-no-clear 'vector)) - ) + (a2-0 (new 'stack-no-clear 'vector))) (set! (-> a1-1 quad) (-> this root trans quad)) (+! (-> a1-1 y) -8192.0) (set-vector! a2-0 0.0 -81920.0 0.0 1.0) - (when (>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-1 - a2-0 - 8192.0 - (collide-kind background) - pp - s3-1 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (when (>= (fill-and-probe-using-line-sphere *collide-cache* + a1-1 + a2-0 + 8192.0 + (collide-kind background) + pp + s3-1 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> s3-1 intersect w) 8192.0) (when (and (sphere-in-view-frustum? (the-as sphere (-> s3-1 intersect))) - (< 822083600.0 (vector-vector-distance-squared (-> s3-1 intersect) (camera-pos))) - ) + (< 822083600.0 (vector-vector-distance-squared (-> s3-1 intersect) (camera-pos)))) (set! s4-0 #t) - (let ((v1-17 s5-0)) - (logclear! (-> v1-17 settings flags) (shadow-flags disable-draw)) - ) + (let ((v1-17 s5-0)) (logclear! (-> v1-17 settings flags) (shadow-flags disable-draw))) 0 - (let ((v1-19 s5-0)) - (set! (-> v1-19 settings bot-plane w) (- (+ -8192.0 (-> s3-1 intersect y)))) - ) + (let ((v1-19 s5-0)) (set! (-> v1-19 settings bot-plane w) (- (+ -8192.0 (-> s3-1 intersect y))))) 0 - (let ((v1-21 s5-0)) - (set! (-> v1-21 settings top-plane w) (- (+ 6144.0 (-> s3-1 intersect y)))) - ) + (let ((v1-21 s5-0)) (set! (-> v1-21 settings top-plane w) (- (+ 6144.0 (-> s3-1 intersect y))))) 0 (let ((s2-2 (new 'stack-no-clear 'bounding-box))) (let ((s1-1 (new 'stack-no-clear 'vector))) (vector<-cspace! s1-1 (-> this node-list data 4)) (vector+float! (-> s2-2 min) s1-1 -18432.0) - (vector+float! (-> s2-2 max) s1-1 18432.0) - ) + (vector+float! (-> s2-2 max) s1-1 18432.0)) (add-spheres! s2-2 (the-as (inline-array sphere) (-> s3-1 intersect)) 1) (let ((f0-17 (* 0.5 (vector-vector-distance (-> s2-2 min) (-> s2-2 max))))) - (set-vector! - (-> this draw bounds) - (* 0.5 (+ (-> s2-2 min x) (-> s2-2 max x))) - (* 0.5 (+ (-> s2-2 min y) (-> s2-2 max y))) - (* 0.5 (+ (-> s2-2 min z) (-> s2-2 max z))) - 1.0 - ) + (set-vector! (-> this draw bounds) + (* 0.5 (+ (-> s2-2 min x) (-> s2-2 max x))) + (* 0.5 (+ (-> s2-2 min y) (-> s2-2 max y))) + (* 0.5 (+ (-> s2-2 min z) (-> s2-2 max z))) + 1.0) (vector-! (-> this draw bounds) (-> this draw bounds) (-> this root trans)) - (set! (-> this draw bounds w) f0-17) - ) - ) + (set! (-> this draw bounds w) f0-17))) (set! (-> this draw origin-joint-index) (the-as uint 0)) - 0 - ) - ) - ) - ) - ) + 0))))) (when (not s4-0) (logior! (-> s5-0 settings flags) (shadow-flags disable-draw)) 0 (set! (-> this draw bounds quad) (-> this default-bounds quad)) - (set! (-> this draw origin-joint-index) (the-as uint 4)) - ) - ) - (none) - ) - ) + (set! (-> this draw origin-joint-index) (the-as uint 4)))) + (none))) (defbehavior flying-lurker-inc-try-count flying-lurker () (when (not (-> self try-counted)) @@ -413,89 +305,58 @@ (let ((gp-0 (-> self entity extra perm))) (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) (seekl! (-> gp-0 user-int8 0) 255 1) - (set! (-> self try-count) (the-as uint (-> gp-0 user-int8 0))) - ) - ) + (set! (-> self try-count) (the-as uint (-> gp-0 user-int8 0))))) 0 - (none) - ) + (none)) (defun play-movie? () - (= (get-task-status (game-task plunger-lurker-hit)) (task-status unknown)) - ) + (= (get-task-status (game-task plunger-lurker-hit)) (task-status unknown))) (defstate flying-lurker-die (flying-lurker) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self))) (defstate flying-lurker-sleep (flying-lurker) - :code (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self draw status) (draw-status hidden)) + (loop + (suspend)))) (defbehavior first? flying-lurker () - (not (-> self link prev)) - ) + (not (-> self link prev))) (defbehavior flying-lurker-calc-speed flying-lurker ((arg0 meters) (arg1 meters) (arg2 meters) (arg3 meters)) (let ((s4-1 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> self root trans))) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> self tangent quad)) 0.0 (let ((f30-0 (vector-length s4-1))) (set! (-> s4-1 y) 0.0) (set! (-> s3-0 y) 0.0) (let ((f28-0 (vector-dot s4-1 s3-0))) - (let ((f26-0 - (* (path-distance (-> self path)) - (/ (the float (- (-> *display* game-frame-counter) (-> self race-start-time))) (-> self race-seconds)) - ) - ) - (f0-6 (* (path-distance (-> self path)) (-> self curve-position))) - ) + (let ((f26-0 (* (path-distance (-> self path)) + (/ (the float (- (-> *display* game-frame-counter) (-> self race-start-time))) (-> self race-seconds)))) + (f0-6 (* (path-distance (-> self path)) (-> self curve-position)))) 0.0 (let* ((f1-6 (* -81920.0 (the float (-> self rank)))) - (f0-10 (+ (if (< f26-0 f0-6) - (fmax (+ -81920.0 f1-6) (- f26-0 f0-6)) - (fmin (+ 245760.0 f1-6) (- f26-0 f0-6)) - ) - f28-0 - ) - ) + (f0-10 (+ (if (< f26-0 f0-6) (fmax (+ -81920.0 f1-6) (- f26-0 f0-6)) (fmin (+ 245760.0 f1-6) (- f26-0 f0-6))) f28-0)) (f1-10 (* 0.000012207031 f0-10)) - (f0-12 (fmax -0.5 (fmin 0.5 f1-10))) - ) - (set! (-> self speed) (+ (* (+ 0.5 f0-12) (- arg2 arg3)) arg3)) - ) - ) + (f0-12 (fmax -0.5 (fmin 0.5 f1-10)))) + (set! (-> self speed) (+ (* (+ 0.5 f0-12) (- arg2 arg3)) arg3)))) ;; og:preserve-this PAL patch here (let ((f0-16 65536.0)) - (if (and (< 0.6332 (-> self curve-position)) (< (-> self curve-position) 0.6928)) - (set! f0-16 40960.0) - ) - (set! (-> self y-offset-desired) (fmin f0-16 (fmax 0.0 (* 1.6 (- 40960.0 (fmin (- f28-0) f30-0)))))) - ) - ) - ) - ) - (none) - ) + (if (and (< 0.6332 (-> self curve-position)) (< (-> self curve-position) 0.6928)) (set! f0-16 40960.0)) + (set! (-> self y-offset-desired) (fmin f0-16 (fmax 0.0 (* 1.6 (- 40960.0 (fmin (- f28-0) f30-0)))))))))) + (none)) (defbehavior flying-lurker-move flying-lurker () (+! (-> self curve-position) (/ (the float (* (- (current-time) (-> *display* old-base-frame-counter)) (the int (-> self speed)))) - (path-distance (-> self path)) - ) - ) + (path-distance (-> self path)))) (set! (-> self curve-position) (fmin 1.0 (fmax 0.0 (-> self curve-position)))) (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) (cond @@ -505,43 +366,26 @@ (+! (-> self y-offset) (-> self y-vel)) (when (>= (-> self y-offset-desired) (-> self y-offset)) (set! (-> self y-offset) (-> self y-offset-desired)) - (set! (-> self y-vel) 0.0) - ) - ) + (set! (-> self y-vel) 0.0))) ((< (-> self y-offset) (-> self y-offset-desired)) (set! (-> self y-vel) (* 0.5 (- (-> self y-offset-desired) (-> self y-offset)))) (set! (-> self y-vel) (fmin 436.90668 (-> self y-vel))) (+! (-> self y-offset) (-> self y-vel)) (when (>= (-> self y-offset) (-> self y-offset-desired)) (set! (-> self y-offset) (-> self y-offset-desired)) - (set! (-> self y-vel) 0.0) - ) - ) - ) + (set! (-> self y-vel) 0.0)))) (+! (-> self root trans y) (-> self y-offset)) (+! (-> self root trans y) 12288.0) - (none) - ) + (none)) (defbehavior flying-lurker-rotate flying-lurker () (let ((gp-0 (new 'stack-no-clear 'matrix))) (let ((s5-0 (new 'stack-no-clear 'matrix))) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> self path) (-> self tangent) (-> self curve-position)) - (eval-path-curve! - (-> self path) - s3-0 - (+ (/ 12288.0 (path-distance (-> self path))) (-> self curve-position)) - 'interp - ) - (eval-path-curve! - (-> self path) - s4-0 - (+ (/ 4096.0 (path-distance (-> self path))) (-> self curve-position)) - 'interp - ) + (eval-path-curve! (-> self path) s3-0 (+ (/ 12288.0 (path-distance (-> self path))) (-> self curve-position)) 'interp) + (eval-path-curve! (-> self path) s4-0 (+ (/ 4096.0 (path-distance (-> self path))) (-> self curve-position)) 'interp) (vector-! s3-0 s3-0 (-> self root trans)) (vector-! s4-0 s4-0 (-> self root trans)) (set! (-> s3-0 y) 0.0) @@ -549,192 +393,129 @@ (vector-normalize! s3-0 1.0) (vector-normalize! s4-0 1.0) (vector-cross! s4-0 s4-0 s3-0) - (set! (-> self anim-blend) (asin (-> s4-0 y))) - ) + (set! (-> self anim-blend) (asin (-> s4-0 y)))) (set! (-> self anim-blend) (* 0.0010986328 (-> self anim-blend))) (set! (-> self anim-blend) (fmax -1.0 (fmin 1.0 (-> self anim-blend)))) (set! (-> self anim-blend) (sin (* 16384.0 (-> self anim-blend)))) (forward-down->inv-matrix gp-0 (-> self tangent) (new 'static 'vector :y -1.0)) (matrix-rotate-z! s5-0 (* -10922.667 (-> self anim-blend))) - (matrix*! gp-0 s5-0 gp-0) - ) - (matrix->quaternion (-> self root quat) gp-0) - ) - ) + (matrix*! gp-0 s5-0 gp-0)) + (matrix->quaternion (-> self root quat) gp-0))) (defbehavior flying-lurker-calc-anim-speed flying-lurker () (let* ((f0-1 (fabs (-> self speed))) (f0-2 (* 0.07324219 f0-1)) (f0-3 (+ -15.0 f0-2)) - (f1-3 (* 0.13333334 f0-3)) - ) - (fmin 1.5 (fmax 0.9 f1-3)) - ) - ) + (f1-3 (* 0.13333334 f0-3))) + (fmin 1.5 (fmax 0.9 f1-3)))) (defstate flying-lurker-fly (flying-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('clone-and-kill-links) - (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) 'sleep) - (let ((t9-0 send-event-function) - (v1-3 (-> self link next)) - ) - (t9-0 - (if v1-3 - (-> v1-3 extra process) - ) - a1-1 - ) - ) - ) - (go flying-lurker-clone (the-as handle (-> block param 0)) "") - ) - (('die) - (let ((v1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-7 from) proc) - (set! (-> v1-7 num-params) argc) - (set! (-> v1-7 message) message) - (set! (-> v1-7 param 0) (-> block param 0)) - (set! (-> v1-7 param 1) (-> block param 1)) - (set! (-> v1-7 param 2) (-> block param 2)) - (set! (-> v1-7 param 3) (-> block param 3)) - (set! (-> v1-7 param 4) (-> block param 4)) - (set! (-> v1-7 param 5) (-> block param 5)) - (set! (-> v1-7 param 6) (-> block param 6)) - (let ((t9-2 send-event-function) - (a1-3 (-> self link next)) - ) - (t9-2 - (if a1-3 - (-> a1-3 extra process) - ) - v1-7 - ) - ) - ) - (cleanup-for-death self) - (deactivate self) - ) - (('sleep) - (let ((v1-12 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-12 from) proc) - (set! (-> v1-12 num-params) argc) - (set! (-> v1-12 message) message) - (set! (-> v1-12 param 0) (-> block param 0)) - (set! (-> v1-12 param 1) (-> block param 1)) - (set! (-> v1-12 param 2) (-> block param 2)) - (set! (-> v1-12 param 3) (-> block param 3)) - (set! (-> v1-12 param 4) (-> block param 4)) - (set! (-> v1-12 param 5) (-> block param 5)) - (set! (-> v1-12 param 6) (-> block param 6)) - (let ((t9-5 send-event-function) - (a1-5 (-> self link next)) - ) - (t9-5 - (if a1-5 - (-> a1-5 extra process) - ) - v1-12 - ) - ) - ) - (go flying-lurker-sleep) - ) - (('reset) - (let ((v1-15 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-15 from) proc) - (set! (-> v1-15 num-params) argc) - (set! (-> v1-15 message) message) - (set! (-> v1-15 param 0) (-> block param 0)) - (set! (-> v1-15 param 1) (-> block param 1)) - (set! (-> v1-15 param 2) (-> block param 2)) - (set! (-> v1-15 param 3) (-> block param 3)) - (set! (-> v1-15 param 4) (-> block param 4)) - (set! (-> v1-15 param 5) (-> block param 5)) - (set! (-> v1-15 param 6) (-> block param 6)) - (let ((t9-7 send-event-function) - (a1-7 (-> self link next)) - ) - (t9-7 - (if a1-7 - (-> a1-7 extra process) - ) - v1-15 - ) - ) - ) - (deactivate self) - ) - ) - ) - :enter (behavior () - (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (flying-lurker-method-20 self) - (when (not (movie?)) - (flying-lurker-calc-speed (meters 15) (meters 30) (meters 0.11666667) (meters 0.083333336)) - (flying-lurker-move) - (flying-lurker-rotate) - (when (and (-> self alt-actor) - (or (< (vector-vector-distance-squared (-> self root trans) (-> self alt-actor extra trans)) 6710886400.0) - (and *target* (< 4194304000000.0 (vector-vector-distance-squared (-> self root trans) (target-pos 0)))) - ) - ) - (set-or-clear-status! (-> self alt-actor) (entity-perm-status dead) #f) - (entity-birth-no-kill (-> self alt-actor)) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'plunge) - (let ((t9-10 send-event-function) - (v1-13 (-> self alt-actor)) - ) - (t9-10 - (if v1-13 - (-> v1-13 extra process) - ) - a1-4 - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (when (not (ja-group? flying-lurker-fly-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! flying-lurker-fly-ja) - ) - (ja :num! (loop! (flying-lurker-calc-anim-speed))) - (suspend) - (when (time-elapsed? (-> self last-look-time) (-> self time-to-next-look)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! flying-lurker-look-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self last-look-time)) - (let* ((f30-0 300.0) - (f28-0 3.0) - (f26-0 5.0) - (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-42 (the-as float (logior #x3f800000 v1-41))) - ) - (set! (-> self time-to-next-look) (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 v1-42))))))) - ) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('clone-and-kill-links) + (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) 'sleep) + (let ((t9-0 send-event-function) + (v1-3 (-> self link next))) + (t9-0 (if v1-3 (-> v1-3 extra process)) a1-1))) + (go flying-lurker-clone (the-as handle (-> block param 0)) "")) + (('die) + (let ((v1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-7 from) proc) + (set! (-> v1-7 num-params) argc) + (set! (-> v1-7 message) message) + (set! (-> v1-7 param 0) (-> block param 0)) + (set! (-> v1-7 param 1) (-> block param 1)) + (set! (-> v1-7 param 2) (-> block param 2)) + (set! (-> v1-7 param 3) (-> block param 3)) + (set! (-> v1-7 param 4) (-> block param 4)) + (set! (-> v1-7 param 5) (-> block param 5)) + (set! (-> v1-7 param 6) (-> block param 6)) + (let ((t9-2 send-event-function) + (a1-3 (-> self link next))) + (t9-2 (if a1-3 (-> a1-3 extra process)) v1-7))) + (cleanup-for-death self) + (deactivate self)) + (('sleep) + (let ((v1-12 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-12 from) proc) + (set! (-> v1-12 num-params) argc) + (set! (-> v1-12 message) message) + (set! (-> v1-12 param 0) (-> block param 0)) + (set! (-> v1-12 param 1) (-> block param 1)) + (set! (-> v1-12 param 2) (-> block param 2)) + (set! (-> v1-12 param 3) (-> block param 3)) + (set! (-> v1-12 param 4) (-> block param 4)) + (set! (-> v1-12 param 5) (-> block param 5)) + (set! (-> v1-12 param 6) (-> block param 6)) + (let ((t9-5 send-event-function) + (a1-5 (-> self link next))) + (t9-5 (if a1-5 (-> a1-5 extra process)) v1-12))) + (go flying-lurker-sleep)) + (('reset) + (let ((v1-15 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-15 from) proc) + (set! (-> v1-15 num-params) argc) + (set! (-> v1-15 message) message) + (set! (-> v1-15 param 0) (-> block param 0)) + (set! (-> v1-15 param 1) (-> block param 1)) + (set! (-> v1-15 param 2) (-> block param 2)) + (set! (-> v1-15 param 3) (-> block param 3)) + (set! (-> v1-15 param 4) (-> block param 4)) + (set! (-> v1-15 param 5) (-> block param 5)) + (set! (-> v1-15 param 6) (-> block param 6)) + (let ((t9-7 send-event-function) + (a1-7 (-> self link next))) + (t9-7 (if a1-7 (-> a1-7 extra process)) v1-15))) + (deactivate self)))) + :enter + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t) + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (flying-lurker-method-20 self) + (when (not (movie?)) + (flying-lurker-calc-speed (meters 15) (meters 30) (meters 0.11666667) (meters 0.083333336)) + (flying-lurker-move) + (flying-lurker-rotate) + (when (and (-> self alt-actor) + (or (< (vector-vector-distance-squared (-> self root trans) (-> self alt-actor extra trans)) 6710886400.0) + (and *target* (< 4194304000000.0 (vector-vector-distance-squared (-> self root trans) (target-pos 0)))))) + (set-or-clear-status! (-> self alt-actor) (entity-perm-status dead) #f) + (entity-birth-no-kill (-> self alt-actor)) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'plunge) + (let ((t9-10 send-event-function) + (v1-13 (-> self alt-actor))) + (t9-10 (if v1-13 (-> v1-13 extra process)) a1-4)))))) + :code + (behavior () + (loop + (when (not (ja-group? flying-lurker-fly-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! flying-lurker-fly-ja)) + (ja :num! (loop! (flying-lurker-calc-anim-speed))) + (suspend) + (when (time-elapsed? (-> self last-look-time) (-> self time-to-next-look)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! flying-lurker-look-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self last-look-time)) + (let* ((f30-0 300.0) + (f28-0 3.0) + (f26-0 5.0) + (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-42 (the-as float (logior #x3f800000 v1-41)))) + (set! (-> self time-to-next-look) (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 v1-42))))))))))) + :post ja-post) (defbehavior flying-lurker-handler flying-lurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -748,126 +529,65 @@ (set! (-> a1-1 param 0) (the-as uint (/ (the-as int (-> arg3 param 0)) 16))) (set! (-> a1-1 param 1) (-> arg3 param 1)) (let ((t9-1 send-event-function) - (v1-11 (-> self link next)) - ) - (t9-1 - (if v1-11 - (-> v1-11 extra process) - ) - a1-1 - ) - ) - ) - ) + (v1-11 (-> self link next))) + (t9-1 (if v1-11 (-> v1-11 extra process)) a1-1)))) (let* ((v1-14 (-> arg3 param 0)) (a0-4 (-> arg3 param 1)) - (v1-15 (logand v1-14 3)) - ) + (v1-15 (logand v1-14 3))) (set! (-> self rank) (the-as int v1-15)) (cond ((< 15 (the-as int a0-4)) (cond - ((zero? v1-15) - (set! (-> self race-seconds) 33000.0) - ) - ((= v1-15 1) - (set! (-> self race-seconds) 34500.0) - ) - (else - (set! (-> self race-seconds) 36000.0) - ) - ) - ) + ((zero? v1-15) (set! (-> self race-seconds) 33000.0)) + ((= v1-15 1) (set! (-> self race-seconds) 34500.0)) + (else (set! (-> self race-seconds) 36000.0)))) ((< 10 (the-as int a0-4)) (cond - ((zero? v1-15) - (set! (-> self race-seconds) 31800.0) - ) - ((= v1-15 1) - (set! (-> self race-seconds) 33300.0) - ) - (else - (set! (-> self race-seconds) 34800.0) - ) - ) - ) + ((zero? v1-15) (set! (-> self race-seconds) 31800.0)) + ((= v1-15 1) (set! (-> self race-seconds) 33300.0)) + (else (set! (-> self race-seconds) 34800.0)))) ((< 5 (the-as int a0-4)) (cond - ((zero? v1-15) - (set! (-> self race-seconds) 30600.0) - ) - ((= v1-15 1) - (set! (-> self race-seconds) 32100.0) - ) - (else - (set! (-> self race-seconds) 33600.0) - ) - ) - ) - ((zero? v1-15) - (set! (-> self race-seconds) 30000.0) - ) - ((= v1-15 1) - (set! (-> self race-seconds) 31500.0) - ) - (else - (set! (-> self race-seconds) 33000.0) - ) - ) - ) + ((zero? v1-15) (set! (-> self race-seconds) 30600.0)) + ((= v1-15 1) (set! (-> self race-seconds) 32100.0)) + (else (set! (-> self race-seconds) 33600.0)))) + ((zero? v1-15) (set! (-> self race-seconds) 30000.0)) + ((= v1-15 1) (set! (-> self race-seconds) 31500.0)) + (else (set! (-> self race-seconds) 33000.0)))) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self race-start-time) (-> *display* game-frame-counter)) - (go flying-lurker-fly) - ) - ) - ) + (go flying-lurker-fly)))) (defbehavior flying-lurker-play-intro flying-lurker () (logclear! (-> self mask) (process-mask actor-pause)) (close-specific-task! (game-task plunger-lurker-hit) (task-status unknown)) (while (and *target* (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (suspend) - ) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (suspend)) (while (not (process-grab? *target*)) - (suspend) - ) + (suspend)) (kill-current-level-hint '(notice) '() 'exit) (while (or (-> *setting-control* current talking) (-> *setting-control* current spooling) (-> *setting-control* current hint) - (!= (-> *level* loading-level) (-> *level* level-default)) - ) - (suspend) - ) + (!= (-> *level* loading-level) (-> *level* level-default))) + (suspend)) (suspend) (kill-current-level-hint '() '() 'die) (suspend) - (let ((gp-1 - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *ogrecam-sg* #f :to self)) - ) - ) + (let ((gp-1 (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *ogrecam-sg* #f :to self)))) (let ((s5-0 (the-as othercam (get-process *default-dead-pool* othercam #x4000)))) (ppointer->handle (when s5-0 - (let ((t9-8 (method-of-type othercam activate))) - (t9-8 s5-0 (-> gp-1 process 0) 'othercam (the-as pointer #x70004000)) - ) + (let ((t9-8 (method-of-type othercam activate))) (t9-8 s5-0 (-> gp-1 process 0) 'othercam (the-as pointer #x70004000))) (run-now-in-process s5-0 othercam-init-by-other (-> gp-1 process 0) 4 #f #t) - (-> s5-0 ppointer) - ) - ) - ) - (send-event - (handle->process gp-1) - 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) - (set! (-> self draw status) v0-0) - (the-as uint v0-0) - ) - ) - ) + (-> s5-0 ppointer)))) + (send-event (handle->process gp-1) + 'eval + (lambda :behavior manipy () + (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) + (set! (-> self draw status) v0-0) + (the-as uint v0-0)))) (send-event (-> gp-1 process 0) 'clone-copy-trans #f) (send-event (-> gp-1 process 0) 'anim-mode 'clone-anim) (let ((a1-12 (new 'stack-no-clear 'event-message-block))) @@ -877,308 +597,185 @@ (set! (-> a1-12 param 0) (the-as uint (process->handle self))) (set! (-> a1-12 param 1) (the-as uint 2)) (let ((t9-13 send-event-function) - (v1-58 (-> self link next)) - ) - (t9-13 - (if v1-58 - (-> v1-58 extra process) - ) - a1-12 - ) - ) - ) - (ja-play-spooled-anim - (new 'static 'spool-anim :name "flying-lurker-intro" :index 7 :parts 2 :command-list '()) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (if (handle->process gp-1) - (deactivate (-> gp-1 process 0)) - ) - ) + (v1-58 (-> self link next))) + (t9-13 (if v1-58 (-> v1-58 extra process)) a1-12))) + (ja-play-spooled-anim (new 'static 'spool-anim :name "flying-lurker-intro" :index 7 :parts 2 :command-list '()) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (if (handle->process gp-1) (deactivate (-> gp-1 process 0)))) (process-release? *target*) - (process-spawn-function - process - (lambda :behavior process - () - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 0.1)) - (suspend) - ) - ) + (process-spawn-function process + (lambda :behavior process () + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 0.1)) (suspend))) (level-hint-spawn (text-id ogre-race-hint) "asstvb24" (the-as entity #f) *entity-pool* (game-task none)) - (none) - ) - :to self - ) - (none) - ) + (none)) + :to + self) + (none)) (defstate flying-lurker-start (flying-lurker) :event flying-lurker-handler - :exit (behavior () - (remove-setting! 'allow-progress) - ) - :code (behavior () - (when (play-movie?) - (set-setting! 'allow-progress #f 0.0 0) - (flying-lurker-play-intro) - ) - (flying-lurker-inc-try-count) - (ja-channel-set! 1) - (ja :group! flying-lurker-fly-ja) - (let* ((v1-8 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-9 (the-as float (logior #x3f800000 v1-8))) - (f0-2 (+ -1.0 v1-9)) - ) - (cond - ((< 0.8333333 f0-2) - (send-event self 'fly-away 18 (-> self try-count)) - ) - ((< 0.6666667 f0-2) - (send-event self 'fly-away 33 (-> self try-count)) - ) - ((< 0.5 f0-2) - (send-event self 'fly-away 258 (-> self try-count)) - ) - ((< 0.33333334 f0-2) - (send-event self 'fly-away 288 (-> self try-count)) - ) - ((< 0.16666667 f0-2) - (send-event self 'fly-away 513 (-> self try-count)) - ) - (else - (send-event self 'fly-away 528 (-> self try-count)) - ) - ) - ) - ) - :post ja-post - ) + :exit + (behavior () + (remove-setting! 'allow-progress)) + :code + (behavior () + (when (play-movie?) + (set-setting! 'allow-progress #f 0.0 0) + (flying-lurker-play-intro)) + (flying-lurker-inc-try-count) + (ja-channel-set! 1) + (ja :group! flying-lurker-fly-ja) + (let* ((v1-8 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-9 (the-as float (logior #x3f800000 v1-8))) + (f0-2 (+ -1.0 v1-9))) + (cond + ((< 0.8333333 f0-2) (send-event self 'fly-away 18 (-> self try-count))) + ((< 0.6666667 f0-2) (send-event self 'fly-away 33 (-> self try-count))) + ((< 0.5 f0-2) (send-event self 'fly-away 258 (-> self try-count))) + ((< 0.33333334 f0-2) (send-event self 'fly-away 288 (-> self try-count))) + ((< 0.16666667 f0-2) (send-event self 'fly-away 513 (-> self try-count))) + (else (send-event self 'fly-away 528 (-> self try-count)))))) + :post ja-post) (defstate flying-lurker-clone (flying-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (let ((v1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-1 from) proc) - (set! (-> v1-1 num-params) argc) - (set! (-> v1-1 message) message) - (set! (-> v1-1 param 0) (-> block param 0)) - (set! (-> v1-1 param 1) (-> block param 1)) - (set! (-> v1-1 param 2) (-> block param 2)) - (set! (-> v1-1 param 3) (-> block param 3)) - (set! (-> v1-1 param 4) (-> block param 4)) - (set! (-> v1-1 param 5) (-> block param 5)) - (set! (-> v1-1 param 6) (-> block param 6)) - (let ((t9-0 send-event-function) - (a1-1 (-> self link next)) - ) - (t9-0 - (if a1-1 - (-> a1-1 extra process) - ) - v1-1 - ) - ) - ) - (cleanup-for-death self) - (deactivate self) - ) - (('sleep) - (let ((v1-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-6 from) proc) - (set! (-> v1-6 num-params) argc) - (set! (-> v1-6 message) message) - (set! (-> v1-6 param 0) (-> block param 0)) - (set! (-> v1-6 param 1) (-> block param 1)) - (set! (-> v1-6 param 2) (-> block param 2)) - (set! (-> v1-6 param 3) (-> block param 3)) - (set! (-> v1-6 param 4) (-> block param 4)) - (set! (-> v1-6 param 5) (-> block param 5)) - (set! (-> v1-6 param 6) (-> block param 6)) - (let ((t9-3 send-event-function) - (a1-3 (-> self link next)) - ) - (t9-3 - (if a1-3 - (-> a1-3 extra process) - ) - v1-6 - ) - ) - ) - (go flying-lurker-sleep) - ) - (('reset) - (let ((v1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-9 from) proc) - (set! (-> v1-9 num-params) argc) - (set! (-> v1-9 message) message) - (set! (-> v1-9 param 0) (-> block param 0)) - (set! (-> v1-9 param 1) (-> block param 1)) - (set! (-> v1-9 param 2) (-> block param 2)) - (set! (-> v1-9 param 3) (-> block param 3)) - (set! (-> v1-9 param 4) (-> block param 4)) - (set! (-> v1-9 param 5) (-> block param 5)) - (set! (-> v1-9 param 6) (-> block param 6)) - (let ((t9-5 send-event-function) - (a1-5 (-> self link next)) - ) - (t9-5 - (if a1-5 - (-> a1-5 extra process) - ) - v1-9 - ) - ) - ) - (deactivate self) - ) - (else - (flying-lurker-handler proc argc message block) - ) - ) - ) - :exit (behavior () - (ja-channel-set! 0) - ) - :code (behavior ((arg0 handle) (arg1 string)) - (clone-anim arg0 3 #t arg1) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) + (let ((v1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-1 from) proc) + (set! (-> v1-1 num-params) argc) + (set! (-> v1-1 message) message) + (set! (-> v1-1 param 0) (-> block param 0)) + (set! (-> v1-1 param 1) (-> block param 1)) + (set! (-> v1-1 param 2) (-> block param 2)) + (set! (-> v1-1 param 3) (-> block param 3)) + (set! (-> v1-1 param 4) (-> block param 4)) + (set! (-> v1-1 param 5) (-> block param 5)) + (set! (-> v1-1 param 6) (-> block param 6)) + (let ((t9-0 send-event-function) + (a1-1 (-> self link next))) + (t9-0 (if a1-1 (-> a1-1 extra process)) v1-1))) + (cleanup-for-death self) + (deactivate self)) + (('sleep) + (let ((v1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-6 from) proc) + (set! (-> v1-6 num-params) argc) + (set! (-> v1-6 message) message) + (set! (-> v1-6 param 0) (-> block param 0)) + (set! (-> v1-6 param 1) (-> block param 1)) + (set! (-> v1-6 param 2) (-> block param 2)) + (set! (-> v1-6 param 3) (-> block param 3)) + (set! (-> v1-6 param 4) (-> block param 4)) + (set! (-> v1-6 param 5) (-> block param 5)) + (set! (-> v1-6 param 6) (-> block param 6)) + (let ((t9-3 send-event-function) + (a1-3 (-> self link next))) + (t9-3 (if a1-3 (-> a1-3 extra process)) v1-6))) + (go flying-lurker-sleep)) + (('reset) + (let ((v1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-9 from) proc) + (set! (-> v1-9 num-params) argc) + (set! (-> v1-9 message) message) + (set! (-> v1-9 param 0) (-> block param 0)) + (set! (-> v1-9 param 1) (-> block param 1)) + (set! (-> v1-9 param 2) (-> block param 2)) + (set! (-> v1-9 param 3) (-> block param 3)) + (set! (-> v1-9 param 4) (-> block param 4)) + (set! (-> v1-9 param 5) (-> block param 5)) + (set! (-> v1-9 param 6) (-> block param 6)) + (let ((t9-5 send-event-function) + (a1-5 (-> self link next))) + (t9-5 (if a1-5 (-> a1-5 extra process)) v1-9))) + (deactivate self)) + (else (flying-lurker-handler proc argc message block)))) + :exit + (behavior () + (ja-channel-set! 0)) + :code + (behavior ((arg0 handle) (arg1 string)) + (clone-anim arg0 3 #t arg1))) (defstate flying-lurker-idle (flying-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('saw-player) - (set! (-> self take-off) #t) - (when (-> self link prev) - (entity-birth-no-kill (-> self link prev)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) proc) - (set! (-> a1-1 num-params) argc) - (set! (-> a1-1 message) message) - (set! (-> a1-1 param 0) (-> block param 0)) - (set! (-> a1-1 param 1) (-> block param 1)) - (set! (-> a1-1 param 2) (-> block param 2)) - (set! (-> a1-1 param 3) (-> block param 3)) - (set! (-> a1-1 param 4) (-> block param 4)) - (set! (-> a1-1 param 5) (-> block param 5)) - (set! (-> a1-1 param 6) (-> block param 6)) - (let ((t9-1 send-event-function) - (v1-13 (-> self link prev)) - ) - (t9-1 - (if v1-13 - (-> v1-13 extra process) - ) - a1-1 - ) - ) - ) - ) - ) - (('clone) - (when (-> self link next) - (entity-birth-no-kill (-> self link next)) - (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) 'clone) - (set! (-> a1-2 param 0) (-> block param 0)) - (set! (-> a1-2 param 1) (+ (-> block param 1) -1)) - (let ((t9-3 send-event-function) - (v1-25 (-> self link next)) - ) - (t9-3 - (if v1-25 - (-> v1-25 extra process) - ) - a1-2 - ) - ) - ) - ) - (case (-> block param 1) - ((2) - (go flying-lurker-clone (the-as handle (-> block param 0)) "flying-lurker-b-") - ) - ((1) - (go flying-lurker-clone (the-as handle (-> block param 0)) "flying-lurker-c-") - ) - ) - ) - (else - (flying-lurker-handler proc argc message block) - ) - ) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (spool-push *art-control* "flying-lurker-intro" 0 self -99.0) - (if (and (-> self take-off) (first?)) - (go flying-lurker-start) - ) - ) - :code (behavior () - (local-vars (gp-0 int) (f30-0 float)) - 1.0 - 0 - (cond - ((not (-> self link next)) - (set! f30-0 0.9) - (set! gp-0 0) - ) - ((not (-> self link prev)) - (set! f30-0 1.0) - (set! gp-0 5) - ) - (else - (set! f30-0 1.2) - (set! gp-0 11) - ) - ) - (loop + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('saw-player) + (set! (-> self take-off) #t) + (when (-> self link prev) + (entity-birth-no-kill (-> self link prev)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) proc) + (set! (-> a1-1 num-params) argc) + (set! (-> a1-1 message) message) + (set! (-> a1-1 param 0) (-> block param 0)) + (set! (-> a1-1 param 1) (-> block param 1)) + (set! (-> a1-1 param 2) (-> block param 2)) + (set! (-> a1-1 param 3) (-> block param 3)) + (set! (-> a1-1 param 4) (-> block param 4)) + (set! (-> a1-1 param 5) (-> block param 5)) + (set! (-> a1-1 param 6) (-> block param 6)) + (let ((t9-1 send-event-function) + (v1-13 (-> self link prev))) + (t9-1 (if v1-13 (-> v1-13 extra process)) a1-1))))) + (('clone) + (when (-> self link next) + (entity-birth-no-kill (-> self link next)) + (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) 'clone) + (set! (-> a1-2 param 0) (-> block param 0)) + (set! (-> a1-2 param 1) (+ (-> block param 1) -1)) + (let ((t9-3 send-event-function) + (v1-25 (-> self link next))) + (t9-3 (if v1-25 (-> v1-25 extra process)) a1-2)))) + (case (-> block param 1) + ((2) (go flying-lurker-clone (the-as handle (-> block param 0)) "flying-lurker-b-")) + ((1) (go flying-lurker-clone (the-as handle (-> block param 0)) "flying-lurker-c-")))) + (else (flying-lurker-handler proc argc message block)))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (spool-push *art-control* "flying-lurker-intro" 0 self -99.0) + (if (and (-> self take-off) (first?)) (go flying-lurker-start))) + :code + (behavior () + (local-vars (gp-0 int) (f30-0 float)) + 1.0 + 0 (cond - ((play-movie?) - (ja-channel-set! 0) - (if (= (get-task-status (game-task plunger-lurker-hit)) (task-status invalid)) - (go flying-lurker-die) - ) - (when (and *target* (>= 172032.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (process-grab? *target*) - (let ((s5-0 (current-time))) - (until (time-elapsed? s5-0 (seconds 1)) - (suspend) - ) - ) - (process-release? *target*) - (send-event self 'saw-player) - ) - (suspend) - 0 - ) - (else - (ja :group! flying-lurker-fly-ja) - (ja-no-eval :group! flying-lurker-fly-ja :num! (seek! max f30-0) :frame-num (the float gp-0)) - (until (ja-done? 0) - (if (and *target* (>= 172032.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (send-event self 'saw-player) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (set! gp-0 0) - ) - ) - ) - ) - :post ja-post - ) + ((not (-> self link next)) (set! f30-0 0.9) (set! gp-0 0)) + ((not (-> self link prev)) (set! f30-0 1.0) (set! gp-0 5)) + (else (set! f30-0 1.2) (set! gp-0 11))) + (loop + (cond + ((play-movie?) + (ja-channel-set! 0) + (if (= (get-task-status (game-task plunger-lurker-hit)) (task-status invalid)) (go flying-lurker-die)) + (when (and *target* (>= 172032.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (process-grab? *target*) + (let ((s5-0 (current-time))) (until (time-elapsed? s5-0 (seconds 1)) (suspend))) + (process-release? *target*) + (send-event self 'saw-player)) + (suspend) + 0) + (else + (ja :group! flying-lurker-fly-ja) + (ja-no-eval :group! flying-lurker-fly-ja :num! (seek! max f30-0) :frame-num (the float gp-0)) + (until (ja-done? 0) + (if (and *target* (>= 172032.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (send-event self 'saw-player)) + (suspend) + (ja :num! (seek! max f30-0))) + (set! gp-0 0))))) + :post ja-post) (defmethod init-from-entity! ((this flying-lurker) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -1194,13 +791,8 @@ ((play-movie?) (eval-path-curve! (-> this path) (-> this root trans) (-> this curve-position) 'interp) (path-control-method-14 (-> this path) (-> this tangent) (-> this curve-position)) - (quaternion-identity! (-> this root quat)) - ) - (else - (flying-lurker-move) - (flying-lurker-rotate) - ) - ) + (quaternion-identity! (-> this root quat))) + (else (flying-lurker-move) (flying-lurker-rotate))) (set! (-> this y-offset) 0.0) (set! (-> this y-vel) 0.0) (set! (-> this last-look-time) 0) @@ -1210,19 +802,13 @@ (set! (-> this take-off) #f) (set-vector! (-> this default-bounds) 0.0 8192.0 0.0 24576.0) (set! (-> this draw bounds quad) (-> this default-bounds quad)) - (set! (-> this draw shadow-ctrl) - (new 'process 'shadow-control 131072.0 151552.0 614400.0 (the-as float 60) 409600.0) - ) - (let ((v1-27 (-> this draw shadow-ctrl))) - (logclear! (-> v1-27 settings flags) (shadow-flags disable-draw)) - ) + (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control 131072.0 151552.0 614400.0 (the-as float 60) 409600.0)) + (let ((v1-27 (-> this draw shadow-ctrl))) (logclear! (-> v1-27 settings flags) (shadow-flags disable-draw))) 0 (set! (-> this alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this shadow-backup) (-> this draw shadow)) (set! (-> this try-counted) #f) (if (= (get-task-status (game-task plunger-lurker-hit)) (task-status invalid)) - (go flying-lurker-die) - (go flying-lurker-idle) - ) - (none) - ) + (go flying-lurker-die) + (go flying-lurker-idle)) + (none)) diff --git a/goal_src/jak1/levels/ogre/ogre-obs.gc b/goal_src/jak1/levels/ogre/ogre-obs.gc index 4ebaa1ec2b..68500203ea 100644 --- a/goal_src/jak1/levels/ogre/ogre-obs.gc +++ b/goal_src/jak1/levels/ogre/ogre-obs.gc @@ -1,372 +1,328 @@ ;;-*-Lisp-*- (in-package goal) (bundles "OGR.DGO") - (require "engine/anim/joint-mod-h.gc") (require "engine/game/projectiles.gc") (require "engine/common-obs/rigid-body.gc") -;; name: ogre-obs.gc -;; name in dgo: ogre-obs -;; dgos: L1, OGR - - ;; DECOMP BEGINS -(defskelgroup *med-res-snow-sg* medres-snow medres-snow-lod0-jg medres-snow-idle-ja - ((medres-snow-lod0-mg (meters 999999))) - :bounds (static-spherem -390 150 70 410) - ) +(defskelgroup *med-res-snow-sg* + medres-snow + medres-snow-lod0-jg + medres-snow-idle-ja + ((medres-snow-lod0-mg (meters 999999))) + :bounds (static-spherem -390 150 70 410)) (defpartgroup group-tntbarrel-BIG-explosion :id 473 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2234 :period (seconds 10) :length (seconds 0.017)) - (sp-item 2235 :period (seconds 10) :length (seconds 0.017)) - (sp-item 2236 :period (seconds 10) :length (seconds 0.135)) - (sp-item 2237 :period (seconds 10) :length (seconds 0.135)) - (sp-item 2238 :period (seconds 10) :length (seconds 0.135)) - ) - ) + :parts + ((sp-item 2234 :period (seconds 10) :length (seconds 0.017)) + (sp-item 2235 :period (seconds 10) :length (seconds 0.017)) + (sp-item 2236 :period (seconds 10) :length (seconds 0.135)) + (sp-item 2237 :period (seconds 10) :length (seconds 0.135)) + (sp-item 2238 :period (seconds 10) :length (seconds 0.135)))) (defpart 2236 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 2.4) (meters 1.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.32) (meters 0.42666668)) - (:scalevel-x (meters -0.009333333)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.0005) (meters -0.0005)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2239) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 2.4) (meters 1.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.32) (meters 0.42666668)) + (:scalevel-x (meters -0.009333333)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.0005) (meters -0.0005)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2239) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 12)))) (defpart 2239 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2238 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 32)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 3.4133334)) - (:fade-g -3.2666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 32)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 3.4133334)) + (:fade-g -3.2666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2234 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 128)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 128)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)))) (defpart 2235 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 32)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 32)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)))) (defpart 2237 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 48.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 16) (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 48.0 48.0) - (:vel-y (meters 0.32) (meters 0.21333334)) - (:scalevel-x (meters 0.053333335)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.08533333) - (:accel-y (meters 0.0005) (meters 0.0005)) - (:friction 0.85) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2240) - (:conerot-x (degrees 0) (degrees 160)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 8)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 48.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 16) (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 48.0 48.0) + (:vel-y (meters 0.32) (meters 0.21333334)) + (:scalevel-x (meters 0.053333335)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08533333) + (:accel-y (meters 0.0005) (meters 0.0005)) + (:friction 0.85) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2240) + (:conerot-x (degrees 0) (degrees 160)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 8)))) (defpart 2240 - :init-specs ((:fade-r -0.26666668) - (:fade-g -0.26666668) - (:fade-b -0.52916664) - (:next-time (seconds 0.8)) - (:next-launcher 2241) - ) - ) + :init-specs ((:fade-r -0.26666668) (:fade-g -0.26666668) (:fade-b -0.52916664) (:next-time (seconds 0.8)) (:next-launcher 2241))) (defpart 2241 - :init-specs ((:fade-r -0.24380952) - (:fade-g -0.12190476) - (:fade-b 0.0) - (:fade-a -0.09142857) - (:next-time (seconds 1.75)) - (:next-launcher 2242) - ) - ) + :init-specs + ((:fade-r -0.24380952) + (:fade-g -0.12190476) + (:fade-b 0.0) + (:fade-a -0.09142857) + (:next-time (seconds 1.75)) + (:next-launcher 2242))) (defpart 2242 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-tntbarrel-explosion :id 474 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2080 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2081 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2080 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2081 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.067)))) (defpart 2080 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2083) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2083) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2083 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2082 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.85333335)) - (:fade-g -3.2666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.85333335)) + (:fade-g -3.2666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2079 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2081 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2084) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2084) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 3)))) (defpart 2084 - :init-specs ((:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b -2.1166666) - (:next-time (seconds 0.2)) - (:next-launcher 2085) - ) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-b -2.1166666) (:next-time (seconds 0.2)) (:next-launcher 2085))) (defpart 2085 - :init-specs ((:fade-r -0.5688889) - (:fade-g -0.28444445) - (:fade-b 0.0) - (:fade-a -0.21333334) - (:next-time (seconds 0.75)) - (:next-launcher 2086) - ) - ) + :init-specs + ((:fade-r -0.5688889) + (:fade-g -0.28444445) + (:fade-b 0.0) + (:fade-a -0.21333334) + (:next-time (seconds 0.75)) + (:next-launcher 2086))) (defpart 2086 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) -(defskelgroup *tntbarrel-sg* tntbarrel tntbarrel-lod0-jg tntbarrel-idle-ja - ((tntbarrel-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 4) - ) +(defskelgroup *tntbarrel-sg* + tntbarrel + tntbarrel-lod0-jg + tntbarrel-idle-ja + ((tntbarrel-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 4)) (deftype tntbarrel (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:state-methods - idle - (die symbol) - ) - ) - + idle + (die symbol))) (defstate die (tntbarrel) :virtual #t - :code (behavior ((arg0 symbol)) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (sound-play "dcrate-break") - (if arg0 - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 473) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 474) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - ) - (suspend) - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior ((arg0 symbol)) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (sound-play "dcrate-break") + (if arg0 + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 473) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 474) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*)) + (suspend) + (cleanup-for-death self) + (deactivate self))) (defstate idle (tntbarrel) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die-big) - (go-virtual die #t) - ) - (('die) - (go-virtual die #f) - ) - (('attack 'touch) - (send-event proc 'attack-invinc (-> block param 0) (static-attack-info ((mode 'death)))) - (go-virtual die #f) - ) - ) - ) - :code (behavior () - (transform-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die-big) (go-virtual die #t)) + (('die) (go-virtual die #f)) + (('attack 'touch) + (send-event proc 'attack-invinc (-> block param 0) (static-attack-info ((mode 'death)))) + (go-virtual die #f)))) + :code + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) (defmethod init-from-entity! ((this tntbarrel) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -377,152 +333,128 @@ (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 9216.0 0.0 14336.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *tntbarrel-sg* '()) (set-vector! (-> this draw color-mult) 1.3 1.3 1.3 1.0) (go (method-of-object this idle)) - (none) - ) - -(defskelgroup *ogre-step-a-sg* ogre-step ogre-step-a-lod0-jg ogre-step-a-idle-ja - ((ogre-step-a-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3 0 5) - ) - -(defskelgroup *ogre-step-b-sg* ogre-step ogre-step-b-lod0-jg ogre-step-b-idle-ja - ((ogre-step-b-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3 0 5) - ) - -(defskelgroup *ogre-step-c-sg* ogre-step ogre-step-c-lod0-jg ogre-step-c-idle-ja - ((ogre-step-c-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3 0 6.5) - ) - -(defskelgroup *ogre-isle-a-sg* ogre-isle ogre-isle-a-lod0-jg ogre-isle-a-idle-ja - ((ogre-isle-a-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) - -(defskelgroup *ogre-isle-b-sg* ogre-isle ogre-isle-b-lod0-jg ogre-isle-b-idle-ja - ((ogre-isle-b-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) - -(defskelgroup *ogre-isle-c-sg* ogre-isle ogre-isle-c-lod0-jg ogre-isle-c-idle-ja - ((ogre-isle-c-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) - -(defskelgroup *ogre-isle-d-sg* ogre-isle ogre-isle-d-lod0-jg ogre-isle-d-idle-ja - ((ogre-isle-d-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) + (none)) + +(defskelgroup *ogre-step-a-sg* + ogre-step + ogre-step-a-lod0-jg + ogre-step-a-idle-ja + ((ogre-step-a-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3 0 5)) + +(defskelgroup *ogre-step-b-sg* + ogre-step + ogre-step-b-lod0-jg + ogre-step-b-idle-ja + ((ogre-step-b-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3 0 5)) + +(defskelgroup *ogre-step-c-sg* + ogre-step + ogre-step-c-lod0-jg + ogre-step-c-idle-ja + ((ogre-step-c-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3 0 6.5)) + +(defskelgroup *ogre-isle-a-sg* + ogre-isle + ogre-isle-a-lod0-jg + ogre-isle-a-idle-ja + ((ogre-isle-a-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) + +(defskelgroup *ogre-isle-b-sg* + ogre-isle + ogre-isle-b-lod0-jg + ogre-isle-b-idle-ja + ((ogre-isle-b-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) + +(defskelgroup *ogre-isle-c-sg* + ogre-isle + ogre-isle-c-lod0-jg + ogre-isle-c-idle-ja + ((ogre-isle-c-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) + +(defskelgroup *ogre-isle-d-sg* + ogre-isle + ogre-isle-d-lod0-jg + ogre-isle-d-idle-ja + ((ogre-isle-d-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (deftype ogre-plat (rigid-body-platform) - ((anchor-point vector :inline) - (idle-y-offset float) - (float-y-offset float) - (delay time-frame) - (active symbol) - (triggered entity-actor) - ) - ) - + ((anchor-point vector :inline) + (idle-y-offset float) + (float-y-offset float) + (delay time-frame) + (active symbol) + (triggered entity-actor))) (defmethod rigid-body-platform-method-23 ((this ogre-plat) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) (defstate rigid-body-platform-idle (ogre-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (set! (-> self triggered) (the-as entity-actor #t)) - (set! (-> self delay) (the-as time-frame (-> block param 0))) - (let ((v0-0 (current-time))) - (set! (-> self state-time) v0-0) - v0-0 - ) - ) - ) - ) - :trans (behavior () - (cond - ((-> self active) - (when (and *target* (>= (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (if (-> self triggered) - (sound-play "rock-in-lava") - ) - (go-virtual rigid-body-platform-float) - ) - ) - (else - (if (and (-> self triggered) (time-elapsed? (-> self state-time) (-> self delay))) - (set! (-> self active) #t) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (set! (-> self triggered) (the-as entity-actor #t)) + (set! (-> self delay) (the-as time-frame (-> block param 0))) + (let ((v0-0 (current-time))) (set! (-> self state-time) v0-0) v0-0)))) + :trans + (behavior () + (cond + ((-> self active) + (when (and *target* + (>= (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (if (-> self triggered) (sound-play "rock-in-lava")) + (go-virtual rigid-body-platform-float))) + (else (if (and (-> self triggered) (time-elapsed? (-> self state-time) (-> self delay))) (set! (-> self active) #t))))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (loop + (suspend))) + :post ja-post) (defstate rigid-body-platform-float (ogre-plat) :virtual #t :event rigid-body-platform-event-handler - :trans (behavior () - (cond - ((or (not *target*) (< (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (let ((f30-1 (-> self idle-y-offset))) - (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) - (if (= (-> self float-height-offset) f30-1) - (go-virtual rigid-body-platform-idle) - ) - ) - ) - (else - (seek! (-> self float-height-offset) (-> self float-y-offset) (* 32768.0 (seconds-per-frame))) - ) - ) - ) - :code (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - :post rigid-body-platform-post - ) + :trans + (behavior () + (cond + ((or (not *target*) + (< (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (let ((f30-1 (-> self idle-y-offset))) + (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) + (if (= (-> self float-height-offset) f30-1) (go-virtual rigid-body-platform-idle)))) + (else (seek! (-> self float-height-offset) (-> self float-y-offset) (* 32768.0 (seconds-per-frame)))))) + :code + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (loop + (suspend))) + :post rigid-body-platform-post) (defmethod rigid-body-platform-method-30 ((this ogre-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -531,15 +463,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-plat)) (set! (-> this float-height-offset) (-> this idle-y-offset)) @@ -547,53 +476,44 @@ (dotimes (s4-0 s5-0) (let ((s3-0 (-> this control-point-array data s4-0))) (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0)))) - (f28-0 (-> this root-overlay root-prim local-sphere w)) - ) + (f28-0 (-> this 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 z) (* f28-0 (cos f30-0)))) + (set! (-> s3-0 local-pos w) 1.0)))) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (set! (-> this active) #f) (set! (-> this triggered) #f) 0 - (none) - ) - -(define *ogre-step-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 2.0 - :max-buoyancy-depth (meters 4) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 0.5 - :player-dive-factor 1.0 - :player-force-distance (meters 5) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 100) - :linear-damping 0.9 - :angular-damping 0.9 - :control-point-count 6 - :mass 2.0 - :inertial-tensor-x (meters 4) - :inertial-tensor-y (meters 10) - :inertial-tensor-z (meters 4) - :idle-distance (meters 150) - :platform #t - :sound-name "lava-plat" - ) - ) - -(deftype ogre-step (ogre-plat) - () - ) - + (none)) + +(define *ogre-step-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 4) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 5) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 100) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 4) + :inertial-tensor-y (meters 10) + :inertial-tensor-z (meters 4) + :idle-distance (meters 150) + :platform #t + :sound-name "lava-plat")) + +(deftype ogre-step (ogre-plat) ()) (defmethod rigid-body-platform-method-31 ((this ogre-step)) (set! (-> this idle-y-offset) -28672.0) @@ -602,106 +522,81 @@ (rigid-body-platform-method-29 this *ogre-step-constants*) (call-parent-method this) (let ((a0-5 (entity-actor-lookup (-> this entity) 'alt-actor 0))) - (if (and a0-5 (logtest? (-> a0-5 extra perm status) (entity-perm-status complete))) - (set! (-> this active) #t) - ) - ) + (if (and a0-5 (logtest? (-> a0-5 extra perm status) (entity-perm-status complete))) (set! (-> this active) #t))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-34 ((this ogre-step)) (if (-> this active) - (go (method-of-object this rigid-body-platform-float)) - (go (method-of-object this rigid-body-platform-idle)) - ) + (go (method-of-object this rigid-body-platform-float)) + (go (method-of-object this rigid-body-platform-idle))) 0 - (none) - ) - -(deftype ogre-step-a (ogre-step) - () - ) - + (none)) -(deftype ogre-step-b (ogre-step) - () - ) +(deftype ogre-step-a (ogre-step) ()) +(deftype ogre-step-b (ogre-step) ()) -(deftype ogre-step-c (ogre-step) - () - ) - - -(deftype ogre-step-d (ogre-step) - () - ) +(deftype ogre-step-c (ogre-step) ()) +(deftype ogre-step-d (ogre-step) ()) (defmethod rigid-body-platform-method-31 ((this ogre-step-a)) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 12288.0 0.0 20480.0) (initialize-skeleton this *ogre-step-a-sg* '()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-step-b)) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 12288.0 0.0 20480.0) (initialize-skeleton this *ogre-step-b-sg* '()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-step-c)) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 12288.0 0.0 26624.0) (initialize-skeleton this *ogre-step-c-sg* '()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-step-d)) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 12288.0 0.0 20480.0) (initialize-skeleton this *ogre-step-b-sg* '()) (call-parent-method this) 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) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 0.5 - :player-dive-factor 1.0 - :player-force-distance (meters 2) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 4000) - :linear-damping 0.9 - :angular-damping 0.9 - :control-point-count 6 - :mass 2.0 - :inertial-tensor-x (meters 10) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 10) - :cm-joint-y (meters 1) - :idle-distance (meters 150) - :platform #t - :sound-name #f - ) - ) - -(deftype ogre-isle (ogre-plat) - () - ) - + (none)) + +(define *ogre-isle-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 2) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 2) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 4000) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 10) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 10) + :cm-joint-y (meters 1) + :idle-distance (meters 150) + :platform #t + :sound-name #f)) + +(deftype ogre-isle (ogre-plat) ()) (defmethod rigid-body-platform-method-31 ((this ogre-isle)) (set! (-> this idle-y-offset) -6144.0) @@ -710,23 +605,13 @@ (call-parent-method this) (set! (-> this active) #t) 0 - (none) - ) + (none)) -(deftype ogre-isle-b (ogre-isle) - () - ) +(deftype ogre-isle-b (ogre-isle) ()) +(deftype ogre-isle-c (ogre-isle) ()) -(deftype ogre-isle-c (ogre-isle) - () - ) - - -(deftype ogre-isle-d (ogre-isle) - () - ) - +(deftype ogre-isle-d (ogre-isle) ()) (defmethod rigid-body-platform-method-31 ((this ogre-isle-b)) (+! (-> this root-overlay trans x) -8192.0) @@ -734,8 +619,7 @@ (initialize-skeleton this *ogre-isle-b-sg* '()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-isle-c)) (+! (-> this root-overlay trans x) -8192.0) @@ -743,8 +627,7 @@ (initialize-skeleton this *ogre-isle-b-sg* '()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-isle-d)) (+! (-> this root-overlay trans x) -8192.0) @@ -753,37 +636,30 @@ (initialize-skeleton this *ogre-isle-d-sg* '()) (call-parent-method this) 0 - (none) - ) + (none)) -(defskelgroup *ogre-bridge-sg* ogre-bridge ogre-bridge-lod0-jg ogre-bridge-idle-ja - ((ogre-bridge-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 52) - :longest-edge (meters 4.5) - ) +(defskelgroup *ogre-bridge-sg* + ogre-bridge + ogre-bridge-lod0-jg + ogre-bridge-idle-ja + ((ogre-bridge-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 52) + :longest-edge (meters 4.5)) (deftype ogre-bridge (process-drawable) - ((root collide-shape-moving :override) - (joint-mod-array joint-mod 8) - (dead-joint-count int8) - ) + ((root collide-shape-moving :override) + (joint-mod-array joint-mod 8) + (dead-joint-count int8)) (:states - ogre-bridge-activate - ogre-bridge-activated - ogre-bridge-break - ogre-bridge-idle - ) - ) - + ogre-bridge-activate + ogre-bridge-activated + ogre-bridge-break + ogre-bridge-idle)) (defmethod relocate ((this ogre-bridge) (arg0 int)) (dotimes (v1-0 8) - (if (nonzero? (-> this joint-mod-array v1-0)) - (&+! (-> this joint-mod-array v1-0) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this joint-mod-array v1-0)) (&+! (-> this joint-mod-array v1-0) arg0))) + (call-parent-method this arg0)) (defbehavior ogre-bridge-update-joints ogre-bridge () (let ((v1-1 (min 8 (-> self dead-joint-count)))) @@ -791,125 +667,74 @@ (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)) - ) - ) - ) + (set! (-> a1-2 trans y) (the-as float #t))))) 0 - (none) - ) + (none)) (defstate ogre-bridge-idle (ogre-bridge) - :exit (behavior () - (ogre-bridge-update-joints) - ) - :trans (behavior () - (if (and (and *target* (>= 286720.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - (go ogre-bridge-activate) - ) - 0 - ) - :code (behavior () - (ja-post) - (loop - (suspend) - ) - ) - ) + :exit + (behavior () + (ogre-bridge-update-joints)) + :trans + (behavior () + (if (and (and *target* (>= 286720.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (send-event *target* 'query 'powerup (pickup-type eco-blue))) + (go ogre-bridge-activate)) + 0) + :code + (behavior () + (ja-post) + (loop + (suspend)))) (defstate ogre-bridge-activate (ogre-bridge) - :code (behavior () - (let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (when (if v1-0 - (not (send-event - (if v1-0 - (-> v1-0 extra process) - ) - 'next-stage - ) - ) - ) + :code + (behavior () + (let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (when (if v1-0 (not (send-event (if v1-0 (-> v1-0 extra process)) 'next-stage))) + (suspend) + 0)) + (ja-no-eval :group! ogre-bridge-assemble-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (rand-vu-percent? 0.2) (spawn-projectile-blue *target*)) (suspend) - 0 - ) - ) - (ja-no-eval :group! ogre-bridge-assemble-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (rand-vu-percent? 0.2) - (spawn-projectile-blue *target*) - ) - (suspend) - (ja :num! (seek!)) - ) - (go ogre-bridge-activated) - ) - :post rider-post - ) + (ja :num! (seek!))) + (go ogre-bridge-activated)) + :post rider-post) (defstate ogre-bridge-activated (ogre-bridge) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('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 () - (ja :group! ogre-bridge-assemble-ja :num! max) - (transform-post) - (loop - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('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 () + (ja :group! ogre-bridge-assemble-ja :num! max) + (transform-post) + (loop + (suspend))) + :post ja-post) (defstate ogre-bridge-break (ogre-bridge) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('effect) - (when (= (-> block param 0) 'splash) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((a1-1 (-> block param 2))) - (set! (-> gp-0 quad) (-> self node-list data a1-1 bone transform vector 3 quad)) - ) - (set! (-> gp-0 y) 118784.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 466) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - ) - ) - ) - ) - :code (behavior () - (ja-no-eval :group! ogre-bridge-break-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ogre-bridge-idle) - ) - :post rider-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('effect) + (when (= (-> block param 0) 'splash) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((a1-1 (-> block param 2))) (set! (-> gp-0 quad) (-> self node-list data a1-1 bone transform vector 3 quad))) + (set! (-> gp-0 y) 118784.0) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 466) -1 #f #f #f gp-0 :to *entity-pool*)))))) + :code + (behavior () + (ja-no-eval :group! ogre-bridge-break-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ogre-bridge-idle)) + :post rider-post) (define *ogre-bridge-joint-array* (new 'static 'boxed-array :type uint8 #x4 #x9 #xc #x11 #x7 #xa #xf #x12)) @@ -919,9 +744,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders 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) (collide-kind ground-object)) @@ -937,8 +760,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -946,8 +768,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -955,8 +776,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-2) - ) + (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) (collide-kind ground-object)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -964,8 +784,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-3) - ) + (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) (collide-kind ground-object)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -973,8 +792,7 @@ (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-4) - ) + (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) (collide-kind ground-object)) (set! (-> s2-5 collide-with) (collide-kind target)) @@ -982,8 +800,7 @@ (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 9) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-5) - ) + (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) (collide-kind ground-object)) (set! (-> s2-6 collide-with) (collide-kind target)) @@ -991,8 +808,7 @@ (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 10) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-6) - ) + (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) (collide-kind ground-object)) (set! (-> s2-7 collide-with) (collide-kind target)) @@ -1000,8 +816,7 @@ (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 11) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-7) - ) + (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) (collide-kind ground-object)) (set! (-> s2-8 collide-with) (collide-kind target)) @@ -1009,8 +824,7 @@ (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 12) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-8) - ) + (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) (collide-kind ground-object)) (set! (-> s2-9 collide-with) (collide-kind target)) @@ -1018,8 +832,7 @@ (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 13) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-9) - ) + (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) (collide-kind ground-object)) (set! (-> s2-10 collide-with) (collide-kind target)) @@ -1027,8 +840,7 @@ (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 14) (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-10) - ) + (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) (collide-kind ground-object)) (set! (-> s2-11 collide-with) (collide-kind target)) @@ -1036,8 +848,7 @@ (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 15) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-11) - ) + (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) (collide-kind ground-object)) (set! (-> s2-12 collide-with) (collide-kind target)) @@ -1045,8 +856,7 @@ (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 16) (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-12) - ) + (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) (collide-kind ground-object)) (set! (-> s2-13 collide-with) (collide-kind target)) @@ -1054,8 +864,7 @@ (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 17) (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-13) - ) + (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) (collide-kind ground-object)) (set! (-> s2-14 collide-with) (collide-kind target)) @@ -1063,8 +872,7 @@ (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 18) (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-14) - ) + (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) (collide-kind ground-object)) (set! (-> s2-15 collide-with) (collide-kind target)) @@ -1072,8 +880,7 @@ (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 19) (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-15) - ) + (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) (collide-kind ground-object)) (set! (-> s2-16 collide-with) (collide-kind target)) @@ -1081,13 +888,10 @@ (set! (-> s2-16 prim-core offense) (collide-offense indestructible)) (set! (-> s2-16 transform-index) 20) (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) - (append-prim s3-0 s2-16) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (initialize-skeleton this *ogre-bridge-sg* '()) @@ -1095,42 +899,32 @@ (dotimes (s5-1 8) (let ((v1-185 (new 'process 'joint-mod-set-local this (the-as int (-> *ogre-bridge-joint-array* s5-1)) #f #f #f))) (set! (-> this joint-mod-array s5-1) (the-as joint-mod v1-185)) - (vector-reset! (-> v1-185 transform scale)) - ) - ) + (vector-reset! (-> v1-185 transform scale)))) (cond ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (set! (-> this dead-joint-count) 8) (ogre-bridge-update-joints) - (go ogre-bridge-activated) - ) - (else - (go ogre-bridge-idle) - ) - ) - (none) - ) - -(defskelgroup *ogre-bridgeend-sg* ogre-bridgeend ogre-bridgeend-lod0-jg ogre-bridgeend-idle-ja - ((ogre-bridgeend-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -3 8.2) - ) + (go ogre-bridge-activated)) + (else (go ogre-bridge-idle))) + (none)) + +(defskelgroup *ogre-bridgeend-sg* + ogre-bridgeend + ogre-bridgeend-lod0-jg + ogre-bridgeend-idle-ja + ((ogre-bridgeend-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -3 8.2)) (deftype ogre-bridgeend (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:states - ogre-bridgeend-idle - ) - ) - + ogre-bridgeend-idle)) (defstate ogre-bridgeend-idle (ogre-bridgeend) - :code (behavior () - (transform-post) - (anim-loop) - ) - ) + :code + (behavior () + (transform-post) + (anim-loop))) (defmethod init-from-entity! ((this ogre-bridgeend) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -1141,251 +935,208 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *ogre-bridgeend-sg* '()) (go ogre-bridgeend-idle) - (none) - ) + (none)) (deftype ogre-lava (water-anim) - ((idle-anim int32) - (anim int32) - ) - ) - + ((idle-anim int32) + (anim int32))) (defstate water-vol-idle (ogre-lava) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('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) proc argc message block) - ) - ) - ) - :code (behavior () - (ja-channel-push! 2 (seconds 0.1)) - (ja :chan 1 :group! (-> self draw art-group data (-> self idle-anim)) :num! min) - (ja-no-eval :group! (-> self draw art-group data (-> self anim)) :num! (seek! max 0.5) :frame-num 0.0) - (until (ja-done? 0) - (ja :chan 1 :frame-interp 0.5) - (ja-post) - (suspend) - (ja :num! (seek! max 0.5)) - ) - (ja :group! (-> self draw art-group data (-> self idle-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (suspend) - ) - ) - :post #f - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('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) proc argc message block)))) + :code + (behavior () + (ja-channel-push! 2 (seconds 0.1)) + (ja :chan 1 :group! (-> self draw art-group data (-> self idle-anim)) :num! min) + (ja-no-eval :group! (-> self draw art-group data (-> self anim)) :num! (seek! max 0.5) :frame-num 0.0) + (until (ja-done? 0) + (ja :chan 1 :frame-interp 0.5) + (ja-post) + (suspend) + (ja :num! (seek! max 0.5))) + (ja :group! (-> self draw art-group data (-> self idle-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (loop + (suspend))) + :post #f) (defstate water-vol-startup (ogre-lava) :virtual #t - :code (behavior () - (set! (-> self idle-anim) 2) - (set! (-> self anim) (-> self idle-anim)) - (go-virtual water-vol-idle) - ) - ) - -(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) - ) - ) - ) + :code + (behavior () + (set! (-> self idle-anim) 2) + (set! (-> self anim) (-> self idle-anim)) + (go-virtual water-vol-idle))) + +(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 water-vol-method-22 ((this ogre-lava)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set! (-> v1-2 global-scale) 2048.0) - (set! (-> v1-2 waveform) ripple-for-ogre-lava) - ) + (set! (-> v1-2 waveform) ripple-for-ogre-lava)) (logclear! (-> this flags) (water-flags wt23)) (logior! (-> this flags) (water-flags wt25)) (set! (-> this attack-event) 'lava) - (none) - ) + (none)) (deftype shortcut-boulder (process-drawable) - ((root collide-shape :override) - (broken-look lod-set :inline) - ) + ((root collide-shape :override) + (broken-look lod-set :inline)) (:states - shortcut-boulder-break - shortcut-boulder-idle - ) - ) - - -(defskelgroup *shortcut-boulder-whole-sg* shortcut-boulder shortcut-boulder-whole-lod0-jg shortcut-boulder-idle-ja - ((shortcut-boulder-whole-lod0-mg (meters 999999))) - :bounds (static-spherem 0 5.5 0 7.5) - ) - -(defskelgroup *shortcut-boulder-broken-sg* shortcut-boulder shortcut-boulder-broken-lod0-jg shortcut-boulder-idle-ja - ((shortcut-boulder-broken-lod0-mg (meters 999999))) - :bounds (static-spherem 0 5.5 0 20) - ) + shortcut-boulder-break + shortcut-boulder-idle)) + +(defskelgroup *shortcut-boulder-whole-sg* + shortcut-boulder + shortcut-boulder-whole-lod0-jg + shortcut-boulder-idle-ja + ((shortcut-boulder-whole-lod0-mg (meters 999999))) + :bounds (static-spherem 0 5.5 0 7.5)) + +(defskelgroup *shortcut-boulder-broken-sg* + shortcut-boulder + shortcut-boulder-broken-lod0-jg + shortcut-boulder-idle-ja + ((shortcut-boulder-broken-lod0-mg (meters 999999))) + :bounds (static-spherem 0 5.5 0 20)) (defpartgroup group-shortcut-boulder-explosion :id 475 :duration (seconds 1) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2149 :period (seconds 5) :length (seconds 0.017)) - (sp-item 2150 :period (seconds 5) :length (seconds 0.017)) - (sp-item 2151 :period (seconds 5) :length (seconds 0.05)) - ) - ) + :parts + ((sp-item 2149 :period (seconds 5) :length (seconds 0.017)) + (sp-item 2150 :period (seconds 5) :length (seconds 0.017)) + (sp-item 2151 :period (seconds 5) :length (seconds 0.05)))) (defpart 2150 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 15)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 64.0) - (:b 54.0) - (:a 128.0) - (:fade-a -2.1333334) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 15)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 64.0) + (:b 54.0) + (:a 128.0) + (:fade-a -2.1333334) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)))) (defpart 2149 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 16.0 16.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:conerot-x (degrees 20) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 16.0 16.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:conerot-x (degrees 20) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2151 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0.5) (meters 1)) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 32.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:scalevel-x (meters 0.013333334)) - (:scalevel-y (meters 0.0033333334)) - (:accel-y (meters -0.00026666667)) - (:friction 0.95) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 2152) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0.5) (meters 1)) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.013333334)) + (:scalevel-y (meters 0.0033333334)) + (:accel-y (meters -0.00026666667)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 2152) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2152 - :init-specs ((:fade-a -0.2)) - ) + :init-specs ((:fade-a -0.2))) (defstate shortcut-boulder-break (shortcut-boulder) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (lods-assign! (-> self draw) (-> self broken-look)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 475) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - (deactivate self) - ) - :post ja-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (lods-assign! (-> self draw) (-> self broken-look)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 475) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self) + (deactivate self)) + :post ja-post) (defstate shortcut-boulder-idle (shortcut-boulder) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (if (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) - (go shortcut-boulder-break) - ) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (if (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) (go shortcut-boulder-break))))) + :code + (behavior () + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defmethod init-from-entity! ((this shortcut-boulder) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1396,16 +1147,13 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *shortcut-boulder-whole-sg* '()) (setup-lods! (-> this broken-look) *shortcut-boulder-broken-sg* (-> this draw art-group) (-> this entity)) (set-vector! (-> this draw color-emissive) 0.125 0.0625 0.0 0.0) (go shortcut-boulder-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/ogre/ogre-part.gc b/goal_src/jak1/levels/ogre/ogre-part.gc index 445c9abae8..3f75d5ffcb 100644 --- a/goal_src/jak1/levels/ogre/ogre-part.gc +++ b/goal_src/jak1/levels/ogre/ogre-part.gc @@ -1,16 +1,11 @@ ;;-*-Lisp-*- (in-package goal) (bundles "OGR.DGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: ogre-part.gc -;; name in dgo: ogre-part -;; dgos: L1, OGR - ;; DECOMP BEGINS (defpartgroup group-ogreboss-column-break @@ -19,125 +14,116 @@ :linger-duration (seconds 10) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2193 :period (seconds 5) :length (seconds 0.017)) - (sp-item 2194 :period (seconds 5) :length (seconds 0.135)) - (sp-item 2195 :period (seconds 5) :length (seconds 0.067)) - (sp-item 2196 :period (seconds 5) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2193 :period (seconds 5) :length (seconds 0.017)) + (sp-item 2194 :period (seconds 5) :length (seconds 0.135)) + (sp-item 2195 :period (seconds 5) :length (seconds 0.067)) + (sp-item 2196 :period (seconds 5) :length (seconds 0.067)))) (defpart 2194 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters -5) (meters 1)) - (:scale-x (meters 0.6) (meters 1.2)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.06666667) (meters 0.23333333)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:fade-b -0.7111111) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2197) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters -5) (meters 1)) + (:scale-x (meters 0.6) (meters 1.2)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.06666667) (meters 0.23333333)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:fade-b -0.7111111) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2197) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2197 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2196 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters -5) (meters 1)) - (:scale-x (meters 0.6)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 20)) - (:r 128.0) - (:g 128.0) - (:b 96.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.5)) - (:fade-g -1.6) - (:fade-b -1.6) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters -5) (meters 1)) + (:scale-x (meters 0.6)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 20)) + (:r 128.0) + (:g 128.0) + (:b 96.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.5)) + (:fade-g -1.6) + (:fade-b -1.6) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2193 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -4)) - (:scale-x (meters 44)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 64.0) - (:b 0.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -4)) + (:scale-x (meters 44)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2195 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 24.0) - (:y (meters -5) (meters 1)) - (:scale-x (meters 5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 32.0) - (:b 0.0) - (:a 64.0 32.0) - (:vel-y (meters 0.12) (meters 0.06666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:friction 0.8) - (:timer (seconds 6)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2198) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 24.0) + (:y (meters -5) (meters 1)) + (:scale-x (meters 5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.12) (meters 0.06666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.8) + (:timer (seconds 6)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2198) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 6)))) (defpart 2198 - :init-specs ((:fade-r -0.21333334) (:fade-g -0.21333334) (:fade-b 0.0) (:next-time (seconds 0.5)) (:next-launcher 2199)) - ) + :init-specs ((:fade-r -0.21333334) (:fade-g -0.21333334) (:fade-b 0.0) (:next-time (seconds 0.5)) (:next-launcher 2199))) (defpart 2199 - :init-specs ((:fade-r -0.021333333) - (:fade-g 0.0) - (:fade-b 0.0) - (:fade-a -0.08533333) - (:next-time (seconds 0.75)) - (:next-launcher 2200) - ) - ) + :init-specs + ((:fade-r -0.021333333) + (:fade-g 0.0) + (:fade-b 0.0) + (:fade-a -0.08533333) + (:next-time (seconds 0.75)) + (:next-launcher 2200))) (defpart 2200 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-ogreboss-lava-splash :id 465 @@ -145,27 +131,25 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2023)) - ) + :parts ((sp-item 2023))) (defpart 2023 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 0.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 45)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 0.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 45)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-ogre-bridge-splash :id 466 @@ -173,116 +157,110 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2108) (sp-item 2109) (sp-item 2110) (sp-item 2111)) - ) + :parts ((sp-item 2108) (sp-item 2109) (sp-item 2110) (sp-item 2111))) (defpart 2111 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 4.0) - (:y (meters -3)) - (:scale-x (meters 0.3) (meters 0.75)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:vel-y (meters 0.02) (meters 0.053333335)) - (:scalevel-x (meters -0.003)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 1.2)) - (:flags (bit0 bit3)) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 4.0) + (:y (meters -3)) + (:scale-x (meters 0.3) (meters 0.75)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:vel-y (meters 0.02) (meters 0.053333335)) + (:scalevel-x (meters -0.003)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1.2)) + (:flags (bit0 bit3)) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1)))) (defpart 2108 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters 0) (meters 2)) - (:y (meters -3)) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:scalevel-x (meters 0.03529412)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.1294118) - (:friction 0.98) - (:timer (seconds 0.27)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters 0) (meters 2)) + (:y (meters -3)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:scalevel-x (meters 0.03529412)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.1294118) + (:friction 0.98) + (:timer (seconds 0.27)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2109 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters 3) (meters 4)) - (:y (meters -3)) - (:scale-x (meters 2.5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0) (meters 0.0016666667)) - (:scalevel-x (meters 0.07777778)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:friction 0.98) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters 3) (meters 4)) + (:y (meters -3)) + (:scale-x (meters 2.5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0) (meters 0.0016666667)) + (:scalevel-x (meters 0.07777778)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:friction 0.98) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2110 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 3)) - (:y (meters -3) (meters 1)) - (:scale-x (meters 5) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.02)) - (:scalevel-x (meters 0.015555556)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.56666666) - (:fade-g -0.56666666) - (:fade-b -0.56666666) - (:fade-a 0.15) - (:friction 0.97) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.27) (seconds 0.267)) - (:next-launcher 2112) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 3)) + (:y (meters -3) (meters 1)) + (:scale-x (meters 5) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.02)) + (:scalevel-x (meters 0.015555556)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.56666666) + (:fade-g -0.56666666) + (:fade-b -0.56666666) + (:fade-a 0.15) + (:friction 0.97) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.27) (seconds 0.267)) + (:next-launcher 2112) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2112 - :init-specs ((:fade-a -0.08)) - ) + :init-specs ((:fade-a -0.08))) (defpartgroup group-ogreboss-boulder-grow :id 468 @@ -290,148 +268,139 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2201) (sp-item 2202) (sp-item 2203) (sp-item 2204)) - ) + :parts ((sp-item 2201) (sp-item 2202) (sp-item 2203) (sp-item 2204))) (defpart 2203 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.6) (meters 0.6)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:vel-y (meters -0.13333334)) - (:scalevel-x (meters -0.002)) - (:scalevel-y :copy scalevel-x) - (:fade-g -6.4) - (:fade-b -6.4) - (:fade-a 6.4) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067)) - (:next-launcher 2205) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 12) (meters 4)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.6) (meters 0.6)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:vel-y (meters -0.13333334)) + (:scalevel-x (meters -0.002)) + (:scalevel-y :copy scalevel-x) + (:fade-g -6.4) + (:fade-b -6.4) + (:fade-a 6.4) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067)) + (:next-launcher 2205) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 12) (meters 4)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2205 - :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:fade-b -0.42666668) (:fade-a -0.85333335)) - ) + :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:fade-b -0.42666668) (:fade-a -0.85333335))) (defpart 2204 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 16)) - (:r 128.0) - (:g 96.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.2)) - (:fade-g -1.0666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 16)) + (:r 128.0) + (:g 96.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.2)) + (:fade-g -1.0666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)))) (defpart 2201 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 28) (meters 4)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -2.3272727) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 28) (meters 4)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -2.3272727) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 2202 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 16) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 32.0) - (:fade-a -2.3272727) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 16) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 32.0) + (:fade-a -2.3272727) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-ogreboss-missile :id 469 :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 1933) (sp-item 1934)) - ) + :parts ((sp-item 1933) (sp-item 1934))) (defpart 1934 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.3) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 4.8) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 32.0) - (:a 48.0 48.0) - (:vel-y (meters 0.0016666667) (meters 0.00083333335)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.21333334) - (:fade-g -0.10666667) - (:fade-b 0.10666667) - (:fade-a -0.32) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.3) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 4.8) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 32.0) + (:a 48.0 48.0) + (:vel-y (meters 0.0016666667) (meters 0.00083333335)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.21333334) + (:fade-g -0.10666667) + (:fade-b 0.10666667) + (:fade-a -0.32) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 1)) + (:flags (bit2 bit14)))) (defpart 1933 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.3) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 4) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 32.0) - (:a 80.0 80.0) - (:vel-y (meters 0.0016666667) (meters 0.00083333335)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g -0.53333336) - (:fade-b -0.17777778) - (:fade-a -1.0666667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.3) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 4) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 32.0) + (:a 80.0 80.0) + (:vel-y (meters 0.0016666667) (meters 0.00083333335)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g -0.53333336) + (:fade-b -0.17777778) + (:fade-a -1.0666667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-ogreboss-pre-missile :id 470 @@ -439,219 +408,218 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2206 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2206 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2206 :period (seconds 2) :length (seconds 0.1)) - (sp-item 2206 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.035)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2206 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2206 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2206 :period (seconds 2) :length (seconds 0.1)) + (sp-item 2206 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.035)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.017)))) (defpart 2206 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2083) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 8)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2083) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 8)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-ogreboss-missile-impact :id 471 :duration (seconds 1) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2080 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2148 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2080 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2148 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.067)))) (defpartgroup group-ogre-lava-lava-20x20 :id 472 :bounds (static-bspherem 0 0 0 14) - :parts ((sp-item 2030 :fade-after (meters 40) :falloff-to (meters 40)) - (sp-item 2031 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 2032 :fade-after (meters 80) :falloff-to (meters 80) :binding 2028) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2033 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.457) :length (seconds 0.017) :binding 2029) - (sp-item 2033 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.78) :length (seconds 0.017) :binding 2029) - (sp-item 2033 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 0.307) :length (seconds 0.017) :binding 2029) - (sp-item 2029 :flags (start-dead)) - ) - ) + :parts + ((sp-item 2030 :fade-after (meters 40) :falloff-to (meters 40)) + (sp-item 2031 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2032 :fade-after (meters 80) :falloff-to (meters 80) :binding 2028) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2033 + :fade-after (meters 40) + :falloff-to (meters 40) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 2029) + (sp-item 2033 + :fade-after (meters 60) + :falloff-to (meters 60) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 2029) + (sp-item 2033 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 2029) + (sp-item 2029 :flags (start-dead)))) (defpart 2031 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.05) - (:x (meters -10) (meters 20)) - (:y (meters 0.5)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.64) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 2034) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.05) + (:x (meters -10) (meters 20)) + (:y (meters 0.5)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.64) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 2034) + (:rotate-y (degrees 0)))) (defpart 2033 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.5) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.5) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpart 2032 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.02 0.02) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 0.75) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.02 0.02) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 0.75) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (defpart 2030 - :init-specs ((:num 1.0) - (:x (meters -10) (meters 20)) - (:y (meters 0.5)) - (:z (meters -10) (meters 20)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 5324.8) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-r 40.96) - (:fade-g 27.306667) - (:fade-b 38.229332) - (:timer (seconds 0.5)) - (:flags (aux-list)) - (:next-time (seconds 0.25)) - (:next-launcher 2035) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters 0.5)) + (:z (meters -10) (meters 20)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 5324.8) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-r 40.96) + (:fade-g 27.306667) + (:fade-b 38.229332) + (:timer (seconds 0.5)) + (:flags (aux-list)) + (:next-time (seconds 0.25)) + (:next-launcher 2035) + (:rotate-y (degrees 0)))) (defpart 2035 - :init-specs ((:fade-b 16.384)) - ) + :init-specs ((:fade-b 16.384))) (defpart 2034 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2036)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2036))) (defpart 2036 - :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2037)) - ) + :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2037))) (defpart 2037 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667))) (defpart 2028 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.7) - (:scale-x (meters 0.75) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:scalevel-x (meters -0.0029166667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.1) (seconds 0.597)) - (:flags (bit0 bit3)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.7) + (:scale-x (meters 0.75) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:scalevel-x (meters -0.0029166667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.1) (seconds 0.597)) + (:flags (bit0 bit3)) + (:rotate-y (degrees 45)))) (defpart 2029 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 6.0) - (:scale-x (meters 0.2) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:vel-y (meters 0.006666667) (meters 0.02)) - (:scalevel-x (meters -0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 1.2)) - (:flags (bit0 bit3)) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) - -(deftype ogre-part (part-spawner) - () - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 6.0) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:vel-y (meters 0.006666667) (meters 0.02)) + (:scalevel-x (meters -0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 1.2)) + (:flags (bit0 bit3)) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) + +(deftype ogre-part (part-spawner) ()) diff --git a/goal_src/jak1/levels/ogre/ogreboss.gc b/goal_src/jak1/levels/ogre/ogreboss.gc index 71128eaeae..4df1790955 100644 --- a/goal_src/jak1/levels/ogre/ogreboss.gc +++ b/goal_src/jak1/levels/ogre/ogreboss.gc @@ -1,393 +1,294 @@ ;;-*-Lisp-*- (in-package goal) (bundles "OGR.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/collide/collide-cache.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/physics/trajectory.gc") (require "engine/camera/pov-camera-h.gc") - -;; name: ogreboss.gc -;; name in dgo: ogreboss -;; dgos: L1, OGR - (declare-type ogreboss process-drawable) + (define-extern *ogreboss* ogreboss) ;; DECOMP BEGINS -(defskelgroup *ogreboss-sg* ogreboss ogreboss-lod0-jg ogreboss-idle-ja - ((ogreboss-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 20) - ) - -(defskelgroup *ogreboss-cam-sg* ogreboss ogreboss-cam-lod0-jg ogreboss-cam-idle-ja - ((ogreboss-cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) - -(defskelgroup *ogreboss-shoot-boulder-sg* ogreboss ogreboss-shoot-boulder-lod0-jg ogreboss-shoot-boulder-idle-ja - ((ogreboss-shoot-boulder-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 300) - :shadow ogreboss-shoot-boulder-shadow-mg - ) - -(defskelgroup *ogreboss-shoot-boulder-break-sg* ogreboss ogreboss-shoot-boulder-break-lod0-jg ogreboss-shoot-boulder-break-idle-ja - ((ogreboss-shoot-boulder-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 15) - ) - -(defskelgroup *ogreboss-bounce-boulder-sg* ogreboss ogreboss-bounce-boulder-lod0-jg ogreboss-bounce-boulder-idle-ja - ((ogreboss-bounce-boulder-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 50) - ) - -(defskelgroup *ogreboss-super-boulder-sg* ogreboss ogreboss-super-boulder-lod0-jg ogreboss-super-boulder-idle-ja - ((ogreboss-super-boulder-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) - -(defskelgroup *ogreboss-column-sg* ogreboss ogreboss-column-lod0-jg ogreboss-column-idle-ja - ((ogreboss-column-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *ogreboss-sg* + ogreboss + ogreboss-lod0-jg + ogreboss-idle-ja + ((ogreboss-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 20)) + +(defskelgroup *ogreboss-cam-sg* + ogreboss + ogreboss-cam-lod0-jg + ogreboss-cam-idle-ja + ((ogreboss-cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) + +(defskelgroup *ogreboss-shoot-boulder-sg* + ogreboss + ogreboss-shoot-boulder-lod0-jg + ogreboss-shoot-boulder-idle-ja + ((ogreboss-shoot-boulder-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 300) + :shadow ogreboss-shoot-boulder-shadow-mg) + +(defskelgroup *ogreboss-shoot-boulder-break-sg* + ogreboss + ogreboss-shoot-boulder-break-lod0-jg + ogreboss-shoot-boulder-break-idle-ja + ((ogreboss-shoot-boulder-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 15)) + +(defskelgroup *ogreboss-bounce-boulder-sg* + ogreboss + ogreboss-bounce-boulder-lod0-jg + ogreboss-bounce-boulder-idle-ja + ((ogreboss-bounce-boulder-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 50)) + +(defskelgroup *ogreboss-super-boulder-sg* + ogreboss + ogreboss-super-boulder-lod0-jg + ogreboss-super-boulder-idle-ja + ((ogreboss-super-boulder-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) + +(defskelgroup *ogreboss-column-sg* + ogreboss + ogreboss-column-lod0-jg + ogreboss-column-idle-ja + ((ogreboss-column-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (define *ogreboss-missile-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade shdf02 shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w -102400.0) - :top-plane (new 'static 'plane :y 1.0 :w -143360.0) - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags disable-fade shdf02 shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w -102400.0) + :top-plane + (new 'static 'plane :y 1.0 :w -143360.0)))) (define *ogreboss-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags shdf02 shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w -102400.0) - :top-plane (new 'static 'plane :y 1.0 :w -143360.0) - :fade-dist 819200.0 - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags shdf02 shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w -102400.0) + :top-plane + (new 'static 'plane :y 1.0 :w -143360.0) + :fade-dist 819200.0))) (deftype ogreboss-missile (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer process-drawable) :overlay-at parent) - (trajectory trajectory :inline) - (src-pos vector :inline) - (dest-pos vector :inline) - (start-time time-frame) - (tumble-quat quaternion :inline) - (blast-radius float) - (pickup-type pickup-type) - ) + ((root collide-shape-moving :override) + (parent-override (pointer process-drawable) :overlay-at parent) + (trajectory trajectory :inline) + (src-pos vector :inline) + (dest-pos vector :inline) + (start-time time-frame) + (tumble-quat quaternion :inline) + (blast-radius float) + (pickup-type pickup-type)) (:states - ogreboss-missile-idle - ogreboss-missile-impact - ogreboss-missile-seek - ) - ) - + ogreboss-missile-idle + ogreboss-missile-impact + ogreboss-missile-seek)) (defstate ogreboss-missile-idle (ogreboss-missile) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'collide-tri-result)) - ) - (while (not (time-elapsed? (-> self state-time) (seconds 6))) - (let ((f0-1 (the float (- (current-time) (-> self start-time))))) - (eval-position! (-> self trajectory) f0-1 gp-0) - ) - (vector-! s5-0 gp-0 (-> self root trans)) - (let ((f0-2 (fill-and-probe-using-line-sphere - *collide-cache* - (-> self root trans) - s5-0 - (the-as float 4096.0) - (-> self root root-prim collide-with) - (-> self parent-override 0) - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - (cond - ((>= f0-2 0.0) - (vector+*! (-> self root trans) (-> self root trans) s5-0 f0-2) - (go ogreboss-missile-impact) - ) - (else - (set! (-> self root trans quad) (-> gp-0 quad)) - 0 - ) - ) - ) - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - ) - (cleanup-for-death self) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'collide-tri-result))) + (while (not (time-elapsed? (-> self state-time) (seconds 6))) + (let ((f0-1 (the float (- (current-time) (-> self start-time))))) (eval-position! (-> self trajectory) f0-1 gp-0)) + (vector-! s5-0 gp-0 (-> self root trans)) + (let ((f0-2 (fill-and-probe-using-line-sphere *collide-cache* + (-> self root trans) + s5-0 + (the-as float 4096.0) + (-> self root root-prim collide-with) + (-> self parent-override 0) + s4-0 + (new 'static 'pat-surface :noentity #x1)))) + (cond + ((>= f0-2 0.0) (vector+*! (-> self root trans) (-> self root trans) s5-0 f0-2) (go ogreboss-missile-impact)) + (else (set! (-> self root trans quad) (-> gp-0 quad)) 0))) + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) + (spawn (-> self part) (-> self root trans)) + (suspend))) + (cleanup-for-death self)) + :post transform-post) (defstate ogreboss-missile-seek (ogreboss-missile) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'collide-tri-result)) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (empty) - ) - (while (not (time-elapsed? (-> self state-time) (seconds 6))) - (let ((f0-1 (the float (- (current-time) (-> self start-time))))) - (eval-position! (-> self trajectory) f0-1 gp-0) - ) - (vector-! s5-0 gp-0 (-> self root trans)) - (let ((f0-2 (fill-and-probe-using-line-sphere - *collide-cache* - (-> self root trans) - s5-0 - (the-as float 4096.0) - (-> self root root-prim collide-with) - (-> self parent-override 0) - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - (cond - ((>= f0-2 0.0) - (vector+*! (-> self root trans) (-> self root trans) s5-0 f0-2) - (go ogreboss-missile-impact) - ) - (else - (set! (-> self root trans quad) (-> gp-0 quad)) - 0 - ) - ) - ) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - ) - (cleanup-for-death self) - ) - :post (behavior () - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) - (transform-post) - ) - ) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'collide-tri-result))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (empty)) + (while (not (time-elapsed? (-> self state-time) (seconds 6))) + (let ((f0-1 (the float (- (current-time) (-> self start-time))))) (eval-position! (-> self trajectory) f0-1 gp-0)) + (vector-! s5-0 gp-0 (-> self root trans)) + (let ((f0-2 (fill-and-probe-using-line-sphere *collide-cache* + (-> self root trans) + s5-0 + (the-as float 4096.0) + (-> self root root-prim collide-with) + (-> self parent-override 0) + s4-0 + (new 'static 'pat-surface :noentity #x1)))) + (cond + ((>= f0-2 0.0) (vector+*! (-> self root trans) (-> self root trans) s5-0 f0-2) (go ogreboss-missile-impact)) + (else (set! (-> self root trans quad) (-> gp-0 quad)) 0))) + (spawn (-> self part) (-> self root trans)) + (suspend))) + (cleanup-for-death self)) + :post + (behavior () + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) + (transform-post))) (defun ogreboss-rock-explosion-effect ((arg0 basic)) (with-pp (sound-play "ogre-explode" :position (the-as symbol arg0)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 471) - -1 - #f - #f - #f - arg0 - :to *entity-pool* - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 471) -1 #f #f #f arg0 :to *entity-pool*) (activate! *camera-smush-control* (the-as float 819.2) 37 600 (the-as float 1.0) (the-as float 0.995)) (let ((gp-2 (manipy-spawn arg0 (-> pp entity) *ogreboss-shoot-boulder-break-sg* #f :to pp))) - (quaternion-axis-angle! - (-> (the-as manipy (-> gp-2 0)) root quat) - (the-as float 0.0) - (the-as float 1.0) - (the-as float 0.0) - (* 65536.0 (rand-vu)) - ) + (quaternion-axis-angle! (-> (the-as manipy (-> gp-2 0)) root quat) + (the-as float 0.0) + (the-as float 1.0) + (the-as float 0.0) + (* 65536.0 (rand-vu))) (send-event (ppointer->process gp-2) 'anim-mode 'play1) - (the-as handle (ppointer->handle gp-2)) - ) - ) - ) + (the-as handle (ppointer->handle gp-2))))) (defun ogreboss-missile-scale-explosion ((arg0 handle)) (let* ((gp-0 (handle->process arg0)) (f0-0 (-> (the-as process-drawable gp-0) root scale x)) - (f0-2 (seek f0-0 (the-as float 0.0) (seconds-per-frame))) - ) - (set-vector! (-> (the-as process-drawable gp-0) root scale) f0-2 f0-2 f0-2 1.0) - ) + (f0-2 (seek f0-0 (the-as float 0.0) (seconds-per-frame)))) + (set-vector! (-> (the-as process-drawable gp-0) root scale) f0-2 f0-2 f0-2 1.0)) 0 - (none) - ) + (none)) (defstate ogreboss-missile-impact (ogreboss-missile) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (cond - (#f - (cond - ((= (-> proc type) target) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode)))) - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (cond + (#f + (cond + ((= (-> proc type) target) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode))))) + (else (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) (set! (-> a1-2 num-params) 4) (set! (-> a1-2 message) 'attack) (set! (-> a1-2 param 0) (-> block param 0)) (set! (-> a1-2 param 1) (the-as uint 'explode)) - (let ((v1-12 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-12) - (set! (-> a1-2 param 2) (the-as uint v1-12)) - ) + (let ((v1-12 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-12) (set! (-> a1-2 param 2) (the-as uint v1-12))) (set! (-> a1-2 param 3) (the-as uint 0)) - (send-event-function proc a1-2) - ) - ) - ) - (if (= (-> proc type) target) - (send-event (ppointer->process (-> self parent-override)) 'victory) - ) - ) - (else - (let* ((s4-0 proc) - (t1-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) target)) - s4-0 - ) - ) - ) - (cond - (t1-0 + (send-event-function proc a1-2)))) + (if (= (-> proc type) target) (send-event (ppointer->process (-> self parent-override)) 'victory))) + (else + (let* ((s4-0 proc) + (t1-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) target)) s4-0))) + (cond + (t1-0 (let ((s4-1 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'vector)) - (t2-0 (new 'stack-no-clear 'collide-tri-result)) - ) + (t2-0 (new 'stack-no-clear 'collide-tri-result))) 0.0 (set! (-> s4-1 quad) (-> (the-as target t1-0) control trans quad)) (+! (-> s4-1 y) 4096.0) (set-vector! s3-0 0.0 (- 118784.0 (-> s4-1 y)) 0.0 1.0) - (let ((f30-0 - (fill-and-probe-using-line-sphere - *collide-cache* - s4-1 - s3-0 - (the-as float 40.96) - (-> self root root-prim collide-with) - t1-0 - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - s4-1 - s3-0 - (meters 0.00024414062) - (the-as rgba (new 'static 'rgba :g #xff :a #x80)) - ) + (let ((f30-0 (fill-and-probe-using-line-sphere *collide-cache* + s4-1 + s3-0 + (the-as float 40.96) + (-> self root root-prim collide-with) + t1-0 + t2-0 + (new 'static 'pat-surface :noentity #x1)))) + (add-debug-vector #t + (bucket-id debug-no-zbuf) + s4-1 + s3-0 + (meters 0.00024414062) + (the-as rgba (new 'static 'rgba :g #xff :a #x80))) (when (>= f30-0 0.0) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'damage)))) - (send-event (ppointer->process (-> self parent-override)) 'victory) - ) - ) - ) - ) - (else - (let ((v1-37 (new 'stack-no-clear 'vector))) - (set-vector! v1-37 0.0 -12288000.0 0.0 1.0) - (send-event proc 'impulse v1-37) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (logclear! (-> self mask) (process-mask enemy projectile)) - (ogreboss-rock-explosion-effect (the-as basic (-> self root trans))) - (when (nonzero? (-> self pickup-type)) - (let ((t1-0 (new 'static 'fact-info :options (fact-options fade) :fade-time (seconds 5)))) - (birth-pickup-at-point - (-> self root trans) - (-> self pickup-type) - (-> *FACT-bank* eco-single-inc) - #t - *entity-pool* - t1-0 - ) - ) - ) - (ja-channel-set! 0) - (let ((v1-10 (-> self root root-prim))) - (set! (-> v1-10 local-sphere w) (-> self blast-radius)) - (set! (-> v1-10 prim-core world-sphere w) (-> self blast-radius)) - (set! (-> v1-10 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object ground-object)) - (set! (-> v1-10 prim-core collide-as) (collide-kind enemy)) - ) - (update-transforms! (-> self root)) - (let ((a1-1 (new 'stack-no-clear 'overlaps-others-params))) - (set! (-> a1-1 options) (the-as uint 0)) - (set! (-> a1-1 tlist) *touching-list*) - (find-overlapping-shapes (-> self root) a1-1) - ) - (suspend) - (clear-collide-with-as (-> self root)) - (while (-> self child) + (send-event (ppointer->process (-> self parent-override)) 'victory))))) + (else + (let ((v1-37 (new 'stack-no-clear 'vector))) (set-vector! v1-37 0.0 -12288000.0 0.0 1.0) (send-event proc 'impulse v1-37)))))))))) + :code + (behavior () + (logclear! (-> self mask) (process-mask enemy projectile)) + (ogreboss-rock-explosion-effect (the-as basic (-> self root trans))) + (when (nonzero? (-> self pickup-type)) + (let ((t1-0 (new 'static 'fact-info :options (fact-options fade) :fade-time (seconds 5)))) + (birth-pickup-at-point (-> self root trans) (-> self pickup-type) (-> *FACT-bank* eco-single-inc) #t *entity-pool* t1-0))) + (ja-channel-set! 0) + (let ((v1-10 (-> self root root-prim))) + (set! (-> v1-10 local-sphere w) (-> self blast-radius)) + (set! (-> v1-10 prim-core world-sphere w) (-> self blast-radius)) + (set! (-> v1-10 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object ground-object)) + (set! (-> v1-10 prim-core collide-as) (collide-kind enemy))) + (update-transforms! (-> self root)) + (let ((a1-1 (new 'stack-no-clear 'overlaps-others-params))) + (set! (-> a1-1 options) (the-as uint 0)) + (set! (-> a1-1 tlist) *touching-list*) + (find-overlapping-shapes (-> self root) a1-1)) (suspend) - ) - (cleanup-for-death self) - ) - :post ja-post - ) + (clear-collide-with-as (-> self root)) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post ja-post) (deftype ogreboss-missile-init-data (structure) - ((src vector) - (dest vector) - (duration time-frame) - (xz-speed float) - (blast-radius float) - (pickup-type pickup-type) - ) - ) - + ((src vector) + (dest vector) + (duration time-frame) + (xz-speed float) + (blast-radius float) + (pickup-type pickup-type))) (defbehavior ogreboss-missile-init-by-other ogreboss-missile ((arg0 ogreboss-missile-init-data) (arg1 entity-actor)) (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind background cak-2 target wall-object ground-object)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-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! (-> s5-0 event-self) 'touched) - (set! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 src quad)) (set! (-> self src-pos quad) (-> arg0 src quad)) (set! (-> self dest-pos quad) (-> arg0 dest quad)) @@ -398,81 +299,55 @@ (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self draw shadow-ctrl) *ogreboss-missile-shadow-control*) (if (> (-> arg0 duration) 0) - (setup-from-to-duration! - (-> self trajectory) - (-> arg0 src) - (-> arg0 dest) - (the float (-> arg0 duration)) - (the-as float -0.22755557) - ) - (setup-from-to-xz-vel! - (-> self trajectory) - (-> arg0 src) - (-> arg0 dest) - (-> arg0 xz-speed) - (the-as float -0.22755557) - ) - ) + (setup-from-to-duration! (-> self trajectory) + (-> arg0 src) + (-> arg0 dest) + (the float (-> arg0 duration)) + (the-as float -0.22755557)) + (setup-from-to-xz-vel! (-> self trajectory) (-> arg0 src) (-> arg0 dest) (-> arg0 xz-speed) (the-as float -0.22755557))) (set-time! (-> self start-time)) (set! (-> self blast-radius) (-> arg0 blast-radius)) (set! (-> self pickup-type) (-> arg0 pickup-type)) (let ((f30-1 (* 65536.0 (rand-vu)))) - (quaternion-axis-angle! - (-> self tumble-quat) - (cos f30-1) - (the-as float 0.0) - (sin f30-1) - (the-as float 2730.6667) - ) - ) + (quaternion-axis-angle! (-> self tumble-quat) (cos f30-1) (the-as float 0.0) (sin f30-1) (the-as float 2730.6667))) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 469) self)) (set-vector! (-> self draw color-emissive) 0.125 0.0625 0.0 0.0) (go ogreboss-missile-idle) - (none) - ) + (none)) (deftype ogreboss-super-boulder (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer process-drawable) :overlay-at parent) - (orig-pos vector :inline) - (src-pos vector :inline) - (spin-axis vector :inline) - (joint joint-mod-blend-local) - (speed float) - (size float) - (grow-rate float) - (lava entity-actor) - (sound-id sound-id) - (hit-boss symbol) - (tumble-quat quaternion :inline) - ) + ((root collide-shape-moving :override) + (parent-override (pointer process-drawable) :overlay-at parent) + (orig-pos vector :inline) + (src-pos vector :inline) + (spin-axis vector :inline) + (joint joint-mod-blend-local) + (speed float) + (size float) + (grow-rate float) + (lava entity-actor) + (sound-id sound-id) + (hit-boss symbol) + (tumble-quat quaternion :inline)) (:states - ogreboss-super-boulder-die - ogreboss-super-boulder-hit - ogreboss-super-boulder-idle - ogreboss-super-boulder-killed-player - ogreboss-super-boulder-land - ogreboss-super-boulder-roll - ogreboss-super-boulder-throw - ) - ) - + ogreboss-super-boulder-die + ogreboss-super-boulder-hit + ogreboss-super-boulder-idle + ogreboss-super-boulder-killed-player + ogreboss-super-boulder-land + ogreboss-super-boulder-roll + ogreboss-super-boulder-throw)) (defbehavior ogreboss-super-boulder-event-handler ogreboss-super-boulder ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 ;; og:preserve-this PAL patch here (('touch 'attack) - (when (and *target* ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self root) - (the-as uint 1) - ) - ) - (if (send-event arg0 'attack-invinc (-> arg3 param 0) (static-attack-info ((mode 'ogreboss-super-boulder)))) - #f - ) - ) - ) + (when (and *target* + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self root) + (the-as uint 1))) + (if (send-event arg0 'attack-invinc (-> arg3 param 0) (static-attack-info ((mode 'ogreboss-super-boulder)))) #f))) (('effect) (case (-> arg3 param 0) (('lava-ripple) @@ -481,99 +356,63 @@ (set! (-> a1-3 num-params) 0) (set! (-> a1-3 message) 'boulder) (let ((t9-3 send-event-function) - (v1-12 (-> self lava)) - ) - (t9-3 - (if v1-12 - (-> v1-12 extra process) - ) - a1-3 - ) - ) - ) - ) - (else - #f - ) - ) - ) - ) - ) + (v1-12 (-> self lava))) + (t9-3 (if v1-12 (-> v1-12 extra process)) a1-3)))) + (else #f))))) (defstate ogreboss-super-boulder-idle (ogreboss-super-boulder) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('speedup) - (set! (-> self speed) (* 1.3 (-> self speed))) - ) - (('grow-faster) - (set! (-> self grow-rate) 1.0) - ) - (('go-throw) - (go ogreboss-super-boulder-throw) - ) - (('go-hit) - (go ogreboss-super-boulder-hit) - ) - (('go-die) - (go ogreboss-super-boulder-die) - ) - ) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - ) - :code (behavior () - (ja :group! ogreboss-super-boulder-idle-ja :num! min) - (set! (-> self joint enable) #t) - (set! (-> self joint blend) 1.0) - (set-time! (-> self state-time)) - (loop - (quaternion-vector-angle! - (-> self tumble-quat) - (-> self spin-axis) - (* 32768.0 (seconds-per-frame) (-> self speed)) - ) - (quaternion*! (-> self joint transform quat) (-> self joint transform quat) (-> self tumble-quat)) - (+! (-> self size) (* (-> self grow-rate) (seconds-per-frame))) - (set! (-> self size) (fmin 1.0 (-> self size))) - (let* ((f0-10 (sqrtf (-> self size))) - (f28-0 (* 0.0033333334 (the float (- (current-time) (-> self state-time))))) - (f30-0 (* 116508.445 f28-0 (-> self speed))) - ) - (set-vector! (-> self joint transform scale) f0-10 f0-10 f0-10 1.0) - (let ((gp-1 (-> self joint transform))) - (set! (-> gp-1 trans x) (* 4096.0 (sin f30-0))) - (set! (-> gp-1 trans y) (+ 122880.0 (* 12288.0 (sin (* 98304.0 f28-0))))) - (set! (-> gp-1 trans z) (* 4096.0 (cos f30-0))) - (set! (-> gp-1 trans w) 1.0) - ) - ) - (spawn (-> self part) (-> self node-list data 3 bone transform vector 3)) - (sound-play "ogre-rock" :id (-> self sound-id) :position (the-as symbol (-> self joint transform))) - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('speedup) (set! (-> self speed) (* 1.3 (-> self speed)))) + (('grow-faster) (set! (-> self grow-rate) 1.0)) + (('go-throw) (go ogreboss-super-boulder-throw)) + (('go-hit) (go ogreboss-super-boulder-hit)) + (('go-die) (go ogreboss-super-boulder-die)))) + :exit + (behavior () + (sound-stop (-> self sound-id))) + :code + (behavior () + (ja :group! ogreboss-super-boulder-idle-ja :num! min) + (set! (-> self joint enable) #t) + (set! (-> self joint blend) 1.0) + (set-time! (-> self state-time)) + (loop + (quaternion-vector-angle! (-> self tumble-quat) (-> self spin-axis) (* 32768.0 (seconds-per-frame) (-> self speed))) + (quaternion*! (-> self joint transform quat) (-> self joint transform quat) (-> self tumble-quat)) + (+! (-> self size) (* (-> self grow-rate) (seconds-per-frame))) + (set! (-> self size) (fmin 1.0 (-> self size))) + (let* ((f0-10 (sqrtf (-> self size))) + (f28-0 (* 0.0033333334 (the float (- (current-time) (-> self state-time))))) + (f30-0 (* 116508.445 f28-0 (-> self speed)))) + (set-vector! (-> self joint transform scale) f0-10 f0-10 f0-10 1.0) + (let ((gp-1 (-> self joint transform))) + (set! (-> gp-1 trans x) (* 4096.0 (sin f30-0))) + (set! (-> gp-1 trans y) (+ 122880.0 (* 12288.0 (sin (* 98304.0 f28-0))))) + (set! (-> gp-1 trans z) (* 4096.0 (cos f30-0))) + (set! (-> gp-1 trans w) 1.0))) + (spawn (-> self part) (-> self node-list data 3 bone transform vector 3)) + (sound-play "ogre-rock" :id (-> self sound-id) :position (the-as symbol (-> self joint transform))) + (suspend))) + :post transform-post) (defbehavior ogreboss-super-boulder-impact-effect ogreboss-super-boulder () (sound-play "ogre-boulder" :position (the-as symbol (-> self draw origin))) (activate! *camera-smush-control* (the-as float 819.2) 37 600 (the-as float 1.0) (the-as float 0.995)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 471) - -1 - #f - #f - #f - (-> self draw origin) - :to *entity-pool* - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 471) + -1 + #f + #f + #f + (-> self draw origin) + :to + *entity-pool*) 0 - (none) - ) + (none)) (defbehavior ogreboss-super-boulder-play-hit-anim ogreboss-super-boulder () (set! (-> self src-pos quad) (-> self root trans quad)) @@ -581,191 +420,136 @@ (until (ja-done? 0) (seek! (-> self joint blend) (the-as float 0.0) (* 5.0 (seconds-per-frame))) (let* ((f1-1 (/ (- (ja-frame-num 0) (ja-aframe (the-as float 54.0) 0)) - (- (the float (ja-num-frames 0)) (ja-aframe (the-as float 54.0) 0)) - ) - ) - (f0-13 (fmax 0.0 (fmin 1.0 f1-1))) - ) - (vector-lerp! (-> self root trans) (-> self src-pos) (-> self orig-pos) f0-13) - ) + (- (the float (ja-num-frames 0)) (ja-aframe (the-as float 54.0) 0)))) + (f0-13 (fmax 0.0 (fmin 1.0 f1-1)))) + (vector-lerp! (-> self root trans) (-> self src-pos) (-> self orig-pos) f0-13)) (suspend) - (ja :num! (seek!)) - ) - 0 - ) + (ja :num! (seek!))) + 0) (defstate ogreboss-super-boulder-throw (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (set! (-> self hit-boss) #f) - (set! (-> self src-pos quad) (-> self root trans quad)) - (ja-no-eval :group! ogreboss-super-boulder-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek! (-> self joint blend) (the-as float 0.0) (* 5.0 (seconds-per-frame))) - (let* ((f1-1 (/ (- (ja-frame-num 0) (ja-aframe (the-as float 32.0) 0)) - (- (the float (ja-num-frames 0)) (ja-aframe (the-as float 32.0) 0)) - ) - ) - (f0-13 (fmax 0.0 (fmin 1.0 f1-1))) - ) - (vector-lerp! (-> self root trans) (-> self src-pos) (-> self orig-pos) f0-13) - ) - 0 - (suspend) - (ja :num! (seek!)) - ) - (go ogreboss-super-boulder-land) - ) - :post transform-post - ) + :code + (behavior () + (set! (-> self hit-boss) #f) + (set! (-> self src-pos quad) (-> self root trans quad)) + (ja-no-eval :group! ogreboss-super-boulder-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self joint blend) (the-as float 0.0) (* 5.0 (seconds-per-frame))) + (let* ((f1-1 (/ (- (ja-frame-num 0) (ja-aframe (the-as float 32.0) 0)) + (- (the float (ja-num-frames 0)) (ja-aframe (the-as float 32.0) 0)))) + (f0-13 (fmax 0.0 (fmin 1.0 f1-1)))) + (vector-lerp! (-> self root trans) (-> self src-pos) (-> self orig-pos) f0-13)) + 0 + (suspend) + (ja :num! (seek!))) + (go ogreboss-super-boulder-land)) + :post transform-post) (defstate ogreboss-super-boulder-hit (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (set! (-> self hit-boss) #t) - (ogreboss-super-boulder-play-hit-anim) - (go ogreboss-super-boulder-land) - ) - :post transform-post - ) + :code + (behavior () + (set! (-> self hit-boss) #t) + (ogreboss-super-boulder-play-hit-anim) + (go ogreboss-super-boulder-land)) + :post transform-post) (defstate ogreboss-super-boulder-die (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (ogreboss-super-boulder-play-hit-anim) - (ogreboss-rock-explosion-effect (the-as basic (-> self draw origin))) - (ogreboss-rock-explosion-effect (the-as basic (-> self draw origin))) - (ja-channel-set! 0) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - :post transform-post - ) + :code + (behavior () + (ogreboss-super-boulder-play-hit-anim) + (ogreboss-rock-explosion-effect (the-as basic (-> self draw origin))) + (ogreboss-rock-explosion-effect (the-as basic (-> self draw origin))) + (ja-channel-set! 0) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post transform-post) (defstate ogreboss-super-boulder-land (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (set! (-> self root trans quad) (-> self orig-pos quad)) - (ogreboss-super-boulder-impact-effect) - (set! (-> self joint enable) #f) - (ja-no-eval :group! ogreboss-super-boulder-roll-ja - :num! (seek! (ja-aframe (the-as float 100.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (when (< 81920.0 (vector-vector-distance (the-as vector (-> self root root-prim prim-core)) (target-pos 0))) - (ja-channel-push! 1 (seconds 0.1)) - (go ogreboss-super-boulder-roll) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 100.0) 0))) - ) - (go ogreboss-super-boulder-roll) - ) - :post (behavior () - (transform-post) - 0 - ) - ) + :code + (behavior () + (set! (-> self root trans quad) (-> self orig-pos quad)) + (ogreboss-super-boulder-impact-effect) + (set! (-> self joint enable) #f) + (ja-no-eval :group! ogreboss-super-boulder-roll-ja :num! (seek! (ja-aframe (the-as float 100.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (when (< 81920.0 (vector-vector-distance (the-as vector (-> self root root-prim prim-core)) (target-pos 0))) + (ja-channel-push! 1 (seconds 0.1)) + (go ogreboss-super-boulder-roll)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 100.0) 0)))) + (go ogreboss-super-boulder-roll)) + :post + (behavior () + (transform-post) + 0)) (defstate ogreboss-super-boulder-roll (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (ogreboss-super-boulder-impact-effect) - (ja-no-eval :group! ogreboss-super-boulder-roll-ja - :num! (seek! (ja-aframe (the-as float 162.0) 0)) - :frame-num (ja-aframe (the-as float 100.0) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 162.0) 0))) - ) - (set! (-> self root root-prim local-sphere w) 28672.0) - (cond - ((-> self hit-boss) - (while (let ((gp-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-2 from) self) - (set! (-> gp-2 num-params) 0) - (set! (-> gp-2 message) 'break) - (let ((s5-0 send-event-function) - (v1-22 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - ) - (not (s5-0 - (if v1-22 - (-> v1-22 extra process) - ) - gp-2 - ) - ) - ) - ) - (suspend) - ) - ) - (else - (while (let ((gp-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-3 from) self) - (set! (-> gp-3 num-params) 0) - (set! (-> gp-3 message) 'break-no-damage) - (let ((s5-1 send-event-function) - (v1-27 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - ) - (not (s5-1 - (if v1-27 - (-> v1-27 extra process) - ) - gp-3 - ) - ) - ) - ) - (suspend) - ) - ) - ) - (ja-no-eval :group! ogreboss-super-boulder-roll-ja - :num! (seek!) - :frame-num (ja-aframe (the-as float 162.0) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - ) - :post (behavior () - (transform-post) - 0 - ) - ) + :code + (behavior () + (ogreboss-super-boulder-impact-effect) + (ja-no-eval :group! + ogreboss-super-boulder-roll-ja + :num! + (seek! (ja-aframe (the-as float 162.0) 0)) + :frame-num + (ja-aframe (the-as float 100.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 162.0) 0)))) + (set! (-> self root root-prim local-sphere w) 28672.0) + (cond + ((-> self hit-boss) + (while (let ((gp-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-2 from) self) + (set! (-> gp-2 num-params) 0) + (set! (-> gp-2 message) 'break) + (let ((s5-0 send-event-function) + (v1-22 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (not (s5-0 (if v1-22 (-> v1-22 extra process)) gp-2)))) + (suspend))) + (else + (while (let ((gp-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-3 from) self) + (set! (-> gp-3 num-params) 0) + (set! (-> gp-3 message) 'break-no-damage) + (let ((s5-1 send-event-function) + (v1-27 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (not (s5-1 (if v1-27 (-> v1-27 extra process)) gp-3)))) + (suspend)))) + (ja-no-eval :group! ogreboss-super-boulder-roll-ja :num! (seek!) :frame-num (ja-aframe (the-as float 162.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self)) + :post + (behavior () + (transform-post) + 0)) (defmethod relocate ((this ogreboss-super-boulder) (arg0 int)) - (if (nonzero? (-> this joint)) - (&+! (-> this joint) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this joint)) (&+! (-> this joint) arg0)) + (call-parent-method this arg0)) (defstate ogreboss-super-boulder-killed-player (ogreboss-super-boulder) - :code (behavior () - (clear-collide-with-as (-> self root)) - (ja-post) - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (ja-post) + (loop + (suspend)))) (defbehavior ogreboss-super-boulder-init-by-other ogreboss-super-boulder ((arg0 vector) (arg1 float) (arg2 entity-actor)) (set! (-> self entity) arg2) (let ((s4-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -773,12 +557,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> self root) s4-0) - ) + (set! (-> self root) s4-0)) (set! (-> self orig-pos quad) (-> arg0 quad)) (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) (set! (-> self root quat vec quad) (-> self parent-override 0 root quat vec quad)) @@ -790,14 +572,7 @@ (logior! (-> self skel effect flags) 1) (set! (-> self draw origin-joint-index) (the-as uint 3)) (let ((f30-1 (* 65536.0 (rand-vu)))) - (quaternion-axis-angle! - (-> self tumble-quat) - (cos f30-1) - (the-as float 0.0) - (sin f30-1) - (the-as float 2730.6667) - ) - ) + (quaternion-axis-angle! (-> self tumble-quat) (cos f30-1) (the-as float 0.0) (sin f30-1) (the-as float 2730.6667))) (set! (-> self joint) (new 'process 'joint-mod-blend-local self 3 #f)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 468) self)) (set-vector! (-> self draw color-emissive) 0.125 0.0625 0.0 0.0) @@ -806,92 +581,73 @@ (set! (-> self grow-rate) (/ 300.0 arg1)) (set! (-> self sound-id) (new-sound-id)) (go ogreboss-super-boulder-idle) - (none) - ) + (none)) (deftype ogreboss-bounce-boulder (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer ogreboss-super-boulder) :overlay-at parent) - (src-pos vector :inline) - (side-dir vector :inline) - (side-pos float) - (dest-pos float) - (boulder-type int8) - ) + ((root collide-shape-moving :override) + (parent-override (pointer ogreboss-super-boulder) :overlay-at parent) + (src-pos vector :inline) + (side-dir vector :inline) + (side-pos float) + (dest-pos float) + (boulder-type int8)) (:states - ogreboss-bounce-boulder-idle - ) - ) - + ogreboss-bounce-boulder-idle)) (defbehavior ogreboss-bounce-boulder-event-handler ogreboss-bounce-boulder ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch) - (if (and *target* ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self root) - (the-as uint 1) - ) - ) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) - ) - ) - ) + (if (and *target* + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self root) + (the-as uint 1))) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)))))) (defstate ogreboss-bounce-boulder-idle (ogreboss-bounce-boulder) :event ogreboss-bounce-boulder-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (let ((f30-0 2.0)) - (ja-no-eval :group! ogreboss-bounce-boulder-idle-ja - :num! (seek! (ja-aframe (the-as float 40.0) 0) f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (set! (-> self side-pos) - (* (fmin 1.0 (/ (ja-frame-num 0) (ja-aframe (the-as float 40.0) 0))) (-> self dest-pos)) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 40.0) 0) f30-0)) - ) - (ja-no-eval :group! ogreboss-bounce-boulder-idle-ja - :num! (seek! max f30-0) - :frame-num (ja-aframe (the-as float 40.0) 0) - ) - (until (ja-done? 0) - (if (>= (ja-frame-num 0) (ja-aframe (the-as float 235.0) 0)) - (seek! (-> self side-pos) (the-as float 0.0) (* 20480.0 (seconds-per-frame))) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (cleanup-for-death self) - ) - :post (behavior () - (vector+*! (-> self root trans) (-> self src-pos) (-> self side-dir) (-> self side-pos)) - (transform-post) - (find-ground-and-draw-shadow - (the-as vector (-> self root root-prim prim-core)) - (the-as vector #f) - (the-as float 49152.0) - (collide-kind background) - (the-as process-drawable #f) - (the-as float 0.0) - (the-as float 409600.0) - ) - ) - ) + :code + (behavior () + (set-time! (-> self state-time)) + (let ((f30-0 2.0)) + (ja-no-eval :group! + ogreboss-bounce-boulder-idle-ja + :num! + (seek! (ja-aframe (the-as float 40.0) 0) f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self side-pos) (* (fmin 1.0 (/ (ja-frame-num 0) (ja-aframe (the-as float 40.0) 0))) (-> self dest-pos))) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 40.0) 0) f30-0))) + (ja-no-eval :group! + ogreboss-bounce-boulder-idle-ja + :num! (seek! max f30-0) + :frame-num + (ja-aframe (the-as float 40.0) 0)) + (until (ja-done? 0) + (if (>= (ja-frame-num 0) (ja-aframe (the-as float 235.0) 0)) + (seek! (-> self side-pos) (the-as float 0.0) (* 20480.0 (seconds-per-frame)))) + (suspend) + (ja :num! (seek! max f30-0)))) + (cleanup-for-death self)) + :post + (behavior () + (vector+*! (-> self root trans) (-> self src-pos) (-> self side-dir) (-> self side-pos)) + (transform-post) + (find-ground-and-draw-shadow (the-as vector (-> self root root-prim prim-core)) + (the-as vector #f) + (the-as float 49152.0) + (collide-kind background) + (the-as process-drawable #f) + (the-as float 0.0) + (the-as float 409600.0)))) (defbehavior ogreboss-bounce-boulder-init-by-other ogreboss-bounce-boulder ((arg0 int) (arg1 entity-actor)) (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -899,88 +655,72 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) - (set-root-prim! s5-0 s4-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! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self boulder-type) arg0) (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) (set! (-> self root quat vec quad) (-> self parent-override 0 root quat vec quad)) (vector-identity! (-> self root scale)) (set! (-> self src-pos quad) (-> self root trans quad)) (set! (-> self side-pos) 0.0) - (set! (-> self dest-pos) (the-as float (cond - ((zero? arg0) - 0.0 - ) - ((= arg0 1) - -20480.0 - ) - ((= arg0 2) - 20480.0 - ) - (else - 0.0 - ) - ) - ) - ) + (set! (-> self dest-pos) + (the-as float + (cond + ((zero? arg0) 0.0) + ((= arg0 1) -20480.0) + ((= arg0 2) 20480.0) + (else 0.0)))) (vector-x-quaternion! (-> self side-dir) (-> self root quat)) (initialize-skeleton self *ogreboss-bounce-boulder-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self draw origin-joint-index) (the-as uint 3)) (set-vector! (-> self draw color-emissive) 0.125 0.0625 0.0 0.0) (go ogreboss-bounce-boulder-idle) - (none) - ) + (none)) (deftype ogreboss (process-drawable) - ((root collide-shape :override) - (old-player-transform transformq :inline) - (level float) - (difficulty float) - (boulder handle) - (column handle) - (z-plane vector :inline) - (far-pos vector :inline) - (near-pos vector :inline) - (side-dir vector :inline) - (target-offset-array vector 3 :inline) - (target-offset-array-2 vector :inline :overlay-at (-> target-offset-array 1)) - (target-offset-array-3 vector :inline :overlay-at (-> target-offset-array 2)) - (target-actor-array entity-actor 3) - (target-blast-radius-array float 3) - (shuffle-pos float) - (target-count int8) - (hit-count int8) - (max-hit-count int8) - (roll-boulder int8) - (try-count uint8) - (hit-time time-frame) - (grow-time float) - (lava entity-actor) - (vulnerable symbol) - (bridge-assembled symbol) - (at-near-spot symbol) - (submerged symbol) - (try-counted symbol) - ) + ((root collide-shape :override) + (old-player-transform transformq :inline) + (level float) + (difficulty float) + (boulder handle) + (column handle) + (z-plane vector :inline) + (far-pos vector :inline) + (near-pos vector :inline) + (side-dir vector :inline) + (target-offset-array vector 3 :inline) + (target-offset-array-2 vector :inline :overlay-at (-> target-offset-array 1)) + (target-offset-array-3 vector :inline :overlay-at (-> target-offset-array 2)) + (target-actor-array entity-actor 3) + (target-blast-radius-array float 3) + (shuffle-pos float) + (target-count int8) + (hit-count int8) + (max-hit-count int8) + (roll-boulder int8) + (try-count uint8) + (hit-time time-frame) + (grow-time float) + (lava entity-actor) + (vulnerable symbol) + (bridge-assembled symbol) + (at-near-spot symbol) + (submerged symbol) + (try-counted symbol)) (:states - ogreboss-dead - ogreboss-die - ogreboss-idle - ogreboss-intro - ogreboss-stage1 - ogreboss-stage2 - ogreboss-stage3-hit - ogreboss-stage3-shuffle - ogreboss-stage3-throw - ogreboss-wait-for-player - ) - ) - + ogreboss-dead + ogreboss-die + ogreboss-idle + ogreboss-intro + ogreboss-stage1 + ogreboss-stage2 + ogreboss-stage3-hit + ogreboss-stage3-shuffle + ogreboss-stage3-throw + ogreboss-wait-for-player)) (defbehavior ogreboss-inc-try-count ogreboss () (when (not (-> self try-counted)) @@ -988,31 +728,24 @@ (let ((gp-0 (-> self entity extra perm))) (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) (seekl! (-> gp-0 user-int8 0) 255 1) - (set! (-> self try-count) (the-as uint (-> gp-0 user-int8 0))) - ) - ) + (set! (-> self try-count) (the-as uint (-> gp-0 user-int8 0))))) 0 - (none) - ) + (none)) (defbehavior ogreboss-player-inside-range? ogreboss ((arg0 float)) - (< (vector-vector-distance (-> self far-pos) (target-pos 0)) arg0) - ) + (< (vector-vector-distance (-> self far-pos) (target-pos 0)) arg0)) (defun ogreboss-set-stage1-camera () 0 - (none) - ) + (none)) (defun ogreboss-set-stage2-camera () 0 - (none) - ) + (none)) (defun ogreboss-reset-camera () 0 - (none) - ) + (none)) (defbehavior ogreboss-idle-loop ogreboss () (loop @@ -1023,182 +756,124 @@ (ja-no-eval :group! ogreboss-idle-ja :num! (seek! (ja-aframe (the-as float 140.0) 0)) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 140.0) 0))) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.167)) - (suspend) - ) - ) - (ja-no-eval :group! ogreboss-idle-ja - :num! (seek! (ja-aframe (the-as float 168.0) 0)) - :frame-num (ja-aframe (the-as float 140.0) 0) - ) + (ja :num! (seek! (ja-aframe (the-as float 140.0) 0)))) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.167)) (suspend))) + (ja-no-eval :group! + ogreboss-idle-ja + :num! + (seek! (ja-aframe (the-as float 168.0) 0)) + :frame-num + (ja-aframe (the-as float 140.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 168.0) 0))) - ) - (let ((gp-5 (current-time))) - (until (time-elapsed? gp-5 (seconds 0.167)) - (suspend) - ) - ) + (ja :num! (seek! (ja-aframe (the-as float 168.0) 0)))) + (let ((gp-5 (current-time))) (until (time-elapsed? gp-5 (seconds 0.167)) (suspend))) (ja-no-eval :group! ogreboss-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 168.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) ((= v1-0 1) (ja-no-eval :group! ogreboss-idle-alt-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) (else - (dotimes (gp-7 4) - (ja-no-eval :group! ogreboss-idle-bored-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) + (dotimes (gp-7 4) + (ja-no-eval :group! ogreboss-idle-bored-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))) (the-as none 0) - (none) - ) + (none)) (defstate ogreboss-idle (ogreboss) - :enter (behavior () - (when (zero? (-> self try-count)) - (let ((gp-0 (manipy-spawn (-> self root trans) (-> self entity) *ogreboss-column-sg* #f :to self))) - (set! (-> self column) (ppointer->handle gp-0)) - (send-event (ppointer->process gp-0) 'anim-mode 'loop) - (send-event (ppointer->process gp-0) 'art-joint-anim "ogreboss-column-idle" 0) - (send-event (ppointer->process gp-0) 'draw #t) - ) - ) - ) - :trans (behavior () - (try-preload-stream *art-control* "$GAMCAM23" 0 self (the-as float -99.0)) - (when *target* - (let ((gp-0 (-> *target* control trans))) - (if (and (< 122880.0 (-> gp-0 y)) - (< (-> gp-0 x) 892928.0) - (and (ogreboss-player-inside-range? (the-as float 737280.0)) (< 0.0 (vector4-dot gp-0 (-> self z-plane)))) - ) - (go ogreboss-intro) - ) - ) - ) - ) - :code (behavior () - (ogreboss-reset-camera) - (ogreboss-idle-loop) - ) - :post ja-post - ) + :enter + (behavior () + (when (zero? (-> self try-count)) + (let ((gp-0 (manipy-spawn (-> self root trans) (-> self entity) *ogreboss-column-sg* #f :to self))) + (set! (-> self column) (ppointer->handle gp-0)) + (send-event (ppointer->process gp-0) 'anim-mode 'loop) + (send-event (ppointer->process gp-0) 'art-joint-anim "ogreboss-column-idle" 0) + (send-event (ppointer->process gp-0) 'draw #t)))) + :trans + (behavior () + (try-preload-stream *art-control* "$GAMCAM23" 0 self (the-as float -99.0)) + (when *target* + (let ((gp-0 (-> *target* control trans))) + (if (and (< 122880.0 (-> gp-0 y)) + (< (-> gp-0 x) 892928.0) + (and (ogreboss-player-inside-range? (the-as float 737280.0)) (< 0.0 (vector4-dot gp-0 (-> self z-plane))))) + (go ogreboss-intro))))) + :code + (behavior () + (ogreboss-reset-camera) + (ogreboss-idle-loop)) + :post ja-post) (defstate ogreboss-intro (ogreboss) - :code (behavior () - (when (zero? (-> self try-count)) - (process-drawable-delay-player (seconds 1)) - (let ((gp-0 (get-process *default-dead-pool* pov-camera #x4000))) - (ppointer->handle (when gp-0 - (let ((t9-2 (method-of-type pov-camera activate))) - (t9-2 (the-as pov-camera gp-0) self 'pov-camera (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-0 - pov-camera-init-by-other - (-> self root trans) - *ogreboss-cam-sg* - "ogreboss-cam-intro" - 0 - #f - '((0 setting-reset music ogreboss) (2 ambient camera "gamcam23")) - ) - (-> gp-0 ppointer) - ) - ) - ) - (send-event (handle->process (-> self column)) 'anim-mode 'play1) - (send-event (handle->process (-> self column)) 'art-joint-anim "ogreboss-column-intro" 0) - (ja-no-eval :group! ogreboss-intro-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + :code + (behavior () + (when (zero? (-> self try-count)) + (process-drawable-delay-player (seconds 1)) + (let ((gp-0 (get-process *default-dead-pool* pov-camera #x4000))) + (ppointer->handle (when gp-0 + (let ((t9-2 (method-of-type pov-camera activate))) + (t9-2 (the-as pov-camera gp-0) self 'pov-camera (the-as pointer #x70004000))) + (run-now-in-process gp-0 + pov-camera-init-by-other + (-> self root trans) + *ogreboss-cam-sg* + "ogreboss-cam-intro" + 0 + #f + '((0 setting-reset music ogreboss) (2 ambient camera "gamcam23"))) + (-> gp-0 ppointer)))) + (send-event (handle->process (-> self column)) 'anim-mode 'play1) + (send-event (handle->process (-> self column)) 'art-joint-anim "ogreboss-column-intro" 0) + (ja-no-eval :group! ogreboss-intro-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (close-specific-task! (game-task ogre-boss) (task-status need-hint)) (suspend) - (ja :num! (seek!)) - ) - (close-specific-task! (game-task ogre-boss) (task-status need-hint)) - (suspend) - (send-event *target* 'continue (get-continue-by-name *game-info* "ogre-start")) - (ogreboss-inc-try-count) - ) - (set-setting! 'music 'ogreboss 0.0 0) - (go ogreboss-wait-for-player) - ) - :post ja-post - ) + (send-event *target* 'continue (get-continue-by-name *game-info* "ogre-start")) + (ogreboss-inc-try-count)) + (set-setting! 'music 'ogreboss 0.0 0) + (go ogreboss-wait-for-player)) + :post ja-post) (defstate ogreboss-wait-for-player (ogreboss) - :trans (behavior () - (when *target* - (if (ogreboss-player-inside-range? (the-as float 614400.0)) - (go ogreboss-stage1) - ) - (if (not (ogreboss-player-inside-range? (the-as float 737280.0))) - (go ogreboss-idle) - ) - ) - ) - :code (behavior () - (ogreboss-idle-loop) - ) - :post ja-post - ) + :trans + (behavior () + (when *target* + (if (ogreboss-player-inside-range? (the-as float 614400.0)) (go ogreboss-stage1)) + (if (not (ogreboss-player-inside-range? (the-as float 737280.0))) (go ogreboss-idle)))) + :code + (behavior () + (ogreboss-idle-loop)) + :post ja-post) (defun ogreboss-debug-adjust-difficulty () 0 - (none) - ) + (none)) (defbehavior ogreboss-pick-target ogreboss () (local-vars (gp-0 int)) (cond - ((rand-vu-percent? (the-as float 0.4)) - (set! gp-0 (rand-vu-int-range 0 (+ (-> self target-count) -1))) - ) + ((rand-vu-percent? (the-as float 0.4)) (set! gp-0 (rand-vu-int-range 0 (+ (-> self target-count) -1)))) (else - (set! gp-0 0) - (let ((f30-0 4096000.0) - (s5-0 (target-pos 0)) - ) - (dotimes (s4-0 (-> self target-count)) - (let* ((v1-6 (-> self target-actor-array s4-0)) - (s3-0 (if v1-6 - (-> v1-6 extra process) - ) - ) - ) - (when s3-0 - (let ((f0-0 (vector-vector-distance s5-0 (-> (the-as process-drawable s3-0) root trans)))) - (when (< f0-0 f30-0) - (set! f30-0 f0-0) - (set! gp-0 s4-0) - ) - ) - ) - ) - ) - ) - ) - ) - gp-0 - ) + (set! gp-0 0) + (let ((f30-0 4096000.0) + (s5-0 (target-pos 0))) + (dotimes (s4-0 (-> self target-count)) + (let* ((v1-6 (-> self target-actor-array s4-0)) + (s3-0 (if v1-6 (-> v1-6 extra process)))) + (when s3-0 + (let ((f0-0 (vector-vector-distance s5-0 (-> (the-as process-drawable s3-0) root trans)))) + (when (< f0-0 f30-0) + (set! f30-0 f0-0) + (set! gp-0 s4-0))))))))) + gp-0) (defbehavior ogreboss-shoot-boulder ogreboss ((arg0 pickup-type)) (let ((gp-0 (new 'stack-no-clear 'ogreboss-missile-init-data))) @@ -1206,122 +881,73 @@ ;; og:preserve-this (set! (-> gp-0 src) (-> self node-list data (#if *jak1-full-game* 50 52) bone transform vector 3)) (set! (-> gp-0 duration) - (the-as time-frame (the int (* 300.0 (+ 1.25 (* -0.25 (-> self level)) (/ 0.5 (-> self difficulty)))))) - ) + (the-as time-frame (the int (* 300.0 (+ 1.25 (* -0.25 (-> self level)) (/ 0.5 (-> self difficulty))))))) (set! (-> gp-0 pickup-type) arg0) (set! (-> gp-0 blast-radius) 32768.0) (cond (*target* - (let ((v1-10 (ogreboss-pick-target))) - (let* ((a0-3 (-> self target-actor-array v1-10)) - (a1-0 (if a0-3 - (-> a0-3 extra process) - ) - ) - ) - (if a1-0 - (set! (-> s5-0 quad) (-> (the-as process-drawable a1-0) root trans quad)) - (set! (-> s5-0 quad) (-> self root trans quad)) - ) - ) - (vector+! s5-0 s5-0 (-> self target-offset-array v1-10)) - (set! (-> gp-0 blast-radius) (-> self target-blast-radius-array v1-10)) - ) - ) - (else - (vector+*! s5-0 (-> self root trans) *z-vector* (the-as float 409600.0)) - ) - ) - (set! (-> gp-0 dest) s5-0) - ) + (let ((v1-10 (ogreboss-pick-target))) + (let* ((a0-3 (-> self target-actor-array v1-10)) + (a1-0 (if a0-3 (-> a0-3 extra process)))) + (if a1-0 + (set! (-> s5-0 quad) (-> (the-as process-drawable a1-0) root trans quad)) + (set! (-> s5-0 quad) (-> self root trans quad)))) + (vector+! s5-0 s5-0 (-> self target-offset-array v1-10)) + (set! (-> gp-0 blast-radius) (-> self target-blast-radius-array v1-10)))) + (else (vector+*! s5-0 (-> self root trans) *z-vector* (the-as float 409600.0)))) + (set! (-> gp-0 dest) s5-0)) (sound-play "ogre-fires" :position (the-as symbol (-> self root trans))) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 470) - -1 - #f - #f - #f - (-> gp-0 src) - :to *entity-pool* - ) - (process-spawn ogreboss-missile gp-0 (-> self entity) :to self) - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 470) + -1 + #f + #f + #f + (-> gp-0 src) + :to + *entity-pool*) + (process-spawn ogreboss-missile gp-0 (-> self entity) :to self)) 0 - (none) - ) + (none)) (defbehavior ogreboss-submerge ogreboss ((arg0 time-frame) (arg1 float)) (when (not (-> self submerged)) (cond - ((ja-group? ogreboss-dive-ja) + ((ja-group? ogreboss-dive-ja) (until (ja-done? 0) (suspend) (ja :num! (seek! max arg1)))) + (else + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-dive-ja :num! (seek! (ja-aframe (the-as float 22.0) 0) arg1) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max arg1)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-dive-ja :num! (seek! (ja-aframe (the-as float 22.0) 0) arg1) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 22.0) 0) arg1)) - ) - (cond - ((-> self at-near-spot) - (let ((a1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-7 from) self) - (set! (-> a1-7 num-params) 0) - (set! (-> a1-7 message) 'submerge2) - (let ((t9-8 send-event-function) - (v1-31 (-> self lava)) - ) - (t9-8 - (if v1-31 - (-> v1-31 extra process) - ) - a1-7 - ) - ) - ) - ) - (else - (let ((a1-8 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-8 from) self) - (set! (-> a1-8 num-params) 0) - (set! (-> a1-8 message) 'submerge1) - (let ((t9-9 send-event-function) - (v1-35 (-> self lava)) - ) - (t9-9 - (if v1-35 - (-> v1-35 extra process) - ) - a1-8 - ) - ) - ) - ) - ) - (ja-no-eval :group! ogreboss-dive-ja :num! (seek! max arg1) :frame-num (ja-aframe (the-as float 22.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max arg1)) - ) - ) - ) + (ja :num! (seek! (ja-aframe (the-as float 22.0) 0) arg1))) + (cond + ((-> self at-near-spot) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 0) + (set! (-> a1-7 message) 'submerge2) + (let ((t9-8 send-event-function) + (v1-31 (-> self lava))) + (t9-8 (if v1-31 (-> v1-31 extra process)) a1-7)))) + (else + (let ((a1-8 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-8 from) self) + (set! (-> a1-8 num-params) 0) + (set! (-> a1-8 message) 'submerge1) + (let ((t9-9 send-event-function) + (v1-35 (-> self lava))) + (t9-9 (if v1-35 (-> v1-35 extra process)) a1-8))))) + (ja-no-eval :group! ogreboss-dive-ja :num! (seek! max arg1) :frame-num (ja-aframe (the-as float 22.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max arg1))))) (logior! (-> self draw status) (draw-status hidden)) (set! (-> self submerged) #t) - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 arg0) - (suspend) - ) - ) - ) + (let ((s5-1 (current-time))) (until (time-elapsed? s5-1 arg0) (suspend)))) 0 - (none) - ) + (none)) (defbehavior ogreboss-emerge ogreboss ((arg0 float)) (when (-> self submerged) @@ -1334,253 +960,161 @@ (set! (-> a1-0 num-params) 0) (set! (-> a1-0 message) 'emerge2) (let ((t9-0 send-event-function) - (v1-6 (-> self lava)) - ) - (t9-0 - (if v1-6 - (-> v1-6 extra process) - ) - a1-0 - ) - ) - ) - ) + (v1-6 (-> self lava))) + (t9-0 (if v1-6 (-> v1-6 extra process)) a1-0)))) (else - (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) 'emerge1) - (let ((t9-1 send-event-function) - (v1-10 (-> self lava)) - ) - (t9-1 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - ) - ) + (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) 'emerge1) + (let ((t9-1 send-event-function) + (v1-10 (-> self lava))) + (t9-1 (if v1-10 (-> v1-10 extra process)) a1-1))))) (ja-no-eval :group! ogreboss-rise-ja :num! (seek! max arg0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max arg0)) - ) - ) + (ja :num! (seek! max arg0)))) 0 - (none) - ) + (none)) (defbehavior ogreboss-move-near ogreboss ((arg0 time-frame) (arg1 float)) (when (not (-> self at-near-spot)) (ogreboss-submerge arg0 arg1) (set! (-> self at-near-spot) #t) (set! (-> self root trans quad) (-> self near-pos quad)) - (ogreboss-emerge arg1) - ) + (ogreboss-emerge arg1)) 0 - (none) - ) + (none)) (defbehavior ogreboss-move-far ogreboss ((arg0 time-frame) (arg1 float)) (when (-> self at-near-spot) (ogreboss-submerge arg0 arg1) (set! (-> self at-near-spot) #f) (set! (-> self root trans quad) (-> self far-pos quad)) - (ogreboss-emerge arg1) - ) + (ogreboss-emerge arg1)) 0 - (none) - ) + (none)) (defbehavior ogreboss-post ogreboss () (transform-post) (send-event *camera* 'point-of-interest (-> self node-list data 5 bone transform vector 3)) 0 - (none) - ) + (none)) (defstate ogreboss-stage1 (ogreboss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('next-stage) - (set! (-> self bridge-assembled) #t) - (go ogreboss-stage2) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (and (-> self bridge-assembled) - (ogreboss-player-inside-range? (the-as float 524288.0)) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (go ogreboss-stage2) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask enemy)) - (ogreboss-set-stage1-camera) - (ogreboss-move-near (seconds 3) (the-as float 1.0)) - (cond - ((ja-group? ogreboss-victory-ja) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('next-stage) (set! (-> self bridge-assembled) #t) (go ogreboss-stage2)))) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (and (-> self bridge-assembled) + (ogreboss-player-inside-range? (the-as float 524288.0)) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (go ogreboss-stage2))) + :code + (behavior () + (logior! (-> self mask) (process-mask enemy)) + (ogreboss-set-stage1-camera) + (ogreboss-move-near (seconds 3) (the-as float 1.0)) + (cond + ((ja-group? ogreboss-victory-ja) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-roar-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (let* ((gp-0 (the int (* (-> self difficulty) (+ 8.0 (* 4.0 (-> self level)))))) + (f0-17 1.0) + (f1-2 0.15) + (f2-2 (-> self difficulty)) + (f30-0 (+ f0-17 (* f1-2 (* f2-2 f2-2) (-> self level))))) (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-roar-ja :num! (seek!) :frame-num 0.0) + (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (let* ((gp-0 (the int (* (-> self difficulty) (+ 8.0 (* 4.0 (-> self level)))))) - (f0-17 1.0) - (f1-2 0.15) - (f2-2 (-> self difficulty)) - (f30-0 (+ f0-17 (* f1-2 (* f2-2 f2-2) (-> self level)))) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (countdown (gp-1 (+ gp-0 -1)) - (let ((boulder-pickup (pickup-type none))) - (let ((f28-0 0.0)) - (cond - ((>= 1.0 (-> *target* fact health)) - (set! f28-0 0.1) - ) - ((>= 2.0 (-> *target* fact health)) - (set! f28-0 0.05) - ) - ) - (set! f28-0 (cond - ((< (-> self try-count) (the-as uint 5)) - (* 0.0 f28-0) - ) - ((< (-> self try-count) (the-as uint 10)) - (* 0.5 f28-0) - ) - (else - (empty) - f28-0 - ) - ) - ) - (if (and *target* (< (rand-vu) f28-0)) - (set! boulder-pickup (pickup-type eco-green)) - ) - ) - (ogreboss-shoot-boulder (the-as pickup-type boulder-pickup)) - ) - (ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (ja :num! (seek! max f30-0))) + (countdown (gp-1 (+ gp-0 -1)) + (let ((boulder-pickup (pickup-type none))) + (let ((f28-0 0.0)) + (cond + ((>= 1.0 (-> *target* fact health)) (set! f28-0 0.1)) + ((>= 2.0 (-> *target* fact health)) (set! f28-0 0.05))) + (set! f28-0 + (cond + ((< (-> self try-count) (the-as uint 5)) (* 0.0 f28-0)) + ((< (-> self try-count) (the-as uint 10)) (* 0.5 f28-0)) + (else (empty) f28-0))) + (if (and *target* (< (rand-vu) f28-0)) (set! boulder-pickup (pickup-type eco-green)))) + (ogreboss-shoot-boulder (the-as pickup-type boulder-pickup))) + (ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (ogreboss-inc-try-count)) + (ogreboss-shoot-boulder (pickup-type eco-blue)) + (ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max f30-0)) - ) - (ogreboss-inc-try-count) - ) - (ogreboss-shoot-boulder (pickup-type eco-blue)) - (ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0) + (ja :num! (seek! max f30-0)))) + (ogreboss-move-far (seconds 2) (the-as float 1.0)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (ogreboss-move-far (seconds 2) (the-as float 1.0)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ogreboss-stage1) - ) - :post ogreboss-post - ) + (ja :num! (seek!))) + (go ogreboss-stage1)) + :post ogreboss-post) (defbehavior ogreboss-roll-boulder ogreboss () (sound-play "ogre-fires" :position (the-as symbol (-> self root trans))) (+! (-> self roll-boulder) (rand-vu-int-range 1 2)) - (if (>= (-> self roll-boulder) 3) - (+! (-> self roll-boulder) -3) - ) + (if (>= (-> self roll-boulder) 3) (+! (-> self roll-boulder) -3)) (let ((v1-7 (-> self roll-boulder))) (cond - ((zero? v1-7) - (process-spawn ogreboss-bounce-boulder 2 (-> self entity) :to self) - ) - ((= v1-7 1) - (process-spawn ogreboss-bounce-boulder 1 (-> self entity) :to self) - ) - (else - (process-spawn ogreboss-bounce-boulder 0 (-> self entity) :to self) - ) - ) - ) + ((zero? v1-7) (process-spawn ogreboss-bounce-boulder 2 (-> self entity) :to self)) + ((= v1-7 1) (process-spawn ogreboss-bounce-boulder 1 (-> self entity) :to self)) + (else (process-spawn ogreboss-bounce-boulder 0 (-> self entity) :to self)))) 0 - (none) - ) + (none)) (defbehavior ogreboss-blend-hit-anim ogreboss () (let ((f1-0 0.0) - (f0-0 0.0) - ) + (f0-0 0.0)) (let ((f30-0 (the float (- (current-time) (-> self hit-time))))) (when (and (> (-> self hit-count) 0) (>= 45.0 f30-0)) - (set! f0-0 (+ (ja-aframe (the-as float 0.0) 1) - (* 0.022222223 f30-0 (- (ja-aframe (the-as float 8.0) 1) (ja-aframe (the-as float 0.0) 1))) - ) - ) - (set! f1-0 (cond - ((< f30-0 7.5) - (* 0.120000005 f30-0) - ) - ((< f30-0 22.5) - 0.9 - ) - (else - (* 0.04 (- 45.0 f30-0)) - ) - ) - ) - ) - ) - (ja :chan 1 :frame-interp f1-0 :num-func num-func-identity :frame-num f0-0) - ) + (set! f0-0 + (+ (ja-aframe (the-as float 0.0) 1) + (* 0.022222223 f30-0 (- (ja-aframe (the-as float 8.0) 1) (ja-aframe (the-as float 0.0) 1))))) + (set! f1-0 + (cond + ((< f30-0 7.5) (* 0.120000005 f30-0)) + ((< f30-0 22.5) 0.9) + (else (* 0.04 (- 45.0 f30-0))))))) + (ja :chan 1 :frame-interp f1-0 :num-func num-func-identity :frame-num f0-0)) 0 - (none) - ) + (none)) (defbehavior ogreboss-update-super-boulder ogreboss () (let ((a1-0 (handle->process (-> self boulder)))) - (if a1-0 - (set! (-> (the-as ogreboss-super-boulder a1-0) root trans quad) (-> self root trans quad)) - ) - ) + (if a1-0 (set! (-> (the-as ogreboss-super-boulder a1-0) root trans quad) (-> self root trans quad)))) 0 - (none) - ) + (none)) (defbehavior ogreboss-update-shuffling ogreboss () (ogreboss-update-super-boulder) (ogreboss-blend-hit-anim) 0 - (none) - ) + (none)) (defbehavior ogreboss-attack-event-handler ogreboss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -1589,367 +1123,260 @@ (if ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (the-as collide-shape-moving (-> self root)) - (the-as uint 128) - ) - (ja :chan 1 :group! ogreboss-hit-crotch-ja :num! min :frame-interp 0.0) - (ja :chan 1 :group! ogreboss-hit-chest-ja :num! min :frame-interp 0.0) - ) + (the-as uint 128)) + (ja :chan 1 :group! ogreboss-hit-crotch-ja :num! min :frame-interp 0.0) + (ja :chan 1 :group! ogreboss-hit-chest-ja :num! min :frame-interp 0.0)) (set-time! (-> self hit-time)) (let ((v1-17 (rand-vu-int-range 0 2))) (cond - ((zero? v1-17) - (sound-play "ogre-grunt1" :position (the-as symbol (-> self root trans))) - ) - ((= v1-17 1) - (sound-play "ogre-grunt2" :position (the-as symbol (-> self root trans))) - ) - (else - (sound-play "ogre-grunt3" :position (the-as symbol (-> self root trans))) - ) - ) - ) + ((zero? v1-17) (sound-play "ogre-grunt1" :position (the-as symbol (-> self root trans)))) + ((= v1-17 1) (sound-play "ogre-grunt2" :position (the-as symbol (-> self root trans)))) + (else (sound-play "ogre-grunt3" :position (the-as symbol (-> self root trans)))))) (+! (-> self hit-count) 1) - (if (>= (-> self hit-count) (-> self max-hit-count)) - (go ogreboss-stage3-hit) - ) - (send-event (handle->process (-> self boulder)) 'speedup) - ) - #t - ) - ) - ) + (if (>= (-> self hit-count) (-> self max-hit-count)) (go ogreboss-stage3-hit)) + (send-event (handle->process (-> self boulder)) 'speedup)) + #t))) (defstate ogreboss-stage2 (ogreboss) :event ogreboss-attack-event-handler - :enter (behavior () - (set! (-> self boulder) (the-as handle #f)) - ) - :trans (behavior () - 0 - ) - :code (behavior () - (ogreboss-set-stage2-camera) - (ogreboss-move-far (seconds 0.1) (the-as float 2.0)) - (let ((f30-0 (* 0.75 (-> self difficulty)))) - (let ((gp-0 #f)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max 1.5) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 1.5)) - ) - (set-time! (-> self state-time)) - (while (not gp-0) - (ogreboss-roll-boulder) - (set! gp-0 (or (and (time-elapsed? (-> self state-time) (seconds 2)) - (not (ogreboss-player-inside-range? (the-as float 524288.0))) - ) - (ogreboss-player-inside-range? (the-as float 409600.0)) - ) - ) - (ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + :enter + (behavior () + (set! (-> self boulder) (the-as handle #f))) + :trans + (behavior () + 0) + :code + (behavior () + (ogreboss-set-stage2-camera) + (ogreboss-move-far (seconds 0.1) (the-as float 2.0)) + (let ((f30-0 (* 0.75 (-> self difficulty)))) + (let ((gp-0 #f)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max 1.5) :frame-num 0.0) (until (ja-done? 0) - (if gp-0 - 0 - ) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - (ogreboss-roll-boulder) - (ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go ogreboss-stage3-shuffle) - ) - :post ogreboss-post - ) + (ja :num! (seek! max 1.5))) + (set-time! (-> self state-time)) + (while (not gp-0) + (ogreboss-roll-boulder) + (set! gp-0 + (or (and (time-elapsed? (-> self state-time) (seconds 2)) (not (ogreboss-player-inside-range? (the-as float 524288.0)))) + (ogreboss-player-inside-range? (the-as float 409600.0)))) + (ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (if gp-0 0) + (suspend) + (ja :num! (seek! max f30-0))))) + (ogreboss-roll-boulder) + (ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (go ogreboss-stage3-shuffle)) + :post ogreboss-post) (defbehavior ogreboss-spawn-super-boulder ogreboss () (set! (-> self boulder) - (ppointer->handle - (process-spawn ogreboss-super-boulder (-> self far-pos) (-> self grow-time) (-> self entity) :to self) - ) - ) + (ppointer->handle (process-spawn ogreboss-super-boulder (-> self far-pos) (-> self grow-time) (-> self entity) :to self))) 0 - (none) - ) + (none)) (defstate ogreboss-stage3-shuffle (ogreboss) :event ogreboss-attack-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self hit-count) 0) - (set! (-> self max-hit-count) (the int (* 6.0 (-> self difficulty)))) - (set! (-> self grow-time) (* 300.0 (+ (/ 10.0 (-> self difficulty)) (* -1.0 (-> self level))))) - (set! (-> self boulder) (the-as handle #f)) - ) - :exit (behavior () - (send-event *camera* 'point-of-interest #f) - (set! (-> self vulnerable) #f) - ) - :trans (behavior () - (let ((v1-1 (handle->process (-> self boulder)))) - (if (and v1-1 (>= (-> (the-as ogreboss-super-boulder v1-1) size) 1.0)) - (go ogreboss-stage3-throw) - ) - ) - (when (and (not (ogreboss-player-inside-range? (the-as float 409600.0))) - (time-elapsed? (-> self state-time) (seconds 0.5)) - ) + :enter + (behavior () (set-time! (-> self state-time)) - (send-event (handle->process (-> self boulder)) 'grow-faster) - ) - 0 - ) - :code (behavior () - (set! (-> self shuffle-pos) 0.0) - (let ((f30-0 (+ 1.0 (* 0.25 (-> self difficulty) (-> self level)))) - (gp-0 (if (rand-vu-percent? (the-as float 0.5)) - 0 - 1 - ) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-shuffle-prepare-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ogreboss-spawn-super-boulder) - (set-time! (-> self state-time)) - (ja-channel-push! 2 (seconds 0.05)) - (ja :chan 1 :group! ogreboss-hit-chest-ja :num! min :frame-interp 0.0) - (set! (-> self vulnerable) #t) - (loop - (if (>= -61440.0 (-> self shuffle-pos)) - (set! gp-0 1) - ) - (if (>= (-> self shuffle-pos) 61440.0) - (set! gp-0 0) - ) - (cond - ((zero? gp-0) - (set! gp-0 1) - (ja-no-eval :group! ogreboss-shuffle-right-start-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (let ((s5-1 (rand-vu-int-range 1 5))) - (while (and (> s5-1 0) (< -61440.0 (-> self shuffle-pos))) - (ja-no-eval :group! ogreboss-shuffle-right-loop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (set! (-> self shuffle-pos) (- (-> self shuffle-pos) (* 16384.0 (seconds-per-frame) f30-0))) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (+! s5-1 -1) - ) - ) - (ja-no-eval :group! ogreboss-shuffle-right-stop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (set! gp-0 0) - (ja-no-eval :group! ogreboss-shuffle-left-start-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (let ((s5-2 (rand-vu-int-range 1 5))) - (while (and (> s5-2 0) (< (-> self shuffle-pos) 61440.0)) - (ja-no-eval :group! ogreboss-shuffle-left-loop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (+! (-> self shuffle-pos) (* 16384.0 (seconds-per-frame) f30-0)) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (+! s5-2 -1) - ) - ) - (ja-no-eval :group! ogreboss-shuffle-left-stop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) - ) - :post (behavior () - (vector+*! (-> self root trans) (-> self far-pos) (-> self side-dir) (-> self shuffle-pos)) - (ogreboss-post) - ) - ) + (set! (-> self hit-count) 0) + (set! (-> self max-hit-count) (the int (* 6.0 (-> self difficulty)))) + (set! (-> self grow-time) (* 300.0 (+ (/ 10.0 (-> self difficulty)) (* -1.0 (-> self level))))) + (set! (-> self boulder) (the-as handle #f))) + :exit + (behavior () + (send-event *camera* 'point-of-interest #f) + (set! (-> self vulnerable) #f)) + :trans + (behavior () + (let ((v1-1 (handle->process (-> self boulder)))) + (if (and v1-1 (>= (-> (the-as ogreboss-super-boulder v1-1) size) 1.0)) (go ogreboss-stage3-throw))) + (when (and (not (ogreboss-player-inside-range? (the-as float 409600.0))) (time-elapsed? (-> self state-time) (seconds 0.5))) + (set-time! (-> self state-time)) + (send-event (handle->process (-> self boulder)) 'grow-faster)) + 0) + :code + (behavior () + (set! (-> self shuffle-pos) 0.0) + (let ((f30-0 (+ 1.0 (* 0.25 (-> self difficulty) (-> self level)))) + (gp-0 (if (rand-vu-percent? (the-as float 0.5)) 0 1))) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-shuffle-prepare-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (ogreboss-spawn-super-boulder) + (set-time! (-> self state-time)) + (ja-channel-push! 2 (seconds 0.05)) + (ja :chan 1 :group! ogreboss-hit-chest-ja :num! min :frame-interp 0.0) + (set! (-> self vulnerable) #t) + (loop + (if (>= -61440.0 (-> self shuffle-pos)) (set! gp-0 1)) + (if (>= (-> self shuffle-pos) 61440.0) (set! gp-0 0)) + (cond + ((zero? gp-0) + (set! gp-0 1) + (ja-no-eval :group! ogreboss-shuffle-right-start-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (suspend) + (ja :num! (seek! max f30-0))) + (let ((s5-1 (rand-vu-int-range 1 5))) + (while (and (> s5-1 0) (< -61440.0 (-> self shuffle-pos))) + (ja-no-eval :group! ogreboss-shuffle-right-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (set! (-> self shuffle-pos) (- (-> self shuffle-pos) (* 16384.0 (seconds-per-frame) f30-0))) + (suspend) + (ja :num! (seek! max f30-0))) + (+! s5-1 -1))) + (ja-no-eval :group! ogreboss-shuffle-right-stop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (suspend) + (ja :num! (seek! max f30-0)))) + (else + (set! gp-0 0) + (ja-no-eval :group! ogreboss-shuffle-left-start-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (suspend) + (ja :num! (seek! max f30-0))) + (let ((s5-2 (rand-vu-int-range 1 5))) + (while (and (> s5-2 0) (< (-> self shuffle-pos) 61440.0)) + (ja-no-eval :group! ogreboss-shuffle-left-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (+! (-> self shuffle-pos) (* 16384.0 (seconds-per-frame) f30-0)) + (suspend) + (ja :num! (seek! max f30-0))) + (+! s5-2 -1))) + (ja-no-eval :group! ogreboss-shuffle-left-stop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (suspend) + (ja :num! (seek! max f30-0)))))))) + :post + (behavior () + (vector+*! (-> self root trans) (-> self far-pos) (-> self side-dir) (-> self shuffle-pos)) + (ogreboss-post))) (defstate ogreboss-stage3-throw (ogreboss) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (send-event (handle->process (-> self boulder)) 'go-throw) - (ja-no-eval :group! ogreboss-attack3-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ogreboss-submerge (seconds 1) (the-as float 1.0)) - (while (handle->process (-> self boulder)) - (suspend) - ) - (set! (-> self bridge-assembled) #f) - (go ogreboss-stage1) - ) - :post transform-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (send-event (handle->process (-> self boulder)) 'go-throw) + (ja-no-eval :group! ogreboss-attack3-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ogreboss-submerge (seconds 1) (the-as float 1.0)) + (while (handle->process (-> self boulder)) + (suspend)) + (set! (-> self bridge-assembled) #f) + (go ogreboss-stage1)) + :post transform-post) (defstate ogreboss-stage3-hit (ogreboss) - :code (behavior () - (+! (-> self level) 1.0) - (if (< 2.0 (-> self level)) - (go ogreboss-die) - ) - (send-event (handle->process (-> self boulder)) 'go-hit) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self bridge-assembled) #f) - (set! (-> self submerged) #t) - (while (handle->process (-> self boulder)) - (suspend) - ) - (go ogreboss-stage1) - ) - :post transform-post - ) + :code + (behavior () + (+! (-> self level) 1.0) + (if (< 2.0 (-> self level)) (go ogreboss-die)) + (send-event (handle->process (-> self boulder)) 'go-hit) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self bridge-assembled) #f) + (set! (-> self submerged) #t) + (while (handle->process (-> self boulder)) + (suspend)) + (go ogreboss-stage1)) + :post transform-post) (defbehavior ogreboss-trigger-steps ogreboss () (let ((gp-0 (entity-actor-count (-> self entity) 'trigger-actor))) (dotimes (s5-0 gp-0) (let ((v1-1 (* 600 (+ s5-0 1))) - (s4-0 (new 'stack-no-clear 'event-message-block)) - ) + (s4-0 (new 'stack-no-clear 'event-message-block))) (set! (-> s4-0 from) self) (set! (-> s4-0 num-params) 1) (set! (-> s4-0 message) 'trigger) (set! (-> s4-0 param 0) (the-as uint v1-1)) (let ((s3-0 send-event-function) - (v1-2 (entity-actor-lookup (-> self entity) 'trigger-actor s5-0)) - ) - (s3-0 - (if v1-2 - (-> v1-2 extra process) - ) - s4-0 - ) - ) - ) - ) - ) - #f - ) + (v1-2 (entity-actor-lookup (-> self entity) 'trigger-actor s5-0))) + (s3-0 (if v1-2 (-> v1-2 extra process)) s4-0))))) + #f) (defstate ogreboss-die (ogreboss) - :code (behavior () - (ogreboss-reset-camera) - (send-event (handle->process (-> self boulder)) 'go-die) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (transform-post) - (suspend) - (ja :num! (seek!)) - ) - (ogreboss-trigger-steps) - (go ogreboss-dead) - ) - ) + :code + (behavior () + (ogreboss-reset-camera) + (send-event (handle->process (-> self boulder)) 'go-die) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (transform-post) + (suspend) + (ja :num! (seek!))) + (ogreboss-trigger-steps) + (go ogreboss-dead))) (defstate ogreboss-dead (ogreboss) :event process-drawable-fuel-cell-handler - :code (behavior () - (remove-setting! 'music) - (ogreboss-reset-camera) - (let ((gp-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-0 from) self) - (set! (-> gp-0 num-params) 0) - (set! (-> gp-0 message) 'complete) - (let ((s5-0 send-event-function) - (v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - ) - (s5-0 - (if v1-3 - (-> v1-3 extra process) - ) - gp-0 - ) - ) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (close-specific-task! (game-task ogre-boss) (task-status need-reminder)) - (clear-collide-with-as (-> self root)) - (ja-channel-set! 0) - (ja-post) - (when (not (task-complete? *game-info* (-> self entity extra perm task))) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (let ((a0-9 (entity-actor-lookup (-> self entity) 'trigger-actor 2))) - (if (not a0-9) - (set! a0-9 (-> self entity)) - ) - (set! (-> gp-1 quad) (-> a0-9 extra trans quad)) - ) - (label cfg-6) - (birth-pickup-at-point - gp-1 - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - (when (not (-> self child)) - (suspend) - (goto cfg-6) - ) - (while (-> self child) - (suspend) - ) - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (remove-setting! 'music) + (ogreboss-reset-camera) + (let ((gp-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-0 from) self) + (set! (-> gp-0 num-params) 0) + (set! (-> gp-0 message) 'complete) + (let ((s5-0 send-event-function) + (v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (s5-0 (if v1-3 (-> v1-3 extra process)) gp-0))) + (process-entity-status! self (entity-perm-status complete) #t) + (close-specific-task! (game-task ogre-boss) (task-status need-reminder)) + (clear-collide-with-as (-> self root)) + (ja-channel-set! 0) + (ja-post) + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (let ((a0-9 (entity-actor-lookup (-> self entity) 'trigger-actor 2))) + (if (not a0-9) (set! a0-9 (-> self entity))) + (set! (-> gp-1 quad) (-> a0-9 extra trans quad))) + (label cfg-6) + (birth-pickup-at-point gp-1 + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f))) + (when (not (-> self child)) + (suspend) + (goto cfg-6)) + (while (-> self child) + (suspend))) + (cleanup-for-death self))) (defbehavior ogreboss-get-targets ogreboss () (let ((gp-1 (min 3 (entity-actor-count (-> self entity) 'target-actor)))) (dotimes (s5-0 gp-1) - (set! (-> self target-actor-array s5-0) (entity-actor-lookup (-> self entity) 'target-actor s5-0)) - ) - (set! (-> self target-count) gp-1) - ) + (set! (-> self target-actor-array s5-0) (entity-actor-lookup (-> self entity) 'target-actor s5-0))) + (set! (-> self target-count) gp-1)) (set-vector! (-> self target-offset-array 0) 0.0 16384.0 0.0 1.0) (set-vector! (-> self target-offset-array-2) 0.0 16384.0 0.0 1.0) (set-vector! (-> self target-offset-array-3) 0.0 16384.0 0.0 1.0) @@ -1957,8 +1384,7 @@ (set! (-> self target-blast-radius-array 1) 24576.0) (set! (-> self target-blast-radius-array 2) 24576.0) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this ogreboss) (arg0 entity-actor)) (logior! (-> this mask) (process-mask attackable)) @@ -1976,8 +1402,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 14336.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -1985,8 +1410,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 28672.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -1994,8 +1418,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 14336.0) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -2003,8 +1426,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense touch)) (set! (-> s2-3 transform-index) 43) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -2012,8 +1434,7 @@ (set! (-> s2-4 prim-core offense) (collide-offense touch)) (set! (-> s2-4 transform-index) 42) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s3-0 s2-4) - ) + (append-prim s3-0 s2-4)) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-5 collide-with) (collide-kind target)) @@ -2021,13 +1442,10 @@ (set! (-> s2-5 prim-core offense) (collide-offense touch)) (set! (-> s2-5 transform-index) 27) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 8192.0) - (append-prim s3-0 s2-5) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (initialize-skeleton this *ogreboss-sg* '()) @@ -2035,19 +1453,10 @@ (ogreboss-get-targets) (set! (-> this try-count) (-> this entity extra perm user-uint8 0)) (cond - ((< (-> this try-count) (the-as uint 5)) - (set! (-> this difficulty) 1.0) - ) - ((< (-> this try-count) (the-as uint 10)) - (set! (-> this difficulty) 0.83334) - ) - ((< (-> this try-count) (the-as uint 15)) - (set! (-> this difficulty) 0.66667) - ) - (else - (set! (-> this difficulty) 0.5) - ) - ) + ((< (-> this try-count) (the-as uint 5)) (set! (-> this difficulty) 1.0)) + ((< (-> this try-count) (the-as uint 10)) (set! (-> this difficulty) 0.83334)) + ((< (-> this try-count) (the-as uint 15)) (set! (-> this difficulty) 0.66667)) + (else (set! (-> this difficulty) 0.5))) (set! (-> this lava) (entity-actor-lookup (-> this entity) 'water-actor 0)) (set! *ogreboss* (the-as ogreboss (process->ppointer this))) (set! (-> this level) 0.0) @@ -2058,16 +1467,12 @@ (set! (-> this z-plane w) (- (vector-dot (-> this z-plane) (-> this root trans)))) (vector-x-quaternion! (-> this side-dir) (-> this root quat)) (set! (-> this far-pos quad) (-> this root trans quad)) - (let ((f0-38 1.0)) - (set-vector! (-> this root scale) f0-38 f0-38 f0-38 1.0) - ) + (let ((f0-38 1.0)) (set-vector! (-> this root scale) f0-38 f0-38 f0-38 1.0)) (vector+*! (-> this near-pos) (-> this far-pos) (-> this z-plane) (the-as float 348160.0)) (set! (-> this at-near-spot) #t) (set! (-> this try-counted) #f) (set! (-> this root trans quad) (-> this near-pos quad)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go ogreboss-dead) - (go ogreboss-idle) - ) - (none) - ) + (go ogreboss-dead) + (go ogreboss-idle)) + (none)) diff --git a/goal_src/jak1/levels/racer_common/collide-reaction-racer.gc b/goal_src/jak1/levels/racer_common/collide-reaction-racer.gc index 51a596a005..73f8e80af1 100644 --- a/goal_src/jak1/levels/racer_common/collide-reaction-racer.gc +++ b/goal_src/jak1/levels/racer_common/collide-reaction-racer.gc @@ -1,13 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "engine/target/collide-reaction-target.gc") -;; name: collide-reaction-racer.gc -;; name in dgo: collide-reaction-racer -;; dgos: L1, FIC, LAV, MIS, OGR, RACERP, ROL - ;; DECOMP BEGINS (defun racer-collision-reaction ((arg0 control-info) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) @@ -16,54 +11,35 @@ (set! sv-84 (new-stack-vector0)) (let ((v1-2 (new 'stack-no-clear 'inline-array 'vector 2))) (dotimes (a0-1 2) - (set! (-> v1-2 a0-1 quad) (the-as uint128 0)) - ) - (set! sv-88 v1-2) - ) + (set! (-> v1-2 a0-1 quad) (the-as uint128 0))) + (set! sv-88 v1-2)) (set! sv-96 0) (set! sv-104 0) (set! (-> sv-88 0 quad) (-> arg3 quad)) (set! (-> sv-88 1 quad) (-> arg3 quad)) (let ((a1-3 (new 'stack-no-clear 'vector))) (vector-float*! a1-3 (-> arg1 move-vec) (-> arg1 best-u)) - (move-by-vector! arg0 a1-3) - ) + (move-by-vector! arg0 a1-3)) (set-and-handle-pat! arg0 (-> arg1 best-tri pat)) - (if (= (-> arg0 poly-pat mode) (pat-mode wall)) - (set! sv-104 (logior sv-104 1)) - ) - (if (= (-> arg0 unknown-surface00 mode) 'air) - (set! sv-104 (logior sv-104 32)) - ) + (if (= (-> arg0 poly-pat mode) (pat-mode wall)) (set! sv-104 (logior sv-104 1))) + (if (= (-> arg0 unknown-surface00 mode) 'air) (set! sv-104 (logior sv-104 32))) (let ((v1-21 (new 'stack-no-clear 'vector))) (set! (-> v1-21 quad) (-> arg1 best-from-prim prim-core world-sphere quad)) - (vector-! sv-80 v1-21 (-> arg1 best-tri intersect)) - ) + (vector-! sv-80 v1-21 (-> arg1 best-tri intersect))) (vector-normalize! sv-80 1.0) (set! (-> arg0 coverage) (vector-dot sv-80 (-> arg1 best-tri normal))) (when (< (-> arg0 coverage) 0.0) (set! (-> arg0 coverage) 0.0) (vector-flatten! sv-80 sv-80 (-> arg1 best-tri normal)) - (vector-normalize! sv-80 1.0) - ) - (if (< (-> arg0 coverage) 0.9999) - (set! sv-104 (logior sv-104 24)) - ) - (let ((v1-31 (-> sv-80 quad))) - (set! (-> sv-84 quad) v1-31) - ) - (if (= (-> arg1 best-u) 0.0) - (move-by-vector! arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0)) - ) + (vector-normalize! sv-80 1.0)) + (if (< (-> arg0 coverage) 0.9999) (set! sv-104 (logior sv-104 24))) + (let ((v1-31 (-> sv-80 quad))) (set! (-> sv-84 quad) v1-31)) + (if (= (-> arg1 best-u) 0.0) (move-by-vector! arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0))) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) (collide-shape-moving-angle-set! arg0 sv-84 (-> sv-88 0)) - (if (< (-> arg0 poly-angle) -0.2) - (set! sv-96 (logior sv-96 16)) - ) + (if (< (-> arg0 poly-angle) -0.2) (set! sv-96 (logior sv-96 16))) (let ((s3-1 (< (fabs (-> arg0 surface-angle)) (-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle)))) - (if s3-1 - (set! sv-104 (logior sv-104 2)) - ) + (if s3-1 (set! sv-104 (logior sv-104 2))) (when (not (logtest? (-> arg0 prev-status) (cshape-moving-flags onsurf))) (set! (-> arg0 ground-impact-vel) (- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal)))) (set! sv-96 (logior sv-96 2048)) @@ -71,128 +47,79 @@ (let ((f30-0 (- 1.0 (-> arg0 surf impact-fric)))) (when (< f30-0 1.0) (let ((s2-1 (new-stack-vector0)) - (f28-0 (vector-dot (-> arg0 dynam gravity-normal) (-> sv-88 0))) - ) + (f28-0 (vector-dot (-> arg0 dynam gravity-normal) (-> sv-88 0)))) 0.0 (vector-! s2-1 (-> sv-88 0) (vector-float*! s2-1 (-> arg0 dynam gravity-normal) f28-0)) (let* ((f0-18 (vector-length s2-1)) - (f1-6 f0-18) - ) - (if (< f28-0 0.0) - (set! f28-0 (* f28-0 f30-0)) - ) - (vector+! - (-> sv-88 0) - (vector-float*! (-> sv-88 0) (-> arg0 dynam gravity-normal) f28-0) - (vector-float*! s2-1 s2-1 (/ f0-18 f1-6)) - ) - ) - ) - ) - ) - ) - ) + (f1-6 f0-18)) + (if (< f28-0 0.0) (set! f28-0 (* f28-0 f30-0))) + (vector+! (-> sv-88 0) + (vector-float*! (-> sv-88 0) (-> arg0 dynam gravity-normal) f28-0) + (vector-float*! s2-1 s2-1 (/ f0-18 f1-6))))))))) (set! sv-96 (logior sv-96 4)) (cond ((-> arg1 best-to-prim) (set! sv-96 (logior sv-96 32)) (set! (-> arg0 unknown-vector72 quad) (-> arg1 best-tri intersect quad)) (set! (-> arg0 unknown-vector73 quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 unknown-handle00) (process->handle (-> arg1 best-to-prim cshape process))) - ) - ((= (-> arg0 poly-pat material) (pat-material waterbottom)) - ) - (else - (set! sv-96 (logior sv-96 4096)) - ) - ) - (if (and s3-1 (logtest? (collide-action racer-unused) (-> arg0 root-prim prim-core action))) - (set! s3-1 #f) - ) + (set! (-> arg0 unknown-handle00) (process->handle (-> arg1 best-to-prim cshape process)))) + ((= (-> arg0 poly-pat material) (pat-material waterbottom))) + (else (set! sv-96 (logior sv-96 4096)))) + (if (and s3-1 (logtest? (collide-action racer-unused) (-> arg0 root-prim prim-core action))) (set! s3-1 #f)) (cond (s3-1 - (set! sv-104 (logior sv-104 4)) - (set! sv-96 (logior sv-96 8)) - (set! (-> arg0 cur-pat mode) 1) - (set! (-> arg0 unknown-vector70 quad) (-> arg1 best-tri intersect quad)) - (set! (-> arg0 unknown-vector71 quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 wall-pat) (-> arg1 best-tri pat)) - (vector-reflect-flat-above! arg2 (-> sv-88 0) sv-84) - (cond - ((not (and (>= (-> arg1 best-from-prim local-sphere w) - (vector-dot - (-> arg0 ground-poly-normal) - (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> arg0 ground-touch-point)) - ) - ) - (and (< 0.0 (vector-dot (-> arg0 ground-poly-normal) arg2)) - (not (time-elapsed? (-> arg0 unknown-dword10) (seconds 0.3))) - (not (logtest? sv-104 32)) - ) - ) - ) - ) - (else - (set! sv-104 (logior sv-104 256)) - (set! sv-104 (logand -65 sv-104)) - (let ((s3-3 (vector-cross! (new 'stack-no-clear 'vector) (-> arg0 poly-normal) (-> arg0 ground-poly-normal)))) - (vector-normalize! s3-3 1.0) - (vector-float*! arg2 s3-3 (vector-dot (-> sv-88 0) s3-3)) - ) - (vector+! arg2 arg2 (-> arg0 poly-normal)) - ) - ) - (let* ((s2-2 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> sv-88 0) 1.0)) - (s3-4 (new-stack-vector0)) - (f30-1 (vector-dot s2-2 arg2)) - ) - 0.0 - (vector-! s3-4 arg2 (vector-float*! s3-4 s2-2 f30-1)) - (let* ((f1-11 (vector-length s3-4)) - (f0-27 f1-11) - (f1-12 (* 0.9 f1-11)) - ) - (vector+! arg2 (vector-float*! arg2 s2-2 f30-1) (vector-float*! s3-4 s3-4 (/ f1-12 f0-27))) - ) - ) - ) + (set! sv-104 (logior sv-104 4)) + (set! sv-96 (logior sv-96 8)) + (set! (-> arg0 cur-pat mode) 1) + (set! (-> arg0 unknown-vector70 quad) (-> arg1 best-tri intersect quad)) + (set! (-> arg0 unknown-vector71 quad) (-> arg0 poly-normal quad)) + (set! (-> arg0 wall-pat) (-> arg1 best-tri pat)) + (vector-reflect-flat-above! arg2 (-> sv-88 0) sv-84) + (cond + ((not (and (>= (-> arg1 best-from-prim local-sphere w) + (vector-dot (-> arg0 ground-poly-normal) + (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> arg0 ground-touch-point)))) + (and (< 0.0 (vector-dot (-> arg0 ground-poly-normal) arg2)) + (not (time-elapsed? (-> arg0 unknown-dword10) (seconds 0.3))) + (not (logtest? sv-104 32)))))) + (else + (set! sv-104 (logior sv-104 256)) + (set! sv-104 (logand -65 sv-104)) + (let ((s3-3 (vector-cross! (new 'stack-no-clear 'vector) (-> arg0 poly-normal) (-> arg0 ground-poly-normal)))) + (vector-normalize! s3-3 1.0) + (vector-float*! arg2 s3-3 (vector-dot (-> sv-88 0) s3-3))) + (vector+! arg2 arg2 (-> arg0 poly-normal)))) + (let* ((s2-2 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> sv-88 0) 1.0)) + (s3-4 (new-stack-vector0)) + (f30-1 (vector-dot s2-2 arg2))) + 0.0 + (vector-! s3-4 arg2 (vector-float*! s3-4 s2-2 f30-1)) + (let* ((f1-11 (vector-length s3-4)) + (f0-27 f1-11) + (f1-12 (* 0.9 f1-11))) + (vector+! arg2 (vector-float*! arg2 s2-2 f30-1) (vector-float*! s3-4 s3-4 (/ f1-12 f0-27)))))) (else - (set! sv-96 (logior sv-96 1)) - (set! (-> arg0 cur-pat mode) 0) - (if (and (= (-> arg1 best-from-prim prim-id) 6) (not (logtest? sv-104 7))) - (set! (-> arg0 local-normal quad) (-> sv-84 quad)) - ) - (vector-reflect-flat! arg2 (-> sv-88 0) sv-84) - (dotimes (v1-142 16) - (vector+! arg2 arg2 (-> arg0 poly-normal)) - ) - (set! sv-96 (logior sv-96 2)) - (set! (-> arg0 ground-touch-point w) 0.0) - (when (not (logtest? sv-104 15)) - (set! sv-96 (logior sv-96 2)) - (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 unknown-vector53 quad) (-> sv-84 quad)) - (set! (-> arg0 unknown-float60) (vector-dot sv-84 (-> arg0 dynam gravity-normal))) - (set-time! (-> arg0 unknown-dword10)) - (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) - (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) - (set! sv-104 (logior sv-104 2048)) - (if (= (-> arg0 poly-pat material) (pat-material waterbottom)) - (set! sv-96 (logior sv-96 1024)) - ) - ) - ) - ) - ) + (set! sv-96 (logior sv-96 1)) + (set! (-> arg0 cur-pat mode) 0) + (if (and (= (-> arg1 best-from-prim prim-id) 6) (not (logtest? sv-104 7))) + (set! (-> arg0 local-normal quad) (-> sv-84 quad))) + (vector-reflect-flat! arg2 (-> sv-88 0) sv-84) + (dotimes (v1-142 16) + (vector+! arg2 arg2 (-> arg0 poly-normal))) + (set! sv-96 (logior sv-96 2)) + (set! (-> arg0 ground-touch-point w) 0.0) + (when (not (logtest? sv-104 15)) + (set! sv-96 (logior sv-96 2)) + (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) + (set! (-> arg0 unknown-vector53 quad) (-> sv-84 quad)) + (set! (-> arg0 unknown-float60) (vector-dot sv-84 (-> arg0 dynam gravity-normal))) + (set-time! (-> arg0 unknown-dword10)) + (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) + (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) + (set! sv-104 (logior sv-104 2048)) + (if (= (-> arg0 poly-pat material) (pat-material waterbottom)) (set! sv-96 (logior sv-96 1024))))))) (logior! (-> arg0 status) sv-96) (set! (-> arg0 reaction-flag) (the-as cshape-reaction-flags sv-104)) - (update! - (-> arg0 history-data (-> arg0 unknown-halfword00)) - arg0 - (-> arg1 best-tri intersect) - (-> sv-88 1) - arg2 - ) + (update! (-> arg0 history-data (-> arg0 unknown-halfword00)) arg0 (-> arg1 best-tri intersect) (-> sv-88 1) arg2) (set! (-> arg0 unknown-halfword00) (logand (+ (-> arg0 unknown-halfword00) 1) 127)) - (the-as cshape-moving-flags sv-96) - ) + (the-as cshape-moving-flags sv-96)) diff --git a/goal_src/jak1/levels/racer_common/racer-part.gc b/goal_src/jak1/levels/racer_common/racer-part.gc index eaca6f4b13..0ecf739528 100644 --- a/goal_src/jak1/levels/racer_common/racer-part.gc +++ b/goal_src/jak1/levels/racer_common/racer-part.gc @@ -1,13 +1,9 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "engine/ui/hud.gc") (require "levels/racer_common/target-racer-h.gc") -;; name: racer-part.gc -;; name in dgo: racer-part -;; dgos: L1, FIC, LAV, MIS, OGR, RACERP, ROL ;; note: changed for high fps ;; DECOMP BEGINS @@ -15,112 +11,82 @@ (defun part-hud-racer-speed-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let* ((f0-0 (-> *target* control unknown-float01)) (f0-1 (cond - ((>= 122880.0 f0-0) - (lerp-scale 42780.445 27488.71 f0-0 0.0 122880.0) - ) - ((>= 131072.0 f0-0) - (lerp-scale 27488.71 14927.645 f0-0 122880.0 131072.0) - ) - ((>= 139264.0 f0-0) - (lerp-scale 14927.645 7281.778 f0-0 131072.0 139264.0) - ) - ((>= 147456.0 f0-0) - (lerp-scale 7281.778 -546.13336 f0-0 139264.0 147456.0) - ) - ((>= 155648.0 f0-0) - (lerp-scale -546.13336 -6371.5557 f0-0 147456.0 155648.0) - ) - ((>= 163840.0 f0-0) - (lerp-scale -6371.5557 -10922.667 f0-0 155648.0 163840.0) - ) - (else - (lerp-scale -10922.667 -15473.777 f0-0 163840.0 172032.0) - ) - ) - ) - ) + ((>= 122880.0 f0-0) (lerp-scale 42780.445 27488.71 f0-0 0.0 122880.0)) + ((>= 131072.0 f0-0) (lerp-scale 27488.71 14927.645 f0-0 122880.0 131072.0)) + ((>= 139264.0 f0-0) (lerp-scale 14927.645 7281.778 f0-0 131072.0 139264.0)) + ((>= 147456.0 f0-0) (lerp-scale 7281.778 -546.13336 f0-0 139264.0 147456.0)) + ((>= 155648.0 f0-0) (lerp-scale -546.13336 -6371.5557 f0-0 147456.0 155648.0)) + ((>= 163840.0 f0-0) (lerp-scale -6371.5557 -10922.667 f0-0 155648.0 163840.0)) + (else (lerp-scale -10922.667 -15473.777 f0-0 163840.0 172032.0))))) (cond ((< (-> *hud-parts* bike-speed 0 offset) 10) (if (< f0-1 (-> arg2 vector 1 z)) - (set! (-> arg2 vector 1 z) (deg-seek (-> arg2 vector 1 z) f0-1 (* 131072.0 (seconds-per-frame)))) - (set! (-> arg2 vector 1 z) (deg-seek (-> arg2 vector 1 z) f0-1 (* 32768.0 (seconds-per-frame)))) - ) - ) - (else - (set! (-> arg2 vector 1 z) f0-1) - ) - ) - ) - (none) - ) + (set! (-> arg2 vector 1 z) (deg-seek (-> arg2 vector 1 z) f0-1 (* 131072.0 (seconds-per-frame)))) + (set! (-> arg2 vector 1 z) (deg-seek (-> arg2 vector 1 z) f0-1 (* 32768.0 (seconds-per-frame)))))) + (else (set! (-> arg2 vector 1 z) f0-1)))) + (none)) (defpartgroup group-part-hud-racer-speed-dial :id 108 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 740 :flags (launch-asap))) - ) + :parts ((sp-item 740 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-speed :id 109 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 741 :flags (launch-asap))) - ) + :parts ((sp-item 741 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-speed-front :id 110 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 1999 :flags (launch-asap))) - ) + :parts ((sp-item 1999 :flags (launch-asap)))) (defpart 741 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x45f)) - (:num 1.0) - (:scale-x (meters 3)) - (:rot-x 4) - (:scale-y (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x45f)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-x 4) + (:scale-y (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (defpart 740 - :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x45f)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x 4) - (:rot-z (degrees 235)) - (:scale-y (meters 0.3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-racer-speed-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6 :page #x45f)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x 4) + (:rot-z (degrees 235)) + (:scale-y (meters 0.3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-racer-speed-func))) (defpart 1999 - :init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x45f)) - (:num 1.0) - (:scale-x (meters 0.8)) - (:rot-x 4) - (:scale-y (meters 0.8)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x7 :page #x45f)) + (:num 1.0) + (:scale-x (meters 0.8)) + (:rot-x 4) + (:scale-y (meters 0.8)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (defun part-hud-racer-heat-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (/ (-> *target* racer heat) (-> *RACER-bank* heat-max)))) @@ -129,205 +95,162 @@ ((and (< 0.8 f0-1) (not (logtest? (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 8))) ;; og:preserve-this changed for high fps (set! (-> arg2 vector 2 x) 128.0) (set! (-> arg2 vector 2 y) 0.0) - (set! (-> arg2 vector 2 z) 0.0) - ) - (else - (set! (-> arg2 vector 2 x) 128.0) - (set! (-> arg2 vector 2 y) 128.0) - (set! (-> arg2 vector 2 z) 128.0) - ) - ) - ) - (none) - ) + (set! (-> arg2 vector 2 z) 0.0)) + (else (set! (-> arg2 vector 2 x) 128.0) (set! (-> arg2 vector 2 y) 128.0) (set! (-> arg2 vector 2 z) 128.0)))) + (none)) (defun zoomer-heat-slice-color ((arg0 matrix) (arg1 float)) (cond ((< arg1 0.6) (set! (-> arg0 vector 2 x) (* 213.33333 arg1)) (set! (-> arg0 vector 2 y) 128.0) - (set! (-> arg0 vector 2 z) 0.0) - ) + (set! (-> arg0 vector 2 z) 0.0)) ((< arg1 0.8) (set! (-> arg0 vector 2 x) 128.0) (set! (-> arg0 vector 2 y) (- 128.0 (* 640.0 (+ -0.6 arg1)))) - (set! (-> arg0 vector 2 z) 0.0) - ) + (set! (-> arg0 vector 2 z) 0.0)) ((not (logtest? (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 8)) ;; og:preserve-this changed for high fps (set! (-> arg0 vector 2 x) 128.0) (set! (-> arg0 vector 2 y) 0.0) - (set! (-> arg0 vector 2 z) 0.0) - ) - (else - (set! (-> arg0 vector 2 x) 128.0) - (set! (-> arg0 vector 2 y) 100.0) - (set! (-> arg0 vector 2 z) 100.0) - ) - ) - (none) - ) + (set! (-> arg0 vector 2 z) 0.0)) + (else (set! (-> arg0 vector 2 x) 128.0) (set! (-> arg0 vector 2 y) 100.0) (set! (-> arg0 vector 2 z) 100.0))) + (none)) (defun part-hud-zoomer-heat-slice-01-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (/ (-> *target* racer heat) (-> *RACER-bank* heat-max)))) (set! (-> arg2 vector 1 z) (* 182.04445 (+ -135.0 (* 215.0 f0-1)))) - (zoomer-heat-slice-color arg2 f0-1) - ) - (none) - ) + (zoomer-heat-slice-color arg2 f0-1)) + (none)) (defun part-hud-zoomer-heat-slice-02-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (/ (-> *target* racer heat) (-> *RACER-bank* heat-max)))) (set! (-> arg2 vector 1 z) (* 182.04445 (+ -225.0 (* 215.0 f0-1)))) - (if (< (-> arg2 vector 1 z) -24576.0) - (set! (-> arg2 vector 1 z) -24576.0) - ) - (zoomer-heat-slice-color arg2 f0-1) - ) - (none) - ) + (if (< (-> arg2 vector 1 z) -24576.0) (set! (-> arg2 vector 1 z) -24576.0)) + (zoomer-heat-slice-color arg2 f0-1)) + (none)) (defun part-hud-zoomer-heat-slice-03-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (/ (-> *target* racer heat) (-> *RACER-bank* heat-max)))) (set! (-> arg2 vector 1 z) (* 182.04445 (+ -315.0 (* 215.0 f0-1)))) - (if (< (-> arg2 vector 1 z) -24576.0) - (set! (-> arg2 vector 1 z) -24576.0) - ) - (zoomer-heat-slice-color arg2 f0-1) - ) - (none) - ) + (if (< (-> arg2 vector 1 z) -24576.0) (set! (-> arg2 vector 1 z) -24576.0)) + (zoomer-heat-slice-color arg2 f0-1)) + (none)) (defpartgroup group-part-hud-racer-heat-backing :id 111 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 737 :flags (launch-asap))) - ) + :parts ((sp-item 737 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-heat-dial :id 112 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 738 :flags (launch-asap))) - ) + :parts ((sp-item 738 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-heat :id 113 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 739 :flags (launch-asap))) - ) + :parts ((sp-item 739 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-heat-slice :id 114 :flags (use-local-clock screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 2010 :flags (launch-asap)) (sp-item 2011 :flags (launch-asap)) (sp-item 2012 :flags (launch-asap))) - ) + :parts ((sp-item 2010 :flags (launch-asap)) (sp-item 2011 :flags (launch-asap)) (sp-item 2012 :flags (launch-asap)))) (defpart 739 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x45f)) - (:num 1.0) - (:scale-x (meters 3)) - (:rot-x 4) - (:scale-y (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x45f)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-x 4) + (:scale-y (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (defpart 737 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x45f)) - (:num 1.0) - (:scale-x (meters 3.5)) - (:rot-x 4) - (:scale-y (meters 3.5)) - (:r 128.0) - (:g 100.0) - (:b 63.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x45f)) + (:num 1.0) + (:scale-x (meters 3.5)) + (:rot-x 4) + (:scale-y (meters 3.5)) + (:r 128.0) + (:g 100.0) + (:b 63.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (defpart 738 - :init-specs ((:texture (new 'static 'texture-id :page #x45f)) - (:num 1.0) - (:scale-x (meters 0.9)) - (:rot-x 4) - (:scale-y (meters 0.52)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-racer-heat-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x45f)) + (:num 1.0) + (:scale-x (meters 0.9)) + (:rot-x 4) + (:scale-y (meters 0.52)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-racer-heat-func))) (defpart 2010 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-zoomer-heat-slice-01-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-zoomer-heat-slice-01-func))) (defpart 2011 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-zoomer-heat-slice-02-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-zoomer-heat-slice-02-func))) (defpart 2012 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-zoomer-heat-slice-03-func) - ) - ) - -(deftype hud-bike-heat (hud) - () - ) - + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-zoomer-heat-slice-03-func))) + +(deftype hud-bike-heat (hud) ()) (defmethod hud-update ((this hud-bike-heat)) - (if *target* - (tally-value this (the int (-> *target* racer heat)) 0) - ) + (if *target* (tally-value this (the int (-> *target* racer heat)) 0)) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-bike-heat) (arg0 int)) (add-setting! 'common-page 'set 0.0 2) @@ -338,10 +261,8 @@ (set! (-> this particles s5-0 init-pos x) 13.0) (set! (-> this particles s5-0 init-pos y) 370.0) (set! (-> this particles s5-0 init-pos z) 10.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-1 (-> this nb-of-particles))) (set! (-> this particles s5-1) (new 'static 'hud-particle)) @@ -349,10 +270,8 @@ (set! (-> this particles s5-1 init-pos x) 70.0) (set! (-> this particles s5-1 init-pos y) 370.0) (set! (-> this particles s5-1 init-pos z) 6.0) - (set! (-> this particles s5-1 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-1 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-2 (-> this nb-of-particles))) (set! (-> this particles s5-2) (new 'static 'hud-particle)) @@ -360,10 +279,8 @@ (set! (-> this particles s5-2 init-pos x) 20.0) (set! (-> this particles s5-2 init-pos y) 370.0) (set! (-> this particles s5-2 init-pos z) 1.0) - (set! (-> this particles s5-2 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-2 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-3 (-> this nb-of-particles))) (set! (-> this particles s5-3) (new 'static 'hud-particle)) @@ -371,34 +288,22 @@ (set! (-> this particles s5-3 init-pos x) 70.0) (set! (-> this particles s5-3 init-pos y) 370.0) (set! (-> this particles s5-3 init-pos z) 7.0) - (set! (-> this particles s5-3 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-3 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-4 (-> this nb-of-particles)) - (if (= (-> this particles s5-4 part matrix) -1) - (set! (-> this particles s5-4 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-4 part matrix) -1) (set! (-> this particles s5-4 part matrix) (sprite-allocate-user-hvdf)))) (set! (-> this x-sgn) -1) (set! (-> this y-sgn) 1) (set! (-> this force-on-screen) #t) 0 - (none) - ) - -(deftype hud-bike-speed (hud) - () - ) + (none)) +(deftype hud-bike-speed (hud) ()) (defmethod hud-update ((this hud-bike-speed)) - (if *target* - (tally-value this (the int (-> *target* control unknown-float01)) 0) - ) + (if *target* (tally-value this (the int (-> *target* control unknown-float01)) 0)) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-bike-speed) (arg0 int)) (add-setting! 'common-page 'set 0.0 2) @@ -409,10 +314,8 @@ (set! (-> this particles s5-0 init-pos x) 433.0) (set! (-> this particles s5-0 init-pos y) 370.0) (set! (-> this particles s5-0 init-pos z) 3.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-1 (-> this nb-of-particles))) (set! (-> this particles s5-1) (new 'static 'hud-particle)) @@ -420,10 +323,8 @@ (set! (-> this particles s5-1 init-pos x) 378.0) (set! (-> this particles s5-1 init-pos y) 370.0) (set! (-> this particles s5-1 init-pos z) 5.0) - (set! (-> this particles s5-1 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-1 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-2 (-> this nb-of-particles))) (set! (-> this particles s5-2) (new 'static 'hud-particle)) @@ -431,538 +332,495 @@ (set! (-> this particles s5-2 init-pos x) 415.0) (set! (-> this particles s5-2 init-pos y) 370.0) (set! (-> this particles s5-2 init-pos z) 1.0) - (set! (-> this particles s5-2 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-2 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-3 (-> this nb-of-particles)) - (if (= (-> this particles s5-3 part matrix) -1) - (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-3 part matrix) -1) (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)))) (set! (-> this x-sgn) 1) (set! (-> this y-sgn) 1) (set! (-> this force-on-screen) #t) 0 - (none) - ) + (none)) (#when PC_PORT -;; og:preserve-this extra methods needed for aspect ratio in pc port -(defmethod set-pos-and-scale ((this hud-bike-heat) (arg0 symbol) (arg1 symbol)) - (with-pc - (let ((base-x (-> this particles 0 init-pos x))) + ;; og:preserve-this extra methods needed for aspect ratio in pc port + (defmethod set-pos-and-scale ((this hud-bike-heat) (arg0 symbol) (arg1 symbol)) + (with-pc + (let ((base-x (-> this particles 0 init-pos x))) (*! base-x (-> *pc-settings* aspect-ratio-reciprocal)) (set! (-> this particles 0 init-pos x) 13.0) (set! (-> this particles 1 init-pos x) 70.0) (set! (-> this particles 2 init-pos x) 20.0) (set! (-> this particles 3 init-pos x) 70.0) - - (when (not (-> *pc-settings* use-vis?)) - (dotimes (i (-> this nb-of-particles)) - (set! (-> this particles i init-pos x) (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))) - - )) - - ) - ) - (none) - ) - -(defmethod set-pos-and-scale ((this hud-bike-speed) (arg0 symbol) (arg1 symbol)) - (with-pc - (let ((base-x (-> this particles 1 init-pos x))) + (when (not (-> *pc-settings* use-vis?)) + (dotimes (i (-> this nb-of-particles)) + (set! (-> this particles i init-pos x) + (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))))))) + (none)) + (defmethod set-pos-and-scale ((this hud-bike-speed) (arg0 symbol) (arg1 symbol)) + (with-pc + (let ((base-x (-> this particles 1 init-pos x))) (+! base-x (* (- 512.0 base-x) (- 1.0 (-> *pc-settings* aspect-ratio-reciprocal)))) (set! (-> this particles 0 init-pos x) 433.0) (set! (-> this particles 1 init-pos x) 378.0) (set! (-> this particles 2 init-pos x) 415.0) - - (when (not (-> *pc-settings* use-vis?)) - (dotimes (i (-> this nb-of-particles)) - (set! (-> this particles i init-pos x) (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))) - - )) - - ) - ) - (none) - ) - ) + (when (not (-> *pc-settings* use-vis?)) + (dotimes (i (-> this nb-of-particles)) + (set! (-> this particles i init-pos x) + (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))))))) + (none))) (defpartgroup group-racer-trans-pad :id 115 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 742 :fade-after (meters 160)) - (sp-item 743 :fade-after (meters 160)) - (sp-item 744 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)) - ) - ) + :parts + ((sp-item 742 :fade-after (meters 160)) + (sp-item 743 :fade-after (meters 160)) + (sp-item 744 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)))) (defpart 742 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 7)) - (:scale-x (meters 14) (meters 1)) - (:scale-y (meters 14)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 32.0 32.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 7)) + (:scale-x (meters 14) (meters 1)) + (:scale-y (meters 14)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 32.0 32.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 743 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 14)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 14)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 744 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.75) (meters 0.1)) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 15)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0) - (:g 0.0 127.0) - (:b 127.0) - (:a 127.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.02)) - (:rotvel-y (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00015)) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.75) (meters 0.1)) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 15)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0) + (:g 0.0 127.0) + (:b 127.0) + (:a 127.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.02)) + (:rotvel-y (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00015)) + (:timer (seconds 1)) + (:flags (bit2 bit3)))) (defpart 2211 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2207 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 96.0 32.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 96.0 32.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2221 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 0.5 1.0) - (:scale-x (meters 0.15) (meters 0.35)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15)) - (:r 0.0 2.0 64.0) - (:g 64.0 3.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.02) (meters 0.053333335)) - (:rotvel-z (degrees -2.4) (degrees 4.8)) - (:fade-a -0.53333336) - (:accel-y (meters -0.0013333333)) - (:friction 0.95) - (:timer (seconds 0.9)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 40) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 0.5 1.0) + (:scale-x (meters 0.15) (meters 0.35)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15)) + (:r 0.0 2.0 64.0) + (:g 64.0 3.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.02) (meters 0.053333335)) + (:rotvel-z (degrees -2.4) (degrees 4.8)) + (:fade-a -0.53333336) + (:accel-y (meters -0.0013333333)) + (:friction 0.95) + (:timer (seconds 0.9)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 40) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1)))) (defpart 2208 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0 16.0) - (:g 128.0 64.0) - (:b 192.0 64.0) - (:a 32.0 32.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0 16.0) + (:g 128.0 64.0) + (:b 192.0 64.0) + (:a 32.0 32.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2218 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0 16.0) - (:g 128.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.02) (meters 0.053333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.64) - (:accel-y (meters -0.0013333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0 16.0) + (:g 128.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.02) (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.64) + (:accel-y (meters -0.0013333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1)))) (defpart 2215 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 70.0 32.0) - (:b 40.0 20.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 70.0 32.0) + (:b 40.0 20.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2216 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 64.0 64.0) - (:b 96.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 64.0 64.0) + (:b 96.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2831 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 64.0 32.0) - (:b 96.0 40.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 64.0 32.0) + (:b 96.0 40.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2214 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2220 - :init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 0.05) (meters 0.025)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 2 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.02) (meters 0.053333335)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -1.0666667) - (:accel-y (meters -0.0013333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 0.05) (meters 0.025)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 2 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.02) (meters 0.053333335)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -1.0666667) + (:accel-y (meters -0.0013333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1)))) (defpart 2213 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2275 - :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x2)) - (:num 0.06) - (:x (meters 10)) - (:scale-x (meters 1.5) (meters 3)) - (:rot-y (degrees 0)) - (:scale-y (meters 1.5) (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.006666667) (meters 0.008666666)) - (:scalevel-y (meters 0.006666667) (meters 0.008666666)) - (:fade-a 0.7111111) - (:friction 0.94) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.3)) - (:next-launcher 119) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xa :page #x2)) + (:num 0.06) + (:x (meters 10)) + (:scale-x (meters 1.5) (meters 3)) + (:rot-y (degrees 0)) + (:scale-y (meters 1.5) (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.006666667) (meters 0.008666666)) + (:scalevel-y (meters 0.006666667) (meters 0.008666666)) + (:fade-a 0.7111111) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.3)) + (:next-launcher 119) + (:rotate-y (degrees 0)))) (defpart 2276 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.04 0.03) - (:x (meters -0.2) (meters 0.4)) - (:z (meters -0.2) (meters 0.4)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.008333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.64) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 116) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.04 0.03) + (:x (meters -0.2) (meters 0.4)) + (:z (meters -0.2) (meters 0.4)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.008333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.64) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 116))) (defpart 2212 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:birth-func 'birth-func-vector-orient) - (:num 1.0) - (:scale-x (meters 4) (meters -0.5)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 64.0 -16.0) - (:g 64.0 -16.0) - (:b 64.0 -16.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:userdata 0.0) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:birth-func 'birth-func-vector-orient) + (:num 1.0) + (:scale-x (meters 4) (meters -0.5)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 64.0 -16.0) + (:g 64.0 -16.0) + (:b 64.0 -16.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:userdata 0.0))) (defpart 2225 - :init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x2)) - (:num 4.0 16.0) - (:x (meters 0.9)) - (:y (meters 0.05)) - (:z (meters -0.9)) - (:scale-x (meters 0.05) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 2.0 128.0) - (:g 128.0 2.0 64.0) - (:b 0.0 2.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.35555556) - (:fade-a -0.6) - (:accel-y (meters -0.001)) - (:friction 0.9) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit0 bit2 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1 :page #x2)) + (:num 4.0 16.0) + (:x (meters 0.9)) + (:y (meters 0.05)) + (:z (meters -0.9)) + (:scale-x (meters 0.05) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 2.0 128.0) + (:g 128.0 2.0 64.0) + (:b 0.0 2.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.35555556) + (:fade-a -0.6) + (:accel-y (meters -0.001)) + (:friction 0.9) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit0 bit2 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2226 - :init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x2)) - (:num 4.0 16.0) - (:x (meters 0.9)) - (:y (meters 0.05)) - (:z (meters -0.9)) - (:scale-x (meters 0.05) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 2.0 128.0) - (:g 0.0 2.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.35555556) - (:fade-a -0.6) - (:accel-y (meters -0.001)) - (:friction 0.9) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit0 bit2 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1 :page #x2)) + (:num 4.0 16.0) + (:x (meters 0.9)) + (:y (meters 0.05)) + (:z (meters -0.9)) + (:scale-x (meters 0.05) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 2.0 128.0) + (:g 0.0 2.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.35555556) + (:fade-a -0.6) + (:accel-y (meters -0.001)) + (:friction 0.9) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit0 bit2 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2227 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 32.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.85) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.05) (seconds 0.015)) - (:next-launcher 2277) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 32.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.85) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.05) (seconds 0.015)) + (:next-launcher 2277))) (defpart 2277 - :init-specs ((:fade-r -5.0) (:fade-g -1.6) (:fade-b 1.6) (:fade-a 0.0) (:next-time (seconds 0.067)) (:next-launcher 2278)) - ) + :init-specs ((:fade-r -5.0) (:fade-g -1.6) (:fade-b 1.6) (:fade-a 0.0) (:next-time (seconds 0.067)) (:next-launcher 2278))) (defpart 2278 - :init-specs ((:fade-r -0.2) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.21333334)) - ) + :init-specs ((:fade-r -0.2) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.21333334))) (defpartgroup group-racer-explode :id 116 @@ -970,145 +828,130 @@ :linger-duration (seconds 10) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2279 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2280 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2281 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2282 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2279 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2280 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2281 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2282 :period (seconds 2) :length (seconds 0.067)))) (defpart 2280 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2283) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2283) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2283 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2282 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.85333335)) - (:fade-g -3.2666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.85333335)) + (:fade-g -3.2666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2279 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2281 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2284) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2284) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 3)))) (defpart 2284 - :init-specs ((:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b -2.1166666) - (:next-time (seconds 0.2)) - (:next-launcher 2285) - ) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-b -2.1166666) (:next-time (seconds 0.2)) (:next-launcher 2285))) (defpart 2285 - :init-specs ((:fade-r -0.5688889) - (:fade-g -0.28444445) - (:fade-b 0.0) - (:fade-a -0.21333334) - (:next-time (seconds 0.75)) - (:next-launcher 2286) - ) - ) + :init-specs + ((:fade-r -0.5688889) + (:fade-g -0.28444445) + (:fade-b 0.0) + (:fade-a -0.21333334) + (:next-time (seconds 0.75)) + (:next-launcher 2286))) (defpart 2286 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 2229 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0 64.0) - (:b 192.0 64.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.00033333333)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.4) - (:accel-y (meters -0.000016666667)) - (:timer (seconds 1.5)) - (:flags (bit0 bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0 64.0) + (:b 192.0 64.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.00033333333)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.4) + (:accel-y (meters -0.000016666667)) + (:timer (seconds 1.5)) + (:flags (bit0 bit2 bit3 bit14)))) diff --git a/goal_src/jak1/levels/racer_common/racer-states.gc b/goal_src/jak1/levels/racer_common/racer-states.gc index dd1c11c34b..9f253d4528 100644 --- a/goal_src/jak1/levels/racer_common/racer-states.gc +++ b/goal_src/jak1/levels/racer_common/racer-states.gc @@ -1,1425 +1,1057 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "levels/racer_common/target-racer.gc") (require "engine/common-obs/babak.gc") (require "engine/target/target.gc") (require "levels/racer_common/racer-part.gc") (require "engine/common-obs/water.gc") (require "engine/anim/joint-exploder.gc") - -;; name: racer-states-FIC-LAV-MIS-OGR-ROL.gc -;; name in dgo: racer-states -;; dgos: FIC, LAV, MIS, OGR, ROL - (define-extern *race-track-surface* surface) ;; DECOMP BEGINS (defstate target-racing-start (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - 'racer - ) - ((and (= message 'get-pickup) (= (-> block param 0) 3)) - (if (time-elapsed? (-> self racer boost-time) (seconds 1)) - (send-event self 'boost (fmax 1.0 (fmin 2.0 (the-as float (-> block param 1))))) - ) - ) - (else - (case message - (('end-mode) - (go target-racing-get-off (process->handle proc)) - ) - (('touched) - (send-event proc 'attack (-> block param 0) 'racer 0 0) - (when (and (type-type? (-> proc type) babak) (< 40960.0 (-> self control unknown-float01))) - (let ((f0-5 (lerp-scale 16384.0 32768.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)))) - (go target-racing-jump f0-5 f0-5 #f) - ) - ) - ) - (('attack 'attack-or-shove 'attack-invinc) - (let ((v1-27 (the-as attack-info (-> block param 1)))) - (if (not (and (logtest? (-> v1-27 mask) (attack-mask mode)) (or (= (-> v1-27 mode) 'burn) (= (-> v1-27 mode) 'burnup))) - ) - (target-attacked - message - (the-as attack-info (-> block param 1)) - proc - (the-as touching-shapes-entry (-> block param 0)) - (the-as (state symbol attack-info target) target-racing-hit) - ) - ) - ) - ) - (('heat) - (set! (-> self racer heat) - (fmax 0.0 (fmin (+ (-> self racer heat) (the-as float (-> block param 0))) (-> *RACER-bank* heat-max))) - ) - ) - (('boost) - (sound-play "get-blue-eco") - (set! (-> self racer boost-sound-id) (sound-play "zoom-boost")) - (set-time! (-> self racer boost-time)) - (set! (-> self racer boost-level) (seek - (-> self racer boost-level) - (-> *RACER-bank* boost-level-max) - (* (-> *RACER-bank* boost-level-inc) (the-as float (-> block param 0))) - ) - ) - ) - (('smack) - (go target-racing-smack (-> self control unknown-float01) #t) - ) - (('jump) - (go target-racing-jump (the-as float (-> block param 0)) (the-as float (-> block param 1)) #f) - ) - (('change-mode) - (case (-> block param 0) - (('grab) - (go target-racing-grab) - ) - ) - ) - (('clone-anim) - (go target-racing-clone-anim (process->handle (the-as process (-> block param 0)))) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - ) - ) - :exit (behavior () - (when (not (or (= (-> self next-state name) 'target-racing) - (= (-> self next-state name) 'target-racing-jump) - (= (-> self next-state name) 'target-racing-bounce) - (= (-> self next-state name) 'target-racing-hit) - (= (-> self next-state name) 'target-racing-death) - (= (-> self next-state name) 'target-racing-smack) - (= (-> self next-state name) 'target-racing-falling) - (= (-> self next-state name) 'target-racing-get-on) - (= (-> self next-state name) 'target-racing-get-off) - (= (-> self next-state name) 'target-racing-get-off-jump) - (= (-> self next-state name) 'target-racing-grab) - (= (-> self next-state name) 'target-racing-clone-anim) - ) - ) - (let ((v1-25 (-> self manipy))) - (when v1-25 - (deactivate (-> v1-25 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (let ((v1-29 (-> *hud-parts* bike-speed))) - (when v1-29 - (set! (-> v1-29 0 deactivate-when-hidden) #t) - (send-event (ppointer->process v1-29) 'hide-quick) - ) - ) - (let ((v1-32 (-> *hud-parts* bike-heat))) - (when v1-32 - (set! (-> v1-32 0 deactivate-when-hidden) #t) - (send-event (ppointer->process v1-32) 'hide-quick) - ) - ) - (set! (-> *hud-parts* buzzers 0 next-y-offset) 0) - (set! (-> *hud-parts* power 0 next-y-offset) 0) - (set! (-> *hud-parts* buzzers 0 y-sgn) 1) - (set! (-> *hud-parts* power 0 y-sgn) 1) - (logclear! (-> self control root-prim prim-core action) (collide-action racer racer-unused)) - (set! (-> self control unknown-surface00) *walk-mods*) - (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) - (send-event *camera* 'clear-slave-option #x6000) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (let ((v1-60 (-> self node-list data))) - (set! (-> v1-60 0 param0) cspace<-transformq+trans!) - (set! (-> v1-60 0 param1) (the-as basic (-> self control trans))) - (set! (-> v1-60 0 param2) (the-as basic (-> self control unknown-vector12))) - ) - (target-collide-set! 'normal 0.0) - (set! (-> self control reaction) target-collision-reaction) - (sound-stop (-> self racer engine-sound-id)) - (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) - (set! (-> self control unknown-vector12 quad) (the-as uint128 0)) - (remove-setting! 'sound-flava) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) 'racer) + ((and (= message 'get-pickup) (= (-> block param 0) 3)) + (if (time-elapsed? (-> self racer boost-time) (seconds 1)) + (send-event self 'boost (fmax 1.0 (fmin 2.0 (the-as float (-> block param 1))))))) + (else + (case message + (('end-mode) (go target-racing-get-off (process->handle proc))) + (('touched) + (send-event proc 'attack (-> block param 0) 'racer 0 0) + (when (and (type-type? (-> proc type) babak) (< 40960.0 (-> self control unknown-float01))) + (let ((f0-5 (lerp-scale 16384.0 32768.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)))) + (go target-racing-jump f0-5 f0-5 #f)))) + (('attack 'attack-or-shove 'attack-invinc) + (let ((v1-27 (the-as attack-info (-> block param 1)))) + (if (not (and (logtest? (-> v1-27 mask) (attack-mask mode)) (or (= (-> v1-27 mode) 'burn) (= (-> v1-27 mode) 'burnup)))) + (target-attacked message + (the-as attack-info (-> block param 1)) + proc + (the-as touching-shapes-entry (-> block param 0)) + (the-as (state symbol attack-info target) target-racing-hit))))) + (('heat) + (set! (-> self racer heat) + (fmax 0.0 (fmin (+ (-> self racer heat) (the-as float (-> block param 0))) (-> *RACER-bank* heat-max))))) + (('boost) + (sound-play "get-blue-eco") + (set! (-> self racer boost-sound-id) (sound-play "zoom-boost")) + (set-time! (-> self racer boost-time)) + (set! (-> self racer boost-level) + (seek (-> self racer boost-level) + (-> *RACER-bank* boost-level-max) + (* (-> *RACER-bank* boost-level-inc) (the-as float (-> block param 0)))))) + (('smack) (go target-racing-smack (-> self control unknown-float01) #t)) + (('jump) (go target-racing-jump (the-as float (-> block param 0)) (the-as float (-> block param 1)) #f)) + (('change-mode) + (case (-> block param 0) + (('grab) (go target-racing-grab)))) + (('clone-anim) (go target-racing-clone-anim (process->handle (the-as process (-> block param 0))))) + (else (target-generic-event-handler proc argc message block)))))) + :exit + (behavior () + (when (not (or (= (-> self next-state name) 'target-racing) + (= (-> self next-state name) 'target-racing-jump) + (= (-> self next-state name) 'target-racing-bounce) + (= (-> self next-state name) 'target-racing-hit) + (= (-> self next-state name) 'target-racing-death) + (= (-> self next-state name) 'target-racing-smack) + (= (-> self next-state name) 'target-racing-falling) + (= (-> self next-state name) 'target-racing-get-on) + (= (-> self next-state name) 'target-racing-get-off) + (= (-> self next-state name) 'target-racing-get-off-jump) + (= (-> self next-state name) 'target-racing-grab) + (= (-> self next-state name) 'target-racing-clone-anim))) + (let ((v1-25 (-> self manipy))) + (when v1-25 + (deactivate (-> v1-25 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)))) + (let ((v1-29 (-> *hud-parts* bike-speed))) + (when v1-29 + (set! (-> v1-29 0 deactivate-when-hidden) #t) + (send-event (ppointer->process v1-29) 'hide-quick))) + (let ((v1-32 (-> *hud-parts* bike-heat))) + (when v1-32 + (set! (-> v1-32 0 deactivate-when-hidden) #t) + (send-event (ppointer->process v1-32) 'hide-quick))) + (set! (-> *hud-parts* buzzers 0 next-y-offset) 0) + (set! (-> *hud-parts* power 0 next-y-offset) 0) + (set! (-> *hud-parts* buzzers 0 y-sgn) 1) + (set! (-> *hud-parts* power 0 y-sgn) 1) + (logclear! (-> self control root-prim prim-core action) (collide-action racer racer-unused)) + (set! (-> self control unknown-surface00) *walk-mods*) + (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) + (send-event *camera* 'clear-slave-option #x6000) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (let ((v1-60 (-> self node-list data))) + (set! (-> v1-60 0 param0) cspace<-transformq+trans!) + (set! (-> v1-60 0 param1) (the-as basic (-> self control trans))) + (set! (-> v1-60 0 param2) (the-as basic (-> self control unknown-vector12)))) + (target-collide-set! 'normal 0.0) + (set! (-> self control reaction) target-collision-reaction) + (sound-stop (-> self racer engine-sound-id)) + (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) + (set! (-> self control unknown-vector12 quad) (the-as uint128 0)) + (remove-setting! 'sound-flava) + (target-exit))) + :code + (behavior ((arg0 handle)) (target-exit) - ) - ) - :code (behavior ((arg0 handle)) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (set-setting! 'sound-flava #f 30.0 (music-flava racer)) - (if (zero? (-> self racer)) - (set! (-> self racer) (new 'process 'racer-info)) - ) - (set! (-> self racer turn-anim-targ) 0.0) - (set! (-> self racer turn-anim-frame) 0.0) - (set! (-> self racer turn-anim-vel) 0.0) - (set! (-> self racer tail-anim-vel) 0.0) - (set! (-> self racer tail-anim-frame) 0.0) - (set! (-> self racer rudd-anim-vel) 0.0) - (set! (-> self racer rudd-anim-frame) 0.0) - (set! (-> self racer stick-lock) #f) - (set! (-> self racer stick-off) #f) - (set! (-> self racer heavy) #f) - (set-time! (-> self racer unstuck-time)) - (set! (-> self racer stuck-count) 0) - (set! (-> self racer cushion-base) 10240.0) - (set! (-> self racer shock-offset) 0.0) - (set! (-> self racer shock-offsetv) 0.0) - (set! (-> self racer shock-rotx) 0.0) - (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) - (set! (-> self racer boost-sound-id) (new 'static 'sound-id)) - (set! (-> self racer scrape-sound-id) (new-sound-id)) - (set! (-> self racer entity) #f) - (let ((v1-28 (handle->process arg0))) - (if v1-28 - (set! (-> self racer entity) (-> v1-28 entity)) - ) - ) - (set! (-> self control surf) *race-track-surface*) - (set! (-> self control reaction) racer-collision-reaction) - (vector-reset! (-> self racer rot)) - (set! (-> self racer rot y) (y-angle (-> self control))) - (target-collide-set! 'racer 0.0) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) (collide-action racer)) - (set! (-> self control unknown-surface00) *racer-mods*) - (set! (-> self racer lean-rotx) 0.0) - (vector-reset! (-> self racer rotv)) - (quaternion-identity! (the-as quaternion (-> self racer surface-quat))) - (quaternion-identity! (the-as quaternion (-> self racer surface-quat-smooth))) - (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) - (set! (-> self racer front-rotv) 0.0) - (set! (-> self racer bottom-rot) 0.0) - (let ((v1-56 (-> self node-list data))) - (set! (-> v1-56 0 param0) cspace<-transformq+world-trans!) - (set! (-> v1-56 0 param1) (the-as basic (-> self control trans))) - (set! (-> v1-56 0 param2) (the-as basic (-> self control unknown-vector12))) - ) - (set! (-> self control unknown-float81) 1.0) - (set! (-> self racer hop?) #f) - (set! (-> self racer bounce) 0) - (set! (-> self racer bounce-hit) 0.0) - (set! (-> self racer bob-period) 900.0) - (set! (-> self racer bob-mult-rot) 0.0) - (set! (-> self racer bob-mult-trans) 0.0) - (set! (-> self racer bob-meta-timer) 0.0) - (set! (-> self racer bob-meta-meta-timer) 0.0) - (set! (-> self racer bob-hit-ground-time) 0) - (set! (-> self racer cushion-bob) 0.0) - (set! (-> self racer cushion-bob-old) 0.0) - (set! (-> self racer hill-value) 0.0) - (set! (-> self racer hill-ground-value) 0.0) - (set! (-> self racer hill-offset) 0.0) - (set! (-> self racer hill-boost) 0.0) - (set! (-> self racer cur-rotx) 0.0) - (set! (-> self racer targ-rotx) 0.0) - (set! (-> self racer hill-rotx) 0.0) - (set! (-> self racer mult-rotx) 0.0) - (set! (-> self racer speed-rotx) 0.25) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) 0) - (set! (-> self racer boost-duration) (-> *RACER-bank* boost-duration)) - (set! (-> self racer heat) 0.0) - (set! (-> self racer slide-mode) 0) - (set! (-> self racer slide-amp) 0.0) - (set! (-> self racer slide-down-time 0) 0) - (set! (-> self racer slide-down-time 1) 0) - (set! (-> self racer slide-interp) 0.0) - (set! (-> self racer surface-y) (-> self control trans y)) - (let ((s5-0 (-> self entity))) - (set! (-> self entity) (-> self racer entity)) - (set! (-> self manipy) - (manipy-spawn (-> self control trans) (-> self entity) *racer-sg* #f :from *8k-dead-pool* :to self) - ) - (set! (-> self entity) s5-0) - ) - (when (-> self manipy) - (send-event - (ppointer->process (-> self manipy)) - 'trans-hook - (lambda :behavior manipy - () - (let ((v1-0 (ppointer->process (-> self parent)))) - (set! (-> self root trans quad) (-> (the-as target v1-0) racer bike-trans quad)) - (let ((a0-4 (-> (the-as target v1-0) racer bike-quat quad))) - (set! (-> self root quat vec quad) a0-4) - ) - (set! (-> self root scale quad) (-> (the-as target v1-0) racer bike-scale quad)) - (set! (-> self draw light-index) (the-as uint 255)) - (let ((a0-9 (-> (the-as target v1-0) draw color-mult quad))) - (set! (-> self draw color-mult quad) a0-9) - ) - (let ((a0-11 (-> (the-as target v1-0) draw color-emissive quad))) - (set! (-> self draw color-emissive quad) a0-11) - ) - (set! (-> self draw secondary-interp) (-> (the-as target v1-0) draw secondary-interp)) - ) - ) - ) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) - (send-event (ppointer->process (-> self manipy)) 'art-joint-anim "racer-get-on" 0.0) - (send-event - (ppointer->process (-> self manipy)) - 'eval - (lambda :behavior manipy - () - (set! (-> self clone-copy-trans) #f) - (let ((v1-1 (-> *target-shadow-control* settings shadow-dir quad))) - (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-1) - ) - (set! (-> self draw shadow-ctrl) *racer-shadow-control*) - (let ((gp-0 (-> self parent))) - (set! (-> (the-as target (-> gp-0 0)) racer front-blade) - (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 4) - ) - (set! (-> (the-as target (-> gp-0 0)) racer bottom-blade) - (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 10) - ) - (let ((v0-2 (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 7))) - (set! (-> (the-as target (-> gp-0 0)) racer tail) v0-2) - v0-2 - ) - ) - ) - ) - ) - (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) - (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) - (remove-exit) - (go target-racing-get-on arg0) - ) - :post target-post - ) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (set-setting! 'sound-flava #f 30.0 (music-flava racer)) + (if (zero? (-> self racer)) (set! (-> self racer) (new 'process 'racer-info))) + (set! (-> self racer turn-anim-targ) 0.0) + (set! (-> self racer turn-anim-frame) 0.0) + (set! (-> self racer turn-anim-vel) 0.0) + (set! (-> self racer tail-anim-vel) 0.0) + (set! (-> self racer tail-anim-frame) 0.0) + (set! (-> self racer rudd-anim-vel) 0.0) + (set! (-> self racer rudd-anim-frame) 0.0) + (set! (-> self racer stick-lock) #f) + (set! (-> self racer stick-off) #f) + (set! (-> self racer heavy) #f) + (set-time! (-> self racer unstuck-time)) + (set! (-> self racer stuck-count) 0) + (set! (-> self racer cushion-base) 10240.0) + (set! (-> self racer shock-offset) 0.0) + (set! (-> self racer shock-offsetv) 0.0) + (set! (-> self racer shock-rotx) 0.0) + (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) + (set! (-> self racer boost-sound-id) (new 'static 'sound-id)) + (set! (-> self racer scrape-sound-id) (new-sound-id)) + (set! (-> self racer entity) #f) + (let ((v1-28 (handle->process arg0))) (if v1-28 (set! (-> self racer entity) (-> v1-28 entity)))) + (set! (-> self control surf) *race-track-surface*) + (set! (-> self control reaction) racer-collision-reaction) + (vector-reset! (-> self racer rot)) + (set! (-> self racer rot y) (y-angle (-> self control))) + (target-collide-set! 'racer 0.0) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (logior! (-> self control root-prim prim-core action) (collide-action racer)) + (set! (-> self control unknown-surface00) *racer-mods*) + (set! (-> self racer lean-rotx) 0.0) + (vector-reset! (-> self racer rotv)) + (quaternion-identity! (the-as quaternion (-> self racer surface-quat))) + (quaternion-identity! (the-as quaternion (-> self racer surface-quat-smooth))) + (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) + (set! (-> self racer front-rotv) 0.0) + (set! (-> self racer bottom-rot) 0.0) + (let ((v1-56 (-> self node-list data))) + (set! (-> v1-56 0 param0) cspace<-transformq+world-trans!) + (set! (-> v1-56 0 param1) (the-as basic (-> self control trans))) + (set! (-> v1-56 0 param2) (the-as basic (-> self control unknown-vector12)))) + (set! (-> self control unknown-float81) 1.0) + (set! (-> self racer hop?) #f) + (set! (-> self racer bounce) 0) + (set! (-> self racer bounce-hit) 0.0) + (set! (-> self racer bob-period) 900.0) + (set! (-> self racer bob-mult-rot) 0.0) + (set! (-> self racer bob-mult-trans) 0.0) + (set! (-> self racer bob-meta-timer) 0.0) + (set! (-> self racer bob-meta-meta-timer) 0.0) + (set! (-> self racer bob-hit-ground-time) 0) + (set! (-> self racer cushion-bob) 0.0) + (set! (-> self racer cushion-bob-old) 0.0) + (set! (-> self racer hill-value) 0.0) + (set! (-> self racer hill-ground-value) 0.0) + (set! (-> self racer hill-offset) 0.0) + (set! (-> self racer hill-boost) 0.0) + (set! (-> self racer cur-rotx) 0.0) + (set! (-> self racer targ-rotx) 0.0) + (set! (-> self racer hill-rotx) 0.0) + (set! (-> self racer mult-rotx) 0.0) + (set! (-> self racer speed-rotx) 0.25) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) 0) + (set! (-> self racer boost-duration) (-> *RACER-bank* boost-duration)) + (set! (-> self racer heat) 0.0) + (set! (-> self racer slide-mode) 0) + (set! (-> self racer slide-amp) 0.0) + (set! (-> self racer slide-down-time 0) 0) + (set! (-> self racer slide-down-time 1) 0) + (set! (-> self racer slide-interp) 0.0) + (set! (-> self racer surface-y) (-> self control trans y)) + (let ((s5-0 (-> self entity))) + (set! (-> self entity) (-> self racer entity)) + (set! (-> self manipy) + (manipy-spawn (-> self control trans) (-> self entity) *racer-sg* #f :from *8k-dead-pool* :to self)) + (set! (-> self entity) s5-0)) + (when (-> self manipy) + (send-event (ppointer->process (-> self manipy)) + 'trans-hook + (lambda :behavior manipy () + (let ((v1-0 (ppointer->process (-> self parent)))) + (set! (-> self root trans quad) (-> (the-as target v1-0) racer bike-trans quad)) + (let ((a0-4 (-> (the-as target v1-0) racer bike-quat quad))) (set! (-> self root quat vec quad) a0-4)) + (set! (-> self root scale quad) (-> (the-as target v1-0) racer bike-scale quad)) + (set! (-> self draw light-index) (the-as uint 255)) + (let ((a0-9 (-> (the-as target v1-0) draw color-mult quad))) (set! (-> self draw color-mult quad) a0-9)) + (let ((a0-11 (-> (the-as target v1-0) draw color-emissive quad))) (set! (-> self draw color-emissive quad) a0-11)) + (set! (-> self draw secondary-interp) (-> (the-as target v1-0) draw secondary-interp))))) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) + (send-event (ppointer->process (-> self manipy)) 'art-joint-anim "racer-get-on" 0.0) + (send-event (ppointer->process (-> self manipy)) + 'eval + (lambda :behavior manipy () + (set! (-> self clone-copy-trans) #f) + (let ((v1-1 (-> *target-shadow-control* settings shadow-dir quad))) + (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-1)) + (set! (-> self draw shadow-ctrl) *racer-shadow-control*) + (let ((gp-0 (-> self parent))) + (set! (-> (the-as target (-> gp-0 0)) racer front-blade) (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 4)) + (set! (-> (the-as target (-> gp-0 0)) racer bottom-blade) + (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 10)) + (let ((v0-2 (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 7))) + (set! (-> (the-as target (-> gp-0 0)) racer tail) v0-2) + v0-2))))) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) + (remove-exit) + (go target-racing-get-on arg0)) + :post target-post) (defbehavior target-racing-smack-check target () (if (and (< 20480.0 (-> self control unknown-float01)) (and (logtest? (-> self control status) (cshape-moving-flags twall)) (< (-> self control surface-angle) 0.5) (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector70) (-> self control trans))) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> self control unknown-vector10 quad)) (set! (-> gp-1 y) 0.0) (set! (-> s5-0 y) 0.0) (vector-xz-normalize! gp-1 1.0) (vector-xz-normalize! s5-0 1.0) - (< 0.87 (vector-dot gp-1 s5-0)) - ) - ) - ) - (go target-racing-smack (-> self control unknown-float01) #t) - ) - (none) - ) + (< 0.87 (vector-dot gp-1 s5-0))))) + (go target-racing-smack (-> self control unknown-float01) #t)) + (none)) (defstate target-racing (target) - :event (-> target-racing-start event) - :enter (behavior () - (set! (-> self control unknown-surface00) *racer-mods*) - ) - :exit (behavior () - (target-racing-center-anim) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons l1 r1) - ) - (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.1))) - (< (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) - ) - 4096.0 - ) - ) - ) - (go target-racing-jump 2048.0 5324.8 #t) - ) - (target-racing-smack-check) - (let* ((f30-0 (target-height-above-ground)) - (v1-28 (time-to-ground - (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) - (-> self control dynam gravity-length) - f30-0 - ) - ) - ) - (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (or (time-elapsed? (-> self control unknown-dword11) (* (-> *TARGET-bank* ground-timeout) 2)) (< 75 v1-28)) - (< 30 v1-28) - (< 4096.0 f30-0) - ) - (go target-racing-falling) - ) - ) - (set! (-> self racer turn-anim-targ) (* 20.0 (-> self racer mod-x))) - (racer-buzz (+ 0.45 (* 1.7 (fabs (-> self racer slide-shift-x))))) - ) - :code (behavior () - (cond - ((ja-group? eichar-racer-get-on-ja) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - ) - ((let ((v1-16 (ja-group))) - (or (or (= v1-16 eichar-racer-jump-small-ja) (= v1-16 eichar-racer-jump-small-loop-ja)) - (> (-> self racer bounce) 0) - ) - ) - (let ((s5-0 #f) - (gp-0 #f) - ) - (when (and (< (fabs (-> self racer bob-mult-trans)) 0.2) - (and (time-elapsed? (-> self racer racing-time) (seconds 0.15)) - (< 16384.0 (-> self control ground-impact-vel)) - ) - ) - (when (>= (-> self control unknown-float01) 40960.0) - (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) 100.0) - (launch-particles (-> *part-id-table* 2225) (-> self control trans)) - ) - (target-land-effect) - (when (and (>= (-> self control ground-impact-vel) 61440.0) (zero? (-> self racer bounce))) - (set! (-> self racer bounce) 0) - (set! (-> self racer bounce-hit) (-> self control ground-impact-vel)) - ) - (when (< (-> self racer bounce-hit) 73728.0) - (set! (-> self racer bounce) 0) - 0 - ) - (set! (-> self racer bob-timer) 90.0) - (let ((f0-14 (lerp-scale 2.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) - (set! (-> self racer bob-meta-meta-timer) f0-14) - (set! (-> self racer bob-meta-timer) f0-14) - ) - (set! (-> self racer bob-mult-trans) (lerp-scale 0.2 2.5 (-> self control ground-impact-vel) 20480.0 81920.0)) - (set-time! (-> self racer bob-hit-ground-time)) - (set-time! (-> self racer bob-meta-time)) - (cond - ((or s5-0 (and (>= (-> self racer bounce) 1) (< (-> self racer bounce) 2))) - (+! (-> self racer bounce) 1) - (let* ((v1-73 (-> self racer bounce)) - (a1-6 (cond - ((= v1-73 1) - (lerp-scale 4096.0 8192.0 (-> self racer bounce-hit) 61440.0 81920.0) - ) - ((= v1-73 2) - 2048.0 - ) - ) - ) - ) - (go target-racing-bounce a1-6 a1-6 gp-0) - ) - ) - ((>= (-> self racer slide-mode) 0) - ) - (else - (target-racing-land-anim gp-0) - ) - ) - ) - ) - ) - ) - (when (!= (-> self racer slide-shift-x) 0.0) - (if (rand-vu-percent? 0.5) - (sound-play "zoomer-rev1" :vol 80) - (sound-play "zoomer-rev2" :vol 80) - ) - ) - (set! (-> self racer bounce) 0) - (loop - (let ((gp-3 (current-time))) - (when (not (ja-group? eichar-racer-turn-ja)) - (ja-channel-push! 4 (seconds 0.1)) - (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) - (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) - (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) - (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0)) - ) - (while (not (time-elapsed? gp-3 (seconds 1))) - (if (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1 x) - (>= (fabs (-> self racer turn-anim-frame)) 1.0) - ) - ) - (set! gp-3 (current-time)) - ) - (target-racing-turn-anim) + :event + (-> target-racing-start + event) + :enter + (behavior () + (set! (-> self control unknown-surface00) *racer-mods*)) + :exit + (behavior () + (target-racing-center-anim) + ((-> target-racing-start exit))) + :trans + (behavior () + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons l1 r1)) + (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.1))) + (< (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos))) + 4096.0))) + (go target-racing-jump 2048.0 5324.8 #t)) + (target-racing-smack-check) + (let* ((f30-0 (target-height-above-ground)) + (v1-28 (time-to-ground (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) + (-> self control dynam gravity-length) + f30-0))) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (or (time-elapsed? (-> self control unknown-dword11) (* (-> *TARGET-bank* ground-timeout) 2)) (< 75 v1-28)) + (< 30 v1-28) + (< 4096.0 f30-0)) + (go target-racing-falling))) + (set! (-> self racer turn-anim-targ) (* 20.0 (-> self racer mod-x))) + (racer-buzz (+ 0.45 (* 1.7 (fabs (-> self racer slide-shift-x)))))) + :code + (behavior () + (cond + ((ja-group? eichar-racer-get-on-ja) (ja-no-eval :num! (seek!)) (while (not (ja-done? 0)) (suspend) (ja-eval))) + ((let ((v1-16 (ja-group))) + (or (or (= v1-16 eichar-racer-jump-small-ja) (= v1-16 eichar-racer-jump-small-loop-ja)) (> (-> self racer bounce) 0))) + (let ((s5-0 #f) + (gp-0 #f)) + (when (and (< (fabs (-> self racer bob-mult-trans)) 0.2) + (and (time-elapsed? (-> self racer racing-time) (seconds 0.15)) (< 16384.0 (-> self control ground-impact-vel)))) + (when (>= (-> self control unknown-float01) 40960.0) + (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) 100.0) + (launch-particles (-> *part-id-table* 2225) (-> self control trans))) + (target-land-effect) + (when (and (>= (-> self control ground-impact-vel) 61440.0) (zero? (-> self racer bounce))) + (set! (-> self racer bounce) 0) + (set! (-> self racer bounce-hit) (-> self control ground-impact-vel))) + (when (< (-> self racer bounce-hit) 73728.0) + (set! (-> self racer bounce) 0) + 0) + (set! (-> self racer bob-timer) 90.0) + (let ((f0-14 (lerp-scale 2.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) + (set! (-> self racer bob-meta-meta-timer) f0-14) + (set! (-> self racer bob-meta-timer) f0-14)) + (set! (-> self racer bob-mult-trans) (lerp-scale 0.2 2.5 (-> self control ground-impact-vel) 20480.0 81920.0)) + (set-time! (-> self racer bob-hit-ground-time)) + (set-time! (-> self racer bob-meta-time)) + (cond + ((or s5-0 (and (>= (-> self racer bounce) 1) (< (-> self racer bounce) 2))) + (+! (-> self racer bounce) 1) + (let* ((v1-73 (-> self racer bounce)) + (a1-6 (cond + ((= v1-73 1) (lerp-scale 4096.0 8192.0 (-> self racer bounce-hit) 61440.0 81920.0)) + ((= v1-73 2) 2048.0)))) + (go target-racing-bounce a1-6 a1-6 gp-0))) + ((>= (-> self racer slide-mode) 0)) + (else (target-racing-land-anim gp-0))))))) + (when (!= (-> self racer slide-shift-x) 0.0) + (if (rand-vu-percent? 0.5) (sound-play "zoomer-rev1" :vol 80) (sound-play "zoomer-rev2" :vol 80))) + (set! (-> self racer bounce) 0) + (loop + (let ((gp-3 (current-time))) + (when (not (ja-group? eichar-racer-turn-ja)) + (ja-channel-push! 4 (seconds 0.1)) + (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) + (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) + (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) + (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0))) + (while (not (time-elapsed? gp-3 (seconds 1))) + (if (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1 x) (>= (fabs (-> self racer turn-anim-frame)) 1.0))) + (set! gp-3 (current-time))) + (target-racing-turn-anim) + (suspend))) + (when (not (ja-group? eichar-racer-stance-ja)) + (ja-channel-push! 1 (seconds 0.4)) + (ja :group! eichar-racer-stance-ja :num! min)) + (while (not (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1 x) (>= (fabs (-> self racer turn-anim-frame)) 1.0)))) (suspend) - ) - ) - (when (not (ja-group? eichar-racer-stance-ja)) - (ja-channel-push! 1 (seconds 0.4)) - (ja :group! eichar-racer-stance-ja :num! min) - ) - (while (not (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1 x) - (>= (fabs (-> self racer turn-anim-frame)) 1.0) - ) - ) - ) - (suspend) - (ja :num! (loop!)) - ) - ) - ) - :post (behavior () - (if (= (-> self next-state name) 'target-racing) - (set-time! (-> self racer racing-time)) - ) - (target-racing-post) - ) - ) + (ja :num! (loop!))))) + :post + (behavior () + (if (= (-> self next-state name) 'target-racing) (set-time! (-> self racer racing-time))) + (target-racing-post))) (defstate target-racing-jump (target) - :event (-> target-racing-start event) - :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (set! (-> self racer shock-offsetv) 0.0) - (sound-play "zoomer-jump") - (set-time! (-> self state-time)) - (when arg2 - (when (>= (-> self racer hill-ground-value) 0.11) - (set! (-> self racer hill-boost) (* 40960.0 (-> self racer hill-ground-value))) - (vector-normalize! (-> self control transv) (+ (-> self control unknown-float01) (-> self racer hill-boost))) - ) - ) - (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) (< 16384.0 (-> self control transv y))) + :event + (-> target-racing-start + event) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (set! (-> self racer shock-offsetv) 0.0) + (sound-play "zoomer-jump") + (set-time! (-> self state-time)) + (when arg2 + (when (>= (-> self racer hill-ground-value) 0.11) + (set! (-> self racer hill-boost) (* 40960.0 (-> self racer hill-ground-value))) + (vector-normalize! (-> self control transv) (+ (-> self control unknown-float01) (-> self racer hill-boost))))) + (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) (< 16384.0 (-> self control transv y))) (set! (-> self racer hop?) #f) - (set! (-> self racer hop?) arg2) - ) - (set! (-> self racer hop-start-y) (-> self control trans y)) - (racer-calc-gravity) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *racer-air-mods*) - (set! (-> self control unknown-float123) - (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) - ) - (if (< (-> self racer slide-mode) 0) + (set! (-> self racer hop?) arg2)) + (set! (-> self racer hop-start-y) (-> self control trans y)) + (racer-calc-gravity) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *racer-air-mods*) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01)))))) + (if (< (-> self racer slide-mode) 0) (set! (-> self racer slide-down-time 0) - (the-as time-frame (if (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) - (the-as int (current-time)) - 0 - ) - ) - ) - ) - ) - :exit (behavior () - (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - (set! (-> self racer hop?) #f) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (set! (-> self control unknown-float123) - (fmax - (-> self control unknown-float123) - (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) - ) - ) - (cond - ((cpad-pressed? (-> self control unknown-cpad-info00 number) l1 r1) - (set-time! (-> self racer slide-down-time 0)) - ) - ((not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) - (set! (-> self racer slide-down-time 0) 0) - 0 - ) - ((and (time-elapsed? (-> self racer slide-down-time 0) (the-as time-frame (-> *RACER-bank* slide-hold-time))) - (< (-> self racer slide-mode) 0) - (or (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) - (< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) - ) - ) - (set! (-> self racer slide-mode) - (if (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) - 0 - 1 - ) - ) - (set-time! (-> self racer slide-enter-time)) - (set! (-> self racer slide-amp) 1.0) - (set! (-> self racer slide-grip-mult) 0.0) - ) - ((>= (-> self racer slide-mode) 0) - (cond - ((< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) - (set! (-> self racer slide-mode) 0) - 0 - ) - ((< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) - (set! (-> self racer slide-mode) 1) - ) - ) - ) - ) - (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (go target-racing) - ) - (if (or (< (-> self control trans y) (-> self racer hop-start-y)) - (< 10240.0 (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) - ) - ) - ) - (set! (-> self racer hop?) #f) - ) - (target-racing-smack-check) - (if (time-elapsed? (-> self state-time) (seconds 1)) - (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (-> self control transv)) - (set! (-> self racer shock-offset) (* 0.8 (-> self racer shock-offset))) - (racer-buzz 0.4) - ) - :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (let ((a0-1 (if (< 0.1 (-> self racer hill-value)) - 'jump - ) - ) - ) - (target-racing-jump-anim a0-1 (seconds 0.2)) - ) - ) - :post (-> target-racing post) - ) + (the-as time-frame (if (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (the-as int (current-time)) 0))))) + :exit + (behavior () + (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) + (set! (-> self racer hop?) #f) + ((-> target-racing-start exit))) + :trans + (behavior () + (set! (-> self control unknown-float123) + (fmax (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))))) + (cond + ((cpad-pressed? (-> self control unknown-cpad-info00 number) l1 r1) (set-time! (-> self racer slide-down-time 0))) + ((not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) (set! (-> self racer slide-down-time 0) 0) 0) + ((and (time-elapsed? (-> self racer slide-down-time 0) (the-as time-frame (-> *RACER-bank* slide-hold-time))) + (< (-> self racer slide-mode) 0) + (or (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) + (< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)))) + (set! (-> self racer slide-mode) + (if (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) 0 1)) + (set-time! (-> self racer slide-enter-time)) + (set! (-> self racer slide-amp) 1.0) + (set! (-> self racer slide-grip-mult) 0.0)) + ((>= (-> self racer slide-mode) 0) + (cond + ((< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) + (set! (-> self racer slide-mode) 0) + 0) + ((< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) + (set! (-> self racer slide-mode) 1))))) + (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (go target-racing)) + (if (or (< (-> self control trans y) (-> self racer hop-start-y)) + (< 10240.0 + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos))))) + (set! (-> self racer hop?) #f)) + (target-racing-smack-check) + (if (time-elapsed? (-> self state-time) (seconds 1)) + (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded))) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (-> self control transv)) + (set! (-> self racer shock-offset) (* 0.8 (-> self racer shock-offset))) + (racer-buzz 0.4)) + :code + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (let ((a0-1 (if (< 0.1 (-> self racer hill-value)) 'jump))) (target-racing-jump-anim a0-1 (seconds 0.2)))) + :post + (-> target-racing + post)) (defstate target-racing-bounce (target) - :event (-> target-racing-start event) - :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - (sound-play "zoomer-jump") - (set-time! (-> self state-time)) - (racer-calc-gravity) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-float123) - (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) - ) - ) - :exit (behavior () - (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (set! (-> self control unknown-float123) - (fmax - (-> self control unknown-float123) - (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) - ) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons l1 r1) - ) - (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.2))) - (< (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) - ) - 8192.0 - ) - ) - ) - (go target-racing-jump 2048.0 5324.8 #t) - ) - (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (go target-racing) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (-> self control transv)) - (target-racing-smack-check) - (racer-buzz 0.4) - ) - :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (target-racing-land-anim arg2) - (when (not (ja-group? eichar-racer-turn-ja)) - (ja-channel-push! 4 (seconds 0.1)) - (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) - (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) - (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) - (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0)) - ) - (loop - (target-racing-turn-anim) - (suspend) - ) - ) - :post (-> target-racing post) - ) + :event + (-> target-racing-start + event) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)) + (sound-play "zoomer-jump") + (set-time! (-> self state-time)) + (racer-calc-gravity) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))))) + :exit + (behavior () + (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) + ((-> target-racing-start exit))) + :trans + (behavior () + (set! (-> self control unknown-float123) + (fmax (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons l1 r1)) + (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.2))) + (< (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos))) + 8192.0))) + (go target-racing-jump 2048.0 5324.8 #t)) + (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (go target-racing)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (-> self control transv)) + (target-racing-smack-check) + (racer-buzz 0.4)) + :code + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (target-racing-land-anim arg2) + (when (not (ja-group? eichar-racer-turn-ja)) + (ja-channel-push! 4 (seconds 0.1)) + (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) + (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) + (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) + (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0))) + (loop + (target-racing-turn-anim) + (suspend))) + :post + (-> target-racing + post)) (defstate target-racing-smack (target) - :event (-> target-racing-start event) - :enter (behavior ((arg0 float) (arg1 symbol)) - (sound-play "smack-surface") - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) - (set! (-> self racer heavy) arg1) - (vector-! (-> self control transv) (-> self control unknown-vector70) (-> self control trans)) - (let ((f0-0 (lerp-scale 0.0 -61440.0 arg0 0.0 163840.0))) - (if (cpad-hold? (-> self control unknown-cpad-info00 number) x) - (set! f0-0 (* 2.0 f0-0)) - ) - (vector-normalize! (-> self control transv) f0-0) - ) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) 0) - 0 - ) - :exit (behavior () - (set! (-> self racer heavy) #f) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (set! (-> self racer turn-anim-targ) 0.0) - ) - :code (behavior ((arg0 float) (arg1 symbol)) - (sound-play "zoomer-crash-2") - (ja-channel-push! 2 (seconds 0.05)) - (ja-no-eval :group! eichar-racer-smack-ja :num! (seek!)) - (ja :chan 1 - :group! eichar-racer-idle-ja - :num! (identity (ja-aframe 0.0 0)) - :frame-interp (lerp-scale 1.0 0.25 arg0 0.0 122880.0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max (lerp-scale 2.0 1.0 arg0 0.0 163840.0))) - ) - (go target-racing) - ) - :post (-> target-racing post) - ) + :event + (-> target-racing-start + event) + :enter + (behavior ((arg0 float) (arg1 symbol)) + (sound-play "smack-surface") + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) + (set! (-> self racer heavy) arg1) + (vector-! (-> self control transv) (-> self control unknown-vector70) (-> self control trans)) + (let ((f0-0 (lerp-scale 0.0 -61440.0 arg0 0.0 163840.0))) + (if (cpad-hold? (-> self control unknown-cpad-info00 number) x) (set! f0-0 (* 2.0 f0-0))) + (vector-normalize! (-> self control transv) f0-0)) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) 0) + 0) + :exit + (behavior () + (set! (-> self racer heavy) #f) + ((-> target-racing-start exit))) + :trans + (behavior () + (set! (-> self racer turn-anim-targ) 0.0)) + :code + (behavior ((arg0 float) (arg1 symbol)) + (sound-play "zoomer-crash-2") + (ja-channel-push! 2 (seconds 0.05)) + (ja-no-eval :group! eichar-racer-smack-ja :num! (seek!)) + (ja :chan 1 + :group! + eichar-racer-idle-ja + :num! + (identity (ja-aframe 0.0 0)) + :frame-interp + (lerp-scale 1.0 0.25 arg0 0.0 122880.0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (lerp-scale 2.0 1.0 arg0 0.0 163840.0)))) + (go target-racing)) + :post + (-> target-racing + post)) (defstate target-racing-falling (target) - :event (-> target-racing-start event) - :enter (behavior () - (set! (-> self control unknown-surface00) *racer-air-mods*) - (set-time! (-> self state-time)) - ) - :exit (behavior () - (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-racing) - ) - (target-racing-smack-check) - (racer-buzz 0.3) - (if (time-elapsed? (-> self state-time) (seconds 1)) - (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ) - ) - :code (behavior () - (target-racing-jump-anim #f (seconds 0.1)) - ) - :post (-> target-racing post) - ) + :event + (-> target-racing-start + event) + :enter + (behavior () + (set! (-> self control unknown-surface00) *racer-air-mods*) + (set-time! (-> self state-time))) + :exit + (behavior () + (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) + ((-> target-racing-start exit))) + :trans + (behavior () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-racing)) + (target-racing-smack-check) + (racer-buzz 0.3) + (if (time-elapsed? (-> self state-time) (seconds 1)) + (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)))) + :code + (behavior () + (target-racing-jump-anim #f (seconds 0.1))) + :post + (-> target-racing + post)) (defstate target-racing-hit (target) :event target-generic-event-handler - :enter (behavior ((arg0 handle) (arg1 attack-info)) - (let ((v1-0 (-> self attack-info))) - (set! (-> v1-0 attacker) arg0) - (set! (-> v1-0 mode) 'generic) - (set! (-> v1-0 shove-back) 6144.0) - (set! (-> v1-0 shove-up) 4915.2) - (set! (-> v1-0 angle) #f) - ) - (set! (-> self attack-info trans quad) (the-as uint128 0)) - (combine! (-> self attack-info) arg1) - (case (-> self attack-info mode) - (('endlessfall 'death 'explode 'water-vol 'heat 'melt 'instant-death) - (pickup-collectable! (-> self fact) (pickup-type eco-green) -1000.0 (the-as handle #f)) - ) - (else - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - ) - ) - ) - :exit (behavior () - (if (!= (-> self next-state name) 'target-racing-death) - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - ) - ((-> target-racing-start exit)) - ) - :code (behavior ((arg0 handle) (arg1 attack-info)) - (target-timed-invulnerable (-> *TARGET-bank* hit-invulnerable-timeout) self) - (when (!= (-> self attack-info mode) 'endlessfall) - (effect-control-method-10 (-> self skel effect) 'group-target-hit -1.0 -1) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) - (sound-play "oof") - ) - (set-time! (-> self game hit-time)) - (logior! (-> self state-flags) (state-flags being-attacked)) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) 0) - (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) - (go target-racing-death (-> self attack-info mode)) - ) - (case (-> self attack-info mode) - (('endlessfall) - ) - (('darkeco) - (let ((s5-1 (new 'stack-no-clear 'vector))) - (set! (-> s5-1 quad) (-> self control transv quad)) - (let ((a2-3 (vector-xz-normalize! - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self attack-info intersection)) - 1.0 - ) - ) - ) - (set! (-> a2-3 y) 0.0) - (let ((gp-1 (vector-reflect-flat! (new 'stack-no-clear 'vector) s5-1 a2-3)) - (f30-0 (vector-xz-length s5-1)) - ) - (set! (-> gp-1 y) 0.0) - (vector-normalize! gp-1 1.0) - (vector-normalize-copy! (-> self control transv) gp-1 (* 2.0 f30-0)) - (let ((f28-0 (deg-diff (-> self racer rot y) (vector-y-angle gp-1)))) - (if (< 16384.0 (fabs f28-0)) - (set! f28-0 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1)))) - ) - (set! (-> self racer rotv y) (* f28-0 (lerp-scale 4.0 7.0 f30-0 4096.0 (-> self racer transv-max)))) - ) - ) - ) - ) - ) - (else - (set! (-> self post-hook) target-racing-post) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-racer-smack-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go target-racing) - ) - :post target-no-stick-post - ) + :enter + (behavior ((arg0 handle) (arg1 attack-info)) + (let ((v1-0 (-> self attack-info))) + (set! (-> v1-0 attacker) arg0) + (set! (-> v1-0 mode) 'generic) + (set! (-> v1-0 shove-back) 6144.0) + (set! (-> v1-0 shove-up) 4915.2) + (set! (-> v1-0 angle) #f)) + (set! (-> self attack-info trans quad) (the-as uint128 0)) + (combine! (-> self attack-info) arg1) + (case (-> self attack-info mode) + (('endlessfall 'death 'explode 'water-vol 'heat 'melt 'instant-death) + (pickup-collectable! (-> self fact) (pickup-type eco-green) -1000.0 (the-as handle #f))) + (else + (pickup-collectable! (-> self fact) (pickup-type eco-green) (- (-> *FACT-bank* health-single-inc)) (the-as handle #f))))) + :exit + (behavior () + (if (!= (-> self next-state name) 'target-racing-death) + (logclear! (-> self state-flags) (state-flags being-attacked dying))) + ((-> target-racing-start exit))) + :code + (behavior ((arg0 handle) (arg1 attack-info)) + (target-timed-invulnerable (-> *TARGET-bank* hit-invulnerable-timeout) self) + (when (!= (-> self attack-info mode) 'endlessfall) + (effect-control-method-10 (-> self skel effect) 'group-target-hit -1.0 -1) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) + (sound-play "oof")) + (set-time! (-> self game hit-time)) + (logior! (-> self state-flags) (state-flags being-attacked)) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) 0) + (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) (go target-racing-death (-> self attack-info mode))) + (case (-> self attack-info mode) + (('endlessfall)) + (('darkeco) + (let ((s5-1 (new 'stack-no-clear 'vector))) + (set! (-> s5-1 quad) (-> self control transv quad)) + (let ((a2-3 (vector-xz-normalize! (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self attack-info intersection)) + 1.0))) + (set! (-> a2-3 y) 0.0) + (let ((gp-1 (vector-reflect-flat! (new 'stack-no-clear 'vector) s5-1 a2-3)) + (f30-0 (vector-xz-length s5-1))) + (set! (-> gp-1 y) 0.0) + (vector-normalize! gp-1 1.0) + (vector-normalize-copy! (-> self control transv) gp-1 (* 2.0 f30-0)) + (let ((f28-0 (deg-diff (-> self racer rot y) (vector-y-angle gp-1)))) + (if (< 16384.0 (fabs f28-0)) (set! f28-0 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1))))) + (set! (-> self racer rotv y) (* f28-0 (lerp-scale 4.0 7.0 f30-0 4096.0 (-> self racer transv-max))))))))) + (else + (set! (-> self post-hook) target-racing-post) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-racer-smack-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go target-racing)) + :post target-no-stick-post) (defstate target-racing-death (target) - :event (-> target-death event) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags dying)) - (send-event (ppointer->process (-> self manipy)) 'draw #t) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) - (target-timed-invulnerable-off self) - (set! (-> self control pat-ignore-mask) (new 'static 'pat-surface :noentity #x1)) - (restore-collide-with-as (-> self control)) - ((-> target-racing-start exit)) - (target-exit) - (set! (-> self racer stick-off) #f) - ) - :code (behavior ((arg0 symbol)) - (local-vars (v1-154 symbol)) - (set! (-> self racer stick-off) #t) - (set! (-> self neck flex-blend) 0.0) - (target-timed-invulnerable-off self) - (logior! (-> self state-flags) (state-flags dying)) - (case (-> self attack-info mode) - (('explode 'darkeco 'heat 'death 'deadly 'balloonlurker) - ((-> target-racing-start exit)) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) - (send-event (ppointer->process (-> self manipy)) 'draw #f) - (sound-play "zoomer-explode") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 116) - -1 - #f - #f - #f - (-> self control trans) - :to *entity-pool* - ) - (send-event - (ppointer->process (-> self manipy)) - 'eval - (lambda :behavior racer - () - (let ((s5-0 (-> self parent-override)) - (gp-0 (new 'stack 'joint-exploder-tuning 1)) - ) - (let* ((f0-0 (vector-length (-> s5-0 0 control transv))) - (f30-0 (fmin 1.0 (* 0.000008138021 f0-0))) - ) - (set! (-> gp-0 duration) (seconds 5)) - (set! (-> gp-0 fountain-rand-transv-hi x) (fmax 24576.0 f0-0)) - (set! (-> gp-0 fountain-rand-transv-hi y) (+ 81920.0 f0-0)) - (set! (-> gp-0 fountain-rand-transv-hi z) 20480.0) - (set! (-> gp-0 fountain-rand-transv-hi w) 36864.0) - (vector-negate! (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control transv)) - (vector-normalize! (-> gp-0 fountain-rand-transv-lo) (* 12288.0 f30-0)) - ) - (vector+! (-> gp-0 fountain-rand-transv-lo) (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control trans)) - (process-spawn - joint-exploder - *racer-explode-sg* - 24 - gp-0 - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1) - ) - ) - :to self - ) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.1)) - (fmax -182044.44 (fmin 182044.44 (* -40.0 (-> self racer rot z)))) - (case (-> self attack-info mode) - (('balloonlurker) - (create-splash (-> self water) 2.0 (-> self control trans) 1 (-> self control transv)) - (ja-no-eval :group! eichar-racer-death-explode-ja :num! (seek! (ja-aframe 240.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (set! (-> self racer stick-lock) #t) - (seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (seconds-per-frame))) - (send-event *camera* 'joystick 0.0 1.0) - (suspend) - (ja :num! (seek! (ja-aframe 240.0 0))) - ) - ) - (else - (ja-no-eval :group! eichar-racer-death-explode-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (set! (-> self racer stick-lock) #t) - (send-event *camera* 'joystick 0.0 1.0) - (seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (seconds-per-frame))) - (if (>= (ja-aframe-num 0) 245.0) - (set-forward-vel (* 0.5 (-> self control unknown-float01))) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - (('melt) - (sound-play "zoomer-melt") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 32) - -1 - #f - #f - #f - (-> self control trans) - :to *entity-pool* - ) - (clear-collide-with-as (-> self control)) - (set! (-> self post-hook) target-no-ja-move-post) - (ja-channel-set! 0) - (ja-post) - (let ((gp-6 (current-time))) - (until (time-elapsed? gp-6 (seconds 2)) - (suspend) - ) - ) - ) - (('endlessfall) - (sound-play "death-fall") - (camera-change-to (the-as string cam-endlessfall) 30 #f) - (set! (-> self control pat-ignore-mask unknown-bit) 1) - (let ((f30-0 (fmin -4096.0 (- (-> self control ground-impact-vel))))) - (let ((gp-8 (new-stack-vector0))) - (let ((f0-28 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-8 (-> self control transv) (vector-float*! gp-8 (-> self control dynam gravity-normal) f0-28)) - ) - (let* ((f0-29 (vector-length gp-8)) - (f1-9 f0-29) - (f2-2 f30-0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) - (vector-float*! gp-8 gp-8 (/ f0-29 f1-9)) - ) - ) - ) - (let ((gp-9 (current-time))) - (until (time-elapsed? gp-9 (seconds 0.75)) - (vector-seek! (-> self draw color-mult) *zero-vector* (* 1.5 (seconds-per-frame))) - (set-forward-vel (* 0.96 (-> self control unknown-float01))) - (let ((s5-3 (new-stack-vector0)) - (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) + :event + (-> target-death + event) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags dying)) + (send-event (ppointer->process (-> self manipy)) 'draw #t) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) + (target-timed-invulnerable-off self) + (set! (-> self control pat-ignore-mask) (new 'static 'pat-surface :noentity #x1)) + (restore-collide-with-as (-> self control)) + ((-> target-racing-start exit)) + (target-exit) + (set! (-> self racer stick-off) #f)) + :code + (behavior ((arg0 symbol)) + (local-vars (v1-154 symbol)) + (set! (-> self racer stick-off) #t) + (set! (-> self neck flex-blend) 0.0) + (target-timed-invulnerable-off self) + (logior! (-> self state-flags) (state-flags dying)) + (case (-> self attack-info mode) + (('explode 'darkeco 'heat 'death 'deadly 'balloonlurker) + ((-> target-racing-start exit)) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) + (send-event (ppointer->process (-> self manipy)) 'draw #f) + (sound-play "zoomer-explode") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 116) + -1 + #f + #f + #f + (-> self control trans) + :to + *entity-pool*) + (send-event (ppointer->process (-> self manipy)) + 'eval + (lambda :behavior racer () + (let ((s5-0 (-> self parent-override)) + (gp-0 (new 'stack 'joint-exploder-tuning 1))) + (let* ((f0-0 (vector-length (-> s5-0 0 control transv))) + (f30-0 (fmin 1.0 (* 0.000008138021 f0-0)))) + (set! (-> gp-0 duration) (seconds 5)) + (set! (-> gp-0 fountain-rand-transv-hi x) (fmax 24576.0 f0-0)) + (set! (-> gp-0 fountain-rand-transv-hi y) (+ 81920.0 f0-0)) + (set! (-> gp-0 fountain-rand-transv-hi z) 20480.0) + (set! (-> gp-0 fountain-rand-transv-hi w) 36864.0) + (vector-negate! (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control transv)) + (vector-normalize! (-> gp-0 fountain-rand-transv-lo) (* 12288.0 f30-0))) + (vector+! (-> gp-0 fountain-rand-transv-lo) (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control trans)) + (process-spawn joint-exploder + *racer-explode-sg* + 24 + gp-0 + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1))) + :to + self)))) + (ja-channel-push! 1 (seconds 0.1)) + (fmax -182044.44 (fmin 182044.44 (* -40.0 (-> self racer rot z)))) + (case (-> self attack-info mode) + (('balloonlurker) + (create-splash (-> self water) 2.0 (-> self control trans) 1 (-> self control transv)) + (ja-no-eval :group! eichar-racer-death-explode-ja :num! (seek! (ja-aframe 240.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self racer stick-lock) #t) + (seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (seconds-per-frame))) + (send-event *camera* 'joystick 0.0 1.0) + (suspend) + (ja :num! (seek! (ja-aframe 240.0 0))))) + (else + (ja-no-eval :group! eichar-racer-death-explode-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self racer stick-lock) #t) + (send-event *camera* 'joystick 0.0 1.0) + (seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (seconds-per-frame))) + (if (>= (ja-aframe-num 0) 245.0) (set-forward-vel (* 0.5 (-> self control unknown-float01)))) + (suspend) + (ja :num! (seek!)))))) + (('melt) + (sound-play "zoomer-melt") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 32) + -1 + #f + #f + #f + (-> self control trans) + :to + *entity-pool*) + (clear-collide-with-as (-> self control)) + (set! (-> self post-hook) target-no-ja-move-post) + (ja-channel-set! 0) + (ja-post) + (let ((gp-6 (current-time))) (until (time-elapsed? gp-6 (seconds 2)) (suspend)))) + (('endlessfall) + (sound-play "death-fall") + (camera-change-to (the-as string cam-endlessfall) 30 #f) + (set! (-> self control pat-ignore-mask unknown-bit) 1) + (let ((f30-0 (fmin -4096.0 (- (-> self control ground-impact-vel))))) + (let ((gp-8 (new-stack-vector0))) + (let ((f0-28 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! s5-3 (-> self control transv) (vector-float*! s5-3 (-> self control dynam gravity-normal) f28-0)) - (let* ((f0-38 (vector-length s5-3)) - (f1-12 f0-38) - ) - (if (< f30-0 f28-0) - (set! f28-0 f30-0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) - (vector-float*! s5-3 s5-3 (/ f0-38 f1-12)) - ) - ) - ) - (suspend) - ) - ) - ) - (camera-change-to (the-as string 'base) 0 #f) - ) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (set! (-> self post-hook) target-no-stick-post) - (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) - (set-time! (-> self state-time)) - (until v1-154 - (suspend) - (set! v1-154 (and (time-elapsed? (-> self state-time) (seconds 1)) - (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie))) - ) - ) - ) - (go target-stance) - ) - :post target-racing-post - ) + (vector-! gp-8 (-> self control transv) (vector-float*! gp-8 (-> self control dynam gravity-normal) f0-28))) + (let* ((f0-29 (vector-length gp-8)) + (f1-9 f0-29) + (f2-2 f30-0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! gp-8 gp-8 (/ f0-29 f1-9))))) + (let ((gp-9 (current-time))) + (until (time-elapsed? gp-9 (seconds 0.75)) + (vector-seek! (-> self draw color-mult) *zero-vector* (* 1.5 (seconds-per-frame))) + (set-forward-vel (* 0.96 (-> self control unknown-float01))) + (let ((s5-3 (new-stack-vector0)) + (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! s5-3 (-> self control transv) (vector-float*! s5-3 (-> self control dynam gravity-normal) f28-0)) + (let* ((f0-38 (vector-length s5-3)) + (f1-12 f0-38)) + (if (< f30-0 f28-0) (set! f28-0 f30-0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) + (vector-float*! s5-3 s5-3 (/ f0-38 f1-12))))) + (suspend)))) + (camera-change-to (the-as string 'base) 0 #f))) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (set! (-> self post-hook) target-no-stick-post) + (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) + (set-time! (-> self state-time)) + (until v1-154 + (suspend) + (set! v1-154 + (and (time-elapsed? (-> self state-time) (seconds 1)) + (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie)))))) + (go target-stance)) + :post target-racing-post) (defstate target-racing-get-on (target) :event target-generic-event-handler - :exit (-> target-racing-start exit) - :code (behavior ((arg0 handle)) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self alt-cam-pos quad) (-> (&-> (-> self control) unknown-qword00) 0)) - (logior! (-> self state-flags) (state-flags use-alt-cam-pos)) - (set-time! (-> self state-time)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control trans quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self control trans quad)) - (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) - (let* ((s3-0 (handle->process arg0)) - (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) - (the-as racer s3-0) - ) - ) - ) - (when s4-1 - (set! (-> s5-0 quad) (-> s4-1 root trans quad)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> s4-1 root quat)) - (send-event s4-1 'trans (-> self racer bike-trans)) - (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s4-1 root quat)) - (set! (-> self racer bike-scale quad) (-> s4-1 root scale quad)) - (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))) - ) - ) - (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) - (set! (-> self control unknown-vector103 quad) (-> s5-0 quad)) - ) - ) - (let ((s5-1 #f) - (gp-1 #f) - ) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-racer-get-on-ja :num! (seek! (ja-aframe 77.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not s5-1) (= (-> self skel root-channel 0) (-> self skel channel))) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) - (set! s5-1 #t) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (when (< 50.0 (ja-aframe-num 0)) - (when (not gp-1) - (sound-play "zoomer-start") - (set! gp-1 #t) - ) - (set! (-> self racer front-rotv) 65536.0) - (set! (-> self racer front-rot) - (the float - (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48) - ) - ) - (+! (-> self racer bottom-rot) (* 364088.88 (seconds-per-frame))) - (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) - (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) - ) - (suspend) - (ja :num! (seek! (ja-aframe 77.0 0))) - ) - ) - (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) - (send-event *camera* 'set-slave-option #x6000) - (set! (-> self control transv quad) (the-as uint128 0)) - (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) - (rot->dir-targ! (-> self control)) - (set! (-> self racer rot y) (y-angle (-> self control))) - (when *target* - (when (or (= (-> *target* current-level name) 'lavatube) - (= (-> *target* current-level name) 'firecanyon) - (= (-> *target* current-level name) 'citadel) - ) - (set! (-> *hud-parts* bike-heat) (process-spawn hud-bike-heat :init hud-init-by-other 0 :to self)) - (set! (-> *hud-parts* buzzers 0 next-y-offset) -120) - (set! (-> *hud-parts* buzzers 0 y-sgn) 0) - 0 - ) - (set! (-> *hud-parts* bike-speed) (process-spawn hud-bike-speed :init hud-init-by-other 0 :to self)) - (set! (-> *hud-parts* power 0 next-y-offset) -120) - (set! (-> *hud-parts* power 0 y-sgn) 0) - 0 - ) - (go target-racing) - ) - :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f30-0 (fmin 1.0 (* 0.0044444446 (the float (- (current-time) (-> self state-time)))))) - ) - (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) - (set! (-> gp-0 y) - (lerp - (-> self control unknown-vector102 y) - (-> self control unknown-vector103 y) - (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))) - ) - ) - (move-to-point! (-> self control) gp-0) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion02) - (-> self control unknown-quaternion03) - f30-0 - ) - ) - (let ((f30-1 (fmax 0.0 (fmin 1.0 (* 0.010528533 (+ -279.99 (the float (- (current-time) (-> self state-time)))))))) - ) - (set! (-> self control unknown-vector11 y) - (lerp (the-as float (-> self control unknown-uint20)) (-> self racer cushion-base) f30-1) - ) - (set! (-> self racer bike-trans y) (lerp - (the-as float (-> self control unknown-uint30)) - (+ 4096.0 (the-as float (-> self control unknown-uint30))) - f30-1 - ) - ) - ) - (hide-hud-quick) - (target-no-move-post) - ) - ) + :exit + (-> target-racing-start + exit) + :code + (behavior ((arg0 handle)) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self alt-cam-pos quad) (-> (&-> (-> self control) unknown-qword00) 0)) + (logior! (-> self state-flags) (state-flags use-alt-cam-pos)) + (set-time! (-> self state-time)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self control trans quad)) + (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (let* ((s3-0 (handle->process arg0)) + (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) (the-as racer s3-0)))) + (when s4-1 + (set! (-> s5-0 quad) (-> s4-1 root trans quad)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> s4-1 root quat)) + (send-event s4-1 'trans (-> self racer bike-trans)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s4-1 root quat)) + (set! (-> self racer bike-scale quad) (-> s4-1 root scale quad)) + (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))))) + (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) + (set! (-> self control unknown-vector103 quad) (-> s5-0 quad)))) + (let ((s5-1 #f) + (gp-1 #f)) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-racer-get-on-ja :num! (seek! (ja-aframe 77.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not s5-1) (= (-> self skel root-channel 0) (-> self skel channel))) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) + (set! s5-1 #t)) + (set! (-> self control transv quad) (the-as uint128 0)) + (when (< 50.0 (ja-aframe-num 0)) + (when (not gp-1) + (sound-play "zoomer-start") + (set! gp-1 #t)) + (set! (-> self racer front-rotv) 65536.0) + (set! (-> self racer front-rot) + (the float (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48))) + (+! (-> self racer bottom-rot) (* 364088.88 (seconds-per-frame))) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot)))) + (suspend) + (ja :num! (seek! (ja-aframe 77.0 0))))) + (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) + (send-event *camera* 'set-slave-option #x6000) + (set! (-> self control transv quad) (the-as uint128 0)) + (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) + (rot->dir-targ! (-> self control)) + (set! (-> self racer rot y) (y-angle (-> self control))) + (when *target* + (when (or (= (-> *target* current-level name) 'lavatube) + (= (-> *target* current-level name) 'firecanyon) + (= (-> *target* current-level name) 'citadel)) + (set! (-> *hud-parts* bike-heat) (process-spawn hud-bike-heat :init hud-init-by-other 0 :to self)) + (set! (-> *hud-parts* buzzers 0 next-y-offset) -120) + (set! (-> *hud-parts* buzzers 0 y-sgn) 0) + 0) + (set! (-> *hud-parts* bike-speed) (process-spawn hud-bike-speed :init hud-init-by-other 0 :to self)) + (set! (-> *hud-parts* power 0 next-y-offset) -120) + (set! (-> *hud-parts* power 0 y-sgn) 0) + 0) + (go target-racing)) + :post + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f30-0 (fmin 1.0 (* 0.0044444446 (the float (- (current-time) (-> self state-time))))))) + (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) + (set! (-> gp-0 y) + (lerp (-> self control unknown-vector102 y) + (-> self control unknown-vector103 y) + (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))))) + (move-to-point! (-> self control) gp-0) + (quaternion-slerp! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion02) + (-> self control unknown-quaternion03) + f30-0)) + (let ((f30-1 (fmax 0.0 (fmin 1.0 (* 0.010528533 (+ -279.99 (the float (- (current-time) (-> self state-time))))))))) + (set! (-> self control unknown-vector11 y) + (lerp (the-as float (-> self control unknown-uint20)) (-> self racer cushion-base) f30-1)) + (set! (-> self racer bike-trans y) + (lerp (the-as float (-> self control unknown-uint30)) (+ 4096.0 (the-as float (-> self control unknown-uint30))) f30-1))) + (hide-hud-quick) + (target-no-move-post))) (defstate target-racing-get-off (target) :event target-generic-event-handler - :exit (-> target-racing-start exit) - :code (behavior ((arg0 handle)) - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *racer-mods*) - (let ((a0-2 (-> *hud-parts* bike-speed))) - (if a0-2 - (set! (-> a0-2 0 deactivate-when-hidden) #t) - ) - ) - (let ((a0-4 (-> *hud-parts* bike-heat))) - (if a0-4 - (set! (-> a0-4 0 deactivate-when-hidden) #t) - ) - ) - (when (not (ja-group? eichar-racer-turn-ja)) - (ja-channel-push! 4 (seconds 0.1)) - (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) - (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) - (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) - (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0)) - ) - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 (seconds 0.5)) - (set! (-> self racer stick-lock) #t) - (set-forward-vel (* 0.9 (-> self control unknown-float01))) - (set! (-> self racer turn-anim-targ) 0.0) - (set! (-> self racer turn-anim-targ) 0.0) - (target-racing-turn-anim) - (seek! (-> self control unknown-vector11 y) 6144.0 (* 3.0 (seconds-per-frame))) - (suspend) - ) - ) - (go target-racing-get-off-jump arg0) - ) - :post target-racing-post - ) + :exit + (-> target-racing-start + exit) + :code + (behavior ((arg0 handle)) + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *racer-mods*) + (let ((a0-2 (-> *hud-parts* bike-speed))) (if a0-2 (set! (-> a0-2 0 deactivate-when-hidden) #t))) + (let ((a0-4 (-> *hud-parts* bike-heat))) (if a0-4 (set! (-> a0-4 0 deactivate-when-hidden) #t))) + (when (not (ja-group? eichar-racer-turn-ja)) + (ja-channel-push! 4 (seconds 0.1)) + (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) + (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) + (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) + (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0))) + (let ((s5-1 (current-time))) + (until (time-elapsed? s5-1 (seconds 0.5)) + (set! (-> self racer stick-lock) #t) + (set-forward-vel (* 0.9 (-> self control unknown-float01))) + (set! (-> self racer turn-anim-targ) 0.0) + (set! (-> self racer turn-anim-targ) 0.0) + (target-racing-turn-anim) + (seek! (-> self control unknown-vector11 y) 6144.0 (* 3.0 (seconds-per-frame))) + (suspend))) + (go target-racing-get-off-jump arg0)) + :post target-racing-post) (defstate target-racing-get-off-jump (target) :event target-generic-event-handler - :exit (-> target-racing-start exit) - :code (behavior ((arg0 handle)) - (sound-play "zoomer-stop") - (set-time! (-> self state-time)) - (set! (-> self control transv quad) (the-as uint128 0)) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 quad) (-> self control trans quad)) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (set! (-> s4-1 quad) (-> self control trans quad)) - (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) - (let* ((s2-0 (handle->process arg0)) - (s3-0 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) - (the-as racer s2-0) - ) - ) - ) - (when s3-0 - (set! (-> s4-1 quad) (-> s3-0 root trans quad)) - (set-yaw-angle-clear-roll-pitch! (-> s3-0 root) (quaternion-y-angle (-> self control quat))) - (quaternion-copy! (-> self control unknown-quaternion03) (-> s3-0 root quat)) - (send-event s3-0 'trans (-> self racer bike-trans)) - (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s3-0 root quat)) - (set! (-> self racer bike-scale quad) (-> s3-0 root scale quad)) - (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))) - ) - ) - (set! (-> self control unknown-vector102 quad) (-> gp-1 quad)) - (set! (-> self control unknown-vector103 quad) (-> s4-1 quad)) - ) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-racer-get-off-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (handle->process arg0) 'draw) - (set-yaw-angle-clear-roll-pitch! - (-> self control) - (quaternion-y-angle (-> self control unknown-quaternion03)) - ) - (rot->dir-targ! (-> self control)) - (ja-post) - (vector<-cspace! gp-1 (joint-node eichar-lod0-jg main)) - (+! (-> gp-1 y) -5896.192) - (move-to-point! (-> self control) gp-1) - ) - (send-event *camera* 'ease-in) - (ja-channel-set! 0) - (go target-racing-get-off-hit-ground #f) - ) - :post (behavior () - (let* ((f0-2 (deg-diff (-> self racer front-rot) (-> *RACER-bank* default-front-blade))) - (f0-5 (if (< 0.0 f0-2) - (fmax 5461.3335 (* 4.0 f0-2)) - 54613.332 - ) - ) - ) - (seek! (-> self racer front-rotv) f0-5 (* 54613.332 (seconds-per-frame))) - ) - (set! (-> self racer front-rot) - (the float - (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48) - ) - ) - (when (and (< (fabs (deg-diff (-> *RACER-bank* default-front-blade) (-> self racer front-rot))) 1820.4445) - (= (-> self racer front-rotv) 5461.3335) - ) - (set! (-> self racer front-rotv) 0.0) - (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) - ) - (+! (-> self racer bottom-rot) (* 364088.88 (seconds-per-frame))) - (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) - (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f30-0 (fmax 0.0 (fmin 1.0 (* 0.004761905 (+ -150.0 (the float (- (current-time) (-> self state-time)))))))) - ) - (fmax 0.0 (fmin 1.0 (* 0.006666667 (+ -225.0 (the float (- (current-time) (-> self state-time))))))) - (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) - (set! (-> gp-0 y) - (lerp - (-> self control unknown-vector102 y) - (-> self control unknown-vector103 y) - (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))) - ) - ) - (move-to-point! (-> self control) gp-0) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion02) - (-> self control unknown-quaternion03) - f30-0 - ) - (set! (-> self control unknown-vector11 y) - (lerp (the-as float (-> self control unknown-uint20)) 6144.0 (fmin 1.0 (* 2.0 f30-0))) - ) - ) - (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) - (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) - (set! (-> self racer bike-scale quad) (-> self control scale quad)) - (hide-hud) - (target-no-move-post) - ) - ) + :exit + (-> target-racing-start + exit) + :code + (behavior ((arg0 handle)) + (sound-play "zoomer-stop") + (set-time! (-> self state-time)) + (set! (-> self control transv quad) (the-as uint128 0)) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 quad) (-> self control trans quad)) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (set! (-> s4-1 quad) (-> self control trans quad)) + (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (let* ((s2-0 (handle->process arg0)) + (s3-0 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) (the-as racer s2-0)))) + (when s3-0 + (set! (-> s4-1 quad) (-> s3-0 root trans quad)) + (set-yaw-angle-clear-roll-pitch! (-> s3-0 root) (quaternion-y-angle (-> self control quat))) + (quaternion-copy! (-> self control unknown-quaternion03) (-> s3-0 root quat)) + (send-event s3-0 'trans (-> self racer bike-trans)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s3-0 root quat)) + (set! (-> self racer bike-scale quad) (-> s3-0 root scale quad)) + (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))))) + (set! (-> self control unknown-vector102 quad) (-> gp-1 quad)) + (set! (-> self control unknown-vector103 quad) (-> s4-1 quad))) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-racer-get-off-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (handle->process arg0) 'draw) + (set-yaw-angle-clear-roll-pitch! (-> self control) (quaternion-y-angle (-> self control unknown-quaternion03))) + (rot->dir-targ! (-> self control)) + (ja-post) + (vector<-cspace! gp-1 (joint-node eichar-lod0-jg main)) + (+! (-> gp-1 y) -5896.192) + (move-to-point! (-> self control) gp-1)) + (send-event *camera* 'ease-in) + (ja-channel-set! 0) + (go target-racing-get-off-hit-ground #f)) + :post + (behavior () + (let* ((f0-2 (deg-diff (-> self racer front-rot) (-> *RACER-bank* default-front-blade))) + (f0-5 (if (< 0.0 f0-2) (fmax 5461.3335 (* 4.0 f0-2)) 54613.332))) + (seek! (-> self racer front-rotv) f0-5 (* 54613.332 (seconds-per-frame)))) + (set! (-> self racer front-rot) + (the float (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48))) + (when (and (< (fabs (deg-diff (-> *RACER-bank* default-front-blade) (-> self racer front-rot))) 1820.4445) + (= (-> self racer front-rotv) 5461.3335)) + (set! (-> self racer front-rotv) 0.0) + (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade))) + (+! (-> self racer bottom-rot) (* 364088.88 (seconds-per-frame))) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f30-0 (fmax 0.0 (fmin 1.0 (* 0.004761905 (+ -150.0 (the float (- (current-time) (-> self state-time))))))))) + (fmax 0.0 (fmin 1.0 (* 0.006666667 (+ -225.0 (the float (- (current-time) (-> self state-time))))))) + (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) + (set! (-> gp-0 y) + (lerp (-> self control unknown-vector102 y) + (-> self control unknown-vector103 y) + (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))))) + (move-to-point! (-> self control) gp-0) + (quaternion-slerp! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion02) + (-> self control unknown-quaternion03) + f30-0) + (set! (-> self control unknown-vector11 y) + (lerp (the-as float (-> self control unknown-uint20)) 6144.0 (fmin 1.0 (* 2.0 f30-0))))) + (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) + (set! (-> self racer bike-scale quad) (-> self control scale quad)) + (hide-hud) + (target-no-move-post))) (defstate target-racing-get-off-hit-ground (target) :event target-standard-event-handler - :enter (-> target-hit-ground enter) - :trans (behavior () - (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - ((-> target-hit-ground trans)) - ) - :code (behavior ((arg0 symbol)) - (ja-channel-set! 1) - (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe 42.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go target-stance) - ) - :post (behavior () - (hide-hud) - (target-post) - ) - ) + :enter + (-> target-hit-ground + enter) + :trans + (behavior () + (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + ((-> target-hit-ground trans))) + :code + (behavior ((arg0 symbol)) + (ja-channel-set! 1) + (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe 42.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go target-stance)) + :post + (behavior () + (hide-hud) + (target-post))) (defstate target-racing-grab (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - (-> self state name) - ) - (else - (case message - (('end-mode) - (go target-racing) - ) - (('clone-anim) - (go target-racing-clone-anim (process->handle (the-as process (-> block param 0)))) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - ) - ) - :enter (behavior () - (set! (-> self control unknown-surface00) *grab-mods*) - (set! (-> self neck flex-blend) 0.0) - (logior! (-> self state-flags) (state-flags invulnerable grabbed)) - (set! (-> self racer stick-off) #t) - ) - :exit (behavior () - (set! (-> self racer stick-off) #f) - (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) - (logclear! (-> self water flags) (water-flags wt16)) - ((-> target-racing-start exit)) - ) - :code (behavior () - (when (not (ja-group? eichar-racer-turn-ja)) - (ja-channel-push! 4 (seconds 0.1)) - (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) - (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) - (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) - (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0)) - ) - (loop - (target-racing-turn-anim) - (set-forward-vel 0.0) - (suspend) - ) - ) - :post target-racing-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) (-> self state name)) + (else + (case message + (('end-mode) (go target-racing)) + (('clone-anim) (go target-racing-clone-anim (process->handle (the-as process (-> block param 0))))) + (else (target-generic-event-handler proc argc message block)))))) + :enter + (behavior () + (set! (-> self control unknown-surface00) *grab-mods*) + (set! (-> self neck flex-blend) 0.0) + (logior! (-> self state-flags) (state-flags invulnerable grabbed)) + (set! (-> self racer stick-off) #t)) + :exit + (behavior () + (set! (-> self racer stick-off) #f) + (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) + (logclear! (-> self water flags) (water-flags wt16)) + ((-> target-racing-start exit))) + :code + (behavior () + (when (not (ja-group? eichar-racer-turn-ja)) + (ja-channel-push! 4 (seconds 0.1)) + (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) + (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) + (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) + (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0))) + (loop + (target-racing-turn-anim) + (set-forward-vel 0.0) + (suspend))) + :post target-racing-post) (defstate target-racing-clone-anim (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (= message 'trans) (= (-> block param 0) 'restore)) - (set! (-> self control unknown-uint20) (the-as uint #f)) - ) - ((-> target-racing-grab event) proc argc message block) - ) - :enter (-> target-clone-anim enter) - :exit (behavior () - (set! (-> self control unknown-vector11 y) (the-as float (-> self control unknown-uint20))) - (set! (-> self control unknown-vector12 y) (-> self control unknown-vector11 y)) - (send-event (ppointer->process (-> self sidekick)) 'matrix #f) - ((-> target-clone-anim exit)) - ((-> target-racing-start exit)) - (vector-reset! (-> self control transv)) - ) - :code (behavior ((arg0 handle)) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) - (set! (-> self control unknown-vector11 y) 0.0) - (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) - (clone-anim arg0 33 #t "") - (go target-racing) - ) - :post (behavior () - (racer-sounds) - (seek! (-> self racer heat) 0.0 (* (-> *RACER-bank* surface-heat-inc) (seconds-per-frame))) - (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) - (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) - (set! (-> self racer bike-scale quad) (-> self control scale quad)) - (target-no-ja-move-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (= message 'trans) (= (-> block param 0) 'restore)) (set! (-> self control unknown-uint20) (the-as uint #f))) + ((-> target-racing-grab event) proc argc message block)) + :enter + (-> target-clone-anim + enter) + :exit + (behavior () + (set! (-> self control unknown-vector11 y) (the-as float (-> self control unknown-uint20))) + (set! (-> self control unknown-vector12 y) (-> self control unknown-vector11 y)) + (send-event (ppointer->process (-> self sidekick)) 'matrix #f) + ((-> target-clone-anim exit)) + ((-> target-racing-start exit)) + (vector-reset! (-> self control transv))) + :code + (behavior ((arg0 handle)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (set! (-> self control unknown-vector11 y) 0.0) + (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) + (clone-anim arg0 33 #t "") + (go target-racing)) + :post + (behavior () + (racer-sounds) + (seek! (-> self racer heat) 0.0 (* (-> *RACER-bank* surface-heat-inc) (seconds-per-frame))) + (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) + (set! (-> self racer bike-scale quad) (-> self control scale quad)) + (target-no-ja-move-post))) diff --git a/goal_src/jak1/levels/racer_common/racer.gc b/goal_src/jak1/levels/racer_common/racer.gc index 6ab66e7389..5a550101ad 100644 --- a/goal_src/jak1/levels/racer_common/racer.gc +++ b/goal_src/jak1/levels/racer_common/racer.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "levels/common/blocking-plane.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/entity/ambient.gc") @@ -14,194 +13,140 @@ (define-extern *allow-zoomer-anywhere* symbol) (define-extern blocking-plane-destroy (function none)) + (define-extern blocking-plane-spawn (function curve-control none :behavior process)) ;; DECOMP BEGINS -(if (not (nmember "racerp" *kernel-packages*)) - (set! *kernel-packages* (cons "racerp" *kernel-packages*)) - ) +(if (not (nmember "racerp" *kernel-packages*)) (set! *kernel-packages* (cons "racerp" *kernel-packages*))) (deftype racer (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer target) :overlay-at parent) - (extra-trans vector :inline) - (condition int32) - (cell handle) - (path-data path-control 2) - (path-target curve-control :overlay-at (-> path-data 0)) - (path-racer path-control :overlay-at (-> path-data 1)) - (auto-get-off symbol) - (shadow-backup shadow-geo) - ) + ((root collide-shape-moving :override) + (parent-override (pointer target) :overlay-at parent) + (extra-trans vector :inline) + (condition int32) + (cell handle) + (path-data path-control 2) + (path-target curve-control :overlay-at (-> path-data 0)) + (path-racer path-control :overlay-at (-> path-data 1)) + (auto-get-off symbol) + (shadow-backup shadow-geo)) (:state-methods - wait-for-start - idle - (pickup (state collectable)) - wait-for-return - ) - ) - + wait-for-start + idle + (pickup (state collectable)) + wait-for-return)) (defmethod relocate ((this racer) (arg0 int)) (countdown (v1-0 2) - (if (-> this path-data v1-0) - (&+! (-> this path-data v1-0) arg0) - ) - ) - (the-as racer ((method-of-type process-drawable relocate) this arg0)) - ) + (if (-> this path-data v1-0) (&+! (-> this path-data v1-0) arg0))) + (the-as racer ((method-of-type process-drawable relocate) this arg0))) -(defskelgroup *racer-sg* racer racer-geo-jg racer-racer-idle-ja - ((racer-geo-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.5) - :shadow racer-shadow-mg - :sort 1 - ) +(defskelgroup *racer-sg* + racer + racer-geo-jg + racer-racer-idle-ja + ((racer-geo-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.5) + :shadow racer-shadow-mg + :sort 1) -(defskelgroup *racer-explode-sg* racer racer-explode-lod0-jg racer-explode-idle-ja - ((racer-explode-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.5) - ) +(defskelgroup *racer-explode-sg* + racer + racer-explode-lod0-jg + racer-explode-idle-ja + ((racer-explode-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.5)) (define *racer-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w 81920.0) - :top-plane (new 'static 'plane :y 1.0 :w 2048.0) - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags disable-fade shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 81920.0) + :top-plane + (new 'static 'plane :y 1.0 :w 2048.0)))) (defbehavior racer-effect racer () (when (!= (-> self condition) 4) (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - ) + (update! (-> self sound))) 0 - (none) - ) + (none)) (defstate wait-for-start (racer) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-1 structure)) - (case message - (('trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - (('notify) - (set! v0-1 #t) - (set! (-> self auto-get-off) (the-as symbol v0-1)) - v0-1 - ) - (('shadow) - (cond - ((-> block param 0) - (set! v0-1 (-> self shadow-backup)) - (set! (-> self draw shadow) (the-as shadow-geo v0-1)) - v0-1 - ) - (else - (set! (-> self draw shadow) #f) - #f - ) - ) - ) - ) - ) - :exit (behavior () - (set! (-> self root root-prim prim-core action) (collide-action)) - (set! (-> self root root-prim prim-core offense) (collide-offense no-offense)) - 0 - ) - :code (behavior () - (label cfg-0) - (case (-> self condition) - ((2) - (let ((gp-0 (get-task-control (-> self entity extra perm task)))) - (if (and *cheat-mode* (cpad-hold? 0 l3)) - (goto cfg-77) - ) - (first-any gp-0 #t) - (case (current-status gp-0) - (((task-status need-reward-speech)) - (ja-channel-set! 1) - (ja :group! racer-racer-idle-ja) - (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - (ja-post) - ) - (((task-status invalid)) - (goto cfg-77) - ) - ) - ) - ) - ((6) - (if (or (task-closed? (game-task village2-levitator) (task-status need-hint)) - (and *cheat-mode* (cpad-hold? 0 l3)) - (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - ) - (goto cfg-77) - ) - ) - ((5) - (cond - ((and *cheat-mode* (cpad-hold? 0 l3)) - (goto cfg-77) - ) - ((>= (-> *game-info* fuel) 72.0) - (goto cfg-77) - ) - ) - ) - ((3) - (cond - ((and (task-complete? *game-info* (-> self entity extra perm task)) (not (handle->process (-> self cell)))) - (when (and (-> self auto-get-off) (send-event *target* 'end-mode)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-1 structure)) + (case message + (('trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans))) + (('notify) (set! v0-1 #t) (set! (-> self auto-get-off) (the-as symbol v0-1)) v0-1) + (('shadow) + (cond + ((-> block param 0) (set! v0-1 (-> self shadow-backup)) (set! (-> self draw shadow) (the-as shadow-geo v0-1)) v0-1) + (else (set! (-> self draw shadow) #f) #f))))) + :exit + (behavior () + (set! (-> self root root-prim prim-core action) (collide-action)) + (set! (-> self root root-prim prim-core offense) (collide-offense no-offense)) + 0) + :code + (behavior () + (label cfg-0) + (case (-> self condition) + ((2) + (let ((gp-0 (get-task-control (-> self entity extra perm task)))) + (if (and *cheat-mode* (cpad-hold? 0 l3)) (goto cfg-77)) + (first-any gp-0 #t) + (case (current-status gp-0) + (((task-status need-reward-speech)) + (ja-channel-set! 1) + (ja :group! racer-racer-idle-ja) + (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) + (ja-post)) + (((task-status invalid)) (goto cfg-77))))) + ((6) + (if (or (task-closed? (game-task village2-levitator) (task-status need-hint)) + (and *cheat-mode* (cpad-hold? 0 l3)) + (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) + (goto cfg-77))) + ((5) + (cond + ((and *cheat-mode* (cpad-hold? 0 l3)) (goto cfg-77)) + ((>= (-> *game-info* fuel) 72.0) (goto cfg-77)))) + ((3) + (cond + ((and (task-complete? *game-info* (-> self entity extra perm task)) (not (handle->process (-> self cell)))) + (when (and (-> self auto-get-off) (send-event *target* 'end-mode)) + (set! (-> self auto-get-off) #f) + (go-virtual pickup (the-as (state collectable) (method-of-object self idle)))) (set! (-> self auto-get-off) #f) - (go-virtual pickup (the-as (state collectable) (method-of-object self idle))) - ) - (set! (-> self auto-get-off) #f) - (goto cfg-77) - ) - ((not (handle->process (-> self cell))) - (set! (-> self cell) - (ppointer->handle - (birth-pickup-at-point - (vector+! (new 'stack-no-clear 'vector) (-> self root trans) (new 'static 'vector :y 8192.0 :w 1.0)) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (-> self fact) - ) - ) - ) - ) - ) - ) - ((4) - (if (and *target* (not (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) - (goto cfg-77) - ) - ) - (else - (goto cfg-77) - ) - ) - (racer-effect) - (suspend) - (b! #t cfg-0 :delay (nop!)) - (label cfg-77) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (goto cfg-77)) + ((not (handle->process (-> self cell))) + (set! (-> self cell) + (ppointer->handle (birth-pickup-at-point (vector+! (new 'stack-no-clear 'vector) (-> self root trans) (new 'static 'vector :y 8192.0 :w 1.0)) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (-> self fact))))))) + ((4) + (if (and *target* (not (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) (goto cfg-77))) + (else (goto cfg-77))) + (racer-effect) + (suspend) + (b! #t cfg-0 :delay (nop!)) + (label cfg-77) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) (go-virtual wait-for-return) - (go-virtual idle) - ) - ) - ) + (go-virtual idle)))) (defstate idle (racer) :virtual #t @@ -270,71 +215,44 @@ (defstate pickup (racer) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('draw) - (ja-channel-set! 1) - (ja :group! racer-racer-idle-ja) - (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - (transform-post) - ) - (('trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - (('touch 'attack) - #f - ) - (('shadow) - (cond - ((-> block param 0) - (let ((v0-1 (the-as object (-> self shadow-backup)))) - (set! (-> self draw shadow) (the-as shadow-geo v0-1)) - v0-1 - ) - ) - (else - (set! (-> self draw shadow) #f) - #f - ) - ) - ) - ) - ) - :enter (behavior ((arg0 (state collectable))) - ((the-as (function none :behavior racer) (-> arg0 enter))) - ) - :code (behavior ((arg0 (state collectable))) - (ja-channel-set! 0) - (ja-post) - (while (zero? (ja-group-size)) - (when (or (not *target*) (< 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (when (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (case (-> (level-get-target-inside *level*) name) - (('misty) - (close-specific-task! (game-task misty-bike) (task-status need-reminder-a)) - (level-hint-spawn (text-id misty-bike-hint) "sksp0062" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - ) - (go arg0) - ) - (racer-effect) - (suspend) - ) - (while (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (racer-effect) - (suspend) - ) - (let ((s5-0 (current-time))) - (until (time-elapsed? s5-0 (seconds 1)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('draw) + (ja-channel-set! 1) + (ja :group! racer-racer-idle-ja) + (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) + (transform-post)) + (('trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans))) + (('touch 'attack) #f) + (('shadow) + (cond + ((-> block param 0) + (let ((v0-1 (the-as object (-> self shadow-backup)))) (set! (-> self draw shadow) (the-as shadow-geo v0-1)) v0-1)) + (else (set! (-> self draw shadow) #f) #f))))) + :enter + (behavior ((arg0 (state collectable))) + ((the-as (function none :behavior racer) (-> arg0 enter)))) + :code + (behavior ((arg0 (state collectable))) + (ja-channel-set! 0) + (ja-post) + (while (zero? (ja-group-size)) + (when (or (not *target*) (< 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (when (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (case (-> (level-get-target-inside *level*) name) + (('misty) + (close-specific-task! (game-task misty-bike) (task-status need-reminder-a)) + (level-hint-spawn (text-id misty-bike-hint) "sksp0062" (the-as entity #f) *entity-pool* (game-task none))))) + (go arg0)) (racer-effect) - (suspend) - ) - ) - (go arg0) - ) - ) + (suspend)) + (while (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (racer-effect) + (suspend)) + (let ((s5-0 (current-time))) (until (time-elapsed? s5-0 (seconds 1)) (racer-effect) (suspend))) + (go arg0))) (defstate wait-for-return (racer) :virtual #t @@ -388,19 +306,15 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 6144.0) - (set-root-prim! s4-0 s3-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set-yaw-angle-clear-roll-pitch! (-> this root) (res-lump-float arg0 'rotoffset)) (initialize-skeleton this *racer-sg* '()) @@ -409,21 +323,14 @@ (let ((v1-23 (-> this node-list data))) (set! (-> v1-23 0 param0) cspace<-transformq+trans!) (set! (-> v1-23 0 param1) (the-as basic (-> this root trans))) - (set! (-> v1-23 0 param2) (the-as basic (-> this extra-trans))) - ) + (set! (-> v1-23 0 param2) (the-as basic (-> this extra-trans)))) (set! (-> this condition) (res-lump-value arg0 'index int)) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 115) this)) (dotimes (s5-1 2) (let ((v1-32 (new 'process 'curve-control this 'path (the float (+ s5-1 1))))) (set! (-> this path-data s5-1) v1-32) - (if v1-32 - (logior! (-> v1-32 flags) (path-control-flag display draw-line draw-point draw-text)) - ) - ) - ) + (if v1-32 (logior! (-> v1-32 flags) (path-control-flag display draw-line draw-point draw-text))))) (set! (-> this path) (-> this path-target)) (set-vector! (-> this extra-trans) 0.0 6144.0 0.0 1.0) (set! (-> this auto-get-off) #f) @@ -446,5 +353,4 @@ (new 'process 'ambient-sound (static-sound-spec "zoom-teleport" :fo-max 30) (-> this root trans)) ) (go (method-of-object this wait-for-start)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/racer_common/target-racer-h.gc b/goal_src/jak1/levels/racer_common/target-racer-h.gc index c9ea1d3dd4..6551aabcf4 100644 --- a/goal_src/jak1/levels/racer_common/target-racer-h.gc +++ b/goal_src/jak1/levels/racer_common/target-racer-h.gc @@ -1,174 +1,170 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "engine/math/vector-h.gc") (require "engine/collide/surface-h.gc") (require "engine/data/art-h.gc") - -;; name: target-racer-h-FIC-LAV-MIS-OGR-ROL.gc -;; name in dgo: target-racer-h -;; dgos: FIC, LAV, MIS, OGR, ROL - (define-extern target-racing-center-anim (function none :behavior target)) + (define-extern racer-buzz (function float none :behavior target)) + (define-extern target-racing-post (function none :behavior target)) + (define-extern target-racing-land-anim (function symbol none :behavior target)) + (define-extern target-racing-turn-anim (function none :behavior target)) + (define-extern racer-calc-gravity (function vector :behavior target)) + (define-extern target-racing-jump-anim (function basic time-frame none :behavior target)) + (define-extern racer-sounds (function object :behavior target)) + (define-extern *racer-air-mods* surface) ;; DECOMP BEGINS (deftype racer-info (basic) - ((entity entity-actor) - (bike-trans vector :inline) - (bike-quat vector :inline) - (bike-scale vector :inline) - (mod-x float) - (rot vector :inline) - (rot-old vector :inline) - (rotv vector :inline) - (lean-rotx degrees) - (change-roty degrees) - (change-roty-old degrees) - (quat vector :inline) - (surface-y meters) - (surface-vy meters) - (surface-quat vector :inline) - (surface-quat-smooth vector :inline) - (cushion-base meters) - (cushion-offset meters) - (cushion-bob meters) - (cushion-bob-old meters) - (cushion-smush smush-control :inline) - (shock-offset meters) - (shock-offsetv meters) - (shock-rotx meters) - (hill-value float) - (hill-ground-value float) - (hill-offset meters) - (hill-rotx degrees) - (hill-boost meters) - (bob-timer float) - (bob-meta-timer float) - (bob-meta-meta-timer float) - (bob-mult-rot float) - (bob-mult-trans float) - (bob-period float) - (bob-meta-time time-frame) - (bob-hit-ground-time time-frame) - (cur-rotx degrees) - (targ-rotx degrees) - (speed-rotx float) - (mult-rotx degrees) - (front-blade joint-mod) - (front-rot degrees) - (front-rotv degrees) - (bottom-blade joint-mod) - (bottom-rot degrees) - (front joint-mod) - (front-turn degrees) - (tail joint-mod) - (tail-tilt degrees) - (transv-max meters) - (slide-down-time time-frame 2) - (slide-enter-time time-frame) - (slide-mode int32) - (slide-amp float) - (slide-grip-mult float) - (slide-shift-x float) - (slide-interp float) - (heat float) - (boost-time time-frame) - (boost-duration time-frame) - (boost-curve float) - (boost-level float) - (boost-target float) - (boost-output float) - (hop? symbol) - (hop-start-y float) - (bounce int32) - (bounce-hit float) - (engine-sound-id sound-id) - (boost-sound-id sound-id) - (engine-sound-pitch float) - (turn-anim-targ float) - (turn-anim-frame float) - (turn-anim-vel float) - (tail-anim-vel float) - (tail-anim-frame float) - (rudd-anim-vel float) - (rudd-anim-frame float) - (racing-time time-frame) - (stick-lock symbol) - (stick-off symbol) - (heavy symbol) - (unstuck-time time-frame) - (stuck-count int32) - (scrape-sound-id sound-id) - (heat-sound-time time-frame) - ) - ) - + ((entity entity-actor) + (bike-trans vector :inline) + (bike-quat vector :inline) + (bike-scale vector :inline) + (mod-x float) + (rot vector :inline) + (rot-old vector :inline) + (rotv vector :inline) + (lean-rotx degrees) + (change-roty degrees) + (change-roty-old degrees) + (quat vector :inline) + (surface-y meters) + (surface-vy meters) + (surface-quat vector :inline) + (surface-quat-smooth vector :inline) + (cushion-base meters) + (cushion-offset meters) + (cushion-bob meters) + (cushion-bob-old meters) + (cushion-smush smush-control :inline) + (shock-offset meters) + (shock-offsetv meters) + (shock-rotx meters) + (hill-value float) + (hill-ground-value float) + (hill-offset meters) + (hill-rotx degrees) + (hill-boost meters) + (bob-timer float) + (bob-meta-timer float) + (bob-meta-meta-timer float) + (bob-mult-rot float) + (bob-mult-trans float) + (bob-period float) + (bob-meta-time time-frame) + (bob-hit-ground-time time-frame) + (cur-rotx degrees) + (targ-rotx degrees) + (speed-rotx float) + (mult-rotx degrees) + (front-blade joint-mod) + (front-rot degrees) + (front-rotv degrees) + (bottom-blade joint-mod) + (bottom-rot degrees) + (front joint-mod) + (front-turn degrees) + (tail joint-mod) + (tail-tilt degrees) + (transv-max meters) + (slide-down-time time-frame 2) + (slide-enter-time time-frame) + (slide-mode int32) + (slide-amp float) + (slide-grip-mult float) + (slide-shift-x float) + (slide-interp float) + (heat float) + (boost-time time-frame) + (boost-duration time-frame) + (boost-curve float) + (boost-level float) + (boost-target float) + (boost-output float) + (hop? symbol) + (hop-start-y float) + (bounce int32) + (bounce-hit float) + (engine-sound-id sound-id) + (boost-sound-id sound-id) + (engine-sound-pitch float) + (turn-anim-targ float) + (turn-anim-frame float) + (turn-anim-vel float) + (tail-anim-vel float) + (tail-anim-frame float) + (rudd-anim-vel float) + (rudd-anim-frame float) + (racing-time time-frame) + (stick-lock symbol) + (stick-off symbol) + (heavy symbol) + (unstuck-time time-frame) + (stuck-count int32) + (scrape-sound-id sound-id) + (heat-sound-time time-frame))) (deftype racer-bank (basic) - ((slide-hold-time seconds) - (heat-max float) - (hotcoals-heat-inc float) - (lava-heat-inc float) - (lava-air-heat-inc float) - (surface-heat-inc float) - (jump-heat-inc float) - (lavatube-hotcoals-heat-inc float) - (lavatube-lava-heat-inc float) - (lavatube-lava-air-heat-inc float) - (lavatube-surface-heat-inc float) - (lavatube-jump-heat-inc float) - (boost-curve-max meters) - (boost-level-max meters) - (boost-level-inc meters) - (boost-duration seconds) - (default-front-blade degrees) - (yellow-projectile-speed meters) - ) - ) - + ((slide-hold-time seconds) + (heat-max float) + (hotcoals-heat-inc float) + (lava-heat-inc float) + (lava-air-heat-inc float) + (surface-heat-inc float) + (jump-heat-inc float) + (lavatube-hotcoals-heat-inc float) + (lavatube-lava-heat-inc float) + (lavatube-lava-air-heat-inc float) + (lavatube-surface-heat-inc float) + (lavatube-jump-heat-inc float) + (boost-curve-max meters) + (boost-level-max meters) + (boost-level-inc meters) + (boost-duration seconds) + (default-front-blade degrees) + (yellow-projectile-speed meters))) -(define *RACER-bank* (new 'static 'racer-bank - :slide-hold-time (seconds 0.2) - :heat-max 100.0 - :hotcoals-heat-inc 3.0 - :lava-heat-inc 20.0 - :lava-air-heat-inc 4.0 - :surface-heat-inc 1.0 - :jump-heat-inc 2.0 - :lavatube-hotcoals-heat-inc 2.0 - :lavatube-lava-heat-inc 4.5 - :lavatube-lava-air-heat-inc 4.0 - :lavatube-surface-heat-inc 1.0 - :lavatube-jump-heat-inc 10.0 - :boost-curve-max (meters 5) - :boost-level-max (meters 12.5) - :boost-level-inc (meters 2) - :boost-duration (seconds 2.5) - :yellow-projectile-speed (meters 80) - ) - ) +(define *RACER-bank* + (new 'static + 'racer-bank + :slide-hold-time (seconds 0.2) + :heat-max 100.0 + :hotcoals-heat-inc 3.0 + :lava-heat-inc 20.0 + :lava-air-heat-inc 4.0 + :surface-heat-inc 1.0 + :jump-heat-inc 2.0 + :lavatube-hotcoals-heat-inc 2.0 + :lavatube-lava-heat-inc 4.5 + :lavatube-lava-air-heat-inc 4.0 + :lavatube-surface-heat-inc 1.0 + :lavatube-jump-heat-inc 10.0 + :boost-curve-max (meters 5) + :boost-level-max (meters 12.5) + :boost-level-inc (meters 2) + :boost-duration (seconds 2.5) + :yellow-projectile-speed (meters 80))) ;; og:preserve-this PAL patch here -(defskelgroup *balloon-sg* balloon balloon-lod0-jg balloon-idle-ja - ((balloon-lod0-mg (meters 20)) (balloon-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0.3 0 6.3) - ) +(defskelgroup *balloon-sg* + balloon + balloon-lod0-jg + balloon-idle-ja + ((balloon-lod0-mg (meters 20)) (balloon-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0.3 0 6.3)) ;; added for convenience (#when PC_PORT -(defun zoomer-get-heat () - (-> *target* racer heat)) -(defun zoomer-get-heat-max () - (-> *RACER-bank* heat-max)) -) - + (defun zoomer-get-heat () + (-> *target* racer heat)) + (defun zoomer-get-heat-max () + (-> *RACER-bank* heat-max))) diff --git a/goal_src/jak1/levels/racer_common/target-racer.gc b/goal_src/jak1/levels/racer_common/target-racer.gc index 2864f88be3..47649762c6 100644 --- a/goal_src/jak1/levels/racer_common/target-racer.gc +++ b/goal_src/jak1/levels/racer_common/target-racer.gc @@ -1,665 +1,429 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "levels/racer_common/target-racer-h.gc") (require "engine/game/projectiles-h.gc") (require "levels/racer_common/racer.gc") (require "engine/target/logic-target.gc") (require "engine/game/effect-control.gc") -;; name: target-racer-FIC-LAV-MIS-OGR-ROL.gc -;; name in dgo: target-racer -;; dgos: FIC, LAV, MIS, OGR, ROL - ;; DECOMP BEGINS -(define *racer-mods* (new 'static 'surface - :name 'racer - :turnv 131072.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 122880.0 - :target-speed 163840.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :flags (surface-flags allow-look-around) - ) - ) +(define *racer-mods* + (new 'static + 'surface + :name 'racer + :turnv 131072.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 122880.0 + :target-speed 163840.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags (surface-flags allow-look-around))) -(define *racer-air-mods* (new 'static 'surface - :name 'racer - :turnv 131072.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 122880.0 - :target-speed 163840.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-look-around jump) - ) - ) +(define *racer-air-mods* + (new 'static + 'surface + :name 'racer + :turnv 131072.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 122880.0 + :target-speed 163840.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-look-around jump))) -(let ((v1-2 (new 'static 'surface - :name '*race-track-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.0 - :target-speed 1.0 - :seek0 153600.0 - :seek90 153600.0 - :seek180 256000.0 - :fric 0.98 - :slope-down-factor 10240.0 - :slope-slip-angle 8192.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) - ) +(let ((v1-2 (new 'static + 'surface + :name '*race-track-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 153600.0 + :seek90 153600.0 + :seek180 256000.0 + :fric 0.98 + :slope-down-factor 10240.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0))) (set! *race-track-surface* v1-2) (set! (-> v1-2 touch-hook) nothing) - (set! (-> v1-2 active-hook) nothing) - ) + (set! (-> v1-2 active-hook) nothing)) (defbehavior racer-on-ground? racer () - (logtest? (-> self root status) (cshape-moving-flags onsurf)) - ) + (logtest? (-> self root status) (cshape-moving-flags onsurf))) (defbehavior racer-calc-gravity target () (let ((f0-8 (cond - ((or (-> self racer stick-lock) (-> self racer heavy)) - 409600.0 - ) + ((or (-> self racer stick-lock) (-> self racer heavy)) 409600.0) ((= (-> self next-state name) 'target-racing-bounce) - (lerp-scale 81920.0 163840.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)) - ) + (lerp-scale 81920.0 163840.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max))) ((or (-> self racer hop?) (= (-> self next-state name) 'target-racing-bounce)) - (lerp-scale 81920.0 163840.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) + (lerp-scale 81920.0 163840.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) ((time-elapsed? (-> self control unknown-dword11) (seconds 0.6)) - (lerp-scale 81920.0 122880.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) - (else - (lerp-scale 245760.0 81920.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)) - ) - ) - ) - ) + (lerp-scale 81920.0 122880.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) + (else (lerp-scale 245760.0 81920.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)))))) (set! (-> self control dynam gravity-max) (* 8.0 f0-8)) - (set! (-> self control dynam gravity-length) f0-8) - ) - (vector-float*! - (-> self control dynam gravity) - (-> self control dynam gravity-normal) - (the-as float (-> self control dynam gravity-length)) - ) - ) + (set! (-> self control dynam gravity-length) f0-8)) + (vector-float*! (-> self control dynam gravity) + (-> self control dynam gravity-normal) + (the-as float (-> self control dynam gravity-length)))) (defbehavior racer-service-slide target () (let ((v1-1 (-> self racer slide-mode))) (cond ((zero? v1-1) - (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) - (set! (-> self racer slide-mode) -1) - ) - ) + (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) (set! (-> self racer slide-mode) -1))) ((= v1-1 1) - (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) - (set! (-> self racer slide-mode) -1) - ) - ) - ) - ) + (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) (set! (-> self racer slide-mode) -1))))) (when (>= (-> self racer slide-mode) 0) (cond ((< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) (set! (-> self racer slide-mode) 0) - 0 - ) + 0) ((< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) - (set! (-> self racer slide-mode) 1) - ) - ) - ) + (set! (-> self racer slide-mode) 1)))) (seek! (-> self racer slide-amp) 0.0 (* 0.3 (seconds-per-frame))) - (if (= (-> self racer slide-amp) 0.0) - (set! (-> self racer slide-mode) -1) - ) + (if (= (-> self racer slide-amp) 0.0) (set! (-> self racer slide-mode) -1)) 0 - (none) - ) + (none)) (defbehavior racer-xz target ((arg0 float) (arg1 float)) (set! (-> self racer slide-shift-x) arg1) (seek! (-> self racer slide-interp) 0.0 (seconds-per-frame)) - (let ((f30-1 - (if (or (< (* arg1 arg0) 0.0) (not (racer-on-ground?))) - 1.0 - (+ 1.0 (* (fabs arg1) (lerp-scale 0.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) - ) - ) - (f28-1 - (lerp-scale 32768.0 20024.889 (-> self control unknown-float01) 0.0 (* 0.5 (-> self racer transv-max))) - ) - (f0-18 - (lerp-scale 91022.22 236657.78 (-> self control unknown-float01) 0.0 (* 0.125 (-> self racer transv-max))) - ) - ) - (seek! (-> self racer rotv y) (* arg0 f30-1 (- f28-1)) (* f0-18 (seconds-per-frame))) - ) + (let ((f30-1 (if (or (< (* arg1 arg0) 0.0) (not (racer-on-ground?))) + 1.0 + (+ 1.0 (* (fabs arg1) (lerp-scale 0.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))))) + (f28-1 (lerp-scale 32768.0 20024.889 (-> self control unknown-float01) 0.0 (* 0.5 (-> self racer transv-max)))) + (f0-18 (lerp-scale 91022.22 236657.78 (-> self control unknown-float01) 0.0 (* 0.125 (-> self racer transv-max))))) + (seek! (-> self racer rotv y) (* arg0 f30-1 (- f28-1)) (* f0-18 (seconds-per-frame)))) (set! (-> self racer rotv y) - (* (-> self racer rotv y) - (lerp-scale 0.99 0.9 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) - ) + (* (-> self racer rotv y) (lerp-scale 0.99 0.9 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) (let ((f30-3 (vector-y-angle (-> self control unknown-vector00))) - (s5-1 (racer-on-ground?)) - ) + (s5-1 (racer-on-ground?))) (cond - ((= arg1 0.0) - (set! (-> self racer slide-grip-mult) 1.0) - ) - (s5-1 - (seek! (-> self racer slide-grip-mult) 1.0 (seconds-per-frame)) - ) - ) + ((= arg1 0.0) (set! (-> self racer slide-grip-mult) 1.0)) + (s5-1 (seek! (-> self racer slide-grip-mult) 1.0 (seconds-per-frame)))) (let ((f30-4 (* (deg-diff f30-3 0.0) (-> self racer slide-grip-mult)))) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - (-> self control transv) - (meters 0.000061035156) - (new 'static 'rgba :r #xff :a #x80) - ) - (if (and (< 409.6 (vector-xz-length (-> self control unknown-vector00))) - s5-1 - (= (-> self next-state name) 'target-racing) - ) - (vector-rotate-y! - (-> self control unknown-vector00) - (-> self control unknown-vector00) - (fmax (fmin f30-4 (* 10922.667 (seconds-per-frame))) (* -10922.667 (seconds-per-frame))) - ) - ) - ) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + (-> self control transv) + (meters 0.000061035156) + (new 'static 'rgba :r #xff :a #x80)) + (if (and (< 409.6 (vector-xz-length (-> self control unknown-vector00))) s5-1 (= (-> self next-state name) 'target-racing)) + (vector-rotate-y! (-> self control unknown-vector00) + (-> self control unknown-vector00) + (fmax (fmin f30-4 (* 10922.667 (seconds-per-frame))) (* -10922.667 (seconds-per-frame))))))) (let ((gp-1 (new-stack-vector0))) (vector-matrix*! gp-1 (-> self control unknown-vector00) (-> self control unknown-matrix01)) (set! (-> gp-1 y) 0.0) (vector-float*! gp-1 gp-1 0.5) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - gp-1 - (meters 0.00024414062) - (new 'static 'rgba :g #xff :b #xff :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + gp-1 + (meters 0.00024414062) + (new 'static 'rgba :g #xff :b #xff :a #x80)) (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - gp-1 - 819.2 - "ltransv" - (new 'static 'rgba :g #xff :b #xff :a #x80) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + gp-1 + 819.2 + "ltransv" + (new 'static 'rgba :g #xff :b #xff :a #x80)) (vector-matrix*! gp-1 (new 'static 'vector :z 40960.0 :w 1.0) (-> 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-no-zbuf) - gp-1 - 819.2 - "nose" - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + gp-1 + 819.2 + "nose" + (new 'static 'rgba :r #xff :g #xff :a #x80))) 0 - (none) - ) + (none)) (defbehavior racer-thrust target ((arg0 basic) (arg1 float)) - (let ((f0-0 - (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) x) - (not (-> self racer stick-lock)) - (not (-> self racer stick-off)) - ) - 1.0 - 0.0 - ) - ) - ) + (let ((f0-0 (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) x) + (not (-> self racer stick-lock)) + (not (-> self racer stick-off))) + 1.0 + 0.0))) (when (< 0.0 f0-0) - (let ((f1-4 - (* f0-0 - (+ (-> self control unknown-surface01 target-speed) (-> self racer boost-output) (-> self racer hill-boost)) - ) - ) - ) - (+! (-> self control unknown-vector00 z) (* f1-4 (seconds-per-frame))) - ) - ) - (seek! - (-> self racer front-rotv) - (+ 65536.0 (* 364088.88 (+ f0-0 (* 0.1 arg1)))) - (* 364088.88 (seconds-per-frame)) - ) - ) + (let ((f1-4 (* f0-0 (+ (-> self control unknown-surface01 target-speed) (-> self racer boost-output) (-> self racer hill-boost))))) + (+! (-> self control unknown-vector00 z) (* f1-4 (seconds-per-frame))))) + (seek! (-> self racer front-rotv) (+ 65536.0 (* 364088.88 (+ f0-0 (* 0.1 arg1)))) (* 364088.88 (seconds-per-frame)))) (set! (-> self racer front-rot) - (the float - (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48) - ) - ) + (the float (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48))) (let* ((f1-12 (-> self control unknown-surface01 fric)) - (f0-13 (- 1.0 (* (- 1.0 f1-12) (-> *display* time-adjust-ratio)))) - ) + (f0-13 (- 1.0 (* (- 1.0 f1-12) (-> *display* time-adjust-ratio))))) (set! f0-13 (cond ((and (not (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0))) - (cpad-hold? (-> self control unknown-cpad-info00 number) square) - ) + (cpad-hold? (-> self control unknown-cpad-info00 number) square)) (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) x) (not (-> self racer stick-lock)) - (not (-> self racer stick-off)) - ) - ;; og:preserve-this changed for high fps - (* (- 1.0 (* 0.0125 DISPLAY_FPS_RATIO)) f0-13) - (* (- 0.5 (* 0.00625 DISPLAY_FPS_RATIO)) (+ 1.0 f0-13)) - ) - ) + (not (-> self racer stick-off))) + ;; og:preserve-this changed for high fps + (* (- 1.0 (* 0.0125 DISPLAY_FPS_RATIO)) f0-13) + (* (- 0.5 (* 0.00625 DISPLAY_FPS_RATIO)) (+ 1.0 f0-13)))) (else - (cond - ((and (cpad-hold? (-> self control unknown-cpad-info00 number) x) - (not (-> self racer stick-lock)) - (not (-> self racer stick-off)) - ) - ) - (else - (set! f0-13 (* 0.5 (+ 1.0 f0-13))) - ) - ) - f0-13 - ) - ) - ) + (cond + ((and (cpad-hold? (-> self control unknown-cpad-info00 number) x) + (not (-> self racer stick-lock)) + (not (-> self racer stick-off)))) + (else (set! f0-13 (* 0.5 (+ 1.0 f0-13))))) + f0-13))) (set! (-> self control unknown-vector00 x) (* (-> self control unknown-vector00 x) f0-13)) - (set! (-> self control unknown-vector00 z) (* (-> self control unknown-vector00 z) f0-13)) - ) + (set! (-> self control unknown-vector00 z) (* (-> self control unknown-vector00 z) f0-13))) (let ((f30-0 (-> self racer transv-max))) (if (>= (vector-xz-length (-> self control unknown-vector00)) f30-0) - (vector-xz-normalize! (-> self control unknown-vector00) f30-0) - ) - ) + (vector-xz-normalize! (-> self control unknown-vector00) f30-0))) (+! (-> self racer bottom-rot) - (* (+ 364088.88 (* 0.32 (fabs (-> self control unknown-vector00 y)))) (seconds-per-frame)) - ) + (* (+ 364088.88 (* 0.32 (fabs (-> self control unknown-vector00 y)))) (seconds-per-frame))) 0 - (none) - ) + (none)) (defbehavior racer-cushion target ((arg0 float)) (let ((f30-0 (-> self racer bob-period))) (let ((f28-0 1.0)) (seek! (-> self racer bob-meta-timer) (-> self racer bob-meta-meta-timer) (* 4.0 (seconds-per-frame))) (let* ((f0-8 (sin (/ (* 65536.0 (-> self racer bob-timer)) f30-0))) - (f0-9 (* 1228.8 (-> self racer bob-mult-trans) f28-0 f0-8)) - ) + (f0-9 (* 1228.8 (-> self racer bob-mult-trans) f28-0 f0-8))) (set! (-> self racer cushion-bob-old) (-> self racer cushion-bob)) - (set! (-> self racer cushion-bob) f0-9) - ) - ) + (set! (-> self racer cushion-bob) f0-9))) (let ((a2-1 (new-stack-vector0))) (set! (-> a2-1 quad) (-> self control trans quad)) (+! (-> a2-1 y) (-> self racer cushion-bob)) - (add-debug-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - a2-1 - 819.2 - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) - ) + (add-debug-sphere *display-target-marks* (bucket-id debug-no-zbuf) a2-1 819.2 (new 'static 'rgba :r #xff :b #xff :a #x80))) (let ((f0-13 (* (-> self racer speed-rotx) (-> *display* time-adjust-ratio)))) (set! (-> self racer cur-rotx) - (lerp (-> self racer cur-rotx) (+ (-> self racer hill-rotx) (-> self racer targ-rotx)) f0-13) - ) - ) - (set! (-> self racer shock-rotx) - (lerp (-> self racer shock-rotx) (* -0.6666667 (-> self racer shock-offset)) 0.1) - ) + (lerp (-> self racer cur-rotx) (+ (-> self racer hill-rotx) (-> self racer targ-rotx)) f0-13))) + (set! (-> self racer shock-rotx) (lerp (-> self racer shock-rotx) (* -0.6666667 (-> self racer shock-offset)) 0.1)) (set! (-> self racer shock-rotx) 0.0) - (sin (+ 16384.0 (/ (* 65536.0 (the float (mod (the int (-> self racer bob-timer)) (the int f30-0)))) f30-0))) - ) - (quaternion-rotate-x! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (+ arg0 (-> self racer shock-rotx) (* (-> self racer mult-rotx) (-> self racer cur-rotx))) - ) - (let ((f30-1 (* (-> self control unknown-float61) (/ (-> self control unknown-float01) (-> self racer transv-max)))) - ) + (sin (+ 16384.0 (/ (* 65536.0 (the float (mod (the int (-> self racer bob-timer)) (the int f30-0)))) f30-0)))) + (quaternion-rotate-x! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (+ arg0 (-> self racer shock-rotx) (* (-> self racer mult-rotx) (-> self racer cur-rotx)))) + (let ((f30-1 (* (-> self control unknown-float61) (/ (-> self control unknown-float01) (-> self racer transv-max))))) (set! (-> self racer hill-value) f30-1) (if (and (racer-on-ground?) (begin (set! (-> self racer hill-ground-value) f30-1) (< 0.0 f30-1))) - (set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) (fmax -4096.0 (* -16384.0 f30-1)) 0.05)) - (set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) 0.0 0.05)) - ) - ) + (set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) (fmax -4096.0 (* -16384.0 f30-1)) 0.05)) + (set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) 0.0 0.05)))) (seek! (-> self racer hill-boost) 0.0 (* 81920.0 (seconds-per-frame))) (set! (-> self racer hill-offset) 0.0) 0 - (none) - ) + (none)) (defbehavior racer-collision target () (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self control transv quad)) (let ((f30-0 0.8)) - (fill-cache-integrate-and-collide! - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) + (fill-cache-integrate-and-collide! (-> self control) (-> self control transv) (-> self control root-prim collide-with)) (+! (-> self racer shock-offsetv) (* (- (-> gp-0 y) (-> self control transv y)) f30-0)) (+! (-> self racer shock-offsetv) (+ (* -20.0 (seconds-per-frame) (-> self racer shock-offset)) - (if (racer-on-ground?) - (* (-> self control dynam gravity-length) (seconds-per-frame) f30-0) - 0.0 - ) - ) - ) - ) - (if (and (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.2))) - (< (-> self racer shock-offset) 0.0) - ) - (!= (-> self control unknown-surface00 mode) 'air) - ) - (+! (-> self racer shock-offset) (* (-> self racer shock-offsetv) (seconds-per-frame))) - ) + (if (racer-on-ground?) (* (-> self control dynam gravity-length) (seconds-per-frame) f30-0) 0.0)))) + (if (and (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.2))) (< (-> self racer shock-offset) 0.0)) + (!= (-> self control unknown-surface00 mode) 'air)) + (+! (-> self racer shock-offset) (* (-> self racer shock-offsetv) (seconds-per-frame)))) (set! (-> self racer shock-offset) - (* (-> self racer shock-offset) (lerp-scale 0.99 0.98 (-> self control unknown-float01) 0.0 28672.0)) - ) + (* (-> self racer shock-offset) (lerp-scale 0.99 0.98 (-> self control unknown-float01) 0.0 28672.0))) (cond ((< 81920.0 (-> self racer shock-offset)) (set! (-> self racer shock-offset) 81920.0) - (set! (-> self racer shock-offsetv) 0.0) - ) + (set! (-> self racer shock-offsetv) 0.0)) ((< (-> self racer shock-offset) -8192.0) (set! (-> self racer shock-offset) -8192.0) (set! (-> self racer shock-offsetv) 0.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 13) - -1 - #f - #f - #f - (-> self control trans) - :to self - ) - (effect-control-method-10 (-> self skel effect) 'effect-land -1.0 -1) - ) - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 13) + -1 + #f + #f + #f + (-> self control trans) + :to + self) + (effect-control-method-10 (-> self skel effect) 'effect-land -1.0 -1))) (deg-diff (vector-y-angle gp-0) (vector-y-angle (-> self control transv))) (let ((f30-2 (vector-xz-length gp-0))) (when (and (logtest? (-> self control status) (cshape-moving-flags twall)) (< 20480.0 f30-2) - (and (< (fabs (-> self racer mod-x)) 0.5) (!= (-> self next-state name) 'target-racing-smack)) - ) + (and (< (fabs (-> self racer mod-x)) 0.5) (!= (-> self next-state name) 'target-racing-smack))) (let ((s5-3 (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control unknown-vector70)))) (vector-normalize! s5-3 1.0) (let ((gp-1 (vector-reflect-flat! (new 'stack-no-clear 'vector) gp-0 s5-3))) (set! (-> gp-1 y) 0.0) (vector-normalize! gp-1 1.0) (let ((f28-1 (deg-diff (-> self racer rot y) (vector-y-angle gp-1)))) - (if (< 16384.0 (fabs f28-1)) - (set! f28-1 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1)))) - ) - (set! (-> self racer rotv y) (* f28-1 (lerp-scale 2.0 7.0 f30-2 4096.0 (-> self racer transv-max)))) - ) - ) - ) - ) - ) - ) + (if (< 16384.0 (fabs f28-1)) (set! f28-1 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1))))) + (set! (-> self racer rotv y) (* f28-1 (lerp-scale 2.0 7.0 f30-2 4096.0 (-> self racer transv-max)))))))))) (set! (-> self control surf) *race-track-surface*) 0 - (none) - ) + (none)) (defbehavior racer-integrate target () - (quaternion-rotate-y! - (the-as quaternion (-> self racer quat)) - (quaternion-identity! (new-stack-quaternion0)) - (-> self racer rot y) - ) - (forward-up-nopitch->quaternion - (the-as quaternion (-> self racer surface-quat)) - *null-vector* - (-> self control local-normal) - ) - (quaternion-slerp! - (the-as quaternion (-> self racer surface-quat-smooth)) - (the-as quaternion (-> self racer surface-quat-smooth)) - (the-as quaternion (-> self racer surface-quat)) - 0.05 - ) - (quaternion-normalize! - (quaternion*! - (-> self control unknown-quaternion00) - (the-as quaternion (-> self racer surface-quat-smooth)) - (the-as quaternion (-> self racer quat)) - ) - ) - (quaternion-rotate-z! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (-> self racer rot z) - ) + (quaternion-rotate-y! (the-as quaternion (-> self racer quat)) + (quaternion-identity! (new-stack-quaternion0)) + (-> self racer rot y)) + (forward-up-nopitch->quaternion (the-as quaternion (-> self racer surface-quat)) + *null-vector* + (-> self control local-normal)) + (quaternion-slerp! (the-as quaternion (-> self racer surface-quat-smooth)) + (the-as quaternion (-> self racer surface-quat-smooth)) + (the-as quaternion (-> self racer surface-quat)) + 0.05) + (quaternion-normalize! (quaternion*! (-> self control unknown-quaternion00) + (the-as quaternion (-> self racer surface-quat-smooth)) + (the-as quaternion (-> self racer quat)))) + (quaternion-rotate-z! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (-> self racer rot z)) (racer-cushion (-> self racer lean-rotx)) (if (!= (-> self next-state name) 'target-racing-death) - (set! (-> self control unknown-vector11 y) - (+ (-> self racer cushion-base) (-> self racer cushion-offset) (-> self racer shock-offset)) - ) - ) + (set! (-> self control unknown-vector11 y) + (+ (-> self racer cushion-base) (-> self racer cushion-offset) (-> self racer shock-offset)))) (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) - (if (and (= *cheat-mode* 'debug) - (and (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*)) - ) - (vector-reset! (-> self control transv)) - ) + (if (and (= *cheat-mode* 'debug) (and (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*))) + (vector-reset! (-> self control transv))) 0 - (none) - ) + (none)) (defbehavior racer-bend-gravity target () - (set! (-> self control unknown-float82) (if (racer-on-ground?) - 32.0 - 2.0 - ) - ) - (let ((f0-2 - (if (or (and (logtest? (-> self control status) (cshape-moving-flags twall)) - (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - ) - (logtest? (-> self state-flags) (state-flags dying)) - ) - 0.0 - (-> self control unknown-float81) - ) - ) - ) - (seek! (-> self control unknown-float80) f0-2 (* (-> self control unknown-float82) (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 unknown-float82) (if (racer-on-ground?) 32.0 2.0)) + (let ((f0-2 (if (or (and (logtest? (-> self control status) (cshape-moving-flags twall)) + (not (logtest? (-> self control status) (cshape-moving-flags onsurf)))) + (logtest? (-> self state-flags) (state-flags dying))) + 0.0 + (-> self control unknown-float81)))) + (seek! (-> self control unknown-float80) f0-2 (* (-> self control unknown-float82) (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))) 0 - (none) - ) + (none)) (defbehavior racer-sounds target () - (if (zero? (-> self racer engine-sound-id)) - (set! (-> self racer engine-sound-id) (new-sound-id)) - ) + (if (zero? (-> self racer engine-sound-id)) (set! (-> self racer engine-sound-id) (new-sound-id))) (let ((f0-1 (* 0.0000009155274 (-> self racer front-rotv)))) 100.0 - (let ((f0-6 - (+ (* 2.0 f0-1) - (if (< 4096.0 (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) - ) - ) - 0.7 - 0.0 - ) - (lerp-scale 0.0 0.5 (-> self racer boost-level) 0.0 (-> *RACER-bank* boost-level-max)) - ) - ) - ) - (if (< 2.5 f0-6) - (set! f0-6 2.5) - ) - (seek! (-> self racer engine-sound-pitch) f0-6 (* 4.0 (seconds-per-frame))) - ) - ) + (let ((f0-6 (+ (* 2.0 f0-1) + (if (< 4096.0 + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)))) + 0.7 + 0.0) + (lerp-scale 0.0 0.5 (-> self racer boost-level) 0.0 (-> *RACER-bank* boost-level-max))))) + (if (< 2.5 f0-6) (set! f0-6 2.5)) + (seek! (-> self racer engine-sound-pitch) f0-6 (* 4.0 (seconds-per-frame))))) (let ((f0-11 (lerp-scale 100.0 60.0 (-> self racer engine-sound-pitch) 0.8 2.0))) - (sound-play - "zoomer-loop" - :id (-> self racer engine-sound-id) - :vol f0-11 - :pitch (-> self racer engine-sound-pitch) - :position (the-as symbol (-> self control trans)) - ) - ) + (sound-play "zoomer-loop" + :id (-> self racer engine-sound-id) + :vol + f0-11 + :pitch (-> self racer engine-sound-pitch) + :position + (the-as symbol (-> self control trans)))) (cond - ((and (!= (-> self current-level name) 'ogre) (!= (-> self current-level name) 'lavatube)) - #f - ) + ((and (!= (-> self current-level name) 'ogre) (!= (-> self current-level name) 'lavatube)) #f) ((or (logtest? (-> self control status) (cshape-moving-flags onground)) - (< 12288.0 (vector-length (-> self control transv))) - ) - (let ((v0-5 (the-as object (current-time)))) - (set! (-> self racer unstuck-time) (the-as time-frame v0-5)) - v0-5 - ) - ) + (< 12288.0 (vector-length (-> self control transv)))) + (let ((v0-5 (the-as object (current-time)))) (set! (-> self racer unstuck-time) (the-as time-frame v0-5)) v0-5)) ((time-elapsed? (-> self racer unstuck-time) (seconds 5)) - (send-event self 'attack #f (static-attack-info ((mode 'heat)))) - ) + (send-event self 'attack #f (static-attack-info ((mode 'heat))))) ((and (time-elapsed? (-> self racer unstuck-time) (seconds 3)) - (time-elapsed? (-> self racer heat-sound-time) (seconds 1)) - ) + (time-elapsed? (-> self racer heat-sound-time) (seconds 1))) (set-time! (-> self racer heat-sound-time)) - (sound-play "warning") - ) - ) - ) + (sound-play "warning")))) (defbehavior racer-buzz target ((arg0 float)) (let ((f1-0 (lerp-scale 0.2 1.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 (the int (* 255.0 (fmin 1.0 (* arg0 f1-0)))) (seconds 0.05)) - ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 (the int (* 255.0 (fmin 1.0 (* arg0 f1-0)))) (seconds 0.05))) 0 - (none) - ) + (none)) (defbehavior racer-find-prop-point target ((arg0 vector) (arg1 vector)) (let ((s4-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4)))) (let ((a2-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat)))) - (vector-flatten! arg0 (vector-! (new 'stack-no-clear 'vector) arg1 s4-0) a2-0) - ) + (vector-flatten! arg0 (vector-! (new 'stack-no-clear 'vector) arg1 s4-0) a2-0)) (vector-normalize! arg0 4915.2) - (vector+! arg0 arg0 s4-0) - ) - arg0 - ) + (vector+! arg0 arg0 s4-0)) + arg0) (defbehavior racer-effects target () (let ((gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)))) (set! (-> *part-id-table* 2212 init-specs 11 initial-valuef) - (lerp-scale 0.0 64.0 (-> self racer front-rotv) 18204.445 364088.88) - ) + (lerp-scale 0.0 64.0 (-> self racer front-rotv) 18204.445 364088.88)) (set! (-> *part-id-table* 2212 init-specs 11 initial-valuef) - (- (-> *part-id-table* 2212 init-specs 11 initial-valuef) (* 16.0 (the float (rand-vu-int-range 0 3)))) - ) + (- (-> *part-id-table* 2212 init-specs 11 initial-valuef) (* 16.0 (the float (rand-vu-int-range 0 3))))) (when (< 0.0 (-> *part-id-table* 2212 init-specs 11 initial-valuef)) (set! (-> *part-id-table* 2212 init-specs 14 initial-valuef) (the-as float gp-0)) (set! (-> *part-id-table* 2212 init-specs 3 initial-valuef) 15155.2) - (launch-particles - :system *sp-particle-system-3d* - (-> *part-id-table* 2212) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4)) - ) - ) - ) + (launch-particles :system + *sp-particle-system-3d* + (-> *part-id-table* 2212) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4))))) (let ((gp-2 (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)))) (set! (-> *part-id-table* 2212 init-specs 11 initial-valuef) - (lerp-scale 0.0 64.0 (-> self racer front-rotv) 18204.445 364088.88) - ) + (lerp-scale 0.0 64.0 (-> self racer front-rotv) 18204.445 364088.88)) (set! (-> *part-id-table* 2212 init-specs 11 initial-valuef) - (- (-> *part-id-table* 2212 init-specs 11 initial-valuef) (* 16.0 (the float (rand-vu-int-range 0 3)))) - ) + (- (-> *part-id-table* 2212 init-specs 11 initial-valuef) (* 16.0 (the float (rand-vu-int-range 0 3))))) (when (< 0.0 (-> *part-id-table* 2212 init-specs 11 initial-valuef)) (set! (-> *part-id-table* 2212 init-specs 14 initial-valuef) (the-as float gp-2)) (set! (-> *part-id-table* 2212 init-specs 3 initial-valuef) 10240.0) - (launch-particles - :system *sp-particle-system-3d* - (-> *part-id-table* 2212) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10)) - ) - ) - ) + (launch-particles :system + *sp-particle-system-3d* + (-> *part-id-table* 2212) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10))))) (when (and (racer-on-ground?) (< (-> self control unknown-float01) 90112.0)) (let* ((gp-4 #f) (s5-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10))) @@ -669,191 +433,105 @@ (when (and (logtest? (-> self draw status) (draw-status was-drawn)) (zero? (-> self draw cur-lod))) (let ((f1-3 (y-angle (-> self control))) (f0-17 (-> self control unknown-float01)) - (s4-2 s5-2) - ) + (s4-2 s5-2)) (set! (-> s4-2 y) (-> self water height)) (set! (-> *part-id-table* 2275 init-specs 4 initial-valuef) (+ 24576.0 f1-3)) (set! (-> *part-id-table* 2275 init-specs 19 initial-valuef) (+ 49152.0 f1-3)) (set! (-> *part-id-table* 2275 init-specs 1 initial-valuef) (* 0.0000036621095 f0-17)) (set! (-> *part-id-table* 2275 init-specs 2 initial-valuef) (* 0.1 f0-17)) (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2275) s4-2) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2276) s4-2) - ) - ) - (-> *part-id-table* 2208) - ) - ((= v1-61 (pat-material lava)) - (-> *part-id-table* 2213) - ) - ((= v1-61 (pat-material hotcoals)) - (-> *part-id-table* 2214) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2276) s4-2))) + (-> *part-id-table* 2208)) + ((= v1-61 (pat-material lava)) (-> *part-id-table* 2213)) + ((= v1-61 (pat-material hotcoals)) (-> *part-id-table* 2214)) ((or (= v1-61 (pat-material pcmetal)) (= v1-61 (pat-material metal)) (= v1-61 (pat-material tube)) - (= v1-61 (pat-material rotate)) - ) - (-> *part-id-table* 2215) - ) - ((= v1-61 (pat-material grass)) - (-> *part-id-table* 2207) - ) + (= v1-61 (pat-material rotate))) + (-> *part-id-table* 2215)) + ((= v1-61 (pat-material grass)) (-> *part-id-table* 2207)) ((or (= v1-61 (pat-material dirt)) (= v1-61 (pat-material sand)) (= v1-61 (pat-material straw)) - (= v1-61 (pat-material gravel)) - ) - (-> *part-id-table* 2216) - ) - ((or (= v1-61 (pat-material wood)) (= v1-61 (pat-material crwood))) - (-> *part-id-table* 2217) - ) - ((= v1-61 (pat-material stone)) - (-> *part-id-table* 2831) - ) - (else - (-> *part-id-table* 2211) - ) - ) - ) - ) + (= v1-61 (pat-material gravel))) + (-> *part-id-table* 2216)) + ((or (= v1-61 (pat-material wood)) (= v1-61 (pat-material crwood))) (-> *part-id-table* 2217)) + ((= v1-61 (pat-material stone)) (-> *part-id-table* 2831)) + (else (-> *part-id-table* 2211))))) (set! (-> s5-2 y) (-> self control shadow-pos y)) - (if (nonzero? a1-13) - (launch-particles - :system (if gp-4 - *sp-particle-system-3d* - *sp-particle-system-2d* - ) - a1-13 - s5-2 - ) - ) - ) + (if (nonzero? a1-13) (launch-particles :system (if gp-4 *sp-particle-system-3d* *sp-particle-system-2d*) a1-13 s5-2))) (let* ((gp-5 #f) (v1-102 (-> self control ground-pat material)) (s5-3 (cond - ((= v1-102 (pat-material waterbottom)) - (-> *part-id-table* 2218) - ) - ((= v1-102 (pat-material lava)) - (-> *part-id-table* 2219) - ) - ((= v1-102 (pat-material hotcoals)) - (-> *part-id-table* 2220) - ) - ((= v1-102 (pat-material grass)) - (-> *part-id-table* 2221) - ) - (else - 0 - ) - ) - ) - (a2-7 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10))) - ) + ((= v1-102 (pat-material waterbottom)) (-> *part-id-table* 2218)) + ((= v1-102 (pat-material lava)) (-> *part-id-table* 2219)) + ((= v1-102 (pat-material hotcoals)) (-> *part-id-table* 2220)) + ((= v1-102 (pat-material grass)) (-> *part-id-table* 2221)) + (else 0))) + (a2-7 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10)))) (set! (-> a2-7 y) (-> self control shadow-pos y)) (if (nonzero? s5-3) - (launch-particles - :system (if gp-5 - *sp-particle-system-3d* - *sp-particle-system-2d* - ) - (the-as sparticle-launcher s5-3) - a2-7 - ) - ) - ) - ) + (launch-particles :system + (if gp-5 *sp-particle-system-3d* *sp-particle-system-2d*) + (the-as sparticle-launcher s5-3) + a2-7)))) (when (and (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) (cpad-pressed? (-> self control unknown-cpad-info00 number) circle square) (time-elapsed? (-> self control unknown-dword82) (seconds 0.25)) - (not (logtest? (-> self state-flags) (state-flags being-attacked dying))) - ) + (not (logtest? (-> self state-flags) (state-flags being-attacked dying)))) (let ((gp-6 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat))) - (s5-4 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4))) - ) + (s5-4 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4)))) (set! (-> gp-6 y) 0.0) (vector-normalize! gp-6 (-> *RACER-bank* yellow-projectile-speed)) (vector+! gp-6 gp-6 (-> self control transv)) - (process-spawn - projectile-yellow - :init projectile-init-by-other - (-> self entity) - s5-4 - gp-6 - (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) - 152 - 136 - ) - #f - :to self - ) - ) - (set-time! (-> self control unknown-dword82)) - ) + (process-spawn projectile-yellow + :init + projectile-init-by-other + (-> self entity) + s5-4 + gp-6 + (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 152 136) + #f + :to + self)) + (set-time! (-> self control unknown-dword82))) (let ((f22-0 (-> *RACER-bank* hotcoals-heat-inc)) (f24-0 (-> *RACER-bank* lava-heat-inc)) (f28-2 (-> *RACER-bank* lava-air-heat-inc)) (f26-0 (-> *RACER-bank* surface-heat-inc)) - (f30-2 (-> *RACER-bank* jump-heat-inc)) - ) + (f30-2 (-> *RACER-bank* jump-heat-inc))) (case (-> self current-level name) (('lavatube) (set! f22-0 (-> *RACER-bank* lavatube-hotcoals-heat-inc)) (set! f24-0 (-> *RACER-bank* lavatube-lava-heat-inc)) (set! f28-2 (-> *RACER-bank* lavatube-lava-air-heat-inc)) (set! f26-0 (-> *RACER-bank* lavatube-surface-heat-inc)) - (set! f30-2 (-> *RACER-bank* lavatube-jump-heat-inc)) - ) - ) + (set! f30-2 (-> *RACER-bank* lavatube-jump-heat-inc)))) (let* ((f20-0 (get-health-percent-lost *game-info* #f)) (f22-1 (lerp-scale f22-0 (* 0.5 f22-0) f20-0 0.0 1.0)) - (f24-1 (lerp-scale f24-0 (* 0.33333334 f24-0) f20-0 0.0 1.0)) - ) + (f24-1 (lerp-scale f24-0 (* 0.33333334 f24-0) f20-0 0.0 1.0))) (case (-> self control poly-pat material) - (((pat-material hotcoals)) - (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f22-1 (seconds-per-frame))) - ) + (((pat-material hotcoals)) (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f22-1 (seconds-per-frame)))) (((pat-material lava)) (if (racer-on-ground?) - (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f24-1 (seconds-per-frame))) - (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f28-2 (seconds-per-frame))) - ) - ) - (else - (if (not (racer-on-ground?)) - (seek! (-> self racer heat) 0.0 (* f26-0 (seconds-per-frame))) - ) - ) - ) - ) + (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f24-1 (seconds-per-frame))) + (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f28-2 (seconds-per-frame))))) + (else (if (not (racer-on-ground?)) (seek! (-> self racer heat) 0.0 (* f26-0 (seconds-per-frame))))))) (let ((v1-189 (- (current-time) (-> self control unknown-dword11)))) - (if (and (>= v1-189 (seconds 0.9)) (>= (seconds 3) v1-189)) - (seek! (-> self racer heat) 0.0 (* f30-2 (seconds-per-frame))) - ) - ) - ) + (if (and (>= v1-189 (seconds 0.9)) (>= (seconds 3) v1-189)) (seek! (-> self racer heat) 0.0 (* f30-2 (seconds-per-frame)))))) (if (and (>= (-> self racer heat) (-> *RACER-bank* heat-max)) (= (-> self game mode) 'play)) - (send-event self 'attack #f (static-attack-info ((mode 'heat)))) - ) + (send-event self 'attack #f (static-attack-info ((mode 'heat))))) ;; og:preserve-this allow boost with debug segment enabled - (if (and *cheat-mode* (or *debug-segment* PC_PORT) (cpad-pressed? 0 l2)) - (send-event self 'boost 1.0) - ) + (if (and *cheat-mode* (or *debug-segment* PC_PORT) (cpad-pressed? 0 l2)) (send-event self 'boost 1.0)) (let ((v1-218 (- (current-time) (-> self racer boost-time)))) (if (< v1-218 (-> self racer boost-duration)) - (set! (-> self racer boost-curve) - (* (-> *RACER-bank* boost-curve-max) - (sin (* 32768.0 (/ (the float v1-218) (the float (-> self racer boost-duration))))) - ) - ) - (set! (-> self racer boost-curve) 0.0) - ) - ) + (set! (-> self racer boost-curve) + (* (-> *RACER-bank* boost-curve-max) + (sin (* 32768.0 (/ (the float v1-218) (the float (-> self racer boost-duration))))))) + (set! (-> self racer boost-curve) 0.0))) (when (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) x)) (< (-> self control unknown-float01) 4096.0) - (= (-> self racer boost-level) 0.0) - ) + (= (-> self racer boost-level) 0.0)) (when (nonzero? (-> self racer boost-sound-id)) (let ((v1-241 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> v1-241 command) (sound-command set-param)) @@ -862,91 +540,58 @@ (set! (-> v1-241 auto-time) 120) (set! (-> v1-241 auto-from) 2) (set! (-> v1-241 parms mask) (sound-mask volume time)) - (-> v1-241 id) - ) + (-> v1-241 id)) (set! (-> self racer boost-sound-id) (new 'static 'sound-id)) - 0 - ) - (set! (-> self racer boost-level) 0.0) - ) + 0) + (set! (-> self racer boost-level) 0.0)) (set! (-> self racer boost-target) (+ (-> self racer boost-curve) (-> self racer boost-level))) (seek! (-> self racer boost-output) (-> self racer boost-target) (* 40960.0 (seconds-per-frame))) (when (!= (-> self racer boost-output) 0.0) (dotimes (gp-7 8) (let ((v1-258 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* 2229) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-258)) - ) - ) - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 1 (seconds 0.1)) - ) + (launch-particles (-> *part-id-table* 2229) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-258))))) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 1 (seconds 0.1))) (when (logtest? (-> self control status) (cshape-moving-flags twall)) (let* ((gp-8 (racer-find-prop-point (new 'stack-no-clear 'vector) (-> self control unknown-vector70))) (v1-274 (-> self control wall-pat material)) - (a1-54 - (cond - ((or (= v1-274 (pat-material metal)) (= v1-274 (pat-material pcmetal))) - (set! (-> *part-id-table* 2226 init-specs 1 initial-valuef) - (lerp-scale 0.2 10.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) - (-> *part-id-table* 2226) - ) - (else - (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) - (lerp-scale 0.2 10.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) - (-> *part-id-table* 2225) - ) - ) - ) - ) - (launch-particles a1-54 gp-8) - ) + (a1-54 (cond + ((or (= v1-274 (pat-material metal)) (= v1-274 (pat-material pcmetal))) + (set! (-> *part-id-table* 2226 init-specs 1 initial-valuef) + (lerp-scale 0.2 10.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) + (-> *part-id-table* 2226)) + (else + (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) + (lerp-scale 0.2 10.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) + (-> *part-id-table* 2225))))) + (launch-particles a1-54 gp-8)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 51 (seconds 0.05)) - (sound-play-by-name - (sound-name-with-material 'zoom-hit (-> self control wall-pat) "") - (-> self racer scrape-sound-id) - 1024 - 0 - 0 - (sound-group sfx) - #t - ) - ) + (sound-play-by-name (sound-name-with-material 'zoom-hit (-> self control wall-pat) "") + (-> self racer scrape-sound-id) + 1024 + 0 + 0 + (sound-group sfx) + #t)) (when (and (< (-> self racer heat) (-> *RACER-bank* heat-max)) (and (< (* 0.8 (-> *RACER-bank* heat-max)) (-> self racer heat)) - (time-elapsed? - (-> self racer heat-sound-time) - (the int (* 3000.0 (- 1.0 (/ (-> self racer heat) (-> *RACER-bank* heat-max))))) - ) - ) - ) + (time-elapsed? (-> self racer heat-sound-time) + (the int (* 3000.0 (- 1.0 (/ (-> self racer heat) (-> *RACER-bank* heat-max)))))))) (set-time! (-> self racer heat-sound-time)) - (sound-play "warning") - ) + (sound-play "warning")) (when (rand-vu-percent? (/ (-> self racer heat) (-> *RACER-bank* heat-max))) - (let ((a2-28 (process-drawable-random-point! - (the-as process-drawable (ppointer->process (-> self manipy))) - (new 'stack-no-clear 'vector) - ) - ) - ) - (launch-particles (-> *part-id-table* 2227) a2-28) - ) - ) + (let ((a2-28 (process-drawable-random-point! (the-as process-drawable (ppointer->process (-> self manipy))) + (new 'stack-no-clear 'vector)))) + (launch-particles (-> *part-id-table* 2227) a2-28))) 0 - (none) - ) + (none)) (defbehavior target-racing-center-anim target () (set! (-> self racer turn-anim-frame) 0.0) (set! (-> self racer tail-anim-frame) 0.0) (set! (-> self racer rudd-anim-frame) 0.0) 0 - (none) - ) + (none)) (defbehavior target-racing-turn-anim target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -955,103 +600,63 @@ (set! (-> self control unknown-int40) s5-0) (set! (-> self racer turn-anim-targ) (fmax -16.0 (fmin 16.0 (-> self racer turn-anim-targ)))) (or (not (>= (* (-> self racer turn-anim-targ) (-> self racer turn-anim-frame)) 0.0)) - (< (fabs (-> self racer turn-anim-frame)) (fabs (-> self racer turn-anim-targ))) - ) + (< (fabs (-> self racer turn-anim-frame)) (fabs (-> self racer turn-anim-targ)))) (+! (-> self racer turn-anim-vel) (* (- (-> self racer turn-anim-targ) (-> self racer turn-anim-frame)) - (lerp-scale - 20.0 - (if (< (fabs (-> self racer turn-anim-frame)) (fabs (-> self racer turn-anim-targ))) - 30.0 - 60.0 - ) - (-> self control unknown-float01) - 0.0 - (* 0.3 (-> self racer transv-max)) - ) - (seconds-per-frame) - ) - ) + (lerp-scale 20.0 + (if (< (fabs (-> self racer turn-anim-frame)) (fabs (-> self racer turn-anim-targ))) 30.0 60.0) + (-> self control unknown-float01) + 0.0 + (* 0.3 (-> self racer transv-max))) + (seconds-per-frame))) (set! (-> self racer turn-anim-vel) - (fmax - -100.0 - (fmin - 100.0 - (* (-> self racer turn-anim-vel) - (lerp-scale 0.96 0.9 (-> self control unknown-float01) 0.0 (* 0.3 (-> self racer transv-max))) - ) - ) - ) - ) + (fmax -100.0 + (fmin 100.0 + (* (-> self racer turn-anim-vel) + (lerp-scale 0.96 0.9 (-> self control unknown-float01) 0.0 (* 0.3 (-> self racer transv-max))))))) (+! (-> self racer turn-anim-frame) (* (-> self racer turn-anim-vel) (seconds-per-frame))) (set! (-> self racer turn-anim-frame) (fmax -20.0 (fmin 20.0 (-> self racer turn-anim-frame)))) (cond ((and (>= (-> self racer turn-anim-frame) 20.0) (>= (-> self racer turn-anim-vel) 0.0)) - (set! (-> self racer turn-anim-vel) 0.0) - ) + (set! (-> self racer turn-anim-vel) 0.0)) ((and (>= -20.0 (-> self racer turn-anim-frame)) (>= 0.0 (-> self racer turn-anim-vel))) - (set! (-> self racer turn-anim-vel) 0.0) - ) - ) + (set! (-> self racer turn-anim-vel) 0.0))) (+! (-> self racer tail-anim-vel) (* -50.0 (seconds-per-frame) - (- (-> self racer tail-anim-frame) - (* -0.0091552725 (- (-> self racer change-roty) (-> self racer change-roty-old))) - ) - ) - ) + (- (-> self racer tail-anim-frame) (* -0.0091552725 (- (-> self racer change-roty) (-> self racer change-roty-old)))))) (set! (-> self racer tail-anim-vel) (fmax -100.0 (fmin 100.0 (* 0.8 (-> self racer tail-anim-vel))))) (+! (-> self racer tail-anim-frame) (* (-> self racer tail-anim-vel) (seconds-per-frame))) (set! (-> self racer tail-anim-frame) (fmax -20.0 (fmin 20.0 (-> self racer tail-anim-frame)))) (cond ((and (>= (-> self racer tail-anim-frame) 20.0) (>= (-> self racer tail-anim-vel) 0.0)) - (set! (-> self racer tail-anim-vel) 0.0) - ) + (set! (-> self racer tail-anim-vel) 0.0)) ((and (>= -20.0 (-> self racer tail-anim-frame)) (>= 0.0 (-> self racer tail-anim-vel))) - (set! (-> self racer tail-anim-vel) 0.0) - ) - ) + (set! (-> self racer tail-anim-vel) 0.0))) (+! (-> self racer rudd-anim-vel) - (* 40.0 (seconds-per-frame) (- (-> self racer tail-anim-frame) (-> self racer rudd-anim-frame))) - ) + (* 40.0 (seconds-per-frame) (- (-> self racer tail-anim-frame) (-> self racer rudd-anim-frame)))) (set! (-> self racer rudd-anim-vel) (fmax -100.0 (fmin 100.0 (* 0.96 (-> self racer rudd-anim-vel))))) (+! (-> self racer rudd-anim-frame) (* (-> self racer rudd-anim-vel) (seconds-per-frame))) (set! (-> self racer rudd-anim-frame) (fmax -20.0 (fmin 20.0 (-> self racer rudd-anim-frame)))) (cond ((and (>= (-> self racer rudd-anim-frame) 20.0) (>= (-> self racer rudd-anim-vel) 0.0)) - (set! (-> self racer rudd-anim-vel) 0.0) - ) + (set! (-> self racer rudd-anim-vel) 0.0)) ((and (>= -20.0 (-> self racer rudd-anim-frame)) (>= 0.0 (-> self racer rudd-anim-vel))) - (set! (-> self racer rudd-anim-vel) 0.0) - ) - ) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (set! (-> self racer rudd-anim-vel) 0.0)))) + (set-time-ratios *display* (the float gp-0))) (when #f (format *stdcon* "~%~%~%z:~r vy:~r~%" (-> self racer rot z) (-> self racer rotv y)) - (format - *stdcon* - "t:~6,,2f v:~6,,2f p:~6,,2f~%" - (-> self racer turn-anim-targ) - (-> self racer turn-anim-vel) - (-> self racer turn-anim-frame) - ) - (format - *stdcon* - "t:~6,,2f v:~6,,2f p:~6,,2f~%" - (-> self racer turn-anim-targ) - (-> self racer tail-anim-vel) - (-> self racer tail-anim-frame) - ) - ) - (set-twist! - (-> self racer tail) - (the-as float #f) - (the-as float #f) - (* -273.06668 (-> self racer tail-anim-frame)) - ) + (format *stdcon* + "t:~6,,2f v:~6,,2f p:~6,,2f~%" + (-> self racer turn-anim-targ) + (-> self racer turn-anim-vel) + (-> self racer turn-anim-frame)) + (format *stdcon* + "t:~6,,2f v:~6,,2f p:~6,,2f~%" + (-> self racer turn-anim-targ) + (-> self racer tail-anim-vel) + (-> self racer tail-anim-frame))) + (set-twist! (-> self racer tail) (the-as float #f) (the-as float #f) (* -273.06668 (-> self racer tail-anim-frame))) (let ((f30-2 (fmin 1.0 (* 2.0 (fabs (-> self racer slide-shift-x)))))) (ja :num-func num-func-identity :frame-num (ja-aframe (-> self racer turn-anim-frame) 0)) (ja :chan 1 :num! (chan 0) :frame-interp (+ 0.5 (* 0.025 (-> self racer tail-anim-frame)))) @@ -1059,51 +664,33 @@ ;; og:preserve-this changed for high fps (let ((f0-82 (lerp (-> self racer slide-interp) f30-2 (* DISPLAY_FPS_RATIO 0.125)))) (set! (-> self racer slide-interp) f0-82) - (set! (-> gp-2 frame-interp) f0-82) - ) + (set! (-> gp-2 frame-interp) f0-82)) (set! (-> gp-2 param 0) 0.0) - (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-chan) - ) - ) + (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-chan))) (ja :chan 3 - :num! (chan 0) - :frame-interp (* (-> self racer slide-interp) (+ 0.5 (* 0.025 (-> self racer tail-anim-frame)))) - ) + :num! + (chan 0) + :frame-interp + (* (-> self racer slide-interp) (+ 0.5 (* 0.025 (-> self racer tail-anim-frame))))) 0 - (none) - ) + (none)) (defbehavior target-racing-jump-anim target ((arg0 basic) (arg1 time-frame)) (let ((s4-0 'nothing) - (f30-0 0.0) - ) + (f30-0 0.0)) (until (ja-done? 0) - (let ((f0-0 (target-height-above-ground))) - (if (< 8192.0 f0-0) - 'jump - ) - ) + (let ((f0-0 (target-height-above-ground))) (if (< 8192.0 f0-0) 'jump)) (let ((s5-0 #f)) (when (!= s5-0 s4-0) - (if (= s4-0 'nothing) - (ja-channel-push! 1 arg1) - (ja-channel-push! 1 (seconds 0.125)) - ) + (if (= s4-0 'nothing) (ja-channel-push! 1 arg1) (ja-channel-push! 1 (seconds 0.125))) (ja-no-eval :group! eichar-racer-jump-small-ja :num! (seek!) :frame-num f30-0) - (set! s4-0 s5-0) - ) - ) + (set! s4-0 s5-0))) (suspend) (let ((f0-4 (lerp-scale 2.0 1.0 (ja-aframe-num 0) 0.0 22.0))) - (if (= (-> self next-state name) 'target-racing-falling) - (set! f0-4 (* 0.5 f0-4)) - ) - (ja :num! (seek! max f0-4)) - ) + (if (= (-> self next-state name) 'target-racing-falling) (set! f0-4 (* 0.5 f0-4))) + (ja :num! (seek! max f0-4))) (set! f30-0 (ja-aframe-num 0)) - (ja-blend-eval) - ) - ) + (ja-blend-eval))) (ja-channel-set! 2) (ja :group! eichar-racer-jump-small-loop-ja :num! min) (ja :chan 1 :group! eichar-racer-jump-small-land-ja :num! (identity (ja-aframe 44.0 0))) @@ -1112,62 +699,41 @@ (suspend) (let ((gp-3 (-> self skel root-channel 1))) (set! f30-1 (seek f30-1 1.0 (seconds-per-frame))) - (set! (-> gp-3 frame-interp) f30-1) - ) - ) - ) + (set! (-> gp-3 frame-interp) f30-1)))) (the-as none 0) - (none) - ) + (none)) (defbehavior target-racing-land-anim target ((arg0 symbol)) - (if (>= (-> self racer slide-mode) 0) - (goto cfg-23) - ) + (if (>= (-> self racer slide-mode) 0) (goto cfg-23)) (ja-channel-push! 1 (seconds 0.07)) (cond ((= arg0 'high-jump) (ja-no-eval :group! eichar-racer-jump-high-land-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (if (>= (-> self racer slide-mode) 0) - (goto cfg-23) - ) + (if (>= (-> self racer slide-mode) 0) (goto cfg-23)) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) ((= arg0 'jump) (ja-no-eval :group! eichar-racer-jump-land-ja :num! (seek!) :frame-num (ja-aframe 44.0 0)) (until (ja-done? 0) - (if (>= (-> self racer slide-mode) 0) - (goto cfg-23) - ) + (if (>= (-> self racer slide-mode) 0) (goto cfg-23)) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) (else - (ja-no-eval :group! eichar-racer-jump-small-land-ja :num! (seek!) :frame-num (ja-aframe 44.0 0)) - (until (ja-done? 0) - (if (>= (-> self racer slide-mode) 0) - (goto cfg-23) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) + (ja-no-eval :group! eichar-racer-jump-small-land-ja :num! (seek!) :frame-num (ja-aframe 44.0 0)) + (until (ja-done? 0) + (if (>= (-> self racer slide-mode) 0) (goto cfg-23)) + (suspend) + (ja :num! (seek!))))) (label cfg-23) 0 - (none) - ) + (none)) (defbehavior target-racing-post target () (set! (-> self control reaction) racer-collision-reaction) (set! (-> self control surf) *race-track-surface*) (set! (-> self racer transv-max) - (+ (-> self control unknown-surface01 transv-max) (-> self racer boost-output) (-> self racer hill-boost)) - ) + (+ (-> self control unknown-surface01 transv-max) (-> self racer boost-output) (-> self racer hill-boost))) (let ((gp-0 (the int (-> *display* time-ratio)))) (set-time-ratios *display* 1.0) (countdown (s5-0 gp-0) @@ -1179,106 +745,53 @@ (set! (-> self racer mod-x) f30-0) (let* ((f28-0 (-> self racer slide-amp)) (v1-17 (-> self racer slide-mode)) - (f28-1 - (* f28-0 - (cond - ((zero? v1-17) - (- (fmax - (analog-input - (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 8)) - 0.0 - 32.0 - 255.0 - 1.0 - ) - (analog-input - (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 9)) - 0.0 - 32.0 - 255.0 - 1.0 - ) - ) - ) - ) - ((= v1-17 1) - (fmax - (analog-input - (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 8)) - 0.0 - 32.0 - 255.0 - 1.0 - ) - (analog-input - (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 9)) - 0.0 - 32.0 - 255.0 - 1.0 - ) - ) - ) - (else - 0.0 - ) - ) - ) - ) - ) + (f28-1 (* f28-0 + (cond + ((zero? v1-17) + (- (fmax (analog-input (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 8)) + 0.0 + 32.0 + 255.0 + 1.0) + (analog-input (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 9)) + 0.0 + 32.0 + 255.0 + 1.0)))) + ((= v1-17 1) + (fmax (analog-input (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 8)) + 0.0 + 32.0 + 255.0 + 1.0) + (analog-input (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 9)) + 0.0 + 32.0 + 255.0 + 1.0))) + (else 0.0))))) (let ((f26-2 (analog-input (the-as int (-> self control unknown-cpad-info00 lefty)) 128.0 32.0 110.0 1.0))) (when (-> self racer stick-off) (set! f30-0 0.0) - (set! f26-2 0.0) - ) + (set! f26-2 0.0)) (+! (-> self racer front-turn) (* 0.0625 (deg-diff (-> self racer front-turn) (* 3640.889 f30-0)))) - (+! (-> self racer tail-tilt) (* 0.0625 (deg-diff (-> self racer tail-tilt) (* -3640.889 f26-2)))) - ) - (let* ((f26-3 - (* f30-0 (lerp-scale 5461.3335 7281.778 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) - ) - (f0-29 - (* f28-1 (lerp-scale 546.13336 3640.889 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) - ) + (+! (-> self racer tail-tilt) (* 0.0625 (deg-diff (-> self racer tail-tilt) (* -3640.889 f26-2))))) + (let* ((f26-3 (* f30-0 (lerp-scale 5461.3335 7281.778 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) + (f0-29 (* f28-1 (lerp-scale 546.13336 3640.889 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) (f1-3 (* -0.8 (-> self racer rotv y))) (f0-33 (+ (cond - ((< (* f1-3 f26-3) 0.0) - 0.0 - ) - (else - (let ((f2-3 (+ 910.2222 (fabs f1-3)))) - (fmax (fmin f26-3 f2-3) (- f2-3)) - ) - ) - ) + ((< (* f1-3 f26-3) 0.0) 0.0) + (else (let ((f2-3 (+ 910.2222 (fabs f1-3)))) (fmax (fmin f26-3 f2-3) (- f2-3))))) (cond - ((< (* f1-3 f0-29) 0.0) - 0.0 - ) - (else - (let ((f1-5 (+ 910.2222 (fabs f1-3)))) - (fmax (fmin f0-29 f1-5) (- f1-5)) - ) - ) - ) - ) - ) - ) - (+! (-> self racer rot z) (* 0.05 (deg-diff (-> self racer rot z) (fmax -7281.778 (fmin 7281.778 f0-33))))) - ) + ((< (* f1-3 f0-29) 0.0) 0.0) + (else (let ((f1-5 (+ 910.2222 (fabs f1-3)))) (fmax (fmin f0-29 f1-5) (- f1-5)))))))) + (+! (-> self racer rot z) (* 0.05 (deg-diff (-> self racer rot z) (fmax -7281.778 (fmin 7281.778 f0-33)))))) (racer-xz f30-0 f28-1) - (racer-thrust (the-as basic f30-0) f28-1) - ) - ) + (racer-thrust (the-as basic f30-0) f28-1))) (racer-calc-gravity) (add-gravity) (reverse-conversions (-> self control transv)) - (let ((f30-1 - (/ (* (-> self racer tail-tilt) (+ 20480.0 (-> self control unknown-float01))) - (+ 20480.0 (-> self racer transv-max)) - ) - ) - ) + (let ((f30-1 (/ (* (-> self racer tail-tilt) (+ 20480.0 (-> self control unknown-float01))) (+ 20480.0 (-> self racer transv-max))))) (cond ((racer-on-ground?) (seek! (-> self control unknown-float81) 1.0 (* 8.0 (seconds-per-frame))) @@ -1288,142 +801,77 @@ (set! (-> self racer speed-rotx) 0.25) (let ((f0-52 (-> self racer bob-timer))) (let ((f1-16 (+ (-> self racer bob-timer) (* (-> self racer bob-meta-timer) (-> *display* time-adjust-ratio)))) - (f2-12 (-> self racer bob-period)) - ) - (set! (-> self racer bob-timer) (- f1-16 (* (the float (the int (/ f1-16 f2-12))) f2-12))) - ) + (f2-12 (-> self racer bob-period))) + (set! (-> self racer bob-timer) (- f1-16 (* (the float (the int (/ f1-16 f2-12))) f2-12)))) (when (!= (the int (/ f0-52 (* 0.5 (-> self racer bob-period)))) - (the int (/ (-> self racer bob-timer) (* 0.5 (-> self racer bob-period)))) - ) + (the int (/ (-> self racer bob-timer) (* 0.5 (-> self racer bob-period))))) (seek! (-> self racer bob-mult-trans) 1.0 0.75) - (if (< 1.5 (-> self racer bob-meta-meta-timer)) - (seek! (-> self racer bob-meta-meta-timer) 1.0 0.5) - ) + (if (< 1.5 (-> self racer bob-meta-meta-timer)) (seek! (-> self racer bob-meta-meta-timer) 1.0 0.5)) (when (time-elapsed? (-> self racer bob-meta-time) (seconds 2.2)) (set-time! (-> self racer bob-meta-time)) - (set! (-> self racer bob-meta-meta-timer) (rand-vu-float-range 0.8 1.2)) - ) - ) - ) + (set! (-> self racer bob-meta-meta-timer) (rand-vu-float-range 0.8 1.2))))) (let ((f0-63 (lerp-scale -1.0 -0.33 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) - (seek! (-> self racer bob-mult-rot) f0-63 (* 8.0 (seconds-per-frame))) - ) - (if (< 0.0 f30-1) - (set! f30-1 0.0) - ) - (set! (-> self racer stick-lock) #f) - ) + (seek! (-> self racer bob-mult-rot) f0-63 (* 8.0 (seconds-per-frame)))) + (if (< 0.0 f30-1) (set! f30-1 0.0)) + (set! (-> self racer stick-lock) #f)) (else - (seek! (-> self control unknown-float81) 0.0 (* 2.0 (seconds-per-frame))) - (seek! (-> self racer mult-rotx) 1.0 (* 16.0 (seconds-per-frame))) - (let ((f0-77 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (the-as vector (-> self control trans-old))) - (let* ((v1-128 (-> self racer bounce)) - (f1-36 (cond - ((= v1-128 1) - (* -0.08888889 f0-77) - ) - ((= v1-128 2) - (* -0.035555556 f0-77) - ) - ((= v1-128 3) - (* -0.017777778 f0-77) - ) - (else - (* -0.13333334 f0-77) - ) - ) - ) - ) - (if (-> self racer hop?) - (set! f1-36 (* 0.5 f1-36)) - ) - (if (= (-> self control unknown-surface00 mode) 'air) - (set! (-> self racer targ-rotx) (fmax -2730.6667 (fmin 5461.3335 f1-36))) - ) - ) + (seek! (-> self control unknown-float81) 0.0 (* 2.0 (seconds-per-frame))) + (seek! (-> self racer mult-rotx) 1.0 (* 16.0 (seconds-per-frame))) + (let ((f0-77 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (the-as vector (-> self control trans-old))) + (let* ((v1-128 (-> self racer bounce)) + (f1-36 (cond + ((= v1-128 1) (* -0.08888889 f0-77)) + ((= v1-128 2) (* -0.035555556 f0-77)) + ((= v1-128 3) (* -0.017777778 f0-77)) + (else (* -0.13333334 f0-77))))) + (if (-> self racer hop?) (set! f1-36 (* 0.5 f1-36))) + (if (= (-> self control unknown-surface00 mode) 'air) + (set! (-> self racer targ-rotx) (fmax -2730.6667 (fmin 5461.3335 f1-36))))) + (cond + ((>= f0-77 -32768.0) + (cond + ((or (= (-> self next-state name) 'target-racing-jump) + (and (= (-> self next-state name) 'target-racing-bounce) (= (-> self racer bounce) 1))) + (set! (-> self racer speed-rotx) 0.5) + (when (time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) + (seek! (-> self racer hill-rotx) 0.0 (* 65536.0 (seconds-per-frame))) + (set! (-> self racer speed-rotx) 0.6))) + (else (set! (-> self racer speed-rotx) 0.25))) + (seek! (-> self racer mult-rotx) 1.0 (* 64.0 (seconds-per-frame)))) + (else (set! (-> self racer speed-rotx) 0.025)))) + (let ((f0-91 (+ (-> self racer bob-timer) (* (-> self racer bob-meta-timer) (-> *display* time-adjust-ratio)))) + (f1-44 (-> self racer bob-period))) + (set! (-> self racer bob-timer) (- f0-91 (* (the float (the int (/ f0-91 f1-44))) f1-44)))) + (seek! (-> self racer bob-mult-rot) 0.0 (* 16.0 (seconds-per-frame))) + (seek! (-> self racer bob-mult-trans) 0.0 (* 16.0 (seconds-per-frame))) + (set! f30-1 (lerp-scale f30-1 1820.4445 (the float (- (current-time) (-> self control unknown-dword11))) 0.0 900.0)) + (cond + ((and (logtest? (-> self control status) (cshape-moving-flags twall)) + (and (time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) + (or (-> self racer stick-lock) (< (target-move-dist (-> *TARGET-bank* stuck-time)) 4096.0)) + (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2))))) (cond - ((>= f0-77 -32768.0) - (cond - ((or (= (-> self next-state name) 'target-racing-jump) - (and (= (-> self next-state name) 'target-racing-bounce) (= (-> self racer bounce) 1)) - ) - (set! (-> self racer speed-rotx) 0.5) - (when (time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) - (seek! (-> self racer hill-rotx) 0.0 (* 65536.0 (seconds-per-frame))) - (set! (-> self racer speed-rotx) 0.6) - ) - ) - (else - (set! (-> self racer speed-rotx) 0.25) - ) - ) - (seek! (-> self racer mult-rotx) 1.0 (* 64.0 (seconds-per-frame))) - ) - (else - (set! (-> self racer speed-rotx) 0.025) - ) - ) - ) - (let ((f0-91 (+ (-> self racer bob-timer) (* (-> self racer bob-meta-timer) (-> *display* time-adjust-ratio)))) - (f1-44 (-> self racer bob-period)) - ) - (set! (-> self racer bob-timer) (- f0-91 (* (the float (the int (/ f0-91 f1-44))) f1-44))) - ) - (seek! (-> self racer bob-mult-rot) 0.0 (* 16.0 (seconds-per-frame))) - (seek! (-> self racer bob-mult-trans) 0.0 (* 16.0 (seconds-per-frame))) - (set! f30-1 - (lerp-scale f30-1 1820.4445 (the float (- (current-time) (-> self control unknown-dword11))) 0.0 900.0) - ) - (cond - ((and (logtest? (-> self control status) (cshape-moving-flags twall)) - (and (time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) - (or (-> self racer stick-lock) (< (target-move-dist (-> *TARGET-bank* stuck-time)) 4096.0)) - (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - ) - (cond - ((and (< 0.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control last-known-safe-ground)) - ) - ) - (logtest? (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ) - (+! (-> self racer stuck-count) 1) - (go target-racing-smack 122880.0 #f) - ) - (else - (set! (-> self racer stick-lock) #t) - ) - ) - ) - (else - (set! (-> self racer stick-lock) #f) - ) - ) - ) - ) - (+! (-> self racer lean-rotx) (* 0.1 (deg-diff (-> self racer lean-rotx) f30-1))) - ) + ((and (< 0.0 + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control last-known-safe-ground)))) + (logtest? (-> self control root-prim prim-core action) (collide-action racer-grounded))) + (+! (-> self racer stuck-count) 1) + (go target-racing-smack 122880.0 #f)) + (else (set! (-> self racer stick-lock) #t)))) + (else (set! (-> self racer stick-lock) #f))))) + (+! (-> self racer lean-rotx) (* 0.1 (deg-diff (-> self racer lean-rotx) f30-1)))) (set! (-> self racer lean-rotx) 0.0) (set! (-> self racer rot-old quad) (-> self racer rot quad)) (set! (-> self racer change-roty-old) (-> self racer change-roty)) (set! (-> self racer rot y) - (the float - (sar (shl (the int (+ (-> self racer rot y) (* (-> self racer rotv y) (seconds-per-frame)))) 48) 48) - ) - ) + (the float (sar (shl (the int (+ (-> self racer rot y) (* (-> self racer rotv y) (seconds-per-frame)))) 48) 48))) (set! (-> self racer change-roty) - (* (deg-diff (-> self racer rot-old y) (-> self racer rot y)) (-> *display* frames-per-second)) - ) + (* (deg-diff (-> self racer rot-old y) (-> self racer rot y)) (-> *display* frames-per-second))) (racer-collision) (racer-integrate) - (post-flag-setup) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (post-flag-setup)) + (set-time-ratios *display* (the float gp-0))) (target-compute-slopes *up-vector*) (racer-effects) (racer-sounds) @@ -1437,8 +885,6 @@ (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) (set! (-> self racer bike-scale quad) (-> self control scale quad)) (let ((v1-240 (-> *target-shadow-control* settings shadow-dir quad))) - (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-240) - ) + (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-240)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/robocave/cave-trap.gc b/goal_src/jak1/levels/robocave/cave-trap.gc index 4e33b2b4a7..b2d32095fe 100644 --- a/goal_src/jak1/levels/robocave/cave-trap.gc +++ b/goal_src/jak1/levels/robocave/cave-trap.gc @@ -1,74 +1,49 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROB.DGO") - (require "levels/maincave/baby-spider.gc") - -;; name: cave-trap.gc -;; name in dgo: cave-trap -;; dgos: L1, ROB - (declare-type spider-egg process-drawable) ;; DECOMP BEGINS (deftype cave-trap (process-drawable) - ((root collide-shape :override) - (spider-count int32) - (alt-actors (array entity-actor)) - (spawn-delay time-frame) - (last-spawn-time time-frame) - (debug-targ-pos vector :inline) - ) + ((root collide-shape :override) + (spider-count int32) + (alt-actors (array entity-actor)) + (spawn-delay time-frame) + (last-spawn-time time-frame) + (debug-targ-pos vector :inline)) (:methods - (cave-trap-method-20 (_type_) symbol) - ) + (cave-trap-method-20 (_type_) symbol)) (:states - cave-trap-active - cave-trap-give-up - cave-trap-idle - ) - ) - + cave-trap-active + cave-trap-give-up + cave-trap-idle)) (deftype spider-vent (process-drawable) - ((last-spawn-time time-frame) - ) + ((last-spawn-time time-frame)) (:states - spider-vent-idle - ) - ) - + spider-vent-idle)) (defstate spider-vent-idle (spider-vent) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('can-spawn?) - (return (time-elapsed? (-> self last-spawn-time) (seconds 1))) - v0-0 - ) - (('notify-spawned) - (set! v0-0 (current-time)) - (set! (-> self last-spawn-time) (the-as time-frame v0-0)) - v0-0 - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('can-spawn?) (return (time-elapsed? (-> self last-spawn-time) (seconds 1))) v0-0) + (('notify-spawned) (set! v0-0 (current-time)) (set! (-> self last-spawn-time) (the-as time-frame v0-0)) v0-0))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod init-from-entity! ((this spider-vent) (arg0 entity-actor)) (set! (-> this last-spawn-time) 0) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (go spider-vent-idle) - (none) - ) + (none)) (defbehavior cave-trap-default-event-handler cave-trap ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -76,30 +51,15 @@ (when (= (-> arg0 type) baby-spider) (let ((v0-0 (the-as object (max 0 (+ (-> self spider-count) -1))))) (set! (-> self spider-count) (the-as int v0-0)) - v0-0 - ) - ) - ) - (('notify) - (if (and (= (-> arg0 type) spider-egg) (= (-> self next-state name) 'cave-trap-idle)) - (go cave-trap-active) - ) - ) - ) - ) + v0-0))) + (('notify) (if (and (= (-> arg0 type) spider-egg) (= (-> self next-state name) 'cave-trap-idle)) (go cave-trap-active))))) (deftype spawn-baby-spider-best (structure) - ((index int32) - (dist float) - ) - ) - + ((index int32) + (dist float))) (deftype spawn-baby-spider-work (structure) - ((best spawn-baby-spider-best 4 :inline) - ) - ) - + ((best spawn-baby-spider-best 4 :inline))) (defmethod cave-trap-method-20 ((this cave-trap)) (set-time! (-> this last-spawn-time)) @@ -107,8 +67,7 @@ (let ((s5-0 (new 'stack-no-clear 'spawn-baby-spider-work))) (let ((s4-0 (new 'stack-no-clear 'vector))) (dotimes (v1-2 4) - (set! (-> s5-0 best v1-2 index) -1) - ) + (set! (-> s5-0 best v1-2 index) -1)) (set! (-> s4-0 quad) (-> (matrix-local->world #f #f) vector 2 quad)) (set! (-> s4-0 y) 0.0) (vector-normalize! s4-0 102400.0) @@ -116,73 +75,41 @@ (set! (-> s4-0 y) (-> (target-pos 0) y)) (dotimes (s3-2 (-> this alt-actors length)) (let* ((v1-10 (-> this alt-actors s3-2)) - (s1-0 (if v1-10 - (-> v1-10 extra process) - ) - ) - (s2-2 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) process-drawable)) - s1-0 - ) - ) - ) + (s1-0 (if v1-10 (-> v1-10 extra process))) + (s2-2 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) process-drawable)) s1-0))) (when s2-2 (when (send-event s2-2 'can-spawn?) (let ((f30-0 (vector-vector-distance s4-0 (-> (the-as process-drawable s2-2) root trans))) - (a0-12 (new 'stack-no-clear 'sphere)) - ) + (a0-12 (new 'stack-no-clear 'sphere))) (let ((v1-16 (-> s5-0 best 3))) (when (or (< (-> v1-16 index) 0) (< f30-0 (-> v1-16 dist))) (set! (-> v1-16 index) s3-2) - (set! (-> v1-16 dist) f30-0) - ) - ) + (set! (-> v1-16 dist) f30-0))) (set! (-> a0-12 quad) (-> (the-as process-drawable s2-2) root trans quad)) (set! (-> a0-12 w) 4096.0) (when (sphere-in-view-frustum? a0-12) (let ((v1-18 (-> s5-0 best 2))) (when (or (< (-> v1-18 index) 0) (< f30-0 (-> v1-18 dist))) (set! (-> v1-18 index) s3-2) - (set! (-> v1-18 dist) f30-0) - ) - ) + (set! (-> v1-18 dist) f30-0))) (when (>= 40960.0 f30-0) (let ((v1-19 (-> s5-0 best 1))) (when (or (< (-> v1-19 index) 0) (< f30-0 (-> v1-19 dist))) (set! (-> v1-19 index) s3-2) - (set! (-> v1-19 dist) f30-0) - ) - ) + (set! (-> v1-19 dist) f30-0))) (when (= (-> s2-2 type) spider-egg) (let ((v1-21 (-> s5-0 best))) (when (or (< (-> v1-21 0 index) 0) (< f30-0 (-> v1-21 0 dist))) (set! (-> v1-21 0 index) s3-2) - (set! (-> v1-21 0 dist) f30-0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (set! (-> v1-21 0 dist) f30-0)))))))))))) (dotimes (s4-1 4) (let ((v1-29 (-> s5-0 best s4-1 index))) (when (>= v1-29 0) (let* ((v1-32 (-> this alt-actors v1-29)) - (s2-3 (if v1-32 - (-> v1-32 extra process) - ) - ) - (s3-3 (if (and (nonzero? s2-3) (type-type? (-> s2-3 type) process-drawable)) - s2-3 - ) - ) + (s2-3 (if v1-32 (-> v1-32 extra process))) + (s3-3 (if (and (nonzero? s2-3) (type-type? (-> s2-3 type) process-drawable)) s2-3)) (s2-4 (new 'stack-no-clear 'vector)) - (s1-1 (new 'stack-no-clear 'baby-spider-spawn-params)) - ) + (s1-1 (new 'stack-no-clear 'baby-spider-spawn-params))) (vector-! s2-4 (target-pos 0) (-> (the-as process-drawable s3-3) root trans)) (vector-normalize! s2-4 1.0) (init! s1-1 (= (-> s3-3 type) spider-egg) #t #t #t 7 1 'untrigger) @@ -191,91 +118,62 @@ (set! (-> (the-as baby-spider (-> v1-40 0)) die-if-not-visible?) #t) (+! (-> this spider-count) 1) (send-event s3-3 'notify-spawned) - (return #f) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (return #f)))))))) + #f) (defstate cave-trap-idle (cave-trap) :event cave-trap-default-event-handler - :trans (behavior () - (when *target* - (let* ((gp-0 (target-pos 0)) - (f0-0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - (f1-1 (- (-> gp-0 y) (-> self root trans y))) - ) - (when (and (>= 61440.0 f1-1) (>= f1-1 -16384.0)) - (when (>= 274432.0 f0-0) - (when (or (>= 188416.0 f0-0) (send-event *target* 'query 'powerup (pickup-type eco-yellow))) - (level-hint-spawn (text-id cave-trap-nest-hint) "sksp0341" (the-as entity #f) *entity-pool* (game-task none)) - (close-specific-task! (game-task cave-spider-tunnel) (task-status need-hint)) - (go cave-trap-active) - ) - ) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :trans + (behavior () + (when *target* + (let* ((gp-0 (target-pos 0)) + (f0-0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) + (f1-1 (- (-> gp-0 y) (-> self root trans y)))) + (when (and (>= 61440.0 f1-1) (>= f1-1 -16384.0)) + (when (>= 274432.0 f0-0) + (when (or (>= 188416.0 f0-0) (send-event *target* 'query 'powerup (pickup-type eco-yellow))) + (level-hint-spawn (text-id cave-trap-nest-hint) "sksp0341" (the-as entity #f) *entity-pool* (game-task none)) + (close-specific-task! (game-task cave-spider-tunnel) (task-status need-hint)) + (go cave-trap-active))))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate cave-trap-active (cave-trap) :event cave-trap-default-event-handler - :enter (behavior () - (set! (-> self spawn-delay) (seconds 0.5)) - ) - :trans (behavior () - (cond - (*target* - (let* ((gp-0 (target-pos 0)) - (f0-0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - (f1-1 (- (-> gp-0 y) (-> self root trans y))) - ) - (if (or (< 73728.0 f1-1) (< f1-1 -24576.0) (< 368640.0 f0-0)) - (go cave-trap-give-up) - ) - ) - (if (and (< (-> self spider-count) 8) (time-elapsed? (-> self last-spawn-time) (-> self spawn-delay))) - (cave-trap-method-20 self) - ) - ) - (else - (go cave-trap-give-up) - ) - ) - 0 - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :enter + (behavior () + (set! (-> self spawn-delay) (seconds 0.5))) + :trans + (behavior () + (cond + (*target* + (let* ((gp-0 (target-pos 0)) + (f0-0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) + (f1-1 (- (-> gp-0 y) (-> self root trans y)))) + (if (or (< 73728.0 f1-1) (< f1-1 -24576.0) (< 368640.0 f0-0)) (go cave-trap-give-up))) + (if (and (< (-> self spider-count) 8) (time-elapsed? (-> self last-spawn-time) (-> self spawn-delay))) + (cave-trap-method-20 self))) + (else (go cave-trap-give-up))) + 0) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate cave-trap-give-up (cave-trap) :event cave-trap-default-event-handler - :code (behavior () - (suspend) - (go cave-trap-idle) - ) - ) + :code + (behavior () + (suspend) + (go cave-trap-idle))) (defmethod relocate ((this cave-trap) (arg0 int)) - (if (nonzero? (-> this alt-actors)) - (&+! (-> this alt-actors) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this alt-actors)) (&+! (-> this alt-actors) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this cave-trap) (arg0 entity-actor)) (set! (-> this spider-count) 0) @@ -285,12 +183,10 @@ (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) @@ -301,9 +197,6 @@ (let ((s4-1 (entity-actor-count arg0 'alt-actor))) (set! (-> this alt-actors) (new 'process 'boxed-array entity-actor s4-1)) (dotimes (s3-1 s4-1) - (set! (-> this alt-actors s3-1) (entity-actor-lookup arg0 'alt-actor s3-1)) - ) - ) + (set! (-> this alt-actors s3-1) (entity-actor-lookup arg0 'alt-actor s3-1)))) (go cave-trap-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/robocave/robocave-part.gc b/goal_src/jak1/levels/robocave/robocave-part.gc index 81ab1e03c4..5f651694c7 100644 --- a/goal_src/jak1/levels/robocave/robocave-part.gc +++ b/goal_src/jak1/levels/robocave/robocave-part.gc @@ -1,179 +1,162 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROB.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: robocave-part.gc -;; name in dgo: robocave-part -;; dgos: L1, ROB - ;; DECOMP BEGINS -(deftype robocave-part (part-spawner) - () - ) - +(deftype robocave-part (part-spawner) ()) (defpartgroup group-part-robocave-torch :id 506 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 729 :fade-after (meters 150) :falloff-to (meters 180)) - (sp-item 730 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 731 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2) :length (seconds 0.3)) - (sp-item 732 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 733 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 734 :fade-after (meters 30) :falloff-to (meters 30)) - ) - ) + :parts + ((sp-item 729 :fade-after (meters 150) :falloff-to (meters 180)) + (sp-item 730 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 731 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2) :length (seconds 0.3)) + (sp-item 732 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 733 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 734 :fade-after (meters 30) :falloff-to (meters 30)))) (defpart 734 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 735) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 735) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 735 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 729 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.4 1 0.5) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 736) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.4 1 0.5) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 736))) (defpart 736 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 731 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 736) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 736))) (defpart 732 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 736) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 736))) (defpart 733 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 736) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 736))) (defpart 730 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) diff --git a/goal_src/jak1/levels/robocave/spider-egg.gc b/goal_src/jak1/levels/robocave/spider-egg.gc index c9abf31c8d..e4259de054 100644 --- a/goal_src/jak1/levels/robocave/spider-egg.gc +++ b/goal_src/jak1/levels/robocave/spider-egg.gc @@ -1,205 +1,153 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROB.DGO") - (require "engine/common-obs/generic-obs.gc") -;; name: spider-egg.gc -;; name in dgo: spider-egg -;; dgos: L1, ROB - - ;; DECOMP BEGINS (deftype spider-egg (process-drawable) - ((root collide-shape-moving :override) - (notify-actor entity-actor) - (broken-look lod-set :inline) - ) + ((root collide-shape-moving :override) + (notify-actor entity-actor) + (broken-look lod-set :inline)) (:states - spider-egg-die - spider-egg-hatch - (spider-egg-idle symbol) - ) - ) - + spider-egg-die + spider-egg-hatch + (spider-egg-idle symbol))) -(defskelgroup *spider-egg-unbroken-sg* spider-egg spider-egg-unbroken-lod0-jg -1 - ((spider-egg-unbroken-lod0-mg (meters 20)) - (spider-egg-unbroken-lod1-mg (meters 40)) - (spider-egg-unbroken-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 2) - ) +(defskelgroup *spider-egg-unbroken-sg* + spider-egg + spider-egg-unbroken-lod0-jg + -1 + ((spider-egg-unbroken-lod0-mg (meters 20)) + (spider-egg-unbroken-lod1-mg (meters 40)) + (spider-egg-unbroken-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 2)) -(defskelgroup *spider-egg-broken-sg* spider-egg spider-egg-broken-lod0-jg -1 - ((spider-egg-broken-lod0-mg (meters 20)) - (spider-egg-broken-lod1-mg (meters 40)) - (spider-egg-broken-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 2) - ) +(defskelgroup *spider-egg-broken-sg* + spider-egg + spider-egg-broken-lod0-jg + -1 + ((spider-egg-broken-lod0-mg (meters 20)) + (spider-egg-broken-lod1-mg (meters 40)) + (spider-egg-broken-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 2)) (defstate spider-egg-idle (spider-egg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('touch) - (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0) - ) - (('can-spawn?) - (return #t) - v0-0 - ) - (('notify-spawned) - (go spider-egg-hatch) - ) - (('attack) - (go spider-egg-die) - ) - ) - ) - :enter (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - ) - :code (behavior ((arg0 symbol)) - (let ((f30-0 (rand-vu-float-range 0.8 1.2))) - (cond - (arg0 - (ja-channel-set! 1) - (ja-no-eval :group! spider-egg-idle-ja - :num! (seek! max f30-0) - :frame-num (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('touch) (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0)) + (('can-spawn?) (return #t) v0-0) + (('notify-spawned) (go spider-egg-hatch)) + (('attack) (go spider-egg-die)))) + :enter + (behavior ((arg0 symbol)) + (set-time! (-> self state-time))) + :code + (behavior ((arg0 symbol)) + (let ((f30-0 (rand-vu-float-range 0.8 1.2))) + (cond + (arg0 + (ja-channel-set! 1) + (ja-no-eval :group! + spider-egg-idle-ja + :num! (seek! max f30-0) + :frame-num + (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (else (ja-channel-push! 1 (seconds 0.2)))) + (loop + (let ((gp-2 (rand-vu-int-range 2 6))) + (dotimes (s5-0 gp-2) + (ja-no-eval :group! spider-egg-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! spider-egg-twitch-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - ) - ) - (loop - (let ((gp-2 (rand-vu-int-range 2 6))) - (dotimes (s5-0 gp-2) - (ja-no-eval :group! spider-egg-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! spider-egg-twitch-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))))) + :post ja-post) (defstate spider-egg-hatch (spider-egg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 symbol)) - (case message - (('can-spawn?) - (return (the-as object #f)) - v0-0 - ) - ) - ) - :code (behavior () - (cleanup-for-death self) - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 324) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! spider-egg-crack-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self draw status) (draw-status hidden)) - (until (not (-> self child)) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 symbol)) + (case message + (('can-spawn?) (return (the-as object #f)) v0-0))) + :code + (behavior () + (cleanup-for-death self) + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 324) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! spider-egg-crack-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self draw status) (draw-status hidden)) + (until (not (-> self child)) + (suspend))) + :post ja-post) (defstate spider-egg-die (spider-egg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 symbol)) - (case message - (('can-spawn?) - (return (the-as object #f)) - v0-0 - ) - ) - ) - :code (behavior () - (cleanup-for-death self) - (logclear! (-> self mask) (process-mask actor-pause)) - (when (-> self notify-actor) - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 1) - (set! (-> a1-0 message) 'notify) - (set! (-> a1-0 param 0) (the-as uint 'die)) - (let ((t9-1 send-event-function) - (v1-9 (-> self notify-actor)) - ) - (t9-1 - (if v1-9 - (-> v1-9 extra process) - ) - a1-0 - ) - ) - ) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 325) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-channel-push! 1 (seconds 0.1)) - (clear-collide-with-as (-> self root)) - (ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self draw status) (draw-status hidden)) - (until (not (-> self child)) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 symbol)) + (case message + (('can-spawn?) (return (the-as object #f)) v0-0))) + :code + (behavior () + (cleanup-for-death self) + (logclear! (-> self mask) (process-mask actor-pause)) + (when (-> self notify-actor) + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) 'notify) + (set! (-> a1-0 param 0) (the-as uint 'die)) + (let ((t9-1 send-event-function) + (v1-9 (-> self notify-actor))) + (t9-1 (if v1-9 (-> v1-9 extra process)) a1-0)))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 325) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-channel-push! 1 (seconds 0.1)) + (clear-collide-with-as (-> self root)) + (ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self draw status) (draw-status hidden)) + (until (not (-> self child)) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this spider-egg) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) @@ -207,48 +155,34 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 4096.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *spider-egg-unbroken-sg* '()) (setup-lods! (-> this broken-look) *spider-egg-broken-sg* (-> this draw art-group) (-> this entity)) (set-vector! (-> this root scale) 0.4 0.4 0.4 1.0) (if (not (move-to-ground (-> this root) 12288.0 40960.0 #t (collide-kind background))) - (go process-drawable-art-error "no ground") - ) + (go process-drawable-art-error "no ground")) (+! (-> this root trans y) -409.6) (let ((s4-1 (new 'stack-no-clear 'vector))) (set! (-> s4-1 quad) (-> this root surface-normal quad)) (+! (-> s4-1 x) (rand-vu-float-range -0.2 0.2)) (+! (-> s4-1 z) (rand-vu-float-range -0.2 0.2)) (vector-normalize! s4-1 1.0) - (quaternion-axis-angle! - (-> this root quat) - (-> s4-1 x) - (-> s4-1 y) - (-> s4-1 z) - (rand-vu-float-range 0.0 65536.0) - ) - ) + (quaternion-axis-angle! (-> this root quat) (-> s4-1 x) (-> s4-1 y) (-> s4-1 z) (rand-vu-float-range 0.0 65536.0))) (update-transforms! (-> this root)) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (if (> (entity-actor-count arg0 'alt-actor) 0) - (set! (-> this notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) - (set! (-> this notify-actor) #f) - ) + (set! (-> this notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) + (set! (-> this notify-actor) #f)) (go spider-egg-idle #t) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/rolling/rolling-lightning-mole.gc b/goal_src/jak1/levels/rolling/rolling-lightning-mole.gc index acd89ccf0b..1dc56789de 100644 --- a/goal_src/jak1/levels/rolling/rolling-lightning-mole.gc +++ b/goal_src/jak1/levels/rolling/rolling-lightning-mole.gc @@ -1,109 +1,58 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROL.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: rolling-lightning-mole.gc -;; name in dgo: rolling-lightning-mole -;; dgos: L1, ROL ;; note: changed for high fps ;; DECOMP BEGINS (defun find-adjacent-bounds-one ((arg0 nav-mesh) (arg1 nav-poly) (arg2 int) (arg3 (array int8)) (arg4 (array int8)) (arg5 vector)) (local-vars (v0-2 object) (v1-2 int) (v1-30 int) (a0-2 int) (a0-12 int) (sv-16 nav-poly) (sv-32 int)) - (let ((v1-1 (+ arg2 1))) - (let ((a0-1 2)) - (set-on-less-than a0-2 a0-1 v1-1) - ) - (move-if-not-zero v1-2 0 a0-2 v1-1) - ) + (let ((v1-1 (+ arg2 1))) (let ((a0-1 2)) (set-on-less-than a0-2 a0-1 v1-1)) (move-if-not-zero v1-2 0 a0-2 v1-1)) (let ((v1-4 (-> arg1 adj-poly v1-2))) (cond - ((= v1-4 255) - ) + ((= v1-4 255)) ((not (logtest? (-> arg0 poly v1-4 pat) 1)) (format 0 "ERROR: find-adjacent-bounds-one given a non-boundary edge to start~%") - (return #f) - ) - ) - ) + (return #f)))) (let ((s0-0 (-> arg1 vertex (-> arg3 arg2)))) (set! sv-16 arg1) - (while (begin (label cfg-28) #t) + (while (begin + (label cfg-28) + #t) (set! sv-32 0) (while (< sv-32 3) (cond - ((and (= sv-32 arg2) (= sv-16 arg1)) - ) + ((and (= sv-32 arg2) (= sv-16 arg1))) ((= s0-0 (-> sv-16 vertex (-> arg4 sv-32))) (vector+! arg5 (-> arg0 origin) (the-as vector (-> arg0 vertex (-> sv-16 vertex (-> arg3 sv-32))))) (let ((v1-29 (+ sv-32 1))) - (let ((a0-11 2)) - (set-on-less-than a0-12 a0-11 v1-29) - ) - (move-if-not-zero v1-30 0 a0-12 v1-29) - ) + (let ((a0-11 2)) (set-on-less-than a0-12 a0-11 v1-29)) + (move-if-not-zero v1-30 0 a0-12 v1-29)) (let ((v1-32 (-> sv-16 adj-poly v1-30))) - (if (= v1-32 255) - (return #t) - ) + (if (= v1-32 255) (return #t)) (let ((v1-35 (-> arg0 poly v1-32))) - (set! v0-2 (cond - ((= arg1 v1-35) - (format 0 "ERROR: find-adjacent-bounds-one given tried to go back~%") - ) - (else - (cond - ((logtest? (-> v1-35 pat) 1) - (return #t) - ) - (else - (set! arg1 sv-16) - (set! sv-16 v1-35) - (goto cfg-28) - ) - ) - v0-2 - ) - ) - ) - ) - ) - ) - ) - (set! sv-32 (+ sv-32 1)) - ) + (set! v0-2 + (cond + ((= arg1 v1-35) (format 0 "ERROR: find-adjacent-bounds-one given tried to go back~%")) + (else + (cond + ((logtest? (-> v1-35 pat) 1) (return #t)) + (else (set! arg1 sv-16) (set! sv-16 v1-35) (goto cfg-28))) + v0-2))))))) + (set! sv-32 (+ sv-32 1))) (format 0 "ERROR: abnormal exit from find-adjacent-bounds-one~%") - (return #f) - ) - ) - #f - ) + (return #f))) + #f) ;; WARN: Function find-adjacent-bounds has a return type of none, but the expression builder found a return statement. (defun find-adjacent-bounds ((arg0 nav-mesh) (arg1 clip-travel-vector-to-mesh-return-info)) (when (!= (-> arg1 found-boundary) #t) (format 0 "ERROR: find-adjacent-bounds passed info which doesn't specify a boundary edge~%") - (return #f) - ) - (find-adjacent-bounds-one - arg0 - (-> arg1 poly) - (-> arg1 edge) - *edge-vert0-table* - *edge-vert1-table* - (-> arg1 vert-prev) - ) - (find-adjacent-bounds-one - arg0 - (-> arg1 poly) - (-> arg1 edge) - *edge-vert1-table* - *edge-vert0-table* - (-> arg1 vert-next) - ) + (return #f)) + (find-adjacent-bounds-one arg0 (-> arg1 poly) (-> arg1 edge) *edge-vert0-table* *edge-vert1-table* (-> arg1 vert-prev)) + (find-adjacent-bounds-one arg0 (-> arg1 poly) (-> arg1 edge) *edge-vert1-table* *edge-vert0-table* (-> arg1 vert-next)) (vector-reset! (-> arg1 prev-normal)) (vector-reset! (-> arg1 next-normal)) (set! (-> arg1 prev-normal x) (- (-> arg1 vert-prev z) (-> arg1 vert-0 z))) @@ -124,48 +73,39 @@ (camera-line-rel-len s5-1 (-> arg1 boundary-normal) 8192.0 (new 'static 'vector4w :y #xff :w #x80)) (vector+! s5-1 (-> arg1 vert-1) (-> arg1 vert-next)) (vector-float*! s5-1 s5-1 0.5) - (camera-line-rel-len s5-1 (-> arg1 next-normal) 8192.0 (new 'static 'vector4w :z #xff :w #x80)) - ) - (none) - ) + (camera-line-rel-len s5-1 (-> arg1 next-normal) 8192.0 (new 'static 'vector4w :z #xff :w #x80))) + (none)) (deftype fleeing-nav-enemy-info (structure) - ((min-reflect-angle float) - (max-reflect-angle float) - (max-boundary-deflection float) - (deflection-min-dist float) - (deflection-max-dist float) - (reflection-time int32) - (travel-rotate-speed float) - (blend_interp_angle float) - (min-speed-adjust float) - (max-speed-adjust float) - (speed-adjust-center float) - (speed-adjust-range float) - (abort-notice-distance float) - (min-notice-dist float) - (max-notice-dist float) - (min-stop-chase-dist float) - (max-stop-chase-dist float) - (max-flee-rotation float) - ) - :allow-misaligned - ) - + ((min-reflect-angle float) + (max-reflect-angle float) + (max-boundary-deflection float) + (deflection-min-dist float) + (deflection-max-dist float) + (reflection-time int32) + (travel-rotate-speed float) + (blend_interp_angle float) + (min-speed-adjust float) + (max-speed-adjust float) + (speed-adjust-center float) + (speed-adjust-range float) + (abort-notice-distance float) + (min-notice-dist float) + (max-notice-dist float) + (min-stop-chase-dist float) + (max-stop-chase-dist float) + (max-flee-rotation float)) + :allow-misaligned) (deftype fleeing-nav-enemy (nav-enemy) - ((last-reflection-time time-frame) - (run-blend-interp float) - (desired-travel vector :inline) - (saved-travel vector :inline) - (speed-adjust float) - (flee-info fleeing-nav-enemy-info :inline) - ) + ((last-reflection-time time-frame) + (run-blend-interp float) + (desired-travel vector :inline) + (saved-travel vector :inline) + (speed-adjust float) + (flee-info fleeing-nav-enemy-info :inline)) (:states - fleeing-nav-enemy-debug - ) - ) - + fleeing-nav-enemy-debug)) (defbehavior fleeing-nav-enemy-adjust-nav-info fleeing-nav-enemy () (let ((f30-0 (vector-vector-distance (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)))) @@ -175,34 +115,26 @@ ;; max distance. Since this is called more often above 60 FPS, the distance is skewed to the ;; lower end. This scales the distance back up based on the FPS ratio. (set! f30-0 (/ f30-0 DISPLAY_FPS_RATIO)) - (set! (-> self nav-info notice-distance) (lerp-clamp - (-> self flee-info min-notice-dist) - (-> self flee-info max-notice-dist) - (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))) - ) - ) - (set! (-> self nav-info stop-chase-distance) (lerp-clamp - (-> self flee-info min-stop-chase-dist) - (-> self flee-info max-stop-chase-dist) - (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))) - ) - ) - ) - ) + (set! (-> self nav-info notice-distance) + (lerp-clamp (-> self flee-info min-notice-dist) + (-> self flee-info max-notice-dist) + (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))))) + (set! (-> self nav-info stop-chase-distance) + (lerp-clamp (-> self flee-info min-stop-chase-dist) + (-> self flee-info max-stop-chase-dist) + (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))))))) (defun fleeing-nav-enemy-clip-travel ((arg0 fleeing-nav-enemy) (arg1 vector)) (local-vars (sv-224 vector) (sv-240 vector) (sv-256 vector) (sv-272 vector) (sv-288 vector)) (let ((s2-0 (new 'stack 'clip-travel-vector-to-mesh-return-info)) (gp-0 (new 'stack-no-clear 'vector)) - (s1-0 #f) - ) + (s1-0 #f)) (set! (-> gp-0 quad) (-> arg0 nav travel quad)) (set! (-> arg0 nav travel quad) (-> arg1 quad)) (nav-control-method-24 (-> arg0 nav) (-> arg0 flee-info deflection-max-dist) s2-0) (when (-> s2-0 found-boundary) (let ((s0-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) 0.0 0.0 (vector-! s0-0 (-> s2-0 intersection) (-> arg0 collide-info trans)) @@ -215,89 +147,48 @@ (cond ((< (-> arg0 flee-info deflection-min-dist) f28-0) (let* ((f0-9 (/ (- f28-0 (-> arg0 flee-info deflection-min-dist)) - (- (-> arg0 flee-info deflection-max-dist) (-> arg0 flee-info deflection-min-dist)) - ) - ) + (- (-> arg0 flee-info deflection-max-dist) (-> arg0 flee-info deflection-min-dist)))) (f0-10 (fmin 1.0 f0-9)) - (f28-1 (* (- 1.0 f0-10) (-> arg0 flee-info max-boundary-deflection))) - ) + (f28-1 (* (- 1.0 f0-10) (-> arg0 flee-info max-boundary-deflection)))) (cond ((< (cos f28-1) f30-0) (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) f30-0) - (let ((s0-1 vector-normalize!)) - (set! sv-224 s3-0) - (let ((a1-7 (sin f28-1))) - (s0-1 sv-224 a1-7) - ) - ) + (let ((s0-1 vector-normalize!)) (set! sv-224 s3-0) (let ((a1-7 (sin f28-1))) (s0-1 sv-224 a1-7))) (let ((s0-2 vector+float*!)) (set! sv-240 s3-0) (set! sv-256 s3-0) (let ((s2-1 (-> s2-0 boundary-normal)) - (a3-1 (cos f28-1)) - ) - (s0-2 sv-240 sv-256 s2-1 a3-1) - ) - ) - ) - (else - (let ((v1-15 s3-0)) - (set! (-> v1-15 quad) (-> s0-0 quad)) - v1-15 - ) - ) - ) - ) - ) + (a3-1 (cos f28-1))) + (s0-2 sv-240 sv-256 s2-1 a3-1)))) + (else (let ((v1-15 s3-0)) (set! (-> v1-15 quad) (-> s0-0 quad)) v1-15))))) ((< (cos (-> arg0 flee-info min-reflect-angle)) f30-0) (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) f30-0) (vector-normalize! s3-0 (sin (-> arg0 flee-info min-reflect-angle))) (let ((s1-2 vector--float*!) - (s0-4 s3-0) - ) + (s0-4 s3-0)) (set! sv-272 s3-0) (let ((s2-2 (-> s2-0 boundary-normal)) - (a3-3 (cos (-> arg0 flee-info min-reflect-angle))) - ) - (s1-2 s0-4 sv-272 s2-2 a3-3) - ) - ) - (set! s1-0 #t) - ) + (a3-3 (cos (-> arg0 flee-info min-reflect-angle)))) + (s1-2 s0-4 sv-272 s2-2 a3-3))) + (set! s1-0 #t)) ((< f30-0 (cos (-> arg0 flee-info max-reflect-angle))) (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) f30-0) (vector-normalize! s3-0 (sin (-> arg0 flee-info max-reflect-angle))) (let ((s1-4 vector--float*!) - (s0-6 s3-0) - ) + (s0-6 s3-0)) (set! sv-288 s3-0) (let ((s2-3 (-> s2-0 boundary-normal)) - (a3-5 (cos (-> arg0 flee-info max-reflect-angle))) - ) - (s1-4 s0-6 sv-288 s2-3 a3-5) - ) - ) - (set! s1-0 #t) - ) - (else - (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) (* 2.0 f30-0)) - (set! s1-0 #t) - ) - ) - ) - ) - (vector-normalize-copy! arg1 s3-0 (-> arg0 flee-info deflection-max-dist)) - ) - ) + (a3-5 (cos (-> arg0 flee-info max-reflect-angle)))) + (s1-4 s0-6 sv-288 s2-3 a3-5))) + (set! s1-0 #t)) + (else (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) (* 2.0 f30-0)) (set! s1-0 #t))))) + (vector-normalize-copy! arg1 s3-0 (-> arg0 flee-info deflection-max-dist)))) (set! (-> arg0 nav travel quad) (-> gp-0 quad)) - s1-0 - ) - ) + s1-0)) (defun fleeing-nav-enemy-adjust-travel ((arg0 fleeing-nav-enemy) (arg1 object)) (let ((s3-0 (new 'stack-no-clear 'matrix)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (let ((s5-0 (new 'stack-no-clear 'vector))) (set! (-> s4-0 quad) (-> arg0 saved-travel quad)) (set! (-> s4-0 y) 0.0) @@ -305,19 +196,15 @@ (set! (-> s5-0 y) 0.0) (vector-normalize! s4-0 1.0) (vector-normalize! s5-0 1.0) - (matrix-from-two-vectors-max-angle-partial! s3-0 s4-0 s5-0 (-> arg0 flee-info travel-rotate-speed) 0.2) - ) - (vector-matrix*! (-> arg0 saved-travel) s4-0 s3-0) - ) + (matrix-from-two-vectors-max-angle-partial! s3-0 s4-0 s5-0 (-> arg0 flee-info travel-rotate-speed) 0.2)) + (vector-matrix*! (-> arg0 saved-travel) s4-0 s3-0)) (vector-float*! (-> arg0 saved-travel) (-> arg0 saved-travel) (-> arg0 flee-info deflection-max-dist)) (set! (-> arg0 nav travel quad) (-> arg0 saved-travel quad)) - (vector+! (-> arg0 nav target-pos) (-> arg0 collide-info trans) (-> arg0 nav travel)) - ) + (vector+! (-> arg0 nav target-pos) (-> arg0 collide-info trans) (-> arg0 nav travel))) (defbehavior fleeing-nav-enemy-chase-post-func fleeing-nav-enemy () (let ((gp-0 (new 'stack-no-clear 'matrix)) - (s5-0 (new 'stack-no-clear 'matrix)) - ) + (s5-0 (new 'stack-no-clear 'matrix))) (quaternion->matrix gp-0 (-> self collide-info quat)) (set! (-> self collide-info old-y-angle-diff) 0.0) (nav-enemy-travel-post) @@ -325,199 +212,174 @@ (set! (-> self run-blend-interp) (acos (vector-dot (-> s5-0 vector 2) (-> gp-0 vector 2)))) (set! (-> self run-blend-interp) (/ (-> self run-blend-interp) (-> self flee-info blend_interp_angle))) (if (< (vector-dot (-> s5-0 vector 2) (the-as vector (-> gp-0 vector))) 0.0) - (set! (-> self run-blend-interp) (- (-> self run-blend-interp))) - ) - ) - ) + (set! (-> self run-blend-interp) (- (-> self run-blend-interp)))))) (defbehavior fleeing-nav-enemy-chase-post fleeing-nav-enemy () (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-! gp-0 (-> self collide-info trans) (target-pos 0)) (let* ((f0-1 (vector-dot (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self desired-travel) 1.0) gp-0)) (f0-3 (/ (- (-> self flee-info speed-adjust-center) f0-1) (-> self flee-info speed-adjust-range))) - (f1-3 (+ 1.0 f0-3)) - ) + (f1-3 (+ 1.0 f0-3))) (set! (-> self target-speed) (* (fmax (-> self flee-info min-speed-adjust) (fmin (-> self flee-info max-speed-adjust) f1-3)) - (-> self nav-info run-travel-speed) - ) - ) - ) + (-> self nav-info run-travel-speed)))) (when (time-elapsed? (-> self last-reflection-time) (-> self flee-info reflection-time)) (let ((s3-0 (new 'stack-no-clear 'matrix)) - (s5-2 (new 'stack-no-clear 'vector)) - ) + (s5-2 (new 'stack-no-clear 'vector))) (let ((s4-1 (new 'stack-no-clear 'vector))) (set! (-> s5-2 quad) (-> self desired-travel quad)) (set! (-> s5-2 y) 0.0) (set! (-> s4-1 quad) (-> gp-0 quad)) (set! (-> s4-1 y) 0.0) - (if (= (vector-normalize-ret-len! s5-2 1.0) 0.0) - (set! (-> s5-2 quad) (-> s4-1 quad)) - ) + (if (= (vector-normalize-ret-len! s5-2 1.0) 0.0) (set! (-> s5-2 quad) (-> s4-1 quad))) (vector-normalize-ret-len! s4-1 1.0) - (matrix-from-two-vectors-max-angle-partial! s3-0 s5-2 s4-1 (-> self flee-info max-flee-rotation) 0.25) - ) + (matrix-from-two-vectors-max-angle-partial! s3-0 s5-2 s4-1 (-> self flee-info max-flee-rotation) 0.25)) (vector-matrix*! s5-2 s5-2 s3-0) - (vector-float*! (-> self desired-travel) s5-2 (-> self flee-info deflection-max-dist)) - ) - ) - ) - (if (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) - (set-time! (-> self last-reflection-time)) - ) + (vector-float*! (-> self desired-travel) s5-2 (-> self flee-info deflection-max-dist))))) + (if (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) (set-time! (-> self last-reflection-time))) (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) (fleeing-nav-enemy-chase-post-func) 0 - (none) - ) + (none)) (defstate nav-enemy-patrol (fleeing-nav-enemy) :virtual #t - :enter (-> (method-of-type nav-enemy nav-enemy-patrol) enter) - :exit (-> (method-of-type nav-enemy nav-enemy-patrol) exit) - :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) - (fleeing-nav-enemy-adjust-nav-info) - ) - :code (-> (method-of-type nav-enemy nav-enemy-patrol) code) - :post (-> (method-of-type nav-enemy nav-enemy-patrol) post) - ) + :enter + (-> (method-of-type nav-enemy nav-enemy-patrol) + enter) + :exit + (-> (method-of-type nav-enemy nav-enemy-patrol) + exit) + :trans + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) + (fleeing-nav-enemy-adjust-nav-info)) + :code + (-> (method-of-type nav-enemy nav-enemy-patrol) + code) + :post + (-> (method-of-type nav-enemy nav-enemy-patrol) + post)) (defstate nav-enemy-notice (fleeing-nav-enemy) :virtual #t - :enter (-> (method-of-type nav-enemy nav-enemy-notice) enter) - :trans (behavior () - (fleeing-nav-enemy-adjust-nav-info) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (let ((f30-0 (nav-enemy-rnd-float-range 1.0 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek-toward-heading-vec! - (-> self collide-info) - (-> self nav travel) - (-> self rotate-speed) - (-> self turn-time) - ) - (if (and *target* (>= (-> self flee-info abort-notice-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go-virtual nav-enemy-chase) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post (-> (method-of-type nav-enemy nav-enemy-notice) post) - ) + :enter + (-> (method-of-type nav-enemy nav-enemy-notice) + enter) + :trans + (behavior () + (fleeing-nav-enemy-adjust-nav-info)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (let ((f30-0 (nav-enemy-rnd-float-range 1.0 1.2))) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (seek-toward-heading-vec! (-> self collide-info) (-> self nav travel) (-> self rotate-speed) (-> self turn-time)) + (if (and *target* + (>= (-> self flee-info abort-notice-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-chase)) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-chase)) + :post + (-> (method-of-type nav-enemy nav-enemy-notice) + post)) (defstate nav-enemy-chase (fleeing-nav-enemy) :virtual #t - :enter (behavior () - (logior! (-> self nav flags) (nav-control-flags navcf12)) - ((-> (method-of-type nav-enemy nav-enemy-chase) enter)) - ) - :exit (behavior () - (logclear! (-> self nav flags) (nav-control-flags navcf12)) - ) - :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - (fleeing-nav-enemy-adjust-nav-info) - ) - :code (-> (method-of-type nav-enemy nav-enemy-chase) code) - :post (-> (method-of-type nav-enemy nav-enemy-chase) post) - ) + :enter + (behavior () + (logior! (-> self nav flags) (nav-control-flags navcf12)) + ((-> (method-of-type nav-enemy nav-enemy-chase) enter))) + :exit + (behavior () + (logclear! (-> self nav flags) (nav-control-flags navcf12))) + :trans + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) + (fleeing-nav-enemy-adjust-nav-info)) + :code + (-> (method-of-type nav-enemy nav-enemy-chase) + code) + :post + (-> (method-of-type nav-enemy nav-enemy-chase) + post)) (defstate nav-enemy-stop-chase (fleeing-nav-enemy) :virtual #t - :enter (-> (method-of-type nav-enemy nav-enemy-stop-chase) enter) - :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-stop-chase) trans)) - (fleeing-nav-enemy-adjust-nav-info) - ) - :code (-> (method-of-type nav-enemy nav-enemy-stop-chase) code) - :post (-> (method-of-type nav-enemy nav-enemy-stop-chase) post) - ) + :enter + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + enter) + :trans + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-stop-chase) trans)) + (fleeing-nav-enemy-adjust-nav-info)) + :code + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + code) + :post + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + post)) (defstate fleeing-nav-enemy-debug (fleeing-nav-enemy) - :enter (-> (method-of-type nav-enemy nav-enemy-chase) enter) - :code (behavior () - (let ((gp-0 (new-stack-vector0)) - (s5-0 (new-stack-vector0)) - ) - (set! (-> gp-0 x) 1.0) - (set! (-> s5-0 x) 1.0) - (loop - (when (cpad-pressed? 1 r3) - (suspend) - (go fleeing-nav-enemy-debug) - ) - (let ((s2-0 (new-stack-vector0)) - (s4-0 (new-stack-vector0)) - ) - (let ((s3-0 (new-stack-matrix0))) - (clmf-input s2-0 s4-0 1) - (vector-float*! s2-0 s2-0 409.6) - (vector-float*! s4-0 s4-0 1820.4445) - (matrix-axis-angle! s3-0 (-> *camera* local-down) (-> s2-0 y)) - (vector-matrix*! gp-0 gp-0 s3-0) - ) - (if *target* - (vector-! gp-0 (-> self collide-info trans) (target-pos 0)) - ) - (vector-normalize! gp-0 (-> self flee-info deflection-max-dist)) - (let ((s3-3 (new 'stack-no-clear 'vector))) - (set! (-> s3-3 quad) (-> self nav travel quad)) - (set! (-> self nav travel quad) (-> s5-0 quad)) - (set! (-> self desired-travel quad) (-> gp-0 quad)) - (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) - (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) - (set! (-> s5-0 quad) (-> self nav travel quad)) - (set! (-> self nav travel quad) (-> s3-3 quad)) - ) - (vector+! (-> self nav target-pos) (-> self collide-info trans) s4-0) - ) - (suspend) - ) - ) - ) - :post nav-enemy-travel-post - ) + :enter + (-> (method-of-type nav-enemy nav-enemy-chase) + enter) + :code + (behavior () + (let ((gp-0 (new-stack-vector0)) + (s5-0 (new-stack-vector0))) + (set! (-> gp-0 x) 1.0) + (set! (-> s5-0 x) 1.0) + (loop + (when (cpad-pressed? 1 r3) + (suspend) + (go fleeing-nav-enemy-debug)) + (let ((s2-0 (new-stack-vector0)) + (s4-0 (new-stack-vector0))) + (let ((s3-0 (new-stack-matrix0))) + (clmf-input s2-0 s4-0 1) + (vector-float*! s2-0 s2-0 409.6) + (vector-float*! s4-0 s4-0 1820.4445) + (matrix-axis-angle! s3-0 (-> *camera* local-down) (-> s2-0 y)) + (vector-matrix*! gp-0 gp-0 s3-0)) + (if *target* (vector-! gp-0 (-> self collide-info trans) (target-pos 0))) + (vector-normalize! gp-0 (-> self flee-info deflection-max-dist)) + (let ((s3-3 (new 'stack-no-clear 'vector))) + (set! (-> s3-3 quad) (-> self nav travel quad)) + (set! (-> self nav travel quad) (-> s5-0 quad)) + (set! (-> self desired-travel quad) (-> gp-0 quad)) + (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) + (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) + (set! (-> s5-0 quad) (-> self nav travel quad)) + (set! (-> self nav travel quad) (-> s3-3 quad))) + (vector+! (-> self nav target-pos) (-> self collide-info trans) s4-0)) + (suspend)))) + :post nav-enemy-travel-post) (define *lightning-mole-hole* (new 'static 'vector :x -241664.0 :y 106496.0 :z -6393856.0)) (deftype lightning-mole (fleeing-nav-enemy) - ((debug-vector vector :inline) - (alt-actor entity-actor) - ) + ((debug-vector vector :inline) + (alt-actor entity-actor)) (:states - lightning-mole-debug-blend - lightning-mole-debug-run - lightning-mole-dive - lightning-mole-gone - lightning-mole-head-for-hole - lightning-mole-hiding - lightning-mole-yelp - ) - ) - - -(defskelgroup *lightning-mole-sg* lightning-mole lightning-mole-lod0-jg lightning-mole-idle-ja - ((lightning-mole-lod0-mg (meters 20)) - (lightning-mole-lod1-mg (meters 40)) - (lightning-mole-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 8) - :shadow lightning-mole-shadow-mg - ) + lightning-mole-debug-blend + lightning-mole-debug-run + lightning-mole-dive + lightning-mole-gone + lightning-mole-head-for-hole + lightning-mole-hiding + lightning-mole-yelp)) + +(defskelgroup *lightning-mole-sg* + lightning-mole + lightning-mole-lod0-jg + lightning-mole-idle-ja + ((lightning-mole-lod0-mg (meters 20)) (lightning-mole-lod1-mg (meters 40)) (lightning-mole-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :shadow lightning-mole-shadow-mg) (defbehavior lightning-mole-task-complete? lightning-mole () (local-vars (sv-16 symbol)) @@ -527,427 +389,323 @@ (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) (cond (sv-16 - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (process-spawn-function - process - (lambda :behavior lightning-mole - () - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - ) - (suspend) - ) - (level-hint-spawn - (text-id rolling-moles-resolution) - "sksp0112" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (none) - ) - :to self - ) - (format #t "lightning-mole task is complete~%") - ) - (else - ) - ) - sv-16 - ) - ) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (process-spawn-function process + (lambda :behavior lightning-mole () + (while (or (-> *setting-control* current ambient) (-> *setting-control* current movie) (-> *setting-control* current hint)) + (suspend)) + (level-hint-spawn (text-id rolling-moles-resolution) "sksp0112" (the-as entity #f) *entity-pool* (game-task none)) + (none)) + :to + self) + (format #t "lightning-mole task is complete~%")) + (else)) + sv-16)) (defbehavior lightning-mole-hole-post lightning-mole () (set! (-> self nav target-pos quad) (-> *lightning-mole-hole* quad)) (nav-enemy-travel-post) 0 - (none) - ) + (none)) (defbehavior lightning-mole-run-code lightning-mole () (when (!= (ja-group) lightning-mole-run-ja) (ja-channel-push! 1 (seconds 0.2)) - (ja :group! lightning-mole-run-ja) - ) + (ja :group! lightning-mole-run-ja)) (loop (ja :num! (loop! (-> self speed-adjust))) - (suspend) - ) - (none) - ) + (suspend)) + (none)) (defstate lightning-mole-debug-blend (lightning-mole) - :trans (behavior () - (let ((gp-0 (new-stack-vector0))) - (let ((a1-0 (new-stack-vector0))) - (clmf-input gp-0 a1-0 1) - ) - (set! (-> self run-blend-interp) (-> gp-0 y)) - ) - (set! (-> self speed-adjust) 1.0) - ) + :trans + (behavior () + (let ((gp-0 (new-stack-vector0))) + (let ((a1-0 (new-stack-vector0))) (clmf-input gp-0 a1-0 1)) + (set! (-> self run-blend-interp) (-> gp-0 y))) + (set! (-> self speed-adjust) 1.0)) :code lightning-mole-run-code - :post ja-post - ) + :post ja-post) (defstate lightning-mole-debug-run (lightning-mole) - :enter (behavior () - (set! (-> self speed-adjust) 1.0) - (set-vector! (-> self debug-vector) 0.0 0.0 1.0 1.0) - (set! (-> self saved-travel quad) (-> self debug-vector quad)) - ((-> (method-of-type nav-enemy nav-enemy-chase) enter)) - ) - :trans (behavior () - (when (cpad-pressed? 1 r3) - (logclear! (-> *cpad-list* cpads 1 button0-abs 0) (pad-buttons r3)) - (logclear! (-> *cpad-list* cpads 1 button0-rel 0) (pad-buttons r3)) - (go lightning-mole-debug-run) - ) - ) + :enter + (behavior () + (set! (-> self speed-adjust) 1.0) + (set-vector! (-> self debug-vector) 0.0 0.0 1.0 1.0) + (set! (-> self saved-travel quad) (-> self debug-vector quad)) + ((-> (method-of-type nav-enemy nav-enemy-chase) enter))) + :trans + (behavior () + (when (cpad-pressed? 1 r3) + (logclear! (-> *cpad-list* cpads 1 button0-abs 0) (pad-buttons r3)) + (logclear! (-> *cpad-list* cpads 1 button0-rel 0) (pad-buttons r3)) + (go lightning-mole-debug-run))) :code lightning-mole-run-code - :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((s4-0 (new-stack-vector0)) - (a1-0 (new-stack-vector0)) - (s5-0 (new-stack-matrix0)) - ) - (clmf-input s4-0 a1-0 1) - (vector-float*! s4-0 s4-0 1820.4445) - (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) - (vector-matrix*! (-> self debug-vector) (-> self debug-vector) s5-0) - ) - (vector-normalize! (-> self debug-vector) (-> self flee-info deflection-max-dist)) - (camera-line-rel - (-> self collide-info trans) - (-> self debug-vector) - (new 'static 'vector4w :x #x80 :y #x80 :w #x80) - ) - (set! (-> gp-0 quad) (-> self debug-vector quad)) - (set! (-> self target-speed) (-> self nav-info run-travel-speed)) - (format *stdcon* "tgt-speed ~M defmd ~M~%" (-> self target-speed) (-> self flee-info deflection-max-dist)) - (if (time-elapsed? (-> self last-reflection-time) (-> self flee-info reflection-time)) - (vector-normalize-copy! (-> self desired-travel) gp-0 (-> self flee-info deflection-max-dist)) - ) - ) - (if (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) - (set-time! (-> self last-reflection-time)) - ) - (set! (-> self debug-vector quad) (-> self desired-travel quad)) - (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) - (fleeing-nav-enemy-chase-post-func) - (camera-line-rel - (-> self collide-info trans) - (-> self desired-travel) - (new 'static 'vector4w :x #x80 :w #x80) - ) - (camera-line-rel (-> self collide-info trans) (-> self nav travel) (new 'static 'vector4w :z #x80 :w #x80)) - (camera-line (-> self collide-info trans) (-> self nav target-pos) (new 'static 'vector4w :z #x80 :w #x80)) - ) - ) + :post + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((s4-0 (new-stack-vector0)) + (a1-0 (new-stack-vector0)) + (s5-0 (new-stack-matrix0))) + (clmf-input s4-0 a1-0 1) + (vector-float*! s4-0 s4-0 1820.4445) + (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) + (vector-matrix*! (-> self debug-vector) (-> self debug-vector) s5-0)) + (vector-normalize! (-> self debug-vector) (-> self flee-info deflection-max-dist)) + (camera-line-rel (-> self collide-info trans) (-> self debug-vector) (new 'static 'vector4w :x #x80 :y #x80 :w #x80)) + (set! (-> gp-0 quad) (-> self debug-vector quad)) + (set! (-> self target-speed) (-> self nav-info run-travel-speed)) + (format *stdcon* "tgt-speed ~M defmd ~M~%" (-> self target-speed) (-> self flee-info deflection-max-dist)) + (if (time-elapsed? (-> self last-reflection-time) (-> self flee-info reflection-time)) + (vector-normalize-copy! (-> self desired-travel) gp-0 (-> self flee-info deflection-max-dist)))) + (if (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) (set-time! (-> self last-reflection-time))) + (set! (-> self debug-vector quad) (-> self desired-travel quad)) + (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) + (fleeing-nav-enemy-chase-post-func) + (camera-line-rel (-> self collide-info trans) (-> self desired-travel) (new 'static 'vector4w :x #x80 :w #x80)) + (camera-line-rel (-> self collide-info trans) (-> self nav travel) (new 'static 'vector4w :z #x80 :w #x80)) + (camera-line (-> self collide-info trans) (-> self nav target-pos) (new 'static 'vector4w :z #x80 :w #x80)))) (defstate lightning-mole-gone (lightning-mole) - :code (behavior () - (cleanup-for-death self) - (ja-channel-set! 0) - (ja-post) - (while (-> self child) - (suspend) - ) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (ja-channel-set! 0) + (ja-post) + (while (-> self child) + (suspend)) + (deactivate self))) (defstate lightning-mole-hiding (lightning-mole) - :enter (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self collide-info)) - ) - :trans (behavior () - (when (task-closed? (-> self entity extra perm task) (task-status need-introduction)) - (ja-channel-set! 1) - (ja :group! lightning-mole-idle-ja) - (restore-collide-with-as (-> self collide-info)) - (go-virtual nav-enemy-idle) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :enter + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self collide-info))) + :trans + (behavior () + (when (task-closed? (-> self entity extra perm task) (task-status need-introduction)) + (ja-channel-set! 1) + (ja :group! lightning-mole-idle-ja) + (restore-collide-with-as (-> self collide-info)) + (go-virtual nav-enemy-idle))) + :code + (behavior () + (loop + (suspend)))) (defstate lightning-mole-dive (lightning-mole) - :trans (behavior () - (when (< (vector-vector-xz-distance *lightning-mole-hole* (-> self collide-info trans)) 61440.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) 'hide) - (let ((t9-1 send-event-function) - (v1-2 (-> self alt-actor)) - ) - (t9-1 - (if v1-2 - (-> v1-2 extra process) - ) - a1-1 - ) - ) - ) - ) - ) - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (vector+! gp-0 *lightning-mole-hole* (new 'static 'vector :x 81920.0 :y 40960.0)) - (hide-hud-quick) - (if *target* - (logior! (-> *target* mask) (process-mask sleep)) - ) - (ambient-hint-spawn "gamcam20" (the-as vector #f) *entity-pool* 'camera) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! lightning-mole-dive-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> *camera-other-fov* data) 11650.845) - (vector-! s5-0 *lightning-mole-hole* gp-0) - (vector-normalize! s5-0 1.0) - (forward-down->inv-matrix *camera-other-matrix* s5-0 (-> *camera* local-down)) - ) - (set! (-> *camera-other-trans* quad) (-> gp-0 quad)) - (set! (-> *camera-other-root* quad) (-> *lightning-mole-hole* quad)) - (set! *camera-look-through-other* 2) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (lightning-mole-task-complete?) - (if *target* - (logclear! (-> *target* mask) (process-mask sleep)) - ) - (go lightning-mole-gone) - ) - :post lightning-mole-hole-post - ) + :trans + (behavior () + (when (< (vector-vector-xz-distance *lightning-mole-hole* (-> self collide-info trans)) 61440.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) 'hide) + (let ((t9-1 send-event-function) + (v1-2 (-> self alt-actor))) + (t9-1 (if v1-2 (-> v1-2 extra process)) a1-1))))) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)) + (gp-0 (new 'stack-no-clear 'vector))) + (vector+! gp-0 *lightning-mole-hole* (new 'static 'vector :x 81920.0 :y 40960.0)) + (hide-hud-quick) + (if *target* (logior! (-> *target* mask) (process-mask sleep))) + (ambient-hint-spawn "gamcam20" (the-as vector #f) *entity-pool* 'camera) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! lightning-mole-dive-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> *camera-other-fov* data) 11650.845) + (vector-! s5-0 *lightning-mole-hole* gp-0) + (vector-normalize! s5-0 1.0) + (forward-down->inv-matrix *camera-other-matrix* s5-0 (-> *camera* local-down))) + (set! (-> *camera-other-trans* quad) (-> gp-0 quad)) + (set! (-> *camera-other-root* quad) (-> *lightning-mole-hole* quad)) + (set! *camera-look-through-other* 2) + (suspend) + (ja :num! (seek! max f30-0)))) + (lightning-mole-task-complete?) + (if *target* (logclear! (-> *target* mask) (process-mask sleep))) + (go lightning-mole-gone)) + :post lightning-mole-hole-post) (defstate lightning-mole-head-for-hole (lightning-mole) - :enter (behavior () - (clear-collide-with-as (-> self collide-info)) - ) - :trans (behavior () - (when (< (vector-vector-xz-distance *lightning-mole-hole* (-> self collide-info trans)) 61440.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) 'hide) - (let ((t9-1 send-event-function) - (v1-3 (-> self alt-actor)) - ) - (t9-1 - (if v1-3 - (-> v1-3 extra process) - ) - a1-1 - ) - ) - ) - ) - (if (< (vector-vector-distance (-> self collide-info trans) *lightning-mole-hole*) 40960.0) - (go lightning-mole-dive) - ) - ) - :code (-> (method-of-type fleeing-nav-enemy nav-enemy-chase) code) - :post lightning-mole-hole-post - ) + :enter + (behavior () + (clear-collide-with-as (-> self collide-info))) + :trans + (behavior () + (when (< (vector-vector-xz-distance *lightning-mole-hole* (-> self collide-info trans)) 61440.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) 'hide) + (let ((t9-1 send-event-function) + (v1-3 (-> self alt-actor))) + (t9-1 (if v1-3 (-> v1-3 extra process)) a1-1)))) + (if (< (vector-vector-distance (-> self collide-info trans) *lightning-mole-hole*) 40960.0) (go lightning-mole-dive))) + :code + (-> (method-of-type fleeing-nav-enemy nav-enemy-chase) + code) + :post lightning-mole-hole-post) (defstate lightning-mole-yelp (lightning-mole) - :enter (behavior () - (clear-collide-with-as (-> self collide-info)) - ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) enter)) - ) - :exit (behavior () - (restore-collide-with-as (-> self collide-info)) - ) - :trans (-> (method-of-type fleeing-nav-enemy nav-enemy-chase) trans) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (ja-no-eval :group! lightning-mole-yelp-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (clear-collide-with-as (-> self collide-info)) + ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) enter))) + :exit + (behavior () + (restore-collide-with-as (-> self collide-info))) + :trans + (-> (method-of-type fleeing-nav-enemy nav-enemy-chase) + trans) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (ja-no-eval :group! lightning-mole-yelp-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-chase)) + :post nav-enemy-simple-post) (defstate nav-enemy-stop-chase (lightning-mole) :virtual #t :code lightning-mole-run-code - :post fleeing-nav-enemy-chase-post - ) + :post fleeing-nav-enemy-chase-post) (defstate nav-enemy-chase (lightning-mole) :virtual #t - :enter (behavior () - (set! (-> self speed-adjust) 1.0) - (set! (-> self run-blend-interp) 0.0) - (vector-! (-> self saved-travel) (-> self collide-info trans) (target-pos 0)) - ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) enter)) - ) - :trans (behavior () - (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - 0.0 - 0.0 - (let ((f30-0 (vector-vector-distance (-> self collide-info trans) (target-pos 0)))) + :enter + (behavior () + (set! (-> self speed-adjust) 1.0) + (set! (-> self run-blend-interp) 0.0) + (vector-! (-> self saved-travel) (-> self collide-info trans) (target-pos 0)) + ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) enter))) + :trans + (behavior () + (let ((s3-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector))) 0.0 0.0 - (let ((s5-1 (new 'stack-no-clear 'vector))) - (vector-! s3-0 *lightning-mole-hole* (-> self collide-info trans)) - (vector-! s4-0 (-> self collide-info trans) (target-pos 0)) - (vector-! gp-0 *lightning-mole-hole* (target-pos 0)) - (let ((f26-0 (vector-normalize-ret-len! s3-0 1.0)) - (f28-0 (vector-normalize-ret-len! s4-0 1.0)) - ) - (vector-normalize! gp-0 1.0) - (set! (-> s5-1 quad) (-> *camera* tgt-face-mat vector 2 quad)) - (set! (-> s5-1 y) 0.0) - (vector-normalize! s5-1 1.0) - (let ((f24-0 (vector-dot s5-1 s4-0))) - (when (< f26-0 61440.0) - (let ((a1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-7 from) self) - (set! (-> a1-7 num-params) 0) - (set! (-> a1-7 message) 'hide) - (let ((t9-8 send-event-function) - (v1-10 (-> self alt-actor)) - ) - (t9-8 - (if v1-10 - (-> v1-10 extra process) - ) - a1-7 - ) - ) - ) - ) - (if (and (< 40960.0 f26-0) - (< f26-0 81920.0) - (< f30-0 204800.0) - (< (+ 20480.0 f26-0) f28-0) - (< (cos 7281.778) (vector-dot s5-1 gp-0)) - (< (cos 7281.778) f24-0) - ) - (go lightning-mole-head-for-hole) - ) - ) - ) - ) - ) - ) - ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) trans)) - ) + (let ((f30-0 (vector-vector-distance (-> self collide-info trans) (target-pos 0)))) + 0.0 + 0.0 + (let ((s5-1 (new 'stack-no-clear 'vector))) + (vector-! s3-0 *lightning-mole-hole* (-> self collide-info trans)) + (vector-! s4-0 (-> self collide-info trans) (target-pos 0)) + (vector-! gp-0 *lightning-mole-hole* (target-pos 0)) + (let ((f26-0 (vector-normalize-ret-len! s3-0 1.0)) + (f28-0 (vector-normalize-ret-len! s4-0 1.0))) + (vector-normalize! gp-0 1.0) + (set! (-> s5-1 quad) (-> *camera* tgt-face-mat vector 2 quad)) + (set! (-> s5-1 y) 0.0) + (vector-normalize! s5-1 1.0) + (let ((f24-0 (vector-dot s5-1 s4-0))) + (when (< f26-0 61440.0) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 0) + (set! (-> a1-7 message) 'hide) + (let ((t9-8 send-event-function) + (v1-10 (-> self alt-actor))) + (t9-8 (if v1-10 (-> v1-10 extra process)) a1-7)))) + (if (and (< 40960.0 f26-0) + (< f26-0 81920.0) + (< f30-0 204800.0) + (< (+ 20480.0 f26-0) f28-0) + (< (cos 7281.778) (vector-dot s5-1 gp-0)) + (< (cos 7281.778) f24-0)) + (go lightning-mole-head-for-hole))))))) + ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) trans))) :code lightning-mole-run-code - :post fleeing-nav-enemy-chase-post - ) + :post fleeing-nav-enemy-chase-post) (defmethod attack-handler ((this lightning-mole) (arg0 process) (arg1 event-message-block)) (send-event arg0 'get-attack-count 1) (when (!= (-> this state) lightning-mole-yelp) (send-event arg0 'jump 32768.0 32768.0) - (go lightning-mole-yelp) - ) - #t - ) + (go lightning-mole-yelp)) + #t) (defmethod touch-handler ((this lightning-mole) (arg0 process) (arg1 event-message-block)) (when (!= (-> this state) lightning-mole-yelp) (send-event arg0 'jump 32768.0 32768.0) - (go lightning-mole-yelp) - ) - #t - ) - -(define *lightning-mole-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 7 - :turn-anim -1 - :notice-anim 6 - :run-anim 7 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 12 - :taunt-anim -1 - :die-anim -1 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 30) - :run-rotate-speed (degrees 3000) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 30) - :walk-rotate-speed (degrees 3000) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 35) - :stop-chase-distance (meters 45) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #f - :move-to-ground #t - :hover-if-no-ground #t - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + (go lightning-mole-yelp)) + #t) + +(define *lightning-mole-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 7 + :turn-anim -1 + :notice-anim 6 + :run-anim 7 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 12 + :taunt-anim -1 + :die-anim -1 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 30) + :run-rotate-speed (degrees 3000) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 30) + :walk-rotate-speed (degrees 3000) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 35) + :stop-chase-distance (meters 45) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #f + :move-to-ground #t + :hover-if-no-ground #t + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this lightning-mole) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 10240.0) - (set-root-prim! s4-0 s3-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! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *lightning-mole-sg* '()) (init-defaults! this *lightning-mole-nav-enemy-info*) @@ -978,310 +736,246 @@ (set! (-> this flee-info max-flee-rotation) 364.0889) (cond ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go lightning-mole-gone) - ) + (go lightning-mole-gone)) ((task-closed? (-> this entity extra perm task) (task-status need-introduction)) - (go (method-of-object this nav-enemy-idle)) - ) - (else - (go lightning-mole-hiding) - ) - ) - (none) - ) + (go (method-of-object this nav-enemy-idle))) + (else (go lightning-mole-hiding))) + (none)) (defpartgroup group-peeper :id 456 :duration (seconds 0.017) :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 1768) - (sp-item 1769 :period (seconds 0.4) :length (seconds 0.1)) - (sp-item 1770 :period (seconds 0.4) :length (seconds 0.2)) - ) - ) + :parts + ((sp-item 1768) + (sp-item 1769 :period (seconds 0.4) :length (seconds 0.1)) + (sp-item 1770 :period (seconds 0.4) :length (seconds 0.2)))) (defpart 1768 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.25) - (:x (meters -2) (meters 4)) - (:y (meters -2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.04) (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.21333334) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.25) + (:x (meters -2) (meters 4)) + (:y (meters -2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.04) (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.21333334) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)))) (defpart 1769 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -2) (meters 4)) - (:y (meters -2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.04) (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.21333334) - (:friction 0.98) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -2) (meters 4)) + (:y (meters -2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.04) (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.21333334) + (:friction 0.98) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)))) (defpart 1770 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 5.0) - (:x (meters -1) (meters 2)) - (:y (meters 0)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.25) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.053333335)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:userdata 106496.0) - (:func 'check-drop-level-rolling-dirt) - (:conerot-x (degrees 0) (degrees 20)) - (:conerot-y (degrees 180) (degrees 180)) - (:conerot-radius (meters 0) (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 5.0) + (:x (meters -1) (meters 2)) + (:y (meters 0)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.25) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.053333335)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:userdata 106496.0) + (:func 'check-drop-level-rolling-dirt) + (:conerot-x (degrees 0) (degrees 20)) + (:conerot-y (degrees 180) (degrees 180)) + (:conerot-radius (meters 0) (meters 2)))) (defpart 1771 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0 1.0) - (:y (meters 0)) - (:scale-x (meters 0.15) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 128.0) - (:vel-y (meters 0.033333335) (meters 0.016666668)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:userdata 106496.0) - (:func 'check-drop-level-rolling-dirt-finish) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0 1.0) + (:y (meters 0)) + (:scale-x (meters 0.15) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 128.0) + (:vel-y (meters 0.033333335) (meters 0.016666668)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:userdata 106496.0) + (:func 'check-drop-level-rolling-dirt-finish) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1772 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:scale-x (meters 0.15) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.14222223) - (:friction 0.9) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:scale-x (meters 0.15) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.14222223) + (:friction 0.9) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) (defun check-drop-level-rolling-dirt ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 1771) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 1771) gp-0))) + (none)) (defun check-drop-level-rolling-dirt-finish ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.05) - (sound-play "land-grass") - ) + (if (< (rand-float-gen) 0.05) (sound-play "land-grass")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 1772) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 1772) gp-0))) + (none)) -(deftype peeper (process-drawable) - () +(deftype peeper (process-drawable) () (:states - peeper-down - peeper-hide - peeper-up - peeper-wait - ) - ) - + peeper-down + peeper-hide + peeper-up + peeper-wait)) (defstate peeper-wait (peeper) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (let ((v0-0 (current-time))) - (set! (-> self state-time) v0-0) - v0-0 - ) - ) - ) - ) - :enter (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (and (time-elapsed? (-> self state-time) (seconds 1)) - (not (and *target* (>= 81920.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) - ) - (go peeper-up) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (let ((v0-0 (current-time))) (set! (-> self state-time) v0-0) v0-0)))) + :enter + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (set-time! (-> self state-time))) + :trans + (behavior () + (if (and (time-elapsed? (-> self state-time) (seconds 1)) + (not (and *target* (>= 81920.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))))) + (go peeper-up))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (loop + (suspend))) + :post ja-post) (defstate peeper-hide (peeper) - :code (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (ja-no-eval :num! (seek! max 2.0)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (logior! (-> self draw status) (draw-status hidden)) - (go peeper-wait) - ) - :post ja-post - ) + :code + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (ja-no-eval :num! (seek! max 2.0)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (logior! (-> self draw status) (draw-status hidden)) + (go peeper-wait)) + :post ja-post) (defstate peeper-down (peeper) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (go peeper-wait) - ) - ) - ) - :trans (behavior () - (if (and *target* (>= 61440.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go peeper-wait) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (suspend) - ) - (let* ((f30-0 2.0) - (v1-10 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-11 (the-as number (logior #x3f800000 v1-10))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-11)))) 1)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 5)) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - (set-time! (-> self state-time)) - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (suspend) - ) - ) - ) - (go peeper-up) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (go peeper-wait)))) + :trans + (behavior () + (if (and *target* (>= 61440.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go peeper-wait))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend)) + (let* ((f30-0 2.0) + (v1-10 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-11 (the-as number (logior #x3f800000 v1-10)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-11)))) 1)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 5)) + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (spawn (-> self part) (-> self root trans)) + (suspend)) + (set-time! (-> self state-time)) + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (suspend)))) + (go peeper-up)) + :post ja-post) (defstate peeper-up (peeper) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (go peeper-hide) - ) - ) - ) - :enter (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (if (and *target* (>= 61440.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go peeper-hide) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! lightning-mole-peep-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go peeper-down) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (go peeper-hide)))) + :enter + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (if (and *target* (>= 61440.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go peeper-hide))) + :code + (behavior () + (loop + (ja-no-eval :group! lightning-mole-peep-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go peeper-down))) + :post ja-post) (defmethod init-from-entity! ((this peeper) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -1290,5 +984,4 @@ (set! (-> this part) (create-launch-control (-> *part-group-id-table* 456) this)) (set! (-> this sound) (new 'process 'ambient-sound arg0 (-> this root trans))) (go peeper-up) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/rolling/rolling-obs.gc b/goal_src/jak1/levels/rolling/rolling-obs.gc index 998f089423..f5088023a5 100644 --- a/goal_src/jak1/levels/rolling/rolling-obs.gc +++ b/goal_src/jak1/levels/rolling/rolling-obs.gc @@ -1,73 +1,53 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROL.DGO") - (require "engine/util/sync-info.gc") (require "engine/game/task/task-control.gc") (require "engine/common-obs/ticky.gc") (require "engine/common-obs/collectables.gc") (require "engine/common-obs/water-anim.gc") -;; name: rolling-obs.gc -;; name in dgo: rolling-obs -;; dgos: L1, ROL - ;; DECOMP BEGINS -(deftype rolling-part (part-spawner) - () - ) - +(deftype rolling-part (part-spawner) ()) -(deftype rollingcam (process-hidden) - () - ) +(deftype rollingcam (process-hidden) ()) - -(defskelgroup *rollingcam-sg* rollingcam rollingcam-lod0-jg rollingcam-anim-ja - ((rollingcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *rollingcam-sg* + rollingcam + rollingcam-lod0-jg + rollingcam-anim-ja + ((rollingcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (deftype pusher-base (process-drawable) - ((root collide-shape-moving :override) - (max-frame float) - ) - ) - + ((root collide-shape-moving :override) + (max-frame float))) (deftype pusher (pusher-base) - ((sync sync-info-paused :inline) - (cyl cylinder :inline) - ) + ((sync sync-info-paused :inline) + (cyl cylinder :inline)) (:states - pusher-idle - ) - ) - + pusher-idle)) (deftype gorge-pusher (pusher-base) - ((min-frame float) - ) + ((min-frame float)) (:states - gorge-pusher-idle - ) - ) + gorge-pusher-idle)) - -(defskelgroup *pusher-sg* pusher pusher-lod0-jg pusher-idle-ja - ((pusher-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *pusher-sg* + pusher + pusher-lod0-jg + pusher-idle-ja + ((pusher-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defbehavior pusher-base-init pusher-base () (logior! (-> self mask) (process-mask enemy platform)) (let ((gp-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-others)))) (set! (-> gp-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> gp-0 reaction) default-collision-reaction) - (set! (-> gp-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> gp-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s5-0 (new 'process 'collide-shape-prim-group gp-0 (the-as uint 1) 0))) (set! (-> s5-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s5-0 collide-with) (collide-kind target)) @@ -82,37 +62,27 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 4) (set-vector! (-> s4-0 local-sphere) 8192.0 0.0 0.0 28672.0) - (append-prim s5-0 s4-0) - ) - ) + (append-prim s5-0 s4-0))) (set! (-> gp-0 nav-radius) (* 0.75 (-> gp-0 root-prim local-sphere w))) (backup-collide-with-as gp-0) (set! (-> self root) gp-0) - gp-0 - ) - ) + gp-0)) (defstate pusher-idle (pusher) :trans rider-trans - :code (behavior () - (loop - (let ((f0-0 -1.0)) - (when (and *target* *camera*) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (camera-pos)) - (set! f0-0 (ray-capsule-intersect (-> self cyl) (camera-pos) gp-0)) - ) - ) - (if (< f0-0 0.0) + :code + (behavior () + (loop + (let ((f0-0 -1.0)) + (when (and *target* *camera*) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (camera-pos)) + (set! f0-0 (ray-capsule-intersect (-> self cyl) (camera-pos) gp-0)))) + (if (< f0-0 0.0) (ja :num! (seek! (get-current-value-with-mirror (-> self sync) (-> self max-frame)))) - (ja :num! (seek! 0.0)) - ) - ) - (suspend) - ) - ) - :post rider-post - ) + (ja :num! (seek! 0.0)))) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this pusher) (arg0 entity-actor)) (pusher-base-init) @@ -126,22 +96,18 @@ (set! (-> this cyl length) 36864.0) (set! (-> this cyl radius) 20480.0) (go pusher-idle) - (none) - ) + (none)) (defstate gorge-pusher-idle (gorge-pusher) :trans rider-trans - :code (behavior () - (loop - (if (task-closed? (game-task rolling-race) (task-status need-introduction)) + :code + (behavior () + (loop + (if (task-closed? (game-task rolling-race) (task-status need-introduction)) (ja :num! (seek! (-> self min-frame))) - (ja :num! (seek! (-> self max-frame))) - ) - (suspend) - ) - ) - :post rider-post - ) + (ja :num! (seek! (-> self max-frame)))) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this gorge-pusher) (arg0 entity-actor)) (pusher-base-init) @@ -155,279 +121,202 @@ ((task-closed? (game-task rolling-race) (task-status need-introduction)) (let ((v1-6 (-> this skel root-channel 0))) (set! (-> v1-6 num-func) num-func-identity) - (set! (-> v1-6 frame-num) (-> this min-frame)) - ) - ) + (set! (-> v1-6 frame-num) (-> this min-frame)))) (else - (let ((v1-10 (-> this skel root-channel 0))) - (set! (-> v1-10 num-func) num-func-identity) - (set! (-> v1-10 frame-num) (-> this max-frame)) - ) - ) - ) + (let ((v1-10 (-> this skel root-channel 0))) + (set! (-> v1-10 num-func) num-func-identity) + (set! (-> v1-10 frame-num) (-> this max-frame))))) (go gorge-pusher-idle) - (none) - ) + (none)) (deftype dark-plant (process-drawable) - ((num-alts int32) - (alts entity-actor 4) - ) + ((num-alts int32) + (alts entity-actor 4)) (:states - dark-plant-death - dark-plant-gone - dark-plant-idle - dark-plant-sprout - dark-plant-startup - ) - ) - - -(defskelgroup *dark-plant-sg* dark-plant dark-plant-lod0-jg dark-plant-idle-ja - ((dark-plant-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2.25 0 6) - ) + dark-plant-death + dark-plant-gone + dark-plant-idle + dark-plant-sprout + dark-plant-startup)) + +(defskelgroup *dark-plant-sg* + dark-plant + dark-plant-lod0-jg + dark-plant-idle-ja + ((dark-plant-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2.25 0 6)) (defun dark-plant-check-target ((arg0 dark-plant)) - (the-as symbol (and *target* (and (< (vector-vector-distance (-> arg0 root trans) (target-pos 0)) 16384.0) - (send-event *target* 'query 'powerup (pickup-type eco-green)) - ) - ) - ) - ) + (the-as symbol + (and *target* + (and (< (vector-vector-distance (-> arg0 root trans) (target-pos 0)) 16384.0) + (send-event *target* 'query 'powerup (pickup-type eco-green)))))) (defun dark-plant-randomize ((arg0 dark-plant)) (quaternion-axis-angle! (-> arg0 root quat) 0.0 1.0 0.0 (rand-vu-float-range 0.0 65536.0)) (let ((s5-1 (new 'stack-no-clear 'vector))) (set-vector! s5-1 (rand-vu-float-range -1024.0 1024.0) 0.0 (rand-vu-float-range -1024.0 1024.0) 1.0) - (vector+! (-> arg0 root trans) (-> arg0 entity extra trans) s5-1) - ) - ) + (vector+! (-> arg0 root trans) (-> arg0 entity extra trans) s5-1))) (defun dark-plants-all-done ((arg0 dark-plant)) (loop - (if (!= (-> arg0 state) dark-plant-gone) - (return #f) - ) - (if (zero? (-> arg0 num-alts)) - (return #t) - ) + (if (!= (-> arg0 state) dark-plant-gone) (return #f)) + (if (zero? (-> arg0 num-alts)) (return #t)) (let ((v1-9 (-> arg0 alts 0 extra process))) - (if (not v1-9) - (return #t) - ) - (if (= v1-9 arg0) - (return #t) - ) - (set! arg0 (the-as dark-plant v1-9)) - ) - ) - (the-as symbol #f) - ) + (if (not v1-9) (return #t)) + (if (= v1-9 arg0) (return #t)) + (set! arg0 (the-as dark-plant v1-9)))) + (the-as symbol #f)) (defun dark-plant-has-bad-neighbor ((arg0 dark-plant)) (dotimes (v1-0 (-> arg0 num-alts)) - (let ((a1-4 (-> arg0 alts v1-0 extra process))) - (if (and a1-4 (!= (-> a1-4 state) dark-plant-gone)) - (return #t) - ) - ) - ) - #f - ) + (let ((a1-4 (-> arg0 alts v1-0 extra process))) (if (and a1-4 (!= (-> a1-4 state) dark-plant-gone)) (return #t)))) + #f) (defbehavior dark-plant-trans dark-plant () - (if (dark-plant-check-target self) - (go dark-plant-death) - ) - (none) - ) + (if (dark-plant-check-target self) (go dark-plant-death)) + (none)) (defstate dark-plant-sprout (dark-plant) :trans dark-plant-trans - :code (behavior () - (dark-plant-randomize self) - (logclear! (-> self draw status) (draw-status hidden)) - (sound-play "darkvine-grow") - (ja-no-eval :group! dark-plant-sprout-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go dark-plant-idle) - ) - :post ja-post - ) + :code + (behavior () + (dark-plant-randomize self) + (logclear! (-> self draw status) (draw-status hidden)) + (sound-play "darkvine-grow") + (ja-no-eval :group! dark-plant-sprout-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go dark-plant-idle)) + :post ja-post) (defstate dark-plant-gone (dark-plant) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (let* ((f30-0 1500.0) - (v1-4 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-5 (the-as number (logior #x3f800000 v1-4))) - (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-5)))) 3000)) - ) - (set-time! (-> self state-time)) - (loop - (when (and (!= (get-task-status (game-task rolling-plants)) (task-status invalid)) - (!= (get-task-status (game-task rolling-plants)) 7) - ) - (cond - ((time-elapsed? (-> self state-time) gp-0) - (go dark-plant-sprout) - ) - ((dark-plant-check-target self) - (set-time! (-> self state-time)) - ) - ((not (dark-plant-has-bad-neighbor self)) - (set-time! (-> self state-time)) - ) - (else - ) - ) - ) - (suspend) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (let* ((f30-0 1500.0) + (v1-4 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-5 (the-as number (logior #x3f800000 v1-4))) + (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-5)))) 3000))) + (set-time! (-> self state-time)) + (loop + (when (and (!= (get-task-status (game-task rolling-plants)) (task-status invalid)) + (!= (get-task-status (game-task rolling-plants)) 7)) + (cond + ((time-elapsed? (-> self state-time) gp-0) (go dark-plant-sprout)) + ((dark-plant-check-target self) (set-time! (-> self state-time))) + ((not (dark-plant-has-bad-neighbor self)) (set-time! (-> self state-time))) + (else))) + (suspend)))) + :post ja-post) (defstate dark-plant-death (dark-plant) - :code (behavior () - (spawn (-> self part) (-> self root trans)) - (ja-channel-push! 1 (seconds 0.2)) - (sound-play "darkvine-kill") - (ja-no-eval :group! dark-plant-death-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go dark-plant-gone) - ) - :post ja-post - ) + :code + (behavior () + (spawn (-> self part) (-> self root trans)) + (ja-channel-push! 1 (seconds 0.2)) + (sound-play "darkvine-kill") + (ja-no-eval :group! dark-plant-death-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go dark-plant-gone)) + :post ja-post) (defstate dark-plant-idle (dark-plant) :trans dark-plant-trans - :code (behavior () - (loop - (when (and (logtest? (-> self draw status) (draw-status was-drawn)) - *target* - (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (if (rand-vu-percent? 0.3) - (sound-play "darkvine-move") - ) - (when (task-closed? (game-task rolling-plants) (task-status need-hint)) - (level-hint-spawn (text-id rolling-plants-hint) "sksp0113" (the-as entity #f) *entity-pool* (game-task none)) - (if (not (send-event *target* 'query 'powerup (pickup-type eco-green))) - (level-hint-spawn - (text-id rolling-plants-hint-eco-green) - "sksp0114" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - (let ((gp-1 (-> self skel root-channel 0))) - (set! (-> gp-1 frame-group) (the-as art-joint-anim dark-plant-idle-ja)) - (set! (-> gp-1 param 0) (the float (+ (-> (the-as art-joint-anim dark-plant-idle-ja) data 0 length) -1))) - (let ((f30-1 0.9) - (f28-0 0.25) - ) - (set! (-> gp-1 param 1) (+ f30-1 (* f28-0 (rand-float-gen)))) - ) - (set! (-> gp-1 frame-num) 0.0) - (joint-control-channel-group! gp-1 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-2 (-> self skel root-channel 0))) - (set! (-> gp-2 param 0) (the float (+ (-> gp-2 frame-group data 0 length) -1))) - (let ((f30-2 0.9) - (f28-1 0.25) - ) - (set! (-> gp-2 param 1) (+ f30-2 (* f28-1 (rand-float-gen)))) - ) - (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (when (and (logtest? (-> self draw status) (draw-status was-drawn)) + *target* + (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (if (rand-vu-percent? 0.3) (sound-play "darkvine-move")) + (when (task-closed? (game-task rolling-plants) (task-status need-hint)) + (level-hint-spawn (text-id rolling-plants-hint) "sksp0113" (the-as entity #f) *entity-pool* (game-task none)) + (if (not (send-event *target* 'query 'powerup (pickup-type eco-green))) + (level-hint-spawn (text-id rolling-plants-hint-eco-green) "sksp0114" (the-as entity #f) *entity-pool* (game-task none))))) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 frame-group) (the-as art-joint-anim dark-plant-idle-ja)) + (set! (-> gp-1 param 0) (the float (+ (-> (the-as art-joint-anim dark-plant-idle-ja) data 0 length) -1))) + (let ((f30-1 0.9) + (f28-0 0.25)) + (set! (-> gp-1 param 1) (+ f30-1 (* f28-0 (rand-float-gen))))) + (set! (-> gp-1 frame-num) 0.0) + (joint-control-channel-group! gp-1 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!)) + (until (ja-done? 0) + (suspend) + (let ((gp-2 (-> self skel root-channel 0))) + (set! (-> gp-2 param 0) (the float (+ (-> gp-2 frame-group data 0 length) -1))) + (let ((f30-2 0.9) + (f28-1 0.25)) + (set! (-> gp-2 param 1) (+ f30-2 (* f28-1 (rand-float-gen))))) + (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-seek!))))) + :post ja-post) (defstate dark-plant-startup (dark-plant) :trans dark-plant-trans - :code (behavior () - (let ((gp-0 (-> self skel root-channel 0))) - (set! (-> gp-0 frame-group) (the-as art-joint-anim dark-plant-idle-ja)) - (set! (-> gp-0 param 0) (the float (+ (-> (the-as art-joint-anim dark-plant-idle-ja) data 0 length) -1))) - (set! (-> gp-0 param 1) 1.0) - (set! (-> gp-0 frame-num) (* (rand-float-gen) (the float (ja-num-frames 0)))) - (joint-control-channel-group! gp-0 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go dark-plant-idle) - ) - :post ja-post - ) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim dark-plant-idle-ja)) + (set! (-> gp-0 param 0) (the float (+ (-> (the-as art-joint-anim dark-plant-idle-ja) data 0 length) -1))) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) (* (rand-float-gen) (the float (ja-num-frames 0)))) + (joint-control-channel-group! gp-0 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go dark-plant-idle)) + :post ja-post) (defpartgroup group-dark-plant :id 455 :duration (seconds 0.14) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 1764) (sp-item 2356)) - ) + :parts ((sp-item 1764) (sp-item 2356))) (defpart 2356 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 192.0 64.0) - (:b 0.0 32.0) - (:a 96.0) - (:fade-g -3.0) - (:fade-a -2.4) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 192.0 64.0) + (:b 0.0 32.0) + (:a 96.0) + (:fade-g -3.0) + (:fade-a -2.4) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)))) (defpart 1764 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 128.0) - (:scale-x (meters 0.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0 128.0) - (:g 192.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0) (meters 0.02)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0) (meters 0.0013333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 45)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4.5)) - (:rotate-y (degrees -15) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 128.0) + (:scale-x (meters 0.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0 128.0) + (:g 192.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0) (meters 0.02)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0) (meters 0.0013333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 45)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4.5)) + (:rotate-y (degrees -15) (degrees 30)))) (defmethod init-from-entity! ((this dark-plant) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -436,153 +325,104 @@ (set! (-> this part) (create-launch-control (-> *part-group-id-table* 455) this)) (set! (-> this num-alts) (min 4 (entity-actor-count (-> this entity) 'alt-actor))) (dotimes (s5-3 (-> this num-alts)) - (set! (-> this alts s5-3) (entity-actor-lookup (-> this entity) 'alt-actor s5-3)) - ) - (if (zero? (-> this num-alts)) - (format 0 "ERROR: ~S has no alternates~%" (-> this name)) - ) + (set! (-> this alts s5-3) (entity-actor-lookup (-> this entity) 'alt-actor s5-3))) + (if (zero? (-> this num-alts)) (format 0 "ERROR: ~S has no alternates~%" (-> this name))) (dark-plant-randomize this) (case (get-task-status (game-task rolling-plants)) - (((task-status invalid) (task-status need-resolution)) - (go dark-plant-gone) - ) - (else - (go dark-plant-startup) - ) - ) - (none) - ) + (((task-status invalid) (task-status need-resolution)) (go dark-plant-gone)) + (else (go dark-plant-startup))) + (none)) (deftype happy-plant (process-drawable) - ((root collide-shape :override) - (alt-actor entity-actor) - ) + ((root collide-shape :override) + (alt-actor entity-actor)) (:states - happy-plant-init - happy-plant-opened - happy-plant-opening - ) - ) + happy-plant-init + happy-plant-opened + happy-plant-opening)) - -(defskelgroup *happy-plant-sg* happy-plant happy-plant-lod0-jg happy-plant-init-ja - ((happy-plant-lod0-mg (meters 20)) (happy-plant-lod1-mg (meters 999999))) - :bounds (static-spherem 0 2.25 0 6) - ) +(defskelgroup *happy-plant-sg* + happy-plant + happy-plant-lod0-jg + happy-plant-init-ja + ((happy-plant-lod0-mg (meters 20)) (happy-plant-lod1-mg (meters 999999))) + :bounds (static-spherem 0 2.25 0 6)) (defstate happy-plant-opened (happy-plant) - :code (behavior () - (loop - (ja-no-eval :group! happy-plant-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! happy-plant-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate happy-plant-opening (happy-plant) - :exit (behavior () - (when *target* - (logclear! (-> *target* mask) (process-mask sleep)) - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - ) - ) - :code (behavior () - (close-specific-task! (game-task rolling-plants) (task-status need-reminder)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self mask) (process-mask actor-pause)) - (while (and *target* (< (vector-vector-distance (-> self root trans) (target-pos 0)) 24576.0)) - (suspend) - ) - (let ((gp-2 - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *rollingcam-sg* #f :to self)) - ) - ) - (let ((s5-1 (get-process *default-dead-pool* othercam #x4000))) - (ppointer->handle (when s5-1 - (let ((t9-8 (method-of-type othercam activate))) - (t9-8 (the-as othercam s5-1) (-> gp-2 process 0) 'othercam (the-as pointer #x70004000)) - ) - (run-now-in-process s5-1 othercam-init-by-other (-> gp-2 process 0) 4 #f #t) - (-> s5-1 ppointer) - ) - ) - ) - (let ((s5-3 - (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) 55 :to self)) - ) - ) - (if *target* - (logior! (-> *target* mask) (process-mask sleep)) - ) - (send-event (-> gp-2 process 0) 'anim-mode 'clone-anim) - (ja-play-spooled-anim - (new 'static 'spool-anim - :name "happy-plant-open" - :index 5 - :parts 2 - :command-list '((0 send-event target draw #f) (10000 send-event target draw #t)) - ) - (the-as art-joint-anim #f) - (the-as art-joint-anim happy-plant-idle-ja) - (the-as (function process-drawable symbol) false-func) - ) - (ja-channel-set! 1) - (ja :group! happy-plant-idle-ja) - (if (handle->process (the-as int gp-2)) - (deactivate (-> gp-2 process 0)) - ) - (let ((gp-3 (handle->process s5-3))) - (when gp-3 - (send-event gp-3 'stop-cloning) - (let ((s5-4 (new-stack-vector0))) - (vector<-cspace! s5-4 (joint-node happy-plant-lod0-jg fuelcell)) - (send-event gp-3 'trans s5-4) - ) - ) - ) - ) - ) - (restore-collide-with-as (-> self root)) - (go happy-plant-opened) - ) - :post transform-post - ) + :exit + (behavior () + (when *target* + (logclear! (-> *target* mask) (process-mask sleep)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause)))) + :code + (behavior () + (close-specific-task! (game-task rolling-plants) (task-status need-reminder)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (logclear! (-> self mask) (process-mask actor-pause)) + (while (and *target* (< (vector-vector-distance (-> self root trans) (target-pos 0)) 24576.0)) + (suspend)) + (let ((gp-2 (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *rollingcam-sg* #f :to self)))) + (let ((s5-1 (get-process *default-dead-pool* othercam #x4000))) + (ppointer->handle (when s5-1 + (let ((t9-8 (method-of-type othercam activate))) + (t9-8 (the-as othercam s5-1) (-> gp-2 process 0) 'othercam (the-as pointer #x70004000))) + (run-now-in-process s5-1 othercam-init-by-other (-> gp-2 process 0) 4 #f #t) + (-> s5-1 ppointer)))) + (let ((s5-3 (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) 55 :to self)))) + (if *target* (logior! (-> *target* mask) (process-mask sleep))) + (send-event (-> gp-2 process 0) 'anim-mode 'clone-anim) + (ja-play-spooled-anim (new 'static + 'spool-anim + :name "happy-plant-open" + :index 5 + :parts 2 + :command-list + '((0 send-event target draw #f) (10000 send-event target draw #t))) + (the-as art-joint-anim #f) + (the-as art-joint-anim happy-plant-idle-ja) + (the-as (function process-drawable symbol) false-func)) + (ja-channel-set! 1) + (ja :group! happy-plant-idle-ja) + (if (handle->process (the-as int gp-2)) (deactivate (-> gp-2 process 0))) + (let ((gp-3 (handle->process s5-3))) + (when gp-3 + (send-event gp-3 'stop-cloning) + (let ((s5-4 (new-stack-vector0))) + (vector<-cspace! s5-4 (joint-node happy-plant-lod0-jg fuelcell)) + (send-event gp-3 'trans s5-4)))))) + (restore-collide-with-as (-> self root)) + (go happy-plant-opened)) + :post transform-post) (defstate happy-plant-init (happy-plant) - :trans (behavior () - (when (-> self alt-actor) - (spool-push *art-control* "happy-plant-open" 0 self -99.0) - (let* ((gp-0 (-> self alt-actor extra process)) - (a0-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) dark-plant)) - gp-0 - ) - ) - ) - (when a0-2 - (if (dark-plants-all-done (the-as dark-plant a0-2)) - (go happy-plant-opening) - ) - ) - ) - ) - ) - :code (behavior () - (clear-collide-with-as (-> self root)) - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :trans + (behavior () + (when (-> self alt-actor) + (spool-push *art-control* "happy-plant-open" 0 self -99.0) + (let* ((gp-0 (-> self alt-actor extra process)) + (a0-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) dark-plant)) gp-0))) + (when a0-2 + (if (dark-plants-all-done (the-as dark-plant a0-2)) (go happy-plant-opening)))))) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this happy-plant) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -593,60 +433,43 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *happy-plant-sg* '()) (set! (-> this alt-actor) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (case (get-task-status (game-task rolling-plants)) (((task-status invalid)) (let ((v1-19 (-> this skel root-channel 0))) - (set! (-> v1-19 frame-group) (the-as art-joint-anim (-> this draw art-group data 4))) - ) - (go happy-plant-opened) - ) + (set! (-> v1-19 frame-group) (the-as art-joint-anim (-> this draw art-group data 4)))) + (go happy-plant-opened)) (((task-status need-resolution)) (let ((s5-1 (new 'stack-no-clear 'vector))) (let ((v1-23 (-> this skel root-channel 0))) - (set! (-> v1-23 frame-group) (the-as art-joint-anim (-> this draw art-group data 4))) - ) + (set! (-> v1-23 frame-group) (the-as art-joint-anim (-> this draw art-group data 4)))) (logior! (-> this skel status) (janim-status inited)) (ja-post) (logclear! (-> this skel status) (janim-status inited)) (vector<-cspace! s5-1 (-> this node-list data 25)) - (birth-pickup-at-point s5-1 (pickup-type fuel-cell) 55.0 #f this (the-as fact-info #f)) - ) - (go happy-plant-opened) - ) - (else - (go happy-plant-init) - ) - ) - (none) - ) + (birth-pickup-at-point s5-1 (pickup-type fuel-cell) 55.0 #f this (the-as fact-info #f))) + (go happy-plant-opened)) + (else (go happy-plant-init))) + (none)) (deftype race-time (structure) - ((digit int8 5) - ) - :pack-me - ) - + ((digit int8 5)) + :pack-me) (defun race-time-copy! ((arg0 race-time) (arg1 race-time)) (dotimes (v1-0 5) - (set! (-> arg0 digit v1-0) (-> arg1 digit v1-0)) - ) - #f - ) + (set! (-> arg0 digit v1-0) (-> arg1 digit v1-0))) + #f) (defun seconds->race-time ((arg0 race-time) (arg1 time-frame)) (let* ((v1-1 (max 0 (min #x2bf1d arg1))) - (f0-1 (* 0.0033333334 (the float v1-1))) - ) + (f0-1 (* 0.0033333334 (the float v1-1)))) (set! (-> arg0 digit 0) (the int (* 0.016666668 f0-1))) (let ((f0-2 (- f0-1 (* 60.0 (the float (-> arg0 digit 0)))))) (set! (-> arg0 digit 1) (the int (* 0.1 f0-2))) @@ -654,142 +477,96 @@ (set! (-> arg0 digit 2) (the int f0-3)) (let ((f0-4 (- f0-3 (the float (-> arg0 digit 2))))) (set! (-> arg0 digit 3) (the int (* 10.0 f0-4))) - (let ((f0-5 (- f0-4 (* 0.1 (the float (-> arg0 digit 3)))))) - (set! (-> arg0 digit 4) (the int (* 100.0 f0-5))) - ) - ) - ) - ) - ) - (none) - ) + (let ((f0-5 (- f0-4 (* 0.1 (the float (-> arg0 digit 3)))))) (set! (-> arg0 digit 4) (the int (* 100.0 f0-5)))))))) + (none)) (defun race-time->seconds ((arg0 race-time)) (let ((f0-5 (+ (the float (* 60 (-> arg0 digit 0))) (the float (* 10 (-> arg0 digit 1))) (the float (-> arg0 digit 2)) (* 0.1 (the float (-> arg0 digit 3))) - (* 0.01 (the float (-> arg0 digit 4))) - ) - ) - ) - (the int (* 300.0 f0-5)) - ) - ) + (* 0.01 (the float (-> arg0 digit 4)))))) + (the int (* 300.0 f0-5)))) (defun race-time-less-than ((arg0 race-time) (arg1 race-time)) (dotimes (v1-0 5) (cond - ((< (-> arg0 digit v1-0) (-> arg1 digit v1-0)) - (return #t) - ) - ((< (-> arg1 digit v1-0) (-> arg0 digit v1-0)) - (return #f) - ) - ) - ) - #f - ) + ((< (-> arg0 digit v1-0) (-> arg1 digit v1-0)) (return #t)) + ((< (-> arg1 digit v1-0) (-> arg0 digit v1-0)) (return #f)))) + #f) (defun race-time-save ((arg0 race-time) (arg1 task-control)) (dotimes (s4-0 5) - (save-reminder arg1 (-> arg0 digit s4-0) s4-0) - ) - #f - ) + (save-reminder arg1 (-> arg0 digit s4-0) s4-0)) + #f) (defun race-time-read ((arg0 race-time) (arg1 task-control) (arg2 time-frame)) (dotimes (s3-0 5) - (set! (-> arg0 digit s3-0) (get-reminder arg1 s3-0)) - ) + (set! (-> arg0 digit s3-0) (get-reminder arg1 s3-0))) (let ((a1-3 (new 'stack 'race-time))) (set! (-> a1-3 digit 4) 1) - (if (race-time-less-than arg0 a1-3) - (seconds->race-time arg0 arg2) - ) - ) - (none) - ) - -(defskelgroup *rolling-start-whole-sg* rolling-start rolling-start-whole-lod0-jg rolling-start-idle-ja - ((rolling-start-whole-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) - -(defskelgroup *rolling-start-broken-sg* rolling-start rolling-start-broken-lod0-jg rolling-start-idle-ja - ((rolling-start-broken-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) + (if (race-time-less-than arg0 a1-3) (seconds->race-time arg0 arg2))) + (none)) + +(defskelgroup *rolling-start-whole-sg* + rolling-start + rolling-start-whole-lod0-jg + rolling-start-idle-ja + ((rolling-start-whole-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) + +(defskelgroup *rolling-start-broken-sg* + rolling-start + rolling-start-broken-lod0-jg + rolling-start-idle-ja + ((rolling-start-broken-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (deftype rolling-start (process-drawable) - ((whole-look lod-set :inline) - (broken-look lod-set :inline) - ) - (:states - (rolling-start-break symbol) - rolling-start-whole - ) - ) - + ((whole-look lod-set :inline) + (broken-look lod-set :inline)) + (:states (rolling-start-break symbol) + rolling-start-whole)) (defstate rolling-start-break (rolling-start) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('unbreak) - (go rolling-start-whole) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (ja-no-eval :group! rolling-start-break-whole-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-no-eval :group! rolling-start-break-broken-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (ja-no-eval :group! rolling-start-broken-ja :num! (seek!) :frame-num 0.0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('unbreak) (go rolling-start-whole)))) + :code + (behavior ((arg0 symbol)) + (ja-no-eval :group! rolling-start-break-whole-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (if arg0 - (deactivate self) - ) - ) - ) - :post ja-post - ) - -(defstate rolling-start-whole (rolling-start) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('break) - (sound-play "cool-rolling-st") - (go rolling-start-break #f) - ) - (('break-and-die) - (go rolling-start-break #t) - ) - ) - ) - :code (behavior () - (lods-assign! (-> self draw) (-> self whole-look)) - (loop - (ja-no-eval :group! rolling-start-idle-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!))) + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-no-eval :group! rolling-start-break-broken-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (loop + (ja-no-eval :group! rolling-start-broken-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if arg0 (deactivate self)))) + :post ja-post) + +(defstate rolling-start-whole (rolling-start) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('break) (sound-play "cool-rolling-st") (go rolling-start-break #f)) + (('break-and-die) (go rolling-start-break #t)))) + :code + (behavior () + (lods-assign! (-> self draw) (-> self whole-look)) + (loop + (ja-no-eval :group! rolling-start-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defbehavior rolling-start-init-by-other rolling-start ((arg0 vector) (arg1 float)) (set! (-> self root) (new 'process 'trsqv)) @@ -797,194 +574,119 @@ (initialize-skeleton self *rolling-start-whole-sg* '()) (setup-lods! (-> self whole-look) *rolling-start-whole-sg* (-> self draw art-group) (-> self entity)) (setup-lods! (-> self broken-look) *rolling-start-broken-sg* (-> self draw art-group) (-> self entity)) - (let ((s5-1 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! s5-1 arg1) - (matrix->quaternion (-> self root quat) s5-1) - ) + (let ((s5-1 (new 'stack-no-clear 'matrix))) (matrix-rotate-y! s5-1 arg1) (matrix->quaternion (-> self root quat) s5-1)) (go rolling-start-whole) - (none) - ) + (none)) (deftype gorge (process-drawable) - ((root collide-shape-moving :override) - (coord matrix :inline) - (radius float) - (thickness float) - ) - ) - + ((root collide-shape-moving :override) + (coord matrix :inline) + (radius float) + (thickness float))) (defbehavior gorge-init gorge ((arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (forward-down->inv-matrix (-> self coord) arg1 (new 'static 'vector :y -1.0)) (matrix-transpose! (-> self coord) (-> self coord)) (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-matrix*! s3-0 arg0 (-> self coord)) - (vector-negate! (-> self coord vector 3) s3-0) - ) + (vector-negate! (-> self coord vector 3) s3-0)) (set! (-> self coord vector 3 w) 1.0) (set! (-> self radius) arg2) - (set! (-> self thickness) arg3) - ) + (set! (-> self thickness) arg3)) (deftype gorge-start (gorge) - ((tasks task-control) - (record-time race-time :inline) - (this-time race-time :inline) - (start-banner handle) - (end-banner handle) - (timer-pos-offset int32) - (ticker ticky :inline) - ) + ((tasks task-control) + (record-time race-time :inline) + (this-time race-time :inline) + (start-banner handle) + (end-banner handle) + (timer-pos-offset int32) + (ticker ticky :inline)) (:states - gorge-start-idle - gorge-start-race-aborted - gorge-start-race-finished - gorge-start-racing - gorge-start-ready - ) - ) - + gorge-start-idle + gorge-start-race-aborted + gorge-start-race-finished + gorge-start-racing + gorge-start-ready)) (deftype gorge-finish (gorge) - ((alt-actor entity-actor) - ) + ((alt-actor entity-actor)) (:states - gorge-finish-idle - ) - ) + gorge-finish-idle)) - -(deftype gorge-abort (gorge) - () +(deftype gorge-abort (gorge) () (:states - gorge-abort-idle - ) - ) - + gorge-abort-idle)) (defun gorge-behind ((arg0 gorge)) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((gp-0 (new-stack-vector0))) (vector-matrix*! gp-0 (target-pos 0) (-> arg0 coord)) - (and (< (fabs (-> gp-0 x)) (-> arg0 radius)) - (< (-> gp-0 y) (-> arg0 radius)) - (< 0.0 (-> gp-0 y)) - (< (-> gp-0 z) 0.0) - ) - ) - ) + (and (< (fabs (-> gp-0 x)) (-> arg0 radius)) (< (-> gp-0 y) (-> arg0 radius)) (< 0.0 (-> gp-0 y)) (< (-> gp-0 z) 0.0)))) (defun gorge-in-front ((arg0 gorge)) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((s5-0 (new-stack-vector0))) (vector-matrix*! s5-0 (target-pos 0) (-> arg0 coord)) (and (< (fabs (-> s5-0 x)) (-> arg0 radius)) (< (-> s5-0 y) (-> arg0 radius)) (< 0.0 (-> s5-0 y)) (< 0.0 (-> s5-0 z)) - (< (-> s5-0 z) (-> arg0 thickness)) - ) - ) - ) + (< (-> s5-0 z) (-> arg0 thickness))))) (defun gorge-trans () - (none) - ) + (none)) (defstate gorge-abort-idle (gorge-abort) :trans gorge-trans - :code (behavior () - (loop - (suspend) - (if (gorge-behind self) - (send-event (ppointer->process (-> self parent)) 'aborted) - ) - ) - ) - ) + :code + (behavior () + (loop + (suspend) + (if (gorge-behind self) (send-event (ppointer->process (-> self parent)) 'aborted))))) (defbehavior gorge-abort-init-by-other gorge-abort ((arg0 vector) (arg1 vector) (arg2 float)) (set! (-> self root) (the-as collide-shape-moving (new 'process 'trsqv))) (set! (-> self root trans quad) (-> arg0 quad)) (gorge-init arg0 arg1 arg2 8192.0) (go gorge-abort-idle) - (none) - ) + (none)) (defstate gorge-finish-idle (gorge-finish) :trans gorge-trans - :code (behavior () - (loop - (suspend) - (if (gorge-in-front self) - (send-event (ppointer->process (-> self parent)) 'finished) - ) - ) - ) - ) + :code + (behavior () + (loop + (suspend) + (if (gorge-in-front self) (send-event (ppointer->process (-> self parent)) 'finished))))) (defbehavior gorge-finish-init-by-other gorge-finish ((arg0 vector) (arg1 vector) (arg2 float)) (set! (-> self root) (the-as collide-shape-moving (new 'process 'trsqv))) (set! (-> self root trans quad) (-> arg0 quad)) (gorge-init arg0 arg1 arg2 20480.0) (go gorge-finish-idle) - (none) - ) + (none)) (defun race-time->string ((arg0 race-time)) (cond ((zero? (-> arg0 digit 0)) - (format - (clear *temp-string*) - "~D~D.~D~D" - (-> arg0 digit 1) - (-> arg0 digit 2) - (-> arg0 digit 3) - (-> arg0 digit 4) - ) - *temp-string* - ) + (format (clear *temp-string*) "~D~D.~D~D" (-> arg0 digit 1) (-> arg0 digit 2) (-> arg0 digit 3) (-> arg0 digit 4)) + *temp-string*) (else - (format - (clear *temp-string*) - "~D:~D~D.~D~D" - (-> arg0 digit 0) - (-> arg0 digit 1) - (-> arg0 digit 2) - (-> arg0 digit 3) - (-> arg0 digit 4) - ) - *temp-string* - ) - ) - ) + (format (clear *temp-string*) + "~D:~D~D.~D~D" + (-> arg0 digit 0) + (-> arg0 digit 1) + (-> arg0 digit 2) + (-> arg0 digit 3) + (-> arg0 digit 4)) + *temp-string*))) (defbehavior gorge-start-draw-time gorge-start ((arg0 symbol) (arg1 symbol)) - (let ((gp-0 (new - 'stack - 'font-context - *font-default-matrix* - 0 - 0 - 0.0 - (font-color progress-yellow) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-1 gp-0)) - (set! (-> v1-1 width) (the float 200)) - ) - (let ((v1-2 gp-0)) - (set! (-> v1-2 height) (the float 50)) - ) - (let ((v1-3 gp-0)) - (set! (-> v1-3 scale) 0.7) - ) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color progress-yellow) (font-flags shadow kerning)))) + (let ((v1-1 gp-0)) (set! (-> v1-1 width) (the float 200))) + (let ((v1-2 gp-0)) (set! (-> v1-2 height) (the float 50))) + (let ((v1-3 gp-0)) (set! (-> v1-3 scale) 0.7)) (set! (-> gp-0 origin x) (the float (+ (-> self timer-pos-offset) 392))) (set! (-> gp-0 origin y) (the float (- 10 (-> self timer-pos-offset)))) (set! (-> gp-0 flags) (font-flags shadow kerning right large)) @@ -1000,277 +702,192 @@ (set! (-> gp-0 flags) (font-flags shadow kerning large)) (print-game-text (race-time->string (-> self record-time)) gp-0 #f 128 22) (cond - ((not arg0) - ) + ((not arg0)) ((race-time-less-than (-> self this-time) (-> self record-time)) (when (< (mod (-> *display* real-frame-counter) 90) 60) - (let ((v1-18 gp-0)) - (set! (-> v1-18 scale) 1.0) - ) + (let ((v1-18 gp-0)) (set! (-> v1-18 scale) 1.0)) (set! (-> gp-0 origin x) 156.0) (set! (-> gp-0 origin y) 80.0) (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) - (let ((a0-15 gp-0)) - (set! (-> a0-15 color) (font-color red)) - ) - (print-game-text (lookup-text! *common-text* (text-id new-record) #f) gp-0 #f 128 22) - ) + (let ((a0-15 gp-0)) (set! (-> a0-15 color) (font-color red))) + (print-game-text (lookup-text! *common-text* (text-id new-record) #f) gp-0 #f 128 22)) (when arg1 (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (level-hint-spawn - (text-id rolling-race-beat-record) - "sksp0109" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (race-time-save (-> self this-time) (-> self tasks)) - ) - ) + (level-hint-spawn (text-id rolling-race-beat-record) "sksp0109" (the-as entity #f) *entity-pool* (game-task none)) + (race-time-save (-> self this-time) (-> self tasks)))) (else - (if arg1 - (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) - ) - (when (< (mod (-> *display* real-frame-counter) 90) 60) - (let ((v1-30 gp-0)) - (set! (-> v1-30 scale) 1.0) - ) - (set! (-> gp-0 origin x) 156.0) - (set! (-> gp-0 origin y) 80.0) - (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) - (let ((a0-23 gp-0)) - (set! (-> a0-23 color) (font-color red)) - ) - (print-game-text (lookup-text! *common-text* (text-id try-again) #f) gp-0 #f 128 22) - ) - ) - ) - ) - (none) - ) + (if arg1 (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger)) + (when (< (mod (-> *display* real-frame-counter) 90) 60) + (let ((v1-30 gp-0)) (set! (-> v1-30 scale) 1.0)) + (set! (-> gp-0 origin x) 156.0) + (set! (-> gp-0 origin y) 80.0) + (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) + (let ((a0-23 gp-0)) (set! (-> a0-23 color) (font-color red))) + (print-game-text (lookup-text! *common-text* (text-id try-again) #f) gp-0 #f 128 22))))) + (none)) (defbehavior gorge-start-launch-start-banner gorge-start () - (the-as handle (when (task-closed? (game-task rolling-race) (task-status need-introduction)) - (when (not (handle->process (-> self start-banner))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (let ((v0-1 (ppointer->handle (process-spawn rolling-start gp-0 0.0 :to self)))) - (set! (-> self start-banner) (the-as handle v0-1)) - v0-1 - ) - ) - ) - ) - ) - ) + (the-as handle + (when (task-closed? (game-task rolling-race) (task-status need-introduction)) + (when (not (handle->process (-> self start-banner))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (let ((v0-1 (ppointer->handle (process-spawn rolling-start gp-0 0.0 :to self)))) + (set! (-> self start-banner) (the-as handle v0-1)) + v0-1)))))) (defstate gorge-start-race-finished (gorge-start) - :trans (behavior () - (gorge-trans) - ) - :code (behavior () - (gorge-start-draw-time #t #t) - (suspend) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (seekl! (-> self timer-pos-offset) 100 (the int (* 3.0 (-> *display* time-adjust-ratio)))) - (when (= (-> self timer-pos-offset) 100) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - ) - (gorge-start-draw-time #t #f) + :trans + (behavior () + (gorge-trans)) + :code + (behavior () + (gorge-start-draw-time #t #t) (suspend) - (if (gorge-in-front self) - (go gorge-start-ready) - ) - ) - (go gorge-start-idle) - ) - ) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (seekl! (-> self timer-pos-offset) 100 (the int (* 3.0 (-> *display* time-adjust-ratio)))) + (when (= (-> self timer-pos-offset) 100) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable)) + (gorge-start-draw-time #t #f) + (suspend) + (if (gorge-in-front self) (go gorge-start-ready))) + (go gorge-start-idle))) (defstate gorge-start-race-aborted (gorge-start) - :trans (behavior () - (gorge-trans) - ) - :code (behavior () - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) - (when (= (-> self timer-pos-offset) 100) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - ) - (when (< (mod (-> *display* real-frame-counter) 90) 60) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 156 80 0.0 (font-color red) (font-flags shadow kerning)) - ) - ) - (let ((v1-20 gp-0)) - (set! (-> v1-20 width) (the float 200)) - ) - (let ((v1-21 gp-0)) - (set! (-> v1-21 height) (the float 50)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text (lookup-text! *common-text* (text-id race-aborted) #f) gp-0 #f 128 22) - ) - ) - (suspend) - (if (gorge-in-front self) - (go gorge-start-ready) - ) - ) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - (go gorge-start-idle) - ) - ) + :trans + (behavior () + (gorge-trans)) + :code + (behavior () + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) + (when (= (-> self timer-pos-offset) 100) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable)) + (when (< (mod (-> *display* real-frame-counter) 90) 60) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 156 80 0.0 (font-color red) (font-flags shadow kerning)))) + (let ((v1-20 gp-0)) (set! (-> v1-20 width) (the float 200))) + (let ((v1-21 gp-0)) (set! (-> v1-21 height) (the float 50))) + (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text (lookup-text! *common-text* (text-id race-aborted) #f) gp-0 #f 128 22))) + (suspend) + (if (gorge-in-front self) (go gorge-start-ready))) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable) + (go gorge-start-idle))) (defstate gorge-start-racing (gorge-start) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('finished) - (go gorge-start-race-finished) - ) - (('aborted) - (go gorge-start-race-aborted) - ) - ) - ) - :enter (behavior () - (send-event (handle->process (-> self start-banner)) 'break) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'disable) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'hide) - (send-event (ppointer->process (-> *hud-parts* money)) 'disable) - (send-event (ppointer->process (-> *hud-parts* money)) 'hide) - (race-time-read (-> self record-time) (-> self tasks) (seconds 45)) - (set! (-> self end-banner) - (ppointer->handle - (process-spawn rolling-start (new 'static 'vector :x -86016.0 :y 112640.0 :z -6309888.0) 16384.0 :to self) - ) - ) - (process-spawn - gorge-finish - (new 'static 'vector :x -86016.0 :y 114688.0 :z -6303744.0) - (new 'static 'vector :x -1.0) - 57344.0 - :to self - ) - (process-spawn - gorge-abort - (new 'static 'vector :x -696320.0 :y 122880.0 :z -6828032.0) - (new 'static 'vector :x -0.707 :y 0.707) - 163840.0 - :to self - ) - (process-spawn - gorge-abort - (new 'static 'vector :x -847872.0 :y 143360.0 :z -6828032.0) - (new 'static 'vector :x 0.707 :y 0.707) - 163840.0 - :to self - ) - (process-spawn - gorge-abort - (new 'static 'vector :x -417792.0 :y 143360.0 :z -6004736.0) - (new 'static 'vector :x -0.5 :y 0.707 :z 0.3) - 266240.0 - :to self - ) - (process-spawn - gorge-abort - (new 'static 'vector :x -647168.0 :y 143360.0 :z -6025216.0) - (new 'static 'vector :x 0.5 :y 0.707 :z -0.3) - 163840.0 - :to self - ) - (sleep (-> self ticker) (seconds 6000)) - (set-setting! 'sound-flava #f 40.0 (music-flava rolling-gorge)) - ) - :exit (behavior () - (let* ((v1-0 (-> self child)) - (gp-0 (-> v1-0 0 brother)) - ) - (while v1-0 - (if (not (or (= v1-0 (-> self start-banner process)) (= v1-0 (-> self end-banner process)))) - (deactivate (-> v1-0 0)) - ) - (set! v1-0 gp-0) - (set! gp-0 (-> v1-0 0 brother)) - ) - ) - (send-event (handle->process (-> self end-banner)) 'break-and-die) - (send-event (handle->process (-> self start-banner)) 'unbreak) - (remove-setting! 'sound-flava) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('finished) (go gorge-start-race-finished)) + (('aborted) (go gorge-start-race-aborted)))) + :enter + (behavior () + (send-event (handle->process (-> self start-banner)) 'break) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'disable) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'hide) + (send-event (ppointer->process (-> *hud-parts* money)) 'disable) + (send-event (ppointer->process (-> *hud-parts* money)) 'hide) + (race-time-read (-> self record-time) (-> self tasks) (seconds 45)) + (set! (-> self end-banner) + (ppointer->handle (process-spawn rolling-start (new 'static 'vector :x -86016.0 :y 112640.0 :z -6309888.0) 16384.0 :to self))) + (process-spawn gorge-finish + (new 'static 'vector :x -86016.0 :y 114688.0 :z -6303744.0) + (new 'static 'vector :x -1.0) + 57344.0 + :to + self) + (process-spawn gorge-abort + (new 'static 'vector :x -696320.0 :y 122880.0 :z -6828032.0) + (new 'static 'vector :x -0.707 :y 0.707) + 163840.0 + :to + self) + (process-spawn gorge-abort + (new 'static 'vector :x -847872.0 :y 143360.0 :z -6828032.0) + (new 'static 'vector :x 0.707 :y 0.707) + 163840.0 + :to + self) + (process-spawn gorge-abort + (new 'static 'vector :x -417792.0 :y 143360.0 :z -6004736.0) + (new 'static 'vector :x -0.5 :y 0.707 :z 0.3) + 266240.0 + :to + self) + (process-spawn gorge-abort + (new 'static 'vector :x -647168.0 :y 143360.0 :z -6025216.0) + (new 'static 'vector :x 0.5 :y 0.707 :z -0.3) + 163840.0 + :to + self) + (sleep (-> self ticker) (seconds 6000)) + (set-setting! 'sound-flava #f 40.0 (music-flava rolling-gorge))) + :exit + (behavior () + (let* ((v1-0 (-> self child)) + (gp-0 (-> v1-0 0 brother))) + (while v1-0 + (if (not (or (= v1-0 (-> self start-banner process)) (= v1-0 (-> self end-banner process)))) (deactivate (-> v1-0 0))) + (set! v1-0 gp-0) + (set! gp-0 (-> v1-0 0 brother)))) + (send-event (handle->process (-> self end-banner)) 'break-and-die) + (send-event (handle->process (-> self start-banner)) 'unbreak) + (remove-setting! 'sound-flava)) :trans gorge-trans - :code (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (loop - (seconds->race-time (-> self this-time) (- (-> *display* game-frame-counter) (-> self state-time))) - (seekl! (-> self timer-pos-offset) 0 (the int (* 5.0 (-> *display* time-adjust-ratio)))) - (completed? (-> self ticker)) - (gorge-start-draw-time #f #f) - (suspend) - (if (or (not *target*) (gorge-in-front self)) - (go gorge-start-ready) - ) - ) - ) - ) + :code + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (loop + (seconds->race-time (-> self this-time) (- (-> *display* game-frame-counter) (-> self state-time))) + (seekl! (-> self timer-pos-offset) 0 (the int (* 5.0 (-> *display* time-adjust-ratio)))) + (completed? (-> self ticker)) + (gorge-start-draw-time #f #f) + (suspend) + (if (or (not *target*) (gorge-in-front self)) (go gorge-start-ready))))) (defstate gorge-start-ready (gorge-start) :trans gorge-trans - :code (behavior () - (loop - (suspend) - (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) - (when (= (-> self timer-pos-offset) 100) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - ) - (gorge-start-draw-time #f #f) - (cond - ((gorge-in-front self) - ) - ((gorge-behind self) - (go gorge-start-racing) - ) - (else - (go gorge-start-idle) - ) - ) - ) - ) - ) + :code + (behavior () + (loop + (suspend) + (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) + (when (= (-> self timer-pos-offset) 100) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable)) + (gorge-start-draw-time #f #f) + (cond + ((gorge-in-front self)) + ((gorge-behind self) (go gorge-start-racing)) + (else (go gorge-start-idle)))))) (defstate gorge-start-idle (gorge-start) - :enter (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - :exit (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - :trans (behavior () - (gorge-start-launch-start-banner) - (gorge-trans) - ) - :code (behavior () - (loop - (suspend) - (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) - (when (= (-> self timer-pos-offset) 100) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - ) - (if (gorge-in-front self) - (go gorge-start-ready) - ) - ) - ) - ) + :enter + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) + :exit + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t)) + :trans + (behavior () + (gorge-start-launch-start-banner) + (gorge-trans)) + :code + (behavior () + (loop + (suspend) + (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) + (when (= (-> self timer-pos-offset) 100) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable)) + (if (gorge-in-front self) (go gorge-start-ready))))) (defmethod init-from-entity! ((this gorge-start) (arg0 entity-actor)) (set! (-> this root) (the-as collide-shape-moving (new 'process 'trsqv))) @@ -1278,48 +895,41 @@ (let ((a0-3 (new 'stack-no-clear 'vector))) (set! (-> a0-3 quad) (-> this root trans quad)) (+! (-> a0-3 y) -8192.0) - (gorge-init a0-3 (new 'static 'vector :z 1.0) 102400.0 40960.0) - ) + (gorge-init a0-3 (new 'static 'vector :z 1.0) 102400.0 40960.0)) (set! (-> this tasks) (get-task-control (-> this entity extra perm task))) (set! (-> this start-banner) (the-as handle #f)) (set! (-> this end-banner) (the-as handle #f)) (set! (-> this timer-pos-offset) 100) (go gorge-start-idle) - (none) - ) - -(deftype rolling-water (water-anim) - () - ) + (none)) +(deftype rolling-water (water-anim) ()) (define ripple-for-rolling-water - (the-as object (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) - ) + (the-as object + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave))))) (defmethod water-vol-method-22 ((this rolling-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this 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) - (set! (-> v1-2 waveform) (the-as ripple-wave-set ripple-for-rolling-water)) - ) + (set! (-> v1-2 waveform) (the-as ripple-wave-set ripple-for-rolling-water))) (logclear! (-> this flags) (water-flags wt23)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/rolling/rolling-race-ring.gc b/goal_src/jak1/levels/rolling/rolling-race-ring.gc index c68f15b4f8..ee716b42c8 100644 --- a/goal_src/jak1/levels/rolling/rolling-race-ring.gc +++ b/goal_src/jak1/levels/rolling/rolling-race-ring.gc @@ -1,274 +1,238 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROL.DGO") - (require "engine/common-obs/collectables.gc") -;; name: rolling-race-ring.gc -;; name in dgo: rolling-race-ring -;; dgos: L1, ROL - ;; DECOMP BEGINS (deftype race-ring (process-drawable) - ((rot-y float) - (face-vec vector :inline) - (part-track handle) - (keep-part-track-alive symbol) - (timeout time-frame) - (alt-actor entity-actor) - (alt-task uint8) - (cyl cylinder-flat :inline) - (old-hips vector :inline) - ) + ((rot-y float) + (face-vec vector :inline) + (part-track handle) + (keep-part-track-alive symbol) + (timeout time-frame) + (alt-actor entity-actor) + (alt-task uint8) + (cyl cylinder-flat :inline) + (old-hips vector :inline)) (:states - race-ring-active - race-ring-idle - race-ring-wait - ) - ) - + race-ring-active + race-ring-idle + race-ring-wait)) (defpartgroup group-rolling-ring :id 457 :linger-duration (seconds 0) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1773 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1774 :fade-after (meters 80)) - (sp-item 1775 :flags (is-3d)) - (sp-item 1776 :flags (is-3d)) - ) - ) + :parts + ((sp-item 1773 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1774 :fade-after (meters 80)) + (sp-item 1775 :flags (is-3d)) + (sp-item 1776 :flags (is-3d)))) (defpart 1773 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.0 2.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 64.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.0 2.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 64.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1774 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 64.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 64.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1775 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 10)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 96.0 32.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 96.0 32.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1776 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 12)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 12)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 32.0 32.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpartgroup group-rolling-spawn-ring :id 458 :duration (seconds 0.017) :linger-duration (seconds 0.47) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1777 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1778 :flags (is-3d)) - (sp-item 1779 :flags (is-3d)) - ) - ) + :parts + ((sp-item 1777 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1778 :flags (is-3d)) + (sp-item 1779 :flags (is-3d)))) (defpart 1777 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 0.0 63 1.0) - (:vel-y (meters 0.03)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 0.5)) - (:flags (bit3)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 1780) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 0.0 63 1.0) + (:vel-y (meters 0.03)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 0.5)) + (:flags (bit3)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 1780) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)) + (:rotate-y (degrees 0)))) (defpart 1780 - :init-specs ((:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 0.0 63 1.0) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 1780) - ) - ) + :init-specs + ((:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 0.0 63 1.0) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 1780))) (defpart 1778 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 96.0 32.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 1781) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 96.0 32.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 1781))) (defpart 1781 - :init-specs ((:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 1781) - ) - ) + :init-specs ((:r 128.0 1 127.0) (:g 0.0) (:b 128.0 1 127.0) (:a 32.0 32.0) (:next-time (seconds 0.017)) (:next-launcher 1781))) (defpart 1779 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.08)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 1782) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.08)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 1782))) (defpart 1782 - :init-specs ((:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 1782) - ) - ) + :init-specs ((:r 128.0 1 127.0) (:g 0.0) (:b 128.0 1 127.0) (:a 32.0 32.0) (:next-time (seconds 0.017)) (:next-launcher 1782))) (defpartgroup group-rolling-explode-ring :id 459 :duration (seconds 0.017) :linger-duration (seconds 0.5) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1783 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1784 :flags (is-3d))) - ) + :parts ((sp-item 1783 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1784 :flags (is-3d)))) (defpart 1783 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 64.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.1) (meters 0.033333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.85333335) - (:friction 0.9) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 64.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.1) (meters 0.033333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.85333335) + (:friction 0.9) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1784 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 2.0) - (:scale-x (meters 10)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 128.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 2.0) + (:scale-x (meters 10)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 128.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defun race-ring-set-particle-rotation-callback ((arg0 part-tracker)) (let ((f0-0 (-> (the-as (pointer race-ring) (-> arg0 userdata)) 0 rot-y))) @@ -280,252 +244,223 @@ (set! (-> *part-id-table* 1778 init-specs 4 initial-valuef) f0-0) (set! (-> *part-id-table* 1779 init-specs 4 initial-valuef) f0-0) (set! (-> *part-id-table* 1783 init-specs 17 initial-valuef) f0-0) - (set! (-> *part-id-table* 1784 init-specs 4 initial-valuef) f0-0) - ) + (set! (-> *part-id-table* 1784 init-specs 4 initial-valuef) f0-0)) 0 - (none) - ) + (none)) (defpartgroup group-rolling-ring-blue :id 460 :linger-duration (seconds 0) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1785 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1786 :fade-after (meters 80)) - (sp-item 1787 :flags (is-3d)) - (sp-item 1788 :flags (is-3d)) - ) - ) + :parts + ((sp-item 1785 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1786 :fade-after (meters 80)) + (sp-item 1787 :flags (is-3d)) + (sp-item 1788 :flags (is-3d)))) (defpart 1785 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.0 2.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 64.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.0 2.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 64.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1786 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 64.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 64.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1787 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 10)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 96.0 32.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 96.0 32.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1788 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 12)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 12)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 32.0 32.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpartgroup group-rolling-spawn-ring-blue :id 461 :duration (seconds 0.017) :linger-duration (seconds 0.47) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1789 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1790 :flags (is-3d)) - (sp-item 1791 :flags (is-3d)) - ) - ) + :parts + ((sp-item 1789 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1790 :flags (is-3d)) + (sp-item 1791 :flags (is-3d)))) (defpart 1789 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 0.0 63 1.0) - (:vel-y (meters 0.03)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 0.5)) - (:flags (bit3)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 1792) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 0.0 63 1.0) + (:vel-y (meters 0.03)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 0.5)) + (:flags (bit3)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 1792) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)) + (:rotate-y (degrees 0)))) (defpart 1792 - :init-specs ((:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 0.0 63 1.0) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 1792) - ) - ) + :init-specs + ((:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 0.0 63 1.0) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 1792))) (defpart 1790 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 96.0 32.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 1793) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 96.0 32.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 1793))) (defpart 1793 - :init-specs ((:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 1793) - ) - ) + :init-specs ((:r 0.0) (:g 128.0 1 127.0) (:b 128.0 1 127.0) (:a 32.0 32.0) (:next-time (seconds 0.017)) (:next-launcher 1793))) (defpart 1791 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.08)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 1794) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.08)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 1794))) (defpart 1794 - :init-specs ((:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 1794) - ) - ) + :init-specs ((:r 0.0) (:g 128.0 1 127.0) (:b 128.0 1 127.0) (:a 32.0 32.0) (:next-time (seconds 0.017)) (:next-launcher 1794))) (defpartgroup group-rolling-explode-ring-blue :id 462 :duration (seconds 0.017) :linger-duration (seconds 0.5) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1795 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1796 :flags (is-3d))) - ) + :parts ((sp-item 1795 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1796 :flags (is-3d)))) (defpart 1795 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 64.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.1) (meters 0.033333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.85333335) - (:friction 0.9) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 64.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.1) (meters 0.033333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.85333335) + (:friction 0.9) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1796 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 2.0) - (:scale-x (meters 10)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 128.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 2.0) + (:scale-x (meters 10)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 128.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defun race-ring-blue-set-particle-rotation-callback ((arg0 part-tracker)) (let ((f0-0 (-> (the-as (pointer race-ring) (-> arg0 userdata)) 0 rot-y))) @@ -537,411 +472,267 @@ (set! (-> *part-id-table* 1790 init-specs 4 initial-valuef) f0-0) (set! (-> *part-id-table* 1791 init-specs 4 initial-valuef) f0-0) (set! (-> *part-id-table* 1795 init-specs 17 initial-valuef) f0-0) - (set! (-> *part-id-table* 1796 init-specs 4 initial-valuef) f0-0) - ) + (set! (-> *part-id-table* 1796 init-specs 4 initial-valuef) f0-0)) 0 - (none) - ) + (none)) -(defskelgroup *race-ring-sg* race-ring race-ring-lod0-jg race-ring-race-ring-idle-ja - ((race-ring-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *race-ring-sg* + race-ring + race-ring-lod0-jg + race-ring-race-ring-idle-ja + ((race-ring-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defun first-ring? ((arg0 race-ring)) - (not (-> arg0 alt-actor)) - ) + (not (-> arg0 alt-actor))) (defun last-ring? ((arg0 race-ring)) - (not (-> arg0 link next)) - ) + (not (-> arg0 link next))) (defstate race-ring-active (race-ring) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 symbol)) - (case message - (('notify) - (when (and (= (-> block param 0) 'die) (= proc (-> self part-track process 0))) - (cond - ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 460) - -1 - race-ring-blue-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! v0-0 #t) - (set! (-> self keep-part-track-alive) v0-0) - ) - (else - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 457) - -1 - race-ring-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! v0-0 #t) - (set! (-> self keep-part-track-alive) v0-0) - ) - ) - v0-0 - ) - ) - ) - ) - :enter (behavior () - (cond - ((first-ring? self) - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (else - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - ) - (set! (-> self keep-part-track-alive) #f) - (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 461) - -1 - race-ring-blue-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 458) - -1 - race-ring-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - ) - (set! (-> self old-hips quad) (-> (target-pos 26) quad)) - (+! (-> self old-hips x) 1.0) - (set! (-> self state-time) (-> *display* game-frame-counter)) - ) - :exit (behavior () - (sound-play "close-racering") - (let ((a0-3 (handle->process (-> self part-track)))) - (if a0-3 - (deactivate a0-3) - ) - ) - (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 462) - -1 - race-ring-blue-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 459) - -1 - race-ring-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - ) - (cond - ((first-ring? self) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - (else - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - ) - ) - :trans (behavior () - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (cond - ((handle->process (-> self part-track)) - (if (-> self keep-part-track-alive) - (set-time! (-> (the-as part-tracker (-> self part-track process 0)) start-time)) - ) - ) - ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 460) - -1 - race-ring-blue-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! (-> self keep-part-track-alive) #t) - ) - (else - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 457) - -1 - race-ring-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! (-> self keep-part-track-alive) #t) - ) - ) - (cond - ((not (last-ring? self)) - ) - ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (spool-push *art-control* "race-ring-second-anim" 0 self -99.0) - ) - (else - (spool-push *art-control* "race-ring-anim" 0 self -99.0) - ) - ) - ) - :code (behavior () - (loop - (suspend) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 symbol)) + (case message + (('notify) + (when (and (= (-> block param 0) 'die) (= proc (-> self part-track process 0))) + (cond + ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 460) + -1 + race-ring-blue-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! v0-0 #t) + (set! (-> self keep-part-track-alive) v0-0)) + (else + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 457) + -1 + race-ring-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! v0-0 #t) + (set! (-> self keep-part-track-alive) v0-0))) + v0-0)))) + :enter + (behavior () + (cond + ((first-ring? self) + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) + (else (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t))) + (set! (-> self keep-part-track-alive) #f) + (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 461) + -1 + race-ring-blue-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 458) + -1 + race-ring-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)))) + (set! (-> self old-hips quad) (-> (target-pos 26) quad)) + (+! (-> self old-hips x) 1.0) + (set! (-> self state-time) (-> *display* game-frame-counter))) + :exit + (behavior () + (sound-play "close-racering") + (let ((a0-3 (handle->process (-> self part-track)))) (if a0-3 (deactivate a0-3))) + (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 462) + -1 + race-ring-blue-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 459) + -1 + race-ring-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)))) (cond ((first-ring? self) - ) - ((>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self timeout)) - (level-hint-spawn - (text-id rolling-ring-chase-fail) - "sksp0121" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) - (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) 'activate) - (let ((t9-3 send-event-function) - (v1-7 (-> self alt-actor)) - ) - (t9-3 - (if v1-7 - (-> v1-7 extra process) - ) - a1-2 - ) - ) - ) - (go race-ring-idle) - ) - ) - (when *target* - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self old-hips quad)) - (set! (-> self old-hips quad) (-> (target-pos 26) quad)) - (vector-! gp-0 gp-0 (-> self old-hips)) - (when (>= (ray-flat-cyl-intersect (-> self cyl) (-> self old-hips) gp-0) 0.0) - (level-hint-spawn - (text-id rolling-ring-chase-1-hint) - "sksp0119" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (level-hint-spawn - (text-id rolling-ring-chase-2-hint) - "sksp0120" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (cond - ((first-ring? self) - (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) - (entity-birth-no-kill (-> self link next)) - (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) 'activate) - (let ((t9-12 send-event-function) - (v1-30 (-> self link next)) - ) - (t9-12 - (if v1-30 - (-> v1-30 extra process) - ) - a1-9 - ) - ) - ) - ) - ((last-ring? self) - (let ((gp-2 (ppointer->handle (process-spawn othercam self 4 #f #t :to self))) - (s5-2 (ppointer->handle (process-spawn - fuel-cell - :init fuel-cell-init-as-clone - (process->handle self) - (-> self entity extra perm task) - :to self - ) - ) - ) - ) - (if *target* - (logior! (-> *target* mask) (process-mask sleep)) - ) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (logclear! (-> self draw status) (draw-status hidden)) - (logior! (-> self draw status) (draw-status skip-bones)) - (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (ja-play-spooled-anim - (new 'static 'spool-anim :name "race-ring-second-anim" :index 4 :parts 2 :command-list '()) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (ja-play-spooled-anim - (new 'static 'spool-anim :name "race-ring-anim" :index 3 :parts 2 :command-list '()) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - ) - (logclear! (-> self draw status) (draw-status skip-bones)) - (logior! (-> self draw status) (draw-status hidden)) - (cond - ((handle->process (the-as int gp-2)) - (deactivate (-> gp-2 process 0)) - ) - (else - ) - ) - (if *target* - (logclear! (-> *target* mask) (process-mask sleep)) - ) - (let ((a0-54 (handle->process s5-2))) - (if a0-54 - (send-event a0-54 'stop-cloning) - ) - ) - ) - ) - (else - (entity-birth-no-kill (-> self link next)) - (let ((a1-22 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-22 from) self) - (set! (-> a1-22 num-params) 0) - (set! (-> a1-22 message) 'activate) - (let ((t9-26 send-event-function) - (v1-86 (-> self link next)) - ) - (t9-26 - (if v1-86 - (-> v1-86 extra process) - ) - a1-22 - ) - ) - ) - ) - ) - (go race-ring-idle) - ) - ) - ) - ) - ) - :post ja-post - ) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t)) + (else (logior! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #f)))) + :trans + (behavior () + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (cond + ((handle->process (-> self part-track)) + (if (-> self keep-part-track-alive) (set-time! (-> (the-as part-tracker (-> self part-track process 0)) start-time)))) + ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 460) + -1 + race-ring-blue-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! (-> self keep-part-track-alive) #t)) + (else + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 457) + -1 + race-ring-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! (-> self keep-part-track-alive) #t))) + (cond + ((not (last-ring? self))) + ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (spool-push *art-control* "race-ring-second-anim" 0 self -99.0)) + (else (spool-push *art-control* "race-ring-anim" 0 self -99.0)))) + :code + (behavior () + (loop + (suspend) + (cond + ((first-ring? self)) + ((>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self timeout)) + (level-hint-spawn (text-id rolling-ring-chase-fail) "sksp0121" (the-as entity #f) *entity-pool* (game-task none)) + (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) + (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) 'activate) + (let ((t9-3 send-event-function) + (v1-7 (-> self alt-actor))) + (t9-3 (if v1-7 (-> v1-7 extra process)) a1-2))) + (go race-ring-idle))) + (when *target* + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self old-hips quad)) + (set! (-> self old-hips quad) (-> (target-pos 26) quad)) + (vector-! gp-0 gp-0 (-> self old-hips)) + (when (>= (ray-flat-cyl-intersect (-> self cyl) (-> self old-hips) gp-0) 0.0) + (level-hint-spawn (text-id rolling-ring-chase-1-hint) "sksp0119" (the-as entity #f) *entity-pool* (game-task none)) + (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (level-hint-spawn (text-id rolling-ring-chase-2-hint) "sksp0120" (the-as entity #f) *entity-pool* (game-task none))) + (cond + ((first-ring? self) + (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) + (entity-birth-no-kill (-> self link next)) + (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) 'activate) + (let ((t9-12 send-event-function) + (v1-30 (-> self link next))) + (t9-12 (if v1-30 (-> v1-30 extra process)) a1-9)))) + ((last-ring? self) + (let ((gp-2 (ppointer->handle (process-spawn othercam self 4 #f #t :to self))) + (s5-2 (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) (-> self entity extra perm task) :to self)))) + (if *target* (logior! (-> *target* mask) (process-mask sleep))) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status skip-bones)) + (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (ja-play-spooled-anim (new 'static 'spool-anim :name "race-ring-second-anim" :index 4 :parts 2 :command-list '()) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (ja-play-spooled-anim (new 'static 'spool-anim :name "race-ring-anim" :index 3 :parts 2 :command-list '()) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func))) + (logclear! (-> self draw status) (draw-status skip-bones)) + (logior! (-> self draw status) (draw-status hidden)) + (cond + ((handle->process (the-as int gp-2)) (deactivate (-> gp-2 process 0))) + (else)) + (if *target* (logclear! (-> *target* mask) (process-mask sleep))) + (let ((a0-54 (handle->process s5-2))) (if a0-54 (send-event a0-54 'stop-cloning))))) + (else + (entity-birth-no-kill (-> self link next)) + (let ((a1-22 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-22 from) self) + (set! (-> a1-22 num-params) 0) + (set! (-> a1-22 message) 'activate) + (let ((t9-26 send-event-function) + (v1-86 (-> self link next))) + (t9-26 (if v1-86 (-> v1-86 extra process)) a1-22))))) + (go race-ring-idle)))))) + :post ja-post) (defstate race-ring-wait (race-ring) - :code (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (loop - (suspend) - (when (= (get-task-status (the-as game-task (-> self alt-task))) (task-status invalid)) - (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) - (logclear! (-> self mask) (process-mask actor-pause)) - (go race-ring-active) - ) - ) - ) - ) + :code + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (loop + (suspend) + (when (= (get-task-status (the-as game-task (-> self alt-task))) (task-status invalid)) + (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) + (logclear! (-> self mask) (process-mask actor-pause)) + (go race-ring-active))))) (defstate race-ring-idle (race-ring) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('activate) - (logclear! (-> self mask) (process-mask actor-pause)) - (go race-ring-active) - ) - ) - ) - :code (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('activate) (logclear! (-> self mask) (process-mask actor-pause)) (go race-ring-active)))) + :code + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (loop + (suspend)))) (defmethod init-from-entity! ((this race-ring) (arg0 entity-actor)) - (let ((a0-1 arg0)) - (if (not (entity-actor-lookup a0-1 'next-actor 0)) - (stack-size-set! (-> this main-thread) 512) - ) - ) + (let ((a0-1 arg0)) (if (not (entity-actor-lookup a0-1 'next-actor 0)) (stack-size-set! (-> this main-thread) 512))) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *race-ring-sg* '()) @@ -950,21 +741,12 @@ (set! (-> this part-track) (the-as handle #f)) (set! (-> this alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) (logior! (-> this draw status) (draw-status hidden)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "loop-racering" :fo-max 40) (-> this root trans)) - ) - (let ((f0-1 (res-lump-float arg0 'timeout))) - (set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-1)))) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "loop-racering" :fo-max 40) (-> this root trans))) + (let ((f0-1 (res-lump-float arg0 'timeout))) (set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-1))))) (let ((s4-0 (new 'stack-no-clear 'vector))) (cond - ((-> this link next) - (vector-! (-> this face-vec) (-> this link next extra trans) (-> this root trans)) - ) - ((-> this link prev) - (vector-! (-> this face-vec) (-> this root trans) (-> this link prev extra trans)) - ) - ) + ((-> this link next) (vector-! (-> this face-vec) (-> this link next extra trans) (-> this root trans))) + ((-> this link prev) (vector-! (-> this face-vec) (-> this root trans) (-> this link prev extra trans)))) (vector-flatten! (-> this face-vec) (-> this face-vec) (new 'static 'vector :y 1.0)) (vector-normalize! (-> this face-vec) 1.0) (cond @@ -975,19 +757,11 @@ (vector+! s4-0 s4-0 (-> this face-vec)) (vector-normalize! s4-0 1.0) (set! (-> this rot-y) (acos (vector-dot s4-0 (new 'static 'vector :z 1.0)))) - (if (< (vector-dot s4-0 (new 'static 'vector :x 1.0)) 0.0) - (set! (-> this rot-y) (- (-> this rot-y))) - ) - ) + (if (< (vector-dot s4-0 (new 'static 'vector :x 1.0)) 0.0) (set! (-> this rot-y) (- (-> this rot-y))))) (else - (set! (-> this rot-y) (acos (vector-dot (-> this face-vec) (new 'static 'vector :z 1.0)))) - (if (< (vector-dot (-> this face-vec) (new 'static 'vector :x 1.0)) 0.0) - (set! (-> this rot-y) (- (-> this rot-y))) - ) - (+! (-> this rot-y) 16384.0) - ) - ) - ) + (set! (-> this rot-y) (acos (vector-dot (-> this face-vec) (new 'static 'vector :z 1.0)))) + (if (< (vector-dot (-> this face-vec) (new 'static 'vector :x 1.0)) 0.0) (set! (-> this rot-y) (- (-> this rot-y)))) + (+! (-> this rot-y) 16384.0)))) (+! (-> this rot-y) (res-lump-float arg0 'rotoffset)) (set-vector! (-> this cyl axis) (cos (-> this rot-y)) 0.0 (- (sin (-> this rot-y))) 1.0) (vector+float*! (the-as vector (-> this cyl)) (-> this root trans) (-> this cyl axis) -2048.0) @@ -996,36 +770,24 @@ (cond ((and (first-ring? this) (!= (get-task-status (-> this entity extra perm task)) (task-status invalid)) - (!= (get-task-status (-> this entity extra perm task)) 7) - ) + (!= (get-task-status (-> this entity extra perm task)) 7)) (set! (-> this alt-task) (res-lump-value (-> this entity) 'alt-task uint)) - (if (or (= (-> this alt-task) 0) - (= (get-task-status (the-as game-task (-> this alt-task))) (task-status invalid)) - ) - (go race-ring-active) - (go race-ring-wait) - ) - ) + (if (or (= (-> this alt-task) 0) (= (get-task-status (the-as game-task (-> this alt-task))) (task-status invalid))) + (go race-ring-active) + (go race-ring-wait))) ((and (last-ring? this) (= (get-task-status (-> this entity extra perm task)) (task-status need-resolution))) (let ((s5-2 (new 'stack-no-clear 'vector))) (logclear! (-> this draw status) (draw-status hidden)) (ja-post) (vector<-cspace! s5-2 (-> this node-list data 5)) (logior! (-> this draw status) (draw-status hidden)) - (birth-pickup-at-point - s5-2 - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - ) - ((and (last-ring? this) (!= (get-task-status (-> this entity extra perm task)) (task-status invalid))) - ) - ) + (birth-pickup-at-point s5-2 + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f)))) + ((and (last-ring? this) (!= (get-task-status (-> this entity extra perm task)) (task-status invalid))))) (set! (-> this event-hook) (-> race-ring-idle event)) (go race-ring-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/rolling/rolling-robber.gc b/goal_src/jak1/levels/rolling/rolling-robber.gc index 79c6aae946..d63a67af06 100644 --- a/goal_src/jak1/levels/rolling/rolling-robber.gc +++ b/goal_src/jak1/levels/rolling/rolling-robber.gc @@ -1,65 +1,48 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROL.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: rolling-robber.gc -;; name in dgo: rolling-robber -;; dgos: L1, ROL ;; note: changed for high fps ;; DECOMP BEGINS (defstate fuel-cell-spline-slider (fuel-cell) :trans hide-hud-quick - :code (behavior ((arg0 handle) (arg1 float) (arg2 float)) - (logclear! (-> self mask) (process-mask actor-pause)) - (ja :group! fuel-cell-idle-ja) - (if *target* - (process-grab? *target*) - ) - (hide-hud-quick) - (set! *camera-look-through-other* 2) - (set! (-> *camera-other-fov* data) 11650.845) - (set! (-> *camera-other-trans* quad) (-> *math-camera* trans quad)) - (set! (-> *camera-other-root* quad) (-> *math-camera* trans quad)) - (set-time! (-> self state-time)) - (loop - (*! arg2 (- 1.0 (* 0.05 (-> *display* time-adjust-ratio)))) ;; og:preserve-this changed for high fps - (when (and (< (fabs arg2) 13.653334) (time-elapsed? (-> self state-time) (seconds 1.5))) - (if *target* - (process-release? *target*) - ) - (go-virtual wait) - ) - (set! arg1 (+ arg1 (/ (* arg2 (seconds-per-frame)) (path-distance (-> self path))))) - (cond - ((< 1.0 arg1) - (set! arg1 (+ -1.0 arg1)) - ) - ((< arg1 0.0) - (set! arg1 (+ 1.0 arg1)) - ) - ) - (eval-path-curve! (-> self path) (-> self root trans) arg1 'interp) - (+! (-> self root trans y) 8192.0) - (set! (-> self root trans y) (fmax 106496.0 (-> self root trans y))) - (set! (-> self base quad) (-> self root trans quad)) - (transform-post) - (animate self) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (vector-! s4-0 (-> self root trans) *camera-other-trans*) - (vector-normalize! s4-0 1.0) - (forward-down->inv-matrix *camera-other-matrix* s4-0 (new 'static 'vector :y -1.0 :w 1.0)) - ) + :code + (behavior ((arg0 handle) (arg1 float) (arg2 float)) + (logclear! (-> self mask) (process-mask actor-pause)) + (ja :group! fuel-cell-idle-ja) + (if *target* (process-grab? *target*)) + (hide-hud-quick) (set! *camera-look-through-other* 2) - (set-letterbox-frames (seconds 0.035)) - (suspend) - (ja :num! (loop! 0.5)) - ) - ) - ) + (set! (-> *camera-other-fov* data) 11650.845) + (set! (-> *camera-other-trans* quad) (-> *math-camera* trans quad)) + (set! (-> *camera-other-root* quad) (-> *math-camera* trans quad)) + (set-time! (-> self state-time)) + (loop + (*! arg2 (- 1.0 (* 0.05 (-> *display* time-adjust-ratio)))) ;; og:preserve-this changed for high fps + (when (and (< (fabs arg2) 13.653334) (time-elapsed? (-> self state-time) (seconds 1.5))) + (if *target* (process-release? *target*)) + (go-virtual wait)) + (set! arg1 (+ arg1 (/ (* arg2 (seconds-per-frame)) (path-distance (-> self path))))) + (cond + ((< 1.0 arg1) (set! arg1 (+ -1.0 arg1))) + ((< arg1 0.0) (set! arg1 (+ 1.0 arg1)))) + (eval-path-curve! (-> self path) (-> self root trans) arg1 'interp) + (+! (-> self root trans y) 8192.0) + (set! (-> self root trans y) (fmax 106496.0 (-> self root trans y))) + (set! (-> self base quad) (-> self root trans quad)) + (transform-post) + (animate self) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (vector-! s4-0 (-> self root trans) *camera-other-trans*) + (vector-normalize! s4-0 1.0) + (forward-down->inv-matrix *camera-other-matrix* s4-0 (new 'static 'vector :y -1.0 :w 1.0))) + (set! *camera-look-through-other* 2) + (set-letterbox-frames (seconds 0.035)) + (suspend) + (ja :num! (loop! 0.5))))) (defbehavior fuel-cell-init-as-spline-slider fuel-cell ((arg0 handle) (arg1 float) (arg2 float) (arg3 int)) (initialize self) @@ -72,53 +55,46 @@ (set! (-> self path) (new 'process 'curve-control self 'path -1000000000.0)) (set! (-> self movie-pos-index) -1) (go fuel-cell-spline-slider arg0 arg1 arg2) - (none) - ) + (none)) (deftype robber (process-drawable) - ((root collide-shape-moving :override) - (curve-position float) - (speed float) - (facing vector :inline) - (tangent vector :inline) - (run-blend-interp float) - (near-timer int32) - (far-time time-frame) - (y-offset float) - (y-offset-desired float) - (y-vel float) - (water-height float) - (timeout time-frame) - (last-ambient-time time-frame) - (time-to-next-ambient time-frame) - ) + ((root collide-shape-moving :override) + (curve-position float) + (speed float) + (facing vector :inline) + (tangent vector :inline) + (run-blend-interp float) + (near-timer int32) + (far-time time-frame) + (y-offset float) + (y-offset-desired float) + (y-vel float) + (water-height float) + (timeout time-frame) + (last-ambient-time time-frame) + (time-to-next-ambient time-frame)) (:states - robber-dead - robber-debug - robber-die - robber-flee - robber-got-away - robber-idle - robber-initial - robber-initial-notice - robber-tired - ) - ) + robber-dead + robber-debug + robber-die + robber-flee + robber-got-away + robber-idle + robber-initial + robber-initial-notice + robber-tired)) - -(defskelgroup *robber-sg* robber robber-lod0-jg robber-idle-hover-ja - ((robber-lod0-mg (meters 20)) (robber-lod1-mg (meters 40)) (robber-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow robber-shadow-mg - ) +(defskelgroup *robber-sg* + robber + robber-lod0-jg + robber-idle-hover-ja + ((robber-lod0-mg (meters 20)) (robber-lod1-mg (meters 40)) (robber-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow robber-shadow-mg) (defbehavior robber-event-handler robber ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (go robber-die) - ) - ) - ) + (('attack) (go robber-die)))) (defbehavior robber-task-complete? robber () (local-vars (sv-16 symbol)) @@ -128,70 +104,41 @@ (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) (cond (sv-16 - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (format #t "robber task is complete~%") - ) - (else - ) - ) - sv-16 - ) - ) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (format #t "robber task is complete~%")) + (else)) + sv-16)) (defbehavior robber-find-ground robber () (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self root trans quad)) (let ((t2-0 (new 'stack-no-clear 'collide-tri-result))) (+! (-> gp-0 y) 8192.0) - (let ((f0-2 (fill-and-probe-using-line-sphere - *collide-cache* - gp-0 - (new 'static 'vector :y -81920.0 :w 1.0) - 40.96 - (collide-kind background) - self - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - (v1-5 (new 'stack-no-clear 'vector)) - ) + (let ((f0-2 (fill-and-probe-using-line-sphere *collide-cache* + gp-0 + (new 'static 'vector :y -81920.0 :w 1.0) + 40.96 + (collide-kind background) + self + t2-0 + (new 'static 'pat-surface :noentity #x1))) + (v1-5 (new 'stack-no-clear 'vector))) (set! (-> v1-5 quad) (-> self root trans quad)) (set! (-> v1-5 y) (+ (-> gp-0 y) (* -81920.0 f0-2))) (cond ((and (>= f0-2 0.0) (< 204.8 (fabs (- (-> v1-5 y) (-> self water-height))))) - (set! (-> self y-offset-desired) - (- (+ (-> gp-0 y) (* -81920.0 f0-2)) (- (-> self root trans y) (-> self y-offset))) - ) - #t - ) - (else - (set! (-> self y-offset-desired) 0.0) - #f - ) - ) - ) - ) - ) - ) + (set! (-> self y-offset-desired) (- (+ (-> gp-0 y) (* -81920.0 f0-2)) (- (-> self root trans y) (-> self y-offset)))) + #t) + (else (set! (-> self y-offset-desired) 0.0) #f)))))) (defbehavior robber-rotate robber ((arg0 target) (arg1 float)) (let ((s5-0 (new 'stack-no-clear 'matrix)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> self path) (-> self tangent) (-> self curve-position)) (cond - ((and arg0 *target*) - (vector-! gp-0 (-> self root trans) (target-pos 0)) - (vector-normalize! gp-0 1.0) - ) - ((< (-> self speed) 0.0) - (vector-negate! gp-0 (-> self tangent)) - ) - (else - (set! (-> gp-0 quad) (-> self tangent quad)) - ) - ) + ((and arg0 *target*) (vector-! gp-0 (-> self root trans) (target-pos 0)) (vector-normalize! gp-0 1.0)) + ((< (-> self speed) 0.0) (vector-negate! gp-0 (-> self tangent))) + (else (set! (-> gp-0 quad) (-> self tangent quad)))) (matrix-from-two-vectors-max-angle-partial! s5-0 (-> self facing) gp-0 arg1 0.25) (vector-matrix*! gp-0 (-> self facing) s5-0) (vector-normalize! gp-0 1.0) @@ -200,29 +147,16 @@ (set! (-> self run-blend-interp) (acos (vector-dot gp-0 (-> self facing)))) (set! (-> self run-blend-interp) (* 0.0002746582 (-> self run-blend-interp))) (if (< (vector-dot (-> self facing) (the-as vector (-> s5-0 vector))) 0.0) - (set! (-> self run-blend-interp) (- (-> self run-blend-interp))) - ) - (let ((v0-10 (-> self facing))) - (set! (-> v0-10 quad) (-> gp-0 quad)) - v0-10 - ) - ) - ) + (set! (-> self run-blend-interp) (- (-> self run-blend-interp)))) + (let ((v0-10 (-> self facing))) (set! (-> v0-10 quad) (-> gp-0 quad)) v0-10))) (defbehavior robber-move robber () (+! (-> self curve-position) (/ (the float (* (- (current-time) (-> *display* old-base-frame-counter)) (the int (-> self speed)))) - (path-distance (-> self path)) - ) - ) + (path-distance (-> self path)))) (cond - ((< 1.0 (-> self curve-position)) - (+! (-> self curve-position) -1.0) - ) - ((< (-> self curve-position) 0.0) - (+! (-> self curve-position) 1.0) - ) - ) + ((< 1.0 (-> self curve-position)) (+! (-> self curve-position) -1.0)) + ((< (-> self curve-position) 0.0) (+! (-> self curve-position) 1.0))) (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) (cond ((< (-> self y-offset-desired) (-> self y-offset)) @@ -231,21 +165,15 @@ (+! (-> self y-offset) (-> self y-vel)) (when (>= (-> self y-offset-desired) (-> self y-offset)) (set! (-> self y-offset) (-> self y-offset-desired)) - (set! (-> self y-vel) 0.0) - ) - ) + (set! (-> self y-vel) 0.0))) ((< (-> self y-offset) (-> self y-offset-desired)) (set! (-> self y-vel) (* 0.5 (- (-> self y-offset-desired) (-> self y-offset)))) (set! (-> self y-vel) (fmin 13.653334 (-> self y-vel))) (+! (-> self y-offset) (-> self y-vel)) (when (>= (-> self y-offset) (-> self y-offset-desired)) (set! (-> self y-offset) (-> self y-offset-desired)) - (set! (-> self y-vel) 0.0) - ) - ) - ) - (set! (-> self root trans y) (+ (-> self root trans y) (-> self y-offset))) - ) + (set! (-> self y-vel) 0.0)))) + (set! (-> self root trans y) (+ (-> self root trans y) (-> self y-offset)))) (defbehavior robber-calc-speed robber ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 symbol)) (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (target-pos 0)))) @@ -253,379 +181,279 @@ (let* ((f2-1 (/ (- (vector-length gp-1) arg0) (- arg1 arg0))) (f0-4 (- 1.0 (fmax 0.0 (fmin 1.0 f2-1)))) (f0-5 (lerp arg3 arg2 f0-4)) - (f30-0 (* 0.0033333334 f0-5)) - ) + (f30-0 (* 0.0033333334 f0-5))) (cond - ((or (not arg4) (< arg0 (vector-length gp-1))) - (if (< (-> self speed) 0.0) - (set! f30-0 (- f30-0)) - ) - ) - ((< (vector-dot gp-1 (-> self tangent)) 0.0) - (set! f30-0 (- f30-0)) - ) - ) + ((or (not arg4) (< arg0 (vector-length gp-1))) (if (< (-> self speed) 0.0) (set! f30-0 (- f30-0)))) + ((< (vector-dot gp-1 (-> self tangent)) 0.0) (set! f30-0 (- f30-0)))) (set! (-> self speed) f30-0) - f30-0 - ) - ) - ) + f30-0))) (defbehavior robber-calc-anim-speed robber () (let* ((f0-1 (fabs (-> self speed))) (f0-2 (* 0.07324219 f0-1)) (f0-3 (+ -15.0 f0-2)) - (f1-3 (* 0.13333334 f0-3)) - ) - (fmin 1.5 (fmax 0.9 f1-3)) - ) - ) + (f1-3 (* 0.13333334 f0-3))) + (fmin 1.5 (fmax 0.9 f1-3)))) (defstate robber-debug (robber) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((a1-1 (new 'stack-no-clear 'vector))) - (clmf-input gp-0 a1-1 1) - ) - (format *stdcon* "rv ~f ~f ~f~%" (-> gp-0 x) (-> gp-0 y) (-> gp-0 z)) - (vector-float*! gp-0 gp-0 4096.0) - (+! (-> self curve-position) (/ (-> gp-0 y) (path-distance (-> self path)))) - ) - (cond - ((< 1.0 (-> self curve-position)) - (+! (-> self curve-position) -1.0) - ) - ((< (-> self curve-position) 0.0) - (+! (-> self curve-position) 1.0) - ) - ) - (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) - (robber-rotate (the-as target #f) 1820.4445) - (robber-find-ground) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((a1-1 (new 'stack-no-clear 'vector))) (clmf-input gp-0 a1-1 1)) + (format *stdcon* "rv ~f ~f ~f~%" (-> gp-0 x) (-> gp-0 y) (-> gp-0 z)) + (vector-float*! gp-0 gp-0 4096.0) + (+! (-> self curve-position) (/ (-> gp-0 y) (path-distance (-> self path))))) + (cond + ((< 1.0 (-> self curve-position)) (+! (-> self curve-position) -1.0)) + ((< (-> self curve-position) 0.0) (+! (-> self curve-position) 1.0))) + (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) + (robber-rotate (the-as target #f) 1820.4445) + (robber-find-ground) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate robber-dead (robber) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self))) (defstate robber-die (robber) :event process-drawable-death-event-handler - :code (behavior () - (let ((gp-0 #t)) - (when (robber-task-complete?) - (let ((v1-3 (-> self entity extra perm))) - (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) - (cond - ((zero? (-> v1-3 user-object 1)) - (set! (-> v1-3 user-object 1) 1) - (set! (-> v1-3 user-object 0) (-> self curve-position)) - (let ((f30-0 (if (>= (-> self speed) 0.0) - 163840.0 - -163840.0 - ) - ) - ) - (process-spawn - fuel-cell - :init fuel-cell-init-as-spline-slider - (process->handle self) - (-> self curve-position) - f30-0 - (-> self entity extra perm task) - :to self - ) - ) - ) - (else - (set! gp-0 #f) - (logior! (-> self draw status) (draw-status hidden)) - (let ((s5-1 (new 'stack-no-clear 'vector))) - (eval-path-curve! (-> self path) s5-1 (the-as float (-> v1-3 user-object 0)) 'interp) - (+! (-> s5-1 y) 8192.0) - (birth-pickup-at-point - s5-1 - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - ) - ) - ) - ) - (when gp-0 - (ja-no-eval :group! robber-death-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (robber-calc-speed 4096.0 8192.0 122880.0 122880.0 #f) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (while (-> self child) - (suspend) - ) - (go robber-dead) - ) - :post transform-post - ) + :code + (behavior () + (let ((gp-0 #t)) + (when (robber-task-complete?) + (let ((v1-3 (-> self entity extra perm))) + (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) + (cond + ((zero? (-> v1-3 user-object 1)) + (set! (-> v1-3 user-object 1) 1) + (set! (-> v1-3 user-object 0) (-> self curve-position)) + (let ((f30-0 (if (>= (-> self speed) 0.0) 163840.0 -163840.0))) + (process-spawn fuel-cell + :init + fuel-cell-init-as-spline-slider + (process->handle self) + (-> self curve-position) + f30-0 + (-> self entity extra perm task) + :to + self))) + (else + (set! gp-0 #f) + (logior! (-> self draw status) (draw-status hidden)) + (let ((s5-1 (new 'stack-no-clear 'vector))) + (eval-path-curve! (-> self path) s5-1 (the-as float (-> v1-3 user-object 0)) 'interp) + (+! (-> s5-1 y) 8192.0) + (birth-pickup-at-point s5-1 + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f))))))) + (when gp-0 + (ja-no-eval :group! robber-death-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (robber-calc-speed 4096.0 8192.0 122880.0 122880.0 #f) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (ja :num! (seek!))))) + (while (-> self child) + (suspend)) + (go robber-dead)) + :post transform-post) (defstate robber-got-away (robber) :event robber-event-handler - :trans (behavior () - (if (and (not (and *target* (>= 204800.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - (robber-find-ground) - ) - (go robber-idle) - ) - (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go robber-flee) - ) - ) - :code (behavior () - (when (not (ja-group? robber-fly-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robber-fly-ja) - ) - (loop - (ja :num! (loop! (robber-calc-anim-speed))) - (if (< 27.306667 (fabs (-> self speed))) - (set! (-> self speed) (* 0.95 (-> self speed))) - ) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - ) - ) - :post transform-post - ) + :trans + (behavior () + (if (and (not (and *target* (>= 204800.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) + (robber-find-ground)) + (go robber-idle)) + (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go robber-flee))) + :code + (behavior () + (when (not (ja-group? robber-fly-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robber-fly-ja)) + (loop + (ja :num! (loop! (robber-calc-anim-speed))) + (if (< 27.306667 (fabs (-> self speed))) (set! (-> self speed) (* 0.95 (-> self speed)))) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend))) + :post transform-post) (defstate robber-tired (robber) :event robber-event-handler - :enter (behavior () - (set! (-> self y-offset-desired) -12288.0) - ) - :exit (behavior () - (set! (-> self y-offset-desired) 0.0) - ) - :trans (behavior () - (if (not (and *target* (>= 163840.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - (go robber-got-away) - ) - ) - :code (behavior () - (loop - (when (not (ja-group? robber-fly-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robber-fly-ja) - ) - (ja :num! (loop! (robber-calc-anim-speed))) - (robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! robber-ambient-look-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self last-ambient-time)) - (let* ((f30-0 300.0) - (f28-0 2.0) - (f26-0 2.0) - (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-42 (the-as number (logior #x3f800000 v1-41))) - ) - (set! (-> self time-to-next-ambient) - (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42))))))) - ) - ) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self y-offset-desired) -12288.0)) + :exit + (behavior () + (set! (-> self y-offset-desired) 0.0)) + :trans + (behavior () + (if (not (and *target* (>= 163840.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) + (go robber-got-away))) + :code + (behavior () + (loop + (when (not (ja-group? robber-fly-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robber-fly-ja)) + (ja :num! (loop! (robber-calc-anim-speed))) + (robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! robber-ambient-look-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self last-ambient-time)) + (let* ((f30-0 300.0) + (f28-0 2.0) + (f26-0 2.0) + (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-42 (the-as number (logior #x3f800000 v1-41)))) + (set! (-> self time-to-next-ambient) + (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42)))))))))))) + :post transform-post) (defstate robber-flee (robber) :event robber-event-handler - :enter (behavior () - (set! (-> self near-timer) 3000) - (set-time! (-> self far-time)) - (set! (-> self y-offset-desired) 0.0) - ) - :trans (behavior () - (if (not (and *target* (>= 163840.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - (go robber-got-away) - ) - (when (and *target* (>= 102400.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (set! (-> self near-timer) - (- (the-as time-frame (-> self near-timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) - (if (<= (-> self near-timer) 0) - (go robber-tired) - ) + :enter + (behavior () + (set! (-> self near-timer) 3000) (set-time! (-> self far-time)) - ) - (if (time-elapsed? (-> self far-time) (seconds 3)) - (set! (-> self near-timer) (the-as int (-> self timeout))) - ) - ) - :code (behavior () - (loop - (when (not (ja-group? robber-fly-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robber-fly-ja) - ) - (ja :num! (loop! (robber-calc-anim-speed))) - (robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! robber-ambient-look-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self last-ambient-time)) - (let* ((f30-0 300.0) - (f28-0 3.0) - (f26-0 5.0) - (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-42 (the-as number (logior #x3f800000 v1-41))) - ) - (set! (-> self time-to-next-ambient) - (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42))))))) - ) - ) - ) - ) - ) - :post transform-post - ) + (set! (-> self y-offset-desired) 0.0)) + :trans + (behavior () + (if (not (and *target* (>= 163840.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) + (go robber-got-away)) + (when (and *target* (>= 102400.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (set! (-> self near-timer) + (- (the-as time-frame (-> self near-timer)) (- (current-time) (-> *display* old-base-frame-counter)))) + (if (<= (-> self near-timer) 0) (go robber-tired)) + (set-time! (-> self far-time))) + (if (time-elapsed? (-> self far-time) (seconds 3)) (set! (-> self near-timer) (the-as int (-> self timeout))))) + :code + (behavior () + (loop + (when (not (ja-group? robber-fly-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robber-fly-ja)) + (ja :num! (loop! (robber-calc-anim-speed))) + (robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! robber-ambient-look-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self last-ambient-time)) + (let* ((f30-0 300.0) + (f28-0 3.0) + (f26-0 5.0) + (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-42 (the-as number (logior #x3f800000 v1-41)))) + (set! (-> self time-to-next-ambient) + (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42)))))))))))) + :post transform-post) (defstate robber-idle (robber) :event robber-event-handler - :enter (behavior () - (set! (-> self speed) 0.0) - ) - :trans (behavior () - (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go robber-flee) - ) - (robber-rotate (the-as target #t) 182.04445) - (robber-move) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! robber-idle-hover-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self speed) 0.0)) + :trans + (behavior () + (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go robber-flee)) + (robber-rotate (the-as target #t) 182.04445) + (robber-move)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (loop + (ja-no-eval :group! robber-idle-hover-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robber-initial-notice (robber) :event robber-event-handler - :trans (behavior () - (when (logtest? (-> self draw status) (draw-status was-drawn)) - (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn (text-id rolling-robbers-hint) "sksp0116" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - (if (and *target* (>= 32768.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go robber-flee) - ) - ) - :code (behavior () - (path-control-method-14 (-> self path) (-> self tangent) (-> self curve-position)) - (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (target-pos 0))) - (f0-1 6.826667) - ) - (set! (-> gp-1 y) 0.0) - (if (< (vector-dot gp-1 (-> self tangent)) 0.0) - (set! f0-1 (- f0-1)) - ) - (set! (-> self speed) f0-1) - ) - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! robber-spots-ja :num! (seek! max 2.0) :frame-num 0.0) - (until (ja-done? 0) - (robber-calc-speed 61440.0 122880.0 2048.0 2048.0 #t) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (ja :num! (seek! max 2.0)) - ) - (go robber-flee) - ) - ) - :post transform-post - ) + :trans + (behavior () + (when (logtest? (-> self draw status) (draw-status was-drawn)) + (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id rolling-robbers-hint) "sksp0116" (the-as entity #f) *entity-pool* (game-task none)))) + (if (and *target* (>= 32768.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go robber-flee))) + :code + (behavior () + (path-control-method-14 (-> self path) (-> self tangent) (-> self curve-position)) + (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (target-pos 0))) + (f0-1 6.826667)) + (set! (-> gp-1 y) 0.0) + (if (< (vector-dot gp-1 (-> self tangent)) 0.0) (set! f0-1 (- f0-1))) + (set! (-> self speed) f0-1)) + (ja-channel-push! 1 (seconds 0.2)) + (loop + (ja-no-eval :group! robber-spots-ja :num! (seek! max 2.0) :frame-num 0.0) + (until (ja-done? 0) + (robber-calc-speed 61440.0 122880.0 2048.0 2048.0 #t) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (ja :num! (seek! max 2.0))) + (go robber-flee))) + :post transform-post) (defstate robber-initial (robber) :event robber-event-handler - :enter (behavior () - (set! (-> self speed) 0.0) - ) - :trans (behavior () - (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go robber-initial-notice) - ) - (robber-move) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! robber-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self speed) 0.0)) + :trans + (behavior () + (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go robber-initial-notice)) + (robber-move)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (loop + (ja-no-eval :group! robber-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defmethod init-from-entity! ((this robber) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -633,21 +461,17 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 10240.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *robber-sg* '()) (set! (-> this root pause-adjust-distance) 122880.0) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this path) (new 'process 'curve-control this 'path -1000000000.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this draw origin-joint-index) (the-as uint 3)) (set! (-> this curve-position) (res-lump-float (-> this entity) 'initial-spline-pos)) (eval-path-curve! (-> this path) (-> this root trans) (-> this curve-position) 'interp) @@ -655,27 +479,20 @@ (set! (-> this facing quad) (-> this tangent quad)) (let ((s4-1 (new 'stack-no-clear 'matrix))) (forward-down->inv-matrix s4-1 (-> this facing) (new 'static 'vector :y -1.0)) - (matrix->quaternion (-> this root quat) s4-1) - ) + (matrix->quaternion (-> this root quat) s4-1)) (set! (-> this y-vel) 0.0) (set! (-> this water-height) (res-lump-float (-> this entity) 'water-height)) (robber-find-ground) (set! (-> this y-offset) (-> this y-offset-desired)) (let ((f0-14 (res-lump-float arg0 'timeout :default 10.0))) - (set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-14)))) - ) + (set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-14))))) (set! (-> this last-ambient-time) 0) (set! (-> this time-to-next-ambient) 0) (set! (-> this speed) 0.0) (let ((v1-42 (-> this entity extra perm))) (logior! (-> v1-42 status) (entity-perm-status user-set-from-cstage)) - (if (nonzero? (-> v1-42 user-object 1)) - (go robber-die) - ) - ) + (if (nonzero? (-> v1-42 user-object 1)) (go robber-die))) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go robber-dead) - (go robber-initial) - ) - (none) - ) + (go robber-dead) + (go robber-initial)) + (none)) diff --git a/goal_src/jak1/levels/snow/ice-cube.gc b/goal_src/jak1/levels/snow/ice-cube.gc index c7e1a00711..25f62d963d 100644 --- a/goal_src/jak1/levels/snow/ice-cube.gc +++ b/goal_src/jak1/levels/snow/ice-cube.gc @@ -1,368 +1,349 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "levels/sunken/double-lurker.gc") (require "engine/anim/joint-exploder.gc") -;; name: ice-cube.gc -;; name in dgo: ice-cube -;; dgos: L1, SNO - ;; DECOMP BEGINS -(defskelgroup *ice-cube-break-sg* ice-cube-break ice-cube-break-lod0-jg -1 - ((ice-cube-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -15 0 50) - ) +(defskelgroup *ice-cube-break-sg* + ice-cube-break + ice-cube-break-lod0-jg + -1 + ((ice-cube-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -15 0 50)) (deftype ice-cube (nav-enemy) - ((part2 sparticle-launch-control) - (part3 sparticle-launch-control) - (part4 sparticle-launch-control) - (track-target? symbol) - (slow-down? symbol) - (tracking-player? symbol) - (force-spawn-pt int32) - (speed float) - (anim-blend float) - (prev-charge-angle-diff float) - (charge-angle float) - (ground-y float) - (cprims-type uint64) - (next-skid-sound-time time-frame) - (starting-pos vector :inline) - (target-pt vector :inline) - ) + ((part2 sparticle-launch-control) + (part3 sparticle-launch-control) + (part4 sparticle-launch-control) + (track-target? symbol) + (slow-down? symbol) + (tracking-player? symbol) + (force-spawn-pt int32) + (speed float) + (anim-blend float) + (prev-charge-angle-diff float) + (charge-angle float) + (ground-y float) + (cprims-type uint64) + (next-skid-sound-time time-frame) + (starting-pos vector :inline) + (target-pt vector :inline)) (:methods - (ice-cube-method-51 (_type_ vector vector) symbol :overlay-at nav-enemy-method-51) - (ice-cube-method-53 (_type_ vector vector) symbol :overlay-at nav-enemy-method-53) - ) + (ice-cube-method-51 (_type_ vector vector) symbol :overlay-at nav-enemy-method-51) + (ice-cube-method-53 (_type_ vector vector) symbol :overlay-at nav-enemy-method-53)) (:states - ice-cube-appear - ice-cube-appear-land - ice-cube-become-mean - ice-cube-face-player - ice-cube-mean-charge - ice-cube-mean-charge-done - ice-cube-mean-turn-to-charge - ice-cube-retract-spikes - ice-cube-shatter - ice-cube-tired - ice-cube-trying-to-appear - ) - ) - + ice-cube-appear + ice-cube-appear-land + ice-cube-become-mean + ice-cube-face-player + ice-cube-mean-charge + ice-cube-mean-charge-done + ice-cube-mean-turn-to-charge + ice-cube-retract-spikes + ice-cube-shatter + ice-cube-tired + ice-cube-trying-to-appear)) -(defskelgroup *ice-cube-sg* ice-cube ice-cube-lod0-jg -1 - ((ice-cube-lod0-mg (meters 20)) (ice-cube-lod1-mg (meters 40)) (ice-cube-lod2-mg (meters 999999))) - :bounds (static-spherem 0 3 0 3.6) - :shadow ice-cube-shadow-mg - ) +(defskelgroup *ice-cube-sg* + ice-cube + ice-cube-lod0-jg + -1 + ((ice-cube-lod0-mg (meters 20)) (ice-cube-lod1-mg (meters 40)) (ice-cube-lod2-mg (meters 999999))) + :bounds (static-spherem 0 3 0 3.6) + :shadow ice-cube-shadow-mg) -(define *ice-cube-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 6 - :turn-anim -1 - :notice-anim 7 - :run-anim 6 - :jump-anim 6 - :jump-land-anim 6 - :victory-anim 7 - :taunt-anim 7 - :die-anim 7 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 20) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 1) - :notice-nav-radius (meters 1.5) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 35) - :stop-chase-distance (meters 45) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -3.5) - :shadow-locus-dist (meters 150) - :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 (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *ice-cube-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 6 + :turn-anim -1 + :notice-anim 7 + :run-anim 6 + :jump-anim 6 + :jump-land-anim 6 + :victory-anim 7 + :taunt-anim 7 + :die-anim 7 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 20) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 1) + :notice-nav-radius (meters 1.5) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 35) + :stop-chase-distance (meters 45) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -3.5) + :shadow-locus-dist (meters 150) + :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 (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defpartgroup group-ice-cube-appear1 :id 507 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1887 :fade-after (meters 70) :falloff-to (meters 70)) - (sp-item 1888 :fade-after (meters 70) :falloff-to (meters 70)) - ) - ) + :parts + ((sp-item 1887 :fade-after (meters 70) :falloff-to (meters 70)) + (sp-item 1888 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1888 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 16.0) - (:x (meters -2) (meters 4)) - (:y (meters 0.5) (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.24) (meters 0.24)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0 64.0) - (:vel-y (meters 0.033333335) (meters 0.05)) - (:rotvel-z (degrees -2.4) (degrees 3.4666667)) - (:accel-y (meters -0.0013333333)) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 16.0) + (:x (meters -2) (meters 4)) + (:y (meters 0.5) (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.24) (meters 0.24)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.05)) + (:rotvel-z (degrees -2.4) (degrees 3.4666667)) + (:accel-y (meters -0.0013333333)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1887 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 32.0) - (:x (meters -2) (meters 4)) - (:y (meters 0.5) (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 2.5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.05) (meters 0.016666668)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.07111111) - (:accel-y (meters -0.0013333333)) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 32.0) + (:x (meters -2) (meters 4)) + (:y (meters 0.5) (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 2.5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.05) (meters 0.016666668)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.07111111) + (:accel-y (meters -0.0013333333)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-ice-cube-appear2 :id 508 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1889 :fade-after (meters 70) :falloff-to (meters 70))) - ) + :parts ((sp-item 1889 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1889 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 1.0 2.0) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:rotvel-z (degrees -2.4) (degrees 3.4666667)) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 1.0 2.0) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:rotvel-z (degrees -2.4) (degrees 3.4666667)) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-ice-cube-foot-puff :id 567 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2325) (sp-item 2326) (sp-item 2327)) - ) + :parts ((sp-item 2325) (sp-item 2326) (sp-item 2327))) (defpart 2325 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2326 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2327 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 196.0 2.0 64.0) - (:g 196.0 1 64.0) - (:b 196.0 1 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.015) (meters 0.006666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00066666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 196.0 2.0 64.0) + (:g 196.0 1 64.0) + (:b 196.0 1 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.015) (meters 0.006666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00066666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-ice-cube-shatter :id 509 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1890) (sp-item 1891) (sp-item 1892)) - ) + :parts ((sp-item 1890) (sp-item 1891) (sp-item 1892))) (defpart 1892 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 64.0) - (:y (meters 1)) - (:scale-x (meters 0.24) (meters 0.24)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 96.0 32.0) - (:vel-y (meters 0.033333335) (meters 0.13333334)) - (:accel-y (meters -0.000033333334)) - (:friction 0.99) - (:timer (seconds 0.2) (seconds 0.297)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 64.0) + (:y (meters 1)) + (:scale-x (meters 0.24) (meters 0.24)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 96.0 32.0) + (:vel-y (meters 0.033333335) (meters 0.13333334)) + (:accel-y (meters -0.000033333334)) + (:friction 0.99) + (:timer (seconds 0.2) (seconds 0.297)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1.5)))) (defpart 1891 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters -2) (meters 4)) - (:y (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.016666668)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters -2) (meters 4)) + (:y (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.016666668)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1.5)))) (defpart 1890 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:x (meters -2) (meters 4)) - (:y (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 32.0) - (:vel-y (meters 0.13333334) (meters 0.033333335)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.35555556) - (:friction 0.99) - (:timer (seconds 0.6)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:x (meters -2) (meters 4)) + (:y (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 32.0) + (:vel-y (meters 0.13333334) (meters 0.033333335)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.35555556) + (:friction 0.99) + (:timer (seconds 0.6)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1.5)))) (defbehavior ice-cube-default-event-handler ice-cube ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -370,105 +351,62 @@ (cond ((and (= (-> arg0 type) target) (= (-> self cprims-type) 2) - (not (send-event *target* 'query 'powerup (pickup-type eco-red))) - ) + (not (send-event *target* 'query 'powerup (pickup-type eco-red)))) (when (and (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) + ((= (-> arg0 type) target) (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))) (else - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 4) - (set! (-> a1-3 message) 'attack) - (set! (-> a1-3 param 0) (-> arg3 param 0)) - (set! (-> a1-3 param 1) (the-as uint #f)) - (let ((v1-20 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-20) - (set! (-> a1-3 param 2) (the-as uint v1-20)) - ) - (set! (-> a1-3 param 3) (the-as uint 0)) - (send-event-function arg0 a1-3) - ) - ) - ) - (= (-> arg0 type) target) - ) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 4) + (set! (-> a1-3 message) 'attack) + (set! (-> a1-3 param 0) (-> arg3 param 0)) + (set! (-> a1-3 param 1) (the-as uint #f)) + (let ((v1-20 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-20) (set! (-> a1-3 param 2) (the-as uint v1-20))) + (set! (-> a1-3 param 3) (the-as uint 0)) + (send-event-function arg0 a1-3)))) + (= (-> arg0 type) target)) (set-collide-offense (-> self collide-info) 2 (collide-offense no-offense)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (level-hint-spawn (text-id snow-ice-cube-hint) "sksp0350" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - (else - (nav-enemy-set-hit-from-direction arg0) - (go ice-cube-shatter) - ) - ) - ) + (level-hint-spawn (text-id snow-ice-cube-hint) "sksp0350" (the-as entity #f) *entity-pool* (game-task none)))) + (else (nav-enemy-set-hit-from-direction arg0) (go ice-cube-shatter)))) (('touch) (when (and (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) + ((= (-> arg0 type) target) (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))) (else - (let ((a1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-7 from) self) - (set! (-> a1-7 num-params) 4) - (set! (-> a1-7 message) 'attack) - (set! (-> a1-7 param 0) (-> arg3 param 0)) - (set! (-> a1-7 param 1) (the-as uint #f)) - (let ((v1-38 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-38) - (set! (-> a1-7 param 2) (the-as uint v1-38)) - ) - (set! (-> a1-7 param 3) (the-as uint 0)) - (send-event-function arg0 a1-7) - ) - ) - ) - (= (-> arg0 type) target) - ) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 4) + (set! (-> a1-7 message) 'attack) + (set! (-> a1-7 param 0) (-> arg3 param 0)) + (set! (-> a1-7 param 1) (the-as uint #f)) + (let ((v1-38 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-38) (set! (-> a1-7 param 2) (the-as uint v1-38))) + (set! (-> a1-7 param 3) (the-as uint 0)) + (send-event-function arg0 a1-7)))) + (= (-> arg0 type) target)) (set-collide-offense (-> self collide-info) 2 (collide-offense no-offense)) (let ((v0-3 (the-as object (logior (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))))) (set! (-> self nav-enemy-flags) (the-as nav-enemy-flags v0-3)) - v0-3 - ) - ) - ) + v0-3))) (('touched) (when (!= (-> arg0 type) target) (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode #f)))) - ) + ((= (-> arg0 type) target) (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode #f))))) (else - (let ((a1-10 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-10 from) self) - (set! (-> a1-10 num-params) 4) - (set! (-> a1-10 message) 'attack) - (set! (-> a1-10 param 0) (-> arg3 param 0)) - (set! (-> a1-10 param 1) (the-as uint #f)) - (let ((v1-54 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-54) - (set! (-> a1-10 param 2) (the-as uint v1-54)) - ) - (set! (-> a1-10 param 3) (the-as uint 0)) - (send-event-function arg0 a1-10) - ) - ) - ) - ) - ) - ) - ) + (let ((a1-10 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-10 from) self) + (set! (-> a1-10 num-params) 4) + (set! (-> a1-10 message) 'attack) + (set! (-> a1-10 param 0) (-> arg3 param 0)) + (set! (-> a1-10 param 1) (the-as uint #f)) + (let ((v1-54 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-54) (set! (-> a1-10 param 2) (the-as uint v1-54))) + (set! (-> a1-10 param 3) (the-as uint 0)) + (send-event-function arg0 a1-10)))))))) (defmethod initialize-collision ((this ice-cube)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 5) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -481,53 +419,45 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 3276.8 0.0 3276.8) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 5734.4 0.0 3276.8) - (append-prim s4-0 s3-1) - ) + (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) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core action) (collide-action solid)) (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 8192.0 0.0 3276.8) - (append-prim s4-0 s3-2) - ) + (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) (collide-kind enemy)) (set! (-> s3-3 collide-with) (collide-kind target)) (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 6) (set-vector! (-> s3-3 local-sphere) 819.2 0.0 0.0 2048.0) - (append-prim s4-0 s3-3) - ) + (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) (collide-kind enemy)) (set! (-> s3-4 collide-with) (collide-kind target)) (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 4) (set-vector! (-> s3-4 local-sphere) 0.0 2048.0 0.0 4505.6) - (append-prim s4-0 s3-4) - ) - ) + (append-prim s4-0 s3-4))) (set! (-> s5-0 nav-radius) 6144.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 1)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) (set! (-> this cprims-type) (the-as uint 0)) (set-root-prim-collide-with! (-> this collide-info) (collide-kind target)) (set! (-> this collide-info event-self) 'touched) (nav-enemy-method-57 this) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-57 ((this ice-cube)) (when (!= (-> this cprims-type) 1) @@ -535,11 +465,8 @@ (let ((v1-3 (-> this collide-info root-prim))) (set-vector! (-> v1-3 local-sphere) 0.0 12288.0 0.0 14745.6) (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 3 local-sphere) 819.2 0.0 0.0 2048.0) - (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 4 local-sphere) 0.0 2048.0 0.0 4505.6) - ) - ) - (none) - ) + (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 4 local-sphere) 0.0 2048.0 0.0 4505.6))) + (none)) (defmethod nav-enemy-method-58 ((this ice-cube)) (when (!= (-> this cprims-type) 2) @@ -547,11 +474,8 @@ (let ((v1-3 (-> this collide-info root-prim))) (set-vector! (-> v1-3 local-sphere) 0.0 12288.0 0.0 16384.0) (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 3 local-sphere) 819.2 0.0 0.0 4915.2) - (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 4 local-sphere) 0.0 2048.0 0.0 9420.8) - ) - ) - (none) - ) + (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 4 local-sphere) 0.0 2048.0 0.0 9420.8))) + (none)) (defmethod nav-enemy-method-48 ((this ice-cube)) (process-drawable-from-entity! this (-> this entity)) @@ -561,35 +485,20 @@ (set! (-> this neck nose) (the-as uint 1)) (set! (-> this neck ear) (the-as uint 2)) 0 - (none) - ) + (none)) (defmethod deactivate ((this ice-cube)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this part3)) - (kill-and-free-particles (-> this part3)) - ) - (if (nonzero? (-> this part4)) - (kill-and-free-particles (-> this part4)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this part3)) (kill-and-free-particles (-> this part3))) + (if (nonzero? (-> this part4)) (kill-and-free-particles (-> this part4))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this ice-cube) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this part3)) - (&+! (-> this part3) arg0) - ) - (if (nonzero? (-> this part4)) - (&+! (-> this part4) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this part3)) (&+! (-> this part3) arg0)) + (if (nonzero? (-> this part4)) (&+! (-> this part4) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this ice-cube) (arg0 entity-actor)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 507) this)) @@ -599,27 +508,18 @@ (initialize-collision this) (nav-enemy-method-48 this) (let ((s4-0 (-> this path curve num-cverts))) - (if (<= s4-0 0) - (go process-drawable-art-error "no path") - ) + (if (<= s4-0 0) (go process-drawable-art-error "no path")) (let ((v1-21 (res-lump-value arg0 'mode uint128 :default (the-as uint128 -1)))) (if (and (>= (the-as int v1-21) 0) (< (the-as int v1-21) s4-0)) - (set! (-> this force-spawn-pt) (the-as int v1-21)) - (set! (-> this force-spawn-pt) -1) - ) - ) - ) + (set! (-> this force-spawn-pt) (the-as int v1-21)) + (set! (-> this force-spawn-pt) -1)))) (go ice-cube-trying-to-appear) - (none) - ) + (none)) (defmethod nav-enemy-method-60 ((this ice-cube) (arg0 symbol)) (let ((gp-0 (new 'stack-no-clear 'vector))) (when (-> this tracking-player?) - (if (and *target* arg0) - (set! (-> this target-pt quad) (-> (target-pos 0) quad)) - ) - ) + (if (and *target* arg0) (set! (-> this target-pt quad) (-> (target-pos 0) quad)))) (vector-! gp-0 (-> this target-pt) (-> this collide-info trans)) (seek-toward-heading-vec! (-> this collide-info) gp-0 524288.0 (seconds 0.1)) (let ((v0-5 (< (fabs (deg- (quaternion-y-angle (-> this collide-info quat)) (vector-y-angle gp-0))) 364.0889))) @@ -627,41 +527,27 @@ (the-as none 0) (set! v0-5 (the-as symbol #f)) (label cfg-10) - v0-5 - ) - ) - ) + v0-5))) (defmethod ice-cube-method-51 ((this ice-cube) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) (let* ((s4-0 (new 'stack-no-clear 'collide-tri-result)) (f0-0 40960.0) - (f30-0 (+ f0-0 40960.0)) - ) + (f30-0 (+ f0-0 40960.0))) (set! (-> s5-0 quad) (-> arg0 quad)) (+! (-> s5-0 y) f0-0) - (let ((f0-2 (fill-and-probe-using-y-probe - *collide-cache* - s5-0 - f30-0 - (collide-kind background) - (-> this collide-info process) - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) + (let ((f0-2 (fill-and-probe-using-y-probe *collide-cache* + s5-0 + f30-0 + (collide-kind background) + (-> this collide-info process) + s4-0 + (new 'static 'pat-surface :noentity #x1)))) ;; og:preserve-this yes this is bugged - (if (or (< f0-2 0.0) (= (logand #b111000 (the-as int (-> s4-0 pat))) 8)) - (return #f) - ) - (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))) - ) - ) - (set! (-> arg1 quad) (-> s5-0 quad)) - ) - #t - ) + (if (or (< f0-2 0.0) (= (logand #b111000 (the-as int (-> s4-0 pat))) 8)) (return #f)) + (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))))) + (set! (-> arg1 quad) (-> s5-0 quad))) + #t) (defmethod nav-enemy-method-52 ((this ice-cube) (arg0 vector)) (when *target* @@ -670,724 +556,533 @@ (let ((a0-4 (new 'stack-no-clear 'vector))) (set! (-> a0-4 quad) (-> arg0 quad)) (set! (-> a0-4 w) (-> this collide-info root-prim local-sphere w)) - (if (sphere-in-view-frustum? (the-as sphere a0-4)) - (return #t) - ) - ) - ) - ) - ) - #f - ) + (if (sphere-in-view-frustum? (the-as sphere a0-4)) (return #t)))))) + #f) (defmethod ice-cube-method-53 ((this ice-cube) (arg0 vector) (arg1 vector)) (local-vars (s1-0 int) (s2-0 int)) (let ((s3-0 (-> this path curve num-cverts))) - (if (<= s3-0 0) - (return #f) - ) + (if (<= s3-0 0) (return #f)) (cond - ((>= (-> this force-spawn-pt) 0) - (set! s1-0 (-> this force-spawn-pt)) - (set! s2-0 1) - ) - (else - (set! s1-0 (rand-vu-int-count s3-0)) - (set! s2-0 s3-0) - ) - ) + ((>= (-> this force-spawn-pt) 0) (set! s1-0 (-> this force-spawn-pt)) (set! s2-0 1)) + (else (set! s1-0 (rand-vu-int-count s3-0)) (set! s2-0 s3-0))) (while (> s2-0 0) (eval-path-curve-div! (-> this path) arg0 (the float s1-0) 'interp) (when (nav-enemy-method-52 this arg0) (let ((a1-3 (new 'stack-no-clear 'vector)) - (s3-1 (new 'stack-no-clear 'collide-tri-result)) - ) + (s3-1 (new 'stack-no-clear 'collide-tri-result))) (set! (-> a1-3 quad) (-> arg0 quad)) (+! (-> a1-3 y) 16384.0) - (if (>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-3 - (new 'static 'vector :y -32768.0 :w 1.0) - 409.6 - (collide-kind background) - this - s3-1 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (set! (-> arg0 quad) (-> s3-1 intersect quad)) - ) - ) + (if (>= (fill-and-probe-using-line-sphere *collide-cache* + a1-3 + (new 'static 'vector :y -32768.0 :w 1.0) + 409.6 + (collide-kind background) + this + s3-1 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (set! (-> arg0 quad) (-> s3-1 intersect quad)))) (cond - (*target* - (vector-! arg1 (target-pos 0) arg0) - (set! (-> arg1 y) 0.0) - ) + (*target* (vector-! arg1 (target-pos 0) arg0) (set! (-> arg1 y) 0.0)) (else - (set-vector! arg1 (rand-vu-float-range -4096.0 4096.0) 0.0 (rand-vu-float-range -4096.0 4096.0) 1.0) - (+! (-> arg1 x) 409.6) - ) - ) + (set-vector! arg1 (rand-vu-float-range -4096.0 4096.0) 0.0 (rand-vu-float-range -4096.0 4096.0) 1.0) + (+! (-> arg1 x) 409.6))) (vector-normalize! arg1 1.0) - (return #t) - ) + (return #t)) (set! s1-0 (mod (+ s1-0 1) s3-0)) - (+! s2-0 -1) - ) - ) - #f - ) + (+! s2-0 -1))) + #f) (defstate ice-cube-trying-to-appear (ice-cube) - :enter (behavior () - (ja-channel-set! 0) - (ja-post) - (logior! (-> self draw status) (draw-status hidden)) - (clear-collide-with-as (-> self collide-info)) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (restore-collide-with-as (-> self collide-info)) - ) - :trans (behavior () - (when (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (when (ice-cube-method-53 self s5-0 gp-0) - (set! (-> self collide-info trans quad) (-> s5-0 quad)) - (forward-up->quaternion (-> self collide-info quat) gp-0 *up-vector*) - (nav-enemy-method-57 self) - (go ice-cube-appear) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :enter + (behavior () + (ja-channel-set! 0) + (ja-post) + (logior! (-> self draw status) (draw-status hidden)) + (clear-collide-with-as (-> self collide-info))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (restore-collide-with-as (-> self collide-info))) + :trans + (behavior () + (when (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector))) + (when (ice-cube-method-53 self s5-0 gp-0) + (set! (-> self collide-info trans quad) (-> s5-0 quad)) + (forward-up->quaternion (-> self collide-info quat) gp-0 *up-vector*) + (nav-enemy-method-57 self) + (go ice-cube-appear))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate ice-cube-appear (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (nav-enemy-method-57 self) - (set! (-> self ground-y) (-> self collide-info trans y)) - (spawn (-> self part) (-> self collide-info trans)) - (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) - (+! (-> self collide-info trans y) -12288.0) - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (set! (-> self collide-info transv y) (rand-vu-float-range 102400.0 114688.0)) - ) - :trans (behavior () - (when (and (< (-> self collide-info trans y) (-> self ground-y)) (< (-> self collide-info transv y) 0.0)) - (set! (-> self collide-info trans y) (-> self ground-y)) + :enter + (behavior () + (nav-enemy-method-57 self) + (set! (-> self ground-y) (-> self collide-info trans y)) + (spawn (-> self part) (-> self collide-info trans)) + (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) + (+! (-> self collide-info trans y) -12288.0) (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (go ice-cube-appear-land) - ) - (let* ((s5-0 (-> self node-list)) - (a0-2 (-> s5-0 length)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! gp-0 (-> s5-0 data (nav-enemy-rnd-int-count a0-2))) - (spawn (-> self part2) gp-0) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ice-cube-appear-jump-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post nav-enemy-falling-post - ) + (set! (-> self collide-info transv y) (rand-vu-float-range 102400.0 114688.0))) + :trans + (behavior () + (when (and (< (-> self collide-info trans y) (-> self ground-y)) (< (-> self collide-info transv y) 0.0)) + (set! (-> self collide-info trans y) (-> self ground-y)) + (set! (-> self collide-info transv quad) (-> *null-vector* quad)) + (go ice-cube-appear-land)) + (let* ((s5-0 (-> self node-list)) + (a0-2 (-> s5-0 length)) + (gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> s5-0 data (nav-enemy-rnd-int-count a0-2))) + (spawn (-> self part2) gp-0))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ice-cube-appear-jump-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop + (suspend))) + :post nav-enemy-falling-post) (defstate ice-cube-appear-land (ice-cube) :event ice-cube-default-event-handler - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg Rball)) - (spawn (-> self part4) gp-0) - (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg Lball)) - (spawn (-> self part4) gp-0) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ice-cube-appear-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (if (target-in-range? self (-> self nav-info notice-distance)) - (go ice-cube-become-mean) - (go-virtual nav-enemy-idle) - ) - ) - :post ja-post - ) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg Rball)) + (spawn (-> self part4) gp-0) + (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg Lball)) + (spawn (-> self part4) gp-0)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ice-cube-appear-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if (target-in-range? self (-> self nav-info notice-distance)) (go ice-cube-become-mean) (go-virtual nav-enemy-idle))) + :post ja-post) (defstate nav-enemy-idle (ice-cube) :virtual #t :event ice-cube-default-event-handler - :enter (behavior () - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - (set! (-> self draw force-lod) -1) - (logior! (-> self mask) (process-mask actor-pause)) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) (if t9-0 (t9-0))) + (set! (-> self draw force-lod) -1) + (logior! (-> self mask) (process-mask actor-pause)))) (defstate nav-enemy-patrol (ice-cube) :virtual #t :event ice-cube-default-event-handler - :enter (behavior () - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-patrol) enter))) - (if t9-0 - (t9-0) - ) - ) - (set! (-> self draw force-lod) -1) - (logior! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - (if t9-1 - ((the-as (function none) t9-1)) - ) - ) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-patrol) enter))) (if t9-0 (t9-0))) + (set! (-> self draw force-lod) -1) + (logior! (-> self mask) (process-mask actor-pause))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) (if t9-1 ((the-as (function none) t9-1)))))) (defstate nav-enemy-notice (ice-cube) :virtual #t :enter #f :exit #f :trans #f - :code (behavior () - (nav-enemy-method-57 self) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (logclear! (-> self mask) (process-mask actor-pause)) - (go ice-cube-face-player) - ) - :post #f - ) + :code + (behavior () + (nav-enemy-method-57 self) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (logclear! (-> self mask) (process-mask actor-pause)) + (go ice-cube-face-player)) + :post #f) (defstate ice-cube-face-player (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-method-57 self) - (logclear! (-> self mask) (process-mask actor-pause)) - (if (or (not *target*) - (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))) - ) - (go-virtual nav-enemy-patrol) - ) - (set! (-> self tracking-player?) #t) - (set! (-> self target-pt quad) (-> (target-pos 0) quad)) - (nav-enemy-neck-control-look-at) - (set-vector! (-> self collide-info transv) 0.0 114688.0 0.0 1.0) - ) - :code (behavior () - (local-vars (gp-0 symbol)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ice-cube-appear-jump-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((f30-0 (-> self collide-info transv y))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 32768.0 - #f - #f - #f - ) - (if (< 0.0 f30-0) - (set! (-> self collide-info transv y) f30-0) - ) - ) - (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (let* ((v1-26 (>= 0.0 (-> self collide-info transv y))) - (v1-27 (and v1-26 (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)))) - ) - (set! gp-0 (nav-enemy-method-60 self (not v1-27))) - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (let ((s5-0 - (and (>= 0.0 (-> self collide-info transv y)) - (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - ) - ) - ) - (set! gp-0 (and s5-0 gp-0)) - (if gp-0 - (goto cfg-26) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 32768.0 - #f - #f - #f - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-method-57 self) + (logclear! (-> self mask) (process-mask actor-pause)) + (if (or (not *target*) + (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)) + (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)))) + (go-virtual nav-enemy-patrol)) + (set! (-> self tracking-player?) #t) + (set! (-> self target-pt quad) (-> (target-pos 0) quad)) + (nav-enemy-neck-control-look-at) + (set-vector! (-> self collide-info transv) 0.0 114688.0 0.0 1.0)) + :code + (behavior () + (local-vars (gp-0 symbol)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ice-cube-appear-jump-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f30-0 (-> self collide-info transv y))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 32768.0 + #f + #f + #f) + (if (< 0.0 f30-0) (set! (-> self collide-info transv y) f30-0))) (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (set! gp-0 (nav-enemy-method-60 self (not s5-0))) - ) - (suspend) - ) - (label cfg-26) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Rball)) - (spawn (-> self part4) gp-1) - (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Lball)) - (spawn (-> self part4) gp-1) - ) - (ja-no-eval :group! ice-cube-appear-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ice-cube-become-mean) - ) - :post nav-enemy-simple-post - ) + (let* ((v1-26 (>= 0.0 (-> self collide-info transv y))) + (v1-27 (and v1-26 (logtest? (-> self collide-info status) (cshape-moving-flags onsurf))))) + (set! gp-0 (nav-enemy-method-60 self (not v1-27)))) + (suspend) + (ja :num! (seek!))) + (loop + (let ((s5-0 (and (>= 0.0 (-> self collide-info transv y)) (logtest? (-> self collide-info status) (cshape-moving-flags onsurf))))) + (set! gp-0 (and s5-0 gp-0)) + (if gp-0 (goto cfg-26)) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 32768.0 + #f + #f + #f) + (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) + (set! gp-0 (nav-enemy-method-60 self (not s5-0)))) + (suspend)) + (label cfg-26) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Rball)) + (spawn (-> self part4) gp-1) + (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Lball)) + (spawn (-> self part4) gp-1)) + (ja-no-eval :group! ice-cube-appear-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ice-cube-become-mean)) + :post nav-enemy-simple-post) (defstate ice-cube-become-mean (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set! (-> self draw force-lod) 0) - (logclear! (-> self mask) (process-mask actor-pause)) - (nav-enemy-method-57 self) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (let ((gp-0 #f)) - (ja-no-eval :group! ice-cube-extend-spikes-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-0) (>= (ja-aframe-num 0) 8.0)) - (set! gp-0 #t) - (nav-enemy-method-58 self) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (go ice-cube-mean-turn-to-charge) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self draw force-lod) 0) + (logclear! (-> self mask) (process-mask actor-pause)) + (nav-enemy-method-57 self)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (let ((gp-0 #f)) + (ja-no-eval :group! ice-cube-extend-spikes-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-0) (>= (ja-aframe-num 0) 8.0)) + (set! gp-0 #t) + (nav-enemy-method-58 self)) + (suspend) + (ja :num! (seek!)))) + (go ice-cube-mean-turn-to-charge)) + :post nav-enemy-simple-post) (defmethod nav-enemy-method-54 ((this ice-cube) (arg0 vector)) (let* ((s4-0 (-> this path curve num-cverts)) (s2-0 (nav-enemy-rnd-int-count s4-0)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (dotimes (s3-0 s4-0) (eval-path-curve-div! (-> this path) s5-0 (the float s2-0) 'interp) (when (>= (vector-vector-xz-distance s5-0 (-> this collide-info trans)) 32768.0) (when (ice-cube-method-51 this s5-0 s5-0) (set! (-> this target-pt quad) (-> s5-0 quad)) - (return #t) - ) - ) - (set! s2-0 (mod (+ s2-0 1) s4-0)) - ) - ) - #f - ) + (return #t))) + (set! s2-0 (mod (+ s2-0 1) s4-0)))) + #f) (defstate ice-cube-mean-turn-to-charge (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-method-58 self) - (if (or (not *target*) - (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))) - ) - (go ice-cube-retract-spikes) - ) - (set! (-> self tracking-player?) #t) - (set! (-> self target-pt quad) (-> (target-pos 0) quad)) - (nav-enemy-neck-control-look-at) - (set-vector! (-> self collide-info transv) 0.0 114688.0 0.0 1.0) - ) - :code (behavior () - (local-vars (gp-0 symbol)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! ice-cube-turn-on-player-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((f30-0 (-> self collide-info transv y))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 32768.0 - #f - #f - #f - ) - (if (< 0.0 f30-0) - (set! (-> self collide-info transv y) f30-0) - ) - ) - (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (let* ((v1-26 (>= 0.0 (-> self collide-info transv y))) - (v1-27 (and v1-26 (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)))) - ) - (set! gp-0 (nav-enemy-method-60 self (not v1-27))) - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (let ((s5-0 - (and (>= 0.0 (-> self collide-info transv y)) - (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - ) - ) - ) - (set! gp-0 (and s5-0 gp-0)) - (if gp-0 - (goto cfg-26) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 32768.0 - #f - #f - #f - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-method-58 self) + (if (or (not *target*) + (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)) + (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)))) + (go ice-cube-retract-spikes)) + (set! (-> self tracking-player?) #t) + (set! (-> self target-pt quad) (-> (target-pos 0) quad)) + (nav-enemy-neck-control-look-at) + (set-vector! (-> self collide-info transv) 0.0 114688.0 0.0 1.0)) + :code + (behavior () + (local-vars (gp-0 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! ice-cube-turn-on-player-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f30-0 (-> self collide-info transv y))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 32768.0 + #f + #f + #f) + (if (< 0.0 f30-0) (set! (-> self collide-info transv y) f30-0))) (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (set! gp-0 (nav-enemy-method-60 self (not s5-0))) - ) - (suspend) - ) - (label cfg-26) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Rball)) - (spawn (-> self part4) gp-1) - (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Lball)) - (spawn (-> self part4) gp-1) - ) - (ja-no-eval :group! ice-cube-turn-on-player-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ice-cube-mean-charge) - ) - :post nav-enemy-simple-post - ) + (let* ((v1-26 (>= 0.0 (-> self collide-info transv y))) + (v1-27 (and v1-26 (logtest? (-> self collide-info status) (cshape-moving-flags onsurf))))) + (set! gp-0 (nav-enemy-method-60 self (not v1-27)))) + (suspend) + (ja :num! (seek!))) + (loop + (let ((s5-0 (and (>= 0.0 (-> self collide-info transv y)) (logtest? (-> self collide-info status) (cshape-moving-flags onsurf))))) + (set! gp-0 (and s5-0 gp-0)) + (if gp-0 (goto cfg-26)) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 32768.0 + #f + #f + #f) + (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) + (set! gp-0 (nav-enemy-method-60 self (not s5-0)))) + (suspend)) + (label cfg-26) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Rball)) + (spawn (-> self part4) gp-1) + (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Lball)) + (spawn (-> self part4) gp-1)) + (ja-no-eval :group! ice-cube-turn-on-player-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ice-cube-mean-charge)) + :post nav-enemy-simple-post) (defstate ice-cube-mean-charge (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (nav-enemy-method-58 self) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (set-time! (-> self next-skid-sound-time)) - (if (or (not *target*) - (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))) - ) - (go ice-cube-retract-spikes) - ) - (set! (-> self target-speed) (-> self nav-info run-travel-speed)) - (set! (-> self acceleration) (-> self nav-info run-acceleration)) - (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) - (set! (-> self turn-time) (-> self nav-info run-turn-time)) - (logclear! (-> self nav flags) (nav-control-flags navcf8)) - (set-root-prim-collide-with! (-> self collide-info) (collide-kind cak-2 cak-3 target crate enemy)) - (set! (-> self track-target?) #t) - (set! (-> self slow-down?) #f) - (set! (-> self speed) 81920.0) - (set! (-> self prev-charge-angle-diff) 0.0) - (let ((a0-6 (-> self collide-info trans))) - (set! (-> self starting-pos quad) (-> a0-6 quad)) - ) - (set! (-> self charge-angle) (quaternion-y-angle (-> self collide-info quat))) - ) - :exit (behavior () - (logior! (-> self nav flags) (nav-control-flags navcf8)) - (set-root-prim-collide-with! (-> self collide-info) (collide-kind target)) - ) - :trans (behavior () - (when (or (not *target*) (logtest? (-> *target* state-flags) (state-flags do-not-notice))) - (cond - ((= (-> self speed) 0.0) - (go ice-cube-mean-charge-done) - ) - (else - (set! (-> self slow-down?) #t) - (set! (-> self track-target?) #f) - (set! (-> self tracking-player?) #f) - ) - ) - ) - (if (-> self tracking-player?) - (set! (-> self target-pt quad) (-> (target-pos 0) quad)) - ) - (let ((gp-1 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (vector-! gp-1 (-> self target-pt) (-> self starting-pos)) - (vector-! s5-0 (-> self collide-info trans) (-> self starting-pos)) - (let ((f30-0 (vector-xz-length gp-1)) - (f28-0 (vector-xz-length s5-0)) - ) - (if (< (+ 14336.0 f30-0) f28-0) - (set! (-> self slow-down?) #t) - ) - (let ((f0-5 (atan (-> gp-1 x) (-> gp-1 z))) - (gp-2 (-> self nav target-pos)) - ) - (if (< f30-0 (+ 8192.0 f28-0)) - (set! (-> self track-target?) #f) - ) - (cond - ((-> self track-target?) - (let ((f26-0 (deg-seek-smooth (-> self charge-angle) f0-5 (* 2730.6667 (seconds-per-frame)) 0.25))) - (set! (-> self prev-charge-angle-diff) (deg- f26-0 (-> self charge-angle))) - (set! (-> self charge-angle) f26-0) - ) - ) - (else - (let ((f0-11 (* 0.99 (-> self prev-charge-angle-diff)))) - (set! (-> self prev-charge-angle-diff) f0-11) - (+! (-> self charge-angle) f0-11) - ) - ) - ) - (set-vector! gp-2 0.0 0.0 (+ 15360.0 (fmax f30-0 f28-0)) 1.0) - (vector-rotate-around-y! gp-2 gp-2 (-> self charge-angle)) - (vector+! gp-2 gp-2 (-> self starting-pos)) - (nav-control-method-28 (-> self nav) (collide-kind wall-object ground-object)) - (nav-control-method-11 (-> self nav) gp-2) - ) - ) - ) - (set! (-> self nav travel y) 0.0) - (when (-> self slow-down?) - (set! (-> self speed) (seek-with-smooth (-> self speed) 0.0 (* 81920.0 (seconds-per-frame)) 0.8 1638.4)) - (if (>= 0.0 (-> self speed)) - (go ice-cube-mean-charge-done) - ) - (when (zero? (nav-enemy-rnd-int-count 45)) - (let ((gp-3 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-3 (joint-node ice-cube-lod0-jg Rball)) - (spawn (-> self part4) gp-3) - (vector<-cspace! gp-3 (joint-node ice-cube-lod0-jg Lball)) - (spawn (-> self part4) gp-3) - ) - ) - (when (>= (current-time) (-> self next-skid-sound-time)) - (set! (-> self next-skid-sound-time) (+ (current-time) (nav-enemy-rnd-int-range 60 120))) - (sound-play "ice-stop" :vol (the float (the int (* 0.0012207031 (-> self speed))))) - ) - ) - (let ((f30-1 (* (vector-xz-length (-> self nav travel)) (-> *display* frames-per-second)))) - (if (< f30-1 13107.2) - (go ice-cube-mean-charge-done) - ) - (set! (-> self collide-info transv quad) (-> self nav travel quad)) - (if (< (-> self speed) f30-1) - (set! f30-1 (-> self speed)) - ) - (set! (-> self anim-blend) (fmin 1.0 (* 0.000016276043 f30-1))) - (vector-normalize! (-> self collide-info transv) f30-1) - ) - (+! (-> self collide-info transv y) -36864.0) - (quaternion-rotate-y-to-vector! - (-> self collide-info quat) - (-> self collide-info quat) - (the-as quaternion (-> self collide-info transv)) - (* 16384.0 (seconds-per-frame)) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #f - #f - #f - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! ice-cube-invuln-run-ja :num! min) - (until (-> self slow-down?) - (suspend) - (ja :num! (loop!)) - ) - (ja-channel-push! 2 (seconds 0.07)) - (ja :group! ice-cube-invuln-stopping-upright-ja :num! min) - (ja :chan 1 :group! ice-cube-invuln-stopping-ja :num! (chan 0) :frame-interp (-> self anim-blend)) - (loop - (suspend) - (ja :num! (loop!)) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self anim-blend)) - ) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (nav-enemy-method-58 self) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (set-time! (-> self next-skid-sound-time)) + (if (or (not *target*) + (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)) + (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)))) + (go ice-cube-retract-spikes)) + (set! (-> self target-speed) (-> self nav-info run-travel-speed)) + (set! (-> self acceleration) (-> self nav-info run-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (-> self nav-info run-turn-time)) + (logclear! (-> self nav flags) (nav-control-flags navcf8)) + (set-root-prim-collide-with! (-> self collide-info) (collide-kind cak-2 cak-3 target crate enemy)) + (set! (-> self track-target?) #t) + (set! (-> self slow-down?) #f) + (set! (-> self speed) 81920.0) + (set! (-> self prev-charge-angle-diff) 0.0) + (let ((a0-6 (-> self collide-info trans))) (set! (-> self starting-pos quad) (-> a0-6 quad))) + (set! (-> self charge-angle) (quaternion-y-angle (-> self collide-info quat)))) + :exit + (behavior () + (logior! (-> self nav flags) (nav-control-flags navcf8)) + (set-root-prim-collide-with! (-> self collide-info) (collide-kind target))) + :trans + (behavior () + (when (or (not *target*) (logtest? (-> *target* state-flags) (state-flags do-not-notice))) + (cond + ((= (-> self speed) 0.0) (go ice-cube-mean-charge-done)) + (else (set! (-> self slow-down?) #t) (set! (-> self track-target?) #f) (set! (-> self tracking-player?) #f)))) + (if (-> self tracking-player?) (set! (-> self target-pt quad) (-> (target-pos 0) quad))) + (let ((gp-1 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (vector-! gp-1 (-> self target-pt) (-> self starting-pos)) + (vector-! s5-0 (-> self collide-info trans) (-> self starting-pos)) + (let ((f30-0 (vector-xz-length gp-1)) + (f28-0 (vector-xz-length s5-0))) + (if (< (+ 14336.0 f30-0) f28-0) (set! (-> self slow-down?) #t)) + (let ((f0-5 (atan (-> gp-1 x) (-> gp-1 z))) + (gp-2 (-> self nav target-pos))) + (if (< f30-0 (+ 8192.0 f28-0)) (set! (-> self track-target?) #f)) + (cond + ((-> self track-target?) + (let ((f26-0 (deg-seek-smooth (-> self charge-angle) f0-5 (* 2730.6667 (seconds-per-frame)) 0.25))) + (set! (-> self prev-charge-angle-diff) (deg- f26-0 (-> self charge-angle))) + (set! (-> self charge-angle) f26-0))) + (else + (let ((f0-11 (* 0.99 (-> self prev-charge-angle-diff)))) + (set! (-> self prev-charge-angle-diff) f0-11) + (+! (-> self charge-angle) f0-11)))) + (set-vector! gp-2 0.0 0.0 (+ 15360.0 (fmax f30-0 f28-0)) 1.0) + (vector-rotate-around-y! gp-2 gp-2 (-> self charge-angle)) + (vector+! gp-2 gp-2 (-> self starting-pos)) + (nav-control-method-28 (-> self nav) (collide-kind wall-object ground-object)) + (nav-control-method-11 (-> self nav) gp-2)))) + (set! (-> self nav travel y) 0.0) + (when (-> self slow-down?) + (set! (-> self speed) (seek-with-smooth (-> self speed) 0.0 (* 81920.0 (seconds-per-frame)) 0.8 1638.4)) + (if (>= 0.0 (-> self speed)) (go ice-cube-mean-charge-done)) + (when (zero? (nav-enemy-rnd-int-count 45)) + (let ((gp-3 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-3 (joint-node ice-cube-lod0-jg Rball)) + (spawn (-> self part4) gp-3) + (vector<-cspace! gp-3 (joint-node ice-cube-lod0-jg Lball)) + (spawn (-> self part4) gp-3))) + (when (>= (current-time) (-> self next-skid-sound-time)) + (set! (-> self next-skid-sound-time) (+ (current-time) (nav-enemy-rnd-int-range 60 120))) + (sound-play "ice-stop" :vol (the float (the int (* 0.0012207031 (-> self speed))))))) + (let ((f30-1 (* (vector-xz-length (-> self nav travel)) (-> *display* frames-per-second)))) + (if (< f30-1 13107.2) (go ice-cube-mean-charge-done)) + (set! (-> self collide-info transv quad) (-> self nav travel quad)) + (if (< (-> self speed) f30-1) (set! f30-1 (-> self speed))) + (set! (-> self anim-blend) (fmin 1.0 (* 0.000016276043 f30-1))) + (vector-normalize! (-> self collide-info transv) f30-1)) + (+! (-> self collide-info transv y) -36864.0) + (quaternion-rotate-y-to-vector! (-> self collide-info quat) + (-> self collide-info quat) + (the-as quaternion (-> self collide-info transv)) + (* 16384.0 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #f + #f + #f)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! ice-cube-invuln-run-ja :num! min) + (until (-> self slow-down?) + (suspend) + (ja :num! (loop!))) + (ja-channel-push! 2 (seconds 0.07)) + (ja :group! ice-cube-invuln-stopping-upright-ja :num! min) + (ja :chan 1 :group! ice-cube-invuln-stopping-ja :num! (chan 0) :frame-interp (-> self anim-blend)) + (loop + (suspend) + (ja :num! (loop!)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self anim-blend)))) + :post nav-enemy-simple-post) (defstate ice-cube-mean-charge-done (ice-cube) :event ice-cube-default-event-handler - :code (behavior () - (nav-enemy-method-58 self) - (nav-enemy-neck-control-inactive) - (go ice-cube-retract-spikes) - ) - ) + :code + (behavior () + (nav-enemy-method-58 self) + (nav-enemy-neck-control-inactive) + (go ice-cube-retract-spikes))) (defstate ice-cube-retract-spikes (ice-cube) :event ice-cube-default-event-handler - :code (behavior () - (nav-enemy-method-58 self) - (nav-enemy-neck-control-inactive) - (ja-channel-push! 1 (seconds 0.07)) - (let ((gp-0 #f)) - (ja-no-eval :group! ice-cube-retract-spikes-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-0) (>= (ja-aframe-num 0) 3.0)) - (set! gp-0 #t) - (nav-enemy-method-57 self) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (go ice-cube-tired) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (nav-enemy-method-58 self) + (nav-enemy-neck-control-inactive) + (ja-channel-push! 1 (seconds 0.07)) + (let ((gp-0 #f)) + (ja-no-eval :group! ice-cube-retract-spikes-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-0) (>= (ja-aframe-num 0) 3.0)) + (set! gp-0 #t) + (nav-enemy-method-57 self)) + (suspend) + (ja :num! (seek!)))) + (go ice-cube-tired)) + :post nav-enemy-simple-post) (defstate ice-cube-tired (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 2)) - (cond - ((or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go-virtual nav-enemy-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go ice-cube-face-player) - ) - (else - (go-virtual nav-enemy-patrol) - ) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ice-cube-head-wipe-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! ice-cube-breathing-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 2)) + (cond + ((or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go ice-cube-face-player)) + (else (go-virtual nav-enemy-patrol))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ice-cube-head-wipe-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post nav-enemy-simple-post - ) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.2)) + (loop + (ja-no-eval :group! ice-cube-breathing-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post nav-enemy-simple-post) (defstate ice-cube-shatter (ice-cube) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg main)) - (spawn (-> self part3) gp-0) - ) - (drop-pickup (-> self enemy-info) #t *entity-pool* (-> self enemy-info) 0) - (clear-collide-with-as (-> self collide-info)) - (cleanup-for-death self) - (let ((gp-1 (new 'stack 'joint-exploder-tuning 1))) - (set! (-> gp-1 duration) (seconds 3)) - (set! (-> gp-1 gravity) -327680.0) - (set! (-> gp-1 fountain-rand-transv-lo quad) (-> (target-pos 0) quad)) - (process-spawn - joint-exploder - *ice-cube-break-sg* - 2 - gp-1 - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 28) - (new 'static 'joint-exploder-static-joint-params :joint-index 23) - (new 'static 'joint-exploder-static-joint-params :joint-index 8) - (new 'static 'joint-exploder-static-joint-params :joint-index 7) - (new 'static 'joint-exploder-static-joint-params :joint-index 26) - (new 'static 'joint-exploder-static-joint-params :joint-index 21) - (new 'static 'joint-exploder-static-joint-params :joint-index 24) - (new 'static 'joint-exploder-static-joint-params :joint-index 29) - (new 'static 'joint-exploder-static-joint-params :joint-index 11) - (new 'static 'joint-exploder-static-joint-params :joint-index 4) - (new 'static 'joint-exploder-static-joint-params :joint-index 6) - (new 'static 'joint-exploder-static-joint-params :joint-index 5) - (new 'static 'joint-exploder-static-joint-params :joint-index 12) - (new 'static 'joint-exploder-static-joint-params :joint-index 13) - (new 'static 'joint-exploder-static-joint-params :joint-index 14) - (new 'static 'joint-exploder-static-joint-params :joint-index 15) - (new 'static 'joint-exploder-static-joint-params :joint-index 16) - (new 'static 'joint-exploder-static-joint-params :joint-index 17) - (new 'static 'joint-exploder-static-joint-params :joint-index 18) - (new 'static 'joint-exploder-static-joint-params :joint-index 19) - (new 'static 'joint-exploder-static-joint-params :joint-index 3) - (new 'static 'joint-exploder-static-joint-params :joint-index 20) - ) - ) - :to self - ) - ) - (sound-play "ice-explode") - (suspend) - (ja-channel-set! 0) - (ja-post) - (until (not (-> self child)) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg main)) + (spawn (-> self part3) gp-0)) + (drop-pickup (-> self enemy-info) #t *entity-pool* (-> self enemy-info) 0) + (clear-collide-with-as (-> self collide-info)) + (cleanup-for-death self) + (let ((gp-1 (new 'stack 'joint-exploder-tuning 1))) + (set! (-> gp-1 duration) (seconds 3)) + (set! (-> gp-1 gravity) -327680.0) + (set! (-> gp-1 fountain-rand-transv-lo quad) (-> (target-pos 0) quad)) + (process-spawn joint-exploder + *ice-cube-break-sg* + 2 + gp-1 + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 28) + (new 'static 'joint-exploder-static-joint-params :joint-index 23) + (new 'static 'joint-exploder-static-joint-params :joint-index 8) + (new 'static 'joint-exploder-static-joint-params :joint-index 7) + (new 'static 'joint-exploder-static-joint-params :joint-index 26) + (new 'static 'joint-exploder-static-joint-params :joint-index 21) + (new 'static 'joint-exploder-static-joint-params :joint-index 24) + (new 'static 'joint-exploder-static-joint-params :joint-index 29) + (new 'static 'joint-exploder-static-joint-params :joint-index 11) + (new 'static 'joint-exploder-static-joint-params :joint-index 4) + (new 'static 'joint-exploder-static-joint-params :joint-index 6) + (new 'static 'joint-exploder-static-joint-params :joint-index 5) + (new 'static 'joint-exploder-static-joint-params :joint-index 12) + (new 'static 'joint-exploder-static-joint-params :joint-index 13) + (new 'static 'joint-exploder-static-joint-params :joint-index 14) + (new 'static 'joint-exploder-static-joint-params :joint-index 15) + (new 'static 'joint-exploder-static-joint-params :joint-index 16) + (new 'static 'joint-exploder-static-joint-params :joint-index 17) + (new 'static 'joint-exploder-static-joint-params :joint-index 18) + (new 'static 'joint-exploder-static-joint-params :joint-index 19) + (new 'static 'joint-exploder-static-joint-params :joint-index 3) + (new 'static 'joint-exploder-static-joint-params :joint-index 20))) + :to + self)) + (sound-play "ice-explode") (suspend) - ) - ) - ) + (ja-channel-set! 0) + (ja-post) + (until (not (-> self child)) + (suspend)))) diff --git a/goal_src/jak1/levels/snow/snow-ball.gc b/goal_src/jak1/levels/snow/snow-ball.gc index 19a5b6255b..cacfc63e04 100644 --- a/goal_src/jak1/levels/snow/snow-ball.gc +++ b/goal_src/jak1/levels/snow/snow-ball.gc @@ -1,121 +1,102 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/geometry/path.gc") (require "engine/gfx/shadow/shadow-cpu.gc") -;; name: snow-ball.gc -;; name in dgo: snow-ball -;; dgos: L1, SNO - ;; DECOMP BEGINS -(deftype snow-ball-shadow (process-drawable) - () +(deftype snow-ball-shadow (process-drawable) () (:states - snow-ball-shadow-idle - ) - ) - + snow-ball-shadow-idle)) (deftype snow-ball-junction (structure) - ((enter-time time-frame) - (exit-time time-frame) - ) - ) - + ((enter-time time-frame) + (exit-time time-frame))) (deftype snow-ball-path-info (structure) - ((hug-path? symbol) - (path-pos vector :inline) - ) - ) - + ((hug-path? symbol) + (path-pos vector :inline))) (deftype snow-ball-roller (process-drawable) - ((root collide-shape-moving :override) - (which-path int32) - (path-u float) - (path-speed float) - (path-length float) - (path-fall-u float) - (path-coming-out-u float) - (path-faded-up-u float) - (delay-til-bounce int32) - (rolling-sound-id sound-id) - (rolling-sound-enabled? symbol) - (last-bounce-time time-frame) - (hit-player-time time-frame) - (path-info snow-ball-path-info :inline) - (junctions snow-ball-junction 4 :inline) - ) + ((root collide-shape-moving :override) + (which-path int32) + (path-u float) + (path-speed float) + (path-length float) + (path-fall-u float) + (path-coming-out-u float) + (path-faded-up-u float) + (delay-til-bounce int32) + (rolling-sound-id sound-id) + (rolling-sound-enabled? symbol) + (last-bounce-time time-frame) + (hit-player-time time-frame) + (path-info snow-ball-path-info :inline) + (junctions snow-ball-junction 4 :inline)) (:methods - (follow-path (_type_) none) - (play-landing-sound (_type_ float) sound-id) - (snow-ball-roller-method-22 (_type_ process-drawable) none) - ) + (follow-path (_type_) none) + (play-landing-sound (_type_ float) sound-id) + (snow-ball-roller-method-22 (_type_ process-drawable) none)) (:states - snow-ball-roller-idle - ) - ) - + snow-ball-roller-idle)) (deftype snow-ball (process) - ((child-override (pointer snow-ball-roller) :overlay-at child) - (state-time time-frame) - (last-path-picked int32) - (same-path-picked-count int32) - (delay-til-next int32) - (path curve-control 2) - ) + ((child-override (pointer snow-ball-roller) :overlay-at child) + (state-time time-frame) + (last-path-picked int32) + (same-path-picked-count int32) + (delay-til-next int32) + (path curve-control 2)) (:methods - (snow-ball-method-14 (_type_ (inline-array snow-ball-junction) float int) symbol) - (snow-ball-method-15 (_type_ (inline-array snow-ball-junction) int) symbol) - ) + (snow-ball-method-14 (_type_ (inline-array snow-ball-junction) float int) symbol) + (snow-ball-method-15 (_type_ (inline-array snow-ball-junction) int) symbol)) (:states - snow-ball-idle - ) - ) - + snow-ball-idle)) -(defskelgroup *snow-ball-sg* snow-ball snow-ball-lod0-jg snow-ball-idle-ja - ((snow-ball-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *snow-ball-sg* + snow-ball + snow-ball-lod0-jg + snow-ball-idle-ja + ((snow-ball-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(defskelgroup *snow-ball-shadow-sg* snow-ball snow-ball-shadow-lod0-jg -1 - ((snow-ball-shadow-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -1.5 0 2) - :shadow snow-ball-shadow-shadow-mg - ) +(defskelgroup *snow-ball-shadow-sg* + snow-ball + snow-ball-shadow-lod0-jg + -1 + ((snow-ball-shadow-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -1.5 0 2) + :shadow snow-ball-shadow-shadow-mg) (define *snow-ball-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 245760.0) - :bot-plane (new 'static 'plane :y 1.0 :w 26624.0) - :top-plane (new 'static 'plane :y 1.0) - :fade-dist 819200.0 - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags disable-fade shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 245760.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 26624.0) + :top-plane + (new 'static 'plane :y 1.0) + :fade-dist 819200.0))) (defstate snow-ball-shadow-idle (snow-ball-shadow) - :trans (behavior () - (set! (-> self root trans quad) (-> (the-as process-drawable (-> self parent 0)) root trans quad)) - (update-direction-from-time-of-day (-> self draw shadow-ctrl)) - 0 - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post ja-post - ) + :trans + (behavior () + (set! (-> self root trans quad) (-> (the-as process-drawable (-> self parent 0)) root trans quad)) + (update-direction-from-time-of-day (-> self draw shadow-ctrl)) + 0) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post ja-post) (defbehavior snow-ball-shadow-init-by-other snow-ball-shadow () (stack-size-set! (-> self main-thread) 128) @@ -129,14 +110,12 @@ (ja :group! snow-ball-shadow-idle-ja :num! min) (set! (-> self draw shadow-ctrl) *snow-ball-shadow-control*) (go snow-ball-shadow-idle) - (none) - ) + (none)) (defbehavior snow-ball-roller-path-init snow-ball-roller () (set! (-> self path-u) 0.0) (set! (-> self path-length) (path-distance (-> self path))) - (none) - ) + (none)) (defmethod follow-path ((this snow-ball-roller)) (let ((s5-0 (-> this path-info))) @@ -147,45 +126,28 @@ (let ((f0-1 (-> this path-coming-out-u))) (when (< (-> this path-u) f0-1) (+! (-> s5-0 path-pos y) (- -20480.0 (* -20480.0 (/ (-> this path-u) f0-1)))) - (set! (-> s5-0 hug-path?) #t) - ) - ) + (set! (-> s5-0 hug-path?) #t))) (let ((f0-6 (-> this path-faded-up-u))) (cond ((< (-> this path-u) f0-6) (let* ((f0-7 (/ (-> this path-u) f0-6)) - (f0-8 (* f0-7 f0-7)) - ) - (set-vector! (-> this draw color-mult) f0-8 f0-8 f0-8 1.0) - ) - ) - (else - (vector-identity! (-> this draw color-mult)) - ) - ) - ) + (f0-8 (* f0-7 f0-7))) + (set-vector! (-> this draw color-mult) f0-8 f0-8 f0-8 1.0))) + (else (vector-identity! (-> this draw color-mult))))) (cond ((>= (-> this path-u) (-> this path-fall-u)) (set! (-> s5-0 path-pos y) -409600.0) (set! (-> s5-0 path-pos x) (+ (-> s4-0 x) (-> this root transv x))) (set! (-> s5-0 path-pos z) (+ (-> s4-0 z) (-> this root transv z))) - (set! (-> this rolling-sound-enabled?) #f) - ) + (set! (-> this rolling-sound-enabled?) #f)) (else - (set! (-> this root transv x) (- (-> s5-0 path-pos x) (-> s4-0 x))) - (set! (-> this root transv z) (- (-> s5-0 path-pos z) (-> s4-0 z))) - ) - ) - ) - ) - (none) - ) + (set! (-> this root transv x) (- (-> s5-0 path-pos x) (-> s4-0 x))) + (set! (-> this root transv z) (- (-> s5-0 path-pos z) (-> s4-0 z))))))) + (none)) (defmethod play-landing-sound ((this snow-ball-roller) (arg0 float)) (let ((f30-0 (* 0.0018780049 (fmin 53248.0 (fmax 0.0 (+ -4096.0 (fabs arg0))))))) - (sound-play "snowball-land" :vol f30-0) - ) - ) + (sound-play "snowball-land" :vol f30-0))) (defbehavior snow-ball-roller-path-update snow-ball-roller () (local-vars (f0-5 float)) @@ -194,116 +156,58 @@ (let ((f30-0 (+ f0-0 (* (-> self root transv y) (seconds-per-frame))))) (follow-path self) (let ((a1-0 (new 'stack-no-clear 'vector))) - (let ((a0-1 (-> self path-info))) - (set! (-> a1-0 quad) (-> a0-1 path-pos quad)) - ) + (let ((a0-1 (-> self path-info))) (set! (-> a1-0 quad) (-> a0-1 path-pos quad))) (+! (-> a1-0 y) 9216.0) (cond - ((-> self path-info hug-path?) - (move-to-point! (-> self root) a1-0) - (set! (-> self root transv y) 0.0) - ) - ((begin (set! f0-5 (- f30-0 (-> a1-0 y))) (< 0.0 f0-5)) - (+! (-> a1-0 y) f0-5) - (move-to-point! (-> self root) a1-0) - ) + ((-> self path-info hug-path?) (move-to-point! (-> self root) a1-0) (set! (-> self root transv y) 0.0)) + ((begin (set! f0-5 (- f30-0 (-> a1-0 y))) (< 0.0 f0-5)) (+! (-> a1-0 y) f0-5) (move-to-point! (-> self root) a1-0)) (else - (move-to-point! (-> self root) a1-0) - (let ((f0-7 (-> self root transv y))) - (cond - ((>= -40960.0 f0-7) - (set! (-> self root transv y) (* 0.4 (- f0-7))) - (play-landing-sound self (-> self root transv y)) - ) - (else - (set! (-> self root transv y) 0.0) - ) - ) - ) - (when (< (-> self path-u) (-> self path-fall-u)) - (when (time-elapsed? (-> self last-bounce-time) (-> self delay-til-bounce)) - (let ((f0-13 (rand-vu-float-range 8192.0 20480.0))) - (+! (-> self root transv y) f0-13) - (play-landing-sound self f0-13) - ) - (set-time! (-> self last-bounce-time)) - (set! (-> self delay-til-bounce) (rand-vu-int-range 300 2100)) - ) - ) - ) - ) - ) - ) - ) + (move-to-point! (-> self root) a1-0) + (let ((f0-7 (-> self root transv y))) + (cond + ((>= -40960.0 f0-7) (set! (-> self root transv y) (* 0.4 (- f0-7))) (play-landing-sound self (-> self root transv y))) + (else (set! (-> self root transv y) 0.0)))) + (when (< (-> self path-u) (-> self path-fall-u)) + (when (time-elapsed? (-> self last-bounce-time) (-> self delay-til-bounce)) + (let ((f0-13 (rand-vu-float-range 8192.0 20480.0))) (+! (-> self root transv y) f0-13) (play-landing-sound self f0-13)) + (set-time! (-> self last-bounce-time)) + (set! (-> self delay-til-bounce) (rand-vu-int-range 300 2100))))))))) (let ((s4-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> self path) s4-0 (-> self path-u)) (let ((gp-0 (new 'stack-no-clear 'matrix))) (let ((s5-0 (new 'stack-no-clear 'matrix))) (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-negate! s3-0 (-> *standard-dynamics* gravity-normal)) - (forward-down->inv-matrix gp-0 s4-0 s3-0) - ) + (forward-down->inv-matrix gp-0 s4-0 s3-0)) (matrix-rotate-x! s5-0 (* 1.1317686 (-> self path-u) (-> self path-length))) - (matrix*! gp-0 s5-0 gp-0) - ) - (matrix->quaternion (-> self root quat) gp-0) - ) - ) + (matrix*! gp-0 s5-0 gp-0)) + (matrix->quaternion (-> self root quat) gp-0))) (+! (-> self path-u) (* (-> self path-speed) (seconds-per-frame))) - (if (< 1.0 (-> self path-u)) - (set! (-> self path-u) 1.0) - ) + (if (< 1.0 (-> self path-u)) (set! (-> self path-u) 1.0)) (let ((f0-23 (- 819200.0 (-> self root trans y)))) (when (>= f0-23 0.0) (cond - ((>= f0-23 245760.0) - (deactivate self) - ) + ((>= f0-23 245760.0) (deactivate self)) (else - (let ((f0-25 (- 1.0 (* 0.0000040690106 f0-23)))) - (set! (-> self root scale x) f0-25) - (set! (-> self root scale y) f0-25) - (set! (-> self root scale z) f0-25) - ) - ) - ) - ) - ) + (let ((f0-25 (- 1.0 (* 0.0000040690106 f0-23)))) + (set! (-> self root scale x) f0-25) + (set! (-> self root scale y) f0-25) + (set! (-> self root scale z) f0-25)))))) (let ((v1-54 (< (vector-vector-distance (-> self root trans) (math-camera-pos)) 163840.0))) (cond ((zero? (-> self rolling-sound-id)) (if (and v1-54 (-> self rolling-sound-enabled?)) - (set! (-> self rolling-sound-id) (sound-play "snowball-roll" :position (the-as symbol (-> self root trans)))) - ) - ) + (set! (-> self rolling-sound-id) (sound-play "snowball-roll" :position (the-as symbol (-> self root trans)))))) ((and v1-54 (-> self rolling-sound-enabled?)) - (sound-play "snowball-roll" :id (-> self rolling-sound-id) :position (the-as symbol (-> self root trans))) - ) - (else - (sound-stop (-> self rolling-sound-id)) - (set! (-> self rolling-sound-id) (new 'static 'sound-id)) - 0 - ) - ) - ) - (none) - ) + (sound-play "snowball-roll" :id (-> self rolling-sound-id) :position (the-as symbol (-> self root trans)))) + (else (sound-stop (-> self rolling-sound-id)) (set! (-> self rolling-sound-id) (new 'static 'sound-id)) 0))) + (none)) (defmethod snow-ball-roller-method-22 ((this snow-ball-roller) (arg0 process-drawable)) (cond ((< (+ 4096.0 (-> arg0 root trans y)) (-> this root trans y)) - (let ((f0-2 81920.0)) - (+! (-> this root transv y) f0-2) - (play-landing-sound this f0-2) - ) - ) - (else - (let ((f0-3 24576.0)) - (+! (-> this root transv y) f0-3) - (play-landing-sound this f0-3) - ) - ) - ) + (let ((f0-2 81920.0)) (+! (-> this root transv y) f0-2) (play-landing-sound this f0-2))) + (else (let ((f0-3 24576.0)) (+! (-> this root transv y) f0-3) (play-landing-sound this f0-3)))) (let ((s4-0 (new 'stack-no-clear 'vector))) (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 (-> arg0 root trans) (-> this root trans)) @@ -314,70 +218,48 @@ (vector-normalize! s3-0 1.0) (let* ((f28-0 (atan (-> s4-0 x) (-> s4-0 z))) (f30-0 (atan (-> s3-0 x) (-> s3-0 z))) - (f0-11 (deg- f28-0 f30-0)) - ) + (f0-11 (deg- f28-0 f30-0))) (when (< (fabs f0-11) 10922.667) - (let ((f30-1 (+ f30-0 (if (>= f0-11 0.0) - 10922.667 - -10922.667 - ) - ) - ) - ) - (set-vector! s4-0 (sin f30-1) 0.0 (cos f30-1) 1.0) - ) - ) - ) - ) + (let ((f30-1 (+ f30-0 (if (>= f0-11 0.0) 10922.667 -10922.667)))) (set-vector! s4-0 (sin f30-1) 0.0 (cos f30-1) 1.0))))) (vector-normalize! s4-0 25600.0) (vector+! s4-0 s4-0 (-> this root trans)) (vector-! s4-0 s4-0 (-> arg0 root trans)) (set! (-> s4-0 y) 0.0) (let ((f30-2 (vector-length s4-0))) (vector-normalize! s4-0 1.0) - (send-event arg0 'attack #f (static-attack-info ((vector s4-0) (shove-up (meters 3)) (shove-back f30-2)))) - ) - ) - (none) - ) + (send-event arg0 'attack #f (static-attack-info ((vector s4-0) (shove-up (meters 3)) (shove-back f30-2)))))) + (none)) (defstate snow-ball-roller-idle (snow-ball-roller) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (do-push-aways! (-> self root)) - (when (time-elapsed? (-> self hit-player-time) (seconds 0.5)) - (set-time! (-> self hit-player-time)) - (snow-ball-roller-method-22 self *target*) - ) - ) - ) - ) - ) - :enter (behavior () - (set-time! (-> self last-bounce-time)) - (snow-ball-roller-path-init) - ) - :exit (behavior () - (set! (-> self rolling-sound-enabled?) #f) - (when (nonzero? (-> self rolling-sound-id)) - (sound-stop (-> self rolling-sound-id)) - (set! (-> self rolling-sound-id) (new 'static 'sound-id)) - 0 - ) - ) - :trans (behavior () - (snow-ball-roller-path-update) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (do-push-aways! (-> self root)) + (when (time-elapsed? (-> self hit-player-time) (seconds 0.5)) + (set-time! (-> self hit-player-time)) + (snow-ball-roller-method-22 self *target*)))))) + :enter + (behavior () + (set-time! (-> self last-bounce-time)) + (snow-ball-roller-path-init)) + :exit + (behavior () + (set! (-> self rolling-sound-enabled?) #f) + (when (nonzero? (-> self rolling-sound-id)) + (sound-stop (-> self rolling-sound-id)) + (set! (-> self rolling-sound-id) (new 'static 'sound-id)) + 0)) + :trans + (behavior () + (snow-ball-roller-path-update)) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post transform-post) (defbehavior snow-ball-roller-init-by-other snow-ball-roller ((arg0 entity-actor) (arg1 snow-ball) (arg2 float) (arg3 int) (arg4 (inline-array snow-ball-junction))) (set! (-> self rolling-sound-id) (new 'static 'sound-id)) @@ -387,26 +269,21 @@ (set! (-> self hit-player-time) 0) (set! (-> self entity) arg0) (dotimes (s3-0 4) - (mem-copy! (the-as pointer (-> self junctions s3-0)) (the-as pointer (-> arg4 s3-0)) 16) - ) + (mem-copy! (the-as pointer (-> self junctions s3-0)) (the-as pointer (-> arg4 s3-0)) 16)) (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) - ) + (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! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 10240.0) - (set-root-prim! s4-1 s3-1) - ) + (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) - ) + (set! (-> self root) s4-1)) (set-vector! (-> self root transv) 0.0 0.0 0.0 1.0) (process-drawable-from-entity! self arg0) (initialize-skeleton self *snow-ball-sg* '()) @@ -418,139 +295,88 @@ ((zero? v1-33) (set! (-> self path-fall-u) 0.8667) (set! (-> self path-coming-out-u) 0.05) - (set! (-> self path-faded-up-u) 0.075) - ) + (set! (-> self path-faded-up-u) 0.075)) ((= v1-33 1) (set! (-> self path-fall-u) 0.9105) (set! (-> self path-coming-out-u) 0.05) - (set! (-> self path-faded-up-u) 0.075) - ) - ) - ) + (set! (-> self path-faded-up-u) 0.075)))) (set! (-> self delay-til-bounce) (rand-vu-int-range 900 2100)) (process-spawn snow-ball-shadow :to self) (go snow-ball-roller-idle) - (none) - ) + (none)) (defmethod snow-ball-method-14 ((this snow-ball) (arg0 (inline-array snow-ball-junction)) (arg1 float) (arg2 int)) (local-vars (v1-0 (pointer float))) (if (zero? arg2) - (set! v1-0 (new 'static 'array float 8 0.3309 0.36 0.4691 0.5061 0.6904 0.7264 0.864 0.8667)) - (set! v1-0 (new 'static 'array float 8 0.3344 0.3528 0.4919 0.5246 0.6967 0.7272 0.8677 0.9105)) - ) + (set! v1-0 (new 'static 'array float 8 0.3309 0.36 0.4691 0.5061 0.6904 0.7264 0.864 0.8667)) + (set! v1-0 (new 'static 'array float 8 0.3344 0.3528 0.4919 0.5246 0.6967 0.7272 0.8677 0.9105))) (let ((a0-4 (* arg1 (seconds-per-frame))) (a1-1 (-> arg0 0)) - (a2-2 (current-time)) - ) + (a2-2 (current-time))) (dotimes (a3-1 4) (set! (-> a1-1 enter-time) (+ a2-2 (the int (/ (-> v1-0 0) a0-4)))) (set! (-> a1-1 exit-time) (+ a2-2 (the int (/ (-> v1-0 1) a0-4)))) (set! v1-0 (&-> v1-0 2)) - (&+! a1-1 16) - ) - ) - #f - ) + (&+! a1-1 16))) + #f) (defmethod snow-ball-method-15 ((this snow-ball) (arg0 (inline-array snow-ball-junction)) (arg1 int)) (local-vars (v0-0 symbol)) (let ((v1-0 (-> this child-override))) (while v1-0 (let ((a0-1 (-> arg0 0)) - (a3-1 (-> v1-0 0 junctions)) - ) + (a3-1 (-> v1-0 0 junctions))) (dotimes (t0-0 3) - (if (and (>= (-> a3-1 0 exit-time) (-> a0-1 enter-time)) (>= (-> a0-1 exit-time) (-> a3-1 0 enter-time))) - (return #f) - ) + (if (and (>= (-> a3-1 0 exit-time) (-> a0-1 enter-time)) (>= (-> a0-1 exit-time) (-> a3-1 0 enter-time))) (return #f)) (&+! a0-1 16) - (set! a3-1 (the-as (inline-array snow-ball-junction) (-> a3-1 1))) - ) + (set! a3-1 (the-as (inline-array snow-ball-junction) (-> a3-1 1)))) (when (= arg1 (-> v1-0 0 which-path)) - (if (>= (-> a3-1 0 exit-time) (-> a0-1 enter-time)) - (return #f) - ) - ) - ) - (set! v1-0 (the-as (pointer snow-ball-roller) (-> v1-0 0 brother))) - ) - ) + (if (>= (-> a3-1 0 exit-time) (-> a0-1 enter-time)) (return #f)))) + (set! v1-0 (the-as (pointer snow-ball-roller) (-> v1-0 0 brother))))) (return #t) - v0-0 - ) + v0-0) (defstate snow-ball-idle (snow-ball) - :code (behavior () - (local-vars (gp-0 int)) - (set-time! (-> self state-time)) - (set! (-> self delay-til-next) 0) - (label cfg-1) - (when (time-elapsed? (-> self state-time) (-> self delay-til-next)) - (set! gp-0 (cond - ((>= (-> self same-path-picked-count) 2) - (if (zero? (-> self last-path-picked)) - (set! gp-0 1) - (set! gp-0 0) - ) - gp-0 - ) - (else - (rand-vu-int-range 0 1) - ) - ) - ) - (let ((s4-0 0) - (s5-0 (new 'stack-no-clear 'inline-array 'snow-ball-junction 4)) - ) - (loop - (let ((s3-0 (/ (+ 98304.0 (rand-vu-float-range 0.0 32768.0)) (path-distance (-> self path gp-0))))) - (snow-ball-method-14 self s5-0 s3-0 gp-0) - (when (snow-ball-method-15 self s5-0 gp-0) - (process-spawn snow-ball-roller (-> self entity) self s3-0 gp-0 s5-0 :to self) - (set-time! (-> self state-time)) - (set! (-> self delay-til-next) (rand-vu-int-range 450 1650)) + :code + (behavior () + (local-vars (gp-0 int)) + (set-time! (-> self state-time)) + (set! (-> self delay-til-next) 0) + (label cfg-1) + (when (time-elapsed? (-> self state-time) (-> self delay-til-next)) + (set! gp-0 (cond - ((= gp-0 (-> self last-path-picked)) - (+! (-> self same-path-picked-count) 1) - ) - (else - (set! (-> self last-path-picked) gp-0) - (set! (-> self same-path-picked-count) 1) - ) - ) - (goto cfg-22) - ) - ) - (+! s4-0 1) - (if (< 5 s4-0) - (goto cfg-22) - ) - ) - ) - ) - (label cfg-22) - (suspend) - (b! #t cfg-1 :delay (nop!)) - ) - ) + ((>= (-> self same-path-picked-count) 2) (if (zero? (-> self last-path-picked)) (set! gp-0 1) (set! gp-0 0)) gp-0) + (else (rand-vu-int-range 0 1)))) + (let ((s4-0 0) + (s5-0 (new 'stack-no-clear 'inline-array 'snow-ball-junction 4))) + (loop + (let ((s3-0 (/ (+ 98304.0 (rand-vu-float-range 0.0 32768.0)) (path-distance (-> self path gp-0))))) + (snow-ball-method-14 self s5-0 s3-0 gp-0) + (when (snow-ball-method-15 self s5-0 gp-0) + (process-spawn snow-ball-roller (-> self entity) self s3-0 gp-0 s5-0 :to self) + (set-time! (-> self state-time)) + (set! (-> self delay-til-next) (rand-vu-int-range 450 1650)) + (cond + ((= gp-0 (-> self last-path-picked)) (+! (-> self same-path-picked-count) 1)) + (else (set! (-> self last-path-picked) gp-0) (set! (-> self same-path-picked-count) 1))) + (goto cfg-22))) + (+! s4-0 1) + (if (< 5 s4-0) (goto cfg-22))))) + (label cfg-22) + (suspend) + (b! #t cfg-1 :delay (nop!)))) (defmethod relocate ((this snow-ball) (arg0 int)) (dotimes (v1-0 2) - (if (nonzero? (-> this path v1-0)) - (&+! (-> this path v1-0) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this path v1-0)) (&+! (-> this path v1-0) arg0))) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this snow-ball) (arg0 entity-actor)) (set! (-> this last-path-picked) 1) (set! (-> this same-path-picked-count) 1) (dotimes (s5-0 2) - (set! (-> this path s5-0) (new 'process 'curve-control this 'path (the float (+ s5-0 1)))) - ) + (set! (-> this path s5-0) (new 'process 'curve-control this 'path (the float (+ s5-0 1))))) (logclear! (-> this mask) (process-mask actor-pause)) (go snow-ball-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/snow/snow-bumper.gc b/goal_src/jak1/levels/snow/snow-bumper.gc index 01adbbd4f5..5ecaf9ce02 100644 --- a/goal_src/jak1/levels/snow/snow-bumper.gc +++ b/goal_src/jak1/levels/snow/snow-bumper.gc @@ -1,103 +1,89 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/game/task/task-control.gc") -;; name: snow-bumper.gc -;; name in dgo: snow-bumper -;; dgos: L1, SNO - - ;; DECOMP BEGINS (deftype snow-bumper (process-drawable) - ((bumper-id int32) - (base-shove-ry float) - (max-shove-diff-ry float) - (part2 sparticle-launch-control) - (last-shoved-player-time time-frame) - ) + ((bumper-id int32) + (base-shove-ry float) + (max-shove-diff-ry float) + (part2 sparticle-launch-control) + (last-shoved-player-time time-frame)) (:methods - (snow-bumper-method-20 (_type_) none) - (shove-player (_type_ process-drawable) none) - ) + (snow-bumper-method-20 (_type_) none) + (shove-player (_type_ process-drawable) none)) (:states - snow-bumper-active-close-idle - snow-bumper-active-far-idle - snow-bumper-deactivate - snow-bumper-inactive-idle - snow-bumper-spawn-fuel-cell - ) - ) - + snow-bumper-active-close-idle + snow-bumper-active-far-idle + snow-bumper-deactivate + snow-bumper-inactive-idle + snow-bumper-spawn-fuel-cell)) -(defskelgroup *snow-bumper-sg* snow-bumper snow-bumper-lod0-jg -1 - ((snow-bumper-lod0-mg (meters 20)) (snow-bumper-lod1-mg (meters 999999))) - :bounds (static-spherem 0 2.2 0 3.4) - ) +(defskelgroup *snow-bumper-sg* + snow-bumper + snow-bumper-lod0-jg + -1 + ((snow-bumper-lod0-mg (meters 20)) (snow-bumper-lod1-mg (meters 999999))) + :bounds (static-spherem 0 2.2 0 3.4)) (defpartgroup group-snow-bumper-idle :id 519 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1893 :fade-after (meters 90) :falloff-to (meters 90) :period (seconds 0.085) :length (seconds 0.035)) - ) - ) + :parts ((sp-item 1893 :fade-after (meters 90) :falloff-to (meters 90) :period (seconds 0.085) :length (seconds 0.035)))) (defpart 1893 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 15.0) - (:y (meters 1.5)) - (:z (meters 0)) - (:scale-x (meters 1.5)) - (:scale-y (meters 6)) - (:r 0.0) - (:g 64.0) - (:b 64.0 32.0) - (:a 32.0 64.0) - (:vel-y (meters 0.013333334)) - (:scalevel-x (meters 0.0038461538)) - (:scalevel-y (meters -0.03076923)) - (:fade-a 0.0) - (:timer (seconds 0.085)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 5)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 15.0) + (:y (meters 1.5)) + (:z (meters 0)) + (:scale-x (meters 1.5)) + (:scale-y (meters 6)) + (:r 0.0) + (:g 64.0) + (:b 64.0 32.0) + (:a 32.0 64.0) + (:vel-y (meters 0.013333334)) + (:scalevel-x (meters 0.0038461538)) + (:scalevel-y (meters -0.03076923)) + (:fade-a 0.0) + (:timer (seconds 0.085)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 5)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-snow-bumper-shove :id 520 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1895)) - ) + :parts ((sp-item 1895))) (defpart 1895 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 16.0) - (:x (meters 5.5)) - (:y (meters 1.5)) - (:z (meters 0)) - (:scale-x (meters 2)) - (:scale-y (meters 6)) - (:r 64.0 32.0) - (:g 64.0) - (:b 0.0) - (:a 64.0) - (:vel-x (meters 0.033333335)) - (:scalevel-x (meters 0.008333334)) - (:scalevel-y (meters 0.2)) - (:fade-a 0.0) - (:timer (seconds 0.085)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 0) (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 16.0) + (:x (meters 5.5)) + (:y (meters 1.5)) + (:z (meters 0)) + (:scale-x (meters 2)) + (:scale-y (meters 6)) + (:r 64.0 32.0) + (:g 64.0) + (:b 0.0) + (:a 64.0) + (:vel-x (meters 0.033333335)) + (:scalevel-x (meters 0.008333334)) + (:scalevel-y (meters 0.2)) + (:fade-a 0.0) + (:timer (seconds 0.085)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 0) (degrees 45)))) (defmethod shove-player ((this snow-bumper) (arg0 process-drawable)) (let ((s5-0 (new 'stack-no-clear 'vector))) @@ -107,200 +93,145 @@ (let* ((f0-3 (atan (-> s5-0 x) (-> s5-0 z))) (f30-0 (-> this base-shove-ry)) (f28-0 (-> this max-shove-diff-ry)) - (f0-4 (deg- f0-3 f30-0)) - ) + (f0-4 (deg- f0-3 f30-0))) (when (< f28-0 (fabs f0-4)) - (let ((f30-1 (if (>= f0-4 0.0) - (+ f30-0 f28-0) - (- f30-0 f28-0) - ) - ) - ) - (set-vector! s5-0 (sin f30-1) 0.0 (cos f30-1) 1.0) - ) - ) - ) + (let ((f30-1 (if (>= f0-4 0.0) (+ f30-0 f28-0) (- f30-0 f28-0)))) (set-vector! s5-0 (sin f30-1) 0.0 (cos f30-1) 1.0)))) (let ((f0-12 (+ -16384.0 (atan (-> s5-0 x) (-> s5-0 z))))) - (set! (-> *part-id-table* 1895 init-specs 17 initial-valuef) (+ -4096.0 f0-12)) - ) + (set! (-> *part-id-table* 1895 init-specs 17 initial-valuef) (+ -4096.0 f0-12))) (spawn (-> this part2) (-> this root trans)) (let ((s3-1 (new 'stack-no-clear 'vector))) (vector-normalize-copy! s3-1 s5-0 32768.0) (vector+! s3-1 s3-1 (-> this root trans)) - (vector-! s5-0 s3-1 (-> arg0 root trans)) - ) + (vector-! s5-0 s3-1 (-> arg0 root trans))) (let ((f30-3 (vector-xz-length s5-0))) (vector-normalize! s5-0 1.0) (if (send-event *target* 'shove #f (static-attack-info ((vector s5-0) (shove-up (meters 1)) (shove-back f30-3)))) - (set-time! (-> this last-shoved-player-time)) - ) - ) - ) - (none) - ) + (set-time! (-> this last-shoved-player-time))))) + (none)) (defstate snow-bumper-active-far-idle (snow-bumper) - :trans (behavior () - (if (and *target* (>= 135895450000.0 (vector-vector-xz-distance-squared (-> self root trans) (target-pos 0)))) - (go snow-bumper-active-close-idle) - ) - 0 - ) - :code (behavior () - (transform-post) - (suspend) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :trans + (behavior () + (if (and *target* (>= 135895450000.0 (vector-vector-xz-distance-squared (-> self root trans) (target-pos 0)))) + (go snow-bumper-active-close-idle)) + 0) + :code + (behavior () + (transform-post) (suspend) - ) - ) - ) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-bumper-active-close-idle (snow-bumper) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack 'bonk) - (when (= (-> proc type) target) - (let ((gp-0 (-> block param 0))) - (when (and (>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry gp-0) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - ) - (close-specific-task! (game-task snow-bumpers) (task-status need-hint)) - (go snow-bumper-deactivate) - ) - ) - ) - ) - ) - ) - :trans (behavior () - (cond - (*target* - (let* ((gp-0 (target-pos 0)) - (f30-0 (vector-vector-xz-distance (-> self root trans) gp-0)) - (f28-0 (- (-> gp-0 y) (-> self root trans y))) - ) - (if (< 368640.0 f30-0) - (go snow-bumper-active-far-idle) - ) - (if (and (time-elapsed? (-> self last-shoved-player-time) (seconds 0.5)) - (>= 20480.0 f30-0) - (>= f28-0 -4096.0) - (>= 11059.2 f28-0) - ) - (shove-player self *target*) - ) - ) - ) - (else - (go snow-bumper-active-far-idle) - ) - ) - (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - ) - :code (behavior () - (transform-post) - (suspend) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack 'bonk) + (when (= (-> proc type) target) + (let ((gp-0 (-> block param 0))) + (when (and (>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry gp-0) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1))) + (close-specific-task! (game-task snow-bumpers) (task-status need-hint)) + (go snow-bumper-deactivate))))))) + :trans + (behavior () + (cond + (*target* + (let* ((gp-0 (target-pos 0)) + (f30-0 (vector-vector-xz-distance (-> self root trans) gp-0)) + (f28-0 (- (-> gp-0 y) (-> self root trans y)))) + (if (< 368640.0 f30-0) (go snow-bumper-active-far-idle)) + (if (and (time-elapsed? (-> self last-shoved-player-time) (seconds 0.5)) + (>= 20480.0 f30-0) + (>= f28-0 -4096.0) + (>= 11059.2 f28-0)) + (shove-player self *target*)))) + (else (go snow-bumper-active-far-idle))) + (spawn (-> self part) (-> self root trans)) + (update! (-> self sound))) + :code + (behavior () + (transform-post) (suspend) - ) - ) - ) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-bumper-deactivate (snow-bumper) - :exit (behavior () - (stop! (-> self sound)) - (logior! (-> self mask) (process-mask actor-pause)) - ) + :exit + (behavior () + (stop! (-> self sound)) + (logior! (-> self mask) (process-mask actor-pause))) :trans rider-trans - :code (behavior () - (local-vars (sv-16 symbol)) - (logclear! (-> self mask) (process-mask actor-pause)) - (sound-play "bumper-pwr-dwn") - (ja-no-eval :group! snow-bumper-button-ja :num! (seek! max 0.05) :frame-num 0.0) - (until (ja-done? 0) - (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - (suspend) - (ja :num! (seek! max 0.05)) - ) - (stop! (-> self sound)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.5)) - (suspend) - ) - (ja-no-eval :group! snow-bumper-collapse-ja :num! (seek! max 0.02) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.02)) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (set! sv-16 (the-as symbol #f)) - (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) - (when sv-16 - (save-reminder (get-task-control (game-task snow-bumpers)) (-> self bumper-id) 0) - (go snow-bumper-spawn-fuel-cell) - ) - (go snow-bumper-inactive-idle) - ) - :post rider-post - ) + :code + (behavior () + (local-vars (sv-16 symbol)) + (logclear! (-> self mask) (process-mask actor-pause)) + (sound-play "bumper-pwr-dwn") + (ja-no-eval :group! snow-bumper-button-ja :num! (seek! max 0.05) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (-> self root trans)) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! max 0.05))) + (stop! (-> self sound)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.5)) + (suspend)) + (ja-no-eval :group! snow-bumper-collapse-ja :num! (seek! max 0.02) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.02))) + (process-entity-status! self (entity-perm-status complete) #t) + (set! sv-16 (the-as symbol #f)) + (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) + (when sv-16 + (save-reminder (get-task-control (game-task snow-bumpers)) (-> self bumper-id) 0) + (go snow-bumper-spawn-fuel-cell)) + (go snow-bumper-inactive-idle)) + :post rider-post) (defstate snow-bumper-spawn-fuel-cell (snow-bumper) - :code (behavior () - (ja-channel-set! 1) - (ja :group! snow-bumper-collapse-ja :num! max) - (transform-post) - (if (not (task-complete? *game-info* (-> self entity extra perm task))) - (birth-pickup-at-point - (-> self root trans) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #t - self - (the-as fact-info #f) - ) - ) - (until (not (-> self child)) - (suspend) - ) - (go snow-bumper-inactive-idle) - ) - ) + :code + (behavior () + (ja-channel-set! 1) + (ja :group! snow-bumper-collapse-ja :num! max) + (transform-post) + (if (not (task-complete? *game-info* (-> self entity extra perm task))) + (birth-pickup-at-point (-> self root trans) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #t + self + (the-as fact-info #f))) + (until (not (-> self child)) + (suspend)) + (go snow-bumper-inactive-idle))) (defstate snow-bumper-inactive-idle (snow-bumper) - :code (behavior () - (set! (-> self root nav-radius) 6963.2) - (ja-channel-set! 1) - (ja :group! snow-bumper-collapse-ja :num! max) - (transform-post) - (suspend) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :code + (behavior () + (set! (-> self root nav-radius) 6963.2) + (ja-channel-set! 1) + (ja :group! snow-bumper-collapse-ja :num! max) + (transform-post) + (suspend) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod deactivate ((this snow-bumper)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this snow-bumper) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this snow-bumper) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -308,9 +239,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-kind ground-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -324,8 +253,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 6) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -333,13 +261,10 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 8192.0 0.0 11878.4) - (append-prim s3-0 s2-1) - ) - ) + (append-prim s3-0 s2-1))) (set! (-> s4-0 nav-radius) 20480.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snow-bumper-sg* '()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 519) this)) @@ -347,18 +272,11 @@ (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this bumper-id) (+ (actor-count-before (-> this link)) 1)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "snow-bumper" :fo-max 40) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "snow-bumper" :fo-max 40) (-> this root trans))) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (transform-post) (set! (-> this base-shove-ry) 0.0) (set! (-> this max-shove-diff-ry) 32768.0) @@ -366,21 +284,12 @@ (let ((v1-52 (res-lump-data (-> this entity) 'rotmin (pointer float) :tag-ptr (& sv-16)))) (when v1-52 (set! (-> this base-shove-ry) (-> v1-52 0)) - (set! (-> this max-shove-diff-ry) (-> v1-52 1)) - ) - ) + (set! (-> this max-shove-diff-ry) (-> v1-52 1)))) (cond ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (if (and (= (get-reminder (get-task-control (game-task snow-bumpers)) 0) (-> this bumper-id)) - (not (task-complete? *game-info* (-> this entity extra perm task))) - ) - (go snow-bumper-spawn-fuel-cell) - (go snow-bumper-inactive-idle) - ) - ) - (else - (go snow-bumper-active-far-idle) - ) - ) - (none) - ) + (not (task-complete? *game-info* (-> this entity extra perm task)))) + (go snow-bumper-spawn-fuel-cell) + (go snow-bumper-inactive-idle))) + (else (go snow-bumper-active-far-idle))) + (none)) diff --git a/goal_src/jak1/levels/snow/snow-bunny.gc b/goal_src/jak1/levels/snow/snow-bunny.gc index c567c4f9b1..dd8650ebfb 100644 --- a/goal_src/jak1/levels/snow/snow-bunny.gc +++ b/goal_src/jak1/levels/snow/snow-bunny.gc @@ -1,153 +1,129 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO" "SNO.DGO") - (require "levels/snow/snow-ram-boss.gc") -;; name: snow-bunny.gc -;; name in dgo: snow-bunny -;; dgos: CIT, L1, SNO - ;; DECOMP BEGINS (deftype snow-bunny (nav-enemy) - ((patrol-rand-distraction int32) - (base-hop-dist float) - (halfway-dist float) - (retreat-timeout float) - (gnd-popup float) - (jump-height-min float) - (jump-height-factor float) - (jump-anim-start-frame float) - (defense uint64) - (retreat-timeout-time time-frame) - (last-nondangerous-time time-frame) - (patrol-hop-failed? basic) - (should-retreat? basic) - (got-jump-event? symbol) - (using-jump-event? basic) - (jump-anim int8) - (notice-land-anim int8) - (attack-anim int8) - (final-dest vector :inline) - (jump-event-dest vector :inline) - ) + ((patrol-rand-distraction int32) + (base-hop-dist float) + (halfway-dist float) + (retreat-timeout float) + (gnd-popup float) + (jump-height-min float) + (jump-height-factor float) + (jump-anim-start-frame float) + (defense uint64) + (retreat-timeout-time time-frame) + (last-nondangerous-time time-frame) + (patrol-hop-failed? basic) + (should-retreat? basic) + (got-jump-event? symbol) + (using-jump-event? basic) + (jump-anim int8) + (notice-land-anim int8) + (attack-anim int8) + (final-dest vector :inline) + (jump-event-dest vector :inline)) (:methods - (nav-enemy-method-51 (_type_ vector vector) symbol :replace) - (nav-enemy-method-52 (_type_) symbol :replace) - (nav-enemy-method-54 (_type_) symbol :replace) - (nav-enemy-method-57 (_type_) symbol :replace) - (nav-enemy-method-60 (_type_) none :replace) - (snow-bunny-method-76 (_type_ symbol) none) - ) - ) + (nav-enemy-method-51 (_type_ vector vector) symbol :replace) + (nav-enemy-method-52 (_type_) symbol :replace) + (nav-enemy-method-54 (_type_) symbol :replace) + (nav-enemy-method-57 (_type_) symbol :replace) + (nav-enemy-method-60 (_type_) none :replace) + (snow-bunny-method-76 (_type_ symbol) none))) (define-extern *snow-bunny* (pointer snow-bunny)) -(defskelgroup *snow-bunny-sg* snow-bunny snow-bunny-lod0-jg snow-bunny-idle-ja - ((snow-bunny-lod0-mg (meters 20)) (snow-bunny-lod1-mg (meters 40)) (snow-bunny-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0.25 0 2) - :shadow snow-bunny-shadow-mg - ) - -(define *snow-bunny-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 5 - :turn-anim 5 - :notice-anim 9 - :run-anim 5 - :jump-anim 7 - :jump-land-anim 10 - :victory-anim 9 - :taunt-anim 9 - :die-anim 11 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 4) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 1.2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 31.0 - :jump-anim-start-frame 11.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.6 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -4) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(defskelgroup *snow-bunny-sg* + snow-bunny + snow-bunny-lod0-jg + snow-bunny-idle-ja + ((snow-bunny-lod0-mg (meters 20)) (snow-bunny-lod1-mg (meters 40)) (snow-bunny-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0.25 0 2) + :shadow snow-bunny-shadow-mg) + +(define *snow-bunny-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 5 + :turn-anim 5 + :notice-anim 9 + :run-anim 5 + :jump-anim 7 + :jump-land-anim 10 + :victory-anim 9 + :taunt-anim 9 + :die-anim 11 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 4) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 1.2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 31.0 + :jump-anim-start-frame 11.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.6 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -4) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defbehavior snow-bunny-default-event-handler snow-bunny ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (nav-enemy-set-hit-from-direction arg0) - (go-virtual nav-enemy-die) - ) + (('attack) (nav-enemy-set-hit-from-direction arg0) (go-virtual nav-enemy-die)) (('touch) (when (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) (set-time! (-> self touch-time)) (set-collide-offense (-> self collide-info) 2 (collide-offense no-offense)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (go-virtual snow-bunny-attack) - ) - ) + (go-virtual snow-bunny-attack))) (('jump) (let ((v1-16 (the-as object (-> arg3 param 0)))) (set! (-> self got-jump-event?) #t) (let ((v0-1 (the-as object (-> self jump-event-dest)))) (set! (-> (the-as vector v0-1) quad) (-> (the-as vector v1-16) quad)) - v0-1 - ) - ) - ) - ) - ) + v0-1))))) (defmethod snow-bunny-method-76 ((this snow-bunny) (arg0 symbol)) (let ((f0-0 -4096.0)) - (if arg0 - (set! f0-0 -20480.0) - ) - (let ((v1-3 (-> this draw shadow-ctrl))) - (set! (-> v1-3 settings bot-plane w) (- f0-0)) - ) - ) + (if arg0 (set! f0-0 -20480.0)) + (let ((v1-3 (-> this draw shadow-ctrl))) (set! (-> v1-3 settings bot-plane w) (- f0-0)))) 0 - (none) - ) + (none)) (defmethod initialize-collision ((this snow-bunny)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 3) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -160,39 +136,32 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 1638.4 0.0 1843.2) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 4096.0 0.0 1843.2) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2457.6) - (append-prim s4-0 s3-2) - ) - ) + (append-prim s4-0 s3-2))) (set! (-> s5-0 nav-radius) 2048.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-60 ((this snow-bunny)) (initialize-skeleton this *snow-bunny-sg* '()) (set! (-> this draw origin-joint-index) (the-as uint 3)) - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this snow-bunny)) (nav-enemy-method-60 this) @@ -201,13 +170,8 @@ (cond ((zero? (res-lump-value (-> this entity) 'mode uint128)) (set! (-> this defense) (the-as uint 1)) - (set! (-> this retreat-timeout) 5.0) - ) - (else - (set! (-> this defense) (the-as uint 0)) - (set! (-> this retreat-timeout) 0.1) - ) - ) + (set! (-> this retreat-timeout) 5.0)) + (else (set! (-> this defense) (the-as uint 0)) (set! (-> this retreat-timeout) 0.1))) (set-time! (-> this last-nondangerous-time)) (set! (-> this gnd-popup) 16384.0) (set! (-> this got-jump-event?) #f) @@ -219,41 +183,32 @@ (set! (-> this patrol-rand-distraction) (+ (nav-enemy-rnd-int-count 5) 1)) (set! (-> this patrol-hop-failed?) #f) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this snow-bunny) (arg0 entity-actor)) (initialize-collision this) (process-drawable-from-entity! this arg0) (nav-enemy-method-48 this) - (if (<= (-> this path curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) + (if (<= (-> this path curve num-cverts) 0) (go process-drawable-art-error "no path")) (set! *snow-bunny* (the-as (pointer snow-bunny) (process->ppointer this))) (nav-enemy-method-59 this) - (none) - ) + (none)) (defmethod nav-enemy-method-58 ((this snow-bunny)) - (if (not (logtest? (-> *target* state-flags) (state-flags dangerous))) - (set-time! (-> this last-nondangerous-time)) - ) - (none) - ) + (if (not (logtest? (-> *target* state-flags) (state-flags dangerous))) (set-time! (-> this last-nondangerous-time))) + (none)) (defbehavior snow-bunny-initialize-jump snow-bunny ((arg0 vector)) (nav-enemy-initialize-custom-jump arg0 #f (-> self jump-height-min) (-> self jump-height-factor) -307200.0) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags drop-jump)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)) 0 - (none) - ) + (none)) (defbehavior snow-bunny-execute-jump snow-bunny () (nav-enemy-execute-custom-jump (-> self jump-anim) (-> self jump-anim-start-frame) 1.0) 0 - (none) - ) + (none)) (defmethod set-jump-height-factor! ((this snow-bunny) (arg0 int)) (let ((v1-0 arg0)) @@ -262,222 +217,138 @@ (set! (-> this jump-anim) 8) (set! (-> this jump-height-min) 4096.0) (set! (-> this jump-height-factor) 0.6) - (set! (-> this jump-anim-start-frame) 4.0) - ) + (set! (-> this jump-anim-start-frame) 4.0)) ((= v1-0 1) (set! (-> this jump-anim) 7) (set! (-> this jump-height-min) 4096.0) (set! (-> this jump-height-factor) 0.6) - (set! (-> this jump-anim-start-frame) 11.0) - ) + (set! (-> this jump-anim-start-frame) 11.0)) ((= v1-0 2) (set! (-> this jump-anim) 7) (set! (-> this jump-height-min) 4096.0) (set! (-> this jump-height-factor) 0.4) - (set! (-> this jump-anim-start-frame) 11.0) - ) - ) - ) - (none) - ) + (set! (-> this jump-anim-start-frame) 11.0)))) + (none)) (defmethod nav-enemy-method-57 ((this snow-bunny)) - (if (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags dangerous)))) - (return #f) - ) + (if (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags dangerous)))) (return #f)) (let ((f0-0 (vector-vector-xz-distance (target-pos 0) (-> this collide-info trans)))) - (if (< 73728.0 f0-0) - (return #f) - ) + (if (< 73728.0 f0-0) (return #f)) (let* ((f0-1 (- f0-0 (-> *TARGET-bank* spin-radius))) - (f0-2 (+ -2457.6 f0-1)) - ) - (if (>= 40.96 f0-2) - (set! f0-2 40.96) - ) + (f0-2 (+ -2457.6 f0-1))) + (if (>= 40.96 f0-2) (set! f0-2 40.96)) (let ((v1-13 (the int (/ f0-2 (* (-> this nav-info run-travel-speed) (seconds-per-frame)))))) - (if (<= (- (- (seconds 0.36) (- (current-time) (-> this last-nondangerous-time))) (the-as time-frame v1-13)) 0) - (return #f) - ) - ) - ) - ) - #t - ) + (if (<= (- (- (seconds 0.36) (- (current-time) (-> this last-nondangerous-time))) (the-as time-frame v1-13)) 0) (return #f))))) + #t) (defstate snow-bunny-tune-spheres (snow-bunny) :virtual override - :code (behavior () - 0 - ) - :post transform-post - ) + :code + (behavior () + 0) + :post transform-post) (defstate nav-enemy-idle (snow-bunny) :virtual #t - :enter (behavior () - (snow-bunny-method-76 self #f) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) - (if t9-1 - (t9-1) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - ) + :enter + (behavior () + (snow-bunny-method-76 self #f) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) (if t9-1 (t9-1)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! + (-> self draw art-group data (-> self nav-info idle-anim)) + :num! + (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))))) + (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) (loop (suspend) (ja :num! (loop! f30-0)))))) (defstate nav-enemy-patrol (snow-bunny) :virtual #t :enter #f :trans #f - :code (behavior () - (go-virtual snow-bunny-nav-resume) - ) - ) + :code + (behavior () + (go-virtual snow-bunny-nav-resume))) (defstate snow-bunny-nav-resume (snow-bunny) :virtual override - :code (behavior () - (cond - (*target* - (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (cond - ((>= f0-0 (-> self enemy-info idle-distance)) - (go-virtual nav-enemy-idle) - ) - ((< (-> self nav-info notice-distance) f0-0) - (go-virtual snow-bunny-patrol-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-notice) - ) - (else - (go-virtual snow-bunny-patrol-idle) - ) - ) - ) - ) - (else - (go-virtual nav-enemy-idle) - ) - ) - ) - ) + :code + (behavior () + (cond + (*target* + (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (cond + ((>= f0-0 (-> self enemy-info idle-distance)) (go-virtual nav-enemy-idle)) + ((< (-> self nav-info notice-distance) f0-0) (go-virtual snow-bunny-patrol-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-notice)) + (else (go-virtual snow-bunny-patrol-idle))))) + (else (go-virtual nav-enemy-idle))))) (defstate snow-bunny-patrol-idle (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (snow-bunny-method-76 self #f) - (logior! (-> self nav flags) (nav-control-flags navcf19)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (set! (-> self state-timeout) (seconds 0.1)) - ) - :trans (behavior () - (if (nav-enemy-method-57 self) - (go-virtual snow-bunny-defend) - ) - (when (time-elapsed? (-> self state-time) (-> self state-timeout)) - (if (not *target*) - (go-virtual nav-enemy-idle) - ) - (cond - ((>= (vector-vector-distance (target-pos 0) (-> self collide-info trans)) (-> self enemy-info idle-distance)) - (go-virtual nav-enemy-idle) - ) - ((nav-enemy-notice-player?) - (go-virtual nav-enemy-notice) - ) - ) - ) - (nav-enemy-method-58 self) - ) - :code (behavior () - (let ((gp-0 (nav-enemy-rnd-int-count 3))) - (when (and (not (-> self patrol-hop-failed?)) (zero? gp-0)) - (if (nav-enemy-method-53 self) - (go-virtual snow-bunny-patrol-hop) - ) - ) - (set! (-> self patrol-hop-failed?) #f) - (let ((gp-2 (min gp-0 (nav-enemy-rnd-int-count 3)))) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (loop - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 (seconds 2.52)) - (suspend) - (ja :num! (loop!)) - ) - ) - (cond - ((zero? gp-2) - (if (nav-enemy-method-53 self) - (go-virtual snow-bunny-patrol-hop) - ) - ) - (else - (+! gp-2 -1) - ) - ) - ) - ) - ) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (snow-bunny-method-76 self #f) + (logior! (-> self nav flags) (nav-control-flags navcf19)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (set! (-> self state-timeout) (seconds 0.1))) + :trans + (behavior () + (if (nav-enemy-method-57 self) (go-virtual snow-bunny-defend)) + (when (time-elapsed? (-> self state-time) (-> self state-timeout)) + (if (not *target*) (go-virtual nav-enemy-idle)) + (cond + ((>= (vector-vector-distance (target-pos 0) (-> self collide-info trans)) (-> self enemy-info idle-distance)) + (go-virtual nav-enemy-idle)) + ((nav-enemy-notice-player?) (go-virtual nav-enemy-notice)))) + (nav-enemy-method-58 self)) + :code + (behavior () + (let ((gp-0 (nav-enemy-rnd-int-count 3))) + (when (and (not (-> self patrol-hop-failed?)) (zero? gp-0)) + (if (nav-enemy-method-53 self) (go-virtual snow-bunny-patrol-hop))) + (set! (-> self patrol-hop-failed?) #f) + (let ((gp-2 (min gp-0 (nav-enemy-rnd-int-count 3)))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! + (-> self draw art-group data (-> self nav-info idle-anim)) + :num! + (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))))) + (loop + (let ((s5-1 (current-time))) (until (time-elapsed? s5-1 (seconds 2.52)) (suspend) (ja :num! (loop!)))) + (cond + ((zero? gp-2) (if (nav-enemy-method-53 self) (go-virtual snow-bunny-patrol-hop))) + (else (+! gp-2 -1))))))) + :post nav-enemy-simple-post) (defmethod nav-enemy-method-51 ((this snow-bunny) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) (let* ((s4-0 (new 'stack-no-clear 'collide-tri-result)) (f0-0 (-> this gnd-popup)) - (f30-0 (+ f0-0 40960.0)) - ) + (f30-0 (+ f0-0 40960.0))) (set! (-> s5-0 quad) (-> arg0 quad)) (+! (-> s5-0 y) f0-0) - (let ((f0-2 (fill-and-probe-using-y-probe - *collide-cache* - s5-0 - f30-0 - (collide-kind background) - (-> this collide-info process) - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) + (let ((f0-2 (fill-and-probe-using-y-probe *collide-cache* + s5-0 + f30-0 + (collide-kind background) + (-> this collide-info process) + s4-0 + (new 'static 'pat-surface :noentity #x1)))) ;; og:preserve-this yes this is bugged... again - (if (or (< f0-2 0.0) (= (logand #b111000 (the-as int (-> s4-0 pat))) 8)) - (return #f) - ) - (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))) - ) - ) - (set! (-> arg1 quad) (-> s5-0 quad)) - ) - #t - ) + (if (or (< f0-2 0.0) (= (logand #b111000 (the-as int (-> s4-0 pat))) 8)) (return #f)) + (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))))) + (set! (-> arg1 quad) (-> s5-0 quad))) + #t) (defmethod nav-enemy-method-53 ((this snow-bunny)) (let* ((s4-0 (-> this path curve num-cverts)) (s2-0 (nav-enemy-rnd-int-count s4-0)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (dotimes (s3-0 s4-0) (eval-path-curve-div! (-> this path) s5-0 (the float s2-0) 'interp) (let ((f30-0 (vector-vector-xz-distance s5-0 (-> this collide-info trans)))) @@ -486,15 +357,9 @@ (set! (-> this final-dest quad) (-> s5-0 quad)) (set! (-> this halfway-dist) (* 0.5 f30-0)) (set! (-> this base-hop-dist) (rand-vu-float-range 6144.0 22118.4)) - (return #t) - ) - ) - ) - (set! s2-0 (mod (+ s2-0 1) s4-0)) - ) - ) - #f - ) + (return #t)))) + (set! s2-0 (mod (+ s2-0 1) s4-0)))) + #f) (defmethod nav-enemy-method-54 ((this snow-bunny)) (local-vars (sv-48 (function float float))) @@ -502,391 +367,262 @@ (let* ((s5-1 (vector-! (new 'stack-no-clear 'vector) (-> this final-dest) (-> this collide-info trans))) (f30-0 (vector-length s5-1)) (f1-0 (-> this halfway-dist)) - (f0-1 (- 1.0 (/ (fabs (- f30-0 f1-0)) (* 2.0 f1-0)))) - ) + (f0-1 (- 1.0 (/ (fabs (- f30-0 f1-0)) (* 2.0 f1-0))))) (cond - ((< f0-1 0.3) - (set! f0-1 0.3) - ) - ((< 1.0 f0-1) - (set! f0-1 1.0) - ) - ) + ((< f0-1 0.3) (set! f0-1 0.3)) + ((< 1.0 f0-1) (set! f0-1 1.0))) (let ((f28-0 (* (-> this base-hop-dist) f0-1))) (cond - ((>= (+ 4096.0 f28-0) f30-0) - (set! (-> this nav target-pos quad) (-> this final-dest quad)) - ) + ((>= (+ 4096.0 f28-0) f30-0) (set! (-> this nav target-pos quad) (-> this final-dest quad))) (else - (vector-rotate-around-y! s5-1 s5-1 16384.0) - (vector-normalize! s5-1 (- f30-0 f28-0)) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let ((s3-0 vector+*!) - (s2-0 s4-0) - (s1-0 (-> this final-dest)) - (s0-0 s5-1) - ) - (set! sv-48 sin) - (let ((a0-9 (rand-vu-float-range -16384.0 16384.0))) - (s3-0 s2-0 s1-0 s0-0 (sv-48 a0-9)) - ) - ) - (vector-! s5-1 s4-0 (-> this collide-info trans)) - (when (< f28-0 (vector-length s5-1)) - (vector-normalize! s5-1 f28-0) - (vector+! s4-0 (-> this collide-info trans) s5-1) - ) - (set! (-> this nav target-pos quad) (-> s4-0 quad)) - ) - ) - ) - ) - ) + (vector-rotate-around-y! s5-1 s5-1 16384.0) + (vector-normalize! s5-1 (- f30-0 f28-0)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (let ((s3-0 vector+*!) + (s2-0 s4-0) + (s1-0 (-> this final-dest)) + (s0-0 s5-1)) + (set! sv-48 sin) + (let ((a0-9 (rand-vu-float-range -16384.0 16384.0))) (s3-0 s2-0 s1-0 s0-0 (sv-48 a0-9)))) + (vector-! s5-1 s4-0 (-> this collide-info trans)) + (when (< f28-0 (vector-length s5-1)) + (vector-normalize! s5-1 f28-0) + (vector+! s4-0 (-> this collide-info trans) s5-1)) + (set! (-> this nav target-pos quad) (-> s4-0 quad))))))) (set! (-> this got-jump-event?) #f) (nav-control-method-11 (-> this nav) (-> this nav target-pos)) (cond ((-> this got-jump-event?) (set! (-> this nav target-pos quad) (-> this jump-event-dest quad)) - (set! (-> this using-jump-event?) #t) - ) + (set! (-> this using-jump-event?) #t)) (else - (let ((s5-2 (-> this nav travel))) - (if (< (vector-length s5-2) 0.01) - (return #f) - ) - (let ((a2-2 (-> this nav target-pos))) - (vector+! a2-2 (-> this collide-info trans) s5-2) - (if (not (nav-enemy-method-51 this a2-2 a2-2)) - (return #f) - ) - ) - ) - ) - ) - #t - ) + (let ((s5-2 (-> this nav travel))) + (if (< (vector-length s5-2) 0.01) (return #f)) + (let ((a2-2 (-> this nav target-pos))) + (vector+! a2-2 (-> this collide-info trans) s5-2) + (if (not (nav-enemy-method-51 this a2-2 a2-2)) (return #f)))))) + #t) (defstate snow-bunny-patrol-hop (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (when (not (nav-enemy-method-54 self)) - (set! (-> self patrol-hop-failed?) #t) - (go-virtual snow-bunny-patrol-idle) - ) - (if (nav-enemy-method-57 self) - (go-virtual snow-bunny-defend) - ) - (set-jump-height-factor! self 0) - (snow-bunny-initialize-jump (-> self nav target-pos)) - (snow-bunny-method-76 self #t) - (set! (-> self rotate-speed) 728177.75) - (set! (-> self turn-time) (seconds 0.1)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - ) - :trans (behavior () - (nav-enemy-method-58 self) - ) - :code (behavior () - (snow-bunny-execute-jump) - (if (-> self using-jump-event?) - (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) - ) - (if (or (zero? (nav-enemy-rnd-int-count (-> self patrol-rand-distraction))) - (>= 40.96 (vector-vector-distance (-> self final-dest) (-> self collide-info trans))) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (when (not (nav-enemy-method-54 self)) + (set! (-> self patrol-hop-failed?) #t) + (go-virtual snow-bunny-patrol-idle)) + (if (nav-enemy-method-57 self) (go-virtual snow-bunny-defend)) + (set-jump-height-factor! self 0) + (snow-bunny-initialize-jump (-> self nav target-pos)) + (snow-bunny-method-76 self #t) + (set! (-> self rotate-speed) 728177.75) + (set! (-> self turn-time) (seconds 0.1))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1))) + :trans + (behavior () + (nav-enemy-method-58 self)) + :code + (behavior () + (snow-bunny-execute-jump) + (if (-> self using-jump-event?) + (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) + (if (or (zero? (nav-enemy-rnd-int-count (-> self patrol-rand-distraction))) + (>= 40.96 (vector-vector-distance (-> self final-dest) (-> self collide-info trans)))) (go-virtual snow-bunny-patrol-idle) - (go-virtual snow-bunny-patrol-hop) - ) - ) - :post nav-enemy-jump-post - ) + (go-virtual snow-bunny-patrol-hop))) + :post nav-enemy-jump-post) (defstate nav-enemy-notice (snow-bunny) :virtual #t :event snow-bunny-default-event-handler - :enter (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-neck-control-look-at) - (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go-virtual nav-enemy-chase) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (snow-bunny-method-76 self #t) - (set-vector! (-> self collide-info transv) 0.0 (nav-enemy-rnd-float-range 102400.0 131072.0) 0.0 1.0) - ) + :enter + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-neck-control-look-at) + (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) (go-virtual nav-enemy-chase)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (snow-bunny-method-76 self #t) + (set-vector! (-> self collide-info transv) 0.0 (nav-enemy-rnd-float-range 102400.0 131072.0) 0.0 1.0)) :exit #f - :trans (behavior () - (nav-enemy-method-58 self) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) - :num! (seek! (ja-aframe 8.0 0) f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 8.0 0) f30-0)) - ) - (until (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - (ja :num! (seek! max f30-0)) - (+! (-> self collide-info transv y) (* -546119.7 (seconds-per-frame))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 12288.0 - #f - #f - #f - ) - (when *target* - (let ((gp-2 (new 'stack-no-clear 'vector))) - (vector-! gp-2 (target-pos 0) (-> self collide-info trans)) - (seek-toward-heading-vec! (-> self collide-info) gp-2 524288.0 (seconds 0.1)) - ) - ) - (suspend) - ) + :trans + (behavior () + (nav-enemy-method-58 self)) + :code + (behavior () (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self notice-land-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-simple-post - ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info notice-anim)) + :num! + (seek! (ja-aframe 8.0 0) f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 8.0 0) f30-0))) + (until (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) + (ja :num! (seek! max f30-0)) + (+! (-> self collide-info transv y) (* -546119.7 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 12288.0 + #f + #f + #f) + (when *target* + (let ((gp-2 (new 'stack-no-clear 'vector))) + (vector-! gp-2 (target-pos 0) (-> self collide-info trans)) + (seek-toward-heading-vec! (-> self collide-info) gp-2 524288.0 (seconds 0.1)))) + (suspend)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! (-> self draw art-group data (-> self notice-land-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-chase)) + :post nav-enemy-simple-post) (defstate nav-enemy-chase (snow-bunny) :virtual #t :event #f :exit #f :trans #f - :code (behavior () - (go-virtual snow-bunny-chase-hop) - ) - :post #f - ) + :code + (behavior () + (go-virtual snow-bunny-chase-hop)) + :post #f) (defmethod nav-enemy-method-52 ((this snow-bunny)) (local-vars (sv-48 (function float float))) (set! (-> this using-jump-event?) #f) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((s4-0 (-> this final-dest))) (set! (-> s4-0 quad) (-> (target-pos 0) quad)) - (if (not (nav-enemy-method-51 this s4-0 s4-0)) - (return #f) - ) + (if (not (nav-enemy-method-51 this s4-0 s4-0)) (return #f)) (set! (-> this base-hop-dist) (rand-vu-float-range 18022.4 22118.4)) (let* ((s5-2 (vector-! (new 'stack-no-clear 'vector) s4-0 (-> this collide-info trans))) (f28-0 (vector-length s5-2)) - (f30-0 (-> this base-hop-dist)) - ) + (f30-0 (-> this base-hop-dist))) (cond - ((>= (+ 4096.0 f30-0) f28-0) - (set! (-> this nav target-pos quad) (-> s4-0 quad)) - ) + ((>= (+ 4096.0 f30-0) f28-0) (set! (-> this nav target-pos quad) (-> s4-0 quad))) (else - (vector-rotate-around-y! s5-2 s5-2 16384.0) - (vector-normalize! s5-2 (- f28-0 f30-0)) - (let ((s3-0 (new 'stack-no-clear 'vector))) - (let ((s2-0 vector+*!) - (s1-0 s3-0) - (s0-0 s5-2) - ) - (set! sv-48 sin) - (let ((a0-11 (rand-vu-float-range -16384.0 16384.0))) - (s2-0 s1-0 s4-0 s0-0 (sv-48 a0-11)) - ) - ) - (vector-! s5-2 s3-0 (-> this collide-info trans)) - (when (< f30-0 (vector-length s5-2)) - (vector-normalize! s5-2 f30-0) - (vector+! s3-0 (-> this collide-info trans) s5-2) - ) - (set! (-> this nav target-pos quad) (-> s3-0 quad)) - ) - ) - ) - ) - ) + (vector-rotate-around-y! s5-2 s5-2 16384.0) + (vector-normalize! s5-2 (- f28-0 f30-0)) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (let ((s2-0 vector+*!) + (s1-0 s3-0) + (s0-0 s5-2)) + (set! sv-48 sin) + (let ((a0-11 (rand-vu-float-range -16384.0 16384.0))) (s2-0 s1-0 s4-0 s0-0 (sv-48 a0-11)))) + (vector-! s5-2 s3-0 (-> this collide-info trans)) + (when (< f30-0 (vector-length s5-2)) + (vector-normalize! s5-2 f30-0) + (vector+! s3-0 (-> this collide-info trans) s5-2)) + (set! (-> this nav target-pos quad) (-> s3-0 quad))))))) (set! (-> this got-jump-event?) #f) (nav-control-method-11 (-> this nav) (-> this nav target-pos)) (cond ((-> this got-jump-event?) (set! (-> this nav target-pos quad) (-> this jump-event-dest quad)) - (set! (-> this using-jump-event?) #t) - ) + (set! (-> this using-jump-event?) #t)) (else - (let ((s5-3 (-> this nav travel))) - (if (< (vector-length s5-3) 0.01) - (return #f) - ) - (let ((a2-3 (-> this nav target-pos))) - (vector+! a2-3 (-> this collide-info trans) s5-3) - (if (not (nav-enemy-method-51 this a2-3 a2-3)) - (return #f) - ) - ) - ) - ) - ) - #t - ) + (let ((s5-3 (-> this nav travel))) + (if (< (vector-length s5-3) 0.01) (return #f)) + (let ((a2-3 (-> this nav target-pos))) + (vector+! a2-3 (-> this collide-info trans) s5-3) + (if (not (nav-enemy-method-51 this a2-3 a2-3)) (return #f)))))) + #t) (defstate snow-bunny-chase-hop (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self should-retreat?) #f) - (if (or (not *target*) (logtest? (-> *target* state-flags) (state-flags do-not-notice))) - (go-virtual nav-enemy-patrol) - ) - (if (not (target-in-range? self (-> self nav-info stop-chase-distance))) - (go-virtual nav-enemy-patrol) - ) - (if (nav-enemy-method-57 self) - (go-virtual snow-bunny-defend) - ) - (when (not (nav-enemy-method-52 self)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go-virtual nav-enemy-notice) - ) - (set-jump-height-factor! self 1) - (snow-bunny-initialize-jump (-> self nav target-pos)) - (snow-bunny-method-76 self #t) - (set! (-> self rotate-speed) 728177.75) - (set! (-> self turn-time) (seconds 0.1)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - ) - :trans (behavior () - (if (nav-enemy-method-57 self) - (set! (-> self should-retreat?) #t) - ) - (nav-enemy-method-58 self) - ) - :code (behavior () - (snow-bunny-execute-jump) - (if (-> self using-jump-event?) - (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) - ) - (if (-> self should-retreat?) - (go-virtual snow-bunny-defend) - ) - (go-virtual snow-bunny-chase-hop) - ) - :post nav-enemy-jump-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self should-retreat?) #f) + (if (or (not *target*) (logtest? (-> *target* state-flags) (state-flags do-not-notice))) (go-virtual nav-enemy-patrol)) + (if (not (target-in-range? self (-> self nav-info stop-chase-distance))) (go-virtual nav-enemy-patrol)) + (if (nav-enemy-method-57 self) (go-virtual snow-bunny-defend)) + (when (not (nav-enemy-method-52 self)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (go-virtual nav-enemy-notice)) + (set-jump-height-factor! self 1) + (snow-bunny-initialize-jump (-> self nav target-pos)) + (snow-bunny-method-76 self #t) + (set! (-> self rotate-speed) 728177.75) + (set! (-> self turn-time) (seconds 0.1))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1))) + :trans + (behavior () + (if (nav-enemy-method-57 self) (set! (-> self should-retreat?) #t)) + (nav-enemy-method-58 self)) + :code + (behavior () + (snow-bunny-execute-jump) + (if (-> self using-jump-event?) + (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) + (if (-> self should-retreat?) (go-virtual snow-bunny-defend)) + (go-virtual snow-bunny-chase-hop)) + :post nav-enemy-jump-post) (defstate snow-bunny-defend (snow-bunny) :virtual override - :code (behavior () - (if (= (-> self defense) 1) - (go-virtual snow-bunny-retreat-hop) - (go-virtual snow-bunny-lunge) - ) - ) - ) + :code + (behavior () + (if (= (-> self defense) 1) (go-virtual snow-bunny-retreat-hop) (go-virtual snow-bunny-lunge)))) (deftype snow-bunny-retreat-work (structure) - ((found-best basic) - (using-jump-event? basic) - (best-travel-dist float) - (best-dest vector :inline) - (away-vec vector :inline) - ) - ) - + ((found-best basic) + (using-jump-event? basic) + (best-travel-dist float) + (best-dest vector :inline) + (away-vec vector :inline))) (defmethod nav-enemy-method-55 ((this snow-bunny)) (set! (-> this using-jump-event?) #f) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((s5-0 (new 'stack-no-clear 'snow-bunny-retreat-work))) (set! (-> s5-0 found-best) #f) - (let ((s4-0 (-> this nav))) - (nav-control-method-27 s4-0) - (nav-control-method-28 s4-0 (the-as collide-kind -1)) - ) + (let ((s4-0 (-> this nav))) (nav-control-method-27 s4-0) (nav-control-method-28 s4-0 (the-as collide-kind -1))) (let ((s4-1 (target-pos 0))) (vector-! (-> s5-0 away-vec) (-> this collide-info trans) s4-1) (set! (-> s5-0 away-vec y) 0.0) (vector-normalize! (-> s5-0 away-vec) 86016.0) (let* ((s3-0 (quaternion-y-angle (-> *target* control quat))) (a0-9 (atan (-> s5-0 away-vec x) (-> s5-0 away-vec z))) - (s3-1 (deg- a0-9 s3-0)) - ) + (s3-1 (deg- a0-9 s3-0))) (dotimes (s2-0 2) (cond ((zero? s2-0) (let ((f30-0 0.0)) - (if (< (fabs s3-1) 16384.0) - (set! f30-0 (if (>= s3-1 0.0) - 4551.1113 - -4551.1113 - ) - ) - ) + (if (< (fabs s3-1) 16384.0) (set! f30-0 (if (>= s3-1 0.0) 4551.1113 -4551.1113))) (let ((f0-7 (+ f30-0 (rand-vu-float-range -6371.5557 6371.5557))) - (s1-0 (new 'stack-no-clear 'vector)) - ) + (s1-0 (new 'stack-no-clear 'vector))) (vector-rotate-around-y! s1-0 (-> s5-0 away-vec) f0-7) - (vector+! (-> this final-dest) s4-1 s1-0) - ) - ) - ) + (vector+! (-> this final-dest) s4-1 s1-0)))) ((= s2-0 1) (let* ((f30-1 32768.0) - (f0-10 (if (>= s3-1 0.0) - (- f30-1 (rand-vu-float-range 10012.444 15473.777)) - (+ f30-1 (rand-vu-float-range 10012.444 15473.777)) - ) - ) - (s1-1 (new 'stack-no-clear 'vector)) - ) + (f0-10 (if (>= s3-1 0.0) (- f30-1 (rand-vu-float-range 10012.444 15473.777)) (+ f30-1 (rand-vu-float-range 10012.444 15473.777)))) + (s1-1 (new 'stack-no-clear 'vector))) (vector-rotate-around-y! s1-1 (-> s5-0 away-vec) f0-10) - (vector+! (-> this final-dest) s4-1 s1-1) - ) - ) - ) + (vector+! (-> this final-dest) s4-1 s1-1)))) (let* ((s1-3 (vector-! (new 'stack-no-clear 'vector) (-> this final-dest) (-> this collide-info trans))) - (f0-12 (vector-length s1-3)) - ) + (f0-12 (vector-length s1-3))) (let ((f1-4 (* 0.000011625744 f0-12))) (cond - ((< 1.0 f1-4) - (set! f1-4 1.0) - ) - ((< f1-4 0.4) - (set! f1-4 0.4) - ) - ) - (set! (-> this base-hop-dist) (+ 16384.0 (* 20480.0 f1-4))) - ) + ((< 1.0 f1-4) (set! f1-4 1.0)) + ((< f1-4 0.4) (set! f1-4 0.4))) + (set! (-> this base-hop-dist) (+ 16384.0 (* 20480.0 f1-4)))) (when (< (-> this base-hop-dist) f0-12) (vector-normalize! s1-3 (-> this base-hop-dist)) - (vector+! (-> this final-dest) (-> this collide-info trans) s1-3) - ) - ) + (vector+! (-> this final-dest) (-> this collide-info trans) s1-3))) (set! (-> this nav target-pos quad) (-> this final-dest quad)) (set! (-> this got-jump-event?) #f) (nav-control-method-13 (-> this nav) (-> this nav target-pos) (-> this nav old-travel)) @@ -894,178 +630,128 @@ (let ((s1-4 (new 'stack-no-clear 'nav-gap-info))) (when (nav-control-method-12 (-> this nav) s1-4) (set! (-> this got-jump-event?) #t) - (set! (-> this jump-event-dest quad) (-> s1-4 dest quad)) - ) - ) - ) + (set! (-> this jump-event-dest quad) (-> s1-4 dest quad))))) (cond ((-> this got-jump-event?) (when (zero? s2-0) (set! (-> this nav target-pos quad) (-> this jump-event-dest quad)) (set! (-> this using-jump-event?) #t) - (return #t) - ) - ) + (return #t))) (else - (let* ((s0-0 (-> this nav travel)) - (f30-2 (vector-length s0-0)) - ) - (when (>= f30-2 409.6) - (let ((s1-5 (-> this nav target-pos))) - (vector+! s1-5 (-> this collide-info trans) s0-0) - (when (nav-enemy-method-51 this s1-5 s1-5) - (if (>= f30-2 (+ -409.6 (-> this base-hop-dist))) - (return #t) - ) - (when (or (not (-> s5-0 found-best)) (< (-> s5-0 best-travel-dist) f30-2)) - (set! (-> s5-0 found-best) #t) - (set! (-> s5-0 best-travel-dist) f30-2) - (set! (-> s5-0 best-dest quad) (-> s1-5 quad)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (let* ((s0-0 (-> this nav travel)) + (f30-2 (vector-length s0-0))) + (when (>= f30-2 409.6) + (let ((s1-5 (-> this nav target-pos))) + (vector+! s1-5 (-> this collide-info trans) s0-0) + (when (nav-enemy-method-51 this s1-5 s1-5) + (if (>= f30-2 (+ -409.6 (-> this base-hop-dist))) (return #t)) + (when (or (not (-> s5-0 found-best)) (< (-> s5-0 best-travel-dist) f30-2)) + (set! (-> s5-0 found-best) #t) + (set! (-> s5-0 best-travel-dist) f30-2) + (set! (-> s5-0 best-dest quad) (-> s1-5 quad)))))))))))) (when (-> s5-0 found-best) (set! (-> this nav target-pos quad) (-> s5-0 best-dest quad)) (vector-! (-> this nav travel) (-> s5-0 best-dest) (-> this collide-info trans)) - (return #t) - ) - ) - #f - ) + (return #t))) + #f) (defstate snow-bunny-retreat-hop (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (if (not *target*) - (go-virtual nav-enemy-patrol) - ) - (let ((v1-8 (>= 73728.0 (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans))))) - (when (or (-> self should-retreat?) (and v1-8 (logtest? (-> *target* state-flags) (state-flags dangerous)))) - (set! (-> self retreat-timeout-time) (+ (current-time) (the int (* 300.0 (-> self retreat-timeout))))) - (set! (-> self should-retreat?) #f) - ) - (when (or (>= (current-time) (-> self retreat-timeout-time)) (not v1-8)) - (if (or (not *target*) - (logtest? (-> *target* state-flags) (state-flags do-not-notice)) - (not (target-in-range? self (-> self nav-info stop-chase-distance))) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (if (not *target*) (go-virtual nav-enemy-patrol)) + (let ((v1-8 (>= 73728.0 (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans))))) + (when (or (-> self should-retreat?) (and v1-8 (logtest? (-> *target* state-flags) (state-flags dangerous)))) + (set! (-> self retreat-timeout-time) (+ (current-time) (the int (* 300.0 (-> self retreat-timeout))))) + (set! (-> self should-retreat?) #f)) + (when (or (>= (current-time) (-> self retreat-timeout-time)) (not v1-8)) + (if (or (not *target*) + (logtest? (-> *target* state-flags) (state-flags do-not-notice)) + (not (target-in-range? self (-> self nav-info stop-chase-distance)))) (go-virtual nav-enemy-patrol) - (go-virtual snow-bunny-chase-hop) - ) - ) - ) - (when (not (nav-enemy-method-55 self)) - (set-vector! (-> self nav travel) 0.0 0.0 0.0 1.0) - (set! (-> self nav target-pos quad) (-> self collide-info trans quad)) - ) - (set-jump-height-factor! self 2) - (snow-bunny-initialize-jump (-> self nav target-pos)) - (snow-bunny-method-76 self #t) - (set! (-> self rotate-speed) 728177.75) - (set! (-> self turn-time) (seconds 0.1)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - ) - :trans (behavior () - (nav-enemy-method-58 self) - ) - :code (behavior () - (snow-bunny-execute-jump) - (if (-> self using-jump-event?) - (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) - ) - (go-virtual snow-bunny-retreat-hop) - ) - :post nav-enemy-jump-post - ) + (go-virtual snow-bunny-chase-hop)))) + (when (not (nav-enemy-method-55 self)) + (set-vector! (-> self nav travel) 0.0 0.0 0.0 1.0) + (set! (-> self nav target-pos quad) (-> self collide-info trans quad))) + (set-jump-height-factor! self 2) + (snow-bunny-initialize-jump (-> self nav target-pos)) + (snow-bunny-method-76 self #t) + (set! (-> self rotate-speed) 728177.75) + (set! (-> self turn-time) (seconds 0.1))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1))) + :trans + (behavior () + (nav-enemy-method-58 self)) + :code + (behavior () + (snow-bunny-execute-jump) + (if (-> self using-jump-event?) + (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) + (go-virtual snow-bunny-retreat-hop)) + :post nav-enemy-jump-post) (defstate snow-bunny-lunge (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (snow-bunny-method-76 self #f) - ) - :trans (behavior () - (if (not *target*) - (go-virtual nav-enemy-patrol) - ) - (nav-enemy-method-58 self) - (let ((f0-0 (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)))) - (if (< 73728.0 f0-0) - (go-virtual snow-bunny-chase-hop) - ) - ) - (if (not (logtest? (-> *target* state-flags) (state-flags dangerous))) - (go-virtual snow-bunny-chase-hop) - ) - (if (and (logtest? (-> *target* state-flags) (state-flags dangerous)) - (not (target-in-range? self (-> self nav-info notice-distance))) - ) - (go-virtual snow-bunny-retreat-hop) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (snow-bunny-method-76 self #f)) + :trans + (behavior () + (if (not *target*) (go-virtual nav-enemy-patrol)) + (nav-enemy-method-58 self) + (let ((f0-0 (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)))) + (if (< 73728.0 f0-0) (go-virtual snow-bunny-chase-hop))) + (if (not (logtest? (-> *target* state-flags) (state-flags dangerous))) (go-virtual snow-bunny-chase-hop)) + (if (and (logtest? (-> *target* state-flags) (state-flags dangerous)) + (not (target-in-range? self (-> self nav-info notice-distance)))) + (go-virtual snow-bunny-retreat-hop))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (loop + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post nav-enemy-simple-post) (defstate snow-bunny-attack (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set-vector! (-> self collide-info transv) 0.0 0.0 0.0 1.0) - (snow-bunny-method-76 self #t) - ) - :trans (behavior () - (when *target* - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) - (seek-toward-heading-vec! (-> self collide-info) gp-0 524288.0 (seconds 0.1)) - ) - ) - (+! (-> self collide-info transv y) (* -546119.7 (seconds-per-frame))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #f - #f - #f - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self attack-anim)) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (until (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - (suspend) - ) - (go-virtual snow-bunny-retreat-hop) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set-vector! (-> self collide-info transv) 0.0 0.0 0.0 1.0) + (snow-bunny-method-76 self #t)) + :trans + (behavior () + (when *target* + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) + (seek-toward-heading-vec! (-> self collide-info) gp-0 524288.0 (seconds 0.1)))) + (+! (-> self collide-info transv y) (* -546119.7 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #f + #f + #f)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! (-> self draw art-group data (-> self attack-anim)) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (until (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) + (suspend)) + (go-virtual snow-bunny-retreat-hop)) + :post nav-enemy-simple-post) diff --git a/goal_src/jak1/levels/snow/snow-flutflut-obs.gc b/goal_src/jak1/levels/snow/snow-flutflut-obs.gc index d8be4598c5..6e4428d8ca 100644 --- a/goal_src/jak1/levels/snow/snow-flutflut-obs.gc +++ b/goal_src/jak1/levels/snow/snow-flutflut-obs.gc @@ -1,356 +1,303 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/plat-eco.gc") (require "engine/common-obs/ticky.gc") -;; name: snow-flutflut-obs.gc -;; name in dgo: snow-flutflut-obs -;; dgos: L1, SNO - - ;; DECOMP BEGINS (deftype flutflut-plat (plat) - ((has-path? symbol) - (plat-type int32) - (rise-time int32) - (fall-time int32) - (part-ry float) - (sync-starting-val float) - (flutflut-button entity-actor) - (appear-trans-top vector :inline) - (appear-trans-bottom vector :inline) - (appear-quat-top quaternion :inline) - (appear-quat-bottom quaternion :inline) - (start-trans vector :inline) - ) + ((has-path? symbol) + (plat-type int32) + (rise-time int32) + (fall-time int32) + (part-ry float) + (sync-starting-val float) + (flutflut-button entity-actor) + (appear-trans-top vector :inline) + (appear-trans-bottom vector :inline) + (appear-quat-top quaternion :inline) + (appear-quat-bottom quaternion :inline) + (start-trans vector :inline)) (:states - elevator-idle-at-cave - elevator-idle-at-fort - elevator-travel-to-cave - elevator-travel-to-fort - flutflut-plat-appear - flutflut-plat-hidden-idle - flutflut-plat-hide - ) - ) - + elevator-idle-at-cave + elevator-idle-at-fort + elevator-travel-to-cave + elevator-travel-to-fort + flutflut-plat-appear + flutflut-plat-hidden-idle + flutflut-plat-hide)) (deftype snow-button (process-drawable) - ((root collide-shape-moving :override) - (wiggled? symbol) - (trying-for-fuel-cell? symbol) - (timeout time-frame) - (delay-til-wiggle time-frame) - (prev-button entity-actor) - (ticker ticky :inline) - ) + ((root collide-shape-moving :override) + (wiggled? symbol) + (trying-for-fuel-cell? symbol) + (timeout time-frame) + (delay-til-wiggle time-frame) + (prev-button entity-actor) + (ticker ticky :inline)) (:states - snow-button-activate - snow-button-deactivate - snow-button-up-idle - ) - ) - - -(defskelgroup *flutflut-plat-small-sg* flutflut-plat-small flutflut-plat-small-lod0-jg flutflut-plat-small-idle-ja - ((flutflut-plat-small-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -0.5 0 4) - ) - -(defskelgroup *flutflut-plat-med-sg* flutflut-plat-med flutflut-plat-med-lod0-jg flutflut-plat-med-idle-ja - ((flutflut-plat-med-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -1 0 6.75) - ) - -(defskelgroup *flutflut-plat-large-sg* flutflut-plat-large flutflut-plat-large-lod0-jg flutflut-plat-large-idle-ja - ((flutflut-plat-large-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 9) - ) - -(defskelgroup *snow-button-sg* snow-button snow-button-lod0-jg -1 - ((snow-button-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4.3) - ) + snow-button-activate + snow-button-deactivate + snow-button-up-idle)) + +(defskelgroup *flutflut-plat-small-sg* + flutflut-plat-small + flutflut-plat-small-lod0-jg + flutflut-plat-small-idle-ja + ((flutflut-plat-small-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -0.5 0 4)) + +(defskelgroup *flutflut-plat-med-sg* + flutflut-plat-med + flutflut-plat-med-lod0-jg + flutflut-plat-med-idle-ja + ((flutflut-plat-med-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -1 0 6.75)) + +(defskelgroup *flutflut-plat-large-sg* + flutflut-plat-large + flutflut-plat-large-lod0-jg + flutflut-plat-large-idle-ja + ((flutflut-plat-large-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 9)) + +(defskelgroup *snow-button-sg* + snow-button + snow-button-lod0-jg + -1 + ((snow-button-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4.3)) (defpartgroup group-flutflut-plat-small :id 516 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2087 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 2088 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 2087 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 2088 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 2087 - :init-specs ((:num 1.5) - (:x (meters -2) (meters 4)) - (:y (meters -1)) - (:z (meters -2) (meters 4)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters -0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:num 1.5) + (:x (meters -2) (meters 4)) + (:y (meters -1)) + (:z (meters -2) (meters 4)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters -0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:rotate-y (degrees 45)))) (defpart 2088 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:x (meters -3) (meters 6)) - (:y (meters -1.25)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters -0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:x (meters -3) (meters 6)) + (:y (meters -1.25)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters -0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 45)))) (defpartgroup group-flutflut-plat-med :id 517 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2089 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 2090 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 2089 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 2090 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 2089 - :init-specs ((:num 3.0) - (:y (meters -2.5)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters 0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1) (meters 3)) - ) - ) + :init-specs + ((:num 3.0) + (:y (meters -2.5)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters 0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1) (meters 3)))) (defpart 2090 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters -2.25)) - (:scale-x (meters 3) (meters 2)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1) (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters -2.25)) + (:scale-x (meters 3) (meters 2)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1) (meters 3)))) (defpartgroup group-flutflut-plat-large :id 518 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2091 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 2092 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 2091 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 2092 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 2091 - :init-specs ((:num 4.0) - (:x (meters -2) (meters 4)) - (:y (meters -1.5)) - (:z (meters -6) (meters 12)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters -0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:num 4.0) + (:x (meters -2) (meters 4)) + (:y (meters -1.5)) + (:z (meters -6) (meters 12)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters -0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:rotate-y (degrees 30)))) (defpart 2092 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:x (meters -2) (meters 4)) - (:y (meters -1.25)) - (:z (meters -6) (meters 12)) - (:scale-x (meters 3) (meters 2)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters -0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:x (meters -2) (meters 4)) + (:y (meters -1.25)) + (:z (meters -6) (meters 12)) + (:scale-x (meters 3) (meters 2)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters -0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 30)))) (defstate snow-button-up-idle (snow-button) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-2 object)) - (case message - (('touch 'attack 'bonk) - (when (and (= (-> proc type) target) - (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)) - (>= 10649.6 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - ) - (close-specific-task! (game-task snow-ball) (task-status need-hint)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go snow-button-activate) - ) - ) - (('query) - (return #f) - v0-2 - ) - ) - ) - :code (behavior () - (ja :group! snow-button-going-down-ja :num! min) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-2 object)) + (case message + (('touch 'attack 'bonk) + (when (and (= (-> proc type) target) + (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)) + (>= 10649.6 (vector-vector-xz-distance (-> self root trans) (target-pos 0)))) + (close-specific-task! (game-task snow-ball) (task-status need-hint)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-button-activate))) + (('query) (return #f) v0-2))) + :code + (behavior () + (ja :group! snow-button-going-down-ja :num! min) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate snow-button-activate (snow-button) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('untrigger) - (go snow-button-deactivate) - ) - (('query) - (return #t) - v0-0 - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self wiggled?) #f) - ;; og:preserve-this PAL patch here - (set! (-> self trying-for-fuel-cell?) (not (task-complete? *game-info* (game-task snow-ball)))) - (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) - ) - :trans (behavior () - (if (completed? (-> self ticker)) - (go snow-button-deactivate) - ) - (when (and (-> self trying-for-fuel-cell?) (task-complete? *game-info* (game-task snow-ball))) - (set! (-> self trying-for-fuel-cell?) #f) - (go snow-button-deactivate) - ) - ;; og:preserve-this PAL patch here - (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) - ) - :code (behavior () - (sound-play "prec-button1" :pitch -1) - (ja-no-eval :group! snow-button-going-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('untrigger) (go snow-button-deactivate)) + (('query) (return #t) v0-0))) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self wiggled?) #f) + ;; og:preserve-this PAL patch here + (set! (-> self trying-for-fuel-cell?) (not (task-complete? *game-info* (game-task snow-ball)))) + (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)) + :trans + (behavior () + (if (completed? (-> self ticker)) (go snow-button-deactivate)) + (when (and (-> self trying-for-fuel-cell?) (task-complete? *game-info* (game-task snow-ball))) + (set! (-> self trying-for-fuel-cell?) #f) + (go snow-button-deactivate)) + ;; og:preserve-this PAL patch here + (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)) + :code + (behavior () + (sound-play "prec-button1" :pitch -1) + (ja-no-eval :group! snow-button-going-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self mask) (process-mask sleep-code)) (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - :post rider-post - ) + 0) + :post rider-post) (defstate snow-button-deactivate (snow-button) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 symbol)) - (case message - (('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) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 symbol)) + (case message + (('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)) :trans rider-trans - :code (behavior () - (send-to-all-after (-> self link) 'untrigger) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.6)) - (suspend) - ) - (ja-no-eval :group! snow-button-going-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go snow-button-up-idle) - ) - :post rider-post - ) + :code + (behavior () + (send-to-all-after (-> self link) 'untrigger) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.6)) + (suspend)) + (ja-no-eval :group! snow-button-going-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go snow-button-up-idle)) + :post rider-post) (defmethod init-from-entity! ((this snow-button) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -364,8 +311,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -373,8 +319,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 11468.8) - (append-prim s3-0 s2-1) - ) + (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) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -382,13 +327,10 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) - (append-prim s3-0 s2-2) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this link) (new 'process 'actor-link-info this)) (initialize-skeleton this *snow-button-sg* '()) @@ -396,501 +338,331 @@ (set! (-> this timeout) (the-as time-frame (the int (* 300.0 (res-lump-float arg0 'timeout :default 10.0))))) (set! (-> this delay-til-wiggle) (+ (-> this timeout) (seconds -0.4))) (if (> (entity-actor-count arg0 'alt-actor) 0) - (set! (-> this prev-button) (entity-actor-lookup arg0 'alt-actor 0)) - (set! (-> this prev-button) #f) - ) + (set! (-> this prev-button) (entity-actor-lookup arg0 'alt-actor 0)) + (set! (-> this prev-button) #f)) ;; og:preserve-this PAL patch here (set! (-> this trying-for-fuel-cell?) (not (task-complete? *game-info* (game-task snow-ball)))) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (transform-post) (go snow-button-up-idle) - (none) - ) + (none)) (defmethod baseplat-method-26 ((this flutflut-plat)) - (let ((t9-0 (method-of-type plat baseplat-method-26))) - (t9-0 this) - ) - (if (zero? (-> this link)) - (set! (-> this link) (new 'process 'actor-link-info this)) - ) + (let ((t9-0 (method-of-type plat baseplat-method-26))) (t9-0 this)) + (if (zero? (-> this link)) (set! (-> this link) (new 'process 'actor-link-info this))) (set! (-> this sound-id) (new-sound-id)) (set! (-> this plat-type) (res-lump-value (-> this entity) 'mode int)) (set! (-> this flutflut-button) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (let ((f0-0 (res-lump-float (-> this entity) 'rotoffset))) - (if (!= f0-0 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-0) - ) - ) + (if (!= f0-0 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-0))) (set! (-> this has-path?) - (and (not (logtest? (-> this path flags) (path-control-flag not-found))) (> (-> this sync period) 0)) - ) + (and (not (logtest? (-> this path flags) (path-control-flag not-found))) (> (-> this sync period) 0))) (when (nonzero? (-> this plat-type)) (cond ((-> this has-path?) (set! (-> this sync-starting-val) (get-phase-offset (-> this sync))) (sync-now! (-> this sync) (-> this sync-starting-val)) - (eval-path-curve! - (-> this path) - (-> this appear-trans-top) - (if (logtest? (-> this fact options) (fact-options wrap-phase)) - (get-current-phase (-> this sync)) - (get-current-phase-with-mirror (-> this sync)) - ) - 'interp - ) - ) - (else - (set! (-> this appear-trans-top quad) (-> this root trans quad)) - ) - ) + (eval-path-curve! (-> this path) + (-> this appear-trans-top) + (if (logtest? (-> this fact options) (fact-options wrap-phase)) + (get-current-phase (-> this sync)) + (get-current-phase-with-mirror (-> this sync))) + 'interp)) + (else (set! (-> this appear-trans-top quad) (-> this root trans quad)))) (set! (-> this appear-trans-bottom quad) (-> this appear-trans-top quad)) (+! (-> this appear-trans-bottom y) -286720.0) (quaternion-copy! (-> this appear-quat-top) (-> this root quat)) (let ((v1-33 (res-lump-value (-> this entity) 'extra-id uint128))) - (set! (-> this rise-time) (the int (* 300.0 (+ 0.6 (* 0.15 (the float v1-33)))))) - ) - (set! (-> this fall-time) 180) - ) - (none) - ) + (set! (-> this rise-time) (the int (* 300.0 (+ 0.6 (* 0.15 (the float v1-33))))))) + (set! (-> this fall-time) 180)) + (none)) (defmethod get-lit-skel ((this flutflut-plat)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (return (the-as skeleton-group #t)) - ) + (return (the-as skeleton-group #t))) (when (task-complete? *game-info* (-> this entity extra perm task)) (process-entity-status! this (entity-perm-status complete) #t) - (return (the-as skeleton-group #t)) - ) - (the-as skeleton-group #f) - ) + (return (the-as skeleton-group #t))) + (the-as skeleton-group #f)) (defstate plat-startup (flutflut-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (when (or (!= (-> self plat-type) 1) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (go flutflut-plat-appear) - ) - ) - ) - ) - :code (behavior ((arg0 plat)) - (cond - ((and (= (-> self plat-type) 1) - (-> self entity) - (logtest? (-> self entity extra perm status) (entity-perm-status complete)) - ) - (set! (-> self basetrans quad) (-> self appear-trans-top quad)) - (go elevator-idle-at-cave) - ) - ((or (= (-> self plat-type) 1) (= (-> self plat-type) 2)) - (let* ((v1-11 (-> self flutflut-button)) - (a0-10 (if v1-11 - (-> v1-11 extra process) - ) - ) - ) - (if (and a0-10 (send-event a0-10 'query)) - (go flutflut-plat-appear) - (go flutflut-plat-hidden-idle) - ) - ) - ) - (else - (let ((t9-4 (-> (method-of-type plat plat-startup) code))) - (if t9-4 - ((the-as (function none :behavior plat) t9-4)) - ) - ) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (when (or (!= (-> self plat-type) 1) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))) + (logclear! (-> self mask) (process-mask actor-pause)) + (go flutflut-plat-appear))))) + :code + (behavior ((arg0 plat)) + (cond + ((and (= (-> self plat-type) 1) + (-> self entity) + (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (set! (-> self basetrans quad) (-> self appear-trans-top quad)) + (go elevator-idle-at-cave)) + ((or (= (-> self plat-type) 1) (= (-> self plat-type) 2)) + (let* ((v1-11 (-> self flutflut-button)) + (a0-10 (if v1-11 (-> v1-11 extra process)))) + (if (and a0-10 (send-event a0-10 'query)) (go flutflut-plat-appear) (go flutflut-plat-hidden-idle)))) + (else + (let ((t9-4 (-> (method-of-type plat plat-startup) code))) (if t9-4 ((the-as (function none :behavior plat) t9-4)))))))) (defstate flutflut-plat-hidden-idle (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('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) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (clear-collide-with-as (-> self root)) - (set! (-> self root trans quad) (-> self appear-trans-top quad)) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('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))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (clear-collide-with-as (-> self root)) + (set! (-> self root trans quad) (-> self appear-trans-top quad)) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate flutflut-plat-appear (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status hidden)) - (restore-collide-with-as (-> self root)) - (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) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (plat-trans) - (let* ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> 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 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) - (baseplat-method-22 self) - (rider-post) - (cond - ((= (-> self plat-type) 1) - (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self draw status) (draw-status hidden)) + (restore-collide-with-as (-> self root)) + (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))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (plat-trans) + (let* ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> 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 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) + (baseplat-method-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) - ) - ) - ) - ) - (baseplat-method-20 self) - ) + (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))))) + (baseplat-method-20 self)) :code anim-loop - :post rider-post - ) + :post rider-post) (defstate plat-idle (flutflut-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('untrigger) - (go flutflut-plat-hide) - ) - ) - ) - :enter (behavior () - (let ((t9-0 (-> (method-of-type plat plat-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (let ((t9-0 (-> (method-of-type plat plat-idle) exit))) - (if t9-0 - (t9-0) - ) - ) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type plat plat-idle) trans))) - (if t9-0 - (t9-0) - ) - ) - (if (and (= (-> self plat-type) 1) (get-lit-skel self)) - (go elevator-idle-at-cave) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('untrigger) (go flutflut-plat-hide)))) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-idle) enter))) (if t9-0 (t9-0))) + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-idle) exit))) (if t9-0 (t9-0)))) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-idle) trans))) (if t9-0 (t9-0))) + (if (and (= (-> self plat-type) 1) (get-lit-skel self)) (go elevator-idle-at-cave)))) (defstate plat-path-active (flutflut-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('untrigger) - (go flutflut-plat-hide) - ) - ) - ) - :enter (behavior ((arg0 plat)) - (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) - (if t9-0 - (t9-0 arg0) - ) - ) - (if (or (!= (-> self plat-type) 1) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - ) - :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) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('untrigger) (go flutflut-plat-hide)))) + :enter + (behavior ((arg0 plat)) + (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) (if t9-0 (t9-0 arg0))) + (if (or (!= (-> self plat-type) 1) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))) + (logclear! (-> self mask) (process-mask actor-pause)))) + :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))))) (defstate flutflut-plat-hide (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self root root-prim prim-core action) (collide-action rider-plat-sticky)) - (set! (-> self start-trans quad) (-> self root 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) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self root root-prim prim-core action) (collide-action rider-plat-sticky)) - ) - :trans (behavior () - (plat-trans) - (let* ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> 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 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) - ) - ) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self root root-prim prim-core action) (collide-action rider-plat-sticky)) + (set! (-> self start-trans quad) (-> self root 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))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (logior! (-> self root root-prim prim-core action) (collide-action rider-plat-sticky))) + :trans + (behavior () + (plat-trans) + (let* ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> 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 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))) + (baseplat-method-20 self)) :code anim-loop - :post rider-post - ) + :post rider-post) (defstate elevator-idle-at-cave (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('bounce) - (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (baseplat-method-22 self) - ) - ) - (('ridden) - (if (or (not *target*) (not (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) - (go elevator-travel-to-fort) - ) - ) - ) - ) - :enter (behavior () - (set! (-> self path-pos) 0.0) - (eval-path-curve! (-> self path) (-> self basetrans) 0.0 'interp) - ) - :trans (behavior () - (plat-trans) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('bounce) + (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (baseplat-method-22 self))) + (('ridden) + (if (or (not *target*) (not (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) + (go elevator-travel-to-fort))))) + :enter + (behavior () + (set! (-> self path-pos) 0.0) + (eval-path-curve! (-> self path) (-> self basetrans) 0.0 'interp)) + :trans + (behavior () + (plat-trans) + (baseplat-method-20 self)) :code anim-loop - :post plat-post - ) + :post plat-post) (defstate elevator-travel-to-fort (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - ) - ) - :trans (behavior () - (when (= (-> self path-pos) 1.0) - (baseplat-method-22 self) - (go elevator-idle-at-fort) - ) - ;; og:preserve-this PAL patch here - (seek! (-> self path-pos) 1.0 (* 0.16 (seconds-per-frame))) - (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) - (plat-trans) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)))) + :trans + (behavior () + (when (= (-> self path-pos) 1.0) + (baseplat-method-22 self) + (go elevator-idle-at-fort)) + ;; og:preserve-this PAL patch here + (seek! (-> self path-pos) 1.0 (* 0.16 (seconds-per-frame))) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (plat-trans) + (baseplat-method-20 self)) :code anim-loop - :post plat-post - ) + :post plat-post) (defstate elevator-idle-at-fort (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - ) - ) - :enter (behavior () - (set! (-> self path-pos) 1.0) - (eval-path-curve! (-> self path) (-> self basetrans) 1.0 'interp) - ) - :trans (behavior () - (when *target* - (if (and (>= 798720.0 (-> (target-pos 0) y)) - (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - ) - (go elevator-travel-to-cave) - ) - ) - (plat-trans) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)))) + :enter + (behavior () + (set! (-> self path-pos) 1.0) + (eval-path-curve! (-> self path) (-> self basetrans) 1.0 'interp)) + :trans + (behavior () + (when *target* + (if (and (>= 798720.0 (-> (target-pos 0) y)) + (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))))) + (go elevator-travel-to-cave))) + (plat-trans) + (baseplat-method-20 self)) :code anim-loop - :post plat-post - ) + :post plat-post) (defstate elevator-travel-to-cave (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - ) - ) - :trans (behavior () - (when (= (-> self path-pos) 0.0) - (baseplat-method-22 self) - (go elevator-idle-at-cave) - ) - ;; og:preserve-this PAL patch here - (seek! (-> self path-pos) 0.0 (* 0.16 (seconds-per-frame))) - (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) - (plat-trans) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)))) + :trans + (behavior () + (when (= (-> self path-pos) 0.0) + (baseplat-method-22 self) + (go elevator-idle-at-cave)) + ;; og:preserve-this PAL patch here + (seek! (-> self path-pos) 0.0 (* 0.16 (seconds-per-frame))) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (plat-trans) + (baseplat-method-20 self)) :code anim-loop - :post plat-post - ) - -(deftype flutflut-plat-small (flutflut-plat) - () - ) - - -(deftype flutflut-plat-med (flutflut-plat) - () - ) + :post plat-post) +(deftype flutflut-plat-small (flutflut-plat) ()) -(deftype flutflut-plat-large (flutflut-plat) - () - ) +(deftype flutflut-plat-med (flutflut-plat) ()) +(deftype flutflut-plat-large (flutflut-plat) ()) (defmethod get-unlit-skel ((this flutflut-plat-small)) - *flutflut-plat-small-sg* - ) + *flutflut-plat-small-sg*) (defmethod baseplat-method-25 ((this flutflut-plat-small)) (let ((v0-0 (create-launch-control (-> *part-group-id-table* 516) this))) (set! (-> this part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) + (the-as sparticle-launch-group v0-0))) (defmethod baseplat-method-20 ((this flutflut-plat-small)) (when (nonzero? (-> this part)) (set! (-> *part-id-table* 2087 init-specs 12 initial-valuef) (-> this part-ry)) (set! (-> *part-id-table* 2088 init-specs 17 initial-valuef) (-> this part-ry)) - (spawn (-> this part) (-> this root trans)) - ) - (none) - ) + (spawn (-> this part) (-> this root trans))) + (none)) (defmethod baseplat-method-26 ((this flutflut-plat-small)) - (let ((t9-0 (method-of-type flutflut-plat baseplat-method-26))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type flutflut-plat baseplat-method-26))) (t9-0 this)) (set! (-> this part-ry) (+ 16384.0 (quaternion-y-angle (-> this root quat)))) - (none) - ) + (none)) (defmethod baseplat-method-24 ((this flutflut-plat-small)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -899,34 +671,26 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod get-unlit-skel ((this flutflut-plat-med)) - *flutflut-plat-med-sg* - ) + *flutflut-plat-med-sg*) (defmethod baseplat-method-25 ((this flutflut-plat-med)) (let ((v0-0 (create-launch-control (-> *part-group-id-table* 517) this))) (set! (-> this part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) + (the-as sparticle-launch-group v0-0))) (defmethod baseplat-method-24 ((this flutflut-plat-med)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -935,51 +699,38 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod get-unlit-skel ((this flutflut-plat-large)) - *flutflut-plat-large-sg* - ) + *flutflut-plat-large-sg*) (defmethod baseplat-method-25 ((this flutflut-plat-large)) (let ((v0-0 (create-launch-control (-> *part-group-id-table* 518) this))) (set! (-> this part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) + (the-as sparticle-launch-group v0-0))) (defmethod baseplat-method-20 ((this flutflut-plat-large)) (when (nonzero? (-> this part)) (set! (-> *part-id-table* 2091 init-specs 12 initial-valuef) (-> this part-ry)) (set! (-> *part-id-table* 2092 init-specs 17 initial-valuef) (-> this part-ry)) - (spawn (-> this part) (-> this root trans)) - ) - (none) - ) + (spawn (-> this part) (-> this root trans))) + (none)) (defmethod baseplat-method-26 ((this flutflut-plat-large)) - (let ((t9-0 (method-of-type flutflut-plat baseplat-method-26))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type flutflut-plat baseplat-method-26))) (t9-0 this)) (set! (-> this part-ry) (+ 16384.0 (quaternion-y-angle (-> this root quat)))) - (none) - ) + (none)) (defmethod baseplat-method-24 ((this flutflut-plat-large)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -988,12 +739,9 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/snow/snow-obs.gc b/goal_src/jak1/levels/snow/snow-obs.gc index 0b8eb2b8c2..8c86148af1 100644 --- a/goal_src/jak1/levels/snow/snow-obs.gc +++ b/goal_src/jak1/levels/snow/snow-obs.gc @@ -1,435 +1,331 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/game/task/task-control.gc") (require "engine/common-obs/collectables.gc") (require "engine/camera/pov-camera-h.gc") (require "engine/util/sync-info.gc") (require "engine/common-obs/baseplat.gc") -;; name: snow-obs.gc -;; name in dgo: snow-obs -;; dgos: L1, SNO - ;; DECOMP BEGINS (deftype snowcam (pov-camera) - ((seq uint64) - ) - ) + ((seq uint64))) - -(defskelgroup *snowcam-sg* snowcam snowcam-lod0-jg -1 - ((snowcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *snowcam-sg* + snowcam + snowcam-lod0-jg + -1 + ((snowcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defmethod set-stack-size! ((this snowcam)) (stack-size-set! (-> this main-thread) 512) - (none) - ) + (none)) (defstate pov-camera-playing (snowcam) :virtual #t - :code (behavior () - (let ((v1-0 (-> self seq))) - (cond - ((zero? v1-0) - (ja-no-eval :group! snowcam-gearstart-ja :num! (seek! max 0.2) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.2)) - ) - (ja-no-eval :group! snowcam-gate-ja :num! (seek! max 0.25) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.25)) - ) - (ja-no-eval :group! snowcam-gearend-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 4.5)) + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (ja-no-eval :group! snowcam-gearstart-ja :num! (seek! max 0.2) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - ) - ((= v1-0 1) - (let ((gp-2 - (ppointer->handle - (process-spawn - fuel-cell - :init fuel-cell-init-as-clone - (process->handle self) - (-> self entity extra perm task) - :to (ppointer->process (-> self parent)) - ) - ) - ) - ) - (add-setting! 'music-volume 'abs 0.0 0) - (add-setting! 'sfx-volume 'rel 50.0 0) - (ja-play-spooled-anim - (the-as spool-anim (-> self anim-name)) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (remove-setting! 'music-volume) - (remove-setting! 'sfx-volume) - (let ((a0-21 (handle->process gp-2))) - (if a0-21 - (send-event a0-21 'stop-cloning) - ) - ) - ) - ) - ((= v1-0 2) - (ja-no-eval :group! snowcam-eggtop-activating-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (handle->process (-> self notify-handle)) 'notify 'cut) - (ja-no-eval :group! snowcam-ecovent-activating-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (suspend) - 0 - ) - ) - ) - (go-virtual pov-camera-done-playing) - ) - ) + (ja :num! (seek! max 0.2))) + (ja-no-eval :group! snowcam-gate-ja :num! (seek! max 0.25) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.25))) + (ja-no-eval :group! snowcam-gearend-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 4.5)) (suspend)))) + ((= v1-0 1) + (let ((gp-2 (ppointer->handle (process-spawn fuel-cell + :init + fuel-cell-init-as-clone + (process->handle self) + (-> self entity extra perm task) + :to + (ppointer->process (-> self parent)))))) + (add-setting! 'music-volume 'abs 0.0 0) + (add-setting! 'sfx-volume 'rel 50.0 0) + (ja-play-spooled-anim (the-as spool-anim (-> self anim-name)) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (remove-setting! 'music-volume) + (remove-setting! 'sfx-volume) + (let ((a0-21 (handle->process gp-2))) (if a0-21 (send-event a0-21 'stop-cloning))))) + ((= v1-0 2) + (ja-no-eval :group! snowcam-eggtop-activating-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (handle->process (-> self notify-handle)) 'notify 'cut) + (ja-no-eval :group! snowcam-ecovent-activating-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else (suspend) 0))) + (go-virtual pov-camera-done-playing))) (deftype snow-eggtop (process-drawable) - ((root collide-shape-moving :override) - (spawn-trans vector :inline) - (play-sound? symbol) - ) + ((root collide-shape-moving :override) + (spawn-trans vector :inline) + (play-sound? symbol)) (:states - snow-eggtop-activate - snow-eggtop-idle-down - snow-eggtop-idle-up - ) - ) + snow-eggtop-activate + snow-eggtop-idle-down + snow-eggtop-idle-up)) - -(defskelgroup *snow-eggtop-sg* snow-eggtop snow-eggtop-lod0-jg snow-eggtop-idle-ja - ((snow-eggtop-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *snow-eggtop-sg* + snow-eggtop + snow-eggtop-lod0-jg + snow-eggtop-idle-ja + ((snow-eggtop-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defpartgroup group-snow-yellow-eco-room-open :id 510 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 1990 :fade-after (meters 110)) - (sp-item 1991 :fade-after (meters 110)) - (sp-item 1992 :fade-after (meters 110)) - (sp-item 1993 :fade-after (meters 110)) - (sp-item 1994 :fade-after (meters 110)) - ) - ) + :parts + ((sp-item 1990 :fade-after (meters 110)) + (sp-item 1991 :fade-after (meters 110)) + (sp-item 1992 :fade-after (meters 110)) + (sp-item 1993 :fade-after (meters 110)) + (sp-item 1994 :fade-after (meters 110)))) (defpartgroup group-snow-yellow-eco-room-activate :id 511 :duration (seconds 3) :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 1994) (sp-item 1994) (sp-item 1995 :flags (bit1) :period (seconds 4) :length (seconds 0.05))) - ) + :parts ((sp-item 1994) (sp-item 1994) (sp-item 1995 :flags (bit1) :period (seconds 4) :length (seconds 0.05)))) (defpart 1995 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 30.0) - (:y (meters -4)) - (:scale-x (meters 20) (meters 10)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 5) (meters 2)) - (:r 127.0) - (:g 127.0) - (:b 0.0 16.0) - (:a 0.0) - (:rotvel-z (degrees -0.05) (degrees 0.1)) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.25)) - (:next-launcher 1996) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 30.0) + (:y (meters -4)) + (:scale-x (meters 20) (meters 10)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 5) (meters 2)) + (:r 127.0) + (:g 127.0) + (:b 0.0 16.0) + (:a 0.0) + (:rotvel-z (degrees -0.05) (degrees 0.1)) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.25)) + (:next-launcher 1996))) (defpart 1996 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.75)) (:next-launcher 1997)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.75)) (:next-launcher 1997))) (defpart 1997 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (defpart 1990 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -4)) - (:scale-x (meters 10) (meters 2)) - (:scale-y (meters 8) (meters 2)) - (:r 255.0) - (:g 255.0) - (:b 0.0 64.0) - (:a 128.0 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -4)) + (:scale-x (meters 10) (meters 2)) + (:scale-y (meters 8) (meters 2)) + (:r 255.0) + (:g 255.0) + (:b 0.0 64.0) + (:a 128.0 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 1991 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 1992 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.5 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 3)) - (:rot-x 4) - (:rot-z (degrees -30) (degrees 60)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 64.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1998) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.5 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 3)) + (:rot-x 4) + (:rot-z (degrees -30) (degrees 60)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1998))) (defpart 1998 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0))) (defpart 1993 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.5 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 150) (degrees 60)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 64.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1998) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.5 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 150) (degrees 60)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1998))) (defpart 1994 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0 1.0) - (:y (meters -6.5) (meters 1)) - (:scale-x (meters 6) (meters 2)) - (:rot-x 4) - (:rot-z (degrees -140) (degrees 100.00001)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 64.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1998) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 80) (degrees 200.00002)) - (:conerot-radius (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0 1.0) + (:y (meters -6.5) (meters 1)) + (:scale-x (meters 6) (meters 2)) + (:rot-x 4) + (:rot-z (degrees -140) (degrees 100.00001)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1998) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 80) (degrees 200.00002)) + (:conerot-radius (meters 4)))) (defstate snow-eggtop-idle-up (snow-eggtop) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (case (-> block param 0) - (('pickup) - (if (type-type? (-> proc type) fuel-cell) - (save-reminder (get-task-control (-> self entity extra perm task)) 1 4) - ) - ) - ) - ) - ) - ) - :trans (behavior () - (if (and (not (-> self child)) (task-complete? *game-info* (-> self entity extra perm task))) - (go snow-eggtop-activate) - ) - (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - ) - :code (behavior () - (ja-channel-push! 1 0) - (ja :group! snow-eggtop-idle-ja :num! min) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (case (-> block param 0) + (('pickup) + (if (type-type? (-> proc type) fuel-cell) (save-reminder (get-task-control (-> self entity extra perm task)) 1 4))))))) + :trans + (behavior () + (if (and (not (-> self child)) (task-complete? *game-info* (-> self entity extra perm task))) (go snow-eggtop-activate)) + (spawn (-> self part) (-> self root trans)) + (update! (-> self sound))) + :code + (behavior () + (ja-channel-push! 1 0) + (ja :group! snow-eggtop-idle-ja :num! min) + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-eggtop-activate (snow-eggtop) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (when (= (-> proc type) snowcam) - (cond - ((= (-> block param 0) 'die) - (if *target* - (+! (-> *target* control trans y) 1024.0) - ) - (go snow-eggtop-idle-down) - ) - ((= (-> block param 0) 'cut) - (stop! (-> self sound)) - (set! (-> self play-sound?) #f) - #f - ) - ) - ) - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (set! (-> self play-sound?) #t) - ) - :exit (behavior () - (stop! (-> self sound)) - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (when (= (-> proc type) snowcam) + (cond + ((= (-> block param 0) 'die) (if *target* (+! (-> *target* control trans y) 1024.0)) (go snow-eggtop-idle-down)) + ((= (-> block param 0) 'cut) (stop! (-> self sound)) (set! (-> self play-sound?) #f) #f)))))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (set! (-> self play-sound?) #t)) + :exit + (behavior () + (stop! (-> self sound)) + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) :trans rider-trans - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 511) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (let ((v1-7 - (process-spawn - snowcam - :init pov-camera-init-by-other - (-> self spawn-trans) - *snowcam-sg* - "gearstart" - 0 - self - '((0 ambient camera "gamcam38") (10 alive "ecovent-278")) - :to self - ) - ) - ) - (set! (-> (the-as snowcam (-> v1-7 0)) seq) (the-as uint 2)) - ) - (change-sound! (-> self sound) (static-sound-name "snw-eggtop-seq")) - (save-reminder (get-task-control (-> self entity extra perm task)) 2 4) - (ja-no-eval :group! snow-eggtop-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (-> self play-sound?) - (update! (-> self sound)) - ) - (suspend) - (ja :num! (seek!)) - ) - (level-hint-spawn - (text-id snow-eggtop-resolution) - "sksp0360" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1.1)) - (if (-> self play-sound?) - (update! (-> self sound)) - ) - (suspend) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((a0-18 (-> self entity))) - (if (and a0-18 (= self (-> a0-18 extra process))) - (entity-task-complete-on a0-18) - ) - ) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show) - (loop - (if (-> self play-sound?) - (update! (-> self sound)) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 511) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (let ((v1-7 (process-spawn snowcam + :init + pov-camera-init-by-other + (-> self spawn-trans) + *snowcam-sg* + "gearstart" + 0 + self + '((0 ambient camera "gamcam38") (10 alive "ecovent-278")) + :to + self))) + (set! (-> (the-as snowcam (-> v1-7 0)) seq) (the-as uint 2))) + (change-sound! (-> self sound) (static-sound-name "snw-eggtop-seq")) + (save-reminder (get-task-control (-> self entity extra perm task)) 2 4) + (ja-no-eval :group! snow-eggtop-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (-> self play-sound?) (update! (-> self sound))) + (suspend) + (ja :num! (seek!))) + (level-hint-spawn (text-id snow-eggtop-resolution) "sksp0360" (the-as entity #f) *entity-pool* (game-task none)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1.1)) + (if (-> self play-sound?) (update! (-> self sound))) + (suspend)) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((a0-18 (-> self entity))) (if (and a0-18 (= self (-> a0-18 extra process))) (entity-task-complete-on a0-18))) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show) + (loop + (if (-> self play-sound?) (update! (-> self sound))) + (suspend))) + :post rider-post) (defstate snow-eggtop-idle-down (snow-eggtop) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (let ((a0-1 (-> self entity))) - (if (and a0-1 (= self (-> a0-1 extra process))) - (entity-task-complete-on a0-1) - ) - ) - (ja-channel-push! 1 0) - (ja :group! snow-eggtop-idle-ja :num! max) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (let ((a0-1 (-> self entity))) (if (and a0-1 (= self (-> a0-1 extra process))) (entity-task-complete-on a0-1))) + (ja-channel-push! 1 0) + (ja :group! snow-eggtop-idle-ja :num! max) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod init-from-entity! ((this snow-eggtop) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -438,12 +334,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 18022.4) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snow-eggtop-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -451,119 +345,84 @@ (+! (-> this root trans y) -2662.4) (update-transforms! (-> this root)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 510) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "electric-loop" :fo-max 40) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "electric-loop" :fo-max 40) (-> this root trans))) (cond - ((task-complete? *game-info* (-> this entity extra perm task)) - (go snow-eggtop-idle-down) - ) + ((task-complete? *game-info* (-> this entity extra perm task)) (go snow-eggtop-idle-down)) (else - (let ((a0-17 (new 'stack-no-clear 'vector))) - (set! (-> a0-17 quad) (-> this root trans quad)) - (+! (-> a0-17 y) 3072.0) - (birth-pickup-at-point - a0-17 - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - (go snow-eggtop-idle-up) - ) - ) - (none) - ) + (let ((a0-17 (new 'stack-no-clear 'vector))) + (set! (-> a0-17 quad) (-> this root trans quad)) + (+! (-> a0-17 y) 3072.0) + (birth-pickup-at-point a0-17 + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f))) + (go snow-eggtop-idle-up))) + (none)) (deftype snowpusher (process-drawable) - ((root collide-shape-moving :override) - (max-frame float) - (open-sound sound-name) - (close-sound sound-name) - (sync sync-info-paused :inline) - ) + ((root collide-shape-moving :override) + (max-frame float) + (open-sound sound-name) + (close-sound sound-name) + (sync sync-info-paused :inline)) (:states - snowpusher-idle - ) - ) - + snowpusher-idle)) -(defskelgroup *snowpusher-sg* snowpusher snowpusher-lod0-jg snowpusher-idle-ja - ((snowpusher-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *snowpusher-sg* + snowpusher + snowpusher-lod0-jg + snowpusher-idle-ja + ((snowpusher-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defstate snowpusher-idle (snowpusher) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :code (behavior () - (let ((gp-0 #f)) - (loop - (let ((f0-0 (get-current-phase-with-mirror (-> self sync)))) - (ja :num-func num-func-identity :frame-num (* f0-0 (-> self max-frame))) - (cond - ((or (= f0-0 0.0) (= f0-0 1.0)) - (set! gp-0 #f) - ) - (else - (when (not gp-0) - (set! gp-0 #t) - (if (>= f0-0 0.5) - (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) - (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) - ) - ) - ) - ) - ) - (suspend) - ) - ) - ) - :post pusher-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :code + (behavior () + (let ((gp-0 #f)) + (loop + (let ((f0-0 (get-current-phase-with-mirror (-> self sync)))) + (ja :num-func num-func-identity :frame-num (* f0-0 (-> self max-frame))) + (cond + ((or (= f0-0 0.0) (= f0-0 1.0)) (set! gp-0 #f)) + (else + (when (not gp-0) + (set! gp-0 #t) + (if (>= f0-0 0.5) + (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) + (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t)))))) + (suspend)))) + :post pusher-post) (defmethod init-from-entity! ((this snowpusher) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (logior! (-> this mask) (process-mask enemy platform)) (let ((s3-0 0) - (s4-0 0) - ) + (s4-0 0)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-3 (res-lump-data (-> this entity) 'mode (pointer int32) :tag-ptr (& sv-16)))) (when v1-3 (set! s3-0 (-> v1-3 0)) - (set! s4-0 (-> v1-3 1)) - ) - ) + (set! s4-0 (-> v1-3 1)))) (cond ((zero? s3-0) (set! (-> this open-sound) (static-sound-name "snow-piston-opn")) - (set! (-> this close-sound) (static-sound-name "snow-piston-cls")) - ) + (set! (-> this close-sound) (static-sound-name "snow-piston-cls"))) ((= s3-0 1) (set! (-> this open-sound) (static-sound-name "snow-pist-opn3")) - (set! (-> this close-sound) (static-sound-name "snow-pist-cls3")) - ) + (set! (-> this close-sound) (static-sound-name "snow-pist-cls3"))) ((= s3-0 2) (set! (-> this open-sound) (static-sound-name "snow-pist-opn2")) - (set! (-> this close-sound) (static-sound-name "snow-pist-cls2")) - ) - ) + (set! (-> this close-sound) (static-sound-name "snow-pist-cls2")))) (let ((s3-1 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s3-1 dynam) (copy *standard-dynamics* 'process)) (set! (-> s3-1 reaction) default-collision-reaction) - (set! (-> s3-1 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s3-1 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-1 (new 'process 'collide-shape-prim-mesh s3-1 (the-as uint s4-0) (the-as uint 0)))) (set! (-> s4-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s4-1 collide-with) (collide-kind target)) @@ -571,102 +430,69 @@ (set! (-> s4-1 prim-core offense) (collide-offense indestructible)) (set! (-> s4-1 transform-index) 3) (set-vector! (-> s4-1 local-sphere) 0.0 20480.0 -12288.0 25600.0) - (set-root-prim! s3-1 s4-1) - ) + (set-root-prim! s3-1 s4-1)) (set! (-> s3-1 nav-radius) (* 0.75 (-> s3-1 root-prim local-sphere w))) (backup-collide-with-as s3-1) - (set! (-> this root) s3-1) - ) - ) + (set! (-> this root) s3-1))) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snowpusher-sg* '()) (let ((s4-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-2 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-2 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-2 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-2 frame-num) 0.0)) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (set! (-> this max-frame) (* (the float (ja-num-frames 0)) (res-lump-float arg0 'max-frame :default 1.0))) (logclear! (-> this mask) (process-mask actor-pause)) (go snowpusher-idle) - (none) - ) + (none)) (deftype snow-spatula (baseplat) - ((sync sync-info :inline) - (startmat matrix :inline) - ) + ((sync sync-info :inline) + (startmat matrix :inline)) (:states - snow-spatula-idle - ) - ) + snow-spatula-idle)) - -(defskelgroup *snow-spatula-sg* snow-spatula snow-spatula-lod0-jg snow-spatula-idle-ja - ((snow-spatula-lod0-mg (meters 999999))) - :bounds (static-spherem 0 10 0 10) - :longest-edge (meters 9.4) - ) +(defskelgroup *snow-spatula-sg* + snow-spatula + snow-spatula-lod0-jg + snow-spatula-idle-ja + ((snow-spatula-lod0-mg (meters 999999))) + :bounds (static-spherem 0 10 0 10) + :longest-edge (meters 9.4)) (defstate snow-spatula-idle (snow-spatula) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - (sound-play "snow-spat-short" :vol 75 :pitch 0.75) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self) (sound-play "snow-spat-short" :vol 75 :pitch 0.75)))) :trans plat-trans - :code (behavior () - (let ((f28-0 0.0) - (gp-0 1) - ) - (loop - (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) - (when (!= f30-0 f28-0) - (let ((v1-3 1)) - (if (< f30-0 f28-0) - (set! v1-3 -1) - ) - (when (!= v1-3 gp-0) - (set! gp-0 v1-3) - (cond - ((> v1-3 0) - (sound-play "snow-spat-long" :pitch (rand-vu-float-range -0.2 0.2)) - ) - (1 - (sound-play "snow-spat-short" :pitch (rand-vu-float-range -0.2 0.2)) - ) - ) - ) - ) - (set! f28-0 f30-0) - ) - (let ((s5-2 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! s5-2 (* 16384.0 f30-0)) - (matrix*! s5-2 s5-2 (-> self startmat)) - (matrix->quaternion (-> self root quat) s5-2) - ) - ) - (suspend) - ) - ) - ) - :post plat-post - ) + :code + (behavior () + (let ((f28-0 0.0) + (gp-0 1)) + (loop + (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) + (when (!= f30-0 f28-0) + (let ((v1-3 1)) + (if (< f30-0 f28-0) (set! v1-3 -1)) + (when (!= v1-3 gp-0) + (set! gp-0 v1-3) + (cond + ((> v1-3 0) (sound-play "snow-spat-long" :pitch (rand-vu-float-range -0.2 0.2))) + (1 (sound-play "snow-spat-short" :pitch (rand-vu-float-range -0.2 0.2)))))) + (set! f28-0 f30-0)) + (let ((s5-2 (new 'stack-no-clear 'matrix))) + (matrix-rotate-y! s5-2 (* 16384.0 f30-0)) + (matrix*! s5-2 s5-2 (-> self startmat)) + (matrix->quaternion (-> self root quat) s5-2))) + (suspend)))) + :post plat-post) (defmethod init-from-entity! ((this snow-spatula) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -675,12 +501,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 49152.0 -16384.0 16384.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snow-spatula-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -688,308 +512,266 @@ (quaternion->matrix (-> this startmat) (-> this root quat)) (baseplat-method-21 this) (go snow-spatula-idle) - (none) - ) + (none)) (deftype snow-fort-gate (process-drawable) - ((root collide-shape :override) - (part2 sparticle-launch-control) - (part3 sparticle-launch-control) - (open-trans vector :inline) - (closed-trans vector :inline) - ) + ((root collide-shape :override) + (part2 sparticle-launch-control) + (part3 sparticle-launch-control) + (open-trans vector :inline) + (closed-trans vector :inline)) (:states - snow-fort-gate-activate - snow-fort-gate-idle-closed - snow-fort-gate-idle-open - ) - ) - - -(defskelgroup *snow-fort-gate-sg* snow-fort-gate snow-fort-gate-lod0-jg -1 - ((snow-fort-gate-lod0-mg (meters 999999))) - :bounds (static-spherem 0 15 0 24) - :longest-edge (meters 12.8) - ) + snow-fort-gate-activate + snow-fort-gate-idle-closed + snow-fort-gate-idle-open)) + +(defskelgroup *snow-fort-gate-sg* + snow-fort-gate + snow-fort-gate-lod0-jg + -1 + ((snow-fort-gate-lod0-mg (meters 999999))) + :bounds (static-spherem 0 15 0 24) + :longest-edge (meters 12.8)) (defpartgroup group-snow-fort-gate-coming-down :id 512 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1896)) - ) + :parts ((sp-item 1896))) (defpart 1896 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 1.0) - (:x (meters -10) (meters 20)) - (:y (meters 0.5) (meters 1)) - (:scale-x (meters 10.5) (meters 8.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 96.0 16.0) - (:a 0.0) - (:vel-x (meters -0.026666667) (meters 0.053333335)) - (:vel-z (meters -0.053333335) (meters 0.053333335)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:fade-a 0.42666668) - (:accel-y (meters -0.00066666666)) - (:friction 0.98) - (:timer (seconds 1.5)) - (:flags (bit2)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 1897) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 1.0) + (:x (meters -10) (meters 20)) + (:y (meters 0.5) (meters 1)) + (:scale-x (meters 10.5) (meters 8.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 96.0 16.0) + (:a 0.0) + (:vel-x (meters -0.026666667) (meters 0.053333335)) + (:vel-z (meters -0.053333335) (meters 0.053333335)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:fade-a 0.42666668) + (:accel-y (meters -0.00066666666)) + (:friction 0.98) + (:timer (seconds 1.5)) + (:flags (bit2)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 1897) + (:rotate-y (degrees 0)))) (defpart 1897 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-snow-fort-gate-hits-bottom :id 513 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1898)) - ) + :parts ((sp-item 1898))) (defpart 1898 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 64.0) - (:x (meters -10) (meters 20)) - (:y (meters 0.5) (meters 1)) - (:z (meters -3)) - (:scale-x (meters 4) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0 16.0) - (:a 0.0) - (:vel-x (meters -0.013333334) (meters 0.026666667)) - (:vel-z (meters -0.053333335) (meters 0.046666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:fade-a 0.42666668) - (:accel-y (meters -0.00016666666)) - (:friction 0.98) - (:timer (seconds 2.5)) - (:flags (bit2)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 1899) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 64.0) + (:x (meters -10) (meters 20)) + (:y (meters 0.5) (meters 1)) + (:z (meters -3)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0 16.0) + (:a 0.0) + (:vel-x (meters -0.013333334) (meters 0.026666667)) + (:vel-z (meters -0.053333335) (meters 0.046666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:fade-a 0.42666668) + (:accel-y (meters -0.00016666666)) + (:friction 0.98) + (:timer (seconds 2.5)) + (:flags (bit2)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 1899) + (:rotate-y (degrees 0)))) (defpart 1899 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpartgroup group-snow-fort-gate-snowdrops :id 514 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.5)) - (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.335)) - (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.2)) - (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.1)) - (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.035)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.667)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.5)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.335)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.167)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.067)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.57)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.385)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.235)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.117)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.5)) + (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.335)) + (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.2)) + (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.1)) + (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.035)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.667)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.5)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.335)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.167)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.067)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.57)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.385)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.235)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.117)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.035)))) (defpart 2271 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.25) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 0.25)) - (:r 150.0) - (:g 150.0) - (:b 150.0 55.0) - (:a 128.0) - (:vel-y (meters -0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters -0.00066666666) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 2)) - (:next-launcher 2274) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.25) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 0.25)) + (:r 150.0) + (:g 150.0) + (:b 150.0 55.0) + (:a 128.0) + (:vel-y (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.00066666666) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 2)) + (:next-launcher 2274))) (defpart 2274 - :init-specs ((:fade-a -0.42666668)) - ) + :init-specs ((:fade-a -0.42666668))) (defpart 2272 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.25) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.1)) - (:r 150.0) - (:g 150.0) - (:b 150.0 55.0) - (:a 96.0 32.0) - (:vel-y (meters -0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters -0.0005) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 2)) - (:next-launcher 2274) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.25) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 150.0) + (:g 150.0) + (:b 150.0 55.0) + (:a 96.0 32.0) + (:vel-y (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.0005) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 2)) + (:next-launcher 2274))) (defpart 2273 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.25) - (:x (meters -0.5) (meters 1)) - (:y (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.25)) - (:scale-y (meters 2.5) (meters 1)) - (:r 150.0) - (:g 150.0) - (:b 150.0 55.0) - (:a 32.0 96.0) - (:vel-y (meters -0.006666667)) - (:fade-a -0.14222223) - (:accel-y (meters -0.0005) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.25) + (:x (meters -0.5) (meters 1)) + (:y (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.25)) + (:scale-y (meters 2.5) (meters 1)) + (:r 150.0) + (:g 150.0) + (:b 150.0 55.0) + (:a 32.0 96.0) + (:vel-y (meters -0.006666667)) + (:fade-a -0.14222223) + (:accel-y (meters -0.0005) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)))) (defstate snow-fort-gate-idle-closed (snow-fort-gate) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notice) - (go snow-fort-gate-activate) - ) - ) - ) - :trans (behavior () - (when (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn (text-id snow-fort-hint) "sksp0345" (the-as entity #f) *entity-pool* (game-task none)) - (close-specific-task! (game-task snow-fort) (task-status need-hint)) - ) - ) - :code (behavior () - (ja :group! snow-fort-gate-idle-ja :num! min) - (set! (-> self root trans quad) (-> self closed-trans quad)) - (transform-post) - (suspend) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notice) (go snow-fort-gate-activate)))) + :trans + (behavior () + (when (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id snow-fort-hint) "sksp0345" (the-as entity #f) *entity-pool* (game-task none)) + (close-specific-task! (game-task snow-fort) (task-status need-hint)))) + :code + (behavior () + (ja :group! snow-fort-gate-idle-ja :num! min) + (set! (-> self root trans quad) (-> self closed-trans quad)) + (transform-post) (suspend) - ) - ) - ) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-fort-gate-activate (snow-fort-gate) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (stop! (-> self sound)) - (logior! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior () - (let ((gp-0 #f)) - (loop - (let ((a1-0 (new 'stack-no-clear 'vector))) - (set! (-> a1-0 quad) (-> self closed-trans quad)) - (+! (-> a1-0 y) -12288.0) - (+! (-> a1-0 z) -12288.0) - (spawn (-> self part) a1-0) - ) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self root trans quad)) - (let ((f30-0 (vector-vector-distance-squared s5-0 (-> self open-trans)))) - (when (and (not gp-0) (>= 1048576.0 f30-0)) - (set! gp-0 #t) - (let ((a1-2 (new 'stack-no-clear 'vector))) - (set! (-> a1-2 quad) (-> self open-trans quad)) - (+! (-> a1-2 y) -26624.0) - (+! (-> a1-2 z) -3072.0) - (spawn (-> self part2) a1-2) - ) - ) - (when (>= 1677.7216 f30-0) - (sound-play "lodge-close") - (activate! *camera-smush-control* 819.2 37 150 1.0 0.99) - (go snow-fort-gate-idle-open) - ) - ) - (vector-seek-3d-smooth! s5-0 (-> self open-trans) (* 16384.0 (seconds-per-frame)) 0.9) - (move-to-point! (-> self root) s5-0) - ) - (let ((a1-7 (new 'stack-no-clear 'vector))) - (set! (-> a1-7 quad) (-> self root trans quad)) - (+! (-> a1-7 x) 20480.0) - (+! (-> a1-7 y) 106496.0) - (+! (-> a1-7 z) -32768.0) - (spawn (-> self part3) a1-7) - ) - (update! (-> self sound)) - (suspend) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (stop! (-> self sound)) + (logior! (-> self mask) (process-mask actor-pause))) + :code + (behavior () + (let ((gp-0 #f)) + (loop + (let ((a1-0 (new 'stack-no-clear 'vector))) + (set! (-> a1-0 quad) (-> self closed-trans quad)) + (+! (-> a1-0 y) -12288.0) + (+! (-> a1-0 z) -12288.0) + (spawn (-> self part) a1-0)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self root trans quad)) + (let ((f30-0 (vector-vector-distance-squared s5-0 (-> self open-trans)))) + (when (and (not gp-0) (>= 1048576.0 f30-0)) + (set! gp-0 #t) + (let ((a1-2 (new 'stack-no-clear 'vector))) + (set! (-> a1-2 quad) (-> self open-trans quad)) + (+! (-> a1-2 y) -26624.0) + (+! (-> a1-2 z) -3072.0) + (spawn (-> self part2) a1-2))) + (when (>= 1677.7216 f30-0) + (sound-play "lodge-close") + (activate! *camera-smush-control* 819.2 37 150 1.0 0.99) + (go snow-fort-gate-idle-open))) + (vector-seek-3d-smooth! s5-0 (-> self open-trans) (* 16384.0 (seconds-per-frame)) 0.9) + (move-to-point! (-> self root) s5-0)) + (let ((a1-7 (new 'stack-no-clear 'vector))) + (set! (-> a1-7 quad) (-> self root trans quad)) + (+! (-> a1-7 x) 20480.0) + (+! (-> a1-7 y) 106496.0) + (+! (-> a1-7 z) -32768.0) + (spawn (-> self part3) a1-7)) + (update! (-> self sound)) + (suspend)))) + :post transform-post) (defstate snow-fort-gate-idle-open (snow-fort-gate) - :code (behavior () - (ja :group! snow-fort-gate-idle-ja :num! min) - (set! (-> self root trans quad) (-> self open-trans quad)) - (transform-post) - (suspend) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :code + (behavior () + (ja :group! snow-fort-gate-idle-ja :num! min) + (set! (-> self root trans quad) (-> self open-trans quad)) + (transform-post) (suspend) - ) - ) - ) + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod deactivate ((this snow-fort-gate)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this part3)) - (kill-and-free-particles (-> this part3)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this part3)) (kill-and-free-particles (-> this part3))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this snow-fort-gate) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this part3)) - (&+! (-> this part3) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this part3)) (&+! (-> this part3) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this snow-fort-gate) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1000,12 +782,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 61440.0 0.0 99123.2) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snow-fort-gate-sg* '()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 512) this)) @@ -1015,240 +795,198 @@ (set! (-> this closed-trans quad) (-> this open-trans quad)) (+! (-> this open-trans y) -141312.0) (+! (-> this open-trans z) 32768.0) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "lodge-door-mov" :fo-max 80) (-> this open-trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "lodge-door-mov" :fo-max 80) (-> this open-trans))) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (cond ((task-complete? *game-info* (game-task snow-ball)) (set! (-> this root trans quad) (-> this open-trans quad)) (transform-post) - (go snow-fort-gate-idle-open) - ) - (else - (set! (-> this root trans quad) (-> this closed-trans quad)) - (transform-post) - (go snow-fort-gate-idle-closed) - ) - ) - (none) - ) - -(deftype snow-gears (process-drawable) - () + (go snow-fort-gate-idle-open)) + (else (set! (-> this root trans quad) (-> this closed-trans quad)) (transform-post) (go snow-fort-gate-idle-closed))) + (none)) + +(deftype snow-gears (process-drawable) () (:methods - (snow-gears-method-20 (_type_) none) - ) + (snow-gears-method-20 (_type_) none)) (:states - snow-gears-activate - snow-gears-halt - snow-gears-idle - snow-gears-stopped - ) - ) - - -(defskelgroup *snow-gears-sg* snow-gears snow-gears-lod0-jg snow-gears-idle-ja - ((snow-gears-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 60) - :longest-edge (meters 12.1) - ) + snow-gears-activate + snow-gears-halt + snow-gears-idle + snow-gears-stopped)) + +(defskelgroup *snow-gears-sg* + snow-gears + snow-gears-lod0-jg + snow-gears-idle-ja + ((snow-gears-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 60) + :longest-edge (meters 12.1)) (defpartgroup group-snow-gears-dripping :id 515 :flags (use-local-clock) :bounds (static-bspherem 0 -4 0 16) - :parts ((sp-item 1900) (sp-item 1901)) - ) + :parts ((sp-item 1900) (sp-item 1901))) (defpart 1900 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 0.5) - (:x (meters -9) (meters 18)) - (:y (meters -6)) - (:z (meters -9) (meters 18)) - (:scale-x (meters 0.1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 40.0) - (:g 32.0 40.0) - (:b 32.0 40.0) - (:a 128.0) - (:vel-y (meters 0) (meters -0.04)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:accel-y (meters -0.0016666667) (meters -0.00016666666)) - (:timer (seconds 1.3)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 0.5) + (:x (meters -9) (meters 18)) + (:y (meters -6)) + (:z (meters -9) (meters 18)) + (:scale-x (meters 0.1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 40.0) + (:g 32.0 40.0) + (:b 32.0 40.0) + (:a 128.0) + (:vel-y (meters 0) (meters -0.04)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:accel-y (meters -0.0016666667) (meters -0.00016666666)) + (:timer (seconds 1.3)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop))) (defpart 1901 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -7)) - (:scale-x (meters 3) (meters 4.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0) - (:b 64.0) - (:a 0.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 1.0666667) - (:accel-y (meters 0.000016666667)) - (:timer (seconds 4)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.2)) - (:next-launcher 1902) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3.5) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -7)) + (:scale-x (meters 3) (meters 4.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 1.0666667) + (:accel-y (meters 0.000016666667)) + (:timer (seconds 4)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.2)) + (:next-launcher 1902) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3.5) (meters 6)))) (defpart 1902 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.797)) (:next-launcher 1903)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.797)) (:next-launcher 1903))) (defpart 1903 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (defmethod snow-gears-method-20 ((this snow-gears)) (let ((a1-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> this root trans quad)) (+! (-> a1-0 y) 61440.0) - (spawn (-> this part) a1-0) - ) - (none) - ) + (spawn (-> this part) a1-0)) + (none)) (defstate snow-gears-idle (snow-gears) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notice) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go snow-gears-activate) - ) - ) - ) - :code (behavior () - (ja :group! snow-gears-idle-ja :num! min) - (ja-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notice) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-gears-activate)))) + :code + (behavior () + (ja :group! snow-gears-idle-ja :num! min) + (ja-post) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-gears-activate (snow-gears) - :trans (behavior () - (snow-gears-method-20 self) - ) - :code (behavior () - (sound-play "eng-start-up") - (ja-no-eval :group! snow-gears-start-ja :num! (seek! max 0.85) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.85)) - ) - (ja-no-eval :group! snow-gears-loop-ja :num! (seek! max 0.35) :frame-num 0.0) - (until (ja-done? 0) - (update! (-> self sound)) - (suspend) - (ja :num! (seek! max 0.35)) - ) - (set-time! (-> self state-time)) - (ja :group! snow-gears-idle-ja :num! min) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (update! (-> self sound)) - (suspend) - ) - (go snow-gears-halt) - ) - :post ja-post - ) + :trans + (behavior () + (snow-gears-method-20 self)) + :code + (behavior () + (sound-play "eng-start-up") + (ja-no-eval :group! snow-gears-start-ja :num! (seek! max 0.85) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.85))) + (ja-no-eval :group! snow-gears-loop-ja :num! (seek! max 0.35) :frame-num 0.0) + (until (ja-done? 0) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! max 0.35))) + (set-time! (-> self state-time)) + (ja :group! snow-gears-idle-ja :num! min) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (update! (-> self sound)) + (suspend)) + (go snow-gears-halt)) + :post ja-post) (defstate snow-gears-halt (snow-gears) - :exit (behavior () - (stop! (-> self sound)) - ) - :trans (behavior () - (snow-gears-method-20 self) - ) - :code (behavior () - (ja-no-eval :group! snow-gears-loop-ja :num! (seek! max 0.35) :frame-num 0.0) - (until (ja-done? 0) - (update! (-> self sound)) - (suspend) - (ja :num! (seek! max 0.35)) - ) - (stop! (-> self sound)) - (sound-play "eng-shut-down") - (ja-no-eval :group! snow-gears-stop-ja :num! (seek! max 0.85) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.85)) - ) - (go snow-gears-stopped) - ) - :post ja-post - ) + :exit + (behavior () + (stop! (-> self sound))) + :trans + (behavior () + (snow-gears-method-20 self)) + :code + (behavior () + (ja-no-eval :group! snow-gears-loop-ja :num! (seek! max 0.35) :frame-num 0.0) + (until (ja-done? 0) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! max 0.35))) + (stop! (-> self sound)) + (sound-play "eng-shut-down") + (ja-no-eval :group! snow-gears-stop-ja :num! (seek! max 0.85) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.85))) + (go snow-gears-stopped)) + :post ja-post) (defstate snow-gears-stopped (snow-gears) - :code (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this snow-gears) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snow-gears-sg* '()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 515) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "snow-engine" :fo-max 300) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "snow-engine" :fo-max 300) (-> this root trans))) (go snow-gears-idle) - (none) - ) + (none)) (deftype snow-switch (process-drawable) - ((root collide-shape-moving :override) - (pressed? symbol) - (fcell-handle handle) - (orig-trans vector :inline) - ) + ((root collide-shape-moving :override) + (pressed? symbol) + (fcell-handle handle) + (orig-trans vector :inline)) (:states - snow-switch-activate - snow-switch-idle-down - snow-switch-idle-up - ) - ) + snow-switch-activate + snow-switch-idle-down + snow-switch-idle-up)) - -(defskelgroup *snow-switch-sg* snow-switch snow-switch-lod0-jg snow-switch-idle-ja - ((snow-switch-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) +(defskelgroup *snow-switch-sg* + snow-switch + snow-switch-lod0-jg + snow-switch-idle-ja + ((snow-switch-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) (defbehavior snow-switch-event-handler snow-switch ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-0 object)) @@ -1260,112 +998,73 @@ (set! (-> self pressed?) #t) (process-entity-status! self (entity-perm-status bit-3) #t) (logclear! (-> self mask) (process-mask actor-pause)) - (go snow-switch-activate) - ) - ) - ((= (-> arg0 type) snowcam) - (if (= (-> arg3 param 0) 'die) - (go snow-switch-idle-down) - ) - ) - ) - ) - (('query) - (return (-> self pressed?)) - v0-0 - ) - ) - ) + (go snow-switch-activate))) + ((= (-> arg0 type) snowcam) (if (= (-> arg3 param 0) 'die) (go snow-switch-idle-down))))) + (('query) (return (-> self pressed?)) v0-0))) (defstate snow-switch-idle-up (snow-switch) :event snow-switch-event-handler - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-switch-activate (snow-switch) :event snow-switch-event-handler - :exit (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - ) + :exit + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause))) :trans rider-trans - :code (behavior () - (local-vars (v1-1 symbol)) - (until v1-1 - (suspend) - (set! v1-1 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) - ) - (sound-play "prec-button1" :pitch -1) - (let ((gp-1 (get-process *default-dead-pool* snowcam #x4000))) - (set! (-> (the-as snowcam (-> (when gp-1 - (let ((t9-3 (method-of-type snowcam activate))) - (t9-3 (the-as snowcam gp-1) self 'snowcam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-1 - pov-camera-init-by-other - (new 'static 'vector :x 3411656.8 :y 779689.56 :z -13573010.0 :w 1.0) - *snowcam-sg* - "gearstart" - 0 - self - '() - ) - (-> gp-1 ppointer) - ) - 0 - ) - ) - seq - ) - (the-as uint 0) - ) - ) - 0 - (let ((gp-2 #f)) - (loop - (let ((s5-1 (new 'stack-no-clear 'vector)) - (f0-1 (+ -1433.6 (-> self orig-trans y))) - ) - (set! (-> s5-1 quad) (-> self root trans quad)) - (cond - ((= (-> s5-1 y) f0-1) - (when (not gp-2) - (set! gp-2 #t) - (send-to-all (-> self link) 'notice) - ) - ) - (else - (set! (-> s5-1 y) (seek-with-smooth (-> self root trans y) f0-1 (* 6144.0 (seconds-per-frame)) 0.2 204.8)) - (move-to-point! (-> self root) s5-1) - ) - ) - ) + :code + (behavior () + (local-vars (v1-1 symbol)) + (until v1-1 (suspend) - ) - ) - ) - :post rider-post - ) + (set! v1-1 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed)))))) + (sound-play "prec-button1" :pitch -1) + (let ((gp-1 (get-process *default-dead-pool* snowcam #x4000))) + (set! (-> (the-as snowcam + (-> (when gp-1 + (let ((t9-3 (method-of-type snowcam activate))) (t9-3 (the-as snowcam gp-1) self 'snowcam (the-as pointer #x70004000))) + (run-now-in-process gp-1 + pov-camera-init-by-other + (new 'static 'vector :x 3411656.8 :y 779689.56 :z -13573010.0 :w 1.0) + *snowcam-sg* + "gearstart" + 0 + self + '()) + (-> gp-1 ppointer)) + 0)) + seq) + (the-as uint 0))) + 0 + (let ((gp-2 #f)) + (loop + (let ((s5-1 (new 'stack-no-clear 'vector)) + (f0-1 (+ -1433.6 (-> self orig-trans y)))) + (set! (-> s5-1 quad) (-> self root trans quad)) + (cond + ((= (-> s5-1 y) f0-1) (when (not gp-2) (set! gp-2 #t) (send-to-all (-> self link) 'notice))) + (else + (set! (-> s5-1 y) (seek-with-smooth (-> self root trans y) f0-1 (* 6144.0 (seconds-per-frame)) 0.2 204.8)) + (move-to-point! (-> self root) s5-1)))) + (suspend)))) + :post rider-post) (defstate snow-switch-idle-down (snow-switch) :event snow-switch-event-handler - :code (behavior () - (set! (-> self pressed?) #t) - (set! (-> self root trans quad) (-> self orig-trans quad)) - (+! (-> self root trans y) -1433.6) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (set! (-> self pressed?) #t) + (set! (-> self root trans quad) (-> self orig-trans quad)) + (+! (-> self root trans y) -1433.6) + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this snow-switch) (arg0 entity-actor)) (set! (-> this pressed?) #f) @@ -1374,9 +1073,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1385,24 +1082,17 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snow-switch-sg* '()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (transform-post) (set! (-> this orig-trans quad) (-> this root trans quad)) (let ((s5-2 (task-complete? *game-info* (game-task snow-ball)))) @@ -1411,180 +1101,129 @@ (let ((a0-17 (new 'stack-no-clear 'vector))) (set! (-> a0-17 quad) (-> this orig-trans quad)) (+! (-> a0-17 y) 12288.0) - (set! (-> this fcell-handle) (ppointer->handle (birth-pickup-at-point - a0-17 - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - ) - ) - ) - (if s5-2 - (go snow-switch-idle-down) - (go snow-switch-idle-up) - ) - ) - (none) - ) + (set! (-> this fcell-handle) + (ppointer->handle (birth-pickup-at-point a0-17 + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f)))))) + (if s5-2 (go snow-switch-idle-down) (go snow-switch-idle-up))) + (none)) (deftype snow-log (process-drawable) - ((root collide-shape-moving :override) - (master entity-actor) - ) + ((root collide-shape-moving :override) + (master entity-actor)) (:states - snow-log-activate - snow-log-active - snow-log-hidden - snow-log-wait-for-master - ) - ) - - -(defskelgroup *snow-log-sg* snow-log snow-log-lod0-jg -1 - ((snow-log-lod0-mg (meters 999999))) - :bounds (static-spherem 0 5 0 9) - ) + snow-log-activate + snow-log-active + snow-log-hidden + snow-log-wait-for-master)) + +(defskelgroup *snow-log-sg* + snow-log + snow-log-lod0-jg + -1 + ((snow-log-lod0-mg (meters 999999))) + :bounds (static-spherem 0 5 0 9)) (defstate snow-log-wait-for-master (snow-log) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go snow-log-activate) - ) - ) - ) - :code (behavior () - (loop - (while (let ((v1-0 (-> self master))) - (not (if v1-0 - (-> v1-0 extra process) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go snow-log-activate)))) + :code + (behavior () + (loop + (while (let ((v1-0 (-> self master))) (not (if v1-0 (-> v1-0 extra process)))) + (suspend)) (suspend) - ) - (suspend) - (let* ((v1-3 (-> self master)) - (a0-1 (if v1-3 - (-> v1-3 extra process) - ) - ) - ) - (when a0-1 - (cond - ((send-event a0-1 'query) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go snow-log-active) - ) - (else - (go snow-log-hidden) - ) - ) - ) - ) - ) - ) - ) + (let* ((v1-3 (-> self master)) + (a0-1 (if v1-3 (-> v1-3 extra process)))) + (when a0-1 + (cond + ((send-event a0-1 'query) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-log-active)) + (else (go snow-log-hidden)))))))) (defstate snow-log-hidden (snow-log) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go snow-log-activate) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 0) - (ja :group! snow-log-activate-ja :num! min) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-log-activate)))) + :code + (behavior () + (ja-channel-push! 1 0) + (ja :group! snow-log-activate-ja :num! min) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate snow-log-activate (snow-log) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (logclear! (-> self draw status) (draw-status hidden))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) :trans rider-trans - :code (behavior () - (activate! *camera-smush-control* 819.2 37 150 1.0 0.99) - (ja-channel-push! 1 0) - (let ((gp-0 #f)) - (ja-no-eval :group! snow-log-activate-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-0) (>= (ja-frame-num 0) 5.0)) - (set! gp-0 #t) - (sound-play "explosion" :vol 40 :pitch 0.9) - (sound-play "snow-spat-short" :pitch 0.25) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (go snow-log-active) - ) - :post rider-post - ) + :code + (behavior () + (activate! *camera-smush-control* 819.2 37 150 1.0 0.99) + (ja-channel-push! 1 0) + (let ((gp-0 #f)) + (ja-no-eval :group! snow-log-activate-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-0) (>= (ja-frame-num 0) 5.0)) + (set! gp-0 #t) + (sound-play "explosion" :vol 40 :pitch 0.9) + (sound-play "snow-spat-short" :pitch 0.25)) + (suspend) + (ja :num! (seek!)))) + (go snow-log-active)) + :post rider-post) (defstate snow-log-active (snow-log) :trans rider-trans - :code (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - (logclear! (-> self draw status) (draw-status hidden)) - (ja-channel-push! 1 (seconds 0.075)) - (let ((gp-0 #t) - (s5-0 #t) - ) - (loop - (ja-no-eval :group! snow-log-active-loop-ja :num! (seek! max 0.25) :frame-num 0.0) - (until (ja-done? 0) - (let ((f0-4 (ja-aframe-num 0))) - (cond - ((and gp-0 (< f0-4 1.0)) - (set! gp-0 #f) - (set! s5-0 #t) - (sound-play "snow-spat-long" :vol 85 :pitch (rand-vu-float-range -0.2 0.2)) - ) - ((and s5-0 (>= f0-4 11.0)) - (set! s5-0 #f) - (set! gp-0 #t) - (sound-play "snow-spat-short" :vol 85 :pitch (rand-vu-float-range -0.2 0.2)) - ) - ) - ) - (suspend) - (ja :num! (seek! max 0.25)) - ) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (logclear! (-> self draw status) (draw-status hidden)) + (ja-channel-push! 1 (seconds 0.075)) + (let ((gp-0 #t) + (s5-0 #t)) + (loop + (ja-no-eval :group! snow-log-active-loop-ja :num! (seek! max 0.25) :frame-num 0.0) + (until (ja-done? 0) + (let ((f0-4 (ja-aframe-num 0))) + (cond + ((and gp-0 (< f0-4 1.0)) + (set! gp-0 #f) + (set! s5-0 #t) + (sound-play "snow-spat-long" :vol 85 :pitch (rand-vu-float-range -0.2 0.2))) + ((and s5-0 (>= f0-4 11.0)) + (set! s5-0 #f) + (set! gp-0 #t) + (sound-play "snow-spat-short" :vol 85 :pitch (rand-vu-float-range -0.2 0.2))))) + (suspend) + (ja :num! (seek! max 0.25)))))) + :post rider-post) (defmethod init-from-entity! ((this snow-log) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1593,12 +1232,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 36864.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 11264.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snow-log-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -1610,21 +1247,16 @@ (set! (-> this master) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this draw origin-joint-index) (the-as uint 3)) (go snow-log-wait-for-master) - (none) - ) + (none)) (deftype snow-log-button (process-drawable) - ((root collide-shape-moving :override) - (log entity-actor) - (orig-trans vector :inline) - ) + ((root collide-shape-moving :override) + (log entity-actor) + (orig-trans vector :inline)) (:states - snow-log-button-activate - snow-log-button-idle-down - snow-log-button-idle-up - ) - ) - + snow-log-button-activate + snow-log-button-idle-down + snow-log-button-idle-up)) (defbehavior snow-log-button-event-handler snow-log-button ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-2 basic)) @@ -1632,98 +1264,67 @@ (('touch 'bonk 'attack) (when (and (= (-> arg0 type) target) (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (>= 6553.6 (vector-vector-xz-distance (target-pos 0) (-> self root trans))) - ) + (>= 6553.6 (vector-vector-xz-distance (target-pos 0) (-> self root trans)))) (process-entity-status! self (entity-perm-status complete) #t) (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) (go snow-log-button-activate) (return (the-as object #f)) - v0-2 - ) - ) + v0-2)) (('query) (when (= (-> arg0 type) snow-log) - (return (the-as - object - (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - ) - ) - v0-2 - ) - ) - ) - ) + (return (the-as object (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))) + v0-2)))) (defstate snow-log-button-idle-up (snow-log-button) :event snow-log-button-event-handler - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-log-button-activate (snow-log-button) :event snow-log-button-event-handler - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) :trans rider-trans - :code (behavior () - (sound-play "prec-button1") - (loop - (let ((f30-0 (+ -1433.6 (-> self orig-trans y)))) - (when (= (-> self root trans y) f30-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-2 send-event-function) - (v1-4 (-> self log)) - ) - (t9-2 - (if v1-4 - (-> v1-4 extra process) - ) - a1-1 - ) - ) - ) - (go snow-log-button-idle-down) - ) - (set! (-> self root trans y) - (seek-with-smooth (-> self root trans y) f30-0 (* 12288.0 (seconds-per-frame)) 0.2 204.8) - ) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (sound-play "prec-button1") + (loop + (let ((f30-0 (+ -1433.6 (-> self orig-trans y)))) + (when (= (-> self root trans y) f30-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-2 send-event-function) + (v1-4 (-> self log))) + (t9-2 (if v1-4 (-> v1-4 extra process)) a1-1))) + (go snow-log-button-idle-down)) + (set! (-> self root trans y) (seek-with-smooth (-> self root trans y) f30-0 (* 12288.0 (seconds-per-frame)) 0.2 204.8))) + (suspend))) + :post rider-post) (defstate snow-log-button-idle-down (snow-log-button) :event snow-log-button-event-handler - :code (behavior () - (set! (-> self root trans quad) (-> self orig-trans quad)) - (+! (-> self root trans y) -1433.6) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (set! (-> self root trans quad) (-> self orig-trans quad)) + (+! (-> self root trans y) -1433.6) + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this snow-log-button) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1732,30 +1333,21 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *snow-switch-sg* '()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-push! 1 0) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (transform-post) (set! (-> this orig-trans quad) (-> this root trans quad)) (set! (-> this log) (entity-actor-lookup arg0 'alt-actor 0)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go snow-log-button-idle-down) - (go snow-log-button-idle-up) - ) - (none) - ) + (go snow-log-button-idle-down) + (go snow-log-button-idle-up)) + (none)) diff --git a/goal_src/jak1/levels/snow/snow-part.gc b/goal_src/jak1/levels/snow/snow-part.gc index ce152a012c..d8f6ccb3a3 100644 --- a/goal_src/jak1/levels/snow/snow-part.gc +++ b/goal_src/jak1/levels/snow/snow-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/hw/display-h.gc") (require "engine/math/matrix-h.gc") @@ -9,808 +8,1136 @@ (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: snow-part.gc -;; name in dgo: snow-part -;; dgos: L1, SNO - ;; DECOMP BEGINS -(deftype snow-part (part-spawner) - () - ) - +(deftype snow-part (part-spawner) ()) (defpartgroup group-snow-snowdrops1 :id 528 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.5)) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.335)) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.2)) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.1)) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.035)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.667)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.5)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.335)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.167)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.067)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.57)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.385)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.235)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.117)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.5)) + (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.335)) + (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.2)) + (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.1)) + (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.035)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.667)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.5)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.335)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.167)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.067)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.57)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.385)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.235)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.117)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.035)))) (defpartgroup group-snow-snowdrops2 :id 529 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.5) :offset 900) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.335) :offset 900) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.2) :offset 900) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.1) :offset 900) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.035) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.667) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.5) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.335) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.167) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.067) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.57) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.385) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.235) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.117) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.035) :offset 900) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.5) + :offset 900) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.335) + :offset 900) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.2) + :offset 900) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.1) + :offset 900) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.035) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.667) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.5) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.335) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.167) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.067) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.57) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.385) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.235) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.117) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.035) + :offset 900))) (defpartgroup group-snow-snowdrops3 :id 530 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.5) :offset 1800) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.335) :offset 1800) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.2) :offset 1800) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.1) :offset 1800) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.035) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.667) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.5) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.335) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.167) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.067) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.57) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.385) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.235) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.117) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.035) :offset 1800) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.5) + :offset 1800) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.335) + :offset 1800) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.2) + :offset 1800) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.1) + :offset 1800) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.035) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.667) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.5) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.335) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.167) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.067) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.57) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.385) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.235) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.117) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.035) + :offset 1800))) (defpartgroup group-snow-snowdrops4 :id 531 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.5) :offset 300) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.335) :offset 300) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.2) :offset 300) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.1) :offset 300) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.035) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.667) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.5) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.335) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.167) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.067) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.57) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.385) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.235) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.117) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.035) :offset 300) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.5) + :offset 300) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.335) + :offset 300) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.2) + :offset 300) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.1) + :offset 300) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.035) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.667) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.5) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.335) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.167) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.067) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.57) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.385) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.235) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.117) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.035) + :offset 300))) (defpartgroup group-snow-snowdrops5 :id 532 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.5) :offset 1200) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.335) :offset 1200) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.2) :offset 1200) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.1) :offset 1200) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.035) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.667) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.5) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.335) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.167) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.067) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.57) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.385) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.235) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.117) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.035) :offset 1200) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.5) + :offset 1200) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.335) + :offset 1200) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.2) + :offset 1200) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.1) + :offset 1200) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.035) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.667) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.5) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.335) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.167) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.067) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.57) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.385) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.235) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.117) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.035) + :offset 1200))) (defpartgroup group-snow-snowdrops6 :id 533 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.5) :offset 2100) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.335) :offset 2100) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.2) :offset 2100) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.1) :offset 2100) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.035) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.667) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.5) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.335) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.167) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.067) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.57) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.385) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.235) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.117) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.035) :offset 2100) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.5) + :offset 2100) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.335) + :offset 2100) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.2) + :offset 2100) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.1) + :offset 2100) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.035) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.667) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.5) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.335) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.167) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.067) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.57) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.385) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.235) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.117) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.035) + :offset 2100))) (defpart 1924 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.25) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 0.25)) - (:r 200.0) - (:g 200.0) - (:b 200.0 55.0) - (:a 128.0) - (:vel-y (meters -0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters -0.00066666666) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 2)) - (:next-launcher 1927) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.25) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 0.25)) + (:r 200.0) + (:g 200.0) + (:b 200.0 55.0) + (:a 128.0) + (:vel-y (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.00066666666) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 2)) + (:next-launcher 1927))) (defpart 1927 - :init-specs ((:fade-a -0.42666668)) - ) + :init-specs ((:fade-a -0.42666668))) (defpart 1925 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.25) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.1)) - (:r 200.0) - (:g 200.0) - (:b 200.0 55.0) - (:a 96.0 32.0) - (:vel-y (meters -0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters -0.0005) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 2)) - (:next-launcher 1927) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.25) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 200.0) + (:g 200.0) + (:b 200.0 55.0) + (:a 96.0 32.0) + (:vel-y (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.0005) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 2)) + (:next-launcher 1927))) (defpart 1926 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.25) - (:x (meters -0.5) (meters 1)) - (:y (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.25)) - (:scale-y (meters 2.5) (meters 1)) - (:r 200.0) - (:g 200.0) - (:b 200.0 55.0) - (:a 32.0 96.0) - (:vel-y (meters -0.006666667)) - (:fade-a -0.14222223) - (:accel-y (meters -0.0005) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.25) + (:x (meters -0.5) (meters 1)) + (:y (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.25)) + (:scale-y (meters 2.5) (meters 1)) + (:r 200.0) + (:g 200.0) + (:b 200.0 55.0) + (:a 32.0 96.0) + (:vel-y (meters -0.006666667)) + (:fade-a -0.14222223) + (:accel-y (meters -0.0005) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)))) (defpartgroup group-part-snow-torch :id 534 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 2041 :fade-after (meters 200) :falloff-to (meters 220)) - (sp-item 2042 :fade-after (meters 140) :falloff-to (meters 1400)) - (sp-item 2043 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) - (sp-item 2044 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 2045 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 2046 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 2041 :fade-after (meters 200) :falloff-to (meters 220)) + (sp-item 2042 :fade-after (meters 140) :falloff-to (meters 1400)) + (sp-item 2043 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) + (sp-item 2044 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 2045 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 2046 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 2046 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 2047) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 2047) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2047 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 2041 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5 1 1.0) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2048) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5 1 1.0) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2048))) (defpart 2048 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 2043 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2048) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2048))) (defpart 2044 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2048) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2048))) (defpart 2045 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2048) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2048))) (defpart 2042 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) - -(defpartgroup group-snow-mountain-snow :id 535 :bounds (static-bspherem 0 -16 -32 80) :parts ((sp-item 2093))) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) + +(defpartgroup group-snow-mountain-snow + :id 535 + :bounds (static-bspherem 0 -16 -32 80) + :parts ((sp-item 2093))) (defpart 2093 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.06) - (:x (meters -10) (meters 20)) - (:y (meters -30) (meters 20)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 30) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 0.0) - (:vel-z (meters -0.06666667) (meters -0.06666667)) - (:scalevel-x (meters 0.033333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.053333335) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:timer (seconds 10)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 0.6) (seconds 1.397)) - (:next-launcher 2094) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.06) + (:x (meters -10) (meters 20)) + (:y (meters -30) (meters 20)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 30) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 0.0) + (:vel-z (meters -0.06666667) (meters -0.06666667)) + (:scalevel-x (meters 0.033333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.053333335) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:timer (seconds 10)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 0.6) (seconds 1.397)) + (:next-launcher 2094))) (defpart 2094 - :init-specs ((:fade-a -0.035555556)) - ) + :init-specs ((:fade-a -0.035555556))) (defpartgroup group-snow-door-torch :id 536 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 2113 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 2114 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.641) :length (seconds 0.2)) - (sp-item 2115 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 2116 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.73)) - (sp-item 2117 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.3) :length (seconds 0.3)) - (sp-item 2118 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.06) :length (seconds 2.23)) - (sp-item 2119 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.5) :length (seconds 0.1)) - (sp-item 2120 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 2113 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 2114 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.641) :length (seconds 0.2)) + (sp-item 2115 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 2116 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.73)) + (sp-item 2117 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.3) :length (seconds 0.3)) + (sp-item 2118 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.06) :length (seconds 2.23)) + (sp-item 2119 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.5) :length (seconds 0.1)) + (sp-item 2120 :fade-after (meters 50) :falloff-to (meters 60)))) (defpart 2120 - :init-specs ((:num 0.6) - (:x (meters 0) (meters 2)) - (:y (meters 2)) - (:rot-x 5) - (:r 8192.0) - (:g 5898.24) - (:b 6553.6) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.053333335)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 2121) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.6) + (:x (meters 0) (meters 2)) + (:y (meters 2)) + (:rot-x 5) + (:r 8192.0) + (:g 5898.24) + (:b 6553.6) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.053333335)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 2121) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2121 - :init-specs ((:fade-b -10.922667)) - ) + :init-specs ((:fade-b -10.922667))) (defpart 2113 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.75 0.6) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1.5)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.023333333) (meters 0.016666668)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.75 0.6) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1.5)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.023333333) (meters 0.016666668)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2114 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 1 1.3) - (:x (meters 0) (meters 1)) - (:y (meters 0.5)) - (:z (meters 0) (meters 1)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.04) 1 (meters 0.01)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 1 1.3) + (:x (meters 0) (meters 1)) + (:y (meters 0.5)) + (:z (meters 0) (meters 1)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.04) 1 (meters 0.01)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2115 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.6) - (:x (meters -1) (meters 2)) - (:y (meters 1)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:scalevel-x (meters 0.011111111)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00013333333)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 2122) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.6) + (:x (meters -1) (meters 2)) + (:y (meters 1)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:scalevel-x (meters 0.011111111)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00013333333)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 2122) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2123 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.2) - (:x (meters -1) (meters 2)) - (:y (meters 1)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.005) (meters 0.005)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 2122) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.2) + (:x (meters -1) (meters 2)) + (:y (meters 1)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.005) (meters 0.005)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 2122) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2122 - :init-specs ((:fade-g 0.26666668) (:fade-b 0.53333336) (:next-time (seconds 0.4)) (:next-launcher 2124)) - ) + :init-specs ((:fade-g 0.26666668) (:fade-b 0.53333336) (:next-time (seconds 0.4)) (:next-launcher 2124))) (defpart 2124 - :init-specs ((:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-g 0.0) (:fade-b 0.0))) (defpart 2116 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.7) - (:x (meters -1.2) (meters 2.4)) - (:y (meters 0.5)) - (:z (meters -1.2) (meters 2.4)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.7) + (:x (meters -1.2) (meters 2.4)) + (:y (meters 0.5)) + (:z (meters -1.2) (meters 2.4)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2117 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 1 0.9) - (:x (meters -1.2) (meters 1)) - (:y (meters 1.25)) - (:z (meters -1.2) (meters 1)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.03) 1 (meters 0.01)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 1 0.9) + (:x (meters -1.2) (meters 1)) + (:y (meters 1.25)) + (:z (meters -1.2) (meters 1)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.03) 1 (meters 0.01)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2118 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.75 1.2) - (:x (meters -1.2) (meters 2.4)) - (:y (meters 0.5)) - (:z (meters -1.2) (meters 2)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.008333334)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.75 1.2) + (:x (meters -1.2) (meters 2.4)) + (:y (meters 0.5)) + (:z (meters -1.2) (meters 2)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.008333334)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2119 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1 1.6) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.25)) - (:z (meters -1) (meters 1)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.03) 1 (meters 0.008333334)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1 1.6) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.25)) + (:z (meters -1) (meters 1)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.03) 1 (meters 0.008333334)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpartgroup group-snow-birds :id 537 :bounds (static-bspherem 0 8 0 45) - :parts ((sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)))) (defun snow-bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (set! (-> arg2 y) (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) - (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))) - ) - ) + (set! (-> arg2 y) + (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) + (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))))) 0 - (none) - ) + (none)) (defpart 2245 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-random-next-time) - (:num 1.0) - (:x (meters -70) (meters 140)) - (:y (meters 0)) - (:z (meters -70) (meters 140)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit3)) - (:userdata 199.98) - (:func 'snow-bird-bob-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-random-next-time) + (:num 1.0) + (:x (meters -70) (meters 140)) + (:y (meters 0)) + (:z (meters -70) (meters 140)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit3)) + (:userdata 199.98) + (:func 'snow-bird-bob-func))) (defun sparticle-snow-birds-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 1 z) (the float (sar (shl (the int (+ -16384.0 (-> arg1 omega))) 48) 48))) 0 - (none) - ) + (none)) (defpart 2243 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-copy-omega-to-z) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 30)) - (:scale-x (meters 0)) - (:rot-z (degrees 0)) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.04)) - (:timer (seconds 2)) - (:flags (bit3 bit7)) - (:func 'sparticle-snow-birds-moon) - (:next-time (seconds 0.665)) - (:next-launcher 2246) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-copy-omega-to-z) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 30)) + (:scale-x (meters 0)) + (:rot-z (degrees 0)) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.04)) + (:timer (seconds 2)) + (:flags (bit3 bit7)) + (:func 'sparticle-snow-birds-moon) + (:next-time (seconds 0.665)) + (:next-launcher 2246))) (defpart 2246 - :init-specs ((:scale-x (meters 8)) - (:scalevel-x (meters -0.08)) - (:timer (seconds 2)) - (:next-time (seconds 0.335)) - (:next-launcher 2247) - ) - ) + :init-specs + ((:scale-x (meters 8)) + (:scalevel-x (meters -0.08)) + (:timer (seconds 2)) + (:next-time (seconds 0.335)) + (:next-launcher 2247))) (defpart 2247 - :init-specs ((:scale-x (meters 0)) - (:scalevel-x (meters -0.04)) - (:timer (seconds 2)) - (:next-time (seconds 0.665)) - (:next-launcher 2246) - ) - ) + :init-specs + ((:scale-x (meters 0)) + (:scalevel-x (meters -0.04)) + (:timer (seconds 2)) + (:next-time (seconds 0.665)) + (:next-launcher 2246))) (defpart 2244 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:birth-func 'birth-func-copy2-rot-color) - (:num 2.0) - (:scale-x (meters 4)) - (:scale-y (meters 1.5)) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:birth-func 'birth-func-copy2-rot-color) + (:num 2.0) + (:scale-x (meters 4)) + (:scale-y (meters 1.5)) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) diff --git a/goal_src/jak1/levels/snow/snow-ram-boss.gc b/goal_src/jak1/levels/snow/snow-ram-boss.gc index 456c92a3a6..9ed9f1fe71 100644 --- a/goal_src/jak1/levels/snow/snow-ram-boss.gc +++ b/goal_src/jak1/levels/snow/snow-ram-boss.gc @@ -1,475 +1,442 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/game/projectiles.gc") (require "levels/snow/ice-cube.gc") - -;; name: snow-ram-boss.gc -;; name in dgo: snow-ram-boss -;; dgos: L1, SNO - (declare-type ram-boss nav-enemy) ;; DECOMP BEGINS (deftype ram-boss-proj (projectile) - ((parent-override (pointer ram-boss) :overlay-at parent) - (part2 sparticle-launch-control) - (launched? symbol) - (growth float) - (charge-sound-id sound-id) - (launch-time time-frame) - (facing-dir vector :inline) - ) + ((parent-override (pointer ram-boss) :overlay-at parent) + (part2 sparticle-launch-control) + (launched? symbol) + (growth float) + (charge-sound-id sound-id) + (launch-time time-frame) + (facing-dir vector :inline)) (:states - ram-boss-proj-growing - ram-boss-proj-launch - ) - ) - + ram-boss-proj-growing + ram-boss-proj-launch)) (deftype ram-boss (nav-enemy) - ((parent-override (pointer ram) :overlay-at parent) - (facing-y float) - (player-dir-y float) - (last-turn-speed float) - (frustration int32) - (dead? symbol) - (has-shield? symbol) - (proj-stoked basic) - (proj-status uint64) - (part2 sparticle-launch-control) - (proj-last-thrown-time time-frame) - (nav-enemy-patrol-timeout time-frame) - (proj-launch-vec vector :inline) - (local-throw-point vector :inline) - (shield-jmod joint-mod-set-local) - ) + ((parent-override (pointer ram) :overlay-at parent) + (facing-y float) + (player-dir-y float) + (last-turn-speed float) + (frustration int32) + (dead? symbol) + (has-shield? symbol) + (proj-stoked basic) + (proj-status uint64) + (part2 sparticle-launch-control) + (proj-last-thrown-time time-frame) + (nav-enemy-patrol-timeout time-frame) + (proj-launch-vec vector :inline) + (local-throw-point vector :inline) + (shield-jmod joint-mod-set-local)) (:methods - (ram-boss-method-51 (_type_ vector) symbol :overlay-at nav-enemy-method-51) - (ram-boss-method-52 (_type_) symbol :overlay-at nav-enemy-method-52) - (ram-boss-method-57 (_type_ float) float :overlay-at nav-enemy-method-57) - ) - (:states - (ram-boss-already-down basic) - ram-boss-forward-defend-block - ram-boss-idle - (ram-boss-jump-down basic) - ram-boss-jump-down-hit-ground - ram-boss-lose-shield - ram-boss-nav-resume - ram-boss-nav-start - ram-boss-show-anims - ram-boss-throw - ram-boss-tracking - ram-boss-up-defend-block - ) - ) - - -(defskelgroup *ram-boss-sg* ram-boss ram-boss-lod0-jg ram-boss-far-idle-ja - ((ram-boss-lod0-mg (meters 20)) (ram-boss-lod1-mg (meters 40)) (ram-boss-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 4.4) - :longest-edge (meters 1.2) - ) - -(define *ram-boss-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 13 - :walk-anim 11 - :turn-anim -1 - :notice-anim 19 - :run-anim 11 - :jump-anim 13 - :jump-land-anim 13 - :victory-anim 14 - :taunt-anim 14 - :die-anim 15 - :neck-joint 6 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 4) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 2) - :attack-shove-up (meters 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 18) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 58) - :stop-chase-distance (meters 58) - :frustration-time (seconds 30) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) - -(define *ram-boss-nav-enemy-info-no-shield* (new 'static 'nav-enemy-info - :idle-anim 13 - :walk-anim 12 - :turn-anim -1 - :notice-anim 19 - :run-anim 12 - :jump-anim 13 - :jump-land-anim 13 - :victory-anim 14 - :taunt-anim 14 - :die-anim 15 - :neck-joint 6 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 4) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 2) - :attack-shove-up (meters 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 18) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 58) - :stop-chase-distance (meters 58) - :frustration-time (seconds 30) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + (ram-boss-method-51 (_type_ vector) symbol :overlay-at nav-enemy-method-51) + (ram-boss-method-52 (_type_) symbol :overlay-at nav-enemy-method-52) + (ram-boss-method-57 (_type_ float) float :overlay-at nav-enemy-method-57)) + (:states (ram-boss-already-down basic) + ram-boss-forward-defend-block + ram-boss-idle + (ram-boss-jump-down basic) + ram-boss-jump-down-hit-ground + ram-boss-lose-shield + ram-boss-nav-resume + ram-boss-nav-start + ram-boss-show-anims + ram-boss-throw + ram-boss-tracking + ram-boss-up-defend-block)) + +(defskelgroup *ram-boss-sg* + ram-boss + ram-boss-lod0-jg + ram-boss-far-idle-ja + ((ram-boss-lod0-mg (meters 20)) (ram-boss-lod1-mg (meters 40)) (ram-boss-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 4.4) + :longest-edge (meters 1.2)) + +(define *ram-boss-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 13 + :walk-anim 11 + :turn-anim -1 + :notice-anim 19 + :run-anim 11 + :jump-anim 13 + :jump-land-anim 13 + :victory-anim 14 + :taunt-anim 14 + :die-anim 15 + :neck-joint 6 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 4) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 2) + :attack-shove-up (meters 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 18) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 58) + :stop-chase-distance (meters 58) + :frustration-time (seconds 30) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) + +(define *ram-boss-nav-enemy-info-no-shield* + (new 'static + 'nav-enemy-info + :idle-anim 13 + :walk-anim 12 + :turn-anim -1 + :notice-anim 19 + :run-anim 12 + :jump-anim 13 + :jump-land-anim 13 + :victory-anim 14 + :taunt-anim 14 + :die-anim 15 + :neck-joint 6 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 4) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 2) + :attack-shove-up (meters 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 18) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 58) + :stop-chase-distance (meters 58) + :frustration-time (seconds 30) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defpartgroup group-ram-boss-proj-grow :id 521 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1904) (sp-item 1905) (sp-item 2487)) - ) + :parts ((sp-item 1904) (sp-item 1905) (sp-item 2487))) (defpart 2487 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 96.0) - (:g 48.0 48.0) - (:b 0.0 32.0) - (:a 64.0 64.0) - (:fade-a -6.4) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 96.0) + (:g 48.0 48.0) + (:b 0.0 32.0) + (:a 64.0 64.0) + (:fade-a -6.4) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.4)))) (defpart 1904 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 2.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 160.0 32.0) - (:g 0.0 32.0) - (:b 0.0) - (:a 64.0) - (:vel-y (meters -0.033333335)) - (:fade-r -0.53333336) - (:fade-g 1.0666667) - (:fade-b 0.53333336) - (:fade-a 1.0666667) - (:timer (seconds 0.2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 2.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 160.0 32.0) + (:g 0.0 32.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters -0.033333335)) + (:fade-r -0.53333336) + (:fade-g 1.0666667) + (:fade-b 0.53333336) + (:fade-a 1.0666667) + (:timer (seconds 0.2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 1905 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 150.0 32.0) - (:g 24.0 74.0) - (:b 0.0 32.0) - (:a 64.0 64.0) - (:fade-a -6.4) - (:timer (seconds 0.035)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 150.0 32.0) + (:g 24.0 74.0) + (:b 0.0 32.0) + (:a 64.0 64.0) + (:fade-a -6.4) + (:timer (seconds 0.035)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.15)))) (defpartgroup group-ram-boss-proj-fly :id 522 :duration (seconds 1) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 1910 :flags (launch-asap) :binding 1908) - (sp-item 1908 :flags (start-dead) :binding 1909) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1910 :flags (launch-asap) :binding 1908) + (sp-item 1908 :flags (start-dead) :binding 1909) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)))) (defpart 1910 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3)) + (:func 'sparticle-track-root-prim))) (defpart 1908 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 32.0) - (:a 128.0) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.53333336) - (:fade-g -1.0666667) - (:fade-b -0.53333336) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:next-time (seconds 0.27)) - (:next-launcher 1912) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 32.0) + (:a 128.0) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.53333336) + (:fade-g -1.0666667) + (:fade-b -0.53333336) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:next-time (seconds 0.27)) + (:next-launcher 1912) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.1)))) (defpart 1912 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 1909 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 5.0) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 32.0) - (:a 128.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.53333336) - (:fade-g -1.0666667) - (:fade-b -0.53333336) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 1912) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 5.0) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 32.0) + (:a 128.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.53333336) + (:fade-g -1.0666667) + (:fade-b -0.53333336) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 1912) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpartgroup group-ram-boss-proj-hit :id 523 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1914) (sp-item 1915) (sp-item 1916)) - ) + :parts ((sp-item 1914) (sp-item 1915) (sp-item 1916))) (defpart 1914 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 64.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 96.0 64.0) - (:b 32.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.026666667) (meters 0.053333335)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g -0.42666668) - (:fade-b -0.21333334) - (:accel-y (meters -0.00016666666)) - (:friction 0.97) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 64.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 96.0 64.0) + (:b 32.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.053333335)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g -0.42666668) + (:fade-b -0.21333334) + (:accel-y (meters -0.00016666666)) + (:friction 0.97) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpart 1916 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 32.0) - (:a 32.0 32.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-r 0.21333334) - (:fade-g -0.42666668) - (:fade-b -0.21333334) - (:fade-a -0.30476192) - (:accel-y (meters -0.00016666666) (meters 0.00016666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1912) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 32.0) + (:a 32.0 32.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-r 0.21333334) + (:fade-g -0.42666668) + (:fade-b -0.21333334) + (:fade-a -0.30476192) + (:accel-y (meters -0.00016666666) (meters 0.00016666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1912) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 1915 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 32.0) - (:a 96.0) - (:fade-a -4.8) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 32.0) + (:a 96.0) + (:fade-a -4.8) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defpartgroup group-ram-boss-proj-die :id 524 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1914)) - ) + :parts ((sp-item 1914))) (defmethod projectile-method-24 ((this ram-boss-proj)) (with-pp (quaternion-rotate-local-x! (-> this root quat) (-> this root quat) (* 65718.05 (seconds-per-frame))) (quaternion-rotate-local-y! (-> this root quat) (-> this root quat) (* 32221.867 (seconds-per-frame))) (let ((f0-9 (* 5120.0 (+ 0.9 (* 0.1 (cos (* 873.81335 (the float (mod (current-time) 75))))))))) - (find-ground-and-draw-shadow - (-> this root trans) - (the-as vector #f) - f0-9 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - ) - (if (-> this launched?) - (spawn (-> this part2) (the-as vector (-> this root root-prim prim-core))) - ) + (find-ground-and-draw-shadow (-> this root trans) + (the-as vector #f) + f0-9 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0)) + (if (-> this launched?) (spawn (-> this part2) (the-as vector (-> this root root-prim prim-core)))) (let ((s5-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> s5-0 command) (sound-command set-param)) (set! (-> s5-0 id) (-> this sound-id)) @@ -477,81 +444,52 @@ (let ((gp-1 pp)) (when (= a1-4 #t) (if (and gp-1 (type-type? (-> gp-1 type) process-drawable) (nonzero? (-> (the-as process-drawable gp-1) root))) - (set! a1-4 (-> (the-as process-drawable gp-1) root trans)) - (set! a1-4 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> s5-0 parms trans) a1-4) - ) + (set! a1-4 (-> (the-as process-drawable gp-1) root trans)) + (set! a1-4 (the-as vector #f))))) + (sound-trans-convert (-> s5-0 parms trans) a1-4)) (set! (-> s5-0 parms mask) (sound-mask trans)) - (-> s5-0 id) - ) - (none) - ) - ) + (-> s5-0 id)) + (none))) (defun snow-ram-proj-update-velocity ((arg0 ram-boss-proj)) (when (>= (vector-vector-distance (-> arg0 parent-override 0 collide-info trans) (-> arg0 target)) - (vector-vector-distance (-> arg0 parent-override 0 collide-info trans) (-> arg0 root trans)) - ) + (vector-vector-distance (-> arg0 parent-override 0 collide-info trans) (-> arg0 root trans))) (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) (-> arg0 target) (-> arg0 root trans))) (s4-0 (new 'stack-no-clear 'vector)) - (s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root transv) 1.0)) - ) - (if (logtest? (-> arg0 root status) (cshape-moving-flags tsurf)) - (vector-flatten! s3-1 s3-1 (-> arg0 root local-normal)) - ) + (s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root transv) 1.0))) + (if (logtest? (-> arg0 root status) (cshape-moving-flags tsurf)) (vector-flatten! s3-1 s3-1 (-> arg0 root local-normal))) (vector-normalize-copy! s4-0 s3-1 1.0) (let ((s3-2 (new 'stack-no-clear 'matrix))) - (matrix-from-two-vectors-max-angle-partial! - s3-2 - s5-0 - s4-0 - (* (-> arg0 max-turn) (seconds-per-frame)) - (-> arg0 tween) - ) - (vector-matrix*! s5-0 s5-0 s3-2) - ) + (matrix-from-two-vectors-max-angle-partial! s3-2 s5-0 s4-0 (* (-> arg0 max-turn) (seconds-per-frame)) (-> arg0 tween)) + (vector-matrix*! s5-0 s5-0 s3-2)) (vector-normalize! s5-0 1.0) - (vector-float*! (-> arg0 root transv) s5-0 (-> arg0 max-speed)) - ) - ) + (vector-float*! (-> arg0 root transv) s5-0 (-> arg0 max-speed)))) 0 - (none) - ) + (none)) (defmethod projectile-method-25 ((this ram-boss-proj)) (go ram-boss-proj-growing) 0 - (none) - ) + (none)) (defmethod projectile-method-26 ((this ram-boss-proj)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) - (set! (-> s4-0 collide-with) - (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) - ) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object)) (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod projectile-method-27 ((this ram-boss-proj)) (set! (-> this charge-sound-id) (new 'static 'sound-id)) @@ -569,274 +507,226 @@ (set! (-> this sound-id) (sound-play "ramboss-track")) (let ((v1-12 (-> this parent-override))) (set! (-> v1-12 0 proj-stoked) #t) - (set! (-> v1-12 0 proj-status) (the-as uint 1)) - ) - (none) - ) + (set! (-> v1-12 0 proj-status) (the-as uint 1))) + (none)) (defmethod deactivate ((this ram-boss-proj)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type projectile deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this ram-boss-proj) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as ram-boss-proj ((method-of-type projectile relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as ram-boss-proj ((method-of-type projectile relocate) this arg0))) (defmethod projectile-method-28 ((this ram-boss-proj)) (when (and *target* (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) (let ((gp-0 (-> this target))) (set! (-> gp-0 quad) (-> (target-pos 0) quad)) (+! (-> gp-0 y) 4915.2) (let ((f0-2 (vector-vector-distance gp-0 (-> this root trans))) - (a2-0 (new 'stack-no-clear 'vector)) - ) - (if (>= 0.0 f0-2) - (set! f0-2 409.6) - ) + (a2-0 (new 'stack-no-clear 'vector))) + (if (>= 0.0 f0-2) (set! f0-2 409.6)) (set! (-> a2-0 quad) (-> *target* control transv quad)) (set! (-> a2-0 y) 0.0) - (let ((f0-3 (/ f0-2 (* 40960.0 (seconds-per-frame))))) - (vector+float*! gp-0 gp-0 a2-0 (* f0-3 (seconds-per-frame))) - ) - ) - ) - ) - (none) - ) + (let ((f0-3 (/ f0-2 (* 40960.0 (seconds-per-frame))))) (vector+float*! gp-0 gp-0 a2-0 (* f0-3 (seconds-per-frame))))))) + (none)) (defstate ram-boss-proj-growing (ram-boss-proj) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('launch) - (let ((v1-1 (-> self parent-override))) - (set! (-> v1-1 0 proj-stoked) #f) - (set! (-> v1-1 0 proj-status) (the-as uint 0)) - ) - 0 - (go ram-boss-proj-launch) - ) - ) - ) - :code (behavior () - (set! (-> self charge-sound-id) (sound-play "ramboss-charge")) - (loop - (let ((gp-1 (-> self parent-override))) - (when (-> gp-1 0 dead?) - (set! (-> gp-1 0 proj-stoked) #f) - (set! (-> gp-1 0 proj-status) (the-as uint 0)) - (sound-stop (-> self charge-sound-id)) - (go-virtual projectile-dissipate) - ) - (nav-enemy-method-54 (-> gp-1 0) (-> self root trans)) - (update-transforms! (-> self root)) - (cond - ((-> gp-1 0 proj-stoked) - (set! (-> gp-1 0 proj-stoked) #f) - (set! (-> self growth) (seek-with-smooth (-> self growth) 1.0 (* 1.25 (seconds-per-frame)) 0.8 0.01)) - (if (>= (-> self growth) 1.0) - (set! (-> gp-1 0 proj-status) (the-as uint 2)) - (set! (-> gp-1 0 proj-status) (the-as uint 1)) - ) - ) - (else - (set! (-> self growth) 0.0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('launch) + (let ((v1-1 (-> self parent-override))) + (set! (-> v1-1 0 proj-stoked) #f) + (set! (-> v1-1 0 proj-status) (the-as uint 0))) + 0 + (go ram-boss-proj-launch)))) + :code + (behavior () + (set! (-> self charge-sound-id) (sound-play "ramboss-charge")) + (loop + (let ((gp-1 (-> self parent-override))) + (when (-> gp-1 0 dead?) (set! (-> gp-1 0 proj-stoked) #f) (set! (-> gp-1 0 proj-status) (the-as uint 0)) (sound-stop (-> self charge-sound-id)) - (go-virtual projectile-dissipate) - ) - ) - ) - (let ((f0-6 (-> self growth))) - (set-vector! (-> self root scale) f0-6 f0-6 f0-6 1.0) - ) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - ) - ) + (go-virtual projectile-dissipate)) + (nav-enemy-method-54 (-> gp-1 0) (-> self root trans)) + (update-transforms! (-> self root)) + (cond + ((-> gp-1 0 proj-stoked) + (set! (-> gp-1 0 proj-stoked) #f) + (set! (-> self growth) (seek-with-smooth (-> self growth) 1.0 (* 1.25 (seconds-per-frame)) 0.8 0.01)) + (if (>= (-> self growth) 1.0) (set! (-> gp-1 0 proj-status) (the-as uint 2)) (set! (-> gp-1 0 proj-status) (the-as uint 1)))) + (else + (set! (-> self growth) 0.0) + (set! (-> gp-1 0 proj-stoked) #f) + (set! (-> gp-1 0 proj-status) (the-as uint 0)) + (sound-stop (-> self charge-sound-id)) + (go-virtual projectile-dissipate)))) + (let ((f0-6 (-> self growth))) (set-vector! (-> self root scale) f0-6 f0-6 f0-6 1.0)) + (spawn (-> self part) (-> self root trans)) + (suspend)))) (defstate ram-boss-proj-launch (ram-boss-proj) - :code (behavior () - (sound-play "ramboss-fire") - (set! (-> self launched?) #t) - (set! (-> self growth) 1.0) - (logior! (-> self root root-prim prim-core action) (collide-action solid)) - (set-time! (-> self launch-time)) - (vector-float*! (-> self root transv) (-> self parent-override 0 proj-launch-vec) 40960.0) - (set! (-> self target quad) (-> (target-pos 0) quad)) - (+! (-> self target y) 4915.2) - (set! (-> self target-base quad) (-> self target quad)) - (go-virtual projectile-moving) - ) - ) + :code + (behavior () + (sound-play "ramboss-fire") + (set! (-> self launched?) #t) + (set! (-> self growth) 1.0) + (logior! (-> self root root-prim prim-core action) (collide-action solid)) + (set-time! (-> self launch-time)) + (vector-float*! (-> self root transv) (-> self parent-override 0 proj-launch-vec) 40960.0) + (set! (-> self target quad) (-> (target-pos 0) quad)) + (+! (-> self target y) 4915.2) + (set! (-> self target-base quad) (-> self target quad)) + (go-virtual projectile-moving))) (defstate projectile-impact (ram-boss-proj) :virtual #t - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 523) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (sound-play "ramboss-hit") - (suspend) - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 523) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (sound-play "ramboss-hit") + (suspend) + (go-virtual projectile-die))) (defstate projectile-dissipate (ram-boss-proj) :virtual #t - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 524) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (suspend) - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 524) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (suspend) + (go-virtual projectile-die))) (defpartgroup group-ram-boss-shield-on-fire :id 525 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1919)) - ) + :parts ((sp-item 1919))) (defpart 1919 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 1) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.023529412)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.5058824) - (:friction 0.98) - (:timer (seconds 0.27)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.023529412)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.5058824) + (:friction 0.98) + (:timer (seconds 0.27)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-ram-boss-foot-puff :id 574 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2367) (sp-item 2368) (sp-item 2369)) - ) + :parts ((sp-item 2367) (sp-item 2368) (sp-item 2369))) (defpart 2367 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2368 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2369 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 196.0 2.0 64.0) - (:g 196.0 1 64.0) - (:b 196.0 1 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.015) (meters 0.006666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00066666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 196.0 2.0 64.0) + (:g 196.0 1 64.0) + (:b 196.0 1 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.015) (meters 0.006666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00066666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) ;; WARN: disable def twice: 194. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defbehavior ram-boss-on-ground-event-handler ram-boss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -851,78 +741,40 @@ (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 2))))) (go ram-boss-lose-shield) (return #t) - v0-4 - ) + v0-4) ((begin - (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))) - (do-push-aways! (-> self collide-info)) - ) - (level-hint-spawn - (text-id snow-ram-boss-red-eco-hint) - "sksp0346" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (>= (- (-> (target-pos 0) y) (-> self collide-info trans y)) 9420.8) - ) + (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))) (do-push-aways! (-> self collide-info))) + (level-hint-spawn (text-id snow-ram-boss-red-eco-hint) "sksp0346" (the-as entity #f) *entity-pool* (game-task none)) + (>= (- (-> (target-pos 0) y) (-> self collide-info trans y)) 9420.8)) (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 4)) (shove-up (meters 2))))) (go ram-boss-up-defend-block) (return #t) - v0-4 - ) + v0-4) (else - (when (= arg2 'attack) - (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 4))))) - (go ram-boss-forward-defend-block) - (return #t) - v0-4 - ) - ) - ) - ) - (else - (go-virtual nav-enemy-die) - (return #t) - v0-4 - ) - ) - ) + (when (= arg2 'attack) + (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 4))))) + (go ram-boss-forward-defend-block) + (return #t) + v0-4)))) + (else (go-virtual nav-enemy-die) (return #t) v0-4))) (('touch) - (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))) - (do-push-aways! (-> self collide-info)) - ) + (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))) (do-push-aways! (-> self collide-info))) (cond ((-> self has-shield?) (cond ((>= (- (-> (target-pos 0) y) (-> self collide-info trans y)) 9420.8) - (send-event - arg0 - 'shove - (-> arg3 param 0) - (static-attack-info ((shove-back (meters 4)) (shove-up (meters 2)))) - ) + (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-back (meters 4)) (shove-up (meters 2))))) (go ram-boss-up-defend-block) (return #t) - v0-4 - ) + v0-4) (else - (when (= arg2 'attack) - (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-back (meters 4))))) - (go ram-boss-forward-defend-block) - (return #t) - v0-4 - ) - ) - ) - ) + (when (= arg2 'attack) + (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-back (meters 4))))) + (go ram-boss-forward-defend-block) + (return #t) + v0-4)))) (else - (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic) - (go-virtual nav-enemy-victory) - ) - ) - ) - ) + (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic) (go-virtual nav-enemy-victory))))) (('notify) (when (= (-> arg0 type) ram-boss-proj) (let ((v1-66 arg0)) @@ -932,61 +784,34 @@ (set! (-> self frustration) 0) (go-virtual nav-enemy-victory) (return #t) - v0-4 - ) - ) + v0-4)) ((= (-> arg3 param 0) 'die) (let* ((v1-73 (- (current-time) (-> (the-as ram-boss-proj v1-66) launch-time))) - (v1-74 (the-as int (- (seconds 4) v1-73))) - ) + (v1-74 (the-as int (- (seconds 4) v1-73)))) (cond - ((< (seconds 4) (the-as time-frame v1-74)) - (set! v1-74 1200) - ) - ((< (the-as time-frame v1-74) 0) - (set! v1-74 0) - ) - ) - (+! (-> self frustration) (the int (* 0.00083333335 (the float (* v1-74 128))))) - ) + ((< (seconds 4) (the-as time-frame v1-74)) (set! v1-74 1200)) + ((< (the-as time-frame v1-74) 0) (set! v1-74 0))) + (+! (-> self frustration) (the int (* 0.00083333335 (the float (* v1-74 128)))))) (when (< 256 (-> self frustration)) (set! v0-4 256) (set! (-> self frustration) (the-as int v0-4)) - v0-4 - ) - ) - ) - ) - ) - ) - ) - ) + v0-4)))))))) (defmethod deactivate ((this ram-boss)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type nav-enemy deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this ram-boss) (arg0 int)) - (if (nonzero? (-> this shield-jmod)) - (&+! (-> this shield-jmod) arg0) - ) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as ram-boss ((method-of-type nav-enemy relocate) this arg0)) - ) + (if (nonzero? (-> this shield-jmod)) (&+! (-> this shield-jmod) arg0)) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as ram-boss ((method-of-type nav-enemy relocate) this arg0))) (defmethod initialize-collision ((this ram-boss)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 4) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy wall-object)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -999,39 +824,32 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 -2048.0 6144.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 8601.6 -2048.0 7782.4) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense no-offense)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s4-0 s3-2) - ) + (append-prim s4-0 s3-2)) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-3 prim-core offense) (collide-offense indestructible)) (set! (-> s3-3 transform-index) 3) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 409.6) - (append-prim s4-0 s3-3) - ) - ) + (append-prim s4-0 s3-3))) (set! (-> s5-0 nav-radius) 10240.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod ram-boss-method-52 ((this ram-boss)) (let ((v1-1 (the-as basic (-> this collide-info root-prim)))) @@ -1048,32 +866,19 @@ (set! (-> v0-0 y) 819.2) (set! (-> v0-0 z) 4505.6) (set! (-> v0-0 w) 8192.0) - (the-as symbol v0-0) - ) - ) - ) - ) + (the-as symbol v0-0))))) (defmethod nav-enemy-method-53 ((this ram-boss)) (let ((v1-1 (the-as (array collide-shape-prim) (-> this collide-info root-prim)))) - (let ((a0-1 (-> v1-1 16))) - (set! (-> a0-1 prim-core offense) (collide-offense touch)) - ) - (let ((a0-2 (-> v1-1 17))) - (set! (-> a0-2 prim-core offense) (collide-offense touch)) - ) - (let ((a0-3 (-> v1-1 18))) - (set! (-> a0-3 prim-core offense) (collide-offense touch)) - ) + (let ((a0-1 (-> v1-1 16))) (set! (-> a0-1 prim-core offense) (collide-offense touch))) + (let ((a0-2 (-> v1-1 17))) (set! (-> a0-2 prim-core offense) (collide-offense touch))) + (let ((a0-3 (-> v1-1 18))) (set! (-> a0-3 prim-core offense) (collide-offense touch))) (let ((v1-2 (-> v1-1 19))) (logclear! (-> v1-2 prim-core action) (collide-action solid)) (set! (-> v1-2 collide-with) (collide-kind)) (set! (-> v1-2 prim-core collide-as) (collide-kind)) - (set! (-> v1-2 prim-core offense) (collide-offense no-offense)) - ) - ) - (the-as symbol 0) - ) + (set! (-> v1-2 prim-core offense) (collide-offense no-offense)))) + (the-as symbol 0)) (defmethod nav-enemy-method-48 ((this ram-boss)) (initialize-skeleton this *ram-boss-sg* '()) @@ -1090,15 +895,12 @@ (init-jm! this *ram-boss-nav-enemy-info-no-shield*) (let ((v1-23 (-> this shield-jmod))) (set! (-> v1-23 enable) #t) - (set! (-> v1-23 transform scale quad) (the-as uint128 0)) - ) - ) + (set! (-> v1-23 transform scale quad) (the-as uint128 0)))) (set! (-> this neck up) (the-as uint 1)) (set! (-> this neck nose) (the-as uint 2)) (set! (-> this neck ear) (the-as uint 0)) 0 - (none) - ) + (none)) (defbehavior ram-boss-init-by-other ram-boss ((arg0 basic) (arg1 nav-enemy) (arg2 symbol)) (set! (-> self dead?) #f) @@ -1114,81 +916,52 @@ (set! (-> self collide-info trans quad) (-> arg1 collide-info trans quad)) (set-vector! (-> self collide-info scale) 1.0 1.0 1.0 1.0) (let ((t9-2 quaternion-copy!) - (a0-6 (-> self collide-info quat)) - ) + (a0-6 (-> self collide-info quat))) (t9-2 a0-6 (-> arg1 collide-info quat)) (cond - (arg2 - (go ram-boss-already-down (the-as basic a0-6)) - ) - (else - (ja-post) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go ram-boss-idle) - ) - ) - ) - (none) - ) + (arg2 (go ram-boss-already-down (the-as basic a0-6))) + (else (ja-post) (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) (go ram-boss-idle)))) + (none)) (defmethod nav-enemy-method-54 ((this ram-boss) (arg0 vector)) (let ((a2-0 (-> this node-list data 18 bone transform))) (set-vector! arg0 0.0 0.0 -2457.6 1.0) - (vector-matrix*! arg0 arg0 a2-0) - ) - (the-as symbol (vector-float*! arg0 arg0 (/ 1.0 (-> arg0 w)))) - ) + (vector-matrix*! arg0 arg0 a2-0)) + (the-as symbol (vector-float*! arg0 arg0 (/ 1.0 (-> arg0 w))))) (defmethod nav-enemy-method-55 ((this ram-boss)) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> this collide-info trans quad)) (+! (-> s5-0 y) 8192.0) (set! (-> s4-0 quad) (-> (target-pos 0) quad)) (+! (-> s4-0 y) 4915.2) (vector-! s4-0 s4-0 s5-0) (let* ((t2-0 (new 'stack-no-clear 'collide-tri-result)) - (v0-0 (< (fill-and-probe-using-line-sphere - *collide-cache* - s5-0 - s4-0 - 1228.8 - (collide-kind background cak-2 ground-object) - this - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - ) - ) + (v0-0 (< (fill-and-probe-using-line-sphere *collide-cache* + s5-0 + s4-0 + 1228.8 + (collide-kind background cak-2 ground-object) + this + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0))) (b! #t cfg-7 :delay (nop!)) (the-as none 0) (set! v0-0 (the-as symbol #f)) (label cfg-7) - v0-0 - ) - ) - ) + v0-0))) (defmethod ram-boss-method-51 ((this ram-boss) (arg0 vector)) (let* ((f30-0 (quaternion-y-angle (-> this collide-info quat))) (f0-2 (atan (-> arg0 x) (-> arg0 z))) - (f0-3 (deg- f30-0 f0-2)) - ) + (f0-3 (deg- f30-0 f0-2))) (when (< (fabs f0-3) 10922.667) - (if (< 1820.4445 f0-3) - (vector-rotate-around-y! arg0 arg0 (+ -1820.4445 f0-3)) - ) - (return #f) - ) - ) - #t - ) + (if (< 1820.4445 f0-3) (vector-rotate-around-y! arg0 arg0 (+ -1820.4445 f0-3))) + (return #f))) + #t) (defmethod set-jump-height-factor! ((this ram-boss) (arg0 int)) (cond @@ -1198,651 +971,456 @@ (set! (-> this proj-stoked) #t) (let ((s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (the-as uint128 0)) - (let ((v1-9 (process-spawn - ram-boss-proj - :init projectile-init-by-other - (-> this entity) - (-> this collide-info trans) - s5-0 - 0 - (process->handle *target*) - :to this - ) - ) - ) - (set! (-> (the-as (pointer ram-boss-proj) v1-9) 0 notify-handle) (process->handle this)) - ) - ) - ) - ) - ) - (else - (set! (-> this proj-stoked) #t) - ) - ) - (none) - ) + (let ((v1-9 (process-spawn ram-boss-proj + :init + projectile-init-by-other + (-> this entity) + (-> this collide-info trans) + s5-0 + 0 + (process->handle *target*) + :to + this))) + (set! (-> (the-as (pointer ram-boss-proj) v1-9) 0 notify-handle) (process->handle this))))))) + (else (set! (-> this proj-stoked) #t))) + (none)) (defstate ram-boss-show-anims (ram-boss) - :trans (behavior () - 0 - ) - :code (behavior () - 0 - ) - :post transform-post - ) + :trans + (behavior () + 0) + :code + (behavior () + 0) + :post transform-post) (defstate ram-boss-idle (ram-boss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('jump) - (go ram-boss-jump-down proc) - ) - (('touch 'attack) - (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> block param 0)) 'generic) - ) - ) - ) - :enter (behavior () - ((-> (method-of-type nav-enemy nav-enemy-idle) enter)) - (set! (-> self frustration) 0) - 0 - ) - :code (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (loop - (clone-anim-once - (ppointer->handle (-> self parent-override)) - (the-as int (-> self draw origin-joint-index)) - #t - "" - ) - (let ((a0-4 (-> self parent-override 0 node-list data 9 bone transform))) - (set! (-> self collide-info trans quad) (-> a0-4 vector 3 quad)) - ) - (transform-post) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self collide-info root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('jump) (go ram-boss-jump-down proc)) + (('touch 'attack) (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> block param 0)) 'generic)))) + :enter + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-idle) enter)) + (set! (-> self frustration) 0) + 0) + :code + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (loop + (clone-anim-once (ppointer->handle (-> self parent-override)) (the-as int (-> self draw origin-joint-index)) #t "") + (let ((a0-4 (-> self parent-override 0 node-list data 9 bone transform))) + (set! (-> self collide-info trans quad) (-> a0-4 vector 3 quad))) + (transform-post) + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self collide-info root-prim)) prims 0 prim-core)) + 'attacking + self))) + (suspend)))) (defstate ram-boss-jump-down (ram-boss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> block param 0)) 'generic) - ) - ) - ) - :enter (behavior ((arg0 basic)) - (ram-boss-method-52 self) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (-> self node-list data 0 bone transform)) - ) - (let ((s1-0 (new 'stack-no-clear 'matrix)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (matrix-4x4-inverse! s1-0 gp-0) - (vector-matrix*! s4-0 (target-pos 0) s1-0) - (set-vector! s5-0 -49152.0 -32768.0 16384.0 1.0) - (if (< (-> s4-0 x) 0.0) - (set! (-> s5-0 x) (- (-> s5-0 x))) - ) - ) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (vector-matrix*! s4-1 s5-0 gp-0) - (vector-! s4-1 s4-1 (-> gp-0 vector 3)) - (set! (-> s4-1 y) 0.0) - (vector-normalize! s4-1 1.0) - (set! (-> self collide-info transv x) (* 65536.0 (-> s4-1 x))) - (set! (-> self collide-info transv z) (* 65536.0 (-> s4-1 z))) - ) - ) - (set! (-> self collide-info transv y) 102400.0) - ) - :trans (behavior () - (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 16384.0 - #f - #f - #f - ) - (if (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - (go ram-boss-jump-down-hit-ground) - ) - ) - :code (behavior ((arg0 basic)) - (ja-channel-push! 1 (seconds 0.8)) - (ja-no-eval :group! ram-boss-dismount-start-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) - (set! (-> gp-0 y) 0.0) - (seek-toward-heading-vec! (-> self collide-info) gp-0 182044.44 (seconds 0.01)) - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post nav-enemy-simple-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> block param 0)) 'generic)))) + :enter + (behavior ((arg0 basic)) + (ram-boss-method-52 self) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (-> self node-list data 0 bone transform))) + (let ((s1-0 (new 'stack-no-clear 'matrix)) + (s4-0 (new 'stack-no-clear 'vector))) + (matrix-4x4-inverse! s1-0 gp-0) + (vector-matrix*! s4-0 (target-pos 0) s1-0) + (set-vector! s5-0 -49152.0 -32768.0 16384.0 1.0) + (if (< (-> s4-0 x) 0.0) (set! (-> s5-0 x) (- (-> s5-0 x))))) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (vector-matrix*! s4-1 s5-0 gp-0) + (vector-! s4-1 s4-1 (-> gp-0 vector 3)) + (set! (-> s4-1 y) 0.0) + (vector-normalize! s4-1 1.0) + (set! (-> self collide-info transv x) (* 65536.0 (-> s4-1 x))) + (set! (-> self collide-info transv z) (* 65536.0 (-> s4-1 z))))) + (set! (-> self collide-info transv y) 102400.0)) + :trans + (behavior () + (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 16384.0 + #f + #f + #f) + (if (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) (go ram-boss-jump-down-hit-ground))) + :code + (behavior ((arg0 basic)) + (ja-channel-push! 1 (seconds 0.8)) + (ja-no-eval :group! ram-boss-dismount-start-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) + (set! (-> gp-0 y) 0.0) + (seek-toward-heading-vec! (-> self collide-info) gp-0 182044.44 (seconds 0.01))) + (suspend) + (ja :num! (seek!))) + (loop + (suspend))) + :post nav-enemy-simple-post) (defstate ram-boss-jump-down-hit-ground (ram-boss) - :event (-> ram-boss-jump-down event) - :code (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) - (ja-no-eval :group! ram-boss-dismount-hit-ground-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go ram-boss-nav-start) - ) - :post nav-enemy-simple-post - ) + :event + (-> ram-boss-jump-down + event) + :code + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) + (ja-no-eval :group! ram-boss-dismount-hit-ground-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (go ram-boss-nav-start)) + :post nav-enemy-simple-post) (defstate ram-boss-already-down (ram-boss) - :code (behavior ((arg0 basic)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (ram-boss-method-52 self) - (let ((a1-0 (new 'stack-no-clear 'vector)) - (a2-0 (-> self parent-override 0 node-list data 0 bone transform)) - ) - (set-vector! a1-0 0.0 -16384.0 -32768.0 1.0) - (vector-matrix*! (-> self collide-info trans) a1-0 a2-0) - ) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) - (set! (-> gp-0 y) 0.0) - (set-heading-vec! (-> self collide-info) gp-0) - ) - (go ram-boss-nav-start) - ) - ) + :code + (behavior ((arg0 basic)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (ram-boss-method-52 self) + (let ((a1-0 (new 'stack-no-clear 'vector)) + (a2-0 (-> self parent-override 0 node-list data 0 bone transform))) + (set-vector! a1-0 0.0 -16384.0 -32768.0 1.0) + (vector-matrix*! (-> self collide-info trans) a1-0 a2-0)) + (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) + (set! (-> gp-0 y) 0.0) + (set-heading-vec! (-> self collide-info) gp-0)) + (go ram-boss-nav-start))) (defstate ram-boss-nav-start (ram-boss) - :code (behavior () - (let ((a1-1 (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) - (when (not a1-1) - (go process-drawable-art-error "not on nav mesh") - (return #f) - ) - (set-current-poly! (-> self nav) a1-1) - ) - (go ram-boss-nav-resume) - ) - ) + :code + (behavior () + (let ((a1-1 (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) + (when (not a1-1) + (go process-drawable-art-error "not on nav mesh") + (return #f)) + (set-current-poly! (-> self nav) a1-1)) + (go ram-boss-nav-resume))) (defstate ram-boss-nav-resume (ram-boss) - :code (behavior () - (set! (-> self frustration) 0) - (when *target* - (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (cond - ((>= 18432.0 f30-0) - (go ram-boss-tracking) - ) - ((not (target-in-range? self 237568.0)) - (go-virtual nav-enemy-patrol) - ) - ((and (< f30-0 106496.0) (nav-enemy-method-55 self)) - (go-virtual nav-enemy-attack) - ) - ((< f30-0 237568.0) - (go-virtual nav-enemy-chase) - ) - (else - (go-virtual nav-enemy-patrol) - ) - ) - ) - ) - (go-virtual nav-enemy-idle) - ) - ) + :code + (behavior () + (set! (-> self frustration) 0) + (when *target* + (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (cond + ((>= 18432.0 f30-0) (go ram-boss-tracking)) + ((not (target-in-range? self 237568.0)) (go-virtual nav-enemy-patrol)) + ((and (< f30-0 106496.0) (nav-enemy-method-55 self)) (go-virtual nav-enemy-attack)) + ((< f30-0 237568.0) (go-virtual nav-enemy-chase)) + (else (go-virtual nav-enemy-patrol))))) + (go-virtual nav-enemy-idle))) (defstate nav-enemy-patrol (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler - :enter (behavior () - ((-> (method-of-type nav-enemy nav-enemy-patrol) enter)) - (set! (-> self state-timeout) (-> self nav-enemy-patrol-timeout)) - (set! (-> self nav-enemy-patrol-timeout) (seconds 1)) - (ja-channel-push! 1 (seconds 0.3)) - ) - :trans (behavior () - (when *target* - (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (if (>= 18432.0 f0-0) - (go ram-boss-tracking) - ) - ) - ) - ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) - ) - ) + :enter + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-patrol) enter)) + (set! (-> self state-timeout) (-> self nav-enemy-patrol-timeout)) + (set! (-> self nav-enemy-patrol-timeout) (seconds 1)) + (ja-channel-push! 1 (seconds 0.3))) + :trans + (behavior () + (when *target* + (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (if (>= 18432.0 f0-0) (go ram-boss-tracking)))) + ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)))) (defstate nav-enemy-chase (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler - :enter (behavior () - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-chase) enter))) - (if t9-0 - (t9-0) - ) - ) - ) - :trans (behavior () - (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (if (>= 18432.0 f30-0) - (go ram-boss-tracking) - ) - (when (time-elapsed? (-> self state-time) (-> self reaction-time)) - (if (not (target-in-range? self (-> self nav-info stop-chase-distance))) - (go-virtual nav-enemy-patrol) - ) - (if (and (>= 73728.0 f30-0) (nav-enemy-method-55 self)) - (go-virtual nav-enemy-attack) - ) - ) - ) - (cond - ((logtest? (nav-control-flags navcf17) (-> self nav flags)) - (if (time-elapsed? (-> self free-time) (seconds 1)) - (go-virtual nav-enemy-patrol) - ) - ) - (else - (set-time! (-> self free-time)) - ) - ) - 0 - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-chase) enter))) (if t9-0 (t9-0)))) + :trans + (behavior () + (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (if (>= 18432.0 f30-0) (go ram-boss-tracking)) + (when (time-elapsed? (-> self state-time) (-> self reaction-time)) + (if (not (target-in-range? self (-> self nav-info stop-chase-distance))) (go-virtual nav-enemy-patrol)) + (if (and (>= 73728.0 f30-0) (nav-enemy-method-55 self)) (go-virtual nav-enemy-attack)))) + (cond + ((logtest? (nav-control-flags navcf17) (-> self nav flags)) + (if (time-elapsed? (-> self free-time) (seconds 1)) (go-virtual nav-enemy-patrol))) + (else (set-time! (-> self free-time)))) + 0)) (defstate nav-enemy-attack (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler :trans #f - :code (behavior () - (go ram-boss-tracking) - ) - ) + :code + (behavior () + (go ram-boss-tracking))) (defmethod ram-boss-method-57 ((this ram-boss) (arg0 float)) (let ((f0-0 0.0)) (when *target* (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-! s3-0 (target-pos 0) (-> this collide-info trans)) - (let ((f0-1 (vector-x-angle s3-0))) - (set! f0-0 (* 0.000091552734 f0-1)) - ) - ) + (let ((f0-1 (vector-x-angle s3-0))) (set! f0-0 (* 0.000091552734 f0-1)))) (cond - ((< f0-0 0.0) - (set! f0-0 0.0) - ) - ((< 1.0 f0-0) - (set! f0-0 1.0) - ) - ) - (if (>= arg0 0.0) - (set! f0-0 (* 0.5 (+ f0-0 arg0))) - ) - ) - f0-0 - ) - ) + ((< f0-0 0.0) (set! f0-0 0.0)) + ((< 1.0 f0-0) (set! f0-0 1.0))) + (if (>= arg0 0.0) (set! f0-0 (* 0.5 (+ f0-0 arg0))))) + f0-0)) (defstate ram-boss-tracking (ram-boss) :event ram-boss-on-ground-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self facing-y) (quaternion-y-angle (-> self collide-info quat))) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - ) - :trans (behavior () - (set-jump-height-factor! self (the-as int (time-elapsed? (-> self state-time) (seconds 0.75)))) - (if (not *target*) - (go-virtual nav-enemy-patrol) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) - (set! (-> self player-dir-y) (atan (-> gp-0 x) (-> gp-0 z))) - ) - (let* ((v1-13 (if (-> self has-shield?) - 145635.56 - 41870.223 - ) - ) - (f30-0 (-> self facing-y)) - (f0-6 (deg-seek-smooth f30-0 (-> self player-dir-y) (* v1-13 (seconds-per-frame)) 0.25)) - (f0-7 (deg- f0-6 f30-0)) - ) - (cond - ((< 18.204445 (fabs f0-7)) - (set! (-> self last-turn-speed) (* (fabs f0-7) (-> *display* frames-per-second))) - (quaternion-rotate-y! (-> self collide-info quat) (-> self collide-info quat) f0-7) - (set! (-> self facing-y) (quaternion-y-angle (-> self collide-info quat))) - ) - (else - (set! (-> self last-turn-speed) 0.0) - ) - ) - ) - (let ((f0-10 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (cond - ((>= f0-10 106496.0) - (if (>= f0-10 237568.0) - (go-virtual nav-enemy-patrol) - ) - (go-virtual nav-enemy-chase) - ) - ((< 18432.0 f0-10) - (if (not (nav-enemy-method-55 self)) - (go-virtual nav-enemy-chase) - ) - (when (>= (-> self frustration) 256) - (set! (-> self frustration) 0) - (set! (-> self nav-enemy-patrol-timeout) (rand-vu-int-range (seconds 2) (seconds 5))) - (go-virtual nav-enemy-patrol) - ) - ) - ) - ) - (when (and (= (-> self proj-status) 2) - (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (time-elapsed? (-> self state-time) (seconds 0.2)) - ) - (let ((gp-2 (new 'stack-no-clear 'vector)) - (s5-2 (new 'stack-no-clear 'vector)) - ) - (nav-enemy-method-54 self s5-2) - (set! (-> gp-2 quad) (-> (target-pos 0) quad)) - (+! (-> gp-2 y) 4915.2) - (vector-! (-> self proj-launch-vec) gp-2 s5-2) - ) - (vector-normalize! (-> self proj-launch-vec) 1.0) - (if (not (ram-boss-method-51 self (-> self proj-launch-vec))) - (go ram-boss-throw) - ) - ) - 0 - ) - :code (behavior () - (let ((f30-0 -1.0)) - (loop - (set! f30-0 (ram-boss-method-57 self f30-0)) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self facing-y) (quaternion-y-angle (-> self collide-info quat))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2))) + :trans + (behavior () + (set-jump-height-factor! self (the-as int (time-elapsed? (-> self state-time) (seconds 0.75)))) + (if (not *target*) (go-virtual nav-enemy-patrol)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) + (set! (-> self player-dir-y) (atan (-> gp-0 x) (-> gp-0 z)))) + (let* ((v1-13 (if (-> self has-shield?) 145635.56 41870.223)) + (f30-0 (-> self facing-y)) + (f0-6 (deg-seek-smooth f30-0 (-> self player-dir-y) (* v1-13 (seconds-per-frame)) 0.25)) + (f0-7 (deg- f0-6 f30-0))) (cond - ((< 5461.3335 (-> self last-turn-speed)) - (cond - ((-> self has-shield?) - (when (not (ja-group? ram-boss-forward-defend-tracking-ja)) - (ja-channel-push! 2 (seconds 0.2)) - (ja :group! ram-boss-forward-defend-tracking-ja :num! min) - (ja :chan 1 :group! ram-boss-up-defend-tracking-ja :num! (chan 0) :frame-interp f30-0) - ) - ) - (else - (when (not (ja-group? ram-boss-forward-defend-tracking-no-shield-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! ram-boss-forward-defend-tracking-no-shield-ja :num! min) - ) - ) - ) - ) - ((-> self has-shield?) - (when (not (ja-group? ram-boss-forward-defend-ja)) - (ja-channel-push! 2 (seconds 0.2)) - (ja :group! ram-boss-forward-defend-ja :num! min) - (ja :chan 1 :group! ram-boss-up-defend-ja :num! (chan 0) :frame-interp f30-0) - ) - ) - (else - (when (not (ja-group? ram-boss-forward-defend-no-shield-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! ram-boss-forward-defend-no-shield-ja :num! min) - ) - ) - ) - (suspend) - (ja :num! (loop!)) - (if (= (ja-group-size) 2) - (ja :chan 1 :num! (chan 0) :frame-interp f30-0) - ) - ) - ) - ) - :post nav-enemy-simple-post - ) + ((< 18.204445 (fabs f0-7)) + (set! (-> self last-turn-speed) (* (fabs f0-7) (-> *display* frames-per-second))) + (quaternion-rotate-y! (-> self collide-info quat) (-> self collide-info quat) f0-7) + (set! (-> self facing-y) (quaternion-y-angle (-> self collide-info quat)))) + (else (set! (-> self last-turn-speed) 0.0)))) + (let ((f0-10 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (cond + ((>= f0-10 106496.0) (if (>= f0-10 237568.0) (go-virtual nav-enemy-patrol)) (go-virtual nav-enemy-chase)) + ((< 18432.0 f0-10) + (if (not (nav-enemy-method-55 self)) (go-virtual nav-enemy-chase)) + (when (>= (-> self frustration) 256) + (set! (-> self frustration) 0) + (set! (-> self nav-enemy-patrol-timeout) (rand-vu-int-range (seconds 2) (seconds 5))) + (go-virtual nav-enemy-patrol))))) + (when (and (= (-> self proj-status) 2) + (not (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (time-elapsed? (-> self state-time) (seconds 0.2))) + (let ((gp-2 (new 'stack-no-clear 'vector)) + (s5-2 (new 'stack-no-clear 'vector))) + (nav-enemy-method-54 self s5-2) + (set! (-> gp-2 quad) (-> (target-pos 0) quad)) + (+! (-> gp-2 y) 4915.2) + (vector-! (-> self proj-launch-vec) gp-2 s5-2)) + (vector-normalize! (-> self proj-launch-vec) 1.0) + (if (not (ram-boss-method-51 self (-> self proj-launch-vec))) (go ram-boss-throw))) + 0) + :code + (behavior () + (let ((f30-0 -1.0)) + (loop + (set! f30-0 (ram-boss-method-57 self f30-0)) + (cond + ((< 5461.3335 (-> self last-turn-speed)) + (cond + ((-> self has-shield?) + (when (not (ja-group? ram-boss-forward-defend-tracking-ja)) + (ja-channel-push! 2 (seconds 0.2)) + (ja :group! ram-boss-forward-defend-tracking-ja :num! min) + (ja :chan 1 :group! ram-boss-up-defend-tracking-ja :num! (chan 0) :frame-interp f30-0))) + (else + (when (not (ja-group? ram-boss-forward-defend-tracking-no-shield-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! ram-boss-forward-defend-tracking-no-shield-ja :num! min))))) + ((-> self has-shield?) + (when (not (ja-group? ram-boss-forward-defend-ja)) + (ja-channel-push! 2 (seconds 0.2)) + (ja :group! ram-boss-forward-defend-ja :num! min) + (ja :chan 1 :group! ram-boss-up-defend-ja :num! (chan 0) :frame-interp f30-0))) + (else + (when (not (ja-group? ram-boss-forward-defend-no-shield-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! ram-boss-forward-defend-no-shield-ja :num! min)))) + (suspend) + (ja :num! (loop!)) + (if (= (ja-group-size) 2) (ja :chan 1 :num! (chan 0) :frame-interp f30-0))))) + :post nav-enemy-simple-post) (defstate ram-boss-forward-defend-block (ram-boss) - :enter (behavior () - (set! (-> self frustration) 0) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - ) - :trans (behavior () - (set-jump-height-factor! self (the-as int #t)) - 0 - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ram-boss-forward-defend-block-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ram-boss-tracking) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self frustration) 0) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2))) + :trans + (behavior () + (set-jump-height-factor! self (the-as int #t)) + 0) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ram-boss-forward-defend-block-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ram-boss-tracking)) + :post nav-enemy-simple-post) (defstate ram-boss-up-defend-block (ram-boss) - :enter (behavior () - (set! (-> self frustration) 0) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - ) - :trans (behavior () - (set-jump-height-factor! self (the-as int #t)) - 0 - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ram-boss-up-defend-block-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ram-boss-tracking) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self frustration) 0) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2))) + :trans + (behavior () + (set-jump-height-factor! self (the-as int #t)) + 0) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ram-boss-up-defend-block-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ram-boss-tracking)) + :post nav-enemy-simple-post) (defstate nav-enemy-victory (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler :enter #f :exit #f - :trans (behavior () - (when *target* - (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (if (and (>= 18432.0 f0-0) (-> self has-shield?)) - (go ram-boss-tracking) - ) - ) - ) - ) - :code (behavior () - (set! (-> self frustration) 0) - (ja-channel-push! 1 (seconds 0.075)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info victory-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-attack) - ) - :post nav-enemy-simple-post - ) + :trans + (behavior () + (when *target* + (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (if (and (>= 18432.0 f0-0) (-> self has-shield?)) (go ram-boss-tracking))))) + :code + (behavior () + (set! (-> self frustration) 0) + (ja-channel-push! 1 (seconds 0.075)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info victory-anim)) + :num! (seek! max f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-attack)) + :post nav-enemy-simple-post) (defstate nav-enemy-stare (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler - :enter (behavior () - (go ram-boss-nav-resume) - ) - ) + :enter + (behavior () + (go ram-boss-nav-resume))) (defstate ram-boss-throw (ram-boss) :event ram-boss-on-ground-event-handler - :enter (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (let ((gp-0 (-> self child))) - (while gp-0 - (send-event (ppointer->process gp-0) 'launch) - (set! gp-0 (-> gp-0 0 brother)) - ) - ) - (set-time! (-> self proj-last-thrown-time)) - ) - :trans (behavior () - (set-jump-height-factor! self (the-as int #t)) - 0 - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (cond - ((-> self has-shield?) - (ja-no-eval :group! ram-boss-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! ram-boss-throw-no-shield-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go ram-boss-tracking) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (let ((gp-0 (-> self child))) (while gp-0 (send-event (ppointer->process gp-0) 'launch) (set! gp-0 (-> gp-0 0 brother)))) + (set-time! (-> self proj-last-thrown-time))) + :trans + (behavior () + (set-jump-height-factor! self (the-as int #t)) + 0) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (cond + ((-> self has-shield?) + (ja-no-eval :group! ram-boss-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! ram-boss-throw-no-shield-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go ram-boss-tracking)) + :post nav-enemy-simple-post) (defstate ram-boss-lose-shield (ram-boss) - :enter (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-neck-control-inactive) - (nav-enemy-method-53 self) - (init-jm! self *ram-boss-nav-enemy-info-no-shield*) - ) - :exit (behavior () - (nav-enemy-neck-control-look-at) - (set! (-> self has-shield?) #f) - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 1) 1) - ) - (let ((v1-3 (-> self shield-jmod))) - (set! (-> v1-3 enable) #t) - (set! (-> v1-3 transform scale quad) (the-as uint128 0)) - ) - ) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-normalize-copy! gp-0 (-> self hit-from-dir) 16384.0) - (vector+! gp-0 (-> self collide-info trans) gp-0) - (set! (-> self nav target-pos quad) (-> gp-0 quad)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ram-boss-lose-shield-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-1 (joint-node ram-boss-lod0-jg shield)) - (spawn (-> self part) gp-1) - ) - (suspend) - (ja :num! (seek!)) - ) - (go ram-boss-tracking) - ) - :post (behavior () - (compute-alignment! (-> self align)) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - (align-vel-and-quat-only! - (-> self align) - (align-opts adjust-xz-vel) - (-> self nav travel) - (the-as int 1.0) - 1.0 - (* (-> self enemy-info speed) (-> self speed-scale)) - ) - (vector-v++! - (-> self collide-info transv) - (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0) - ) - (align! (-> self align) (align-opts adjust-quat) 1.0 1.0 1.0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (nav-enemy-common-post) - ) - ) + :enter + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-neck-control-inactive) + (nav-enemy-method-53 self) + (init-jm! self *ram-boss-nav-enemy-info-no-shield*)) + :exit + (behavior () + (nav-enemy-neck-control-look-at) + (set! (-> self has-shield?) #f) + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 1) 1)) + (let ((v1-3 (-> self shield-jmod))) (set! (-> v1-3 enable) #t) (set! (-> v1-3 transform scale quad) (the-as uint128 0)))) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-normalize-copy! gp-0 (-> self hit-from-dir) 16384.0) + (vector+! gp-0 (-> self collide-info trans) gp-0) + (set! (-> self nav target-pos quad) (-> gp-0 quad))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ram-boss-lose-shield-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-1 (joint-node ram-boss-lod0-jg shield)) + (spawn (-> self part) gp-1)) + (suspend) + (ja :num! (seek!))) + (go ram-boss-tracking)) + :post + (behavior () + (compute-alignment! (-> self align)) + (nav-control-method-11 (-> self nav) (-> self nav target-pos)) + (align-vel-and-quat-only! (-> self align) + (align-opts adjust-xz-vel) + (-> self nav travel) + (the-as int 1.0) + 1.0 + (* (-> self enemy-info speed) (-> self speed-scale))) + (vector-v++! (-> self collide-info transv) (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0)) + (align! (-> self align) (align-opts adjust-quat) 1.0 1.0 1.0) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (nav-enemy-common-post))) (defstate nav-enemy-die (ram-boss) :virtual #t - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (clear-collide-with-as (-> self collide-info)) - (nav-enemy-fall-and-play-death-anim - (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) - 1.0 - 1.0 - 1000000000000000.0 - 600 - ) - (send-event self 'death-end) - (send-event (ppointer->process (-> self parent-override)) 'notify) - (suspend) - 0 - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (clear-collide-with-as (-> self collide-info)) + (nav-enemy-fall-and-play-death-anim (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) + 1.0 + 1.0 + 1000000000000000.0 + 600) + (send-event self 'death-end) + (send-event (ppointer->process (-> self parent-override)) 'notify) + (suspend) + 0)) diff --git a/goal_src/jak1/levels/snow/snow-ram-h.gc b/goal_src/jak1/levels/snow/snow-ram-h.gc index 02090b4cb1..f0858b4b49 100644 --- a/goal_src/jak1/levels/snow/snow-ram-h.gc +++ b/goal_src/jak1/levels/snow/snow-ram-h.gc @@ -1,32 +1,23 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/game/game-h.gc") -;; name: snow-ram-h.gc -;; name in dgo: snow-ram-h -;; dgos: L1, SNO - ;; DECOMP BEGINS (deftype ram (process-drawable) - ((root collide-shape-moving :override) - (ram-id int32) - (give-fuel-cell? symbol) - (give-fuel-cell-anim spool-anim) - (part2 sparticle-launch-control) - (orient-ry float) - (fuel-cell-dest-pos vector :inline) - ) + ((root collide-shape-moving :override) + (ram-id int32) + (give-fuel-cell? symbol) + (give-fuel-cell-anim spool-anim) + (part2 sparticle-launch-control) + (orient-ry float) + (fuel-cell-dest-pos vector :inline)) (:methods - (ram-method-20 (_type_) object) - (ram-method-21 (_type_) object) - (ram-method-22 (_type_) symbol) - ) + (ram-method-20 (_type_) object) + (ram-method-21 (_type_) object) + (ram-method-22 (_type_) symbol)) (:states - ram-fun-idle - ram-give-fuel-cell - ram-idle - ) - ) + ram-fun-idle + ram-give-fuel-cell + ram-idle)) diff --git a/goal_src/jak1/levels/snow/snow-ram.gc b/goal_src/jak1/levels/snow/snow-ram.gc index c667d1378b..6b2f152353 100644 --- a/goal_src/jak1/levels/snow/snow-ram.gc +++ b/goal_src/jak1/levels/snow/snow-ram.gc @@ -1,137 +1,122 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "levels/snow/snow-ram-h.gc") (require "levels/snow/snow-ram-boss.gc") (require "levels/snow/snow-obs.gc") -;; name: snow-ram.gc -;; name in dgo: snow-ram -;; dgos: L1, SNO - ;; DECOMP BEGINS -(defskelgroup *ram-sg* ram ram-lod0-jg ram-cock-ja - ((ram-lod0-mg (meters 20)) (ram-lod1-mg (meters 40)) (ram-lod2-mg (meters 999999))) - :bounds (static-spherem 0 5 0 8.5) - :longest-edge (meters 7.7) - ) +(defskelgroup *ram-sg* + ram + ram-lod0-jg + ram-cock-ja + ((ram-lod0-mg (meters 20)) (ram-lod1-mg (meters 40)) (ram-lod2-mg (meters 999999))) + :bounds (static-spherem 0 5 0 8.5) + :longest-edge (meters 7.7)) (defpartgroup group-ram-hit-wall :id 526 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1921) (sp-item 1922 :fade-after (meters 60) :falloff-to (meters 60))) - ) + :parts ((sp-item 1921) (sp-item 1922 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1920 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 64.0 16.0) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 16.0) - (:g 128.0 48.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.005) (meters 0.0033333334)) - (:friction 0.92 0.05) - (:timer (seconds 0.7)) - (:flags (bit0 bit3 bit12)) - (:conerot-x (degrees 0) (degrees 170)) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 64.0 16.0) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 16.0) + (:g 128.0 48.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.005) (meters 0.0033333334)) + (:friction 0.92 0.05) + (:timer (seconds 0.7)) + (:flags (bit0 bit3 bit12)) + (:conerot-x (degrees 0) (degrees 170)) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 1922 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.013333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.60952383) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3 bit12)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.013333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.60952383) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3 bit12)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 1921 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 128.0) - (:a 96.0) - (:fade-a -2.1333334) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 128.0) + (:a 96.0) + (:fade-a -2.1333334) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)))) (defpartgroup group-ram-wheel-puffs :id 527 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1923 :fade-after (meters 70) :falloff-to (meters 70))) - ) + :parts ((sp-item 1923 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1923 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0) (meters 0.0033333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.26666668) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.4)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0) (meters 0.0033333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.26666668) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.4)) + (:flags (bit2)))) (defmethod ram-method-20 ((this ram)) (let ((gp-0 (-> this part))) (when (nonzero? gp-0) (let ((a2-0 (-> this node-list data 8 bone transform)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set-vector! s5-0 0.0 0.0 -49152.0 1.0) (vector-matrix*! s5-0 s5-0 a2-0) (set! (-> *part-id-table* 1920 init-specs 16 initial-valuef) (+ 16384.0 (-> this orient-ry))) - (spawn gp-0 s5-0) - ) - ) - ) - ) + (spawn gp-0 s5-0))))) (defmethod ram-method-21 ((this ram)) (let ((gp-0 (-> this part2))) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (vector<-cspace! s3-0 (-> this node-list data 5)) (set-vector! s4-0 13312.0 -5324.8 0.0 1.0) (vector-rotate-around-y! s4-0 s4-0 (-> this orient-ry)) @@ -140,11 +125,9 @@ (set-vector! s4-0 -13312.0 -5324.8 0.0 1.0) (vector-rotate-around-y! s4-0 s4-0 (-> this orient-ry)) (vector+! s4-0 s4-0 s3-0) - (spawn gp-0 s4-0) - ) + (spawn gp-0 s4-0)) (let ((s3-1 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (vector<-cspace! s3-1 (-> this node-list data 6)) (set-vector! s4-1 13312.0 -5324.8 0.0 1.0) (vector-rotate-around-y! s4-1 s4-1 (-> this orient-ry)) @@ -153,10 +136,7 @@ (set-vector! s4-1 -13312.0 -5324.8 0.0 1.0) (vector-rotate-around-y! s4-1 s4-1 (-> this orient-ry)) (vector+! s4-1 s4-1 s3-1) - (spawn gp-0 s4-1) - ) - ) - ) + (spawn gp-0 s4-1)))) (defmethod ram-method-22 ((this ram)) (process-entity-status! this (entity-perm-status complete) #t) @@ -165,185 +145,124 @@ ((zero? v1-0) (let ((v1-3 (-> this entity extra perm))) (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-3 user-int8 2) 1) - ) - (if (not (task-complete? *game-info* (-> this entity extra perm task))) - (return #t) - ) - ) - ((= v1-0 1) - (close-specific-task! (game-task snow-ram) (task-status need-reminder)) - ) - (else - (close-specific-task! (game-task snow-ram) (task-status need-reminder-a)) - ) - ) - ) - #f - ) + (set! (-> v1-3 user-int8 2) 1)) + (if (not (task-complete? *game-info* (-> this entity extra perm task))) (return #t))) + ((= v1-0 1) (close-specific-task! (game-task snow-ram) (task-status need-reminder))) + (else (close-specific-task! (game-task snow-ram) (task-status need-reminder-a))))) + #f) (defstate ram-idle (ram) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (if ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self root) - (the-as uint 1) - ) - (send-event - proc - 'attack - (-> block param 0) - (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 2)))) - ) - ) - ) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (rider-trans) - (if (-> self give-fuel-cell-anim) - (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0) - ) - ) - :code (behavior () - (local-vars (sv-16 symbol)) - (ja-channel-push! 1 (seconds 0.075)) - (loop - (sound-play "set-ram") - (ja-no-eval :group! ram-cock-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-1 #f)) - (sound-play "slam-crash") - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-no-eval :group! ram-release-ja :num! (seek!) :frame-num 0.0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (if ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self root) + (the-as uint 1)) + (send-event proc 'attack (-> block param 0) (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 2))))))))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (rider-trans) + (if (-> self give-fuel-cell-anim) (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0))) + :code + (behavior () + (local-vars (sv-16 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (loop + (sound-play "set-ram") + (ja-no-eval :group! ram-cock-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (let ((f30-0 (ja-aframe-num 0))) - (when (and (not gp-1) (>= f30-0 61.0)) - (set! gp-1 #t) - (ram-method-20 self) - ) - (if (and (>= f30-0 62.0) (< f30-0 97.0)) - (ram-method-21 self) - ) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (logior! (-> self mask) (process-mask actor-pause)) - (set! sv-16 (the-as symbol #f)) - (apply-function-forward (-> self link) actor-link-dead-hook (& sv-16)) - (when (or sv-16 (nonzero? (-> self root riders num-riders))) - (let ((v1-67 (-> self entity extra perm))) - (logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-67 user-int8 0) 1) - ) - (send-event (ppointer->process (-> self child)) 'jump) - (go ram-fun-idle) - ) - ) - ) - :post rider-post - ) + (ja :num! (seek!))) + (let ((gp-1 #f)) + (sound-play "slam-crash") + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-no-eval :group! ram-release-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f30-0 (ja-aframe-num 0))) + (when (and (not gp-1) (>= f30-0 61.0)) + (set! gp-1 #t) + (ram-method-20 self)) + (if (and (>= f30-0 62.0) (< f30-0 97.0)) (ram-method-21 self))) + (suspend) + (ja :num! (seek!)))) + (logior! (-> self mask) (process-mask actor-pause)) + (set! sv-16 (the-as symbol #f)) + (apply-function-forward (-> self link) actor-link-dead-hook (& sv-16)) + (when (or sv-16 (nonzero? (-> self root riders num-riders))) + (let ((v1-67 (-> self entity extra perm))) + (logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-67 user-int8 0) 1)) + (send-event (ppointer->process (-> self child)) 'jump) + (go ram-fun-idle)))) + :post rider-post) (defstate ram-fun-idle (ram) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (when (= (-> proc type) ram-boss) - (if (ram-method-22 self) - (go ram-give-fuel-cell) - ) - ) - ) - ) - ) - :trans (behavior () - (if (-> self give-fuel-cell-anim) - (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0) - ) - ) - :code (behavior () - (if (-> self give-fuel-cell?) - (go ram-give-fuel-cell) - ) - (ja-channel-push! 1 0) - (ja :group! ram-idle-ja :num! min) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) - -(defstate ram-give-fuel-cell (ram) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (if (and (= (-> proc type) snowcam) (= (-> block param 0) 'die)) - (go ram-fun-idle) - ) - ) - ) - ) - :exit (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior () - (set! (-> self give-fuel-cell?) #f) - (ja-channel-push! 1 0) - (ja :group! ram-idle-ja :num! min) - (transform-post) - (when (and (not (task-complete? *game-info* (-> self entity extra perm task))) (-> self give-fuel-cell-anim)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (let ((v1-14 (process-spawn - snowcam - :init pov-camera-init-by-other - (-> self root trans) - *snowcam-sg* - (-> self give-fuel-cell-anim) - 0 - self - '() - :to self - ) - ) - ) - (set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1)) - ) - (sound-play "cell-prize") + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (when (= (-> proc type) ram-boss) (if (ram-method-22 self) (go ram-give-fuel-cell)))))) + :trans + (behavior () + (if (-> self give-fuel-cell-anim) (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0))) + :code + (behavior () + (if (-> self give-fuel-cell?) (go ram-give-fuel-cell)) + (ja-channel-push! 1 0) + (ja :group! ram-idle-ja :num! min) + (transform-post) (logior! (-> self mask) (process-mask sleep-code)) (suspend) - 0 - ) - (go ram-fun-idle) - ) - ) + 0)) + +(defstate ram-give-fuel-cell (ram) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (if (and (= (-> proc type) snowcam) (= (-> block param 0) 'die)) (go ram-fun-idle))))) + :exit + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause))) + :code + (behavior () + (set! (-> self give-fuel-cell?) #f) + (ja-channel-push! 1 0) + (ja :group! ram-idle-ja :num! min) + (transform-post) + (when (and (not (task-complete? *game-info* (-> self entity extra perm task))) (-> self give-fuel-cell-anim)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (let ((v1-14 (process-spawn snowcam + :init + pov-camera-init-by-other + (-> self root trans) + *snowcam-sg* + (-> self give-fuel-cell-anim) + 0 + self + '() + :to + self))) + (set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1))) + (sound-play "cell-prize") + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0) + (go ram-fun-idle))) (defmethod deactivate ((this ram)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this ram) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as ram ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as ram ((method-of-type process-drawable relocate) this arg0))) (defmethod init-from-entity! ((this ram) (arg0 entity-actor)) (set! (-> this give-fuel-cell?) #f) @@ -351,9 +270,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -368,8 +285,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -377,21 +293,17 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 34816.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) -4096.0 28672.0 12288.0 2252.8) - (append-prim s3-0 s2-2) - ) - ) + (append-prim s3-0 s2-2))) (set! (-> s4-0 nav-radius) 20480.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *ram-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -405,67 +317,36 @@ (case (-> this ram-id) ((1) (set! (-> this give-fuel-cell-anim) - (new 'static 'spool-anim :name "snowcam-ram-boss-in-cave-fuel-cell" :index 7 :parts 1 :command-list '()) - ) - (set-vector! (-> this fuel-cell-dest-pos) 3137396.8 803676.2 -13560558.0 1.0) - ) + (new 'static 'spool-anim :name "snowcam-ram-boss-in-cave-fuel-cell" :index 7 :parts 1 :command-list '())) + (set-vector! (-> this fuel-cell-dest-pos) 3137396.8 803676.2 -13560558.0 1.0)) ((2) (set! (-> this give-fuel-cell-anim) - (new 'static 'spool-anim :name "snowcam-ram-boss-ice-pond-fuel-cell" :index 8 :parts 1 :command-list '()) - ) - (set-vector! (-> this fuel-cell-dest-pos) 2790289.5 1058152.5 -13639766.0 1.0) - ) + (new 'static 'spool-anim :name "snowcam-ram-boss-ice-pond-fuel-cell" :index 8 :parts 1 :command-list '())) + (set-vector! (-> this fuel-cell-dest-pos) 2790289.5 1058152.5 -13639766.0 1.0)) ((3) (set! (-> this give-fuel-cell-anim) - (new 'static 'spool-anim :name "snowcam-ram-boss-snow-ball-fuel-cell" :index 9 :parts 1 :command-list '()) - ) - (set-vector! (-> this fuel-cell-dest-pos) 4208423.0 1037348.9 -13591491.0 1.0) - ) - (else - (set! (-> this give-fuel-cell-anim) #f) - ) - ) + (new 'static 'spool-anim :name "snowcam-ram-boss-snow-ball-fuel-cell" :index 9 :parts 1 :command-list '())) + (set-vector! (-> this fuel-cell-dest-pos) 4208423.0 1037348.9 -13591491.0 1.0)) + (else (set! (-> this give-fuel-cell-anim) #f))) (let ((s4-1 #f)) - (if (nonzero? (-> this entity extra perm user-int8 0)) - (set! s4-1 #t) - ) + (if (nonzero? (-> this entity extra perm user-int8 0)) (set! s4-1 #t)) (let ((s3-1 (= (res-lump-value arg0 'mode uint128) 1))) (when (not s3-1) (when (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (set! s3-1 #t) (if (and (nonzero? (-> this entity extra perm user-int8 2)) - (not (task-complete? *game-info* (-> this entity extra perm task))) - ) - (birth-pickup-at-point - (-> this fuel-cell-dest-pos) - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - (go ram-fun-idle) - ) - ) + (not (task-complete? *game-info* (-> this entity extra perm task)))) + (birth-pickup-at-point (-> this fuel-cell-dest-pos) + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f))) + (go ram-fun-idle))) (cond ((and (not s3-1) (has-nav-mesh? arg0)) (cond - (s4-1 - (process-spawn ram-boss (-> this entity) this #t :to this) - (go ram-fun-idle) - ) - (else - (process-spawn ram-boss (-> this entity) this #f :to this) - (go ram-idle) - ) - ) - ) - (else - (go ram-fun-idle) - ) - ) - ) - ) - (none) - ) + (s4-1 (process-spawn ram-boss (-> this entity) this #t :to this) (go ram-fun-idle)) + (else (process-spawn ram-boss (-> this entity) this #f :to this) (go ram-idle)))) + (else (go ram-fun-idle))))) + (none)) diff --git a/goal_src/jak1/levels/snow/target-ice.gc b/goal_src/jak1/levels/snow/target-ice.gc index 88b6657500..dcc22c9663 100644 --- a/goal_src/jak1/levels/snow/target-ice.gc +++ b/goal_src/jak1/levels/snow/target-ice.gc @@ -1,326 +1,214 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/target/target-handler.gc") -;; name: target-ice.gc -;; name in dgo: target-ice -;; dgos: L1, SNO - ;; DECOMP BEGINS (defstate target-ice-stance (target) :event target-standard-event-handler - :enter (behavior () - (set! (-> self control unknown-surface00) *walk-mods*) - ) + :enter + (behavior () + (set! (-> self control unknown-surface00) *walk-mods*)) :exit target-state-hook-exit - :trans (behavior () - ((-> self state-hook)) - (if (!= (-> self control ground-pat material) (pat-material ice)) - (go target-stance) - ) - (when (move-legs?) - (remove-exit) - (go target-ice-walk) - ) - (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) - (remove-exit) - (go target-duck-stance) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons circle) - ) - (can-feet?) - ) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - (slide-down-test) - (fall-test) - ) - :code (behavior () - (let ((gp-0 60)) - (let ((v1-2 (ja-group))) - (cond - ((or (= v1-2 eichar-jump-ja) (= v1-2 eichar-jump-loop-ja)) - (set! gp-0 21) - ) - ((ja-group? eichar-wheel-flip-ja) - (ja-no-eval :group! eichar-wheel-flip-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? eichar-attack-from-stance-ja) - (cond - ((rand-vu-percent? 0.3) - (ja-no-eval :group! eichar-attack-from-stance-alt-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! eichar-attack-from-stance-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ((ja-group? eichar-smack-surface-ja) - (ja-no-eval :group! eichar-smack-surface-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? eichar-yellow-running-blast-ja) - (ja-no-eval :group! eichar-yellow-running-blast-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! gp-0 0) - ) - ((ja-group? eichar-attack-punch-ja) - (set! (-> self control unknown-float81) (-> self control unknown-float80)) - (set! (-> self control unknown-surface00) *walk-no-turn-mods*) - (ja-no-eval :group! (if (rand-vu-percent? 0.3) - eichar-attack-punch-alt-end-ja - eichar-attack-punch-end-ja - ) - :num! (seek!) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek! (-> self control unknown-float81) 0.0 (seconds-per-frame)) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control unknown-float81) 0.0) - (rot->dir-targ! (-> self control)) - ) - ((let ((v1-188 (ja-group))) - (or (= v1-188 eichar-duck-stance-ja) (= v1-188 eichar-duck-walk-ja)) - ) - (ja-channel-push! 1 (seconds 0.04)) - (ja-no-eval :group! eichar-stance-to-duck-ja :num! (seek! 0.0 1.2) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0 1.2)) - ) - (set! gp-0 60) - ) - ) - ) - (while (< 16384.0 (-> self control unknown-float01)) - (cond - ((ja-group? eichar-ice-slide-ja) - ) - (else - (ja-channel-push! 1 (the-as time-frame gp-0)) - (set! gp-0 150) - (ja :group! eichar-ice-slide-ja) - ) - ) - (suspend) - (ja :num! (loop!)) - ) - (when (not (ja-group? eichar-ice-stance-ja)) - (ja-channel-push! 1 (the-as time-frame gp-0)) - (ja :group! eichar-ice-stance-ja) - ) - ) - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post target-post - ) - -(defstate target-ice-walk (target) - :event target-standard-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *walk-mods*) - ) - :exit (behavior () - (target-effect-exit) - (target-state-hook-exit) - ) - :trans (behavior () - ((-> self state-hook)) - (when (!= (-> self control ground-pat material) (pat-material ice)) - (remove-exit) - (go target-walk) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons l1 r1) - ) - (and (time-elapsed? (-> *TARGET-bank* wheel-timeout) (-> self control unknown-dword30)) - (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (can-wheel?)) - ) - ) - (go target-wheel) - ) - (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) - (target-effect-exit) - (remove-exit) - (go target-duck-stance) - ) - (when (and (not (move-legs?)) (let ((gp-0 (ja-group)) - (f0-1 (ja-aframe-num 0)) - ) - (if (and (= gp-0 eichar-ice-skate-ja) (>= f0-1 30.0) (>= 35.0 f0-1)) - #t - ) - ) - ) - (target-effect-exit) - (remove-exit) - (go target-ice-stance) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons circle) - ) - (can-feet?) - ) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - (slide-down-test) - (fall-test) - ) - :code (behavior () - (cond - ((ja-group? eichar-walk-ja) - (let ((f30-0 (ja-aframe-num 0))) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! eichar-ice-skate-ja :num! (identity f30-0)) - ) - ) - ((ja-group? eichar-ice-skate-ja) - ) - (else - (let ((v1-18 (ja-group))) + :trans + (behavior () + ((-> self state-hook)) + (if (!= (-> self control ground-pat material) (pat-material ice)) (go target-stance)) + (when (move-legs?) + (remove-exit) + (go target-ice-walk)) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (remove-exit) + (go target-duck-stance)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons circle)) + (can-feet?)) + (go target-attack)) + (if (can-hands? #t) (go target-running-attack)) + (slide-down-test) + (fall-test)) + :code + (behavior () + (let ((gp-0 60)) + (let ((v1-2 (ja-group))) (cond - ((or (= v1-18 eichar-attack-punch-end-ja) (= v1-18 eichar-attack-punch-alt-end-ja)) - (set! (-> self control unknown-float81) (-> self control unknown-float80)) - (set! (-> self control unknown-surface00) *walk-no-turn-mods*) - (while (< (ja-aframe-num 0) 42.0) + ((or (= v1-2 eichar-jump-ja) (= v1-2 eichar-jump-loop-ja)) (set! gp-0 21)) + ((ja-group? eichar-wheel-flip-ja) + (ja-no-eval :group! eichar-wheel-flip-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control unknown-float81) 0.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! eichar-ice-skate-ja :num! (identity (ja-aframe 34.0 0))) - (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (ja :num! (seek!)))) + ((ja-group? eichar-attack-from-stance-ja) + (cond + ((rand-vu-percent? 0.3) + (ja-no-eval :group! eichar-attack-from-stance-alt-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! eichar-attack-from-stance-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) + ((ja-group? eichar-smack-surface-ja) + (ja-no-eval :group! eichar-smack-surface-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((ja-group? eichar-yellow-running-blast-ja) + (ja-no-eval :group! eichar-yellow-running-blast-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) + (ja :num! (seek!))) + (set! gp-0 0)) ((ja-group? eichar-attack-punch-ja) (set! (-> self control unknown-float81) (-> self control unknown-float80)) (set! (-> self control unknown-surface00) *walk-no-turn-mods*) - (ja-no-eval :group! eichar-attack-punch-end-ja :num! (seek! (ja-aframe 42.0 0)) :frame-num 0.0) + (ja-no-eval :group! + (if (rand-vu-percent? 0.3) eichar-attack-punch-alt-end-ja eichar-attack-punch-end-ja) + :num! (seek!) + :frame-num 0.0) (until (ja-done? 0) + (seek! (-> self control unknown-float81) 0.0 (seconds-per-frame)) (suspend) - (ja :num! (seek! (ja-aframe 42.0 0))) - ) + (ja :num! (seek!))) (set! (-> self control unknown-surface00) *walk-mods*) (set! (-> self control unknown-float81) 0.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! eichar-ice-skate-ja :num! (identity (ja-aframe 34.0 0))) - (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (rot->dir-targ! (-> self control))) + ((let ((v1-188 (ja-group))) (or (= v1-188 eichar-duck-stance-ja) (= v1-188 eichar-duck-walk-ja))) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! eichar-stance-to-duck-ja :num! (seek! 0.0 1.2) :frame-num max) + (until (ja-done? 0) (suspend) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! eichar-ice-skate-ja) - ) - ) - ) - ) - ) - (loop - (suspend) - (let* ((s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control unknown-vector01) 1.0)) - ;; og:preserve-this modified to avoid dividing by zero when jak's speed is 0. - ;; this fixes the issue where jak gets stuck on frame 60 of the ice-walk animation - ;; instead of switching to stance (due to making zero progress here), - ;; _and_ it fixes the issue where we get a NaN frame number in daxter, causing the eye animation - ;; to read bogus memory. - (vector01-len (vector-length (-> self control unknown-vector01))) - (gp-6 (vector-float*! - (new 'stack-no-clear 'vector) - (-> self control unknown-vector00) - ;; og:preserve-this - (/ 1.0 (if (= vector01-len 0) 0.001 vector01-len)) ;; added the .001 case here. - ) - ) - (f0-18 (fmax -1.0 (fmin 1.0 (vector-dot s5-0 gp-6)))) - ) - (ja :num! (loop! (cond - ((< f0-18 0.0) - (lerp-scale 2.0 1.0 f0-18 -1.0 0.5) - ) - ((< 0.5 f0-18) - (lerp-scale 1.0 0.75 f0-18 0.5 1.0) - ) - (else - (lerp-scale 1.33 1.0 f0-18 0.0 0.5) - ) - ) - ) - ) - ) - ) - ) - :post target-post - ) + (ja :num! (seek! 0.0 1.2))) + (set! gp-0 60)))) + (while (< 16384.0 (-> self control unknown-float01)) + (cond + ((ja-group? eichar-ice-slide-ja)) + (else (ja-channel-push! 1 (the-as time-frame gp-0)) (set! gp-0 150) (ja :group! eichar-ice-slide-ja))) + (suspend) + (ja :num! (loop!))) + (when (not (ja-group? eichar-ice-stance-ja)) + (ja-channel-push! 1 (the-as time-frame gp-0)) + (ja :group! eichar-ice-stance-ja))) + (loop + (suspend) + (ja :num! (loop!)))) + :post target-post) + +(defstate target-ice-walk (target) + :event target-standard-event-handler + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *walk-mods*)) + :exit + (behavior () + (target-effect-exit) + (target-state-hook-exit)) + :trans + (behavior () + ((-> self state-hook)) + (when (!= (-> self control ground-pat material) (pat-material ice)) + (remove-exit) + (go target-walk)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons l1 r1)) + (and (time-elapsed? (-> *TARGET-bank* wheel-timeout) (-> self control unknown-dword30)) + (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (can-wheel?)))) + (go target-wheel)) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (target-effect-exit) + (remove-exit) + (go target-duck-stance)) + (when (and (not (move-legs?)) + (let ((gp-0 (ja-group)) + (f0-1 (ja-aframe-num 0))) + (if (and (= gp-0 eichar-ice-skate-ja) (>= f0-1 30.0) (>= 35.0 f0-1)) #t))) + (target-effect-exit) + (remove-exit) + (go target-ice-stance)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons circle)) + (can-feet?)) + (go target-attack)) + (if (can-hands? #t) (go target-running-attack)) + (slide-down-test) + (fall-test)) + :code + (behavior () + (cond + ((ja-group? eichar-walk-ja) + (let ((f30-0 (ja-aframe-num 0))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! eichar-ice-skate-ja :num! (identity f30-0)))) + ((ja-group? eichar-ice-skate-ja)) + (else + (let ((v1-18 (ja-group))) + (cond + ((or (= v1-18 eichar-attack-punch-end-ja) (= v1-18 eichar-attack-punch-alt-end-ja)) + (set! (-> self control unknown-float81) (-> self control unknown-float80)) + (set! (-> self control unknown-surface00) *walk-no-turn-mods*) + (while (< (ja-aframe-num 0) 42.0) + (suspend) + (ja :num! (seek!))) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control unknown-float81) 0.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! eichar-ice-skate-ja :num! (identity (ja-aframe 34.0 0))) + (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (suspend))) + ((ja-group? eichar-attack-punch-ja) + (set! (-> self control unknown-float81) (-> self control unknown-float80)) + (set! (-> self control unknown-surface00) *walk-no-turn-mods*) + (ja-no-eval :group! eichar-attack-punch-end-ja :num! (seek! (ja-aframe 42.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 42.0 0)))) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control unknown-float81) 0.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! eichar-ice-skate-ja :num! (identity (ja-aframe 34.0 0))) + (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (suspend))) + (else (ja-channel-push! 1 (seconds 0.05)) (ja :group! eichar-ice-skate-ja)))))) + (loop + (suspend) + (let* ((s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control unknown-vector01) 1.0)) + ;; og:preserve-this modified to avoid dividing by zero when jak's speed is 0. + ;; this fixes the issue where jak gets stuck on frame 60 of the ice-walk animation + ;; instead of switching to stance (due to making zero progress here), + ;; _and_ it fixes the issue where we get a NaN frame number in daxter, causing the eye animation + ;; to read bogus memory. + (vector01-len (vector-length (-> self control unknown-vector01))) + (gp-6 (vector-float*! (new 'stack-no-clear 'vector) + (-> self control unknown-vector00) + ;; og:preserve-this + (/ 1.0 (if (= vector01-len 0) 0.001 vector01-len)) ;; added the .001 case here. + )) + (f0-18 (fmax -1.0 (fmin 1.0 (vector-dot s5-0 gp-6))))) + (ja :num! + (loop! (cond + ((< f0-18 0.0) (lerp-scale 2.0 1.0 f0-18 -1.0 0.5)) + ((< 0.5 f0-18) (lerp-scale 1.0 0.75 f0-18 0.5 1.0)) + (else (lerp-scale 1.33 1.0 f0-18 0.0 0.5)))))))) + :post target-post) diff --git a/goal_src/jak1/levels/snow/target-snowball.gc b/goal_src/jak1/levels/snow/target-snowball.gc index 7b85bf56a1..8880a18635 100644 --- a/goal_src/jak1/levels/snow/target-snowball.gc +++ b/goal_src/jak1/levels/snow/target-snowball.gc @@ -1,26 +1,14 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/target/logic-target.gc") -;; name: target-snowball.gc -;; name in dgo: target-snowball -;; dgos: L1, SNO - - ;; DECOMP BEGINS (deftype snowball-info (basic) - ((entity basic) - ) - ) - - -(deftype snowball-bank (basic) - () - ) + ((entity basic))) +(deftype snowball-bank (basic) ()) (define *SNOWBALL-bank* (new 'static 'snowball-bank)) @@ -32,92 +20,68 @@ (flag-setup) (build-conversions (-> self control transv)) (reverse-conversions (-> self control transv)) - (post-flag-setup) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (post-flag-setup)) + (set-time-ratios *display* (the float gp-0))) (rot->dir-targ! (-> self control)) (ja-post) (joint-points) (do-target-shadow) (target-powerup-process) 0 - (none) - ) + (none)) (defstate target-snowball-start (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - 'snowball - ) - ((let ((v1-3 message)) - (= v1-3 'end-mode) - ) - (go - target-jump - (-> *TARGET-bank* duck-jump-height-min) - (-> *TARGET-bank* duck-jump-height-max) - (the-as surface #f) - ) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :exit (behavior () - (when (!= (-> self next-state name) 'target-snowball) - (let ((v1-1 (-> self manipy))) - (when v1-1 - (deactivate (-> v1-1 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (logclear! (-> self control root-prim prim-core action) (collide-action snowball)) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (target-collide-set! 'normal 0.0) - (set! (-> self control reaction) target-collision-reaction) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) 'snowball) + ((let ((v1-3 message)) (= v1-3 'end-mode)) + (go target-jump (-> *TARGET-bank* duck-jump-height-min) (-> *TARGET-bank* duck-jump-height-max) (the-as surface #f))) + (else (target-generic-event-handler proc argc message block)))) + :exit + (behavior () + (when (!= (-> self next-state name) 'target-snowball) + (let ((v1-1 (-> self manipy))) + (when v1-1 + (deactivate (-> v1-1 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)))) + (logclear! (-> self control root-prim prim-core action) (collide-action snowball)) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (target-collide-set! 'normal 0.0) + (set! (-> self control reaction) target-collision-reaction) + (target-exit))) + :code + (behavior ((arg0 handle)) (target-exit) - ) - ) - :code (behavior ((arg0 handle)) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (if (zero? (-> self snowball)) - (set! (-> self snowball) (new 'process 'snowball-info)) - ) - (set! (-> self snowball entity) #f) - (let ((a0-2 (handle->process arg0))) - (if a0-2 - (set! (-> self snowball entity) (-> a0-2 entity)) - ) - ) - (reset-target-state #t) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (move-by-vector! (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) - (logior! (-> self control root-prim prim-core action) (collide-action snowball)) - (ja-channel-set! 1) - (ja :group! eichar-stance-loop-ja :num! min) - (remove-exit) - (go target-snowball) - ) - :post target-post - ) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (if (zero? (-> self snowball)) (set! (-> self snowball) (new 'process 'snowball-info))) + (set! (-> self snowball entity) #f) + (let ((a0-2 (handle->process arg0))) (if a0-2 (set! (-> self snowball entity) (-> a0-2 entity)))) + (reset-target-state #t) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (move-by-vector! (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) + (logior! (-> self control root-prim prim-core action) (collide-action snowball)) + (ja-channel-set! 1) + (ja :group! eichar-stance-loop-ja :num! min) + (remove-exit) + (go target-snowball)) + :post target-post) (defstate target-snowball (target) - :event (-> target-snowball-start event) - :exit (-> target-snowball-start exit) - :code (behavior () - (loop - (suspend) - ) - ) - :post (behavior () - (target-snowball-post) - ) - ) + :event + (-> target-snowball-start + event) + :exit + (-> target-snowball-start + exit) + :code + (behavior () + (loop + (suspend))) + :post + (behavior () + (target-snowball-post))) diff --git a/goal_src/jak1/levels/snow/yeti.gc b/goal_src/jak1/levels/snow/yeti.gc index 7e98b87e5b..3eaaef1e09 100644 --- a/goal_src/jak1/levels/snow/yeti.gc +++ b/goal_src/jak1/levels/snow/yeti.gc @@ -1,478 +1,390 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/nav-enemy.gc") - -;; name: yeti.gc -;; name in dgo: yeti -;; dgos: L1, SNO - (declare-type yeti process-drawable) + (declare-type yeti-slave nav-enemy) ;; DECOMP BEGINS (deftype yeti-slave (nav-enemy) - ((ground-y float) - (part2 sparticle-launch-control) - ) + ((ground-y float) + (part2 sparticle-launch-control)) (:states - yeti-slave-appear-jump-up - yeti-slave-appear-land - yeti-slave-show-anims - ) - ) - + yeti-slave-appear-jump-up + yeti-slave-appear-land + yeti-slave-show-anims)) (deftype yeti (process-drawable) - ((child-process (pointer yeti-slave) :overlay-at child) - (desired-num-children int32) - (spawn-delay int32) - (first-time-spawn-dist float) - (unknown basic) - (unknown1 basic) - (unknown2 basic) - ) + ((child-process (pointer yeti-slave) :overlay-at child) + (desired-num-children int32) + (spawn-delay int32) + (first-time-spawn-dist float) + (unknown basic) + (unknown1 basic) + (unknown2 basic)) (:methods - (yeti-method-20 (_type_ vector vector) symbol) - (aggro? (_type_ vector) symbol) - ) + (yeti-method-20 (_type_ vector vector) symbol) + (aggro? (_type_ vector) symbol)) (:states - yeti-first-time-start - yeti-idle - yeti-resuming-start - ) - ) - - -(defskelgroup *yeti-sg* yeti yeti-lod0-jg -1 - ((yeti-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0.75 0 3.9) - :longest-edge (meters 1.3) - ) - -(define *yeti-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 2 - :walk-anim 3 - :turn-anim -1 - :notice-anim 4 - :run-anim 5 - :jump-anim 10 - :jump-land-anim 11 - :victory-anim 8 - :taunt-anim 8 - :die-anim 9 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #t - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + yeti-first-time-start + yeti-idle + yeti-resuming-start)) + +(defskelgroup *yeti-sg* + yeti + yeti-lod0-jg + -1 + ((yeti-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0.75 0 3.9) + :longest-edge (meters 1.3)) + +(define *yeti-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 2 + :walk-anim 3 + :turn-anim -1 + :notice-anim 4 + :run-anim 5 + :jump-anim 10 + :jump-land-anim 11 + :victory-anim 8 + :taunt-anim 8 + :die-anim 9 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #t + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defpartgroup group-yeti-slave-appear1 :id 538 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1928 :fade-after (meters 70) :falloff-to (meters 70)) - (sp-item 1929 :fade-after (meters 70) :falloff-to (meters 70)) - ) - ) + :parts + ((sp-item 1928 :fade-after (meters 70) :falloff-to (meters 70)) + (sp-item 1929 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1929 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 16.0) - (:x (meters -2) (meters 4)) - (:y (meters 0.5) (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.24) (meters 0.24)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:vel-y (meters 0.033333335) (meters 0.05)) - (:rotvel-z (degrees -2.4) (degrees 3.4666667)) - (:accel-y (meters -0.0013333333)) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 16.0) + (:x (meters -2) (meters 4)) + (:y (meters 0.5) (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.24) (meters 0.24)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:vel-y (meters 0.033333335) (meters 0.05)) + (:rotvel-z (degrees -2.4) (degrees 3.4666667)) + (:accel-y (meters -0.0013333333)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1928 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 32.0) - (:x (meters -2) (meters 4)) - (:y (meters 0.5) (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 2.5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.05) (meters 0.016666668)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.07111111) - (:accel-y (meters -0.0013333333)) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 32.0) + (:x (meters -2) (meters 4)) + (:y (meters 0.5) (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 2.5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.05) (meters 0.016666668)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.07111111) + (:accel-y (meters -0.0013333333)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-yeti-slave-appear2 :id 539 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1930 :fade-after (meters 70) :falloff-to (meters 70))) - ) + :parts ((sp-item 1930 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1930 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 1.0 2.0) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:rotvel-z (degrees -2.4) (degrees 3.4666667)) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 1.0 2.0) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:rotvel-z (degrees -2.4) (degrees 3.4666667)) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defbehavior yeti-slave-default-event-handler yeti-slave ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (nav-enemy-set-hit-from-direction arg0) - (go-virtual nav-enemy-die) - ) - (('touch) - (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic) - ) - ) - ) + (('attack) (nav-enemy-set-hit-from-direction arg0) (go-virtual nav-enemy-die)) + (('touch) (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic)))) (defstate yeti-slave-appear-jump-up (yeti-slave) :event yeti-slave-default-event-handler - :enter (behavior () - (nav-enemy-neck-control-inactive) - (set-time! (-> self state-time)) - (if (-> self nav-info move-to-ground) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1 navenmf2)) - (set! (-> self state-timeout) (seconds 1)) - (set! (-> self ground-y) (-> self collide-info trans y)) - (spawn (-> self part) (-> self collide-info trans)) - (+! (-> self collide-info trans y) -12288.0) - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (set! (-> self collide-info transv y) (rand-vu-float-range 102400.0 114688.0)) - ) - :trans (behavior () - (when (and (< (-> self collide-info trans y) (-> self ground-y)) (< (-> self collide-info transv y) 0.0)) - (set! (-> self collide-info trans y) (-> self ground-y)) + :enter + (behavior () + (nav-enemy-neck-control-inactive) + (set-time! (-> self state-time)) + (if (-> self nav-info move-to-ground) (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1 navenmf2)) + (set! (-> self state-timeout) (seconds 1)) + (set! (-> self ground-y) (-> self collide-info trans y)) + (spawn (-> self part) (-> self collide-info trans)) + (+! (-> self collide-info trans y) -12288.0) (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (go yeti-slave-appear-land) - ) - (let* ((s5-0 (-> self node-list)) - (a0-2 (-> s5-0 length)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! gp-0 (-> s5-0 data (nav-enemy-rnd-int-count a0-2))) - (spawn (-> self part2) gp-0) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! yeti-jump-ja :num! (seek!) :frame-num (ja-aframe 10.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post nav-enemy-falling-post - ) + (set! (-> self collide-info transv y) (rand-vu-float-range 102400.0 114688.0))) + :trans + (behavior () + (when (and (< (-> self collide-info trans y) (-> self ground-y)) (< (-> self collide-info transv y) 0.0)) + (set! (-> self collide-info trans y) (-> self ground-y)) + (set! (-> self collide-info transv quad) (-> *null-vector* quad)) + (go yeti-slave-appear-land)) + (let* ((s5-0 (-> self node-list)) + (a0-2 (-> s5-0 length)) + (gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> s5-0 data (nav-enemy-rnd-int-count a0-2))) + (spawn (-> self part2) gp-0))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! yeti-jump-ja :num! (seek!) :frame-num (ja-aframe 10.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop + (suspend))) + :post nav-enemy-falling-post) (defstate yeti-slave-appear-land (yeti-slave) :event yeti-slave-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! yeti-jump-land-ja :num! (seek! max 0.5) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.5)) - ) - (if (target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - (go-virtual nav-enemy-idle) - ) - ) - :post ja-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! yeti-jump-land-ja :num! (seek! max 0.5) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.5))) + (if (target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase) (go-virtual nav-enemy-idle))) + :post ja-post) (defstate yeti-slave-show-anims (yeti-slave) - :trans (behavior () - 0 - ) - :code (behavior () - 0 - ) - :post transform-post - ) + :trans + (behavior () + 0) + :code + (behavior () + 0) + :post transform-post) (defstate nav-enemy-patrol (yeti-slave) :virtual #t - :code (behavior () - (cond - ((ja-group? yeti-give-up-hop-ja) - (ja-channel-push! 1 (seconds 0.15)) - (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num (ja-aframe 12.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - ) - ) - (loop - (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (nav-enemy-rnd-percent? 0.2) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (let ((gp-1 (nav-enemy-rnd-int-range 2 6))) - (dotimes (s5-0 gp-1) - (ja-no-eval :group! yeti-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - -(defstate nav-enemy-chase (yeti-slave) - :virtual #t - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + :code + (behavior () (cond - ((ja-group? yeti-jump-land-ja) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.17)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) + ((ja-group? yeti-give-up-hop-ja) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num (ja-aframe 12.0 0)) (until (ja-done? 0) - (ja-blend-eval) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - ) - ) + (ja :num! (seek!)))) + (else (ja-channel-push! 1 (seconds 0.2)))) (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - ) - -(defstate nav-enemy-stare (yeti-slave) - :virtual #t - :code (behavior () - (set! (-> self turn-time) (seconds 0.2)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (when (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! yeti-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) + (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe 68.0 0) f30-0)) - ) - ) - (loop - (when (not (nav-enemy-facing-player? 2730.6667)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja :num! (seek!))) + (when (nav-enemy-rnd-percent? 0.2) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.6)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (let ((gp-1 (nav-enemy-rnd-int-range 2 6))) + (dotimes (s5-0 gp-1) + (ja-no-eval :group! yeti-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! yeti-turn-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (until (nav-enemy-facing-player? 1820.4445) + (ja-channel-push! 1 (seconds 0.6)) + (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (ja-blend-eval) (suspend) - (ja :num! (loop! 0.75)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - (if (not (ja-group? yeti-idle-ja)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja-no-eval :group! yeti-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) + (ja :num! (seek!))))))) + +(defstate nav-enemy-chase (yeti-slave) + :virtual #t + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (cond + ((ja-group? yeti-jump-land-ja) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.17)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max f30-0)))) + (else + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) + (ja :num-func num-func-identity :frame-num 0.0))) + (loop (suspend) - (ja :num! (seek! max f30-0)) - ) - (when (nav-enemy-rnd-percent? 0.3) + (ja :num! (loop! f30-0)))))) + +(defstate nav-enemy-stare (yeti-slave) + :virtual #t + :code + (behavior () + (set! (-> self turn-time) (seconds 0.2)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (when (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) + (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5))) (ja-channel-push! 1 (seconds 0.1)) (ja-no-eval :group! yeti-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe 68.0 0) f30-0)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 68.0 0) f30-0)))) + (loop + (when (not (nav-enemy-facing-player? 2730.6667)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! yeti-turn-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (until (nav-enemy-facing-player? 1820.4445) + (ja-blend-eval) + (suspend) + (ja :num! (loop! 0.75))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))) + (if (not (ja-group? yeti-idle-ja)) (ja-channel-push! 1 (seconds 0.2))) + (ja-no-eval :group! yeti-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (when (nav-enemy-rnd-percent? 0.3) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! yeti-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 68.0 0) f30-0)))))))) (defstate nav-enemy-give-up (yeti-slave) :virtual #t - :code (behavior () - (set! (-> self rotate-speed) 218453.33) - (set! (-> self turn-time) (seconds 0.5)) - (ja-channel-push! 1 (seconds 0.15)) - (let ((s4-0 (-> self collide-info)) - (s5-0 (target-pos 0)) - ) - (when (< (fabs - (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) - ) - 12743.111 - ) - (ja-no-eval :group! yeti-give-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! yeti-give-up-hop-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (set! (-> self rotate-speed) 218453.33) + (set! (-> self turn-time) (seconds 0.5)) + (ja-channel-push! 1 (seconds 0.15)) + (let ((s4-0 (-> self collide-info)) + (s5-0 (target-pos 0))) + (when (< (fabs (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans))))) + 12743.111) + (ja-no-eval :group! yeti-give-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! yeti-give-up-hop-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-jump-land (yeti-slave) :virtual #t - :code (behavior () - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info jump-land-anim)) - :num! (seek! (ja-aframe 32.0 0) 0.5) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe 32.0 0) 0.5)) - ) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info jump-land-anim)) + :num! + (seek! (ja-aframe 32.0 0) 0.5) + :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe 32.0 0) 0.5))) + (go-virtual nav-enemy-chase))) (defmethod initialize-collision ((this yeti-slave)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 3) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -485,33 +397,27 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s4-0 s3-2) - ) - ) + (append-prim s4-0 s3-2))) (set! (-> s5-0 nav-radius) 6144.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this yeti-slave)) (initialize-skeleton this *yeti-sg* '()) @@ -521,23 +427,16 @@ (set! (-> this neck nose) (the-as uint 1)) (set! (-> this neck ear) (the-as uint 2)) 0 - (none) - ) + (none)) (defmethod deactivate ((this yeti-slave)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this yeti-slave) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (call-parent-method this arg0)) (defbehavior yeti-slave-init-by-other yeti-slave ((arg0 entity) (arg1 yeti) (arg2 vector) (arg3 vector) (arg4 symbol)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 538) self)) @@ -548,143 +447,91 @@ (forward-up->quaternion (-> self collide-info quat) arg3 *up-vector*) (set! (-> self entity) (-> arg1 entity)) (nav-enemy-method-48 self) - (if arg4 - (go-virtual nav-enemy-idle) - (go yeti-slave-appear-jump-up) - ) - (none) - ) + (if arg4 (go-virtual nav-enemy-idle) (go yeti-slave-appear-jump-up)) + (none)) (defmethod aggro? ((this yeti) (arg0 vector)) (let ((s5-0 (the-as (pointer process-tree) (-> this child-process)))) (while s5-0 - (if (< (vector-vector-xz-distance-squared arg0 (-> (the-as (pointer yeti-slave) s5-0) 0 collide-info trans)) - 603979800.0 - ) - (return #f) - ) - (set! s5-0 (-> s5-0 0 brother)) - ) - ) + (if (< (vector-vector-xz-distance-squared arg0 (-> (the-as (pointer yeti-slave) s5-0) 0 collide-info trans)) 603979800.0) + (return #f)) + (set! s5-0 (-> s5-0 0 brother)))) (when *target* - (if (< (vector-vector-xz-distance-squared arg0 (target-pos 0)) 603979800.0) - (return #f) - ) - ) - #t - ) + (if (< (vector-vector-xz-distance-squared arg0 (target-pos 0)) 603979800.0) (return #f))) + #t) (defmethod yeti-method-20 ((this yeti) (arg0 vector) (arg1 vector)) (let ((s3-0 (-> this path curve num-cverts))) - (if (<= s3-0 0) - (return #f) - ) + (if (<= s3-0 0) (return #f)) (let ((s1-0 (rand-vu-int-count s3-0)) - (s2-0 s3-0) - ) + (s2-0 s3-0)) (while (> s2-0 0) (eval-path-curve-div! (-> this path) arg0 (the float s1-0) 'interp) (when (aggro? this arg0) (cond - (*target* - (vector-! arg1 (target-pos 0) arg0) - (set! (-> arg1 y) 0.0) - ) + (*target* (vector-! arg1 (target-pos 0) arg0) (set! (-> arg1 y) 0.0)) (else - (set-vector! arg1 (rand-vu-float-range -4096.0 4096.0) 0.0 (rand-vu-float-range -4096.0 4096.0) 1.0) - (+! (-> arg1 x) 409.6) - ) - ) + (set-vector! arg1 (rand-vu-float-range -4096.0 4096.0) 0.0 (rand-vu-float-range -4096.0 4096.0) 1.0) + (+! (-> arg1 x) 409.6))) (vector-normalize! arg1 1.0) - (return #t) - ) + (return #t)) (set! s1-0 (mod (+ s1-0 1) s3-0)) - (+! s2-0 -1) - ) - ) - ) - #f - ) + (+! s2-0 -1)))) + #f) (defstate yeti-first-time-start (yeti) - :code (behavior () - (loop - (when *target* - (when (>= (-> self first-time-spawn-dist) (vector-vector-xz-distance (target-pos 0) (-> self root trans))) - (process-entity-status! self (entity-perm-status complete) #t) - (go yeti-idle) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (when *target* + (when (>= (-> self first-time-spawn-dist) (vector-vector-xz-distance (target-pos 0) (-> self root trans))) + (process-entity-status! self (entity-perm-status complete) #t) + (go yeti-idle))) + (suspend)))) (defstate yeti-resuming-start (yeti) - :code (behavior () - (let ((gp-0 0)) - (let ((v1-0 (the-as (pointer process-tree) (-> self child-process)))) - (while v1-0 - (+! gp-0 1) - (set! v1-0 (-> v1-0 0 brother)) - (nop!) - (nop!) - ) - ) - (while (< gp-0 (-> self desired-num-children)) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (if (not (yeti-method-20 self s5-0 s4-0)) - (go yeti-idle) - ) - (process-spawn yeti-slave (-> self entity) self s5-0 s4-0 #t :to self) - ) - (+! gp-0 1) - ) - ) - (go yeti-idle) - ) - ) + :code + (behavior () + (let ((gp-0 0)) + (let ((v1-0 (the-as (pointer process-tree) (-> self child-process)))) + (while v1-0 + (+! gp-0 1) + (set! v1-0 (-> v1-0 0 brother)) + (nop!) + (nop!))) + (while (< gp-0 (-> self desired-num-children)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector))) + (if (not (yeti-method-20 self s5-0 s4-0)) (go yeti-idle)) + (process-spawn yeti-slave (-> self entity) self s5-0 s4-0 #t :to self)) + (+! gp-0 1))) + (go yeti-idle))) (defstate yeti-idle (yeti) - :code (behavior () - (loop - (cond - ((zero? (-> self spawn-delay)) - (let ((v1-1 0)) - (let ((a0-0 (the-as (pointer process-tree) (-> self child-process)))) - (while a0-0 - (+! v1-1 1) - (set! a0-0 (-> a0-0 0 brother)) - (nop!) - (nop!) - ) - ) - (when (< v1-1 (-> self desired-num-children)) - (set! (-> self spawn-delay) (rand-vu-int-range 150 1200)) - (set-time! (-> self state-time)) - ) - ) - ) - (else - (when (time-elapsed? (-> self state-time) (-> self spawn-delay)) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (when (yeti-method-20 self gp-0 s5-0) - (process-spawn yeti-slave (-> self entity) self gp-0 s5-0 #f :to self) - (set! (-> self spawn-delay) 0) - 0 - ) - ) - ) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (cond + ((zero? (-> self spawn-delay)) + (let ((v1-1 0)) + (let ((a0-0 (the-as (pointer process-tree) (-> self child-process)))) + (while a0-0 + (+! v1-1 1) + (set! a0-0 (-> a0-0 0 brother)) + (nop!) + (nop!))) + (when (< v1-1 (-> self desired-num-children)) + (set! (-> self spawn-delay) (rand-vu-int-range 150 1200)) + (set-time! (-> self state-time))))) + (else + (when (time-elapsed? (-> self state-time) (-> self spawn-delay)) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (when (yeti-method-20 self gp-0 s5-0) + (process-spawn yeti-slave (-> self entity) self gp-0 s5-0 #f :to self) + (set! (-> self spawn-delay) 0) + 0))))) + (suspend)))) (defmethod init-from-entity! ((this yeti) (arg0 entity-actor)) (set! (-> this spawn-delay) 0) @@ -692,12 +539,9 @@ (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (process-drawable-from-entity! this arg0) (set! (-> this desired-num-children) - (res-lump-value arg0 'num-lurkers int :default (the-as uint128 (-> this path curve num-cverts))) - ) + (res-lump-value arg0 'num-lurkers int :default (the-as uint128 (-> this path curve num-cverts)))) (set! (-> this first-time-spawn-dist) (res-lump-float arg0 'notice-dist :default 204800.0)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go yeti-resuming-start) - (go yeti-first-time-start) - ) - (none) - ) + (go yeti-resuming-start) + (go yeti-first-time-start)) + (none)) diff --git a/goal_src/jak1/levels/sunken/bully.gc b/goal_src/jak1/levels/sunken/bully.gc index b4ae7999e2..a7e7b16c11 100644 --- a/goal_src/jak1/levels/sunken/bully.gc +++ b/goal_src/jak1/levels/sunken/bully.gc @@ -1,229 +1,211 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/nav/navigate.gc") (require "engine/common-obs/collectables.gc") (require "engine/anim/joint-mod-h.gc") - -;; name: bully.gc -;; name in dgo: bully -;; dgos: L1, SUN, SUNKEN - (declare-type bully process-drawable) ;; DECOMP BEGINS (deftype bully-broken-cage (process-drawable) - ((parent-override (pointer bully) :overlay-at parent) - ) + ((parent-override (pointer bully) :overlay-at parent)) (:states - bully-broken-cage-explode - ) - ) - + bully-broken-cage-explode)) (deftype bully (process-drawable) - ((root collide-shape-moving :override) - (fact fact-info-enemy :override) - (hit-player? symbol) - (bounced? symbol) - (bounce-volume int32) - (facing-ry float) - (travel-ry float) - (speed-u float) - (spin-vel float) - (travel-speed float) - (reaction-delay time-frame) - (start-spin-time time-frame) - (slow-down time-frame) - (hit-player-time time-frame) - (neck joint-mod) - ) + ((root collide-shape-moving :override) + (fact fact-info-enemy :override) + (hit-player? symbol) + (bounced? symbol) + (bounce-volume int32) + (facing-ry float) + (travel-ry float) + (speed-u float) + (spin-vel float) + (travel-speed float) + (reaction-delay time-frame) + (start-spin-time time-frame) + (slow-down time-frame) + (hit-player-time time-frame) + (neck joint-mod)) (:methods - (bully-method-20 (_type_) float) - ) + (bully-method-20 (_type_) float)) (:states - bully-die - (bully-idle symbol) - bully-notice - bully-start-spinning - bully-stop-spinning - ) - ) - - -(defskelgroup *bully-sg* bully bully-lod0-jg bully-idle-ja - ((bully-lod0-mg (meters 20)) (bully-lod1-mg (meters 40)) (bully-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1.5 0 3) - :shadow bully-shadow-mg - ) - -(defskelgroup *bully-broken-cage-sg* bully bully-broken-cage-lod0-jg -1 - ((bully-broken-cage-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 6) - ) + bully-die + (bully-idle symbol) + bully-notice + bully-start-spinning + bully-stop-spinning)) + +(defskelgroup *bully-sg* + bully + bully-lod0-jg + bully-idle-ja + ((bully-lod0-mg (meters 20)) (bully-lod1-mg (meters 40)) (bully-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 3) + :shadow bully-shadow-mg) + +(defskelgroup *bully-broken-cage-sg* + bully + bully-broken-cage-lod0-jg + -1 + ((bully-broken-cage-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 6)) (define *bully-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags shdf00 shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w 10240.0) - :top-plane (new 'static 'plane :y 1.0 :w -2048.0) - :fade-dist 245760.0 - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags shdf00 shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 10240.0) + :top-plane + (new 'static 'plane :y 1.0 :w -2048.0) + :fade-dist 245760.0))) (defpartgroup group-bully-explode :id 454 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2871) (sp-item 2872) (sp-item 2873) (sp-item 2874) (sp-item 2875)) - ) + :parts ((sp-item 2871) (sp-item 2872) (sp-item 2873) (sp-item 2874) (sp-item 2875))) (defpart 2871 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0.5) (meters 2)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 128.0 32.0) - (:b 128.0 32.0) - (:a 32.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:accel-y (meters 0.00066666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 2876) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0.5) (meters 2)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 128.0 32.0) + (:b 128.0 32.0) + (:a 32.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:accel-y (meters 0.00066666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 2876) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2876 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2872 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 4.0) - (:y (meters 1.5)) - (:scale-x (meters 6) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3) (meters 1)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2877) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 4.0) + (:y (meters 1.5)) + (:scale-x (meters 6) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3) (meters 1)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2877) + (:rotate-y (degrees 0)))) (defpart 2877 - :init-specs ((:fade-a -2.1333334)) - ) + :init-specs ((:fade-a -2.1333334))) (defpart 2873 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1.5)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 48.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1.5)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 48.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 2874 - :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x2)) - (:num 16.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.6) 2.0 (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 160.0) - (:g 160.0) - (:b 160.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 2 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.25)) - (:next-launcher 2878) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6 :page #x2)) + (:num 16.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.6) 2.0 (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 160.0) + (:g 160.0) + (:b 160.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 2 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.25)) + (:next-launcher 2878) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2878 - :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4)) - ) + :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4))) (defpart 2875 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x2)) - (:num 16.5) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.3) 1 (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 100.0) - (:g 100.0) - (:b 100.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 3 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.25)) - (:next-launcher 2878) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x2)) + (:num 16.5) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.3) 1 (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 100.0) + (:g 100.0) + (:b 100.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 3 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.25)) + (:next-launcher 2878) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defstate bully-broken-cage-explode (bully-broken-cage) - :code (behavior () - (ja-channel-push! 1 0) - (ja-no-eval :group! bully-broken-cage-explode-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - :post ja-post - ) + :code + (behavior () + (ja-channel-push! 1 0) + (ja-no-eval :group! bully-broken-cage-explode-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + :post ja-post) (defbehavior bully-broken-cage-init-by-other bully-broken-cage ((arg0 entity-actor)) (set! (-> self entity) arg0) @@ -233,8 +215,7 @@ (set! (-> self root scale quad) (-> self parent-override 0 root scale quad)) (initialize-skeleton self *bully-broken-cage-sg* '()) (go bully-broken-cage-explode) - (none) - ) + (none)) ;; WARN: disable def twice: 148. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defbehavior bully-default-event-handler bully ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -245,491 +226,341 @@ ((= (-> arg0 type) bully) (let ((v1-3 (new 'stack-no-clear 'vector))) (vector-! v1-3 (-> self root trans) (-> (the-as process-drawable arg0) root trans)) - (set! (-> self travel-ry) (atan (-> v1-3 x) (-> v1-3 z))) - ) + (set! (-> self travel-ry) (atan (-> v1-3 x) (-> v1-3 z)))) (set! (-> self bounced?) #t) (set! v0-0 100) (set! (-> self bounce-volume) (the-as int v0-0)) - v0-0 - ) + v0-0) ((= (-> arg0 type) target) (cond - ((= (-> arg3 param 1) 'flop) - (go bully-die) - (return #t) - v0-0 - ) + ((= (-> arg3 param 1) 'flop) (go bully-die) (return #t) v0-0) ((or (= arg2 'touch) (= arg2 'attack)) (cond ((>= (- (-> (target-pos 0) y) (-> self root trans y)) 6144.0) (let* ((f0-6 (fmax 0.6 (* 0.000023935356 (-> self travel-speed)))) (f28-0 (* 8192.0 f0-6)) (f30-0 (* 8192.0 f0-6)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 (target-pos 0) (-> self root trans)) (let ((f26-0 (atan (-> s4-0 x) (-> s4-0 z)))) (when (< 0.0 (-> self travel-speed)) (let ((f0-11 (deg- f26-0 (-> self travel-ry)))) - (if (< (fabs f0-11) 8192.0) - (set! f26-0 (if (>= f0-11 0.0) - (+ 8192.0 f26-0) - (+ -8192.0 f26-0) - ) - ) - ) - ) - ) - (set-vector! s4-0 (* (sin f26-0) f28-0) 0.0 (* (cos f26-0) f28-0) 1.0) - ) + (if (< (fabs f0-11) 8192.0) (set! f26-0 (if (>= f0-11 0.0) (+ 8192.0 f26-0) (+ -8192.0 f26-0)))))) + (set-vector! s4-0 (* (sin f26-0) f28-0) 0.0 (* (cos f26-0) f28-0) 1.0)) (when (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-up f30-0) (vector s4-0)))) - (level-hint-spawn - (text-id sunken-bully-dive-hint) - "sksp0131" - (the-as entity #f) - *entity-pool* - (game-task none) - ) + (level-hint-spawn (text-id sunken-bully-dive-hint) "sksp0131" (the-as entity #f) *entity-pool* (game-task none)) (set! (-> self bounced?) #t) (set! v0-0 100) (set! (-> self bounce-volume) (the-as int v0-0)) - v0-0 - ) - ) - ) + v0-0))) (else - (let ((f0-21 (fmax 0.6 (* 0.000023935356 (-> self travel-speed))))) - (when (send-event - arg0 - 'attack - (-> arg3 param 0) - (static-attack-info ((shove-up (* 12288.0 f0-21)) (shove-back (* 16384.0 f0-21)))) - ) - (level-hint-spawn - (text-id sunken-bully-dive-hint) - "sksp0131" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (set! (-> self hit-player?) #t) - (set! (-> self bounced?) #t) - (set! (-> self bounce-volume) 100) - (set-time! (-> self hit-player-time)) - (set-collide-offense (-> self root) 2 (collide-offense no-offense)) - ) - ) - ) - ) - ) - ) - ) + (let ((f0-21 (fmax 0.6 (* 0.000023935356 (-> self travel-speed))))) + (when (send-event arg0 + 'attack + (-> arg3 param 0) + (static-attack-info ((shove-up (* 12288.0 f0-21)) (shove-back (* 16384.0 f0-21))))) + (level-hint-spawn (text-id sunken-bully-dive-hint) "sksp0131" (the-as entity #f) *entity-pool* (game-task none)) + (set! (-> self hit-player?) #t) + (set! (-> self bounced?) #t) + (set! (-> self bounce-volume) 100) + (set-time! (-> self hit-player-time)) + (set-collide-offense (-> self root) 2 (collide-offense no-offense))))))))) (else - (when (= arg2 'touched) - (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'explode)))) - ) - (else - (let ((a1-14 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-14 from) self) - (set! (-> a1-14 num-params) 4) - (set! (-> a1-14 message) 'attack) - (set! (-> a1-14 param 0) (-> arg3 param 0)) - (set! (-> a1-14 param 1) (the-as uint 'explode)) - (let ((v1-48 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-48) - (set! (-> a1-14 param 2) (the-as uint v1-48)) - ) - (set! (-> a1-14 param 3) (the-as uint 0)) - (send-event-function arg0 a1-14) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (when (= arg2 'touched) + (cond + ((= (-> arg0 type) target) (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'explode))))) + (else + (let ((a1-14 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-14 from) self) + (set! (-> a1-14 num-params) 4) + (set! (-> a1-14 message) 'attack) + (set! (-> a1-14 param 0) (-> arg3 param 0)) + (set! (-> a1-14 param 1) (the-as uint 'explode)) + (let ((v1-48 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-48) (set! (-> a1-14 param 2) (the-as uint v1-48))) + (set! (-> a1-14 param 3) (the-as uint 0)) + (send-event-function arg0 a1-14)))))))))) (defbehavior bully-post bully () (when (and (-> self hit-player?) (or (not *target*) (and (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (time-elapsed? (-> self hit-player-time) (seconds 0.05)) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (time-elapsed? (-> self hit-player-time) (seconds 0.05))))) (set-collide-offense (-> self root) 2 (collide-offense normal-attack)) - (set! (-> self hit-player?) #f) - ) + (set! (-> self hit-player?) #f)) (transform-post) - (none) - ) + (none)) (defmethod bully-method-20 ((this bully)) (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) - (set-vector! - (-> this root transv) - (* (sin (-> this travel-ry)) (-> this travel-speed)) - 0.0 - (* (cos (-> this travel-ry)) (-> this travel-speed)) - 1.0 - ) + (set-vector! (-> this root transv) + (* (sin (-> this travel-ry)) (-> this travel-speed)) + 0.0 + (* (cos (-> this travel-ry)) (-> this travel-speed)) + 1.0) (let ((s5-1 #f)) (nav-control-method-28 (-> this nav) (collide-kind wall-object ground-object)) (let ((v1-4 (-> this nav travel))) (.lvf vf1 (&-> (-> this root transv) quad)) - (let ((f0-8 (seconds-per-frame))) - (.mov at-0 f0-8) - ) + (let ((f0-8 (seconds-per-frame))) (.mov at-0 f0-8)) (.mov vf2 at-0) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-4 quad) vf1) - ) + (.svf (&-> v1-4 quad) vf1)) (let ((s4-0 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) (when (>= (nav-control-method-23 (-> this nav) (-> this nav travel) s4-0) 0.0) (let ((s5-2 (new 'stack-no-clear 'vector))) (set! (-> s5-2 quad) (-> s4-0 normal quad)) (set! (-> s5-2 y) 0.0) (vector-normalize! s5-2 1.0) - (vector-reflect! (-> this root transv) (-> this root transv) s5-2) - ) + (vector-reflect! (-> this root transv) (-> this root transv) s5-2)) (set! (-> this travel-ry) (atan (-> this root transv x) (-> this root transv z))) (+! (-> this travel-ry) (rand-vu-float-range -910.2222 910.2222)) (vector-reset! (-> this root transv)) (set! s5-1 #t) (set! (-> this bounced?) #t) - (set! (-> this bounce-volume) 100) - ) - ) + (set! (-> this bounce-volume) 100))) (when (not s5-1) (vector-normalize-copy! (-> this nav travel) (-> this root transv) 2048.0) (let ((s5-3 (new 'stack 'clip-travel-vector-to-mesh-return-info))) (nav-control-method-24 (-> this nav) 2048.0 s5-3) - (when (and (-> s5-3 found-boundary) (>= (* (-> this travel-speed) (seconds-per-frame)) - (vector-vector-xz-distance (-> s5-3 intersection) (-> this root trans)) - ) - ) + (when (and (-> s5-3 found-boundary) + (>= (* (-> this travel-speed) (seconds-per-frame)) + (vector-vector-xz-distance (-> s5-3 intersection) (-> this root trans)))) (let ((s4-1 (new 'stack-no-clear 'vector))) (vector-negate! s4-1 (-> s5-3 boundary-normal)) (set! (-> s4-1 y) 0.0) (vector-normalize! s4-1 1.0) - (vector-reflect! (-> this root transv) (-> this root transv) s4-1) - ) + (vector-reflect! (-> this root transv) (-> this root transv) s4-1)) (set! (-> this travel-ry) (atan (-> this root transv x) (-> this root transv z))) (+! (-> this travel-ry) (rand-vu-float-range -910.2222 910.2222)) (vector-reset! (-> this root transv)) #t (set! (-> this bounced?) #t) - (set! (-> this bounce-volume) 60) - ) - ) - ) - ) - (set! (-> this root transv y) (+ -36864.0 (-> this root transv y))) - ) - ) + (set! (-> this bounce-volume) 60))))) + (set! (-> this root transv y) (+ -36864.0 (-> this root transv y))))) (defstate bully-idle (bully) :event bully-default-event-handler - :enter (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - (set! (-> self reaction-delay) (rand-vu-int-range 0 (seconds 0.35))) - (set! (-> self travel-speed) 0.0) - (shut-down! (-> self neck)) - (let ((v1-5 (-> self draw shadow-ctrl))) - (logior! (-> v1-5 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - :exit (behavior () - (let ((v1-1 (-> self draw shadow-ctrl))) - (logclear! (-> v1-1 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - :trans (behavior () - (when (and (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (time-elapsed? (-> self state-time) (-> self reaction-delay)) - ) - (start-hint-timer (text-id sunken-bully-dive-hint)) - (go bully-notice) - ) - ) - :code (behavior ((arg0 symbol)) - (ja-channel-push! 1 (seconds 0.075)) - (if arg0 - (ja :group! bully-idle-ja - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (ja :group! bully-idle-ja :num! min) - ) - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post bully-post - ) + :enter + (behavior ((arg0 symbol)) + (set-time! (-> self state-time)) + (set! (-> self reaction-delay) (rand-vu-int-range 0 (seconds 0.35))) + (set! (-> self travel-speed) 0.0) + (shut-down! (-> self neck)) + (let ((v1-5 (-> self draw shadow-ctrl))) (logior! (-> v1-5 settings flags) (shadow-flags disable-draw))) + 0) + :exit + (behavior () + (let ((v1-1 (-> self draw shadow-ctrl))) (logclear! (-> v1-1 settings flags) (shadow-flags disable-draw))) + 0) + :trans + (behavior () + (when (and (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self reaction-delay))) + (start-hint-timer (text-id sunken-bully-dive-hint)) + (go bully-notice))) + :code + (behavior ((arg0 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (if arg0 + (ja :group! bully-idle-ja :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))))) + (ja :group! bully-idle-ja :num! min)) + (loop + (suspend) + (ja :num! (loop!)))) + :post bully-post) (defstate bully-notice (bully) :event bully-default-event-handler - :trans (behavior () - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - (set-target! (-> self neck) (target-pos 5)) - ) - ) - :code (behavior () - (set! (-> self travel-speed) 0.0) - (ja-channel-push! 1 (seconds 0.075)) - (set-vector! (-> self root transv) 0.0 (rand-vu-float-range 61440.0 90112.0) 0.0 1.0) - (ja-no-eval :group! bully-notice-jump-up-ja :num! (seek! (ja-aframe 13.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 13.0 0))) - ) - (until (logtest? (-> self root status) (cshape-moving-flags onsurf)) - (ja :num! (seek!)) - (+! (-> self root transv y) (* -545996.8 (seconds-per-frame))) - (integrate-for-enemy-with-move-to-ground! - (-> self root) - (-> self root transv) - (collide-kind background) - 12288.0 - #f - #f - #f - ) + :trans + (behavior () (when *target* - (let ((gp-3 (new 'stack-no-clear 'vector))) - (vector-! gp-3 (target-pos 0) (-> self root trans)) - (seek-toward-heading-vec! (-> self root) gp-3 524288.0 (seconds 0.1)) - ) - (set! (-> self facing-ry) (quaternion-y-angle (-> self root quat))) - ) - (suspend) - ) - (ja-no-eval :group! bully-notice-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go bully-start-spinning) - ) - :post bully-post - ) - -(defstate bully-start-spinning (bully) - :event bully-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set-time! (-> self start-spin-time)) - (set! (-> self slow-down) (rand-vu-int-range (seconds 4) (seconds 8))) - (set! (-> self speed-u) 0.2) - (set! (-> self bounced?) #f) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (if *target* - (vector-! gp-0 (target-pos 0) (-> self root trans)) - (vector-z-quaternion! gp-0 (-> self root quat)) - ) - (set! (-> self travel-ry) (atan (-> gp-0 x) (-> gp-0 z))) - ) - (+! (-> self travel-ry) (rand-vu-float-range -910.2222 910.2222)) - ) - :trans (behavior () - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - (set-target! (-> self neck) (target-pos 5)) - ) - (cond - ((time-elapsed? (-> self start-spin-time) (-> self slow-down)) - (seek! (-> self speed-u) 0.0 (* 0.5555556 (seconds-per-frame))) - (if (= (-> self speed-u) 0.0) - (go bully-stop-spinning) - ) - ) - (else - (seek! (-> self speed-u) 1.0 (* 0.5555556 (seconds-per-frame))) - ) - ) - (set! (-> self spin-vel) (* 196608.0 (-> self speed-u))) - (set! (-> self travel-speed) (* 41779.2 (-> self speed-u))) - (+! (-> self facing-ry) (* (-> self spin-vel) (seconds-per-frame))) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self facing-ry)) - (bully-method-20 self) - (integrate-for-enemy-with-move-to-ground! - (-> self root) - (-> self root transv) - (collide-kind background) - 8192.0 - #f - #f - #f - ) - (nav-control-method-27 (-> self nav)) - ) - :code (behavior () - (local-vars (v1-34 symbol) (v1-52 symbol)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! bully-start-spin-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self bounced?) #f) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! bully-spin-ja :num! min) - (loop - (until v1-34 + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)) + (set-target! (-> self neck) (target-pos 5)))) + :code + (behavior () + (set! (-> self travel-speed) 0.0) + (ja-channel-push! 1 (seconds 0.075)) + (set-vector! (-> self root transv) 0.0 (rand-vu-float-range 61440.0 90112.0) 0.0 1.0) + (ja-no-eval :group! bully-notice-jump-up-ja :num! (seek! (ja-aframe 13.0 0)) :frame-num 0.0) + (until (ja-done? 0) (suspend) + (ja :num! (seek! (ja-aframe 13.0 0)))) + (until (logtest? (-> self root status) (cshape-moving-flags onsurf)) (ja :num! (seek!)) - (set! v1-34 (or (ja-done? 0) (-> self bounced?))) - ) - (when (-> self bounced?) - (sound-play "bully-bounce" :vol (the float (-> self bounce-volume))) - (until (not (-> self bounced?)) - (set! (-> self bounced?) #f) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! bully-idle-bounced-ja :num! min) - (until v1-52 - (suspend) - (ja :num! (seek!)) - (set! v1-52 (or (ja-done? 0) (-> self bounced?))) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja :group! bully-spin-ja :num! min) - ) - ) - :post bully-post - ) + (+! (-> self root transv y) (* -545996.8 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self root) + (-> self root transv) + (collide-kind background) + 12288.0 + #f + #f + #f) + (when *target* + (let ((gp-3 (new 'stack-no-clear 'vector))) + (vector-! gp-3 (target-pos 0) (-> self root trans)) + (seek-toward-heading-vec! (-> self root) gp-3 524288.0 (seconds 0.1))) + (set! (-> self facing-ry) (quaternion-y-angle (-> self root quat)))) + (suspend)) + (ja-no-eval :group! bully-notice-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go bully-start-spinning)) + :post bully-post) -(defstate bully-stop-spinning (bully) +(defstate bully-start-spinning (bully) :event bully-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self reaction-delay) (rand-vu-int-range (seconds 2) (seconds 3))) - (set! (-> self travel-speed) 0.0) - (set! (-> self bounced?) #f) - ) - :trans (behavior () - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - (set-target! (-> self neck) (target-pos 5)) - ) - ) - :code (behavior () - (local-vars (v1-17 symbol) (v1-35 symbol)) - (let ((gp-0 2)) + :enter + (behavior () + (set-time! (-> self state-time)) + (set-time! (-> self start-spin-time)) + (set! (-> self slow-down) (rand-vu-int-range (seconds 4) (seconds 8))) + (set! (-> self speed-u) 0.2) + (set! (-> self bounced?) #f) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (if *target* (vector-! gp-0 (target-pos 0) (-> self root trans)) (vector-z-quaternion! gp-0 (-> self root quat))) + (set! (-> self travel-ry) (atan (-> gp-0 x) (-> gp-0 z)))) + (+! (-> self travel-ry) (rand-vu-float-range -910.2222 910.2222))) + :trans + (behavior () + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)) + (set-target! (-> self neck) (target-pos 5))) + (cond + ((time-elapsed? (-> self start-spin-time) (-> self slow-down)) + (seek! (-> self speed-u) 0.0 (* 0.5555556 (seconds-per-frame))) + (if (= (-> self speed-u) 0.0) (go bully-stop-spinning))) + (else (seek! (-> self speed-u) 1.0 (* 0.5555556 (seconds-per-frame))))) + (set! (-> self spin-vel) (* 196608.0 (-> self speed-u))) + (set! (-> self travel-speed) (* 41779.2 (-> self speed-u))) + (+! (-> self facing-ry) (* (-> self spin-vel) (seconds-per-frame))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self facing-ry)) + (bully-method-20 self) + (integrate-for-enemy-with-move-to-ground! (-> self root) + (-> self root transv) + (collide-kind background) + 8192.0 + #f + #f + #f) + (nav-control-method-27 (-> self nav))) + :code + (behavior () + (local-vars (v1-34 symbol) (v1-52 symbol)) (ja-channel-push! 1 (seconds 0.2)) - (until (time-elapsed? (-> self state-time) (-> self reaction-delay)) - (cond - ((>= gp-0 0) - (+! gp-0 -1) - (ja :group! bully-dizzy-ja :num! min) - ) - (else - (ja :group! bully-idle-ja :num! min) - ) - ) - (until v1-17 + (ja-no-eval :group! bully-start-spin-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self bounced?) #f) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! bully-spin-ja :num! min) + (loop + (until v1-34 (suspend) (ja :num! (seek!)) - (set! v1-17 (or (ja-done? 0) (-> self bounced?))) - ) + (set! v1-34 (or (ja-done? 0) (-> self bounced?)))) (when (-> self bounced?) (sound-play "bully-bounce" :vol (the float (-> self bounce-volume))) - (set! gp-0 0) (until (not (-> self bounced?)) (set! (-> self bounced?) #f) (ja-channel-push! 1 (seconds 0.2)) (ja :group! bully-idle-bounced-ja :num! min) - (until v1-35 + (until v1-52 (suspend) (ja :num! (seek!)) - (set! v1-35 (or (ja-done? 0) (-> self bounced?))) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - ) - ) - ) - (if (or (not *target*) - (< (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go bully-idle #f) - ) - (go bully-start-spinning) - ) - :post bully-post - ) + (set! v1-52 (or (ja-done? 0) (-> self bounced?))))) + (ja-channel-push! 1 (seconds 0.2))) + (ja :group! bully-spin-ja :num! min))) + :post bully-post) + +(defstate bully-stop-spinning (bully) + :event bully-default-event-handler + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self reaction-delay) (rand-vu-int-range (seconds 2) (seconds 3))) + (set! (-> self travel-speed) 0.0) + (set! (-> self bounced?) #f)) + :trans + (behavior () + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)) + (set-target! (-> self neck) (target-pos 5)))) + :code + (behavior () + (local-vars (v1-17 symbol) (v1-35 symbol)) + (let ((gp-0 2)) + (ja-channel-push! 1 (seconds 0.2)) + (until (time-elapsed? (-> self state-time) (-> self reaction-delay)) + (cond + ((>= gp-0 0) (+! gp-0 -1) (ja :group! bully-dizzy-ja :num! min)) + (else (ja :group! bully-idle-ja :num! min))) + (until v1-17 + (suspend) + (ja :num! (seek!)) + (set! v1-17 (or (ja-done? 0) (-> self bounced?)))) + (when (-> self bounced?) + (sound-play "bully-bounce" :vol (the float (-> self bounce-volume))) + (set! gp-0 0) + (until (not (-> self bounced?)) + (set! (-> self bounced?) #f) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! bully-idle-bounced-ja :num! min) + (until v1-35 + (suspend) + (ja :num! (seek!)) + (set! v1-35 (or (ja-done? 0) (-> self bounced?))))) + (ja-channel-push! 1 (seconds 0.2))))) + (if (or (not *target*) + (< (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go bully-idle #f)) + (go bully-start-spinning)) + :post bully-post) (defstate bully-die (bully) - :code (behavior () - (cleanup-for-death self) - (shut-down! (-> self neck)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-spawn bully-broken-cage (-> self entity) :to self) - (spawn (-> self part) (-> self root trans)) - (clear-collide-with-as (-> self root)) - (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! bully-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (increment-success-for-hint (text-id sunken-bully-dive-hint)) - (logior! (-> self draw status) (draw-status hidden)) - (while (-> self child) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (cleanup-for-death self) + (shut-down! (-> self neck)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-spawn bully-broken-cage (-> self entity) :to self) + (spawn (-> self part) (-> self root trans)) + (clear-collide-with-as (-> self root)) + (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! bully-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (increment-success-for-hint (text-id sunken-bully-dive-hint)) + (logior! (-> self draw status) (draw-status hidden)) + (while (-> self child) + (suspend))) + :post transform-post) (defmethod relocate ((this bully) (arg0 int)) - (if (nonzero? (-> this neck)) - (&+! (-> this neck) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this neck)) (&+! (-> this neck) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this bully) (arg0 entity-actor)) (set! (-> this hit-player?) #f) @@ -741,9 +572,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind cak-2 target crate enemy)) @@ -757,21 +586,17 @@ (set! (-> s2-0 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s2-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-0 local-sphere) 0.0 4096.0 0.0 6963.2) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind cak-2 target crate enemy)) (set! (-> s2-1 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-1 local-sphere) 0.0 9420.8 0.0 4096.0) - (append-prim s3-0 s2-1) - ) - ) + (append-prim s3-0 s2-1))) (set! (-> s4-0 nav-radius) 7680.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (set! (-> this root event-self) 'touched) (set! (-> this root event-other) 'touch) (process-drawable-from-entity! this arg0) @@ -780,9 +605,7 @@ (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 454) this)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (let ((v1-49 (new 'process 'joint-mod (joint-mod-handler-mode reset) this 5))) (set! (-> this neck) v1-49) (set-vector! (-> this neck twist-max) 8192.0 8192.0 0.0 1.0) @@ -790,13 +613,10 @@ (set! (-> v1-49 nose) (the-as uint 2)) (set! (-> v1-49 ear) (the-as uint 0)) (set! (-> v1-49 max-dist) 102400.0) - (set! (-> v1-49 ignore-angle) 16384.0) - ) + (set! (-> v1-49 ignore-angle) 16384.0)) (transform-post) (if (not (move-to-ground (-> this root) 12288.0 40960.0 #t (collide-kind background))) - (go process-drawable-art-error "no ground") - ) + (go process-drawable-art-error "no ground")) (set! (-> this facing-ry) (quaternion-y-angle (-> this root quat))) (go bully-idle #t) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/double-lurker.gc b/goal_src/jak1/levels/sunken/double-lurker.gc index fc9b6116b2..b1bcf236c1 100644 --- a/goal_src/jak1/levels/sunken/double-lurker.gc +++ b/goal_src/jak1/levels/sunken/double-lurker.gc @@ -1,401 +1,328 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "levels/misty/muse.gc") - -;; name: double-lurker.gc -;; name in dgo: double-lurker -;; dgos: L1, SUN, SUNKEN - (declare-type double-lurker nav-enemy) ;; DECOMP BEGINS (deftype double-lurker-top (nav-enemy) - ((parent-process (pointer double-lurker) :overlay-at parent) - (fall-dest vector :inline) - ) - (:states - (double-lurker-top-knocked-down object vector vector) - double-lurker-top-on-shoulders - double-lurker-top-on-shoulders-die - double-lurker-top-resume - ) - ) - + ((parent-process (pointer double-lurker) :overlay-at parent) + (fall-dest vector :inline)) + (:states (double-lurker-top-knocked-down object vector vector) + double-lurker-top-on-shoulders + double-lurker-top-on-shoulders-die + double-lurker-top-resume)) (deftype double-lurker (nav-enemy) - ((knocked-back-speed float) - (buddy-on-shoulders? symbol) - (dead? symbol) - (buddy-dead? symbol) - (buddy-handle handle) - ) + ((knocked-back-speed float) + (buddy-on-shoulders? symbol) + (dead? symbol) + (buddy-dead? symbol) + (buddy-handle handle)) (:methods - (initialize-collision (_type_) collide-shape-moving :replace) - (double-lurker-method-53 (_type_ vector) symbol :overlay-at nav-enemy-method-53) - ) + (initialize-collision (_type_) collide-shape-moving :replace) + (double-lurker-method-53 (_type_ vector) symbol :overlay-at nav-enemy-method-53)) (:states - double-lurker-both-knocked-back - double-lurker-break-apart - double-lurker-buddy-was-hit - double-lurker-knocked-back - double-lurker-resume - double-lurker-show-anims - double-lurker-waiting-to-die - ) - ) - - -(defskelgroup *double-lurker-sg* double-lurker double-lurker-lod0-jg double-lurker-both-idle-ja - ((double-lurker-lod0-mg (meters 20)) - (double-lurker-lod1-mg (meters 40)) - (double-lurker-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 4.5) - :longest-edge (meters 1) - :shadow double-lurker-shadow-mg - ) - -(defskelgroup *double-lurker-top-sg* double-lurker-top double-lurker-top-lod0-jg -1 - ((double-lurker-top-lod0-mg (meters 20)) - (double-lurker-top-lod1-mg (meters 40)) - (double-lurker-top-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0.5 0 4.5) - :longest-edge (meters 1) - :shadow double-lurker-top-shadow-mg - ) - -(define *double-lurker-top-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 12 - :walk-anim 13 - :turn-anim -1 - :notice-anim 14 - :run-anim 15 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 16 - :taunt-anim 16 - :die-anim 17 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 3) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) - -(define *double-lurker-when-both-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 6 - :turn-anim -1 - :notice-anim 7 - :run-anim 8 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 9 - :taunt-anim 9 - :die-anim 17 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 720) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3.8) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 4) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) - -(define *double-lurker-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 12 - :walk-anim 13 - :turn-anim -1 - :notice-anim 14 - :run-anim 15 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 16 - :taunt-anim 16 - :die-anim 17 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 720) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3.8) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 4) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + double-lurker-both-knocked-back + double-lurker-break-apart + double-lurker-buddy-was-hit + double-lurker-knocked-back + double-lurker-resume + double-lurker-show-anims + double-lurker-waiting-to-die)) + +(defskelgroup *double-lurker-sg* + double-lurker + double-lurker-lod0-jg + double-lurker-both-idle-ja + ((double-lurker-lod0-mg (meters 20)) (double-lurker-lod1-mg (meters 40)) (double-lurker-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 4.5) + :longest-edge (meters 1) + :shadow double-lurker-shadow-mg) + +(defskelgroup *double-lurker-top-sg* + double-lurker-top + double-lurker-top-lod0-jg + -1 + ((double-lurker-top-lod0-mg (meters 20)) + (double-lurker-top-lod1-mg (meters 40)) + (double-lurker-top-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0.5 0 4.5) + :longest-edge (meters 1) + :shadow double-lurker-top-shadow-mg) + +(define *double-lurker-top-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 12 + :walk-anim 13 + :turn-anim -1 + :notice-anim 14 + :run-anim 15 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 16 + :taunt-anim 16 + :die-anim 17 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 3) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) + +(define *double-lurker-when-both-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 6 + :turn-anim -1 + :notice-anim 7 + :run-anim 8 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 9 + :taunt-anim 9 + :die-anim 17 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 720) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3.8) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 4) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) + +(define *double-lurker-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 12 + :walk-anim 13 + :turn-anim -1 + :notice-anim 14 + :run-anim 15 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 16 + :taunt-anim 16 + :die-anim 17 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 720) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3.8) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 4) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defstate double-lurker-top-on-shoulders (double-lurker-top) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (let ((v1-1 (-> self fall-dest)) - (a0-4 (-> (the-as vector (-> block param 0)) quad)) - ) - (set! (-> v1-1 quad) a0-4) - (go double-lurker-top-knocked-down a0-4 (the-as vector argc) (the-as vector message)) - ) - ) - (('instant-death) - (let ((v1-3 (the-as object (-> block param 0)))) - (quaternion-axis-angle! - (-> self collide-info quat) - 0.0 - 1.0 - 0.0 - (atan (-> (the-as vector v1-3) x) (-> (the-as vector v1-3) z)) - ) - ) - (go double-lurker-top-on-shoulders-die) - ) - ) - ) - :code (behavior () - (loop - (clone-anim-once - (ppointer->handle (-> self parent-process)) - (the-as int (-> self draw origin-joint-index)) - #t - "" - ) - (update-transforms! (-> self collide-info)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (let ((v1-1 (-> self fall-dest)) + (a0-4 (-> (the-as vector (-> block param 0)) quad))) + (set! (-> v1-1 quad) a0-4) + (go double-lurker-top-knocked-down a0-4 (the-as vector argc) (the-as vector message)))) + (('instant-death) + (let ((v1-3 (the-as object (-> block param 0)))) + (quaternion-axis-angle! (-> self collide-info quat) + 0.0 + 1.0 + 0.0 + (atan (-> (the-as vector v1-3) x) (-> (the-as vector v1-3) z)))) + (go double-lurker-top-on-shoulders-die)))) + :code + (behavior () + (loop + (clone-anim-once (ppointer->handle (-> self parent-process)) (the-as int (-> self draw origin-joint-index)) #t "") + (update-transforms! (-> self collide-info)) + (suspend)))) (defstate double-lurker-top-on-shoulders-die (double-lurker-top) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! double-lurker-top-on-shoulders-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - :post ja-post - ) - -(defstate double-lurker-top-knocked-down (double-lurker-top) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event - proc - 'shove - (-> block param 0) - (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))) - ) - ) - ) - ) - :code (behavior ((arg0 object) (arg1 vector) (arg2 vector)) - (nav-enemy-method-51 self) - (let ((v1-3 (-> self draw shadow-ctrl))) - (logclear! (-> v1-3 settings flags) (shadow-flags disable-draw)) - ) - 0 - (logclear! (-> self collide-info nav-flags) (nav-flags navf0)) - (logior! (-> self collide-info nav-flags) (nav-flags navf1)) - (set! (-> self nav extra-nav-sphere quad) (-> self fall-dest quad)) - (set! (-> self nav extra-nav-sphere w) 9011.2) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self collide-info trans quad)) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! double-lurker-top-both-break-apart-ja :num! (seek!) :frame-num 0.0) + (ja-no-eval :group! double-lurker-top-on-shoulders-die-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (vector-lerp! - (-> self collide-info trans) - gp-0 - (-> self fall-dest) - (fmin 1.0 (/ (ja-frame-num 0) (ja-aframe 44.0 0))) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (logior! (-> self collide-info nav-flags) (nav-flags navf0)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - (nav-control-method-27 (-> self nav)) - (go double-lurker-top-resume) - ) - :post transform-post - ) + (ja :num! (seek!)))) + :post ja-post) + +(defstate double-lurker-top-knocked-down (double-lurker-top) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (send-event proc 'shove (-> block param 0) (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))))))) + :code + (behavior ((arg0 object) (arg1 vector) (arg2 vector)) + (nav-enemy-method-51 self) + (let ((v1-3 (-> self draw shadow-ctrl))) (logclear! (-> v1-3 settings flags) (shadow-flags disable-draw))) + 0 + (logclear! (-> self collide-info nav-flags) (nav-flags navf0)) + (logior! (-> self collide-info nav-flags) (nav-flags navf1)) + (set! (-> self nav extra-nav-sphere quad) (-> self fall-dest quad)) + (set! (-> self nav extra-nav-sphere w) 9011.2) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self collide-info trans quad)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! double-lurker-top-both-break-apart-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (vector-lerp! (-> self collide-info trans) gp-0 (-> self fall-dest) (fmin 1.0 (/ (ja-frame-num 0) (ja-aframe 44.0 0)))) + (suspend) + (ja :num! (seek!)))) + (logior! (-> self collide-info nav-flags) (nav-flags navf0)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) + (nav-control-method-27 (-> self nav)) + (go double-lurker-top-resume)) + :post transform-post) (defstate double-lurker-top-resume (double-lurker-top) - :code (behavior () - (cond - ((not *target*) - (go-virtual nav-enemy-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - ) - ((and (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status was-drawn)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - (go-virtual nav-enemy-idle) - ) - ) + :code + (behavior () + (cond + ((not *target*) (go-virtual nav-enemy-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase)) + ((and (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status was-drawn))) + (go-virtual nav-enemy-patrol))) + (go-virtual nav-enemy-idle))) (defstate nav-enemy-patrol (double-lurker-top) :virtual #t - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - (if t9-1 - ((the-as (function none) t9-1)) - ) - ) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) (if t9-1 ((the-as (function none) t9-1)))))) (defstate nav-enemy-die (double-lurker-top) :virtual #t - :enter (behavior () - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 1) 1) - ) - (set! (-> self parent-process 0 dead?) #t) - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-die) enter))) - (if t9-0 - (t9-0) - ) - ) - ) - ) + :enter + (behavior () + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 1) 1)) + (set! (-> self parent-process 0 dead?) #t) + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-die) enter))) (if t9-0 (t9-0))))) (defmethod nav-enemy-method-51 ((this double-lurker-top)) (restore-collide-with-as (-> this collide-info)) (logior! (-> this collide-info nav-flags) (nav-flags navf0)) (nav-control-method-27 (-> this nav)) - (none) - ) + (none)) (defmethod initialize-collision ((this double-lurker-top)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 6) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -408,56 +335,47 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2662.4 0.0 4096.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6758.4 0.0 4096.0) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core action) (collide-action solid)) (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 10854.4 0.0 4096.0) - (append-prim s4-0 s3-2) - ) + (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) (collide-kind enemy)) (set! (-> s3-3 collide-with) (collide-kind target)) (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 10) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 1228.8) - (append-prim s4-0 s3-3) - ) + (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) (collide-kind enemy)) (set! (-> s3-4 collide-with) (collide-kind target)) (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 16) (set-vector! (-> s3-4 local-sphere) 0.0 0.0 0.0 1228.8) - (append-prim s4-0 s3-4) - ) + (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) (collide-kind enemy)) (set! (-> s3-5 collide-with) (collide-kind target)) (set! (-> s3-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-5 transform-index) 5) (set-vector! (-> s3-5 local-sphere) 0.0 -2048.0 0.0 3276.8) - (append-prim s4-0 s3-5) - ) - ) + (append-prim s4-0 s3-5))) (set! (-> s5-0 nav-radius) 9011.2) (backup-collide-with-as s5-0) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) (clear-collide-with-as (-> this collide-info)) - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this double-lurker-top)) (initialize-skeleton this *double-lurker-top-sg* '()) @@ -466,11 +384,9 @@ (let ((v1-5 (-> this parent-process))) (set! (-> this collide-info trans quad) (-> v1-5 0 collide-info trans quad)) (set-vector! (-> this collide-info scale) 1.0 1.0 1.0 1.0) - (quaternion-copy! (-> this collide-info quat) (-> v1-5 0 collide-info quat)) - ) + (quaternion-copy! (-> this collide-info quat) (-> v1-5 0 collide-info quat))) (logclear! (-> this collide-info nav-flags) (nav-flags navf0)) - (none) - ) + (none)) (defbehavior double-lurker-top-init-by-other double-lurker-top ((arg0 entity) (arg1 double-lurker) (arg2 symbol) (arg3 vector)) (initialize-collision self) @@ -479,36 +395,27 @@ (set! (-> self collide-info trans quad) (-> arg3 quad)) (cond (arg2 - (ja-channel-set! 1) - (ja :group! double-lurker-top-both-idle-ja :num! min) - (transform-post) - (let ((v1-13 (-> self draw shadow-ctrl))) - (logior! (-> v1-13 settings flags) (shadow-flags disable-draw)) - ) - 0 - (go double-lurker-top-on-shoulders) - ) + (ja-channel-set! 1) + (ja :group! double-lurker-top-both-idle-ja :num! min) + (transform-post) + (let ((v1-13 (-> self draw shadow-ctrl))) (logior! (-> v1-13 settings flags) (shadow-flags disable-draw))) + 0 + (go double-lurker-top-on-shoulders)) (else - (ja-channel-set! 1) - (ja :group! double-lurker-top-idle-ja :num! min) - (transform-post) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) - (nav-enemy-method-51 self) - (go double-lurker-top-resume) - ) - ) - (none) - ) + (ja-channel-set! 1) + (ja :group! double-lurker-top-idle-ja :num! min) + (transform-post) + (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) + (nav-enemy-method-51 self) + (go double-lurker-top-resume))) + (none)) ;; WARN: disable def twice: 80. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. ;; WARN: disable def twice: 120. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defbehavior double-lurker-default-event-handler double-lurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-0 object)) (case arg2 - (('touch) - (set-time! (-> self touch-time)) - (touch-handler self arg0 arg3) - ) + (('touch) (set-time! (-> self touch-time)) (touch-handler self arg0 arg3)) (('attack) (when (= (-> arg0 type) target) (nav-enemy-set-hit-from-direction arg0) @@ -518,408 +425,276 @@ (vector-! s4-0 (target-pos 0) (-> self collide-info trans)) (cond ((and (>= (-> s4-0 y) 8192.0) - (>= 14563.556 (fabs (deg- (quaternion-y-angle (-> self collide-info quat)) (atan (-> s4-0 x) (-> s4-0 z))))) - ) - (when (send-event - arg0 - 'shove - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))) - ) + (>= 14563.556 (fabs (deg- (quaternion-y-angle (-> self collide-info quat)) (atan (-> s4-0 x) (-> s4-0 z)))))) + (when (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2))))) (increment-success-for-hint (text-id sunken-double-lurker-hint)) (go double-lurker-buddy-was-hit) (return #f) - v0-0 - ) - ) + v0-0)) (else - (when (and ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> (the-as target arg0) control) - (collide-action solid) - (collide-action) - ) - (send-event - arg0 - 'shove - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))) - ) - ) - (level-hint-spawn - (text-id sunken-double-lurker-hint) - "sksp0127" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (go double-lurker-both-knocked-back) - (return #f) - v0-0 - ) - ) - ) - ) - ) - (else - (nav-enemy-set-hit-from-direction arg0) - (attack-handler self arg0 arg3) - ) - ) - ) - ) - ) - ) + (when (and ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> (the-as target arg0) control) + (collide-action solid) + (collide-action)) + (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))))) + (level-hint-spawn (text-id sunken-double-lurker-hint) "sksp0127" (the-as entity #f) *entity-pool* (game-task none)) + (go double-lurker-both-knocked-back) + (return #f) + v0-0))))) + (else (nav-enemy-set-hit-from-direction arg0) (attack-handler self arg0 arg3))))))) (defstate double-lurker-show-anims (double-lurker) - :trans (behavior () - 0 - ) - :code (behavior () - 0 - ) - :post transform-post - ) + :trans + (behavior () + 0) + :code + (behavior () + 0) + :post transform-post) (defstate double-lurker-resume (double-lurker) - :code (behavior () - (cond - ((not *target*) - (go-virtual nav-enemy-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - ) - ((and (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status was-drawn)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - (go-virtual nav-enemy-idle) - ) - ) + :code + (behavior () + (cond + ((not *target*) (go-virtual nav-enemy-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase)) + ((and (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status was-drawn))) + (go-virtual nav-enemy-patrol))) + (go-virtual nav-enemy-idle))) (defstate nav-enemy-idle (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-patrol (double-lurker) :virtual #t :event double-lurker-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - (if t9-1 - ((the-as (function none) t9-1)) - ) - ) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) (if t9-1 ((the-as (function none) t9-1)))))) (defstate nav-enemy-notice (double-lurker) :virtual #t :event double-lurker-default-event-handler - :enter (behavior () - (start-hint-timer (text-id sunken-double-lurker-hint)) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-notice) enter))) - (if t9-1 - (t9-1) - ) - ) - ) - ) + :enter + (behavior () + (start-hint-timer (text-id sunken-double-lurker-hint)) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-notice) enter))) (if t9-1 (t9-1))))) (defstate nav-enemy-chase (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-stop-chase (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-stare (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-victory (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-die (double-lurker) :virtual #t - :enter (behavior () - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 0) 1) - ) - (set! (-> self dead?) #t) - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-die) enter))) - (if t9-0 - (t9-0) - ) - ) - ) - ) + :enter + (behavior () + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 0) 1)) + (set! (-> self dead?) #t) + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-die) enter))) (if t9-0 (t9-0))))) (defstate double-lurker-both-knocked-back (double-lurker) - :enter (behavior () - (set! (-> self knocked-back-speed) 40960.0) - ) - :trans (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let* ((f0-3 (seek-with-smooth (-> self knocked-back-speed) 0.0 (* 49152.0 (seconds-per-frame)) 0.5 0.01)) - (f30-0 (* f0-3 (seconds-per-frame))) - ) - (set! (-> self knocked-back-speed) f0-3) - (vector-float*! (-> self collide-info transv) (-> self hit-from-dir) f0-3) - (when (< 0.0 f0-3) - (let ((v1-7 (-> self nav travel))) - (.lvf vf1 (&-> (-> self collide-info transv) quad)) - (let ((f0-4 (seconds-per-frame))) - (.mov at-0 f0-4) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-7 quad) vf1) - ) - (let ((gp-0 #f)) - (nav-control-method-28 (-> self nav) (the-as collide-kind -1)) - (let ((a2-1 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) - (if (>= (nav-control-method-23 (-> self nav) (-> self nav travel) a2-1) 0.0) - (set! gp-0 #t) - ) - ) - (when (not gp-0) - (let ((s5-0 (new 'stack 'clip-travel-vector-to-mesh-return-info))) - (nav-control-method-24 (-> self nav) (* 1.2 f30-0) s5-0) - (if (-> s5-0 found-boundary) - (set! gp-0 #t) - ) - ) - ) - (when gp-0 - (set! (-> self knocked-back-speed) 0.0) - (vector-reset! (-> self collide-info transv)) - ) - ) - ) - ) - (+! (-> self collide-info transv y) -36864.0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - (-> self nav-info hover-if-no-ground) - #f - ) - (nav-control-method-27 (-> self nav)) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! double-lurker-both-take-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go double-lurker-resume) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self knocked-back-speed) 40960.0)) + :trans + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) + (init-vf0-vector) + (let* ((f0-3 (seek-with-smooth (-> self knocked-back-speed) 0.0 (* 49152.0 (seconds-per-frame)) 0.5 0.01)) + (f30-0 (* f0-3 (seconds-per-frame)))) + (set! (-> self knocked-back-speed) f0-3) + (vector-float*! (-> self collide-info transv) (-> self hit-from-dir) f0-3) + (when (< 0.0 f0-3) + (let ((v1-7 (-> self nav travel))) + (.lvf vf1 (&-> (-> self collide-info transv) quad)) + (let ((f0-4 (seconds-per-frame))) (.mov at-0 f0-4)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-7 quad) vf1)) + (let ((gp-0 #f)) + (nav-control-method-28 (-> self nav) (the-as collide-kind -1)) + (let ((a2-1 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) + (if (>= (nav-control-method-23 (-> self nav) (-> self nav travel) a2-1) 0.0) (set! gp-0 #t))) + (when (not gp-0) + (let ((s5-0 (new 'stack 'clip-travel-vector-to-mesh-return-info))) + (nav-control-method-24 (-> self nav) (* 1.2 f30-0) s5-0) + (if (-> s5-0 found-boundary) (set! gp-0 #t)))) + (when gp-0 + (set! (-> self knocked-back-speed) 0.0) + (vector-reset! (-> self collide-info transv)))))) + (+! (-> self collide-info transv y) -36864.0) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + (-> self nav-info hover-if-no-ground) + #f) + (nav-control-method-27 (-> self nav)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! double-lurker-both-take-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go double-lurker-resume)) + :post nav-enemy-simple-post) (defmethod nav-enemy-method-52 ((this double-lurker) (arg0 vector)) (nav-control-method-28 (-> this nav) (the-as collide-kind -1)) (let ((a1-2 (new 'stack-no-clear 'vector))) (vector-float*! a1-2 (-> this hit-from-dir) 22937.602) (vector+! a1-2 a1-2 (-> this collide-info trans)) - (nav-control-method-13 (-> this nav) a1-2 (-> this hit-from-dir)) - ) + (nav-control-method-13 (-> this nav) a1-2 (-> this hit-from-dir))) (when (>= (vector-xz-length (-> this nav travel)) 18841.602) (vector+! arg0 (-> this collide-info trans) (-> this nav travel)) (let ((a1-5 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'collide-tri-result)) - ) + (s4-0 (new 'stack-no-clear 'collide-tri-result))) (set! (-> a1-5 quad) (-> arg0 quad)) (+! (-> a1-5 y) 8192.0) - (when (>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-5 - (new 'static 'vector :y -40960.0 :w 1.0) - 40.96 - (collide-kind background) - this - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (when (>= (fill-and-probe-using-line-sphere *collide-cache* + a1-5 + (new 'static 'vector :y -40960.0 :w 1.0) + 40.96 + (collide-kind background) + this + s4-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> arg0 y) (-> s4-0 intersect y)) - (return #t) - ) - ) - ) - #f - ) + (return #t)))) + #f) (defstate double-lurker-buddy-was-hit (double-lurker) - :code (behavior () - (set! (-> self buddy-on-shoulders?) #f) - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 2) 1) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (if (nav-enemy-method-52 self gp-0) + :code + (behavior () + (set! (-> self buddy-on-shoulders?) #f) + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 2) 1)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (if (nav-enemy-method-52 self gp-0) (send-event (handle->process (-> self buddy-handle)) 'trigger gp-0) - (send-event (handle->process (-> self buddy-handle)) 'instant-death (-> self hit-from-dir)) - ) - ) - (nav-enemy-method-51 self) - (init-jm! self *double-lurker-nav-enemy-info*) - (go double-lurker-break-apart) - ) - ) + (send-event (handle->process (-> self buddy-handle)) 'instant-death (-> self hit-from-dir)))) + (nav-enemy-method-51 self) + (init-jm! self *double-lurker-nav-enemy-info*) + (go double-lurker-break-apart))) (defstate double-lurker-break-apart (double-lurker) :event double-lurker-default-event-handler - :code (behavior () - (ja-no-eval :group! double-lurker-both-break-apart-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go double-lurker-resume) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (ja-no-eval :group! double-lurker-both-break-apart-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go double-lurker-resume)) + :post nav-enemy-simple-post) (defstate double-lurker-knocked-back (double-lurker) - :enter (behavior () - (set! (-> self knocked-back-speed) 40960.0) - ) - :trans (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let* ((f0-3 (seek-with-smooth (-> self knocked-back-speed) 0.0 (* 49152.0 (seconds-per-frame)) 0.5 0.01)) - (f30-0 (* f0-3 (seconds-per-frame))) - ) - (set! (-> self knocked-back-speed) f0-3) - (vector-float*! (-> self collide-info transv) (-> self hit-from-dir) f0-3) - (when (< 0.0 f0-3) - (let ((v1-7 (-> self nav travel))) - (.lvf vf1 (&-> (-> self collide-info transv) quad)) - (let ((f0-4 (seconds-per-frame))) - (.mov at-0 f0-4) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-7 quad) vf1) - ) - (let ((gp-0 #f)) - (nav-control-method-28 (-> self nav) (the-as collide-kind -1)) - (let ((a2-1 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) - (if (>= (nav-control-method-23 (-> self nav) (-> self nav travel) a2-1) 0.0) - (set! gp-0 #t) - ) - ) - (when (not gp-0) - (let ((s5-0 (new 'stack 'clip-travel-vector-to-mesh-return-info))) - (nav-control-method-24 (-> self nav) (* 1.2 f30-0) s5-0) - (if (-> s5-0 found-boundary) - (set! gp-0 #t) - ) - ) - ) - (when gp-0 - (set! (-> self knocked-back-speed) 0.0) - (vector-reset! (-> self collide-info transv)) - ) - ) - ) - ) - (+! (-> self collide-info transv y) -36864.0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - (-> self nav-info hover-if-no-ground) - #f - ) - (nav-control-method-27 (-> self nav)) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! double-lurker-bottom-take-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go double-lurker-resume) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self knocked-back-speed) 40960.0)) + :trans + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) + (init-vf0-vector) + (let* ((f0-3 (seek-with-smooth (-> self knocked-back-speed) 0.0 (* 49152.0 (seconds-per-frame)) 0.5 0.01)) + (f30-0 (* f0-3 (seconds-per-frame)))) + (set! (-> self knocked-back-speed) f0-3) + (vector-float*! (-> self collide-info transv) (-> self hit-from-dir) f0-3) + (when (< 0.0 f0-3) + (let ((v1-7 (-> self nav travel))) + (.lvf vf1 (&-> (-> self collide-info transv) quad)) + (let ((f0-4 (seconds-per-frame))) (.mov at-0 f0-4)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-7 quad) vf1)) + (let ((gp-0 #f)) + (nav-control-method-28 (-> self nav) (the-as collide-kind -1)) + (let ((a2-1 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) + (if (>= (nav-control-method-23 (-> self nav) (-> self nav travel) a2-1) 0.0) (set! gp-0 #t))) + (when (not gp-0) + (let ((s5-0 (new 'stack 'clip-travel-vector-to-mesh-return-info))) + (nav-control-method-24 (-> self nav) (* 1.2 f30-0) s5-0) + (if (-> s5-0 found-boundary) (set! gp-0 #t)))) + (when gp-0 + (set! (-> self knocked-back-speed) 0.0) + (vector-reset! (-> self collide-info transv)))))) + (+! (-> self collide-info transv y) -36864.0) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + (-> self nav-info hover-if-no-ground) + #f) + (nav-control-method-27 (-> self nav)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! double-lurker-bottom-take-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go double-lurker-resume)) + :post nav-enemy-simple-post) (defstate double-lurker-waiting-to-die (double-lurker) - :code (behavior () - (clear-collide-with-as (-> self collide-info)) - (logior! (-> self draw status) (draw-status hidden)) - (until (not (-> self child)) - (suspend) - ) - ) - ) + :code + (behavior () + (clear-collide-with-as (-> self collide-info)) + (logior! (-> self draw status) (draw-status hidden)) + (until (not (-> self child)) + (suspend)))) (defmethod double-lurker-method-53 ((this double-lurker) (arg0 vector)) (let* ((s3-0 (-> this path curve num-cverts)) - (s4-0 (rand-vu-int-count s3-0)) - ) + (s4-0 (rand-vu-int-count s3-0))) (while (nonzero? s3-0) (+! s3-0 -1) (eval-path-curve-div! (-> this path) arg0 (the float s4-0) 'interp) - (if (not (nav-enemy-method-50 this arg0)) - (return #t) - ) - ) - ) - #f - ) + (if (not (nav-enemy-method-50 this arg0)) (return #t)))) + #f) (defmethod initialize-collision ((this double-lurker)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 9) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -932,79 +707,67 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 15564.8 0.0 3686.4) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 19660.8 0.0 3686.4) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense no-offense)) (set! (-> s3-2 transform-index) 5) (set-vector! (-> s3-2 local-sphere) 0.0 8192.0 -1024.0 3276.8) - (append-prim s4-0 s3-2) - ) + (append-prim s4-0 s3-2)) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-3 collide-with) (collide-kind target)) (set! (-> s3-3 prim-core action) (collide-action solid)) (set! (-> s3-3 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-3 local-sphere) 0.0 3276.8 0.0 3686.4) - (append-prim s4-0 s3-3) - ) + (append-prim s4-0 s3-3)) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-4 collide-with) (collide-kind target)) (set! (-> s3-4 prim-core action) (collide-action solid)) (set! (-> s3-4 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-4 local-sphere) 0.0 7372.8 0.0 3686.4) - (append-prim s4-0 s3-4) - ) + (append-prim s4-0 s3-4)) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-5 collide-with) (collide-kind target)) (set! (-> s3-5 prim-core action) (collide-action solid)) (set! (-> s3-5 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-5 local-sphere) 0.0 11468.8 0.0 3686.4) - (append-prim s4-0 s3-5) - ) + (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) (collide-kind enemy)) (set! (-> s3-6 collide-with) (collide-kind target)) (set! (-> s3-6 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-6 transform-index) 5) (set-vector! (-> s3-6 local-sphere) 0.0 -2048.0 -2048.0 3686.4) - (append-prim s4-0 s3-6) - ) + (append-prim s4-0 s3-6)) (let ((s3-7 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-7 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-7 collide-with) (collide-kind target)) (set! (-> s3-7 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-7 transform-index) 10) (set-vector! (-> s3-7 local-sphere) 0.0 1024.0 0.0 1638.4) - (append-prim s4-0 s3-7) - ) + (append-prim s4-0 s3-7)) (let ((s3-8 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-8 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-8 collide-with) (collide-kind target)) (set! (-> s3-8 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-8 transform-index) 16) (set-vector! (-> s3-8 local-sphere) 0.0 -1024.0 0.0 1638.4) - (append-prim s4-0 s3-8) - ) - ) + (append-prim s4-0 s3-8))) (set! (-> s5-0 nav-radius) 9830.4) (backup-collide-with-as s5-0) (set! (-> this collide-info) s5-0) - s5-0 - ) - ) + s5-0)) (defmethod nav-enemy-method-51 ((this double-lurker)) (let ((v1-1 (-> this collide-info root-prim))) @@ -1014,22 +777,14 @@ (set! (-> a2-2 collide-with) (collide-kind)) (set! (-> a2-2 prim-core collide-as) (collide-kind)) (set! (-> a2-2 prim-core action) (collide-action)) - (set! (-> a2-2 prim-core offense) (collide-offense no-offense)) - ) + (set! (-> a2-2 prim-core offense) (collide-offense no-offense))) 0 - (+! a0-1 1) - ) - ) + (+! a0-1 1))) (countdown (a0-4 (-> (the-as collide-shape-prim-group v1-1) num-prims)) (let ((a1-3 (-> (the-as collide-shape-prim-group v1-1) prims a0-4))) (if (and (= (-> a1-3 prim-core offense) (collide-offense indestructible)) (logtest? (-> a1-3 prim-id) 2)) - (set! (-> a1-3 prim-core offense) (collide-offense touch)) - ) - ) - ) - ) - (none) - ) + (set! (-> a1-3 prim-core offense) (collide-offense touch)))))) + (none)) (defmethod nav-enemy-method-48 ((this double-lurker)) (set! (-> this buddy-handle) (the-as handle #f)) @@ -1041,18 +796,13 @@ (set! (-> this dead?) #f) (set! (-> this buddy-dead?) #f) (let ((v1-7 (-> this entity extra perm))) - (if (nonzero? (-> v1-7 user-int8 2)) - (set! (-> this buddy-on-shoulders?) #f) - ) + (if (nonzero? (-> v1-7 user-int8 2)) (set! (-> this buddy-on-shoulders?) #f)) (when (nonzero? (-> v1-7 user-int8 0)) (set! (-> this dead?) #t) - (set! (-> this buddy-on-shoulders?) #f) - ) + (set! (-> this buddy-on-shoulders?) #f)) (when (nonzero? (-> v1-7 user-int8 1)) (set! (-> this buddy-dead?) #t) - (set! (-> this buddy-on-shoulders?) #f) - ) - ) + (set! (-> this buddy-on-shoulders?) #f))) (init-defaults! this *double-lurker-when-both-nav-enemy-info*) (set! (-> this neck up) (the-as uint 1)) (set! (-> this neck nose) (the-as uint 2)) @@ -1065,34 +815,18 @@ (set! (-> this buddy-on-shoulders?) #t) (let ((v1-29 (-> this entity extra perm))) (logior! (-> v1-29 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-29 user-int8 2) 0) - ) - 0 - ) - ) - (if (-> this buddy-on-shoulders?) - (set! (-> s5-0 quad) (-> this collide-info trans quad)) - ) + (set! (-> v1-29 user-int8 2) 0)) + 0)) + (if (-> this buddy-on-shoulders?) (set! (-> s5-0 quad) (-> this collide-info trans quad))) (set! (-> this buddy-handle) - (ppointer->handle - (process-spawn double-lurker-top (-> this entity) this (-> this buddy-on-shoulders?) s5-0 :to this) - ) - ) - ) - ) + (ppointer->handle (process-spawn double-lurker-top (-> this entity) this (-> this buddy-on-shoulders?) s5-0 :to this))))) (when (and (not (-> this dead?)) (not (-> this buddy-on-shoulders?))) (nav-enemy-method-51 this) - (init-jm! this *double-lurker-nav-enemy-info*) - ) - (none) - ) + (init-jm! this *double-lurker-nav-enemy-info*)) + (none)) (defmethod init-from-entity! ((this double-lurker) (arg0 entity-actor)) (initialize-collision this) (nav-enemy-method-48 this) - (if (-> this dead?) - (go double-lurker-waiting-to-die) - (go (method-of-object this nav-enemy-idle)) - ) - (none) - ) + (if (-> this dead?) (go double-lurker-waiting-to-die) (go (method-of-object this nav-enemy-idle))) + (none)) diff --git a/goal_src/jak1/levels/sunken/floating-launcher.gc b/goal_src/jak1/levels/sunken/floating-launcher.gc index 24e563b97d..389f8d40ea 100644 --- a/goal_src/jak1/levels/sunken/floating-launcher.gc +++ b/goal_src/jak1/levels/sunken/floating-launcher.gc @@ -1,98 +1,76 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/geometry/path.gc") (require "engine/common-obs/baseplat.gc") -;; name: floating-launcher.gc -;; name in dgo: floating-launcher -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (deftype floating-launcher (baseplat) - ((trigger-height float) - (launcher (pointer launcher)) - ) + ((trigger-height float) + (launcher (pointer launcher))) (:states - floating-launcher-idle - floating-launcher-lowering - floating-launcher-ready - ) - ) + floating-launcher-idle + floating-launcher-lowering + floating-launcher-ready)) - -(defskelgroup *floating-launcher-sg* floating-launcher floating-launcher-lod0-jg floating-launcher-idle-ja - ((floating-launcher-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *floating-launcher-sg* + floating-launcher + floating-launcher-lod0-jg + floating-launcher-idle-ja + ((floating-launcher-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defstate floating-launcher-idle (floating-launcher) :event plat-event - :trans (behavior () - (plat-trans) - (when (< (vector-xz-length (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> self root trans))) 81920.0) - (if (and (>= (-> (target-pos 0) y) (-> self trigger-height)) - (logtest? (-> *target* control status) (cshape-moving-flags onground)) - ) - (go floating-launcher-lowering) - ) - ) - ) - :code (behavior () - (transform-post) - (suspend) - (transform-post) - (suspend) - (loop + :trans + (behavior () + (plat-trans) + (when (< (vector-xz-length (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> self root trans))) 81920.0) + (if (and (>= (-> (target-pos 0) y) (-> self trigger-height)) + (logtest? (-> *target* control status) (cshape-moving-flags onground))) + (go floating-launcher-lowering)))) + :code + (behavior () + (transform-post) + (suspend) + (transform-post) (suspend) - ) - ) - :post plat-post - ) + (loop + (suspend))) + :post plat-post) (defstate floating-launcher-lowering (floating-launcher) :event plat-event :trans plat-trans - :code (behavior () - (let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (if a0-1 - (entity-birth-no-kill a0-1) - ) - ) - (let ((f30-0 1.0)) - (while (!= f30-0 0.0) - (set! f30-0 (seek f30-0 0.0 (seconds-per-frame))) - (eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp) - (set! (-> self launcher 0 root trans quad) (-> self basetrans quad)) - (update-transforms! (-> self launcher 0 root)) - (suspend) - ) - ) - (eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp) - (set! (-> self launcher 0 root trans quad) (-> self basetrans quad)) - (update-transforms! (-> self launcher 0 root)) - (go floating-launcher-ready) - ) - :post plat-post - ) + :code + (behavior () + (let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0))) (if a0-1 (entity-birth-no-kill a0-1))) + (let ((f30-0 1.0)) + (while (!= f30-0 0.0) + (set! f30-0 (seek f30-0 0.0 (seconds-per-frame))) + (eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp) + (set! (-> self launcher 0 root trans quad) (-> self basetrans quad)) + (update-transforms! (-> self launcher 0 root)) + (suspend))) + (eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp) + (set! (-> self launcher 0 root trans quad) (-> self basetrans quad)) + (update-transforms! (-> self launcher 0 root)) + (go floating-launcher-ready)) + :post plat-post) (defstate floating-launcher-ready (floating-launcher) :event plat-event :trans plat-trans :code plat-code - :post plat-post - ) + :post plat-post) (defmethod init-from-entity! ((this floating-launcher) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -101,24 +79,20 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) - (set-root-prim! s4-0 s3-0) - ) + (set-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (eval-path-curve-div! (-> this path) (-> this root trans) 1.0 'interp) (let ((f30-0 (res-lump-float arg0 'spring-height :default 163840.0))) - (set! (-> this launcher) (process-spawn launcher (-> this root trans) f30-0 0 81920.0 :to this)) - ) + (set! (-> this launcher) (process-spawn launcher (-> this root trans) f30-0 0 81920.0 :to this))) (initialize-skeleton this *floating-launcher-sg* '()) (logior! (-> this skel status) (janim-status inited)) (update-transforms! (-> this root)) (baseplat-method-21 this) (set! (-> this trigger-height) (res-lump-float arg0 'trigger-height)) (go floating-launcher-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/helix-water.gc b/goal_src/jak1/levels/sunken/helix-water.gc index a71404e643..d780c78ed6 100644 --- a/goal_src/jak1/levels/sunken/helix-water.gc +++ b/goal_src/jak1/levels/sunken/helix-water.gc @@ -1,168 +1,123 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/dark-eco-pool.gc") (require "levels/sunken/sunken-obs.gc") (require "engine/common-obs/babak.gc") (require "levels/common/launcherdoor.gc") - -;; name: helix-water.gc -;; name in dgo: helix-water -;; dgos: L1, SUN, SUNKEN - (declare-type helix-water basic) + (declare-type helix-slide-door basic) + (declare-type helix-button basic) + (define-extern *helix-slide-door* helix-slide-door) + (define-extern *helix-water* helix-water) + (define-extern *helix-button* helix-button) ;; DECOMP BEGINS (deftype helix-slide-door (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:states - helix-slide-door-close - helix-slide-door-idle-closed - helix-slide-door-idle-open - ) - ) - + helix-slide-door-close + helix-slide-door-idle-closed + helix-slide-door-idle-open)) -(defskelgroup *helix-slide-door-sg* helix-slide-door helix-slide-door-lod0-jg helix-slide-door-idle-ja - ((helix-slide-door-lod0-mg (meters 999999))) - :bounds (static-spherem 0 12 0 18) - ) +(defskelgroup *helix-slide-door-sg* + helix-slide-door + helix-slide-door-lod0-jg + helix-slide-door-idle-ja + ((helix-slide-door-lod0-mg (meters 999999))) + :bounds (static-spherem 0 12 0 18)) (deftype helix-button (process-drawable) - ((root collide-shape-moving :override) - (my-water entity-actor) - (my-door entity-actor) - (fcell-handle handle) - (down-y float) - (spawn-trans vector :inline) - ) + ((root collide-shape-moving :override) + (my-water entity-actor) + (my-door entity-actor) + (fcell-handle handle) + (down-y float) + (spawn-trans vector :inline)) (:states - helix-button-activate - helix-button-idle-down - helix-button-idle-up - helix-button-quick-activate - helix-button-startup - ) - ) - - -(defskelgroup *helix-button-sg* helix-button helix-button-lod0-jg helix-button-idle-ja - ((helix-button-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3.5 0 5.4) - ) + helix-button-activate + helix-button-idle-down + helix-button-idle-up + helix-button-quick-activate + helix-button-startup)) -(deftype helix-dark-eco (dark-eco-pool) - () - ) +(defskelgroup *helix-button-sg* + helix-button + helix-button-lod0-jg + helix-button-idle-ja + ((helix-button-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3.5 0 5.4)) +(deftype helix-dark-eco (dark-eco-pool) ()) (deftype helix-water (process-drawable) - ((last-alt-actor-consumed int32) - (alt-actors (array entity-actor)) - (transv-y float) - (start-y float) - (end-y float) - (dark-eco (pointer helix-dark-eco)) - ) + ((last-alt-actor-consumed int32) + (alt-actors (array entity-actor)) + (transv-y float) + (start-y float) + (end-y float) + (dark-eco (pointer helix-dark-eco))) (:methods - (helix-water-method-20 (_type_) none) - (helix-water-method-21 (_type_) object) - ) + (helix-water-method-20 (_type_) none) + (helix-water-method-21 (_type_) object)) (:states - helix-water-activated - helix-water-idle - ) - ) - + helix-water-activated + helix-water-idle)) (defstate water-vol-idle (helix-dark-eco) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (let ((a0-1 (-> self sound))) - (set! (-> a0-1 spec pitch-mod) 2057) - (update-vol! a0-1 100) - ) - ) - (else - ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block) - ) - ) - ) - :enter (behavior () - (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - (let ((a0-0 (-> self sound))) - (set! (-> a0-0 spec pitch-mod) 1524) - (update-vol! a0-0 58) - ) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) trans))) - (if t9-0 - (t9-0) - ) - ) - (update! (-> self sound)) - ) - :post (behavior () - (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) post))) - (if t9-0 - ((the-as (function none :behavior helix-dark-eco) t9-0)) - ) - ) - (ja-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (let ((a0-1 (-> self sound))) (set! (-> a0-1 spec pitch-mod) 2057) (update-vol! a0-1 100))) + (else ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block)))) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) enter))) (if t9-0 (t9-0))) + (let ((a0-0 (-> self sound))) (set! (-> a0-0 spec pitch-mod) 1524) (update-vol! a0-0 58))) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) trans))) (if t9-0 (t9-0))) + (update! (-> self sound))) + :post + (behavior () + (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) post))) + (if t9-0 ((the-as (function none :behavior helix-dark-eco) t9-0)))) + (ja-post))) (defstate helix-slide-door-idle-open (helix-slide-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go helix-slide-door-close) - ) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go helix-slide-door-close)))) + :code + (behavior () + (loop + (suspend)))) (defstate helix-slide-door-close (helix-slide-door) - :code (behavior () - (ja-no-eval :group! helix-slide-door-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (transform-post) - (go helix-slide-door-idle-closed) - ) - :post transform-post - ) + :code + (behavior () + (ja-no-eval :group! helix-slide-door-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (transform-post) + (go helix-slide-door-idle-closed)) + :post transform-post) (defstate helix-slide-door-idle-closed (helix-slide-door) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this helix-slide-door) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -173,322 +128,199 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 53248.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *helix-slide-door-sg* '()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (set! *helix-slide-door* this) (go helix-slide-door-idle-open) - (none) - ) + (none)) (defstate helix-button-startup (helix-button) - :code (behavior () - (when (not (task-complete? *game-info* (game-task sunken-slide))) - (let ((a0-1 (new 'stack-no-clear 'vector))) - (set! (-> a0-1 quad) (-> self root trans quad)) - (+! (-> a0-1 y) 30720.0) - (let ((v1-7 (birth-pickup-at-point - a0-1 - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (-> self fact) - ) - ) - ) - (set! (-> self fcell-handle) (ppointer->handle v1-7)) - (if v1-7 - (clear-collide-with-as (-> (the-as collectable (-> v1-7 0)) root)) - ) - ) - ) - ) - (go helix-button-idle-up) - ) - ) + :code + (behavior () + (when (not (task-complete? *game-info* (game-task sunken-slide))) + (let ((a0-1 (new 'stack-no-clear 'vector))) + (set! (-> a0-1 quad) (-> self root trans quad)) + (+! (-> a0-1 y) 30720.0) + (let ((v1-7 (birth-pickup-at-point a0-1 (pickup-type fuel-cell) (the float (-> self entity extra perm task)) #f self (-> self fact)))) + (set! (-> self fcell-handle) (ppointer->handle v1-7)) + (if v1-7 (clear-collide-with-as (-> (the-as collectable (-> v1-7 0)) root)))))) + (go helix-button-idle-up))) (defstate helix-button-idle-up (helix-button) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when *target* - (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) - (cond - ((and (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (not (handle->process (-> self fcell-handle))) - ) - (go helix-button-quick-activate) - ) - (else - (process-entity-status! self (entity-perm-status complete) #t) - (go helix-button-activate) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when *target* + (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) + (cond + ((and (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (not (handle->process (-> self fcell-handle)))) + (go helix-button-quick-activate)) + (else (process-entity-status! self (entity-perm-status complete) #t) (go helix-button-activate)))))))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate helix-button-activate (helix-button) :trans rider-trans - :code (behavior () - (local-vars (v1-7 symbol)) - (let ((a0-1 (handle->process (-> self fcell-handle)))) - (when a0-1 - (send-event a0-1 'pickup) - (until v1-7 - (suspend) - (set! v1-7 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) - ) - ) - ) - (let ((v1-11 - (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self spawn-trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as (pointer sunkencam) v1-11) 0 seq) (the-as uint 2)) - ) - (let ((a1-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-5 from) self) - (set! (-> a1-5 num-params) 0) - (set! (-> a1-5 message) 'music) - (let ((t9-4 send-event-function) - (v1-15 (-> self my-water)) - ) - (t9-4 - (if v1-15 - (-> v1-15 extra process) - ) - a1-5 - ) - ) - ) - (set-time! (-> self state-time)) - (when *target* - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector-! gp-1 (-> self root trans) (target-pos 0)) - (when (< 12288.0 (vector-xz-length gp-1)) - (set! (-> gp-1 y) 0.0) - (vector-normalize! gp-1 4096.0) - (move-by-vector! (-> *target* control) gp-1) - (do-push-aways! (-> self root)) - (detect-riders! (-> self root)) - ) - ) - ) - (until (time-elapsed? (-> self state-time) (seconds 1.5)) - (suspend) - ) - (level-hint-spawn (text-id sunken-helix-hint) "sksp0124" (the-as entity #f) *entity-pool* (game-task none)) - (send-event *target* 'play-anim 'shock-in) - (sound-play "prec-button8") - (set! (-> self root transv quad) (the-as uint128 0)) - (let ((gp-3 5)) - (until (<= gp-3 0) - (let ((f1-0 (-> self root transv y)) - (f0-2 (-> self root trans y)) - (a1-11 (new 'stack-no-clear 'vector)) - ) - (let* ((f1-1 (+ f1-0 (* -737280.0 (seconds-per-frame)))) - (f0-3 (+ f0-2 (* f1-1 (seconds-per-frame)))) - ) - (when (>= (-> self down-y) f0-3) - (set! f0-3 (-> self down-y)) - (set! f1-1 (* 0.65 (- f1-1))) - (+! gp-3 -1) - ) - (set! (-> self root transv y) f1-1) - (set! (-> a1-11 quad) (-> self root trans quad)) - (set! (-> a1-11 y) f0-3) - ) - (move-to-point! (-> self root) a1-11) - ) - (suspend) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1.25)) - (suspend) - ) - (sound-play "maindoor") - (until (time-elapsed? (-> self state-time) (seconds 1.9)) - (suspend) - ) - (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-18 send-event-function) - (v1-66 (-> self my-door)) - ) - (t9-18 - (if v1-66 - (-> v1-66 extra process) - ) - a1-13 - ) - ) - ) - (until (time-elapsed? (-> self state-time) (seconds 3.5)) - (suspend) - ) - (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) 'trigger) - (let ((t9-19 send-event-function) - (v1-74 (-> self my-water)) - ) - (t9-19 - (if v1-74 - (-> v1-74 extra process) - ) - a1-14 - ) - ) - ) - (level-hint-spawn - (text-id sunken-helix-darkeco-hint) - "sksp0128" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (suspend) - ) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (send-event *target* 'play-anim 'shock-out) - (send-event *target* 'neck 1.0 (-> self my-door extra trans)) - (suspend) - ) - (go helix-button-idle-down) - ) - :post rider-post - ) + :code + (behavior () + (local-vars (v1-7 symbol)) + (let ((a0-1 (handle->process (-> self fcell-handle)))) + (when a0-1 + (send-event a0-1 'pickup) + (until v1-7 + (suspend) + (set! v1-7 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed)))))))) + (let ((v1-11 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self spawn-trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + :to + self))) + (set! (-> (the-as (pointer sunkencam) v1-11) 0 seq) (the-as uint 2))) + (let ((a1-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-5 from) self) + (set! (-> a1-5 num-params) 0) + (set! (-> a1-5 message) 'music) + (let ((t9-4 send-event-function) + (v1-15 (-> self my-water))) + (t9-4 (if v1-15 (-> v1-15 extra process)) a1-5))) + (set-time! (-> self state-time)) + (when *target* + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector-! gp-1 (-> self root trans) (target-pos 0)) + (when (< 12288.0 (vector-xz-length gp-1)) + (set! (-> gp-1 y) 0.0) + (vector-normalize! gp-1 4096.0) + (move-by-vector! (-> *target* control) gp-1) + (do-push-aways! (-> self root)) + (detect-riders! (-> self root))))) + (until (time-elapsed? (-> self state-time) (seconds 1.5)) + (suspend)) + (level-hint-spawn (text-id sunken-helix-hint) "sksp0124" (the-as entity #f) *entity-pool* (game-task none)) + (send-event *target* 'play-anim 'shock-in) + (sound-play "prec-button8") + (set! (-> self root transv quad) (the-as uint128 0)) + (let ((gp-3 5)) + (until (<= gp-3 0) + (let ((f1-0 (-> self root transv y)) + (f0-2 (-> self root trans y)) + (a1-11 (new 'stack-no-clear 'vector))) + (let* ((f1-1 (+ f1-0 (* -737280.0 (seconds-per-frame)))) + (f0-3 (+ f0-2 (* f1-1 (seconds-per-frame))))) + (when (>= (-> self down-y) f0-3) + (set! f0-3 (-> self down-y)) + (set! f1-1 (* 0.65 (- f1-1))) + (+! gp-3 -1)) + (set! (-> self root transv y) f1-1) + (set! (-> a1-11 quad) (-> self root trans quad)) + (set! (-> a1-11 y) f0-3)) + (move-to-point! (-> self root) a1-11)) + (suspend))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1.25)) + (suspend)) + (sound-play "maindoor") + (until (time-elapsed? (-> self state-time) (seconds 1.9)) + (suspend)) + (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-18 send-event-function) + (v1-66 (-> self my-door))) + (t9-18 (if v1-66 (-> v1-66 extra process)) a1-13))) + (until (time-elapsed? (-> self state-time) (seconds 3.5)) + (suspend)) + (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) 'trigger) + (let ((t9-19 send-event-function) + (v1-74 (-> self my-water))) + (t9-19 (if v1-74 (-> v1-74 extra process)) a1-14))) + (level-hint-spawn (text-id sunken-helix-darkeco-hint) "sksp0128" (the-as entity #f) *entity-pool* (game-task none)) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (suspend)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (send-event *target* 'play-anim 'shock-out) + (send-event *target* 'neck 1.0 (-> self my-door extra trans)) + (suspend)) + (go helix-button-idle-down)) + :post rider-post) (defstate helix-button-quick-activate (helix-button) :trans rider-trans - :code (behavior () - (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) 'music) - (let ((t9-0 send-event-function) - (v1-1 (-> self my-water)) - ) - (t9-0 - (if v1-1 - (-> v1-1 extra process) - ) - a1-0 - ) - ) - ) - (sound-play "prec-button8") - (sound-play "maindoor") - (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) 'trigger) - (let ((t9-5 send-event-function) - (v1-7 (-> self my-door)) - ) - (t9-5 - (if v1-7 - (-> v1-7 extra process) - ) - a1-3 - ) - ) - ) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'trigger) - (let ((t9-6 send-event-function) - (v1-11 (-> self my-water)) - ) - (t9-6 - (if v1-11 - (-> v1-11 extra process) - ) - a1-4 - ) - ) - ) - (set! (-> self root transv quad) (the-as uint128 0)) - (let ((gp-2 5)) - (until (<= gp-2 0) - (let ((f1-0 (-> self root transv y)) - (f0-0 (-> self root trans y)) - (a1-5 (new 'stack-no-clear 'vector)) - ) - (let* ((f1-1 (+ f1-0 (* -737280.0 (seconds-per-frame)))) - (f0-1 (+ f0-0 (* f1-1 (seconds-per-frame)))) - ) - (when (>= (-> self down-y) f0-1) - (set! f0-1 (-> self down-y)) - (set! f1-1 (* 0.65 (- f1-1))) - (+! gp-2 -1) - ) - (set! (-> self root transv y) f1-1) - (set! (-> a1-5 quad) (-> self root trans quad)) - (set! (-> a1-5 y) f0-1) - ) - (move-to-point! (-> self root) a1-5) - ) - (suspend) - ) - ) - (go helix-button-idle-down) - ) - :post rider-post - ) + :code + (behavior () + (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) 'music) + (let ((t9-0 send-event-function) + (v1-1 (-> self my-water))) + (t9-0 (if v1-1 (-> v1-1 extra process)) a1-0))) + (sound-play "prec-button8") + (sound-play "maindoor") + (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) 'trigger) + (let ((t9-5 send-event-function) + (v1-7 (-> self my-door))) + (t9-5 (if v1-7 (-> v1-7 extra process)) a1-3))) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'trigger) + (let ((t9-6 send-event-function) + (v1-11 (-> self my-water))) + (t9-6 (if v1-11 (-> v1-11 extra process)) a1-4))) + (set! (-> self root transv quad) (the-as uint128 0)) + (let ((gp-2 5)) + (until (<= gp-2 0) + (let ((f1-0 (-> self root transv y)) + (f0-0 (-> self root trans y)) + (a1-5 (new 'stack-no-clear 'vector))) + (let* ((f1-1 (+ f1-0 (* -737280.0 (seconds-per-frame)))) + (f0-1 (+ f0-0 (* f1-1 (seconds-per-frame))))) + (when (>= (-> self down-y) f0-1) + (set! f0-1 (-> self down-y)) + (set! f1-1 (* 0.65 (- f1-1))) + (+! gp-2 -1)) + (set! (-> self root transv y) f1-1) + (set! (-> a1-5 quad) (-> self root trans quad)) + (set! (-> a1-5 y) f0-1)) + (move-to-point! (-> self root) a1-5)) + (suspend))) + (go helix-button-idle-down)) + :post rider-post) (defstate helix-button-idle-down (helix-button) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (suspend)))) (defmethod init-from-entity! ((this helix-button) (arg0 entity-actor)) (set! (-> this fcell-handle) (the-as handle #f)) @@ -497,9 +329,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -508,159 +338,95 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 14336.0 0.0 22118.4) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *helix-button-sg* '()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (set! (-> this spawn-trans quad) (-> this root trans quad)) (+! (-> this root trans y) -26624.0) (set! (-> this down-y) (+ -6553.6 (-> this root trans y))) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (ja-post) (update-transforms! (-> this root)) (set! *helix-button* this) (go helix-button-startup) - (none) - ) + (none)) (defmethod helix-water-method-21 ((this helix-water)) (let ((s5-0 (+ (-> this last-alt-actor-consumed) 1))) (when (< s5-0 (-> this alt-actors length)) (let* ((v1-5 (-> this alt-actors s5-0)) - (s4-0 (if v1-5 - (-> v1-5 extra process) - ) - ) - (a0-3 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) + (s4-0 (if v1-5 (-> v1-5 extra process))) + (a0-3 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) (+ -1638.4 (-> this root trans y)) (cond (a0-3 - (when (< (-> (the-as process-drawable a0-3) root trans y) (-> this root trans y)) - (set! (-> this last-alt-actor-consumed) s5-0) - (case (-> a0-3 type) - ((babak) - (send-event a0-3 'instant-death) - ) - ((ecovent) - (send-event a0-3 'show-particles #f) - ) - ((launcher) - (send-event a0-3 'instant-death) - ) - ) - ) - ) - (else - (set! (-> this last-alt-actor-consumed) s5-0) - s5-0 - ) - ) - ) - ) - ) - ) + (when (< (-> (the-as process-drawable a0-3) root trans y) (-> this root trans y)) + (set! (-> this last-alt-actor-consumed) s5-0) + (case (-> a0-3 type) + ((babak) (send-event a0-3 'instant-death)) + ((ecovent) (send-event a0-3 'show-particles #f)) + ((launcher) (send-event a0-3 'instant-death))))) + (else (set! (-> this last-alt-actor-consumed) s5-0) s5-0)))))) (defstate helix-water-idle (helix-water) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go helix-water-activated) - ) - (('music) - (set-setting! 'music 'danger 0.0 0) - ) - ) - ) - :code (behavior () - (set! (-> self root trans y) (-> self start-y)) - (set! (-> self last-alt-actor-consumed) -1) - (set! (-> self transv-y) 9216.0) - (suspend) - (send-event (ppointer->process (-> self dark-eco)) 'move-to (-> self root trans)) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go helix-water-activated)) + (('music) (set-setting! 'music 'danger 0.0 0)))) + :code + (behavior () + (set! (-> self root trans y) (-> self start-y)) + (set! (-> self last-alt-actor-consumed) -1) + (set! (-> self transv-y) 9216.0) (suspend) - ) - ) - :post ja-post - ) + (send-event (ppointer->process (-> self dark-eco)) 'move-to (-> self root trans)) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post ja-post) (defstate helix-water-activated (helix-water) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (when (= (-> proc type) launcherdoor) - (remove-setting! 'music) - (go helix-water-idle) - ) - ) - ) - ) - :trans (behavior () - (seek! (-> self root scale y) 0.8 (* 0.667 (seconds-per-frame))) - (when *target* - (let ((f0-4 (-> (target-pos 0) y))) - (when (not (logtest? (-> *target* state-flags) (state-flags grabbed))) - (let* ((f0-5 (- f0-4 (-> self root trans y))) - (f0-6 (+ -40960.0 f0-5)) - (f0-7 (* 0.000024414063 f0-6)) - ) - (cond - ((< f0-7 0.0) - (set! f0-7 0.0) - ) - ((< 1.0 f0-7) - (set! f0-7 1.0) - ) - ) - (set! (-> self transv-y) (+ 3584.0 (* 12800.0 f0-7))) - ) - ) - ) - ) - (+! (-> self root trans y) (* (-> self transv-y) (seconds-per-frame))) - (if (< (-> self end-y) (-> self root trans y)) - (set! (-> self root trans y) (-> self end-y)) - ) - (send-event (ppointer->process (-> self dark-eco)) 'move-to (-> self root trans)) - (helix-water-method-21 self) - ) - :code (behavior () - (send-event (ppointer->process (-> self dark-eco)) 'trigger) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (when (= (-> proc type) launcherdoor) (remove-setting! 'music) (go helix-water-idle))))) + :trans + (behavior () + (seek! (-> self root scale y) 0.8 (* 0.667 (seconds-per-frame))) + (when *target* + (let ((f0-4 (-> (target-pos 0) y))) + (when (not (logtest? (-> *target* state-flags) (state-flags grabbed))) + (let* ((f0-5 (- f0-4 (-> self root trans y))) + (f0-6 (+ -40960.0 f0-5)) + (f0-7 (* 0.000024414063 f0-6))) + (cond + ((< f0-7 0.0) (set! f0-7 0.0)) + ((< 1.0 f0-7) (set! f0-7 1.0))) + (set! (-> self transv-y) (+ 3584.0 (* 12800.0 f0-7))))))) + (+! (-> self root trans y) (* (-> self transv-y) (seconds-per-frame))) + (if (< (-> self end-y) (-> self root trans y)) (set! (-> self root trans y) (-> self end-y))) + (send-event (ppointer->process (-> self dark-eco)) 'move-to (-> self root trans)) + (helix-water-method-21 self)) + :code + (behavior () + (send-event (ppointer->process (-> self dark-eco)) 'trigger) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post ja-post) (defmethod relocate ((this helix-water) (arg0 int)) - (if (nonzero? (-> this alt-actors)) - (&+! (-> this alt-actors) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this alt-actors)) (&+! (-> this alt-actors) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this helix-water) (arg0 entity-actor)) (set! (-> this last-alt-actor-consumed) -1) @@ -673,14 +439,9 @@ (let ((s4-0 (entity-actor-count arg0 'alt-actor))) (set! (-> this alt-actors) (new 'process 'boxed-array entity-actor s4-0)) (dotimes (s3-0 s4-0) - (set! (-> this alt-actors s3-0) (entity-actor-lookup arg0 'alt-actor s3-0)) - ) - ) + (set! (-> this alt-actors s3-0) (entity-actor-lookup arg0 'alt-actor s3-0)))) (set! (-> this root trans y) (-> this start-y)) - (set! (-> this dark-eco) - (process-spawn helix-dark-eco :init water-vol-init-by-other (-> this entity) :to this) - ) + (set! (-> this dark-eco) (process-spawn helix-dark-eco :init water-vol-init-by-other (-> this entity) :to this)) (set! *helix-water* this) (go helix-water-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/orbit-plat.gc b/goal_src/jak1/levels/sunken/orbit-plat.gc index 864723d6b0..f071faa649 100644 --- a/goal_src/jak1/levels/sunken/orbit-plat.gc +++ b/goal_src/jak1/levels/sunken/orbit-plat.gc @@ -1,243 +1,187 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/nav/navigate.gc") (require "engine/common-obs/baseplat.gc") - -;; name: orbit-plat.gc -;; name in dgo: orbit-plat -;; dgos: L1, SUN, SUNKEN - (declare-type orbit-plat baseplat) ;; DECOMP BEGINS (deftype orbit-plat-bottom (process-drawable) - ((parent-override (pointer orbit-plat) :overlay-at parent) - (part2 sparticle-launch-control) - ) + ((parent-override (pointer orbit-plat) :overlay-at parent) + (part2 sparticle-launch-control)) (:methods - (orbit-plat-bottom-method-20 (_type_ vector vector) none) - ) + (orbit-plat-bottom-method-20 (_type_ vector vector) none)) (:states - orbit-plat-bottom-idle - ) - ) - + orbit-plat-bottom-idle)) -(defskelgroup *orbit-plat-bottom-sg* orbit-plat-bottom orbit-plat-bottom-lod0-jg orbit-plat-bottom-idle-ja - ((orbit-plat-bottom-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.8) - ) +(defskelgroup *orbit-plat-bottom-sg* + orbit-plat-bottom + orbit-plat-bottom-lod0-jg + orbit-plat-bottom-idle-ja + ((orbit-plat-bottom-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.8)) (deftype orbit-plat (baseplat) - ((other entity-actor) - (rot-dir float) - (reset-trans vector :inline) - (is-reset? symbol) - (reset-length float) - (timeout float) - (plat-status uint64) - ) + ((other entity-actor) + (rot-dir float) + (reset-trans vector :inline) + (is-reset? symbol) + (reset-length float) + (timeout float) + (plat-status uint64)) (:methods - (orbit-plat-method-27 (_type_) symbol) - (orbit-plat-method-28 (_type_) symbol) - ) + (orbit-plat-method-27 (_type_) symbol) + (orbit-plat-method-28 (_type_) symbol)) (:states - orbit-plat-idle - orbit-plat-reset - orbit-plat-riding - orbit-plat-rotating - orbit-plat-still - orbit-plat-wait-for-other - ) - ) + orbit-plat-idle + orbit-plat-reset + orbit-plat-riding + orbit-plat-rotating + orbit-plat-still + orbit-plat-wait-for-other)) - -(defskelgroup *orbit-plat-sg* orbit-plat orbit-plat-lod0-jg orbit-plat-idle-ja - ((orbit-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.4) - ) +(defskelgroup *orbit-plat-sg* + orbit-plat + orbit-plat-lod0-jg + orbit-plat-idle-ja + ((orbit-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.4)) (defpartgroup group-orbit-plat-jet :id 440 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.5) :length (seconds 0.25)) - (sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.25) :length (seconds 0.32)) - (sp-item 1715 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 0.3) :length (seconds 0.2)) - (sp-item 1716 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.5) :length (seconds 0.25)) + (sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.25) :length (seconds 0.32)) + (sp-item 1715 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 0.3) :length (seconds 0.2)) + (sp-item 1716 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1716 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0) - (:b 48.0) - (:a 32.0 96.0) - (:vel-z (meters 0.02) (meters 0.0033333334)) - (:scalevel-x (meters -0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.7066667) - (:timer (seconds 0.25)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0) + (:b 48.0) + (:a 32.0 96.0) + (:vel-z (meters 0.02) (meters 0.0033333334)) + (:scalevel-x (meters -0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.7066667) + (:timer (seconds 0.25)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 15)))) (defpart 1715 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 2.0) - (:sound (static-sound-spec "steam-medium" :num 0.05 :volume 80.0)) - (:scale-x (meters 0.75) (meters 0.75)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 96.0) - (:b 128.0) - (:a 16.0 32.0) - (:vel-z (meters 0.053333335) (meters 0.0033333334)) - (:scalevel-x (meters -0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.8) - (:friction 0.96) - (:timer (seconds 0.25)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 2.0) + (:sound (static-sound-spec "steam-medium" :num 0.05 :volume 80.0)) + (:scale-x (meters 0.75) (meters 0.75)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 96.0) + (:b 128.0) + (:a 16.0 32.0) + (:vel-z (meters 0.053333335) (meters 0.0033333334)) + (:scalevel-x (meters -0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.8) + (:friction 0.96) + (:timer (seconds 0.25)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 15)))) (defpart 1717 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 3.0) - (:scale-x (meters 1.7) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 16.0 96.0) - (:b 255.0) - (:a 64.0) - (:vel-z (meters 0.45) (meters 0.05)) - (:fade-r -0.08888889) - (:timer (seconds 1.2)) - (:flags (bit2 launch-along-z)) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 0)) - (:conerot-radius (meters -3) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 3.0) + (:scale-x (meters 1.7) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 16.0 96.0) + (:b 255.0) + (:a 64.0) + (:vel-z (meters 0.45) (meters 0.05)) + (:fade-r -0.08888889) + (:timer (seconds 1.2)) + (:flags (bit2 launch-along-z)) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 0)) + (:conerot-radius (meters -3) (meters 4)))) (defmethod orbit-plat-bottom-method-20 ((this orbit-plat-bottom) (arg0 vector) (arg1 vector)) (let* ((s5-1 (vector-! (new 'stack-no-clear 'vector) arg1 arg0)) - (f30-0 (vector-length s5-1)) - ) + (f30-0 (vector-length s5-1))) (let ((f28-0 (* 0.0005022321 f30-0))) (set! (-> *part-id-table* 1717 init-specs 13 initial-valuef) (vector-y-angle s5-1)) (set! (-> *part-id-table* 1717 init-specs 12 initial-valuef) (- (vector-x-angle s5-1))) (set! (-> *part-id-table* 1717 init-specs 9 initial-valuef) (/ -32.0 f28-0)) - (set! (-> *part-id-table* 1717 init-specs 10 initial-valuef) (the-as float (the int f28-0))) - ) - (set! (-> *part-id-table* 1717 init-specs 1 random-rangef) (* 0.000009494358 f30-0)) - ) + (set! (-> *part-id-table* 1717 init-specs 10 initial-valuef) (the-as float (the int f28-0)))) + (set! (-> *part-id-table* 1717 init-specs 1 random-rangef) (* 0.000009494358 f30-0))) (launch-particles (-> *part-id-table* 1717) arg0) 0 - (none) - ) + (none)) (defstate orbit-plat-bottom-idle (orbit-plat-bottom) - :code (behavior () - (loop - (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) - (+! (-> self root trans y) -5324.8) - (spawn (-> self part2) (-> self root trans)) - (let* ((a0-6 (-> self parent-override 0 other)) - (v1-9 (if a0-6 - (-> a0-6 extra process) - ) - ) - ) - (when v1-9 - (let ((f30-0 (atan - (- (-> (the-as orbit-plat v1-9) root trans x) (-> self root trans x)) - (- (-> (the-as orbit-plat v1-9) root trans z) (-> self root trans z)) - ) - ) - ) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f30-0) - (let ((v1-16 (-> self parent-override 0 plat-status)) - (f30-1 (+ 16384.0 f30-0)) - ) - (cond - ((= v1-16 2) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set-vector! gp-0 0.0 -2048.0 8192.0 1.0) - (if (< (-> self parent-override 0 rot-dir) 0.0) - (set! f30-1 (+ 32768.0 f30-1)) - ) - (vector-rotate-around-y! gp-0 gp-0 f30-1) - (set! (-> *part-id-table* 1716 init-specs 16 initial-valuef) f30-1) - (set! (-> *part-id-table* 1715 init-specs 18 initial-valuef) f30-1) - (vector+! gp-0 gp-0 (-> self root trans)) - (spawn (-> self part) gp-0) - ) - ) - (else - (let* ((a0-18 (-> self parent-override 0 other)) - (v1-32 (if a0-18 - (-> a0-18 extra process) - ) - ) - ) - (when (and v1-32 (= (-> (the-as orbit-plat v1-32) plat-status) 2)) - (let ((gp-1 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 quad) (-> self root trans quad)) - (+! (-> gp-1 y) -2048.0) - (set! (-> s5-0 quad) (-> (the-as orbit-plat v1-32) root trans quad)) - (+! (-> s5-0 y) -7372.8) - (vector-! s4-0 s5-0 gp-1) - (vector-normalize! s4-0 1.0) - (vector+*! s5-0 gp-1 s4-0 26624.0) - (vector+*! gp-1 gp-1 s4-0 8192.0) - ) - (orbit-plat-bottom-method-20 self gp-1 s5-0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) + (+! (-> self root trans y) -5324.8) + (spawn (-> self part2) (-> self root trans)) + (let* ((a0-6 (-> self parent-override 0 other)) + (v1-9 (if a0-6 (-> a0-6 extra process)))) + (when v1-9 + (let ((f30-0 (atan (- (-> (the-as orbit-plat v1-9) root trans x) (-> self root trans x)) + (- (-> (the-as orbit-plat v1-9) root trans z) (-> self root trans z))))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f30-0) + (let ((v1-16 (-> self parent-override 0 plat-status)) + (f30-1 (+ 16384.0 f30-0))) + (cond + ((= v1-16 2) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set-vector! gp-0 0.0 -2048.0 8192.0 1.0) + (if (< (-> self parent-override 0 rot-dir) 0.0) (set! f30-1 (+ 32768.0 f30-1))) + (vector-rotate-around-y! gp-0 gp-0 f30-1) + (set! (-> *part-id-table* 1716 init-specs 16 initial-valuef) f30-1) + (set! (-> *part-id-table* 1715 init-specs 18 initial-valuef) f30-1) + (vector+! gp-0 gp-0 (-> self root trans)) + (spawn (-> self part) gp-0))) + (else + (let* ((a0-18 (-> self parent-override 0 other)) + (v1-32 (if a0-18 (-> a0-18 extra process)))) + (when (and v1-32 (= (-> (the-as orbit-plat v1-32) plat-status) 2)) + (let ((gp-1 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 quad) (-> self root trans quad)) + (+! (-> gp-1 y) -2048.0) + (set! (-> s5-0 quad) (-> (the-as orbit-plat v1-32) root trans quad)) + (+! (-> s5-0 y) -7372.8) + (vector-! s4-0 s5-0 gp-1) + (vector-normalize! s4-0 1.0) + (vector+*! s5-0 gp-1 s4-0 26624.0) + (vector+*! gp-1 gp-1 s4-0 8192.0)) + (orbit-plat-bottom-method-20 self gp-1 s5-0)))))))))) + (suspend))) + :post ja-post) (defmethod relocate ((this orbit-plat-bottom) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as orbit-plat-bottom ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as orbit-plat-bottom ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this orbit-plat-bottom)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defbehavior orbit-plat-bottom-init-by-other orbit-plat-bottom ((arg0 entity-actor) (arg1 orbit-plat)) (set! (-> self entity) arg0) @@ -253,197 +197,113 @@ (ja-channel-set! 1) (ja :group! orbit-plat-bottom-idle-ja :num! min) (go orbit-plat-bottom-idle) - (none) - ) + (none)) (defstate orbit-plat-idle (orbit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('go) - (go orbit-plat-rotating) - ) - (('query-reset) - (if (not (-> self is-reset?)) - (go orbit-plat-reset) - ) - (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) 'reset) - (let ((t9-3 send-event-function) - (v1-8 (-> self other)) - ) - (t9-3 - (if v1-8 - (-> v1-8 extra process) - ) - a1-1 - ) - ) - ) - ) - (('reset) - (go orbit-plat-reset) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('go) (go orbit-plat-rotating)) + (('query-reset) + (if (not (-> self is-reset?)) (go orbit-plat-reset)) + (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) 'reset) + (let ((t9-3 send-event-function) + (v1-8 (-> self other))) + (t9-3 (if v1-8 (-> v1-8 extra process)) a1-1)))) + (('reset) (go orbit-plat-reset)))) :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 0)) - (ja-no-eval :num! (seek! 0.0)) - (dotimes (gp-0 2) - (transform-post) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - ) - (loop - (when (nonzero? (-> self root riders num-riders)) - (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) 'go) - (let ((t9-4 send-event-function) - (v1-14 (-> self other)) - ) - (t9-4 - (if v1-14 - (-> v1-14 extra process) - ) - a1-2 - ) - ) - ) - (go orbit-plat-riding) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - (when (not (-> self is-reset?)) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'query-reset) - (let ((t9-8 send-event-function) - (v1-26 (-> self other)) - ) - (t9-8 - (if v1-26 - (-> v1-26 extra process) - ) - a1-4 - ) - ) - ) - ) - ) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 0)) + (ja-no-eval :num! (seek! 0.0)) + (dotimes (gp-0 2) + (transform-post) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0)))) + (loop + (when (nonzero? (-> self root riders num-riders)) + (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) 'go) + (let ((t9-4 send-event-function) + (v1-14 (-> self other))) + (t9-4 (if v1-14 (-> v1-14 extra process)) a1-2))) + (go orbit-plat-riding)) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0))) + (when (not (-> self is-reset?)) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'query-reset) + (let ((t9-8 send-event-function) + (v1-26 (-> self other))) + (t9-8 (if v1-26 (-> v1-26 extra process)) a1-4)))))) + :post plat-post) (defmethod orbit-plat-method-28 ((this orbit-plat)) (when (time-elapsed? (-> this state-time) (the int (* 300.0 (-> this timeout)))) (cond (*target* - (let ((s5-0 (target-pos 0))) - (if (or (>= (vector-vector-xz-distance s5-0 (-> this root trans)) 102400.0) - (>= (- (-> this root trans y) (-> s5-0 y)) 16384.0) - ) - (return #t) - ) - ) - ) - (else - (return #t) - ) - ) - ) - #f - ) + (let ((s5-0 (target-pos 0))) + (if (or (>= (vector-vector-xz-distance s5-0 (-> this root trans)) 102400.0) + (>= (- (-> this root trans y) (-> s5-0 y)) 16384.0)) + (return #t)))) + (else (return #t)))) + #f) (defstate orbit-plat-still (orbit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('go) - (go orbit-plat-rotating) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('go) (go orbit-plat-rotating)))) :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 0)) - (set-time! (-> self state-time)) - (ja-no-eval :num! (seek! 0.0)) - (until (orbit-plat-method-28 self) - (when (nonzero? (-> self root riders num-riders)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'go) - (let ((t9-1 send-event-function) - (v1-10 (-> self other)) - ) - (t9-1 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - (go orbit-plat-riding) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - ) - (go orbit-plat-idle) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 0)) + (set-time! (-> self state-time)) + (ja-no-eval :num! (seek! 0.0)) + (until (orbit-plat-method-28 self) + (when (nonzero? (-> self root riders num-riders)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go) + (let ((t9-1 send-event-function) + (v1-10 (-> self other))) + (t9-1 (if v1-10 (-> v1-10 extra process)) a1-1))) + (go orbit-plat-riding)) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0)))) + (go orbit-plat-idle)) + :post plat-post) (defstate orbit-plat-riding (orbit-plat) :event plat-event :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 1)) - (ja-no-eval :num! (seek!)) - (loop - (when (zero? (-> self root riders num-riders)) - (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) 'stop) - (let ((t9-1 send-event-function) - (v1-13 (-> self other)) - ) - (t9-1 - (if v1-13 - (-> v1-13 extra process) - ) - a1-1 - ) - ) - ) - (go orbit-plat-still) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek!)) - ) - ) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 1)) + (ja-no-eval :num! (seek!)) + (loop + (when (zero? (-> self root riders num-riders)) + (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) 'stop) + (let ((t9-1 send-event-function) + (v1-13 (-> self other))) + (t9-1 (if v1-13 (-> v1-13 extra process)) a1-1))) + (go orbit-plat-still)) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek!))))) + :post plat-post) (defun get-rotate-point! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float) (arg5 float)) (let ((s5-0 (new 'stack-no-clear 'vector))) @@ -455,305 +315,166 @@ (set! (-> s2-0 z) (- (* arg4 (-> s5-0 x)))) (vector-normalize! s2-0 (* arg5 (seconds-per-frame))) (+! (-> s5-0 x) (-> s2-0 x)) - (+! (-> s5-0 z) (-> s2-0 z)) - ) - ) + (+! (-> s5-0 z) (-> s2-0 z)))) (vector-normalize! s5-0 (the-as float arg3)) - (vector+! arg0 arg1 s5-0) - ) - arg0 - ) + (vector+! arg0 arg1 s5-0)) + arg0) (defun get-nav-point! ((arg0 vector) (arg1 orbit-plat) (arg2 vector) (arg3 float)) (set! (-> arg1 nav target-pos quad) (-> arg2 quad)) (logclear! (-> arg1 nav flags) (nav-control-flags navcf19)) (nav-control-method-11 (-> arg1 nav) (-> arg1 nav target-pos)) (let ((f0-0 (vector-length (-> arg1 nav travel)))) - (if (< arg3 f0-0) - (set! f0-0 arg3) - ) - (vector-normalize! (-> arg1 nav travel) (* f0-0 (seconds-per-frame))) - ) + (if (< arg3 f0-0) (set! f0-0 arg3)) + (vector-normalize! (-> arg1 nav travel) (* f0-0 (seconds-per-frame)))) (set! (-> arg0 x) (+ (-> arg1 root trans x) (-> arg1 nav travel x))) (set! (-> arg0 y) (-> arg1 root trans x)) (set! (-> arg0 z) (+ (-> arg1 root trans z) (-> arg1 nav travel z))) - arg0 - ) + arg0) (defstate orbit-plat-rotating (orbit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('stop) - (go orbit-plat-still) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('stop) (go orbit-plat-still)))) :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 2)) - (set! (-> self is-reset?) #f) - (let ((gp-0 (new 'stack-no-clear 'vector))) - 0.0 - (let ((a0-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (let ((v1-1 gp-0) - (a1-0 (-> self other)) - ) - (set! (-> v1-1 quad) (-> (the-as orbit-plat (if a1-0 - (-> a1-0 extra process) - ) - ) - root - trans - quad - ) - ) - ) - (vector-! a0-0 (-> self basetrans) gp-0) - (let ((f30-0 (vector-length a0-0))) - (set! (-> self reset-length) f30-0) - (ja-no-eval :num! (seek! 0.0)) - (label cfg-3) - (dotimes (s4-0 2) - (get-rotate-point! s5-0 gp-0 (-> self basetrans) (the-as vector f30-0) (-> self rot-dir) 40960.0) - (b! (not (nav-control-method-16 (-> self nav) s5-0)) cfg-6 :delay (empty-form)) - (set! (-> self basetrans quad) (-> s5-0 quad)) - (b! #t cfg-9 :delay (nop!)) - (label cfg-6) - (set! (-> self rot-dir) (- (-> self rot-dir))) - ) - ) - ) - ) - (label cfg-9) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - (b! #t cfg-3 :delay (nop!)) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 2)) + (set! (-> self is-reset?) #f) + (let ((gp-0 (new 'stack-no-clear 'vector))) + 0.0 + (let ((a0-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (let ((v1-1 gp-0) + (a1-0 (-> self other))) + (set! (-> v1-1 quad) (-> (the-as orbit-plat (if a1-0 (-> a1-0 extra process))) root trans quad))) + (vector-! a0-0 (-> self basetrans) gp-0) + (let ((f30-0 (vector-length a0-0))) + (set! (-> self reset-length) f30-0) + (ja-no-eval :num! (seek! 0.0)) + (label cfg-3) + (dotimes (s4-0 2) + (get-rotate-point! s5-0 gp-0 (-> self basetrans) (the-as vector f30-0) (-> self rot-dir) 40960.0) + (b! (not (nav-control-method-16 (-> self nav) s5-0)) cfg-6 :delay (empty-form)) + (set! (-> self basetrans quad) (-> s5-0 quad)) + (b! #t cfg-9 :delay (nop!)) + (label cfg-6) + (set! (-> self rot-dir) (- (-> self rot-dir))))))) + (label cfg-9) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0))) + (b! #t cfg-3 :delay (nop!))) + :post plat-post) ;; WARN: disable def twice: 132. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defmethod orbit-plat-method-27 ((this orbit-plat)) (local-vars (v0-11 object)) (let* ((v1-0 (-> this other)) - (s5-0 (if v1-0 - (-> v1-0 extra process) - ) - ) - ) - (the-as - symbol - (cond - ((and s5-0 - (< (vector-vector-xz-distance (the-as vector (&-> s5-0 stack 96)) (the-as vector (&-> s5-0 stack 128))) - (vector-vector-xz-distance (-> this basetrans) (-> this reset-trans)) - ) - ) - (cond - ((-> (the-as orbit-plat s5-0) is-reset?) - (when (!= (-> this plat-status) 2) - (set! (-> this plat-status) (the-as uint 2)) - (let ((f30-1 (atan - (- (-> this basetrans x) (-> (the-as orbit-plat s5-0) basetrans x)) - (- (-> this basetrans z) (-> (the-as orbit-plat s5-0) basetrans z)) - ) - ) - (f0-9 (atan - (- (-> this reset-trans x) (-> (the-as orbit-plat s5-0) basetrans x)) - (- (-> this reset-trans z) (-> (the-as orbit-plat s5-0) basetrans z)) - ) - ) - ) - (if (>= (deg- f0-9 f30-1) 0.0) - (set! (-> this rot-dir) 1.0) - (set! (-> this rot-dir) -1.0) - ) - ) - ) - (let ((s4-0 (new 'stack-no-clear 'vector))) - 0.0 - (let ((a0-7 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'vector)) - ) - (let ((v1-9 s4-0) - (a1-5 (-> this other)) - ) - (set! (-> v1-9 quad) (-> (the-as orbit-plat (if a1-5 - (-> a1-5 extra process) - ) - ) - root - trans - quad - ) - ) - ) - (vector-! a0-7 (-> this basetrans) s4-0) - (let ((f30-2 (vector-length a0-7))) - (get-rotate-point! s5-1 s4-0 (-> this basetrans) (the-as vector f30-2) (-> this rot-dir) 40960.0) - (cond - ((nav-control-method-16 (-> this nav) s5-1) - (set! (-> this basetrans quad) (-> s5-1 quad)) - ) - (else - (set! (-> this rot-dir) (- (-> this rot-dir))) - (get-rotate-point! s5-1 s4-0 (-> this basetrans) (the-as vector f30-2) (-> this rot-dir) 40960.0) - (if (nav-control-method-16 (-> this nav) s5-1) - (set! (-> this basetrans quad) (-> s5-1 quad)) - ) - ) - ) - ) - ) - ) - (when (>= 614.4 (vector-vector-xz-distance (-> this basetrans) (-> this reset-trans))) - (set! v0-11 (logior (nav-control-flags navcf19) (-> this nav flags))) - (set! (-> this nav flags) (the-as nav-control-flags v0-11)) - v0-11 - ) - ) - (else - (let ((s5-2 (new 'stack-no-clear 'vector))) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (get-nav-point! s5-2 this (-> this reset-trans) 40960.0) - (let ((v1-20 s4-1) - (a0-19 (-> this other)) - ) - (set! (-> v1-20 quad) (-> (the-as orbit-plat (if a0-19 - (-> a0-19 extra process) - ) - ) - root - trans - quad - ) - ) - ) - (set! (-> s5-2 y) (-> s4-1 y)) - (vector-! s5-2 s5-2 s4-1) - (vector-normalize! s5-2 (-> this reset-length)) - (vector+! s5-2 s5-2 s4-1) - (when (not (nav-control-method-16 (-> this nav) s5-2)) - (logclear! (-> this nav flags) (nav-control-flags navcf19)) - (get-rotate-point! s5-2 s4-1 (-> this basetrans) (the-as vector (-> this reset-length)) 0.0 40960.0) - (when (not (nav-control-method-16 (-> this nav) s5-2)) - (get-rotate-point! - s5-2 - s4-1 - (-> this basetrans) - (the-as vector (-> this reset-length)) - (-> this rot-dir) - 40960.0 - ) - (when (not (nav-control-method-16 (-> this nav) s5-2)) - (set! (-> this rot-dir) (- (-> this rot-dir))) - (get-rotate-point! - s5-2 - s4-1 - (-> this basetrans) - (the-as vector (-> this reset-length)) - (-> this rot-dir) - 40960.0 - ) - ) - ) - ) - ) - (set! (-> s5-2 y) (-> this basetrans y)) - (set! v0-11 (-> this basetrans)) - (set! (-> (the-as vector v0-11) quad) (-> s5-2 quad)) - ) - v0-11 - ) - ) - ) - (else - (let ((s5-3 (new 'stack-no-clear 'vector))) - (set! (-> s5-3 quad) (-> this basetrans quad)) - (get-nav-point! (-> this basetrans) this (-> this reset-trans) 40960.0) - (set! (-> this basetrans y) (-> s5-3 y)) - ) - ) - ) - ) - ) - ) + (s5-0 (if v1-0 (-> v1-0 extra process)))) + (the-as symbol + (cond + ((and s5-0 + (< (vector-vector-xz-distance (the-as vector (&-> s5-0 stack 96)) (the-as vector (&-> s5-0 stack 128))) + (vector-vector-xz-distance (-> this basetrans) (-> this reset-trans)))) + (cond + ((-> (the-as orbit-plat s5-0) is-reset?) + (when (!= (-> this plat-status) 2) + (set! (-> this plat-status) (the-as uint 2)) + (let ((f30-1 (atan (- (-> this basetrans x) (-> (the-as orbit-plat s5-0) basetrans x)) + (- (-> this basetrans z) (-> (the-as orbit-plat s5-0) basetrans z)))) + (f0-9 (atan (- (-> this reset-trans x) (-> (the-as orbit-plat s5-0) basetrans x)) + (- (-> this reset-trans z) (-> (the-as orbit-plat s5-0) basetrans z))))) + (if (>= (deg- f0-9 f30-1) 0.0) (set! (-> this rot-dir) 1.0) (set! (-> this rot-dir) -1.0)))) + (let ((s4-0 (new 'stack-no-clear 'vector))) + 0.0 + (let ((a0-7 (new 'stack-no-clear 'vector)) + (s5-1 (new 'stack-no-clear 'vector))) + (let ((v1-9 s4-0) + (a1-5 (-> this other))) + (set! (-> v1-9 quad) (-> (the-as orbit-plat (if a1-5 (-> a1-5 extra process))) root trans quad))) + (vector-! a0-7 (-> this basetrans) s4-0) + (let ((f30-2 (vector-length a0-7))) + (get-rotate-point! s5-1 s4-0 (-> this basetrans) (the-as vector f30-2) (-> this rot-dir) 40960.0) + (cond + ((nav-control-method-16 (-> this nav) s5-1) (set! (-> this basetrans quad) (-> s5-1 quad))) + (else + (set! (-> this rot-dir) (- (-> this rot-dir))) + (get-rotate-point! s5-1 s4-0 (-> this basetrans) (the-as vector f30-2) (-> this rot-dir) 40960.0) + (if (nav-control-method-16 (-> this nav) s5-1) (set! (-> this basetrans quad) (-> s5-1 quad)))))))) + (when (>= 614.4 (vector-vector-xz-distance (-> this basetrans) (-> this reset-trans))) + (set! v0-11 (logior (nav-control-flags navcf19) (-> this nav flags))) + (set! (-> this nav flags) (the-as nav-control-flags v0-11)) + v0-11)) + (else + (let ((s5-2 (new 'stack-no-clear 'vector))) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (get-nav-point! s5-2 this (-> this reset-trans) 40960.0) + (let ((v1-20 s4-1) + (a0-19 (-> this other))) + (set! (-> v1-20 quad) (-> (the-as orbit-plat (if a0-19 (-> a0-19 extra process))) root trans quad))) + (set! (-> s5-2 y) (-> s4-1 y)) + (vector-! s5-2 s5-2 s4-1) + (vector-normalize! s5-2 (-> this reset-length)) + (vector+! s5-2 s5-2 s4-1) + (when (not (nav-control-method-16 (-> this nav) s5-2)) + (logclear! (-> this nav flags) (nav-control-flags navcf19)) + (get-rotate-point! s5-2 s4-1 (-> this basetrans) (the-as vector (-> this reset-length)) 0.0 40960.0) + (when (not (nav-control-method-16 (-> this nav) s5-2)) + (get-rotate-point! s5-2 s4-1 (-> this basetrans) (the-as vector (-> this reset-length)) (-> this rot-dir) 40960.0) + (when (not (nav-control-method-16 (-> this nav) s5-2)) + (set! (-> this rot-dir) (- (-> this rot-dir))) + (get-rotate-point! s5-2 s4-1 (-> this basetrans) (the-as vector (-> this reset-length)) (-> this rot-dir) 40960.0))))) + (set! (-> s5-2 y) (-> this basetrans y)) + (set! v0-11 (-> this basetrans)) + (set! (-> (the-as vector v0-11) quad) (-> s5-2 quad))) + v0-11))) + (else + (let ((s5-3 (new 'stack-no-clear 'vector))) + (set! (-> s5-3 quad) (-> this basetrans quad)) + (get-nav-point! (-> this basetrans) this (-> this reset-trans) 40960.0) + (set! (-> this basetrans y) (-> s5-3 y)))))))) (defstate orbit-plat-reset (orbit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('go) - (go orbit-plat-rotating) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('go) (go orbit-plat-rotating)))) :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 3)) - (logclear! (-> self nav flags) (nav-control-flags navcf19)) - (ja-no-eval :num! (seek! 0.0)) - (while (not (logtest? (nav-control-flags navcf19) (-> self nav flags))) - (orbit-plat-method-27 self) - (when (nonzero? (-> self root riders num-riders)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'go) - (let ((t9-2 send-event-function) - (v1-13 (-> self other)) - ) - (t9-2 - (if v1-13 - (-> v1-13 extra process) - ) - a1-1 - ) - ) - ) - (go orbit-plat-riding) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - ) - (set! (-> self is-reset?) #t) - (go orbit-plat-idle) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 3)) + (logclear! (-> self nav flags) (nav-control-flags navcf19)) + (ja-no-eval :num! (seek! 0.0)) + (while (not (logtest? (nav-control-flags navcf19) (-> self nav flags))) + (orbit-plat-method-27 self) + (when (nonzero? (-> self root riders num-riders)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go) + (let ((t9-2 send-event-function) + (v1-13 (-> self other))) + (t9-2 (if v1-13 (-> v1-13 extra process)) a1-1))) + (go orbit-plat-riding)) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0)))) + (set! (-> self is-reset?) #t) + (go orbit-plat-idle)) + :post plat-post) (defstate orbit-plat-wait-for-other (orbit-plat) - :code (behavior () - (set! (-> self plat-status) (the-as uint 0)) - (ja-no-eval :num! (seek! 0.0)) - (loop - (let ((v1-3 (-> self other))) - (when (if v1-3 - (-> v1-3 extra process) - ) - (suspend) - (go orbit-plat-idle) - ) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 0)) + (ja-no-eval :num! (seek! 0.0)) + (loop + (let ((v1-3 (-> self other))) (when (if v1-3 (-> v1-3 extra process)) (suspend) (go orbit-plat-idle))) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0))))) + :post ja-post) (defmethod init-from-entity! ((this orbit-plat) (arg0 entity-actor)) (set! (-> this plat-status) (the-as uint 0)) @@ -761,9 +482,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -772,24 +491,17 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 13926.4) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *orbit-plat-sg* '()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (baseplat-method-21 this) @@ -797,14 +509,11 @@ (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set! (-> this nav gap-event) 'blocked) (set! (-> this other) (entity-actor-lookup arg0 'alt-actor 0)) - (let ((f0-7 (res-lump-float arg0 'scale :default 1.0))) - (set-vector! (-> this root scale) f0-7 f0-7 f0-7 1.0) - ) + (let ((f0-7 (res-lump-float arg0 'scale :default 1.0))) (set-vector! (-> this root scale) f0-7 f0-7 f0-7 1.0)) (set! (-> this timeout) (res-lump-float arg0 'timeout :default 10.0)) (set! (-> this rot-dir) 1.0) (set! (-> this reset-trans quad) (-> this basetrans quad)) (set! (-> this is-reset?) #t) (process-spawn orbit-plat-bottom (-> this entity) this :to this) (go orbit-plat-wait-for-other) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/puffer.gc b/goal_src/jak1/levels/sunken/puffer.gc index db6386b916..c82d60e8fa 100644 --- a/goal_src/jak1/levels/sunken/puffer.gc +++ b/goal_src/jak1/levels/sunken/puffer.gc @@ -1,665 +1,428 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/nav/navigate.gc") (require "engine/util/sync-info.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/geometry/path.gc") (require "engine/common-obs/collectables.gc") -;; name: puffer.gc -;; name in dgo: puffer -;; dgos: L1, SUN, SUNKEN - - ;; DECOMP BEGINS (deftype puffer (process-drawable) - ((root collide-shape-moving :override) - (fact fact-info-enemy :override) - (path-index int32) - (facing-ry float) - (travel-ry float) - (travel-speed float) - (attack-bottom-y float) - (patrol-bottom-y float) - (top-y float) - (targ-trans-y float) - (acc-y float) - (travel-turn-speed float) - (notice-dist float) - (give-up-dist float) - (attacking? symbol) - (hit-player? symbol) - (look-mean? symbol) - (cprims-type uint64) - (neck joint-mod) - (hit-player-time time-frame) - (reaction-delay time-frame) - (picked-point-time time-frame) - (pick-new-point-delay time-frame) - (last-on-screen-time time-frame) - (buddy process-drawable) - (nice-look lod-set :inline) - (mean-look lod-set :inline) - (dest-pos vector :inline) - (sync sync-info :inline) - ) + ((root collide-shape-moving :override) + (fact fact-info-enemy :override) + (path-index int32) + (facing-ry float) + (travel-ry float) + (travel-speed float) + (attack-bottom-y float) + (patrol-bottom-y float) + (top-y float) + (targ-trans-y float) + (acc-y float) + (travel-turn-speed float) + (notice-dist float) + (give-up-dist float) + (attacking? symbol) + (hit-player? symbol) + (look-mean? symbol) + (cprims-type uint64) + (neck joint-mod) + (hit-player-time time-frame) + (reaction-delay time-frame) + (picked-point-time time-frame) + (pick-new-point-delay time-frame) + (last-on-screen-time time-frame) + (buddy process-drawable) + (nice-look lod-set :inline) + (mean-look lod-set :inline) + (dest-pos vector :inline) + (sync sync-info :inline)) (:methods - (puffer-method-20 (_type_ vector) none) - (puffer-method-21 (_type_) none) - (puffer-method-22 (_type_) symbol) - (puffer-method-23 (_type_ symbol) symbol) - (puffer-method-24 (_type_ vector) symbol) - (puffer-method-25 (_type_ float) symbol) - (puffer-method-26 (_type_) none) - (puffer-method-27 (_type_) none) - (puffer-method-28 (_type_) none) - (flip-look! (_type_ symbol) none) - (puffer-method-30 (_type_) vector) - (puffer-method-31 (_type_) vector) - ) + (puffer-method-20 (_type_ vector) none) + (puffer-method-21 (_type_) none) + (puffer-method-22 (_type_) symbol) + (puffer-method-23 (_type_ symbol) symbol) + (puffer-method-24 (_type_ vector) symbol) + (puffer-method-25 (_type_ float) symbol) + (puffer-method-26 (_type_) none) + (puffer-method-27 (_type_) none) + (puffer-method-28 (_type_) none) + (flip-look! (_type_ symbol) none) + (puffer-method-30 (_type_) vector) + (puffer-method-31 (_type_) vector)) (:states - puffer-attack - puffer-die - puffer-idle - puffer-patrol - ) - ) + puffer-attack + puffer-die + puffer-idle + puffer-patrol)) +(defskelgroup *puffer-sg* + puffer + puffer-main-lod0-jg + -1 + ((puffer-main-lod0-mg (meters 20)) (puffer-main-lod1-mg (meters 40)) (puffer-main-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 5.25) + :longest-edge (meters 1.2) + :shadow puffer-main-shadow-mg) -(defskelgroup *puffer-sg* puffer puffer-main-lod0-jg -1 - ((puffer-main-lod0-mg (meters 20)) (puffer-main-lod1-mg (meters 40)) (puffer-main-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 5.25) - :longest-edge (meters 1.2) - :shadow puffer-main-shadow-mg - ) - -(defskelgroup *puffer-mean-sg* puffer puffer-mean-lod0-jg -1 - ((puffer-mean-lod0-mg (meters 20)) (puffer-mean-lod1-mg (meters 40)) (puffer-mean-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 5.25) - :longest-edge (meters 1.2) - :shadow puffer-main-shadow-mg - ) +(defskelgroup *puffer-mean-sg* + puffer + puffer-mean-lod0-jg + -1 + ((puffer-mean-lod0-mg (meters 20)) (puffer-mean-lod1-mg (meters 40)) (puffer-mean-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 5.25) + :longest-edge (meters 1.2) + :shadow puffer-main-shadow-mg) (defbehavior puffer-default-event-handler puffer ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch 'attack) (when (and (= arg2 'attack) (!= (-> self cprims-type) 2)) (let* ((gp-0 arg0) - (v1-7 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - ) + (v1-7 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0))) (when v1-7 - (let ((f0-4 (atan - (- (-> (the-as process-drawable v1-7) root trans x) (-> self root trans x)) - (- (-> (the-as process-drawable v1-7) root trans z) (-> self root trans z)) - ) - ) - ) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f0-4) - ) - ) - ) + (let ((f0-4 (atan (- (-> (the-as process-drawable v1-7) root trans x) (-> self root trans x)) + (- (-> (the-as process-drawable v1-7) root trans z) (-> self root trans z))))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f0-4)))) (go puffer-die) - (return #t) - ) + (return #t)) (when (= (-> arg0 type) target) - (when (send-event - arg0 - 'attack - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))) - ) + (when (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5))))) (set! (-> self hit-player?) #t) (set-time! (-> self hit-player-time)) - (set-collide-offense (-> self root) 2 (collide-offense no-offense)) - ) - ) - ) - ) - ) + (set-collide-offense (-> self root) 2 (collide-offense no-offense))))))) (defbehavior puffer-post puffer () (when (and (-> self hit-player?) (or (not *target*) (and (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (time-elapsed? (-> self hit-player-time) (seconds 0.05)) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (time-elapsed? (-> self hit-player-time) (seconds 0.05))))) (set-collide-offense (-> self root) 2 (collide-offense normal-attack)) - (set! (-> self hit-player?) #f) - ) + (set! (-> self hit-player?) #f)) (transform-post) - (none) - ) + (none)) (defmethod puffer-method-28 ((this puffer)) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) - (a2-0 (new 'stack-no-clear 'vector)) - ) + (a2-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> this root trans quad)) (set-vector! a2-0 0.0 -40960.0 0.0 1.0) (cond - ((>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-0 - a2-0 - 8192.0 - (collide-kind background cak-3 ground-object) - this - s5-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (let ((v1-11 (-> this draw shadow-ctrl))) - (logclear! (-> v1-11 settings flags) (shadow-flags disable-draw)) - ) - 0 - (let ((v1-14 (-> this draw shadow-ctrl))) - (set! (-> v1-14 settings bot-plane w) (- (+ -12288.0 (-> s5-0 intersect y)))) - ) + ((>= (fill-and-probe-using-line-sphere *collide-cache* + a1-0 + a2-0 + 8192.0 + (collide-kind background cak-3 ground-object) + this + s5-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (let ((v1-11 (-> this draw shadow-ctrl))) (logclear! (-> v1-11 settings flags) (shadow-flags disable-draw))) 0 - (let ((v1-17 (-> this draw shadow-ctrl))) - (set! (-> v1-17 settings top-plane w) (- (+ 4096.0 (-> s5-0 intersect y)))) - ) + (let ((v1-14 (-> this draw shadow-ctrl))) (set! (-> v1-14 settings bot-plane w) (- (+ -12288.0 (-> s5-0 intersect y))))) 0 - ) - (else - (let ((v1-19 (-> this draw shadow-ctrl))) - (logior! (-> v1-19 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) - ) - (else - (let ((v1-21 (-> this draw shadow-ctrl))) - (logior! (-> v1-21 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (let ((v1-17 (-> this draw shadow-ctrl))) (set! (-> v1-17 settings top-plane w) (- (+ 4096.0 (-> s5-0 intersect y))))) + 0) + (else (let ((v1-19 (-> this draw shadow-ctrl))) (logior! (-> v1-19 settings flags) (shadow-flags disable-draw))) 0)))) + (else (let ((v1-21 (-> this draw shadow-ctrl))) (logior! (-> v1-21 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod puffer-method-24 ((this puffer) (arg0 vector)) - (and (is-in-mesh? (-> this nav) arg0 11468.8) - (< (-> arg0 y) (+ (-> this root trans y) (-> this fact notice-top))) - ) - ) + (and (is-in-mesh? (-> this nav) arg0 11468.8) (< (-> arg0 y) (+ (-> this root trans y) (-> this fact notice-top))))) (defmethod puffer-method-22 ((this puffer)) (let* ((a1-0 (-> this buddy)) - (v1-0 (if a1-0 - (-> a1-0 ppointer 3) - ) - ) - ) - (if (and v1-0 - (>= 25395.2 (vector-vector-xz-distance (-> this root trans) (-> (the-as process-drawable v1-0) root trans))) - ) - (return #t) - ) - ) - #f - ) + (v1-0 (if a1-0 (-> a1-0 ppointer 3)))) + (if (and v1-0 (>= 25395.2 (vector-vector-xz-distance (-> this root trans) (-> (the-as process-drawable v1-0) root trans)))) + (return #t))) + #f) (defmethod puffer-method-25 ((this puffer) (arg0 float)) (when *target* (let ((gp-0 (target-pos 0))) (when (and (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) (puffer-method-24 this gp-0) (>= (-> gp-0 y) (+ -14336.0 (-> this attack-bottom-y))) - (>= (+ 2048.0 (-> this top-y)) (-> gp-0 y)) - ) + (>= (+ 2048.0 (-> this top-y)) (-> gp-0 y))) (let ((f30-0 (vector-vector-xz-distance gp-0 (-> this root trans)))) (when (>= arg0 f30-0) (let* ((a0-4 (-> this buddy)) - (v1-12 (if a0-4 - (-> a0-4 ppointer 3) - ) - ) - ) + (v1-12 (if a0-4 (-> a0-4 ppointer 3)))) (cond (v1-12 - (if (not (-> (the-as puffer v1-12) attacking?)) - (return #t) - ) - (if (< f30-0 (vector-vector-xz-distance gp-0 (-> (the-as puffer v1-12) root trans))) - (return #t) - ) - ) - (else - (return #t) - ) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (if (not (-> (the-as puffer v1-12) attacking?)) (return #t)) + (if (< f30-0 (vector-vector-xz-distance gp-0 (-> (the-as puffer v1-12) root trans))) (return #t))) + (else (return #t))))))))) + #f) (deftype pick-patrol-point-away-from-buddy-work (structure) - ((best-path-index int32) - (best-rating float) - (best-dest vector :inline) - (pt-dir vector :inline) - (buddy-dir vector :inline) - (dest vector :inline) - ) - ) - + ((best-path-index int32) + (best-rating float) + (best-dest vector :inline) + (pt-dir vector :inline) + (buddy-dir vector :inline) + (dest vector :inline))) (defmethod puffer-method-23 ((this puffer) (arg0 symbol)) (local-vars (v1-0 process)) - (set! v1-0 (when arg0 - (let ((a0-1 (-> this buddy))) - (set! v1-0 (if a0-1 - (-> a0-1 ppointer 3) - ) - ) - ) - (if (not v1-0) - (set! arg0 #f) - ) - v1-0 - ) - ) + (set! v1-0 + (when arg0 + (let ((a0-1 (-> this buddy))) (set! v1-0 (if a0-1 (-> a0-1 ppointer 3)))) + (if (not v1-0) (set! arg0 #f)) + v1-0)) (cond (arg0 - (let ((s4-0 (-> this path curve num-cverts)) - (s5-0 (new 'stack-no-clear 'inline-array 'vector 5)) - ) - (set! (-> s5-0 0 x) (the-as float -1)) - (vector-! (-> s5-0 3) (-> this root trans) (-> (the-as process-drawable v1-0) root trans)) - (set! (-> s5-0 3 y) 0.0) - (vector-normalize! (-> s5-0 3) 1.0) - (dotimes (s3-0 s4-0) - (eval-path-curve-div! (-> this path) (-> s5-0 4) (the float s3-0) 'interp) - (vector-! (-> s5-0 2) (-> s5-0 4) (-> this root trans)) - (when (>= (vector-xz-length (-> s5-0 2)) 10240.0) - (set! (-> s5-0 2 y) 0.0) - (vector-normalize! (-> s5-0 2) 1.0) - (let ((f0-6 (vector-dot (-> s5-0 3) (-> s5-0 2)))) - (when (>= f0-6 0.0) - (when (or (< (the-as int (-> s5-0 0 x)) 0) (< (-> s5-0 0 y) f0-6)) - (set! (-> s5-0 0 x) (the-as float s3-0)) - (set! (-> s5-0 0 y) f0-6) - (set! (-> s5-0 1 quad) (-> s5-0 4 quad)) - ) - ) - ) - ) - ) - (when (>= (the-as int (-> s5-0 0 x)) 0) - (set! (-> this dest-pos quad) (-> s5-0 1 quad)) - (set! (-> this dest-pos y) (-> this root trans y)) - (return #t) - ) - ) - ) + (let ((s4-0 (-> this path curve num-cverts)) + (s5-0 (new 'stack-no-clear 'inline-array 'vector 5))) + (set! (-> s5-0 0 x) (the-as float -1)) + (vector-! (-> s5-0 3) (-> this root trans) (-> (the-as process-drawable v1-0) root trans)) + (set! (-> s5-0 3 y) 0.0) + (vector-normalize! (-> s5-0 3) 1.0) + (dotimes (s3-0 s4-0) + (eval-path-curve-div! (-> this path) (-> s5-0 4) (the float s3-0) 'interp) + (vector-! (-> s5-0 2) (-> s5-0 4) (-> this root trans)) + (when (>= (vector-xz-length (-> s5-0 2)) 10240.0) + (set! (-> s5-0 2 y) 0.0) + (vector-normalize! (-> s5-0 2) 1.0) + (let ((f0-6 (vector-dot (-> s5-0 3) (-> s5-0 2)))) + (when (>= f0-6 0.0) + (when (or (< (the-as int (-> s5-0 0 x)) 0) (< (-> s5-0 0 y) f0-6)) + (set! (-> s5-0 0 x) (the-as float s3-0)) + (set! (-> s5-0 0 y) f0-6) + (set! (-> s5-0 1 quad) (-> s5-0 4 quad))))))) + (when (>= (the-as int (-> s5-0 0 x)) 0) + (set! (-> this dest-pos quad) (-> s5-0 1 quad)) + (set! (-> this dest-pos y) (-> this root trans y)) + (return #t)))) (else - (let* ((s3-1 (-> this path curve num-cverts)) - (s4-1 (new 'stack-no-clear 'vector)) - (s5-1 (rand-vu-int-count s3-1)) - ) - (while (nonzero? s3-1) - (+! s3-1 -1) - (eval-path-curve-div! (-> this path) s4-1 (the float s5-1) 'interp) - (when (>= (vector-vector-xz-distance s4-1 (-> this root trans)) 10240.0) - (set! (-> this dest-pos quad) (-> s4-1 quad)) - (set! (-> this dest-pos y) (-> this root trans y)) - (set! (-> this path-index) s5-1) - (return #t) - ) - ) - ) - ) - ) - #f - ) + (let* ((s3-1 (-> this path curve num-cverts)) + (s4-1 (new 'stack-no-clear 'vector)) + (s5-1 (rand-vu-int-count s3-1))) + (while (nonzero? s3-1) + (+! s3-1 -1) + (eval-path-curve-div! (-> this path) s4-1 (the float s5-1) 'interp) + (when (>= (vector-vector-xz-distance s4-1 (-> this root trans)) 10240.0) + (set! (-> this dest-pos quad) (-> s4-1 quad)) + (set! (-> this dest-pos y) (-> this root trans y)) + (set! (-> this path-index) s5-1) + (return #t)))))) + #f) (defmethod puffer-method-20 ((this puffer) (arg0 vector)) (if (-> this attacking?) - (set! (-> this travel-speed) - (seek-with-smooth (-> this travel-speed) 30720.0 (* 8192.0 (seconds-per-frame)) 0.125 40.96) - ) - (set! (-> this travel-speed) - (seek-with-smooth (-> this travel-speed) 18432.0 (* 2048.0 (seconds-per-frame)) 0.125 40.96) - ) - ) + (set! (-> this travel-speed) + (seek-with-smooth (-> this travel-speed) 30720.0 (* 8192.0 (seconds-per-frame)) 0.125 40.96)) + (set! (-> this travel-speed) + (seek-with-smooth (-> this travel-speed) 18432.0 (* 2048.0 (seconds-per-frame)) 0.125 40.96))) (nav-control-method-27 (-> this nav)) (nav-control-method-28 (-> this nav) (the-as collide-kind -1)) (nav-control-method-13 (-> this nav) arg0 (-> this root transv)) (let ((f30-0 (* (vector-xz-length (-> this nav travel)) (-> *display* frames-per-second)))) (let ((f0-11 (atan (-> this nav travel x) (-> this nav travel z))) - (s5-1 (new 'stack-no-clear 'vector)) - ) - (if (< (-> this travel-speed) f30-0) - (set! f30-0 (-> this travel-speed)) - ) + (s5-1 (new 'stack-no-clear 'vector))) + (if (< (-> this travel-speed) f30-0) (set! f30-0 (-> this travel-speed))) (set! (-> s5-1 quad) (-> this nav travel quad)) (set! (-> this travel-ry) - (deg-seek-smooth (-> this travel-ry) f0-11 (* (-> this travel-turn-speed) (seconds-per-frame)) 0.125) - ) + (deg-seek-smooth (-> this travel-ry) f0-11 (* (-> this travel-turn-speed) (seconds-per-frame)) 0.125)) (let* ((f0-16 (* f30-0 (seconds-per-frame))) (f28-0 (* 150.0 f0-16)) - (f26-0 -1.0) - ) + (f26-0 -1.0)) (let ((s4-0 (new 'stack-no-clear 'vector))) (set-vector! s4-0 (* (sin (-> this travel-ry)) f28-0) 0.0 (* (cos (-> this travel-ry)) f28-0) 1.0) (let ((s3-1 (new 'stack 'clip-travel-vector-to-mesh-return-info))) (set! (-> this nav travel quad) (-> s4-0 quad)) (nav-control-method-24 (-> this nav) f28-0 s3-1) - (if (-> s3-1 found-boundary) - (set! f26-0 (vector-vector-xz-distance (-> s3-1 intersection) (-> this root trans))) - ) - ) + (if (-> s3-1 found-boundary) (set! f26-0 (vector-vector-xz-distance (-> s3-1 intersection) (-> this root trans))))) (let ((s3-2 (new 'stack-no-clear 'matrix))) (when (>= (nav-control-method-23 (-> this nav) s4-0 (the-as check-vector-collision-with-nav-spheres-info s3-2)) 0.0) (let ((f0-26 (vector-vector-xz-distance (-> s3-2 vector 1) (-> this root trans)))) - (if (or (< f26-0 0.0) (< f0-26 f26-0)) - (set! f26-0 f0-26) - ) - ) - ) - ) - ) + (if (or (< f26-0 0.0) (< f0-26 f26-0)) (set! f26-0 f0-26)))))) (when (>= f26-0 0.0) (let ((f26-1 (- 1.0 (/ f26-0 f28-0)))) - (+! (-> this travel-ry) (* f26-1 (deg- (atan (-> s5-1 x) (-> s5-1 z)) (-> this travel-ry)))) - ) - ) - ) - ) - (set-vector! - (-> this root transv) - (* (sin (-> this travel-ry)) f30-0) - (-> this root transv y) - (* (cos (-> this travel-ry)) f30-0) - 1.0 - ) - ) + (+! (-> this travel-ry) (* f26-1 (deg- (atan (-> s5-1 x) (-> s5-1 z)) (-> this travel-ry)))))))) + (set-vector! (-> this root transv) + (* (sin (-> this travel-ry)) f30-0) + (-> this root transv y) + (* (cos (-> this travel-ry)) f30-0) + 1.0)) (set! (-> this facing-ry) - (deg-seek-smooth (-> this facing-ry) (-> this travel-ry) (* 32768.0 (seconds-per-frame)) 0.125) - ) + (deg-seek-smooth (-> this facing-ry) (-> this travel-ry) (* 32768.0 (seconds-per-frame)) 0.125)) (puffer-method-27 this) - (none) - ) + (none)) (defmethod puffer-method-27 ((this puffer)) (let ((f30-0 (-> this patrol-bottom-y))) (cond ((-> this attacking?) (let ((f30-1 (-> this attack-bottom-y))) - (set! (-> this targ-trans-y) (fmax (fmin (+ 4096.0 (-> (target-pos 0) y)) (-> this top-y)) f30-1)) - ) + (set! (-> this targ-trans-y) (fmax (fmin (+ 4096.0 (-> (target-pos 0) y)) (-> this top-y)) f30-1))) (set! (-> this root transv y) - (* 0.125 (-> *display* frames-per-second) (- (-> this targ-trans-y) (-> this root trans y))) - ) + (* 0.125 (-> *display* frames-per-second) (- (-> this targ-trans-y) (-> this root trans y)))) (when (< 6144.0 (fabs (-> this root transv y))) - (if (>= (-> this root transv y) 0.0) - (set! (-> this root transv y) 6144.0) - (set! (-> this root transv y) -6144.0) - ) - ) - ) + (if (>= (-> this root transv y) 0.0) (set! (-> this root transv y) 6144.0) (set! (-> this root transv y) -6144.0)))) ((< (-> this root trans y) f30-0) (set! (-> this targ-trans-y) (* 0.5 (+ (-> this top-y) (-> this patrol-bottom-y)))) (set! (-> this root transv y) - (* 0.125 (-> *display* frames-per-second) (- (-> this targ-trans-y) (-> this root trans y))) - ) + (* 0.125 (-> *display* frames-per-second) (- (-> this targ-trans-y) (-> this root trans y)))) (when (< 2048.0 (fabs (-> this root transv y))) - (if (>= (-> this root transv y) 0.0) - (set! (-> this root transv y) 2048.0) - (set! (-> this root transv y) -2048.0) - ) - ) - ) + (if (>= (-> this root transv y) 0.0) (set! (-> this root transv y) 2048.0) (set! (-> this root transv y) -2048.0)))) (else - (let ((f0-22 (- (-> this targ-trans-y) (-> this root trans y)))) - (when (or (and (>= f0-22 0.0) (< (-> this acc-y) 0.0)) (and (< f0-22 0.0) (>= (-> this acc-y) 0.0))) - (when (not (-> this attacking?)) - (cond - ((>= (-> this acc-y) 0.0) - (if (< f30-0 (-> this targ-trans-y)) - (set! (-> this targ-trans-y) (rand-vu-float-range f30-0 (-> this targ-trans-y))) - ) - ) - (else - (if (< (-> this targ-trans-y) (-> this top-y)) - (set! (-> this targ-trans-y) (rand-vu-float-range (-> this targ-trans-y) (-> this top-y))) - ) - ) - ) - ) - (set! (-> this acc-y) (- (-> this acc-y))) - ) - ) - (+! (-> this root transv y) (* (-> this acc-y) (seconds-per-frame))) - (let ((f0-37 (* (-> this root transv y) (seconds-per-frame)))) - (cond - ((>= f0-37 0.0) - (let ((f1-27 (* 0.0625 (- (-> this top-y) (-> this root trans y))))) - (if (< f1-27 f0-37) - (set! (-> this root transv y) (* f1-27 (-> *display* frames-per-second))) - ) - ) - ) - (else - (let ((f1-29 (* 0.0625 (- f30-0 (-> this root trans y))))) - (if (< f0-37 f1-29) - (set! (-> this root transv y) (* f1-29 (-> *display* frames-per-second))) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (let ((f0-22 (- (-> this targ-trans-y) (-> this root trans y)))) + (when (or (and (>= f0-22 0.0) (< (-> this acc-y) 0.0)) (and (< f0-22 0.0) (>= (-> this acc-y) 0.0))) + (when (not (-> this attacking?)) + (cond + ((>= (-> this acc-y) 0.0) + (if (< f30-0 (-> this targ-trans-y)) (set! (-> this targ-trans-y) (rand-vu-float-range f30-0 (-> this targ-trans-y))))) + (else + (if (< (-> this targ-trans-y) (-> this top-y)) + (set! (-> this targ-trans-y) (rand-vu-float-range (-> this targ-trans-y) (-> this top-y))))))) + (set! (-> this acc-y) (- (-> this acc-y))))) + (+! (-> this root transv y) (* (-> this acc-y) (seconds-per-frame))) + (let ((f0-37 (* (-> this root transv y) (seconds-per-frame)))) + (cond + ((>= f0-37 0.0) + (let ((f1-27 (* 0.0625 (- (-> this top-y) (-> this root trans y))))) + (if (< f1-27 f0-37) (set! (-> this root transv y) (* f1-27 (-> *display* frames-per-second)))))) + (else + (let ((f1-29 (* 0.0625 (- f30-0 (-> this root trans y))))) + (if (< f0-37 f1-29) (set! (-> this root transv y) (* f1-29 (-> *display* frames-per-second))))))))))) + (none)) (defstate puffer-idle (puffer) :event puffer-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self attacking?) #f) - (shut-down! (-> self neck)) - (let ((v1-5 (-> self draw shadow-ctrl))) - (logior! (-> v1-5 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - :code (behavior () - (loop - (if (and (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (logtest? (-> self draw status) (draw-status was-drawn)) - (time-elapsed? (-> self state-time) (seconds 0.2)) - ) - (go puffer-patrol) - ) - (puffer-method-26 self) - (suspend) - ) - ) - :post puffer-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self attacking?) #f) + (shut-down! (-> self neck)) + (let ((v1-5 (-> self draw shadow-ctrl))) (logior! (-> v1-5 settings flags) (shadow-flags disable-draw))) + 0) + :code + (behavior () + (loop + (if (and (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (logtest? (-> self draw status) (draw-status was-drawn)) + (time-elapsed? (-> self state-time) (seconds 0.2))) + (go puffer-patrol)) + (puffer-method-26 self) + (suspend))) + :post puffer-post) (defstate puffer-patrol (puffer) :event puffer-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self attacking?) #f) - (set! (-> self reaction-delay) (rand-vu-int-range (seconds 0.1) (seconds 0.35))) - (if (not (puffer-method-23 self #f)) - (go puffer-idle) - ) - (set-time! (-> self picked-point-time)) - (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))) - (set-time! (-> self last-on-screen-time)) - ) - :trans (behavior () - (if (and (not (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - ) - (time-elapsed? (-> self state-time) (seconds 3)) - ) - (go puffer-idle) - ) - (cond - ((logtest? (-> self draw status) (draw-status was-drawn)) - (set-time! (-> self last-on-screen-time)) - ) - (else - (if (time-elapsed? (-> self last-on-screen-time) (seconds 8)) - (go puffer-idle) - ) - ) - ) - (when (puffer-method-22 self) - (when (puffer-method-23 self #t) - (set-time! (-> self picked-point-time)) - (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))) - ) - ) - (if (and (time-elapsed? (-> self state-time) (-> self reaction-delay)) - (puffer-method-25 self (-> self notice-dist)) - ) - (go puffer-attack) - ) - (when (or (< (vector-vector-xz-distance (-> self root trans) (-> self dest-pos)) 8192.0) - (time-elapsed? (-> self picked-point-time) (-> self pick-new-point-delay)) - ) - (when (puffer-method-23 self #f) - (set-time! (-> self picked-point-time)) - (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))) - ) - ) - (puffer-method-20 self (-> self dest-pos)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set-vector! gp-0 (sin (-> self facing-ry)) 0.0 (cos (-> self facing-ry)) 1.0) - (set-heading-vec-clear-roll-pitch! (-> self root) gp-0) - ) - (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) - (puffer-method-28 self) - ) - :code (behavior () - (loop - (puffer-method-26 self) - (suspend) - ) - ) - :post puffer-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self attacking?) #f) + (set! (-> self reaction-delay) (rand-vu-int-range (seconds 0.1) (seconds 0.35))) + (if (not (puffer-method-23 self #f)) (go puffer-idle)) + (set-time! (-> self picked-point-time)) + (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))) + (set-time! (-> self last-on-screen-time))) + :trans + (behavior () + (if (and (not (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))))) + (time-elapsed? (-> self state-time) (seconds 3))) + (go puffer-idle)) + (cond + ((logtest? (-> self draw status) (draw-status was-drawn)) (set-time! (-> self last-on-screen-time))) + (else (if (time-elapsed? (-> self last-on-screen-time) (seconds 8)) (go puffer-idle)))) + (when (puffer-method-22 self) + (when (puffer-method-23 self #t) + (set-time! (-> self picked-point-time)) + (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))))) + (if (and (time-elapsed? (-> self state-time) (-> self reaction-delay)) (puffer-method-25 self (-> self notice-dist))) + (go puffer-attack)) + (when (or (< (vector-vector-xz-distance (-> self root trans) (-> self dest-pos)) 8192.0) + (time-elapsed? (-> self picked-point-time) (-> self pick-new-point-delay))) + (when (puffer-method-23 self #f) + (set-time! (-> self picked-point-time)) + (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))))) + (puffer-method-20 self (-> self dest-pos)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set-vector! gp-0 (sin (-> self facing-ry)) 0.0 (cos (-> self facing-ry)) 1.0) + (set-heading-vec-clear-roll-pitch! (-> self root) gp-0)) + (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) + (puffer-method-28 self)) + :code + (behavior () + (loop + (puffer-method-26 self) + (suspend))) + :post puffer-post) (defstate puffer-attack (puffer) :event puffer-default-event-handler - :enter (behavior () - (set! (-> self attacking?) #t) - (set-time! (-> self state-time)) - (set! (-> self travel-turn-speed) 21845.334) - ) - :exit (behavior () - (shut-down! (-> self neck)) - (set! (-> self attacking?) #f) - (set! (-> self travel-turn-speed) 16384.0) - ) - :trans (behavior () - (if (not (puffer-method-25 self (-> self give-up-dist))) - (go puffer-patrol) - ) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - (set-target! (-> self neck) (target-pos 5)) - ) - (puffer-method-20 self (target-pos 0)) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (set-vector! gp-2 (sin (-> self facing-ry)) 0.0 (cos (-> self facing-ry)) 1.0) - (set-heading-vec-clear-roll-pitch! (-> self root) gp-2) - ) - (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) - (puffer-method-28 self) - ) - :code (behavior () - (loop - (puffer-method-26 self) - (suspend) - ) - ) - :post puffer-post - ) + :enter + (behavior () + (set! (-> self attacking?) #t) + (set-time! (-> self state-time)) + (set! (-> self travel-turn-speed) 21845.334)) + :exit + (behavior () + (shut-down! (-> self neck)) + (set! (-> self attacking?) #f) + (set! (-> self travel-turn-speed) 16384.0)) + :trans + (behavior () + (if (not (puffer-method-25 self (-> self give-up-dist))) (go puffer-patrol)) + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)) + (set-target! (-> self neck) (target-pos 5))) + (puffer-method-20 self (target-pos 0)) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (set-vector! gp-2 (sin (-> self facing-ry)) 0.0 (cos (-> self facing-ry)) 1.0) + (set-heading-vec-clear-roll-pitch! (-> self root) gp-2)) + (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) + (puffer-method-28 self)) + :code + (behavior () + (loop + (puffer-method-26 self) + (suspend))) + :post puffer-post) (defstate puffer-die (puffer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (the-as uint (case message - (('death-start) - (the-as uint (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0)) - ) - (('death-end) - (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status hidden))))) - (set! (-> self draw status) (the-as draw-status v0-0)) - v0-0 - ) - ) - ) - ) - ) - :code (behavior () - (cleanup-for-death self) - (shut-down! (-> self neck)) - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.075)) - (clear-collide-with-as (-> self root)) - (ja-no-eval :group! puffer-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (the-as uint + (case message + (('death-start) (the-as uint (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0))) + (('death-end) + (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status hidden))))) + (set! (-> self draw status) (the-as draw-status v0-0)) + v0-0))))) + :code + (behavior () + (cleanup-for-death self) + (shut-down! (-> self neck)) + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.075)) + (clear-collide-with-as (-> self root)) + (ja-no-eval :group! puffer-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + :post ja-post) (defmethod puffer-method-21 ((this puffer)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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 3) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -671,44 +434,33 @@ (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 5) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s4-0 s3-1) - ) + (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) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set! (-> s3-2 transform-index) 9) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 3072.0) - (append-prim s4-0 s3-2) - ) - ) + (append-prim s4-0 s3-2))) (set! (-> s5-0 nav-radius) 12288.0) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (puffer-method-30 this) 0 - (none) - ) + (none)) (defmethod flip-look! ((this puffer) (arg0 symbol)) (when (!= arg0 (-> this look-mean?)) (set! (-> this look-mean?) arg0) - (if arg0 - (lods-assign! (-> this draw) (-> this mean-look)) - (lods-assign! (-> this draw) (-> this nice-look)) - ) - ) - (none) - ) + (if arg0 (lods-assign! (-> this draw) (-> this mean-look)) (lods-assign! (-> this draw) (-> this nice-look)))) + (none)) (defmethod puffer-method-30 ((this puffer)) (when (!= (-> this cprims-type) 1) @@ -720,11 +472,7 @@ (set! (-> v0-0 y) 0.0) (set! (-> v0-0 z) 0.0) (set! (-> v0-0 w) 4096.0) - v0-0 - ) - ) - ) - ) + v0-0)))) (defmethod puffer-method-31 ((this puffer)) (when (!= (-> this cprims-type) 2) @@ -736,320 +484,174 @@ (set! (-> v0-0 y) 0.0) (set! (-> v0-0 z) 0.0) (set! (-> v0-0 w) 7372.8) - v0-0 - ) - ) - ) - ) + v0-0)))) (defmethod puffer-method-26 ((this puffer)) (let ((f30-0 (get-current-phase (-> this sync)))) - (if (and (< 0.025 f30-0) (< f30-0 0.525)) - (flip-look! this #f) - (flip-look! this #t) - ) + (if (and (< 0.025 f30-0) (< f30-0 0.525)) (flip-look! this #f) (flip-look! this #t)) (cond ((< f30-0 0.5) (cond - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 9) - ) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 9)) (cond ((-> this attacking?) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 11)) - num-func-identity - ) - (set! (-> s5-0 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 11)) num-func-identity) + (set! (-> s5-0 frame-num) 0.0)) (let ((a0-10 (-> this 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!) - ) - ) + (joint-control-channel-group! a0-10 (the-as art-joint-anim #f) num-func-seek!))) ((ja-done? 0) (let ((v1-28 (-> this skel root-channel 0))) (set! (-> v1-28 num-func) num-func-identity) - (set! (-> v1-28 frame-num) 0.0) - ) + (set! (-> v1-28 frame-num) 0.0)) (let ((a0-13 (-> this skel root-channel 0))) (set! (-> a0-13 param 0) (the float (+ (-> a0-13 frame-group data 0 length) -1))) (set! (-> a0-13 param 1) 1.0) - (joint-control-channel-group! a0-13 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-13 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-14 (-> this 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!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 11) - ) + (let ((a0-14 (-> this 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!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 11)) (cond ((not (-> this attacking?)) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 9)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 9)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (let ((a0-21 (-> this skel root-channel 0))) (set! (-> a0-21 param 0) (the float (+ (-> a0-21 frame-group data 0 length) -1))) (set! (-> a0-21 param 1) 1.0) - (joint-control-channel-group! a0-21 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-21 (the-as art-joint-anim #f) num-func-seek!))) ((ja-done? 0) (let ((v1-64 (-> this skel root-channel 0))) (set! (-> v1-64 num-func) num-func-identity) - (set! (-> v1-64 frame-num) 0.0) - ) + (set! (-> v1-64 frame-num) 0.0)) (let ((a0-24 (-> this skel root-channel 0))) (set! (-> a0-24 param 0) (the float (+ (-> a0-24 frame-group data 0 length) -1))) (set! (-> a0-24 param 1) 1.0) - (joint-control-channel-group! a0-24 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-24 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-25 (-> this skel root-channel 0))) - (set! (-> a0-25 param 0) (the float (+ (-> a0-25 frame-group data 0 length) -1))) - (set! (-> a0-25 param 1) 1.0) - (joint-control-channel-group-eval! a0-25 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 14) - ) + (let ((a0-25 (-> this skel root-channel 0))) + (set! (-> a0-25 param 0) (the float (+ (-> a0-25 frame-group data 0 length) -1))) + (set! (-> a0-25 param 1) 1.0) + (joint-control-channel-group-eval! a0-25 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 14)) (cond ((ja-done? 0) (ja-channel-push! 1 (seconds 0.2)) (cond ((-> this attacking?) (let ((s5-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim (-> this draw art-group data 11)) - num-func-identity - ) - (set! (-> s5-2 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-2 (the-as art-joint-anim (-> this draw art-group data 11)) num-func-identity) + (set! (-> s5-2 frame-num) 0.0))) (else - (let ((s5-3 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-3 - (the-as art-joint-anim (-> this draw art-group data 9)) - num-func-identity - ) - (set! (-> s5-3 frame-num) 0.0) - ) - ) - ) + (let ((s5-3 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-3 (the-as art-joint-anim (-> this draw art-group data 9)) num-func-identity) + (set! (-> s5-3 frame-num) 0.0)))) (let ((a0-34 (-> this skel root-channel 0))) (set! (-> a0-34 param 0) (the float (+ (-> a0-34 frame-group data 0 length) -1))) (set! (-> a0-34 param 1) 1.0) - (joint-control-channel-group! a0-34 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-34 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-35 (-> this skel root-channel 0))) - (set! (-> a0-35 param 0) (the float (+ (-> a0-35 frame-group data 0 length) -1))) - (set! (-> a0-35 param 1) 1.0) - (joint-control-channel-group-eval! a0-35 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) + (let ((a0-35 (-> this skel root-channel 0))) + (set! (-> a0-35 param 0) (the float (+ (-> a0-35 frame-group data 0 length) -1))) + (set! (-> a0-35 param 1) 1.0) + (joint-control-channel-group-eval! a0-35 (the-as art-joint-anim #f) num-func-seek!))))) (else - (ja-channel-push! 1 (seconds 0.2)) - (let ((s5-4 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-4 - (the-as art-joint-anim (-> this draw art-group data 14)) - num-func-identity - ) - (set! (-> s5-4 frame-num) 0.0) - ) - (let ((a0-38 (-> this 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! a0-38 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 10) - ) + (ja-channel-push! 1 (seconds 0.2)) + (let ((s5-4 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-4 (the-as art-joint-anim (-> this draw art-group data 14)) num-func-identity) + (set! (-> s5-4 frame-num) 0.0)) + (let ((a0-38 (-> this 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! a0-38 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 10)) (cond ((-> this attacking?) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-5 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-5 - (the-as art-joint-anim (-> this draw art-group data 12)) - num-func-identity - ) - (set! (-> s5-5 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-5 (the-as art-joint-anim (-> this draw art-group data 12)) num-func-identity) + (set! (-> s5-5 frame-num) 0.0)) (let ((a0-45 (-> this skel root-channel 0))) (set! (-> a0-45 param 0) (the float (+ (-> a0-45 frame-group data 0 length) -1))) (set! (-> a0-45 param 1) 1.0) - (joint-control-channel-group! a0-45 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-45 (the-as art-joint-anim #f) num-func-seek!))) ((ja-done? 0) (let ((v1-142 (-> this skel root-channel 0))) (set! (-> v1-142 num-func) num-func-identity) - (set! (-> v1-142 frame-num) 0.0) - ) + (set! (-> v1-142 frame-num) 0.0)) (let ((a0-48 (-> this skel root-channel 0))) (set! (-> a0-48 param 0) (the float (+ (-> a0-48 frame-group data 0 length) -1))) (set! (-> a0-48 param 1) 1.0) - (joint-control-channel-group! a0-48 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-48 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-49 (-> this skel root-channel 0))) - (set! (-> a0-49 param 0) (the float (+ (-> a0-49 frame-group data 0 length) -1))) - (set! (-> a0-49 param 1) 1.0) - (joint-control-channel-group-eval! a0-49 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 12) - ) + (let ((a0-49 (-> this skel root-channel 0))) + (set! (-> a0-49 param 0) (the float (+ (-> a0-49 frame-group data 0 length) -1))) + (set! (-> a0-49 param 1) 1.0) + (joint-control-channel-group-eval! a0-49 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 12)) (cond ((not (-> this attacking?)) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-6 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-6 - (the-as art-joint-anim (-> this draw art-group data 10)) - num-func-identity - ) - (set! (-> s5-6 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-6 (the-as art-joint-anim (-> this draw art-group data 10)) num-func-identity) + (set! (-> s5-6 frame-num) 0.0)) (let ((a0-56 (-> this skel root-channel 0))) (set! (-> a0-56 param 0) (the float (+ (-> a0-56 frame-group data 0 length) -1))) (set! (-> a0-56 param 1) 1.0) - (joint-control-channel-group! a0-56 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-56 (the-as art-joint-anim #f) num-func-seek!))) ((ja-done? 0) (let ((v1-178 (-> this skel root-channel 0))) (set! (-> v1-178 num-func) num-func-identity) - (set! (-> v1-178 frame-num) 0.0) - ) + (set! (-> v1-178 frame-num) 0.0)) (let ((a0-59 (-> this skel root-channel 0))) (set! (-> a0-59 param 0) (the float (+ (-> a0-59 frame-group data 0 length) -1))) (set! (-> a0-59 param 1) 1.0) - (joint-control-channel-group! a0-59 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-59 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-60 (-> this skel root-channel 0))) - (set! (-> a0-60 param 0) (the float (+ (-> a0-60 frame-group data 0 length) -1))) - (set! (-> a0-60 param 1) 1.0) - (joint-control-channel-group-eval! a0-60 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 13) - ) + (let ((a0-60 (-> this skel root-channel 0))) + (set! (-> a0-60 param 0) (the float (+ (-> a0-60 frame-group data 0 length) -1))) + (set! (-> a0-60 param 1) 1.0) + (joint-control-channel-group-eval! a0-60 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 13)) (cond ((ja-done? 0) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-7 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-7 - (the-as art-joint-anim (-> this draw art-group data 10)) - num-func-identity - ) - (set! (-> s5-7 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-7 (the-as art-joint-anim (-> this draw art-group data 10)) num-func-identity) + (set! (-> s5-7 frame-num) 0.0)) (let ((a0-68 (-> this skel root-channel 0))) (set! (-> a0-68 param 0) (the float (+ (-> a0-68 frame-group data 0 length) -1))) (set! (-> a0-68 param 1) 1.0) - (joint-control-channel-group! a0-68 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-68 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-69 (-> this skel root-channel 0))) - (set! (-> a0-69 param 0) (the float (+ (-> a0-69 frame-group data 0 length) -1))) - (set! (-> a0-69 param 1) 1.0) - (joint-control-channel-group-eval! a0-69 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) + (let ((a0-69 (-> this skel root-channel 0))) + (set! (-> a0-69 param 0) (the float (+ (-> a0-69 frame-group data 0 length) -1))) + (set! (-> a0-69 param 1) 1.0) + (joint-control-channel-group-eval! a0-69 (the-as art-joint-anim #f) num-func-seek!))))) (else - (ja-channel-push! 1 (seconds 0.2)) - (let ((s5-8 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-8 - (the-as art-joint-anim (-> this draw art-group data 13)) - num-func-identity - ) - (set! (-> s5-8 frame-num) 0.0) - ) - (let ((a0-72 (-> this skel root-channel 0))) - (set! (-> a0-72 param 0) (the float (+ (-> a0-72 frame-group data 0 length) -1))) - (set! (-> a0-72 param 1) 1.0) - (joint-control-channel-group! a0-72 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - (case (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (((-> this draw art-group data 10) (-> this draw art-group data 12)) - (puffer-method-31 this) - ) - (else - (puffer-method-30 this) - ) - ) - (none) - ) + (ja-channel-push! 1 (seconds 0.2)) + (let ((s5-8 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-8 (the-as art-joint-anim (-> this draw art-group data 13)) num-func-identity) + (set! (-> s5-8 frame-num) 0.0)) + (let ((a0-72 (-> this skel root-channel 0))) + (set! (-> a0-72 param 0) (the float (+ (-> a0-72 frame-group data 0 length) -1))) + (set! (-> a0-72 param 1) 1.0) + (joint-control-channel-group! a0-72 (the-as art-joint-anim #f) num-func-seek!))))) + (case (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) + (((-> this draw art-group data 10) (-> this draw art-group data 12)) (puffer-method-31 this)) + (else (puffer-method-30 this))) + (none)) (defmethod relocate ((this puffer) (arg0 int)) - (if (nonzero? (-> this neck)) - (&+! (-> this neck) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this neck)) (&+! (-> this neck) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this puffer) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -1075,46 +677,32 @@ (nav-control-method-26 (-> this nav)) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0)) - (if (<= (-> this path curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) + (if (<= (-> this path curve num-cverts) 0) (go process-drawable-art-error "no path")) (set! (-> this buddy) (the-as process-drawable (entity-actor-lookup arg0 'alt-actor 0))) (ja-channel-set! 1) (let ((a0-21 (-> this skel root-channel 0))) (set! (-> a0-21 param 0) (the float (+ (-> a0-21 frame-group data 0 length) -1))) (set! (-> a0-21 param 1) 1.0) - (joint-control-channel-group! a0-21 (the-as art-joint-anim #f) num-func-seek!) - ) + (joint-control-channel-group! a0-21 (the-as art-joint-anim #f) num-func-seek!)) (let ((s4-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-0 - (the-as art-joint-anim (-> this draw art-group data 9)) - num-func-identity - ) - (set! (-> s4-0 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-0 (the-as art-joint-anim (-> this draw art-group data 9)) num-func-identity) + (set! (-> s4-0 frame-num) 0.0)) (set! (-> this facing-ry) (quaternion-y-angle (-> this root quat))) (set! (-> this travel-ry) (-> this facing-ry)) (set! (-> this travel-speed) 18432.0) (vector-reset! (-> this root transv)) (set! (-> this patrol-bottom-y) (-> this root trans y)) (let ((f28-0 8192.0) - (f30-0 -8192.0) - ) + (f30-0 -8192.0)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-54 (res-lump-data arg0 'distance (pointer float) :tag-ptr (& sv-16)))) (when v1-54 (set! f28-0 (-> v1-54 0)) - (set! f30-0 (-> v1-54 1)) - ) - ) + (set! f30-0 (-> v1-54 1)))) (set! (-> this top-y) (+ (-> this patrol-bottom-y) f28-0)) - (set! (-> this attack-bottom-y) (+ (-> this patrol-bottom-y) f30-0)) - ) + (set! (-> this attack-bottom-y) (+ (-> this patrol-bottom-y) f30-0))) (set! (-> this root trans y) (rand-vu-float-range (-> this patrol-bottom-y) (-> this top-y))) (set! (-> this targ-trans-y) (-> this root trans y)) (set! (-> this acc-y) 2048.0) @@ -1125,9 +713,7 @@ (set! (-> v1-59 nose) (the-as uint 2)) (set! (-> v1-59 ear) (the-as uint 0)) (set! (-> v1-59 max-dist) 102400.0) - (set! (-> v1-59 ignore-angle) 16384.0) - ) + (set! (-> v1-59 ignore-angle) 16384.0)) (update-transforms! (-> this root)) (go puffer-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/qbert-plat.gc b/goal_src/jak1/levels/sunken/qbert-plat.gc index add62cfac6..05dd5d2ab4 100644 --- a/goal_src/jak1/levels/sunken/qbert-plat.gc +++ b/goal_src/jak1/levels/sunken/qbert-plat.gc @@ -1,134 +1,106 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/game/task/hint-control.gc") (require "engine/camera/pov-camera-h.gc") (require "engine/common-obs/rigid-body.gc") - -;; name: qbert-plat.gc -;; name in dgo: qbert-plat -;; dgos: L1, SUN, SUNKEN - (declare-type qbert-plat-master process-drawable) + (declare-type qbert-plat rigid-body-platform) ;; DECOMP BEGINS -(deftype qbert-plat-on (process-drawable) - () - ) +(deftype qbert-plat-on (process-drawable) ()) - -(defskelgroup *qbert-plat-on-sg* qbert-plat-on qbert-plat-on-lod0-jg qbert-plat-on-idle-ja - ((qbert-plat-on-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -2 0 4.5) - ) +(defskelgroup *qbert-plat-on-sg* + qbert-plat-on + qbert-plat-on-lod0-jg + qbert-plat-on-idle-ja + ((qbert-plat-on-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -2 0 4.5)) (deftype qbert-plat (rigid-body-platform) - ((anchor-point vector :inline) - (plat-id int32) - (on? symbol) - (player-is-riding? symbol) - (master entity-actor) - ) + ((anchor-point vector :inline) + (plat-id int32) + (on? symbol) + (player-is-riding? symbol) + (master entity-actor)) (:states - qbert-plat-on-die - qbert-plat-on-mimic - qbert-plat-wait-for-master - ) - ) - - -(defskelgroup *qbert-plat-sg* qbert-plat qbert-plat-lod0-jg qbert-plat-idle-ja - ((qbert-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -2 0 4.5) - ) - -(define *qbert-plat-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 1) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 4 - :mass 4.0 - :inertial-tensor-x (meters 4) - :inertial-tensor-y (meters 4) - :inertial-tensor-z (meters 4) - :idle-distance (meters 70) - :platform #t - :sound-name #f - ) - ) + qbert-plat-on-die + qbert-plat-on-mimic + qbert-plat-wait-for-master)) + +(defskelgroup *qbert-plat-sg* + qbert-plat + qbert-plat-lod0-jg + qbert-plat-idle-ja + ((qbert-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -2 0 4.5)) + +(define *qbert-plat-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 4 + :mass 4.0 + :inertial-tensor-x (meters 4) + :inertial-tensor-y (meters 4) + :inertial-tensor-z (meters 4) + :idle-distance (meters 70) + :platform #t + :sound-name #f)) (deftype qbert-plat-master (process-drawable) - ((last-plat-triggered int32) - (plat-states uint32) - (plat-states-needed-to-open-door uint32) - (player-in-bounds? symbol) - (player-in-water? symbol) - (play-door-cam? symbol) - (puzzle-beaten? symbol) - (door entity-actor) - (door-plat entity-actor) - (bounds-start vector :inline) - (bounds-end vector :inline) - ) + ((last-plat-triggered int32) + (plat-states uint32) + (plat-states-needed-to-open-door uint32) + (player-in-bounds? symbol) + (player-in-water? symbol) + (play-door-cam? symbol) + (puzzle-beaten? symbol) + (door entity-actor) + (door-plat entity-actor) + (bounds-start vector :inline) + (bounds-end vector :inline)) (:methods - (plat-state-set? (_type_ uint) symbol) - ) - (:states - (qbert-plat-master-do-door symbol) - qbert-plat-master-idle - qbert-plat-master-wait-for-door - ) - ) - + (plat-state-set? (_type_ uint) symbol)) + (:states (qbert-plat-master-do-door symbol) + qbert-plat-master-idle + qbert-plat-master-wait-for-door)) (defstate qbert-plat-on-mimic (qbert-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (go qbert-plat-on-die) - ) - ) - ) - :code (behavior () - (set-vector! (-> self draw color-emissive) 0.0 0.0 1.0 0.0) - (loop - (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) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) (go qbert-plat-on-die)))) + :code + (behavior () + (set-vector! (-> self draw color-emissive) 0.0 0.0 1.0 0.0) + (loop + (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))) + :post ja-post) (defstate qbert-plat-on-die (qbert-plat) - :code (behavior () - '() - ) - ) + :code + (behavior () + '())) (defbehavior qbert-plat-on-init-by-other qbert-plat ((arg0 entity-actor) (arg1 qbert-plat)) (set! (-> self entity) arg0) @@ -142,150 +114,89 @@ (ja-channel-set! 1) (ja :group! qbert-plat-idle-ja :num! min) (go qbert-plat-on-mimic) - (none) - ) + (none)) (defbehavior qbert-plat-event-handler qbert-plat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('notify) - (rigid-body-platform-method-32 self) - ) - (else - (rigid-body-platform-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (('notify) (rigid-body-platform-method-32 self)) + (else (rigid-body-platform-event-handler arg0 arg1 arg2 arg3)))) (defmethod rigid-body-platform-method-33 ((this qbert-plat)) (let* ((a1-0 (-> this master)) - (v1-0 (if a1-0 - (-> a1-0 extra process) - ) - ) - ) - (if v1-0 - (send-event v1-0 'trigger (-> this plat-id)) - ) - ) - ) + (v1-0 (if a1-0 (-> a1-0 extra process)))) + (if v1-0 (send-event v1-0 'trigger (-> this plat-id))))) (defmethod rigid-body-platform-method-32 ((this qbert-plat)) (let* ((v1-0 (-> this master)) - (a0-1 (if v1-0 - (-> v1-0 extra process) - ) - ) - ) + (a0-1 (if v1-0 (-> 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 (-> this plat-id))))) (when (!= v1-3 (-> this on?)) (set! (-> this on?) v1-3) (cond - (v1-3 - (process-spawn qbert-plat-on (-> this entity) this :to this) - (sound-play "plat-light-on") - ) + (v1-3 (process-spawn qbert-plat-on (-> this entity) this :to this) (sound-play "plat-light-on")) (else - (let ((gp-2 (-> this child))) - (while gp-2 - (send-event (ppointer->process gp-2) 'die) - (set! gp-2 (-> gp-2 0 brother)) - ) - ) - (sound-play "plat-light-off") - ) - ) - ) - ) - ) - ) - ) + (let ((gp-2 (-> this child))) (while gp-2 (send-event (ppointer->process gp-2) 'die) (set! gp-2 (-> gp-2 0 brother)))) + (sound-play "plat-light-off")))))))) (defstate qbert-plat-wait-for-master (qbert-plat) - :code (behavior () - (loop - (let ((v1-0 (-> self master))) - (when (if v1-0 - (-> v1-0 extra process) - ) - (suspend) - (rigid-body-platform-method-32 self) - (go-virtual rigid-body-platform-idle) - ) - ) - (suspend) - 0 - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (let ((v1-0 (-> self master))) + (when (if v1-0 (-> v1-0 extra process)) + (suspend) + (rigid-body-platform-method-32 self) + (go-virtual rigid-body-platform-idle))) + (suspend) + 0)) + :post ja-post) (defstate rigid-body-platform-idle (qbert-plat) :virtual #t :event qbert-plat-event-handler - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (suspend))) + :post ja-post) (defstate rigid-body-platform-float (qbert-plat) :virtual #t :event qbert-plat-event-handler - :exit (behavior () - (if (-> self on?) - (logior! (-> self draw status) (draw-status hidden)) - ) - ) - :trans (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ((-> (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?)) - (rigid-body-platform-method-33 self) - ) - ) - (set! (-> self player-is-riding?) gp-1) - ) - ) - :post (behavior () - ((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 hidden)) - ) - ) - ) + :exit + (behavior () + (if (-> self on?) (logior! (-> self draw status) (draw-status hidden)))) + :trans + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + ((-> (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?)) (rigid-body-platform-method-33 self))) + (set! (-> self player-is-riding?) gp-1))) + :post + (behavior () + ((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 hidden))))) (defmethod rigid-body-platform-method-22 ((this qbert-plat) (arg0 vector) (arg1 float)) (+ (-> this anchor-point y) (-> this float-height-offset) - (* 512.0 (cos (* 546.13336 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))) - ) - ) + (* 512.0 (cos (* 546.13336 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))))) (defmethod rigid-body-platform-method-23 ((this qbert-plat) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-30 ((this qbert-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -294,15 +205,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 18432.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this qbert-plat)) (initialize-skeleton this *qbert-plat-sg* '()) @@ -315,34 +223,29 @@ (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 w) 1.0)) (let ((v1-13 (-> this 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 w) 1.0)) (let ((v1-15 (-> this 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 w) 1.0)) (let ((v1-17 (-> this 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 w) 1.0)) (set! (-> this on?) #f) (set! (-> this player-is-riding?) #f) (set! (-> this master) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this plat-id) (actor-count-before (-> this link))) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this qbert-plat) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -350,360 +253,191 @@ (process-drawable-from-entity! this arg0) (rigid-body-platform-method-31 this) (go qbert-plat-wait-for-master) - (none) - ) + (none)) (defmethod plat-state-set? ((this qbert-plat-master) (arg0 uint)) - (logtest? (-> this plat-states) (ash 1 arg0)) - ) + (logtest? (-> this plat-states) (ash 1 arg0))) (defstate qbert-plat-master-idle (qbert-plat-master) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (start-hint-timer (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 (-> block 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))) - (logxor! (-> self plat-states) (the-as uint v1-3)) - (if (not (logtest? v1-3 (-> self plat-states))) - (level-hint-spawn - (text-id sunken-qbert-plat-hint) - "sksp0130" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (send-event proc '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 () - (loop - (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) (water-flags wt09)))) - (when s5-1 - (when (not (-> self player-in-water?)) - (set! gp-0 #t) - (level-hint-spawn - (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) (cshape-moving-flags onsurf)) - (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 - (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) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (start-hint-timer (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 (-> block 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))) + (logxor! (-> self plat-states) (the-as uint v1-3)) + (if (not (logtest? v1-3 (-> self plat-states))) + (level-hint-spawn (text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* (game-task none)))) + (send-event proc '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 () + (loop + (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) (water-flags wt09)))) + (when s5-1 + (when (not (-> self player-in-water?)) + (set! gp-0 #t) + (level-hint-spawn (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) (cshape-moving-flags onsurf)) + (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 (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)))) (defstate qbert-plat-master-do-door (qbert-plat-master) - :code (behavior ((arg0 symbol)) - (when (not (-> self play-door-cam?)) + :code + (behavior ((arg0 symbol)) + (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-time! (-> self state-time)) (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 - ) - ) - ) - ) + (ambient-hint-spawn "gamcam08" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "qbert-show-door-open" 0 #f '() :to self) + (until (time-elapsed? (-> self state-time) (seconds 1.4)) + (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 - ) - ) - ) - (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-time! (-> self state-time)) - (cond - (arg0 - (ambient-hint-spawn "gamcam08" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "qbert-show-door-open" 0 #f '() :to self) - (until (time-elapsed? (-> self state-time) (seconds 1.4)) - (suspend) - ) - ) - (else - (ambient-hint-spawn "gamcam07" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "qbert-show-door-close" 0 #f '() :to self) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (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) - ) - ) + (ambient-hint-spawn "gamcam07" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "qbert-show-door-close" 0 #f '() :to self) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (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))) (defstate qbert-plat-master-wait-for-door (qbert-plat-master) - :code (behavior () - (loop - (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) - ) - (go qbert-plat-master-idle) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (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)) + (go qbert-plat-master-idle))) + (suspend)))) (defmethod init-from-entity! ((this qbert-plat-master) (arg0 entity-actor)) (set! (-> this last-plat-triggered) -1) @@ -715,9 +449,7 @@ (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (set! (-> this link) (new 'process 'actor-link-info this)) - (set! (-> this plat-states-needed-to-open-door) - (the-as uint (get-matching-actor-type-mask (-> this link) qbert-plat)) - ) + (set! (-> this plat-states-needed-to-open-door) (the-as uint (get-matching-actor-type-mask (-> this link) qbert-plat))) (set! (-> this door) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this door-plat) (entity-actor-lookup arg0 'alt-actor 1)) (set-vector! (-> this bounds-start) -39034.88 0.0 27729.92 1.0) @@ -728,9 +460,6 @@ (set! (-> this puzzle-beaten?) v1-11) (when v1-11 (set! (-> this plat-states) (-> this plat-states-needed-to-open-door)) - (set! (-> this play-door-cam?) #f) - ) - ) + (set! (-> this play-door-cam?) #f))) (go qbert-plat-master-wait-for-door) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/shover.gc b/goal_src/jak1/levels/sunken/shover.gc index 8a9d6c5142..b2ea4a14d7 100644 --- a/goal_src/jak1/levels/sunken/shover.gc +++ b/goal_src/jak1/levels/sunken/shover.gc @@ -1,86 +1,59 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/geometry/path-h.gc") - -;; name: shover.gc -;; name in dgo: shover -;; dgos: L1, SUN, SUNKEN - (declare-type shover process-drawable) + (define-extern *shover* shover) ;; unknown type ;; DECOMP BEGINS (deftype shover (process-drawable) - ((root collide-shape :override) - (shove-up float) - ) + ((root collide-shape :override) + (shove-up float)) (:states - shover-idle - ) - ) - + shover-idle)) -(defskelgroup *shover-sg* shover shover-lod0-jg shover-idle-ja - ((shover-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) +(defskelgroup *shover-sg* + shover + shover-lod0-jg + shover-idle-ja + ((shover-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) (defstate shover-idle (shover) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (when ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> block param 0)) - (-> *target* control) - (collide-action solid) - (collide-action) - ) - (let ((s4-0 (new 'stack 'attack-info))) - (calc-shove-up (-> self root) s4-0 (-> self shove-up)) - (level-hint-spawn (text-id sunken-hotpipes) "sksp0134" (the-as entity #f) *entity-pool* (game-task none)) - (if (or (= (-> *target* control unknown-surface00 mode) 'air) - (>= (+ (current-time) (seconds -0.2)) (-> *target* control unknown-dword11)) - (< 0.75 (-> *target* control poly-normal y)) - ) - (send-event - proc - 'attack-or-shove - (-> block param 0) - (static-attack-info ((mode 'burn) (vector (-> s4-0 vector)) (shove-up (-> s4-0 shove-up)))) - ) - (send-event - proc - 'attack-or-shove - (-> block param 0) - (static-attack-info ((mode 'burn) - (shove-up (meters 0)) - (shove-back (meters 2)) - (vector (-> *target* control poly-normal)) - (angle 'shove) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code anim-loop - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (when ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry (-> block param 0)) + (-> *target* control) + (collide-action solid) + (collide-action)) + (let ((s4-0 (new 'stack 'attack-info))) + (calc-shove-up (-> self root) s4-0 (-> self shove-up)) + (level-hint-spawn (text-id sunken-hotpipes) "sksp0134" (the-as entity #f) *entity-pool* (game-task none)) + (if (or (= (-> *target* control unknown-surface00 mode) 'air) + (>= (+ (current-time) (seconds -0.2)) (-> *target* control unknown-dword11)) + (< 0.75 (-> *target* control poly-normal y))) + (send-event proc + 'attack-or-shove + (-> block param 0) + (static-attack-info ((mode 'burn) (vector (-> s4-0 vector)) (shove-up (-> s4-0 shove-up))))) + (send-event proc + 'attack-or-shove + (-> block param 0) + (static-attack-info ((mode 'burn) (shove-up (meters 0)) (shove-back (meters 2)) (vector (-> *target* control poly-normal)) (angle 'shove))))))))))) + :code anim-loop) (defmethod init-from-entity! ((this shover) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (set! (-> this shove-up) (res-lump-float arg0 'shove :default 12288.0)) (let ((s3-0 (res-lump-value arg0 'collision-mesh-id uint128)) - (s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player))) - ) + (s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint s3-0) (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -88,46 +61,30 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 0) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0) - (set-root-prim! s4-0 s3-1) - ) + (set-root-prim! s4-0 s3-1)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *shover-sg* '()) (let ((v1-17 (new 'process 'path-control this 'path 0.0))) (set! (-> this path) v1-17) (logior! (-> v1-17 flags) (path-control-flag display draw-line draw-point draw-text)) - (if (<= (-> v1-17 curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) - ) + (if (<= (-> v1-17 curve num-cverts) 0) (go process-drawable-art-error "no path"))) (set! sv-16 (new 'static 'res-tag)) (let ((v1-23 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) (when v1-23 (+! (-> this root trans x) (-> v1-23 0)) (+! (-> this root trans y) (-> v1-23 1)) - (+! (-> this root trans z) (-> v1-23 2)) - ) - ) + (+! (-> this root trans z) (-> v1-23 2)))) (let ((f0-13 (res-lump-float arg0 'rotoffset))) - (if (!= f0-13 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-13) - ) - ) + (if (!= f0-13 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-13))) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (set! *shover* this) (go shover-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/square-platform.gc b/goal_src/jak1/levels/sunken/square-platform.gc index cbad1e3a52..f245c2378d 100644 --- a/goal_src/jak1/levels/sunken/square-platform.gc +++ b/goal_src/jak1/levels/sunken/square-platform.gc @@ -1,173 +1,150 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/basebutton.gc") (require "engine/common-obs/ticky.gc") (require "engine/common-obs/water-anim.gc") (require "levels/sunken/sunken-obs.gc") (require "engine/common-obs/baseplat.gc") - -;; name: square-platform.gc -;; name in dgo: square-platform -;; dgos: L1, SUN, SUNKEN - (declare-type square-platform baseplat) + (declare-type square-platform-master process-drawable) ;; DECOMP BEGINS (deftype square-platform (baseplat) - ((plat-id int32) - (pos-u float) - (water-entity entity-actor) - (splash-counter int32) - (start-splash-time time-frame) - (part2 sparticle-launch-control) - (part3 sparticle-launch-control) - (part4 sparticle-launch-control) - (up-pos vector :inline) - (down-pos vector :inline) - ) + ((plat-id int32) + (pos-u float) + (water-entity entity-actor) + (splash-counter int32) + (start-splash-time time-frame) + (part2 sparticle-launch-control) + (part3 sparticle-launch-control) + (part4 sparticle-launch-control) + (up-pos vector :inline) + (down-pos vector :inline)) (:methods - (square-platform-method-27 (_type_ symbol) none) - ) + (square-platform-method-27 (_type_ symbol) none)) (:states - square-platform-lowered - square-platform-lowering - square-platform-raised - square-platform-rising - ) - ) - - -(defskelgroup *square-platform-sg* square-platform square-platform-lod0-jg square-platform-idle-ja - ((square-platform-lod0-mg (meters 20)) (square-platform-lod1-mg (meters 999999))) - :bounds (static-spherem 0 -11 0 8) - ) + square-platform-lowered + square-platform-lowering + square-platform-raised + square-platform-rising)) -(deftype square-platform-button (basebutton) - () - ) +(defskelgroup *square-platform-sg* + square-platform + square-platform-lod0-jg + square-platform-idle-ja + ((square-platform-lod0-mg (meters 20)) (square-platform-lod1-mg (meters 999999))) + :bounds (static-spherem 0 -11 0 8)) +(deftype square-platform-button (basebutton) ()) (deftype square-platform-master (process-drawable) - ((button-id int32) - (plat-id int32) - (plat-mask uint32) - (plat-id-dir int32) - (wiggled? symbol) - (timeout time-frame) - (last-plat-activated-time time-frame) - (delay-til-wiggle time-frame) - (ticker ticky :inline) - ) + ((button-id int32) + (plat-id int32) + (plat-mask uint32) + (plat-id-dir int32) + (wiggled? symbol) + (timeout time-frame) + (last-plat-activated-time time-frame) + (delay-til-wiggle time-frame) + (ticker ticky :inline)) (:states - square-platform-master-activate - square-platform-master-idle - ) - ) - + square-platform-master-activate + square-platform-master-idle)) (defpartgroup group-square-platform-breach-splash :id 437 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2222 :flags (is-3d)) (sp-item 2315 :flags (is-3d))) - ) + :parts ((sp-item 2222 :flags (is-3d)) (sp-item 2315 :flags (is-3d)))) (defpart 2222 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 0) (meters 3)) - (:scale-x (meters 3.5) (meters 3.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.013333334) (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2316) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 0) (meters 3)) + (:scale-x (meters 3.5) (meters 3.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.013333334) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2316) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2316 - :init-specs ((:fade-a -0.17066666)) - ) + :init-specs ((:fade-a -0.17066666))) (defpart 2315 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 3) (meters 1.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.013333334) (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2316) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 3) (meters 1.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.013333334) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2316) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-square-platform-submerge-bubbles :id 438 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2223)) - ) + :parts ((sp-item 2223))) (defpart 2223 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 2.0) - (:x (meters -4) (meters 8)) - (:z (meters -4) (meters 8)) - (:scale-x (meters 0.15) (meters 0.05)) - (:scale-y (meters 0.125) (meters 0.025)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:fade-a 0.8) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - (:userdata -663298.44) - (:func 'check-water-level-above-and-die) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2317) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 2.0) + (:x (meters -4) (meters 8)) + (:z (meters -4) (meters 8)) + (:scale-x (meters 0.15) (meters 0.05)) + (:scale-y (meters 0.125) (meters 0.025)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:fade-a 0.8) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)) + (:userdata -663298.44) + (:func 'check-water-level-above-and-die) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2317) + (:rotate-y (degrees 0)))) (defpart 2317 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpartgroup group-square-platform-submerge-splash :id 439 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2222 :flags (is-3d)) (sp-item 2315 :flags (is-3d))) - ) + :parts ((sp-item 2222 :flags (is-3d)) (sp-item 2315 :flags (is-3d)))) (defmethod square-platform-method-27 ((this square-platform) (arg0 symbol)) (local-vars (v0-3 sound-id) (sv-48 int)) @@ -175,232 +152,142 @@ (set! (-> s4-0 quad) (-> this root trans quad)) (+! (-> s4-0 y) -20480.0) (let* ((v1-1 (-> this water-entity)) - (a0-4 (if v1-1 - (-> v1-1 extra process) - ) - ) - ) + (a0-4 (if v1-1 (-> v1-1 extra process)))) (when (not a0-4) (set! (-> this water-entity) (entity-actor-lookup (-> this entity) 'alt-actor 0)) - (let ((v1-4 (-> this water-entity))) - (set! a0-4 (if v1-4 - (-> v1-4 extra process) - ) - ) - ) - ) + (let ((v1-4 (-> this water-entity))) (set! a0-4 (if v1-4 (-> v1-4 extra process))))) (when (the-as water-vol a0-4) (let ((f0-2 (get-ripple-height (the-as water-vol a0-4) s4-0)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> s4-0 quad)) (set! (-> s3-0 y) f0-2) (if (zero? (-> this start-splash-time)) - (set! v0-3 (cond - (arg0 - (if (>= (-> s4-0 y) f0-2) - (set-time! (-> this start-splash-time)) - ) - v0-3 - ) - (else - (when (>= f0-2 (-> s4-0 y)) - (set-time! (-> this start-splash-time)) - (let ((s2-0 sound-play-by-name) - (s1-0 (make-u128 #x6873616c (the-as uint #x70732d656772616c))) - (s0-0 (new-sound-id)) - ) - (set! sv-48 1024) - (let ((a3-0 (the int (* 1524.0 (rand-vu-float-range -0.8 0.8)))) - (t0-0 0) - (t1-0 1) - (t2-0 #t) - ) - (s2-0 (the-as sound-name s1-0) s0-0 sv-48 a3-0 t0-0 (the-as sound-group t1-0) t2-0) - ) - ) - ) - ) - ) - ) - ) + (set! v0-3 + (cond + (arg0 (if (>= (-> s4-0 y) f0-2) (set-time! (-> this start-splash-time))) v0-3) + (else + (when (>= f0-2 (-> s4-0 y)) + (set-time! (-> this start-splash-time)) + (let ((s2-0 sound-play-by-name) + (s1-0 (make-u128 #x6873616c (the-as uint #x70732d656772616c))) + (s0-0 (new-sound-id))) + (set! sv-48 1024) + (let ((a3-0 (the int (* 1524.0 (rand-vu-float-range -0.8 0.8)))) + (t0-0 0) + (t1-0 1) + (t2-0 #t)) + (s2-0 (the-as sound-name s1-0) s0-0 sv-48 a3-0 t0-0 (the-as sound-group t1-0) t2-0)))))))) (when (nonzero? (-> this start-splash-time)) (cond (arg0 - (let ((v1-21 (-> this splash-counter))) - (when (< v1-21 2) - (set! (-> this splash-counter) (+ v1-21 1)) - (spawn (-> this part2) s3-0) - ) - ) - ) - (else - (spawn (-> this part3) s4-0) - ) - ) - ) + (let ((v1-21 (-> this splash-counter))) + (when (< v1-21 2) + (set! (-> this splash-counter) (+ v1-21 1)) + (spawn (-> this part2) s3-0)))) + (else (spawn (-> this part3) s4-0)))) (when (not arg0) (let ((v1-25 (-> this splash-counter))) (when (< v1-25 2) (set! (-> this splash-counter) (+ v1-25 1)) - (spawn (-> this part4) s3-0) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (spawn (-> this part4) s3-0)))))))) + (none)) (defstate square-platform-lowered (square-platform) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (if (and (= (-> proc type) square-platform-master) - (= (-> (the-as square-platform-master proc) plat-id) (-> self plat-id)) - ) - (go square-platform-rising) - ) - ) - ) - ) - :code (behavior () - (set! (-> self pos-u) 0.0) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (if (and (= (-> proc type) square-platform-master) (= (-> (the-as square-platform-master proc) plat-id) (-> self plat-id))) + (go square-platform-rising))))) + :code + (behavior () + (set! (-> self pos-u) 0.0) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate square-platform-rising (square-platform) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('untrigger) - (go square-platform-lowering) - ) - ) - ) - :enter (behavior () - (set! (-> self start-splash-time) 0) - (set! (-> self splash-counter) 0) - 0 - ) - :trans (behavior () - (set! (-> self pos-u) - (seek-with-smooth (-> self pos-u) 1.0 (/ 1.0 (* 0.75 (-> *display* frames-per-second))) 0.8 0.01) - ) - (vector-lerp! (-> self basetrans) (-> self down-pos) (-> self up-pos) (-> self pos-u)) - (plat-trans) - (when (= (-> self pos-u) 1.0) - (plat-post) - (go square-platform-raised) - ) - (square-platform-method-27 self #t) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post plat-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('untrigger) (go square-platform-lowering)))) + :enter + (behavior () + (set! (-> self start-splash-time) 0) + (set! (-> self splash-counter) 0) + 0) + :trans + (behavior () + (set! (-> self pos-u) (seek-with-smooth (-> self pos-u) 1.0 (/ 1.0 (* 0.75 (-> *display* frames-per-second))) 0.8 0.01)) + (vector-lerp! (-> self basetrans) (-> self down-pos) (-> self up-pos) (-> self pos-u)) + (plat-trans) + (when (= (-> self pos-u) 1.0) + (plat-post) + (go square-platform-raised)) + (square-platform-method-27 self #t)) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post plat-post) (defstate square-platform-raised (square-platform) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('untrigger) - (go square-platform-lowering) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('untrigger) (go square-platform-lowering)))) :trans plat-trans - :code (behavior () - (set! (-> self pos-u) 1.0) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self pos-u) 1.0) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post plat-post) (defstate square-platform-lowering (square-platform) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('trigger) - (go square-platform-rising) - ) - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :enter (behavior () - (set! (-> self start-splash-time) 0) - (set! (-> self splash-counter) 0) - 0 - ) - :trans (behavior () - (set! (-> self pos-u) - (seek-with-smooth (-> self pos-u) 0.0 (/ 1.0 (* 0.75 (-> *display* frames-per-second))) 0.8 0.01) - ) - (vector-lerp! (-> self basetrans) (-> self down-pos) (-> self up-pos) (-> self pos-u)) - (plat-trans) - (when (= (-> self pos-u) 0.0) - (plat-post) - (go square-platform-lowered) - ) - (square-platform-method-27 self #f) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post plat-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('trigger) (go square-platform-rising)) + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :enter + (behavior () + (set! (-> self start-splash-time) 0) + (set! (-> self splash-counter) 0) + 0) + :trans + (behavior () + (set! (-> self pos-u) (seek-with-smooth (-> self pos-u) 0.0 (/ 1.0 (* 0.75 (-> *display* frames-per-second))) 0.8 0.01)) + (vector-lerp! (-> self basetrans) (-> self down-pos) (-> self up-pos) (-> self pos-u)) + (plat-trans) + (when (= (-> self pos-u) 0.0) + (plat-post) + (go square-platform-lowered)) + (square-platform-method-27 self #f)) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post plat-post) (defmethod deactivate ((this square-platform)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this part3)) - (kill-and-free-particles (-> this part3)) - ) - (if (nonzero? (-> this part4)) - (kill-and-free-particles (-> this part4)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this part3)) (kill-and-free-particles (-> this part3))) + (if (nonzero? (-> this part4)) (kill-and-free-particles (-> this part4))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this square-platform) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this part3)) - (&+! (-> this part3) arg0) - ) - (if (nonzero? (-> this part4)) - (&+! (-> this part4) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this part3)) (&+! (-> this part3) arg0)) + (if (nonzero? (-> this part4)) (&+! (-> this part4) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this square-platform) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-32 res-tag)) @@ -408,9 +295,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -419,12 +304,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 32768.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this plat-id) (actor-count-before (-> this link))) @@ -432,35 +315,18 @@ (baseplat-method-21 this) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (set! sv-16 (new 'static 'res-tag)) (let* ((v1-32 (res-lump-data (-> this entity) 'distance pointer :tag-ptr (& sv-16))) - (f30-0 (if (and v1-32 (> (the-as int (-> sv-16 elt-count)) 0)) - (-> (the-as (pointer float) v1-32)) - -8192.0 - ) - ) - ) + (f30-0 (if (and v1-32 (> (the-as int (-> sv-16 elt-count)) 0)) (-> (the-as (pointer float) v1-32)) -8192.0))) (set! sv-32 (new 'static 'res-tag)) (let* ((v1-35 (res-lump-data (-> this entity) 'distance pointer :tag-ptr (& sv-32))) - (f0-10 (if (and v1-35 (< 1 (the-as int (-> sv-32 elt-count)))) - (-> (the-as (pointer float) v1-35) 1) - 16384.0 - ) - ) - ) + (f0-10 (if (and v1-35 (< 1 (the-as int (-> sv-32 elt-count)))) (-> (the-as (pointer float) v1-35) 1) 16384.0))) (set! (-> this down-pos quad) (-> this root trans quad)) (+! (-> this down-pos y) f30-0) (set! (-> this up-pos quad) (-> this root trans quad)) - (+! (-> this up-pos y) f0-10) - ) - ) + (+! (-> this up-pos y) f0-10))) (set! (-> this basetrans quad) (-> this down-pos quad)) (set! (-> this root trans quad) (-> this basetrans quad)) (set! (-> this part2) (create-launch-control (-> *part-group-id-table* 437) this)) @@ -470,180 +336,134 @@ (ja-post) (update-transforms! (-> this root)) (go square-platform-lowered) - (none) - ) + (none)) (defstate square-platform-master-idle (square-platform-master) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (when (= (-> proc type) square-platform-button) - (set! (-> self button-id) (-> (the-as square-platform-button proc) button-id)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go square-platform-master-activate) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (when (= (-> proc type) square-platform-button) + (set! (-> self button-id) (-> (the-as square-platform-button proc) button-id)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go square-platform-master-activate))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate square-platform-master-activate (square-platform-master) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self wiggled?) #f) - (sleep (-> self ticker) (-> self timeout)) - (set! (-> self plat-id) -1) - (send-to-all (-> self link) 'trigger) - (set! (-> self plat-id) 0) - (let ((gp-0 1)) - (let ((v1-7 (-> self button-id))) - (cond - ((zero? v1-7) - (let ((a0-4 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> a0-4 0)) seq) (the-as uint 3)) - ) - ) - ((= v1-7 1) - (let ((v1-13 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> v1-13 0)) seq) (the-as uint 4)) - ) - (set! gp-0 -1) - ) - ((= v1-7 2) - (let ((a0-17 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> a0-17 0)) seq) (the-as uint 5)) - ) - ) - ((= v1-7 3) - (let ((v1-24 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> v1-24 0)) seq) (the-as uint 6)) - ) - (set! gp-0 -1) - ) - ) - ) - (if (< gp-0 0) - (set! (-> self plat-id) 32) - ) - (set! (-> self plat-id-dir) gp-0) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - :trans (behavior () - (when (completed? (-> self ticker)) - (send-to-all (-> self link) 'untrigger) - (go square-platform-master-idle) - ) - (when (reached-delay? (-> self ticker) (-> self delay-til-wiggle)) - (when (not (-> self wiggled?)) - (set! (-> self wiggled?) #t) - (send-to-all (-> self link) 'bounce) - ) - ) - (when (time-elapsed? (-> self last-plat-activated-time) (seconds 0.3)) - (set-time! (-> self last-plat-activated-time)) - (let ((v1-20 (-> self plat-id)) - (a0-5 (-> self plat-id-dir)) - (a1-3 (-> self plat-mask)) - ) - (loop - (+! v1-20 a0-5) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self wiggled?) #f) + (sleep (-> self ticker) (-> self timeout)) + (set! (-> self plat-id) -1) + (send-to-all (-> self link) 'trigger) + (set! (-> self plat-id) 0) + (let ((gp-0 1)) + (let ((v1-7 (-> self button-id))) (cond - ((<= v1-20 0) - (set! (-> self plat-id) 0) - (return #f) - ) - ((>= v1-20 32) - (set! (-> self plat-id) 32) - (return #f) - ) - (else - (when (logtest? a1-3 (ash 1 v1-20)) - (set! (-> self plat-id) v1-20) - (send-to-all (-> self link) 'trigger) - (return #f) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + ((zero? v1-7) + (let ((a0-4 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + :to + self))) + (set! (-> (the-as sunkencam (-> a0-4 0)) seq) (the-as uint 3)))) + ((= v1-7 1) + (let ((v1-13 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + :to + self))) + (set! (-> (the-as sunkencam (-> v1-13 0)) seq) (the-as uint 4))) + (set! gp-0 -1)) + ((= v1-7 2) + (let ((a0-17 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + :to + self))) + (set! (-> (the-as sunkencam (-> a0-17 0)) seq) (the-as uint 5)))) + ((= v1-7 3) + (let ((v1-24 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + :to + self))) + (set! (-> (the-as sunkencam (-> v1-24 0)) seq) (the-as uint 6))) + (set! gp-0 -1)))) + (if (< gp-0 0) (set! (-> self plat-id) 32)) + (set! (-> self plat-id-dir) gp-0))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) + :trans + (behavior () + (when (completed? (-> self ticker)) + (send-to-all (-> self link) 'untrigger) + (go square-platform-master-idle)) + (when (reached-delay? (-> self ticker) (-> self delay-til-wiggle)) + (when (not (-> self wiggled?)) + (set! (-> self wiggled?) #t) + (send-to-all (-> self link) 'bounce))) + (when (time-elapsed? (-> self last-plat-activated-time) (seconds 0.3)) + (set-time! (-> self last-plat-activated-time)) + (let ((v1-20 (-> self plat-id)) + (a0-5 (-> self plat-id-dir)) + (a1-3 (-> self plat-mask))) + (loop + (+! v1-20 a0-5) + (cond + ((<= v1-20 0) (set! (-> self plat-id) 0) (return #f)) + ((>= v1-20 32) (set! (-> self plat-id) 32) (return #f)) + (else + (when (logtest? a1-3 (ash 1 v1-20)) + (set! (-> self plat-id) v1-20) + (send-to-all (-> self link) 'trigger) + (return #f)))))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod init-from-entity! ((this square-platform-master) (arg0 entity-actor)) (set! (-> this button-id) -1) (set! (-> this plat-id) -1) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (set! (-> this timeout) - (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'timeout :default 10.0)))) - ) + (set! (-> this timeout) (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'timeout :default 10.0))))) (set! (-> this delay-til-wiggle) (+ (-> this timeout) (seconds -0.4))) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this plat-mask) (the-as uint (get-matching-actor-type-mask (-> this link) square-platform))) (go square-platform-master-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/steam-cap.gc b/goal_src/jak1/levels/sunken/steam-cap.gc index 15c836848f..9f98f442ca 100644 --- a/goal_src/jak1/levels/sunken/steam-cap.gc +++ b/goal_src/jak1/levels/sunken/steam-cap.gc @@ -1,420 +1,398 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") -;; name: steam-cap.gc -;; name in dgo: steam-cap -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (deftype steam-cap-control-pt (structure) - ((trans vector :inline) - (transv vector :inline) - ) - ) - + ((trans vector :inline) + (transv vector :inline))) (deftype steam-cap (process-drawable) - ((root collide-shape-moving :override) - (do-burst? symbol) - (do-falling-sound? symbol) - (do-landing-sound? symbol) - (begin-travel-up float) - (begin-travel-down float) - (sync sync-info :inline) - (part2 sparticle-launch-control) - (part3 sparticle-launch-control) - (down vector :inline) - (up vector :inline) - (control-pt steam-cap-control-pt 3 :inline) - ) + ((root collide-shape-moving :override) + (do-burst? symbol) + (do-falling-sound? symbol) + (do-landing-sound? symbol) + (begin-travel-up float) + (begin-travel-down float) + (sync sync-info :inline) + (part2 sparticle-launch-control) + (part3 sparticle-launch-control) + (down vector :inline) + (up vector :inline) + (control-pt steam-cap-control-pt 3 :inline)) (:methods - (steam-cap-method-20 (_type_) none) - (steam-cap-method-21 (_type_) quaternion) - ) + (steam-cap-method-20 (_type_) none) + (steam-cap-method-21 (_type_) quaternion)) (:states - steam-cap-idle - ) - ) - + steam-cap-idle)) (defpartgroup group-steam-cap-sides :id 441 :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 1718 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25)) - (sp-item 1719 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 60) - (sp-item 1720 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 120) - (sp-item 1721 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25)) - (sp-item 1722 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 60) - (sp-item 1723 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 120) - (sp-item 1724 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.6) :length (seconds 0.25) :offset 120) - ) - ) + :parts + ((sp-item 1718 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25)) + (sp-item 1719 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 60) + (sp-item 1720 + :fade-after (meters 100) + :falloff-to (meters 160) + :period (seconds 0.6) + :length (seconds 0.25) + :offset 120) + (sp-item 1721 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25)) + (sp-item 1722 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 60) + (sp-item 1723 + :fade-after (meters 100) + :falloff-to (meters 160) + :period (seconds 0.6) + :length (seconds 0.25) + :offset 120) + (sp-item 1724 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.6) :length (seconds 0.25) :offset 120))) (defpart 1724 - :init-specs ((:num 1.0) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 1725) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:num 1.0) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 1725) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5)))) (defpart 1725 - :init-specs ((:fade-b -2.7306666)) - ) + :init-specs ((:fade-b -2.7306666))) (defpart 1718 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1721 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1719 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 120) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 120) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1722 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 120) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 120) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1720 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 240) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 240) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1723 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 240) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 240) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1726 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-steam-cap-plume :id 442 :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 1727 :fade-after (meters 120) :falloff-to (meters 160)) - (sp-item 1728 :fade-after (meters 120) :falloff-to (meters 160)) - (sp-item 1729 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1730 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)) - ) - ) + :parts + ((sp-item 1727 :fade-after (meters 120) :falloff-to (meters 160)) + (sp-item 1728 :fade-after (meters 120) :falloff-to (meters 160)) + (sp-item 1729 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1730 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)))) (defpartgroup group-steam-cap-plume-spread :id 443 :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 1731 :fade-after (meters 120) :falloff-to (meters 160)) - (sp-item 1732 :fade-after (meters 120) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 1731 :fade-after (meters 120) :falloff-to (meters 160)) + (sp-item 1732 :fade-after (meters 120) :falloff-to (meters 160)))) (defpart 1730 - :init-specs ((:num 0.4) - (:rot-x 5) - (:r 6144.0) - (:g 2867.2) - (:b 3276.8) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:accel-y (meters 0.000033333334)) - (:friction 0.94 0.02) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 1725) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:num 0.4) + (:rot-x 5) + (:r 6144.0) + (:g 2867.2) + (:b 3276.8) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:accel-y (meters 0.000033333334)) + (:friction 0.94 0.02) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 1725) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5)))) (defpart 1732 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:y (meters -0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1735) - (:conerot-x (degrees 90) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:y (meters -0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1735) + (:conerot-x (degrees 90) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 1731 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:y (meters -0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1735) - (:conerot-x (degrees 90) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:y (meters -0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1735) + (:conerot-x (degrees 90) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 1735 - :init-specs ((:fade-a -0.32)) - ) + :init-specs ((:fade-a -0.32))) (defpart 1727 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 0) (meters 1)) - (:y (meters -1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters 0.00066666666)) - (:timer (seconds 0.51)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 15)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 0) (meters 1)) + (:y (meters -1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters 0.00066666666)) + (:timer (seconds 0.51)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 15)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1728 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 0) (meters 0.5)) - (:y (meters -1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.053333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters 0.00066666666)) - (:timer (seconds 0.51)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 0) (meters 0.5)) + (:y (meters -1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters 0.00066666666)) + (:timer (seconds 0.51)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1729 - :init-specs ((:num 0.5) - (:x (meters 0.5) (meters 0.5)) - (:rot-x 5) - (:r 6144.0) - (:g 2457.6) - (:b 3276.8) - (:vel-y (meters 0.053333335)) - (:timer (seconds 0.51)) - (:flags (aux-list)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) - -(defskelgroup *steam-cap-sg* steam-cap steam-cap-lod0-jg steam-cap-idle-ja - ((steam-cap-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) + :init-specs + ((:num 0.5) + (:x (meters 0.5) (meters 0.5)) + (:rot-x 5) + (:r 6144.0) + (:g 2457.6) + (:b 3276.8) + (:vel-y (meters 0.053333335)) + (:timer (seconds 0.51)) + (:flags (aux-list)) + (:rotate-y (degrees 0) (degrees 360)))) + +(defskelgroup *steam-cap-sg* + steam-cap + steam-cap-lod0-jg + steam-cap-idle-ja + ((steam-cap-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (defmethod steam-cap-method-20 ((this steam-cap)) (when *target* (let* ((a1-0 (target-pos 0)) - (f0-0 (-> a1-0 y)) - ) + (f0-0 (-> a1-0 y))) (when (and (>= f0-0 (+ -8192.0 (-> this down y))) - (and (>= (+ -4096.0 (-> this root trans y)) f0-0) (zero? (-> this root riders num-riders))) - ) + (and (>= (+ -4096.0 (-> this root trans y)) f0-0) (zero? (-> this root riders num-riders)))) (let ((f0-1 (vector-vector-xz-distance-squared (-> this down) a1-0))) (when (>= 104857600.0 f0-1) (let ((s5-0 (>= 37748736.0 f0-1))) @@ -423,30 +401,15 @@ (let ((a1-1 (new 'stack-no-clear 'vector))) (set! (-> a1-1 x) (the-as float 1)) (set! (-> a1-1 y) (the-as float #f)) - (if (find-overlapping-shapes (-> this root) (the-as overlaps-others-params a1-1)) - (set! s5-0 #t) - ) - ) - ) - ) - (if s5-0 - (send-event *target* 'shove #f (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 1.5))))) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (if (find-overlapping-shapes (-> this root) (the-as overlaps-others-params a1-1)) (set! s5-0 #t))))) + (if s5-0 (send-event *target* 'shove #f (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 1.5)))))))))))) + (none)) (defmethod steam-cap-method-21 ((this steam-cap)) (local-vars (at-0 int) (at-1 int) (s5-0 symbol)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((f0-0 (get-current-phase (-> this sync)))) #t @@ -459,20 +422,9 @@ (when (= (-> s3-0 trans y) (-> this down y)) (set! (-> this do-burst?) #t) (let ((a0-2 (+ (the int (* 60.0 (- 1.0 f30-0))) 3))) - (if (zero? (rand-vu-int-count a0-2)) - (+! (-> s3-0 transv y) (* (rand-vu-float-range 40960.0 57344.0) f30-0)) - ) - ) - ) - ) - ) + (if (zero? (rand-vu-int-count a0-2)) (+! (-> s3-0 transv y) (* (rand-vu-float-range 40960.0 57344.0) f30-0))))))) (let ((a0-4 (+ (the int (* 60.0 (- 1.0 f30-0))) 1))) - (if (zero? (rand-vu-int-count a0-4)) - (spawn (-> this part) (-> this down)) - ) - ) - ) - ) + (if (zero? (rand-vu-int-count a0-4)) (spawn (-> this part) (-> this down)))))) ((< f0-0 (-> this begin-travel-down)) (let ((f30-1 (/ (- f0-0 (-> this begin-travel-up)) (- (-> this begin-travel-down) (-> this begin-travel-up))))) (set! s5-0 #f) @@ -483,183 +435,110 @@ (spawn (-> this part) (-> this down)) (spawn (-> this part) (-> this down)) (spawn (-> this part) (-> this down)) - (spawn (-> this part) (-> this down)) - ) + (spawn (-> this part) (-> this down))) (when (< f30-1 0.94) (spawn (-> this part2) (-> this down)) (let ((a1-8 (new 'stack-no-clear 'vector))) (set! (-> a1-8 quad) (-> this root trans quad)) (+! (-> a1-8 y) -3072.0) - (spawn (-> this part3) a1-8) - ) - ) - ) - ) + (spawn (-> this part3) a1-8))))) (else - (set! s5-0 #t) - (when (-> this do-falling-sound?) - (set! (-> this do-falling-sound?) #f) - (sound-play "sunk-top-falls") - ) - ) - ) - ) + (set! s5-0 #t) + (when (-> this do-falling-sound?) + (set! (-> this do-falling-sound?) #f) + (sound-play "sunk-top-falls"))))) (dotimes (s4-3 3) (let ((s2-0 (-> this control-pt s4-3)) - (s3-3 (new 'stack-no-clear 'vector)) - ) + (s3-3 (new 'stack-no-clear 'vector))) (set! (-> s3-3 quad) (-> s2-0 trans quad)) (cond (s5-0 - (+! (-> s2-0 transv y) (* -819200.0 (seconds-per-frame))) - (let ((a1-10 s3-3) - (v1-42 s3-3) - (a0-21 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f0-17 (seconds-per-frame))) - (.mov at-0 f0-17) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a0-21 quad) vf1) - (vector+! a1-10 v1-42 a0-21) - ) - (when (< (-> s3-3 y) (-> this down y)) - (when (-> this do-landing-sound?) - (set! (-> this do-landing-sound?) #f) - (sound-play "sunk-top-lands") - ) - (set! (-> s3-3 y) (-> this down y)) - (let ((f0-20 (-> s2-0 transv y))) - (when (< f0-20 0.0) - (let ((f0-22 (* 0.3 (- f0-20)))) - (set! (-> s2-0 transv y) f0-22) - (if (< 7782.4 f0-22) - (sound-play "sunk-top-lands" :vol 60) - ) - ) - ) - ) - ) - ) + (+! (-> s2-0 transv y) (* -819200.0 (seconds-per-frame))) + (let ((a1-10 s3-3) + (v1-42 s3-3) + (a0-21 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f0-17 (seconds-per-frame))) (.mov at-0 f0-17)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a0-21 quad) vf1) + (vector+! a1-10 v1-42 a0-21)) + (when (< (-> s3-3 y) (-> this down y)) + (when (-> this do-landing-sound?) + (set! (-> this do-landing-sound?) #f) + (sound-play "sunk-top-lands")) + (set! (-> s3-3 y) (-> this down y)) + (let ((f0-20 (-> s2-0 transv y))) + (when (< f0-20 0.0) + (let ((f0-22 (* 0.3 (- f0-20)))) + (set! (-> s2-0 transv y) f0-22) + (if (< 7782.4 f0-22) (sound-play "sunk-top-lands" :vol 60))))))) (else - (set! (-> this do-landing-sound?) #t) - (let ((f0-24 (* 0.000048828126 (- (-> this up y) (-> s2-0 trans y))))) - (cond - ((< 1.0 f0-24) - (set! f0-24 1.0) - ) - ((< f0-24 -1.0) - (set! f0-24 -1.0) - ) - ) - (+! (-> s2-0 transv y) (* 819200.0 (seconds-per-frame) f0-24)) - (let ((f1-24 (-> s2-0 transv y))) - (when (< 122880.0 (fabs f1-24)) - (if (>= f1-24 0.0) - (set! (-> s2-0 transv y) 122880.0) - (set! (-> s2-0 transv y) -122880.0) - ) - ) - ) - (let ((a1-14 s3-3) - (v1-61 s3-3) - (a0-26 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f1-27 (seconds-per-frame))) - (.mov at-1 f1-27) - ) - (.mov vf2 at-1) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a0-26 quad) vf1) - (vector+! a1-14 v1-61 a0-26) - ) - (let ((f1-29 (- (-> this up y) (-> s3-3 y))) - (v1-62 (>= f0-24 0.0)) - ) - (when (!= v1-62 (>= f1-29 0.0)) - (let ((f0-26 (-> s2-0 transv y))) - (when (< 40960.0 (fabs f0-26)) - (if (>= f0-26 0.0) - (set! (-> s2-0 transv y) 40960.0) - (set! (-> s2-0 transv y) -40960.0) - ) - ) - ) - (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y))) - ) - ) - ) - ) - ) - (set! (-> s2-0 trans quad) (-> s3-3 quad)) - ) - ) + (set! (-> this do-landing-sound?) #t) + (let ((f0-24 (* 0.000048828126 (- (-> this up y) (-> s2-0 trans y))))) + (cond + ((< 1.0 f0-24) (set! f0-24 1.0)) + ((< f0-24 -1.0) (set! f0-24 -1.0))) + (+! (-> s2-0 transv y) (* 819200.0 (seconds-per-frame) f0-24)) + (let ((f1-24 (-> s2-0 transv y))) + (when (< 122880.0 (fabs f1-24)) + (if (>= f1-24 0.0) (set! (-> s2-0 transv y) 122880.0) (set! (-> s2-0 transv y) -122880.0)))) + (let ((a1-14 s3-3) + (v1-61 s3-3) + (a0-26 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f1-27 (seconds-per-frame))) (.mov at-1 f1-27)) + (.mov vf2 at-1) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a0-26 quad) vf1) + (vector+! a1-14 v1-61 a0-26)) + (let ((f1-29 (- (-> this up y) (-> s3-3 y))) + (v1-62 (>= f0-24 0.0))) + (when (!= v1-62 (>= f1-29 0.0)) + (let ((f0-26 (-> s2-0 transv y))) + (when (< 40960.0 (fabs f0-26)) + (if (>= f0-26 0.0) (set! (-> s2-0 transv y) 40960.0) (set! (-> s2-0 transv y) -40960.0)))) + (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y)))))))) + (set! (-> s2-0 trans quad) (-> s3-3 quad)))) (let ((f0-31 0.0)) (dotimes (v1-71 3) - (+! f0-31 (-> this control-pt v1-71 trans y)) - ) + (+! f0-31 (-> this control-pt v1-71 trans y))) (let ((f0-32 (* 0.33333334 f0-31)) - (a1-16 (new 'stack-no-clear 'vector)) - ) + (a1-16 (new 'stack-no-clear 'vector))) (set! (-> a1-16 quad) (-> this root trans quad)) (set! (-> a1-16 y) f0-32) - (move-to-point! (-> this root) a1-16) - ) - ) + (move-to-point! (-> this root) a1-16))) (let ((v1-77 (new 'stack-no-clear 'vector)) (a0-35 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'vector)) - ) + (s5-1 (new 'stack-no-clear 'vector))) (vector-! v1-77 (the-as vector (&-> this stack 176)) (the-as vector (-> this control-pt))) (vector-! a0-35 (the-as vector (&-> this stack 208)) (the-as vector (-> this control-pt))) (vector-cross! s5-1 v1-77 a0-35) (vector-normalize! s5-1 1.0) - (forward-up-nopitch->quaternion - (-> this root quat) - (vector-z-quaternion! (new-stack-vector0) (-> this root quat)) - s5-1 - ) - ) - ) - ) + (forward-up-nopitch->quaternion (-> this root quat) (vector-z-quaternion! (new-stack-vector0) (-> this root quat)) s5-1)))) (defstate steam-cap-idle (steam-cap) :trans rider-trans - :code (behavior () - (loop - (steam-cap-method-20 self) - (steam-cap-method-21 self) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop + (steam-cap-method-20 self) + (steam-cap-method-21 self) + (suspend))) + :post rider-post) (defmethod relocate ((this steam-cap) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this part3)) - (&+! (-> this part3) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this part3)) (&+! (-> this part3) arg0)) + (call-parent-method this arg0)) (defmethod deactivate ((this steam-cap)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this part3)) - (kill-and-free-particles (-> this part3)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this part3)) (kill-and-free-particles (-> this part3))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod init-from-entity! ((this steam-cap) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -667,9 +546,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -678,12 +555,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s4-0 s3-0) - ) + (set-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (set! (-> this do-burst?) #f) (set! (-> this do-falling-sound?) #f) (set! (-> this do-landing-sound?) #f) @@ -692,41 +567,25 @@ (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (update-transforms! (-> this root)) (load-params! (-> this sync) this (the-as uint 1800) 0.0 0.15 0.15) (let ((f30-0 0.4) - (f28-0 0.9) - ) + (f28-0 0.9)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-36 (res-lump-data arg0 'percent (pointer float) :tag-ptr (& sv-16)))) (when v1-36 (set! f30-0 (-> v1-36 0)) (set! f28-0 (-> v1-36 1)) - (if (>= 0.01 f30-0) - (set! f30-0 0.01) - ) - (if (>= 0.01 f28-0) - (set! f28-0 0.01) - ) - (if (>= f30-0 f28-0) - (set! f28-0 (+ 0.01 f30-0)) - ) + (if (>= 0.01 f30-0) (set! f30-0 0.01)) + (if (>= 0.01 f28-0) (set! f28-0 0.01)) + (if (>= f30-0 f28-0) (set! f28-0 (+ 0.01 f30-0))) (when (>= f30-0 1.0) (set! f28-0 (* 0.9 (/ f28-0 f30-0))) - (set! f30-0 0.9) - ) - ) - ) + (set! f30-0 0.9)))) (set! (-> this begin-travel-up) f30-0) - (set! (-> this begin-travel-down) f28-0) - ) + (set! (-> this begin-travel-down) f28-0)) (set! (-> this down quad) (-> this root trans quad)) (set! (-> this up quad) (-> this root trans quad)) (+! (-> this up y) 40960.0) @@ -735,18 +594,13 @@ (set! (-> this part3) (create-launch-control (-> *part-group-id-table* 443) this)) (vector-reset! (-> this root transv)) (let ((s5-1 (new 'stack-no-clear 'vector)) - (f30-1 0.0) - ) + (f30-1 0.0)) (dotimes (s4-2 3) (let ((s3-1 (-> this control-pt s4-2))) (set-vector! s5-1 0.0 0.0 10240.0 1.0) (vector-rotate-around-y! s5-1 s5-1 f30-1) (set! f30-1 (+ 21845.334 f30-1)) (vector+! (-> s3-1 trans) s5-1 (-> this root trans)) - (vector-reset! (-> s3-1 transv)) - ) - ) - ) + (vector-reset! (-> s3-1 transv))))) (go steam-cap-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/sun-exit-chamber.gc b/goal_src/jak1/levels/sunken/sun-exit-chamber.gc index 836070bc68..2147af0d65 100644 --- a/goal_src/jak1/levels/sunken/sun-exit-chamber.gc +++ b/goal_src/jak1/levels/sunken/sun-exit-chamber.gc @@ -1,281 +1,231 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "levels/sunken/sunken-obs.gc") (require "engine/game/task/task-control.gc") (require "levels/sunken/sun-iris-door.gc") (require "engine/common-obs/basebutton.gc") - -;; name: sun-exit-chamber.gc -;; name in dgo: sun-exit-chamber -;; dgos: L1, SUN, SUNKEN - (declare-type blue-eco-charger process-drawable) + (declare-type exit-chamber-button basebutton) ;; DECOMP BEGINS (deftype blue-eco-charger-orb (process-drawable) - ((parent-process (pointer blue-eco-charger) :overlay-at parent) - (orbit-rot vector :inline) - (orbit-rotv vector :inline) - (targ-orbit-rotv vector :inline) - (rest-pos vector :inline) - ) + ((parent-process (pointer blue-eco-charger) :overlay-at parent) + (orbit-rot vector :inline) + (orbit-rotv vector :inline) + (targ-orbit-rotv vector :inline) + (rest-pos vector :inline)) (:methods - (blue-eco-charger-orb-method-20 (_type_ float) vector) - ) + (blue-eco-charger-orb-method-20 (_type_ float) vector)) (:states - blue-eco-charger-orb-active - blue-eco-charger-orb-idle - ) - ) + blue-eco-charger-orb-active + blue-eco-charger-orb-idle)) - -(defskelgroup *blue-eco-charger-orb-sg* blue-eco-charger-orb blue-eco-charger-orb-lod0-jg blue-eco-charger-orb-idle-ja - ((blue-eco-charger-orb-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1.1) - ) +(defskelgroup *blue-eco-charger-orb-sg* + blue-eco-charger-orb + blue-eco-charger-orb-lod0-jg + blue-eco-charger-orb-idle-ja + ((blue-eco-charger-orb-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1.1)) (deftype blue-eco-charger (process-drawable) - ((root collide-shape :override) - (charger-id int32) - (open-level float) - (master entity-actor) - ) + ((root collide-shape :override) + (charger-id int32) + (open-level float) + (master entity-actor)) (:methods - (blue-eco-charger-method-20 (_type_) object) - (blue-eco-charger-method-21 (_type_ symbol) object) - ) + (blue-eco-charger-method-20 (_type_) object) + (blue-eco-charger-method-21 (_type_ symbol) object)) (:states - blue-eco-charger-close - blue-eco-charger-idle - (blue-eco-charger-open symbol) - blue-eco-charger-stuck-open - ) - ) - - -(defskelgroup *blue-eco-charger-sg* blue-eco-charger blue-eco-charger-lod0-jg blue-eco-charger-open-ja - ((blue-eco-charger-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1.9 0 2.7) - ) + blue-eco-charger-close + blue-eco-charger-idle + (blue-eco-charger-open symbol) + blue-eco-charger-stuck-open)) + +(defskelgroup *blue-eco-charger-sg* + blue-eco-charger + blue-eco-charger-lod0-jg + blue-eco-charger-open-ja + ((blue-eco-charger-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1.9 0 2.7)) (deftype exit-chamber-items (structure) - ((door-pos vector :inline) - (door-quat quaternion :inline) - (button-pos vector :inline) - (button-quat quaternion :inline) - (fcell-pos vector :inline) - ) - ) - + ((door-pos vector :inline) + (door-quat quaternion :inline) + (button-pos vector :inline) + (button-quat quaternion :inline) + (fcell-pos vector :inline))) (deftype exit-chamber (process-drawable) - ((root collide-shape-moving :override) - (chargers-active uint32) - (move-player? symbol) - (move-fcell? symbol) - (play-assistant-message? symbol) - (wave-scale float) - (button (pointer exit-chamber-button)) - (door (pointer sun-iris-door)) - (fcell-handle handle) - (orig-trans vector :inline) - (last-pos vector :inline) - ) + ((root collide-shape-moving :override) + (chargers-active uint32) + (move-player? symbol) + (move-fcell? symbol) + (play-assistant-message? symbol) + (wave-scale float) + (button (pointer exit-chamber-button)) + (door (pointer sun-iris-door)) + (fcell-handle handle) + (orig-trans vector :inline) + (last-pos vector :inline)) (:methods - (exit-chamber-method-20 (_type_ float) float) - (exit-chamber-method-21 (_type_ exit-chamber-items) vector) - (exit-chamber-method-22 (_type_) none) - (exit-chamber-method-23 (_type_ symbol) object) - (exit-chamber-method-24 (_type_ float) none) - ) + (exit-chamber-method-20 (_type_ float) float) + (exit-chamber-method-21 (_type_ exit-chamber-items) vector) + (exit-chamber-method-22 (_type_) none) + (exit-chamber-method-23 (_type_ symbol) object) + (exit-chamber-method-24 (_type_ float) none)) (:states - exit-chamber-charger-puzzle - exit-chamber-charger-puzzle-beaten - exit-chamber-idle-in-sunken - (exit-chamber-idle-in-village symbol) - exit-chamber-lower - exit-chamber-rise - ) - ) - - -(defskelgroup *exit-chamber-sg* exit-chamber exit-chamber-lod0-jg exit-chamber-idle-ja - ((exit-chamber-lod0-mg (meters 999999))) - :bounds (static-spherem 0 4 0 16.5) - ) + exit-chamber-charger-puzzle + exit-chamber-charger-puzzle-beaten + exit-chamber-idle-in-sunken + (exit-chamber-idle-in-village symbol) + exit-chamber-lower + exit-chamber-rise)) + +(defskelgroup *exit-chamber-sg* + exit-chamber + exit-chamber-lod0-jg + exit-chamber-idle-ja + ((exit-chamber-lod0-mg (meters 999999))) + :bounds (static-spherem 0 4 0 16.5)) (defpartgroup group-exit-chamber-ripples :id 620 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2512 :flags (is-3d))) - ) + :parts ((sp-item 2512 :flags (is-3d)))) (defpart 2513 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:birth-func 'birth-func-ocean-height) - (:num 0.25) - (:x (meters 5) (meters 3)) - (:scale-x (meters 12) (meters 6)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.02)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:userdata 2048.0) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2514) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:birth-func 'birth-func-ocean-height) + (:num 0.25) + (:x (meters 5) (meters 3)) + (:scale-x (meters 12) (meters 6)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.02)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:userdata 2048.0) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2514) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2514 - :init-specs ((:fade-a -0.094814815)) - ) + :init-specs ((:fade-a -0.094814815))) (defpart 2512 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:birth-func 'birth-func-ocean-height) - (:num 0.5) - (:x (meters 6) (meters 4)) - (:scale-x (meters 3.5) (meters 2.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:userdata 2048.0) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2514) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:birth-func 'birth-func-ocean-height) + (:num 0.5) + (:x (meters 6) (meters 4)) + (:scale-x (meters 3.5) (meters 2.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:userdata 2048.0) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2514) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defmethod blue-eco-charger-orb-method-20 ((this blue-eco-charger-orb) (arg0 float)) - (set-vector! - (-> this targ-orbit-rotv) - (rand-vu-float-range 72817.78 258503.11) - (rand-vu-float-range 72817.78 258503.11) - (rand-vu-float-range 72817.78 258503.11) - 1.0 - ) - (vector-float*! (-> this targ-orbit-rotv) (-> this targ-orbit-rotv) arg0) - ) + (set-vector! (-> this targ-orbit-rotv) + (rand-vu-float-range 72817.78 258503.11) + (rand-vu-float-range 72817.78 258503.11) + (rand-vu-float-range 72817.78 258503.11) + 1.0) + (vector-float*! (-> this targ-orbit-rotv) (-> this targ-orbit-rotv) arg0)) (defstate blue-eco-charger-orb-idle (blue-eco-charger-orb) - :code (behavior () - (set! (-> self root trans quad) (-> self rest-pos quad)) - (loop - (let ((f0-0 (-> self parent-process 0 open-level))) - (if (< 0.0 f0-0) - (go blue-eco-charger-orb-active) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self root trans quad) (-> self rest-pos quad)) + (loop + (let ((f0-0 (-> self parent-process 0 open-level))) (if (< 0.0 f0-0) (go blue-eco-charger-orb-active))) + (suspend))) + :post ja-post) (defstate blue-eco-charger-orb-active (blue-eco-charger-orb) - :code (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (blue-eco-charger-orb-method-20 self (-> self parent-process 0 open-level)) - (vector-reset! (-> self orbit-rotv)) - (loop - (let ((f30-0 (-> self parent-process 0 open-level))) - (if (>= 0.0 f30-0) - (go blue-eco-charger-orb-idle) - ) - (if (zero? (rand-vu-int-count 30)) - (blue-eco-charger-orb-method-20 self f30-0) - ) - (set! (-> self orbit-rotv x) - (seek-with-smooth (-> self orbit-rotv x) (-> self targ-orbit-rotv x) 873.81335 0.8 0.12136297) - ) - (set! (-> self orbit-rotv y) - (seek-with-smooth (-> self orbit-rotv y) (-> self targ-orbit-rotv y) 873.81335 0.8 0.12136297) - ) - (set! (-> self orbit-rotv z) - (seek-with-smooth (-> self orbit-rotv z) (-> self targ-orbit-rotv z) 873.81335 0.8 0.12136297) - ) - (let ((a1-5 (-> self orbit-rot)) - (v1-13 (-> self orbit-rot)) - (a0-6 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> self orbit-rotv) quad)) - (let ((f0-11 (seconds-per-frame))) - (.mov at-0 f0-11) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a0-6 quad) vf1) - (vector+! a1-5 v1-13 a0-6) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 x) (* 1228.8 f30-0 (cos (-> self orbit-rot x)))) - (set! (-> gp-0 y) (* 1228.8 f30-0 (cos (-> self orbit-rot y)))) - (set! (-> gp-0 z) (* 1228.8 f30-0 (cos (-> self orbit-rot z)))) - (vector+! (-> self root trans) gp-0 (-> self rest-pos)) - (set-vector! - gp-0 - (cos (* 436.90668 (the float (mod (current-time) 150)))) - (cos (* 247.39902 (the float (mod (current-time) 264)))) - (cos (* 601.7998 (the float (mod (current-time) 108)))) - 1.0 - ) - (vector-normalize! gp-0 1.0) - (quaternion-vector-angle! (-> self root quat) gp-0 (* 463.8075 (the float (mod (current-time) 141)))) - ) - ) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 x) (rand-vu-float-range -4096.0 4096.0)) - (set! (-> gp-1 y) (rand-vu-float-range -4096.0 4096.0)) - (set! (-> gp-1 z) (rand-vu-float-range -4096.0 4096.0)) - (vector+! gp-1 gp-1 (-> self root trans)) - (eco-blue-glow gp-1) - (set! (-> gp-1 x) (rand-vu-float-range -4096.0 4096.0)) - (set! (-> gp-1 y) (rand-vu-float-range -4096.0 4096.0)) - (set! (-> gp-1 z) (rand-vu-float-range -4096.0 4096.0)) - (vector+! gp-1 gp-1 (-> self root trans)) - (vector-lerp! gp-1 gp-1 (-> self parent-process 0 root trans) (rand-vu-float-range 0.2 0.8)) - (eco-blue-glow gp-1) - ) - (suspend) - ;; og:preserve-this + :code + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) (init-vf0-vector) - ) - ) - ) - :post ja-post - ) + (blue-eco-charger-orb-method-20 self (-> self parent-process 0 open-level)) + (vector-reset! (-> self orbit-rotv)) + (loop + (let ((f30-0 (-> self parent-process 0 open-level))) + (if (>= 0.0 f30-0) (go blue-eco-charger-orb-idle)) + (if (zero? (rand-vu-int-count 30)) (blue-eco-charger-orb-method-20 self f30-0)) + (set! (-> self orbit-rotv x) + (seek-with-smooth (-> self orbit-rotv x) (-> self targ-orbit-rotv x) 873.81335 0.8 0.12136297)) + (set! (-> self orbit-rotv y) + (seek-with-smooth (-> self orbit-rotv y) (-> self targ-orbit-rotv y) 873.81335 0.8 0.12136297)) + (set! (-> self orbit-rotv z) + (seek-with-smooth (-> self orbit-rotv z) (-> self targ-orbit-rotv z) 873.81335 0.8 0.12136297)) + (let ((a1-5 (-> self orbit-rot)) + (v1-13 (-> self orbit-rot)) + (a0-6 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> self orbit-rotv) quad)) + (let ((f0-11 (seconds-per-frame))) (.mov at-0 f0-11)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a0-6 quad) vf1) + (vector+! a1-5 v1-13 a0-6)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 x) (* 1228.8 f30-0 (cos (-> self orbit-rot x)))) + (set! (-> gp-0 y) (* 1228.8 f30-0 (cos (-> self orbit-rot y)))) + (set! (-> gp-0 z) (* 1228.8 f30-0 (cos (-> self orbit-rot z)))) + (vector+! (-> self root trans) gp-0 (-> self rest-pos)) + (set-vector! gp-0 + (cos (* 436.90668 (the float (mod (current-time) 150)))) + (cos (* 247.39902 (the float (mod (current-time) 264)))) + (cos (* 601.7998 (the float (mod (current-time) 108)))) + 1.0) + (vector-normalize! gp-0 1.0) + (quaternion-vector-angle! (-> self root quat) gp-0 (* 463.8075 (the float (mod (current-time) 141)))))) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 x) (rand-vu-float-range -4096.0 4096.0)) + (set! (-> gp-1 y) (rand-vu-float-range -4096.0 4096.0)) + (set! (-> gp-1 z) (rand-vu-float-range -4096.0 4096.0)) + (vector+! gp-1 gp-1 (-> self root trans)) + (eco-blue-glow gp-1) + (set! (-> gp-1 x) (rand-vu-float-range -4096.0 4096.0)) + (set! (-> gp-1 y) (rand-vu-float-range -4096.0 4096.0)) + (set! (-> gp-1 z) (rand-vu-float-range -4096.0 4096.0)) + (vector+! gp-1 gp-1 (-> self root trans)) + (vector-lerp! gp-1 gp-1 (-> self parent-process 0 root trans) (rand-vu-float-range 0.2 0.8)) + (eco-blue-glow gp-1)) + (suspend) + ;; og:preserve-this + (init-vf0-vector)))) + :post ja-post) (defbehavior blue-eco-charger-orb-init-by-other blue-eco-charger-orb ((arg0 entity-actor) (arg1 blue-eco-charger-orb)) (set! (-> self entity) arg0) @@ -290,158 +240,98 @@ (ja :group! blue-eco-charger-orb-idle-ja :num! min) (set-vector! (-> self orbit-rot) 0.0 0.0 0.0 1.0) (go blue-eco-charger-orb-idle) - (none) - ) + (none)) (defmethod blue-eco-charger-method-21 ((this blue-eco-charger) (arg0 symbol)) (let* ((v1-0 (-> this master)) - (a0-1 (if v1-0 - (-> v1-0 extra process) - ) - ) - ) + (a0-1 (if v1-0 (-> v1-0 extra process)))) (when (not a0-1) (set! (-> this master) (entity-actor-lookup (-> this entity) 'alt-actor 0)) - (let ((v1-3 (-> this master))) - (set! a0-1 (if v1-3 - (-> v1-3 extra process) - ) - ) - ) - ) - (if a0-1 - (send-event - a0-1 - 'notify - (if arg0 - 1 - 2 - ) - (-> this charger-id) - ) - ) - ) - ) + (let ((v1-3 (-> this master))) (set! a0-1 (if v1-3 (-> v1-3 extra process))))) + (if a0-1 (send-event a0-1 'notify (if arg0 1 2) (-> this charger-id))))) (defmethod blue-eco-charger-method-20 ((this blue-eco-charger)) (and (and *target* (>= 16384.0 (vector-vector-distance (-> this root trans) (-> *target* control trans)))) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - ) + (send-event *target* 'query 'powerup (pickup-type eco-blue)))) (defstate blue-eco-charger-idle (blue-eco-charger) - :code (behavior () - (set! (-> self open-level) 0.0) - (ja-channel-set! 1) - (ja :group! blue-eco-charger-open-ja :num! min) - (loop - (when (logtest? (-> self draw status) (draw-status was-drawn)) - (if (and (and *target* (>= 16384.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (not (send-event *target* 'query 'powerup (pickup-type eco-blue))) - ) - (level-hint-spawn - (text-id sunken-blue-eco-charger-hint) - "sksp0125" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (when (blue-eco-charger-method-20 self) - (increment-success-for-hint (text-id sunken-blue-eco-charger-hint)) - (go blue-eco-charger-open #t) - ) - (if (nonzero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (go blue-eco-charger-open #t) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self open-level) 0.0) + (ja-channel-set! 1) + (ja :group! blue-eco-charger-open-ja :num! min) + (loop + (when (logtest? (-> self draw status) (draw-status was-drawn)) + (if (and (and *target* (>= 16384.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (send-event *target* 'query 'powerup (pickup-type eco-blue)))) + (level-hint-spawn (text-id sunken-blue-eco-charger-hint) "sksp0125" (the-as entity #f) *entity-pool* (game-task none)))) + (when (blue-eco-charger-method-20 self) + (increment-success-for-hint (text-id sunken-blue-eco-charger-hint)) + (go blue-eco-charger-open #t)) + (if (nonzero? (get-reminder (get-task-control (game-task sunken-room)) 0)) (go blue-eco-charger-open #t)) + (suspend))) + :post ja-post) (defstate blue-eco-charger-open (blue-eco-charger) - :enter (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - (if arg0 - (sound-play "blue-eco-start") - ) - (blue-eco-charger-method-21 self #t) - ) - :trans (behavior () - (if (blue-eco-charger-method-20 self) - (set-time! (-> self state-time)) - ) - (update! (-> self sound)) - ) - :code (behavior ((arg0 symbol)) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja :num! (seek!)) - (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (loop - (cond - ((zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (when (time-elapsed? (-> self state-time) (seconds 20)) - (level-hint-spawn - (text-id sunken-blue-eco-charger-all-hint) - "sksp0133" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (go blue-eco-charger-close) - ) - ) - (else - (go blue-eco-charger-stuck-open) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior ((arg0 symbol)) + (set-time! (-> self state-time)) + (if arg0 (sound-play "blue-eco-start")) + (blue-eco-charger-method-21 self #t)) + :trans + (behavior () + (if (blue-eco-charger-method-20 self) (set-time! (-> self state-time))) + (update! (-> self sound))) + :code + (behavior ((arg0 symbol)) + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja :num! (seek!)) + (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -1))))) + (loop + (cond + ((zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) + (when (time-elapsed? (-> self state-time) (seconds 20)) + (level-hint-spawn (text-id sunken-blue-eco-charger-all-hint) + "sksp0133" + (the-as entity #f) + *entity-pool* + (game-task none)) + (go blue-eco-charger-close))) + (else (go blue-eco-charger-stuck-open))) + (suspend))) + :post ja-post) (defstate blue-eco-charger-stuck-open (blue-eco-charger) - :trans (behavior () - (update! (-> self sound)) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :trans + (behavior () + (update! (-> self sound))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate blue-eco-charger-close (blue-eco-charger) - :exit (behavior () - (stop! (-> self sound)) - ) - :code (behavior () - (ja-no-eval :num! (seek! 0.0)) - (while (not (ja-done? 0)) - (when (blue-eco-charger-method-20 self) - (increment-success-for-hint (text-id sunken-blue-eco-charger-hint)) - (go blue-eco-charger-open #t) - ) - (if (nonzero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (go blue-eco-charger-open #t) - ) - (update! (-> self sound)) - (suspend) - (ja :num! (seek! 0.0)) - (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (blue-eco-charger-method-21 self #f) - (go blue-eco-charger-idle) - ) - :post ja-post - ) + :exit + (behavior () + (stop! (-> self sound))) + :code + (behavior () + (ja-no-eval :num! (seek! 0.0)) + (while (not (ja-done? 0)) + (when (blue-eco-charger-method-20 self) + (increment-success-for-hint (text-id sunken-blue-eco-charger-hint)) + (go blue-eco-charger-open #t)) + (if (nonzero? (get-reminder (get-task-control (game-task sunken-room)) 0)) (go blue-eco-charger-open #t)) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! 0.0)) + (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -1))))) + (blue-eco-charger-method-21 self #f) + (go blue-eco-charger-idle)) + :post ja-post) (defmethod init-from-entity! ((this blue-eco-charger) (arg0 entity-actor)) (set! (-> this open-level) 0.0) @@ -453,28 +343,18 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 8192.0 0.0 0.0 16384.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 6553.6) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *blue-eco-charger-sg* '()) (let ((f0-6 (res-lump-float (-> this entity) 'rotoffset))) - (if (!= f0-6 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-6) - ) - ) + (if (!= f0-6 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-6))) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) @@ -482,65 +362,51 @@ (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this charger-id) (+ (actor-count-before (-> this link)) 1)) (process-spawn blue-eco-charger-orb (-> this entity) this :to this) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "blue-eco-charg" :fo-max 35) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "blue-eco-charg" :fo-max 35) (-> this root trans))) (if (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (go blue-eco-charger-idle) - (go blue-eco-charger-open #f) - ) - (none) - ) - -(deftype exit-chamber-button (basebutton) - () - ) + (go blue-eco-charger-idle) + (go blue-eco-charger-open #f)) + (none)) +(deftype exit-chamber-button (basebutton) ()) (defbehavior exit-chamber-button-init-by-other exit-chamber-button ((arg0 vector) (arg1 quaternion) (arg2 entity-actor) (arg3 symbol)) (basebutton-init-by-other (the-as entity-actor #f) arg0 arg1 arg2 arg3 0.0) - (none) - ) + (none)) (defmethod exit-chamber-method-20 ((this exit-chamber) (arg0 float)) (set! (-> this root trans y) - (+ (-> this orig-trans y) (* 2252.8 arg0 (cos (* 36.40889 (the float (mod (current-time) 1800)))))) - ) - ) + (+ (-> this orig-trans y) (* 2252.8 arg0 (cos (* 36.40889 (the float (mod (current-time) 1800)))))))) (defpart 2515 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.6) (meters 0.2)) - (:scale-y (meters 0.3) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:accel-y (meters 0.00066666666)) - (:friction 0.96) - (:timer (seconds 5)) - (:flags (bit2 bit3 bit14)) - (:userdata 0.0) - (:func 'check-water-level-above-and-die) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.6) (meters 0.2)) + (:scale-y (meters 0.3) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:accel-y (meters 0.00066666666)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (bit2 bit3 bit14)) + (:userdata 0.0) + (:func 'check-water-level-above-and-die))) (defmethod exit-chamber-method-24 ((this exit-chamber) (arg0 float)) (let ((s4-0 (-> this node-list data 3 bone transform)) (f30-0 (rand-vu-float-range 0.0 65536.0)) (f28-0 (rand-vu-float-range 8192.0 40960.0)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (set-vector! gp-0 (* (sin f30-0) arg0) f28-0 (* (cos f30-0) arg0) 1.0) (vector-matrix*! gp-0 gp-0 s4-0) (vector-float*! gp-0 gp-0 (/ 1.0 (-> gp-0 w))) (set! (-> *part-id-table* 2515 init-specs 13 initial-valuef) (+ 24576.0 (-> gp-0 y))) - (launch-particles (-> *part-id-table* 2515) gp-0) - ) - (none) - ) + (launch-particles (-> *part-id-table* 2515) gp-0)) + (none)) (defmethod exit-chamber-method-21 ((this exit-chamber) (arg0 exit-chamber-items)) (let ((s5-0 (-> this node-list data 3 bone transform))) @@ -553,36 +419,27 @@ (vector-float*! (-> arg0 button-pos) (-> arg0 button-pos) (/ 1.0 (-> arg0 button-pos w))) (quaternion-copy! (-> arg0 button-quat) (-> arg0 door-quat)) (set-vector! (-> arg0 fcell-pos) 0.0 68300.8 0.0 1.0) - (vector-matrix*! (-> arg0 fcell-pos) (-> arg0 fcell-pos) s5-0) - ) - (vector-float*! (-> arg0 fcell-pos) (-> arg0 fcell-pos) (/ 1.0 (-> arg0 fcell-pos w))) - ) + (vector-matrix*! (-> arg0 fcell-pos) (-> arg0 fcell-pos) s5-0)) + (vector-float*! (-> arg0 fcell-pos) (-> arg0 fcell-pos) (/ 1.0 (-> arg0 fcell-pos w)))) (defmethod exit-chamber-method-23 ((this exit-chamber) (arg0 symbol)) (new 'stack-no-clear 'vector) (let ((s5-0 (new 'stack-no-clear 'vector))) (vector<-cspace! (-> this last-pos) (-> this node-list data 3)) (vector-! s5-0 (-> this last-pos) (-> this root trans)) - (set! (-> this draw bounds quad) (-> s5-0 quad)) - ) + (set! (-> this draw bounds quad) (-> s5-0 quad))) (+! (-> this draw bounds y) 16384.0) (set! (-> this draw bounds w) 67584.0) (let ((s5-1 (new 'stack-no-clear 'exit-chamber-items))) (exit-chamber-method-21 this s5-1) - (if (-> this button) - (send-event (ppointer->process (-> this button)) 'move-to (-> s5-1 button-pos) (-> s5-1 button-quat)) - ) + (if (-> this button) (send-event (ppointer->process (-> this button)) 'move-to (-> s5-1 button-pos) (-> s5-1 button-quat))) (when (and *target* (-> this move-player?)) (let ((a1-6 (new 'stack-no-clear 'vector))) (set! (-> a1-6 quad) (-> s5-1 button-pos quad)) (+! (-> a1-6 y) 2662.4) - (move-to-point! (-> *target* control) a1-6) - ) - (vector-reset! (-> *target* control transv)) - ) - (if (-> this door) - (send-event (ppointer->process (-> this door)) 'move-to (-> s5-1 door-pos) (-> s5-1 door-quat)) - ) + (move-to-point! (-> *target* control) a1-6)) + (vector-reset! (-> *target* control transv))) + (if (-> this door) (send-event (ppointer->process (-> this door)) 'move-to (-> s5-1 door-pos) (-> s5-1 door-quat))) (when arg0 (let ((a0-12 (handle->process (-> this fcell-handle)))) (when a0-12 @@ -591,437 +448,297 @@ (set! (-> this move-fcell?) #t) (let ((v1-50 (-> this entity extra perm))) (logior! (-> v1-50 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-50 user-int8 0) 1) - ) - ) - (send-event a0-12 'trans (-> s5-1 fcell-pos)) - ) - ) - ) - ) - ) - ) + (set! (-> v1-50 user-int8 0) 1))) + (send-event a0-12 'trans (-> s5-1 fcell-pos)))))))) (defstate exit-chamber-charger-puzzle (exit-chamber) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('notify) - (case (-> block param 0) - ((1) - (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (let* ((a1-2 (-> block param 1)) - (v1-5 (logior (-> self chargers-active) (ash 1 a1-2))) - ) - (set! (-> self chargers-active) v1-5) - (when (= v1-5 62) - (save-reminder (get-task-control (game-task sunken-room)) 1 0) - (go exit-chamber-charger-puzzle-beaten) - (return #t) - v0-0 - ) - ) - ) - ) - ((2) - (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (let ((a1-6 (-> block param 1))) - (set! v0-0 (logclear (-> self chargers-active) (ash 1 a1-6))) - ) - (set! (-> self chargers-active) (the-as uint v0-0)) - v0-0 - ) - ) - ) - ) - ) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :code (behavior () - (loop - (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root trans))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('notify) + (case (-> block param 0) + ((1) + (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) + (let* ((a1-2 (-> block param 1)) + (v1-5 (logior (-> self chargers-active) (ash 1 a1-2)))) + (set! (-> self chargers-active) v1-5) + (when (= v1-5 62) + (save-reminder (get-task-control (game-task sunken-room)) 1 0) + (go exit-chamber-charger-puzzle-beaten) + (return #t) + v0-0)))) + ((2) + (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) + (let ((a1-6 (-> block param 1))) (set! v0-0 (logclear (-> self chargers-active) (ash 1 a1-6)))) + (set! (-> self chargers-active) (the-as uint v0-0)) + v0-0)))))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :code + (behavior () + (loop + (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root trans))) (logclear! (-> self draw status) (draw-status hidden)) - (logior! (-> self draw status) (draw-status hidden)) - ) - (suspend) - ) - ) - :post ja-post - ) + (logior! (-> self draw status) (draw-status hidden))) + (suspend))) + :post ja-post) (defstate exit-chamber-charger-puzzle-beaten (exit-chamber) - :code (behavior () - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "exit-chamber-door-open" 0 #f '() :to self) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 2.5)) - (suspend) - ) - (send-event (ppointer->process (-> self door)) 'trigger) - (go exit-chamber-idle-in-sunken) - ) - ) + :code + (behavior () + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "exit-chamber-door-open" 0 #f '() :to self) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 2.5)) + (suspend)) + (send-event (ppointer->process (-> self door)) 'trigger) + (go exit-chamber-idle-in-sunken))) (defstate exit-chamber-idle-in-sunken (exit-chamber) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-1 object)) - (case message - (('trigger) - (go exit-chamber-rise) - (return #t) - v0-1 - ) - (('notify) - (when (and (= (-> proc type) fuel-cell) (= (-> block param 0) 'pickup)) - (let ((a0-5 (handle->process (-> self fcell-handle)))) - (when a0-5 - (let ((v1-10 (new 'stack-no-clear 'vector))) - (set-vector! v1-10 0.0 64102.4 0.0 1.0) - (vector+! v1-10 v1-10 (-> self last-pos)) - (send-event a0-5 'set-movie-pos v1-10) - ) - ) - ) - ) - ) - ) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :code (behavior () - (save-reminder (get-task-control (game-task sunken-room)) 1 0) - (set! (-> self wave-scale) 0.0) - (if (-> self door) - (send-event (ppointer->process (-> self door)) 'trigger) - ) - (if (-> self button) - (send-event (ppointer->process (-> self button)) 'untrigger) - ) - (loop - (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root trans))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-1 object)) + (case message + (('trigger) (go exit-chamber-rise) (return #t) v0-1) + (('notify) + (when (and (= (-> proc type) fuel-cell) (= (-> block param 0) 'pickup)) + (let ((a0-5 (handle->process (-> self fcell-handle)))) + (when a0-5 + (let ((v1-10 (new 'stack-no-clear 'vector))) + (set-vector! v1-10 0.0 64102.4 0.0 1.0) + (vector+! v1-10 v1-10 (-> self last-pos)) + (send-event a0-5 'set-movie-pos v1-10)))))))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :code + (behavior () + (save-reminder (get-task-control (game-task sunken-room)) 1 0) + (set! (-> self wave-scale) 0.0) + (if (-> self door) (send-event (ppointer->process (-> self door)) 'trigger)) + (if (-> self button) (send-event (ppointer->process (-> self button)) 'untrigger)) + (loop + (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root trans))) (logclear! (-> self draw status) (draw-status hidden)) - (logior! (-> self draw status) (draw-status hidden)) - ) - (suspend) - ) - ) - ) + (logior! (-> self draw status) (draw-status hidden))) + (suspend)))) (defstate exit-chamber-rise (exit-chamber) - :enter (behavior () - (set! (-> self move-player?) #f) - ) - :trans (behavior () - (if (not (-> self move-player?)) - (rider-trans) - ) - ) - :code (behavior () - (aybabtu 2) - (let ((v1-1 (handle->process (-> self fcell-handle)))) - (if v1-1 - (clear-collide-with-as (-> (the-as fuel-cell v1-1) root)) - ) - ) - (close-specific-task! (game-task sunken-room) (task-status need-reminder)) - (send-event *target* 'reset-pickup 'eco) - (let ((gp-0 (get-process *default-dead-pool* sunkencam #x4000))) - (set! (-> (the-as sunkencam (-> (when gp-0 - (let ((t9-5 (method-of-type sunkencam activate))) - (t9-5 (the-as sunkencam gp-0) self 'sunkencam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-0 - pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - ) - (-> gp-0 ppointer) - ) - 0 - ) - ) - seq - ) - (the-as uint 0) - ) - ) - 0 - (suspend) - (set-time! (-> self state-time)) - (let ((gp-1 #f)) - (ja-no-eval :group! exit-chamber-start-door-shut-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set! (-> self move-player?) #f)) + :trans + (behavior () + (if (not (-> self move-player?)) (rider-trans))) + :code + (behavior () + (aybabtu 2) + (let ((v1-1 (handle->process (-> self fcell-handle)))) + (if v1-1 (clear-collide-with-as (-> (the-as fuel-cell v1-1) root)))) + (close-specific-task! (game-task sunken-room) (task-status need-reminder)) + (send-event *target* 'reset-pickup 'eco) + (let ((gp-0 (get-process *default-dead-pool* sunkencam #x4000))) + (set! (-> (the-as sunkencam + (-> (when gp-0 + (let ((t9-5 (method-of-type sunkencam activate))) + (t9-5 (the-as sunkencam gp-0) self 'sunkencam (the-as pointer #x70004000))) + (run-now-in-process gp-0 pov-camera-init-by-other (-> self root trans) *sunkencam-sg* "qbert-show-door-open" 0 #f '()) + (-> gp-0 ppointer)) + 0)) + seq) + (the-as uint 0))) + 0 + (suspend) + (set-time! (-> self state-time)) + (let ((gp-1 #f)) + (ja-no-eval :group! exit-chamber-start-door-shut-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-1) (time-elapsed? (-> self state-time) (seconds 0.75)) (-> self door)) + (set! gp-1 #t) + (send-event (ppointer->process (-> self door)) 'untrigger)) + (suspend) + (ja :num! (seek!)))) + (set! (-> self move-player?) #t) + (ja-no-eval :group! exit-chamber-start-in-room-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (when (and (not gp-1) (time-elapsed? (-> self state-time) (seconds 0.75)) (-> self door)) - (set! gp-1 #t) - (send-event (ppointer->process (-> self door)) 'untrigger) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (set! (-> self move-player?) #t) - (ja-no-eval :group! exit-chamber-start-in-room-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (load-state-want-levels 'sunken 'village2) - (ja-no-eval :group! exit-chamber-middle-in-water-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (exit-chamber-method-24 self 51200.0) - (update-trans! (-> self sound) (-> self last-pos)) - (update! (-> self sound)) - (suspend) - (ja :num! (seek!)) - ) - (stop! (-> self sound)) - (load-state-want-display-level 'village2 'display) - (load-state-want-display-level 'sunken 'special) - (let ((gp-2 #f)) - (ja-no-eval :group! exit-chamber-end-out-of-water-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!))) + (load-state-want-levels 'sunken 'village2) + (ja-no-eval :group! exit-chamber-middle-in-water-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (exit-chamber-method-24 self 51200.0) + (update-trans! (-> self sound) (-> self last-pos)) + (update! (-> self sound)) + (suspend) + (ja :num! (seek!))) + (stop! (-> self sound)) + (load-state-want-display-level 'village2 'display) + (load-state-want-display-level 'sunken 'special) + (let ((gp-2 #f)) + (ja-no-eval :group! exit-chamber-end-out-of-water-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self wave-scale) 1.0 0.0016666667) + (exit-chamber-method-20 self (-> self wave-scale)) + (if (and (-> self move-player?) (>= (ja-aframe-num 0) 310.0)) (set! (-> self move-player?) #f)) + (let ((a0-36 (new 'stack-no-clear 'vector))) + (set! (-> a0-36 quad) (-> self last-pos quad)) + (+! (-> a0-36 y) 51814.4) + (when (>= (-> a0-36 y) (ocean-get-height a0-36)) + (if (not gp-2) (set! gp-2 #t)) + (spawn (-> self part) (-> self last-pos)) + (spawn (-> self part) (-> self last-pos)) + (spawn (-> self part) (-> self last-pos)))) + (suspend) + (ja :num! (seek!)))) + (kill-and-free-particles (-> self part)) + (load-state-want-vis 'vi2) + (send-event *target* 'dry) + (let ((v1-143 (handle->process (-> self fcell-handle)))) + (if v1-143 (restore-collide-with-as (-> (the-as fuel-cell v1-143) root)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.5)) (seek! (-> self wave-scale) 1.0 0.0016666667) (exit-chamber-method-20 self (-> self wave-scale)) - (if (and (-> self move-player?) (>= (ja-aframe-num 0) 310.0)) - (set! (-> self move-player?) #f) - ) - (let ((a0-36 (new 'stack-no-clear 'vector))) - (set! (-> a0-36 quad) (-> self last-pos quad)) - (+! (-> a0-36 y) 51814.4) - (when (>= (-> a0-36 y) (ocean-get-height a0-36)) - (if (not gp-2) - (set! gp-2 #t) - ) - (spawn (-> self part) (-> self last-pos)) - (spawn (-> self part) (-> self last-pos)) - (spawn (-> self part) (-> self last-pos)) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (kill-and-free-particles (-> self part)) - (load-state-want-vis 'vi2) - (send-event *target* 'dry) - (let ((v1-143 (handle->process (-> self fcell-handle)))) - (if v1-143 - (restore-collide-with-as (-> (the-as fuel-cell v1-143) root)) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.5)) - (seek! (-> self wave-scale) 1.0 0.0016666667) - (exit-chamber-method-20 self (-> self wave-scale)) - (suspend) - ) - (if (-> self door) - (send-event (ppointer->process (-> self door)) 'trigger) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 2.5)) - (seek! (-> self wave-scale) 1.0 0.0016666667) - (exit-chamber-method-20 self (-> self wave-scale)) - (suspend) - ) - (go exit-chamber-idle-in-village #f) - ) - :post (behavior () - (if (-> self move-player?) - (transform-post) - (rider-post) - ) - (exit-chamber-method-23 self #t) - ) - ) + (suspend)) + (if (-> self door) (send-event (ppointer->process (-> self door)) 'trigger)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 2.5)) + (seek! (-> self wave-scale) 1.0 0.0016666667) + (exit-chamber-method-20 self (-> self wave-scale)) + (suspend)) + (go exit-chamber-idle-in-village #f)) + :post + (behavior () + (if (-> self move-player?) (transform-post) (rider-post)) + (exit-chamber-method-23 self #t))) (defstate exit-chamber-idle-in-village (exit-chamber) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go exit-chamber-lower) - ) - (('notify) - (when (and (= (-> proc type) fuel-cell) (= (-> block param 0) 'pickup)) - (let ((a0-5 (handle->process (-> self fcell-handle)))) - (when a0-5 - (let ((v1-8 (new 'stack-no-clear 'vector))) - (set-vector! v1-8 0.0 64102.4 0.0 1.0) - (vector+! v1-8 v1-8 (-> self last-pos)) - (send-event a0-5 'set-movie-pos v1-8) - ) - ) - ) - ) - ) - ) - ) - :enter (behavior ((arg0 symbol)) - (logior! (-> self mask) (process-mask platform)) - (set-time! (-> self state-time)) - ) - :exit (behavior () - (logclear! (-> self mask) (process-mask platform)) - ) - :trans (behavior () - (rider-trans) - (when *target* - (let ((f30-0 (vector-vector-xz-distance (target-pos 0) (-> self last-pos)))) - (when (-> self door) - (if (and *target* (>= 114688.0 f30-0)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go exit-chamber-lower)) + (('notify) + (when (and (= (-> proc type) fuel-cell) (= (-> block param 0) 'pickup)) + (let ((a0-5 (handle->process (-> self fcell-handle)))) + (when a0-5 + (let ((v1-8 (new 'stack-no-clear 'vector))) + (set-vector! v1-8 0.0 64102.4 0.0 1.0) + (vector+! v1-8 v1-8 (-> self last-pos)) + (send-event a0-5 'set-movie-pos v1-8)))))))) + :enter + (behavior ((arg0 symbol)) + (logior! (-> self mask) (process-mask platform)) + (set-time! (-> self state-time))) + :exit + (behavior () + (logclear! (-> self mask) (process-mask platform))) + :trans + (behavior () + (rider-trans) + (when *target* + (let ((f30-0 (vector-vector-xz-distance (target-pos 0) (-> self last-pos)))) + (when (-> self door) + (if (and *target* (>= 114688.0 f30-0)) (send-event (ppointer->process (-> self door)) 'trigger) - (send-event (ppointer->process (-> self door)) 'untrigger) - ) - ) - (when (and (-> self play-assistant-message?) (>= f30-0 57344.0)) - (set! (-> self play-assistant-message?) #f) - (level-hint-spawn - (text-id sunken-room-resolution) - "asstvb22" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (set! (-> self move-player?) #f) - (set! (-> self wave-scale) 1.0) - (save-reminder (get-task-control (game-task sunken-room)) 2 0) - (if (-> self button) - (send-event (ppointer->process (-> self button)) 'untrigger) - ) - (when arg0 - (logior! (-> self draw status) (draw-status skip-bones)) - (exit-chamber-method-20 self 1.0) - (suspend) - (logclear! (-> self draw status) (draw-status skip-bones)) - ) - (loop - (exit-chamber-method-20 self 1.0) - (suspend) - ) - ) - :post (behavior () - (rider-post) - (exit-chamber-method-23 self #t) - (if (and *target* (>= (vector-vector-xz-distance (target-pos 0) (-> self last-pos)) 40960.0)) - (spawn (-> self part) (-> self last-pos)) - ) - ) - ) + (send-event (ppointer->process (-> self door)) 'untrigger))) + (when (and (-> self play-assistant-message?) (>= f30-0 57344.0)) + (set! (-> self play-assistant-message?) #f) + (level-hint-spawn (text-id sunken-room-resolution) "asstvb22" (the-as entity #f) *entity-pool* (game-task none)))))) + :code + (behavior ((arg0 symbol)) + (set! (-> self move-player?) #f) + (set! (-> self wave-scale) 1.0) + (save-reminder (get-task-control (game-task sunken-room)) 2 0) + (if (-> self button) (send-event (ppointer->process (-> self button)) 'untrigger)) + (when arg0 + (logior! (-> self draw status) (draw-status skip-bones)) + (exit-chamber-method-20 self 1.0) + (suspend) + (logclear! (-> self draw status) (draw-status skip-bones))) + (loop + (exit-chamber-method-20 self 1.0) + (suspend))) + :post + (behavior () + (rider-post) + (exit-chamber-method-23 self #t) + (if (and *target* (>= (vector-vector-xz-distance (target-pos 0) (-> self last-pos)) 40960.0)) + (spawn (-> self part) (-> self last-pos))))) (defstate exit-chamber-lower (exit-chamber) - :enter (behavior () - (set! (-> self move-player?) #t) - (let ((v1-2 (handle->process (-> self fcell-handle)))) - (if v1-2 - (clear-collide-with-as (-> (the-as fuel-cell v1-2) root)) - ) - ) - ) - :trans (behavior () - (if (not (-> self move-player?)) - (rider-trans) - ) - (seek! (-> self wave-scale) 0.0 0.0016666667) - (exit-chamber-method-20 self (-> self wave-scale)) - ) - :code (behavior () - (let ((v1-1 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> v1-1 0)) seq) (the-as uint 1)) - ) - (load-state-want-display-level 'sunken 'display) - (suspend) - (set-time! (-> self state-time)) - (let ((gp-1 #f) - (s5-0 #f) - ) - (ja-no-eval :group! exit-chamber-dive-start-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set! (-> self move-player?) #t) + (let ((v1-2 (handle->process (-> self fcell-handle)))) + (if v1-2 (clear-collide-with-as (-> (the-as fuel-cell v1-2) root))))) + :trans + (behavior () + (if (not (-> self move-player?)) (rider-trans)) + (seek! (-> self wave-scale) 0.0 0.0016666667) + (exit-chamber-method-20 self (-> self wave-scale))) + :code + (behavior () + (let ((v1-1 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + :to + self))) + (set! (-> (the-as sunkencam (-> v1-1 0)) seq) (the-as uint 1))) + (load-state-want-display-level 'sunken 'display) + (suspend) + (set-time! (-> self state-time)) + (let ((gp-1 #f) + (s5-0 #f)) + (ja-no-eval :group! exit-chamber-dive-start-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-1) (time-elapsed? (-> self state-time) (seconds 0.25)) (-> self door)) + (set! gp-1 #t) + (send-event (ppointer->process (-> self door)) 'untrigger)) + (when (+ (current-time) (seconds -0.1)) + (let ((a0-9 (new 'stack-no-clear 'vector))) + (set! (-> a0-9 quad) (-> self last-pos quad)) + (+! (-> a0-9 y) 64102.4) + (when (< (-> a0-9 y) (+ 12288.0 (ocean-get-height a0-9))) + (if (not s5-0) (set! s5-0 #t)))) + (spawn (-> self part) (-> self last-pos))) + (suspend) + (ja :num! (seek!)))) + (load-state-want-levels 'sunken 'sunkenb) + (kill-and-free-particles (-> self part)) + (ja-no-eval :group! exit-chamber-dive-middle-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (when (and (not gp-1) (time-elapsed? (-> self state-time) (seconds 0.25)) (-> self door)) - (set! gp-1 #t) - (send-event (ppointer->process (-> self door)) 'untrigger) - ) - (when (+ (current-time) (seconds -0.1)) - (let ((a0-9 (new 'stack-no-clear 'vector))) - (set! (-> a0-9 quad) (-> self last-pos quad)) - (+! (-> a0-9 y) 64102.4) - (when (< (-> a0-9 y) (+ 12288.0 (ocean-get-height a0-9))) - (if (not s5-0) - (set! s5-0 #t) - ) - ) - ) - (spawn (-> self part) (-> self last-pos)) - ) + (exit-chamber-method-24 self 47104.0) + (update-trans! (-> self sound) (-> self last-pos)) + (update! (-> self sound)) (suspend) - (ja :num! (seek!)) - ) - ) - (load-state-want-levels 'sunken 'sunkenb) - (kill-and-free-particles (-> self part)) - (ja-no-eval :group! exit-chamber-dive-middle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (exit-chamber-method-24 self 47104.0) - (update-trans! (-> self sound) (-> self last-pos)) - (update! (-> self sound)) - (suspend) - (ja :num! (seek!)) - ) - (stop! (-> self sound)) - (load-state-want-display-level 'sunkenb 'display) - (load-state-want-vis 'sub) - (ja-no-eval :group! exit-chamber-dive-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self move-player?) #f) - (if (-> self door) - (send-event (ppointer->process (-> self door)) 'trigger) - ) - (let ((v1-109 (handle->process (-> self fcell-handle)))) - (if v1-109 - (restore-collide-with-as (-> (the-as fuel-cell v1-109) root)) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (suspend) - ) - (set-continue! *game-info* "sunkenb-start") - (go exit-chamber-idle-in-sunken) - ) - :post (behavior () - (if (-> self move-player?) - (transform-post) - (rider-post) - ) - (exit-chamber-method-23 self #t) - ) - ) + (ja :num! (seek!))) + (stop! (-> self sound)) + (load-state-want-display-level 'sunkenb 'display) + (load-state-want-vis 'sub) + (ja-no-eval :group! exit-chamber-dive-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self move-player?) #f) + (if (-> self door) (send-event (ppointer->process (-> self door)) 'trigger)) + (let ((v1-109 (handle->process (-> self fcell-handle)))) + (if v1-109 (restore-collide-with-as (-> (the-as fuel-cell v1-109) root)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (suspend)) + (set-continue! *game-info* "sunkenb-start") + (go exit-chamber-idle-in-sunken)) + :post + (behavior () + (if (-> self move-player?) (transform-post) (rider-post)) + (exit-chamber-method-23 self #t))) (defmethod init-from-entity! ((this exit-chamber) (arg0 entity-actor)) (process-entity-status! this (entity-perm-status bit-3) #t) @@ -1034,9 +751,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1045,12 +760,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 67584.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *exit-chamber-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -1059,109 +772,55 @@ (ja-channel-set! 1) (let ((s4-1 (get-reminder (get-task-control (game-task sunken-room)) 0))) (let ((s2-0 #f) - (s3-1 (new 'stack-no-clear 'matrix)) - ) - (let ((a0-17 (-> this entity extra perm))) - (set! (-> this move-fcell?) (nonzero? (-> a0-17 user-int8 0))) - ) + (s3-1 (new 'stack-no-clear 'matrix))) + (let ((a0-17 (-> this entity extra perm))) (set! (-> this move-fcell?) (nonzero? (-> a0-17 user-int8 0)))) (let ((v1-35 s4-1)) (cond ((zero? v1-35) (set! (-> this chargers-active) (the-as uint 0)) (let ((s1-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s1-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s1-0 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s1-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s1-0 frame-num) 0.0))) ((= v1-35 1) (set! (-> this chargers-active) (the-as uint 62)) (let ((s1-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s1-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s1-1 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s1-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s1-1 frame-num) 0.0))) ((= v1-35 2) (set! (-> this chargers-active) (the-as uint 62)) (let ((s1-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s1-2 - (the-as art-joint-anim (-> this draw art-group data 6)) - num-func-identity - ) - (set! (-> s1-2 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 6)) data 0 length) -1)) - ) - ) - ) - ) - ) + (joint-control-channel-group-eval! s1-2 (the-as art-joint-anim (-> this draw art-group data 6)) num-func-identity) + (set! (-> s1-2 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 6)) data 0 length) -1))))))) (ja-post) (update-transforms! (-> this root)) (exit-chamber-method-21 this (the-as exit-chamber-items s3-1)) (let ((s1-3 #t)) (let ((v1-64 s4-1)) (cond - ((zero? v1-64) - (set! s1-3 #f) - ) + ((zero? v1-64) (set! s1-3 #f)) ((= v1-64 2) - (if (or (not *target*) (< 114688.0 (vector-vector-xz-distance (target-pos 0) (-> this last-pos)))) - (set! s1-3 #f) - ) - ) - ) - ) - (set! (-> this door) (process-spawn sun-iris-door (-> s3-1 vector) (-> s3-1 vector 1) s1-3 :to this)) - ) - (set! (-> this button) - (process-spawn exit-chamber-button (-> s3-1 vector 2) (-> s3-1 vector 3) arg0 #f :to this) - ) + (if (or (not *target*) (< 114688.0 (vector-vector-xz-distance (target-pos 0) (-> this last-pos)))) (set! s1-3 #f))))) + (set! (-> this door) (process-spawn sun-iris-door (-> s3-1 vector) (-> s3-1 vector 1) s1-3 :to this))) + (set! (-> this button) (process-spawn exit-chamber-button (-> s3-1 vector 2) (-> s3-1 vector 3) arg0 #f :to this)) (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "chamber-move" :fo-min 300 :fo-max 400) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "chamber-move" :fo-min 300 :fo-max 400) (-> this root trans))) (when (not (task-complete? *game-info* (game-task sunken-room))) (let ((a0-40 (new 'stack-no-clear 'vector))) - (if s2-0 - (set! (-> a0-40 quad) (-> (&+ s3-1 64) vector 0 quad)) - (set-vector! a0-40 2357755.5 -882327.1 -6879603.0 1.0) - ) - (set! (-> this fcell-handle) (ppointer->handle (birth-pickup-at-point - a0-40 - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - ) - ) - ) - ) + (if s2-0 (set! (-> a0-40 quad) (-> (&+ s3-1 64) vector 0 quad)) (set-vector! a0-40 2357755.5 -882327.1 -6879603.0 1.0)) + (set! (-> this fcell-handle) + (ppointer->handle (birth-pickup-at-point a0-40 + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f))))))) (set! (-> this orig-trans quad) (-> this root trans quad)) (set! (-> this last-pos quad) (-> this root trans quad)) (set! (-> this move-player?) #f) (exit-chamber-method-23 this #t) (set! (-> this move-player?) #f) (cond - ((zero? s4-1) - (go exit-chamber-charger-puzzle) - ) - ((= s4-1 1) - (go exit-chamber-idle-in-sunken) - ) - ((= s4-1 2) - (go exit-chamber-idle-in-village #t) - ) - ) - ) - (none) - ) + ((zero? s4-1) (go exit-chamber-charger-puzzle)) + ((= s4-1 1) (go exit-chamber-idle-in-sunken)) + ((= s4-1 2) (go exit-chamber-idle-in-village #t)))) + (none)) diff --git a/goal_src/jak1/levels/sunken/sun-iris-door.gc b/goal_src/jak1/levels/sunken/sun-iris-door.gc index b1556ddfc3..ab8916a5eb 100644 --- a/goal_src/jak1/levels/sunken/sun-iris-door.gc +++ b/goal_src/jak1/levels/sunken/sun-iris-door.gc @@ -1,45 +1,37 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") -;; name: sun-iris-door.gc -;; name in dgo: sun-iris-door -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (deftype sun-iris-door (process-drawable) - ((root collide-shape :override) - (timeout float) - (proximity? symbol) - (directional-proximity? symbol) - (move-to? symbol) - (locked-by-task? symbol) - (close-dist float) - (open-dist float) - (move-to-pos vector :inline) - (outward-vec vector :inline) - (move-to-quat quaternion :inline) - ) + ((root collide-shape :override) + (timeout float) + (proximity? symbol) + (directional-proximity? symbol) + (move-to? symbol) + (locked-by-task? symbol) + (close-dist float) + (open-dist float) + (move-to-pos vector :inline) + (outward-vec vector :inline) + (move-to-quat quaternion :inline)) (:methods - (should-close? (_type_) symbol) - (should-open? (_type_) symbol) - ) + (should-close? (_type_) symbol) + (should-open? (_type_) symbol)) (:states - sun-iris-door-closed - sun-iris-door-closing - sun-iris-door-open - sun-iris-door-opening - ) - ) + sun-iris-door-closed + sun-iris-door-closing + sun-iris-door-open + sun-iris-door-opening)) - -(defskelgroup *sun-iris-door-sg* sun-iris-door sun-iris-door-lod0-jg sun-iris-door-idle-ja - ((sun-iris-door-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4.5) - ) +(defskelgroup *sun-iris-door-sg* + sun-iris-door + sun-iris-door-lod0-jg + sun-iris-door-idle-ja + ((sun-iris-door-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4.5)) (defmethod should-open? ((this sun-iris-door)) (let ((f30-0 1228800.0)) @@ -50,105 +42,70 @@ (when *target* (vector-! s5-0 (target-pos 0) (-> this root trans)) (set! (-> s5-0 y) 0.0) - (set! f30-0 (fabs (vector-dot s5-0 (-> this outward-vec)))) - ) + (set! f30-0 (fabs (vector-dot s5-0 (-> this outward-vec))))) (vector-! s5-0 (camera-pos) (-> this root trans)) (set! (-> s5-0 y) 0.0) - (fabs (vector-dot s5-0 (-> this outward-vec))) - ) - ) + (fabs (vector-dot s5-0 (-> this outward-vec))))) (else - (if *target* - (set! f30-0 (vector-vector-xz-distance (-> this root trans) (target-pos 0))) - ) - (vector-vector-xz-distance (-> this root trans) (camera-pos)) - ) - ) - ) - ) + (if *target* (set! f30-0 (vector-vector-xz-distance (-> this root trans) (target-pos 0)))) + (vector-vector-xz-distance (-> this root trans) (camera-pos)))))) (when (or (>= (-> this open-dist) f30-0) (>= (-> this open-dist) f0-7)) - (if (or (not (-> this locked-by-task?)) (task-complete? *game-info* (-> this entity extra perm task))) - (return #t) - ) - ) - ) - ) - #f - ) + (if (or (not (-> this locked-by-task?)) (task-complete? *game-info* (-> this entity extra perm task))) (return #t))))) + #f) (defstate sun-iris-door-closed (sun-iris-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go sun-iris-door-opening) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1))) - ) - ) - ) - :trans (behavior () - (when (-> self proximity?) - (if (should-open? self) - (go sun-iris-door-opening) - ) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (move-to-point! (-> self root) (-> self move-to-pos)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (ja-post) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go sun-iris-door-opening)) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1)))))) + :trans + (behavior () + (when (-> self proximity?) + (if (should-open? self) (go sun-iris-door-opening)))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post + (behavior () + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (move-to-point! (-> self root) (-> self move-to-pos)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (ja-post)))) (defstate sun-iris-door-opening (sun-iris-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('untrigger) - (go sun-iris-door-closing) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1))) - ) - ) - ) - :code (behavior () - (sound-play "irisdoor2") - (ja-no-eval :num! (seek!)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-post) - (go sun-iris-door-open) - ) - :post (behavior () - (cond - ((-> self move-to?) - (set! (-> self move-to?) #f) - (move-to-point! (-> self root) (-> self move-to-pos)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (ja-post) - ) - (else - (transform-post) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('untrigger) (go sun-iris-door-closing)) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1)))))) + :code + (behavior () + (sound-play "irisdoor2") + (ja-no-eval :num! (seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-post) + (go sun-iris-door-open)) + :post + (behavior () + (cond + ((-> self move-to?) + (set! (-> self move-to?) #f) + (move-to-point! (-> self root) (-> self move-to-pos)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (ja-post)) + (else (transform-post))))) (defmethod should-close? ((this sun-iris-door)) (let ((f30-0 1228800.0)) @@ -159,140 +116,92 @@ (when *target* (vector-! s5-0 (target-pos 0) (-> this root trans)) (set! (-> s5-0 y) 0.0) - (set! f30-0 (fabs (vector-dot s5-0 (-> this outward-vec)))) - ) + (set! f30-0 (fabs (vector-dot s5-0 (-> this outward-vec))))) (vector-! s5-0 (camera-pos) (-> this root trans)) (set! (-> s5-0 y) 0.0) - (fabs (vector-dot s5-0 (-> this outward-vec))) - ) - ) + (fabs (vector-dot s5-0 (-> this outward-vec))))) (else - (if *target* - (set! f30-0 (vector-vector-xz-distance (-> this root trans) (target-pos 0))) - ) - (vector-vector-xz-distance (-> this root trans) (camera-pos)) - ) - ) - ) - ) + (if *target* (set! f30-0 (vector-vector-xz-distance (-> this root trans) (target-pos 0)))) + (vector-vector-xz-distance (-> this root trans) (camera-pos)))))) (when (and (>= f30-0 (-> this close-dist)) (>= f0-7 (-> this close-dist))) (cond ((and *target* (-> this directional-proximity?)) (let ((s4-6 (new 'stack-no-clear 'vector)) - (s5-3 (new 'stack-no-clear 'vector)) - ) + (s5-3 (new 'stack-no-clear 'vector))) (vector-! s4-6 (target-pos 0) (-> this root trans)) (set! (-> s4-6 y) 0.0) (vector-! s5-3 (camera-pos) (-> this root trans)) (set! (-> s5-3 y) 0.0) (case (>= (vector-dot (-> this outward-vec) s4-6) 0.0) - (((>= (vector-dot (-> this outward-vec) s5-3) 0.0)) - (return #t) - ) - ) - ) - ) - (else - (return #t) - ) - ) - ) - ) - ) - #f - ) + (((>= (vector-dot (-> this outward-vec) s5-3) 0.0)) (return #t))))) + (else (return #t)))))) + #f) (defstate sun-iris-door-open (sun-iris-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (let ((v0-0 (the-as object (current-time)))) - (set! (-> self state-time) (the-as time-frame 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 (-> block param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1))) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (clear-collide-with-as (-> self root)) - (logior! (-> self draw status) (draw-status hidden)) - ) - :exit (behavior () - (restore-collide-with-as (-> self root)) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (when (-> self proximity?) - (if (should-close? self) - (go sun-iris-door-closing) - ) - ) - (if (and (!= (-> self timeout) 0.0) (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self timeout))))) - (go sun-iris-door-closing) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (move-to-point! (-> self root) (-> self move-to-pos)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (ja-post) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (let ((v0-0 (the-as object (current-time)))) (set! (-> self state-time) (the-as time-frame 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 (-> block param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1)))))) + :enter + (behavior () + (set-time! (-> self state-time)) + (clear-collide-with-as (-> self root)) + (logior! (-> self draw status) (draw-status hidden))) + :exit + (behavior () + (restore-collide-with-as (-> self root)) + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (when (-> self proximity?) + (if (should-close? self) (go sun-iris-door-closing))) + (if (and (!= (-> self timeout) 0.0) (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self timeout))))) + (go sun-iris-door-closing))) + :code + (behavior () + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post + (behavior () + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (move-to-point! (-> self root) (-> self move-to-pos)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (ja-post)))) (defstate sun-iris-door-closing (sun-iris-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go sun-iris-door-opening) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1))) - ) - ) - ) - :code (behavior () - (sound-play "irisdoor2") - (ja-no-eval :num! (seek! 0.0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (ja-post) - (go sun-iris-door-closed) - ) - :post (behavior () - (cond - ((-> self move-to?) - (set! (-> self move-to?) #f) - (move-to-point! (-> self root) (-> self move-to-pos)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (ja-post) - ) - (else - (transform-post) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go sun-iris-door-opening)) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1)))))) + :code + (behavior () + (sound-play "irisdoor2") + (ja-no-eval :num! (seek! 0.0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))) + (ja-post) + (go sun-iris-door-closed)) + :post + (behavior () + (cond + ((-> self move-to?) + (set! (-> self move-to?) #f) + (move-to-point! (-> self root) (-> self move-to-pos)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (ja-post)) + (else (transform-post))))) (defmethod init-from-entity! ((this sun-iris-door) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -305,12 +214,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *sun-iris-door-sg* '()) (set! (-> this close-dist) 49152.0) @@ -321,41 +228,28 @@ (when (name= (-> this name) "sun-iris-door-6") (set! (-> this close-dist) 16384.0) (set! (-> this open-dist) 8192.0) - (set! (-> this directional-proximity?) #t) - ) + (set! (-> this directional-proximity?) #t)) (set! (-> this locked-by-task?) (nonzero? (-> this entity extra perm task))) (let ((f0-11 (res-lump-float arg0 'scale-factor :default 1.0))) (set-vector! (-> this root scale) f0-11 f0-11 f0-11 1.0) (set! (-> this draw bounds w) (* 18432.0 f0-11)) - (let ((v1-25 (-> this root root-prim))) - (set! (-> v1-25 local-sphere w) (* 24576.0 f0-11 f0-11)) - ) - ) + (let ((v1-25 (-> this root 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 (-> this entity) 'trans-offset (pointer float) :tag-ptr (& sv-16)))) (when v1-28 (+! (-> this root trans x) (-> v1-28 0)) (+! (-> this root trans y) (-> v1-28 1)) - (+! (-> this root trans z) (-> v1-28 2)) - ) - ) + (+! (-> this root trans z) (-> v1-28 2)))) (let ((f30-0 (quaternion-y-angle (-> this root quat)))) - (set-vector! (-> this outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0) - ) + (set-vector! (-> this outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0)) (ja-channel-set! 1) (let ((s5-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-2 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-2 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-2 frame-num) 0.0)) (update-transforms! (-> this root)) (ja-post) (go sun-iris-door-closed) - (none) - ) + (none)) (defbehavior sun-iris-door-init-by-other sun-iris-door ((arg0 vector) (arg1 quaternion) (arg2 symbol)) (set! (-> self move-to?) #f) @@ -367,12 +261,10 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s3-0 s2-0) - ) + (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) s3-0) - ) + (set! (-> self root) s3-0)) (set! (-> self root trans quad) (-> arg0 quad)) (quaternion-copy! (-> self root quat) arg1) (initialize-skeleton self *sun-iris-door-sg* '()) @@ -382,14 +274,7 @@ (set! (-> self proximity?) #f) (set! (-> self directional-proximity?) #f) (ja-channel-set! 1) - (if arg2 - (ja :group! sun-iris-door-idle-ja :num! max) - (ja :group! sun-iris-door-idle-ja :num! min) - ) + (if arg2 (ja :group! sun-iris-door-idle-ja :num! max) (ja :group! sun-iris-door-idle-ja :num! min)) (transform-post) - (if arg2 - (go sun-iris-door-open) - (go sun-iris-door-closed) - ) - (none) - ) + (if arg2 (go sun-iris-door-open) (go sun-iris-door-closed)) + (none)) diff --git a/goal_src/jak1/levels/sunken/sunken-fish.gc b/goal_src/jak1/levels/sunken/sunken-fish.gc index 950f07d017..c3356b221d 100644 --- a/goal_src/jak1/levels/sunken/sunken-fish.gc +++ b/goal_src/jak1/levels/sunken/sunken-fish.gc @@ -1,67 +1,62 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/geometry/path.gc") -;; name: sunken-fish.gc -;; name in dgo: sunken-fish -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (deftype sunkenfisha (process-drawable) - ((path-u float) - (path-speed float) - (path-speed-seek-speed float) - (targ-path-speed float) - (path-normal-speed-lo float) - (path-normal-speed-hi float) - (path-dir float) - (change-path-dir-time time-frame) - (local-path-offset vector :inline) - (targ-local-path-offset vector :inline) - (local-path-offset-dir vector :inline) - (max-local-path-offset vector :inline) - (facing-rot vector :inline) - (path-trans-offset vector :inline) - ) + ((path-u float) + (path-speed float) + (path-speed-seek-speed float) + (targ-path-speed float) + (path-normal-speed-lo float) + (path-normal-speed-hi float) + (path-dir float) + (change-path-dir-time time-frame) + (local-path-offset vector :inline) + (targ-local-path-offset vector :inline) + (local-path-offset-dir vector :inline) + (max-local-path-offset vector :inline) + (facing-rot vector :inline) + (path-trans-offset vector :inline)) (:methods - (sunkenfisha-method-20 (_type_) float) - (sunkenfisha-method-21 (_type_ vector float vector) vector) - (sunkenfisha-method-22 (_type_) none) - (sunkenfisha-method-23 (_type_) quaternion) - (sunkenfisha-method-24 (_type_) vector) - (sunkenfisha-method-25 (_type_) none) - (sunkenfisha-method-26 (_type_) float) - (sunkenfisha-method-27 (_type_) float) - ) + (sunkenfisha-method-20 (_type_) float) + (sunkenfisha-method-21 (_type_ vector float vector) vector) + (sunkenfisha-method-22 (_type_) none) + (sunkenfisha-method-23 (_type_) quaternion) + (sunkenfisha-method-24 (_type_) vector) + (sunkenfisha-method-25 (_type_) none) + (sunkenfisha-method-26 (_type_) float) + (sunkenfisha-method-27 (_type_) float)) (:states - sunkenfisha-idle - ) - ) - - -(defskelgroup *sunkenfisha-red-yellow-sg* sunkenfisha sunkenfisha-red-yellow-lod0-jg -1 - ((sunkenfisha-red-yellow-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1.5 0 2.5) - ) - -(defskelgroup *sunkenfisha-yellow-blue-sg* sunkenfisha sunkenfisha-yellow-blue-lod0-jg -1 - ((sunkenfisha-yellow-blue-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1.5 0 2.5) - ) - -(defskelgroup *sunkenfisha-yellow-eye-sg* sunkenfisha sunkenfisha-yellow-eye-lod0-jg -1 - ((sunkenfisha-yellow-eye-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1.5 0 2.5) - ) + sunkenfisha-idle)) + +(defskelgroup *sunkenfisha-red-yellow-sg* + sunkenfisha + sunkenfisha-red-yellow-lod0-jg + -1 + ((sunkenfisha-red-yellow-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 2.5)) + +(defskelgroup *sunkenfisha-yellow-blue-sg* + sunkenfisha + sunkenfisha-yellow-blue-lod0-jg + -1 + ((sunkenfisha-yellow-blue-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 2.5)) + +(defskelgroup *sunkenfisha-yellow-eye-sg* + sunkenfisha + sunkenfisha-yellow-eye-lod0-jg + -1 + ((sunkenfisha-yellow-eye-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 2.5)) (defmethod sunkenfisha-method-22 ((this sunkenfisha)) 0 - (none) - ) + (none)) (defmethod sunkenfisha-method-21 ((this sunkenfisha) (arg0 vector) (arg1 float) (arg2 vector)) (eval-path-curve! (-> this path) arg0 arg1 'interp) @@ -69,145 +64,95 @@ (let ((s2-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> this path) s2-0 arg1) (let ((f0-2 (atan (-> s2-0 x) (-> s2-0 z))) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (vector-rotate-around-y! s4-1 arg2 f0-2) - (vector+! arg0 arg0 s4-1) - ) - ) - ) + (vector+! arg0 arg0 s4-1)))) (defmethod sunkenfisha-method-24 ((this sunkenfisha)) (let ((s4-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'matrix)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 (-> this targ-local-path-offset) (-> this local-path-offset)) (when (>= (* 4096.0 (seconds-per-frame)) (vector-length s4-0)) (until (< (* 16384.0 (seconds-per-frame)) (vector-length s4-0)) (set! (-> this targ-local-path-offset x) - (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x))) (set! (-> this targ-local-path-offset y) - (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y)) - ) - (vector-! s4-0 (-> this targ-local-path-offset) (-> this local-path-offset)) - ) - ) + (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y))) + (vector-! s4-0 (-> this targ-local-path-offset) (-> this local-path-offset)))) (vector-normalize! s4-0 1.0) - (matrix-from-two-vectors-max-angle-partial! - s3-0 - (-> this local-path-offset-dir) - s4-0 - (* 16384.0 (seconds-per-frame)) - 0.1 - ) + (matrix-from-two-vectors-max-angle-partial! s3-0 + (-> this local-path-offset-dir) + s4-0 + (* 16384.0 (seconds-per-frame)) + 0.1) (vector-matrix*! (-> this local-path-offset-dir) (-> this local-path-offset-dir) s3-0) (vector-normalize! (-> this local-path-offset-dir) 1.0) (vector-float*! gp-0 (-> this local-path-offset-dir) (* 4096.0 (seconds-per-frame))) - (vector+! (-> this local-path-offset) (-> this local-path-offset) gp-0) - ) - ) + (vector+! (-> this local-path-offset) (-> this local-path-offset) gp-0))) (defmethod sunkenfisha-method-25 ((this sunkenfisha)) (let* ((f0-0 (-> this path-speed)) - (f1-1 (seek f0-0 (-> this targ-path-speed) (* (-> this path-speed-seek-speed) (seconds-per-frame)))) - ) + (f1-1 (seek f0-0 (-> this targ-path-speed) (* (-> this path-speed-seek-speed) (seconds-per-frame))))) (set! (-> this path-speed) f1-1) (let ((f30-0 (+ (-> this path-u) (* (-> this path-dir) f1-1 (seconds-per-frame))))) (cond - ((< f30-0 0.0) - (set! f30-0 (- f30-0)) - (sunkenfisha-method-20 this) - ) - ((< 1.0 f30-0) - (+! f30-0 (* 2.0 (- 1.0 f30-0))) - (sunkenfisha-method-20 this) - ) - ) - (set! (-> this path-u) f30-0) - ) - ) - (none) - ) + ((< f30-0 0.0) (set! f30-0 (- f30-0)) (sunkenfisha-method-20 this)) + ((< 1.0 f30-0) (+! f30-0 (* 2.0 (- 1.0 f30-0))) (sunkenfisha-method-20 this))) + (set! (-> this path-u) f30-0))) + (none)) (defmethod sunkenfisha-method-23 ((this sunkenfisha)) (let ((s5-0 (new 'stack-no-clear 'vector))) (set-vector! s5-0 (- (vector-x-angle (-> this root transv))) (vector-y-angle (-> this root transv)) 0.0 1.0) - (set! (-> this facing-rot x) - (deg-seek-smooth (-> this facing-rot x) (-> s5-0 x) (* 16384.0 (seconds-per-frame)) 0.1) - ) - (set! (-> this facing-rot y) - (deg-seek-smooth (-> this facing-rot y) (-> s5-0 y) (* 32768.0 (seconds-per-frame)) 0.1) - ) - ) - (quaternion-zxy! (-> this root quat) (-> this facing-rot)) - ) + (set! (-> this facing-rot x) (deg-seek-smooth (-> this facing-rot x) (-> s5-0 x) (* 16384.0 (seconds-per-frame)) 0.1)) + (set! (-> this facing-rot y) (deg-seek-smooth (-> this facing-rot y) (-> s5-0 y) (* 32768.0 (seconds-per-frame)) 0.1))) + (quaternion-zxy! (-> this root quat) (-> this facing-rot))) (defmethod sunkenfisha-method-20 ((this sunkenfisha)) (set! (-> this path-dir) (- (-> this path-dir))) (set! (-> this path-speed) 0.0) - (set! (-> this targ-path-speed) - (rand-vu-float-range (-> this path-normal-speed-lo) (-> this path-normal-speed-hi)) - ) + (set! (-> this targ-path-speed) (rand-vu-float-range (-> this path-normal-speed-lo) (-> this path-normal-speed-hi))) (set! (-> this change-path-dir-time) (+ (current-time) (rand-vu-int-range (seconds 5) (seconds 18)))) - (set! (-> this targ-local-path-offset y) - (* 0.5 (+ (-> this targ-local-path-offset y) (-> this local-path-offset y))) - ) + (set! (-> this targ-local-path-offset y) (* 0.5 (+ (-> this targ-local-path-offset y) (-> this local-path-offset y)))) (let* ((f0-8 (-> this local-path-offset x)) - (f1-3 (- (-> this targ-local-path-offset x) f0-8)) - ) + (f1-3 (- (-> this targ-local-path-offset x) f0-8))) (when (< (fabs f1-3) 12288.0) (if (>= f1-3 0.0) - (set! (-> this targ-local-path-offset x) (fmin (+ 12288.0 f0-8) (-> this max-local-path-offset x))) - (set! (-> this targ-local-path-offset x) (fmax (+ -12288.0 f0-8) (- (-> this max-local-path-offset x)))) - ) - ) - ) - ) + (set! (-> this targ-local-path-offset x) (fmin (+ 12288.0 f0-8) (-> this max-local-path-offset x))) + (set! (-> this targ-local-path-offset x) (fmax (+ -12288.0 f0-8) (- (-> this max-local-path-offset x)))))))) (defstate sunkenfisha-idle (sunkenfisha) - :trans (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (if (>= (current-time) (-> self change-path-dir-time)) - (sunkenfisha-method-20 self) - ) - (sunkenfisha-method-24 self) - (sunkenfisha-method-25 self) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (sunkenfisha-method-21 self gp-0 (-> self path-u) (-> self local-path-offset)) - (vector-! (-> self root transv) gp-0 (-> self root trans)) - (set! (-> self root trans quad) (-> gp-0 quad)) - ) - (let ((v1-16 (-> self root transv))) - (.lvf vf1 (&-> (-> self root transv) quad)) - (let ((f0-1 (-> *display* frames-per-second))) - (.mov at-0 f0-1) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-16 quad) vf1) - ) - (sunkenfisha-method-23 self) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! sunkenfisha-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :trans + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) + (init-vf0-vector) + (if (>= (current-time) (-> self change-path-dir-time)) (sunkenfisha-method-20 self)) + (sunkenfisha-method-24 self) + (sunkenfisha-method-25 self) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (sunkenfisha-method-21 self gp-0 (-> self path-u) (-> self local-path-offset)) + (vector-! (-> self root transv) gp-0 (-> self root trans)) + (set! (-> self root trans quad) (-> gp-0 quad))) + (let ((v1-16 (-> self root transv))) + (.lvf vf1 (&-> (-> self root transv) quad)) + (let ((f0-1 (-> *display* frames-per-second))) (.mov at-0 f0-1)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-16 quad) vf1)) + (sunkenfisha-method-23 self))) + :code + (behavior () + (loop + (ja-no-eval :group! sunkenfisha-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod sunkenfisha-method-26 ((this sunkenfisha)) (set! (-> this root) (new 'process 'trsqv)) @@ -215,58 +160,35 @@ (set-vector! (-> this root scale) 6.0 6.0 6.0 1.0) (let ((v1-3 (rand-vu-int-count 3))) (cond - ((zero? v1-3) - (initialize-skeleton this *sunkenfisha-red-yellow-sg* '()) - ) - ((= v1-3 1) - (initialize-skeleton this *sunkenfisha-yellow-blue-sg* '()) - ) - ((= v1-3 2) - (initialize-skeleton this *sunkenfisha-yellow-eye-sg* '()) - ) - ) - ) + ((zero? v1-3) (initialize-skeleton this *sunkenfisha-red-yellow-sg* '())) + ((= v1-3 1) (initialize-skeleton this *sunkenfisha-yellow-blue-sg* '())) + ((= v1-3 2) (initialize-skeleton this *sunkenfisha-yellow-eye-sg* '())))) (ja-channel-set! 1) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 6)) - num-func-identity - ) - (set! (-> s5-0 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 6)) num-func-identity) + (set! (-> s5-0 frame-num) 0.0))) (defmethod sunkenfisha-method-27 ((this sunkenfisha)) (local-vars (sv-16 res-tag) (sv-32 res-tag) (sv-48 res-tag)) (vector-reset! (-> this path-trans-offset)) (set! (-> this path-u) (rand-vu-float-range 0.0 1.0)) - (if (zero? (rand-vu-int-count 2)) - (set! (-> this path-dir) 1.0) - (set! (-> this path-dir) -1.0) - ) + (if (zero? (rand-vu-int-count 2)) (set! (-> this path-dir) 1.0) (set! (-> this path-dir) -1.0)) (set-vector! (-> this max-local-path-offset) 16384.0 28672.0 0.0 1.0) (set! sv-16 (new 'static 'res-tag)) (let ((v1-5 (res-lump-data (-> this entity) 'path-max-offset (pointer float) :tag-ptr (& sv-16)))) (when v1-5 (set! (-> this max-local-path-offset x) (-> v1-5 0)) - (set! (-> this max-local-path-offset y) (-> v1-5 1)) - ) - ) + (set! (-> this max-local-path-offset y) (-> v1-5 1)))) (set-vector! (-> this local-path-offset) 0.0 0.0 0.0 1.0) (set! (-> this local-path-offset x) - (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x))) (set! (-> this local-path-offset y) - (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y))) (set! (-> this targ-local-path-offset quad) (-> this local-path-offset quad)) (set! (-> this targ-local-path-offset x) - (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x))) (set! (-> this targ-local-path-offset y) - (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y))) (vector-! (-> this local-path-offset-dir) (-> this targ-local-path-offset) (-> this local-path-offset)) (vector-normalize! (-> this local-path-offset-dir) 1.0) (set! (-> this change-path-dir-time) (+ (current-time) (rand-vu-int-range (seconds 5) (seconds 18)))) @@ -277,50 +199,32 @@ (when v1-16 (+! (-> this path-trans-offset x) (-> v1-16 0)) (+! (-> this path-trans-offset y) (-> v1-16 1)) - (+! (-> this path-trans-offset z) (-> v1-16 2)) - ) - ) - (if (< (-> this path curve num-cverts) 2) - (go process-drawable-art-error "bad path") - ) + (+! (-> this path-trans-offset z) (-> v1-16 2)))) + (if (< (-> this path curve num-cverts) 2) (go process-drawable-art-error "bad path")) (let ((f28-0 8192.0) - (f30-0 26624.0) - ) + (f30-0 26624.0)) (set! sv-48 (new 'static 'res-tag)) (let ((v1-23 (res-lump-data (-> this entity) 'speed (pointer float) :tag-ptr (& sv-48)))) (when v1-23 (set! f28-0 (-> v1-23 0)) - (set! f30-0 (-> v1-23 1)) - ) - ) + (set! f30-0 (-> v1-23 1)))) (let ((f0-35 (path-distance (-> this path)))) (set! (-> this path-normal-speed-lo) (/ f28-0 f0-35)) - (set! (-> this path-normal-speed-hi) (/ f30-0 f0-35)) - ) - ) - (set! (-> this path-speed-seek-speed) - (* 2.0 (- (-> this path-normal-speed-hi) (-> this path-normal-speed-lo))) - ) - (set! (-> this path-speed) - (rand-vu-float-range (-> this path-normal-speed-lo) (-> this path-normal-speed-hi)) - ) + (set! (-> this path-normal-speed-hi) (/ f30-0 f0-35)))) + (set! (-> this path-speed-seek-speed) (* 2.0 (- (-> this path-normal-speed-hi) (-> this path-normal-speed-lo)))) + (set! (-> this path-speed) (rand-vu-float-range (-> this path-normal-speed-lo) (-> this path-normal-speed-hi))) (set! (-> this targ-path-speed) (-> this path-speed)) (let ((s4-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> this path) s4-0 (-> this path-u)) - (set-vector! (-> this facing-rot) 0.0 (atan (-> s4-0 x) (-> s4-0 z)) 0.0 1.0) - ) - (if (< (-> this path-dir) 0.0) - (set! (-> this facing-rot y) (- (-> this facing-rot y))) - ) - ) + (set-vector! (-> this facing-rot) 0.0 (atan (-> s4-0 x) (-> s4-0 z)) 0.0 1.0)) + (if (< (-> this path-dir) 0.0) (set! (-> this facing-rot y) (- (-> this facing-rot y))))) (defbehavior sunkenfisha-init-by-other sunkenfisha ((arg0 entity-actor)) (set! (-> self entity) arg0) (sunkenfisha-method-26 self) (sunkenfisha-method-27 self) (go sunkenfisha-idle) - (none) - ) + (none)) (defmethod init-from-entity! ((this sunkenfisha) (arg0 entity-actor)) (sunkenfisha-method-26 this) @@ -328,9 +232,6 @@ (let ((s5-0 (+ (res-lump-value (-> this entity) 'count uint128 :default (the-as uint128 1)) -1))) (while (> (the-as int s5-0) 0) (process-spawn sunkenfisha (-> this entity) :to this) - (+! s5-0 -1) - ) - ) + (+! s5-0 -1))) (go sunkenfisha-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/sunken-obs.gc b/goal_src/jak1/levels/sunken/sunken-obs.gc index 1c7c85b4c6..b74b2bfc21 100644 --- a/goal_src/jak1/levels/sunken/sunken-obs.gc +++ b/goal_src/jak1/levels/sunken/sunken-obs.gc @@ -1,99 +1,84 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/plat.gc") (require "engine/camera/pov-camera.gc") (require "engine/game/main.gc") - -;; name: sunken-obs.gc -;; name in dgo: sunken-obs -;; dgos: L1, SUN, SUNKEN - (declare-type seaweed basic) + (define-extern *seaweed* seaweed) ;; DECOMP BEGINS -(deftype water-vol-deadly (process-hidden) - () - ) - +(deftype water-vol-deadly (process-hidden) ()) (deftype side-to-side-plat (plat) - ((part-ry float) - ) - ) + ((part-ry float))) - -(defskelgroup *side-to-side-plat-sg* side-to-side-plat side-to-side-plat-lod0-jg side-to-side-plat-idle-ja - ((side-to-side-plat-lod0-mg (meters 20)) (side-to-side-plat-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 14) - ) +(defskelgroup *side-to-side-plat-sg* + side-to-side-plat + side-to-side-plat-lod0-jg + side-to-side-plat-idle-ja + ((side-to-side-plat-lod0-mg (meters 20)) (side-to-side-plat-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 14)) (defpartgroup group-side-to-side-plat :id 436 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1713 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1714 :fade-after (meters 160) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 1713 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1714 :fade-after (meters 160) :falloff-to (meters 160)))) (defpart 1713 - :init-specs ((:num 4.0) - (:x (meters -11) (meters 22)) - (:y (meters 1)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters 0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:conerot-x (degrees 140) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3)) - (:rotate-y (degrees 18)) - ) - ) + :init-specs + ((:num 4.0) + (:x (meters -11) (meters 22)) + (:y (meters 1)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters 0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:conerot-x (degrees 140) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3)) + (:rotate-y (degrees 18)))) (defpart 1714 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:x (meters -11) (meters 22)) - (:y (meters 1.5)) - (:scale-x (meters 2) (meters 1)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 130) (degrees 100.00001)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3)) - (:rotate-y (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:x (meters -11) (meters 22)) + (:y (meters 1.5)) + (:scale-x (meters 2) (meters 1)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 130) (degrees 100.00001)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3)) + (:rotate-y (degrees 18)))) (defmethod get-unlit-skel ((this side-to-side-plat)) - *side-to-side-plat-sg* - ) + *side-to-side-plat-sg*) (defmethod baseplat-method-24 ((this side-to-side-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -102,229 +87,170 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 57344.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod baseplat-method-26 ((this side-to-side-plat)) (set! (-> this part-ry) (+ 16384.0 (quaternion-y-angle (-> this root quat)))) - (none) - ) + (none)) (defmethod baseplat-method-25 ((this side-to-side-plat)) (let ((v0-0 (create-launch-control (-> *part-group-id-table* 436) this))) (set! (-> this part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) + (the-as sparticle-launch-group v0-0))) (defmethod baseplat-method-20 ((this side-to-side-plat)) (when (nonzero? (-> this part)) (set! (-> *part-id-table* 1713 init-specs 14 initial-valuef) (-> this part-ry)) (set! (-> *part-id-table* 1714 init-specs 19 initial-valuef) (-> this part-ry)) - (spawn (-> this part) (-> this root trans)) - ) - (none) - ) + (spawn (-> this part) (-> this root trans))) + (none)) (deftype sunkencam (pov-camera) - ((ppointer-override (pointer sunkencam) :overlay-at ppointer) - (seq uint64) - ) - ) - + ((ppointer-override (pointer sunkencam) :overlay-at ppointer) + (seq uint64))) -(defskelgroup *sunkencam-sg* sunkencam sunkencam-lod0-jg -1 - ((sunkencam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *sunkencam-sg* + sunkencam + sunkencam-lod0-jg + -1 + ((sunkencam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defmethod set-stack-size! ((this sunkencam)) (stack-size-set! (-> this main-thread) 512) - (none) - ) + (none)) (defstate pov-camera-playing (sunkencam) :virtual #t - :exit (behavior () - (set! (-> *screen-filter* draw?) #f) - ) - :code (behavior () - (let ((v1-0 (-> self seq))) - (cond - ((zero? v1-0) - (ja-no-eval :group! sunkencam-start-door-shut-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sunkencam-start-in-room-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((v1-45 *screen-filter*)) - (set! (-> v1-45 draw?) #t) - (set! (-> v1-45 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50)) - ) - (set-blackout-frames (seconds 0.1)) - (ja-no-eval :group! sunkencam-middle-in-water-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-blackout-frames (seconds 0.5)) - (let ((gp-0 2)) - (ja-no-eval :group! sunkencam-end-out-of-water-ja :num! (seek!) :frame-num 0.0) + :exit + (behavior () + (set! (-> *screen-filter* draw?) #f)) + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (ja-no-eval :group! sunkencam-start-door-shut-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (+! gp-0 -1) - (if (zero? gp-0) - (set! (-> *screen-filter* draw?) #f) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (set-blackout-frames (seconds 0.1)) - ) - ((= v1-0 1) - (ja-no-eval :group! sunkencam-dive-start-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((v1-116 *screen-filter*)) - (set! (-> v1-116 draw?) #t) - (set! (-> v1-116 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50)) - ) - (set-blackout-frames (seconds 0.1)) - (ja-no-eval :group! sunkencam-dive-middle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-blackout-frames (seconds 0.1)) - (let ((gp-1 2)) - (ja-no-eval :group! sunkencam-dive-end-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!))) + (ja-no-eval :group! sunkencam-start-in-room-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (+! gp-1 -1) - (if (zero? gp-1) - (set! (-> *screen-filter* draw?) #f) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (let ((gp-2 *camera*)) - (send-event gp-2 'teleport) - (send-event gp-2 'change-state cam-fixed 0) - (send-event gp-2 'change-state *camera-base-mode* 0) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (suspend) - ) - ) - ((= v1-0 2) - (ja-no-eval :group! sunkencam-helix-hit-switch-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sunkencam-helix-door-shuts-ja :num! (seek! max 0.67) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.67)) - ) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-helix-show-rising-water-ja) - (new 'static 'vector :x 2449408.0 :y -1822720.0 :z -7299072.0) - 0.67 - ) - ) - ((= v1-0 3) - (ambient-hint-spawn "gamcam34" (the-as vector #f) *entity-pool* 'camera) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-square-platform-setup1-rise1-ja) - (new 'static 'vector :x 2707456.0 :y -630784.0 :z -6635520.0) - 1.0 - ) - ) - ((= v1-0 4) - (ambient-hint-spawn "gamcam35" (the-as vector #f) *entity-pool* 'camera) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-square-platform-setup1-rise2-ja) - (new 'static 'vector :x 2834432.0 :y -634880.0 :z -6811648.0) - 1.3 - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.2)) - (suspend) - ) - ) - ((= v1-0 5) - (ambient-hint-spawn "gamcam37" (the-as vector #f) *entity-pool* 'camera) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-square-platform-setup2-rise1-ja) - (new 'static 'vector :x 2695168.0 :y -544768.0 :z -7077888.0) - 1.0 - ) - ) - ((= v1-0 6) - (ambient-hint-spawn "gamcam36" (the-as vector #f) *entity-pool* 'camera) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-square-platform-setup2-rise2-ja) - (new 'static 'vector :x 2482176.0 :y -516096.0 :z -6922240.0) - 1.0 - ) - ) - (else - (suspend) - 0 - ) - ) - ) - (go-virtual pov-camera-done-playing) - ) - ) + (ja :num! (seek!))) + (let ((v1-45 *screen-filter*)) + (set! (-> v1-45 draw?) #t) + (set! (-> v1-45 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50))) + (set-blackout-frames (seconds 0.1)) + (ja-no-eval :group! sunkencam-middle-in-water-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-blackout-frames (seconds 0.5)) + (let ((gp-0 2)) + (ja-no-eval :group! sunkencam-end-out-of-water-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (+! gp-0 -1) + (if (zero? gp-0) (set! (-> *screen-filter* draw?) #f)) + (suspend) + (ja :num! (seek!)))) + (set-blackout-frames (seconds 0.1))) + ((= v1-0 1) + (ja-no-eval :group! sunkencam-dive-start-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((v1-116 *screen-filter*)) + (set! (-> v1-116 draw?) #t) + (set! (-> v1-116 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50))) + (set-blackout-frames (seconds 0.1)) + (ja-no-eval :group! sunkencam-dive-middle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-blackout-frames (seconds 0.1)) + (let ((gp-1 2)) + (ja-no-eval :group! sunkencam-dive-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (+! gp-1 -1) + (if (zero? gp-1) (set! (-> *screen-filter* draw?) #f)) + (suspend) + (ja :num! (seek!)))) + (let ((gp-2 *camera*)) + (send-event gp-2 'teleport) + (send-event gp-2 'change-state cam-fixed 0) + (send-event gp-2 'change-state *camera-base-mode* 0)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend))) + ((= v1-0 2) + (ja-no-eval :group! sunkencam-helix-hit-switch-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! sunkencam-helix-door-shuts-ja :num! (seek! max 0.67) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.67))) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-helix-show-rising-water-ja) + (new 'static 'vector :x 2449408.0 :y -1822720.0 :z -7299072.0) + 0.67)) + ((= v1-0 3) + (ambient-hint-spawn "gamcam34" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-square-platform-setup1-rise1-ja) + (new 'static 'vector :x 2707456.0 :y -630784.0 :z -6635520.0) + 1.0)) + ((= v1-0 4) + (ambient-hint-spawn "gamcam35" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-square-platform-setup1-rise2-ja) + (new 'static 'vector :x 2834432.0 :y -634880.0 :z -6811648.0) + 1.3) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.2)) + (suspend))) + ((= v1-0 5) + (ambient-hint-spawn "gamcam37" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-square-platform-setup2-rise1-ja) + (new 'static 'vector :x 2695168.0 :y -544768.0 :z -7077888.0) + 1.0)) + ((= v1-0 6) + (ambient-hint-spawn "gamcam36" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-square-platform-setup2-rise2-ja) + (new 'static 'vector :x 2482176.0 :y -516096.0 :z -6922240.0) + 1.0)) + (else (suspend) 0))) + (go-virtual pov-camera-done-playing))) (deftype seaweed (process-drawable) - ((anim-speed float) - ) + ((anim-speed float)) (:states - seaweed-idle - ) - ) + seaweed-idle)) - -(defskelgroup *seaweed-sg* seaweed seaweed-lod0-jg -1 - ((seaweed-lod0-mg (meters 999999))) - :bounds (static-spherem 0 6 0 7) - ) +(defskelgroup *seaweed-sg* + seaweed + seaweed-lod0-jg + -1 + ((seaweed-lod0-mg (meters 999999))) + :bounds (static-spherem 0 6 0 7)) (defstate seaweed-idle (seaweed) - :code (behavior () - (ja-no-eval :num! (seek! max (-> self anim-speed))) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (loop - (ja-no-eval :group! seaweed-idle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) - (until (ja-done? 0) + :code + (behavior () + (ja-no-eval :num! (seek! max (-> self anim-speed))) + (while (not (ja-done? 0)) (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - :post ja-post - ) + (ja-eval)) + (loop + (ja-no-eval :group! seaweed-idle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed)))))) + :post ja-post) (defmethod init-from-entity! ((this seaweed) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -332,27 +258,12 @@ (initialize-skeleton this *seaweed-sg* '()) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) (set! (-> s5-1 frame-num) - (rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - data - 0 - length - ) - -1 - ) - ) - ) - ) - ) + (rand-vu-float-range 0.0 + (the float + (+ (-> (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) data 0 length) -1))))) (set! (-> this anim-speed) (rand-vu-float-range 0.2 0.4)) (set! *seaweed* this) (go seaweed-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/sunken-part.gc b/goal_src/jak1/levels/sunken/sunken-part.gc index 18fd6f05ab..bfb406f73d 100644 --- a/goal_src/jak1/levels/sunken/sunken-part.gc +++ b/goal_src/jak1/levels/sunken/sunken-part.gc @@ -1,2505 +1,2530 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: sunken-part.gc -;; name in dgo: sunken-part -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS -(deftype sunken-part (part-spawner) - () - ) - +(deftype sunken-part (part-spawner) ()) (defpartgroup group-sunken-heatpipe-183 :id 332 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1420 :fade-after (meters 80) :falloff-to (meters 80) :binding 1419) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1421 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1420 :fade-after (meters 80) :falloff-to (meters 80) :binding 1419) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1421 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1420 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.5)) - (:y (meters 0.2)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 95)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.5)) + (:y (meters 0.2)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 95)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.25)))) (defpart 1419 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 4)) - (:y (meters 4.2222223)) - (:z (meters 1.15)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 4)) + (:y (meters 4.2222223)) + (:z (meters 1.15)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1422 - :init-specs ((:fade-a -0.64)) - ) + :init-specs ((:fade-a -0.64))) (defpart 1421 - :init-specs ((:num 0.25) - (:x (meters -2.5)) - (:y (meters 0.2)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 95)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 5)) - ) - ) + :init-specs + ((:num 0.25) + (:x (meters -2.5)) + (:y (meters 0.2)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 95)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 5)))) (defpartgroup group-sunken-tunnel-bubbles-27 :id 333 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1425 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1425 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1426 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1426 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1427 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1428 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1425 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1425 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1426 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1426 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1427 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1428 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1427 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -37) (meters 64)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -37) (meters 64)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 0)))) (defpart 1428 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -37) (meters 64)) - (:y (meters -2)) - (:z (meters 10) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -37) (meters 64)) + (:y (meters -2)) + (:z (meters 10) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 0)))) (defpart 1425 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -37) (meters 64)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -37) (meters 64)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpart 1426 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -37) (meters 64)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -37) (meters 64)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpart 1429 - :init-specs ((:fade-a 0.0) (:next-time (seconds 6) (seconds 5.997)) (:next-launcher 1430)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 6) (seconds 5.997)) (:next-launcher 1430))) (defpart 1430 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpart 1423 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.1)) - (:scale-x (meters 1.5)) - (:scale-y (meters 0.9)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:omega 0.0) - (:vel-x (meters -0.21333334) 1 (meters 0.42666668)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:scalevel-x (meters -0.0050000004)) - (:scalevel-y (meters 0.0016666667)) - (:fade-a 1.6) - (:timer (seconds 12) (seconds 3.997)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.1)) - (:next-launcher 1431) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.1)) + (:scale-x (meters 1.5)) + (:scale-y (meters 0.9)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega 0.0) + (:vel-x (meters -0.21333334) 1 (meters 0.42666668)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:scalevel-x (meters -0.0050000004)) + (:scalevel-y (meters 0.0016666667)) + (:fade-a 1.6) + (:timer (seconds 12) (seconds 3.997)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.1)) + (:next-launcher 1431))) (defpart 1431 - :init-specs ((:scale-x (meters 1.2)) - (:scale-y (meters 1)) - (:scalevel-x (meters 0.010000001)) - (:scalevel-y (meters -0.0033333334)) - (:fade-a 0.0) - (:next-time (seconds 0.1)) - (:next-launcher 1432) - ) - ) + :init-specs + ((:scale-x (meters 1.2)) + (:scale-y (meters 1)) + (:scalevel-x (meters 0.010000001)) + (:scalevel-y (meters -0.0033333334)) + (:fade-a 0.0) + (:next-time (seconds 0.1)) + (:next-launcher 1432))) (defpart 1432 - :init-specs ((:scale-x (meters 1.5)) - (:scale-y (meters 0.9)) - (:scalevel-x (meters -0.010000001)) - (:scalevel-y (meters 0.0033333334)) - (:next-time (seconds 0.1)) - (:next-launcher 1431) - ) - ) + :init-specs + ((:scale-x (meters 1.5)) + (:scale-y (meters 0.9)) + (:scalevel-x (meters -0.010000001)) + (:scalevel-y (meters 0.0033333334)) + (:next-time (seconds 0.1)) + (:next-launcher 1431))) (defpart 1433 - :init-specs ((:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 0)) - (:rot-x 9) - (:r 2048.0) - (:g 1638.4) - (:b 1228.8) - (:omega 0.0) - (:vel-x (meters 0)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 16)) - (:flags (bit2 bit3 bit7 aux-list)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 0)) + (:rot-x 9) + (:r 2048.0) + (:g 1638.4) + (:b 1228.8) + (:omega 0.0) + (:vel-x (meters 0)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 16)) + (:flags (bit2 bit3 bit7 aux-list)))) (defpart 1424 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:fade-a 0.7111111) - (:timer (seconds 8)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.017)) - (:next-launcher 1434) - (:conerot-x (degrees 110) (degrees 70)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:fade-a 0.7111111) + (:timer (seconds 8)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.017)) + (:next-launcher 1434) + (:conerot-x (degrees 110) (degrees 70)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.4)))) (defpart 1434 - :init-specs ((:vel-y (meters 0.006666667) (meters 0.0016666667)) - (:accel-y (meters -0.00006666667)) - (:next-time (seconds 0.25)) - (:next-launcher 1435) - ) - ) + :init-specs + ((:vel-y (meters 0.006666667) (meters 0.0016666667)) + (:accel-y (meters -0.00006666667)) + (:next-time (seconds 0.25)) + (:next-launcher 1435))) (defpart 1435 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (defpartgroup group-sunken-tunnel-bubbles-32 :id 334 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1436 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1436 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1437 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1437 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1438 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1439 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1436 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1436 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1437 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1437 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1438 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1439 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1438 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -24) (meters 48)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -24) (meters 48)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -23.000002)))) (defpart 1439 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -24) (meters 48)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -24) (meters 48)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -23.000002)))) (defpart 1436 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -24) (meters 48)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -24) (meters 48)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -23.000002)))) (defpart 1437 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -24) (meters 48)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -24) (meters 48)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -23.000002)))) (defpartgroup group-sunken-tunnel-bubbles-33 :id 335 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1440 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1440 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1441 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1441 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1442 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1443 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1440 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1440 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1441 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1441 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1442 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1443 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1442 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.02) - (:x (meters -13) (meters 25)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.02) + (:x (meters -13) (meters 25)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 26.000002)))) (defpart 1443 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.02) - (:x (meters -13) (meters 25)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.02) + (:x (meters -13) (meters 25)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 26.000002)))) (defpart 1440 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.5) - (:x (meters -13) (meters 25)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.5) + (:x (meters -13) (meters 25)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 26.000002)))) (defpart 1441 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.5) - (:x (meters -13) (meters 25)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.5) + (:x (meters -13) (meters 25)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 26.000002)))) (defpartgroup group-sunken-tunnel-bubbles-199 :id 336 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1444 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1444 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1445 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1445 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1446 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1447 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1444 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1444 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1445 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1445 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1446 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1447 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1446 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -25) (meters 36)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -25) (meters 36)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 26.000002)))) (defpart 1447 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -25) (meters 36)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -25) (meters 36)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 26.000002)))) (defpart 1444 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -25) (meters 36)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -25) (meters 36)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 26.000002)))) (defpart 1445 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -25) (meters 36)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -25) (meters 36)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 26.000002)))) (defpartgroup group-sunken-tunnel-bubbles-281 :id 337 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1448 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1448 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1449 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1449 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1450 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1451 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1448 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1448 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1449 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1449 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1450 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1451 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1450 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 90)))) (defpart 1451 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 90)))) (defpart 1448 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 90)))) (defpart 1449 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 90)))) (defpartgroup group-sunken-tunnel-bubbles-202 :id 338 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1452 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1452 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1453 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1453 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1454 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1455 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1452 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1452 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1453 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1453 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1454 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1455 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1454 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -22) (meters 44)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -22) (meters 44)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -5)))) (defpart 1455 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -22) (meters 44)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -22) (meters 44)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -5)))) (defpart 1452 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -22) (meters 44)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -22) (meters 44)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -5)))) (defpart 1453 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -22) (meters 44)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -22) (meters 44)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -5)))) (defpartgroup group-sunken-window-bubbles-35 :id 339 :bounds (static-bspherem 0 8 0 32) - :parts ((sp-item 1456 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1456 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1457 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1456 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1456 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1457 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1457 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -65) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -65) (degrees 30)))) (defpart 1456 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -65) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -65) (degrees 30)))) (defpartgroup group-sunken-helix-bubbles-398 :id 340 :bounds (static-bspherem 0 4 0 40) - :parts ((sp-item 1458 :fade-after (meters 100) :falloff-to (meters 100))) - ) + :parts ((sp-item 1458 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1458 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.75) - (:x (meters -5) (meters 10)) - (:y (meters -10) (meters 15)) - (:z (meters -29) (meters 6)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 9)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1459) - (:rotate-y (degrees -67.5) 6 (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.75) + (:x (meters -5) (meters 10)) + (:y (meters -10) (meters 15)) + (:z (meters -29) (meters 6)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 9)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1459) + (:rotate-y (degrees -67.5) 6 (degrees 45)))) (defpart 1459 - :init-specs ((:fade-a 0.0) (:next-time (seconds 3) (seconds 2.997)) (:next-launcher 1460)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 3) (seconds 2.997)) (:next-launcher 1460))) (defpart 1460 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpartgroup group-sunken-helix-bubbles-397 :id 341 :bounds (static-bspherem 0 4 0 40) - :parts ((sp-item 1461 :fade-after (meters 100) :falloff-to (meters 100))) - ) + :parts ((sp-item 1461 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1461 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.75) - (:x (meters -5) (meters 10)) - (:y (meters -20) (meters 30)) - (:z (meters -29) (meters 6)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 9)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1459) - (:rotate-y (degrees -67.5) 7 (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.75) + (:x (meters -5) (meters 10)) + (:y (meters -20) (meters 30)) + (:z (meters -29) (meters 6)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 9)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1459) + (:rotate-y (degrees -67.5) 7 (degrees 45)))) (defpartgroup group-sunken-heatpipe-355 :id 342 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1463 :fade-after (meters 80) :falloff-to (meters 80) :binding 1462) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1464 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1463 :fade-after (meters 80) :falloff-to (meters 80) :binding 1462) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1464 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1463 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 145)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 145)))) (defpart 1462 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 2.6666667)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 2.6666667)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1464 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 145)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 145)))) (defpartgroup group-sunken-heatpipe-361 :id 343 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1466 :fade-after (meters 80) :falloff-to (meters 80) :binding 1465) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1467 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1466 :fade-after (meters 80) :falloff-to (meters 80) :binding 1465) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1467 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1466 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 220)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 220)))) (defpart 1465 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.5555553)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.5555553)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1467 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 220)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 220)))) (defpartgroup group-sunken-heatpipe-360 :id 344 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1469 :fade-after (meters 80) :falloff-to (meters 80) :binding 1468) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1470 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1469 :fade-after (meters 80) :falloff-to (meters 80) :binding 1468) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1470 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1469 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 400.00003)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 400.00003)))) (defpart 1468 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.5555553)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.5555553)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1470 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 400.00003)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 400.00003)))) (defpartgroup group-sunken-heatpipe-377 :id 345 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1472 :fade-after (meters 80) :falloff-to (meters 80) :binding 1471) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1473 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1472 :fade-after (meters 80) :falloff-to (meters 80) :binding 1471) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1473 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1472 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 375.00003)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 375.00003)))) (defpart 1471 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 4.6666665)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 4.6666665)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1473 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 375.00003)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 375.00003)))) (defpartgroup group-sunken-heatpipe-376 :id 346 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1475 :fade-after (meters 80) :falloff-to (meters 80) :binding 1474) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1476 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1475 :fade-after (meters 80) :falloff-to (meters 80) :binding 1474) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1476 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1475 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 195)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 195)))) (defpart 1474 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 4.6666665)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 4.6666665)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1476 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 195)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 195)))) (defpartgroup group-sunken-heatpipe-375 :id 347 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1478 :fade-after (meters 80) :falloff-to (meters 80) :binding 1477) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1479 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1478 :fade-after (meters 80) :falloff-to (meters 80) :binding 1477) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1479 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1478 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 392)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 392)))) (defpart 1477 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.3333335)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.3333335)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1479 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 392)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 392)))) (defpartgroup group-sunken-heatpipe-374 :id 348 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1481 :fade-after (meters 80) :falloff-to (meters 80) :binding 1480) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1482 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1481 :fade-after (meters 80) :falloff-to (meters 80) :binding 1480) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1482 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1481 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 212)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 212)))) (defpart 1480 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.3333335)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.3333335)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1482 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 212)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 212)))) (defpartgroup group-sunken-heatpipe-363 :id 349 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1484 :fade-after (meters 80) :falloff-to (meters 80) :binding 1483) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1485 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1484 :fade-after (meters 80) :falloff-to (meters 80) :binding 1483) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1485 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1484 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 95)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees -63)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 95)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees -63)))) (defpart 1483 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.4222223)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.4222223)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1485 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 95)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees -63)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 95)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees -63)))) (defpartgroup group-sunken-heatpipe-362 :id 350 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1487 :fade-after (meters 80) :falloff-to (meters 80) :binding 1486) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1488 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1487 :fade-after (meters 80) :falloff-to (meters 80) :binding 1486) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1488 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1487 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 124.99999)))) (defpart 1486 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.4222223)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.4222223)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1488 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 124.99999)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 124.99999)))) (defpartgroup group-sunken-heatpipe-364 :id 351 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1490 :fade-after (meters 80) :falloff-to (meters 80) :binding 1489) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1491 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1490 :fade-after (meters 80) :falloff-to (meters 80) :binding 1489) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1491 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1490 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 62)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 62)))) (defpart 1489 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -0.9777778)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -0.9777778)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1491 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 62)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 62)))) (defpartgroup group-sunken-heatpipe-365 :id 352 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1493 :fade-after (meters 80) :falloff-to (meters 80) :binding 1492) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1494 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1493 :fade-after (meters 80) :falloff-to (meters 80) :binding 1492) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1494 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1493 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees -124)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees -124)))) (defpart 1492 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.1111112)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.1111112)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1494 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees -124)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees -124)))) diff --git a/goal_src/jak1/levels/sunken/sunken-part2.gc b/goal_src/jak1/levels/sunken/sunken-part2.gc index 8df783aaee..7acfe7609a 100644 --- a/goal_src/jak1/levels/sunken/sunken-part2.gc +++ b/goal_src/jak1/levels/sunken/sunken-part2.gc @@ -1,2343 +1,2458 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: sunken-part2.gc -;; name in dgo: sunken-part2 -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (defpartgroup group-sunken-window-bubbles-34 :id 353 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1495 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1495 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1496 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1495 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1495 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1496 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1496 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 7.0000005) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 7.0000005) (degrees 50.000004)))) (defpart 1495 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 7.0000005) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 7.0000005) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-36 :id 354 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1497 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1497 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1498 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1497 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1497 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1498 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1498 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpart 1497 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-30 :id 355 :bounds (static-bspherem 0 4 0 30) - :parts ((sp-item 1499 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1499 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1500 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1499 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1499 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1500 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1500 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -20) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -20) (degrees 50.000004)))) (defpart 1499 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -20) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -20) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-31 :id 356 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1501 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1501 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1502 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1501 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1501 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1502 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1502 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -120) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -120) (degrees 50.000004)))) (defpart 1501 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -120) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -120) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-29 :id 357 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1503 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1503 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1504 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1503 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1503 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1504 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1504 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpart 1503 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-159 :id 358 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1505 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1505 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1506 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1505 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1505 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1506 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1506 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 60) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 60) (degrees 50.000004)))) (defpart 1505 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 60) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 60) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-161 :id 359 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1507 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1507 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1508 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1507 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1507 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1508 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1508 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 70) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 70) (degrees 50.000004)))) (defpart 1507 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 70) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 70) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-204 :id 360 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1509 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1509 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1510 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1509 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1509 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1510 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1510 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 8) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 30) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 8) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 30) (degrees 50.000004)))) (defpart 1509 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 8) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 30) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 8) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 30) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-205 :id 361 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1511 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1511 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1512 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1511 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1511 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1512 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1512 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 130) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 130) (degrees 50.000004)))) (defpart 1511 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 130) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 130) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-203 :id 362 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1513 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1513 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1514 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1513 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1513 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1514 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1514 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -10) (meters 20)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 80) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -10) (meters 20)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 80) (degrees 50.000004)))) (defpart 1513 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 20)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 80) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 80) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-42 :id 363 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1515 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1515 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1516 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1515 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1515 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1516 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1516 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -25) (meters 50)) - (:y (meters -2)) - (:z (meters 4) (meters 4)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 195)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -25) (meters 50)) + (:y (meters -2)) + (:z (meters 4) (meters 4)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 195)))) (defpart 1515 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -25) (meters 50)) - (:y (meters -2)) - (:z (meters 4) (meters 4)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 195)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -25) (meters 50)) + (:y (meters -2)) + (:z (meters 4) (meters 4)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 195)))) (defpartgroup group-sunken-window-bubbles-41 :id 364 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1517 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1517 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1518 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1517 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1517 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1518 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1518 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -70) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -70) (degrees 50.000004)))) (defpart 1517 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -70) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -70) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-206 :id 365 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1519 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1519 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1520 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1519 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1519 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1520 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1520 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 170) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 170) (degrees 30)))) (defpart 1519 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 170) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 170) (degrees 30)))) (defpartgroup group-sunken-window-bubbles-201 :id 366 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1521 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1521 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1522 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1521 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1521 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1522 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1522 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -40) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -40) (degrees 50.000004)))) (defpart 1521 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -40) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -40) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-3 :id 367 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1523 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1523 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1524 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1523 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1523 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1524 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1524 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpart 1523 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-2 :id 368 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1525 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1525 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1526 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1525 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1525 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1526 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1526 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 4) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 249.99998) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 4) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 249.99998) (degrees 50.000004)))) (defpart 1525 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 4) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 249.99998) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 4) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 249.99998) (degrees 50.000004)))) (defpartgroup group-sunken-heatpipe-382 :id 369 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1528 :fade-after (meters 80) :falloff-to (meters 80) :binding 1527) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1529 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1528 :fade-after (meters 80) :falloff-to (meters 80) :binding 1527) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1529 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1528 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 50.000004)))) (defpart 1527 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 6.2222223)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 6.2222223)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1529 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 50.000004)))) (defpartgroup group-sunken-heatpipe-381 :id 370 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1531 :fade-after (meters 80) :falloff-to (meters 80) :binding 1530) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1532 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1531 :fade-after (meters 80) :falloff-to (meters 80) :binding 1530) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1532 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1531 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 80)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 80)))) (defpart 1530 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 7.5555553)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 7.5555553)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1532 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 80)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 80)))) (defpartgroup group-sunken-heatpipe-380 :id 371 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1534 :fade-after (meters 80) :falloff-to (meters 80) :binding 1533) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1535 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1534 :fade-after (meters 80) :falloff-to (meters 80) :binding 1533) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1535 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1534 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 47.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 47.5)))) (defpart 1533 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 6.2222223)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 6.2222223)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1535 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 47.5)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 47.5)))) (defpartgroup group-sunken-heatpipe-379 :id 372 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1537 :fade-after (meters 80) :falloff-to (meters 80) :binding 1536) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1538 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1537 :fade-after (meters 80) :falloff-to (meters 80) :binding 1536) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1538 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1537 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 70)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 70)))) (defpart 1536 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 7.111111)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 7.111111)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1538 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 70)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 70)))) (defpartgroup group-sunken-heatpipe-378 :id 373 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1540 :fade-after (meters 80) :falloff-to (meters 80) :binding 1539) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1541 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1540 :fade-after (meters 80) :falloff-to (meters 80) :binding 1539) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1541 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1540 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 23.000002)))) (defpart 1539 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.111111)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.111111)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1541 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 23.000002)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 23.000002)))) (defpartgroup group-sunken-window-bubbles-402 :id 374 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1542 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1542 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1543 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1542 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1542 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1543 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1543 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 190) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 190) (degrees 40)))) (defpart 1542 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 190) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 190) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-401 :id 375 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1544 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1544 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1545 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1544 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1544 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1545 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1545 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 105) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 105) (degrees 40)))) (defpart 1544 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 105) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 105) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-400 :id 376 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1546 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1546 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1547 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1546 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1546 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1547 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1547 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 20) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 20) (degrees 40)))) (defpart 1546 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 20) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 20) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-399 :id 377 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1548 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1548 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1549 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1548 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1548 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1549 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1549 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 225) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 225) (degrees 40)))) (defpart 1548 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 225) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 225) (degrees 40)))) diff --git a/goal_src/jak1/levels/sunken/sunken-part3.gc b/goal_src/jak1/levels/sunken/sunken-part3.gc index 4abb8750d1..721f7699b4 100644 --- a/goal_src/jak1/levels/sunken/sunken-part3.gc +++ b/goal_src/jak1/levels/sunken/sunken-part3.gc @@ -1,1619 +1,1677 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: sunken-part3.gc -;; name in dgo: sunken-part3 -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (defpartgroup group-sunken-heatpipe-383 :id 378 :bounds (static-bspherem 0 1 0 3) - :parts ((sp-item 1551 :fade-after (meters 80) :falloff-to (meters 80) :binding 1550) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1552 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1551 :fade-after (meters 80) :falloff-to (meters 80) :binding 1550) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1552 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1551 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees -90)))) (defpart 1550 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1552 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees -90)))) (defpartgroup group-sunken-heatpipe-198 :id 379 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1554 :fade-after (meters 80) :falloff-to (meters 80) :binding 1553) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1555 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1554 :fade-after (meters 80) :falloff-to (meters 80) :binding 1553) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1555 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1554 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 120)))) (defpart 1553 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.3333334)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.3333334)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1555 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 120)))) (defpartgroup group-sunken-heatpipe-189 :id 380 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1557 :fade-after (meters 80) :falloff-to (meters 80) :binding 1556) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1558 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1557 :fade-after (meters 80) :falloff-to (meters 80) :binding 1556) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1558 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1557 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.7) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 116)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.7) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 116)))) (defpart 1556 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:x (meters 1.1555556)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:x (meters 1.1555556)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1558 - :init-specs ((:num 0.05) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 116)) - ) - ) + :init-specs + ((:num 0.05) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 116)))) (defpartgroup group-sunken-heatpipe-193 :id 381 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1560 :fade-after (meters 80) :falloff-to (meters 80) :binding 1559) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1561 :fade-after (meters 64) :falloff-to (meters 64)) - (sp-item 1562 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1560 :fade-after (meters 80) :falloff-to (meters 80) :binding 1559) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1561 :fade-after (meters 64) :falloff-to (meters 64)) + (sp-item 1562 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1560 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.4) - (:x (meters 0)) - (:y (meters -1.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 116)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.4) + (:x (meters 0)) + (:y (meters -1.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 116)))) (defpart 1559 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.1555556)) - (:y (meters 0)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.1555556)) + (:y (meters 0)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1561 - :init-specs ((:num 1.0) - (:y (meters -1.4) (meters 2.8)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:vel-y (meters 0.0046666665)) - (:fade-g 2.2755556) - (:accel-y (meters 0.0002)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90) (degrees 360)) - ) - ) + :init-specs + ((:num 1.0) + (:y (meters -1.4) (meters 2.8)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:vel-y (meters 0.0046666665)) + (:fade-g 2.2755556) + (:accel-y (meters 0.0002)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90) (degrees 360)))) (defpart 1562 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:y (meters -1.4) (meters 2.8)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 8.0 40.0) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:fade-a -0.16) - (:accel-y (meters 0.00066666666)) - (:friction 0.8) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:y (meters -1.4) (meters 2.8)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 8.0 40.0) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:fade-a -0.16) + (:accel-y (meters 0.00066666666)) + (:friction 0.8) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1)))) (defpartgroup group-sunken-heatpipe-207 :id 382 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1564 :fade-after (meters 80) :falloff-to (meters 80) :binding 1563) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1565 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1564 :fade-after (meters 80) :falloff-to (meters 80) :binding 1563) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1565 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1564 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 25.000002)))) (defpart 1563 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.1555557)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.1555557)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1565 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 25.000002)))) (defpartgroup group-sunken-window-bubbles-388 :id 383 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1566 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1566 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1567 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1566 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1566 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1567 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1567 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -12) (meters 24)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 10) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -12) (meters 24)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 10) (degrees 50.000004)))) (defpart 1566 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 24)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 10) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 24)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 10) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-387 :id 384 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1568 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1568 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1569 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1568 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1568 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1569 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1569 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 40) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 40) (degrees 50.000004)))) (defpart 1568 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 40) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 40) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-386 :id 385 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1570 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1570 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1571 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1570 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1570 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1571 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1571 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 130) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 130) (degrees 50.000004)))) (defpart 1570 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 130) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 130) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-384 :id 386 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1572 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1572 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1573 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1572 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1572 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1573 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1573 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -12) (meters 24)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -204.99998) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -12) (meters 24)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -204.99998) (degrees 50.000004)))) (defpart 1572 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 24)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -204.99998) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 24)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -204.99998) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-385 :id 387 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1574 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1574 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1575 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1574 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1574 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1575 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1575 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -185) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -185) (degrees 50.000004)))) (defpart 1574 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -185) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -185) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-394 :id 388 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1576 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1576 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1577 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1576 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1576 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1577 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1577 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -60) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -60) (degrees 50.000004)))) (defpart 1576 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -60) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -60) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-390 :id 389 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1578 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1578 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1579 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1578 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1578 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1579 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1579 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -45) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -45) (degrees 50.000004)))) (defpart 1578 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -45) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -45) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-393 :id 390 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1582 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1582 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1583 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1582 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1582 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1583 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1583 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -10) (meters 20)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 90) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -10) (meters 20)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 90) (degrees 50.000004)))) (defpart 1582 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 20)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 90) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 90) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-392 :id 391 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1584 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1584 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1585 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1584 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1584 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1585 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1585 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 135) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 135) (degrees 50.000004)))) (defpart 1584 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 135) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 135) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-38 :id 392 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1586 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1586 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1587 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1586 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1586 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1587 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1587 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 145) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 145) (degrees 40)))) (defpart 1586 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 145) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 145) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-200 :id 393 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1588 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1588 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1589 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1588 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1588 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1589 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1589 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -10) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 45) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -10) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 45) (degrees 40)))) (defpart 1588 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 45) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 45) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-391 :id 394 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1580 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1580 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1581 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1580 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1580 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1581 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1581 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -90) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -90) (degrees 40)))) (defpart 1580 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -90) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -90) (degrees 40)))) diff --git a/goal_src/jak1/levels/sunken/sunken-part4.gc b/goal_src/jak1/levels/sunken/sunken-part4.gc index cc94fdc11e..ee3ac88457 100644 --- a/goal_src/jak1/levels/sunken/sunken-part4.gc +++ b/goal_src/jak1/levels/sunken/sunken-part4.gc @@ -1,2513 +1,2399 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: sunken-part4.gc -;; name in dgo: sunken-part4 -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (defpartgroup group-sunken-heatpipe-282 :id 395 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1591 :fade-after (meters 80) :falloff-to (meters 80) :binding 1590) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1592 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1591 :fade-after (meters 80) :falloff-to (meters 80) :binding 1590) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1592 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1591 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 112.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 112.99999)))) (defpart 1590 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.1111112)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.1111112)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1592 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 112.99999)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 112.99999)))) (defpartgroup group-sunken-heatpipe-285 :id 396 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1594 :fade-after (meters 80) :falloff-to (meters 80) :binding 1593) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1595 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1594 :fade-after (meters 80) :falloff-to (meters 80) :binding 1593) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1595 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1594 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 100.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 100.00001)))) (defpart 1593 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0.6666667)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0.6666667)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1595 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 100.00001)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 100.00001)))) (defpartgroup group-sunken-heatpipe-288 :id 397 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1597 :fade-after (meters 80) :falloff-to (meters 80) :binding 1596) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1598 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1597 :fade-after (meters 80) :falloff-to (meters 80) :binding 1596) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1598 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1597 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 85)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 85)))) (defpart 1596 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1598 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 85)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 85)))) (defpartgroup group-sunken-heatpipe-299 :id 398 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1600 :fade-after (meters 80) :falloff-to (meters 80) :binding 1599) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1601 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1600 :fade-after (meters 80) :falloff-to (meters 80) :binding 1599) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1601 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1600 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 60)))) (defpart 1599 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.1111112)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.1111112)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1601 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 60)))) (defpartgroup group-sunken-heatpipe-302 :id 399 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1603 :fade-after (meters 80) :falloff-to (meters 80) :binding 1602) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1604 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1603 :fade-after (meters 80) :falloff-to (meters 80) :binding 1602) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1604 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1603 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 47)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 47)))) (defpart 1602 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.7777778)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.7777778)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1604 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 47)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 47)))) (defpartgroup group-sunken-heatpipe-367 :id 400 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1606 :fade-after (meters 80) :falloff-to (meters 80) :binding 1605) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1607 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1606 :fade-after (meters 80) :falloff-to (meters 80) :binding 1605) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1607 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1606 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 30)))) (defpart 1605 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -2.6666667)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -2.6666667)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1607 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 30)))) (defpartgroup group-sunken-heatpipe-371 :id 401 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1609 :fade-after (meters 80) :falloff-to (meters 80) :binding 1608) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1610 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1609 :fade-after (meters 80) :falloff-to (meters 80) :binding 1608) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1610 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1609 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 7.0000005)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 7.0000005)))) (defpart 1608 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -3.5555556)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -3.5555556)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1610 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 7.0000005)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 7.0000005)))) (defpartgroup group-sunken-heatpipe-308 :id 402 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1612 :fade-after (meters 80) :falloff-to (meters 80) :binding 1611) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1613 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1612 :fade-after (meters 80) :falloff-to (meters 80) :binding 1611) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1613 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1612 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 90)))) (defpart 1611 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0)) - (:y (meters 3.7777777)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0)) + (:y (meters 3.7777777)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1613 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 90)))) (defpartgroup group-sunken-heatpipe-312 :id 403 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1615 :fade-after (meters 80) :falloff-to (meters 80) :binding 1614) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1616 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1615 :fade-after (meters 80) :falloff-to (meters 80) :binding 1614) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1616 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1615 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -192.00002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -192.00002)))) (defpart 1614 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -4.4444447)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -4.4444447)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1616 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -192.00002)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -192.00002)))) (defpartgroup group-sunken-heatpipe-316 :id 404 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1618 :fade-after (meters 80) :falloff-to (meters 80) :binding 1617) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1619 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1618 :fade-after (meters 80) :falloff-to (meters 80) :binding 1617) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1619 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1618 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -162)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -162)))) (defpart 1617 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -3.1111112)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -3.1111112)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1619 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -162)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -162)))) (defpartgroup group-sunken-heatpipe-320 :id 405 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1621 :fade-after (meters 80) :falloff-to (meters 80) :binding 1620) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1622 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1621 :fade-after (meters 80) :falloff-to (meters 80) :binding 1620) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1622 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1621 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -105)))) (defpart 1620 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -0.6666667)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -0.6666667)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1622 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -105)))) (defpartgroup group-sunken-heatpipe-324 :id 406 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1624 :fade-after (meters 80) :falloff-to (meters 80) :binding 1623) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1625 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1624 :fade-after (meters 80) :falloff-to (meters 80) :binding 1623) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1625 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1624 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.2)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -85)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.2)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -85)))) (defpart 1623 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0.22222222)) - (:y (meters 4.2222223)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0.22222222)) + (:y (meters 4.2222223)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1625 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.5)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -85)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.5)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -85)))) (defpartgroup group-sunken-heatpipe-328 :id 407 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1627 :fade-after (meters 80) :falloff-to (meters 80) :binding 1626) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1628 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1627 :fade-after (meters 80) :falloff-to (meters 80) :binding 1626) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1628 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1627 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.2)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -67)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.2)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -67)))) (defpart 1626 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0.8888889)) - (:y (meters 4.2222223)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0.8888889)) + (:y (meters 4.2222223)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1628 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.5)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -67)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.5)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -67)))) (defpartgroup group-sunken-heatpipe-332 :id 408 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1630 :fade-after (meters 80) :falloff-to (meters 80) :binding 1629) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1631 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1630 :fade-after (meters 80) :falloff-to (meters 80) :binding 1629) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1631 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1630 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -20)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -20)))) (defpart 1629 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 3.3333333)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 3.3333333)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1631 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -20)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -20)))) (defpartgroup group-sunken-heatpipe-333 :id 409 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1633 :fade-after (meters 80) :falloff-to (meters 80) :binding 1632) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1634 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1633 :fade-after (meters 80) :falloff-to (meters 80) :binding 1632) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1634 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1633 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.9)) - (:y (meters 0.9)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 115)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.9)) + (:y (meters 0.9)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 115)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 30)))) (defpart 1632 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.3333335)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.3333335)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1634 - :init-specs ((:num 0.2) - (:x (meters -1.9)) - (:y (meters 1.2)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 115)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.9)) + (:y (meters 1.2)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 115)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 30)))) (defpartgroup group-sunken-heatpipe-334 :id 410 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1636 :fade-after (meters 80) :falloff-to (meters 80) :binding 1635) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1637 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1636 :fade-after (meters 80) :falloff-to (meters 80) :binding 1635) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1637 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1636 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.9)) - (:y (meters 0.7)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 20)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.9)) + (:y (meters 0.7)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 20)))) (defpart 1635 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.111111)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.111111)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1637 - :init-specs ((:num 0.2) - (:x (meters -1.9)) - (:y (meters 1)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 20)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.9)) + (:y (meters 1)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 20)))) (defpartgroup group-sunken-heatpipe-335 :id 411 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1639 :fade-after (meters 80) :falloff-to (meters 80) :binding 1638) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1640 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1639 :fade-after (meters 80) :falloff-to (meters 80) :binding 1638) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1640 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1639 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 0)))) (defpart 1638 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 4.4444447)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 4.4444447)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1640 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 0)))) (defpartgroup group-sunken-heatpipe-336 :id 412 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1642 :fade-after (meters 80) :falloff-to (meters 80) :binding 1641) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1643 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1642 :fade-after (meters 80) :falloff-to (meters 80) :binding 1641) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1643 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1642 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -15)))) (defpart 1641 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 3.7777777)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 3.7777777)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1643 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -15)))) (defpartgroup group-sunken-heatpipe-337 :id 413 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1645 :fade-after (meters 80) :falloff-to (meters 80) :binding 1644) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1646 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1645 :fade-after (meters 80) :falloff-to (meters 80) :binding 1644) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1646 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1645 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -37)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -37)))) (defpart 1644 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 2.4444444)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 2.4444444)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1646 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -37)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -37)))) (defpartgroup group-sunken-heatpipe-338 :id 414 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1648 :fade-after (meters 80) :falloff-to (meters 80) :binding 1647) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1649 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1648 :fade-after (meters 80) :falloff-to (meters 80) :binding 1647) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1649 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1648 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -62)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -62)))) (defpart 1647 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.7777778)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.7777778)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1649 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -62)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -62)))) (defpartgroup group-sunken-heatpipe-339 :id 415 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1651 :fade-after (meters 80) :falloff-to (meters 80) :binding 1650) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1652 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1651 :fade-after (meters 80) :falloff-to (meters 80) :binding 1650) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1652 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1651 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 99)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -85)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 99)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -85)))) (defpart 1650 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0.44444445)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0.44444445)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1652 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 99)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -85)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 99)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -85)))) (defpartgroup group-sunken-heatpipe-340 :id 416 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1654 :fade-after (meters 80) :falloff-to (meters 80) :binding 1653) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1655 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1654 :fade-after (meters 80) :falloff-to (meters 80) :binding 1653) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1655 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1654 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 160)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 160)))) (defpart 1653 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 3.1111112)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 3.1111112)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1655 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 160)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 160)))) (defpartgroup group-sunken-heatpipe-341 :id 417 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1657 :fade-after (meters 80) :falloff-to (meters 80) :binding 1656) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1658 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1657 :fade-after (meters 80) :falloff-to (meters 80) :binding 1656) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1658 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1657 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 177)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 177)))) (defpart 1656 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 3.7777777)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 3.7777777)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1658 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 177)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 177)))) (defpartgroup group-sunken-heatpipe-357 :id 418 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1660 :fade-after (meters 80) :falloff-to (meters 80) :binding 1659) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1661 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1660 :fade-after (meters 80) :falloff-to (meters 80) :binding 1659) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1661 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1660 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.1)) - (:rotate-y (degrees 131)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.1)) + (:rotate-y (degrees 131)))) (defpart 1659 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.7777778)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.7777778)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1661 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.4)) - (:rotate-y (degrees 131)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.4)) + (:rotate-y (degrees 131)))) (defpartgroup group-sunken-heatpipe-356 :id 419 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1663 :fade-after (meters 80) :falloff-to (meters 80) :binding 1662) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1664 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1663 :fade-after (meters 80) :falloff-to (meters 80) :binding 1662) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1664 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1663 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.1)) - (:rotate-y (degrees 311)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.1)) + (:rotate-y (degrees 311)))) (defpart 1662 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.7777778)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.7777778)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1664 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.4)) - (:rotate-y (degrees 311)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.4)) + (:rotate-y (degrees 311)))) (defpartgroup group-sunken-heatpipe-354 :id 420 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1666 :fade-after (meters 80) :falloff-to (meters 80) :binding 1665) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1667 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1666 :fade-after (meters 80) :falloff-to (meters 80) :binding 1665) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1667 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1666 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 325)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 325)))) (defpart 1665 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 2.6666667)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 2.6666667)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1667 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 325)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 325)))) (defpartgroup group-sunken-sheild :id 565 :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 2311) (sp-item 2312 :flags (is-3d))) - ) + :parts ((sp-item 2311) (sp-item 2312 :flags (is-3d)))) (defpart 2312 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.1 0.6) - (:x (meters 0) (meters 1.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.06) (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.8) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 2313) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.1 0.6) + (:x (meters 0) (meters 1.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.06) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.8) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 2313) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2313 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpart 2311 - :init-specs ((:num 4.0 2.0) - (:x (meters 2) (meters 17)) - (:y (meters -6)) - (:rot-x 8) - (:r 16384.0) - (:g 12288.0) - (:b 12288.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:fade-b -32.768) - (:timer (seconds 0.5)) - (:flags (aux-list)) - (:next-time (seconds 0.25)) - (:next-launcher 2314) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 4.0 2.0) + (:x (meters 2) (meters 17)) + (:y (meters -6)) + (:rot-x 8) + (:r 16384.0) + (:g 12288.0) + (:b 12288.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:fade-b -32.768) + (:timer (seconds 0.5)) + (:flags (aux-list)) + (:next-time (seconds 0.25)) + (:next-launcher 2314) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2314 - :init-specs ((:fade-b 32.768)) - ) + :init-specs ((:fade-b 32.768))) diff --git a/goal_src/jak1/levels/sunken/sunken-part5.gc b/goal_src/jak1/levels/sunken/sunken-part5.gc index c777ec5a24..198f95ab72 100644 --- a/goal_src/jak1/levels/sunken/sunken-part5.gc +++ b/goal_src/jak1/levels/sunken/sunken-part5.gc @@ -1,1423 +1,1358 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: sunken-part5.gc -;; name in dgo: sunken-part5 -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (defpartgroup group-sunken-heatpipe-227 :id 421 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1669 :fade-after (meters 80) :falloff-to (meters 80) :binding 1668) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1670 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1669 :fade-after (meters 80) :falloff-to (meters 80) :binding 1668) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1670 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1669 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 106)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -131)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 106)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -131)))) (defpart 1668 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.7777778)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.7777778)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1670 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 106)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -131)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 106)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -131)))) (defpartgroup group-sunken-heatpipe-238 :id 422 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1672 :fade-after (meters 80) :falloff-to (meters 80) :binding 1671) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1673 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1672 :fade-after (meters 80) :falloff-to (meters 80) :binding 1671) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1673 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1672 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -100.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -100.00001)))) (defpart 1671 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -0.44444445)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -0.44444445)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1673 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -100.00001)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -100.00001)))) (defpartgroup group-sunken-heatpipe-239 :id 423 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1675 :fade-after (meters 80) :falloff-to (meters 80) :binding 1674) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1676 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1675 :fade-after (meters 80) :falloff-to (meters 80) :binding 1674) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1676 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1675 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -124.99999)))) (defpart 1674 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.1111112)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.1111112)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1676 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -124.99999)))) (defpartgroup group-sunken-heatpipe-240 :id 424 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1678 :fade-after (meters 80) :falloff-to (meters 80) :binding 1677) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1679 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1678 :fade-after (meters 80) :falloff-to (meters 80) :binding 1677) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1679 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1678 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -93)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -93)))) (defpart 1677 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1679 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -93)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -93)))) (defpartgroup group-sunken-heatpipe-241 :id 425 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1681 :fade-after (meters 80) :falloff-to (meters 80) :binding 1680) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1682 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1681 :fade-after (meters 80) :falloff-to (meters 80) :binding 1680) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1682 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1681 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -110)))) (defpart 1680 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -0.6666667)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -0.6666667)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1682 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -110)))) (defpartgroup group-sunken-heatpipe-242 :id 426 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1684 :fade-after (meters 80) :falloff-to (meters 80) :binding 1683) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1685 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1684 :fade-after (meters 80) :falloff-to (meters 80) :binding 1683) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1685 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1684 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -135)))) (defpart 1683 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -2)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -2)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1685 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -135)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -135)))) (defpartgroup group-sunken-heatpipe-243 :id 427 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1687 :fade-after (meters 80) :falloff-to (meters 80) :binding 1686) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1688 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1687 :fade-after (meters 80) :falloff-to (meters 80) :binding 1686) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1688 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1687 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -147)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -147)))) (defpart 1686 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -2.4444444)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -2.4444444)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1688 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -147)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -147)))) (defpartgroup group-sunken-heatpipe-278 :id 428 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1690 :fade-after (meters 80) :falloff-to (meters 80) :binding 1689) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1691 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1690 :fade-after (meters 80) :falloff-to (meters 80) :binding 1689) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1691 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1690 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -165)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -165)))) (defpart 1689 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -3.0222223)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -3.0222223)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1691 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -165)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -165)))) (defpartgroup group-sunken-heatpipe-251 :id 429 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1693 :fade-after (meters 80) :falloff-to (meters 80) :binding 1692) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1694 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1693 :fade-after (meters 80) :falloff-to (meters 80) :binding 1692) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1694 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1693 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -136)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -136)))) (defpart 1692 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -2.1333334)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -2.1333334)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1694 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -136)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -136)))) (defpartgroup group-sunken-heatpipe-254 :id 430 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1696 :fade-after (meters 80) :falloff-to (meters 80) :binding 1695) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1697 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1696 :fade-after (meters 80) :falloff-to (meters 80) :binding 1695) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1697 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1696 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -185)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -185)))) (defpart 1695 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -3.911111)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -3.911111)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1697 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -185)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -185)))) (defpartgroup group-sunken-heatpipe-264 :id 431 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1699 :fade-after (meters 80) :falloff-to (meters 80) :binding 1698) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1700 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1699 :fade-after (meters 80) :falloff-to (meters 80) :binding 1698) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1700 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1699 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -203)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -203)))) (defpart 1698 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -4.6666665)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -4.6666665)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1700 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -203)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -203)))) (defpartgroup group-sunken-heatpipe-265 :id 432 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1702 :fade-after (meters 80) :falloff-to (meters 80) :binding 1701) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1703 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1702 :fade-after (meters 80) :falloff-to (meters 80) :binding 1701) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1703 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1702 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -217)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -217)))) (defpart 1701 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -5.3333335)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -5.3333335)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1703 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -217)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -217)))) (defpartgroup group-sunken-heatpipe-266 :id 433 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1705 :fade-after (meters 80) :falloff-to (meters 80) :binding 1704) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1706 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1705 :fade-after (meters 80) :falloff-to (meters 80) :binding 1704) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1706 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1705 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 107)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -243)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 107)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -243)))) (defpart 1704 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -6.4444447)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -6.4444447)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1706 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 107)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -243)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 107)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -243)))) (defpartgroup group-sunken-heatpipe-267 :id 434 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1708 :fade-after (meters 80) :falloff-to (meters 80) :binding 1707) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1709 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1708 :fade-after (meters 80) :falloff-to (meters 80) :binding 1707) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1709 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1708 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.7)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -267)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.7)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -267)))) (defpart 1707 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -7.7777777)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -7.7777777)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1709 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 1)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -267)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 1)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -267)))) (defpartgroup group-sunken-heatpipe-268 :id 435 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1711 :fade-after (meters 80) :falloff-to (meters 80) :binding 1710) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1712 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1711 :fade-after (meters 80) :falloff-to (meters 80) :binding 1710) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1712 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1711 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.7)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -300)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.7)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -300)))) (defpart 1710 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -9.333333)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -9.333333)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1712 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 1)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -300)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 1)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -300)))) diff --git a/goal_src/jak1/levels/sunken/sunken-pipegame.gc b/goal_src/jak1/levels/sunken/sunken-pipegame.gc index 1563369e8d..59f76465fa 100644 --- a/goal_src/jak1/levels/sunken/sunken-pipegame.gc +++ b/goal_src/jak1/levels/sunken/sunken-pipegame.gc @@ -1,936 +1,749 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/ticky.gc") (require "engine/geometry/path.gc") (require "engine/common-obs/collectables.gc") (require "engine/camera/pov-camera-h.gc") (require "engine/common-obs/basebutton.gc") -;; name: sunken-pipegame.gc -;; name in dgo: sunken-pipegame -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS -(deftype sunken-pipegame-button (basebutton) - () - ) - +(deftype sunken-pipegame-button (basebutton) ()) (deftype sunken-pipegame-prize (structure) - ((puzzle-delay time-frame) - (pipe-travel-time-to-far time-frame) - (pipe-travel-time-to-jar time-frame) - (actor-handle handle) - (jar-pos vector :inline) - (far-pos vector :inline) - (sucked-up-jar-part-pos vector :inline) - (sucked-up-far-part-pos vector :inline) - (blown-out-jar-part-pos vector :inline) - (blown-out-far-part-pos vector :inline) - (sucked-up-part sparticle-launch-control) - (blown-out-part sparticle-launch-control) - ) - ) - + ((puzzle-delay time-frame) + (pipe-travel-time-to-far time-frame) + (pipe-travel-time-to-jar time-frame) + (actor-handle handle) + (jar-pos vector :inline) + (far-pos vector :inline) + (sucked-up-jar-part-pos vector :inline) + (sucked-up-far-part-pos vector :inline) + (blown-out-jar-part-pos vector :inline) + (blown-out-far-part-pos vector :inline) + (sucked-up-part sparticle-launch-control) + (blown-out-part sparticle-launch-control))) (deftype sunken-pipegame (process-drawable) - ((abort-audio-if-beaten? symbol) - (challenges-mask uint32) - (challenge int32) - (ticker ticky :inline) - (button (pointer sunken-pipegame-button) 3) - (prize sunken-pipegame-prize 3 :inline) - ) + ((abort-audio-if-beaten? symbol) + (challenges-mask uint32) + (challenge int32) + (ticker ticky :inline) + (button (pointer sunken-pipegame-button) 3) + (prize sunken-pipegame-prize 3 :inline)) (:methods - (sunken-pipegame-method-20 (_type_) uint) - (sunken-pipegame-method-21 (_type_ symbol) symbol) - (sunken-pipegame-method-22 (_type_ symbol) none) - ) + (sunken-pipegame-method-20 (_type_) uint) + (sunken-pipegame-method-21 (_type_ symbol) symbol) + (sunken-pipegame-method-22 (_type_ symbol) none)) (:states - sunken-pipegame-beat-challenge - sunken-pipegame-begin-play - sunken-pipegame-end-play - sunken-pipegame-idle - sunken-pipegame-start-up - ) - ) - + sunken-pipegame-beat-challenge + sunken-pipegame-begin-play + sunken-pipegame-end-play + sunken-pipegame-idle + sunken-pipegame-start-up)) (defpartgroup group-pipegame-jar-suck0 :id 448 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1741) (sp-item 1742) (sp-item 1743) (sp-item 1744 :flags (is-3d))) - ) + :parts ((sp-item 1741) (sp-item 1742) (sp-item 1743) (sp-item 1744 :flags (is-3d)))) (defpart 1741 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 10.0) - (:y (meters 6)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 0.0) - (:a 0.0) - (:scalevel-y (meters 0.006666667)) - (:fade-a 1.4222223) - (:accel-y (meters 0.0033333334)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1745) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters -10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 10.0) + (:y (meters 6)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 0.0) + (:a 0.0) + (:scalevel-y (meters 0.006666667)) + (:fade-a 1.4222223) + (:accel-y (meters 0.0033333334)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1745) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters -10)))) (defpart 1745 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpart 1742 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:y (meters 0) (meters 8)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:fade-a -3.657143) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:y (meters 0) (meters 8)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:fade-a -3.657143) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2.5)))) (defpart 1743 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 7) (meters 3)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 7) (meters 3)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1744 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-jar-suck1 :id 449 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1746) (sp-item 1742) (sp-item 1747) (sp-item 1748 :flags (is-3d))) - ) + :parts ((sp-item 1746) (sp-item 1742) (sp-item 1747) (sp-item 1748 :flags (is-3d)))) (defpart 1746 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 10.0) - (:y (meters 6)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 0.0 64.0) - (:g 64.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-y (meters 0.006666667)) - (:fade-a 1.4222223) - (:accel-y (meters 0.0033333334)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1745) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters -10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 10.0) + (:y (meters 6)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 0.0 64.0) + (:g 64.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-y (meters 0.006666667)) + (:fade-a 1.4222223) + (:accel-y (meters 0.0033333334)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1745) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters -10)))) (defpart 1747 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 7) (meters 3)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 7) (meters 3)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1748 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-jar-suck2 :id 450 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1749) (sp-item 1742) (sp-item 1750) (sp-item 1751 :flags (is-3d))) - ) + :parts ((sp-item 1749) (sp-item 1742) (sp-item 1750) (sp-item 1751 :flags (is-3d)))) (defpart 1749 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 10.0) - (:y (meters 6)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 0.0) - (:g 0.0 64.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-y (meters 0.006666667)) - (:fade-a 1.4222223) - (:accel-y (meters 0.0033333334)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1745) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters -10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 10.0) + (:y (meters 6)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 0.0) + (:g 0.0 64.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-y (meters 0.006666667)) + (:fade-a 1.4222223) + (:accel-y (meters 0.0033333334)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1745) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters -10)))) (defpart 1750 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 7) (meters 3)) - (:r 0.0) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 7) (meters 3)) + (:r 0.0) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1751 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 0.0) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 0.0) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-blow0 :id 451 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1752) (sp-item 1753) (sp-item 1754) (sp-item 1755 :flags (is-3d))) - ) + :parts ((sp-item 1752) (sp-item 1753) (sp-item 1754) (sp-item 1755 :flags (is-3d)))) (defpart 1752 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:y (meters 0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters -0.033333335)) - (:scalevel-y (meters 0.006666667)) - (:accel-y (meters -0.006666667)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1756) - (:conerot-x (degrees 150) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:y (meters 0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters -0.033333335)) + (:scalevel-y (meters 0.006666667)) + (:accel-y (meters -0.006666667)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1756) + (:conerot-x (degrees 150) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1756 - :init-specs ((:fade-a -1.4222223)) - ) + :init-specs ((:fade-a -1.4222223))) (defpart 1753 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:y (meters 0) (meters -8)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:fade-a -3.657143) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:y (meters 0) (meters -8)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:fade-a -3.657143) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2.5)))) (defpart 1754 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters -3.5)) - (:scale-x (meters 3) (meters 0.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 13) (meters 3)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters -3.5)) + (:scale-x (meters 3) (meters 0.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 13) (meters 3)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1755 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-blow1 :id 452 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1757) (sp-item 1753) (sp-item 1758) (sp-item 1759 :flags (is-3d))) - ) + :parts ((sp-item 1757) (sp-item 1753) (sp-item 1758) (sp-item 1759 :flags (is-3d)))) (defpart 1757 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:y (meters 0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 0.0 32.0) - (:g 64.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters -0.033333335)) - (:scalevel-y (meters 0.006666667)) - (:accel-y (meters -0.006666667)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1756) - (:conerot-x (degrees 150) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:y (meters 0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 0.0 32.0) + (:g 64.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters -0.033333335)) + (:scalevel-y (meters 0.006666667)) + (:accel-y (meters -0.006666667)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1756) + (:conerot-x (degrees 150) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1758 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters -3.5)) - (:scale-x (meters 3) (meters 0.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 13) (meters 3)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters -3.5)) + (:scale-x (meters 3) (meters 0.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 13) (meters 3)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1759 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-blow2 :id 453 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1760) (sp-item 1753) (sp-item 1761) (sp-item 1762 :flags (is-3d))) - ) + :parts ((sp-item 1760) (sp-item 1753) (sp-item 1761) (sp-item 1762 :flags (is-3d)))) (defpart 1760 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:y (meters 0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 0.0) - (:g 0.0 32.0) - (:b 64.0 128.0) - (:a 64.0 64.0) - (:vel-y (meters -0.033333335)) - (:scalevel-y (meters 0.006666667)) - (:accel-y (meters -0.006666667)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1756) - (:conerot-x (degrees 150) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:y (meters 0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 0.0) + (:g 0.0 32.0) + (:b 64.0 128.0) + (:a 64.0 64.0) + (:vel-y (meters -0.033333335)) + (:scalevel-y (meters 0.006666667)) + (:accel-y (meters -0.006666667)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1756) + (:conerot-x (degrees 150) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1761 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters -3.5)) - (:scale-x (meters 3) (meters 0.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 13) (meters 3)) - (:r 0.0) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters -3.5)) + (:scale-x (meters 3) (meters 0.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 13) (meters 3)) + (:r 0.0) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1762 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 0.0) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 0.0) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defbehavior sunken-pipegame-button-init-by-other sunken-pipegame-button ((arg0 vector) (arg1 quaternion) (arg2 entity-actor) (arg3 symbol)) (basebutton-init-by-other (the-as entity-actor #f) arg0 arg1 arg2 arg3 0.0) - (none) - ) + (none)) (defmethod sunken-pipegame-method-20 ((this sunken-pipegame)) (let ((gp-0 0)) - (if (task-complete? *game-info* (game-task sunken-pipe)) - (+! gp-0 1) - ) - (if (got-buzzer? *game-info* (game-task sunken-buzzer) 0) - (+! gp-0 2) - ) - (if (got-buzzer? *game-info* (game-task sunken-buzzer) 1) - (+! gp-0 4) - ) - (the-as uint gp-0) - ) - ) + (if (task-complete? *game-info* (game-task sunken-pipe)) (+! gp-0 1)) + (if (got-buzzer? *game-info* (game-task sunken-buzzer) 0) (+! gp-0 2)) + (if (got-buzzer? *game-info* (game-task sunken-buzzer) 1) (+! gp-0 4)) + (the-as uint gp-0))) (defstate sunken-pipegame-start-up (sunken-pipegame) - :code (behavior () - (suspend) - (send-event (handle->process (-> self prize 0 actor-handle)) 'anim #f) - (go sunken-pipegame-idle) - ) - ) + :code + (behavior () + (suspend) + (send-event (handle->process (-> self prize 0 actor-handle)) 'anim #f) + (go sunken-pipegame-idle))) (defstate sunken-pipegame-idle (sunken-pipegame) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (when (= (-> proc type) sunken-pipegame-button) - (set! (-> self challenge) (-> (the-as sunken-pipegame-button proc) button-id)) - (go sunken-pipegame-begin-play) - ) - ) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (when (= (-> proc type) sunken-pipegame-button) + (set! (-> self challenge) (-> (the-as sunken-pipegame-button proc) button-id)) + (go sunken-pipegame-begin-play))))) + :code + (behavior () + (loop + (suspend)))) (defstate sunken-pipegame-begin-play (sunken-pipegame) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (case (-> proc type) - ((fuel-cell buzzer) - (go sunken-pipegame-beat-challenge) - ) - ) - ) - ) - ) - :enter (behavior () - (sunken-pipegame-method-21 self #f) - (set! (-> self abort-audio-if-beaten?) #f) - (dotimes (gp-0 3) - (let ((v1-4 (-> self button gp-0))) - (if (and (!= gp-0 (-> self challenge)) (not (logtest? (ash 1 gp-0) (-> self challenges-mask)))) - (send-event (ppointer->process v1-4) 'trigger) - ) - ) - ) - ) - :code (behavior () - (local-vars (v1-112 symbol)) - (let ((gp-0 (current-time))) - (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) - (go sunken-pipegame-end-play) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (case (-> proc type) + ((fuel-cell buzzer) (go sunken-pipegame-beat-challenge)))))) + :enter + (behavior () + (sunken-pipegame-method-21 self #f) + (set! (-> self abort-audio-if-beaten?) #f) + (dotimes (gp-0 3) + (let ((v1-4 (-> self button gp-0))) + (if (and (!= gp-0 (-> self challenge)) (not (logtest? (ash 1 gp-0) (-> self challenges-mask)))) + (send-event (ppointer->process v1-4) 'trigger))))) + :code + (behavior () + (local-vars (v1-112 symbol)) + (let ((gp-0 (current-time))) + (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) (go sunken-pipegame-end-play)) + (kill-current-level-hint '(camera) '() 'exit) + (let ((v1-10 (-> self challenge))) + (cond + ((zero? v1-10) + (ambient-hint-spawn "gamcam27" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-left" 0 #f '() :to self)) + ((= v1-10 1) + (ambient-hint-spawn "gamcam25" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-middle" 0 #f '() :to self)) + ((= v1-10 2) + (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-right" 0 #f '() :to self)))) + (set-time! (-> self state-time)) + (let ((f30-0 0.0)) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (let ((s5-3 (-> self prize (-> self challenge)))) + (spawn (-> s5-3 sucked-up-part) (-> s5-3 sucked-up-jar-part-pos)) + (spawn (-> s5-3 blown-out-part) (-> s5-3 blown-out-far-part-pos))) + (+! f30-0 (* 1024.0 (seconds-per-frame))) + (let ((s5-4 (new 'stack-no-clear 'vector))) + (set! (-> s5-4 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) + (let* ((f28-0 (-> s5-4 y)) + (v1-39 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-40 (the-as number (logior #x3f800000 v1-39)))) + (set! (-> s5-4 y) (+ f28-0 (* (+ -1.0 (the-as float v1-40)) f30-0)))) + (let ((a1-18 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-18 from) self) + (set! (-> a1-18 num-params) 1) + (set! (-> a1-18 message) 'trans) + (set! (-> a1-18 param 0) (the-as uint s5-4)) + (let ((t9-17 send-event-function) + (a0-32 (handle->process (-> self prize (-> self challenge) actor-handle)))) + (t9-17 a0-32 a1-18)))) + (suspend)) + (let ((f28-1 0.0)) + (until (= f28-1 20480.0) + (let ((s5-5 (-> self prize (-> self challenge)))) + (spawn (-> s5-5 sucked-up-part) (-> s5-5 sucked-up-jar-part-pos)) + (spawn (-> s5-5 blown-out-part) (-> s5-5 blown-out-far-part-pos)) + (set! f28-1 (seek f28-1 20480.0 (* 81920.0 (seconds-per-frame)))) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> s5-5 jar-pos quad)) + (let* ((f26-0 (-> s4-0 y)) + (v1-65 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-66 (the-as number (logior #x3f800000 v1-65)))) + (set! (-> s4-0 y) (+ f26-0 (+ (* (+ -1.0 (the-as float v1-66)) f30-0) f28-1)))) + (let ((a1-22 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-22 from) self) + (set! (-> a1-22 num-params) 1) + (set! (-> a1-22 message) 'trans) + (set! (-> a1-22 param 0) (the-as uint s4-0)) + (let ((t9-22 send-event-function) + (a0-45 (handle->process (-> s5-5 actor-handle)))) + (t9-22 a0-45 a1-22))))) + (suspend)))) + (until (time-elapsed? gp-0 (-> self prize (-> self challenge) pipe-travel-time-to-far)) + (let ((s5-6 (-> self prize (-> self challenge)))) + (spawn (-> s5-6 sucked-up-part) (-> s5-6 sucked-up-jar-part-pos)) + (spawn (-> s5-6 blown-out-part) (-> s5-6 blown-out-far-part-pos))) + (suspend))) + (sunken-pipegame-method-22 self #t) + (let ((f30-1 20480.0)) + (until (= f30-1 0.0) + (set! f30-1 (seek f30-1 0.0 (* 81920.0 (seconds-per-frame)))) + (let ((gp-1 (-> self prize (-> self challenge)))) + (spawn (-> gp-1 sucked-up-part) (-> gp-1 sucked-up-jar-part-pos)) + (spawn (-> gp-1 blown-out-part) (-> gp-1 blown-out-far-part-pos)) + (let ((v1-96 (new 'stack-no-clear 'vector))) + (set! (-> v1-96 quad) (-> gp-1 far-pos quad)) + (+! (-> v1-96 y) f30-1) + (let ((a1-32 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-32 from) self) + (set! (-> a1-32 num-params) 1) + (set! (-> a1-32 message) 'trans) + (set! (-> a1-32 param 0) (the-as uint v1-96)) + (let ((t9-29 send-event-function) + (a0-64 (handle->process (-> gp-1 actor-handle)))) + (t9-29 a0-64 a1-32))))) + (suspend))) + (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) (go sunken-pipegame-end-play)) + (until v1-112 + (suspend) + (set! v1-112 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed)))))) + (set-time! (-> self state-time)) + (sleep (-> self ticker) (-> self prize (-> self challenge) puzzle-delay)) + (until (time-elapsed? (-> self state-time) (seconds 0.5)) + (completed? (-> self ticker)) + (suspend)) + (level-hint-spawn (text-id sunken-pipegame-hint) "sksp0123" (the-as entity #f) *entity-pool* (game-task none)) + (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) + (until (completed? (-> self ticker)) + (suspend)) (kill-current-level-hint '(camera) '() 'exit) - (let ((v1-10 (-> self challenge))) - (cond - ((zero? v1-10) - (ambient-hint-spawn "gamcam27" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-left" 0 #f '() :to self) - ) - ((= v1-10 1) - (ambient-hint-spawn "gamcam25" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-middle" 0 #f '() :to self) - ) - ((= v1-10 2) - (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-right" 0 #f '() :to self) - ) - ) - ) + (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) + (set! (-> self abort-audio-if-beaten?) #t) (set-time! (-> self state-time)) - (let ((f30-0 0.0)) + (let ((f30-2 0.0)) (until (time-elapsed? (-> self state-time) (seconds 2)) - (let ((s5-3 (-> self prize (-> self challenge)))) - (spawn (-> s5-3 sucked-up-part) (-> s5-3 sucked-up-jar-part-pos)) - (spawn (-> s5-3 blown-out-part) (-> s5-3 blown-out-far-part-pos)) - ) - (+! f30-0 (* 1024.0 (seconds-per-frame))) - (let ((s5-4 (new 'stack-no-clear 'vector))) - (set! (-> s5-4 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) - (let* ((f28-0 (-> s5-4 y)) - (v1-39 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-40 (the-as number (logior #x3f800000 v1-39))) - ) - (set! (-> s5-4 y) (+ f28-0 (* (+ -1.0 (the-as float v1-40)) f30-0))) - ) - (let ((a1-18 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-18 from) self) - (set! (-> a1-18 num-params) 1) - (set! (-> a1-18 message) 'trans) - (set! (-> a1-18 param 0) (the-as uint s5-4)) - (let ((t9-17 send-event-function) - (a0-32 (handle->process (-> self prize (-> self challenge) actor-handle))) - ) - (t9-17 a0-32 a1-18) - ) - ) - ) - (suspend) - ) - (let ((f28-1 0.0)) - (until (= f28-1 20480.0) - (let ((s5-5 (-> self prize (-> self challenge)))) - (spawn (-> s5-5 sucked-up-part) (-> s5-5 sucked-up-jar-part-pos)) - (spawn (-> s5-5 blown-out-part) (-> s5-5 blown-out-far-part-pos)) - (set! f28-1 (seek f28-1 20480.0 (* 81920.0 (seconds-per-frame)))) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (set! (-> s4-0 quad) (-> s5-5 jar-pos quad)) - (let* ((f26-0 (-> s4-0 y)) - (v1-65 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-66 (the-as number (logior #x3f800000 v1-65))) - ) - (set! (-> s4-0 y) (+ f26-0 (+ (* (+ -1.0 (the-as float v1-66)) f30-0) f28-1))) - ) - (let ((a1-22 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-22 from) self) - (set! (-> a1-22 num-params) 1) - (set! (-> a1-22 message) 'trans) - (set! (-> a1-22 param 0) (the-as uint s4-0)) - (let ((t9-22 send-event-function) - (a0-45 (handle->process (-> s5-5 actor-handle))) - ) - (t9-22 a0-45 a1-22) - ) - ) - ) - ) - (suspend) - ) - ) - ) - (until (time-elapsed? gp-0 (-> self prize (-> self challenge) pipe-travel-time-to-far)) - (let ((s5-6 (-> self prize (-> self challenge)))) - (spawn (-> s5-6 sucked-up-part) (-> s5-6 sucked-up-jar-part-pos)) - (spawn (-> s5-6 blown-out-part) (-> s5-6 blown-out-far-part-pos)) - ) - (suspend) - ) - ) - (sunken-pipegame-method-22 self #t) - (let ((f30-1 20480.0)) - (until (= f30-1 0.0) - (set! f30-1 (seek f30-1 0.0 (* 81920.0 (seconds-per-frame)))) - (let ((gp-1 (-> self prize (-> self challenge)))) - (spawn (-> gp-1 sucked-up-part) (-> gp-1 sucked-up-jar-part-pos)) - (spawn (-> gp-1 blown-out-part) (-> gp-1 blown-out-far-part-pos)) - (let ((v1-96 (new 'stack-no-clear 'vector))) - (set! (-> v1-96 quad) (-> gp-1 far-pos quad)) - (+! (-> v1-96 y) f30-1) - (let ((a1-32 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-32 from) self) - (set! (-> a1-32 num-params) 1) - (set! (-> a1-32 message) 'trans) - (set! (-> a1-32 param 0) (the-as uint v1-96)) - (let ((t9-29 send-event-function) - (a0-64 (handle->process (-> gp-1 actor-handle))) - ) - (t9-29 a0-64 a1-32) - ) - ) - ) - ) - (suspend) - ) - ) - (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) - (go sunken-pipegame-end-play) - ) - (until v1-112 - (suspend) - (set! v1-112 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) - ) - (set-time! (-> self state-time)) - (sleep (-> self ticker) (-> self prize (-> self challenge) puzzle-delay)) - (until (time-elapsed? (-> self state-time) (seconds 0.5)) - (completed? (-> self ticker)) - (suspend) - ) - (level-hint-spawn (text-id sunken-pipegame-hint) "sksp0123" (the-as entity #f) *entity-pool* (game-task none)) - (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) - (until (completed? (-> self ticker)) - (suspend) - ) - (kill-current-level-hint '(camera) '() 'exit) - (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) - (set! (-> self abort-audio-if-beaten?) #t) - (set-time! (-> self state-time)) - (let ((f30-2 0.0)) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (let ((gp-2 (-> self prize (-> self challenge)))) - (spawn (-> gp-2 sucked-up-part) (-> gp-2 sucked-up-far-part-pos)) - (spawn (-> gp-2 blown-out-part) (-> gp-2 blown-out-jar-part-pos)) - (+! f30-2 (* 1024.0 (seconds-per-frame))) - (let ((s5-7 (new 'stack-no-clear 'vector))) - (set! (-> s5-7 quad) (-> gp-2 far-pos quad)) - (let* ((f28-2 (-> s5-7 y)) - (v1-146 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-147 (the-as number (logior #x3f800000 v1-146))) - ) - (set! (-> s5-7 y) (+ f28-2 (* (+ -1.0 (the-as float v1-147)) f30-2))) - ) - (let ((a1-42 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-42 from) self) - (set! (-> a1-42 num-params) 1) - (set! (-> a1-42 message) 'trans) - (set! (-> a1-42 param 0) (the-as uint s5-7)) - (let ((t9-41 send-event-function) - (a0-91 (handle->process (-> gp-2 actor-handle))) - ) - (t9-41 a0-91 a1-42) - ) - ) - ) - ) - (suspend) - ) - (let ((f28-3 0.0)) - (until (= f28-3 20480.0) - (let ((gp-3 (-> self prize (-> self challenge)))) - (spawn (-> gp-3 sucked-up-part) (-> gp-3 sucked-up-far-part-pos)) - (spawn (-> gp-3 blown-out-part) (-> gp-3 blown-out-jar-part-pos)) - (set! f28-3 (seek f28-3 20480.0 (* 81920.0 (seconds-per-frame)))) - (let ((s5-8 (new 'stack-no-clear 'vector))) - (set! (-> s5-8 quad) (-> gp-3 far-pos quad)) - (let* ((f26-1 (-> s5-8 y)) - (v1-169 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-170 (the-as number (logior #x3f800000 v1-169))) - ) - (set! (-> s5-8 y) (+ f26-1 (+ (* (+ -1.0 (the-as float v1-170)) f30-2) f28-3))) - ) - (let ((a1-46 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-46 from) self) - (set! (-> a1-46 num-params) 1) - (set! (-> a1-46 message) 'trans) - (set! (-> a1-46 param 0) (the-as uint s5-8)) - (let ((t9-46 send-event-function) - (a0-104 (handle->process (-> gp-3 actor-handle))) - ) - (t9-46 a0-104 a1-46) - ) - ) - ) - ) - (suspend) - ) - ) - ) - (sunken-pipegame-method-22 self #f) - (set! (-> self abort-audio-if-beaten?) #f) - (let ((v1-184 (-> self prize (-> self challenge))) - (a0-109 (new 'stack-no-clear 'vector)) - ) - (set! (-> a0-109 quad) (-> v1-184 jar-pos quad)) - (+! (-> a0-109 y) 40960.0) - (send-event (handle->process (-> v1-184 actor-handle)) 'trans a0-109) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (-> self prize (-> self challenge) pipe-travel-time-to-jar)) - (let ((gp-4 (-> self prize (-> self challenge)))) - (spawn (-> gp-4 sucked-up-part) (-> gp-4 sucked-up-far-part-pos)) - (spawn (-> gp-4 blown-out-part) (-> gp-4 blown-out-jar-part-pos)) - ) - (suspend) - ) - (let ((f30-3 20480.0)) - (until (= f30-3 0.0) - (set! f30-3 (seek f30-3 0.0 (* 40960.0 (seconds-per-frame)))) - (let ((v1-203 (new 'stack-no-clear 'vector))) - (set! (-> v1-203 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) - (+! (-> v1-203 y) f30-3) - (let ((a1-57 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-57 from) self) - (set! (-> a1-57 num-params) 1) - (set! (-> a1-57 message) 'trans) - (set! (-> a1-57 param 0) (the-as uint v1-203)) - (let ((t9-52 send-event-function) - (a0-128 (handle->process (-> self prize (-> self challenge) actor-handle))) - ) - (t9-52 a0-128 a1-57) - ) - ) - ) - (suspend) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1.5)) - (suspend) - ) - (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) - (go sunken-pipegame-end-play) - ) - ) + (let ((gp-2 (-> self prize (-> self challenge)))) + (spawn (-> gp-2 sucked-up-part) (-> gp-2 sucked-up-far-part-pos)) + (spawn (-> gp-2 blown-out-part) (-> gp-2 blown-out-jar-part-pos)) + (+! f30-2 (* 1024.0 (seconds-per-frame))) + (let ((s5-7 (new 'stack-no-clear 'vector))) + (set! (-> s5-7 quad) (-> gp-2 far-pos quad)) + (let* ((f28-2 (-> s5-7 y)) + (v1-146 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-147 (the-as number (logior #x3f800000 v1-146)))) + (set! (-> s5-7 y) (+ f28-2 (* (+ -1.0 (the-as float v1-147)) f30-2)))) + (let ((a1-42 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-42 from) self) + (set! (-> a1-42 num-params) 1) + (set! (-> a1-42 message) 'trans) + (set! (-> a1-42 param 0) (the-as uint s5-7)) + (let ((t9-41 send-event-function) + (a0-91 (handle->process (-> gp-2 actor-handle)))) + (t9-41 a0-91 a1-42))))) + (suspend)) + (let ((f28-3 0.0)) + (until (= f28-3 20480.0) + (let ((gp-3 (-> self prize (-> self challenge)))) + (spawn (-> gp-3 sucked-up-part) (-> gp-3 sucked-up-far-part-pos)) + (spawn (-> gp-3 blown-out-part) (-> gp-3 blown-out-jar-part-pos)) + (set! f28-3 (seek f28-3 20480.0 (* 81920.0 (seconds-per-frame)))) + (let ((s5-8 (new 'stack-no-clear 'vector))) + (set! (-> s5-8 quad) (-> gp-3 far-pos quad)) + (let* ((f26-1 (-> s5-8 y)) + (v1-169 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-170 (the-as number (logior #x3f800000 v1-169)))) + (set! (-> s5-8 y) (+ f26-1 (+ (* (+ -1.0 (the-as float v1-170)) f30-2) f28-3)))) + (let ((a1-46 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-46 from) self) + (set! (-> a1-46 num-params) 1) + (set! (-> a1-46 message) 'trans) + (set! (-> a1-46 param 0) (the-as uint s5-8)) + (let ((t9-46 send-event-function) + (a0-104 (handle->process (-> gp-3 actor-handle)))) + (t9-46 a0-104 a1-46))))) + (suspend)))) + (sunken-pipegame-method-22 self #f) + (set! (-> self abort-audio-if-beaten?) #f) + (let ((v1-184 (-> self prize (-> self challenge))) + (a0-109 (new 'stack-no-clear 'vector))) + (set! (-> a0-109 quad) (-> v1-184 jar-pos quad)) + (+! (-> a0-109 y) 40960.0) + (send-event (handle->process (-> v1-184 actor-handle)) 'trans a0-109)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (-> self prize (-> self challenge) pipe-travel-time-to-jar)) + (let ((gp-4 (-> self prize (-> self challenge)))) + (spawn (-> gp-4 sucked-up-part) (-> gp-4 sucked-up-far-part-pos)) + (spawn (-> gp-4 blown-out-part) (-> gp-4 blown-out-jar-part-pos))) + (suspend)) + (let ((f30-3 20480.0)) + (until (= f30-3 0.0) + (set! f30-3 (seek f30-3 0.0 (* 40960.0 (seconds-per-frame)))) + (let ((v1-203 (new 'stack-no-clear 'vector))) + (set! (-> v1-203 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) + (+! (-> v1-203 y) f30-3) + (let ((a1-57 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-57 from) self) + (set! (-> a1-57 num-params) 1) + (set! (-> a1-57 message) 'trans) + (set! (-> a1-57 param 0) (the-as uint v1-203)) + (let ((t9-52 send-event-function) + (a0-128 (handle->process (-> self prize (-> self challenge) actor-handle)))) + (t9-52 a0-128 a1-57)))) + (suspend))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1.5)) + (suspend)) + (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) + (go sunken-pipegame-end-play))) (defstate sunken-pipegame-beat-challenge (sunken-pipegame) - :code (behavior () - (logior! (-> self challenges-mask) (ash 1 (-> self challenge))) - (if (-> self abort-audio-if-beaten?) - (kill-current-level-hint '(camera) '() 'exit) - ) - (go sunken-pipegame-end-play) - ) - ) + :code + (behavior () + (logior! (-> self challenges-mask) (ash 1 (-> self challenge))) + (if (-> self abort-audio-if-beaten?) (kill-current-level-hint '(camera) '() 'exit)) + (go sunken-pipegame-end-play))) (defstate sunken-pipegame-end-play (sunken-pipegame) - :code (behavior () - (local-vars (v1-3 symbol)) - (sunken-pipegame-method-21 self #t) - (set! (-> self abort-audio-if-beaten?) #f) - (until v1-3 - (suspend) - (set! v1-3 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) - ) - (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) - (logior! (-> self challenges-mask) (ash 1 (-> self challenge))) - ) - (set! (-> self challenge) -1) - (dotimes (gp-0 3) - (let ((v1-18 (-> self button gp-0))) - (if (not (logtest? (ash 1 gp-0) (-> self challenges-mask))) - (send-event (ppointer->process v1-18) 'untrigger) - ) - ) - ) - (go sunken-pipegame-idle) - ) - ) + :code + (behavior () + (local-vars (v1-3 symbol)) + (sunken-pipegame-method-21 self #t) + (set! (-> self abort-audio-if-beaten?) #f) + (until v1-3 + (suspend) + (set! v1-3 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed)))))) + (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) + (logior! (-> self challenges-mask) (ash 1 (-> self challenge)))) + (set! (-> self challenge) -1) + (dotimes (gp-0 3) + (let ((v1-18 (-> self button gp-0))) + (if (not (logtest? (ash 1 gp-0) (-> self challenges-mask))) (send-event (ppointer->process v1-18) 'untrigger)))) + (go sunken-pipegame-idle))) (defmethod sunken-pipegame-method-22 ((this sunken-pipegame) (arg0 symbol)) (let* ((v1-0 (-> this challenge)) - (a2-0 v1-0) - ) + (a2-0 v1-0)) (cond ((zero? a2-0) (let ((v1-5 (handle->process (-> this prize v1-0 actor-handle)))) (when v1-5 (if arg0 - (restore-collide-with-as (-> (the-as collectable v1-5) root)) - (clear-collide-with-as (-> (the-as collectable v1-5) root)) - ) - ) - ) - ) + (restore-collide-with-as (-> (the-as collectable v1-5) root)) + (clear-collide-with-as (-> (the-as collectable v1-5) root)))))) ((or (= a2-0 1) (= a2-0 2)) (let ((v1-13 (handle->process (-> this prize v1-0 actor-handle)))) (when v1-13 (if arg0 - (restore-collide-with-as (-> (the-as collectable v1-13) root)) - (clear-collide-with-as (-> (the-as collectable v1-13) root)) - ) - ) - ) - ) - ) - ) - (none) - ) + (restore-collide-with-as (-> (the-as collectable v1-13) root)) + (clear-collide-with-as (-> (the-as collectable v1-13) root)))))))) + (none)) (defmethod sunken-pipegame-method-21 ((this sunken-pipegame) (arg0 symbol)) - (if arg0 - (logior! (-> this mask) (process-mask actor-pause)) - (logclear! (-> this mask) (process-mask actor-pause)) - ) + (if arg0 (logior! (-> this mask) (process-mask actor-pause)) (logclear! (-> this mask) (process-mask actor-pause))) (let ((v1-4 (-> this child))) (while v1-4 - (if arg0 - (logior! (-> v1-4 0 mask) (process-mask actor-pause)) - (logclear! (-> v1-4 0 mask) (process-mask actor-pause)) - ) - (set! v1-4 (-> v1-4 0 brother)) - ) - ) - #f - ) + (if arg0 (logior! (-> v1-4 0 mask) (process-mask actor-pause)) (logclear! (-> v1-4 0 mask) (process-mask actor-pause))) + (set! v1-4 (-> v1-4 0 brother)))) + #f) (defmethod deactivate ((this sunken-pipegame)) (dotimes (s5-0 3) (let ((s4-0 (-> this prize s5-0))) - (if (nonzero? (-> s4-0 sucked-up-part)) - (kill-and-free-particles (-> s4-0 sucked-up-part)) - ) - (if (nonzero? (-> s4-0 blown-out-part)) - (kill-and-free-particles (-> s4-0 blown-out-part)) - ) - ) - ) + (if (nonzero? (-> s4-0 sucked-up-part)) (kill-and-free-particles (-> s4-0 sucked-up-part))) + (if (nonzero? (-> s4-0 blown-out-part)) (kill-and-free-particles (-> s4-0 blown-out-part))))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this sunken-pipegame) (arg0 int)) (dotimes (v1-0 3) (let ((a0-4 (-> this prize v1-0))) (when (nonzero? (-> a0-4 sucked-up-part)) - (if (nonzero? (-> a0-4 sucked-up-part)) - (&+! (-> a0-4 sucked-up-part) arg0) - ) - ) + (if (nonzero? (-> a0-4 sucked-up-part)) (&+! (-> a0-4 sucked-up-part) arg0))) (when (nonzero? (-> a0-4 blown-out-part)) - (if (nonzero? (-> a0-4 blown-out-part)) - (&+! (-> a0-4 blown-out-part) arg0) - ) - ) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> a0-4 blown-out-part)) (&+! (-> a0-4 blown-out-part) arg0))))) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this sunken-pipegame) (arg0 entity-actor)) (set! (-> this abort-audio-if-beaten?) #f) (stack-size-set! (-> this main-thread) 512) (set! (-> this challenge) -1) (dotimes (v1-3 3) - (set! (-> this prize v1-3 actor-handle) (the-as handle #f)) - ) + (set! (-> this prize v1-3 actor-handle) (the-as handle #f))) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> this challenges-mask) (sunken-pipegame-method-20 this)) (let ((s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'quaternion)) - ) + (s3-0 (new 'stack-no-clear 'quaternion))) (quaternion-identity! s3-0) (dotimes (s2-0 3) (let* ((s0-0 (-> this prize s2-0)) (v1-17 (ash 1 s2-0)) - (s1-1 (logtest? v1-17 (-> this challenges-mask))) - ) + (s1-1 (logtest? v1-17 (-> this challenges-mask)))) (eval-path-curve-div! (-> this path) (-> s0-0 jar-pos) (the float (* s2-0 2)) 'interp) (eval-path-curve-div! (-> this path) (-> s0-0 far-pos) (the float (+ (* s2-0 2) 1)) 'interp) (set! (-> s0-0 sucked-up-jar-part-pos quad) (-> s0-0 jar-pos quad)) @@ -952,17 +765,9 @@ (+! (-> s0-0 far-pos y) 11673.6) (when (not s1-1) (set! (-> s0-0 actor-handle) - (ppointer->handle - (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type fuel-cell) 45.0 #f this (the-as fact-info #f)) - ) - ) + (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type fuel-cell) 45.0 #f this (the-as fact-info #f)))) (let ((a1-10 (handle->process (-> s0-0 actor-handle)))) - (if a1-10 - (clear-collide-with-as (-> (the-as collectable a1-10) root)) - ) - ) - ) - ) + (if a1-10 (clear-collide-with-as (-> (the-as collectable a1-10) root)))))) ((= v1-30 1) (set! (-> s0-0 puzzle-delay) (seconds 15)) (set! (-> s0-0 pipe-travel-time-to-far) (seconds 5.5)) @@ -975,18 +780,11 @@ (+! (-> s0-0 blown-out-far-part-pos y) 4096.0) (when (not s1-1) (set! (-> s0-0 actor-handle) - (ppointer->handle - (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 49.0 #f this (the-as fact-info #f)) - ) - ) + (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 49.0 #f this (the-as fact-info #f)))) (let ((s0-1 (handle->process (-> s0-0 actor-handle)))) (when s0-1 (send-event s0-1 'movie-pos 1) - (clear-collide-with-as (-> (the-as collectable s0-1) root)) - ) - ) - ) - ) + (clear-collide-with-as (-> (the-as collectable s0-1) root)))))) ((= v1-30 2) (set! (-> s0-0 puzzle-delay) (seconds 15)) (set! (-> s0-0 pipe-travel-time-to-far) (seconds 4.5)) @@ -999,28 +797,14 @@ (+! (-> s0-0 blown-out-far-part-pos y) 4096.0) (when (not s1-1) (set! (-> s0-0 actor-handle) - (ppointer->handle - (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 65585.0 #f this (the-as fact-info #f)) - ) - ) + (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 65585.0 #f this (the-as fact-info #f)))) (let ((s0-2 (handle->process (-> s0-0 actor-handle)))) (when s0-2 (send-event s0-2 'movie-pos 2) - (clear-collide-with-as (-> (the-as collectable s0-2) root)) - ) - ) - ) - ) - ) - ) + (clear-collide-with-as (-> (the-as collectable s0-2) root)))))))) (vector+! s4-0 s4-0 (-> this root trans)) (let ((v1-102 (process-spawn sunken-pipegame-button s4-0 s3-0 arg0 s1-1 :to this))) (set! (-> this button s2-0) (the-as (pointer sunken-pipegame-button) v1-102)) - (set! (-> (the-as (pointer sunken-pipegame-button) v1-102) 0 button-id) s2-0) - ) - ) - ) - ) + (set! (-> (the-as (pointer sunken-pipegame-button) v1-102) 0 button-id) s2-0))))) (go sunken-pipegame-start-up) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/sunken-water.gc b/goal_src/jak1/levels/sunken/sunken-water.gc index 1c8cfc129e..a20fe9138a 100644 --- a/goal_src/jak1/levels/sunken/sunken-water.gc +++ b/goal_src/jak1/levels/sunken/sunken-water.gc @@ -1,188 +1,131 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/water-anim.gc") (require "engine/util/sync-info.gc") (require "engine/gfx/mood/time-of-day.gc") -;; name: sunken-water.gc -;; name in dgo: sunken-water -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (deftype sunken-water (water-anim) - ((use-sync? symbol) - (playing-deadly-sound? symbol) - (deadly-time float) - (deadly-fade float) - (sync sync-info :inline) - (safe-color-mult vector :inline) - (safe-color-emissive vector :inline) - (deadly-color-mult vector :inline) - (deadly-color-emissive vector :inline) - ) + ((use-sync? symbol) + (playing-deadly-sound? symbol) + (deadly-time float) + (deadly-fade float) + (sync sync-info :inline) + (safe-color-mult vector :inline) + (safe-color-emissive vector :inline) + (deadly-color-mult vector :inline) + (deadly-color-emissive vector :inline)) (:methods - (draw-ripple (_type_) symbol) - ) - ) - + (draw-ripple (_type_) symbol))) -(define ripple-for-sunken-water (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-sunken-water + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) (defpartgroup group-sunken-water-deadly-water :id 446 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1736 :fade-after (meters 50))) - ) + :parts ((sp-item 1736 :fade-after (meters 50)))) (defpart 1736 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 1) (meters 4)) - (:scale-y (meters 0.25)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 96.0 32.0) - (:scalevel-x (meters 0.1875)) - (:scalevel-y (meters -0.001875)) - (:fade-a -3.2) - (:timer (seconds 0.27)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2022) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 1) (meters 4)) + (:scale-y (meters 0.25)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 96.0 32.0) + (:scalevel-x (meters 0.1875)) + (:scalevel-y (meters -0.001875)) + (:fade-a -3.2) + (:timer (seconds 0.27)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2022))) (defpart 2022 - :init-specs ((:r 255.0) (:g 128.0 128.0) (:b 0.0) (:fade-a -1.28)) - ) + :init-specs ((:r 255.0) (:g 128.0 128.0) (:b 0.0) (:fade-a -1.28))) (defmethod draw-ripple ((this sunken-water)) (set! (-> this draw ripple send-query) #t) (let ((gp-0 (-> this draw ripple query))) - (let ((a0-1 (current-time))) - (set! (-> gp-0 start-vertex) (logand (* 13 (logand a0-1 127)) 127)) - ) + (let ((a0-1 (current-time))) (set! (-> gp-0 start-vertex) (logand (* 13 (logand a0-1 127)) 127))) (set! (-> gp-0 vertex-skip) 128) (dotimes (s5-0 (-> gp-0 vertex-count)) - (launch-particles (-> *part-id-table* 1736) (-> gp-0 data s5-0)) - ) - ) - #f - ) + (launch-particles (-> *part-id-table* 1736) (-> gp-0 data s5-0)))) + #f) (defstate water-vol-idle (sunken-water) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (if (= (-> block param 0) 'attack) - (sound-play "get-shocked") - ) - ) - (else - ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block) - ) - ) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans))) - (if t9-0 - (t9-0) - ) - ) - (cond - ((-> self use-sync?) - (cond - ((< (get-current-phase (-> self sync)) (-> self deadly-time)) - (when (!= (-> self deadly-fade) 1.0) - (seek! (-> self deadly-fade) 1.0 (* 8.0 (seconds-per-frame))) - (let ((f30-0 (-> self deadly-fade))) - (vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-0) - (vector-lerp! - (-> self draw color-emissive) - (-> self safe-color-emissive) - (-> self deadly-color-emissive) - f30-0 - ) - (set! (-> self draw color-mult w) 0.5) - (if (= f30-0 1.0) - (logior! (-> self flags) (water-flags wt19)) - ) - ) - ) - (draw-ripple self) - (when (not (-> self playing-deadly-sound?)) - (set! (-> self playing-deadly-sound?) #t) - (sound-play "water-on") - ) - (update! (-> self sound)) - ) - (else - (logclear! (-> self flags) (water-flags wt19)) - (when (!= (-> self deadly-fade) 0.0) - (seek! (-> self deadly-fade) 0.0 (* 8.0 (seconds-per-frame))) - (let ((f30-1 (-> self deadly-fade))) - (vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-1) - (vector-lerp! - (-> self draw color-emissive) - (-> self safe-color-emissive) - (-> self deadly-color-emissive) - f30-1 - ) - (set! (-> self draw color-mult w) 0.5) - (if (= f30-1 0.0) - (logclear! (-> self flags) (water-flags wt19)) - ) - ) - ) - (when (-> self playing-deadly-sound?) - (set! (-> self playing-deadly-sound?) #f) - (stop! (-> self sound)) - (sound-play "water-off") - ) - ) - ) - (set-fade! - *palette-fade-controls* - 3 - (-> self deadly-fade) - (vector-vector-distance (-> self root trans) (camera-pos)) - (the-as vector #f) - ) - ) - (else - (when (logtest? (water-flags wt19) (-> self flags)) - (draw-ripple self) - (update! (-> self sound)) - (set! (-> self playing-deadly-sound?) #t) - ) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (if (= (-> block param 0) 'attack) (sound-play "get-shocked"))) + (else ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block)))) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans))) (if t9-0 (t9-0))) + (cond + ((-> self use-sync?) + (cond + ((< (get-current-phase (-> self sync)) (-> self deadly-time)) + (when (!= (-> self deadly-fade) 1.0) + (seek! (-> self deadly-fade) 1.0 (* 8.0 (seconds-per-frame))) + (let ((f30-0 (-> self deadly-fade))) + (vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-0) + (vector-lerp! (-> self draw color-emissive) (-> self safe-color-emissive) (-> self deadly-color-emissive) f30-0) + (set! (-> self draw color-mult w) 0.5) + (if (= f30-0 1.0) (logior! (-> self flags) (water-flags wt19))))) + (draw-ripple self) + (when (not (-> self playing-deadly-sound?)) + (set! (-> self playing-deadly-sound?) #t) + (sound-play "water-on")) + (update! (-> self sound))) + (else + (logclear! (-> self flags) (water-flags wt19)) + (when (!= (-> self deadly-fade) 0.0) + (seek! (-> self deadly-fade) 0.0 (* 8.0 (seconds-per-frame))) + (let ((f30-1 (-> self deadly-fade))) + (vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-1) + (vector-lerp! (-> self draw color-emissive) (-> self safe-color-emissive) (-> self deadly-color-emissive) f30-1) + (set! (-> self draw color-mult w) 0.5) + (if (= f30-1 0.0) (logclear! (-> self flags) (water-flags wt19))))) + (when (-> self playing-deadly-sound?) + (set! (-> self playing-deadly-sound?) #f) + (stop! (-> self sound)) + (sound-play "water-off")))) + (set-fade! *palette-fade-controls* + 3 + (-> self deadly-fade) + (vector-vector-distance (-> self root trans) (camera-pos)) + (the-as vector #f))) + (else + (when (logtest? (water-flags wt19) (-> self flags)) + (draw-ripple self) + (update! (-> self sound)) + (set! (-> self playing-deadly-sound?) #t))))) + :post ja-post) (defmethod water-vol-method-25 ((this sunken-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-25))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-25))) (t9-0 this)) (set! (-> this playing-deadly-sound?) #f) (set-vector! (-> this safe-color-mult) 0.125 0.225 0.22 0.5) (set-vector! (-> this safe-color-emissive) 0.0 0.0 0.0 1.0) @@ -191,63 +134,39 @@ (let ((s5-0 (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15))) (let ((f0-16 (res-lump-float (-> this entity) 'percent :default -1.0))) (if (or (< f0-16 0.0) (< 1.0 f0-16)) - (set! f0-16 (cond - (s5-0 - 0.5 - ) - ((logtest? (water-flags wt19) (-> this flags)) - 1.0 - ) - (else - 0.0 - ) - ) - ) - ) + (set! f0-16 + (cond + (s5-0 0.5) + ((logtest? (water-flags wt19) (-> this flags)) 1.0) + (else 0.0)))) (when (and s5-0 (or (= f0-16 0.0) (= f0-16 1.0))) (set! s5-0 #f) - (if (= f0-16 0.0) - (logior! (-> this flags) (water-flags wt19)) - (logclear! (-> this flags) (water-flags wt19)) - ) - ) + (if (= f0-16 0.0) (logior! (-> this flags) (water-flags wt19)) (logclear! (-> this flags) (water-flags wt19)))) (set! (-> this use-sync?) s5-0) - (set! (-> this deadly-time) f0-16) - ) + (set! (-> this deadly-time) f0-16)) (when s5-0 (if (< (get-current-phase (-> this sync)) (-> this deadly-time)) - (set! (-> this flags) (the-as water-flags (logior (water-flags wt19) (-> this flags)))) - (set! (-> this flags) (the-as water-flags (logclear (-> this flags) (water-flags wt19)))) - ) - ) - ) - (none) - ) + (set! (-> this flags) (the-as water-flags (logior (water-flags wt19) (-> this flags)))) + (set! (-> this flags) (the-as water-flags (logclear (-> this flags) (water-flags wt19))))))) + (none)) (defmethod water-vol-method-22 ((this sunken-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (set! (-> this play-ambient-sound?) #f) (cond ((logtest? (water-flags wt19) (-> this flags)) (set! (-> this draw color-mult quad) (-> this deadly-color-mult quad)) (set! (-> this draw color-emissive quad) (-> this deadly-color-emissive quad)) - (set! (-> this deadly-fade) 1.0) - ) + (set! (-> this deadly-fade) 1.0)) (else - (set! (-> this draw color-mult quad) (-> this safe-color-mult quad)) - (set! (-> this draw color-emissive quad) (-> this safe-color-emissive quad)) - (set! (-> this deadly-fade) 0.0) - ) - ) + (set! (-> this draw color-mult quad) (-> this safe-color-mult quad)) + (set! (-> this draw color-emissive quad) (-> this safe-color-emissive quad)) + (set! (-> this deadly-fade) 0.0))) (let ((s5-0 (new 'process 'ripple-control))) (set! (-> this draw ripple) s5-0) (set! (-> s5-0 global-scale) 3072.0) (set! (-> s5-0 close-fade-dist) 163840.0) (set! (-> s5-0 far-fade-dist) 245760.0) (set! (-> s5-0 waveform) ripple-for-sunken-water) - (set! (-> s5-0 query) (new 'process 'ripple-merc-query 100)) - ) - (none) - ) + (set! (-> s5-0 query) (new 'process 'ripple-merc-query 100))) + (none)) diff --git a/goal_src/jak1/levels/sunken/target-tube.gc b/goal_src/jak1/levels/sunken/target-tube.gc index 6700c544a9..acfa7c8a20 100644 --- a/goal_src/jak1/levels/sunken/target-tube.gc +++ b/goal_src/jak1/levels/sunken/target-tube.gc @@ -1,197 +1,171 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/target/target-death.gc") (require "engine/anim/aligner.gc") (require "engine/geometry/path.gc") - -;; name: target-tube.gc -;; name in dgo: target-tube -;; dgos: L1, SUN, SUNKEN - (define-extern *tube-surface* surface) ;; unknown type - ;; DECOMP BEGINS -(define *tube-mods* (new 'static 'surface - :name 'tube - :turnv 21845.334 - :turnvv 524288.0 - :tiltv 5461.3335 - :tiltvv 131072.0 - :transv-max 1.0 - :target-speed 32768.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) +(define *tube-mods* + (new 'static + 'surface + :name 'tube + :turnv 21845.334 + :turnvv 524288.0 + :tiltv 5461.3335 + :tiltvv 131072.0 + :transv-max 1.0 + :target-speed 32768.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0)) -(define *tube-jump-mods* (new 'static 'surface - :name 'tube - :turnv 21845.334 - :turnvv 262144.0 - :tiltv 5461.3335 - :tiltvv 131072.0 - :transv-max 1.0 - :seek0 0.8 - :seek90 0.7 - :seek180 0.8 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags jump) - ) - ) +(define *tube-jump-mods* + (new 'static + 'surface + :name 'tube + :turnv 21845.334 + :turnvv 262144.0 + :tiltv 5461.3335 + :tiltvv 131072.0 + :transv-max 1.0 + :seek0 0.8 + :seek90 0.7 + :seek180 0.8 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags jump))) -(define *tube-hit-mods* (new 'static 'surface - :name 'tube - :turnv 21845.334 - :turnvv 262144.0 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 1.0 - :target-speed 40960.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - ) - ) +(define *tube-hit-mods* + (new 'static + 'surface + :name 'tube + :turnv 21845.334 + :turnvv 262144.0 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 1.0 + :target-speed 40960.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air)) -(let ((v1-3 (new 'static 'surface - :name '*tube-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 94208.0 - :target-speed 1.0 - :seek0 32768.0 - :seek90 94208.0 - :seek180 8192.0 - :fric 0.98 - :nonlin-fric-dist 4091904.0 - :slip-factor 0.7 - :slope-down-factor 81920.0 - :slope-slip-angle 16384.0 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :flags (surface-flags no-turn-around always-rotate-toward-transv) - ) - ) - ) +(let ((v1-3 (new 'static + 'surface + :name '*tube-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 94208.0 + :target-speed 1.0 + :seek0 32768.0 + :seek90 94208.0 + :seek180 8192.0 + :fric 0.98 + :nonlin-fric-dist 4091904.0 + :slip-factor 0.7 + :slope-down-factor 81920.0 + :slope-slip-angle 16384.0 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags (surface-flags no-turn-around always-rotate-toward-transv)))) (set! *tube-surface* v1-3) (set! (-> v1-3 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-3 touch-hook) nothing) - (set! (-> v1-3 active-hook) nothing) - ) + (set! (-> v1-3 active-hook) nothing)) (deftype tube-info (basic) - ((entity basic) - (tube handle) - (downhill vector :inline) - (centertube vector :inline) - (downtube vector :inline) - (sidetube vector :inline) - (foretube vector :inline) - (old-transv vector :inline) - (mod-x float) - (mod-y float) - (start-time time-frame) - (turn-anim-targ float) - (turn-anim-frame float) - (turn-anim-vel float) - (tube-sound-id sound-id) - (tube-sound-vol float) - ) - ) - - -(deftype tube-bank (basic) - () - ) + ((entity basic) + (tube handle) + (downhill vector :inline) + (centertube vector :inline) + (downtube vector :inline) + (sidetube vector :inline) + (foretube vector :inline) + (old-transv vector :inline) + (mod-x float) + (mod-y float) + (start-time time-frame) + (turn-anim-targ float) + (turn-anim-frame float) + (turn-anim-vel float) + (tube-sound-id sound-id) + (tube-sound-vol float))) +(deftype tube-bank (basic) ()) (define *TUBE-bank* (new 'static 'tube-bank)) (defbehavior tube-sounds target () - (seek! - (-> self tube tube-sound-vol) - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - 100.0 - 0.0 - ) - (* 200.0 (seconds-per-frame)) - ) + (seek! (-> self tube tube-sound-vol) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) 100.0 0.0) + (* 200.0 (seconds-per-frame))) (let ((f30-0 (-> self tube tube-sound-vol)) - (f0-5 (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 122880.0)) - ) - (sound-play - "slide-loop" - :id (-> self tube tube-sound-id) - :vol f30-0 - :pitch f0-5 - :position (the-as symbol (-> self control trans)) - ) - ) - ) + (f0-5 (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 122880.0))) + (sound-play "slide-loop" + :id (-> self tube tube-sound-id) + :vol + f30-0 + :pitch + f0-5 + :position + (the-as symbol (-> self control trans))))) (defbehavior tube-thrust target ((arg0 float) (arg1 float)) (let ((s4-1 (vector-! (new 'stack-no-clear 'vector) (-> self tube foretube) (-> self control trans)))) (vector-flatten! s4-1 s4-1 (-> self tube downtube)) (vector-flatten! s4-1 s4-1 (-> self control local-normal)) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - s4-1 - (meters 0.00024414062) - (new 'static 'rgba :g #xff :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + s4-1 + (meters 0.00024414062) + (new 'static 'rgba :g #xff :a #x80)) (vector-matrix*! s4-1 s4-1 (-> self control unknown-matrix00)) (vector-float*! s4-1 s4-1 2.0) (if (< (-> self control unknown-surface01 target-speed) (vector-length s4-1)) - (vector-normalize! s4-1 (-> self control unknown-surface01 target-speed)) - ) + (vector-normalize! s4-1 (-> self control unknown-surface01 target-speed))) (vector-v++! (-> self control unknown-vector00) s4-1) (when (logtest? (-> self control status) (cshape-moving-flags twall)) (let ((s3-0 (-> self tube old-transv))) @@ -199,137 +173,90 @@ (vector-reflect! s4-1 s3-0 (-> self control unknown-vector71)) (let ((f30-1 (vector-dot (-> self tube sidetube) (-> self tube old-transv))) (s2-0 (new-stack-vector0)) - (f28-0 (vector-dot (-> self tube sidetube) s4-1)) - ) + (f28-0 (vector-dot (-> self tube sidetube) s4-1))) 0.0 (vector-! s2-0 s4-1 (vector-float*! s2-0 (-> self tube sidetube) f28-0)) (let* ((f0-8 (vector-length s2-0)) - (f1-0 f0-8) - ) + (f1-0 f0-8)) (cond - ((< 0.0 f30-1) - (if (< f28-0 (- f30-1)) - (set! f28-0 (- f30-1)) - ) - ) - ((< f30-1 0.0) - (if (< (- f30-1) f28-0) - (set! f28-0 (- f30-1)) - ) - ) - ) - (vector+! s4-1 (vector-float*! s4-1 (-> self tube sidetube) f28-0) (vector-float*! s2-0 s2-0 (/ f0-8 f1-0))) - ) - ) + ((< 0.0 f30-1) (if (< f28-0 (- f30-1)) (set! f28-0 (- f30-1)))) + ((< f30-1 0.0) (if (< (- f30-1) f28-0) (set! f28-0 (- f30-1))))) + (vector+! s4-1 (vector-float*! s4-1 (-> self tube sidetube) f28-0) (vector-float*! s2-0 s2-0 (/ f0-8 f1-0))))) (vector-flatten! s4-1 s4-1 (-> self control local-normal)) (let ((s2-1 (new-stack-vector0))) (let ((f0-11 (vector-dot (-> self tube downtube) s4-1))) 0.0 - (vector-! s2-1 s4-1 (vector-float*! s2-1 (-> self tube downtube) f0-11)) - ) + (vector-! s2-1 s4-1 (vector-float*! s2-1 (-> self tube downtube) f0-11))) (let* ((f0-12 (vector-length s2-1)) (f1-2 f0-12) - (f2-5 (fmax (-> self control unknown-float01) (vector-dot s3-0 (-> self tube downtube)))) - ) - (vector+! s4-1 (vector-float*! s4-1 (-> self tube downtube) f2-5) (vector-float*! s2-1 s2-1 (/ f0-12 f1-2))) - ) - ) - ) + (f2-5 (fmax (-> self control unknown-float01) (vector-dot s3-0 (-> self tube downtube))))) + (vector+! s4-1 (vector-float*! s4-1 (-> self tube downtube) f2-5) (vector-float*! s2-1 s2-1 (/ f0-12 f1-2)))))) (vector-matrix*! s4-1 s4-1 (-> self control unknown-matrix00)) (let ((f0-14 (-> self control unknown-vector00 y))) (set! (-> self control unknown-vector00 quad) (-> s4-1 quad)) - (set! (-> self control unknown-vector00 y) f0-14) - ) - ) - ) + (set! (-> self control unknown-vector00 y) f0-14)))) (let ((s4-2 (new 'stack-no-clear 'vector))) (set! (-> s4-2 quad) (-> self tube downtube quad)) (let ((s3-1 (new 'stack-no-clear 'vector))) (set! (-> s3-1 quad) (-> self tube sidetube quad)) (vector-flatten! s3-1 s3-1 (-> self control local-normal)) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - s3-1 - (meters 2) - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + s3-1 + (meters 2) + (new 'static 'rgba :r #xff :g #xff :a #x80)) (vector-matrix*! s3-1 s3-1 (-> self control unknown-matrix00)) (vector-normalize! s3-1 (* arg0 (-> self control unknown-surface01 seek90))) - (vector-v++! (-> self control unknown-vector00) s3-1) - ) + (vector-v++! (-> self control unknown-vector00) s3-1)) (vector-flatten! s4-2 s4-2 (-> self control local-normal)) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - s4-2 - (meters 2) - (new 'static 'rgba :r #xff :g #x80 :b #x40 :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + s4-2 + (meters 2) + (new 'static 'rgba :r #xff :g #x80 :b #x40 :a #x80)) (vector-matrix*! s4-2 s4-2 (-> self control unknown-matrix00)) - (vector-normalize! - s4-2 - (* (-> self control unknown-surface01 slope-down-factor) (fmax 0.2 (-> self control surface-angle))) - ) - (vector-v++! (-> self control unknown-vector00) s4-2) - ) + (vector-normalize! s4-2 + (* (-> self control unknown-surface01 slope-down-factor) (fmax 0.2 (-> self control surface-angle)))) + (vector-v++! (-> self control unknown-vector00) s4-2)) (let* ((f1-6 (-> self control unknown-surface01 fric)) (f1-9 (- 1.0 (* 60.0 (seconds-per-frame) (- 1.0 f1-6)))) - (f0-21 (* 0.5 (+ 1.0 f1-9))) - ) + (f0-21 (* 0.5 (+ 1.0 f1-9)))) (set! (-> self control unknown-vector00 x) (* (-> self control unknown-vector00 x) f0-21)) - (set! (-> self control unknown-vector00 z) (* (-> self control unknown-vector00 z) f0-21)) - ) - (let ((f30-2 - (- (-> self control unknown-surface01 transv-max) (if (< arg1 0.0) - (* arg1 (-> self control unknown-surface01 seek0)) - (* arg1 (-> self control unknown-surface01 seek180)) - ) - ) - ) - ) + (set! (-> self control unknown-vector00 z) (* (-> self control unknown-vector00 z) f0-21))) + (let ((f30-2 (- (-> self control unknown-surface01 transv-max) + (if (< arg1 0.0) (* arg1 (-> self control unknown-surface01 seek0)) (* arg1 (-> self control unknown-surface01 seek180)))))) (if (>= (vector-xz-length (-> self control unknown-vector00)) f30-2) - (vector-xz-normalize! (-> self control unknown-vector00) f30-2) - ) - ) + (vector-xz-normalize! (-> self control unknown-vector00) f30-2))) (let ((gp-1 (new-stack-vector0))) (vector-matrix*! gp-1 (-> self control unknown-vector00) (-> self control unknown-matrix01)) (vector-float*! gp-1 gp-1 0.5) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - gp-1 - (meters 0.00024414062) - (new 'static 'rgba :g #xff :b #xff :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + gp-1 + (meters 0.00024414062) + (new 'static 'rgba :g #xff :b #xff :a #x80)) (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - gp-1 - 819.2 - "ltransv" - (new 'static 'rgba :g #xff :b #xff :a #x80) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + gp-1 + 819.2 + "ltransv" + (new 'static 'rgba :g #xff :b #xff :a #x80)) (vector-matrix*! gp-1 (new 'static 'vector :z 40960.0 :w 1.0) (-> 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-no-zbuf) - gp-1 - 819.2 - "nose" - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + gp-1 + 819.2 + "nose" + (new 'static 'rgba :r #xff :g #xff :a #x80))) (tube-sounds) 0 - (none) - ) + (none)) (defbehavior target-tube-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -340,203 +267,130 @@ (flag-setup) (build-conversions (-> self control transv)) (if (logtest? (-> self state-flags) (state-flags timed-invulnerable)) - (set! (-> self control unknown-surface01 turnv) (* 3.0 (-> self control unknown-surface01 turnv))) - ) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) - (-> self control local-normal) - ) + (set! (-> self control unknown-surface01 turnv) (* 3.0 (-> self control unknown-surface01 turnv)))) + (forward-up-nopitch->quaternion (-> self control dir-targ) + (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) + (-> self control local-normal)) (do-rotations1) - (send-event - (handle->process (-> self tube tube)) - 'update - (-> self tube centertube) - (-> self tube downtube) - (-> self tube sidetube) - (-> self tube foretube) - ) - (vector-flatten! - (-> self tube downhill) - (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) - (-> self control local-normal) - ) + (send-event (handle->process (-> self tube tube)) + 'update + (-> self tube centertube) + (-> self tube downtube) + (-> self tube sidetube) + (-> self tube foretube)) + (vector-flatten! (-> self tube downhill) + (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) + (-> self control local-normal)) (vector-normalize! (-> self tube downhill) 1.0) (set! (-> self control unknown-float12) 1.0) (let ((f30-0 (analog-input (the-as int (-> self control unknown-cpad-info00 leftx)) 128.0 32.0 110.0 1.0))) (set! (-> self tube mod-x) f30-0) (let ((f0-5 (analog-input (the-as int (-> self control unknown-cpad-info00 lefty)) 128.0 32.0 110.0 1.0))) (set! (-> self tube mod-y) f0-5) - (tube-thrust f30-0 f0-5) - ) - ) + (tube-thrust f30-0 f0-5))) (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) - ) - ) + (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) - (fill-cache-integrate-and-collide! - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) + (fill-cache-integrate-and-collide! (-> self control) (-> self control transv) (-> self control root-prim collide-with)) (if (logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) - (find-edge-grabs! *target* *collide-cache*) - ) + (find-edge-grabs! *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) - ) - ) + (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! (-> self control surf) *tube-surface*) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (set! (-> self control surf) *tube-surface*)) + (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) - (none) - ) + (none)) (defstate target-tube-start (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - 'tube - ) - (else - (case message - (('end-mode) - (go - target-jump - (-> *TARGET-bank* tube-jump-height-min) - (-> *TARGET-bank* tube-jump-height-max) - (the-as surface #f) - ) - ) - (('touched) - (send-event proc 'attack (-> block param 0) 'tube 0 0) - #f - ) - (('attack 'attack-or-shove 'attack-invinc) - (target-attacked - 'attack-or-shove - (the-as attack-info (-> block param 1)) - proc - (the-as touching-shapes-entry (-> block param 0)) - target-tube-hit - ) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - ) - ) - :exit (behavior () - (when (not (or (= (-> self next-state name) 'target-tube) - (= (-> self next-state name) 'target-tube-jump) - (= (-> self next-state name) 'target-tube-hit) - ) - ) - (let ((v1-7 (-> self manipy))) - (when v1-7 - (deactivate (-> v1-7 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (logclear! (-> self control root-prim prim-core action) (collide-action tube)) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (target-collide-set! 'normal 0.0) - (set! (-> self control reaction) target-collision-reaction) - (send-event *camera* 'clear-slave-option #x6000) - (sound-stop (-> self tube tube-sound-id)) - (set! (-> self tube tube-sound-id) (new 'static 'sound-id)) - (send-event (handle->process (-> self tube tube)) 'end-mode) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) 'tube) + (else + (case message + (('end-mode) + (go target-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max) (the-as surface #f))) + (('touched) (send-event proc 'attack (-> block param 0) 'tube 0 0) #f) + (('attack 'attack-or-shove 'attack-invinc) + (target-attacked 'attack-or-shove + (the-as attack-info (-> block param 1)) + proc + (the-as touching-shapes-entry (-> block param 0)) + target-tube-hit)) + (else (target-generic-event-handler proc argc message block)))))) + :exit + (behavior () + (when (not (or (= (-> self next-state name) 'target-tube) + (= (-> self next-state name) 'target-tube-jump) + (= (-> self next-state name) 'target-tube-hit))) + (let ((v1-7 (-> self manipy))) + (when v1-7 + (deactivate (-> v1-7 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)))) + (logclear! (-> self control root-prim prim-core action) (collide-action tube)) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (target-collide-set! 'normal 0.0) + (set! (-> self control reaction) target-collision-reaction) + (send-event *camera* 'clear-slave-option #x6000) + (sound-stop (-> self tube tube-sound-id)) + (set! (-> self tube tube-sound-id) (new 'static 'sound-id)) + (send-event (handle->process (-> self tube tube)) 'end-mode) + (target-exit))) + :code + (behavior ((arg0 handle)) + (send-event *camera* 'set-slave-option #x6000) (target-exit) - ) - ) - :code (behavior ((arg0 handle)) - (send-event *camera* 'set-slave-option #x6000) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (set! (-> self control surf) *tube-surface*) - (if (zero? (-> self tube)) - (set! (-> self tube) (new 'process 'tube-info)) - ) - (set! (-> self tube tube) arg0) - (set! (-> self tube entity) #f) - (let ((a0-4 (handle->process arg0))) - (if a0-4 - (set! (-> self tube entity) (-> a0-4 entity)) - ) - ) - (set-time! (-> self tube start-time)) - (set! (-> self tube tube-sound-id) (new-sound-id)) - (set! (-> self tube tube-sound-vol) 0.0) - (target-collide-set! 'tube 0.0) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) (collide-action tube)) - (remove-exit) - (cond - ((< (the-as - float - (send-event - (handle->process (-> self tube tube)) - 'update - (-> self tube centertube) - (-> self tube downtube) - (-> self tube sidetube) - (-> self tube foretube) - ) - ) - 0.5 - ) - (vector-normalize-copy! (-> self control transv) (-> self tube downtube) 40960.0) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control transv) 1.0) - (-> self control dynam gravity-normal) - ) - (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max)) - ) - (else - (go target-tube) - ) - ) - ) - :post target-post - ) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (set! (-> self control surf) *tube-surface*) + (if (zero? (-> self tube)) (set! (-> self tube) (new 'process 'tube-info))) + (set! (-> self tube tube) arg0) + (set! (-> self tube entity) #f) + (let ((a0-4 (handle->process arg0))) (if a0-4 (set! (-> self tube entity) (-> a0-4 entity)))) + (set-time! (-> self tube start-time)) + (set! (-> self tube tube-sound-id) (new-sound-id)) + (set! (-> self tube tube-sound-vol) 0.0) + (target-collide-set! 'tube 0.0) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (logior! (-> self control root-prim prim-core action) (collide-action tube)) + (remove-exit) + (cond + ((< (the-as float + (send-event (handle->process (-> self tube tube)) + 'update + (-> self tube centertube) + (-> self tube downtube) + (-> self tube sidetube) + (-> self tube foretube))) + 0.5) + (vector-normalize-copy! (-> self control transv) (-> self tube downtube) 40960.0) + (forward-up-nopitch->quaternion (-> self control dir-targ) + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control transv) 1.0) + (-> self control dynam gravity-normal)) + (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max))) + (else (go target-tube)))) + :post target-post) (defbehavior target-tube-turn-anim target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -545,318 +399,238 @@ (set! (-> self control unknown-int40) s5-0) (set! (-> self tube turn-anim-targ) (fmax -20.0 (fmin 20.0 (-> self tube turn-anim-targ)))) (or (not (>= (* (-> self tube turn-anim-targ) (-> self tube turn-anim-frame)) 0.0)) - (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) - ) + (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ)))) (+! (-> self tube turn-anim-vel) (* (- (-> self tube turn-anim-targ) (-> self tube turn-anim-frame)) - (lerp-scale - 20.0 - (if (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) - 30.0 - 60.0 - ) - (-> self control unknown-float01) - 0.0 - 36864.0 - ) - (seconds-per-frame) - ) - ) + (lerp-scale 20.0 + (if (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) 30.0 60.0) + (-> self control unknown-float01) + 0.0 + 36864.0) + (seconds-per-frame))) (set! (-> self tube turn-anim-vel) - (fmax - -100.0 - (fmin - 100.0 - (* (-> self tube turn-anim-vel) (lerp-scale 0.96 0.9 (-> self control unknown-float01) 0.0 36864.0)) - ) - ) - ) + (fmax -100.0 + (fmin 100.0 (* (-> self tube turn-anim-vel) (lerp-scale 0.96 0.9 (-> self control unknown-float01) 0.0 36864.0))))) (+! (-> self tube turn-anim-frame) (* (-> self tube turn-anim-vel) (seconds-per-frame))) (set! (-> self tube turn-anim-frame) (fmax -20.0 (fmin 20.0 (-> self tube turn-anim-frame)))) (cond ((and (>= (-> self tube turn-anim-frame) 20.0) (>= (-> self tube turn-anim-vel) 0.0)) - (set! (-> self tube turn-anim-vel) 0.0) - ) + (set! (-> self tube turn-anim-vel) 0.0)) ((and (>= -20.0 (-> self tube turn-anim-frame)) (>= 0.0 (-> self tube turn-anim-vel))) - (set! (-> self tube turn-anim-vel) 0.0) - ) - ) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (set! (-> self tube turn-anim-vel) 0.0)))) + (set-time-ratios *display* (the float gp-0))) (ja :group! eichar-tube-turn-ja :num! (identity (ja-aframe (-> self tube turn-anim-frame) 0))) 0 - (none) - ) + (none)) (defstate target-tube (target) - :event (-> target-tube-start event) - :enter (behavior () - (set! (-> self control unknown-surface00) *tube-mods*) - (set! (-> self control surf) *tube-surface*) - ) - :exit (-> target-tube-start exit) - :trans (behavior () - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max)) - ) - ) - :code (behavior () - (case (ja-group) - ((eichar-duck-high-jump-ja eichar-jump-loop-ja) - (ja-channel-push! 1 (seconds 0.04)) - (ja-no-eval :group! eichar-tube-jump-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self tube turn-anim-frame) 0.0) - ) - (else - (ja-channel-push! 1 (seconds 0.04)) - ) - ) - (loop - (set! (-> self tube turn-anim-targ) (* 20.0 (-> self tube mod-x))) - (target-tube-turn-anim) - (suspend) - ) - ) - :post (behavior () - (target-tube-post) - ) - ) + :event + (-> target-tube-start + event) + :enter + (behavior () + (set! (-> self control unknown-surface00) *tube-mods*) + (set! (-> self control surf) *tube-surface*)) + :exit + (-> target-tube-start + exit) + :trans + (behavior () + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max)))) + :code + (behavior () + (case (ja-group) + ((eichar-duck-high-jump-ja eichar-jump-loop-ja) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! eichar-tube-jump-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self tube turn-anim-frame) 0.0)) + (else (ja-channel-push! 1 (seconds 0.04)))) + (loop + (set! (-> self tube turn-anim-targ) (* 20.0 (-> self tube mod-x))) + (target-tube-turn-anim) + (suspend))) + :post + (behavior () + (target-tube-post))) (defstate target-tube-jump (target) - :event (-> target-tube-start event) - :enter (behavior ((arg0 float) (arg1 float)) - (set-time! (-> self state-time)) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *tube-jump-mods*) - ) - :exit (-> target-tube-start exit) - :trans (behavior () - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-tube) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - (seek! - (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.00012207031 (+ -2048.0 (-> self control unknown-float01))))) - (seconds-per-frame) - ) - ) - :code (behavior ((arg0 float) (arg1 float)) - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! eichar-duck-high-jump-ja :num! (identity (ja-aframe 16.0 0))) - (let ((f30-0 35.0) - (f28-0 1.0) - ) - (until (ja-done? 0) - (let* ((f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (f26-0 (- f30-0 (ja-aframe-num 0))) - (f0-8 (fmin (fmin 3.0 f26-0) (/ (* 5.0 f26-0) (the float (time-to-apex f24-0 -245760.0))))) - (a0-7 (-> self skel root-channel 0)) - ) - (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) - (let ((v1-17 (and (< 0.0 f24-0) (< 0.0 f26-0)))) - (set! (-> a0-7 param 1) (if v1-17 - f0-8 - f28-0 - ) - ) - ) - (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) - ) + :event + (-> target-tube-start + event) + :enter + (behavior ((arg0 float) (arg1 float)) + (set-time! (-> self state-time)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *tube-jump-mods*)) + :exit + (-> target-tube-start + exit) + :trans + (behavior () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-tube)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (seek! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.00012207031 (+ -2048.0 (-> self control unknown-float01))))) + (seconds-per-frame))) + :code + (behavior ((arg0 float) (arg1 float)) + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! eichar-duck-high-jump-ja :num! (identity (ja-aframe 16.0 0))) + (let ((f30-0 35.0) + (f28-0 1.0)) + (until (ja-done? 0) + (let* ((f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (f26-0 (- f30-0 (ja-aframe-num 0))) + (f0-8 (fmin (fmin 3.0 f26-0) (/ (* 5.0 f26-0) (the float (time-to-apex f24-0 -245760.0))))) + (a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) + (let ((v1-17 (and (< 0.0 f24-0) (< 0.0 f26-0)))) (set! (-> a0-7 param 1) (if v1-17 f0-8 f28-0))) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)) + (suspend))) + (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) + (loop (suspend) - ) - ) - (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) - (loop - (suspend) - (ja :group! eichar-jump-loop-ja :num! (loop!)) - ) - ) - :post (-> target-tube post) - ) + (ja :group! eichar-jump-loop-ja :num! (loop!)))) + :post + (-> target-tube + post)) (defstate target-tube-hit (target) - :event (-> target-tube-start event) - :enter (behavior ((arg0 symbol) (arg1 attack-info)) - (send-event - (handle->process (-> self tube tube)) - 'update - (-> self tube centertube) - (-> self tube downtube) - (-> self tube sidetube) - (-> self tube foretube) - ) - ) - :exit (behavior () - (if (!= (-> self next-state name) 'target-tube-death) - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - ) - (logclear! (-> self state-flags) (state-flags sf02 do-not-notice grabbed first-person-mode)) - ((-> target-tube-start exit)) - ) - :code (behavior ((arg0 symbol) (arg1 attack-info)) - (let ((gp-0 (-> self attack-info))) - (set-time! (-> self state-time)) - (logior! (-> self state-flags) (state-flags being-attacked)) - (set-time! (-> self game hit-time)) - (when (not (logtest? (-> arg1 mask) (attack-mask vector))) - (vector-! - (-> arg1 vector) - (vector+float*! (new 'stack-no-clear 'vector) (-> self tube foretube) (-> self tube downtube) 20480.0) - (-> self control trans) - ) - (let ((s3-2 (new-stack-vector0)) - (f30-0 (vector-dot (-> self control unknown-vector71) (-> arg1 vector))) - ) + :event + (-> target-tube-start + event) + :enter + (behavior ((arg0 symbol) (arg1 attack-info)) + (send-event (handle->process (-> self tube tube)) + 'update + (-> self tube centertube) + (-> self tube downtube) + (-> self tube sidetube) + (-> self tube foretube))) + :exit + (behavior () + (if (!= (-> self next-state name) 'target-tube-death) (logclear! (-> self state-flags) (state-flags being-attacked dying))) + (logclear! (-> self state-flags) (state-flags sf02 do-not-notice grabbed first-person-mode)) + ((-> target-tube-start exit))) + :code + (behavior ((arg0 symbol) (arg1 attack-info)) + (let ((gp-0 (-> self attack-info))) + (set-time! (-> self state-time)) + (logior! (-> self state-flags) (state-flags being-attacked)) + (set-time! (-> self game hit-time)) + (when (not (logtest? (-> arg1 mask) (attack-mask vector))) + (vector-! (-> arg1 vector) + (vector+float*! (new 'stack-no-clear 'vector) (-> self tube foretube) (-> self tube downtube) 20480.0) + (-> self control trans)) + (let ((s3-2 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control unknown-vector71) (-> arg1 vector)))) + 0.0 + (vector-! s3-2 (-> arg1 vector) (vector-float*! s3-2 (-> self control unknown-vector71) f30-0)) + (let* ((f0-3 (vector-length s3-2)) + (f1-0 f0-3)) + (if (< f30-0 0.0) (set! f30-0 (* 0.5 f30-0))) + (vector+! (-> arg1 vector) + (vector-float*! (-> arg1 vector) (-> self control unknown-vector71) f30-0) + (vector-float*! s3-2 s3-2 (/ f0-3 f1-0))))) + (logior! (-> arg1 mask) (attack-mask vector))) + (when (and (logtest? (-> arg1 mask) (attack-mask mode)) + (= (-> arg1 mode) 'darkeco) + (not (logtest? (-> arg1 mask) (attack-mask shove-up)))) + (set! (-> arg1 shove-up) 12288.0) + (logior! (-> arg1 mask) (attack-mask shove-up))) + (let ((v1-30 gp-0)) + (set! (-> v1-30 attacker) (the-as handle #f)) + (set! (-> v1-30 mode) 'generic) + (set! (-> v1-30 shove-back) 6144.0) + (set! (-> v1-30 shove-up) 12288.0) + (set! (-> v1-30 angle) #f) + (set! (-> v1-30 trans quad) (-> self control trans quad)) + (set! (-> v1-30 control) 0.0) + (set! (-> v1-30 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout))) + (combine! gp-0 arg1) + (when (= arg0 'attack) + (pickup-collectable! (-> self fact) (pickup-type eco-green) (- (-> *FACT-bank* health-single-inc)) (the-as handle #f)) + (target-hit-effect gp-0)) + (set! (-> self control unknown-surface00) *smack-mods*) + (target-hit-setup-anim gp-0) + (target-hit-move gp-0 (target-hit-orient gp-0 (-> gp-0 vector)) target-falling-anim-trans 1.0) + (let ((s5-2 (new-stack-vector0)) + (f30-1 (vector-dot (-> self tube downtube) (-> self control transv)))) 0.0 - (vector-! s3-2 (-> arg1 vector) (vector-float*! s3-2 (-> self control unknown-vector71) f30-0)) - (let* ((f0-3 (vector-length s3-2)) - (f1-0 f0-3) - ) - (if (< f30-0 0.0) - (set! f30-0 (* 0.5 f30-0)) - ) - (vector+! - (-> arg1 vector) - (vector-float*! (-> arg1 vector) (-> self control unknown-vector71) f30-0) - (vector-float*! s3-2 s3-2 (/ f0-3 f1-0)) - ) - ) - ) - (logior! (-> arg1 mask) (attack-mask vector)) - ) - (when (and (logtest? (-> arg1 mask) (attack-mask mode)) - (= (-> arg1 mode) 'darkeco) - (not (logtest? (-> arg1 mask) (attack-mask shove-up))) - ) - (set! (-> arg1 shove-up) 12288.0) - (logior! (-> arg1 mask) (attack-mask shove-up)) - ) - (let ((v1-30 gp-0)) - (set! (-> v1-30 attacker) (the-as handle #f)) - (set! (-> v1-30 mode) 'generic) - (set! (-> v1-30 shove-back) 6144.0) - (set! (-> v1-30 shove-up) 12288.0) - (set! (-> v1-30 angle) #f) - (set! (-> v1-30 trans quad) (-> self control trans quad)) - (set! (-> v1-30 control) 0.0) - (set! (-> v1-30 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout)) - ) - (combine! gp-0 arg1) - (when (= arg0 'attack) - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - (target-hit-effect gp-0) - ) - (set! (-> self control unknown-surface00) *smack-mods*) - (target-hit-setup-anim gp-0) - (target-hit-move gp-0 (target-hit-orient gp-0 (-> gp-0 vector)) target-falling-anim-trans 1.0) - (let ((s5-2 (new-stack-vector0)) - (f30-1 (vector-dot (-> self tube downtube) (-> self control transv))) - ) - 0.0 - (vector-! s5-2 (-> self control transv) (vector-float*! s5-2 (-> self tube downtube) f30-1)) - (let ((f0-14 (vector-length s5-2)) - (f2-2 (fmax 40960.0 f30-1)) - (f1-2 0.0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self tube downtube) f2-2) - (vector-float*! s5-2 s5-2 (/ f1-2 f0-14)) - ) - ) - ) - (let ((s5-3 forward-up-nopitch->quaternion) - (s4-2 (-> self control dir-targ)) - (t9-9 vector-normalize!) - (a0-35 (new-stack-vector0)) - ) - (set! (-> a0-35 quad) (-> self control transv quad)) - (s5-3 s4-2 (t9-9 a0-35 1.0) (vector-y-quaternion! (new-stack-vector0) (-> self control dir-targ))) - ) - (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) - (go target-tube-death (-> gp-0 mode)) - ) - ) - (go target-tube) - ) - :post target-post - ) + (vector-! s5-2 (-> self control transv) (vector-float*! s5-2 (-> self tube downtube) f30-1)) + (let ((f0-14 (vector-length s5-2)) + (f2-2 (fmax 40960.0 f30-1)) + (f1-2 0.0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self tube downtube) f2-2) + (vector-float*! s5-2 s5-2 (/ f1-2 f0-14))))) + (let ((s5-3 forward-up-nopitch->quaternion) + (s4-2 (-> self control dir-targ)) + (t9-9 vector-normalize!) + (a0-35 (new-stack-vector0))) + (set! (-> a0-35 quad) (-> self control transv quad)) + (s5-3 s4-2 (t9-9 a0-35 1.0) (vector-y-quaternion! (new-stack-vector0) (-> self control dir-targ)))) + (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) (go target-tube-death (-> gp-0 mode)))) + (go target-tube)) + :post target-post) (defstate target-tube-death (target) - :event (-> target-death event) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - (target-exit) - (remove-setting! 'process-mask) - (apply-settings *setting-control*) - ((-> target-tube-start exit)) - ) - :code (behavior ((arg0 symbol)) - (local-vars (v1-40 symbol)) - (set! (-> self neck flex-blend) 0.0) - (target-timed-invulnerable-off self) - (add-setting! 'process-mask 'set 0.0 (process-mask enemy platform projectile death)) - (apply-settings *setting-control*) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-surface00) *neutral-mods*) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! eichar-deatha-ja :num! (seek! (ja-aframe 134.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (when (not (logtest? (-> self align flags) (align-flags disabled))) - (vector-matrix*! gp-2 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) - (vector-float*! (-> self control transv) gp-2 (-> *display* frames-per-second)) - ) - ) - (suspend) - (ja :num! (seek! (ja-aframe 134.0 0))) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) - (set-time! (-> self state-time)) - (until v1-40 - (suspend) - (set! v1-40 (and (time-elapsed? (-> self state-time) (seconds 1)) (not (movie?)))) - ) - (go target-tube) - ) - :post target-no-stick-post - ) + :event + (-> target-death + event) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags being-attacked dying)) + (target-exit) + (remove-setting! 'process-mask) + (apply-settings *setting-control*) + ((-> target-tube-start exit))) + :code + (behavior ((arg0 symbol)) + (local-vars (v1-40 symbol)) + (set! (-> self neck flex-blend) 0.0) + (target-timed-invulnerable-off self) + (add-setting! 'process-mask 'set 0.0 (process-mask enemy platform projectile death)) + (apply-settings *setting-control*) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-surface00) *neutral-mods*) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! eichar-deatha-ja :num! (seek! (ja-aframe 134.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (when (not (logtest? (-> self align flags) (align-flags disabled))) + (vector-matrix*! gp-2 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) + (vector-float*! (-> self control transv) gp-2 (-> *display* frames-per-second)))) + (suspend) + (ja :num! (seek! (ja-aframe 134.0 0)))) + (set! (-> self control transv quad) (the-as uint128 0)) + (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) + (set-time! (-> self state-time)) + (until v1-40 + (suspend) + (set! v1-40 (and (time-elapsed? (-> self state-time) (seconds 1)) (not (movie?))))) + (go target-tube)) + :post target-no-stick-post) (deftype slide-control (process-drawable) - ((target handle) - (pos float) - (trans vector :inline) - (rot vector :inline) - (side vector :inline) - ) + ((target handle) + (pos float) + (trans vector :inline) + (rot vector :inline) + (side vector :inline)) (:state-methods - slide-control-watch - slide-control-ride - ) - ) - + slide-control-watch + slide-control-ride)) (defun distance-from-tangent ((arg0 path-control) (arg1 float) (arg2 vector) (arg3 vector) (arg4 vector) (arg5 vector)) (eval-path-curve-div! arg0 arg2 arg1 'interp) @@ -867,15 +641,9 @@ (vector-rotate-y! arg4 arg3 -16384.0) (set! (-> arg4 y) 0.0) (let* ((a2-5 (vector+! (new 'stack-no-clear 'vector) arg2 arg4)) - (f0-3 (vector-line-distance-point! arg5 arg2 a2-5 s2-1)) - ) - (if (< 0.0 (vector-dot arg3 (vector-! (new 'stack-no-clear 'vector) arg5 s2-1))) - (set! f0-3 (- f0-3)) - ) - f0-3 - ) - ) - ) + (f0-3 (vector-line-distance-point! arg5 arg2 a2-5 s2-1))) + (if (< 0.0 (vector-dot arg3 (vector-! (new 'stack-no-clear 'vector) arg5 s2-1))) (set! f0-3 (- f0-3))) + f0-3))) (defbehavior find-target-point slide-control ((arg0 vector)) (local-vars (f0-2 float)) @@ -883,105 +651,70 @@ (s5-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'vector)) (f28-0 (+ -0.1 (-> self pos))) - (f26-0 (distance-from-tangent (-> self path) f28-0 s4-0 s5-0 gp-0 arg0)) - ) + (f26-0 (distance-from-tangent (-> self path) f28-0 s4-0 s5-0 gp-0 arg0))) 0.0 (let ((f30-0 f28-0)) (until (or (and (< f26-0 f0-2) (>= f0-2 0.0)) (< (the float (+ (-> self path curve num-cverts) -1)) f28-0)) (set! f0-2 (distance-from-tangent (-> self path) f28-0 s4-0 s5-0 gp-0 arg0)) (when (or (>= f26-0 f0-2) (< f26-0 0.0)) (set! f26-0 f0-2) - (set! f30-0 f28-0) - ) - (set! f28-0 (+ 0.01 f28-0)) - ) + (set! f30-0 f28-0)) + (set! f28-0 (+ 0.01 f28-0))) (distance-from-tangent (-> self path) f30-0 s4-0 s5-0 gp-0 arg0) (set! (-> self trans quad) (-> s4-0 quad)) (set! (-> self rot quad) (-> s5-0 quad)) (set! (-> self side quad) (-> gp-0 quad)) - (set! (-> self pos) f30-0) - ) - ) - (-> self pos) - ) + (set! (-> self pos) f30-0))) + (-> self pos)) (defstate slide-control-watch (slide-control) :virtual #t - :enter (behavior () - (eval-path-curve-div! (-> self path) (-> self trans) 0.2 'interp) - (eval-path-curve-div! (-> self path) (-> self root trans) 0.2 'interp) - (path-control-method-12 (-> self path) (-> self rot) 0.2) - (set! (-> self pos) 0.2) - ) - :trans (behavior () - (if (and (and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and (< 0.0 (vector-dot - (vector-! (new 'stack-no-clear 'vector) (-> *target* control trans) (-> self trans)) - (-> self rot) - ) - ) - (send-event *target* 'change-mode 'tube self) - ) - ) - (go-virtual slide-control-ride) - ) - ) - :code anim-loop - ) + :enter + (behavior () + (eval-path-curve-div! (-> self path) (-> self trans) 0.2 'interp) + (eval-path-curve-div! (-> self path) (-> self root trans) 0.2 'interp) + (path-control-method-12 (-> self path) (-> self rot) 0.2) + (set! (-> self pos) 0.2)) + :trans + (behavior () + (if (and (and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (< 0.0 (vector-dot (vector-! (new 'stack-no-clear 'vector) (-> *target* control trans) (-> self trans)) (-> self rot))) + (send-event *target* 'change-mode 'tube self))) + (go-virtual slide-control-ride))) + :code anim-loop) (defstate slide-control-ride (slide-control) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('end-mode) - (go-virtual slide-control-watch) - ) - (('update) - (let* ((s4-0 proc) - (gp-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) - (if gp-0 - (find-target-point (-> (the-as process-drawable gp-0) root trans)) - ) - (set! (-> (the-as vector (-> block param 0)) quad) (-> self trans quad)) - (set! (-> (the-as vector (-> block param 1)) quad) (-> self rot quad)) - (set! (-> (the-as vector (-> block param 2)) quad) (-> self side quad)) - (eval-path-curve-div! (-> self path) (the-as vector (-> block param 3)) (+ 0.2 (-> self pos)) 'interp) - (if (>= (-> self pos) (+ -0.2 (the float (+ (-> self path curve num-cverts) -1)))) - (send-event gp-0 'end-mode) - ) - ) - (-> self pos) - ) - ) - ) - :enter (behavior () - (set! (-> self pos) 0.0) - (set! (-> self target) (process->handle *target*)) - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - :exit (behavior () - (set! (-> self target) (the-as handle #f)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - :trans (behavior () - (let ((gp-0 (handle->process (-> self target)))) - (cond - ((if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - (else - (go-virtual slide-control-watch) - ) - ) - ) - ) - :code anim-loop - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('end-mode) (go-virtual slide-control-watch)) + (('update) + (let* ((s4-0 proc) + (gp-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) + (if gp-0 (find-target-point (-> (the-as process-drawable gp-0) root trans))) + (set! (-> (the-as vector (-> block param 0)) quad) (-> self trans quad)) + (set! (-> (the-as vector (-> block param 1)) quad) (-> self rot quad)) + (set! (-> (the-as vector (-> block param 2)) quad) (-> self side quad)) + (eval-path-curve-div! (-> self path) (the-as vector (-> block param 3)) (+ 0.2 (-> self pos)) 'interp) + (if (>= (-> self pos) (+ -0.2 (the float (+ (-> self path curve num-cverts) -1)))) (send-event gp-0 'end-mode))) + (-> self pos)))) + :enter + (behavior () + (set! (-> self pos) 0.0) + (set! (-> self target) (process->handle *target*)) + (process-entity-status! self (entity-perm-status bit-3) #t)) + :exit + (behavior () + (set! (-> self target) (the-as handle #f)) + (process-entity-status! self (entity-perm-status bit-3) #f)) + :trans + (behavior () + (let ((gp-0 (handle->process (-> self target)))) + (cond + ((if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0)) + (else (go-virtual slide-control-watch))))) + :code anim-loop) (defmethod init-from-entity! ((this slide-control) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -991,5 +724,4 @@ (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> this target) (the-as handle #f)) (go (method-of-object this slide-control-watch)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/wall-plat.gc b/goal_src/jak1/levels/sunken/wall-plat.gc index 5c4de5f3cd..a1457dbddc 100644 --- a/goal_src/jak1/levels/sunken/wall-plat.gc +++ b/goal_src/jak1/levels/sunken/wall-plat.gc @@ -1,189 +1,131 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") - -;; name: wall-plat.gc -;; name in dgo: wall-plat -;; dgos: L1, SUN, SUNKEN - (declare-type wall-plat process-drawable) ;; DECOMP BEGINS (deftype wall-plat (process-drawable) - ((root collide-shape-moving :override) - (use-sync? symbol) - (extended-amount float) - (in-trans vector :inline) - (out-trans vector :inline) - (sync sync-info-paused :inline) - ) + ((root collide-shape-moving :override) + (use-sync? symbol) + (extended-amount float) + (in-trans vector :inline) + (out-trans vector :inline) + (sync sync-info-paused :inline)) (:states - wall-plat-extended - wall-plat-extending - wall-plat-retracted - wall-plat-retracting - wall-plat-sync-idle - ) - ) + wall-plat-extended + wall-plat-extending + wall-plat-retracted + wall-plat-retracting + wall-plat-sync-idle)) - -(defskelgroup *wall-plat-sg* wall-plat wall-plat-lod0-jg -1 - ((wall-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 1 -2 0 6.5) - ) +(defskelgroup *wall-plat-sg* + wall-plat + wall-plat-lod0-jg + -1 + ((wall-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 1 -2 0 6.5)) (defstate wall-plat-retracted (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go wall-plat-extending) - ) - ) - ) - :code (behavior () - (set! (-> self extended-amount) 0.0) - (move-to-point! (-> self root) (-> self in-trans)) - (transform-post) - (clear-collide-with-as (-> self root)) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go wall-plat-extending)))) + :code + (behavior () + (set! (-> self extended-amount) 0.0) + (move-to-point! (-> self root) (-> self in-trans)) + (transform-post) + (clear-collide-with-as (-> self root)) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate wall-plat-extending (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :enter (behavior () - (sound-play "wall-plat") - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :enter + (behavior () + (sound-play "wall-plat")) :trans rider-trans - :code (behavior () - (restore-collide-with-as (-> self root)) - (set-time! (-> self state-time)) - (loop - (seek! (-> self extended-amount) 1.0 (* 2.5 (seconds-per-frame))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-lerp! gp-0 (-> self in-trans) (-> self out-trans) (-> self extended-amount)) - (move-to-point! (-> self root) gp-0) - ) - (suspend) - (if (= (-> self extended-amount) 1.0) - (go wall-plat-extended) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (restore-collide-with-as (-> self root)) + (set-time! (-> self state-time)) + (loop + (seek! (-> self extended-amount) 1.0 (* 2.5 (seconds-per-frame))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-lerp! gp-0 (-> self in-trans) (-> self out-trans) (-> self extended-amount)) + (move-to-point! (-> self root) gp-0)) + (suspend) + (if (= (-> self extended-amount) 1.0) (go wall-plat-extended)))) + :post rider-post) (defstate wall-plat-extended (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('untrigger) - (go wall-plat-retracting) - ) - ) - ) - :code (behavior () - (set! (-> self extended-amount) 1.0) - (move-to-point! (-> self root) (-> self out-trans)) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('untrigger) (go wall-plat-retracting)))) + :code + (behavior () + (set! (-> self extended-amount) 1.0) + (move-to-point! (-> self root) (-> self out-trans)) + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate wall-plat-retracting (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :enter (behavior () - (sound-play "wall-plat") - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :enter + (behavior () + (sound-play "wall-plat")) :trans rider-trans - :code (behavior () - (set-time! (-> self state-time)) - (loop - (seek! (-> self extended-amount) 0.0 (* 2.5 (seconds-per-frame))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-lerp! gp-0 (-> self in-trans) (-> self out-trans) (-> self extended-amount)) - (move-to-point! (-> self root) gp-0) - ) - (suspend) - (if (= (-> self extended-amount) 0.0) - (go wall-plat-retracted) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (set-time! (-> self state-time)) + (loop + (seek! (-> self extended-amount) 0.0 (* 2.5 (seconds-per-frame))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-lerp! gp-0 (-> self in-trans) (-> self out-trans) (-> self extended-amount)) + (move-to-point! (-> self root) gp-0)) + (suspend) + (if (= (-> self extended-amount) 0.0) (go wall-plat-retracted)))) + :post rider-post) (defstate wall-plat-sync-idle (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) :trans rider-trans - :code (behavior () - (let ((gp-0 #f)) - (loop - (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (vector-lerp! s5-0 (-> self in-trans) (-> self out-trans) f30-0) - (move-to-point! (-> self root) s5-0) - ) - (cond - ((= f30-0 0.0) - (set! gp-0 #f) - (clear-collide-with-as (-> self root)) - ) - ((= f30-0 1.0) - (set! gp-0 #f) - (restore-collide-with-as (-> self root)) - ) - (else - (when (not gp-0) - (sound-play "wall-plat") - (set! gp-0 #t) - ) - (restore-collide-with-as (-> self root)) - ) - ) - ) - (suspend) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (let ((gp-0 #f)) + (loop + (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (vector-lerp! s5-0 (-> self in-trans) (-> self out-trans) f30-0) + (move-to-point! (-> self root) s5-0)) + (cond + ((= f30-0 0.0) (set! gp-0 #f) (clear-collide-with-as (-> self root))) + ((= f30-0 1.0) (set! gp-0 #f) (restore-collide-with-as (-> self root))) + (else (when (not gp-0) (sound-play "wall-plat") (set! gp-0 #t)) (restore-collide-with-as (-> self root))))) + (suspend)))) + :post rider-post) (defmethod init-from-entity! ((this wall-plat) (arg0 entity-actor)) (set! (-> this extended-amount) 0.0) @@ -191,9 +133,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -202,45 +142,29 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 2) (set-vector! (-> s3-0 local-sphere) 0.0 -6144.0 -12288.0 19456.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *wall-plat-sg* '()) (logior! (-> this skel status) (janim-status inited)) (set! (-> this use-sync?) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.2 0.2)) (let ((f30-0 (quaternion-y-angle (-> this root quat))) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (set-vector! s4-1 0.0 0.0 (+ 1638.4 (res-lump-float arg0 'tunemeters)) 1.0) (vector-rotate-around-y! s4-1 s4-1 f30-0) (vector+! (-> this out-trans) (-> this root trans) s4-1) (set-vector! s4-1 0.0 0.0 20480.0 1.0) (vector-rotate-around-y! s4-1 s4-1 f30-0) - (vector+! (-> this in-trans) (-> this out-trans) s4-1) - ) + (vector+! (-> this in-trans) (-> this out-trans) s4-1)) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (cond - ((-> this use-sync?) - (logclear! (-> this mask) (process-mask actor-pause)) - (go wall-plat-sync-idle) - ) - (else - (go wall-plat-retracted) - ) - ) - (none) - ) + ((-> this use-sync?) (logclear! (-> this mask) (process-mask actor-pause)) (go wall-plat-sync-idle)) + (else (go wall-plat-retracted))) + (none)) diff --git a/goal_src/jak1/levels/sunken/wedge-plats.gc b/goal_src/jak1/levels/sunken/wedge-plats.gc index f7a91b1888..6640edb721 100644 --- a/goal_src/jak1/levels/sunken/wedge-plats.gc +++ b/goal_src/jak1/levels/sunken/wedge-plats.gc @@ -1,44 +1,32 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/baseplat.gc") - -;; name: wedge-plats.gc -;; name in dgo: wedge-plats -;; dgos: L1, SUN, SUNKEN - (declare-type wedge-plat-outer process) + (declare-type wedge-plat-master process) + (declare-type wedge-plat process) ;; DECOMP BEGINS (deftype wedge-plat-master (process) - ((center vector :inline) - (rotspeed float) - (rotate-inner float) - (rotate-outer float) - ) + ((center vector :inline) + (rotspeed float) + (rotate-inner float) + (rotate-outer float)) (:states - wedge-plat-master-idle - ) - ) - + wedge-plat-master-idle)) (defstate wedge-plat-master-idle (wedge-plat-master) - :code (behavior () - (loop - (set! (-> self rotate-inner) - (the float (sar (shl (the int (+ (-> self rotate-inner) (* (-> self rotspeed) (seconds-per-frame)))) 48) 48)) - ) - (set! (-> self rotate-outer) - (the float (sar (shl (the int (- (-> self rotate-outer) (* (-> self rotspeed) (seconds-per-frame)))) 48) 48)) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop + (set! (-> self rotate-inner) + (the float (sar (shl (the int (+ (-> self rotate-inner) (* (-> self rotspeed) (seconds-per-frame)))) 48) 48))) + (set! (-> self rotate-outer) + (the float (sar (shl (the int (- (-> self rotate-outer) (* (-> self rotspeed) (seconds-per-frame)))) 48) 48))) + (suspend)))) (defmethod init-from-entity! ((this wedge-plat-master) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -49,135 +37,92 @@ (set! (-> this rotate-outer) 0.0) (logclear! (-> this mask) (process-mask actor-pause)) (go wedge-plat-master-idle) - (none) - ) + (none)) (deftype wedge-plat (baseplat) - ((master wedge-plat-master) - (distance float) - (offset float) - ) + ((master wedge-plat-master) + (distance float) + (offset float)) (:methods - (wedge-plat-method-27 (_type_) symbol) - ) + (wedge-plat-method-27 (_type_) symbol)) (:states - wedge-plat-idle - wedge-plat-tip - ) - ) - + wedge-plat-idle + wedge-plat-tip)) -(defskelgroup *wedge-plat-sg* wedge-plat wedge-plat-lod0-jg wedge-plat-idle-ja - ((wedge-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 6) - ) +(defskelgroup *wedge-plat-sg* + wedge-plat + wedge-plat-lod0-jg + wedge-plat-idle-ja + ((wedge-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 6)) (defmethod wedge-plat-method-27 ((this wedge-plat)) (let* ((a0-1 (-> this master)) - (v1-0 (if a0-1 - (-> (the-as process-drawable (-> a0-1 ppointer)) brother) - ) - ) - ) + (v1-0 (if a0-1 (-> (the-as process-drawable (-> a0-1 ppointer)) brother)))) (when v1-0 (let ((s4-0 (&-> v1-0 27)) (f30-0 (-> this distance)) (f28-0 (the float (sar (shl (the int (+ (the-as float (-> v1-0 32)) (-> this offset))) 48) 48))) - (s5-0 #f) - ) - (quaternion-axis-angle! - (-> this root quat) - 0.0 - 1.0 - 0.0 - (the float (sar (shl (the int (- 49152.0 f28-0)) 48) 48)) - ) + (s5-0 #f)) + (quaternion-axis-angle! (-> this root quat) 0.0 1.0 0.0 (the float (sar (shl (the int (- 49152.0 f28-0)) 48) 48))) (set! (-> this basetrans x) (+ (the-as float (-> s4-0 0)) (* f30-0 (cos f28-0)))) (set! (-> this basetrans y) (the-as float (-> s4-0 1))) (set! (-> this basetrans z) (+ (the-as float (-> s4-0 2)) (* f30-0 (sin f28-0)))) - (let ((f0-16 (cos f28-0))) - (if (or (< 0.95 f0-16) (< f0-16 -0.95)) - (set! s5-0 #t) - ) - ) - s5-0 - ) - ) - ) - ) + (let ((f0-16 (cos f28-0))) (if (or (< 0.95 f0-16) (< f0-16 -0.95)) (set! s5-0 #t))) + s5-0)))) (defstate wedge-plat-idle (wedge-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)))) :trans plat-trans - :code (behavior () - (ja :num-func num-func-identity :frame-num (ja-aframe 0.0 0)) - (loop - (if (wedge-plat-method-27 self) - (go wedge-plat-tip) - ) - (suspend) - ) - ) - :post plat-post - ) + :code + (behavior () + (ja :num-func num-func-identity :frame-num (ja-aframe 0.0 0)) + (loop + (if (wedge-plat-method-27 self) (go wedge-plat-tip)) + (suspend))) + :post plat-post) (defstate wedge-plat-tip (wedge-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) :trans plat-trans - :code (behavior () - (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 0.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 60.0 0))) - ) - (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 100.0 0)) :frame-num (ja-aframe 60.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 100.0 0))) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (ja :num-func num-func-identity :frame-num (ja-aframe 100.0 0)) - (wedge-plat-method-27 self) - (suspend) - ) - (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 153.0 0)) :frame-num (ja-aframe 100.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 153.0 0))) - ) - (go wedge-plat-idle) - ) - :post plat-post - ) + :code + (behavior () + (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 0.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 60.0 0)))) + (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 100.0 0)) :frame-num (ja-aframe 60.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 100.0 0)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (ja :num-func num-func-identity :frame-num (ja-aframe 100.0 0)) + (wedge-plat-method-27 self) + (suspend)) + (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 153.0 0)) :frame-num (ja-aframe 100.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 153.0 0)))) + (go wedge-plat-idle)) + :post plat-post) (defmethod init-from-entity! ((this wedge-plat) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -186,12 +131,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *wedge-plat-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -202,128 +145,87 @@ (set! (-> this distance) (res-lump-float arg0 'distance :default 36864.0)) (logclear! (-> this mask) (process-mask actor-pause)) (go wedge-plat-idle) - (none) - ) + (none)) -(deftype wedge-plat-outer (wedge-plat) - () +(deftype wedge-plat-outer (wedge-plat) () (:states - wedge-plat-outer-idle - wedge-plat-outer-tip - ) - ) + wedge-plat-outer-idle + wedge-plat-outer-tip)) - -(defskelgroup *wedge-plat-outer-sg* wedge-plat-outer wedge-plat-outer-lod0-jg wedge-plat-outer-idle-ja - ((wedge-plat-outer-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *wedge-plat-outer-sg* + wedge-plat-outer + wedge-plat-outer-lod0-jg + wedge-plat-outer-idle-ja + ((wedge-plat-outer-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defmethod wedge-plat-method-27 ((this wedge-plat-outer)) (let* ((a0-1 (-> this master)) - (v1-0 (if a0-1 - (-> (the-as process-drawable (-> a0-1 ppointer)) brother) - ) - ) - ) + (v1-0 (if a0-1 (-> (the-as process-drawable (-> a0-1 ppointer)) brother)))) (when v1-0 (let ((s4-0 (&-> v1-0 27)) (f30-0 (-> this distance)) (f28-0 (the float (sar (shl (the int (+ (the-as float (-> v1-0 33)) (-> this offset))) 48) 48))) - (s5-0 #f) - ) - (quaternion-axis-angle! - (-> this root quat) - 0.0 - 1.0 - 0.0 - (the float (sar (shl (the int (- 49152.0 f28-0)) 48) 48)) - ) + (s5-0 #f)) + (quaternion-axis-angle! (-> this root quat) 0.0 1.0 0.0 (the float (sar (shl (the int (- 49152.0 f28-0)) 48) 48))) (set! (-> this basetrans x) (+ (the-as float (-> s4-0 0)) (* f30-0 (cos f28-0)))) (set! (-> this basetrans y) (the-as float (-> s4-0 1))) (set! (-> this basetrans z) (+ (the-as float (-> s4-0 2)) (* f30-0 (sin f28-0)))) - (let ((f0-16 (sin f28-0))) - (if (or (< 0.95 f0-16) (< f0-16 -0.95)) - (set! s5-0 #t) - ) - ) - s5-0 - ) - ) - ) - ) + (let ((f0-16 (sin f28-0))) (if (or (< 0.95 f0-16) (< f0-16 -0.95)) (set! s5-0 #t))) + s5-0)))) (defstate wedge-plat-outer-idle (wedge-plat-outer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)))) :trans plat-trans - :code (behavior () - (loop - (ja :num-func num-func-identity :frame-num (ja-aframe 0.0 0)) - (if (wedge-plat-method-27 self) - (go wedge-plat-outer-tip) - ) - (suspend) - ) - ) - :post plat-post - ) + :code + (behavior () + (loop + (ja :num-func num-func-identity :frame-num (ja-aframe 0.0 0)) + (if (wedge-plat-method-27 self) (go wedge-plat-outer-tip)) + (suspend))) + :post plat-post) (defstate wedge-plat-outer-tip (wedge-plat-outer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('touch) (send-event proc 'no-look-around (seconds 1.5))))) :trans plat-trans - :code (behavior () - (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 0.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 60.0 0))) - ) - (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 100.0 0)) :frame-num (ja-aframe 60.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 100.0 0))) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (ja :num-func num-func-identity :frame-num (ja-aframe 100.0 0)) - (wedge-plat-method-27 self) - (suspend) - ) - (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 153.0 0)) :frame-num (ja-aframe 100.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 153.0 0))) - ) - (go wedge-plat-outer-idle) - ) - :post plat-post - ) + :code + (behavior () + (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 0.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 60.0 0)))) + (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 100.0 0)) :frame-num (ja-aframe 60.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 100.0 0)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (ja :num-func num-func-identity :frame-num (ja-aframe 100.0 0)) + (wedge-plat-method-27 self) + (suspend)) + (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 153.0 0)) :frame-num (ja-aframe 100.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 153.0 0)))) + (go wedge-plat-outer-idle)) + :post plat-post) (defmethod init-from-entity! ((this wedge-plat-outer) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -332,12 +234,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 32768.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *wedge-plat-sg* '()) (logior! (-> this skel status) (janim-status inited)) @@ -348,5 +248,4 @@ (set! (-> this distance) (res-lump-float arg0 'distance :default 69632.0)) (logclear! (-> this mask) (process-mask actor-pause)) (go wedge-plat-outer-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/whirlpool.gc b/goal_src/jak1/levels/sunken/whirlpool.gc index 301f379deb..4bfc1bbad9 100644 --- a/goal_src/jak1/levels/sunken/whirlpool.gc +++ b/goal_src/jak1/levels/sunken/whirlpool.gc @@ -1,293 +1,279 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") -;; name: whirlpool.gc -;; name in dgo: whirlpool -;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (deftype whirlpool (process-drawable) - ((root collide-shape :override) - (spin-ry float) - (spin-speed-idle float) - (spin-speed-delta float) - (sync sync-info-paused :inline) - ) + ((root collide-shape :override) + (spin-ry float) + (spin-speed-idle float) + (spin-speed-delta float) + (sync sync-info-paused :inline)) (:methods - (whirlpool-method-20 (_type_ float) cshape-moving-flags) - ) + (whirlpool-method-20 (_type_ float) cshape-moving-flags)) (:states - whirlpool-idle - ) - ) - + whirlpool-idle)) -(defskelgroup *whirlpool-sg* whirlpool whirlpool-lod0-jg whirlpool-idle-ja - ((whirlpool-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0.6 0 3) - ) +(defskelgroup *whirlpool-sg* + whirlpool + whirlpool-lod0-jg + whirlpool-idle-ja + ((whirlpool-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0.6 0 3)) (defpartgroup group-whirlpool-swirl :id 447 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1739 :fade-after (meters 60) :falloff-to (meters 60) :binding 1737) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - ) - ) + :parts + ((sp-item 1739 :fade-after (meters 60) :falloff-to (meters 60) :binding 1737) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)))) (defpart 1739 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:y (meters 6.6)) - (:scale-x (meters 0.2)) - (:scale-y :copy scale-x) - (:g 0.0) - (:a 128.0) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1.7)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:y (meters 6.6)) + (:scale-x (meters 0.2)) + (:scale-y :copy scale-x) + (:g 0.0) + (:a 128.0) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1.7)) + (:flags (bit2 bit3)))) (defpart 1737 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 4) (meters 1)) - (:scale-x (meters 3.2)) - (:scale-y (meters 1)) - (:r 150.0) - (:g 150.0) - (:b 255.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters -0.01)) - (:scalevel-x (meters -0.004888889)) - (:fade-a 0.42666668) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1740) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 4) (meters 1)) + (:scale-x (meters 3.2)) + (:scale-y (meters 1)) + (:r 150.0) + (:g 150.0) + (:b 255.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters -0.01)) + (:scalevel-x (meters -0.004888889)) + (:fade-a 0.42666668) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1740))) (defpart 1740 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpart 1738 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 32.0) - (:fade-a -1.8285716) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 32.0) + (:fade-a -1.8285716) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)))) (defmethod whirlpool-method-20 ((this whirlpool) (arg0 float)) (let* ((gp-0 (target-pos 0)) - (f28-0 (vector-vector-xz-distance (-> this root trans) gp-0)) - ) + (f28-0 (vector-vector-xz-distance (-> this root trans) gp-0))) (when (< f28-0 40960.0) (let* ((f0-2 (* 0.000024414063 (- 40960.0 f28-0))) (f26-0 (* f0-2 f0-2)) @@ -295,8 +281,7 @@ (f30-0 (* 0.5 f26-0 arg0 (seconds-per-frame))) (f24-0 (+ f0-7 f30-0)) (f28-1 (- f28-0 (fmin f28-0 (* 0.16874999 f26-0 (fabs arg0) (seconds-per-frame))))) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (set-vector! s4-1 (* (sin f24-0) f28-1) 0.0 (* (cos f24-0) f28-1) 1.0) (vector+! s4-1 s4-1 (-> this root trans)) (set! (-> s4-1 x) (* (- (-> s4-1 x) (-> gp-0 x)) (-> *display* frames-per-second))) @@ -305,52 +290,30 @@ (let ((gp-1 (-> *target* control))) (send-event (-> gp-1 process) 'rotate-y-angle f30-0) (fill-cache-for-shape! gp-1 8192.0 (-> gp-1 root-prim collide-with)) - (let ((s3-0 (-> gp-1 status))) - (integrate-and-collide! gp-1 s4-1) - (set! (-> gp-1 status) s3-0) - s3-0 - ) - ) - ) - ) - ) - ) + (let ((s3-0 (-> gp-1 status))) (integrate-and-collide! gp-1 s4-1) (set! (-> gp-1 status) s3-0) s3-0)))))) (defstate whirlpool-idle (whirlpool) - :trans (behavior () - (let ((f30-0 - (+ (* (get-current-phase-with-mirror (-> self sync)) (-> self spin-speed-delta)) (-> self spin-speed-idle)) - ) - ) - (when (>= (fabs f30-0) 45511.11) - (let ((a1-0 (new 'stack-no-clear 'vector))) - (set! (-> a1-0 quad) (-> self root trans quad)) - (+! (-> a1-0 y) -8192.0) - (spawn (-> self part) a1-0) - ) - ) - (+! (-> self spin-ry) (* f30-0 (seconds-per-frame))) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self spin-ry)) - (if (and *target* (logtest? (-> *target* water flags) (water-flags wt09))) - (whirlpool-method-20 self f30-0) - ) - (update! (-> self sound)) - (let ((f0-9 (fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0))))))) - (update-vol! (-> self sound) (the int (* 100.0 f0-9))) - ) - ) - ) + :trans + (behavior () + (let ((f30-0 (+ (* (get-current-phase-with-mirror (-> self sync)) (-> self spin-speed-delta)) (-> self spin-speed-idle)))) + (when (>= (fabs f30-0) 45511.11) + (let ((a1-0 (new 'stack-no-clear 'vector))) + (set! (-> a1-0 quad) (-> self root trans quad)) + (+! (-> a1-0 y) -8192.0) + (spawn (-> self part) a1-0))) + (+! (-> self spin-ry) (* f30-0 (seconds-per-frame))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self spin-ry)) + (if (and *target* (logtest? (-> *target* water flags) (water-flags wt09))) (whirlpool-method-20 self f30-0)) + (update! (-> self sound)) + (let ((f0-9 (fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0))))))) + (update-vol! (-> self sound) (the int (* 100.0 f0-9)))))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod deactivate ((this whirlpool)) - (if (nonzero? (-> this sound)) - (stop! (-> this sound)) - ) + (if (nonzero? (-> this sound)) (stop! (-> this sound))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod init-from-entity! ((this whirlpool) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -362,43 +325,29 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8) - (set-root-prim! s4-0 s3-0) - ) + (set-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *whirlpool-sg* '()) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (let ((f30-0 32768.0) - (f28-0 145635.56) - ) + (f28-0 145635.56)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-17 (res-lump-data arg0 'speed (pointer float) :tag-ptr (& sv-16)))) (when v1-17 (set! f30-0 (-> v1-17 0)) - (set! f28-0 (-> v1-17 1)) - ) - ) + (set! f28-0 (-> v1-17 1)))) (set! (-> this spin-speed-idle) f30-0) - (set! (-> this spin-speed-delta) (- f28-0 f30-0)) - ) + (set! (-> this spin-speed-delta) (- f28-0 f30-0))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 447) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "whirlpool" :fo-max 55) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "whirlpool" :fo-max 55) (-> this root trans))) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (go whirlpool-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/swamp/billy.gc b/goal_src/jak1/levels/swamp/billy.gc index d6b95f6739..49db5ee9e7 100644 --- a/goal_src/jak1/levels/swamp/billy.gc +++ b/goal_src/jak1/levels/swamp/billy.gc @@ -1,100 +1,75 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "levels/swamp/swamp-rat.gc") - -;; name: billy.gc -;; name in dgo: billy -;; dgos: L1, SWA - (declare-type billy-snack process-drawable) ;; DECOMP BEGINS (deftype billy (process-taskable) - ((child-override (pointer billy-snack) :overlay-at child) - (farthy handle) - (path-data path-control 3) - (path-snacks path-control :overlay-at (-> path-data 0)) - (path-starts path-control :overlay-at (-> path-data 1)) - (path-waypts path-control :overlay-at (-> path-data 2)) - (passed-last-stage symbol) - (spawn-rats symbol) - (current-wave int32) - (wave-start-time time-frame) - (num-snacks int32) - (num-rats int32) - (max-rats int32) - (rat-speed float) - (offending-rat handle) - ) + ((child-override (pointer billy-snack) :overlay-at child) + (farthy handle) + (path-data path-control 3) + (path-snacks path-control :overlay-at (-> path-data 0)) + (path-starts path-control :overlay-at (-> path-data 1)) + (path-waypts path-control :overlay-at (-> path-data 2)) + (passed-last-stage symbol) + (spawn-rats symbol) + (current-wave int32) + (wave-start-time time-frame) + (num-snacks int32) + (num-rats int32) + (max-rats int32) + (rat-speed float) + (offending-rat handle)) (:states - billy-done - billy-playing - ) - ) - + billy-done + billy-playing)) (defmethod relocate ((this billy) (arg0 int)) (countdown (v1-0 3) - (if (nonzero? (-> this path-data v1-0)) - (&+! (-> this path-data v1-0) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this path-data v1-0)) (&+! (-> this path-data v1-0) arg0))) + (call-parent-method this arg0)) (deftype billy-snack (process-drawable) - ((num-rats int32) - ) + ((num-rats int32)) (:states - billy-snack-eat - billy-snack-idle - ) - ) + billy-snack-eat + billy-snack-idle)) - -(defskelgroup *farthy-snack-sg* farthy-snack farthy-snack-lod0-jg farthy-snack-idle-ja - ((farthy-snack-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *farthy-snack-sg* + farthy-snack + farthy-snack-lod0-jg + farthy-snack-idle-ja + ((farthy-snack-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defstate billy-snack-eat (billy-snack) - :code (behavior () - (ja :group! farthy-snack-eat-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (deactivate self) - (loop - (suspend) - ) - ) - :post ja-post - ) - -(defstate billy-snack-idle (billy-snack) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('eat) - (go billy-snack-eat) - ) - ) - ) - :code (behavior () - (loop + :code + (behavior () + (ja :group! farthy-snack-eat-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (deactivate self) + (loop + (suspend))) + :post ja-post) + +(defstate billy-snack-idle (billy-snack) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('eat) (go billy-snack-eat)))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defbehavior billy-snack-init-by-other billy-snack ((arg0 vector)) (set! (-> self root) (new 'process 'trsqv)) @@ -102,136 +77,106 @@ (initialize-skeleton self *farthy-snack-sg* '()) (set! (-> self num-rats) 0) (go billy-snack-idle) - (none) - ) + (none)) (deftype billy-rat (swamp-rat) - ((dest-type uint64) - (snack handle) - (destination vector :inline) - (billy (pointer billy)) - ) + ((dest-type uint64) + (snack handle) + (destination vector :inline) + (billy (pointer billy))) (:states - billy-rat-eat - billy-rat-salivate - ) - ) - + billy-rat-eat + billy-rat-salivate)) (defun rat-about-to-eat? ((arg0 billy-rat) (arg1 billy)) - (the-as symbol (and (= (-> arg0 dest-type) 2) (> (-> arg1 num-snacks) 0) (handle->process (-> arg0 snack)))) - ) + (the-as symbol (and (= (-> arg0 dest-type) 2) (> (-> arg1 num-snacks) 0) (handle->process (-> arg0 snack))))) (defstate nav-enemy-idle (billy-rat) :virtual #t - :enter (behavior () - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-common-post - ) + :enter + (behavior () + (go-virtual nav-enemy-chase)) + :post nav-enemy-common-post) (defstate nav-enemy-die (billy-rat) :virtual #t - :code (behavior () - (nav-enemy-fall-and-play-death-anim - (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) - 1.0 - 1.0 - 1000000000000000.0 - 600 - ) - (send-event (ppointer->process (-> self billy)) 'billy-rat-die) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (nav-enemy-fall-and-play-death-anim (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) + 1.0 + 1.0 + 1000000000000000.0 + 600) + (send-event (ppointer->process (-> self billy)) 'billy-rat-die) + (cleanup-for-death self))) (defstate billy-rat-eat (billy-rat) - :trans (behavior () - (seek-to-point-toward-point! (-> self collide-info) (-> self destination) 131072.0 (seconds 0.01)) - ) - :code (behavior () - (send-event (handle->process (-> self snack)) 'eat) - (sound-play "rat-gulp") - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! swamp-rat-eat-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) - (logclear! (-> self nav flags) (nav-control-flags navcf19)) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-simple-post - ) + :trans + (behavior () + (seek-to-point-toward-point! (-> self collide-info) (-> self destination) 131072.0 (seconds 0.01))) + :code + (behavior () + (send-event (handle->process (-> self snack)) 'eat) + (sound-play "rat-gulp") + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! swamp-rat-eat-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) + (logclear! (-> self nav flags) (nav-control-flags navcf19)) + (go-virtual nav-enemy-chase)) + :post nav-enemy-simple-post) (defstate billy-rat-salivate (billy-rat) :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (dotimes (gp-0 1) - (sound-play "rat-eat") - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info victory-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) - (if (= (-> self dest-type) 3) - (go billy-rat-eat) - (go-virtual nav-enemy-chase) - ) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (dotimes (gp-0 1) + (sound-play "rat-eat") + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info victory-anim)) + :num! (seek! max f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))))) + (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) + (if (= (-> self dest-type) 3) (go billy-rat-eat) (go-virtual nav-enemy-chase))) + :post nav-enemy-simple-post) (defstate nav-enemy-victory (billy-rat) :virtual #t - :enter (behavior () - (let ((t9-1 (-> (find-parent-state) enter))) - (if t9-1 - (t9-1) - ) - ) - (when (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (logclear! (-> self nav flags) (nav-control-flags navcf19)) - (if (rat-about-to-eat? self (-> self billy 0)) + :enter + (behavior () + (let ((t9-1 (-> (find-parent-state) enter))) (if t9-1 (t9-1))) + (when (logtest? (nav-control-flags navcf19) (-> self nav flags)) + (logclear! (-> self nav flags) (nav-control-flags navcf19)) + (if (rat-about-to-eat? self (-> self billy 0)) (go billy-rat-salivate) - (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) - ) - ) - ) - ) + (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination))))) (defstate nav-enemy-stare (billy-rat) :virtual #t - :enter (behavior () - (go-virtual nav-enemy-chase) - ) - ) + :enter + (behavior () + (go-virtual nav-enemy-chase))) (defstate nav-enemy-chase (billy-rat) :virtual #t - :trans (behavior () - (set! (-> self speed-scale) (-> self billy 0 rat-speed)) - (if (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (time-elapsed? (-> self state-time) (-> self chase-rest-time)) - ) - (go-virtual nav-enemy-victory) - ) - ) - :post (behavior () - (swamp-rat-update-wiggle-target (-> self destination)) - (nav-enemy-travel-post) - ) - ) + :trans + (behavior () + (set! (-> self speed-scale) (-> self billy 0 rat-speed)) + (if (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) + (time-elapsed? (-> self state-time) (-> self chase-rest-time))) + (go-virtual nav-enemy-victory))) + :post + (behavior () + (swamp-rat-update-wiggle-target (-> self destination)) + (nav-enemy-travel-post))) (defbehavior billy-rat-init-by-other billy-rat ((arg0 billy) (arg1 vector) (arg2 vector)) (set! (-> self billy) (the-as (pointer billy) (process->ppointer arg0))) @@ -241,37 +186,34 @@ (vector-! s4-0 arg2 arg1) (set! (-> s4-0 y) 0.0) (vector-normalize! s4-0 1.0) - (swamp-rat-init-by-other arg0 arg1 s4-0 (pickup-type none) #t) - ) - (none) - ) - -(defskelgroup *billy-sg* billy billy-lod0-jg billy-idle-breath-ja - ((billy-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - :longest-edge (meters 1) - :shadow billy-shadow-mg - ) - -(defskelgroup *billy-sidekick-sg* billy-sidekick billy-sidekick-lod0-jg billy-sidekick-idle-ja - ((billy-sidekick-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) + (swamp-rat-init-by-other arg0 arg1 s4-0 (pickup-type none) #t)) + (none)) + +(defskelgroup *billy-sg* + billy + billy-lod0-jg + billy-idle-breath-ja + ((billy-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :longest-edge (meters 1) + :shadow billy-shadow-mg) + +(defskelgroup *billy-sidekick-sg* + billy-sidekick + billy-sidekick-lod0-jg + billy-sidekick-idle-ja + ((billy-sidekick-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defbehavior billy-kill-all-but-farthy billy () (let* ((gp-0 (the-as (pointer process-tree) (-> self child-override))) - (s5-0 (-> (the-as (pointer billy-snack) gp-0) 0 brother)) - ) + (s5-0 (-> (the-as (pointer billy-snack) gp-0) 0 brother))) (while gp-0 (if (not (or (= gp-0 (-> self farthy process)) (type-type? (-> (ppointer->process gp-0) type) fuel-cell))) - (deactivate (-> gp-0 0)) - ) + (deactivate (-> gp-0 0))) (set! gp-0 s5-0) - (set! s5-0 (-> gp-0 0 brother)) - ) - ) - #f - ) + (set! s5-0 (-> gp-0 0 brother)))) + #f) (defmethod play-anim! ((this billy) (arg0 symbol)) (case (current-status (-> this tasks)) @@ -284,269 +226,197 @@ (eval-path-curve-div! (-> this path-snacks) s5-1 (the float s4-0) 'exact) (+! (-> s5-1 x) -40960.0) (+! (-> s5-1 z) 20480.0) - (manipy-spawn s5-1 (-> this entity) *farthy-snack-sg* #f :to this) - ) - ) - ) - (new 'static 'spool-anim - :name "billy-introduction" - :index 5 - :parts 14 - :command-list '((0 kill "swamp-blimp-3") - (0 kill "swamp-tetherrock-14") - (0 kill "swamp-tetherrock-15") - (0 kill "flutflut-3") - (0 kill "tar-plat-26") - (0 kill "tar-plat-25") - (0 kill "babak-380") - (0 kill "eco-164") - (0 kill "eco-165") - (0 kill "eco-140") - (0 kill "launcher-97") - (0 kill "swamp-rat-nest-5") - (0 kill "swamp-rat-nest-4") - (0 kill "swamp-rat-nest-3") - (0 kill "swamp-rat-nest-2") - (0 kill "sharkey-9") - (0 kill "launcher-46") - (0 kill "launcher-44") - (0 kill "launcher-42") - (0 kill "swamp-spike-43") - (0 kill "swamp-spike-44") - (0 kill "swamp-spike-45") - (346 blackout 10) - (349 blackout 0) - (494 blackout 10) - (497 blackout 0) - (1145 blackout 10) - (1148 blackout 0) - (1518 blackout 10) - (1521 blackout 0) - ) - ) - ) + (manipy-spawn s5-1 (-> this entity) *farthy-snack-sg* #f :to this)))) + (new 'static + 'spool-anim + :name "billy-introduction" + :index 5 + :parts 14 + :command-list + '((0 kill "swamp-blimp-3") + (0 kill "swamp-tetherrock-14") + (0 kill "swamp-tetherrock-15") + (0 kill "flutflut-3") + (0 kill "tar-plat-26") + (0 kill "tar-plat-25") + (0 kill "babak-380") + (0 kill "eco-164") + (0 kill "eco-165") + (0 kill "eco-140") + (0 kill "launcher-97") + (0 kill "swamp-rat-nest-5") + (0 kill "swamp-rat-nest-4") + (0 kill "swamp-rat-nest-3") + (0 kill "swamp-rat-nest-2") + (0 kill "sharkey-9") + (0 kill "launcher-46") + (0 kill "launcher-44") + (0 kill "launcher-42") + (0 kill "swamp-spike-43") + (0 kill "swamp-spike-44") + (0 kill "swamp-spike-45") + (346 blackout 10) + (349 blackout 0) + (494 blackout 10) + (497 blackout 0) + (1145 blackout 10) + (1148 blackout 0) + (1518 blackout 10) + (1521 blackout 0)))) (((task-status need-reminder-a) (task-status need-reminder)) (set! (-> this skippable) #t) (set! (-> this blend-on-exit) (the-as art-joint-anim #t)) (set! (-> this will-talk) #t) - (new 'static 'spool-anim - :name "billy-reminder-1" - :index 8 - :parts 2 - :command-list '((0 kill "swamp-blimp-3") - (0 kill "swamp-tetherrock-14") - (0 kill "swamp-tetherrock-15") - (0 kill "flutflut-3") - (0 kill "tar-plat-26") - (0 kill "tar-plat-25") - (0 kill "babak-380") - (0 kill "eco-164") - (0 kill "eco-165") - (0 kill "eco-140") - (0 kill "launcher-97") - (0 kill "swamp-rat-nest-5") - (0 kill "swamp-rat-nest-4") - (0 kill "swamp-rat-nest-3") - (0 kill "swamp-rat-nest-2") - (0 kill "sharkey-9") - (0 kill "launcher-46") - (0 kill "launcher-44") - (0 kill "launcher-42") - (0 kill "swamp-spike-43") - (0 kill "swamp-spike-44") - (0 kill "swamp-spike-45") - ) - ) - ) + (new 'static + 'spool-anim + :name "billy-reminder-1" + :index 8 + :parts 2 + :command-list + '((0 kill "swamp-blimp-3") + (0 kill "swamp-tetherrock-14") + (0 kill "swamp-tetherrock-15") + (0 kill "flutflut-3") + (0 kill "tar-plat-26") + (0 kill "tar-plat-25") + (0 kill "babak-380") + (0 kill "eco-164") + (0 kill "eco-165") + (0 kill "eco-140") + (0 kill "launcher-97") + (0 kill "swamp-rat-nest-5") + (0 kill "swamp-rat-nest-4") + (0 kill "swamp-rat-nest-3") + (0 kill "swamp-rat-nest-2") + (0 kill "sharkey-9") + (0 kill "launcher-46") + (0 kill "launcher-44") + (0 kill "launcher-42") + (0 kill "swamp-spike-43") + (0 kill "swamp-spike-44") + (0 kill "swamp-spike-45")))) (((task-status need-reward-speech)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim - :name "billy-resolution" - :index 9 - :parts 2 - :command-list '((0 kill "swamp-blimp-3") - (0 kill "swamp-tetherrock-14") - (0 kill "swamp-tetherrock-15") - (0 kill "flutflut-3") - (0 kill "tar-plat-26") - (0 kill "tar-plat-25") - (0 kill "babak-380") - (0 kill "eco-164") - (0 kill "eco-165") - (0 kill "eco-140") - (0 kill "launcher-97") - (0 kill "swamp-rat-nest-5") - (0 kill "swamp-rat-nest-4") - (0 kill "swamp-rat-nest-3") - (0 kill "swamp-rat-nest-2") - (0 kill "sharkey-9") - (0 kill "launcher-46") - (0 kill "launcher-44") - (0 kill "launcher-42") - (0 kill "swamp-spike-43") - (0 kill "swamp-spike-44") - (0 kill "swamp-spike-45") - ) - ) - ) + (close-current! (-> this tasks))) + (new 'static + 'spool-anim + :name "billy-resolution" + :index 9 + :parts 2 + :command-list + '((0 kill "swamp-blimp-3") + (0 kill "swamp-tetherrock-14") + (0 kill "swamp-tetherrock-15") + (0 kill "flutflut-3") + (0 kill "tar-plat-26") + (0 kill "tar-plat-25") + (0 kill "babak-380") + (0 kill "eco-164") + (0 kill "eco-165") + (0 kill "eco-140") + (0 kill "launcher-97") + (0 kill "swamp-rat-nest-5") + (0 kill "swamp-rat-nest-4") + (0 kill "swamp-rat-nest-3") + (0 kill "swamp-rat-nest-2") + (0 kill "sharkey-9") + (0 kill "launcher-46") + (0 kill "launcher-44") + (0 kill "launcher-42") + (0 kill "swamp-spike-43") + (0 kill "swamp-spike-44") + (0 kill "swamp-spike-45")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this billy)) (case (current-status (-> this tasks)) - (((task-status invalid) (task-status need-resolution)) - (-> this draw art-group data 10) - ) - (else - (-> this draw art-group data 3) - ) - ) - ) + (((task-status invalid) (task-status need-resolution)) (-> this draw art-group data 10)) + (else (-> this draw art-group data 3)))) (defmethod process-taskable-method-38 ((this billy)) (case (current-status (-> this tasks)) - (((task-status need-reminder-a) (task-status need-reminder)) - (go (method-of-object this query)) - ) - (((task-status need-reward-speech)) - (go (method-of-object this play-anim)) - ) - (else - (call-parent-method this) - ) - ) - (none) - ) + (((task-status need-reminder-a) (task-status need-reminder)) (go (method-of-object this query))) + (((task-status need-reward-speech)) (go (method-of-object this play-anim))) + (else (call-parent-method this))) + (none)) (defmethod get-accept-anim ((this billy) (arg0 symbol)) - (if arg0 - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim :name "billy-accept" :index 6 :parts 3 :command-list '()) - ) + (if arg0 (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "billy-accept" :index 6 :parts 3 :command-list '())) (defmethod get-reject-anim ((this billy) (arg0 symbol)) - (new 'static 'spool-anim :name "billy-reject" :index 7 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "billy-reject" :index 7 :parts 3 :command-list '())) (defstate billy-done (billy) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('billy-rat-needs-destination) - (let* ((gp-0 proc) - (v1-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) billy-rat)) - gp-0 - ) - ) - ) - (when v1-2 - (set! (-> (the-as billy-rat v1-2) dest-type) (the-as uint 1)) - (get-random-point (-> self path-waypts) (-> (the-as billy-rat v1-2) destination)) - ) - ) - ) - ) - ) - :enter (behavior () - (init! - (-> self query) - (lookup-text! *common-text* (text-id play-again?) #f) - 40 - 150 - 30 - #f - (lookup-text! *common-text* (text-id quit) #f) - ) - (ja-channel-set! 1) - (ja :group! (get-art-elem self)) - (send-event *target* 'end-mode) - (when (and (handle->process (-> self offending-rat)) (zero? (-> self num-snacks))) - (send-event *camera* 'change-target (handle->process (-> self offending-rat))) - (send-event *camera* 'change-state cam-standoff 0) - (send-event *camera* 'set-standoff-height 0.0) - (send-event *camera* 'set-standoff-dist 20480.0) - (send-event *camera* 'set-standoff-height 16384.0) - (send-event *camera-combiner* 'stop-tracking) - (send-event *camera-combiner* 'start-tracking (ppointer->process (-> *camera* slave 0))) - (let ((a0-24 (get-reminder (-> self tasks) 0))) - (save-reminder (-> self tasks) (seekl a0-24 255 1) 0) - ) - (let ((f0-2 (rand-float-gen))) - (cond - ((< 0.75 f0-2) - (play-ambient (-> self ambient) "BIL-TA04" #t (the-as vector #f)) - ) - ((< 0.5 f0-2) - (play-ambient (-> self ambient) "BIL-TA05" #t (the-as vector #f)) - ) - ((< 0.25 f0-2) - (play-ambient (-> self ambient) "BIL-TA4A" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "BIL-TA5A" #t (the-as vector #f)) - ) - ) - ) - ) - ) - :exit (behavior () - (billy-kill-all-but-farthy) - (send-event *camera* 'change-target *target*) - (send-event *camera* 'change-state *camera-base-mode* 0) - ) - :trans (behavior () - (cond - ((> (-> self num-snacks) 0) - (when (process-grab? *target*) - (close-current! (-> self tasks)) - (go-virtual play-anim) - ) - ) - ((< (-> self num-snacks) 0) - (go-virtual idle) - ) - (else - (process-grab? *target*) - (when (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed))) - (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) - ) - ) - ) - ) - ) - ) - (spool-push *art-control* "billy-reject" 0 self -99.0) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('billy-rat-needs-destination) + (let* ((gp-0 proc) + (v1-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) billy-rat)) gp-0))) + (when v1-2 + (set! (-> (the-as billy-rat v1-2) dest-type) (the-as uint 1)) + (get-random-point (-> self path-waypts) (-> (the-as billy-rat v1-2) destination))))))) + :enter + (behavior () + (init! (-> self query) + (lookup-text! *common-text* (text-id play-again?) #f) + 40 + 150 + 30 + #f + (lookup-text! *common-text* (text-id quit) #f)) + (ja-channel-set! 1) + (ja :group! (get-art-elem self)) + (send-event *target* 'end-mode) + (when (and (handle->process (-> self offending-rat)) (zero? (-> self num-snacks))) + (send-event *camera* 'change-target (handle->process (-> self offending-rat))) + (send-event *camera* 'change-state cam-standoff 0) + (send-event *camera* 'set-standoff-height 0.0) + (send-event *camera* 'set-standoff-dist 20480.0) + (send-event *camera* 'set-standoff-height 16384.0) + (send-event *camera-combiner* 'stop-tracking) + (send-event *camera-combiner* 'start-tracking (ppointer->process (-> *camera* slave 0))) + (let ((a0-24 (get-reminder (-> self tasks) 0))) (save-reminder (-> self tasks) (seekl a0-24 255 1) 0)) + (let ((f0-2 (rand-float-gen))) + (cond + ((< 0.75 f0-2) (play-ambient (-> self ambient) "BIL-TA04" #t (the-as vector #f))) + ((< 0.5 f0-2) (play-ambient (-> self ambient) "BIL-TA05" #t (the-as vector #f))) + ((< 0.25 f0-2) (play-ambient (-> self ambient) "BIL-TA4A" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "BIL-TA5A" #t (the-as vector #f))))))) + :exit + (behavior () + (billy-kill-all-but-farthy) + (send-event *camera* 'change-target *target*) + (send-event *camera* 'change-state *camera-base-mode* 0)) + :trans + (behavior () + (cond + ((> (-> self num-snacks) 0) (when (process-grab? *target*) (close-current! (-> self tasks)) (go-virtual play-anim))) + ((< (-> self num-snacks) 0) (go-virtual idle)) + (else + (process-grab? *target*) + (when (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed))) + (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))))))) + (spool-push *art-control* "billy-reject" 0 self -99.0)) :code process-taskable-anim-loop - :post (behavior () - (ja-post) - ) - ) + :post + (behavior () + (ja-post))) (defbehavior billy-game-update-wave billy () (let* ((a0-2 (/ (the-as uint (+ (get-reminder (-> self tasks) 0) 1)) (the-as uint 5))) - (v1-4 (min 3 (the-as int a0-2))) - ) + (v1-4 (min 3 (the-as int a0-2)))) (cond ((zero? v1-4) (let ((v1-5 (-> self current-wave))) @@ -558,30 +428,21 @@ (set! (-> self passed-last-stage) #f) (when (time-elapsed? (-> self wave-start-time) (seconds 15)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-5 2) (set! (-> self max-rats) 8) (set! (-> self rat-speed) 1.2) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 20)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-5 4) (set! (-> self max-rats) 10) (set! (-> self rat-speed) 1.35) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 25)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ) - ) - ) + (set-time! (-> self wave-start-time))))))) ((= v1-4 1) (let ((v1-30 (-> self current-wave))) (cond @@ -592,30 +453,21 @@ (set! (-> self passed-last-stage) #f) (when (time-elapsed? (-> self wave-start-time) (seconds 15)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-30 2) (set! (-> self max-rats) 7) (set! (-> self rat-speed) 1.2) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 20)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-30 4) (set! (-> self max-rats) 10) (set! (-> self rat-speed) 1.3) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 22)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ) - ) - ) + (set-time! (-> self wave-start-time))))))) ((= v1-4 2) (let ((v1-55 (-> self current-wave))) (cond @@ -626,432 +478,261 @@ (set! (-> self passed-last-stage) #f) (when (time-elapsed? (-> self wave-start-time) (seconds 15)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-55 2) (set! (-> self max-rats) 7) (set! (-> self rat-speed) 1.1) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 18)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-55 4) (set! (-> self max-rats) 9) (set! (-> self rat-speed) 1.25) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 20)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ) - ) - ) + (set-time! (-> self wave-start-time))))))) (else - (let ((v1-80 (-> self current-wave))) - (cond - ((zero? v1-80) - (set! (-> self max-rats) 5) - (set! (-> self rat-speed) 0.9) - (set! (-> self spawn-rats) #t) - (set! (-> self passed-last-stage) #f) - (when (time-elapsed? (-> self wave-start-time) (seconds 15)) - (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ((= v1-80 2) - (set! (-> self max-rats) 6) - (set! (-> self rat-speed) 1.0) - (set! (-> self spawn-rats) #t) - (when (time-elapsed? (-> self wave-start-time) (seconds 18)) - (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ((= v1-80 4) - (set! (-> self max-rats) 8) - (set! (-> self rat-speed) 1.1) - (set! (-> self spawn-rats) #t) - (when (time-elapsed? (-> self wave-start-time) (seconds 20)) - (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (let ((v1-80 (-> self current-wave))) + (cond + ((zero? v1-80) + (set! (-> self max-rats) 5) + (set! (-> self rat-speed) 0.9) + (set! (-> self spawn-rats) #t) + (set! (-> self passed-last-stage) #f) + (when (time-elapsed? (-> self wave-start-time) (seconds 15)) + (+! (-> self current-wave) 1) + (set-time! (-> self wave-start-time)))) + ((= v1-80 2) + (set! (-> self max-rats) 6) + (set! (-> self rat-speed) 1.0) + (set! (-> self spawn-rats) #t) + (when (time-elapsed? (-> self wave-start-time) (seconds 18)) + (+! (-> self current-wave) 1) + (set-time! (-> self wave-start-time)))) + ((= v1-80 4) + (set! (-> self max-rats) 8) + (set! (-> self rat-speed) 1.1) + (set! (-> self spawn-rats) #t) + (when (time-elapsed? (-> self wave-start-time) (seconds 20)) + (+! (-> self current-wave) 1) + (set-time! (-> self wave-start-time))))))))) + (none)) (defbehavior billy-game-update billy () (let ((v1-0 (-> self current-wave))) (cond - ((or (zero? v1-0) (= v1-0 2) (= v1-0 4)) - (billy-game-update-wave) - ) - ((= v1-0 5) - (set! (-> self spawn-rats) #f) - (set! (-> self passed-last-stage) #t) - ) - ((begin (set! (-> self spawn-rats) #f) (zero? (-> self num-rats))) + ((or (zero? v1-0) (= v1-0 2) (= v1-0 4)) (billy-game-update-wave)) + ((= v1-0 5) (set! (-> self spawn-rats) #f) (set! (-> self passed-last-stage) #t)) + ((begin + (set! (-> self spawn-rats) #f) + (zero? (-> self num-rats))) (when (time-elapsed? (-> self wave-start-time) (seconds 3)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - (else - (set-time! (-> self wave-start-time)) - ) - ) - ) + (set-time! (-> self wave-start-time)))) + (else (set-time! (-> self wave-start-time))))) (when (and (< (-> self num-rats) (-> self max-rats)) (-> self spawn-rats)) (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (get-random-point (-> self path-starts) gp-0) (get-random-point (-> self path-waypts) s5-0) - (if (process-spawn billy-rat self gp-0 s5-0 :to self) - (+! (-> self num-rats) 1) - ) - ) - ) + (if (process-spawn billy-rat self gp-0 s5-0 :to self) (+! (-> self num-rats) 1)))) 0 - (none) - ) + (none)) (defstate billy-playing (billy) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('billy-rat-die) - (+! (-> self num-rats) -1) - (let* ((f0-2 (rand-float-gen)) - (f0-3 (* 3.0 f0-2)) - ) - (cond - ((< 1.0 f0-3) - #f - ) - ((< 0.8333333 f0-3) - (play-ambient (-> self ambient) "SKSP009F" #t (the-as vector #f)) - ) - ((< 0.6666667 f0-3) - (play-ambient (-> self ambient) "BIL-TA02" #t (the-as vector #f)) - ) - ((< 0.5 f0-3) - (play-ambient (-> self ambient) "BIL-TA08" #t (the-as vector #f)) - ) - ((< 0.33333334 f0-3) - (play-ambient (-> self ambient) "BIL-TA09" #t (the-as vector #f)) - ) - ((< 0.16666667 f0-3) - (play-ambient (-> self ambient) "BIL-TA2A" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "BIL-TA4B" #t (the-as vector #f)) - ) - ) - ) - ) - (('billy-rat-needs-destination) - (let* ((s5-0 proc) - (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) billy-rat)) - (the-as billy-rat s5-0) - ) - ) - ) - (when gp-0 - (let ((f0-6 (rand-float-gen))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('billy-rat-die) + (+! (-> self num-rats) -1) + (let* ((f0-2 (rand-float-gen)) + (f0-3 (* 3.0 f0-2))) + (cond + ((< 1.0 f0-3) #f) + ((< 0.8333333 f0-3) (play-ambient (-> self ambient) "SKSP009F" #t (the-as vector #f))) + ((< 0.6666667 f0-3) (play-ambient (-> self ambient) "BIL-TA02" #t (the-as vector #f))) + ((< 0.5 f0-3) (play-ambient (-> self ambient) "BIL-TA08" #t (the-as vector #f))) + ((< 0.33333334 f0-3) (play-ambient (-> self ambient) "BIL-TA09" #t (the-as vector #f))) + ((< 0.16666667 f0-3) (play-ambient (-> self ambient) "BIL-TA2A" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "BIL-TA4B" #t (the-as vector #f)))))) + (('billy-rat-needs-destination) + (let* ((s5-0 proc) + (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) billy-rat)) (the-as billy-rat s5-0)))) + (when gp-0 + (let ((f0-6 (rand-float-gen))) + (cond + ((< 0.75 f0-6) (play-ambient (-> self ambient) "BIL-TA01" #t (the-as vector #f))) + ((< 0.5 f0-6) (play-ambient (-> self ambient) "BIL-TA03" #t (the-as vector #f))) + ((< 0.25 f0-6) (play-ambient (-> self ambient) "BIL-TA1A" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "BIL-TA3A" #t (the-as vector #f))))) (cond - ((< 0.75 f0-6) - (play-ambient (-> self ambient) "BIL-TA01" #t (the-as vector #f)) - ) - ((< 0.5 f0-6) - (play-ambient (-> self ambient) "BIL-TA03" #t (the-as vector #f)) - ) - ((< 0.25 f0-6) - (play-ambient (-> self ambient) "BIL-TA1A" #t (the-as vector #f)) - ) + ((rat-about-to-eat? gp-0 self) + (set! (-> self num-snacks) 0) + (set! (-> self offending-rat) (process->handle gp-0)) + (set! (-> gp-0 dest-type) (the-as uint 3)) + (let ((v0-1 (the-as object (-> gp-0 destination)))) + (set! (-> (the-as vector v0-1) quad) (-> (the-as billy-snack (-> gp-0 snack process 0)) root trans quad)) + v0-1)) + ((or (= (-> gp-0 dest-type) 2) (= (-> gp-0 dest-type) 3) (<= (-> self num-snacks) 0)) + (set! (-> gp-0 dest-type) (the-as uint 1)) + (get-random-point (-> self path-starts) (-> gp-0 destination))) (else - (play-ambient (-> self ambient) "BIL-TA3A" #t (the-as vector #f)) - ) - ) - ) - (cond - ((rat-about-to-eat? gp-0 self) - (set! (-> self num-snacks) 0) - (set! (-> self offending-rat) (process->handle gp-0)) - (set! (-> gp-0 dest-type) (the-as uint 3)) - (let ((v0-1 (the-as object (-> gp-0 destination)))) - (set! (-> (the-as vector v0-1) quad) (-> (the-as billy-snack (-> gp-0 snack process 0)) root trans quad)) - v0-1 - ) - ) - ((or (= (-> gp-0 dest-type) 2) (= (-> gp-0 dest-type) 3) (<= (-> self num-snacks) 0)) - (set! (-> gp-0 dest-type) (the-as uint 1)) - (get-random-point (-> self path-starts) (-> gp-0 destination)) - ) - (else - (let ((s3-0 100) - (s4-0 0) - (s2-0 (the-as (pointer process-tree) (-> self child-override))) - (s5-1 (the-as process-tree #f)) - ) - (while s2-0 - (let* ((s1-0 (ppointer->process s2-0)) - (v1-47 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) billy-snack)) - s1-0 - ) - ) - ) - (cond - ((not v1-47) - ) - ((< (-> (the-as billy-snack v1-47) num-rats) s3-0) - (set! s5-1 v1-47) - (set! s3-0 (-> (the-as billy-snack v1-47) num-rats)) - (set! s4-0 1) - ) - ((= (-> (the-as billy-snack v1-47) num-rats) s3-0) - (+! s4-0 1) - ) - ) - ) - (set! s2-0 (-> s2-0 0 brother)) - ) - (cond - ((zero? s4-0) - (set! (-> gp-0 dest-type) (the-as uint 1)) - (get-random-point (-> self path-waypts) (-> gp-0 destination)) - ) - (else + (let ((s3-0 100) + (s4-0 0) + (s2-0 (the-as (pointer process-tree) (-> self child-override))) + (s5-1 (the-as process-tree #f))) + (while s2-0 + (let* ((s1-0 (ppointer->process s2-0)) + (v1-47 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) billy-snack)) s1-0))) + (cond + ((not v1-47)) + ((< (-> (the-as billy-snack v1-47) num-rats) s3-0) + (set! s5-1 v1-47) + (set! s3-0 (-> (the-as billy-snack v1-47) num-rats)) + (set! s4-0 1)) + ((= (-> (the-as billy-snack v1-47) num-rats) s3-0) (+! s4-0 1)))) + (set! s2-0 (-> s2-0 0 brother))) + (cond + ((zero? s4-0) (set! (-> gp-0 dest-type) (the-as uint 1)) (get-random-point (-> self path-waypts) (-> gp-0 destination))) + (else (set! (-> gp-0 snack) (process->handle (the-as billy-snack s5-1))) (+! (-> (the-as billy-snack s5-1) num-rats) 1) (set! (-> gp-0 dest-type) (the-as uint 2)) (set! (-> gp-0 destination quad) (-> (the-as billy-snack s5-1) root trans quad)) - (set! (-> gp-0 destination x) (+ 6799.36 (-> gp-0 destination x))) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :enter (behavior () - (add-setting! 'music 'danger 0.0 0) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (init! (-> self query) (the-as string #f) 40 150 25 #t (lookup-text! *common-text* (text-id quit) #f)) - (set-time! (-> self wave-start-time)) - (set! (-> self num-snacks) 0) - (set! (-> self num-rats) 0) - (set! (-> self current-wave) 0) - (set! (-> self offending-rat) (the-as handle #f)) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (dotimes (s5-1 (+ (the int (the float (+ (-> self path-snacks curve num-cverts) -1))) 1)) - (eval-path-curve-div! (-> self path-snacks) gp-1 (the float s5-1) 'exact) - (if (process-spawn billy-snack gp-1 :to self) - (+! (-> self num-snacks) 1) - ) - ) - ) - (backup-load-state-and-set-cmds *load-state* '()) - (let* ((gp-2 '((kill "swamp-blimp-3") - (kill "swamp-tetherrock-14") - (kill "swamp-tetherrock-15") - (kill "flutflut-3") - (kill "tar-plat-26") - (kill "tar-plat-25") - (kill "babak-380") - (kill "eco-164") - (kill "eco-165") - (kill "eco-140") - (kill "launcher-97") - (kill "swamp-rat-nest-5") - (kill "swamp-rat-nest-4") - (kill "swamp-rat-nest-3") - (kill "swamp-rat-nest-2") - (kill "sharkey-9") - (kill "launcher-46") - (kill "launcher-44") - (kill "launcher-42") - (kill "swamp-spike-43") - (kill "swamp-spike-44") - (kill "swamp-spike-45") - ) - ) - (a1-8 (car gp-2)) - ) - (while (not (null? gp-2)) - (execute-command *load-state* (the-as pair a1-8)) - (set! gp-2 (cdr gp-2)) - (set! a1-8 (car gp-2)) - ) - ) - ) - :exit (behavior () - (restore-collide-with-as (-> self root)) - (restore-load-state-and-cleanup *load-state*) - (set! (-> *ACTOR-bank* birth-max) 1000) - (remove-setting! 'music) - ) - :trans (behavior () - (spool-push *art-control* "billy-resolution" 0 self -99.0) - (spool-push *art-control* "billy-reject" 0 self -99.0) - ) - :code (behavior () - (loop - (billy-game-update) - (if (or (zero? (-> self num-snacks)) - (and (zero? (-> self num-rats)) (-> self passed-last-stage)) - (and *cheat-mode* (cpad-pressed? 1 x)) - ) - (go billy-done) - ) - (suspend) - ) - ) - :post (behavior () - (ja-post) - ) - ) + (set! (-> gp-0 destination x) (+ 6799.36 (-> gp-0 destination x))))))))))))) + :enter + (behavior () + (add-setting! 'music 'danger 0.0 0) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (init! (-> self query) (the-as string #f) 40 150 25 #t (lookup-text! *common-text* (text-id quit) #f)) + (set-time! (-> self wave-start-time)) + (set! (-> self num-snacks) 0) + (set! (-> self num-rats) 0) + (set! (-> self current-wave) 0) + (set! (-> self offending-rat) (the-as handle #f)) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (dotimes (s5-1 (+ (the int (the float (+ (-> self path-snacks curve num-cverts) -1))) 1)) + (eval-path-curve-div! (-> self path-snacks) gp-1 (the float s5-1) 'exact) + (if (process-spawn billy-snack gp-1 :to self) (+! (-> self num-snacks) 1)))) + (backup-load-state-and-set-cmds *load-state* '()) + (let* ((gp-2 '((kill "swamp-blimp-3") + (kill "swamp-tetherrock-14") + (kill "swamp-tetherrock-15") + (kill "flutflut-3") + (kill "tar-plat-26") + (kill "tar-plat-25") + (kill "babak-380") + (kill "eco-164") + (kill "eco-165") + (kill "eco-140") + (kill "launcher-97") + (kill "swamp-rat-nest-5") + (kill "swamp-rat-nest-4") + (kill "swamp-rat-nest-3") + (kill "swamp-rat-nest-2") + (kill "sharkey-9") + (kill "launcher-46") + (kill "launcher-44") + (kill "launcher-42") + (kill "swamp-spike-43") + (kill "swamp-spike-44") + (kill "swamp-spike-45"))) + (a1-8 (car gp-2))) + (while (not (null? gp-2)) + (execute-command *load-state* (the-as pair a1-8)) + (set! gp-2 (cdr gp-2)) + (set! a1-8 (car gp-2))))) + :exit + (behavior () + (restore-collide-with-as (-> self root)) + (restore-load-state-and-cleanup *load-state*) + (set! (-> *ACTOR-bank* birth-max) 1000) + (remove-setting! 'music)) + :trans + (behavior () + (spool-push *art-control* "billy-resolution" 0 self -99.0) + (spool-push *art-control* "billy-reject" 0 self -99.0)) + :code + (behavior () + (loop + (billy-game-update) + (if (or (zero? (-> self num-snacks)) + (and (zero? (-> self num-rats)) (-> self passed-last-stage)) + (and *cheat-mode* (cpad-pressed? 1 x))) + (go billy-done)) + (suspend))) + :post + (behavior () + (ja-post))) (defstate enter-playing (billy) :virtual #t - :trans (behavior () - (when (send-event *target* 'change-mode 'billy) - (send-event *target* 'trans 'reset) - (let ((v1-8 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (cond - (v1-8 - (move-to-point! (-> *target* control) (-> v1-8 extra trans)) - (go billy-playing) - ) - (else - ) - ) - ) - ) - ) - ) + :trans + (behavior () + (when (send-event *target* 'change-mode 'billy) + (send-event *target* 'trans 'reset) + (let ((v1-8 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (cond + (v1-8 (move-to-point! (-> *target* control) (-> v1-8 extra trans)) (go billy-playing)) + (else)))))) (defmethod process-taskable-method-43 ((this billy)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f30-0 (rand-float-gen))) (cond - ((< 0.9411765 f30-0) - (play-ambient (-> this ambient) "BIL-AM01" #f (-> this root trans)) - ) - ((< 0.88235295 f30-0) - (play-ambient (-> this ambient) "BIL-AM02" #f (-> this root trans)) - ) - ((< 0.8235294 f30-0) - (play-ambient (-> this ambient) "BIL-AM03" #f (-> this root trans)) - ) - ((< 0.7647059 f30-0) - (play-ambient (-> this ambient) "BIL-AM04" #f (-> this root trans)) - ) - ((< 0.7058824 f30-0) - (play-ambient (-> this ambient) "BIL-AM05" #f (-> this root trans)) - ) - ((< 0.64705884 f30-0) - (play-ambient (-> this ambient) "BIL-AM06" #f (-> this root trans)) - ) - ((< 0.5882353 f30-0) - (play-ambient (-> this ambient) "BIL-AM07" #f (-> this root trans)) - ) - ((< 0.5294118 f30-0) - (play-ambient (-> this ambient) "BIL-AM08" #f (-> this root trans)) - ) - ((< 0.47058824 f30-0) - (play-ambient (-> this ambient) "BIL-AM1A" #f (-> this root trans)) - ) - ((< 0.4117647 f30-0) - (play-ambient (-> this ambient) "BIL-AM2A" #f (-> this root trans)) - ) - ((< 0.3529412 f30-0) - (play-ambient (-> this ambient) "BIL-AM2B" #f (-> this root trans)) - ) - ((= (current-status (-> this tasks)) (task-status invalid)) - #f - ) - ((< 0.29411766 f30-0) - (play-ambient (-> this ambient) "BIL-LO01" #f (-> this root trans)) - ) - ((< 0.23529412 f30-0) - (play-ambient (-> this ambient) "BIL-LO02" #f (-> this root trans)) - ) - ((< 0.1764706 f30-0) - (play-ambient (-> this ambient) "BIL-LO03" #f (-> this root trans)) - ) - ((< 0.11764706 f30-0) - (play-ambient (-> this ambient) "BIL-LO1A" #f (-> this root trans)) - ) - ((< 0.05882353 f30-0) - (play-ambient (-> this ambient) "BIL-LO2A" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "BIL-LO2B" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.9411765 f30-0) (play-ambient (-> this ambient) "BIL-AM01" #f (-> this root trans))) + ((< 0.88235295 f30-0) (play-ambient (-> this ambient) "BIL-AM02" #f (-> this root trans))) + ((< 0.8235294 f30-0) (play-ambient (-> this ambient) "BIL-AM03" #f (-> this root trans))) + ((< 0.7647059 f30-0) (play-ambient (-> this ambient) "BIL-AM04" #f (-> this root trans))) + ((< 0.7058824 f30-0) (play-ambient (-> this ambient) "BIL-AM05" #f (-> this root trans))) + ((< 0.64705884 f30-0) (play-ambient (-> this ambient) "BIL-AM06" #f (-> this root trans))) + ((< 0.5882353 f30-0) (play-ambient (-> this ambient) "BIL-AM07" #f (-> this root trans))) + ((< 0.5294118 f30-0) (play-ambient (-> this ambient) "BIL-AM08" #f (-> this root trans))) + ((< 0.47058824 f30-0) (play-ambient (-> this ambient) "BIL-AM1A" #f (-> this root trans))) + ((< 0.4117647 f30-0) (play-ambient (-> this ambient) "BIL-AM2A" #f (-> this root trans))) + ((< 0.3529412 f30-0) (play-ambient (-> this ambient) "BIL-AM2B" #f (-> this root trans))) + ((= (current-status (-> this tasks)) (task-status invalid)) #f) + ((< 0.29411766 f30-0) (play-ambient (-> this ambient) "BIL-LO01" #f (-> this root trans))) + ((< 0.23529412 f30-0) (play-ambient (-> this ambient) "BIL-LO02" #f (-> this root trans))) + ((< 0.1764706 f30-0) (play-ambient (-> this ambient) "BIL-LO03" #f (-> this root trans))) + ((< 0.11764706 f30-0) (play-ambient (-> this ambient) "BIL-LO1A" #f (-> this root trans))) + ((< 0.05882353 f30-0) (play-ambient (-> this ambient) "BIL-LO2A" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "BIL-LO2B" #f (-> this root trans))))))) (defstate play-anim (billy) :virtual #t - :exit (behavior () - (billy-kill-all-but-farthy) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (billy-kill-all-but-farthy) + ((-> (method-of-type process-taskable play-anim) exit)))) (defstate idle (billy) :virtual #t - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (ja :group! (get-art-elem self)) - (let* ((f30-0 5.0) - (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-10 (the-as number (logior #x3f800000 v1-9))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.2))) + (loop + (ja :group! (get-art-elem self)) + (let* ((f30-0 5.0) + (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-10 (the-as number (logior #x3f800000 v1-9)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (process-taskable-method-43 self) + (suspend) + (ja :num! (seek!))))) + (when (ja-group? billy-idle-breath-ja) + (ja-no-eval :group! billy-idle-shoo-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (process-taskable-method-43 self) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (when (ja-group? billy-idle-breath-ja) - (ja-no-eval :group! billy-idle-shoo-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) + (ja :num! (seek!))))))) (defmethod target-above-threshold? ((this billy)) - (the-as - symbol - (and *target* (not (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) - ) - ) + (the-as symbol (and *target* (not (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))))) (defmethod init-from-entity! ((this billy) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *billy-sg* 3 40 (new 'static 'vector :w 4096.0) 5) @@ -1059,15 +740,11 @@ (dotimes (s5-0 3) (let ((v1-3 (new 'process 'curve-control this 'path (the float s5-0)))) (set! (-> this path-data s5-0) v1-3) - (logior! (-> v1-3 flags) (path-control-flag display draw-line draw-point draw-text)) - ) - ) + (logior! (-> v1-3 flags) (path-control-flag display draw-line draw-point draw-text)))) (set! (-> this path) (-> this path-snacks)) (set! (-> this farthy) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *billy-sidekick-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *billy-sidekick-sg* #f :to this))) (send-event (handle->process (-> this farthy)) 'center-joint 3) (send-event (handle->process (-> this farthy)) 'anim-mode 'clone-anim) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/swamp/kermit.gc b/goal_src/jak1/levels/swamp/kermit.gc index 549f21cb31..d949d776ef 100644 --- a/goal_src/jak1/levels/swamp/kermit.gc +++ b/goal_src/jak1/levels/swamp/kermit.gc @@ -1,12 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: kermit.gc -;; name in dgo: kermit -;; dgos: L1, SWA ;; note: changed for high fps (declare-type kermit nav-enemy) @@ -16,467 +12,412 @@ (defpartgroup group-kermit-charging-up :id 298 :bounds (static-bspherem 0 5 0 5) - :parts ((sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1356) - (sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1357) - (sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1358) - (sp-item 1360) - (sp-item 1361 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1362 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1363 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1358 :fade-after (meters 30) :falloff-to (meters 30) :flags (start-dead)) - (sp-item 1357 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 1356 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 1358 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) - (sp-item 1357 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 1356 :fade-after (meters 110) :falloff-to (meters 110) :flags (start-dead)) - (sp-item 1358 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) - (sp-item 1357 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) - ) - ) + :parts + ((sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1356) + (sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1357) + (sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1358) + (sp-item 1360) + (sp-item 1361 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1362 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1363 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1358 :fade-after (meters 30) :falloff-to (meters 30) :flags (start-dead)) + (sp-item 1357 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 1356 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 1358 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) + (sp-item 1357 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 1356 :fade-after (meters 110) :falloff-to (meters 110) :flags (start-dead)) + (sp-item 1358 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) + (sp-item 1357 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)))) (defpart 1360 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.1 1.0) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.5) (meters 1.4)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 192.0) - (:a 64.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:fade-a -0.2) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.1 1.0) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 1.4)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 192.0) + (:a 64.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:fade-a -0.2) + (:timer (seconds 1)) + (:flags (bit2 bit3)))) (defpart 1359 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.05 0.1) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 192.0) - (:a 96.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:fade-a 0.0) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.05 0.1) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 192.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:fade-a 0.0) + (:timer (seconds 1)) + (:flags (bit2 bit3)))) (defpart 1356 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "eco-blue-spark1" :num 0.05 :volume 70.0)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "eco-blue-spark1" :num 0.05 :volume 70.0)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1357 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "eco-blue-spark2" :num 0.075 :volume 100.0)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "eco-blue-spark2" :num 0.075 :volume 100.0)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1358 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "eco-blue-spark3" :num 0.05 :volume 70.0)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "eco-blue-spark3" :num 0.05 :volume 70.0)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1361 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.1 0.5) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.305)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.1 0.5) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.305)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1362 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.305)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.305)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1363 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.3 0.1) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.305)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.3 0.1) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.305)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1364 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0))) (defpartgroup group-kermit-charged-up :id 299 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1365 :period (seconds 0.05) :length (seconds 0.017))) - ) + :parts ((sp-item 1365 :period (seconds 0.05) :length (seconds 0.017)))) (defpart 1365 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 0.25)) - (:flags (bit2)) - (:userdata 0.0) - (:conerot-x (degrees 20) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 0.25)) + (:flags (bit2)) + (:userdata 0.0) + (:conerot-x (degrees 20) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-kermit-pulse :id 300 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1368 :flags (launch-asap) :binding 1366) - (sp-item 1366 :flags (start-dead launch-asap) :binding 1367) - (sp-item 1367 :flags (start-dead)) - (sp-item 1367 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1368 :flags (launch-asap) :binding 1366) + (sp-item 1366 :flags (start-dead launch-asap) :binding 1367) + (sp-item 1367 :flags (start-dead)) + (sp-item 1367 :flags (start-dead)))) (defpart 1368 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 3)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 96.0 32.0) - (:b 128.0 64.0) - (:a 128.0) - (:timer (seconds 10)) - (:flags (bit3)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017)) - (:next-launcher 1369) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 96.0 32.0) + (:b 128.0 64.0) + (:a 128.0) + (:timer (seconds 10)) + (:flags (bit3)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017)) + (:next-launcher 1369))) (defpart 1369 - :init-specs ((:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:a 100.0 28.0) - (:next-time (seconds 0.017)) - (:next-launcher 1369) - ) - ) + :init-specs + ((:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:a 100.0 28.0) + (:next-time (seconds 0.017)) + (:next-launcher 1369))) (defpart 1366 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:y (meters 4) (meters 16)) - (:z (meters 0)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 96.0 32.0) - (:b 128.0 64.0) - (:a 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.053333335)) - (:vel-y (meters 0.053333335)) - (:vel-z (meters 0.002)) - (:timer (seconds 10)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 1)) - (:next-launcher 1370) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:y (meters 4) (meters 16)) + (:z (meters 0)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 96.0 32.0) + (:b 128.0 64.0) + (:a 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.053333335)) + (:vel-y (meters 0.053333335)) + (:vel-z (meters 0.002)) + (:timer (seconds 10)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 1)) + (:next-launcher 1370))) (defpart 1370 - :init-specs ((:vel-z (meters 0))) - ) + :init-specs ((:vel-z (meters 0)))) (defpart 1367 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.85)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 96.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:scalevel-x (meters -0.00075757573)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.16) - (:fade-a -0.14222223) - (:timer (seconds 5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.85)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 96.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:scalevel-x (meters -0.00075757573)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.16) + (:fade-a -0.14222223) + (:timer (seconds 5)) + (:flags (bit2 bit3)))) (defpartgroup group-kermit-pulse-impact :id 301 :duration (seconds 0.017) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 1371) (sp-item 1372)) - ) + :parts ((sp-item 1371) (sp-item 1372))) (defpart 1371 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters -0.1) (meters 0.2)) - (:y (meters -0.1) (meters 0.2)) - (:z (meters -0.1) (meters 0.2)) - (:scale-x (meters 1.2) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.011666667) (meters 0.00083333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-a -0.64) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.1)) - (:next-launcher 1373) - (:launchrot-x (degrees 0) (degrees 180)) - (:launchrot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters -0.1) (meters 0.2)) + (:y (meters -0.1) (meters 0.2)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 1.2) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.011666667) (meters 0.00083333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-a -0.64) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.1)) + (:next-launcher 1373) + (:launchrot-x (degrees 0) (degrees 180)) + (:launchrot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (defpart 1373 - :init-specs ((:fade-r -3.2) (:fade-g 1.0) (:fade-b 1.0) (:next-time (seconds 0.1)) (:next-launcher 1374)) - ) + :init-specs ((:fade-r -3.2) (:fade-g 1.0) (:fade-b 1.0) (:next-time (seconds 0.1)) (:next-launcher 1374))) (defpart 1374 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 1372 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.1) (meters 0.2)) - (:y (meters -0.1) (meters 0.2)) - (:z (meters -0.1) (meters 0.2)) - (:scale-x (meters 0.1) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.06666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g -2.1333334) - (:fade-a -1.4222223) - (:accel-y (meters -0.00066666666)) - (:friction 0.93) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.1)) - (:next-launcher 1373) - (:launchrot-x (degrees 0) (degrees 360)) - (:launchrot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.1) (meters 0.2)) + (:y (meters -0.1) (meters 0.2)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.06666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g -2.1333334) + (:fade-a -1.4222223) + (:accel-y (meters -0.00066666666)) + (:friction 0.93) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.1)) + (:next-launcher 1373) + (:launchrot-x (degrees 0) (degrees 360)) + (:launchrot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (deftype joint-mod-tracker (basic) - ((target-pos vector :inline) - (target-pos-func (function vector vector)) - (inv-forward-scale-factor float) - (forward-scale-control float) - (forward-scale-max float) - (process kermit) - (enable symbol) - (up-axis int8) - (forward-axis int8) - ) + ((target-pos vector :inline) + (target-pos-func (function vector vector)) + (inv-forward-scale-factor float) + (forward-scale-control float) + (forward-scale-max float) + (process kermit) + (enable symbol) + (up-axis int8) + (forward-axis int8)) (:methods - (new (symbol type kermit int function int int) _type_) - ) - ) - + (new (symbol type kermit int function int int) _type_))) (defmethod relocate ((this joint-mod-tracker) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defun build-matrix-from-up-and-forward-axes! ((arg0 matrix) (arg1 vector) (arg2 int) (arg3 vector) (arg4 int)) (let ((s1-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (let ((s3-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg3 1.0))) (vector-cross! s1-0 arg1 s3-0) (vector-normalize! s1-0 1.0) (vector-cross! s5-0 s3-0 s1-0) - (if (!= (mod (+ arg2 1) 3) arg4) - (vector-negate-in-place! s1-0) - ) + (if (!= (mod (+ arg2 1) 3) arg4) (vector-negate-in-place! s1-0)) (set! (-> arg0 vector 0 quad) (-> s1-0 quad)) (set! (-> arg0 vector 1 quad) (-> s1-0 quad)) (set! (-> arg0 vector 2 quad) (-> s1-0 quad)) - (set! (-> arg0 vector arg4 quad) (-> s3-0 quad)) - ) - (set! (-> arg0 vector arg2 quad) (-> s5-0 quad)) - ) + (set! (-> arg0 vector arg4 quad) (-> s3-0 quad))) + (set! (-> arg0 vector arg2 quad) (-> s5-0 quad))) (set! (-> arg0 vector 0 w) 0.0) (set! (-> arg0 vector 1 w) 0.0) (set! (-> arg0 vector 2 w) 0.0) (set! (-> arg0 vector 3 quad) (-> *null-vector* quad)) - arg0 - ) + arg0) (defun joint-mod-tracker-callback ((arg0 cspace) (arg1 transformq)) (let ((s4-0 (the-as joint-mod-tracker (-> arg0 param1)))) (cond ((-> s4-0 enable) - (let ((t9-0 (-> s4-0 target-pos-func))) - (if t9-0 - (t9-0 (-> s4-0 target-pos)) - ) - ) + (let ((t9-0 (-> s4-0 target-pos-func))) (if t9-0 (t9-0 (-> s4-0 target-pos)))) (let ((s3-0 (-> s4-0 target-pos)) - (s5-1 (vector-matrix*! (new 'stack-no-clear 'vector) (-> arg1 trans) (-> arg0 parent bone transform))) - ) + (s5-1 (vector-matrix*! (new 'stack-no-clear 'vector) (-> arg1 trans) (-> arg0 parent bone transform)))) (let* ((s2-1 (vector-! (new 'stack-no-clear 'vector) s3-0 s5-1)) - (f30-0 (vector-length s2-1)) - ) - (build-matrix-from-up-and-forward-axes! - (-> arg0 bone transform) - *y-vector* - (-> s4-0 up-axis) - s2-1 - (-> s4-0 forward-axis) - ) - (let ((f0-3 (fmin - (* f30-0 (-> s4-0 inv-forward-scale-factor) (-> s4-0 forward-scale-control)) - (-> s4-0 forward-scale-max) - ) - ) - (v1-10 (-> arg0 bone transform vector (-> s4-0 forward-axis))) - ) + (f30-0 (vector-length s2-1))) + (build-matrix-from-up-and-forward-axes! (-> arg0 bone transform) + *y-vector* + (-> s4-0 up-axis) + s2-1 + (-> s4-0 forward-axis)) + (let ((f0-3 (fmin (* f30-0 (-> s4-0 inv-forward-scale-factor) (-> s4-0 forward-scale-control)) (-> s4-0 forward-scale-max))) + (v1-10 (-> arg0 bone transform vector (-> s4-0 forward-axis)))) (vector-float*! v1-10 v1-10 f0-3) - (set! (-> v1-10 w) 0.0) - ) - ) - (set! (-> arg0 bone transform vector 3 quad) (-> s5-1 quad)) - ) - (set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0) - ) + (set! (-> v1-10 w) 0.0))) + (set! (-> arg0 bone transform vector 3 quad) (-> s5-1 quad))) + (set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)) (else - (set! (-> arg1 scale data (-> s4-0 forward-axis)) (-> s4-0 forward-scale-control)) - (cspace<-parented-transformq-joint! arg0 arg1) - ) - ) - ) - (none) - ) + (set! (-> arg1 scale data (-> s4-0 forward-axis)) (-> s4-0 forward-scale-control)) + (cspace<-parented-transformq-joint! arg0 arg1)))) + (none)) (defmethod new joint-mod-tracker ((allocation symbol) (type-to-make type) (arg0 kermit) (arg1 int) (arg2 function) (arg3 int) (arg4 int)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -490,79 +431,63 @@ (set! (-> v0-0 enable) #t) (let ((v1-5 (-> arg0 node-list data arg1))) (set! (-> v1-5 param0) joint-mod-tracker-callback) - (set! (-> v1-5 param1) v0-0) - ) - v0-0 - ) - ) + (set! (-> v1-5 param1) v0-0)) + v0-0)) (deftype kermit-pulse (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer kermit) :overlay-at parent) - (self-override kermit-pulse :overlay-at self) - (sound-id sound-id) - ) + ((root collide-shape-moving :override) + (parent-override (pointer kermit) :overlay-at parent) + (self-override kermit-pulse :overlay-at self) + (sound-id sound-id)) (:states - kermit-pulse-idle - kermit-pulse-impact - ) - ) - + kermit-pulse-idle + kermit-pulse-impact)) (defstate kermit-pulse-idle (kermit-pulse) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (send-event proc 'attack (-> block param 0) (new 'static 'attack-info)) - (go kermit-pulse-impact) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - ) - :code (behavior () - (while (not (time-elapsed? (-> self state-time) (seconds 4))) - (sound-play "kermit-loop" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) - (spawn (-> self part) (-> self root trans)) - (find-ground-and-draw-shadow - (-> self root trans) - (the-as vector #f) - 8192.0 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - (suspend) - ) - (cleanup-for-death self) - ) - :post (behavior () - (update-transforms! (-> self root)) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) (send-event proc 'attack (-> block param 0) (new 'static 'attack-info)) (go kermit-pulse-impact)))) + :enter + (behavior () + (set-time! (-> self state-time))) + :exit + (behavior () + (sound-stop (-> self sound-id))) + :code + (behavior () + (while (not (time-elapsed? (-> self state-time) (seconds 4))) + (sound-play "kermit-loop" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) + (spawn (-> self part) (-> self root trans)) + (find-ground-and-draw-shadow (-> self root trans) + (the-as vector #f) + 8192.0 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0) + (suspend)) + (cleanup-for-death self)) + :post + (behavior () + (update-transforms! (-> self root)))) (defstate kermit-pulse-impact (kermit-pulse) - :code (behavior () - (sound-play "get-shocked") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 301) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (sound-play "get-shocked") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 301) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (cleanup-for-death self))) (defbehavior kermit-pulse-init-by-other kermit-pulse ((arg0 vector) (arg1 entity-actor)) (logclear! (-> self mask) (process-mask enemy attackable)) @@ -571,21 +496,17 @@ (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 quad)) (set! (-> self root quat vec quad) (-> self parent-override 0 collide-info quat vec quad)) (vector-identity! (-> self root scale)) @@ -593,130 +514,100 @@ (set! (-> self sound-id) (new-sound-id)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 300) self)) (go kermit-pulse-idle) - (none) - ) + (none)) (defun spawn-kermit-pulse ((arg0 kermit) (arg1 vector) (arg2 entity)) (process-spawn kermit-pulse arg1 arg2 :to arg0) 0 - (none) - ) + (none)) (deftype kermit (nav-enemy) - ((child-override (pointer kermit-pulse) :overlay-at child) - (rotate-dir vector :inline) - (charging-part sparticle-launch-control) - (airborne symbol) - (tongue-control joint-mod-tracker) - (tongue-pulse-pos float) - (miss-count int8) - (charged-up symbol) - (sound-id sound-id) - ) + ((child-override (pointer kermit-pulse) :overlay-at child) + (rotate-dir vector :inline) + (charging-part sparticle-launch-control) + (airborne symbol) + (tongue-control joint-mod-tracker) + (tongue-pulse-pos float) + (miss-count int8) + (charged-up symbol) + (sound-id sound-id)) (:states - kermit-attack - kermit-chase - kermit-chase-new-position - kermit-give-up - kermit-idle - kermit-notice - kermit-patrol - kermit-retract-tongue - kermit-tongue-stuck - ) - ) - + kermit-attack + kermit-chase + kermit-chase-new-position + kermit-give-up + kermit-idle + kermit-notice + kermit-patrol + kermit-retract-tongue + kermit-tongue-stuck)) (defmethod relocate ((this kermit) (arg0 int)) - (if (nonzero? (-> this tongue-control)) - (&+! (-> this tongue-control) arg0) - ) - (if (nonzero? (-> this charging-part)) - (&+! (-> this charging-part) arg0) - ) - (the-as kermit ((method-of-type nav-enemy relocate) this arg0)) - ) + (if (nonzero? (-> this tongue-control)) (&+! (-> this tongue-control) arg0)) + (if (nonzero? (-> this charging-part)) (&+! (-> this charging-part) arg0)) + (the-as kermit ((method-of-type nav-enemy relocate) this arg0))) (defmethod deactivate ((this kermit)) - (if (nonzero? (-> this charging-part)) - (kill-and-free-particles (-> this charging-part)) - ) + (if (nonzero? (-> this charging-part)) (kill-and-free-particles (-> this charging-part))) ((method-of-type nav-enemy deactivate) this) - (none) - ) + (none)) -(defskelgroup *kermit-sg* kermit kermit-lod0-jg kermit-idle-ja - ((kermit-lod0-mg (meters 20)) (kermit-lod1-mg (meters 40)) (kermit-lod2-mg (meters 999999))) - :bounds (static-spherem 0 -1 0 3) - :longest-edge (meters 2) - ) +(defskelgroup *kermit-sg* + kermit + kermit-lod0-jg + kermit-idle-ja + ((kermit-lod0-mg (meters 20)) (kermit-lod1-mg (meters 40)) (kermit-lod2-mg (meters 999999))) + :bounds (static-spherem 0 -1 0 3) + :longest-edge (meters 2)) (defbehavior kermit-enable-tongue kermit () (set! (-> self tongue-control enable) #t) (set! (-> self draw bounds w) 81920.0) 0 - (none) - ) + (none)) (defbehavior kermit-disable-tongue kermit () (set! (-> self tongue-control enable) #f) (set! (-> self draw bounds w) 12288.0) 0 - (none) - ) + (none)) (defun kermit-tongue-pos ((arg0 kermit)) - (-> arg0 node-list data 24 bone transform vector 3) - ) + (-> arg0 node-list data 24 bone transform vector 3)) (defun kermit-get-head-dir-xz ((arg0 kermit) (arg1 vector)) (set! (-> arg1 quad) (-> arg0 node-list data 8 bone transform vector 2 quad)) (set! (-> arg1 y) 0.0) - (vector-xz-normalize! arg1 1.0) - ) + (vector-xz-normalize! arg1 1.0)) (defun kermit-get-head-dir ((arg0 kermit) (arg1 vector)) (set! (-> arg1 quad) (-> arg0 node-list data 8 bone transform vector 2 quad)) - (vector-normalize! arg1 1.0) - ) + (vector-normalize! arg1 1.0)) (defun kermit-player-target-pos () - (target-pos 26) - ) + (target-pos 26)) (defun kermit-get-tongue-target-callback ((arg0 vector)) (set! (-> arg0 quad) (-> (kermit-player-target-pos) quad)) - arg0 - ) + arg0) (defbehavior kermit-check-tongue-is-clear? kermit () (let* ((gp-0 (kermit-tongue-pos self)) (v1-1 (-> self tongue-control target-pos)) (s5-1 (vector-! (new 'stack-no-clear 'vector) v1-1 gp-0)) (t2-0 (new 'stack 'collide-tri-result)) - (f30-0 - (fill-and-probe-using-line-sphere - *collide-cache* - gp-0 - s5-1 - 409.6 - (collide-kind background cak-2 crate enemy wall-object projectile ground-object) - self - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - (gp-1 (< f30-0 0.0)) - ) + (f30-0 (fill-and-probe-using-line-sphere *collide-cache* + gp-0 + s5-1 + 409.6 + (collide-kind background cak-2 crate enemy wall-object projectile ground-object) + self + t2-0 + (new 'static 'pat-surface :noentity #x1))) + (gp-1 (< f30-0 0.0))) (set! (-> self tongue-control forward-scale-max) - (if gp-1 - 2.0 - (* (vector-length s5-1) f30-0 (-> self tongue-control inv-forward-scale-factor)) - ) - ) - gp-1 - ) - ) + (if gp-1 2.0 (* (vector-length s5-1) f30-0 (-> self tongue-control inv-forward-scale-factor)))) + gp-1)) (defbehavior kermit-check-to-hit-player? kermit ((arg0 float)) (let* ((s5-0 (kermit-tongue-pos self)) @@ -726,112 +617,69 @@ (s5-1 (new 'stack-no-clear 'vector)) (f0-0 f30-0) (s5-2 (vector-float*! s5-1 s4-1 (/ 1.0 f0-0))) - (v0-5 (>= (vector-dot (kermit-get-head-dir-xz self (new 'stack-no-clear 'vector)) s5-2) (cos arg0))) - ) - (and (< f30-0 49152.0) v0-5) - ) - ) + (v0-5 (>= (vector-dot (kermit-get-head-dir-xz self (new 'stack-no-clear 'vector)) s5-2) (cos arg0)))) + (and (< f30-0 49152.0) v0-5))) (defbehavior kermit-set-nav-mesh-target kermit ((arg0 vector)) (let* ((gp-0 (target-pos 0)) - (s5-1 (vector-! (new 'stack-no-clear 'vector) arg0 gp-0)) - ) + (s5-1 (vector-! (new 'stack-no-clear 'vector) arg0 gp-0))) (vector-length s5-1) (let* ((a0-4 (vector-normalize-copy! (new 'stack-no-clear 'vector) s5-1 40960.0)) (v1-2 (vector+! (new 'stack-no-clear 'vector) gp-0 a0-4)) - (v0-3 (-> self nav target-pos)) - ) + (v0-3 (-> self nav target-pos))) (set! (-> v0-3 quad) (-> v1-2 quad)) - v0-3 - ) - ) - ) + v0-3))) (defbehavior kermit-short-hop kermit () (ja-no-eval :group! kermit-hop-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (let ((f0-4 (ja-aframe-num 0))) - (if (>= f0-4 4.0) - (set! (-> self airborne) #t) - ) - (if (>= f0-4 14.0) - (set! (-> self airborne) #f) - ) - ) + (if (>= f0-4 4.0) (set! (-> self airborne) #t)) + (if (>= f0-4 14.0) (set! (-> self airborne) #f))) (suspend) - (ja :num! (seek!)) - ) - #f - ) + (ja :num! (seek!))) + #f) (defbehavior kermit-long-hop kermit () (ja-no-eval :group! kermit-longhop-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (let ((f0-4 (ja-aframe-num 0))) - (if (>= f0-4 7.0) - (set! (-> self airborne) #t) - ) - (if (>= f0-4 29.0) - (set! (-> self airborne) #f) - ) - ) + (if (>= f0-4 7.0) (set! (-> self airborne) #t)) + (if (>= f0-4 29.0) (set! (-> self airborne) #f))) (suspend) - (ja :num! (seek!)) - ) - #f - ) + (ja :num! (seek!))) + #f) (defbehavior kermit-hop kermit ((arg0 float)) (ja-channel-push! 1 (seconds 0.1)) (set! (-> self rotate-speed) 1820444.5) (let ((f0-2 (fmin arg0 (vector-vector-distance (-> self collide-info trans) (-> self nav target-pos))))) (cond - ((< 16384.0 f0-2) - (set! (-> self target-speed) (* 0.045454547 (-> *display* frames-per-second) f0-2)) - (kermit-long-hop) - ) - (else - (set! (-> self target-speed) (* 0.1 (-> *display* frames-per-second) f0-2)) - (kermit-short-hop) - ) - ) - ) + ((< 16384.0 f0-2) (set! (-> self target-speed) (* 0.045454547 (-> *display* frames-per-second) f0-2)) (kermit-long-hop)) + (else (set! (-> self target-speed) (* 0.1 (-> *display* frames-per-second) f0-2)) (kermit-short-hop)))) (set! (-> self airborne) #f) - #f - ) + #f) (defbehavior kermit-set-rotate-dir-to-nav-target kermit () (cond ((logtest? (nav-control-flags navcf19) (-> self nav flags)) - (vector-! (-> self rotate-dir) (-> self nav target-pos) (-> self collide-info trans)) - ) - (else - (let ((v0-1 (-> self rotate-dir))) - (set! (-> v0-1 quad) (-> self nav travel quad)) - v0-1 - ) - ) - ) - ) + (vector-! (-> self rotate-dir) (-> self nav target-pos) (-> self collide-info trans))) + (else (let ((v0-1 (-> self rotate-dir))) (set! (-> v0-1 quad) (-> self nav travel quad)) v0-1)))) (defbehavior kermit-set-rotate-dir-to-player kermit () - (vector-! (-> self rotate-dir) (target-pos 0) (-> self nav target-pos)) - ) + (vector-! (-> self rotate-dir) (target-pos 0) (-> self nav target-pos))) nav-enemy-default-event-handler (defmethod common-post ((this kermit)) (call-parent-method this) - (when (-> this charged-up) - ) + (when (-> this charged-up)) 0 - (none) - ) + (none)) (defbehavior kermit-simple-post kermit () (nav-enemy-simple-post) - (none) - ) + (none)) (defbehavior kermit-post kermit () (cond @@ -840,474 +688,341 @@ nav-enemy-default-event-handler (set! (-> self collide-info transv x) (-> self nav travel x)) (set! (-> self collide-info transv y) 0.0) (set! (-> self collide-info transv z) (-> self nav travel z)) - (let ((f0-5 - (fmin - (-> self target-speed) - (* (vector-xz-length (-> self collide-info transv)) (-> *display* frames-per-second)) - ) - ) - ) - (vector-xz-normalize! (-> self collide-info transv) f0-5) - ) + (let ((f0-5 (fmin (-> self target-speed) (* (vector-xz-length (-> self collide-info transv)) (-> *display* frames-per-second))))) + (vector-xz-normalize! (-> self collide-info transv) f0-5)) (seek-toward-heading-vec! (-> self collide-info) (-> self rotate-dir) (-> self rotate-speed) (seconds 0.05)) - (vector-v++! - (-> self collide-info transv) - (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (nav-enemy-common-post) - ) - (else - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (kermit-simple-post) - ) - ) - (none) - ) + (vector-v++! (-> self collide-info transv) (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0)) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (nav-enemy-common-post)) + (else (set! (-> self collide-info transv quad) (-> *null-vector* quad)) (kermit-simple-post))) + (none)) (defbehavior kermit-get-new-patrol-point kermit () (nav-enemy-get-new-patrol-point) - (let ((v0-1 (-> self nav target-pos))) - (set! (-> v0-1 quad) (-> self nav destination-pos quad)) - v0-1 - ) - ) + (let ((v0-1 (-> self nav target-pos))) (set! (-> v0-1 quad) (-> self nav destination-pos quad)) v0-1)) (defstate kermit-idle (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set! (-> self notice-time) 0) - 0 - ) - :trans (behavior () - (if (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go kermit-patrol) - ) - ) - :code (behavior () - (kermit-disable-tongue) - (ja :group! kermit-idle-ja :num! min) - (loop - (ja :num! (loop!)) - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (set! (-> self notice-time) 0) + 0) + :trans + (behavior () + (if (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go kermit-patrol))) + :code + (behavior () + (kermit-disable-tongue) + (ja :group! kermit-idle-ja :num! min) + (loop + (ja :num! (loop!)) + (suspend))) + :post ja-post) (defstate kermit-patrol (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) - (kermit-get-new-patrol-point) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - ) - :trans (behavior () - (if (and (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (seconds 1)) - ) - (go kermit-idle) - ) - (kermit-set-rotate-dir-to-nav-target) - (if (and (not (-> self airborne)) (nav-enemy-test-point-in-nav-mesh? (target-pos 0))) - (go kermit-notice) - ) - (if (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (kermit-get-new-patrol-point) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! kermit-idle-ja :num! (seek! max 3.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 3.0)) - ) - (kermit-hop 20480.0) - ) - ) - :post kermit-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) + (kermit-get-new-patrol-point) + (nav-control-method-11 (-> self nav) (-> self nav target-pos))) + :trans + (behavior () + (if (and (or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (seconds 1))) + (go kermit-idle)) + (kermit-set-rotate-dir-to-nav-target) + (if (and (not (-> self airborne)) (nav-enemy-test-point-in-nav-mesh? (target-pos 0))) (go kermit-notice)) + (if (logtest? (nav-control-flags navcf19) (-> self nav flags)) (kermit-get-new-patrol-point))) + :code + (behavior () + (loop + (ja-no-eval :group! kermit-idle-ja :num! (seek! max 3.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 3.0))) + (kermit-hop 20480.0))) + :post kermit-post) (defstate kermit-notice (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) - ) - :trans (behavior () - (kermit-set-rotate-dir-to-player) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) - (kermit-hop 0.0) - (go kermit-chase) - ) - :post kermit-post - ) + :enter + (behavior () + (set-mode! (-> self neck) (joint-mod-handler-mode look-at))) + :trans + (behavior () + (kermit-set-rotate-dir-to-player)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) + (kermit-hop 0.0) + (go kermit-chase)) + :post kermit-post) (defstate kermit-give-up (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) - ) - :code (behavior () - (go kermit-patrol) - ) - :post kermit-simple-post - ) + :enter + (behavior () + (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend))) + :code + (behavior () + (go kermit-patrol)) + :post kermit-simple-post) (defstate kermit-chase-new-position (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self miss-count) 0) - (let* ((a1-1 (kermit-get-head-dir-xz self (new 'stack-no-clear 'vector))) - (gp-0 (vector-rotate-around-y! (new 'stack-no-clear 'vector) a1-1 16384.0)) - (s5-0 (new 'stack-no-clear 'vector)) - (v1-2 #f) - ) - (let ((s4-0 0)) - (while (and (not v1-2) (< s4-0 4)) - (let ((f0-0 (rand-vu-float-range -40960.0 40960.0))) - (vector+*! s5-0 (-> self collide-info trans) gp-0 f0-0) - ) - (kermit-set-nav-mesh-target s5-0) - (set! v1-2 (nav-enemy-test-point-in-nav-mesh? (-> self nav target-pos))) - (+! s4-0 1) - ) - ) - (if (not v1-2) - (kermit-set-nav-mesh-target (-> self collide-info trans)) - ) - ) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - ) - :trans (behavior () - (when (not (-> self airborne)) - (if (or (time-elapsed? (-> self state-time) (seconds 3)) - (and (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (time-elapsed? (-> self state-time) (seconds 0.5)) - ) - ) - (go kermit-chase) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.17)) - (dotimes (gp-0 3) - (ja-no-eval :group! kermit-idle-ja :num! (seek! max 4.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 4.0)) - ) - ) - (loop - (kermit-hop 81920.0) - (nop!) - ) - ) - :post kermit-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self miss-count) 0) + (let* ((a1-1 (kermit-get-head-dir-xz self (new 'stack-no-clear 'vector))) + (gp-0 (vector-rotate-around-y! (new 'stack-no-clear 'vector) a1-1 16384.0)) + (s5-0 (new 'stack-no-clear 'vector)) + (v1-2 #f)) + (let ((s4-0 0)) + (while (and (not v1-2) (< s4-0 4)) + (let ((f0-0 (rand-vu-float-range -40960.0 40960.0))) (vector+*! s5-0 (-> self collide-info trans) gp-0 f0-0)) + (kermit-set-nav-mesh-target s5-0) + (set! v1-2 (nav-enemy-test-point-in-nav-mesh? (-> self nav target-pos))) + (+! s4-0 1))) + (if (not v1-2) (kermit-set-nav-mesh-target (-> self collide-info trans)))) + (nav-control-method-11 (-> self nav) (-> self nav target-pos))) + :trans + (behavior () + (when (not (-> self airborne)) + (if (or (time-elapsed? (-> self state-time) (seconds 3)) + (and (logtest? (nav-control-flags navcf19) (-> self nav flags)) (time-elapsed? (-> self state-time) (seconds 0.5)))) + (go kermit-chase)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.17)) + (dotimes (gp-0 3) + (ja-no-eval :group! kermit-idle-ja :num! (seek! max 4.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 4.0)))) + (loop + (kermit-hop 81920.0) + (nop!))) + :post kermit-post) (defstate kermit-chase (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) - (kermit-set-nav-mesh-target (-> self collide-info trans)) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - ) - :trans (behavior () - (kermit-set-nav-mesh-target (-> self collide-info trans)) - (kermit-set-rotate-dir-to-player) - (if (nav-enemy-test-point-in-nav-mesh? (target-pos 0)) - (set-time! (-> self state-time)) - ) - (kermit-tongue-pos self) - (let ((v1-5 (kermit-player-target-pos))) - (set! (-> self tongue-control target-pos quad) (-> v1-5 quad)) - ) - (when (not (-> self airborne)) - (if (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go kermit-patrol) - ) - (let ((gp-1 (kermit-check-to-hit-player? 3640.889)) - (v1-17 (kermit-check-tongue-is-clear?)) - ) - (when gp-1 - (if v1-17 - (go kermit-attack) - (go kermit-chase-new-position) - ) - ) - ) - (if (time-elapsed? (-> self state-time) (seconds 3)) - (go kermit-give-up) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.17)) - (loop - (ja-no-eval :group! kermit-idle-ja :num! (seek! max 3.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 3.0)) - ) - (if (not (kermit-check-to-hit-player? 3640.889)) - (kermit-hop 81920.0) - ) - ) - ) - :post kermit-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) + (kermit-set-nav-mesh-target (-> self collide-info trans)) + (nav-control-method-11 (-> self nav) (-> self nav target-pos))) + :trans + (behavior () + (kermit-set-nav-mesh-target (-> self collide-info trans)) + (kermit-set-rotate-dir-to-player) + (if (nav-enemy-test-point-in-nav-mesh? (target-pos 0)) (set-time! (-> self state-time))) + (kermit-tongue-pos self) + (let ((v1-5 (kermit-player-target-pos))) (set! (-> self tongue-control target-pos quad) (-> v1-5 quad))) + (when (not (-> self airborne)) + (if (or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go kermit-patrol)) + (let ((gp-1 (kermit-check-to-hit-player? 3640.889)) + (v1-17 (kermit-check-tongue-is-clear?))) + (when gp-1 + (if v1-17 (go kermit-attack) (go kermit-chase-new-position)))) + (if (time-elapsed? (-> self state-time) (seconds 3)) (go kermit-give-up)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.17)) + (loop + (ja-no-eval :group! kermit-idle-ja :num! (seek! max 3.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 3.0))) + (if (not (kermit-check-to-hit-player? 3640.889)) (kermit-hop 81920.0)))) + :post kermit-post) (defstate kermit-attack (kermit) :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.17)) - (set! (-> self tongue-control forward-scale-control) 0.0) - (kermit-enable-tongue) - (let ((s5-0 #f) - (gp-0 #f) - ) - (let ((f30-0 1.0)) - (ja-no-eval :group! kermit-lash-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (set! (-> self tongue-control target-pos quad) (-> (kermit-player-target-pos) quad)) - (when (and (not s5-0) (>= (ja-aframe-num 0) 14.0)) - (set! s5-0 #t) - (set! gp-0 (kermit-check-to-hit-player? 3640.889)) - (if (not gp-0) - (set! f30-0 0.8) - ) - ) - (when s5-0 - (if (and (not gp-0) (= (-> self tongue-control forward-scale-control) f30-0)) - (go kermit-retract-tongue) - ) - (seek! (-> self tongue-control forward-scale-control) f30-0 0.25) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (cond - (gp-0 - (level-hint-spawn - (text-id swamp-kermit-tongue-hint) - "sksp0143" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn (text-id swamp-kermit-flee) "sksp0151" (the-as entity #f) *entity-pool* (game-task none)) - (go kermit-tongue-stuck) - ) - (else - (go kermit-retract-tongue) - ) - ) - ) - ) - :post kermit-simple-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.17)) + (set! (-> self tongue-control forward-scale-control) 0.0) + (kermit-enable-tongue) + (let ((s5-0 #f) + (gp-0 #f)) + (let ((f30-0 1.0)) + (ja-no-eval :group! kermit-lash-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self tongue-control target-pos quad) (-> (kermit-player-target-pos) quad)) + (when (and (not s5-0) (>= (ja-aframe-num 0) 14.0)) + (set! s5-0 #t) + (set! gp-0 (kermit-check-to-hit-player? 3640.889)) + (if (not gp-0) (set! f30-0 0.8))) + (when s5-0 + (if (and (not gp-0) (= (-> self tongue-control forward-scale-control) f30-0)) (go kermit-retract-tongue)) + (seek! (-> self tongue-control forward-scale-control) f30-0 0.25)) + (suspend) + (ja :num! (seek!)))) + (cond + (gp-0 + (level-hint-spawn (text-id swamp-kermit-tongue-hint) "sksp0143" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id swamp-kermit-flee) "sksp0151" (the-as entity #f) *entity-pool* (game-task none)) + (go kermit-tongue-stuck)) + (else (go kermit-retract-tongue))))) + :post kermit-simple-post) (defstate kermit-tongue-stuck (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set! (-> self miss-count) 0) - (set! (-> self tongue-control forward-scale-control) 1.0) - (kermit-enable-tongue) - (set! (-> self tongue-pulse-pos) 0.0) - (spawn-kermit-pulse self (kermit-tongue-pos self) (-> self entity)) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - (let ((v1-0 (-> self child-override))) - (if v1-0 - (deactivate (-> v1-0 0)) - ) - ) - ) - :trans (behavior () - (let ((s5-0 (kermit-player-target-pos)) - (gp-0 (kermit-tongue-pos self)) - ) - (if (or (< 73728.0 (vector-vector-distance s5-0 gp-0)) - (or (not (kermit-check-tongue-is-clear?)) (not (-> self child-override))) - ) - (go kermit-retract-tongue) - ) - (seek! (-> self tongue-pulse-pos) 1.0 (* 0.3 (seconds-per-frame))) - (when (and (-> self child-override) (let ((v1-9 (-> self child-override))) - (= (-> (if v1-9 - (-> v1-9 0 self-override) - ) - type - ) - kermit-pulse - ) - ) - ) - (let* ((v1-13 (-> self child-override)) - (s4-0 (if v1-13 - (-> v1-13 0 self-override) - ) - ) - (v1-15 (vector-lerp! (new 'stack-no-clear 'vector) gp-0 s5-0 (-> self tongue-pulse-pos))) - ) - (set! (-> s4-0 root trans quad) (-> v1-15 quad)) - ) - ) - (send-event *target* 'tongue gp-0) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (loop - (ja-no-eval :group! kermit-turn-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (sound-play "kermit-stretch" :id (-> self sound-id) :position (the-as symbol (-> self collide-info trans))) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post (behavior () - (seek-to-point-toward-point! (-> self collide-info) (target-pos 0) (-> self rotate-speed) (seconds 0.05)) - (kermit-simple-post) - ) - ) + :enter + (behavior () + (set! (-> self miss-count) 0) + (set! (-> self tongue-control forward-scale-control) 1.0) + (kermit-enable-tongue) + (set! (-> self tongue-pulse-pos) 0.0) + (spawn-kermit-pulse self (kermit-tongue-pos self) (-> self entity))) + :exit + (behavior () + (sound-stop (-> self sound-id)) + (let ((v1-0 (-> self child-override))) (if v1-0 (deactivate (-> v1-0 0))))) + :trans + (behavior () + (let ((s5-0 (kermit-player-target-pos)) + (gp-0 (kermit-tongue-pos self))) + (if (or (< 73728.0 (vector-vector-distance s5-0 gp-0)) + (or (not (kermit-check-tongue-is-clear?)) (not (-> self child-override)))) + (go kermit-retract-tongue)) + (seek! (-> self tongue-pulse-pos) 1.0 (* 0.3 (seconds-per-frame))) + (when (and (-> self child-override) + (let ((v1-9 (-> self child-override))) (= (-> (if v1-9 (-> v1-9 0 self-override)) type) kermit-pulse))) + (let* ((v1-13 (-> self child-override)) + (s4-0 (if v1-13 (-> v1-13 0 self-override))) + (v1-15 (vector-lerp! (new 'stack-no-clear 'vector) gp-0 s5-0 (-> self tongue-pulse-pos)))) + (set! (-> s4-0 root trans quad) (-> v1-15 quad)))) + (send-event *target* 'tongue gp-0))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (loop + (ja-no-eval :group! kermit-turn-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (sound-play "kermit-stretch" :id (-> self sound-id) :position (the-as symbol (-> self collide-info trans))) + (suspend) + (ja :num! (seek!))))) + :post + (behavior () + (seek-to-point-toward-point! (-> self collide-info) (target-pos 0) (-> self rotate-speed) (seconds 0.05)) + (kermit-simple-post))) (defstate kermit-retract-tongue (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self charged-up) #f) - (+! (-> self miss-count) 1) - ) - :exit (behavior () - (set! (-> self tongue-control forward-scale-control) 0.0) - (kermit-disable-tongue) - ) - :trans (behavior () - (kermit-set-nav-mesh-target (-> self collide-info trans)) - (kermit-set-rotate-dir-to-player) - (when (not (-> self airborne)) - (when (time-elapsed? (-> self state-time) (seconds 2.5)) - (kill-and-free-particles (-> self charging-part)) - (set! (-> self charged-up) #t) - (go kermit-chase) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! kermit-miss-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (>= (ja-aframe-num 0) 3.0) - (seek! (-> self tongue-control forward-scale-control) 0.0 0.125) - ) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self tongue-control forward-scale-control) 0.0) - (kermit-disable-tongue) - (loop + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self charged-up) #f) + (+! (-> self miss-count) 1)) + :exit + (behavior () + (set! (-> self tongue-control forward-scale-control) 0.0) + (kermit-disable-tongue)) + :trans + (behavior () + (kermit-set-nav-mesh-target (-> self collide-info trans)) + (kermit-set-rotate-dir-to-player) + (when (not (-> self airborne)) + (when (time-elapsed? (-> self state-time) (seconds 2.5)) + (kill-and-free-particles (-> self charging-part)) + (set! (-> self charged-up) #t) + (go kermit-chase)))) + :code + (behavior () (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! kermit-idle-ja :num! (seek! max 4.0) :frame-num 0.0) + (ja-no-eval :group! kermit-miss-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (if (>= (ja-aframe-num 0) 3.0) (seek! (-> self tongue-control forward-scale-control) 0.0 0.125)) (suspend) - (ja :num! (seek! max 4.0)) - ) - (kermit-hop 0.0) - ) - ) - :post kermit-post - ) - -(define *kermit-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 4 - :walk-anim -1 - :turn-anim -1 - :notice-anim -1 - :run-anim -1 - :jump-anim 6 - :jump-land-anim -1 - :victory-anim -1 - :taunt-anim -1 - :die-anim 11 - :neck-joint 8 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 10000) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.05) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 10000) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.05) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 10) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #f - :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 (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + (ja :num! (seek!))) + (set! (-> self tongue-control forward-scale-control) 0.0) + (kermit-disable-tongue) + (loop + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! kermit-idle-ja :num! (seek! max 4.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 4.0))) + (kermit-hop 0.0))) + :post kermit-post) + +(define *kermit-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 4 + :walk-anim -1 + :turn-anim -1 + :notice-anim -1 + :run-anim -1 + :jump-anim 6 + :jump-land-anim -1 + :victory-anim -1 + :taunt-anim -1 + :die-anim 11 + :neck-joint 8 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 10000) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.05) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 10000) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.05) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 10) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #f + :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 (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this kermit) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (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 1) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -1321,13 +1036,10 @@ nav-enemy-default-event-handler (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3072.0) - (append-prim s3-0 s2-0) - ) - ) + (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! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *kermit-sg* '()) (set! (-> this draw origin-joint-index) (the-as uint 3)) @@ -1340,12 +1052,8 @@ nav-enemy-default-event-handler (set! (-> this neck max-dist) 102400.0) (set! (-> this neck ignore-angle) 16384.0) (set! (-> this miss-count) 0) - (set! (-> this tongue-control) - (new 'process 'joint-mod-tracker this 24 kermit-get-tongue-target-callback 1 2) - ) - (let ((f0-16 49152.0)) - (set! (-> this tongue-control inv-forward-scale-factor) (/ 1.0 f0-16)) - ) + (set! (-> this tongue-control) (new 'process 'joint-mod-tracker this 24 kermit-get-tongue-target-callback 1 2)) + (let ((f0-16 49152.0)) (set! (-> this tongue-control inv-forward-scale-factor) (/ 1.0 f0-16))) (set! (-> this tongue-control forward-scale-control) 0.0) (set! (-> this tongue-control forward-scale-max) 2.0) (set! (-> this tongue-control enable) #f) @@ -1354,5 +1062,4 @@ nav-enemy-default-event-handler (set! (-> this charging-part) (create-launch-control (-> *part-group-id-table* 298) this)) (set! (-> this sound-id) (new-sound-id)) (go kermit-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/swamp/swamp-bat.gc b/goal_src/jak1/levels/swamp/swamp-bat.gc index 3f7b463d86..7633b8d10a 100644 --- a/goal_src/jak1/levels/swamp/swamp-bat.gc +++ b/goal_src/jak1/levels/swamp/swamp-bat.gc @@ -1,123 +1,86 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/util/sync-info.gc") (require "engine/common-obs/nav-enemy.gc") (require "engine/geometry/vol.gc") - -;; name: swamp-bat.gc -;; name in dgo: swamp-bat -;; dgos: L1, SWA - (declare-type swamp-bat-slave process-drawable) + (declare-type swamp-bat process-drawable) ;; DECOMP BEGINS (deftype swamp-bat-idle-path (structure) - ((origin vector :inline) - (x-axis vector :inline) - (y-axis vector :inline) - ) + ((origin vector :inline) + (x-axis vector :inline) + (y-axis vector :inline)) (:methods - (swamp-bat-idle-path-method-9 (_type_ vector float) vector) - ) - ) - + (swamp-bat-idle-path-method-9 (_type_ vector float) vector))) (defmethod swamp-bat-idle-path-method-9 ((this swamp-bat-idle-path) (arg0 vector) (arg1 float)) (let ((f30-0 (* 65536.0 arg1))) (set! (-> arg0 quad) (-> this origin quad)) (vector+*! arg0 arg0 (-> this x-axis) (cos f30-0)) - (vector+*! arg0 arg0 (-> this y-axis) (sin f30-0)) - ) - arg0 - ) + (vector+*! arg0 arg0 (-> this y-axis) (sin f30-0))) + arg0) (deftype swamp-bat (process-drawable) - ((root collide-shape :override) - (fact fact-info-enemy :override) - (child-process (pointer swamp-bat-slave) :overlay-at child) - (path-origin vector :inline) - (idle-position-angle float 8) - (path-select-plane plane 2 :inline) - (path-list curve-control 2) - (path-select int8) - (slave-count int8) - (path-count int8) - ) + ((root collide-shape :override) + (fact fact-info-enemy :override) + (child-process (pointer swamp-bat-slave) :overlay-at child) + (path-origin vector :inline) + (idle-position-angle float 8) + (path-select-plane plane 2 :inline) + (path-list curve-control 2) + (path-select int8) + (slave-count int8) + (path-count int8)) (:states - swamp-bat-idle - swamp-bat-launch-slaves - ) - ) - + swamp-bat-idle + swamp-bat-launch-slaves)) (defmethod relocate ((this swamp-bat) (arg0 int)) (dotimes (v1-0 2) - (if (nonzero? (-> this path-list v1-0)) - (&+! (-> this path-list v1-0) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this path-list v1-0)) (&+! (-> this path-list v1-0) arg0))) + (call-parent-method this arg0)) (deftype swamp-bat-slave (process-drawable) - ((root collide-shape-moving :override) - (parent-process (pointer swamp-bat) :overlay-at parent) - (sync sync-info :inline) - (idle-anim-speed float) - (strafe-envelope float) - (strafe-distance float) - (path-point-count float) - (idle-path swamp-bat-idle-path :inline) - (idle-position vector :inline) - (idle-position-index int8) - (path-select int8) - (launch-ready symbol) - ) + ((root collide-shape-moving :override) + (parent-process (pointer swamp-bat) :overlay-at parent) + (sync sync-info :inline) + (idle-anim-speed float) + (strafe-envelope float) + (strafe-distance float) + (path-point-count float) + (idle-path swamp-bat-idle-path :inline) + (idle-position vector :inline) + (idle-position-index int8) + (path-select int8) + (launch-ready symbol)) (:methods - (swamp-bat-slave-method-20 (_type_) float) - ) - (:states - (swamp-bat-slave-die handle) - swamp-bat-slave-idle - swamp-bat-slave-launch - swamp-bat-slave-return - swamp-bat-slave-strafe - swamp-bat-slave-swoop - ) - ) - + (swamp-bat-slave-method-20 (_type_) float)) + (:states (swamp-bat-slave-die handle) + swamp-bat-slave-idle + swamp-bat-slave-launch + swamp-bat-slave-return + swamp-bat-slave-strafe + swamp-bat-slave-swoop)) (defbehavior swamp-bat-slave-event-handler swamp-bat-slave ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (logclear! (-> self mask) (process-mask actor-pause)) - (go swamp-bat-slave-die (process->handle arg0)) - ) + (('attack) (logclear! (-> self mask) (process-mask actor-pause)) (go swamp-bat-slave-die (process->handle arg0))) (('touch) (level-hint-spawn (text-id swamp-bat-duck-hint) "sksp0156" (the-as entity #f) *entity-pool* (game-task none)) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) - (('launch) - (if (-> self launch-ready) - (go swamp-bat-slave-launch) - ) - ) - ) - ) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))) + (('launch) (if (-> self launch-ready) (go swamp-bat-slave-launch))))) swamp-bat-slave-event-handler (defbehavior swamp-bat-slave-post swamp-bat-slave () - (transform-post) - ) + (transform-post)) (defmethod swamp-bat-slave-method-20 ((this swamp-bat-slave)) - (* (get-current-phase (-> this sync)) (-> this path-point-count)) - ) + (* (get-current-phase (-> this sync)) (-> this path-point-count))) (defbehavior swamp-bat-slave-path-post swamp-bat-slave () (let ((s2-0 (-> self parent-process 0 path-list (-> self path-select))) @@ -125,31 +88,25 @@ swamp-bat-slave-event-handler (gp-0 (new-stack-vector0)) (s4-0 (new-stack-vector0)) (f30-0 (swamp-bat-slave-method-20 self)) - (s3-0 (new 'static 'vector :y 1.0 :w 1.0)) - ) + (s3-0 (new 'static 'vector :y 1.0 :w 1.0))) (eval-path-curve-div! s2-0 s5-0 f30-0 'interp) (path-control-method-12 s2-0 gp-0 f30-0) (vector-cross! s4-0 gp-0 s3-0) (vector-normalize! s4-0 1.0) - (let ((f0-4 (fmax - (fmin (- (vector-dot (target-pos 0) s4-0) (vector-dot s5-0 s4-0)) (-> self strafe-envelope)) - (- (-> self strafe-envelope)) - ) - ) - ) - (seek! (-> self strafe-distance) f0-4 (* 20480.0 (seconds-per-frame))) - ) + (let ((f0-4 (fmax (fmin (- (vector-dot (target-pos 0) s4-0) (vector-dot s5-0 s4-0)) (-> self strafe-envelope)) + (- (-> self strafe-envelope))))) + (seek! (-> self strafe-distance) f0-4 (* 20480.0 (seconds-per-frame)))) (vector-float*! s4-0 s4-0 (-> self strafe-distance)) (vector+! (-> self root trans) s5-0 s4-0) - (forward-up->quaternion (-> self root quat) gp-0 s3-0) - ) - (swamp-bat-slave-post) - ) + (forward-up->quaternion (-> self root quat) gp-0 s3-0)) + (swamp-bat-slave-post)) -(defskelgroup *swamp-bat-slave-sg* swamp-bat swamp-bat-lod0-jg swamp-bat-idle-ja - ((swamp-bat-lod0-mg (meters 20)) (swamp-bat-lod1-mg (meters 40)) (swamp-bat-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - ) +(defskelgroup *swamp-bat-slave-sg* + swamp-bat + swamp-bat-lod0-jg + swamp-bat-idle-ja + ((swamp-bat-lod0-mg (meters 20)) (swamp-bat-lod1-mg (meters 40)) (swamp-bat-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5)) (defbehavior swamp-bat-slave-get-new-path swamp-bat-slave () (set! (-> self path-select) (-> self parent-process 0 path-select)) @@ -157,232 +114,168 @@ swamp-bat-slave-event-handler (let* ((f28-0 (-> self parent-process 0 idle-position-angle (-> self idle-position-index))) (f30-0 (cos f28-0)) (f26-0 (sin f28-0)) - (f28-1 (cos 8192.0)) - ) + (f28-1 (cos 8192.0))) (let ((f0-0 (sin 8192.0))) (set! (-> self idle-path x-axis x) (* 12288.0 f30-0)) (set! (-> self idle-path x-axis y) 0.0) (set! (-> self idle-path x-axis z) (* 12288.0 f26-0)) (set! (-> self idle-path x-axis w) 1.0) (set! (-> self idle-path y-axis x) (* -12288.0 f26-0 f28-1)) - (set! (-> self idle-path y-axis y) (* 12288.0 f0-0)) - ) - (set! (-> self idle-path y-axis z) (* 12288.0 f30-0 f28-1)) - ) + (set! (-> self idle-path y-axis y) (* 12288.0 f0-0))) + (set! (-> self idle-path y-axis z) (* 12288.0 f30-0 f28-1))) (set! (-> self idle-path y-axis w) 1.0) (vector+! (-> self idle-position) (the-as vector (-> self idle-path)) (-> self idle-path x-axis)) (set! (-> self path-point-count) - (the float (+ (-> self parent-process 0 path-list (-> self path-select) curve num-cverts) -1)) - ) - ) + (the float (+ (-> self parent-process 0 path-list (-> self path-select) curve num-cverts) -1)))) (defstate swamp-bat-slave-idle (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self launch-ready) #f) - (ja-channel-push! 1 (seconds 0.165)) - (ja :group! swamp-bat-idle-ja) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self root trans quad)) - (let ((s4-0 (quaternion-copy! (new 'stack-no-clear 'quaternion) (-> self root quat))) - (gp-0 (new-stack-quaternion0)) - ) - (let ((s2-0 (path-control-method-12 - (-> self parent-process 0 path-list (-> self path-select)) - (new 'stack-no-clear 'vector) - 0.1 - ) - ) - ) - 0 - (let* ((f0-0 300.0) - (f1-0 32768.0) - (s3-0 (the int (* f0-0 (/ 1.0 f1-0) (vector-vector-distance s5-0 (-> self idle-position))))) - ) - (forward-up->quaternion gp-0 s2-0 (new 'static 'vector :y 1.0 :w 1.0)) - (loop - (let ((v1-17 (- (current-time) (-> self state-time)))) - (when (>= v1-17 s3-0) - 0 - (goto cfg-10) - ) - (let ((f30-1 (/ (the float v1-17) (the float s3-0)))) - (when *run-time-assert-enable* - (set-pos *__private-assert-info* "swamp-bat" (the-as uint 283) (the-as uint 20)) - (__assert (< f30-1 1.0) "(< interp 1.0)") - ) - (vector-lerp! (-> self root trans) s5-0 (-> self idle-position) f30-1) - (quaternion-slerp! (-> self root quat) s4-0 gp-0 f30-1) - ) - ) - (ja :num! (loop! (-> self idle-anim-speed))) - (suspend) - 0 - ) - ) - ) - (label cfg-10) - (set! (-> self root trans quad) (-> self idle-position quad)) - (quaternion-copy! (-> self root quat) gp-0) - ) - ) - (set! (-> self launch-ready) #t) - (logior! (-> self mask) (process-mask actor-pause)) - (let ((f30-2 0.0)) - (loop - (let ((f26-0 (cos f30-2)) - (f28-0 (sin f30-2)) - ) - (set! (-> self root trans quad) (-> self idle-path origin quad)) - (vector+*! (-> self root trans) (-> self root trans) (-> self idle-path x-axis) f26-0) - (vector+*! (-> self root trans) (-> self root trans) (-> self idle-path y-axis) f28-0) - ) - (ja :num! (loop! (-> self idle-anim-speed))) - (suspend) - (+! f30-2 (* 32768.0 (seconds-per-frame) (-> self idle-anim-speed))) - ) - ) - ) - :post swamp-bat-slave-post - ) - -(defstate swamp-bat-slave-launch (swamp-bat-slave) - :event swamp-bat-slave-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self launch-ready) #f) - (ja-channel-push! 1 (seconds 0.1)) - (let ((gp-0 (new-stack-vector0))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (let ((s5-0 (new-stack-vector0))) - (eval-path-curve-div! (-> self parent-process 0 path-list (-> self path-select)) s5-0 0.0 'interp) - (ja :group! swamp-bat-idle-ja) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self launch-ready) #f) + (ja-channel-push! 1 (seconds 0.165)) + (ja :group! swamp-bat-idle-ja) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self root trans quad)) + (let ((s4-0 (quaternion-copy! (new 'stack-no-clear 'quaternion) (-> self root quat))) + (gp-0 (new-stack-quaternion0))) + (let ((s2-0 (path-control-method-12 (-> self parent-process 0 path-list (-> self path-select)) (new 'stack-no-clear 'vector) 0.1))) + 0 + (let* ((f0-0 300.0) + (f1-0 32768.0) + (s3-0 (the int (* f0-0 (/ 1.0 f1-0) (vector-vector-distance s5-0 (-> self idle-position)))))) + (forward-up->quaternion gp-0 s2-0 (new 'static 'vector :y 1.0 :w 1.0)) + (loop + (let ((v1-17 (- (current-time) (-> self state-time)))) + (when (>= v1-17 s3-0) + 0 + (goto cfg-10)) + (let ((f30-1 (/ (the float v1-17) (the float s3-0)))) + (when *run-time-assert-enable* + (set-pos *__private-assert-info* "swamp-bat" (the-as uint 283) (the-as uint 20)) + (__assert (< f30-1 1.0) "(< interp 1.0)")) + (vector-lerp! (-> self root trans) s5-0 (-> self idle-position) f30-1) + (quaternion-slerp! (-> self root quat) s4-0 gp-0 f30-1))) + (ja :num! (loop! (-> self idle-anim-speed))) + (suspend) + 0))) + (label cfg-10) + (set! (-> self root trans quad) (-> self idle-position quad)) + (quaternion-copy! (-> self root quat) gp-0))) + (set! (-> self launch-ready) #t) + (logior! (-> self mask) (process-mask actor-pause)) + (let ((f30-2 0.0)) (loop - (let ((s4-0 (- (current-time) (-> self state-time)))) - (if (>= s4-0 (seconds 0.3)) - (go swamp-bat-slave-swoop) - ) - (let ((f0-1 (* 0.011111111 (the float s4-0)))) - (vector-lerp! (-> self root trans) gp-0 s5-0 f0-1) - ) - ) + (let ((f26-0 (cos f30-2)) + (f28-0 (sin f30-2))) + (set! (-> self root trans quad) (-> self idle-path origin quad)) + (vector+*! (-> self root trans) (-> self root trans) (-> self idle-path x-axis) f26-0) + (vector+*! (-> self root trans) (-> self root trans) (-> self idle-path y-axis) f28-0)) (ja :num! (loop! (-> self idle-anim-speed))) (suspend) - 0 - ) - ) - ) - ) - :post swamp-bat-slave-post - ) + (+! f30-2 (* 32768.0 (seconds-per-frame) (-> self idle-anim-speed)))))) + :post swamp-bat-slave-post) + +(defstate swamp-bat-slave-launch (swamp-bat-slave) + :event swamp-bat-slave-event-handler + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self launch-ready) #f) + (ja-channel-push! 1 (seconds 0.1)) + (let ((gp-0 (new-stack-vector0))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (let ((s5-0 (new-stack-vector0))) + (eval-path-curve-div! (-> self parent-process 0 path-list (-> self path-select)) s5-0 0.0 'interp) + (ja :group! swamp-bat-idle-ja) + (loop + (let ((s4-0 (- (current-time) (-> self state-time)))) + (if (>= s4-0 (seconds 0.3)) (go swamp-bat-slave-swoop)) + (let ((f0-1 (* 0.011111111 (the float s4-0)))) (vector-lerp! (-> self root trans) gp-0 s5-0 f0-1))) + (ja :num! (loop! (-> self idle-anim-speed))) + (suspend) + 0)))) + :post swamp-bat-slave-post) (defstate swamp-bat-slave-swoop (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set! (-> self strafe-envelope) 0.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! swamp-bat-notice-ja :num! min) - (until (ja-done? 0) - (if (< (ja-aframe-num 0) 10.0) - (sync-now! (-> self sync) 0.0) - ) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self strafe-envelope) 20480.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! swamp-bat-swoop-ja) - (loop - (if (>= (swamp-bat-slave-method-20 self) 2.0) - (go swamp-bat-slave-strafe) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - :post swamp-bat-slave-path-post - ) + :code + (behavior () + (set! (-> self strafe-envelope) 0.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! swamp-bat-notice-ja :num! min) + (until (ja-done? 0) + (if (< (ja-aframe-num 0) 10.0) (sync-now! (-> self sync) 0.0)) + (suspend) + (ja :num! (seek!))) + (set! (-> self strafe-envelope) 20480.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! swamp-bat-swoop-ja) + (loop + (if (>= (swamp-bat-slave-method-20 self) 2.0) (go swamp-bat-slave-strafe)) + (ja :num! (loop!)) + (suspend))) + :post swamp-bat-slave-path-post) (defstate swamp-bat-slave-strafe (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set! (-> self strafe-envelope) 20480.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! swamp-bat-strafe-ja) - (loop - (if (>= (swamp-bat-slave-method-20 self) 6.0) - (go swamp-bat-slave-return) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - :post swamp-bat-slave-path-post - ) + :code + (behavior () + (set! (-> self strafe-envelope) 20480.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! swamp-bat-strafe-ja) + (loop + (if (>= (swamp-bat-slave-method-20 self) 6.0) (go swamp-bat-slave-return)) + (ja :num! (loop!)) + (suspend))) + :post swamp-bat-slave-path-post) (defstate swamp-bat-slave-return (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set! (-> self strafe-envelope) 0.0) - (ja-channel-push! 1 (seconds 0.075)) - (ja :group! swamp-bat-strafe-ja) - (let ((f30-0 (+ -1.0 (-> self path-point-count))) - (gp-0 #t) - ) - (loop - (let ((f28-0 (swamp-bat-slave-method-20 self))) - (if (>= f28-0 f30-0) - (go swamp-bat-slave-idle) - ) - (when (and gp-0 (>= f28-0 7.0) (< f28-0 8.0)) - (set! gp-0 #f) - (when (!= (-> self path-select) (-> self parent-process 0 path-select)) - (swamp-bat-slave-get-new-path) - (go swamp-bat-slave-idle) - ) - ) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - ) - :post swamp-bat-slave-path-post - ) + :code + (behavior () + (set! (-> self strafe-envelope) 0.0) + (ja-channel-push! 1 (seconds 0.075)) + (ja :group! swamp-bat-strafe-ja) + (let ((f30-0 (+ -1.0 (-> self path-point-count))) + (gp-0 #t)) + (loop + (let ((f28-0 (swamp-bat-slave-method-20 self))) + (if (>= f28-0 f30-0) (go swamp-bat-slave-idle)) + (when (and gp-0 (>= f28-0 7.0) (< f28-0 8.0)) + (set! gp-0 #f) + (when (!= (-> self path-select) (-> self parent-process 0 path-select)) + (swamp-bat-slave-get-new-path) + (go swamp-bat-slave-idle)))) + (ja :num! (loop!)) + (suspend)))) + :post swamp-bat-slave-path-post) (defstate swamp-bat-slave-die (swamp-bat-slave) :event process-drawable-death-event-handler - :code (behavior ((arg0 handle)) - (ja-channel-push! 1 (seconds 0.07)) - (let ((gp-0 (new-stack-vector0))) - (let ((v1-1 (handle->process arg0))) - (if v1-1 - (vector-! gp-0 (-> self root trans) (-> (the-as swamp-bat v1-1) root trans)) - ) - ) - (+! (-> gp-0 y) -6144.0) - (vector-normalize! gp-0 98304.0) - (ja :group! swamp-bat-die-ja) - (until (ja-done? 0) - (vector-v++! (-> self root trans) gp-0) - (ja :num! (seek! max 0.5)) - (suspend) - ) - ) - (cleanup-for-death self) - ) - :post swamp-bat-slave-post - ) + :code + (behavior ((arg0 handle)) + (ja-channel-push! 1 (seconds 0.07)) + (let ((gp-0 (new-stack-vector0))) + (let ((v1-1 (handle->process arg0))) + (if v1-1 (vector-! gp-0 (-> self root trans) (-> (the-as swamp-bat v1-1) root trans)))) + (+! (-> gp-0 y) -6144.0) + (vector-normalize! gp-0 98304.0) + (ja :group! swamp-bat-die-ja) + (until (ja-done? 0) + (vector-v++! (-> self root trans) gp-0) + (ja :num! (seek! max 0.5)) + (suspend))) + (cleanup-for-death self)) + :post swamp-bat-slave-post) (defbehavior swamp-bat-slave-init-by-other swamp-bat-slave ((arg0 swamp-bat-slave) (arg1 int)) (logior! (-> self mask) (process-mask enemy)) (let ((s4-0 (new 'process 'collide-shape-moving self (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) - ) + (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 1) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -396,20 +289,15 @@ swamp-bat-slave-event-handler (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) - ) + (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! (-> self root) s4-0) - ) + (set! (-> self root) s4-0)) (set! (-> self root trans quad) (-> arg0 root trans quad)) (set! (-> self root quat vec quad) (-> arg0 root quat vec quad)) (vector-float*! (-> self root scale) *identity-vector* 2.0) (set! (-> self root pause-adjust-distance) 286720.0) - (set! (-> self fact) - (new 'process 'fact-info-enemy self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> self fact) (new 'process 'fact-info-enemy self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> self idle-anim-speed) (rand-vu-float-range 0.9 1.1)) (set! (-> self strafe-distance) 0.0) (set! (-> self strafe-envelope) 0.0) @@ -420,156 +308,110 @@ swamp-bat-slave-event-handler (initialize-skeleton self *swamp-bat-slave-sg* '()) (logclear! (-> self mask) (process-mask actor-pause)) (go swamp-bat-slave-idle) - (none) - ) + (none)) (defbehavior swamp-bat-setup-new-path swamp-bat ((arg0 int)) (when *run-time-assert-enable* (set-pos *__private-assert-info* "swamp-bat" (the-as uint 520) (the-as uint 2)) - (__assert-zero-lim-range-int arg0 (-> self path-count) "path-index" "(-> self path-count)") - ) + (__assert-zero-lim-range-int arg0 (-> self path-count) "path-index" "(-> self path-count)")) (when (< 0.0 (the float (+ (-> self path-list arg0 curve num-cverts) -1))) (set! (-> self path-select) arg0) (let ((f30-0 0.0) - (f28-0 (/ 65536.0 (the float (-> self slave-count)))) - ) + (f28-0 (/ 65536.0 (the float (-> self slave-count))))) (eval-path-curve-div! (-> self path-list arg0) (-> self path-origin) 0.0 'interp) (dotimes (v1-16 (-> self slave-count)) (set! (-> self idle-position-angle v1-16) f30-0) - (+! f30-0 f28-0) - ) - ) - #f - ) - ) + (+! f30-0 f28-0))) + #f)) (defbehavior swamp-bat-make-path-select-plane swamp-bat ((arg0 int)) (when *run-time-assert-enable* (set-pos *__private-assert-info* "swamp-bat" (the-as uint 538) (the-as uint 2)) - (__assert-zero-lim-range-int arg0 (-> self path-count) "path-index" "(-> self path-count)") - ) + (__assert-zero-lim-range-int arg0 (-> self path-count) "path-index" "(-> self path-count)")) (let* ((s5-0 (-> self path-list arg0)) (gp-1 (path-control-method-12 s5-0 (-> self path-select-plane arg0) 5.0)) - (s5-1 (eval-path-curve-div! s5-0 (new 'stack-no-clear 'vector) 5.0 'interp)) - ) + (s5-1 (eval-path-curve-div! s5-0 (new 'stack-no-clear 'vector) 5.0 'interp))) (set! (-> gp-1 y) 0.0) (vector-normalize! gp-1 1.0) - (set! (-> gp-1 w) (- (vector-dot s5-1 gp-1))) - ) - ) + (set! (-> gp-1 w) (- (vector-dot s5-1 gp-1))))) (defbehavior swamp-bat-update-path swamp-bat () (dotimes (gp-0 (-> self path-count)) (when (!= (-> self path-select) gp-0) (let* ((s5-0 (-> self path-select-plane gp-0)) - (f0-2 (+ (vector-dot (target-pos 0) (the-as vector s5-0)) (-> s5-0 w))) - ) - (if (< 0.0 f0-2) - (swamp-bat-setup-new-path gp-0) - ) - ) - ) - ) - (none) - ) + (f0-2 (+ (vector-dot (target-pos 0) (the-as vector s5-0)) (-> s5-0 w)))) + (if (< 0.0 f0-2) (swamp-bat-setup-new-path gp-0))))) + (none)) (defbehavior swamp-bat-debug swamp-bat () 0 - (none) - ) + (none)) (defbehavior swamp-bat-check-slave-paths-match? swamp-bat ((arg0 int)) (let ((v1-0 (the-as (pointer process-tree) (-> self child-process)))) (while v1-0 (if (and (-> (the-as swamp-bat-slave (-> v1-0 0)) launch-ready) - (!= (-> (the-as swamp-bat-slave (-> v1-0 0)) path-select) arg0) - ) - (return #f) - ) - (set! v1-0 (-> v1-0 0 brother)) - ) - ) - #t - ) + (!= (-> (the-as swamp-bat-slave (-> v1-0 0)) path-select) arg0)) + (return #f)) + (set! v1-0 (-> v1-0 0 brother)))) + #t) (defstate swamp-bat-idle (swamp-bat) :trans swamp-bat-debug - :code (behavior () - (when (zero? (-> self path-count)) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - (loop - (when (and (time-elapsed? (-> self state-time) (seconds 0.2)) - *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (when (not (-> self child-process)) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - (swamp-bat-update-path) - (if (or (point-in-vol? (-> self vol) (target-pos 5)) - (not (swamp-bat-check-slave-paths-match? (-> self path-select))) - ) - (go swamp-bat-launch-slaves) - ) - ) - (let ((gp-1 (new 'static 'matrix))) - (quaternion->matrix gp-1 (-> self root quat)) - (set! (-> gp-1 vector 3 quad) (-> self root trans quad)) - ) - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (when (zero? (-> self path-count)) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self)) + (loop + (when (and (time-elapsed? (-> self state-time) (seconds 0.2)) + *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (when (not (-> self child-process)) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self)) + (swamp-bat-update-path) + (if (or (point-in-vol? (-> self vol) (target-pos 5)) (not (swamp-bat-check-slave-paths-match? (-> self path-select)))) + (go swamp-bat-launch-slaves))) + (let ((gp-1 (new 'static 'matrix))) + (quaternion->matrix gp-1 (-> self root quat)) + (set! (-> gp-1 vector 3 quad) (-> self root trans quad))) + (suspend))) + :post #f) (defbehavior swamp-bat-launch-slave swamp-bat () (let ((gp-0 (the-as (pointer process-tree) (-> self child-process))) - (v0-0 (the-as object #f)) - ) + (v0-0 (the-as object #f))) (while (and gp-0 (not v0-0)) (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) 'launch) - (set! v0-0 (send-event-function (ppointer->process gp-0) a1-0)) - ) - (set! gp-0 (-> gp-0 0 brother)) - ) - v0-0 - ) - ) + (set! v0-0 (send-event-function (ppointer->process gp-0) a1-0))) + (set! gp-0 (-> gp-0 0 brother))) + v0-0)) (defstate swamp-bat-launch-slaves (swamp-bat) :trans swamp-bat-debug - :code (behavior () - (set-time! (-> self state-time)) - (loop - (swamp-bat-update-path) - (when (time-elapsed? (-> self state-time) (seconds 0.5)) - (set-time! (-> self state-time)) - (if (not (swamp-bat-launch-slave)) - (go swamp-bat-idle) - ) - ) - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (set-time! (-> self state-time)) + (loop + (swamp-bat-update-path) + (when (time-elapsed? (-> self state-time) (seconds 0.5)) + (set-time! (-> self state-time)) + (if (not (swamp-bat-launch-slave)) (go swamp-bat-idle))) + (suspend))) + :post #f) (defmethod init-from-entity! ((this swamp-bat) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 0.0) - (set-root-prim! s4-0 s3-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (logior! (-> this mask) (process-mask enemy)) @@ -582,26 +424,17 @@ swamp-bat-slave-event-handler (set! (-> this path-count) 0) (when (< 0.0 (the float (+ (-> this path-list 0 curve num-cverts) -1))) (+! (-> this path-count) 1) - (swamp-bat-make-path-select-plane 0) - ) + (swamp-bat-make-path-select-plane 0)) (when (< 0.0 (the float (+ (-> this path-list 1 curve num-cverts) -1))) (+! (-> this path-count) 1) - (swamp-bat-make-path-select-plane 1) - ) - (if (!= (-> this path-count) 2) - (go process-drawable-art-error "need 2 paths") - ) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (swamp-bat-make-path-select-plane 1)) + (if (!= (-> this path-count) 2) (go process-drawable-art-error "need 2 paths")) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (let ((a1-10 (res-lump-value arg0 'num-lurkers uint128 :default (the-as uint128 6)))) - (set! (-> this slave-count) (max 2 (min 8 (the-as int a1-10)))) - ) + (set! (-> this slave-count) (max 2 (min 8 (the-as int a1-10))))) (swamp-bat-setup-new-path 0) (swamp-bat-update-path) (dotimes (s5-1 (-> this slave-count)) - (process-spawn swamp-bat-slave this s5-1 :to this :stack-size 4512) - ) + (process-spawn swamp-bat-slave this s5-1 :to this :stack-size 4512)) (go swamp-bat-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/swamp/swamp-obs.gc b/goal_src/jak1/levels/swamp/swamp-obs.gc index b1119e6bcb..c141485087 100644 --- a/goal_src/jak1/levels/swamp/swamp-obs.gc +++ b/goal_src/jak1/levels/swamp/swamp-obs.gc @@ -1,16 +1,12 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/common-obs/rigid-body.gc") (require "engine/common-obs/crates.gc") (require "engine/util/sync-info.gc") (require "levels/common/battlecontroller.gc") (require "engine/camera/pov-camera-h.gc") -;; name: swamp-obs.gc -;; name in dgo: swamp-obs -;; dgos: L1, SWA ;; note: changed for high fps (declare-type swampgate swamp-spike) @@ -24,122 +20,113 @@ :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1325 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1326 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1327 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1325 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1326 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1327 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1325 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:x (meters -2) 2 (meters 2)) - (:y (meters 0.75)) - (:scale-x (meters 1.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 48.0 24.0) - (:b 48.0 8.0) - (:a 16.0 32.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:scalevel-x (meters 0.01)) - (:accel-y (meters -0.000033333334) (meters -0.00006666667)) - (:friction 0.96) - (:timer (seconds 1.5)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 1328) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -179.3918)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:x (meters -2) 2 (meters 2)) + (:y (meters 0.75)) + (:scale-x (meters 1.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 48.0 24.0) + (:b 48.0 8.0) + (:a 16.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:scalevel-x (meters 0.01)) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + (:friction 0.96) + (:timer (seconds 1.5)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 1328) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -179.3918)))) (defpart 1328 - :init-specs ((:fade-a -0.32)) - ) + :init-specs ((:fade-a -0.32))) (defpart 1326 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:x (meters -2) 2 (meters 2)) - (:y (meters -0.75)) - (:scale-x (meters 1.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 32.0 16.0) - (:g 36.0 18.0) - (:b 24.0 4.0) - (:a 16.0 32.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:scalevel-x (meters 0.01)) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:friction 0.96) - (:timer (seconds 1.5)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 1328) - (:conerot-x (degrees 90) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -179.3918)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:x (meters -2) 2 (meters 2)) + (:y (meters -0.75)) + (:scale-x (meters 1.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 32.0 16.0) + (:g 36.0 18.0) + (:b 24.0 4.0) + (:a 16.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:scalevel-x (meters 0.01)) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:friction 0.96) + (:timer (seconds 1.5)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 1328) + (:conerot-x (degrees 90) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -179.3918)))) (defpart 1327 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 8.0) - (:x (meters -2) 2 (meters 2)) - (:y (meters 0.25)) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 48.0 16.0) - (:b 48.0 16.0) - (:a 128.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:accel-y (meters -0.0033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:next-time (seconds 1.3)) - (:next-launcher 1329) - (:conerot-x (degrees 30) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -179.3918)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 8.0) + (:x (meters -2) 2 (meters 2)) + (:y (meters 0.25)) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 48.0 16.0) + (:b 48.0 16.0) + (:a 128.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:accel-y (meters -0.0033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:next-time (seconds 1.3)) + (:next-launcher 1329) + (:conerot-x (degrees 30) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -179.3918)))) (defpartgroup group-swamp-spike-down :id 290 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1325 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1326 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 1325 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1326 :fade-after (meters 120) :falloff-to (meters 120)))) (deftype swamp-spike (process-drawable) - ((root collide-shape :override) - (sync sync-info :inline) - (open-gate symbol) - (dangerous symbol) - ) + ((root collide-shape :override) + (sync sync-info :inline) + (open-gate symbol) + (dangerous symbol)) (:methods - (init! (_type_) symbol) - ) + (init! (_type_) symbol)) (:states - swamp-spike-idle - ) - ) - + swamp-spike-idle)) -(defskelgroup *swamp-spike-sg* swamp-spike swamp-spike-lod0-jg swamp-spike-up-ja - ((swamp-spike-lod0-mg (meters 20)) (swamp-spike-lod1-mg (meters 999999))) - :bounds (static-spherem 0 5 0 6) - :longest-edge (meters 2.5) - ) +(defskelgroup *swamp-spike-sg* + swamp-spike + swamp-spike-lod0-jg + swamp-spike-up-ja + ((swamp-spike-lod0-mg (meters 20)) (swamp-spike-lod1-mg (meters 999999))) + :bounds (static-spherem 0 5 0 6) + :longest-edge (meters 2.5)) (defbehavior swamp-spike-default-event-handler swamp-spike ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -148,173 +135,127 @@ (if ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) - ) - ) - ) - ) + (the-as uint 1)) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))))))) (defun swamp-spike-set-particle-rotation-callback ((arg0 part-tracker)) (let* ((v1-0 (the-as object (-> arg0 userdata))) - (f0-1 (+ -65314.562 (quaternion-y-angle (-> (the-as (pointer swamp-spike) v1-0) 0 root quat)))) - ) + (f0-1 (+ -65314.562 (quaternion-y-angle (-> (the-as (pointer swamp-spike) v1-0) 0 root quat))))) (set! (-> *part-id-table* 1325 init-specs 20 initial-valuef) f0-1) (set! (-> *part-id-table* 1326 init-specs 20 initial-valuef) f0-1) - (set! (-> *part-id-table* 1327 init-specs 21 initial-valuef) f0-1) - ) + (set! (-> *part-id-table* 1327 init-specs 21 initial-valuef) f0-1)) 0 - (none) - ) + (none)) (defbehavior swamp-spike-post swamp-spike () (transform-post) (let ((a1-0 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-0 to) (the-as process 1)) (set! (-> a1-0 from) (the-as process *touching-list*)) - (if (find-overlapping-shapes (-> self root) (the-as overlaps-others-params a1-0)) - (do-push-aways! (-> self root)) - ) - ) - (none) - ) + (if (find-overlapping-shapes (-> self root) (the-as overlaps-others-params a1-0)) (do-push-aways! (-> self root)))) + (none)) (defstate swamp-spike-idle (swamp-spike) :event swamp-spike-default-event-handler - :code (behavior () - (set! (-> self dangerous) #f) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (new 'stack-no-clear 'vector) - (vector-z-quaternion! gp-0 (-> self root quat)) - (set! (-> gp-0 w) (- (vector-dot gp-0 (-> self root trans)))) - (loop - (set-time! (-> self state-time)) - (ja :group! swamp-spike-up-ja) - (until (>= (get-current-phase (-> self sync)) 0.5) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - (let ((s5-0 - (or (not *target*) (< 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - ) - ) - (if (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - *camera* - ) - (set! s5-0 (< (* (vector4-dot gp-0 (target-pos 0)) (vector4-dot gp-0 (camera-pos))) 0.0)) - ) - (cond - (s5-0 - (until (< (get-current-phase (-> self sync)) 0.5) - (suspend) - ) - ) - (else - (ja-no-eval :group! swamp-spike-shake-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (if (logtest? (-> self draw status) (draw-status was-drawn)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 289) - -1 - swamp-spike-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - (set! (-> self dangerous) #t) - (ja-no-eval :group! swamp-spike-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self dangerous) #f) - (set-time! (-> self state-time)) - (ja :num-func num-func-identity :frame-num max) - (until (< (get-current-phase (-> self sync)) 0.5) - (suspend) - ) - (if (logtest? (-> self draw status) (draw-status was-drawn)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 290) - -1 - swamp-spike-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - (ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - ) - :post swamp-spike-post - ) + :code + (behavior () + (set! (-> self dangerous) #f) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (new 'stack-no-clear 'vector) + (vector-z-quaternion! gp-0 (-> self root quat)) + (set! (-> gp-0 w) (- (vector-dot gp-0 (-> self root trans)))) + (loop + (set-time! (-> self state-time)) + (ja :group! swamp-spike-up-ja) + (until (>= (get-current-phase (-> self sync)) 0.5) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)) + (let ((s5-0 (or (not *target*) (< 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))))) + (if (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) *camera*) + (set! s5-0 (< (* (vector4-dot gp-0 (target-pos 0)) (vector4-dot gp-0 (camera-pos))) 0.0))) + (cond + (s5-0 (until (< (get-current-phase (-> self sync)) 0.5) (suspend))) + (else + (ja-no-eval :group! swamp-spike-shake-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if (logtest? (-> self draw status) (draw-status was-drawn)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 289) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)) + (set! (-> self dangerous) #t) + (ja-no-eval :group! swamp-spike-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self dangerous) #f) + (set-time! (-> self state-time)) + (ja :num-func num-func-identity :frame-num max) + (until (< (get-current-phase (-> self sync)) 0.5) + (suspend)) + (if (logtest? (-> self draw status) (draw-status was-drawn)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 290) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)) + (ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))))))) + :post swamp-spike-post) (defstate swamp-spike-gate-up (swampgate) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (let ((v0-0 #t)) - (set! (-> self open-gate) v0-0) - v0-0 - ) - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (ja :group! swamp-spike-down-ja) - (until (-> self open-gate) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 290) - -1 - swamp-spike-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - (ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go swamp-spike-gate-down) - ) - :post swamp-spike-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (let ((v0-0 #t)) (set! (-> self open-gate) v0-0) v0-0)))) + :code + (behavior () + (set-time! (-> self state-time)) + (ja :group! swamp-spike-down-ja) + (until (-> self open-gate) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 290) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self) + (ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go swamp-spike-gate-down)) + :post swamp-spike-post) (defstate swamp-spike-gate-down (swampgate) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (cleanup-for-death self) - ) - :post swamp-spike-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (cleanup-for-death self)) + :post swamp-spike-post) (defmethod init! ((this swamp-spike)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -331,8 +272,7 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 24576.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -340,127 +280,95 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 20480.0 0.0 24576.0) - (append-prim s4-0 s3-1) - ) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (process-drawable-from-entity! this (-> this entity)) (initialize-skeleton this *swamp-spike-sg* '()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (set! (-> this open-gate) #f) (set! (-> this dangerous) #f) - #f - ) + #f) (defmethod init-from-entity! ((this swamp-spike) (arg0 entity-actor)) (init! this) (go swamp-spike-idle) - (none) - ) + (none)) -(deftype swampgate (swamp-spike) - () +(deftype swampgate (swamp-spike) () (:states - swamp-spike-gate-down - swamp-spike-gate-up - ) - ) - + swamp-spike-gate-down + swamp-spike-gate-up)) (defmethod init-from-entity! ((this swampgate) (arg0 entity-actor)) (init! this) - (if (logtest? (-> arg0 extra perm status) (entity-perm-status complete)) - (go swamp-spike-gate-down) - (go swamp-spike-gate-up) - ) - (none) - ) + (if (logtest? (-> arg0 extra perm status) (entity-perm-status complete)) (go swamp-spike-gate-down) (go swamp-spike-gate-up)) + (none)) (deftype balance-plat (process-drawable) - ((root collide-shape-moving :override) - (y-travel float) - (y-init float) - (y-offset float) - (y-vel float) - (y-accel float) - (got-grow symbol) - ) + ((root collide-shape-moving :override) + (y-travel float) + (y-init float) + (y-offset float) + (y-vel float) + (y-accel float) + (got-grow symbol)) (:states - balance-plat-idle - ) - ) + balance-plat-idle)) - -(defskelgroup *balance-plat-sg* balance-plat balance-plat-lod0-jg balance-plat-idle-ja - ((balance-plat-lod0-mg (meters 20)) (balance-plat-lod1-mg (meters 40)) (balance-plat-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *balance-plat-sg* + balance-plat + balance-plat-lod0-jg + balance-plat-idle-ja + ((balance-plat-lod0-mg (meters 20)) (balance-plat-lod1-mg (meters 40)) (balance-plat-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defstate balance-plat-idle (balance-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('grow) - (let ((v0-0 #t)) - (set! (-> self got-grow) v0-0) - v0-0 - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('grow) (let ((v0-0 #t)) (set! (-> self got-grow) v0-0) v0-0)))) :trans rider-trans - :code (behavior () - (loop - ;; og:preserve-this modified for high fps - (let ((f30-0 (* -0.025 (+ (-> self y-offset) (-> self y-travel)))) - (f28-0 (* -0.025 (- (-> self y-offset) (-> self y-travel)))) - ) - (cond - ((and (-> self root riders) (nonzero? (-> self root riders num-riders))) - ;; has rider, accelerate downwards - (send-event *target* 'no-look-around (seconds 0.25)) - (set! (-> self y-accel) (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO -0.2048) (-> self y-accel))))) - (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) - ;; tell linked platforms to go up - (send-to-all-after (-> self link) 'grow) - (send-to-all-before (-> self link) 'grow) - ) - ((-> self got-grow) - ;; got 'grow' signal, accelerate upwards - (set! (-> self got-grow) #f) - (set! (-> self y-accel) (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO 0.2048) (-> self y-accel))))) - (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) - ) - ((< (-> self y-offset) 0.0) - ;; accelerate towards neutral position (from below) - (set! (-> self y-accel) - (fmin (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO 0.1024) (-> self y-accel)))) (* -0.0001 (-> self y-offset))) - ) - (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) - ;; slow down - (set! (-> self y-vel) (* (- 1.0 (* DISPLAY_FPS_RATIO (- 1.0 0.99))) (-> self y-vel))) - ) - (else - ;; accelerate towards neutral position (from above) - (set! (-> self y-accel) - (fmin 4.096 (fmax (fmax -4.096 (+ (* DISPLAY_FPS_RATIO -0.1024) (-> self y-accel))) (* -0.0001 (-> self y-offset)))) - ) - (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) - ;; slow down - (set! (-> self y-vel) (* (- 1.0 (* DISPLAY_FPS_RATIO (- 1.0 0.99))) (-> self y-vel))) - ) - ) - ) - (+! (-> self y-offset) (* DISPLAY_FPS_RATIO (-> self y-vel))) - (set! (-> self root trans y) (+ (-> self y-init) (-> self y-offset))) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop + ;; og:preserve-this modified for high fps + (let ((f30-0 (* -0.025 (+ (-> self y-offset) (-> self y-travel)))) + (f28-0 (* -0.025 (- (-> self y-offset) (-> self y-travel))))) + (cond + ((and (-> self root riders) (nonzero? (-> self root riders num-riders))) + ;; has rider, accelerate downwards + (send-event *target* 'no-look-around (seconds 0.25)) + (set! (-> self y-accel) (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO -0.2048) (-> self y-accel))))) + (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) + ;; tell linked platforms to go up + (send-to-all-after (-> self link) 'grow) + (send-to-all-before (-> self link) 'grow)) + ((-> self got-grow) + ;; got 'grow' signal, accelerate upwards + (set! (-> self got-grow) #f) + (set! (-> self y-accel) (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO 0.2048) (-> self y-accel))))) + (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel))))))) + ((< (-> self y-offset) 0.0) + ;; accelerate towards neutral position (from below) + (set! (-> self y-accel) + (fmin (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO 0.1024) (-> self y-accel)))) (* -0.0001 (-> self y-offset)))) + (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) + ;; slow down + (set! (-> self y-vel) (* (- 1.0 (* DISPLAY_FPS_RATIO (- 1.0 0.99))) (-> self y-vel)))) + (else + ;; accelerate towards neutral position (from above) + (set! (-> self y-accel) + (fmin 4.096 (fmax (fmax -4.096 (+ (* DISPLAY_FPS_RATIO -0.1024) (-> self y-accel))) (* -0.0001 (-> self y-offset))))) + (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) + ;; slow down + (set! (-> self y-vel) (* (- 1.0 (* DISPLAY_FPS_RATIO (- 1.0 0.99))) (-> self y-vel)))))) + (+! (-> self y-offset) (* DISPLAY_FPS_RATIO (-> self y-vel))) + (set! (-> self root trans y) (+ (-> self y-init) (-> self y-offset))) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this balance-plat) (arg0 entity-actor)) ;; og:preserve-this PAL patch here. usually-hit-by-player -> hit-by-others @@ -468,9 +376,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -479,12 +385,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *balance-plat-sg* '()) (set! (-> this link) (new 'process 'actor-link-info this)) @@ -495,140 +399,124 @@ (set! (-> this got-grow) #f) (set! (-> this y-travel) (res-lump-float arg0 'distance :default 20480.0)) (go balance-plat-idle) - (none) - ) + (none)) (deftype swamp-rock (process-drawable) - ((root collide-shape-moving :override) - ) + ((root collide-shape-moving :override)) (:states - swamp-rock-break - swamp-rock-idle - ) - ) - + swamp-rock-break + swamp-rock-idle)) (defpartgroup group-swamp-rock-explosion :id 291 :duration (seconds 1) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1330 :period (seconds 5) :length (seconds 0.017)) - (sp-item 1331 :period (seconds 5) :length (seconds 0.017)) - (sp-item 1332 :period (seconds 5) :length (seconds 0.05)) - ) - ) + :parts + ((sp-item 1330 :period (seconds 5) :length (seconds 0.017)) + (sp-item 1331 :period (seconds 5) :length (seconds 0.017)) + (sp-item 1332 :period (seconds 5) :length (seconds 0.05)))) (defpart 1331 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 15)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 64.0) - (:b 54.0) - (:a 128.0) - (:fade-a -2.1333334) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 15)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 64.0) + (:b 54.0) + (:a 128.0) + (:fade-a -2.1333334) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)))) (defpart 1330 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 16.0 16.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:conerot-x (degrees 20) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 16.0 16.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:conerot-x (degrees 20) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1332 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0.5) (meters 1)) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 32.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:scalevel-x (meters 0.013333334)) - (:scalevel-y (meters 0.0033333334)) - (:accel-y (meters -0.00026666667)) - (:friction 0.95) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 1333) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0.5) (meters 1)) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.013333334)) + (:scalevel-y (meters 0.0033333334)) + (:accel-y (meters -0.00026666667)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 1333) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1333 - :init-specs ((:fade-a -0.2)) - ) + :init-specs ((:fade-a -0.2))) -(defskelgroup *swamp-rock-sg* swamp-rock swamp-rock-lod0-jg swamp-rock-idle-ja - ((swamp-rock-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *swamp-rock-sg* + swamp-rock + swamp-rock-lod0-jg + swamp-rock-idle-ja + ((swamp-rock-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (defstate swamp-rock-break (swamp-rock) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (sound-play "rock-break") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 291) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (cleanup-for-death self) - (deactivate self) - ) - :post ja-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play "rock-break") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 291) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (cleanup-for-death self) + (deactivate self)) + :post ja-post) (defstate swamp-rock-idle (swamp-rock) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (if (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) - (go swamp-rock-break) - ) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (if (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) (go swamp-rock-break))))) + :code + (behavior () + (transform-post) + (loop + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defmethod init-from-entity! ((this swamp-rock) (arg0 entity-actor)) (logior! (-> this mask) (process-mask attackable)) @@ -641,30 +529,24 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 (* 4096.0 f30-0) 0.0 (* 4096.0 (* 3.0 f30-0))) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) (the-as collide-shape-moving s4-0)) - ) + (set! (-> this root) (the-as collide-shape-moving s4-0))) (process-drawable-from-entity! this arg0) - (vector-float*! (-> this root scale) *identity-vector* f30-0) - ) + (vector-float*! (-> this root scale) *identity-vector* f30-0)) (initialize-skeleton this *swamp-rock-sg* '()) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 291) this)) (go swamp-rock-idle) - (none) - ) + (none)) (defbehavior swamp-rock-init-by-other swamp-rock ((arg0 vector)) (logior! (-> self mask) (process-mask attackable)) (let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) @@ -673,125 +555,103 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 quad)) (initialize-skeleton self *swamp-rock-sg* '()) (nav-mesh-connect self (-> self root) (the-as nav-control #f)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 291) self)) (go swamp-rock-idle) - (none) - ) - -(defskelgroup *tar-plat-sg* tar-plat tar-plat-lod0-jg tar-plat-idle-ja - ((tar-plat-lod0-mg (meters 20)) (tar-plat-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) - -(define *tar-plat-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 2) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 60) - :player-bonk-factor 0.5 - :player-dive-factor 1.0 - :player-force-distance (meters 2) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 0.9 - :angular-damping 0.9 - :control-point-count 4 - :mass 1.0 - :inertial-tensor-x (meters 6) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 6) - :cm-joint-y (meters -2) - :idle-distance (meters 50) - :platform #t - :sound-name "tar-plat" - ) - ) + (none)) + +(defskelgroup *tar-plat-sg* + tar-plat + tar-plat-lod0-jg + tar-plat-idle-ja + ((tar-plat-lod0-mg (meters 20)) (tar-plat-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) + +(define *tar-plat-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 2) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 60) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 2) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 4 + :mass 1.0 + :inertial-tensor-x (meters 6) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 6) + :cm-joint-y (meters -2) + :idle-distance (meters 50) + :platform #t + :sound-name "tar-plat")) (deftype tar-plat (rigid-body-platform) - ((anchor-point vector :inline) - (float-height float) - ) - ) - + ((anchor-point vector :inline) + (float-height float))) (defmethod rigid-body-platform-method-22 ((this tar-plat) (arg0 vector) (arg1 float)) (+ (-> this float-height) (-> this float-height-offset) - (* 512.0 (cos (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))) - ) - ) + (* 512.0 (cos (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))))) (defmethod rigid-body-platform-method-23 ((this tar-plat) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) (defstate rigid-body-platform-idle (tar-plat) :virtual #t - :enter (behavior () - (ja-channel-set! 0) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (ja-channel-set! 0)) + :code + (behavior () + (loop + (suspend))) + :post ja-post) (defstate rigid-body-platform-float (tar-plat) :virtual #t :event rigid-body-platform-event-handler - :trans (behavior () - (cond - ((or (not *target*) (< (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (let ((f30-1 -2048.0)) - (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) - (if (= (-> self float-height-offset) f30-1) - (go-virtual rigid-body-platform-idle) - ) - ) - ) - (else - (seek! (-> self float-height-offset) 4096.0 (* 2048.0 (seconds-per-frame))) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! tar-plat-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (suspend) - ) - ) - :post rigid-body-platform-post - ) + :trans + (behavior () + (cond + ((or (not *target*) + (< (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (let ((f30-1 -2048.0)) + (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) + (if (= (-> self float-height-offset) f30-1) (go-virtual rigid-body-platform-idle)))) + (else (seek! (-> self float-height-offset) 4096.0 (* 2048.0 (seconds-per-frame)))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! tar-plat-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (loop + (suspend))) + :post rigid-body-platform-post) (defmethod rigid-body-platform-method-30 ((this tar-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -800,15 +660,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this tar-plat)) (initialize-skeleton this *tar-plat-sg* '()) @@ -820,68 +677,43 @@ (let ((s3-0 (-> this control-point-array data s4-0))) (let ((f26-0 (+ 8192.0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) (f28-0 20480.0) - (f30-0 12288.0) - ) + (f30-0 12288.0)) (set! (-> s3-0 local-pos x) (fmax (fmin (* f28-0 (sin f26-0)) f30-0) (- f30-0))) (set! (-> s3-0 local-pos y) 0.0) - (set! (-> s3-0 local-pos z) (fmax (fmin (* f28-0 (cos f26-0)) f30-0) (- f30-0))) - ) - (set! (-> s3-0 local-pos w) 1.0) - ) - ) - ) + (set! (-> s3-0 local-pos z) (fmax (fmin (* f28-0 (cos f26-0)) f30-0) (- f30-0)))) + (set! (-> s3-0 local-pos w) 1.0)))) (nav-mesh-connect this (-> this root-overlay) (the-as nav-control #f)) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) 0 - (none) - ) - -(deftype swamp-barrel (barrel) - () - ) - + (none)) -(deftype swampcam (process-hidden) - () - ) +(deftype swamp-barrel (barrel) ()) +(deftype swampcam (process-hidden) ()) -(defskelgroup *swampcam-sg* swampcam swampcam-lod0-jg swampcam-anim-ja - ((swampcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 15) - ) - -(deftype swamp-battlecontroller (battlecontroller) - () - ) +(defskelgroup *swampcam-sg* + swampcam + swampcam-lod0-jg + swampcam-anim-ja + ((swampcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 15)) +(deftype swamp-battlecontroller (battlecontroller) ()) (defstate battlecontroller-play-intro-camera (swamp-battlecontroller) :virtual #t - :code (behavior () - (suspend) - (process-drawable-delay-player (seconds 1)) - (let ((gp-1 (ppointer->handle - (process-spawn pov-camera (-> self root trans) *swampcam-sg* "swamp-ambush" 0 #f '() :to self) - ) - ) - ) - (while (handle->process (the-as handle gp-1)) - (suspend) - ) - ) - (go-virtual battlecontroller-active) - ) - ) + :code + (behavior () + (suspend) + (process-drawable-delay-player (seconds 1)) + (let ((gp-1 (ppointer->handle (process-spawn pov-camera (-> self root trans) *swampcam-sg* "swamp-ambush" 0 #f '() :to self)))) + (while (handle->process (the-as handle gp-1)) + (suspend))) + (go-virtual battlecontroller-active))) (defstate battlecontroller-die (swamp-battlecontroller) :virtual #t - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - ((the-as - (function none :behavior battlecontroller) - (-> (method-of-type battlecontroller battlecontroller-die) code) - ) - ) - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + ((the-as (function none :behavior battlecontroller) (-> (method-of-type battlecontroller battlecontroller-die) code))))) diff --git a/goal_src/jak1/levels/swamp/swamp-part.gc b/goal_src/jak1/levels/swamp/swamp-part.gc index a18d7c4579..33eb32ff28 100644 --- a/goal_src/jak1/levels/swamp/swamp-part.gc +++ b/goal_src/jak1/levels/swamp/swamp-part.gc @@ -1,1617 +1,1543 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: swamp-part.gc -;; name in dgo: swamp-part -;; dgos: L1, SWA - ;; DECOMP BEGINS -(deftype swamp-part (part-spawner) - () - ) - +(deftype swamp-part (part-spawner) ()) (defpartgroup group-swamp-bayou-billy-hut :id 302 :bounds (static-bspherem -4 -3 0 12) - :parts ((sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) - (sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) - (sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) - (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) - (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) - (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) - (sp-item 1379 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) - (sp-item 1380 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) - (sp-item 1381 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.455) :length (seconds 0.1)) - (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.677) :length (seconds 0.1)) - (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.155) :length (seconds 0.1)) - (sp-item 1383 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1383 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1383 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 2305 :flags (launch-asap) :binding 2303) - (sp-item 2306 :flags (launch-asap) :binding 2303) - (sp-item 2307 :flags (launch-asap) :binding 2303) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) + (sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) + (sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) + (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) + (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) + (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) + (sp-item 1379 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) + (sp-item 1380 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) + (sp-item 1381 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.455) :length (seconds 0.1)) + (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.677) :length (seconds 0.1)) + (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.155) :length (seconds 0.1)) + (sp-item 1383 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1383 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1383 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 2305 :flags (launch-asap) :binding 2303) + (sp-item 2306 :flags (launch-asap) :binding 2303) + (sp-item 2307 :flags (launch-asap) :binding 2303) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)))) (defpart 2305 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:x (meters 6)) - (:y (meters -13)) - (:z (meters 4)) - (:scale-x (meters 1.01)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 2308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:x (meters 6)) + (:y (meters -13)) + (:z (meters 4)) + (:scale-x (meters 1.01)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 2308))) (defpart 2308 - :init-specs ((:timer (seconds 1)) (:next-time (seconds 0.5)) (:next-launcher 2308)) - ) + :init-specs ((:timer (seconds 1)) (:next-time (seconds 0.5)) (:next-launcher 2308))) (defpart 2306 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:x (meters 5)) - (:y (meters -13.5)) - (:z (meters 3.5)) - (:scale-x (meters 1.01)) - (:scale-y :copy scale-x) - (:g 0.0) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 2308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:x (meters 5)) + (:y (meters -13.5)) + (:z (meters 3.5)) + (:scale-x (meters 1.01)) + (:scale-y :copy scale-x) + (:g 0.0) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 2308))) (defpart 2307 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:x (meters 6.5)) - (:y (meters -12.5)) - (:z (meters 5)) - (:scale-x (meters 1.01)) - (:scale-y :copy scale-x) - (:b 0.0) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 2308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:x (meters 6.5)) + (:y (meters -12.5)) + (:z (meters 5)) + (:scale-x (meters 1.01)) + (:scale-y :copy scale-x) + (:b 0.0) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 2308))) (defpart 2303 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 1 2.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.5) (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 255.0) - (:g 100.0 100.0) - (:b 64.0 32.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 1)) - (:flags (bit7)) - (:next-time (seconds 0.5)) - (:next-launcher 2308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 1 2.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.5) (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 255.0) + (:g 100.0 100.0) + (:b 64.0 32.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 1)) + (:flags (bit7)) + (:next-time (seconds 0.5)) + (:next-launcher 2308))) (defpart 2304 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 3.0) - (:scale-x (meters 0.075)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.075)) - (:r 64.0) - (:g 128.0) - (:b 20.0) - (:a 32.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 3.0) + (:scale-x (meters 0.075)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.075)) + (:r 64.0) + (:g 128.0) + (:b 20.0) + (:a 32.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) (defpart 1384 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 15) (meters 30)) - (:y (meters 14) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-x (meters -0.036666665)) - (:vel-y (meters -0.036666665)) - (:accel-x (meters 0.00033333333)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 1385) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 15) (meters 30)) + (:y (meters 14) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-x (meters -0.036666665)) + (:vel-y (meters -0.036666665)) + (:accel-x (meters 0.00033333333)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 1385) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1385 - :init-specs ((:g 128.0) - (:vel-x (meters 0)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:accel-x (meters 0)) - (:accel-y (meters 0)) - (:accel-z (meters 0)) - (:next-time (seconds 9) (seconds 4.997)) - (:next-launcher 1386) - ) - ) + :init-specs + ((:g 128.0) + (:vel-x (meters 0)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:accel-x (meters 0)) + (:accel-y (meters 0)) + (:accel-z (meters 0)) + (:next-time (seconds 9) (seconds 4.997)) + (:next-launcher 1386))) (defpart 1386 - :init-specs ((:b 128.0) - (:accel-x (meters -0.00066666666) 1 (meters 0.0013333333)) - (:accel-z (meters -0.00066666666) 1 (meters 0.0013333333)) - ) - ) + :init-specs + ((:b 128.0) + (:accel-x (meters -0.00066666666) 1 (meters 0.0013333333)) + (:accel-z (meters -0.00066666666) 1 (meters 0.0013333333)))) (defpart 1383 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 15) (meters 30)) - (:y (meters 0) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-x (meters -0.036666665)) - (:vel-y (meters -0.036666665)) - (:accel-x (meters 0.00033333333)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 1385) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 15) (meters 30)) + (:y (meters 0) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-x (meters -0.036666665)) + (:vel-y (meters -0.036666665)) + (:accel-x (meters 0.00033333333)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 1385) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1375 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3) (meters 1)) - (:scale-x (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:vel-z (meters 0)) - (:timer (seconds 20)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 1387) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3) (meters 1)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:vel-z (meters 0)) + (:timer (seconds 20)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 1387))) (defpart 1387 - :init-specs ((:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 1387) - ) - ) + :init-specs + ((:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 1387))) (defpart 1376 - :init-specs ((:texture (new 'static 'texture-id :index #x21 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 4.0) - (:scale-x (meters 1)) - (:rot-x (degrees -30) (degrees 240)) - (:rot-y (degrees 0)) - (:scale-y (meters 1.7)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 48.0 48.0) - (:timer (seconds 0.017)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x21 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 4.0) + (:scale-x (meters 1)) + (:rot-x (degrees -30) (degrees 240)) + (:rot-y (degrees 0)) + (:scale-y (meters 1.7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 48.0 48.0) + (:timer (seconds 0.017)) + (:flags (bit2)))) (defpart 1377 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:y (meters -0.25)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 20.0) - (:g 80.0 32.0) - (:b 80.0 20.0) - (:a 32.0 32.0) - (:vel-x (meters 0.0033333334)) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.2) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.21333334) - (:accel-y (meters 0.00016666666)) - (:friction 0.996) - (:timer (seconds 1)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees -20)) - (:conerot-z (degrees -90)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:y (meters -0.25)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 20.0) + (:g 80.0 32.0) + (:b 80.0 20.0) + (:a 32.0 32.0) + (:vel-x (meters 0.0033333334)) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.2) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.21333334) + (:accel-y (meters 0.00016666666)) + (:friction 0.996) + (:timer (seconds 1)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees -20)) + (:conerot-z (degrees -90)) + (:conerot-radius (meters 0.25)))) (defpart 1378 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.9) - (:scale-x (meters 0.75) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 20.0) - (:g 80.0 32.0) - (:b 80.0 20.0) - (:a 16.0 48.0) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:fade-b 0.0) - (:fade-a -0.10666667) - (:accel-y (meters -0.00016666666)) - (:friction 0.996) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees -25.000002) (degrees 10)) - (:conerot-z (degrees -3.0000002) (degrees 6.0000005)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.9) + (:scale-x (meters 0.75) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 20.0) + (:g 80.0 32.0) + (:b 80.0 20.0) + (:a 16.0 48.0) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:fade-b 0.0) + (:fade-a -0.10666667) + (:accel-y (meters -0.00016666666)) + (:friction 0.996) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees -25.000002) (degrees 10)) + (:conerot-z (degrees -3.0000002) (degrees 6.0000005)) + (:conerot-radius (meters 0.25)))) (defpart 1379 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:y (meters -0.25)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 20.0) - (:g 80.0 32.0) - (:b 80.0 20.0) - (:a 32.0 32.0) - (:vel-x (meters 0.0033333334)) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.2) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.21333334) - (:accel-y (meters 0.0001)) - (:friction 0.993) - (:timer (seconds 1)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees -20)) - (:conerot-z (degrees -90)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:y (meters -0.25)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 20.0) + (:g 80.0 32.0) + (:b 80.0 20.0) + (:a 32.0 32.0) + (:vel-x (meters 0.0033333334)) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.2) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.21333334) + (:accel-y (meters 0.0001)) + (:friction 0.993) + (:timer (seconds 1)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees -20)) + (:conerot-z (degrees -90)) + (:conerot-radius (meters 0.25)))) (defpart 1380 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 20.0) - (:g 80.0 32.0) - (:b 80.0 20.0) - (:a 16.0 48.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:fade-b 0.0) - (:fade-a -0.10666667) - (:accel-y (meters -0.00013333333)) - (:friction 0.993) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees -25.000002) (degrees 10)) - (:conerot-z (degrees -3.0000002) (degrees 6.0000005)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 20.0) + (:g 80.0 32.0) + (:b 80.0 20.0) + (:a 16.0 48.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:fade-b 0.0) + (:fade-a -0.10666667) + (:accel-y (meters -0.00013333333)) + (:friction 0.993) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees -25.000002) (degrees 10)) + (:conerot-z (degrees -3.0000002) (degrees 6.0000005)) + (:conerot-radius (meters 0.25)))) (defpart 1381 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.9) - (:x (meters -7.8)) - (:y (meters -8.5)) - (:z (meters -2.2)) - (:scale-x (meters 1.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 40.0 20.0) - (:g 40.0 16.0) - (:b 40.0 10.0) - (:a 64.0 32.0) - (:vel-y (meters 0.013333334) (meters 0.01)) - (:scalevel-x (meters 0.0073242188)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-b 0.0) - (:fade-a -0.16) - (:accel-y (meters -0.0001)) - (:friction 0.995) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.9) + (:x (meters -7.8)) + (:y (meters -8.5)) + (:z (meters -2.2)) + (:scale-x (meters 1.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0 20.0) + (:g 40.0 16.0) + (:b 40.0 10.0) + (:a 64.0 32.0) + (:vel-y (meters 0.013333334) (meters 0.01)) + (:scalevel-x (meters 0.0073242188)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-b 0.0) + (:fade-a -0.16) + (:accel-y (meters -0.0001)) + (:friction 0.995) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpart 1382 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:x (meters -7.8)) - (:y (meters -8.5)) - (:z (meters -2.2)) - (:scale-x (meters 1.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 40.0 20.0) - (:g 40.0 16.0) - (:b 40.0 10.0) - (:a 64.0 32.0) - (:vel-y (meters 0.02) (meters 0.016666668)) - (:scalevel-x (meters 0.0073242188)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-b 0.0) - (:fade-a -0.16) - (:accel-y (meters -0.00013333333)) - (:friction 0.995) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:x (meters -7.8)) + (:y (meters -8.5)) + (:z (meters -2.2)) + (:scale-x (meters 1.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0 20.0) + (:g 40.0 16.0) + (:b 40.0 10.0) + (:a 64.0 32.0) + (:vel-y (meters 0.02) (meters 0.016666668)) + (:scalevel-x (meters 0.0073242188)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-b 0.0) + (:fade-a -0.16) + (:accel-y (meters -0.00013333333)) + (:friction 0.995) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpartgroup group-swamp-bubbles-01 :id 303 :bounds (static-bspherem 0 0 -8 30) - :parts ((sp-item 1390 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1390 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1390 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 35)) - (:z (meters -35) (meters 55)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 35)) + (:z (meters -35) (meters 55)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)))) (defpart 1388 - :init-specs ((:texture (new 'static 'texture-id :index #x20 :page #x2)) - (:num 0.05 0.1) - (:x (meters -2) (meters 4)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 96.0 32.0) - (:a 0.0) - (:scalevel-x (meters 0.00083333335)) - (:scalevel-y (meters 0.00016666666)) - (:fade-a 0.64) - (:timer (seconds 4)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1391) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x20 :page #x2)) + (:num 0.05 0.1) + (:x (meters -2) (meters 4)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 96.0 32.0) + (:a 0.0) + (:scalevel-x (meters 0.00083333335)) + (:scalevel-y (meters 0.00016666666)) + (:fade-a 0.64) + (:timer (seconds 4)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1391))) (defpart 1391 - :init-specs ((:fade-a 0.0) (:next-time (seconds 3.5)) (:next-launcher 1392)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 3.5)) (:next-launcher 1392))) (defpart 1392 - :init-specs ((:g 0.0) (:b 0.0) (:a 0.0) (:timer (seconds 0.017))) - ) + :init-specs ((:g 0.0) (:b 0.0) (:a 0.0) (:timer (seconds 0.017)))) (defpart 1389 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 96.0 32.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3)) - (:next-time (seconds 4)) - (:next-launcher 1393) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 96.0 32.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3)) + (:next-time (seconds 4)) + (:next-launcher 1393))) (defpart 1393 - :init-specs ((:a 8.0 32.0) (:scalevel-x (meters 0.04)) (:scalevel-y :copy scalevel-x) (:timer (seconds 0.017))) - ) + :init-specs ((:a 8.0 32.0) (:scalevel-x (meters 0.04)) (:scalevel-y :copy scalevel-x) (:timer (seconds 0.017)))) (defpartgroup group-swamp-bubbles-02 :id 304 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1394 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1394 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1394 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -8) (meters 16)) - (:z (meters -20) (meters 40)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -8) (meters 16)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 25.000002)))) (defpartgroup group-swamp-bubbles-03 :id 305 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1395 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1395 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1395 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -4) (meters 12)) - (:z (meters -40) (meters 60)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -4) (meters 12)) + (:z (meters -40) (meters 60)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 25.000002)))) (defpartgroup group-swamp-bubbles-04 :id 306 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1396 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1396 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1396 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -35) (meters 60)) - (:z (meters -12) (meters 18)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -35) (meters 60)) + (:z (meters -12) (meters 18)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 40)))) (defpartgroup group-swamp-bubbles-05 :id 307 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1397 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1397 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)))) (defpart 1397 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:z (meters -6) (meters 12)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:z (meters -6) (meters 12)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -30)))) (defpartgroup group-swamp-bubbles-06 :id 308 :bounds (static-bspherem 0 0 0 40) - :parts ((sp-item 1398 :fade-after (meters 200) :period (seconds 0.4) :length (seconds 0.017) :binding 1388) - (sp-item 1399 :fade-after (meters 200) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1398 :fade-after (meters 200) :period (seconds 0.4) :length (seconds 0.017) :binding 1388) + (sp-item 1399 :fade-after (meters 200) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1398 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -45) (meters 80)) - (:z (meters -20) (meters 40)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -45) (meters 80)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -45)))) (defpart 1399 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 40)) - (:z (meters 18) (meters 15)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 40)) + (:z (meters 18) (meters 15)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -45)))) (defpartgroup group-swamp-bubbles-07 :id 309 :bounds (static-bspherem 0 0 0 40) - :parts ((sp-item 1400 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1401 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1402 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1403 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1400 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1401 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1402 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1403 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1400 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 15)) - (:z (meters -8) (meters 38)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 15)) + (:z (meters -8) (meters 38)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpart 1401 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -17.5) (meters 10)) - (:z (meters -15) (meters 50)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -17.5) (meters 10)) + (:z (meters -15) (meters 50)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -35)))) (defpart 1402 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 45)) - (:z (meters 21) (meters 8)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 45)) + (:z (meters 21) (meters 8)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -45)))) (defpart 1403 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -33) (meters 6)) - (:z (meters -25) (meters 25)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -33) (meters 6)) + (:z (meters -25) (meters 25)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpartgroup group-swamp-bubbles-08 :id 310 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1404 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1404 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1404 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -18) (meters 45)) - (:z (meters -25) (meters 40)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -18) (meters 45)) + (:z (meters -25) (meters 40)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpartgroup group-swamp-bubbles-09 :id 311 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1405 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1405 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)))) (defpart 1405 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 42)) - (:z (meters -10) (meters 18)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 42)) + (:z (meters -10) (meters 18)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 30)))) (defpartgroup group-swamp-bubbles-10 :id 312 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1406 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1406 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1406 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -30) (meters 52)) - (:z (meters -10) (meters 18)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -30) (meters 52)) + (:z (meters -10) (meters 18)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpartgroup group-swamp-bubbles-11 :id 313 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1407 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1407 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1407 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -14) (meters 22)) - (:z (meters -13) (meters 30)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -14) (meters 22)) + (:z (meters -13) (meters 30)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -15)))) (defpartgroup group-swamp-bubbles-12 :id 314 :bounds (static-bspherem 0 0 0 40) - :parts ((sp-item 1408 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1408 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)))) (defpart 1408 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 33)) - (:z (meters -13) (meters 70)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -65)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 33)) + (:z (meters -13) (meters 70)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -65)))) (defpartgroup group-swamp-bubbles-13 :id 315 :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 1409 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1409 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)))) (defpart 1409 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -8) (meters 20)) - (:z (meters -8) (meters 20)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -8) (meters 20)) + (:z (meters -8) (meters 20)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -40)))) (defpartgroup group-swamp-bubbles-14 :id 316 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1410 :fade-after (meters 125) :period (seconds 0.4) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1410 :fade-after (meters 125) :period (seconds 0.4) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1410 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -35) (meters 50)) - (:z (meters -40) (meters 55)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -35) (meters 50)) + (:z (meters -40) (meters 55)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -10)))) (defpartgroup group-swamp-torch :id 317 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 1411 :fade-after (meters 200) :falloff-to (meters 220)) - (sp-item 1412 :fade-after (meters 140) :falloff-to (meters 140)) - (sp-item 1413 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) - (sp-item 1414 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 1415 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 1416 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1411 :fade-after (meters 200) :falloff-to (meters 220)) + (sp-item 1412 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 1413 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) + (sp-item 1414 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 1415 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 1416 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1416 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1417) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1417) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1417 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 1411 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5 1 1.0) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 1418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5 1 1.0) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 1418))) (defpart 1418 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 1413 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 1418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 1418))) (defpart 1414 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 1418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 1418))) (defpart 1415 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 1418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 1418))) (defpart 1412 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) diff --git a/goal_src/jak1/levels/swamp/swamp-rat-nest.gc b/goal_src/jak1/levels/swamp/swamp-rat-nest.gc index 59b31a0e7c..7225e8c1e2 100644 --- a/goal_src/jak1/levels/swamp/swamp-rat-nest.gc +++ b/goal_src/jak1/levels/swamp/swamp-rat-nest.gc @@ -1,13 +1,7 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "levels/swamp/swamp-rat.gc") - -;; name: swamp-rat-nest.gc -;; name in dgo: swamp-rat-nest -;; dgos: L1, SWA - (declare-type swamp-rat-nest-dummy process-drawable) (declare-type swamp-rat-nest process-drawable) @@ -19,652 +13,596 @@ :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1334) (sp-item 1335) (sp-item 1336) (sp-item 1337) (sp-item 1338) (sp-item 1339)) - ) + :parts ((sp-item 1334) (sp-item 1335) (sp-item 1336) (sp-item 1337) (sp-item 1338) (sp-item 1339))) (defpartgroup group-swamp-rat-nest-b-explosion :id 293 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1342) (sp-item 1339) (sp-item 1337) (sp-item 1334)) - ) + :parts ((sp-item 1342) (sp-item 1339) (sp-item 1337) (sp-item 1334))) (defpartgroup group-swamp-rat-nest-c-explosion :id 294 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1335) (sp-item 1339) (sp-item 1337) (sp-item 1334)) - ) + :parts ((sp-item 1335) (sp-item 1339) (sp-item 1337) (sp-item 1334))) (defpartgroup group-swamp-rat-nest-a-puff :id 295 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1346) (sp-item 1347) (sp-item 1348)) - ) + :parts ((sp-item 1346) (sp-item 1347) (sp-item 1348))) (defpartgroup group-swamp-rat-nest-b-puff :id 296 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1350) (sp-item 1351)) - ) + :parts ((sp-item 1350) (sp-item 1351))) (defpartgroup group-swamp-rat-nest-c-puff :id 297 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1353) (sp-item 1354)) - ) + :parts ((sp-item 1353) (sp-item 1354))) (defpart 1353 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters 1.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters -0.00008333333) (meters -0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters 1.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters -0.00008333333) (meters -0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.5)))) (defpart 1354 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:y (meters 1) (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 85) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:y (meters 1) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 85) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 1355 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -4.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.07111111) - (:accel-y (meters 0.00008333333) (meters 0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -4.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.07111111) + (:accel-y (meters 0.00008333333) (meters 0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.5)))) (defpart 1350 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -0.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters -0.00008333333) (meters -0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -0.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters -0.00008333333) (meters -0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.5)))) (defpart 1351 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:y (meters -1) (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 85) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:y (meters -1) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 85) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3)))) (defpart 1352 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -10.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.07111111) - (:accel-y (meters 0.00008333333) (meters 0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -10.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.07111111) + (:accel-y (meters 0.00008333333) (meters 0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.5)))) (defpart 1334 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 160.0) - (:b 96.0) - (:a 32.0) - (:fade-a -1.0) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 160.0) + (:b 96.0) + (:a 32.0) + (:fade-a -1.0) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defpart 1341 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -12)) - (:scale-x (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 196.0) - (:b 96.0) - (:a 16.0) - (:fade-a 0.0) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -12)) + (:scale-x (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 196.0) + (:b 96.0) + (:a 16.0) + (:fade-a 0.0) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defpart 1339 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 8.0) - (:y (meters -1) (meters 1.5)) - (:scale-x (meters 0.75) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.08)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:friction 0.92) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 70) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 8.0) + (:y (meters -1) (meters 1.5)) + (:scale-x (meters 0.75) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.08)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:friction 0.92) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 70) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5) (meters 1)))) (defpart 1335 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0 8.0) - (:y (meters -2) (meters 1.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.000033333334) (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0 8.0) + (:y (meters -2) (meters 1.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (defpart 1340 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 10.0 5.0) - (:y (meters -12) (meters 1.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 32.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 10.0 5.0) + (:y (meters -12) (meters 1.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 32.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (defpart 1336 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0 8.0) - (:y (meters 0.5) (meters 0.25)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 32.0) - (:g 64.0 48.0) - (:b 48.0 8.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.000033333334) (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1) (meters 1.75)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0 8.0) + (:y (meters 0.5) (meters 0.25)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 32.0) + (:g 64.0 48.0) + (:b 48.0 8.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1) (meters 1.75)))) (defpart 1337 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 8.0 16.0) - (:y (meters -1) (meters 2)) - (:scale-x (meters 0.2) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 32.0 16.0) - (:a 128.0) - (:vel-y (meters 0.02) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.002) (meters -0.00066666666)) - (:timer (seconds 2.5)) - (:flags (bit2 bit12)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:conerot-x (degrees 15) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 3.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 8.0 16.0) + (:y (meters -1) (meters 2)) + (:scale-x (meters 0.2) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 32.0 16.0) + (:a 128.0) + (:vel-y (meters 0.02) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.002) (meters -0.00066666666)) + (:timer (seconds 2.5)) + (:flags (bit2 bit12)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:conerot-x (degrees 15) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 3.5)))) (defpart 1338 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 32.0 32.0) - (:y (meters 2) (meters 1)) - (:scale-x (meters 0.25) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.1)) - (:r 32.0 32.0) - (:g 128.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.02) (meters 0.04)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 45) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3.5) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 32.0 32.0) + (:y (meters 2) (meters 1)) + (:scale-x (meters 0.25) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 32.0 32.0) + (:g 128.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.02) (meters 0.04)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 45) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3.5) (meters 1)))) (defpart 1346 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters 0.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters -0.00008333333) (meters -0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters 0.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters -0.00008333333) (meters -0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5) (meters 1)))) (defpart 1349 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -12) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 8.0 8.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.035555556) - (:accel-y (meters 0.00008333333) (meters 0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -12) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 8.0 8.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.035555556) + (:accel-y (meters 0.00008333333) (meters 0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5) (meters 1)))) (defpart 1347 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:y (meters 1) (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:y (meters 1) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3) (meters 0.5)))) (defpart 1348 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 0.5 0.5) - (:y (meters 1) (meters 0.5)) - (:scale-x (meters 0.25) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.1)) - (:r 32.0 32.0) - (:g 128.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 0.5 0.5) + (:y (meters 1) (meters 0.5)) + (:scale-x (meters 0.25) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 32.0 32.0) + (:g 128.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3) (meters 0.5)))) (defpart 1342 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 20.0 8.0) - (:y (meters -3.5) (meters 2.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.000033333334) (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 20.0 8.0) + (:y (meters -3.5) (meters 2.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (defpart 1343 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0 5.0) - (:y (meters -10.5) (meters 2.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 32.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0 5.0) + (:y (meters -10.5) (meters 2.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 32.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (defpart 1344 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num -5.0) - (:y (meters -12)) - (:scale-x (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 196.0) - (:b 96.0) - (:a 16.0) - (:fade-a 0.0) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num -5.0) + (:y (meters -12)) + (:scale-x (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 196.0) + (:b 96.0) + (:a 16.0) + (:fade-a 0.0) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defpart 1345 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0 4.0) - (:y (meters -4) (meters 1.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 32.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 48.0 48.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0 4.0) + (:y (meters -4) (meters 1.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 32.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 48.0 48.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (deftype swamp-rat-nest (process-drawable) - ((fact fact-info-enemy :override) - (child-process (pointer swamp-rat-nest-dummy) :overlay-at child) - (dummy (pointer swamp-rat-nest-dummy)) - (damaged symbol) - (dummy-type int8) - (rat-count int8) - (hit-points int8) - (defensive-rat-count int8) - (spawn-period float) - (spawn-period-scale float) - (test-interval time-frame) - (player-attack-id int32) - ) + ((fact fact-info-enemy :override) + (child-process (pointer swamp-rat-nest-dummy) :overlay-at child) + (dummy (pointer swamp-rat-nest-dummy)) + (damaged symbol) + (dummy-type int8) + (rat-count int8) + (hit-points int8) + (defensive-rat-count int8) + (spawn-period float) + (spawn-period-scale float) + (test-interval time-frame) + (player-attack-id int32)) (:states - swamp-rat-nest-active - swamp-rat-nest-die - swamp-rat-nest-gestate - swamp-rat-nest-idle - swamp-rat-nest-victory - ) - ) - + swamp-rat-nest-active + swamp-rat-nest-die + swamp-rat-nest-gestate + swamp-rat-nest-idle + swamp-rat-nest-victory)) (deftype swamp-rat-nest-dummy (process-drawable) - ((root collide-shape :override) - (parent-process (pointer swamp-rat-nest) :overlay-at parent) - (top-sphere sphere :inline) - (death-part sparticle-launch-group) - (spawn-joint-array int8 6) - (spawn-joint-count int8) - (particle-spawn-joint int8) - ) + ((root collide-shape :override) + (parent-process (pointer swamp-rat-nest) :overlay-at parent) + (top-sphere sphere :inline) + (death-part sparticle-launch-group) + (spawn-joint-array int8 6) + (spawn-joint-count int8) + (particle-spawn-joint int8)) (:methods - (swamp-rat-nest-dummy-method-20 (_type_) none) - (swamp-rat-nest-dummy-method-21 (_type_) int) - ) + (swamp-rat-nest-dummy-method-20 (_type_) none) + (swamp-rat-nest-dummy-method-21 (_type_) int)) (:states - swamp-rat-nest-dummy-die - swamp-rat-nest-dummy-hit - swamp-rat-nest-dummy-idle - swamp-rat-nest-dummy-shake - ) - ) - - -(deftype swamp-rat-nest-dummy-a (swamp-rat-nest-dummy) - () - ) - + swamp-rat-nest-dummy-die + swamp-rat-nest-dummy-hit + swamp-rat-nest-dummy-idle + swamp-rat-nest-dummy-shake)) -(deftype swamp-rat-nest-dummy-b (swamp-rat-nest-dummy) - () - ) +(deftype swamp-rat-nest-dummy-a (swamp-rat-nest-dummy) ()) +(deftype swamp-rat-nest-dummy-b (swamp-rat-nest-dummy) ()) -(deftype swamp-rat-nest-dummy-c (swamp-rat-nest-dummy) - () - ) - +(deftype swamp-rat-nest-dummy-c (swamp-rat-nest-dummy) ()) (defbehavior swamp-rat-nest-dummy-draw-spawn-joints swamp-rat-nest-dummy () (dotimes (gp-0 (-> self spawn-joint-count)) (let* ((a0-0 (-> self spawn-joint-array gp-0)) - (a2-0 (-> self node-list data a0-0 bone transform)) - ) - (add-debug-matrix #t (bucket-id debug-no-zbuf) a2-0) - ) - ) - #f - ) + (a2-0 (-> self node-list data a0-0 bone transform))) + (add-debug-matrix #t (bucket-id debug-no-zbuf) a2-0))) + #f) (defbehavior swamp-rat-nest-dummy-take-damage swamp-rat-nest-dummy ((arg0 int)) (when (not (-> self parent-process 0 damaged)) (set! (-> self parent-process 0 damaged) #t) (+! (-> self parent-process 0 rat-count) (-> self parent-process 0 defensive-rat-count)) - (set! (-> self parent-process 0 spawn-period) 600.0) - ) + (set! (-> self parent-process 0 spawn-period) 600.0)) (set! (-> self parent-process 0 hit-points) (- (-> self parent-process 0 hit-points) arg0)) - (none) - ) + (none)) (defbehavior swamp-rat-nest-dummy-event-handler swamp-rat-nest-dummy ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('shake) - (if (= (-> self next-state name) 'swamp-rat-nest-dummy-idle) - (go swamp-rat-nest-dummy-shake) - ) - ) + (('shake) (if (= (-> self next-state name) 'swamp-rat-nest-dummy-idle) (go swamp-rat-nest-dummy-shake))) (('attack) (send-event (ppointer->process (-> self parent-process)) 'hit) (let ((v1-7 (-> arg3 param 2))) @@ -674,94 +612,73 @@ ((and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) (swamp-rat-nest-dummy-take-damage 3) (if (< (vector-vector-distance (target-pos 0) (-> self top-sphere)) (-> self top-sphere w)) - (send-event *target* 'no-look-around (seconds 0.25)) - ) - (go swamp-rat-nest-dummy-hit) - ) + (send-event *target* 'no-look-around (seconds 0.25))) + (go swamp-rat-nest-dummy-hit)) (else - (level-hint-spawn (text-id swamp-rat-nest-hint) "sksp0144" (the-as entity #f) *entity-pool* (game-task none)) - (swamp-rat-nest-dummy-take-damage 0) - (go swamp-rat-nest-dummy-hit) - ) - ) - ) - ) - ) - ) - ) + (level-hint-spawn (text-id swamp-rat-nest-hint) "sksp0144" (the-as entity #f) *entity-pool* (game-task none)) + (swamp-rat-nest-dummy-take-damage 0) + (go swamp-rat-nest-dummy-hit)))))))) (defstate swamp-rat-nest-dummy-idle (swamp-rat-nest-dummy) :event swamp-rat-nest-dummy-event-handler - :code (behavior () - (loop - (ja :num-func num-func-identity :frame-num max) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (loop + (ja :num-func num-func-identity :frame-num max) + (suspend))) + :post transform-post) (defstate swamp-rat-nest-dummy-hit (swamp-rat-nest-dummy) :event swamp-rat-nest-dummy-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (if (<= (-> self parent-process 0 hit-points) 0) - (go swamp-rat-nest-dummy-die) - ) - ) - :code (behavior () - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (< (-> self parent-process 0 hit-points) 3) - (spawn (-> self part) (-> self node-list data (-> self particle-spawn-joint) bone transform vector 3)) - ) - (suspend) - (ja :num! (seek!)) - ) - (go swamp-rat-nest-dummy-idle) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (if (<= (-> self parent-process 0 hit-points) 0) (go swamp-rat-nest-dummy-die))) + :code + (behavior () + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (< (-> self parent-process 0 hit-points) 3) + (spawn (-> self part) (-> self node-list data (-> self particle-spawn-joint) bone transform vector 3))) + (suspend) + (ja :num! (seek!))) + (go swamp-rat-nest-dummy-idle)) + :post transform-post) (defstate swamp-rat-nest-dummy-shake (swamp-rat-nest-dummy) :event swamp-rat-nest-dummy-event-handler - :code (behavior () - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go swamp-rat-nest-dummy-idle) - ) - :post transform-post - ) + :code + (behavior () + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go swamp-rat-nest-dummy-idle)) + :post transform-post) (defstate swamp-rat-nest-dummy-die (swamp-rat-nest-dummy) :event #f - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self parent-process 0 dummy) (the-as (pointer swamp-rat-nest-dummy) #f)) - (process-spawn - part-tracker - :init part-tracker-init - (-> self death-part) - -1 - #f - #f - #f - (-> self node-list data (-> self particle-spawn-joint) bone transform vector 3) - :to *entity-pool* - ) - (until (time-elapsed? (-> self state-time) (seconds 0.1)) - (suspend) - ) - (ja-channel-set! 0) - (while (-> self child) - (suspend) - ) - (deactivate self) - ) - ) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self parent-process 0 dummy) (the-as (pointer swamp-rat-nest-dummy) #f)) + (process-spawn part-tracker + :init + part-tracker-init + (-> self death-part) + -1 + #f + #f + #f + (-> self node-list data (-> self particle-spawn-joint) bone transform vector 3) + :to + *entity-pool*) + (until (time-elapsed? (-> self state-time) (seconds 0.1)) + (suspend)) + (ja-channel-set! 0) + (while (-> self child) + (suspend)) + (deactivate self))) (defbehavior swamp-rat-nest-dummy-init-by-other swamp-rat-nest-dummy ((arg0 swamp-rat-nest-dummy)) (let ((gp-0 (-> arg0 entity))) @@ -771,8 +688,7 @@ (set! (-> self top-sphere quad) (-> self root trans quad)) (+! (-> self top-sphere y) 24576.0) (set! (-> self top-sphere w) 18432.0) - (set! (-> self entity) gp-0) - ) + (set! (-> self entity) gp-0)) (set! (-> self nav) (new 'process 'nav-control (-> self root) 16 40960.0)) (logior! (-> self nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set-current-poly! (-> self nav) (find-poly (-> self nav) (-> self root trans))) @@ -780,22 +696,13 @@ (swamp-rat-nest-dummy-method-21 self) (when (zero? (-> self skel)) (set! (-> self spawn-joint-count) 0) - 0 - ) - (if (zero? (-> self parent-process 0 dummy-type)) - (go swamp-rat-nest-dummy-idle) - (go swamp-rat-nest-dummy-hit) - ) - (none) - ) + 0) + (if (zero? (-> self parent-process 0 dummy-type)) (go swamp-rat-nest-dummy-idle) (go swamp-rat-nest-dummy-hit)) + (none)) (defbehavior swamp-rat-nest-default-event-handler swamp-rat-nest ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('victory) - (go swamp-rat-nest-victory) - ) - ) - ) + (('victory) (go swamp-rat-nest-victory)))) swamp-rat-nest-default-event-handler @@ -804,215 +711,140 @@ swamp-rat-nest-default-event-handler (dotimes (gp-0 5) (let* ((s5-0 (-> self dummy 0 spawn-joint-array (rand-vu-int-count (-> self dummy 0 spawn-joint-count)))) (v1-15 (-> self dummy 0 node-list data s5-0 bone)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> v1-15 transform vector 3 quad)) (let ((s2-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> v1-15 transform vector 1) 1.0)) - (s4-1 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) s3-0)) - ) + (s4-1 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) s3-0))) (set! (-> s4-1 y) 0.0) (vector-normalize! s4-1 1.0) - (if (< (vector-dot s2-0 s4-1) (cos 8192.0)) - (return s5-0) - ) - ) - ) - ) - ) - (-> self dummy 0 spawn-joint-array (rand-vu-int-count (-> self dummy 0 spawn-joint-count))) - ) + (if (< (vector-dot s2-0 s4-1) (cos 8192.0)) (return s5-0)))))) + (-> self dummy 0 spawn-joint-array (rand-vu-int-count (-> self dummy 0 spawn-joint-count)))) ;; ERROR: Function may read a register that is not set: t2 (defbehavior swamp-rat-nest-spawn-rat swamp-rat-nest () (local-vars (t2-0 none)) - (the-as - (pointer swamp-rat) - (when (and (-> self dummy) (> (-> self dummy 0 spawn-joint-count) 0)) - (let* ((v1-5 (swamp-rat-nest-pick-spawn-joint)) - (v1-8 (-> self dummy 0 node-list data v1-5 bone)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> gp-0 quad) (-> v1-8 transform vector 3 quad)) - (let ((s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> v1-8 transform vector 1) 1.0)) - (s4-0 (if (= (-> self fact pickup-type) (pickup-type none)) - 0 - 9 - ) - ) - ) - (process-spawn swamp-rat self gp-0 s5-0 s4-0 t2-0 :to self) - ) - ) - ) - ) - ) + (the-as (pointer swamp-rat) + (when (and (-> self dummy) (> (-> self dummy 0 spawn-joint-count) 0)) + (let* ((v1-5 (swamp-rat-nest-pick-spawn-joint)) + (v1-8 (-> self dummy 0 node-list data v1-5 bone)) + (gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> v1-8 transform vector 3 quad)) + (let ((s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> v1-8 transform vector 1) 1.0)) + (s4-0 (if (= (-> self fact pickup-type) (pickup-type none)) 0 9))) + (process-spawn swamp-rat self gp-0 s5-0 s4-0 t2-0 :to self)))))) (defbehavior swamp-rat-nest-check-dummy swamp-rat-nest () (when (not (-> self dummy)) (let ((v1-1 (-> self dummy-type))) (cond ((zero? v1-1) - (set! (-> self dummy) - (process-spawn swamp-rat-nest-dummy-a :init swamp-rat-nest-dummy-init-by-other self :to self) - ) - ) + (set! (-> self dummy) (process-spawn swamp-rat-nest-dummy-a :init swamp-rat-nest-dummy-init-by-other self :to self))) ((= v1-1 1) - (set! (-> self dummy) - (process-spawn swamp-rat-nest-dummy-b :init swamp-rat-nest-dummy-init-by-other self :to self) - ) - ) + (set! (-> self dummy) (process-spawn swamp-rat-nest-dummy-b :init swamp-rat-nest-dummy-init-by-other self :to self))) ((= v1-1 2) - (set! (-> self dummy) - (process-spawn swamp-rat-nest-dummy-c :init swamp-rat-nest-dummy-init-by-other self :to self) - ) - ) - (else - (go swamp-rat-nest-die) - ) - ) - ) + (set! (-> self dummy) (process-spawn swamp-rat-nest-dummy-c :init swamp-rat-nest-dummy-init-by-other self :to self))) + (else (go swamp-rat-nest-die)))) (+! (-> self dummy-type) 1) - (set! (-> self spawn-period) (* 0.75 (-> self spawn-period))) - ) - (none) - ) + (set! (-> self spawn-period) (* 0.75 (-> self spawn-period)))) + (none)) (defstate swamp-rat-nest-idle (swamp-rat-nest) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hit) - (go swamp-rat-nest-active) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go swamp-rat-nest-active) - ) - ) - :code (behavior () - (swamp-rat-nest-check-dummy) - (loop - (suspend) - ) - ) - :post #f - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hit) (go swamp-rat-nest-active)))) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go swamp-rat-nest-active))) + :code + (behavior () + (swamp-rat-nest-check-dummy) + (loop + (suspend))) + :post #f) (defstate swamp-rat-nest-active (swamp-rat-nest) :event swamp-rat-nest-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (swamp-rat-nest-check-dummy) - (when (time-elapsed? (-> self state-time) (-> self test-interval)) - (set-time! (-> self state-time)) - (set! (-> self test-interval) (seconds 0.2)) - (let ((v1-6 0)) - (let ((a0-2 (the-as (pointer process-tree) (-> self child-process)))) - (while a0-2 - (if (= (-> (ppointer->process a0-2) type) swamp-rat) - (+! v1-6 1) - ) - (set! a0-2 (-> a0-2 0 brother)) - ) - ) - (if (< v1-6 (-> self rat-count)) - (go swamp-rat-nest-gestate) - ) - ) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post #f - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (swamp-rat-nest-check-dummy) + (when (time-elapsed? (-> self state-time) (-> self test-interval)) + (set-time! (-> self state-time)) + (set! (-> self test-interval) (seconds 0.2)) + (let ((v1-6 0)) + (let ((a0-2 (the-as (pointer process-tree) (-> self child-process)))) + (while a0-2 + (if (= (-> (ppointer->process a0-2) type) swamp-rat) (+! v1-6 1)) + (set! a0-2 (-> a0-2 0 brother)))) + (if (< v1-6 (-> self rat-count)) (go swamp-rat-nest-gestate))))) + :code + (behavior () + (loop + (suspend))) + :post #f) (defstate swamp-rat-nest-gestate (swamp-rat-nest) :event swamp-rat-nest-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (swamp-rat-nest-check-dummy) - (when (time-elapsed? (-> self state-time) (the int (* (-> self spawn-period-scale) (-> self spawn-period)))) - (send-event (ppointer->process (-> self dummy)) 'shake) - (swamp-rat-nest-spawn-rat) - (go swamp-rat-nest-active) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post #f - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (swamp-rat-nest-check-dummy) + (when (time-elapsed? (-> self state-time) (the int (* (-> self spawn-period-scale) (-> self spawn-period)))) + (send-event (ppointer->process (-> self dummy)) 'shake) + (swamp-rat-nest-spawn-rat) + (go swamp-rat-nest-active))) + :code + (behavior () + (loop + (suspend))) + :post #f) (defstate swamp-rat-nest-victory (swamp-rat-nest) :event #f - :code (behavior () - (let ((gp-0 (the-as (pointer process-tree) (-> self child-process)))) - (while gp-0 - (let* ((s5-0 (ppointer->process gp-0)) - (a0-1 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) swamp-rat)) - s5-0 - ) - ) - ) - (if a0-1 - (send-event a0-1 'victory) - ) - ) - (set! gp-0 (-> gp-0 0 brother)) - ) - ) - (go swamp-rat-nest-active) - ) - :post #f - ) + :code + (behavior () + (let ((gp-0 (the-as (pointer process-tree) (-> self child-process)))) + (while gp-0 + (let* ((s5-0 (ppointer->process gp-0)) + (a0-1 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) swamp-rat)) s5-0))) + (if a0-1 (send-event a0-1 'victory))) + (set! gp-0 (-> gp-0 0 brother)))) + (go swamp-rat-nest-active)) + :post #f) (defstate swamp-rat-nest-die (swamp-rat-nest) :event swamp-rat-nest-default-event-handler - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (process-entity-status! self (entity-perm-status dead) #t) - (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) - (while (-> self child-process) - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (process-entity-status! self (entity-perm-status dead) #t) + (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) + (while (-> self child-process) + (suspend))) + :post #f) (defmethod init-from-entity! ((this swamp-rat-nest) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (let ((s5-1 (res-lump-value arg0 'num-lurkers uint128 :default (the-as uint128 3)))) - (if (>= (get-health-percent-lost *game-info* #f) 0.5) - (+! s5-1 -1) - ) - (set! (-> this rat-count) (max 1 (min 4 (the-as int s5-1)))) - ) + (if (>= (get-health-percent-lost *game-info* #f) 0.5) (+! s5-1 -1)) + (set! (-> this rat-count) (max 1 (min 4 (the-as int s5-1))))) (set! (-> this defensive-rat-count) 2) - (if (>= (get-health-percent-lost *game-info* #f) 0.75) - (+! (-> this defensive-rat-count) -1) - ) + (if (>= (get-health-percent-lost *game-info* #f) 0.75) (+! (-> this defensive-rat-count) -1)) (set! (-> this dummy) (the-as (pointer swamp-rat-nest-dummy) #f)) (set! (-> this dummy-type) 0) (set! (-> this hit-points) 0) @@ -1021,23 +853,28 @@ swamp-rat-nest-default-event-handler (set! (-> this spawn-period-scale) (+ 1.0 (* 2.0 (get-health-percent-lost *game-info* #f)))) (set! (-> this test-interval) (rand-vu-int-range (seconds 0.1) (seconds 0.2))) (go swamp-rat-nest-idle) - (none) - ) - -(defskelgroup *swamp-rat-nest-dummy-a-sg* swamp-rat-nest swamp-rat-nest-a-lod0-jg swamp-rat-nest-a-idle-ja - ((swamp-rat-nest-a-lod0-mg (meters 20)) (swamp-rat-nest-a-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) - -(defskelgroup *swamp-rat-nest-dummy-b-sg* swamp-rat-nest swamp-rat-nest-b-lod0-jg swamp-rat-nest-b-idle-ja - ((swamp-rat-nest-b-lod0-mg (meters 20)) (swamp-rat-nest-b-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) - -(defskelgroup *swamp-rat-nest-dummy-c-sg* swamp-rat-nest swamp-rat-nest-c-lod0-jg swamp-rat-nest-c-idle-ja - ((swamp-rat-nest-c-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) + (none)) + +(defskelgroup *swamp-rat-nest-dummy-a-sg* + swamp-rat-nest + swamp-rat-nest-a-lod0-jg + swamp-rat-nest-a-idle-ja + ((swamp-rat-nest-a-lod0-mg (meters 20)) (swamp-rat-nest-a-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) + +(defskelgroup *swamp-rat-nest-dummy-b-sg* + swamp-rat-nest + swamp-rat-nest-b-lod0-jg + swamp-rat-nest-b-idle-ja + ((swamp-rat-nest-b-lod0-mg (meters 20)) (swamp-rat-nest-b-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) + +(defskelgroup *swamp-rat-nest-dummy-c-sg* + swamp-rat-nest + swamp-rat-nest-c-lod0-jg + swamp-rat-nest-c-idle-ja + ((swamp-rat-nest-c-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defmethod swamp-rat-nest-dummy-method-20 ((this swamp-rat-nest-dummy-a)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1048,15 +885,12 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (initialize-skeleton this *swamp-rat-nest-dummy-a-sg* '()) - (none) - ) + (none)) (defmethod swamp-rat-nest-dummy-method-20 ((this swamp-rat-nest-dummy-b)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1067,15 +901,12 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (initialize-skeleton this *swamp-rat-nest-dummy-b-sg* '()) - (none) - ) + (none)) (defmethod swamp-rat-nest-dummy-method-20 ((this swamp-rat-nest-dummy-c)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1086,84 +917,54 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (initialize-skeleton this *swamp-rat-nest-dummy-c-sg* '()) - (none) - ) + (none)) (defmethod swamp-rat-nest-dummy-method-21 ((this swamp-rat-nest-dummy-a)) (let ((v1-0 0)) (let* ((a0-1 '(5 6 7 8 9 10)) - (a1-0 (car a0-1)) - ) + (a1-0 (car a0-1))) (while (not (null? a0-1)) (when (< v1-0 6) (set! (-> this spawn-joint-array v1-0) (/ (the-as int a1-0) 8)) - (+! v1-0 1) - ) + (+! v1-0 1)) (set! a0-1 (cdr a0-1)) - (set! a1-0 (car a0-1)) - ) - ) - (set! (-> this spawn-joint-count) v1-0) - ) + (set! a1-0 (car a0-1)))) + (set! (-> this spawn-joint-count) v1-0)) (set! (-> this death-part) (-> *part-group-id-table* 292)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 295) this)) - (let ((v0-1 6)) - (set! (-> this particle-spawn-joint) v0-1) - v0-1 - ) - ) + (let ((v0-1 6)) (set! (-> this particle-spawn-joint) v0-1) v0-1)) (defmethod swamp-rat-nest-dummy-method-21 ((this swamp-rat-nest-dummy-b)) (let ((v1-0 0)) (let* ((a0-1 '(5 9 10 6 7 8)) - (a1-0 (car a0-1)) - ) + (a1-0 (car a0-1))) (while (not (null? a0-1)) (when (< v1-0 6) (set! (-> this spawn-joint-array v1-0) (/ (the-as int a1-0) 8)) - (+! v1-0 1) - ) + (+! v1-0 1)) (set! a0-1 (cdr a0-1)) - (set! a1-0 (car a0-1)) - ) - ) - (set! (-> this spawn-joint-count) v1-0) - ) + (set! a1-0 (car a0-1)))) + (set! (-> this spawn-joint-count) v1-0)) (set! (-> this death-part) (-> *part-group-id-table* 293)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 296) this)) - (let ((v0-1 9)) - (set! (-> this particle-spawn-joint) v0-1) - v0-1 - ) - ) + (let ((v0-1 9)) (set! (-> this particle-spawn-joint) v0-1) v0-1)) (defmethod swamp-rat-nest-dummy-method-21 ((this swamp-rat-nest-dummy-c)) (let ((v1-0 0)) (let* ((a0-1 '(5 6)) - (a1-0 (car a0-1)) - ) + (a1-0 (car a0-1))) (while (not (null? a0-1)) (when (< v1-0 6) (set! (-> this spawn-joint-array v1-0) (/ (the-as int a1-0) 8)) - (+! v1-0 1) - ) + (+! v1-0 1)) (set! a0-1 (cdr a0-1)) - (set! a1-0 (car a0-1)) - ) - ) - (set! (-> this spawn-joint-count) v1-0) - ) + (set! a1-0 (car a0-1)))) + (set! (-> this spawn-joint-count) v1-0)) (set! (-> this death-part) (-> *part-group-id-table* 294)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 297) this)) - (let ((v0-1 5)) - (set! (-> this particle-spawn-joint) v0-1) - v0-1 - ) - ) + (let ((v0-1 5)) (set! (-> this particle-spawn-joint) v0-1) v0-1)) diff --git a/goal_src/jak1/levels/swamp/swamp-rat.gc b/goal_src/jak1/levels/swamp/swamp-rat.gc index efdb292b08..dfdbefb7a0 100644 --- a/goal_src/jak1/levels/swamp/swamp-rat.gc +++ b/goal_src/jak1/levels/swamp/swamp-rat.gc @@ -1,435 +1,347 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/common-obs/nav-enemy.gc") -;; name: swamp-rat.gc -;; name in dgo: swamp-rat -;; dgos: L1, SWA ;; note: changed for high fps (declare-type swamp-rat-nest process-drawable) + (declare-type billy process-taskable) ;; DECOMP BEGINS (deftype swamp-rat (nav-enemy) - ((up-vector vector :inline) - (state-float float) - (state-vector vector :inline) - (_hack uint64) - (wiggle-time time-frame) - (wiggle-angle float) - (delta-wiggle-angle float) - (wiggle-factor float) - (min-height float) - (chase-rest-time time-frame) - (target-nav-time time-frame) - ) + ((up-vector vector :inline) + (state-float float) + (state-vector vector :inline) + (_hack uint64) + (wiggle-time time-frame) + (wiggle-angle float) + (delta-wiggle-angle float) + (wiggle-factor float) + (min-height float) + (chase-rest-time time-frame) + (target-nav-time time-frame)) (:states - swamp-rat-spawn - ) - ) - + swamp-rat-spawn)) -(defskelgroup *swamp-rat-sg* swamp-rat swamp-rat-lod0-jg swamp-rat-idle-ja - ((swamp-rat-lod0-mg (meters 20)) (swamp-rat-lod1-mg (meters 40)) (swamp-rat-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 4) - :longest-edge (meters 1) - ) +(defskelgroup *swamp-rat-sg* + swamp-rat + swamp-rat-lod0-jg + swamp-rat-idle-ja + ((swamp-rat-lod0-mg (meters 20)) (swamp-rat-lod1-mg (meters 40)) (swamp-rat-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 4) + :longest-edge (meters 1)) (defmethod touch-handler ((this swamp-rat) (arg0 process) (arg1 event-message-block)) (when ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) + (the-as uint 1)) (when (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) (let* ((s5-1 (-> this parent)) - (a0-4 (if (and (nonzero? s5-1) (type-type? pointer process-drawable)) - s5-1 - ) - ) - ) - (if a0-4 - (send-event (the-as process-tree a0-4) 'victory) - (go (method-of-object this nav-enemy-victory)) - ) - ) - ) - ) - ) + (a0-4 (if (and (nonzero? s5-1) (type-type? pointer process-drawable)) s5-1))) + (if a0-4 (send-event (the-as process-tree a0-4) 'victory) (go (method-of-object this nav-enemy-victory))))))) (defbehavior swamp-rat-default-event-handler swamp-rat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('victory) - (go-virtual nav-enemy-victory) - ) - (else - (nav-enemy-default-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (('victory) (go-virtual nav-enemy-victory)) + (else (nav-enemy-default-event-handler arg0 arg1 arg2 arg3)))) swamp-rat-default-event-handler (defmethod common-post ((this swamp-rat)) (when (logtest? (-> this collide-info status) (cshape-moving-flags onsurf)) (vector-deg-seek (-> this up-vector) (-> this up-vector) (-> this collide-info surface-normal) 910.2222) - (vector-normalize! (-> this up-vector) 1.0) - ) - (forward-up-nopitch->quaternion - (-> this collide-info quat) - (vector-z-quaternion! (new-stack-vector0) (-> this collide-info quat)) - (-> this up-vector) - ) + (vector-normalize! (-> this up-vector) 1.0)) + (forward-up-nopitch->quaternion (-> this collide-info quat) + (vector-z-quaternion! (new-stack-vector0) (-> this collide-info quat)) + (-> this up-vector)) (call-parent-method this) - (none) - ) + (none)) (defmethod nav-enemy-method-38 ((this swamp-rat)) - (integrate-for-enemy-with-move-to-ground! - (-> this collide-info) - (-> this collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) + (integrate-for-enemy-with-move-to-ground! (-> this collide-info) + (-> this collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) (when (< (-> this collide-info trans y) (-> this min-height)) (let ((a1-1 (new 'stack-no-clear 'vector))) (set! (-> a1-1 quad) (-> this collide-info trans quad)) (set! (-> a1-1 y) (-> this min-height)) - (move-to-ground-point! (-> this collide-info) a1-1 (-> this collide-info transv) *y-vector*) - ) - ) + (move-to-ground-point! (-> this collide-info) a1-1 (-> this collide-info transv) *y-vector*))) 0 - (none) - ) + (none)) (defstate nav-enemy-idle (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :post (behavior () - (ja-post) - ) - ) + :post + (behavior () + (ja-post))) (defstate nav-enemy-patrol (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (loop + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))))))) (defstate nav-enemy-notice (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.17)) - (ja-no-eval :group! swamp-rat-notice-ja :num! (seek! (ja-aframe 30.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe 30.0 0))) - ) - (ja-no-eval :num! (seek!)) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.17)) + (ja-no-eval :group! swamp-rat-notice-ja :num! (seek! (ja-aframe 30.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe 30.0 0)))) + (ja-no-eval :num! (seek!)) + (go-virtual nav-enemy-chase))) (defbehavior swamp-rat-update-wiggle-params swamp-rat () (let* ((f0-0 (rand-vu-float-range 0.0 1.0)) (f1-1 (+ 1.0 (* 2.0 f0-0))) (f2-2 f1-1) (f2-4 (/ 1.0 f2-2)) - (f0-2 (+ 1.0 (* 0.2 f0-0))) - ) + (f0-2 (+ 1.0 (* 0.2 f0-0)))) (set! (-> self delta-wiggle-angle) (* 910.2222 f1-1)) (set! (-> self wiggle-factor) (* 1.5 f2-4)) - (set! (-> self target-speed) (* 28672.0 f0-2)) - ) - ) + (set! (-> self target-speed) (* 28672.0 f0-2)))) (defbehavior swamp-rat-update-wiggle-target swamp-rat ((arg0 vector)) ;; og:preserve-this changed for high fps (+! (-> self wiggle-angle) (* DISPLAY_FPS_RATIO (-> self delta-wiggle-angle))) - (if (< 65536.0 (-> self wiggle-angle)) - (+! (-> self wiggle-angle) -65536.0) - ) + (if (< 65536.0 (-> self wiggle-angle)) (+! (-> self wiggle-angle) -65536.0)) (let* ((v1-3 (-> self collide-info trans)) (a1-1 (vector-! (new 'stack-no-clear 'vector) v1-3 arg0)) (s3-0 (vector-rotate-around-y! (new 'stack-no-clear 'vector) a1-1 16384.0)) - (v1-4 - (vector+*! (new 'stack-no-clear 'vector) arg0 s3-0 (* (-> self wiggle-factor) (sin (-> self wiggle-angle)))) - ) - (v0-3 (-> self nav target-pos)) - ) + (v1-4 (vector+*! (new 'stack-no-clear 'vector) arg0 s3-0 (* (-> self wiggle-factor) (sin (-> self wiggle-angle))))) + (v0-3 (-> self nav target-pos))) (set! (-> v0-3 quad) (-> v1-4 quad)) - v0-3 - ) - ) + v0-3)) (defstate nav-enemy-chase (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :trans (behavior () - (if (time-elapsed? (-> self state-time) (-> self chase-rest-time)) - (go-virtual nav-enemy-victory) - ) - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - ) - :code (behavior () - (set-time! (-> self target-nav-time)) - (set! (-> self wiggle-time) (+ (current-time) (seconds -10))) - (set! (-> self wiggle-angle) 0.0) - (set! (-> self chase-rest-time) (rand-vu-int-range (seconds 1) (seconds 4))) - (ja-channel-push! 1 (seconds 0.17)) - (ja :group! swamp-rat-run-ja :num! min) - (loop - (when (time-elapsed? (-> self wiggle-time) (seconds 1)) - (set-time! (-> self wiggle-time)) - (swamp-rat-update-wiggle-params) - ) - (suspend) - (ja :num! (loop!)) - ) - ) - :post (behavior () - (swamp-rat-update-wiggle-target (target-pos 0)) - (nav-enemy-travel-post) - ) - ) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (-> self chase-rest-time)) (go-virtual nav-enemy-victory)) + ((-> (method-of-type nav-enemy nav-enemy-chase) trans))) + :code + (behavior () + (set-time! (-> self target-nav-time)) + (set! (-> self wiggle-time) (+ (current-time) (seconds -10))) + (set! (-> self wiggle-angle) 0.0) + (set! (-> self chase-rest-time) (rand-vu-int-range (seconds 1) (seconds 4))) + (ja-channel-push! 1 (seconds 0.17)) + (ja :group! swamp-rat-run-ja :num! min) + (loop + (when (time-elapsed? (-> self wiggle-time) (seconds 1)) + (set-time! (-> self wiggle-time)) + (swamp-rat-update-wiggle-params)) + (suspend) + (ja :num! (loop!)))) + :post + (behavior () + (swamp-rat-update-wiggle-target (target-pos 0)) + (nav-enemy-travel-post))) (defstate nav-enemy-stop-chase (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (-> (method-of-type nav-enemy nav-enemy-stop-chase) code) - ) + :code + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + code)) (defstate nav-enemy-stare (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (set! (-> self rotate-speed) 1456355.5) - (set! (-> self turn-time) (seconds 0.075)) - (let ((f30-0 (rand-vu-float-range 0.8 1.2))) - (loop - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! swamp-rat-celebrate-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ja-no-eval :num! (loop!)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (let ((gp-0 (rand-vu-int-range 300 600)) - (s5-0 (current-time)) - ) - (until (time-elapsed? s5-0 gp-0) - (ja :num-func num-func-identity :frame-num 0.0) - (ja-blend-eval) - (suspend) + :code + (behavior () + (set! (-> self rotate-speed) 1456355.5) + (set! (-> self turn-time) (seconds 0.075)) + (let ((f30-0 (rand-vu-float-range 0.8 1.2))) + (loop + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! swamp-rat-celebrate-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! max f30-0))) + (ja-no-eval :num! (loop!)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (let ((gp-0 (rand-vu-int-range 300 600)) + (s5-0 (current-time))) + (until (time-elapsed? s5-0 gp-0) + (ja :num-func num-func-identity :frame-num 0.0) + (ja-blend-eval) + (suspend) + (suspend))))))) (defstate nav-enemy-give-up (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-attack (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-victory) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-victory))) (defstate nav-enemy-victory (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (-> (method-of-type nav-enemy nav-enemy-victory) code) - ) + :code + (-> (method-of-type nav-enemy nav-enemy-victory) + code)) (defstate swamp-rat-spawn (swamp-rat) :event swamp-rat-default-event-handler - :code (behavior () - (let ((gp-0 (new-stack-vector0))) - (set! (-> gp-0 x) 0.0) - (set! (-> gp-0 y) (- (-> *standard-dynamics* gravity-length))) - (set! (-> gp-0 z) 0.0) - (set! (-> gp-0 w) 1.0) - (let ((f30-0 0.125)) - (set-time! (-> self state-time)) - (ja :group! swamp-rat-fall-ja :num! min) - (loop - (set! f30-0 (seek f30-0 1.5 0.1)) - (vector-v++! (-> self collide-info transv) gp-0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (when (or (logtest? (-> self collide-info status) (cshape-moving-flags tsurf)) - (or (< (-> self collide-info trans y) (-> self min-height)) (time-elapsed? (-> self state-time) (seconds 1))) - ) - 0 - (goto cfg-13) - ) - (vector-float*! (-> self collide-info scale) *identity-vector* f30-0) - (ja :num! (loop!)) - (suspend) - ) - ) - ) - (label cfg-13) - (if (< (-> self collide-info trans y) (-> self min-height)) - (set! (-> self collide-info trans y) (-> self min-height)) - ) - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (vector-float*! (-> self collide-info scale) *identity-vector* 1.5) - (ja-no-eval :group! swamp-rat-bounce-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (if (target-in-range? self (-> self nav-info stop-chase-distance)) - (go-virtual nav-enemy-chase) - (go-virtual nav-enemy-idle) - ) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (let ((gp-0 (new-stack-vector0))) + (set! (-> gp-0 x) 0.0) + (set! (-> gp-0 y) (- (-> *standard-dynamics* gravity-length))) + (set! (-> gp-0 z) 0.0) + (set! (-> gp-0 w) 1.0) + (let ((f30-0 0.125)) + (set-time! (-> self state-time)) + (ja :group! swamp-rat-fall-ja :num! min) + (loop + (set! f30-0 (seek f30-0 1.5 0.1)) + (vector-v++! (-> self collide-info transv) gp-0) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (when (or (logtest? (-> self collide-info status) (cshape-moving-flags tsurf)) + (or (< (-> self collide-info trans y) (-> self min-height)) (time-elapsed? (-> self state-time) (seconds 1)))) + 0 + (goto cfg-13)) + (vector-float*! (-> self collide-info scale) *identity-vector* f30-0) + (ja :num! (loop!)) + (suspend)))) + (label cfg-13) + (if (< (-> self collide-info trans y) (-> self min-height)) (set! (-> self collide-info trans y) (-> self min-height))) + (set! (-> self collide-info transv quad) (-> *null-vector* quad)) + (vector-float*! (-> self collide-info scale) *identity-vector* 1.5) + (ja-no-eval :group! swamp-rat-bounce-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if (target-in-range? self (-> self nav-info stop-chase-distance)) (go-virtual nav-enemy-chase) (go-virtual nav-enemy-idle))) + :post nav-enemy-simple-post) -(define *swamp-rat-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 4 - :walk-anim 7 - :turn-anim 7 - :notice-anim 8 - :run-anim 9 - :jump-anim 9 - :jump-land-anim 6 - :victory-anim 10 - :taunt-anim 10 - :die-anim 11 - :neck-joint 7 - :run-travel-speed (meters 7) - :run-rotate-speed (degrees 7999.9995) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.075) - :walk-travel-speed (meters 2) - :walk-rotate-speed (degrees 7999.9995) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.075) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 1) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 3) - :frustration-time (seconds 1.5) - :die-anim-hold-frame 20.0 - :jump-anim-start-frame 19.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :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 (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *swamp-rat-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 4 + :walk-anim 7 + :turn-anim 7 + :notice-anim 8 + :run-anim 9 + :jump-anim 9 + :jump-land-anim 6 + :victory-anim 10 + :taunt-anim 10 + :die-anim 11 + :neck-joint 7 + :run-travel-speed (meters 7) + :run-rotate-speed (degrees 7999.9995) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.075) + :walk-travel-speed (meters 2) + :walk-rotate-speed (degrees 7999.9995) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.075) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 1) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 3) + :frustration-time (seconds 1.5) + :die-anim-hold-frame 20.0 + :jump-anim-start-frame 19.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :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 (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod initialize-collision ((this swamp-rat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4001 0.0 3686.4001) - (set-root-prim! s5-0 s4-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! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this swamp-rat)) (initialize-skeleton this *swamp-rat-sg* '()) @@ -450,15 +362,11 @@ swamp-rat-default-event-handler (set! (-> this min-height) (+ -2048.0 (-> this water height))) (set! (-> this up-vector quad) (-> *y-vector* quad)) 0 - (none) - ) + (none)) (defbehavior swamp-rat-init-by-other swamp-rat ((arg0 billy) (arg1 vector) (arg2 vector) (arg3 pickup-type) (arg4 symbol)) (initialize-collision self) - (if arg4 - (logclear! (-> self mask) (process-mask actor-pause)) - (logior! (-> self mask) (process-mask actor-pause)) - ) + (if arg4 (logclear! (-> self mask) (process-mask actor-pause)) (logior! (-> self mask) (process-mask actor-pause))) (set! (-> self collide-info trans quad) (-> arg1 quad)) (forward-up->quaternion (-> self collide-info quat) arg2 *up-vector*) (vector-float*! (-> self collide-info scale) *identity-vector* 1.5) @@ -467,5 +375,4 @@ swamp-rat-default-event-handler (nav-enemy-method-48 self) (set! (-> self enemy-info pickup-type) arg3) (go swamp-rat-spawn) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/test-zone/test-zone-obs.gc b/goal_src/jak1/levels/test-zone/test-zone-obs.gc index 6715ff573d..1228f017db 100644 --- a/goal_src/jak1/levels/test-zone/test-zone-obs.gc +++ b/goal_src/jak1/levels/test-zone/test-zone-obs.gc @@ -2,62 +2,69 @@ (in-package goal) (deftype test-actor (process-drawable) - ((root collide-shape-moving :override) + ((root collide-shape-moving :override) (birth-time time-frame) - (base vector :inline) - (old-base vector :inline) + (base vector :inline) + (old-base vector :inline) (bob-offset int64) - (bob-amount float) - ) - (:methods (init-collision! (_type_) none)) - (:state-methods idle) - ) + (bob-amount float)) + (:methods + (init-collision! (_type_) none)) + (:state-methods + idle)) (def-art-elt test-actor-ag test-actor-lod0-jg 0) (def-art-elt test-actor-ag test-actor-lod0-mg 1) (def-art-elt test-actor-ag test-actor-idle-ja 2) - -(defskelgroup *test-actor-sg* test-actor test-actor-lod0-jg test-actor-idle-ja - ((test-actor-lod0-mg (meters 9999999))) - :bounds (static-spherem 0 0 0 4.5) - :texture-level 2 - ) +(defskelgroup *test-actor-sg* + test-actor + test-actor-lod0-jg + test-actor-idle-ja + ((test-actor-lod0-mg (meters 9999999))) + :bounds (static-spherem 0 0 0 5) + :texture-level 2) (defmethod init-collision! ((this test-actor)) (let ((cshape (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> cshape dynam) (copy *standard-dynamics* 'process)) (set! (-> cshape reaction) default-collision-reaction) - (set! (-> cshape no-reaction) - (the (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) - ;; (let ((mesh (new 'process 'collide-shape-prim-mesh cshape (the uint 0) (the uint 0)))) - ;; (set! (-> mesh prim-core collide-as) (collide-kind enemy)) - ;; (set! (-> mesh collide-with) (collide-kind target)) - ;; (set! (-> mesh transform-index) 6) - ;; (set-vector! (-> mesh local-sphere) 0.0 0.0 0.0 (meters 4.5)) - ;; (set-root-prim! cshape mesh) - ;; ) - (let ((sphere (new 'process 'collide-shape-prim-sphere cshape (the uint 0)))) - (set! (-> sphere prim-core collide-as) (collide-kind enemy)) - (set! (-> sphere collide-with) (collide-kind target)) - (set! (-> sphere prim-core action) (collide-action solid)) - (set! (-> sphere prim-core offense) (collide-offense normal-attack)) - (set-vector! (-> sphere local-sphere) 0.0 0.0 0.0 (meters 2)) - (set-root-prim! cshape sphere) + (set! (-> cshape no-reaction) (the (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) + (let ((cgroup (new 'process 'collide-shape-prim-group cshape (the uint 1) 0))) + (set! (-> cgroup prim-core collide-as) (collide-kind ground-object)) + (set! (-> cgroup collide-with) (collide-kind target)) + (set! (-> cgroup prim-core action) (collide-action solid rider-plat-sticky)) + (set! (-> cgroup transform-index) 0) + (set-vector! (-> cgroup local-sphere) 0.0 0.0 0.0 (meters 5)) + (set-root-prim! cshape cgroup) + (let ((mesh (new 'process 'collide-shape-prim-mesh cshape (the uint 0) (the uint 0)))) + (set! (-> mesh prim-core collide-as) (collide-kind ground-object)) + (set! (-> mesh collide-with) (collide-kind target)) + (set! (-> mesh prim-core action) (collide-action solid rider-plat-sticky)) + (set! (-> mesh prim-core offense) (collide-offense indestructible)) + (set! (-> mesh transform-index) 0) + (set-vector! (-> mesh local-sphere) 0.0 (meters 0) 0.0 (meters 5)) + (append-prim cgroup mesh)) + ; (let ((sphere (new 'process 'collide-shape-prim-sphere cshape (the uint 0)))) + ; (set! (-> sphere prim-core collide-as) (collide-kind enemy)) + ; (set! (-> sphere collide-with) (collide-kind target)) + ; (set! (-> sphere prim-core action) (collide-action solid)) + ; (set! (-> sphere prim-core offense) (collide-offense normal-attack)) + ; (set-vector! (-> sphere local-sphere) 0.0 0.0 0.0 (meters 2)) + ; (set-root-prim! cshape sphere) + ; ) ) (set! (-> cshape nav-radius) (* 0.75 (-> cshape root-prim local-sphere w))) (backup-collide-with-as cshape) - (set! (-> this root) cshape) - ) - (none) - ) + (set! (-> this root) cshape)) + (none)) (defmethod init-from-entity! ((this test-actor) (e entity-actor)) (logior! (-> this mask) (process-mask enemy)) (init-collision! this) (process-drawable-from-entity! this e) (set! (-> this bob-amount) 1024.0) - (set! (-> this bob-offset) (+ (the int (-> this root trans x)) (the int (-> this root trans y)) (the int (-> this root trans z)))) + (set! (-> this bob-offset) + (+ (the int (-> this root trans x)) (the int (-> this root trans y)) (the int (-> this root trans z)))) (set-time! (-> this birth-time)) (vector-copy! (-> this base) (-> this root trans)) (vector-copy! (-> this old-base) (-> this root trans)) @@ -65,9 +72,7 @@ (logclear! (-> this mask) (process-mask actor-pause)) (transform-post) (go-virtual idle :proc this) - (none) - ) - + (none)) (defbehavior test-actor-init-by-other test-actor ((pos vector)) (logior! (-> self mask) (process-mask enemy)) @@ -77,47 +82,42 @@ (quaternion-identity! (-> self root quat)) (vector-identity! (-> self root scale)) (set! (-> self bob-amount) 1024.0) - (set! (-> self bob-offset) (+ (the int (-> self root trans x)) (the int (-> self root trans y)) (the int (-> self root trans z)))) + (set! (-> self bob-offset) + (+ (the int (-> self root trans x)) (the int (-> self root trans y)) (the int (-> self root trans z)))) (set-time! (-> self birth-time)) (vector-copy! (-> self base) (-> self root trans)) (vector-copy! (-> self old-base) (-> self root trans)) (logclear! (-> self mask) (process-mask actor-pause)) (transform-post) - (go-virtual idle) - ) + (go-virtual idle)) (defstate idle (test-actor) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack 'touch) - (if (= (-> proc type) target) - (send-event proc 'attack #f (static-attack-info ((shove-up (meters 2.5)) (shove-back (meters 7.5))))) - ) - ) - ) - ) - :code (behavior () - (loop - (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* (degrees 45) (seconds-per-frame))) - (let ((bob (-> self bob-amount))) - (when (< 0.0 bob) - (set! (-> self root trans y) - (+ (-> self base y) - (* bob (sin (* 109.22667 (the float (mod (+ (- (current-time) (-> self birth-time)) (-> self bob-offset)) (seconds 2)))))) - ) - ) - (update-transforms! (-> self root)) - ) - ) - ; (dotimes (i (-> self node-list length)) - ; (let* ((joint (-> self node-list data i)) (jpos (vector<-cspace! (new-stack-vector0) joint))) - ; (add-debug-sphere #t (bucket-id debug) jpos (meters 0.1) (static-rgba 0 #xff 0 #x40)) - ; (add-debug-text-sphere (!= (-> joint joint) #f) (bucket-id debug) jpos (meters 0.1) (-> joint joint name) (static-rgba 0 #xff 0 #x40)) - ; ) - ; ) - (suspend) - ) - ) - :post transform-post - ) \ No newline at end of file + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack 'touch) + ; (if (= (-> proc type) target) + ; (send-event proc 'attack #f (static-attack-info ((shove-up (meters 2.5)) (shove-back (meters 7.5))))) + ; ) + #t))) + :code + (behavior () + (loop + (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* (degrees 45) (seconds-per-frame))) + (let ((bob (-> self bob-amount))) + (when (< 0.0 bob) + (set! (-> self root trans y) + (+ (-> self base y) + (* bob + (sin (* 109.22667 (the float (mod (+ (- (current-time) (-> self birth-time)) (-> self bob-offset)) (seconds 2)))))))) + (update-transforms! (-> self root)))) + ; (debug-draw-tris (-> (res-lump-struct (-> self draw art-group data 0 extra) 'collide-mesh-group (array collide-mesh)) 0) self 2) + ; (dotimes (i (-> self node-list length)) + ; (let* ((joint (-> self node-list data i)) (jpos (vector<-cspace! (new-stack-vector0) joint))) + ; (add-debug-sphere #t (bucket-id debug) jpos (meters 0.1) (static-rgba 0 #xff 0 #x40)) + ; (add-debug-text-sphere (!= (-> joint joint) #f) (bucket-id debug) jpos (meters 0.1) (-> joint joint name) (static-rgba 0 #xff 0 #x40)) + ; ) + ; ) + (suspend))) + :post transform-post) diff --git a/goal_src/jak1/levels/title/title-obs.gc b/goal_src/jak1/levels/title/title-obs.gc index c0f98a3934..aea57628e7 100644 --- a/goal_src/jak1/levels/title/title-obs.gc +++ b/goal_src/jak1/levels/title/title-obs.gc @@ -1,153 +1,133 @@ ;;-*-Lisp-*- (in-package goal) (bundles "TIT.DGO") - (require "pc/progress-pc.gc") (require "engine/target/logic-target.gc") (require "levels/demo/static-screen.gc") -;; name: title-obs.gc -;; name in dgo: title-obs -;; dgos: TIT - ;; DECOMP BEGINS (deftype logo (process-drawable) - ((camera handle) - (camera-anim handle) - (volumes handle) - (black handle) - (target handle) - (sidekick handle) - (main-joint joint-mod) - (anim spool-anim) - (next-anim spool-anim) - (done? symbol) - ) + ((camera handle) + (camera-anim handle) + (volumes handle) + (black handle) + (target handle) + (sidekick handle) + (main-joint joint-mod) + (anim spool-anim) + (next-anim spool-anim) + (done? symbol)) (:state-methods - idle - startup - hidden - ndi - ) - ) - + idle + startup + hidden + ndi)) (defmethod relocate ((this logo) (arg0 int)) - (if (nonzero? (-> this main-joint)) - (&+! (-> this main-joint) arg0) - ) - (the-as logo ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this main-joint)) (&+! (-> this main-joint) arg0)) + (the-as logo ((method-of-type process-drawable relocate) this arg0))) (deftype logo-slave (process-drawable) - ((parent-process (pointer logo) :overlay-at parent) - (main-joint joint-mod) - ) + ((parent-process (pointer logo) :overlay-at parent) + (main-joint joint-mod)) (:state-methods - idle - ) - ) - + idle)) (defmethod relocate ((this logo-slave) (arg0 int)) - (if (nonzero? (-> this main-joint)) - (&+! (-> this main-joint) arg0) - ) - (the-as logo-slave ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this main-joint)) (&+! (-> this main-joint) arg0)) + (the-as logo-slave ((method-of-type process-drawable relocate) this arg0))) -(defskelgroup *logo-sg* logo logo-english-lod0-jg logo-idle-ja - ((logo-english-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *logo-sg* + logo + logo-english-lod0-jg + logo-idle-ja + ((logo-english-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) -(defskelgroup *logo-japan-sg* logo logo-japan-lod0-jg logo-idle-ja - ((logo-japan-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *logo-japan-sg* + logo + logo-japan-lod0-jg + logo-idle-ja + ((logo-japan-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) -(defskelgroup *logo-volumes-sg* logo-volumes logo-volumes-english-lod0-jg logo-volumes-idle-ja - ((logo-volumes-english-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *logo-volumes-sg* + logo-volumes + logo-volumes-english-lod0-jg + logo-volumes-idle-ja + ((logo-volumes-english-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *logo-volumes-japan-sg* logo-volumes logo-volumes-japan-lod0-jg logo-volumes-idle-ja - ((logo-volumes-japan-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *logo-volumes-japan-sg* + logo-volumes + logo-volumes-japan-lod0-jg + logo-volumes-idle-ja + ((logo-volumes-japan-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *logo-black-sg* logo-black logo-black-lod0-jg logo-black-idle-ja - ((logo-black-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *logo-black-sg* + logo-black + logo-black-lod0-jg + logo-black-idle-ja + ((logo-black-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *logo-cam-sg* logo-cam logo-cam-lod0-jg logo-cam-idle-ja - ((logo-cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *logo-cam-sg* + logo-cam + logo-cam-lod0-jg + logo-cam-idle-ja + ((logo-cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *ndi-sg* ndi ndi-lod0-jg ndi-idle-ja - ((ndi-lod0-mg (meters 999999))) - :bounds (static-spherem 0 10 0 30) - ) +(defskelgroup *ndi-sg* + ndi + ndi-lod0-jg + ndi-idle-ja + ((ndi-lod0-mg (meters 999999))) + :bounds (static-spherem 0 10 0 30)) -(defskelgroup *ndi-volumes-sg* ndi-volumes ndi-volumes-lod0-jg ndi-volumes-idle-ja - ((ndi-volumes-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *ndi-volumes-sg* + ndi-volumes + ndi-volumes-lod0-jg + ndi-volumes-idle-ja + ((ndi-volumes-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *ndi-cam-sg* ndi-cam ndi-cam-lod0-jg ndi-cam-idle-ja - ((ndi-cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *ndi-cam-sg* + ndi-cam + ndi-cam-lod0-jg + ndi-cam-idle-ja + ((ndi-cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) (defstate idle (logo-slave) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 uint)) - (case message - (('blend-shape) - (cond - ((-> block param 0) - (set! v0-0 (the-as uint (logior (-> self skel status) (janim-status blerc eye)))) - (set! (-> self skel status) (the-as janim-status v0-0)) - ) - (else - (set! v0-0 (the-as uint (logclear (-> self skel status) (janim-status blerc eye)))) - (set! (-> self skel status) (the-as janim-status v0-0)) - ) - ) - v0-0 - ) - (('origin-joint-index) - (set! v0-0 (-> block param 0)) - (set! (-> self draw origin-joint-index) v0-0) - v0-0 - ) - ) - ) - :code (behavior () - (ja-post) - (loop - (clone-anim-once - (ppointer->handle (-> self parent-process)) - (the-as int (-> self draw origin-joint-index)) - #t - "" - ) - (if (nonzero? (-> self main-joint)) - (set-trs! - (-> self main-joint) - (-> self parent-process 0 main-joint trans) - (the-as quaternion #f) - (-> self parent-process 0 main-joint scale) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 uint)) + (case message + (('blend-shape) + (cond + ((-> block param 0) + (set! v0-0 (the-as uint (logior (-> self skel status) (janim-status blerc eye)))) + (set! (-> self skel status) (the-as janim-status v0-0))) + (else + (set! v0-0 (the-as uint (logclear (-> self skel status) (janim-status blerc eye)))) + (set! (-> self skel status) (the-as janim-status v0-0)))) + v0-0) + (('origin-joint-index) (set! v0-0 (-> block param 0)) (set! (-> self draw origin-joint-index) v0-0) v0-0))) + :code + (behavior () + (ja-post) + (loop + (clone-anim-once (ppointer->handle (-> self parent-process)) (the-as int (-> self draw origin-joint-index)) #t "") + (if (nonzero? (-> self main-joint)) + (set-trs! (-> self main-joint) + (-> self parent-process 0 main-joint trans) + (the-as quaternion #f) + (-> self parent-process 0 main-joint scale))) + (suspend)))) (defbehavior logo-slave-init-by-other logo-slave ((arg0 entity-actor) (arg1 skeleton-group)) (set! (-> self entity) arg0) @@ -159,408 +139,278 @@ (set! (-> self draw global-effect) (draw-effect title)) (when (or (string= (-> self draw art-group name) "logo-volumes") (string= (-> self draw art-group name) "logo-volumes-japan") - (string= (-> self draw art-group name) "logo-black") - ) + (string= (-> self draw art-group name) "logo-black")) (set! (-> self main-joint) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 3)) - (set! (-> self main-joint max-dist) (the-as meters #t)) - ) + (set! (-> self main-joint max-dist) (the-as meters #t))) (set! (-> self event-hook) (-> (method-of-object self idle) event)) (go-virtual idle) - (none) - ) + (none)) (defstate startup (logo) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('update) - (remove-setting! 'process-mask) - ) - ) - ) - :exit (behavior () - (let ((a0-0 (-> self anim))) - (when (nonzero? a0-0) - (ja-abort-spooled-anim a0-0 (the-as art-joint-anim #f) -1) - (ja-channel-set! 0) - (ja-post) - (let ((a0-3 (handle->process (-> self camera)))) - (if a0-3 - (deactivate a0-3) - ) - ) - ) - ) - ) - :trans (behavior () - (if (not (none-reserved? *art-control*)) - (go-virtual hidden) - ) - (if (nonzero? (-> self next-anim)) - (spool-push *art-control* (-> self next-anim name) 0 self -1.0) - ) - ) - :code (behavior () - (while (!= (file-status *art-control* (-> self next-anim name) 0) 'active) - (set-blackout-frames (seconds 0.05)) - (suspend) - ) - (set! (-> *setting-control* current bg-a) 1.0) - (set-setting! 'bg-a 'abs 0.0 0) - (set! (-> self camera-anim) - (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-cam-sg* :to self)) - ) - (set! (-> self camera) - (ppointer->handle - (process-spawn - othercam - (handle->process (-> self camera-anim)) - 4 - #t - 'logo - :to (handle->process (-> self camera-anim)) - ) - ) - ) - (send-event (handle->process (-> self camera)) 'mask 0) - ;; og:preserve-this check language instead of territory here - (#if PC_PORT - (if (= (-> *setting-control* default language) (language-enum japanese)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('update) (remove-setting! 'process-mask)))) + :exit + (behavior () + (let ((a0-0 (-> self anim))) + (when (nonzero? a0-0) + (ja-abort-spooled-anim a0-0 (the-as art-joint-anim #f) -1) + (ja-channel-set! 0) + (ja-post) + (let ((a0-3 (handle->process (-> self camera)))) (if a0-3 (deactivate a0-3)))))) + :trans + (behavior () + (if (not (none-reserved? *art-control*)) (go-virtual hidden)) + (if (nonzero? (-> self next-anim)) (spool-push *art-control* (-> self next-anim name) 0 self -1.0))) + :code + (behavior () + (while (!= (file-status *art-control* (-> self next-anim name) 0) 'active) + (set-blackout-frames (seconds 0.05)) + (suspend)) + (set! (-> *setting-control* current bg-a) 1.0) + (set-setting! 'bg-a 'abs 0.0 0) + (set! (-> self camera-anim) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-cam-sg* :to self))) + (set! (-> self camera) + (ppointer->handle (process-spawn othercam (handle->process (-> self camera-anim)) 4 #t 'logo :to (handle->process (-> self camera-anim))))) + (send-event (handle->process (-> self camera)) 'mask 0) + ;; og:preserve-this check language instead of territory here + (#if PC_PORT + (if (= (-> *setting-control* default language) (language-enum japanese)) (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-japan-sg* :to self))) - (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self))) - ) - (case (scf-get-territory) - ((GAME_TERRITORY_SCEI) - (set! (-> self volumes) - (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-japan-sg* :to self)) - ) - ) - (else - (set! (-> self volumes) - (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self)) - ) - ) - ) - ) - (send-event (handle->process (-> self volumes)) 'origin-joint-index 3) - (set! (-> self black) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-black-sg* :to self))) - (send-event (handle->process (-> self black)) 'origin-joint-index 3) - (set! (-> self anim) (-> self next-anim)) - (set! (-> self next-anim) - (new 'static 'spool-anim - :name "logo-intro-2" - :index 7 - :parts 15 - :command-list '((260 want-force-inside village1 #t) - (261 kill "sage-23") - (261 kill "assistant-11") - (261 kill "explorer-4") - ((new 'static 'bfloat :data 261.5) kill "farmer-3") - ((new 'static 'bfloat :data 261.5) kill "oracle-1") - ((new 'static 'bfloat :data 261.5) kill "warp-gate-switch-3") - (262 kill "sharkey-12") - (262 kill "fishermans-boat-2") - (262 kill "evilplant-2") - ((new 'static 'bfloat :data 262.5) kill "revcycle-8") - ((new 'static 'bfloat :data 262.5) kill "revcycleprop-2") - ((new 'static 'bfloat :data 262.5) kill "water-vol-8") - (263 kill "water-vol-9") - (263 kill "water-vol-10") - (263 kill "reflector-middle-2") - (400 want-force-inside village1 #f) - (400 display-level village1 display) - (400 save) - (500 set! *spawn-actors* #t) - ) - ) - ) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (set! *spawn-actors* #f) - (add-setting! 'process-mask 'set 0.0 (process-mask progress)) - (apply-settings *setting-control*) - (deactivate (handle->process (-> self black))) - (deactivate (handle->process (-> self volumes))) - (send-event (ppointer->process (-> self parent)) 'wait) - (send-event self 'update) - (ja-channel-set! 1) - ;; og:preserve-this PAL patch here - (ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (logior! (-> self skel status) (janim-status spool)) - (suspend) - (if (not (paused?)) - (ja :num! (seek!)) - ) - ) - (set! (-> self anim) (-> self next-anim)) - (set! (-> self next-anim) - (new 'static 'spool-anim - :name "logo-loop" - :index 9 - :parts 17 - :command-list '((61 kill "sage-23") - (61 kill "assistant-11") - (61 kill "explorer-4") - ((new 'static 'bfloat :data 61.5) kill "farmer-3") - ((new 'static 'bfloat :data 61.5) kill "oracle-1") - ((new 'static 'bfloat :data 61.5) kill "warp-gate-switch-3") - (62 kill "sharkey-12") - (62 kill "fishermans-boat-2") - (62 kill "evilplant-2") - ((new 'static 'bfloat :data 62.5) kill "revcycle-8") - ((new 'static 'bfloat :data 62.5) kill "revcycleprop-2") - ((new 'static 'bfloat :data 62.5) kill "water-vol-8") - (63 kill "water-vol-9") - (63 kill "water-vol-10") - (63 kill "reflector-middle-2") - ) - ) - ) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (remove-exit) - (go-virtual idle) - ) - :post (behavior () - (if *progress-process* - (logior! (-> self draw status) (draw-status skip-bones)) - (logclear! (-> self draw status) (draw-status skip-bones)) - ) - (let ((a3-0 (new-stack-vector0)) - (a1-0 (new-stack-vector0)) - ) - (let ((f0-0 (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) - 0.87 - 1.0 - ) - ) - ) - (set-vector! a3-0 f0-0 f0-0 1.0 1.0) - ) - (set-vector! - a1-0 - (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) - 2048.0 - 0.0 - ) - (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) - -1228.8 - 0.0 - ) - 0.0 - 1.0 - ) - (set-trs! (-> self main-joint) a1-0 (the-as quaternion #f) a3-0) - ) - (ja-post) - ) - ) - -(defstate idle (logo) - :virtual #t - :exit (-> (method-of-type logo startup) exit) - :trans (-> (method-of-type logo startup) trans) - :code (behavior () - (loop + (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self)))) + (case (scf-get-territory) + ((GAME_TERRITORY_SCEI) + (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-japan-sg* :to self)))) + (else + (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self)))))) + (send-event (handle->process (-> self volumes)) 'origin-joint-index 3) + (set! (-> self black) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-black-sg* :to self))) + (send-event (handle->process (-> self black)) 'origin-joint-index 3) (set! (-> self anim) (-> self next-anim)) - (if (not (handle->process (-> self camera))) - (set! (-> self camera) - (ppointer->handle - (process-spawn - othercam - (handle->process (-> self camera-anim)) - 4 - #t - 'logo - :to (handle->process (-> self camera-anim)) - ) - ) - ) - ) + (set! (-> self next-anim) + (new 'static + 'spool-anim + :name "logo-intro-2" + :index 7 + :parts 15 + :command-list + '((260 want-force-inside village1 #t) + (261 kill "sage-23") + (261 kill "assistant-11") + (261 kill "explorer-4") + ((new 'static 'bfloat :data 261.5) kill "farmer-3") + ((new 'static 'bfloat :data 261.5) kill "oracle-1") + ((new 'static 'bfloat :data 261.5) kill "warp-gate-switch-3") + (262 kill "sharkey-12") + (262 kill "fishermans-boat-2") + (262 kill "evilplant-2") + ((new 'static 'bfloat :data 262.5) kill "revcycle-8") + ((new 'static 'bfloat :data 262.5) kill "revcycleprop-2") + ((new 'static 'bfloat :data 262.5) kill "water-vol-8") + (263 kill "water-vol-9") + (263 kill "water-vol-10") + (263 kill "reflector-middle-2") + (400 want-force-inside village1 #f) + (400 display-level village1 display) + (400 save) + (500 set! *spawn-actors* #t)))) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) (set! *spawn-actors* #f) + (add-setting! 'process-mask 'set 0.0 (process-mask progress)) + (apply-settings *setting-control*) + (deactivate (handle->process (-> self black))) + (deactivate (handle->process (-> self volumes))) + (send-event (ppointer->process (-> self parent)) 'wait) + (send-event self 'update) (ja-channel-set! 1) ;; og:preserve-this PAL patch here - (ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0) + (ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (logior! (-> self skel status) (janim-status spool)) (suspend) - (if (not (paused?)) - (ja :num! (seek!)) - ) - ) - (set! *spawn-actors* #t) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - ) - ) - :post (-> (method-of-type logo startup) post) - ) + (if (not (paused?)) (ja :num! (seek!)))) + (set! (-> self anim) (-> self next-anim)) + (set! (-> self next-anim) + (new 'static + 'spool-anim + :name "logo-loop" + :index 9 + :parts 17 + :command-list + '((61 kill "sage-23") + (61 kill "assistant-11") + (61 kill "explorer-4") + ((new 'static 'bfloat :data 61.5) kill "farmer-3") + ((new 'static 'bfloat :data 61.5) kill "oracle-1") + ((new 'static 'bfloat :data 61.5) kill "warp-gate-switch-3") + (62 kill "sharkey-12") + (62 kill "fishermans-boat-2") + (62 kill "evilplant-2") + ((new 'static 'bfloat :data 62.5) kill "revcycle-8") + ((new 'static 'bfloat :data 62.5) kill "revcycleprop-2") + ((new 'static 'bfloat :data 62.5) kill "water-vol-8") + (63 kill "water-vol-9") + (63 kill "water-vol-10") + (63 kill "reflector-middle-2")))) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (remove-exit) + (go-virtual idle)) + :post + (behavior () + (if *progress-process* + (logior! (-> self draw status) (draw-status skip-bones)) + (logclear! (-> self draw status) (draw-status skip-bones))) + (let ((a3-0 (new-stack-vector0)) + (a1-0 (new-stack-vector0))) + (let ((f0-0 (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) 0.87 1.0))) + (set-vector! a3-0 f0-0 f0-0 1.0 1.0)) + (set-vector! a1-0 + (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) 2048.0 0.0) + (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) -1228.8 0.0) + 0.0 + 1.0) + (set-trs! (-> self main-joint) a1-0 (the-as quaternion #f) a3-0)) + (ja-post))) + +(defstate idle (logo) + :virtual #t + :exit + (-> (method-of-type logo startup) + exit) + :trans + (-> (method-of-type logo startup) + trans) + :code + (behavior () + (loop + (set! (-> self anim) (-> self next-anim)) + (if (not (handle->process (-> self camera))) + (set! (-> self camera) + (ppointer->handle (process-spawn othercam (handle->process (-> self camera-anim)) 4 #t 'logo :to (handle->process (-> self camera-anim)))))) + (set! *spawn-actors* #f) + (ja-channel-set! 1) + ;; og:preserve-this PAL patch here + (ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (logior! (-> self skel status) (janim-status spool)) + (suspend) + (if (not (paused?)) (ja :num! (seek!)))) + (set! *spawn-actors* #t) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)))) + :post + (-> (method-of-type logo startup) + post)) (defstate hidden (logo) :virtual #t - :trans (behavior () - (if (nonzero? (-> self next-anim)) - (spool-push *art-control* (-> self next-anim name) 0 self -1.0) - ) - ) - :code (behavior () - (ja-channel-set! 0) - (ja-post) - (let ((gp-0 *master-mode*)) - (set! *master-mode* 'game) - (clear-rec *art-control*) - (set! *master-mode* gp-0) - ) - (loop - (when (and (none-reserved? *art-control*) (not (paused?))) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 0.1)) - (set! *camera-look-through-other* 2) - (suspend) - ) - ) - (go-virtual idle) - ) - (set! *camera-look-through-other* 2) - (suspend) - ) - ) - ) + :trans + (behavior () + (if (nonzero? (-> self next-anim)) (spool-push *art-control* (-> self next-anim name) 0 self -1.0))) + :code + (behavior () + (ja-channel-set! 0) + (ja-post) + (let ((gp-0 *master-mode*)) (set! *master-mode* 'game) (clear-rec *art-control*) (set! *master-mode* gp-0)) + (loop + (when (and (none-reserved? *art-control*) (not (paused?))) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 0.1)) (set! *camera-look-through-other* 2) (suspend))) + (go-virtual idle)) + (set! *camera-look-through-other* 2) + (suspend)))) (defstate ndi (logo) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('blackout) - (set-setting! 'bg-a 'abs 1.0 0) - ) - ) - ) - :enter (behavior () - (set-setting! 'bg-a 'abs 0.0 0) - (apply-settings *setting-control*) - (set-time! (-> self state-time)) - (if *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 hour) 12) - ) - (set! (-> self done?) #f) - ) - :exit (behavior () - ((-> (method-of-type logo startup) exit)) - (set-blackout-frames (seconds 0.035)) - ) - :trans (behavior () - ((-> (method-of-type logo startup) trans)) - ;; og:preserve-this - (if (and (or *debug-segment* PC_PORT) - (cpad-pressed? 0 start circle x) - (member (level-status *level* 'village1) '(loaded active)) - ) - (set-setting! 'bg-a 'abs 1.0 0) - ) - (when (and (= (-> *setting-control* current bg-a) 1.0) - (and (member (level-status *level* 'village1) '(active loaded)) - ;; og:preserve-this i think we can forgo the time check here... - (#if PC_PORT #t (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 3))) - (let ((gp-2 (level-get *level* 'village1))) - (when gp-2 - (load-state-want-levels 'title 'village1) - (load-state-want-display-level 'village1 'display-self) - (load-state-want-vis 'vi1) - (set-force-inside! *load-state* 'village1 #t) - (!= (-> gp-2 all-visible?) 'loading) - ) - ) - ) - ) - (load-state-want-display-level 'village1 'special) - (if (not (-> self done?)) - (ja-abort-spooled-anim (-> self anim) (the-as art-joint-anim #f) -1) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('blackout) (set-setting! 'bg-a 'abs 1.0 0)))) + :enter + (behavior () + (set-setting! 'bg-a 'abs 0.0 0) + (apply-settings *setting-control*) + (set-time! (-> self state-time)) + (if *time-of-day-proc* (set! (-> *time-of-day-proc* 0 hour) 12)) + (set! (-> self done?) #f)) + :exit + (behavior () + ((-> (method-of-type logo startup) exit)) + (set-blackout-frames (seconds 0.035))) + :trans + (behavior () + ((-> (method-of-type logo startup) trans)) + ;; og:preserve-this + (if (and (or *debug-segment* PC_PORT) + (cpad-pressed? 0 start circle x) + (member (level-status *level* 'village1) '(loaded active))) + (set-setting! 'bg-a 'abs 1.0 0)) + (when (and (= (-> *setting-control* current bg-a) 1.0) + (and (member (level-status *level* 'village1) '(active loaded)) + ;; og:preserve-this i think we can forgo the time check here... + (#if PC_PORT #t (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 3))) + (let ((gp-2 (level-get *level* 'village1))) + (when gp-2 + (load-state-want-levels 'title 'village1) + (load-state-want-display-level 'village1 'display-self) + (load-state-want-vis 'vi1) + (set-force-inside! *load-state* 'village1 #t) + (!= (-> gp-2 all-visible?) 'loading))))) + (load-state-want-display-level 'village1 'special) + (if (not (-> self done?)) (ja-abort-spooled-anim (-> self anim) (the-as art-joint-anim #f) -1)) + (set! (-> self done?) #t) + (deactivate self)) + (if *time-of-day-proc* (set! (-> *time-of-day-proc* 0 hour) 12))) + :code + (behavior () + (while (!= (file-status *art-control* (-> self next-anim name) 0) 'active) + (set-blackout-frames (seconds 0.05)) + (suspend)) + (set! (-> *setting-control* current bg-a) 1.0) + (set! (-> self camera-anim) (ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-cam-sg* :to self))) + (set! (-> self camera) + (ppointer->handle (process-spawn othercam (handle->process (-> self camera-anim)) 3 #t 'logo :to (handle->process (-> self camera-anim))))) + (send-event (handle->process (-> self camera)) 'mask 0) + (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-volumes-sg* :to self))) + (send-event (handle->process (-> self volumes)) 'origin-joint-index 3) + (set! (-> self target) (ppointer->handle (process-spawn logo-slave #f *jchar-sg* :to self))) + (send-event (handle->process (-> self target)) 'blend-shape #t) + (send-event (handle->process (-> self target)) 'origin-joint-index 33) + (set! (-> self sidekick) (ppointer->handle (process-spawn logo-slave #f *sidekick-sg* :to self))) + (send-event (handle->process (-> self sidekick)) 'blend-shape #t) + (send-event (handle->process (-> self sidekick)) 'origin-joint-index 6) + (set! (-> self anim) (-> self next-anim)) + (set! (-> self next-anim) (new 'static 'spool-anim :name "logo-intro" :index 5 :parts 3 :command-list '())) + ;; og:preserve-this + (#cond + (PC_PORT + (cond + (*quit-to-title* (set! *quit-to-title* #f)) + (else + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func))))) + (#t + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)))) (set! (-> self done?) #t) - (deactivate self) - ) - (if *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 hour) 12) - ) - ) - :code (behavior () - (while (!= (file-status *art-control* (-> self next-anim name) 0) 'active) - (set-blackout-frames (seconds 0.05)) - (suspend) - ) - (set! (-> *setting-control* current bg-a) 1.0) - (set! (-> self camera-anim) - (ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-cam-sg* :to self)) - ) - (set! (-> self camera) - (ppointer->handle - (process-spawn - othercam - (handle->process (-> self camera-anim)) - 3 - #t - 'logo - :to (handle->process (-> self camera-anim)) - ) - ) - ) - (send-event (handle->process (-> self camera)) 'mask 0) - (set! (-> self volumes) - (ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-volumes-sg* :to self)) - ) - (send-event (handle->process (-> self volumes)) 'origin-joint-index 3) - (set! (-> self target) (ppointer->handle (process-spawn logo-slave #f *jchar-sg* :to self))) - (send-event (handle->process (-> self target)) 'blend-shape #t) - (send-event (handle->process (-> self target)) 'origin-joint-index 33) - (set! (-> self sidekick) (ppointer->handle (process-spawn logo-slave #f *sidekick-sg* :to self))) - (send-event (handle->process (-> self sidekick)) 'blend-shape #t) - (send-event (handle->process (-> self sidekick)) 'origin-joint-index 6) - (set! (-> self anim) (-> self next-anim)) - (set! (-> self next-anim) (new 'static 'spool-anim :name "logo-intro" :index 5 :parts 3 :command-list '())) - ;; og:preserve-this - (#cond - (PC_PORT - (cond - (*quit-to-title* - (set! *quit-to-title* #f)) - (else - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - )) - )) - (#t - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - )) - (set! (-> self done?) #t) - (set-setting! 'bg-a 'abs 1.0 0) - (anim-loop) - ) - :post (behavior () - (ja-post) - ) - ) + (set-setting! 'bg-a 'abs 1.0 0) + (anim-loop)) + :post + (behavior () + (ja-post))) (defbehavior logo-init-by-other logo ((arg0 entity-actor) (arg1 vector) (arg2 symbol)) (stack-size-set! (-> self main-thread) 512) @@ -575,66 +425,59 @@ ;; og:preserve-this check language instead of territory here (#if PC_PORT (if (= (-> *setting-control* default language) (language-enum japanese)) - (initialize-skeleton self *logo-japan-sg* '()) - (initialize-skeleton self *logo-sg* '()) - ) + (initialize-skeleton self *logo-japan-sg* '()) + (initialize-skeleton self *logo-sg* '())) (case (scf-get-territory) - ((GAME_TERRITORY_SCEI) - (initialize-skeleton self *logo-japan-sg* '()) - ) - (else - (initialize-skeleton self *logo-sg* '()) - ) - ) - ) + ((GAME_TERRITORY_SCEI) (initialize-skeleton self *logo-japan-sg* '())) + (else (initialize-skeleton self *logo-sg* '())))) (set! (-> self main-joint) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 3)) (set! (-> self main-joint max-dist) (the-as meters #t)) - (set! (-> self next-anim) (new 'static 'spool-anim - :name "logo-intro" - :index 5 - :parts 3 - :command-list '((0 want-levels title village1) - (5 display-level village1 special) - (5 want-vis vi1) - (5 want-force-inside village1 #t) - (115 display-level village1 display-self) - (115 save) - (115 kill "sage-23") - (115 kill "assistant-11") - (115 kill "explorer-4") - (115 kill "farmer-3") - (115 kill "oracle-1") - (115 kill "warp-gate-switch-3") - (115 kill "sharkey-12") - (115 kill "fishermans-boat-2") - (115 kill "evilplant-2") - (115 kill "revcycle-8") - (115 kill "revcycleprop-2") - (115 kill "water-vol-8") - (115 kill "water-vol-9") - (115 kill "water-vol-10") - (115 kill "reflector-middle-2") - ) - ) - ) - (set! (-> self draw origin-joint-index) (the-as uint 3)) - ) + (set! (-> self next-anim) + (new 'static + 'spool-anim + :name "logo-intro" + :index 5 + :parts 3 + :command-list + '((0 want-levels title village1) + (5 display-level village1 special) + (5 want-vis vi1) + (5 want-force-inside village1 #t) + (115 display-level village1 display-self) + (115 save) + (115 kill "sage-23") + (115 kill "assistant-11") + (115 kill "explorer-4") + (115 kill "farmer-3") + (115 kill "oracle-1") + (115 kill "warp-gate-switch-3") + (115 kill "sharkey-12") + (115 kill "fishermans-boat-2") + (115 kill "evilplant-2") + (115 kill "revcycle-8") + (115 kill "revcycleprop-2") + (115 kill "water-vol-8") + (115 kill "water-vol-9") + (115 kill "water-vol-10") + (115 kill "reflector-middle-2")))) + (set! (-> self draw origin-joint-index) (the-as uint 3))) (('ndi) (set! (-> *time-of-day-context* title-light-group dir1 levels x) 1.0) (set! (-> *time-of-day-context* title-light-group ambi levels x) 1.0) (initialize-skeleton self *ndi-sg* '()) (set! (-> self draw origin-joint-index) (the-as uint 3)) (set! (-> self next-anim) - (new 'static 'spool-anim :name "ndi-intro" :index 3 :parts 4 :command-list '((0 want-levels title village1) - (5 want-vis vi1) - (5 want-force-inside village1 #t) - (6 save) - (453 send-event self blackout) - ) - ) - ) - ) - ) + (new 'static + 'spool-anim + :name "ndi-intro" + :index 3 + :parts 4 + :command-list + '((0 want-levels title village1) + (5 want-vis vi1) + (5 want-force-inside village1 #t) + (6 save) + (453 send-event self blackout)))))) (logior! (-> self skel status) (janim-status inited)) (set! (-> self draw global-effect) (draw-effect title)) (set! (-> self draw shadow-mask) (the-as uint 255)) @@ -642,224 +485,151 @@ (set! (-> self volumes) (the-as handle #f)) (set! (-> self black) (the-as handle #f)) (cond - ((= arg2 'logo) - (go-virtual startup) - ) - ((= arg2 'ndi) - (go-virtual ndi) - ) - ) - (none) - ) + ((= arg2 'logo) (go-virtual startup)) + ((= arg2 'ndi) (go-virtual ndi))) + (none)) (defstate target-title (target) :event target-generic-event-handler - :enter (behavior () - (set-setting! 'music-volume 'abs 0.0 0) - (set-setting! 'sfx-volume 'abs 0.0 0) - (set-setting! 'ambient-volume 'abs 0.0 0) - (set-setting! 'allow-pause #f 0.0 0) - (set-setting! 'allow-progress #f 0.0 0) - (set-setting! 'border-mode #f 0.0 0) - (apply-settings *setting-control*) - (set-time! (-> self state-time)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - (ja-channel-set! 0) - (ja-post) - (send-event *camera* 'change-state cam-fixed 0) - ) - :exit (behavior () - (when (not (or (= (-> self next-state name) 'target-title-play) (= (-> self next-state name) 'target-title-wait))) - (if (-> self manipy) - (deactivate (-> self manipy 0)) - ) - ) - ) - :trans (behavior () - (hide-hud-quick) - (spool-push *art-control* "ndi-intro" 0 self -1.0) - ;; og:preserve-this PAL patch here - (if *sound-player-enable* - (sound-group-pause (sound-group music)) - ) - ) - :code (behavior () - (let ((gp-0 (the-as handle #f))) + :enter + (behavior () + (set-setting! 'music-volume 'abs 0.0 0) + (set-setting! 'sfx-volume 'abs 0.0 0) + (set-setting! 'ambient-volume 'abs 0.0 0) + (set-setting! 'allow-pause #f 0.0 0) + (set-setting! 'allow-progress #f 0.0 0) + (set-setting! 'border-mode #f 0.0 0) + (apply-settings *setting-control*) + (set-time! (-> self state-time)) + (set! (-> self manipy) (the-as (pointer manipy) #f)) + (ja-channel-set! 0) + (ja-post) + (send-event *camera* 'change-state cam-fixed 0)) + :exit + (behavior () + (when (not (or (= (-> self next-state name) 'target-title-play) (= (-> self next-state name) 'target-title-wait))) + (if (-> self manipy) (deactivate (-> self manipy 0))))) + :trans + (behavior () + (hide-hud-quick) + (spool-push *art-control* "ndi-intro" 0 self -1.0) ;; og:preserve-this PAL patch here - (cond - ((and (= (scf-get-territory) GAME_TERRITORY_SCEI) *first-boot*) - (set! *first-boot* #f) - (set! gp-0 (ppointer->handle (static-screen-spawn - 5 - (new 'static 'texture-id :page #x649) - (new 'static 'texture-id :index #x1 :page #x649) - (new 'static 'texture-id :index #x2 :page #x649) - (seconds 3) - #f - self - ) - ) - ) - ) - (else - (while (!= (file-status *art-control* "ndi-intro" 0) 'active) - (set-blackout-frames (seconds 0.05)) + (if *sound-player-enable* (sound-group-pause (sound-group music)))) + :code + (behavior () + (let ((gp-0 (the-as handle #f))) + ;; og:preserve-this PAL patch here + (cond + ((and (= (scf-get-territory) GAME_TERRITORY_SCEI) *first-boot*) + (set! *first-boot* #f) + (set! gp-0 + (ppointer->handle (static-screen-spawn 5 + (new 'static 'texture-id :page #x649) + (new 'static 'texture-id :index #x1 :page #x649) + (new 'static 'texture-id :index #x2 :page #x649) + (seconds 3) + #f + self)))) + (else + (while (!= (file-status *art-control* "ndi-intro" 0) 'active) + (set-blackout-frames (seconds 0.05)) + (suspend)) + (let ((s5-1 (current-time))) (until (time-elapsed? s5-1 (seconds 0.25)) (set-blackout-frames (seconds 0.05)) (suspend))))) + (label cfg-8) + (let ((s5-2 (new 'stack-no-clear 'mc-slot-info))) + (mc-get-slot-info 0 s5-2) + (when (or (zero? (-> s5-2 known)) (handle->process (the-as int gp-0))) + (if (not (handle->process (the-as int gp-0))) (set-blackout-frames (seconds 0.05))) (suspend) - ) - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 (seconds 0.25)) - (set-blackout-frames (seconds 0.05)) - (suspend) - ) - ) - ) - ) - (label cfg-8) - (let ((s5-2 (new 'stack-no-clear 'mc-slot-info))) - (mc-get-slot-info 0 s5-2) - (when (or (zero? (-> s5-2 known)) (handle->process (the-as int gp-0))) - (if (not (handle->process (the-as int gp-0))) - (set-blackout-frames (seconds 0.05)) - ) - (suspend) - (goto cfg-8) - ) - (set! (-> *setting-control* default bg-a) 0.0) - (when (or (zero? (-> s5-2 handle)) - (and (nonzero? (-> s5-2 formatted)) (zero? (-> s5-2 inited)) (< (-> s5-2 mem-actual) (-> s5-2 mem-required))) - ) - (mem-copy! (the-as pointer *auto-save-info*) (the-as pointer s5-2) 300) - (set-blackout-frames 0) - (let ((gp-1 7)) - (if (zero? (-> s5-2 handle)) - (set! gp-1 8) - ) - (set-setting! 'allow-progress #t 0.0 0) + (goto cfg-8)) + (set! (-> *setting-control* default bg-a) 0.0) + (when (or (zero? (-> s5-2 handle)) + (and (nonzero? (-> s5-2 formatted)) (zero? (-> s5-2 inited)) (< (-> s5-2 mem-actual) (-> s5-2 mem-required)))) + (mem-copy! (the-as pointer *auto-save-info*) (the-as pointer s5-2) 300) (set-blackout-frames 0) - (set! (-> *setting-control* default bg-a-force) 0.0) + (let ((gp-1 7)) + (if (zero? (-> s5-2 handle)) (set! gp-1 8)) + (set-setting! 'allow-progress #t 0.0 0) + (set-blackout-frames 0) + (set! (-> *setting-control* default bg-a-force) 0.0) + (apply-settings *setting-control*) + (set! (-> *setting-control* current bg-a) 0.0) + (set! (-> *setting-control* current bg-a-force) 0.0) + (activate-progress *dproc* (the-as progress-screen gp-1))) + (set-setting! 'allow-progress #f 0.0 0) (apply-settings *setting-control*) - (set! (-> *setting-control* current bg-a) 0.0) - (set! (-> *setting-control* current bg-a-force) 0.0) - (activate-progress *dproc* (the-as progress-screen gp-1)) - ) - (set-setting! 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - (while *progress-process* - (suspend) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.01)) - (suspend) - ) - ) - (goto cfg-41) - ) - ) - ) - (label cfg-41) - (let ((gp-3 (entity-by-name "logo-1"))) - (let ((v1-53 (process-spawn logo gp-3 (-> gp-3 extra trans) 'ndi :to self))) - (set! (-> self manipy) (the-as (pointer manipy) v1-53)) - (let ((s5-4 (ppointer->handle v1-53))) - (while (handle->process (the-as handle s5-4)) - (suspend) - ) - ) - ) - (set! (-> self manipy) - (the-as (pointer manipy) (process-spawn logo gp-3 (-> gp-3 extra trans) 'logo :to self)) - ) - ) - (go target-title-play) - ) - :post target-no-move-post - ) + (while *progress-process* + (suspend)) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.01)) (suspend))) + (goto cfg-41)))) + (label cfg-41) + (let ((gp-3 (entity-by-name "logo-1"))) + (let ((v1-53 (process-spawn logo gp-3 (-> gp-3 extra trans) 'ndi :to self))) + (set! (-> self manipy) (the-as (pointer manipy) v1-53)) + (let ((s5-4 (ppointer->handle v1-53))) (while (handle->process (the-as handle s5-4)) (suspend)))) + (set! (-> self manipy) (the-as (pointer manipy) (process-spawn logo gp-3 (-> gp-3 extra trans) 'logo :to self)))) + (go target-title-play)) + :post target-no-move-post) (defstate target-title-play (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('wait) - (go target-title-wait) - ) - (('reset) - (deactivate (-> self manipy 0)) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set-setting! 'allow-pause #f 0.0 0) - (set-setting! 'allow-progress #f 0.0 0) - ) - :exit (-> target-title exit) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('wait) (go target-title-wait)) + (('reset) (deactivate (-> self manipy 0))) + (else (target-generic-event-handler proc argc message block)))) + :enter + (behavior () + (set-setting! 'allow-pause #f 0.0 0) + (set-setting! 'allow-progress #f 0.0 0)) + :exit + (-> target-title + exit) :trans hide-hud-quick :code anim-loop - :post target-no-move-post - ) + :post target-no-move-post) (defstate target-title-wait (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('play) - (go target-title-play) - ) - (('reset) - (deactivate (-> self manipy 0)) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (remove-setting! 'ambient-volume) - (remove-setting! 'sfx-volume) - (remove-setting! 'music-volume) - ;; og:preserve-this PAL patch here (code removal) - (sound-group-continue (sound-group music)) - (when *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) - (set! *time-of-day-fast* #t) - ) - ) - :exit (behavior () - (when *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) - (set! *time-of-day-fast* #f) - ) - ;; og:preserve-this PAL patch here - (remove-setting! 'allow-pause) - (remove-setting! 'allow-progress) - ((-> target-title exit)) - ) - :trans (behavior () - (hide-hud-quick) - ;; og:preserve-this PAL patch here - (when (cpad-pressed? 0 start) - (set-setting! 'allow-progress #t 0.0 0) - (apply-settings *setting-control*) - (activate-progress *dproc* (progress-screen title)) - (set-setting! 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - ) - (when (and (< (mod (-> *display* real-frame-counter) 300) 270) (not *progress-process*)) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 80 170 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-12 gp-0)) - (set! (-> v1-12 width) (the float 352)) - ) - (let ((v1-13 gp-0)) - (set! (-> v1-13 height) (the float 40)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text (lookup-text! *common-text* (text-id press-start) #f) gp-0 #f 128 22) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('play) (go target-title-play)) + (('reset) (deactivate (-> self manipy 0))) + (else (target-generic-event-handler proc argc message block)))) + :enter + (behavior () + (remove-setting! 'ambient-volume) + (remove-setting! 'sfx-volume) + (remove-setting! 'music-volume) + ;; og:preserve-this PAL patch here (code removal) + (sound-group-continue (sound-group music)) + (when *time-of-day-proc* + (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) + (set! *time-of-day-fast* #t))) + :exit + (behavior () + (when *time-of-day-proc* + (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) + (set! *time-of-day-fast* #f)) + ;; og:preserve-this PAL patch here + (remove-setting! 'allow-pause) + (remove-setting! 'allow-progress) + ((-> target-title exit))) + :trans + (behavior () + (hide-hud-quick) + ;; og:preserve-this PAL patch here + (when (cpad-pressed? 0 start) + (set-setting! 'allow-progress #t 0.0 0) + (apply-settings *setting-control*) + (activate-progress *dproc* (progress-screen title)) + (set-setting! 'allow-progress #f 0.0 0) + (apply-settings *setting-control*)) + (when (and (< (mod (-> *display* real-frame-counter) 300) 270) (not *progress-process*)) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 80 170 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-12 gp-0)) (set! (-> v1-12 width) (the float 352))) + (let ((v1-13 gp-0)) (set! (-> v1-13 height) (the float 40))) + (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text (lookup-text! *common-text* (text-id press-start) #f) gp-0 #f 128 22)))) :code anim-loop - :post target-no-move-post - ) + :post target-no-move-post) diff --git a/goal_src/jak1/levels/training/training-obs.gc b/goal_src/jak1/levels/training/training-obs.gc index 37ce1e4c4a..f762c7f3aa 100644 --- a/goal_src/jak1/levels/training/training-obs.gc +++ b/goal_src/jak1/levels/training/training-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "TRA.DGO") - (require "engine/common-obs/rigid-body.gc") (require "engine/common-obs/baseplat.gc") (require "engine/game/task/task-control.gc") @@ -9,204 +8,136 @@ (require "engine/anim/joint-exploder.gc") (require "engine/camera/pov-camera-h.gc") -;; name: training-obs.gc -;; name in dgo: training-obs -;; dgos: L1, TRA - ;; DECOMP BEGINS -(deftype training-water (water-anim) - () - ) - - -(define ripple-for-training-water (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) +(deftype training-water (water-anim) ()) + +(define ripple-for-training-water + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this training-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this 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) - (set! (-> v1-2 waveform) ripple-for-training-water) - ) - (none) - ) + (set! (-> v1-2 waveform) ripple-for-training-water)) + (none)) -(defskelgroup *training-cam-sg* trainingcam trainingcam-lod0-jg -1 - ((trainingcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 80) - ) +(defskelgroup *training-cam-sg* + trainingcam + trainingcam-lod0-jg + -1 + ((trainingcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 80)) (deftype training-cam (process) - ((root trsq) - (range meters) - (index int32) - (state-time time-frame) - ) + ((root trsq) + (range meters) + (index int32) + (state-time time-frame)) (:state-methods - idle - ) - ) - + idle)) (defmethod relocate ((this training-cam) (arg0 int)) - (if (nonzero? (-> this root)) - (&+! (-> this root) arg0) - ) - (the-as training-cam ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this root)) (&+! (-> this root) arg0)) + (the-as training-cam ((method-of-type process relocate) this arg0))) (defstate idle (training-cam) :virtual #t - :code (behavior () - (loop - (when (and *target* - (< (vector-vector-distance (target-pos 0) (-> self root trans)) (-> self range)) - (-> *setting-control* current play-hints) - (and (< 0.0 (-> *setting-control* current dialog-volume)) - (let ((a0-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (or (not a0-3) (not (logtest? (-> a0-3 extra perm status) (entity-perm-status dead)))) - ) - ) - ) - (when (!= (-> self index) 6) - (while (and *target* - (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (suspend) - ) - (set-time! (-> self state-time)) - (process-grab? *target*) - (process-entity-status! self (entity-perm-status bit-3) #t) - (until (not (or (-> *setting-control* current talking) (or (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - ) - ) - ) - (set-setting! 'allow-progress #f 0.0 0) - (let* ((a0-15 *setting-control*) - (t9-6 (method-of-object a0-15 set-setting)) - (a2-3 'movie) - (a3-1 (process->ppointer self)) - ) - (t9-6 a0-15 self a2-3 a3-1 0.0 0) - ) - (apply-settings *setting-control*) - (dotimes (gp-1 2) - (while (or (-> *setting-control* current talking) - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - *progress-process* - ) - (suspend) - ) - ) - (while (not (time-elapsed? (-> self state-time) (seconds 1))) + :code + (behavior () + (loop + (when (and *target* + (< (vector-vector-distance (target-pos 0) (-> self root trans)) (-> self range)) + (-> *setting-control* current play-hints) + (and (< 0.0 (-> *setting-control* current dialog-volume)) + (let ((a0-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (or (not a0-3) (not (logtest? (-> a0-3 extra perm status) (entity-perm-status dead))))))) + (when (!= (-> self index) 6) + (while (and *target* + (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (suspend)) + (set-time! (-> self state-time)) + (process-grab? *target*) + (process-entity-status! self (entity-perm-status bit-3) #t) + (until (not (or (-> *setting-control* current talking) + (or (-> *setting-control* current spooling) (-> *setting-control* current hint) (-> *setting-control* current ambient)))) + (set-setting! 'allow-progress #f 0.0 0) + (let* ((a0-15 *setting-control*) + (t9-6 (method-of-object a0-15 set-setting)) + (a2-3 'movie) + (a3-1 (process->ppointer self))) + (t9-6 a0-15 self a2-3 a3-1 0.0 0)) + (apply-settings *setting-control*) + (dotimes (gp-1 2) + (while (or (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + *progress-process*) + (suspend))) + (while (not (time-elapsed? (-> self state-time) (seconds 1))) + (suspend)) + (remove-setting! 'movie) + (apply-settings *setting-control*) (suspend) - ) - (remove-setting! 'movie) - (apply-settings *setting-control*) - (suspend) - (suspend) - ) - (process-release? *target*) - ) - (when (-> *setting-control* current play-hints) - (let ((v1-61 (-> self index))) - (cond - ((zero? v1-61) - (level-hint-spawn (text-id training-money) "asstvb41" (the-as entity #f) *entity-pool* (game-task none)) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "orbcam" 0 #f '() :to self) - ) - ((= v1-61 1) - (level-hint-spawn (text-id training-fuel-cell) "asstvb42" (the-as entity #f) *entity-pool* (game-task none)) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "fuelcellcam" 0 #f '() :to self) - ) - ((= v1-61 2) - (level-hint-spawn (text-id training-eco-blue) "sagevb22" (the-as entity #f) *entity-pool* (game-task none)) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "ecocam" 0 #f '() :to self) - ) - ((= v1-61 3) - (level-hint-spawn - (text-id training-precursor-door) - "sagevb24" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "precursordoorcam" 0 #f '() :to self) - ) - ((= v1-61 4) - (level-hint-spawn - (text-id training-blue-eco-vent) - "asstvb48" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "ecoventcam" 0 #f '() :to self) - ) - ((= v1-61 5) - (level-hint-spawn (text-id training-eco-green) "sagevb21" (the-as entity #f) *entity-pool* (game-task none)) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "greenecocam" 0 #f '() :to self) - ) - ((= v1-61 6) - (when (not (task-complete? *game-info* (game-task training-climb))) - (clear-text-seen! *game-info* (text-id training-double-jump)) - (level-hint-spawn (text-id training-double-jump) "sagevb27" (the-as entity #f) *entity-pool* (game-task none)) - (let ((gp-8 (current-time))) - (until (time-elapsed? gp-8 (seconds 30)) - (suspend) - ) - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (go-virtual idle) - ) - ) - ) - ) - (while (-> self child) - (suspend) - ) - ) - (let ((a0-61 (-> self entity))) - (if (when a0-61 - (let ((a0-62 (-> a0-61 extra perm task))) - (if a0-62 - (= a0-62 (game-task none)) - ) - ) - ) - (set! (-> self entity extra perm task) (game-task complete)) - ) - ) - (process-entity-status! self (entity-perm-status dead) #t) - (process-entity-status! self (entity-perm-status bit-3) #f) - (deactivate self) - ) - (suspend) - ) - ) - ) + (suspend)) + (process-release? *target*)) + (when (-> *setting-control* current play-hints) + (let ((v1-61 (-> self index))) + (cond + ((zero? v1-61) + (level-hint-spawn (text-id training-money) "asstvb41" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "orbcam" 0 #f '() :to self)) + ((= v1-61 1) + (level-hint-spawn (text-id training-fuel-cell) "asstvb42" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "fuelcellcam" 0 #f '() :to self)) + ((= v1-61 2) + (level-hint-spawn (text-id training-eco-blue) "sagevb22" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "ecocam" 0 #f '() :to self)) + ((= v1-61 3) + (level-hint-spawn (text-id training-precursor-door) "sagevb24" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "precursordoorcam" 0 #f '() :to self)) + ((= v1-61 4) + (level-hint-spawn (text-id training-blue-eco-vent) "asstvb48" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "ecoventcam" 0 #f '() :to self)) + ((= v1-61 5) + (level-hint-spawn (text-id training-eco-green) "sagevb21" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "greenecocam" 0 #f '() :to self)) + ((= v1-61 6) + (when (not (task-complete? *game-info* (game-task training-climb))) + (clear-text-seen! *game-info* (text-id training-double-jump)) + (level-hint-spawn (text-id training-double-jump) "sagevb27" (the-as entity #f) *entity-pool* (game-task none)) + (let ((gp-8 (current-time))) (until (time-elapsed? gp-8 (seconds 30)) (suspend))) + (process-entity-status! self (entity-perm-status bit-3) #f) + (go-virtual idle))))) + (while (-> self child) + (suspend))) + (let ((a0-61 (-> self entity))) + (if (when a0-61 + (let ((a0-62 (-> a0-61 extra perm task))) (if a0-62 (= a0-62 (game-task none))))) + (set! (-> self entity extra perm task) (game-task complete)))) + (process-entity-status! self (entity-perm-status dead) #t) + (process-entity-status! self (entity-perm-status bit-3) #f) + (deactivate self)) + (suspend)))) (defmethod init-from-entity! ((this training-cam) (arg0 entity-actor)) "Copy defaults from the entity." @@ -218,14 +149,10 @@ (set! (-> this range) (res-lump-float arg0 'cam-notice-dist :default 81920.0)) (set! (-> this index) (res-lump-value arg0 'index int)) (go (method-of-object this idle)) - (none) - ) + (none)) (deftype tra-pontoon (rigid-body-platform) - ((anchor-point vector :inline) - ) - ) - + ((anchor-point vector :inline))) (defmethod init-from-entity! ((this tra-pontoon) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -234,54 +161,52 @@ (rigid-body-platform-method-31 this) (go (method-of-object this rigid-body-platform-idle)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-23 ((this tra-pontoon) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) - -(define *tra-pontoon-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 4.0 - :buoyancy-factor 3.0 - :max-buoyancy-depth (meters 3) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :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) - :inertial-tensor-z (meters 3.2) - :idle-distance (meters 50) - :platform #t - :sound-name "pontoonten" - ) - ) - -(defskelgroup *tra-pontoon-sg* pontoonfive pontoonfive-lod0-jg pontoonfive-idle-ja - ((pontoonfive-lod0-mg (meters 20)) (pontoonfive-lod1-mg (meters 40)) (pontoonfive-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) + (none)) + +(define *tra-pontoon-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.0 + :max-buoyancy-depth (meters 3) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :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) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 50) + :platform #t + :sound-name "pontoonten")) + +(defskelgroup *tra-pontoon-sg* + pontoonfive + pontoonfive-lod0-jg + pontoonfive-idle-ja + ((pontoonfive-lod0-mg (meters 20)) (pontoonfive-lod1-mg (meters 40)) (pontoonfive-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defmethod rigid-body-platform-method-30 ((this tra-pontoon)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) @@ -290,15 +215,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this tra-pontoon)) (initialize-skeleton this *tra-pontoon-sg* '()) @@ -309,41 +231,35 @@ (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 w) 1.0)) (let ((v1-8 (-> this 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 w) 1.0)) (let ((v1-10 (-> this 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 w) 1.0)) (let ((v1-12 (-> this 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 w) 1.0)) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (nav-mesh-connect this (-> this root-overlay) (the-as nav-control #f)) 0 - (none) - ) - -(deftype tra-iris-door (eco-door) - () - ) + (none)) +(deftype tra-iris-door (eco-door) ()) -(defskelgroup *tra-iris-door-sg* jng-iris-door jng-iris-door-lod0-jg jng-iris-door-idle-ja - ((jng-iris-door-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *tra-iris-door-sg* + jng-iris-door + jng-iris-door-lod0-jg + jng-iris-door-idle-ja + ((jng-iris-door-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defmethod eco-door-method-24 ((this tra-iris-door)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -354,15 +270,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod eco-door-method-25 ((this tra-iris-door)) (initialize-skeleton this *tra-iris-door-sg* '()) @@ -370,379 +283,306 @@ (set! (-> this close-distance) 49152.0) (update-transforms! (-> this root)) 0 - (none) - ) + (none)) (defpartgroup group-scarecrow-explode :id 143 :duration (seconds 0.05) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2912) (sp-item 2913) (sp-item 2914) (sp-item 2915) (sp-item 2916)) - ) + :parts ((sp-item 2912) (sp-item 2913) (sp-item 2914) (sp-item 2915) (sp-item 2916))) (defpart 2912 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 2.5) (meters 1)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 160.0 32.0) - (:b 128.0 32.0) - (:a 8.0 16.0) - (:vel-y (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters 0.011904762)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00066666666)) - (:friction 0.9) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 2917) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 2.5) (meters 1)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 160.0 32.0) + (:b 128.0 32.0) + (:a 8.0 16.0) + (:vel-y (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters 0.011904762)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00066666666)) + (:friction 0.9) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 2917) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2917 - :init-specs ((:fade-a -0.4) (:next-time (seconds 0.1) (seconds 0.097)) (:next-launcher 2918)) - ) + :init-specs ((:fade-a -0.4) (:next-time (seconds 0.1) (seconds 0.097)) (:next-launcher 2918))) (defpart 2918 - :init-specs ((:fade-a -0.04)) - ) + :init-specs ((:fade-a -0.04))) (defpart 2913 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 4.0) - (:y (meters 2.5)) - (:scale-x (meters 6) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3) (meters 1)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2919) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 4.0) + (:y (meters 2.5)) + (:scale-x (meters 6) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3) (meters 1)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2919) + (:rotate-y (degrees 0)))) (defpart 2919 - :init-specs ((:fade-a -2.1333334)) - ) + :init-specs ((:fade-a -2.1333334))) (defpart 2914 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.5) - (:y (meters 1.5)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 48.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.5) + (:y (meters 1.5)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 48.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)))) (defpart 2915 - :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x2)) - (:num 8.0 8.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 2.5) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.6) 2.0 (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 160.0) - (:g 160.0) - (:b 160.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 2 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 2920) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6 :page #x2)) + (:num 8.0 8.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 2.5) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.6) 2.0 (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 160.0) + (:g 160.0) + (:b 160.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 2 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 2920) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2920 - :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4)) - ) + :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4))) (defpart 2916 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x2)) - (:num 8.0 8.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 2.5) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.3) 1 (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 100.0) - (:g 100.0) - (:b 100.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 3 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 2920) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x2)) + (:num 8.0 8.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 2.5) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.3) 1 (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 100.0) + (:g 100.0) + (:b 100.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 3 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 2920) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-scarecrow-joint-explode :id 144 :duration (seconds 0.05) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2912)) - ) + :parts ((sp-item 2912))) (defpartgroup group-scarecrow-hit :id 145 :duration (seconds 0.05) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2913)) - ) + :parts ((sp-item 2913))) (deftype scarecrow-a (process-drawable) - ((root collide-shape :override) - (incomming-attack-id uint64) - (intersection vector :inline) - ) + ((root collide-shape :override) + (incomming-attack-id uint64) + (intersection vector :inline)) (:state-methods - idle - (hit float vector symbol) - ) - ) - + idle + (hit float vector symbol))) (deftype scarecrow-b (process-drawable) - ((root collide-shape :override) - (incomming-attack-id uint64) - (intersection vector :inline) - ) + ((root collide-shape :override) + (incomming-attack-id uint64) + (intersection vector :inline)) (:state-methods - idle - (hit float vector symbol) - ) - ) - - -(defskelgroup *scarecrow-a-sg* scarecrow-a scarecrow-a-lod0-jg scarecrow-a-idle-ja - ((scarecrow-a-lod0-mg (meters 20)) (scarecrow-a-lod1-mg (meters 40)) (scarecrow-a-lod2-mg (meters 999999))) - :bounds (static-spherem 0 2.5 0 3) - ) - -(defskelgroup *scarecrow-a-break-sg* scarecrow-a scarecrow-a-lod0-jg scarecrow-a-idle-ja - ((scarecrow-a-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -15 0 50) - ) + idle + (hit float vector symbol))) + +(defskelgroup *scarecrow-a-sg* + scarecrow-a + scarecrow-a-lod0-jg + scarecrow-a-idle-ja + ((scarecrow-a-lod0-mg (meters 20)) (scarecrow-a-lod1-mg (meters 40)) (scarecrow-a-lod2-mg (meters 999999))) + :bounds (static-spherem 0 2.5 0 3)) + +(defskelgroup *scarecrow-a-break-sg* + scarecrow-a + scarecrow-a-lod0-jg + scarecrow-a-idle-ja + ((scarecrow-a-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -15 0 50)) (defstate idle (scarecrow-a) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (let* ((s3-0 (-> block param 2)) - (s4-0 (get-task-control (game-task training-gimmie))) - (v1-2 (get-reminder s4-0 0)) - ) - (when (!= s3-0 (-> self incomming-attack-id)) - (set! (-> self incomming-attack-id) s3-0) - (cond - ((= (-> self type) scarecrow-b) - ) - ((and (= (-> block param 1) 'spin) (zero? v1-2)) - (save-reminder s4-0 1 0) - 1 - ) - ((and (= (-> block param 1) 'punch) (= v1-2 1)) - (save-reminder s4-0 2 0) - 2 - ) - ((zero? v1-2) - ) - ((= v1-2 1) - ) - ) - (let* ((s4-1 proc) - (v1-14 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) process-drawable)) - s4-1 - ) - ) - (f30-0 - (cond - (v1-14 - (let ((s4-2 (-> self root)) - (s2-0 (-> (the-as process-drawable v1-14) root trans)) - ) - (deg-diff (y-angle s4-2) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s2-0 (-> s4-2 trans)))) - ) - ) - (else - 0.0 - ) - ) - ) - (a0-24 ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint -1) - ) - ) - ) - (go-virtual - hit - f30-0 - (if a0-24 - (get-middle-of-bsphere-overlap a0-24 (-> self intersection)) - (target-pos 0) - ) - (the-as - symbol - (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 2) - ) - (or (= (-> self type) scarecrow-a) - (and (= (-> proc type) target) - (logtest? (-> (the-as target proc) control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> (the-as target proc) control status) (cshape-moving-flags onsurf))) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (('touch) - (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0) - ) - ) - ) - :trans (behavior () - (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (get-reminder (get-task-control (game-task training-gimmie)) 0) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.12)) - (loop - (ja-no-eval :group! scarecrow-a-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (let* ((s3-0 (-> block param 2)) + (s4-0 (get-task-control (game-task training-gimmie))) + (v1-2 (get-reminder s4-0 0))) + (when (!= s3-0 (-> self incomming-attack-id)) + (set! (-> self incomming-attack-id) s3-0) + (cond + ((= (-> self type) scarecrow-b)) + ((and (= (-> block param 1) 'spin) (zero? v1-2)) (save-reminder s4-0 1 0) 1) + ((and (= (-> block param 1) 'punch) (= v1-2 1)) (save-reminder s4-0 2 0) 2) + ((zero? v1-2)) + ((= v1-2 1))) + (let* ((s4-1 proc) + (v1-14 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) process-drawable)) s4-1)) + (f30-0 (cond + (v1-14 + (let ((s4-2 (-> self root)) + (s2-0 (-> (the-as process-drawable v1-14) root trans))) + (deg-diff (y-angle s4-2) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s2-0 (-> s4-2 trans)))))) + (else 0.0))) + (a0-24 ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint -1)))) + (go-virtual hit + f30-0 + (if a0-24 (get-middle-of-bsphere-overlap a0-24 (-> self intersection)) (target-pos 0)) + (the-as symbol + (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 2)) + (or (= (-> self type) scarecrow-a) + (and (= (-> proc type) target) + (logtest? (-> (the-as target proc) control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> (the-as target proc) control status) (cshape-moving-flags onsurf)))))))))))) + (('touch) (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0)))) + :trans + (behavior () + (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (get-reminder (get-task-control (game-task training-gimmie)) 0))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.12)) + (loop + (ja-no-eval :group! scarecrow-a-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate hit (scarecrow-a) :virtual #t - :code (behavior ((arg0 float) (arg1 vector) (arg2 symbol)) - (when (not arg2) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-hit 4.0 -1) - (ja-channel-push! 1 (seconds 0.07)) - (cond - ((< (fabs arg0) 8192.0) - (ja-no-eval :group! scarecrow-a-hit-front-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((and (< 8192.0 arg0) (< arg0 24576.0)) - (ja-no-eval :group! scarecrow-a-hit-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! scarecrow-a-hit-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go-virtual idle) - ) - (clear-collide-with-as (-> self root)) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 12.0 -1) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 20.0 -1) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-explode 4.0 -1) - (sound-play "break-dummy") - (ja-channel-set! 0) - (let ((s5-2 (new 'stack 'joint-exploder-tuning 1))) - (set! (-> s5-2 duration) (seconds 1.5)) - (set! (-> s5-2 gravity) -327680.0) - (set! (-> s5-2 fountain-rand-transv-hi x) 32768.0) - (set! (-> s5-2 fountain-rand-transv-hi y) 81920.0) - (set! (-> s5-2 fountain-rand-transv-hi z) 20480.0) - (set! (-> s5-2 fountain-rand-transv-hi w) 49152.0) - (set! (-> s5-2 fountain-rand-transv-lo quad) (-> arg1 quad)) - (process-spawn - joint-exploder - *scarecrow-a-break-sg* - 5 - s5-2 - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 12) - (new 'static 'joint-exploder-static-joint-params :joint-index 10) - (new 'static 'joint-exploder-static-joint-params :joint-index 20) - (new 'static 'joint-exploder-static-joint-params :joint-index 4) - (new 'static 'joint-exploder-static-joint-params :joint-index 5) - (new 'static 'joint-exploder-static-joint-params :joint-index 11) - (new 'static 'joint-exploder-static-joint-params :joint-index 9) - (new 'static 'joint-exploder-static-joint-params :joint-index 7) - (new 'static 'joint-exploder-static-joint-params :joint-index 14) - (new 'static 'joint-exploder-static-joint-params :joint-index 13) - ) - ) - :to self - ) - ) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - :post ja-post - ) + :code + (behavior ((arg0 float) (arg1 vector) (arg2 symbol)) + (when (not arg2) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-hit 4.0 -1) + (ja-channel-push! 1 (seconds 0.07)) + (cond + ((< (fabs arg0) 8192.0) + (ja-no-eval :group! scarecrow-a-hit-front-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((and (< 8192.0 arg0) (< arg0 24576.0)) + (ja-no-eval :group! scarecrow-a-hit-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! scarecrow-a-hit-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go-virtual idle)) + (clear-collide-with-as (-> self root)) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 12.0 -1) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 20.0 -1) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-explode 4.0 -1) + (sound-play "break-dummy") + (ja-channel-set! 0) + (let ((s5-2 (new 'stack 'joint-exploder-tuning 1))) + (set! (-> s5-2 duration) (seconds 1.5)) + (set! (-> s5-2 gravity) -327680.0) + (set! (-> s5-2 fountain-rand-transv-hi x) 32768.0) + (set! (-> s5-2 fountain-rand-transv-hi y) 81920.0) + (set! (-> s5-2 fountain-rand-transv-hi z) 20480.0) + (set! (-> s5-2 fountain-rand-transv-hi w) 49152.0) + (set! (-> s5-2 fountain-rand-transv-lo quad) (-> arg1 quad)) + (process-spawn joint-exploder + *scarecrow-a-break-sg* + 5 + s5-2 + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 12) + (new 'static 'joint-exploder-static-joint-params :joint-index 10) + (new 'static 'joint-exploder-static-joint-params :joint-index 20) + (new 'static 'joint-exploder-static-joint-params :joint-index 4) + (new 'static 'joint-exploder-static-joint-params :joint-index 5) + (new 'static 'joint-exploder-static-joint-params :joint-index 11) + (new 'static 'joint-exploder-static-joint-params :joint-index 9) + (new 'static 'joint-exploder-static-joint-params :joint-index 7) + (new 'static 'joint-exploder-static-joint-params :joint-index 14) + (new 'static 'joint-exploder-static-joint-params :joint-index 13))) + :to + self)) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post ja-post) (defmethod init-from-entity! ((this scarecrow-a) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -758,130 +598,119 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 7372.8 0.0 7372.8) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core action) (collide-action solid)) (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 12288.0 0.0 7372.8) - (append-prim s3-0 s2-1) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *scarecrow-a-sg* '()) (go (method-of-object this idle)) - (none) - ) - -(defskelgroup *scarecrow-b-sg* scarecrow-b scarecrow-b-lod0-jg scarecrow-b-idle-ja - ((scarecrow-b-lod0-mg (meters 20)) (scarecrow-b-lod1-mg (meters 40)) (scarecrow-b-lod2-mg (meters 999999))) - :bounds (static-spherem 0 3.5 0 3.8) - ) - -(defskelgroup *scarecrow-b-break-sg* scarecrow-b scarecrow-b-lod0-jg scarecrow-b-idle-ja - ((scarecrow-b-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -15 0 50) - ) + (none)) + +(defskelgroup *scarecrow-b-sg* + scarecrow-b + scarecrow-b-lod0-jg + scarecrow-b-idle-ja + ((scarecrow-b-lod0-mg (meters 20)) (scarecrow-b-lod1-mg (meters 40)) (scarecrow-b-lod2-mg (meters 999999))) + :bounds (static-spherem 0 3.5 0 3.8)) + +(defskelgroup *scarecrow-b-break-sg* + scarecrow-b + scarecrow-b-lod0-jg + scarecrow-b-idle-ja + ((scarecrow-b-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -15 0 50)) (defstate idle (scarecrow-b) :virtual #t - :event (-> (method-of-type scarecrow-a idle) event) - :code (behavior () - (ja-channel-push! 1 (seconds 0.12)) - (loop - (ja-no-eval :group! scarecrow-b-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (-> (method-of-type scarecrow-a idle) + event) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.12)) + (loop + (ja-no-eval :group! scarecrow-b-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate hit (scarecrow-b) :virtual #t - :code (behavior ((arg0 float) (arg1 vector) (arg2 symbol)) - (when (not arg2) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-hit 4.0 -1) - (ja-channel-push! 1 (seconds 0.07)) - (cond - ((< (fabs arg0) 8192.0) - (ja-no-eval :group! scarecrow-b-hit-front-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((and (< 8192.0 arg0) (< arg0 24576.0)) - (ja-no-eval :group! scarecrow-b-hit-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! scarecrow-b-hit-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go-virtual idle) - ) - (clear-collide-with-as (-> self root)) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 12.0 -1) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 21.0 -1) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-explode 4.0 -1) - (sound-play "break-dummy") - (ja-channel-set! 0) - (let ((s5-2 (new 'stack 'joint-exploder-tuning 1))) - (set! (-> s5-2 duration) (seconds 1.5)) - (set! (-> s5-2 fountain-rand-transv-hi x) 32768.0) - (set! (-> s5-2 fountain-rand-transv-hi y) 81920.0) - (set! (-> s5-2 fountain-rand-transv-hi z) 40960.0) - (set! (-> s5-2 fountain-rand-transv-hi w) 102400.0) - (set! (-> s5-2 fountain-rand-transv-lo quad) (-> arg1 quad)) - (process-spawn - joint-exploder - *scarecrow-b-break-sg* - 5 - s5-2 - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 12) - (new 'static 'joint-exploder-static-joint-params :joint-index 10) - (new 'static 'joint-exploder-static-joint-params :joint-index 21) - (new 'static 'joint-exploder-static-joint-params :joint-index 4) - (new 'static 'joint-exploder-static-joint-params :joint-index 5) - (new 'static 'joint-exploder-static-joint-params :joint-index 11) - (new 'static 'joint-exploder-static-joint-params :joint-index 9) - (new 'static 'joint-exploder-static-joint-params :joint-index 7) - (new 'static 'joint-exploder-static-joint-params :joint-index 14) - (new 'static 'joint-exploder-static-joint-params :joint-index 13) - (new 'static 'joint-exploder-static-joint-params :joint-index 14) - (new 'static 'joint-exploder-static-joint-params :joint-index 13) - (new 'static 'joint-exploder-static-joint-params :joint-index 16) - (new 'static 'joint-exploder-static-joint-params :joint-index 15) - ) - ) - :to self - ) - ) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - :post ja-post - ) + :code + (behavior ((arg0 float) (arg1 vector) (arg2 symbol)) + (when (not arg2) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-hit 4.0 -1) + (ja-channel-push! 1 (seconds 0.07)) + (cond + ((< (fabs arg0) 8192.0) + (ja-no-eval :group! scarecrow-b-hit-front-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((and (< 8192.0 arg0) (< arg0 24576.0)) + (ja-no-eval :group! scarecrow-b-hit-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! scarecrow-b-hit-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go-virtual idle)) + (clear-collide-with-as (-> self root)) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 12.0 -1) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 21.0 -1) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-explode 4.0 -1) + (sound-play "break-dummy") + (ja-channel-set! 0) + (let ((s5-2 (new 'stack 'joint-exploder-tuning 1))) + (set! (-> s5-2 duration) (seconds 1.5)) + (set! (-> s5-2 fountain-rand-transv-hi x) 32768.0) + (set! (-> s5-2 fountain-rand-transv-hi y) 81920.0) + (set! (-> s5-2 fountain-rand-transv-hi z) 40960.0) + (set! (-> s5-2 fountain-rand-transv-hi w) 102400.0) + (set! (-> s5-2 fountain-rand-transv-lo quad) (-> arg1 quad)) + (process-spawn joint-exploder + *scarecrow-b-break-sg* + 5 + s5-2 + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 12) + (new 'static 'joint-exploder-static-joint-params :joint-index 10) + (new 'static 'joint-exploder-static-joint-params :joint-index 21) + (new 'static 'joint-exploder-static-joint-params :joint-index 4) + (new 'static 'joint-exploder-static-joint-params :joint-index 5) + (new 'static 'joint-exploder-static-joint-params :joint-index 11) + (new 'static 'joint-exploder-static-joint-params :joint-index 9) + (new 'static 'joint-exploder-static-joint-params :joint-index 7) + (new 'static 'joint-exploder-static-joint-params :joint-index 14) + (new 'static 'joint-exploder-static-joint-params :joint-index 13) + (new 'static 'joint-exploder-static-joint-params :joint-index 14) + (new 'static 'joint-exploder-static-joint-params :joint-index 13) + (new 'static 'joint-exploder-static-joint-params :joint-index 16) + (new 'static 'joint-exploder-static-joint-params :joint-index 15))) + :to + self)) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post ja-post) (defmethod init-from-entity! ((this scarecrow-b) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -897,31 +726,25 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 4096.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) + (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) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core action) (collide-action solid)) (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 14745.6 0.0 6553.6) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core action) (collide-action solid)) (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 20480.0 0.0 6553.6) - (append-prim s3-0 s2-2) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *scarecrow-b-sg* '()) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/training/training-part.gc b/goal_src/jak1/levels/training/training-part.gc index b9e0ddd00f..766eb152ce 100644 --- a/goal_src/jak1/levels/training/training-part.gc +++ b/goal_src/jak1/levels/training/training-part.gc @@ -1,1273 +1,1216 @@ ;;-*-Lisp-*- (in-package goal) (bundles "TRA.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: training-part.gc -;; name in dgo: training-part -;; dgos: L1, TRA - ;; DECOMP BEGINS -(deftype training-part (part-spawner) - () - ) - +(deftype training-part (part-spawner) ()) (defpartgroup group-training-geyser-2 :id 146 :flags (always-draw) :bounds (static-bspherem 0 32 0 70) - :parts ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4500) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4530) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4560) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4590) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4620) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 4650) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4050) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4080) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4110) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4140) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4170) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3900) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4050) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4080) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4110) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4140) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4170) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3900) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 4050) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 4050) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 3750) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 3450) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 4050) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 4050) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 3750) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 3450) - ) - ) + :parts + ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4500) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4530) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4560) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4590) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4620) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 4650) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4050) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4080) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4110) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4140) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4170) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3900) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4050) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4080) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4110) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4140) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4170) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3900) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 4050) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 4050) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 3750) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 3450) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 4050) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 4050) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 3750) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 3450))) (defpartgroup group-training-geyser-5 :id 147 :flags (always-draw) :bounds (static-bspherem 0 32 0 70) - :parts ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 900) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 930) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 960) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 990) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1020) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1050) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 450) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 420) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 390) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 360) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 330) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 300) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 450) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 420) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 390) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 360) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 330) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 300) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 450) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 450) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 150) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 4650) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 450) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 450) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 150) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 4650) - ) - ) + :parts + ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 900) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 930) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 960) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 990) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1020) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1050) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 450) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 420) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 390) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 360) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 330) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 300) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 450) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 420) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 390) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 360) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 330) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 300) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 450) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 450) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 150) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 4650) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 450) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 450) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 150) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 4650))) (defpartgroup group-training-geyser-6 :id 149 :flags (always-draw) :bounds (static-bspherem 0 32 0 70) - :parts ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2100) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2130) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2160) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2190) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2220) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2250) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 1650) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 1680) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 1710) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 1740) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1770) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1500) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 1650) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 1680) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 1710) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 1740) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1770) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1500) - ) - ) + :parts + ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2100) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2130) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2160) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2190) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2220) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2250) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 1650) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 1680) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 1710) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 1740) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1770) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1500) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 1650) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 1680) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 1710) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 1740) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1770) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1500))) (defpartgroup group-training-geyser-4 :id 148 :flags (always-draw) :bounds (static-bspherem 0 32 0 70) - :parts ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 3300) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 3330) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 3360) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 3390) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 3420) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3450) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2850) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2880) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2910) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2940) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2970) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2700) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2850) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2880) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2910) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2940) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2970) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2700) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 2850) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 2850) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 2550) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 2250) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 2850) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 2850) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 2550) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 2250) - ) - ) + :parts + ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 3300) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 3330) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 3360) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 3390) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 3420) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3450) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2850) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2880) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2910) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2940) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2970) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2700) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2850) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2880) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2910) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2940) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2970) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2700) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 2850) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 2850) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 2550) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 2250) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 2850) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 2850) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 2550) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 2250))) (defpart 752 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.2) - (:sound (static-sound-spec "geyser" :num 0.1 :fo-min 50 :fo-max 200)) - (:x (meters 0) (meters 1)) - (:y (meters -8)) - (:scale-x (meters 8)) - (:rot-z (degrees 180)) - (:scale-y (meters 16)) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 32.0 32.0) - (:vel-y (meters 0.36666667) (meters 0.033333335)) - (:scalevel-x (meters 0.0033333334)) - (:accel-y (meters -0.004)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 1.7)) - (:next-launcher 761) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.2) + (:sound (static-sound-spec "geyser" :num 0.1 :fo-min 50 :fo-max 200)) + (:x (meters 0) (meters 1)) + (:y (meters -8)) + (:scale-x (meters 8)) + (:rot-z (degrees 180)) + (:scale-y (meters 16)) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 32.0 32.0) + (:vel-y (meters 0.36666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334)) + (:accel-y (meters -0.004)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 1.7)) + (:next-launcher 761) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 761 - :init-specs ((:scalevel-x (meters 0.06666667)) (:fade-a -1.0666667)) - ) + :init-specs ((:scalevel-x (meters 0.06666667)) (:fade-a -1.0666667))) (defpart 753 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15) - (:x (meters 0) (meters 1)) - (:y (meters 85) (meters 10)) - (:scale-x (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.035555556)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit14)) - (:userdata 0.0) - (:func 'check-drop-level-training-mist) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 762) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15) + (:x (meters 0) (meters 1)) + (:y (meters 85) (meters 10)) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.035555556)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit14)) + (:userdata 0.0) + (:func 'check-drop-level-training-mist) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 762) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 762 - :init-specs ((:fade-a -0.03678161)) - ) + :init-specs ((:fade-a -0.03678161))) (defun check-drop-level-training-mist ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (new 'stack-no-clear 'vector) - (sp-kill-particle arg0 arg1) - ) - (none) - ) + (sp-kill-particle arg0 arg1)) + (none)) (defpart 754 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.035) - (:x (meters 0) (meters 1)) - (:y (meters 85) (meters 10)) - (:scale-x (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.035555556)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0.00033333333) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit14)) - (:userdata 0.0) - (:func 'check-drop-level-training-mist) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 762) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.035) + (:x (meters 0) (meters 1)) + (:y (meters 85) (meters 10)) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.035555556)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0.00033333333) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit14)) + (:userdata 0.0) + (:func 'check-drop-level-training-mist) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 762) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 763 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.0 1 1.0) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 110.0 32.0) - (:g 128.0 32.0) - (:b 64.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 25.000002) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.0 1 1.0) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 110.0 32.0) + (:g 128.0 32.0) + (:b 64.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 25.000002) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 764 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 1) (meters 1)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 110.0 32.0) - (:g 128.0 32.0) - (:b 96.0 32.0) - (:a 16.0 32.0) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.4) - (:timer (seconds 0.4)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 1) (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0 32.0) + (:g 128.0 32.0) + (:b 96.0 32.0) + (:a 16.0 32.0) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.4) + (:timer (seconds 0.4)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defun check-drop-level-training-spout-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 763) gp-0 :rate 1.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 764) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 764) gp-0 :rate 1.0))) + (none)) (defpart 759 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 40)) - (:y (meters 10) (meters 20)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.13333334)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:userdata 66560.0) - (:func 'check-drop-level-training-spout-rain) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 40)) + (:y (meters 10) (meters 20)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.13333334)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:userdata 66560.0) + (:func 'check-drop-level-training-spout-rain) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 760 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 40)) - (:y (meters 10) (meters 20)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.033333335)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 40)) + (:y (meters 10) (meters 20)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.033333335)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 757 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 40)) - (:y (meters 4) (meters 8)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.13333334)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-drop-level-training-spout-rain) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 40)) + (:y (meters 4) (meters 8)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.13333334)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-drop-level-training-spout-rain) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 758 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 40)) - (:y (meters 4) (meters 10)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.033333335)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 40)) + (:y (meters 4) (meters 10)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.033333335)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 755 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 40)) - (:y (meters 10) (meters 10)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.13333334)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-drop-level-training-spout-rain) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 40)) + (:y (meters 10) (meters 10)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.13333334)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-drop-level-training-spout-rain) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 756 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 40)) - (:y (meters 10) (meters 20)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.033333335)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 40)) + (:y (meters 10) (meters 20)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.033333335)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-training-warpgate :id 150 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 767 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 768 :fade-after (meters 60) :falloff-to (meters 100) :binding 765) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 769 :fade-after (meters 60) :falloff-to (meters 100) :binding 766) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 770 :fade-after (meters 100) :flags (is-3d)) - ) - ) + :parts + ((sp-item 767 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 768 :fade-after (meters 60) :falloff-to (meters 100) :binding 765) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 769 :fade-after (meters 60) :falloff-to (meters 100) :binding 766) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 770 :fade-after (meters 100) :flags (is-3d)))) (defpart 770 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.5) - (:x (meters 0)) - (:scale-x (meters 5)) - (:rot-x (degrees 90)) - (:rot-z (degrees 15)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0 64.0) - (:timer (seconds 0.035)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.5) + (:x (meters 0)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-z (degrees 15)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0 64.0) + (:timer (seconds 0.035)) + (:flags (bit3 bit14)))) (defpart 769 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -105)))) (defpart 766 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -0.6666667)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -0.6666667)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 767 - :init-specs ((:num 3.0 3.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 2.968116) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:num 3.0 3.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 2.968116) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees -105)))) (defpart 768 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:accel-x (meters 0.000016666667)) - (:timer (seconds 2.3)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:accel-x (meters 0.000016666667)) + (:timer (seconds 2.3)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -105)))) (defpart 765 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.6666667)) - (:y (meters 4)) - (:z (meters 2.4)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0034999999)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.21333334) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.6666667)) + (:y (meters 4)) + (:z (meters 2.4)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0034999999)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.21333334) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpartgroup group-training-butterflies :id 151 :bounds (static-bspherem 0 0 0 30) - :parts ((sp-item 773 :fade-after (meters 120) :period (seconds 16.345) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 771) - (sp-item 773 :fade-after (meters 120) :period (seconds 22.125) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 771) - (sp-item 773 :fade-after (meters 120) :period (seconds 32.82) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 771) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 773 + :fade-after (meters 120) + :period (seconds 16.345) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 771) + (sp-item 773 + :fade-after (meters 120) + :period (seconds 22.125) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 771) + (sp-item 773 + :fade-after (meters 120) + :period (seconds 32.82) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 771) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)))) (defpart 773 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 7.5)) - (:y (meters 14) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-y (meters -0.036666665)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 774) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 7.5)) + (:y (meters 14) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-y (meters -0.036666665)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 774) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 774 - :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 775)) - ) + :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 775))) (defpart 775 - :init-specs ((:accel-y (meters 0.00033333333))) - ) + :init-specs ((:accel-y (meters 0.00033333333)))) (defpart 771 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3) (meters 1)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:g 0.0 256.0) - (:b 128.0 1 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:vel-z (meters 0)) - (:timer (seconds 20)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 776) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3) (meters 1)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:g 0.0 256.0) + (:b 128.0 1 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:vel-z (meters 0)) + (:timer (seconds 20)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 776))) (defpart 776 - :init-specs ((:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 776) - ) - ) + :init-specs + ((:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 776))) (defpart 772 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.9)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 1.3)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:fade-a -8.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.9)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 1.3)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:fade-a -8.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-training-birds :id 152 :bounds (static-bspherem 0 8 0 45) - :parts ((sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) - (sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) - (sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) - (sp-item 777 :flags (start-dead launch-asap) :binding 778) - (sp-item 778 :flags (is-3d start-dead)) - (sp-item 777 :flags (start-dead launch-asap) :binding 778) - (sp-item 778 :flags (is-3d start-dead)) - (sp-item 777 :flags (start-dead launch-asap) :binding 778) - (sp-item 778 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) + (sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) + (sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) + (sp-item 777 :flags (start-dead launch-asap) :binding 778) + (sp-item 778 :flags (is-3d start-dead)) + (sp-item 777 :flags (start-dead launch-asap) :binding 778) + (sp-item 778 :flags (is-3d start-dead)) + (sp-item 777 :flags (start-dead launch-asap) :binding 778) + (sp-item 778 :flags (is-3d start-dead)))) (defun tra-bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (set! (-> arg2 y) (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) - (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))) - ) - ) + (set! (-> arg2 y) + (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) + (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))))) 0 - (none) - ) + (none)) (defpart 779 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-random-next-time) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters 0) (meters 16)) - (:z (meters -15) (meters 30)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit3)) - (:userdata 199.98) - (:func 'tra-bird-bob-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-random-next-time) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters 0) (meters 16)) + (:z (meters -15) (meters 30)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit3)) + (:userdata 199.98) + (:func 'tra-bird-bob-func))) (defun tra-sparticle-seagull-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 1 z) (the float (sar (shl (the int (+ -16384.0 (-> arg1 omega))) 48) 48))) 0 - (none) - ) + (none)) (defpart 777 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-copy-omega-to-z) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 30)) - (:scale-x (meters 0)) - (:rot-z (degrees 0)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.04)) - (:timer (seconds 2)) - (:flags (bit3 bit7)) - (:func 'tra-sparticle-seagull-moon) - (:next-time (seconds 0.665)) - (:next-launcher 780) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-copy-omega-to-z) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 30)) + (:scale-x (meters 0)) + (:rot-z (degrees 0)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.04)) + (:timer (seconds 2)) + (:flags (bit3 bit7)) + (:func 'tra-sparticle-seagull-moon) + (:next-time (seconds 0.665)) + (:next-launcher 780))) (defpart 780 - :init-specs ((:scale-x (meters 8)) - (:scalevel-x (meters -0.08)) - (:timer (seconds 2)) - (:next-time (seconds 0.335)) - (:next-launcher 781) - ) - ) + :init-specs + ((:scale-x (meters 8)) + (:scalevel-x (meters -0.08)) + (:timer (seconds 2)) + (:next-time (seconds 0.335)) + (:next-launcher 781))) (defpart 781 - :init-specs ((:scale-x (meters 0)) - (:scalevel-x (meters -0.04)) - (:timer (seconds 2)) - (:next-time (seconds 0.665)) - (:next-launcher 780) - ) - ) + :init-specs + ((:scale-x (meters 0)) + (:scalevel-x (meters -0.04)) + (:timer (seconds 2)) + (:next-time (seconds 0.665)) + (:next-launcher 780))) (defpart 778 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:birth-func 'birth-func-copy2-rot-color) - (:num 2.0) - (:scale-x (meters 4)) - (:scale-y (meters 1.5)) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:birth-func 'birth-func-copy2-rot-color) + (:num 2.0) + (:scale-x (meters 4)) + (:scale-y (meters 1.5)) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-training-waterfall-21 :id 153 :flags (always-draw) :bounds (static-bspherem 0 16 0 32) - :parts ((sp-item 782 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 783 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 784 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 785 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 786 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 787 :fade-after (meters 160) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 782 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 783 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 784 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 785 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 786 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 787 :fade-after (meters 160) :falloff-to (meters 160)))) (defpart 789 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpart 790 - :init-specs ((:fade-a -0.16)) - ) + :init-specs ((:fade-a -0.16))) (defpart 791 - :init-specs ((:fade-a -2.6666667)) - ) + :init-specs ((:fade-a -2.6666667))) (defpart 782 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.9) - (:x (meters -9) (meters 1)) - (:y (meters 47)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0016666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.28)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.9) + (:x (meters -9) (meters 1)) + (:y (meters 47)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0016666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.28)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 90)))) (defpart 783 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.9) - (:x (meters -9) (meters 1)) - (:y (meters 39) (meters 5)) - (:z (meters 0)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05) (meters 0.013333334)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters 0.011666667) (meters 0.01)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.9) + (:x (meters -9) (meters 1)) + (:y (meters 39) (meters 5)) + (:z (meters 0)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05) (meters 0.013333334)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters 0.011666667) (meters 0.01)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 90)))) (defpart 784 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.0) - (:x (meters -2) (meters 3)) - (:y (meters 24) (meters 6)) - (:z (meters 2)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 4.8) (meters 3.2)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0) (meters 0.026666667)) - (:vel-y (meters -0.01) (meters 0.0033333334)) - (:vel-z (meters -0.021666666) (meters 0.013333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.9)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.0) + (:x (meters -2) (meters 3)) + (:y (meters 24) (meters 6)) + (:z (meters 2)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 4.8) (meters 3.2)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0) (meters 0.026666667)) + (:vel-y (meters -0.01) (meters 0.0033333334)) + (:vel-z (meters -0.021666666) (meters 0.013333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.9)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 90)))) (defpart 785 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -9) (meters 1)) - (:y (meters 47)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.05) (meters 0.013333334)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:accel-x (meters -0.00069444446)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.7)) - (:flags (bit2 bit3)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -9) (meters 1)) + (:y (meters 47)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.05) (meters 0.013333334)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:accel-x (meters -0.00069444446)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.7)) + (:flags (bit2 bit3)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 90)))) (defpart 786 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -7) (meters 3.5)) - (:y (meters 47)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.021666666)) - (:vel-y (meters -0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.27)) - (:flags (bit2)) - (:next-time (seconds 2.22)) - (:next-launcher 791) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -7) (meters 3.5)) + (:y (meters 47)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.021666666)) + (:vel-y (meters -0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.27)) + (:flags (bit2)) + (:next-time (seconds 2.22)) + (:next-launcher 791) + (:rotate-y (degrees 90)))) (defpart 787 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.133) - (:x (meters 0) (meters 6)) - (:y (meters -3.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 790) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.133) + (:x (meters 0) (meters 6)) + (:y (meters -3.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 790) + (:rotate-y (degrees 90)))) (defpartgroup group-training-waterfall-20 :id 154 :flags (always-draw) :bounds (static-bspherem 0 12 0 12) - :parts ((sp-item 792 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 793 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 794 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 795 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 796 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 797 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - ) - ) + :parts + ((sp-item 792 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 793 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 794 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 795 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 796 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 797 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)))) (defpart 792 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.0) - (:x (meters -6) (meters 1)) - (:y (meters 15.5)) - (:z (meters -6) (meters 6)) - (:scale-x (meters 3.4) (meters 1.6)) - (:scale-y (meters 2.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0016666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.0) + (:x (meters -6) (meters 1)) + (:y (meters 15.5)) + (:z (meters -6) (meters 6)) + (:scale-x (meters 3.4) (meters 1.6)) + (:scale-y (meters 2.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0016666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 120)))) (defpart 793 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.4) - (:x (meters -4) (meters 1)) - (:y (meters 15.5)) - (:z (meters -3) (meters 10)) - (:scale-x (meters 3.4) (meters 1.6)) - (:scale-y (meters 2.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0016666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.4) + (:x (meters -4) (meters 1)) + (:y (meters 15.5)) + (:z (meters -3) (meters 10)) + (:scale-x (meters 3.4) (meters 1.6)) + (:scale-y (meters 2.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0016666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 190)))) (defpart 794 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -6) (meters 1)) - (:y (meters 15.5)) - (:z (meters -6) (meters 6)) - (:scale-x (meters 2.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 2.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.021666666)) - (:vel-y (meters -0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.8)) - (:flags (bit2)) - (:next-time (seconds 1.2)) - (:next-launcher 791) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -6) (meters 1)) + (:y (meters 15.5)) + (:z (meters -6) (meters 6)) + (:scale-x (meters 2.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 2.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.021666666)) + (:vel-y (meters -0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.8)) + (:flags (bit2)) + (:next-time (seconds 1.2)) + (:next-launcher 791) + (:rotate-y (degrees 120)))) (defpart 795 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -4) (meters 1)) - (:y (meters 15.5)) - (:z (meters -3) (meters 10)) - (:scale-x (meters 2.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 2.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.021666666)) - (:vel-y (meters -0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.8)) - (:flags (bit2)) - (:next-time (seconds 1.2)) - (:next-launcher 791) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -4) (meters 1)) + (:y (meters 15.5)) + (:z (meters -3) (meters 10)) + (:scale-x (meters 2.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 2.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.021666666)) + (:vel-y (meters -0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.8)) + (:flags (bit2)) + (:next-time (seconds 1.2)) + (:next-launcher 791) + (:rotate-y (degrees 190)))) (defpart 796 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.133) - (:x (meters 0) (meters 6)) - (:y (meters -3.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 790) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.133) + (:x (meters 0) (meters 6)) + (:y (meters -3.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 790) + (:rotate-y (degrees 90)))) (defpart 797 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters 0) (meters 5)) - (:z (meters -8) (meters 8)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:next-time (seconds 1)) - (:next-launcher 789) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters 0) (meters 5)) + (:z (meters -8) (meters 8)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:next-time (seconds 1)) + (:next-launcher 789) + (:rotate-y (degrees 90)))) diff --git a/goal_src/jak1/levels/village1/assistant.gc b/goal_src/jak1/levels/village1/assistant.gc index 52174e28b6..0d658f6472 100644 --- a/goal_src/jak1/levels/village1/assistant.gc +++ b/goal_src/jak1/levels/village1/assistant.gc @@ -1,68 +1,41 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: assistant.gc -;; name in dgo: assistant -;; dgos: L1, VI1 - ;; DECOMP BEGINS (deftype assistant (process-taskable) - ((sound-id sound-id) - ) - ) - + ((sound-id sound-id))) -(defskelgroup *assistant-sg* assistant assistant-lod0-jg assistant-idle-leaning-right-ja - ((assistant-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - :shadow assistant-shadow-mg - ) +(defskelgroup *assistant-sg* + assistant + assistant-lod0-jg + assistant-idle-leaning-right-ja + ((assistant-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :shadow assistant-shadow-mg) (defmethod process-taskable-method-52 ((this assistant)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this assistant)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this assistant) (arg0 symbol)) (case (current-status (-> this tasks)) @@ -71,302 +44,220 @@ (((game-task jungle-eggtop)) (when arg0 (let* ((s5-1 (-> this tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - ) - (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "assistant-introduction-blue-eco-switch" - :index 10 - :parts 11 - :command-list '((0 want-levels village1 beach) - (128 joint "cameraB") - (312 joint "camera") - (492 joint "cameraB") - (537 joint "camera") - (734 display-level beach movie) - (734 want-force-vis beach #t) - (735 alive "ecovent-48") - (742 blackout 10) - (743 joint "cameraB") - (745 blackout 0) - (839 alive "ecovent-200") - (841 joint "camera") - (842 dead "ecovent-48") - (942 blackout 10) - (944 joint "cameraB") - (945 blackout 0) - (945 dead "ecovent-200") - (945 display-level beach #f) - (1049 blackout 10) - (1051 joint "camera") - (1052 blackout 0) - (1135 blackout 10) - (1137 joint "cameraB") - (1138 blackout 0) - (1216 joint "camera") - ) - ) - ) + (s4-0 (method-of-object s5-1 save-reminder))) + (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "assistant-introduction-blue-eco-switch" + :index 10 + :parts 11 + :command-list + '((0 want-levels village1 beach) + (128 joint "cameraB") + (312 joint "camera") + (492 joint "cameraB") + (537 joint "camera") + (734 display-level beach movie) + (734 want-force-vis beach #t) + (735 alive "ecovent-48") + (742 blackout 10) + (743 joint "cameraB") + (745 blackout 0) + (839 alive "ecovent-200") + (841 joint "camera") + (842 dead "ecovent-48") + (942 blackout 10) + (944 joint "cameraB") + (945 blackout 0) + (945 dead "ecovent-200") + (945 display-level beach #f) + (1049 blackout 10) + (1051 joint "camera") + (1052 blackout 0) + (1135 blackout 10) + (1137 joint "cameraB") + (1138 blackout 0) + (1216 joint "camera")))) (else - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "assistant-introduction-race-bike" - :index 12 - :parts 6 - :command-list '((0 want-levels village1 beach) (129 joint "cameraB") (319 joint "camera") (505 joint "cameraB")) - ) - ) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "assistant-introduction-race-bike" + :index 12 + :parts 6 + :command-list + '((0 want-levels village1 beach) (129 joint "cameraB") (319 joint "camera") (505 joint "cameraB")))))) (((task-status need-reminder) (task-status need-reminder-a)) (set! (-> this skippable) #t) (cond ((= (current-task (-> this tasks)) (game-task none)) - (new 'static 'spool-anim :name "assistant-reminder-1-generic" :index 14 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "assistant-reminder-1-generic" :index 14 :parts 2 :command-list '())) ((closed? (-> this tasks) (game-task jungle-eggtop) (task-status need-resolution)) - (new 'static 'spool-anim :name "assistant-reminder-1-race-bike" :index 13 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "assistant-reminder-1-race-bike" :index 13 :parts 3 :command-list '())) ((or (closed? (-> this tasks) (game-task misty-bike) (task-status need-resolution)) - (not (closed? (-> this tasks) (game-task misty-bike) (task-status need-introduction))) - ) - (new 'static 'spool-anim :name "assistant-reminder-1-blue-eco-switch" :index 11 :parts 3 :command-list '()) - ) + (not (closed? (-> this tasks) (game-task misty-bike) (task-status need-introduction)))) + (new 'static 'spool-anim :name "assistant-reminder-1-blue-eco-switch" :index 11 :parts 3 :command-list '())) ((zero? (get-reminder (-> this tasks) 2)) - (if arg0 - (save-reminder (-> this tasks) 1 2) - ) - (new 'static 'spool-anim :name "assistant-reminder-1-race-bike" :index 13 :parts 3 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 2)) + (new 'static 'spool-anim :name "assistant-reminder-1-race-bike" :index 13 :parts 3 :command-list '())) (else - (if arg0 - (save-reminder (-> this tasks) 0 2) - ) - (new 'static 'spool-anim :name "assistant-reminder-1-blue-eco-switch" :index 11 :parts 3 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 2)) + (new 'static 'spool-anim :name "assistant-reminder-1-blue-eco-switch" :index 11 :parts 3 :command-list '())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this assistant)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod process-taskable-method-43 ((this assistant)) - (let ((s5-0 (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this)) - ) + (let ((s5-0 (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this))) (when s5-0 (let ((f0-2 (rand-float-gen))) (cond - ((< 16384.0 (-> s5-0 y)) - #f - ) - ((< 0.8 f0-2) - (play-ambient (-> this ambient) "ASSTLP01" #f (-> this root trans)) - ) - ((< 0.6 f0-2) - (play-ambient (-> this ambient) "ASSTLP04" #f (-> this root trans)) - ) - ((< 0.4 f0-2) - (play-ambient (-> this ambient) "ASSTLP05" #f (-> this root trans)) - ) - ((< 0.2 f0-2) - (play-ambient (-> this ambient) "ASSTLP02" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "ASSTLP03" #f (-> this root trans)) - ) - ) - ) - ) - ) - ) + ((< 16384.0 (-> s5-0 y)) #f) + ((< 0.8 f0-2) (play-ambient (-> this ambient) "ASSTLP01" #f (-> this root trans))) + ((< 0.6 f0-2) (play-ambient (-> this ambient) "ASSTLP04" #f (-> this root trans))) + ((< 0.4 f0-2) (play-ambient (-> this ambient) "ASSTLP05" #f (-> this root trans))) + ((< 0.2 f0-2) (play-ambient (-> this ambient) "ASSTLP02" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "ASSTLP03" #f (-> this root trans)))))))) (defstate idle (assistant) :virtual #t - :code (behavior () - (if (!= (ja-group) assistant-idle-leaning-right-ja) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (process-taskable-method-43 self) - (ja :group! assistant-idle-leaning-right-ja) - (countdown (gp-0 (+ (the int (rand-float-gen)) 2)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (cond - ((< (rand-float-gen) 0.66) - (ja-no-eval :group! assistant-idle-transition-to-welding-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (sound-play "welding-loop" :id (-> self sound-id) :position (the-as symbol (target-pos 0))) - (ja :group! assistant-idle-welding-ja) - (let* ((f30-0 4.0) - (v1-76 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-77 (the-as number (logior #x3f800000 v1-76))) - ) - (countdown (gp-2 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-77)))) 4)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + :code + (behavior () + (if (!= (ja-group) assistant-idle-leaning-right-ja) (ja-channel-push! 1 (seconds 0.2))) + (loop + (process-taskable-method-43 self) + (ja :group! assistant-idle-leaning-right-ja) + (countdown (gp-0 (+ (the int (rand-float-gen)) 2)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (cond + ((< (rand-float-gen) 0.66) + (ja-no-eval :group! assistant-idle-transition-to-welding-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (sound-play "welding-loop" :id (-> self sound-id) :position (the-as symbol (target-pos 0))) + (ja :group! assistant-idle-welding-ja) + (let* ((f30-0 4.0) + (v1-76 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-77 (the-as number (logior #x3f800000 v1-76)))) + (countdown (gp-2 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-77)))) 4)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek! 0.0))))) + (sound-stop (-> self sound-id)) + (ja-no-eval :group! assistant-idle-transition-to-welding-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))) + (when (< (rand-float-gen) 0.66) + (ja-no-eval :group! assistant-idle-wiping-brow-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-lod0-jg torchTIP)) - ) (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (ja :num! (seek!))))) + (else + (ja-no-eval :group! assistant-idle-transition-right-to-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (countdown (gp-3 (+ (the int (rand-float-gen)) 1)) + (ja-no-eval :group! assistant-idle-leaning-left-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-lod0-jg torchTIP)) - ) (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - (sound-stop (-> self sound-id)) - (ja-no-eval :group! assistant-idle-transition-to-welding-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (when (< (rand-float-gen) 0.66) - (ja-no-eval :group! assistant-idle-wiping-brow-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!)))) + (ja-no-eval :group! assistant-idle-transition-left-to-right-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (else - (ja-no-eval :group! assistant-idle-transition-right-to-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (countdown (gp-3 (+ (the int (rand-float-gen)) 1)) - (ja-no-eval :group! assistant-idle-leaning-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (ja-no-eval :group! assistant-idle-transition-left-to-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek!)))))))) (defpartgroup group-assistant-torch :id 122 :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 365 :fade-after (meters 30) :falloff-to (meters 30)) - (sp-item 366 :fade-after (meters 60) :falloff-to (meters 80)) - ) - ) + :parts + ((sp-item 365 :fade-after (meters 30) :falloff-to (meters 30)) + (sp-item 366 :fade-after (meters 60) :falloff-to (meters 80)))) (defpart 365 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 100.0) - (:b 80.0) - (:a 32.0 64.0) - (:fade-a -6.4) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 100.0) + (:b 80.0) + (:a 32.0 64.0) + (:fade-a -6.4) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 366 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:accel-y (meters -0.002)) - (:friction 0.93) - (:timer (seconds 4)) - (:flags (bit2)) - (:userdata 140288.0) - (:func 'check-drop-level-assistant) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 45) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:accel-y (meters -0.002)) + (:friction 0.93) + (:timer (seconds 4)) + (:flags (bit2)) + (:userdata 140288.0) + (:func 'check-drop-level-assistant) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 45) (degrees 180)))) (defpart 367 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0 1.0) - (:scale-x (meters 0.075) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0) - (:a 32.0 96.0) - (:vel-y (meters 0.011666667) (meters 0.0033333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1)) - (:flags (bit2)) - (:conerot-x (degrees 50.000004) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0 1.0) + (:scale-x (meters 0.075) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0) + (:a 32.0 96.0) + (:vel-y (meters 0.011666667) (meters 0.0033333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1)) + (:flags (bit2)) + (:conerot-x (degrees 50.000004) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defun check-drop-level-assistant ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 367) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 367) gp-0))) + (none)) (defmethod init-from-entity! ((this assistant) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-sg* 3 31 (new 'static 'vector :w 4096.0) 5) @@ -376,13 +267,6 @@ (set! (-> this sound-id) (new-sound-id)) (set! (-> this draw light-index) (the-as uint 1)) (case (get-task-status (game-task firecanyon-assistant)) - (((task-status unknown)) - (go (method-of-object this idle)) - ) - (else - (cleanup-for-death this) - (deactivate this) - ) - ) - (none) - ) + (((task-status unknown)) (go (method-of-object this idle))) + (else (cleanup-for-death this) (deactivate this))) + (none)) diff --git a/goal_src/jak1/levels/village1/explorer.gc b/goal_src/jak1/levels/village1/explorer.gc index ca1fb4fd31..bcc5d593d1 100644 --- a/goal_src/jak1/levels/village1/explorer.gc +++ b/goal_src/jak1/levels/village1/explorer.gc @@ -1,335 +1,220 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: explorer.gc -;; name in dgo: explorer -;; dgos: L1, VI1 - ;; DECOMP BEGINS -(deftype explorer (process-taskable) - () - ) - +(deftype explorer (process-taskable) ()) -(defskelgroup *explorer-sg* explorer explorer-lod0-jg explorer-idle-ja - ((explorer-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow explorer-shadow-mg - ) +(defskelgroup *explorer-sg* + explorer + explorer-lod0-jg + explorer-idle-ja + ((explorer-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow explorer-shadow-mg) (defmethod process-taskable-method-52 ((this explorer)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this explorer)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this explorer) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "explorer-introduction" - :index 9 - :parts 11 - :command-list '((418 joint "cameraB") (695 shadow self #f) (695 joint "camera") (838 shadow self #t) (838 joint "cameraB")) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "explorer-introduction" + :index 9 + :parts 11 + :command-list + '((418 joint "cameraB") (695 shadow self #f) (695 joint "camera") (838 shadow self #t) (838 joint "cameraB")))) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((zero? (get-reminder (-> this tasks) 0)) - (if arg0 - (save-reminder (-> this tasks) 1 0) - ) - (new 'static 'spool-anim - :name "explorer-reminder-1" - :index 10 - :parts 5 - :command-list '((0 send-event target draw #f) - (148 send-event target draw #t) - (148 joint "cameraB") - (390 send-event target draw #f) - (390 joint "camera") - (505 send-event target draw #t) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 1 0)) + (new 'static + 'spool-anim + :name "explorer-reminder-1" + :index 10 + :parts 5 + :command-list + '((0 send-event target draw #f) + (148 send-event target draw #t) + (148 joint "cameraB") + (390 send-event target draw #f) + (390 joint "camera") + (505 send-event target draw #t)))) (else - (if arg0 - (save-reminder (-> this tasks) 0 0) - ) - (new 'static 'spool-anim :name "explorer-reminder-2" :index 11 :parts 3 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 0)) + (new 'static 'spool-anim :name "explorer-reminder-2" :index 11 :parts 3 :command-list '())))) (((task-status need-reward-speech)) (cond (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - ) - (else - (set! (-> this will-talk) #t) - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim - :name "explorer-resolution" - :index 12 - :parts 5 - :command-list '((167 joint "cameraB") (310 joint "camera")) - ) - ) + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc)))) + (else (set! (-> this will-talk) #t) (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static + 'spool-anim + :name "explorer-resolution" + :index 12 + :parts 5 + :command-list + '((167 joint "cameraB") (310 joint "camera")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this explorer)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod process-taskable-method-43 ((this explorer)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.85714287 f0-2) - (play-ambient (-> this ambient) "EXP-AM05" #f (-> this root trans)) - ) + ((< 0.85714287 f0-2) (play-ambient (-> this ambient) "EXP-AM05" #f (-> this root trans))) ((< 0.71428573 f0-2) (if (not (closed? (-> this tasks) (game-task village1-uncle-money) (task-status need-reminder))) - (play-ambient (-> this ambient) "EXP-LO02" #f (-> this root trans)) - ) - ) - ((< 0.5714286 f0-2) - (play-ambient (-> this ambient) "EXP-AM04" #f (-> this root trans)) - ) - ((< 0.42857143 f0-2) - (play-ambient (-> this ambient) "EXP-AM03" #f (-> this root trans)) - ) - ((< 0.2857143 f0-2) - (play-ambient (-> this ambient) "EXP-AM02" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "EXP-LO02" #f (-> this root trans)))) + ((< 0.5714286 f0-2) (play-ambient (-> this ambient) "EXP-AM04" #f (-> this root trans))) + ((< 0.42857143 f0-2) (play-ambient (-> this ambient) "EXP-AM03" #f (-> this root trans))) + ((< 0.2857143 f0-2) (play-ambient (-> this ambient) "EXP-AM02" #f (-> this root trans))) ((< 0.14285715 f0-2) (if (not (closed? (-> this tasks) (game-task village1-uncle-money) (task-status need-reminder))) - (play-ambient (-> this ambient) "EXP-AM01" #f (-> this root trans)) - ) - ) - (else - (play-ambient (-> this ambient) "EXP-LO1A" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "EXP-AM01" #f (-> this root trans)))) + (else (play-ambient (-> this ambient) "EXP-LO1A" #f (-> this root trans))))))) (defmethod target-above-threshold? ((this explorer)) - (the-as symbol (and *target* (< (-> (target-pos 0) x) -202752.0) (< 98304.0 (-> (target-pos 0) z)))) - ) + (the-as symbol (and *target* (< (-> (target-pos 0) x) -202752.0) (< 98304.0 (-> (target-pos 0) z))))) (defstate idle (explorer) :virtual #t - :code (behavior () - (if (!= (ja-group) explorer-idle-ja) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (process-taskable-method-43 self) - (ja :group! explorer-idle-ja) - (let* ((f30-0 2.0) - (v1-11 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-12 (the-as number (logior #x3f800000 v1-11))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-12)))) 1)) - (ja-no-eval :group! explorer-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (cond - ((< (rand-float-gen) 0.5) - (ja-no-eval :group! explorer-idle2-look-at-map-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-1 (current-time))) - (while (let ((s5-0 (current-time)) - (f30-1 300.0) - (f28-0 0.5) - (f26-0 0.5) - ) - (< (- s5-0 (the-as time-frame (the int (* f30-1 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-1) - ) - (suspend) - ) - ) - (when (< (rand-float-gen) 0.75) - (ja-no-eval :group! explorer-idle2-look-right-map-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-2 (current-time))) - (while (let ((s5-1 (current-time)) - (f30-2 300.0) - (f28-1 0.5) - (f26-1 0.5) - ) - (< (- s5-1 (the-as time-frame (the int (* f30-2 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-2) - ) - (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + :code + (behavior () + (if (!= (ja-group) explorer-idle-ja) (ja-channel-push! 1 (seconds 0.2))) + (loop + (process-taskable-method-43 self) + (ja :group! explorer-idle-ja) + (let* ((f30-0 2.0) + (v1-11 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-12 (the-as number (logior #x3f800000 v1-11)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-12)))) 1)) + (ja-no-eval :group! explorer-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (cond + ((< (rand-float-gen) 0.5) + (ja-no-eval :group! explorer-idle2-look-at-map-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! 0.0)) - ) - (when (< (rand-float-gen) 0.5) + (ja :num! (seek!))) + (let ((gp-1 (current-time))) + (while (let ((s5-0 (current-time)) + (f30-1 300.0) + (f28-0 0.5) + (f26-0 0.5)) + (< (- s5-0 (the-as time-frame (the int (* f30-1 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-1)) + (suspend))) + (when (< (rand-float-gen) 0.75) (ja-no-eval :group! explorer-idle2-look-right-map-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (let ((gp-3 (current-time))) - (while (let ((s5-2 (current-time)) - (f30-3 300.0) - (f28-2 0.5) - (f26-2 0.5) - ) - (< (- s5-2 (the-as time-frame (the int (* f30-3 (+ f28-2 (* f26-2 (rand-float-gen))))))) gp-3) - ) - (suspend) - ) - ) + (ja :num! (seek!))) + (let ((gp-2 (current-time))) + (while (let ((s5-1 (current-time)) + (f30-2 300.0) + (f28-1 0.5) + (f26-1 0.5)) + (< (- s5-1 (the-as time-frame (the int (* f30-2 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-2)) + (suspend))) (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) (until (ja-done? 0) (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - (ja-no-eval :group! explorer-idle2-look-at-map-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - (else - (ja-no-eval :group! explorer-idle3-step-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-4 (current-time))) - (while (let ((s5-3 (current-time)) - (f30-4 300.0) - (f28-3 0.5) - (f26-3 0.5) - ) - (< (- s5-3 (the-as time-frame (the int (* f30-4 (+ f28-3 (* f26-3 (rand-float-gen))))))) gp-4) - ) - (suspend) - ) - ) - (ja-no-eval :group! explorer-idle3-looking-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-5 (current-time))) - (while (let ((s5-4 (current-time)) - (f30-5 300.0) - (f28-4 0.5) - (f26-4 0.5) - ) - (< (- s5-4 (the-as time-frame (the int (* f30-5 (+ f28-4 (* f26-4 (rand-float-gen))))))) gp-5) - ) - (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (let ((gp-6 (current-time))) - (while (let ((s5-5 (current-time)) - (f30-6 300.0) - (f28-5 0.5) - (f26-5 0.5) - ) - (< (- s5-5 (the-as time-frame (the int (* f30-6 (+ f28-5 (* f26-5 (rand-float-gen))))))) gp-6) - ) - (suspend) - ) - ) - (ja-no-eval :group! explorer-idle3-step-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! 0.0))) + (when (< (rand-float-gen) 0.5) + (ja-no-eval :group! explorer-idle2-look-right-map-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-3 (current-time))) + (while (let ((s5-2 (current-time)) + (f30-3 300.0) + (f28-2 0.5) + (f26-2 0.5)) + (< (- s5-2 (the-as time-frame (the int (* f30-3 (+ f28-2 (* f26-2 (rand-float-gen))))))) gp-3)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))))) + (ja-no-eval :group! explorer-idle2-look-at-map-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0)))) + (else + (ja-no-eval :group! explorer-idle3-step-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-4 (current-time))) + (while (let ((s5-3 (current-time)) + (f30-4 300.0) + (f28-3 0.5) + (f26-3 0.5)) + (< (- s5-3 (the-as time-frame (the int (* f30-4 (+ f28-3 (* f26-3 (rand-float-gen))))))) gp-4)) + (suspend))) + (ja-no-eval :group! explorer-idle3-looking-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-5 (current-time))) + (while (let ((s5-4 (current-time)) + (f30-5 300.0) + (f28-4 0.5) + (f26-4 0.5)) + (< (- s5-4 (the-as time-frame (the int (* f30-5 (+ f28-4 (* f26-4 (rand-float-gen))))))) gp-5)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))) + (let ((gp-6 (current-time))) + (while (let ((s5-5 (current-time)) + (f30-6 300.0) + (f28-5 0.5) + (f26-5 0.5)) + (< (- s5-5 (the-as time-frame (the int (* f30-6 (+ f28-5 (* f26-5 (rand-float-gen))))))) gp-6)) + (suspend))) + (ja-no-eval :group! explorer-idle3-step-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))) (defmethod init-from-entity! ((this explorer) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *explorer-sg* 3 42 (new 'static 'vector :w 4096.0) 5) @@ -337,5 +222,4 @@ (set! (-> this sound-flava) (music-flava explorer)) (set! (-> this draw light-index) (the-as uint 5)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village1/farmer.gc b/goal_src/jak1/levels/village1/farmer.gc index a561e585f3..ad7f6fad41 100644 --- a/goal_src/jak1/levels/village1/farmer.gc +++ b/goal_src/jak1/levels/village1/farmer.gc @@ -1,109 +1,63 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: farmer.gc -;; name in dgo: farmer -;; dgos: L1, VI1 - ;; DECOMP BEGINS -(deftype farmer (process-taskable) - () - ) - +(deftype farmer (process-taskable) ()) -(defskelgroup *farmer-sg* farmer farmer-lod0-jg farmer-sitting-cycle-ja - ((farmer-lod0-mg (meters 20)) (farmer-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow farmer-shadow-mg - ) +(defskelgroup *farmer-sg* + farmer + farmer-lod0-jg + farmer-sitting-cycle-ja + ((farmer-lod0-mg (meters 20)) (farmer-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow farmer-shadow-mg) (defmethod play-anim! ((this farmer) (arg0 symbol)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim :name "farmer-introduction" :index 6 :parts 5 :command-list '()) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static 'spool-anim :name "farmer-introduction" :index 6 :parts 5 :command-list '())) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((zero? (get-reminder (-> this tasks) 0)) - (if arg0 - (save-reminder (-> this tasks) 1 0) - ) - (new 'static 'spool-anim :name "farmer-reminder-1" :index 7 :parts 2 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 0)) + (new 'static 'spool-anim :name "farmer-reminder-1" :index 7 :parts 2 :command-list '())) (else - (if arg0 - (save-reminder (-> this tasks) 0 0) - ) - (new 'static 'spool-anim :name "farmer-reminder-2" :index 8 :parts 2 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 0)) + (new 'static 'spool-anim :name "farmer-reminder-2" :index 8 :parts 2 :command-list '())))) (((task-status need-reward-speech)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim :name "farmer-resolution" :index 9 :parts 4 :command-list '()) - ) + (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "farmer-resolution" :index 9 :parts 4 :command-list '())) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 4) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 4)))) (defmethod get-art-elem ((this farmer)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction) (task-status need-resolution) (task-status invalid)) - (-> this draw art-group data 4) - ) - (else - (-> this draw art-group data 5) - ) - ) - ) + (-> this draw art-group data 4)) + (else (-> this draw art-group data 5)))) (defmethod process-taskable-method-43 ((this farmer)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.8333333 f0-2) - (play-ambient (-> this ambient) "FAR-LO1A" #f (-> this root trans)) - ) - ((< 0.6666667 f0-2) - (play-ambient (-> this ambient) "FAR-AM01" #f (-> this root trans)) - ) - ((< 0.5 f0-2) - #f - ) - ((< 0.33333334 f0-2) - (play-ambient (-> this ambient) "FAR-AM2A" #f (-> this root trans)) - ) - ((< 0.16666667 f0-2) - (play-ambient (-> this ambient) "FAR-AM02" #f (-> this root trans)) - ) - (else - #f - ) - ) - ) - ) - ) + ((< 0.8333333 f0-2) (play-ambient (-> this ambient) "FAR-LO1A" #f (-> this root trans))) + ((< 0.6666667 f0-2) (play-ambient (-> this ambient) "FAR-AM01" #f (-> this root trans))) + ((< 0.5 f0-2) #f) + ((< 0.33333334 f0-2) (play-ambient (-> this ambient) "FAR-AM2A" #f (-> this root trans))) + ((< 0.16666667 f0-2) (play-ambient (-> this ambient) "FAR-AM02" #f (-> this root trans))) + (else #f))))) (defmethod initialize-collision ((this farmer) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -120,24 +74,19 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0) - (append-prim s4-0 s3-1) - ) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this farmer) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *farmer-sg* 3 25 (new 'static 'vector :w 4096.0) 5) @@ -145,5 +94,4 @@ (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (set! (-> this tasks) (get-task-control (game-task village1-yakow))) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village1/fishermans-boat.gc b/goal_src/jak1/levels/village1/fishermans-boat.gc index 18226397d3..e1cc6515ec 100644 --- a/goal_src/jak1/levels/village1/fishermans-boat.gc +++ b/goal_src/jak1/levels/village1/fishermans-boat.gc @@ -1,287 +1,232 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/entity/ambient.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/geometry/bounding-box.gc") (require "engine/common-obs/rigid-body.gc") (require "engine/geometry/path-h.gc") - -;; name: fishermans-boat.gc -;; name in dgo: fishermans-boat -;; dgos: L1, VI1 - (declare-type fishermans-boat rigid-body-platform) ;; DECOMP BEGINS -(define *fishermans-boat-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 1) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 40) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 10) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 6 - :mass 2.0 - :inertial-tensor-x (meters 4) - :inertial-tensor-y (meters 10) - :inertial-tensor-z (meters 15) - :cm-joint-y (meters 3) - :cm-joint-z (meters 1) - :idle-distance (meters 50) - :platform #t - :sound-name #f - ) - ) +(define *fishermans-boat-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 40) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 10) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 4) + :inertial-tensor-y (meters 10) + :inertial-tensor-z (meters 15) + :cm-joint-y (meters 3) + :cm-joint-z (meters 1) + :idle-distance (meters 50) + :platform #t + :sound-name #f)) (deftype boat-stabilizer (structure) - ((local-pos vector :inline) - (normal vector :inline) - ) - ) - + ((local-pos vector :inline) + (normal vector :inline))) (deftype vehicle-path (structure) - ((point-array vector 10 :inline) - (point-count int32) - ) + ((point-array vector 10 :inline) + (point-count int32)) (:methods - (get-point-count (_type_) int) - (nth-point (_type_ int vector) vector) - (distance-to-next-point (_type_ int vector) vector) - (add-point! (_type_ float float float float) none) - (debug-draw (_type_) symbol) - ) - ) - + (get-point-count (_type_) int) + (nth-point (_type_ int vector) vector) + (distance-to-next-point (_type_ int vector) vector) + (add-point! (_type_ float float float float) none) + (debug-draw (_type_) symbol))) (defmethod get-point-count ((this vehicle-path)) - (-> this point-count) - ) + (-> this point-count)) (defmethod nth-point ((this vehicle-path) (arg0 int) (arg1 vector)) (set! (-> arg1 quad) (-> this point-array arg0 quad)) - arg1 - ) + arg1) (defmethod distance-to-next-point ((this vehicle-path) (arg0 int) (arg1 vector)) (let ((a2-1 (+ arg0 1))) - (if (>= a2-1 (-> this point-count)) - (set! a2-1 0) - ) - (vector-! arg1 (-> this point-array a2-1) (-> this point-array arg0)) - ) + (if (>= a2-1 (-> this point-count)) (set! a2-1 0)) + (vector-! arg1 (-> this point-array a2-1) (-> this point-array arg0))) (set! (-> arg1 y) 0.0) (vector-normalize! arg1 1.0) - arg1 - ) + arg1) (defmethod add-point! ((this vehicle-path) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) (let ((v1-0 (-> this point-count))) (when (< v1-0 10) (set-vector! (-> this point-array v1-0) arg0 arg1 arg2 arg3) - (+! (-> this point-count) 1) - ) - ) + (+! (-> this point-count) 1))) 0 - (none) - ) + (none)) (defmethod debug-draw ((this vehicle-path)) (local-vars (sv-64 int) (sv-80 (function _varargs_ object))) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 y) 0.0) (set! (-> s5-0 w) 1.0) (dotimes (s2-0 (-> this point-count)) (let ((v1-1 (mod (+ s2-0 1) (-> this point-count)))) (set! (-> s4-0 quad) (-> this point-array s2-0 quad)) - (set! (-> s3-0 quad) (-> this point-array v1-1 quad)) - ) + (set! (-> s3-0 quad) (-> this point-array v1-1 quad))) (let ((f30-0 (-> s4-0 y)) - (f28-0 (-> s4-0 w)) - ) + (f28-0 (-> s4-0 w))) (set! (-> s5-0 x) (* f30-0 (cos f28-0))) - (set! (-> s5-0 z) (* f30-0 (sin f28-0))) - ) + (set! (-> s5-0 z) (* f30-0 (sin f28-0)))) (set! (-> s4-0 y) 0.0) (set! (-> s4-0 w) 1.0) (set! (-> s3-0 y) 0.0) (set! (-> s3-0 w) 1.0) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - s4-0 - s3-0 - (new 'static 'rgba :r #xff :g #xff :a #x80) - #f - (the-as rgba -1) - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - s4-0 - s5-0 - (meters 0.00024414062) - (new 'static 'rgba :r #xff :a #x80) - ) + (add-debug-line #t (bucket-id debug-no-zbuf) s4-0 s3-0 (new 'static 'rgba :r #xff :g #xff :a #x80) #f (the-as rgba -1)) + (add-debug-vector #t (bucket-id debug-no-zbuf) s4-0 s5-0 (meters 0.00024414062) (new 'static 'rgba :r #xff :a #x80)) (let ((s1-0 add-debug-text-3d) - (s0-0 #t) - ) + (s0-0 #t)) (set! sv-64 68) (set! sv-80 format) (let ((a0-9 (clear *temp-string*)) (a1-6 "~D") - (a2-2 s2-0) - ) - (sv-80 a0-9 a1-6 a2-2) - ) + (a2-2 s2-0)) + (sv-80 a0-9 a1-6 a2-2)) (let ((a2-3 *temp-string*) (a3-2 s4-0) (t0-2 4) - (t1-2 #f) - ) - (s1-0 s0-0 (the-as bucket-id sv-64) a2-3 a3-2 (the-as font-color t0-2) (the-as vector2h t1-2)) - ) - ) - ) - ) - #f - ) + (t1-2 #f)) + (s1-0 s0-0 (the-as bucket-id sv-64) a2-3 a3-2 (the-as font-color t0-2) (the-as vector2h t1-2)))))) + #f) -(define *boat-turning-radius-table* (new 'static 'array float 32 - 409600.0 - 90931.2 - 94699.52 - 95600.64 - 100802.56 - 97566.72 - 99246.08 - 98713.6 - 95846.4 - 100474.88 - 88842.24 - 105472.0 - 95436.8 - 97525.76 - 102481.92 - 96501.76 - 97198.08 - 93102.08 - 98631.68 - 100270.08 - 96788.48 - 100884.48 - 97402.88 - 98590.72 - 97280.0 - 100065.28 - 104079.36 - 92610.56 - 97034.24 - 88309.76 - 0.0 - 0.0 - ) - ) +(define *boat-turning-radius-table* + (new 'static + 'array + float + 32 + 409600.0 + 90931.2 + 94699.52 + 95600.64 + 100802.56 + 97566.72 + 99246.08 + 98713.6 + 95846.4 + 100474.88 + 88842.24 + 105472.0 + 95436.8 + 97525.76 + 102481.92 + 96501.76 + 97198.08 + 93102.08 + 98631.68 + 100270.08 + 96788.48 + 100884.48 + 97402.88 + 98590.72 + 97280.0 + 100065.28 + 104079.36 + 92610.56 + 97034.24 + 88309.76 + 0.0 + 0.0)) -(define *boat-throttle-control-table* (new 'static 'array float 32 - 0.0 - 0.031 - 0.0646 - 0.0952 - 0.1237 - 0.1508 - 0.1753 - 0.2018 - 0.2231 - 0.2473 - 0.2695 - 0.2904 - 0.3119 - 0.3312 - 0.3514 - 0.3701 - 0.3906 - 0.4148 - 0.4272 - 0.4483 - 0.4686 - 0.4856 - 0.5096 - 0.5203 - 0.5507 - 0.5697 - 0.5856 - 0.6184 - 0.6366 - 0.6694 - 0.0 - 0.0 - ) - ) +(define *boat-throttle-control-table* + (new 'static + 'array + float + 32 + 0.0 + 0.031 + 0.0646 + 0.0952 + 0.1237 + 0.1508 + 0.1753 + 0.2018 + 0.2231 + 0.2473 + 0.2695 + 0.2904 + 0.3119 + 0.3312 + 0.3514 + 0.3701 + 0.3906 + 0.4148 + 0.4272 + 0.4483 + 0.4686 + 0.4856 + 0.5096 + 0.5203 + 0.5507 + 0.5697 + 0.5856 + 0.6184 + 0.6366 + 0.6694 + 0.0 + 0.0)) (deftype vehicle-controller (structure) - ((path vehicle-path) - (turning-radius-table (pointer float)) - (throttle-control-table (pointer float)) - (table-step float) - (table-length int32) - (circle-radius float) - (throttle float) - (steering float) - (path-dest-index int8) - (left-circle int8) - (path-dest-point vector :inline) - (path-dest-velocity vector :inline) - (dest-circle vector :inline) - (target-point vector :inline) - (sample-dir vector :inline) - (sample-time time-frame) - (sample-index int32) - ) + ((path vehicle-path) + (turning-radius-table (pointer float)) + (throttle-control-table (pointer float)) + (table-step float) + (table-length int32) + (circle-radius float) + (throttle float) + (steering float) + (path-dest-index int8) + (left-circle int8) + (path-dest-point vector :inline) + (path-dest-velocity vector :inline) + (dest-circle vector :inline) + (target-point vector :inline) + (sample-dir vector :inline) + (sample-time time-frame) + (sample-index int32)) (:methods - (init! (_type_ vehicle-path (pointer float) (pointer float) int float) none) - (vehicle-controller-method-10 (_type_ vector float int) none) - (vehicle-controller-method-11 (_type_) none) - (vehicle-controller-method-12 (_type_ int vector) none) - (move-to-next-point (_type_ vector) none) - (vehicle-controller-method-14 (_type_ vector vector) none) - (vehicle-controller-method-15 (_type_ collide-shape-moving) none) - (vehicle-controller-method-16 (_type_) none) - ) - ) - + (init! (_type_ vehicle-path (pointer float) (pointer float) int float) none) + (vehicle-controller-method-10 (_type_ vector float int) none) + (vehicle-controller-method-11 (_type_) none) + (vehicle-controller-method-12 (_type_ int vector) none) + (move-to-next-point (_type_ vector) none) + (vehicle-controller-method-14 (_type_ vector vector) none) + (vehicle-controller-method-15 (_type_ collide-shape-moving) none) + (vehicle-controller-method-16 (_type_) none))) (defmethod relocate ((this vehicle-controller) (arg0 int)) - (if (nonzero? (-> this path)) - (&+! (-> this path) arg0) - ) - (the-as vehicle-controller 0) - ) + (if (nonzero? (-> this path)) (&+! (-> this path) arg0)) + (the-as vehicle-controller 0)) (defmethod vehicle-controller-method-12 ((this vehicle-controller) (arg0 int) (arg1 vector)) (when (< arg0 (get-point-count (-> this path))) (set! (-> this path-dest-index) arg0) (nth-point (-> this path) arg0 (-> this path-dest-point)) (let ((f30-0 (-> this path-dest-point y)) - (f28-0 (-> this path-dest-point w)) - ) + (f28-0 (-> this path-dest-point w))) (set! (-> this path-dest-velocity x) (* f30-0 (cos f28-0))) - (set! (-> this path-dest-velocity z) (* f30-0 (sin f28-0))) - ) + (set! (-> this path-dest-velocity z) (* f30-0 (sin f28-0)))) (set! (-> this path-dest-velocity y) 0.0) (set! (-> this path-dest-velocity w) 1.0) (set! (-> this path-dest-point y) 0.0) @@ -296,119 +241,79 @@ (set! (-> this left-circle) 1) (when (< 0.0 (vector-dot s3-0 s5-1)) (set! (-> this left-circle) 0) - (vector-float*! s5-1 s5-1 -1.0) - ) - ) - (vector+*! (-> this dest-circle) (-> this path-dest-point) s5-1 (-> this circle-radius)) - ) - (set! (-> this dest-circle w) (-> this circle-radius)) - ) + (vector-float*! s5-1 s5-1 -1.0))) + (vector+*! (-> this dest-circle) (-> this path-dest-point) s5-1 (-> this circle-radius))) + (set! (-> this dest-circle w) (-> this circle-radius))) 0 - (none) - ) + (none)) (defmethod move-to-next-point ((this vehicle-controller) (arg0 vector)) (let ((s4-0 (+ (-> this path-dest-index) 1))) - (if (>= s4-0 (get-point-count (-> this path))) - (set! s4-0 0) - ) - (vehicle-controller-method-12 this s4-0 arg0) - ) + (if (>= s4-0 (get-point-count (-> this path))) (set! s4-0 0)) + (vehicle-controller-method-12 this s4-0 arg0)) 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-14 ((this vehicle-controller) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (vector-! s5-0 (-> this dest-circle) arg0) (let ((f30-0 (vector-xz-length s5-0)) - (f28-0 (-> this dest-circle w)) - ) - (if (< f30-0 f28-0) - (set! f28-0 (* 0.9 f30-0)) - ) + (f28-0 (-> this dest-circle w))) + (if (< f30-0 f28-0) (set! f28-0 (* 0.9 f30-0))) (vector-normalize! s5-0 1.0) (set! (-> s3-0 x) (-> s5-0 z)) (set! (-> s3-0 z) (- (-> s5-0 x))) - (if (= (-> this left-circle) 1) - (vector-float*! s3-0 s3-0 -1.0) - ) + (if (= (-> this left-circle) 1) (vector-float*! s3-0 s3-0 -1.0)) (let* ((f0-5 f30-0) (f0-7 (* f0-5 f0-5)) (f1-0 f28-0) (f0-9 (sqrtf (- f0-7 (* f1-0 f1-0)))) - (f28-1 (/ (* f28-0 f0-9) f30-0)) - ) + (f28-1 (/ (* f28-0 f0-9) f30-0))) (let ((f0-12 (/ (* f0-9 f0-9) f30-0))) (set! (-> arg1 quad) (-> arg0 quad)) - (vector+*! arg1 (-> this target-point) s5-0 f0-12) - ) - (vector+*! arg1 (-> this target-point) s3-0 f28-1) - ) - ) - ) + (vector+*! arg1 (-> this target-point) s5-0 f0-12)) + (vector+*! arg1 (-> this target-point) s3-0 f28-1)))) 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-15 ((this vehicle-controller) (arg0 collide-shape-moving)) (vehicle-controller-method-14 this (-> arg0 trans) (-> this target-point)) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> this path-dest-velocity quad)) (vector-xz-normalize! s3-0 1.0) (vector-! s4-0 (-> this path-dest-point) (-> arg0 trans)) (let ((f30-0 (vector-dot s3-0 s4-0))) - (if (and (< (vector-xz-length s4-0) (-> this circle-radius)) (< f30-0 0.0)) - (move-to-next-point this (-> arg0 trans)) - ) - ) - ) - (let ((s4-2 (max 0 (min - (the int (/ (vector-xz-length (-> this path-dest-velocity)) (-> this table-step))) - (+ (-> this table-length) -1) - ) - ) - ) - ) - (set! (-> this throttle) (-> this throttle-control-table s4-2)) - ) + (if (and (< (vector-xz-length s4-0) (-> this circle-radius)) (< f30-0 0.0)) (move-to-next-point this (-> arg0 trans))))) + (let ((s4-2 (max 0 + (min (the int (/ (vector-xz-length (-> this path-dest-velocity)) (-> this table-step))) (+ (-> this table-length) -1))))) + (set! (-> this throttle) (-> this throttle-control-table s4-2))) (let ((s3-1 (new 'stack-no-clear 'vector)) - (s4-3 (new 'stack-no-clear 'vector)) - ) + (s4-3 (new 'stack-no-clear 'vector))) (vector-z-quaternion! s3-1 (-> arg0 quat)) (vector-x-quaternion! s4-3 (-> arg0 quat)) (let* ((v1-16 (-> arg0 trans)) (f0-9 (- (vector-dot s3-1 (-> this target-point)) (vector-dot s3-1 v1-16))) - (f3-0 (- (vector-dot s4-3 (-> this target-point)) (vector-dot s4-3 v1-16))) - ) - (set! (-> this steering) (fmax -1.0 (fmin 1.0 (/ (* 4.0 f3-0) (fmax 4096.0 f0-9))))) - ) - ) + (f3-0 (- (vector-dot s4-3 (-> this target-point)) (vector-dot s4-3 v1-16)))) + (set! (-> this steering) (fmax -1.0 (fmin 1.0 (/ (* 4.0 f3-0) (fmax 4096.0 f0-9))))))) 0 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-11 ((this vehicle-controller)) (format #t "(define *turning-radius-table* (new 'static 'inline-array 'float 0~%") (dotimes (s5-0 (-> this table-length)) - (format #t " (meters ~4,,2M)~%" (-> this turning-radius-table s5-0)) - ) + (format #t " (meters ~4,,2M)~%" (-> this turning-radius-table s5-0))) (format #t " )~%") (format #t " )~%") (format #t "(define *throttle-control-table* (new 'static 'inline-array 'float 0~%") (dotimes (s5-1 (-> this table-length)) - (format #t " ~f~%" (-> this throttle-control-table s5-1)) - ) + (format #t " ~f~%" (-> this throttle-control-table s5-1))) (format #t " )~%") (format #t " )~%") 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-10 ((this vehicle-controller) (arg0 vector) (arg1 float) (arg2 int)) (let ((s3-0 (new 'stack-no-clear 'vector))) @@ -420,53 +325,31 @@ (let* ((f30-0 (* 0.0033333334 (the float (- (current-time) (-> this sample-time))))) (f28-0 (* (-> this table-step) (the float arg2))) (f0-4 (acos-rad (vector-dot s3-0 (-> this sample-dir)))) - (f26-0 (/ (* f28-0 f30-0) f0-4)) - ) + (f26-0 (/ (* f28-0 f30-0) f0-4))) (when (and (>= arg2 0) (< arg2 (-> this table-length))) (set! (-> this turning-radius-table arg2) f26-0) (set! (-> this throttle-control-table arg2) arg1) (format #t "sample ~d (~M m/s) angle ~f deg, time ~f sec~%" arg2 f28-0 (* 57.29747 f0-4) f30-0) - (format #t "sample ~d (~M m/s) radius ~M throttle ~f~%" arg2 f28-0 f26-0 arg1) - ) - ) - ) + (format #t "sample ~d (~M m/s) radius ~M throttle ~f~%" arg2 f28-0 f26-0 arg1)))) (else - (set! (-> this sample-index) arg2) - (set-time! (-> this sample-time)) - (set! (-> this sample-dir quad) (-> s3-0 quad)) - ) - ) - ) + (set! (-> this sample-index) arg2) + (set-time! (-> this sample-time)) + (set! (-> this sample-dir quad) (-> s3-0 quad))))) 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-16 ((this vehicle-controller)) (debug-draw (-> this path)) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> this dest-circle) - (-> this dest-circle w) - (new 'static 'rgba :g #xff :a #x80) - ) - (add-debug-x - #t - (bucket-id debug-no-zbuf) - (-> this target-point) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (-> this dest-circle) + (-> this dest-circle w) + (new 'static 'rgba :g #xff :a #x80)) + (add-debug-x #t (bucket-id debug-no-zbuf) (-> this target-point) (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) 0 - (none) - ) + (none)) -(defmethod init! ((this vehicle-controller) - (arg0 vehicle-path) - (arg1 (pointer float)) - (arg2 (pointer float)) - (arg3 int) - (arg4 float) - ) +(defmethod init! ((this vehicle-controller) (arg0 vehicle-path) (arg1 (pointer float)) (arg2 (pointer float)) (arg3 int) (arg4 float)) (set! (-> this path) arg0) (set! (-> this turning-radius-table) arg1) (set! (-> this throttle-control-table) arg2) @@ -474,67 +357,68 @@ (set! (-> this table-step) arg4) (set! (-> this circle-radius) 102400.0) 0 - (none) - ) + (none)) (deftype fishermans-boat (rigid-body-platform) - ((stabilizer-array boat-stabilizer 2 :inline) - (engine-thrust-local-pos vector :inline) - (ignition symbol) - (engine-thrust float) - (propeller joint-mod-spinner) - (dock-point vector :inline) - (dest-dir vector :inline) - (dock-point-index int8) - (auto-pilot symbol) - (anchored symbol) - (waiting-for-player symbol) - (player-riding symbol) - (boat-path vehicle-path :inline) - (cam-tracker handle) - (kill-player symbol :offset 1076) - (engine-sound-id sound-id :offset 1080) - (engine-sound-envelope float :offset 1084) - (debug-draw basic :offset 1088) - (debug-path-record basic :offset 1092) - (debug-path-playback basic :offset 1096) - (measure-parameters basic :offset 1100) - (controller vehicle-controller :inline :offset 1104) - (anim spool-anim :offset 1244) - (old-target-pos transformq :inline :offset 1248) - (evilbro handle :offset 1296) - (evilsis handle :offset 1304) - ) + ((stabilizer-array boat-stabilizer 2 :inline) + (engine-thrust-local-pos vector :inline) + (ignition symbol) + (engine-thrust float) + (propeller joint-mod-spinner) + (dock-point vector :inline) + (dest-dir vector :inline) + (dock-point-index int8) + (auto-pilot symbol) + (anchored symbol) + (waiting-for-player symbol) + (player-riding symbol) + (boat-path vehicle-path :inline) + (cam-tracker handle) + (kill-player symbol :offset 1076) + (engine-sound-id sound-id :offset 1080) + (engine-sound-envelope float :offset 1084) + (debug-draw basic :offset 1088) + (debug-path-record basic :offset 1092) + (debug-path-playback basic :offset 1096) + (measure-parameters basic :offset 1100) + (controller vehicle-controller :inline :offset 1104) + (anim spool-anim :offset 1244) + (old-target-pos transformq :inline :offset 1248) + (evilbro handle :offset 1296) + (evilsis handle :offset 1304)) (:states - fishermans-boat-docked-misty - fishermans-boat-docked-village - fishermans-boat-entering-misty - fishermans-boat-entering-village - fishermans-boat-leaving-misty - fishermans-boat-leaving-village - fishermans-boat-measurements - fishermans-boat-player-control - fishermans-boat-ride-to-misty - fishermans-boat-ride-to-village1 - ) - ) - + fishermans-boat-docked-misty + fishermans-boat-docked-village + fishermans-boat-entering-misty + fishermans-boat-entering-village + fishermans-boat-leaving-misty + fishermans-boat-leaving-village + fishermans-boat-measurements + fishermans-boat-player-control + fishermans-boat-ride-to-misty + fishermans-boat-ride-to-village1)) -(defskelgroup *fishermans-boat-sg* fishermans-boat fishermans-boat-lod0-jg fishermans-boat-idle-ja - ((fishermans-boat-lod0-mg (meters 20)) (fishermans-boat-lod1-mg (meters 999999))) - :bounds (static-spherem 0 3 0 15) - :longest-edge (meters 7.3) - ) +(defskelgroup *fishermans-boat-sg* + fishermans-boat + fishermans-boat-lod0-jg + fishermans-boat-idle-ja + ((fishermans-boat-lod0-mg (meters 20)) (fishermans-boat-lod1-mg (meters 999999))) + :bounds (static-spherem 0 3 0 15) + :longest-edge (meters 7.3)) -(defskelgroup *fb-evilbro-sg* evilbro evilbro-lod0-jg evilbro-idle-ja - ((evilbro-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) +(defskelgroup *fb-evilbro-sg* + evilbro + evilbro-lod0-jg + evilbro-idle-ja + ((evilbro-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) -(defskelgroup *fb-evilsis-sg* evilsis evilsis-lod0-jg evilsis-idle-ja - ((evilsis-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) +(defskelgroup *fb-evilsis-sg* + evilsis + evilsis-lod0-jg + evilsis-idle-ja + ((evilsis-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) (defmethod rigid-body-platform-method-23 ((this fishermans-boat) (arg0 float)) (local-vars (sv-128 int) (sv-144 rigid-body-control-point) (sv-160 int) (sv-176 vector)) @@ -543,8 +427,7 @@ (s5-0 (new 'stack-no-clear 'vector)) (s0-0 (new 'stack-no-clear 'vector)) (s2-0 (new 'stack-no-clear 'vector)) - (s3-0 (-> this rbody matrix)) - ) + (s3-0 (-> this rbody matrix))) (set! (-> s2-0 quad) (-> s3-0 vector 2 quad)) (set! sv-128 0) (while (< sv-128 6) @@ -555,8 +438,7 @@ (set! (-> sv-144 velocity quad) (-> s1-0 quad)) (set! (-> sv-144 world-pos w) (ocean-get-height s5-0)) (let* ((f0-2 (- (-> sv-144 world-pos w) (-> s5-0 y))) - (f30-0 (fmin 1.0 (/ f0-2 (-> this info max-buoyancy-depth)))) - ) + (f30-0 (fmin 1.0 (/ f0-2 (-> this info max-buoyancy-depth))))) (when (< 0.0 f0-2) (vector-float*! s4-0 *y-vector* (* 20.0 f0-2 (-> this rbody mass))) (rigid-body-method-13 (-> this rbody) s5-0 s4-0) @@ -564,17 +446,10 @@ (rigid-body-method-13 (-> this rbody) s5-0 s4-0) (vector-float*! s4-0 s1-0 (* -1.0 (-> this info drag-factor) f30-0)) (rigid-body-method-13 (-> this rbody) s5-0 s4-0) - (vector-float*! - s4-0 - (the-as vector (-> s3-0 vector)) - (* -0.5 (vector-dot (the-as vector (-> s3-0 vector)) s1-0)) - ) - (rigid-body-method-13 (-> this rbody) s5-0 s4-0) - ) - ) + (vector-float*! s4-0 (the-as vector (-> s3-0 vector)) (* -0.5 (vector-dot (the-as vector (-> s3-0 vector)) s1-0))) + (rigid-body-method-13 (-> this rbody) s5-0 s4-0))) 0 - (set! sv-128 (+ sv-128 1)) - ) + (set! sv-128 (+ sv-128 1))) (set! sv-160 0) (while (< sv-160 2) (set! sv-176 (-> this stabilizer-array sv-160 local-pos)) @@ -584,8 +459,7 @@ (vector-float*! s4-0 s0-0 (* -1.0 (vector-dot s0-0 s1-0))) (rigid-body-method-13 (-> this rbody) s5-0 s4-0) 0 - (set! sv-160 (+ sv-160 1)) - ) + (set! sv-160 (+ sv-160 1))) (when (-> this anchored) (let ((s1-1 (new 'stack-no-clear 'vector))) (vector+*! s5-0 (-> s3-0 vector 3) s2-0 24576.0) @@ -593,82 +467,68 @@ (vector-! s4-0 s1-1 s5-0) (set! (-> s4-0 y) 0.0) (vector-float*! s4-0 s4-0 10.0) - (if (< 81920.0 (vector-length s4-0)) - (vector-normalize! s4-0 81920.0) - ) + (if (< 81920.0 (vector-length s4-0)) (vector-normalize! s4-0 81920.0)) (rigid-body-method-13 (-> this rbody) s5-0 s4-0) (vector+*! s5-0 (-> s3-0 vector 3) s2-0 -24576.0) (vector+*! s1-1 (-> this dock-point) (-> this dest-dir) -24576.0) - (vector-! s4-0 s1-1 s5-0) - ) + (vector-! s4-0 s1-1 s5-0)) (set! (-> s4-0 y) 0.0) (vector-float*! s4-0 s4-0 10.0) - (if (< 81920.0 (vector-length s4-0)) - (vector-normalize! s4-0 81920.0) - ) - (rigid-body-method-13 (-> this rbody) s5-0 s4-0) - ) + (if (< 81920.0 (vector-length s4-0)) (vector-normalize! s4-0 81920.0)) + (rigid-body-method-13 (-> this rbody) s5-0 s4-0)) (when (-> this ignition) (let ((s2-1 (new 'stack-no-clear 'vector))) (vector-matrix*! s5-0 (-> this engine-thrust-local-pos) s3-0) (set-vector! s2-1 (- (-> this controller steering)) 0.0 2.0 1.0) (vector-rotate*! s2-1 s2-1 s3-0) (vector-normalize! s2-1 1.0) - (vector-float*! s4-0 s2-1 (-> this engine-thrust)) - ) - (rigid-body-method-13 (-> this rbody) s5-0 s4-0) - ) - ) + (vector-float*! s4-0 s2-1 (-> this engine-thrust))) + (rigid-body-method-13 (-> this rbody) s5-0 s4-0))) (rigid-body-platform-method-26 this) (rigid-body-platform-method-25 this) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-set-dock-point fishermans-boat ((arg0 int)) (set! (-> self dock-point-index) arg0) (nth-point (-> self boat-path) arg0 (-> self dock-point)) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-set-path-point fishermans-boat ((arg0 int)) (vehicle-controller-method-12 (-> self controller) arg0 (-> self root-overlay trans)) (vector-normalize-copy! (-> self dest-dir) (-> self controller path-dest-velocity) 1.0) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-next-path-point fishermans-boat () (move-to-next-point (-> self controller) (-> self root-overlay trans)) (vector-normalize-copy! (-> self dest-dir) (-> self controller path-dest-velocity) 1.0) 0 - (none) - ) + (none)) (defpart 2896 - :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x2)) - (:num 0.06) - (:x (meters 10)) - (:scale-x (meters 1.5) (meters 3)) - (:rot-y (degrees 0)) - (:scale-y (meters 1.5) (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.006666667) (meters 0.008666666)) - (:scalevel-y (meters 0.006666667) (meters 0.008666666)) - (:fade-a 0.7111111) - (:friction 0.94) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.3)) - (:next-launcher 119) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xa :page #x2)) + (:num 0.06) + (:x (meters 10)) + (:scale-x (meters 1.5) (meters 3)) + (:rot-y (degrees 0)) + (:scale-y (meters 1.5) (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.006666667) (meters 0.008666666)) + (:scalevel-y (meters 0.006666667) (meters 0.008666666)) + (:fade-a 0.7111111) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.3)) + (:next-launcher 119) + (:rotate-y (degrees 0)))) (defbehavior fishermans-boat-wave fishermans-boat ((arg0 vector) (arg1 float) (arg2 float)) (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -678,146 +538,96 @@ (set! (-> *part-id-table* 2896 init-specs 19 initial-valuef) (+ 49152.0 arg1)) (set! (-> *part-id-table* 2896 init-specs 1 initial-valuef) (* 0.0000036621095 arg2)) (set! (-> *part-id-table* 2896 init-specs 2 initial-valuef) (* 0.1 arg2)) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2896) gp-0) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2896) gp-0)) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-spawn-particles fishermans-boat ((arg0 float)) (let* ((s5-0 (-> self node-list data 3 bone transform)) (s4-0 (new 'stack-no-clear 'vector)) - (f30-0 (vector-y-angle (-> s5-0 vector 2))) - ) + (f30-0 (vector-y-angle (-> s5-0 vector 2)))) (vector-matrix*! s4-0 (new 'static 'vector :z 40960.0 :w 1.0) s5-0) (fishermans-boat-wave s4-0 f30-0 arg0) (vector-matrix*! s4-0 (new 'static 'vector :x 20480.0 :z -8192.0 :w 1.0) s5-0) (fishermans-boat-wave s4-0 f30-0 arg0) (vector-matrix*! s4-0 (new 'static 'vector :x -20480.0 :z -8192.0 :w 1.0) s5-0) - (fishermans-boat-wave s4-0 f30-0 arg0) - ) + (fishermans-boat-wave s4-0 f30-0 arg0)) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-play-sounds fishermans-boat () (if (-> self ignition) - (seek! (-> self engine-sound-envelope) 1.0 (* 2.0 (seconds-per-frame))) - (seek! (-> self engine-sound-envelope) 0.0 (seconds-per-frame)) - ) + (seek! (-> self engine-sound-envelope) 1.0 (* 2.0 (seconds-per-frame))) + (seek! (-> self engine-sound-envelope) 0.0 (seconds-per-frame))) (cond ((< 0.0 (-> self engine-sound-envelope)) - (if (zero? (-> self engine-sound-id)) - (set! (-> self engine-sound-id) (new-sound-id)) - ) + (if (zero? (-> self engine-sound-id)) (set! (-> self engine-sound-id) (new-sound-id))) (* 0.0000008138021 (-> self engine-thrust)) (let ((f30-0 (* 100.0 (-> self engine-sound-envelope))) (f28-0 (+ -1.0 (* 2.0 (-> self engine-sound-envelope)))) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (joint-node fishermans-boat-lod0-jg prop)) - (sound-play - "boat-engine" - :id (-> self engine-sound-id) - :vol f30-0 - :pitch f28-0 - :position (the-as symbol gp-0) - ) - ) - ) + (sound-play "boat-engine" :id (-> self engine-sound-id) :vol f30-0 :pitch f28-0 :position (the-as symbol gp-0)))) (else - (when (nonzero? (-> self engine-sound-id)) - (sound-stop (-> self engine-sound-id)) - (set! (-> self engine-sound-id) (new 'static 'sound-id)) - 0 - ) - ) - ) - (none) - ) + (when (nonzero? (-> self engine-sound-id)) + (sound-stop (-> self engine-sound-id)) + (set! (-> self engine-sound-id) (new 'static 'sound-id)) + 0))) + (none)) (defbehavior fishermans-boat-post fishermans-boat () (when (and *target* (-> self kill-player)) (set! (-> self kill-player) #f) - (when (send-event *target* 'attack #f (static-attack-info ((mode 'endlessfall)))) - ) - ) + (when (send-event *target* 'attack #f (static-attack-info ((mode 'endlessfall)))))) (when (and *target* (-> self ignition)) (cond ((-> self auto-pilot) (vehicle-controller-method-15 (-> self controller) (-> self root-overlay)) - (vector-normalize-copy! (-> self dest-dir) (-> self controller path-dest-velocity) 1.0) - ) + (vector-normalize-copy! (-> self dest-dir) (-> self controller path-dest-velocity) 1.0)) (else - (when (not (-> self measure-parameters)) - (let ((f0-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0))) - (seek! (-> self controller steering) (fmax -1.0 (fmin 1.0 f0-0)) (seconds-per-frame)) - ) - (if (cpad-hold? 0 x) - (seek! (-> self controller throttle) 0.8 (seconds-per-frame)) - (seek! (-> self controller throttle) 0.0 (* 0.25 (seconds-per-frame))) - ) - 0 - ) - ) - ) + (when (not (-> self measure-parameters)) + (let ((f0-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0))) + (seek! (-> self controller steering) (fmax -1.0 (fmin 1.0 f0-0)) (seconds-per-frame))) + (if (cpad-hold? 0 x) + (seek! (-> self controller throttle) 0.8 (seconds-per-frame)) + (seek! (-> self controller throttle) 0.0 (* 0.25 (seconds-per-frame)))) + 0))) (when (and (-> self player-riding) (and (zero? (-> self root-overlay riders num-riders)) - (or (not *target*) - (< 32768.0 (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans))) - ) - ) - ) - (if (process-release? *target*) - (set! (-> self kill-player) #t) - ) + (or (not *target*) (< 32768.0 (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))))) + (if (process-release? *target*) (set! (-> self kill-player) #t)) (set! (-> self controller throttle) 0.0) - (set! (-> self controller steering) 0.0) - ) - ) + (set! (-> self controller steering) 0.0))) (if (-> self ignition) - (seek! (-> self engine-thrust) (* 1228800.0 (-> self controller throttle)) 6144.0) - (set! (-> self engine-thrust) 0.0) - ) + (seek! (-> self engine-thrust) (* 1228800.0 (-> self controller throttle)) 6144.0) + (set! (-> self engine-thrust) 0.0)) (cond ((-> self ignition) (let ((f0-20 60.0) (f1-4 1820.4445) (f2-1 6735.6445) - (f3-0 1228800.0) - ) - (set! (-> self propeller spin-rate) (* f0-20 (+ f1-4 (* f2-1 (/ 1.0 f3-0) (-> self engine-thrust))))) - ) - ) - (else - (seek! (-> self propeller spin-rate) 0.0 218.45334) - ) - ) + (f3-0 1228800.0)) + (set! (-> self propeller spin-rate) (* f0-20 (+ f1-4 (* f2-1 (/ 1.0 f3-0) (-> self engine-thrust))))))) + (else (seek! (-> self propeller spin-rate) 0.0 218.45334))) (rigid-body-platform-method-28 self) (quaternion-copy! (-> self root-overlay quat) (-> self rbody rotation)) (rigid-body-method-18 (-> self rbody) (-> self root-overlay trans)) (when (-> self debug-draw) (vehicle-controller-method-16 (-> self controller)) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> self boat-path)) - 614400.0 - (new 'static 'rgba :b #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (the-as vector (&-> self stack 848)) - 409600.0 - (new 'static 'rgba :b #xff :a #x80) - ) - ) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (the-as vector (-> self boat-path)) + 614400.0 + (new 'static 'rgba :b #xff :a #x80)) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (the-as vector (&-> self stack 848)) + 409600.0 + (new 'static 'rgba :b #xff :a #x80))) (fishermans-boat-spawn-particles 8192.0) (fishermans-boat-play-sounds) (rider-post) - (none) - ) + (none)) (defbehavior fishermans-boat-leave-dock? fishermans-boat () (let ((gp-0 #f)) @@ -825,403 +635,316 @@ (or (task-complete? *game-info* (game-task jungle-fishgame)) (and *cheat-mode* (cpad-hold? 0 l3))) (not (level-hint-displayed?)) (time-elapsed? (-> self state-time) (seconds 3)) - (file-status *art-control* (-> self anim name) 0) - ) + (file-status *art-control* (-> self anim name) 0)) (hide-hud) (level-hint-surpress!) (kill-current-level-hint '() '(sidekick voicebox) 'exit) (when (and (hud-hidden?) (can-grab-display? self) (= *kernel-boot-message* 'play)) - (let ((s5-1 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-17 s5-1)) - (set! (-> v1-17 width) (the float 440)) - ) - (let ((v1-18 s5-1)) - (set! (-> v1-18 height) (the float 80)) - ) + (let ((s5-1 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-17 s5-1)) (set! (-> v1-17 width) (the float 440))) + (let ((v1-18 s5-1)) (set! (-> v1-18 height) (the float 80))) (set! (-> s5-1 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-1 #f 128 22) - ) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-1 #f 128 22)) (when (and (cpad-pressed? 0 circle) (process-grab? *target*)) (set! (-> self waiting-for-player) #f) (set! (-> self player-riding) #t) (set! (-> self auto-pilot) #t) (set! (-> self ignition) #t) (set! (-> self anchored) #f) - (set! gp-0 #t) - ) - ) - ) - gp-0 - ) - ) + (set! gp-0 #t)))) + gp-0)) (defbehavior fishermans-boat-enter-dock? fishermans-boat () (when (and (-> self player-riding) (= (-> self controller path-dest-index) (-> self dock-point-index))) - (if (process-release? *target*) - (set! (-> self player-riding) #f) - ) - ) + (if (process-release? *target*) (set! (-> self player-riding) #f))) (let ((f0-0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point)))) - (when (and (= (-> self controller path-dest-index) (-> self dock-point-index)) - (not (-> self anchored)) - (< f0-0 81920.0) - ) + (when (and (= (-> self controller path-dest-index) (-> self dock-point-index)) (not (-> self anchored)) (< f0-0 81920.0)) (set! (-> self ignition) #f) - (set! (-> self anchored) #t) - ) - (< f0-0 28672.0) - ) - ) + (set! (-> self anchored) #t)) + (< f0-0 28672.0))) (defstate fishermans-boat-docked-village (fishermans-boat) :event rigid-body-platform-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (fishermans-boat-leave-dock?) - (go fishermans-boat-ride-to-misty) - ) - (rider-trans) - (if (nonzero? (-> self anim)) - (spool-push *art-control* (-> self anim name) 0 self -99.0) - ) - ) - :code (behavior () - (set! (-> self anim) (new 'static 'spool-anim - :name "fishermans-boat-ride-to-misty" - :index 15 - :parts 3 - :command-list '((0 want-levels village1 misty) - (0 shadow target #f) - (0 shadow sidekick #f) - (250 display-level misty display) - (250 display-level village1 special) - (250 want-vis mis) - (250 want-force-vis misty #t) - (459 want-force-vis misty #f) - (459 save) - (459 blackout 20) - (459 shadow target #t) - ) - ) - ) - (fishermans-boat-set-dock-point 0) - (fishermans-boat-set-path-point 0) - (anim-loop) - ) - :post fishermans-boat-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (fishermans-boat-leave-dock?) (go fishermans-boat-ride-to-misty)) + (rider-trans) + (if (nonzero? (-> self anim)) (spool-push *art-control* (-> self anim name) 0 self -99.0))) + :code + (behavior () + (set! (-> self anim) + (new 'static + 'spool-anim + :name "fishermans-boat-ride-to-misty" + :index 15 + :parts 3 + :command-list + '((0 want-levels village1 misty) + (0 shadow target #f) + (0 shadow sidekick #f) + (250 display-level misty display) + (250 display-level village1 special) + (250 want-vis mis) + (250 want-force-vis misty #t) + (459 want-force-vis misty #f) + (459 save) + (459 blackout 20) + (459 shadow target #t)))) + (fishermans-boat-set-dock-point 0) + (fishermans-boat-set-path-point 0) + (anim-loop)) + :post fishermans-boat-post) (defstate fishermans-boat-leaving-village (fishermans-boat) - :trans (behavior () - (when (< 614400.0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point))) - (load-state-want-display-level 'village1 'special) - (load-state-want-display-level 'misty 'display) - (load-state-want-vis 'mis) - (load-state-want-force-vis 'misty #t) - (go fishermans-boat-player-control) - ) - (rider-trans) - ) - :code (behavior () - (load-state-want-levels 'village1 'misty) - (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior fishermans-boat - () - (camera-change-to "camera-282" 0 #f) - (while (!= (-> self rbody lin-momentum-damping-factor) 'release) - (suspend) - ) - (set! (-> self rbody lin-momentum-damping-factor) (the-as float #f)) - (camera-change-to (the-as string 'base) 0 #f) - (none) - ) - :to self - ) - ) - ) - (send-event (handle->process (-> self cam-tracker)) 'border #t) - (send-event (handle->process (-> self cam-tracker)) 'mask #x20800) - (fishermans-boat-set-path-point 0) - (fishermans-boat-next-path-point) - (loop - (suspend) - ) - ) - :post fishermans-boat-post - ) + :trans + (behavior () + (when (< 614400.0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point))) + (load-state-want-display-level 'village1 'special) + (load-state-want-display-level 'misty 'display) + (load-state-want-vis 'mis) + (load-state-want-force-vis 'misty #t) + (go fishermans-boat-player-control)) + (rider-trans)) + :code + (behavior () + (load-state-want-levels 'village1 'misty) + (set! (-> self cam-tracker) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior fishermans-boat () + (camera-change-to "camera-282" 0 #f) + (while (!= (-> self rbody lin-momentum-damping-factor) 'release) + (suspend)) + (set! (-> self rbody lin-momentum-damping-factor) (the-as float #f)) + (camera-change-to (the-as string 'base) 0 #f) + (none)) + :to + self))) + (send-event (handle->process (-> self cam-tracker)) 'border #t) + (send-event (handle->process (-> self cam-tracker)) 'mask #x20800) + (fishermans-boat-set-path-point 0) + (fishermans-boat-next-path-point) + (loop + (suspend))) + :post fishermans-boat-post) (defstate fishermans-boat-entering-village (fishermans-boat) - :trans (behavior () - (when (fishermans-boat-enter-dock?) - (set! (-> self waiting-for-player) #f) - (when #t - (set! (-> *camera* cam-entity) (the-as entity #t)) - (send-event *camera* 'clear-entity) - (load-commands-set! *level* '()) - (load-state-want-display-level 'village1 'display) - (load-state-want-force-vis 'village1 #f) - (go fishermans-boat-docked-village) - ) - ) - (rider-trans) - ) - :code (behavior () - (load-state-want-levels 'village1 'beach) - (load-state-want-vis 'vi1) - (fishermans-boat-set-dock-point 0) - (fishermans-boat-set-path-point 5) - (anim-loop) - ) - :post fishermans-boat-post - ) + :trans + (behavior () + (when (fishermans-boat-enter-dock?) + (set! (-> self waiting-for-player) #f) + (when #t + (set! (-> *camera* cam-entity) (the-as entity #t)) + (send-event *camera* 'clear-entity) + (load-commands-set! *level* '()) + (load-state-want-display-level 'village1 'display) + (load-state-want-force-vis 'village1 #f) + (go fishermans-boat-docked-village))) + (rider-trans)) + :code + (behavior () + (load-state-want-levels 'village1 'beach) + (load-state-want-vis 'vi1) + (fishermans-boat-set-dock-point 0) + (fishermans-boat-set-path-point 5) + (anim-loop)) + :post fishermans-boat-post) (defstate fishermans-boat-docked-misty (fishermans-boat) :event rigid-body-platform-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (fishermans-boat-leave-dock?) - (go fishermans-boat-ride-to-village1) - ) - (rider-trans) - (if (nonzero? (-> self anim)) - (spool-push *art-control* (-> self anim name) 0 self -99.0) - ) - ) - :code (behavior () - (if #t - (set! (-> self anim) (new 'static 'spool-anim - :name "fishermans-boat-ride-to-village1" - :index 16 - :parts 3 - :command-list '((0 want-levels village1 misty) - (0 shadow target #f) - (0 shadow sidekick #f) - (250 display-level village1 display) - (250 display-level misty #f) - (250 want-vis vi1) - (250 want-force-vis village1 #t) - (459 want-force-vis village1 #f) - (459 save) - (459 blackout 20) - (459 shadow target #t) - ) - ) - ) - (set! (-> self anim) (new 'static 'spool-anim - :name "fishermans-boat-ride-to-village1-alt" - :index 17 - :parts 12 - :command-list '((0 want-levels village1 misty) - (105 want-levels village1 intro) - (150 display-level intro display) - (150 want-vis int) - (150 kill "med-res-level-3") - (150 want-force-vis intro #t) - (151 send-event self evilbro) - (1199 send-event self evilsis) - (1200 want-force-vis intro #f) - (1200 want-levels village1 beach) - (1200 display-level village1 display) - (1200 want-vis vi1) - (1200 want-force-vis village1 #t) - (1349 want-force-vis village1 #f) - (1349 save) - (1349 blackout 20) - ) - ) - ) - ) - (load-state-want-force-vis 'misty #f) - (fishermans-boat-set-dock-point 4) - (fishermans-boat-set-path-point 4) - (anim-loop) - ) - :post fishermans-boat-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (fishermans-boat-leave-dock?) (go fishermans-boat-ride-to-village1)) + (rider-trans) + (if (nonzero? (-> self anim)) (spool-push *art-control* (-> self anim name) 0 self -99.0))) + :code + (behavior () + (if #t + (set! (-> self anim) + (new 'static + 'spool-anim + :name "fishermans-boat-ride-to-village1" + :index 16 + :parts 3 + :command-list + '((0 want-levels village1 misty) + (0 shadow target #f) + (0 shadow sidekick #f) + (250 display-level village1 display) + (250 display-level misty #f) + (250 want-vis vi1) + (250 want-force-vis village1 #t) + (459 want-force-vis village1 #f) + (459 save) + (459 blackout 20) + (459 shadow target #t)))) + (set! (-> self anim) + (new 'static + 'spool-anim + :name "fishermans-boat-ride-to-village1-alt" + :index 17 + :parts 12 + :command-list + '((0 want-levels village1 misty) + (105 want-levels village1 intro) + (150 display-level intro display) + (150 want-vis int) + (150 kill "med-res-level-3") + (150 want-force-vis intro #t) + (151 send-event self evilbro) + (1199 send-event self evilsis) + (1200 want-force-vis intro #f) + (1200 want-levels village1 beach) + (1200 display-level village1 display) + (1200 want-vis vi1) + (1200 want-force-vis village1 #t) + (1349 want-force-vis village1 #f) + (1349 save) + (1349 blackout 20))))) + (load-state-want-force-vis 'misty #f) + (fishermans-boat-set-dock-point 4) + (fishermans-boat-set-path-point 4) + (anim-loop)) + :post fishermans-boat-post) (defstate fishermans-boat-leaving-misty (fishermans-boat) - :trans (behavior () - (when (< 409600.0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point))) - (load-state-want-force-vis 'village1 #t) - (load-state-want-display-level 'village1 'display) - (set-continue! *game-info* "village1-hut") - (load-commands-set! *level* (load-command-get-index *level* 'village1 2)) - (go fishermans-boat-player-control) - ) - (rider-trans) - ) - :code (behavior () - (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior fishermans-boat - () - (camera-change-to "camera-287" 0 #f) - (while (!= (-> self rbody lin-momentum-damping-factor) 'release) - (suspend) - ) - (set! (-> self rbody lin-momentum-damping-factor) (the-as float #f)) - (camera-change-to (the-as string 'base) 0 #f) - (none) - ) - :to self - ) - ) - ) - (send-event (handle->process (-> self cam-tracker)) 'border #t) - (send-event (handle->process (-> self cam-tracker)) 'mask #x20800) - (fishermans-boat-set-path-point 4) - (fishermans-boat-next-path-point) - (loop - (suspend) - ) - ) - :post fishermans-boat-post - ) + :trans + (behavior () + (when (< 409600.0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point))) + (load-state-want-force-vis 'village1 #t) + (load-state-want-display-level 'village1 'display) + (set-continue! *game-info* "village1-hut") + (load-commands-set! *level* (load-command-get-index *level* 'village1 2)) + (go fishermans-boat-player-control)) + (rider-trans)) + :code + (behavior () + (set! (-> self cam-tracker) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior fishermans-boat () + (camera-change-to "camera-287" 0 #f) + (while (!= (-> self rbody lin-momentum-damping-factor) 'release) + (suspend)) + (set! (-> self rbody lin-momentum-damping-factor) (the-as float #f)) + (camera-change-to (the-as string 'base) 0 #f) + (none)) + :to + self))) + (send-event (handle->process (-> self cam-tracker)) 'border #t) + (send-event (handle->process (-> self cam-tracker)) 'mask #x20800) + (fishermans-boat-set-path-point 4) + (fishermans-boat-next-path-point) + (loop + (suspend))) + :post fishermans-boat-post) (defstate fishermans-boat-entering-misty (fishermans-boat) - :trans (behavior () - (when (fishermans-boat-enter-dock?) - (set! (-> self waiting-for-player) #f) - (level-hint-spawn (text-id sidekick-misty) "sksp0060" (the-as entity #f) *entity-pool* (game-task none)) - (when #t - (set! (-> *camera* cam-entity) (the-as entity #t)) - (send-event *camera* 'clear-entity) - (go fishermans-boat-docked-misty) - ) - ) - (rider-trans) - ) - :code (behavior () - (set-continue! *game-info* "misty-start") - (fishermans-boat-set-dock-point 4) - (fishermans-boat-set-path-point 2) - (loop - (suspend) - ) - ) - :post fishermans-boat-post - ) + :trans + (behavior () + (when (fishermans-boat-enter-dock?) + (set! (-> self waiting-for-player) #f) + (level-hint-spawn (text-id sidekick-misty) "sksp0060" (the-as entity #f) *entity-pool* (game-task none)) + (when #t + (set! (-> *camera* cam-entity) (the-as entity #t)) + (send-event *camera* 'clear-entity) + (go fishermans-boat-docked-misty))) + (rider-trans)) + :code + (behavior () + (set-continue! *game-info* "misty-start") + (fishermans-boat-set-dock-point 4) + (fishermans-boat-set-path-point 2) + (loop + (suspend))) + :post fishermans-boat-post) (defstate fishermans-boat-player-control (fishermans-boat) - :exit (behavior () - (send-event *camera* 'change-state *camera-base-mode* 0) - (set! (-> self auto-pilot) #t) - ) - :trans (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (nth-point (-> self boat-path) 0 gp-0) - (if (< (vector-vector-xz-distance (-> self root-overlay trans) gp-0) 614400.0) - (go fishermans-boat-entering-village) - ) - (nth-point (-> self boat-path) 4 gp-0) - (if (< (vector-vector-xz-distance (-> self root-overlay trans) gp-0) 409600.0) - (go fishermans-boat-entering-misty) - ) - ) - 0 - ) - :code (behavior () - (send-event (handle->process (-> self cam-tracker)) 'message 'release) - (suspend) - (send-event *camera* 'change-state cam-stick 0) - (loop - (if (and (= *cheat-mode* 'debug) (cpad-pressed? 0 triangle)) - (set! (-> self auto-pilot) #f) - ) + :exit + (behavior () + (send-event *camera* 'change-state *camera-base-mode* 0) + (set! (-> self auto-pilot) #t)) + :trans + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (nth-point (-> self boat-path) 0 gp-0) + (if (< (vector-vector-xz-distance (-> self root-overlay trans) gp-0) 614400.0) (go fishermans-boat-entering-village)) + (nth-point (-> self boat-path) 4 gp-0) + (if (< (vector-vector-xz-distance (-> self root-overlay trans) gp-0) 409600.0) (go fishermans-boat-entering-misty))) + 0) + :code + (behavior () + (send-event (handle->process (-> self cam-tracker)) 'message 'release) (suspend) - ) - ) - :post fishermans-boat-post - ) + (send-event *camera* 'change-state cam-stick 0) + (loop + (if (and (= *cheat-mode* 'debug) (cpad-pressed? 0 triangle)) (set! (-> self auto-pilot) #f)) + (suspend))) + :post fishermans-boat-post) (defbehavior fishermans-boat-set-throttle-by-speed fishermans-boat ((arg0 float)) (let* ((f0-0 (vector-xz-length (-> self rbody lin-velocity))) (f1-2 (/ (- arg0 f0-0) arg0)) - (f30-0 (* 0.005 f1-2)) - ) + (f30-0 (* 0.005 f1-2))) (format *stdcon* "current ~M target ~M throttle ~f~%" f0-0 arg0 (-> self controller throttle)) - (set! (-> self controller throttle) (fmax 0.0 (fmin 1.0 (+ (-> self controller throttle) f30-0)))) - ) + (set! (-> self controller throttle) (fmax 0.0 (fmin 1.0 (+ (-> self controller throttle) f30-0))))) 0 - (none) - ) + (none)) (defstate fishermans-boat-measurements (fishermans-boat) - :exit (behavior () - (set! (-> self measure-parameters) #f) - ) - :trans (behavior () - (if (cpad-pressed? 1 square) - (go fishermans-boat-player-control) - ) - ) - :code (behavior () - (set! (-> self auto-pilot) #f) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 1) - (s4-0 (+ (-> self controller table-length) -1)) - ) - (while (>= s4-0 s5-0) - (let ((f30-0 (* (the float s5-0) (-> self controller table-step)))) - (set! (-> self measure-parameters) #t) - (set! (-> self controller steering) 1.0) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (let ((f0-6 (/ (fabs (- f30-0 (vector-xz-length (-> self rbody lin-velocity)))) f30-0))) - (if (< 0.05 f0-6) - (set-time! (-> self state-time)) - ) - ) - (fishermans-boat-set-throttle-by-speed f30-0) - (suspend) - ) + :exit + (behavior () + (set! (-> self measure-parameters) #f)) + :trans + (behavior () + (if (cpad-pressed? 1 square) (go fishermans-boat-player-control))) + :code + (behavior () + (set! (-> self auto-pilot) #f) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 1) + (s4-0 (+ (-> self controller table-length) -1))) + (while (>= s4-0 s5-0) + (let ((f30-0 (* (the float s5-0) (-> self controller table-step)))) + (set! (-> self measure-parameters) #t) + (set! (-> self controller steering) 1.0) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (let ((f0-6 (/ (fabs (- f30-0 (vector-xz-length (-> self rbody lin-velocity)))) f30-0))) + (if (< 0.05 f0-6) (set-time! (-> self state-time)))) + (fishermans-boat-set-throttle-by-speed f30-0) + (suspend)) + (vector-z-quaternion! gp-0 (-> self root-overlay quat)) + (vehicle-controller-method-10 (-> self controller) gp-0 (-> self controller throttle) s5-0) + (let ((s3-0 (current-time))) + (until (time-elapsed? s3-0 (seconds 1)) + (fishermans-boat-set-throttle-by-speed f30-0) + (suspend) + (suspend)))) (vector-z-quaternion! gp-0 (-> self root-overlay quat)) (vehicle-controller-method-10 (-> self controller) gp-0 (-> self controller throttle) s5-0) - (let ((s3-0 (current-time))) - (until (time-elapsed? s3-0 (seconds 1)) - (fishermans-boat-set-throttle-by-speed f30-0) - (suspend) - (suspend) - ) - ) - ) - (vector-z-quaternion! gp-0 (-> self root-overlay quat)) - (vehicle-controller-method-10 (-> self controller) gp-0 (-> self controller throttle) s5-0) - (+! s5-0 1) - ) - ) - (go fishermans-boat-player-control) - ) - :post fishermans-boat-post - ) + (+! s5-0 1))) + (go fishermans-boat-player-control)) + :post fishermans-boat-post) (defmethod relocate ((this fishermans-boat) (arg0 int)) (relocate (-> this controller) arg0) - (if (nonzero? (-> this propeller)) - (&+! (-> this propeller) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this propeller)) (&+! (-> this propeller) arg0)) + (call-parent-method this arg0)) (defmethod rigid-body-platform-method-30 ((this fishermans-boat)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -1237,16 +960,12 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 61440.0) - (append-prim s4-0 s3-0) - ) - ) + (append-prim s4-0 s3-0))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this fishermans-boat)) (initialize-skeleton this *fishermans-boat-sg* '()) @@ -1264,14 +983,7 @@ (add-point! (-> this boat-path) 49971.2 28672.0 2924544.0 -16384.0) (add-point! (-> this boat-path) 175718.4 122880.0 626688.0 -18204.445) (add-point! (-> this boat-path) 50790.4 40960.0 197427.2 32768.0) - (init! - (-> this controller) - (-> this boat-path) - *boat-turning-radius-table* - *boat-throttle-control-table* - 30 - 4096.0 - ) + (init! (-> this controller) (-> this boat-path) *boat-turning-radius-table* *boat-throttle-control-table* 30 4096.0) (set! (-> this propeller) (new 'process 'joint-mod-spinner this 4 (new 'static 'vector :z -1.0 :w 1.0) 0.0)) (set! (-> this ignition) #f) (set! (-> this anchored) #t) @@ -1280,10 +992,7 @@ (set! (-> this debug-draw) #f) (set! (-> this cam-tracker) (the-as handle #f)) (set! (-> this auto-pilot) #f) - (if (= (-> *game-info* current-continue level) 'misty) - (fishermans-boat-set-dock-point 4) - (fishermans-boat-set-dock-point 0) - ) + (if (= (-> *game-info* current-continue level) 'misty) (fishermans-boat-set-dock-point 4) (fishermans-boat-set-dock-point 0)) (fishermans-boat-set-path-point (-> this dock-point-index)) (fishermans-boat-next-path-point) (set! (-> this root-overlay trans quad) (-> this dock-point quad)) @@ -1294,44 +1003,37 @@ (set! (-> v1-39 0 local-pos x) 0.0) (set! (-> v1-39 0 local-pos y) 0.0) (set! (-> v1-39 0 local-pos z) 24576.0) - (set! (-> v1-39 0 local-pos w) 1.0) - ) + (set! (-> v1-39 0 local-pos w) 1.0)) (let ((v1-41 (-> this control-point-array data 1))) (set! (-> v1-41 local-pos x) 22528.0) (set! (-> v1-41 local-pos y) 0.0) (set! (-> v1-41 local-pos z) -20480.0) - (set! (-> v1-41 local-pos w) 1.0) - ) + (set! (-> v1-41 local-pos w) 1.0)) (let ((v1-43 (-> this control-point-array data 2))) (set! (-> v1-43 local-pos x) -22528.0) (set! (-> v1-43 local-pos y) 0.0) (set! (-> v1-43 local-pos z) -20480.0) - (set! (-> v1-43 local-pos w) 1.0) - ) + (set! (-> v1-43 local-pos w) 1.0)) (let ((v1-45 (-> this control-point-array data 3))) (set! (-> v1-45 local-pos x) 0.0) (set! (-> v1-45 local-pos y) 0.0) (set! (-> v1-45 local-pos z) 49152.0) - (set! (-> v1-45 local-pos w) 1.0) - ) + (set! (-> v1-45 local-pos w) 1.0)) (let ((v1-47 (-> this control-point-array data 4))) (set! (-> v1-47 local-pos x) 22528.0) (set! (-> v1-47 local-pos y) 0.0) (set! (-> v1-47 local-pos z) 12288.0) - (set! (-> v1-47 local-pos w) 1.0) - ) + (set! (-> v1-47 local-pos w) 1.0)) (let ((v1-49 (-> this control-point-array data 5))) (set! (-> v1-49 local-pos x) -22528.0) (set! (-> v1-49 local-pos y) 0.0) (set! (-> v1-49 local-pos z) 12288.0) - (set! (-> v1-49 local-pos w) 1.0) - ) + (set! (-> v1-49 local-pos w) 1.0)) (let ((v1-50 (-> this stabilizer-array))) (set! (-> v1-50 0 local-pos x) 16384.0) (set! (-> v1-50 0 local-pos y) 20480.0) (set! (-> v1-50 0 local-pos z) -32768.0) - (set! (-> v1-50 0 local-pos w) 1.0) - ) + (set! (-> v1-50 0 local-pos w) 1.0)) (set-vector! (-> this stabilizer-array 1 local-pos) -16384.0 20480.0 -32768.0 1.0) (set-vector! (-> this stabilizer-array 0 normal) 0.0 0.75 0.2 1.0) (set-vector! (-> this stabilizer-array 1 normal) 0.0 0.75 0.2 1.0) @@ -1345,17 +1047,9 @@ (set! (-> this draw origin-joint-index) (the-as uint 3)) (let ((a0-29 (-> this entity))) (if (when a0-29 - (let ((a0-30 (-> a0-29 extra perm task))) - (if a0-30 - (= a0-30 (game-task none)) - ) - ) - ) - (set! (-> this entity extra perm task) (game-task complete)) - ) - ) - (none) - ) + (let ((a0-30 (-> a0-29 extra perm task))) (if a0-30 (= a0-30 (game-task none))))) + (set! (-> this entity extra perm task) (game-task complete)))) + (none)) (defmethod init-from-entity! ((this fishermans-boat) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -1363,197 +1057,145 @@ (rigid-body-platform-method-30 this) (process-drawable-from-entity! this arg0) (rigid-body-platform-method-31 this) - (if (= (-> *game-info* current-continue level) 'misty) - (go fishermans-boat-docked-misty) - (go fishermans-boat-docked-village) - ) - (none) - ) + (if (= (-> *game-info* current-continue level) 'misty) (go fishermans-boat-docked-misty) (go fishermans-boat-docked-village)) + (none)) (defbehavior fishermans-boat-reset-physics fishermans-boat () - (rigid-body-method-22 - (-> self rbody) - (-> self root-overlay trans) - (-> self root-overlay quat) - (-> self info linear-damping) - (-> self info angular-damping) - ) + (rigid-body-method-22 (-> self rbody) + (-> self root-overlay trans) + (-> self root-overlay quat) + (-> self info linear-damping) + (-> self info angular-damping)) (vector-reset! (-> self player-force)) (set! (-> self player-impulse) #f) (set! (-> self player-contact) #f) 0 - (none) - ) + (none)) (defstate fishermans-boat-ride-to-misty (fishermans-boat) - :code (behavior () - (set! (-> self propeller enable) #f) - (quaternion-identity! (-> self root-overlay quat)) - (set! (-> self root-overlay trans quad) (-> self entity extra trans quad)) - (set! (-> self player-riding) #f) - (set! (-> self auto-pilot) #f) - (when (send-event *target* 'clone-anim self) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (let ((v1-20 (process-spawn othercam self 5 #f #t :to self))) - (send-event (ppointer->process v1-20) 'mask 2048) - ) - (set! (-> self draw force-lod) 0) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim fishermans-boat-idle-ja) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (set! (-> self draw force-lod) -1) - (send-event *target* 'blend-shape #f) - (ja-channel-set! 1) - (ja :group! fishermans-boat-idle-ja) - (vector<-cspace! (-> self root-overlay trans) (joint-node fishermans-boat-lod0-jg main)) - (matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform)) - (fishermans-boat-reset-physics) - (transform-post) - (when *target* - (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (send-event *target* 'end-mode) - (update-transforms! (-> self root-overlay)) - (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) - (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) - (suspend) - (send-event *camera* 'teleport-to-other-start-string) - ) - (set-continue! *game-info* "misty-start") - ) - (set! (-> self waiting-for-player) #t) - (set! (-> self ignition) #f) - (set! (-> self anchored) #t) - (set! (-> self propeller enable) #t) - (fishermans-boat-play-sounds) - (apply-settings *setting-control*) - (process-spawn-function - process - (lambda :behavior fishermans-boat - () - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 1)) - (suspend) - ) - ) - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current hint) - (-> *setting-control* current movie) - ) + :code + (behavior () + (set! (-> self propeller enable) #f) + (quaternion-identity! (-> self root-overlay quat)) + (set! (-> self root-overlay trans quad) (-> self entity extra trans quad)) + (set! (-> self player-riding) #f) + (set! (-> self auto-pilot) #f) + (when (send-event *target* 'clone-anim self) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (let ((v1-20 (process-spawn othercam self 5 #f #t :to self))) (send-event (ppointer->process v1-20) 'mask 2048)) + (set! (-> self draw force-lod) 0) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim fishermans-boat-idle-ja) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (set! (-> self draw force-lod) -1) + (send-event *target* 'blend-shape #f) + (ja-channel-set! 1) + (ja :group! fishermans-boat-idle-ja) + (vector<-cspace! (-> self root-overlay trans) (joint-node fishermans-boat-lod0-jg main)) + (matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform)) + (fishermans-boat-reset-physics) + (transform-post) + (when *target* + (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (send-event *target* 'end-mode) + (update-transforms! (-> self root-overlay)) + (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) + (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) (suspend) - ) - (suspend) - (level-hint-spawn (text-id sidekick-misty) "sksp0060" (the-as entity #f) *entity-pool* (game-task none)) - (none) - ) - :to self - ) - (go fishermans-boat-docked-misty) - ) - :post (behavior () - (ja-post) - (fishermans-boat-spawn-particles 81920.0) - (fishermans-boat-play-sounds) - ) - ) + (send-event *camera* 'teleport-to-other-start-string)) + (set-continue! *game-info* "misty-start")) + (set! (-> self waiting-for-player) #t) + (set! (-> self ignition) #f) + (set! (-> self anchored) #t) + (set! (-> self propeller enable) #t) + (fishermans-boat-play-sounds) + (apply-settings *setting-control*) + (process-spawn-function process + (lambda :behavior fishermans-boat () + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 1)) (suspend))) + (while (or (-> *setting-control* current ambient) (-> *setting-control* current hint) (-> *setting-control* current movie)) + (suspend)) + (suspend) + (level-hint-spawn (text-id sidekick-misty) "sksp0060" (the-as entity #f) *entity-pool* (game-task none)) + (none)) + :to + self) + (go fishermans-boat-docked-misty)) + :post + (behavior () + (ja-post) + (fishermans-boat-spawn-particles 81920.0) + (fishermans-boat-play-sounds))) (defstate fishermans-boat-ride-to-village1 (fishermans-boat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('evilbro) - (when (= (level-status *level* 'intro) 'active) - (let ((gp-1 (entity-by-name "evilbro-2"))) - (when gp-1 - (set! (-> self evilbro) - (ppointer->handle (manipy-spawn (-> self root-overlay trans) gp-1 *fb-evilbro-sg* #f :to self)) - ) - (send-event (handle->process (-> self evilbro)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self evilbro)) 'blend-shape #t) - (send-event (handle->process (-> self evilbro)) 'center-joint 3) - ) - ) - (let ((gp-2 (entity-by-name "evilsis-2"))) - (when gp-2 - (set! (-> self evilsis) - (ppointer->handle (manipy-spawn (-> self root-overlay trans) gp-2 *fb-evilsis-sg* #f :to self)) - ) - (send-event (handle->process (-> self evilsis)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self evilsis)) 'blend-shape #t) - (send-event (handle->process (-> self evilsis)) 'center-joint 3) - ) - ) - ) - ) - (('evilsis) - (let ((a0-44 (handle->process (-> self evilbro)))) - (if a0-44 - (deactivate a0-44) - ) - ) - (let ((a0-48 (handle->process (-> self evilsis)))) - (if a0-48 - (deactivate a0-48) - ) - ) - ) - ) - ) - :code (behavior () - (set! (-> self propeller enable) #f) - (set! (-> self evilbro) (the-as handle #f)) - (set! (-> self evilsis) (the-as handle #f)) - (quaternion-identity! (-> self root-overlay quat)) - (set! (-> self root-overlay trans quad) (-> self entity extra trans quad)) - (set! (-> self player-riding) #f) - (set! (-> self auto-pilot) #f) - (when (send-event *target* 'clone-anim self) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (let ((v1-20 (process-spawn othercam self 5 #f #t :to self))) - (send-event (ppointer->process v1-20) 'mask 2048) - ) - (set! (-> self draw force-lod) 0) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim fishermans-boat-idle-ja) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (set! (-> self draw force-lod) -1) - (send-event *target* 'blend-shape #f) - (ja-channel-set! 1) - (ja :group! fishermans-boat-idle-ja) - (vector<-cspace! (-> self root-overlay trans) (joint-node fishermans-boat-lod0-jg main)) - (matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform)) - (fishermans-boat-reset-physics) - (transform-post) - (when *target* - (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (send-event *target* 'end-mode) - (update-transforms! (-> self root-overlay)) - (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) - (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) - (suspend) - (send-event *camera* 'teleport-to-other-start-string) - ) - (set-continue! *game-info* "village1-hut") - ) - (set! (-> self waiting-for-player) #t) - (set! (-> self ignition) #f) - (set! (-> self anchored) #t) - (set! (-> self propeller enable) #t) - (fishermans-boat-play-sounds) - (process-entity-status! self (entity-perm-status complete) #t) - (go fishermans-boat-docked-village) - ) - :post (behavior () - (ja-post) - (fishermans-boat-spawn-particles 81920.0) - (fishermans-boat-play-sounds) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('evilbro) + (when (= (level-status *level* 'intro) 'active) + (let ((gp-1 (entity-by-name "evilbro-2"))) + (when gp-1 + (set! (-> self evilbro) (ppointer->handle (manipy-spawn (-> self root-overlay trans) gp-1 *fb-evilbro-sg* #f :to self))) + (send-event (handle->process (-> self evilbro)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self evilbro)) 'blend-shape #t) + (send-event (handle->process (-> self evilbro)) 'center-joint 3))) + (let ((gp-2 (entity-by-name "evilsis-2"))) + (when gp-2 + (set! (-> self evilsis) (ppointer->handle (manipy-spawn (-> self root-overlay trans) gp-2 *fb-evilsis-sg* #f :to self))) + (send-event (handle->process (-> self evilsis)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self evilsis)) 'blend-shape #t) + (send-event (handle->process (-> self evilsis)) 'center-joint 3))))) + (('evilsis) + (let ((a0-44 (handle->process (-> self evilbro)))) (if a0-44 (deactivate a0-44))) + (let ((a0-48 (handle->process (-> self evilsis)))) (if a0-48 (deactivate a0-48)))))) + :code + (behavior () + (set! (-> self propeller enable) #f) + (set! (-> self evilbro) (the-as handle #f)) + (set! (-> self evilsis) (the-as handle #f)) + (quaternion-identity! (-> self root-overlay quat)) + (set! (-> self root-overlay trans quad) (-> self entity extra trans quad)) + (set! (-> self player-riding) #f) + (set! (-> self auto-pilot) #f) + (when (send-event *target* 'clone-anim self) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (let ((v1-20 (process-spawn othercam self 5 #f #t :to self))) (send-event (ppointer->process v1-20) 'mask 2048)) + (set! (-> self draw force-lod) 0) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim fishermans-boat-idle-ja) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (set! (-> self draw force-lod) -1) + (send-event *target* 'blend-shape #f) + (ja-channel-set! 1) + (ja :group! fishermans-boat-idle-ja) + (vector<-cspace! (-> self root-overlay trans) (joint-node fishermans-boat-lod0-jg main)) + (matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform)) + (fishermans-boat-reset-physics) + (transform-post) + (when *target* + (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (send-event *target* 'end-mode) + (update-transforms! (-> self root-overlay)) + (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) + (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) + (suspend) + (send-event *camera* 'teleport-to-other-start-string)) + (set-continue! *game-info* "village1-hut")) + (set! (-> self waiting-for-player) #t) + (set! (-> self ignition) #f) + (set! (-> self anchored) #t) + (set! (-> self propeller enable) #t) + (fishermans-boat-play-sounds) + (process-entity-status! self (entity-perm-status complete) #t) + (go fishermans-boat-docked-village)) + :post + (behavior () + (ja-post) + (fishermans-boat-spawn-particles 81920.0) + (fishermans-boat-play-sounds))) diff --git a/goal_src/jak1/levels/village1/sage.gc b/goal_src/jak1/levels/village1/sage.gc index 0912c661ec..7ea99db627 100644 --- a/goal_src/jak1/levels/village1/sage.gc +++ b/goal_src/jak1/levels/village1/sage.gc @@ -1,49 +1,41 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "levels/village1/assistant.gc") -;; name: sage.gc -;; name in dgo: sage -;; dgos: L1, VI1 - ;; DECOMP BEGINS (deftype sage (process-taskable) - ((reminder-played basic) - (assistant handle) - ) - ) - + ((reminder-played basic) + (assistant handle))) -(defskelgroup *sage-sg* sage sage-lod0-jg sage-idle-ecorocks-breathe-ja - ((sage-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow sage-shadow-mg - ) +(defskelgroup *sage-sg* + sage + sage-lod0-jg + sage-idle-ecorocks-breathe-ja + ((sage-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow sage-shadow-mg) (defmethod play-anim! ((this sage) (arg0 symbol)) (when (!= *kernel-boot-message* 'play) (close-specific-task! (game-task intro) (task-status need-resolution)) - (return (new 'static 'spool-anim - :name "sage-introduction-misty-cannon" - :index 8 - :parts 12 - :command-list '((1 blackout 0) - (100 want-levels village1 misty) - (261 joint "cameraB") - (521 joint "camera") - (776 joint "cameraB") - (810 joint "camera") - (1171 joint "cameraB") - (1235 joint "camera") - (1235 save) - (1418 blackout 30) - ) - ) - ) - ) + (return (new 'static + 'spool-anim + :name "sage-introduction-misty-cannon" + :index 8 + :parts 12 + :command-list + '((1 blackout 0) + (100 want-levels village1 misty) + (261 joint "cameraB") + (521 joint "camera") + (776 joint "cameraB") + (810 joint "camera") + (1171 joint "cameraB") + (1235 joint "camera") + (1235 save) + (1418 blackout 30))))) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) (case (current-task (-> this tasks)) @@ -51,489 +43,368 @@ (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) (set-setting! 'music-volume-movie 'abs 0.0 0) - (apply-settings *setting-control*) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-d1" - :index 16 - :parts 17 - :command-list '((0 display-level misty #f) - (0 display-level village1 display) - (0 want-vis vi1) - (0 save) - (0 want-force-inside village1 #t) - (0 want-force-vis village1 #t) - (0 kill "assistant-11") - (0 kill "reflector-middle-2") - (0 kill "eco-11") - (0 kill "eco-10") - (0 kill "sharkey-12") - (0 kill "reflector-end-1") - (0 kill "water-vol-10") - (0 kill "water-vol-8") - (0 kill "water-vol-7") - (0 kill "fishermans-boat-2") - (0 kill "revcycleprop-2") - (0 kill "revcycle-8") - (0 kill "ropebridge-5") - (0 kill "ropebridge-4") - (0 kill "villagea-water-2") - (0 time-of-day 7) - (1 time-of-day -1) - (3 blackout 0) - (25 blackout 0) - (25 want-force-vis village1 #f) - (56 joint "cameraB") - (100 want-force-inside village1 #f) - (107 joint "camera") - (137 joint "cameraB") - (202 joint "camera") - (286 joint "cameraB") - (554 joint "camera") - (633 joint "cameraB") - (711 joint "camera") - (796 joint "cameraB") - (921 joint "camera") - (1021 shadow self #f) - (1021 joint "cameraB") - (1081 joint "camera") - (1183 joint "cameraB") - (1221 joint "camera") - (1496 shadow self #t) - (1496 joint "cameraB") - (1496 time-of-day 18) - (1721 joint "camera") - (1721 time-of-day 7) - (1722 time-of-day -1) - ) - ) - ) + (apply-settings *setting-control*)) + (new 'static + 'spool-anim + :name "sage-intro-sequence-d1" + :index 16 + :parts 17 + :command-list + '((0 display-level misty #f) + (0 display-level village1 display) + (0 want-vis vi1) + (0 save) + (0 want-force-inside village1 #t) + (0 want-force-vis village1 #t) + (0 kill "assistant-11") + (0 kill "reflector-middle-2") + (0 kill "eco-11") + (0 kill "eco-10") + (0 kill "sharkey-12") + (0 kill "reflector-end-1") + (0 kill "water-vol-10") + (0 kill "water-vol-8") + (0 kill "water-vol-7") + (0 kill "fishermans-boat-2") + (0 kill "revcycleprop-2") + (0 kill "revcycle-8") + (0 kill "ropebridge-5") + (0 kill "ropebridge-4") + (0 kill "villagea-water-2") + (0 time-of-day 7) + (1 time-of-day -1) + (3 blackout 0) + (25 blackout 0) + (25 want-force-vis village1 #f) + (56 joint "cameraB") + (100 want-force-inside village1 #f) + (107 joint "camera") + (137 joint "cameraB") + (202 joint "camera") + (286 joint "cameraB") + (554 joint "camera") + (633 joint "cameraB") + (711 joint "camera") + (796 joint "cameraB") + (921 joint "camera") + (1021 shadow self #f) + (1021 joint "cameraB") + (1081 joint "camera") + (1183 joint "cameraB") + (1221 joint "camera") + (1496 shadow self #t) + (1496 joint "cameraB") + (1496 time-of-day 18) + (1721 joint "camera") + (1721 time-of-day 7) + (1722 time-of-day -1)))) (((game-task beach-ecorocks)) (when arg0 (let* ((s5-1 (-> this tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - ) - (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-e" - :index 14 - :parts 13 - :command-list '((0 want-levels village1 beach) - (0 blackout 0) - (197 joint "cameraB") - (361 joint "camera") - (660 joint "cameraB") - (937 display-level beach movie) - (937 want-force-vis beach #t) - (938 alive "ecoventrock-3") - (938 alive "ecoventrock-4") - (938 alive "ecoventrock-5") - (938 alive "ecoventrock-6") - (938 alive "ecoventrock-7") - (938 alive "harvester-87") - (938 alive "harvester-88") - (938 alive "harvester-89") - (938 alive "harvester-90") - (938 alive "harvester-91") - (940 joint "camera") - (1160 joint "cameraB") - (1162 dead "ecoventrock-3") - (1162 dead "ecoventrock-4") - (1162 dead "ecoventrock-5") - (1162 dead "ecoventrock-6") - (1162 dead "ecoventrock-7") - (1162 dead "harvester-87") - (1162 dead "harvester-88") - (1162 dead "harvester-89") - (1162 dead "harvester-90") - (1162 dead "harvester-91") - (1310 joint "camera") - (1313 want-force-vis beach #f) - (1313 display-level beach #f) - (1313 send-event "warp-gate-switch-3" 'hide) - ) - ) - ) + (s4-0 (method-of-object s5-1 save-reminder))) + (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-intro-sequence-e" + :index 14 + :parts 13 + :command-list + '((0 want-levels village1 beach) + (0 blackout 0) + (197 joint "cameraB") + (361 joint "camera") + (660 joint "cameraB") + (937 display-level beach movie) + (937 want-force-vis beach #t) + (938 alive "ecoventrock-3") + (938 alive "ecoventrock-4") + (938 alive "ecoventrock-5") + (938 alive "ecoventrock-6") + (938 alive "ecoventrock-7") + (938 alive "harvester-87") + (938 alive "harvester-88") + (938 alive "harvester-89") + (938 alive "harvester-90") + (938 alive "harvester-91") + (940 joint "camera") + (1160 joint "cameraB") + (1162 dead "ecoventrock-3") + (1162 dead "ecoventrock-4") + (1162 dead "ecoventrock-5") + (1162 dead "ecoventrock-6") + (1162 dead "ecoventrock-7") + (1162 dead "harvester-87") + (1162 dead "harvester-88") + (1162 dead "harvester-89") + (1162 dead "harvester-90") + (1162 dead "harvester-91") + (1310 joint "camera") + (1313 want-force-vis beach #f) + (1313 display-level beach #f) + (1313 send-event "warp-gate-switch-3" 'hide)))) (else - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-introduction-misty-cannon" - :index 8 - :parts 12 - :command-list '((0 want-levels village1 beach) - (261 joint "cameraB") - (521 joint "camera") - (776 joint "cameraB") - (810 joint "camera") - (1171 joint "cameraB") - (1235 joint "camera") - ) - ) - ) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-introduction-misty-cannon" + :index 8 + :parts 12 + :command-list + '((0 want-levels village1 beach) + (261 joint "cameraB") + (521 joint "camera") + (776 joint "cameraB") + (810 joint "camera") + (1171 joint "cameraB") + (1235 joint "camera")))))) (((task-status need-reminder)) (set! (-> this skippable) #t) - (if arg0 - (set! (-> this reminder-played) #t) - ) + (if arg0 (set! (-> this reminder-played) #t)) (case (get-reminder (-> this tasks) 0) - ((3) - (new 'static 'spool-anim :name "sage-reminder-2-generic" :index 13 :parts 4 :command-list '()) - ) - ((2) - (new 'static 'spool-anim :name "sage-reminder-1-generic" :index 12 :parts 3 :command-list '()) - ) + ((3) (new 'static 'spool-anim :name "sage-reminder-2-generic" :index 13 :parts 4 :command-list '())) + ((2) (new 'static 'spool-anim :name "sage-reminder-1-generic" :index 12 :parts 3 :command-list '())) ((1) - (new 'static 'spool-anim - :name "sage-reminder-1-misty-cannon" - :index 9 - :parts 5 - :command-list '((86 joint "cameraB") (320 joint "camera")) - ) - ) + (new 'static + 'spool-anim + :name "sage-reminder-1-misty-cannon" + :index 9 + :parts 5 + :command-list + '((86 joint "cameraB") (320 joint "camera")))) (else - (new 'static 'spool-anim - :name "sage-reminder-1-ecorocks" - :index 11 - :parts 4 - :command-list '((0 want-levels village1 beach) - (245 display-level beach movie) - (245 want-force-vis beach #t) - (246 alive "ecoventrock-3") - (246 alive "ecoventrock-4") - (246 alive "ecoventrock-5") - (246 alive "ecoventrock-6") - (246 alive "ecoventrock-7") - (246 alive "harvester-87") - (246 alive "harvester-88") - (246 alive "harvester-89") - (246 alive "harvester-90") - (246 alive "harvester-91") - (246 joint "cameraB") - (365 want-force-vis beach #f) - (365 display-level beach #f) - (366 joint "camera") - ) - ) - ) - ) - ) + (new 'static + 'spool-anim + :name "sage-reminder-1-ecorocks" + :index 11 + :parts 4 + :command-list + '((0 want-levels village1 beach) + (245 display-level beach movie) + (245 want-force-vis beach #t) + (246 alive "ecoventrock-3") + (246 alive "ecoventrock-4") + (246 alive "ecoventrock-5") + (246 alive "ecoventrock-6") + (246 alive "ecoventrock-7") + (246 alive "harvester-87") + (246 alive "harvester-88") + (246 alive "harvester-89") + (246 alive "harvester-90") + (246 alive "harvester-91") + (246 joint "cameraB") + (365 want-force-vis beach #f) + (365 display-level beach #f) + (366 joint "camera")))))) (((task-status need-reward-speech)) (when arg0 (set-setting! 'music-volume-movie 'abs 0.0 0) (apply-settings *setting-control*) (close-status! (-> this tasks) (task-status need-reward-speech)) (set! (-> this assistant) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *assistant-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *assistant-sg* #f :to this))) (send-event (handle->process (-> this assistant)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this assistant)) 'blend-shape #t) (send-event (handle->process (-> this assistant)) 'center-joint 3) (let ((v1-68 (handle->process (-> this assistant)))) - (if v1-68 - (set! (-> (the-as assistant v1-68) draw light-index) (the-as uint 1)) - ) - ) - (set! (-> this draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-d2" - :index 15 - :parts 20 - :command-list '((0 want-levels village1 beach) - (0 kill "assistant-11") - (0 kill "reflector-middle-2") - (0 kill "eco-11") - (0 kill "eco-10") - (0 kill "sharkey-12") - (0 kill "reflector-end-1") - (0 kill "water-vol-10") - (0 kill "water-vol-8") - (0 kill "water-vol-7") - (0 kill "fishermans-boat-2") - (0 kill "revcycleprop-2") - (0 kill "revcycle-8") - (113 joint "cameraB") - (232 joint "camera") - (289 joint "cameraB") - (338 joint "camera") - (405 joint "cameraB") - (560 joint "camera") - (660 joint "cameraB") - (699 joint "camera") - (837 joint "cameraB") - (837 shadow self #f) - (910 joint "camera") - (945 alive "farmer-3") - (945 alive "hutlamp-2") - (950 joint "cameraB") - (974 display-level beach movie) - (974 want-force-vis beach #t) - (1011 alive "bird-lady-4") - (1015 joint "camera") - (1018 dead "farmer-3") - (1018 dead "hutlamp-2") - (1075 alive "explorer-4") - (1080 joint "cameraB") - (1080 want-force-vis beach #f) - (1080 display-level beach #f) - (1082 dead "bird-lady-4") - (1133 joint "camera") - (1135 dead "explorer-4") - (1244 display-level beach movie) - (1244 want-force-vis beach #t) - (1245 alive "fuel-cell-42") - (1246 joint "cameraB") - (1369 joint "camera") - (1438 alive "fuel-cell-42") - (1438 want-force-vis beach #f) - (1438 dead "fuel-cell-42") - (1438 kill "villagea-water-2") - (1438 kill "crate-3147") - (1438 kill "crate-3146") - (1438 kill "crate-3143") - (1438 kill "sagesail-6") - (1438 kill "windmill-sail-4") - (1438 kill "ropebridge-4") - (1438 kill "ropebridge-5") - (1438 kill "windspinner-8") - (1438 kill "windspinner-9") - (1438 joint "cameraB") - (1439 want-levels village1 training) - (1439 save) - (1529 joint "camera") - (1691 joint "cameraB") - (1753 joint "camera") - (1874 joint "cameraB") - (2057 joint "camera") - (2176 joint "cameraB") - (2226 joint "camera") - (2226 shadow self #t) - ) - ) - ) + (if v1-68 (set! (-> (the-as assistant v1-68) draw light-index) (the-as uint 1)))) + (set! (-> this draw bounds w) 40960.0)) + (new 'static + 'spool-anim + :name "sage-intro-sequence-d2" + :index 15 + :parts 20 + :command-list + '((0 want-levels village1 beach) + (0 kill "assistant-11") + (0 kill "reflector-middle-2") + (0 kill "eco-11") + (0 kill "eco-10") + (0 kill "sharkey-12") + (0 kill "reflector-end-1") + (0 kill "water-vol-10") + (0 kill "water-vol-8") + (0 kill "water-vol-7") + (0 kill "fishermans-boat-2") + (0 kill "revcycleprop-2") + (0 kill "revcycle-8") + (113 joint "cameraB") + (232 joint "camera") + (289 joint "cameraB") + (338 joint "camera") + (405 joint "cameraB") + (560 joint "camera") + (660 joint "cameraB") + (699 joint "camera") + (837 joint "cameraB") + (837 shadow self #f) + (910 joint "camera") + (945 alive "farmer-3") + (945 alive "hutlamp-2") + (950 joint "cameraB") + (974 display-level beach movie) + (974 want-force-vis beach #t) + (1011 alive "bird-lady-4") + (1015 joint "camera") + (1018 dead "farmer-3") + (1018 dead "hutlamp-2") + (1075 alive "explorer-4") + (1080 joint "cameraB") + (1080 want-force-vis beach #f) + (1080 display-level beach #f) + (1082 dead "bird-lady-4") + (1133 joint "camera") + (1135 dead "explorer-4") + (1244 display-level beach movie) + (1244 want-force-vis beach #t) + (1245 alive "fuel-cell-42") + (1246 joint "cameraB") + (1369 joint "camera") + (1438 alive "fuel-cell-42") + (1438 want-force-vis beach #f) + (1438 dead "fuel-cell-42") + (1438 kill "villagea-water-2") + (1438 kill "crate-3147") + (1438 kill "crate-3146") + (1438 kill "crate-3143") + (1438 kill "sagesail-6") + (1438 kill "windmill-sail-4") + (1438 kill "ropebridge-4") + (1438 kill "ropebridge-5") + (1438 kill "windspinner-8") + (1438 kill "windspinner-9") + (1438 joint "cameraB") + (1439 want-levels village1 training) + (1439 save) + (1529 joint "camera") + (1691 joint "cameraB") + (1753 joint "camera") + (1874 joint "cameraB") + (2057 joint "camera") + (2176 joint "cameraB") + (2226 joint "camera") + (2226 shadow self #t)))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod process-taskable-method-45 ((this sage)) (cond ((and (closed? (-> this tasks) (game-task beach-ecorocks) (task-status need-reminder)) - (= (get-reminder (-> this tasks) 0) 0) - ) - #t - ) + (= (get-reminder (-> this tasks) 0) 0)) + #t) ((and (closed? (-> this tasks) (game-task misty-cannon) (task-status need-reminder)) - (= (get-reminder (-> this tasks) 0) 1) - ) - #t - ) - ((and (-> this reminder-played) (< 81920.0 (vector-vector-distance (-> this root trans) (camera-pos)))) - #t - ) - (else - #f - ) - ) - ) + (= (get-reminder (-> this tasks) 0) 1)) + #t) + ((and (-> this reminder-played) (< 81920.0 (vector-vector-distance (-> this root trans) (camera-pos)))) #t) + (else #f))) (defmethod get-art-elem ((this sage)) (cond ((and (= (current-task (-> this tasks)) (game-task beach-ecorocks)) (or (= (current-status (-> this tasks)) (task-status need-hint)) - (= (current-status (-> this tasks)) (task-status need-introduction)) - ) - ) - (save-reminder (-> this tasks) 0 0) - ) + (= (current-status (-> this tasks)) (task-status need-introduction)))) + (save-reminder (-> this tasks) 0 0)) ((and (= (current-task (-> this tasks)) (game-task misty-cannon)) (or (= (current-status (-> this tasks)) (task-status need-hint)) - (= (current-status (-> this tasks)) (task-status need-introduction)) - ) - ) - (save-reminder (-> this tasks) 1 0) - ) + (= (current-status (-> this tasks)) (task-status need-introduction)))) + (save-reminder (-> this tasks) 1 0)) ((process-taskable-method-45 this) (set! (-> this reminder-played) #f) (cond ((= (current-task (-> this tasks)) (game-task none)) (case (get-reminder (-> this tasks) 0) - ((2) - (save-reminder (-> this tasks) 3 0) - ) - (else - (save-reminder (-> this tasks) 2 0) - ) - ) - ) - ((closed? (-> this tasks) (game-task beach-ecorocks) (task-status need-reminder)) - (save-reminder (-> this tasks) 1 0) - ) + ((2) (save-reminder (-> this tasks) 3 0)) + (else (save-reminder (-> this tasks) 2 0)))) + ((closed? (-> this tasks) (game-task beach-ecorocks) (task-status need-reminder)) (save-reminder (-> this tasks) 1 0)) ((or (closed? (-> this tasks) (game-task misty-cannon) (task-status need-reminder)) - (not (closed? (-> this tasks) (game-task misty-cannon) (task-status need-introduction))) - ) - (save-reminder (-> this tasks) 0 0) - ) - ((zero? (get-reminder (-> this tasks) 0)) - (save-reminder (-> this tasks) 1 0) - ) - (else - (save-reminder (-> this tasks) 0 0) - ) - ) - ) - ) + (not (closed? (-> this tasks) (game-task misty-cannon) (task-status need-introduction)))) + (save-reminder (-> this tasks) 0 0)) + ((zero? (get-reminder (-> this tasks) 0)) (save-reminder (-> this tasks) 1 0)) + (else (save-reminder (-> this tasks) 0 0))))) (case (get-reminder (-> this tasks) 0) - ((3) - (-> this draw art-group data 7) - ) - ((2) - (-> this draw art-group data 6) - ) - ((1) - (-> this draw art-group data 3) - ) - (else - (-> this draw art-group data 4) - ) - ) - ) + ((3) (-> this draw art-group data 7)) + ((2) (-> this draw art-group data 6)) + ((1) (-> this draw art-group data 3)) + (else (-> this draw art-group data 4)))) (defmethod process-taskable-method-43 ((this sage)) - (let ((s5-0 (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this)) - ) + (let ((s5-0 (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this))) (when s5-0 (let ((f0-2 (rand-float-gen))) (cond - ((< (-> s5-0 y) -12288.0) - #f - ) - ((< 0.8 f0-2) - (play-ambient (-> this ambient) "SAGELP03" #f (-> this root trans)) - ) - ((< 0.6 f0-2) - (play-ambient (-> this ambient) "SAGELP04" #f (-> this root trans)) - ) - ((< 0.4 f0-2) - (play-ambient (-> this ambient) "SAGELP05" #f (-> this root trans)) - ) - ((< 0.2 f0-2) - (play-ambient (-> this ambient) "SAGELP06" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "SAGELP11" #f (-> this root trans)) - ) - ) - ) - ) - ) - ) + ((< (-> s5-0 y) -12288.0) #f) + ((< 0.8 f0-2) (play-ambient (-> this ambient) "SAGELP03" #f (-> this root trans))) + ((< 0.6 f0-2) (play-ambient (-> this ambient) "SAGELP04" #f (-> this root trans))) + ((< 0.4 f0-2) (play-ambient (-> this ambient) "SAGELP05" #f (-> this root trans))) + ((< 0.2 f0-2) (play-ambient (-> this ambient) "SAGELP06" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "SAGELP11" #f (-> this root trans)))))))) (defstate idle (sage) :virtual #t - :trans (behavior () - (case (get-task-status (game-task intro)) - (((task-status need-reward-speech)) - (if (process-grab? *target*) - (send-event self 'play-anim) - ) - ) - ) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (ja :group! (get-art-elem self)) - (let* ((f30-0 3.0) - (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-10 (the-as number (logior #x3f800000 v1-9))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) - (process-taskable-method-43 self) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + :trans + (behavior () + (case (get-task-status (game-task intro)) + (((task-status need-reward-speech)) (if (process-grab? *target*) (send-event self 'play-anim)))) + ((-> (method-of-type process-taskable idle) trans))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.2))) + (loop + (ja :group! (get-art-elem self)) + (let* ((f30-0 3.0) + (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-10 (the-as number (logior #x3f800000 v1-9)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) + (process-taskable-method-43 self) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (and (-> self reminder-played) (< 81920.0 (vector-vector-distance (-> self root trans) (camera-pos)))) + (go-virtual idle)) + (suspend) + (ja :num! (seek!))))) + (when (ja-group? sage-idle-ecorocks-breathe-ja) + (ja-no-eval :group! sage-idle-ecorocks-peer-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (if (and (-> self reminder-played) (< 81920.0 (vector-vector-distance (-> self root trans) (camera-pos)))) - (go-virtual idle) - ) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (when (ja-group? sage-idle-ecorocks-breathe-ja) - (ja-no-eval :group! sage-idle-ecorocks-peer-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) + (ja :num! (seek!))))))) (defstate play-anim (sage) :virtual #t - :exit (behavior () - (set! (-> self draw bounds w) 10240.0) - (let ((a0-1 (handle->process (-> self assistant)))) - (if a0-1 - (deactivate a0-1) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ;; og:preserve-this - (#when PC_PORT - ;; extra stuff when skipping cutscene - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1))) - (= (current-task (-> self tasks)) (game-task intro))) + :exit + (behavior () + (set! (-> self draw bounds w) 10240.0) + (let ((a0-1 (handle->process (-> self assistant)))) (if a0-1 (deactivate a0-1))) + ((-> (method-of-type process-taskable play-anim) exit)) + ;; og:preserve-this + (#when PC_PORT + ;; extra stuff when skipping cutscene + (when (and (= (get-response (-> self query)) 'no) + (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1))) + (= (current-task (-> self tasks)) (game-task intro))) (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) (set! (-> *time-of-day-proc* 0 hour) 7) - (return #f) - ) - ) - (case (get-task-status (game-task intro)) - (((task-status need-resolution)) - (remove-setting! 'music-volume-movie) - (close-specific-task! (game-task intro) (task-status need-resolution)) - (start 'play (get-continue-by-name *game-info* "game-start")) - ) - ) - ) - :trans (behavior () - (case (get-task-status (game-task intro)) - (((task-status need-reward-speech)) - (spool-push *art-control* "sage-intro-sequence-d2" 0 self -1.0) - ) - ) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (return #f))) + (case (get-task-status (game-task intro)) + (((task-status need-resolution)) + (remove-setting! 'music-volume-movie) + (close-specific-task! (game-task intro) (task-status need-resolution)) + (start 'play (get-continue-by-name *game-info* "game-start"))))) + :trans + (behavior () + (case (get-task-status (game-task intro)) + (((task-status need-reward-speech)) (spool-push *art-control* "sage-intro-sequence-d2" 0 self -1.0))) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this sage)) - (not (sages-kidnapped?)) - ) + (not (sages-kidnapped?))) (defmethod initialize-collision ((this sage) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -552,8 +423,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 -2048.0 0.0 5324.8) - (append-prim s4-0 s2-0) - ) + (append-prim s4-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -561,16 +431,12 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) arg0) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 5324.8) - (append-prim s4-0 s2-1) - ) - ) + (append-prim s4-0 s2-1))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this sage) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sage-sg* 3 40 (new 'static 'vector :w 4096.0) 5) @@ -580,5 +446,4 @@ (set! (-> this assistant) (the-as handle #f)) (set! (-> this draw light-index) (the-as uint 1)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village1/sequence-a-village1.gc b/goal_src/jak1/levels/village1/sequence-a-village1.gc index 15609f64fe..d1155fe582 100644 --- a/goal_src/jak1/levels/village1/sequence-a-village1.gc +++ b/goal_src/jak1/levels/village1/sequence-a-village1.gc @@ -1,14 +1,8 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/common-obs/process-taskable.gc") (require "engine/ui/credits.gc") - -;; name: sequence-a-village1.gc -;; name in dgo: sequence-a-village1 -;; dgos: L1, VI1 - (define-extern *sidekick-human-sg* skeleton-group) ;; DECOMP BEGINS @@ -18,31 +12,29 @@ :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2854 :period (seconds 3) :length (seconds 2))) - ) + :parts ((sp-item 2854 :period (seconds 3) :length (seconds 2)))) (defpart 2854 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 128.0) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.025) (meters 0.125)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 96.0 64.0) - (:b 64.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.026666667) (meters 0.053333335)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.00066666666) (meters -0.0016666667)) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 5000)) - (:conerot-radius (meters 0.3) (meters -0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 128.0) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.025) (meters 0.125)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 96.0 64.0) + (:b 64.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.053333335)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.00066666666) (meters -0.0016666667)) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 5000)) + (:conerot-radius (meters 0.3) (meters -0.5)))) (defpartgroup group-sequenceAV-spit :id 687 @@ -50,161 +42,148 @@ :linger-duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2855)) - ) + :parts ((sp-item 2855))) (defpart 2855 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 5.0) - (:scale-x (meters 0.025) (meters 0.025)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 128.0 32.0) - (:b 128.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.016666668) (meters 0.0033333334)) - (:scalevel-x (meters 0.00033333333)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 106) (degrees 2)) - (:conerot-y (degrees 90) (degrees 2)) - (:conerot-radius (meters 0) (meters -0.15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 5.0) + (:scale-x (meters 0.025) (meters 0.025)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 128.0 32.0) + (:b 128.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.0033333334)) + (:scalevel-x (meters 0.00033333333)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 106) (degrees 2)) + (:conerot-y (degrees 90) (degrees 2)) + (:conerot-radius (meters 0) (meters -0.15)))) ;; og:preserve-this PAL patch here (defpartgroup group-sequenceAV-2d-intro-mist :id 688 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2858 :period (seconds 1) :length (seconds 0.017) :binding 2856) - (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) - (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) - (sp-item 2857 :flags (start-dead)) - (sp-item 2857 :flags (start-dead)) - (sp-item 2857 :flags (start-dead)) - (sp-item 2859) - (sp-item 2860 :flags (bit6)) - ) - ) + :parts + ((sp-item 2858 :period (seconds 1) :length (seconds 0.017) :binding 2856) + (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) + (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) + (sp-item 2857 :flags (start-dead)) + (sp-item 2857 :flags (start-dead)) + (sp-item 2857 :flags (start-dead)) + (sp-item 2859) + (sp-item 2860 :flags (bit6)))) (defpart 2858 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -2.5) (meters 5)) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:conerot-z (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -2.5) (meters 5)) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:conerot-z (degrees 0) (degrees 360)))) (defpart 2856 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.5) (meters 0.2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) - (:scalevel-x (meters -0.0012121212)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.5) (meters 0.2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) + (:scalevel-x (meters -0.0012121212)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 2857 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 32.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.0010952381)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0) (meters -0.000033333334)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 32.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.0010952381)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0) (meters -0.000033333334)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpart 2860 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:z (meters -3.90625)) - (:scale-x (meters 15)) - (:scale-y (meters 12)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit13 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:z (meters -3.90625)) + (:scale-x (meters 15)) + (:scale-y (meters 12)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit13 bit14)))) (defpart 2859 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -4) (meters 8)) - (:y (meters -3) (meters 6)) - (:z (meters 0) (meters 3.4179688)) - (:scale-x (meters 6) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 6) (meters 8)) - (:r 16.0 80.0) - (:g 0.0 16.0) - (:b 16.0 150.0) - (:a 0.0) - (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) - (:rotvel-z (degrees -0.075) (degrees 0.15)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.497)) - (:next-launcher 2861) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -4) (meters 8)) + (:y (meters -3) (meters 6)) + (:z (meters 0) (meters 3.4179688)) + (:scale-x (meters 6) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 6) (meters 8)) + (:r 16.0 80.0) + (:g 0.0 16.0) + (:b 16.0 150.0) + (:a 0.0) + (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.075) (degrees 0.15)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.497)) + (:next-launcher 2861))) (defpart 2861 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2862)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2862))) (defpart 2862 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (deftype sequenceA-village1 (process-taskable) - ((boat handle) - (side handle) - ) - ) - + ((boat handle) + (side handle))) (defmethod play-anim! ((this sequenceA-village1) (arg0 symbol)) (when arg0 @@ -216,160 +195,118 @@ (send-event *camera* 'change-state cam-fixed 0) (send-event *target* 'sidekick #f) (set! (-> this boat) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *fishermans-boat-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *fishermans-boat-sg* #f :to this))) (send-event (handle->process (-> this boat)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> this boat)) 'origin-joint-index 3) - ) + (send-event (handle->process (-> this boat)) 'origin-joint-index 3)) ;; og:preserve-this PAL patch here - (the-as basic (new 'static 'spool-anim - :name "sage-intro-sequence-a" - :index 17 - :parts 22 - :command-list '((0 blackout 0) - (0 want-levels village1 misty) - (1120 send-event self pause) - (1210 display-level misty display) - (1210 want-vis mis) - (1210 want-force-vis misty #t) - (1230 send-event self sidekick-human) - (1239 joint "cameraB") - (1480 joint "camera") - (1480 setting-reset ocean-off near) - (1613 joint "cameraB") - (1796 joint "camera") - (1843 joint "cameraB") - (2145 joint "camera") - (2274 joint "cameraB") - (2439 joint "camera") - (2450 want-force-vis misty #f) - (2490 joint "cameraB") - (2570 alive "sequenceB-1") - (2569 save) - (2569 setting-unset ocean-off) - ) - ) - ) - ) + (the-as basic + (new 'static + 'spool-anim + :name "sage-intro-sequence-a" + :index 17 + :parts 22 + :command-list + '((0 blackout 0) + (0 want-levels village1 misty) + (1120 send-event self pause) + (1210 display-level misty display) + (1210 want-vis mis) + (1210 want-force-vis misty #t) + (1230 send-event self sidekick-human) + (1239 joint "cameraB") + (1480 joint "camera") + (1480 setting-reset ocean-off near) + (1613 joint "cameraB") + (1796 joint "camera") + (1843 joint "cameraB") + (2145 joint "camera") + (2274 joint "cameraB") + (2439 joint "camera") + (2450 want-force-vis misty #f) + (2490 joint "cameraB") + (2570 alive "sequenceB-1") + (2569 save) + (2569 setting-unset ocean-off))))) (defmethod get-art-elem ((this sequenceA-village1)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate play-anim (sequenceA-village1) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('sidekick-human) - (format 0 "got sidekick-human~%") - (when (= (level-status *level* 'misty) 'active) - (let ((gp-1 (entity-by-name "sequenceA-1"))) - (when gp-1 - (format 0 "found entity for sidekick-human~%") - (set! (-> self side) - (ppointer->handle (manipy-spawn (-> self root trans) gp-1 *sidekick-human-sg* #f :to self)) - ) - (send-event (handle->process (-> self side)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self side)) 'center-joint 3) - (send-event (handle->process (-> self side)) 'blend-shape #t) - ) - ) - ) - ) - ;; og:preserve-this PAL patch here - (('pause) - (let ((v0-2 (the-as object (logior (-> self mask) (process-mask pause))))) - (set! (-> self mask) (the-as process-mask v0-2)) - v0-2 - ) - ) - ) - ) - :exit (behavior () - (send-event *target* 'sidekick #t) - (let ((a0-2 (handle->process (-> self boat)))) - (if a0-2 - (deactivate a0-2) - ) - ) - (let ((a0-6 (handle->process (-> self side)))) - (if a0-6 - (deactivate a0-6) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - (#when PC_PORT - ;; og:preserve-this extra stuff when skipping cutscene - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('sidekick-human) + (format 0 "got sidekick-human~%") + (when (= (level-status *level* 'misty) 'active) + (let ((gp-1 (entity-by-name "sequenceA-1"))) + (when gp-1 + (format 0 "found entity for sidekick-human~%") + (set! (-> self side) (ppointer->handle (manipy-spawn (-> self root trans) gp-1 *sidekick-human-sg* #f :to self))) + (send-event (handle->process (-> self side)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self side)) 'center-joint 3) + (send-event (handle->process (-> self side)) 'blend-shape #t))))) + ;; og:preserve-this PAL patch here + (('pause) + (let ((v0-2 (the-as object (logior (-> self mask) (process-mask pause))))) + (set! (-> self mask) (the-as process-mask v0-2)) + v0-2)))) + :exit + (behavior () + (send-event *target* 'sidekick #t) + (let ((a0-2 (handle->process (-> self boat)))) (if a0-2 (deactivate a0-2))) + (let ((a0-6 (handle->process (-> self side)))) (if a0-6 (deactivate a0-6))) + ((-> (method-of-type process-taskable play-anim) exit)) + (#when PC_PORT + ;; og:preserve-this extra stuff when skipping cutscene + (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) (set! (-> *time-of-day-proc* 0 hour) 7) - (if (nonzero? (-> self part)) - (kill-and-free-particles (-> self part)) - ) - (return #f) - ) - ) - (let ((gp-0 (entity-by-name "sequenceB-1"))) - (set-blackout-frames (seconds 20)) - (send-event *camera* 'clear-entity) - (entity-birth-no-kill gp-0) - (send-event - (if gp-0 - (-> gp-0 extra process) - ) - 'play-anim - ) - ) - ) - :trans (behavior () - ;; og:preserve-this - ;; yeah they messed up a little bit here - (spool-push *art-control* "sage-intro-sequence-b" 0 self -1.0) - ;; they should have put this: - ;; (spool-push *art-control* "sidekick-human-intro-sequence-b" 0 self -1.0) - ;; but it somehow causes a crash (maybe linux only?) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (if (nonzero? (-> self part)) (kill-and-free-particles (-> self part))) + (return #f))) + (let ((gp-0 (entity-by-name "sequenceB-1"))) + (set-blackout-frames (seconds 20)) + (send-event *camera* 'clear-entity) + (entity-birth-no-kill gp-0) + (send-event (if gp-0 (-> gp-0 extra process)) 'play-anim))) + :trans + (behavior () + ;; og:preserve-this + ;; yeah they messed up a little bit here + (spool-push *art-control* "sage-intro-sequence-b" 0 self -1.0) + ;; they should have put this: + ;; (spool-push *art-control* "sidekick-human-intro-sequence-b" 0 self -1.0) + ;; but it somehow causes a crash (maybe linux only?) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this sequenceA-village1)) - #f - ) + #f) (defbehavior sequenceA-village1-trans-hook sequenceA-village1 () (when (>= 1000.0 (ja-aframe-num 0)) (hide-hud-quick) (if (> (-> self part matrix) 0) - (set-vector! - (sprite-get-user-hvdf (-> self part matrix)) - 2048.0 - 2048.0 - (+ -1024.0 (-> *math-camera* hvdf-off z)) - (-> *math-camera* hvdf-off w) - ) - ) + (set-vector! (sprite-get-user-hvdf (-> self part matrix)) + 2048.0 + 2048.0 + (+ -1024.0 (-> *math-camera* hvdf-off z)) + (-> *math-camera* hvdf-off w))) (let ((f0-9 (fmin 1.0 (* 0.008333334 (- 1000.0 (ja-aframe-num 0)))))) (set! (-> *part-id-table* 2860 init-specs 8 initial-valuef) (* 128.0 f0-9)) (cond ((< f0-9 1.0) (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 0.0) - (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.0) - ) + (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.0)) (else - (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 1.0) - (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.3) - ) - ) - ) + (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 1.0) + (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.3)))) (spawn (-> self part) *zero-vector*) - (draw-title-credits (* 0.001 (ja-aframe-num 0))) - ) + (draw-title-credits (* 0.001 (ja-aframe-num 0)))) 0 - (none) - ) + (none)) (defbehavior sequenceA-village1-init-by-other sequenceA-village1 ((arg0 entity-actor)) (set! (-> self entity) arg0) @@ -386,12 +323,10 @@ (set-setting! 'sfx-volume-movie 'abs 0.0 0) (set-setting! 'ambient-volume-movie 'abs 0.0 0) (go-virtual hidden) - (none) - ) + (none)) (defun start-sequence-a () (set-blackout-frames (seconds 100)) (process-spawn sequenceA-village1 (entity-by-name "sage-23") :to *entity-pool*) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village1/village-obs.gc b/goal_src/jak1/levels/village1/village-obs.gc index 851a602e2b..6adfb2e18d 100644 --- a/goal_src/jak1/levels/village1/village-obs.gc +++ b/goal_src/jak1/levels/village1/village-obs.gc @@ -1,297 +1,277 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/util/sync-info.gc") (require "engine/common-obs/water-anim.gc") (require "engine/common-obs/nav-enemy.gc") -;; name: village-obs-VI1.gc -;; name in dgo: village-obs -;; dgos: VI1 - - ;; DECOMP BEGINS -(defskelgroup *med-res-jungle-sg* medres-jungle medres-jungle-lod0-jg medres-jungle-idle-ja - ((medres-jungle-lod0-mg (meters 999999))) - :bounds (static-spherem -80 0 -80 240) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-jungle1-sg* medres-jungle1 medres-jungle1-lod0-jg medres-jungle1-idle-ja - ((medres-jungle1-lod0-mg (meters 999999))) - :bounds (static-spherem 30 0 -40 230) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-jungle2-sg* medres-jungle2 medres-jungle2-lod0-jg medres-jungle2-idle-ja - ((medres-jungle2-lod0-mg (meters 999999))) - :bounds (static-spherem 90 0 130 110) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-beach-sg* medres-beach medres-beach-lod0-jg medres-beach-idle-ja - ((medres-beach-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -140 200) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-beach1-sg* medres-beach1 medres-beach1-lod0-jg medres-beach1-idle-ja - ((medres-beach1-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -360 200) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-beach2-sg* medres-beach2 medres-beach2-lod0-jg medres-beach2-idle-ja - ((medres-beach2-lod0-mg (meters 999999))) - :bounds (static-spherem -200 0 -450 180) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-beach3-sg* medres-beach3 medres-beach3-lod0-jg medres-beach3-idle-ja - ((medres-beach3-lod0-mg (meters 999999))) - :bounds (static-spherem 75 70 -480 100) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-misty-sg* medres-misty medres-misty-lod0-jg medres-misty-idle-ja - ((medres-misty-lod0-mg (meters 999999))) - :bounds (static-spherem -40 0 -20 260) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-village11-sg* medres-village11 medres-village11-lod0-jg medres-village11-idle-ja - ((medres-village11-lod0-mg (meters 999999))) - :bounds (static-spherem -100 0 90 200) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-village12-sg* medres-village12 medres-village12-lod0-jg medres-village12-idle-ja - ((medres-village12-lod0-mg (meters 999999))) - :bounds (static-spherem 40 0 -50 155) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-village13-sg* medres-village13 medres-village13-lod0-jg medres-village13-idle-ja - ((medres-village13-lod0-mg (meters 999999))) - :bounds (static-spherem 180 -40 -40 180) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-training-sg* medres-training medres-training-lod0-jg medres-training-idle-ja - ((medres-training-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -60 220) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-jungle-sg* + medres-jungle + medres-jungle-lod0-jg + medres-jungle-idle-ja + ((medres-jungle-lod0-mg (meters 999999))) + :bounds (static-spherem -80 0 -80 240) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-jungle1-sg* + medres-jungle1 + medres-jungle1-lod0-jg + medres-jungle1-idle-ja + ((medres-jungle1-lod0-mg (meters 999999))) + :bounds (static-spherem 30 0 -40 230) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-jungle2-sg* + medres-jungle2 + medres-jungle2-lod0-jg + medres-jungle2-idle-ja + ((medres-jungle2-lod0-mg (meters 999999))) + :bounds (static-spherem 90 0 130 110) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-beach-sg* + medres-beach + medres-beach-lod0-jg + medres-beach-idle-ja + ((medres-beach-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -140 200) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-beach1-sg* + medres-beach1 + medres-beach1-lod0-jg + medres-beach1-idle-ja + ((medres-beach1-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -360 200) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-beach2-sg* + medres-beach2 + medres-beach2-lod0-jg + medres-beach2-idle-ja + ((medres-beach2-lod0-mg (meters 999999))) + :bounds (static-spherem -200 0 -450 180) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-beach3-sg* + medres-beach3 + medres-beach3-lod0-jg + medres-beach3-idle-ja + ((medres-beach3-lod0-mg (meters 999999))) + :bounds (static-spherem 75 70 -480 100) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-misty-sg* + medres-misty + medres-misty-lod0-jg + medres-misty-idle-ja + ((medres-misty-lod0-mg (meters 999999))) + :bounds (static-spherem -40 0 -20 260) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-village11-sg* + medres-village11 + medres-village11-lod0-jg + medres-village11-idle-ja + ((medres-village11-lod0-mg (meters 999999))) + :bounds (static-spherem -100 0 90 200) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-village12-sg* + medres-village12 + medres-village12-lod0-jg + medres-village12-idle-ja + ((medres-village12-lod0-mg (meters 999999))) + :bounds (static-spherem 40 0 -50 155) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-village13-sg* + medres-village13 + medres-village13-lod0-jg + medres-village13-idle-ja + ((medres-village13-lod0-mg (meters 999999))) + :bounds (static-spherem 180 -40 -40 180) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-training-sg* + medres-training + medres-training-lod0-jg + medres-training-idle-ja + ((medres-training-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -60 220) + :longest-edge (meters 0.01)) (defpart 368 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.5) - (:x (meters 0.8)) - (:scale-x (meters 1.7)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0) - (:scalevel-x (meters -0.0020833334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.08888889) - (:accel-y (meters -0.000033333334)) - (:timer (seconds 2.4)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) 3 (degrees 90)) - (:conerot-radius (meters 2) (meters 17.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.5) + (:x (meters 0.8)) + (:scale-x (meters 1.7)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0) + (:scalevel-x (meters -0.0020833334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.08888889) + (:accel-y (meters -0.000033333334)) + (:timer (seconds 2.4)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) 3 (degrees 90)) + (:conerot-radius (meters 2) (meters 17.5)))) (defpart 369 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 3.0) - (:x (meters 4)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 128.0) - (:vel-x (meters -0.01) (meters 0.02)) - (:vel-y (meters 0.050666668)) - (:vel-z (meters -0.01) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.35555556) - (:fade-g -0.35555556) - (:fade-a 0.35555556) - (:timer (seconds 0.55)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -45) 3 (degrees 90)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 3.0) + (:x (meters 4)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 128.0) + (:vel-x (meters -0.01) (meters 0.02)) + (:vel-y (meters 0.050666668)) + (:vel-z (meters -0.01) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.35555556) + (:fade-g -0.35555556) + (:fade-a 0.35555556) + (:timer (seconds 0.55)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -45) 3 (degrees 90)) + (:conerot-radius (meters 2)))) (defpart 370 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 5.0) - (:x (meters 4)) - (:scale-x (meters 1.7)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0) - (:vel-x (meters -0.026666667) (meters 0.07666667)) - (:vel-y (meters -0.006666667)) - (:vel-z (meters -0.05) (meters 0.1)) - (:scalevel-x (meters -0.008333334)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.17777778) - (:accel-y (meters -0.001)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -45) 3 (degrees 90)) - (:conerot-radius (meters 10.6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 5.0) + (:x (meters 4)) + (:scale-x (meters 1.7)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0) + (:vel-x (meters -0.026666667) (meters 0.07666667)) + (:vel-y (meters -0.006666667)) + (:vel-z (meters -0.05) (meters 0.1)) + (:scalevel-x (meters -0.008333334)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.17777778) + (:accel-y (meters -0.001)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -45) 3 (degrees 90)) + (:conerot-radius (meters 10.6)))) (defpart 371 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 3.8) - (:x (meters 5.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 0.0 64.0) - (:b 255.0) - (:a 196.0) - (:vel-x (meters -0.006666667) (meters 0.026666667)) - (:vel-y (meters 0.0073333336)) - (:scalevel-x (meters -0.008333334)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.17777778) - (:fade-a -1.0888889) - (:timer (seconds 0.55)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2.3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 3.8) + (:x (meters 5.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 0.0 64.0) + (:b 255.0) + (:a 196.0) + (:vel-x (meters -0.006666667) (meters 0.026666667)) + (:vel-y (meters 0.0073333336)) + (:scalevel-x (meters -0.008333334)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.17777778) + (:fade-a -1.0888889) + (:timer (seconds 0.55)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2.3)))) (deftype windmill-sail (process-drawable) - ((root-override trsq :overlay-at root) - (sync sync-info :inline) - (blade-normal vector :inline) - (orig-quat quaternion :inline) - (alt-actor entity-actor) - (part2 sparticle-launch-control) - ) + ((root-override trsq :overlay-at root) + (sync sync-info :inline) + (blade-normal vector :inline) + (orig-quat quaternion :inline) + (alt-actor entity-actor) + (part2 sparticle-launch-control)) (:states - windmill-sail-idle - ) - ) - + windmill-sail-idle)) (defmethod relocate ((this windmill-sail) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as windmill-sail ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as windmill-sail ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this windmill-sail)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) - -(defskelgroup *windmill-sail-sg* windmill-sail windmill-sail-lod0-jg windmill-sail-idle-ja - ((windmill-sail-lod0-mg (meters 20)) - (windmill-sail-lod1-mg (meters 40)) - (windmill-sail-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 21) - :longest-edge (meters 14.9) - ) + (none)) + +(defskelgroup *windmill-sail-sg* + windmill-sail + windmill-sail-lod0-jg + windmill-sail-idle-ja + ((windmill-sail-lod0-mg (meters 20)) (windmill-sail-lod1-mg (meters 40)) (windmill-sail-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 21) + :longest-edge (meters 14.9)) (defpartgroup group-win-wind-mill :id 123 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 368 :fade-after (meters 100)) - (sp-item 369 :fade-after (meters 100)) - (sp-item 370 :fade-after (meters 200)) - (sp-item 371 :fade-after (meters 200)) - ) - ) + :parts + ((sp-item 368 :fade-after (meters 100)) + (sp-item 369 :fade-after (meters 100)) + (sp-item 370 :fade-after (meters 200)) + (sp-item 371 :fade-after (meters 200)))) (defpartgroup group-win-wind-mill-hires :id 124 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 368) (sp-item 369) (sp-item 370) (sp-item 371)) - ) + :parts ((sp-item 368) (sp-item 369) (sp-item 370) (sp-item 371))) (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 - ) + :trans + (behavior () + (cond + ((task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (let ((f30-0 (get-current-value (-> self sync) 65536.0))) + (set! (-> self sync period) (the-as uint 4800)) + (quaternion-axis-angle! (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f30-0) + (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) + (quaternion-normalize! (-> self root-override quat)) + (set! (-> *part-id-table* 368 init-specs 15 initial-valuef) f30-0)) + (spawn (if (movie?) (-> self part2) (-> self part)) (-> self root-override trans)) + (if (nonzero? (-> self sound)) (change-sound! (-> self sound) (static-sound-name "mayors-gears")))) + (else + (set! (-> self sync period) (the-as uint #x15f90)) + (let ((f0-3 (get-current-value (-> self sync) 65536.0))) + (quaternion-axis-angle! (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f0-3)) (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) - (quaternion-normalize! (-> self root-override quat)) - (set! (-> *part-id-table* 368 init-specs 15 initial-valuef) f30-0) - ) - (spawn - (if (movie?) - (-> self part2) - (-> self part) - ) - (-> self root-override trans) - ) - (if (nonzero? (-> self sound)) - (change-sound! (-> self sound) (static-sound-name "mayors-gears")) - ) - ) - (else - (set! (-> self sync period) (the-as uint #x15f90)) - (let ((f0-3 (get-current-value (-> self sync) 65536.0))) - (quaternion-axis-angle! - (-> self root-override quat) - (-> self blade-normal x) - (-> self blade-normal y) - (-> self blade-normal z) - f0-3 - ) - ) - (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) - (quaternion-normalize! (-> self root-override quat)) - ) - ) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (if (= (-> self draw cur-lod) (-> self draw lod-set max-lod)) + (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 do-not-check-distance)) - (logclear! (-> self draw status) (draw-status do-not-check-distance)) - ) - ) + (logclear! (-> self draw status) (draw-status do-not-check-distance)))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this windmill-sail) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -307,44 +287,37 @@ (set! (-> this part2) (create-launch-control (-> *part-group-id-table* 124) this)) (set! (-> this sound) (new 'process 'ambient-sound arg0 (-> this root-override trans))) (go windmill-sail-idle) - (none) - ) + (none)) (deftype sagesail (process-drawable) - ((root-override trsq :overlay-at root) - (sync sync-info :inline) - (blade-normal vector :inline) - (orig-quat quaternion :inline) - ) + ((root-override trsq :overlay-at root) + (sync sync-info :inline) + (blade-normal vector :inline) + (orig-quat quaternion :inline)) (:states - sagesail-idle - ) - ) - + sagesail-idle)) -(defskelgroup *sagesail-sg* sagesail sagesail-lod0-jg sagesail-idle-ja - ((sagesail-lod0-mg (meters 20)) (sagesail-lod1-mg (meters 40)) (sagesail-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 25.5) - :longest-edge (meters 24.2) - ) +(defskelgroup *sagesail-sg* + sagesail + sagesail-lod0-jg + sagesail-idle-ja + ((sagesail-lod0-mg (meters 20)) (sagesail-lod1-mg (meters 40)) (sagesail-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 25.5) + :longest-edge (meters 24.2)) (defstate sagesail-idle (sagesail) - :trans (behavior () - (let ((f0-0 (get-current-value (-> self sync) 65536.0))) - (quaternion-axis-angle! - (-> self root-override quat) - (-> self blade-normal x) - (-> self blade-normal y) - (-> self blade-normal z) - f0-0 - ) - ) - (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) - (quaternion-normalize! (-> self root-override quat)) - ) + :trans + (behavior () + (let ((f0-0 (get-current-value (-> self sync) 65536.0))) + (quaternion-axis-angle! (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f0-0)) + (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) + (quaternion-normalize! (-> self root-override quat))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this sagesail) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -357,79 +330,55 @@ (vector-z-quaternion! (-> this blade-normal) (-> this root-override quat)) (vector-normalize! (-> this blade-normal) 1.0) (go sagesail-idle) - (none) - ) + (none)) (deftype windspinner (process-drawable) - ((blade-normal vector :inline) - (orig-quat quaternion :inline) - (angle float) - (angle-vel float) - ) + ((blade-normal vector :inline) + (orig-quat quaternion :inline) + (angle float) + (angle-vel float)) (:states - windspinner-idle - ) - ) - + windspinner-idle)) (defmethod run-logic? ((this windspinner)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (or (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> this root pause-adjust-distance)) - (vector-vector-distance (-> this root trans) (math-camera-pos)) - ) - ) + (vector-vector-distance (-> this root trans) (math-camera-pos)))) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) -(defskelgroup *windspinner-sg* windspinner windspinner-lod0-jg windspinner-idle-ja - ((windspinner-lod0-mg (meters 20)) (windspinner-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *windspinner-sg* + windspinner + windspinner-lod0-jg + windspinner-idle-ja + ((windspinner-lod0-mg (meters 20)) (windspinner-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defstate windspinner-idle (windspinner) - :trans (behavior () - (let* ((f0-0 0.992) - (f1-0 0.008090864) - (a0-0 (-> self root trans)) - (f0-1 - (* f0-0 - (+ (* f1-0 - (-> *wind-work* - wind-force - (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63) - ) - ) - (-> self angle-vel) - ) - ) - ) - ) - (if (< 291.27112 f0-1) - (set! f0-1 291.27112) - ) - (set! (-> self angle-vel) f0-1) - ) - (let ((f0-3 (+ (-> self angle) (-> self angle-vel)))) - (set! (-> self angle) (- f0-3 (* (the float (the int (/ f0-3 65536.0))) 65536.0))) - ) - (quaternion-axis-angle! - (-> self root quat) - (-> self blade-normal x) - (-> self blade-normal y) - (-> self blade-normal z) - (-> self angle) - ) - (quaternion*! (-> self root quat) (-> self root quat) (-> self orig-quat)) - (quaternion-normalize! (-> self root quat)) - ) + :trans + (behavior () + (let* ((f0-0 0.992) + (f1-0 0.008090864) + (a0-0 (-> self root trans)) + (f0-1 (* f0-0 + (+ (* f1-0 + (-> *wind-work* wind-force (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63))) + (-> self angle-vel))))) + (if (< 291.27112 f0-1) (set! f0-1 291.27112)) + (set! (-> self angle-vel) f0-1)) + (let ((f0-3 (+ (-> self angle) (-> self angle-vel)))) + (set! (-> self angle) (- f0-3 (* (the float (the int (/ f0-3 65536.0))) 65536.0)))) + (quaternion-axis-angle! (-> self root quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + (-> self angle)) + (quaternion*! (-> self root quat) (-> self root quat) (-> self orig-quat)) + (quaternion-normalize! (-> self root quat))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this windspinner) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -443,35 +392,27 @@ (vector-y-quaternion! (-> this blade-normal) (-> this root quat)) (vector-normalize! (-> this blade-normal) 1.0) (go windspinner-idle) - (none) - ) + (none)) (deftype mayorgears (process-drawable) - ((alt-actor entity-actor) - ) + ((alt-actor entity-actor)) (:states - mayorgears-idle - ) - ) - + mayorgears-idle)) -(defskelgroup *mayorgears-sg* mayorgears mayorgears-geo-jg mayorgears-idle-ja - ((mayorgears-geo-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4.5) - ) +(defskelgroup *mayorgears-sg* + mayorgears + mayorgears-geo-jg + mayorgears-idle-ja + ((mayorgears-geo-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4.5)) (defstate mayorgears-idle (mayorgears) - :code (behavior () - (loop - (if (task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) - (ja :num! (loop!)) - (ja :num! (loop! 0.0)) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (if (task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) (ja :num! (loop!)) (ja :num! (loop! 0.0))) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this mayorgears) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -480,76 +421,63 @@ (initialize-skeleton this *mayorgears-sg* '()) (set! (-> this draw shadow-mask) (the-as uint 255)) (go mayorgears-idle) - (none) - ) + (none)) ;; og:preserve-this PAL patch here -(deftype evilplant (process-drawable) - () +(deftype evilplant (process-drawable) () (:state-methods - idle - ) - ) - -(defmethod inspect evilplant ((obj evilplant)) - (let ((t9-0 (method-of-type process-drawable inspect))) - (t9-0 obj) - ) - obj - ) - -(defskelgroup *evilplant-sg* evilplant evilplant-lod0-jg evilplant-idle-ja - ((evilplant-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 3.8) - ) + idle)) + +(defmethod inspect ((obj evilplant)) + (let ((t9-0 (method-of-type process-drawable inspect))) (t9-0 obj)) + obj) + +(defskelgroup *evilplant-sg* + evilplant + evilplant-lod0-jg + evilplant-idle-ja + ((evilplant-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 3.8)) (defstate idle (evilplant) :virtual #t - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) - -(defmethod init-from-entity! evilplant ((obj evilplant) (arg0 entity-actor)) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) + +(defmethod init-from-entity! ((obj evilplant) (arg0 entity-actor)) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *evilplant-sg* '()) (go (method-of-object obj idle)) - (none) - ) + (none)) (deftype reflector-middle (process-drawable) - ((reflector-trans vector :inline) - (next-reflector-trans vector :inline) - ) + ((reflector-trans vector :inline) + (next-reflector-trans vector :inline)) (:states - reflector-middle-idle - ) - ) - + reflector-middle-idle)) -(defskelgroup *reflector-middle-sg* reflector-middle reflector-middle-geo-jg reflector-middle-idle-ja - ((reflector-middle-geo-mg (meters 999999))) - :bounds (static-spherem 0 17 0 17) - ) +(defskelgroup *reflector-middle-sg* + reflector-middle + reflector-middle-geo-jg + reflector-middle-idle-ja + ((reflector-middle-geo-mg (meters 999999))) + :bounds (static-spherem 0 17 0 17)) (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)) - ) - ) + :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)))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this reflector-middle) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -562,186 +490,155 @@ (let ((a0-10 (-> this link next))) (when a0-10 (set! (-> this next-reflector-trans quad) (-> a0-10 extra trans quad)) - (+! (-> this next-reflector-trans y) (res-lump-float a0-10 'height-info)) - ) - ) + (+! (-> this next-reflector-trans y) (res-lump-float a0-10 'height-info)))) (logior! (-> this draw status) (draw-status do-not-check-distance)) (go reflector-middle-idle) - (none) - ) + (none)) -(deftype reflector-end (process-drawable) - () +(deftype reflector-end (process-drawable) () (:states - reflector-end-idle - ) - ) - + reflector-end-idle)) (defstate reflector-end-idle (reflector-end) - :code anim-loop - ) + :code anim-loop) (defmethod init-from-entity! ((this reflector-end) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (go reflector-end-idle) - (none) - ) + (none)) (deftype villa-starfish (process-drawable) - ((child-count int8) - ) + ((child-count int8)) (:states - villa-starfish-idle - ) - ) - + villa-starfish-idle)) -(defskelgroup *starfish-sg* villa-starfish villa-starfish-lod0-jg villa-starfish-idle-ja - ((villa-starfish-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) +(defskelgroup *starfish-sg* + villa-starfish + villa-starfish-lod0-jg + villa-starfish-idle-ja + ((villa-starfish-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) -(deftype starfish (nav-enemy) - () +(deftype starfish (nav-enemy) () (:states - starfish-idle - starfish-patrol - ) - ) - + starfish-idle + starfish-patrol)) (defstate starfish-idle (starfish) - :enter (behavior () - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) - (set-time! (-> self state-time)) - (ja-channel-set! 0) - ) - :exit (behavior () - (ja-channel-set! 1) - ) - :trans (behavior () - (if (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (go starfish-patrol) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) + (set-time! (-> self state-time)) + (ja-channel-set! 0)) + :exit + (behavior () + (ja-channel-set! 1)) + :trans + (behavior () + (if (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go starfish-patrol))) + :code + (behavior () + (loop + (suspend))) + :post ja-post) (defstate starfish-patrol (starfish) - :enter (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav flags) (nav-control-flags navcf19)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 1)) - (if (or (not *target*) - (< 204800.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) - (go starfish-idle) - ) - ) - ) - :code (behavior () - (set! (-> self target-speed) 4096.0) - (set! (-> self rotate-speed) 12743.111) - (set! (-> self turn-time) (seconds 0.5)) - (loop - (ja-no-eval :group! villa-starfish-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post 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) - :run-rotate-speed (degrees 70) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.5) - :walk-travel-speed (meters 1) - :walk-rotate-speed (degrees 70) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :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 (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav flags) (nav-control-flags navcf19))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 1)) + (if (or (not *target*) (< 204800.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go starfish-idle)))) + :code + (behavior () + (set! (-> self target-speed) 4096.0) + (set! (-> self rotate-speed) 12743.111) + (set! (-> self turn-time) (seconds 0.5)) + (loop + (ja-no-eval :group! villa-starfish-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post 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) + :run-rotate-speed (degrees 70) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.5) + :walk-travel-speed (meters 1) + :walk-rotate-speed (degrees 70) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :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 (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod initialize-collision ((this starfish)) (logior! (-> this mask) (process-mask enemy)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (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) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this starfish)) (initialize-skeleton this *starfish-sg* '()) (init-defaults! this *starfish-nav-enemy-info*) 0 - (none) - ) + (none)) (defbehavior starfish-init-by-other starfish ((arg0 starfish) (arg1 vector)) (initialize-collision self) @@ -752,148 +649,100 @@ (set! (-> self entity) (-> arg0 entity)) (nav-enemy-method-48 self) (go starfish-idle) - (none) - ) + (none)) (defbehavior process-drawable-child-count process-drawable () (let ((v0-0 0)) - (let ((v1-0 (-> self child))) - (while v1-0 - (+! v0-0 1) - (set! v1-0 (-> v1-0 0 brother)) - (nop!) - (nop!) - ) - ) - v0-0 - ) - ) + (let ((v1-0 (-> self child))) (while v1-0 (+! v0-0 1) (set! v1-0 (-> v1-0 0 brother)) (nop!) (nop!))) + v0-0)) (defbehavior starfish-spawn-child starfish () - (let ((gp-0 (new-stack-vector0))) - (get-random-point (-> self path) gp-0) - (process-spawn starfish self gp-0 :to self) - ) - ) + (let ((gp-0 (new-stack-vector0))) (get-random-point (-> self path) gp-0) (process-spawn starfish self gp-0 :to self))) (defstate villa-starfish-idle (villa-starfish) - :code (behavior () - (set-time! (-> self state-time)) - (loop - (when (time-elapsed? (-> self state-time) (seconds 0.5)) - (set-time! (-> self state-time)) - (if (and (and *target* (>= 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (< (process-drawable-child-count) (-> self child-count)) - ) - (starfish-spawn-child) - ) - ) - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (set-time! (-> self state-time)) + (loop + (when (time-elapsed? (-> self state-time) (seconds 0.5)) + (set-time! (-> self state-time)) + (if (and (and *target* (>= 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (< (process-drawable-child-count) (-> self child-count))) + (starfish-spawn-child))) + (suspend))) + :post #f) (defmethod init-from-entity! ((this villa-starfish) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (let ((a1-4 (res-lump-value arg0 'num-lurkers uint128 :default (the-as uint128 3)))) - (set! (-> this child-count) (max 1 (min 8 (the-as int a1-4)))) - ) + (set! (-> this child-count) (max 1 (min 8 (the-as int a1-4))))) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (go villa-starfish-idle) - (none) - ) + (none)) (deftype village-fish (process-drawable) - ((child-count int8) - ) + ((child-count int8)) (:states - village-fish-idle - ) - ) - + village-fish-idle)) (defstate village-fish-idle (village-fish) - :code (behavior () - (set-time! (-> self state-time)) - (loop - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (set-time! (-> self state-time)) + (loop + (suspend))) + :post #f) (defmethod init-from-entity! ((this village-fish) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (go village-fish-idle) - (none) - ) - -(deftype villa-fisha (village-fish) - () - ) - + (none)) -(deftype villa-fishb (village-fish) - () - ) +(deftype villa-fisha (village-fish) ()) +(deftype villa-fishb (village-fish) ()) (deftype cyclegen (structure) - ((output float) - (inc float) - ) - :pack-me - ) - + ((output float) + (inc float)) + :pack-me) (defun set-period ((arg0 cyclegen) (arg1 int)) - (set! (-> arg0 inc) (/ 5.0 (the float arg1))) - ) + (set! (-> arg0 inc) (/ 5.0 (the float arg1)))) (defun update-clock ((arg0 cyclegen)) (let ((f0-1 (+ (-> arg0 output) (* (-> arg0 inc) (-> *display* time-adjust-ratio))))) - (set! (-> arg0 output) (- f0-1 (the float (the int f0-1)))) - ) - (-> arg0 output) - ) + (set! (-> arg0 output) (- f0-1 (the float (the int f0-1))))) + (-> arg0 output)) (deftype hutlamp (process-drawable) - ((pivot joint-mod-set-local) - (clock cyclegen :inline) - ) + ((pivot joint-mod-set-local) + (clock cyclegen :inline)) (:states - hutlamp-idle - ) - ) - + hutlamp-idle)) (defmethod relocate ((this hutlamp) (arg0 int)) - (if (nonzero? (-> this pivot)) - (&+! (-> this pivot) arg0) - ) - (call-parent-method this arg0) - ) - -(defskelgroup *hutlamp-sg* hutlamp hutlamp-lod0-jg hutlamp-idle-ja - ((hutlamp-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.2) - :longest-edge (meters 0.7) - ) + (if (nonzero? (-> this pivot)) (&+! (-> this pivot) arg0)) + (call-parent-method this arg0)) + +(defskelgroup *hutlamp-sg* + hutlamp + hutlamp-lod0-jg + hutlamp-idle-ja + ((hutlamp-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.2) + :longest-edge (meters 0.7)) (defstate hutlamp-idle (hutlamp) - :code (behavior () - (loop - (let ((f0-3 (* 1820.4445 (sin (* 65536.0 (update-clock (-> self clock))))))) - (quaternion-vector-angle! (-> self pivot transform quat) *x-vector* f0-3) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (let ((f0-3 (* 1820.4445 (sin (* 65536.0 (update-clock (-> self clock))))))) + (quaternion-vector-angle! (-> self pivot transform quat) *x-vector* f0-3)) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this hutlamp) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -903,27 +752,23 @@ (set-period (-> this clock) 900) (set! (-> this clock output) (rand-vu)) (go hutlamp-idle) - (none) - ) + (none)) -(deftype revcycleprop (process-drawable) - () +(deftype revcycleprop (process-drawable) () (:state-methods - idle - ) - ) + idle)) - -(defskelgroup *revcycleprop-sg* revcycleprop revcycleprop-lod0-jg revcycleprop-idle-ja - ((revcycleprop-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.2) - ) +(defskelgroup *revcycleprop-sg* + revcycleprop + revcycleprop-lod0-jg + revcycleprop-idle-ja + ((revcycleprop-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.2)) (defstate idle (revcycleprop) :virtual #t :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this revcycleprop) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -931,27 +776,23 @@ (initialize-skeleton this *revcycleprop-sg* '()) (set! (-> this draw light-index) (the-as uint 1)) (go (method-of-object this idle)) - (none) - ) + (none)) -(deftype revcycle (process-drawable) - () +(deftype revcycle (process-drawable) () (:state-methods - idle - ) - ) - + idle)) -(defskelgroup *revcycle-sg* revcycle revcycle-geo-jg revcycle-idle-ja - ((revcycle-geo-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.2) - ) +(defskelgroup *revcycle-sg* + revcycle + revcycle-geo-jg + revcycle-idle-ja + ((revcycle-geo-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.2)) (defstate idle (revcycle) :virtual #t :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this revcycle) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -959,38 +800,33 @@ (initialize-skeleton this *revcycle-sg* '()) (set! (-> this draw light-index) (the-as uint 1)) (go (method-of-object this idle)) - (none) - ) - -(deftype villagea-water (water-anim) - () - ) - - -(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) - ) - ) - ) + (none)) + +(deftype villagea-water (water-anim) ()) + +(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 water-vol-method-22 ((this villagea-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this 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) - (set! (-> v1-2 waveform) ripple-for-villagea-water) - ) - (none) - ) + (set! (-> v1-2 waveform) ripple-for-villagea-water)) + (none)) diff --git a/goal_src/jak1/levels/village1/village1-part.gc b/goal_src/jak1/levels/village1/village1-part.gc index c5f50bf43f..61fc61ff28 100644 --- a/goal_src/jak1/levels/village1/village1-part.gc +++ b/goal_src/jak1/levels/village1/village1-part.gc @@ -1,1184 +1,1134 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: village1-part.gc -;; name in dgo: village1-part -;; dgos: L1, VI1 - ;; DECOMP BEGINS -(deftype villagea-part (part-spawner) - () - ) - +(deftype villagea-part (part-spawner) ()) (defpartgroup group-village1-butterflies :id 127 :bounds (static-bspherem 0 0 0 30) - :parts ((sp-item 380 :fade-after (meters 120) :period (seconds 16.345) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 381) - (sp-item 380 :fade-after (meters 120) :period (seconds 22.125) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 381) - (sp-item 380 :fade-after (meters 120) :period (seconds 32.82) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 381) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 380 + :fade-after (meters 120) + :period (seconds 16.345) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 381) + (sp-item 380 + :fade-after (meters 120) + :period (seconds 22.125) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 381) + (sp-item 380 + :fade-after (meters 120) + :period (seconds 32.82) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 381) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)))) (defpart 380 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 7.5)) - (:y (meters 14) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-y (meters -0.036666665)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 383) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 7.5)) + (:y (meters 14) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-y (meters -0.036666665)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 383) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 383 - :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 384)) - ) + :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 384))) (defpart 384 - :init-specs ((:accel-y (meters 0.00033333333))) - ) + :init-specs ((:accel-y (meters 0.00033333333)))) (defpart 381 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3) (meters 1)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:g 0.0 256.0) - (:b 128.0 1 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:vel-z (meters 0)) - (:timer (seconds 20)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 385) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3) (meters 1)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:g 0.0 256.0) + (:b 128.0 1 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:vel-z (meters 0)) + (:timer (seconds 20)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 385))) (defpart 385 - :init-specs ((:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 385) - ) - ) + :init-specs + ((:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 385))) (defpart 382 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.9)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 1.3)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:fade-a -8.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.9)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 1.3)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:fade-a -8.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-village1-moth :id 128 :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 386 :fade-after (meters 120) :flags (bit1) :period (seconds 60.1) :length (seconds 0.017) :hour-mask #b1111111110000000 :binding 387) - (sp-item 387 :flags (start-dead launch-asap) :binding 388) - (sp-item 388 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 386 + :fade-after (meters 120) + :flags (bit1) + :period (seconds 60.1) + :length (seconds 0.017) + :hour-mask #b1111111110000000 + :binding 387) + (sp-item 387 :flags (start-dead launch-asap) :binding 388) + (sp-item 388 :flags (is-3d start-dead)))) (defpart 386 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 60)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 60)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 387 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 1.5)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 60)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 389) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 1.5)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 60)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 389))) (defpart 389 - :init-specs ((:vel-x (meters -0.035555556) (meters 0.07111111)) - (:vel-y (meters -0.0148148155) (meters 0.029629631)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 389) - ) - ) + :init-specs + ((:vel-x (meters -0.035555556) (meters 0.07111111)) + (:vel-y (meters -0.0148148155) (meters 0.029629631)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 389))) (defpart 388 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.4)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.4)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit9 bit12)))) (defpartgroup group-village1-hummingbird :id 129 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 390 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017) :hour-mask #b111111100000000000111111) - (sp-item 391 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - (sp-item 392 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - (sp-item 393 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - (sp-item 394 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - (sp-item 395 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 390 + :fade-after (meters 20) + :flags (is-3d bit1) + :period (seconds 20) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111) + (sp-item 391 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) + (sp-item 392 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) + (sp-item 393 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) + (sp-item 394 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) + (sp-item 395 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)))) (defpart 390 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 1 16.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 2.75)) - (:flags (bit2 bit9 bit12 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 396) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 1 16.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 2.75)) + (:flags (bit2 bit9 bit12 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 396))) (defpart 396 - :init-specs ((:scale-y (meters 0.5) (meters 0.1)) (:a 96.0 1 16.0) (:next-time (seconds 0.017)) (:next-launcher 396)) - ) + :init-specs ((:scale-y (meters 0.5) (meters 0.1)) (:a 96.0 1 16.0) (:next-time (seconds 0.017)) (:next-launcher 396))) (defpart 391 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 6)) - (:flags (bit9 bit12 left-multiply-quat)) - (:next-time (seconds 2.75)) - (:next-launcher 397) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 6)) + (:flags (bit9 bit12 left-multiply-quat)) + (:next-time (seconds 2.75)) + (:next-launcher 397))) (defpart 397 - :init-specs ((:scale-y (meters 0.5) (meters 0.1)) - (:a 96.0 1 16.0) - (:accel-x (meters 0.00066666666)) - (:accel-y (meters 0.00033333333)) - (:next-time (seconds 0.017)) - (:next-launcher 398) - ) - ) + :init-specs + ((:scale-y (meters 0.5) (meters 0.1)) + (:a 96.0 1 16.0) + (:accel-x (meters 0.00066666666)) + (:accel-y (meters 0.00033333333)) + (:next-time (seconds 0.017)) + (:next-launcher 398))) (defpart 398 - :init-specs ((:scale-y (meters 0.5) (meters 0.1)) (:a 96.0 1 16.0) (:next-time (seconds 0.017)) (:next-launcher 398)) - ) + :init-specs ((:scale-y (meters 0.5) (meters 0.1)) (:a 96.0 1 16.0) (:next-time (seconds 0.017)) (:next-launcher 398))) (defpart 392 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 60)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 1 32.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 2.75)) - (:flags (bit2 bit9 bit12)) - (:next-time (seconds 0.017)) - (:next-launcher 399) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 60)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 1 32.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 2.75)) + (:flags (bit2 bit9 bit12)) + (:next-time (seconds 0.017)) + (:next-launcher 399))) (defpart 399 - :init-specs ((:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 399) - ) - ) + :init-specs + ((:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:next-time (seconds 0.017)) + (:next-launcher 399))) (defpart 393 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 60)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 6)) - (:flags (bit9 bit12)) - (:next-time (seconds 2.75)) - (:next-launcher 400) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 60)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 6)) + (:flags (bit9 bit12)) + (:next-time (seconds 2.75)) + (:next-launcher 400))) (defpart 400 - :init-specs ((:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:accel-x (meters 0.00066666666)) - (:accel-y (meters 0.00033333333)) - (:next-time (seconds 0.017)) - (:next-launcher 401) - ) - ) + :init-specs + ((:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:accel-x (meters 0.00066666666)) + (:accel-y (meters 0.00033333333)) + (:next-time (seconds 0.017)) + (:next-launcher 401))) (defpart 401 - :init-specs ((:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 401) - ) - ) + :init-specs + ((:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:next-time (seconds 0.017)) + (:next-launcher 401))) (defpart 394 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 1 32.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 2.75)) - (:flags (bit2 bit9 bit12)) - (:next-time (seconds 0.017)) - (:next-launcher 402) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 1 32.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 2.75)) + (:flags (bit2 bit9 bit12)) + (:next-time (seconds 0.017)) + (:next-launcher 402))) (defpart 402 - :init-specs ((:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 402) - ) - ) + :init-specs + ((:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:next-time (seconds 0.017)) + (:next-launcher 402))) (defpart 395 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:rot-z (degrees 60)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 6)) - (:flags (bit9 bit12)) - (:next-time (seconds 2.75)) - (:next-launcher 403) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:rot-z (degrees 60)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 6)) + (:flags (bit9 bit12)) + (:next-time (seconds 2.75)) + (:next-launcher 403))) (defpart 403 - :init-specs ((:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:accel-x (meters 0.00066666666)) - (:accel-y (meters 0.00033333333)) - (:next-time (seconds 0.017)) - (:next-launcher 404) - ) - ) + :init-specs + ((:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:accel-x (meters 0.00066666666)) + (:accel-y (meters 0.00033333333)) + (:next-time (seconds 0.017)) + (:next-launcher 404))) (defpart 404 - :init-specs ((:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 404) - ) - ) + :init-specs + ((:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:next-time (seconds 0.017)) + (:next-launcher 404))) (defpart 405 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.03) - (:x (meters 0)) - (:y (meters 2.3)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 96.0) - (:a 48.0) - (:vel-z (meters -0.0013333333)) - (:scalevel-x (meters 0.00041666668)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.04) - (:accel-y (meters -0.000006666667)) - (:accel-z (meters 0.0000033333336)) - (:timer (seconds 4)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.03) + (:x (meters 0)) + (:y (meters 2.3)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 96.0) + (:a 48.0) + (:vel-z (meters -0.0013333333)) + (:scalevel-x (meters 0.00041666668)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.04) + (:accel-y (meters -0.000006666667)) + (:accel-z (meters 0.0000033333336)) + (:timer (seconds 4)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.15)))) (defpart 406 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 0.4) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 196.0) - (:vel-y (meters 0.01) (meters 0.008333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a -0.8) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -15) 4 (degrees 7.5)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 0.4) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 196.0) + (:vel-y (meters 0.01) (meters 0.008333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a -0.8) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -15) 4 (degrees 7.5)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 407 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:y (meters 1.2)) - (:scale-x (meters 0.3) (meters 0.15)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 48.0) - (:vel-y (meters 0.001)) - (:scalevel-x (meters 0.000125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.08) - (:fade-g -0.026666667) - (:fade-b -0.026666667) - (:fade-a -0.053333335) - (:accel-y (meters 0.00001)) - (:friction 0.9975) - (:timer (seconds 4)) - (:flags (bit2)) - (:conerot-x (degrees -80) 1 (degrees 160)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:y (meters 1.2)) + (:scale-x (meters 0.3) (meters 0.15)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 48.0) + (:vel-y (meters 0.001)) + (:scalevel-x (meters 0.000125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.08) + (:fade-g -0.026666667) + (:fade-b -0.026666667) + (:fade-a -0.053333335) + (:accel-y (meters 0.00001)) + (:friction 0.9975) + (:timer (seconds 4)) + (:flags (bit2)) + (:conerot-x (degrees -80) 1 (degrees 160)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.2)))) (defpart 408 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.16) - (:x (meters -0.22) (meters 0.44)) - (:y (meters 0)) - (:z (meters -0.22) (meters 0.44)) - (:scale-x (meters 0.6) (meters 0.22)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:vel-y (meters 0.0033333334)) - (:scalevel-x (meters 0.00026666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.18962963) - (:fade-g -0.094814815) - (:fade-b -0.094814815) - (:accel-y (meters -0.00001)) - (:timer (seconds 2.25)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.16) + (:x (meters -0.22) (meters 0.44)) + (:y (meters 0)) + (:z (meters -0.22) (meters 0.44)) + (:scale-x (meters 0.6) (meters 0.22)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:vel-y (meters 0.0033333334)) + (:scalevel-x (meters 0.00026666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.18962963) + (:fade-g -0.094814815) + (:fade-b -0.094814815) + (:accel-y (meters -0.00001)) + (:timer (seconds 2.25)) + (:flags (bit2)))) (defpartgroup group-village1-pot :id 130 :bounds (static-bspherem 0 2.5 0 2.5) - :parts ((sp-item 405 :fade-after (meters 50) :falloff-to (meters 60)) - (sp-item 406 :fade-after (meters 50) :falloff-to (meters 60)) - (sp-item 407 :fade-after (meters 60) :falloff-to (meters 80)) - (sp-item 409 :fade-after (meters 60) :falloff-to (meters 80)) - ) - ) + :parts + ((sp-item 405 :fade-after (meters 50) :falloff-to (meters 60)) + (sp-item 406 :fade-after (meters 50) :falloff-to (meters 60)) + (sp-item 407 :fade-after (meters 60) :falloff-to (meters 80)) + (sp-item 409 :fade-after (meters 60) :falloff-to (meters 80)))) (defpartgroup group-village1-mayor-fire :id 131 :bounds (static-bspherem 0 2.5 0 2.5) - :parts ((sp-item 410 :fade-after (meters 50) :falloff-to (meters 80)) - (sp-item 411 :fade-after (meters 40) :falloff-to (meters 40) :binding 2292) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 412 :fade-after (meters 60) :falloff-to (meters 80)) - (sp-item 413 :fade-after (meters 50) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 410 :fade-after (meters 50) :falloff-to (meters 80)) + (sp-item 411 :fade-after (meters 40) :falloff-to (meters 40) :binding 2292) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 412 :fade-after (meters 60) :falloff-to (meters 80)) + (sp-item 413 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 411 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "fire-pop" :volume 100.0)) - (:x (meters -0.6) (meters 1.3)) - (:y (meters 1) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0) - (:b 0.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.04)) - (:accel-y (meters -0.00006666667) (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit1 bit3)) - (:conerot-x (degrees -20) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "fire-pop" :volume 100.0)) + (:x (meters -0.6) (meters 1.3)) + (:y (meters 1) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.04)) + (:accel-y (meters -0.00006666667) (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit1 bit3)) + (:conerot-x (degrees -20) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2292 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.25) (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters -0.00083333335) (meters 0.0016666667)) - (:fade-r 0.0) - (:fade-g -0.7111111) - (:fade-b -0.7111111) - (:fade-a -0.42666668) - (:timer (seconds 1)) - (:flags (bit1 bit2 bit3 bit7)) - (:next-time (seconds 0.6)) - (:next-launcher 2293) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters -0.00083333335) (meters 0.0016666667)) + (:fade-r 0.0) + (:fade-g -0.7111111) + (:fade-b -0.7111111) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (bit1 bit2 bit3 bit7)) + (:next-time (seconds 0.6)) + (:next-launcher 2293))) (defpart 2293 - :init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667)) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667))) (defpart 410 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0 10.0) - (:x (meters -1.2) (meters 2)) - (:y (meters 0)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.5) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.73333335) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.2) (seconds 0.197)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0 10.0) + (:x (meters -1.2) (meters 2)) + (:y (meters 0)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.5) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.73333335) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.2) (seconds 0.197)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 412 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 0)) - (:z (meters -1) (meters 1.5)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.18962963) - (:fade-g -0.094814815) - (:fade-b -0.094814815) - (:fade-a -0.047407407) - (:accel-y (meters -0.000006666667)) - (:friction 0.99) - (:timer (seconds 2.25)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 0)) + (:z (meters -1) (meters 1.5)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.18962963) + (:fade-g -0.094814815) + (:fade-b -0.094814815) + (:fade-a -0.047407407) + (:accel-y (meters -0.000006666667)) + (:friction 0.99) + (:timer (seconds 2.25)) + (:flags (bit2)))) (defpart 413 - :init-specs ((:num 0.4) - (:x (meters 0.2)) - (:rot-x 8) - (:r 3276.8) - (:g 2662.4) - (:b 2867.2) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 414) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.4) + (:x (meters 0.2)) + (:rot-x 8) + (:r 3276.8) + (:g 2662.4) + (:b 2867.2) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 414) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 414 - :init-specs ((:fade-b -1.3653333)) - ) + :init-specs ((:fade-b -1.3653333))) (defpartgroup group-village1-sagehut-seagulls :id 132 :bounds (static-bspherem 0 8 0 45) - :parts ((sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)))) (defun bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (set! (-> arg2 y) (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) - (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))) - ) - ) + (set! (-> arg2 y) + (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) + (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))))) 0 - (none) - ) + (none)) (defpart 415 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-random-next-time) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters 0) (meters 16)) - (:z (meters -15) (meters 30)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit3)) - (:userdata 199.98) - (:func 'bird-bob-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-random-next-time) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters 0) (meters 16)) + (:z (meters -15) (meters 30)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit3)) + (:userdata 199.98) + (:func 'bird-bob-func))) (defun sparticle-seagull-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 1 z) (the float (sar (shl (the int (+ -16384.0 (-> arg1 omega))) 48) 48))) 0 - (none) - ) + (none)) (defpart 416 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-copy-omega-to-z) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 30)) - (:scale-x (meters 0)) - (:rot-z (degrees 0)) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.04)) - (:timer (seconds 2)) - (:flags (bit3 bit7)) - (:func 'sparticle-seagull-moon) - (:next-time (seconds 0.665)) - (:next-launcher 418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-copy-omega-to-z) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 30)) + (:scale-x (meters 0)) + (:rot-z (degrees 0)) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.04)) + (:timer (seconds 2)) + (:flags (bit3 bit7)) + (:func 'sparticle-seagull-moon) + (:next-time (seconds 0.665)) + (:next-launcher 418))) (defpart 418 - :init-specs ((:scale-x (meters 8)) - (:scalevel-x (meters -0.08)) - (:timer (seconds 2)) - (:next-time (seconds 0.335)) - (:next-launcher 419) - ) - ) + :init-specs + ((:scale-x (meters 8)) + (:scalevel-x (meters -0.08)) + (:timer (seconds 2)) + (:next-time (seconds 0.335)) + (:next-launcher 419))) (defpart 419 - :init-specs ((:scale-x (meters 0)) - (:scalevel-x (meters -0.04)) - (:timer (seconds 2)) - (:next-time (seconds 0.665)) - (:next-launcher 418) - ) - ) + :init-specs + ((:scale-x (meters 0)) + (:scalevel-x (meters -0.04)) + (:timer (seconds 2)) + (:next-time (seconds 0.665)) + (:next-launcher 418))) (defpart 417 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:birth-func 'birth-func-copy2-rot-color) - (:num 2.0) - (:scale-x (meters 4)) - (:scale-y (meters 1.5)) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:birth-func 'birth-func-copy2-rot-color) + (:num 2.0) + (:scale-x (meters 4)) + (:scale-y (meters 1.5)) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-village1-butterfly-sitting :id 133 :bounds (static-bspherem 0 0.2 0 0.5) - :parts ((sp-item 420 :fade-after (meters 60) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 421 :fade-after (meters 60) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 420 :fade-after (meters 60) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 421 :fade-after (meters 60) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)))) (defpart 420 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:num 1.0) - (:y (meters 0.05)) - (:scale-x (meters 0.9)) - (:rot-x (degrees 100.00001)) - (:rot-y (degrees 72.5)) - (:scale-y (meters 1.3)) - (:r 0.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:rotvel-x (degrees 0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 bit12 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:num 1.0) + (:y (meters 0.05)) + (:scale-x (meters 0.9)) + (:rot-x (degrees 100.00001)) + (:rot-y (degrees 72.5)) + (:scale-y (meters 1.3)) + (:r 0.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:rotvel-x (degrees 0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 bit12 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 422))) (defpart 422 - :init-specs ((:rotvel-x (degrees -0.31666666))) - ) + :init-specs ((:rotvel-x (degrees -0.31666666)))) (defpart 421 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:num 1.0) - (:y (meters 0.05)) - (:scale-x (meters 0.9)) - (:rot-x (degrees 80)) - (:rot-y (degrees 72.5)) - (:scale-y (meters 1.3)) - (:r 0.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:rotvel-x (degrees -0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 bit12 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 423) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:num 1.0) + (:y (meters 0.05)) + (:scale-x (meters 0.9)) + (:rot-x (degrees 80)) + (:rot-y (degrees 72.5)) + (:scale-y (meters 1.3)) + (:r 0.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:rotvel-x (degrees -0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 bit12 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 423))) (defpart 423 - :init-specs ((:rotvel-x (degrees 0.31666666))) - ) + :init-specs ((:rotvel-x (degrees 0.31666666)))) (defpartgroup group-village1-fountain :id 134 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 424 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 425 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 425 :fade-after (meters 150) :falloff-to (meters 150) :period (seconds 1.545) :length (seconds 0.465)) - (sp-item 426 :fade-after (meters 90) :falloff-to (meters 90) :period (seconds 1.755) :length (seconds 0.62)) - (sp-item 427 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 1.867) :length (seconds 0.707)) - (sp-item 428 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 1.345) :length (seconds 0.987)) - (sp-item 429 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 430 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 431 :fade-after (meters 40) :falloff-to (meters 40)) - ) - ) + :parts + ((sp-item 424 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 425 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 425 :fade-after (meters 150) :falloff-to (meters 150) :period (seconds 1.545) :length (seconds 0.465)) + (sp-item 426 :fade-after (meters 90) :falloff-to (meters 90) :period (seconds 1.755) :length (seconds 0.62)) + (sp-item 427 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 1.867) :length (seconds 0.707)) + (sp-item 428 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 1.345) :length (seconds 0.987)) + (sp-item 429 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 430 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 431 :fade-after (meters 40) :falloff-to (meters 40)))) (defpart 431 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 4.0) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:fade-a -0.5688889) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 0.75)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 15) (degrees 75)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 4.0) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:fade-a -0.5688889) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 0.75)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 15) (degrees 75)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 430 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.9) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 0.0) - (:vel-x (meters 0) (meters 0.0013333333)) - (:vel-y (meters 0.026666667) (meters 0.013333334)) - (:fade-a 1.0666667) - (:accel-y (meters -0.001)) - (:friction 0.925) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12)) - (:next-time (seconds 0.05) (seconds 0.047)) - (:next-launcher 432) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.9) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 0.0) + (:vel-x (meters 0) (meters 0.0013333333)) + (:vel-y (meters 0.026666667) (meters 0.013333334)) + (:fade-a 1.0666667) + (:accel-y (meters -0.001)) + (:friction 0.925) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12)) + (:next-time (seconds 0.05) (seconds 0.047)) + (:next-launcher 432) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 432 - :init-specs ((:fade-a -0.07111111)) - ) + :init-specs ((:fade-a -0.07111111))) (defpart 426 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0 4.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.02) (meters 0.013333334)) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain-nosplash) - (:conerot-x (degrees 45) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.4) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0 4.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.02) (meters 0.013333334)) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain-nosplash) + (:conerot-x (degrees 45) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.4) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 428 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0 4.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.02) (meters 0.013333334)) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain-nosplash) - (:conerot-x (degrees 45) (degrees 30)) - (:conerot-y (degrees 0) (degrees 120)) - (:conerot-radius (meters 0.4) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0 4.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.02) (meters 0.013333334)) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain-nosplash) + (:conerot-x (degrees 45) (degrees 30)) + (:conerot-y (degrees 0) (degrees 120)) + (:conerot-radius (meters 0.4) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 427 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0 4.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.02) (meters 0.013333334)) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain-nosplash) - (:conerot-x (degrees 45) (degrees 30)) - (:conerot-y (degrees 120) (degrees 120)) - (:conerot-radius (meters 0.4) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0 4.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.02) (meters 0.013333334)) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain-nosplash) + (:conerot-x (degrees 45) (degrees 30)) + (:conerot-y (degrees 120) (degrees 120)) + (:conerot-radius (meters 0.4) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 425 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 3.0 4.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.02) (meters 0.013333334)) - (:vel-y (meters 0.01) (meters 0.01)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain-nosplash) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 240) (degrees 120)) - (:conerot-radius (meters 0.4) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 3.0 4.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.02) (meters 0.013333334)) + (:vel-y (meters 0.01) (meters 0.01)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain-nosplash) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 240) (degrees 120)) + (:conerot-radius (meters 0.4) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 429 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 3.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.0033333334) (meters 0.002)) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.3) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 3.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.0033333334) (meters 0.002)) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.3) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 424 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 7.0) - (:y (meters -0.4) (meters 0.4)) - (:scale-x (meters 0.15) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0) (meters 0.0013333333)) - (:vel-y (meters 0.04)) - (:accel-y (meters -0.001)) - (:timer (seconds 1.3)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.65)) - (:next-launcher 433) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 7.0) + (:y (meters -0.4) (meters 0.4)) + (:scale-x (meters 0.15) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0) (meters 0.0013333333)) + (:vel-y (meters 0.04)) + (:accel-y (meters -0.001)) + (:timer (seconds 1.3)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.65)) + (:next-launcher 433) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 433 - :init-specs ((:scalevel-y (meters 0.0023076923))) - ) + :init-specs ((:scalevel-y (meters 0.0023076923)))) (defpart 434 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:fade-a -0.5688889) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 5) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:fade-a -0.5688889) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 5) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 435 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 96.0 16.0) - (:g 112.0 16.0) - (:b 128.0) - (:a 64.0 64.0) - (:scalevel-x (meters 0.01) (meters 0.01)) - (:scalevel-y (meters 0.01) (meters 0.01)) - (:fade-a -1.2222222) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 96.0 16.0) + (:g 112.0 16.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:scalevel-y (meters 0.01) (meters 0.01)) + (:fade-a -1.2222222) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit12)) + (:rotate-y (degrees 0) (degrees 360)))) (defun check-drop-level-village1-fountain-nosplash ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -1188,10 +1138,7 @@ (set! (-> gp-0 y) (-> arg1 user-float)) (set! (-> gp-0 z) (-> arg2 z)) (set! (-> gp-0 w) 1.0) - gp-0 - ) - ) - ) + gp-0))) (defun check-drop-level-village1-fountain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -1199,829 +1146,781 @@ (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 434) gp-0 :rate 1.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 435) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 435) gp-0 :rate 1.0))) + (none)) (defpartgroup group-village1-bird-lady-birds :id 135 :bounds (static-bspherem 0 0 6 18) - :parts ((sp-item 436 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 437) - (sp-item 437 :flags (bit1 start-dead launch-asap) :binding 438) - (sp-item 438 :flags (is-3d bit1 start-dead) :binding 439) - (sp-item 439 :flags (is-3d bit1 start-dead) :binding 440) - (sp-item 440 :flags (is-3d bit1 start-dead)) - (sp-item 437 :flags (bit1 start-dead launch-asap) :binding 438) - (sp-item 438 :flags (is-3d bit1 start-dead) :binding 439) - (sp-item 439 :flags (is-3d bit1 start-dead) :binding 440) - (sp-item 440 :flags (is-3d bit1 start-dead)) - (sp-item 441 :fade-after (meters 40) :period (seconds 2) :length (seconds 0.017) :binding 442) - (sp-item 442 :flags (bit1 start-dead launch-asap) :binding 443) - (sp-item 443 :flags (is-3d bit1 start-dead) :binding 444) - (sp-item 444 :flags (is-3d bit1 start-dead) :binding 445) - (sp-item 445 :flags (is-3d bit1 start-dead)) - (sp-item 442 :flags (bit1 start-dead launch-asap) :binding 443) - (sp-item 443 :flags (is-3d bit1 start-dead) :binding 444) - (sp-item 444 :flags (is-3d bit1 start-dead) :binding 445) - (sp-item 445 :flags (is-3d bit1 start-dead)) - (sp-item 446 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 447) - (sp-item 447 :flags (bit1 start-dead launch-asap) :binding 448) - (sp-item 448 :flags (is-3d bit1 start-dead) :binding 449) - (sp-item 449 :flags (is-3d bit1 start-dead) :binding 450) - (sp-item 450 :flags (is-3d bit1 start-dead)) - (sp-item 447 :flags (bit1 start-dead launch-asap) :binding 448) - (sp-item 448 :flags (is-3d bit1 start-dead) :binding 449) - (sp-item 449 :flags (is-3d bit1 start-dead) :binding 450) - (sp-item 450 :flags (is-3d bit1 start-dead)) - (sp-item 451 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 452 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 453 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 454 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 455 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 456 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 457 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 458 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 459 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 460 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 461) - (sp-item 461 :flags (is-3d bit1 start-dead) :binding 462) - (sp-item 462 :flags (is-3d bit1 start-dead) :binding 463) - (sp-item 463 :flags (is-3d bit1 start-dead)) - (sp-item 461 :flags (is-3d bit1 start-dead) :binding 462) - (sp-item 462 :flags (is-3d bit1 start-dead) :binding 463) - (sp-item 463 :flags (is-3d bit1 start-dead)) - (sp-item 464 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 465) - (sp-item 465 :flags (is-3d bit1 start-dead) :binding 466) - (sp-item 466 :flags (is-3d bit1 start-dead) :binding 467) - (sp-item 467 :flags (is-3d bit1 start-dead)) - (sp-item 465 :flags (is-3d bit1 start-dead) :binding 466) - (sp-item 466 :flags (is-3d bit1 start-dead) :binding 467) - (sp-item 467 :flags (is-3d bit1 start-dead)) - (sp-item 468 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 469) - (sp-item 469 :flags (is-3d bit1 start-dead) :binding 470) - (sp-item 470 :flags (is-3d bit1 start-dead) :binding 471) - (sp-item 471 :flags (is-3d bit1 start-dead)) - (sp-item 469 :flags (is-3d bit1 start-dead) :binding 470) - (sp-item 470 :flags (is-3d bit1 start-dead) :binding 471) - (sp-item 471 :flags (is-3d bit1 start-dead)) - (sp-item 472 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 473) - (sp-item 473 :flags (bit1 start-dead launch-asap) :binding 474) - (sp-item 474 :flags (is-3d bit1 start-dead) :binding 475) - (sp-item 475 :flags (is-3d bit1 start-dead) :binding 476) - (sp-item 476 :flags (is-3d bit1 start-dead)) - (sp-item 473 :flags (bit1 start-dead launch-asap) :binding 474) - (sp-item 474 :flags (is-3d bit1 start-dead) :binding 475) - (sp-item 475 :flags (is-3d bit1 start-dead) :binding 476) - (sp-item 476 :flags (is-3d bit1 start-dead)) - ) - ) + :parts + ((sp-item 436 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 437) + (sp-item 437 :flags (bit1 start-dead launch-asap) :binding 438) + (sp-item 438 :flags (is-3d bit1 start-dead) :binding 439) + (sp-item 439 :flags (is-3d bit1 start-dead) :binding 440) + (sp-item 440 :flags (is-3d bit1 start-dead)) + (sp-item 437 :flags (bit1 start-dead launch-asap) :binding 438) + (sp-item 438 :flags (is-3d bit1 start-dead) :binding 439) + (sp-item 439 :flags (is-3d bit1 start-dead) :binding 440) + (sp-item 440 :flags (is-3d bit1 start-dead)) + (sp-item 441 :fade-after (meters 40) :period (seconds 2) :length (seconds 0.017) :binding 442) + (sp-item 442 :flags (bit1 start-dead launch-asap) :binding 443) + (sp-item 443 :flags (is-3d bit1 start-dead) :binding 444) + (sp-item 444 :flags (is-3d bit1 start-dead) :binding 445) + (sp-item 445 :flags (is-3d bit1 start-dead)) + (sp-item 442 :flags (bit1 start-dead launch-asap) :binding 443) + (sp-item 443 :flags (is-3d bit1 start-dead) :binding 444) + (sp-item 444 :flags (is-3d bit1 start-dead) :binding 445) + (sp-item 445 :flags (is-3d bit1 start-dead)) + (sp-item 446 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 447) + (sp-item 447 :flags (bit1 start-dead launch-asap) :binding 448) + (sp-item 448 :flags (is-3d bit1 start-dead) :binding 449) + (sp-item 449 :flags (is-3d bit1 start-dead) :binding 450) + (sp-item 450 :flags (is-3d bit1 start-dead)) + (sp-item 447 :flags (bit1 start-dead launch-asap) :binding 448) + (sp-item 448 :flags (is-3d bit1 start-dead) :binding 449) + (sp-item 449 :flags (is-3d bit1 start-dead) :binding 450) + (sp-item 450 :flags (is-3d bit1 start-dead)) + (sp-item 451 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 452 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 453 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 454 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 455 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 456 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 457 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 458 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 459 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 460 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 461) + (sp-item 461 :flags (is-3d bit1 start-dead) :binding 462) + (sp-item 462 :flags (is-3d bit1 start-dead) :binding 463) + (sp-item 463 :flags (is-3d bit1 start-dead)) + (sp-item 461 :flags (is-3d bit1 start-dead) :binding 462) + (sp-item 462 :flags (is-3d bit1 start-dead) :binding 463) + (sp-item 463 :flags (is-3d bit1 start-dead)) + (sp-item 464 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 465) + (sp-item 465 :flags (is-3d bit1 start-dead) :binding 466) + (sp-item 466 :flags (is-3d bit1 start-dead) :binding 467) + (sp-item 467 :flags (is-3d bit1 start-dead)) + (sp-item 465 :flags (is-3d bit1 start-dead) :binding 466) + (sp-item 466 :flags (is-3d bit1 start-dead) :binding 467) + (sp-item 467 :flags (is-3d bit1 start-dead)) + (sp-item 468 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 469) + (sp-item 469 :flags (is-3d bit1 start-dead) :binding 470) + (sp-item 470 :flags (is-3d bit1 start-dead) :binding 471) + (sp-item 471 :flags (is-3d bit1 start-dead)) + (sp-item 469 :flags (is-3d bit1 start-dead) :binding 470) + (sp-item 470 :flags (is-3d bit1 start-dead) :binding 471) + (sp-item 471 :flags (is-3d bit1 start-dead)) + (sp-item 472 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 473) + (sp-item 473 :flags (bit1 start-dead launch-asap) :binding 474) + (sp-item 474 :flags (is-3d bit1 start-dead) :binding 475) + (sp-item 475 :flags (is-3d bit1 start-dead) :binding 476) + (sp-item 476 :flags (is-3d bit1 start-dead)) + (sp-item 473 :flags (bit1 start-dead launch-asap) :binding 474) + (sp-item 474 :flags (is-3d bit1 start-dead) :binding 475) + (sp-item 475 :flags (is-3d bit1 start-dead) :binding 476) + (sp-item 476 :flags (is-3d bit1 start-dead)))) (defpart 472 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0.8)) - (:y (meters 0.8)) - (:z (meters 15.3)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0.8)) + (:y (meters 0.8)) + (:z (meters 15.3)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3)))) (defpart 473 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 2)) - (:y (meters 1.0666667)) - (:z (meters 0.25)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:omega 0.0) - (:vel-x (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 1.0666667)) + (:z (meters 0.25)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:omega 0.0) + (:vel-x (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7)))) (defpart 474 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees -60)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees -60)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 475 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 30)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 30)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 476 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 30)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 30)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 464 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 5.9)) - (:y (meters 2.4)) - (:z (meters -5)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 128.0) - (:vel-y (meters 0.006666667)) - (:accel-y (meters -0.000144)) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:next-time (seconds 1.5)) - (:next-launcher 477) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 5.9)) + (:y (meters 2.4)) + (:z (meters -5)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 128.0) + (:vel-y (meters 0.006666667)) + (:accel-y (meters -0.000144)) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:next-time (seconds 1.5)) + (:next-launcher 477))) (defpart 465 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 466 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 467 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 468 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -8)) - (:y (meters 3.7)) - (:z (meters 2.2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 128.0) - (:vel-y (meters 0.006666667)) - (:accel-y (meters -0.000144)) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:next-time (seconds 1.5)) - (:next-launcher 477) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -8)) + (:y (meters 3.7)) + (:z (meters 2.2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 128.0) + (:vel-y (meters 0.006666667)) + (:accel-y (meters -0.000144)) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:next-time (seconds 1.5)) + (:next-launcher 477))) (defpart 469 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 470 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 471 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 460 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 1)) - (:y (meters 0.4)) - (:z (meters 15)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 128.0) - (:vel-y (meters 0.006666667)) - (:accel-y (meters -0.000144)) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:next-time (seconds 1.5)) - (:next-launcher 477) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 1)) + (:y (meters 0.4)) + (:z (meters 15)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 128.0) + (:vel-y (meters 0.006666667)) + (:accel-y (meters -0.000144)) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:next-time (seconds 1.5)) + (:next-launcher 477))) (defpart 477 - :init-specs ((:accel-y (meters 0.00013))) - ) + :init-specs ((:accel-y (meters 0.00013)))) (defpart 461 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 462 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 463 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 457 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:x (meters -6)) - (:y (meters 1.9)) - (:z (meters 3.15)) - (:scale-x (meters 0.6)) - (:rot-x (degrees 90)) - (:rot-y (degrees 270)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.6)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:x (meters -6)) + (:y (meters 1.9)) + (:z (meters 3.15)) + (:scale-x (meters 0.6)) + (:rot-x (degrees 90)) + (:rot-y (degrees 270)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.6)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)))) (defpart 458 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters -6)) - (:y (meters 1.9)) - (:z (meters 3.15)) - (:scale-x (meters 0.4)) - (:rot-x (degrees -60)) - (:rot-y (degrees 150)) - (:rot-z (degrees -60)) - (:scale-y (meters 1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:rotvel-x (degrees 0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters -6)) + (:y (meters 1.9)) + (:z (meters 3.15)) + (:scale-x (meters 0.4)) + (:rot-x (degrees -60)) + (:rot-y (degrees 150)) + (:rot-z (degrees -60)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:rotvel-x (degrees 0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 422))) (defpart 459 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters -6)) - (:y (meters 1.9)) - (:z (meters 3.15)) - (:scale-x (meters 0.4)) - (:rot-x (degrees 240)) - (:rot-y (degrees 30)) - (:rot-z (degrees 60)) - (:scale-y (meters 1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:rotvel-x (degrees -0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 423) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters -6)) + (:y (meters 1.9)) + (:z (meters 3.15)) + (:scale-x (meters 0.4)) + (:rot-x (degrees 240)) + (:rot-y (degrees 30)) + (:rot-z (degrees 60)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:rotvel-x (degrees -0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 423))) (defpart 454 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:x (meters -5.5)) - (:y (meters 4.5)) - (:z (meters -2.5)) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees 210)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters 4.5)) + (:z (meters -2.5)) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 210)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)))) (defpart 455 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters -5.5)) - (:y (meters 4.5)) - (:z (meters -2.5)) - (:scale-x (meters 0.3)) - (:rot-x (degrees -60)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60)) - (:scale-y (meters 1)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:rotvel-x (degrees 0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters 4.5)) + (:z (meters -2.5)) + (:scale-x (meters 0.3)) + (:rot-x (degrees -60)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60)) + (:scale-y (meters 1)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:rotvel-x (degrees 0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 422))) (defpart 456 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters -5.5)) - (:y (meters 4.5)) - (:z (meters -2.5)) - (:scale-x (meters 0.3)) - (:rot-x (degrees 240)) - (:rot-y (degrees -30)) - (:rot-z (degrees 60)) - (:scale-y (meters 1)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:rotvel-x (degrees -0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 423) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters 4.5)) + (:z (meters -2.5)) + (:scale-x (meters 0.3)) + (:rot-x (degrees 240)) + (:rot-y (degrees -30)) + (:rot-z (degrees 60)) + (:scale-y (meters 1)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:rotvel-x (degrees -0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 423))) (defpart 451 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:x (meters 2)) - (:y (meters 5)) - (:z (meters -4)) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees 180)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 5)) + (:z (meters -4)) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)))) (defpart 452 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters 2)) - (:y (meters 5)) - (:z (meters -4)) - (:scale-x (meters 0.3)) - (:rot-x (degrees -60)) - (:rot-y (degrees 60)) - (:rot-z (degrees -60)) - (:scale-y (meters 1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:rotvel-x (degrees 0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 5)) + (:z (meters -4)) + (:scale-x (meters 0.3)) + (:rot-x (degrees -60)) + (:rot-y (degrees 60)) + (:rot-z (degrees -60)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:rotvel-x (degrees 0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 422))) (defpart 478 - :init-specs ((:rotvel-x (degrees -0.31666666))) - ) + :init-specs ((:rotvel-x (degrees -0.31666666)))) (defpart 453 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters 2)) - (:y (meters 5)) - (:z (meters -4)) - (:scale-x (meters 0.3)) - (:rot-x (degrees 240)) - (:rot-y (degrees -60)) - (:rot-z (degrees 60)) - (:scale-y (meters 1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:rotvel-x (degrees -0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 423) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 5)) + (:z (meters -4)) + (:scale-x (meters 0.3)) + (:rot-x (degrees 240)) + (:rot-y (degrees -60)) + (:rot-z (degrees 60)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:rotvel-x (degrees -0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 423))) (defpart 479 - :init-specs ((:rotvel-x (degrees 0.31666666))) - ) + :init-specs ((:rotvel-x (degrees 0.31666666)))) (defpart 446 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -6.4)) - (:y (meters 4.8)) - (:z (meters 0.75)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -6.4)) + (:y (meters 4.8)) + (:z (meters 0.75)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3)))) (defpart 447 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -0.7111111)) - (:y (meters 4)) - (:z (meters 0.5)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:omega 0.0) - (:vel-x (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -0.7111111)) + (:y (meters 4)) + (:z (meters 0.5)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:omega 0.0) + (:vel-x (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7)))) (defpart 448 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees -60)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees -60)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 449 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 30)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 30)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 450 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 30)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 30)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 441 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -2.1)) - (:y (meters 3.7)) - (:z (meters -1.8)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -2.1)) + (:y (meters 3.7)) + (:z (meters -1.8)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit3)))) (defpart 442 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters -1.8666667)) - (:z (meters 0.5)) - (:scale-x (meters 0.175)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:omega 20571.021) - (:vel-x (meters 0.026666667)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters -1.8666667)) + (:z (meters 0.5)) + (:scale-x (meters 0.175)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:omega 20571.021) + (:vel-x (meters 0.026666667)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 443 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees 180)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 255.0) - (:g 128.0) - (:b 64.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 255.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 444 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees -90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 255.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees -90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 255.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 445 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees -90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 255.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees -90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 255.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 436 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -2.3)) - (:y (meters 4.6)) - (:z (meters -1.9)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -2.3)) + (:y (meters 4.6)) + (:z (meters -1.9)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3)))) (defpart 437 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 1.4222223)) - (:z (meters 0.5)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:omega 4551.1113) - (:vel-x (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 1.4222223)) + (:z (meters 0.5)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:omega 4551.1113) + (:vel-x (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7)))) (defpart 438 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 439 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 440 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) diff --git a/goal_src/jak1/levels/village1/village1-part2.gc b/goal_src/jak1/levels/village1/village1-part2.gc index 5e30d5e366..d76ac46b31 100644 --- a/goal_src/jak1/levels/village1/village1-part2.gc +++ b/goal_src/jak1/levels/village1/village1-part2.gc @@ -1,2202 +1,2138 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") -;; name: village1-part2.gc -;; name in dgo: village1-part2 -;; dgos: L1, VI1 - ;; DECOMP BEGINS (defpartgroup group-village1-sagehut-rings :id 136 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 480 :fade-after (meters 60) :flags (is-3d)) - (sp-item 481 :fade-after (meters 60) :flags (is-3d)) - (sp-item 482 :fade-after (meters 50) :binding 483) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 484 :fade-after (meters 50) :binding 485) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 486 :fade-after (meters 50) :binding 487) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 480 :fade-after (meters 60) :flags (is-3d)) + (sp-item 481 :fade-after (meters 60) :flags (is-3d)) + (sp-item 482 :fade-after (meters 50) :binding 483) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 484 :fade-after (meters 50) :binding 485) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 486 :fade-after (meters 50) :binding 487) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)))) (defpartgroup group-village1-sagehut-rings-2 :id 137 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 488 :fade-after (meters 50) :binding 489) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 490 :fade-after (meters 50) :binding 491) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 492 :fade-after (meters 50) :binding 493) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 488 :fade-after (meters 50) :binding 489) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 490 :fade-after (meters 50) :binding 491) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 492 :fade-after (meters 50) :binding 493) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)))) (defpartgroup group-village1-sagehut-rings-3 :id 138 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 494 :fade-after (meters 50) :binding 495) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 496 :fade-after (meters 50) :binding 497) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 498 :fade-after (meters 50) :binding 499) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 494 :fade-after (meters 50) :binding 495) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 496 :fade-after (meters 50) :binding 497) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 498 :fade-after (meters 50) :binding 499) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)))) (defpart 482 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters -0.049)) - (:y (meters 2.368)) - (:z (meters 2.414)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters -0.049)) + (:y (meters 2.368)) + (:z (meters 2.414)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 483 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 1.3333334)) - (:y (meters 0.44444445)) - (:z (meters 1.3)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 8.0 128.0) - (:a 6.0 16.0) - (:omega -2730.6667) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 1.3333334)) + (:y (meters 0.44444445)) + (:z (meters 1.3)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 8.0 128.0) + (:a 6.0 16.0) + (:omega -2730.6667) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 480 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.5) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.55)) - (:z (meters 0.08)) - (:scale-x (meters 0.4) (meters 0.25)) - (:rot-x (degrees 80.5)) - (:rot-y (degrees 15.5)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 64.0 64.0) - (:b 0.0 1 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.0033333334)) - (:vel-z (meters -0.00033333333)) - (:fade-r -0.2) - (:fade-b -0.2) - (:fade-a -0.2) - (:accel-y (meters -0.000016666667)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14 left-multiply-quat)) - (:rotate-y (degrees 15.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.5) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.55)) + (:z (meters 0.08)) + (:scale-x (meters 0.4) (meters 0.25)) + (:rot-x (degrees 80.5)) + (:rot-y (degrees 15.5)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 64.0 64.0) + (:b 0.0 1 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.0033333334)) + (:vel-z (meters -0.00033333333)) + (:fade-r -0.2) + (:fade-b -0.2) + (:fade-a -0.2) + (:accel-y (meters -0.000016666667)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14 left-multiply-quat)) + (:rotate-y (degrees 15.5)))) (defpart 481 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:z (meters -0.26)) - (:scale-x (meters 6)) - (:rot-x (degrees 80.5)) - (:rot-y (degrees 15.5)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 8.0 128.0) - (:a 48.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:z (meters -0.26)) + (:scale-x (meters 6)) + (:rot-x (degrees 80.5)) + (:rot-y (degrees 15.5)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 8.0 128.0) + (:a 48.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 18)))) (defpart 484 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters -0.094)) - (:y (meters 3.068)) - (:z (meters 2.414)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:b 0.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters -0.094)) + (:y (meters 3.068)) + (:z (meters 2.414)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:b 0.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 485 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.5) - (:x (meters -1.3333334)) - (:y (meters 0.6666667)) - (:z (meters 1.3)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 16.0) - (:omega 1820.4445) - (:vel-x (meters -0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.5) + (:x (meters -1.3333334)) + (:y (meters 0.6666667)) + (:z (meters 1.3)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 16.0) + (:omega 1820.4445) + (:vel-x (meters -0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 486 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters -0.425)) - (:y (meters 3.792)) - (:z (meters 2.391)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters -0.425)) + (:y (meters 3.792)) + (:z (meters 2.391)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 487 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -0.8888889)) - (:y (meters 1.3333334)) - (:z (meters 1.1)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 16.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -0.8888889)) + (:y (meters 1.3333334)) + (:z (meters 1.1)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 16.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 488 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 2.893)) - (:y (meters 3.56)) - (:z (meters 3.058)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 2.893)) + (:y (meters 3.56)) + (:z (meters 3.058)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 489 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 2.6666667)) - (:y (meters -1.3333334)) - (:z (meters 0.75)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 12.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 2.6666667)) + (:y (meters -1.3333334)) + (:z (meters 0.75)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 12.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 490 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 2.482)) - (:y (meters 4.296)) - (:z (meters 3.058)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 2.482)) + (:y (meters 4.296)) + (:z (meters 3.058)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 491 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 2.6666667)) - (:y (meters -0.44444445)) - (:z (meters 1)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 12.0) - (:omega 0.0) - (:vel-x (meters -0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 2.6666667)) + (:y (meters -0.44444445)) + (:z (meters 1)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 12.0) + (:omega 0.0) + (:vel-x (meters -0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 492 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 2.538)) - (:y (meters 4.979)) - (:z (meters 3.058)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 2.538)) + (:y (meters 4.979)) + (:z (meters 3.058)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 493 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0.22222222)) - (:z (meters 0.9)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 12.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0.22222222)) + (:z (meters 0.9)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 12.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 494 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 11.611)) - (:y (meters 2.762)) - (:z (meters -9.223)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 11.611)) + (:y (meters 2.762)) + (:z (meters -9.223)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 495 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -0.6666667)) - (:y (meters -1.1111112)) - (:z (meters 2)) - (:scale-x (meters 2.75)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 12.0 24.0) - (:omega 0.0) - (:vel-x (meters -0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -0.6666667)) + (:y (meters -1.1111112)) + (:z (meters 2)) + (:scale-x (meters 2.75)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 12.0 24.0) + (:omega 0.0) + (:vel-x (meters -0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 496 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 11.543)) - (:y (meters 2.356)) - (:z (meters -12.283)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 11.543)) + (:y (meters 2.356)) + (:z (meters -12.283)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 497 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 4.888889)) - (:y (meters 0.9777778)) - (:z (meters 1.85)) - (:scale-x (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 12.0 24.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 4.888889)) + (:y (meters 0.9777778)) + (:z (meters 1.85)) + (:scale-x (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 12.0 24.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 498 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 11.588)) - (:y (meters 6.887)) - (:z (meters -10.833)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 11.588)) + (:y (meters 6.887)) + (:z (meters -10.833)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 499 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -0.35555556)) - (:y (meters -1.3333334)) - (:z (meters 1.75)) - (:scale-x (meters 2.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 10.0 20.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -0.35555556)) + (:y (meters -1.3333334)) + (:z (meters 1.75)) + (:scale-x (meters 2.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 10.0 20.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpartgroup group-village1-sagehut-drips :id 139 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 500 :fade-after (meters 40) :period (seconds 2.245) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 50) :period (seconds 3.455) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 60) :period (seconds 5.24) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 40) :period (seconds 7.195) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 50) :period (seconds 9.777) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 60) :period (seconds 16.097) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 40) :period (seconds 21.167) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 40) :period (seconds 2.865) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 50) :period (seconds 3.365) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 60) :period (seconds 4.575) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 40) :period (seconds 7.025) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 50) :period (seconds 8.967) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 60) :period (seconds 13.765) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 40) :period (seconds 24.165) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 500 :fade-after (meters 40) :period (seconds 2.245) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 50) :period (seconds 3.455) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 60) :period (seconds 5.24) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 40) :period (seconds 7.195) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 50) :period (seconds 9.777) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 60) :period (seconds 16.097) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 40) :period (seconds 21.167) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 40) :period (seconds 2.865) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 50) :period (seconds 3.365) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 60) :period (seconds 4.575) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 40) :period (seconds 7.025) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 50) :period (seconds 8.967) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 60) :period (seconds 13.765) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 40) :period (seconds 24.165) :length (seconds 0.017)))) (defpart 502 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 2.0 6.0) - (:sound (static-sound-spec "drip-on-wood" :volume 50.0)) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:g 96.0 128.0) - (:b 0.0 64.0) - (:a 128.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:fade-a -0.5688889) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 5) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 2.0 6.0) + (:sound (static-sound-spec "drip-on-wood" :volume 50.0)) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:g 96.0 128.0) + (:b 0.0 64.0) + (:a 128.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:fade-a -0.5688889) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 5) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 503 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:g 96.0 128.0) - (:b 0.0 64.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.01) (meters 0.01)) - (:scalevel-y (meters 0.01) (meters 0.01)) - (:fade-a -0.7111111) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:g 96.0 128.0) + (:b 0.0 64.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:scalevel-y (meters 0.01) (meters 0.01)) + (:fade-a -0.7111111) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 500 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -0.9)) - (:y (meters 8.825)) - (:z (meters -2.5)) - (:scale-x (meters 0.18)) - (:scale-y :copy scale-x) - (:g 96.0 128.0) - (:b 0.0 64.0) - (:a 96.0 32.0) - (:vel-x (meters -0.00125)) - (:vel-y (meters -0.001375)) - (:vel-z (meters 0.0017333332)) - (:scalevel-x (meters -0.00008333333)) - (:scalevel-y (meters 0.00016666666)) - (:timer (seconds 6)) - (:flags (bit3)) - (:userdata 189644.8) - (:func 'check-drop-level-sagehut) - (:next-time (seconds 2) (seconds 0.997)) - (:next-launcher 504) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -0.9)) + (:y (meters 8.825)) + (:z (meters -2.5)) + (:scale-x (meters 0.18)) + (:scale-y :copy scale-x) + (:g 96.0 128.0) + (:b 0.0 64.0) + (:a 96.0 32.0) + (:vel-x (meters -0.00125)) + (:vel-y (meters -0.001375)) + (:vel-z (meters 0.0017333332)) + (:scalevel-x (meters -0.00008333333)) + (:scalevel-y (meters 0.00016666666)) + (:timer (seconds 6)) + (:flags (bit3)) + (:userdata 189644.8) + (:func 'check-drop-level-sagehut) + (:next-time (seconds 2) (seconds 0.997)) + (:next-launcher 504))) (defpart 504 - :init-specs ((:scalevel-y (meters 0.00033333333)) (:accel-x (meters 0.000033333334)) (:accel-y (meters -0.0005))) - ) + :init-specs ((:scalevel-y (meters 0.00033333333)) (:accel-x (meters 0.000033333334)) (:accel-y (meters -0.0005)))) (defpart 501 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -3.25)) - (:y (meters 5.55)) - (:z (meters 3)) - (:scale-x (meters 0.18)) - (:scale-y :copy scale-x) - (:g 96.0 128.0) - (:b 0.0 64.0) - (:a 0.0 32.0) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y (meters 0.0005)) - (:fade-a 0.32) - (:timer (seconds 4)) - (:flags (bit3)) - (:userdata 189644.8) - (:func 'check-drop-level-sagehut) - (:next-time (seconds 1)) - (:next-launcher 505) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -3.25)) + (:y (meters 5.55)) + (:z (meters 3)) + (:scale-x (meters 0.18)) + (:scale-y :copy scale-x) + (:g 96.0 128.0) + (:b 0.0 64.0) + (:a 0.0 32.0) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y (meters 0.0005)) + (:fade-a 0.32) + (:timer (seconds 4)) + (:flags (bit3)) + (:userdata 189644.8) + (:func 'check-drop-level-sagehut) + (:next-time (seconds 1)) + (:next-launcher 505))) (defpart 505 - :init-specs ((:accel-y (meters -0.00076666666))) - ) + :init-specs ((:accel-y (meters -0.00076666666)))) (defun check-drop-level-sagehut ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 502) gp-0 :rate 1.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 503) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 503) gp-0 :rate 1.0))) + (none)) (defpartgroup group-village1-sagehut-warpgate :id 140 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1970 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1971 :fade-after (meters 60) :falloff-to (meters 100) :binding 1968) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1972 :fade-after (meters 60) :falloff-to (meters 100) :binding 1969) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1973 :fade-after (meters 100) :flags (is-3d)) - ) - ) + :parts + ((sp-item 1970 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1971 :fade-after (meters 60) :falloff-to (meters 100) :binding 1968) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1972 :fade-after (meters 60) :falloff-to (meters 100) :binding 1969) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1973 :fade-after (meters 100) :flags (is-3d)))) (defpart 1973 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.5) - (:x (meters 0)) - (:scale-x (meters 5)) - (:rot-x (degrees 90)) - (:rot-z (degrees 105)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0 64.0) - (:timer (seconds 0.035)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.5) + (:x (meters 0)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-z (degrees 105)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0 64.0) + (:timer (seconds 0.035)) + (:flags (bit3 bit14)))) (defpart 1972 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -35)))) (defpart 1969 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters 2.4444444)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters 2.4444444)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 1970 - :init-specs ((:num 3.0 3.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 2.968116) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:num 3.0 3.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 2.968116) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees -35)))) (defpart 1971 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:accel-x (meters 0.000016666667)) - (:timer (seconds 2.3)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:accel-x (meters 0.000016666667)) + (:timer (seconds 2.3)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -35)))) (defpart 1968 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters 2.4444444)) - (:y (meters 4)) - (:z (meters 2.4)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0034999999)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.21333334) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters 2.4444444)) + (:y (meters 4)) + (:z (meters 2.4)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0034999999)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.21333334) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpartgroup group-village1-misty-fog :id 141 :flags (always-draw) :bounds (static-bspherem 0 10 0 260) - :parts ((sp-item 511)) - ) + :parts ((sp-item 511))) (defpart 511 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.04) - (:y (meters 45)) - (:scale-x (meters 300) (meters 100)) - (:scale-y (meters 100)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.016666668)) - (:scalevel-x (meters 0.025)) - (:fade-a 0.10666667) - (:timer (seconds 6)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.5) (seconds 0.497)) - (:next-launcher 512) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 120) (degrees 200.00002)) - (:conerot-radius (meters 250) (meters 50)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.04) + (:y (meters 45)) + (:scale-x (meters 300) (meters 100)) + (:scale-y (meters 100)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.016666668)) + (:scalevel-x (meters 0.025)) + (:fade-a 0.10666667) + (:timer (seconds 6)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.5) (seconds 0.497)) + (:next-launcher 512) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 120) (degrees 200.00002)) + (:conerot-radius (meters 250) (meters 50)))) (defpart 512 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.497)) (:next-launcher 513)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.497)) (:next-launcher 513))) (defpart 513 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpartgroup group-village1-training-spouts :id 684 :flags (always-draw) :bounds (static-bspherem 0 10 0 12) - :parts ((sp-item 2844 :period (seconds 15) :length (seconds 4)) - (sp-item 2845 :period (seconds 15) :length (seconds 4) :offset 4050) - (sp-item 2846 :period (seconds 15) :length (seconds 4) :offset 1500) - (sp-item 2847 :period (seconds 15) :length (seconds 4) :offset 1050) - (sp-item 2848 :period (seconds 15) :length (seconds 4) :offset 3000) - (sp-item 2849 :period (seconds 15) :length (seconds 4) :offset 2550) - ) - ) + :parts + ((sp-item 2844 :period (seconds 15) :length (seconds 4)) + (sp-item 2845 :period (seconds 15) :length (seconds 4) :offset 4050) + (sp-item 2846 :period (seconds 15) :length (seconds 4) :offset 1500) + (sp-item 2847 :period (seconds 15) :length (seconds 4) :offset 1050) + (sp-item 2848 :period (seconds 15) :length (seconds 4) :offset 3000) + (sp-item 2849 :period (seconds 15) :length (seconds 4) :offset 2550))) (defpart 2848 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.06) - (:x (meters 60)) - (:y (meters -8)) - (:z (meters -155)) - (:scale-x (meters 8)) - (:rot-z (degrees 180)) - (:scale-y (meters 64)) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 32.0 32.0) - (:vel-y (meters 0.36666667) (meters 0.033333335)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y (meters -0.035555556)) - (:accel-y (meters -0.004)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:next-time (seconds 1.7)) - (:next-launcher 2850) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.06) + (:x (meters 60)) + (:y (meters -8)) + (:z (meters -155)) + (:scale-x (meters 8)) + (:rot-z (degrees 180)) + (:scale-y (meters 64)) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 32.0 32.0) + (:vel-y (meters 0.36666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y (meters -0.035555556)) + (:accel-y (meters -0.004)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:next-time (seconds 1.7)) + (:next-launcher 2850) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2849 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.25) - (:x (meters 60)) - (:y (meters 95) (meters 20)) - (:z (meters -155)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.07111111)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2851) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.25) + (:x (meters 60)) + (:y (meters 95) (meters 20)) + (:z (meters -155)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.07111111)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2851) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2846 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.06) - (:x (meters 0)) - (:y (meters -8)) - (:z (meters 0)) - (:scale-x (meters 8)) - (:rot-z (degrees 180)) - (:scale-y (meters 64)) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 32.0 32.0) - (:vel-y (meters 0.36666667) (meters 0.033333335)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y (meters -0.035555556)) - (:accel-y (meters -0.004)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:next-time (seconds 1.7)) - (:next-launcher 2850) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.06) + (:x (meters 0)) + (:y (meters -8)) + (:z (meters 0)) + (:scale-x (meters 8)) + (:rot-z (degrees 180)) + (:scale-y (meters 64)) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 32.0 32.0) + (:vel-y (meters 0.36666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y (meters -0.035555556)) + (:accel-y (meters -0.004)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:next-time (seconds 1.7)) + (:next-launcher 2850) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2847 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.25) - (:x (meters 0)) - (:y (meters 95) (meters 20)) - (:z (meters 0)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.07111111)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2851) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.25) + (:x (meters 0)) + (:y (meters 95) (meters 20)) + (:z (meters 0)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.07111111)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2851) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2844 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.06) - (:x (meters -100)) - (:y (meters -8)) - (:z (meters 0)) - (:scale-x (meters 8)) - (:rot-z (degrees 180)) - (:scale-y (meters 64)) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 32.0 32.0) - (:vel-y (meters 0.36666667) (meters 0.033333335)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y (meters -0.035555556)) - (:accel-y (meters -0.004)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:next-time (seconds 1.7)) - (:next-launcher 2850) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.06) + (:x (meters -100)) + (:y (meters -8)) + (:z (meters 0)) + (:scale-x (meters 8)) + (:rot-z (degrees 180)) + (:scale-y (meters 64)) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 32.0 32.0) + (:vel-y (meters 0.36666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y (meters -0.035555556)) + (:accel-y (meters -0.004)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:next-time (seconds 1.7)) + (:next-launcher 2850) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2850 - :init-specs ((:scalevel-x (meters 0.06666667)) (:fade-a -1.0666667)) - ) + :init-specs ((:scalevel-x (meters 0.06666667)) (:fade-a -1.0666667))) (defpart 2845 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.25) - (:x (meters -100)) - (:y (meters 95) (meters 20)) - (:z (meters 0)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.07111111)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2851) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.25) + (:x (meters -100)) + (:y (meters 95) (meters 20)) + (:z (meters 0)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.07111111)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2851) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2851 - :init-specs ((:fade-a -0.03678161)) - ) + :init-specs ((:fade-a -0.03678161))) (defpartgroup group-village1-trans-pad :id 142 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 514 :fade-after (meters 160)) - (sp-item 515 :fade-after (meters 160)) - (sp-item 516 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)) - ) - ) + :parts + ((sp-item 514 :fade-after (meters 160)) + (sp-item 515 :fade-after (meters 160)) + (sp-item 516 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)))) (defpart 514 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 5)) - (:scale-x (meters 10) (meters 1)) - (:scale-y (meters 10)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 32.0 32.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 5)) + (:scale-x (meters 10) (meters 1)) + (:scale-y (meters 10)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 32.0 32.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 515 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 3)) - (:scale-x (meters 5) (meters 1)) - (:scale-y (meters 10)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 3)) + (:scale-x (meters 5) (meters 1)) + (:scale-y (meters 10)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 516 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.75) (meters 0.1)) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 15)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0) - (:g 0.0 127.0) - (:b 127.0) - (:a 127.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-y (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00015)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.75) (meters 0.1)) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 15)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0) + (:g 0.0 127.0) + (:b 127.0) + (:a 127.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-y (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00015)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3)))) diff --git a/goal_src/jak1/levels/village1/yakow.gc b/goal_src/jak1/levels/village1/yakow.gc index 00d20b1dad..b1442d04d0 100644 --- a/goal_src/jak1/levels/village1/yakow.gc +++ b/goal_src/jak1/levels/village1/yakow.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/nav/navigate.gc") (require "engine/gfx/shadow/shadow-cpu.gc") (require "engine/anim/aligner-h.gc") @@ -10,233 +9,173 @@ (require "engine/common-obs/water.gc") (require "engine/common-obs/collectables.gc") (require "engine/camera/pov-camera-h.gc") - -;; name: yakow.gc -;; name in dgo: yakow -;; dgos: L1, VI1 - (declare-type yakow process-drawable) ;; DECOMP BEGINS -(defskelgroup *village1cam-sg* village1cam village1cam-lod0-jg village1cam-anim-ja - ((village1cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *village1cam-sg* + village1cam + village1cam-lod0-jg + village1cam-anim-ja + ((village1cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defun yakow-cam () (with-pp (let ((gp-0 (entity-actor-lookup (-> pp entity) 'alt-actor 0))) - (if gp-0 - (process-spawn pov-camera (-> gp-0 extra trans) *village1cam-sg* "anim" 0 #f '() :to pp) - ) - ) - (none) - ) - ) + (if gp-0 (process-spawn pov-camera (-> gp-0 extra trans) *village1cam-sg* "anim" 0 #f '() :to pp))) + (none))) (deftype yakow-bank (basic) - ((walk-cycle-frame-count float) - (run-cycle-frame-count float) - (walk-speed meters) - (run-speed meters) - (walk-anim-speed float) - (run-anim-speed float) - (walk-away-dist meters) - (run-away-dist meters) - (walk-rotate-speed float) - (run-rotate-speed float) - (walk-turn-time time-frame) - (run-turn-time time-frame) - (max-walk-speed float) - (min-run-speed float) - (walk-run-blend-rate float) - (walk-turn-blend-rate float) - (max-run-speed float) - (acceleration meters) - (default-patrol-time time-frame) - (default-idle-distance meters) - (safe-distance meters) - (min-run-anim-speed float) - (max-run-anim-speed float) - (min-walk-anim-speed float) - (speed-boost-impulse meters) - ) - ) - - -(define *YAKOW-bank* (new 'static 'yakow-bank - :walk-cycle-frame-count 16.0 - :run-cycle-frame-count 16.0 - :walk-speed (meters 2.13) - :run-speed (meters 6) - :walk-anim-speed 1.0 - :run-anim-speed 2.0 - :walk-away-dist (meters 10) - :run-away-dist (meters 6) - :walk-rotate-speed 131072.0 - :run-rotate-speed 131072.0 - :walk-turn-time (seconds 0.5) - :run-turn-time (seconds 0.2) - :max-walk-speed 16384.0 - :min-run-speed 15155.2 - :walk-run-blend-rate 6.0 - :walk-turn-blend-rate 4.0 - :max-run-speed 61440.0 - :acceleration (meters 3) - :default-patrol-time (seconds 1) - :default-idle-distance (meters 10) - :safe-distance (meters 20) - :min-run-anim-speed 0.5 - :max-run-anim-speed 1.5 - :min-walk-anim-speed 0.5 - :speed-boost-impulse (meters 4) - ) - ) + ((walk-cycle-frame-count float) + (run-cycle-frame-count float) + (walk-speed meters) + (run-speed meters) + (walk-anim-speed float) + (run-anim-speed float) + (walk-away-dist meters) + (run-away-dist meters) + (walk-rotate-speed float) + (run-rotate-speed float) + (walk-turn-time time-frame) + (run-turn-time time-frame) + (max-walk-speed float) + (min-run-speed float) + (walk-run-blend-rate float) + (walk-turn-blend-rate float) + (max-run-speed float) + (acceleration meters) + (default-patrol-time time-frame) + (default-idle-distance meters) + (safe-distance meters) + (min-run-anim-speed float) + (max-run-anim-speed float) + (min-walk-anim-speed float) + (speed-boost-impulse meters))) + +(define *YAKOW-bank* + (new 'static + 'yakow-bank + :walk-cycle-frame-count 16.0 + :run-cycle-frame-count 16.0 + :walk-speed (meters 2.13) + :run-speed (meters 6) + :walk-anim-speed 1.0 + :run-anim-speed 2.0 + :walk-away-dist (meters 10) + :run-away-dist (meters 6) + :walk-rotate-speed 131072.0 + :run-rotate-speed 131072.0 + :walk-turn-time (seconds 0.5) + :run-turn-time (seconds 0.2) + :max-walk-speed 16384.0 + :min-run-speed 15155.2 + :walk-run-blend-rate 6.0 + :walk-turn-blend-rate 4.0 + :max-run-speed 61440.0 + :acceleration (meters 3) + :default-patrol-time (seconds 1) + :default-idle-distance (meters 10) + :safe-distance (meters 20) + :min-run-anim-speed 0.5 + :max-run-anim-speed 1.5 + :min-walk-anim-speed 0.5 + :speed-boost-impulse (meters 4))) (deftype yakow (process-drawable) - ((root collide-shape-moving :override) - (fact fact-info-enemy :override) - (player-attack-id int32) - (walk-run-blend float) - (walk-turn-blend float) - (run-mode basic) - (travel-speed meters) - (final-speed meters) - (rotate-speed float) - (turn-time time-frame) - (vulnerable basic) - (grazing basic) - (push-velocity vector :inline) - (home-base vector :inline) - (dest-base vector :inline) - (dest-rot degrees) - (enable-turn-around basic) - (rotating basic) - (in-pen basic) - ) + ((root collide-shape-moving :override) + (fact fact-info-enemy :override) + (player-attack-id int32) + (walk-run-blend float) + (walk-turn-blend float) + (run-mode basic) + (travel-speed meters) + (final-speed meters) + (rotate-speed float) + (turn-time time-frame) + (vulnerable basic) + (grazing basic) + (push-velocity vector :inline) + (home-base vector :inline) + (dest-base vector :inline) + (dest-rot degrees) + (enable-turn-around basic) + (rotating basic) + (in-pen basic)) (:states - yakow-die - yakow-graze - yakow-graze-kicked - yakow-idle - yakow-kicked - yakow-notice - yakow-run-away - (yakow-walk-to vector) - ) - ) - - -(defskelgroup *yakow-sg* yakow yakow-lod0-jg yakow-idle-ja - ((yakow-lod0-mg (meters 20)) (yakow-lod1-mg (meters 999999))) - :bounds (static-spherem 0 2.5 0 4.4) - :longest-edge (meters 1.3) - :shadow yakow-shadow-mg - ) + yakow-die + yakow-graze + yakow-graze-kicked + yakow-idle + yakow-kicked + yakow-notice + yakow-run-away + (yakow-walk-to vector))) + +(defskelgroup *yakow-sg* + yakow + yakow-lod0-jg + yakow-idle-ja + ((yakow-lod0-mg (meters 20)) (yakow-lod1-mg (meters 999999))) + :bounds (static-spherem 0 2.5 0 4.4) + :longest-edge (meters 1.3) + :shadow yakow-shadow-mg) (defbehavior yakow-default-event-handler yakow ((arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch) (let* ((s4-0 arg0) - (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) + (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) (when (and v1-2 (< 8192.0 (- (-> v1-2 root trans y) (-> self root trans y)))) (do-push-aways! (-> self root)) - (send-shove-back (-> self root) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0) - ) - ) - ) + (send-shove-back (-> self root) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0)))) (('attack) (let ((v1-9 (-> arg3 param 2))) (cond ((!= v1-9 (-> self player-attack-id)) (set! (-> self player-attack-id) (the-as int v1-9)) - (if (-> self vulnerable) - (go yakow-kicked) - ) - ) - (else - 'push - ) - ) - ) - ) - ) - ) + (if (-> self vulnerable) (go yakow-kicked))) + (else 'push)))))) yakow-default-event-handler (defbehavior yakow-task-complete? yakow ((arg0 symbol)) (local-vars (sv-16 symbol) (sv-20 (pointer process-tree))) - (let ((gp-0 - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) - ) + (let ((gp-0 (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))))) (if arg0 - (process-entity-status! self (entity-perm-status complete) #t) - (process-entity-status! self (entity-perm-status complete) #f) - ) + (process-entity-status! self (entity-perm-status complete) #t) + (process-entity-status! self (entity-perm-status complete) #f)) (when (or (-> self link prev) (-> self link next)) (set! sv-16 (the-as symbol #f)) (set! sv-20 (-> self child)) (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) (cond (sv-16 - (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) - (close-specific-task! (-> self entity extra perm task) (task-status need-introduction)) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (if gp-0 - (yakow-cam) - ) - ;; og:preserve-this PAL patch here - (process-spawn-function - process - (lambda :behavior process - () - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - ) - (suspend) - ) - (level-hint-spawn - (text-id village1-yakow-resolution) - "sksp018a" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - :to self - ) - ) - (else - (open-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - ) - ) - sv-16 - ) - ) - ) + (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) + (close-specific-task! (-> self entity extra perm task) (task-status need-introduction)) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (if gp-0 (yakow-cam)) + ;; og:preserve-this PAL patch here + (process-spawn-function process + (lambda :behavior process () + (while (or (-> *setting-control* current ambient) (-> *setting-control* current movie) (-> *setting-control* current hint)) + (suspend)) + (level-hint-spawn (text-id village1-yakow-resolution) "sksp018a" (the-as entity #f) *entity-pool* (game-task none))) + :to + self)) + (else (open-specific-task! (-> self entity extra perm task) (task-status need-reminder)))) + sv-16))) (defbehavior yakow-common-post yakow () (update-direction-from-time-of-day (-> self draw shadow-ctrl)) - (if *target* - (look-at-enemy! (-> *target* neck) (the-as vector (-> self root root-prim prim-core)) #f self) - ) + (if *target* (look-at-enemy! (-> *target* neck) (the-as vector (-> self root root-prim prim-core)) #f self)) (ja-post) - (none) - ) + (none)) (defbehavior yakow-simple-post yakow () (yakow-common-post) (update-transforms! (-> self root)) - (none) - ) + (none)) (defbehavior yakow-post yakow () (nav-control-method-11 (-> self nav) (-> self nav target-pos)) @@ -244,62 +183,43 @@ yakow-default-event-handler (let ((f30-0 0.0)) (when (< 40.96 (vector-length (-> self nav travel))) (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (vector-z-quaternion! s5-0 (-> self root quat)) (seek-toward-heading-vec! (-> self root) (-> self nav travel) (-> self rotate-speed) (-> self turn-time)) (vector-z-quaternion! gp-0 (-> self root quat)) (set! (-> self rotating) (< (vector-dot gp-0 s5-0) (cos (* 8192.0 (seconds-per-frame))))) (when (-> self rotating) - (let ((v1-16 (new 'stack-no-clear 'vector))) - (vector-cross! v1-16 gp-0 s5-0) - (set! f30-0 (sign (-> v1-16 y))) - ) - ) - ) - ) - (seek! (-> self walk-turn-blend) f30-0 (* (-> *YAKOW-bank* walk-turn-blend-rate) (seconds-per-frame))) - ) + (let ((v1-16 (new 'stack-no-clear 'vector))) (vector-cross! v1-16 gp-0 s5-0) (set! f30-0 (sign (-> v1-16 y))))))) + (seek! (-> self walk-turn-blend) f30-0 (* (-> *YAKOW-bank* walk-turn-blend-rate) (seconds-per-frame)))) (set! (-> self final-speed) - (fmin (-> self travel-speed) (* (vector-length (-> self nav travel)) (-> *display* frames-per-second))) - ) + (fmin (-> self travel-speed) (* (vector-length (-> self nav travel)) (-> *display* frames-per-second)))) (let ((v1-24 (vector-normalize-copy! (new-stack-vector0) (-> self nav travel) (-> self final-speed)))) (set! (-> self root transv x) (-> v1-24 x)) - (set! (-> self root transv z) (-> v1-24 z)) - ) + (set! (-> self root transv z) (-> v1-24 z))) (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0)) (let ((gp-2 (new 'stack-no-clear 'vector))) (set! (-> gp-2 quad) (-> self root trans quad)) - (integrate-for-enemy-with-move-to-ground! - (-> self root) - (-> self root transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (set! (-> self final-speed) - (* (vector-vector-xz-distance gp-2 (-> self root trans)) (-> *display* frames-per-second)) - ) - ) + (integrate-for-enemy-with-move-to-ground! (-> self root) + (-> self root transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (set! (-> self final-speed) (* (vector-vector-xz-distance gp-2 (-> self root trans)) (-> *display* frames-per-second)))) (set! (-> self travel-speed) (fmin (-> self travel-speed) (-> self final-speed))) (water-control-method-10 (-> self water)) (when (and (logtest? (-> self nav current-poly pat) 2) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))) (set! (-> self in-pen) #t) (set! (-> self nav destination-pos quad) (-> self dest-base quad)) - (yakow-task-complete? #t) - ) + (yakow-task-complete? #t)) (yakow-common-post) - (none) - ) + (none)) (defbehavior yakow-generate-travel-vector yakow () (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (target-pos 0))) - (s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat))) - ) + (s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat)))) 0.0 0.0 (set! (-> gp-1 y) 0.0) @@ -310,24 +230,17 @@ yakow-default-event-handler (set! (-> gp-1 quad) (-> self nav travel quad)) (let ((f30-0 (vector-length gp-1))) (vector-normalize! gp-1 1.0) - (if (and (< 409.6 f30-0) (>= (vector-dot s5-1 gp-1) (cos 10922.667))) - (set! (-> s5-1 quad) (-> gp-1 quad)) - ) - ) + (if (and (< 409.6 f30-0) (>= (vector-dot s5-1 gp-1) (cos 10922.667))) (set! (-> s5-1 quad) (-> gp-1 quad)))) (set! (-> self nav travel quad) (-> s5-1 quad)) (vector-normalize! (-> self nav travel) 409600.0) (nav-control-method-24 (-> self nav) 204.8 (the-as clip-travel-vector-to-mesh-return-info #f)) - (vector-length (-> self nav travel)) - ) - ) - (vector+! (-> self nav target-pos) (-> self root trans) (-> self nav travel)) - ) + (vector-length (-> self nav travel)))) + (vector+! (-> self nav target-pos) (-> self root trans) (-> self nav travel))) (defbehavior yakow-run-post yakow () (yakow-generate-travel-vector) (yakow-post) - (none) - ) + (none)) (defbehavior yakow-blend-walk-run yakow () (let ((gp-0 (current-time))) @@ -335,420 +248,277 @@ yakow-default-event-handler (let ((f30-0 (-> self final-speed))) (cond ((and (>= 409.6 (-> self final-speed)) (not (-> self rotating))) - (if (not (ja-group? yakow-idle-ja)) - (ja-channel-push! 1 (seconds 0.15)) - ) + (if (not (ja-group? yakow-idle-ja)) (ja-channel-push! 1 (seconds 0.15))) (ja :group! yakow-idle-ja :num! min) (while (or (not (time-elapsed? gp-0 (seconds 0.2))) (< (-> self final-speed) 409.6)) (suspend) - (ja :num! (loop!)) - ) - ) - (else - (set! gp-0 (current-time)) - ) - ) + (ja :num! (loop!)))) + (else (set! gp-0 (current-time)))) (when (not (ja-group? yakow-walk-ja)) (ja-channel-push! 3 (seconds 0.075)) (ja :group! yakow-walk-ja :num! min :frame-interp 0.0) (ja :chan 1 :group! yakow-walk-left-ja :num! min :frame-interp 0.0) - (ja :chan 2 :group! yakow-run-ja :num! min :frame-interp 0.0) - ) - (if (< (-> self walk-turn-blend) 0.0) - (ja :chan 1 :group! yakow-walk-left-ja) - (ja :chan 1 :group! yakow-walk-right-ja) - ) + (ja :chan 2 :group! yakow-run-ja :num! min :frame-interp 0.0)) + (if (< (-> self walk-turn-blend) 0.0) (ja :chan 1 :group! yakow-walk-left-ja) (ja :chan 1 :group! yakow-walk-right-ja)) (cond - ((< f30-0 (-> *YAKOW-bank* min-run-speed)) - (set! (-> self run-mode) #f) - ) - ((< (-> *YAKOW-bank* max-walk-speed) f30-0) - (set! (-> self run-mode) #t) - ) - ) + ((< f30-0 (-> *YAKOW-bank* min-run-speed)) (set! (-> self run-mode) #f)) + ((< (-> *YAKOW-bank* max-walk-speed) f30-0) (set! (-> self run-mode) #t))) (if (-> self run-mode) - (seek! (-> self walk-run-blend) 1.0 (* (-> *YAKOW-bank* walk-run-blend-rate) (seconds-per-frame))) - (seek! (-> self walk-run-blend) 0.0 (* (-> *YAKOW-bank* walk-run-blend-rate) (seconds-per-frame))) - ) + (seek! (-> self walk-run-blend) 1.0 (* (-> *YAKOW-bank* walk-run-blend-rate) (seconds-per-frame))) + (seek! (-> self walk-run-blend) 0.0 (* (-> *YAKOW-bank* walk-run-blend-rate) (seconds-per-frame)))) (ja :chan 1 :frame-interp (fabs (-> self walk-turn-blend))) (ja :chan 2 :frame-interp (-> self walk-run-blend)) (let* ((f0-25 (* (-> *YAKOW-bank* walk-anim-speed) f30-0)) (f1-5 (-> *YAKOW-bank* walk-speed)) - (f0-26 (* f0-25 (/ 1.0 f1-5))) - ) + (f0-26 (* f0-25 (/ 1.0 f1-5)))) (let* ((f1-9 (* (-> *YAKOW-bank* run-anim-speed) f30-0)) (f2-1 (-> *YAKOW-bank* run-speed)) - (f1-12 - (fmax (fmin (* f1-9 (/ 1.0 f2-1)) (-> *YAKOW-bank* max-run-anim-speed)) (-> *YAKOW-bank* min-run-anim-speed)) - ) - ) - (if (-> self run-mode) - (set! f0-26 f1-12) - ) - ) - (if (-> self rotating) - (set! f0-26 (fmax (-> *YAKOW-bank* min-walk-anim-speed) f0-26)) - ) - (ja :num! (loop! f0-26)) - ) - ) + (f1-12 (fmax (fmin (* f1-9 (/ 1.0 f2-1)) (-> *YAKOW-bank* max-run-anim-speed)) (-> *YAKOW-bank* min-run-anim-speed)))) + (if (-> self run-mode) (set! f0-26 f1-12))) + (if (-> self rotating) (set! f0-26 (fmax (-> *YAKOW-bank* min-walk-anim-speed) f0-26))) + (ja :num! (loop! f0-26)))) (ja :chan 1 :num-func num-func-identity :frame-num (ja-frame-num 0)) (ja :chan 2 :num-func num-func-identity :frame-num (ja-frame-num 0)) (suspend) - 0 - ) - ) - (none) - ) + 0)) + (none)) (defbehavior yakow-facing-direction? yakow ((arg0 vector) (arg1 float)) (let ((s4-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat))) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> arg0 quad)) (set! (-> s5-0 y) 0.0) (vector-normalize! s5-0 1.0) - (>= (vector-dot s4-0 s5-0) (cos arg1)) - ) - ) + (>= (vector-dot s4-0 s5-0) (cos arg1)))) (defbehavior yakow-facing-point? yakow ((arg0 vector) (arg1 float)) - (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> self root trans)))) - (yakow-facing-direction? v1-1 arg1) - ) - ) + (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> self root trans)))) (yakow-facing-direction? v1-1 arg1))) (defbehavior yakow-facing-player? yakow ((arg0 float)) - (yakow-facing-point? (target-pos 0) arg0) - ) + (yakow-facing-point? (target-pos 0) arg0)) (defstate yakow-idle (yakow) :event yakow-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self travel-speed) 0.0) - ) - :trans (behavior () - (if (and (time-elapsed? (-> self state-time) (-> *YAKOW-bank* default-patrol-time)) - (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (not (yakow-facing-player? 21845.334)) - ) - (go yakow-notice) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.15)) - (loop - (cond - ((rand-vu-percent? 0.2) - (effect-control-method-10 (-> self skel effect) 'yakow-1 0.0 -1) - ) - ((rand-vu-percent? 0.2) - (effect-control-method-10 (-> self skel effect) 'yakow-2 0.0 -1) - ) - ) - (let ((f30-0 (rand-vu-float-range 0.9 1.1))) - (ja-no-eval :group! yakow-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (when (rand-vu-percent? 0.25) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! yakow-graze-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - ) - :post ja-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self travel-speed) 0.0)) + :trans + (behavior () + (if (and (time-elapsed? (-> self state-time) (-> *YAKOW-bank* default-patrol-time)) + (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (yakow-facing-player? 21845.334))) + (go yakow-notice))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.15)) + (loop + (cond + ((rand-vu-percent? 0.2) (effect-control-method-10 (-> self skel effect) 'yakow-1 0.0 -1)) + ((rand-vu-percent? 0.2) (effect-control-method-10 (-> self skel effect) 'yakow-2 0.0 -1))) + (let ((f30-0 (rand-vu-float-range 0.9 1.1))) + (ja-no-eval :group! yakow-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (when (rand-vu-percent? 0.25) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! yakow-graze-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))))) + :post ja-post) (defstate yakow-notice (yakow) :event yakow-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self travel-speed) 0.0) - ) - :code (behavior () - (go yakow-run-away) - ) - :post yakow-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self travel-speed) 0.0)) + :code + (behavior () + (go yakow-run-away)) + :post yakow-simple-post) (defstate yakow-walk-to (yakow) :event yakow-default-event-handler - :enter (behavior ((arg0 vector)) - (set-time! (-> self state-time)) - (logior! (-> self nav flags) (nav-control-flags navcf10)) - (set! (-> self nav destination-pos quad) (-> arg0 quad)) - (set! (-> self rotate-speed) (-> *YAKOW-bank* walk-rotate-speed)) - (set! (-> self turn-time) (-> *YAKOW-bank* walk-turn-time)) - ) - :trans (behavior () - (if (and (time-elapsed? (-> self state-time) (-> *YAKOW-bank* default-patrol-time)) - (not (-> self in-pen)) - (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (not (yakow-facing-player? 21845.334)) - ) - (go yakow-notice) - ) - (when (time-elapsed? (-> self state-time) (seconds 0.05)) - (when (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (< (vector-vector-xz-distance (-> self root trans) (-> self nav destination-pos)) 4096.0) - ) - (if (-> self in-pen) - (go yakow-graze) - (go yakow-idle) - ) - ) - ) - (seek! - (-> self travel-speed) - (-> *YAKOW-bank* walk-speed) - (* (-> *YAKOW-bank* acceleration) (seconds-per-frame)) - ) - ) - :code (the-as (function vector object) yakow-blend-walk-run) - :post (behavior () - (nav-control-method-19 - (-> self nav) - (-> self nav target-pos) - (-> self root) - (-> self nav destination-pos) - 131072.0 - ) - (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) - (logclear! (-> self nav flags) (nav-control-flags navcf10)) - ) - (yakow-post) - ) - ) + :enter + (behavior ((arg0 vector)) + (set-time! (-> self state-time)) + (logior! (-> self nav flags) (nav-control-flags navcf10)) + (set! (-> self nav destination-pos quad) (-> arg0 quad)) + (set! (-> self rotate-speed) (-> *YAKOW-bank* walk-rotate-speed)) + (set! (-> self turn-time) (-> *YAKOW-bank* walk-turn-time))) + :trans + (behavior () + (if (and (time-elapsed? (-> self state-time) (-> *YAKOW-bank* default-patrol-time)) + (not (-> self in-pen)) + (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (yakow-facing-player? 21845.334))) + (go yakow-notice)) + (when (time-elapsed? (-> self state-time) (seconds 0.05)) + (when (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) + (< (vector-vector-xz-distance (-> self root trans) (-> self nav destination-pos)) 4096.0)) + (if (-> self in-pen) (go yakow-graze) (go yakow-idle)))) + (seek! (-> self travel-speed) (-> *YAKOW-bank* walk-speed) (* (-> *YAKOW-bank* acceleration) (seconds-per-frame)))) + :code + (the-as (function vector object) + yakow-blend-walk-run) + :post + (behavior () + (nav-control-method-19 (-> self nav) (-> self nav target-pos) (-> self root) (-> self nav destination-pos) 131072.0) + (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) (logclear! (-> self nav flags) (nav-control-flags navcf10))) + (yakow-post))) (defstate yakow-graze (yakow) :event yakow-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self travel-speed) 0.0) - (set! (-> self grazing) #t) - (let ((v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (send-event - (if v1-3 - (-> v1-3 extra process) - ) - 'update - ) - ) - ) - :code (behavior () - (while (< 546.13336 (fabs (deg-diff (-> self dest-rot) (y-angle (-> self root))))) - (if (not (ja-group? yakow-walk-ja)) - (ja-channel-push! 1 (seconds 0.075)) - ) - (seek-toward-yaw-angle! (-> self root) (-> self dest-rot) 16384.0 (seconds 0.5)) - (ja :group! yakow-walk-ja :num! (loop!)) - (suspend) - ) - (ja-channel-push! 1 (seconds 0.15)) - (loop - (ja-no-eval :group! yakow-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (rand-vu-percent? 0.5) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! yakow-graze-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self travel-speed) 0.0) + (set! (-> self grazing) #t) + (let ((v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) (send-event (if v1-3 (-> v1-3 extra process)) 'update))) + :code + (behavior () + (while (< 546.13336 (fabs (deg-diff (-> self dest-rot) (y-angle (-> self root))))) + (if (not (ja-group? yakow-walk-ja)) (ja-channel-push! 1 (seconds 0.075))) + (seek-toward-yaw-angle! (-> self root) (-> self dest-rot) 16384.0 (seconds 0.5)) + (ja :group! yakow-walk-ja :num! (loop!)) + (suspend)) + (ja-channel-push! 1 (seconds 0.15)) + (loop + (ja-no-eval :group! yakow-idle-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - ) - :post yakow-simple-post - ) + (ja :num! (seek!))) + (when (rand-vu-percent? 0.5) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! yakow-graze-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))))) + :post yakow-simple-post) (defstate yakow-graze-kicked (yakow) :event #f - :code (behavior () - (ja-no-eval :group! yakow-kicked-in-place-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go yakow-graze) - ) - :post yakow-simple-post - ) + :code + (behavior () + (ja-no-eval :group! yakow-kicked-in-place-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go yakow-graze)) + :post yakow-simple-post) (defstate yakow-run-away (yakow) :event yakow-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav flags) (nav-control-flags navcf10)) - (set! (-> self rotate-speed) (-> *YAKOW-bank* run-rotate-speed)) - (set! (-> self turn-time) (-> *YAKOW-bank* run-turn-time)) - ) - :trans (behavior () - (when (or (not *target*) - (< (-> *YAKOW-bank* safe-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (if (-> self in-pen) - (go yakow-walk-to (-> self dest-base)) - (go yakow-walk-to (-> self home-base)) - ) - ) - (let* ((f0-2 (* (if (-> self run-mode) - 0.5 - 1.0 - ) - (vector-vector-distance (-> self root trans) (target-pos 0)) - ) - ) - (f30-2 (lerp-scale - (-> *YAKOW-bank* run-speed) - (-> *YAKOW-bank* walk-speed) - f0-2 - (-> *YAKOW-bank* run-away-dist) - (-> *YAKOW-bank* walk-away-dist) - ) - ) - ) - (if (yakow-facing-player? 21845.334) - (set! f30-2 0.0) - ) - (set! (-> self enable-turn-around) (< (-> *YAKOW-bank* run-speed) f30-2)) - (seek! (-> self travel-speed) f30-2 (* (-> *YAKOW-bank* acceleration) (seconds-per-frame))) - ) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav flags) (nav-control-flags navcf10)) + (set! (-> self rotate-speed) (-> *YAKOW-bank* run-rotate-speed)) + (set! (-> self turn-time) (-> *YAKOW-bank* run-turn-time))) + :trans + (behavior () + (when (or (not *target*) + (< (-> *YAKOW-bank* safe-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (if (-> self in-pen) (go yakow-walk-to (-> self dest-base)) (go yakow-walk-to (-> self home-base)))) + (let* ((f0-2 (* (if (-> self run-mode) 0.5 1.0) (vector-vector-distance (-> self root trans) (target-pos 0)))) + (f30-2 (lerp-scale (-> *YAKOW-bank* run-speed) + (-> *YAKOW-bank* walk-speed) + f0-2 + (-> *YAKOW-bank* run-away-dist) + (-> *YAKOW-bank* walk-away-dist)))) + (if (yakow-facing-player? 21845.334) (set! f30-2 0.0)) + (set! (-> self enable-turn-around) (< (-> *YAKOW-bank* run-speed) f30-2)) + (seek! (-> self travel-speed) f30-2 (* (-> *YAKOW-bank* acceleration) (seconds-per-frame))))) :code yakow-blend-walk-run - :post yakow-run-post - ) + :post yakow-run-post) (defstate yakow-kicked (yakow) :event #f - :enter (behavior () - (set-time! (-> self state-time)) - (if (-> self grazing) - (go yakow-graze-kicked) - ) - (set! (-> self travel-speed) - (fmax - (fmin (+ (-> self travel-speed) (-> *YAKOW-bank* speed-boost-impulse)) (-> *YAKOW-bank* max-run-speed)) - (-> *YAKOW-bank* run-speed) - ) - ) - ) - :exit (behavior () - '() - ) - :trans (behavior () - (if (time-elapsed? (-> self state-time) (seconds 0.2)) - (seek! - (-> self travel-speed) - (-> *YAKOW-bank* run-speed) - (* (-> *YAKOW-bank* acceleration) (seconds-per-frame)) - ) - ) - 0 - ) - :code (behavior () - (set! (-> self enable-turn-around) #t) - 1.0 - (suspend) - (ja-channel-push! 1 (seconds 0.05)) - (cond - ((< 40.96 (vector-length (-> self nav travel))) - (ja :group! yakow-kicked-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (let* ((f0-3 0.75) - (f1-0 0.25) - (f2-0 (-> *YAKOW-bank* run-speed)) - (f0-4 (fmax f0-3 (fmin - (* f1-0 (/ 1.0 f2-0) (-> self final-speed) (-> *YAKOW-bank* run-anim-speed)) - (-> *YAKOW-bank* max-run-anim-speed) - ) - ) - ) - ) - (ja :num! (seek! max f0-4)) - ) - ) - ) - (else - (ja-no-eval :group! yakow-kicked-in-place-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (< 40.96 (-> self final-speed)) - (go yakow-run-away) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go yakow-run-away) - ) - :post yakow-run-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (if (-> self grazing) (go yakow-graze-kicked)) + (set! (-> self travel-speed) + (fmax (fmin (+ (-> self travel-speed) (-> *YAKOW-bank* speed-boost-impulse)) (-> *YAKOW-bank* max-run-speed)) + (-> *YAKOW-bank* run-speed)))) + :exit + (behavior () + '()) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (seconds 0.2)) + (seek! (-> self travel-speed) (-> *YAKOW-bank* run-speed) (* (-> *YAKOW-bank* acceleration) (seconds-per-frame)))) + 0) + :code + (behavior () + (set! (-> self enable-turn-around) #t) + 1.0 + (suspend) + (ja-channel-push! 1 (seconds 0.05)) + (cond + ((< 40.96 (vector-length (-> self nav travel))) + (ja :group! yakow-kicked-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (let* ((f0-3 0.75) + (f1-0 0.25) + (f2-0 (-> *YAKOW-bank* run-speed)) + (f0-4 (fmax f0-3 + (fmin (* f1-0 (/ 1.0 f2-0) (-> self final-speed) (-> *YAKOW-bank* run-anim-speed)) (-> *YAKOW-bank* max-run-anim-speed))))) + (ja :num! (seek! max f0-4))))) + (else + (ja-no-eval :group! yakow-kicked-in-place-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (< 40.96 (-> self final-speed)) (go yakow-run-away)) + (suspend) + (ja :num! (seek!))))) + (go yakow-run-away)) + :post yakow-run-post) (defstate yakow-die (yakow) :event #f - :code (behavior () - (let ((v1-1 (-> self root root-prim))) - (set! (-> v1-1 collide-with) (collide-kind)) - (set! (-> v1-1 prim-core collide-as) (collide-kind)) - ) - 0 - (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) - (process-entity-status! self (entity-perm-status dead) #t) - ) - ) + :code + (behavior () + (let ((v1-1 (-> self root root-prim))) + (set! (-> v1-1 collide-with) (collide-kind)) + (set! (-> v1-1 prim-core collide-as) (collide-kind))) + 0 + (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) + (process-entity-status! self (entity-perm-status dead) #t))) (defmethod init-from-entity! ((this yakow) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 10240.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this align) (new 'process 'align-control this)) (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set! (-> this nav nearest-y-threshold) 409600.0) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this fact idle-distance) (-> *YAKOW-bank* default-idle-distance)) (initialize-skeleton this *yakow-sg* '()) - (set! (-> this draw shadow-ctrl) - (new 'process 'shadow-control -4096.0 4096.0 614400.0 (the-as float 24) 245760.0) - ) + (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control -4096.0 4096.0 614400.0 (the-as float 24) 245760.0)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this water) (new 'process 'water-control this 6 0.0 8192.0 2048.0)) (set! (-> this water flags) (water-flags wt01)) @@ -759,25 +529,16 @@ yakow-default-event-handler (when v1-40 (set! (-> this dest-base quad) (-> v1-40 quad)) (set! (-> this dest-rot) (-> v1-40 w)) - (set! (-> this dest-base w) 1.0) - ) - ) + (set! (-> this dest-base w) 1.0))) (set! (-> this vulnerable) #t) (set! (-> this grazing) #f) (set! (-> this enable-turn-around) #f) (set! (-> this in-pen) - (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - ) + (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete)))) (cond ((-> this in-pen) (set! (-> this root trans quad) (-> this dest-base quad)) (set-yaw-angle-clear-roll-pitch! (-> this root) (-> this dest-rot)) - (go yakow-graze) - ) - (else - (yakow-task-complete? #f) - (go yakow-idle) - ) - ) - (none) - ) + (go yakow-graze)) + (else (yakow-task-complete? #f) (go yakow-idle))) + (none)) diff --git a/goal_src/jak1/levels/village2/assistant-village2.gc b/goal_src/jak1/levels/village2/assistant-village2.gc index 9e7b8c06dd..ecf6270518 100644 --- a/goal_src/jak1/levels/village2/assistant-village2.gc +++ b/goal_src/jak1/levels/village2/assistant-village2.gc @@ -1,700 +1,508 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "levels/village2/village2-obs.gc") (require "levels/village2/flutflut-bluehut.gc") (require "levels/village2/sage-bluehut.gc") -;; name: assistant-village2.gc -;; name in dgo: assistant-village2 -;; dgos: L1, VI2 - ;; DECOMP BEGINS (deftype assistant-levitator (process-taskable) - ((boulder entity-actor) - (particle sparticle-launch-control 4) - ) + ((boulder entity-actor) + (particle sparticle-launch-control 4)) (:states - just-particles - ) - ) - + just-particles)) (defmethod relocate ((this assistant-levitator) (arg0 int)) (dotimes (v1-0 4) - (if (nonzero? (-> this particle v1-0)) - (&+! (-> this particle v1-0) arg0) - ) - ) - (the-as assistant-levitator ((method-of-type process-taskable relocate) this arg0)) - ) + (if (nonzero? (-> this particle v1-0)) (&+! (-> this particle v1-0) arg0))) + (the-as assistant-levitator ((method-of-type process-taskable relocate) this arg0))) (defmethod deactivate ((this assistant-levitator)) (dotimes (s5-0 4) - (let ((a0-1 (-> this particle s5-0))) - (if (nonzero? a0-1) - (kill-and-free-particles a0-1) - ) - ) - ) + (let ((a0-1 (-> this particle s5-0))) (if (nonzero? a0-1) (kill-and-free-particles a0-1)))) ((method-of-type process-taskable deactivate) this) - (none) - ) + (none)) -(defskelgroup *assistant-village2-sg* assistant-village2 assistant-village2-lod0-jg assistant-village2-idle-a-ja - ((assistant-village2-lod0-mg (meters 20)) - (assistant-village2-lod1-mg (meters 40)) - (assistant-village2-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 2) - :shadow assistant-village2-shadow-mg - ) +(defskelgroup *assistant-village2-sg* + assistant-village2 + assistant-village2-lod0-jg + assistant-village2-idle-a-ja + ((assistant-village2-lod0-mg (meters 20)) + (assistant-village2-lod1-mg (meters 40)) + (assistant-village2-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :shadow assistant-village2-shadow-mg) -(defskelgroup *jaws-sg* jaws jaws-lod0-jg jaws-idle-ja - ((jaws-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 0.25) - ) +(defskelgroup *jaws-sg* + jaws + jaws-lod0-jg + jaws-idle-ja + ((jaws-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 0.25)) (defmethod process-taskable-method-52 ((this assistant-levitator)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -409.6 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -409.6 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this assistant-levitator)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this assistant-bluehut) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk-to-assistant)) (case (current-status (-> this tasks)) (((task-status unknown) (task-status need-hint) (task-status need-introduction)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task village2-levitator)) (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) (send-event (-> this sage extra process) 'clone (process->handle this)) - (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this)) - ) - (new 'static 'spool-anim - :name "assistant-village2-introduction" - :index 15 - :parts 16 - :command-list '((0 send-event target draw #f) - (0 kill "villageb-part-33") - (95 send-event target draw #t) - (95 joint "cameraB") - (131 send-event target draw #f) - (131 joint "camera") - (190 setting-reset ocean-off #t) - (190 kill "pontoonten-20") - (190 kill "pontoonten-19") - (190 kill "pontoonten-18") - (190 kill "pontoonten-17") - (190 kill "pontoonten-16") - (190 kill "pontoonten-15") - (190 kill "pontoonten-14") - (190 kill "pontoonten-13") - (190 kill "pontoonten-12") - (190 kill "pontoonten-11") - (190 kill "pontoonten-10") - (190 kill "pontoonten-9") - (190 kill "pontoonten-8") - (190 kill "pontoonten-7") - (190 kill "pontoonten-6") - (190 kill "pontoonfive-3") - (190 kill "pontoonfive-4") - (190 kill "pontoonfive-5") - (190 kill "pontoonfive-6") - (190 kill "pontoonfive-7") - (190 kill "pontoonfive-8") - (190 kill "pontoonfive-12") - (190 kill "pontoonfive-13") - (190 kill "pontoonfive-14") - (190 kill "pontoonfive-15") - (190 kill "pontoonfive-16") - (190 kill "pontoonfive-17") - (190 kill "pontoonfive-18") - (190 kill "pontoonfive-19") - (190 kill "pontoonfive-20") - (190 kill "allpontoons-1") - (190 kill "med-res-level-12") - (190 kill "med-res-level-13") - (190 kill "med-res-level-15") - (190 kill "swamp-blimp-3") - (190 kill "barrel-85") - (190 kill "barrel-86") - (190 kill "money-2844") - (190 kill "money-2845") - (190 kill "money-2846") - (190 kill "money-2847") - (190 kill "money-2848") - (190 kill "money-2849") - (190 kill "money-4923") - (190 kill "money-4924") - (190 kill "money-4925") - (190 kill "money-4926") - (190 kill "money-4927") - (190 kill "eco-27") - (190 kill "sharkey-25") - (190 kill "barrel-117") - (190 kill "barrel-118") - (190 kill "barrel-119") - (190 kill "barrel-120") - (190 kill "barrel-121") - (190 kill "barrel-122") - (190 kill "crate-3129") - (190 kill "crate-3132") - (190 kill "crate-3133") - (190 kill "villageb-part-32") - (190 kill "villageb-part-30") - (190 kill "exit-chamber-dummy-1") - (190 kill "villageb-part-34") - (191 send-event target draw #t) - (191 joint "cameraB") - (241 joint "camera") - (241 send-event target draw #f) - (241 setting-unset ocean-off) - (241 dead "pontoonten-20") - (241 dead "pontoonten-19") - (241 dead "pontoonten-18") - (241 dead "pontoonten-17") - (241 dead "pontoonten-16") - (241 dead "pontoonten-15") - (241 dead "pontoonten-14") - (241 dead "pontoonten-13") - (241 dead "pontoonten-12") - (241 dead "pontoonten-11") - (241 dead "pontoonten-10") - (241 dead "pontoonten-9") - (241 dead "pontoonten-8") - (241 dead "pontoonten-7") - (241 dead "pontoonten-6") - (241 dead "pontoonfive-3") - (241 dead "pontoonfive-4") - (241 dead "pontoonfive-5") - (241 dead "pontoonfive-6") - (241 dead "pontoonfive-7") - (241 dead "pontoonfive-8") - (241 dead "pontoonfive-12") - (241 dead "pontoonfive-13") - (241 dead "pontoonfive-14") - (241 dead "pontoonfive-15") - (241 dead "pontoonfive-16") - (241 dead "pontoonfive-17") - (241 dead "pontoonfive-18") - (241 dead "pontoonfive-19") - (241 dead "pontoonfive-20") - (241 dead "allpontoons-1") - (241 dead "med-res-level-12") - (241 dead "med-res-level-13") - (241 dead "med-res-level-15") - (241 dead "swamp-blimp-3") - (241 dead "barrel-85") - (241 dead "barrel-86") - (241 dead "money-2844") - (241 dead "money-2845") - (241 dead "money-2846") - (241 dead "money-2847") - (241 dead "money-2848") - (241 dead "money-2849") - (241 dead "money-4923") - (241 dead "money-4924") - (241 dead "money-4925") - (241 dead "money-4926") - (241 dead "money-4927") - (241 dead "eco-27") - (241 dead "sharkey-25") - (241 dead "barrel-117") - (241 dead "barrel-118") - (241 dead "barrel-119") - (241 dead "barrel-120") - (241 dead "barrel-121") - (241 dead "barrel-122") - (241 dead "crate-3129") - (241 dead "crate-3132") - (241 dead "crate-3133") - (241 dead "villageb-part-32") - (241 dead "villageb-part-30") - (321 joint "cameraB") - (352 joint "camera") - (383 joint "cameraB") - (411 joint "camera") - (501 joint "cameraB") - (501 send-event target draw #t) - (567 joint "camera") - (634 alive "fireboulder-6") - (635 joint "cameraB") - (701 joint "camera") - (741 joint "cameraB") - (784 joint "camera") - (936 joint "cameraB") - (1065 joint "camera") - (1145 joint "cameraB") - (1241 joint "camera") - ) - ) - ) + (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this))) + (new 'static + 'spool-anim + :name "assistant-village2-introduction" + :index 15 + :parts 16 + :command-list + '((0 send-event target draw #f) + (0 kill "villageb-part-33") + (95 send-event target draw #t) + (95 joint "cameraB") + (131 send-event target draw #f) + (131 joint "camera") + (190 setting-reset ocean-off #t) + (190 kill "pontoonten-20") + (190 kill "pontoonten-19") + (190 kill "pontoonten-18") + (190 kill "pontoonten-17") + (190 kill "pontoonten-16") + (190 kill "pontoonten-15") + (190 kill "pontoonten-14") + (190 kill "pontoonten-13") + (190 kill "pontoonten-12") + (190 kill "pontoonten-11") + (190 kill "pontoonten-10") + (190 kill "pontoonten-9") + (190 kill "pontoonten-8") + (190 kill "pontoonten-7") + (190 kill "pontoonten-6") + (190 kill "pontoonfive-3") + (190 kill "pontoonfive-4") + (190 kill "pontoonfive-5") + (190 kill "pontoonfive-6") + (190 kill "pontoonfive-7") + (190 kill "pontoonfive-8") + (190 kill "pontoonfive-12") + (190 kill "pontoonfive-13") + (190 kill "pontoonfive-14") + (190 kill "pontoonfive-15") + (190 kill "pontoonfive-16") + (190 kill "pontoonfive-17") + (190 kill "pontoonfive-18") + (190 kill "pontoonfive-19") + (190 kill "pontoonfive-20") + (190 kill "allpontoons-1") + (190 kill "med-res-level-12") + (190 kill "med-res-level-13") + (190 kill "med-res-level-15") + (190 kill "swamp-blimp-3") + (190 kill "barrel-85") + (190 kill "barrel-86") + (190 kill "money-2844") + (190 kill "money-2845") + (190 kill "money-2846") + (190 kill "money-2847") + (190 kill "money-2848") + (190 kill "money-2849") + (190 kill "money-4923") + (190 kill "money-4924") + (190 kill "money-4925") + (190 kill "money-4926") + (190 kill "money-4927") + (190 kill "eco-27") + (190 kill "sharkey-25") + (190 kill "barrel-117") + (190 kill "barrel-118") + (190 kill "barrel-119") + (190 kill "barrel-120") + (190 kill "barrel-121") + (190 kill "barrel-122") + (190 kill "crate-3129") + (190 kill "crate-3132") + (190 kill "crate-3133") + (190 kill "villageb-part-32") + (190 kill "villageb-part-30") + (190 kill "exit-chamber-dummy-1") + (190 kill "villageb-part-34") + (191 send-event target draw #t) + (191 joint "cameraB") + (241 joint "camera") + (241 send-event target draw #f) + (241 setting-unset ocean-off) + (241 dead "pontoonten-20") + (241 dead "pontoonten-19") + (241 dead "pontoonten-18") + (241 dead "pontoonten-17") + (241 dead "pontoonten-16") + (241 dead "pontoonten-15") + (241 dead "pontoonten-14") + (241 dead "pontoonten-13") + (241 dead "pontoonten-12") + (241 dead "pontoonten-11") + (241 dead "pontoonten-10") + (241 dead "pontoonten-9") + (241 dead "pontoonten-8") + (241 dead "pontoonten-7") + (241 dead "pontoonten-6") + (241 dead "pontoonfive-3") + (241 dead "pontoonfive-4") + (241 dead "pontoonfive-5") + (241 dead "pontoonfive-6") + (241 dead "pontoonfive-7") + (241 dead "pontoonfive-8") + (241 dead "pontoonfive-12") + (241 dead "pontoonfive-13") + (241 dead "pontoonfive-14") + (241 dead "pontoonfive-15") + (241 dead "pontoonfive-16") + (241 dead "pontoonfive-17") + (241 dead "pontoonfive-18") + (241 dead "pontoonfive-19") + (241 dead "pontoonfive-20") + (241 dead "allpontoons-1") + (241 dead "med-res-level-12") + (241 dead "med-res-level-13") + (241 dead "med-res-level-15") + (241 dead "swamp-blimp-3") + (241 dead "barrel-85") + (241 dead "barrel-86") + (241 dead "money-2844") + (241 dead "money-2845") + (241 dead "money-2846") + (241 dead "money-2847") + (241 dead "money-2848") + (241 dead "money-2849") + (241 dead "money-4923") + (241 dead "money-4924") + (241 dead "money-4925") + (241 dead "money-4926") + (241 dead "money-4927") + (241 dead "eco-27") + (241 dead "sharkey-25") + (241 dead "barrel-117") + (241 dead "barrel-118") + (241 dead "barrel-119") + (241 dead "barrel-120") + (241 dead "barrel-121") + (241 dead "barrel-122") + (241 dead "crate-3129") + (241 dead "crate-3132") + (241 dead "crate-3133") + (241 dead "villageb-part-32") + (241 dead "villageb-part-30") + (321 joint "cameraB") + (352 joint "camera") + (383 joint "cameraB") + (411 joint "camera") + (501 joint "cameraB") + (501 send-event target draw #t) + (567 joint "camera") + (634 alive "fireboulder-6") + (635 joint "cameraB") + (701 joint "camera") + (741 joint "cameraB") + (784 joint "camera") + (936 joint "cameraB") + (1065 joint "camera") + (1145 joint "cameraB") + (1241 joint "camera")))) (((game-task sunken-room)) (when arg0 (let* ((s5-2 (-> this tasks)) - (s4-0 (method-of-object s5-2 save-reminder)) - ) - (s4-0 s5-2 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) + (s4-0 (method-of-object s5-2 save-reminder))) + (s4-0 s5-2 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) (close-status! (-> this tasks) (task-status need-introduction)) - (set! (-> this jaws) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *jaws-sg* #f :to this)) - ) + (set! (-> this jaws) (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *jaws-sg* #f :to this))) (let ((v1-42 (handle->process (-> this jaws)))) - (if v1-42 - (set! (-> (the-as manipy v1-42) draw light-index) (the-as uint 1)) - ) - ) + (if v1-42 (set! (-> (the-as manipy v1-42) draw light-index) (the-as uint 1)))) (send-event (handle->process (-> this jaws)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this jaws)) 'center-joint 3) - (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this)) - ) - (new 'static 'spool-anim - :name "assistant-village2-introduction-room" - :index 21 - :parts 10 - :command-list '((197 joint "cameraB") - (351 joint "camera") - (431 joint "cameraB") - (553 joint "camera") - (631 joint "cameraB") - (842 joint "camera") - (900 joint "cameraB") - (1069 joint "camera") - ) - ) - ) + (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this))) + (new 'static + 'spool-anim + :name "assistant-village2-introduction-room" + :index 21 + :parts 10 + :command-list + '((197 joint "cameraB") + (351 joint "camera") + (431 joint "cameraB") + (553 joint "camera") + (631 joint "cameraB") + (842 joint "camera") + (900 joint "cameraB") + (1069 joint "camera")))) (((game-task rolling-robbers)) (when arg0 (let* ((s5-5 (-> this tasks)) - (s4-1 (method-of-object s5-5 save-reminder)) - ) - (s4-1 s5-5 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "assistant-village2-introduction-robbers" - :index 17 - :parts 6 - :command-list '((55 joint "cameraB") (145 joint "camera") (207 joint "cameraB") (363 joint "camera")) - ) - ) + (s4-1 (method-of-object s5-5 save-reminder))) + (s4-1 s5-5 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "assistant-village2-introduction-robbers" + :index 17 + :parts 6 + :command-list + '((55 joint "cameraB") (145 joint "camera") (207 joint "cameraB") (363 joint "camera")))) (else - (when arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this)) - ) - (new 'static 'spool-anim - :name "assistant-village2-introduction-flutflut" - :index 19 - :parts 8 - :command-list '((71 joint "cameraB") (308 joint "camera") (426 joint "cameraB") (550 joint "camera") (644 joint "cameraB")) - ) - ) - ) - ) + (when arg0 + (close-status! (-> this tasks) (task-status need-introduction)) + (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this))) + (new 'static + 'spool-anim + :name "assistant-village2-introduction-flutflut" + :index 19 + :parts 8 + :command-list + '((71 joint "cameraB") (308 joint "camera") (426 joint "cameraB") (550 joint "camera") (644 joint "cameraB")))))) (((task-status need-reminder)) (set! (-> this skippable) #t) (let ((s4-2 (+ (get-reminder (-> this tasks) 0) 1))) - (if (< (the-as uint 2) (the-as uint s4-2)) - (set! s4-2 0) - ) + (if (< (the-as uint 2) (the-as uint s4-2)) (set! s4-2 0)) (countdown (s3-0 3) (let ((v1-92 s4-2)) (cond - ((zero? v1-92) - (if (!= (get-task-status (game-task sunken-room)) (task-status need-reminder)) - (set! s4-2 1) - ) - ) - ((= v1-92 1) - (if (!= (get-task-status (game-task rolling-robbers)) (task-status need-reminder)) - (set! s4-2 2) - ) - ) - (else - (if (!= (get-task-status (game-task swamp-flutflut)) (task-status need-reminder)) - (set! s4-2 0) - ) - ) - ) - ) - ) - (if arg0 - (save-reminder (-> this tasks) s4-2 2) - ) + ((zero? v1-92) (if (!= (get-task-status (game-task sunken-room)) (task-status need-reminder)) (set! s4-2 1))) + ((= v1-92 1) (if (!= (get-task-status (game-task rolling-robbers)) (task-status need-reminder)) (set! s4-2 2))) + (else (if (!= (get-task-status (game-task swamp-flutflut)) (task-status need-reminder)) (set! s4-2 0)))))) + (if arg0 (save-reminder (-> this tasks) s4-2 2)) (cond - ((zero? s4-2) - (new 'static 'spool-anim :name "assistant-village2-reminder-1-room" :index 22 :parts 3 :command-list '()) - ) - ((= s4-2 1) - (new 'static 'spool-anim :name "assistant-village2-reminder-1-robbers" :index 18 :parts 3 :command-list '()) - ) - (else - (new 'static 'spool-anim :name "assistant-village2-reminder-1-flutflut" :index 20 :parts 3 :command-list '()) - ) - ) - ) - ) + ((zero? s4-2) (new 'static 'spool-anim :name "assistant-village2-reminder-1-room" :index 22 :parts 3 :command-list '())) + ((= s4-2 1) (new 'static 'spool-anim :name "assistant-village2-reminder-1-robbers" :index 18 :parts 3 :command-list '())) + (else (new 'static 'spool-anim :name "assistant-village2-reminder-1-flutflut" :index 20 :parts 3 :command-list '()))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 5) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 5)))) (defmethod get-art-elem ((this assistant-bluehut)) - (-> this draw art-group data 10) - ) + (-> this draw art-group data 10)) (defmethod play-reminder ((this assistant-bluehut)) (cond ((and (-> this will-talk) *target*) (let* ((f30-1 (+ -1552384.0 (-> (target-pos 0) x))) - (f0-3 (+ 6352896.0 (-> (target-pos 0) z) f30-1)) - ) - (< 0.0 f0-3) - ) - ) - (else - #f - ) - ) - ) + (f0-3 (+ 6352896.0 (-> (target-pos 0) z) f30-1))) + (< 0.0 f0-3))) + (else #f))) (defmethod target-above-threshold? ((this assistant-bluehut)) (when (not (play-reminder this)) (set! (-> this im-talking) #f) - (return #f) - ) + (return #f)) (let ((s5-0 (-> this sage extra process))) (when (not s5-0) - (let ((v1-7 #t)) - (set! (-> this im-talking) v1-7) - (return v1-7) - ) - ) + (let ((v1-7 #t)) (set! (-> this im-talking) v1-7) (return v1-7))) (when (!= (-> (the-as sage-bluehut s5-0) next-state name) 'idle) (set! (-> this im-talking) #f) - (return #f) - ) + (return #f)) (when (not (play-reminder (the-as sage-bluehut s5-0))) - (let ((v1-15 #t)) - (set! (-> this im-talking) v1-15) - (return v1-15) - ) - ) + (let ((v1-15 #t)) (set! (-> this im-talking) v1-15) (return v1-15))) (let* ((s4-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data (-> this center-joint-index)))) - (s3-0 (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> (the-as sage-bluehut s5-0) node-list data (-> (the-as sage-bluehut s5-0) center-joint-index)) - ) - ) - (f0-1 (- (vector-vector-distance (target-pos 0) s3-0) (vector-vector-distance (target-pos 0) s4-0))) - ) + (s3-0 (vector<-cspace! (new 'stack-no-clear 'vector) + (-> (the-as sage-bluehut s5-0) node-list data (-> (the-as sage-bluehut s5-0) center-joint-index)))) + (f0-1 (- (vector-vector-distance (target-pos 0) s3-0) (vector-vector-distance (target-pos 0) s4-0)))) (cond - ((< f0-1 -4096.0) - (set! (-> this im-talking) #f) - (return #f) - ) - ((< 4096.0 f0-1) - (let ((v1-24 #t)) - (set! (-> this im-talking) v1-24) - (return v1-24) - ) - ) - (else - (return (-> this im-talking)) - ) - ) - ) - ) - (the-as symbol 0) - ) + ((< f0-1 -4096.0) (set! (-> this im-talking) #f) (return #f)) + ((< 4096.0 f0-1) (let ((v1-24 #t)) (set! (-> this im-talking) v1-24) (return v1-24))) + (else (return (-> this im-talking)))))) + (the-as symbol 0)) (defmethod process-taskable-method-43 ((this assistant-bluehut)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f30-0 (rand-float-gen))) (cond - ((= (get-task-status (game-task village2-levitator)) (task-status invalid)) - #f - ) - ((< 0.5 f30-0) - (play-ambient (-> this ambient) "ASSTLP23" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "ASSTLP24" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((= (get-task-status (game-task village2-levitator)) (task-status invalid)) #f) + ((< 0.5 f30-0) (play-ambient (-> this ambient) "ASSTLP23" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "ASSTLP24" #f (-> this root trans))))))) (defstate idle (assistant-bluehut) :virtual #t - :trans (behavior () - (case (get-task-status (game-task village2-levitator)) - (((task-status need-hint) (task-status need-introduction)) - (send-event self 'play-anim) - ) - ) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (ja-no-eval :group! (get-art-elem self) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((f0-9 (rand-float-gen))) - (cond - ((< f0-9 0.33333334) - (process-taskable-method-43 self) - (ja-no-eval :group! assistant-village2-idle-hut-look-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-1 (current-time))) - (while (let ((s5-1 (current-time)) - (f30-0 300.0) - (f28-0 0.16) - (f26-0 0.17000002) - ) - (< (- s5-1 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-1) - ) + :trans + (behavior () + (case (get-task-status (game-task village2-levitator)) + (((task-status need-hint) (task-status need-introduction)) (send-event self 'play-anim))) + ((-> (method-of-type process-taskable idle) trans))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop + (ja-no-eval :group! (get-art-elem self) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((f0-9 (rand-float-gen))) + (cond + ((< f0-9 0.33333334) + (process-taskable-method-43 self) + (ja-no-eval :group! assistant-village2-idle-hut-look-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ((< f0-9 0.6666667) - (sound-play "welding-loop" :id (-> self sound-id) :position (the-as symbol (target-pos 0))) - (ja-no-eval :group! assistant-village2-idle-hut-start-welding-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! assistant-village2-idle-hut-welding-ja) - (let* ((f30-1 2.0) - (v1-113 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-114 (the-as number (logior #x3f800000 v1-113))) - ) - (countdown (gp-3 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-114)))) 4)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP)) - ) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP)) - ) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP)) - ) - (suspend) - (ja :num! (seek!)) - ) - (sound-stop (-> self sound-id)) - (ja-no-eval :group! assistant-village2-idle-hut-stop-welding-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - ) + (ja :num! (seek!))) + (let ((gp-1 (current-time))) + (while (let ((s5-1 (current-time)) + (f30-0 300.0) + (f28-0 0.16) + (f26-0 0.17000002)) + (< (- s5-1 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-1)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0)))) + ((< f0-9 0.6666667) + (sound-play "welding-loop" :id (-> self sound-id) :position (the-as symbol (target-pos 0))) + (ja-no-eval :group! assistant-village2-idle-hut-start-welding-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja :group! assistant-village2-idle-hut-welding-ja) + (let* ((f30-1 2.0) + (v1-113 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-114 (the-as number (logior #x3f800000 v1-113)))) + (countdown (gp-3 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-114)))) 4)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek! 0.0))))) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek!))) + (sound-stop (-> self sound-id)) + (ja-no-eval :group! assistant-village2-idle-hut-stop-welding-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))))))) (defstate play-anim (assistant-bluehut) :virtual #t - :exit (behavior () - (let ((a0-1 (handle->process (-> self jaws)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (send-event (-> self sage extra process) 'end-mode) - (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'end-mode) - ((-> (method-of-type process-taskable play-anim) exit)) - (close-specific-task! (game-task village2-levitator) (task-status need-reminder-a)) - ) - :trans (behavior () - '() - ) - ) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self jaws)))) (if a0-1 (deactivate a0-1))) + (send-event (-> self sage extra process) 'end-mode) + (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'end-mode) + ((-> (method-of-type process-taskable play-anim) exit)) + (close-specific-task! (game-task village2-levitator) (task-status need-reminder-a))) + :trans + (behavior () + '())) (defmethod should-display? ((this assistant-bluehut)) (cond ((not (closed? (-> this tasks) (game-task village2-levitator) (task-status unknown))) (process-taskable-method-33 this) - #f - ) - ((or (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) (sages-kidnapped?)) - #f - ) - (else - #t - ) - ) - ) + #f) + ((or (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) (sages-kidnapped?)) #f) + (else #t))) (defpartgroup group-assistant-bluehut-torch :id 288 :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 1322 :fade-after (meters 30) :falloff-to (meters 30)) - (sp-item 1323 :fade-after (meters 60) :falloff-to (meters 80)) - ) - ) + :parts + ((sp-item 1322 :fade-after (meters 30) :falloff-to (meters 30)) + (sp-item 1323 :fade-after (meters 60) :falloff-to (meters 80)))) (defpart 1322 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 100.0) - (:b 80.0) - (:a 32.0 64.0) - (:fade-a -6.4) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 100.0) + (:b 80.0) + (:a 32.0 64.0) + (:fade-a -6.4) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1323 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:accel-y (meters -0.002)) - (:friction 0.93) - (:timer (seconds 4)) - (:flags (bit2)) - (:userdata 140288.0) - (:func 'check-drop-level-assistant-bluehut) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 45) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:accel-y (meters -0.002)) + (:friction 0.93) + (:timer (seconds 4)) + (:flags (bit2)) + (:userdata 140288.0) + (:func 'check-drop-level-assistant-bluehut) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 45) (degrees 180)))) (defpart 1324 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0 1.0) - (:scale-x (meters 0.075) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0) - (:a 32.0 96.0) - (:vel-y (meters 0.011666667) (meters 0.0033333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1)) - (:flags (bit2)) - (:conerot-x (degrees 50.000004) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0 1.0) + (:scale-x (meters 0.075) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0) + (:a 32.0 96.0) + (:vel-y (meters 0.011666667) (meters 0.0033333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1)) + (:flags (bit2)) + (:conerot-x (degrees 50.000004) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defun check-drop-level-assistant-bluehut ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 1324) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 1324) gp-0))) + (none)) (defmethod init-from-entity! ((this assistant-bluehut) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-village2-sg* 3 31 (new 'static 'vector :w 4096.0) 5) @@ -706,458 +514,435 @@ (set! (-> this draw light-index) (the-as uint 1)) (set! (-> this sound-id) (new-sound-id)) (process-taskable-method-42 this) - (none) - ) + (none)) (defpartgroup group-levitator-blue-beam :id 658 :flags (use-local-clock) :bounds (static-bspherem -20 8 0 80) - :parts ((sp-item 2673 :fade-after (meters 120) :falloff-to (meters 140) :binding 2670) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2674 :falloff-to (meters 400)) - (sp-item 2675) - (sp-item 2676 :falloff-to (meters 300)) - (sp-item 2693 :falloff-to (meters 400)) - (sp-item 2694 :falloff-to (meters 400)) - ) - ) + :parts + ((sp-item 2673 :fade-after (meters 120) :falloff-to (meters 140) :binding 2670) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2674 :falloff-to (meters 400)) + (sp-item 2675) + (sp-item 2676 :falloff-to (meters 300)) + (sp-item 2693 :falloff-to (meters 400)) + (sp-item 2694 :falloff-to (meters 400)))) (defpart 2694 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 2.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees -1440) (degrees 2880)) - (:scale-y (meters 0.3) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 2.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees -1440) (degrees 2880)) + (:scale-y (meters 0.3) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2693 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 2.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees -1440) (degrees 2880)) - (:scale-y (meters 0.3) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 2.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees -1440) (degrees 2880)) + (:scale-y (meters 0.3) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2673 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.025 0.025) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.053333335)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.025 0.025) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.053333335)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2670 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1) (meters 0.5)) - (:scale-x (meters 2.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1) (meters 0.5)) + (:scale-x (meters 2.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2671 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2672 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2674 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:scale-x (meters 2) (meters 0.5)) - (:scale-y (meters 0.6) (meters 0.8)) - (:r 16.0 48.0) - (:g 16.0 48.0) - (:b 128.0) - (:a 128.0) - (:vel-y (meters 0.32)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters -1.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y (meters 0.6) (meters 0.8)) + (:r 16.0 48.0) + (:g 16.0 48.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.32)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters -1.5) (meters 1.5)))) (defpart 2676 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.10666667)) - (:scalevel-x (meters 0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.10666667)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2675 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 64.0) - (:g 64.0 64.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 64.0) + (:g 64.0 64.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-levitator-blue-beam-impact :id 659 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 34) - :parts ((sp-item 2695) (sp-item 2696 :fade-after (meters 200) :falloff-to (meters 200)) (sp-item 2677)) - ) + :parts ((sp-item 2695) (sp-item 2696 :fade-after (meters 200) :falloff-to (meters 200)) (sp-item 2677))) (defpart 2696 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0 6.0) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 0.6) (meters 1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 64.0 64.0) - (:b 255.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.10666667)) - (:scalevel-x (meters -0.005)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.26666668) - (:fade-g -1.0666667) - (:fade-b 0.0) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.2) (seconds 0.197)) - (:flags (bit0 bit2 bit3 bit14)) - (:conerot-x (degrees 50.000004) (degrees 120)) - (:conerot-y (degrees 30) (degrees 120)) - (:conerot-radius (meters -0.5) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0 6.0) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 0.6) (meters 1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 64.0 64.0) + (:b 255.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.10666667)) + (:scalevel-x (meters -0.005)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.26666668) + (:fade-g -1.0666667) + (:fade-b 0.0) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.2) (seconds 0.197)) + (:flags (bit0 bit2 bit3 bit14)) + (:conerot-x (degrees 50.000004) (degrees 120)) + (:conerot-y (degrees 30) (degrees 120)) + (:conerot-radius (meters -0.5) (meters 0.5)))) (defpart 2695 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 4)) - (:rot-z (degrees 180) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 1440)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 4)) + (:rot-z (degrees 180) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 1440)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2677 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 6)) - (:rot-z (degrees 180) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 16.0 64.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 1440)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 6)) + (:rot-z (degrees 180) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 16.0 64.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 1440)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpartgroup group-levitator-on-big :id 660 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2751 :fade-after (meters 100) :falloff-to (meters 100) :binding 2750) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2678) - ) - ) + :parts + ((sp-item 2751 :fade-after (meters 100) :falloff-to (meters 100) :binding 2750) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2678))) (defpart 2678 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -3.2) - (:timer (seconds 0.135)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -3.2) + (:timer (seconds 0.135)) + (:flags (bit2 bit3)))) (defpart 2751 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 255.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)))) (defpart 2750 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3)) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2797 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 0.4) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 0.4) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2798 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.2 0.4) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.2 0.4) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpartgroup group-levitator-on-small :id 661 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2679)) - ) + :parts ((sp-item 2679))) (defpart 2679 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -3.2) - (:timer (seconds 0.135)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -3.2) + (:timer (seconds 0.135)) + (:flags (bit2 bit3)))) (defbehavior assistant-levitator-blue-glow assistant-levitator () (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -1166,60 +951,44 @@ (spawn (-> self particle 2) gp-0) (set-vector! gp-0 -38912.0 6144.0 4096.0 1.0) (vector+! gp-0 gp-0 (-> self entity extra trans)) - (spawn (-> self particle 3) gp-0) - ) - (none) - ) + (spawn (-> self particle 3) gp-0)) + (none)) (defbehavior assistant-levitator-blue-beam assistant-levitator () (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (let ((s4-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self boulder extra trans quad)) (let ((v1-3 (-> self boulder extra process))) - (if v1-3 - (vector<-cspace! gp-0 (-> (the-as fireboulder v1-3) node-list data 4)) - ) - ) + (if v1-3 (vector<-cspace! gp-0 (-> (the-as fireboulder v1-3) node-list data 4)))) (set-vector! s5-0 -49152.0 10240.0 5529.6 1.0) (vector+! s5-0 s5-0 (-> self entity extra trans)) (vector-! s4-0 gp-0 s5-0) (let ((t2-0 (new 'stack-no-clear 'collide-tri-result))) 0.0 - (if (>= (fill-and-probe-using-line-sphere - *collide-cache* - s5-0 - s4-0 - 6144.0 - (collide-kind target) - (the-as process #f) - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (send-event *target* 'shove #f (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3))))) - ) - ) + (if (>= (fill-and-probe-using-line-sphere *collide-cache* + s5-0 + s4-0 + 6144.0 + (collide-kind target) + (the-as process #f) + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (send-event *target* 'shove #f (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3))))))) (vector-normalize! s4-0 (+ -20480.0 (vector-length s4-0))) (vector+! gp-0 s5-0 s4-0) (let ((f30-1 (vector-y-angle s4-0)) - (f0-11 (- 16384.0 (vector-x-angle s4-0))) - ) + (f0-11 (- 16384.0 (vector-x-angle s4-0)))) (set! (-> *part-id-table* 2674 init-specs 14 initial-valuef) f30-1) (set! (-> *part-id-table* 2674 init-specs 13 initial-valuef) f0-11) (set! (-> *part-id-table* 2676 init-specs 14 initial-valuef) f30-1) (set! (-> *part-id-table* 2676 init-specs 13 initial-valuef) f0-11) (set! (-> *part-id-table* 2673 init-specs 14 initial-valuef) f30-1) - (set! (-> *part-id-table* 2673 init-specs 13 initial-valuef) f0-11) - ) - ) + (set! (-> *part-id-table* 2673 init-specs 13 initial-valuef) f0-11))) (spawn (-> self particle 0) s5-0) - (spawn (-> self particle 1) gp-0) - ) - (none) - ) + (spawn (-> self particle 1) gp-0)) + (none)) (defmethod play-anim! ((this assistant-levitator) (arg0 symbol)) (with-pp @@ -1233,228 +1002,147 @@ (set! (-> a1-1 message) 'clone) (set! (-> a1-1 param 0) (the-as uint (process->handle this))) (let ((t9-2 send-event-function) - (v1-10 (-> this boulder)) - ) - (t9-2 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - ) - (new 'static 'spool-anim - :name "assistant-village2-resolution" - :index 16 - :parts 7 - :command-list '((196 joint "cameraB") - (241 joint "camera") - (286 joint "cameraB") - (436 joint "camera") - (526 joint "cameraB") - (581 joint "camera") - (639 joint "cameraB") - (715 joint "camera") - ) - ) - ) + (v1-10 (-> this boulder))) + (t9-2 (if v1-10 (-> v1-10 extra process)) a1-1)))) + (new 'static + 'spool-anim + :name "assistant-village2-resolution" + :index 16 + :parts 7 + :command-list + '((196 joint "cameraB") + (241 joint "camera") + (286 joint "cameraB") + (436 joint "camera") + (526 joint "cameraB") + (581 joint "camera") + (639 joint "cameraB") + (715 joint "camera")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 5) - ) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 5))))) (defmethod get-art-elem ((this assistant-levitator)) (if (= (get-task-status (game-task village2-levitator)) (task-status invalid)) - (-> this draw art-group data 9) - (-> this draw art-group data 5) - ) - ) + (-> this draw art-group data 9) + (-> this draw art-group data 5))) (defstate play-anim (assistant-levitator) :virtual #t - :exit (behavior () - (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) 'stop-cloning) - (let ((t9-0 send-event-function) - (v1-1 (-> self boulder)) - ) - (t9-0 - (if v1-1 - (-> v1-1 extra process) - ) - a1-0 - ) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - :trans (behavior () - (assistant-levitator-blue-glow) - (if (< 200.0 (ja-aframe-num 0)) - (assistant-levitator-blue-beam) - ) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + :exit + (behavior () + (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) 'stop-cloning) + (let ((t9-0 send-event-function) + (v1-1 (-> self boulder))) + (t9-0 (if v1-1 (-> v1-1 extra process)) a1-0))) + ((-> (method-of-type process-taskable play-anim) exit))) + :trans + (behavior () + (assistant-levitator-blue-glow) + (if (< 200.0 (ja-aframe-num 0)) (assistant-levitator-blue-beam)) + ((-> (method-of-type process-taskable play-anim) trans)))) (defstate hidden (assistant-levitator) :virtual #t - :trans (behavior () - ((-> (method-of-type process-taskable hidden) trans)) - (when (and (cond - ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - #t - ) - (else - (set-time! (-> self state-time)) - #f - ) - ) - (and (closed? (-> self tasks) (game-task village2-levitator) (task-status need-introduction)) - (not (closed? (-> self tasks) (game-task village2-levitator) (task-status need-reward-speech))) - (not (movie?)) - (not (level-hint-displayed?)) - (not (and *cheat-mode* (cpad-hold? 0 l3))) - (not (time-elapsed? (-> self state-time) (seconds 10))) - ) - ) - (hide-hud) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (seen-text? *game-info* (text-id village2-levitator-need-cells)) - (hud-hidden?) - (can-grab-display? self) - (not (-> *setting-control* current hint)) - ) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-28 gp-0)) - (set! (-> v1-28 width) (the float 448)) - ) - (let ((v1-29 gp-0)) - (set! (-> v1-29 height) (the float 80)) - ) - (let ((v1-30 gp-0)) - (set! (-> v1-30 scale) 0.8) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) - (print-game-text (lookup-text! *common-text* (text-id village2-levitator-need-cells-text) #f) gp-0 #f 128 22) - ) - ) - (level-hint-spawn - (text-id village2-levitator-need-cells) - "asstvb71" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) + :trans + (behavior () + ((-> (method-of-type process-taskable hidden) trans)) + (when (and (cond + ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) #t) + (else (set-time! (-> self state-time)) #f)) + (and (closed? (-> self tasks) (game-task village2-levitator) (task-status need-introduction)) + (not (closed? (-> self tasks) (game-task village2-levitator) (task-status need-reward-speech))) + (not (movie?)) + (not (level-hint-displayed?)) + (not (and *cheat-mode* (cpad-hold? 0 l3))) + (not (time-elapsed? (-> self state-time) (seconds 10))))) + (hide-hud) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (when (and (seen-text? *game-info* (text-id village2-levitator-need-cells)) + (hud-hidden?) + (can-grab-display? self) + (not (-> *setting-control* current hint))) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-28 gp-0)) (set! (-> v1-28 width) (the float 448))) + (let ((v1-29 gp-0)) (set! (-> v1-29 height) (the float 80))) + (let ((v1-30 gp-0)) (set! (-> v1-30 scale) 0.8)) + (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) + (print-game-text (lookup-text! *common-text* (text-id village2-levitator-need-cells-text) #f) gp-0 #f 128 22))) + (level-hint-spawn (text-id village2-levitator-need-cells) "asstvb71" (the-as entity #f) *entity-pool* (game-task none))))) (defmethod target-above-threshold? ((this assistant-levitator)) - (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) - ) + (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech))) (defstate idle (assistant-levitator) :virtual #t - :exit (behavior () - (stop! (-> self sound)) - ((-> (method-of-type process-taskable idle) exit)) - ) - :trans (behavior () - (assistant-levitator-blue-glow) - (update! (-> self sound)) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (cond - ((= (get-task-status (game-task village2-levitator)) (task-status invalid)) - (ja-no-eval :group! assistant-village2-idle-after-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (assistant-levitator-blue-beam) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja :group! assistant-village2-idle-a-ja) - (let* ((f30-0 2.0) - (v1-31 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-32 (the-as number (logior #x3f800000 v1-31))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-32)))) 3)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! assistant-village2-idle-to-b-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! assistant-village2-idle-b-ja) - (let* ((f30-1 2.0) - (v1-91 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-92 (the-as number (logior #x3f800000 v1-91))) - ) - (countdown (gp-1 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-92)))) 3)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! assistant-village2-idle-to-a-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) + :exit + (behavior () + (stop! (-> self sound)) + ((-> (method-of-type process-taskable idle) exit))) + :trans + (behavior () + (assistant-levitator-blue-glow) + (update! (-> self sound)) + ((-> (method-of-type process-taskable idle) trans))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop + (cond + ((= (get-task-status (game-task village2-levitator)) (task-status invalid)) + (ja-no-eval :group! assistant-village2-idle-after-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (assistant-levitator-blue-beam) + (suspend) + (ja :num! (seek!)))) + (else + (ja :group! assistant-village2-idle-a-ja) + (let* ((f30-0 2.0) + (v1-31 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-32 (the-as number (logior #x3f800000 v1-31)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-32)))) 3)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (ja-no-eval :group! assistant-village2-idle-to-b-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja :group! assistant-village2-idle-b-ja) + (let* ((f30-1 2.0) + (v1-91 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-92 (the-as number (logior #x3f800000 v1-91)))) + (countdown (gp-1 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-92)))) 3)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (ja-no-eval :group! assistant-village2-idle-to-a-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))) (defmethod should-display? ((this assistant-levitator)) (or (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) - (zero? (get-task-status (game-task village2-levitator))) - ) - ) + (zero? (get-task-status (game-task village2-levitator))))) (defstate just-particles (assistant-levitator) - :code (behavior () - (ja-channel-set! 0) - (loop - (assistant-levitator-blue-glow) - (assistant-levitator-blue-beam) - (update! (-> self sound)) - (suspend) - ) - ) - ) + :code + (behavior () + (ja-channel-set! 0) + (loop + (assistant-levitator-blue-glow) + (assistant-levitator-blue-beam) + (update! (-> self sound)) + (suspend)))) (defmethod init-from-entity! ((this assistant-levitator) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-village2-sg* 3 31 (new 'static 'vector :w 4096.0) 5) @@ -1464,12 +1152,8 @@ (set! (-> this particle 1) (create-launch-control (-> *part-group-id-table* 659) this)) (set! (-> this particle 2) (create-launch-control (-> *part-group-id-table* 660) this)) (set! (-> this particle 3) (create-launch-control (-> *part-group-id-table* 661) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "lev-mach-idle" :fo-max 30) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "lev-mach-idle" :fo-max 30) (-> this root trans))) (if (= (get-task-status (game-task village2-levitator)) (task-status invalid)) - (go just-particles) - (process-taskable-method-42 this) - ) - (none) - ) + (go just-particles) + (process-taskable-method-42 this)) + (none)) diff --git a/goal_src/jak1/levels/village2/flutflut-bluehut.gc b/goal_src/jak1/levels/village2/flutflut-bluehut.gc index 9c823e1fb2..2dd999c575 100644 --- a/goal_src/jak1/levels/village2/flutflut-bluehut.gc +++ b/goal_src/jak1/levels/village2/flutflut-bluehut.gc @@ -1,118 +1,81 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: flutflut-bluehut.gc -;; name in dgo: flutflut-bluehut -;; dgos: L1, VI2 - ;; DECOMP BEGINS -(deftype flutflut-bluehut (process-taskable) - () - ) +(deftype flutflut-bluehut (process-taskable) ()) - -(defskelgroup *flutflut-bluehut-sg* flutflut-bluehut flutflut-bluehut-lod0-jg flutflut-bluehut-idle-breathe-ja - ((flutflut-bluehut-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.25) - ) +(defskelgroup *flutflut-bluehut-sg* + flutflut-bluehut + flutflut-bluehut-lod0-jg + flutflut-bluehut-idle-breathe-ja + ((flutflut-bluehut-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.25)) (defmethod play-anim! ((this flutflut-bluehut) (arg0 symbol)) (current-status (-> this tasks)) (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (the-as basic (get-art-elem this)) - ) + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (the-as basic (get-art-elem this))) (defmethod get-art-elem ((this flutflut-bluehut)) - (-> this draw art-group data 2) - ) + (-> this draw art-group data 2)) (defmethod should-display? ((this flutflut-bluehut)) (and (closed? (-> this tasks) (game-task village2-levitator) (task-status need-introduction)) - (task-closed? (game-task beach-flutflut) (task-status need-resolution)) - ) - ) + (task-closed? (game-task beach-flutflut) (task-status need-resolution)))) (defstate idle (flutflut-bluehut) :virtual #t - :trans (behavior () - (set! (-> self will-talk) #f) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (ja :group! flutflut-bluehut-idle-breathe-ja) - (let* ((f30-0 2.0) - (v1-8 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-9 (the-as number (logior #x3f800000 v1-8))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-9)))) 1)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((s5-0 (current-time))) - (while (< (+ (current-time) (seconds -0.5)) s5-0) + :trans + (behavior () + (set! (-> self will-talk) #f) + ((-> (method-of-type process-taskable idle) trans))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop + (ja :group! flutflut-bluehut-idle-breathe-ja) + (let* ((f30-0 2.0) + (v1-8 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-9 (the-as number (logior #x3f800000 v1-8)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-9)))) 1)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((s5-0 (current-time))) (while (< (+ (current-time) (seconds -0.5)) s5-0) (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (let ((s5-1 (current-time))) - (while (< (+ (current-time) (seconds -0.5)) s5-1) + (ja :num! (seek! 0.0))) + (let ((s5-1 (current-time))) (while (< (+ (current-time) (seconds -0.5)) s5-1) (suspend))))) + (ja-no-eval :group! flutflut-bluehut-idle-start-scratch-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja :group! flutflut-bluehut-idle-scratch-ja) + (let* ((f30-1 2.0) + (v1-102 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-103 (the-as number (logior #x3f800000 v1-102)))) + (countdown (gp-1 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-103)))) 6)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - ) - ) - (ja-no-eval :group! flutflut-bluehut-idle-start-scratch-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! flutflut-bluehut-idle-scratch-ja) - (let* ((f30-1 2.0) - (v1-102 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-103 (the-as number (logior #x3f800000 v1-102))) - ) - (countdown (gp-1 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-103)))) 6)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! flutflut-bluehut-idle-start-scratch-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - ) + (ja :num! (seek!))))) + (ja-no-eval :group! flutflut-bluehut-idle-start-scratch-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0)))))) (defmethod init-from-entity! ((this flutflut-bluehut) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *flutflut-bluehut-sg* 3 0 (new 'static 'vector :w 4096.0) 27) (set! (-> this tasks) (get-task-control (game-task village2-levitator))) (set! (-> this draw light-index) (the-as uint 1)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/gambler.gc b/goal_src/jak1/levels/village2/gambler.gc index 3b4ff30722..80c72da7bd 100644 --- a/goal_src/jak1/levels/village2/gambler.gc +++ b/goal_src/jak1/levels/village2/gambler.gc @@ -1,25 +1,19 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: gambler.gc -;; name in dgo: gambler -;; dgos: L1, VI2 - ;; DECOMP BEGINS -(deftype gambler (process-taskable) - () - ) - +(deftype gambler (process-taskable) ()) -(defskelgroup *gambler-sg* gambler gambler-lod0-jg gambler-idle-tiptoe-ja - ((gambler-lod0-mg (meters 20)) (gambler-lod1-mg (meters 40)) (gambler-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow gambler-shadow-mg - ) +(defskelgroup *gambler-sg* + gambler + gambler-lod0-jg + gambler-idle-tiptoe-ja + ((gambler-lod0-mg (meters 20)) (gambler-lod1-mg (meters 40)) (gambler-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow gambler-shadow-mg) (defmethod play-anim! ((this gambler) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) @@ -27,189 +21,111 @@ (((task-status need-hint) (task-status need-introduction)) (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) - (close-specific-task! (game-task village2-gambler-money) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "gambler-introduction-1" - :index 11 - :parts 9 - :command-list '((0 want-levels village2 rolling) - (0 display-level rolling #f) - (29 joint "cameraB") - (103 joint "camera") - (231 joint "cameraB") - (730 display-level rolling display) - (730 want-force-vis rolling #t) - (732 alive "gorge-pusher-5") - (732 alive "gorge-pusher-6") - (732 alive "gorge-start-1") - (732 joint "camera") - (945 joint "cameraB") - (950 dead "gorge-pusher-5") - (950 dead "gorge-pusher-6") - (950 dead "gorge-start-1") - (950 display-level rolling #f) - (950 want-force-vis rolling #f) - ) - ) - ) + (close-specific-task! (game-task village2-gambler-money) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "gambler-introduction-1" + :index 11 + :parts 9 + :command-list + '((0 want-levels village2 rolling) + (0 display-level rolling #f) + (29 joint "cameraB") + (103 joint "camera") + (231 joint "cameraB") + (730 display-level rolling display) + (730 want-force-vis rolling #t) + (732 alive "gorge-pusher-5") + (732 alive "gorge-pusher-6") + (732 alive "gorge-start-1") + (732 joint "camera") + (945 joint "cameraB") + (950 dead "gorge-pusher-5") + (950 dead "gorge-pusher-6") + (950 dead "gorge-start-1") + (950 display-level rolling #f) + (950 want-force-vis rolling #f)))) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((closed? (-> this tasks) (game-task rolling-race) (task-status need-reward-speech)) - (new 'static 'spool-anim :name "gambler-reminder-money" :index 13 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "gambler-reminder-money" :index 13 :parts 2 :command-list '())) ((closed? (-> this tasks) (game-task village2-gambler-money) (task-status need-reward-speech)) - (new 'static 'spool-anim :name "gambler-reminder-race" :index 12 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "gambler-reminder-race" :index 12 :parts 2 :command-list '())) ((zero? (get-reminder (-> this tasks) 5)) - (if arg0 - (save-reminder (-> this tasks) 1 5) - ) - (new 'static 'spool-anim :name "gambler-reminder-race" :index 12 :parts 2 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 5)) + (new 'static 'spool-anim :name "gambler-reminder-race" :index 12 :parts 2 :command-list '())) (else - (if arg0 - (save-reminder (-> this tasks) 0 5) - ) - (new 'static 'spool-anim :name "gambler-reminder-money" :index 13 :parts 2 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 5)) + (new 'static 'spool-anim :name "gambler-reminder-money" :index 13 :parts 2 :command-list '())))) (((task-status need-reward-speech)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task rolling-race)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim :name "gambler-resolution-race" :index 14 :parts 3 :command-list '()) - ) + (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "gambler-resolution-race" :index 14 :parts 3 :command-list '())) (else - (cond - (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - ) - (else - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim :name "gambler-resolution-money" :index 15 :parts 2 :command-list '()) - ) - ) - ) + (cond + (arg0 + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc)))) + (else (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static 'spool-anim :name "gambler-resolution-money" :index 15 :parts 2 :command-list '())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 7) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 7)))) (defmethod get-art-elem ((this gambler)) - (-> this draw art-group data 7) - ) + (-> this draw art-group data 7)) (defmethod process-taskable-method-43 ((this gambler)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 61440.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.9230769 f0-2) - (play-ambient (-> this ambient) "GAM-AM01" #f (-> this root trans)) - ) - ((< 0.84615386 f0-2) - (play-ambient (-> this ambient) "GAM-AM02" #f (-> this root trans)) - ) - ((< 0.7692308 f0-2) - (play-ambient (-> this ambient) "GAM-AM03" #f (-> this root trans)) - ) - ((< 0.6923077 f0-2) - (play-ambient (-> this ambient) "GAM-AM04" #f (-> this root trans)) - ) - ((< 0.61538464 f0-2) - (play-ambient (-> this ambient) "GAM-AM05" #f (-> this root trans)) - ) - ((< 0.53846157 f0-2) - (play-ambient (-> this ambient) "GAM-AM06" #f (-> this root trans)) - ) - ((< 0.46153846 f0-2) - (play-ambient (-> this ambient) "GAM-AM07" #f (-> this root trans)) - ) - ((< 0.3846154 f0-2) - (play-ambient (-> this ambient) "GAM-AM08" #f (-> this root trans)) - ) - ((< 0.30769232 f0-2) - (play-ambient (-> this ambient) "GAM-AM09" #f (-> this root trans)) - ) + ((< 0.9230769 f0-2) (play-ambient (-> this ambient) "GAM-AM01" #f (-> this root trans))) + ((< 0.84615386 f0-2) (play-ambient (-> this ambient) "GAM-AM02" #f (-> this root trans))) + ((< 0.7692308 f0-2) (play-ambient (-> this ambient) "GAM-AM03" #f (-> this root trans))) + ((< 0.6923077 f0-2) (play-ambient (-> this ambient) "GAM-AM04" #f (-> this root trans))) + ((< 0.61538464 f0-2) (play-ambient (-> this ambient) "GAM-AM05" #f (-> this root trans))) + ((< 0.53846157 f0-2) (play-ambient (-> this ambient) "GAM-AM06" #f (-> this root trans))) + ((< 0.46153846 f0-2) (play-ambient (-> this ambient) "GAM-AM07" #f (-> this root trans))) + ((< 0.3846154 f0-2) (play-ambient (-> this ambient) "GAM-AM08" #f (-> this root trans))) + ((< 0.30769232 f0-2) (play-ambient (-> this ambient) "GAM-AM09" #f (-> this root trans))) ((< 0.23076923 f0-2) (if (not (task-closed? (game-task ogre-boss) (task-status need-reminder))) - (play-ambient (-> this ambient) "GAM-AM10" #f (-> this root trans)) - ) - ) - ((< 0.15384616 f0-2) - (play-ambient (-> this ambient) "GAM-AM11" #f (-> this root trans)) - ) - ((< 0.07692308 f0-2) - (play-ambient (-> this ambient) "GAM-AM12" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "GAM-AM13" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "GAM-AM10" #f (-> this root trans)))) + ((< 0.15384616 f0-2) (play-ambient (-> this ambient) "GAM-AM11" #f (-> this root trans))) + ((< 0.07692308 f0-2) (play-ambient (-> this ambient) "GAM-AM12" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "GAM-AM13" #f (-> this root trans))))))) (defstate idle (gambler) :virtual #t - :code (behavior () - (when (!= (ja-group) gambler-idle-fidget-ja) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! gambler-idle-fidget-ja) - ) - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (process-taskable-method-43 self) - (let ((f0-9 (rand-float-gen))) - (cond - ((< f0-9 0.16666667) - (ja :group! gambler-idle-tiptoe-ja) - ) - ((< f0-9 0.33333334) - (ja :group! gambler-idle-look-1-ja) - ) - ((< f0-9 0.5) - (ja :group! gambler-idle-fidget-ja) - ) - ((< f0-9 0.6666667) - (ja :group! gambler-idle-scratch-1-ja) - ) - ((< f0-9 0.8333333) - (ja :group! gambler-idle-look-2-ja) - ) - (else - (ja :group! gambler-idle-scratch-2-ja) - ) - ) - ) - ) - ) - ) + :code + (behavior () + (when (!= (ja-group) gambler-idle-fidget-ja) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! gambler-idle-fidget-ja)) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (process-taskable-method-43 self) + (let ((f0-9 (rand-float-gen))) + (cond + ((< f0-9 0.16666667) (ja :group! gambler-idle-tiptoe-ja)) + ((< f0-9 0.33333334) (ja :group! gambler-idle-look-1-ja)) + ((< f0-9 0.5) (ja :group! gambler-idle-fidget-ja)) + ((< f0-9 0.6666667) (ja :group! gambler-idle-scratch-1-ja)) + ((< f0-9 0.8333333) (ja :group! gambler-idle-look-2-ja)) + (else (ja :group! gambler-idle-scratch-2-ja))))))) (defmethod init-from-entity! ((this gambler) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *gambler-sg* 3 32 (new 'static 'vector :w 4096.0) 5) @@ -217,5 +133,4 @@ (set! (-> this sound-flava) (music-flava gambler)) (set! (-> this draw light-index) (the-as uint 4)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/geologist.gc b/goal_src/jak1/levels/village2/geologist.gc index b2eb0facec..92ffe24e09 100644 --- a/goal_src/jak1/levels/village2/geologist.gc +++ b/goal_src/jak1/levels/village2/geologist.gc @@ -1,25 +1,19 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: geologist.gc -;; name in dgo: geologist -;; dgos: L1, VI2 - ;; DECOMP BEGINS -(deftype geologist (process-taskable) - () - ) - +(deftype geologist (process-taskable) ()) -(defskelgroup *geologist-sg* geologist geologist-lod0-jg geologist-idle-ja - ((geologist-lod0-mg (meters 20)) (geologist-lod1-mg (meters 40)) (geologist-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow geologist-shadow-mg - ) +(defskelgroup *geologist-sg* + geologist + geologist-lod0-jg + geologist-idle-ja + ((geologist-lod0-mg (meters 20)) (geologist-lod1-mg (meters 40)) (geologist-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow geologist-shadow-mg) (defmethod play-anim! ((this geologist) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) @@ -27,136 +21,83 @@ (((task-status need-hint) (task-status need-introduction)) (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) - (close-specific-task! (game-task village2-geologist-money) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "geologist-introduction" - :index 6 - :parts 13 - :command-list '((0 want-levels village2 rolling) - (199 joint "cameraB") - (325 joint "camera") - (520 alive "racer-2") - (544 joint "cameraB") - (546 dead "racer-2") - (809 joint "camera") - (1031 joint "cameraB") - (1229 joint "camera") - ) - ) - ) + (close-specific-task! (game-task village2-geologist-money) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "geologist-introduction" + :index 6 + :parts 13 + :command-list + '((0 want-levels village2 rolling) + (199 joint "cameraB") + (325 joint "camera") + (520 alive "racer-2") + (544 joint "cameraB") + (546 dead "racer-2") + (809 joint "camera") + (1031 joint "cameraB") + (1229 joint "camera")))) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((closed? (-> this tasks) (game-task rolling-moles) (task-status need-reward-speech)) - (new 'static 'spool-anim :name "geologist-reminder-money" :index 8 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "geologist-reminder-money" :index 8 :parts 2 :command-list '())) ((closed? (-> this tasks) (game-task village2-geologist-money) (task-status need-reward-speech)) - (new 'static 'spool-anim :name "geologist-reminder-moles" :index 7 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "geologist-reminder-moles" :index 7 :parts 3 :command-list '())) ((zero? (get-reminder (-> this tasks) 0)) - (if arg0 - (save-reminder (-> this tasks) 1 0) - ) - (new 'static 'spool-anim :name "geologist-reminder-moles" :index 7 :parts 3 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 0)) + (new 'static 'spool-anim :name "geologist-reminder-moles" :index 7 :parts 3 :command-list '())) (else - (if arg0 - (save-reminder (-> this tasks) 0 0) - ) - (new 'static 'spool-anim :name "geologist-reminder-money" :index 8 :parts 2 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 0)) + (new 'static 'spool-anim :name "geologist-reminder-money" :index 8 :parts 2 :command-list '())))) (((task-status need-reward-speech)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task rolling-moles)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim :name "geologist-resolution-moles" :index 9 :parts 3 :command-list '()) - ) + (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "geologist-resolution-moles" :index 9 :parts 3 :command-list '())) (else - (cond - (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - ) - (else - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim :name "geologist-resolution-money" :index 10 :parts 2 :command-list '()) - ) - ) - ) + (cond + (arg0 + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc)))) + (else (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static 'spool-anim :name "geologist-resolution-money" :index 10 :parts 2 :command-list '())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 5) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 5)))) (defmethod get-art-elem ((this geologist)) - (-> this draw art-group data 5) - ) + (-> this draw art-group data 5)) (defmethod process-taskable-method-43 ((this geologist)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.8888889 f0-2) - (play-ambient (-> this ambient) "GEO-AM01" #f (-> this root trans)) - ) + ((< 0.8888889 f0-2) (play-ambient (-> this ambient) "GEO-AM01" #f (-> this root trans))) ((< 0.7777778 f0-2) (if (not (closed? (-> this tasks) (game-task rolling-moles) (task-status need-reminder))) - (play-ambient (-> this ambient) "GEO-AM02" #f (-> this root trans)) - ) - ) - ((< 0.6666667 f0-2) - (play-ambient (-> this ambient) "GEO-AM03" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "GEO-AM02" #f (-> this root trans)))) + ((< 0.6666667 f0-2) (play-ambient (-> this ambient) "GEO-AM03" #f (-> this root trans))) ((< 0.5555556 f0-2) (if (closed? (-> this tasks) (game-task village2-geologist-money) (task-status need-introduction)) - (play-ambient (-> this ambient) "GEO-AM04" #f (-> this root trans)) - ) - ) - ((< 0.44444445 f0-2) - (play-ambient (-> this ambient) "GEO-AM05" #f (-> this root trans)) - ) - ((< 0.33333334 f0-2) - (play-ambient (-> this ambient) "GEO-AM06" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "GEO-AM04" #f (-> this root trans)))) + ((< 0.44444445 f0-2) (play-ambient (-> this ambient) "GEO-AM05" #f (-> this root trans))) + ((< 0.33333334 f0-2) (play-ambient (-> this ambient) "GEO-AM06" #f (-> this root trans))) ((< 0.22222222 f0-2) (if (not (closed? (-> this tasks) (game-task rolling-moles) (task-status need-reminder))) - (play-ambient (-> this ambient) "GEO-AM07" #f (-> this root trans)) - ) - ) - ((< 0.11111111 f0-2) - (play-ambient (-> this ambient) "GEO-LO02" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "GEO-AM07" #f (-> this root trans)))) + ((< 0.11111111 f0-2) (play-ambient (-> this ambient) "GEO-LO02" #f (-> this root trans))) ((closed? (-> this tasks) (game-task village2-geologist-money) (task-status need-resolution)) - (play-ambient (-> this ambient) "GEO-AM08" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "GEO-LO01" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "GEO-AM08" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "GEO-LO01" #f (-> this root trans))))))) (defmethod init-from-entity! ((this geologist) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *geologist-sg* 3 45 (new 'static 'vector :w 4096.0) 5) @@ -164,5 +105,4 @@ (set! (-> this sound-flava) (music-flava geologist)) (set! (-> this draw light-index) (the-as uint 2)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/sage-bluehut.gc b/goal_src/jak1/levels/village2/sage-bluehut.gc index 0e4f933935..9d1d94b3cb 100644 --- a/goal_src/jak1/levels/village2/sage-bluehut.gc +++ b/goal_src/jak1/levels/village2/sage-bluehut.gc @@ -1,311 +1,195 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "levels/village1/sage.gc") -;; name: sage-bluehut.gc -;; name in dgo: sage-bluehut -;; dgos: L1, VI2 - ;; DECOMP BEGINS (deftype assistant-bluehut (process-taskable) - ((sound-id sound-id) - (jaws handle) - (sage entity-actor) - (im-talking symbol) - ) - ) - + ((sound-id sound-id) + (jaws handle) + (sage entity-actor) + (im-talking symbol))) (deftype sage-bluehut (process-taskable) - ((reminder-played symbol) - (assistant entity-actor) - ) - ) + ((reminder-played symbol) + (assistant entity-actor))) - -(defskelgroup *sage-bluehut-sg* sage-bluehut sage-bluehut-lod0-jg sage-bluehut-idle-ja - ((sage-bluehut-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow sage-bluehut-shadow-mg - ) +(defskelgroup *sage-bluehut-sg* + sage-bluehut + sage-bluehut-lod0-jg + sage-bluehut-idle-ja + ((sage-bluehut-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow sage-bluehut-shadow-mg) (defmethod play-anim! ((this sage-bluehut) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk-to-sage)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task rolling-plants)) (when arg0 (let* ((s5-1 (-> this tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - ) - (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) + (s4-0 (method-of-object s5-1 save-reminder))) + (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) (close-status! (-> this tasks) (task-status need-introduction)) (let ((s5-2 (-> this assistant extra process))) - (if (and s5-2 (should-display? (the-as assistant-bluehut s5-2))) - (send-event s5-2 'clone (process->handle this)) - ) - ) - (set! (-> this draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-bluehut-introduction-crop-dusting" - :index 8 - :parts 12 - :command-list '((678 joint "cameraB") (1166 joint "camera") (1258 joint "cameraB")) - ) - ) + (if (and s5-2 (should-display? (the-as assistant-bluehut s5-2))) (send-event s5-2 'clone (process->handle this)))) + (set! (-> this draw bounds w) 40960.0)) + (new 'static + 'spool-anim + :name "sage-bluehut-introduction-crop-dusting" + :index 8 + :parts 12 + :command-list + '((678 joint "cameraB") (1166 joint "camera") (1258 joint "cameraB")))) (else - (when arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - (close-specific-task! (game-task swamp-tether-1) (task-status need-introduction)) - (close-specific-task! (game-task swamp-tether-2) (task-status need-introduction)) - (close-specific-task! (game-task swamp-tether-3) (task-status need-introduction)) - (close-specific-task! (game-task swamp-tether-4) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-bluehut-introduction-prec-arm" - :index 6 - :parts 8 - :command-list '((141 joint "cameraB") - (214 joint "camera") - (308 joint "cameraB") - (686 joint "camera") - (786 joint "cameraB") - (843 joint "camera") - ) - ) - ) - ) - ) + (when arg0 + (close-status! (-> this tasks) (task-status need-introduction)) + (close-specific-task! (game-task swamp-tether-1) (task-status need-introduction)) + (close-specific-task! (game-task swamp-tether-2) (task-status need-introduction)) + (close-specific-task! (game-task swamp-tether-3) (task-status need-introduction)) + (close-specific-task! (game-task swamp-tether-4) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-bluehut-introduction-prec-arm" + :index 6 + :parts 8 + :command-list + '((141 joint "cameraB") + (214 joint "camera") + (308 joint "cameraB") + (686 joint "camera") + (786 joint "cameraB") + (843 joint "camera")))))) (((task-status need-reminder)) (set! (-> this skippable) #t) - (if arg0 - (set! (-> this reminder-played) #t) - ) + (if arg0 (set! (-> this reminder-played) #t)) (cond ((zero? (get-reminder (-> this tasks) 0)) - (new 'static 'spool-anim :name "sage-bluehut-reminder-1-crop-dusting" :index 9 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "sage-bluehut-reminder-1-crop-dusting" :index 9 :parts 3 :command-list '())) (else - (if arg0 - (set! (-> this draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-bluehut-reminder-1-prec-arm" - :index 7 - :parts 4 - :command-list '((90 joint "cameraB") (259 joint "camera") (352 joint "cameraB")) - ) - ) - ) - ) + (if arg0 (set! (-> this draw bounds w) 40960.0)) + (new 'static + 'spool-anim + :name "sage-bluehut-reminder-1-prec-arm" + :index 7 + :parts 4 + :command-list + '((90 joint "cameraB") (259 joint "camera") (352 joint "cameraB")))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod process-taskable-method-45 ((this sage-bluehut)) (cond - ((= (current-status (-> this tasks)) (task-status unknown)) - #f - ) - ((= (current-status (-> this tasks)) (task-status invalid)) - #f - ) + ((= (current-status (-> this tasks)) (task-status unknown)) #f) + ((= (current-status (-> this tasks)) (task-status invalid)) #f) ((and (closed? (-> this tasks) (game-task rolling-plants) (task-status need-reminder)) - (= (get-reminder (-> this tasks) 0) 0) - ) - #t - ) - ((and (closed? (-> this tasks) (game-task swamp-arm) (task-status need-reminder)) - (= (get-reminder (-> this tasks) 0) 1) - ) - #t - ) - ((and (-> this reminder-played) (< 81920.0 (vector-vector-distance (-> this root trans) (camera-pos)))) - #t - ) - (else - #f - ) - ) - ) + (= (get-reminder (-> this tasks) 0) 0)) + #t) + ((and (closed? (-> this tasks) (game-task swamp-arm) (task-status need-reminder)) (= (get-reminder (-> this tasks) 0) 1)) + #t) + ((and (-> this reminder-played) (< 81920.0 (vector-vector-distance (-> this root trans) (camera-pos)))) #t) + (else #f))) (defmethod get-art-elem ((this sage-bluehut)) (cond ((and (= (current-task (-> this tasks)) (game-task rolling-plants)) (or (= (current-status (-> this tasks)) (task-status need-hint)) - (= (current-status (-> this tasks)) (task-status need-introduction)) - ) - ) - (save-reminder (-> this tasks) 0 0) - ) + (= (current-status (-> this tasks)) (task-status need-introduction)))) + (save-reminder (-> this tasks) 0 0)) ((and (= (current-task (-> this tasks)) (game-task swamp-arm)) (or (= (current-status (-> this tasks)) (task-status need-hint)) - (= (current-status (-> this tasks)) (task-status need-introduction)) - ) - ) - (save-reminder (-> this tasks) 1 0) - ) + (= (current-status (-> this tasks)) (task-status need-introduction)))) + (save-reminder (-> this tasks) 1 0)) ((process-taskable-method-45 this) (set! (-> this reminder-played) #f) (cond - ((closed? (-> this tasks) (game-task rolling-plants) (task-status need-reminder)) - (save-reminder (-> this tasks) 1 0) - ) + ((closed? (-> this tasks) (game-task rolling-plants) (task-status need-reminder)) (save-reminder (-> this tasks) 1 0)) ((or (closed? (-> this tasks) (game-task swamp-arm) (task-status need-reminder)) - (not (closed? (-> this tasks) (game-task swamp-arm) (task-status need-introduction))) - ) - (save-reminder (-> this tasks) 0 0) - ) - ((zero? (get-reminder (-> this tasks) 0)) - (save-reminder (-> this tasks) 1 0) - ) - (else - (save-reminder (-> this tasks) 0 0) - ) - ) - ) - ) - (if (zero? (get-reminder (-> this tasks) 0)) - (-> this draw art-group data 4) - (-> this draw art-group data 5) - ) - ) + (not (closed? (-> this tasks) (game-task swamp-arm) (task-status need-introduction)))) + (save-reminder (-> this tasks) 0 0)) + ((zero? (get-reminder (-> this tasks) 0)) (save-reminder (-> this tasks) 1 0)) + (else (save-reminder (-> this tasks) 0 0))))) + (if (zero? (get-reminder (-> this tasks) 0)) (-> this draw art-group data 4) (-> this draw art-group data 5))) (defstate play-anim (sage-bluehut) :virtual #t - :exit (behavior () - (send-event (-> self assistant extra process) 'end-mode) - (set! (-> self draw bounds w) 10240.0) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (send-event (-> self assistant extra process) 'end-mode) + (set! (-> self draw bounds w) 10240.0) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod should-display? ((this sage-bluehut)) - (and (task-closed? (game-task village2-levitator) (task-status need-introduction)) (not (sages-kidnapped?))) - ) + (and (task-closed? (game-task village2-levitator) (task-status need-introduction)) (not (sages-kidnapped?)))) (defmethod play-reminder ((this sage-bluehut)) - (the-as - symbol - (and (-> this will-talk) *target* (< -6365184.0 (-> (target-pos 0) z)) (< (-> (target-pos 0) x) 1612800.0)) - ) - ) + (the-as symbol + (and (-> this will-talk) *target* (< -6365184.0 (-> (target-pos 0) z)) (< (-> (target-pos 0) x) 1612800.0)))) (defmethod target-above-threshold? ((this sage-bluehut)) (local-vars (v0-1 symbol)) - (if (not (play-reminder this)) - (return #f) - ) + (if (not (play-reminder this)) (return #f)) (let ((gp-1 (-> this assistant extra process))) - (if (not gp-1) - (return #t) - ) + (if (not gp-1) (return #t)) (target-above-threshold? (the-as assistant-bluehut gp-1)) - (return (not (-> (the-as assistant-bluehut gp-1) im-talking))) - ) - v0-1 - ) + (return (not (-> (the-as assistant-bluehut gp-1) im-talking)))) + v0-1) (defmethod process-taskable-method-43 ((this sage-bluehut)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.8 f0-2) - (play-ambient (-> this ambient) "SAGELP20" #f (-> this root trans)) - ) - ((< 0.6 f0-2) - (play-ambient (-> this ambient) "SAGELP21" #f (-> this root trans)) - ) - ((< 0.4 f0-2) - (play-ambient (-> this ambient) "SAGELP22" #f (-> this root trans)) - ) - ((< 0.2 f0-2) - (play-ambient (-> this ambient) "SAGELP23" #f (-> this root trans)) - ) + ((< 0.8 f0-2) (play-ambient (-> this ambient) "SAGELP20" #f (-> this root trans))) + ((< 0.6 f0-2) (play-ambient (-> this ambient) "SAGELP21" #f (-> this root trans))) + ((< 0.4 f0-2) (play-ambient (-> this ambient) "SAGELP22" #f (-> this root trans))) + ((< 0.2 f0-2) (play-ambient (-> this ambient) "SAGELP23" #f (-> this root trans))) ((nonzero? (get-task-status (game-task citadel-sage-blue))) - (play-ambient (-> this ambient) "SAGELP24" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "SAGELP24" #f (-> this root trans))))))) (defstate idle (sage-bluehut) :virtual #t - :code (behavior () - (loop - (let ((gp-0 (get-art-elem self))) - (cond - ((= gp-0 sage-bluehut-idle-stand-ja) - (if (!= (ja-group) gp-0) - (ja-channel-push! 1 (seconds 0.2)) - ) - (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-0)) - (let* ((f30-0 3.0) - (v1-15 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-16 (the-as number (logior #x3f800000 v1-15))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-16)))) 5)) - (process-taskable-method-43 self) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (process-taskable-method-45 self) - (go-virtual idle) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! sage-bluehut-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (process-taskable-method-45 self) - (go-virtual idle) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (process-taskable-method-43 self) - (if (!= (ja-group) gp-0) - (ja-channel-push! 1 (seconds 0.2)) - ) - (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-0)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (process-taskable-method-45 self) - (go-virtual idle) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - ) + :code + (behavior () + (loop + (let ((gp-0 (get-art-elem self))) + (cond + ((= gp-0 sage-bluehut-idle-stand-ja) + (if (!= (ja-group) gp-0) (ja-channel-push! 1 (seconds 0.2))) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-0)) + (let* ((f30-0 3.0) + (v1-15 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-16 (the-as number (logior #x3f800000 v1-15)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-16)))) 5)) + (process-taskable-method-43 self) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (process-taskable-method-45 self) (go-virtual idle)) + (suspend) + (ja :num! (seek!))))) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! sage-bluehut-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (process-taskable-method-45 self) (go-virtual idle)) + (suspend) + (ja :num! (seek!)))) + (else + (process-taskable-method-43 self) + (if (!= (ja-group) gp-0) (ja-channel-push! 1 (seconds 0.2))) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-0)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (process-taskable-method-45 self) (go-virtual idle)) + (suspend) + (ja :num! (seek!))))))))) (defmethod init-from-entity! ((this sage-bluehut) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sage-bluehut-sg* 3 40 (new 'static 'vector :w 4505.6) 5) @@ -315,5 +199,4 @@ (set! (-> this draw light-index) (the-as uint 1)) (set! (-> this sound-flava) (music-flava sage)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/sunken-elevator.gc b/goal_src/jak1/levels/village2/sunken-elevator.gc index 29cce9569a..b00ea0f2a0 100644 --- a/goal_src/jak1/levels/village2/sunken-elevator.gc +++ b/goal_src/jak1/levels/village2/sunken-elevator.gc @@ -1,166 +1,109 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "levels/village2/village2-obs.gc") (require "engine/common-obs/plat-button.gc") -;; name: sunken-elevator.gc -;; name in dgo: sunken-elevator -;; dgos: L1, VI2 - ;; DECOMP BEGINS (deftype sunken-elevator (plat-button) - ((play-at-top-going-up-camera? symbol) - (teleport-if-below-y float) - (teleport-if-above-y float) - ) - ) - + ((play-at-top-going-up-camera? symbol) + (teleport-if-below-y float) + (teleport-if-above-y float))) -(defskelgroup *sunken-elevator-sg* sunken-elevator sunken-elevator-lod0-jg sunken-elevator-pressed-ja - ((sunken-elevator-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -1 0 6.6) - ) +(defskelgroup *sunken-elevator-sg* + sunken-elevator + sunken-elevator-lod0-jg + sunken-elevator-pressed-ja + ((sunken-elevator-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -1 0 6.6)) (defmethod should-teleport? ((this sunken-elevator)) (let ((f0-0 (-> (camera-pos) y))) (case (-> this path-pos) - ((0.0) - (if (< f0-0 (-> this teleport-if-below-y)) - (return #t) - ) - ) - ((1.0) - (if (< (-> this teleport-if-above-y) f0-0) - (return #t) - ) - ) - ) - ) - #f - ) + ((0.0) (if (< f0-0 (-> this teleport-if-below-y)) (return #t))) + ((1.0) (if (< (-> this teleport-if-above-y) f0-0) (return #t))))) + #f) (defstate plat-button-pressed (sunken-elevator) :virtual #t - :enter (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-pressed) enter))) - (if t9-0 - (t9-0) - ) - ) - (case (-> self path-pos) - ((0.0) - (load-state-want-display-level 'sunken 'display) - (let ((gp-0 (get-process *default-dead-pool* village2cam #x4000))) - (set! (-> (the-as village2cam (-> (when gp-0 - (let ((t9-3 (method-of-type village2cam activate))) - (t9-3 (the-as village2cam gp-0) self 'village2cam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-0 - pov-camera-init-by-other - (-> self spawn-pos) - *village2cam-sg* - "elevator-at-top-going-down" - 0 - #f - '() - ) - (-> gp-0 ppointer) - ) - 0 - ) - ) - seq - ) - (the-as uint 0) - ) - ) - 0 - ) - ((1.0) - (let ((v1-10 (process-spawn - village2cam - :init pov-camera-init-by-other - (-> self spawn-pos) - *village2cam-sg* - "elevator-at-top-going-down" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as village2cam (-> v1-10 0)) seq) (the-as uint 1)) - ) - ) - ) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-pressed) enter))) (if t9-0 (t9-0))) + (case (-> self path-pos) + ((0.0) + (load-state-want-display-level 'sunken 'display) + (let ((gp-0 (get-process *default-dead-pool* village2cam #x4000))) + (set! (-> (the-as village2cam + (-> (when gp-0 + (let ((t9-3 (method-of-type village2cam activate))) + (t9-3 (the-as village2cam gp-0) self 'village2cam (the-as pointer #x70004000))) + (run-now-in-process gp-0 + pov-camera-init-by-other + (-> self spawn-pos) + *village2cam-sg* + "elevator-at-top-going-down" + 0 + #f + '()) + (-> gp-0 ppointer)) + 0)) + seq) + (the-as uint 0))) + 0) + ((1.0) + (let ((v1-10 (process-spawn village2cam + :init + pov-camera-init-by-other + (-> self spawn-pos) + *village2cam-sg* + "elevator-at-top-going-down" + 0 + #f + '() + :to + self))) + (set! (-> (the-as village2cam (-> v1-10 0)) seq) (the-as uint 1))))))) (defstate plat-button-move-upward (sunken-elevator) :virtual #t - :enter (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) enter))) - (if t9-0 - (t9-0) - ) - ) - (set! (-> self play-at-top-going-up-camera?) #t) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) trans))) - (if t9-0 - (t9-0) - ) - ) - (when (and (-> self play-at-top-going-up-camera?) (>= 0.14 (-> self path-pos))) - (set! *teleport* #t) - (set! (-> self play-at-top-going-up-camera?) #f) - (load-state-want-display-level 'sunken 'special) - (let ((v1-8 (process-spawn - village2cam - :init pov-camera-init-by-other - (-> self spawn-pos) - *village2cam-sg* - "elevator-at-top-going-down" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as village2cam (-> v1-8 0)) seq) (the-as uint 2)) - ) - ) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) enter))) (if t9-0 (t9-0))) + (set! (-> self play-at-top-going-up-camera?) #t)) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) trans))) (if t9-0 (t9-0))) + (when (and (-> self play-at-top-going-up-camera?) (>= 0.14 (-> self path-pos))) + (set! *teleport* #t) + (set! (-> self play-at-top-going-up-camera?) #f) + (load-state-want-display-level 'sunken 'special) + (let ((v1-8 (process-spawn village2cam + :init + pov-camera-init-by-other + (-> self spawn-pos) + *village2cam-sg* + "elevator-at-top-going-down" + 0 + #f + '() + :to + self))) + (set! (-> (the-as village2cam (-> v1-8 0)) seq) (the-as uint 2)))))) (defstate plat-button-move-downward (sunken-elevator) :virtual #t - :trans (behavior () - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (set! *teleport* #t) - (set! (-> s5-0 quad) (-> self root trans quad)) - (let ((t9-1 (-> (find-parent-state) trans))) - (if t9-1 - (t9-1) - ) - ) - (vector-! gp-0 (-> self root trans) s5-0) - (when (< (-> self path-pos) 0.9) - (move-by-vector! (-> *target* control) gp-0) - (send-event *target* 'reset-height) - ) - ) - ) - ) + :trans + (behavior () + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector))) + (set! *teleport* #t) + (set! (-> s5-0 quad) (-> self root trans quad)) + (let ((t9-1 (-> (find-parent-state) trans))) (if t9-1 (t9-1))) + (vector-! gp-0 (-> self root trans) s5-0) + (when (< (-> self path-pos) 0.9) + (move-by-vector! (-> *target* control) gp-0) + (send-event *target* 'reset-height))))) (defmethod can-target-move? ((this sunken-elevator)) (set! (-> this play-at-top-going-up-camera?) #f) @@ -168,44 +111,25 @@ (eval-path-curve! (-> this path) s5-0 0.4 'interp) (set! (-> this teleport-if-above-y) (-> s5-0 y)) (eval-path-curve! (-> this path) s5-0 0.6 'interp) - (set! (-> this teleport-if-below-y) (-> s5-0 y)) - ) - (none) - ) + (set! (-> this teleport-if-below-y) (-> s5-0 y))) + (none)) (defmethod plat-button-method-27 ((this sunken-elevator)) (ja-channel-set! 1) (cond ((can-activate? this) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-0 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-0 frame-num) 0.0))) (else - (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) - ) - ) + (let ((s5-1 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)))))) (ja-post) (update-transforms! (-> this root)) - (none) - ) + (none)) (defmethod plat-button-method-31 ((this sunken-elevator)) (initialize-skeleton this *sunken-elevator-sg* '()) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/swamp-blimp.gc b/goal_src/jak1/levels/village2/swamp-blimp.gc index 5363ab0fb5..5c8985bc95 100644 --- a/goal_src/jak1/levels/village2/swamp-blimp.gc +++ b/goal_src/jak1/levels/village2/swamp-blimp.gc @@ -1,297 +1,265 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/game/task/hint-control.gc") (require "engine/game/task/task-control.gc") - -;; name: swamp-blimp.gc -;; name in dgo: swamp-blimp -;; dgos: L1, VI2 - (declare-type swamp-blimp process-drawable) - ;; DECOMP BEGINS -(defskelgroup *swamp-tetherrock-sg* swamp-tetherrock swamp-tetherrock-lod0-jg swamp-tetherrock-idle-ja - ((swamp-tetherrock-lod0-mg (meters 999999))) - :bounds (static-spherem 0 4 0 6) - ) - -(defskelgroup *swamp-tetherrock-explode-sg* swamp-tetherrock-explode swamp-tetherrock-explode-lod0-jg swamp-tetherrock-explode-idle-ja - ((swamp-tetherrock-explode-lod0-mg (meters 999999))) - :bounds (static-spherem 0 4 0 16) - ) - -(defskelgroup *precursor-arm-sg* precursor-arm precursor-arm-lod0-jg precursor-arm-idle-ja - ((precursor-arm-lod0-mg (meters 999999))) - :bounds (static-spherem 0 15 0 15) - ) - -(defskelgroup *swamp-rope-sg* swamp-rope swamp-rope-lod0-jg swamp-rope-idle-ja - ((swamp-rope-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 300) - :longest-edge (meters 66) - ) - -(defskelgroup *swamp-blimp-sg* swamp-blimp swamp-blimp-lod0-jg swamp-blimp-idle-ja - ((swamp-blimp-lod0-mg (meters 20)) (swamp-blimp-lod1-mg (meters 999999))) - :bounds (static-spherem 10 60 0 95) - :longest-edge (meters 40) - ) +(defskelgroup *swamp-tetherrock-sg* + swamp-tetherrock + swamp-tetherrock-lod0-jg + swamp-tetherrock-idle-ja + ((swamp-tetherrock-lod0-mg (meters 999999))) + :bounds (static-spherem 0 4 0 6)) + +(defskelgroup *swamp-tetherrock-explode-sg* + swamp-tetherrock-explode + swamp-tetherrock-explode-lod0-jg + swamp-tetherrock-explode-idle-ja + ((swamp-tetherrock-explode-lod0-mg (meters 999999))) + :bounds (static-spherem 0 4 0 16)) + +(defskelgroup *precursor-arm-sg* + precursor-arm + precursor-arm-lod0-jg + precursor-arm-idle-ja + ((precursor-arm-lod0-mg (meters 999999))) + :bounds (static-spherem 0 15 0 15)) + +(defskelgroup *swamp-rope-sg* + swamp-rope + swamp-rope-lod0-jg + swamp-rope-idle-ja + ((swamp-rope-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 300) + :longest-edge (meters 66)) + +(defskelgroup *swamp-blimp-sg* + swamp-blimp + swamp-blimp-lod0-jg + swamp-blimp-idle-ja + ((swamp-blimp-lod0-mg (meters 20)) (swamp-blimp-lod1-mg (meters 999999))) + :bounds (static-spherem 10 60 0 95) + :longest-edge (meters 40)) (defpartgroup group-tetherrock-explode :id 285 :duration (seconds 0.5) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 2065 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2066 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2067 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2068 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2065 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2066 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2067 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2068 :period (seconds 2) :length (seconds 0.067)))) (defpart 2066 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.33) (meters 0.66)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2069) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.33) (meters 0.66)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2069) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2069 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223))) (defpart 2068 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 16)) - (:r 255.0) - (:g 196.0) - (:b 0.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 16)) + (:r 255.0) + (:g 196.0) + (:b 0.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2065 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 32)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 0.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 32)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 0.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2067 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2070) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2070) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4)))) (defpart 2070 - :init-specs ((:fade-r -0.53333336) (:fade-g -0.53333336) (:fade-b -1.0583333)) - ) + :init-specs ((:fade-r -0.53333336) (:fade-g -0.53333336) (:fade-b -1.0583333))) (defpart 2017 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.2) - (:y (meters 0.1)) - (:scale-x (meters 3)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 64.0) - (:scalevel-x (meters 0.016666668) (meters 0.01)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit4 bit14)) - (:next-time (seconds 0.5)) - (:next-launcher 109) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.2) + (:y (meters 0.1)) + (:scale-x (meters 3)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 64.0) + (:scalevel-x (meters 0.016666668) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit4 bit14)) + (:next-time (seconds 0.5)) + (:next-launcher 109))) (defpartgroup group-swamp-tether-rock-hit :id 287 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1321 :period (seconds 0.05) :length (seconds 0.017))) - ) + :parts ((sp-item 1321 :period (seconds 0.05) :length (seconds 0.017)))) (defpart 1321 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:userdata 0.0) - (:conerot-x (degrees 20) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:userdata 0.0) + (:conerot-x (degrees 20) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)))) (deftype swamp-blimp-bank (basic) - ((arm-index int32) - (pause-before-dropping-arm int32) - (rise-per-break float) - (arm-sink-wait float) - ) - ) - + ((arm-index int32) + (pause-before-dropping-arm int32) + (rise-per-break float) + (arm-sink-wait float))) (define *SWAMP_BLIMP-bank* - (new 'static 'swamp-blimp-bank :pause-before-dropping-arm #x4b0 :rise-per-break 16384.0 :arm-sink-wait 1500.0) - ) + (new 'static 'swamp-blimp-bank :pause-before-dropping-arm #x4b0 :rise-per-break 16384.0 :arm-sink-wait 1500.0)) (deftype tetherrock-info (structure) - ((rock-camera string) - (arm-camera string) - (blimp-rp int32) - (other-rp int32) - (connected-to-rock basic) - (damping float) - ) - ) - + ((rock-camera string) + (arm-camera string) + (blimp-rp int32) + (other-rp int32) + (connected-to-rock basic) + (damping float))) (defun tetherrock-get-info ((arg0 entity)) (case (-> arg0 extra perm task) (((game-task swamp-tether-1)) - (new 'static 'tetherrock-info - :rock-camera "camera-182" - :arm-camera "camera-187" - :blimp-rp 10 - :other-rp 4 - :connected-to-rock #t - :damping 0.99 - ) - ) + (new 'static + 'tetherrock-info + :rock-camera "camera-182" + :arm-camera "camera-187" + :blimp-rp 10 + :other-rp 4 + :connected-to-rock #t + :damping 0.99)) (((game-task swamp-tether-2)) - (new 'static 'tetherrock-info - :rock-camera "camera-183" - :arm-camera "camera-186" - :blimp-rp 6 - :other-rp 4 - :connected-to-rock #t - :damping 0.99 - ) - ) + (new 'static + 'tetherrock-info + :rock-camera "camera-183" + :arm-camera "camera-186" + :blimp-rp 6 + :other-rp 4 + :connected-to-rock #t + :damping 0.99)) (((game-task swamp-tether-3)) - (new 'static 'tetherrock-info - :rock-camera "camera-180" - :arm-camera "camera-184" - :blimp-rp 7 - :other-rp 4 - :connected-to-rock #t - :damping 0.99 - ) - ) + (new 'static + 'tetherrock-info + :rock-camera "camera-180" + :arm-camera "camera-184" + :blimp-rp 7 + :other-rp 4 + :connected-to-rock #t + :damping 0.99)) (((game-task swamp-tether-4)) - (new 'static 'tetherrock-info - :rock-camera "camera-181" - :arm-camera "camera-185" - :blimp-rp 9 - :other-rp 4 - :connected-to-rock #t - :damping 0.99 - ) - ) + (new 'static + 'tetherrock-info + :rock-camera "camera-181" + :arm-camera "camera-185" + :blimp-rp 9 + :other-rp 4 + :connected-to-rock #t + :damping 0.99)) (else - (new 'static 'tetherrock-info - :rock-camera "" - :arm-camera "" - :blimp-rp 8 - :other-rp 4 - :connected-to-rock #f - :damping 0.7 - ) - ) - ) - ) + (new 'static 'tetherrock-info :rock-camera "" :arm-camera "" :blimp-rp 8 :other-rp 4 :connected-to-rock #f :damping 0.7)))) (deftype swamp-rope-rand-float (structure) - ((min-time int32) - (max-time int32) - (max-val float) - (timer int32) - (value float) - ) + ((min-time int32) + (max-time int32) + (max-val float) + (timer int32) + (value float)) :pack-me (:methods - (init! (_type_ int int float) none) - (update-timer! (_type_) none) - ) - ) - + (init! (_type_ int int float) none) + (update-timer! (_type_) none))) (defmethod init! ((this swamp-rope-rand-float) (arg0 int) (arg1 int) (arg2 float)) (set! (-> this min-time) arg0) @@ -300,36 +268,27 @@ (set! (-> this timer) 0) (set! (-> this value) 0.0) 0 - (none) - ) + (none)) (defmethod update-timer! ((this swamp-rope-rand-float)) - (set! (-> this timer) - (- (the-as time-frame (-> this timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) + (set! (-> this timer) (- (the-as time-frame (-> this timer)) (- (current-time) (-> *display* old-base-frame-counter)))) (when (<= (-> this timer) 0) (set! (-> this timer) (rand-vu-int-range (-> this min-time) (-> this max-time))) - (set! (-> this value) (rand-vu-float-range (- (-> this max-val)) (-> this max-val))) - ) + (set! (-> this value) (rand-vu-float-range (- (-> this max-val)) (-> this max-val)))) 0 - (none) - ) + (none)) (deftype swamp-rope-oscillator (structure) - ((target float) - (value float) - (vel float) - (accel float) - (vector-overlay vector :inline :overlay-at target) - (max-vel float) - (damping float) - ) + ((target float) + (value float) + (vel float) + (accel float) + (vector-overlay vector :inline :overlay-at target) + (max-vel float) + (damping float)) (:methods - (init! (_type_ float float float float) none) - (swamp-rope-oscillator-method-10 (_type_ float) none) - ) - ) - + (init! (_type_ float float float float) none) + (swamp-rope-oscillator-method-10 (_type_ float) none))) (defmethod init! ((this swamp-rope-oscillator) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) (set! (-> this target) arg0) @@ -339,35 +298,27 @@ (set! (-> this max-vel) arg2) (set! (-> this damping) arg3) 0 - (none) - ) + (none)) (defmethod swamp-rope-oscillator-method-10 ((this swamp-rope-oscillator) (arg0 float)) - (let ((f0-3 (* (- (+ (-> this target) arg0) (-> this value)) (* (-> this accel) (-> *display* time-adjust-ratio)))) - ) - (+! (-> this vel) f0-3) - ) + (let ((f0-3 (* (- (+ (-> this target) arg0) (-> this value)) (* (-> this accel) (-> *display* time-adjust-ratio))))) + (+! (-> this vel) f0-3)) (set! (-> this vel) (fmin (-> this max-vel) (fmax (- (-> this max-vel)) (-> this vel)))) (set! (-> this vel) (* (-> this vel) (-> this damping))) (+! (-> this value) (* (-> this vel) (-> *display* time-adjust-ratio))) 0 - (none) - ) + (none)) (deftype swamp-blimp-rand-vector (structure) - ((min-time int32) - (max-time int32) - (xz-max float) - (y-max float) - (timer int32) - (value vector :inline) - ) + ((min-time int32) + (max-time int32) + (xz-max float) + (y-max float) + (timer int32) + (value vector :inline)) (:methods - (init! (_type_ int int float float) none) - (update-timer! (_type_) none) - ) - ) - + (init! (_type_ int int float float) none) + (update-timer! (_type_) none))) (defmethod init! ((this swamp-blimp-rand-vector) (arg0 int) (arg1 int) (arg2 float) (arg3 float)) (set! (-> this min-time) arg0) @@ -377,462 +328,310 @@ (set! (-> this timer) 0) (vector-reset! (-> this value)) 0 - (none) - ) + (none)) (defmethod update-timer! ((this swamp-blimp-rand-vector)) - (set! (-> this timer) - (- (the-as time-frame (-> this timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) + (set! (-> this timer) (- (the-as time-frame (-> this timer)) (- (current-time) (-> *display* old-base-frame-counter)))) (when (<= (-> this timer) 0) (set! (-> this timer) (rand-vu-int-range (-> this min-time) (-> this max-time))) (set! (-> this value x) (rand-vu-float-range (- (-> this xz-max)) (-> this xz-max))) (set! (-> this value y) (rand-vu-float-range (- (-> this y-max)) (-> this y-max))) - (set! (-> this value z) (rand-vu-float-range (- (-> this xz-max)) (-> this xz-max))) - ) + (set! (-> this value z) (rand-vu-float-range (- (-> this xz-max)) (-> this xz-max)))) 0 - (none) - ) + (none)) (deftype swamp-blimp-oscillator (structure) - ((target vector :inline) - (value vector :inline) - (vel vector :inline) - (accel float) - (max-vel float) - (damping float) - ) + ((target vector :inline) + (value vector :inline) + (vel vector :inline) + (accel float) + (max-vel float) + (damping float)) :pack-me (:methods - (init! (_type_ vector float float float) none) - (swamp-blimp-oscillator-method-10 (_type_ vector) none) - ) - ) - + (init! (_type_ vector float float float) none) + (swamp-blimp-oscillator-method-10 (_type_ vector) none))) (defmethod init! ((this swamp-blimp-oscillator) (arg0 vector) (arg1 float) (arg2 float) (arg3 float)) (cond - (arg0 - (set! (-> this target quad) (-> arg0 quad)) - (set! (-> this value quad) (-> arg0 quad)) - ) - (else - (vector-reset! (-> this target)) - (vector-reset! (-> this value)) - ) - ) + (arg0 (set! (-> this target quad) (-> arg0 quad)) (set! (-> this value quad) (-> arg0 quad))) + (else (vector-reset! (-> this target)) (vector-reset! (-> this value)))) (vector-reset! (-> this vel)) (set! (-> this accel) arg1) (set! (-> this max-vel) arg2) (set! (-> this damping) arg3) 0 - (none) - ) + (none)) (defmethod swamp-blimp-oscillator-method-10 ((this swamp-blimp-oscillator) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) (cond - (arg0 - (vector+! gp-0 (-> this target) arg0) - (vector-! gp-0 gp-0 (-> this value)) - ) - (else - (vector-! gp-0 (-> this target) (-> this value)) - ) - ) + (arg0 (vector+! gp-0 (-> this target) arg0) (vector-! gp-0 gp-0 (-> this value))) + (else (vector-! gp-0 (-> this target) (-> this value)))) (vector-float*! gp-0 gp-0 (* (-> this accel) (-> *display* time-adjust-ratio))) (vector+! (-> this vel) (-> this vel) gp-0) (let ((f0-2 (vector-length (-> this vel)))) - (if (< (-> this max-vel) f0-2) - (vector-float*! (-> this vel) (-> this vel) (/ (-> this max-vel) f0-2)) - ) - ) + (if (< (-> this max-vel) f0-2) (vector-float*! (-> this vel) (-> this vel) (/ (-> this max-vel) f0-2)))) (vector-float*! (-> this vel) (-> this vel) (-> this damping)) (vector-float*! gp-0 (-> this vel) (-> *display* time-adjust-ratio)) - (vector+! (-> this value) (-> this value) gp-0) - ) + (vector+! (-> this value) (-> this value) gp-0)) 0 - (none) - ) + (none)) (deftype swamp-tetherrock (process-drawable) - ((root collide-shape-moving :override) - (tension float) - (tension-pt vector :inline) - (blimp entity-actor) - (rot-at-init quaternion :inline) - (hits int32) - ) + ((root collide-shape-moving :override) + (tension float) + (tension-pt vector :inline) + (blimp entity-actor) + (rot-at-init quaternion :inline) + (hits int32)) (:states - swamp-tetherrock-break - swamp-tetherrock-die - swamp-tetherrock-hide - swamp-tetherrock-idle - ) - ) - + swamp-tetherrock-break + swamp-tetherrock-die + swamp-tetherrock-hide + swamp-tetherrock-idle)) (deftype precursor-arm (process-drawable) - ((root collide-shape :override) - (y-init float) - (y-offset float) - (rot-speed float) - (rot-dist float) - (rot-base float) - (rot-t float) - (init-mat matrix :inline) - (tension float) - ) + ((root collide-shape :override) + (y-init float) + (y-offset float) + (rot-speed float) + (rot-dist float) + (rot-base float) + (rot-t float) + (init-mat matrix :inline) + (tension float)) (:states - precursor-arm-die - precursor-arm-idle - precursor-arm-sink - ) - ) - + precursor-arm-die + precursor-arm-idle + precursor-arm-sink)) (deftype swamp-rope (process-drawable) - ((parent-override (pointer swamp-blimp) :overlay-at parent) - (parent-rp int32) - (other-entity entity-actor) - (other-rp int32) - (old-scale float) - (frame swamp-rope-oscillator :inline) - (other-pos vector :inline) - (scale-base float) - (base-vec vector :inline) - (scale-t float) - (x-t float) - (z-t float) - (rot-speed float) - ) + ((parent-override (pointer swamp-blimp) :overlay-at parent) + (parent-rp int32) + (other-entity entity-actor) + (other-rp int32) + (old-scale float) + (frame swamp-rope-oscillator :inline) + (other-pos vector :inline) + (scale-base float) + (base-vec vector :inline) + (scale-t float) + (x-t float) + (z-t float) + (rot-speed float)) (:methods - (swamp-rope-method-20 (_type_) basic) - ) + (swamp-rope-method-20 (_type_) basic)) (:states - swamp-rope-break - swamp-rope-idle-arm - swamp-rope-idle-rock - ) - ) - + swamp-rope-break + swamp-rope-idle-arm + swamp-rope-idle-rock)) (defmethod swamp-rope-method-20 ((this swamp-rope)) - (and (-> this other-entity) - (not (task-closed? (-> this other-entity extra perm task) (task-status need-reminder))) - ) - ) + (and (-> this other-entity) (not (task-closed? (-> this other-entity extra perm task) (task-status need-reminder))))) (deftype swamp-blimp (process-drawable) - ((root collide-shape-moving :override) - (the-ropes handle 5) - (arm-timer int32) - (trans-at-init vector :inline) - (rot-at-init quaternion :inline) - (y-vel float) - (y-offset float) - (y-offset-target float) - (main-tilt-rand swamp-blimp-rand-vector :inline) - (main-tilt-oscillator swamp-blimp-oscillator :inline) - (gondola-tilt-oscillator swamp-blimp-oscillator :inline) - (pos-rand swamp-blimp-rand-vector :inline) - (pos-oscillator swamp-blimp-oscillator :inline) - (scale-rand swamp-rope-rand-float :inline) - (scale-oscillator swamp-rope-oscillator :inline) - (gondola joint-mod) - (bag joint-mod) - ) + ((root collide-shape-moving :override) + (the-ropes handle 5) + (arm-timer int32) + (trans-at-init vector :inline) + (rot-at-init quaternion :inline) + (y-vel float) + (y-offset float) + (y-offset-target float) + (main-tilt-rand swamp-blimp-rand-vector :inline) + (main-tilt-oscillator swamp-blimp-oscillator :inline) + (gondola-tilt-oscillator swamp-blimp-oscillator :inline) + (pos-rand swamp-blimp-rand-vector :inline) + (pos-oscillator swamp-blimp-oscillator :inline) + (scale-rand swamp-rope-rand-float :inline) + (scale-oscillator swamp-rope-oscillator :inline) + (gondola joint-mod) + (bag joint-mod)) (:states - swamp-blimp-bye-bye - swamp-blimp-idle - ) - ) - + swamp-blimp-bye-bye + swamp-blimp-idle)) (defmethod relocate ((this swamp-blimp) (arg0 int)) - (if (nonzero? (-> this gondola)) - (&+! (-> this gondola) arg0) - ) - (if (nonzero? (-> this bag)) - (&+! (-> this bag) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this gondola)) (&+! (-> this gondola) arg0)) + (if (nonzero? (-> this bag)) (&+! (-> this bag) arg0)) + (call-parent-method this arg0)) (defstate swamp-tetherrock-die (swamp-tetherrock) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - (suspend) - 0 - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self) + (suspend) + 0)) (defstate swamp-tetherrock-hide (swamp-tetherrock) - :code (behavior () - (clear-collide-with-as (-> self root)) - (logior! (-> self draw status) (draw-status hidden)) - (loop - (when (= (get-task-status (-> self entity extra perm task)) (task-status invalid)) - (if (not (-> self child)) - (go swamp-tetherrock-die) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (logior! (-> self draw status) (draw-status hidden)) + (loop + (when (= (get-task-status (-> self entity extra perm task)) (task-status invalid)) + (if (not (-> self child)) (go swamp-tetherrock-die))) + (suspend)))) (defstate swamp-tetherrock-break (swamp-tetherrock) - :exit (behavior () - (remove-setting! 'movie) - (remove-setting! 'process-mask) - (apply-settings *setting-control*) - ) - :code (behavior () - (let ((gp-0 (tetherrock-get-info (-> self entity)))) - (hide-hud-quick) - (process-grab? *target*) - (set-setting! 'movie (process->ppointer self) 0.0 0) - (set-setting! 'process-mask 'set 0.0 (process-mask movie platform)) - (apply-settings *setting-control*) - (let* ((s4-0 (get-task-control (game-task swamp-tether-1))) - (s5-0 (+ (get-reminder s4-0 0) 1)) - ) - (save-reminder s4-0 s5-0 0) - (cond - ((= s5-0 1) - (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera) - ) - ((= s5-0 2) - (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera) - ) - ((= s5-0 3) - (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera) - ) - ((= s5-0 4) - (ambient-hint-spawn "gamcam06" (the-as vector #f) *entity-pool* 'camera) - ) - ) - ) - (let ((s5-1 (entity-by-name (-> gp-0 rock-camera)))) - (cam-slave-get-vector-with-offset (the-as entity-actor s5-1) *camera-other-trans* 'trans) - (cam-slave-get-rot (the-as entity-actor s5-1) *camera-other-matrix*) - (set! (-> *camera-other-fov* data) (cam-slave-get-fov s5-1)) - ) - (set! (-> *camera-other-root* quad) (-> self root trans quad)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.6)) - (set! *camera-look-through-other* 2) - (suspend) - ) - (set! (-> self tension) 0.0) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (birth-pickup-at-point - (-> self root trans) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - (let ((a1-12 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-12 from) self) - (set! (-> a1-12 num-params) 1) - (set! (-> a1-12 message) 'tetherrock-break-evt) - (set! (-> a1-12 param 0) (the-as uint (-> self entity))) - (let* ((t9-19 send-event-function) - (v1-41 (-> self blimp)) - (s5-2 (t9-19 - (if v1-41 - (-> v1-41 extra process) - ) - a1-12 - ) - ) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 285) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (logior! (-> self draw status) (draw-status skip-bones)) - (let ((s4-3 - (ppointer->handle - (manipy-spawn (-> self root trans) (-> self entity) *swamp-tetherrock-explode-sg* #f :to *entity-pool*) - ) - ) - ) - (send-event (handle->process (the-as handle s4-3)) 'anim-mode 'play1) - (send-event (handle->process (the-as handle s4-3)) 'art-joint-anim "swamp-tetherrock-explode-explode" 0) - (send-event (handle->process (the-as handle s4-3)) 'draw #t) - (while (handle->process (the-as handle s4-3)) - (set! *camera-look-through-other* 2) - (suspend) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (set! *camera-look-through-other* 2) - (suspend) - ) - (when (zero? s5-2) - (let ((gp-1 (entity-by-name (-> gp-0 arm-camera)))) - (cam-slave-get-vector-with-offset (the-as entity-actor gp-1) *camera-other-trans* 'trans) - (cam-slave-get-rot (the-as entity-actor gp-1) *camera-other-matrix*) - (set! (-> *camera-other-fov* data) (cam-slave-get-fov gp-1)) - ) - (set! (-> *camera-other-root* quad) (-> self root trans quad)) + :exit + (behavior () + (remove-setting! 'movie) + (remove-setting! 'process-mask) + (apply-settings *setting-control*)) + :code + (behavior () + (let ((gp-0 (tetherrock-get-info (-> self entity)))) + (hide-hud-quick) + (process-grab? *target*) + (set-setting! 'movie (process->ppointer self) 0.0 0) + (set-setting! 'process-mask 'set 0.0 (process-mask movie platform)) + (apply-settings *setting-control*) + (let* ((s4-0 (get-task-control (game-task swamp-tether-1))) + (s5-0 (+ (get-reminder s4-0 0) 1))) + (save-reminder s4-0 s5-0 0) + (cond + ((= s5-0 1) (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera)) + ((= s5-0 2) (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera)) + ((= s5-0 3) (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera)) + ((= s5-0 4) (ambient-hint-spawn "gamcam06" (the-as vector #f) *entity-pool* 'camera)))) + (let ((s5-1 (entity-by-name (-> gp-0 rock-camera)))) + (cam-slave-get-vector-with-offset (the-as entity-actor s5-1) *camera-other-trans* 'trans) + (cam-slave-get-rot (the-as entity-actor s5-1) *camera-other-matrix*) + (set! (-> *camera-other-fov* data) (cam-slave-get-fov s5-1))) + (set! (-> *camera-other-root* quad) (-> self root trans quad)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.6)) + (set! *camera-look-through-other* 2) + (suspend)) + (set! (-> self tension) 0.0) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (birth-pickup-at-point (-> self root trans) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f)) + (let ((a1-12 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-12 from) self) + (set! (-> a1-12 num-params) 1) + (set! (-> a1-12 message) 'tetherrock-break-evt) + (set! (-> a1-12 param 0) (the-as uint (-> self entity))) + (let* ((t9-19 send-event-function) + (v1-41 (-> self blimp)) + (s5-2 (t9-19 (if v1-41 (-> v1-41 extra process)) a1-12))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 285) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (logior! (-> self draw status) (draw-status skip-bones)) + (let ((s4-3 (ppointer->handle (manipy-spawn (-> self root trans) (-> self entity) *swamp-tetherrock-explode-sg* #f :to *entity-pool*)))) + (send-event (handle->process (the-as handle s4-3)) 'anim-mode 'play1) + (send-event (handle->process (the-as handle s4-3)) 'art-joint-anim "swamp-tetherrock-explode-explode" 0) + (send-event (handle->process (the-as handle s4-3)) 'draw #t) + (while (handle->process (the-as handle s4-3)) + (set! *camera-look-through-other* 2) + (suspend))) (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 5)) + (until (time-elapsed? (-> self state-time) (seconds 3)) (set! *camera-look-through-other* 2) - (suspend) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 5)) - (set! *camera-look-through-other* 2) - (let ((gp-2 (new 'stack-no-clear 'vector)) - (a0-58 (-> self blimp extra process)) - ) - (when a0-58 - (vector-! gp-2 (-> (the-as swamp-blimp a0-58) root trans) *camera-other-trans*) - (vector-normalize! gp-2 1.0) - (forward-down->inv-matrix *camera-other-matrix* gp-2 (-> *camera* local-down)) - ) - ) - (suspend) - ) - ) - (process-release? *target*) - (process-spawn-function - process - (lambda ((arg0 int)) - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current hint) - (-> *setting-control* current movie) - ) - (suspend) - ) - (cond - ((= arg0 3) - (level-hint-spawn - (text-id swamp-tetherrocks-3-left) - "sksp0157" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 2) - (level-hint-spawn - (text-id swamp-tetherrocks-2-left) - "sksp0158" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 1) - (level-hint-spawn - (text-id swamp-tetherrocks-1-left) - "sksp0159" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((zero? arg0) - (level-hint-spawn (text-id swamp-arm-resolution) "sagevb04" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - (none) - ) - s5-2 - :to self - ) - ) - ) - ) - (go swamp-tetherrock-hide) - ) - :post ja-post - ) + (suspend)) + (when (zero? s5-2) + (let ((gp-1 (entity-by-name (-> gp-0 arm-camera)))) + (cam-slave-get-vector-with-offset (the-as entity-actor gp-1) *camera-other-trans* 'trans) + (cam-slave-get-rot (the-as entity-actor gp-1) *camera-other-matrix*) + (set! (-> *camera-other-fov* data) (cam-slave-get-fov gp-1))) + (set! (-> *camera-other-root* quad) (-> self root trans quad)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 5)) + (set! *camera-look-through-other* 2) + (suspend)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 5)) + (set! *camera-look-through-other* 2) + (let ((gp-2 (new 'stack-no-clear 'vector)) + (a0-58 (-> self blimp extra process))) + (when a0-58 + (vector-! gp-2 (-> (the-as swamp-blimp a0-58) root trans) *camera-other-trans*) + (vector-normalize! gp-2 1.0) + (forward-down->inv-matrix *camera-other-matrix* gp-2 (-> *camera* local-down)))) + (suspend))) + (process-release? *target*) + (process-spawn-function process + (lambda ((arg0 int)) + (while (or (-> *setting-control* current ambient) (-> *setting-control* current hint) (-> *setting-control* current movie)) + (suspend)) + (cond + ((= arg0 3) + (level-hint-spawn (text-id swamp-tetherrocks-3-left) "sksp0157" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 2) + (level-hint-spawn (text-id swamp-tetherrocks-2-left) "sksp0158" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 1) + (level-hint-spawn (text-id swamp-tetherrocks-1-left) "sksp0159" (the-as entity #f) *entity-pool* (game-task none))) + ((zero? arg0) + (level-hint-spawn (text-id swamp-arm-resolution) "sagevb04" (the-as entity #f) *entity-pool* (game-task none)))) + (none)) + s5-2 + :to + self)))) + (go swamp-tetherrock-hide)) + :post ja-post) (defstate swamp-tetherrock-idle (swamp-tetherrock) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (when (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) - (+! (-> self hits) 1) - (cond - ((>= (-> self hits) 1) - (go swamp-tetherrock-break) - ) - (else - (let* ((s5-0 proc) - (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - s5-0 - ) - ) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 287) - 150 - #f - #f - #f - (if gp-0 - (-> (the-as process-drawable gp-0) root trans) - (-> self root trans) - ) - :to *entity-pool* - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (let ((s4-0 (new 'static 'vector :y 1.0 :w 1.0)) - (s3-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'quaternion)) - ) - 0.0 - (vector-! s3-0 (-> self tension-pt) (-> self root trans)) - (vector-normalize! s3-0 1.0) - (vector-cross! s5-0 s4-0 s3-0) - (let ((f30-0 (asin (vector-normalize-ret-len! s5-0 1.0)))) - (vector-normalize! s5-0 1.0) - (quaternion-vector-angle! gp-0 s5-0 (* (fmin 1820.4445 f30-0) (- 1.0 (-> self tension)))) - ) - (quaternion*! (-> self root quat) gp-0 (-> self rot-at-init)) - ) - (if (and *target* (>= 49152.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn - (text-id swamp-tetherrock-eco-yellow-hint) - "sksp0138" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (when (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) + (+! (-> self hits) 1) + (cond + ((>= (-> self hits) 1) (go swamp-tetherrock-break)) + (else + (let* ((s5-0 proc) + (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) s5-0))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 287) + 150 + #f + #f + #f + (if gp-0 (-> (the-as process-drawable gp-0) root trans) (-> self root trans)) + :to + *entity-pool*)))))))) + :code + (behavior () + (loop + (let ((s4-0 (new 'static 'vector :y 1.0 :w 1.0)) + (s3-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'quaternion))) + 0.0 + (vector-! s3-0 (-> self tension-pt) (-> self root trans)) + (vector-normalize! s3-0 1.0) + (vector-cross! s5-0 s4-0 s3-0) + (let ((f30-0 (asin (vector-normalize-ret-len! s5-0 1.0)))) + (vector-normalize! s5-0 1.0) + (quaternion-vector-angle! gp-0 s5-0 (* (fmin 1820.4445 f30-0) (- 1.0 (-> self tension))))) + (quaternion*! (-> self root quat) gp-0 (-> self rot-at-init))) + (if (and *target* (>= 49152.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id swamp-tetherrock-eco-yellow-hint) + "sksp0138" + (the-as entity #f) + *entity-pool* + (game-task none))) + (suspend))) + :post transform-post) (defmethod init-from-entity! ((this swamp-tetherrock) (arg0 entity-actor)) (logior! (-> this mask) (process-mask attackable)) @@ -840,9 +639,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) @@ -851,184 +648,121 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *swamp-tetherrock-sg* '()) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this blimp) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this tension) 0.0) (vector-reset! (-> this tension-pt)) (quaternion-copy! (-> this rot-at-init) (-> this root quat)) (logclear! (-> this mask) (process-mask actor-pause)) (case (get-task-status (-> this entity extra perm task)) - (((task-status invalid)) - (go swamp-tetherrock-die) - ) + (((task-status invalid)) (go swamp-tetherrock-die)) (((task-status need-resolution)) - (birth-pickup-at-point - (-> this root trans) - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - (go swamp-tetherrock-hide) - ) - (else - (go swamp-tetherrock-idle) - ) - ) - (none) - ) + (birth-pickup-at-point (-> this root trans) + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f)) + (go swamp-tetherrock-hide)) + (else (go swamp-tetherrock-idle))) + (none)) (defstate precursor-arm-die (precursor-arm) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self) + (loop + (suspend)))) (defstate precursor-arm-sink (precursor-arm) - :code (behavior () - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (the int (-> *SWAMP_BLIMP-bank* arm-sink-wait))) - (suspend) - ) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (close-specific-task! (-> self entity extra perm task) (task-status need-resolution)) - (loop - (cond - ((< -40960.0 (-> self y-offset)) - (set! (-> self y-offset) (- (-> self y-offset) (* 409.6 (-> *display* time-adjust-ratio)))) - ) - (else - (set! (-> self y-offset) -40960.0) - (cleanup-for-death self) - (deactivate self) - ) - ) - (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (the int (-> *SWAMP_BLIMP-bank* arm-sink-wait))) + (suspend)) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (close-specific-task! (-> self entity extra perm task) (task-status need-resolution)) + (loop + (cond + ((< -40960.0 (-> self y-offset)) + (set! (-> self y-offset) (- (-> self y-offset) (* 409.6 (-> *display* time-adjust-ratio))))) + (else (set! (-> self y-offset) -40960.0) (cleanup-for-death self) (deactivate self))) + (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) + (suspend))) + :post transform-post) (defun precursor-arm-slip ((arg0 float)) (cond - ((>= arg0 1.0) - 1.0 - ) - ((>= 0.0 arg0) - 0.0 - ) + ((>= arg0 1.0) 1.0) + ((>= 0.0 arg0) 0.0) (else - (let ((f0-2 1.0) - (f1-3 (- 1.0 arg0)) - ) - (- f0-2 (* f1-3 f1-3)) - ) - ) - ) - ) + (let ((f0-2 1.0) + (f1-3 (- 1.0 arg0))) + (- f0-2 (* f1-3 f1-3)))))) (defstate precursor-arm-idle (precursor-arm) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('arm-sink-evt) - (go precursor-arm-sink) - ) - ) - ) - :trans (behavior () - (when (>= (-> self rot-t) 1.0) - (+! (-> self rot-base) (-> self rot-dist)) - (set! (-> self rot-dist) (rand-vu-float-range -16384.0 16384.0)) - (set! (-> self rot-speed) - (/ 1.0 (* 300.0 (+ (* 0.001373291 (fabs (-> self rot-dist))) (rand-vu-float-range 2.0 5.0)))) - ) - (set! (-> self rot-t) 0.0) - ) - (+! (-> self rot-t) (* (-> self rot-speed) (-> *display* time-adjust-ratio))) - (let ((gp-0 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! - gp-0 - (+ (-> self rot-base) (* (parameter-ease-sin-clamp (-> self rot-t)) (-> self rot-dist))) - ) - (matrix*! gp-0 (-> self init-mat) gp-0) - (matrix->quaternion (-> self root quat) gp-0) - ) - (when (< (vector-vector-distance (-> self root trans) (camera-pos)) 204800.0) - (let ((a2-1 (new 'static 'vector))) - (set! (-> a2-1 quad) (-> self root trans quad)) - (set! (-> a2-1 y) 0.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2017) a2-1) - ) - ) - ) - :code (behavior () - (loop - (set! (-> self tension) 1.5) - (let* ((f26-0 (+ 225.0 (* 150.0 (sin (rand-vu-float-range 0.0 16384.0))))) - (f0-5 (+ 4096.0 (* 8192.0 (sin (rand-vu-float-range 0.0 16384.0))))) - (f30-2 (-> self y-offset)) - (f0-6 (+ f0-5 f30-2)) - (f28-2 (fmin f0-6 (- 57344.0 f0-6))) - ) - (when (< 0.0 f28-2) - (let ((f26-1 (+ f26-0 (* 0.14648438 f28-2)))) - (set-time! (-> self state-time)) - (while (not (time-elapsed? (-> self state-time) (the int f26-1))) - (if (< (- f26-1 (the float (- (current-time) (-> self state-time)))) 150.0) - (set! (-> self tension) 0.5) - ) - (set! (-> self y-offset) - (+ f30-2 (* f28-2 (precursor-arm-slip (/ (the float (- (current-time) (-> self state-time))) f26-1)))) - ) - (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) - (suspend) - ) - ) - ) - ) - (suspend) - (let* ((f26-2 (+ 600.0 (* 300.0 (sin (rand-vu-float-range 0.0 16384.0))))) - (f0-26 (* 49152.0 (sin (rand-vu-float-range 0.0 16384.0)))) - (f30-5 (-> self y-offset)) - (f28-4 (- f0-26 f30-5)) - ) - (when (< f28-4 0.0) - (let ((f26-3 (- f26-2 (* 0.036621094 f28-4)))) - (set-time! (-> self state-time)) - (while (not (time-elapsed? (-> self state-time) (the int f26-3))) - (if (< (- f26-3 (the float (- (current-time) (-> self state-time)))) 150.0) - (set! (-> self tension) 1.5) - ) - (set! (-> self y-offset) - (+ f30-5 (* f28-4 (parameter-ease-sin-clamp (/ (the float (- (current-time) (-> self state-time))) f26-3)))) - ) - (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) - (suspend) - ) - ) - ) - ) - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('arm-sink-evt) (go precursor-arm-sink)))) + :trans + (behavior () + (when (>= (-> self rot-t) 1.0) + (+! (-> self rot-base) (-> self rot-dist)) + (set! (-> self rot-dist) (rand-vu-float-range -16384.0 16384.0)) + (set! (-> self rot-speed) (/ 1.0 (* 300.0 (+ (* 0.001373291 (fabs (-> self rot-dist))) (rand-vu-float-range 2.0 5.0))))) + (set! (-> self rot-t) 0.0)) + (+! (-> self rot-t) (* (-> self rot-speed) (-> *display* time-adjust-ratio))) + (let ((gp-0 (new 'stack-no-clear 'matrix))) + (matrix-rotate-y! gp-0 (+ (-> self rot-base) (* (parameter-ease-sin-clamp (-> self rot-t)) (-> self rot-dist)))) + (matrix*! gp-0 (-> self init-mat) gp-0) + (matrix->quaternion (-> self root quat) gp-0)) + (when (< (vector-vector-distance (-> self root trans) (camera-pos)) 204800.0) + (let ((a2-1 (new 'static 'vector))) + (set! (-> a2-1 quad) (-> self root trans quad)) + (set! (-> a2-1 y) 0.0) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2017) a2-1)))) + :code + (behavior () + (loop + (set! (-> self tension) 1.5) + (let* ((f26-0 (+ 225.0 (* 150.0 (sin (rand-vu-float-range 0.0 16384.0))))) + (f0-5 (+ 4096.0 (* 8192.0 (sin (rand-vu-float-range 0.0 16384.0))))) + (f30-2 (-> self y-offset)) + (f0-6 (+ f0-5 f30-2)) + (f28-2 (fmin f0-6 (- 57344.0 f0-6)))) + (when (< 0.0 f28-2) + (let ((f26-1 (+ f26-0 (* 0.14648438 f28-2)))) + (set-time! (-> self state-time)) + (while (not (time-elapsed? (-> self state-time) (the int f26-1))) + (if (< (- f26-1 (the float (- (current-time) (-> self state-time)))) 150.0) (set! (-> self tension) 0.5)) + (set! (-> self y-offset) + (+ f30-2 (* f28-2 (precursor-arm-slip (/ (the float (- (current-time) (-> self state-time))) f26-1))))) + (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) + (suspend))))) + (suspend) + (let* ((f26-2 (+ 600.0 (* 300.0 (sin (rand-vu-float-range 0.0 16384.0))))) + (f0-26 (* 49152.0 (sin (rand-vu-float-range 0.0 16384.0)))) + (f30-5 (-> self y-offset)) + (f28-4 (- f0-26 f30-5))) + (when (< f28-4 0.0) + (let ((f26-3 (- f26-2 (* 0.036621094 f28-4)))) + (set-time! (-> self state-time)) + (while (not (time-elapsed? (-> self state-time) (the int f26-3))) + (if (< (- f26-3 (the float (- (current-time) (-> self state-time)))) 150.0) (set! (-> self tension) 1.5)) + (set! (-> self y-offset) + (+ f30-5 (* f28-4 (parameter-ease-sin-clamp (/ (the float (- (current-time) (-> self state-time))) f26-3))))) + (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) + (suspend))))) + (suspend))) + :post transform-post) (defmethod init-from-entity! ((this precursor-arm) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -1039,12 +773,10 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 61440.0 0.0 61440.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *precursor-arm-sg* '()) (set! (-> this rot-speed) 0.0) @@ -1059,54 +791,38 @@ (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this event-hook) (-> precursor-arm-idle event)) (if (= (get-task-status (-> this entity extra perm task)) (task-status invalid)) - (go precursor-arm-die) - (go precursor-arm-idle) - ) - (none) - ) + (go precursor-arm-die) + (go precursor-arm-idle)) + (none)) (defbehavior swamp-rope-update-bounding-spheres swamp-rope () (let ((a0-0 (new 'stack-no-clear 'vector))) (vector-! a0-0 (-> self other-pos) (-> self root trans)) (vector-float*! a0-0 a0-0 0.5) (set! (-> self draw bounds quad) (-> a0-0 quad)) - (set! (-> self draw bounds w) (vector-length a0-0)) - ) + (set! (-> self draw bounds w) (vector-length a0-0))) 0 - (none) - ) + (none)) (defbehavior swamp-rope-post swamp-rope () (swamp-rope-update-bounding-spheres) (ja-post) 0 - (none) - ) + (none)) (defbehavior swamp-rope-break-code swamp-rope () (when (or (< 0.001 (fabs (-> self base-vec x))) (< 0.001 (fabs (-> self base-vec z)))) - (set! (-> self base-vec x) - (- (-> self base-vec x) (* 0.02 (-> *display* time-adjust-ratio) (-> self base-vec x))) - ) - (set! (-> self base-vec z) - (- (-> self base-vec z) (* 0.02 (-> *display* time-adjust-ratio) (-> self base-vec z))) - ) - (vector-normalize! (-> self base-vec) 1.0) - ) + (set! (-> self base-vec x) (- (-> self base-vec x) (* 0.02 (-> *display* time-adjust-ratio) (-> self base-vec x)))) + (set! (-> self base-vec z) (- (-> self base-vec z) (* 0.02 (-> *display* time-adjust-ratio) (-> self base-vec z)))) + (vector-normalize! (-> self base-vec) 1.0)) (when (< 0.4 (-> self scale-base)) (let ((f1-13 (fmax 0.002 (* 0.05 (+ -0.4 (-> self scale-base)))))) - (set! (-> self scale-base) (- (-> self scale-base) (* f1-13 (-> *display* time-adjust-ratio)))) - ) - ) + (set! (-> self scale-base) (- (-> self scale-base) (* f1-13 (-> *display* time-adjust-ratio)))))) (+! (-> self scale-t) (* 0.005 (-> *display* time-adjust-ratio))) (+! (-> self x-t) (* 0.004 (-> *display* time-adjust-ratio))) (+! (-> self z-t) (* 0.003 (-> *display* time-adjust-ratio))) - (let ((f0-19 - (* (sin (+ 32768.0 (* 65536.0 (-> self scale-t)))) (fmax 0.003 (fmin 0.1 (* 0.1 (- 3.0 (-> self scale-t)))))) - ) - ) - (set! (-> self root scale y) (+ (-> self scale-base) f0-19)) - ) + (let ((f0-19 (* (sin (+ 32768.0 (* 65536.0 (-> self scale-t)))) (fmax 0.003 (fmin 0.1 (* 0.1 (- 3.0 (-> self scale-t)))))))) + (set! (-> self root scale y) (+ (-> self scale-base) f0-19))) (let ((gp-0 (new 'stack-no-clear 'matrix))) (let ((s5-0 (new 'stack-no-clear 'vector))) (vector-reset! (-> gp-0 vector 3)) @@ -1116,63 +832,49 @@ (vector+! s5-0 s5-0 (-> self base-vec)) (set! (-> gp-0 vector 1 quad) (-> s5-0 quad)) (vector-normalize! (-> gp-0 vector 1) 1.0) - (set-vector! - s5-0 - (sin (* (-> self rot-speed) (the float (- (current-time) (-> self state-time))))) - 0.0 - (cos (* (-> self rot-speed) (the float (- (current-time) (-> self state-time))))) - 1.0 - ) - (vector-cross! (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1) s5-0) - ) + (set-vector! s5-0 + (sin (* (-> self rot-speed) (the float (- (current-time) (-> self state-time))))) + 0.0 + (cos (* (-> self rot-speed) (the float (- (current-time) (-> self state-time))))) + 1.0) + (vector-cross! (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1) s5-0)) (vector-normalize! (the-as vector (-> gp-0 vector)) 1.0) (vector-cross! (-> gp-0 vector 2) (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1)) - (matrix->quaternion (-> self root quat) gp-0) - ) - ) + (matrix->quaternion (-> self root quat) gp-0))) (defstate swamp-rope-break (swamp-rope) - :enter (behavior () - (set! (-> self scale-base) (-> self root scale y)) - ) - :trans (behavior () - (vector<-cspace! (-> self root trans) (-> self parent-override 0 node-list data (-> self parent-rp))) - ) - :code (behavior () - (let ((f30-0 18.204445) - (f28-0 9.102222) - ) - (set! (-> self rot-speed) (+ f30-0 (* f28-0 (rand-float-gen)))) - ) - (let* ((f30-1 3000000.0) - (v1-5 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-6 (the-as number (logior #x3f800000 v1-5))) - ) - (set! (-> self state-time) (the-as time-frame (the int (* f30-1 (+ -1.0 (the-as float v1-6)))))) - ) - (ja-channel-push! 1 (seconds 0.5)) - (loop - (let* ((f30-2 0.3) - (f28-1 0.25) - (v1-10 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-11 (the-as number (logior #x3f800000 v1-10))) - (f30-3 (+ f30-2 (* f28-1 (+ -1.0 (the-as float v1-11))))) - ) - (ja-no-eval :group! swamp-rope-swing-ja :num! (seek! max f30-3) :frame-num 0.0) - (until (ja-done? 0) - (swamp-rope-break-code) - (suspend) - (ja :num! (seek! max f30-3)) - ) - ) - ) - ) - :post (behavior () - (set! (-> self other-pos quad) (-> self root trans quad)) - (+! (-> self other-pos y) -245760.0) - (swamp-rope-post) - ) - ) + :enter + (behavior () + (set! (-> self scale-base) (-> self root scale y))) + :trans + (behavior () + (vector<-cspace! (-> self root trans) (-> self parent-override 0 node-list data (-> self parent-rp)))) + :code + (behavior () + (let ((f30-0 18.204445) + (f28-0 9.102222)) + (set! (-> self rot-speed) (+ f30-0 (* f28-0 (rand-float-gen))))) + (let* ((f30-1 3000000.0) + (v1-5 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-6 (the-as number (logior #x3f800000 v1-5)))) + (set! (-> self state-time) (the-as time-frame (the int (* f30-1 (+ -1.0 (the-as float v1-6))))))) + (ja-channel-push! 1 (seconds 0.5)) + (loop + (let* ((f30-2 0.3) + (f28-1 0.25) + (v1-10 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-11 (the-as number (logior #x3f800000 v1-10))) + (f30-3 (+ f30-2 (* f28-1 (+ -1.0 (the-as float v1-11)))))) + (ja-no-eval :group! swamp-rope-swing-ja :num! (seek! max f30-3) :frame-num 0.0) + (until (ja-done? 0) + (swamp-rope-break-code) + (suspend) + (ja :num! (seek! max f30-3)))))) + :post + (behavior () + (set! (-> self other-pos quad) (-> self root trans quad)) + (+! (-> self other-pos y) -245760.0) + (swamp-rope-post))) (defbehavior swamp-rope-trans swamp-rope () (vector<-cspace! (-> self root trans) (-> self parent-override 0 node-list data (-> self parent-rp))) @@ -1180,91 +882,59 @@ ((not (swamp-rope-method-20 self)) (let ((gp-0 (new 'stack-no-clear 'matrix))) (quaternion->matrix gp-0 (-> self root quat)) - (set! (-> self base-vec quad) (-> gp-0 vector 1 quad)) - ) - (go swamp-rope-break) - ) + (set! (-> self base-vec quad) (-> gp-0 vector 1 quad))) + (go swamp-rope-break)) (else - (let* ((a0-5 (-> self other-entity)) - (v1-10 (if a0-5 - (-> a0-5 extra process) - ) - ) - ) - (if (and v1-10 (nonzero? (-> (the-as swamp-rope v1-10) root))) - (vector<-cspace! (-> self other-pos) (-> (the-as swamp-rope v1-10) node-list data (-> self other-rp))) - ) - ) - (let ((gp-1 (new 'stack-no-clear 'matrix))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (vector-reset! (-> gp-1 vector 3)) - (vector-! (-> gp-1 vector 1) (-> self root trans) (-> self other-pos)) - (set! (-> self old-scale) (-> self root scale y)) - (set! (-> self root scale y) (* 0.0000020345053 (vector-normalize-ret-len! (-> gp-1 vector 1) 1.0))) - (set-vector! s5-0 0.0 -1.0 0.0 1.0) - (vector-cross! (the-as vector (-> gp-1 vector)) (-> gp-1 vector 1) s5-0) - ) - (vector-normalize! (the-as vector (-> gp-1 vector)) 1.0) - (vector-cross! (-> gp-1 vector 2) (the-as vector (-> gp-1 vector)) (-> gp-1 vector 1)) - (matrix->quaternion (-> self root quat) gp-1) - ) - ) - ) + (let* ((a0-5 (-> self other-entity)) + (v1-10 (if a0-5 (-> a0-5 extra process)))) + (if (and v1-10 (nonzero? (-> (the-as swamp-rope v1-10) root))) + (vector<-cspace! (-> self other-pos) (-> (the-as swamp-rope v1-10) node-list data (-> self other-rp))))) + (let ((gp-1 (new 'stack-no-clear 'matrix))) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (vector-reset! (-> gp-1 vector 3)) + (vector-! (-> gp-1 vector 1) (-> self root trans) (-> self other-pos)) + (set! (-> self old-scale) (-> self root scale y)) + (set! (-> self root scale y) (* 0.0000020345053 (vector-normalize-ret-len! (-> gp-1 vector 1) 1.0))) + (set-vector! s5-0 0.0 -1.0 0.0 1.0) + (vector-cross! (the-as vector (-> gp-1 vector)) (-> gp-1 vector 1) s5-0)) + (vector-normalize! (the-as vector (-> gp-1 vector)) 1.0) + (vector-cross! (-> gp-1 vector 2) (the-as vector (-> gp-1 vector)) (-> gp-1 vector 1)) + (matrix->quaternion (-> self root quat) gp-1)))) 0 - (none) - ) + (none)) (defstate swamp-rope-idle-rock (swamp-rope) :trans swamp-rope-trans - :code (behavior () - (ja :group! swamp-rope-slack-ja) - (loop - (let* ((f0-1 (* 2000.0 (- (-> self old-scale) (-> self root scale y)))) - (f1-3 (+ 0.5 f0-1)) - ) - (set! (-> self frame target) (fmin 1.0 (fmax 0.0 f1-3))) - ) - (swamp-rope-oscillator-method-10 (-> self frame) 0.0) - (let* ((v1-6 (-> self other-entity)) - (a0-4 (if v1-6 - (-> v1-6 extra process) - ) - ) - ) - (when a0-4 - (set! (-> (the-as swamp-rope a0-4) parent-rp) (the-as int (-> self frame value))) - (set! (-> (the-as swamp-rope a0-4) frame vector-overlay quad) (-> self root trans quad)) - ) - ) - (ja :num-func num-func-identity :frame-num (* (-> self frame value) (the float (ja-num-frames 0)))) - (suspend) - ) - ) - :post swamp-rope-post - ) + :code + (behavior () + (ja :group! swamp-rope-slack-ja) + (loop + (let* ((f0-1 (* 2000.0 (- (-> self old-scale) (-> self root scale y)))) + (f1-3 (+ 0.5 f0-1))) + (set! (-> self frame target) (fmin 1.0 (fmax 0.0 f1-3)))) + (swamp-rope-oscillator-method-10 (-> self frame) 0.0) + (let* ((v1-6 (-> self other-entity)) + (a0-4 (if v1-6 (-> v1-6 extra process)))) + (when a0-4 + (set! (-> (the-as swamp-rope a0-4) parent-rp) (the-as int (-> self frame value))) + (set! (-> (the-as swamp-rope a0-4) frame vector-overlay quad) (-> self root trans quad)))) + (ja :num-func num-func-identity :frame-num (* (-> self frame value) (the float (ja-num-frames 0)))) + (suspend))) + :post swamp-rope-post) (defstate swamp-rope-idle-arm (swamp-rope) :trans swamp-rope-trans - :code (behavior () - (ja :group! swamp-rope-slack-ja) - (loop - (let* ((a0-3 (-> self other-entity)) - (v1-3 (if a0-3 - (-> a0-3 extra process) - ) - ) - ) - (if v1-3 - (set! (-> self frame target) (- 1.0 (-> (the-as swamp-rope v1-3) scale-t))) - ) - ) - (swamp-rope-oscillator-method-10 (-> self frame) 0.0) - (ja :num-func num-func-identity :frame-num (* (-> self frame value) (the float (ja-num-frames 0)))) - (suspend) - ) - ) - :post swamp-rope-post - ) + :code + (behavior () + (ja :group! swamp-rope-slack-ja) + (loop + (let* ((a0-3 (-> self other-entity)) + (v1-3 (if a0-3 (-> a0-3 extra process)))) + (if v1-3 (set! (-> self frame target) (- 1.0 (-> (the-as swamp-rope v1-3) scale-t))))) + (swamp-rope-oscillator-method-10 (-> self frame) 0.0) + (ja :num-func num-func-identity :frame-num (* (-> self frame value) (the float (ja-num-frames 0)))) + (suspend))) + :post swamp-rope-post) (defbehavior swamp-rope-init-by-other swamp-rope ((arg0 vector) (arg1 entity-actor)) (set! (-> self root) (new 'process 'trsqv)) @@ -1278,28 +948,19 @@ (init! (-> self frame) 0.0 0.002 0.02 (-> gp-1 damping)) (set! (-> self parent-rp) (-> gp-1 blimp-rp)) (set! (-> self other-rp) (-> gp-1 other-rp)) - (if (-> gp-1 connected-to-rock) - (go swamp-rope-idle-rock) - (go swamp-rope-idle-arm) - ) - ) - ) + (if (-> gp-1 connected-to-rock) (go swamp-rope-idle-rock) (go swamp-rope-idle-arm)))) (go swamp-rope-break) - (none) - ) + (none)) (defbehavior blimp-trans swamp-blimp () (when (< (-> self y-offset) (-> self y-offset-target)) (+! (-> self y-vel) (* 0.4096 (-> *display* time-adjust-ratio))) (set! (-> self y-vel) - (fmax 4.096 (fmin (fmin 819.2 (* 0.01 (- (-> self y-offset-target) (-> self y-offset)))) (-> self y-vel))) - ) + (fmax 4.096 (fmin (fmin 819.2 (* 0.01 (- (-> self y-offset-target) (-> self y-offset)))) (-> self y-vel)))) (+! (-> self y-offset) (* (-> self y-vel) (-> *display* time-adjust-ratio))) (when (>= (-> self y-offset) (-> self y-offset-target)) (set! (-> self y-offset) (-> self y-offset-target)) - (set! (-> self y-vel) 0.0) - ) - ) + (set! (-> self y-vel) 0.0))) (update-timer! (-> self scale-rand)) (set! (-> self scale-oscillator target) (* 0.9 (-> self scale-oscillator target))) (swamp-rope-oscillator-method-10 (-> self scale-oscillator) (-> self scale-rand value)) @@ -1308,8 +969,7 @@ (set! (-> a3-0 x) (sqrtf (/ 1.0 (-> a3-0 y)))) (set! (-> a3-0 z) (-> a3-0 x)) (set! (-> a3-0 w) 1.0) - (set-trs! (-> self bag) (the-as vector #f) (the-as quaternion #f) a3-0) - ) + (set-trs! (-> self bag) (the-as vector #f) (the-as quaternion #f) a3-0)) (update-timer! (-> self main-tilt-rand)) (update-timer! (-> self pos-rand)) (swamp-blimp-oscillator-method-10 (-> self main-tilt-oscillator) (-> self main-tilt-rand value)) @@ -1321,73 +981,45 @@ 0.0 (vector-normalize! (-> self gondola-tilt-oscillator value) 1.0) (let ((f30-0 (acos (-> self gondola-tilt-oscillator value y)))) - (set-vector! - s5-0 - (-> self gondola-tilt-oscillator value z) - 0.0 - (- (-> self gondola-tilt-oscillator value x)) - 1.0 - ) + (set-vector! s5-0 (-> self gondola-tilt-oscillator value z) 0.0 (- (-> self gondola-tilt-oscillator value x)) 1.0) (vector-normalize! s5-0 1.0) - (quaternion-vector-angle! gp-0 s5-0 f30-0) - ) + (quaternion-vector-angle! gp-0 s5-0 f30-0)) (set-trs! (-> self gondola) (the-as vector #f) gp-0 (the-as vector #f)) (vector-normalize! (-> self main-tilt-oscillator value) 1.0) (let ((f30-1 (acos (-> self main-tilt-oscillator value y)))) (set-vector! s5-0 (-> self main-tilt-oscillator value z) 0.0 (- (-> self main-tilt-oscillator value x)) 1.0) (vector-normalize! s5-0 1.0) - (quaternion-vector-angle! gp-0 s5-0 f30-1) - ) - ) - (quaternion*! (-> self root quat) gp-0 (-> self rot-at-init)) - ) + (quaternion-vector-angle! gp-0 s5-0 f30-1))) + (quaternion*! (-> self root quat) gp-0 (-> self rot-at-init))) (quaternion-normalize! (-> self root quat)) (vector+! (-> self root trans) (-> self trans-at-init) (-> self pos-oscillator value)) - (set! (-> self root trans y) (+ (-> self root trans y) (-> self y-offset))) - ) + (set! (-> self root trans y) (+ (-> self root trans y) (-> self y-offset)))) (defstate swamp-blimp-bye-bye (swamp-blimp) - :enter (behavior () - (let ((gp-0 (entity-actor-lookup (-> self entity) 'alt-actor (-> *SWAMP_BLIMP-bank* arm-index)))) - (when gp-0 - (entity-birth-no-kill gp-0) - (let ((a0-2 (-> gp-0 extra process))) - (if a0-2 - (send-event a0-2 'arm-sink-evt) - ) - ) - ) - ) - (set! (-> self draw force-lod) 0) - 0 - ) + :enter + (behavior () + (let ((gp-0 (entity-actor-lookup (-> self entity) 'alt-actor (-> *SWAMP_BLIMP-bank* arm-index)))) + (when gp-0 + (entity-birth-no-kill gp-0) + (let ((a0-2 (-> gp-0 extra process))) (if a0-2 (send-event a0-2 'arm-sink-evt))))) + (set! (-> self draw force-lod) 0) + 0) :trans blimp-trans - :code (behavior () - (set-time! (-> self state-time)) - (let ((gp-0 (new 'stack-no-clear 'quaternion))) - (quaternion-copy! gp-0 (-> self rot-at-init)) - (loop - (quaternion-vector-angle! - (-> self rot-at-init) - (new 'static 'vector :y 1.0 :w 1.0) - (* 18.204445 (the float (- (current-time) (-> self state-time)))) - ) - (quaternion*! (-> self rot-at-init) (-> self rot-at-init) gp-0) - (if (< (-> self pos-oscillator target x) 409600.0) - (+! (-> self pos-oscillator target x) 40.96) - ) - (if (< (-> self pos-oscillator target y) 4096000.0) - (+! (-> self pos-oscillator target y) 819.2) - ) - (if (< (-> self pos-oscillator target z) 4096000.0) - (+! (-> self pos-oscillator target z) 1228.8) - ) - (suspend) - ) - ) - ) - :post transform-post - ) + :code + (behavior () + (set-time! (-> self state-time)) + (let ((gp-0 (new 'stack-no-clear 'quaternion))) + (quaternion-copy! gp-0 (-> self rot-at-init)) + (loop + (quaternion-vector-angle! (-> self rot-at-init) + (new 'static 'vector :y 1.0 :w 1.0) + (* 18.204445 (the float (- (current-time) (-> self state-time))))) + (quaternion*! (-> self rot-at-init) (-> self rot-at-init) gp-0) + (if (< (-> self pos-oscillator target x) 409600.0) (+! (-> self pos-oscillator target x) 40.96)) + (if (< (-> self pos-oscillator target y) 4096000.0) (+! (-> self pos-oscillator target y) 819.2)) + (if (< (-> self pos-oscillator target z) 4096000.0) (+! (-> self pos-oscillator target z) 1228.8)) + (suspend)))) + :post transform-post) (defbehavior swamp-blimp-setup swamp-blimp () (rlet ((vf0 :class vf)) @@ -1400,54 +1032,26 @@ (when s4-0 (cond ((= s5-0 (-> *SWAMP_BLIMP-bank* arm-index)) - (vector+! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (-> (the-as swamp-rope s4-0) other-pos) - ) - (vector-! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (-> self root trans) - ) - ) + (vector+! (the-as vector (-> self pos-oscillator)) + (the-as vector (-> self pos-oscillator)) + (-> (the-as swamp-rope s4-0) other-pos)) + (vector-! (the-as vector (-> self pos-oscillator)) (the-as vector (-> self pos-oscillator)) (-> self root trans))) ((swamp-rope-method-20 (the-as swamp-rope s4-0)) - (vector+! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (-> (the-as swamp-rope s4-0) other-pos) - ) - (vector-! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (-> self trans-at-init) - ) - (+! gp-0 1) - ) + (vector+! (the-as vector (-> self pos-oscillator)) + (the-as vector (-> self pos-oscillator)) + (-> (the-as swamp-rope s4-0) other-pos)) + (vector-! (the-as vector (-> self pos-oscillator)) (the-as vector (-> self pos-oscillator)) (-> self trans-at-init)) + (+! gp-0 1)) (else - (vector-! - (the-as vector (-> self gondola-tilt-oscillator)) - (the-as vector (-> self gondola-tilt-oscillator)) - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> self node-list data (-> (the-as swamp-rope s4-0) parent-rp)) - ) - ) - (vector+! - (the-as vector (-> self gondola-tilt-oscillator)) - (the-as vector (-> self gondola-tilt-oscillator)) - (-> self root trans) - ) - ) - ) - ) - ) - ) - (vector-float*! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (/ 1.0 (the float (+ gp-0 1))) - ) + (vector-! (the-as vector (-> self gondola-tilt-oscillator)) + (the-as vector (-> self gondola-tilt-oscillator)) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data (-> (the-as swamp-rope s4-0) parent-rp)))) + (vector+! (the-as vector (-> self gondola-tilt-oscillator)) + (the-as vector (-> self gondola-tilt-oscillator)) + (-> self root trans))))))) + (vector-float*! (the-as vector (-> self pos-oscillator)) + (the-as vector (-> self pos-oscillator)) + (/ 1.0 (the float (+ gp-0 1)))) (set! (-> self pos-oscillator target y) 0.0) (set! (-> self scale-oscillator target) -0.2) (+! (-> self y-offset-target) (-> *SWAMP_BLIMP-bank* rise-per-break)) @@ -1457,74 +1061,48 @@ (set! (-> v1-29 target x) 0.0) (set! (-> v1-29 target y) 1.0) (set! (-> v1-29 target z) 0.0) - (set! (-> v1-29 target w) 1.0) - ) - (set! (-> self arm-timer) (-> *SWAMP_BLIMP-bank* pause-before-dropping-arm)) - ) + (set! (-> v1-29 target w) 1.0)) + (set! (-> self arm-timer) (-> *SWAMP_BLIMP-bank* pause-before-dropping-arm))) (else - (set! (-> self gondola-tilt-oscillator target y) 0.0) - (vector-normalize! (the-as vector (-> self gondola-tilt-oscillator)) 1.0) - (set! (-> self gondola-tilt-oscillator target y) (the float (+ gp-0 1))) - (vector-normalize! (the-as vector (-> self gondola-tilt-oscillator)) 1.0) - ) - ) - gp-0 - ) - ) - ) + (set! (-> self gondola-tilt-oscillator target y) 0.0) + (vector-normalize! (the-as vector (-> self gondola-tilt-oscillator)) 1.0) + (set! (-> self gondola-tilt-oscillator target y) (the float (+ gp-0 1))) + (vector-normalize! (the-as vector (-> self gondola-tilt-oscillator)) 1.0))) + gp-0))) (defstate swamp-blimp-idle (swamp-blimp) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('tetherrock-break-evt) - (increment-success-for-hint (text-id swamp-tetherrock-eco-yellow-hint)) - (swamp-blimp-setup) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('tetherrock-break-evt) (increment-success-for-hint (text-id swamp-tetherrock-eco-yellow-hint)) (swamp-blimp-setup)))) :trans blimp-trans - :code (behavior () - (ja :group! swamp-blimp-idle-ja) - (loop - (when (< 300 (-> self arm-timer)) - (set! (-> self arm-timer) - (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) - (if (>= 300 (-> self arm-timer)) - (+! (-> self pos-oscillator target y) (* 16384.0 (-> *display* time-adjust-ratio))) - ) - ) - (when (< 240 (-> self arm-timer)) - (set! (-> self arm-timer) - (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) - (if (>= 150 (-> self arm-timer)) - (set! (-> self scale-oscillator target) 0.2) - ) - ) - (when (> (-> self arm-timer) 0) - (set! (-> self arm-timer) - (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) - (when (<= (-> self arm-timer) 0) - (set! (-> self scale-oscillator target) -0.2) - (go swamp-blimp-bye-bye) - ) - ) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (ja :group! swamp-blimp-idle-ja) + (loop + (when (< 300 (-> self arm-timer)) + (set! (-> self arm-timer) + (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter)))) + (if (>= 300 (-> self arm-timer)) (+! (-> self pos-oscillator target y) (* 16384.0 (-> *display* time-adjust-ratio))))) + (when (< 240 (-> self arm-timer)) + (set! (-> self arm-timer) + (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter)))) + (if (>= 150 (-> self arm-timer)) (set! (-> self scale-oscillator target) 0.2))) + (when (> (-> self arm-timer) 0) + (set! (-> self arm-timer) + (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter)))) + (when (<= (-> self arm-timer) 0) + (set! (-> self scale-oscillator target) -0.2) + (go swamp-blimp-bye-bye))) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend))) + :post transform-post) (defmethod init-from-entity! ((this swamp-blimp) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) @@ -1533,12 +1111,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 409600.0) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *swamp-blimp-sg* '()) (quaternion-copy! (-> this rot-at-init) (-> this root quat)) @@ -1551,34 +1127,25 @@ (let ((s5-1 (new 'stack-no-clear 'vector))) (set-vector! s5-1 0.0 1.0 0.0 1.0) (init! (-> this main-tilt-oscillator) s5-1 0.001 0.01 0.99) - (init! (-> this gondola-tilt-oscillator) s5-1 0.001 0.01 0.99) - ) + (init! (-> this gondola-tilt-oscillator) s5-1 0.001 0.01 0.99)) (init! (-> this pos-rand) 1500 2400 20480.0 4096.0) (init! (-> this pos-oscillator) (the-as vector #f) 0.00032768 1638.4 0.995) (init! (-> this scale-rand) 1500 2400 0.02) (init! (-> this scale-oscillator) 0.0 0.002 0.015 0.99) (dotimes (v1-38 5) - (set! (-> this the-ropes v1-38) (the-as handle #f)) - ) + (set! (-> this the-ropes v1-38) (the-as handle #f))) (let ((s5-2 (entity-actor-count (-> this entity) 'alt-actor))) (dotimes (s4-1 s5-2) (let ((s3-1 (entity-actor-lookup (-> this entity) 'alt-actor s4-1))) (if s3-1 - (set! (-> this the-ropes s4-1) - (ppointer->handle (process-spawn swamp-rope (-> this trans-at-init) s3-1 :to this)) - ) - ) - ) - ) - ) + (set! (-> this the-ropes s4-1) (ppointer->handle (process-spawn swamp-rope (-> this trans-at-init) s3-1 :to this))))))) (set! (-> this gondola) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) this 5)) (set! (-> this bag) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) this 3)) (logclear! (-> this mask) (process-mask actor-pause)) (process-entity-status! this (entity-perm-status bit-7) #t) (swamp-blimp-setup) (go swamp-blimp-idle) - (none) - ) + (none)) (defun-debug bustarock ((arg0 int)) (with-pp @@ -1593,19 +1160,6 @@ (set! (-> a1-1 param 0) (the-as uint 'eco-yellow)) (set! (-> a1-1 param 1) (the-as uint 'eco-yellow)) (let ((t9-3 send-event-function) - (v1-4 gp-1) - ) - (t9-3 - (if v1-4 - (-> v1-4 extra process) - ) - a1-1 - ) - ) - ) - ) - (format #t "found the rock~%") - ) - ) - ) - ) + (v1-4 gp-1)) + (t9-3 (if v1-4 (-> v1-4 extra process)) a1-1)))) + (format #t "found the rock~%"))))) diff --git a/goal_src/jak1/levels/village2/village2-obs.gc b/goal_src/jak1/levels/village2/village2-obs.gc index e96e8c33c0..b8831fea79 100644 --- a/goal_src/jak1/levels/village2/village2-obs.gc +++ b/goal_src/jak1/levels/village2/village2-obs.gc @@ -1,154 +1,118 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/rigid-body.gc") (require "engine/camera/pov-camera.gc") (require "engine/game/task/task-control.gc") -;; name: village2-obs.gc -;; name in dgo: village2-obs -;; dgos: L1, VI2 - - ;; DECOMP BEGINS (deftype village2cam (pov-camera) - ((seq uint64) - ) - ) + ((seq uint64))) - -(defskelgroup *village2cam-sg* village2cam village2cam-lod0-jg -1 - ((village2cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *village2cam-sg* + village2cam + village2cam-lod0-jg + -1 + ((village2cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defmethod set-stack-size! ((this village2cam)) (stack-size-set! (-> this main-thread) 512) - (none) - ) + (none)) (defstate pov-camera-playing (village2cam) :virtual #t - :code (behavior () - (let ((v1-0 (-> self seq))) - (cond - ((zero? v1-0) - (ja-no-eval :group! village2cam-elevator-at-top-going-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((= v1-0 1) - (ja-no-eval :group! village2cam-elevator-at-bottom-going-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((= v1-0 2) - (pov-camera-play-and-reposition - (the-as art-joint-anim village2cam-elevator-at-top-going-up-ja) - (new 'static 'vector :x 2199552.0 :y 40960.0 :z -6676480.0) - 1.0 - ) - ) - (else - (suspend) - 0 - ) - ) - ) - (go-virtual pov-camera-done-playing) - ) - ) - -(defskelgroup *med-res-rolling-sg* medres-rolling medres-rolling-lod0-jg medres-rolling-idle-ja - ((medres-rolling-lod0-mg (meters 999999))) - :bounds (static-spherem -520 110 70 100) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-rolling1-sg* medres-rolling1 medres-rolling1-lod0-jg medres-rolling1-idle-ja - ((medres-rolling1-lod0-mg (meters 999999))) - :bounds (static-spherem -300 30 -20 120) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-village2-sg* medres-village2 medres-village2-lod0-jg medres-village2-idle-ja - ((medres-village2-lod0-mg (meters 999999))) - :bounds (static-spherem -60 65 0 90) - :longest-edge (meters 0.01) - ) + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (ja-no-eval :group! village2cam-elevator-at-top-going-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((= v1-0 1) + (ja-no-eval :group! village2cam-elevator-at-bottom-going-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((= v1-0 2) + (pov-camera-play-and-reposition (the-as art-joint-anim village2cam-elevator-at-top-going-up-ja) + (new 'static 'vector :x 2199552.0 :y 40960.0 :z -6676480.0) + 1.0)) + (else (suspend) 0))) + (go-virtual pov-camera-done-playing))) + +(defskelgroup *med-res-rolling-sg* + medres-rolling + medres-rolling-lod0-jg + medres-rolling-idle-ja + ((medres-rolling-lod0-mg (meters 999999))) + :bounds (static-spherem -520 110 70 100) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-rolling1-sg* + medres-rolling1 + medres-rolling1-lod0-jg + medres-rolling1-idle-ja + ((medres-rolling1-lod0-mg (meters 999999))) + :bounds (static-spherem -300 30 -20 120) + :longest-edge (meters 0.01)) + +(defskelgroup *med-res-village2-sg* + medres-village2 + medres-village2-lod0-jg + medres-village2-idle-ja + ((medres-village2-lod0-mg (meters 999999))) + :bounds (static-spherem -60 65 0 90) + :longest-edge (meters 0.01)) (deftype pontoon (rigid-body-platform) - ((anchor-point vector :inline) - (task uint8) - (alt-task uint8) - ) + ((anchor-point vector :inline) + (task uint8) + (alt-task uint8)) (:states - pontoon-die - pontoon-hidden - ) - ) - + pontoon-die + pontoon-hidden)) (defstate pontoon-hidden (pontoon) - :enter (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (clear-collide-with-as (-> self root-overlay)) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (restore-collide-with-as (-> self root-overlay)) - ) - :trans (behavior () - (if (task-closed? (the-as game-task (-> self task)) (task-status need-resolution)) - (go-virtual rigid-body-platform-idle) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :enter + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (clear-collide-with-as (-> self root-overlay))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (restore-collide-with-as (-> self root-overlay))) + :trans + (behavior () + (if (task-closed? (the-as game-task (-> self task)) (task-status need-resolution)) (go-virtual rigid-body-platform-idle))) + :code + (behavior () + (loop + (suspend)))) (defstate pontoon-die (pontoon) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self))) (defstate rigid-body-platform-float (pontoon) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (cleanup-for-death self) - (deactivate self) - ) - (else - (rigid-body-platform-event-handler proc argc message block) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) (cleanup-for-death self) (deactivate self)) + (else (rigid-body-platform-event-handler proc argc message block))))) (defstate rigid-body-platform-idle (pontoon) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (cleanup-for-death self) - (deactivate self) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) (cleanup-for-death self) (deactivate self))))) (defmethod init-from-entity! ((this pontoon) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -160,113 +124,98 @@ (set! (-> this task) (the-as uint (-> arg0 extra perm task))) (set! (-> this alt-task) (res-lump-value arg0 'alt-task uint)) (cond - ((and (nonzero? (-> this alt-task)) - (task-closed? (the-as game-task (-> this alt-task)) (task-status need-resolution)) - ) - (go pontoon-die) - ) - ((zero? (-> this task)) - (go (method-of-object this rigid-body-platform-idle)) - ) + ((and (nonzero? (-> this alt-task)) (task-closed? (the-as game-task (-> this alt-task)) (task-status need-resolution))) + (go pontoon-die)) + ((zero? (-> this task)) (go (method-of-object this rigid-body-platform-idle))) ((task-closed? (the-as game-task (-> this task)) (task-status need-resolution)) - (go (method-of-object this rigid-body-platform-idle)) - ) - (else - (go pontoon-hidden) - ) - ) + (go (method-of-object this rigid-body-platform-idle))) + (else (go pontoon-hidden))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-23 ((this pontoon) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this 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) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :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) - :inertial-tensor-z (meters 3.2) - :idle-distance (meters 90) - :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) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 0.98 - :angular-damping 0.95 - :control-point-count 4 - :mass 4.0 - :inertial-tensor-x (meters 5) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 3.2) - :idle-distance (meters 90) - :platform #t - :sound-name "pontoonten" - ) - ) - -(deftype pontoonfive (pontoon) - () - ) - - -(deftype pontoonten (pontoon) - () - ) - - -(defskelgroup *pontoonfive-sg* pontoonfive pontoonfive-lod0-jg pontoonfive-idle-ja - ((pontoonfive-lod0-mg (meters 20)) (pontoonfive-lod1-mg (meters 40)) (pontoonfive-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - :longest-edge (meters 3.5) - ) - -(defskelgroup *pontoonten-sg* pontoonten pontoonten-lod0-jg pontoonten-idle-ja - ((pontoonten-lod0-mg (meters 20)) (pontoonten-lod1-mg (meters 40)) (pontoonten-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 7) - :longest-edge (meters 4) - ) + (none)) + +(define *pontoonfive-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.0 + :max-buoyancy-depth (meters 3) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :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) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 90) + :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) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 0.98 + :angular-damping 0.95 + :control-point-count 4 + :mass 4.0 + :inertial-tensor-x (meters 5) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 90) + :platform #t + :sound-name "pontoonten")) + +(deftype pontoonfive (pontoon) ()) + +(deftype pontoonten (pontoon) ()) + +(defskelgroup *pontoonfive-sg* + pontoonfive + pontoonfive-lod0-jg + pontoonfive-idle-ja + ((pontoonfive-lod0-mg (meters 20)) (pontoonfive-lod1-mg (meters 40)) (pontoonfive-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :longest-edge (meters 3.5)) + +(defskelgroup *pontoonten-sg* + pontoonten + pontoonten-lod0-jg + pontoonten-idle-ja + ((pontoonten-lod0-mg (meters 20)) (pontoonten-lod1-mg (meters 40)) (pontoonten-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 4)) (defmethod rigid-body-platform-method-30 ((this pontoonfive)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) @@ -275,15 +224,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this pontoonfive)) (initialize-skeleton this *pontoonfive-sg* '()) @@ -294,39 +240,32 @@ (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 w) 1.0)) (let ((v1-8 (-> this 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 w) 1.0)) (let ((v1-10 (-> this 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 w) 1.0)) (let ((v1-12 (-> this 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 w) 1.0)) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (nav-mesh-connect this (-> this root-overlay) (the-as nav-control #f)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-30 ((this pontoonten)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) @@ -335,15 +274,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 25395.2) - (set-root-prim! s5-0 s4-0) - ) + (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! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this pontoonten)) (initialize-skeleton this *pontoonten-sg* '()) @@ -354,183 +290,141 @@ (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 w) 1.0)) (let ((v1-8 (-> this 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 w) 1.0)) (let ((v1-10 (-> this 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 w) 1.0)) (let ((v1-12 (-> this 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 w) 1.0)) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (nav-mesh-connect this (-> this root-overlay) (the-as nav-control #f)) 0 - (none) - ) + (none)) (defpartgroup group-allpontoons-trail :id 563 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2841 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)) - (sp-item 2842 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 2841 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)) + (sp-item 2842 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)))) (defpart 2841 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 0) (meters 9)) - (:y (meters 0.1)) - (:scale-x (meters 0.2) (meters 2)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.01) (meters 0.001)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2843) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 0) (meters 9)) + (:y (meters 0.1)) + (:scale-x (meters 0.2) (meters 2)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.01) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2843) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2843 - :init-specs ((:fade-a -0.094814815)) - ) + :init-specs ((:fade-a -0.094814815))) (defpart 2842 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 8) (meters 8)) - (:y (meters 0.1)) - (:scale-x (meters 0.2) (meters 2)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667) (meters 0.001)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2843) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 8) (meters 8)) + (:y (meters 0.1)) + (:scale-x (meters 0.2) (meters 2)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2843) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (deftype allpontoons (process-drawable) - ((task uint8) - ) - (:states - (allpontoons-be-clone handle) - allpontoons-idle - ) - ) + ((task uint8)) + (:states (allpontoons-be-clone handle) + allpontoons-idle)) - -(defskelgroup *allpontoons-sg* allpontoons allpontoons-lod0-jg allpontoons-idle-ja - ((allpontoons-lod0-mg (meters 999999))) - :bounds (static-spherem 32 0 -5 34) - ) +(defskelgroup *allpontoons-sg* + allpontoons + allpontoons-lod0-jg + allpontoons-idle-ja + ((allpontoons-lod0-mg (meters 999999))) + :bounds (static-spherem 32 0 -5 34)) (defstate allpontoons-be-clone (allpontoons) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('end-mode) - (cleanup-for-death self) - (deactivate self) - ) - ) - ) - :enter (behavior ((arg0 handle)) - (logclear! (-> self draw status) (draw-status hidden)) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (when (>= (ja-aframe-num 0) 500.0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 1)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 2)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 3)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 4)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 5)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 6)) - ) - ) - ) - :code (behavior ((arg0 handle)) - (clone-anim arg0 3 #t "") - (cleanup-for-death self) - (deactivate self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('end-mode) (cleanup-for-death self) (deactivate self)))) + :enter + (behavior ((arg0 handle)) + (logclear! (-> self draw status) (draw-status hidden)) + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (when (>= (ja-aframe-num 0) 500.0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 1))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 2))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 3))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 4))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 5))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 6))))) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (cleanup-for-death self) + (deactivate self))) (defstate allpontoons-idle (allpontoons) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('clone) - (go allpontoons-be-clone (the-as handle (-> block param 0))) - ) - ) - ) - :enter (behavior () - (logior! (-> self draw status) (draw-status hidden)) - ) - :code (behavior () - (loop - (when (and (nonzero? (-> self task)) (task-closed? (the-as game-task (-> self task)) (task-status need-resolution))) - (cleanup-for-death self) - (deactivate self) - ) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('clone) (go allpontoons-be-clone (the-as handle (-> block param 0)))))) + :enter + (behavior () + (logior! (-> self draw status) (draw-status hidden))) + :code + (behavior () + (loop + (when (and (nonzero? (-> self task)) (task-closed? (the-as game-task (-> self task)) (task-status need-resolution))) + (cleanup-for-death self) + (deactivate self)) + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defmethod init-from-entity! ((this allpontoons) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -539,27 +433,23 @@ (set! (-> this task) (the-as uint (-> arg0 extra perm task))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 563) this)) (go allpontoons-idle) - (none) - ) + (none)) (deftype fireboulder (process-drawable) - ((root collide-shape :override) - (tracker handle) - (task uint8) - ) - (:states - (fireboulder-be-clone handle) - fireboulder-hover - fireboulder-idle - ) - ) - - -(defskelgroup *fireboulder-sg* fireboulder fireboulder-lod0-jg fireboulder-idle-ja - ((fireboulder-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3.5 0 6) - :longest-edge (meters 3.5) - ) + ((root collide-shape :override) + (tracker handle) + (task uint8)) + (:states (fireboulder-be-clone handle) + fireboulder-hover + fireboulder-idle)) + +(defskelgroup *fireboulder-sg* + fireboulder + fireboulder-lod0-jg + fireboulder-idle-ja + ((fireboulder-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3.5 0 6) + :longest-edge (meters 3.5)) (defbehavior fireboulder-disable-blocking-collision fireboulder () (let ((v1-1 (-> self root root-prim))) @@ -568,16 +458,11 @@ (when (= (-> a1-2 prim-id) 256) (set! (-> a1-2 prim-core collide-as) (collide-kind)) (set! (-> a1-2 collide-with) (collide-kind)) - 0 - ) - ) - ) + 0))) (set! (-> v1-1 local-sphere x) 0.0) - (set! (-> v1-1 local-sphere w) 24576.0) - ) + (set! (-> v1-1 local-sphere w) 24576.0)) 0 - (none) - ) + (none)) (defbehavior fireboulder-hover-stuff fireboulder () (local-vars (v0-1 object)) @@ -587,141 +472,106 @@ ((handle->process (-> self tracker)) (let ((v1-6 (-> (the-as (pointer part-tracker) (-> self tracker process)) 0))) (set-time! (-> v1-6 start-time)) - (set! v0-1 (-> v1-6 root trans)) - ) - (set! (-> (the-as vector v0-1) quad) (-> gp-0 quad)) - ) + (set! v0-1 (-> v1-6 root trans))) + (set! (-> (the-as vector v0-1) quad) (-> gp-0 quad))) (else - (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) - (set! v0-1 - (ppointer->handle - (when gp-1 - (let ((t9-2 (method-of-type part-tracker activate))) - (t9-2 (the-as part-tracker gp-1) *entity-pool* 'part-tracker (the-as pointer #x70004000)) - ) - (run-now-in-process gp-1 part-tracker-init (-> *part-group-id-table* 678) -1 #f #f #f (-> self root trans)) - (-> gp-1 ppointer) - ) - ) - ) - ) - (set! (-> self tracker) (the-as handle v0-1)) - ) - ) - ) - v0-1 - ) + (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 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) - (ja :group! fireboulder-hover-ja) - (logclear! (-> self draw status) (draw-status hidden)) - (set! (-> self root trans quad) (-> self entity extra trans quad)) - (vector-reset! (-> self draw origin)) - (logior! (-> self skel status) (janim-status inited)) - (ja-post) - (logclear! (-> self skel status) (janim-status inited)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node fireboulder-lod0-jg bouldercenter)) - (vector-! (-> self draw bounds) gp-0 (-> self root trans)) - ) - (set! (-> self draw bounds w) 24576.0) - ) - :exit (behavior () - (stop! (-> self sound)) - ) - :trans (behavior () - (fireboulder-hover-stuff) - (update! (-> self sound)) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 455.1111 (-> *display* time-adjust-ratio))) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (fireboulder-disable-blocking-collision) + (ja-channel-set! 1) + (ja :group! fireboulder-hover-ja) + (logclear! (-> self draw status) (draw-status hidden)) + (set! (-> self root trans quad) (-> self entity extra trans quad)) + (vector-reset! (-> self draw origin)) + (logior! (-> self skel status) (janim-status inited)) + (ja-post) + (logclear! (-> self skel status) (janim-status inited)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node fireboulder-lod0-jg bouldercenter)) + (vector-! (-> self draw bounds) gp-0 (-> self root trans))) + (set! (-> self draw bounds w) 24576.0)) + :exit + (behavior () + (stop! (-> self sound))) + :trans + (behavior () + (fireboulder-hover-stuff) + (update! (-> self sound))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 455.1111 (-> *display* time-adjust-ratio))) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate fireboulder-be-clone (fireboulder) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop-cloning) - (go fireboulder-hover) - ) - ) - ) - :enter (behavior ((arg0 handle)) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self skel status) (janim-status spool)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop-cloning) (go fireboulder-hover)))) + :enter + (behavior ((arg0 handle)) + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self skel status) (janim-status spool))) :trans fireboulder-hover-stuff - :code (behavior ((arg0 handle)) - (clone-anim arg0 3 #t "") - (format 0 "ERROR: fireboulder-be-clone ended~%") - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (format 0 "ERROR: fireboulder-be-clone ended~%") + (cleanup-for-death self) + (deactivate self))) (defstate fireboulder-idle (fireboulder) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('clone) - (go fireboulder-be-clone (the-as handle (-> block param 0))) - ) - ) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self tracker)))) - (if a0-1 - (deactivate a0-1) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (cond - ((zero? (-> self task)) - ) - ((handle->process (-> self tracker)) - (set-time! (-> (the-as (pointer part-tracker) (-> self tracker process)) 0 start-time)) - ) - (else - (set! (-> self tracker) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 271) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - ) - ) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('clone) (go fireboulder-be-clone (the-as handle (-> block param 0)))))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self tracker)))) (if a0-1 (deactivate a0-1)))) + :code + (behavior () + (transform-post) + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (cond + ((zero? (-> self task))) + ((handle->process (-> self tracker)) + (set-time! (-> (the-as (pointer part-tracker) (-> self tracker process)) 0 start-time))) + (else + (set! (-> self tracker) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 271) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*))))) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this fireboulder) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -739,8 +589,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 256)))) (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -748,162 +597,109 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 -24576.0 49152.0) - (append-prim s3-0 s2-1) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (cond ((name= (-> this name) "fireboulder-6") (quaternion-axis-angle! (-> this root quat) 0.0 1.0 0.0 16384.0) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "rock-hover" :fo-max 30) (-> this root trans)) - ) - ) - (else - (fireboulder-disable-blocking-collision) - ) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "rock-hover" :fo-max 30) (-> this root trans)))) + (else (fireboulder-disable-blocking-collision))) (initialize-skeleton this *fireboulder-sg* '()) (set! (-> this tracker) (the-as handle #f)) (set-vector! (-> this draw color-emissive) 0.125 0.0625 0.0 0.0) (set! (-> this task) (the-as uint (-> arg0 extra perm task))) (cond - ((zero? (-> this task)) - (go fireboulder-idle) - ) - ((= (get-task-status (-> arg0 extra perm task)) (task-status invalid)) - (go fireboulder-hover) - ) - (else - (go fireboulder-idle) - ) - ) - (none) - ) - -(deftype ceilingflag (process-drawable) - () - (:states - ceilingflag-idle - ) - ) + ((zero? (-> this task)) (go fireboulder-idle)) + ((= (get-task-status (-> arg0 extra perm task)) (task-status invalid)) (go fireboulder-hover)) + (else (go fireboulder-idle))) + (none)) +(deftype ceilingflag (process-drawable) () + (:states + ceilingflag-idle)) -(defskelgroup *ceilingflag-sg* ceilingflag ceilingflag-geo-jg ceilingflag-idle-ja - ((ceilingflag-geo-mg (meters 999999))) - :bounds (static-spherem 0 -4 0 7) - ) +(defskelgroup *ceilingflag-sg* + ceilingflag + ceilingflag-geo-jg + ceilingflag-idle-ja + ((ceilingflag-geo-mg (meters 999999))) + :bounds (static-spherem 0 -4 0 7)) (defstate ceilingflag-idle (ceilingflag) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this ceilingflag) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *ceilingflag-sg* '()) (go ceilingflag-idle) - (none) - ) + (none)) (deftype exit-chamber-dummy (process-drawable) - ((orig-trans vector :inline) - (fcell-handle handle) - ) + ((orig-trans vector :inline) + (fcell-handle handle)) (:methods - (skip-reminder? (_type_) symbol) - ) + (skip-reminder? (_type_) symbol)) (:states - exit-chamber-dummy-idle - exit-chamber-dummy-wait-to-appear - ) - ) + exit-chamber-dummy-idle + exit-chamber-dummy-wait-to-appear)) - -(defskelgroup *exit-chamber-dummy-sg* exit-chamber-dummy exit-chamber-dummy-lod0-jg -1 - ((exit-chamber-dummy-lod0-mg (meters 999999))) - :bounds (static-spherem 0 5 0 15) - ) +(defskelgroup *exit-chamber-dummy-sg* + exit-chamber-dummy + exit-chamber-dummy-lod0-jg + -1 + ((exit-chamber-dummy-lod0-mg (meters 999999))) + :bounds (static-spherem 0 5 0 15)) (defmethod skip-reminder? ((this exit-chamber-dummy)) (case (get-reminder (get-task-control (game-task sunken-room)) 0) - ((2) - (let ((v1-4 (level-get *level* 'sunken))) - (if (or (not v1-4) (!= (-> v1-4 status) 'active)) - (return #t) - ) - ) - ) - ) - #f - ) + ((2) (let ((v1-4 (level-get *level* 'sunken))) (if (or (not v1-4) (!= (-> v1-4 status) 'active)) (return #t))))) + #f) (defstate exit-chamber-dummy-wait-to-appear (exit-chamber-dummy) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (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)) - (+! (-> a0-3 y) 67584.0) - (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) - ) - ) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (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)) + (+! (-> a0-3 y) 67584.0) + (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))) (defstate exit-chamber-dummy-idle (exit-chamber-dummy) - :code (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (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 (current-time) 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)) - (+! (-> v1-14 y) 67584.0) - (send-event a0-7 'trans v1-14) - ) - ) - ) - (suspend) - ) - ) - (let ((a0-11 (handle->process (-> self fcell-handle)))) - (if a0-11 - (deactivate a0-11) - ) - ) - (go exit-chamber-dummy-wait-to-appear) - ) - :post ja-post - ) + :code + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (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 (current-time) 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)) + (+! (-> v1-14 y) 67584.0) + (send-event a0-7 'trans v1-14)))) + (suspend))) + (let ((a0-11 (handle->process (-> self fcell-handle)))) (if a0-11 (deactivate a0-11))) + (go exit-chamber-dummy-wait-to-appear)) + :post ja-post) (defmethod init-from-entity! ((this exit-chamber-dummy) (arg0 entity-actor)) (set! (-> this fcell-handle) (the-as handle #f)) @@ -915,217 +711,197 @@ (initialize-skeleton this *exit-chamber-dummy-sg* '()) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (logior! (-> this draw status) (draw-status hidden)) (go exit-chamber-dummy-wait-to-appear) - (none) - ) + (none)) (deftype ogreboss-village2 (process-drawable) - ((boulder handle) - ) + ((boulder handle)) (:states - ogreboss-village2-idle - ogreboss-village2-throw - ) - ) + ogreboss-village2-idle + ogreboss-village2-throw)) - -(defskelgroup *ogreboss-village2-sg* ogreboss-village2 ogreboss-village2-lod0-jg ogreboss-village2-idle-ja - ((ogreboss-village2-lod0-mg (meters 999999))) - :bounds (static-spherem 0 10 0 15) - ) +(defskelgroup *ogreboss-village2-sg* + ogreboss-village2 + ogreboss-village2-lod0-jg + ogreboss-village2-idle-ja + ((ogreboss-village2-lod0-mg (meters 999999))) + :bounds (static-spherem 0 10 0 15)) (defpartgroup group-ogreboulder-trail :id 564 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2319 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 2320 :fade-after (meters 200) :falloff-to (meters 200)) - ) - ) + :parts + ((sp-item 2319 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 2320 :fade-after (meters 200) :falloff-to (meters 200)))) (defpart 2320 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 8) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 32.0) - (:a 48.0 48.0) - (:vel-y (meters 0.0016666667) (meters 0.00083333335)) - (:scalevel-x (meters 0.04)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.21333334) - (:fade-g -0.10666667) - (:fade-b 0.10666667) - (:fade-a -0.32) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 32.0) + (:a 48.0 48.0) + (:vel-y (meters 0.0016666667) (meters 0.00083333335)) + (:scalevel-x (meters 0.04)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.21333334) + (:fade-g -0.10666667) + (:fade-b 0.10666667) + (:fade-a -0.32) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 1)) + (:flags (bit2 bit14)))) (defpart 2319 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 8) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 32.0) - (:a 80.0 80.0) - (:vel-y (meters 0.0016666667) (meters 0.00083333335)) - (:scalevel-x (meters 0.04)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.53333336) - (:fade-b -0.17777778) - (:fade-a -1.0666667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 32.0) + (:a 80.0 80.0) + (:vel-y (meters 0.0016666667) (meters 0.00083333335)) + (:scalevel-x (meters 0.04)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.53333336) + (:fade-b -0.17777778) + (:fade-a -1.0666667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-ogreboulder-hit-wall :id 551 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2287 :period (seconds 3) :length (seconds 0.135))) - ) + :parts ((sp-item 2287 :period (seconds 3) :length (seconds 0.135)))) (defpart 2287 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.4) (meters 0.1)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 10) (meters 6)) - (:r 196.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.4)) - (:fade-a -3.2) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.4) (meters 0.1)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 10) (meters 6)) + (:r 196.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.4)) + (:fade-a -3.2) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-ogreboulder-splash :id 552 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2288 :period (seconds 3) :length (seconds 0.067)) - (sp-item 2321 :flags (is-3d) :period (seconds 3) :length (seconds 0.035)) - (sp-item 2322 :flags (is-3d) :period (seconds 3) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 2288 :period (seconds 3) :length (seconds 0.067)) + (sp-item 2321 :flags (is-3d) :period (seconds 3) :length (seconds 0.035)) + (sp-item 2322 :flags (is-3d) :period (seconds 3) :length (seconds 0.035)))) (defpart 2321 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 0) (meters 9)) - (:scale-x (meters 16) (meters 8)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.026666667) (meters 0.026666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2323) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 0) (meters 9)) + (:scale-x (meters 16) (meters 8)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.026666667) (meters 0.026666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2323) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2323 - :init-specs ((:fade-a -0.094814815)) - ) + :init-specs ((:fade-a -0.094814815))) (defpart 2322 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 8) (meters 8)) - (:scale-x (meters 4.5) (meters 3.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2323) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 8) (meters 8)) + (:scale-x (meters 4.5) (meters 3.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2323) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2288 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 12) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 50.0) - (:g 80.0 64.0) - (:b 200.0) - (:a 48.0 48.0) - (:vel-y (meters 0.10666667) (meters 0.10666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.0005) (meters 0.0005)) - (:friction 0.85) - (:timer (seconds 2.2)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 8)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 12) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 50.0) + (:g 80.0 64.0) + (:b 200.0) + (:a 48.0 48.0) + (:vel-y (meters 0.10666667) (meters 0.10666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.0005) (meters 0.0005)) + (:friction 0.85) + (:timer (seconds 2.2)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 8)))) (defbehavior ogreboss-village2-trans ogreboss-village2 () (when (= (get-task-status (game-task village2-levitator)) (task-status invalid)) (cleanup-for-death self) - (deactivate self) - ) - (none) - ) + (deactivate self)) + (none)) (defbehavior boulder1-trans fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1134,23 +910,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "boulder-splash") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 552) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 552) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior boulder2-trans-2 fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1159,23 +922,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "boulder-splash") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 552) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 552) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior boulder2-trans fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1184,23 +934,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "v2ogre-boulder") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 551) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook boulder2-trans-2) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 551) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook boulder2-trans-2)) 0 - (none) - ) + (none)) (defbehavior boulder3-trans-2 fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1209,23 +946,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "boulder-splash") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 552) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 552) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior boulder3-trans fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1234,23 +958,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "v2ogre-boulder") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 551) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook boulder3-trans-2) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 551) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook boulder3-trans-2)) 0 - (none) - ) + (none)) (defbehavior boulder4-trans-3 fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1259,23 +970,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "boulder-splash") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 552) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 552) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior boulder4-trans-2 fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1284,23 +982,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "v2ogre-boulder") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 551) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook boulder4-trans-3) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 551) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook boulder4-trans-3)) 0 - (none) - ) + (none)) (defbehavior boulder4-trans fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1309,157 +994,97 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "v2ogre-boulder") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 551) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook boulder4-trans-2) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 551) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook boulder4-trans-2)) 0 - (none) - ) + (none)) (defstate ogreboss-village2-throw (ogreboss-village2) :trans ogreboss-village2-trans - :code (behavior () - (set! (-> self boulder) - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *fireboulder-sg* #f :to self)) - ) - (send-event (handle->process (-> self boulder)) 'anim-mode 'play1) - (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-pre-throw" 0) - (send-event (handle->process (-> self boulder)) 'draw #t) - (send-event (handle->process (-> self boulder)) 'origin-joint-index 4) - (send-event (handle->process (-> self boulder)) 'max-vis-dist 2048000.0) - (send-event - (handle->process (-> self boulder)) - 'eval - (lambda :behavior ogreboss-village2 - () - (let ((v0-0 (create-launch-control (-> *part-group-id-table* 564) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-village2-pre-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((f0-9 (rand-float-gen))) - (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 (seconds 0.2)) - (ja-no-eval :group! ogreboss-village2-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ogreboss-village2-idle) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self boulder) + (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *fireboulder-sg* #f :to self))) + (send-event (handle->process (-> self boulder)) 'anim-mode 'play1) + (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-pre-throw" 0) + (send-event (handle->process (-> self boulder)) 'draw #t) + (send-event (handle->process (-> self boulder)) 'origin-joint-index 4) + (send-event (handle->process (-> self boulder)) 'max-vis-dist 2048000.0) + (send-event (handle->process (-> self boulder)) + 'eval + (lambda :behavior ogreboss-village2 () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 564) self))) (set! (-> self part) v0-0) v0-0))) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-village2-pre-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((f0-9 (rand-float-gen))) + (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 (seconds 0.2)) + (ja-no-eval :group! ogreboss-village2-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ogreboss-village2-idle)) + :post ja-post) (defstate ogreboss-village2-idle (ogreboss-village2) :trans ogreboss-village2-trans - :code (behavior () - (loop - (ja-channel-push! 1 (seconds 0.1)) - (let ((v1-0 (rand-vu-int-range 0 2))) - (cond - ((zero? v1-0) - (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek! (ja-aframe 140.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 140.0 0))) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.167)) + :code + (behavior () + (loop + (ja-channel-push! 1 (seconds 0.1)) + (let ((v1-0 (rand-vu-int-range 0 2))) + (cond + ((zero? v1-0) + (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek! (ja-aframe 140.0 0)) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! ogreboss-village2-idle-ja - :num! (seek! (ja-aframe 168.0 0)) - :frame-num (ja-aframe 140.0 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 168.0 0))) - ) - (let ((gp-5 (current-time))) - (until (time-elapsed? gp-5 (seconds 0.167)) + (ja :num! (seek! (ja-aframe 140.0 0)))) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.167)) (suspend))) + (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek! (ja-aframe 168.0 0)) :frame-num (ja-aframe 140.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek!) :frame-num (ja-aframe 168.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((= v1-0 1) - (ja-no-eval :group! ogreboss-village2-idle-alt-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (dotimes (gp-7 4) - (ja-no-eval :group! ogreboss-village2-idle-bored-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - (let ((f0-33 (rand-float-gen))) - (cond - ((< 0.6666667 f0-33) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-village2-victory-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((not (handle->process (-> self boulder))) - (go ogreboss-village2-throw) - ) - ) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek! (ja-aframe 168.0 0)))) + (let ((gp-5 (current-time))) (until (time-elapsed? gp-5 (seconds 0.167)) (suspend))) + (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek!) :frame-num (ja-aframe 168.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((= v1-0 1) + (ja-no-eval :group! ogreboss-village2-idle-alt-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (dotimes (gp-7 4) + (ja-no-eval :group! ogreboss-village2-idle-bored-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))))) + (let ((f0-33 (rand-float-gen))) + (cond + ((< 0.6666667 f0-33) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-village2-victory-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((not (handle->process (-> self boulder))) (go ogreboss-village2-throw)))))) + :post ja-post) (defmethod init-from-entity! ((this ogreboss-village2) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -1475,13 +1100,10 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) - (append-prim s3-0 s2-0) - ) - ) + (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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *ogreboss-village2-sg* '()) (set-vector! (-> this root scale) 0.65 0.65 0.65 1.0) @@ -1490,43 +1112,35 @@ (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this boulder) (the-as handle #f)) (go ogreboss-village2-idle) - (none) - ) - -(deftype villageb-ogreboss (ogreboss-village2) - () - ) - - -(deftype villageb-water (water-anim) - () - ) - - -(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) - ) - ) - ) + (none)) + +(deftype villageb-ogreboss (ogreboss-village2) ()) + +(deftype villageb-water (water-anim) ()) + +(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 water-vol-method-22 ((this villageb-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this 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) - (set! (-> v1-2 waveform) ripple-for-villageb-water) - ) - (none) - ) + (set! (-> v1-2 waveform) ripple-for-villageb-water)) + (none)) diff --git a/goal_src/jak1/levels/village2/village2-part.gc b/goal_src/jak1/levels/village2/village2-part.gc index a484c16ea0..5673431766 100644 --- a/goal_src/jak1/levels/village2/village2-part.gc +++ b/goal_src/jak1/levels/village2/village2-part.gc @@ -1,1985 +1,1871 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/generic-obs-h.gc") -;; name: village2-part.gc -;; name in dgo: village2-part -;; dgos: L1, VI2 - ;; DECOMP BEGINS -(deftype villageb-part (part-spawner) - () - ) - +(deftype villageb-part (part-spawner) ()) (defpartgroup group-village2-moth :id 264 :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 1129 :fade-after (meters 120) :flags (bit1) :period (seconds 60.1) :length (seconds 0.017) :binding 1127) - (sp-item 1127 :flags (start-dead launch-asap) :binding 1128) - (sp-item 1128 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1129 :fade-after (meters 120) :flags (bit1) :period (seconds 60.1) :length (seconds 0.017) :binding 1127) + (sp-item 1127 :flags (start-dead launch-asap) :binding 1128) + (sp-item 1128 :flags (is-3d start-dead)))) (defpart 1129 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 60)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 60)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1127 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 1.5)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 60)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 1130) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 1.5)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 60)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 1130))) (defpart 1130 - :init-specs ((:vel-x (meters -0.035555556) (meters 0.07111111)) - (:vel-y (meters -0.0148148155) (meters 0.029629631)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 1130) - ) - ) + :init-specs + ((:vel-x (meters -0.035555556) (meters 0.07111111)) + (:vel-y (meters -0.0148148155) (meters 0.029629631)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 1130))) (defpart 1128 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.4)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.4)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit9 bit12)))) (defpartgroup group-village2-tableflys :id 265 :bounds (static-bspherem 0 3 0 10) - :parts ((sp-item 1133 :flags (launch-asap) :binding 1131) - (sp-item 1134 :flags (launch-asap) :binding 1131) - (sp-item 1135 :flags (launch-asap) :binding 1131) - (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) - (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) - (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) - (sp-item 1132 :flags (is-3d start-dead)) - (sp-item 1132 :flags (is-3d start-dead)) - (sp-item 1132 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1133 :flags (launch-asap) :binding 1131) + (sp-item 1134 :flags (launch-asap) :binding 1131) + (sp-item 1135 :flags (launch-asap) :binding 1131) + (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) + (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) + (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) + (sp-item 1132 :flags (is-3d start-dead)) + (sp-item 1132 :flags (is-3d start-dead)) + (sp-item 1132 :flags (is-3d start-dead)))) (defpart 1133 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 2)) - (:z (meters 5)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 2)) + (:z (meters 5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1136))) (defpart 1136 - :init-specs ((:timer (seconds 1)) (:next-time (seconds 0.5)) (:next-launcher 1136)) - ) + :init-specs ((:timer (seconds 1)) (:next-time (seconds 0.5)) (:next-launcher 1136))) (defpart 1134 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 4)) - (:y (meters 2)) - (:z (meters -2)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 4)) + (:y (meters 2)) + (:z (meters -2)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1136))) (defpart 1135 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -4)) - (:y (meters 2)) - (:z (meters -2)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -4)) + (:y (meters 2)) + (:z (meters -2)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1136))) (defpart 1131 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 1 2.0) - (:y (meters 0) (meters 16)) - (:z (meters 1) (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 1)) - (:flags (bit7)) - (:next-time (seconds 0.5)) - (:next-launcher 1136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 1 2.0) + (:y (meters 0) (meters 16)) + (:z (meters 1) (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 1)) + (:flags (bit7)) + (:next-time (seconds 0.5)) + (:next-launcher 1136))) (defpart 1132 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 3.0) - (:scale-x (meters 0.15)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.15)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 3.0) + (:scale-x (meters 0.15)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.15)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-village2-flamepot :id 266 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.641) :length (seconds 0.2)) - (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.73)) - (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.3) :length (seconds 0.3)) - (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.06) :length (seconds 2.23)) - (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.5) :length (seconds 0.1)) - (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.641) :length (seconds 0.2)) + (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.73)) + (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.3) :length (seconds 0.3)) + (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.06) :length (seconds 2.23)) + (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.5) :length (seconds 0.1)) + (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)))) (defpartgroup group-village2-flamepot-half :id 267 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1145 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1146 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1147 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1145 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1146 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1147 :fade-after (meters 50) :falloff-to (meters 60)))) (defpartgroup group-village2-flamepot-alt1 :id 268 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.26) :length (seconds 0.2)) - (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.45) :length (seconds 0.73)) - (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.76) :length (seconds 0.3)) - (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.59) :length (seconds 2.23)) - (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.04) :length (seconds 0.1)) - (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.26) :length (seconds 0.2)) + (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.45) :length (seconds 0.73)) + (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.76) :length (seconds 0.3)) + (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.59) :length (seconds 2.23)) + (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.04) :length (seconds 0.1)) + (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)))) (defpartgroup group-village2-flamepot-alt2 :id 269 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.031) :length (seconds 0.2)) - (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.96) :length (seconds 0.73)) - (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.15) :length (seconds 0.3)) - (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.57) :length (seconds 2.23)) - (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.857) :length (seconds 0.1)) - (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.031) :length (seconds 0.2)) + (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.96) :length (seconds 0.73)) + (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.15) :length (seconds 0.3)) + (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.57) :length (seconds 2.23)) + (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.857) :length (seconds 0.1)) + (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)))) (defpartgroup group-village2-flamepot-off :id 270 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1148 :fade-after (meters 100) :falloff-to (meters 100))) - ) + :parts ((sp-item 1148 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1144 - :init-specs ((:num 0.4) - (:x (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2949.12) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1149) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.4) + (:x (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2949.12) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1149) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1149 - :init-specs ((:fade-b -5.4613333)) - ) + :init-specs ((:fade-b -5.4613333))) (defpart 1147 - :init-specs ((:num 0.15) - (:x (meters 0.4)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3072.0) - (:vel-y (meters 0.01)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1150) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.15) + (:x (meters 0.4)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3072.0) + (:vel-y (meters 0.01)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1150) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1150 - :init-specs ((:fade-b -3.4133334)) - ) + :init-specs ((:fade-b -3.4133334))) (defpart 1137 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -0.25) (meters 0.75)) - (:y (meters -0.25)) - (:z (meters -0.25) (meters 0.75)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.011666667) (meters 0.0075)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -0.25) (meters 0.75)) + (:y (meters -0.25)) + (:z (meters -0.25) (meters 0.75)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.011666667) (meters 0.0075)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1145 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.35 0.25) - (:x (meters -0.1) (meters 0.1)) - (:y (meters -0.25)) - (:z (meters -0.1) (meters 0.1)) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.005) (meters 0.004166667)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.35 0.25) + (:x (meters -0.1) (meters 0.1)) + (:y (meters -0.25)) + (:z (meters -0.1) (meters 0.1)) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.005) (meters 0.004166667)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1138 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1 1.0) - (:x (meters 0) (meters 0.5)) - (:y (meters -0.25)) - (:z (meters 0) (meters 0.5)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.02) 1 (meters 0.005)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1 1.0) + (:x (meters 0) (meters 0.5)) + (:y (meters -0.25)) + (:z (meters 0) (meters 0.5)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.02) 1 (meters 0.005)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1139 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15 0.2) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.25)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 20.0 12.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1151) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15 0.2) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.25)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 20.0 12.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1151) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1146 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.06 0.06) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.25)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 20.0 12.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.0001)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1151) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.06 0.06) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.25)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 20.0 12.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.0001)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1151) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1148 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08 0.1) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.25)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 20.0 12.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1151) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08 0.1) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.25)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 20.0 12.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1151) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1151 - :init-specs ((:fade-g 0.53333336) (:fade-b 1.0666667) (:next-time (seconds 0.4)) (:next-launcher 1152)) - ) + :init-specs ((:fade-g 0.53333336) (:fade-b 1.0666667) (:next-time (seconds 0.4)) (:next-launcher 1152))) (defpart 1152 - :init-specs ((:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-g 0.0) (:fade-b 0.0))) (defpart 1140 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4 0.55) - (:x (meters -0.6) (meters 1.2)) - (:y (meters -0.25)) - (:z (meters -0.6) (meters 1.2)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4 0.55) + (:x (meters -0.6) (meters 1.2)) + (:y (meters -0.25)) + (:z (meters -0.6) (meters 1.2)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1141 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.06 1 0.9) - (:x (meters -0.6) (meters 0.5)) - (:y (meters 0.75)) - (:z (meters -0.6) (meters 0.5)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.02) 1 (meters 0.005)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.06 1 0.9) + (:x (meters -0.6) (meters 0.5)) + (:y (meters 0.75)) + (:z (meters -0.6) (meters 0.5)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.02) 1 (meters 0.005)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1142 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.9) - (:x (meters -0.6) (meters 1.2)) - (:y (meters -0.25)) - (:z (meters -0.6) (meters 1)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.01) (meters 0.005)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.9) + (:x (meters -0.6) (meters 1.2)) + (:y (meters -0.25)) + (:z (meters -0.6) (meters 1)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.005)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1143 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1 1.5) - (:x (meters -0.25) (meters 0.75)) - (:y (meters 0.75)) - (:z (meters -0.5) (meters 0.5)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.02) 1 (meters 0.005)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1 1.5) + (:x (meters -0.25) (meters 0.75)) + (:y (meters 0.75)) + (:z (meters -0.5) (meters 0.5)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.02) 1 (meters 0.005)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpartgroup group-village2-fireboulder-off :id 634 :bounds (static-bspherem 0 4 0 10.5) - :parts ((sp-item 1169 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1170 :fade-after (meters 80) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1169 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1170 :fade-after (meters 80) :falloff-to (meters 100)))) (defpartgroup group-village2-fireboulder :id 271 :duration (seconds 60) :bounds (static-bspherem 0 4 0 10.5) - :parts ((sp-item 1153 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1154 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.2)) - (sp-item 1155 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1156 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 1157 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1158 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.3)) - (sp-item 1159 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1160 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 1161 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1162 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.1)) - (sp-item 1163 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1164 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 1165 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1166 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.8) :length (seconds 0.25)) - (sp-item 1167 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1168 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1169 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1170 :fade-after (meters 80) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1153 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1154 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.2)) + (sp-item 1155 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1156 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 1157 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1158 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.3)) + (sp-item 1159 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1160 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 1161 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1162 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.1)) + (sp-item 1163 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1164 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 1165 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1166 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.8) :length (seconds 0.25)) + (sp-item 1167 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1168 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1169 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1170 :fade-after (meters 80) :falloff-to (meters 100)))) (defpart 1156 - :init-specs ((:num 0.15) - (:x (meters 1.5) (meters 1)) - (:y (meters 6) (meters 1)) - (:z (meters 0.5) (meters 2.5)) - (:rot-x 5) - (:r 8192.0) - (:g 6144.0) - (:b 5324.8) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1171) - ) - ) + :init-specs + ((:num 0.15) + (:x (meters 1.5) (meters 1)) + (:y (meters 6) (meters 1)) + (:z (meters 0.5) (meters 2.5)) + (:rot-x 5) + (:r 8192.0) + (:g 6144.0) + (:b 5324.8) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1171))) (defpart 1171 - :init-specs ((:fade-b 13.653334)) - ) + :init-specs ((:fade-b 13.653334))) (defpart 1160 - :init-specs ((:num 0.15) - (:x (meters -3.5) (meters 0.5)) - (:y (meters 5.5) (meters 1)) - (:z (meters -1) (meters 1)) - (:rot-x 5) - (:r 8192.0) - (:g 6144.0) - (:b 5324.8) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1171) - ) - ) + :init-specs + ((:num 0.15) + (:x (meters -3.5) (meters 0.5)) + (:y (meters 5.5) (meters 1)) + (:z (meters -1) (meters 1)) + (:rot-x 5) + (:r 8192.0) + (:g 6144.0) + (:b 5324.8) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1171))) (defpart 1164 - :init-specs ((:num 0.15) - (:x (meters 2.7)) - (:y (meters 4) (meters 1)) - (:z (meters -3) (meters 2)) - (:rot-x 5) - (:r 8192.0) - (:g 6144.0) - (:b 5324.8) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1171) - ) - ) + :init-specs + ((:num 0.15) + (:x (meters 2.7)) + (:y (meters 4) (meters 1)) + (:z (meters -3) (meters 2)) + (:rot-x 5) + (:r 8192.0) + (:g 6144.0) + (:b 5324.8) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1171))) (defpart 1153 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1.2) - (:x (meters 1.5) (meters 1)) - (:y (meters 5) (meters 1)) - (:z (meters 0.5) (meters 2.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1.2) + (:x (meters 1.5) (meters 1)) + (:y (meters 5) (meters 1)) + (:z (meters 0.5) (meters 2.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1154 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 1 1.7) - (:x (meters 1.5) (meters 0.7)) - (:y (meters 6) (meters 0.6)) - (:z (meters 0.5) (meters 1.8)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 1 1.7) + (:x (meters 1.5) (meters 0.7)) + (:y (meters 6) (meters 0.6)) + (:z (meters 0.5) (meters 1.8)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1155 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.05 0.2) - (:x (meters 1.5) (meters 1)) - (:y (meters 6) (meters 1)) - (:z (meters 0.5) (meters 2.5)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 20.0 12.0) - (:vel-y (meters 0.023333333) (meters 0.01)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1172) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.05 0.2) + (:x (meters 1.5) (meters 1)) + (:y (meters 6) (meters 1)) + (:z (meters 0.5) (meters 2.5)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 20.0 12.0) + (:vel-y (meters 0.023333333) (meters 0.01)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1172) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1172 - :init-specs ((:fade-g 0.53333336) (:fade-b 1.0666667) (:next-time (seconds 0.4)) (:next-launcher 1173)) - ) + :init-specs ((:fade-g 0.53333336) (:fade-b 1.0666667) (:next-time (seconds 0.4)) (:next-launcher 1173))) (defpart 1173 - :init-specs ((:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-g 0.0) (:fade-b 0.0))) (defpart 1157 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.65 1.2) - (:x (meters -3.5) (meters 0.5)) - (:y (meters 4.5) (meters 1)) - (:z (meters -1) (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.65 1.2) + (:x (meters -3.5) (meters 0.5)) + (:y (meters 4.5) (meters 1)) + (:z (meters -1) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1158 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 1 1.2) - (:x (meters -3.5) (meters 0.5)) - (:y (meters 4.5) (meters 1)) - (:z (meters -1) (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 1 1.2) + (:x (meters -3.5) (meters 0.5)) + (:y (meters 4.5) (meters 1)) + (:z (meters -1) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1159 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08 0.25) - (:x (meters -3.5) (meters 0.5)) - (:y (meters 5.5) (meters 1)) - (:z (meters -1) (meters 1)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.023333333) (meters 0.01)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1172) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 5)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08 0.25) + (:x (meters -3.5) (meters 0.5)) + (:y (meters 5.5) (meters 1)) + (:z (meters -1) (meters 1)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.023333333) (meters 0.01)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1172) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 5)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1161 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1.5) - (:x (meters 2.7)) - (:y (meters 3) (meters 1)) - (:z (meters -3) (meters 2)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1.5) + (:x (meters 2.7)) + (:y (meters 3) (meters 1)) + (:z (meters -3) (meters 2)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1162 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 1 1.4) - (:x (meters 2.7)) - (:y (meters 3) (meters 1)) - (:z (meters -3) (meters 2)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 1 1.4) + (:x (meters 2.7)) + (:y (meters 3) (meters 1)) + (:z (meters -3) (meters 2)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1163 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08 0.25) - (:x (meters 2.7)) - (:y (meters 4) (meters 1)) - (:z (meters -3) (meters 2)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.023333333) (meters 0.01)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1172) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -5)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08 0.25) + (:x (meters 2.7)) + (:y (meters 4) (meters 1)) + (:z (meters -3) (meters 2)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.023333333) (meters 0.01)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1172) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -5)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1165 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.65 1.5) - (:x (meters -3) (meters 1)) - (:y (meters 4) (meters 1)) - (:z (meters -3) (meters 1.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.65 1.5) + (:x (meters -3) (meters 1)) + (:y (meters 4) (meters 1)) + (:z (meters -3) (meters 1.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees -45)))) (defpart 1166 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.65 1 1.5) - (:x (meters -3) (meters 1)) - (:y (meters 4) (meters 1)) - (:z (meters -3) (meters 1.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.65 1 1.5) + (:x (meters -3) (meters 1)) + (:y (meters 4) (meters 1)) + (:z (meters -3) (meters 1.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees -45)))) (defpart 1167 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08 0.25) - (:x (meters -3) (meters 1)) - (:y (meters 5) (meters 1)) - (:z (meters -3) (meters 1.5)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.023333333) (meters 0.01)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1172) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08 0.25) + (:x (meters -3) (meters 1)) + (:y (meters 5) (meters 1)) + (:z (meters -3) (meters 1.5)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.023333333) (meters 0.01)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1172) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees -45)))) (defpart 1168 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.1 0.4) - (:x (meters 1.5) (meters 1)) - (:y (meters -0.5)) - (:z (meters 0.5) (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 0.6) (seconds 0.097)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -45)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees 0) 2 (degrees -102)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.1 0.4) + (:x (meters 1.5) (meters 1)) + (:y (meters -0.5)) + (:z (meters 0.5) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 0.6) (seconds 0.097)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -45)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees 0) 2 (degrees -102)))) (defpart 1169 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15 0.15) - (:y (meters 4)) - (:scale-x (meters 2.5) (meters 1.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0044444446)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.34133333) - (:fade-g -0.17066666) - (:fade-b -0.17066666) - (:fade-a 0.4) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 4)) - (:flags (bit2)) - (:next-time (seconds 0.25)) - (:next-launcher 1174) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15 0.15) + (:y (meters 4)) + (:scale-x (meters 2.5) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0044444446)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.34133333) + (:fade-g -0.17066666) + (:fade-b -0.17066666) + (:fade-a 0.4) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 4)) + (:flags (bit2)) + (:next-time (seconds 0.25)) + (:next-launcher 1174) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)))) (defpart 1174 - :init-specs ((:vel-y (meters 0.013333334)) - (:fade-a 0.0) - (:accel-y (meters -0.000000097656255)) - (:next-time (seconds 1)) - (:next-launcher 1175) - ) - ) + :init-specs + ((:vel-y (meters 0.013333334)) + (:fade-a 0.0) + (:accel-y (meters -0.000000097656255)) + (:next-time (seconds 1)) + (:next-launcher 1175))) (defpart 1175 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.10666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.10666667))) (defpart 1170 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15 0.3) - (:y (meters 0)) - (:scale-x (meters 2.5) (meters 1.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 48.0) - (:b 48.0) - (:a 0.0) - (:vel-y (meters 0.0073333336)) - (:scalevel-x (meters 0.0013333333)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.4) - (:accel-y (meters 0.00013333333)) - (:friction 0.995) - (:timer (seconds 5.25)) - (:flags (bit2)) - (:next-time (seconds 0.25)) - (:next-launcher 1176) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15 0.3) + (:y (meters 0)) + (:scale-x (meters 2.5) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 48.0) + (:b 48.0) + (:a 0.0) + (:vel-y (meters 0.0073333336)) + (:scalevel-x (meters 0.0013333333)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.4) + (:accel-y (meters 0.00013333333)) + (:friction 0.995) + (:timer (seconds 5.25)) + (:flags (bit2)) + (:next-time (seconds 0.25)) + (:next-launcher 1176) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 1176 - :init-specs ((:fade-a 0.0) (:next-time (seconds 2)) (:next-launcher 1177)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 2)) (:next-launcher 1177))) (defpart 1177 - :init-specs ((:vel-x (meters 0)) - (:vel-y (meters 0.011666667)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.08) - (:fade-b -0.08) - (:fade-a -0.053333335) - (:accel-y (meters 0.000033333334)) - (:timer (seconds 2)) - ) - ) + :init-specs + ((:vel-x (meters 0)) + (:vel-y (meters 0.011666667)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.08) + (:fade-b -0.08) + (:fade-a -0.053333335) + (:accel-y (meters 0.000033333334)) + (:timer (seconds 2)))) (defpartgroup group-village2-window-flames-45 :id 272 :bounds (static-bspherem 8 -8 0 36) - :parts ((sp-item 1178 :fade-after (meters 300)) - (sp-item 1179 :fade-after (meters 300)) - (sp-item 1179 :fade-after (meters 180)) - (sp-item 1180 :fade-after (meters 200) :period (seconds 7.2) :length (seconds 0.017)) - (sp-item 1180 :fade-after (meters 200) :period (seconds 2.23) :length (seconds 0.017)) - (sp-item 1180 :fade-after (meters 200) :period (seconds 14.265) :length (seconds 0.017)) - (sp-item 1180 :fade-after (meters 200) :period (seconds 4.127) :length (seconds 0.017)) - (sp-item 1181 :fade-after (meters 300)) - (sp-item 1182 :fade-after (meters 300)) - (sp-item 1182 :fade-after (meters 180)) - ) - ) + :parts + ((sp-item 1178 :fade-after (meters 300)) + (sp-item 1179 :fade-after (meters 300)) + (sp-item 1179 :fade-after (meters 180)) + (sp-item 1180 :fade-after (meters 200) :period (seconds 7.2) :length (seconds 0.017)) + (sp-item 1180 :fade-after (meters 200) :period (seconds 2.23) :length (seconds 0.017)) + (sp-item 1180 :fade-after (meters 200) :period (seconds 14.265) :length (seconds 0.017)) + (sp-item 1180 :fade-after (meters 200) :period (seconds 4.127) :length (seconds 0.017)) + (sp-item 1181 :fade-after (meters 300)) + (sp-item 1182 :fade-after (meters 300)) + (sp-item 1182 :fade-after (meters 180)))) (defpart 1178 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.035) - (:x (meters 4) (meters 12)) - (:y (meters 4) (meters 8)) - (:z (meters 8)) - (:scale-x (meters 4) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.035) + (:x (meters 4) (meters 12)) + (:y (meters 4) (meters 8)) + (:z (meters 8)) + (:scale-x (meters 4) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees -15)))) (defpart 1183 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 1184)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 1184))) (defpart 1184 - :init-specs ((:fade-a -0.08)) - ) + :init-specs ((:fade-a -0.08))) (defpart 1179 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.4) - (:x (meters 10) (meters 4)) - (:y (meters 0) (meters 6)) - (:z (meters 7) 1 (meters 2)) - (:scale-x (meters 2) (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0023333333) (meters 0.0026666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.4) + (:x (meters 10) (meters 4)) + (:y (meters 0) (meters 6)) + (:z (meters 7) 1 (meters 2)) + (:scale-x (meters 2) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0023333333) (meters 0.0026666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:rotate-y (degrees -15)))) (defpart 1185 - :init-specs ((:fade-a -0.85333335)) - ) + :init-specs ((:fade-a -0.85333335))) (defpart 1180 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.8 0.4) - (:x (meters 10) (meters 4)) - (:y (meters 6)) - (:z (meters 7) 1 (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 2 128.0) - (:b 0.0) - (:a 255.0) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:fade-a -0.048484847) - (:accel-x (meters -0.00008333333) (meters 0.00016666666)) - (:accel-y (meters -0.00066666666)) - (:accel-z (meters -0.00008333333) (meters 0.00016666666)) - (:timer (seconds 2.8)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.8 0.4) + (:x (meters 10) (meters 4)) + (:y (meters 6)) + (:z (meters 7) 1 (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 2 128.0) + (:b 0.0) + (:a 255.0) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:fade-a -0.048484847) + (:accel-x (meters -0.00008333333) (meters 0.00016666666)) + (:accel-y (meters -0.00066666666)) + (:accel-z (meters -0.00008333333) (meters 0.00016666666)) + (:timer (seconds 2.8)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees -15)))) (defpart 1181 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.03) - (:x (meters -6) (meters 16)) - (:y (meters 8) (meters 8)) - (:z (meters -6) (meters 6)) - (:scale-x (meters 4) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees 15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.03) + (:x (meters -6) (meters 16)) + (:y (meters 8) (meters 8)) + (:z (meters -6) (meters 6)) + (:scale-x (meters 4) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees 15)))) (defpart 1182 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters 2) (meters 4)) - (:y (meters 4) (meters 6)) - (:z (meters -8) 1 (meters 2)) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0025) (meters 0.0025)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:rotate-y (degrees 5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters 2) (meters 4)) + (:y (meters 4) (meters 6)) + (:z (meters -8) 1 (meters 2)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0025) (meters 0.0025)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:rotate-y (degrees 5)))) (defpartgroup group-village2-window-flames-41 :id 273 :bounds (static-bspherem 8 -8 0 36) - :parts ((sp-item 1186 :fade-after (meters 300)) - (sp-item 1187 :fade-after (meters 300)) - (sp-item 1187 :fade-after (meters 180)) - (sp-item 1188 :fade-after (meters 200) :period (seconds 7.2) :length (seconds 0.017)) - (sp-item 1188 :fade-after (meters 200) :period (seconds 2.23) :length (seconds 0.017)) - (sp-item 1188 :fade-after (meters 200) :period (seconds 14.265) :length (seconds 0.017)) - (sp-item 1188 :fade-after (meters 200) :period (seconds 4.127) :length (seconds 0.017)) - (sp-item 1189 :fade-after (meters 300)) - (sp-item 1190 :fade-after (meters 300)) - (sp-item 1190 :fade-after (meters 180)) - ) - ) + :parts + ((sp-item 1186 :fade-after (meters 300)) + (sp-item 1187 :fade-after (meters 300)) + (sp-item 1187 :fade-after (meters 180)) + (sp-item 1188 :fade-after (meters 200) :period (seconds 7.2) :length (seconds 0.017)) + (sp-item 1188 :fade-after (meters 200) :period (seconds 2.23) :length (seconds 0.017)) + (sp-item 1188 :fade-after (meters 200) :period (seconds 14.265) :length (seconds 0.017)) + (sp-item 1188 :fade-after (meters 200) :period (seconds 4.127) :length (seconds 0.017)) + (sp-item 1189 :fade-after (meters 300)) + (sp-item 1190 :fade-after (meters 300)) + (sp-item 1190 :fade-after (meters 180)))) (defpart 1186 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.03) - (:x (meters 6) (meters 12)) - (:y (meters 4) (meters 8)) - (:z (meters 8)) - (:scale-x (meters 4) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees 82)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.03) + (:x (meters 6) (meters 12)) + (:y (meters 4) (meters 8)) + (:z (meters 8)) + (:scale-x (meters 4) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees 82)))) (defpart 1187 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.4) - (:x (meters 10) (meters 4)) - (:y (meters 0) (meters 6)) - (:z (meters 7) 1 (meters 2)) - (:scale-x (meters 2) (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0023333333) (meters 0.0026666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:rotate-y (degrees 82)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.4) + (:x (meters 10) (meters 4)) + (:y (meters 0) (meters 6)) + (:z (meters 7) 1 (meters 2)) + (:scale-x (meters 2) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0023333333) (meters 0.0026666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:rotate-y (degrees 82)))) (defpart 1188 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.8 0.4) - (:x (meters 10) (meters 4)) - (:y (meters 6)) - (:z (meters 7) 1 (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 2 128.0) - (:b 0.0) - (:a 255.0) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:fade-a -0.048484847) - (:accel-x (meters -0.00008333333) (meters 0.00016666666)) - (:accel-y (meters -0.00066666666)) - (:accel-z (meters -0.00008333333) (meters 0.00016666666)) - (:timer (seconds 2.7)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 82)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.8 0.4) + (:x (meters 10) (meters 4)) + (:y (meters 6)) + (:z (meters 7) 1 (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 2 128.0) + (:b 0.0) + (:a 255.0) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:fade-a -0.048484847) + (:accel-x (meters -0.00008333333) (meters 0.00016666666)) + (:accel-y (meters -0.00066666666)) + (:accel-z (meters -0.00008333333) (meters 0.00016666666)) + (:timer (seconds 2.7)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 82)))) (defpart 1189 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.03) - (:x (meters -2) (meters 16)) - (:y (meters 8) (meters 8)) - (:z (meters -6) (meters 6)) - (:scale-x (meters 4) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees 112.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.03) + (:x (meters -2) (meters 16)) + (:y (meters 8) (meters 8)) + (:z (meters -6) (meters 6)) + (:scale-x (meters 4) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees 112.00001)))) (defpart 1190 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters 6) (meters 4)) - (:y (meters 4) (meters 6)) - (:z (meters -8) 1 (meters 2)) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0025) (meters 0.0025)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:rotate-y (degrees 106)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters 6) (meters 4)) + (:y (meters 4) (meters 6)) + (:z (meters -8) 1 (meters 2)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0025) (meters 0.0025)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:rotate-y (degrees 106)))) (defpartgroup group-village2-big-boulder :id 274 :bounds (static-bspherem 8 -8 0 36) - :parts ((sp-item 1191 :fade-after (meters 300)) - (sp-item 1192 :fade-after (meters 300)) - (sp-item 1192 :fade-after (meters 180)) - ) - ) + :parts + ((sp-item 1191 :fade-after (meters 300)) + (sp-item 1192 :fade-after (meters 300)) + (sp-item 1192 :fade-after (meters 180)))) (defpart 1191 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.03) - (:x (meters -2) (meters 4)) - (:y (meters 8) (meters 4)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 8) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.03) + (:x (meters -2) (meters 4)) + (:y (meters 8) (meters 4)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 8) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees 0)))) (defpart 1192 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4 0.4) - (:x (meters 2)) - (:y (meters 4)) - (:scale-x (meters 2) (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0023333333) (meters 0.0026666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:conerot-x (degrees 0) (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4 0.4) + (:x (meters 2)) + (:y (meters 4)) + (:scale-x (meters 2) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0023333333) (meters 0.0026666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:conerot-x (degrees 0) (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpartgroup group-village2-sages-controlpanel :id 275 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1193 :fade-after (meters 30) :period (seconds 2.455) :length (seconds 0.035)) - (sp-item 1193 :fade-after (meters 30) :period (seconds 5.655) :length (seconds 0.035)) - (sp-item 1193 :fade-after (meters 30) :period (seconds 16.93) :length (seconds 0.035)) - (sp-item 1194 :fade-after (meters 30) :period (seconds 16.93) :length (seconds 0.035)) - (sp-item 1194 :fade-after (meters 30) :period (seconds 7.21) :length (seconds 0.035)) - (sp-item 1195 :fade-after (meters 40) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 1193 :fade-after (meters 30) :period (seconds 2.455) :length (seconds 0.035)) + (sp-item 1193 :fade-after (meters 30) :period (seconds 5.655) :length (seconds 0.035)) + (sp-item 1193 :fade-after (meters 30) :period (seconds 16.93) :length (seconds 0.035)) + (sp-item 1194 :fade-after (meters 30) :period (seconds 16.93) :length (seconds 0.035)) + (sp-item 1194 :fade-after (meters 30) :period (seconds 7.21) :length (seconds 0.035)) + (sp-item 1195 :fade-after (meters 40) :falloff-to (meters 50)))) (defpart 1195 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.4) - (:x (meters 0.9)) - (:y (meters 0.25)) - (:z (meters -1.2)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0 32.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0022222223)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.53333336) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 1196) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.4) + (:x (meters 0.9)) + (:y (meters 0.25)) + (:z (meters -1.2)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0 32.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0022222223)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.53333336) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 1196) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1196 - :init-specs ((:fade-r -0.053333335) (:fade-g -0.053333335) (:fade-b -0.053333335) (:fade-a -0.10666667)) - ) + :init-specs ((:fade-r -0.053333335) (:fade-g -0.053333335) (:fade-b -0.053333335) (:fade-a -0.10666667))) (defpart 1193 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 16.0) - (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) - (:x (meters 0.9)) - (:y (meters 0.05)) - (:z (meters -0.9)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.6) - (:accel-y (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -45) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 16.0) + (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) + (:x (meters 0.9)) + (:y (meters 0.05)) + (:z (meters -0.9)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.6) + (:accel-y (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -45) (degrees 180)))) (defpart 1194 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 16.0) - (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) - (:x (meters -1.2)) - (:y (meters -0.5)) - (:z (meters 1.2)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.6) - (:accel-y (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -45) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 16.0) + (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) + (:x (meters -1.2)) + (:y (meters -0.5)) + (:z (meters 1.2)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.6) + (:accel-y (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -45) (degrees 180)))) (defpartgroup group-village2-sages-machine :id 276 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1199 :fade-after (meters 40) :period (seconds 2.56) :length (seconds 0.035) :binding 1197) - (sp-item 1199 :fade-after (meters 40) :period (seconds 3.655) :length (seconds 0.035) :binding 1198) - (sp-item 1199 :fade-after (meters 40) :period (seconds 7.125) :length (seconds 0.035) :binding 1197) - (sp-item 1197 :fade-after (meters 40) :flags (start-dead)) - (sp-item 1197 :fade-after (meters 40) :flags (start-dead)) - (sp-item 1198 :fade-after (meters 40) :flags (start-dead)) - (sp-item 1200 :fade-after (meters 40) :period (seconds 1) :length (seconds 0.017)) - (sp-item 1200 :fade-after (meters 40) :period (seconds 1.567) :length (seconds 0.017)) - (sp-item 1200 :fade-after (meters 40) :period (seconds 2.045) :length (seconds 0.017)) - (sp-item 1200 :fade-after (meters 40) :period (seconds 4.455) :length (seconds 0.017)) - (sp-item 1201 :fade-after (meters 40) :falloff-to (meters 40)) - (sp-item 1202 :fade-after (meters 40)) - (sp-item 1203 :fade-after (meters 40) :falloff-to (meters 50)) - (sp-item 1204 :fade-after (meters 40) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 1199 :fade-after (meters 40) :period (seconds 2.56) :length (seconds 0.035) :binding 1197) + (sp-item 1199 :fade-after (meters 40) :period (seconds 3.655) :length (seconds 0.035) :binding 1198) + (sp-item 1199 :fade-after (meters 40) :period (seconds 7.125) :length (seconds 0.035) :binding 1197) + (sp-item 1197 :fade-after (meters 40) :flags (start-dead)) + (sp-item 1197 :fade-after (meters 40) :flags (start-dead)) + (sp-item 1198 :fade-after (meters 40) :flags (start-dead)) + (sp-item 1200 :fade-after (meters 40) :period (seconds 1) :length (seconds 0.017)) + (sp-item 1200 :fade-after (meters 40) :period (seconds 1.567) :length (seconds 0.017)) + (sp-item 1200 :fade-after (meters 40) :period (seconds 2.045) :length (seconds 0.017)) + (sp-item 1200 :fade-after (meters 40) :period (seconds 4.455) :length (seconds 0.017)) + (sp-item 1201 :fade-after (meters 40) :falloff-to (meters 40)) + (sp-item 1202 :fade-after (meters 40)) + (sp-item 1203 :fade-after (meters 40) :falloff-to (meters 50)) + (sp-item 1204 :fade-after (meters 40) :falloff-to (meters 50)))) (defpart 1201 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.5 1.0) - (:x (meters -0.75)) - (:y (meters -0.8)) - (:z (meters 2.6)) - (:scale-x (meters 0.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 32.0 32.0) - (:b 128.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.06) - (:fade-a -0.18) - (:timer (seconds 0.1) (seconds 1.497)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees -120) (degrees 210)) - (:conerot-radius (meters 0.3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.5 1.0) + (:x (meters -0.75)) + (:y (meters -0.8)) + (:z (meters 2.6)) + (:scale-x (meters 0.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 32.0 32.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.06) + (:fade-a -0.18) + (:timer (seconds 0.1) (seconds 1.497)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees -120) (degrees 210)) + (:conerot-radius (meters 0.3)))) (defpart 1202 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -0.75)) - (:y (meters -0.8)) - (:z (meters 2.6)) - (:scale-x (meters 2) (meters 2.4)) - (:scale-y :copy scale-x) - (:r 32.0 64.0) - (:g 32.0 64.0) - (:b 128.0 128.0) - (:a 32.0 64.0) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -0.75)) + (:y (meters -0.8)) + (:z (meters 2.6)) + (:scale-x (meters 2) (meters 2.4)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g 32.0 64.0) + (:b 128.0 128.0) + (:a 32.0 64.0) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 1200 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0 0.5) - (:x (meters -0.7)) - (:y (meters -0.7)) - (:z (meters 2.6)) - (:scale-x (meters 4) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 60) (degrees 60)) - (:scale-y (meters 0.4) (meters 0.4)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 1205) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0 0.5) + (:x (meters -0.7)) + (:y (meters -0.7)) + (:z (meters 2.6)) + (:scale-x (meters 4) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 60) (degrees 60)) + (:scale-y (meters 0.4) (meters 0.4)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 1205))) (defpart 1205 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-a -2.1333334)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-a -2.1333334))) (defpart 1203 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.4) - (:x (meters -1.25)) - (:y (meters 0)) - (:z (meters 0)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0) - (:b 64.0 32.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0022222223)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.53333336) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 1206) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.4) + (:x (meters -1.25)) + (:y (meters 0)) + (:z (meters 0)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0) + (:b 64.0 32.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0022222223)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.53333336) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 1206) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1206 - :init-specs ((:fade-r -0.053333335) (:fade-g -0.053333335) (:fade-b -0.053333335) (:fade-a -0.10666667) (:friction 0.95)) - ) + :init-specs ((:fade-r -0.053333335) (:fade-g -0.053333335) (:fade-b -0.053333335) (:fade-a -0.10666667) (:friction 0.95))) (defpart 1204 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.8) - (:x (meters -0.7)) - (:y (meters -0.7)) - (:z (meters 2.6)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 64.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0022222223)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.10666667) - (:friction 0.99) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.8) + (:x (meters -0.7)) + (:y (meters -0.7)) + (:z (meters 2.6)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 64.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0022222223)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.10666667) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1199 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 128.0) - (:fade-a -6.4) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees -60) (degrees 120)) - (:conerot-radius (meters 1.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 128.0) + (:fade-a -6.4) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees -60) (degrees 120)) + (:conerot-radius (meters 1.1)))) (defpart 1197 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0 8.0) - (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.4) - (:accel-y (meters -0.0016666667)) - (:friction 0.92) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -180) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0 8.0) + (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.4) + (:accel-y (meters -0.0016666667)) + (:friction 0.92) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -180) (degrees 180)))) (defpart 1198 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0 6.0) - (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:accel-y (meters -0.002)) - (:friction 0.92) - (:timer (seconds 4)) - (:flags (bit2 bit14)) - (:userdata 91750.4) - (:func 'check-drop-level-sagehut2) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -180) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0 6.0) + (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:accel-y (meters -0.002)) + (:friction 0.92) + (:timer (seconds 4)) + (:flags (bit2 bit14)) + (:userdata 91750.4) + (:func 'check-drop-level-sagehut2) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -180) (degrees 180)))) (defpart 1207 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.0 3.0) - (:scale-x (meters 0.075) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.011666667) (meters 0.0033333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 50.000004) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.0 3.0) + (:scale-x (meters 0.075) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.011666667) (meters 0.0033333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 50.000004) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defun check-drop-level-sagehut2 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 1207) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 1207) gp-0 :rate 1.0))) + (none)) (defpartgroup group-village2-fireboulder-hover :id 678 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 2792 :fade-after (meters 100) :falloff-to (meters 100) :binding 2791) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2793) - (sp-item 2794 :falloff-to (meters 400)) - (sp-item 2795 :falloff-to (meters 400)) - (sp-item 2796 :falloff-to (meters 400)) - ) - ) + :parts + ((sp-item 2792 :fade-after (meters 100) :falloff-to (meters 100) :binding 2791) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2793) + (sp-item 2794 :falloff-to (meters 400)) + (sp-item 2795 :falloff-to (meters 400)) + (sp-item 2796 :falloff-to (meters 400)))) (defpart 2795 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 2.0) - (:scale-x (meters 12.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees -45) (degrees 180)) - (:scale-y (meters 0.5) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.5) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 2.0) + (:scale-x (meters 12.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees -45) (degrees 180)) + (:scale-y (meters 0.5) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.5) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2794 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.2 2.0) - (:scale-x (meters 12.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees -45) (degrees 180)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.5) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.2 2.0) + (:scale-x (meters 12.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees -45) (degrees 180)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.5) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2793 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 14)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -3.2) - (:timer (seconds 0.135)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 14)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -3.2) + (:timer (seconds 0.135)) + (:flags (bit2 bit3)))) (defpart 2792 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 255.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)))) (defpart 2791 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 4) (meters 1)) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 4) (meters 1)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7 bit14)))) diff --git a/goal_src/jak1/levels/village2/village2-part2.gc b/goal_src/jak1/levels/village2/village2-part2.gc index e13d4a19e0..ad6d520caa 100644 --- a/goal_src/jak1/levels/village2/village2-part2.gc +++ b/goal_src/jak1/levels/village2/village2-part2.gc @@ -1,3150 +1,3030 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: village2-part2.gc -;; name in dgo: village2-part2 -;; dgos: L1, VI2 - ;; DECOMP BEGINS (defpart 1208 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpart 1209 - :init-specs ((:fade-a -0.16)) - ) + :init-specs ((:fade-a -0.16))) (defpart 1210 - :init-specs ((:fade-a -2.6666667)) - ) + :init-specs ((:fade-a -2.6666667))) (defpartgroup group-village2-waterfall-29 :id 277 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 1211) - (sp-item 1211 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1211 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1212 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1213 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1214) - (sp-item 1214 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1214 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1215 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1216 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1217) - (sp-item 1217 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1217 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1218 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1219 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1220) - (sp-item 1220 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1220 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1221 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1222 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1223) - (sp-item 1223 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1223 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1224) - (sp-item 1224 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1224 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1225 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1226 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1227 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1228) - (sp-item 1228 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1228 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1229 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1230) - (sp-item 1230 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1230 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1231 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1232) - (sp-item 1232 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1232 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1233 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1234) - (sp-item 1234 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1234 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1235) - (sp-item 1235 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1235 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1236 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1237 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1238 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1239 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1240) - (sp-item 1240 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1240 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1241 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1242 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 1211) + (sp-item 1211 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1211 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1212 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1213 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1214) + (sp-item 1214 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1214 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1215 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1216 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1217) + (sp-item 1217 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1217 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1218 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1219 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1220) + (sp-item 1220 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1220 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1221 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1222 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1223) + (sp-item 1223 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1223 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1224) + (sp-item 1224 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1224 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1225 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1226 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1227 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1228) + (sp-item 1228 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1228 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1229 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1230) + (sp-item 1230 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1230 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1231 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1232) + (sp-item 1232 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1232 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1233 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1234) + (sp-item 1234 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1234 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1235) + (sp-item 1235 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1235 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1236 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1237 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1238 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1239 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1240) + (sp-item 1240 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1240 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1241 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1242 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 1211 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -7)) - (:y (meters 41.5) (meters 1.5)) - (:z (meters -7.5) (meters 3)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.033333335)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00045537343)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.7)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -7)) + (:y (meters 41.5) (meters 1.5)) + (:z (meters -7.5) (meters 3)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.033333335)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00045537343)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.7)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -30)))) (defpart 1214 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -12)) - (:y (meters 42.5) (meters 1.5)) - (:z (meters -3.5) (meters 2)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.033333335)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00045537343)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.7)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -12)) + (:y (meters 42.5) (meters 1.5)) + (:z (meters -3.5) (meters 2)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.033333335)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00045537343)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.7)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -90)))) (defpart 1217 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.5 0.8) - (:x (meters -2) (meters 1)) - (:y (meters 24) (meters 1.5)) - (:z (meters 0.5) (meters 4)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 0.6) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.013333334)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00045537343)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.65)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.5 0.8) + (:x (meters -2) (meters 1)) + (:y (meters 24) (meters 1.5)) + (:z (meters 0.5) (meters 4)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 0.6) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.013333334)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00045537343)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.65)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -110)))) (defpart 1220 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.5 0.8) - (:x (meters -4) (meters 8)) - (:y (meters 27.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 0.6) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.016666668)) - (:vel-z (meters 0.033333335) (meters 0.013333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-y (meters -0.0023333333) (meters -0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.65)) - (:next-launcher 1210) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.5 0.8) + (:x (meters -4) (meters 8)) + (:y (meters 27.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 0.6) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.016666668)) + (:vel-z (meters 0.033333335) (meters 0.013333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-y (meters -0.0023333333) (meters -0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.65)) + (:next-launcher 1210) + (:rotate-y (degrees 0)))) (defpart 1223 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -1) (meters 4)) - (:y (meters 28.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 0.6) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05) (meters 0.013333334)) - (:vel-y (meters 0.006666667) (meters 0.016666668)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-y (meters -0.0023333333) (meters -0.00033333333)) - (:timer (seconds 0.55)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.5)) - (:next-launcher 1210) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -1) (meters 4)) + (:y (meters 28.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 0.6) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05) (meters 0.013333334)) + (:vel-y (meters 0.006666667) (meters 0.016666668)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-y (meters -0.0023333333) (meters -0.00033333333)) + (:timer (seconds 0.55)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.5)) + (:next-launcher 1210) + (:rotate-y (degrees 0)))) (defpart 1224 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.5 0.5) - (:x (meters 6) (meters 1)) - (:y (meters 26) (meters 1.5)) - (:z (meters -9.5) (meters 2)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 0.6) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.013333334)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00045537343)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.6)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.5 0.5) + (:x (meters 6) (meters 1)) + (:y (meters 26) (meters 1.5)) + (:z (meters -9.5) (meters 2)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 0.6) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.013333334)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00045537343)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.6)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -15)))) (defpart 1212 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -7)) - (:y (meters 41.5) (meters 1.5)) - (:z (meters -7.5) (meters 3)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.02) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00027777778)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -7)) + (:y (meters 41.5) (meters 1.5)) + (:z (meters -7.5) (meters 3)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.02) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00027777778)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -30)))) (defpart 1215 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -12)) - (:y (meters 42.5) (meters 1.5)) - (:z (meters -3.5) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.02) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00027777778)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -12)) + (:y (meters 42.5) (meters 1.5)) + (:z (meters -3.5) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.02) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00027777778)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1218 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -2) (meters 1)) - (:y (meters 23.5) (meters 1.5)) - (:z (meters 0.5) (meters 4)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.02) (meters 0.02)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00027777778)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -2) (meters 1)) + (:y (meters 23.5) (meters 1.5)) + (:z (meters 0.5) (meters 4)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.02) (meters 0.02)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00027777778)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -110)))) (defpart 1221 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters -4) (meters 10)) - (:y (meters 27.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters -0.0033333334) (meters 0.006666667)) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:vel-z (meters 0.033333335) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-y (meters -0.0023333333) (meters -0.00033333333)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters -4) (meters 10)) + (:y (meters 27.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters -0.0033333334) (meters 0.006666667)) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:vel-z (meters 0.033333335) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-y (meters -0.0023333333) (meters -0.00033333333)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)))) (defpart 1225 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters 6) (meters 1)) - (:y (meters 26) (meters 1.5)) - (:z (meters -9.5) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.02) (meters 0.02)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00027777778)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters 6) (meters 1)) + (:y (meters 26) (meters 1.5)) + (:z (meters -9.5) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.02) (meters 0.02)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00027777778)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -15)))) (defpart 1213 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -7)) - (:y (meters 41.5) (meters 1.5)) - (:z (meters -7.5) (meters 3)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.018333333)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00013888889)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.8)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.35)) - (:next-launcher 1210) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -7)) + (:y (meters 41.5) (meters 1.5)) + (:z (meters -7.5) (meters 3)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.018333333)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00013888889)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.8)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.35)) + (:next-launcher 1210) + (:rotate-y (degrees -30)))) (defpart 1216 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -12)) - (:y (meters 42.5) (meters 1.5)) - (:z (meters -3.5) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.018333333)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00013888889)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.8)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.35)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -12)) + (:y (meters 42.5) (meters 1.5)) + (:z (meters -3.5) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.018333333)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00013888889)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.8)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.35)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpart 1219 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -2) (meters 1)) - (:y (meters 23.5) (meters 1.5)) - (:z (meters 0.5) (meters 4)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.018333333) (meters 0.01)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00013888889)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.2)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.35)) - (:next-launcher 1210) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -2) (meters 1)) + (:y (meters 23.5) (meters 1.5)) + (:z (meters 0.5) (meters 4)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.018333333) (meters 0.01)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00013888889)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.2)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.35)) + (:next-launcher 1210) + (:rotate-y (degrees -110)))) (defpart 1222 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters -4) (meters 8)) - (:y (meters 27.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:vel-z (meters 0.033333335) (meters 0.013333334)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0016666667) (meters -0.00016666666)) - (:timer (seconds 0.85)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 1210) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters -4) (meters 8)) + (:y (meters 27.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:vel-z (meters 0.033333335) (meters 0.013333334)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667) (meters -0.00016666666)) + (:timer (seconds 0.85)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 1210) + (:rotate-y (degrees 0)))) (defpart 1227 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters -1) (meters 4)) - (:y (meters 28.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.013333334)) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0016666667) (meters -0.00016666666)) - (:timer (seconds 0.85)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 1210) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters -1) (meters 4)) + (:y (meters 28.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.013333334)) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667) (meters -0.00016666666)) + (:timer (seconds 0.85)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 1210) + (:rotate-y (degrees 0)))) (defpart 1226 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters 6) (meters 1)) - (:y (meters 26) (meters 1.5)) - (:z (meters -9.5) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.018333333) (meters 0.01)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00013888889)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.45)) - (:next-launcher 1210) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters 6) (meters 1)) + (:y (meters 26) (meters 1.5)) + (:z (meters -9.5) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.018333333) (meters 0.01)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00013888889)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.45)) + (:next-launcher 1210) + (:rotate-y (degrees -15)))) (defpart 1228 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.05 0.05) - (:x (meters 2) (meters 7)) - (:y (meters 12.5)) - (:z (meters 15) (meters 10)) - (:scale-x (meters 12.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.05 0.05) + (:x (meters 2) (meters 7)) + (:y (meters 12.5)) + (:z (meters 15) (meters 10)) + (:scale-x (meters 12.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -90)))) (defpart 1229 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters 3) (meters 5)) - (:y (meters 7)) - (:z (meters 16) (meters 12)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters 3) (meters 5)) + (:y (meters 7)) + (:z (meters 16) (meters 12)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpart 1230 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.035 0.03) - (:x (meters 3.5) (meters 5)) - (:y (meters 12.5)) - (:z (meters 1.5) (meters 5)) - (:scale-x (meters 12.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.035 0.03) + (:x (meters 3.5) (meters 5)) + (:y (meters 12.5)) + (:z (meters 1.5) (meters 5)) + (:scale-x (meters 12.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -90)))) (defpart 1231 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.025) - (:x (meters 3) (meters 2)) - (:y (meters 8)) - (:z (meters 3) (meters 2)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.025) + (:x (meters 3) (meters 2)) + (:y (meters 8)) + (:z (meters 3) (meters 2)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpart 1232 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.035 0.03) - (:x (meters -7.5) (meters 5)) - (:y (meters 12.5)) - (:z (meters -16.5) (meters 5)) - (:scale-x (meters 12.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.035 0.03) + (:x (meters -7.5) (meters 5)) + (:y (meters 12.5)) + (:z (meters -16.5) (meters 5)) + (:scale-x (meters 12.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -90)))) (defpart 1233 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.025) - (:x (meters -6.5) (meters 3)) - (:y (meters 8)) - (:z (meters -15.5) (meters 3)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.025) + (:x (meters -6.5) (meters 3)) + (:y (meters 8)) + (:z (meters -15.5) (meters 3)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpart 1234 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.1 1.0) - (:x (meters -6)) - (:y (meters 43) (meters 0.5)) - (:z (meters 10.5) (meters 4.5)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.65)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.1 1.0) + (:x (meters -6)) + (:y (meters 43) (meters 0.5)) + (:z (meters 10.5) (meters 4.5)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.65)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -90)))) (defpart 1235 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.03 1.0) - (:x (meters -6)) - (:y (meters 43) (meters 0.5)) - (:z (meters 15) (meters 3)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.05)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.94)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.03 1.0) + (:x (meters -6)) + (:y (meters 43) (meters 0.5)) + (:z (meters 15) (meters 3)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.05)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.94)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -90)))) (defpart 1236 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.3) - (:x (meters -6)) - (:y (meters 43) (meters 0.5)) - (:z (meters 10.5) (meters 2.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0) - (:vel-x (meters 0.043333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00045138889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.3) + (:x (meters -6)) + (:y (meters 43) (meters 0.5)) + (:z (meters 10.5) (meters 2.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0) + (:vel-x (meters 0.043333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00045138889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1237 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.7) - (:x (meters -6)) - (:y (meters 43) (meters 0.5)) - (:z (meters 13) (meters 5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.043333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00045138889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.45)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.7) + (:x (meters -6)) + (:y (meters 43) (meters 0.5)) + (:z (meters 13) (meters 5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.043333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00045138889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.45)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1238 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.1) - (:x (meters -6)) - (:y (meters 42.5) (meters 0.5)) - (:z (meters 14) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.028333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters 0.0033333334)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00021464647)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.8)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.1) + (:x (meters -6)) + (:y (meters 42.5) (meters 0.5)) + (:z (meters 14) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.028333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00021464647)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.8)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpart 1239 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.06) - (:x (meters -6)) - (:y (meters 42.5) (meters 0.5)) - (:z (meters 10) (meters 4)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.028333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00021464647)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.3)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.06) + (:x (meters -6)) + (:y (meters 42.5) (meters 0.5)) + (:z (meters 10) (meters 4)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.028333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00021464647)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.3)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpart 1240 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.2 1.0) - (:x (meters 0)) - (:y (meters 28) (meters 1.5)) - (:z (meters 10) (meters 3.5)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 1) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.026666667) (meters 0.033333335)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:vel-z (meters 0.033333335) (meters 0.026666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:accel-z (meters -0.00045537343)) - (:timer (seconds 0.68)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.75)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.2 1.0) + (:x (meters 0)) + (:y (meters 28) (meters 1.5)) + (:z (meters 10) (meters 3.5)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 1) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.026666667) (meters 0.033333335)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:vel-z (meters 0.033333335) (meters 0.026666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:accel-z (meters -0.00045537343)) + (:timer (seconds 0.68)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.75)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -90)))) (defpart 1241 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 28) (meters 1.5)) - (:z (meters 10) (meters 3.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.013333334) (meters 0.04)) - (:vel-y (meters 0.0033333334) (meters 0.04)) - (:vel-z (meters 0.02) (meters 0.02)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00041666668)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:accel-z (meters -0.00020833334)) - (:timer (seconds 1.05)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 28) (meters 1.5)) + (:z (meters 10) (meters 3.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.013333334) (meters 0.04)) + (:vel-y (meters 0.0033333334) (meters 0.04)) + (:vel-z (meters 0.02) (meters 0.02)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00041666668)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:accel-z (meters -0.00020833334)) + (:timer (seconds 1.05)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1242 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.3) - (:x (meters 0)) - (:y (meters 28) (meters 1.5)) - (:z (meters 10) (meters 3.5)) - (:scale-x (meters 2.2) (meters 2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:vel-z (meters 0.01) (meters 0.02)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:accel-z (meters -0.00012626263)) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.2)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.3) + (:x (meters 0)) + (:y (meters 28) (meters 1.5)) + (:z (meters 10) (meters 3.5)) + (:scale-x (meters 2.2) (meters 2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:vel-z (meters 0.01) (meters 0.02)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:accel-z (meters -0.00012626263)) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.2)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpartgroup group-village2-waterfall-30 :id 278 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 1243) - (sp-item 1243 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1243 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1244 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1245 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1246) - (sp-item 1246 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1246 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1247 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - ) - ) + :parts + ((sp-item 1243) + (sp-item 1243 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1243 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1244 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1245 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1246) + (sp-item 1246 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1246 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1247 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)))) (defpart 1243 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -8) (meters 4)) - (:y (meters 49.5)) - (:z (meters -3.5) (meters 7)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.23)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -8) (meters 4)) + (:y (meters 49.5)) + (:z (meters -3.5) (meters 7)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.23)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees -90)))) (defpart 1244 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.5) - (:x (meters -8) (meters 4)) - (:y (meters 49.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.7)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.5) + (:x (meters -8) (meters 4)) + (:y (meters 49.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.7)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1245 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters -7) (meters 3.5)) - (:y (meters 49.5)) - (:z (meters -4) (meters 8)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.22)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters -7) (meters 3.5)) + (:y (meters 49.5)) + (:z (meters -4) (meters 8)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.22)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpart 1246 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.1) - (:x (meters 3) (meters 6)) - (:y (meters 6)) - (:z (meters -6) (meters 12)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.1) + (:x (meters 3) (meters 6)) + (:y (meters 6)) + (:z (meters -6) (meters 12)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -90)))) (defpart 1247 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters 5) (meters 10)) - (:y (meters 2.5)) - (:z (meters -8) (meters 16)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters 5) (meters 10)) + (:y (meters 2.5)) + (:z (meters -8) (meters 16)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpartgroup group-village2-waterfall-31 :id 279 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 2324)) - ) + :parts ((sp-item 2324))) (defpartgroup group-village2-waterfall-32 :id 280 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 1253) - (sp-item 1253 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1253 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1254 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1255 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1256) - (sp-item 1256 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1256 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1257 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1258) - (sp-item 1258 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1258 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1259 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1260 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1261) - (sp-item 1261 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1261 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1262 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1263 :fade-after (meters 160) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 1253) + (sp-item 1253 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1253 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1254 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1255 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1256) + (sp-item 1256 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1256 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1257 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1258) + (sp-item 1258 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1258 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1259 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1260 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1261) + (sp-item 1261 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1261 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1262 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1263 :fade-after (meters 160) :falloff-to (meters 160)))) (defpart 1253 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.266 0.333) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -13.5) (meters 1)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.6)) - (:next-launcher 1264) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.266 0.333) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -13.5) (meters 1)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.6)) + (:next-launcher 1264) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -15)))) (defpart 1264 - :init-specs ((:scale-y (meters 1) (meters 1)) - (:vel-x (meters 0.053333335) (meters 0.013333334)) - (:vel-y (meters -0.026666667) (meters -0.013333334)) - (:vel-z (meters 0.04) (meters 0.013333334)) - (:accel-x (meters -0.0013071896)) - (:accel-z (meters -0.0007843137)) - (:next-time (seconds 0.85)) - (:next-launcher 1210) - ) - ) + :init-specs + ((:scale-y (meters 1) (meters 1)) + (:vel-x (meters 0.053333335) (meters 0.013333334)) + (:vel-y (meters -0.026666667) (meters -0.013333334)) + (:vel-z (meters 0.04) (meters 0.013333334)) + (:accel-x (meters -0.0013071896)) + (:accel-z (meters -0.0007843137)) + (:next-time (seconds 0.85)) + (:next-launcher 1210))) (defpart 1254 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -13.5) (meters 1)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 2.4)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1265) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -13.5) (meters 1)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 2.4)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1265) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -15)))) (defpart 1265 - :init-specs ((:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:vel-x (meters 0.026666667) (meters 0.013333334)) - (:vel-y (meters 0) (meters 0.013333334)) - (:vel-z (meters 0.013333334) (meters 0.026666667)) - (:accel-x (meters -0.00031746033)) - ) - ) + :init-specs + ((:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:vel-x (meters 0.026666667) (meters 0.013333334)) + (:vel-y (meters 0) (meters 0.013333334)) + (:vel-z (meters 0.013333334) (meters 0.026666667)) + (:accel-x (meters -0.00031746033)))) (defpart 1255 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.2) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -13.5) (meters 1)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.4)) - (:next-launcher 1266) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.2) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -13.5) (meters 1)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.4)) + (:next-launcher 1266) + (:rotate-y (degrees -15)))) (defpart 1266 - :init-specs ((:vel-x (meters 0.053333335) (meters 0.013333334)) - (:vel-y (meters -0.026666667) (meters -0.013333334)) - (:vel-z (meters 0.04) (meters 0.006666667)) - (:scalevel-x (meters 0.009765625)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.001234568)) - (:accel-z (meters -0.0006584363)) - (:next-time (seconds 1.35)) - (:next-launcher 1210) - ) - ) + :init-specs + ((:vel-x (meters 0.053333335) (meters 0.013333334)) + (:vel-y (meters -0.026666667) (meters -0.013333334)) + (:vel-z (meters 0.04) (meters 0.006666667)) + (:scalevel-x (meters 0.009765625)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.001234568)) + (:accel-z (meters -0.0006584363)) + (:next-time (seconds 1.35)) + (:next-launcher 1210))) (defpart 1256 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.1) - (:x (meters -3) (meters 12)) - (:y (meters 6)) - (:z (meters -19) (meters 16)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.1) + (:x (meters -3) (meters 12)) + (:y (meters 6)) + (:z (meters -19) (meters 16)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -45)))) (defpart 1257 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters -3) (meters 12)) - (:y (meters 2.5)) - (:z (meters -17) (meters 12)) - (:scale-x (meters 1) (meters 3)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.04) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters -3) (meters 12)) + (:y (meters 2.5)) + (:z (meters -17) (meters 12)) + (:scale-x (meters 1) (meters 3)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.04) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpart 1258 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.033 1.2) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -2) (meters 3)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.95)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.9)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.033 1.2) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -2) (meters 3)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.95)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.9)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -25.000002)))) (defpart 1259 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -3) (meters 5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.35)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -3) (meters 5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.35)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -25.000002)))) (defpart 1260 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.2) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -3) (meters 5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.7)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.65)) - (:next-launcher 1210) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.2) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -3) (meters 5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.7)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.65)) + (:next-launcher 1210) + (:rotate-y (degrees -25.000002)))) (defpart 1261 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.33 1.2) - (:x (meters -2) (meters 1)) - (:y (meters 23.5) (meters 6)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 1) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees 10) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.33 1.2) + (:x (meters -2) (meters 1)) + (:y (meters 23.5) (meters 6)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 1) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees 10) (degrees 50.000004)))) (defpart 1262 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -2) (meters 1)) - (:y (meters 25.5) (meters 4)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.053333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.35)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -45) (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -2) (meters 1)) + (:y (meters 25.5) (meters 4)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.053333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.35)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -45) (degrees 90)))) (defpart 1263 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -2) (meters 1)) - (:y (meters 22.5) (meters 7)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 2.2) (meters 2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.65)) - (:next-launcher 1210) - (:rotate-y (degrees 10) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -2) (meters 1)) + (:y (meters 22.5) (meters 7)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 2.2) (meters 2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.65)) + (:next-launcher 1210) + (:rotate-y (degrees 10) (degrees 50.000004)))) (defpartgroup group-village2-waterfall-33 :id 281 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 1267) - (sp-item 1267 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1267 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1268) - (sp-item 1268 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1268 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1269 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1270 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1271 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1272 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1273) - (sp-item 1273 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1273 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1274 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1275 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1276) - (sp-item 1276 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1276 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1277 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - ) - ) + :parts + ((sp-item 1267) + (sp-item 1267 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1267 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1268) + (sp-item 1268 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1268 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1269 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1270 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1271 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1272 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1273) + (sp-item 1273 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1273 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1274 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1275 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1276) + (sp-item 1276 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1276 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1277 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)))) (defpart 1267 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.4 1.0) - (:x (meters -7.5)) - (:y (meters 48) (meters 0.5)) - (:z (meters -4) (meters 4)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05) (meters 0.01)) - (:vel-y (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.65)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.4 1.0) + (:x (meters -7.5)) + (:y (meters 48) (meters 0.5)) + (:z (meters -4) (meters 4)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05) (meters 0.01)) + (:vel-y (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.65)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees 90)))) (defpart 1268 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.03 1.0) - (:x (meters -7.5)) - (:y (meters 48) (meters 0.5)) - (:z (meters -6) (meters 2)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05) (meters 0.01)) - (:vel-y (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.075)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.03 1.0) + (:x (meters -7.5)) + (:y (meters 48) (meters 0.5)) + (:z (meters -6) (meters 2)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05) (meters 0.01)) + (:vel-y (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.075)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees 90)))) (defpart 1269 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.3) - (:x (meters -7.5)) - (:y (meters 48) (meters 0.5)) - (:z (meters -4) (meters 4)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0) - (:vel-x (meters 0.043333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00045138889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.3) + (:x (meters -7.5)) + (:y (meters 48) (meters 0.5)) + (:z (meters -4) (meters 4)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0) + (:vel-x (meters 0.043333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00045138889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 90)))) (defpart 1270 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.7) - (:x (meters -7.5)) - (:y (meters 48) (meters 0.5)) - (:z (meters -6) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.043333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00045138889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.45)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.7) + (:x (meters -7.5)) + (:y (meters 48) (meters 0.5)) + (:z (meters -6) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.043333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00045138889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.45)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 90)))) (defpart 1271 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.1) - (:x (meters -7)) - (:y (meters 47.5) (meters 0.5)) - (:z (meters -6) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.03) (meters 0.01)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters 0.0033333334)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00021464647)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.9)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.1)) - (:next-launcher 1210) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.1) + (:x (meters -7)) + (:y (meters 47.5) (meters 0.5)) + (:z (meters -6) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.03) (meters 0.01)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00021464647)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.9)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.1)) + (:next-launcher 1210) + (:rotate-y (degrees 90)))) (defpart 1272 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.06) - (:x (meters -7)) - (:y (meters 47.5) (meters 0.5)) - (:z (meters -4) (meters 4)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.0033333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00021464647)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.3)) - (:next-launcher 1210) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.06) + (:x (meters -7)) + (:y (meters 47.5) (meters 0.5)) + (:z (meters -4) (meters 4)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.0033333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00021464647)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.3)) + (:next-launcher 1210) + (:rotate-y (degrees 90)))) (defpart 1273 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.2 1.0) - (:x (meters -1.5)) - (:y (meters 33) (meters 1.5)) - (:z (meters -6) (meters 4.5)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 1) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.04) (meters 0.033333335)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:vel-z (meters 0.01) (meters 0.02)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:accel-z (meters -0.00022768672)) - (:timer (seconds 0.85)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.95)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.2 1.0) + (:x (meters -1.5)) + (:y (meters 33) (meters 1.5)) + (:z (meters -6) (meters 4.5)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 1) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.04) (meters 0.033333335)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:vel-z (meters 0.01) (meters 0.02)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:accel-z (meters -0.00022768672)) + (:timer (seconds 0.85)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.95)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees 90)))) (defpart 1274 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -1.5)) - (:y (meters 33) (meters 1.5)) - (:z (meters -6) (meters 4.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.013333334) (meters 0.04)) - (:vel-y (meters 0.0033333334) (meters 0.04)) - (:vel-z (meters 0.01) (meters 0.02)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00041666668)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:accel-z (meters -0.00017361112)) - (:timer (seconds 1.25)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -1.5)) + (:y (meters 33) (meters 1.5)) + (:z (meters -6) (meters 4.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.013333334) (meters 0.04)) + (:vel-y (meters 0.0033333334) (meters 0.04)) + (:vel-z (meters 0.01) (meters 0.02)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00041666668)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:accel-z (meters -0.00017361112)) + (:timer (seconds 1.25)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 90)))) (defpart 1275 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters -1.5)) - (:y (meters 33) (meters 1.5)) - (:z (meters -6) (meters 4.5)) - (:scale-x (meters 2.2) (meters 2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.03) (meters 0.02)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:vel-z (meters 0.006666667) (meters 0.016666668)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00037878787)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:accel-z (meters -0.00012626263)) - (:timer (seconds 1.6)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.8)) - (:next-launcher 1210) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters -1.5)) + (:y (meters 33) (meters 1.5)) + (:z (meters -6) (meters 4.5)) + (:scale-x (meters 2.2) (meters 2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.03) (meters 0.02)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:vel-z (meters 0.006666667) (meters 0.016666668)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00037878787)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:accel-z (meters -0.00012626263)) + (:timer (seconds 1.6)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.8)) + (:next-launcher 1210) + (:rotate-y (degrees 90)))) (defpart 1276 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.15) - (:x (meters 2.5) (meters 12)) - (:y (meters 7)) - (:z (meters -11) (meters 17)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.15) + (:x (meters 2.5) (meters 12)) + (:y (meters 7)) + (:z (meters -11) (meters 17)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees 90)))) (defpart 1277 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters 3.5) (meters 10)) - (:y (meters 2.5)) - (:z (meters -10) (meters 15)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters 3.5) (meters 10)) + (:y (meters 2.5)) + (:z (meters -10) (meters 15)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees 90)))) (defpartgroup group-village2-waterfall-34 :id 282 :flags (always-draw) :bounds (static-bspherem -15 17 -10 40) - :parts ((sp-item 1278) - (sp-item 1278 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1278 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1279 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1280 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1281) - (sp-item 1281 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1281 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1282 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1283 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1284) - (sp-item 1284 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1284 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1285 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1286 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1287) - (sp-item 1287 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1287 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1288 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1289 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1290) - (sp-item 1290 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1290 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1291 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1292 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1293) - (sp-item 1293 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1293 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1294 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1295 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1296) - (sp-item 1296 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1296 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1297 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1298 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1300 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1301 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1302) - (sp-item 1302 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1302 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1303) - (sp-item 1303 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1303 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1304) - (sp-item 1304 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1304 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1305) - (sp-item 1305 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1305 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1306 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1307) - (sp-item 1307 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1307 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1308 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1309) - (sp-item 1309 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1309 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1310 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - ) - ) + :parts + ((sp-item 1278) + (sp-item 1278 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1278 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1279 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1280 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1281) + (sp-item 1281 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1281 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1282 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1283 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1284) + (sp-item 1284 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1284 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1285 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1286 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1287) + (sp-item 1287 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1287 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1288 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1289 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1290) + (sp-item 1290 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1290 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1291 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1292 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1293) + (sp-item 1293 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1293 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1294 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1295 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1296) + (sp-item 1296 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1296 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1297 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1298 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1300 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1301 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1302) + (sp-item 1302 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1302 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1303) + (sp-item 1303 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1303 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1304) + (sp-item 1304 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1304 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1305) + (sp-item 1305 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1305 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1306 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1307) + (sp-item 1307 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1307 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1308 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1309) + (sp-item 1309 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1309 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1310 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)))) (defpart 1278 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -15) (meters 4)) - (:y (meters 43.5)) - (:z (meters 1.5) (meters 2.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.28)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -15) (meters 4)) + (:y (meters 43.5)) + (:z (meters 1.5) (meters 2.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.28)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 120)))) (defpart 1281 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.075) - (:x (meters -18) (meters 4)) - (:y (meters 42.5)) - (:z (meters 8) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.28)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.075) + (:x (meters -18) (meters 4)) + (:y (meters 42.5)) + (:z (meters 8) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.28)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 140)))) (defpart 1284 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.075) - (:x (meters -20) (meters 4)) - (:y (meters 43.5)) - (:z (meters -12) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.28)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.075) + (:x (meters -20) (meters 4)) + (:y (meters 43.5)) + (:z (meters -12) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.28)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 110)))) (defpart 1279 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters -15) (meters 4)) - (:y (meters 43.5)) - (:z (meters 1.5) (meters 2.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters -15) (meters 4)) + (:y (meters 43.5)) + (:z (meters 1.5) (meters 2.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 120)))) (defpart 1282 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.375) - (:x (meters -18) (meters 4)) - (:y (meters 43.5)) - (:z (meters 8) (meters 0.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.375) + (:x (meters -18) (meters 4)) + (:y (meters 43.5)) + (:z (meters 8) (meters 0.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 140)))) (defpart 1285 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.375) - (:x (meters -20) (meters 4)) - (:y (meters 43.5)) - (:z (meters -12) (meters 0.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.7)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.375) + (:x (meters -20) (meters 4)) + (:y (meters 43.5)) + (:z (meters -12) (meters 0.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.7)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 110)))) (defpart 1280 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters -15) (meters 4)) - (:y (meters 43.5)) - (:z (meters 1.5) (meters 2.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.27)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.1)) - (:next-launcher 1210) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters -15) (meters 4)) + (:y (meters 43.5)) + (:z (meters 1.5) (meters 2.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.27)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.1)) + (:next-launcher 1210) + (:rotate-y (degrees 120)))) (defpart 1283 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.225 0.15) - (:x (meters -18) (meters 4)) - (:y (meters 43.5)) - (:z (meters 8) (meters 0.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.27)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.1)) - (:next-launcher 1210) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.225 0.15) + (:x (meters -18) (meters 4)) + (:y (meters 43.5)) + (:z (meters 8) (meters 0.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.27)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.1)) + (:next-launcher 1210) + (:rotate-y (degrees 140)))) (defpart 1286 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.225 0.15) - (:x (meters -20) (meters 4)) - (:y (meters 43.5)) - (:z (meters -12) (meters 0.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.27)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.1)) - (:next-launcher 1210) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.225 0.15) + (:x (meters -20) (meters 4)) + (:y (meters 43.5)) + (:z (meters -12) (meters 0.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.27)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.1)) + (:next-launcher 1210) + (:rotate-y (degrees 110)))) (defpart 1287 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.6) - (:x (meters 26) (meters 4)) - (:y (meters 4.5)) - (:z (meters 15.5) (meters 5.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667) (meters 0.016666668)) - (:vel-y (meters 0) (meters 0.013333334)) - (:vel-z (meters -0.01) (meters 0.02)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0011384335)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.6) + (:x (meters 26) (meters 4)) + (:y (meters 4.5)) + (:z (meters 15.5) (meters 5.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667) (meters 0.016666668)) + (:vel-y (meters 0) (meters 0.013333334)) + (:vel-z (meters -0.01) (meters 0.02)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0011384335)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 190)))) (defpart 1290 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.3) - (:x (meters 33) (meters 4)) - (:y (meters -1)) - (:z (meters 15.5) (meters 6.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.016666668)) - (:vel-y (meters 0.026666667) (meters 0.013333334)) - (:vel-z (meters -0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.55)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.5)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.3) + (:x (meters 33) (meters 4)) + (:y (meters -1)) + (:z (meters 15.5) (meters 6.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.016666668)) + (:vel-y (meters 0.026666667) (meters 0.013333334)) + (:vel-z (meters -0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.55)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.5)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 190)))) (defpart 1288 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters 26) (meters 4)) - (:y (meters 4.5)) - (:z (meters 15.5) (meters 5.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.07333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.013333334) (meters 0.026666667)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.0007638889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters 26) (meters 4)) + (:y (meters 4.5)) + (:z (meters 15.5) (meters 5.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.07333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.013333334) (meters 0.026666667)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.0007638889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 190)))) (defpart 1291 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters 33) (meters 4)) - (:y (meters -1)) - (:z (meters 14.5) (meters 8.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.04) (meters 0.006666667)) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:vel-z (meters -0.02) (meters 0.04)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00041666668)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters 33) (meters 4)) + (:y (meters -1)) + (:z (meters 14.5) (meters 8.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.04) (meters 0.006666667)) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:vel-z (meters -0.02) (meters 0.04)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00041666668)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 190)))) (defpart 1289 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters 26) (meters 4)) - (:y (meters 4.5)) - (:z (meters 14.5) (meters 5.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.041666668)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00031565657)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters 26) (meters 4)) + (:y (meters 4.5)) + (:z (meters 14.5) (meters 5.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.041666668)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00031565657)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:rotate-y (degrees 190)))) (defpart 1292 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters 33) (meters 4)) - (:y (meters -1)) - (:z (meters 14.5) (meters 8.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.031666666)) - (:vel-y (meters 0.01) (meters 0.01)) - (:vel-z (meters -0.013333334) (meters 0.026666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00026515152)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 0.9)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1210) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters 33) (meters 4)) + (:y (meters -1)) + (:z (meters 14.5) (meters 8.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.031666666)) + (:vel-y (meters 0.01) (meters 0.01)) + (:vel-z (meters -0.013333334) (meters 0.026666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00026515152)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 0.9)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1210) + (:rotate-y (degrees 190)))) (defpart 1293 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.6) - (:x (meters 24) (meters 4)) - (:y (meters 4.5)) - (:z (meters -28.5) (meters 5.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.05) (meters 0.016666668)) - (:vel-y (meters -0.006666667) (meters 0.013333334)) - (:vel-z (meters -0.01) (meters 0.02)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.45)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.6) + (:x (meters 24) (meters 4)) + (:y (meters 4.5)) + (:z (meters -28.5) (meters 5.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.05) (meters 0.016666668)) + (:vel-y (meters -0.006666667) (meters 0.013333334)) + (:vel-z (meters -0.01) (meters 0.02)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.45)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 60)))) (defpart 1294 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters 24) (meters 4)) - (:y (meters 4.5)) - (:z (meters -28.5) (meters 5.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.053333335) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.013333334) (meters 0.026666667)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.0007638889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters 24) (meters 4)) + (:y (meters 4.5)) + (:z (meters -28.5) (meters 5.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.053333335) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.013333334) (meters 0.026666667)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.0007638889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 60)))) (defpart 1295 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters 24) (meters 4)) - (:y (meters 4.5)) - (:z (meters -28.5) (meters 5.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.035)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00031565657)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters 24) (meters 4)) + (:y (meters 4.5)) + (:z (meters -28.5) (meters 5.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.035)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00031565657)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:rotate-y (degrees 60)))) (defpart 1296 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.45 0.75) - (:x (meters 38) (meters 4)) - (:y (meters 4) (meters 1.5)) - (:z (meters -10.5) (meters 6.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.05) (meters 0.016666668)) - (:vel-y (meters -0.006666667) (meters 0.013333334)) - (:vel-z (meters -0.016666668) (meters 0.02)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.45 0.75) + (:x (meters 38) (meters 4)) + (:y (meters 4) (meters 1.5)) + (:z (meters -10.5) (meters 6.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.05) (meters 0.016666668)) + (:vel-y (meters -0.006666667) (meters 0.013333334)) + (:vel-z (meters -0.016666668) (meters 0.02)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 130)))) (defpart 1297 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters 38) (meters 4)) - (:y (meters 4) (meters 1.5)) - (:z (meters -10.5) (meters 6.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.053333335) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.026666667) (meters 0.026666667)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.0007638889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters 38) (meters 4)) + (:y (meters 4) (meters 1.5)) + (:z (meters -10.5) (meters 6.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.053333335) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.026666667) (meters 0.026666667)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.0007638889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 130)))) (defpart 1300 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.325) - (:x (meters 45) (meters 4)) - (:y (meters -1) (meters 1.5)) - (:z (meters -10.5) (meters 6.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.053333335) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.026666667) (meters 0.026666667)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.0007638889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.325) + (:x (meters 45) (meters 4)) + (:y (meters -1) (meters 1.5)) + (:z (meters -10.5) (meters 6.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.053333335) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.026666667) (meters 0.026666667)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.0007638889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 130)))) (defpart 1298 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters 38) (meters 4)) - (:y (meters 4) (meters 1.5)) - (:z (meters -10) (meters 7.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.035)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00031565657)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters 38) (meters 4)) + (:y (meters 4) (meters 1.5)) + (:z (meters -10) (meters 7.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.035)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00031565657)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:rotate-y (degrees 130)))) (defpart 1301 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15 0.225) - (:x (meters 45) (meters 4)) - (:y (meters -1) (meters 1.5)) - (:z (meters -10.5) (meters 6.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.035)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00031565657)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15 0.225) + (:x (meters 45) (meters 4)) + (:y (meters -1) (meters 1.5)) + (:z (meters -10.5) (meters 6.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.035)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00031565657)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees 130)))) (defpart 1302 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.45) - (:x (meters -30)) - (:y (meters 3.5) (meters 2)) - (:z (meters -18.5) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.03) (meters 0.01)) - (:vel-y (meters 0.05) (meters 0.033333335)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0004098361)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-y (degrees 100.00001) 1 (degrees 140)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.45) + (:x (meters -30)) + (:y (meters 3.5) (meters 2)) + (:z (meters -18.5) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.03) (meters 0.01)) + (:vel-y (meters 0.05) (meters 0.033333335)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0004098361)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-y (degrees 100.00001) 1 (degrees 140)) + (:rotate-y (degrees 0)))) (defpart 1303 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.4) - (:x (meters -24)) - (:y (meters 3.5) (meters 2)) - (:z (meters -25.5) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.03) (meters 0.01)) - (:vel-y (meters 0.05) (meters 0.033333335)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0004098361)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-y (degrees 160) (degrees 40)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.4) + (:x (meters -24)) + (:y (meters 3.5) (meters 2)) + (:z (meters -25.5) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.03) (meters 0.01)) + (:vel-y (meters 0.05) (meters 0.033333335)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0004098361)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-y (degrees 160) (degrees 40)) + (:rotate-y (degrees 0)))) (defpart 1304 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.4) - (:x (meters -26)) - (:y (meters 3.5) (meters 2)) - (:z (meters -11.5) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.03) (meters 0.01)) - (:vel-y (meters 0.05) (meters 0.033333335)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0004098361)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-y (degrees 140) (degrees 40)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.4) + (:x (meters -26)) + (:y (meters 3.5) (meters 2)) + (:z (meters -11.5) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.03) (meters 0.01)) + (:vel-y (meters 0.05) (meters 0.033333335)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0004098361)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-y (degrees 140) (degrees 40)) + (:rotate-y (degrees 0)))) (defpart 1305 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.0375 0.0375) - (:x (meters -9) (meters 4)) - (:y (meters -2)) - (:z (meters -47) (meters 4)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.0375 0.0375) + (:x (meters -9) (meters 4)) + (:y (meters -2)) + (:z (meters -47) (meters 4)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees 0)))) (defpart 1307 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.075 0.015) - (:x (meters -45) (meters 12)) - (:y (meters -2)) - (:z (meters -33) (meters 5)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.075 0.015) + (:x (meters -45) (meters 12)) + (:y (meters -2)) + (:z (meters -33) (meters 5)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees 0)))) (defpart 1309 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.075 0.015) - (:x (meters -49) (meters 6)) - (:y (meters -2)) - (:z (meters -15) (meters 6)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.075 0.015) + (:x (meters -49) (meters 6)) + (:y (meters -2)) + (:z (meters -15) (meters 6)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees 0)))) (defpart 1306 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.00625) - (:x (meters -9) (meters 4)) - (:y (meters -6)) - (:z (meters -47) (meters 4)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 1.0) - (:scalevel-x (meters 0.026666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.00625) + (:x (meters -9) (meters 4)) + (:y (meters -6)) + (:z (meters -47) (meters 4)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 1.0) + (:scalevel-x (meters 0.026666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees 0)))) (defpart 1308 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.0375) - (:x (meters -44) (meters 10)) - (:y (meters -6)) - (:z (meters -32) (meters 3)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 1.0) - (:scalevel-x (meters 0.026666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.0375) + (:x (meters -44) (meters 10)) + (:y (meters -6)) + (:z (meters -32) (meters 3)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 1.0) + (:scalevel-x (meters 0.026666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees 0)))) (defpart 1310 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.00625) - (:x (meters -45) (meters 4)) - (:y (meters -6)) - (:z (meters -14) (meters 4)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 1.0) - (:scalevel-x (meters 0.026666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.00625) + (:x (meters -45) (meters 4)) + (:y (meters -6)) + (:z (meters -14) (meters 4)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 1.0) + (:scalevel-x (meters 0.026666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees 0)))) (defpartgroup group-village2-sagehut-warpgate :id 283 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 1313 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1314 :fade-after (meters 60) :falloff-to (meters 100) :binding 1311) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1315 :fade-after (meters 60) :falloff-to (meters 100) :binding 1312) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1313 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1314 :fade-after (meters 60) :falloff-to (meters 100) :binding 1311) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1315 :fade-after (meters 60) :falloff-to (meters 100) :binding 1312) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)))) (defpart 1315 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpart 1312 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 0.2) - (:x (meters 4.4444447)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 0.2) + (:x (meters 4.4444447)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 1313 - :init-specs ((:num 3.0 3.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 5.936232) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 3.0 3.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 5.936232) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees 0)))) (defpart 1314 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:timer (seconds 2.3)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:timer (seconds 2.3)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpart 1311 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.4) - (:x (meters 4.4444447)) - (:y (meters 4)) - (:z (meters 2.1)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0033333334)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.10666667) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.4) + (:x (meters 4.4444447)) + (:y (meters 4)) + (:z (meters 2.1)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0033333334)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.10666667) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7)))) (defpartgroup group-village2-tree-fire :id 284 :bounds (static-bspherem 0 10 0 12) - :parts ((sp-item 1316 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1317 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1318 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1319 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 1316 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1317 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1318 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1319 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 1316 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 1.0) - (:x (meters 2.2) (meters 0.5)) - (:y (meters -0.9)) - (:z (meters -0.9) (meters 0.5)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a 1.0666667) - (:accel-y (meters 0.00025)) - (:timer (seconds 0.6) (seconds 0.097)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.2)) - (:next-launcher 1320) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 1.0) + (:x (meters 2.2) (meters 0.5)) + (:y (meters -0.9)) + (:z (meters -0.9) (meters 0.5)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a 1.0666667) + (:accel-y (meters 0.00025)) + (:timer (seconds 0.6) (seconds 0.097)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.2)) + (:next-launcher 1320) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees 0)))) (defpart 1320 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 1317 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 1.0) - (:x (meters -0.6) (meters 0.5)) - (:y (meters -0.2) (meters 0.5)) - (:z (meters -2.9) (meters 0.5)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a 1.0666667) - (:accel-y (meters 0.00025)) - (:timer (seconds 0.6) (seconds 0.097)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.2)) - (:next-launcher 1320) - (:conerot-x (degrees 45)) - (:conerot-y (degrees 240)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 1.0) + (:x (meters -0.6) (meters 0.5)) + (:y (meters -0.2) (meters 0.5)) + (:z (meters -2.9) (meters 0.5)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a 1.0666667) + (:accel-y (meters 0.00025)) + (:timer (seconds 0.6) (seconds 0.097)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.2)) + (:next-launcher 1320) + (:conerot-x (degrees 45)) + (:conerot-y (degrees 240)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees 0)))) (defpart 1318 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -0.6) (meters 0.5)) - (:y (meters -0.2) (meters 0.5)) - (:z (meters -2.9) (meters 0.5)) - (:scale-x (meters 1.5) (meters 1.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0044444446)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.34133333) - (:fade-g -0.17066666) - (:fade-b -0.17066666) - (:fade-a 0.4) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 4)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 1174) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -0.6) (meters 0.5)) + (:y (meters -0.2) (meters 0.5)) + (:z (meters -2.9) (meters 0.5)) + (:scale-x (meters 1.5) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0044444446)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.34133333) + (:fade-g -0.17066666) + (:fade-b -0.17066666) + (:fade-a 0.4) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 4)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 1174) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)))) (defpart 1319 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -0.6) (meters 0.5)) - (:y (meters -0.2) (meters 0.5)) - (:z (meters -2.9) (meters 0.5)) - (:scale-x (meters 1.5) (meters 1.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0044444446)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.34133333) - (:fade-g -0.17066666) - (:fade-b -0.17066666) - (:fade-a 0.4) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 4)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 1174) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -0.6) (meters 0.5)) + (:y (meters -0.2) (meters 0.5)) + (:z (meters -2.9) (meters 0.5)) + (:scale-x (meters 1.5) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0044444446)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.34133333) + (:fade-g -0.17066666) + (:fade-b -0.17066666) + (:fade-a 0.4) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 4)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 1174) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)))) diff --git a/goal_src/jak1/levels/village2/warrior.gc b/goal_src/jak1/levels/village2/warrior.gc index 06e76b6373..4d81c939fc 100644 --- a/goal_src/jak1/levels/village2/warrior.gc +++ b/goal_src/jak1/levels/village2/warrior.gc @@ -1,178 +1,110 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "levels/village2/village2-obs.gc") (require "engine/common-obs/process-taskable.gc") -;; name: warrior.gc -;; name in dgo: warrior -;; dgos: L1, VI2 - ;; DECOMP BEGINS -(deftype warrior (process-taskable) - () - ) - +(deftype warrior (process-taskable) ()) -(defskelgroup *warrior-sg* warrior warrior-lod0-jg warrior-idle-ja - ((warrior-lod0-mg (meters 20)) (warrior-lod1-mg (meters 40)) (warrior-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow warrior-shadow-mg - ) +(defskelgroup *warrior-sg* + warrior + warrior-lod0-jg + warrior-idle-ja + ((warrior-lod0-mg (meters 20)) (warrior-lod1-mg (meters 40)) (warrior-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow warrior-shadow-mg) (defmethod process-taskable-method-52 ((this warrior)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (set! (-> v1-1 settings top-plane w) (- (+ 3072.0 f0-0))) - ) - 0 - ) - ) - (none) - ) + (set! (-> v1-1 settings top-plane w) (- (+ 3072.0 f0-0)))) + 0)) + (none)) (defmethod draw-npc-shadow ((this warrior)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this warrior) (arg0 symbol)) (with-pp (set! (-> this talk-message) (text-id press-to-talk)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "warrior-introduction" - :index 6 - :parts 29 - :command-list '((125 joint "cameraB") - (260 joint "camera") - (574 joint "cameraB") - (918 joint "camera") - (1174 joint "cameraB") - (1174 shadow self #f) - (1301 joint "camera") - (1301 shadow self #t) - (2025 joint "cameraB") - (2322 joint "camera") - (2560 joint "cameraB") - ) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "warrior-introduction" + :index 6 + :parts 29 + :command-list + '((125 joint "cameraB") + (260 joint "camera") + (574 joint "cameraB") + (918 joint "camera") + (1174 joint "cameraB") + (1174 shadow self #f) + (1301 joint "camera") + (1301 shadow self #t) + (2025 joint "cameraB") + (2322 joint "camera") + (2560 joint "cameraB")))) (((task-status need-reminder)) (set! (-> this skippable) #t) - (new 'static 'spool-anim :name "warrior-reminder-1" :index 7 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "warrior-reminder-1" :index 7 :parts 3 :command-list '())) (((task-status need-reward-speech)) (cond (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - (send-event (-> (entity-by-type allpontoons) extra process) 'clone (process->handle this)) - (dotimes (s5-2 (entity-actor-count (-> this entity) 'alt-actor)) - (entity-birth-no-kill (entity-actor-lookup (-> this entity) 'alt-actor s5-2)) - (let ((s4-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-2 from) pp) - (set! (-> s4-2 num-params) 0) - (set! (-> s4-2 message) 'die) - (let ((s3-0 send-event-function) - (v1-25 (entity-actor-lookup (-> this entity) 'alt-actor s5-2)) - ) - (s3-0 - (if v1-25 - (-> v1-25 extra process) - ) - s4-2 - ) - ) - ) - ) - ) - (else - (set! (-> this will-talk) #t) - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim - :name "warrior-resolution" - :index 8 - :parts 6 - :command-list '((508 blackout 10) (511 blackout 0)) - ) - ) + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) + (send-event (-> (entity-by-type allpontoons) extra process) 'clone (process->handle this)) + (dotimes (s5-2 (entity-actor-count (-> this entity) 'alt-actor)) + (entity-birth-no-kill (entity-actor-lookup (-> this entity) 'alt-actor s5-2)) + (let ((s4-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-2 from) pp) + (set! (-> s4-2 num-params) 0) + (set! (-> s4-2 message) 'die) + (let ((s3-0 send-event-function) + (v1-25 (entity-actor-lookup (-> this entity) 'alt-actor s5-2))) + (s3-0 (if v1-25 (-> v1-25 extra process)) s4-2))))) + (else (set! (-> this will-talk) #t) (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static 'spool-anim :name "warrior-resolution" :index 8 :parts 6 :command-list '((508 blackout 10) (511 blackout 0)))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 5) - ) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 5))))) (defmethod get-art-elem ((this warrior)) - (-> this draw art-group data 5) - ) + (-> this draw art-group data 5)) (defstate play-anim (warrior) :virtual #t - :exit (behavior () - (send-event (-> (entity-by-type allpontoons) extra process) 'end-mode) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (send-event (-> (entity-by-type allpontoons) extra process) 'end-mode) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod process-taskable-method-43 ((this warrior)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 2) 61440.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.66 f0-2) - (play-ambient (-> this ambient) "WAR-LO1A" #f (-> this root trans)) - ) - ((< 0.33 f0-2) - (play-ambient (-> this ambient) "WAR-LO1B" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "WAR-LO1C" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.66 f0-2) (play-ambient (-> this ambient) "WAR-LO1A" #f (-> this root trans))) + ((< 0.33 f0-2) (play-ambient (-> this ambient) "WAR-LO1B" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "WAR-LO1C" #f (-> this root trans))))))) (defmethod initialize-collision ((this warrior) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -189,24 +121,19 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0) - (append-prim s4-0 s3-1) - ) - ) + (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! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this warrior) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *warrior-sg* 3 33 (new 'static 'vector :y -4096.0 :w 10240.0) 5) @@ -214,5 +141,4 @@ (set! (-> this sound-flava) (music-flava warrior)) (set! (-> this draw light-index) (the-as uint 3)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/assistant-village3.gc b/goal_src/jak1/levels/village3/assistant-village3.gc index 8722455e13..d93b72298f 100644 --- a/goal_src/jak1/levels/village3/assistant-village3.gc +++ b/goal_src/jak1/levels/village3/assistant-village3.gc @@ -1,186 +1,115 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: assistant-village3.gc -;; name in dgo: assistant-village3 -;; dgos: L1, VI3 - ;; DECOMP BEGINS -(deftype assistant-villagec (process-taskable) - () - ) - +(deftype assistant-villagec (process-taskable) ()) -(defskelgroup *assistant-village3-sg* assistant-village3 assistant-village3-lod0-jg assistant-village3-idle-ja - ((assistant-village3-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow assistant-village3-shadow-mg - ) +(defskelgroup *assistant-village3-sg* + assistant-village3 + assistant-village3-lod0-jg + assistant-village3-idle-ja + ((assistant-village3-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow assistant-village3-shadow-mg) (defmethod process-taskable-method-52 ((this assistant-villagec)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0)))) 0 - (set! (-> v1-1 settings top-plane w) (- (+ 1024.0 f0-0))) - ) - 0 - ) - ) - (none) - ) + (set! (-> v1-1 settings top-plane w) (- (+ 1024.0 f0-0)))) + 0)) + (none)) (defmethod draw-npc-shadow ((this assistant-villagec)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this assistant-villagec) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk-to-assistant)) (cond ((= (get-task-status (game-task finalboss-movies)) (task-status need-introduction)) (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - (else - (new 'static 'spool-anim :name "assistant-village3-reminder" :index 4 :parts 3 :command-list '()) - ) - ) - ) + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)) + (else (new 'static 'spool-anim :name "assistant-village3-reminder" :index 4 :parts 3 :command-list '())))) (defmethod get-art-elem ((this assistant-villagec)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod should-display? ((this assistant-villagec)) - (and (task-closed? (game-task village3-button) (task-status need-introduction)) (not (sages-kidnapped?))) - ) + (and (task-closed? (game-task village3-button) (task-status need-introduction)) (not (sages-kidnapped?)))) (defmethod target-above-threshold? ((this assistant-villagec)) - (the-as symbol (and *target* (< (-> (target-pos 0) z) -14245888.0))) - ) + (the-as symbol (and *target* (< (-> (target-pos 0) z) -14245888.0)))) (defmethod process-taskable-method-43 ((this assistant-villagec)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.85714287 f0-2) - (play-ambient (-> this ambient) "ASSTLP31" #f (-> this root trans)) - ) - ((< 0.71428573 f0-2) - (play-ambient (-> this ambient) "ASSTLP32" #f (-> this root trans)) - ) - ((< 0.5714286 f0-2) - (play-ambient (-> this ambient) "ASSTLP33" #f (-> this root trans)) - ) + ((< 0.85714287 f0-2) (play-ambient (-> this ambient) "ASSTLP31" #f (-> this root trans))) + ((< 0.71428573 f0-2) (play-ambient (-> this ambient) "ASSTLP32" #f (-> this root trans))) + ((< 0.5714286 f0-2) (play-ambient (-> this ambient) "ASSTLP33" #f (-> this root trans))) ((< 0.42857143 f0-2) (let ((v1-16 (get-task-status (game-task lavatube-end)))) (if (not (or (= v1-16 (task-status need-reward-speech)) (= v1-16 (task-status invalid)))) - (play-ambient (-> this ambient) "ASSTLP34" #f (-> this root trans)) - ) - ) - ) + (play-ambient (-> this ambient) "ASSTLP34" #f (-> this root trans))))) ((< 0.2857143 f0-2) (let ((v1-21 (get-task-status (game-task lavatube-end)))) (if (not (or (= v1-21 (task-status need-reward-speech)) (= v1-21 (task-status invalid)))) - (play-ambient (-> this ambient) "ASSTLP35" #f (-> this root trans)) - ) - ) - ) + (play-ambient (-> this ambient) "ASSTLP35" #f (-> this root trans))))) ((< 0.14285715 f0-2) (let ((v1-26 (get-task-status (game-task lavatube-end)))) (if (not (or (= v1-26 (task-status need-reward-speech)) (= v1-26 (task-status invalid)))) - (play-ambient (-> this ambient) "ASSTLP36" #f (-> this root trans)) - ) - ) - ) + (play-ambient (-> this ambient) "ASSTLP36" #f (-> this root trans))))) ((nonzero? (get-task-status (game-task citadel-sage-green))) - (play-ambient (-> this ambient) "ASSTLP37" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "ASSTLP37" #f (-> this root trans))))))) (defstate idle (assistant-villagec) :virtual #t - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (process-taskable-method-43 self) - (ja-no-eval :group! assistant-village3-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-0 (current-time))) - (while (let ((s5-0 (current-time)) - (f30-0 300.0) - (f28-0 0.16) - (f26-0 0.17000002) - ) - (< (- s5-0 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-0) - ) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop + (process-taskable-method-43 self) + (ja-no-eval :group! assistant-village3-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 0.0 0)) :frame-num (ja-aframe 16.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 0.0 0))) - ) - (let ((gp-3 (current-time))) - (while (let ((s5-1 (current-time)) - (f30-1 300.0) - (f28-1 0.16) - (f26-1 0.17000002) - ) - (< (- s5-1 (the-as time-frame (the int (* f30-1 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-3) - ) + (ja :num! (seek!))) + (let ((gp-0 (current-time))) + (while (let ((s5-0 (current-time)) + (f30-0 300.0) + (f28-0 0.16) + (f26-0 0.17000002)) + (< (- s5-0 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-0)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 0.0 0)) :frame-num (ja-aframe 16.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 0.0 0)))) + (let ((gp-3 (current-time))) + (while (let ((s5-1 (current-time)) + (f30-1 300.0) + (f28-1 0.16) + (f26-1 0.17000002)) + (< (- s5-1 (the-as time-frame (the int (* f30-1 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-3)) + (suspend)))))) (defmethod init-from-entity! ((this assistant-villagec) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-village3-sg* 3 31 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task assistant-village3))) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/minecart.gc b/goal_src/jak1/levels/village3/minecart.gc index e4e83866ba..23018953ac 100644 --- a/goal_src/jak1/levels/village3/minecart.gc +++ b/goal_src/jak1/levels/village3/minecart.gc @@ -1,77 +1,57 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") -;; name: minecart.gc -;; name in dgo: minecart -;; dgos: L1, VI3 - ;; DECOMP BEGINS -(defskelgroup *minecartsteel-sg* minecartsteel minecartsteel-lod0-jg minecartsteel-idle-ja - ((minecartsteel-lod0-mg (meters 20)) - (minecartsteel-lod1-mg (meters 40)) - (minecartsteel-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *minecartsteel-sg* + minecartsteel + minecartsteel-lod0-jg + minecartsteel-idle-ja + ((minecartsteel-lod0-mg (meters 20)) (minecartsteel-lod1-mg (meters 40)) (minecartsteel-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (deftype minecartsteel (process-drawable) - ((root collide-shape-moving :override) - (index int32) - (anim spool-anim) - (sync sync-info :inline) - ) + ((root collide-shape-moving :override) + (index int32) + (anim spool-anim) + (sync sync-info :inline)) (:state-methods - idle - ) - ) - + idle)) (defstate idle (minecartsteel) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (let ((a2-1 (new 'stack 'collide-overlap-result))) - (if (not (on-platform (-> self root) (-> *target* control) a2-1)) - (send-event proc 'no-look-around (seconds 1.5)) - ) - ) - ) - #f - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (let ((a2-1 (new 'stack 'collide-overlap-result))) + (if (not (on-platform (-> self root) (-> *target* control) a2-1)) (send-event proc 'no-look-around (seconds 1.5))))) + #f))) :trans rider-trans - :code (behavior () - (ja-channel-set! 1) - (ja :group! (-> self anim)) - (loop - (ja :num-func num-func-identity - :frame-num (* (get-current-phase (-> self sync)) (the float (+ (-> (ja-group) data 0 length) -1))) - ) - (let ((a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node minecartsteel-lod0-jg cart)))) - (update-trans! (-> self sound) a1-1) - ) - (update! (-> self sound)) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (ja-channel-set! 1) + (ja :group! (-> self anim)) + (loop + (ja :num-func + num-func-identity + :frame-num + (* (get-current-phase (-> self sync)) (the float (+ (-> (ja-group) data 0 length) -1)))) + (let ((a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node minecartsteel-lod0-jg cart)))) + (update-trans! (-> self sound) a1-1)) + (update! (-> self sound)) + (suspend))) + :post rider-post) (defbehavior minecartsteel-initialize-by-other minecartsteel ((arg0 entity-actor) (arg1 float)) (let ((s4-0 (new 'process 'collide-shape-moving self (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -80,12 +60,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4915.2 0.0 13107.2) - (set-root-prim! s4-0 s3-0) - ) + (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! (-> self root) s4-0) - ) + (set! (-> self root) s4-0)) (process-drawable-from-entity! self arg0) (logclear! (-> self mask) (process-mask actor-pause)) (quaternion-identity! (-> self root quat)) @@ -93,55 +71,31 @@ (set! (-> self draw origin-joint-index) (the-as uint 3)) (logior! (-> self skel status) (janim-status inited)) (load-params! (-> self sync) self (the-as uint 9000) arg1 0.15 0.15) - (set! (-> self sound) - (new 'process 'ambient-sound (static-sound-spec "v3-cartride" :fo-max 30) (-> self root trans)) - ) + (set! (-> self sound) (new 'process 'ambient-sound (static-sound-spec "v3-cartride" :fo-max 30) (-> self root trans))) (set! (-> self index) (res-lump-value arg0 'index int)) (let ((v1-33 (-> self index))) (set! (-> self anim) - (the-as - spool-anim - (cond - ((zero? v1-33) - minecartsteel-rail0-ja - ) - ((= v1-33 1) - (let ((a0-17 (-> self sync)) - (t9-12 (method-of-type sync-info setup-params!)) - (a1-11 9000) - (f0-7 (+ 0.8 arg1)) - ) - (t9-12 a0-17 (the-as uint a1-11) (- f0-7 (* (the float (the int (/ f0-7 1.0))) 1.0)) 0.15 0.15) - ) - minecartsteel-rail1-ja - ) - (else - (let ((a0-18 (-> self sync)) - (t9-13 (method-of-type sync-info setup-params!)) - (a1-12 9000) - (f0-10 (+ 0.13 arg1)) - ) - (t9-13 a0-18 (the-as uint a1-12) (- f0-10 (* (the float (the int (/ f0-10 1.0))) 1.0)) 0.15 0.15) - ) - minecartsteel-rail2-ja - ) - ) - ) - ) - ) - (go-virtual idle) - ) + (the-as spool-anim + (cond + ((zero? v1-33) minecartsteel-rail0-ja) + ((= v1-33 1) + (let ((a0-17 (-> self sync)) + (t9-12 (method-of-type sync-info setup-params!)) + (a1-11 9000) + (f0-7 (+ 0.8 arg1))) + (t9-12 a0-17 (the-as uint a1-11) (- f0-7 (* (the float (the int (/ f0-7 1.0))) 1.0)) 0.15 0.15)) + minecartsteel-rail1-ja) + (else + (let ((a0-18 (-> self sync)) + (t9-13 (method-of-type sync-info setup-params!)) + (a1-12 9000) + (f0-10 (+ 0.13 arg1))) + (t9-13 a0-18 (the-as uint a1-12) (- f0-10 (* (the float (the int (/ f0-10 1.0))) 1.0)) 0.15 0.15)) + minecartsteel-rail2-ja))))) + (go-virtual idle)) (defmethod init-from-entity! ((this minecartsteel) (arg0 entity-actor)) (dotimes (s4-0 4) - (process-spawn - minecartsteel - :init minecartsteel-initialize-by-other - arg0 - (* 0.2 (the float (+ s4-0 1))) - :to this - ) - ) + (process-spawn minecartsteel :init minecartsteel-initialize-by-other arg0 (* 0.2 (the float (+ s4-0 1))) :to this)) (minecartsteel-initialize-by-other arg0 0.0) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/miners.gc b/goal_src/jak1/levels/village3/miners.gc index 1442ae3614..88f591caff 100644 --- a/goal_src/jak1/levels/village3/miners.gc +++ b/goal_src/jak1/levels/village3/miners.gc @@ -1,13 +1,7 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/process-taskable.gc") - -;; name: miners.gc -;; name in dgo: miners -;; dgos: L1, VI3 - (declare-type minershort process-taskable) ;; DECOMP BEGINS @@ -16,332 +10,253 @@ (defbehavior miners-anim-loop process-taskable () (when (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (get-art-elem self)) - ) + (ja :group! (get-art-elem self))) (loop (suspend) (ja :num! (loop! 2.0)) - (if (= (-> self next-state name) 'idle) - (process-taskable-method-43 self) - ) - ) - 0 - ) + (if (= (-> self next-state name) 'idle) (process-taskable-method-43 self))) + 0) -(deftype minertall (process-taskable) - () - ) +(deftype minertall (process-taskable) ()) - -(defskelgroup *minertall-sg* minertall minertall-lod0-jg minertall-idle-ja - ((minertall-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow minertall-shadow-mg - ) +(defskelgroup *minertall-sg* + minertall + minertall-lod0-jg + minertall-idle-ja + ((minertall-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow minertall-shadow-mg) (defmethod process-taskable-method-52 ((this minertall)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this minertall)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this minertall) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) (current-status (-> this tasks)) (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (the-as basic (-> this draw art-group data 3)) - ) + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (the-as basic (-> this draw art-group data 3))) (defmethod get-art-elem ((this minertall)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate idle (minertall) :virtual #t - :trans (behavior () - (set! (-> self will-talk) #f) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code miners-anim-loop - ) + :trans + (behavior () + (set! (-> self will-talk) #f) + ((-> (method-of-type process-taskable idle) trans))) + :code miners-anim-loop) (defmethod init-from-entity! ((this minertall) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *minertall-sg* 32 47 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task village3-miner-money1))) (set! (-> this draw light-index) (the-as uint 1)) (process-taskable-method-42 this) - (none) - ) + (none)) (deftype minershort (process-taskable) - ((other-miner minertall) - ) - ) - + ((other-miner minertall))) -(defskelgroup *minershort-sg* minershort minershort-lod0-jg minershort-idle-ja - ((minershort-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow minershort-shadow-mg - ) +(defskelgroup *minershort-sg* + minershort + minershort-lod0-jg + minershort-idle-ja + ((minershort-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow minershort-shadow-mg) (defpartgroup group-minershort-candle :id 566 :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 2364 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 2365 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 2366 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 2364 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 2365 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 2366 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 2366 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 2.0) - (:y (meters 0)) - (:scale-x (meters 0.075) (meters 0.075)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 32.0) - (:b 128.0 16.0) - (:a 32.0 32.0) - (:vel-y (meters 0) (meters 0.00033333333)) - (:scalevel-x (meters 0.0005) (meters 0.001)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.32820514) - (:fade-g -0.32820514) - (:fade-b -0.32820514) - (:fade-a -0.16410257) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:timer (seconds 1.3)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.05)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 2.0) + (:y (meters 0)) + (:scale-x (meters 0.075) (meters 0.075)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 32.0) + (:b 128.0 16.0) + (:a 32.0 32.0) + (:vel-y (meters 0) (meters 0.00033333333)) + (:scalevel-x (meters 0.0005) (meters 0.001)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.32820514) + (:fade-g -0.32820514) + (:fade-b -0.32820514) + (:fade-a -0.16410257) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:timer (seconds 1.3)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.05)))) (defpart 2364 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:y (meters -0.08) (meters 0.02)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 32.0 32.0) - (:vel-x (meters 0) (meters 0.00016666666)) - (:vel-z (meters 0) (meters 0.00016666666)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:accel-y (meters 0.00026666667) (meters 0.00006666667)) - (:timer (seconds 0.2) (seconds 0.097)) - (:flags (bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:y (meters -0.08) (meters 0.02)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 32.0 32.0) + (:vel-x (meters 0) (meters 0.00016666666)) + (:vel-z (meters 0) (meters 0.00016666666)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:accel-y (meters 0.00026666667) (meters 0.00006666667)) + (:timer (seconds 0.2) (seconds 0.097)) + (:flags (bit3)))) (defpart 2365 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -0.02)) - (:scale-x (meters 0.5) (meters 0.75)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 16.0 32.0) - (:vel-x (meters 0) (meters 0.00016666666)) - (:vel-z (meters 0) (meters 0.00016666666)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:fade-a -1.92) - (:accel-y (meters 0.00026666667) (meters 0.00006666667)) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -0.02)) + (:scale-x (meters 0.5) (meters 0.75)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 16.0 32.0) + (:vel-x (meters 0) (meters 0.00016666666)) + (:vel-z (meters 0) (meters 0.00016666666)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:fade-a -1.92) + (:accel-y (meters 0.00026666667) (meters 0.00006666667)) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)))) (defmethod process-taskable-method-52 ((this minershort)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this minershort)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defbehavior minershort-trans-hook minershort () - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node minershort-lod0-jg candle)) - ) - (none) - ) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node minershort-lod0-jg candle))) + (none)) (defmethod play-anim! ((this minershort) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task village3-miner-money1)) (when arg0 (let* ((s5-1 (-> this tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - ) - (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) + (s4-0 (method-of-object s5-1 save-reminder))) + (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) (close-specific-task! (game-task village3-miner-money1) (task-status need-introduction)) (close-specific-task! (game-task village3-miner-money2) (task-status need-introduction)) (close-specific-task! (game-task village3-miner-money3) (task-status need-introduction)) - (close-specific-task! (game-task village3-miner-money4) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "minershort-introduction-orbs" - :index 4 - :parts 16 - :command-list '((171 joint "cameraB") - (206 joint "camera") - (423 joint "cameraB") - (591 joint "camera") - (692 joint "cameraB") - (918 joint "camera") - (1122 joint "cameraB") - (1122 shadow self #f) - (1241 joint "camera") - (1241 shadow self #t) - ) - ) - ) + (close-specific-task! (game-task village3-miner-money4) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "minershort-introduction-orbs" + :index 4 + :parts 16 + :command-list + '((171 joint "cameraB") + (206 joint "camera") + (423 joint "cameraB") + (591 joint "camera") + (692 joint "cameraB") + (918 joint "camera") + (1122 joint "cameraB") + (1122 shadow self #f) + (1241 joint "camera") + (1241 shadow self #t)))) (((game-task cave-gnawers)) (when arg0 (let* ((s5-2 (-> this tasks)) - (s4-1 (method-of-object s5-2 save-reminder)) - ) - (s4-1 s5-2 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) + (s4-1 (method-of-object s5-2 save-reminder))) + (s4-1 s5-2 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "minershort-introduction-gnawers" - :index 9 - :parts 8 - :command-list '((0 want-levels village3 maincave) - (149 joint "cameraB") - (158 display-level maincave movie) - (158 want-force-vis maincave #t) - (435 display-level maincave #f) - (435 joint "camera") - (680 joint "cameraB") - (719 joint "camera") - ) - ) - ) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "minershort-introduction-gnawers" + :index 9 + :parts 8 + :command-list + '((0 want-levels village3 maincave) + (149 joint "cameraB") + (158 display-level maincave movie) + (158 want-force-vis maincave #t) + (435 display-level maincave #f) + (435 joint "camera") + (680 joint "cameraB") + (719 joint "camera")))) (else - (when arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "minershort-introduction-switch" - :index 11 - :parts 7 - :command-list '((2 shadow "minertall-1" #f) (835 shadow "minertall-1" #t)) - ) - ) - ) - ) + (when arg0 + (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "minershort-introduction-switch" + :index 11 + :parts 7 + :command-list + '((2 shadow "minertall-1" #f) (835 shadow "minertall-1" #t)))))) (((task-status need-reminder)) (set! (-> this skippable) #t) (let ((s4-2 (+ (get-reminder (-> this tasks) 0) 1))) - (if (< (the-as uint 3) (the-as uint s4-2)) - (set! s4-2 0) - ) + (if (< (the-as uint 3) (the-as uint s4-2)) (set! s4-2 0)) (countdown (s3-0 4) (let ((v1-59 s4-2)) (cond @@ -349,220 +264,108 @@ (if (not (or (= (get-task-status (game-task village3-miner-money1)) (task-status need-reminder)) (= (get-task-status (game-task village3-miner-money2)) (task-status need-reminder)) (= (get-task-status (game-task village3-miner-money3)) (task-status need-reminder)) - (= (get-task-status (game-task village3-miner-money4)) (task-status need-reminder)) - ) - ) - (set! s4-2 1) - ) - ) - ((= v1-59 1) - (if (!= (get-task-status (game-task cave-gnawers)) (task-status need-reminder)) - (set! s4-2 2) - ) - ) + (= (get-task-status (game-task village3-miner-money4)) (task-status need-reminder)))) + (set! s4-2 1))) + ((= v1-59 1) (if (!= (get-task-status (game-task cave-gnawers)) (task-status need-reminder)) (set! s4-2 2))) ((= v1-59 2) (if (not (or (= (get-task-status (game-task village3-miner-money1)) (task-status need-reminder)) (= (get-task-status (game-task village3-miner-money2)) (task-status need-reminder)) (= (get-task-status (game-task village3-miner-money3)) (task-status need-reminder)) - (= (get-task-status (game-task village3-miner-money4)) (task-status need-reminder)) - ) - ) - (set! s4-2 3) - ) - ) - (else - (if (!= (get-task-status (game-task snow-eggtop)) (task-status need-reminder)) - (set! s4-2 0) - ) - ) - ) - ) - ) - (if arg0 - (save-reminder (-> this tasks) s4-2 0) - ) + (= (get-task-status (game-task village3-miner-money4)) (task-status need-reminder)))) + (set! s4-2 3))) + (else (if (!= (get-task-status (game-task snow-eggtop)) (task-status need-reminder)) (set! s4-2 0)))))) + (if arg0 (save-reminder (-> this tasks) s4-2 0)) (cond - ((zero? s4-2) - (new 'static 'spool-anim :name "minershort-reminder-1-orbs" :index 5 :parts 3 :command-list '()) - ) + ((zero? s4-2) (new 'static 'spool-anim :name "minershort-reminder-1-orbs" :index 5 :parts 3 :command-list '())) ((= s4-2 1) - (if arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - ) - (new 'static 'spool-anim :name "minershort-reminder-1-gnawers" :index 10 :parts 3 :command-list '()) - ) + (if arg0 (send-event (-> this other-miner ppointer 3) 'clone (process->handle this))) + (new 'static 'spool-anim :name "minershort-reminder-1-gnawers" :index 10 :parts 3 :command-list '())) ((= s4-2 2) - (if arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - ) - (new 'static 'spool-anim :name "minershort-reminder-2-orbs" :index 6 :parts 2 :command-list '()) - ) + (if arg0 (send-event (-> this other-miner ppointer 3) 'clone (process->handle this))) + (new 'static 'spool-anim :name "minershort-reminder-2-orbs" :index 6 :parts 2 :command-list '())) (else - (if arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - ) - (new 'static 'spool-anim - :name "minershort-reminder-1-switch" - :index 12 - :parts 5 - :command-list '((2 shadow "minertall-1" #f) (500 shadow "minertall-1" #t)) - ) - ) - ) - ) - ) + (if arg0 (send-event (-> this other-miner ppointer 3) 'clone (process->handle this))) + (new 'static + 'spool-anim + :name "minershort-reminder-1-switch" + :index 12 + :parts 5 + :command-list + '((2 shadow "minertall-1" #f) (500 shadow "minertall-1" #t))))))) (((task-status need-reward-speech)) (let ((s4-3 (get-reminder (-> this tasks) 2))) (cond (arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - (save-reminder (-> this tasks) (+ s4-3 1) 2) - ) - (else - (set! (-> this will-talk) #t) - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) + (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) + (save-reminder (-> this tasks) (+ s4-3 1) 2)) + (else (set! (-> this will-talk) #t) (set! (-> this talk-message) (text-id press-to-trade-money)))) (if (< (the-as uint s4-3) (the-as uint 3)) - (new 'static 'spool-anim :name "minershort-resolution-1-orbs" :index 7 :parts 2 :command-list '()) - (new 'static 'spool-anim - :name "minershort-resolution-2-orbs" - :index 8 - :parts 6 - :command-list '((154 joint "cameraB") (461 joint "camera")) - ) - ) - ) - ) + (new 'static 'spool-anim :name "minershort-resolution-1-orbs" :index 7 :parts 2 :command-list '()) + (new 'static + 'spool-anim + :name "minershort-resolution-2-orbs" + :index 8 + :parts 6 + :command-list + '((154 joint "cameraB") (461 joint "camera")))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defstate play-anim (minershort) :virtual #t - :exit (behavior () - (send-event (-> self other-miner ppointer 3) 'end-mode) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (send-event (-> self other-miner ppointer 3) 'end-mode) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod get-art-elem ((this minershort)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod process-taskable-method-43 ((this minershort)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.9655172 f0-2) - (play-ambient (-> this ambient) "MIN-LO01" #f (-> this root trans)) - ) - ((< 0.9310345 f0-2) - (play-ambient (-> this ambient) "MIN-LO03" #f (-> this root trans)) - ) - ((< 0.8965517 f0-2) - (play-ambient (-> this ambient) "MIN-LO04" #f (-> this root trans)) - ) - ((< 0.86206895 f0-2) - (play-ambient (-> this ambient) "MIN-LO05" #f (-> this root trans)) - ) - ((< 0.82758623 f0-2) - (play-ambient (-> this ambient) "MIN-LO06" #f (-> this root trans)) - ) - ((< 0.79310346 f0-2) - (play-ambient (-> this ambient) "MSH-AM01" #f (-> this root trans)) - ) - ((< 0.7586207 f0-2) - (play-ambient (-> this ambient) "MSH-AM02" #f (-> this root trans)) - ) - ((< 0.7241379 f0-2) - (play-ambient (-> this ambient) "MSH-AM03" #f (-> this root trans)) - ) - ((< 0.6896552 f0-2) - (play-ambient (-> this ambient) "MSH-AM04" #f (-> this root trans)) - ) - ((< 0.6551724 f0-2) - (play-ambient (-> this ambient) "MSH-AM05" #f (-> this root trans)) - ) - ((< 0.62068963 f0-2) - (play-ambient (-> this ambient) "MSH-AM06" #f (-> this root trans)) - ) - ((< 0.5862069 f0-2) - (play-ambient (-> this ambient) "MSH-AM07" #f (-> this root trans)) - ) - ((< 0.55172414 f0-2) - (play-ambient (-> this ambient) "MSH-AM08" #f (-> this root trans)) - ) - ((< 0.51724136 f0-2) - (play-ambient (-> this ambient) "MSH-AM09" #f (-> this root trans)) - ) - ((< 0.4827586 f0-2) - (play-ambient (-> this ambient) "MSH-AM10" #f (-> this root trans)) - ) - ((< 0.44827586 f0-2) - (play-ambient (-> this ambient) "MSH-AM11" #f (-> this root trans)) - ) - ((< 0.41379312 f0-2) - (play-ambient (-> this ambient) "MSH-AM12" #f (-> this root trans)) - ) - ((< 0.37931034 f0-2) - (play-ambient (-> this ambient) "MSH-AM1A" #f (-> this root trans)) - ) - ((< 0.3448276 f0-2) - (play-ambient (-> this ambient) "MSH-AM2A" #f (-> this root trans)) - ) - ((< 0.31034482 f0-2) - (play-ambient (-> this ambient) "MSH-AM3A" #f (-> this root trans)) - ) - ((< 0.27586207 f0-2) - (play-ambient (-> this ambient) "MTA-AM01" #f (-> this root trans)) - ) - ((< 0.2413793 f0-2) - (play-ambient (-> this ambient) "MTA-AM02" #f (-> this root trans)) - ) - ((< 0.20689656 f0-2) - (play-ambient (-> this ambient) "MTA-AM03" #f (-> this root trans)) - ) - ((< 0.1724138 f0-2) - (play-ambient (-> this ambient) "MTA-AM04" #f (-> this root trans)) - ) - ((< 0.13793103 f0-2) - (play-ambient (-> this ambient) "MTA-AM05" #f (-> this root trans)) - ) - ((< 0.10344828 f0-2) - (play-ambient (-> this ambient) "MTA-AM06" #f (-> this root trans)) - ) - ((< 0.06896552 f0-2) - (play-ambient (-> this ambient) "MTA-AM07" #f (-> this root trans)) - ) - ((< 0.03448276 f0-2) - (play-ambient (-> this ambient) "MTA-AM08" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "MTA-AM09" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.9655172 f0-2) (play-ambient (-> this ambient) "MIN-LO01" #f (-> this root trans))) + ((< 0.9310345 f0-2) (play-ambient (-> this ambient) "MIN-LO03" #f (-> this root trans))) + ((< 0.8965517 f0-2) (play-ambient (-> this ambient) "MIN-LO04" #f (-> this root trans))) + ((< 0.86206895 f0-2) (play-ambient (-> this ambient) "MIN-LO05" #f (-> this root trans))) + ((< 0.82758623 f0-2) (play-ambient (-> this ambient) "MIN-LO06" #f (-> this root trans))) + ((< 0.79310346 f0-2) (play-ambient (-> this ambient) "MSH-AM01" #f (-> this root trans))) + ((< 0.7586207 f0-2) (play-ambient (-> this ambient) "MSH-AM02" #f (-> this root trans))) + ((< 0.7241379 f0-2) (play-ambient (-> this ambient) "MSH-AM03" #f (-> this root trans))) + ((< 0.6896552 f0-2) (play-ambient (-> this ambient) "MSH-AM04" #f (-> this root trans))) + ((< 0.6551724 f0-2) (play-ambient (-> this ambient) "MSH-AM05" #f (-> this root trans))) + ((< 0.62068963 f0-2) (play-ambient (-> this ambient) "MSH-AM06" #f (-> this root trans))) + ((< 0.5862069 f0-2) (play-ambient (-> this ambient) "MSH-AM07" #f (-> this root trans))) + ((< 0.55172414 f0-2) (play-ambient (-> this ambient) "MSH-AM08" #f (-> this root trans))) + ((< 0.51724136 f0-2) (play-ambient (-> this ambient) "MSH-AM09" #f (-> this root trans))) + ((< 0.4827586 f0-2) (play-ambient (-> this ambient) "MSH-AM10" #f (-> this root trans))) + ((< 0.44827586 f0-2) (play-ambient (-> this ambient) "MSH-AM11" #f (-> this root trans))) + ((< 0.41379312 f0-2) (play-ambient (-> this ambient) "MSH-AM12" #f (-> this root trans))) + ((< 0.37931034 f0-2) (play-ambient (-> this ambient) "MSH-AM1A" #f (-> this root trans))) + ((< 0.3448276 f0-2) (play-ambient (-> this ambient) "MSH-AM2A" #f (-> this root trans))) + ((< 0.31034482 f0-2) (play-ambient (-> this ambient) "MSH-AM3A" #f (-> this root trans))) + ((< 0.27586207 f0-2) (play-ambient (-> this ambient) "MTA-AM01" #f (-> this root trans))) + ((< 0.2413793 f0-2) (play-ambient (-> this ambient) "MTA-AM02" #f (-> this root trans))) + ((< 0.20689656 f0-2) (play-ambient (-> this ambient) "MTA-AM03" #f (-> this root trans))) + ((< 0.1724138 f0-2) (play-ambient (-> this ambient) "MTA-AM04" #f (-> this root trans))) + ((< 0.13793103 f0-2) (play-ambient (-> this ambient) "MTA-AM05" #f (-> this root trans))) + ((< 0.10344828 f0-2) (play-ambient (-> this ambient) "MTA-AM06" #f (-> this root trans))) + ((< 0.06896552 f0-2) (play-ambient (-> this ambient) "MTA-AM07" #f (-> this root trans))) + ((< 0.03448276 f0-2) (play-ambient (-> this ambient) "MTA-AM08" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "MTA-AM09" #f (-> this root trans))))))) (defstate idle (minershort) :virtual #t - :code miners-anim-loop - ) + :code miners-anim-loop) (defmethod init-from-entity! ((this minershort) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *minershort-sg* 34 46 (new 'static 'vector :w 4096.0) 5) @@ -573,40 +376,33 @@ (set! (-> this sound-flava) (music-flava miners)) (set! (-> this draw light-index) (the-as uint 1)) (process-taskable-method-42 this) - (none) - ) + (none)) -(deftype cavegem (process-drawable) - () +(deftype cavegem (process-drawable) () (:state-methods - idle - ) - ) - + idle)) -(defskelgroup *cavegem-sg* cavegem cavegem-lod0-jg cavegem-idle-ja - ((cavegem-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 9) - ) +(defskelgroup *cavegem-sg* + cavegem + cavegem-lod0-jg + cavegem-idle-ja + ((cavegem-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 9)) (defstate idle (cavegem) :virtual #t - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this cavegem) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *cavegem-sg* '()) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/sage-village3.gc b/goal_src/jak1/levels/village3/sage-village3.gc index 2720e70690..3a34245812 100644 --- a/goal_src/jak1/levels/village3/sage-village3.gc +++ b/goal_src/jak1/levels/village3/sage-village3.gc @@ -1,297 +1,205 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: sage-village3.gc -;; name in dgo: sage-village3 -;; dgos: L1, VI3 - ;; DECOMP BEGINS (deftype sage-villagec (process-taskable) - ((evilbro handle) - (evilsis handle) - (assistant entity-actor) - ) - ) - - -(defskelgroup *sage-village3-sg* sage-village3 sage-village3-lod0-jg sage-village3-idle-ja - ((sage-village3-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow sage-village3-shadow-mg - ) - -(defskelgroup *evilbro-village3-sg* evilbro-village3 evilbro-village3-lod0-jg evilbro-village3-idle-ja - ((evilbro-village3-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow evilbro-village3-shadow-mg - ) - -(defskelgroup *evilsis-village3-sg* evilsis-village3 evilsis-village3-lod0-jg evilsis-village3-idle-ja - ((evilsis-village3-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow evilsis-village3-shadow-mg - ) + ((evilbro handle) + (evilsis handle) + (assistant entity-actor))) + +(defskelgroup *sage-village3-sg* + sage-village3 + sage-village3-lod0-jg + sage-village3-idle-ja + ((sage-village3-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow sage-village3-shadow-mg) + +(defskelgroup *evilbro-village3-sg* + evilbro-village3 + evilbro-village3-lod0-jg + evilbro-village3-idle-ja + ((evilbro-village3-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow evilbro-village3-shadow-mg) + +(defskelgroup *evilsis-village3-sg* + evilsis-village3 + evilsis-village3-lod0-jg + evilsis-village3-idle-ja + ((evilsis-village3-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow evilsis-village3-shadow-mg) (defmethod play-anim! ((this sage-villagec) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk-to-sage)) (case (current-status (-> this tasks)) (((task-status unknown) (task-status need-hint) (task-status need-introduction)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task village3-button)) (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) (send-event (-> this assistant extra process) 'clone (process->handle this)) (set! (-> this evilbro) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilbro-village3-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilbro-village3-sg* #f :to this))) (send-event (handle->process (-> this evilbro)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this evilbro)) 'blend-shape #t) (send-event (handle->process (-> this evilbro)) 'center-joint 3) (set! (-> this evilsis) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilsis-village3-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilsis-village3-sg* #f :to this))) (send-event (handle->process (-> this evilsis)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this evilsis)) 'blend-shape #t) (send-event (handle->process (-> this evilsis)) 'center-joint 3) - (set! (-> this draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-village3-introduction" - :index 8 - :parts 58 - :command-list '((206 joint "cameraB") - (268 joint "camera") - (321 joint "cameraB") - (415 joint "camera") - (502 joint "cameraB") - (655 joint "camera") - (864 joint "cameraB") - (958 joint "camera") - (1178 joint "cameraB") - (1295 joint "camera") - (1377 joint "cameraB") - (1683 joint "camera") - (2066 joint "cameraB") - (2209 joint "camera") - (2389 joint "cameraB") - (2707 joint "camera") - (2769 joint "cameraB") - (2901 joint "camera") - (3021 joint "cameraB") - (3158 joint "camera") - (3301 joint "cameraB") - (3533 joint "camera") - (3632 joint "cameraB") - (3692 joint "camera") - (3780 joint "cameraB") - (3818 joint "camera") - (4188 joint "cameraB") - (4324 joint "camera") - (4462 joint "cameraB") - (4542 joint "camera") - ) - ) - ) + (set! (-> this draw bounds w) 40960.0)) + (new 'static + 'spool-anim + :name "sage-village3-introduction" + :index 8 + :parts 58 + :command-list + '((206 joint "cameraB") + (268 joint "camera") + (321 joint "cameraB") + (415 joint "camera") + (502 joint "cameraB") + (655 joint "camera") + (864 joint "cameraB") + (958 joint "camera") + (1178 joint "cameraB") + (1295 joint "camera") + (1377 joint "cameraB") + (1683 joint "camera") + (2066 joint "cameraB") + (2209 joint "camera") + (2389 joint "cameraB") + (2707 joint "camera") + (2769 joint "cameraB") + (2901 joint "camera") + (3021 joint "cameraB") + (3158 joint "camera") + (3301 joint "cameraB") + (3533 joint "camera") + (3632 joint "cameraB") + (3692 joint "camera") + (3780 joint "cameraB") + (3818 joint "camera") + (4188 joint "cameraB") + (4324 joint "camera") + (4462 joint "cameraB") + (4542 joint "camera")))) (((game-task cave-dark-crystals)) (when arg0 (let* ((s5-3 (-> this tasks)) - (s4-0 (method-of-object s5-3 save-reminder)) - ) - (s4-0 s5-3 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-village3-introduction-dark-eco" - :index 4 - :parts 9 - :command-list '((111 joint "cameraB") (189 joint "camera") (455 joint "cameraB") (638 joint "camera") (753 joint "cameraB")) - ) - ) + (s4-0 (method-of-object s5-3 save-reminder))) + (s4-0 s5-3 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-village3-introduction-dark-eco" + :index 4 + :parts 9 + :command-list + '((111 joint "cameraB") (189 joint "camera") (455 joint "cameraB") (638 joint "camera") (753 joint "cameraB")))) (else - (if arg0 - (close-specific-task! (game-task snow-ram) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-village3-introduction-rams" - :index 6 - :parts 6 - :command-list '((155 joint "cameraB") (370 joint "camera")) - ) - ) - ) - ) + (if arg0 (close-specific-task! (game-task snow-ram) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-village3-introduction-rams" + :index 6 + :parts 6 + :command-list + '((155 joint "cameraB") (370 joint "camera")))))) (((task-status need-reminder-a) (task-status need-reminder)) (set! (-> this skippable) #t) (let ((s4-1 (+ (get-reminder (-> this tasks) 0) 1))) - (if (< (the-as uint 1) (the-as uint s4-1)) - (set! s4-1 0) - ) + (if (< (the-as uint 1) (the-as uint s4-1)) (set! s4-1 0)) (countdown (s3-0 2) (cond - ((zero? s4-1) - (if (!= (get-task-status (game-task cave-dark-crystals)) (task-status need-reminder)) - (set! s4-1 1) - ) - ) + ((zero? s4-1) (if (!= (get-task-status (game-task cave-dark-crystals)) (task-status need-reminder)) (set! s4-1 1))) (else - (if (not (or (= (get-task-status (game-task snow-ram)) (task-status need-reminder)) - (= (get-task-status (game-task snow-ram)) (task-status need-reminder-a)) - ) - ) - (set! s4-1 0) - ) - ) - ) - ) - (if arg0 - (save-reminder (-> this tasks) s4-1 0) - ) + (if (not (or (= (get-task-status (game-task snow-ram)) (task-status need-reminder)) + (= (get-task-status (game-task snow-ram)) (task-status need-reminder-a)))) + (set! s4-1 0))))) + (if arg0 (save-reminder (-> this tasks) s4-1 0)) (if (zero? s4-1) - (new 'static 'spool-anim :name "sage-village3-reminder-1-dark-eco" :index 5 :parts 2 :command-list '()) - (new 'static 'spool-anim :name "sage-village3-reminder-1-rams" :index 7 :parts 3 :command-list '()) - ) - ) - ) + (new 'static 'spool-anim :name "sage-village3-reminder-1-dark-eco" :index 5 :parts 2 :command-list '()) + (new 'static 'spool-anim :name "sage-village3-reminder-1-rams" :index 7 :parts 3 :command-list '())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod get-art-elem ((this sage-villagec)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod target-above-threshold? ((this sage-villagec)) - (the-as symbol (and *target* (< (-> (target-pos 0) x) 4575232.0) (< -14323302.0 (-> (target-pos 0) z)))) - ) + (the-as symbol (and *target* (< (-> (target-pos 0) x) 4575232.0) (< -14323302.0 (-> (target-pos 0) z))))) (defmethod process-taskable-method-43 ((this sage-villagec)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.875 f0-2) - (play-ambient (-> this ambient) "SAGELP31" #f (-> this root trans)) - ) + ((< 0.875 f0-2) (play-ambient (-> this ambient) "SAGELP31" #f (-> this root trans))) ((< 0.75 f0-2) (if (not (closed? (-> this tasks) (game-task cave-dark-crystals) (task-status need-reminder))) - (play-ambient (-> this ambient) "SAGELP32" #f (-> this root trans)) - ) - ) + (play-ambient (-> this ambient) "SAGELP32" #f (-> this root trans)))) ((< 0.625 f0-2) (if (nonzero? (get-task-status (game-task citadel-sage-green))) - (play-ambient (-> this ambient) "SAGELP33" #f (-> this root trans)) - ) - ) - ((< 0.5 f0-2) - (play-ambient (-> this ambient) "SAGELP34" #f (-> this root trans)) - ) - ((< 0.375 f0-2) - (play-ambient (-> this ambient) "SAGELP35" #f (-> this root trans)) - ) - ((< 0.25 f0-2) - (play-ambient (-> this ambient) "SAGELP36" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "SAGELP33" #f (-> this root trans)))) + ((< 0.5 f0-2) (play-ambient (-> this ambient) "SAGELP34" #f (-> this root trans))) + ((< 0.375 f0-2) (play-ambient (-> this ambient) "SAGELP35" #f (-> this root trans))) + ((< 0.25 f0-2) (play-ambient (-> this ambient) "SAGELP36" #f (-> this root trans))) ((< 0.125 f0-2) (if (nonzero? (get-task-status (game-task citadel-sage-green))) - (play-ambient (-> this ambient) "SAGELP37" #f (-> this root trans)) - ) - ) + (play-ambient (-> this ambient) "SAGELP37" #f (-> this root trans)))) ((!= (get-task-status (game-task citadel-sage-green)) (task-status need-resolution)) - (play-ambient (-> this ambient) "SAGELP38" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "SAGELP38" #f (-> this root trans))))))) (defstate idle (sage-villagec) :virtual #t - :trans (behavior () - (case (get-task-status (game-task village3-button)) - (((task-status need-introduction)) - (send-event self 'play-anim) - ) - ) - ((-> (method-of-type process-taskable idle) trans)) - ) - ) + :trans + (behavior () + (case (get-task-status (game-task village3-button)) + (((task-status need-introduction)) (send-event self 'play-anim))) + ((-> (method-of-type process-taskable idle) trans)))) (defstate play-anim (sage-villagec) :virtual #t - :exit (behavior () - (set! (-> self draw bounds w) 10240.0) - (send-event (-> self assistant extra process) 'end-mode) - (let ((a0-2 (handle->process (-> self evilbro)))) - (if a0-2 - (deactivate a0-2) - ) - ) - (let ((a0-6 (handle->process (-> self evilsis)))) - (if a0-6 - (deactivate a0-6) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (set! (-> self draw bounds w) 10240.0) + (send-event (-> self assistant extra process) 'end-mode) + (let ((a0-2 (handle->process (-> self evilbro)))) (if a0-2 (deactivate a0-2))) + (let ((a0-6 (handle->process (-> self evilsis)))) (if a0-6 (deactivate a0-6))) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod should-display? ((this sage-villagec)) (cond ((not (closed? (-> this tasks) (game-task village3-button) (task-status need-hint))) (process-taskable-method-33 this) - #f - ) - ((sages-kidnapped?) - (process-taskable-method-33 this) - #f - ) - (else - #t - ) - ) - ) + #f) + ((sages-kidnapped?) (process-taskable-method-33 this) #f) + (else #t))) (defmethod draw-npc-shadow ((this sage-villagec)) (let ((v1-1 (-> this draw shadow-ctrl))) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) (logclear! (-> v1-1 settings flags) (shadow-flags shdf02)) (set! (-> v1-1 settings bot-plane w) 20480.0) - (let ((a0-8 v1-1)) - (logclear! (-> a0-8 settings flags) (shadow-flags disable-draw)) - ) + (let ((a0-8 v1-1)) (logclear! (-> a0-8 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day v1-1) - ) - (else - (logior! (-> v1-1 settings flags) (shadow-flags disable-draw)) - 0 - ) - ) - ) - (none) - ) + (update-direction-from-time-of-day v1-1)) + (else (logior! (-> v1-1 settings flags) (shadow-flags disable-draw)) 0))) + (none)) (defmethod init-from-entity! ((this sage-villagec) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sage-village3-sg* 3 40 (new 'static 'vector :w 8192.0) 5) @@ -301,5 +209,4 @@ (set! (-> this evilsis) (the-as handle #f)) (set! (-> this sound-flava) (music-flava sage)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/village3-obs.gc b/goal_src/jak1/levels/village3/village3-obs.gc index ea1409d56e..f9b8413af8 100644 --- a/goal_src/jak1/levels/village3/village3-obs.gc +++ b/goal_src/jak1/levels/village3/village3-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/gfx/shadow/shadow-cpu.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/entity/ambient.gc") @@ -9,327 +8,262 @@ (require "engine/common-obs/water-anim.gc") (require "engine/target/target-util.gc") -;; name: village3-obs.gc -;; name in dgo: village3-obs -;; dgos: L1, VI3 - ;; DECOMP BEGINS -(defskelgroup *med-res-ogre-sg* medres-ogre medres-ogre-lod0-jg medres-ogre-idle-ja - ((medres-ogre-lod0-mg (meters 999999))) - :bounds (static-spherem -200 0 -450 350) - :longest-edge (meters 0.01) - ) - -(defskelgroup *med-res-ogre2-sg* medres-ogre2 medres-ogre2-lod0-jg medres-ogre2-idle-ja - ((medres-ogre2-lod0-mg (meters 999999))) - :bounds (static-spherem -200 0 -950 320) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-ogre-sg* + medres-ogre + medres-ogre-lod0-jg + medres-ogre-idle-ja + ((medres-ogre-lod0-mg (meters 999999))) + :bounds (static-spherem -200 0 -450 350) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-ogre3-sg* medres-ogre3 medres-ogre3-lod0-jg medres-ogre3-idle-ja - ((medres-ogre3-lod0-mg (meters 999999))) - :bounds (static-spherem -100 0 -1370 300) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-ogre2-sg* + medres-ogre2 + medres-ogre2-lod0-jg + medres-ogre2-idle-ja + ((medres-ogre2-lod0-mg (meters 999999))) + :bounds (static-spherem -200 0 -950 320) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-finalboss-sg* medres-finalboss medres-finalboss-lod0-jg medres-finalboss-idle-ja - ((medres-finalboss-lod0-mg (meters 999999))) - :bounds (static-spherem 80 120 -150 470) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-ogre3-sg* + medres-ogre3 + medres-ogre3-lod0-jg + medres-ogre3-idle-ja + ((medres-ogre3-lod0-mg (meters 999999))) + :bounds (static-spherem -100 0 -1370 300) + :longest-edge (meters 0.01)) -(deftype villagec-lava (water-anim) - () - ) +(defskelgroup *med-res-finalboss-sg* + medres-finalboss + medres-finalboss-lod0-jg + medres-finalboss-idle-ja + ((medres-finalboss-lod0-mg (meters 999999))) + :bounds (static-spherem 80 120 -150 470) + :longest-edge (meters 0.01)) +(deftype villagec-lava (water-anim) ()) -(define ripple-for-villagec-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 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -2 :zdiv 2 :speed 0.9) - (new 'static 'ripple-wave) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-villagec-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 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -2 :zdiv 2 :speed 0.9) + (new 'static 'ripple-wave) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this villagec-lava)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set! (-> v1-2 global-scale) 3072.0) - (set! (-> v1-2 waveform) ripple-for-villagec-lava) - ) + (set! (-> v1-2 waveform) ripple-for-villagec-lava)) (logclear! (-> this flags) (water-flags wt23)) (logior! (-> this flags) (water-flags wt25)) (set! (-> this attack-event) 'lava) - (none) - ) + (none)) (deftype gondola (process-drawable) - ((root collide-shape-moving :override) - (anim spool-anim) - (old-target-pos transformq :inline) - ) - (:state-methods - (idle symbol) - ride-up - ride-down - ) - ) - + ((root collide-shape-moving :override) + (anim spool-anim) + (old-target-pos transformq :inline)) + (:state-methods (idle symbol) + ride-up + ride-down)) -(defskelgroup *gondola-sg* gondola gondola-lod0-jg gondola-idle-down-ja - ((gondola-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -5.5 0 6.5) - :shadow gondola-shadow-mg - ) +(defskelgroup *gondola-sg* + gondola + gondola-lod0-jg + gondola-idle-down-ja + ((gondola-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -5.5 0 6.5) + :shadow gondola-shadow-mg) (defstate idle (gondola) :virtual #t - :code (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - (ja-channel-set! 1) - (cond - (arg0 - (set! (-> self anim) (new 'static 'spool-anim - :name "gondola-ride-down" - :index 6 - :parts 3 - :command-list '((0 want-levels village3 snow) - (0 shadow target #f) - (0 shadow sidekick #f) - (1 display-level village3 display) - (175 display-level snow #f) - (300 setting-reset music village3) - (618 save) - (619 blackout 20) - (619 shadow target #t) - ) - ) - ) - (ja :group! gondola-idle-up-ja) - ) - (else - (set! (-> self anim) (new 'static 'spool-anim - :name "gondola-ride-up" - :index 5 - :parts 3 - :command-list '((0 want-levels village3 snow) - (0 shadow target #f) - (400 setting-reset music snow) - (400 display-level snow display) - (678 save) - (679 blackout 20) - (679 shadow target #t) - ) - ) - ) - (ja :group! gondola-idle-down-ja) - ) - ) - (transform-post) - (loop - (when (and *target* - (and (< (vector-vector-distance - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node gondola-lod0-jg main)) - (target-pos 0) - ) - 81920.0 - ) - (not (movie?)) - (not (level-hint-displayed?)) - (time-elapsed? (-> self state-time) (seconds 3)) - ;; og:preserve-this fix gondola spool not loading because it's "too far away" (technically) - (#if (not PC_PORT) + :code + (behavior ((arg0 symbol)) + (set-time! (-> self state-time)) + (ja-channel-set! 1) + (cond + (arg0 + (set! (-> self anim) + (new 'static + 'spool-anim + :name "gondola-ride-down" + :index 6 + :parts 3 + :command-list + '((0 want-levels village3 snow) + (0 shadow target #f) + (0 shadow sidekick #f) + (1 display-level village3 display) + (175 display-level snow #f) + (300 setting-reset music village3) + (618 save) + (619 blackout 20) + (619 shadow target #t)))) + (ja :group! gondola-idle-up-ja)) + (else + (set! (-> self anim) + (new 'static + 'spool-anim + :name "gondola-ride-up" + :index 5 + :parts 3 + :command-list + '((0 want-levels village3 snow) + (0 shadow target #f) + (400 setting-reset music snow) + (400 display-level snow display) + (678 save) + (679 blackout 20) + (679 shadow target #t)))) + (ja :group! gondola-idle-down-ja))) + (transform-post) + (loop + (when (and *target* + (and (< (vector-vector-distance (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node gondola-lod0-jg main)) (target-pos 0)) + 81920.0) + (not (movie?)) + (not (level-hint-displayed?)) + (time-elapsed? (-> self state-time) (seconds 3)) + ;; og:preserve-this fix gondola spool not loading because it's "too far away" (technically) + (#if (not PC_PORT) (file-status *art-control* (-> self anim name) 0) (begin - (spool-push *art-control* (-> self anim name) 0 self (vector-vector-distance - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) - (target-pos 0))) - (file-status *art-control* (-> self anim name) 0)) - ) - ) - ) - (let ((s3-0 (get-reminder (get-task-control (game-task village3-button)) 2)) - (s4-1 (and *cheat-mode* (cpad-hold? 0 l3))) - (s5-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node gondola-lod0-jg main))) - ) - (cond - ((not (or s4-1 (task-closed? (game-task village3-button) (task-status need-hint)))) - ) - ((and (< (the int (-> *game-info* fuel)) (+ s3-0 2)) (< (the int (-> *game-info* fuel)) 71) (not s4-1)) - (level-hint-spawn (text-id gondola-need-cells) "asstvb75" (the-as entity #f) *entity-pool* (game-task none)) - ) - (else - (level-hint-spawn (text-id gondola-enough-cells) "asstvb76" (the-as entity #f) *entity-pool* (game-task none)) - (let ((s4-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-3 from) self) - (set! (-> s4-3 num-params) 0) - (set! (-> s4-3 message) 'update) - (let ((s3-1 send-event-function) - (v1-36 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - ) - (s3-1 - (if v1-36 - (-> v1-36 extra process) - ) - s4-3 - ) - ) - ) - (let ((s4-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-4 from) self) - (set! (-> s4-4 num-params) 0) - (set! (-> s4-4 message) 'update) - (let ((s3-2 send-event-function) - (v1-40 (entity-actor-lookup (-> self entity) 'alt-actor 1)) - ) - (s3-2 - (if v1-40 - (-> v1-40 extra process) - ) - s4-4 - ) - ) - ) - (when (and (< (vector-vector-xz-distance s5-1 (-> *target* control trans)) 18432.0) - (and (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - (and (< (+ -40960.0 (-> s5-1 y)) (-> *target* control trans y)) - (begin - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (hud-hidden?) - ) - (can-grab-display? self) - ) - ) - ) - (let ((s5-2 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-59 s5-2)) - (set! (-> v1-59 width) (the float 440)) - ) - (let ((v1-60 s5-2)) - (set! (-> v1-60 height) (the float 80)) - ) - (set! (-> s5-2 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-2 #f 128 22) - ) - (when (and (cpad-pressed? 0 circle) (process-grab? *target*)) - (if arg0 - (go-virtual ride-down) - (go-virtual ride-up) - ) - ) - ) - ) - ) - ) - ) - (spool-push *art-control* (-> self anim name) 0 self -99.0) - (suspend) - ) - ) - ) + (spool-push *art-control* + (-> self anim name) + 0 + self + (vector-vector-distance (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) (target-pos 0))) + (file-status *art-control* (-> self anim name) 0))))) + (let ((s3-0 (get-reminder (get-task-control (game-task village3-button)) 2)) + (s4-1 (and *cheat-mode* (cpad-hold? 0 l3))) + (s5-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node gondola-lod0-jg main)))) + (cond + ((not (or s4-1 (task-closed? (game-task village3-button) (task-status need-hint))))) + ((and (< (the int (-> *game-info* fuel)) (+ s3-0 2)) (< (the int (-> *game-info* fuel)) 71) (not s4-1)) + (level-hint-spawn (text-id gondola-need-cells) "asstvb75" (the-as entity #f) *entity-pool* (game-task none))) + (else + (level-hint-spawn (text-id gondola-enough-cells) "asstvb76" (the-as entity #f) *entity-pool* (game-task none)) + (let ((s4-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-3 from) self) + (set! (-> s4-3 num-params) 0) + (set! (-> s4-3 message) 'update) + (let ((s3-1 send-event-function) + (v1-36 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (s3-1 (if v1-36 (-> v1-36 extra process)) s4-3))) + (let ((s4-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-4 from) self) + (set! (-> s4-4 num-params) 0) + (set! (-> s4-4 message) 'update) + (let ((s3-2 send-event-function) + (v1-40 (entity-actor-lookup (-> self entity) 'alt-actor 1))) + (s3-2 (if v1-40 (-> v1-40 extra process)) s4-4))) + (when (and (< (vector-vector-xz-distance s5-1 (-> *target* control trans)) 18432.0) + (and (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))))) + (and (< (+ -40960.0 (-> s5-1 y)) (-> *target* control trans y)) + (begin + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (hud-hidden?)) + (can-grab-display? self)))) + (let ((s5-2 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-59 s5-2)) (set! (-> v1-59 width) (the float 440))) + (let ((v1-60 s5-2)) (set! (-> v1-60 height) (the float 80))) + (set! (-> s5-2 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-2 #f 128 22)) + (when (and (cpad-pressed? 0 circle) (process-grab? *target*)) + (if arg0 (go-virtual ride-down) (go-virtual ride-up)))))))) + (spool-push *art-control* (-> self anim name) 0 self -99.0) + (suspend)))) (defstate ride-up (gondola) :virtual #t - :code (behavior () - (process-entity-status! self (entity-perm-status bit-3) #t) - (when (send-event *target* 'clone-anim self) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (set-setting! 'sound-flava #f 30.0 (music-flava to-snow)) - (logclear! (-> self mask) (process-mask enemy)) - (process-spawn othercam self 4 #f #t :to self) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim gondola-idle-down-ja) - (the-as art-joint-anim gondola-idle-up-ja) - (the-as (function process-drawable symbol) false-func) - ) - (remove-setting! 'sound-flava) - (send-event *target* 'blend-shape #f) - (when *target* - (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (send-event *target* 'end-mode) - (update-transforms! (-> self root)) - (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) - (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) - (suspend) - (send-event *camera* 'teleport-to-other-start-string) - ) - (load-state-want-vis 'sno) - (set-continue! *game-info* "snow-start") - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (go-virtual idle #t) - ) - :post (behavior () - (ja-post) - (update-direction-from-time-of-day (-> self draw shadow-ctrl)) - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t) + (when (send-event *target* 'clone-anim self) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (set-setting! 'sound-flava #f 30.0 (music-flava to-snow)) + (logclear! (-> self mask) (process-mask enemy)) + (process-spawn othercam self 4 #f #t :to self) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim gondola-idle-down-ja) + (the-as art-joint-anim gondola-idle-up-ja) + (the-as (function process-drawable symbol) false-func)) + (remove-setting! 'sound-flava) + (send-event *target* 'blend-shape #f) + (when *target* + (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (send-event *target* 'end-mode) + (update-transforms! (-> self root)) + (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) + (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) + (suspend) + (send-event *camera* 'teleport-to-other-start-string)) + (load-state-want-vis 'sno) + (set-continue! *game-info* "snow-start")) + (process-entity-status! self (entity-perm-status bit-3) #f) + (go-virtual idle #t)) + :post + (behavior () + (ja-post) + (update-direction-from-time-of-day (-> self draw shadow-ctrl)))) (defstate ride-down (gondola) :virtual #t - :code (behavior () - (process-entity-status! self (entity-perm-status bit-3) #t) - (when (send-event *target* 'clone-anim self) - (send-event *target* 'trans 'save (-> self old-target-pos)) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (set-setting! 'sound-flava #f 30.0 (music-flava to-snow)) - (logclear! (-> self mask) (process-mask enemy)) - (process-spawn othercam self 4 #f #t :to self) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim gondola-idle-up-ja) - (the-as art-joint-anim gondola-idle-down-ja) - (the-as (function process-drawable symbol) false-func) - ) - (remove-setting! 'sound-flava) - (send-event *target* 'blend-shape #f) - (when *target* - (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (send-event *target* 'end-mode) - (update-transforms! (-> self root)) - (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) - (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) - (suspend) - (send-event *camera* 'teleport-to-other-start-string) - ) - (load-state-want-vis 'vi3) - (set-continue! *game-info* "village3-farside") - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (go-virtual idle #f) - ) - :post (-> (method-of-type gondola ride-up) post) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t) + (when (send-event *target* 'clone-anim self) + (send-event *target* 'trans 'save (-> self old-target-pos)) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (set-setting! 'sound-flava #f 30.0 (music-flava to-snow)) + (logclear! (-> self mask) (process-mask enemy)) + (process-spawn othercam self 4 #f #t :to self) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim gondola-idle-up-ja) + (the-as art-joint-anim gondola-idle-down-ja) + (the-as (function process-drawable symbol) false-func)) + (remove-setting! 'sound-flava) + (send-event *target* 'blend-shape #f) + (when *target* + (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (send-event *target* 'end-mode) + (update-transforms! (-> self root)) + (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) + (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) + (suspend) + (send-event *camera* 'teleport-to-other-start-string)) + (load-state-want-vis 'vi3) + (set-continue! *game-info* "village3-farside")) + (process-entity-status! self (entity-perm-status bit-3) #f) + (go-virtual idle #f)) + :post + (-> (method-of-type gondola ride-up) + post)) (defmethod init-from-entity! ((this gondola) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) (let ((s4-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -338,12 +272,10 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 26624.0) - (set-root-prim! s4-0 s3-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! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (quaternion-identity! (-> this root quat)) (initialize-skeleton this *gondola-sg* '()) @@ -353,151 +285,103 @@ (set! (-> this draw shadow-ctrl) (copy *target-shadow-control* 'process)) (let ((a0-16 (-> this draw shadow-ctrl))) (when a0-16 - (let ((v1-32 a0-16)) - (set! (-> v1-32 settings bot-plane w) (- -122880.0)) - ) + (let ((v1-32 a0-16)) (set! (-> v1-32 settings bot-plane w) (- -122880.0))) 0 - (let ((v1-34 a0-16)) - (set! (-> v1-34 settings top-plane w) (- 4096.0)) - ) + (let ((v1-34 a0-16)) (set! (-> v1-34 settings top-plane w) (- 4096.0))) 0 - (update-direction-from-time-of-day a0-16) - ) - ) + (update-direction-from-time-of-day a0-16))) (cond - ((< (-> (target-pos 0) y) (+ 204800.0 (-> this root trans y))) - (go (method-of-object this idle) #f) - ) + ((< (-> (target-pos 0) y) (+ 204800.0 (-> this root trans y))) (go (method-of-object this idle) #f)) (else - (set! (-> this anim) (new 'static 'spool-anim :name "gondola-ride-down" :index 6 :parts 3 :command-list '())) - (go (method-of-object this idle) #t) - ) - ) - (none) - ) + (set! (-> this anim) (new 'static 'spool-anim :name "gondola-ride-down" :index 6 :parts 3 :command-list '())) + (go (method-of-object this idle) #t))) + (none)) -(deftype pistons (process-drawable) - () +(deftype pistons (process-drawable) () (:state-methods - idle - (active handle symbol) - ) - ) - + idle + (active handle symbol))) -(defskelgroup *pistons-sg* pistons pistons-lod0-jg pistons-idle-ja - ((pistons-lod0-mg (meters 999999))) - :bounds (static-spherem 0 6 0 8) - ) +(defskelgroup *pistons-sg* + pistons + pistons-lod0-jg + pistons-idle-ja + ((pistons-lod0-mg (meters 999999))) + :bounds (static-spherem 0 6 0 8)) (defstate idle (pistons) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('update) - (go-virtual active (process->handle proc) #f) - ) - ) - ) - :code (behavior () - (ja-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('update) (go-virtual active (process->handle proc) #f)))) + :code + (behavior () + (ja-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) (defstate active (pistons) :virtual #t - :code (behavior ((arg0 handle) (arg1 symbol)) - (process-entity-status! self (entity-perm-status complete) #t) - (if (not arg1) - (sound-play "gdl-start-up") - ) - (let ((f30-0 (if arg1 - 1.0 - 0.0 - ) - ) - ) - (loop - (set! f30-0 (seek f30-0 1.0 (* 0.2 (seconds-per-frame)))) - (ja :num! (loop! f30-0)) - (ja-post) - (update! (-> self sound)) - (suspend) - ) - ) - ;; og:preserve-this decompiler never gets here and fails hard - (go-virtual idle) - ) - ) + :code + (behavior ((arg0 handle) (arg1 symbol)) + (process-entity-status! self (entity-perm-status complete) #t) + (if (not arg1) (sound-play "gdl-start-up")) + (let ((f30-0 (if arg1 1.0 0.0))) + (loop + (set! f30-0 (seek f30-0 1.0 (* 0.2 (seconds-per-frame)))) + (ja :num! (loop! f30-0)) + (ja-post) + (update! (-> self sound)) + (suspend))) + ;; og:preserve-this decompiler never gets here and fails hard + (go-virtual idle))) (defmethod init-from-entity! ((this pistons) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *pistons-sg* '()) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "gdl-gen-loop" :fo-max 100) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "gdl-gen-loop" :fo-max 100) (-> this root trans))) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go (method-of-object this active) (the-as handle #f) #t) - (go (method-of-object this idle)) - ) - (none) - ) + (go (method-of-object this active) (the-as handle #f) #t) + (go (method-of-object this idle))) + (none)) -(deftype gondolacables (process-drawable) - () +(deftype gondolacables (process-drawable) () (:state-methods - idle - ) - ) - + idle)) -(defskelgroup *gondolacables-sg* gondolacables gondolacables-lod0-jg gondolacables-idle-ja - ((gondolacables-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 120) - ) +(defskelgroup *gondolacables-sg* + gondolacables + gondolacables-lod0-jg + gondolacables-idle-ja + ((gondolacables-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 120)) (defstate idle (gondolacables) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('update) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((v0-0 1)) - (set! (-> self draw mgeo effect 0 effect-bits) (the-as uint v0-0)) - v0-0 - ) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('update) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((v0-0 1)) (set! (-> self draw mgeo effect 0 effect-bits) (the-as uint v0-0)) v0-0)))) + :code + (behavior () + (loop + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this gondolacables) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (initialize-skeleton this *gondolacables-sg* '()) (set! (-> this draw mgeo effect 0 effect-bits) - (the-as - uint - (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - 1 - 0 - ) - ) - ) + (the-as uint + (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) 1 0))) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/village3-part.gc b/goal_src/jak1/levels/village3/village3-part.gc index 4f1807e94a..710658b3d1 100644 --- a/goal_src/jak1/levels/village3/village3-part.gc +++ b/goal_src/jak1/levels/village3/village3-part.gc @@ -1,2049 +1,1955 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/sound/gsound-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: village3-part.gc -;; name in dgo: village3-part -;; dgos: L1, VI3 - ;; DECOMP BEGINS -(deftype villagec-part (part-spawner) - () - ) - +(deftype villagec-part (part-spawner) ()) (defpartgroup group-village3-candle :id 476 :bounds (static-bspherem 0 10 0 12) - :parts ((sp-item 1797 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1798 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1797 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1798 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1797 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -0.08) (meters 0.02)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 32.0 32.0) - (:vel-x (meters 0) (meters 0.00016666666)) - (:vel-z (meters 0) (meters 0.00016666666)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:accel-y (meters 0.00026666667) (meters 0.00006666667)) - (:timer (seconds 0.2) (seconds 0.097)) - (:flags (bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -0.08) (meters 0.02)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 32.0 32.0) + (:vel-x (meters 0) (meters 0.00016666666)) + (:vel-z (meters 0) (meters 0.00016666666)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:accel-y (meters 0.00026666667) (meters 0.00006666667)) + (:timer (seconds 0.2) (seconds 0.097)) + (:flags (bit3)))) (defpart 1798 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -0.04)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 8.0 16.0) - (:vel-x (meters 0) (meters 0.00016666666)) - (:vel-z (meters 0) (meters 0.00016666666)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:fade-a -0.8) - (:accel-y (meters 0.00026666667) (meters 0.00006666667)) - (:timer (seconds 0.085)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -0.04)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 8.0 16.0) + (:vel-x (meters 0) (meters 0.00016666666)) + (:vel-z (meters 0) (meters 0.00016666666)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:fade-a -0.8) + (:accel-y (meters 0.00026666667) (meters 0.00006666667)) + (:timer (seconds 0.085)) + (:flags (bit2 bit3)))) (defpartgroup group-village3-sulphur-05 :id 477 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1799 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1799 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-06 :id 478 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1801 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1801 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-07 :id 479 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1802 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1802 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-08 :id 480 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1803 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1803 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-09 :id 481 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1804 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1804 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-10 :id 482 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1805 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1805 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-11 :id 483 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1806 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1806 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-12 :id 484 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1807 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1807 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-13 :id 485 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1808 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1808 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-14 :id 486 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1809 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1809 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-15 :id 487 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1810 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1810 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpart 1810 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.21333334) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 150) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.21333334) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 150) (degrees 10)))) (defpart 1808 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 70) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 70) (degrees 10)))) (defpart 1809 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 70) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 70) (degrees 10)))) (defpart 1807 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1812) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 15) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1812) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 15) (degrees 10)))) (defpart 1812 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 2.5)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 2.5)) + (:next-launcher 1813))) (defpart 1806 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1814) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 90) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1814) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 90) (degrees 10)))) (defpart 1814 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 0.75)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 0.75)) + (:next-launcher 1813))) (defpart 1805 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees -10) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees -10) (degrees 10)))) (defpart 1804 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1815) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 0) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1815) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 0) (degrees 10)))) (defpart 1815 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 0.5)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 0.5)) + (:next-launcher 1813))) (defpart 1803 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1816) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 40) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1816) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 40) (degrees 10)))) (defpart 1816 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 0.5)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 0.5)) + (:next-launcher 1813))) (defpart 1802 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1817) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 40) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1817) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 40) (degrees 10)))) (defpart 1817 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 2.5)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 2.5)) + (:next-launcher 1813))) (defpart 1813 - :init-specs ((:fade-a -0.047407407) (:accel-y (meters 0.00033333333))) - ) + :init-specs ((:fade-a -0.047407407) (:accel-y (meters 0.00033333333)))) (defpart 1801 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 40) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 40) (degrees 10)))) (defpart 1799 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees -20) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees -20) (degrees 10)))) (defpart 1811 - :init-specs ((:vel-y (meters 0.00033333333)) (:fade-a -0.017777778) (:accel-y (meters -0.000006666667))) - ) + :init-specs ((:vel-y (meters 0.00033333333)) (:fade-a -0.017777778) (:accel-y (meters -0.000006666667)))) (defpart 1800 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 50.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-b 0.021333333) - (:fade-a 0.16) - (:friction 0.98) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 50.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-b 0.021333333) + (:fade-a 0.16) + (:friction 0.98) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811))) (defpartgroup group-village3-minor-fire :id 488 :bounds (static-bspherem 0 2.5 0 2.5) - :parts ((sp-item 2358 :fade-after (meters 50) :falloff-to (meters 80)) - (sp-item 2359 :fade-after (meters 40) :falloff-to (meters 40) :binding 2357) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2360 :fade-after (meters 60) :falloff-to (meters 80)) - (sp-item 2361 :fade-after (meters 50) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 2358 :fade-after (meters 50) :falloff-to (meters 80)) + (sp-item 2359 :fade-after (meters 40) :falloff-to (meters 40) :binding 2357) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2360 :fade-after (meters 60) :falloff-to (meters 80)) + (sp-item 2361 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 2359 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "fire-pop" :volume 100.0)) - (:x (meters -0.25) (meters 0.5)) - (:y (meters 0.5) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0) - (:b 0.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.04)) - (:accel-y (meters -0.00006666667) (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit1 bit3)) - (:conerot-x (degrees -20) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "fire-pop" :volume 100.0)) + (:x (meters -0.25) (meters 0.5)) + (:y (meters 0.5) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.04)) + (:accel-y (meters -0.00006666667) (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit1 bit3)) + (:conerot-x (degrees -20) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2357 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.25) (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters -0.00083333335) (meters 0.0016666667)) - (:fade-r 0.0) - (:fade-g -0.7111111) - (:fade-b -0.7111111) - (:fade-a -0.42666668) - (:timer (seconds 1)) - (:flags (bit1 bit2 bit3 bit7)) - (:next-time (seconds 0.6)) - (:next-launcher 2362) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters -0.00083333335) (meters 0.0016666667)) + (:fade-r 0.0) + (:fade-g -0.7111111) + (:fade-b -0.7111111) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (bit1 bit2 bit3 bit7)) + (:next-time (seconds 0.6)) + (:next-launcher 2362))) (defpart 2362 - :init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667)) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667))) (defpart 2358 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 3.0 7.0) - (:x (meters -0.5) (meters 1.1)) - (:y (meters -0.75)) - (:z (meters -0.5) (meters 1.1)) - (:scale-x (meters 0.5) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.73333335) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.2) (seconds 0.197)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 3.0 7.0) + (:x (meters -0.5) (meters 1.1)) + (:y (meters -0.75)) + (:z (meters -0.5) (meters 1.1)) + (:scale-x (meters 0.5) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.73333335) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.2) (seconds 0.197)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2360 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -0.5) (meters 1.1)) - (:y (meters -0.75)) - (:z (meters -0.5) (meters 1.1)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.18962963) - (:fade-g -0.094814815) - (:fade-b -0.094814815) - (:fade-a -0.047407407) - (:accel-y (meters -0.000006666667)) - (:friction 0.99) - (:timer (seconds 2.25)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -0.5) (meters 1.1)) + (:y (meters -0.75)) + (:z (meters -0.5) (meters 1.1)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.18962963) + (:fade-g -0.094814815) + (:fade-b -0.094814815) + (:fade-a -0.047407407) + (:accel-y (meters -0.000006666667)) + (:friction 0.99) + (:timer (seconds 2.25)) + (:flags (bit2)))) (defpart 2361 - :init-specs ((:num 0.4) - (:x (meters 0.2)) - (:y (meters -0.75)) - (:rot-x 8) - (:r 3276.8) - (:g 2662.4) - (:b 2867.2) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 2363) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.4) + (:x (meters 0.2)) + (:y (meters -0.75)) + (:rot-x 8) + (:r 3276.8) + (:g 2662.4) + (:b 2867.2) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 2363) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2363 - :init-specs ((:fade-b -1.3653333)) - ) + :init-specs ((:fade-b -1.3653333))) (defpartgroup group-spewing-volcano-36 :id 489 :bounds (static-bspherem 0 3 0 14) - :parts ((sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4) :offset 300) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.4) :offset 360) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.8) :offset 420) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 5.2) :offset 480) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 6.6) :offset 540) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.7) :offset 1620) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.9) :offset 1590) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.1) :offset 1560) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.3) :offset 1530) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.5) :offset 1500) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 120) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.5) :offset 120) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 120) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.1) :offset 120) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 120) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 64036) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 64066) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64096) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 64126) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64156) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63916) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 63946) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63976) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 64006) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64036) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 63316) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63376) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63436) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 63496) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.8) :offset 63556) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63616) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 63646) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63676) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 63706) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 63736) - (sp-item 1830 :falloff-to (meters 300) :period (seconds 8) :length (seconds 0.6)) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1) :offset 60) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 60) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 60) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 60) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 60) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 60) - (sp-item 1833 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 60) - (sp-item 1834 :falloff-to (meters 300)) - (sp-item 1835 :falloff-to (meters 300)) - (sp-item 1836 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 8) :length (seconds 2) :offset 60) - ) - ) + :parts + ((sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4) :offset 300) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.4) :offset 360) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.8) :offset 420) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 5.2) :offset 480) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 6.6) :offset 540) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.7) :offset 1620) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.9) :offset 1590) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.1) :offset 1560) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.3) :offset 1530) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.5) :offset 1500) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 120) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.5) :offset 120) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 120) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.1) :offset 120) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 120) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 64036) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 64066) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64096) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 64126) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64156) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63916) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 63946) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63976) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 64006) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64036) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 63316) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63376) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63436) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 63496) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.8) :offset 63556) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63616) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 63646) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63676) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 63706) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 63736) + (sp-item 1830 :falloff-to (meters 300) :period (seconds 8) :length (seconds 0.6)) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1) :offset 60) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 60) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 60) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 60) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 60) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 60) + (sp-item 1833 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 60) + (sp-item 1834 :falloff-to (meters 300)) + (sp-item 1835 :falloff-to (meters 300)) + (sp-item 1836 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 8) :length (seconds 2) :offset 60))) (defpartgroup group-spewing-volcano-37 :id 490 :bounds (static-bspherem 0 3 0 14) - :parts ((sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4) :offset 1500) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.4) :offset 1560) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.8) :offset 1620) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 5.2) :offset 1680) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 6.6) :offset 1740) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.7) :offset 2820) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.9) :offset 2790) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.1) :offset 2760) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.3) :offset 2730) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.5) :offset 2700) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 1320) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.5) :offset 1320) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 1320) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.1) :offset 1320) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 1320) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 65236) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 65266) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 65296) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 65326) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 65356) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 65116) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 65146) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 65176) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 65206) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 65236) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 64516) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64576) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64636) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64696) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.8) :offset 64756) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64816) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 64846) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64876) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 64906) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64936) - (sp-item 1830 :falloff-to (meters 300) :period (seconds 8) :length (seconds 0.6) :offset 1200) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1) :offset 1260) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 1260) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 1260) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 1260) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 1260) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 1260) - (sp-item 1833 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 1260) - (sp-item 1834 :falloff-to (meters 300) :offset 1200) - (sp-item 1835 :falloff-to (meters 300) :offset 1200) - (sp-item 1836 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 8) :length (seconds 2) :offset 1260) - ) - ) + :parts + ((sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4) :offset 1500) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.4) :offset 1560) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.8) :offset 1620) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 5.2) :offset 1680) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 6.6) :offset 1740) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.7) :offset 2820) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.9) :offset 2790) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.1) :offset 2760) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.3) :offset 2730) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.5) :offset 2700) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 1320) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.5) :offset 1320) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 1320) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.1) :offset 1320) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 1320) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 65236) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 65266) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 65296) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 65326) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 65356) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 65116) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 65146) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 65176) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 65206) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 65236) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 64516) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64576) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64636) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64696) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.8) :offset 64756) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64816) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 64846) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64876) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 64906) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64936) + (sp-item 1830 :falloff-to (meters 300) :period (seconds 8) :length (seconds 0.6) :offset 1200) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1) :offset 1260) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 1260) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 1260) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 1260) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 1260) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 1260) + (sp-item 1833 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 1260) + (sp-item 1834 :falloff-to (meters 300) :offset 1200) + (sp-item 1835 :falloff-to (meters 300) :offset 1200) + (sp-item 1836 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 8) :length (seconds 2) :offset 1260))) (defpart 1836 - :init-specs ((:num 0.2) - (:rot-x 5) - (:r 8192.0) - (:g 6144.0) - (:b 6144.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 4.2)) - (:flags (aux-list)) - (:next-time (seconds 0.05) (seconds 2.097)) - (:next-launcher 1837) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 9) (degrees 18)) - ) - ) + :init-specs + ((:num 0.2) + (:rot-x 5) + (:r 8192.0) + (:g 6144.0) + (:b 6144.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 4.2)) + (:flags (aux-list)) + (:next-time (seconds 0.05) (seconds 2.097)) + (:next-launcher 1837) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 9) (degrees 18)))) (defpart 1837 - :init-specs ((:fade-r 40.96) - (:fade-g 34.133335) - (:fade-b 30.72) - (:accel-x (meters 0)) - (:accel-y (meters 0.0016666667)) - (:accel-z (meters 0)) - (:friction 0.9) - (:next-time (seconds 1)) - (:next-launcher 1838) - ) - ) + :init-specs + ((:fade-r 40.96) + (:fade-g 34.133335) + (:fade-b 30.72) + (:accel-x (meters 0)) + (:accel-y (meters 0.0016666667)) + (:accel-z (meters 0)) + (:friction 0.9) + (:next-time (seconds 1)) + (:next-launcher 1838))) (defpart 1838 - :init-specs ((:fade-g 27.306667) (:timer (seconds 1))) - ) + :init-specs ((:fade-g 27.306667) (:timer (seconds 1)))) (defpart 1833 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 4.2)) - (:flags (bit2)) - (:next-time (seconds 0.05) (seconds 2.097)) - (:next-launcher 1839) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 9) (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 4.2)) + (:flags (bit2)) + (:next-time (seconds 0.05) (seconds 2.097)) + (:next-launcher 1839) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 9) (degrees 18)))) (defpart 1839 - :init-specs ((:a 16.0 8.0) - (:scalevel-x (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.64) - (:fade-b 0.85) - (:fade-a -0.04) - (:accel-x (meters 0.001)) - (:accel-y (meters 0)) - (:accel-z (meters 0)) - (:friction 0.9) - (:next-time (seconds 0.8) (seconds 0.197)) - (:next-launcher 1840) - ) - ) + :init-specs + ((:a 16.0 8.0) + (:scalevel-x (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.64) + (:fade-b 0.85) + (:fade-a -0.04) + (:accel-x (meters 0.001)) + (:accel-y (meters 0)) + (:accel-z (meters 0)) + (:friction 0.9) + (:next-time (seconds 0.8) (seconds 0.197)) + (:next-launcher 1840))) (defpart 1840 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 1834 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 3.5) (meters 0.75)) - (:y (meters -7)) - (:z (meters -1.5) (meters 3)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.04444444)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 30) 3 (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 3.5) (meters 0.75)) + (:y (meters -7)) + (:z (meters -1.5) (meters 3)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.04444444)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 30) 3 (degrees 90)))) (defpart 1835 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.8) - (:x (meters 3.5) (meters 0.75)) - (:y (meters -6.5)) - (:z (meters -1.5) (meters 3)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0016666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.31833333) - (:fade-b 0.425) - (:fade-a -0.053333335) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:rotate-y (degrees 30) 3 (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.8) + (:x (meters 3.5) (meters 0.75)) + (:y (meters -6.5)) + (:z (meters -1.5) (meters 3)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0016666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.31833333) + (:fade-b 0.425) + (:fade-a -0.053333335) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:rotate-y (degrees 30) 3 (degrees 90)))) (defpart 1829 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters 7) (meters 3)) - (:y (meters -7)) - (:z (meters -1.5) (meters 3)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.026666667)) - (:scalevel-x (meters 0.06666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 36)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters 7) (meters 3)) + (:y (meters -7)) + (:z (meters -1.5) (meters 3)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.026666667)) + (:scalevel-x (meters 0.06666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 36)))) (defpart 1828 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.09) - (:x (meters 7) (meters 3)) - (:y (meters -6.5)) - (:z (meters -1.5) (meters 3)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0016666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21166667) - (:fade-g 0.31833333) - (:fade-b 0.425) - (:fade-a -0.053333335) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 36)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.09) + (:x (meters 7) (meters 3)) + (:y (meters -6.5)) + (:z (meters -1.5) (meters 3)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0016666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21166667) + (:fade-g 0.31833333) + (:fade-b 0.425) + (:fade-a -0.053333335) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 36)))) (defpart 1827 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters 5) (meters 2)) - (:y (meters -7)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.04444444)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters 5) (meters 2)) + (:y (meters -7)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.04444444)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1826 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters 5) (meters 2)) - (:y (meters -6.5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0016666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.31833333) - (:fade-b 0.425) - (:fade-a -0.053333335) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters 5) (meters 2)) + (:y (meters -6.5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0016666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.31833333) + (:fade-b 0.425) + (:fade-a -0.053333335) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1824 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.09) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.31833333) - (:fade-b 0.425) - (:fade-a -0.053333335) - (:accel-x (meters 0.00033333333)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.09) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.31833333) + (:fade-b 0.425) + (:fade-a -0.053333335) + (:accel-x (meters 0.00033333333)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1823 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.13333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 1.0666667) - (:fade-g 1.5916667) - (:fade-b 2.125) - (:fade-a -0.26666668) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.13333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 1.0666667) + (:fade-g 1.5916667) + (:fade-b 2.125) + (:fade-a -0.26666668) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1825 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.7) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 64.0 32.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-x (meters 0.026666667)) - (:vel-y (meters 0.02) (meters 0.04)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.53333336) - (:fade-g -0.21333334) - (:accel-y (meters -0.0016666667)) - (:friction 0.98) - (:timer (seconds 2)) - (:flags (bit0 bit2)) - (:next-time (seconds 0.6) (seconds 0.397)) - (:next-launcher 1841) - (:conerot-x (degrees 0) (degrees 32)) - (:conerot-y (degrees 45) 3 (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.7) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 64.0 32.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-x (meters 0.026666667)) + (:vel-y (meters 0.02) (meters 0.04)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.53333336) + (:fade-g -0.21333334) + (:accel-y (meters -0.0016666667)) + (:friction 0.98) + (:timer (seconds 2)) + (:flags (bit0 bit2)) + (:next-time (seconds 0.6) (seconds 0.397)) + (:next-launcher 1841) + (:conerot-x (degrees 0) (degrees 32)) + (:conerot-y (degrees 45) 3 (degrees 90)))) (defpart 1832 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.4) - (:scale-x (meters 2) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 55.0) - (:g 64.0) - (:b 0.0) - (:a 96.0 32.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.21333334) - (:fade-g -0.21333334) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 2.2)) - (:flags (bit2)) - (:next-time (seconds 0.6) (seconds 0.397)) - (:next-launcher 1841) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 9) (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.4) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 55.0) + (:g 64.0) + (:b 0.0) + (:a 96.0 32.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.21333334) + (:fade-g -0.21333334) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2.2)) + (:flags (bit2)) + (:next-time (seconds 0.6) (seconds 0.397)) + (:next-launcher 1841) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 9) (degrees 18)))) (defpart 1831 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.4) - (:scale-x (meters 2) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 64.0 32.0) - (:b 0.0) - (:a 96.0 32.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.53333336) - (:fade-g -0.21333334) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 2.2)) - (:flags (bit2)) - (:next-time (seconds 0.6) (seconds 0.397)) - (:next-launcher 1841) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 9) (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.4) + (:scale-x (meters 2) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 64.0 32.0) + (:b 0.0) + (:a 96.0 32.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.53333336) + (:fade-g -0.21333334) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2.2)) + (:flags (bit2)) + (:next-time (seconds 0.6) (seconds 0.397)) + (:next-launcher 1841) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 9) (degrees 18)))) (defpart 1841 - :init-specs ((:fade-r -0.08888889) (:fade-g 0.0)) - ) + :init-specs ((:fade-r -0.08888889) (:fade-g 0.0))) (defpart 1830 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 6.0) - (:x (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 64.0 32.0) - (:b 0.0) - (:a 96.0 32.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.53333336) - (:fade-g -0.21333334) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 2.2)) - (:flags (bit2)) - (:next-time (seconds 0.6) (seconds 0.397)) - (:next-launcher 1841) - (:conerot-x (degrees 0) (degrees 3.0000002)) - (:conerot-y (degrees 0) (degrees 36)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 6.0) + (:x (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 64.0 32.0) + (:b 0.0) + (:a 96.0 32.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.53333336) + (:fade-g -0.21333334) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2.2)) + (:flags (bit2)) + (:next-time (seconds 0.6) (seconds 0.397)) + (:next-launcher 1841) + (:conerot-x (degrees 0) (degrees 3.0000002)) + (:conerot-y (degrees 0) (degrees 36)))) (defpartgroup group-village3-steam-puff-31 :id 491 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3) :length (seconds 0.42)) - (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.557)) - (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.3) :length (seconds 0.5)) - (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.4) :length (seconds 0.267)) - (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.7) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3) :length (seconds 0.42)) + (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.557)) + (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.3) :length (seconds 0.5)) + (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.4) :length (seconds 0.267)) + (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.7) :length (seconds 0.345)))) (defpartgroup group-village3-steam-puff-22 :id 492 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.1) :length (seconds 0.52)) - (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 7.7) :length (seconds 0.357)) - (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.2) :length (seconds 0.4)) - (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.5) :length (seconds 0.57)) - (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.1) :length (seconds 0.645)) - ) - ) + :parts + ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.1) :length (seconds 0.52)) + (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 7.7) :length (seconds 0.357)) + (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.2) :length (seconds 0.4)) + (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.5) :length (seconds 0.57)) + (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.1) :length (seconds 0.645)))) (defpartgroup group-village3-steam-puff-23 :id 493 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.42)) - (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.2) :length (seconds 0.357)) - (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.1) :length (seconds 0.4)) - (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.3) :length (seconds 0.367)) - (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.5) :length (seconds 0.545)) - ) - ) + :parts + ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.42)) + (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.2) :length (seconds 0.357)) + (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.1) :length (seconds 0.4)) + (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.3) :length (seconds 0.367)) + (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.5) :length (seconds 0.545)))) (defpart 1842 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0)) + (:conerot-radius (meters 0.4)))) (defpart 1843 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 32)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 32)) + (:conerot-radius (meters 0.4)))) (defpart 1844 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 75)) - (:conerot-y (degrees 120)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 75)) + (:conerot-y (degrees 120)) + (:conerot-radius (meters 0.4)))) (defpart 1845 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 80)) - (:conerot-y (degrees 200.00002)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 80)) + (:conerot-y (degrees 200.00002)) + (:conerot-radius (meters 0.4)))) (defpart 1846 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 67)) - (:conerot-y (degrees 280)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 67)) + (:conerot-y (degrees 280)) + (:conerot-radius (meters 0.4)))) (defpartgroup group-village3-bottom-puff-25 :id 494 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.23) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.4) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.7) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.23) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.4) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.7) :length (seconds 0.345)))) (defpartgroup group-village3-bottom-puff-27 :id 495 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.6) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.23) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.3) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.7) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.6) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.23) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.3) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.7) :length (seconds 0.345)))) (defpartgroup group-village3-bottom-puff-28 :id 496 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.9) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.43) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.4) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.9) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.43) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.4) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.345)))) (defpartgroup group-village3-bottom-puff-29 :id 497 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.7) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.33) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.4) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.1) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.7) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.33) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.4) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.1) :length (seconds 0.345)))) (defpartgroup group-village3-bottom-puff-30 :id 498 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.2) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.23) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.5) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.6) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.2) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.23) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.5) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.6) :length (seconds 0.345)))) (defpart 1847 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:y (meters 0.7)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.08) (meters 0.053333335)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.8) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:y (meters 0.7)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.08) (meters 0.053333335)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.8) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1)))) (defpartgroup group-village3-lava-lava-20x20 :id 499 :bounds (static-bspherem 0 0 0 14) - :parts ((sp-item 1850 :fade-after (meters 40) :falloff-to (meters 40)) - (sp-item 1851 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1852 :fade-after (meters 80) :falloff-to (meters 80) :binding 1848) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1853 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.457) :length (seconds 0.017) :binding 1849) - (sp-item 1853 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.78) :length (seconds 0.017) :binding 1849) - (sp-item 1853 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 0.307) :length (seconds 0.017) :binding 1849) - (sp-item 1849 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1850 :fade-after (meters 40) :falloff-to (meters 40)) + (sp-item 1851 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1852 :fade-after (meters 80) :falloff-to (meters 80) :binding 1848) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1853 + :fade-after (meters 40) + :falloff-to (meters 40) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1849) + (sp-item 1853 + :fade-after (meters 60) + :falloff-to (meters 60) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1849) + (sp-item 1853 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1849) + (sp-item 1849 :flags (start-dead)))) (defpart 1851 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -10) (meters 20)) - (:y (meters 0.5)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.64) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1855) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -10) (meters 20)) + (:y (meters 0.5)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.64) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1855) + (:rotate-y (degrees 0)))) (defpart 1853 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.5) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.5) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpart 1852 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.02 0.02) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 0.75) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.02 0.02) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 0.75) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (defpart 1850 - :init-specs ((:num 1.0) - (:x (meters -10) (meters 20)) - (:y (meters 0.5)) - (:z (meters -10) (meters 20)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 5324.8) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-r 40.96) - (:fade-g 27.306667) - (:fade-b 38.229332) - (:timer (seconds 0.5)) - (:flags (aux-list)) - (:next-time (seconds 0.25)) - (:next-launcher 1856) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters 0.5)) + (:z (meters -10) (meters 20)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 5324.8) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-r 40.96) + (:fade-g 27.306667) + (:fade-b 38.229332) + (:timer (seconds 0.5)) + (:flags (aux-list)) + (:next-time (seconds 0.25)) + (:next-launcher 1856) + (:rotate-y (degrees 0)))) (defpart 1856 - :init-specs ((:fade-b 16.384)) - ) + :init-specs ((:fade-b 16.384))) (defpart 1855 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 1857)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 1857))) (defpart 1857 - :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 1858)) - ) + :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 1858))) (defpart 1858 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667))) (defpart 1848 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.7) - (:scale-x (meters 0.75) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:scalevel-x (meters -0.0029166667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.1) (seconds 0.597)) - (:flags (bit0 bit3)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.7) + (:scale-x (meters 0.75) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:scalevel-x (meters -0.0029166667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.1) (seconds 0.597)) + (:flags (bit0 bit3)) + (:rotate-y (degrees 45)))) (defpart 1849 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 6.0) - (:scale-x (meters 0.2) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:vel-y (meters 0.006666667) (meters 0.02)) - (:scalevel-x (meters -0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 1.2)) - (:flags (bit0 bit3)) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 6.0) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:vel-y (meters 0.006666667) (meters 0.02)) + (:scalevel-x (meters -0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 1.2)) + (:flags (bit0 bit3)) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-village3-sagehut-warpgate :id 500 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1861 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1862 :fade-after (meters 60) :falloff-to (meters 100) :binding 1859) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1863 :fade-after (meters 60) :falloff-to (meters 100) :binding 1860) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1861 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1862 :fade-after (meters 60) :falloff-to (meters 100) :binding 1859) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1863 :fade-after (meters 60) :falloff-to (meters 100) :binding 1860) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)))) (defpart 1863 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:rotate-y (degrees -25.000002)))) (defpart 1860 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 0.2) - (:x (meters 3.1111112)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 0.2) + (:x (meters 3.1111112)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 1861 - :init-specs ((:num 5.0 5.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 5.936232) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:num 5.0 5.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 5.936232) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees -25.000002)))) (defpart 1862 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.4 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:timer (seconds 2.3)) - (:flags (bit3)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.4 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:timer (seconds 2.3)) + (:flags (bit3)) + (:rotate-y (degrees -35)))) (defpart 1859 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.4) - (:x (meters 3.1111112)) - (:y (meters 4)) - (:z (meters 2.4)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0034999999)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.10666667) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.4) + (:x (meters 3.1111112)) + (:y (meters 4)) + (:z (meters 2.4)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0034999999)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.10666667) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7)))) (defpartgroup group-village3-sagehut-boiling :id 501 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1864 :fade-after (meters 60) :flags (is-3d)) (sp-item 1865 :fade-after (meters 60) :flags (is-3d))) - ) + :parts ((sp-item 1864 :fade-after (meters 60) :flags (is-3d)) (sp-item 1865 :fade-after (meters 60) :flags (is-3d)))) (defpart 1864 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -2)) - (:z (meters -0.3)) - (:scale-x (meters 0.5) (meters 0.2)) - (:rot-x (degrees 90)) - (:rot-y (degrees -50.000004)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0 64.0) - (:b 0.0 1 32.0) - (:a 32.0 64.0) - (:vel-x (meters -0.0016666667) (meters 0.0033333334)) - (:vel-y (meters 0.006666667)) - (:scalevel-x (meters 0.0013333333)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.000016666667)) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 1866) - (:rotate-y (degrees 132)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -2)) + (:z (meters -0.3)) + (:scale-x (meters 0.5) (meters 0.2)) + (:rot-x (degrees 90)) + (:rot-y (degrees -50.000004)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0 64.0) + (:b 0.0 1 32.0) + (:a 32.0 64.0) + (:vel-x (meters -0.0016666667) (meters 0.0033333334)) + (:vel-y (meters 0.006666667)) + (:scalevel-x (meters 0.0013333333)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.000016666667)) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 1866) + (:rotate-y (degrees 132)))) (defpart 1866 - :init-specs ((:fade-a -0.2)) - ) + :init-specs ((:fade-a -0.2))) (defpart 1865 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -0.5)) - (:z (meters -0.26)) - (:scale-x (meters 12)) - (:rot-x (degrees 82.5)) - (:rot-y (degrees -50.000004)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 8.0 120.0) - (:a 24.0) - (:fade-a -1.2) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -0.5)) + (:z (meters -0.26)) + (:scale-x (meters 12)) + (:rot-x (degrees 82.5)) + (:rot-y (degrees -50.000004)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 8.0 120.0) + (:a 24.0) + (:fade-a -1.2) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpartgroup group-village3-sagehut-steam :id 502 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 4) :length (seconds 0.42)) - (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 5.2) :length (seconds 0.357)) - (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 6.1) :length (seconds 0.4)) - (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.3) :length (seconds 0.367)) - (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.5) :length (seconds 0.545)) - ) - ) + :parts + ((sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 4) :length (seconds 0.42)) + (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 5.2) :length (seconds 0.357)) + (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 6.1) :length (seconds 0.4)) + (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.3) :length (seconds 0.367)) + (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.5) :length (seconds 0.545)))) (defpart 1867 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.85) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 77) (degrees 6.0000005)) - (:conerot-y (degrees 217) (degrees 6.0000005)) - (:conerot-radius (meters -0.3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.85) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 77) (degrees 6.0000005)) + (:conerot-y (degrees 217) (degrees 6.0000005)) + (:conerot-radius (meters -0.3)))) (defpartgroup group-village3-sagehut-understeam :id 503 :bounds (static-bspherem 0 -3 0 8) - :parts ((sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 4) :length (seconds 0.42)) - (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 5.2) :length (seconds 0.357)) - (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 6.1) :length (seconds 0.4)) - (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 2.3) :length (seconds 0.367)) - (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 3.5) :length (seconds 0.545)) - ) - ) + :parts + ((sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 4) :length (seconds 0.42)) + (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 5.2) :length (seconds 0.357)) + (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 6.1) :length (seconds 0.4)) + (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 2.3) :length (seconds 0.367)) + (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 3.5) :length (seconds 0.545)))) (defpart 1868 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0 4.0) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:x (meters 1.5)) - (:y (meters 0.6)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-x (meters 0.13333334)) - (:vel-y (meters -0.1) (meters -0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.0033333334)) - (:friction 0.9) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0 4.0) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:x (meters 1.5)) + (:y (meters 0.6)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-x (meters 0.13333334)) + (:vel-y (meters -0.1) (meters -0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.0033333334)) + (:friction 0.9) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) diff --git a/goal_src/jak1/levels/village_common/oracle.gc b/goal_src/jak1/levels/village_common/oracle.gc index 8eac200bb2..0836786c87 100644 --- a/goal_src/jak1/levels/village_common/oracle.gc +++ b/goal_src/jak1/levels/village_common/oracle.gc @@ -1,28 +1,22 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO" "VI1.DGO" "VI2.DGO" "VI3.DGO") - (require "engine/common-obs/process-taskable.gc") -;; name: oracle.gc -;; name in dgo: oracle -;; dgos: CIT, L1, VI1, VI2, VI3, VILLAGEP - ;; DECOMP BEGINS (deftype oracle (process-taskable) - ((first-task uint8) - (second-task uint8) - (left-eye-cell handle) - (right-eye-cell handle) - ) - ) - + ((first-task uint8) + (second-task uint8) + (left-eye-cell handle) + (right-eye-cell handle))) -(defskelgroup *oracle-sg* oracle oracle-lod0-jg oracle-idle-ja - ((oracle-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *oracle-sg* + oracle + oracle-lod0-jg + oracle-idle-ja + ((oracle-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defmethod play-anim! ((this oracle) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) @@ -30,213 +24,152 @@ (((task-status need-hint) (task-status need-introduction)) (when arg0 (close-specific-task! (the-as game-task (-> this first-task)) (task-status need-introduction)) - (close-specific-task! (the-as game-task (-> this second-task)) (task-status need-introduction)) - ) + (close-specific-task! (the-as game-task (-> this second-task)) (task-status need-introduction))) (case (-> (level-get-target-inside *level*) name) - (('village1) - (new 'static 'spool-anim :name "oracle-intro-1" :index 9 :parts 5 :command-list '()) - ) + (('village1) (new 'static 'spool-anim :name "oracle-intro-1" :index 9 :parts 5 :command-list '())) (('village2) - (new 'static 'spool-anim - :name "oracle-intro-2" - :index 11 - :parts 4 - :command-list '((0 kill "pontoonten-20") - (0 kill "pontoonten-19") - (0 kill "pontoonten-18") - (0 kill "pontoonten-15") - (0 kill "pontoonten-14") - (0 kill "pontoonfive-14") - (0 kill "pontoonfive-15") - (0 kill "pontoonfive-19") - (0 kill "pontoonfive-20") - (0 kill "med-res-level-12") - (0 kill "med-res-level-13") - (0 kill "med-res-level-15") - (0 kill "money-2844") - (0 kill "money-2845") - (0 kill "money-2846") - (0 kill "money-2847") - (0 kill "money-2848") - (0 kill "money-2849") - (0 kill "money-2850") - (0 kill "money-2854") - (0 kill "money-2855") - (0 kill "money-2856") - (0 kill "money-2860") - (0 kill "money-2861") - (0 kill "money-2862") - (0 kill "eco-27") - (0 kill "eco-26") - (0 kill "sharkey-25") - (0 kill "barrel-13") - (0 kill "barrel-14") - (0 kill "barrel-15") - (0 kill "barrel-16") - (0 kill "barrel-17") - (0 kill "barrel-18") - (0 kill "barrel-19") - (0 kill "barrel-20") - (0 kill "barrel-21") - (0 kill "barrel-22") - (0 kill "barrel-23") - (0 kill "villageb-part-18") - (0 kill "villageb-part-19") - (0 kill "villageb-part-20") - (0 kill "villageb-part-21") - (0 kill "villageb-part-28") - (0 kill "villageb-part-29") - (0 kill "villageb-part-30") - (0 kill "villageb-part-31") - (0 kill "villageb-part-32") - (0 kill "villageb-part-33") - (0 kill "villageb-part-35") - (0 kill "villageb-part-37") - (0 kill "villageb-part-38") - (0 kill "villageb-part-47") - (0 kill "villageb-part-48") - (0 kill "villageb-part-49") - (0 kill "villageb-part-50") - (0 kill "villageb-part-56") - (0 kill "villageb-part-62") - (0 kill "villageb-part-63") - (0 kill "villageb-ogreboss-1") - (0 kill "crate-3127") - (0 kill "crate-3128") - (0 kill "crate-3129") - (0 kill "crate-3133") - (0 kill "geologist-1") - (0 kill "fireboulder-2") - (0 kill "fireboulder-3") - (0 kill "fireboulder-4") - (0 kill "water-vol-100") - (0 kill "water-vol-101") - (0 kill "water-vol-102") - (0 kill "water-vol-103") - (0 kill "water-vol-284") - (0 kill "water-vol-285") - (0 kill "water-vol-286") - (0 kill "ceilingflag-6") - (0 kill "ceilingflag-7") - (0 kill "ceilingflag-8") - (0 kill "ceilingflag-9") - (0 kill "orb-cache-top-14") - (0 setting-reset ocean-off near) - (399 setting-unset ocean-off) - ) - ) - ) - (('village3) - (new 'static 'spool-anim :name "oracle-intro-3" :index 13 :parts 4 :command-list '()) - ) - ) - ) + (new 'static + 'spool-anim + :name "oracle-intro-2" + :index 11 + :parts 4 + :command-list + '((0 kill "pontoonten-20") + (0 kill "pontoonten-19") + (0 kill "pontoonten-18") + (0 kill "pontoonten-15") + (0 kill "pontoonten-14") + (0 kill "pontoonfive-14") + (0 kill "pontoonfive-15") + (0 kill "pontoonfive-19") + (0 kill "pontoonfive-20") + (0 kill "med-res-level-12") + (0 kill "med-res-level-13") + (0 kill "med-res-level-15") + (0 kill "money-2844") + (0 kill "money-2845") + (0 kill "money-2846") + (0 kill "money-2847") + (0 kill "money-2848") + (0 kill "money-2849") + (0 kill "money-2850") + (0 kill "money-2854") + (0 kill "money-2855") + (0 kill "money-2856") + (0 kill "money-2860") + (0 kill "money-2861") + (0 kill "money-2862") + (0 kill "eco-27") + (0 kill "eco-26") + (0 kill "sharkey-25") + (0 kill "barrel-13") + (0 kill "barrel-14") + (0 kill "barrel-15") + (0 kill "barrel-16") + (0 kill "barrel-17") + (0 kill "barrel-18") + (0 kill "barrel-19") + (0 kill "barrel-20") + (0 kill "barrel-21") + (0 kill "barrel-22") + (0 kill "barrel-23") + (0 kill "villageb-part-18") + (0 kill "villageb-part-19") + (0 kill "villageb-part-20") + (0 kill "villageb-part-21") + (0 kill "villageb-part-28") + (0 kill "villageb-part-29") + (0 kill "villageb-part-30") + (0 kill "villageb-part-31") + (0 kill "villageb-part-32") + (0 kill "villageb-part-33") + (0 kill "villageb-part-35") + (0 kill "villageb-part-37") + (0 kill "villageb-part-38") + (0 kill "villageb-part-47") + (0 kill "villageb-part-48") + (0 kill "villageb-part-49") + (0 kill "villageb-part-50") + (0 kill "villageb-part-56") + (0 kill "villageb-part-62") + (0 kill "villageb-part-63") + (0 kill "villageb-ogreboss-1") + (0 kill "crate-3127") + (0 kill "crate-3128") + (0 kill "crate-3129") + (0 kill "crate-3133") + (0 kill "geologist-1") + (0 kill "fireboulder-2") + (0 kill "fireboulder-3") + (0 kill "fireboulder-4") + (0 kill "water-vol-100") + (0 kill "water-vol-101") + (0 kill "water-vol-102") + (0 kill "water-vol-103") + (0 kill "water-vol-284") + (0 kill "water-vol-285") + (0 kill "water-vol-286") + (0 kill "ceilingflag-6") + (0 kill "ceilingflag-7") + (0 kill "ceilingflag-8") + (0 kill "ceilingflag-9") + (0 kill "orb-cache-top-14") + (0 setting-reset ocean-off near) + (399 setting-unset ocean-off)))) + (('village3) (new 'static 'spool-anim :name "oracle-intro-3" :index 13 :parts 4 :command-list '())))) (((task-status need-reminder)) (set! (-> this skippable) #t) (case (-> (level-get-target-inside *level*) name) - (('village1) - (new 'static 'spool-anim :name "oracle-reminder-1" :index 10 :parts 4 :command-list '()) - ) - (('village2) - (new 'static 'spool-anim :name "oracle-reminder-2" :index 12 :parts 2 :command-list '()) - ) - (('village3) - (new 'static 'spool-anim :name "oracle-reminder-3" :index 14 :parts 2 :command-list '()) - ) - ) - ) + (('village1) (new 'static 'spool-anim :name "oracle-reminder-1" :index 10 :parts 4 :command-list '())) + (('village2) (new 'static 'spool-anim :name "oracle-reminder-2" :index 12 :parts 2 :command-list '())) + (('village3) (new 'static 'spool-anim :name "oracle-reminder-3" :index 14 :parts 2 :command-list '())))) (((task-status need-reward-speech)) (cond (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-oracle-inc))) - (cond - ((= (current-task (-> this tasks)) (-> this first-task)) - (let ((a0-25 (handle->process (-> this right-eye-cell)))) - (if a0-25 - (deactivate a0-25) - ) - ) - ) - (else - (let ((a0-29 (handle->process (-> this left-eye-cell)))) - (if a0-29 - (deactivate a0-29) - ) - ) - ) - ) - ) - (else - (set! (-> this will-talk) #t) - (set! (-> this talk-message) (text-id press-to-trade-money-oracle)) - ) - ) + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-oracle-inc))) + (cond + ((= (current-task (-> this tasks)) (-> this first-task)) + (let ((a0-25 (handle->process (-> this right-eye-cell)))) (if a0-25 (deactivate a0-25)))) + (else (let ((a0-29 (handle->process (-> this left-eye-cell)))) (if a0-29 (deactivate a0-29)))))) + (else (set! (-> this will-talk) #t) (set! (-> this talk-message) (text-id press-to-trade-money-oracle)))) (cond ((= (current-task (-> this tasks)) (-> this first-task)) (case (-> (level-get-target-inside *level*) name) - (('village1) - (new 'static 'spool-anim :name "oracle-right-eye-1" :index 3 :parts 2 :command-list '()) - ) - (('village2) - (new 'static 'spool-anim :name "oracle-right-eye-2" :index 5 :parts 2 :command-list '()) - ) - (('village3) - (new 'static 'spool-anim :name "oracle-right-eye-3" :index 7 :parts 2 :command-list '()) - ) - ) - ) + (('village1) (new 'static 'spool-anim :name "oracle-right-eye-1" :index 3 :parts 2 :command-list '())) + (('village2) (new 'static 'spool-anim :name "oracle-right-eye-2" :index 5 :parts 2 :command-list '())) + (('village3) (new 'static 'spool-anim :name "oracle-right-eye-3" :index 7 :parts 2 :command-list '())))) (else - (case (-> (level-get-target-inside *level*) name) - (('village1) - (new 'static 'spool-anim :name "oracle-left-eye-1" :index 4 :parts 2 :command-list '()) - ) - (('village2) - (new 'static 'spool-anim :name "oracle-left-eye-2" :index 6 :parts 2 :command-list '()) - ) - (('village3) - (new 'static 'spool-anim :name "oracle-left-eye-3" :index 8 :parts 2 :command-list '()) - ) - ) - ) - ) - ) + (case (-> (level-get-target-inside *level*) name) + (('village1) (new 'static 'spool-anim :name "oracle-left-eye-1" :index 4 :parts 2 :command-list '())) + (('village2) (new 'static 'spool-anim :name "oracle-left-eye-2" :index 6 :parts 2 :command-list '())) + (('village3) (new 'static 'spool-anim :name "oracle-left-eye-3" :index 8 :parts 2 :command-list '())))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 2) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 2)))) (defmethod get-art-elem ((this oracle)) - (-> this draw art-group data 2) - ) + (-> this draw art-group data 2)) (defstate idle (oracle) :virtual #t - :exit (behavior () - (stop! (-> self sound)) - ((-> (method-of-type process-taskable idle) exit)) - ) - :trans (behavior () - (update! (-> self sound)) - ((-> (method-of-type process-taskable idle) trans)) - ) - ) + :exit + (behavior () + (stop! (-> self sound)) + ((-> (method-of-type process-taskable idle) exit))) + :trans + (behavior () + (update! (-> self sound)) + ((-> (method-of-type process-taskable idle) trans)))) (defmethod init-from-entity! ((this oracle) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *oracle-sg* 3 4 (new 'static 'vector :y -4096.0 :w 4096.0) -1) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "oracle-sleep" :fo-max 50) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "oracle-sleep" :fo-max 50) (-> this root trans))) (set! (-> this first-task) (the-as uint (-> arg0 extra perm task))) (set! (-> this second-task) (res-lump-value arg0 'alt-task uint)) (set! (-> this tasks) (get-task-control (the-as game-task (-> this first-task)))) @@ -244,64 +177,35 @@ (set! (-> this left-eye-cell) (the-as handle #f)) (logior! (-> this draw status) (draw-status skip-bones)) (let ((s4-0 (new 'stack-no-clear 'vector)) - (s5-1 (lambda :behavior oracle - () + (s5-1 (lambda :behavior oracle () (let* ((gp-0 (-> self root)) - (v1-1 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) collide-shape)) - gp-0 - ) - ) - (a1-1 (if v1-1 - (-> v1-1 root-prim prim-core) - (-> self root trans) - ) - ) - ) - (spawn (-> self part) (the-as vector a1-1)) - ) + (v1-1 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) collide-shape)) gp-0)) + (a1-1 (if v1-1 (-> v1-1 root-prim prim-core) (-> self root trans)))) + (spawn (-> self part) (the-as vector a1-1))) 0 - (none) - ) - ) - ) + (none)))) (ja-post) (when (not (task-closed? (the-as game-task (-> this first-task)) (task-status need-resolution))) (vector<-cspace! s4-0 (-> this node-list data 5)) (set! (-> this right-eye-cell) - (ppointer->handle - (manipy-spawn s4-0 (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this) - ) - ) - (send-event - (handle->process (-> this right-eye-cell)) - 'eval - (lambda :behavior oracle () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) - (set! (-> self part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) - ) - (send-event (handle->process (-> this right-eye-cell)) 'trans-hook s5-1) - ) + (ppointer->handle (manipy-spawn s4-0 (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this))) + (send-event (handle->process (-> this right-eye-cell)) + 'eval + (lambda :behavior oracle () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) + (set! (-> self part) v0-0) + (the-as sparticle-launch-group v0-0)))) + (send-event (handle->process (-> this right-eye-cell)) 'trans-hook s5-1)) (when (not (task-closed? (the-as game-task (-> this second-task)) (task-status need-resolution))) (vector<-cspace! s4-0 (-> this node-list data 6)) (set! (-> this left-eye-cell) - (ppointer->handle - (manipy-spawn s4-0 (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this) - ) - ) - (send-event - (handle->process (-> this left-eye-cell)) - 'eval - (lambda :behavior oracle () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) - (set! (-> self part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) - ) - (send-event (handle->process (-> this left-eye-cell)) 'trans-hook s5-1) - ) - ) + (ppointer->handle (manipy-spawn s4-0 (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this))) + (send-event (handle->process (-> this left-eye-cell)) + 'eval + (lambda :behavior oracle () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) + (set! (-> self part) v0-0) + (the-as sparticle-launch-group v0-0)))) + (send-event (handle->process (-> this left-eye-cell)) 'trans-hook s5-1))) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village_common/villagep-obs.gc b/goal_src/jak1/levels/village_common/villagep-obs.gc index 0207563fff..bca52f2023 100644 --- a/goal_src/jak1/levels/village_common/villagep-obs.gc +++ b/goal_src/jak1/levels/village_common/villagep-obs.gc @@ -1,399 +1,244 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO" "VI1.DGO" "VI2.DGO" "VI3.DGO") - (require "engine/entity/ambient.gc") (require "engine/game/task/task-control.gc") (require "engine/target/target.gc") (require "engine/camera/pov-camera-h.gc") (require "engine/common-obs/basebutton.gc") -;; name: villagep-obs.gc -;; name in dgo: villagep-obs -;; dgos: CIT, L1, VI1, VI2, VI3, VILLAGEP - - ;; DECOMP BEGINS -(deftype warpgate (process-hidden) - () - ) - +(deftype warpgate (process-hidden) ()) (defstate target-warp-in (target) :event target-generic-event-handler - :enter (-> target-warp-out enter) - :exit (-> target-warp-out exit) - :trans (behavior () - (set! (-> self control transv x) - (- (-> self control unknown-vector103 x) (-> self control unknown-vector102 x)) - ) - (set! (-> self control transv z) - (- (-> self control unknown-vector103 z) (-> self control unknown-vector102 z)) - ) - (vector-xz-normalize! (-> self control transv) 49152.0) - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-hit-ground #f) - ) - ) - :code (behavior ((arg0 vector) (arg1 vector)) - (clear-collide-with-as (-> self control)) - (ja-channel-set! 0) - (vector-reset! (-> self control transv)) - (move-to-point! (-> self control) (-> self control unknown-vector102)) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 1)) + :enter + (-> target-warp-out + enter) + :exit + (-> target-warp-out + exit) + :trans + (behavior () + (set! (-> self control transv x) (- (-> self control unknown-vector103 x) (-> self control unknown-vector102 x))) + (set! (-> self control transv z) (- (-> self control unknown-vector103 z) (-> self control unknown-vector102 z))) + (vector-xz-normalize! (-> self control transv) 49152.0) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-hit-ground #f))) + :code + (behavior ((arg0 vector) (arg1 vector)) + (clear-collide-with-as (-> self control)) + (ja-channel-set! 0) + (vector-reset! (-> self control transv)) + (move-to-point! (-> self control) (-> self control unknown-vector102)) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 1)) (suspend))) + (let ((gp-1 (new-stack-vector0))) + (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-1))) + (let* ((f0-2 (vector-length gp-1)) + (f1-1 f0-2) + (f2-3 (- (sqrtf (* 8192.0 (-> 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-3) + (vector-float*! gp-1 gp-1 (/ f0-2 f1-1))))) + (set-heading-vec! (-> self control) (-> self control transv)) + (rot->dir-targ! (-> self control)) + (set-time! (-> self state-time)) + (set! (-> self post-hook) target-no-stick-post) + (ja-channel-set! 1) + (send-event self 'do-effect 'death-warp-in -1.0) + (sound-play "warpgate-tele") + (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe 50.0 0)) :frame-num (ja-aframe 40.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 50.0 0)))) + (restore-collide-with-as (-> self control)) + (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek!) :frame-num (ja-aframe 50.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (let ((gp-1 (new-stack-vector0))) - (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-1)) - ) - (let* ((f0-2 (vector-length gp-1)) - (f1-1 f0-2) - (f2-3 - (- (sqrtf (* 8192.0 (-> 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-3) - (vector-float*! gp-1 gp-1 (/ f0-2 f1-1)) - ) - ) - ) - (set-heading-vec! (-> self control) (-> self control transv)) - (rot->dir-targ! (-> self control)) - (set-time! (-> self state-time)) - (set! (-> self post-hook) target-no-stick-post) - (ja-channel-set! 1) - (send-event self 'do-effect 'death-warp-in -1.0) - (sound-play "warpgate-tele") - (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe 50.0 0)) :frame-num (ja-aframe 40.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 50.0 0))) - ) - (restore-collide-with-as (-> self control)) - (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek!) :frame-num (ja-aframe 50.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (target-falling-anim -1 (seconds 0.33)) - ) - :post target-no-move-post - ) + (ja :num! (seek!))) + (target-falling-anim -1 (seconds 0.33))) + :post target-no-move-post) (defstate idle (warp-gate) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (go-virtual hidden) - ) - ) - ) - :code (behavior () - (remove-setting! 'allow-progress) - (set-time! (-> self state-time)) - (loop - (when (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and (>= (-> self level-slot) 0) - (not (movie?)) - (not (level-hint-displayed?)) - (not (logtest? (-> *target* control root-prim prim-core action) - (collide-action edgegrab-cam swingpole-active racer snowball tube flut) - ) - ) - (let* ((v1-16 (-> self root)) - (a1-2 (-> *target* control trans)) - (f0-1 (vector-y-angle (vector-! (new 'stack-no-clear 'vector) a1-2 (-> v1-16 trans)))) - ) - (or (!= (-> self level-slot) 3) (and (< f0-1 -9102.223) (< -32768.0 f0-1))) - ) - ) - ) - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (hud-hidden?) - (can-grab-display? self) - (cond - ((or (= (-> *target* next-state name) 'target-warp-in) (= (-> *target* next-state name) 'target-warp-out)) - (set-time! (-> self state-time)) - #f - ) - (else - #t - ) - ) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (if (and (cpad-pressed? 0 circle) (process-grab? *target*)) - (go-virtual active) - ) - (if (and *cheat-mode* (cpad-pressed? 0 l3)) - (set! (-> self max-slot) 4) - ) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-53 gp-0)) - (set! (-> v1-53 width) (the float 440)) - ) - (let ((v1-54 gp-0)) - (set! (-> v1-54 height) (the float 80)) - ) - (let ((v1-55 gp-0)) - (set! (-> v1-55 scale) 0.9) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22) - ) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (go-virtual hidden)))) + :code + (behavior () + (remove-setting! 'allow-progress) + (set-time! (-> self state-time)) + (loop + (when (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (>= (-> self level-slot) 0) + (not (movie?)) + (not (level-hint-displayed?)) + (not (logtest? (-> *target* control root-prim prim-core action) + (collide-action edgegrab-cam swingpole-active racer snowball tube flut))) + (let* ((v1-16 (-> self root)) + (a1-2 (-> *target* control trans)) + (f0-1 (vector-y-angle (vector-! (new 'stack-no-clear 'vector) a1-2 (-> v1-16 trans))))) + (or (!= (-> self level-slot) 3) (and (< f0-1 -9102.223) (< -32768.0 f0-1)))))) + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (when (and (hud-hidden?) + (can-grab-display? self) + (cond + ((or (= (-> *target* next-state name) 'target-warp-in) (= (-> *target* next-state name) 'target-warp-out)) + (set-time! (-> self state-time)) + #f) + (else #t)) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (if (and (cpad-pressed? 0 circle) (process-grab? *target*)) (go-virtual active)) + (if (and *cheat-mode* (cpad-pressed? 0 l3)) (set! (-> self max-slot) 4)) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-53 gp-0)) (set! (-> v1-53 width) (the float 440))) + (let ((v1-54 gp-0)) (set! (-> v1-54 height) (the float 80))) + (let ((v1-55 gp-0)) (set! (-> v1-55 scale) 0.9)) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)))) + (suspend)))) (defun get-next-slot-up ((arg0 warp-gate) (arg1 int)) (let ((v0-0 (+ arg1 1))) - (if (< (-> arg0 max-slot) v0-0) - (set! v0-0 (-> arg0 min-slot)) - ) - (if (= v0-0 (-> arg0 level-slot)) - (+! v0-0 1) - ) - (if (< (-> arg0 max-slot) v0-0) - (set! v0-0 (-> arg0 min-slot)) - ) - v0-0 - ) - ) + (if (< (-> arg0 max-slot) v0-0) (set! v0-0 (-> arg0 min-slot))) + (if (= v0-0 (-> arg0 level-slot)) (+! v0-0 1)) + (if (< (-> arg0 max-slot) v0-0) (set! v0-0 (-> arg0 min-slot))) + v0-0)) (defun get-next-slot-down ((arg0 warp-gate) (arg1 int)) (let ((v0-0 (+ arg1 -1))) - (if (< v0-0 (-> arg0 min-slot)) - (set! v0-0 (-> arg0 max-slot)) - ) - (if (= v0-0 (-> arg0 level-slot)) - (+! v0-0 -1) - ) - (if (< v0-0 (-> arg0 min-slot)) - (set! v0-0 (-> arg0 max-slot)) - ) - v0-0 - ) - ) + (if (< v0-0 (-> arg0 min-slot)) (set! v0-0 (-> arg0 max-slot))) + (if (= v0-0 (-> arg0 level-slot)) (+! v0-0 -1)) + (if (< v0-0 (-> arg0 min-slot)) (set! v0-0 (-> arg0 max-slot))) + v0-0)) (defun print-level-name ((arg0 int) (arg1 font-context) (arg2 int) (arg3 int)) - (let ((s5-0 (if arg3 - arg2 - (- arg2) - ) - ) - ) + (let ((s5-0 (if arg3 arg2 (- arg2)))) (+! (-> arg1 origin x) (the float s5-0)) (let ((f30-0 (- 1.0 (* 0.0033333334 (the float arg2))))) - (print-game-text-scaled - (lookup-text! *common-text* (the-as text-id (+ arg0 286)) #f) - f30-0 - arg1 - (the int (* 128.0 f30-0)) - ) - ) - (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0))) - ) + (print-game-text-scaled (lookup-text! *common-text* (the-as text-id (+ arg0 286)) #f) + f30-0 + arg1 + (the int (* 128.0 f30-0)))) + (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0)))) (set! (-> arg1 color) (font-color default)) - arg1 - ) + arg1) (defstate active (warp-gate) :virtual #t - :enter (behavior () - (set-setting! 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - (sound-play "start-options") - (set-time! (-> self state-time)) - ) - :trans (behavior () - (when (or (and (cpad-pressed? 0 triangle) - (time-elapsed? (-> self state-time) (seconds 0.1)) - (process-release? *target*) - ) - (not *target*) - ) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) - (sound-play "cursor-options") - (go-virtual idle) - ) - (when *target* - (let* ((gp-1 (-> *target* control)) - (s4-0 (-> self root trans)) - (f0-0 - (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-0 (-> gp-1 trans)))) - ) - ) - (if (!= f0-0 0.0) - (send-event - *target* - 'rotate-y-angle - (fmax (fmin f0-0 (* 65536.0 (seconds-per-frame))) (* -65536.0 (seconds-per-frame))) - ) - ) - ) - ) - ) - :code (behavior () - (local-vars (sv-112 int) (sv-128 int) (sv-144 int)) - (let ((gp-0 (get-next-slot-up self (+ (-> self level-slot) -1)))) - 0 - (let ((s5-0 #f) - (s2-0 0) - (s4-0 #f) - (s3-0 gp-0) - ) - (loop - (when (zero? s2-0) - (cond - ((cpad-pressed? 0 right) - (set! s5-0 #t) - (set! s4-0 #f) - (sound-play "cursor-up-down") - (set! s3-0 (get-next-slot-up self s3-0)) - ) - ((cpad-pressed? 0 left) - (set! s5-0 #t) - (set! s4-0 #t) - (sound-play "cursor-up-down") - (set! s3-0 (get-next-slot-down self s3-0)) - ) - ) - ) - (if s5-0 - (set! s2-0 (seekl s2-0 300 (the int (* 15.0 (-> *display* time-adjust-ratio))))) - ) - (when (>= s2-0 150) - (set! gp-0 s3-0) - (set! s5-0 #f) - (set! s2-0 0) - ) - (can-grab-display? self) - (hide-hud) - (let ((s1-2 (get-continue-by-name *game-info* (-> *warp-info* gp-0)))) - (lookup-level-info (-> s1-2 level)) - (when (and (time-elapsed? (-> self state-time) (seconds 0.05)) (cpad-pressed? 0 circle)) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons circle)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle)) - (go-virtual use gp-0 (the-as level s1-2)) - ) - ) - (let ((s1-3 - (new 'stack 'font-context *font-default-matrix* 6 110 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-38 s1-3)) - (set! (-> v1-38 scale) 0.7) - ) - (let ((v1-39 s1-3)) - (set! (-> v1-39 width) (the float 500)) - ) - (let ((v1-40 s1-3)) - (set! (-> v1-40 height) (the float 55)) - ) - (set! (-> s1-3 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text (lookup-text! *common-text* (text-id warp-gate-use-dpad) #f) s1-3 #f 128 22) - (+! (-> s1-3 origin y) 35.0) - (let ((v1-43 s1-3)) - (set! (-> v1-43 height) (the float 40)) - ) - (let ((a0-34 s1-3)) - (set! (-> a0-34 color) (font-color progress-blue)) - ) - 0 - (let ((s0-3 (get-next-slot-up self gp-0))) - (set! sv-112 (get-next-slot-down self gp-0)) - (set! sv-144 (get-next-slot-up self s0-3)) - (set! sv-128 (get-next-slot-down self sv-112)) + :enter + (behavior () + (set-setting! 'allow-progress #f 0.0 0) + (apply-settings *setting-control*) + (sound-play "start-options") + (set-time! (-> self state-time))) + :trans + (behavior () + (when (or (and (cpad-pressed? 0 triangle) (time-elapsed? (-> self state-time) (seconds 0.1)) (process-release? *target*)) + (not *target*)) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) + (sound-play "cursor-options") + (go-virtual idle)) + (when *target* + (let* ((gp-1 (-> *target* control)) + (s4-0 (-> self root trans)) + (f0-0 (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-0 (-> gp-1 trans)))))) + (if (!= f0-0 0.0) + (send-event *target* 'rotate-y-angle (fmax (fmin f0-0 (* 65536.0 (seconds-per-frame))) (* -65536.0 (seconds-per-frame)))))))) + :code + (behavior () + (local-vars (sv-112 int) (sv-128 int) (sv-144 int)) + (let ((gp-0 (get-next-slot-up self (+ (-> self level-slot) -1)))) + 0 + (let ((s5-0 #f) + (s2-0 0) + (s4-0 #f) + (s3-0 gp-0)) + (loop + (when (zero? s2-0) (cond - (s4-0 - (let ((a2-6 (- 300 (+ s2-0 150))) - (t9-20 print-level-name) - (a1-16 s1-3) - (a3-4 #f) - ) - (t9-20 sv-112 a1-16 a2-6 (the-as int a3-4)) - ) - (let ((a2-7 (+ s2-0 150))) - (cond - ((< a2-7 225) - (print-level-name s0-3 s1-3 a2-7 (the-as int #t)) - ) - (else + ((cpad-pressed? 0 right) + (set! s5-0 #t) + (set! s4-0 #f) + (sound-play "cursor-up-down") + (set! s3-0 (get-next-slot-up self s3-0))) + ((cpad-pressed? 0 left) + (set! s5-0 #t) + (set! s4-0 #t) + (sound-play "cursor-up-down") + (set! s3-0 (get-next-slot-down self s3-0))))) + (if s5-0 (set! s2-0 (seekl s2-0 300 (the int (* 15.0 (-> *display* time-adjust-ratio)))))) + (when (>= s2-0 150) + (set! gp-0 s3-0) + (set! s5-0 #f) + (set! s2-0 0)) + (can-grab-display? self) + (hide-hud) + (let ((s1-2 (get-continue-by-name *game-info* (-> *warp-info* gp-0)))) + (lookup-level-info (-> s1-2 level)) + (when (and (time-elapsed? (-> self state-time) (seconds 0.05)) (cpad-pressed? 0 circle)) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons circle)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle)) + (go-virtual use gp-0 (the-as level s1-2)))) + (let ((s1-3 (new 'stack 'font-context *font-default-matrix* 6 110 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-38 s1-3)) (set! (-> v1-38 scale) 0.7)) + (let ((v1-39 s1-3)) (set! (-> v1-39 width) (the float 500))) + (let ((v1-40 s1-3)) (set! (-> v1-40 height) (the float 55))) + (set! (-> s1-3 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text (lookup-text! *common-text* (text-id warp-gate-use-dpad) #f) s1-3 #f 128 22) + (+! (-> s1-3 origin y) 35.0) + (let ((v1-43 s1-3)) (set! (-> v1-43 height) (the float 40))) + (let ((a0-34 s1-3)) (set! (-> a0-34 color) (font-color progress-blue))) + 0 + (let ((s0-3 (get-next-slot-up self gp-0))) + (set! sv-112 (get-next-slot-down self gp-0)) + (set! sv-144 (get-next-slot-up self s0-3)) + (set! sv-128 (get-next-slot-down self sv-112)) + (cond + (s4-0 + (let ((a2-6 (- 300 (+ s2-0 150))) + (t9-20 print-level-name) + (a1-16 s1-3) + (a3-4 #f)) + (t9-20 sv-112 a1-16 a2-6 (the-as int a3-4))) + (let ((a2-7 (+ s2-0 150))) + (cond + ((< a2-7 225) (print-level-name s0-3 s1-3 a2-7 (the-as int #t))) + (else (let ((a2-8 (- 300 s2-0)) (t9-22 print-level-name) (a1-18 s1-3) - (a3-6 #f) - ) - (t9-22 sv-128 a1-18 a2-8 (the-as int a3-6)) - ) - ) - ) - ) - ) - (else - (let ((a2-9 (+ s2-0 150))) - (cond - ((< a2-9 225) - (print-level-name sv-112 s1-3 a2-9 (the-as int #f)) - ) - (else + (a3-6 #f)) + (t9-22 sv-128 a1-18 a2-8 (the-as int a3-6))))))) + (else + (let ((a2-9 (+ s2-0 150))) + (cond + ((< a2-9 225) (print-level-name sv-112 s1-3 a2-9 (the-as int #f))) + (else (let ((a2-10 (- 300 s2-0)) (t9-24 print-level-name) (a1-20 s1-3) - (a3-8 #t) - ) - (t9-24 sv-144 a1-20 a2-10 (the-as int a3-8)) - ) - ) - ) - ) - (let ((a2-11 (- 300 (+ s2-0 150)))) - (print-level-name s0-3 s1-3 a2-11 (the-as int #t)) - ) - ) - ) - ) - (when (not s5-0) - (let ((a0-47 s1-3)) - (set! (-> a0-47 color) (font-color progress-yellow)) - ) - ) - (print-level-name gp-0 s1-3 s2-0 (the-as int s4-0)) - (+! (-> s1-3 origin y) 20.0) - (print-game-text (lookup-text! *common-text* (text-id press-to-warp) #f) s1-3 #f 128 22) - (+! (-> s1-3 origin y) 15.0) - (print-game-text (lookup-text! *common-text* (text-id press-to-exit) #f) s1-3 #f 128 22) - ) - (suspend) - ) - ) - ) - ) - ) + (a3-8 #t)) + (t9-24 sv-144 a1-20 a2-10 (the-as int a3-8)))))) + (let ((a2-11 (- 300 (+ s2-0 150)))) (print-level-name s0-3 s1-3 a2-11 (the-as int #t)))))) + (when (not s5-0) + (let ((a0-47 s1-3)) (set! (-> a0-47 color) (font-color progress-yellow)))) + (print-level-name gp-0 s1-3 s2-0 (the-as int s4-0)) + (+! (-> s1-3 origin y) 20.0) + (print-game-text (lookup-text! *common-text* (text-id press-to-warp) #f) s1-3 #f 128 22) + (+! (-> s1-3 origin y) 15.0) + (print-game-text (lookup-text! *common-text* (text-id press-to-exit) #f) s1-3 #f 128 22)) + (suspend)))))) (defstate hidden (warp-gate) :virtual #t - :code anim-loop - ) + :code anim-loop) (defbehavior warp-gate-init-by-other warp-gate ((arg0 vector)) (stack-size-set! (-> self main-thread) 512) @@ -403,68 +248,40 @@ (set! (-> self level) (-> self entity extra level name)) (set! (-> self min-slot) 0) (let ((v1-11 (-> self level))) - (set! (-> self level-slot) (cond - ((= v1-11 'training) - 0 - ) - ((= v1-11 'village1) - 1 - ) - ((= v1-11 'village2) - 2 - ) - ((= v1-11 'village3) - 3 - ) - ((or (= v1-11 'citadel) (= v1-11 'lavatube)) - 4 - ) - (else - -1 - ) - ) - ) - ) - (set! (-> self max-slot) (cond - ((task-closed? (game-task village4-button) (task-status need-hint)) - 4 - ) - ((task-closed? (game-task village3-button) (task-status need-hint)) - 3 - ) - ((task-closed? (game-task village2-levitator) (task-status need-hint)) - 2 - ) - (else - 1 - ) - ) - ) + (set! (-> self level-slot) + (cond + ((= v1-11 'training) 0) + ((= v1-11 'village1) 1) + ((= v1-11 'village2) 2) + ((= v1-11 'village3) 3) + ((or (= v1-11 'citadel) (= v1-11 'lavatube)) 4) + (else -1)))) + (set! (-> self max-slot) + (cond + ((task-closed? (game-task village4-button) (task-status need-hint)) 4) + ((task-closed? (game-task village3-button) (task-status need-hint)) 3) + ((task-closed? (game-task village2-levitator) (task-status need-hint)) 2) + (else 1))) (go-virtual idle) - (none) - ) + (none)) (deftype warp-gate-switch (basebutton) - ((warp handle) - ) + ((warp handle)) (:methods - (pressable? (_type_) symbol) - ) - ) - + (pressable? (_type_) symbol))) -(defskelgroup *warp-gate-switch-sg* warp-gate-switch warp-gate-switch-lod0-jg warp-gate-switch-down-ja - ((warp-gate-switch-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1.5) - ) +(defskelgroup *warp-gate-switch-sg* + warp-gate-switch + warp-gate-switch-lod0-jg + warp-gate-switch-down-ja + ((warp-gate-switch-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1.5)) (defmethod basebutton-method-27 ((this warp-gate-switch)) (let ((s5-0 (new 'process 'collide-shape-moving this (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) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -479,51 +296,29 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s4-0 s3-0) - ) - ) + (append-prim s4-0 s3-0))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> this root) s5-0) - s5-0 - ) - ) + s5-0)) (defmethod pressable? ((this warp-gate-switch)) (let ((v1-2 (-> this entity extra perm task))) (cond ((logtest? (-> *target* control root-prim prim-core action) - (collide-action edgegrab-cam swingpole-active racer snowball tube flut) - ) - #f - ) + (collide-action edgegrab-cam swingpole-active racer snowball tube flut)) + #f) ((= v1-2 (game-task training-door)) (cond ((and (task-complete? *game-info* (game-task training-door)) (task-complete? *game-info* (game-task training-gimmie)) (task-complete? *game-info* (game-task training-climb)) - (task-complete? *game-info* (game-task training-buzzer)) - ) - #t - ) + (task-complete? *game-info* (game-task training-buzzer))) + #t) (else - (level-hint-spawn - (text-id training-warp-gate-blocked) - "sagevb38" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - #f - ) - ) - ) - (else - #t - ) - ) - ) - ) + (level-hint-spawn (text-id training-warp-gate-blocked) "sagevb38" (the-as entity #f) *entity-pool* (game-task none)) + #f))) + (else #t)))) (defmethod basebutton-method-26 ((this warp-gate-switch)) (set! (-> this warp) (the-as handle #f)) @@ -531,51 +326,26 @@ (cond ((= v1-2 (game-task training-door)) (set! (-> this down?) - (the-as - symbol - (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - ) - ) - ) + (the-as symbol (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete)))))) (else - (if (or (= v1-2 (game-task none)) (task-closed? (-> this entity extra perm task) (task-status need-hint))) - (set! (-> this down?) #t) - ) - ) - ) - ) + (if (or (= v1-2 (game-task none)) (task-closed? (-> this entity extra perm task) (task-status need-hint))) + (set! (-> this down?) #t))))) (initialize-skeleton this *warp-gate-switch-sg* '()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (cond ((-> this down?) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-0 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-0 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1))))) (else - (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) - ) - ) + (let ((s5-1 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)))) (set! (-> this anim-speed) 2.0) (update-transforms! (-> this root)) (ja-post) - (none) - ) + (none)) (defmethod press! ((this warp-gate-switch) (arg0 symbol)) (with-pp @@ -588,29 +358,14 @@ (when (zero? (get-reminder s4-1 2)) (let ((s3-1 (max 1 (the int (-> *game-info* fuel))))) (format #t "VILLAGE3 button saved ~D tasks~%" s3-1) - (save-reminder s4-1 s3-1 2) - ) - ) - ) - ) - ) - ) + (save-reminder s4-1 s3-1 2))))))) (let ((a1-5 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-5 from) pp) (set! (-> a1-5 num-params) 0) (set! (-> a1-5 message) 'start) (let ((t9-5 send-event-function) - (v1-14 (-> this notify-actor)) - ) - (t9-5 - (if v1-14 - (-> v1-14 extra process) - ) - a1-5 - ) - ) - ) - ) + (v1-14 (-> this notify-actor))) + (t9-5 (if v1-14 (-> v1-14 extra process)) a1-5)))) ;; og:preserve-this ;; note: they appear to be calling this on the wrong object. ;; this doesn't actually cause any problems but corrupts the type of `float` in the symbol @@ -618,502 +373,266 @@ ;; basebutton. The corruption is completely harmless but is annoying because it looks like ;; a more severe memory corruption problem. So we fix it. ;; (call-parent-method (the-as warp-gate-switch arg0) arg0) - (call-parent-method this arg0) - ) - ) + (call-parent-method this arg0))) (defstate basebutton-up-idle (warp-gate-switch) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (pressable? self) - (basebutton-method-29 self (-> self event-going-down) (-> self notify-actor)) - (go-virtual basebutton-going-down) - ) - ) - (('hide) - (send-event (handle->process (-> self warp)) message) - ) - (else - ((-> (method-of-type basebutton basebutton-up-idle) event) proc argc message block) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (let ((t9-0 (-> (method-of-type basebutton basebutton-up-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - ) - :trans (behavior () - (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) 'stop) - (let ((t9-0 send-event-function) - (v1-1 (-> self notify-actor)) - ) - (t9-0 - (if v1-1 - (-> v1-1 extra process) - ) - a1-0 - ) - ) - ) - (when (time-elapsed? (-> self state-time) (seconds 60)) - (case (-> self entity extra perm task) - (((game-task training-door)) - (when (and (task-complete? *game-info* (game-task training-door)) - (task-complete? *game-info* (game-task training-gimmie)) - (task-complete? *game-info* (game-task training-climb)) - (task-complete? *game-info* (game-task training-buzzer)) - ) - (level-hint-spawn - (text-id training-warp-gate-reminder) - "sagevb39" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (clear-text-seen! *game-info* (text-id training-warp-gate-reminder)) - ) - ) - (((game-task village2-levitator)) - (level-hint-spawn - (text-id village2-button-reminder) - "asstvb28" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id village2-button-reminder2) - "asstvb29" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id village2-button-reminder3) - "asstvb30" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (((game-task village3-button)) - (level-hint-spawn - (text-id village3-button-reminder) - "asstv103" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id village3-button-reminder2) - "asstv104" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id village3-button-reminder3) - "asstv105" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (pressable? self) + (basebutton-method-29 self (-> self event-going-down) (-> self notify-actor)) + (go-virtual basebutton-going-down))) + (('hide) (send-event (handle->process (-> self warp)) message)) + (else ((-> (method-of-type basebutton basebutton-up-idle) event) proc argc message block)))) + :enter + (behavior () (set-time! (-> self state-time)) - ) - (let ((t9-13 (-> (method-of-type basebutton basebutton-up-idle) trans))) - (if t9-13 - (t9-13) - ) - ) - ) - ) + (let ((t9-0 (-> (method-of-type basebutton basebutton-up-idle) enter))) (if t9-0 (t9-0)))) + :trans + (behavior () + (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) 'stop) + (let ((t9-0 send-event-function) + (v1-1 (-> self notify-actor))) + (t9-0 (if v1-1 (-> v1-1 extra process)) a1-0))) + (when (time-elapsed? (-> self state-time) (seconds 60)) + (case (-> self entity extra perm task) + (((game-task training-door)) + (when (and (task-complete? *game-info* (game-task training-door)) + (task-complete? *game-info* (game-task training-gimmie)) + (task-complete? *game-info* (game-task training-climb)) + (task-complete? *game-info* (game-task training-buzzer))) + (level-hint-spawn (text-id training-warp-gate-reminder) "sagevb39" (the-as entity #f) *entity-pool* (game-task none)) + (clear-text-seen! *game-info* (text-id training-warp-gate-reminder)))) + (((game-task village2-levitator)) + (level-hint-spawn (text-id village2-button-reminder) "asstvb28" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id village2-button-reminder2) "asstvb29" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id village2-button-reminder3) "asstvb30" (the-as entity #f) *entity-pool* (game-task none))) + (((game-task village3-button)) + (level-hint-spawn (text-id village3-button-reminder) "asstv103" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id village3-button-reminder2) "asstv104" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id village3-button-reminder3) "asstv105" (the-as entity #f) *entity-pool* (game-task none)))) + (set-time! (-> self state-time))) + (let ((t9-13 (-> (method-of-type basebutton basebutton-up-idle) trans))) (if t9-13 (t9-13))))) (defstate basebutton-down-idle (warp-gate-switch) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (send-event (handle->process (-> self warp)) message) - ) - (else - ((-> (method-of-type basebutton basebutton-down-idle) event) proc argc message block) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self warp) (ppointer->handle (process-spawn warp-gate (-> self notify-actor extra trans) :to self))) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((t9-4 (-> (method-of-type basebutton basebutton-down-idle) enter))) - (if t9-4 - (t9-4) - ) - ) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self warp)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (let ((t9-1 (-> (method-of-type basebutton basebutton-down-idle) exit))) - (if t9-1 - (t9-1) - ) - ) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 60)) - (case (-> self entity extra perm task) - (((game-task training-door)) - (when (not (task-closed? (game-task beach-ecorocks) (task-status need-introduction))) - (level-hint-spawn - (text-id training-warp-gate-reminder) - "sagevb39" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (clear-text-seen! *game-info* (text-id training-warp-gate-reminder)) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (send-event (handle->process (-> self warp)) message)) + (else ((-> (method-of-type basebutton basebutton-down-idle) event) proc argc message block)))) + :enter + (behavior () (set-time! (-> self state-time)) - ) - (let ((t9-3 (-> (method-of-type basebutton basebutton-down-idle) trans))) - (if t9-3 - (t9-3) - ) - ) - ) - ) + (set! (-> self warp) (ppointer->handle (process-spawn warp-gate (-> self notify-actor extra trans) :to self))) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((t9-4 (-> (method-of-type basebutton basebutton-down-idle) enter))) (if t9-4 (t9-4)))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self warp)))) (if a0-1 (deactivate a0-1))) + (let ((t9-1 (-> (method-of-type basebutton basebutton-down-idle) exit))) (if t9-1 (t9-1)))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 60)) + (case (-> self entity extra perm task) + (((game-task training-door)) + (when (not (task-closed? (game-task beach-ecorocks) (task-status need-introduction))) + (level-hint-spawn (text-id training-warp-gate-reminder) "sagevb39" (the-as entity #f) *entity-pool* (game-task none)) + (clear-text-seen! *game-info* (text-id training-warp-gate-reminder))))) + (set-time! (-> self state-time))) + (let ((t9-3 (-> (method-of-type basebutton basebutton-down-idle) trans))) (if t9-3 (t9-3))))) (defstate basebutton-going-down (warp-gate-switch) :virtual #t - :code (behavior () - (sound-play "warpgate-butt") - (sound-play "warpgate-act") - (let ((gp-2 (entity-actor-count (-> self entity) 'trigger-actor))) - (dotimes (s5-2 gp-2) - (let ((s4-0 (entity-actor-lookup (-> self entity) 'trigger-actor s5-2)) - (a1-4 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'trigger) - (let ((t9-6 send-event-function) - (v1-3 s4-0) - ) - (when (not (t9-6 - (if v1-3 - (-> v1-3 extra process) - ) - a1-4 - ) - ) - (entity-birth-no-kill s4-0) - (suspend) - (send-event - (if s4-0 - (-> s4-0 extra process) - ) - 'trigger - ) - ) - ) - ) - ) - ) - (let ((t9-10 (-> (the-as (state basebutton) (find-parent-state)) code))) - (if t9-10 - ((the-as (function none :behavior basebutton) t9-10)) - ) - ) - ) - ) + :code + (behavior () + (sound-play "warpgate-butt") + (sound-play "warpgate-act") + (let ((gp-2 (entity-actor-count (-> self entity) 'trigger-actor))) + (dotimes (s5-2 gp-2) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'trigger-actor s5-2)) + (a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'trigger) + (let ((t9-6 send-event-function) + (v1-3 s4-0)) + (when (not (t9-6 (if v1-3 (-> v1-3 extra process)) a1-4)) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 (-> s4-0 extra process)) 'trigger)))))) + (let ((t9-10 (-> (the-as (state basebutton) (find-parent-state)) code))) + (if t9-10 ((the-as (function none :behavior basebutton) t9-10)))))) -(defskelgroup *village-cam-sg* village-cam village-cam-lod0-jg -1 - ((village-cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 80) - ) +(defskelgroup *village-cam-sg* + village-cam + village-cam-lod0-jg + -1 + ((village-cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 80)) (deftype village-cam (process) - ((root-override trsq) - (range meters) - (index int32) - (state-time time-frame) - ) + ((root-override trsq) + (range meters) + (index int32) + (state-time time-frame)) (:state-methods - idle - ) - ) - + idle)) (defmethod relocate ((this village-cam) (arg0 int)) - (if (nonzero? (-> this root-override)) - (&+! (-> this root-override) arg0) - ) - (the-as village-cam ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this root-override)) (&+! (-> this root-override) arg0)) + (the-as village-cam ((method-of-type process relocate) this arg0))) (defstate idle (village-cam) :virtual #t - :code (behavior () - (local-vars (v1-18 symbol)) - (loop - (let ((v1-5 - (and (and *target* - (>= (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - (and (-> *setting-control* current play-hints) - (< 0.0 (-> *setting-control* current dialog-volume)) - (let ((v1-10 (-> self index))) - (cond - ((zero? v1-10) - (and (>= (-> *game-info* fuel) 20.0) - (not (task-closed? (game-task firecanyon-assistant) (task-status need-reward-speech))) - ) - ) - ((= v1-10 2) - (not (task-closed? (game-task village2-levitator) (task-status need-hint))) - ) - ((= v1-10 3) - (not (task-closed? (game-task village3-button) (task-status need-hint))) - ) - (else - #t - ) - ) - ) - ) - ) - ) - ) - (when v1-5 - (case (-> self index) - ((2 3) - (until v1-18 - (suspend) - (set! v1-18 - (or (not *target*) - (< (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - ) - ) - (let* ((v1-23 (-> self index)) - (v1-24 (cond - ((= v1-23 2) - (not (task-closed? (game-task village2-levitator) (task-status need-hint))) - ) - ((= v1-23 3) - (not (task-closed? (game-task village3-button) (task-status need-hint))) - ) - ) - ) - ) - (when (not v1-24) - (process-entity-status! self (entity-perm-status bit-3) #f) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - ) - ) - ) - (while (and *target* - (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (suspend) - ) - (set-time! (-> self state-time)) - (process-grab? *target*) - (process-entity-status! self (entity-perm-status bit-3) #t) - (kill-current-level-hint '(ambient) '() 'exit) - (until (not (or (-> *setting-control* current talking) - (or (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - (not *target*) - (logtest? (-> *target* state-flags) (state-flags being-attacked dying)) - ) - ) - ) - (set-setting! 'allow-progress #f 0.0 0) - (let* ((a0-25 *setting-control*) - (t9-14 (method-of-object a0-25 set-setting)) - (a2-5 'movie) - (a3-1 (process->ppointer self)) - ) - (t9-14 a0-25 self a2-5 a3-1 0.0 0) - ) - (apply-settings *setting-control*) - (while (or (-> *setting-control* current talking) - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (!= (-> *level* loading-level) (-> *level* level-default)) - (not *target*) - (logtest? (-> *target* state-flags) (state-flags being-attacked dying)) - *progress-process* - ) + :code + (behavior () + (local-vars (v1-18 symbol)) + (loop + (let ((v1-5 (and (and *target* (>= (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (and (-> *setting-control* current play-hints) + (< 0.0 (-> *setting-control* current dialog-volume)) + (let ((v1-10 (-> self index))) + (cond + ((zero? v1-10) + (and (>= (-> *game-info* fuel) 20.0) + (not (task-closed? (game-task firecanyon-assistant) (task-status need-reward-speech))))) + ((= v1-10 2) (not (task-closed? (game-task village2-levitator) (task-status need-hint)))) + ((= v1-10 3) (not (task-closed? (game-task village3-button) (task-status need-hint)))) + (else #t))))))) + (when v1-5 + (case (-> self index) + ((2 3) + (until v1-18 + (suspend) + (set! v1-18 + (or (not *target*) + (< (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))))) + (let* ((v1-23 (-> self index)) + (v1-24 (cond + ((= v1-23 2) (not (task-closed? (game-task village2-levitator) (task-status need-hint)))) + ((= v1-23 3) (not (task-closed? (game-task village3-button) (task-status need-hint))))))) + (when (not v1-24) + (process-entity-status! self (entity-perm-status bit-3) #f) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self))))) + (while (and *target* + (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (suspend)) + (set-time! (-> self state-time)) + (process-grab? *target*) + (process-entity-status! self (entity-perm-status bit-3) #t) + (kill-current-level-hint '(ambient) '() 'exit) + (until (not (or (-> *setting-control* current talking) + (or (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + (not *target*) + (logtest? (-> *target* state-flags) (state-flags being-attacked dying))))) + (set-setting! 'allow-progress #f 0.0 0) + (let* ((a0-25 *setting-control*) + (t9-14 (method-of-object a0-25 set-setting)) + (a2-5 'movie) + (a3-1 (process->ppointer self))) + (t9-14 a0-25 self a2-5 a3-1 0.0 0)) + (apply-settings *setting-control*) + (while (or (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (!= (-> *level* loading-level) (-> *level* level-default)) + (not *target*) + (logtest? (-> *target* state-flags) (state-flags being-attacked dying)) + *progress-process*) + (suspend)) + (while (not (time-elapsed? (-> self state-time) (seconds 1))) + (suspend)) + (kill-current-level-hint '() '() 'die) (suspend) - ) - (while (not (time-elapsed? (-> self state-time) (seconds 1))) + (kill-current-level-hint '() '() 'die) + (process-release? *target*) + (remove-setting! 'movie) + (apply-settings *setting-control*) (suspend) - ) - (kill-current-level-hint '() '() 'die) - (suspend) - (kill-current-level-hint '() '() 'die) - (process-release? *target*) - (remove-setting! 'movie) - (apply-settings *setting-control*) - (suspend) - (suspend) - ) - (let ((v1-79 (-> self index))) - (cond - ((zero? v1-79) - (let ((gp-0 (-> self entity extra perm))) - (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) - (let ((v1-84 (-> gp-0 user-uint8 0))) - (cond - ((zero? v1-84) - (level-hint-spawn - (text-id village1cam-enough-cells) - "asstvb04" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn - pov-camera - (-> self entity extra trans) - *village-cam-sg* - "firecanyon-cam" - 0 - #f - '((0 want-force-vis village1 #t) - (0 alive "money-2669") - (0 alive "money-2670") - (0 alive "money-2671") - (0 alive "money-2672") - (0 alive "money-2673") - (0 alive "money-2674") - (0 alive "money-2675") - (0 alive "money-2677") - (0 alive "money-2678") - ) - :to self - ) - ) - ((= v1-84 1) - (level-hint-spawn - (text-id village1cam-enough-cells2) - "asstvb08" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn - pov-camera - (-> self entity extra trans) - *village-cam-sg* - "firecanyon-alt-cam" - 0 - #f - '((0 want-force-vis village1 #t) - (0 alive "money-2669") - (0 alive "money-2670") - (0 alive "money-2671") - (0 alive "money-2672") - (0 alive "money-2673") - (0 alive "money-2674") - (0 alive "money-2675") - (0 alive "money-2677") - (0 alive "money-2678") - ) - :to self - ) - ) - ) - ) - (set! (-> gp-0 user-int8 0) (seekl (the-as int (-> gp-0 user-uint8 0)) 255 1)) - ) - ) - ((= v1-79 1) - ) - ((= v1-79 2) - (when (not (task-closed? (game-task village2-levitator) (task-status need-hint))) - (level-hint-spawn - (text-id village2-button-reminder2) - "asstvb29" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn pov-camera (-> self entity extra trans) *village-cam-sg* "vi2-button-cam" 0 #f '() :to self) - ) - ) - ((= v1-79 3) - (when (not (task-closed? (game-task village3-button) (task-status need-hint))) - (level-hint-spawn - (text-id village2-button-reminder3) - "asstvb30" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn pov-camera (-> self entity extra trans) *village-cam-sg* "vi3-button-cam" 0 #f '() :to self) - ) - ) - ) - ) - (while (-> self child) - (suspend) - ) - (let ((a0-66 (-> self entity))) - (if (when a0-66 - (let ((a0-67 (-> a0-66 extra perm task))) - (if a0-67 - (= a0-67 (game-task none)) - ) - ) - ) - (set! (-> self entity extra perm task) (game-task complete)) - ) - ) - (when (zero? (-> self index)) - (let ((a0-70 (-> self entity extra perm))) - (when (= (-> a0-70 user-uint8 0) 1) - (remove-setting! 'allow-progress) - (let ((gp-3 (current-time))) - (until (time-elapsed? gp-3 (seconds 300)) - (suspend) - ) - ) - (go-virtual idle) - ) - ) - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - ) - (suspend) - ) - ) - ) + (suspend)) + (let ((v1-79 (-> self index))) + (cond + ((zero? v1-79) + (let ((gp-0 (-> self entity extra perm))) + (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) + (let ((v1-84 (-> gp-0 user-uint8 0))) + (cond + ((zero? v1-84) + (level-hint-spawn (text-id village1cam-enough-cells) "asstvb04" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera + (-> self entity extra trans) + *village-cam-sg* + "firecanyon-cam" + 0 + #f + '((0 want-force-vis village1 #t) + (0 alive "money-2669") + (0 alive "money-2670") + (0 alive "money-2671") + (0 alive "money-2672") + (0 alive "money-2673") + (0 alive "money-2674") + (0 alive "money-2675") + (0 alive "money-2677") + (0 alive "money-2678")) + :to + self)) + ((= v1-84 1) + (level-hint-spawn (text-id village1cam-enough-cells2) "asstvb08" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera + (-> self entity extra trans) + *village-cam-sg* + "firecanyon-alt-cam" + 0 + #f + '((0 want-force-vis village1 #t) + (0 alive "money-2669") + (0 alive "money-2670") + (0 alive "money-2671") + (0 alive "money-2672") + (0 alive "money-2673") + (0 alive "money-2674") + (0 alive "money-2675") + (0 alive "money-2677") + (0 alive "money-2678")) + :to + self)))) + (set! (-> gp-0 user-int8 0) (seekl (the-as int (-> gp-0 user-uint8 0)) 255 1)))) + ((= v1-79 1)) + ((= v1-79 2) + (when (not (task-closed? (game-task village2-levitator) (task-status need-hint))) + (level-hint-spawn (text-id village2-button-reminder2) "asstvb29" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *village-cam-sg* "vi2-button-cam" 0 #f '() :to self))) + ((= v1-79 3) + (when (not (task-closed? (game-task village3-button) (task-status need-hint))) + (level-hint-spawn (text-id village2-button-reminder3) "asstvb30" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *village-cam-sg* "vi3-button-cam" 0 #f '() :to self))))) + (while (-> self child) + (suspend)) + (let ((a0-66 (-> self entity))) + (if (when a0-66 + (let ((a0-67 (-> a0-66 extra perm task))) (if a0-67 (= a0-67 (game-task none))))) + (set! (-> self entity extra perm task) (game-task complete)))) + (when (zero? (-> self index)) + (let ((a0-70 (-> self entity extra perm))) + (when (= (-> a0-70 user-uint8 0) 1) + (remove-setting! 'allow-progress) + (let ((gp-3 (current-time))) (until (time-elapsed? gp-3 (seconds 300)) (suspend))) + (go-virtual idle)))) + (process-entity-status! self (entity-perm-status bit-3) #f) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self))) + (suspend)))) (defmethod init-from-entity! ((this village-cam) (arg0 entity-actor)) "Copy defaults from the entity." @@ -1125,5 +644,4 @@ (set! (-> this range) (res-lump-float arg0 'cam-notice-dist :default 81920.0)) (set! (-> this index) (res-lump-value arg0 'index int)) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/old/cavegeyserrock.gc b/goal_src/jak1/old/cavegeyserrock.gc index 363eccc0da..f339435745 100644 --- a/goal_src/jak1/old/cavegeyserrock.gc +++ b/goal_src/jak1/old/cavegeyserrock.gc @@ -1,74 +1,52 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/math/vector-h.gc") (require "engine/sound/gsound-h.gc") (require "kernel/gstate.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") -;; name: cavegeyserrock.gc -;; name in dgo: cavegeyserrock -;; dgos: L1 - -#| - -This file is only found in early demos. - -|# - +#| This file is only found in early demos. |# ;; decomp begins ;; definition of type cavegeyserrock-control-pt (deftype cavegeyserrock-control-pt (structure) - ((trans vector :inline :offset-assert 0) - (transv vector :inline :offset-assert 16) - ) + ((trans vector :inline :offset-assert 0) + (transv vector :inline :offset-assert 16)) :method-count-assert 9 - :size-assert #x20 - :flag-assert #x900000020 - ) + :size-assert #x20 + :flag-assert #x900000020) ;; definition for method 3 of type cavegeyserrock-control-pt -(defmethod inspect cavegeyserrock-control-pt ((obj cavegeyserrock-control-pt)) +(defmethod inspect ((obj cavegeyserrock-control-pt)) (format #t "[~8x] ~A~%" obj 'cavegeyserrock-control-pt) (format #t "~Ttrans: #~%" (-> obj trans)) (format #t "~Ttransv: #~%" (-> obj transv)) - obj - ) + obj) ;; definition of type cavegeyserrock (deftype cavegeyserrock (process-drawable) - ((root-override collide-shape-moving :offset 112) - (do-burst? symbol :offset-assert 176) - (do-falling-sound? symbol :offset-assert 180) - (do-landing-sound? symbol :offset-assert 184) - (begin-travel-up float :offset-assert 188) - (begin-travel-down float :offset-assert 192) - (sync sync-info :inline :offset-assert 196) - (part2 sparticle-launch-control :offset-assert 204) - (down vector :inline :offset-assert 208) - (up vector :inline :offset-assert 224) - (control-pt cavegeyserrock-control-pt 3 :inline :offset-assert 240) - ) + ((root-override collide-shape-moving :offset 112) + (do-burst? symbol :offset-assert 176) + (do-falling-sound? symbol :offset-assert 180) + (do-landing-sound? symbol :offset-assert 184) + (begin-travel-up float :offset-assert 188) + (begin-travel-down float :offset-assert 192) + (sync sync-info :inline :offset-assert 196) + (part2 sparticle-launch-control :offset-assert 204) + (down vector :inline :offset-assert 208) + (up vector :inline :offset-assert 224) + (control-pt cavegeyserrock-control-pt 3 :inline :offset-assert 240)) :heap-base #xe0 :method-count-assert 22 - :size-assert #x150 - :flag-assert #x1600e00150 - (:methods - (dummy-20 (_type_) none 20) - (dummy-21 (_type_) none 21) - ) - (:states - cavegeyserrock-idle - ) - ) + :size-assert #x150 + :flag-assert #x1600e00150 + (:methods (dummy-20 (_type_) none 20) (dummy-21 (_type_) none 21)) + (:states cavegeyserrock-idle)) ;; definition for method 3 of type cavegeyserrock -(defmethod inspect cavegeyserrock ((obj cavegeyserrock)) - (let ((t9-0 (method-of-type process-drawable inspect))) - (t9-0 obj) - ) +(defmethod inspect ((obj cavegeyserrock)) + (let ((t9-0 (method-of-type process-drawable inspect))) (t9-0 obj)) (format #t "~T~Tdo-burst?: ~A~%" (-> obj do-burst?)) (format #t "~T~Tdo-falling-sound?: ~A~%" (-> obj do-falling-sound?)) (format #t "~T~Tdo-landing-sound?: ~A~%" (-> obj do-landing-sound?)) @@ -79,952 +57,744 @@ This file is only found in early demos. (format #t "~T~Tdown: #~%" (-> obj down)) (format #t "~T~Tup: #~%" (-> obj up)) (format #t "~T~Tcontrol-pt[3] @ #x~X~%" (-> obj control-pt)) - obj - ) + obj) ;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 504) - (new 'static 'sparticle-launch-group - :length 7 - :duration #x258 - :linger-duration #x12c - :name "group-cavegeyserrock-sides" - :launcher - (new 'static 'inline-array sparticle-group-item 7 - (sp-item 1869 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15) - (sp-item 1870 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 12) - (sp-item 1871 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 24) - (sp-item 1872 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15) - (sp-item 1873 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 12) - (sp-item 1874 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 24) - (sp-item 1875 :fade-after (meters 60.0) :falloff-to (meters 60.0) :period 36 :length 15 :offset 24) - ) - :bounds (new 'static 'sphere :w 40960.0) - ) - ) +(set! (-> *part-group-id-table* 504) + (new 'static + 'sparticle-launch-group + :length 7 + :duration #x258 + :linger-duration #x12c + :name "group-cavegeyserrock-sides" + :launcher + (new 'static + 'inline-array + sparticle-group-item + 7 + (sp-item 1869 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15) + (sp-item 1870 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 12) + (sp-item 1871 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 24) + (sp-item 1872 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15) + (sp-item 1873 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 12) + (sp-item 1874 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 24) + (sp-item 1875 :fade-after (meters 60.0) :falloff-to (meters 60.0) :period 36 :length 15 :offset 24)) + :bounds + (new 'static 'sphere :w 40960.0))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1875) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-flt spt-num 1.0) - (sp-int spt-rot-x 5) - (sp-flt spt-r 4096.0) - (sp-flt spt-g 2867.2) - (sp-flt spt-b 3276.8) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags aux-list) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1876) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1875) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 16 + (sp-flt spt-num 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 4096.0) + (sp-flt spt-g 2867.2) + (sp-flt spt-b 3276.8) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1876) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1876) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-b -13.653334) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1876) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-b -13.653334) (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1869) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1869) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1872) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1872) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1870) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1870) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1873) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1873) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1871) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1871) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1874) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1874) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1877) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -1.0666667) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1877) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 505) - (new 'static 'sparticle-launch-group - :length 9 - :duration #x258 - :linger-duration #x12c - :name "group-cavegeyserrock-plume" - :launcher - (new 'static 'inline-array sparticle-group-item 9 - (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1878) - (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1879) - (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1880) - (sp-item 1878 :fade-after (meters 120.0) :falloff-to (meters 160.0) :flags (start-dead)) - (sp-item 1879 :fade-after (meters 120.0) :falloff-to (meters 160.0) :flags (start-dead)) - (sp-item 1882 :fade-after (meters 120.0) :falloff-to (meters 160.0)) - (sp-item 1883 :fade-after (meters 120.0) :falloff-to (meters 160.0)) - (sp-item 1884 :fade-after (meters 60.0) :falloff-to (meters 60.0)) - (sp-item 1880 :fade-after (meters 60.0) :falloff-to (meters 60.0) :flags (start-dead)) - ) - :bounds (new 'static 'sphere :w 131072.0) - ) - ) +(set! (-> *part-group-id-table* 505) + (new 'static + 'sparticle-launch-group + :length 9 + :duration #x258 + :linger-duration #x12c + :name "group-cavegeyserrock-plume" + :launcher + (new 'static + 'inline-array + sparticle-group-item + 9 + (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1878) + (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1879) + (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1880) + (sp-item 1878 :fade-after (meters 120.0) :falloff-to (meters 160.0) :flags (start-dead)) + (sp-item 1879 :fade-after (meters 120.0) :falloff-to (meters 160.0) :flags (start-dead)) + (sp-item 1882 :fade-after (meters 120.0) :falloff-to (meters 160.0)) + (sp-item 1883 :fade-after (meters 120.0) :falloff-to (meters 160.0)) + (sp-item 1884 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 1880 :fade-after (meters 60.0) :falloff-to (meters 60.0) :flags (start-dead))) + :bounds + (new 'static 'sphere :w 131072.0))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1880) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-flt spt-num 0.4) - (sp-int spt-rot-x 5) - (sp-flt spt-r 6144.0) - (sp-flt spt-g 2867.2) - (sp-flt spt-b 3276.8) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.94 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags aux-list) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1876) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1880) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 16 + (sp-flt spt-num 0.4) + (sp-int spt-rot-x 5) + (sp-flt spt-r 6144.0) + (sp-flt spt-g 2867.2) + (sp-flt spt-b 3276.8) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.94 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1876) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1881) - (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 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-flt spt-scale-x (meters 1.5)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 0.0) - (sp-flt spt-a 0.0) - (sp-flt spt-vel-y (meters 0.26666668)) - (sp-flt spt-accel-y 13.653334) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit3 bit12) - (sp-int spt-next-time 31) - (sp-launcher-by-id spt-next-launcher 1885) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1881) + (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 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-flt spt-scale-x (meters 1.5)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-y (meters 0.26666668)) + (sp-flt spt-accel-y 13.653334) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit3 bit12) + (sp-int spt-next-time 31) + (sp-launcher-by-id spt-next-launcher 1885) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1885) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 3 - (sp-flt spt-vel-y (meters 0.0)) - (sp-flt spt-accel-y 0.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1885) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 3 (sp-flt spt-vel-y (meters 0.0)) (sp-flt spt-accel-y 0.0) (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1879) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 0.5) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.13333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.06666667)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1886) - (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1879) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 24 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.13333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.06666667)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1886) + (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1878) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 0.5) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.13333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.06666667)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1886) - (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1878) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 24 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.13333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.06666667)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1886) + (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1886) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -1.6) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1886) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.6) (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1882) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.5 0.5 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) - (sp-flt spt-y (meters -1.0)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-flt spt-vel-y (meters 0.26666668)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-flt spt-accel-y 13.653334) - (sp-int spt-timer 30) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1882) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 19 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-flt spt-vel-y (meters 0.26666668)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-flt spt-accel-y 13.653334) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1883) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.5 0.5 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) - (sp-flt spt-y (meters -1.0)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-flt spt-vel-y (meters 0.26666668)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-flt spt-accel-y 13.653334) - (sp-int spt-timer 30) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1883) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 18 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.26666668)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-flt spt-accel-y 13.653334) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1884) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 11 - (sp-flt spt-num 0.5) - (sp-rnd-flt spt-x (meters 0.5) (meters 0.5) 1.0) - (sp-int spt-rot-x 5) - (sp-flt spt-r 6144.0) - (sp-flt spt-g 2457.6) - (sp-flt spt-b 3276.8) - (sp-flt spt-vel-y (meters 0.26666668)) - (sp-int spt-timer 30) - (sp-cpuinfo-flags aux-list) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1884) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 11 + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.5) (meters 0.5) 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 6144.0) + (sp-flt spt-g 2457.6) + (sp-flt spt-b 3276.8) + (sp-flt spt-vel-y (meters 0.26666668)) + (sp-int spt-timer 30) + (sp-cpuinfo-flags aux-list) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end)))) ;; failed to figure out what this is: -(let - ((v1-22 - (new 'static 'skeleton-group - :art-group-name "cavegeyserrock" - :bounds - (new 'static 'vector :y -4096.0 :w 14745.6) - :max-lod 1 - :version #x6 - ) - ) - ) +(let ((v1-22 (new 'static + 'skeleton-group + :art-group-name "cavegeyserrock" + :bounds + (new 'static 'vector :y -4096.0 :w 14745.6) + :max-lod 1 + :version #x6))) (set! (-> v1-22 jgeo) 0) (set! (-> v1-22 janim) 4) (set! (-> v1-22 mgeo 0) 1) (set! (-> v1-22 lod-dist 0) 81920.0) (set! (-> v1-22 mgeo 1) 3) (set! (-> v1-22 lod-dist 1) 4095996000.0) - (set! *cavegeyserrock-sg* v1-22) - ) + (set! *cavegeyserrock-sg* v1-22)) ;; definition for method 7 of type cavegeyserrock ;; INFO: Return type mismatch process-drawable vs cavegeyserrock. -(defmethod relocate cavegeyserrock ((obj cavegeyserrock) (arg0 int)) - (if (nonzero? (-> obj part2)) - (&+! (-> obj part2) arg0) - ) - (the-as - cavegeyserrock - ((the-as - (function process-drawable int process-drawable) - (find-parent-method cavegeyserrock 7) - ) - obj - arg0 - ) - ) - ) +(defmethod relocate ((obj cavegeyserrock) (arg0 int)) + (if (nonzero? (-> obj part2)) (&+! (-> obj part2) arg0)) + (the-as cavegeyserrock + ((the-as (function process-drawable int process-drawable) (find-parent-method cavegeyserrock 7)) obj arg0))) ;; definition for method 20 of type cavegeyserrock ;; INFO: Return type mismatch object vs none. -(defmethod dummy-20 cavegeyserrock ((obj cavegeyserrock)) +(defmethod dummy-20 ((obj cavegeyserrock)) (with-pp - (when *target* - (let* ((a1-0 (target-pos 0)) - (f0-0 (-> a1-0 y)) - ) - (when - (and - (>= f0-0 (+ -8192.0 (-> obj down y))) - (and - (>= (+ -4096.0 (-> obj root-override trans y)) f0-0) - (zero? (-> obj root-override riders num-riders)) - ) - ) - (let ((f0-1 (vector-vector-xz-distance-squared (-> obj down) a1-0))) - (when (>= 77552690.0 f0-1) - (let ((s5-0 (>= 37748736.0 f0-1))) - (when (not s5-0) - (when (>= (- (-> obj root-override trans y) (-> obj down y)) 3072.0) - (let ((a1-1 (new 'stack-no-clear 'vector))) - (set! (-> a1-1 x) (the-as float 1)) - (set! (-> a1-1 y) (the-as float #f)) - (if (dummy-40 (-> obj root-override) a1-1) - (set! s5-0 #t) - ) - ) - ) - ) - (when s5-0 - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) pp) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'shove) - (set! (-> a1-2 param 0) (the-as uint #f)) - (let ((v1-16 (new 'static 'attack-info :mask #xc0))) - (set! (-> v1-16 shove-up) 2048.0) - (set! (-> v1-16 shove-back) 6144.0) - (set! (-> a1-2 param 1) (the-as uint v1-16)) - ) - (send-event-function *target* a1-2) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) - ) + (when *target* + (let* ((a1-0 (target-pos 0)) + (f0-0 (-> a1-0 y))) + (when (and (>= f0-0 (+ -8192.0 (-> obj down y))) + (and (>= (+ -4096.0 (-> obj root-override trans y)) f0-0) (zero? (-> obj root-override riders num-riders)))) + (let ((f0-1 (vector-vector-xz-distance-squared (-> obj down) a1-0))) + (when (>= 77552690.0 f0-1) + (let ((s5-0 (>= 37748736.0 f0-1))) + (when (not s5-0) + (when (>= (- (-> obj root-override trans y) (-> obj down y)) 3072.0) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (set! (-> a1-1 x) (the-as float 1)) + (set! (-> a1-1 y) (the-as float #f)) + (if (dummy-40 (-> obj root-override) a1-1) (set! s5-0 #t))))) + (when s5-0 + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) pp) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'shove) + (set! (-> a1-2 param 0) (the-as uint #f)) + (let ((v1-16 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-16 shove-up) 2048.0) + (set! (-> v1-16 shove-back) 6144.0) + (set! (-> a1-2 param 1) (the-as uint v1-16))) + (send-event-function *target* a1-2))))))))) + (none))) ;; definition for method 21 of type cavegeyserrock ;; INFO: Return type mismatch quaternion vs none. ;; Used lq/sq -(defmethod dummy-21 cavegeyserrock ((obj cavegeyserrock)) +(defmethod dummy-21 ((obj cavegeyserrock)) (local-vars (at-0 int) (at-1 int) (s5-0 symbol)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((f0-0 (get-current-phase (-> obj sync)))) - #t - (cond - ((< f0-0 (-> obj begin-travel-up)) - (let ((f30-0 (/ f0-0 (-> obj begin-travel-up)))) - (set! s5-0 #t) - (dotimes (s4-0 3) - (let ((s3-0 (-> obj control-pt s4-0))) - (when (= (-> s3-0 trans y) (-> obj down y)) - (set! (-> obj do-burst?) #t) - (let ((a0-2 (+ (the int (* 12.0 (- 1.0 f30-0))) 3))) - (if (zero? (rand-vu-int-count a0-2)) - (+! - (-> s3-0 transv y) - (* (rand-vu-float-range 40960.0 57344.0) f30-0) - ) - ) - ) - ) - ) - ) - (let ((a0-4 (+ (the int (* 12.0 (- 1.0 f30-0))) 1))) - (if (zero? (rand-vu-int-count a0-4)) - (spawn (-> obj part) (-> obj down)) - ) - ) - ) - ) - ((< f0-0 (-> obj begin-travel-down)) - (let - ((f30-1 - (/ - (- f0-0 (-> obj begin-travel-up)) - (- (-> obj begin-travel-down) (-> obj begin-travel-up)) - ) - ) - ) - (set! s5-0 #f) - (set! (-> obj do-falling-sound?) #t) - (when (-> obj do-burst?) - (sound-play-by-name - (static-sound-name "cave-top-rises") - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) - (set! (-> obj do-burst?) #f) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - ) - (if (< f30-1 0.94) - (spawn (-> obj part2) (-> obj down)) - ) - ) - ) - (else - (set! s5-0 #t) - (when (-> obj do-falling-sound?) - (set! (-> obj do-falling-sound?) #f) - (sound-play-by-name - (static-sound-name "cave-top-falls") - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) - ) - ) - ) - ) - (dotimes (s4-3 3) - (let ((s2-0 (-> obj control-pt s4-3)) - (s3-3 (new 'stack-no-clear 'vector)) - ) - (set! (-> s3-3 quad) (-> s2-0 trans quad)) - (cond - (s5-0 - (+! (-> s2-0 transv y) (* -819200.0 (-> *display* seconds-per-frame))) - (let ((t9-14 vector+!) - (a0-17 s3-3) - (a1-9 s3-3) - (a2-2 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f0-15 (-> *display* seconds-per-frame))) - (.mov at-0 f0-15) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a2-2 quad) vf1) - (t9-14 a0-17 a1-9 a2-2) - ) - (when (< (-> s3-3 y) (-> obj down y)) - (when (-> obj do-landing-sound?) - (set! (-> obj do-landing-sound?) #f) - (sound-play-by-name - (static-sound-name "cave-top-lands") - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) - ) - (set! (-> s3-3 y) (-> obj down y)) - (let ((f0-18 (-> s2-0 transv y))) - (if (< f0-18 0.0) - (set! (-> s2-0 transv y) (* 0.3 (- f0-18))) - ) - ) - ) - ) - (else - (set! (-> obj do-landing-sound?) #t) - (let ((f30-2 (* 0.000048828126 (- (-> obj up y) (-> s2-0 trans y))))) + (vf2 :class vf)) + (init-vf0-vector) + (let ((f0-0 (get-current-phase (-> obj sync)))) + #t + (cond + ((< f0-0 (-> obj begin-travel-up)) + (let ((f30-0 (/ f0-0 (-> obj begin-travel-up)))) + (set! s5-0 #t) + (dotimes (s4-0 3) + (let ((s3-0 (-> obj control-pt s4-0))) + (when (= (-> s3-0 trans y) (-> obj down y)) + (set! (-> obj do-burst?) #t) + (let ((a0-2 (+ (the int (* 12.0 (- 1.0 f30-0))) 3))) + (if (zero? (rand-vu-int-count a0-2)) (+! (-> s3-0 transv y) (* (rand-vu-float-range 40960.0 57344.0) f30-0))))))) + (let ((a0-4 (+ (the int (* 12.0 (- 1.0 f30-0))) 1))) + (if (zero? (rand-vu-int-count a0-4)) (spawn (-> obj part) (-> obj down)))))) + ((< f0-0 (-> obj begin-travel-down)) + (let ((f30-1 (/ (- f0-0 (-> obj begin-travel-up)) (- (-> obj begin-travel-down) (-> obj begin-travel-up))))) + (set! s5-0 #f) + (set! (-> obj do-falling-sound?) #t) + (when (-> obj do-burst?) + (sound-play-by-name (static-sound-name "cave-top-rises") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (set! (-> obj do-burst?) #f) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down))) + (if (< f30-1 0.94) (spawn (-> obj part2) (-> obj down))))) + (else + (set! s5-0 #t) + (when (-> obj do-falling-sound?) + (set! (-> obj do-falling-sound?) #f) + (sound-play-by-name (static-sound-name "cave-top-falls") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)))))) + (dotimes (s4-3 3) + (let ((s2-0 (-> obj control-pt s4-3)) + (s3-3 (new 'stack-no-clear 'vector))) + (set! (-> s3-3 quad) (-> s2-0 trans quad)) (cond - ((< 1.0 f30-2) - (set! f30-2 1.0) - ) - ((< f30-2 -1.0) - (set! f30-2 -1.0) - ) - ) - (+! - (-> s2-0 transv y) - (* 819200.0 (-> *display* seconds-per-frame) f30-2) - ) - (let ((f0-26 (-> s2-0 transv y))) - (when (< 122880.0 (fabs f0-26)) - (if (>= f0-26 0.0) - (set! (-> s2-0 transv y) 122880.0) - (set! (-> s2-0 transv y) -122880.0) - ) - ) - ) - (let ((t9-17 vector+!) - (a0-20 s3-3) - (a1-11 s3-3) - (a2-4 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f0-29 (-> *display* seconds-per-frame))) - (.mov at-1 f0-29) - ) - (.mov vf2 at-1) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a2-4 quad) vf1) - (t9-17 a0-20 a1-11 a2-4) - ) - (let ((f0-31 (- (-> obj up y) (-> s3-3 y))) - (v1-59 (>= f30-2 0.0)) - ) - (when (!= v1-59 (>= f0-31 0.0)) - (let ((f0-32 (-> s2-0 transv y))) - (when (< 40960.0 (fabs f0-32)) - (if (>= f0-32 0.0) - (set! (-> s2-0 transv y) 40960.0) - (set! (-> s2-0 transv y) -40960.0) - ) - ) - ) - (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y))) - ) - ) - ) - ) - ) - (set! (-> s2-0 trans quad) (-> s3-3 quad)) - ) - ) - (let ((f0-37 0.0)) - (dotimes (v1-68 3) - (+! f0-37 (-> obj control-pt v1-68 trans y)) - ) - (let ((f0-38 (* 0.33333334 f0-37)) - (a1-12 (new 'stack-no-clear 'vector)) - ) - (set! (-> a1-12 quad) (-> obj root-override trans quad)) - (set! (-> a1-12 y) f0-38) - (TODO-RENAME-30 (-> obj root-override) a1-12) - ) - ) - (let ((s4-4 (new 'stack-no-clear 'vector)) - (s3-4 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'vector)) - ) - (vector-! - s4-4 - (the-as vector (&-> obj stack 160)) - (the-as vector (-> obj control-pt)) - ) - (vector-! - s3-4 - (the-as vector (&-> obj stack 192)) - (the-as vector (-> obj control-pt)) - ) - (vector-cross! s5-1 s4-4 s3-4) - (vector-normalize! s5-1 1.0) - (forward-up-nopitch->quaternion - (-> obj root-override quat) - (vector-z-quaternion! (new-stack-vector0) (-> obj root-override quat)) - s5-1 - ) - ) - (none) - ) - ) + (s5-0 + (+! (-> s2-0 transv y) (* -819200.0 (-> *display* seconds-per-frame))) + (let ((t9-14 vector+!) + (a0-17 s3-3) + (a1-9 s3-3) + (a2-2 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f0-15 (-> *display* seconds-per-frame))) (.mov at-0 f0-15)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a2-2 quad) vf1) + (t9-14 a0-17 a1-9 a2-2)) + (when (< (-> s3-3 y) (-> obj down y)) + (when (-> obj do-landing-sound?) + (set! (-> obj do-landing-sound?) #f) + (sound-play-by-name (static-sound-name "cave-top-lands") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t))) + (set! (-> s3-3 y) (-> obj down y)) + (let ((f0-18 (-> s2-0 transv y))) (if (< f0-18 0.0) (set! (-> s2-0 transv y) (* 0.3 (- f0-18))))))) + (else + (set! (-> obj do-landing-sound?) #t) + (let ((f30-2 (* 0.000048828126 (- (-> obj up y) (-> s2-0 trans y))))) + (cond + ((< 1.0 f30-2) (set! f30-2 1.0)) + ((< f30-2 -1.0) (set! f30-2 -1.0))) + (+! (-> s2-0 transv y) (* 819200.0 (-> *display* seconds-per-frame) f30-2)) + (let ((f0-26 (-> s2-0 transv y))) + (when (< 122880.0 (fabs f0-26)) + (if (>= f0-26 0.0) (set! (-> s2-0 transv y) 122880.0) (set! (-> s2-0 transv y) -122880.0)))) + (let ((t9-17 vector+!) + (a0-20 s3-3) + (a1-11 s3-3) + (a2-4 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f0-29 (-> *display* seconds-per-frame))) (.mov at-1 f0-29)) + (.mov vf2 at-1) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a2-4 quad) vf1) + (t9-17 a0-20 a1-11 a2-4)) + (let ((f0-31 (- (-> obj up y) (-> s3-3 y))) + (v1-59 (>= f30-2 0.0))) + (when (!= v1-59 (>= f0-31 0.0)) + (let ((f0-32 (-> s2-0 transv y))) + (when (< 40960.0 (fabs f0-32)) + (if (>= f0-32 0.0) (set! (-> s2-0 transv y) 40960.0) (set! (-> s2-0 transv y) -40960.0)))) + (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y)))))))) + (set! (-> s2-0 trans quad) (-> s3-3 quad)))) + (let ((f0-37 0.0)) + (dotimes (v1-68 3) + (+! f0-37 (-> obj control-pt v1-68 trans y))) + (let ((f0-38 (* 0.33333334 f0-37)) + (a1-12 (new 'stack-no-clear 'vector))) + (set! (-> a1-12 quad) (-> obj root-override trans quad)) + (set! (-> a1-12 y) f0-38) + (TODO-RENAME-30 (-> obj root-override) a1-12))) + (let ((s4-4 (new 'stack-no-clear 'vector)) + (s3-4 (new 'stack-no-clear 'vector)) + (s5-1 (new 'stack-no-clear 'vector))) + (vector-! s4-4 (the-as vector (&-> obj stack 160)) (the-as vector (-> obj control-pt))) + (vector-! s3-4 (the-as vector (&-> obj stack 192)) (the-as vector (-> obj control-pt))) + (vector-cross! s5-1 s4-4 s3-4) + (vector-normalize! s5-1 1.0) + (forward-up-nopitch->quaternion (-> obj root-override quat) + (vector-z-quaternion! (new-stack-vector0) (-> obj root-override quat)) + s5-1)) + (none))) ;; failed to figure out what this is: (defstate cavegeyserrock-idle (cavegeyserrock) :trans - (the-as (function none :behavior cavegeyserrock) rider-trans) + (the-as (function none :behavior cavegeyserrock) + rider-trans) :code - (behavior () - (while #t - (dummy-20 self) - (dummy-21 self) - (suspend) - ) - (none) - ) + (behavior () + (while #t + (dummy-20 self) + (dummy-21 self) + (suspend)) + (none)) :post - (the-as (function none :behavior cavegeyserrock) rider-post) - ) + (the-as (function none :behavior cavegeyserrock) + rider-post)) ;; definition for method 10 of type cavegeyserrock -(defmethod deactivate cavegeyserrock ((obj cavegeyserrock)) - (if (nonzero? (-> obj part2)) - (kill-and-free-particles (-> obj part2)) - ) +(defmethod deactivate ((obj cavegeyserrock)) + (if (nonzero? (-> obj part2)) (kill-and-free-particles (-> obj part2))) ((method-of-type process-drawable deactivate) obj) - (none) - ) + (none)) ;; definition for function cavecrystal-light-control-cavegeyserrock-callback ;; INFO: Return type mismatch object vs none. ;; Used lq/sq -(defun - cavecrystal-light-control-cavegeyserrock-callback - ((arg0 (pointer process-drawable)) - (arg1 int) - (arg2 float) - (arg3 object) - (arg4 vector) - ) +(defun cavecrystal-light-control-cavegeyserrock-callback ((arg0 (pointer process-drawable)) (arg1 int) (arg2 float) (arg3 object) (arg4 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) - (let ((v1-1 (-> arg0 0 node-list))) - (if (and (>= arg1 0) (nonzero? v1-1)) - (vector<-cspace! s5-0 (-> v1-1 data arg1)) - (set! (-> s5-0 quad) (-> arg0 0 root trans quad)) - ) - ) - (set! (-> s5-0 w) arg2) - (let ((f30-0 (TODO-RENAME-10 *cavecrystal-light-control* s5-0))) - (let ((a2-2 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) - (a1-5 (new 'static 'vector :x 0.05 :y 0.05 :z 0.05 :w 1.0)) - ) - (vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f30-0) - ) - (set-fade! *palette-fade-controls* 0 f30-0 0.0 arg4) - ) - ) - (none) - ) + (let ((v1-1 (-> arg0 0 node-list))) + (if (and (>= arg1 0) (nonzero? v1-1)) + (vector<-cspace! s5-0 (-> v1-1 data arg1)) + (set! (-> s5-0 quad) (-> arg0 0 root trans quad)))) + (set! (-> s5-0 w) arg2) + (let ((f30-0 (TODO-RENAME-10 *cavecrystal-light-control* s5-0))) + (let ((a2-2 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) + (a1-5 (new 'static 'vector :x 0.05 :y 0.05 :z 0.05 :w 1.0))) + (vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f30-0)) + (set-fade! *palette-fade-controls* 0 f30-0 0.0 arg4))) + (none)) ;; definition for method 11 of type cavegeyserrock ;; INFO: Return type mismatch object vs none. ;; Used lq/sq -(defmethod copy-defaults! cavegeyserrock ((obj cavegeyserrock) (arg0 res-lump)) +(defmethod copy-defaults! ((obj cavegeyserrock) (arg0 res-lump)) (local-vars (sv-16 int) (sv-32 int)) (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) - (alloc-riders 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) 0) - (set-vector! (-> s3-0 local-sphere) 0.0 -4096.0 0.0 14745.6) - ) - (dummy-46 s4-0) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) - (set! (-> obj root-override) s4-0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) nothing) + (alloc-riders 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) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 -4096.0 0.0 14745.6)) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0)) (set! (-> obj do-burst?) #f) (set! (-> obj do-falling-sound?) #f) (set! (-> obj do-landing-sound?) #f) @@ -1033,115 +803,52 @@ This file is only found in early demos. (logior! (-> obj skel status) 1) (ja-channel-set! 1) (let ((s4-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> obj draw art-group data 4)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) - (set! - (-> obj root-override trans y) - (+ 8192.0 (-> obj root-override trans y)) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> obj draw art-group data 4)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) + (set! (-> obj root-override trans y) (+ 8192.0 (-> obj root-override trans y))) (set! sv-16 0) - (let - ((v1-33 - (res-lump-data - arg0 - 'trans-offset - pointer - :tag-ptr - (the-as (pointer res-tag) (& sv-16)) - ) - ) - ) - (when v1-33 - (+! (-> obj root-override trans x) (-> (the-as (pointer float) v1-33))) - (+! (-> obj root-override trans y) (l.f (&+ v1-33 4))) - (+! (-> obj root-override trans z) (l.f (&+ v1-33 8))) - ) - ) + (let ((v1-33 (res-lump-data arg0 'trans-offset pointer :tag-ptr (the-as (pointer res-tag) (& sv-16))))) + (when v1-33 + (+! (-> obj root-override trans x) (-> (the-as (pointer float) v1-33))) + (+! (-> obj root-override trans y) (l.f (&+ v1-33 4))) + (+! (-> obj root-override trans z) (l.f (&+ v1-33 8))))) (dummy-47 (-> obj root-override)) (load-params! (-> obj sync) obj (the-as uint 360.0) 0.0 0.15 0.15) (let ((f30-0 0.4) - (f28-0 0.9) - ) - (set! sv-32 0) - (let - ((v1-40 - (res-lump-data - arg0 - 'percent - pointer - :tag-ptr - (the-as (pointer res-tag) (& sv-32)) - ) - ) - ) - (when v1-40 - (set! f30-0 (-> (the-as (pointer float) v1-40))) - (set! f28-0 (l.f (&+ v1-40 4))) - (if (>= 0.01 f30-0) - (set! f30-0 0.01) - ) - (if (>= 0.01 f28-0) - (set! f28-0 0.01) - ) - (if (>= f30-0 f28-0) - (set! f28-0 (+ 0.01 f30-0)) - ) - (when (>= f30-0 1.0) - (set! f28-0 (* 0.9 (/ f28-0 f30-0))) - (set! f30-0 0.9) - ) - ) - ) - (set! (-> obj begin-travel-up) f30-0) - (set! (-> obj begin-travel-down) f28-0) - ) + (f28-0 0.9)) + (set! sv-32 0) + (let ((v1-40 (res-lump-data arg0 'percent pointer :tag-ptr (the-as (pointer res-tag) (& sv-32))))) + (when v1-40 + (set! f30-0 (-> (the-as (pointer float) v1-40))) + (set! f28-0 (l.f (&+ v1-40 4))) + (if (>= 0.01 f30-0) (set! f30-0 0.01)) + (if (>= 0.01 f28-0) (set! f28-0 0.01)) + (if (>= f30-0 f28-0) (set! f28-0 (+ 0.01 f30-0))) + (when (>= f30-0 1.0) + (set! f28-0 (* 0.9 (/ f28-0 f30-0))) + (set! f30-0 0.9)))) + (set! (-> obj begin-travel-up) f30-0) + (set! (-> obj begin-travel-down) f28-0)) (set! (-> obj down quad) (-> obj root-override trans quad)) (set! (-> obj up quad) (-> obj root-override trans quad)) (set! (-> obj up y) (+ 40960.0 (-> obj up y))) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 504) obj) - ) - (set! - (-> obj part2) - (create-launch-control (-> *part-group-id-table* 505) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 504) obj)) + (set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 505) obj)) (vector-reset! (-> obj root-override transv)) - (create-connection! - *cavecrystal-light-control* - (the-as cavecrystal obj) - (-> obj entity) - (the-as - (function object object object object object) - cavecrystal-light-control-cavegeyserrock-callback - ) - -1 - 8192.0 - ) + (create-connection! *cavecrystal-light-control* + (the-as cavecrystal obj) + (-> obj entity) + (the-as (function object object object object object) cavecrystal-light-control-cavegeyserrock-callback) + -1 + 8192.0) (let ((s5-1 (new 'stack-no-clear 'vector)) - (f30-1 0.0) - ) - (dotimes (s4-2 3) - (let ((s3-1 (-> obj control-pt s4-2))) - (set-vector! s5-1 0.0 0.0 10240.0 1.0) - (vector-rotate-around-y! s5-1 s5-1 f30-1) - (set! f30-1 (+ 21845.334 f30-1)) - (vector+! (-> s3-1 trans) s5-1 (-> obj root-override trans)) - (vector-reset! (-> s3-1 transv)) - ) - ) - ) + (f30-1 0.0)) + (dotimes (s4-2 3) + (let ((s3-1 (-> obj control-pt s4-2))) + (set-vector! s5-1 0.0 0.0 10240.0 1.0) + (vector-rotate-around-y! s5-1 s5-1 f30-1) + (set! f30-1 (+ 21845.334 f30-1)) + (vector+! (-> s3-1 trans) s5-1 (-> obj root-override trans)) + (vector-reset! (-> s3-1 transv))))) (go cavegeyserrock-idle) - (none) - ) - - - - - - + (none)) diff --git a/goal_src/jak1/pc/debug/anim-tester-x.gc b/goal_src/jak1/pc/debug/anim-tester-x.gc index b585a4a395..90a19c76d1 100644 --- a/goal_src/jak1/pc/debug/anim-tester-x.gc +++ b/goal_src/jak1/pc/debug/anim-tester-x.gc @@ -1,17 +1,13 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/nav/navigate.gc") (require "pc/pckernel.gc") (require "engine/anim/aligner.gc") - #| - Code for the PC port anim tester. It's like their original anim tester tool, but actually functional, and with different features. - - |# +|# ;; debug-only file! (declare-file (debug)) @@ -20,118 +16,83 @@ ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; types and enums ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;;;------------------------ ;; settings ;;;------------------------ - (deftype atx-item (basic) - ((next atx-item) - (text string) - + ((next atx-item) + (text string) (extra basic) - (group art-group :overlay-at extra) - (jgeo art-joint-geo :overlay-at extra) - (janim art-joint-anim :overlay-at extra) - (mgeo merc-ctrl :overlay-at extra) - ) + (group art-group :overlay-at extra) + (jgeo art-joint-geo :overlay-at extra) + (janim art-joint-anim :overlay-at extra) + (mgeo merc-ctrl :overlay-at extra)) (:methods - (new (symbol type string basic) _type_) - ) - ) + (new (symbol type string basic) _type_))) (defmethod new atx-item ((allocation symbol) (type-to-make type) (text string) (extra basic)) "make a new atx-item" - (let ((obj (object-new allocation type-to-make (the int (-> type-to-make size))))) (set! (-> obj next) #f) (set! (-> obj text) text) (set! (-> obj extra) extra) - - obj) - ) + obj)) (deftype atx-list (structure) - ((head atx-item) - (tail atx-item) + ((head atx-item) + (tail atx-item) (selection int16) - (offset int16) - (func (function atx-item object)) - ) - ) - + (offset int16) + (func (function atx-item object)))) (defenum atx-flags :bitfield #t :type int32 (eye) (blerc) - (show-joints) - ) + (show-joints)) (deftype anim-tester-x-settings (structure) - ( - (speed float) + ((speed float) (frame-num float) - (mode symbol) - (flags atx-flags) - (list-ctrl atx-list :inline) - ) - ) - -(define *ATX-settings* (new 'static 'anim-tester-x-settings :speed 1.0 - :mode 'loop - :flags (atx-flags))) + (mode symbol) + (flags atx-flags) + (list-ctrl atx-list :inline))) +(define *ATX-settings* (new 'static 'anim-tester-x-settings :speed 1.0 :mode 'loop :flags (atx-flags))) (deftype atx-item-art-group (atx-item) ((ja-list atx-list :inline) (jg-list atx-list :inline) - (mg-list atx-list :inline) - ) + (mg-list atx-list :inline)) (:methods - (new (symbol type string art-group) _type_) - ) - ) + (new (symbol type string art-group) _type_))) ;;;---------------------------------- ;; process ;;;---------------------------------- - (defenum atx-edit-mode :type uint8 (none) (art-group) (anim) (mgeo) - (jgeo) - ) - + (jgeo)) (deftype anim-tester-x (process-drawable) - ( - (edit-mode atx-edit-mode) - (cur-list atx-list) - (selected-art-group atx-item-art-group) - - (cur-art-group art-group) - (cur-joint-geo art-joint-geo) - (cur-mesh-geo merc-ctrl) - (cur-joint-anim art-joint-anim) - ) - ) - - + ((edit-mode atx-edit-mode) + (cur-list atx-list) + (selected-art-group atx-item-art-group) + (cur-art-group art-group) + (cur-joint-geo art-joint-geo) + (cur-mesh-geo merc-ctrl) + (cur-joint-anim art-joint-anim))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; list functions and macros @@ -141,17 +102,8 @@ "iterate through an atx-list." (with-gensyms (next) `(let ((,(car bindings) (-> ,(cadr bindings) head))) - (while ,(car bindings) - (let ((,next (-> ,(car bindings) next))) - - ,@body - - (set! ,(car bindings) ,next) - ) - ) - ) - ) - ) + (while ,(car bindings) + (let ((,next (-> ,(car bindings) next))) ,@body (set! ,(car bindings) ,next)))))) (defun atx-list-init! ((lst atx-list)) "initialize an atx-list" @@ -164,14 +116,10 @@ (defun atx-list-size ((lst atx-list)) "return size of an atx-list" - (let ((items 0)) - (do-atx-list (item lst) (1+! items)) - items) - ) + (let ((items 0)) (do-atx-list (item lst) (1+! items)) items)) (defun atx-list-append ((lst atx-list) (item atx-item)) "append an item to a list. returns the added item." - (if (not (-> lst head)) (set! (-> lst head) item)) (if (-> lst tail) (set! (-> lst tail next) item)) (set! (-> lst tail) item) @@ -179,158 +127,90 @@ (defun atx-list-remove ((lst atx-list) (item atx-item)) "remove an item from a list. removes all instances of that item. but it's weird if you have multiple..." - (cond - ((= (-> lst head) item) - (set! (-> lst head) (-> item next)) - (if (= (-> lst tail) item) - (set! (-> lst tail) #f) - ) - ) + ((= (-> lst head) item) (set! (-> lst head) (-> item next)) (if (= (-> lst tail) item) (set! (-> lst tail) #f))) (else - (let ((last (the atx-item #f)) - (i 0)) - (do-atx-list (it lst) - (when (= it item) - (if (>= (-> lst selection) i) - (1-! (-> lst selection))) - (set! (-> last next) (-> it next)) - (set! it last) - ) - (set! last it) - ) - ) - ) - ) + (let ((last (the atx-item #f)) + (i 0)) + (do-atx-list (it lst) + (when (= it item) + (if (>= (-> lst selection) i) (1-! (-> lst selection))) + (set! (-> last next) (-> it next)) + (set! it last)) + (set! last it))))) 0) (defun atx-list-remove-by-object ((lst atx-list) (obj basic)) "remove all items with a specific object from a list." - - (do-atx-list (it lst) - (if (= (-> it extra) obj) - (atx-list-remove lst it) - ) - ) + (do-atx-list (it lst) (if (= (-> it extra) obj) (atx-list-remove lst it))) 0) (defun atx-list-get-by-index ((lst atx-list) (idx int)) "get an item by its index." - - (let ((items 0)) - (do-atx-list (item lst) - (if (= items idx) - (return item)) - (1+! items)) - items) + (let ((items 0)) (do-atx-list (item lst) (if (= items idx) (return item)) (1+! items)) items) (the atx-item #f)) (defun atx-list-get-by-name ((lst atx-list) (name string)) "get an item by its index." - - (do-atx-list (item lst) - (if (string= (-> item text) name) - (return item)) - ) + (do-atx-list (item lst) (if (string= (-> item text) name) (return item))) (the atx-item #f)) - (defmacro atx-interface-square-to-menu () `(when (cpad-pressed? 0 square) - (cpad-clear! 0 square) - (true! *camera-read-buttons*) - (set! (-> self edit-mode) (atx-edit-mode none)) - (set! (-> *debug-menu-context* is-hidden) #f) - ) - ) + (cpad-clear! 0 square) + (true! *camera-read-buttons*) + (set! (-> self edit-mode) (atx-edit-mode none)) + (set! (-> *debug-menu-context* is-hidden) #f))) (defun atx-list-interface ((lst atx-list) (title string) (warning string) (sel-obj basic)) "run interface and draw an atx-list" - (let ((items-drawn (-> lst offset)) (i 0) (color (font-color menu)) (text-len 0.0)) - - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - - (when (nonzero? (length title)) - (set! text-len (draw-string-xy title buf 9 (+ 28 4 (* items-drawn 8)) (font-color menu) (font-flags shadow kerning))) - (1+! items-drawn) - ) - - (do-atx-list (item lst) - (let ((selected? (= i (-> lst selection)))) - - (set! color (if (= (-> item extra) sel-obj) (font-color menu-flag-on) (font-color menu))) - - (let ((this-len (draw-string-xy (-> item group name) buf 21 (+ 28 4 (* items-drawn 8)) color (font-flags shadow kerning)))) - (if (> this-len text-len) - (set! text-len this-len))) - - (if selected? - (draw-string-xy ">" buf 9 (+ 28 4 (* items-drawn 8)) color (font-flags shadow kerning))) - - (1+! items-drawn) - (1+! i) - - )) - - (when (not (-> lst head)) - (draw-string-xy warning buf 21 (+ 28 4 8) (font-color red) (font-flags shadow kerning)) - (1+! items-drawn)) - - ) - - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug)) - - - (draw-sprite2d-xy buf 6 (+ 28 (* (-> lst offset) 8)) - (+ 6 12 12 (the int text-len)) (+ 8 (* 8 (- items-drawn (-> lst offset)))) - (static-rgba 0 0 0 64)) - - ) - ) - + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (when (nonzero? (length title)) + (set! text-len (draw-string-xy title buf 9 (+ 28 4 (* items-drawn 8)) (font-color menu) (font-flags shadow kerning))) + (1+! items-drawn)) + (do-atx-list (item lst) + (let ((selected? (= i (-> lst selection)))) + (set! color (if (= (-> item extra) sel-obj) (font-color menu-flag-on) (font-color menu))) + (let ((this-len (draw-string-xy (-> item group name) buf 21 (+ 28 4 (* items-drawn 8)) color (font-flags shadow kerning)))) + (if (> this-len text-len) (set! text-len this-len))) + (if selected? (draw-string-xy ">" buf 9 (+ 28 4 (* items-drawn 8)) color (font-flags shadow kerning))) + (1+! items-drawn) + (1+! i))) + (when (not (-> lst head)) + (draw-string-xy warning buf 21 (+ 28 4 8) (font-color red) (font-flags shadow kerning)) + (1+! items-drawn))) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug)) + (draw-sprite2d-xy buf + 6 + (+ 28 (* (-> lst offset) 8)) + (+ 6 12 12 (the int text-len)) + (+ 8 (* 8 (- items-drawn (-> lst offset)))) + (static-rgba 0 0 0 64)))) (when (-> lst head) - (if (cpad-pressed? 0 down) - (+! (-> lst selection) 1)) - (if (cpad-pressed? 0 right) - (+! (-> lst selection) 5)) - (if (cpad-pressed? 0 up) - (-! (-> lst selection) 1)) - (if (cpad-pressed? 0 left) - (-! (-> lst selection) 5)) - (if (< (-> lst selection) 0) - (set! (-> lst selection) (1- (atx-list-size lst)))) - (if (>= (-> lst selection) (atx-list-size lst)) - (set! (-> lst selection) 0)) - (if (cpad-pressed? 0 x) - ((-> lst func) (atx-list-get-by-index lst (-> lst selection))) - ) - - (when (< 16 (+ (-> lst selection) (-> lst offset))) - (set! (-> lst offset) (- 16 (-> lst selection))) - ) - (when (< (+ (-> lst selection) (-> lst offset)) 0) - (set! (-> lst offset) (- 0 (-> lst selection))) - ) - ) + (if (cpad-pressed? 0 down) (+! (-> lst selection) 1)) + (if (cpad-pressed? 0 right) (+! (-> lst selection) 5)) + (if (cpad-pressed? 0 up) (-! (-> lst selection) 1)) + (if (cpad-pressed? 0 left) (-! (-> lst selection) 5)) + (if (< (-> lst selection) 0) (set! (-> lst selection) (1- (atx-list-size lst)))) + (if (>= (-> lst selection) (atx-list-size lst)) (set! (-> lst selection) 0)) + (if (cpad-pressed? 0 x) ((-> lst func) (atx-list-get-by-index lst (-> lst selection)))) + (when (< 16 (+ (-> lst selection) (-> lst offset))) + (set! (-> lst offset) (- 16 (-> lst selection)))) + (when (< (+ (-> lst selection) (-> lst offset)) 0) + (set! (-> lst offset) (- 0 (-> lst selection))))) 0) - (defbehavior atx-list-art-group-func anim-tester-x ((item atx-item-art-group)) - (if (not (and (type-type? (-> item type) atx-item-art-group) (-> item group) (-> item ja-list head) (-> item jg-list head) - (-> item mg-list head) - )) - (return #f)) - + (-> item mg-list head))) + (return #f)) (set! (-> self selected-art-group) item) (set! (-> self edit-mode) (atx-edit-mode anim)) (set! (-> self cur-art-group) (-> item group)) @@ -341,46 +221,34 @@ 0) (defbehavior atx-list-joint-anim-func anim-tester-x ((item atx-item)) - - (if (not (-> item janim)) - (return #f)) + (if (not (-> item janim)) (return #f)) (set! (-> self cur-joint-anim) (-> item janim)) (ja-no-eval :frame-num 0.0) 0) -(defbehavior atx-list-joint-geo-func anim-tester-x ((item atx-item)) - (if (not (-> item janim)) - (return #f)) +(defbehavior atx-list-joint-geo-func anim-tester-x ((item atx-item)) + (if (not (-> item janim)) (return #f)) (set! (-> self cur-joint-geo) (-> item jgeo)) 0) -(defbehavior atx-list-mesh-geo-func anim-tester-x ((item atx-item)) - (if (not (-> item janim)) - (return #f)) +(defbehavior atx-list-mesh-geo-func anim-tester-x ((item atx-item)) + (if (not (-> item janim)) (return #f)) (set! (-> self cur-mesh-geo) (-> item mgeo)) 0) - - (defmethod new atx-item-art-group ((allocation symbol) (type-to-make type) (text string) (ag art-group)) "make a new atx-item" - (let ((obj (object-new allocation type-to-make (the int (-> type-to-make size))))) (set! (-> obj next) #f) (set! (-> obj text) text) (set! (-> obj group) ag) - (atx-list-init! (-> obj ja-list)) (atx-list-init! (-> obj jg-list)) (atx-list-init! (-> obj mg-list)) (set! (-> obj ja-list func) atx-list-joint-anim-func) (set! (-> obj jg-list func) atx-list-joint-geo-func) (set! (-> obj mg-list func) atx-list-mesh-geo-func) - - obj) - ) - - + obj)) ;;;---------------------------------------------- ;; globals @@ -388,23 +256,18 @@ ;; initialize the lists in the static defs (atx-list-init! (-> *ATX-settings* list-ctrl)) + (set! (-> *ATX-settings* list-ctrl func) atx-list-art-group-func) ;; the actual process. (define-perm *atx* (pointer anim-tester-x) #f) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; states ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - - (defbehavior anim-tester-x-reset anim-tester-x () "reset the anim tester to default settings" - (format #t "resetting anim tester~%") (set! (-> self edit-mode) (atx-edit-mode none)) (set! (-> self selected-art-group) #f) @@ -414,76 +277,55 @@ (set! (-> self cur-mesh-geo) #f) 0) - (defbehavior clean-art-groups anim-tester-x () "purge possible invalid art groups automatically." (do-atx-list (it (-> *ATX-settings* list-ctrl)) - (when (!= (-> it group type) art-group) - (when (= it (-> self selected-art-group)) - (anim-tester-x-reset) - ) - (atx-list-remove (-> *ATX-settings* list-ctrl) it) - ) - ) - ) - + (when (!= (-> it group type) art-group) + (when (= it (-> self selected-art-group)) + (anim-tester-x-reset)) + (atx-list-remove (-> *ATX-settings* list-ctrl) it)))) (defbehavior anim-tester-x-interface anim-tester-x () "UI controls for anim tester" - (set! (-> *debug-menu-context* is-hidden) #t) (set! (-> self cur-list) #f) - (case (-> self edit-mode) - (((atx-edit-mode none)) - (set! (-> *debug-menu-context* is-hidden) #f)) + (((atx-edit-mode none)) (set! (-> *debug-menu-context* is-hidden) #f)) (((atx-edit-mode art-group)) - (set! (-> self cur-list) (-> *ATX-settings* list-ctrl)) - (atx-list-interface (-> self cur-list) "---- pick art group ----" "Add an art group with atx-add-group" (-> self cur-art-group)) - (atx-interface-square-to-menu) - ) + (set! (-> self cur-list) (-> *ATX-settings* list-ctrl)) + (atx-list-interface (-> self cur-list) + "---- pick art group ----" + "Add an art group with atx-add-group" + (-> self cur-art-group)) + (atx-interface-square-to-menu)) (((atx-edit-mode anim)) - (set! (-> self cur-list) (-> self selected-art-group ja-list)) - (atx-list-interface (-> self cur-list) "---- pick anim ----" "" (-> self cur-joint-anim)) - (atx-interface-square-to-menu) - ) + (set! (-> self cur-list) (-> self selected-art-group ja-list)) + (atx-list-interface (-> self cur-list) "---- pick anim ----" "" (-> self cur-joint-anim)) + (atx-interface-square-to-menu)) (((atx-edit-mode jgeo)) - (set! (-> self cur-list) (-> self selected-art-group jg-list)) - (atx-list-interface (-> self cur-list) "---- pick skeleton ----" "" (-> self cur-joint-geo)) - (atx-interface-square-to-menu) - ) + (set! (-> self cur-list) (-> self selected-art-group jg-list)) + (atx-list-interface (-> self cur-list) "---- pick skeleton ----" "" (-> self cur-joint-geo)) + (atx-interface-square-to-menu)) (((atx-edit-mode mgeo)) - (set! (-> self cur-list) (-> self selected-art-group mg-list)) - (atx-list-interface (-> self cur-list) "---- pick mesh ----" "" (-> self cur-mesh-geo)) - (atx-interface-square-to-menu) - ) - ) - + (set! (-> self cur-list) (-> self selected-art-group mg-list)) + (atx-list-interface (-> self cur-list) "---- pick mesh ----" "" (-> self cur-mesh-geo)) + (atx-interface-square-to-menu))) 0) - (defstate anim-tester-x-process (anim-tester-x) - - :trans (behavior () - (clean-art-groups) - - (if (= *master-mode* 'menu) - (anim-tester-x-interface) - (set! *camera-read-buttons* #f) - ) - (when (!= *master-mode* 'menu) - (add-debug-x #t (bucket-id debug-no-zbuf) (-> self root trans) *color-white*) - ) - (none)) - - :code (behavior () - (let - ((need-update #f) - (lst (the-as atx-list #f))) - - (loop - - (when (and (-> self cur-joint-geo) (!= (-> self cur-joint-geo) (-> self draw jgeo))) + :trans + (behavior () + (clean-art-groups) + (if (= *master-mode* 'menu) (anim-tester-x-interface) (set! *camera-read-buttons* #f)) + (when (!= *master-mode* 'menu) + (add-debug-x #t (bucket-id debug-no-zbuf) (-> self root trans) *color-white*)) + (none)) + :code + (behavior () + (let ((need-update #f) + (lst (the-as atx-list #f))) + (loop + (when (and (-> self cur-joint-geo) (!= (-> self cur-joint-geo) (-> self draw jgeo))) (process-disconnect self) (set! (-> self draw art-group) (-> self cur-art-group)) (set! (-> self draw cur-lod) -1) @@ -501,95 +343,55 @@ (set! (-> self draw ripple) #f) (set! (-> self draw level-index) (the-as uint 2)) (set! (-> self node-list) (make-nodes-from-jg (-> self draw jgeo) *default-skel-template* 'debug)) - (if (not (-> self skel effect)) - (set! (-> self skel effect) (new 'process 'effect-control self))) + (if (not (-> self skel effect)) (set! (-> self skel effect) (new 'process 'effect-control self))) (fill-skeleton-cache self) (lod-set! (-> self draw) 0) (ja-channel-set! 0) - (set! lst (-> self selected-art-group ja-list)) - ) - - (cond - ((-> self cur-joint-geo) - (if (> 1 (-> self skel active-channels)) - (ja-channel-set! 1)) - (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) - (ja-no-eval :group! (-> self cur-joint-anim)) - (when (!= *master-mode* 'menu) - (case (-> *ATX-settings* mode) - (('loop) - (ja :num! (loop! (-> *ATX-settings* speed))) - ) - (('identity) - (ja :num! (identity (-> *ATX-settings* frame-num))) - ) - (('seek) - (ja :num! (seek! max (-> *ATX-settings* speed))) - ) - ) - ) - (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) - 1.0 1.0 1.0) - ) - (else - (if (!= *master-mode* 'menu) - (format *stdcon* "~%~%no art selected~%") - ) - ) - ) - - (when (and lst (-> lst head) (!= *master-mode* 'menu)) + (set! lst (-> self selected-art-group ja-list))) (cond - ((cpad-pressed? 0 left) - (cpad-clear! 0 left) - (-! (-> lst selection) 1) - (set! need-update #t)) - ((cpad-pressed? 0 right) - (cpad-clear! 0 right) - (+! (-> lst selection) 1) - (set! need-update #t)) - ) - (cond - ((< (-> lst selection) 0) - (set! (-> lst selection) (1- (atx-list-size lst)))) - ((>= (-> lst selection) (atx-list-size lst)) - (set! (-> lst selection) 0)) - ) - (when need-update - ((-> lst func) (atx-list-get-by-index lst (-> lst selection))) - (set! need-update #f)) - ) - - (suspend)) - ) - ) - - :post (behavior () - (when (-> self cur-joint-geo) + ((-> self cur-joint-geo) + (if (> 1 (-> self skel active-channels)) (ja-channel-set! 1)) + (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) + (ja-no-eval :group! (-> self cur-joint-anim)) + (when (!= *master-mode* 'menu) + (case (-> *ATX-settings* mode) + (('loop) (ja :num! (loop! (-> *ATX-settings* speed)))) + (('identity) (ja :num! (identity (-> *ATX-settings* frame-num)))) + (('seek) (ja :num! (seek! max (-> *ATX-settings* speed)))))) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) + 1.0 + 1.0 + 1.0)) + (else (if (!= *master-mode* 'menu) (format *stdcon* "~%~%no art selected~%")))) + (when (and lst (-> lst head) (!= *master-mode* 'menu)) + (cond + ((cpad-pressed? 0 left) (cpad-clear! 0 left) (-! (-> lst selection) 1) (set! need-update #t)) + ((cpad-pressed? 0 right) (cpad-clear! 0 right) (+! (-> lst selection) 1) (set! need-update #t))) + (cond + ((< (-> lst selection) 0) (set! (-> lst selection) (1- (atx-list-size lst)))) + ((>= (-> lst selection) (atx-list-size lst)) (set! (-> lst selection) 0))) + (when need-update + ((-> lst func) (atx-list-get-by-index lst (-> lst selection))) + (set! need-update #f))) + (suspend)))) + :post + (behavior () + (when (-> self cur-joint-geo) (ja-post) (when (!= *master-mode* 'menu) - (when (logtest? (-> *ATX-settings* flags) (atx-flags show-joints)) - (draw-joint-spheres self) - ) - (format *stdcon* "~%~%") - (debug-print-channels (-> self skel) (the-as symbol *stdcon*)) - ) - ) - ) - - ) - - + (when (logtest? (-> *ATX-settings* flags) (atx-flags show-joints)) + (draw-joint-spheres self)) + (format *stdcon* "~%~%") + (debug-print-channels (-> self skel) (the-as symbol *stdcon*)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; helper functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defbehavior anim-tester-x-init-by-other anim-tester-x () "external initializer for anim-tester-x process" - (logclear! (-> self mask) (process-mask menu)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self draw) (new 'process 'draw-control self (the art-joint-geo #f))) @@ -601,122 +403,72 @@ (position-in-front-of-camera! (-> self root trans) (meters 10) (meters 1)) (anim-tester-x-reset) (go anim-tester-x-process) - (none) - ) - + (none)) (defun atx-stop () "kill the anim tester process" - (kill-by-type anim-tester-x *default-pool*) (set! *camera-read-buttons* #t) (set! *atx* (the (pointer anim-tester-x) #f))) (defun atx-start () "start the anim tester process" - (when *atx* - (atx-stop) - ) - - (if *target* - (stop 'play)) + (atx-stop)) + (if *target* (stop 'play)) (set! *atx* (process-spawn anim-tester-x :from *pc-dead-pool*)) (set! *camera-orbit-target* *atx*) - (send-event *camera* 'change-state cam-free-floating 0) - ) - + (send-event *camera* 'change-state cam-free-floating 0)) (defun atx-add-new-art-group ((ag art-group)) - - (let ((ag-item (the atx-item-art-group (atx-list-append (-> *ATX-settings* list-ctrl) - (new 'debug 'atx-item-art-group (-> ag name) ag))))) + (let ((ag-item (the atx-item-art-group (atx-list-append (-> *ATX-settings* list-ctrl) (new 'debug 'atx-item-art-group (-> ag name) ag))))) (dotimes (i (-> ag length)) (when (-> ag data i) (case (-> ag data i type) - ((art-joint-geo) (atx-list-append (-> ag-item jg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ((merc-ctrl) (atx-list-append (-> ag-item mg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ((art-joint-anim) (atx-list-append (-> ag-item ja-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ) - ) - ) - ag-item) - ) + ((art-joint-geo) (atx-list-append (-> ag-item jg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) + ((merc-ctrl) (atx-list-append (-> ag-item mg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) + ((art-joint-anim) (atx-list-append (-> ag-item ja-list) (new 'debug 'atx-item (-> ag name) (-> ag data i))))))) + ag-item)) (defun atx-add-group ((name string) (level-name symbol)) - (protect ((-> *level* log-in-level-bsp)) - (set! (-> *level* log-in-level-bsp) (aif (level-get *level* level-name) (-> it bsp))) - (let ((ag (load-to-heap-by-name (-> *level* level-default art-group) name #t debug 0))) - (cond - (ag - (if (not *atx*) (atx-start)) - - (atx-add-new-art-group ag) - ) - (else - (format #t "ERROR: no art-group ~A~%" name) - ) - ) - )) + (set! (-> *level* log-in-level-bsp) (aif (level-get *level* level-name) (-> it bsp))) + (let ((ag (load-to-heap-by-name (-> *level* level-default art-group) name #t debug 0))) + (cond + (ag (if (not *atx*) (atx-start)) (atx-add-new-art-group ag)) + (else (format #t "ERROR: no art-group ~A~%" name))))) 0) (defun atx-append-group ((append-to string) (name string) (level-name symbol)) - (protect ((-> *level* log-in-level-bsp)) - (set! (-> *level* log-in-level-bsp) (aif (level-get *level* level-name) (-> it bsp))) - (let ((ag (load-to-heap-by-name (-> *level* level-default art-group) name #t debug 0))) - (cond - (ag - (if (not *atx*) (atx-start)) - - (let ((ag-item (the atx-item-art-group (atx-list-get-by-name (-> *ATX-settings* list-ctrl) append-to)))) - (when (not ag-item) - (format #t "ERROR: art-group ~A not loaded~%" append-to) - (return #f) - ) - (dotimes (i (-> ag length)) - (when (-> ag data i) - (case (-> ag data i type) - ((art-joint-geo) (atx-list-append (-> ag-item jg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ((merc-ctrl) (atx-list-append (-> ag-item mg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ((art-joint-anim) (atx-list-append (-> ag-item ja-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ) - ) - )) - ) - (else - (format #t "ERROR: no art-group ~A~%" name) - ) - ) - )) + (set! (-> *level* log-in-level-bsp) (aif (level-get *level* level-name) (-> it bsp))) + (let ((ag (load-to-heap-by-name (-> *level* level-default art-group) name #t debug 0))) + (cond + (ag + (if (not *atx*) (atx-start)) + (let ((ag-item (the atx-item-art-group (atx-list-get-by-name (-> *ATX-settings* list-ctrl) append-to)))) + (when (not ag-item) + (format #t "ERROR: art-group ~A not loaded~%" append-to) + (return #f)) + (dotimes (i (-> ag length)) + (when (-> ag data i) + (case (-> ag data i type) + ((art-joint-geo) (atx-list-append (-> ag-item jg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) + ((merc-ctrl) (atx-list-append (-> ag-item mg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) + ((art-joint-anim) (atx-list-append (-> ag-item ja-list) (new 'debug 'atx-item (-> ag name) (-> ag data i))))))))) + (else (format #t "ERROR: no art-group ~A~%" name))))) 0) (defun atx-add-level-group () - (if (not *atx*) (atx-start)) - (do-atx-list (item (-> *ATX-settings* list-ctrl)) - (dotimes (i (-> *level* length)) - (when (and (>= (-> item group) (-> *level* level i heap base)) (< (-> item group) (-> *level* level i heap top))) - (atx-list-remove (-> *ATX-settings* list-ctrl) item) - (set! i (-> *level* length)) - )) - ) + (dotimes (i (-> *level* length)) + (when (and (>= (-> item group) (-> *level* level i heap base)) (< (-> item group) (-> *level* level i heap top))) + (atx-list-remove (-> *ATX-settings* list-ctrl) item) + (set! i (-> *level* length))))) (dotimes (i (-> *level* length)) - (doarray (ag (-> *level* level i art-group data-array)) - (atx-add-new-art-group (the art-group ag)) - ) - ) - ) + (doarray (ag (-> *level* level i art-group data-array)) (atx-add-new-art-group (the art-group ag))))) (defun atx-add-common-group () - (if (not *atx*) (atx-start)) - (doarray (ag (-> *level* level (-> *level* length) art-group data-array)) - (atx-add-new-art-group (the art-group ag)) - ) - ) - - - + (doarray (ag (-> *level* level (-> *level* length) art-group data-array)) (atx-add-new-art-group (the art-group ag)))) diff --git a/goal_src/jak1/pc/debug/default-menu-pc.gc b/goal_src/jak1/pc/debug/default-menu-pc.gc index d92a80bf3a..648be74180 100644 --- a/goal_src/jak1/pc/debug/default-menu-pc.gc +++ b/goal_src/jak1/pc/debug/default-menu-pc.gc @@ -1,6 +1,5 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/debug/menu.gc") (require "pc/progress-pc.gc") (require "engine/debug/part-tester.gc") @@ -8,190 +7,129 @@ (require "pc/debug/entity-debug.gc") (require "pc/debug/anim-tester-x.gc") - -#| - - Extra debug menus for PC port. - -|# +#| Extra debug menus for PC port. |# (declare-file (debug)) (defmacro new-dm-func (text var func) - `(new 'debug 'debug-menu-item-function ,text ,var (the-as (function int object) ,func)) - ) + `(new 'debug 'debug-menu-item-function ,text ,var (the-as (function int object) ,func))) + (defmacro new-dm-flag (text var func) - `(new 'debug 'debug-menu-item-flag ,text ,var (the-as (function int debug-menu-msg object) ,func)) - ) + `(new 'debug 'debug-menu-item-flag ,text ,var (the-as (function int debug-menu-msg object) ,func))) + (defmacro new-dm-bool (text sym func) - `(new-dm-flag ,text (quote ,sym) ,func) - ) + `(new-dm-flag ,text (quote ,sym) ,func)) + (defmacro new-dm-submenu (text menu) - `(new 'debug 'debug-menu-item-submenu ,text ,menu) - ) + `(new 'debug 'debug-menu-item-submenu ,text ,menu)) + (defmacro new-dm-var-float (text var func inc min max) `(debug-menu-item-var-make-float (new 'debug 'debug-menu-item-var ,text ,var (* 8 20)) - (the-as (function int debug-menu-msg float float float) ,func) - ,inc #t ,min ,max 1) - ) + (the-as (function int debug-menu-msg float float float) ,func) + ,inc + #t + ,min + ,max + 1)) (defun dm-want-level-toggle-pick-func ((arg0 pair) (arg1 debug-menu-msg)) (let* ((levname (the-as symbol (car arg0))) - (info (the-as level-load-info (-> levname value))) - (idx (the int (cdr arg0))) - (the-level (level-get *level* (-> info name))) - ) - (if (and the-level (!= the-level (-> *level* level idx))) - (return 'invalid) - ) + (info (the-as level-load-info (-> levname value))) + (idx (the int (cdr arg0))) + (the-level (level-get *level* (-> info name)))) + (if (and the-level (!= the-level (-> *level* level idx))) (return 'invalid)) (if (= arg1 (debug-menu-msg press)) - (load-state-want-levels - (if (= idx 0) (-> info name) (-> *level* level 0 name)) - (if (= idx 1) (-> info name) (-> *level* level 1 name)) - ) - ) - (eq? (-> *level* level idx name) (-> info name)) - ) - ) + (load-state-want-levels (if (= idx 0) (-> info name) (-> *level* level 0 name)) + (if (= idx 1) (-> info name) (-> *level* level 1 name)))) + (eq? (-> *level* level idx name) (-> info name)))) (defun dm-display-level-toggle-pick-func ((arg0 symbol) (arg1 debug-menu-msg)) (let ((the-level (level-get *level* arg0))) - (if (not the-level) - (return 'invalid) - ) + (if (not the-level) (return 'invalid)) (if (= arg1 (debug-menu-msg press)) - (when the-level - (load-state-want-display-level arg0 - (if (-> the-level display?) #f 'display) - ) - ) - ) - (and the-level (-> the-level display?)) - ) - ) + (when the-level + (load-state-want-display-level arg0 (if (-> the-level display?) #f 'display)))) + (and the-level (-> the-level display?)))) (defun debug-menu-make-load-want-menu ((ctx debug-menu-context) (lev-idx int)) - (let ((want-menu (new 'debug 'debug-menu ctx "Level want menu"))) - - (let ((iter *level-load-list*)) - (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) - (debug-menu-append-item want-menu (new-dm-flag (symbol->string (the-as symbol (car iter))) (dcons (car iter) lev-idx) dm-want-level-toggle-pick-func)) - - (set! iter (cdr iter)) - ) - ) - - (new-dm-submenu (new 'debug 'string 0 (string-format "Want ~D" lev-idx)) want-menu) - ) - ) + (let ((iter *level-load-list*)) + (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) + (debug-menu-append-item want-menu + (new-dm-flag (symbol->string (the-as symbol (car iter))) (dcons (car iter) lev-idx) dm-want-level-toggle-pick-func)) + (set! iter (cdr iter)))) + (new-dm-submenu (new 'debug 'string 0 (string-format "Want ~D" lev-idx)) want-menu))) (defun debug-menu-make-load-display-menu ((ctx debug-menu-context)) - (let ((display-menu (new 'debug 'debug-menu ctx "Level display menu"))) - - (let ((iter *level-load-list*)) - (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) - (debug-menu-append-item display-menu (new-dm-flag (symbol->string (the-as symbol (car iter))) (car iter) dm-display-level-toggle-pick-func)) - - (set! iter (cdr iter)) - ) - ) - - (new-dm-submenu "Display" display-menu) - ) - ) + (let ((iter *level-load-list*)) + (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) + (debug-menu-append-item display-menu + (new-dm-flag (symbol->string (the-as symbol (car iter))) (car iter) dm-display-level-toggle-pick-func)) + (set! iter (cdr iter)))) + (new-dm-submenu "Display" display-menu))) (defun debug-menu-make-load-teleport-menu ((ctx debug-menu-context)) - (let ((teleport-menu (new 'debug 'debug-menu ctx "Camera teleport menu"))) - - (let ((iter *level-load-list*)) - (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) - (debug-menu-append-item teleport-menu - (new-dm-func (symbol->string (the-as symbol (car iter))) - (-> (the-as symbol (car iter)) value) - (lambda ((info level-load-info)) - (let ((tf (new 'stack-no-clear 'transformq))) - (set! (-> tf trans x) (-> info bsphere x)) - (set! (-> tf trans y) (-> info bsphere y)) - (set! (-> tf trans z) (-> info bsphere z)) - (quaternion-identity! (-> tf quat)) - (vector-identity! (-> tf scale)) - (send-event *camera* 'teleport-to-transformq tf) - ) - ) - )) - - (set! iter (cdr iter)) - ) - ) - - (new-dm-submenu "Camera teleport" teleport-menu) - ) - ) + (let ((iter *level-load-list*)) + (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) + (debug-menu-append-item teleport-menu + (new-dm-func (symbol->string (the-as symbol (car iter))) + (-> (the-as symbol (car iter)) value) + (lambda ((info level-load-info)) + (let ((tf (new 'stack-no-clear 'transformq))) + (set! (-> tf trans x) (-> info bsphere x)) + (set! (-> tf trans y) (-> info bsphere y)) + (set! (-> tf trans z) (-> info bsphere z)) + (quaternion-identity! (-> tf quat)) + (vector-identity! (-> tf scale)) + (send-event *camera* 'teleport-to-transformq tf))))) + (set! iter (cdr iter)))) + (new-dm-submenu "Camera teleport" teleport-menu))) (defun 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-bool "Level Border" *display-level-border* dm-boolean-toggle-pick-func)) - (debug-menu-append-item load-menu (debug-menu-make-from-template ctx '(flag - "border-mode" - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default border-mode) (not (-> *setting-control* default border-mode))) - ) - (-> *setting-control* default border-mode) - ) - ))) - - (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) - ) - ) + (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-from-template ctx + '(flag "border-mode" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (if (= arg1 (debug-menu-msg press)) + (set! (-> *setting-control* default border-mode) (not (-> *setting-control* default border-mode)))) + (-> *setting-control* default border-mode))))) + (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))) (define *part-pick-menu* (the-as debug-menu #f)) + (define *spawn-part-test* #t) (defun dm-part-pick-func ((id int) (msg debug-menu-msg)) - (if (zero? (-> *part-group-id-table* id)) - (return 'invalid)) + (if (zero? (-> *part-group-id-table* id)) (return 'invalid)) (when (= msg (debug-menu-msg press)) (set! *part-tester-id* id) - (if *spawn-part-test* - (start-part) - ) - ) - (= *part-tester-id* id) - ) + (if *spawn-part-test* (start-part))) + (= *part-tester-id* id)) (defun build-particles-list () (debug-menu-remove-all-items *part-pick-menu*) (dotimes (i (-> *part-group-id-table* length)) (let ((part (-> *part-group-id-table* i))) (when (and (nonzero? part)) - (debug-menu-append-item *part-pick-menu* (new-dm-flag (-> part name) i dm-part-pick-func)) - ) - ) - ) - (set! (-> *part-pick-menu* items) (sort (-> *part-pick-menu* items) debug-menu-node part name) i dm-part-pick-func))))) + (set! (-> *part-pick-menu* items) (sort (-> *part-pick-menu* items) debug-menu-node *entity-debug-inspect* entity) e) (set-entity! *entity-debug-inspect* (the entity #f)) - (set-entity! *entity-debug-inspect* e)) - ) - (= (-> *entity-debug-inspect* entity) e) - ) + (set-entity! *entity-debug-inspect* e))) + (= (-> *entity-debug-inspect* entity) e)) (defun build-entity-list () "Fill the entity pick menu" @@ -217,113 +153,74 @@ (when (nonzero? s3-0) (dotimes (s2-0 (-> s3-0 length)) (let ((s1-0 (-> s3-0 data s2-0 actor))) - (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-0 'name string) s1-0 dm-entity-pick-func)) - ) - ) - ) - ) + (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-0 'name string) s1-0 dm-entity-pick-func)))))) ;; ambients entities (let ((s3-1 (-> s4-0 bsp ambients))) (when (nonzero? s3-1) (dotimes (s2-1 (-> s3-1 length)) (let ((s1-1 (-> s3-1 data s2-1 ambient))) - (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-1 'name string) s1-1 dm-entity-pick-func)) - ) - ) - ) - ) + (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-1 'name string) s1-1 dm-entity-pick-func)))))) ;; camera entities (let ((s4-1 (-> s4-0 bsp cameras))) (when (nonzero? s4-1) (dotimes (s3-2 (-> s4-1 length)) (let ((s2-2 (-> s4-1 s3-2))) - (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s2-2 'name string) s2-2 dm-entity-pick-func)) - ) - ) - ) - ) - ) - ) - ) - (set! (-> *entity-pick-menu* items) (sort (-> *entity-pick-menu* items) debug-menu-node *entity-pick-menu* items) (sort (-> *entity-pick-menu* items) debug-menu-node *entity-debug-inspect* entity) (return #f)) - (let ((tf (new 'stack 'transformq))) - (vector-copy! (-> tf trans) (-> *entity-debug-inspect* entity trans)) - (quaternion-identity! (-> tf quat)) - (vector-identity! (-> tf scale)) - (send-event *camera* 'teleport-to-transformq tf) - )))) - (debug-menu-append-item entity-menu (new-dm-func "Print entity info" #t dm-display-entities-pick-func)) - (debug-menu-append-item entity-menu (new-dm-func "Print entity info (ag)" 'art-group dm-display-entities-pick-func)) - (debug-menu-append-item entity-menu (new-dm-func "Print entity info (meters)" 'entity-meters dm-display-entities-pick-func)) - (debug-menu-append-item entity-menu (new-dm-func "Print entity info (perm)" 'entity-perm dm-display-entities-pick-func)) - - (new-dm-submenu "Entity" entity-menu) - ) - ) + (let ((pick-menu (new 'debug 'debug-menu ctx "Pick entity menu"))) + (set! *entity-pick-menu* pick-menu) + (debug-menu-append-item entity-menu (new-dm-submenu "Pick Entity" pick-menu))) + (debug-menu-append-item entity-menu (new-dm-func "Refresh" #f build-entity-list)) + (debug-menu-append-item entity-menu + (new-dm-func "Go to entity" + #f + (lambda () + (unless (-> *entity-debug-inspect* entity) + (return #f)) + (let ((tf (new 'stack 'transformq))) + (vector-copy! (-> tf trans) (-> *entity-debug-inspect* entity trans)) + (quaternion-identity! (-> tf quat)) + (vector-identity! (-> tf scale)) + (send-event *camera* 'teleport-to-transformq tf))))) + (debug-menu-append-item entity-menu (new-dm-func "Print entity info" #t dm-display-entities-pick-func)) + (debug-menu-append-item entity-menu (new-dm-func "Print entity info (ag)" 'art-group dm-display-entities-pick-func)) + (debug-menu-append-item entity-menu + (new-dm-func "Print entity info (meters)" 'entity-meters dm-display-entities-pick-func)) + (debug-menu-append-item entity-menu (new-dm-func "Print entity info (perm)" 'entity-perm dm-display-entities-pick-func)) + (new-dm-submenu "Entity" entity-menu))) (defmacro dm-lambda-boolean-flag (val) "helper macro for making boolean buttons that don't just access symbols directly" `,(lambda (arg (msg debug-menu-msg)) - (if (= msg (debug-menu-msg press)) - (not! ,val) - ) - ,val) - ) + (if (= msg (debug-menu-msg press)) (not! ,val)) + ,val)) (defmacro dm-lambda-int-var (val) "helper macro for making int buttons" `,(lambda (arg (msg debug-menu-msg) (newval int)) (cond - ((= msg (debug-menu-msg press)) - (set! ,val newval) - ) - (else - ,val - ) - )) - ) + ((= msg (debug-menu-msg press)) (set! ,val newval)) + (else ,val)))) (defmacro dm-lambda-float-var (val) "helper macro for making float buttons" `(lambda (arg (msg debug-menu-msg) (newval float)) (cond - ((= msg (debug-menu-msg press)) - (set! ,val newval) - ) - (else - ,val - ) - )) - ) + ((= msg (debug-menu-msg press)) (set! ,val newval)) + (else ,val)))) (defmacro dm-lambda-meters-var (val) "helper macro for making meters buttons" `,(lambda (arg (msg debug-menu-msg) (newval float)) (cond - ((= msg (debug-menu-msg press)) - (set! ,val (meters newval)) - ) - (else - (* (1/ METER_LENGTH) ,val) - ) - )) - ) + ((= msg (debug-menu-msg press)) (set! ,val (meters newval))) + (else (* (1/ METER_LENGTH) ,val))))) (defun dm-toggle-collision-pick-func ((arg symbol) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) @@ -331,107 +228,88 @@ ((-> arg value) (false! (-> arg value)) (logior! *vu1-enable-user-menu* (vu1-renderer-mask tfrag trans-tfrag tie tie-near)) - (true! *generic-tie*) - ) + (true! *generic-tie*)) (else (true! (-> arg value)) (logclear! *vu1-enable-user-menu* (vu1-renderer-mask tfrag trans-tfrag tie tie-near)) - (false! *generic-tie*) - ) - ) - ) - (-> arg value) - ) + (false! *generic-tie*)))) + (-> arg value)) (defun dm-collision-mode-pick-func ((arg pc-collision-mode) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (set! *collision-mode* arg) - ) - (= *collision-mode* arg) - ) + (set! *collision-mode* arg)) + (= *collision-mode* arg)) (defun dm-collision-filter-mode-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode mode) arg (not (pc-get-collision-mask (pc-collision-mode mode) arg))) - ) - (pc-get-collision-mask (pc-collision-mode mode) arg) - ) + (pc-set-collision-mask (pc-collision-mode mode) arg (not (pc-get-collision-mask (pc-collision-mode mode) arg)))) + (pc-get-collision-mask (pc-collision-mode mode) arg)) (defun dm-collision-filter-event-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode event) arg (not (pc-get-collision-mask (pc-collision-mode event) arg))) - ) - (pc-get-collision-mask (pc-collision-mode event) arg) - ) + (pc-set-collision-mask (pc-collision-mode event) arg (not (pc-get-collision-mask (pc-collision-mode event) arg)))) + (pc-get-collision-mask (pc-collision-mode event) arg)) (defun dm-collision-filter-material-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode material) arg (not (pc-get-collision-mask (pc-collision-mode material) arg))) - ) - (pc-get-collision-mask (pc-collision-mode material) arg) - ) + (pc-set-collision-mask (pc-collision-mode material) arg (not (pc-get-collision-mask (pc-collision-mode material) arg)))) + (pc-get-collision-mask (pc-collision-mode material) arg)) (defun dm-collision-filter-skip-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode skip) arg (not (pc-get-collision-mask (pc-collision-mode skip) arg))) - ) - (pc-get-collision-mask (pc-collision-mode skip) arg) - ) + (pc-set-collision-mask (pc-collision-mode skip) arg (not (pc-get-collision-mask (pc-collision-mode skip) arg)))) + (pc-get-collision-mask (pc-collision-mode skip) arg)) (defun dm-collision-filter-skiphide-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode skiphide) arg (not (pc-get-collision-mask (pc-collision-mode skiphide) arg))) - ) - (pc-get-collision-mask (pc-collision-mode skiphide) arg) - ) + (pc-set-collision-mask (pc-collision-mode skiphide) arg (not (pc-get-collision-mask (pc-collision-mode skiphide) arg)))) + (pc-get-collision-mask (pc-collision-mode skiphide) arg)) (defun debug-menu-make-collision-renderer-menu ((ctx debug-menu-context)) (let ((menu (new 'debug 'debug-menu ctx "Collision renderer menu"))) - ;; master toggle - (debug-menu-append-item menu (new-dm-bool "Enable" *collision-renderer* dm-toggle-collision-pick-func)) - (debug-menu-append-item menu (new-dm-bool "Wireframe" *collision-wireframe* dm-boolean-toggle-pick-func)) - (debug-menu-append-item menu (new-dm-submenu "Mode" - (let ((mode-menu (new 'debug 'debug-menu ctx "Collision renderer mode menu"))) - (debug-menu-append-item mode-menu (new-dm-flag "none" (pc-collision-mode none) dm-collision-mode-pick-func)) - (debug-menu-append-item mode-menu (new-dm-flag "mode" (pc-collision-mode mode) dm-collision-mode-pick-func)) - (debug-menu-append-item mode-menu (new-dm-flag "event" (pc-collision-mode event) dm-collision-mode-pick-func)) - (debug-menu-append-item mode-menu (new-dm-flag "material" (pc-collision-mode material) dm-collision-mode-pick-func)) - mode-menu))) - (debug-menu-append-item menu (new-dm-submenu "Filter mode" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter mode menu"))) - (doenum (name val pat-mode) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-mode-pick-func)) - ) - filter-menu))) - (debug-menu-append-item menu (new-dm-submenu "Filter event" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter event menu"))) - (doenum (name val pat-event) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-event-pick-func)) - ) - filter-menu))) - (debug-menu-append-item menu (new-dm-submenu "Filter material" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter material menu"))) - (doenum (name val pat-material) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-material-pick-func)) - ) - filter-menu))) - (debug-menu-append-item menu (new-dm-submenu "Filter skip" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer hide skip menu"))) - (debug-menu-append-item filter-menu (new-dm-flag "(no skip)" -1 dm-collision-filter-skip-pick-func)) - (doenum (name val pc-pat-skip-hack) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-skip-pick-func)) - ) - filter-menu))) - (debug-menu-append-item menu (new-dm-submenu "Hide skip" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer hide skip menu"))) - (doenum (name val pc-pat-skip-hack) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-skiphide-pick-func)) - ) - filter-menu))) - - (new-dm-submenu "Collision renderer" menu) - ) - ) + ;; master toggle + (debug-menu-append-item menu (new-dm-bool "Enable" *collision-renderer* dm-toggle-collision-pick-func)) + (debug-menu-append-item menu (new-dm-bool "Wireframe" *collision-wireframe* dm-boolean-toggle-pick-func)) + (debug-menu-append-item menu + (new-dm-submenu "Mode" + (let ((mode-menu (new 'debug 'debug-menu ctx "Collision renderer mode menu"))) + (debug-menu-append-item mode-menu (new-dm-flag "none" (pc-collision-mode none) dm-collision-mode-pick-func)) + (debug-menu-append-item mode-menu (new-dm-flag "mode" (pc-collision-mode mode) dm-collision-mode-pick-func)) + (debug-menu-append-item mode-menu (new-dm-flag "event" (pc-collision-mode event) dm-collision-mode-pick-func)) + (debug-menu-append-item mode-menu (new-dm-flag "material" (pc-collision-mode material) dm-collision-mode-pick-func)) + mode-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Filter mode" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter mode menu"))) + (doenum (name val pat-mode) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-mode-pick-func))) + filter-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Filter event" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter event menu"))) + (doenum (name val pat-event) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-event-pick-func))) + filter-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Filter material" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter material menu"))) + (doenum (name val pat-material) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-material-pick-func))) + filter-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Filter skip" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer hide skip menu"))) + (debug-menu-append-item filter-menu (new-dm-flag "(no skip)" -1 dm-collision-filter-skip-pick-func)) + (doenum (name val pc-pat-skip-hack) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-skip-pick-func))) + filter-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Hide skip" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer hide skip menu"))) + (doenum (name val pc-pat-skip-hack) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-skiphide-pick-func))) + filter-menu))) + (new-dm-submenu "Collision renderer" menu))) (defun dm-lod-int ((arg0 int) (arg1 debug-menu-msg) (arg2 int) (arg3 int)) (when (= arg1 (debug-menu-msg press)) @@ -439,80 +317,57 @@ ((0) (set! (-> *pc-settings* lod-force-tfrag) arg2)) ((1) (set! (-> *pc-settings* lod-force-tie) arg2)) ((2) (set! (-> *pc-settings* lod-force-ocean) arg2)) - ((3) (set! (-> *pc-settings* lod-force-actor) arg2)) - ) - ) + ((3) (set! (-> *pc-settings* lod-force-actor) arg2)))) (case (/ arg0 8) ((0) (-> *pc-settings* lod-force-tfrag)) ((1) (-> *pc-settings* lod-force-tie)) ((2) (-> *pc-settings* lod-force-ocean)) ((3) (-> *pc-settings* lod-force-actor)) - (else arg3) - ) - ) + (else arg3))) (defun dm-subtitle-language ((blang int) (msg debug-menu-msg)) (let ((lang (the pc-language (/ blang 8)))) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* subtitle-language) lang)) - (= (-> *pc-settings* subtitle-language) lang) - ) - ) + (= (-> *pc-settings* subtitle-language) lang))) (defun dm-text-language ((blang int) (msg debug-menu-msg)) (let ((lang (the pc-language (/ blang 8)))) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* text-language) lang)) - (= (-> *pc-settings* text-language) lang) - ) - ) + (= (-> *pc-settings* text-language) lang))) (defun dm-subtitle-setting ((setting symbol) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* subtitle-speaker?) setting)) - (= (-> *pc-settings* subtitle-speaker?) setting) - ) + (= (-> *pc-settings* subtitle-speaker?) setting)) (defun dm-mood-override-palette-pick-func ((bpal int) (msg debug-menu-msg)) (let* ((pal (/ bpal 8)) (cur-val (-> *mood-override-table* pal))) - - (when (= msg (debug-menu-msg press)) - (set! (-> *mood-override-table* pal) (if (= cur-val 0.0) 1.0 0.0)) - - (when (not (= 'mult *mood-override-debug*)) - (set! *mood-override-debug* #f) - (dotimes (i 8) - (if (!= (-> *mood-override-table* i) 0.0) - (set! *mood-override-debug* 'copy))) - )) - - (= (-> *mood-override-table* pal) 1.0) - ) - ) + (when (= msg (debug-menu-msg press)) + (set! (-> *mood-override-table* pal) (if (= cur-val 0.0) 1.0 0.0)) + (when (not (= 'mult *mood-override-debug*)) + (set! *mood-override-debug* #f) + (dotimes (i 8) + (if (!= (-> *mood-override-table* i) 0.0) (set! *mood-override-debug* 'copy))))) + (= (-> *mood-override-table* pal) 1.0))) (defun dm-mood-override-pick-func ((kind symbol) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (if (= kind *mood-override-debug*) - (set! *mood-override-debug* #f) - (set! *mood-override-debug* kind))) - (= kind *mood-override-debug*) - ) + (if (= kind *mood-override-debug*) (set! *mood-override-debug* #f) (set! *mood-override-debug* kind))) + (= kind *mood-override-debug*)) (defun dm-mood-palette-float ((pal int) (arg1 debug-menu-msg) (newval float) (val float)) (when (= arg1 (debug-menu-msg press)) (set! (-> *mood-override-table* (/ pal 8)) newval)) - (-> *mood-override-table* (/ pal 8)) - ) + (-> *mood-override-table* (/ pal 8))) (defun dm-anim-tester-x-flag-func ((action symbol) (msg debug-menu-msg)) (case action (('at-show-joint-info) - (if (= msg (debug-menu-msg press)) - (logxor! (-> *ATX-settings* flags) (atx-flags show-joints))) - (return (logtest? (-> *ATX-settings* flags) (atx-flags show-joints))) - ) - ) + (if (= msg (debug-menu-msg press)) (logxor! (-> *ATX-settings* flags) (atx-flags show-joints))) + (return (logtest? (-> *ATX-settings* flags) (atx-flags show-joints))))) #f) (defun dm-anim-tester-x-refresh () @@ -520,475 +375,400 @@ (atx-list-init! (-> *ATX-settings* list-ctrl)) (set! (-> *ATX-settings* list-ctrl func) atx-list-art-group-func) (atx-add-common-group) - (atx-add-level-group) -) + (atx-add-level-group)) (defun dm-anim-tester-x-func ((action symbol)) (unless *atx* - (atx-start)) - + (atx-start)) (case action - (('pick-art-group) - (set! (-> *atx* 0 edit-mode) (atx-edit-mode art-group)) - (false! *camera-read-buttons*) - ) + (('pick-art-group) (set! (-> *atx* 0 edit-mode) (atx-edit-mode art-group)) (false! *camera-read-buttons*)) (('at-pick-joint-anim) (when (-> *atx* 0 cur-art-group) (set! (-> *atx* 0 edit-mode) (atx-edit-mode anim)) - (false! *camera-read-buttons*) - ) - ) + (false! *camera-read-buttons*))) (('pick-mesh-geo) (when (-> *atx* 0 cur-art-group) (set! (-> *atx* 0 edit-mode) (atx-edit-mode mgeo)) - (false! *camera-read-buttons*) - ) - ) + (false! *camera-read-buttons*))) (('pick-joint-geo) (when (-> *atx* 0 cur-art-group) (set! (-> *atx* 0 edit-mode) (atx-edit-mode jgeo)) - (false! *camera-read-buttons*) - ) - ) - (('at-cam-free-floating) - (send-event *camera* 'change-state cam-free-floating 0) - ) - (('at-cam-orbit) - (send-event *camera* 'change-state cam-orbit 0) - ) - ) + (false! *camera-read-buttons*))) + (('at-cam-free-floating) (send-event *camera* 'change-state cam-free-floating 0)) + (('at-cam-orbit) (send-event *camera* 'change-state cam-orbit 0))) 0) (defun debug-menu-make-anim-tester-x-menu ((ctx debug-menu-context)) (let ((menu (new 'debug 'debug-menu ctx "Anim Tester X menu"))) - ;; master toggle - (debug-menu-append-item menu (new-dm-func "Start" #f atx-start)) - (debug-menu-append-item menu (new-dm-func "Stop" #f atx-stop)) - (debug-menu-append-item menu (new-dm-var-float "Speed" (the int #f) (dm-lambda-float-var (-> *ATX-settings* speed)) 0.01 -10.0 10.0)) - (debug-menu-append-item menu (new-dm-var-float "Frame Num" (the int #f) (dm-lambda-float-var (-> *ATX-settings* frame-num)) 0.1 0.0 99999.0)) - (debug-menu-append-item menu (new-dm-func "Refresh" #f dm-anim-tester-x-refresh)) - (debug-menu-append-item menu (new-dm-func "Pick Art Group" 'pick-art-group dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-func "Pick Anim" 'at-pick-joint-anim dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-func "Pick Mesh" 'pick-mesh-geo dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-func "Pick Skeleton" 'pick-joint-geo dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-flag "Show Joint Info" 'at-show-joint-info dm-anim-tester-x-flag-func)) - (debug-menu-append-item menu (new-dm-func "Free Floating cam" 'at-cam-free-floating dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-func "Orbit cam" 'at-cam-orbit dm-anim-tester-x-func)) - - (new-dm-submenu "Anim Tester X" menu) - ) - ) + ;; master toggle + (debug-menu-append-item menu (new-dm-func "Start" #f atx-start)) + (debug-menu-append-item menu (new-dm-func "Stop" #f atx-stop)) + (debug-menu-append-item menu + (new-dm-var-float "Speed" (the int #f) (dm-lambda-float-var (-> *ATX-settings* speed)) 0.01 -10.0 10.0)) + (debug-menu-append-item menu + (new-dm-var-float "Frame Num" (the int #f) (dm-lambda-float-var (-> *ATX-settings* frame-num)) 0.1 0.0 99999.0)) + (debug-menu-append-item menu (new-dm-func "Refresh" #f dm-anim-tester-x-refresh)) + (debug-menu-append-item menu (new-dm-func "Pick Art Group" 'pick-art-group dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-func "Pick Anim" 'at-pick-joint-anim dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-func "Pick Mesh" 'pick-mesh-geo dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-func "Pick Skeleton" 'pick-joint-geo dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-flag "Show Joint Info" 'at-show-joint-info dm-anim-tester-x-flag-func)) + (debug-menu-append-item menu (new-dm-func "Free Floating cam" 'at-cam-free-floating dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-func "Orbit cam" 'at-cam-orbit dm-anim-tester-x-func)) + (new-dm-submenu "Anim Tester X" menu))) (defun dm-music-player-func ((lst object)) (kill-by-name 'dm-player *active-pool*) (set! *progress-flava* -1) - (process-spawn-function process :name 'dm-player + (process-spawn-function process + :name 'dm-player (lambda :behavior process ((lst pair)) (loop (suspend) (set-setting! 'music (the-as symbol (car lst)) 0.0 0) - (set! *progress-flava* (the-as int (cdr lst))) - ) - ) - lst - ) - ) + (set! *progress-flava* (the-as int (cdr lst))))) + lst)) (defun debug-menu-make-music-player-menu ((ctx debug-menu-context)) - (let ((music-menu (new 'debug 'debug-menu ctx "Music player menu"))) - (dotimes (i (-> *music-flava-name-list* length)) - (let* ((flava-list (-> *music-flava-name-list* i)) - (level-name (new 'debug 'string 30 (text-id->string (-> flava-list 0)))) - (lvl-menu (new 'debug 'debug-menu ctx (the-as string #f))) - ) - (dotimes (j (-> flava-list length)) - (let ((flava-name (new 'debug 'string 30 (text-id->string (-> flava-list j))))) - (when (and (string= (substring! *temp-string* level-name (- (length level-name) 11) (length level-name)) "-level-name") - (string= (substring! *temp-string* flava-name (- (length flava-name) 11) (length flava-name)) "-level-name")) - (copy-string<-string flava-name (symbol->string (ref *music-list* i))) - ) - (unless (string= flava-name "zero") - (debug-menu-append-item lvl-menu (new-dm-func flava-name (dcons (ref *music-list* i) j) dm-music-player-func)) - ) - ) - ) - (let ((menu-name (new 'debug 'string 30 (symbol->string (ref *music-list* i))))) - (debug-menu-append-item music-menu (new-dm-submenu menu-name lvl-menu)) - ) - ) - ) - (debug-menu-append-item music-menu (new-dm-func "Reset" #f (lambda () (kill-by-name 'dm-player *active-pool*) (set! *progress-flava* -1)))) - (new-dm-submenu "Music player" music-menu) - ) - ) + (let ((music-menu (new 'debug 'debug-menu ctx "Music player menu"))) + (dotimes (i (-> *music-flava-name-list* length)) + (let* ((flava-list (-> *music-flava-name-list* i)) + (level-name (new 'debug 'string 30 (text-id->string (-> flava-list 0)))) + (lvl-menu (new 'debug 'debug-menu ctx (the-as string #f)))) + (dotimes (j (-> flava-list length)) + (let ((flava-name (new 'debug 'string 30 (text-id->string (-> flava-list j))))) + (when (and (string= (substring! *temp-string* level-name (- (length level-name) 11) (length level-name)) "-level-name") + (string= (substring! *temp-string* flava-name (- (length flava-name) 11) (length flava-name)) "-level-name")) + (copy-string<-string flava-name (symbol->string (ref *music-list* i)))) + (unless (string= flava-name "zero") + (debug-menu-append-item lvl-menu (new-dm-func flava-name (dcons (ref *music-list* i) j) dm-music-player-func))))) + (let ((menu-name (new 'debug 'string 30 (symbol->string (ref *music-list* i))))) + (debug-menu-append-item music-menu (new-dm-submenu menu-name lvl-menu))))) + (debug-menu-append-item music-menu + (new-dm-func "Reset" #f (lambda () (kill-by-name 'dm-player *active-pool*) (set! *progress-flava* -1)))) + (new-dm-submenu "Music player" music-menu))) (defun dm-frame-rate-pick-func ((bfps int) (msg debug-menu-msg)) (let ((fps (/ bfps 8))) - (when (= msg (debug-menu-msg press)) + (when (= msg (debug-menu-msg press)) (set-frame-rate! *pc-settings* fps #t)) - (= (-> *pc-settings* target-fps) fps))) + (= (-> *pc-settings* target-fps) fps))) (defun dm-msaa-pick-func ((bmsaa int) (msg debug-menu-msg)) (let ((msaa (/ bmsaa 8))) - (when (= msg (debug-menu-msg press)) + (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) msaa)) - (= (-> *pc-settings* gfx-msaa) msaa))) + (= (-> *pc-settings* gfx-msaa) msaa))) (defun dm-territory-pick-func ((bterr int) (msg debug-menu-msg)) (let ((terr (/ bterr 8))) - (when (= msg (debug-menu-msg press)) + (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* territory) terr)) - (= (-> *pc-settings* territory) terr))) + (= (-> *pc-settings* territory) terr))) (defun dm-pc-cheats-pick-func ((bcheat int) (msg debug-menu-msg)) (let ((cheat (the pc-cheats (/ bcheat 8)))) - (when (= msg (debug-menu-msg press)) - (logxor! (-> *pc-settings* cheats) cheat) - (cheats-sound-play (logtest? (-> *pc-settings* cheats) cheat)) - ) - (logtest? (-> *pc-settings* cheats) cheat))) + (when (= msg (debug-menu-msg press)) + (logxor! (-> *pc-settings* cheats) cheat) + (cheats-sound-play (logtest? (-> *pc-settings* cheats) cheat))) + (logtest? (-> *pc-settings* cheats) cheat))) (when (-> *debug-menu-context* root-menu) (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-load-menu *debug-menu-context*)) (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-part-menu *debug-menu-context*)) (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-entity-menu *debug-menu-context*)) ;; Scene menu TODO - (debug-menu-append-item (-> *debug-menu-context* root-menu) - (debug-menu-make-from-template *debug-menu-context* - '(menu "PC Settings" - (flag "Debug" #f ,(dm-lambda-boolean-flag (-> *pc-settings* debug?))) - (flag "Use native vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* use-vis?))) - (function "Toggle game aspect" #f ,(lambda () - (cond - ((= (-> *setting-control* default aspect-ratio) 'aspect4x3) - (set! (-> *setting-control* default aspect-ratio) 'aspect16x9) - ) - (else - (set! (-> *setting-control* default aspect-ratio) 'aspect4x3) - ) - ) - (set-aspect-ratio (-> *setting-control* default aspect-ratio)) - )) - (flag "Auto aspect" #f ,(dm-lambda-boolean-flag (-> *pc-settings* aspect-ratio-auto?))) - (menu "Aspect test" - (function "4 x 3" #f ,(lambda () (set-aspect! *pc-settings* 4 3))) - (function "16 x 9" #f ,(lambda () (set-aspect! *pc-settings* 16 9))) - (function "64 x 27 (21:9)" #f ,(lambda () (set-aspect! *pc-settings* 64 27))) - (function "16 x 10" #f ,(lambda () (set-aspect! *pc-settings* 16 10))) - (function "2 x 1" #f ,(lambda () (set-aspect! *pc-settings* 2 1))) - (function "37 x 20" #f ,(lambda () (set-aspect! *pc-settings* 37 20))) - (function "21 x 9" #f ,(lambda () (set-aspect! *pc-settings* 21 9))) - (function "64 x 18" #f ,(lambda () (set-aspect! *pc-settings* 64 18))) - (int-var "Custom aspect X" #f ,(dm-lambda-int-var (-> *pc-settings* aspect-custom-x)) 20 1 #t 1 1000) - (int-var "Custom aspect Y" #f ,(dm-lambda-int-var (-> *pc-settings* aspect-custom-y)) 20 1 #t 1 1000) - (function "Custom" #f ,(lambda () (set-aspect! *pc-settings* (-> *pc-settings* aspect-custom-x) (-> *pc-settings* aspect-custom-y)))) - ) - (menu "Fullscreen" - (function "Windowed" #f ,(lambda () (set-display-mode! *pc-settings* 'windowed #t))) - (function "Fullscreen" #f ,(lambda () (set-display-mode! *pc-settings* 'fullscreen #t))) - (function "Borderless" #f ,(lambda () (set-display-mode! *pc-settings* 'borderless #t))) - ) - (menu "Sizes" - (function "640 x 480" #f ,(lambda () (set-size! *pc-settings* 640 480 #t))) - (function "640 x 360" #f ,(lambda () (set-size! *pc-settings* 640 360 #t))) - (function "720 x 540" #f ,(lambda () (set-size! *pc-settings* 720 540 #t))) - (function "960 x 540" #f ,(lambda () (set-size! *pc-settings* 960 540 #t))) - (function "800 x 600" #f ,(lambda () (set-size! *pc-settings* 800 600 #t))) - (function "960 x 720" #f ,(lambda () (set-size! *pc-settings* 960 720 #t))) - (function "1280 x 720" #f ,(lambda () (set-size! *pc-settings* 1280 720 #t))) - (function "1024 x 768" #f ,(lambda () (set-size! *pc-settings* 1024 768 #t))) - (function "1366 x 768" #f ,(lambda () (set-size! *pc-settings* 1366 768 #t))) - (function "1280 x 960" #f ,(lambda () (set-size! *pc-settings* 1280 960 #t))) - (function "1440 x 1080" #f ,(lambda () (set-size! *pc-settings* 1440 1080 #t))) - (function "1920 x 1080" #f ,(lambda () (set-size! *pc-settings* 1920 1080 #t))) - (function "1920 x 1440" #f ,(lambda () (set-size! *pc-settings* 1920 1440 #t))) - (function "2560 x 1440" #f ,(lambda () (set-size! *pc-settings* 2560 1440 #t))) - (function "2880 x 2160" #f ,(lambda () (set-size! *pc-settings* 2880 2160 #t))) - (function "3840 x 2160" #f ,(lambda () (set-size! *pc-settings* 3840 2160 #t))) - (function "512 x 224" #f ,(lambda () (set-size! *pc-settings* 512 224 #t))) - (function "512 x 256" #f ,(lambda () (set-size! *pc-settings* 512 256 #t))) - (function "512 x 448" #f ,(lambda () (set-size! *pc-settings* 512 448 #t))) - (function "512 x 512" #f ,(lambda () (set-size! *pc-settings* 512 512 #t))) - ) - (menu "Secrets" - (menu "PC cheats" - (flag "Big head jak" (the binteger (pc-cheats big-head)) dm-pc-cheats-pick-func) - (flag "Small head jak" (the binteger (pc-cheats small-head)) dm-pc-cheats-pick-func) - (flag "Big fist jak" (the binteger (pc-cheats big-fist)) dm-pc-cheats-pick-func) - (flag "Big head npcs" (the binteger (pc-cheats big-head-npc)) dm-pc-cheats-pick-func) - (flag "Huge head jak" (the binteger (pc-cheats huge-head)) dm-pc-cheats-pick-func) - (flag "Mirrored mode" (the binteger (pc-cheats mirror)) dm-pc-cheats-pick-func) - (flag "Blue eco" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-green)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-blue) - ) - (pc-cheats? (-> *pc-settings* cheats) eco-blue))) - (flag "Red eco" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *pc-settings* cheats) (pc-cheats eco-blue eco-yellow eco-green)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-red) - ) - (pc-cheats? (-> *pc-settings* cheats) eco-red))) - (flag "Green eco" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-blue)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-green) - ) - (pc-cheats? (-> *pc-settings* cheats) eco-green))) - (flag "Yellow eco" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-blue eco-green)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-yellow) - ) - (pc-cheats? (-> *pc-settings* cheats) eco-yellow))) - (flag "Invincibility" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *target* state-flags) 16) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) invinc) - ) - (pc-cheats? (-> *pc-settings* cheats) invinc))) - (flag "Blue sidekick" (the binteger (pc-cheats sidekick-blue)) dm-pc-cheats-pick-func) - (flag "All flavas" (the binteger (pc-cheats tunes)) dm-pc-cheats-pick-func) - (flag "Real time tod" (the binteger (pc-cheats sky)) dm-pc-cheats-pick-func) - (flag "No textures" (the binteger (pc-cheats no-tex)) dm-pc-cheats-pick-func) - ;(flag "Hero mode" (the binteger (pc-cheats hero-mode)) dm-pc-cheats-pick-func) - ;(flag "Hard rats" (the binteger (pc-cheats hard-rats)) dm-pc-cheats-pick-func) - ) - ) - (flag "Letterbox" #f ,(dm-lambda-boolean-flag (-> *pc-settings* letterbox?))) - (flag "Skip movies" #f ,(dm-lambda-boolean-flag (-> *pc-settings* skip-movies?))) - (flag "Money starburst" #f ,(dm-lambda-boolean-flag (-> *pc-settings* money-starburst?))) - (flag "Subtitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* subtitles?))) - (flag "Hinttitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* hinttitles?))) - (menu "Subtitle speaker" - (flag "Off" #f dm-subtitle-setting) - (flag "On" #t dm-subtitle-setting) - (flag "Auto" auto dm-subtitle-setting) - ) - (menu "Subtitle language" - (flag "english" 0 dm-subtitle-language) - (flag "french" 1 dm-subtitle-language) - (flag "german" 2 dm-subtitle-language) - (flag "spanish" 3 dm-subtitle-language) - (flag "italian" 4 dm-subtitle-language) - (flag "uk-english" 6 dm-subtitle-language) - (flag "finnish" 8 dm-subtitle-language) - (flag "br-portuguese" 13 dm-subtitle-language) - ) - (menu "Text language" - (flag "english" 0 dm-text-language) - (flag "french" 1 dm-text-language) - (flag "german" 2 dm-text-language) - (flag "spanish" 3 dm-text-language) - (flag "italian" 4 dm-text-language) - (flag "japanese" 5 dm-text-language) - (flag "uk-english" 6 dm-text-language) - (flag "finnish" 8 dm-text-language) - (flag "br-portuguese" 13 dm-text-language) - (flag "hungarian" 14 dm-text-language) - (flag "polish" 19 dm-text-language) - (flag "lithuanian" 20 dm-text-language) - ) - (flag "Fallback Text Search" #f ,(dm-lambda-boolean-flag *fallback-text-lookup?*)) - (flag "Discord RPC" #t ,(dm-lambda-boolean-flag (-> *pc-settings* discord-rpc?))) - (flag "Speedrunner Mode" #t ,(dm-lambda-boolean-flag (-> *pc-settings* speedrunner-mode?))) - (menu "PS2 settings" - ;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?))) - (flag "PS2 Particles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-parts?))) - ;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?))) - ;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?))) - ;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?))) - ) - (menu "Level of detail" - (flag "PS2 LOD " #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-lod-dist?))) - (flag "Force Envmap" #f ,(dm-lambda-boolean-flag (-> *pc-settings* force-envmap?))) - (int-var "LOD Tfrag" 0 dm-lod-int 0 1 #t 0 2) - (int-var "LOD Tie" 1 dm-lod-int 0 1 #t 0 3) - ;(int-var "LOD Ocean" 2 dm-lod-int 0 1 #t 0 3) - (int-var "LOD Actor" 3 dm-lod-int 0 1 #t 0 3) - (function "Best quality" #f ,(lambda () (set! (-> *pc-settings* lod-force-tfrag) 0) - (set! (-> *pc-settings* lod-force-tie) 0) - ;(set! (-> *pc-settings* lod-force-ocean) 0) - (set! (-> *pc-settings* lod-force-actor) 0) - )) - (function "Worst quality" #f ,(lambda () (set! (-> *pc-settings* lod-force-tfrag) 2) - (set! (-> *pc-settings* lod-force-tie) 3) - ;(set! (-> *pc-settings* lod-force-ocean) 2) - (set! (-> *pc-settings* lod-force-actor) 3) - )) - ) - (menu "Framerate" - (flag "60" 60 dm-frame-rate-pick-func) - (flag "100" 100 dm-frame-rate-pick-func) - (flag "150" 150 dm-frame-rate-pick-func) - ) - (menu "MSAA" - (flag "Off" 1 dm-msaa-pick-func) - (flag "x2" 2 dm-msaa-pick-func) - (flag "x4" 4 dm-msaa-pick-func) - (flag "x8" 8 dm-msaa-pick-func) - (flag "x16" 16 dm-msaa-pick-func) - ) - (menu "LED" - (flag "hp" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-hp?))) - (flag "eco" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-eco?))) - (flag "heat" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-heat?))) - ) - (menu "Territory" - (flag "Automatic" -1 dm-territory-pick-func) - (flag "GAME_TERRITORY_SCEA" (the binteger GAME_TERRITORY_SCEA) dm-territory-pick-func) - (flag "GAME_TERRITORY_SCEE" (the binteger GAME_TERRITORY_SCEE) dm-territory-pick-func) - (flag "GAME_TERRITORY_SCEI" (the binteger GAME_TERRITORY_SCEI) dm-territory-pick-func) - ) - (flag "V-sync" #f ,(dm-lambda-boolean-flag (-> *pc-settings* vsync?))) - (flag "PS2 Actor vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-actor-vis?))) - (flag "Display actor counts" *display-actor-counts* dm-boolean-toggle-pick-func) - (flag "Display git commit" *display-sha* dm-boolean-toggle-pick-func) - (flag "Extra hud elements" #f ,(dm-lambda-boolean-flag (-> *pc-settings* extra-hud?))) - (flag "Music fadein" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadein?))) - (flag "Music fadeout" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadeout?))) - (function "Reset" #f ,(lambda () (reset *pc-settings* #t))) - (function "Save" #f ,(lambda () (commit-to-file *pc-settings*))) - (function "Load" #f ,(lambda () (load-settings *pc-settings*))) - ) - ) - ) + (debug-menu-make-from-template *debug-menu-context* + '(menu "PC Settings" + (flag "Debug" #f ,(dm-lambda-boolean-flag (-> *pc-settings* debug?))) + (flag "Use native vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* use-vis?))) + (function "Toggle game aspect" + #f + ,(lambda () + (cond + ((= (-> *setting-control* default aspect-ratio) 'aspect4x3) + (set! (-> *setting-control* default aspect-ratio) 'aspect16x9)) + (else (set! (-> *setting-control* default aspect-ratio) 'aspect4x3))) + (set-aspect-ratio (-> *setting-control* default aspect-ratio)))) + (flag "Auto aspect" #f ,(dm-lambda-boolean-flag (-> *pc-settings* aspect-ratio-auto?))) + (menu "Aspect test" + (function "4 x 3" #f ,(lambda () (set-aspect! *pc-settings* 4 3))) + (function "16 x 9" #f ,(lambda () (set-aspect! *pc-settings* 16 9))) + (function "64 x 27 (21:9)" #f ,(lambda () (set-aspect! *pc-settings* 64 27))) + (function "16 x 10" #f ,(lambda () (set-aspect! *pc-settings* 16 10))) + (function "2 x 1" #f ,(lambda () (set-aspect! *pc-settings* 2 1))) + (function "37 x 20" #f ,(lambda () (set-aspect! *pc-settings* 37 20))) + (function "21 x 9" #f ,(lambda () (set-aspect! *pc-settings* 21 9))) + (function "64 x 18" #f ,(lambda () (set-aspect! *pc-settings* 64 18))) + (int-var "Custom aspect X" #f ,(dm-lambda-int-var (-> *pc-settings* aspect-custom-x)) 20 1 #t 1 1000) + (int-var "Custom aspect Y" #f ,(dm-lambda-int-var (-> *pc-settings* aspect-custom-y)) 20 1 #t 1 1000) + (function "Custom" + #f + ,(lambda () + (set-aspect! *pc-settings* (-> *pc-settings* aspect-custom-x) (-> *pc-settings* aspect-custom-y))))) + (menu "Fullscreen" + (function "Windowed" #f ,(lambda () (set-display-mode! *pc-settings* 'windowed #t))) + (function "Fullscreen" #f ,(lambda () (set-display-mode! *pc-settings* 'fullscreen #t))) + (function "Borderless" #f ,(lambda () (set-display-mode! *pc-settings* 'borderless #t)))) + (menu "Sizes" + (function "640 x 480" #f ,(lambda () (set-size! *pc-settings* 640 480 #t))) + (function "640 x 360" #f ,(lambda () (set-size! *pc-settings* 640 360 #t))) + (function "720 x 540" #f ,(lambda () (set-size! *pc-settings* 720 540 #t))) + (function "960 x 540" #f ,(lambda () (set-size! *pc-settings* 960 540 #t))) + (function "800 x 600" #f ,(lambda () (set-size! *pc-settings* 800 600 #t))) + (function "960 x 720" #f ,(lambda () (set-size! *pc-settings* 960 720 #t))) + (function "1280 x 720" #f ,(lambda () (set-size! *pc-settings* 1280 720 #t))) + (function "1024 x 768" #f ,(lambda () (set-size! *pc-settings* 1024 768 #t))) + (function "1366 x 768" #f ,(lambda () (set-size! *pc-settings* 1366 768 #t))) + (function "1280 x 960" #f ,(lambda () (set-size! *pc-settings* 1280 960 #t))) + (function "1440 x 1080" #f ,(lambda () (set-size! *pc-settings* 1440 1080 #t))) + (function "1920 x 1080" #f ,(lambda () (set-size! *pc-settings* 1920 1080 #t))) + (function "1920 x 1440" #f ,(lambda () (set-size! *pc-settings* 1920 1440 #t))) + (function "2560 x 1440" #f ,(lambda () (set-size! *pc-settings* 2560 1440 #t))) + (function "2880 x 2160" #f ,(lambda () (set-size! *pc-settings* 2880 2160 #t))) + (function "3840 x 2160" #f ,(lambda () (set-size! *pc-settings* 3840 2160 #t))) + (function "512 x 224" #f ,(lambda () (set-size! *pc-settings* 512 224 #t))) + (function "512 x 256" #f ,(lambda () (set-size! *pc-settings* 512 256 #t))) + (function "512 x 448" #f ,(lambda () (set-size! *pc-settings* 512 448 #t))) + (function "512 x 512" #f ,(lambda () (set-size! *pc-settings* 512 512 #t)))) + (menu "Secrets" + (menu "PC cheats" + (flag "Big head jak" (the binteger (pc-cheats big-head)) dm-pc-cheats-pick-func) + (flag "Small head jak" (the binteger (pc-cheats small-head)) dm-pc-cheats-pick-func) + (flag "Big fist jak" (the binteger (pc-cheats big-fist)) dm-pc-cheats-pick-func) + (flag "Big head npcs" (the binteger (pc-cheats big-head-npc)) dm-pc-cheats-pick-func) + (flag "Huge head jak" (the binteger (pc-cheats huge-head)) dm-pc-cheats-pick-func) + (flag "Mirrored mode" (the binteger (pc-cheats mirror)) dm-pc-cheats-pick-func) + (flag "Blue eco" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-green)) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-blue)) + (pc-cheats? (-> *pc-settings* cheats) eco-blue))) + (flag "Red eco" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *pc-settings* cheats) (pc-cheats eco-blue eco-yellow eco-green)) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-red)) + (pc-cheats? (-> *pc-settings* cheats) eco-red))) + (flag "Green eco" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-blue)) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-green)) + (pc-cheats? (-> *pc-settings* cheats) eco-green))) + (flag "Yellow eco" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-blue eco-green)) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-yellow)) + (pc-cheats? (-> *pc-settings* cheats) eco-yellow))) + (flag "Invincibility" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *target* state-flags) 16) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) invinc)) + (pc-cheats? (-> *pc-settings* cheats) invinc))) + (flag "Blue sidekick" (the binteger (pc-cheats sidekick-blue)) dm-pc-cheats-pick-func) + (flag "All flavas" (the binteger (pc-cheats tunes)) dm-pc-cheats-pick-func) + (flag "Real time tod" (the binteger (pc-cheats sky)) dm-pc-cheats-pick-func) + (flag "No textures" (the binteger (pc-cheats no-tex)) dm-pc-cheats-pick-func) + ;(flag "Hero mode" (the binteger (pc-cheats hero-mode)) dm-pc-cheats-pick-func) + ;(flag "Hard rats" (the binteger (pc-cheats hard-rats)) dm-pc-cheats-pick-func) + )) + (flag "Letterbox" #f ,(dm-lambda-boolean-flag (-> *pc-settings* letterbox?))) + (flag "Skip movies" #f ,(dm-lambda-boolean-flag (-> *pc-settings* skip-movies?))) + (flag "Money starburst" #f ,(dm-lambda-boolean-flag (-> *pc-settings* money-starburst?))) + (flag "Subtitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* subtitles?))) + (flag "Hinttitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* hinttitles?))) + (menu "Subtitle speaker" + (flag "Off" #f dm-subtitle-setting) + (flag "On" #t dm-subtitle-setting) + (flag "Auto" auto dm-subtitle-setting)) + (menu "Subtitle language" + (flag "english" 0 dm-subtitle-language) + (flag "french" 1 dm-subtitle-language) + (flag "german" 2 dm-subtitle-language) + (flag "spanish" 3 dm-subtitle-language) + (flag "italian" 4 dm-subtitle-language) + (flag "uk-english" 6 dm-subtitle-language) + (flag "finnish" 8 dm-subtitle-language) + (flag "br-portuguese" 13 dm-subtitle-language)) + (menu "Text language" + (flag "english" 0 dm-text-language) + (flag "french" 1 dm-text-language) + (flag "german" 2 dm-text-language) + (flag "spanish" 3 dm-text-language) + (flag "italian" 4 dm-text-language) + (flag "japanese" 5 dm-text-language) + (flag "uk-english" 6 dm-text-language) + (flag "finnish" 8 dm-text-language) + (flag "br-portuguese" 13 dm-text-language) + (flag "hungarian" 14 dm-text-language) + (flag "polish" 19 dm-text-language) + (flag "lithuanian" 20 dm-text-language)) + (flag "Fallback Text Search" #f ,(dm-lambda-boolean-flag *fallback-text-lookup?*)) + (flag "Discord RPC" #t ,(dm-lambda-boolean-flag (-> *pc-settings* discord-rpc?))) + (flag "Speedrunner Mode" #t ,(dm-lambda-boolean-flag (-> *pc-settings* speedrunner-mode?))) + (menu "PS2 settings" + ;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?))) + (flag "PS2 Particles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-parts?))) + ;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?))) + ;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?))) + ;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?))) + ) + (menu "Level of detail" + (flag "PS2 LOD " #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-lod-dist?))) + (flag "Force Envmap" #f ,(dm-lambda-boolean-flag (-> *pc-settings* force-envmap?))) + (int-var "LOD Tfrag" 0 dm-lod-int 0 1 #t 0 2) + (int-var "LOD Tie" 1 dm-lod-int 0 1 #t 0 3) + ;(int-var "LOD Ocean" 2 dm-lod-int 0 1 #t 0 3) + (int-var "LOD Actor" 3 dm-lod-int 0 1 #t 0 3) + (function "Best quality" + #f + ,(lambda () + (set! (-> *pc-settings* lod-force-tfrag) 0) + (set! (-> *pc-settings* lod-force-tie) 0) + ;(set! (-> *pc-settings* lod-force-ocean) 0) + (set! (-> *pc-settings* lod-force-actor) 0))) + (function "Worst quality" + #f + ,(lambda () + (set! (-> *pc-settings* lod-force-tfrag) 2) + (set! (-> *pc-settings* lod-force-tie) 3) + ;(set! (-> *pc-settings* lod-force-ocean) 2) + (set! (-> *pc-settings* lod-force-actor) 3)))) + (menu "Framerate" + (flag "60" 60 dm-frame-rate-pick-func) + (flag "100" 100 dm-frame-rate-pick-func) + (flag "150" 150 dm-frame-rate-pick-func)) + (menu "MSAA" + (flag "Off" 1 dm-msaa-pick-func) + (flag "x2" 2 dm-msaa-pick-func) + (flag "x4" 4 dm-msaa-pick-func) + (flag "x8" 8 dm-msaa-pick-func) + (flag "x16" 16 dm-msaa-pick-func)) + (menu "LED" + (flag "hp" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-hp?))) + (flag "eco" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-eco?))) + (flag "heat" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-heat?)))) + (menu "Territory" + (flag "Automatic" -1 dm-territory-pick-func) + (flag "GAME_TERRITORY_SCEA" (the binteger GAME_TERRITORY_SCEA) dm-territory-pick-func) + (flag "GAME_TERRITORY_SCEE" (the binteger GAME_TERRITORY_SCEE) dm-territory-pick-func) + (flag "GAME_TERRITORY_SCEI" (the binteger GAME_TERRITORY_SCEI) dm-territory-pick-func)) + (flag "V-sync" #f ,(dm-lambda-boolean-flag (-> *pc-settings* vsync?))) + (flag "PS2 Actor vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-actor-vis?))) + (flag "Display actor counts" *display-actor-counts* dm-boolean-toggle-pick-func) + (flag "Display git commit" *display-sha* dm-boolean-toggle-pick-func) + (flag "Extra hud elements" #f ,(dm-lambda-boolean-flag (-> *pc-settings* extra-hud?))) + (flag "Music fadein" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadein?))) + (flag "Music fadeout" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadeout?))) + (function "Reset" #f ,(lambda () (reset *pc-settings* #t))) + (function "Save" #f ,(lambda () (commit-to-file *pc-settings*))) + (function "Load" #f ,(lambda () (load-settings *pc-settings*)))))) (let* ((prog-menu (new 'debug 'debug-menu *debug-menu-context* "Progress menu")) (prog-menu-node (new-dm-submenu "Progress" prog-menu)) - (other-menu-node - (debug-menu-make-from-template *debug-menu-context* - '(menu "Other" - (flag "DECI Count" *display-deci-count* dm-boolean-toggle-pick-func) - ;(flag "Actor graph" *display-actor-graph* dm-boolean-toggle-pick-func) - (flag "Update vis outside bsp" *update-leaf-when-outside-bsp* dm-boolean-toggle-pick-func) - (flag "Pad display" *display-pad-debug* dm-boolean-toggle-pick-func) - (flag "Display actor bank" *display-actor-bank* dm-boolean-toggle-pick-func) - (flag "Heap status" *display-heap-status* dm-boolean-toggle-pick-func) - (flag "Bug report" *display-bug-report* dm-boolean-toggle-pick-func) - (flag "Text boxes" *display-text-box* dm-boolean-toggle-pick-func) - (flag "Sidekick stats" *display-sidekick-stats* dm-boolean-toggle-pick-func) - (float-var "Actor birth dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* birth-dist)) 20 1 #t 0 10000 1) - (float-var "Actor pause dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* pause-dist)) 20 1 #t 0 10000 1) - (menu "Mood override" - (function "-- SIMPLE OVERRIDE" #f nothing) - (flag "Palette 0" 0 dm-mood-override-palette-pick-func) - (flag "Palette 1" 1 dm-mood-override-palette-pick-func) - (flag "Palette 2" 2 dm-mood-override-palette-pick-func) - (flag "Palette 3" 3 dm-mood-override-palette-pick-func) - (flag "Palette 4" 4 dm-mood-override-palette-pick-func) - (flag "Palette 5" 5 dm-mood-override-palette-pick-func) - (flag "Palette 6" 6 dm-mood-override-palette-pick-func) - (flag "Palette 7" 7 dm-mood-override-palette-pick-func) - (menu "Advanced" - (flag "Overwrite" copy dm-mood-override-pick-func) - (flag "Multiply" mult dm-mood-override-pick-func) - (float-fixed-var "Palette 0 Amt" 0 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 1 Amt" 1 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 2 Amt" 2 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 3 Amt" 3 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 4 Amt" 4 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 5 Amt" 5 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 6 Amt" 6 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 7 Amt" 7 dm-mood-palette-float 0 10 #t 0 1000 3) - ) - ) - (flag "Joint names" *display-joint-names* dm-boolean-toggle-pick-func) - (flag "Bone lines" *display-bones* dm-boolean-toggle-pick-func) - ) - )) - (other-menu (-> (the-as debug-menu-item-submenu other-menu-node) submenu)) - ) + (other-menu-node (debug-menu-make-from-template *debug-menu-context* + '(menu "Other" + (flag "DECI Count" *display-deci-count* dm-boolean-toggle-pick-func) + ;(flag "Actor graph" *display-actor-graph* dm-boolean-toggle-pick-func) + (flag "Update vis outside bsp" *update-leaf-when-outside-bsp* dm-boolean-toggle-pick-func) + (flag "Pad display" *display-pad-debug* dm-boolean-toggle-pick-func) + (flag "Display actor bank" *display-actor-bank* dm-boolean-toggle-pick-func) + (flag "Heap status" *display-heap-status* dm-boolean-toggle-pick-func) + (flag "Bug report" *display-bug-report* dm-boolean-toggle-pick-func) + (flag "Text boxes" *display-text-box* dm-boolean-toggle-pick-func) + (flag "Sidekick stats" *display-sidekick-stats* dm-boolean-toggle-pick-func) + (float-var "Actor birth dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* birth-dist)) 20 1 #t 0 10000 1) + (float-var "Actor pause dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* pause-dist)) 20 1 #t 0 10000 1) + (menu "Mood override" + (function "-- SIMPLE OVERRIDE" #f nothing) + (flag "Palette 0" 0 dm-mood-override-palette-pick-func) + (flag "Palette 1" 1 dm-mood-override-palette-pick-func) + (flag "Palette 2" 2 dm-mood-override-palette-pick-func) + (flag "Palette 3" 3 dm-mood-override-palette-pick-func) + (flag "Palette 4" 4 dm-mood-override-palette-pick-func) + (flag "Palette 5" 5 dm-mood-override-palette-pick-func) + (flag "Palette 6" 6 dm-mood-override-palette-pick-func) + (flag "Palette 7" 7 dm-mood-override-palette-pick-func) + (menu "Advanced" + (flag "Overwrite" copy dm-mood-override-pick-func) + (flag "Multiply" mult dm-mood-override-pick-func) + (float-fixed-var "Palette 0 Amt" 0 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 1 Amt" 1 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 2 Amt" 2 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 3 Amt" 3 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 4 Amt" 4 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 5 Amt" 5 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 6 Amt" 6 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 7 Amt" 7 dm-mood-palette-float 0 10 #t 0 1000 3))) + (flag "Joint names" *display-joint-names* dm-boolean-toggle-pick-func) + (flag "Bone lines" *display-bones* dm-boolean-toggle-pick-func)))) + (other-menu (-> (the-as debug-menu-item-submenu other-menu-node) submenu))) (dotimes (i (progress-screen max)) (debug-menu-append-item prog-menu - (new-dm-func (new 'debug 'string 0 (enum->string progress-screen i)) i - (lambda ((val progress-screen)) - (activate-progress *dproc* val) - (set-master-mode 'progress) - ) - )) - ) + (new-dm-func (new 'debug 'string 0 (enum->string progress-screen i)) + i + (lambda ((val progress-screen)) + (activate-progress *dproc* val) + (set-master-mode 'progress))))) (debug-menu-append-item other-menu prog-menu-node) - - (debug-menu-append-item (-> *debug-menu-context* root-menu) other-menu-node) - ) - + (debug-menu-append-item (-> *debug-menu-context* root-menu) other-menu-node)) (debug-menu-append-item (-> (the debug-menu-item-submenu (ref (-> *debug-menu-context* root-menu items) 4)) submenu) (debug-menu-make-collision-renderer-menu *debug-menu-context*)) - (debug-menu-append-item (-> (the debug-menu-item-submenu (car (-> *debug-menu-context* root-menu items))) submenu) (debug-menu-make-anim-tester-x-menu *debug-menu-context*)) - - (debug-menu-append-item (-> (the debug-menu-item-submenu (ref (-> (the debug-menu-item-submenu (ref (-> *debug-menu-context* root-menu items) 19)) submenu items) 7)) submenu) - (debug-menu-make-music-player-menu *debug-menu-context*)) - - ) + (debug-menu-append-item (-> (the debug-menu-item-submenu + (ref (-> (the debug-menu-item-submenu (ref (-> *debug-menu-context* root-menu items) 19)) submenu items) 7)) + submenu) + (debug-menu-make-music-player-menu *debug-menu-context*))) (defun bg-custom ((level-name symbol)) "Modified version of bg for the PC Port custom levels." - ;; lookup info (format 0 "(bg-custom ~A)%" level-name) (let ((lev-info (lookup-level-info level-name))) (when (= lev-info default-level) (format 0 "Unable to (bg-custom ~A), the level was not found in *level-load-list*~%" level-name) - (return #f) - ) - + (return #f)) ;; kill jak (rip) (format 0 "doing stop~%") (stop 'play) - ;; kill levels (dotimes (i 2) - (unload! (-> *level* data i)) - ) - + (unload! (-> *level* data i))) ;; enable visiblity. the custom level won't use it, but we want it on so other levels can be loaded. (set! (-> *level* vis?) #t) - ;; disable border and play mode to prevent loading levels (set! (-> *level* border?) #f) (set! (-> *setting-control* default border-mode) #f) (set! (-> *level* play?) #f) - ;; disable actor vis (set! *vis-actors* #f) - (format 0 "doing level load~%") ;; allocate level. This may start the loading process, but won't finish it. (let ((lev (level-get-for-use *level* level-name 'active))) (when (not lev) (format 0 "Unable to load level, could not level-get-for-use~%") - (return #f) - ) + (return #f)) (format 0 "about to start load loop, game will freeze and hopefully come back soon~%") - ;; spin in a loop and load it. This will cause the game to freeze during the load, ;; but this is good enough for now. - (while (or (= (-> lev status) 'loading) - (= (-> lev status) 'loading-bt) - (= (-> lev status) 'login) - ) - (load-continue lev) - ) - + (while (or (= (-> lev status) 'loading) (= (-> lev status) 'loading-bt) (= (-> lev status) 'login)) + (load-continue lev)) (when (not (-> lev info continues)) - (format 0 "level info has no continues, can't load it.~%") - ) - - (let ((cont (car (-> lev info continues)))) - (start 'play (the continue-point cont)) - ) - + (format 0 "level info has no continues, can't load it.~%")) + (let ((cont (car (-> lev info continues)))) (start 'play (the continue-point cont))) (vis-load lev) (set! (-> lev all-visible?) #f) (set! (-> lev force-all-visible?) #t) - ;; reset things ;(initialize! *game-info* 'game (the-as game-save #f) (the-as string #f)) - ) - ) - ) - + ))) diff --git a/goal_src/jak1/pc/debug/entity-debug.gc b/goal_src/jak1/pc/debug/entity-debug.gc index 3c257c2ebd..4805a12e5a 100644 --- a/goal_src/jak1/pc/debug/entity-debug.gc +++ b/goal_src/jak1/pc/debug/entity-debug.gc @@ -1,250 +1,230 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/ui/text-h.gc") (require "pc/pckernel-common.gc") (require "engine/game/fact-h.gc") (require "engine/debug/debug.gc") (require "engine/game/game-info-h.gc") - -#| - - Entity debugging utilities. - -|# +#| Entity debugging utilities. |# (declare-file (debug)) (define *debug-temp-string* (new 'debug 'string 4096 (the string #f))) -(defmethod set-entity! entity-debug-inspect ((obj entity-debug-inspect) (e entity)) +(defmethod set-entity! ((obj entity-debug-inspect) (e entity)) "set the entity to inspect" - (set! (-> obj entity) e) (unless e (set! *display-actor-anim* (the string #f))) (set! (-> obj scroll-y) 0) - - e - ) + e) ;; custom entity functions for pc port (defun-debug entity-inspect-draw ((inspect-info entity-debug-inspect)) "draw text about an entity on screen" - (update-pad inspect-info 0) - (let* ((e (-> inspect-info entity)) (name (res-lump-struct e 'name string))) - (set! *display-actor-anim* (the string (and (-> inspect-info show-actor-info) name))) - ;; draw trans - (add-debug-x #t (bucket-id debug-no-zbuf) (-> e trans) (static-rgba 255 255 0 128)) - (if (or (not (-> inspect-info show-actor-info)) (!= (-> e type) entity-actor) (and (= (-> e type) entity-actor) (not (-> (the entity-actor e) extra process)))) + (let* ((e (-> inspect-info entity)) + (name (res-lump-struct e 'name string))) + (set! *display-actor-anim* (the string (and (-> inspect-info show-actor-info) name))) + ;; draw trans + (add-debug-x #t (bucket-id debug-no-zbuf) (-> e trans) (static-rgba 255 255 0 128)) + (if (or (not (-> inspect-info show-actor-info)) + (!= (-> e type) entity-actor) + (and (= (-> e type) entity-actor) (not (-> (the entity-actor e) extra process)))) (add-debug-text-3d #t (bucket-id debug-no-zbuf) name (-> e trans) (font-color red) (new 'static 'vector2h :y 8))) - - ;; start writing text - (let* ((begin-y (- 16 (* (-> inspect-info scroll-y) 8))) (cur-y begin-y) (y-adv 8)) - (with-dma-buffer-add-bucket ((debug-buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - ;; basic info, actor id, etc - (draw-string-xy - (string-format "~3L~A~0L ~A~%tags: ~D size: ~D aid: #x~x~%R1/L1 scroll L3 toggle display-actor-info~%UP toggle display-long-info~%--------------------" (-> e type) name (length e) (asize-of e) (-> e aid)) - debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) - (+! cur-y (* 8 5)) - (cond - ((type-type? (-> e type) entity-actor) - (let ((actor (the entity-actor e))) - ;; print info for entity-actors - (draw-string-xy - (string-format "etype: ~A~%nav: ~A vis: ~D task: ~S" (-> actor etype) (!= #f (-> actor nav-mesh)) (-> actor vis-id) (game-task->string (-> actor task))) - debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) - (+! cur-y (* 8 2)) - ) - ) - ) - - ;; draw each tag in entity - (dotimes (i (length e)) - (let ((data (get-tag-index-data e i))) - - ;; tag info - (format (clear *debug-temp-string*) "~3L~2D)~0L ~20L~A~0L:" i (-> e tag i name) (-> e tag i elt-type)) - - ;; tag data - special cases first - (cond - ;; some water-height info - ((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float)) - (+! y-adv (* 8 1)) - (format *debug-temp-string* " ~mm ~mm ~mm~%(~S)" - (-> (the (pointer float) data) 0) - (-> (the (pointer float) data) 1) - (-> (the (pointer float) data) 2) - (begin (bit-enum->string water-flags (the int (-> (the (pointer float) data) 3)) (clear *temp-string*)) *temp-string*) - ) - ) - ;; some water-height info but with 5 elts - ((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float)) - (+! y-adv (* 8 2)) - (format *debug-temp-string* " ~mm ~mm ~mm~%(~S)~%~mm" - (-> (the (pointer float) data) 0) - (-> (the (pointer float) data) 1) - (-> (the (pointer float) data) 2) - (begin (bit-enum->string water-flags (the int (-> (the (pointer float) data) 3)) (clear *temp-string*)) *temp-string*) - (-> (the (pointer float) data) 4) - ) - ) - ;; music flava (music ambients) - ((and (= (-> e tag i name) 'flava) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32)) - (format *debug-temp-string* " (music-flava ~S)" (music-flava->string (-> (the (pointer music-flava) data) 0))) - ) - ;; text id (can be hint ambient) - ((and (= (-> e tag i name) 'text-id) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32)) - (format *debug-temp-string* " (text-id ~S)" (text-id->string (-> (the (pointer text-id) data) 0))) - ) - ;; eco-info, like in vents, crates, or collectables in general - ((and (= (-> e tag i name) 'eco-info) (= (-> e tag i elt-count) 2) (= (-> e tag i elt-type) int32)) - (format *debug-temp-string* " ~S " (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) 0)))) - (if (= (pickup-type fuel-cell) (-> (the (pointer int32) data) 0)) - (format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) 1)))) - (format *debug-temp-string* "~D" (-> (the (pointer int32) data) 1)) - ) - (if (= (pickup-type buzzer) (-> (the (pointer int32) data) 0)) - (format *debug-temp-string* " ~S" (game-task->string (the-as game-task (logand #xffff (-> (the (pointer int32) data) 1))))) - ) - ) - ;; fact options, usually enemies or crates - ((and (= (-> e tag i name) 'options) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) uint32)) - (format *debug-temp-string* " (fact-options ") - (bit-enum->string fact-options (-> (the (pointer uint32) data) 0) *debug-temp-string*) - (format *debug-temp-string* ")") - ) - ;; these can be displayed visually with other tools. - ((and (= (-> e tag i name) 'visvol) (= (-> e tag i elt-count) 2) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) - (format *debug-temp-string* " display actor-vis!") - ) - ((and (= (-> e tag i name) 'path) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) - (format *debug-temp-string* " display path marks!") - ) - ((and (= (-> e tag i name) 'vol) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) - (format *debug-temp-string* " display vol marks!") - ) - (else - ;; more generic tag info - (dotimes (ii (-> e tag i elt-count)) - (format *debug-temp-string* " ") - (case (-> e tag i elt-type) - ((string symbol type) - (format *debug-temp-string* "~A" (-> (the (pointer basic) data) ii))) - ((float) - (case (-> e tag i name) - ;; meters are better here - (('spring-height 'vis-dist 'height-info 'distance 'cam-notice-dist 'cam-vert 'cam-horz 'idle-distance - 'nearest-y-threshold 'center-point 'center-radius 'notice-dist 'trigger-height 'notice-top) - (format *debug-temp-string* "~mm" (-> (the (pointer float) data) ii)) - ) - ;; degrees are better for these - (('rotoffset 'fov 'rotmin 'rotmax 'tiltmin 'tiltmax 'rotspeed) - (format *debug-temp-string* "~rdeg" (-> (the (pointer float) data) ii)) - ) - (else - (format *debug-temp-string* "~f" (-> (the (pointer float) data) ii)) - ) - ) - ) - ((int8) (format *debug-temp-string* "~D" (-> (the (pointer int8) data) ii))) - ((int16) (format *debug-temp-string* "~D" (-> (the (pointer int16) data) ii))) - ((int32) - (case (-> e tag i name) - (('final-pickup 'pickup-type) - (format *debug-temp-string* "~S" (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) ii)))) - ) - (('alt-task) - (format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) ii)))) - ) - (else - (format *debug-temp-string* "~D" (-> (the (pointer int32) data) ii)) - ) - ) - ) - ((uint8) - (case (-> e tag i name) - ;; not sure - (('shadow-mask) - (format *debug-temp-string* "#b~b" (-> (the (pointer uint8) data) ii)) - ) - (else - (format *debug-temp-string* "#x~x" (-> (the (pointer uint8) data) ii)) - ) - ) - ) - ((uint16) (format *debug-temp-string* "#x~x" (-> (the (pointer uint16) data) ii))) - ((uint32) - (case (-> e tag i name) - ;; actually actor-id - (('nav-mesh-actor 'open-actor 'trigger-actor 'path-actor 'state-actor 'alt-actor 'next-actor 'prev-actor - 'spawner-blocker-actor 'spawner-trigger-actor 'kill-actor 'fade-actor 'water-actor 'target-actor) - (format *debug-temp-string* "~%#x~x (~S)" (-> (the (pointer uint32) data) ii) - (res-lump-struct (entity-by-aid (-> (the (pointer uint32) data) ii)) 'name string)) - (+! y-adv 8) - ) - ;; used for fuel-cell - (('movie-mask) - (format *debug-temp-string* "#b~b" (-> (the (pointer uint32) data) ii)) - ) - (else - (format *debug-temp-string* "#x~x" (-> (the (pointer uint32) data) ii)) - ) - ) - ) - ((vector) - (case (-> e tag i name) - ;; guess - (('movie-pos) - (format *debug-temp-string* "~%(~mm ~mm ~mm ~rdeg)" - (-> (the (inline-array vector) data) ii x) - (-> (the (inline-array vector) data) ii y) - (-> (the (inline-array vector) data) ii z) - (-> (the (inline-array vector) data) ii w) - ) - ) - ;; not super useful - (('nav-mesh-sphere) - (format *debug-temp-string* "~%(~mm ~mm ~mm ~mm)" - (-> (the (inline-array vector) data) ii x) - (-> (the (inline-array vector) data) ii y) - (-> (the (inline-array vector) data) ii z) - (-> (the (inline-array vector) data) ii w) - ) - ) - (else - (format *debug-temp-string* "~%(~f ~f ~f ~f)" - (-> (the (inline-array vector) data) ii x) - (-> (the (inline-array vector) data) ii y) - (-> (the (inline-array vector) data) ii z) - (-> (the (inline-array vector) data) ii w) - ) - ) - ) - (+! y-adv 8)) - ;; no clue! please report this. + ;; start writing text + (let* ((begin-y (- 16 (* (-> inspect-info scroll-y) 8))) + (cur-y begin-y) + (y-adv 8)) + (with-dma-buffer-add-bucket ((debug-buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + ;; basic info, actor id, etc + (draw-string-xy (string-format "~3L~A~0L ~A~%tags: ~D size: ~D aid: #x~x~%R1/L1 scroll L3 toggle display-actor-info~%UP toggle display-long-info~%--------------------" + (-> e type) + name + (length e) + (asize-of e) + (-> e aid)) + debug-buf + 352 + cur-y + (font-color default) + (font-flags shadow kerning middle)) + (+! cur-y (* 8 5)) + (cond + ((type-type? (-> e type) entity-actor) + (let ((actor (the entity-actor e))) + ;; print info for entity-actors + (draw-string-xy (string-format "etype: ~A~%nav: ~A vis: ~D task: ~S" + (-> actor etype) + (!= #f (-> actor nav-mesh)) + (-> actor vis-id) + (game-task->string (-> actor task))) + debug-buf + 352 + cur-y + (font-color default) + (font-flags shadow kerning middle)) + (+! cur-y (* 8 2))))) + ;; draw each tag in entity + (dotimes (i (length e)) + (let ((data (get-tag-index-data e i))) + ;; tag info + (format (clear *debug-temp-string*) "~3L~2D)~0L ~20L~A~0L:" i (-> e tag i name) (-> e tag i elt-type)) + ;; tag data - special cases first + (cond + ;; some water-height info + ((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float)) + (+! y-adv (* 8 1)) + (format *debug-temp-string* + " ~mm ~mm ~mm~%(~S)" + (-> (the (pointer float) data) 0) + (-> (the (pointer float) data) 1) + (-> (the (pointer float) data) 2) + (begin + (bit-enum->string water-flags (the int (-> (the (pointer float) data) 3)) (clear *temp-string*)) + *temp-string*))) + ;; some water-height info but with 5 elts + ((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float)) + (+! y-adv (* 8 2)) + (format *debug-temp-string* + " ~mm ~mm ~mm~%(~S)~%~mm" + (-> (the (pointer float) data) 0) + (-> (the (pointer float) data) 1) + (-> (the (pointer float) data) 2) + (begin + (bit-enum->string water-flags (the int (-> (the (pointer float) data) 3)) (clear *temp-string*)) + *temp-string*) + (-> (the (pointer float) data) 4))) + ;; music flava (music ambients) + ((and (= (-> e tag i name) 'flava) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32)) + (format *debug-temp-string* " (music-flava ~S)" (music-flava->string (-> (the (pointer music-flava) data) 0)))) + ;; text id (can be hint ambient) + ((and (= (-> e tag i name) 'text-id) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32)) + (format *debug-temp-string* " (text-id ~S)" (text-id->string (-> (the (pointer text-id) data) 0)))) + ;; eco-info, like in vents, crates, or collectables in general + ((and (= (-> e tag i name) 'eco-info) (= (-> e tag i elt-count) 2) (= (-> e tag i elt-type) int32)) + (format *debug-temp-string* " ~S " (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) 0)))) + (if (= (pickup-type fuel-cell) (-> (the (pointer int32) data) 0)) + (format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) 1)))) + (format *debug-temp-string* "~D" (-> (the (pointer int32) data) 1))) + (if (= (pickup-type buzzer) (-> (the (pointer int32) data) 0)) + (format *debug-temp-string* + " ~S" + (game-task->string (the-as game-task (logand #xffff (-> (the (pointer int32) data) 1))))))) + ;; fact options, usually enemies or crates + ((and (= (-> e tag i name) 'options) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) uint32)) + (format *debug-temp-string* " (fact-options ") + (bit-enum->string fact-options (-> (the (pointer uint32) data) 0) *debug-temp-string*) + (format *debug-temp-string* ")")) + ;; these can be displayed visually with other tools. + ((and (= (-> e tag i name) 'visvol) + (= (-> e tag i elt-count) 2) + (= (-> e tag i elt-type) vector) + (not (-> inspect-info show-long-info))) + (format *debug-temp-string* " display actor-vis!")) + ((and (= (-> e tag i name) 'path) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) + (format *debug-temp-string* " display path marks!")) + ((and (= (-> e tag i name) 'vol) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) + (format *debug-temp-string* " display vol marks!")) (else - (format *debug-temp-string* "" (-> e tag i elt-type)) - (set! ii (the int (-> e tag i elt-count))) - ) - ) - ) - ) - ) - - ;; draw a string for each tag instead of all at once. allows using smaller strings. - (draw-string-xy *debug-temp-string* debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) - (+! cur-y y-adv) - (set! y-adv 8) - - )) - ;; set max scroll based on how large the whole text was, ignore first 20 lines. - (set! (-> inspect-info scroll-y-max) (max 0 (+ -20 (/ (- cur-y begin-y) 8)))) - - ) - ))) - - + ;; more generic tag info + (dotimes (ii (-> e tag i elt-count)) + (format *debug-temp-string* " ") + (case (-> e tag i elt-type) + ((string symbol type) (format *debug-temp-string* "~A" (-> (the (pointer basic) data) ii))) + ((float) + (case (-> e tag i name) + ;; meters are better here + (('spring-height 'vis-dist + 'height-info + 'distance + 'cam-notice-dist + 'cam-vert + 'cam-horz + 'idle-distance + 'nearest-y-threshold + 'center-point + 'center-radius + 'notice-dist + 'trigger-height + 'notice-top) + (format *debug-temp-string* "~mm" (-> (the (pointer float) data) ii))) + ;; degrees are better for these + (('rotoffset 'fov 'rotmin 'rotmax 'tiltmin 'tiltmax 'rotspeed) + (format *debug-temp-string* "~rdeg" (-> (the (pointer float) data) ii))) + (else (format *debug-temp-string* "~f" (-> (the (pointer float) data) ii))))) + ((int8) (format *debug-temp-string* "~D" (-> (the (pointer int8) data) ii))) + ((int16) (format *debug-temp-string* "~D" (-> (the (pointer int16) data) ii))) + ((int32) + (case (-> e tag i name) + (('final-pickup 'pickup-type) + (format *debug-temp-string* "~S" (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) ii))))) + (('alt-task) (format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) ii))))) + (else (format *debug-temp-string* "~D" (-> (the (pointer int32) data) ii))))) + ((uint8) + (case (-> e tag i name) + ;; not sure + (('shadow-mask) (format *debug-temp-string* "#b~b" (-> (the (pointer uint8) data) ii))) + (else (format *debug-temp-string* "#x~x" (-> (the (pointer uint8) data) ii))))) + ((uint16) (format *debug-temp-string* "#x~x" (-> (the (pointer uint16) data) ii))) + ((uint32) + (case (-> e tag i name) + ;; actually actor-id + (('nav-mesh-actor 'open-actor + 'trigger-actor + 'path-actor + 'state-actor + 'alt-actor + 'next-actor + 'prev-actor + 'spawner-blocker-actor + 'spawner-trigger-actor + 'kill-actor + 'fade-actor + 'water-actor + 'target-actor) + (format *debug-temp-string* + "~%#x~x (~S)" + (-> (the (pointer uint32) data) ii) + (res-lump-struct (entity-by-aid (-> (the (pointer uint32) data) ii)) 'name string)) + (+! y-adv 8)) + ;; used for fuel-cell + (('movie-mask) (format *debug-temp-string* "#b~b" (-> (the (pointer uint32) data) ii))) + (else (format *debug-temp-string* "#x~x" (-> (the (pointer uint32) data) ii))))) + ((vector) + (case (-> e tag i name) + ;; guess + (('movie-pos) + (format *debug-temp-string* + "~%(~mm ~mm ~mm ~rdeg)" + (-> (the (inline-array vector) data) ii x) + (-> (the (inline-array vector) data) ii y) + (-> (the (inline-array vector) data) ii z) + (-> (the (inline-array vector) data) ii w))) + ;; not super useful + (('nav-mesh-sphere) + (format *debug-temp-string* + "~%(~mm ~mm ~mm ~mm)" + (-> (the (inline-array vector) data) ii x) + (-> (the (inline-array vector) data) ii y) + (-> (the (inline-array vector) data) ii z) + (-> (the (inline-array vector) data) ii w))) + (else + (format *debug-temp-string* + "~%(~f ~f ~f ~f)" + (-> (the (inline-array vector) data) ii x) + (-> (the (inline-array vector) data) ii y) + (-> (the (inline-array vector) data) ii z) + (-> (the (inline-array vector) data) ii w)))) + (+! y-adv 8)) + ;; no clue! please report this. + (else + (format *debug-temp-string* "" (-> e tag i elt-type)) + (set! ii (the int (-> e tag i elt-count)))))))) + ;; draw a string for each tag instead of all at once. allows using smaller strings. + (draw-string-xy *debug-temp-string* debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) + (+! cur-y y-adv) + (set! y-adv 8))) + ;; set max scroll based on how large the whole text was, ignore first 20 lines. + (set! (-> inspect-info scroll-y-max) (max 0 (+ -20 (/ (- cur-y begin-y) 8)))))))) diff --git a/goal_src/jak1/pc/debug/pc-debug-common.gc b/goal_src/jak1/pc/debug/pc-debug-common.gc index 0a374e4107..879ebad077 100644 --- a/goal_src/jak1/pc/debug/pc-debug-common.gc +++ b/goal_src/jak1/pc/debug/pc-debug-common.gc @@ -1,13 +1,9 @@ ;;-*-Lisp-*- (in-package goal) - (require "kernel/gstring.gc") (require "engine/math/math.gc") - -#| - Various debugging displays made for the pc port. This file is shared for all games. - |# +#| Various debugging displays made for the pc port. This file is shared for all games. |# ;; debug-only file! (declare-file (debug)) @@ -17,54 +13,70 @@ ;; ---------------------- (defconstant MEM_BAR_WIDTH 104) ;; total width of the bar + (defconstant MEM_BAR_HEIGHT 8) ;; total height of the bar + (defconstant MEM_BAR_HORZ_PAD 8) ;; horizontal padding for the bar text + (defconstant MEM_BAR_NUM 7) ;; amount of bars (override later if wanted) + (defconstant MEM_BAR_BG_COL (static-rgba 64 64 64 64)) ;; color for the empty part of the bar + (defconstant MEM_BAR_RIGHT 480) ;; x coord for the right side of the bar list + (defconstant MEM_BAR_BOTTOM 224) ;; x coord for the bottom side of the bar list (defconstant MEM_BAR_Y (- MEM_BAR_BOTTOM 4 (* MEM_BAR_HEIGHT MEM_BAR_NUM))) ;; y coord for top side of the bar list (defmacro draw-memory-bar-generic (buf &key remain &key total &key name &key idx &key color) - "draw a memory usage bar" - `(let* ( - (total (the float ,total)) - (remain (the float ,remain)) - (bar-width (the int (/ (the float MEM_BAR_WIDTH) (-> *pc-settings* aspect-ratio-scale)))) - (bar-x (- MEM_BAR_RIGHT bar-width MEM_BAR_HORZ_PAD)) ;; x coord for left side of the bar list - (used-p (if (zero? total) 0.0 (/ (- total remain) total))) - (used-x (the int (* used-p bar-width))) - (used-y (+ MEM_BAR_Y (* ,idx MEM_BAR_HEIGHT))) - ) - (draw-sprite2d-xy ,buf bar-x used-y used-x MEM_BAR_HEIGHT ,color) - (draw-sprite2d-xy ,buf (+ bar-x used-x) used-y (- bar-width used-x) MEM_BAR_HEIGHT MEM_BAR_BG_COL) - (if (zero? total) (set! used-x (the int (* 0.5 bar-width)))) - (draw-string-xy ,name ,buf (- bar-x MEM_BAR_HORZ_PAD) used-y (font-color red) (font-flags shadow kerning right)) - (draw-string-xy (if (zero? total) "NO HEAP" (string-format "~,,2f%" (* used-p 100))) ,buf (+ bar-x used-x) used-y (font-color default) (font-flags shadow kerning middle)) - (draw-string-xy (string-format "~,,1fM" (/ total (* 1024 1024))) ,buf (+ bar-x bar-width MEM_BAR_HORZ_PAD) used-y (font-color red) (font-flags shadow kerning middle-vert)) - ) - ) + "draw a memory usage bar" + `(let* ((total (the float ,total)) + (remain (the float ,remain)) + (bar-width (the int (/ (the float MEM_BAR_WIDTH) (-> *pc-settings* aspect-ratio-scale)))) + (bar-x (- MEM_BAR_RIGHT bar-width MEM_BAR_HORZ_PAD)) ;; x coord for left side of the bar list + (used-p (if (zero? total) 0.0 (/ (- total remain) total))) + (used-x (the int (* used-p bar-width))) + (used-y (+ MEM_BAR_Y (* ,idx MEM_BAR_HEIGHT)))) + (draw-sprite2d-xy ,buf bar-x used-y used-x MEM_BAR_HEIGHT ,color) + (draw-sprite2d-xy ,buf (+ bar-x used-x) used-y (- bar-width used-x) MEM_BAR_HEIGHT MEM_BAR_BG_COL) + (if (zero? total) (set! used-x (the int (* 0.5 bar-width)))) + (draw-string-xy ,name ,buf (- bar-x MEM_BAR_HORZ_PAD) used-y (font-color red) (font-flags shadow kerning right)) + (draw-string-xy (if (zero? total) "NO HEAP" (string-format "~,,2f%" (* used-p 100))) + ,buf + (+ bar-x used-x) + used-y + (font-color default) + (font-flags shadow kerning middle)) + (draw-string-xy (string-format "~,,1fM" (/ total (* 1024 1024))) + ,buf + (+ bar-x bar-width MEM_BAR_HORZ_PAD) + used-y + (font-color red) + (font-flags shadow kerning middle-vert)))) (defmacro draw-memory-bar-kheap (buf heap &key (name #f) &key idx &key color) - "draw a memory usage bar for a kheap" + "draw a memory usage bar for a kheap" `(let ((heap ,heap)) - (draw-memory-bar-generic ,buf - :remain (&- (-> heap top) (-> heap current)) - :total (&- (-> heap top-base) (-> heap base)) - :name ,(if name name (symbol->string heap)) - :idx ,idx - :color ,color) - ) - ) + (draw-memory-bar-generic ,buf + :remain + (&- (-> heap top) (-> heap current)) + :total + (&- (-> heap top-base) (-> heap base)) + :name + ,(if name name (symbol->string heap)) + :idx ,idx + :color ,color))) + (defmacro draw-memory-bar-dead-pool-heap (buf heap &key (name #f) &key idx &key color) - "draw a memory usage bar for a dead-pool-heap (actor heap)" - `(let* ((heap ,heap) (pool-total (memory-total heap))) - (draw-memory-bar-generic ,buf - :remain (- pool-total (memory-used heap)) - :total pool-total - :name ,(if name name (symbol->string heap)) - :idx ,idx - :color ,color) - ) - ) + "draw a memory usage bar for a dead-pool-heap (actor heap)" + `(let* ((heap ,heap) + (pool-total (memory-total heap))) + (draw-memory-bar-generic ,buf + :remain + (- pool-total (memory-used heap)) + :total + pool-total + :name + ,(if name name (symbol->string heap)) + :idx ,idx + :color ,color))) diff --git a/goal_src/jak1/pc/debug/pc-debug-methods.gc b/goal_src/jak1/pc/debug/pc-debug-methods.gc index c0536caafb..e1df1c0a8e 100644 --- a/goal_src/jak1/pc/debug/pc-debug-methods.gc +++ b/goal_src/jak1/pc/debug/pc-debug-methods.gc @@ -1,65 +1,61 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/gfx/hw/display.gc") (require "pc/debug/pc-debug-common.gc") (require "engine/math/quaternion-h.gc") (require "engine/game/game-info-h.gc") - -#| - Various debugging displays made for the pc port. This file includes overrides or game-specific implementations. - |# +#| Various debugging displays made for the pc port. This file includes overrides or game-specific implementations. |# ;; debug-only file! (declare-file (debug)) - -(defmethod print-debug-misc pc-settings-jak1 ((obj pc-settings-jak1)) - "prints various miscellaneous debug text to the game console, according to what's enabled in this object." - +(defmethod print-debug-misc ((obj pc-settings-jak1)) + "prints various miscellaneous debug text to the game console, according to what's enabled in this object." (when *display-bug-report* (format *stdcon* "~0kbug-report ~A~%" *user*) - (format *stdcon* "nick ~A continue ~S~%" (-> *load-state* vis-nick) (-> *game-info* current-continue name)) - (dotimes (i (-> *level* length)) - (format *stdcon* "level ~D ~12A ~A~%" i (-> *level* level i name) (-> *level* level i display?)) - ) - (format *stdcon* "music ~A (f: ~D/~S)~%" (-> *setting-control* current music) (-> *setting-control* current sound-flava) (music-flava->string (the-as music-flava (-> *setting-control* default sound-flava)))) - (format *stdcon* "sound ~A ~A~%" *sound-bank-1* *sound-bank-2*) - (let ((pos (target-pos 0))) - (format *stdcon* "target ~m ~m ~m~%" (-> pos x) (-> pos y) (-> pos z)) - ) - (let ((pos (camera-pos))) - (format *stdcon* "cam-trans ~m ~m ~m~%" (-> pos x) (-> pos y) (-> pos z)) - ) - (let ((rot (new 'stack 'quaternion))) - (matrix->quaternion rot (-> *math-camera* camera-rot)) - (format *stdcon* "cam-rot ~f ~f ~f ~f~%" (-> rot x) (-> rot y) (-> rot z) (-> rot w)) - ) - (format *stdcon* "~1k") - ) - ) - + (format *stdcon* "nick ~A continue ~S~%" (-> *load-state* vis-nick) (-> *game-info* current-continue name)) + (dotimes (i (-> *level* length)) + (format *stdcon* "level ~D ~12A ~A~%" i (-> *level* level i name) (-> *level* level i display?))) + (format *stdcon* + "music ~A (f: ~D/~S)~%" + (-> *setting-control* current music) + (-> *setting-control* current sound-flava) + (music-flava->string (the-as music-flava (-> *setting-control* default sound-flava)))) + (format *stdcon* "sound ~A ~A~%" *sound-bank-1* *sound-bank-2*) + (let ((pos (target-pos 0))) (format *stdcon* "target ~m ~m ~m~%" (-> pos x) (-> pos y) (-> pos z))) + (let ((pos (camera-pos))) (format *stdcon* "cam-trans ~m ~m ~m~%" (-> pos x) (-> pos y) (-> pos z))) + (let ((rot (new 'stack 'quaternion))) + (matrix->quaternion rot (-> *math-camera* camera-rot)) + (format *stdcon* "cam-rot ~f ~f ~f ~f~%" (-> rot x) (-> rot y) (-> rot z) (-> rot w))) + (format *stdcon* "~1k"))) (defconstant MEM_BAR_NUM 7) ;; amount of memory usage bars (override later if wanted) -(defmethod draw-memory pc-settings ((obj pc-settings) (buf dma-buffer)) - "draw the memory heap status in the bottom right corner" - - (when *display-heap-status* - (draw-memory-bar-kheap buf global :idx 0 :color (static-rgba 32 32 255 64)) - (draw-memory-bar-kheap buf debug :idx 1 :color (static-rgba 255 32 32 64)) - (draw-memory-bar-kheap buf (-> *level* level 0 heap) :name "l0" :idx 2 :color (static-rgba 32 255 255 64)) - (draw-memory-bar-kheap buf (-> *level* level 1 heap) :name "l1" :idx 3 :color (static-rgba 255 32 255 64)) - (draw-memory-bar-dead-pool-heap buf *nk-dead-pool* :name "actor" :idx 4 :color (static-rgba 32 255 32 64)) - (draw-memory-bar-generic buf - :remain (* 16 (dma-buffer-free (-> (current-frame) global-buf))) - :total (length (-> (current-frame) global-buf)) - :name "dma-global" :idx 5 :color (static-rgba 32 32 255 64)) - (draw-memory-bar-generic buf - :remain (* 16 (dma-buffer-free (-> (current-frame) debug-buf))) - :total (length (-> (current-frame) debug-buf)) - :name "dma-debug" :idx 6 :color (static-rgba 255 32 32 64)) - #t) - ) - +(defmethod draw-memory ((obj pc-settings) (buf dma-buffer)) + "draw the memory heap status in the bottom right corner" + (when *display-heap-status* + (draw-memory-bar-kheap buf global :idx 0 :color (static-rgba 32 32 255 64)) + (draw-memory-bar-kheap buf debug :idx 1 :color (static-rgba 255 32 32 64)) + (draw-memory-bar-kheap buf (-> *level* level 0 heap) :name "l0" :idx 2 :color (static-rgba 32 255 255 64)) + (draw-memory-bar-kheap buf (-> *level* level 1 heap) :name "l1" :idx 3 :color (static-rgba 255 32 255 64)) + (draw-memory-bar-dead-pool-heap buf *nk-dead-pool* :name "actor" :idx 4 :color (static-rgba 32 255 32 64)) + (draw-memory-bar-generic buf + :remain + (* 16 (dma-buffer-free (-> (current-frame) global-buf))) + :total + (length (-> (current-frame) global-buf)) + :name "dma-global" + :idx 5 + :color + (static-rgba 32 32 255 64)) + (draw-memory-bar-generic buf + :remain + (* 16 (dma-buffer-free (-> (current-frame) debug-buf))) + :total + (length (-> (current-frame) debug-buf)) + :name "dma-debug" + :idx 6 + :color + (static-rgba 255 32 32 64)) + #t)) diff --git a/goal_src/jak1/pc/features/autosplit-h.gc b/goal_src/jak1/pc/features/autosplit-h.gc index aab3489091..fa7ce0303d 100644 --- a/goal_src/jak1/pc/features/autosplit-h.gc +++ b/goal_src/jak1/pc/features/autosplit-h.gc @@ -1,9 +1,7 @@ ;;-*-Lisp-*- (in-package goal) - (require "kernel-defs.gc") - ;; LiveSplit ASL requires all settings to initalized _before_ you connect the process ;; Therefore everything has to be laid out in a predictable fashion before hand ;; So this is a lot of hard-coding, but not too bad when just copied from the debug menu code @@ -11,165 +9,167 @@ ;; DO NOT change the order, appending to the end is safe! (deftype autosplit-info-jak1 (structure) (;; General stats - (num-power-cells uint32) - (num-orbs uint32) - (num-scout-flies uint32) + (num-power-cells uint32) + (num-orbs uint32) + (num-scout-flies uint32) ;; orbs per-level - (training-num-orbs uint8) - (village1-num-orbs uint8) - (beach-num-orbs uint8) - (jungle-num-orbs uint8) - (misty-num-orbs uint8) - (firecanyon-num-orbs uint8) - (village2-num-orbs uint8) - (sunken-num-orbs uint8) - (swamp-num-orbs uint8) - (rolling-num-orbs uint8) - (ogre-num-orbs uint8) - (village3-num-orbs uint8) - (snow-num-orbs uint8) - (cave-num-orbs uint8) - (lavatube-num-orbs uint8) - (citadel-num-orbs uint8) + (training-num-orbs uint8) + (village1-num-orbs uint8) + (beach-num-orbs uint8) + (jungle-num-orbs uint8) + (misty-num-orbs uint8) + (firecanyon-num-orbs uint8) + (village2-num-orbs uint8) + (sunken-num-orbs uint8) + (swamp-num-orbs uint8) + (rolling-num-orbs uint8) + (ogre-num-orbs uint8) + (village3-num-orbs uint8) + (snow-num-orbs uint8) + (cave-num-orbs uint8) + (lavatube-num-orbs uint8) + (citadel-num-orbs uint8) ;; scout flies per-level - (training-num-scout-flies uint8) - (village1-num-scout-flies uint8) - (beach-num-scout-flies uint8) - (jungle-num-scout-flies uint8) - (misty-num-scout-flies uint8) - (firecanyon-num-scout-flies uint8) - (village2-num-scout-flies uint8) - (sunken-num-scout-flies uint8) - (swamp-num-scout-flies uint8) - (rolling-num-scout-flies uint8) - (ogre-num-scout-flies uint8) - (village3-num-scout-flies uint8) - (snow-num-scout-flies uint8) - (cave-num-scout-flies uint8) - (lavatube-num-scout-flies uint8) - (citadel-num-scout-flies uint8) + (training-num-scout-flies uint8) + (village1-num-scout-flies uint8) + (beach-num-scout-flies uint8) + (jungle-num-scout-flies uint8) + (misty-num-scout-flies uint8) + (firecanyon-num-scout-flies uint8) + (village2-num-scout-flies uint8) + (sunken-num-scout-flies uint8) + (swamp-num-scout-flies uint8) + (rolling-num-scout-flies uint8) + (ogre-num-scout-flies uint8) + (village3-num-scout-flies uint8) + (snow-num-scout-flies uint8) + (cave-num-scout-flies uint8) + (lavatube-num-scout-flies uint8) + (citadel-num-scout-flies uint8) ;; Version Info (it's so far down because it was an after thought!) - (version-major uint16) - (version-minor uint16) - (padding-stats uint8 164) ;; padding for future growth + (version-major uint16) + (version-minor uint16) + (padding-stats uint8 164) ;; padding for future growth ;; loading/cutscene/control related info - (game-hash uint32) - (in-cutscene? symbol) - (is-loading? symbol) - (padding-controls uint8 200) ;; padding for future growth + (game-hash uint32) + (in-cutscene? symbol) + (is-loading? symbol) + (padding-controls uint8 200) ;; padding for future growth ;; need-resolution tasks - (res-training-gimmie uint8) - (res-training-door uint8) - (res-training-climb uint8) - (res-training-buzzer uint8) - (res-jungle-eggtop uint8) - (res-jungle-lurkerm uint8) - (res-jungle-tower uint8) - (res-jungle-fishgame uint8) - (res-jungle-plant uint8) - (res-jungle-buzzer uint8) - (res-jungle-canyon-end uint8) - (res-jungle-temple-door uint8) - (res-village1-yakow uint8) - (res-village1-mayor-money uint8) - (res-village1-uncle-money uint8) - (res-village1-oracle-money1 uint8) - (res-village1-oracle-money2 uint8) - (res-village1-buzzer uint8) - (res-beach-ecorocks uint8) - (res-beach-pelican uint8) - (res-beach-flutflut uint8) - (res-beach-seagull uint8) - (res-beach-cannon uint8) - (res-beach-buzzer uint8) - (res-beach-gimmie uint8) - (res-beach-sentinel uint8) - (res-misty-muse uint8) - (res-misty-boat uint8) - (res-misty-warehouse uint8) - (res-misty-cannon uint8) - (res-misty-bike uint8) - (res-misty-buzzer uint8) - (res-misty-bike-jump uint8) - (res-misty-eco-challenge uint8) - (res-village2-gambler-money uint8) + (res-training-gimmie uint8) + (res-training-door uint8) + (res-training-climb uint8) + (res-training-buzzer uint8) + (res-jungle-eggtop uint8) + (res-jungle-lurkerm uint8) + (res-jungle-tower uint8) + (res-jungle-fishgame uint8) + (res-jungle-plant uint8) + (res-jungle-buzzer uint8) + (res-jungle-canyon-end uint8) + (res-jungle-temple-door uint8) + (res-village1-yakow uint8) + (res-village1-mayor-money uint8) + (res-village1-uncle-money uint8) + (res-village1-oracle-money1 uint8) + (res-village1-oracle-money2 uint8) + (res-village1-buzzer uint8) + (res-beach-ecorocks uint8) + (res-beach-pelican uint8) + (res-beach-flutflut uint8) + (res-beach-seagull uint8) + (res-beach-cannon uint8) + (res-beach-buzzer uint8) + (res-beach-gimmie uint8) + (res-beach-sentinel uint8) + (res-misty-muse uint8) + (res-misty-boat uint8) + (res-misty-warehouse uint8) + (res-misty-cannon uint8) + (res-misty-bike uint8) + (res-misty-buzzer uint8) + (res-misty-bike-jump uint8) + (res-misty-eco-challenge uint8) + (res-village2-gambler-money uint8) (res-village2-geologist-money uint8) - (res-village2-warrior-money uint8) - (res-village2-oracle-money1 uint8) - (res-village2-oracle-money2 uint8) - (res-village2-buzzer uint8) - (res-swamp-billy uint8) - (res-swamp-flutflut uint8) - (res-swamp-battle uint8) - (res-swamp-tether-1 uint8) - (res-swamp-tether-2 uint8) - (res-swamp-tether-3 uint8) - (res-swamp-tether-4 uint8) - (res-swamp-buzzer uint8) - (res-swamp-arm uint8) - (res-sunken-platforms uint8) - (res-sunken-pipe uint8) - (res-sunken-slide uint8) - (res-sunken-room uint8) - (res-sunken-sharks uint8) - (res-sunken-buzzer uint8) - (res-sunken-top-of-helix uint8) - (res-sunken-spinning-room uint8) - (res-rolling-race uint8) - (res-rolling-robbers uint8) - (res-rolling-moles uint8) - (res-rolling-plants uint8) - (res-rolling-lake uint8) - (res-rolling-buzzer uint8) - (res-rolling-ring-chase-1 uint8) - (res-rolling-ring-chase-2 uint8) - (res-snow-eggtop uint8) - (res-snow-ram uint8) - (res-snow-fort uint8) - (res-snow-ball uint8) - (res-snow-bunnies uint8) - (res-snow-buzzer uint8) - (res-snow-bumpers uint8) - (res-snow-cage uint8) - (res-red-eggtop uint8) - (res-firecanyon-buzzer uint8) - (res-firecanyon-end uint8) - (res-citadel-sage-green uint8) - (res-citadel-sage-blue uint8) - (res-citadel-sage-red uint8) - (res-citadel-sage-yellow uint8) - (res-citadel-buzzer uint8) - (res-village3-extra1 uint8) - (res-village3-buzzer uint8) - (res-village3-miner-money1 uint8) - (res-village3-miner-money2 uint8) - (res-village3-miner-money3 uint8) - (res-village3-miner-money4 uint8) - (res-village3-oracle-money1 uint8) - (res-village3-oracle-money2 uint8) - (res-cave-gnawers uint8) - (res-cave-dark-crystals uint8) - (res-cave-dark-climb uint8) - (res-cave-robot-climb uint8) - (res-cave-swing-poles uint8) - (res-cave-spider-tunnel uint8) - (res-cave-platforms uint8) - (res-cave-buzzer uint8) - (res-ogre-boss uint8) - (res-ogre-end uint8) - (res-ogre-buzzer uint8) - (res-ogre-secret uint8) - (res-lavatube-end uint8) - (res-lavatube-buzzer uint8) - (res-lavatube-balls uint8) - (res-intro uint8) + (res-village2-warrior-money uint8) + (res-village2-oracle-money1 uint8) + (res-village2-oracle-money2 uint8) + (res-village2-buzzer uint8) + (res-swamp-billy uint8) + (res-swamp-flutflut uint8) + (res-swamp-battle uint8) + (res-swamp-tether-1 uint8) + (res-swamp-tether-2 uint8) + (res-swamp-tether-3 uint8) + (res-swamp-tether-4 uint8) + (res-swamp-buzzer uint8) + (res-swamp-arm uint8) + (res-sunken-platforms uint8) + (res-sunken-pipe uint8) + (res-sunken-slide uint8) + (res-sunken-room uint8) + (res-sunken-sharks uint8) + (res-sunken-buzzer uint8) + (res-sunken-top-of-helix uint8) + (res-sunken-spinning-room uint8) + (res-rolling-race uint8) + (res-rolling-robbers uint8) + (res-rolling-moles uint8) + (res-rolling-plants uint8) + (res-rolling-lake uint8) + (res-rolling-buzzer uint8) + (res-rolling-ring-chase-1 uint8) + (res-rolling-ring-chase-2 uint8) + (res-snow-eggtop uint8) + (res-snow-ram uint8) + (res-snow-fort uint8) + (res-snow-ball uint8) + (res-snow-bunnies uint8) + (res-snow-buzzer uint8) + (res-snow-bumpers uint8) + (res-snow-cage uint8) + (res-red-eggtop uint8) + (res-firecanyon-buzzer uint8) + (res-firecanyon-end uint8) + (res-citadel-sage-green uint8) + (res-citadel-sage-blue uint8) + (res-citadel-sage-red uint8) + (res-citadel-sage-yellow uint8) + (res-citadel-buzzer uint8) + (res-village3-extra1 uint8) + (res-village3-buzzer uint8) + (res-village3-miner-money1 uint8) + (res-village3-miner-money2 uint8) + (res-village3-miner-money3 uint8) + (res-village3-miner-money4 uint8) + (res-village3-oracle-money1 uint8) + (res-village3-oracle-money2 uint8) + (res-cave-gnawers uint8) + (res-cave-dark-crystals uint8) + (res-cave-dark-climb uint8) + (res-cave-robot-climb uint8) + (res-cave-swing-poles uint8) + (res-cave-spider-tunnel uint8) + (res-cave-platforms uint8) + (res-cave-buzzer uint8) + (res-ogre-boss uint8) + (res-ogre-end uint8) + (res-ogre-buzzer uint8) + (res-ogre-secret uint8) + (res-lavatube-end uint8) + (res-lavatube-buzzer uint8) + (res-lavatube-balls uint8) + (res-intro uint8) ;; misc other tasks - (int-finalboss-movies uint8) - (unk-finalboss-movies uint8) - (int-jungle-fishgame uint8) + (int-finalboss-movies uint8) + (unk-finalboss-movies uint8) + (int-jungle-fishgame uint8) ;; end marker just to make things look nice in a memory view - (end-marker uint8 4))) + (end-marker uint8 4))) (define-extern *autosplit-info-jak1* autosplit-info-jak1) + (define-extern update-autosplit-info-jak1 (function none)) + (define-extern update-autosplit-jak1-new-game (function none)) diff --git a/goal_src/jak1/pc/features/autosplit.gc b/goal_src/jak1/pc/features/autosplit.gc index 9b57e91a24..bbf33f7010 100644 --- a/goal_src/jak1/pc/features/autosplit.gc +++ b/goal_src/jak1/pc/features/autosplit.gc @@ -1,15 +1,15 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/game/game-info.gc") (require "pc/features/autosplit-h.gc") - - (define *autosplit-info-jak1* (new 'static 'autosplit-info-jak1)) + ;; Setup markers (charp<-string (-> *autosplit-info-jak1* end-marker) "end") + ;; Setup Padding (charp<-string (-> *autosplit-info-jak1* padding-stats) "padding-stats!") + (charp<-string (-> *autosplit-info-jak1* padding-controls) "padding-controls!") (defmacro autosplit-flag-task-complete! (field-name task-name) @@ -21,9 +21,8 @@ (set! (-> *autosplit-info-jak1* num-power-cells) (the int (-> *game-info* fuel))) (set! (-> *autosplit-info-jak1* num-orbs) (the int (-> *game-info* money-total))) (set! (-> *autosplit-info-jak1* num-scout-flies) (the int (-> *game-info* buzzer-total))) - ;; per-level orb/fly counts - ;; when we are blacked out in loads the value of these are temporarily 0, and that messes with the auto splitter. + ;; when we are blacked out in loads the value of these are temporarily 0, and that messes with the auto splitter. (let ((in-blackout? (>= (-> *game-info* blackout-time) (current-time)))) (when (not in-blackout?) (set! (-> *autosplit-info-jak1* training-num-orbs) (-> *game-info* money-per-level (level-task-data-index training))) @@ -31,7 +30,8 @@ (set! (-> *autosplit-info-jak1* beach-num-orbs) (-> *game-info* money-per-level (level-task-data-index beach))) (set! (-> *autosplit-info-jak1* jungle-num-orbs) (-> *game-info* money-per-level (level-task-data-index jungle))) (set! (-> *autosplit-info-jak1* misty-num-orbs) (-> *game-info* money-per-level (level-task-data-index misty))) - (set! (-> *autosplit-info-jak1* firecanyon-num-orbs) (-> *game-info* money-per-level (level-task-data-index firecanyon))) + (set! (-> *autosplit-info-jak1* firecanyon-num-orbs) + (-> *game-info* money-per-level (level-task-data-index firecanyon))) (set! (-> *autosplit-info-jak1* village2-num-orbs) (-> *game-info* money-per-level (level-task-data-index village2))) (set! (-> *autosplit-info-jak1* sunken-num-orbs) (-> *game-info* money-per-level (level-task-data-index sunken))) (set! (-> *autosplit-info-jak1* swamp-num-orbs) (-> *game-info* money-per-level (level-task-data-index swamp))) @@ -42,27 +42,120 @@ (set! (-> *autosplit-info-jak1* cave-num-orbs) (-> *game-info* money-per-level (level-task-data-index cave))) (set! (-> *autosplit-info-jak1* lavatube-num-orbs) (-> *game-info* money-per-level (level-task-data-index lavatube))) (set! (-> *autosplit-info-jak1* citadel-num-orbs) (-> *game-info* money-per-level (level-task-data-index citadel))) - - (set! (-> *autosplit-info-jak1* training-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index training) task-info (-> *level-task-data* (level-task-data-index training) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* village1-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index village1) task-info (-> *level-task-data* (level-task-data-index village1) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* beach-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index beach) task-info (-> *level-task-data* (level-task-data-index beach) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* jungle-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index jungle) task-info (-> *level-task-data* (level-task-data-index jungle) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* misty-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index misty) task-info (-> *level-task-data* (level-task-data-index misty) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* firecanyon-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index firecanyon) task-info (-> *level-task-data* (level-task-data-index firecanyon) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* village2-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index village2) task-info (-> *level-task-data* (level-task-data-index village2) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* sunken-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index sunken) task-info (-> *level-task-data* (level-task-data-index sunken) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* swamp-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index swamp) task-info (-> *level-task-data* (level-task-data-index swamp) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* rolling-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index rolling) task-info (-> *level-task-data* (level-task-data-index rolling) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* ogre-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index ogre) task-info (-> *level-task-data* (level-task-data-index ogre) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* village3-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index village3) task-info (-> *level-task-data* (level-task-data-index village3) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* snow-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index snow) task-info (-> *level-task-data* (level-task-data-index snow) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* cave-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index cave) task-info (-> *level-task-data* (level-task-data-index cave) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* lavatube-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index lavatube) task-info (-> *level-task-data* (level-task-data-index lavatube) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* citadel-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index citadel) task-info (-> *level-task-data* (level-task-data-index citadel) buzzer-task-index) task-id)))) - ) + (set! (-> *autosplit-info-jak1* training-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index training) + task-info + (-> *level-task-data* (level-task-data-index training) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* village1-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index village1) + task-info + (-> *level-task-data* (level-task-data-index village1) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* beach-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index beach) + task-info + (-> *level-task-data* (level-task-data-index beach) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* jungle-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index jungle) + task-info + (-> *level-task-data* (level-task-data-index jungle) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* misty-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index misty) + task-info + (-> *level-task-data* (level-task-data-index misty) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* firecanyon-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index firecanyon) + task-info + (-> *level-task-data* (level-task-data-index firecanyon) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* village2-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index village2) + task-info + (-> *level-task-data* (level-task-data-index village2) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* sunken-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index sunken) + task-info + (-> *level-task-data* (level-task-data-index sunken) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* swamp-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index swamp) + task-info + (-> *level-task-data* (level-task-data-index swamp) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* rolling-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index rolling) + task-info + (-> *level-task-data* (level-task-data-index rolling) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* ogre-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index ogre) + task-info + (-> *level-task-data* (level-task-data-index ogre) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* village3-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index village3) + task-info + (-> *level-task-data* (level-task-data-index village3) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* snow-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index snow) + task-info + (-> *level-task-data* (level-task-data-index snow) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* cave-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index cave) + task-info + (-> *level-task-data* (level-task-data-index cave) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* lavatube-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index lavatube) + task-info + (-> *level-task-data* (level-task-data-index lavatube) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* citadel-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index citadel) + task-info + (-> *level-task-data* (level-task-data-index citadel) buzzer-task-index) + task-id))))) ;; loading/cutscene related flags (set! (-> *autosplit-info-jak1* in-cutscene?) (real-movie?)) - ;; need resolution flags (autosplit-flag-task-complete! res-training-gimmie training-gimmie) (autosplit-flag-task-complete! res-training-door training-door) @@ -169,16 +262,16 @@ (autosplit-flag-task-complete! res-lavatube-buzzer lavatube-buzzer) (autosplit-flag-task-complete! res-lavatube-balls lavatube-balls) (autosplit-flag-task-complete! res-intro intro) - ;; other misc tasks - (set! (-> *autosplit-info-jak1* int-finalboss-movies) (if (task-closed? (game-task finalboss-movies) (task-status need-introduction)) 1 0)) - (set! (-> *autosplit-info-jak1* unk-finalboss-movies) (if (task-closed? (game-task finalboss-movies) (task-status unknown)) 1 0)) - (set! (-> *autosplit-info-jak1* int-jungle-fishgame) (if (task-closed? (game-task jungle-fishgame) (task-status need-introduction)) 1 0)) - + (set! (-> *autosplit-info-jak1* int-finalboss-movies) + (if (task-closed? (game-task finalboss-movies) (task-status need-introduction)) 1 0)) + (set! (-> *autosplit-info-jak1* unk-finalboss-movies) + (if (task-closed? (game-task finalboss-movies) (task-status unknown)) 1 0)) + (set! (-> *autosplit-info-jak1* int-jungle-fishgame) + (if (task-closed? (game-task jungle-fishgame) (task-status need-introduction)) 1 0)) ;; end (none)) - (defun update-autosplit-jak1-new-game () (set! (-> *autosplit-info-jak1* game-hash) (pc-get-unix-timestamp)) (none)) diff --git a/goal_src/jak1/pc/features/speedruns-h.gc b/goal_src/jak1/pc/features/speedruns-h.gc index d58a74496a..e00164962c 100644 --- a/goal_src/jak1/pc/features/speedruns-h.gc +++ b/goal_src/jak1/pc/features/speedruns-h.gc @@ -1,58 +1,56 @@ ;;-*-Lisp-*- (in-package goal) - (require "kernel-defs.gc") - - (defenum speedrun-category :type uint32 ;; Main Categories - (full-game 0) ;; Full game run (any category for now, can repurpose as Any% if we split them out later) + (full-game 0) ;; Full game run (any category for now, can repurpose as Any% if we split them out later) ;; (full-game-100 1) ;; 100% ;; (full-game-noLTS 2) ;; No Lava Tube skip ;; (full-game-noFCS 3) ;; No Fire Canyon skip ;; (full-game-orbless 4) ;; Orbless ;; (full-game-all-flies 5) ;; All Flies ;; (full-game-all-orbs 6) ;; All Orbs - ;; Individual Levels - (il-training 100) ;; Geyser Rock IL - (il-village1 101) ;; Sandover Village IL - (il-beach 102) ;; Sentinel Beach IL - (il-jungle 103) ;; Forbidden Jungle IL - (il-misty 104) ;; Misty Island IL - (il-firecanyon 105) ;; Fire Canyon IL - (il-village2 106) ;; Rock Village IL - (il-sunken 107) ;; Lost Precursor City IL - (il-swamp 108) ;; Boggy Swamp IL - (il-rolling 109) ;; Precursor Basin IL - (il-ogre 110) ;; Mountain Pass IL - (il-village3 111) ;; Volcanic Crater IL - (il-snow 112) ;; Snowy Mountain IL - (il-cave 113) ;; Spider Cave IL - (il-lavatube 114) ;; Lava Tube IL - (il-citadel 115) ;; Gol and Maia's Citadel IL - + (il-training 100) ;; Geyser Rock IL + (il-village1 101) ;; Sandover Village IL + (il-beach 102) ;; Sentinel Beach IL + (il-jungle 103) ;; Forbidden Jungle IL + (il-misty 104) ;; Misty Island IL + (il-firecanyon 105) ;; Fire Canyon IL + (il-village2 106) ;; Rock Village IL + (il-sunken 107) ;; Lost Precursor City IL + (il-swamp 108) ;; Boggy Swamp IL + (il-rolling 109) ;; Precursor Basin IL + (il-ogre 110) ;; Mountain Pass IL + (il-village3 111) ;; Volcanic Crater IL + (il-snow 112) ;; Snowy Mountain IL + (il-cave 113) ;; Spider Cave IL + (il-lavatube 114) ;; Lava Tube IL + (il-citadel 115) ;; Gol and Maia's Citadel IL ;; Category Extensions - (new-game-plus 116) ;; NG+ - (hub1-100 117) ;; Hub 1 100% (same as full game) - (hub2-100 118) ;; Hub 2 100% (all of Hub 1 completed) - (hub3-100 119) ;; Hub 3 100% (all of Hub 1+2 completed) - (all-cutscenes 120) ;; All Cutscenes + (new-game-plus 116) ;; NG+ + (hub1-100 117) ;; Hub 1 100% (same as full game) + (hub2-100 118) ;; Hub 2 100% (all of Hub 1 completed) + (hub3-100 119) ;; Hub 3 100% (all of Hub 1+2 completed) + (all-cutscenes 120) ;; All Cutscenes ) (deftype speedrun-info-jak1 (structure) - ( - (category speedrun-category) + ((category speedrun-category) (needs-post-blackout-setup? symbol) - (should-display? symbol) - ) - ) + (should-display? symbol))) (define-extern start-speedrun (function speedrun-category none)) + (define-extern is-speedrun-category? (function symbol symbol)) + (define-extern hide-speedrun-display (function none)) + (define-extern speedrun-start-full-game-run (function none)) + (define-extern setup-speedrun-post-blackout (function none)) + (define-extern speedrun-mode-update (function none)) + (define-extern speedrun-draw-settings (function none)) diff --git a/goal_src/jak1/pc/features/speedruns.gc b/goal_src/jak1/pc/features/speedruns.gc index b10175813f..5379aea062 100644 --- a/goal_src/jak1/pc/features/speedruns.gc +++ b/goal_src/jak1/pc/features/speedruns.gc @@ -1,118 +1,124 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/game/game-save.gc") (require "engine/game/task/game-task-h.gc") (require "pc/pckernel-common.gc") (require "pc/features/autosplit-h.gc") - - (define *speedrun-info* (new 'static 'speedrun-info-jak1 :should-display? #t :needs-post-blackout-setup? #f)) -(define *hub1-cell-list* (new 'static 'boxed-array :type game-task - (game-task training-gimmie) - (game-task training-door) - (game-task training-climb) - (game-task training-buzzer) - (game-task village1-mayor-money) - (game-task village1-uncle-money) - (game-task village1-yakow) - (game-task village1-oracle-money1) - (game-task village1-oracle-money2) - (game-task village1-buzzer) - (game-task beach-ecorocks) - (game-task beach-flutflut) - (game-task beach-pelican) - (game-task beach-seagull) - (game-task beach-cannon) - (game-task beach-gimmie) - (game-task beach-sentinel) - (game-task beach-buzzer) - (game-task jungle-lurkerm) - (game-task jungle-tower) - (game-task jungle-eggtop) - (game-task jungle-plant) - (game-task jungle-fishgame) - (game-task jungle-canyon-end) - (game-task jungle-temple-door) - (game-task jungle-buzzer) - (game-task misty-muse) - (game-task misty-boat) - (game-task misty-cannon) - (game-task misty-warehouse) - (game-task misty-bike) - (game-task misty-bike-jump) - (game-task misty-eco-challenge) - (game-task misty-buzzer) - (game-task firecanyon-end) - (game-task firecanyon-buzzer) - )) +(define *hub1-cell-list* + (new 'static + 'boxed-array + :type + game-task + (game-task training-gimmie) + (game-task training-door) + (game-task training-climb) + (game-task training-buzzer) + (game-task village1-mayor-money) + (game-task village1-uncle-money) + (game-task village1-yakow) + (game-task village1-oracle-money1) + (game-task village1-oracle-money2) + (game-task village1-buzzer) + (game-task beach-ecorocks) + (game-task beach-flutflut) + (game-task beach-pelican) + (game-task beach-seagull) + (game-task beach-cannon) + (game-task beach-gimmie) + (game-task beach-sentinel) + (game-task beach-buzzer) + (game-task jungle-lurkerm) + (game-task jungle-tower) + (game-task jungle-eggtop) + (game-task jungle-plant) + (game-task jungle-fishgame) + (game-task jungle-canyon-end) + (game-task jungle-temple-door) + (game-task jungle-buzzer) + (game-task misty-muse) + (game-task misty-boat) + (game-task misty-cannon) + (game-task misty-warehouse) + (game-task misty-bike) + (game-task misty-bike-jump) + (game-task misty-eco-challenge) + (game-task misty-buzzer) + (game-task firecanyon-end) + (game-task firecanyon-buzzer))) -(define *hub2-cell-list* (new 'static 'boxed-array :type game-task - (game-task village2-gambler-money) - (game-task village2-geologist-money) - (game-task village2-warrior-money) - (game-task village2-oracle-money1) - (game-task village2-oracle-money2) - (game-task village2-buzzer) - (game-task sunken-room) - (game-task sunken-pipe) - (game-task sunken-slide) - (game-task sunken-sharks) - (game-task sunken-platforms) - (game-task sunken-top-of-helix) - (game-task sunken-spinning-room) - (game-task sunken-buzzer) - (game-task swamp-flutflut) - (game-task swamp-billy) - (game-task swamp-battle) - (game-task swamp-tether-4) - (game-task swamp-tether-1) - (game-task swamp-tether-2) - (game-task swamp-tether-3) - (game-task swamp-buzzer) - (game-task rolling-moles) - (game-task rolling-robbers) - (game-task rolling-race) - (game-task rolling-lake) - (game-task rolling-plants) - (game-task rolling-ring-chase-1) - (game-task rolling-ring-chase-2) - (game-task rolling-buzzer) - (game-task ogre-boss) - (game-task ogre-end) - (game-task ogre-secret) - (game-task ogre-buzzer) - )) +(define *hub2-cell-list* + (new 'static + 'boxed-array + :type + game-task + (game-task village2-gambler-money) + (game-task village2-geologist-money) + (game-task village2-warrior-money) + (game-task village2-oracle-money1) + (game-task village2-oracle-money2) + (game-task village2-buzzer) + (game-task sunken-room) + (game-task sunken-pipe) + (game-task sunken-slide) + (game-task sunken-sharks) + (game-task sunken-platforms) + (game-task sunken-top-of-helix) + (game-task sunken-spinning-room) + (game-task sunken-buzzer) + (game-task swamp-flutflut) + (game-task swamp-billy) + (game-task swamp-battle) + (game-task swamp-tether-4) + (game-task swamp-tether-1) + (game-task swamp-tether-2) + (game-task swamp-tether-3) + (game-task swamp-buzzer) + (game-task rolling-moles) + (game-task rolling-robbers) + (game-task rolling-race) + (game-task rolling-lake) + (game-task rolling-plants) + (game-task rolling-ring-chase-1) + (game-task rolling-ring-chase-2) + (game-task rolling-buzzer) + (game-task ogre-boss) + (game-task ogre-end) + (game-task ogre-secret) + (game-task ogre-buzzer))) -(define *hub3-cell-list* (new 'static 'boxed-array :type game-task - (game-task village3-miner-money1) - (game-task village3-miner-money2) - (game-task village3-miner-money3) - (game-task village3-miner-money4) - (game-task village3-oracle-money1) - (game-task village3-oracle-money2) - (game-task village3-extra1) - (game-task village3-buzzer) - (game-task snow-eggtop) - (game-task snow-ram) - (game-task snow-bumpers) - (game-task snow-cage) - (game-task snow-fort) - (game-task snow-ball) - (game-task snow-bunnies) - (game-task snow-buzzer) - (game-task cave-gnawers) - (game-task cave-dark-crystals) - (game-task cave-dark-climb) - (game-task cave-robot-climb) - (game-task cave-swing-poles) - (game-task cave-spider-tunnel) - (game-task cave-platforms) - (game-task cave-buzzer) - (game-task lavatube-end) - (game-task lavatube-buzzer) - )) +(define *hub3-cell-list* + (new 'static + 'boxed-array + :type + game-task + (game-task village3-miner-money1) + (game-task village3-miner-money2) + (game-task village3-miner-money3) + (game-task village3-miner-money4) + (game-task village3-oracle-money1) + (game-task village3-oracle-money2) + (game-task village3-extra1) + (game-task village3-buzzer) + (game-task snow-eggtop) + (game-task snow-ram) + (game-task snow-bumpers) + (game-task snow-cage) + (game-task snow-fort) + (game-task snow-ball) + (game-task snow-bunnies) + (game-task snow-buzzer) + (game-task cave-gnawers) + (game-task cave-dark-crystals) + (game-task cave-dark-climb) + (game-task cave-robot-climb) + (game-task cave-swing-poles) + (game-task cave-spider-tunnel) + (game-task cave-platforms) + (game-task cave-buzzer) + (game-task lavatube-end) + (game-task lavatube-buzzer))) ;; unused ;; (define *citadel-cell-list* (new 'static 'boxed-array :type game-task @@ -125,8 +131,18 @@ (defun is-speedrun-category? ((category symbol)) (and (-> *pc-settings* speedrunner-mode?) - (name= category (enum->string speedrun-category (-> *speedrun-info* category))) - ) + (name= category (enum->string speedrun-category (-> *speedrun-info* category))))) + +(defun enforce-speedrun-pc-settings () + ;; Disable any active cheats + (set! (-> *pc-settings* cheats) (the-as pc-cheats #x0)) + ;; ensure PS2 actor vis is enabled + (set! (-> *pc-settings* ps2-actor-vis?) #t) + ;; ensure FPS set to `60` + (when (!= (-> *pc-settings* target-fps) 60) + (set-frame-rate! *pc-settings* 60 #t) + ) + (none) ) (defun start-speedrun ((category speedrun-category)) @@ -138,296 +154,237 @@ (set! (-> *speedrun-info* should-display?) #t) (set! (-> *speedrun-info* needs-post-blackout-setup?) #t) ;; start new game with specified checkpoint, if any (otherwise we're resetting current category) - (if category - (set! (-> *speedrun-info* category) category) - ) + (if category (set! (-> *speedrun-info* category) category)) (case (-> *speedrun-info* category) (((speedrun-category full-game)) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "game-start") - ) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "game-start")) (((speedrun-category il-training)) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "game-start") - ) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "game-start")) (((speedrun-category il-village1)) - ;; spawn at the green sage hut warp gate - (initialize! *game-info* 'game (the-as game-save #f) "village1-warp") - ) + ;; spawn at the green sage hut warp gate + (initialize! *game-info* 'game (the-as game-save #f) "village1-warp")) (((speedrun-category il-beach)) - ;; spawn at beach - (initialize! *game-info* 'game (the-as game-save #f) "beach-start") - ) + ;; spawn at beach + (initialize! *game-info* 'game (the-as game-save #f) "beach-start")) (((speedrun-category il-jungle)) - ;; spawn at start of FJ - (initialize! *game-info* 'game (the-as game-save #f) "jungle-start") - ) + ;; spawn at start of FJ + (initialize! *game-info* 'game (the-as game-save #f) "jungle-start")) (((speedrun-category il-misty)) - ;; spawn at start of misty - (initialize! *game-info* 'game (the-as game-save #f) "misty-start") - ) + ;; spawn at start of misty + (initialize! *game-info* 'game (the-as game-save #f) "misty-start")) (((speedrun-category il-firecanyon)) - ;; spawn at start of fire canyon - (initialize! *game-info* 'game (the-as game-save #f) "firecanyon-start") - ) + ;; spawn at start of fire canyon + (initialize! *game-info* 'game (the-as game-save #f) "firecanyon-start")) (((speedrun-category il-village2)) - ;; spawn at rock village start - (initialize! *game-info* 'game (the-as game-save #f) "village2-start") - ) + ;; spawn at rock village start + (initialize! *game-info* 'game (the-as game-save #f) "village2-start")) (((speedrun-category il-sunken)) - ;; spawn at start of LPC - (initialize! *game-info* 'game (the-as game-save #f) "sunken-start") - ) + ;; spawn at start of LPC + (initialize! *game-info* 'game (the-as game-save #f) "sunken-start")) (((speedrun-category il-swamp)) - ;; spawn at start of boggy - (initialize! *game-info* 'game (the-as game-save #f) "swamp-start") - ) + ;; spawn at start of boggy + (initialize! *game-info* 'game (the-as game-save #f) "swamp-start")) (((speedrun-category il-rolling)) - ;; spawn at start of basin - (initialize! *game-info* 'game (the-as game-save #f) "rolling-start") - ) + ;; spawn at start of basin + (initialize! *game-info* 'game (the-as game-save #f) "rolling-start")) (((speedrun-category il-ogre)) - ;; spawn before klaww - (initialize! *game-info* 'game (the-as game-save #f) "ogre-start") - ) + ;; spawn before klaww + (initialize! *game-info* 'game (the-as game-save #f) "ogre-start")) (((speedrun-category il-village3)) - ;; spawn at start of volcanic crater - (initialize! *game-info* 'game (the-as game-save #f) "village3-start") - ) + ;; spawn at start of volcanic crater + (initialize! *game-info* 'game (the-as game-save #f) "village3-start")) (((speedrun-category il-snow)) - ;; spawn at start of snowy - (initialize! *game-info* 'game (the-as game-save #f) "snow-start") - ) + ;; spawn at start of snowy + (initialize! *game-info* 'game (the-as game-save #f) "snow-start")) (((speedrun-category il-cave)) - ;; spawn at start of spider cave - (initialize! *game-info* 'game (the-as game-save #f) "maincave-start") - ) + ;; spawn at start of spider cave + (initialize! *game-info* 'game (the-as game-save #f) "maincave-start")) (((speedrun-category il-lavatube)) - ;; spawn at start of lava tube - (initialize! *game-info* 'game (the-as game-save #f) "lavatube-start") - ) + ;; spawn at start of lava tube + (initialize! *game-info* 'game (the-as game-save #f) "lavatube-start")) (((speedrun-category il-citadel)) - ;; spawn outside first citadel door - (initialize! *game-info* 'game (the-as game-save #f) "citadel-entrance") - ) + ;; spawn outside first citadel door + (initialize! *game-info* 'game (the-as game-save #f) "citadel-entrance")) (((speedrun-category new-game-plus)) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "game-start") - ) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "game-start")) (((speedrun-category hub1-100)) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "game-start") - ) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "game-start")) (((speedrun-category hub2-100)) - ;; spawn at end of fire canyon - (initialize! *game-info* 'game (the-as game-save #f) "firecanyon-end") - ) + ;; spawn at end of fire canyon + (initialize! *game-info* 'game (the-as game-save #f) "firecanyon-end")) (((speedrun-category hub3-100)) - ;; spawn at end of mountain pass - (initialize! *game-info* 'game (the-as game-save #f) "ogre-end") - ) + ;; spawn at end of mountain pass + (initialize! *game-info* 'game (the-as game-save #f) "ogre-end")) (((speedrun-category all-cutscenes)) - ;; turn play hints back on - (set! (-> *setting-control* default play-hints) #t) - ;; don't allow cutscene skips - (set! (-> *pc-settings* skip-movies?) #f) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "intro-start") - ) + ;; turn play hints back on + (set! (-> *setting-control* default play-hints) #t) + ;; don't allow cutscene skips + (set! (-> *pc-settings* skip-movies?) #f) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "intro-start")) (else - (format 0 "start-speedrun: unrecognized category ~S~%" (enum->string speedrun-category (-> *speedrun-info* category))) - ) - ) - ;; ensure actor vis is enabled - (set! (-> *pc-settings* ps2-actor-vis?) #t) - ;; force FPS to `60` - (set-frame-rate! *pc-settings* 60 #t) + (format 0 "start-speedrun: unrecognized category ~S~%" (enum->string speedrun-category (-> *speedrun-info* category))))) + (enforce-speedrun-pc-settings) ;; enable auto saving by default (set! (-> *setting-control* default auto-save) #t) - (none) - ) + (none)) (defun setup-speedrun-post-blackout () - (when (and (-> *speedrun-info* needs-post-blackout-setup?) (>= (-> *display* base-frame-counter) (-> *game-info* blackout-time))) + (when (and (-> *speedrun-info* needs-post-blackout-setup?) + (>= (-> *display* base-frame-counter) (-> *game-info* blackout-time))) (set! (-> *speedrun-info* needs-post-blackout-setup?) #f) (case (-> *speedrun-info* category) (((speedrun-category full-game)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution))) (((speedrun-category il-training)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - (mark-text-as-seen *game-info* (text-id training-level-name)) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution)) + (mark-text-as-seen *game-info* (text-id training-level-name))) (((speedrun-category il-village1)) - ;; give enough orbs to buy all cells 120+120+90+90=420 - (set! (-> *game-info* money-total) 420.0) - (set! (-> *game-info* money) 420.0) - (mark-text-as-seen *game-info* (text-id village1-level-name)) - ) + ;; give enough orbs to buy all cells 120+120+90+90=420 + (set! (-> *game-info* money-total) 420.0) + (set! (-> *game-info* money) 420.0) + (mark-text-as-seen *game-info* (text-id village1-level-name))) (((speedrun-category il-beach)) - ;; unlock blue eco vent - (close-specific-task! (game-task jungle-eggtop) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-eggtop))) - (mark-text-as-seen *game-info* (text-id beach-level-name)) - ) - (((speedrun-category il-jungle)) - (mark-text-as-seen *game-info* (text-id jungle-level-name)) - ) + ;; unlock blue eco vent + (close-specific-task! (game-task jungle-eggtop) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-eggtop))) + (mark-text-as-seen *game-info* (text-id beach-level-name))) + (((speedrun-category il-jungle)) (mark-text-as-seen *game-info* (text-id jungle-level-name))) (((speedrun-category il-misty)) - ;; unlock fisherman's boat - (close-specific-task! (game-task jungle-fishgame) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-fishgame))) - (mark-text-as-seen *game-info* (text-id misty-level-name)) - ) + ;; unlock fisherman's boat + (close-specific-task! (game-task jungle-fishgame) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-fishgame))) + (mark-text-as-seen *game-info* (text-id misty-level-name))) (((speedrun-category il-firecanyon)) - ;; skip keira intro cutscene - (close-specific-task! (game-task firecanyon-assistant) (task-status need-reward-speech)) - ;; unlock blue eco vent - (close-specific-task! (game-task jungle-eggtop) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-eggtop))) - (mark-text-as-seen *game-info* (text-id firecanyon-level-name)) - ) + ;; skip keira intro cutscene + (close-specific-task! (game-task firecanyon-assistant) (task-status need-reward-speech)) + ;; unlock blue eco vent + (close-specific-task! (game-task jungle-eggtop) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-eggtop))) + (mark-text-as-seen *game-info* (text-id firecanyon-level-name))) (((speedrun-category il-village2)) - ;; give enough orbs to buy all cells 120+120+90+90+90=510 - (set! (-> *game-info* money-total) 510.0) - (set! (-> *game-info* money) 510.0) - (mark-text-as-seen *game-info* (text-id village2-level-name)) - ) - (((speedrun-category il-sunken)) - (mark-text-as-seen *game-info* (text-id sunken-level-name)) - ) + ;; give enough orbs to buy all cells 120+120+90+90+90=510 + (set! (-> *game-info* money-total) 510.0) + (set! (-> *game-info* money) 510.0) + (mark-text-as-seen *game-info* (text-id village2-level-name))) + (((speedrun-category il-sunken)) (mark-text-as-seen *game-info* (text-id sunken-level-name))) (((speedrun-category il-swamp)) - ;; unlock flutflut - (close-specific-task! (game-task beach-flutflut) (task-status need-resolution)) - (close-specific-task! (game-task village2-levitator) (task-status need-introduction)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task beach-flutflut))) - (mark-text-as-seen *game-info* (text-id swamp-level-name)) - ) + ;; unlock flutflut + (close-specific-task! (game-task beach-flutflut) (task-status need-resolution)) + (close-specific-task! (game-task village2-levitator) (task-status need-introduction)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task beach-flutflut))) + (mark-text-as-seen *game-info* (text-id swamp-level-name))) (((speedrun-category il-rolling)) - ;; unlock zoomer - (close-specific-task! (game-task village2-levitator) (task-status need-introduction)) - ;; unlock DMG - (close-specific-task! (game-task rolling-race) (task-status need-introduction)) - ;; unlock moles - (close-specific-task! (game-task rolling-moles) (task-status need-introduction)) - (mark-text-as-seen *game-info* (text-id rolling-level-name)) - ) + ;; unlock zoomer + (close-specific-task! (game-task village2-levitator) (task-status need-introduction)) + ;; unlock DMG + (close-specific-task! (game-task rolling-race) (task-status need-introduction)) + ;; unlock moles + (close-specific-task! (game-task rolling-moles) (task-status need-introduction)) + (mark-text-as-seen *game-info* (text-id rolling-level-name))) (((speedrun-category il-ogre)) - ;; skip klaww intro cutscene - (close-specific-task! (game-task ogre-boss) (task-status need-hint)) - ;; unlock yellow eco vent - (close-specific-task! (game-task snow-eggtop) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task snow-eggtop))) - (mark-text-as-seen *game-info* (text-id ogre-level-name)) - ) + ;; skip klaww intro cutscene + (close-specific-task! (game-task ogre-boss) (task-status need-hint)) + ;; unlock yellow eco vent + (close-specific-task! (game-task snow-eggtop) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task snow-eggtop))) + (mark-text-as-seen *game-info* (text-id ogre-level-name))) (((speedrun-category il-village3)) - ;; give enough orbs to buy all cells 120+120+90+90+90+90=600 - (set! (-> *game-info* money-total) 600.0) - (set! (-> *game-info* money) 600.0) - (mark-text-as-seen *game-info* (text-id village3-level-name)) - ) + ;; give enough orbs to buy all cells 120+120+90+90+90+90=600 + (set! (-> *game-info* money-total) 600.0) + (set! (-> *game-info* money) 600.0) + (mark-text-as-seen *game-info* (text-id village3-level-name))) (((speedrun-category il-snow)) - ;; unlock flutflut - (close-specific-task! (game-task beach-flutflut) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task beach-flutflut))) - ;; unlock gondola - (close-specific-task! (game-task village3-button) (task-status need-introduction)) - (mark-text-as-seen *game-info* (text-id snow-level-name)) - ) + ;; unlock flutflut + (close-specific-task! (game-task beach-flutflut) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task beach-flutflut))) + ;; unlock gondola + (close-specific-task! (game-task village3-button) (task-status need-introduction)) + (mark-text-as-seen *game-info* (text-id snow-level-name))) (((speedrun-category il-cave)) - ;; unlock yellow eco vent - (close-specific-task! (game-task snow-eggtop) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task snow-eggtop))) - (mark-text-as-seen *game-info* (text-id cave-level-name)) - ) + ;; unlock yellow eco vent + (close-specific-task! (game-task snow-eggtop) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task snow-eggtop))) + (mark-text-as-seen *game-info* (text-id cave-level-name))) (((speedrun-category il-lavatube)) - ;; skip keira intro cutscene - (close-specific-task! (game-task lavatube-start) (task-status need-reward-speech)) - (mark-text-as-seen *game-info* (text-id lavatube-level-name)) - ) + ;; skip keira intro cutscene + (close-specific-task! (game-task lavatube-start) (task-status need-reward-speech)) + (mark-text-as-seen *game-info* (text-id lavatube-level-name))) (((speedrun-category il-citadel)) - ;; remove invisible wall - (close-specific-task! (game-task lavatube-end) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task lavatube-end))) - ;; unlock door - (close-specific-task! (game-task village4-button) (task-status need-reward-speech)) - (mark-text-as-seen *game-info* (text-id citadel-level-name)) - ) + ;; remove invisible wall + (close-specific-task! (game-task lavatube-end) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task lavatube-end))) + ;; unlock door + (close-specific-task! (game-task village4-button) (task-status need-reward-speech)) + (mark-text-as-seen *game-info* (text-id citadel-level-name))) (((speedrun-category new-game-plus)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ;; unlock hub1 cells - (dotimes (idx (length *hub1-cell-list*)) - (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx))) - ) - ;; unlock hub2 cells - (dotimes (idx (length *hub2-cell-list*)) - (close-specific-task! (-> *hub2-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub2-cell-list* idx))) - ) - ;; unlock hub3 cells - (dotimes (idx (length *hub3-cell-list*)) - (close-specific-task! (-> *hub3-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub3-cell-list* idx))) - ) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution)) + ;; unlock hub1 cells + (dotimes (idx (length *hub1-cell-list*)) + (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx)))) + ;; unlock hub2 cells + (dotimes (idx (length *hub2-cell-list*)) + (close-specific-task! (-> *hub2-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub2-cell-list* idx)))) + ;; unlock hub3 cells + (dotimes (idx (length *hub3-cell-list*)) + (close-specific-task! (-> *hub3-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub3-cell-list* idx))))) (((speedrun-category hub1-100)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution))) (((speedrun-category hub2-100)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ;; unlock hub1 cells - (dotimes (idx (length *hub1-cell-list*)) - (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx))) - ) - ;; give all orbs from hub1 - (set! (-> *game-info* money-total) 600.0) ;; 50+50+150+150+150+50 - (set! (-> *game-info* money) 180.0) ;; 50+50+150+150+150+50 - (90+90+120+120) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution)) + ;; unlock hub1 cells + (dotimes (idx (length *hub1-cell-list*)) + (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx)))) + ;; give all orbs from hub1 + (set! (-> *game-info* money-total) 600.0) ;; 50+50+150+150+150+50 + (set! (-> *game-info* money) 180.0) ;; 50+50+150+150+150+50 - (90+90+120+120) + ) (((speedrun-category hub3-100)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ;; unlock hub1 cells - (dotimes (idx (length *hub1-cell-list*)) - (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx))) - ) - ;; unlock hub2 cells - (dotimes (idx (length *hub2-cell-list*)) - (close-specific-task! (-> *hub2-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub2-cell-list* idx))) - ) - ;; give all orbs from hub1+2 - (set! (-> *game-info* money-total) 1300.0) ;; 50+50+150+150+150+50 + 50+200+200+200+50 - (set! (-> *game-info* money) 370.0) ;; 50+50+150+150+150+50 - (90+90+120+120) + 50+200+200+200+50 - (90+90+90+120+120) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution)) + ;; unlock hub1 cells + (dotimes (idx (length *hub1-cell-list*)) + (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx)))) + ;; unlock hub2 cells + (dotimes (idx (length *hub2-cell-list*)) + (close-specific-task! (-> *hub2-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub2-cell-list* idx)))) + ;; give all orbs from hub1+2 + (set! (-> *game-info* money-total) 1300.0) ;; 50+50+150+150+150+50 + 50+200+200+200+50 + (set! (-> *game-info* money) 370.0) ;; 50+50+150+150+150+50 - (90+90+120+120) + 50+200+200+200+50 - (90+90+90+120+120) + ) (((speedrun-category all-cutscenes)) - ;; no post-blackout actions needed - ) + ;; no post-blackout actions needed + ) (else - (format 0 "setup-speedrun-post-blackout: unrecognized category ~S~%" (enum->string speedrun-category (-> *speedrun-info* category))) - ) - ) - ;; reset speedrun display (gets hidden on first collectable pickup) - (set! (-> *speedrun-info* should-display?) #t) - ;; reset actors to ensure any above changes take effect - (reset-actors 'life) - ;; autosave any changes back to file - (auto-save-command 'auto-save 0 0 *default-pool*) - ) - (none) - ) + (format 0 + "setup-speedrun-post-blackout: unrecognized category ~S~%" + (enum->string speedrun-category (-> *speedrun-info* category))))) + ;; reset speedrun display (gets hidden on first collectable pickup) + (set! (-> *speedrun-info* should-display?) #t) + ;; reset actors to ensure any above changes take effect + (reset-actors 'life) + ;; autosave any changes back to file + (auto-save-command 'auto-save 0 0 *default-pool*)) + (none)) (defun hide-speedrun-display () (set! (-> *speedrun-info* should-display?) #f) - (none) - ) + (none)) (defun speedrun-mode-update () "A per frame update for speedrunning related stuff" @@ -436,11 +393,9 @@ (update-autosplit-info-jak1) ;; Draw info to the screen (speedrun-draw-settings) - ;;Disable any active cheats - (set! (-> *pc-settings* cheats) (the-as pc-cheats #x0)) + (enforce-speedrun-pc-settings) ;; Run after-blackout speedrun setup (if needed) - (setup-speedrun-post-blackout) - ) + (setup-speedrun-post-blackout)) (none)) (defun speedrun-start-full-game-run () @@ -460,5 +415,9 @@ *mod-version-text* (enum->string speedrun-category (-> *speedrun-info* category)) (-> *pc-settings* skip-movies?)) - buf 0 (- 220 (* 8 4)) (font-color flat-yellow) (font-flags shadow kerning)))) + buf + 0 + (- 220 (* 8 4)) + (font-color flat-yellow) + (font-flags shadow kerning)))) (none)) diff --git a/goal_src/jak1/pc/hud-classes-pc.gc b/goal_src/jak1/pc/hud-classes-pc.gc index 494e3d073e..5eb847ad11 100644 --- a/goal_src/jak1/pc/hud-classes-pc.gc +++ b/goal_src/jak1/pc/hud-classes-pc.gc @@ -1,102 +1,67 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/ui/hud.gc") (require "levels/common/battlecontroller.gc") - -#| - - Code for extra HUD elements in the PC port. - - |# - +#| Code for extra HUD elements in the PC port. |# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defconstant HUD_ICON_COUNT 6) -(defconstant HUD_PART_PC_AMOUNT 1) +(defconstant HUD_PART_PC_AMOUNT 1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud processes and parts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; a pc hud element -(deftype hud-pc (hud) - () - ) +(deftype hud-pc (hud) ()) ;; hud element for battles (deftype hud-battle-enemy (hud) - ((want-skel symbol) - (want-skel2 symbol) - - (last-battle handle) - (battle-entity entity-actor) - (battle-max int32) - (battle-alive int32) - (battle-mode symbol) + ((want-skel symbol) + (want-skel2 symbol) + (last-battle handle) + (battle-entity entity-actor) + (battle-max int32) + (battle-alive int32) + (battle-mode symbol) (last-task entity-actor) (task-entity entity-actor) (task-track int32) (task2-entity entity-actor) (task2-time time-frame) (task2-track int32) - - (last-level symbol) - (ready? symbol) - (kicked symbol) - (display-mode? symbol) - ) + (last-level symbol) + (ready? symbol) + (kicked symbol) + (display-mode? symbol)) (:methods - (make-enemy-icon (_type_ int symbol entity) int) - (kill-icon (_type_ int) int) - (kill-all-icons (_type_) int) - (update-display-status (_type_ symbol entity int symbol) int) - ) - ) - + (make-enemy-icon (_type_ int symbol entity) int) + (kill-icon (_type_ int) int) + (kill-all-icons (_type_) int) + (update-display-status (_type_ symbol entity int symbol) int))) ;; all pc hud elements (deftype hud-parts-pc (structure) - ((battle-enemy (pointer hud-battle-enemy)) - - (parts (pointer hud-pc) HUD_PART_PC_AMOUNT :offset 0) - ) - ) - - + ((battle-enemy (pointer hud-battle-enemy)) + (parts (pointer hud-pc) HUD_PART_PC_AMOUNT :offset 0))) ;;;---------------------------------------------- ;; globals ;;;---------------------------------------------- - ;; all of the pc hud elements -(define *hud-parts-pc* (new 'static 'hud-parts-pc - :battle-enemy #f - )) - - +(define *hud-parts-pc* (new 'static 'hud-parts-pc :battle-enemy #f)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud macros ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmacro hud-pc-make-icon (obj max &key skel - &key x - &key y - &key z - &key scale-x - &key scale-y - &key (entity #f) - ) +(defmacro hud-pc-make-icon (obj max &key skel &key x &key y &key z &key scale-x &key scale-y &key (entity #f)) `(when (< (-> ,obj nb-of-icons) ,max) (let ((icon-idx (-> ,obj nb-of-icons))) (set! (-> ,obj icons icon-idx) (new 'static 'hud-icon)) @@ -106,9 +71,7 @@ (set-vector! (-> (-> new-manipy) root trans) 0.0 0.0 0.0 1.0) (set-vector! (-> (-> new-manipy) root scale) ,scale-x ,scale-y ,scale-x 1.0) (when #f - (send-event (ppointer->process new-manipy) 'trans-hook #f) - ) - ) + (send-event (ppointer->process new-manipy) 'trans-hook #f))) (set! (-> ,obj icons icon-idx icon) new-manipy) (when new-manipy (logior! (-> new-manipy 0 mask) (process-mask pause)) @@ -118,49 +81,45 @@ (set! (-> ,obj icons icon-idx icon-y) ,y) (set! (-> ,obj icons icon-idx icon-z) 0) (set! (-> ,obj icons icon-idx scale-x) ,scale-x) - (set! (-> ,obj icons icon-idx scale-y) ,scale-y) - ) - ) - ) - (+! (-> ,obj nb-of-icons) 1) - ) - ) - -(defmacro hud-pc-replace-icon (obj idx &key skel - &key z - &key (entity #f) - ) - `(let ((new-manipy (manipy-spawn (new 'static 'vector :w 1.0) ,entity ,skel #f :to ,obj))) - (when new-manipy - (set! (-> (-> new-manipy) draw dma-add-func) dma-add-process-drawable-hud-with-hud-lights) - (set-vector! (-> (-> new-manipy) root trans) 0.0 0.0 0.0 1.0) - (set-vector! (-> (-> new-manipy) root scale) (-> ,obj icons ,idx scale-x) (-> ,obj icons ,idx scale-y) (-> ,obj icons ,idx scale-x) 1.0) - (when #f - (send-event (ppointer->process new-manipy) 'trans-hook #f) - ) - ) - (set! (-> ,obj icons ,idx icon) new-manipy) - (when new-manipy - (logior! (-> new-manipy 0 mask) (process-mask pause)) - (logclear! (-> new-manipy 0 mask) (process-mask menu progress)) - (set! (-> (-> new-manipy) root trans z) ,z) - ) - ) - ) + (set! (-> ,obj icons icon-idx scale-y) ,scale-y)))) + (+! (-> ,obj nb-of-icons) 1))) +(defmacro hud-pc-replace-icon (obj idx &key skel &key z &key (entity #f)) + `(let ((new-manipy (manipy-spawn (new 'static 'vector :w 1.0) ,entity ,skel #f :to ,obj))) + (when new-manipy + (set! (-> (-> new-manipy) draw dma-add-func) dma-add-process-drawable-hud-with-hud-lights) + (set-vector! (-> (-> new-manipy) root trans) 0.0 0.0 0.0 1.0) + (set-vector! (-> (-> new-manipy) root scale) + (-> ,obj icons ,idx scale-x) + (-> ,obj icons ,idx scale-y) + (-> ,obj icons ,idx scale-x) + 1.0) + (when #f + (send-event (ppointer->process new-manipy) 'trans-hook #f))) + (set! (-> ,obj icons ,idx icon) new-manipy) + (when new-manipy + (logior! (-> new-manipy 0 mask) (process-mask pause)) + (logclear! (-> new-manipy 0 mask) (process-mask menu progress)) + (set! (-> (-> new-manipy) root trans z) ,z)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud rendering with level lights ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (define *hud-pc-lights* (new 'global 'vu-lights)) + (set-vector! (-> *hud-pc-lights* direction 0) 1.0 0.0 0.0 1.0) + (set-vector! (-> *hud-pc-lights* direction 1) 0.0 1.0 0.0 1.0) + (set-vector! (-> *hud-pc-lights* direction 2) 0.0 0.0 1.0 1.0) + (set-vector! (-> *hud-pc-lights* color 0) 0.75 0.75 1.0 1.0) + (set-vector! (-> *hud-pc-lights* color 1) 0.75 0.75 1.0 1.0) + (set-vector! (-> *hud-pc-lights* color 2) 0.75 0.75 1.0 1.0) + (set-vector! (-> *hud-pc-lights* ambient) 0.2 0.2 0.2 1.0) (defun dma-add-process-drawable-hud-with-lights ((proc process-drawable) (draw draw-control) (arg2 symbol) (buf dma-buffer)) @@ -168,462 +127,338 @@ (when (zero? (logand (-> draw status) (draw-status hidden no-anim no-skeleton-update))) (let ((vu-lgt (the-as vu-lights (+ 64 (scratchpad-object int)))) (lgt (if (= (-> draw level-index) 2) - (-> *time-of-day-context* light-group (-> draw light-index)) - (-> *time-of-day-context* moods (-> draw level-index) light-group (-> draw light-index)) - )) - ) - (vu-lights<-light-group! vu-lgt lgt) - ) + (-> *time-of-day-context* light-group (-> draw light-index)) + (-> *time-of-day-context* moods (-> draw level-index) light-group (-> draw light-index))))) + (vu-lights<-light-group! vu-lgt lgt)) (lod-set! draw 0) (logior! (-> draw status) (draw-status was-drawn)) - (draw-bones-hud draw buf) - ) + (draw-bones-hud draw buf)) 0 - (none) - ) + (none)) (defun dma-add-process-drawable-hud-with-hud-lights ((proc process-drawable) (draw draw-control) (arg2 symbol) (buf dma-buffer)) (logclear! (-> draw status) (draw-status was-drawn)) (when (zero? (logand (-> draw status) (draw-status hidden no-anim no-skeleton-update))) (let ((vu-lgt (the-as vu-lights (+ 64 (scratchpad-object int)))) - (lgt *hud-pc-lights*) - ) + (lgt *hud-pc-lights*)) (set! (-> vu-lgt direction 0 quad) (-> lgt direction 0 quad)) (set! (-> vu-lgt direction 1 quad) (-> lgt direction 1 quad)) (set! (-> vu-lgt direction 2 quad) (-> lgt direction 2 quad)) (set! (-> vu-lgt color 0 quad) (-> lgt color 0 quad)) (set! (-> vu-lgt color 1 quad) (-> lgt color 1 quad)) (set! (-> vu-lgt color 2 quad) (-> lgt color 2 quad)) - (set! (-> vu-lgt ambient quad) (-> lgt ambient quad)) - ) + (set! (-> vu-lgt ambient quad) (-> lgt ambient quad))) (lod-set! draw 0) (logior! (-> draw status) (draw-status was-drawn)) - (draw-bones-hud draw buf) - ) + (draw-bones-hud draw buf)) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - -(defmethod deactivate hud-pc ((obj hud-pc)) +(defmethod deactivate ((obj hud-pc)) (dotimes (i HUD_PART_PC_AMOUNT) (if (and (-> *hud-parts-pc* parts i) (= (ppointer->process (-> *hud-parts-pc* parts i)) obj)) - (set! (-> *hud-parts-pc* parts i) (the (pointer hud-pc) #f)) - ) - ) + (set! (-> *hud-parts-pc* parts i) (the (pointer hud-pc) #f)))) ((method-of-type hud deactivate) obj) - (none) - ) + (none)) - -(defmethod kill-icon hud-battle-enemy ((obj hud-battle-enemy) (idx int)) +(defmethod kill-icon ((obj hud-battle-enemy) (idx int)) "kill a hud icon" - (when (and (nonzero? (-> obj icons idx)) (nonzero? (-> obj icons idx icon)) (-> obj icons idx icon)) - (deactivate (ppointer->process (-> obj icons idx icon))) - (set! (-> obj icons idx icon) #f) - ) + (deactivate (ppointer->process (-> obj icons idx icon))) + (set! (-> obj icons idx icon) #f)) 0) -(defmethod kill-all-icons hud-battle-enemy ((obj hud-battle-enemy)) +(defmethod kill-all-icons ((obj hud-battle-enemy)) "kill all hud icons" - (dotimes (i (-> obj nb-of-icons)) - (kill-icon obj i) - ) + (kill-icon obj i)) 0) -(defmethod make-enemy-icon hud-battle-enemy ((obj hud-battle-enemy) (idx int) (skel-sym symbol) (enemy-ent entity)) +(defmethod make-enemy-icon ((obj hud-battle-enemy) (idx int) (skel-sym symbol) (enemy-ent entity)) "make a new icon for the hud" - ;; make new manipy (kill-icon obj 0) (hud-pc-replace-icon obj 0 :skel (-> skel-sym value) :entity enemy-ent :z (meters 0.5)) - 0) -(defmethod update-display-status hud-battle-enemy ((obj hud-battle-enemy) (skel symbol) (ent entity) (icon-idx int) (trigger-force symbol)) +(defmethod update-display-status ((obj hud-battle-enemy) (skel symbol) (ent entity) (icon-idx int) (trigger-force symbol)) "logic for displaying or hiding the hud, and drawing the icons." - - ;; do stuff depending on our current state (cond ((hidden? obj) ;; we're hidden, so let's make our new icons and see if we are allowed to show - ;; if we have icons made then show! (when (-> obj ready?) (set! (-> obj kicked) #f) - (send-event obj 'show) - ) - + (send-event obj 'show)) ;; no icons, make new ones but keep them hidden for now (when (and (not (-> obj ready?)) skel (not *progress-process*)) (case skel (('*swamp-rat-sg* '*citb-bunny-sg*) (set! (-> obj icons icon-idx icon-x) (the int (* 0.84 512))) (set! (-> obj icons icon-idx icon-y) (the int (* 0.51 448))) - (set! (-> obj icons icon-idx scale-x) 0.006) - ) + (set! (-> obj icons icon-idx scale-x) 0.006)) (('*gnawer-sg*) (set! (-> obj icons icon-idx icon-x) (the int (* 0.78 512))) (set! (-> obj icons icon-idx icon-y) (the int (* 0.54 448))) - (set! (-> obj icons icon-idx scale-x) 0.003) - ) + (set! (-> obj icons icon-idx scale-x) 0.003)) (('*flying-lurker-sg*) (set! (-> obj icons icon-idx icon-x) (the int (* 0.80 512))) (set! (-> obj icons icon-idx icon-y) (the int (* 0.40 448))) - (set! (-> obj icons icon-idx scale-x) 0.003) - ) + (set! (-> obj icons icon-idx scale-x) 0.003)) (else (set! (-> obj icons icon-idx icon-x) (the int (* 0.84 512))) (set! (-> obj icons icon-idx icon-y) (the int (* 0.51 448))) - (set! (-> obj icons icon-idx scale-x) 0.004) - ) - ) + (set! (-> obj icons icon-idx scale-x) 0.004))) (set! (-> obj icons icon-idx scale-y) (* (-> obj icons icon-idx scale-x) (/ -512.0 448.0))) (make-enemy-icon obj icon-idx skel ent) (let ((icon0 (the manipy (ppointer->process (-> obj icons icon-idx icon))))) (case skel (('*babak-sg*) (send-event icon0 'art-joint-anim "babak-idle" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*citb-bunny-sg*) (send-event icon0 'art-joint-anim "citb-bunny-idle" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*bonelurker-sg*) (send-event icon0 'art-joint-anim "bonelurker-idle" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*swamp-rat-sg*) (send-event icon0 'art-joint-anim "swamp-rat-celebrate" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*gnawer-sg*) (send-event icon0 'art-joint-anim "gnawer-idle" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*flying-lurker-sg*) (send-event icon0 'art-joint-anim "flying-lurker-fly" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) - ) - (send-event icon0 'draw #f) - ) - (true! (-> obj ready?)) - ) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))))) + (send-event icon0 'draw #f)) + (true! (-> obj ready?)))) (else ;; we want to be shown! (false! (-> obj ready?)) - ;; progress is open, let's leave. (when (and (not (-> obj kicked)) (= *master-mode* 'progress)) - (true! (-> obj kicked)) - (send-event obj 'hide-quick) - ) - + (true! (-> obj kicked)) + (send-event obj 'hide-quick)) ;; set the trigger time so we don't automatically go away - (if (and trigger-force (!= (-> obj next-state name) 'hud-leaving)) - (set! (-> obj trigger-time) (current-time))) - ) - ) + (if (and trigger-force (!= (-> obj next-state name) 'hud-leaving)) (set! (-> obj trigger-time) (current-time))))) 0) - (defmacro actor-by-name (name) "get an entity by name and cast it to an actor. not super safe!" `(the entity-actor (entity-by-name ,name))) (defmacro actor-by-name-safe (name) "safe, slower version of actor-by-name" - `(aif (entity-by-name ,name) - (if (type-type? it entity-actor) - (the entity-actor it)) - ) - ) + `(aif (entity-by-name ,name) (if (type-type? it entity-actor) (the entity-actor it)))) -(defmethod hud-update hud-battle-enemy ((obj hud-battle-enemy)) +(defmethod hud-update ((obj hud-battle-enemy)) "hud logic." - (when (not (-> *pc-settings* extra-hud?)) - (kill-all-icons obj) - (return #f)) - + (kill-all-icons obj) + (return #f)) (when (and (not (-> obj ready?)) (hidden? obj)) - (kill-all-icons obj) - ) - + (kill-all-icons obj)) (let ((battle (the process #f)) (cur-lev (aif (level-get-target-inside *level*) (-> it name))) - (actor-list-task? #f) - ) - ;; default params - (set! (-> obj task-entity) #f) - (set! (-> obj battle-entity) #f) - (set! (-> obj battle-mode) 'remain) - - ;; find an entity for a battlecontroller, check current level - (case cur-lev - (('swamp) - (set! (-> obj battle-entity) (actor-by-name "swamp-battlecontroller-1")) - (set! (-> obj want-skel) '*swamp-rat-sg*) - ) - (('misty) - (set! (-> obj battle-entity) (actor-by-name "misty-battlecontroller-1")) - (set! (-> obj want-skel) '*bonelurker-sg*) - ) - (('citadel) - (set! (-> obj battle-entity) (actor-by-name "citb-battlecontroller-1")) - (set! (-> obj want-skel) '*citb-bunny-sg*) - (set! (-> obj battle-mode) 'alive) - ) - (('maincave) - (set! (-> obj task-entity) (the entity-actor (or (actor-by-name "gnawer-11") - (actor-by-name "gnawer-12") - (actor-by-name "gnawer-13") - (actor-by-name "gnawer-14") - (actor-by-name "gnawer-15") - (actor-by-name "gnawer-16") - (actor-by-name "gnawer-17") - (actor-by-name "gnawer-18") - (actor-by-name "gnawer-19") - ))) - (true! actor-list-task?) - (set! (-> obj want-skel) '*gnawer-sg*) - ) - (('ogre) - (when (= 'debug *cheat-mode*) - (set! (-> obj battle-entity) (actor-by-name "flying-lurker-1")) - (set! (-> obj want-skel) '*flying-lurker-sg*) - (set! (-> obj battle-mode) 'alive) - ) - ) - ) - - ;; have an entity, grab its process - (if (-> obj battle-entity) - (set! battle (-> obj battle-entity extra process))) - - (cond - ;; check level statuses FIRST - ((not (aif (level-get *level* (-> obj last-level)) (-> it display?))) - ;; the old level died. kill everything. - (unless (hidden? obj) - (set! (-> obj last-battle) INVALID_HANDLE) - (set! (-> obj last-task) #f) - (false! (-> obj ready?)) - (kill-all-icons obj) - (go hud-hidden) - ) - ) - ;; check if we have anything - ((-> obj task-entity) - ;; we have a task to track. - - ;; see if we've changed tracking now - (when (or (!= (-> obj display-mode?) 'task) - (!= (-> obj task-entity) (-> obj last-task))) - (set! (-> obj last-task) (-> obj task-entity)) - (set! (-> obj display-mode?) 'task) - (false! (-> obj ready?)) - (send-event obj 'hide) - ) - - ;; logic for each kind of task - (cond - (actor-list-task? - ;; simple: check a list of actors and count how many have completed their task. - (set! (-> obj battle-max) 0) - (set! (-> obj value) 0) - (let ((actor (-> obj task-entity))) - - ;; get the first actor - (while (prev-actor actor) - (set! actor (prev-actor actor))) - - ;; now count forwards. - (while actor - - ;; stuff. - (1+! (-> obj battle-max)) - (when (logtest? (-> actor extra perm status) (entity-perm-status complete)) - (1+! (-> obj value)) - ) - - (set! actor (next-actor actor)) - ) - ) - - (when (and (!= (-> obj value) (-> obj battle-max)) - (or (> (-> obj value) 0) (task-closed? (-> obj task-entity task) (task-status need-hint))) - ) - (update-display-status obj (-> obj want-skel) (-> obj task-entity) 0 #t) - ) - ) - ) - ) - (battle - ;; if its a different process, panic and restart the whole sequence. it's OK - (when (or (!= (-> obj display-mode?) 'battle) - (!= (handle->process (-> obj last-battle)) battle)) - (set! (-> obj last-battle) (process->handle battle)) - (set! (-> obj display-mode?) 'battle) - (false! (-> obj ready?)) - (send-event obj 'hide) - ) - - ;; logic for each kind of process. - (cond - ((type-type? (-> battle type) battlecontroller) - (let ((battle (the battlecontroller battle)) - ) - ;; wait until battle is active - (when (= 'battlecontroller-active (-> battle next-state name)) - ;; get battle stats - (let ((alive-count 0)) - (with-children (child battle) - (1+! alive-count)) - (set! (-> obj value) (- (-> battle spawn-count) alive-count)) - (set! (-> obj battle-max) (-> battle max-spawn-count)) - (set! (-> obj battle-alive) alive-count) - ) - - (update-display-status obj (-> obj want-skel) (-> obj battle-entity) 0 #t) - ) - )) - ((and (= 'debug *cheat-mode*) (= (-> obj battle-entity) (actor-by-name "flying-lurker-1"))) - (let ((battle (the process-drawable battle))) - - (if *target* - (set! (-> obj battle-alive) (the int (/ (vector-vector-distance (-> battle root trans) (target-pos 0)) METER_LENGTH)))) - - (update-display-status obj (-> obj want-skel) (-> obj battle-entity) 0 #t) - )) - ) - ) - (else - ;; we have nothing. kill everything. - (unless (and (= (-> obj last-battle) INVALID_HANDLE) (hidden? obj)) - (set! (-> obj last-battle) INVALID_HANDLE) - (set! (-> obj last-task) #f) - (false! (-> obj ready?)) - (cond - ((and (!= (-> obj next-state name) 'hud-leaving) - (aif (level-get *level* (-> obj last-level)) (-> it display?)) - ) - (send-event obj 'hide) - ) - (else - (kill-all-icons obj) - (go hud-hidden) - ) - ) - ) - ) - ) - - ;; save the current level - (set! (-> obj last-level) cur-lev) - ) + (actor-list-task? #f)) + ;; default params + (set! (-> obj task-entity) #f) + (set! (-> obj battle-entity) #f) + (set! (-> obj battle-mode) 'remain) + ;; find an entity for a battlecontroller, check current level + (case cur-lev + (('swamp) + (set! (-> obj battle-entity) (actor-by-name "swamp-battlecontroller-1")) + (set! (-> obj want-skel) '*swamp-rat-sg*)) + (('misty) + (set! (-> obj battle-entity) (actor-by-name "misty-battlecontroller-1")) + (set! (-> obj want-skel) '*bonelurker-sg*)) + (('citadel) + (set! (-> obj battle-entity) (actor-by-name "citb-battlecontroller-1")) + (set! (-> obj want-skel) '*citb-bunny-sg*) + (set! (-> obj battle-mode) 'alive)) + (('maincave) + (set! (-> obj task-entity) + (the entity-actor + (or (actor-by-name "gnawer-11") + (actor-by-name "gnawer-12") + (actor-by-name "gnawer-13") + (actor-by-name "gnawer-14") + (actor-by-name "gnawer-15") + (actor-by-name "gnawer-16") + (actor-by-name "gnawer-17") + (actor-by-name "gnawer-18") + (actor-by-name "gnawer-19")))) + (true! actor-list-task?) + (set! (-> obj want-skel) '*gnawer-sg*)) + (('ogre) + (when (= 'debug *cheat-mode*) + (set! (-> obj battle-entity) (actor-by-name "flying-lurker-1")) + (set! (-> obj want-skel) '*flying-lurker-sg*) + (set! (-> obj battle-mode) 'alive)))) + ;; have an entity, grab its process + (if (-> obj battle-entity) (set! battle (-> obj battle-entity extra process))) + (cond + ;; check level statuses FIRST + ((not (aif (level-get *level* (-> obj last-level)) (-> it display?))) + ;; the old level died. kill everything. + (unless (hidden? obj) + (set! (-> obj last-battle) INVALID_HANDLE) + (set! (-> obj last-task) #f) + (false! (-> obj ready?)) + (kill-all-icons obj) + (go hud-hidden))) + ;; check if we have anything + ((-> obj task-entity) + ;; we have a task to track. + ;; see if we've changed tracking now + (when (or (!= (-> obj display-mode?) 'task) (!= (-> obj task-entity) (-> obj last-task))) + (set! (-> obj last-task) (-> obj task-entity)) + (set! (-> obj display-mode?) 'task) + (false! (-> obj ready?)) + (send-event obj 'hide)) + ;; logic for each kind of task + (cond + (actor-list-task? + ;; simple: check a list of actors and count how many have completed their task. + (set! (-> obj battle-max) 0) + (set! (-> obj value) 0) + (let ((actor (-> obj task-entity))) + ;; get the first actor + (while (prev-actor actor) + (set! actor (prev-actor actor))) + ;; now count forwards. + (while actor + ;; stuff. + (1+! (-> obj battle-max)) + (when (logtest? (-> actor extra perm status) (entity-perm-status complete)) + (1+! (-> obj value))) + (set! actor (next-actor actor)))) + (when (and (!= (-> obj value) (-> obj battle-max)) + (or (> (-> obj value) 0) (task-closed? (-> obj task-entity task) (task-status need-hint)))) + (update-display-status obj (-> obj want-skel) (-> obj task-entity) 0 #t))))) + (battle + ;; if its a different process, panic and restart the whole sequence. it's OK + (when (or (!= (-> obj display-mode?) 'battle) (!= (handle->process (-> obj last-battle)) battle)) + (set! (-> obj last-battle) (process->handle battle)) + (set! (-> obj display-mode?) 'battle) + (false! (-> obj ready?)) + (send-event obj 'hide)) + ;; logic for each kind of process. + (cond + ((type-type? (-> battle type) battlecontroller) + (let ((battle (the battlecontroller battle))) + ;; wait until battle is active + (when (= 'battlecontroller-active (-> battle next-state name)) + ;; get battle stats + (let ((alive-count 0)) + (with-children (child battle) (1+! alive-count)) + (set! (-> obj value) (- (-> battle spawn-count) alive-count)) + (set! (-> obj battle-max) (-> battle max-spawn-count)) + (set! (-> obj battle-alive) alive-count)) + (update-display-status obj (-> obj want-skel) (-> obj battle-entity) 0 #t)))) + ((and (= 'debug *cheat-mode*) (= (-> obj battle-entity) (actor-by-name "flying-lurker-1"))) + (let ((battle (the process-drawable battle))) + (if *target* + (set! (-> obj battle-alive) (the int (/ (vector-vector-distance (-> battle root trans) (target-pos 0)) METER_LENGTH)))) + (update-display-status obj (-> obj want-skel) (-> obj battle-entity) 0 #t))))) + (else + ;; we have nothing. kill everything. + (unless (and (= (-> obj last-battle) INVALID_HANDLE) (hidden? obj)) + (set! (-> obj last-battle) INVALID_HANDLE) + (set! (-> obj last-task) #f) + (false! (-> obj ready?)) + (cond + ((and (!= (-> obj next-state name) 'hud-leaving) (aif (level-get *level* (-> obj last-level)) (-> it display?))) + (send-event obj 'hide)) + (else (kill-all-icons obj) (go hud-hidden)))))) + ;; save the current level + (set! (-> obj last-level) cur-lev)) 0 - (none) - ) - + (none)) -(defmethod draw-hud hud-battle-enemy ((obj hud-battle-enemy)) - (let ((t9-0 (method-of-type hud draw-hud))) - (t9-0 obj) - ) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id debug)) +(defmethod draw-hud ((obj hud-battle-enemy)) + (let ((t9-0 (method-of-type hud draw-hud))) (t9-0 obj)) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id debug)) (let ((str-x (+ (-> obj text-x) (* (-> obj x-sgn) (-> obj offset)))) (str-y (/ (* (+ (-> obj text-y) (* (-> obj y-sgn) (-> obj offset)) (-> obj y-offset)) (the int (-> *video-parms* relative-y-scale))) - 2)) - ) - - (case (-> obj battle-mode) - (('dead) - (draw-string-xy (string-format "~D/~D" (-> obj value) (-> obj battle-max)) - buf str-x str-y (font-color white) (font-flags shadow kerning large middle)) - ) - (('alive) - (draw-string-xy (string-format "~D" (-> obj battle-alive)) - buf str-x str-y (font-color white) (font-flags shadow kerning large middle)) - ) - (('remain) - (draw-string-xy (string-format "~D" (- (-> obj battle-max) (-> obj value))) - buf str-x str-y (font-color white) (font-flags shadow kerning large middle)) - ) - ) - ) - ) + 2))) + (case (-> obj battle-mode) + (('dead) + (draw-string-xy (string-format "~D/~D" (-> obj value) (-> obj battle-max)) + buf + str-x + str-y + (font-color white) + (font-flags shadow kerning large middle))) + (('alive) + (draw-string-xy (string-format "~D" (-> obj battle-alive)) + buf + str-x + str-y + (font-color white) + (font-flags shadow kerning large middle))) + (('remain) + (draw-string-xy (string-format "~D" (- (-> obj battle-max) (-> obj value))) + buf + str-x + str-y + (font-color white) + (font-flags shadow kerning large middle)))))) 0 - (none) - ) - - -(defmethod init-particles! hud-battle-enemy ((obj hud-battle-enemy) (arg0 int)) - (hud-pc-make-icon obj HUD_ICON_COUNT :skel *fuelcell-naked-sg* - :x (the int (* 0.84 512)) :y (the int (* 0.51 448)) :z (meters 0.5) - :scale-x 0.004 :scale-y (* -0.004 (/ 512.0 448.0))) + (none)) + +(defmethod init-particles! ((obj hud-battle-enemy) (arg0 int)) + (hud-pc-make-icon obj + HUD_ICON_COUNT + :skel + *fuelcell-naked-sg* + :x + (the int (* 0.84 512)) + :y + (the int (* 0.51 448)) + :z (meters 0.5) + :scale-x 0.004 + :scale-y + (* -0.004 (/ 512.0 448.0))) (set! (-> obj text-x) (the int (* 0.84 512))) (set! (-> obj text-y) (the int (* 0.5 448))) (set! (-> obj x-sgn) 1) (set! (-> obj y-sgn) 0) (set! (-> obj increment-on-event) #t) (set-pos-and-scale obj (= (get-aspect-ratio) 'aspect16x9) (= (get-video-mode) 'pal)) - (set! (-> obj last-battle) INVALID_HANDLE) (set! (-> obj last-task) #f) (set! (-> obj want-skel) #f) (set! (-> obj battle-max) 0) - (set! (-> obj last-level) #f) (set! (-> obj kicked) #f) (set! (-> obj ready?) #f) 0 - (none) - ) - - - + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud helper funcs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defun deactivate-hud-pc () "kill the pc hud" - (dotimes (i HUD_PART_PC_AMOUNT) - (if (-> *hud-parts-pc* parts i) - (deactivate (ppointer->process (-> *hud-parts-pc* parts i)))) - ) + (if (-> *hud-parts-pc* parts i) (deactivate (ppointer->process (-> *hud-parts-pc* parts i))))) 0) (defun activate-hud-pc ((tree process-tree)) "make the pc hud" - (deactivate-hud-pc) - - (set! (-> *hud-parts-pc* battle-enemy) (process-spawn hud-battle-enemy :init hud-init-by-other 0 - :from *pc-dead-pool* :to tree)) + (set! (-> *hud-parts-pc* battle-enemy) + (process-spawn hud-battle-enemy :init hud-init-by-other 0 :from *pc-dead-pool* :to tree)) 0) - (activate-hud-pc *display-pool*) - - - - - diff --git a/goal_src/jak1/pc/pc-cheats.gc b/goal_src/jak1/pc/pc-cheats.gc index e6db66c8d7..99fd00c0ee 100644 --- a/goal_src/jak1/pc/pc-cheats.gc +++ b/goal_src/jak1/pc/pc-cheats.gc @@ -1,7 +1,7 @@ ;;-*-Lisp-*- (in-package goal) - (defconstant PC_CHEAT_MAX 18) ;; number of cheats + (defenum pc-cheats :bitfield #t :type uint64 @@ -22,8 +22,7 @@ (hero-mode) (huge-head) (big-head-npc) - (oh-my-goodness) - ) + (oh-my-goodness)) (defmacro pc-cheats? (obj &rest cheats) `(logtest? ,obj (pc-cheats ,@cheats))) diff --git a/goal_src/jak1/pc/pckernel-common.gc b/goal_src/jak1/pc/pckernel-common.gc index cd953527e5..48d466aadc 100644 --- a/goal_src/jak1/pc/pckernel-common.gc +++ b/goal_src/jak1/pc/pckernel-common.gc @@ -1,11 +1,8 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") - #| - This file contains new code that we need for the PC port of the game specifically. It should be included as part of the game engine package (engine.cgo). @@ -22,9 +19,7 @@ - whatever else. If you do not want to include these PC things, you should exclude it from the build system. - - |# - +|# (format 0 "pckernel version: ~D.~D~%" PC_KERNEL_VER_MAJOR PC_KERNEL_VER_MINOR) @@ -32,18 +27,16 @@ "return the current pckernel version" PC_KERNEL_VERSION) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; updates ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defmethod set-display-mode! pc-settings ((obj pc-settings) (mode symbol) (call-handlers symbol)) +(defmethod set-display-mode! ((obj pc-settings) (mode symbol) (call-handlers symbol)) "sets the game's display mode" ;; no-op if the display mode hasn't actually changed (when (!= mode (-> obj display-mode)) ;; change the display mode. (set! (-> obj display-mode) mode) - (when call-handlers ;; set fullscreen to what we want (pc-set-display-mode (-> obj display-mode)) @@ -53,64 +46,46 @@ (pc-set-window-size (max PC_MIN_WIDTH (-> obj window-width)) (max PC_MIN_HEIGHT (-> obj window-height)))))) 0) -(defmethod set-size! pc-settings ((obj pc-settings) (width int) (height int) (call-handlers symbol)) +(defmethod set-size! ((obj pc-settings) (width int) (height int) (call-handlers symbol)) "sets the size of the display window" (format 0 "Setting ~A size to ~D x ~D~%" (-> obj display-mode) width height) (cond ((= 'windowed (-> obj display-mode)) - (set! (-> obj window-width) width) - (set! (-> obj window-height) height) - (if call-handlers - (pc-set-window-size (max PC_MIN_WIDTH (-> obj window-width)) (max PC_MIN_HEIGHT (-> obj window-height)))) - ) - (else - (set! (-> obj width) width) - (set! (-> obj height) height) - ) - ) + (set! (-> obj window-width) width) + (set! (-> obj window-height) height) + (if call-handlers (pc-set-window-size (max PC_MIN_WIDTH (-> obj window-width)) (max PC_MIN_HEIGHT (-> obj window-height))))) + (else (set! (-> obj width) width) (set! (-> obj height) height))) (none)) -(defmethod set-aspect! pc-settings ((obj pc-settings) (aw int) (ah int)) +(defmethod set-aspect! ((obj pc-settings) (aw int) (ah int)) "set the aspect ratio used for rendering. this forces native widescreen and takes width and height ratios." (let ((aspect (/ (the float aw) (the float ah)))) (set-aspect-ratio! obj aspect) (set! (-> obj aspect-custom-x) aw) (set! (-> obj aspect-custom-y) ah) (set! (-> obj aspect-ratio-auto?) #f) - (set! (-> obj use-vis?) #f) - ) + (set! (-> obj use-vis?) #f)) (none)) -(defmethod set-aspect-ratio! pc-settings ((obj pc-settings) (aspect float)) +(defmethod set-aspect-ratio! ((obj pc-settings) (aspect float)) "set the aspect ratio used for rendering." (set! (-> obj aspect-ratio) aspect) (set! (-> obj aspect-ratio-scale) (/ aspect ASPECT_4X3)) (set! (-> obj aspect-ratio-reciprocal) (/ ASPECT_4X3 aspect)) (none)) -(defmethod set-frame-rate! pc-settings ((obj pc-settings) (rate int) (call-handlers symbol)) +(defmethod set-frame-rate! ((obj pc-settings) (rate int) (call-handlers symbol)) "set the target framerate." - (if call-handlers - (pc-set-frame-rate rate)) - (if (and (!= 'fullscreen (-> obj display-mode)) - (!= (pc-get-active-display-refresh-rate) rate)) - (set! (-> obj vsync?) #f)) + (if call-handlers (pc-set-frame-rate rate)) + (if (and (!= 'fullscreen (-> obj display-mode)) (!= (pc-get-active-display-refresh-rate) rate)) (set! (-> obj vsync?) #f)) (set! (-> obj target-fps) rate) (case rate - ((50) - (set-game-setting! obj 'video-mode 'pal) - ) - ((60) - (set-game-setting! obj 'video-mode 'ntsc) - ) - (else - (set-game-setting! obj 'video-mode 'custom) - ) - ) - + ((50) (set-game-setting! obj 'video-mode 'pal)) + ((60) (set-game-setting! obj 'video-mode 'ntsc)) + (else (set-game-setting! obj 'video-mode 'custom))) rate) -(defmethod set-monitor! pc-settings ((obj pc-settings) (monitor int)) +(defmethod set-monitor! ((obj pc-settings) (monitor int)) "set the monitor to use when in fullscreen/borderless" ;; if monitor selection is out of bounds (e.g. if a monitor got disconnected), ;; then default to the primary monitor @@ -118,118 +93,83 @@ ((>= (-> obj monitor) (pc-get-display-count)) (format 0 "Monitor selection out of bounds, defaulting to primary monitor.~%") (set! (-> obj monitor) 0)) - (else - (set! (-> obj monitor) monitor))) + (else (set! (-> obj monitor) monitor))) (pc-set-fullscreen-display (-> obj monitor)) (none)) -(defmethod commit-to-file pc-settings ((obj pc-settings)) +(defmethod commit-to-file ((obj pc-settings)) "commits the current settings to the file" (format (clear *pc-temp-string-1*) "~S/pc-settings.gc" *pc-settings-folder*) (pc-mkdir-file-path *pc-temp-string-1*) (write-to-file obj *pc-temp-string-1*) (none)) -(defmethod update-from-os pc-settings ((obj pc-settings)) +(defmethod update-from-os ((obj pc-settings)) "Update settings from the C kernel to GOAL." - (pc-get-window-size (&-> obj framebuffer-width) (&-> obj framebuffer-height)) (pc-get-window-scale (&-> obj dpi-x) (&-> obj dpi-y)) - (when (-> obj use-vis?) (if (= (get-game-setting obj 'aspect-ratio) 'aspect4x3) - (set-aspect-ratio! obj ASPECT_4X3) - (set-aspect-ratio! obj ASPECT_16X9) - ) - ) - + (set-aspect-ratio! obj ASPECT_4X3) + (set-aspect-ratio! obj ASPECT_16X9))) (unless (or (zero? (-> obj framebuffer-width)) (zero? (-> obj framebuffer-height))) - (let ((win-aspect (/ (the float (-> obj framebuffer-width)) (the float (-> obj framebuffer-height))))) - (cond - ((and (not (-> obj use-vis?)) (-> obj aspect-ratio-auto?)) - ;; the window determines the resolution - (set-aspect-ratio! obj win-aspect) - (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) - (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height)) - ) - ((> win-aspect (-> obj aspect-ratio)) - ;; too wide - (set! (-> obj framebuffer-scissor-width) (the int (* (the float (-> obj framebuffer-height)) (-> obj aspect-ratio)))) - (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height)) - ) - ((< win-aspect (-> obj aspect-ratio)) - ;; too tall - (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) - (set! (-> obj framebuffer-scissor-height) (the int (/ (the float (-> obj framebuffer-width)) (-> obj aspect-ratio)))) - ) - (else - ;; just right - (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) - (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height)) - ) - ) - )) - - + (let ((win-aspect (/ (the float (-> obj framebuffer-width)) (the float (-> obj framebuffer-height))))) + (cond + ((and (not (-> obj use-vis?)) (-> obj aspect-ratio-auto?)) + ;; the window determines the resolution + (set-aspect-ratio! obj win-aspect) + (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) + (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height))) + ((> win-aspect (-> obj aspect-ratio)) + ;; too wide + (set! (-> obj framebuffer-scissor-width) (the int (* (the float (-> obj framebuffer-height)) (-> obj aspect-ratio)))) + (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height))) + ((< win-aspect (-> obj aspect-ratio)) + ;; too tall + (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) + (set! (-> obj framebuffer-scissor-height) (the int (/ (the float (-> obj framebuffer-width)) (-> obj aspect-ratio))))) + (else + ;; just right + (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) + (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height)))))) (none)) -(defmethod update-to-os pc-settings ((obj pc-settings)) +(defmethod update-to-os ((obj pc-settings)) "Update settings from GOAL to the C kernel." - ;; TODO - move the below out of this function that runs every frame (cond - ((-> obj letterbox?) - (pc-set-letterbox (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height)) - ) - (else - (pc-set-letterbox (-> obj framebuffer-width) (-> obj framebuffer-height)) - ) - ) - + ((-> obj letterbox?) (pc-set-letterbox (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height))) + (else (pc-set-letterbox (-> obj framebuffer-width) (-> obj framebuffer-height)))) (pc-set-vsync (and (-> obj vsync?) - (or (= 'fullscreen (-> obj display-mode)) - (>= (pc-get-active-display-refresh-rate) (-> obj target-fps))))) - + (or (= 'fullscreen (-> obj display-mode)) (>= (pc-get-active-display-refresh-rate) (-> obj target-fps))))) (when (!= 'fullscreen (-> obj display-mode)) (pc-set-frame-rate (-> obj target-fps))) - ;; do game resolution (if (= (-> obj display-mode) 'windowed) - (pc-set-game-resolution (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height)) - (pc-set-game-resolution (-> obj width) (-> obj height))) - + (pc-set-game-resolution (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height)) + (pc-set-game-resolution (-> obj width) (-> obj height))) ;; set msaa sample rate. if invalid, just reset to 2. (let ((valid? #f)) - (dotimes (i 31) - (if (= (-> obj gfx-msaa) (ash 1 i)) - (true! valid?)) - ) - - (if (not valid?) (set! (-> obj gfx-msaa) PC_DEFAULT_MSAA)) - (pc-set-msaa (-> obj gfx-msaa)) - ) + (dotimes (i 31) + (if (= (-> obj gfx-msaa) (ash 1 i)) (true! valid?))) + (if (not valid?) (set! (-> obj gfx-msaa) PC_DEFAULT_MSAA)) + (pc-set-msaa (-> obj gfx-msaa))) ;; -- end TODO - (pc-discord-rpc-set (if (-> obj discord-rpc?) 1 0)) - (when #t ;; (not (-> obj ps2-lod-dist?)) (pc-renderer-tree-set-lod (pc-renderer-tree-type tfrag3) (-> obj lod-force-tfrag)) - (pc-renderer-tree-set-lod (pc-renderer-tree-type tie3) (-> obj lod-force-tie)) - ) - + (pc-renderer-tree-set-lod (pc-renderer-tree-type tie3) (-> obj lod-force-tie))) (when *debug-segment* (pc-set-collision *collision-renderer*) (pc-set-collision-wireframe *collision-wireframe*) - (pc-set-collision-mode *collision-mode*) - ) - + (pc-set-collision-mode *collision-mode*)) (pc-sound-set-flava-hack (-> obj flava-hack)) (let ((fade-hack 0)) - (unless (-> obj music-fadein?) (logior! fade-hack 1)) - (unless (-> obj music-fadeout?) (logior! fade-hack 2)) - (pc-sound-set-fade-hack fade-hack) - ) - + (unless (-> obj music-fadein?) + (logior! fade-hack 1)) + (unless (-> obj music-fadeout?) + (logior! fade-hack 2)) + (pc-sound-set-fade-hack fade-hack)) (when (led-enabled? obj) (update-led obj) ;(format *stdcon* "led: ~,,2f ~,,2f ~,,2f (~,,2f%)~%" (-> obj controller-led-color r) (-> obj controller-led-color g) (-> obj controller-led-color b) (* 100.0 (-> obj controller-led-color a))) @@ -238,14 +178,17 @@ ;; now multiply by the brightness setting (vector-float*! (-> obj controller-led-color) (-> obj controller-led-color) (-> obj controller-led-brightness)) ;; now use it as the controller led color - (let ((led-rgba (new 'static 'rgba :r (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color r) 0.0 1.0)) - :g (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color g) 0.0 1.0)) - :b (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color b) 0.0 1.0)) - :a #x80))) - (set! *display-led-rgba* led-rgba) - (pc-set-controller-led! 0 (the-as int (-> led-rgba r)) (the-as int (-> led-rgba g)) (the-as int (-> led-rgba b)))) - ) - + (let ((led-rgba (new 'static + 'rgba + :r + (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color r) 0.0 1.0)) + :g + (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color g) 0.0 1.0)) + :b + (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color b) 0.0 1.0)) + :a #x80))) + (set! *display-led-rgba* led-rgba) + (pc-set-controller-led! 0 (the-as int (-> led-rgba r)) (the-as int (-> led-rgba g)) (the-as int (-> led-rgba b))))) (none)) (defmacro pc-cheat-toggle-and-tune (cheats-var cheat) @@ -253,181 +196,149 @@ `(begin (cpad-clear! 0 r1) (logxor! ,cheats-var (pc-cheats ,cheat)) - (cheats-sound-play (logtest? ,cheats-var (pc-cheats ,cheat))) - ) - ) + (cheats-sound-play (logtest? ,cheats-var (pc-cheats ,cheat))))) (defun real-movie? () "are we in an actual cutscene and should letterbox the view?" (and (nonzero? movie?) (movie?))) -(defmethod update pc-settings ((obj pc-settings)) +(defmethod update ((obj pc-settings)) "Update settings to/from PC kernel. Call this at the start of every frame. This will update things like the aspect-ratio, which will be used for graphics code later." - (update-from-os obj) (update-to-os obj) - (update-discord-rpc obj) - ;; update auto-splitter info (update-speedrun obj) - (when (not (-> obj use-vis?)) - (update-video-hacks obj) - ) + (update-video-hacks obj)) (cond ((not (-> obj ps2-actor-vis?)) - ;; kinda overkill. - (set! (-> *ACTOR-bank* birth-dist) (meters 10000)) - (set! (-> *ACTOR-bank* pause-dist) (meters 10000)) - (set! (-> *ACTOR-bank* birth-max) 1000) - ) + ;; kinda overkill. + (set! (-> *ACTOR-bank* birth-dist) (meters 10000)) + (set! (-> *ACTOR-bank* pause-dist) (meters 10000)) + (set! (-> *ACTOR-bank* birth-max) 1000)) ((> (-> *ACTOR-bank* birth-dist) (meters 220)) ;; the original caps at 220m, exceeding that means it was using our hacks - (set! (-> *ACTOR-bank* birth-dist) (meters 220)) - (set! (-> *ACTOR-bank* pause-dist) (meters 220)) - )) - + (set! (-> *ACTOR-bank* birth-dist) (meters 220)) + (set! (-> *ACTOR-bank* pause-dist) (meters 220)))) ;; cheats. (update-cheats obj) ;; music. (update-music-log obj) - (none)) -(defmethod update-cheats pc-settings ((obj pc-settings)) +(defmethod update-cheats ((obj pc-settings)) "run cheats." 0) -(defmethod update-music-log pc-settings ((obj pc-settings)) +(defmethod update-music-log ((obj pc-settings)) "update music log settings." 0) -(defmethod update-led pc-settings ((obj pc-settings)) +(defmethod update-led ((obj pc-settings)) "set the controller led color by modifying the controller-led-color vector" ;; random colors for fun lol (set-vector! (-> obj controller-led-color) (rand-vu) (rand-vu) (rand-vu) 1.0) ;(set-vector! (-> obj controller-led-color) 0.0 0.0 1.0 1.0) #t) -(defmethod led-enabled? pc-settings ((obj pc-settings)) +(defmethod led-enabled? ((obj pc-settings)) "should the controller led be set?" #f) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmethod get-current-game-width pc-settings ((obj pc-settings)) +(defmethod get-current-game-width ((obj pc-settings)) "return the current width in pixels of the visible portion of the game" - (cond ((= (-> obj display-mode) 'windowed) - (if (-> obj letterbox?) - (-> obj framebuffer-scissor-width) - (-> obj framebuffer-width))) - (else - (-> obj width)) - ) - ) -(defmethod get-current-game-height pc-settings ((obj pc-settings)) - "return the current height in pixels of the visible portion of the game" + (if (-> obj letterbox?) (-> obj framebuffer-scissor-width) (-> obj framebuffer-width))) + (else (-> obj width)))) +(defmethod get-current-game-height ((obj pc-settings)) + "return the current height in pixels of the visible portion of the game" (cond ((= (-> obj display-mode) 'windowed) - (if (-> obj letterbox?) - (-> obj framebuffer-scissor-height) - (-> obj framebuffer-height))) - (else - (-> obj height)) - ) - ) + (if (-> obj letterbox?) (-> obj framebuffer-scissor-height) (-> obj framebuffer-height))) + (else (-> obj height)))) (when *debug-segment* - -(defmethod draw pc-settings ((obj pc-settings) (buf dma-buffer)) - "debug draw some things on-screen" - - (when (-> obj debug?) - (format *stdcon* "fullscreen resolution: ~D x ~D~%" (-> obj width) (-> obj height)) - (format *stdcon* "window size: ~D x ~D @ ~,,1f x ~,,1f~%" (-> obj window-width) (-> obj window-height) (-> obj dpi-x) (-> obj dpi-y)) - (format *stdcon* "fb size: ~D x ~D (scissor: ~D x ~D)~%" (-> obj framebuffer-width) (-> obj framebuffer-height) (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height)) - (format *stdcon* "aspect: ~,,3f/~,,3f auto? ~A vis? ~A lbox? ~A~%" (-> obj aspect-ratio) (/ (the float (-> obj framebuffer-width)) (the float (-> obj framebuffer-height))) (-> obj aspect-ratio-auto?) (-> obj use-vis?) (-> obj letterbox?)) - (format *stdcon* "display-mode: ~A vsync? ~A~%" (-> obj display-mode) (-> obj vsync?)) - (clear *pc-temp-string*) - ) - (when *display-actor-bank* - (draw-string-xy (string-format "Actor Bank: ~,,1m/~,,1m (~D)" (-> *ACTOR-bank* pause-dist) (-> *ACTOR-bank* birth-dist) (-> *ACTOR-bank* birth-max)) buf 512 0 (font-color default) (font-flags shadow kerning right)) - ) - ) - -) - - -(defmethod set-ignore-controller-in-bg! pc-settings ((obj pc-settings) (val symbol)) + (defmethod draw ((obj pc-settings) (buf dma-buffer)) + "debug draw some things on-screen" + (when (-> obj debug?) + (format *stdcon* "fullscreen resolution: ~D x ~D~%" (-> obj width) (-> obj height)) + (format *stdcon* + "window size: ~D x ~D @ ~,,1f x ~,,1f~%" + (-> obj window-width) + (-> obj window-height) + (-> obj dpi-x) + (-> obj dpi-y)) + (format *stdcon* + "fb size: ~D x ~D (scissor: ~D x ~D)~%" + (-> obj framebuffer-width) + (-> obj framebuffer-height) + (-> obj framebuffer-scissor-width) + (-> obj framebuffer-scissor-height)) + (format *stdcon* + "aspect: ~,,3f/~,,3f auto? ~A vis? ~A lbox? ~A~%" + (-> obj aspect-ratio) + (/ (the float (-> obj framebuffer-width)) (the float (-> obj framebuffer-height))) + (-> obj aspect-ratio-auto?) + (-> obj use-vis?) + (-> obj letterbox?)) + (format *stdcon* "display-mode: ~A vsync? ~A~%" (-> obj display-mode) (-> obj vsync?)) + (clear *pc-temp-string*)) + (when *display-actor-bank* + (draw-string-xy (string-format "Actor Bank: ~,,1m/~,,1m (~D)" + (-> *ACTOR-bank* pause-dist) + (-> *ACTOR-bank* birth-dist) + (-> *ACTOR-bank* birth-max)) + buf + 512 + 0 + (font-color default) + (font-flags shadow kerning right))))) + +(defmethod set-ignore-controller-in-bg! ((obj pc-settings) (val symbol)) "sets whether or not to ignore controller inputs if the window is in the background" (set! (-> obj ignore-controller-win-unfocused?) val) (pc-ignore-background-controller-events! val) (none)) -(defmethod update-mouse-controls! pc-settings ((obj pc-settings)) +(defmethod update-mouse-controls! ((obj pc-settings)) "Uses whatever is set on the [[pc-settings]] to update the runtime on how it should interpret mouse events" (pc-set-mouse-options! (-> obj mouse-enabled?) (-> obj mouse-camera?) (-> obj mouse-movement?)) (pc-set-mouse-camera-sens! (-> obj mouse-xsens) (-> obj mouse-ysens)) (pc-set-auto-hide-cursor! (-> obj auto-hide-cursor?)) (none)) - -(defmethod debug-font-scale-factor pc-settings ((this pc-settings)) +(defmethod debug-font-scale-factor ((this pc-settings)) "return the debug font scale factor to be used." (declare (inline)) (if (-> this debug-font-scale-auto?) - (/ (-> this debug-font-scale) (fmax 1.0 (/ (the float (get-current-game-height this)) PC_BASE_HEIGHT))) - (-> this debug-font-scale))) - + (/ (-> this debug-font-scale) (fmax 1.0 (/ (the float (get-current-game-height this)) PC_BASE_HEIGHT))) + (-> this debug-font-scale))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; file IO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (defmacro file-stream-seek-until (fs func-name) `(let ((done? #f) (tell -1)) - (until done? - (let ((read (file-stream-read ,fs (-> *pc-temp-string* data) PC_TEMP_STRING_LEN))) (cond - ((zero? read) - (set! (-> *pc-temp-string* data read) 0) - (true! done?) - ) + ((zero? read) (set! (-> *pc-temp-string* data read) 0) (true! done?)) (else (dotimes (i read) (when (,func-name (-> *pc-temp-string* data i)) (true! done?) (set! tell (+ i (- (file-stream-tell ,fs) read))) - (set! i read) - ) - ) - ) - ) - - - ) - - ) - (if (!= tell -1) - (file-stream-seek ,fs tell SCE_SEEK_SET) - tell - ) - ) - ) + (set! i read))))))) + (if (!= tell -1) (file-stream-seek ,fs tell SCE_SEEK_SET) tell))) (defmacro file-stream-read-until (fs func-name) `(let ((read (file-stream-read ,fs (-> *pc-temp-string* data) PC_TEMP_STRING_LEN))) @@ -435,20 +346,14 @@ (when (,func-name (-> *pc-temp-string* data i)) (set! (-> *pc-temp-string* data i) 0) (file-stream-seek ,fs (+ i (- (file-stream-tell ,fs) read)) SCE_SEEK_SET) - (set! i read) - ) - ) - *pc-temp-string* - ) - ) + (set! i read))) + *pc-temp-string*)) (defmacro is-whitespace-or-bracket? (c) - `(or (is-whitespace-char? ,c) (= #x28 ,c) (= #x29 ,c)) - ) + `(or (is-whitespace-char? ,c) (= #x28 ,c) (= #x29 ,c))) (defun file-stream-seek-past-whitespace ((file file-stream)) - (file-stream-seek-until file not-whitespace-char?) - ) + (file-stream-seek-until file not-whitespace-char?)) (defun file-stream-read-word ((file file-stream)) (file-stream-read-until file is-whitespace-or-bracket?) @@ -459,262 +364,206 @@ `(let ((buf 255)) (file-stream-read ,fs (& buf) 1) ;(format 0 "getc got #x~X~%" buf) - buf - ) - ) + buf)) (defun file-stream-read-int ((file file-stream)) (file-stream-seek-past-whitespace file) (file-stream-read-word file) - (string->int *pc-temp-string*) - ) + (string->int *pc-temp-string*)) (defun file-stream-read-float ((file file-stream)) (file-stream-seek-past-whitespace file) (file-stream-read-word file) - (string->float *pc-temp-string*) - ) + (string->float *pc-temp-string*)) (defun file-stream-read-symbol ((file file-stream)) (file-stream-seek-past-whitespace file) (file-stream-read-word file) - (string->symbol *pc-temp-string*) - ) + (string->symbol *pc-temp-string*)) (defmacro pc-settings-read-throw-error (fs msg) "not an actual throw..." `(begin (format 0 "pc settings read error: ~S~%" ,msg) (file-stream-close ,fs) - (return #f) - ) - ) + (return #f))) (defmacro with-settings-scope (bindings &rest body) (let ((fs (first bindings))) `(begin (file-stream-seek-past-whitespace ,fs) (when (!= #x28 (file-stream-getc ,fs)) - (pc-settings-read-throw-error ,fs "invalid char, ( not found") - ) - + (pc-settings-read-throw-error ,fs "invalid char, ( not found")) ,@body - (file-stream-seek-past-whitespace ,fs) (when (!= #x29 (file-stream-getc ,fs)) ;; NOTE - if you have a setting in the file that isn't handled (even if its valid lisp) ;; this error will be thrown. - (pc-settings-read-throw-error ,fs "invalid char, ) not found") - ) - ) - ) - ) + (pc-settings-read-throw-error ,fs "invalid char, ) not found"))))) (defmacro file-stream-get-next-char-ret (fs) `(begin (file-stream-seek-past-whitespace ,fs) - (let ((c (file-stream-getc ,fs))) - (file-stream-seek ,fs -1 SCE_SEEK_CUR) - c)) - ) + (let ((c (file-stream-getc ,fs))) (file-stream-seek ,fs -1 SCE_SEEK_CUR) c))) (defmacro file-stream-get-next-char (fs) `(begin (file-stream-seek-past-whitespace ,fs) - (file-stream-getc ,fs) - ) - ) + (file-stream-getc ,fs))) (defmacro dosettings (bindings &rest body) "iterate over a list of key-value pairs like so: ( ) ( ) ... the name of key is stored in *pc-temp-string*" (let ((fs (first bindings))) `(let ((c -1)) - (while (begin (file-stream-seek-past-whitespace ,fs) (set! c (file-stream-getc ,fs)) (= #x28 c)) - (file-stream-read-word ,fs) - - ,@body - - (set! c (file-stream-get-next-char ,fs)) - (when (!= #x29 c) - (pc-settings-read-throw-error ,fs (string-format "invalid char, ) not found, got #x~X ~A" c *pc-temp-string*)) - ) - ) - (file-stream-seek ,fs -1 SCE_SEEK_CUR) - ) - ) - ) - -(defmethod read-from-file pc-settings ((obj pc-settings) (filename string)) + (while (begin + (file-stream-seek-past-whitespace ,fs) + (set! c (file-stream-getc ,fs)) + (= #x28 c)) + (file-stream-read-word ,fs) + ,@body + (set! c (file-stream-get-next-char ,fs)) + (when (!= #x29 c) + (pc-settings-read-throw-error ,fs (string-format "invalid char, ) not found, got #x~X ~A" c *pc-temp-string*)))) + (file-stream-seek ,fs -1 SCE_SEEK_CUR)))) + +(defmethod read-from-file ((obj pc-settings) (filename string)) "read settings from a file" - - (if (not filename) - (return #f)) - + (if (not filename) (return #f)) (let ((file (new 'stack 'file-stream filename 'read))) (when (not (file-stream-valid? file)) (return #f)) - (let ((version PC_KERNEL_VERSION)) (with-settings-scope (file) - (case-str (file-stream-read-word file) - (("settings") - (set! version (the pckernel-version (file-stream-read-int file))) - (cond - ((and (= (-> version major) PC_KERNEL_VER_MAJOR) - (= (-> version minor) PC_KERNEL_VER_MINOR)) - ;; minor or no difference - ) - (else - ;; major difference - (format 0 "PC kernel version mismatch! Got ~D.~D vs ~D.~D~%" PC_KERNEL_VER_MAJOR PC_KERNEL_VER_MINOR (-> version major) (-> version minor)) - (file-stream-close file) - (return #f) - ) - ) - (dosettings (file) - (handle-input-settings obj file) - ) - ;; upgrade settings if minor changes - ;; remember to delete this when major changes to the version number are made - (when (and (= PC_KERNEL_VER_MAJOR 1) - (= PC_KERNEL_VER_MINOR 10) - (or (> 3 (-> version build)) - (and (= 3 (-> version build)) (> 1 (-> version revision))))) - ;; 1.10 upgrade: turn envmap on - (set! (-> obj force-envmap?) #t) - ) - ) - ) - ) - - ) - - (file-stream-close file) - ) - + (case-str (file-stream-read-word file) + (("settings") + (set! version (the pckernel-version (file-stream-read-int file))) + (cond + ((and (= (-> version major) PC_KERNEL_VER_MAJOR) (= (-> version minor) PC_KERNEL_VER_MINOR)) + ;; minor or no difference + ) + (else + ;; major difference + (format 0 + "PC kernel version mismatch! Got ~D.~D vs ~D.~D~%" + PC_KERNEL_VER_MAJOR + PC_KERNEL_VER_MINOR + (-> version major) + (-> version minor)) + (file-stream-close file) + (return #f))) + (dosettings (file) (handle-input-settings obj file)) + ;; upgrade settings if minor changes + ;; remember to delete this when major changes to the version number are made + (when (and (= PC_KERNEL_VER_MAJOR 1) + (= PC_KERNEL_VER_MINOR 10) + (or (> 3 (-> version build)) (and (= 3 (-> version build)) (> 1 (-> version revision))))) + ;; 1.10 upgrade: turn envmap on + (set! (-> obj force-envmap?) #t)))))) + (file-stream-close file)) (format 0 "pc settings file read: ~A~%" filename) - ;; restore the windowed mode resolution properly (when (= (-> obj display-mode) 'windowed) (pc-set-window-size (max PC_MIN_WIDTH (-> obj window-width)) (max PC_MIN_HEIGHT (-> obj window-height)))) + #t) - #t - ) - -(defmethod handle-input-settings pc-settings ((obj pc-settings) (file file-stream)) +(defmethod handle-input-settings ((obj pc-settings) (file file-stream)) "handle the text parsing input for the 'settings' group" - (case-str *pc-temp-string* - (("fps") (set-frame-rate! obj (file-stream-read-int file) #t)) - (("window-size") - (set! (-> obj window-width) (file-stream-read-int file)) - (set! (-> obj window-height) (file-stream-read-int file)) - ) - (("game-size") - (set! (-> obj width) (file-stream-read-int file)) - (set! (-> obj height) (file-stream-read-int file)) - ) - (("msaa") (set! (-> obj gfx-msaa) (file-stream-read-int file))) - (("aspect-state") - ;; game aspect - (set-game-setting! obj 'aspect-ratio (file-stream-read-symbol file)) - ;; aspect ratio - (set! (-> obj aspect-custom-x) (file-stream-read-int file)) - (set! (-> obj aspect-custom-y) (file-stream-read-int file)) - ;; aspect auto - (set! (-> obj aspect-ratio-auto?) (file-stream-read-symbol file)) - - (unless (-> obj aspect-ratio-auto?) - (set-aspect! obj (-> obj aspect-custom-x) (-> obj aspect-custom-y)) - ) - ) - (("display-mode") - ;; force a display mode update - (set! (-> obj display-mode) #f) - (set-display-mode! obj (file-stream-read-symbol file) #t) - ) - (("monitor") (set-monitor! obj (file-stream-read-int file))) - (("letterbox") (set! (-> obj letterbox?) (file-stream-read-symbol file))) - (("vsync") (set! (-> obj vsync?) (file-stream-read-symbol file))) - (("font-scale") (set! (-> obj font-scale) (file-stream-read-float file))) - (("audio-latency-ms") (set! (-> obj audio-latency-ms) (file-stream-read-int file))) - (("audio-pan-override") (set! (-> obj audio-pan-override) (file-stream-read-float file))) - (("audio-volume-override") (set! (-> obj audio-volume-override) (file-stream-read-float file))) - (("audio-channel-nb") (set! (-> obj audio-channel-nb) (file-stream-read-int file))) - (("gfx-renderer") (set! (-> obj gfx-renderer) (the-as pc-gfx-renderer (file-stream-read-int file)))) - (("gfx-resolution") (set! (-> obj gfx-resolution) (file-stream-read-float file))) - (("gfx-anisotropy") (set! (-> obj gfx-anisotropy) (file-stream-read-float file))) - (("shrub-dist-mod") (set! (-> obj shrub-dist-mod) (file-stream-read-float file))) - (("lod-dist-mod") (set! (-> obj lod-dist-mod) (file-stream-read-float file))) - (("lod-force-tfrag") (set! (-> obj lod-force-tfrag) (file-stream-read-int file))) - (("lod-force-tie") (set! (-> obj lod-force-tie) (file-stream-read-int file))) - (("lod-force-ocean") (set! (-> obj lod-force-ocean) (file-stream-read-int file))) - (("lod-force-actor") (set! (-> obj lod-force-actor) (file-stream-read-int file))) - (("game-language") (set-game-language! obj (the-as language-enum (file-stream-read-int file)))) - (("subtitle-speaker") (set! (-> obj subtitle-speaker?) (file-stream-read-symbol file))) - (("territory") (set! (-> obj territory) (file-stream-read-int file))) - - (("ignore-controller-win-unfocused?") (set-ignore-controller-in-bg! obj (file-stream-read-symbol file))) - (("controller-hp-led?") (set! (-> obj controller-led-hp?) (file-stream-read-symbol file))) - (("controller-eco-led?") (set! (-> obj controller-led-eco?) (file-stream-read-symbol file))) - (("controller-heat-led?") (set! (-> obj controller-led-heat?) (file-stream-read-symbol file))) - (("stick-deadzone") (set! (-> obj stick-deadzone) (file-stream-read-float file))) - ;; TODO - remove this eventually, setting moved into json input-settings - ;; has to stay here or the settings parsing code explodes - (("keyboard-enabled?") (file-stream-read-symbol file)) - (("mouse-enabled?") (set! (-> obj mouse-enabled?) (file-stream-read-symbol file))) - (("mouse-camera?") (set! (-> obj mouse-camera?) (file-stream-read-symbol file))) - (("mouse-xsens") (set! (-> obj mouse-xsens) (file-stream-read-float file))) - (("mouse-ysens") (set! (-> obj mouse-ysens) (file-stream-read-float file))) - (("mouse-movement?") (set! (-> obj mouse-movement?) (file-stream-read-symbol file))) - (("auto-hide-cursor?") (set! (-> obj auto-hide-cursor?) (file-stream-read-symbol file))) - - (("ps2-read-speed?") (set! (-> obj ps2-read-speed?) (file-stream-read-symbol file))) - (("ps2-parts?") (set! (-> obj ps2-parts?) (file-stream-read-symbol file))) - (("ps2-music?") (set! (-> obj ps2-music?) (file-stream-read-symbol file))) - (("ps2-se?") (set! (-> obj ps2-se?) (file-stream-read-symbol file))) - (("ps2-hints?") (set! (-> obj ps2-hints?) (file-stream-read-symbol file))) - (("ps2-shadow?") (set! (-> obj ps2-shadow?) (file-stream-read-symbol file))) - (("ps2-lod-dist?") (set! (-> obj ps2-lod-dist?) (file-stream-read-symbol file))) - (("force-envmap?") (set! (-> obj force-envmap?) (file-stream-read-symbol file))) - (("force-actors?") (set! (-> obj ps2-actor-vis?) (not (file-stream-read-symbol file)))) - (("music-fade?") (file-stream-read-symbol file)) ;; TODO remove - (("use-vis?") (set! (-> obj use-vis?) (file-stream-read-symbol file))) - (("hinttitles?") (set! (-> obj hinttitles?) (file-stream-read-symbol file))) - (("discord-rpc?") (set! (-> obj discord-rpc?) (file-stream-read-symbol file))) - (("speedrunner-mode?") (set! (-> obj speedrunner-mode?) (file-stream-read-symbol file))) - (("cutscene-skips?") (file-stream-read-symbol file)) ;; TODO remove - (("first-camera-h-inverted?") (set! (-> obj first-camera-h-inverted?) (file-stream-read-symbol file))) - (("first-camera-v-inverted?") (set! (-> obj first-camera-v-inverted?) (file-stream-read-symbol file))) - (("third-camera-h-inverted?") (set! (-> obj third-camera-h-inverted?) (file-stream-read-symbol file))) - (("third-camera-v-inverted?") (set! (-> obj third-camera-v-inverted?) (file-stream-read-symbol file))) - (("music-fadein?") (set! (-> obj music-fadein?) (file-stream-read-symbol file))) - (("music-fadeout?") (set! (-> obj music-fadeout?) (file-stream-read-symbol file))) - (("controller-led-brightness") (set! (-> obj controller-led-brightness) (file-stream-read-float file))) - (("controller-led-min-brightness") (set! (-> obj controller-led-min-brightness) (file-stream-read-float file))) - (("controller-led-max-brightness") (set! (-> obj controller-led-max-brightness) (file-stream-read-float file))) - - ;; debug - (("debug-font-scale") (set! (-> obj debug-font-scale) (file-stream-read-float file))) - (("debug-font-scale-auto?") (set! (-> obj debug-font-scale-auto?) (file-stream-read-symbol file))) - (("panic") - (when (file-stream-read-symbol file) - (reset obj #t) - (return #f) - ) - ) - ) + (("fps") (set-frame-rate! obj (file-stream-read-int file) #t)) + (("window-size") + (set! (-> obj window-width) (file-stream-read-int file)) + (set! (-> obj window-height) (file-stream-read-int file))) + (("game-size") (set! (-> obj width) (file-stream-read-int file)) (set! (-> obj height) (file-stream-read-int file))) + (("msaa") (set! (-> obj gfx-msaa) (file-stream-read-int file))) + (("aspect-state") + ;; game aspect + (set-game-setting! obj 'aspect-ratio (file-stream-read-symbol file)) + ;; aspect ratio + (set! (-> obj aspect-custom-x) (file-stream-read-int file)) + (set! (-> obj aspect-custom-y) (file-stream-read-int file)) + ;; aspect auto + (set! (-> obj aspect-ratio-auto?) (file-stream-read-symbol file)) + (unless (-> obj aspect-ratio-auto?) + (set-aspect! obj (-> obj aspect-custom-x) (-> obj aspect-custom-y)))) + (("display-mode") + ;; force a display mode update + (set! (-> obj display-mode) #f) + (set-display-mode! obj (file-stream-read-symbol file) #t)) + (("monitor") (set-monitor! obj (file-stream-read-int file))) + (("letterbox") (set! (-> obj letterbox?) (file-stream-read-symbol file))) + (("vsync") (set! (-> obj vsync?) (file-stream-read-symbol file))) + (("font-scale") (set! (-> obj font-scale) (file-stream-read-float file))) + (("audio-latency-ms") (set! (-> obj audio-latency-ms) (file-stream-read-int file))) + (("audio-pan-override") (set! (-> obj audio-pan-override) (file-stream-read-float file))) + (("audio-volume-override") (set! (-> obj audio-volume-override) (file-stream-read-float file))) + (("audio-channel-nb") (set! (-> obj audio-channel-nb) (file-stream-read-int file))) + (("gfx-renderer") (set! (-> obj gfx-renderer) (the-as pc-gfx-renderer (file-stream-read-int file)))) + (("gfx-resolution") (set! (-> obj gfx-resolution) (file-stream-read-float file))) + (("gfx-anisotropy") (set! (-> obj gfx-anisotropy) (file-stream-read-float file))) + (("shrub-dist-mod") (set! (-> obj shrub-dist-mod) (file-stream-read-float file))) + (("lod-dist-mod") (set! (-> obj lod-dist-mod) (file-stream-read-float file))) + (("lod-force-tfrag") (set! (-> obj lod-force-tfrag) (file-stream-read-int file))) + (("lod-force-tie") (set! (-> obj lod-force-tie) (file-stream-read-int file))) + (("lod-force-ocean") (set! (-> obj lod-force-ocean) (file-stream-read-int file))) + (("lod-force-actor") (set! (-> obj lod-force-actor) (file-stream-read-int file))) + (("game-language") (set-game-language! obj (the-as language-enum (file-stream-read-int file)))) + (("subtitle-speaker") (set! (-> obj subtitle-speaker?) (file-stream-read-symbol file))) + (("territory") (set! (-> obj territory) (file-stream-read-int file))) + (("ignore-controller-win-unfocused?") (set-ignore-controller-in-bg! obj (file-stream-read-symbol file))) + (("controller-hp-led?") (set! (-> obj controller-led-hp?) (file-stream-read-symbol file))) + (("controller-eco-led?") (set! (-> obj controller-led-eco?) (file-stream-read-symbol file))) + (("controller-heat-led?") (set! (-> obj controller-led-heat?) (file-stream-read-symbol file))) + (("stick-deadzone") (set! (-> obj stick-deadzone) (file-stream-read-float file))) + ;; TODO - remove this eventually, setting moved into json input-settings + ;; has to stay here or the settings parsing code explodes + (("keyboard-enabled?") (file-stream-read-symbol file)) + (("mouse-enabled?") (set! (-> obj mouse-enabled?) (file-stream-read-symbol file))) + (("mouse-camera?") (set! (-> obj mouse-camera?) (file-stream-read-symbol file))) + (("mouse-xsens") (set! (-> obj mouse-xsens) (file-stream-read-float file))) + (("mouse-ysens") (set! (-> obj mouse-ysens) (file-stream-read-float file))) + (("mouse-movement?") (set! (-> obj mouse-movement?) (file-stream-read-symbol file))) + (("auto-hide-cursor?") (set! (-> obj auto-hide-cursor?) (file-stream-read-symbol file))) + (("ps2-read-speed?") (set! (-> obj ps2-read-speed?) (file-stream-read-symbol file))) + (("ps2-parts?") (set! (-> obj ps2-parts?) (file-stream-read-symbol file))) + (("ps2-music?") (set! (-> obj ps2-music?) (file-stream-read-symbol file))) + (("ps2-se?") (set! (-> obj ps2-se?) (file-stream-read-symbol file))) + (("ps2-hints?") (set! (-> obj ps2-hints?) (file-stream-read-symbol file))) + (("ps2-shadow?") (set! (-> obj ps2-shadow?) (file-stream-read-symbol file))) + (("ps2-lod-dist?") (set! (-> obj ps2-lod-dist?) (file-stream-read-symbol file))) + (("force-envmap?") (set! (-> obj force-envmap?) (file-stream-read-symbol file))) + (("force-actors?") (set! (-> obj ps2-actor-vis?) (not (file-stream-read-symbol file)))) + (("music-fade?") (file-stream-read-symbol file)) ;; TODO remove + (("use-vis?") (set! (-> obj use-vis?) (file-stream-read-symbol file))) + (("hinttitles?") (set! (-> obj hinttitles?) (file-stream-read-symbol file))) + (("discord-rpc?") (set! (-> obj discord-rpc?) (file-stream-read-symbol file))) + (("speedrunner-mode?") (set! (-> obj speedrunner-mode?) (file-stream-read-symbol file))) + (("cutscene-skips?") (file-stream-read-symbol file)) ;; TODO remove + (("first-camera-h-inverted?") (set! (-> obj first-camera-h-inverted?) (file-stream-read-symbol file))) + (("first-camera-v-inverted?") (set! (-> obj first-camera-v-inverted?) (file-stream-read-symbol file))) + (("third-camera-h-inverted?") (set! (-> obj third-camera-h-inverted?) (file-stream-read-symbol file))) + (("third-camera-v-inverted?") (set! (-> obj third-camera-v-inverted?) (file-stream-read-symbol file))) + (("music-fadein?") (set! (-> obj music-fadein?) (file-stream-read-symbol file))) + (("music-fadeout?") (set! (-> obj music-fadeout?) (file-stream-read-symbol file))) + (("controller-led-brightness") (set! (-> obj controller-led-brightness) (file-stream-read-float file))) + (("controller-led-min-brightness") (set! (-> obj controller-led-min-brightness) (file-stream-read-float file))) + (("controller-led-max-brightness") (set! (-> obj controller-led-max-brightness) (file-stream-read-float file))) + ;; debug + (("debug-font-scale") (set! (-> obj debug-font-scale) (file-stream-read-float file))) + (("debug-font-scale-auto?") (set! (-> obj debug-font-scale-auto?) (file-stream-read-symbol file))) + (("panic") (when (file-stream-read-symbol file) (reset obj #t) (return #f)))) 0) -(defmethod handle-output-settings pc-settings ((obj pc-settings) (file file-stream)) +(defmethod handle-output-settings ((obj pc-settings) (file file-stream)) "handle the text writing output for the 'settings' group" - (format file " (fps ~D)~%" (-> obj target-fps)) (format file " (msaa ~D)~%" (-> obj gfx-msaa)) - (format file " (aspect-state ~A ~D ~D ~A)~%" (get-game-setting obj 'aspect-ratio) - (-> obj aspect-custom-x) (-> obj aspect-custom-y) - (-> obj aspect-ratio-auto?)) + (format file + " (aspect-state ~A ~D ~D ~A)~%" + (get-game-setting obj 'aspect-ratio) + (-> obj aspect-custom-x) + (-> obj aspect-custom-y) + (-> obj aspect-ratio-auto?)) (format file " (display-mode ~A)~%" (-> obj display-mode)) (format file " (window-size ~D ~D)~%" (-> obj window-width) (-> obj window-height)) (format file " (game-size ~D ~D)~%" (-> obj width) (-> obj height)) @@ -724,12 +573,10 @@ ;(format file " (font-scale ~f)~%" (-> obj font-scale)) (format file " (debug-font-scale ~f)~%" (-> obj debug-font-scale)) (format file " (debug-font-scale-auto? ~A)~%" (-> obj debug-font-scale-auto?)) - ;(format file " (audio-latency-ms ~D)~%" (-> obj audio-latency-ms)) ;(format file " (audio-pan-override ~f)~%" (-> obj audio-pan-override)) ;(format file " (audio-volume-override ~f)~%" (-> obj audio-volume-override)) ;(format file " (audio-channel-nb ~D)~%" (-> obj audio-channel-nb)) - ;(format file " (gfx-renderer ~D)~%" (-> obj gfx-renderer)) ;(format file " (gfx-resolution ~f)~%" (-> obj gfx-resolution)) ;(format file " (gfx-anisotropy ~f)~%" (-> obj gfx-anisotropy)) @@ -739,7 +586,6 @@ (format file " (lod-force-tie ~D)~%" (-> obj lod-force-tie)) (format file " (lod-force-ocean ~D)~%" (-> obj lod-force-ocean)) (format file " (lod-force-actor ~D)~%" (-> obj lod-force-actor)) - (format file " (ignore-controller-win-unfocused? ~A)~%" (-> obj ignore-controller-win-unfocused?)) (format file " (controller-hp-led? ~A)~%" (-> obj controller-led-hp?)) (format file " (controller-eco-led? ~A)~%" (-> obj controller-led-eco?)) @@ -754,7 +600,6 @@ (format file " (mouse-ysens ~f)~%" (-> obj mouse-ysens)) (format file " (mouse-movement? ~A)~%" (-> obj mouse-movement?)) (format file " (auto-hide-cursor? ~A)~%" (-> obj auto-hide-cursor?)) - (format file " (ps2-read-speed? ~A)~%" (-> obj ps2-read-speed?)) (format file " (ps2-parts? ~A)~%" (-> obj ps2-parts?)) (format file " (ps2-music? ~A)~%" (-> obj ps2-music?)) @@ -779,48 +624,31 @@ (format file " (territory ~D)~%" (-> obj territory)) 0) -(defmethod write-to-file pc-settings ((obj pc-settings) (filename string)) +(defmethod write-to-file ((obj pc-settings) (filename string)) "write settings to a file" - - (if (not filename) - (return #f)) - + (if (not filename) (return #f)) (let ((file (new 'stack 'file-stream filename 'write))) - (if (not (file-stream-valid? file)) - (return #f)) - + (if (not (file-stream-valid? file)) (return #f)) (format file "(settings #x~X~%" PC_KERNEL_VERSION) - (handle-output-settings obj file) - (format file " )~%") - (file-stream-close file) - ) - + (file-stream-close file)) (format 0 "pc settings file write: ~A~%" filename) + #t) - #t - ) - -(defmethod load-settings pc-settings ((obj pc-settings)) +(defmethod load-settings ((obj pc-settings)) "load" (format (clear *pc-temp-string-1*) "~S/pc-settings.gc" *pc-settings-folder*) (cond ((pc-filepath-exists? *pc-temp-string-1*) - (format 0 "[PC] PC Settings found at '~S'...loading!~%" *pc-temp-string-1*) - (unless (read-from-file obj *pc-temp-string-1*) - (format 0 "[PC] PC Settings found at '~S' but could not be loaded, using defaults!~%" *pc-temp-string-1*) - (reset obj #t) - ) - ) - (else - (format 0 "[PC] PC Settings not found at '~S'...initializing with defaults!~%" *pc-temp-string-1*) - (reset obj #t) - ) - ) + (format 0 "[PC] PC Settings found at '~S'...loading!~%" *pc-temp-string-1*) + (unless (read-from-file obj *pc-temp-string-1*) + (format 0 "[PC] PC Settings found at '~S' but could not be loaded, using defaults!~%" *pc-temp-string-1*) + (reset obj #t))) + (else (format 0 "[PC] PC Settings not found at '~S'...initializing with defaults!~%" *pc-temp-string-1*) (reset obj #t))) 0) -(defmethod initialize pc-settings ((obj pc-settings)) +(defmethod initialize ((obj pc-settings)) "initial initialize method to be run after allocating" ;; load defaults not covered by the file (reset obj #f) @@ -833,40 +661,22 @@ (defmethod new pc-settings ((allocation symbol) (type-to-make type)) "make a new pc-settings" - (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - (initialize obj) - obj)) - + (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (initialize obj) obj)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; entity debugging ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (when *debug-segment* - -(defmethod update-pad entity-debug-inspect ((obj entity-debug-inspect) (pad-idx int)) - "respond to pad inputs" - - ;; scroll up - (if (cpad-pressed? pad-idx l1) - (1-! (-> obj scroll-y))) - ;; scroll down - (if (cpad-pressed? pad-idx r1) - (1+! (-> obj scroll-y))) - ;; toggle actor info - (if (cpad-pressed? pad-idx l3) - (not! (-> obj show-actor-info))) - ;; toggle long info - (if (cpad-pressed? pad-idx up) - (not! (-> obj show-long-info))) - - (minmax! (-> obj scroll-y) 0 (-> obj scroll-y-max)) - - (none)) - -) ;; when debug_segment - - - - - + (defmethod update-pad ((obj entity-debug-inspect) (pad-idx int)) + "respond to pad inputs" + ;; scroll up + (if (cpad-pressed? pad-idx l1) (1-! (-> obj scroll-y))) + ;; scroll down + (if (cpad-pressed? pad-idx r1) (1+! (-> obj scroll-y))) + ;; toggle actor info + (if (cpad-pressed? pad-idx l3) (not! (-> obj show-actor-info))) + ;; toggle long info + (if (cpad-pressed? pad-idx up) (not! (-> obj show-long-info))) + (minmax! (-> obj scroll-y) 0 (-> obj scroll-y-max)) + (none))) ;; when debug_segment diff --git a/goal_src/jak1/pc/pckernel-h.gc b/goal_src/jak1/pc/pckernel-h.gc index ecf5fcbe7d..26fa7e89b9 100644 --- a/goal_src/jak1/pc/pckernel-h.gc +++ b/goal_src/jak1/pc/pckernel-h.gc @@ -1,11 +1,8 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/ps2/pad.gc") - #| - This file contains code that we need for the PC port of the game specifically. It should be included as part of the game engine package (engine.cgo). @@ -22,288 +19,275 @@ - whatever else. If you do not want to include these PC things, you should exclude it from the build system. - - |# - +|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (deftype pckernel-version (int64) - ((build int16 :offset 0) - (revision int16 :offset 16) - (minor int16 :offset 32) - (major int16 :offset 48) - ) - ) + ((build int16 :offset 0) + (revision int16 :offset 16) + (minor int16 :offset 32) + (major int16 :offset 48))) (defmacro static-pckernel-version (major minor rev build) `(new 'static 'pckernel-version :major ,major :minor ,minor :revision ,rev :build ,build)) + (defconstant PC_KERNEL_INVALID_VERSION (static-pckernel-version #xffff #xffff #xffff #xffff)) - ;; version: invalid + +;; version: invalid (defconstant PC_KERNEL_VERSION PC_KERNEL_INVALID_VERSION) + (defconstant PC_KERNEL_VER_MAJOR (-> PC_KERNEL_VERSION major)) + (defconstant PC_KERNEL_VER_MINOR (-> PC_KERNEL_VERSION minor)) + (defconstant PC_KERNEL_VER_REVISION (-> PC_KERNEL_VERSION revision)) + (defconstant PC_KERNEL_VER_BUILD (-> PC_KERNEL_VERSION build)) (defun-extern get-pckernel-version pckernel-version) - (defconstant PS2_VOICE_AMOUNT 48) + (defconstant PC_VOICE_AMOUNT 256) (defconstant ASPECT_4X3 (/ 4.0 3.0)) + (defconstant ASPECT_16X9 (/ 16.0 9.0)) + (defconstant ASPECT_16X9_SCALE (/ ASPECT_16X9 ASPECT_4X3)) + (defconstant PC_BASE_WIDTH 640) + (defconstant PC_BASE_HEIGHT 480) + (defconstant PC_MIN_WIDTH 320) + (defconstant PC_MIN_HEIGHT 240) -(defconstant PC_DEFAULT_MSAA 2) +(defconstant PC_DEFAULT_MSAA 2) ;; how many entries the music log has. the game only has 21 tracks but let's have more space for no reason. (defconstant PC_MUSIC_LOG_LENGTH 30) + ;; how many entries the spool anim log has. only 164 are used in-game. (defconstant PC_SPOOL_LOG_LENGTH 170) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; types and enums ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; graphics renderers (defenum pc-gfx-renderer :type uint8 (software) (opengl) (vulkan) - (direct3d) - ) + (direct3d)) ;; music log info (deftype pc-music-log-entry (structure) - ((name symbol) - (flava-mask int32) - ) - :pack-me - ) + ((name symbol) + (flava-mask int32)) + :pack-me) ;; bingo integration. placeholder for now. -(deftype pc-bingo-info (structure) - () - :pack-me - ) - +(deftype pc-bingo-info (structure) () + :pack-me) ;; All of the configuration for the PC port in GOAL. Access things from here! ;; Includes some methods to change parameters. (deftype pc-settings (basic) - ((version pckernel-version) ;; version of this settings - + ((version pckernel-version) ;; version of this settings ;; "generic" graphics settings - (target-fps int16) ;; the target framerate of the game + (target-fps int16) ;; the target framerate of the game ;; game resolution? - (width int64) - (height int64) + (width int64) + (height int64) ;; window size. resolution = window size in windowed mode. - (window-width int64) - (window-height int64) + (window-width int64) + (window-height int64) ;; reported window framebuffer size from OS - (framebuffer-width int64) - (framebuffer-height int64) + (framebuffer-width int64) + (framebuffer-height int64) ;; the region to draw in that framebuffer. rest is cleared to black. - (framebuffer-scissor-width int64) - (framebuffer-scissor-height int64) - (dpi-x float) ;; DPI width scale - (dpi-y float) ;; DPI height scale - (aspect-ratio-auto? symbol) ;; if on, aspect ratio is calculated automatically based on game display size. - (aspect-ratio float) ;; the desired aspect ratio. set auto to off and then this to 4/3 to force 4x3 aspect. - (aspect-ratio-scale float) ;; aspect ratio compared to 4x3 - (aspect-ratio-reciprocal float) ;; reciprocal of that - (aspect-custom-x int) - (aspect-custom-y int) - (display-mode symbol) ;; display mode. can be windowed, fullscreen or borderless - (letterbox? symbol) ;; letterbox. #f = stretched - (vsync? symbol) ;; vsync. - (font-scale float) ;; font scaling. - (monitor int32) ;; index of which monitor to use when fullscreen or borderless - + (framebuffer-scissor-width int64) + (framebuffer-scissor-height int64) + (dpi-x float) ;; DPI width scale + (dpi-y float) ;; DPI height scale + (aspect-ratio-auto? symbol) ;; if on, aspect ratio is calculated automatically based on game display size. + (aspect-ratio float) ;; the desired aspect ratio. set auto to off and then this to 4/3 to force 4x3 aspect. + (aspect-ratio-scale float) ;; aspect ratio compared to 4x3 + (aspect-ratio-reciprocal float) ;; reciprocal of that + (aspect-custom-x int) + (aspect-custom-y int) + (display-mode symbol) ;; display mode. can be windowed, fullscreen or borderless + (letterbox? symbol) ;; letterbox. #f = stretched + (vsync? symbol) ;; vsync. + (font-scale float) ;; font scaling. + (monitor int32) ;; index of which monitor to use when fullscreen or borderless ;; debug settings - (os symbol) ;; windows, linux, macos - (user symbol) ;; username. not system username, just debug thing. - (debug? symbol) ;; more debug stuff just in case. - (debug-font-scale float) ;; debug font scaling factor. - (debug-font-scale-auto? symbol) ;; auto-scale debug font by screen height. - + (os symbol) ;; windows, linux, macos + (user symbol) ;; username. not system username, just debug thing. + (debug? symbol) ;; more debug stuff just in case. + (debug-font-scale float) ;; debug font scaling factor. + (debug-font-scale-auto? symbol) ;; auto-scale debug font by screen height. ;; device settings (ignore-controller-win-unfocused? symbol) - (controller-led-hp? symbol) - (controller-led-eco? symbol) - (controller-led-heat? symbol) - (controller-led-brightness float) - (controller-led-min-brightness float) - (controller-led-max-brightness float) - (controller-led-color rgbaf :inline) - (stick-deadzone float) ;; analog stick deadzone. 0-1 - (keyboard-enabled? symbol) ;; NOTE - this is here solely to satisfy jak 1's menu design, the setting has been moved into `input-settings.json` - (mouse-enabled? symbol) - (mouse-camera? symbol) - (mouse-xsens float) - (mouse-ysens float) - (mouse-movement? symbol) - (auto-hide-cursor? symbol) - + (controller-led-hp? symbol) + (controller-led-eco? symbol) + (controller-led-heat? symbol) + (controller-led-brightness float) + (controller-led-min-brightness float) + (controller-led-max-brightness float) + (controller-led-color rgbaf :inline) + (stick-deadzone float) ;; analog stick deadzone. 0-1 + (keyboard-enabled? symbol) ;; NOTE - this is here solely to satisfy jak 1's menu design, the setting has been moved into `input-settings.json` + (mouse-enabled? symbol) + (mouse-camera? symbol) + (mouse-xsens float) + (mouse-ysens float) + (mouse-movement? symbol) + (auto-hide-cursor? symbol) ;; audio settings - (audio-latency-ms int16) ;; audio latency in milliseconds - (audio-pan-override float) ;; audio pan modifier - (audio-volume-override float) ;; audio volume modifier - (audio-channel-nb int16) ;; audio channel amount. will be 48 on PS2 mode. - + (audio-latency-ms int16) ;; audio latency in milliseconds + (audio-pan-override float) ;; audio pan modifier + (audio-volume-override float) ;; audio volume modifier + (audio-channel-nb int16) ;; audio channel amount. will be 48 on PS2 mode. ;; graphics settings - (gfx-renderer pc-gfx-renderer) ;; the renderer to use - (gfx-resolution float) ;; for supersampling - (gfx-anisotropy float) ;; for anisotropy - (gfx-msaa int32) ;; for MSAA - + (gfx-renderer pc-gfx-renderer) ;; the renderer to use + (gfx-resolution float) ;; for supersampling + (gfx-anisotropy float) ;; for anisotropy + (gfx-msaa int32) ;; for MSAA ;; ps2 settings - (ps2-read-speed? symbol) ;; emulate DVD loads - (ps2-parts? symbol) ;; if off, increase particle cap - (ps2-music? symbol) ;; if off, use .wav files stored somewhere - (ps2-se? symbol) ;; if off, use adjusted sound effects - (ps2-hints? symbol) ;; if off, enables extra game hints - + (ps2-read-speed? symbol) ;; emulate DVD loads + (ps2-parts? symbol) ;; if off, increase particle cap + (ps2-music? symbol) ;; if off, use .wav files stored somewhere + (ps2-se? symbol) ;; if off, use adjusted sound effects + (ps2-hints? symbol) ;; if off, enables extra game hints ;; lod settings - (ps2-shadow? symbol) ;; if off, enables extended object shadows - (ps2-lod-dist? symbol) ;; use original lod distances - (force-envmap? symbol) ;; dont use envmap fading (force max). - (shrub-dist-mod float) ;; shrub render distance modifier - (lod-dist-mod float) ;; non-shrub lod distance modifier - (lod-force-tfrag int8) ;; tfrag lod tier override. 0 = highest detail - (lod-force-tie int8) ;; tie lod tier override - (lod-force-ocean int8) ;; ocean lod tier override - (lod-force-actor int8) ;; merc lod tier override - + (ps2-shadow? symbol) ;; if off, enables extended object shadows + (ps2-lod-dist? symbol) ;; use original lod distances + (force-envmap? symbol) ;; dont use envmap fading (force max). + (shrub-dist-mod float) ;; shrub render distance modifier + (lod-dist-mod float) ;; non-shrub lod distance modifier + (lod-force-tfrag int8) ;; tfrag lod tier override. 0 = highest detail + (lod-force-tie int8) ;; tie lod tier override + (lod-force-ocean int8) ;; ocean lod tier override + (lod-force-actor int8) ;; merc lod tier override ;; misc settings - (ps2-actor-vis? symbol) ;; skips vis check for actor entity if disabled - (use-vis? symbol) ;; if off, don't use vis trees. this MUST be off for custom (non-cropping) aspect ratios. - (hinttitles? symbol) ;; if on, non-cutscene subtitles will show up - (subtitle-speaker? symbol) ;; #f (force off), #t (force on), auto (on for offscreen) - (first-camera-h-inverted? symbol) ;; first-person horizontal camera inverted - (first-camera-v-inverted? symbol) ;; first-person vertical camera inverted - (third-camera-h-inverted? symbol) ;; third-person horizontal camera inverted - (third-camera-v-inverted? symbol) ;; third-person vertical camera inverted - (music-fadeout? symbol) ;; music fadeout toggle. - (music-fadein? symbol) ;; music fadein toggle. - - (territory int16) - - (bingo pc-bingo-info :inline) ;; bingo integration. does nothing for now. - - (discord-rpc? symbol) ;; enable discord rich presence integration - (speedrunner-mode? symbol) ;; enable speedrunner mode - - (flava-hack int64) - + (ps2-actor-vis? symbol) ;; skips vis check for actor entity if disabled + (use-vis? symbol) ;; if off, don't use vis trees. this MUST be off for custom (non-cropping) aspect ratios. + (hinttitles? symbol) ;; if on, non-cutscene subtitles will show up + (subtitle-speaker? symbol) ;; #f (force off), #t (force on), auto (on for offscreen) + (first-camera-h-inverted? symbol) ;; first-person horizontal camera inverted + (first-camera-v-inverted? symbol) ;; first-person vertical camera inverted + (third-camera-h-inverted? symbol) ;; third-person horizontal camera inverted + (third-camera-v-inverted? symbol) ;; third-person vertical camera inverted + (music-fadeout? symbol) ;; music fadeout toggle. + (music-fadein? symbol) ;; music fadein toggle. + (territory int16) + (bingo pc-bingo-info :inline) ;; bingo integration. does nothing for now. + (discord-rpc? symbol) ;; enable discord rich presence integration + (speedrunner-mode? symbol) ;; enable speedrunner mode + (flava-hack int64) ;; TODO - save/restore original settings (language/sound/etc) ) - (:methods - (new (symbol type) _type_) - (initialize (_type_) _type_) - (update (_type_) none) - (update-from-os (_type_) none) - (update-to-os (_type_) none) - (update-discord-rpc (_type_) none) - (update-speedrun (_type_) none) - (update-video-hacks (_type_) object) - (reset (_type_ symbol) int) - (reset-audio (_type_ symbol) int) - (reset-input (_type_ symbol symbol) int) - (reset-gfx (_type_ symbol) int) - (reset-ps2 (_type_ symbol) int) - (reset-misc (_type_ symbol) int) - (reset-camera (_type_ symbol) int) - (reset-extra (_type_ symbol) int) - (print-debug-misc (_type_) object) - (draw (_type_ dma-buffer) object) - (draw-memory (_type_ dma-buffer) symbol) - (set-display-mode! (_type_ symbol symbol) int) - (set-size! (_type_ int int symbol) none) - (set-aspect! (_type_ int int) none) - (set-aspect-ratio! (_type_ float) none) - (set-frame-rate! (_type_ int symbol) int) - (set-monitor! (_type_ int) none) - (set-game-setting! (_type_ symbol symbol) object) - (get-game-setting (_type_ symbol) symbol) - (set-game-language! (_type_ language-enum) language-enum) - (get-game-language (_type_) language-enum) - (get-current-game-width (_type_) int) - (get-current-game-height (_type_) int) - (read-from-file (_type_ string) symbol) - (write-to-file (_type_ string) symbol) - (handle-input-settings (_type_ file-stream) object) - (handle-output-settings (_type_ file-stream) object) - (led-enabled? (_type_) symbol) - (update-led (_type_) symbol) - (update-cheats (_type_) int) - (update-music-log (_type_) int) - (add-to-music-log (_type_ symbol int) int) - (commit-to-file (_type_) none) - (load-settings (_type_) int) - (set-ignore-controller-in-bg! (_type_ symbol) none) - (update-mouse-controls! (_type_) none) - (debug-font-scale-factor (_type_) float) - ) - ) + (new (symbol type) _type_) + (initialize (_type_) _type_) + (update (_type_) none) + (update-from-os (_type_) none) + (update-to-os (_type_) none) + (update-discord-rpc (_type_) none) + (update-speedrun (_type_) none) + (update-video-hacks (_type_) object) + (reset (_type_ symbol) int) + (reset-audio (_type_ symbol) int) + (reset-input (_type_ symbol symbol) int) + (reset-gfx (_type_ symbol) int) + (reset-ps2 (_type_ symbol) int) + (reset-misc (_type_ symbol) int) + (reset-camera (_type_ symbol) int) + (reset-extra (_type_ symbol) int) + (print-debug-misc (_type_) object) + (draw (_type_ dma-buffer) object) + (draw-memory (_type_ dma-buffer) symbol) + (set-display-mode! (_type_ symbol symbol) int) + (set-size! (_type_ int int symbol) none) + (set-aspect! (_type_ int int) none) + (set-aspect-ratio! (_type_ float) none) + (set-frame-rate! (_type_ int symbol) int) + (set-monitor! (_type_ int) none) + (set-game-setting! (_type_ symbol symbol) object) + (get-game-setting (_type_ symbol) symbol) + (set-game-language! (_type_ language-enum) language-enum) + (get-game-language (_type_) language-enum) + (get-current-game-width (_type_) int) + (get-current-game-height (_type_) int) + (read-from-file (_type_ string) symbol) + (write-to-file (_type_ string) symbol) + (handle-input-settings (_type_ file-stream) object) + (handle-output-settings (_type_ file-stream) object) + (led-enabled? (_type_) symbol) + (update-led (_type_) symbol) + (update-cheats (_type_) int) + (update-music-log (_type_) int) + (add-to-music-log (_type_ symbol int) int) + (commit-to-file (_type_) none) + (load-settings (_type_) int) + (set-ignore-controller-in-bg! (_type_ symbol) none) + (update-mouse-controls! (_type_) none) + (debug-font-scale-factor (_type_) float))) (defconstant PC_TEMP_STRING_LEN 1024) + (define *pc-temp-string* (new 'global 'string PC_TEMP_STRING_LEN (the string #f))) (define *pc-temp-string-1* (new 'global 'string 2048 (the string #f))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; debug settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define *display-actor-bank* #f) + (define *display-pad-debug* #f) + (define *display-led* #f) + (define *display-led-rgba* (new 'static 'rgba)) + (define *display-heap-status* #f) + (define *display-actor-counts* #f) + (define *display-text-box* #f) + (define *display-sha* *debug-segment*) ;; collision renderer things. debug only. (define *collision-renderer* #f) + (define *collision-wireframe* #f) -(define *collision-mode* (pc-collision-mode mode)) +(define *collision-mode* (pc-collision-mode mode)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; resets ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmethod reset pc-settings ((obj pc-settings) (call-handlers symbol)) +(defmethod reset ((obj pc-settings) (call-handlers symbol)) "Reset everything back to default settings If call-handlers = #t then events will be sent to the runtime kernel to update OS settings such as window size, etc. If you just want to set the settings and handle the fields yourself later, set call-handlers to #f such as if you're setting the initial values right before reading the settings file that changes them." - (format 0 "pc settings reset~%") - (set! (-> obj version) (get-pckernel-version)) - (set! (-> obj os) (pc-get-os)) (set! (-> obj user) #f) (set! (-> obj debug?) #f) @@ -314,69 +298,54 @@ (set! (-> obj speedrunner-mode?) #f) (set! (-> obj debug-font-scale) 1.0) (set! (-> obj debug-font-scale-auto?) #t) - (reset-gfx obj call-handlers) (reset-audio obj call-handlers) (reset-input obj 'all call-handlers) (reset-ps2 obj call-handlers) (reset-misc obj call-handlers) (reset-extra obj call-handlers) - 0) - -(defmethod reset-gfx pc-settings ((obj pc-settings) (call-handlers symbol)) +(defmethod reset-gfx ((obj pc-settings) (call-handlers symbol)) "Set the default graphics settings" - ;; temporarily "set" to windowed so we can change window size ;; we set our actual target display mode later. (set! (-> obj display-mode) 'windowed) (set-size! obj PC_BASE_WIDTH PC_BASE_HEIGHT #f) - (set-aspect! obj 4 3) (set-frame-rate! obj 60 call-handlers) - (set! (-> obj use-vis?) #f) (set! (-> obj aspect-ratio-auto?) #t) (set! (-> obj vsync?) #t) (set! (-> obj letterbox?) #t) - ;; get screen size and set to borderless at screen res (if retail) (cond ((> (pc-get-num-resolutions) 0) ;; pick first available resolution by default - (pc-get-resolution 0 (&-> obj width) (&-> obj height)) - ) + (pc-get-resolution 0 (&-> obj width) (&-> obj height))) (else ;; somehow didn't get a single resolution. this is pretty bad. (pc-get-active-display-size (&-> obj width) (&-> obj height)) (max! (-> obj width) PC_MIN_WIDTH) (max! (-> obj height) PC_MIN_HEIGHT) - (format 0 "!!!! failed to get any screen resolutions !!!!") - ) - ) + (format 0 "!!!! failed to get any screen resolutions !!!!"))) (format 0 "fullscreen resolution defaulted to ~D x ~D~%" (-> obj width) (-> obj height)) - (if (not *debug-segment*) - (set-display-mode! obj 'borderless call-handlers) - (set-display-mode! obj 'windowed call-handlers)) + (if (not *debug-segment*) (set-display-mode! obj 'borderless call-handlers) (set-display-mode! obj 'windowed call-handlers)) (set! (-> obj gfx-msaa) PC_DEFAULT_MSAA) ;; default msaa 0) -(defmethod reset-audio pc-settings ((obj pc-settings) (call-handlers symbol)) +(defmethod reset-audio ((obj pc-settings) (call-handlers symbol)) "Set the default audio settings" - (set! (-> obj audio-latency-ms) 80) (set! (-> obj audio-pan-override) 0.0) (set! (-> obj audio-volume-override) 1.0) (set! (-> obj audio-channel-nb) PS2_VOICE_AMOUNT) - (set! (-> obj music-fadeout?) #t) (set! (-> obj music-fadein?) #t) 0) -(defmethod reset-input pc-settings ((obj pc-settings) (device symbol) (call-handlers symbol)) +(defmethod reset-input ((obj pc-settings) (device symbol) (call-handlers symbol)) "Set the default input settings" - (when (or (= device 'all) (= device 'controller)) (set! (-> obj ignore-controller-win-unfocused?) #f) (set! (-> obj controller-led-hp?) #t) @@ -385,32 +354,25 @@ (set! (-> obj stick-deadzone) 0.3) (set! (-> obj controller-led-brightness) 1.0) (set! (-> obj controller-led-min-brightness) 0.25) - (set! (-> obj controller-led-max-brightness) 1.0) - ) - + (set! (-> obj controller-led-max-brightness) 1.0)) (when (or (= device 'all) (= device 'input)) (set! (-> obj keyboard-enabled?) #f) (set! (-> obj mouse-enabled?) #f) - (set! (-> obj auto-hide-cursor?) #t) - ) - + (set! (-> obj auto-hide-cursor?) #t)) (when (or (= device 'all) (= device 'mouse)) (set! (-> obj mouse-camera?) #f) (set! (-> obj mouse-xsens) -15.0) (set! (-> obj mouse-ysens) 10.0) - (set! (-> obj mouse-movement?) #f) - ) + (set! (-> obj mouse-movement?) #f)) 0) -(defmethod reset-ps2 pc-settings ((obj pc-settings) (call-handlers symbol)) +(defmethod reset-ps2 ((obj pc-settings) (call-handlers symbol)) "Set the default ps2 settings" - (set! (-> obj ps2-read-speed?) #f) (set! (-> obj ps2-parts?) #f) (set! (-> obj ps2-music?) #t) (set! (-> obj ps2-se?) #t) (set! (-> obj ps2-hints?) #t) - (set! (-> obj ps2-shadow?) #f) (set! (-> obj ps2-lod-dist?) #f) (set! (-> obj force-envmap?) #t) @@ -422,188 +384,138 @@ (set! (-> obj lod-force-actor) 0) 0) -(defmethod reset-misc pc-settings ((obj pc-settings) (call-handlers symbol)) +(defmethod reset-misc ((obj pc-settings) (call-handlers symbol)) "Set the default misc settings" - (set! (-> obj ps2-actor-vis?) #t) (set! (-> obj hinttitles?) #t) (set! (-> obj subtitle-speaker?) 'auto) (reset-camera obj call-handlers) - (set! (-> obj territory) -1) ;; auto 0) -(defmethod reset-camera pc-settings ((obj pc-settings) (call-handlers symbol)) +(defmethod reset-camera ((obj pc-settings) (call-handlers symbol)) "Set the original game's camera controls" - (set! (-> obj first-camera-h-inverted?) #f) ;; first-person horizontal is NOT inverted in original game (set! (-> obj first-camera-v-inverted?) #t) ;; first-person vertical IS inverted in original game (set! (-> obj third-camera-h-inverted?) #t) ;; third person horizontal IS inverted in original game (set! (-> obj third-camera-v-inverted?) #t) ;; third-person vertical IS inverted in original game 0) -(defmethod reset-extra pc-settings ((obj pc-settings) (call-handlers symbol)) +(defmethod reset-extra ((obj pc-settings) (call-handlers symbol)) "Set the default goodies settings" - 0) (defmacro with-pc (&rest body) "encapsulates the code around PC-specific checks" - `(#when PC_PORT (when (and *pc-settings*) - ,@body - )) - ) - + `(#when PC_PORT + (when (and *pc-settings*) + ,@body))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; quick helpers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmacro get-debug-font-scale-factor () "return the debug font scale factor to be used." `(debug-font-scale-factor *pc-settings*)) - (defmacro fullscreen? () `(symbol-member? (-> *pc-settings* display-mode) '(fullscreen borderless))) - (defun bcd->dec ((bcd uint)) "Convert a number encoded in BCD to its decimal equivalent" (+ (* (shr (logand bcd #xf0) 4) 10) (logand bcd #x0f))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; cheats ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(seval (define *pc-cheat-map* - '((#\a (circle triangle)) - (#\b (square x)) - (#\c (circle)) - (#\d (down)) - (#\e (right right)) - ;; #\f - ;; #\g - ;; #\h - (#\i (up)) - ;; #\j - (#\k (circle)) - (#\l (left)) - (#\m (triangle)) - (#\n (up up)) - (#\o (square)) - (#\p (square circle)) - ;; #\q - (#\r (right)) - (#\s (down down)) - (#\t (triangle)) - (#\u (up)) - (#\v (down)) - (#\w (left left)) - (#\x (x)) - (#\y (triangle)) - (#\z (x x)) - )) - ) +(seval + (define *pc-cheat-map* + '((#\a (circle triangle)) + (#\b (square x)) + (#\c (circle)) + (#\d (down)) + (#\e (right right)) + ;; #\f + ;; #\g + ;; #\h + (#\i (up)) + ;; #\j + (#\k (circle)) + (#\l (left)) + (#\m (triangle)) + (#\n (up up)) + (#\o (square)) + (#\p (square circle)) + ;; #\q + (#\r (right)) + (#\s (down down)) + (#\t (triangle)) + (#\u (up)) + (#\v (down)) + (#\w (left left)) + (#\x (x)) + (#\y (triangle)) + (#\z (x x))))) (desfun pc-cheat-encode (word extra) "turn a cheat word into input names." (let ((out '()) (word-str (symbol->string word))) - - (dotimes (i (string-length word-str)) - (let ((char-to-inputs (assoc (string-ref word-str i) *pc-cheat-map*))) - (if (not char-to-inputs) - (ferror "bad input for pc cheat name: {}" (string-ref word-str i)) - (dolist (button (cadr char-to-inputs)) - (set! out (cons (car button) out)) - )) - )) - - (dolist (ex extra) - (set! out (cons (car ex) out))) - - out) - ) + (dotimes (i (string-length word-str)) + (let ((char-to-inputs (assoc (string-ref word-str i) *pc-cheat-map*))) + (if (not char-to-inputs) + (ferror "bad input for pc cheat name: {}" (string-ref word-str i)) + (dolist (button (cadr char-to-inputs)) + (set! out (cons (car button) out)))))) + (dolist (ex extra) + (set! out (cons (car ex) out))) + out)) (defmacro pc-check-cheat-code (cheat-var pad-idx input &key (extra ()) &rest body) "execute body when a cheat code made up of sequential inputs has been inputted" - (let ((buttons (pc-cheat-encode input extra))) - `(when (nonzero? (cpad-pressed ,pad-idx)) ;; only check when some button has been pressed - (case ,cheat-var - ,@(apply-i - (lambda (x i) - `((,i) - (if (cpad-pressed? ,pad-idx ,x) - ,(if (< i (- (length buttons) 1)) - `(1+! ,cheat-var) - - `(begin - (cond - ((-> *pc-settings* speedrunner-mode?) - (sound-play "cursor-options")) - (else - ,@body) - ) - (set! ,cheat-var 0) - ) - ) - - (set! ,cheat-var 0) - ) - ) - ) - buttons) - ) - ) - )) - - + `(when (nonzero? (cpad-pressed ,pad-idx)) ;; only check when some button has been pressed + (case ,cheat-var + ,@(apply-i + (lambda (x i) + `((,i) + (if (cpad-pressed? ,pad-idx ,x) + ,(if (< i (- (length buttons) 1)) + `(1+! ,cheat-var) + `(begin + (cond + ((-> *pc-settings* speedrunner-mode?) (sound-play "cursor-options")) + (else ,@body)) + (set! ,cheat-var 0))) + (set! ,cheat-var 0)))) + buttons))))) (defun-extern real-movie? symbol) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; entity debugging ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (when *debug-segment* - -(deftype entity-debug-inspect (basic) - ( - (scroll-y int16) - (scroll-y-max int16) - (entity entity) - (show-actor-info symbol) - (show-long-info symbol) - ) - (:methods - (new (symbol type) _type_) - (set-entity! (_type_ entity) entity) - (update-pad (_type_ int) none) - ) - ) - -(defmethod new entity-debug-inspect ((allocation symbol) (type-to-make type)) - "make a new entity-debug-inspect object" - - (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - - (set! (-> obj scroll-y) 0) - (set! (-> obj scroll-y-max) 0) - (set! (-> obj entity) (the entity #f)) - (set! (-> obj show-actor-info) #f) - (set! (-> obj show-long-info) #f) - obj - ) - ) - - -(define *entity-debug-inspect* (new 'debug 'entity-debug-inspect)) - - -) ;; when debug_segment + (deftype entity-debug-inspect (basic) + ((scroll-y int16) + (scroll-y-max int16) + (entity entity) + (show-actor-info symbol) + (show-long-info symbol)) + (:methods + (new (symbol type) _type_) + (set-entity! (_type_ entity) entity) + (update-pad (_type_ int) none))) + (defmethod new entity-debug-inspect ((allocation symbol) (type-to-make type)) + "make a new entity-debug-inspect object" + (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> obj scroll-y) 0) + (set! (-> obj scroll-y-max) 0) + (set! (-> obj entity) (the entity #f)) + (set! (-> obj show-actor-info) #f) + (set! (-> obj show-long-info) #f) + obj)) + (define *entity-debug-inspect* (new 'debug 'entity-debug-inspect))) ;; when debug_segment diff --git a/goal_src/jak1/pc/pckernel-impl.gc b/goal_src/jak1/pc/pckernel-impl.gc index e0ff4e420f..3e61cd0222 100644 --- a/goal_src/jak1/pc/pckernel-impl.gc +++ b/goal_src/jak1/pc/pckernel-impl.gc @@ -1,20 +1,14 @@ ;;-*-Lisp-*- (in-package goal) - (require "pc/pckernel-h.gc") - -#| - This file has the game-specific implementation of the pckernel (see pckernel-h.gc and pckernel.gc). - |# - +#| This file has the game-specific implementation of the pckernel (see pckernel-h.gc and pckernel.gc). |# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; version: 1.10.4.0 +;; version: 1.10.4.0 (defconstant PC_KERNEL_VERSION (static-pckernel-version 1 10 4 0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -46,7 +40,6 @@ (russian 18) (polish 19) (lithuanian 20) - (custom 999) ;; temp ) @@ -54,65 +47,54 @@ (defenum pc-jak1-concept-art :bitfield #t :type uint64 - (test) - ) + (test)) ;; secrets and goodies (deftype pc-game-secrets (structure) - ((art pc-jak1-concept-art) ;; concept art unlocked - (music pc-music-log-entry PC_MUSIC_LOG_LENGTH :inline) + ((art pc-jak1-concept-art) ;; concept art unlocked + (music pc-music-log-entry PC_MUSIC_LOG_LENGTH :inline) (hard-fish-hiscore int32) - (hard-rats? symbol) ;; enable this crap + (hard-rats? symbol) ;; enable this crap (hard-rats-hiscore int32) - (hard-rats-hiwave int32) - (hero-mode? symbol) ;; unsure how this should work - (hud-map? symbol) ;; enable map in HUD/progress? - (hud-counters? symbol) ;; enable level orb counter/global buzzer counter? - (hud-watch? symbol) ;; a watch that tells the time of day! - (watch-12hr? symbol) ;; 12-hour clock toggle + (hard-rats-hiwave int32) + (hero-mode? symbol) ;; unsure how this should work + (hud-map? symbol) ;; enable map in HUD/progress? + (hud-counters? symbol) ;; enable level orb counter/global buzzer counter? + (hud-watch? symbol) ;; a watch that tells the time of day! + (watch-12hr? symbol) ;; 12-hour clock toggle ) - :pack-me - ) + :pack-me) ;; The Jak 1 version of the pc-settings object. (deftype pc-settings-jak1 (pc-settings) - ( - (cheats pc-cheats) - (cheats-known pc-cheats) - - (skip-movies? symbol) ;; if on, enable cutscene skipping - (subtitles? symbol) ;; if on, cutscene subtitles will show up - (text-language pc-language) ;; language for game text + ((cheats pc-cheats) + (cheats-known pc-cheats) + (skip-movies? symbol) ;; if on, enable cutscene skipping + (subtitles? symbol) ;; if on, cutscene subtitles will show up + (text-language pc-language) ;; language for game text (subtitle-language pc-language) ;; language for subtitles - (money-starburst? symbol) ;; add a starburst to the money - (extra-hud? symbol) ;; extra hud elements. - - (secrets pc-game-secrets :inline) ;; hidden goodies and additional secrets! - - (scenes-seen uint8 PC_SPOOL_LOG_LENGTH) ;; cutscenes that have been seen, by spool-anim (maybe use 8-char name or bits instead?) - ) - ) + (money-starburst? symbol) ;; add a starburst to the money + (extra-hud? symbol) ;; extra hud elements. + (secrets pc-game-secrets :inline) ;; hidden goodies and additional secrets! + (scenes-seen uint8 PC_SPOOL_LOG_LENGTH) ;; cutscenes that have been seen, by spool-anim (maybe use 8-char name or bits instead?) + )) (define *pc-settings* (the pc-settings-jak1 #f)) - ;; jak 1 discord rpc structure (deftype discord-info (structure) - ((fuel (pointer float)) - (money-total (pointer float)) + ((fuel (pointer float)) + (money-total (pointer float)) (buzzer-total (pointer float)) - (deaths (pointer int32)) - (status string) - (level string) - (cutscene? symbol) - (ogreboss? symbol) - (plant-boss? symbol) - (racer? symbol) - (flutflut? symbol) - (time-of-day (pointer float)) - ) - ) - + (deaths (pointer int32)) + (status string) + (level string) + (cutscene? symbol) + (ogreboss? symbol) + (plant-boss? symbol) + (racer? symbol) + (flutflut? symbol) + (time-of-day (pointer float)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; debug settings @@ -123,17 +105,15 @@ (define *display-bug-report* #f) (define *mood-override-debug* #f) -(define *mood-override-table* (new 'global 'inline-array 'float 8)) +(define *mood-override-table* (new 'global 'inline-array 'float 8)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; resets ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmethod reset-misc pc-settings-jak1 ((obj pc-settings-jak1) (call-handlers symbol)) +(defmethod reset-misc ((obj pc-settings-jak1) (call-handlers symbol)) "Set the default misc settings" - ((method-of-type pc-settings reset-misc) obj call-handlers) (set! (-> obj text-language) (the pc-language (scf-get-language))) (set! (-> obj subtitle-language) (the pc-language (scf-get-language))) @@ -141,35 +121,28 @@ (set! (-> obj subtitles?) *debug-segment*) (cond ((and (= *default-territory* GAME_TERRITORY_SCEE) (= (-> obj text-language) (pc-language english))) - (set! (-> obj text-language) (pc-language uk-english)) - ;(set! (-> obj subtitle-language) (pc-language uk-english)) - ) + (set! (-> obj text-language) (pc-language uk-english)) + ;(set! (-> obj subtitle-language) (pc-language uk-english)) + ) ((= *default-territory* GAME_TERRITORY_SCEI) - (set! (-> obj text-language) (pc-language japanese)) - ;(set! (-> obj subtitle-language) (pc-language japanese)) - ) - (else - )) + (set! (-> obj text-language) (pc-language japanese)) + ;(set! (-> obj subtitle-language) (pc-language japanese)) + ) + (else)) (set! (-> obj money-starburst?) #f) (set! (-> obj extra-hud?) #f) 0) -(defmethod reset-extra pc-settings-jak1 ((obj pc-settings-jak1) (call-handlers symbol)) +(defmethod reset-extra ((obj pc-settings-jak1) (call-handlers symbol)) "Set the default goodies settings" - ((method-of-type pc-settings reset-extra) obj call-handlers) - (set! (-> obj cheats) (pc-cheats)) (set! (-> obj cheats-known) (pc-cheats)) - (dotimes (i PC_SPOOL_LOG_LENGTH) - (set! (-> obj scenes-seen i) 0) - ) + (set! (-> obj scenes-seen i) 0)) (dotimes (i PC_MUSIC_LOG_LENGTH) (set! (-> obj secrets music i name) #f) - (set! (-> obj secrets music i flava-mask) 0) - ) - + (set! (-> obj secrets music i flava-mask) 0)) (set! (-> obj secrets art) (pc-jak1-concept-art)) (set! (-> obj secrets hard-fish-hiscore) 0) (set! (-> obj secrets hard-rats-hiscore) 0) @@ -186,17 +159,14 @@ ;;;; other ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun get-video-params () *video-parms*) - +(defun get-video-params () + *video-parms*) ;; for debugging (defenum pc-pat-skip-hack :bitfield #t (noentity 0) (nocamera 1) - (noedge 2) + (noedge 2) (nolineofsight 12) - (unknowncamera 13) - ) - + (unknowncamera 13)) diff --git a/goal_src/jak1/pc/pckernel.gc b/goal_src/jak1/pc/pckernel.gc index 23b6d8992f..c5a4d20544 100644 --- a/goal_src/jak1/pc/pckernel.gc +++ b/goal_src/jak1/pc/pckernel.gc @@ -1,90 +1,75 @@ ;;-*-Lisp-*- (in-package goal) - (require "pc/util/pc-anim-util.gc") (require "engine/gfx/mood/time-of-day.gc") (require "engine/level/level.gc") (require "pc/pckernel-common.gc") - #| - This file runs the game-specific version of the pckernel. See pckernel-common.gc for the bulk of the pckernel. - - |# - - +|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmethod set-game-setting! pc-settings-jak1 ((obj pc-settings-jak1) (setting symbol) (value symbol)) +(defmethod set-game-setting! ((obj pc-settings-jak1) (setting symbol) (value symbol)) (case setting (('video-mode) - (set! (-> *setting-control* current video-mode) #f) - (set! (-> *setting-control* default video-mode) value) - ) - (('aspect-ratio) - (set! (-> *setting-control* default aspect-ratio) value) - ) - (else - (format #t "unknown setting ~A (~A) to set-game-setting!" setting value)) - ) - ) + (set! (-> *setting-control* current video-mode) #f) + (set! (-> *setting-control* default video-mode) value)) + (('aspect-ratio) (set! (-> *setting-control* default aspect-ratio) value)) + (else (format #t "unknown setting ~A (~A) to set-game-setting!" setting value)))) -(defmethod get-game-setting pc-settings-jak1 ((obj pc-settings-jak1) (setting symbol)) +(defmethod get-game-setting ((obj pc-settings-jak1) (setting symbol)) (case setting - (('video-mode) - (-> *setting-control* default video-mode) - ) - (('aspect-ratio) - (-> *setting-control* default aspect-ratio) - ) - (else - (format #t "unknown setting ~A to get-game-setting" setting) - #f) - ) - ) + (('video-mode) (-> *setting-control* default video-mode)) + (('aspect-ratio) (-> *setting-control* default aspect-ratio)) + (else (format #t "unknown setting ~A to get-game-setting" setting) #f))) -(defmethod set-game-language! pc-settings-jak1 ((obj pc-settings-jak1) (lang language-enum)) - (set! (-> *setting-control* default language) lang) - ) +(defmethod set-game-language! ((obj pc-settings-jak1) (lang language-enum)) + (set! (-> *setting-control* default language) lang)) -(defmethod get-game-language pc-settings-jak1 ((obj pc-settings-jak1)) - (-> *setting-control* default language) - ) +(defmethod get-game-language ((obj pc-settings-jak1)) + (-> *setting-control* default language)) ;; where we store the input progress for the cheat codes. make sure there's enough space for all cheats. (define *pc-cheat-temp* (new 'global 'inline-array 'uint8 PC_CHEAT_MAX)) -(defmethod update-cheats pc-settings-jak1 ((obj pc-settings-jak1)) +(defmethod update-cheats ((obj pc-settings-jak1)) "run cheats." - ;; first check for cheat inputs. (when (and (cpad-hold? 0 l2) (cpad-hold? 0 l1) (cpad-hold? 0 r2) (cpad-hold? 0 r1)) - (pc-check-cheat-code (-> *pc-cheat-temp* 0) 0 spirit :extra (x) - (logclear! (-> obj cheats) (pc-cheats eco-red eco-yellow eco-green)) - (pc-cheat-toggle-and-tune (-> obj cheats) eco-blue)) - - (pc-check-cheat-code (-> *pc-cheat-temp* 1) 0 spirit :extra (circle) - (logclear! (-> obj cheats) (pc-cheats eco-blue eco-yellow eco-green)) - (pc-cheat-toggle-and-tune (-> obj cheats) eco-red)) - - (pc-check-cheat-code (-> *pc-cheat-temp* 2) 0 spirit :extra (triangle) - (logclear! (-> obj cheats) (pc-cheats eco-red eco-yellow eco-blue)) - (pc-cheat-toggle-and-tune (-> obj cheats) eco-green)) - - (pc-check-cheat-code (-> *pc-cheat-temp* 3) 0 spirit :extra (square) - (logclear! (-> obj cheats) (pc-cheats eco-red eco-blue eco-green)) - (pc-cheat-toggle-and-tune (-> obj cheats) eco-yellow)) - - (pc-check-cheat-code (-> *pc-cheat-temp* 4) 0 undead - (logclear! (-> *target* state-flags) 16) - (pc-cheat-toggle-and-tune (-> obj cheats) invinc)) - + (pc-check-cheat-code (-> *pc-cheat-temp* 0) + 0 + spirit + :extra (x) + (logclear! (-> obj cheats) (pc-cheats eco-red eco-yellow eco-green)) + (pc-cheat-toggle-and-tune (-> obj cheats) eco-blue)) + (pc-check-cheat-code (-> *pc-cheat-temp* 1) + 0 + spirit + :extra (circle) + (logclear! (-> obj cheats) (pc-cheats eco-blue eco-yellow eco-green)) + (pc-cheat-toggle-and-tune (-> obj cheats) eco-red)) + (pc-check-cheat-code (-> *pc-cheat-temp* 2) + 0 + spirit + :extra (triangle) + (logclear! (-> obj cheats) (pc-cheats eco-red eco-yellow eco-blue)) + (pc-cheat-toggle-and-tune (-> obj cheats) eco-green)) + (pc-check-cheat-code (-> *pc-cheat-temp* 3) + 0 + spirit + :extra (square) + (logclear! (-> obj cheats) (pc-cheats eco-red eco-blue eco-green)) + (pc-cheat-toggle-and-tune (-> obj cheats) eco-yellow)) + (pc-check-cheat-code (-> *pc-cheat-temp* 4) + 0 + undead + (logclear! (-> *target* state-flags) 16) + (pc-cheat-toggle-and-tune (-> obj cheats) invinc)) (pc-check-cheat-code (-> *pc-cheat-temp* 5) 0 bluemoon (pc-cheat-toggle-and-tune (-> obj cheats) sidekick-blue)) (pc-check-cheat-code (-> *pc-cheat-temp* 6) 0 boombox (pc-cheat-toggle-and-tune (-> obj cheats) tunes)) (pc-check-cheat-code (-> *pc-cheat-temp* 7) 0 skies (pc-cheat-toggle-and-tune (-> obj cheats) sky)) @@ -97,155 +82,113 @@ ;(pc-check-cheat-code (-> *pc-cheat-temp* 14) 0 lunatic (pc-cheat-toggle-and-tune (-> obj cheats) hero-mode)) (pc-check-cheat-code (-> *pc-cheat-temp* 15) 0 plzstop (pc-cheat-toggle-and-tune (-> obj cheats) huge-head)) (pc-check-cheat-code (-> *pc-cheat-temp* 16) 0 evilbabe (pc-cheat-toggle-and-tune (-> obj cheats) oh-my-goodness)) - (pc-check-cheat-code (-> *pc-cheat-temp* 17) 0 smart (pc-cheat-toggle-and-tune (-> obj cheats) big-head-npc)) - ) - + (pc-check-cheat-code (-> *pc-cheat-temp* 17) 0 smart (pc-cheat-toggle-and-tune (-> obj cheats) big-head-npc))) ;; run cheats here. ;;;;;;;;;;;;;;;;;;; (when *target* - ;; hook custom animation callback - (if (nonzero? (-> *target* skel)) - (set! (-> *target* skel postbind-function) target-joint-callback-pc)) - - (with-pp (protect ((-> *target* fact eco-source) *sound-player-enable*) - ;; act as if this isnt a new source of eco to prevent spamming sounds. then restore the old source! - (when (< 0 (-> *target* fact eco-level)) + ;; hook custom animation callback + (if (nonzero? (-> *target* skel)) (set! (-> *target* skel postbind-function) target-joint-callback-pc)) + (with-pp + (protect ((-> *target* fact eco-source) + *sound-player-enable*) + ;; act as if this isnt a new source of eco to prevent spamming sounds. then restore the old source! + (when (< 0 (-> *target* fact eco-level)) (set! (-> *target* fact eco-source) (process->handle pp)) - (false! *sound-player-enable*) - ) - - (cond - ;; green eco! - ((pc-cheats? (-> obj cheats) eco-green) - (when (or (= (-> *target* fact eco-type) (pickup-type eco-green)) - (<= (-> *target* fact eco-level) 0.0)) - (define-extern vent type) - (protect ((-> pp type) (-> *target* control root-prim prim-core action)) - (set! (-> pp type) vent) - (logior! (-> *target* control root-prim prim-core action) (collide-action racer)) - (send-event *target* 'get-pickup (pickup-type eco-green) (-> *FACT-bank* eco-full-inc))) - ) - ) - ;; red eco! - ((pc-cheats? (-> obj cheats) eco-red) - (when (or (= (-> *target* fact eco-type) (pickup-type eco-red)) - (<= (-> *target* fact eco-level) 0.0)) - (send-event *target* 'get-pickup (pickup-type eco-red) (-> *FACT-bank* eco-full-inc)) - ) - ) - ;; blue eco! - ((pc-cheats? (-> obj cheats) eco-blue) - (when (or (= (-> *target* fact eco-type) (pickup-type eco-blue)) - (<= (-> *target* fact eco-level) 0.0)) - (protect ((-> *target* event-hook)) - (set! (-> *target* event-hook) target-generic-event-handler) - (send-event *target* 'get-pickup (pickup-type eco-blue) (-> *FACT-bank* eco-full-inc)) - ) - (send-event *target* 'boost (-> *FACT-bank* eco-single-inc)) - ) - ) - ;; yellow eco! - ((pc-cheats? (-> obj cheats) eco-yellow) - (when (or (= (-> *target* fact eco-type) (pickup-type eco-yellow)) - (<= (-> *target* fact eco-level) 0.0)) - (send-event *target* 'get-pickup (pickup-type eco-yellow) (-> *FACT-bank* eco-full-inc)) - ) - ) - ) - )) - - (when (pc-cheats? (-> obj cheats) invinc) - (logior! (-> *target* state-flags) (state-flags invulnerable)) - ) - - ) - - (if (pc-cheats? (-> obj cheats) tunes) - (set! (-> obj flava-hack) -1) - (set! (-> obj flava-hack) 0) - ) - + (false! *sound-player-enable*)) + (cond + ;; green eco! + ((pc-cheats? (-> obj cheats) eco-green) + (when (or (= (-> *target* fact eco-type) (pickup-type eco-green)) (<= (-> *target* fact eco-level) 0.0)) + (define-extern vent type) + (protect ((-> pp type) + (-> *target* control root-prim prim-core action)) + (set! (-> pp type) vent) + (logior! (-> *target* control root-prim prim-core action) (collide-action racer)) + (send-event *target* 'get-pickup (pickup-type eco-green) (-> *FACT-bank* eco-full-inc))))) + ;; red eco! + ((pc-cheats? (-> obj cheats) eco-red) + (when (or (= (-> *target* fact eco-type) (pickup-type eco-red)) (<= (-> *target* fact eco-level) 0.0)) + (send-event *target* 'get-pickup (pickup-type eco-red) (-> *FACT-bank* eco-full-inc)))) + ;; blue eco! + ((pc-cheats? (-> obj cheats) eco-blue) + (when (or (= (-> *target* fact eco-type) (pickup-type eco-blue)) (<= (-> *target* fact eco-level) 0.0)) + (protect ((-> *target* event-hook)) + (set! (-> *target* event-hook) target-generic-event-handler) + (send-event *target* 'get-pickup (pickup-type eco-blue) (-> *FACT-bank* eco-full-inc))) + (send-event *target* 'boost (-> *FACT-bank* eco-single-inc)))) + ;; yellow eco! + ((pc-cheats? (-> obj cheats) eco-yellow) + (when (or (= (-> *target* fact eco-type) (pickup-type eco-yellow)) (<= (-> *target* fact eco-level) 0.0)) + (send-event *target* 'get-pickup (pickup-type eco-yellow) (-> *FACT-bank* eco-full-inc))))))) + (when (pc-cheats? (-> obj cheats) invinc) + (logior! (-> *target* state-flags) (state-flags invulnerable)))) + (if (pc-cheats? (-> obj cheats) tunes) (set! (-> obj flava-hack) -1) (set! (-> obj flava-hack) 0)) (if (pc-cheats? (-> obj cheats) sky) - (let ((date (new 'stack-no-clear 'scf-time))) - (scf-get-time date) - (when (zero? (-> date stat)) - (set-time-of-day (+ (the float (bcd->dec (-> date hour))) (/ (the float (bcd->dec (-> date minute))) 60)))) - )) - + (let ((date (new 'stack-no-clear 'scf-time))) + (scf-get-time date) + (when (zero? (-> date stat)) + (set-time-of-day (+ (the float (bcd->dec (-> date hour))) (/ (the float (bcd->dec (-> date minute))) 60)))))) (pc-set-gfx-hack (pc-gfx-hack no-tex) (logtest? (-> obj cheats) (pc-cheats no-tex))) - (if (pc-cheats? (-> obj cheats) mirror) - (sound-set-mirror-mode (sound-mirror-mode mirrored)) - (sound-set-mirror-mode (sound-mirror-mode normal))) - + (sound-set-mirror-mode (sound-mirror-mode mirrored)) + (sound-set-mirror-mode (sound-mirror-mode normal))) ;; run cheats end!!! ;;;;;;;;;;;;;;;;;;;; - (logior! (-> obj cheats-known) (-> obj cheats)) 0) -(defmethod update-music-log pc-settings-jak1 ((obj pc-settings-jak1)) +(defmethod update-music-log ((obj pc-settings-jak1)) "update music log settings." - ;; add whatever is playing to the music log. (add-to-music-log obj (-> *setting-control* current music) (the int (-> *setting-control* current sound-flava))) - ;; special cases. for example, npc's that despawn and you can't hear their music anymore. (if (task-closed? (game-task village1-buzzer) (task-status need-resolution)) - (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava assistant)))) + (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava assistant)))) (if (task-closed? (game-task village2-buzzer) (task-status need-resolution)) - (add-to-music-log obj 'village2 (flava-lookup 'village2 (music-flava assistant)))) + (add-to-music-log obj 'village2 (flava-lookup 'village2 (music-flava assistant)))) (if (task-closed? (game-task village3-buzzer) (task-status need-resolution)) - (add-to-music-log obj 'village3 (flava-lookup 'village3 (music-flava assistant)))) + (add-to-music-log obj 'village3 (flava-lookup 'village3 (music-flava assistant)))) (when (task-closed? (game-task beach-ecorocks) (task-status need-introduction)) - (add-to-music-log obj 'village1 1) - (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava sage))) - ) - (if (task-closed? (game-task jungle-plant) (task-status need-resolution)) - (add-to-music-log obj 'jungleb 2)) + (add-to-music-log obj 'village1 1) + (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava sage)))) + (if (task-closed? (game-task jungle-plant) (task-status need-resolution)) (add-to-music-log obj 'jungleb 2)) (if (task-closed? (game-task beach-flutflut) (task-status need-resolution)) - (add-to-music-log obj 'beach (flava-lookup 'beach (music-flava birdlady)))) + (add-to-music-log obj 'beach (flava-lookup 'beach (music-flava birdlady)))) (if (task-closed? (game-task beach-flutflut) (task-status need-resolution)) - (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava birdlady)))) + (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava birdlady)))) (if (task-closed? (game-task misty-warehouse) (task-status need-resolution)) - (add-to-music-log obj 'misty (flava-lookup 'misty (music-flava misty-battle)))) - (if (task-closed? (game-task misty-cannon) (task-status need-resolution)) - (add-to-music-log obj 'misty 4)) - (if (task-closed? (game-task firecanyon-end) (task-status need-resolution)) - (add-to-music-log obj 'firecanyon 2)) + (add-to-music-log obj 'misty (flava-lookup 'misty (music-flava misty-battle)))) + (if (task-closed? (game-task misty-cannon) (task-status need-resolution)) (add-to-music-log obj 'misty 4)) + (if (task-closed? (game-task firecanyon-end) (task-status need-resolution)) (add-to-music-log obj 'firecanyon 2)) (if (task-closed? (game-task village2-levitator) (task-status need-hint)) - (add-to-music-log obj 'village2 (flava-lookup 'village2 (music-flava sage)))) - (if (task-closed? (game-task swamp-billy) (task-status need-resolution)) - (add-to-music-log obj 'swamp 1)) + (add-to-music-log obj 'village2 (flava-lookup 'village2 (music-flava sage)))) + (if (task-closed? (game-task swamp-billy) (task-status need-resolution)) (add-to-music-log obj 'swamp 1)) (if (task-closed? (game-task swamp-battle) (task-status need-resolution)) - (add-to-music-log obj 'swamp (flava-lookup 'swamp (music-flava swamp-battle)))) + (add-to-music-log obj 'swamp (flava-lookup 'swamp (music-flava swamp-battle)))) (if (task-closed? (game-task village3-button) (task-status need-hint)) - (add-to-music-log obj 'village3 (flava-lookup 'village3 (music-flava sage)))) + (add-to-music-log obj 'village3 (flava-lookup 'village3 (music-flava sage)))) (if (task-closed? (game-task snow-bunnies) (task-status need-resolution)) - (add-to-music-log obj 'snow (flava-lookup 'snow (music-flava snow-battle)))) + (add-to-music-log obj 'snow (flava-lookup 'snow (music-flava snow-battle)))) (if (task-closed? (game-task citadel-sage-yellow) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-yellow)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-yellow)))) (if (task-closed? (game-task citadel-sage-red) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-red)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-red)))) (if (task-closed? (game-task citadel-sage-blue) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-blue)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-blue)))) (if (task-closed? (game-task citadel-sage-green) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage)))) (if (task-closed? (game-task citadel-buzzer) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava assistant)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava assistant)))) (when (task-closed? (game-task finalboss-movies) (task-status unknown)) - (add-to-music-log obj 'finalboss (flava-lookup 'finalboss (music-flava finalboss-middle))) - (add-to-music-log obj 'finalboss (flava-lookup 'finalboss (music-flava finalboss-end))) - ) + (add-to-music-log obj 'finalboss (flava-lookup 'finalboss (music-flava finalboss-middle))) + (add-to-music-log obj 'finalboss (flava-lookup 'finalboss (music-flava finalboss-end)))) (when (and *target* (>= (float->int (send-event *target* 'query 'pickup (pickup-type fuel-cell))) 100)) - (add-to-music-log obj 'credits 0) - (add-to-music-log obj 'credits 1) - (add-to-music-log obj 'credits 2) - ) - + (add-to-music-log obj 'credits 0) + (add-to-music-log obj 'credits 1) + (add-to-music-log obj 'credits 2)) 0) -(defmethod update-discord-rpc pc-settings-jak1 ((obj pc-settings-jak1)) +(defmethod update-discord-rpc ((obj pc-settings-jak1)) "update discord rpc module" (let ((info (new 'stack 'discord-info))) (set! (-> info fuel) (&-> *game-info* fuel)) @@ -255,65 +198,65 @@ (set! (-> info status) "Playing Jak and Daxter: The Precursor Legacy™") (set! (-> info level) (symbol->string (-> (level-get-target-inside *level*) name))) ;; grab the name of level we're in (set! (-> info cutscene?) (real-movie?)) - (set! (-> info ogreboss?) (aif (process-by-ename "ogreboss-1") (case (-> it next-state name) ( - ('ogreboss-die - 'ogreboss-idle - 'ogreboss-stage1 - 'ogreboss-stage2 - 'ogreboss-stage3-hit - 'ogreboss-stage3-shuffle - 'ogreboss-stage3-throw - 'ogreboss-wait-for-player) #t)))) - (set! (-> info plant-boss?) (aif (process-by-ename "plant-boss-3") (case (-> it next-state name) ( - ('plant-boss-idle - 'plant-boss-hit - 'plant-boss-vulnerable - 'plant-boss-spawn - 'plant-boss-reset - 'plant-boss-attack) #t)))) - (set! (-> info racer?) (aif *target* (case (-> it next-state name) ( - ('target-racing - 'target-racing-bounce - 'target-racing-death - 'target-racing-falling - 'target-racing-grab - 'target-racing-hit - 'target-racing-jump - 'target-racing-smack - 'target-racing-start) #t)))) - (set! (-> info flutflut?) (aif *target* (case (-> it next-state name) ( - ('target-flut-air-attack - 'target-flut-air-attack-hit-ground - 'target-flut-double-jump - 'target-flut-falling - 'target-flut-grab - 'target-flut-hit - 'target-flut-hit-ground - 'target-flut-jump - 'target-flut-running-attack - 'target-flut-stance - 'target-flut-start - 'target-flut-walk) #t)))) + (set! (-> info ogreboss?) + (aif (process-by-ename "ogreboss-1") + (case (-> it next-state name) + (('ogreboss-die 'ogreboss-idle + 'ogreboss-stage1 + 'ogreboss-stage2 + 'ogreboss-stage3-hit + 'ogreboss-stage3-shuffle + 'ogreboss-stage3-throw + 'ogreboss-wait-for-player) + #t)))) + (set! (-> info plant-boss?) + (aif (process-by-ename "plant-boss-3") + (case (-> it next-state name) + (('plant-boss-idle 'plant-boss-hit 'plant-boss-vulnerable 'plant-boss-spawn 'plant-boss-reset 'plant-boss-attack) #t)))) + (set! (-> info racer?) + (aif *target* + (case (-> it next-state name) + (('target-racing 'target-racing-bounce + 'target-racing-death + 'target-racing-falling + 'target-racing-grab + 'target-racing-hit + 'target-racing-jump + 'target-racing-smack + 'target-racing-start) + #t)))) + (set! (-> info flutflut?) + (aif *target* + (case (-> it next-state name) + (('target-flut-air-attack 'target-flut-air-attack-hit-ground + 'target-flut-double-jump + 'target-flut-falling + 'target-flut-grab + 'target-flut-hit + 'target-flut-hit-ground + 'target-flut-jump + 'target-flut-running-attack + 'target-flut-stance + 'target-flut-start + 'target-flut-walk) + #t)))) (set! (-> info time-of-day) (&-> *time-of-day-context* time)) - - (with-profiler "discord-update" (pc-discord-rpc-update info))) + (with-profiler "discord-update" + (pc-discord-rpc-update info))) (none)) -(defmethod update-speedrun pc-settings-jak1 ((obj pc-settings-jak1)) +(defmethod update-speedrun ((obj pc-settings-jak1)) "update speedrun module" (with-profiler "speedrun-update" (speedrun-mode-update)) (none)) -(defmethod update-video-hacks pc-settings-jak1 ((obj pc-settings-jak1)) +(defmethod update-video-hacks ((obj pc-settings-jak1)) "update the graphics hacks used for sprites and other things. ugh." - (set! (-> (get-video-params) relative-x-scale) (-> obj aspect-ratio-reciprocal)) (set! (-> (get-video-params) relative-x-scale-reciprical) (-> obj aspect-ratio-scale)) (set! (-> *font-default-matrix* vector 0 x) (-> (get-video-params) relative-x-scale)) - (set-hud-aspect-ratio 'aspect4x3 'ntsc) ;; set hud aspect ratios every frame because why not? - (when *progress-process* ;; adjust sizes for progress. ;; video.gc sets the sizes in the normal game. @@ -321,146 +264,119 @@ (let ((pr (-> *progress-process*)) ;(wide-adjust (* 4.0 (- (/ (-> obj aspect-ratio-scale) ASPECT_16X9_SCALE) (1/ ASPECT_16X9_SCALE)))) ) - (set! (-> pr sides-x-scale) 1.0) - (set! (-> pr sides-y-scale) 13.0) - ;(set! (-> pr left-x-offset) (+ 59 (the int (* (-> obj aspect-ratio-scale) -59)))) - ;(set! (-> pr right-x-offset) 26) - ;(set! (-> pr button-scale) (+ 1.0 (* wide-adjust 0.1))) - ) - ) - ) - -(defmethod led-enabled? pc-settings-jak1 ((obj pc-settings-jak1)) + (set! (-> pr sides-x-scale) 1.0) + (set! (-> pr sides-y-scale) 13.0) + ;(set! (-> pr left-x-offset) (+ 59 (the int (* (-> obj aspect-ratio-scale) -59)))) + ;(set! (-> pr right-x-offset) 26) + ;(set! (-> pr button-scale) (+ 1.0 (* wide-adjust 0.1))) + ))) + +(defmethod led-enabled? ((obj pc-settings-jak1)) "should the controller led be set?" - (or (-> obj controller-led-hp?) - (-> obj controller-led-eco?) - (-> obj controller-led-heat?))) + (or (-> obj controller-led-hp?) (-> obj controller-led-eco?) (-> obj controller-led-heat?))) -(defmethod update-led pc-settings-jak1 ((obj pc-settings-jak1)) +(defmethod update-led ((obj pc-settings-jak1)) "set the controller led color by modifying the controller-led-color vector" - ;; default color is just blue. (set! (-> obj controller-led-color r) 0.0) (set! (-> obj controller-led-color g) 0.0) (set! (-> obj controller-led-color b) 1.0) - (when *target* (let ((set-no-eco-color? #t)) - (when (-> obj controller-led-hp?) - ;; flicker led according to hp. lower hp = faster and more intense flicker - (cond - ((= (-> *target* fact health) 0.0) - ;; dead. just set to minimum brightness. - (set! (-> obj controller-led-color a) (-> obj controller-led-min-brightness)) - ) - (else - (let ((flicker-speed (lerp-scale 2.0 0.0 - (-> *target* fact health) - 1.0 (-> *FACT-bank* health-max-default))) - (flicker-amp (lerp-scale (- 1.0 (-> obj controller-led-min-brightness)) (- 1.0 (-> obj controller-led-max-brightness)) + (when (-> obj controller-led-hp?) + ;; flicker led according to hp. lower hp = faster and more intense flicker + (cond + ((= (-> *target* fact health) 0.0) + ;; dead. just set to minimum brightness. + (set! (-> obj controller-led-color a) (-> obj controller-led-min-brightness))) + (else + (let ((flicker-speed (lerp-scale 2.0 0.0 (-> *target* fact health) 1.0 (-> *FACT-bank* health-max-default))) + (flicker-amp (lerp-scale (- 1.0 (-> obj controller-led-min-brightness)) + (- 1.0 (-> obj controller-led-max-brightness)) (-> *target* fact health) - 1.0 (-> *FACT-bank* health-max-default))) - ) - (set! (-> obj controller-led-color a) (- 1.0 (* flicker-amp (/ (+ 1.0 (sin (* flicker-speed (degrees (-> *display* game-frame-counter))))) 2.0)))) - ) - ) - ) - ) - - (when (and (-> obj controller-led-heat?) - (nonzero? (-> *target* racer)) - (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)) - (or (= (-> *target* current-level name) 'lavatube) - (= (-> *target* current-level name) 'firecanyon) - (= (-> *target* current-level name) 'citadel))) - (defun-extern zoomer-heat-slice-color matrix float none) - (defun-extern zoomer-get-heat float) - (defun-extern zoomer-get-heat-max float) - (let ((temp-mtx (new-stack-matrix0)) - (heat (/ (zoomer-get-heat) (zoomer-get-heat-max)))) - (zoomer-heat-slice-color temp-mtx heat) - (when (< 0.0 heat) - (set! (-> obj controller-led-color r) (/ (-> temp-mtx vector 2 x) 128.0)) - (set! (-> obj controller-led-color g) (/ (-> temp-mtx vector 2 y) 128.0)) - (set! (-> obj controller-led-color b) (/ (-> temp-mtx vector 2 z) 128.0)) - (false! set-no-eco-color?)) - ) - ) - - (when (-> obj controller-led-eco?) - ;; get remaining eco as a number from 0.0 to 1.0 - (let ((eco-remain-fac (/ (the float (- (-> *target* fact eco-timeout) (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time)))) - (the float (-> *FACT-bank* eco-full-timeout))))) - (when set-no-eco-color? - (set! (-> obj controller-led-color r) 1.0) - (set! (-> obj controller-led-color g) 1.0) - (set! (-> obj controller-led-color b) 1.0)) - ;; dont set eco color if we don't have eco. - (when (< 0.0 eco-remain-fac) - ;; set color according to eco type. matches the color in the meter! - (case (-> *target* fact eco-type) - (((pickup-type eco-blue)) - (set! (-> obj controller-led-color r) 0.0) - (set! (-> obj controller-led-color g) 0.5) - (set! (-> obj controller-led-color b) 1.0) - ) - (((pickup-type eco-yellow)) - (set! (-> obj controller-led-color r) 1.0) - (set! (-> obj controller-led-color g) 0.75) - (set! (-> obj controller-led-color b) 0.0) - ) - (((pickup-type eco-red)) + 1.0 + (-> *FACT-bank* health-max-default)))) + (set! (-> obj controller-led-color a) + (- 1.0 (* flicker-amp (/ (+ 1.0 (sin (* flicker-speed (degrees (-> *display* game-frame-counter))))) 2.0)))))))) + (when (and (-> obj controller-led-heat?) + (nonzero? (-> *target* racer)) + (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)) + (or (= (-> *target* current-level name) 'lavatube) + (= (-> *target* current-level name) 'firecanyon) + (= (-> *target* current-level name) 'citadel))) + (defun-extern zoomer-heat-slice-color matrix float none) + (defun-extern zoomer-get-heat float) + (defun-extern zoomer-get-heat-max float) + (let ((temp-mtx (new-stack-matrix0)) + (heat (/ (zoomer-get-heat) (zoomer-get-heat-max)))) + (zoomer-heat-slice-color temp-mtx heat) + (when (< 0.0 heat) + (set! (-> obj controller-led-color r) (/ (-> temp-mtx vector 2 x) 128.0)) + (set! (-> obj controller-led-color g) (/ (-> temp-mtx vector 2 y) 128.0)) + (set! (-> obj controller-led-color b) (/ (-> temp-mtx vector 2 z) 128.0)) + (false! set-no-eco-color?)))) + (when (-> obj controller-led-eco?) + ;; get remaining eco as a number from 0.0 to 1.0 + (let ((eco-remain-fac (/ (the float (- (-> *target* fact eco-timeout) (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time)))) + (the float (-> *FACT-bank* eco-full-timeout))))) + (when set-no-eco-color? (set! (-> obj controller-led-color r) 1.0) - (set! (-> obj controller-led-color g) 0.25) - (set! (-> obj controller-led-color b) 0.0) - ) - (((pickup-type eco-green)) - (set! (-> obj controller-led-color r) 0.0) (set! (-> obj controller-led-color g) 1.0) - (set! (-> obj controller-led-color b) 0.25) - ) - ) - ;; less than 20% eco remaining, so we flash. same as eco meter. - (when (and (< eco-remain-fac 0.2) - (zero? (logand (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 4))) - (*! (-> obj controller-led-color g) 2.0) - ) - ) - )) - )) + (set! (-> obj controller-led-color b) 1.0)) + ;; dont set eco color if we don't have eco. + (when (< 0.0 eco-remain-fac) + ;; set color according to eco type. matches the color in the meter! + (case (-> *target* fact eco-type) + (((pickup-type eco-blue)) + (set! (-> obj controller-led-color r) 0.0) + (set! (-> obj controller-led-color g) 0.5) + (set! (-> obj controller-led-color b) 1.0)) + (((pickup-type eco-yellow)) + (set! (-> obj controller-led-color r) 1.0) + (set! (-> obj controller-led-color g) 0.75) + (set! (-> obj controller-led-color b) 0.0)) + (((pickup-type eco-red)) + (set! (-> obj controller-led-color r) 1.0) + (set! (-> obj controller-led-color g) 0.25) + (set! (-> obj controller-led-color b) 0.0)) + (((pickup-type eco-green)) + (set! (-> obj controller-led-color r) 0.0) + (set! (-> obj controller-led-color g) 1.0) + (set! (-> obj controller-led-color b) 0.25))) + ;; less than 20% eco remaining, so we flash. same as eco meter. + (when (and (< eco-remain-fac 0.2) (zero? (logand (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 4))) + (*! (-> obj controller-led-color g) 2.0))))))) #t) - (defun find-music-log ((music symbol)) "return #t if the given music is logged into the *pc-settings*, #f otherwise." (dotimes (i PC_MUSIC_LOG_LENGTH) - (if (= music (-> *pc-settings* secrets music i name)) - (return #t))) + (if (= music (-> *pc-settings* secrets music i name)) (return #t))) #f) (defun find-flava-log ((music symbol) (flava-idx int)) "return #t if the given music's flava is logged into the *pc-settings*, #f otherwise." (dotimes (i PC_MUSIC_LOG_LENGTH) (if (= music (-> *pc-settings* secrets music i name)) - (return (logtest? (-> *pc-settings* secrets music i flava-mask) (ash 1 flava-idx))))) + (return (logtest? (-> *pc-settings* secrets music i flava-mask) (ash 1 flava-idx))))) #f) (defun-debug print-music-log ((out object)) "prints the *pc-settings* music log." - (dotimes (i PC_MUSIC_LOG_LENGTH) (if (-> *pc-settings* secrets music i name) - (format out "music log ~D: ~A (f #x~x)~%" i (-> *pc-settings* secrets music i name) (-> *pc-settings* secrets music i flava-mask))) - ) + (format out + "music log ~D: ~A (f #x~x)~%" + i + (-> *pc-settings* secrets music i name) + (-> *pc-settings* secrets music i flava-mask)))) 0) (defun-debug unlock-music-log () "fills the music log with every track and flava" - (dotimes (i PC_MUSIC_LOG_LENGTH) (set! (-> *pc-settings* secrets music i name) #f) - (set! (-> *pc-settings* secrets music i flava-mask) 0) - ) + (set! (-> *pc-settings* secrets music i flava-mask) 0)) (set! (-> *pc-settings* secrets music 0 name) 'fishgame) (set! (-> *pc-settings* secrets music 1 name) 'danger) (set! (-> *pc-settings* secrets music 2 name) 'village1) @@ -483,14 +399,11 @@ (set! (-> *pc-settings* secrets music 19 name) 'finalboss) (set! (-> *pc-settings* secrets music 20 name) 'credits) (dotimes (i PC_MUSIC_LOG_LENGTH) - (set! (-> *pc-settings* secrets music i flava-mask) -1) - ) - ) + (set! (-> *pc-settings* secrets music i flava-mask) -1))) -(defmethod add-to-music-log pc-settings-jak1 ((obj pc-settings-jak1) (music symbol) (flava int)) +(defmethod add-to-music-log ((obj pc-settings-jak1) (music symbol) (flava int)) "add music and flava information to the music log. if music already exists, adds flava. if flava already exists, nothing happens." - ;; go through our music log (dotimes (i PC_MUSIC_LOG_LENGTH) (cond @@ -498,86 +411,61 @@ ((or (not (-> obj secrets music i name)) (zero? (not (-> obj secrets music i name)))) (set! (-> obj secrets music i name) music) (set! (-> obj secrets music i flava-mask) (ash 1 flava)) - (return 0) - ) + (return 0)) ;; an existing log entry for the current music. fill flava. - ((= music (-> obj secrets music i name)) - (logior! (-> obj secrets music i flava-mask) (ash 1 flava)) - (return 0) - ) + ((= music (-> obj secrets music i name)) (logior! (-> obj secrets music i flava-mask) (ash 1 flava)) (return 0)) ;; something else. maybe the wrong entry, in which case nothing to do. - ) - ) - + )) 0) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; file I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmethod handle-input-settings pc-settings-jak1 ((obj pc-settings-jak1) (file file-stream)) +(defmethod handle-input-settings ((obj pc-settings-jak1) (file file-stream)) "handle the text parsing input for the 'settings' group" - - ((method-of-type pc-settings handle-input-settings) obj file) + ((method-of-type pc-settings handle-input-settings) obj file) (case-str *pc-temp-string* - (("money-starburst?") (set! (-> obj money-starburst?) (file-stream-read-symbol file))) - (("extra-hud?") (set! (-> obj extra-hud?) (file-stream-read-symbol file))) - (("skip-movies?") (set! (-> obj skip-movies?) (file-stream-read-symbol file))) - (("subtitles?") (set! (-> obj subtitles?) (file-stream-read-symbol file))) - (("subtitle-language") (set! (-> obj subtitle-language) (the-as pc-language (file-stream-read-int file)))) - (("text-language") (set! (-> obj text-language) (the-as pc-language (file-stream-read-int file)))) - (("scenes-seen") - (dotimes (i PC_SPOOL_LOG_LENGTH) - (set! (-> obj scenes-seen i) (file-stream-read-int file)) - ) - ) - (("secrets") - (dosettings (file) - (case-str *pc-temp-string* - (("hard-rats?") (set! (-> obj secrets hard-rats?) (file-stream-read-symbol file))) - (("hero-mode?") (set! (-> obj secrets hero-mode?) (file-stream-read-symbol file))) - (("hud-map?") (set! (-> obj secrets hud-map?) (file-stream-read-symbol file))) - (("hud-counters?") (set! (-> obj secrets hud-counters?) (file-stream-read-symbol file))) - (("hud-watch?") (set! (-> obj secrets hud-watch?) (file-stream-read-symbol file))) - (("watch-12hr?") (set! (-> obj secrets watch-12hr?) (file-stream-read-symbol file))) - (("art") (set! (-> obj secrets art) (the-as pc-jak1-concept-art (file-stream-read-int file)))) - (("hard-fish-hiscore") (set! (-> obj secrets hard-fish-hiscore) (file-stream-read-int file))) - (("hard-rats-hiscore") (set! (-> obj secrets hard-rats-hiscore) (file-stream-read-int file))) - (("hard-rats-hiwave") (set! (-> obj secrets hard-rats-hiwave) (file-stream-read-int file))) - (("cheats") - (set! (-> obj cheats-known) (the pc-cheats (file-stream-read-int file))) - (set! (-> obj cheats) (logand (-> obj cheats-known) (file-stream-read-int file))) - ) - (("music") - (dotimes (i PC_MUSIC_LOG_LENGTH) - (when (!= #x29 (file-stream-get-next-char-ret file)) - (with-settings-scope (file) - (set! (-> obj secrets music i name) (file-stream-read-symbol file)) - (set! (-> obj secrets music i flava-mask) (file-stream-read-int file)) - ) - ) - ) - ) - ) - ) - ) - ) + (("money-starburst?") (set! (-> obj money-starburst?) (file-stream-read-symbol file))) + (("extra-hud?") (set! (-> obj extra-hud?) (file-stream-read-symbol file))) + (("skip-movies?") (set! (-> obj skip-movies?) (file-stream-read-symbol file))) + (("subtitles?") (set! (-> obj subtitles?) (file-stream-read-symbol file))) + (("subtitle-language") (set! (-> obj subtitle-language) (the-as pc-language (file-stream-read-int file)))) + (("text-language") (set! (-> obj text-language) (the-as pc-language (file-stream-read-int file)))) + (("scenes-seen") (dotimes (i PC_SPOOL_LOG_LENGTH) (set! (-> obj scenes-seen i) (file-stream-read-int file)))) + (("secrets") + (dosettings (file) + (case-str *pc-temp-string* + (("hard-rats?") (set! (-> obj secrets hard-rats?) (file-stream-read-symbol file))) + (("hero-mode?") (set! (-> obj secrets hero-mode?) (file-stream-read-symbol file))) + (("hud-map?") (set! (-> obj secrets hud-map?) (file-stream-read-symbol file))) + (("hud-counters?") (set! (-> obj secrets hud-counters?) (file-stream-read-symbol file))) + (("hud-watch?") (set! (-> obj secrets hud-watch?) (file-stream-read-symbol file))) + (("watch-12hr?") (set! (-> obj secrets watch-12hr?) (file-stream-read-symbol file))) + (("art") (set! (-> obj secrets art) (the-as pc-jak1-concept-art (file-stream-read-int file)))) + (("hard-fish-hiscore") (set! (-> obj secrets hard-fish-hiscore) (file-stream-read-int file))) + (("hard-rats-hiscore") (set! (-> obj secrets hard-rats-hiscore) (file-stream-read-int file))) + (("hard-rats-hiwave") (set! (-> obj secrets hard-rats-hiwave) (file-stream-read-int file))) + (("cheats") + (set! (-> obj cheats-known) (the pc-cheats (file-stream-read-int file))) + (set! (-> obj cheats) (logand (-> obj cheats-known) (file-stream-read-int file)))) + (("music") + (dotimes (i PC_MUSIC_LOG_LENGTH) + (when (!= #x29 (file-stream-get-next-char-ret file)) + (with-settings-scope (file) + (set! (-> obj secrets music i name) (file-stream-read-symbol file)) + (set! (-> obj secrets music i flava-mask) (file-stream-read-int file)))))))))) 0) -(defmethod handle-output-settings pc-settings-jak1 ((obj pc-settings-jak1) (file file-stream)) +(defmethod handle-output-settings ((obj pc-settings-jak1) (file file-stream)) "handle the text writing output for the 'settings' group" - - ((method-of-type pc-settings handle-output-settings) obj file) + ((method-of-type pc-settings handle-output-settings) obj file) (format file " (money-starburst? ~A)~%" (-> obj money-starburst?)) (format file " (extra-hud? ~A)~%" (-> obj extra-hud?)) (format file " (skip-movies? ~A)~%" (-> obj skip-movies?)) (format file " (subtitles? ~A)~%" (-> obj subtitles?)) (format file " (subtitle-language ~D)~%" (-> obj subtitle-language)) (format file " (text-language ~D)~%" (-> obj text-language)) - #| (format file " (scenes-seen") (dotimes (i PC_SPOOL_LOG_LENGTH) @@ -588,7 +476,6 @@ ) (format file "~% )~%") |# - (format file " (secrets~%") #| (format file " (art #x~X)~%" (-> obj secrets art)) @@ -601,14 +488,10 @@ (format file " (hard-rats-hiwave ~D)~%" (-> obj secrets hard-rats-hiwave)) |# (format file " (cheats #x~x #x~x)~%" (-> obj cheats-known) (-> obj cheats)) - (format file " (music~%") (dotimes (i PC_MUSIC_LOG_LENGTH) - (format file " (~A #x~X)~%" (-> obj secrets music i name) (-> obj secrets music i flava-mask)) - ) - + (format file " (~A #x~X)~%" (-> obj secrets music i name) (-> obj secrets music i flava-mask))) (format file " )~%") - (format file " )~%") 0) @@ -616,29 +499,24 @@ ;;;; PC settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (define-once *pc-settings* (new 'global 'pc-settings-jak1)) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; other ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun draw-build-revision () - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy *pc-settings-built-sha* - buf - 0 (* 10 (-> (get-video-params) relative-y-scale)) - (font-color flat-yellow) - (font-flags shadow kerning)))) - + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy *pc-settings-built-sha* + buf + 0 + (* 10 (-> (get-video-params) relative-y-scale)) + (font-color flat-yellow) + (font-flags shadow kerning)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; process pools ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; the actor pool for PC processes! it has space for 4 processes, with 16K of space. (define *pc-dead-pool* (new 'global 'dead-pool 4 (* 16 1024) '*pc-dead-pool*)) - diff --git a/goal_src/jak1/pc/progress-pc.gc b/goal_src/jak1/pc/progress-pc.gc index 96504e16fd..c39634babb 100644 --- a/goal_src/jak1/pc/progress-pc.gc +++ b/goal_src/jak1/pc/progress-pc.gc @@ -1,104 +1,106 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/ui/progress/progress.gc") - -#| - - Code for the progress menu in the PC port. The original code is still loaded, this just has some overriden functions. - - |# - +#| Code for the progress menu in the PC port. The original code is still loaded, this just has some overriden functions. |# ;;--------------------------- ;;--------------------------- ;; pc menu extra stuff (defconstant PROGRESS_PC_PAGE_HEIGHT 7) + (defconstant PROGRESS_SCROLL_DIR_UP -1) + (defconstant PROGRESS_SCROLL_DIR_DOWN 1) (defconstant GAME_MIN_RES_MULT 0.5) - (deftype progress-scroll (structure) - ((transition float) + ((transition float) (start-index int16) - (real-index int16) - (direction int8) - (last-screen progress-screen) - ) - ) + (real-index int16) + (direction int8) + (last-screen progress-screen))) + (define *progress-scroll* (new 'static 'progress-scroll)) -(defmacro progress-scrolling? () `(< (-> *progress-scroll* transition) 1.0)) -(defmacro progress-scrolling-up? () `(and (progress-scrolling?) (= (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_UP))) -(defmacro progress-scrolling-down? () `(and (progress-scrolling?) (= (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_DOWN))) +(defmacro progress-scrolling? () + `(< (-> *progress-scroll* transition) 1.0)) + +(defmacro progress-scrolling-up? () + `(and (progress-scrolling?) (= (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_UP))) + +(defmacro progress-scrolling-down? () + `(and (progress-scrolling?) (= (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_DOWN))) + (defconstant *progress-scroll-start* (-> *progress-scroll* start-index)) + (defconstant *progress-scroll-end* (+ -1 PROGRESS_PC_PAGE_HEIGHT (-> *progress-scroll* start-index))) + (defmacro progress-scroll-reset () "resets scroll. nothing will be scrolling, as if it had finished." `(begin (set! (-> *progress-scroll* transition) 1.0) (set! (-> *progress-scroll* direction) 0) (set! (-> *progress-scroll* start-index) 0))) + (defmacro progress-scroll-up! () `(begin (set! (-> *progress-scroll* transition) 0.0) (set! (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_UP) (1-! (-> *progress-scroll* start-index)))) + (defmacro progress-scroll-down! () `(begin (set! (-> *progress-scroll* transition) 0.0) (set! (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_DOWN) (1+! (-> *progress-scroll* start-index)))) + (defun progress-fast-save-and-start-speedrun ((category speedrun-category)) "saves to first slot, updates last-slot-saved for cursor, then starts speedrun" (set! (-> *progress-state* last-slot-saved) 0) (auto-save-command 'save 0 0 *default-pool*) - (start-speedrun category) - ) - + (start-speedrun category)) ;; used in title logo (define *quit-to-title* #f) - ;; ############################ ;; CAROUSELL STUFF ;; ############################ (deftype progress-carousell-state (structure) - ((int-backup int) - (symbol-backup symbol) - (subtitle-backup pc-language) + ((int-backup int) + (symbol-backup symbol) + (subtitle-backup pc-language) (aspect-native-choice symbol) - (current-carousell (array text-id)) - - (selection int) - (direction symbol) - (transition symbol) - (x-offset int32) - ) - ) -(define *progress-carousell* (new 'static 'progress-carousell-state)) + (current-carousell (array text-id)) + (selection int) + (direction symbol) + (transition symbol) + (x-offset int32))) +(define *progress-carousell* (new 'static 'progress-carousell-state)) (defmacro def-progress-carousell (name texts) - `(define ,name (new 'static 'boxed-array :type text-id - ,@(apply (lambda (x) `(text-id ,x)) texts) - )) - ) + `(define ,name (new 'static 'boxed-array :type text-id ,@(apply (lambda (x) `(text-id ,x)) texts)))) ;; all carousells (def-progress-carousell *carousell-display-mode* (windowed fullscreen borderless)) + (def-progress-carousell *carousell-msaa* (off 2-times 4-times 8-times 16-times)) + (def-progress-carousell *carousell-lod-bg* (lod-high lod-low)) + (def-progress-carousell *carousell-lod-fg* (lod-high lod-low lod-ps2)) + (def-progress-carousell *carousell-speaker* (speaker-always speaker-never speaker-auto)) + (def-progress-carousell *carousell-frame-rate-150fps* (60fps 100fps 150fps)) + (def-progress-carousell *carousell-frame-rate-100fps* (60fps 100fps)) + (define *carousell-frame-rate* *carousell-frame-rate-150fps*) ;; pad remap stuff @@ -108,406 +110,991 @@ ;; MENU OPTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(define *main-options-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id save-game) :scale #t :param3 (game-option-menu save-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id disable-auto-save) :scale #t :param3 (game-option-menu memcard-disable-auto-save)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id quit-game) :scale #t :param3 (game-option-menu quit)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *main-options-secrets* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id save-game) :scale #t :param3 (game-option-menu save-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id disable-auto-save) :scale #t :param3 (game-option-menu memcard-disable-auto-save)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id secrets) :scale #t :param3 (game-option-menu secrets)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id quit-game) :scale #t :param3 (game-option-menu quit)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *game-options-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-options) :scale #t :param3 (game-option-menu input-options)) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id subtitles) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id hinttitles) :scale #t) - (new 'static 'game-option :option-type (game-option-type language) :name (text-id language) :scale #t) - (new 'static 'game-option :option-type (game-option-type language-subtitles) :name (text-id subtitles-language) :scale #t) - (new 'static 'game-option :option-type (game-option-type language-text) :name (text-id text-language) :scale #t) - (new 'static 'game-option :option-type (game-option-type speaker) :name (text-id subtitles-speaker) :scale #t) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id misc-options) :scale #t :param3 (game-option-menu misc-options)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *graphic-options-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-resolution) :scale #t :param3 (game-option-menu resolution)) - (new 'static 'game-option :option-type (game-option-type display-mode) :name (text-id display-mode) :scale #t) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id display) :scale #t :param3 (game-option-menu monitor) - :option-disabled-func (lambda () (= (-> *pc-settings* display-mode) 'windowed))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vsync) :scale #t) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id aspect-ratio) :scale #t :param3 (game-option-menu aspect-ratio)) - (new 'static 'game-option :option-type (game-option-type msaa) :name (text-id msaa) :scale #t) - (new 'static 'game-option :option-type (game-option-type frame-rate) :name (text-id frame-rate) :scale #t - :option-disabled-func (lambda () (or (-> *pc-settings* speedrunner-mode?) (<= (pc-get-active-display-refresh-rate) 60)))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id ps2-options) :scale #t :param3 (game-option-menu gfx-ps2-options)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *sound-options-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id sfx-volume) :scale #t :param1 0.0 :param2 100.0 :slider-step-size 1.0) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id music-volume) :scale #t :param1 0.0 :param2 100.0 :slider-step-size 1.0) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id speech-volume) :scale #t :param1 0.0 :param2 100.0 :slider-step-size 1.0) - ;(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id music-fadein) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) - -(define *camera-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (text-id camera-controls-first-horz) :scale #t) - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (text-id camera-controls-first-vert) :scale #t) - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (text-id camera-controls-third-horz) :scale #t) - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (text-id camera-controls-third-vert) :scale #t) - (new 'static 'game-option :option-type (game-option-type confirmation) :name (text-id restore-defaults) :scale #t - :on-confirm (lambda () (reset-camera *pc-settings* #t) (none))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) - -(define *controller-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-select-controller) :scale #t :param3 (game-option-menu select-controller)) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t :option-disabled-func (lambda () (not (pc-current-controller-has-rumble?)))) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id input-opts-analog-deadzone) :scale #t :param1 0.0 :param2 1.0 - :slider-step-size 0.01 :slider-show-decimal? #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-ignore-controller-win-focus) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set-ignore-controller-in-bg! *pc-settings* val-sym) - (none)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-controller-led-reflect-hp) :scale #t - :option-disabled-func (lambda () (not (pc-current-controller-has-led?)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-controller-led-reflect-eco) :scale #t - :option-disabled-func (lambda () (not (pc-current-controller-has-led?)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-controller-led-reflect-heat) :scale #t - :option-disabled-func (lambda () (not (pc-current-controller-has-led?)))) - (new 'static 'game-option :option-type (game-option-type confirmation) :name (text-id restore-defaults) :scale #t - :on-confirm (lambda () - (reset-input *pc-settings* 'controller #t) - (set-ignore-controller-in-bg! *pc-settings* (-> *pc-settings* ignore-controller-win-unfocused?)) - (none))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) - -(define *mouse-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-mouse-enable-camera) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set! (-> *pc-settings* mouse-camera?) val-sym) - (update-mouse-controls! *pc-settings*) - (none)))) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id input-opts-mouse-horizontal-sens) :scale #t - :param1 -30.0 :param2 30.0 :slider-step-size 0.25 :slider-show-decimal? #t - :on-confirm (lambda () - (update-mouse-controls! *pc-settings*) - (none)) - :option-disabled-func (lambda () (not (-> *pc-settings* mouse-camera?)))) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id input-opts-mouse-vertical-sens) :scale #t - :param1 -30.0 :param2 30.0 :slider-step-size 0.25 :slider-show-decimal? #t - :on-confirm (lambda () - (update-mouse-controls! *pc-settings*) - (none)) - :option-disabled-func (lambda () (not (-> *pc-settings* mouse-camera?)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-mouse-enable-movement) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set! (-> *pc-settings* mouse-movement?) val-sym) - (update-mouse-controls! *pc-settings*) - (none)))) - (new 'static 'game-option :option-type (game-option-type confirmation) :name (text-id restore-defaults) :scale #t - :on-confirm (lambda () - (reset-input *pc-settings* 'mouse #t) - (update-mouse-controls! *pc-settings*) - (none))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) - -(define *reassign-binds-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-binds-controller) :scale #t :param3 (game-option-menu controller-binds) - :option-disabled-func (lambda () (<= (pc-get-controller-count) 0))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-binds-keyboard) :scale #t :param3 (game-option-menu keyboard-binds) - :option-disabled-func (lambda () (not (pc-get-keyboard-enabled?)))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-binds-mouse) :scale #t :param3 (game-option-menu mouse-binds) - :option-disabled-func (lambda () (not (-> *pc-settings* mouse-enabled?)))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) - -(define *input-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id camera-options) :scale #t :param3 (game-option-menu camera-options)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-controller-opts) :scale #t :param3 (game-option-menu controller-options) - :option-disabled-func (lambda () (<= (pc-get-controller-count) 0))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-enable-kb) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (pc-set-keyboard-enabled! val-sym) - (set! (-> *pc-settings* keyboard-enabled?) val-sym) - (none)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-enable-mouse) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set! (-> *pc-settings* mouse-enabled?) val-sym) - (update-mouse-controls! *pc-settings*) - (none)))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-mouse-opts) :scale #t :param3 (game-option-menu mouse-options) - :option-disabled-func (lambda () (not (-> *pc-settings* mouse-enabled?)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-auto-hide-cursor) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set! (-> *pc-settings* auto-hide-cursor?) val-sym) - (update-mouse-controls! *pc-settings*) - (none)))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-reassign-binds) :scale #t :param3 (game-option-menu reassign-binds-options)) - (new 'static 'game-option :option-type (game-option-type confirmation) :name (text-id restore-defaults) :scale #t - :on-confirm (lambda () - (reset-input *pc-settings* 'input #t) - (pc-set-keyboard-enabled! (-> *pc-settings* keyboard-enabled?)) - (update-mouse-controls! *pc-settings*) - (none))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) - -(define *misc-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id money-starburst) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id discord-rpc) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id cutscene-skips) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id speedrunner-mode) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *gfx-ps2-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type lod-bg) :name (text-id lod-bg) :scale #t) - (new 'static 'game-option :option-type (game-option-type lod-fg) :name (text-id lod-fg) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id ps2-parts) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id force-envmap) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id force-actors) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *main-options-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-options) + :scale #t + :param3 (game-option-menu game-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id graphic-options) + :scale #t + :param3 (game-option-menu graphic-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id sound-options) + :scale #t + :param3 (game-option-menu sound-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id load-game) + :scale #t + :param3 (game-option-menu load-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id save-game) + :scale #t + :param3 (game-option-menu save-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id disable-auto-save) + :scale #t + :param3 (game-option-menu memcard-disable-auto-save)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id quit-game) + :scale #t + :param3 (game-option-menu quit)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *main-options-secrets* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-options) + :scale #t + :param3 (game-option-menu game-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id graphic-options) + :scale #t + :param3 (game-option-menu graphic-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id sound-options) + :scale #t + :param3 (game-option-menu sound-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id load-game) + :scale #t + :param3 (game-option-menu load-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id save-game) + :scale #t + :param3 (game-option-menu save-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id disable-auto-save) + :scale #t + :param3 (game-option-menu memcard-disable-auto-save)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id secrets) + :scale #t + :param3 (game-option-menu secrets)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id quit-game) + :scale #t + :param3 (game-option-menu quit)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *game-options-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-options) + :scale #t + :param3 (game-option-menu input-options)) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id subtitles) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id hinttitles) :scale #t) + (new 'static 'game-option :option-type (game-option-type language) :name (text-id language) :scale #t) + (new 'static 'game-option :option-type (game-option-type language-subtitles) :name (text-id subtitles-language) :scale #t) + (new 'static 'game-option :option-type (game-option-type language-text) :name (text-id text-language) :scale #t) + (new 'static 'game-option :option-type (game-option-type speaker) :name (text-id subtitles-speaker) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id misc-options) + :scale #t + :param3 (game-option-menu misc-options)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *graphic-options-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-resolution) + :scale #t + :param3 (game-option-menu resolution)) + (new 'static 'game-option :option-type (game-option-type display-mode) :name (text-id display-mode) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id display) + :scale #t + :param3 (game-option-menu monitor) + :option-disabled-func + (lambda () + (= (-> *pc-settings* display-mode) 'windowed))) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vsync) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id aspect-ratio) + :scale #t + :param3 (game-option-menu aspect-ratio)) + (new 'static 'game-option :option-type (game-option-type msaa) :name (text-id msaa) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type frame-rate) + :name (text-id frame-rate) + :scale #t + :option-disabled-func + (lambda () + (or (-> *pc-settings* speedrunner-mode?) (<= (pc-get-active-display-refresh-rate) 60)))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id ps2-options) + :scale #t + :param3 (game-option-menu gfx-ps2-options)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *sound-options-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id sfx-volume) + :scale #t + :param1 0.0 + :param2 100.0 + :slider-step-size 1.0) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id music-volume) + :scale #t + :param1 0.0 + :param2 100.0 + :slider-step-size 1.0) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id speech-volume) + :scale #t + :param1 0.0 + :param2 100.0 + :slider-step-size 1.0) + ;(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id music-fadein) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *camera-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type normal-inverted) + :name (text-id camera-controls-first-horz) + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type normal-inverted) + :name (text-id camera-controls-first-vert) + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type normal-inverted) + :name (text-id camera-controls-third-horz) + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type normal-inverted) + :name (text-id camera-controls-third-vert) + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type confirmation) + :name (text-id restore-defaults) + :scale #t + :on-confirm + (lambda () + (reset-camera *pc-settings* #t) + (none))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *controller-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-select-controller) + :scale #t + :param3 (game-option-menu select-controller)) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id vibrations) + :scale #t + :option-disabled-func + (lambda () + (not (pc-current-controller-has-rumble?)))) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id input-opts-analog-deadzone) + :scale #t + :param1 0.0 + :param2 1.0 + :slider-step-size 0.01 + :slider-show-decimal? #t) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-ignore-controller-win-focus) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) (set-ignore-controller-in-bg! *pc-settings* val-sym) (none)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-controller-led-reflect-hp) + :scale #t + :option-disabled-func + (lambda () + (not (pc-current-controller-has-led?)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-controller-led-reflect-eco) + :scale #t + :option-disabled-func + (lambda () + (not (pc-current-controller-has-led?)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-controller-led-reflect-heat) + :scale #t + :option-disabled-func + (lambda () + (not (pc-current-controller-has-led?)))) + (new 'static + 'game-option + :option-type (game-option-type confirmation) + :name (text-id restore-defaults) + :scale #t + :on-confirm + (lambda () + (reset-input *pc-settings* 'controller #t) + (set-ignore-controller-in-bg! *pc-settings* (-> *pc-settings* ignore-controller-win-unfocused?)) + (none))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *mouse-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-mouse-enable-camera) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (set! (-> *pc-settings* mouse-camera?) val-sym) + (update-mouse-controls! *pc-settings*) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id input-opts-mouse-horizontal-sens) + :scale #t + :param1 -30.0 + :param2 30.0 + :slider-step-size 0.25 + :slider-show-decimal? #t + :on-confirm + (lambda () + (update-mouse-controls! *pc-settings*) + (none)) + :option-disabled-func + (lambda () + (not (-> *pc-settings* mouse-camera?)))) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id input-opts-mouse-vertical-sens) + :scale #t + :param1 -30.0 + :param2 30.0 + :slider-step-size 0.25 + :slider-show-decimal? #t + :on-confirm + (lambda () + (update-mouse-controls! *pc-settings*) + (none)) + :option-disabled-func + (lambda () + (not (-> *pc-settings* mouse-camera?)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-mouse-enable-movement) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (set! (-> *pc-settings* mouse-movement?) val-sym) + (update-mouse-controls! *pc-settings*) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type confirmation) + :name (text-id restore-defaults) + :scale #t + :on-confirm + (lambda () + (reset-input *pc-settings* 'mouse #t) + (update-mouse-controls! *pc-settings*) + (none))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *reassign-binds-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-binds-controller) + :scale #t + :param3 (game-option-menu controller-binds) + :option-disabled-func + (lambda () + (<= (pc-get-controller-count) 0))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-binds-keyboard) + :scale #t + :param3 (game-option-menu keyboard-binds) + :option-disabled-func + (lambda () + (not (pc-get-keyboard-enabled?)))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-binds-mouse) + :scale #t + :param3 (game-option-menu mouse-binds) + :option-disabled-func + (lambda () + (not (-> *pc-settings* mouse-enabled?)))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *input-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id camera-options) + :scale #t + :param3 (game-option-menu camera-options)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-controller-opts) + :scale #t + :param3 (game-option-menu controller-options) + :option-disabled-func + (lambda () + (<= (pc-get-controller-count) 0))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-enable-kb) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (pc-set-keyboard-enabled! val-sym) + (set! (-> *pc-settings* keyboard-enabled?) val-sym) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-enable-mouse) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (set! (-> *pc-settings* mouse-enabled?) val-sym) + (update-mouse-controls! *pc-settings*) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-mouse-opts) + :scale #t + :param3 (game-option-menu mouse-options) + :option-disabled-func + (lambda () + (not (-> *pc-settings* mouse-enabled?)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-auto-hide-cursor) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (set! (-> *pc-settings* auto-hide-cursor?) val-sym) + (update-mouse-controls! *pc-settings*) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-reassign-binds) + :scale #t + :param3 (game-option-menu reassign-binds-options)) + (new 'static + 'game-option + :option-type (game-option-type confirmation) + :name (text-id restore-defaults) + :scale #t + :on-confirm + (lambda () + (reset-input *pc-settings* 'input #t) + (pc-set-keyboard-enabled! (-> *pc-settings* keyboard-enabled?)) + (update-mouse-controls! *pc-settings*) + (none))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *misc-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id money-starburst) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id discord-rpc) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id cutscene-skips) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id speedrunner-mode) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *gfx-ps2-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type lod-bg) :name (text-id lod-bg) :scale #t) + (new 'static 'game-option :option-type (game-option-type lod-fg) :name (text-id lod-fg) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id ps2-parts) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id force-envmap) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id force-actors) :scale #t + :option-disabled-func + (lambda () + (-> *pc-settings* speedrunner-mode?))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) ;; TODO - aspect ratios are hard-coded -(define *aspect-ratio-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id fit-to-screen) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 4.0 :param2 3.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 16.0 :param2 9.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect4x3-ps2) :param1 -1.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect16x9-ps2) :param1 -2.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 16.0 :param2 10.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 21.0 :param2 9.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 64.0 :param2 27.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *title-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id new-game) :scale #t :param3 (game-option-menu save-game-title)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id options) :scale #t :param3 (game-option-menu settings-title)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id secrets) :scale #t :param3 (game-option-menu secrets)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id quit-game) :scale #t :param3 (game-option-menu quit-title)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *aspect-ratio-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id fit-to-screen) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 4.0 + :param2 3.0 + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 16.0 + :param2 9.0 + :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect4x3-ps2) :param1 -1.0 :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect16x9-ps2) + :param1 -2.0 + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 16.0 + :param2 10.0 + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 21.0 + :param2 9.0 + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 64.0 + :param2 27.0 + :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *title-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id new-game) + :scale #t + :param3 (game-option-menu save-game-title)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id load-game) + :scale #t + :param3 (game-option-menu load-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id options) + :scale #t + :param3 (game-option-menu settings-title)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id secrets) + :scale #t + :param3 (game-option-menu secrets)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id quit-game) + :scale #t + :param3 (game-option-menu quit-title)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *speedrun-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-reset-current-run) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-full-game) :scale #t) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id speedrun-new-individual-level) :scale #t :param3 (game-option-menu speedrun-il-options)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id speedrun-new-cat-ext) :scale #t :param3 (game-option-menu speedrun-cat-ext-options)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-reset-current-run) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-full-game) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id speedrun-new-individual-level) + :scale #t + :param3 (game-option-menu speedrun-il-options)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id speedrun-new-cat-ext) + :scale #t + :param3 (game-option-menu speedrun-cat-ext-options)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *speedrun-il-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-training) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village1) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-beach) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-jungle) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-misty) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-firecanyon) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village2) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-sunken) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-swamp) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-rolling) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-ogre) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village3) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-snow) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-cave) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-lavatube) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-citadel) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-training) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village1) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-beach) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-jungle) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-misty) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-firecanyon) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village2) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-sunken) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-swamp) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-rolling) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-ogre) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village3) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-snow) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-cave) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-lavatube) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-citadel) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *speedrun-cat-ext-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-full-game) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-game-plus) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub1-100) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub2-100) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub3-100) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-all-cutscenes) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *secrets-title* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id music-player) :scale #t :param3 (game-option-menu music-player)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id cheats) :scale #t :param3 (game-option-menu cheats)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *secrets* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id cheats) :scale #t :param3 (game-option-menu cheats)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id checkpoint-select) :scale #t :param3 (game-option-menu checkpoint-select) - :option-disabled-func (lambda () (not (>= (calculate-completion (the progress #f)) 100.0)))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-full-game) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-game-plus) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub1-100) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub2-100) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub3-100) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-all-cutscenes) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *secrets-title* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id music-player) + :scale #t + :param3 (game-option-menu music-player)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id cheats) + :scale #t + :param3 (game-option-menu cheats)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *secrets* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id cheats) + :scale #t + :param3 (game-option-menu cheats)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id checkpoint-select) + :scale #t + :param3 (game-option-menu checkpoint-select) + :option-disabled-func + (lambda () + (not (>= (calculate-completion (the progress #f)) 100.0)))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *checkpoint-select-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id training-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id village1-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id beach-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id jungle-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id misty-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id firecanyon-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id village2-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id sunken-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id swamp-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id rolling-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id ogre-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id village3-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id snow-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id cave-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id lavatube-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id citadel-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id finalboss-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *cheats* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-sidekick-alt) :scale #t :param1 5.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-big-head) :scale #t :param1 9.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-small-head) :scale #t :param1 10.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-big-fist) :scale #t :param1 11.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-big-head-npc) :scale #t :param1 16.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-tunes) :scale #t :param1 6.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-sky) :scale #t :param1 7.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-huge-head) :scale #t :param1 15.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-mirror) :scale #t :param1 8.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-eco-yellow) :scale #t :param1 3.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-eco-blue) :scale #t :param1 2.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-eco-red) :scale #t :param1 1.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-eco-green) :scale #t :param1 0.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-invinc) :scale #t :param1 4.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-no-tex) :scale #t :param1 12.0) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *music-player-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village1-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id beach-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id jungle-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id fishgame) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id jungleb-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id misty-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id firecanyon-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village2-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id rolling-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id swamp-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id sunken-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id ogre-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id ogreboss) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village3-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id snow-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id cave-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id lavatube-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id citadel-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id finalboss-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id credits) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id danger-mus) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id training-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id village1-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id beach-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id jungle-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id misty-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id firecanyon-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id village2-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id sunken-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id swamp-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id rolling-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id ogre-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id village3-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id snow-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id cave-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id lavatube-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id citadel-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id finalboss-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *cheats* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-sidekick-alt) + :scale #t + :param1 5.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-big-head) + :scale #t + :param1 9.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-small-head) + :scale #t + :param1 10.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-big-fist) + :scale #t + :param1 11.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-big-head-npc) + :scale #t + :param1 16.0) + (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-tunes) :scale #t :param1 6.0) + (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-sky) :scale #t :param1 7.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-huge-head) + :scale #t + :param1 15.0) + (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-mirror) :scale #t :param1 8.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-eco-yellow) + :scale #t + :param1 3.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-eco-blue) + :scale #t + :param1 2.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-eco-red) + :scale #t + :param1 1.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-eco-green) + :scale #t + :param1 0.0) + (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-invinc) :scale #t :param1 4.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-no-tex) + :scale #t + :param1 12.0) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) + +(define *music-player-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village1-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id beach-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id jungle-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id fishgame) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id jungleb-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id misty-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id firecanyon-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village2-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id rolling-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id swamp-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id sunken-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id ogre-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id ogreboss) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village3-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id snow-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id cave-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id lavatube-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id citadel-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id finalboss-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id credits) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id danger-mus) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; DATA LISTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define *music-list* + '(village1 beach + jungle + fishgame + jungleb + misty + firecanyon + village2 + rolling + swamp + sunken + ogre + ogreboss + village3 + snow + maincave + lavatube + citadel + finalboss + credits + danger)) -(define *music-list* '(village1 beach jungle fishgame jungleb misty firecanyon - village2 rolling swamp sunken ogre ogreboss - village3 snow maincave lavatube - citadel finalboss credits danger)) (define *progress-music* -1) + (defmacro progress-get-music-by-index (idx) `(the symbol (ref *music-list* ,idx))) + (defmacro progress-reset-music-parms () `(begin (set! *progress-music* -1) (set! *progress-flava* -1))) (defmacro static-text-list-array (&rest texts) - `(new 'static 'boxed-array :type text-id - ,@(apply (lambda (x) `(text-id ,x)) texts) - ) - ) -(define *music-flava-name-list* (new 'static 'boxed-array :type (array text-id) - (static-text-list-array village1-level-name flava-vi1-unused0 flava-sage flava-sage-hut flava-birdlady flava-farmer flava-assistant flava-mayor flava-sculptor flava-explorer flava-dock) - (static-text-list-array beach-level-name flava-bea-sentinel flava-bea-cannon flava-bea-grotto flava-birdlady) - (static-text-list-array jungle-level-name flava-jun-temple-exit flava-jun-lurkerm flava-jun-temple-top) - (static-text-list-array fishgame) - (static-text-list-array jungleb-level-name flava-jub-eggtop flava-jub-plant-boss) - (static-text-list-array misty-level-name flava-mis-battle flava-mis-boat flava-racer flava-mis-unused0) - (static-text-list-array firecanyon-level-name flava-racer flava-fic-unused0) - (static-text-list-array village2-level-name flava-sage flava-assistant flava-warrior flava-geologist flava-gambler flava-levitator) - (static-text-list-array rolling-level-name flava-rol-gorge) - (static-text-list-array swamp-level-name flava-swa-game flava-swa-launcher flava-swa-battle flava-flutflut) - (static-text-list-array sunken-level-name) - (static-text-list-array ogre-level-name flava-ogr-middle flava-ogr-end) - (static-text-list-array ogreboss) - (static-text-list-array village3-level-name flava-vi3-miners flava-sage flava-assistant flava-vi3-mai flava-vi3-sno) - (static-text-list-array snow-level-name flava-sno-battle flava-flutflut flava-sno-cave flava-sno-fort flava-sno-balls) - (static-text-list-array cave-level-name flava-mai-rob flava-mai-rob-top flava-mai-mai flava-mai-dar) - (static-text-list-array zero lavatube-level-name flava-lav-middle flava-lav-end) - (static-text-list-array citadel-level-name flava-sage flava-assistant flava-cit-yellowsage flava-cit-redsage flava-cit-bluesage flava-cit-hub) - (static-text-list-array finalboss-level-name flava-fin-middle flava-fin-end) - (static-text-list-array credits flava-credits-middle flava-credits-end) - (static-text-list-array danger-mus) - )) - - + `(new 'static 'boxed-array :type text-id ,@(apply (lambda (x) `(text-id ,x)) texts))) + +(define *music-flava-name-list* + (new 'static + 'boxed-array + :type (array text-id) + (static-text-list-array village1-level-name + flava-vi1-unused0 + flava-sage + flava-sage-hut + flava-birdlady + flava-farmer + flava-assistant + flava-mayor + flava-sculptor + flava-explorer + flava-dock) + (static-text-list-array beach-level-name flava-bea-sentinel flava-bea-cannon flava-bea-grotto flava-birdlady) + (static-text-list-array jungle-level-name flava-jun-temple-exit flava-jun-lurkerm flava-jun-temple-top) + (static-text-list-array fishgame) + (static-text-list-array jungleb-level-name flava-jub-eggtop flava-jub-plant-boss) + (static-text-list-array misty-level-name flava-mis-battle flava-mis-boat flava-racer flava-mis-unused0) + (static-text-list-array firecanyon-level-name flava-racer flava-fic-unused0) + (static-text-list-array village2-level-name + flava-sage + flava-assistant + flava-warrior + flava-geologist + flava-gambler + flava-levitator) + (static-text-list-array rolling-level-name flava-rol-gorge) + (static-text-list-array swamp-level-name flava-swa-game flava-swa-launcher flava-swa-battle flava-flutflut) + (static-text-list-array sunken-level-name) + (static-text-list-array ogre-level-name flava-ogr-middle flava-ogr-end) + (static-text-list-array ogreboss) + (static-text-list-array village3-level-name flava-vi3-miners flava-sage flava-assistant flava-vi3-mai flava-vi3-sno) + (static-text-list-array snow-level-name flava-sno-battle flava-flutflut flava-sno-cave flava-sno-fort flava-sno-balls) + (static-text-list-array cave-level-name flava-mai-rob flava-mai-rob-top flava-mai-mai flava-mai-dar) + (static-text-list-array zero lavatube-level-name flava-lav-middle flava-lav-end) + (static-text-list-array citadel-level-name + flava-sage + flava-assistant + flava-cit-yellowsage + flava-cit-redsage + flava-cit-bluesage + flava-cit-hub) + (static-text-list-array finalboss-level-name flava-fin-middle flava-fin-end) + (static-text-list-array credits flava-credits-middle flava-credits-end) + (static-text-list-array danger-mus))) (defmacro def-language-remap-info (name langs) - `(define ,name (quote ,(apply (lambda (x) `((the binteger (text-id ,x)) (the binteger (pc-language ,x)))) langs))) - ) + `(define ,name (quote ,(apply (lambda (x) `((the binteger (text-id ,x)) (the binteger (pc-language ,x)))) langs)))) (def-language-remap-info *language-remap-info-pc* - (english uk-english french german spanish italian japanese portuguese br-portuguese swedish finnish danish norwegian dutch hungarian catalan icelandic polish lithuanian)) -(define *text-languages* (static-text-list-array - english uk-english french german spanish italian japanese portuguese br-portuguese swedish finnish danish norwegian dutch hungarian polish lithuanian)) -(define *subtitle-languages* (static-text-list-array - english uk-english french german spanish italian br-portuguese swedish finnish danish dutch polish lithuanian)) - - + (english uk-english + french + german + spanish + italian + japanese + portuguese + br-portuguese + swedish + finnish + danish + norwegian + dutch + hungarian + catalan + icelandic + polish + lithuanian)) + +(define *text-languages* + (static-text-list-array english + uk-english + french + german + spanish + italian + japanese + portuguese + br-portuguese + swedish + finnish + danish + norwegian + dutch + hungarian + polish + lithuanian)) + +(define *subtitle-languages* + (static-text-list-array english + uk-english + french + german + spanish + italian + br-portuguese + swedish + finnish + danish + dutch + polish + lithuanian)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; DYNAMIC MENU THINGS @@ -526,22 +1113,19 @@ (defmacro add-flava-player-option (text-id flava) "add a music player w/ flava button to *temp-options* with specified size" `(let ((option (-> *temp-options* (length *temp-options*)))) - (set! (-> option option-type) (game-option-type button-flava)) - (set! (-> option name) ,text-id) - (set! (-> option param1) (the float ,flava)) - (set! (-> option scale) #t) - - (1+! (-> *temp-options* length)) - ) - ) + (set! (-> option option-type) (game-option-type button-flava)) + (set! (-> option name) ,text-id) + (set! (-> option param1) (the float ,flava)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defmacro add-back-option () "add *back-button* to *temp-options*" `(let ((option (-> *temp-options* (length *temp-options*)))) - (set! (-> option option-type) (game-option-type button)) - (set! (-> option name) (text-id back)) - (set! (-> option scale) #t) - (1+! (-> *temp-options* length)))) + (set! (-> option option-type) (game-option-type button)) + (set! (-> option name) (text-id back)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defmacro add-message-option (text) "adds an option that isn't selectable but displays some text" @@ -555,13 +1139,13 @@ (defmacro add-resolution-option (x y) "add a resolution button to *temp-options* with specified size" `(let ((option (-> *temp-options* (length *temp-options*)))) - (set! (-> option option-type) (game-option-type resolution)) - (set! (-> option option-disabled-func) #f) - (set! (-> option name) (text-id resolution-fmt)) - (set! (-> option param1) (the float ,x)) - (set! (-> option param2) (the float ,y)) - (set! (-> option scale) #t) - (1+! (-> *temp-options* length)))) + (set! (-> option option-type) (game-option-type resolution)) + (set! (-> option option-disabled-func) #f) + (set! (-> option name) (text-id resolution-fmt)) + (set! (-> option param1) (the float ,x)) + (set! (-> option param2) (the float ,y)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defun build-resolution-options () (set! (-> *temp-options* length) 0) @@ -583,51 +1167,35 @@ ;; Ignore those that aren't relevant to the current window's aspect ratio ;; we only do this when we aren't in windowed mode, because in windowed mode ;; you are using the resolution menu to change it...so it doesn't make sense to base it on the size - (when (or (= (pc-get-display-mode) 'windowed) - (< (fabs (- window-aspect-ratio res-aspect-ratio)) 0.05)) + (when (or (= (pc-get-display-mode) 'windowed) (< (fabs (- window-aspect-ratio res-aspect-ratio)) 0.05)) (add-resolution-option res-width res-height) (1+! num-resolutions-added))))) ;; if we didn't add any options, inform them they have a weird aspect ratio (cond - ((zero? num-resolutions-added) - (add-message-option (text-id progress-no-other-resolution-options))) + ((zero? num-resolutions-added) (add-message-option (text-id progress-no-other-resolution-options))) ((fullscreen?) - ;; for the weird people that want a more "PS2-like" experience - (add-resolution-option 512 448) - (add-resolution-option 512 224) - ) - ) + ;; for the weird people that want a more "PS2-like" experience + (add-resolution-option 512 448) + (add-resolution-option 512 224))) (add-back-option))) (defun build-flava-player-options ((mus-idx int)) - (set! (-> *temp-options* length) 0) - (dotimes (i (-> *music-flava-name-list* mus-idx length)) - (if (nonzero? (-> *music-flava-name-list* mus-idx i)) - (add-flava-player-option (-> *music-flava-name-list* mus-idx i) i) - ) - ) + (if (nonzero? (-> *music-flava-name-list* mus-idx i)) (add-flava-player-option (-> *music-flava-name-list* mus-idx i) i))) (add-back-option) - - *temp-options* - ) + *temp-options*) (defmacro add-monitor-option (text-id display-id) "add a display button to *temp-options* with specified size" `(let ((option (-> *temp-options* (length *temp-options*))) - (name (pc-get-display-name ,display-id *pc-cpp-temp-string*))) - (set! (-> option option-type) (game-option-type monitor)) - ;; Use the name of the display if it's available - (if name - (copy-string<-string (-> option name-override) *pc-cpp-temp-string*) - (set! (-> option name) ,text-id)) - (set! (-> option param1) (the float ,display-id)) - (set! (-> option scale) #t) - - (1+! (-> *temp-options* length)) - ) - ) + (name (pc-get-display-name ,display-id *pc-cpp-temp-string*))) + (set! (-> option option-type) (game-option-type monitor)) + ;; Use the name of the display if it's available + (if name (copy-string<-string (-> option name-override) *pc-cpp-temp-string*) (set! (-> option name) ,text-id)) + (set! (-> option param1) (the float ,display-id)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defun build-monitor-options () (set! (-> *temp-options* length) 0) @@ -639,30 +1207,58 @@ (defmacro add-controller-option (text-id controller-id) "add a controller option to *temp-options* with specified size" `(let ((option (-> *temp-options* (length *temp-options*))) - (name (pc-get-controller-name ,controller-id *pc-cpp-temp-string*))) - (set! (-> option option-type) (game-option-type controller)) - ;; Use the name of the controller if it's available - (if name - (copy-string<-string (-> option name-override) *pc-cpp-temp-string*) - (set! (-> option name) ,text-id)) - (set! (-> option param1) (the float ,controller-id)) - (set! (-> option scale) #t) - (1+! (-> *temp-options* length)))) + (name (pc-get-controller-name ,controller-id *pc-cpp-temp-string*))) + (set! (-> option option-type) (game-option-type controller)) + ;; Use the name of the controller if it's available + (if name (copy-string<-string (-> option name-override) *pc-cpp-temp-string*) (set! (-> option name) ,text-id)) + (set! (-> option param1) (the float ,controller-id)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defun build-controller-options () "Dynamically creates menu options for selecting your controller. Will attempt to use the name of the controller, but will fallback to a generic number otherwise" (set! (-> *temp-options* length) 0) (dotimes (i (pc-get-controller-count)) - (add-controller-option (text-id input-opts-generic-controller) i) - ) + (add-controller-option (text-id input-opts-generic-controller) i)) (add-back-option) *temp-options*) -(define *analog-bind-names* (new 'static 'boxed-array :type string "L ANALOG LEFT" "L ANALOG RIGHT" "L ANALOG UP" "L ANALOG DOWN" "R ANALOG LEFT" "R ANALOG RIGHT" "R ANALOG UP" "R ANALOG DOWN")) - -(define *button-bind-names* (new 'static 'boxed-array :type string "SELECT" "L3" "R3" "START" - "DPAD UP" "DPAD RIGHT" "DPAD DOWN" "DPAD LEFT" "L2" "R2" "L1" "R1" "TRIANGLE" "CIRCLE" "CROSS" "SQUARE")) +(define *analog-bind-names* + (new 'static + 'boxed-array + :type + string + "L ANALOG LEFT" + "L ANALOG RIGHT" + "L ANALOG UP" + "L ANALOG DOWN" + "R ANALOG LEFT" + "R ANALOG RIGHT" + "R ANALOG UP" + "R ANALOG DOWN")) + +(define *button-bind-names* + (new 'static + 'boxed-array + :type + string + "SELECT" + "L3" + "R3" + "START" + "DPAD UP" + "DPAD RIGHT" + "DPAD DOWN" + "DPAD LEFT" + "L2" + "R2" + "L1" + "R1" + "TRIANGLE" + "CIRCLE" + "CROSS" + "SQUARE")) ;; TODO - make a common function for these dynamic menus instead of the duplication / macros (defun build-binding-reassignment-options ((screen progress-screen)) @@ -682,12 +1278,10 @@ (set! (-> option bind-info for-buttons?) #f) (set! (-> option bind-info input-idx) i) (set! (-> option bind-info analog-min-range?) #t) - (set! (-> option option-type) (game-option-type binding-assignment)) (set! (-> option name-override) (-> *analog-bind-names* (* i 2))) (set! (-> option scale) #t) - (1+! (-> *temp-options* length)) - ) + (1+! (-> *temp-options* length))) (let ((option (-> *temp-options* (length *temp-options*)))) (set! (-> option bind-info port) 0) ;; only for keyboards @@ -695,34 +1289,25 @@ (set! (-> option bind-info for-buttons?) #f) (set! (-> option bind-info input-idx) i) (set! (-> option bind-info analog-min-range?) #f) - (set! (-> option option-type) (game-option-type binding-assignment)) (set! (-> option name-override) (-> *analog-bind-names* (+ 1 (* i 2)))) (set! (-> option scale) #t) - (1+! (-> *temp-options* length)) - ) - )) + (1+! (-> *temp-options* length))))) ;; Add Button bindings (dotimes (i 16) (let ((option (-> *temp-options* (length *temp-options*)))) (set! (-> option bind-info port) 0) (case screen - (((progress-screen controller-binds)) - (set! (-> option bind-info device-type) 0)) - (((progress-screen keyboard-binds)) - (set! (-> option bind-info device-type) 1)) - (((progress-screen mouse-binds)) - (set! (-> option bind-info device-type) 2))) + (((progress-screen controller-binds)) (set! (-> option bind-info device-type) 0)) + (((progress-screen keyboard-binds)) (set! (-> option bind-info device-type) 1)) + (((progress-screen mouse-binds)) (set! (-> option bind-info device-type) 2))) (set! (-> option bind-info for-buttons?) #t) (set! (-> option bind-info input-idx) i) (set! (-> option bind-info analog-min-range?) #f) - (set! (-> option option-type) (game-option-type binding-assignment)) (set! (-> option name-override) (-> *button-bind-names* i)) (set! (-> option scale) #t) - (1+! (-> *temp-options* length)) - ) - ) + (1+! (-> *temp-options* length)))) ;; We add a restore defaults button at the bottom of each binding menu (let ((option (-> *temp-options* (length *temp-options*)))) (set! (-> option option-type) (game-option-type confirmation)) @@ -730,66 +1315,48 @@ (set! (-> option scale) #t) ;; No closures :( (case screen - ;; NOTE - assumes only port 0 - (((progress-screen controller-binds)) + ;; NOTE - assumes only port 0 + (((progress-screen controller-binds)) (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 0) (none)))) - (((progress-screen keyboard-binds)) - (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 1) (none)))) - (((progress-screen mouse-binds)) - (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 2) (none))))) - (1+! (-> *temp-options* length)) - ) + (((progress-screen keyboard-binds)) + (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 1) (none)))) + (((progress-screen mouse-binds)) (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 2) (none))))) + (1+! (-> *temp-options* length))) (add-back-option) *temp-options*) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; CAROUSELL FUNCTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defun get-language-name ((lang pc-language)) "get the text-id from a lang" (dolist (item *language-remap-info-pc*) (when (= lang (the pc-language (/ (the int (cadr (car item))) 8))) - (return (the text-id (/ (the int (car (car item))) 8)))) - ) - (text-id zero) - ) - + (return (the text-id (/ (the int (car (car item))) 8))))) + (text-id zero)) (defun print-string-in-carousell ((arg0 text-id) (arg1 font-context) (arg2 int) (arg3 symbol)) - (let ((s5-0 (if arg3 - arg2 - (- arg2) - ) - ) - ) + (let ((s5-0 (if arg3 arg2 (- arg2)))) (+! (-> arg1 origin x) (the float s5-0)) (let ((f30-0 (- 1.0 (* 0.0033333334 (the float arg2))))) - (print-game-text-scaled (lookup-text! *common-text* arg0 #f) f30-0 arg1 (the int (* 128.0 f30-0))) - ) - (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0))) - ) + (print-game-text-scaled (lookup-text! *common-text* arg0 #f) f30-0 arg1 (the int (* 128.0 f30-0)))) + (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0)))) (set! (-> arg1 color) (font-color default)) - arg1 - ) + arg1) (defun progress-draw-carousell-from-string-list ((options (array text-id)) (font font-context) (y-off int) (new-val int)) "yep." - (let ((old-lang (-> *progress-carousell* selection)) (new-lang new-val) - (max-lang (length options)) - ) + (max-lang (length options))) (if (-> *progress-carousell* transition) - (seekl! (-> *progress-carousell* x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) + (seekl! (-> *progress-carousell* x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) (when (>= (-> *progress-carousell* x-offset) 100) (set! (-> *progress-carousell* selection) new-lang) (set! old-lang new-lang) (set! (-> *progress-carousell* transition) #f) - (set! (-> *progress-carousell* x-offset) 0) - ) + (set! (-> *progress-carousell* x-offset) 0)) (set! (-> font origin y) (the float (+ y-off 3))) (set-color! font (font-color progress-blue)) 0 @@ -797,52 +1364,33 @@ (prev-lang (mod (+ max-lang -1 old-lang) max-lang)) ;; these are used during the transition since it technically allows you to see 4 langs at once. (next2-lang (mod (+ old-lang 2) max-lang)) - (prev2-lang (mod (+ max-lang -2 old-lang) max-lang)) - ) + (prev2-lang (mod (+ max-lang -2 old-lang) max-lang))) (cond ((-> *progress-carousell* direction) (let ((a2-22 (- 200 (+ (-> *progress-carousell* x-offset) 100)))) - (print-string-in-carousell (-> options prev-lang) font a2-22 #f) - ) + (print-string-in-carousell (-> options prev-lang) font a2-22 #f)) (set-color! font (font-color progress-blue)) (let ((a2-23 (+ (-> *progress-carousell* x-offset) 100))) (cond - ((< a2-23 150) - (print-string-in-carousell (-> options next-lang) font a2-23 #t) - ) + ((< a2-23 150) (print-string-in-carousell (-> options next-lang) font a2-23 #t)) (else - (let ((a2-24 (- 200 (-> *progress-carousell* x-offset)))) - (print-string-in-carousell (-> options prev2-lang) font a2-24 #f) - ) - ) - ) - ) - ) + (let ((a2-24 (- 200 (-> *progress-carousell* x-offset)))) + (print-string-in-carousell (-> options prev2-lang) font a2-24 #f)))))) (else - (let ((a2-25 (+ (-> *progress-carousell* x-offset) 100))) - (cond - ((< a2-25 150) - (print-string-in-carousell (-> options prev-lang) font a2-25 #f) - ) - (else - (let ((a2-26 (- 200 (-> *progress-carousell* x-offset)))) - (print-string-in-carousell (-> options next2-lang) font a2-26 #t) - ) - ) - ) - ) - (set-color! font (font-color progress-blue)) - (let ((a2-27 (- 200 (+ (-> *progress-carousell* x-offset) 100)))) - (print-string-in-carousell (-> options next-lang) font a2-27 #t) - ) - ) - ) - ) - (if (not (-> *progress-carousell* transition)) - (set-color! font (font-color progress-selected))) - (print-string-in-carousell (-> options old-lang) font (-> *progress-carousell* x-offset) (-> *progress-carousell* direction)) - ) - ) + (let ((a2-25 (+ (-> *progress-carousell* x-offset) 100))) + (cond + ((< a2-25 150) (print-string-in-carousell (-> options prev-lang) font a2-25 #f)) + (else + (let ((a2-26 (- 200 (-> *progress-carousell* x-offset)))) + (print-string-in-carousell (-> options next2-lang) font a2-26 #t))))) + (set-color! font (font-color progress-blue)) + (let ((a2-27 (- 200 (+ (-> *progress-carousell* x-offset) 100)))) + (print-string-in-carousell (-> options next-lang) font a2-27 #t))))) + (if (not (-> *progress-carousell* transition)) (set-color! font (font-color progress-selected))) + (print-string-in-carousell (-> options old-lang) + font + (-> *progress-carousell* x-offset) + (-> *progress-carousell* direction)))) ;;--------------------------- ;;--------------------------- @@ -850,92 +1398,80 @@ (defun init-game-options ((obj progress)) "Set the options for all of the menus." - ;; start off by making them all invalid (dotimes (i (progress-screen max)) - (set! (-> *options-remap* i) #f) - ) - + (set! (-> *options-remap* i) #f)) ;; give cheats (when (task-closed? (game-task finalboss-movies) (task-status need-reminder)) - (logior! (-> *pc-settings* cheats-known) (pc-cheats sidekick-blue tunes sky big-head small-head big-fist big-head-npc)) - (when (>= (calculate-completion (the progress #f)) 100.0) - (logior! (-> *pc-settings* cheats-known) (pc-cheats invinc eco-blue eco-red eco-green eco-yellow huge-head mirror no-tex)))) - + (logior! (-> *pc-settings* cheats-known) (pc-cheats sidekick-blue tunes sky big-head small-head big-fist big-head-npc)) + (when (>= (calculate-completion (the progress #f)) 100.0) + (logior! (-> *pc-settings* cheats-known) + (pc-cheats invinc eco-blue eco-red eco-green eco-yellow huge-head mirror no-tex)))) ;; set up options for each screen - (set! (-> *options-remap* (progress-screen settings)) (if (or *cheat-mode* (nonzero? (-> *pc-settings* cheats-known))) - *main-options-secrets* - *main-options-pc*)) + (set! (-> *options-remap* (progress-screen settings)) + (if (or *cheat-mode* (nonzero? (-> *pc-settings* cheats-known))) *main-options-secrets* *main-options-pc*)) (set! (-> *options-remap* (progress-screen game-settings)) *game-options-pc*) (set! (-> *options-remap* (progress-screen graphic-settings)) *graphic-options-pc*) (let ((max-refresh-rate (pc-get-active-display-refresh-rate))) (cond - ((> max-refresh-rate 100) - (set! *carousell-frame-rate* *carousell-frame-rate-150fps*) - ) - ((> max-refresh-rate 60) - (set! *carousell-frame-rate* *carousell-frame-rate-100fps*) - ))) - - (set! (-> *options-remap* (progress-screen sound-settings)) *sound-options-pc*) - (set! (-> *options-remap* (progress-screen memcard-no-space)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-not-inserted)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-not-formatted)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-format)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen memcard-data-exists)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen memcard-insert)) *ok-options*) - (set! (-> *options-remap* (progress-screen load-game)) *load-options*) - (set! (-> *options-remap* (progress-screen save-game)) *save-options*) - (set! (-> *options-remap* (progress-screen save-game-title)) *save-options-title*) - (set! (-> *options-remap* (progress-screen memcard-error-loading)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-error-saving)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-error-formatting)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-error-creating)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-auto-save-error)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-removed)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-no-data)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen title)) *title-pc*) - (set! (-> *options-remap* (progress-screen settings-title)) *options*) - (set! (-> *options-remap* (progress-screen auto-save)) *ok-options*) - (set! (-> *options-remap* (progress-screen pal-change-to-60hz)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen pal-now-60hz)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen no-disc)) *ok-options*) - (set! (-> *options-remap* (progress-screen bad-disc)) *ok-options*) - (set! (-> *options-remap* (progress-screen quit)) *yes-no-options*) + ((> max-refresh-rate 100) (set! *carousell-frame-rate* *carousell-frame-rate-150fps*)) + ((> max-refresh-rate 60) (set! *carousell-frame-rate* *carousell-frame-rate-100fps*)))) + (set! (-> *options-remap* (progress-screen sound-settings)) *sound-options-pc*) + (set! (-> *options-remap* (progress-screen memcard-no-space)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-not-inserted)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-not-formatted)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-format)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen memcard-data-exists)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen memcard-insert)) *ok-options*) + (set! (-> *options-remap* (progress-screen load-game)) *load-options*) + (set! (-> *options-remap* (progress-screen save-game)) *save-options*) + (set! (-> *options-remap* (progress-screen save-game-title)) *save-options-title*) + (set! (-> *options-remap* (progress-screen memcard-error-loading)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-error-saving)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-error-formatting)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-error-creating)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-auto-save-error)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-removed)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-no-data)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen title)) *title-pc*) + (set! (-> *options-remap* (progress-screen settings-title)) *options*) + (set! (-> *options-remap* (progress-screen auto-save)) *ok-options*) + (set! (-> *options-remap* (progress-screen pal-change-to-60hz)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen pal-now-60hz)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen no-disc)) *ok-options*) + (set! (-> *options-remap* (progress-screen bad-disc)) *ok-options*) + (set! (-> *options-remap* (progress-screen quit)) *yes-no-options*) ;; our screens! - (set! (-> *options-remap* (progress-screen aspect-msg)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen input-options)) *input-options*) - (set! (-> *options-remap* (progress-screen camera-options)) *camera-options*) - (set! (-> *options-remap* (progress-screen controller-options)) *controller-options*) - (set! (-> *options-remap* (progress-screen mouse-options)) *mouse-options*) - (set! (-> *options-remap* (progress-screen reassign-binds-options)) *reassign-binds-options*) - (set! (-> *options-remap* (progress-screen select-controller)) *temp-options*) - (set! (-> *options-remap* (progress-screen controller-binds)) *temp-options*) - (set! (-> *options-remap* (progress-screen keyboard-binds)) *temp-options*) - (set! (-> *options-remap* (progress-screen mouse-binds)) *temp-options*) - - (set! (-> *options-remap* (progress-screen misc-options)) *misc-options*) - (set! (-> *options-remap* (progress-screen gfx-ps2-options)) *gfx-ps2-options*) - (set! (-> *options-remap* (progress-screen resolution)) *temp-options*) - (set! (-> *options-remap* (progress-screen aspect-ratio)) *aspect-ratio-options*) - (set! (-> *options-remap* (progress-screen quit-title)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen secrets)) *secrets-title*) - (set! (-> *options-remap* (progress-screen cheats)) *cheats*) - (set! (-> *options-remap* (progress-screen checkpoint-select)) *checkpoint-select-options*) - (set! (-> *options-remap* (progress-screen music-player)) *music-player-options*) - (set! (-> *options-remap* (progress-screen flava-player)) *temp-options*) - (set! (-> *options-remap* (progress-screen memcard-disable-auto-save)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen aspect-msg)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen input-options)) *input-options*) + (set! (-> *options-remap* (progress-screen camera-options)) *camera-options*) + (set! (-> *options-remap* (progress-screen controller-options)) *controller-options*) + (set! (-> *options-remap* (progress-screen mouse-options)) *mouse-options*) + (set! (-> *options-remap* (progress-screen reassign-binds-options)) *reassign-binds-options*) + (set! (-> *options-remap* (progress-screen select-controller)) *temp-options*) + (set! (-> *options-remap* (progress-screen controller-binds)) *temp-options*) + (set! (-> *options-remap* (progress-screen keyboard-binds)) *temp-options*) + (set! (-> *options-remap* (progress-screen mouse-binds)) *temp-options*) + (set! (-> *options-remap* (progress-screen misc-options)) *misc-options*) + (set! (-> *options-remap* (progress-screen gfx-ps2-options)) *gfx-ps2-options*) + (set! (-> *options-remap* (progress-screen resolution)) *temp-options*) + (set! (-> *options-remap* (progress-screen aspect-ratio)) *aspect-ratio-options*) + (set! (-> *options-remap* (progress-screen quit-title)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen secrets)) *secrets-title*) + (set! (-> *options-remap* (progress-screen cheats)) *cheats*) + (set! (-> *options-remap* (progress-screen checkpoint-select)) *checkpoint-select-options*) + (set! (-> *options-remap* (progress-screen music-player)) *music-player-options*) + (set! (-> *options-remap* (progress-screen flava-player)) *temp-options*) + (set! (-> *options-remap* (progress-screen memcard-disable-auto-save)) *yes-no-options*) (set! (-> *options-remap* (progress-screen memcard-auto-save-disabled)) *ok-options*) - (set! (-> *options-remap* (progress-screen monitor)) *temp-options*) - (set! (-> *options-remap* (progress-screen speedrun-options)) *speedrun-options*) - (set! (-> *options-remap* (progress-screen speedrun-il-options)) *speedrun-il-options*) - (set! (-> *options-remap* (progress-screen speedrun-cat-ext-options)) *speedrun-cat-ext-options*) - + (set! (-> *options-remap* (progress-screen monitor)) *temp-options*) + (set! (-> *options-remap* (progress-screen speedrun-options)) *speedrun-options*) + (set! (-> *options-remap* (progress-screen speedrun-il-options)) *speedrun-il-options*) + (set! (-> *options-remap* (progress-screen speedrun-cat-ext-options)) *speedrun-cat-ext-options*) ;; set default params (set! (-> *progress-state* aspect-ratio-choice) (get-aspect-ratio)) (set! (-> *progress-state* video-mode-choice) (get-video-mode)) (set! (-> *progress-state* yes-no-choice) #f) - ;; set variable pointers (set! (-> *game-options* 1 value-to-modify) (&-> *setting-control* default play-hints)) (set! (-> *game-options* 2 value-to-modify) (&-> *setting-control* default language)) @@ -948,7 +1484,6 @@ (set! (-> *sound-options* 1 value-to-modify) (&-> *setting-control* default music-volume)) (set! (-> *sound-options* 2 value-to-modify) (&-> *setting-control* default dialog-volume)) (set! (-> *yes-no-options* 0 value-to-modify) (&-> *progress-state* yes-no-choice)) - ;; our options! (set! (-> *game-options-pc* 1 value-to-modify) (&-> *setting-control* default play-hints)) (set! (-> *game-options-pc* 2 value-to-modify) (&-> *pc-settings* subtitles?)) @@ -957,23 +1492,19 @@ (set! (-> *game-options-pc* 5 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *game-options-pc* 6 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *game-options-pc* 7 value-to-modify) (&-> *progress-carousell* int-backup)) - (set! (-> *graphic-options-pc* 1 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *graphic-options-pc* 2 value-to-modify) (&-> *pc-settings* monitor)) (set! (-> *graphic-options-pc* 3 value-to-modify) (&-> *pc-settings* vsync?)) (set! (-> *graphic-options-pc* 5 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *graphic-options-pc* 6 value-to-modify) (&-> *progress-carousell* int-backup)) - (set! (-> *misc-options* 0 value-to-modify) (&-> *pc-settings* money-starburst?)) (set! (-> *misc-options* 1 value-to-modify) (&-> *pc-settings* discord-rpc?)) (set! (-> *misc-options* 2 value-to-modify) (&-> *pc-settings* skip-movies?)) (set! (-> *misc-options* 3 value-to-modify) (&-> *pc-settings* speedrunner-mode?)) - (set! (-> *camera-options* 0 value-to-modify) (&-> *pc-settings* first-camera-h-inverted?)) (set! (-> *camera-options* 1 value-to-modify) (&-> *pc-settings* first-camera-v-inverted?)) (set! (-> *camera-options* 2 value-to-modify) (&-> *pc-settings* third-camera-h-inverted?)) (set! (-> *camera-options* 3 value-to-modify) (&-> *pc-settings* third-camera-v-inverted?)) - ;; input options (set! (-> *controller-options* 1 value-to-modify) (&-> *setting-control* default vibration)) (set! (-> *controller-options* 2 value-to-modify) (&-> *pc-settings* stick-deadzone)) @@ -981,126 +1512,85 @@ (set! (-> *controller-options* 4 value-to-modify) (&-> *pc-settings* controller-led-hp?)) (set! (-> *controller-options* 5 value-to-modify) (&-> *pc-settings* controller-led-eco?)) (set! (-> *controller-options* 6 value-to-modify) (&-> *pc-settings* controller-led-heat?)) - (set! (-> *mouse-options* 0 value-to-modify) (&-> *pc-settings* mouse-camera?)) (set! (-> *mouse-options* 1 value-to-modify) (&-> *pc-settings* mouse-xsens)) (set! (-> *mouse-options* 2 value-to-modify) (&-> *pc-settings* mouse-ysens)) (set! (-> *mouse-options* 3 value-to-modify) (&-> *pc-settings* mouse-movement?)) - (set! (-> *input-options* 2 value-to-modify) (&-> *pc-settings* keyboard-enabled?)) (set! (-> *input-options* 3 value-to-modify) (&-> *pc-settings* mouse-enabled?)) (set! (-> *input-options* 5 value-to-modify) (&-> *pc-settings* auto-hide-cursor?)) - (set! (-> *gfx-ps2-options* 0 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *gfx-ps2-options* 1 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *gfx-ps2-options* 2 value-to-modify) (&-> *pc-settings* ps2-parts?)) (set! (-> *gfx-ps2-options* 3 value-to-modify) (&-> *pc-settings* force-envmap?)) (set! (-> *gfx-ps2-options* 4 value-to-modify) (&-> *pc-settings* ps2-actor-vis?)) - (set! (-> *sound-options-pc* 0 value-to-modify) (&-> *setting-control* default sfx-volume)) (set! (-> *sound-options-pc* 1 value-to-modify) (&-> *setting-control* default music-volume)) (set! (-> *sound-options-pc* 2 value-to-modify) (&-> *setting-control* default dialog-volume)) (dotimes (i (1- (-> *cheats* length))) - (set! (-> *cheats* i value-to-modify) (&-> *progress-carousell* symbol-backup)) - ) + (set! (-> *cheats* i value-to-modify) (&-> *progress-carousell* symbol-backup))) ;(set! (-> *sound-options-pc* 3 value-to-modify) (&-> *pc-settings* music-fadein?)) - (set! (-> *progress-carousell* aspect-native-choice) (-> *pc-settings* use-vis?)) - ;; scroll stuff! (progress-scroll-reset) + (none)) - (none) - ) - - - -(defmethod respond-common progress ((obj progress)) +(defmethod respond-common ((obj progress)) "common logic for navigating the progress menu. this is the overriden version, purged of no longer necessary code and with additional new code." - ;; read memcard (mc-get-slot-info 0 *progress-save-info*) (set! (-> obj card-info) *progress-save-info*) ;; build custom dynamic menus (case (-> obj display-state) (((progress-screen resolution)) - ;; TODO infinite scrolling - (build-resolution-options) - ) - (((progress-screen flava-player)) - (build-flava-player-options *progress-music*) - ) + ;; TODO infinite scrolling + (build-resolution-options)) + (((progress-screen flava-player)) (build-flava-player-options *progress-music*)) (((progress-screen secrets)) - (if (= (-> obj display-state-stack 0) (progress-screen title)) - (set! (-> *options-remap* (-> obj display-state)) *secrets-title*) - (set! (-> *options-remap* (-> obj display-state)) *secrets*)) - ) - (((progress-screen monitor)) - (build-monitor-options) - ) - (((progress-screen select-controller)) - (build-controller-options) - ) + (if (= (-> obj display-state-stack 0) (progress-screen title)) + (set! (-> *options-remap* (-> obj display-state)) *secrets-title*) + (set! (-> *options-remap* (-> obj display-state)) *secrets*))) + (((progress-screen monitor)) (build-monitor-options)) + (((progress-screen select-controller)) (build-controller-options)) (((progress-screen controller-binds) (progress-screen keyboard-binds) (progress-screen mouse-binds)) - (build-binding-reassignment-options (-> obj display-state)) - ) - ) + (build-binding-reassignment-options (-> obj display-state)))) ;; run nav code (let ((options (-> *options-remap* (-> obj display-state)))) ;; snap scroll if oob (when (> (length options) PROGRESS_PC_PAGE_HEIGHT) - (set! (-> *progress-scroll* start-index) (max (-> *progress-scroll* start-index) - (- (-> obj option-index) (+ PROGRESS_PC_PAGE_HEIGHT -2)))) - ) + (set! (-> *progress-scroll* start-index) + (max (-> *progress-scroll* start-index) (- (-> obj option-index) (+ PROGRESS_PC_PAGE_HEIGHT -2))))) (when (and options (not (or (progress-scrolling?) (-> obj in-transition)))) ;; only respond to inputs when transition is done (and also there's options at all) (cond ((cpad-pressed? 0 up) - ;; pressed up - ;; original code checked hold and then press, because hold can be used during center screen option. which we don't use. - (when (not (-> obj selected-option)) - (if (!= (length options) 1) - (sound-play "cursor-up-down") - ) - (set! (-> obj last-option-index-change) (-> *display* real-frame-counter)) - (cond - ((> (-> obj option-index) 0) - (1-! (-> obj option-index)) - (when (and (> (length options) PROGRESS_PC_PAGE_HEIGHT) (< (-> obj option-index) *progress-scroll-start*)) - (progress-scroll-up!) - ) - ) - (else - (set! (-> obj option-index) (1- (length options))) - (set! (-> *progress-scroll* start-index) (max 0 (- (length options) PROGRESS_PC_PAGE_HEIGHT -1))) - ) - ) - ) - ) + ;; pressed up + ;; original code checked hold and then press, because hold can be used during center screen option. which we don't use. + (when (not (-> obj selected-option)) + (if (!= (length options) 1) (sound-play "cursor-up-down")) + (set! (-> obj last-option-index-change) (-> *display* real-frame-counter)) + (cond + ((> (-> obj option-index) 0) + (1-! (-> obj option-index)) + (when (and (> (length options) PROGRESS_PC_PAGE_HEIGHT) (< (-> obj option-index) *progress-scroll-start*)) + (progress-scroll-up!))) + (else + (set! (-> obj option-index) (1- (length options))) + (set! (-> *progress-scroll* start-index) (max 0 (- (length options) PROGRESS_PC_PAGE_HEIGHT -1))))))) ((cpad-pressed? 0 down) - ;; pressed down. - (when (not (-> obj selected-option)) - (if (!= (length options) 1) - (sound-play "cursor-up-down") - ) - (set! (-> obj last-option-index-change) (-> *display* real-frame-counter)) - (cond - ((< (-> obj option-index) (1- (length options))) - (1+! (-> obj option-index)) - (when (and (> (length options) PROGRESS_PC_PAGE_HEIGHT) (>= (-> obj option-index) *progress-scroll-end*)) - (progress-scroll-down!) - ) - ) - (else - (set! (-> obj option-index) 0) - (set! (-> *progress-scroll* start-index) 0) - ) - ) - ) - ) + ;; pressed down. + (when (not (-> obj selected-option)) + (if (!= (length options) 1) (sound-play "cursor-up-down")) + (set! (-> obj last-option-index-change) (-> *display* real-frame-counter)) + (cond + ((< (-> obj option-index) (1- (length options))) + (1+! (-> obj option-index)) + (when (and (> (length options) PROGRESS_PC_PAGE_HEIGHT) (>= (-> obj option-index) *progress-scroll-end*)) + (progress-scroll-down!))) + (else (set! (-> obj option-index) 0) (set! (-> *progress-scroll* start-index) 0))))) ((cpad-hold? 0 left) - ;; holding left. sliders use hold. + ;; holding left. sliders use hold. (cond ((cpad-pressed? 0 left) ;; navigate left. @@ -1119,29 +1609,24 @@ ;; vibrate if this toggles vibration. ;; TODO - get this working (when (= (-> options (-> obj option-index) name) (text-id vibrations)) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3))) - ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)))) ;; if the option has an explicit on-change function, call it (if (nonzero? (-> options (-> obj option-index) on-change)) - ((-> options (-> obj option-index) on-change) #t) - ;; set to yes - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) #t)) - ) + ((-> options (-> obj option-index) on-change) #t) + ;; set to yes + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) #t))) (((game-option-type aspect-ratio)) (set! sound? (= (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect16x9)) - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect4x3) - ) + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect4x3)) (((game-option-type language)) ;; language selection. if not on first language, go back. if on first language, go to last. (if (> (the-as int (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify)))) 0) - (+! (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify))) -1) - (set! (-> (the-as (pointer int64) (-> options (-> obj option-index) value-to-modify))) 5) - ) + (+! (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify))) -1) + (set! (-> (the-as (pointer int64) (-> options (-> obj option-index) value-to-modify))) 5)) ;; language was updated. (set! (-> obj language-transition) #t) (set! (-> obj language-direction) #t) - (set! sound? #t) - ) + (set! sound? #t)) (((game-option-type confirmation)) (set! sound? (!= (-> *progress-state* on-off-backup) #t)) (set! (-> *progress-state* on-off-backup) #t)) @@ -1152,72 +1637,49 @@ (game-option-type speaker) (game-option-type frame-rate) (game-option-type language-subtitles) - (game-option-type language-text) - ) + (game-option-type language-text)) ;; a carousell like language (if (> (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) 0) - (+! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) -1) - (set! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) (1- (length (-> *progress-carousell* current-carousell)))) - ) + (+! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) -1) + (set! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) + (1- (length (-> *progress-carousell* current-carousell))))) ;; updated. (set! (-> *progress-carousell* transition) #t) (set! (-> *progress-carousell* direction) #t) - (set! sound? #t) - ) - ) - (if sound? - (sound-play "cursor-l-r") - ) - ) - ) - ) + (set! sound? #t))) + (if sound? (sound-play "cursor-l-r"))))) (else - ;; holding left - (when (-> obj selected-option) - (let ((sound? #f)) - (case (-> options (-> obj option-index) option-type) - (((game-option-type slider)) - ;; slider is selected - (cond - ((>= (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (+ (-> options (-> obj option-index) slider-step-size) (-> options (-> obj option-index) param1))) - ;; we're 1 above minimum, so reduce by 1 - (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (- (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> options (-> obj option-index) slider-step-size))) - (set! sound? #t) - ) - ((< (-> options (-> obj option-index) param1) - ;; not at least 1 above minimum, just set to minimum (why not just use max or something!!) - (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> options (-> obj option-index) param1)) - (set! sound? #t) - ) - ) - ) - ) - ;; play sound - (when sound? - (let ((vol 100.0)) - (case (-> options (-> obj option-index) name) - (((text-id music-volume) (text-id speech-volume)) - (set! vol (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - ) - ) - (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) - (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) - (sound-play "slider2001" :vol vol) - ) - ) - ) - ) - ) - ) - ) - ) + ;; holding left + (when (-> obj selected-option) + (let ((sound? #f)) + (case (-> options (-> obj option-index) option-type) + (((game-option-type slider)) + ;; slider is selected + (cond + ((>= (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (+ (-> options (-> obj option-index) slider-step-size) (-> options (-> obj option-index) param1))) + ;; we're 1 above minimum, so reduce by 1 + (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (- (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (-> options (-> obj option-index) slider-step-size))) + (set! sound? #t)) + ((< (-> options (-> obj option-index) param1) + ;; not at least 1 above minimum, just set to minimum (why not just use max or something!!) + (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) + (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (-> options (-> obj option-index) param1)) + (set! sound? #t))))) + ;; play sound + (when sound? + (let ((vol 100.0)) + (case (-> options (-> obj option-index) name) + (((text-id music-volume) (text-id speech-volume)) + (set! vol (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))))) + (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) + (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) + (sound-play "slider2001" :vol vol))))))))) ((cpad-hold? 0 right) - ;; holding right + ;; holding right (cond ((cpad-pressed? 0 right) ;; pressed right @@ -1233,25 +1695,21 @@ (set! sound? (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) ;; if the option has an explicit on-change function, call it (if (nonzero? (-> options (-> obj option-index) on-change)) - ((-> options (-> obj option-index) on-change) #f) - ;; set to no - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) #f)) - ) + ((-> options (-> obj option-index) on-change) #f) + ;; set to no + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) #f))) (((game-option-type aspect-ratio)) ;; same shit different toilet (set! sound? (= (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect4x3)) - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect16x9) - ) + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect16x9)) (((game-option-type language)) ;; same thing as before. if at last, go to first. otherwise, keep going forward. (if (< (the-as int (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify)))) 5) - (1+! (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify)))) - (set! (-> (the-as (pointer int64) (-> options (-> obj option-index) value-to-modify))) 0) - ) + (1+! (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify)))) + (set! (-> (the-as (pointer int64) (-> options (-> obj option-index) value-to-modify))) 0)) (set! (-> obj language-transition) #t) (set! (-> obj language-direction) #f) - (set! sound? #t) - ) + (set! sound? #t)) (((game-option-type confirmation)) (set! sound? (!= (-> *progress-state* on-off-backup) #f)) (set! (-> *progress-state* on-off-backup) #f)) @@ -1262,67 +1720,43 @@ (game-option-type speaker) (game-option-type frame-rate) (game-option-type language-subtitles) - (game-option-type language-text) - ) + (game-option-type language-text)) ;; same thing as before. if at last, go to first. otherwise, keep going forward. - (if (< (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) (1- (length (-> *progress-carousell* current-carousell)))) - (1+! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify)))) - (set! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) 0) - ) + (if (< (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) + (1- (length (-> *progress-carousell* current-carousell)))) + (1+! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify)))) + (set! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) 0)) (set! (-> *progress-carousell* transition) #t) (set! (-> *progress-carousell* direction) #f) - (set! sound? #t) - ) - ) + (set! sound? #t))) ;; play sound if desired - (if sound? - (sound-play "cursor-l-r") - ) - ) - ) - ) + (if sound? (sound-play "cursor-l-r"))))) (else - ;; holding right, but didnt just press it. same slider stuff as before - (when (-> obj selected-option) - (let ((sound? #f)) - (case (-> options (-> obj option-index) option-type) - (((game-option-type slider)) - (cond - ((>= (- (-> options (-> obj option-index) param2) - (-> options (-> obj option-index) slider-step-size)) - (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (+ (-> options (-> obj option-index) slider-step-size) - (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))))) - (set! sound? #t) - ) - ((< (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> options (-> obj option-index) param2)) - (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> options (-> obj option-index) param2)) - (set! sound? #t) - ) - ) - ) - ) - (when sound? - (let ((vol 100.0)) - (case (-> options (-> obj option-index) name) - (((text-id music-volume) (text-id speech-volume)) - (set! vol (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - ) - ) - (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) - (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) - (sound-play "slider2001" :vol vol) - ) - ) - ) - ) - ) - ) - ) - ) + ;; holding right, but didnt just press it. same slider stuff as before + (when (-> obj selected-option) + (let ((sound? #f)) + (case (-> options (-> obj option-index) option-type) + (((game-option-type slider)) + (cond + ((>= (- (-> options (-> obj option-index) param2) (-> options (-> obj option-index) slider-step-size)) + (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) + (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (+ (-> options (-> obj option-index) slider-step-size) + (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))))) + (set! sound? #t)) + ((< (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (-> options (-> obj option-index) param2)) + (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (-> options (-> obj option-index) param2)) + (set! sound? #t))))) + (when sound? + (let ((vol 100.0)) + (case (-> options (-> obj option-index) name) + (((text-id music-volume) (text-id speech-volume)) + (set! vol (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))))) + (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) + (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) + (sound-play "slider2001" :vol vol))))))))) ((or (cpad-pressed? 0 square) (cpad-pressed? 0 triangle)) ;; pressed square or triangle, cancel out! (cond @@ -1331,49 +1765,37 @@ (case (-> options (-> obj option-index) option-type) (((game-option-type slider)) (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> *progress-state* slider-backup)) - ) + (-> *progress-state* slider-backup))) (((game-option-type language)) (set! (-> (the-as (pointer language-enum) (-> options (-> obj option-index) value-to-modify))) - (-> *progress-state* language-backup)) - ) + (-> *progress-state* language-backup))) (((game-option-type on-off) (game-option-type normal-inverted)) (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) - (-> *progress-state* on-off-backup)) - ) - ) + (-> *progress-state* on-off-backup)))) ;; ding (sound-play "cursor-options") - (set! (-> obj selected-option) #f) - ) + (set! (-> obj selected-option) #f)) ((or (can-go-back? obj) (= (-> obj display-state) (progress-screen load-game)) (= (-> obj display-state) (progress-screen save-game)) - (= (-> obj display-state) (progress-screen save-game-title)) - ) + (= (-> obj display-state) (progress-screen save-game-title))) ;; no option selected, go back (cpad-clear! 0 square) (cpad-clear! 0 triangle) - (if (= (-> obj display-state) (progress-screen settings)) - (sound-play "menu-stats") - (sound-play "cursor-options") - ) + (if (= (-> obj display-state) (progress-screen settings)) (sound-play "menu-stats") (sound-play "cursor-options")) (when (= (-> obj display-state) (progress-screen music-player)) - (sound-group-pause (sound-group music)) - (progress-reset-music-parms)) + (sound-group-pause (sound-group music)) + (progress-reset-music-parms)) (load-level-text-files (-> *level-task-data* (-> obj display-level-index) text-group-index)) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (set! (-> obj next-display-state) (progress-screen invalid))))) ((or (cpad-pressed? 0 x) (cpad-pressed? 0 circle)) ;; pressed x or circle. advance! ;; first check if the option is disabled, if so leave early and do nothing (when (and (nonzero? (-> options (-> obj option-index) option-disabled-func)) (!= (-> options (-> obj option-index) option-disabled-func) #f) ((-> options (-> obj option-index) option-disabled-func))) - (sound-play "cursor-options") - (return #f)) + (sound-play "cursor-options") + (return #f)) (cond ((not (-> obj selected-option)) ;; no option already selected. @@ -1383,186 +1805,111 @@ (cpad-clear! 0 x) (cpad-clear! 0 circle) (cond - ((and (not (-> *setting-control* default auto-save)) - (= (text-id disable-auto-save) (-> options (-> obj option-index) name))) - (sound-play "cursor-options") - ) - (else - (push! obj) - (sound-play "select-option") - (set! (-> obj next-display-state) (the-as progress-screen (-> options (-> obj option-index) param3))) - (case (-> obj next-display-state) - (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (set! (-> obj next-display-state) (set-memcard-screen obj (-> obj next-display-state))) - ) - ) - ) - ) - ) + ((and (not (-> *setting-control* default auto-save)) + (= (text-id disable-auto-save) (-> options (-> obj option-index) name))) + (sound-play "cursor-options")) + (else + (push! obj) + (sound-play "select-option") + (set! (-> obj next-display-state) (the-as progress-screen (-> options (-> obj option-index) param3))) + (case (-> obj next-display-state) + (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) + (set! (-> obj next-display-state) (set-memcard-screen obj (-> obj next-display-state)))))))) ((= (-> options (-> obj option-index) option-type) (game-option-type button)) ;; a button. what? (case (-> options (-> obj option-index) name) (((text-id exit-demo)) ;; exit demo! (set! *master-exit* 'force) - (set-master-mode 'game) - ) + (set-master-mode 'game)) (((text-id back)) ;; go back! - (if (= (-> obj display-state) (progress-screen settings)) - (sound-play "menu-stats") - (sound-play "cursor-options") - ) + (if (= (-> obj display-state) (progress-screen settings)) (sound-play "menu-stats") (sound-play "cursor-options")) (when (= (-> obj display-state) (progress-screen music-player)) - (sound-group-pause (sound-group music)) - (progress-reset-music-parms)) + (sound-group-pause (sound-group music)) + (progress-reset-music-parms)) (load-level-text-files (-> *level-task-data* (-> obj display-level-index) text-group-index)) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (set! (-> obj next-display-state) (progress-screen invalid))) ;; LEVEL SELECT (((text-id training-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "game-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id village1-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "village1-warp")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id beach-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "beach-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id jungle-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "jungle-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id misty-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "misty-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id firecanyon-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "firecanyon-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id village2-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "village2-warp")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id sunken-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "sunken-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id swamp-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "swamp-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id rolling-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "rolling-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id ogre-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "ogre-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id village3-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "village3-warp")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id snow-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "snow-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id cave-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "maincave-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id lavatube-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "lavatube-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id citadel-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "citadel-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id finalboss-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "finalboss-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) ;; SPEEDRUNS ;; Restart current run - (((text-id speedrun-reset-current-run)) - (progress-fast-save-and-start-speedrun (the-as speedrun-category #f)) - ) + (((text-id speedrun-reset-current-run)) (progress-fast-save-and-start-speedrun (the-as speedrun-category #f))) ;; Full game runs - (((text-id speedrun-new-full-game)) - (progress-fast-save-and-start-speedrun (speedrun-category full-game)) - ) + (((text-id speedrun-new-full-game)) (progress-fast-save-and-start-speedrun (speedrun-category full-game))) ;; Individual Levels - (((text-id speedrun-il-training)) - (progress-fast-save-and-start-speedrun (speedrun-category il-training)) - ) - (((text-id speedrun-il-village1)) - (progress-fast-save-and-start-speedrun (speedrun-category il-village1)) - ) - (((text-id speedrun-il-beach)) - (progress-fast-save-and-start-speedrun (speedrun-category il-beach)) - ) - (((text-id speedrun-il-jungle)) - (progress-fast-save-and-start-speedrun (speedrun-category il-jungle)) - ) - (((text-id speedrun-il-misty)) - (progress-fast-save-and-start-speedrun (speedrun-category il-misty)) - ) - (((text-id speedrun-il-firecanyon)) - (progress-fast-save-and-start-speedrun (speedrun-category il-firecanyon)) - ) - (((text-id speedrun-il-village2)) - (progress-fast-save-and-start-speedrun (speedrun-category il-village2)) - ) - (((text-id speedrun-il-sunken)) - (progress-fast-save-and-start-speedrun (speedrun-category il-sunken)) - ) - (((text-id speedrun-il-swamp)) - (progress-fast-save-and-start-speedrun (speedrun-category il-swamp)) - ) - (((text-id speedrun-il-rolling)) - (progress-fast-save-and-start-speedrun (speedrun-category il-rolling)) - ) - (((text-id speedrun-il-ogre)) - (progress-fast-save-and-start-speedrun (speedrun-category il-ogre)) - ) - (((text-id speedrun-il-village3)) - (progress-fast-save-and-start-speedrun (speedrun-category il-village3)) - ) - (((text-id speedrun-il-snow)) - (progress-fast-save-and-start-speedrun (speedrun-category il-snow)) - ) - (((text-id speedrun-il-cave)) - (progress-fast-save-and-start-speedrun (speedrun-category il-cave)) - ) - (((text-id speedrun-il-lavatube)) - (progress-fast-save-and-start-speedrun (speedrun-category il-lavatube)) - ) - (((text-id speedrun-il-citadel)) - (progress-fast-save-and-start-speedrun (speedrun-category il-citadel)) - ) - (((text-id speedrun-new-game-plus)) - (progress-fast-save-and-start-speedrun (speedrun-category new-game-plus)) - ) - (((text-id speedrun-hub1-100)) - (progress-fast-save-and-start-speedrun (speedrun-category hub1-100)) - ) - (((text-id speedrun-hub2-100)) - (progress-fast-save-and-start-speedrun (speedrun-category hub2-100)) - ) - (((text-id speedrun-hub3-100)) - (progress-fast-save-and-start-speedrun (speedrun-category hub3-100)) - ) - (((text-id speedrun-all-cutscenes)) - (progress-fast-save-and-start-speedrun (speedrun-category all-cutscenes)) - ) - ) - (commit-to-file *pc-settings*) + (((text-id speedrun-il-training)) (progress-fast-save-and-start-speedrun (speedrun-category il-training))) + (((text-id speedrun-il-village1)) (progress-fast-save-and-start-speedrun (speedrun-category il-village1))) + (((text-id speedrun-il-beach)) (progress-fast-save-and-start-speedrun (speedrun-category il-beach))) + (((text-id speedrun-il-jungle)) (progress-fast-save-and-start-speedrun (speedrun-category il-jungle))) + (((text-id speedrun-il-misty)) (progress-fast-save-and-start-speedrun (speedrun-category il-misty))) + (((text-id speedrun-il-firecanyon)) (progress-fast-save-and-start-speedrun (speedrun-category il-firecanyon))) + (((text-id speedrun-il-village2)) (progress-fast-save-and-start-speedrun (speedrun-category il-village2))) + (((text-id speedrun-il-sunken)) (progress-fast-save-and-start-speedrun (speedrun-category il-sunken))) + (((text-id speedrun-il-swamp)) (progress-fast-save-and-start-speedrun (speedrun-category il-swamp))) + (((text-id speedrun-il-rolling)) (progress-fast-save-and-start-speedrun (speedrun-category il-rolling))) + (((text-id speedrun-il-ogre)) (progress-fast-save-and-start-speedrun (speedrun-category il-ogre))) + (((text-id speedrun-il-village3)) (progress-fast-save-and-start-speedrun (speedrun-category il-village3))) + (((text-id speedrun-il-snow)) (progress-fast-save-and-start-speedrun (speedrun-category il-snow))) + (((text-id speedrun-il-cave)) (progress-fast-save-and-start-speedrun (speedrun-category il-cave))) + (((text-id speedrun-il-lavatube)) (progress-fast-save-and-start-speedrun (speedrun-category il-lavatube))) + (((text-id speedrun-il-citadel)) (progress-fast-save-and-start-speedrun (speedrun-category il-citadel))) + (((text-id speedrun-new-game-plus)) (progress-fast-save-and-start-speedrun (speedrun-category new-game-plus))) + (((text-id speedrun-hub1-100)) (progress-fast-save-and-start-speedrun (speedrun-category hub1-100))) + (((text-id speedrun-hub2-100)) (progress-fast-save-and-start-speedrun (speedrun-category hub2-100))) + (((text-id speedrun-hub3-100)) (progress-fast-save-and-start-speedrun (speedrun-category hub3-100))) + (((text-id speedrun-all-cutscenes)) (progress-fast-save-and-start-speedrun (speedrun-category all-cutscenes)))) + (commit-to-file *pc-settings*) ;; other behaviors are hardcoded elsewhere because screw you. ) ((= (-> options (-> obj option-index) option-type) (game-option-type button-music)) @@ -1573,9 +1920,7 @@ (set! *progress-music* (-> obj option-index)) (push! obj) (sound-play "select-option") - (set! (-> obj next-display-state) (progress-screen flava-player)) - ) - ) + (set! (-> obj next-display-state) (progress-screen flava-player)))) ((= (-> options (-> obj option-index) option-type) (game-option-type button-flava)) ;; set flava (when (find-flava-log (progress-get-music-by-index *progress-music*) (the int (-> options (-> obj option-index) param1))) @@ -1584,305 +1929,230 @@ (set-setting *setting-control* obj 'music (progress-get-music-by-index *progress-music*) 0.0 0) (set! *progress-flava* (the int (-> options (-> obj option-index) param1))) (sound-group-continue (sound-group music)) - (sound-play "select-option") - ) - ) + (sound-play "select-option"))) ((= (-> options (-> obj option-index) option-type) (game-option-type resolution)) ;; resolution button. change resolution! (let ((newx (the int (-> options (-> obj option-index) param1))) (newy (the int (-> options (-> obj option-index) param2)))) - (set-size! *pc-settings* newx newy #t)) + (set-size! *pc-settings* newx newy #t)) (cpad-clear! 0 x) (cpad-clear! 0 circle) (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid)) - (commit-to-file *pc-settings*) - ) + (commit-to-file *pc-settings*)) ;; TODO - might be able to simplify this with the new on-change func ((= (-> options (-> obj option-index) option-type) (game-option-type controller)) (let ((controller-id (the int (-> options (-> obj option-index) param1)))) ;; NOTE - for now, we only manage port 0 in the progress menu - (pc-set-controller! controller-id 0) - ) + (pc-set-controller! controller-id 0)) (cpad-clear! 0 x) (cpad-clear! 0 circle) (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid)) - (commit-to-file *pc-settings*) - ) + (commit-to-file *pc-settings*)) ((= (-> options (-> obj option-index) option-type) (game-option-type monitor)) ;; monitor button - (let ((monitor (the int (-> options (-> obj option-index) param1)))) - (set-monitor! *pc-settings* monitor) - ) + (let ((monitor (the int (-> options (-> obj option-index) param1)))) (set-monitor! *pc-settings* monitor)) (cpad-clear! 0 x) (cpad-clear! 0 circle) (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid)) - (commit-to-file *pc-settings*) - ) + (commit-to-file *pc-settings*)) ((= (-> options (-> obj option-index) option-type) (game-option-type aspect-new)) ;; aspect ratio button. (let ((newx (the int (-> options (-> obj option-index) param1))) (newy (the int (-> options (-> obj option-index) param2)))) - (cond - ((= (-> options (-> obj option-index) name) (text-id fit-to-screen)) - (set-aspect! *pc-settings* 4 3) - (false! (-> *pc-settings* use-vis?)) - (set-aspect-ratio 'aspect4x3) - (true! (-> *pc-settings* aspect-ratio-auto?)) - ) - ((= newx -1.0) - (set-aspect! *pc-settings* 4 3) - (true! (-> *pc-settings* use-vis?)) - (set! (-> *setting-control* default aspect-ratio) 'aspect4x3) - (set-aspect-ratio 'aspect4x3) - ) - ((= newx -2.0) - (set-aspect! *pc-settings* 4 3) - (true! (-> *pc-settings* use-vis?)) - (set! (-> *setting-control* default aspect-ratio) 'aspect16x9) - (set-aspect-ratio 'aspect16x9) - ) - (else - (set-aspect! *pc-settings* newx newy)))) + (cond + ((= (-> options (-> obj option-index) name) (text-id fit-to-screen)) + (set-aspect! *pc-settings* 4 3) + (false! (-> *pc-settings* use-vis?)) + (set-aspect-ratio 'aspect4x3) + (true! (-> *pc-settings* aspect-ratio-auto?))) + ((= newx -1.0) + (set-aspect! *pc-settings* 4 3) + (true! (-> *pc-settings* use-vis?)) + (set! (-> *setting-control* default aspect-ratio) 'aspect4x3) + (set-aspect-ratio 'aspect4x3)) + ((= newx -2.0) + (set-aspect! *pc-settings* 4 3) + (true! (-> *pc-settings* use-vis?)) + (set! (-> *setting-control* default aspect-ratio) 'aspect16x9) + (set-aspect-ratio 'aspect16x9)) + (else (set-aspect! *pc-settings* newx newy)))) (cpad-clear! 0 x) (cpad-clear! 0 circle) (sound-play "cursor-options") (commit-to-file *pc-settings*) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (set! (-> obj next-display-state) (progress-screen invalid))) ((and (= (-> options (-> obj option-index) option-type) (game-option-type cheat-toggle)) (not (logtest? (-> *pc-settings* cheats-known) (ash 1 (the int (-> options (-> obj option-index) param1)))))) (sound-play "cursor-options") (if (and (= *cheat-mode* 'debug) (cpad-hold? 0 l1) (cpad-hold? 0 r1)) - (logior! (-> *pc-settings* cheats-known) (ash 1 (the int (-> options (-> obj option-index) param1))))) - ) + (logior! (-> *pc-settings* cheats-known) (ash 1 (the int (-> options (-> obj option-index) param1)))))) ((!= (-> options (-> obj option-index) option-type) (game-option-type yes-no)) ;; not yes-no ;; set backups! we're entering some toggle or whatever (case (-> options (-> obj option-index) option-type) (((game-option-type slider)) (set! (-> *progress-state* slider-backup) - (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - ) + (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))))) (((game-option-type language)) (set! (-> *progress-state* language-backup) - (-> (the-as (pointer language-enum) (-> options (-> obj option-index) value-to-modify)))) - ) + (-> (the-as (pointer language-enum) (-> options (-> obj option-index) value-to-modify))))) (((game-option-type on-off) (game-option-type normal-inverted)) (set! (-> *progress-state* on-off-backup) - (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) - ) - (((game-option-type confirmation)) - (set! (-> *progress-state* on-off-backup) #f)) + (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))))) + (((game-option-type confirmation)) (set! (-> *progress-state* on-off-backup) #f)) (((game-option-type binding-assignment)) (set! *progress-pad-timeout* (-> *display* real-frame-counter)) ;; Inform the C++ side to start listening for input (pc-set-waiting-for-bind! (-> options (-> obj option-index) bind-info device-type) (not (-> options (-> obj option-index) bind-info for-buttons?)) (-> options (-> obj option-index) bind-info analog-min-range?) - (-> options (-> obj option-index) bind-info input-idx)) - ) + (-> options (-> obj option-index) bind-info input-idx))) (((game-option-type cheat-toggle)) - (set! (-> *progress-state* on-off-backup) (logtest? (-> *pc-settings* cheats) (ash 1 (the int (-> options (-> obj option-index) param1))))) - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) (-> *progress-state* on-off-backup)) - ) + (set! (-> *progress-state* on-off-backup) + (logtest? (-> *pc-settings* cheats) (ash 1 (the int (-> options (-> obj option-index) param1))))) + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) + (-> *progress-state* on-off-backup))) (((game-option-type display-mode)) ;; display-mode just reuses language stuff (case (pc-get-display-mode) (('windowed #f) (set! (-> *progress-carousell* int-backup) 0)) (('fullscreen #t) (set! (-> *progress-carousell* int-backup) 1)) - (('borderless) (set! (-> *progress-carousell* int-backup) 2)) - ) - ) + (('borderless) (set! (-> *progress-carousell* int-backup) 2)))) (((game-option-type msaa)) (case (-> *pc-settings* gfx-msaa) ((2) (set! (-> *progress-carousell* int-backup) 1)) ((4) (set! (-> *progress-carousell* int-backup) 2)) ((8) (set! (-> *progress-carousell* int-backup) 3)) ((16) (set! (-> *progress-carousell* int-backup) 4)) - (else (set! (-> *progress-carousell* int-backup) 0)) - ) - ) + (else (set! (-> *progress-carousell* int-backup) 0)))) (((game-option-type lod-bg)) (case (-> *pc-settings* lod-force-tfrag) ((0) (set! (-> *progress-carousell* int-backup) 0)) ((1 2) (set! (-> *progress-carousell* int-backup) 1)) - (else (set! (-> *progress-carousell* int-backup) 2)) - ) - ) + (else (set! (-> *progress-carousell* int-backup) 2)))) (((game-option-type lod-fg)) (cond ((-> *pc-settings* ps2-lod-dist?) (set! (-> *progress-carousell* int-backup) 1)) - (else (set! (-> *progress-carousell* int-backup) 0)) - ) - ) + (else (set! (-> *progress-carousell* int-backup) 0)))) (((game-option-type speaker)) (case (-> *pc-settings* subtitle-speaker?) ((#t) (set! (-> *progress-carousell* int-backup) 0)) ((#f) (set! (-> *progress-carousell* int-backup) 1)) - (('auto) (set! (-> *progress-carousell* int-backup) 2)) - ) - ) + (('auto) (set! (-> *progress-carousell* int-backup) 2)))) (((game-option-type frame-rate)) (case (-> *pc-settings* target-fps) ((60) (set! (-> *progress-carousell* int-backup) 0)) ((100) (set! (-> *progress-carousell* int-backup) 1)) - ((150) (set! (-> *progress-carousell* int-backup) 2)) - ) - ) + ((150) (set! (-> *progress-carousell* int-backup) 2)))) (((game-option-type language-subtitles)) (let ((cur-lang (get-language-name (-> *pc-settings* subtitle-language)))) - (dotimes (i (-> *subtitle-languages* length)) - (if (= (-> *subtitle-languages* i) cur-lang) - (set! (-> *progress-carousell* int-backup) i)) - )) - ) + (dotimes (i (-> *subtitle-languages* length)) + (if (= (-> *subtitle-languages* i) cur-lang) (set! (-> *progress-carousell* int-backup) i))))) (((game-option-type language-text)) (let ((cur-lang (get-language-name (-> *pc-settings* text-language)))) - (dotimes (i (-> *text-languages* length)) - (if (= (-> *text-languages* i) cur-lang) - (set! (-> *progress-carousell* int-backup) i)) - )) - ) - ) + (dotimes (i (-> *text-languages* length)) + (if (= (-> *text-languages* i) cur-lang) (set! (-> *progress-carousell* int-backup) i)))))) (sound-play "select-option") (cpad-clear! 0 x) (cpad-clear! 0 circle) (set! (-> obj selected-option) #t) (case (-> options (-> obj option-index) option-type) (((game-option-type language)) - (set! (-> obj language-selection) (-> *setting-control* current language)) - (set! (-> obj language-direction) #t) - (set! (-> obj language-transition) #f) - (set! (-> obj language-x-offset) 0) - ) + (set! (-> obj language-selection) (-> *setting-control* current language)) + (set! (-> obj language-direction) #t) + (set! (-> obj language-transition) #f) + (set! (-> obj language-x-offset) 0)) (else - (set! (-> *progress-carousell* selection) (-> *progress-carousell* int-backup)) - (set! (-> *progress-carousell* direction) #t) - (set! (-> *progress-carousell* transition) #f) - (set! (-> *progress-carousell* x-offset) 0) - (case (-> options (-> obj option-index) option-type) - (((game-option-type display-mode)) (set! (-> *progress-carousell* current-carousell) *carousell-display-mode*)) - (((game-option-type msaa)) (set! (-> *progress-carousell* current-carousell) *carousell-msaa*)) - (((game-option-type lod-bg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*)) - (((game-option-type lod-fg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*)) - (((game-option-type speaker)) (set! (-> *progress-carousell* current-carousell) *carousell-speaker*)) - (((game-option-type frame-rate)) (set! (-> *progress-carousell* current-carousell) *carousell-frame-rate*)) - (((game-option-type language-subtitles)) (set! (-> *progress-carousell* current-carousell) *subtitle-languages*)) - (((game-option-type language-text)) (set! (-> *progress-carousell* current-carousell) *text-languages*)) - ) - ) - ) - ) - ) - ) + (set! (-> *progress-carousell* selection) (-> *progress-carousell* int-backup)) + (set! (-> *progress-carousell* direction) #t) + (set! (-> *progress-carousell* transition) #f) + (set! (-> *progress-carousell* x-offset) 0) + (case (-> options (-> obj option-index) option-type) + (((game-option-type display-mode)) (set! (-> *progress-carousell* current-carousell) *carousell-display-mode*)) + (((game-option-type msaa)) (set! (-> *progress-carousell* current-carousell) *carousell-msaa*)) + (((game-option-type lod-bg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*)) + (((game-option-type lod-fg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*)) + (((game-option-type speaker)) (set! (-> *progress-carousell* current-carousell) *carousell-speaker*)) + (((game-option-type frame-rate)) (set! (-> *progress-carousell* current-carousell) *carousell-frame-rate*)) + (((game-option-type language-subtitles)) (set! (-> *progress-carousell* current-carousell) *subtitle-languages*)) + (((game-option-type language-text)) (set! (-> *progress-carousell* current-carousell) *text-languages*)))))))) (else - ;; an option was selected. write stuff! - (if (= (-> options (-> obj option-index) option-type) (game-option-type confirmation)) - (if (-> *progress-state* on-off-backup) - (sound-play "menu-stats") - (sound-play "cursor-options")) + ;; an option was selected. write stuff! + (if (= (-> options (-> obj option-index) option-type) (game-option-type confirmation)) + (if (-> *progress-state* on-off-backup) (sound-play "menu-stats") (sound-play "cursor-options")) (sound-play "start-options")) - (set! (-> obj selected-option) #f) - (case (-> options (-> obj option-index) option-type) - (((game-option-type cheat-toggle)) - (let ((the-cheat (ash 1 (the int (-> options (-> obj option-index) param1))))) - (cond - ((-> (the (pointer symbol) (-> options (-> obj option-index) value-to-modify))) - (logior! (-> *pc-settings* cheats) the-cheat)) - (else - (logclear! (-> *pc-settings* cheats) the-cheat) - (when (and *target* (= the-cheat (pc-cheats invinc))) - (logclear! (-> *target* state-flags) (state-flags invulnerable))))) - ) - ) - (((game-option-type aspect-ratio)) - ;; aspect ratio is first written to the backup. so this is for applying the change if we went through with it. - (set! (-> *setting-control* default aspect-ratio) (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) - ) - (((game-option-type aspect-native)) - (set! (-> *pc-settings* use-vis?) (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) - (if (-> *pc-settings* use-vis?) - (set! (-> *setting-control* current aspect-ratio) #f) - (set-aspect! *pc-settings* (-> *pc-settings* aspect-custom-x) (-> *pc-settings* aspect-custom-y))) - ) - (((game-option-type display-mode)) - ;; same thing. - (case (-> *progress-carousell* int-backup) - ((0) (set-display-mode! *pc-settings* 'windowed #t)) - ((1) (set-display-mode! *pc-settings* 'fullscreen #t)) - ((2) (set-display-mode! *pc-settings* 'borderless #t)) - ) - ) - (((game-option-type msaa)) - (case (-> *progress-carousell* int-backup) - ((0) (set! (-> *pc-settings* gfx-msaa) 1)) - ((1) (set! (-> *pc-settings* gfx-msaa) 2)) - ((2) (set! (-> *pc-settings* gfx-msaa) 4)) - ((3) (set! (-> *pc-settings* gfx-msaa) 8)) - ((4) (set! (-> *pc-settings* gfx-msaa) 16)) - ) - ) - (((game-option-type lod-bg)) - (case (-> *progress-carousell* int-backup) - ((0) (set! (-> *pc-settings* lod-force-tfrag) 0) (set! (-> *pc-settings* lod-force-tie) 0)) - ((1) (set! (-> *pc-settings* lod-force-tfrag) 2) (set! (-> *pc-settings* lod-force-tie) 2)) - ((2) (set! (-> *pc-settings* lod-force-tfrag) 2) (set! (-> *pc-settings* lod-force-tie) 3)) - ) - ) - (((game-option-type lod-fg)) - (case (-> *progress-carousell* int-backup) - ((0) (set! (-> *pc-settings* lod-force-actor) 0) (set! (-> *pc-settings* ps2-lod-dist?) #f)) - ((1) (set! (-> *pc-settings* lod-force-actor) 0) (set! (-> *pc-settings* ps2-lod-dist?) #t)) - ) - ) - (((game-option-type language-subtitles)) - (let ((lang (assoc (the binteger (-> *subtitle-languages* (-> *progress-carousell* int-backup))) *language-remap-info-pc*))) - (set! (-> *pc-settings* subtitle-language) (the pc-language (/ (the int (cadr lang)) 8))) - ) - ) - (((game-option-type language-text)) - (let ((lang (assoc (the binteger (-> *text-languages* (-> *progress-carousell* int-backup))) *language-remap-info-pc*))) - (set! (-> *pc-settings* text-language) (the pc-language (/ (the int (cadr lang)) 8))) - ) - (if (not (-> *progress-carousell* transition)) - (load-level-text-files (-> obj display-level-index))) - ) - (((game-option-type speaker)) - ;; same thing. - (case (-> *progress-carousell* int-backup) - ((0) (set! (-> *pc-settings* subtitle-speaker?) #t)) - ((1) (set! (-> *pc-settings* subtitle-speaker?) #f)) - ((2) (set! (-> *pc-settings* subtitle-speaker?) 'auto)) - ) - ) - (((game-option-type frame-rate)) - (case (-> *progress-carousell* int-backup) - ((0) (set-frame-rate! *pc-settings* 60 #t)) - ((1) (set-frame-rate! *pc-settings* 100 #t)) - ((2) (set-frame-rate! *pc-settings* 150 #t)) - ) - (set-video-mode (-> *setting-control* default video-mode)) - ) - ) - ;; if the option has a `on-confirm` function, run it - (when (nonzero? (-> options (-> obj option-index) on-confirm)) - ((-> options (-> obj option-index) on-confirm))) - (commit-to-file *pc-settings*) - ) - ) - ) - ) - ) - ) - (none) - ) - -(defmethod respond-memcard progress ((obj progress)) + (set! (-> obj selected-option) #f) + (case (-> options (-> obj option-index) option-type) + (((game-option-type cheat-toggle)) + (let ((the-cheat (ash 1 (the int (-> options (-> obj option-index) param1))))) + (cond + ((-> (the (pointer symbol) (-> options (-> obj option-index) value-to-modify))) + (logior! (-> *pc-settings* cheats) the-cheat)) + (else + (logclear! (-> *pc-settings* cheats) the-cheat) + (when (and *target* (= the-cheat (pc-cheats invinc))) + (logclear! (-> *target* state-flags) (state-flags invulnerable))))))) + (((game-option-type aspect-ratio)) + ;; aspect ratio is first written to the backup. so this is for applying the change if we went through with it. + (set! (-> *setting-control* default aspect-ratio) + (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))))) + (((game-option-type aspect-native)) + (set! (-> *pc-settings* use-vis?) (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) + (if (-> *pc-settings* use-vis?) + (set! (-> *setting-control* current aspect-ratio) #f) + (set-aspect! *pc-settings* (-> *pc-settings* aspect-custom-x) (-> *pc-settings* aspect-custom-y)))) + (((game-option-type display-mode)) + ;; same thing. + (case (-> *progress-carousell* int-backup) + ((0) (set-display-mode! *pc-settings* 'windowed #t)) + ((1) (set-display-mode! *pc-settings* 'fullscreen #t)) + ((2) (set-display-mode! *pc-settings* 'borderless #t)))) + (((game-option-type msaa)) + (case (-> *progress-carousell* int-backup) + ((0) (set! (-> *pc-settings* gfx-msaa) 1)) + ((1) (set! (-> *pc-settings* gfx-msaa) 2)) + ((2) (set! (-> *pc-settings* gfx-msaa) 4)) + ((3) (set! (-> *pc-settings* gfx-msaa) 8)) + ((4) (set! (-> *pc-settings* gfx-msaa) 16)))) + (((game-option-type lod-bg)) + (case (-> *progress-carousell* int-backup) + ((0) (set! (-> *pc-settings* lod-force-tfrag) 0) (set! (-> *pc-settings* lod-force-tie) 0)) + ((1) (set! (-> *pc-settings* lod-force-tfrag) 2) (set! (-> *pc-settings* lod-force-tie) 2)) + ((2) (set! (-> *pc-settings* lod-force-tfrag) 2) (set! (-> *pc-settings* lod-force-tie) 3)))) + (((game-option-type lod-fg)) + (case (-> *progress-carousell* int-backup) + ((0) (set! (-> *pc-settings* lod-force-actor) 0) (set! (-> *pc-settings* ps2-lod-dist?) #f)) + ((1) (set! (-> *pc-settings* lod-force-actor) 0) (set! (-> *pc-settings* ps2-lod-dist?) #t)))) + (((game-option-type language-subtitles)) + (let ((lang (assoc (the binteger (-> *subtitle-languages* (-> *progress-carousell* int-backup))) *language-remap-info-pc*))) + (set! (-> *pc-settings* subtitle-language) (the pc-language (/ (the int (cadr lang)) 8))))) + (((game-option-type language-text)) + (let ((lang (assoc (the binteger (-> *text-languages* (-> *progress-carousell* int-backup))) *language-remap-info-pc*))) + (set! (-> *pc-settings* text-language) (the pc-language (/ (the int (cadr lang)) 8)))) + (if (not (-> *progress-carousell* transition)) (load-level-text-files (-> obj display-level-index)))) + (((game-option-type speaker)) + ;; same thing. + (case (-> *progress-carousell* int-backup) + ((0) (set! (-> *pc-settings* subtitle-speaker?) #t)) + ((1) (set! (-> *pc-settings* subtitle-speaker?) #f)) + ((2) (set! (-> *pc-settings* subtitle-speaker?) 'auto)))) + (((game-option-type frame-rate)) + (case (-> *progress-carousell* int-backup) + ((0) (set-frame-rate! *pc-settings* 60 #t)) + ((1) (set-frame-rate! *pc-settings* 100 #t)) + ((2) (set-frame-rate! *pc-settings* 150 #t))) + (set-video-mode (-> *setting-control* default video-mode)))) + ;; if the option has a `on-confirm` function, run it + (when (nonzero? (-> options (-> obj option-index) on-confirm)) + ((-> options (-> obj option-index) on-confirm))) + (commit-to-file *pc-settings*))))))) + (none)) + +(defmethod respond-memcard ((obj progress)) "logic for handling input in memcard screens." - (let ((s5-0 (-> obj card-info))) (when (and s5-0 (not (-> obj in-transition))) (when (or (cpad-pressed? 0 x) (cpad-pressed? 0 circle)) @@ -1895,15 +2165,8 @@ (when (nonzero? (-> s5-0 file (-> obj option-index) present)) (sound-play "start-options") (set! (-> *progress-state* which) (-> obj option-index)) - (set! (-> obj next-display-state) (progress-screen memcard-loading)) - ) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (set! (-> obj next-display-state) (progress-screen memcard-loading)))) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen save-game) (progress-screen save-game-title)) (cond ((< (-> obj option-index) 4) @@ -1911,93 +2174,62 @@ (set! (-> *progress-state* which) (-> obj option-index)) ;; save slot selected (if (zero? (-> s5-0 file (-> obj option-index) present)) - (set! (-> obj next-display-state) (progress-screen memcard-saving)) - (set! (-> obj next-display-state) (progress-screen memcard-data-exists)) - ) - ) + (set! (-> obj next-display-state) (progress-screen memcard-saving)) + (set! (-> obj next-display-state) (progress-screen memcard-data-exists)))) ;; continue without saving ((and (= (-> obj display-state) (progress-screen save-game-title)) (= (-> obj option-index) 4)) (sound-play "starts-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) (if (= (-> *pc-settings* speedrunner-mode?) #t) - ;; Start a new game differently if speedrunning mode is active - (speedrun-start-full-game-run) - ;; start the game normally - (initialize! *game-info* 'game (the-as game-save #f) "intro-start")) + ;; Start a new game differently if speedrunning mode is active + (speedrun-start-full-game-run) + ;; start the game normally + (initialize! *game-info* 'game (the-as game-save #f) "intro-start")) (set-master-mode 'game)) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen memcard-insert)) (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (set! (-> obj next-display-state) (progress-screen invalid))) (((progress-screen memcard-data-exists)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> obj next-display-state) (progress-screen memcard-saving)) - ) + (set! (-> obj next-display-state) (progress-screen memcard-saving))) (else - (sound-play "cursor-options") - (if (= (-> obj display-state-stack 0) (progress-screen title)) - (set! (-> obj next-display-state) (progress-screen save-game-title)) - (set! (-> obj next-display-state) (progress-screen save-game)) - ) - ) - ) - ) + (sound-play "cursor-options") + (if (= (-> obj display-state-stack 0) (progress-screen title)) + (set! (-> obj next-display-state) (progress-screen save-game-title)) + (set! (-> obj next-display-state) (progress-screen save-game)))))) (((progress-screen memcard-no-data)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> obj next-display-state) (progress-screen memcard-creating)) - ) + (set! (-> obj next-display-state) (progress-screen memcard-creating))) (else - (sound-play "cursor-options") - (sound-volume-off) - (set! (-> *game-info* mode) 'play) - ;; Start a new game differently if speedrunning mode is active - (cond ((-> *pc-settings* speedrunner-mode?) - (speedrun-start-full-game-run)) - ;; start the game normally - (else - (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) - (set-master-mode 'game) - ) - ) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) + (sound-play "cursor-options") + (sound-volume-off) + (set! (-> *game-info* mode) 'play) + ;; Start a new game differently if speedrunning mode is active + (cond + ((-> *pc-settings* speedrunner-mode?) (speedrun-start-full-game-run)) + ;; start the game normally + (else (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) + (set-master-mode 'game)))) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) (cond ((= (-> obj display-state-stack 0) (progress-screen title)) (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) ;; Start a new game differently if speedrunning mode is active - (cond ((-> *pc-settings* speedrunner-mode?) - (speedrun-start-full-game-run)) - ;; start the game normally - (else - (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) - (set-master-mode 'game) - ) - ((nonzero? (-> obj display-state-stack 0)) - (sound-play "start-options") - (set-master-mode 'game) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (cond + ((-> *pc-settings* speedrunner-mode?) (speedrun-start-full-game-run)) + ;; start the game normally + (else (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) + (set-master-mode 'game)) + ((nonzero? (-> obj display-state-stack 0)) (sound-play "start-options") (set-master-mode 'game)) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen memcard-error-loading) (progress-screen memcard-error-saving) (progress-screen memcard-error-formatting) @@ -2005,45 +2237,32 @@ (progress-screen memcard-auto-save-error) (progress-screen memcard-removed) (progress-screen auto-save) - (progress-screen memcard-auto-save-disabled) - ) + (progress-screen memcard-auto-save-disabled)) (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (set! (-> obj next-display-state) (progress-screen invalid))) (((progress-screen pal-change-to-60hz)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") (set! (-> *setting-control* default video-mode) (-> *progress-state* video-mode-choice)) (set! (-> obj video-mode-timeout) (-> *display* real-frame-counter)) - (set! (-> obj next-display-state) (progress-screen pal-now-60hz)) - ) + (set! (-> obj next-display-state) (progress-screen pal-now-60hz))) (else - (sound-play "cursor-options") - (set! (-> *progress-state* video-mode-choice) 'pal) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (sound-play "cursor-options") + (set! (-> *progress-state* video-mode-choice) 'pal) + (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen pal-now-60hz)) (cond ((not (-> *progress-state* yes-no-choice)) (set! (-> *progress-state* video-mode-choice) 'pal) (set! (-> *setting-control* default video-mode) (-> *progress-state* video-mode-choice)) - (sound-play "cursor-options") - ) - (else - (sound-play "start-options") - ) - ) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (sound-play "cursor-options")) + (else (sound-play "start-options"))) + (set! (-> obj next-display-state) (progress-screen invalid))) (((progress-screen no-disc) (progress-screen bad-disc)) (when (is-cd-in?) (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) + (set! (-> obj next-display-state) (progress-screen invalid)))) (((progress-screen quit)) (cond ((-> *progress-state* yes-no-choice) @@ -2051,88 +2270,54 @@ (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) - (initialize! *game-info* 'game (the-as game-save #f) "title-start") - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (initialize! *game-info* 'game (the-as game-save #f) "title-start")) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen memcard-format)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> obj next-display-state) (progress-screen memcard-formatting)) - ) + (set! (-> obj next-display-state) (progress-screen memcard-formatting))) ((= (-> obj display-state-stack 0) (progress-screen title)) (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) ;; Start a new game differently if speedrunning mode is active - (cond ((-> *pc-settings* speedrunner-mode?) - (speedrun-start-full-game-run)) - ;; start the game normally - (else - (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) - (set-master-mode 'game) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (cond + ((-> *pc-settings* speedrunner-mode?) (speedrun-start-full-game-run)) + ;; start the game normally + (else (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) + (set-master-mode 'game)) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen quit-title)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") (commit-to-file *pc-settings*) (sound-volume-off) - (kernel-shutdown) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (kernel-shutdown)) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen memcard-disable-auto-save)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") (set! (-> *setting-control* default auto-save) #f) - (set! (-> obj next-display-state) (progress-screen memcard-auto-save-disabled)) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) - ) - ) - ) - ) + (set! (-> obj next-display-state) (progress-screen memcard-auto-save-disabled))) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))))))) 0 - (none) - ) - + (none)) -(defmethod draw-options progress ((obj progress) (arg0 int) (arg1 int) (arg2 float)) +(defmethod draw-options ((obj progress) (arg0 int) (arg1 int) (arg2 float)) "common logic for drawing options menus." - (let ((options (-> *options-remap* (-> obj display-state)))) (when options ;; this menu has options to draw omg (let* ((line-amt (if (> (length options) PROGRESS_PC_PAGE_HEIGHT) (1- PROGRESS_PC_PAGE_HEIGHT) (length options))) - (y-off (- arg0 (/ (* arg1 line-amt) 2))) - (option-count 0) - (unkx 27) - (unk2 0) - (font (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))) - (locked-str (lookup-text! *common-text* (text-id locked) #f)) - ) + (y-off (- arg0 (/ (* arg1 line-amt) 2))) + (option-count 0) + (unkx 27) + (unk2 0) + (font (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))) + (locked-str (lookup-text! *common-text* (text-id locked) #f))) ;; set the common params for the text drawing (set-width! font 370) (set-height! font 25) @@ -2141,118 +2326,107 @@ (set! (-> obj particles 32 init-pos y) (the float (* 2 (- y-off 20)))) ;; when scrolling we draw an extra line (cond - ((progress-scrolling-down?) (set! y-off (+ (- y-off arg1) (* (the float arg1) (- 1.0 (-> *progress-scroll* transition)))))) - ((progress-scrolling-up?) (set! y-off (+ (- y-off arg1) (* (the float arg1) (-> *progress-scroll* transition))))) - ) + ((progress-scrolling-down?) + (set! y-off (+ (- y-off arg1) (* (the float arg1) (- 1.0 (-> *progress-scroll* transition)))))) + ((progress-scrolling-up?) (set! y-off (+ (- y-off arg1) (* (the float arg1) (-> *progress-scroll* transition)))))) (let ((draw-arrows (and (not (-> obj in-transition)) (= (-> obj next-state name) 'progress-normal) (> (length options) PROGRESS_PC_PAGE_HEIGHT) (< (mod (-> *display* real-frame-counter) (seconds 0.2)) (seconds 0.1)))) (draw-prev (< 0 *progress-scroll-start*)) (draw-next (> (length options) *progress-scroll-end*))) - (set! (-> obj particles 32 init-pos x) (the float (if (and draw-arrows draw-prev) - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ))) - (set! (-> obj particles 33 init-pos x) (the float (if (and draw-arrows draw-next) - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ))) - ) + (set! (-> obj particles 32 init-pos x) + (the float (if (and draw-arrows draw-prev) (- 195 (-> *progress-process* 0 left-x-offset)) -320))) + (set! (-> obj particles 33 init-pos x) + (the float (if (and draw-arrows draw-next) (- 195 (-> *progress-process* 0 left-x-offset)) -320)))) ;; cheating a bit and putting some screen-specific code here. it's not a big deal. (case (-> obj display-state) (((progress-screen music-player)) - (set-color! font (font-color default)) - (set-origin! font (- 17 (-> obj left-x-offset)) 14) - (set-scale! font (* 0.6 (-> obj transition-percentage-invert))) - (print-game-text (lookup-text! *common-text* (text-id select-level) #f) font #f (the int (* 128.0 (-> obj transition-percentage-invert))) 22) - ) + (set-color! font (font-color default)) + (set-origin! font (- 17 (-> obj left-x-offset)) 14) + (set-scale! font (* 0.6 (-> obj transition-percentage-invert))) + (print-game-text (lookup-text! *common-text* (text-id select-level) #f) + font + #f + (the int (* 128.0 (-> obj transition-percentage-invert))) + 22)) (((progress-screen flava-player)) - (set-color! font (font-color default)) - (set-origin! font (- 17 (-> obj left-x-offset)) 14) - (set-scale! font (* 0.6 (-> obj transition-percentage-invert))) - (print-game-text (lookup-text! *common-text* (text-id select-flava) #f) font #f (the int (* 128.0 (-> obj transition-percentage-invert))) 22) - ) - ) + (set-color! font (font-color default)) + (set-origin! font (- 17 (-> obj left-x-offset)) 14) + (set-scale! font (* 0.6 (-> obj transition-percentage-invert))) + (print-game-text (lookup-text! *common-text* (text-id select-flava) #f) + font + #f + (the int (* 128.0 (-> obj transition-percentage-invert))) + 22))) (dotimes (index (length options)) (let ((option-str (the string #f)) ;; the option text (option-x 17) (option-y y-off) - (locked? #f) - ) + (locked? #f)) ;; Check if the option should be disabled (when (and (nonzero? (-> options index option-disabled-func)) (!= (-> options index option-disabled-func) #f) ((-> options index option-disabled-func))) - (set! locked? #t)) + (set! locked? #t)) (case (-> options index option-type) (((game-option-type yes-no)) - ;; yes-no option. text is either '->YES<- NO' or 'YES ->NO<-', not the most robust but this option is a strange hack anyway. - (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))) - (set! option-str (string-format "~0L~S ~30L~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))) - ) - ) + ;; yes-no option. text is either '->YES<- NO' or 'YES ->NO<-', not the most robust but this option is a strange hack anyway. + (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))) + (set! option-str + (string-format "~0L~S ~30L~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))))) ;; menu option or simple button. just draw its text! (((game-option-type menu) (game-option-type button)) (if (nonzero? (-> options index name)) - (set! option-str (lookup-text! *common-text* (-> options index name) #f)) - (set! option-str #f)) - ;; if autosave disabled, update text and lock it - (when (and (not (-> *setting-control* default auto-save)) - (= (text-id disable-auto-save) (-> options index name))) - (set! option-str (lookup-text! *common-text* (text-id auto-save-disabled) #f)) - (true! locked?)) - ;; checkpoint-select only unlocked after beating finalboss - (when (and (not (task-closed? (game-task finalboss-movies) (task-status need-reminder))) - (= (text-id checkpoint-select) (-> options index name))) - (set! option-str (lookup-text! *common-text* (text-id cheat-req-beat-game) #f)) - (true! locked?)) - ) + (set! option-str (lookup-text! *common-text* (-> options index name) #f)) + (set! option-str #f)) + ;; if autosave disabled, update text and lock it + (when (and (not (-> *setting-control* default auto-save)) (= (text-id disable-auto-save) (-> options index name))) + (set! option-str (lookup-text! *common-text* (text-id auto-save-disabled) #f)) + (true! locked?)) + ;; checkpoint-select only unlocked after beating finalboss + (when (and (not (task-closed? (game-task finalboss-movies) (task-status need-reminder))) + (= (text-id checkpoint-select) (-> options index name))) + (set! option-str (lookup-text! *common-text* (text-id cheat-req-beat-game) #f)) + (true! locked?))) (((game-option-type button-music)) - ;; a button for the music player. has the text "locked" sometimes! - (if (and (nonzero? (-> options index name)) (find-music-log (progress-get-music-by-index index))) - (set! option-str (lookup-text! *common-text* (-> options index name) #f)) - (set! option-str locked-str) - ) - ) + ;; a button for the music player. has the text "locked" sometimes! + (if (and (nonzero? (-> options index name)) (find-music-log (progress-get-music-by-index index))) + (set! option-str (lookup-text! *common-text* (-> options index name) #f)) + (set! option-str locked-str))) (((game-option-type button-flava)) - ;; a button for the flava player. has the text "locked" sometimes! - (if (and (nonzero? (-> options index name)) (find-flava-log (progress-get-music-by-index *progress-music*) (the int (-> options index param1)))) - (set! option-str (lookup-text! *common-text* (-> options index name) #f)) - (set! option-str locked-str) - ) - ) + ;; a button for the flava player. has the text "locked" sometimes! + (if (and (nonzero? (-> options index name)) + (find-flava-log (progress-get-music-by-index *progress-music*) (the int (-> options index param1)))) + (set! option-str (lookup-text! *common-text* (-> options index name) #f)) + (set! option-str locked-str))) (((game-option-type resolution) (game-option-type aspect-new)) - ;; resolution settings - (set! option-str (string-format (lookup-text! *common-text* (-> options index name) #f) - (the int (-> options index param1)) (the int (-> options index param2)))) - ) + ;; resolution settings + (set! option-str + (string-format (lookup-text! *common-text* (-> options index name) #f) + (the int (-> options index param1)) + (the int (-> options index param2))))) (((game-option-type monitor)) - ;; monitor list - (if (nonzero? (-> options index name-override)) - (set! option-str - (string-format "~S (~D)" - (-> options index name-override) - (+ 1 (the int (-> options index param1))))) - (set! option-str - (string-format (lookup-text! *common-text* (-> options index name) #f) - (+ 1 (the int (-> options index param1)))))) - ) + ;; monitor list + (if (nonzero? (-> options index name-override)) + (set! option-str (string-format "~S (~D)" (-> options index name-override) (+ 1 (the int (-> options index param1))))) + (set! option-str + (string-format (lookup-text! *common-text* (-> options index name) #f) (+ 1 (the int (-> options index param1))))))) (((game-option-type controller)) - ;; controller list - (if (nonzero? (-> options index name-override)) - (set! option-str - (string-format "~S (~D)" - (-> options index name-override) - (+ 1 (the int (-> options index param1))))) - (set! option-str - (string-format (lookup-text! *common-text* (-> options index name) #f) - (+ 1 (the int (-> options index param1)))))) - ) + ;; controller list + (if (nonzero? (-> options index name-override)) + (set! option-str (string-format "~S (~D)" (-> options index name-override) (+ 1 (the int (-> options index param1))))) + (set! option-str + (string-format (lookup-text! *common-text* (-> options index name) #f) (+ 1 (the int (-> options index param1))))))) (else - (cond - ((and (-> obj selected-option) (= (-> obj option-index) index)) + (cond + ((and (-> obj selected-option) (= (-> obj option-index) index)) ;; this option is SELECTED! (set-color! font (font-color default)) (set! (-> font origin x) (the float (- option-x (-> obj left-x-offset)))) @@ -2273,156 +2447,124 @@ (print-game-text (string-format "~S (~4L~D~0L)" (-> options index name-override) time-left) font #f 128 22)) (print-game-text (lookup-text! *common-text* (-> options index name) #f) font #f 128 22)) (set! option-y (+ y-off 7)) - (case (-> options index option-type) - (((game-option-type slider)) - ;; draw a slider and its text. - ;; this ugliness is just decompiler stuff. all it does is fade the alpha according to value. - (let* ((v1-82 (the-as uint #x8000ffff)) - ;; calculate the percentage of the bar based on the actual range, instead of assuming 0-100 - ;; low = param1 / high = param2 - ;; (actual + abs(low)) / (high + abs(low)) = percentage - (percentage (/ (+ (-> (the-as (pointer float) (-> options index value-to-modify))) - (fabs (-> options index param1))) - (+ (-> options index param2) - (fabs (-> options index param1))))) - (a0-34 (logior (logand v1-82 -256) (shr (shl (the int (+ 64.0 (* 191.0 percentage))) 56) 56))) - (color (logior (logand a0-34 -65281) (shr (shl (shr (shl a0-34 56) 56) 56) 48))) - ) - (draw-percent-bar (- 75 (-> obj left-x-offset)) (+ y-off 8) percentage (the-as rgba color)) - (set! option-x (+ (the int (* 2.5 (* 100.0 percentage))) - -100)) - ) - (if (= (-> options index slider-show-decimal?) #t) - (set! option-str (string-format "~,,1f" (-> (the-as (pointer float) (-> options index value-to-modify))))) - (set! option-str (string-format "~D" (the int (-> (the-as (pointer float) (-> options index value-to-modify))))))) - ) - (((game-option-type on-off) - (game-option-type normal-inverted) - (game-option-type aspect-native) - ) - ;; on-off option or some other toggle. same logic as yes-no. changed to cut down code duping. - (let ((on-str (case (-> options index option-type) - (((game-option-type on-off) (game-option-type aspect-native)) - (lookup-text! *common-text* (text-id on) #f)) - (((game-option-type normal-inverted)) - (lookup-text! *common-text* (text-id inverted) #f)))) - (off-str (case (-> options index option-type) - (((game-option-type on-off) (game-option-type aspect-native)) - (lookup-text! *common-text* (text-id off) #f)) - (((game-option-type normal-inverted)) - (lookup-text! *common-text* (text-id normal) #f))))) - (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) - (set! option-str (string-format "~30L~S~0L ~S" on-str off-str)) - (set! option-str (string-format "~0L~S ~30L~S" on-str off-str)))) - ) - ;; the same as yes-no, but we aren't changing an underlying value. - (((game-option-type confirmation)) - (if (-> *progress-state* on-off-backup) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))) - (set! option-str (string-format "~0L~S ~30L~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))))) - (((game-option-type cheat-toggle)) - (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id on) #f) (lookup-text! *common-text* (text-id off) #f))) - (set! option-str (string-format "~0L~S ~30L~S" (lookup-text! *common-text* (text-id on) #f) (lookup-text! *common-text* (text-id off) #f))) - ) - ) - (((game-option-type binding-assignment)) - (let ((bind (pc-get-current-bind (-> options index bind-info) *pc-cpp-temp-string*))) - (cond - ((= bind #f) - (set! option-str (string-format "~S" (lookup-text! *common-text* (text-id input-opts-binds-unset) #f)))) - ((string= *pc-cpp-temp-string* "unknown") - (set! option-str (string-format "~S" (lookup-text! *common-text* (text-id input-opts-binds-unknown) #f)))) - (else - (set! option-str (string-format "~S" *pc-cpp-temp-string*)))))) - (((game-option-type display-mode) - (game-option-type msaa) - (game-option-type lod-bg) - (game-option-type lod-fg) - (game-option-type speaker) - (game-option-type frame-rate) - (game-option-type language-subtitles) - (game-option-type language-text) - ) - ;; crunched down to one generic function. - (progress-draw-carousell-from-string-list (-> *progress-carousell* current-carousell) font y-off (-> (the-as (pointer int) (-> options index value-to-modify)))) - ) - (((game-option-type language)) - ;; language carousell. who knew this could be so complicated. - (let ((old-lang (-> obj language-selection)) - (new-lang (-> (the-as (pointer language-enum) (-> options index value-to-modify)))) - (max-lang 6) - ) - (if (-> obj language-transition) - (seekl! (-> obj language-x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) - (when (>= (-> obj language-x-offset) 100) - (set! (-> obj language-selection) new-lang) - (set! old-lang new-lang) - (set! (-> obj language-transition) #f) - (set! (-> obj language-x-offset) 0) - ) - (set! (-> font origin y) (the float (+ y-off 3))) - (set-color! font (font-color progress-blue)) - 0 - (let ((next-lang (mod (+ old-lang 1) max-lang)) - (prev-lang (mod (+ max-lang -1 old-lang) max-lang)) - ;; these are used during the transition since it technically allows you to see 4 langs at once. - (next2-lang (mod (+ old-lang 2) max-lang)) - (prev2-lang (mod (+ max-lang -2 old-lang) max-lang)) - ) - (cond - ((-> obj language-direction) - (let ((a2-22 (- 200 (+ (-> obj language-x-offset) 100)))) - (print-language-name prev-lang font a2-22 #f) - ) - (set-color! font (font-color progress-blue)) - (let ((a2-23 (+ (-> obj language-x-offset) 100))) - (cond - ((< a2-23 150) - (print-language-name (the int next-lang) font a2-23 #t) - ) - (else - (let ((a2-24 (- 200 (-> obj language-x-offset)))) - (print-language-name prev2-lang font a2-24 #f) - ) - ) - ) - ) - ) - (else - (let ((a2-25 (+ (-> obj language-x-offset) 100))) - (cond - ((< a2-25 150) - (print-language-name prev-lang font a2-25 #f) - ) - (else - (let ((a2-26 (- 200 (-> obj language-x-offset)))) - (print-language-name (the int next2-lang) font a2-26 #t) - ) - ) - ) - ) - (set-color! font (font-color progress-blue)) - (let ((a2-27 (- 200 (+ (-> obj language-x-offset) 100)))) - (print-language-name (the int next-lang) font a2-27 #t) - ) - ) - ) - ) - (if (not (-> obj language-transition)) - (set-color! font (font-color progress-selected))) - (print-language-name (the-as int old-lang) font (-> obj language-x-offset) (-> obj language-direction)) - )) - (((game-option-type aspect-ratio)) - ;; same as on-off but checks a different symbol - (if (= (-> (the-as (pointer symbol) (-> options index value-to-modify))) 'aspect4x3) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id 4x3) #f) (lookup-text! *common-text* (text-id 16x9) #f))) - (set! option-str (string-format "~0L~S ~30L~S" (lookup-text! *common-text* (text-id 4x3) #f) (lookup-text! *common-text* (text-id 16x9) #f))) - ) - ) - ) - ) - (else + (case (-> options index option-type) + (((game-option-type slider)) + ;; draw a slider and its text. + ;; this ugliness is just decompiler stuff. all it does is fade the alpha according to value. + (let* ((v1-82 (the-as uint #x8000ffff)) + ;; calculate the percentage of the bar based on the actual range, instead of assuming 0-100 + ;; low = param1 / high = param2 + ;; (actual + abs(low)) / (high + abs(low)) = percentage + (percentage (/ (+ (-> (the-as (pointer float) (-> options index value-to-modify))) (fabs (-> options index param1))) + (+ (-> options index param2) (fabs (-> options index param1))))) + (a0-34 (logior (logand v1-82 -256) (shr (shl (the int (+ 64.0 (* 191.0 percentage))) 56) 56))) + (color (logior (logand a0-34 -65281) (shr (shl (shr (shl a0-34 56) 56) 56) 48)))) + (draw-percent-bar (- 75 (-> obj left-x-offset)) (+ y-off 8) percentage (the-as rgba color)) + (set! option-x (+ (the int (* 2.5 (* 100.0 percentage))) -100))) + (if (= (-> options index slider-show-decimal?) #t) + (set! option-str (string-format "~,,1f" (-> (the-as (pointer float) (-> options index value-to-modify))))) + (set! option-str (string-format "~D" (the int (-> (the-as (pointer float) (-> options index value-to-modify)))))))) + (((game-option-type on-off) (game-option-type normal-inverted) (game-option-type aspect-native)) + ;; on-off option or some other toggle. same logic as yes-no. changed to cut down code duping. + (let ((on-str (case (-> options index option-type) + (((game-option-type on-off) (game-option-type aspect-native)) (lookup-text! *common-text* (text-id on) #f)) + (((game-option-type normal-inverted)) (lookup-text! *common-text* (text-id inverted) #f)))) + (off-str (case (-> options index option-type) + (((game-option-type on-off) (game-option-type aspect-native)) (lookup-text! *common-text* (text-id off) #f)) + (((game-option-type normal-inverted)) (lookup-text! *common-text* (text-id normal) #f))))) + (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) + (set! option-str (string-format "~30L~S~0L ~S" on-str off-str)) + (set! option-str (string-format "~0L~S ~30L~S" on-str off-str))))) + ;; the same as yes-no, but we aren't changing an underlying value. + (((game-option-type confirmation)) + (if (-> *progress-state* on-off-backup) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))) + (set! option-str + (string-format "~0L~S ~30L~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))))) + (((game-option-type cheat-toggle)) + (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))) + (set! option-str + (string-format "~0L~S ~30L~S" + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))))) + (((game-option-type binding-assignment)) + (let ((bind (pc-get-current-bind (-> options index bind-info) *pc-cpp-temp-string*))) + (cond + ((= bind #f) (set! option-str (string-format "~S" (lookup-text! *common-text* (text-id input-opts-binds-unset) #f)))) + ((string= *pc-cpp-temp-string* "unknown") + (set! option-str (string-format "~S" (lookup-text! *common-text* (text-id input-opts-binds-unknown) #f)))) + (else (set! option-str (string-format "~S" *pc-cpp-temp-string*)))))) + (((game-option-type display-mode) + (game-option-type msaa) + (game-option-type lod-bg) + (game-option-type lod-fg) + (game-option-type speaker) + (game-option-type frame-rate) + (game-option-type language-subtitles) + (game-option-type language-text)) + ;; crunched down to one generic function. + (progress-draw-carousell-from-string-list (-> *progress-carousell* current-carousell) + font + y-off + (-> (the-as (pointer int) (-> options index value-to-modify))))) + (((game-option-type language)) + ;; language carousell. who knew this could be so complicated. + (let ((old-lang (-> obj language-selection)) + (new-lang (-> (the-as (pointer language-enum) (-> options index value-to-modify)))) + (max-lang 6)) + (if (-> obj language-transition) + (seekl! (-> obj language-x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) + (when (>= (-> obj language-x-offset) 100) + (set! (-> obj language-selection) new-lang) + (set! old-lang new-lang) + (set! (-> obj language-transition) #f) + (set! (-> obj language-x-offset) 0)) + (set! (-> font origin y) (the float (+ y-off 3))) + (set-color! font (font-color progress-blue)) + 0 + (let ((next-lang (mod (+ old-lang 1) max-lang)) + (prev-lang (mod (+ max-lang -1 old-lang) max-lang)) + ;; these are used during the transition since it technically allows you to see 4 langs at once. + (next2-lang (mod (+ old-lang 2) max-lang)) + (prev2-lang (mod (+ max-lang -2 old-lang) max-lang))) + (cond + ((-> obj language-direction) + (let ((a2-22 (- 200 (+ (-> obj language-x-offset) 100)))) (print-language-name prev-lang font a2-22 #f)) + (set-color! font (font-color progress-blue)) + (let ((a2-23 (+ (-> obj language-x-offset) 100))) + (cond + ((< a2-23 150) (print-language-name (the int next-lang) font a2-23 #t)) + (else (let ((a2-24 (- 200 (-> obj language-x-offset)))) (print-language-name prev2-lang font a2-24 #f)))))) + (else + (let ((a2-25 (+ (-> obj language-x-offset) 100))) + (cond + ((< a2-25 150) (print-language-name prev-lang font a2-25 #f)) + (else (let ((a2-26 (- 200 (-> obj language-x-offset)))) (print-language-name (the int next2-lang) font a2-26 #t))))) + (set-color! font (font-color progress-blue)) + (let ((a2-27 (- 200 (+ (-> obj language-x-offset) 100)))) (print-language-name (the int next-lang) font a2-27 #t))))) + (if (not (-> obj language-transition)) (set-color! font (font-color progress-selected))) + (print-language-name (the-as int old-lang) font (-> obj language-x-offset) (-> obj language-direction)))) + (((game-option-type aspect-ratio)) + ;; same as on-off but checks a different symbol + (if (= (-> (the-as (pointer symbol) (-> options index value-to-modify))) 'aspect4x3) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id 4x3) #f) + (lookup-text! *common-text* (text-id 16x9) #f))) + (set! option-str + (string-format "~0L~S ~30L~S" + (lookup-text! *common-text* (text-id 4x3) #f) + (lookup-text! *common-text* (text-id 16x9) #f))))))) + (else ;; this option is not selected (case (-> options index option-type) (((game-option-type slider) @@ -2434,148 +2576,113 @@ (game-option-type speaker) (game-option-type frame-rate) (game-option-type normal-inverted) - (game-option-type confirmation) - ) - ;; slider and aspect ratio options just show their text - (set! option-str (lookup-text! *common-text* (-> options index name) #f)) - ) + (game-option-type confirmation)) + ;; slider and aspect ratio options just show their text + (set! option-str (lookup-text! *common-text* (-> options index name) #f))) (((game-option-type on-off) (game-option-type aspect-native)) - ;; on-off options show their text + on or off - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) - (lookup-text! *common-text* (text-id on) #f) - (lookup-text! *common-text* (text-id off) #f) - ))) - ) + ;; on-off options show their text + on or off + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))))) (((game-option-type binding-assignment)) ;; binding assignment options show their input + the current binding (let ((bind (pc-get-current-bind (-> options index bind-info) *pc-cpp-temp-string*))) - (cond - ((= bind #f) - (set! option-str (string-format "~S: ~10L~S~0L" - (-> options index name-override) - (lookup-text! *common-text* (text-id input-opts-binds-unset) #f)))) - ((string= *pc-cpp-temp-string* "unknown") - (set! option-str (string-format "~S: ~10L~S~0L" - (-> options index name-override) - (lookup-text! *common-text* (text-id input-opts-binds-unknown) #f)))) - (else - (set! option-str (string-format "~S: ~10L~S~0L" - (-> options index name-override) - *pc-cpp-temp-string*)))))) + (cond + ((= bind #f) + (set! option-str + (string-format "~S: ~10L~S~0L" + (-> options index name-override) + (lookup-text! *common-text* (text-id input-opts-binds-unset) #f)))) + ((string= *pc-cpp-temp-string* "unknown") + (set! option-str + (string-format "~S: ~10L~S~0L" + (-> options index name-override) + (lookup-text! *common-text* (text-id input-opts-binds-unknown) #f)))) + (else (set! option-str (string-format "~S: ~10L~S~0L" (-> options index name-override) *pc-cpp-temp-string*)))))) (((game-option-type cheat-toggle)) - (cond - ((not (logtest? (-> *pc-settings* cheats-known) (ash 1 (the int (-> options index param1))))) + (cond + ((not (logtest? (-> *pc-settings* cheats-known) (ash 1 (the int (-> options index param1))))) (true! locked?) (case (ash 1 (the int (-> options index param1))) - (((pc-cheats eco-blue) - (pc-cheats eco-green) - (pc-cheats eco-red) - (pc-cheats eco-yellow) - (pc-cheats invinc) - (pc-cheats huge-head) - (pc-cheats mirror) - (pc-cheats no-tex) - ) - (set! option-str (lookup-text! *common-text* (text-id cheat-req-100-percent) #f))) - (((pc-cheats sky) - (pc-cheats sidekick-blue) - (pc-cheats tunes) - (pc-cheats big-head) - (pc-cheats small-head) - (pc-cheats big-fist) - (pc-cheats big-head-npc) - ) - (set! option-str (lookup-text! *common-text* (text-id cheat-req-beat-game) #f))) - (else - ;; (format 0 "weird case ~f #x~x~%" (-> options index param1) (ash 1 (the int (-> options index param1)))) - (set! option-str locked-str)) - ) - ) - (else - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (if (logtest? (-> *pc-settings* cheats) (ash 1 (the int (-> options index param1)))) - (lookup-text! *common-text* (text-id on) #f) - (lookup-text! *common-text* (text-id off) #f) - ))) - ) - ) - ) + (((pc-cheats eco-blue) + (pc-cheats eco-green) + (pc-cheats eco-red) + (pc-cheats eco-yellow) + (pc-cheats invinc) + (pc-cheats huge-head) + (pc-cheats mirror) + (pc-cheats no-tex)) + (set! option-str (lookup-text! *common-text* (text-id cheat-req-100-percent) #f))) + (((pc-cheats sky) + (pc-cheats sidekick-blue) + (pc-cheats tunes) + (pc-cheats big-head) + (pc-cheats small-head) + (pc-cheats big-fist) + (pc-cheats big-head-npc)) + (set! option-str (lookup-text! *common-text* (text-id cheat-req-beat-game) #f))) + (else + ;; (format 0 "weird case ~f #x~x~%" (-> options index param1) (ash 1 (the int (-> options index param1)))) + (set! option-str locked-str)))) + (else + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (if (logtest? (-> *pc-settings* cheats) (ash 1 (the int (-> options index param1)))) + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))))))) (((game-option-type language)) - ;; language options show their text + language name - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (lookup-text! *common-text* (-> *language-name-remap* (-> (the-as (pointer uint64) (-> options index value-to-modify)))) #f))) - ) + ;; language options show their text + language name + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (lookup-text! *common-text* + (-> *language-name-remap* (-> (the-as (pointer uint64) (-> options index value-to-modify)))) + #f)))) (((game-option-type language-subtitles)) - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (lookup-text! *common-text* (get-language-name (-> *pc-settings* subtitle-language)) #f))) - ) + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (lookup-text! *common-text* (get-language-name (-> *pc-settings* subtitle-language)) #f)))) (((game-option-type language-text)) - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (lookup-text! *common-text* (get-language-name (-> *pc-settings* text-language)) #f))) - ) - ) - ) - )) - ) + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (lookup-text! *common-text* (get-language-name (-> *pc-settings* text-language)) #f))))))))) (when (or (<= (length options) PROGRESS_PC_PAGE_HEIGHT) - (and (not (progress-scrolling?)) - (>= index *progress-scroll-start*) - (< index *progress-scroll-end*)) - (and (progress-scrolling-down?) - (>= index (1- *progress-scroll-start*)) - (< index *progress-scroll-end*)) - (and (progress-scrolling-up?) - (>= index *progress-scroll-start*) - (< index (1+ *progress-scroll-end*))) - ) - (when option-str - ;; draw the actual text! - (let ((f0-23 (-> obj transition-percentage-invert)) - (scroll-amt (-> *progress-scroll* transition))) - (cond - ((or (and (progress-scrolling-up?) (= index *progress-scroll-start*)) - (and (progress-scrolling-down?) (= index (1- *progress-scroll-end*)))) - ) - ((or (and (progress-scrolling-down?) (= index (1- *progress-scroll-start*))) - (and (progress-scrolling-up?) (= index *progress-scroll-end*))) - (set! scroll-amt (- 1.0 scroll-amt)) - ) - (else - (set! scroll-amt 1.0) - ) - ) - (set-color! font (cond - ((and (!= index (-> obj option-index)) - (or locked? (= locked-str option-str))) - ;; for "locked" options! - (font-color menu-invalid)) - ((and (= index (-> obj option-index)) - (not (or (progress-scrolling?) (-> obj in-transition)))) - (font-color progress-selected)) - (else - (font-color default)) - )) - (set! (-> font origin x) (the float (- option-x (-> obj left-x-offset)))) - (set! (-> font origin y) (the float (the int (* (the float option-y) (if (-> options index scale) - f0-23 - 1.0 - ))))) - (set-scale! font (* arg2 f0-23 scroll-amt)) - (print-game-text option-str font #f (the int (* 128.0 f0-23 scroll-amt)) 22) - ) - ) - (+! y-off arg1) - (+! option-count 1) - ) - )) - ) - ) - ) + (and (not (progress-scrolling?)) (>= index *progress-scroll-start*) (< index *progress-scroll-end*)) + (and (progress-scrolling-down?) (>= index (1- *progress-scroll-start*)) (< index *progress-scroll-end*)) + (and (progress-scrolling-up?) (>= index *progress-scroll-start*) (< index (1+ *progress-scroll-end*)))) + (when option-str + ;; draw the actual text! + (let ((f0-23 (-> obj transition-percentage-invert)) + (scroll-amt (-> *progress-scroll* transition))) + (cond + ((or (and (progress-scrolling-up?) (= index *progress-scroll-start*)) + (and (progress-scrolling-down?) (= index (1- *progress-scroll-end*))))) + ((or (and (progress-scrolling-down?) (= index (1- *progress-scroll-start*))) + (and (progress-scrolling-up?) (= index *progress-scroll-end*))) + (set! scroll-amt (- 1.0 scroll-amt))) + (else (set! scroll-amt 1.0))) + (set-color! font + (cond + ((and (!= index (-> obj option-index)) (or locked? (= locked-str option-str))) + ;; for "locked" options! + (font-color menu-invalid)) + ((and (= index (-> obj option-index)) (not (or (progress-scrolling?) (-> obj in-transition)))) + (font-color progress-selected)) + (else (font-color default)))) + (set! (-> font origin x) (the float (- option-x (-> obj left-x-offset)))) + (set! (-> font origin y) (the float (the int (* (the float option-y) (if (-> options index scale) f0-23 1.0))))) + (set-scale! font (* arg2 f0-23 scroll-amt)) + (print-game-text option-str font #f (the int (* 128.0 f0-23 scroll-amt)) 22))) + (+! y-off arg1) + (+! option-count 1))))))) 0 - (none) - ) - + (none)) (defun draw-memcard-speedrun-options ((obj progress) (arg0 font-context)) (set-scale! arg0 0.85) @@ -2585,7 +2692,9 @@ (set-color! arg0 (font-color progress-blue)) (set-height! arg0 20) (print-game-text-scaled (lookup-text! *common-text* (text-id speedrun-options-heading) #f) - (-> obj transition-percentage-invert) arg0 128) + (-> obj transition-percentage-invert) + arg0 + 128) (set-scale! arg0 0.6) (set-flags! arg0 (font-flags shadow kerning middle middle-vert large)) (set-origin! arg0 (- 20 (-> obj left-x-offset)) 60) @@ -2593,7 +2702,9 @@ (set-height! arg0 20) (set-color! arg0 (font-color progress-yellow)) (print-game-text-scaled (lookup-text! *common-text* (text-id speedrun-options-warning) #f) - (-> obj transition-percentage-invert) arg0 128) + (-> obj transition-percentage-invert) + arg0 + 128) 0) (defun draw-memcard-auto-save-disabled ((obj progress) (arg0 font-context)) @@ -2603,18 +2714,23 @@ (set-width! arg0 360) (set-height! arg0 20) (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-disabled-title) #f) - (-> obj transition-percentage-invert) arg0 128) + (-> obj transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin y) 72.0) (set-width! arg0 360) (set-height! arg0 60) (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-disabled-msg) #f) - (-> obj transition-percentage-invert) arg0 128) + (-> obj transition-percentage-invert) + arg0 + 128) (set-scale! arg0 0.65) (set! (-> arg0 origin y) 120.0) (set-height! arg0 60) (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) - (-> obj transition-percentage-invert) arg0 128) - + (-> obj transition-percentage-invert) + arg0 + 128) 0) (defun draw-memcard-disable-auto-save ((obj progress) (arg0 font-context)) @@ -2624,450 +2740,279 @@ (set-height! arg0 40) (set-flags! arg0 (font-flags shadow kerning middle middle-vert large)) (print-game-text-scaled (lookup-text! *common-text* (text-id disable-auto-save-query) #f) - (-> obj transition-percentage-invert) arg0 128) - + (-> obj transition-percentage-invert) + arg0 + 128) 0) -(defmethod draw-notice-screen progress ((obj progress)) +(defmethod draw-notice-screen ((obj progress)) (hide-progress-icons) (when *common-text* - (let ((a1-1 (new 'stack 'font-context *font-default-matrix* (- 70 (-> obj left-x-offset)) 10 0.0 - (font-color default) (font-flags shadow kerning)))) + (let ((a1-1 (new 'stack + 'font-context + *font-default-matrix* + (- 70 (-> obj left-x-offset)) + 10 + 0.0 + (font-color default) + (font-flags shadow kerning)))) (case (-> obj display-state) - (((progress-screen memcard-format)) - (draw-memcard-format obj a1-1) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) - (draw-memcard-storage-error obj a1-1) - ) - (((progress-screen memcard-data-exists)) - (draw-memcard-data-exists obj a1-1) - ) - (((progress-screen memcard-no-data)) - (draw-memcard-no-data obj a1-1) - ) + (((progress-screen memcard-format)) (draw-memcard-format obj a1-1)) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) + (draw-memcard-storage-error obj a1-1)) + (((progress-screen memcard-data-exists)) (draw-memcard-data-exists obj a1-1)) + (((progress-screen memcard-no-data)) (draw-memcard-no-data obj a1-1)) (((progress-screen memcard-loading) (progress-screen memcard-saving) (progress-screen memcard-formatting) - (progress-screen memcard-creating) - ) - (draw-memcard-accessing obj a1-1) - ) - (((progress-screen memcard-insert)) - (draw-memcard-insert obj a1-1) - ) + (progress-screen memcard-creating)) + (draw-memcard-accessing obj a1-1)) + (((progress-screen memcard-insert)) (draw-memcard-insert obj a1-1)) (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (draw-memcard-file-select obj a1-1) - ) - (((progress-screen memcard-auto-save-error)) - (draw-memcard-auto-save-error obj a1-1) - ) - (((progress-screen memcard-removed)) - (draw-memcard-removed obj a1-1) - ) + (draw-memcard-file-select obj a1-1)) + (((progress-screen memcard-auto-save-error)) (draw-memcard-auto-save-error obj a1-1)) + (((progress-screen memcard-removed)) (draw-memcard-removed obj a1-1)) (((progress-screen memcard-error-loading) (progress-screen memcard-error-saving) (progress-screen memcard-error-formatting) - (progress-screen memcard-error-creating) - ) - (draw-memcard-error obj a1-1) - ) - (((progress-screen auto-save)) - (draw-auto-save obj a1-1) - ) - (((progress-screen pal-change-to-60hz)) - (draw-pal-change-to-60hz obj a1-1) - ) - (((progress-screen pal-now-60hz)) - (draw-pal-now-60hz obj a1-1) - ) - (((progress-screen no-disc)) - (draw-no-disc obj a1-1) - ) - (((progress-screen bad-disc)) - (draw-bad-disc obj a1-1) - ) - (((progress-screen quit) (progress-screen quit-title)) - (draw-quit obj a1-1) - ) - (((progress-screen memcard-disable-auto-save)) - (draw-memcard-disable-auto-save obj a1-1) - ) - (((progress-screen memcard-auto-save-disabled)) - (draw-memcard-auto-save-disabled obj a1-1) - ) - (((progress-screen speedrun-options)) - (draw-memcard-speedrun-options obj a1-1) - ) - ) - ) - ) + (progress-screen memcard-error-creating)) + (draw-memcard-error obj a1-1)) + (((progress-screen auto-save)) (draw-auto-save obj a1-1)) + (((progress-screen pal-change-to-60hz)) (draw-pal-change-to-60hz obj a1-1)) + (((progress-screen pal-now-60hz)) (draw-pal-now-60hz obj a1-1)) + (((progress-screen no-disc)) (draw-no-disc obj a1-1)) + (((progress-screen bad-disc)) (draw-bad-disc obj a1-1)) + (((progress-screen quit) (progress-screen quit-title)) (draw-quit obj a1-1)) + (((progress-screen memcard-disable-auto-save)) (draw-memcard-disable-auto-save obj a1-1)) + (((progress-screen memcard-auto-save-disabled)) (draw-memcard-auto-save-disabled obj a1-1)) + (((progress-screen speedrun-options)) (draw-memcard-speedrun-options obj a1-1))))) 0 - (none) - ) - + (none)) ;; override the post handler for progress-normal (set! (-> progress-normal post) - (lambda :behavior progress () - (when (progress-scrolling?) - (seek! (-> *progress-scroll* transition) 1.0 (* (/ 1.75 512) (-> self transition-speed) (-> *display* time-adjust-ratio))) - ) - (when (!= (-> self display-state) (-> *progress-scroll* last-screen)) - (progress-scroll-reset) - (set! (-> *progress-scroll* last-screen) (-> self display-state)) - ) - ;; draw the menus!! - (let* ((a1-0 (-> self display-level-index)) - (gp-0 (-> *level-task-data* a1-0)) - (unk #t) - (stats? #f) - ) - (case (-> self display-state) - (((progress-screen fuel-cell)) - (set! stats? #t) - (draw-fuel-cell-screen self a1-0) - ) - (((progress-screen money)) - (set! stats? #t) - (draw-money-screen self a1-0) - ) - (((progress-screen buzzer)) - (set! stats? #t) - (draw-buzzer-screen self a1-0) - ) - (((progress-screen graphic-settings) - (progress-screen settings-title) - (progress-screen title) - (progress-screen sound-settings) - (progress-screen game-ps2-options) - (progress-screen resolution) - (progress-screen aspect-ratio) - (progress-screen secrets) - (progress-screen cheats) - (progress-screen monitor) - ) - (hide-progress-icons) - (draw-options self 115 25 0.82) - ) - (((progress-screen settings) - (progress-screen settings-title) - ) - (hide-progress-icons) - (draw-options self 115 25 0.78) - ) - (((progress-screen misc-options)) - (hide-progress-icons) - (draw-options self 115 25 0.79) - ) - (((progress-screen music-player)) - (hide-progress-icons) - (draw-options self 128 21 0.82) - ) - (((progress-screen flava-player)) - (hide-progress-icons) - (draw-options self 128 21 0.82) - ) - (((progress-screen speedrun-options)) - (hide-progress-icons) - (draw-notice-screen self) - (draw-options self 155 25 0.65) - ) - (((progress-screen camera-options) (progress-screen checkpoint-select) (progress-screen speedrun-il-options) (progress-screen speedrun-cat-ext-options)) - ;; camera options lines are a bit too big - (hide-progress-icons) - (draw-options self 115 25 0.65) - ) - (((progress-screen input-options) - (progress-screen select-controller) - (progress-screen controller-binds) - (progress-screen keyboard-binds) - (progress-screen mouse-binds) - (progress-screen controller-options) - (progress-screen mouse-options) - (progress-screen reassign-binds-options)) - (hide-progress-icons) - (draw-options self 115 25 0.65) - ) - (((progress-screen gfx-ps2-options)) - (hide-progress-icons) - (draw-options self 115 25 0.67) - ) - (((progress-screen game-settings)) - (hide-progress-icons) - (draw-options self 115 25 0.70) - ) - (((progress-screen memcard-removed) (progress-screen memcard-auto-save-error)) - (draw-notice-screen self) - (draw-options self 192 0 0.82) - ) - (((progress-screen memcard-no-data) (progress-screen memcard-auto-save-disabled)) - (draw-notice-screen self) - (draw-options self 165 0 0.82) - ) - (((progress-screen memcard-format)) - (draw-notice-screen self) - (draw-options self 172 0 0.82) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) - (draw-notice-screen self) - (draw-options self 195 0 0.82) - ) - (((progress-screen memcard-error-loading) - (progress-screen memcard-error-saving) - (progress-screen memcard-error-formatting) - (progress-screen memcard-error-creating) - (progress-screen memcard-auto-save-error) - (progress-screen auto-save) (progress-screen load-game) (progress-screen save-game) - ) - (draw-notice-screen self) - (draw-options self 190 0 0.82) - ) - (((progress-screen no-disc) (progress-screen bad-disc)) - (draw-notice-screen self) - (if (is-cd-in?) - (draw-options self 170 0 0.82) - ) - ) - (((progress-screen quit) - (progress-screen quit-title) - (progress-screen memcard-disable-auto-save)) - (draw-notice-screen self) - (draw-options self 110 0 0.82) - ) - (((progress-screen memcard-insert)) - (draw-notice-screen self) - (draw-options self 165 0 0.82) - ) - (((progress-screen memcard-data-exists)) - (draw-notice-screen self) - (draw-options self 168 0 0.82) - ) - (((progress-screen memcard-loading) - (progress-screen memcard-saving) - (progress-screen memcard-formatting) - (progress-screen memcard-creating) - ) - (draw-notice-screen self) - ) - (((progress-screen save-game-title)) - (draw-notice-screen self) - (draw-options self 169 15 0.6) - ) - (else - (format 0 "PROGRESS - You forgot to add a `progress-screen` case to draw options!")) - ) - (when stats? - (let* ((v1-98 (cond ((-> self stat-transition) 0) + (lambda :behavior progress () + (when (progress-scrolling?) + (seek! (-> *progress-scroll* transition) + 1.0 + (* (/ 1.75 512) (-> self transition-speed) (-> *display* time-adjust-ratio)))) + (when (!= (-> self display-state) (-> *progress-scroll* last-screen)) + (progress-scroll-reset) + (set! (-> *progress-scroll* last-screen) (-> self display-state))) + ;; draw the menus!! + (let* ((a1-0 (-> self display-level-index)) + (gp-0 (-> *level-task-data* a1-0)) + (unk #t) + (stats? #f)) + (case (-> self display-state) + (((progress-screen fuel-cell)) (set! stats? #t) (draw-fuel-cell-screen self a1-0)) + (((progress-screen money)) (set! stats? #t) (draw-money-screen self a1-0)) + (((progress-screen buzzer)) (set! stats? #t) (draw-buzzer-screen self a1-0)) + (((progress-screen graphic-settings) + (progress-screen settings-title) + (progress-screen title) + (progress-screen sound-settings) + (progress-screen game-ps2-options) + (progress-screen resolution) + (progress-screen aspect-ratio) + (progress-screen secrets) + (progress-screen cheats) + (progress-screen monitor)) + (hide-progress-icons) + (draw-options self 115 25 0.82)) + (((progress-screen settings) (progress-screen settings-title)) (hide-progress-icons) (draw-options self 115 25 0.78)) + (((progress-screen misc-options)) (hide-progress-icons) (draw-options self 115 25 0.79)) + (((progress-screen music-player)) (hide-progress-icons) (draw-options self 128 21 0.82)) + (((progress-screen flava-player)) (hide-progress-icons) (draw-options self 128 21 0.82)) + (((progress-screen speedrun-options)) (hide-progress-icons) (draw-notice-screen self) (draw-options self 155 25 0.65)) + (((progress-screen camera-options) + (progress-screen checkpoint-select) + (progress-screen speedrun-il-options) + (progress-screen speedrun-cat-ext-options)) + ;; camera options lines are a bit too big + (hide-progress-icons) + (draw-options self 115 25 0.65)) + (((progress-screen input-options) + (progress-screen select-controller) + (progress-screen controller-binds) + (progress-screen keyboard-binds) + (progress-screen mouse-binds) + (progress-screen controller-options) + (progress-screen mouse-options) + (progress-screen reassign-binds-options)) + (hide-progress-icons) + (draw-options self 115 25 0.65)) + (((progress-screen gfx-ps2-options)) (hide-progress-icons) (draw-options self 115 25 0.67)) + (((progress-screen game-settings)) (hide-progress-icons) (draw-options self 115 25 0.70)) + (((progress-screen memcard-removed) (progress-screen memcard-auto-save-error)) + (draw-notice-screen self) + (draw-options self 192 0 0.82)) + (((progress-screen memcard-no-data) (progress-screen memcard-auto-save-disabled)) + (draw-notice-screen self) + (draw-options self 165 0 0.82)) + (((progress-screen memcard-format)) (draw-notice-screen self) (draw-options self 172 0 0.82)) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) + (draw-notice-screen self) + (draw-options self 195 0 0.82)) + (((progress-screen memcard-error-loading) + (progress-screen memcard-error-saving) + (progress-screen memcard-error-formatting) + (progress-screen memcard-error-creating) + (progress-screen memcard-auto-save-error) + (progress-screen auto-save) + (progress-screen load-game) + (progress-screen save-game)) + (draw-notice-screen self) + (draw-options self 190 0 0.82)) + (((progress-screen no-disc) (progress-screen bad-disc)) + (draw-notice-screen self) + (if (is-cd-in?) (draw-options self 170 0 0.82))) + (((progress-screen quit) (progress-screen quit-title) (progress-screen memcard-disable-auto-save)) + (draw-notice-screen self) + (draw-options self 110 0 0.82)) + (((progress-screen memcard-insert)) (draw-notice-screen self) (draw-options self 165 0 0.82)) + (((progress-screen memcard-data-exists)) (draw-notice-screen self) (draw-options self 168 0 0.82)) + (((progress-screen memcard-loading) + (progress-screen memcard-saving) + (progress-screen memcard-formatting) + (progress-screen memcard-creating)) + (draw-notice-screen self)) + (((progress-screen save-game-title)) (draw-notice-screen self) (draw-options self 169 15 0.6)) + (else (format 0 "PROGRESS - You forgot to add a `progress-screen` case to draw options!"))) + (when stats? + (let* ((v1-98 (cond + ((-> self stat-transition) 0) ((= (-> self level-transition) 1) (- (-> self transition-offset))) - (else (-> self transition-offset)) - )) - (f30-0 (the-as float (if (-> self stat-transition) - 1.0 - (-> self transition-percentage-invert) - ))) - (s5-1 (new 'stack 'font-context *font-default-matrix* - (- 32 (-> self left-x-offset)) - (the int (* (+ 42.0 (the float (/ v1-98 2))) f30-0)) - 8325000.0 - (font-color progress-blue) - (font-flags shadow kerning) - )) - ) - (set-width! s5-1 328) - (set-height! s5-1 45) - (set! (-> s5-1 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled (lookup-text! *common-text* (-> gp-0 level-name-id) #f) f30-0 s5-1 (the int (* 128.0 f30-0))) - ) - ) - ) - (case (-> self display-state) - (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) - (draw-progress self) - ) - ) - (adjust-sprites self) - (adjust-icons self) - (none) - )) + (else (-> self transition-offset)))) + (f30-0 (the-as float (if (-> self stat-transition) 1.0 (-> self transition-percentage-invert)))) + (s5-1 (new 'stack + 'font-context + *font-default-matrix* + (- 32 (-> self left-x-offset)) + (the int (* (+ 42.0 (the float (/ v1-98 2))) f30-0)) + 8325000.0 + (font-color progress-blue) + (font-flags shadow kerning)))) + (set-width! s5-1 328) + (set-height! s5-1 45) + (set! (-> s5-1 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text-scaled (lookup-text! *common-text* (-> gp-0 level-name-id) #f) f30-0 s5-1 (the int (* 128.0 f30-0)))))) + (case (-> self display-state) + (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) (draw-progress self))) + (adjust-sprites self) + (adjust-icons self) + (none))) ;; override the enter handler for progress-going-out (set! (-> progress-going-out enter) - (lambda :behavior progress () - (sound-play "menu-close") - (hide-progress-icons) - (remove-setting! 'music) - (apply-settings *setting-control*) - (progress-reset-music-parms) - (commit-to-file *pc-settings*) - (set! (-> self particles 3 init-pos x) -320.0) - (set! (-> self particles 4 init-pos x) -320.0) - (set! (-> self particles 32 init-pos x) -320.0) - (set! (-> self particles 33 init-pos x) -320.0) - (case (-> self display-state) - (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (set! (-> self transition-speed) 30.0) - ) - ) - (none) - )) + (lambda :behavior progress () + (sound-play "menu-close") + (hide-progress-icons) + (remove-setting! 'music) + (apply-settings *setting-control*) + (progress-reset-music-parms) + (commit-to-file *pc-settings*) + (set! (-> self particles 3 init-pos x) -320.0) + (set! (-> self particles 4 init-pos x) -320.0) + (set! (-> self particles 32 init-pos x) -320.0) + (set! (-> self particles 33 init-pos x) -320.0) + (case (-> self display-state) + (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) + (set! (-> self transition-speed) 30.0))) + (none))) ;; these need to be overridden as well (set! (-> progress-going-out post) (-> progress-normal post)) + (set! (-> progress-coming-in post) (-> progress-normal post)) ;; override this as well... (set! (-> progress-normal code) - (lambda :behavior progress () - (loop - (when (and (cpad-hold? 0 l1) (cpad-hold? 0 r1) *cheat-mode*) - (when (and (< (-> self task-index) (-> *level-task-data* (-> self display-level-index) nb-of-tasks)) - (>= (-> self task-index) 0) - ) - (let ((gp-0 (-> *level-task-data* (-> self display-level-index) task-info (-> self task-index) task-id))) - (close-specific-task! gp-0 (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float gp-0)) - ) - ) - ) - (if (and (= (-> self display-state) (-> self next-display-state)) - (= (-> self display-level-index) (-> self next-level-index)) - ) - (seekl! - (-> self transition-offset) - 0 - (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) - (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) - 2 - 1 - ) - ) - ) - (seekl! - (-> self transition-offset) - 512 - (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) - (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) - 2 - 1 - ) - ) - ) - ) - (set-transition-progress! self (-> self transition-offset)) - (set! (-> self in-transition) (or (-> self force-transition) (nonzero? (-> self transition-offset)))) - (when (and (not (handle->process (-> *game-info* auto-save-proc))) - (or (-> self force-transition) (-> self in-transition)) - (>= (-> self transition-offset) (if (and (zero? (-> self level-transition)) - (nonzero? (-> self next-display-state)) - (!= (-> self next-display-state) 1) - (!= (-> self next-display-state) 2) - ) - 512 - 256 - ) - ) - ) - (if (>= (the-as int (-> self next-display-state)) 0) - (enter! self (-> self next-display-state) 0) - (pop! self) - ) - (set! (-> self display-level-index) (-> self next-level-index)) - (when (nonzero? (-> self level-transition)) - (set! (-> self task-index) (get-next-task-up -1 (-> self display-level-index))) - (case (-> self level-transition) - ((1) - (set! (-> self level-transition) 2) - ) - ((2) - (set! (-> self level-transition) 1) - ) - ) - ) - (set! (-> self force-transition) #f) - ) - (when (zero? (-> self transition-offset)) - (set! (-> self stat-transition) #f) - (set! (-> self level-transition) 0) - 0 - ) - (let ((gp-1 #f)) - (let ((v1-62 #f)) - (case (-> self display-state) - (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) - (let ((s5-0 (-> self display-level-index))) - (when (and (< (mod (-> *display* real-frame-counter) (seconds 0.2)) (seconds 0.1)) - (zero? (-> *progress-process* 0 in-out-position)) - (not (-> self in-transition)) - (zero? (-> self transition-offset)) - ) - (set! gp-1 (!= s5-0 (get-next-level-up s5-0))) - (set! v1-62 (!= s5-0 (get-next-level-down s5-0))) - ) - ) - ) - ) - (set! (-> self particles 3 init-pos x) (the float (if v1-62 - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ) - ) - ) - ) - (set! (-> self particles 4 init-pos x) (the float (if gp-1 - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ) - ) - ) - ) - (respond-common self) - (set! (-> self next-display-state) (set-memcard-screen self (-> self next-display-state))) - (let ((v1-74 (-> self display-state))) - (cond - ((or (= v1-74 (progress-screen fuel-cell)) - (or (= v1-74 (progress-screen money)) (= v1-74 (progress-screen buzzer))) - ) - (respond-progress self) - ) - ((or (= v1-74 (progress-screen memcard-no-space)) - (= v1-74 (progress-screen memcard-format)) - (= v1-74 (progress-screen memcard-data-exists)) - (= v1-74 (progress-screen memcard-insert)) - (= v1-74 (progress-screen load-game)) - (= v1-74 (progress-screen save-game)) - (= v1-74 (progress-screen save-game-title)) - (= v1-74 (progress-screen memcard-error-loading)) - (= v1-74 (progress-screen memcard-error-saving)) - (= v1-74 (progress-screen memcard-error-formatting)) - (= v1-74 (progress-screen memcard-error-creating)) - (= v1-74 (progress-screen memcard-auto-save-error)) - (= v1-74 (progress-screen memcard-removed)) - (= v1-74 (progress-screen memcard-no-data)) - (= v1-74 (progress-screen memcard-not-inserted)) - (= v1-74 (progress-screen memcard-not-formatted)) - (= v1-74 (progress-screen auto-save)) - (= v1-74 (progress-screen pal-change-to-60hz)) - (= v1-74 (progress-screen pal-now-60hz)) - (= v1-74 (progress-screen no-disc)) - (= v1-74 (progress-screen bad-disc)) - (= v1-74 (progress-screen quit)) - (= v1-74 (progress-screen quit-title)) - (= v1-74 (progress-screen memcard-auto-save-disabled)) - (= v1-74 (progress-screen memcard-disable-auto-save)) - ) - (respond-memcard self) - ) - ) - ) - (suspend) - ) - (none) - ) - ) + (lambda :behavior progress () + (loop + (when (and (cpad-hold? 0 l1) (cpad-hold? 0 r1) *cheat-mode*) + (when (and (< (-> self task-index) (-> *level-task-data* (-> self display-level-index) nb-of-tasks)) + (>= (-> self task-index) 0)) + (let ((gp-0 (-> *level-task-data* (-> self display-level-index) task-info (-> self task-index) task-id))) + (close-specific-task! gp-0 (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float gp-0))))) + (if (and (= (-> self display-state) (-> self next-display-state)) + (= (-> self display-level-index) (-> self next-level-index))) + (seekl! (-> self transition-offset) + 0 + (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) + (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) 2 1))) + (seekl! (-> self transition-offset) + 512 + (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) + (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) 2 1)))) + (set-transition-progress! self (-> self transition-offset)) + (set! (-> self in-transition) (or (-> self force-transition) (nonzero? (-> self transition-offset)))) + (when (and (not (handle->process (-> *game-info* auto-save-proc))) + (or (-> self force-transition) (-> self in-transition)) + (>= (-> self transition-offset) + (if (and (zero? (-> self level-transition)) + (nonzero? (-> self next-display-state)) + (!= (-> self next-display-state) 1) + (!= (-> self next-display-state) 2)) + 512 + 256))) + (if (>= (the-as int (-> self next-display-state)) 0) (enter! self (-> self next-display-state) 0) (pop! self)) + (set! (-> self display-level-index) (-> self next-level-index)) + (when (nonzero? (-> self level-transition)) + (set! (-> self task-index) (get-next-task-up -1 (-> self display-level-index))) + (case (-> self level-transition) + ((1) (set! (-> self level-transition) 2)) + ((2) (set! (-> self level-transition) 1)))) + (set! (-> self force-transition) #f)) + (when (zero? (-> self transition-offset)) + (set! (-> self stat-transition) #f) + (set! (-> self level-transition) 0) + 0) + (let ((gp-1 #f)) + (let ((v1-62 #f)) + (case (-> self display-state) + (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) + (let ((s5-0 (-> self display-level-index))) + (when (and (< (mod (-> *display* real-frame-counter) (seconds 0.2)) (seconds 0.1)) + (zero? (-> *progress-process* 0 in-out-position)) + (not (-> self in-transition)) + (zero? (-> self transition-offset))) + (set! gp-1 (!= s5-0 (get-next-level-up s5-0))) + (set! v1-62 (!= s5-0 (get-next-level-down s5-0))))))) + (set! (-> self particles 3 init-pos x) (the float (if v1-62 (- 195 (-> *progress-process* 0 left-x-offset)) -320)))) + (set! (-> self particles 4 init-pos x) (the float (if gp-1 (- 195 (-> *progress-process* 0 left-x-offset)) -320)))) + (respond-common self) + (set! (-> self next-display-state) (set-memcard-screen self (-> self next-display-state))) + (let ((v1-74 (-> self display-state))) + (cond + ((or (= v1-74 (progress-screen fuel-cell)) (or (= v1-74 (progress-screen money)) (= v1-74 (progress-screen buzzer)))) + (respond-progress self)) + ((or (= v1-74 (progress-screen memcard-no-space)) + (= v1-74 (progress-screen memcard-format)) + (= v1-74 (progress-screen memcard-data-exists)) + (= v1-74 (progress-screen memcard-insert)) + (= v1-74 (progress-screen load-game)) + (= v1-74 (progress-screen save-game)) + (= v1-74 (progress-screen save-game-title)) + (= v1-74 (progress-screen memcard-error-loading)) + (= v1-74 (progress-screen memcard-error-saving)) + (= v1-74 (progress-screen memcard-error-formatting)) + (= v1-74 (progress-screen memcard-error-creating)) + (= v1-74 (progress-screen memcard-auto-save-error)) + (= v1-74 (progress-screen memcard-removed)) + (= v1-74 (progress-screen memcard-no-data)) + (= v1-74 (progress-screen memcard-not-inserted)) + (= v1-74 (progress-screen memcard-not-formatted)) + (= v1-74 (progress-screen auto-save)) + (= v1-74 (progress-screen pal-change-to-60hz)) + (= v1-74 (progress-screen pal-now-60hz)) + (= v1-74 (progress-screen no-disc)) + (= v1-74 (progress-screen bad-disc)) + (= v1-74 (progress-screen quit)) + (= v1-74 (progress-screen quit-title)) + (= v1-74 (progress-screen memcard-auto-save-disabled)) + (= v1-74 (progress-screen memcard-disable-auto-save))) + (respond-memcard self)))) + (suspend)) + (none))) diff --git a/goal_src/jak1/pc/subtitle.gc b/goal_src/jak1/pc/subtitle.gc index dba19c17b0..abad192f8d 100644 --- a/goal_src/jak1/pc/subtitle.gc +++ b/goal_src/jak1/pc/subtitle.gc @@ -1,12 +1,9 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/entity/ambient.gc") (require "pc/pckernel.gc") - #| - Code for subtitles for the PC port. A PC actor pool is provided, and the subtitle process lives there. It automatically detects the currently playing cutscene and plays the subtitles for it on channel 0. The other two channels are for hints, first checked automatically by name, then by text ID. @@ -16,28 +13,26 @@ heap. In Jak 2, the subtitles are stored directly within the .STR files. We don't have that luxury here, unfortunately. - - |# - +|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defconstant PC_SUBTITLE_FILE_SIZE (* 256 1024)) ;; 256K heap for subtitles. adjust later if necessary. + (defconstant PC_SUBTITLE_FILE_NAME "subtit") + (defconstant PC_SUB_DBG_Y 32) -(defconstant PC_SUB_DBG_CHECK_GROUP_SIZE 22) -(defglobalconstant PC_SUBTITLE_DEBUG #f) +(defconstant PC_SUB_DBG_CHECK_GROUP_SIZE 22) +(defglobalconstant PC_SUBTITLE_DEBUG #f) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; types and enums ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;;;------------------------ ;; data ;;;------------------------ @@ -45,7 +40,11 @@ ;; enum for the subtitle channels, no more than 2 bytes! (defenum pc-subtitle-channel :type int16 - (invalid -1) (movie 0) (hint 1) (hint-named 2)) + (invalid -1) + (movie 0) + (hint 1) + (hint-named 2)) + (defconstant SUBTITLE_CHANNEL_COUNT 3) (defenum pc-subtitle-flags @@ -56,170 +55,116 @@ ;; information about a single line of subtitles (deftype subtitle-keyframe (structure) - ( - (frame int32) ;; the frame to play the subtitle line on - (string string) ;; the text for the subtitle line - (speaker string) ;; name of the speaker. leave blank for no speaker. - (flags pc-subtitle-flags) ;; flags + ((frame int32) ;; the frame to play the subtitle line on + (string string) ;; the text for the subtitle line + (speaker string) ;; name of the speaker. leave blank for no speaker. + (flags pc-subtitle-flags) ;; flags ) - :pack-me - ) + :pack-me) ;; an individual entry to a subtitle text making up a scene, comprised of a series of keyframes (frame+line of text) (deftype subtitle-text (structure) - ( - ;; the channel to play the text on, useful for lookup since it can also be used to tell subtitle types apart - (kind pc-subtitle-channel) + (;; the channel to play the text on, useful for lookup since it can also be used to tell subtitle types apart + (kind pc-subtitle-channel) ;; the amount of keyframes/lines - (length int16) + (length int16) ;; data (keyframes (inline-array subtitle-keyframe)) - ;; now we store a way to identify and lookup the subtitles. - ;; the name of the spool-anim - (name string :offset 8) + (name string :offset 8) ;; the text-id if this is for a hint - (id text-id :offset 12) + (id text-id :offset 12) ;; the 8-character name for an ambient or hint - (hash uint64 :offset 8) - - - ) - - :size-assert #x10 ;; compact! + (hash uint64 :offset 8)) + :size-assert #x10 + ;; compact! ) ;; the global subtitle text info bank (deftype subtitle-text-info (basic) - ((length int32) - (lang pc-language) - (dummy int32) - (data subtitle-text :inline :dynamic) - ) - + ((length int32) + (lang pc-language) + (dummy int32) + (data subtitle-text :inline :dynamic)) (:methods - (get-scene-by-name (_type_ pc-subtitle-channel string) subtitle-text) - (get-scene-by-text-id (_type_ pc-subtitle-channel text-id) subtitle-text) - ) - ) - + (get-scene-by-name (_type_ pc-subtitle-channel string) subtitle-text) + (get-scene-by-text-id (_type_ pc-subtitle-channel text-id) subtitle-text))) (defmacro subtitle-flags? (sub &rest flags) `(logtest? (-> ,sub flags) (pc-subtitle-flags ,@flags))) - - ;;;---------------------------------- ;; process type ;;;---------------------------------- - ;; graphic parameters for subtitles (deftype subtitle-bank (structure) - ( - (scale float) - (width float) - (height float) - (lines float) + ((scale float) + (width float) + (height float) + (lines float) (notice-height float) - (hint-height float) - ) - - ) + (hint-height float))) (define *SUBTITLE-bank* - (new 'static 'subtitle-bank - :scale 0.5 - :width 0.87 - :height 0.75 - :lines 2.0 - :notice-height 0.2 - :hint-height 0.8 - )) + (new 'static 'subtitle-bank :scale 0.5 :width 0.87 :height 0.75 :lines 2.0 :notice-height 0.2 :hint-height 0.8)) ;; the subtitle process! it lives on the PC actor pool and awaits for incoming subtitle messages, or a movie (deftype subtitle (process) - ( - (font font-context) ;; the font to use for the subtitles. - (bank-backup subtitle-bank :inline) ;; debug backup. - - (state-time time-frame) ;; a timestamp, used for notices - (notice-id text-id) ;; what notice text to display at the top of the screen - - ( spool-name string) - (old-spool-name string) - (text-id text-id) - (cur-channel pc-subtitle-channel) - + ((font font-context) ;; the font to use for the subtitles. + (bank-backup subtitle-bank :inline) ;; debug backup. + (state-time time-frame) ;; a timestamp, used for notices + (notice-id text-id) ;; what notice text to display at the top of the screen + (spool-name string) + (old-spool-name string) + (text-id text-id) + (cur-channel pc-subtitle-channel) ;; debug things - (debug-lines? symbol) - (checking-lines? symbol) - (current-debug-scene int16) - (current-debug-line int16) - - (want-subtitle subtitle-keyframe) ;; the subtitle we want to display - (hint-subtitle? symbol) - ) - + (debug-lines? symbol) + (checking-lines? symbol) + (current-debug-scene int16) + (current-debug-line int16) + (want-subtitle subtitle-keyframe) ;; the subtitle we want to display + (hint-subtitle? symbol)) (:methods - (subtitle-format (_type_ subtitle-keyframe) string) - ) + (subtitle-format (_type_ subtitle-keyframe) string)) (:states - subtitle-debug - subtitle-debug-checking-lines) - ) - - - + subtitle-debug + subtitle-debug-checking-lines)) ;;;---------------------------------------------- ;; globals ;;;---------------------------------------------- - ;; the subtitle process. (define *subtitle* (the (pointer subtitle) #f)) ;; subtitle text data (define *subtitle-text* (the subtitle-text-info #f)) -(kheap-alloc (define *subtitle-text-heap* (new 'global 'kheap)) PC_SUBTITLE_FILE_SIZE) - +(kheap-alloc (define *subtitle-text-heap* (new 'global 'kheap)) PC_SUBTITLE_FILE_SIZE) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; loading files ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmethod get-scene-by-name subtitle-text-info ((obj subtitle-text-info) (kind pc-subtitle-channel) (name string)) +(defmethod get-scene-by-name ((obj subtitle-text-info) (kind pc-subtitle-channel) (name string)) "get a subtitle scene info with the corresponding name. #f = none found" - ;; invalid name so return invalid scene. - (if (not name) - (return (the subtitle-text #f))) - + (if (not name) (return (the subtitle-text #f))) (dotimes (i (-> obj length)) ;; name and kind matches, return that! - (when (and (or (= kind (pc-subtitle-channel invalid)) (= kind (-> obj data i kind))) - (string= (-> obj data i name) name)) - (return (-> obj data i)) - ) - ) - + (when (and (or (= kind (pc-subtitle-channel invalid)) (= kind (-> obj data i kind))) (string= (-> obj data i name) name)) + (return (-> obj data i)))) (the subtitle-text #f)) -(defmethod get-scene-by-text-id subtitle-text-info ((obj subtitle-text-info) (kind pc-subtitle-channel) (id text-id)) +(defmethod get-scene-by-text-id ((obj subtitle-text-info) (kind pc-subtitle-channel) (id text-id)) "get a subtitle scene info with the corresponding name. #f = none found" - (dotimes (i (-> obj length)) ;; name and kind matches, return that! - (when (and (or (= kind (pc-subtitle-channel invalid)) (= kind (-> obj data i kind))) - (= (-> obj data i id) id)) - (return (-> obj data i)) - ) - ) - + (when (and (or (= kind (pc-subtitle-channel invalid)) (= kind (-> obj data i kind))) (= (-> obj data i id) id)) + (return (-> obj data i)))) (the subtitle-text #f)) (defun load-subtitle-text-info ((txt-name string) (curr-text symbol) (heap kheap)) @@ -227,134 +172,101 @@ txt-name = language-agnostic file name curr-text = a symbol to a subtitle-text-info to link the file to heap = the text heap to load the file onto" - (let ((heap-sym-heap (the-as subtitle-text-info (-> curr-text value))) (lang (-> *pc-settings* subtitle-language)) (load-status 0) (heap-free (&- (-> heap top) (the-as uint (-> heap base))))) - ;; current text has nothing loaded, or language doesn't match. - (when (or (= heap-sym-heap #f) - (!= (-> heap-sym-heap lang) lang) - ) + (when (or (= heap-sym-heap #f) (!= (-> heap-sym-heap lang) lang)) ;; so reload. - ;; reset the text heap. (kheap-reset heap) - ;; try to load load... - (while (not (str-load (string-format "~D~S.TXT" lang txt-name) -1 (logand -64 (&+ (-> heap current) 63)) (&- (-> heap top) (-> heap current)))) - (return 0) - ) + (while (not (str-load (string-format "~D~S.TXT" lang txt-name) + -1 + (logand -64 (&+ (-> heap current) 63)) + (&- (-> heap top) (-> heap current)))) + (return 0)) ;; load succeeded. check status. - (label retry) (let ((status (str-load-status (the-as (pointer int32) (& load-status))))) (when (= status 'error) (format 0 "Error loading subtitle~%") (return 0) - (goto loaded) - ) + (goto loaded)) (cond - ((>= load-status (+ heap-free -300)) - (format 0 "Game subtitle heap overrun!~%") - (return 0) - ) + ((>= load-status (+ heap-free -300)) (format 0 "Game subtitle heap overrun!~%") (return 0)) ((= status 'busy) ;; still loading. - (goto retry) - ) - ) - ) + (goto retry)))) (label loaded) - ;; link the text file! (let ((new-mem (logand -64 (&+ (-> heap current) 63)))) - (flush-cache 0) - (set! (-> curr-text value) (link new-mem (-> (string-format "~D~S.TXT" lang txt-name) data) load-status heap 0)) - ) + (flush-cache 0) + (set! (-> curr-text value) (link new-mem (-> (string-format "~D~S.TXT" lang txt-name) data) load-status heap 0))) ;; if linking failed just make the text invalid. - (if (<= (the-as int (-> curr-text value)) 0) - (set! (-> curr-text value) (the-as object #f)) - ) - )) + (if (<= (the-as int (-> curr-text value)) 0) (set! (-> curr-text value) (the-as object #f))))) 0) (defun load-level-subtitle-files ((idx int)) "Load the subtitle files needed for level idx. This function made more sense back when text files were split up, but in the end they put everything in a single text group and file." - ;; just load common. (if (or *level-text-file-load-flag* (>= idx 0)) - (load-subtitle-text-info PC_SUBTITLE_FILE_NAME '*subtitle-text* *subtitle-text-heap*) - ) - + (load-subtitle-text-info PC_SUBTITLE_FILE_NAME '*subtitle-text* *subtitle-text-heap*)) (none)) - (defmacro reload-subtitles () "rebuild and reload subtitles." `(begin - (asm-text-file subtitle :files ("game/assets/game_subtitle.gp")) - (if *subtitle-text* - (+! (-> *subtitle-text* lang) 1)) - (load-level-subtitle-files 0))) + (asm-text-file subtitle :files ("game/assets/game_subtitle.gp")) + (if *subtitle-text* (+! (-> *subtitle-text* lang) 1)) + (load-level-subtitle-files 0))) (defmacro reload-text () "rebuild and reload text." `(begin - (mng) - (if *common-text* - (+! (-> *common-text* language-id) 1)) - (load-level-text-files 0))) - - - + (mng) + (if *common-text* (+! (-> *common-text* language-id) 1)) + (load-level-text-files 0))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; subtitle process and drawing! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (defun-recursive print-game-subtitle float ((str string) (font-ctxt font-context) (no-draw symbol) (alpha int) (line-height int)) "Print text. Not worth commenting until we get stack variables in lets, I think" (local-vars - (sv-112 float) - (sv-116 float) - (sv-120 float) - (sv-124 float) - (sv-128 float) - (sv-132 float) - (sv-136 float) - (sv-140 (pointer uint8)) - (sv-144 float) - (sv-148 float) - (sv-152 float) - (sv-156 float) - (sv-160 float) - (sv-164 float) - (sv-168 int) - (sv-176 int) - (sv-184 int) - (sv-192 int) - (sv-200 int) - (sv-208 symbol) - (sv-212 symbol) - ) - (let ((gp-0 (new - 'stack - 'font-context - *font-default-matrix* - (the int (-> font-ctxt origin x)) - (the int (-> font-ctxt origin y)) - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) + (sv-112 float) + (sv-116 float) + (sv-120 float) + (sv-124 float) + (sv-128 float) + (sv-132 float) + (sv-136 float) + (sv-140 (pointer uint8)) + (sv-144 float) + (sv-148 float) + (sv-152 float) + (sv-156 float) + (sv-160 float) + (sv-164 float) + (sv-168 int) + (sv-176 int) + (sv-184 int) + (sv-192 int) + (sv-200 int) + (sv-208 symbol) + (sv-212 symbol)) + (let ((gp-0 (new 'stack + 'font-context + *font-default-matrix* + (the int (-> font-ctxt origin x)) + (the int (-> font-ctxt origin y)) + 0.0 + (font-color default) + (font-flags shadow kerning)))) (when (< 0.1 (-> font-ctxt scale)) (set! sv-112 (-> font-ctxt mat vector 0 x)) (set! sv-116 (-> font-ctxt mat vector 1 y)) @@ -370,17 +282,12 @@ (when (logtest? (-> gp-0 flags) (font-flags middle-vert)) (logclear! (-> gp-0 flags) (font-flags middle-vert)) (let ((f30-0 (-> gp-0 width)) - (f28-0 (-> gp-0 height)) - ) + (f28-0 (-> gp-0 height))) (set! (-> gp-0 width) (-> font-ctxt width)) (set! (-> gp-0 height) (-> font-ctxt height)) - (+! (-> gp-0 origin y) - (the float (the int (* 0.5 (- (-> gp-0 height) (print-game-subtitle str gp-0 #t 128 22))))) - ) + (+! (-> gp-0 origin y) (the float (the int (* 0.5 (- (-> gp-0 height) (print-game-subtitle str gp-0 #t 128 22)))))) (set! (-> gp-0 width) f30-0) - (set! (-> gp-0 height) f28-0) - ) - ) + (set! (-> gp-0 height) f28-0))) (set! (-> gp-0 mat vector 0 x) (* (-> gp-0 mat vector 0 x) sv-136)) (set! (-> gp-0 mat vector 1 y) (* (-> gp-0 mat vector 1 y) sv-136)) (set! (-> *video-parms* relative-x-scale) (* (-> *video-parms* relative-x-scale) sv-136)) @@ -393,17 +300,9 @@ (set! sv-152 (+ (-> gp-0 origin x) (-> font-ctxt width))) (set! sv-156 (+ (-> gp-0 origin y) (-> font-ctxt height))) (set! sv-160 (* (get-string-length " " gp-0) (-> *video-parms* relative-x-scale))) - (set! sv-164 (* (if (logtest? (-> gp-0 flags) (font-flags large)) - (the float line-height) - 14.0 - ) - sv-136 - ) - ) + (set! sv-164 (* (if (logtest? (-> gp-0 flags) (font-flags large)) (the float line-height) 14.0) sv-136)) (set! sv-168 0) - (if (logtest? (-> gp-0 flags) (font-flags middle)) - (+! (-> gp-0 origin x) (* 0.5 (-> font-ctxt width))) - ) + (if (logtest? (-> gp-0 flags) (font-flags middle)) (+! (-> gp-0 origin x) (* 0.5 (-> font-ctxt width)))) (set! sv-176 (the-as int (-> sv-140 0))) (set! sv-184 0) (set! sv-192 0) @@ -416,42 +315,21 @@ ((= sv-176 32) (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) (set! sv-184 (+ sv-184 1)) - (set! sv-208 #t) - ) - ((zero? sv-176) - (if (zero? sv-184) - (set! sv-212 #t) - (set! sv-208 #t) - ) - ) + (set! sv-208 #t)) + ((zero? sv-176) (if (zero? sv-184) (set! sv-212 #t) (set! sv-208 #t))) (else - (if (= sv-176 95) - (set! sv-176 32) - ) - (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) - (set! sv-184 (+ sv-184 1)) - ) - ) + (if (= sv-176 95) (set! sv-176 32)) + (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) + (set! sv-184 (+ sv-184 1)))) (when (= sv-208 #t) (set! (-> *game-text-word* data sv-184) (the-as uint 0)) (let* ((f30-1 sv-144) (f0-49 (* (get-string-length *game-text-word* gp-0) (-> *video-parms* relative-x-scale))) - (f1-14 (+ f30-1 f0-49)) - ) - (if (= (-> *game-text-word* data (+ sv-184 -1)) 32) - (set! f1-14 (- f1-14 sv-160)) - ) + (f1-14 (+ f30-1 f0-49))) + (if (= (-> *game-text-word* data (+ sv-184 -1)) 32) (set! f1-14 (- f1-14 sv-160))) (cond - ((< sv-152 f1-14) - (set! sv-144 (+ sv-148 f0-49)) - (set! sv-212 #t) - ) - (else - (set! sv-144 (+ sv-144 f0-49)) - ) - ) - ) - ) + ((< sv-152 f1-14) (set! sv-144 (+ sv-148 f0-49)) (set! sv-212 #t)) + (else (set! sv-144 (+ sv-144 f0-49)))))) (when (= sv-212 #t) (when (>= sv-200 (the-as int (-> gp-0 start-line))) (let ((f30-2 (+ (-> gp-0 origin y) sv-164))) @@ -460,21 +338,14 @@ (set! (-> *game-text-line* data (+ sv-192 -1)) (the-as uint 0)) (when (and (= (-> *game-text-line* data (+ sv-192 -5)) 126) (= (-> *game-text-line* data (+ sv-192 -2)) 72)) (set! (-> *game-text-line* data (+ sv-192 -5)) (the-as uint 0)) - 0 - ) - ) - ) + 0))) (when (and (= (-> *game-text-line* data (+ sv-192 -4)) 126) (= (-> *game-text-line* data (+ sv-192 -1)) 72)) (set! (-> *game-text-line* data (+ sv-192 -4)) (the-as uint 0)) - 0 - ) - (if (nonzero? (-> *game-text-line* data 0)) - (set! sv-168 (+ sv-168 1)) - ) + 0) + (if (nonzero? (-> *game-text-line* data 0)) (set! sv-168 (+ sv-168 1))) (when (not no-draw) (let* ((s1-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s2-1 (-> s1-1 base)) - ) + (s2-1 (-> s1-1 base))) (set-font-color-alpha (-> font-ctxt color) alpha) (draw-string *game-text-line* s1-1 gp-0) (set-font-color-alpha (-> font-ctxt color) 128) @@ -484,526 +355,439 @@ (set! (-> (the-as dma-packet v1-127) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-127) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-127) vif1) (new 'static 'vif-tag)) - (set! (-> s1-1 base) (&+ (the-as pointer v1-127) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id subtitle) - s2-1 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - ) - (set! (-> gp-0 origin y) f30-2) - ) - ) + (set! (-> s1-1 base) (&+ (the-as pointer v1-127) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id subtitle) + s2-1 + (the-as (pointer dma-tag) a3-3))))) + (set! (-> gp-0 origin y) f30-2))) (set! sv-200 (+ sv-200 1)) (set! (-> *game-text-line* data 0) (the-as uint 0)) (set! sv-192 0) - (set! sv-212 (the-as symbol #f)) - ) + (set! sv-212 (the-as symbol #f))) (when (= sv-208 #t) (copy-charp<-charp (&-> *game-text-line* data sv-192) (-> *game-text-word* data)) (set! sv-192 (+ sv-192 sv-184)) (set! sv-184 0) - (set! sv-208 (the-as symbol #f)) - ) + (set! sv-208 (the-as symbol #f))) (when (nonzero? sv-176) (set! sv-140 (&-> sv-140 1)) - (set! sv-176 (the-as int (-> sv-140 0))) - ) - ) + (set! sv-176 (the-as int (-> sv-140 0))))) (set! (-> gp-0 mat vector 0 x) sv-112) (set! (-> gp-0 mat vector 1 y) sv-116) (set! (-> *video-parms* relative-x-scale) sv-120) (set! (-> *video-parms* relative-y-scale) sv-124) (set! (-> *video-parms* relative-x-scale-reciprical) sv-128) (set! (-> *video-parms* relative-y-scale-reciprical) sv-132) - (if (> sv-168 0) - (* sv-164 (the float sv-168)) - 0.0 - ) - ) - ) - ) - - + (if (> sv-168 0) (* sv-164 (the float sv-168)) 0.0)))) -(defmethod subtitle-format subtitle ((obj subtitle) (keyframe subtitle-keyframe)) +(defmethod subtitle-format ((obj subtitle) (keyframe subtitle-keyframe)) "check settings and format subtitle accordingly." - (cond ((= 0 (length (-> keyframe speaker))) ;; there's no speaker so who cares. - (string-format "~S" (-> keyframe string)) - ) + (string-format "~S" (-> keyframe string))) ((or (= #t (-> *pc-settings* subtitle-speaker?)) (and (= 'auto (-> *pc-settings* subtitle-speaker?)) (subtitle-flags? keyframe offscreen))) ;; there is a speaker and we do want it. - (string-format "~3L~S:~0L ~S" (-> keyframe speaker) (-> keyframe string)) - ) - (else - (string-format "~S" (-> keyframe string)) - ) - ) - - ) + (string-format "~3L~S:~0L ~S" (-> keyframe speaker) (-> keyframe string))) + (else (string-format "~S" (-> keyframe string))))) (defun subtitle? ((hinttitles? symbol)) "can a subtitle be displayed right now?" - (and (or (and (not hinttitles?) (-> *pc-settings* subtitles?)) ;; subtitles enabled + (and (or (and (not hinttitles?) (-> *pc-settings* subtitles?)) ;; subtitles enabled (and hinttitles? (-> *pc-settings* hinttitles?))) - (or *debug-segment* (= *master-mode* 'game)) ;; current mode is game, OR we are just debugging + (or *debug-segment* (= *master-mode* 'game)) ;; current mode is game, OR we are just debugging (not *progress-process*) ;; no progress open - ) - ) + )) (defun subtitle-str-adjust ((pos int)) (if (< pos 0) -1 (the int (/ pos (/ 1024.0 60))))) - (defbehavior setup-subtitle-font subtitle () "setup the subtitle font." - ;; set font settings. (set! (-> self font origin x) (* (- 1.0 (-> *SUBTITLE-bank* width)) 256)) - (set! (-> self font origin y) (* (if (or (>= (-> *pc-settings* aspect-ratio) ASPECT_16X9) (not (movie?))) - (-> *SUBTITLE-bank* hint-height) - (-> *SUBTITLE-bank* height) - ) 224)) + (set! (-> self font origin y) + (* (if (or (>= (-> *pc-settings* aspect-ratio) ASPECT_16X9) (not (movie?))) + (-> *SUBTITLE-bank* hint-height) + (-> *SUBTITLE-bank* height)) + 224)) (set-width! (-> self font) (the int (* (-> *SUBTITLE-bank* width) 512))) (set-height! (-> self font) (the int (* (-> *SUBTITLE-bank* lines) 11))) - (set-scale! (-> self font) (-> *SUBTITLE-bank* scale)) - ) + (set-scale! (-> self font) (-> *SUBTITLE-bank* scale))) (defbehavior draw-subtitle subtitle () "draw the current subtitle using the current font." - (when (and (-> self want-subtitle) (subtitle? (-> self hint-subtitle?))) - ;; we got a valid subtitle! render it. - (hide-bottom-hud) - (print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22) - (#when PC_SUBTITLE_DEBUG - (draw-debug-text-box (-> self font)) - ) - ) - ) - + ;; we got a valid subtitle! render it. + (hide-bottom-hud) + (print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22) + (#when PC_SUBTITLE_DEBUG + (draw-debug-text-box (-> self font))))) (defstate subtitle-process (subtitle) - - :event (behavior ((from process) (argc int) (msg symbol) (block event-message-block)) - (case msg - (('subtitle-start) - 0 - ) - (('debug) - (go subtitle-debug) - ) - ) - ) - - :code (behavior () - (loop - (suspend)) - ) - - :trans (behavior () - (load-level-subtitle-files 0) - ;; reset params - (set! (-> self want-subtitle) (the subtitle-keyframe #f)) - (set! (-> self hint-subtitle?) #f) - (set! (-> self spool-name) #f) - (set! (-> self cur-channel) (pc-subtitle-channel invalid)) - - ;; check what kind of subtitles are running - (cond - ((and (movie?) (-> *art-control* spool-lock) (-> *art-control* active-stream)) - ;; there's a cutscene happening and an active spool with a valid owner. - (set! (-> self spool-name) (-> *art-control* active-stream)) - (set! (-> self cur-channel) (pc-subtitle-channel movie)) - (with-proc ((handle->process (-> *art-control* spool-lock))) - (if *debug-segment* - (format *stdcon* "movie spool detected:~%~3L~A~0L~%current spool frame is ~3L~D~0L~%" - (-> *art-control* active-stream) (the int (ja-aframe-num 0))) - ) - ) - ) - (*hint-semaphore* - ;; there's a hint playing - (set! (-> self spool-name) (-> *hint-semaphore* 0 sound-to-play)) - (unless (-> self spool-name) - (set! (-> self spool-name) *level-hint-spool-name*)) - (set! (-> self text-id) (-> *hint-semaphore* 0 text-id-to-display)) - (set! (-> self cur-channel) (if (-> self spool-name) - (pc-subtitle-channel hint-named) - (pc-subtitle-channel hint))) - (if *debug-segment* - (format *stdcon* "hint detected!~%~3L~A~0L/~3L#x~X~0L~%current str pos is ~D (~3L~D~0L)~%" - (-> self spool-name) (-> self text-id) - (current-str-pos (-> *hint-semaphore* 0 sound-id)) - (subtitle-str-adjust (current-str-pos (-> *hint-semaphore* 0 sound-id)))) - ) - ) - ) - - ;; do subtitles - - ;; intro first time notice (if subtitles are disabled) - (when (and (= (pc-subtitle-channel movie) (-> self cur-channel)) - (!= (-> self old-spool-name) (-> self spool-name)) - (string= (-> self spool-name) "sage-intro-sequence-a")) - (set-state-time) - (set! (-> self notice-id) (text-id subtitle-hint)) - ) - - ;; get a subtitle info that matches our current status - (let ((keyframe (the subtitle-keyframe #f))) - (when *subtitle-text* - (case (-> self cur-channel) - (((pc-subtitle-channel movie)) - ;; cutscenes. get our cutscene. - (set! (-> self hint-subtitle?) #f) - (awhen (get-scene-by-name *subtitle-text* (-> self cur-channel) (-> self spool-name)) - - ;; during a cutscene, check if user toggled subtitles - (when (and (= 'game *master-mode*) - (cpad-pressed? 0 square)) - (not! (-> *pc-settings* subtitles?)) - (set-state-time) - (if (-> *pc-settings* subtitles?) - (set! (-> self notice-id) (text-id subtitle-enabled)) - (set! (-> self notice-id) (text-id subtitle-disabled)) - ) - ) - ;; find out position in the scene. - (let ((pos 0)) - ;; get frame num - (with-proc ((handle->process (-> *art-control* spool-lock))) - (set! pos (the int (ja-aframe-num 0))) - ) - ;; find closest keyframe - (dotimes (i (-> it length)) - (when (>= pos (-> it keyframes i frame)) - (set! keyframe (-> it keyframes i))) - ) - ) - ) - - ) - (((pc-subtitle-channel hint) (pc-subtitle-channel hint-named)) - ;; hint! find it. or else. - (set! (-> self hint-subtitle?) #t) - - (let ((scene (get-scene-by-text-id *subtitle-text* (pc-subtitle-channel hint) (-> self text-id)))) - (if (not scene) - (set! scene (get-scene-by-name *subtitle-text* (pc-subtitle-channel hint-named) (-> self spool-name)))) - - (when scene - (let ((pos (subtitle-str-adjust (current-str-pos (-> *hint-semaphore* 0 sound-id))))) - ;; find closest keyframe - (dotimes (i (-> scene length)) - (when (>= pos (-> scene keyframes i frame)) - (set! keyframe (-> scene keyframes i))) - ) - ) - )) - ) - )) - + :event + (behavior ((from process) (argc int) (msg symbol) (block event-message-block)) + (case msg + (('subtitle-start) 0) + (('debug) (go subtitle-debug)))) + :code + (behavior () + (loop + (suspend))) + :trans + (behavior () + (load-level-subtitle-files 0) + ;; reset params + (set! (-> self want-subtitle) (the subtitle-keyframe #f)) + (set! (-> self hint-subtitle?) #f) + (set! (-> self spool-name) #f) + (set! (-> self cur-channel) (pc-subtitle-channel invalid)) + ;; check what kind of subtitles are running + (cond + ((and (movie?) (-> *art-control* spool-lock) (-> *art-control* active-stream)) + ;; there's a cutscene happening and an active spool with a valid owner. + (set! (-> self spool-name) (-> *art-control* active-stream)) + (set! (-> self cur-channel) (pc-subtitle-channel movie)) + (with-proc ((handle->process (-> *art-control* spool-lock))) + (if *debug-segment* + (format *stdcon* + "movie spool detected:~%~3L~A~0L~%current spool frame is ~3L~D~0L~%" + (-> *art-control* active-stream) + (the int (ja-aframe-num 0)))))) + (*hint-semaphore* + ;; there's a hint playing + (set! (-> self spool-name) (-> *hint-semaphore* 0 sound-to-play)) + (unless (-> self spool-name) + (set! (-> self spool-name) *level-hint-spool-name*)) + (set! (-> self text-id) (-> *hint-semaphore* 0 text-id-to-display)) + (set! (-> self cur-channel) (if (-> self spool-name) (pc-subtitle-channel hint-named) (pc-subtitle-channel hint))) + (if *debug-segment* + (format *stdcon* + "hint detected!~%~3L~A~0L/~3L#x~X~0L~%current str pos is ~D (~3L~D~0L)~%" + (-> self spool-name) + (-> self text-id) + (current-str-pos (-> *hint-semaphore* 0 sound-id)) + (subtitle-str-adjust (current-str-pos (-> *hint-semaphore* 0 sound-id))))))) + ;; do subtitles + ;; intro first time notice (if subtitles are disabled) + (when (and (= (pc-subtitle-channel movie) (-> self cur-channel)) + (!= (-> self old-spool-name) (-> self spool-name)) + (string= (-> self spool-name) "sage-intro-sequence-a")) + (set-state-time) + (set! (-> self notice-id) (text-id subtitle-hint))) + ;; get a subtitle info that matches our current status + (let ((keyframe (the subtitle-keyframe #f))) + (when *subtitle-text* + (case (-> self cur-channel) + (((pc-subtitle-channel movie)) + ;; cutscenes. get our cutscene. + (set! (-> self hint-subtitle?) #f) + (awhen (get-scene-by-name *subtitle-text* (-> self cur-channel) (-> self spool-name)) + ;; during a cutscene, check if user toggled subtitles + (when (and (= 'game *master-mode*) (cpad-pressed? 0 square)) + (not! (-> *pc-settings* subtitles?)) + (set-state-time) + (if (-> *pc-settings* subtitles?) + (set! (-> self notice-id) (text-id subtitle-enabled)) + (set! (-> self notice-id) (text-id subtitle-disabled)))) + ;; find out position in the scene. + (let ((pos 0)) + ;; get frame num + (with-proc ((handle->process (-> *art-control* spool-lock))) (set! pos (the int (ja-aframe-num 0)))) + ;; find closest keyframe + (dotimes (i (-> it length)) + (when (>= pos (-> it keyframes i frame)) + (set! keyframe (-> it keyframes i))))))) + (((pc-subtitle-channel hint) (pc-subtitle-channel hint-named)) + ;; hint! find it. or else. + (set! (-> self hint-subtitle?) #t) + (let ((scene (get-scene-by-text-id *subtitle-text* (pc-subtitle-channel hint) (-> self text-id)))) + (if (not scene) (set! scene (get-scene-by-name *subtitle-text* (pc-subtitle-channel hint-named) (-> self spool-name)))) + (when scene + (let ((pos (subtitle-str-adjust (current-str-pos (-> *hint-semaphore* 0 sound-id))))) + ;; find closest keyframe + (dotimes (i (-> scene length)) + (when (>= pos (-> scene keyframes i frame)) + (set! keyframe (-> scene keyframes i)))))))))) ;; save whatever subtitle we got. (set! (-> self want-subtitle) keyframe)) - - ;; keep this for later - (set! (-> self old-spool-name) (-> self spool-name)) - - (when *debug-segment* + ;; keep this for later + (set! (-> self old-spool-name) (-> self spool-name)) + (when *debug-segment* (when (and (cpad-hold? 0 l3) (cpad-pressed? 0 start)) - (cpad-clear! 0 start) - (send-event self 'debug) - ) - - ) - - (none)) - - :post (behavior () - - (setup-subtitle-font) - (draw-subtitle) - - (cond - ((!= *master-mode* 'game) - ) - ((and (< (time-passed) (seconds 5)) - (= (-> self notice-id) (text-id subtitle-hint))) - (when (not (-> *pc-settings* subtitles?)) - (set-scale! (-> self font) (* (-> *SUBTITLE-bank* scale) 1.5)) - (print-game-subtitle (lookup-text! *common-text* (-> self notice-id) #f) (-> self font) #f 128 22) - ) - ) - ((and (= (-> self cur-channel) (pc-subtitle-channel movie)) - (< (time-passed) (seconds 2)) - (< (mod (time-passed) (seconds 1)) (seconds 0.8))) - (set! (-> self font origin y) (* (-> *SUBTITLE-bank* notice-height) 224)) - (print-game-subtitle (lookup-text! *common-text* (-> self notice-id) #f) (-> self font) #f 128 22) - ) - ) - - - 0) - - ) - + (cpad-clear! 0 start) + (send-event self 'debug))) + (none)) + :post + (behavior () + (setup-subtitle-font) + (draw-subtitle) + (cond + ((!= *master-mode* 'game)) + ((and (< (time-passed) (seconds 5)) (= (-> self notice-id) (text-id subtitle-hint))) + (when (not (-> *pc-settings* subtitles?)) + (set-scale! (-> self font) (* (-> *SUBTITLE-bank* scale) 1.5)) + (print-game-subtitle (lookup-text! *common-text* (-> self notice-id) #f) (-> self font) #f 128 22))) + ((and (= (-> self cur-channel) (pc-subtitle-channel movie)) + (< (time-passed) (seconds 2)) + (< (mod (time-passed) (seconds 1)) (seconds 0.8))) + (set! (-> self font origin y) (* (-> *SUBTITLE-bank* notice-height) 224)) + (print-game-subtitle (lookup-text! *common-text* (-> self notice-id) #f) (-> self font) #f 128 22))) + 0)) (defstate subtitle-debug (subtitle) - - - :event (behavior ((from process) (argc int) (msg symbol) (block event-message-block)) + :event + (behavior ((from process) (argc int) (msg symbol) (block event-message-block)) (case msg - (('debug) - (go subtitle-process) - ) - ) - ) - - :enter (behavior () - (mem-copy! (the pointer (-> self bank-backup)) (the pointer *SUBTITLE-bank*) (size-of subtitle-bank)) - (set-master-mode 'pause) - ) - - :trans (behavior () - - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug)) - - (draw-string-xy "~3LSUBTITLE DEBUG!~0L" buf 14 (+ PC_SUB_DBG_Y (* 0 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "L3+Start: exit" buf 14 (+ PC_SUB_DBG_Y (* 1 8)) (font-color default) (font-flags shadow kerning)) + (('debug) (go subtitle-process)))) + :enter + (behavior () + (mem-copy! (the pointer (-> self bank-backup)) (the pointer *SUBTITLE-bank*) (size-of subtitle-bank)) + (set-master-mode 'pause)) + :trans + (behavior () + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug)) + (draw-string-xy "~3LSUBTITLE DEBUG!~0L" + buf + 14 + (+ PC_SUB_DBG_Y (* 0 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "L3+Start: exit" buf 14 (+ PC_SUB_DBG_Y (* 1 8)) (font-color default) (font-flags shadow kerning)) (if (!= 'pause *master-mode*) - (draw-string-xy "Pause the game to continue" buf 14 (+ PC_SUB_DBG_Y (* 2 8)) (font-color default) (font-flags shadow kerning))) - - (when (= 'pause *master-mode*) - (cond - ((and (cpad-hold? 0 l3) (cpad-pressed? 0 x)) - (set! (-> self debug-lines?) #t) - ) - ((and (cpad-hold? 0 l3) (cpad-pressed? 0 triangle)) - (set! (-> self debug-lines?) #f) - ) - ) - (draw-string-xy "L3+X: debug lines" buf 14 (+ PC_SUB_DBG_Y (* 2 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "L3+Triangle: debug box" buf 14 (+ PC_SUB_DBG_Y (* 3 8)) (font-color default) (font-flags shadow kerning)) - - (cond - ((or (not *subtitle-text*) (zero? (-> *subtitle-text* length))) - (draw-string-xy "NO SUBTITLES LOADED!!!" buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color red) (font-flags shadow kerning)) - (load-level-subtitle-files 0) - (set! (-> self current-debug-scene) 0) - (set! (-> self current-debug-line) 0) - ) - ((-> self debug-lines?) - - (cond - ((cpad-pressed? 0 square) - (true! (-> self checking-lines?)) - ) - ((cpad-pressed? 0 left) - (if (> (-> self current-debug-line) 0) - (1-! (-> self current-debug-line))) - ) - ((cpad-pressed? 0 right) + (draw-string-xy "Pause the game to continue" + buf + 14 + (+ PC_SUB_DBG_Y (* 2 8)) + (font-color default) + (font-flags shadow kerning))) + (when (= 'pause *master-mode*) + (cond + ((and (cpad-hold? 0 l3) (cpad-pressed? 0 x)) (set! (-> self debug-lines?) #t)) + ((and (cpad-hold? 0 l3) (cpad-pressed? 0 triangle)) (set! (-> self debug-lines?) #f))) + (draw-string-xy "L3+X: debug lines" buf 14 (+ PC_SUB_DBG_Y (* 2 8)) (font-color default) (font-flags shadow kerning)) + (draw-string-xy "L3+Triangle: debug box" + buf + 14 + (+ PC_SUB_DBG_Y (* 3 8)) + (font-color default) + (font-flags shadow kerning)) + (cond + ((or (not *subtitle-text*) (zero? (-> *subtitle-text* length))) + (draw-string-xy "NO SUBTITLES LOADED!!!" buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color red) (font-flags shadow kerning)) + (load-level-subtitle-files 0) + (set! (-> self current-debug-scene) 0) + (set! (-> self current-debug-line) 0)) + ((-> self debug-lines?) + (cond + ((cpad-pressed? 0 square) (true! (-> self checking-lines?))) + ((cpad-pressed? 0 left) (if (> (-> self current-debug-line) 0) (1-! (-> self current-debug-line)))) + ((cpad-pressed? 0 right) (if (< (-> self current-debug-line) (1- (-> *subtitle-text* data (-> self current-debug-scene) length))) - (1+! (-> self current-debug-line))) - ) - ((or (cpad-pressed? 0 up) (and (cpad-hold? 0 l2) (cpad-hold? 0 up))) + (1+! (-> self current-debug-line)))) + ((or (cpad-pressed? 0 up) (and (cpad-hold? 0 l2) (cpad-hold? 0 up))) (when (> (-> self current-debug-scene) 0) - (1-! (-> self current-debug-scene)) - (set! (-> self current-debug-line) 0)) - ) - ((or (cpad-pressed? 0 down) (and (cpad-hold? 0 l2) (cpad-hold? 0 down))) + (1-! (-> self current-debug-scene)) + (set! (-> self current-debug-line) 0))) + ((or (cpad-pressed? 0 down) (and (cpad-hold? 0 l2) (cpad-hold? 0 down))) (when (< (-> self current-debug-scene) (1- (-> *subtitle-text* length))) - (1+! (-> self current-debug-scene)) - (set! (-> self current-debug-line) 0)) - ) - ) - - (let ((cur-scene (-> *subtitle-text* data (-> self current-debug-scene)))) - (if (nonzero? (-> cur-scene length)) - (set! (-> self want-subtitle) (-> *subtitle-text* data (-> self current-debug-scene) keyframes (-> self current-debug-line))) - (set! (-> self want-subtitle) #f)) - - (draw-string-xy "Up/down: Pick scene" buf 14 (+ PC_SUB_DBG_Y (* 4 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "L2+Up/down: Pick scene (fast)" buf 14 (+ PC_SUB_DBG_Y (* 5 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Left/right: Pick line" buf 14 (+ PC_SUB_DBG_Y (* 6 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Square: Check all line heights" buf 14 (+ PC_SUB_DBG_Y (* 7 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy (string-format "Scene: ~D/~D" (1+ (-> self current-debug-scene)) (-> *subtitle-text* length)) - buf 14 (+ PC_SUB_DBG_Y (* 8 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy (string-format "Line: ~D/~D" (1+ (-> self current-debug-line)) (-> cur-scene length)) - buf 14 (+ PC_SUB_DBG_Y (* 9 8)) (font-color default) (font-flags shadow kerning)) - - (case (-> cur-scene kind) - (((pc-subtitle-channel movie)) - (draw-string-xy (string-format "Current scene: ~3L~A~0L" (-> cur-scene name)) - buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color default) (font-flags shadow kerning)) - ) - (((pc-subtitle-channel hint-named)) - (draw-string-xy (string-format "Current scene: ~3L~A~0L (~3L#x~X~0L)" (-> cur-scene name) (-> cur-scene id)) - buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color default) (font-flags shadow kerning)) - ) - (((pc-subtitle-channel hint)) - (draw-string-xy (string-format "Current scene: ~3L#x~X~0L" (-> cur-scene id)) - buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color default) (font-flags shadow kerning)) - ) - (else - (draw-string-xy (string-format "Unknown scene kind ~D" (-> cur-scene kind)) - buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color red) (font-flags shadow kerning)) - ) - )) - - ) - - (else - (draw-string-xy "Square: reset" buf 14 (+ PC_SUB_DBG_Y (* 4 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Up/down: Move vertically" buf 14 (+ PC_SUB_DBG_Y (* 5 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Triangle+R1/L1: width" buf 14 (+ PC_SUB_DBG_Y (* 6 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Triangle+R2/L2: height" buf 14 (+ PC_SUB_DBG_Y (* 7 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Circle+R1/L1: scale" buf 14 (+ PC_SUB_DBG_Y (* 8 8)) (font-color default) (font-flags shadow kerning)) - - - (when (cpad-pressed? 0 square) - (mem-copy! (the pointer *SUBTITLE-bank*) (the pointer (-> self bank-backup)) (size-of subtitle-bank)) - ) - - (when (cpad-hold? 0 up) (+! (-> *SUBTITLE-bank* height) -0.01)) - (when (cpad-hold? 0 down) (+! (-> *SUBTITLE-bank* height) 0.01)) - - (cond - ((cpad-hold? 0 triangle) - (when (cpad-hold? 0 r1) (-! (-> *SUBTITLE-bank* width) 0.01)) - (when (cpad-hold? 0 l1) (+! (-> *SUBTITLE-bank* width) 0.01)) - (when (cpad-hold? 0 r2) (-! (-> *SUBTITLE-bank* lines) 0.05)) - (when (cpad-hold? 0 l2) (+! (-> *SUBTITLE-bank* lines) 0.05)) - ) - ((cpad-hold? 0 circle) - (when (cpad-hold? 0 r1) (+! (-> *SUBTITLE-bank* scale) 0.01)) - (when (cpad-hold? 0 l1) (-! (-> *SUBTITLE-bank* scale) 0.01)) - ) - )) - ) - )) - + (1+! (-> self current-debug-scene)) + (set! (-> self current-debug-line) 0)))) + (let ((cur-scene (-> *subtitle-text* data (-> self current-debug-scene)))) + (if (nonzero? (-> cur-scene length)) + (set! (-> self want-subtitle) + (-> *subtitle-text* data (-> self current-debug-scene) keyframes (-> self current-debug-line))) + (set! (-> self want-subtitle) #f)) + (draw-string-xy "Up/down: Pick scene" buf 14 (+ PC_SUB_DBG_Y (* 4 8)) (font-color default) (font-flags shadow kerning)) + (draw-string-xy "L2+Up/down: Pick scene (fast)" + buf + 14 + (+ PC_SUB_DBG_Y (* 5 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Left/right: Pick line" + buf + 14 + (+ PC_SUB_DBG_Y (* 6 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Square: Check all line heights" + buf + 14 + (+ PC_SUB_DBG_Y (* 7 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy (string-format "Scene: ~D/~D" (1+ (-> self current-debug-scene)) (-> *subtitle-text* length)) + buf + 14 + (+ PC_SUB_DBG_Y (* 8 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy (string-format "Line: ~D/~D" (1+ (-> self current-debug-line)) (-> cur-scene length)) + buf + 14 + (+ PC_SUB_DBG_Y (* 9 8)) + (font-color default) + (font-flags shadow kerning)) + (case (-> cur-scene kind) + (((pc-subtitle-channel movie)) + (draw-string-xy (string-format "Current scene: ~3L~A~0L" (-> cur-scene name)) + buf + 14 + (+ PC_SUB_DBG_Y (* 10 8)) + (font-color default) + (font-flags shadow kerning))) + (((pc-subtitle-channel hint-named)) + (draw-string-xy (string-format "Current scene: ~3L~A~0L (~3L#x~X~0L)" (-> cur-scene name) (-> cur-scene id)) + buf + 14 + (+ PC_SUB_DBG_Y (* 10 8)) + (font-color default) + (font-flags shadow kerning))) + (((pc-subtitle-channel hint)) + (draw-string-xy (string-format "Current scene: ~3L#x~X~0L" (-> cur-scene id)) + buf + 14 + (+ PC_SUB_DBG_Y (* 10 8)) + (font-color default) + (font-flags shadow kerning))) + (else + (draw-string-xy (string-format "Unknown scene kind ~D" (-> cur-scene kind)) + buf + 14 + (+ PC_SUB_DBG_Y (* 10 8)) + (font-color red) + (font-flags shadow kerning)))))) + (else + (draw-string-xy "Square: reset" buf 14 (+ PC_SUB_DBG_Y (* 4 8)) (font-color default) (font-flags shadow kerning)) + (draw-string-xy "Up/down: Move vertically" + buf + 14 + (+ PC_SUB_DBG_Y (* 5 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Triangle+R1/L1: width" + buf + 14 + (+ PC_SUB_DBG_Y (* 6 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Triangle+R2/L2: height" + buf + 14 + (+ PC_SUB_DBG_Y (* 7 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Circle+R1/L1: scale" buf 14 (+ PC_SUB_DBG_Y (* 8 8)) (font-color default) (font-flags shadow kerning)) + (when (cpad-pressed? 0 square) + (mem-copy! (the pointer *SUBTITLE-bank*) (the pointer (-> self bank-backup)) (size-of subtitle-bank))) + (when (cpad-hold? 0 up) + (+! (-> *SUBTITLE-bank* height) -0.01)) + (when (cpad-hold? 0 down) + (+! (-> *SUBTITLE-bank* height) 0.01)) + (cond + ((cpad-hold? 0 triangle) + (when (cpad-hold? 0 r1) + (-! (-> *SUBTITLE-bank* width) 0.01)) + (when (cpad-hold? 0 l1) + (+! (-> *SUBTITLE-bank* width) 0.01)) + (when (cpad-hold? 0 r2) + (-! (-> *SUBTITLE-bank* lines) 0.05)) + (when (cpad-hold? 0 l2) + (+! (-> *SUBTITLE-bank* lines) 0.05))) + ((cpad-hold? 0 circle) + (when (cpad-hold? 0 r1) + (+! (-> *SUBTITLE-bank* scale) 0.01)) + (when (cpad-hold? 0 l1) + (-! (-> *SUBTITLE-bank* scale) 0.01)))))))) (when (-> self checking-lines?) - (false! (-> self checking-lines?)) - (go subtitle-debug-checking-lines) - ) + (false! (-> self checking-lines?)) + (go subtitle-debug-checking-lines)) (when (and (cpad-hold? 0 l3) (cpad-pressed? 0 start)) - (cpad-clear! 0 start) - (send-event self 'debug) - ) - + (cpad-clear! 0 start) + (send-event self 'debug)) (none)) - - :code (-> subtitle-process code) - :post (behavior () + :code + (-> subtitle-process + code) + :post + (behavior () (setup-subtitle-font) (draw-subtitle) (draw-debug-text-box (-> self font)) - 0) - - ) + 0)) (defstate subtitle-debug-checking-lines (subtitle) - - :trans (behavior () (setup-subtitle-font) (none)) - :code (behavior () + :trans + (behavior () + (setup-subtitle-font) + (none)) + :code + (behavior () (protect ((-> *pc-settings* subtitle-speaker?)) - (set! (-> *pc-settings* subtitle-speaker?) #t) - (let ((lines-so-far 0) - (lines-this-time 0) - (bad-lines 0)) - (dotimes (i (length *subtitle-text*)) - (dotimes (ii (length (-> *subtitle-text* data i))) - (when (= lines-this-time PC_SUB_DBG_CHECK_GROUP_SIZE) + (set! (-> *pc-settings* subtitle-speaker?) #t) + (let ((lines-so-far 0) + (lines-this-time 0) + (bad-lines 0)) + (dotimes (i (length *subtitle-text*)) + (dotimes (ii (length (-> *subtitle-text* data i))) + (when (= lines-this-time PC_SUB_DBG_CHECK_GROUP_SIZE) (set! lines-this-time 0) (suspend)) - - (set! (-> self want-subtitle) (-> *subtitle-text* data i keyframes ii)) - (1+! lines-this-time) - (when (< (* (-> *SUBTITLE-bank* lines) 11) (print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22)) - (format 0 "LINE ~D IN SCENE ~D IS TOO LARGE!~%" (1+ ii) (1+ i)) + (set! (-> self want-subtitle) (-> *subtitle-text* data i keyframes ii)) + (1+! lines-this-time) + (when (< (* (-> *SUBTITLE-bank* lines) 11) + (print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22)) + (format 0 "LINE ~D IN SCENE ~D IS TOO LARGE!~%" (1+ ii) (1+ i)) (format #t "LINE ~D IN SCENE ~D IS TOO LARGE!~%" (1+ ii) (1+ i)) - (1+! bad-lines) - ) - ) - ) - (suspend) - (if (> bad-lines 0) - (format 0 "~D bad lines detected.~%" bad-lines) - (format 0 "no bad lines detected!~%" bad-lines)) - )) - (go subtitle-debug) - ) - :post (behavior () - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug)) - (draw-string-xy "Checking for bad lines... See console for info" buf 14 PC_SUB_DBG_Y (font-color red) (font-flags shadow kerning)) - ) + (1+! bad-lines)))) + (suspend) + (if (> bad-lines 0) (format 0 "~D bad lines detected.~%" bad-lines) (format 0 "no bad lines detected!~%" bad-lines)))) + (go subtitle-debug)) + :post + (behavior () + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug)) + (draw-string-xy "Checking for bad lines... See console for info" + buf + 14 + PC_SUB_DBG_Y + (font-color red) + (font-flags shadow kerning))) (draw-debug-text-box (-> self font)) - 0) - - ) - - - + 0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; helper functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - -(defmethod length subtitle-text-info ((obj subtitle-text-info)) +(defmethod length ((obj subtitle-text-info)) "Get the length (number of subtitle scenes) in a subtitle-text-info." - (-> obj length) - ) + (-> obj length)) -(defmethod length subtitle-text ((obj subtitle-text)) +(defmethod length ((obj subtitle-text)) "Get the length (number of subtitle lines) in a subtitle-text." - (-> obj length) - ) - + (-> obj length)) (defbehavior subtitle-init-by-other subtitle () "external initializer for subtitle process" - - (set! (-> self font) (new 'process 'font-context *font-default-matrix* - 0 0 0.0 (font-color default) (font-flags shadow kerning middle large))) + (set! (-> self font) + (new 'process 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning middle large))) (set! (-> self debug-lines?) #t) (set! (-> self checking-lines?) #f) - (go subtitle-process) - ) - + (go subtitle-process)) (defun subtitle-stop () "kill the subtitle process" - (kill-by-type subtitle *display-pool*) (set! *subtitle* (the (pointer subtitle) #f))) (defun subtitle-start () "start the subtitle process" - (when *subtitle* - (subtitle-stop) - ) - - (set! *subtitle* (process-spawn subtitle :from *pc-dead-pool* :to *display-pool*)) - ) - + (subtitle-stop)) + (set! *subtitle* (process-spawn subtitle :from *pc-dead-pool* :to *display-pool*))) ;; start the subtitle process when this file loads. (subtitle-start) - - - diff --git a/goal_src/jak1/pc/util/display-font-color.gc b/goal_src/jak1/pc/util/display-font-color.gc index b9bc614e3e..6d319522cb 100644 --- a/goal_src/jak1/pc/util/display-font-color.gc +++ b/goal_src/jak1/pc/util/display-font-color.gc @@ -1,11 +1,9 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/gfx/hw/display-h.gc") (require "kernel/gstring.gc") (require "kernel/gstate.gc") - ;; This script creates a simple process that draws text demonstrating ;; all of GOAL's color constants to the on-screen debug output. @@ -21,18 +19,18 @@ ;; font-color is from font-h.gc (defun font-color->string ((val font-color)) "return the name of the font-color" - (enum->string font-color val) - ) + (enum->string font-color val)) (defun draw-all-font-colors () "draws all font color names onscreen" - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (dotimes (i 48) - (draw-string-xy (string-format "~2D ~S" i (font-color->string (the font-color i))) buf - (+ 4 (* (get-screen-x 0.5) (mod i 2))) (+ 8 (* 8 (/ i 2))) (the font-color i) (font-flags shadow))) - ) - ) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (dotimes (i 48) + (draw-string-xy (string-format "~2D ~S" i (font-color->string (the font-color i))) + buf + (+ 4 (* (get-screen-x 0.5) (mod i 2))) + (+ 8 (* 8 (/ i 2))) + (the font-color i) + (font-flags shadow))))) (defun start-display-text-colors () "Spawn an onscreen string displaying all possible colors" @@ -40,18 +38,13 @@ (format #t "Colors are already being displayed") ;; else (set! (get-color-display-handle) - (ppointer->handle (process-spawn-function process :name 'display-proc - (lambda :behavior process () - (loop - (draw-all-font-colors) - (suspend)) - ) - ))) - ) - ) - + (ppointer->handle (process-spawn-function process + :name 'display-proc + (lambda :behavior process () + (loop + (draw-all-font-colors) + (suspend)))))))) (defun-debug stop-display-text-colors () "Kill the example text color display" - (kill-by-name 'display-proc *active-pool*) - ) + (kill-by-name 'display-proc *active-pool*)) diff --git a/goal_src/jak1/pc/util/font-encode-test.gc b/goal_src/jak1/pc/util/font-encode-test.gc index e3f4d3377b..790239c5f2 100644 --- a/goal_src/jak1/pc/util/font-encode-test.gc +++ b/goal_src/jak1/pc/util/font-encode-test.gc @@ -1,11 +1,8 @@ ;;-*-Lisp-*- (in-package goal) - (require "kernel/gstate.gc") (require "engine/ps2/pad.gc") - - ;; This file is used for debugging and testing the large font encoding. ;; This file should *not* be included as part of any packages, it should be manually loaded by the user. @@ -17,81 +14,62 @@ (ml "goal_src/jak1/pc/util/font-encode-test.gc") ;; build and load this file. |# - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defconstant FONT_ENCODE_TEXT_LEFT 56) -(defconstant FONT_ENCODE_TEXT_Y 80) - +(defconstant FONT_ENCODE_TEXT_Y 80) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define *font-string* (new 'global 'string 64 (the string #f))) + (define *font-string-ex* (the string #f)) + (define *font-string-val* #x96) (defun-debug font-encode-test-start () "start the encode test proc" - (unless (process-by-name 'font-encode *active-pool*) - (process-spawn-function process :name 'font-encode - (lambda :behavior process () - (let ((fnt (new 'stack 'font-context *font-default-matrix* FONT_ENCODE_TEXT_LEFT FONT_ENCODE_TEXT_Y 0.0 - (font-color red) (font-flags shadow kerning large middle))) - ) - - (set-width! fnt 400) - (set-height! fnt 100) - - (loop - (suspend) - - (if (or (cpad-pressed? 0 left) (cpad-hold? 0 l1)) - (-! *font-string-val* 1)) - (if (or (cpad-pressed? 0 right) (cpad-hold? 0 r1)) - (+! *font-string-val* 1)) - (minmax! *font-string-val* 1 #x1ff) - - (clear *font-string*) - (cond - ((>= *font-string-val* #x100) - (set! (-> *font-string* data 0) (/ *font-string-val* 256)) - (set! (-> *font-string* data 1) (logand *font-string-val* #xff)) - (set! (-> *font-string* data 2) 0) - ) - (else - (set! (-> *font-string* data 0) (logand *font-string-val* #xff)) - (set! (-> *font-string* data 1) 0) - ) - ) - - (set-origin! fnt FONT_ENCODE_TEXT_LEFT FONT_ENCODE_TEXT_Y) - (set-flags! fnt (font-flags shadow kerning large middle)) - (print-game-text *font-string* fnt #f 128 24) - (when *font-string-ex* - (set-origin! fnt FONT_ENCODE_TEXT_LEFT (+ FONT_ENCODE_TEXT_Y 32)) - (print-game-text *font-string-ex* fnt #f 128 24)) - (set-origin! fnt FONT_ENCODE_TEXT_LEFT (- FONT_ENCODE_TEXT_Y 16)) - (set-flags! fnt (font-flags shadow kerning middle)) - (print-game-text (string-format "#x~x" *font-string-val*) fnt #f 128 12) - ) - ) - - ) - ) - ) - ) + (process-spawn-function process + :name 'font-encode + (lambda :behavior process () + (let ((fnt (new 'stack + 'font-context + *font-default-matrix* + FONT_ENCODE_TEXT_LEFT + FONT_ENCODE_TEXT_Y + 0.0 + (font-color red) + (font-flags shadow kerning large middle)))) + (set-width! fnt 400) + (set-height! fnt 100) + (loop + (suspend) + (if (or (cpad-pressed? 0 left) (cpad-hold? 0 l1)) (-! *font-string-val* 1)) + (if (or (cpad-pressed? 0 right) (cpad-hold? 0 r1)) (+! *font-string-val* 1)) + (minmax! *font-string-val* 1 #x1ff) + (clear *font-string*) + (cond + ((>= *font-string-val* #x100) + (set! (-> *font-string* data 0) (/ *font-string-val* 256)) + (set! (-> *font-string* data 1) (logand *font-string-val* #xff)) + (set! (-> *font-string* data 2) 0)) + (else (set! (-> *font-string* data 0) (logand *font-string-val* #xff)) (set! (-> *font-string* data 1) 0))) + (set-origin! fnt FONT_ENCODE_TEXT_LEFT FONT_ENCODE_TEXT_Y) + (set-flags! fnt (font-flags shadow kerning large middle)) + (print-game-text *font-string* fnt #f 128 24) + (when *font-string-ex* + (set-origin! fnt FONT_ENCODE_TEXT_LEFT (+ FONT_ENCODE_TEXT_Y 32)) + (print-game-text *font-string-ex* fnt #f 128 24)) + (set-origin! fnt FONT_ENCODE_TEXT_LEFT (- FONT_ENCODE_TEXT_Y 16)) + (set-flags! fnt (font-flags shadow kerning middle)) + (print-game-text (string-format "#x~x" *font-string-val*) fnt #f 128 12))))))) (defun-debug font-encode-test-stop () "stop the encode test proc" - - (kill-by-name 'font-encode *active-pool*) - ) - - + (kill-by-name 'font-encode *active-pool*)) diff --git a/goal_src/jak1/pc/util/hash.gc b/goal_src/jak1/pc/util/hash.gc index 1381f35468..376e8f0dda 100644 --- a/goal_src/jak1/pc/util/hash.gc +++ b/goal_src/jak1/pc/util/hash.gc @@ -3,17 +3,17 @@ ;;;;;;;;;;;;;;;;;;;;;; (defconstant CRC_POLY #x04c11db7) + ;; Could predefine this and only allocate memory when init is called (define *crc-table* (new 'global 'boxed-array uint32 #x100)) + (defun crc32-init () "Initialize the CRC32 table" (dotimes (i #x100) (let ((n (the uint32 (shl i 24)))) (dotimes (j 8) (set! n (if (!= 0 (logand n #x80000000)) (logxor (shl n 1) CRC_POLY) (shl n 1)))) - (set! (-> *crc-table* i) n)) - ) - ) + (set! (-> *crc-table* i) n)))) (defun crc32 ((data (pointer uint8)) (size int)) "Take the CRC32 hash of some data" @@ -21,16 +21,10 @@ (dotimes (i size) (set! crc (logxor (-> *crc-table* (shr crc 24)) (logior (shl crc 8) (-> data 0)))) (&+! data 1)) - crc) - ) + crc)) (defmacro murmur-32-scramble (k-in) - `(let ((k ,k-in)) - (*! k #xcc9e2d51) - (set! k (logior (shl k 15) (shr k 17))) - (*! k #x1b873593) - k) - ) + `(let ((k ,k-in)) (*! k #xcc9e2d51) (set! k (logior (shl k 15) (shr k 17))) (*! k #x1b873593) k)) (defun murmur3-32 ((key (pointer uint8)) (len int) (seed uint)) "Take the murmur3-32 hash of some data. The seed allows for a different hash set given the same input. @@ -39,33 +33,27 @@ (k (the uint32 0)) (i (shr len 2)) ;; Initialized to number of remaining 4-byte chunks ) - ;; Read each 4-byte chunk - (while (!= i 0) (1-! i) + (while (!= i 0) + (1-! i) ;; Copy this 4 byte chunk into a 32-bit int (logior! k (shl (-> key 3) 24)) (logior! k (shl (-> key 2) 16)) - (logior! k (shl (-> key 1) 8)) + (logior! k (shl (-> key 1) 8)) (logior! k (-> key)) - ;; Move our data forward to the next 4-byte chunk (&+! key (the uint (size-of uint32))) - ;; Scramble and shift (logxor! h (murmur-32-scramble k)) (set! h (logior (shl h 13) (shr h 19))) - (set! h (+ (* h 5) #xe6546b64)) - ) - + (set! h (+ (* h 5) #xe6546b64))) ;; Read the rest (set! k (the uint32 0)) (set! i (logand len 3)) (while (!= i 0) (set! k (shl k 8)) (logior! k (-> key (- i 1))) - (1-! i) - ) - + (1-! i)) ;; Final scramble and shift (logxor! h (murmur-32-scramble k)) (logxor! h len) @@ -74,8 +62,7 @@ (logxor! h (shr h 13)) (*! h #xc2b2ae35) (logxor! h (shr h 16)) - h) - ) + h)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Hash Table Implementation @@ -91,22 +78,17 @@ (defmacro hash-truncate (value &key (size 8) &key (seed (the uint 62))) "Take the murmur3-32 hash and truncate. Intended to keep the backing array of a hash table small. Note that this increases the chance of collision." - `(logand (murmur3-32 ,value ,size ,seed) #xFF) - ) + `(logand (murmur3-32 ,value ,size ,seed) #xFF)) (defmacro new-hash-table (&key (type basic) &key (size 66)) "This is just an alias for a boxed array of the given type with a default type and size" - `(new 'global 'boxed-array ,type ,size) - ) + `(new 'global 'boxed-array ,type ,size)) (defmacro get-hash (table key &key (key-size 8) &key (seed (the uint 62))) - `(-> ,table (hash-truncate (-> ,key data) :size ,key-size :seed ,seed)) - ) + `(-> ,table (hash-truncate (-> ,key data) :size ,key-size :seed ,seed))) (defmacro set-hash! (table key &key (key-size 8) &key (seed (the uint 62)) value) - `(set! (-> ,table (hash-truncate (-> ,key data) :size ,key-size :seed ,seed)) ,value) - ) - + `(set! (-> ,table (hash-truncate (-> ,key data) :size ,key-size :seed ,seed)) ,value)) ;;;;;;;;;;;;;;;;;; ;; Example usage @@ -120,7 +102,6 @@ ;; ) ;;;;;;;;;;;;;;;;;; - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Jump Table Implementation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -135,23 +116,19 @@ `(begin (let ((highest-value -9999)) ,@(apply (lambda (case) - `(when (>= ,(car case) highest-value) - (when (= ,(car case) highest-value) - (format #t "[WARNING] Duplicate case in jump-table!\n") - ) - (set! highest-value ,(car case)))) - cases) + `(when (>= ,(car case) highest-value) + (when (= ,(car case) highest-value) + (format #t "[WARNING] Duplicate case in jump-table!\n")) + (set! highest-value ,(car case)))) + cases) (define ,table (new 'global 'boxed-array function highest-value)) ,@(apply (lambda (case) - `(set! (-> ,table ,(car case)) (lambda (,@(cadr case)) ,@(cddr case)))) - cases)) - ) - ) + `(set! (-> ,table ,(car case)) (lambda (,@(cadr case)) ,@(cddr case)))) + cases)))) (defmacro jump-to (table key &key (typespec ()) &rest args) "Calls the lambda stored in the jump-table at the given key with the provided arguments" - `((the (function ,@typespec none) (-> ,table ,key)) ,@args) - ) + `((the (function ,@typespec none) (-> ,table ,key)) ,@args)) ;;;;;;;;;;;;;;;;;; ;; Example usage @@ -195,32 +172,22 @@ `(begin (let ((highest-value -9999)) ,@(apply (lambda (case) - `(let ((hash (the int (hash-truncate (-> (symbol->string ,(car case)) data)))) - ) - (when (>= hash highest-value) - (when (= hash highest-value) - (format #t "[WARNING] Hash collision generating jump table!\n")) - (set! highest-value hash) - ) - ) - ) - cases) + `(let ((hash (the int (hash-truncate (-> (symbol->string ,(car case)) data))))) + (when (>= hash highest-value) + (when (= hash highest-value) + (format #t "[WARNING] Hash collision generating jump table!\n")) + (set! highest-value hash)))) + cases) (define ,table (new 'global 'boxed-array function highest-value)) ,@(apply (lambda (case) - ;; Converts the symbol to a string by adding the string offset and then - `(set! (-> ,table (hash-truncate (-> (symbol->string ,(car case)) data))) - (lambda (,@(cadr case)) ,@(cddr case))) - ) - cases) - ) - ) - ) + ;; Converts the symbol to a string by adding the string offset and then + `(set! (-> ,table (hash-truncate (-> (symbol->string ,(car case)) data))) (lambda (,@(cadr case)) ,@(cddr case)))) + cases)))) (defmacro jump-to-sym (table key &key (typespec ()) &rest args) "Calls the lambda stored in the jump-table at the hash of the given key with provided typespec and arguments" - `((the (function ,@typespec none) (-> ,table (hash-truncate (-> (symbol->string ,key) data)))) ,@args) - ) + `((the (function ,@typespec none) (-> ,table (hash-truncate (-> (symbol->string ,key) data)))) ,@args)) ;;;;;;;;;;;;;;;;;; ;; Example usage @@ -237,5 +204,3 @@ ;; prints "floppin, value: 32" ;; (jump-to-sym *test-symbol-table* 'flop :typespec (int) 32) ;;;;;;;;;;;;;;;;;; - - diff --git a/goal_src/jak1/pc/util/knuth-rand.gc b/goal_src/jak1/pc/util/knuth-rand.gc index a886b5b9ef..a5e245e215 100644 --- a/goal_src/jak1/pc/util/knuth-rand.gc +++ b/goal_src/jak1/pc/util/knuth-rand.gc @@ -1,21 +1,17 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/game/settings-h.gc") - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; mimicking Java's util.Random https://docs.oracle.com/javase/8/docs/api/java/util/Random.html ;;;; This is a linear congruential pseudorandom number generator, as defined by D. H. Lehmer ;;;; and described by Donald E. Knuth in The Art of Computer Programming, Volume 3: Seminumerical Algorithms, section 3.2.1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defun scf-time-to-int64 () "pack system time into 64-bits for randomization purposes." (let ((date (new 'stack-no-clear 'scf-time))) (scf-get-time date) - (logior (the int (-> date stat)) (shl (-> date second) 8) (shl (-> date minute) 16) @@ -23,51 +19,39 @@ (shl (-> date week) 32) (shl (-> date day) 40) (shl (-> date month) 48) - (shl (-> date year) 56)) - ) - ) - + (shl (-> date year) 56)))) (deftype knuth-rand-state (structure) - ((seed int64)) - ) + ((seed int64))) (define *knuth-rand-state* (new 'static 'knuth-rand-state)) - (defun knuth-rand-init ((seed int)) - (set! (-> *knuth-rand-state* seed) seed) - ) + (set! (-> *knuth-rand-state* seed) seed)) (defun knuth-rand-advance-seed () ;; seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1) - (set! (-> *knuth-rand-state* seed) (logand (+ (imul64 (-> *knuth-rand-state* seed) #x5deece66d) #xb) (- (shl 1 48) 1))) - ) + (set! (-> *knuth-rand-state* seed) (logand (+ (imul64 (-> *knuth-rand-state* seed) #x5deece66d) #xb) (- (shl 1 48) 1)))) (defun knuth-rand-next ((bits int)) (knuth-rand-advance-seed) ;; return (int)(seed >>> (48 - bits)) - (shr (-> *knuth-rand-state* seed) (- 48 bits)) - ) + (shr (-> *knuth-rand-state* seed) (- 48 bits))) (defun knuth-rand-next-int () (knuth-rand-advance-seed) - (-> *knuth-rand-state* seed) - ) + (-> *knuth-rand-state* seed)) ;; returns a pseudorandom int in the range [min, max) (defun knuth-rand-int-range ((min int) (max int)) (let* ((bound (- max min)) - ;; int bits, val; + ;; int bits, val; (bits 0) (val 0)) - ;; if ((bound & -bound) == bound) // i.e., bound is a power of 2 (if (= (logand bound (- bound)) bound) ;; return (int)((bound * (long)next(31)) >> 31); - (return (+ min (sar (imul64 bound (knuth-rand-next 31)) 31))) - ) - + (return (+ min (sar (imul64 bound (knuth-rand-next 31)) 31)))) ;; do { ;; bits = next(31); ;; val = bits % bound; @@ -75,16 +59,12 @@ ;; return val; (until (not (< (+ bits (- val) bound -1) 0)) (set! bits (knuth-rand-next 31)) - (set! val (mod bits bound)) - ) - (+ min val)) - ) + (set! val (mod bits bound))) + (+ min val))) ;; returns a pseudorandom float in the range [0, 1) (defun knuth-rand-next-float () ;; return next(24) / ((float)(1 << 24)); - (/ (the float (knuth-rand-next 24)) (shl 1 24)) - ) + (/ (the float (knuth-rand-next 24)) (shl 1 24))) (knuth-rand-init (scf-time-to-int64)) - diff --git a/goal_src/jak1/pc/util/pc-anim-util.gc b/goal_src/jak1/pc/util/pc-anim-util.gc index 0e747d6aa9..ca33612b4c 100644 --- a/goal_src/jak1/pc/util/pc-anim-util.gc +++ b/goal_src/jak1/pc/util/pc-anim-util.gc @@ -1,21 +1,20 @@ ;;-*-Lisp-*- (in-package goal) - (require "pc/pckernel-impl.gc") (require "engine/common-obs/process-drawable-h.gc") (require "engine/anim/mspace-h.gc") (require "engine/target/target-h.gc") - #| A random assortment of functions used for manipulating various animations and skeletons in the pc port. This is used for funny cheat codes and the like. |# - (define *cheat-big-head-scale* (new 'static 'vector :x 1.5 :y 1.5 :z 1.5 :w 1.0)) + (define *cheat-huge-head-scale* (new 'static 'vector :x 2.5 :y 2.5 :z 2.5 :w 1.0)) + (define *cheat-small-head-scale* (new 'static 'vector :x 0.667 :y 0.667 :z 0.667 :w 1.0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -32,97 +31,76 @@ This is used for funny cheat codes and the like. (set! (-> out vector 1 data 1) value) (set! (-> out vector 2 data 2) value) (set! (-> out vector 3 data 3) value) - out - ) + out) (defun matrix*!-bone-callback ((the-bone bone) (is-parent? symbol) (mtx matrix) a) "apply a transform matrix to a bone." - (matrix*! (-> the-bone transform) (-> the-bone transform) mtx) - ) - -(defun cspace-map-joints ((proc process-drawable) (cspace-idx int) (include-parent? symbol) (func (function bone symbol object object object)) p0 p1) + (matrix*! (-> the-bone transform) (-> the-bone transform) mtx)) + +(defun cspace-map-joints ((proc process-drawable) + (cspace-idx int) + (include-parent? symbol) + (func (function bone symbol object object object)) + p0 + p1) "run func on all joints' bones that are children of cspace-idx if include-parent? = #t then also apply to that joint." ;; iterate through all cspaces in the process (let ((parent-joint (-> proc node-list data cspace-idx joint))) - (dotimes (i (-> proc node-list length)) - ;; see if it's a joint and keep that for later - (awhen (-> proc node-list data i joint) - (cond - ;; run func if we ARE the parent! - ((= it parent-joint) - ;;(format #t "running map on parent ~A~%" it) - (if include-parent? - (func (-> proc node-list data i bone) #t p0 p1))) - ;; otherwise go up our parents until we hit what we want (yay!) or nothing (nay...) - (else - (let ((cur-parent it)) - (until (or (not cur-parent) (= cur-parent parent-joint)) - (set! cur-parent (-> cur-parent parent)) - ) - (when (= cur-parent parent-joint) + (dotimes (i (-> proc node-list length)) + ;; see if it's a joint and keep that for later + (awhen (-> proc node-list data i joint) + (cond + ;; run func if we ARE the parent! + ((= it parent-joint) + ;;(format #t "running map on parent ~A~%" it) + (if include-parent? (func (-> proc node-list data i bone) #t p0 p1))) + ;; otherwise go up our parents until we hit what we want (yay!) or nothing (nay...) + (else + (let ((cur-parent it)) + (until (or (not cur-parent) (= cur-parent parent-joint)) + (set! cur-parent (-> cur-parent parent))) + (when (= cur-parent parent-joint) ;;(format #t "running map on child ~A~%" it) - (func (-> proc node-list data i bone) #f p0 p1)) - ) - ) - ) - ) - )) - ) + (func (-> proc node-list data i bone) #f p0 p1))))))))) (defun scale-joints ((obj process-drawable) (cspace-idx int) (scale-children? symbol) (scale vector)) "scale a joint (cspace-idx) in an actor. if scale-children? = #t, also scales all child joints." - (if (= cspace-idx -1) - (return #f)) + (if (= cspace-idx -1) (return #f)) (let* ((parent-mtx (-> obj node-list data cspace-idx bone transform)) (unscale-q (matrix-diagonal! (new-stack-matrix0) (/ 1.0 (-> parent-mtx data 15)))) (scale-q (matrix-diagonal! (new-stack-matrix0) (-> parent-mtx data 15))) - (scale-mat (matrix-scale! (new-stack-matrix0) scale)) (parent-fixed (matrix*! (new-stack-matrix0) parent-mtx unscale-q)) - (inv-parent (matrix-4x4-inverse! (new-stack-matrix0) parent-fixed)) ;; bone * inverse(parent * unscale-q) * scale * parent * scale-q - (matrix1 (matrix*! (new-stack-matrix0) inv-parent scale-mat)) (matrix2 (matrix*! (new-stack-matrix0) matrix1 parent-mtx)) - (matrix3 (matrix*! (new-stack-matrix0) matrix2 scale-q)) - ) + (matrix3 (matrix*! (new-stack-matrix0) matrix2 scale-q))) (if scale-children? - (cspace-map-joints obj cspace-idx #t matrix*!-bone-callback matrix3 scale) - (matrix*!-bone-callback (-> obj node-list data cspace-idx bone) #t matrix3 scale) - ) - ) - ) + (cspace-map-joints obj cspace-idx #t matrix*!-bone-callback matrix3 scale) + (matrix*!-bone-callback (-> obj node-list data cspace-idx bone) #t matrix3 scale)))) (defun target-joint-callback-pc ((obj target)) "custom animation callback for *target*" - (let ((neckA-idx (cspace-index-by-name obj "neckA"))) - (cond - ((pc-cheats? (-> *pc-settings* cheats) small-head) (scale-joints obj neckA-idx #t *cheat-small-head-scale*)) - ((pc-cheats? (-> *pc-settings* cheats) huge-head) (scale-joints obj neckA-idx #t *cheat-huge-head-scale*)) - ((pc-cheats? (-> *pc-settings* cheats) big-head) (scale-joints obj neckA-idx #t *cheat-big-head-scale*)) - )) + (cond + ((pc-cheats? (-> *pc-settings* cheats) small-head) (scale-joints obj neckA-idx #t *cheat-small-head-scale*)) + ((pc-cheats? (-> *pc-settings* cheats) huge-head) (scale-joints obj neckA-idx #t *cheat-huge-head-scale*)) + ((pc-cheats? (-> *pc-settings* cheats) big-head) (scale-joints obj neckA-idx #t *cheat-big-head-scale*)))) (when (and (pc-cheats? (-> *pc-settings* cheats) big-fist) (!= 'target-edge-grab (-> obj next-state name))) - (scale-joints obj (cspace-index-by-name obj "sk_lhand") #t *cheat-huge-head-scale*) - (scale-joints obj (cspace-index-by-name obj "sk_rhand") #t *cheat-huge-head-scale*) - ) - 0 (none) - ) + (scale-joints obj (cspace-index-by-name obj "sk_lhand") #t *cheat-huge-head-scale*) + (scale-joints obj (cspace-index-by-name obj "sk_rhand") #t *cheat-huge-head-scale*)) + 0 + (none)) (defun process-drawable-joint-callback-pc ((obj process-drawable)) "custom animation callback for any process drawable" - (when (pc-cheats? (-> *pc-settings* cheats) oh-my-goodness) - ;; don't ask. - (scale-joints obj (cspace-index-by-name obj "lbood") #t (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0)) - (scale-joints obj (cspace-index-by-name obj "rboob") #t (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0)) - ) + ;; don't ask. + (scale-joints obj (cspace-index-by-name obj "lbood") #t (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0)) + (scale-joints obj (cspace-index-by-name obj "rboob") #t (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0))) (when (pc-cheats? (-> *pc-settings* cheats) big-head-npc) - (scale-joints obj (cspace-index-by-name obj "head") #t *cheat-big-head-scale*) - ) - 0 (none) - ) - - + (scale-joints obj (cspace-index-by-name obj "head") #t *cheat-big-head-scale*)) + 0 + (none)) diff --git a/goal_src/jak1/pc/util/pc-pad-utils.gc b/goal_src/jak1/pc/util/pc-pad-utils.gc index 0b5c41eb74..2954f8ecc5 100644 --- a/goal_src/jak1/pc/util/pc-pad-utils.gc +++ b/goal_src/jak1/pc/util/pc-pad-utils.gc @@ -1,13 +1,10 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/dma/dma-buffer.gc") (require "kernel/gstring.gc") (require "kernel/gstate.gc") (require "engine/util/types-h.gc") - - ;; This file is used for debugging and testing the PC port pad (controller/input) implementation. ;; It contains a function for creating a process for debugging cpad inputs and a function to kill that process. ;; It also contains a function to start a process to map keys to cpad inputs (X, circle, etc.), and another one to kill it. @@ -21,74 +18,65 @@ (ml "goal_src/jak1/pc/util/pc-pad-utils.gc") ;; build and load this file. |# - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; a structure to hold the handles used in this file (deftype pc-pad-proc-list (structure) - ((show handle) - (input handle) - ) - ) + ((show handle) + (input handle))) (define *pc-pad-proc-list* (new 'static 'pc-pad-proc-list)) + (set! (-> *pc-pad-proc-list* show) INVALID_HANDLE) + (set! (-> *pc-pad-proc-list* input) INVALID_HANDLE) ;; a pc pad process (deftype pc-pad-proc (process) - ((state-time time-frame) - (input-index uint64) - (pad-idx int64) - ) + ((state-time time-frame) + (input-index uint64) + (pad-idx int64)) :heap-base #x20 (:states - pc-pi-mapping-button - ) - ) + pc-pi-mapping-button)) (define *pc-pad-button-names* - (new 'static 'array string 16 - "SELECT" - "L3" - "R3" - "START" - - "UP" - "RIGHT" - "DOWN" - "LEFT" - - "L2" - "R2" - "L1" - "R1" - - "TRIANGLE" - "CIRCLE" - "X" - "SQUARE" - )) + (new 'static + 'array + string + 16 + "SELECT" + "L3" + "R3" + "START" + "UP" + "RIGHT" + "DOWN" + "LEFT" + "L2" + "R2" + "L1" + "R1" + "TRIANGLE" + "CIRCLE" + "X" + "SQUARE")) ;; there is a matching enum in newpad.h (defenum pc-pad-input-status (disabled) (enabled) - (canceled) - ) - - + (canceled)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defconstant PC_PAD_INPUT_NOTICE_TIME (seconds 1.5)) -(defconstant PC_PAD_TOP_Y 40) - +(defconstant PC_PAD_TOP_Y 40) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; functions @@ -96,221 +84,177 @@ (defun-debug pc-pad-show-start () "Start the PC port pad debug display" - (if (not (handle->process (-> *pc-pad-proc-list* show))) - (let ((procp - (process-spawn-function pc-pad-proc :name 'pc-pad-show - (lambda :behavior pc-pad-proc () - (stack-size-set! (-> self main-thread) 512) - (format #t "Reference keycode constants at https://www.glfw.org/docs/latest/group__keys.html~%") - (loop - (dotimes (_ 9) - (format *stdcon* "~%") - ) - (dotimes (ii 2) - (format *stdcon* " ~0k~3Lcpad ~D~0L~%" ii) - (dotimes (j 8) - (dotimes (i 2) - (format *stdcon* " ") - (let* ( - (btn-idx (+ i(* j 2))) - (btn-name (-> *pc-pad-button-names* btn-idx)) - (keycode (pc-pad-get-mapped-button ii btn-idx)) - ) - (format *stdcon* "~8L~S: " btn-name) - ;; longest button string is TRIANGLE, which is 8 characters in length - ;; but only shows up in the left column. CIRCLE and SQUARE are longest in the right with 6 - (dotimes (_ (- - (cond ((= i 0) 8) ((= i 1) 6)) - (length btn-name))) - (format *stdcon* " ") - ) - (format *stdcon* "~0L~D" keycode) - (when (< keycode 100) - (format *stdcon* " ") - (if (< keycode 10) - (format *stdcon* " ") - ) - ) - ) - ) - (format *stdcon* "~%") - ) - ) - (suspend) - ) - ) - ) - )) - (set! (-> *pc-pad-proc-list* show) (ppointer->handle procp)) - ) - - (format #t "That process is already running. :-)~%") - ) - ) + (let ((procp (process-spawn-function pc-pad-proc + :name 'pc-pad-show + (lambda :behavior pc-pad-proc () + (stack-size-set! (-> self main-thread) 512) + (format #t "Reference keycode constants at https://www.glfw.org/docs/latest/group__keys.html~%") + (loop + (dotimes (_ 9) + (format *stdcon* "~%")) + (dotimes (ii 2) + (format *stdcon* " ~0k~3Lcpad ~D~0L~%" ii) + (dotimes (j 8) + (dotimes (i 2) + (format *stdcon* " ") + (let* ((btn-idx (+ i (* j 2))) + (btn-name (-> *pc-pad-button-names* btn-idx)) + (keycode (pc-pad-get-mapped-button ii btn-idx))) + (format *stdcon* "~8L~S: " btn-name) + ;; longest button string is TRIANGLE, which is 8 characters in length + ;; but only shows up in the left column. CIRCLE and SQUARE are longest in the right with 6 + (dotimes (_ (- (cond + ((= i 0) 8) + ((= i 1) 6)) + (length btn-name))) + (format *stdcon* " ")) + (format *stdcon* "~0L~D" keycode) + (when (< keycode 100) + (format *stdcon* " ") + (if (< keycode 10) (format *stdcon* " "))))) + (format *stdcon* "~%"))) + (suspend)))))) + (set! (-> *pc-pad-proc-list* show) (ppointer->handle procp))) + (format #t "That process is already running. :-)~%"))) (defun-debug pc-pad-show-stop () "Stop the PC port pad debug display" - - (kill-by-name 'pc-pad-show *active-pool*) - ) + (kill-by-name 'pc-pad-show *active-pool*)) (defun-debug pc-pad-input-start ((pad-idx int)) "Start the PC port pad debug key mapping" - (if (not (handle->process (-> *pc-pad-proc-list* input))) - (let ((procp - (process-spawn pc-pad-proc :name 'pc-pad-input - :init (lambda :behavior pc-pad-proc ((pad-idx int)) - (set! (-> self pad-idx) pad-idx) - (pc-pad-input-mode-set #t) - (pc-pad-input-pad-set (-> self pad-idx)) - (go pc-pi-mapping-button) - ) - pad-idx - ) - )) - (set! (-> *pc-pad-proc-list* input) (ppointer->handle procp)) - ) - - (format #t "That process is already running. :-)~%") - ) - ) + (let ((procp (process-spawn pc-pad-proc + :name 'pc-pad-input + :init + (lambda :behavior pc-pad-proc ((pad-idx int)) + (set! (-> self pad-idx) pad-idx) + (pc-pad-input-mode-set #t) + (pc-pad-input-pad-set (-> self pad-idx)) + (go pc-pi-mapping-button)) + pad-idx))) + (set! (-> *pc-pad-proc-list* input) (ppointer->handle procp))) + (format #t "That process is already running. :-)~%"))) (defun-debug pc-pad-input-stop () "Stop the PC port pad debug key mapping" - (kill-by-name 'pc-pad-input *active-pool*) - (pc-pad-input-mode-set 'canceled) - ) - - + (pc-pad-input-mode-set 'canceled)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; behaviors ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defbehavior pc-pi-post pc-pad-proc () - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy (string-format "MAPPING PAD ~D" (-> self pad-idx)) buf 256 PC_PAD_TOP_Y - (font-color red) (font-flags shadow kerning large middle)) - ) - ) - + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy (string-format "MAPPING PAD ~D" (-> self pad-idx)) + buf + 256 + PC_PAD_TOP_Y + (font-color red) + (font-flags shadow kerning large middle)))) (defstatehandler pc-pad-proc :post pc-pi-post) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; states ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defstate pc-pi-new-mapping (pc-pad-proc) - - :enter (behavior () (set! (-> self input-index) (pc-pad-input-index-get)) ) - :code (behavior () + :enter + (behavior () + (set! (-> self input-index) (pc-pad-input-index-get))) + :code + (behavior () (set-state-time) (until (time-passed? PC_PAD_INPUT_NOTICE_TIME) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy (string-format "MAPPED ~D TO ~S!" - (pc-pad-input-key-get) (-> *pc-pad-button-names* (1- (-> self input-index)))) - buf 256 (+ PC_PAD_TOP_Y 64) (font-color green) (font-flags shadow kerning large middle)) - ) - (suspend) - ) - (go pc-pi-mapping-button) - ) - :trans (behavior () - (if (or (!= (-> self input-index) (pc-pad-input-index-get)) - (!= (pc-pad-input-mode-get) (pc-pad-input-status enabled))) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy (string-format "MAPPED ~D TO ~S!" (pc-pad-input-key-get) (-> *pc-pad-button-names* (1- (-> self input-index)))) + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color green) + (font-flags shadow kerning large middle))) + (suspend)) + (go pc-pi-mapping-button)) + :trans + (behavior () + (if (or (!= (-> self input-index) (pc-pad-input-index-get)) (!= (pc-pad-input-mode-get) (pc-pad-input-status enabled))) ;; something's changed, go back to the main state and check everything - (go pc-pi-mapping-button) - ) - (none) - ) - - ) + (go pc-pi-mapping-button)) + (none))) (defstate pc-pi-canceled (pc-pad-proc) - - :code (behavior () + :code + (behavior () (set-state-time) (until (time-passed? PC_PAD_INPUT_NOTICE_TIME) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy "CANCELED!" buf 256 (+ PC_PAD_TOP_Y 64) (font-color red-reverse) (font-flags shadow kerning large middle)) - ) - (suspend) - ) - ) - ) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy "CANCELED!" + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color red-reverse) + (font-flags shadow kerning large middle))) + (suspend)))) (defstate pc-pi-done (pc-pad-proc) - - :enter (behavior () (set! (-> self input-index) 16)) - :code (behavior () + :enter + (behavior () + (set! (-> self input-index) 16)) + :code + (behavior () (pc-pad-input-map-save!) (set-state-time) (until (time-passed? PC_PAD_INPUT_NOTICE_TIME) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy (string-format "MAPPED ~D TO ~S!" - (pc-pad-input-key-get) (-> *pc-pad-button-names* (1- (-> self input-index)))) - buf 256 (+ PC_PAD_TOP_Y 64) (font-color green) (font-flags shadow kerning large middle)) - ) - (suspend) - ) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy (string-format "MAPPED ~D TO ~S!" (pc-pad-input-key-get) (-> *pc-pad-button-names* (1- (-> self input-index)))) + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color green) + (font-flags shadow kerning large middle))) + (suspend)) (set-state-time) (until (time-passed? PC_PAD_INPUT_NOTICE_TIME) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy (string-format "KEY MAPPING COMPLETE!~%SETTINGS SAVED.") buf 256 (+ PC_PAD_TOP_Y 64) (font-color green) (font-flags shadow kerning large middle)) - ) - (suspend) - ) - ) - ) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy (string-format "KEY MAPPING COMPLETE!~%SETTINGS SAVED.") + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color green) + (font-flags shadow kerning large middle))) + (suspend)))) (defstate pc-pi-mapping-button (pc-pad-proc) - - :code (behavior () + :code + (behavior () (loop - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy "PRESS ESCAPE TO EXIT" buf 256 (+ PC_PAD_TOP_Y 32) (font-color default) (font-flags shadow kerning large middle)) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy "PRESS ESCAPE TO EXIT" + buf + 256 + (+ PC_PAD_TOP_Y 32) + (font-color default) + (font-flags shadow kerning large middle)) (draw-string-xy (string-format "PRESS KEY FOR ~S" (-> *pc-pad-button-names* (-> self input-index))) - buf 256 (+ PC_PAD_TOP_Y 64) (font-color default) (font-flags shadow kerning large middle)) - ) - (suspend) - ) - ) - :trans (behavior () + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color default) + (font-flags shadow kerning large middle))) + (suspend))) + :trans + (behavior () (cond ;; canceled - ((= (pc-pad-input-mode-get) (pc-pad-input-status canceled)) - (go pc-pi-canceled) - ) + ((= (pc-pad-input-mode-get) (pc-pad-input-status canceled)) (go pc-pi-canceled)) ;; finished - ((or (>= (pc-pad-input-index-get) 16) - (= (pc-pad-input-mode-get) (pc-pad-input-status disabled))) - (go pc-pi-done) - ) + ((or (>= (pc-pad-input-index-get) 16) (= (pc-pad-input-mode-get) (pc-pad-input-status disabled))) (go pc-pi-done)) ;; waiting input - ((= (-> self input-index) (pc-pad-input-index-get)) - ) + ((= (-> self input-index) (pc-pad-input-index-get))) ;; one input has been done! - ((= (1+ (-> self input-index)) (pc-pad-input-index-get)) - (go pc-pi-new-mapping) - ) + ((= (1+ (-> self input-index)) (pc-pad-input-index-get)) (go pc-pi-new-mapping)) ;; more than one input has been done. go to last mapping. - ((< (1+ (-> self input-index)) (pc-pad-input-index-get)) - (go pc-pi-new-mapping) - ) - ) - ) - - ) - - + ((< (1+ (-> self input-index)) (pc-pad-input-index-get)) (go pc-pi-new-mapping))))) diff --git a/goal_src/jak2/engine/debug/default-menu.gc b/goal_src/jak2/engine/debug/default-menu.gc index 9fbb29aea7..6103f2de2d 100644 --- a/goal_src/jak2/engine/debug/default-menu.gc +++ b/goal_src/jak2/engine/debug/default-menu.gc @@ -3055,6 +3055,13 @@ #f ) +(defun dm-game-opengoal-cheat-toggle-pick-func ((arg0 int) (arg1 debug-menu-msg)) + (if (= arg1 (debug-menu-msg press)) + (logxor! (-> *pc-settings* cheats) (the-as uint (/ arg0 8))) + ) + (logtest? (-> *pc-settings* cheats) (/ arg0 8)) + ) + (defun debug-menu-context-make-default-menus ((arg0 debug-menu-context)) (local-vars (sv-16 debug-menu-context)) (let ((s5-0 (new 'debug 'debug-menu arg0 "Main menu"))) @@ -3205,6 +3212,40 @@ ) (function "Continue Start" #f ,(lambda () (start 'play (-> *game-info* current-continue)))) (function "Kiosk Reset" #f ,(lambda () (auto-save-command 'restore 0 0 *default-pool* #f) (none))) + ;; og:preserve-this new menu option + (function "Give Ammo and Collectables" #f ,(lambda () (send-event *target* 'get-pickup (pickup-type ammo-yellow) 1000.0) (send-event *target* 'get-pickup (pickup-type ammo-red) 1000.0) (send-event *target* 'get-pickup (pickup-type ammo-blue) 1000.0) (send-event *target* 'get-pickup (pickup-type ammo-dark) 1000.0) (send-event *target* 'get-pickup (pickup-type eco-pill-dark) 1000.0) (send-event *target* 'get-pickup (pickup-type skill) 1000.0) (send-event *target* 'get-pickup (pickup-type gem) 5000.0))) + (function "Unlock Everything" #f ,(lambda () (logior! (-> *game-info* features) (game-feature gun gun-yellow gun-red gun-blue gun-dark gun-upgrade-speed gun-upgrade-ammo gun-upgrade-damage pass-red pass-green pass-yellow pass-blue board darkjak darkjak-bomb0 darkjak-bomb1 darkjak-invinc darkjak-giant)))) + (function "Finish Story" #f ,(lambda () (task-node-close! (game-task-node city-win-introduction)))) + (function "Finish Optional Missions" + #f + ,(lambda () + (task-node-close! (game-task-node city-oracle-level3-training)) + (task-node-close! (game-task-node city-burning-bush-ring-1-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-1-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-2-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-3-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-4-resolution)) + (task-node-close! (game-task-node city-burning-bush-collection-1-resolution)) + (task-node-close! (game-task-node city-burning-bush-racepoint-1-resolution)) + (task-node-close! (game-task-node city-burning-bush-ring-2-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-5-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-6-resolution)) + (task-node-close! (game-task-node city-burning-bush-shuttle-1-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-7-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-8-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-9-resolution)) + (task-node-close! (game-task-node city-burning-bush-collection-2-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-10-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-11-resolution)) + (task-node-close! (game-task-node city-burning-bush-ring-3-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-12-resolution)) + (task-node-close! (game-task-node city-burning-bush-bombbot-1-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-13-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-14-resolution)) + (task-node-close! (game-task-node city-burning-bush-get-to-15-resolution)) + (task-node-close! (game-task-node city-burning-bush-collection-3-resolution)) + (task-node-close! (game-task-node city-burning-bush-race-errol-resolution)) + (task-node-close! (game-task-node city-burning-bush-race-port-resolution)))) (menu "Secrets" (flag "toggle-beard" 1 dm-game-secret-toggle-pick-func) @@ -3218,7 +3259,7 @@ (flag "level-select" 256 dm-game-secret-toggle-pick-func) (flag "scrap-book-1" 512 dm-game-secret-toggle-pick-func) (flag "scrap-book-2" 1024 dm-game-secret-toggle-pick-func) - ;; ;; og:preserve-this they missed one! + ;; og:preserve-this they missed one! (flag "scrap-book-3" 2048 dm-game-secret-toggle-pick-func) (flag "gungame-blue" 4096 dm-game-secret-toggle-pick-func) (flag "gungame-dark" 8192 dm-game-secret-toggle-pick-func) @@ -3227,6 +3268,30 @@ (flag "big-head" 65536 dm-game-secret-toggle-pick-func) (flag "little-head" 131072 dm-game-secret-toggle-pick-func) ) + ;; og:preserve-this new menu + (menu + "OpenGOAL Cheats" + (flag "turbo-board" 1 dm-game-opengoal-cheat-toggle-pick-func) + (flag "health-bars" 2 dm-game-opengoal-cheat-toggle-pick-func) + (flag "vehicle-health-bars" 4 dm-game-opengoal-cheat-toggle-pick-func) + (flag "vehicle-invuln" 8 dm-game-opengoal-cheat-toggle-pick-func) + (flag "statistics" 16 dm-game-opengoal-cheat-toggle-pick-func) + (flag "suck-in-all" 32 dm-game-opengoal-cheat-toggle-pick-func) + (flag "music-player" 64 dm-game-opengoal-cheat-toggle-pick-func) + (flag "no-textures" 128 dm-game-opengoal-cheat-toggle-pick-func) + (flag "fast-movies" 256 dm-game-opengoal-cheat-toggle-pick-func) + (flag "slow-movies" 512 dm-game-opengoal-cheat-toggle-pick-func) + (flag "fast-speed" 1024 dm-game-opengoal-cheat-toggle-pick-func) + (flag "slow-speed" 2048 dm-game-opengoal-cheat-toggle-pick-func) + (flag "fast-travel" 4096 dm-game-opengoal-cheat-toggle-pick-func) + (flag "orb-tracker" 8192 dm-game-opengoal-cheat-toggle-pick-func) + (flag "real-time-of-day" 16384 dm-game-opengoal-cheat-toggle-pick-func) + (flag "city-peace" 32768 dm-game-opengoal-cheat-toggle-pick-func) + (flag "board-tricks" 65536 dm-game-opengoal-cheat-toggle-pick-func) + (flag "weather-bad" 131072 dm-game-opengoal-cheat-toggle-pick-func) + (flag "weather-good" 262144 dm-game-opengoal-cheat-toggle-pick-func) + (flag "hijack-lines" 524288 dm-game-opengoal-cheat-toggle-pick-func) + ) (menu "Continue") (menu "Settings" diff --git a/goal_src/jak2/pc/subtitle2-h.gc b/goal_src/jak2/pc/subtitle2-h.gc index e42c6e6ae7..d684b6e15e 100644 --- a/goal_src/jak2/pc/subtitle2-h.gc +++ b/goal_src/jak2/pc/subtitle2-h.gc @@ -93,6 +93,9 @@ (citizen-female) (oracle) (precursor) + (metalkor-before-consite) + (metalkor-intro) + (max)) @@ -352,6 +355,8 @@ (set-subtitle-speaker-color! citizen-male (static-rgba #x70 #x70 #x70 #x80)) (set-subtitle-speaker-color! citizen-female (static-rgba #x70 #x70 #x70 #x80)) + (set-subtitle-speaker-color<-speaker! metalkor-before-consite metalkor) + (set-subtitle-speaker-color<-speaker! metalkor-intro metalkor) (set-subtitle-speaker-color<-speaker! kid jak) (set-subtitle-speaker-color<-speaker! guard-a guard) (set-subtitle-speaker-color<-speaker! guard-b guard) diff --git a/goal_src/jak3/engine/ambient/ambient-h.gc b/goal_src/jak3/engine/ambient/ambient-h.gc index abc073f057..46c6b4c086 100644 --- a/goal_src/jak3/engine/ambient/ambient-h.gc +++ b/goal_src/jak3/engine/ambient/ambient-h.gc @@ -25,6 +25,11 @@ (define-extern talker-surpress! (function int)) (define-extern voicebox-spawn (function process-drawable vector (pointer process))) +(declare-type talker-speech-class structure) +(define-extern talker-spawn-func (function talker-speech-class process-tree vector region sound-id)) +(declare-type talker process) +(define-extern talker-init (function talker-speech-class vector region none :behavior talker)) + ;; DECOMP BEGINS (deftype talker-speech-class (structure) @@ -51,7 +56,6 @@ ) ) -(define-extern talker-spawn-func (function talker-speech-class process-tree vector region sound-id)) (deftype talker (process) ((trans vector :inline) @@ -78,7 +82,6 @@ ) ) -(define-extern talker-init (function talker-speech-class vector region none :behavior talker)) (define *talker-speech* (new 'static 'inline-array talker-speech-class 365 (new 'static 'talker-speech-class :name "none") @@ -89,7 +92,7 @@ :speech #x1 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -100,7 +103,7 @@ :speech #x2 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-040a) + :text-message (text-id double-jump-how-to) :on-close #f :camera #f ) @@ -111,7 +114,7 @@ :speech #x3 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-040b) + :text-message (text-id press-or-to-attack) :on-close #f :camera #f ) @@ -122,7 +125,7 @@ :speech #x4 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-040b) + :text-message (text-id press-or-to-attack) :on-close #f :camera #f ) @@ -142,7 +145,7 @@ :speech #x6 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-040d) + :text-message (text-id ground-pound-how-to) :on-close #f :camera #f ) @@ -162,7 +165,7 @@ :speech #x8 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0409) + :text-message (text-id roll-how-to) :on-close #f :camera #f ) @@ -173,7 +176,7 @@ :speech #x9 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -184,7 +187,7 @@ :speech #xa :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -195,7 +198,7 @@ :speech #xb :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -206,7 +209,7 @@ :speech #xc :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -235,7 +238,7 @@ :speech #xf :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -246,7 +249,7 @@ :speech #x10 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040a) + :text-message (text-id double-jump-how-to) :on-close #f :camera #f ) @@ -257,7 +260,7 @@ :speech #x11 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040a) + :text-message (text-id double-jump-how-to) :on-close #f :camera #f ) @@ -268,7 +271,7 @@ :speech #x12 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0409) + :text-message (text-id roll-how-to) :on-close #f :camera #f ) @@ -288,7 +291,7 @@ :speech #x14 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -330,7 +333,7 @@ :speech #x18 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040d) + :text-message (text-id ground-pound-how-to) :on-close #f :camera #f ) @@ -742,7 +745,7 @@ :speech #x44 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -753,7 +756,7 @@ :speech #x45 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -764,7 +767,7 @@ :speech #x46 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0409) + :text-message (text-id roll-how-to) :on-close #f :camera #f ) @@ -786,7 +789,7 @@ :speech #x48 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040a) + :text-message (text-id double-jump-how-to) :on-close #f :camera #f ) @@ -808,7 +811,7 @@ :speech #x4a :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -819,7 +822,7 @@ :speech #x4b :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -830,7 +833,7 @@ :speech #x4c :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -841,7 +844,7 @@ :speech #x4d :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -852,7 +855,7 @@ :speech #x4e :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040d) + :text-message (text-id ground-pound-how-to) :on-close #f :camera #f ) @@ -863,7 +866,7 @@ :speech #x4f :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040d) + :text-message (text-id ground-pound-how-to) :on-close #f :camera #f ) @@ -993,7 +996,7 @@ :speech #x5c :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0888) + :text-message (text-id use-turbo-to-break-obstacles) :on-close #f :camera #f ) @@ -1119,7 +1122,7 @@ :speech #x69 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-06df) + :text-message (text-id activate-statue-by-punching-kicking-nose) :on-close #f :camera #f ) @@ -1474,7 +1477,7 @@ :text-duration (seconds 5) :delay (seconds 1) :neg #x1 - :text-message (text-id text-07ba) + :text-message (text-id you-can-now-afford-to-purchase-new-secrets) :on-close #f :camera #f ) @@ -1486,7 +1489,7 @@ :text-duration (seconds 5) :delay (seconds 1) :neg #x1 - :text-message (text-id text-0857) + :text-message (text-id new-secrets-available) :on-close #f :camera #f ) @@ -1498,7 +1501,7 @@ :text-duration (seconds 5) :delay (seconds 1) :neg #x1 - :text-message (text-id text-0858) + :text-message (text-id secrets-still-available) :on-close #f :camera #f ) @@ -1510,7 +1513,7 @@ :text-duration (seconds 10) :delay (seconds 1) :neg #x1 - :text-message (text-id text-0892) + :text-message (text-id congrats-600-orbs-new-duds) :on-close #f :camera #f ) @@ -1678,7 +1681,7 @@ :text-duration (seconds 5) :pos #x3 :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -1689,7 +1692,7 @@ :text-duration (seconds 5) :pos #x3 :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -1700,7 +1703,7 @@ :text-duration (seconds 5) :pos #x3 :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -1711,7 +1714,7 @@ :text-duration (seconds 5) :pos #x3 :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -3232,7 +3235,7 @@ :speech #x15c :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-077b) + :text-message (text-id press-to-grab-objects) :on-close #f :camera #f ) @@ -3243,7 +3246,7 @@ :speech #x15d :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0807) + :text-message (text-id press-to-place-held-objects) :on-close #f :camera #f ) @@ -3254,7 +3257,7 @@ :speech #x15e :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0864) + :text-message (text-id hold-to-use-shield) :on-close #f :camera #f ) @@ -3284,7 +3287,7 @@ :speech #x161 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-07b4) + :text-message (text-id dark-strike-how-to) :on-close #f :camera #f ) @@ -3295,7 +3298,7 @@ :speech #x162 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-07c3) + :text-message (text-id use-the-wave-concussor) :on-close #f :camera #f ) @@ -3306,7 +3309,7 @@ :speech #x163 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-07c4) + :text-message (text-id hold-to-charge-and-then-release-to-fire-bigger-blast) :on-close #f :camera #f ) @@ -3371,7 +3374,7 @@ :speech #x16a :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0862) + :text-message (text-id hold-to-auto-fire) :on-close #f :camera #f ) @@ -3391,7 +3394,7 @@ :speech #x16c :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0886) + :text-message (text-id press-again-to-make-gyro-burster-hover-in-place) :on-close #f :camera #f ) diff --git a/goal_src/jak3/engine/common-obs/airlock.gc b/goal_src/jak3/engine/common-obs/airlock.gc index f855e39840..cc2779338c 100644 --- a/goal_src/jak3/engine/common-obs/airlock.gc +++ b/goal_src/jak3/engine/common-obs/airlock.gc @@ -720,7 +720,8 @@ (goto cfg-42) ) (suspend) - (ja :num! (seek! 0.0 (-> self close-speed-multiplier))) + ;; og:preserve-this added speed modifier + (ja :num! (seek! 0.0 (* (get-airlock-close-speed *pc-settings*) (-> self close-speed-multiplier)))) (transform-post) ) (label cfg-42) @@ -887,7 +888,8 @@ ) (rotate-gear! self 65536.0) (suspend) - (ja :num! (seek! (ja-aframe (-> self lock-frame) 0) (-> self pre-open-speed))) + ;; og:preserve-this added speed modifier + (ja :num! (seek! (ja-aframe (-> self lock-frame) 0) (* (get-airlock-speed *pc-settings*) (-> self pre-open-speed)))) (transform-post) ) (when (nonzero? (-> self sound-id)) @@ -917,7 +919,8 @@ ) (rotate-gear! self 65536.0) (suspend) - (ja :num! (seek! (ja-aframe (-> self open-frame) 0) 2.0)) + ;; og:preserve-this added speed modifier + (ja :num! (seek! (ja-aframe (-> self open-frame) 0) (* (get-airlock-speed *pc-settings*) 2.0))) (transform-post) ) (when (nonzero? (-> self sound-id)) @@ -970,7 +973,8 @@ (while (not (ja-max? 0)) (rotate-gear! self 65536.0) (suspend) - (ja :num! (seek!)) + ;; og:preserve-this added speed modifier + (ja :num! (seek! max (get-airlock-speed *pc-settings*))) (transform-post) ) (when (nonzero? (-> self sound-id)) diff --git a/goal_src/jak3/engine/common-obs/collectables.gc b/goal_src/jak3/engine/common-obs/collectables.gc index f6889ddfc1..119b912b36 100644 --- a/goal_src/jak3/engine/common-obs/collectables.gc +++ b/goal_src/jak3/engine/common-obs/collectables.gc @@ -2410,6 +2410,13 @@ (if arg5 (mem-copy! (&-> sv-56 type) (&-> arg5 type) 40) ) + ;; og:preserve-this pc port cheat + (#when PC_PORT + (when (and (pc-cheats? (-> *pc-settings* cheats) suck-in-all) + (!= arg1 (pickup-type skill))) + (logior! (-> sv-56 options) (actor-option suck-in)) + ) + ) (set! (-> sv-56 pickup-type) s2-0) (if (not (logtest? (actor-option dont-override-fact) (-> sv-56 options))) (set! (-> sv-56 pickup-spawn-amount) 1.0) diff --git a/goal_src/jak3/engine/gfx/foreground/foreground.gc b/goal_src/jak3/engine/gfx/foreground/foreground.gc index 9b0eef85a5..f3ff9fd955 100644 --- a/goal_src/jak3/engine/gfx/foreground/foreground.gc +++ b/goal_src/jak3/engine/gfx/foreground/foreground.gc @@ -2367,6 +2367,6 @@ (define *foreground* (new 'global 'foreground-globals)) -(define *foreground-draw-engine* (new 'global 'engine 'draw 768 connection)) +(define *foreground-draw-engine* (new 'global 'engine 'draw PROCESS_HEAP_MAX connection)) (kmemclose) diff --git a/goal_src/jak3/engine/gfx/mood/time-of-day.gc b/goal_src/jak3/engine/gfx/mood/time-of-day.gc index b0d19b69cf..9a1ea646b2 100644 --- a/goal_src/jak3/engine/gfx/mood/time-of-day.gc +++ b/goal_src/jak3/engine/gfx/mood/time-of-day.gc @@ -530,7 +530,7 @@ (dotimes (v1-19 (-> *level* length)) (let ((a0-52 (-> *level* level v1-19))) (when (= (-> a0-52 status) 'active) - (if (logtest? (-> a0-52 info level-flags) (level-flags lf9)) + (if (logtest? (-> a0-52 info level-flags) (level-flags sky)) (set! (-> arg0 sky) #t) ) (if (and (= (-> a0-52 display?) 'display) (-> a0-52 info special-mood)) diff --git a/goal_src/jak3/engine/gfx/ocean/ocean.gc b/goal_src/jak3/engine/gfx/ocean/ocean.gc index c550f3da68..efa2aedc32 100644 --- a/goal_src/jak3/engine/gfx/ocean/ocean.gc +++ b/goal_src/jak3/engine/gfx/ocean/ocean.gc @@ -1275,7 +1275,7 @@ (let ((s5-0 (-> *level* draw-level v1-2))) (when (and s5-0 (= (-> s5-0 status) 'active)) (when (= (-> s5-0 display?) 'display) - (if (logtest? (-> s5-0 info level-flags) (level-flags lf13)) + (if (logtest? (-> s5-0 info level-flags) (level-flags ocean-far)) (set! (-> this far-on) #t) ) (let ((a0-13 (-> s5-0 info ocean))) @@ -1289,10 +1289,12 @@ ((and a0-13 (nonzero? (-> a0-13 value))) (set! *ocean-map* (the-as ocean-map (-> a0-13 value))) (set-height! *ocean-map* (-> s5-0 info ocean-height)) - (if (logtest? (level-flags lf20) (-> s5-0 info level-flags)) + (if (logtest? (level-flags ocean-all) (-> s5-0 info level-flags)) (set! (-> this all-on) #t) ) - (set! (-> this ocean-near-translucent?) (logtest? (-> s5-0 info level-flags) (level-flags lf12))) + (set! (-> this ocean-near-translucent?) + (logtest? (-> s5-0 info level-flags) (level-flags ocean-near-translucent)) + ) (goto cfg-24) ) ) diff --git a/goal_src/jak3/engine/gfx/sky/sky-tng.gc b/goal_src/jak3/engine/gfx/sky/sky-tng.gc index 682c507601..ca03233c1a 100644 --- a/goal_src/jak3/engine/gfx/sky/sky-tng.gc +++ b/goal_src/jak3/engine/gfx/sky/sky-tng.gc @@ -265,11 +265,6 @@ (defmethod draw-clouds ((this sky-work) (arg0 dma-buffer)) (local-vars (v1-19 float) (sv-16 cloud-vert-array) (sv-20 (inline-array sky-vertex)) (sv-32 int)) - - (when (zero? *sky-texture-anim-array*) ;; added - (return #f) - ) - (rlet ((vf23 :class vf) (vf27 :class vf) ) @@ -549,40 +544,36 @@ ) (defmethod draw-fog ((this sky-work) (arg0 dma-buffer)) - (when (zero? *sky-texture-anim-array*) ;; added - (return #f) - ) (let ((s4-0 (-> *sky-texture-anim-array* array-data 8 tex))) (if s4-0 (dma-buffer-add-gs-set arg0 (tex0-1 (new 'static 'gs-tex0 - :tcc #x1 - :cld #x1 - :psm (the-as int (-> s4-0 psm)) - :cpsm (-> s4-0 clutpsm) - :cbp (-> s4-0 clutdest) - :th (log2 (-> s4-0 h)) - :tw (log2 (-> s4-0 w)) - :tbw (-> s4-0 width 0) - :tbp0 (-> s4-0 dest 0) - ) + :tcc #x1 + :cld #x1 + :psm (the-as int (-> s4-0 psm)) + :cpsm (-> s4-0 clutpsm) + :cbp (-> s4-0 clutdest) + :th (log2 (-> s4-0 h)) + :tw (log2 (-> s4-0 w)) + :tbw (-> s4-0 width 0) + :tbp0 (-> s4-0 dest 0) + ) ) (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) (test-1 (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x70 - :afail #x3 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x70 + :afail #x3 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) ) (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) ) ) ) - (let* ((v1-26 (the-as (inline-array qword) (-> arg0 base))) (a0-22 *fog-texture-work*) (f0-0 (-> a0-22 min-corner y)) @@ -651,7 +642,7 @@ (dotimes (a0-1 (-> *level* length)) (let ((a1-3 (-> *level* level a0-1))) (when (= (-> a1-3 status) 'active) - (if (and (= (-> a1-3 display?) 'display) (logtest? (-> a1-3 info level-flags) (level-flags lf9))) + (if (and (= (-> a1-3 display?) 'display) (logtest? (-> a1-3 info level-flags) (level-flags sky))) (set! v1-0 #t) ) ) @@ -677,7 +668,7 @@ (let ((s4-1 (the-as sky-work *fake-scratchpad-data*))) (mem-copy! (the-as pointer s4-1) (the-as pointer this) #x2814) (setup-stars s4-1 (-> s4-1 star-mat) (-> this upload-data)) - (when (nonzero? (-> s4-1 star-colors 0 x)) + (if (nonzero? (-> s4-1 star-colors 0 x)) (stars-transform-asm s4-1) ) (cond diff --git a/goal_src/jak3/engine/gfx/texture/texture-anim-tables.gc b/goal_src/jak3/engine/gfx/texture/texture-anim-tables.gc index db9d40f854..d74ed8ded9 100644 --- a/goal_src/jak3/engine/gfx/texture/texture-anim-tables.gc +++ b/goal_src/jak3/engine/gfx/texture/texture-anim-tables.gc @@ -5,14 +5,6 @@ ;; name in dgo: texture-anim-tables ;; dgos: GAME -(define-extern *sky-texture-anim-array* (texture-anim-array texture-anim)) -(define-extern *darkjak-texture-anim-array* (texture-anim-array texture-anim)) -(define-extern *darkjak-highres-texture-anim-array* (texture-anim-array texture-anim)) -(define-extern *skull-gem-texture-anim-array* (texture-anim-array texture-anim)) -(define-extern *default-water-texture-anim-array* (texture-anim-array texture-anim)) -(define-extern *default-warp-texture-anim-array* (texture-anim-array texture-anim)) -(define-extern set-darkjak-texture-morph! (function float none)) - ;; DECOMP BEGINS (define *sky-texture-anim-array* diff --git a/goal_src/jak3/engine/level/level-h.gc b/goal_src/jak3/engine/level/level-h.gc index 1f6688160e..d7734a7ce8 100644 --- a/goal_src/jak3/engine/level/level-h.gc +++ b/goal_src/jak3/engine/level/level-h.gc @@ -172,37 +172,27 @@ :type uint32 :bitfield #t (lf0 0) - (lf1 1) - (lf2 2) - (lf3 3) - (lf4 4) - (lf5 5) - (lf6 6) - (lf7 7) - (lf8 8) - (lf9 9) + (not-physical 1) + (ctycar 2) + (ctypes 3) + (external 4) + (title 5) + (borrow-load 6) + (end-mode 7) + (flut 8) + (sky 9) (use-camera-other 10) - (lf11 11) - (lf12 12) - (lf13 13) + (display-wait 11) + (ocean-near-translucent 12) + (ocean-far 13) (low-res-hfrag 14) - (lf15 15) - (lf16 16) - (lf17 17) - (lf18 18) - (lf19 19) - (lf20 20) + (city-borrow-available 15) + (mech 16) + (allow-unloaded 17) + (check-taskname-for-continue 18) + (city-borrow-high-priority 19) + (ocean-all 20) (desert 21) - (lf22 22) - (lf23 23) - (lf24 24) - (lf25 25) - (lf26 26) - (lf27 27) - (lf28 28) - (lf29 29) - (lf30 30) - (lf31 31) ) ;; ---level-flags diff --git a/goal_src/jak3/engine/level/level-info.gc b/goal_src/jak3/engine/level/level-info.gc index bd81ddfcfb..c0cb0641be 100644 --- a/goal_src/jak3/engine/level/level-info.gc +++ b/goal_src/jak3/engine/level/level-info.gc @@ -35,7 +35,7 @@ :taskname 'default :index 1 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '() :memory-mode (level-memory-mode large) @@ -69,7 +69,7 @@ :taskname 'default :index 2 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '("intro") :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -101,7 +101,7 @@ :taskname 'default :index 3 :master-level #f - :level-flags (level-flags lf5 lf12) + :level-flags (level-flags title ocean-near-translucent) :packages '("dust-stormp" "title") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -302,7 +302,7 @@ :index 4 :task-level #x1 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '("vinroom") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -477,7 +477,7 @@ :taskname 'default :index 5 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -510,7 +510,7 @@ :taskname 'default :index 6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -544,7 +544,7 @@ :index 7 :task-level #x1 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -578,7 +578,7 @@ :task-level #x1 :part-engine-max #x4 :master-level #f - :level-flags (level-flags lf0 lf1 lf7 lf12 lf17) + :level-flags (level-flags lf0 not-physical end-mode ocean-near-translucent allow-unloaded) :packages '("marketp" "vehiclep" "nav-graphp" "hvehiclep" "ctywide") :run-packages '("common") :memory-mode (level-memory-mode city-center) @@ -621,7 +621,7 @@ :index 9 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -656,7 +656,7 @@ :index 10 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -691,7 +691,7 @@ :index 11 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -726,7 +726,7 @@ :index 12 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -761,7 +761,7 @@ :index 13 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -796,7 +796,7 @@ :index 14 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -830,7 +830,7 @@ :index 15 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -864,7 +864,7 @@ :index 16 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -898,7 +898,7 @@ :index 17 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf2 lf12) + :level-flags (level-flags lf0 not-physical ctycar ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -931,7 +931,7 @@ :index 18 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12 lf19) + :level-flags (level-flags lf0 not-physical ocean-near-translucent city-borrow-high-priority) :packages '("cty-kg-vehicles") :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -964,7 +964,7 @@ :index 19 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf2 lf12) + :level-flags (level-flags lf0 not-physical ctycar ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -997,7 +997,7 @@ :index 20 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf2 lf12) + :level-flags (level-flags lf0 not-physical ctycar ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1030,7 +1030,7 @@ :index 21 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1063,7 +1063,7 @@ :index 22 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1087,71 +1087,73 @@ ) ) -(define lblowtmh (new 'static 'level-load-info - :name 'lblowtmh - :visname 'lblowtmh-vis - :nickname 'lblowtmh - :dbname 'lblowtmh - :taskname 'city - :index 23 - :task-level #x1 - :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf11 lf12 lf19) - :packages '() - :run-packages '("common") - :memory-mode (level-memory-mode borrow-city-small) - :music-bank #f - :extra-sound-bank #f - :mood-func 'update-mood-copy-parent - :special-mood #f - :ocean #f - :ocean-alpha 1.0 - :priority 100 - :draw-priority 10.0 - :bigmap-id (bigmap-id no-map) - :continues '() - :callback-list '() - :borrow #f - :bottom-height (meters -20) - :fog-height (meters 80) - :max-rain 1.0 - :fog-mult 1.0 - :mood-range (new 'static 'mood-range :max-cloud 1.0 :min-fog 0.5 :max-fog 1.0) - ) - ) +(define lblowtmh + (new 'static 'level-load-info + :name 'lblowtmh + :visname 'lblowtmh-vis + :nickname 'lblowtmh + :dbname 'lblowtmh + :taskname 'city + :index 23 + :task-level #x1 + :master-level 'ctywide + :level-flags (level-flags lf0 not-physical display-wait ocean-near-translucent city-borrow-high-priority) + :packages '() + :run-packages '("common") + :memory-mode (level-memory-mode borrow-city-small) + :music-bank #f + :extra-sound-bank #f + :mood-func 'update-mood-copy-parent + :special-mood #f + :ocean #f + :ocean-alpha 1.0 + :priority 100 + :draw-priority 10.0 + :bigmap-id (bigmap-id no-map) + :continues '() + :callback-list '() + :borrow #f + :bottom-height (meters -20) + :fog-height (meters 80) + :max-rain 1.0 + :fog-mult 1.0 + :mood-range (new 'static 'mood-range :max-cloud 1.0 :min-fog 0.5 :max-fog 1.0) + ) + ) -(define lblowtkg (new 'static 'level-load-info - :name 'lblowtkg - :visname 'lblowtkg-vis - :nickname 'lblowtkg - :dbname 'lblowtkg - :taskname 'city - :index 24 - :task-level #x1 - :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf11 lf12 lf19) - :packages '() - :run-packages '("common") - :memory-mode (level-memory-mode borrow-city-small) - :music-bank #f - :extra-sound-bank #f - :mood-func 'update-mood-copy-parent - :special-mood #f - :ocean #f - :ocean-alpha 1.0 - :priority 100 - :draw-priority 10.0 - :bigmap-id (bigmap-id no-map) - :continues '() - :callback-list '() - :borrow #f - :bottom-height (meters -20) - :fog-height (meters 80) - :max-rain 1.0 - :fog-mult 1.0 - :mood-range (new 'static 'mood-range :max-cloud 1.0 :min-fog 0.5 :max-fog 1.0) - ) - ) +(define lblowtkg + (new 'static 'level-load-info + :name 'lblowtkg + :visname 'lblowtkg-vis + :nickname 'lblowtkg + :dbname 'lblowtkg + :taskname 'city + :index 24 + :task-level #x1 + :master-level 'ctywide + :level-flags (level-flags lf0 not-physical display-wait ocean-near-translucent city-borrow-high-priority) + :packages '() + :run-packages '("common") + :memory-mode (level-memory-mode borrow-city-small) + :music-bank #f + :extra-sound-bank #f + :mood-func 'update-mood-copy-parent + :special-mood #f + :ocean #f + :ocean-alpha 1.0 + :priority 100 + :draw-priority 10.0 + :bigmap-id (bigmap-id no-map) + :continues '() + :callback-list '() + :borrow #f + :bottom-height (meters -20) + :fog-height (meters 80) + :max-rain 1.0 + :fog-mult 1.0 + :mood-range (new 'static 'mood-range :max-cloud 1.0 :min-fog 0.5 :max-fog 1.0) + ) + ) (define ctypepb (new 'static 'level-load-info :name 'ctypepb @@ -1162,7 +1164,7 @@ :index 25 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf3 lf12) + :level-flags (level-flags lf0 not-physical ctypes ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1195,7 +1197,7 @@ :index 26 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12 lf19) + :level-flags (level-flags lf0 not-physical ocean-near-translucent city-borrow-high-priority) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1228,7 +1230,7 @@ :index 27 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '("cty-mh-deep") :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1261,7 +1263,7 @@ :index 28 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf3 lf12) + :level-flags (level-flags lf0 not-physical ctypes ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1294,7 +1296,7 @@ :index 29 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf3 lf12) + :level-flags (level-flags lf0 not-physical ctypes ocean-near-translucent) :packages '("cty-mh-border") :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1327,7 +1329,7 @@ :index 30 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf3 lf12) + :level-flags (level-flags lf0 not-physical ctypes ocean-near-translucent) :packages '("cty-kg-border") :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1360,7 +1362,7 @@ :index 31 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf9 lf11 lf12 lf13) + :level-flags (level-flags not-physical sky display-wait ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1394,7 +1396,7 @@ :index 32 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctygenb") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1639,7 +1641,7 @@ :index 33 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("desburning" "ctysluma") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1771,7 +1773,7 @@ :index 34 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyslumb") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1943,7 +1945,7 @@ :index 35 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1976,7 +1978,7 @@ :index 36 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf12) + :level-flags (level-flags lf0 sky ocean-near-translucent) :packages '("ctyslumc") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2169,7 +2171,7 @@ :task-level #x1 :part-engine-max #x10 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyport") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2685,7 +2687,7 @@ :task-level #x1 :part-engine-max #x10 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyfarm") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2719,7 +2721,7 @@ :task-level #x1 :part-engine-max #x10 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyfarm") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2752,7 +2754,7 @@ :index 40 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("elecgate" "ctyinda") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3041,7 +3043,7 @@ :index 41 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyindb") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3170,7 +3172,7 @@ :index 42 :task-level #xd :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("stadium") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3303,7 +3305,7 @@ :index 43 :task-level #xd :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("elecgate" "stadiuma") :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -3340,7 +3342,7 @@ :index 44 :task-level #xd :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3375,7 +3377,7 @@ :index 45 :task-level #xd :master-level #f - :level-flags (level-flags lf1 lf7 lf12) + :level-flags (level-flags not-physical end-mode ocean-near-translucent) :packages '("vehiclep" "wvehiclep" "dp-bipedalp" "lpattack") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3410,7 +3412,7 @@ :task-level #xd :part-engine-max #x10 :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3482,7 +3484,7 @@ :index 47 :task-level #xe :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("neo-waspp" "hoverp" "prebot-eco-creat" "dp-bipedalp" "towera") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3539,7 +3541,7 @@ :index 48 :task-level #xe :master-level 'towera - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -3653,7 +3655,7 @@ :index 49 :task-level #xe :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3691,7 +3693,7 @@ :index 50 :task-level #xe :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3725,7 +3727,7 @@ :index 51 :task-level #xe :master-level 'towera - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3759,7 +3761,7 @@ :index 52 :task-level #xe :master-level #f - :level-flags (level-flags lf1 lf12 lf13) + :level-flags (level-flags not-physical ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3794,7 +3796,7 @@ :index 53 :task-level #xe :master-level 'towera - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3847,7 +3849,7 @@ :index 54 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3922,7 +3924,7 @@ :index 55 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3976,7 +3978,7 @@ :index 56 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4031,7 +4033,7 @@ :index 57 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4086,7 +4088,7 @@ :index 58 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("rublcst") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4121,7 +4123,7 @@ :index 59 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4154,7 +4156,7 @@ :index 60 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("cty-destroy-gridp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4187,7 +4189,7 @@ :index 61 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("ctyport-attackp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4220,7 +4222,7 @@ :index 62 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4253,7 +4255,7 @@ :index 63 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("player-controlp" "bombbotp" "cty-port-assaultp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4286,7 +4288,7 @@ :index 64 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("bombbotp") :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -4319,7 +4321,7 @@ :index 65 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("cty-destroy-dark-ecop") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4352,7 +4354,7 @@ :index 66 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf11 lf12) + :level-flags (level-flags lf0 not-physical display-wait ocean-near-translucent) :packages '("cty-protect-hqp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4385,7 +4387,7 @@ :index 67 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("turretp-code" "cty-blow-towerp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4418,7 +4420,7 @@ :index 68 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("cty-sniper-fight") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4451,7 +4453,7 @@ :index 69 :task-level #x1 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("onintent") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4527,7 +4529,7 @@ :index 70 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("bbushp") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -4560,7 +4562,7 @@ :index 71 :task-level #x1 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("hiphog") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4655,7 +4657,7 @@ :taskname 'default :index 72 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -4689,7 +4691,7 @@ :index 73 :task-level #x1 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("gungame") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4806,7 +4808,7 @@ :index 74 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -4840,7 +4842,7 @@ :index 75 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -4874,7 +4876,7 @@ :index 76 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf9 lf11 lf12) + :level-flags (level-flags not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4908,7 +4910,7 @@ :index 77 :task-level #x1 :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5043,7 +5045,7 @@ :index 78 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -5077,7 +5079,7 @@ :index 79 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -5111,7 +5113,7 @@ :index 80 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5145,7 +5147,7 @@ :index 81 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5444,7 +5446,7 @@ :index 82 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5623,7 +5625,7 @@ :index 83 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -5657,7 +5659,7 @@ :index 84 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -5691,7 +5693,7 @@ :index 85 :task-level #xc :master-level #f - :level-flags (level-flags lf7 lf12) + :level-flags (level-flags end-mode ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -5808,7 +5810,7 @@ :index 86 :task-level #xc :master-level 'comba - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5858,7 +5860,7 @@ :index 87 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5911,7 +5913,7 @@ :index 88 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5964,7 +5966,7 @@ :index 89 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6017,7 +6019,7 @@ :index 90 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6050,7 +6052,7 @@ :index 91 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6123,7 +6125,7 @@ :index 92 :task-level #xc :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("combx") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6156,7 +6158,7 @@ :index 93 :task-level #xc :master-level #f - :level-flags (level-flags lf7 lf12) + :level-flags (level-flags end-mode ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -6189,7 +6191,7 @@ :index 94 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6242,7 +6244,7 @@ :index 95 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6295,7 +6297,7 @@ :index 96 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6348,7 +6350,7 @@ :index 97 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6401,7 +6403,7 @@ :index 98 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6454,7 +6456,7 @@ :index 99 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6487,7 +6489,7 @@ :index 100 :task-level #xc :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6542,7 +6544,7 @@ :index #x65 :task-level #xf :master-level #f - :level-flags (level-flags lf9 lf12 lf13) + :level-flags (level-flags sky ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -6576,7 +6578,7 @@ :index #x66 :task-level #xc :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -6609,7 +6611,7 @@ :index #x67 :task-level #x5 :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("elecgate") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6679,7 +6681,7 @@ :taskname 'default :index #x68 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -6713,7 +6715,7 @@ :index #x69 :task-level #x5 :master-level 'minea - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -6837,7 +6839,7 @@ :index #x6a :task-level #x5 :master-level 'minea - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("gruntp") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -6962,7 +6964,7 @@ :index #x6b :task-level #x5 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -7050,7 +7052,7 @@ :index #x6c :task-level #x5 :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7122,7 +7124,7 @@ :index #x6d :task-level #x2 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("elecgate" "guardp" "hoverp" "robo-hoverp" "roboguardp" "kg-gruntp" "sewa") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7236,7 +7238,7 @@ :index #x6e :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7330,7 +7332,7 @@ :index #x6f :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -7404,7 +7406,7 @@ :index #x70 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("ladderp") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7478,7 +7480,7 @@ :index #x71 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -7590,7 +7592,7 @@ :index #x72 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7664,7 +7666,7 @@ :index #x73 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -7738,7 +7740,7 @@ :index #x74 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7812,7 +7814,7 @@ :index #x75 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -7866,7 +7868,7 @@ :index #x76 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7940,7 +7942,7 @@ :index #x77 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8014,7 +8016,7 @@ :index #x78 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8086,7 +8088,7 @@ :index #x79 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -8178,7 +8180,7 @@ :index #x7a :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8250,7 +8252,7 @@ :index #x7b :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -8320,7 +8322,7 @@ :index #x7c :task-level #x3 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8371,7 +8373,7 @@ :index #x7d :task-level #x3 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("foresta") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -8599,7 +8601,7 @@ :index #x7e :task-level #x3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("egg-spiderp") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -8633,7 +8635,7 @@ :index #x7f :task-level #x3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -8667,7 +8669,7 @@ :index #x80 :task-level #x3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("dp-bipedalp" "turretp-code" "turretp" "hoverp" "neo-waspp" "lformach") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -8701,7 +8703,7 @@ :index #x81 :task-level #x3 :master-level 'foresta - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8751,7 +8753,7 @@ :taskname 'default :index #x82 :master-level #f - :level-flags (level-flags lf9 lf11 lf12 lf13) + :level-flags (level-flags sky display-wait ocean-near-translucent ocean-far) :packages '("wasintro" "desert") :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -8887,7 +8889,7 @@ :index #x83 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8925,7 +8927,7 @@ :index #x84 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -8959,7 +8961,7 @@ :index #x85 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -8993,7 +8995,7 @@ :index #x86 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("vehiclep" "wvehiclep" "desburning" "wasall") :run-packages '("common") :music-bank #f @@ -9068,7 +9070,7 @@ :index #x87 :task-level #x7 :master-level 'wasall - :level-flags (level-flags lf0 lf1 lf8 lf9 lf12) + :level-flags (level-flags lf0 not-physical flut sky ocean-near-translucent) :packages '("ladderp" "flutp" "nav-graphp" "cityp" "marketp" "waswide") :run-packages '("common") :memory-mode (level-memory-mode city-tiny-edge) @@ -9105,7 +9107,7 @@ :index #x88 :task-level #x7 :master-level 'waswide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -9399,7 +9401,7 @@ :taskname 'default :index #x89 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -9433,7 +9435,7 @@ :index #x8a :task-level #x7 :master-level 'waswide - :level-flags (level-flags lf0 lf9 lf11 lf12 lf13) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent ocean-far) :packages '("turretp-code" "turretp" "wascityb") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -9826,7 +9828,7 @@ :index #x8b :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf5 lf9 lf11 lf12) + :level-flags (level-flags not-physical title sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -9860,7 +9862,7 @@ :index #x8c :task-level #x7 :master-level 'waswide - :level-flags (level-flags lf0 lf9 lf11 lf12 lf13) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -9898,7 +9900,7 @@ :index #x8d :task-level #x7 :master-level #f - :level-flags (level-flags lf0 lf12 lf13) + :level-flags (level-flags lf0 ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -9932,7 +9934,7 @@ :index #x8e :task-level #x7 :master-level #f - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -9966,7 +9968,7 @@ :index #x8f :task-level #x7 :master-level #f - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10000,7 +10002,7 @@ :index #x90 :task-level #x7 :master-level #f - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '("racep" "wasleapr") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10034,7 +10036,7 @@ :index #x91 :task-level #x7 :master-level 'wasall - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -10351,7 +10353,7 @@ :index #x92 :task-level #x8 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -10389,7 +10391,7 @@ :index #x93 :task-level #x8 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -10422,7 +10424,7 @@ :taskname 'default :index #x94 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10455,7 +10457,7 @@ :taskname 'default :index #x95 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10488,7 +10490,7 @@ :taskname 'default :index #x96 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10522,7 +10524,7 @@ :index #x97 :task-level #x8 :master-level #f - :level-flags (level-flags lf0 lf9 lf11 lf12 lf13) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent ocean-far) :packages '("wasstada") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -10859,7 +10861,7 @@ :index #x98 :task-level #x8 :master-level 'wasstada - :level-flags (level-flags lf12 lf13) + :level-flags (level-flags ocean-near-translucent ocean-far) :packages '("wasstadb") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10893,7 +10895,7 @@ :index #x99 :task-level #x8 :master-level 'wasstada - :level-flags (level-flags lf12 lf13) + :level-flags (level-flags ocean-near-translucent ocean-far) :packages '("marauderp" "wasstadc") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10927,7 +10929,7 @@ :index #x9a :task-level #x8 :master-level 'wasstada - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -10960,7 +10962,7 @@ :taskname 'default :index #x9b :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -10993,7 +10995,7 @@ :taskname 'default :index #x9c :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -11026,7 +11028,7 @@ :taskname 'default :index #x9d :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11059,7 +11061,7 @@ :taskname 'default :index #x9e :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -11092,7 +11094,7 @@ :taskname 'default :index #x9f :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11125,7 +11127,7 @@ :taskname 'default :index #xa0 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -11159,7 +11161,7 @@ :index #xa1 :task-level #x8 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11192,7 +11194,7 @@ :taskname 'default :index #xa2 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11225,7 +11227,7 @@ :taskname 'default :index #xa3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11258,7 +11260,7 @@ :taskname 'default :index #xa4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11291,7 +11293,7 @@ :taskname 'default :index #xa5 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11324,7 +11326,7 @@ :taskname 'default :index #xa6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11357,7 +11359,7 @@ :taskname 'default :index #xa7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11390,7 +11392,7 @@ :taskname 'default :index #xa8 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11423,7 +11425,7 @@ :taskname 'default :index #xa9 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11456,7 +11458,7 @@ :taskname 'default :index #xaa :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11489,7 +11491,7 @@ :taskname 'default :index #xab :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11522,7 +11524,7 @@ :taskname 'default :index #xac :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11555,7 +11557,7 @@ :taskname 'default :index #xad :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11588,7 +11590,7 @@ :taskname 'default :index #xae :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11621,7 +11623,7 @@ :taskname 'default :index #xaf :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11654,7 +11656,7 @@ :taskname 'default :index #xb0 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11687,7 +11689,7 @@ :taskname 'default :index #xb1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11720,7 +11722,7 @@ :taskname 'default :index #xb2 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11753,7 +11755,7 @@ :taskname 'default :index #xb3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11786,7 +11788,7 @@ :taskname 'default :index #xb4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11819,7 +11821,7 @@ :taskname 'default :index #xb5 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11852,7 +11854,7 @@ :taskname 'default :index #xb6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11885,7 +11887,7 @@ :taskname 'default :index #xb7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11918,7 +11920,7 @@ :taskname 'default :index #xb8 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11951,7 +11953,7 @@ :taskname 'default :index #xb9 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11984,7 +11986,7 @@ :taskname 'default :index #xba :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12017,7 +12019,7 @@ :taskname 'default :index #xbb :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12050,7 +12052,7 @@ :taskname 'default :index #xbc :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12083,7 +12085,7 @@ :taskname 'default :index #xbd :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12116,7 +12118,7 @@ :taskname 'default :index #xbe :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12149,7 +12151,7 @@ :taskname 'default :index #xbf :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12182,7 +12184,7 @@ :taskname 'default :index #xc0 :master-level #f - :level-flags (level-flags lf1 lf12 lf16) + :level-flags (level-flags not-physical ocean-near-translucent mech) :packages '("mechp") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12215,7 +12217,7 @@ :taskname 'default :index #xc1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12248,7 +12250,7 @@ :taskname 'default :index #xc2 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12281,7 +12283,7 @@ :taskname 'default :index #xc3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12315,7 +12317,7 @@ :index #xc4 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12349,7 +12351,7 @@ :index #xc5 :task-level #x7 :master-level 'waswide - :level-flags (level-flags lf9 lf11 lf12 lf13 lf20) + :level-flags (level-flags sky display-wait ocean-near-translucent ocean-far ocean-all) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -12504,7 +12506,7 @@ :taskname 'default :index #xc6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12537,7 +12539,7 @@ :taskname 'default :index #xc7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12571,7 +12573,7 @@ :index #xc8 :task-level #x6 :master-level 'wasall - :level-flags (level-flags lf9 lf12 lf13 desert) + :level-flags (level-flags sky ocean-near-translucent ocean-far desert) :packages '("dust-stormp" "desert") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-small) @@ -14043,7 +14045,7 @@ :index #xc9 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14077,7 +14079,7 @@ :index #xca :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14130,7 +14132,7 @@ :index #xcb :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14164,7 +14166,7 @@ :index #xcc :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf9 lf11 lf12) + :level-flags (level-flags not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14198,7 +14200,7 @@ :index #xcd :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14451,7 +14453,7 @@ :index #xce :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14504,7 +14506,7 @@ :index #xcf :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14557,7 +14559,7 @@ :index #xd0 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14614,7 +14616,7 @@ :index #xd1 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14727,7 +14729,7 @@ :index #xd2 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf9 lf12 desert) + :level-flags (level-flags sky ocean-near-translucent desert) :packages '("elecgate" "desertg") :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14900,7 +14902,7 @@ :index #xd3 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -14934,7 +14936,7 @@ :index #xd4 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14987,7 +14989,7 @@ :index #xd5 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -15040,7 +15042,7 @@ :index #xd6 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf9 lf11 lf12) + :level-flags (level-flags not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -15074,7 +15076,7 @@ :index #xd7 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("desrace") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15108,7 +15110,7 @@ :index #xd8 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '("desboss1") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15142,7 +15144,7 @@ :index #xd9 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15176,7 +15178,7 @@ :index #xda :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15210,7 +15212,7 @@ :index #xdb :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '("course-racep") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15244,7 +15246,7 @@ :index #xdc :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("course-racep") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15318,7 +15320,7 @@ :index #xdd :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '("deshover") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15372,7 +15374,7 @@ :index #xde :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15406,7 +15408,7 @@ :index #xdf :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf6 lf8 lf9 lf12) + :level-flags (level-flags not-physical borrow-load flut sky ocean-near-translucent) :packages '("flutp" "desliz") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15440,7 +15442,7 @@ :index #xe0 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("cityp" "desert-rescuep") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15537,7 +15539,7 @@ :index #xe1 :task-level #x6 :master-level 'desresc - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -15571,7 +15573,7 @@ :index #xe2 :task-level #x6 :master-level 'desresc - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -15605,7 +15607,7 @@ :index #xe3 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("botp" "ashelinp" "marauderp" "desoasis") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15719,7 +15721,7 @@ :index #xe4 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -15753,7 +15755,7 @@ :index #xe5 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15787,7 +15789,7 @@ :index #xe6 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("marauderp" "player-controlp" "desjump" "deschase") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15821,7 +15823,7 @@ :index #xe7 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("turretp-code" "turretp" "desbattl") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15855,7 +15857,7 @@ :index #xe8 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("nst-eggsp") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -15889,7 +15891,7 @@ :index #xe9 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -15923,7 +15925,7 @@ :index #xea :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -15957,7 +15959,7 @@ :index #xeb :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15991,7 +15993,7 @@ :index #xec :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16025,7 +16027,7 @@ :index #xed :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16059,7 +16061,7 @@ :index #xee :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16093,7 +16095,7 @@ :index #xef :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -16127,7 +16129,7 @@ :index #xf0 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -16161,7 +16163,7 @@ :index #xf1 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16195,7 +16197,7 @@ :index #xf2 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("timer-path-data") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16229,7 +16231,7 @@ :index #xf3 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("timer-path-data") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16263,7 +16265,7 @@ :index #xf4 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("timer-path-data") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16297,7 +16299,7 @@ :index #xf5 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush" "egg-spiderp") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16331,7 +16333,7 @@ :index #xf6 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16365,7 +16367,7 @@ :index #xf7 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16399,7 +16401,7 @@ :index #xf8 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16433,7 +16435,7 @@ :index #xf9 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16467,7 +16469,7 @@ :index #xfa :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16501,7 +16503,7 @@ :index #xfb :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16535,7 +16537,7 @@ :index #xfc :task-level #x4 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -16648,7 +16650,7 @@ :index #xfd :task-level #x4 :master-level 'nsta - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -16785,7 +16787,7 @@ :index #xfe :task-level #x4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -16819,7 +16821,7 @@ :index #xff :task-level #x4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -16853,7 +16855,7 @@ :index #x100 :task-level #x4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -16887,7 +16889,7 @@ :index #x101 :task-level #xb :master-level #f - :level-flags (level-flags lf9 lf11 lf12 lf13) + :level-flags (level-flags sky display-wait ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -17120,7 +17122,7 @@ :index #x102 :task-level #xb :master-level #f - :level-flags (level-flags lf11 lf12 lf18) + :level-flags (level-flags display-wait ocean-near-translucent check-taskname-for-continue) :packages '("hoverp" "templea") :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -17284,7 +17286,7 @@ :index #x103 :task-level #xb :master-level 'templea - :level-flags (level-flags lf11 lf12 lf18) + :level-flags (level-flags display-wait ocean-near-translucent check-taskname-for-continue) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -17691,7 +17693,7 @@ :index #x104 :task-level #xb :master-level 'templea - :level-flags (level-flags lf11 lf12 lf18) + :level-flags (level-flags display-wait ocean-near-translucent check-taskname-for-continue) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -17785,7 +17787,7 @@ :index #x105 :task-level #xb :master-level 'templea - :level-flags (level-flags lf9 lf11 lf12 lf18) + :level-flags (level-flags sky display-wait ocean-near-translucent check-taskname-for-continue) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -17959,7 +17961,7 @@ :index #x106 :task-level #xb :master-level 'templea - :level-flags (level-flags lf9 lf11 lf12 lf18) + :level-flags (level-flags sky display-wait ocean-near-translucent check-taskname-for-continue) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -17993,7 +17995,7 @@ :index #x107 :task-level #xa :master-level #f - :level-flags (level-flags lf7 lf9 lf12 lf13 low-res-hfrag) + :level-flags (level-flags end-mode sky ocean-near-translucent ocean-far low-res-hfrag) :packages '("vehiclep" "nav-graphp" "hvehiclep" "hanga") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18072,7 +18074,7 @@ :index #x108 :task-level #xa :master-level 'hanga - :level-flags (level-flags lf1 lf9 lf12 low-res-hfrag) + :level-flags (level-flags not-physical sky ocean-near-translucent low-res-hfrag) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -18105,7 +18107,7 @@ :index #x109 :task-level #xa :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18195,7 +18197,7 @@ :task-level #xa :part-engine-max #x10 :master-level #f - :level-flags (level-flags lf8 lf9 lf11 lf12) + :level-flags (level-flags flut sky display-wait ocean-near-translucent) :packages '("ladderp" "flutp" "tubep" "indaxp" "volcanoa") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -18552,7 +18554,7 @@ :index #x10b :task-level #x9 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("factorya") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18641,7 +18643,7 @@ :index #x10c :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf7 lf12) + :level-flags (level-flags end-mode ocean-near-translucent) :packages '("vehiclep" "nav-graphp" "hvehiclep" "wvehiclep" "lfactory") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -18674,7 +18676,7 @@ :index #x10d :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf7 lf12) + :level-flags (level-flags end-mode ocean-near-translucent) :packages '("vehiclep" "wvehiclep" "lfaccar") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -18708,7 +18710,7 @@ :index #x10e :task-level #x9 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -18761,7 +18763,7 @@ :index #x10f :task-level #x9 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -18812,7 +18814,7 @@ :index #x110 :task-level #x9 :master-level 'factorya - :level-flags (level-flags use-camera-other lf12 lf13) + :level-flags (level-flags use-camera-other ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -18845,7 +18847,7 @@ :index #x111 :task-level #x9 :master-level 'factorya - :level-flags (level-flags use-camera-other lf12 lf13) + :level-flags (level-flags use-camera-other ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -18879,7 +18881,7 @@ :index #x112 :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("factoryb") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -18935,7 +18937,7 @@ :index #x113 :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("factoryc" "indaxp") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -19310,7 +19312,7 @@ :index #x114 :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("roboguardp" "bombbotp" "hoverp" "neo-waspp" "factory-boss") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -19398,7 +19400,7 @@ :index #x115 :task-level #x9 :master-level 'factoryd - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -19431,7 +19433,7 @@ :index #x116 :task-level #x9 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -19481,7 +19483,7 @@ :index #x117 :task-level #xf :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("precura" "dp-bipedalp" "neo-waspp") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -19595,7 +19597,7 @@ :index #x118 :task-level #xf :master-level 'precura - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -19628,7 +19630,7 @@ :index #x119 :task-level #xf :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("tubep" "precurc") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -19719,7 +19721,7 @@ :index #x11a :task-level #xf :master-level 'precura - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -19752,7 +19754,7 @@ :index #x11b :task-level #xf :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("precurd") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -19837,7 +19839,7 @@ :taskname 'default :index #x11c :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -19887,7 +19889,7 @@ :index #x11d :part-engine-max #x1 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '() :memory-mode (level-memory-mode medium) @@ -19937,7 +19939,7 @@ :taskname 'default :index #x11e :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -19987,7 +19989,7 @@ :taskname 'default :index #x11f :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20020,7 +20022,7 @@ :taskname 'default :index #x120 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20053,7 +20055,7 @@ :taskname 'default :index #x121 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20086,7 +20088,7 @@ :taskname 'default :index #x122 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20119,7 +20121,7 @@ :taskname 'default :index #x123 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20170,7 +20172,7 @@ :index #x124 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20202,7 +20204,7 @@ :taskname 'default :index #x125 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -20252,7 +20254,7 @@ :taskname 'default :index #x126 :master-level #f - :level-flags (level-flags lf9 lf11 lf12 lf13) + :level-flags (level-flags sky display-wait ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -20319,7 +20321,7 @@ :taskname 'default :index #x127 :master-level #f - :level-flags (level-flags lf8 lf9 lf11 lf12) + :level-flags (level-flags flut sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -20669,7 +20671,6 @@ :taskname 'default :index #x128 :master-level #f - :level-flags (level-flags lf8 lf9 lf11 lf12) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) diff --git a/goal_src/jak3/engine/level/level.gc b/goal_src/jak3/engine/level/level.gc index 7406010bb7..066bc40bb4 100644 --- a/goal_src/jak3/engine/level/level.gc +++ b/goal_src/jak3/engine/level/level.gc @@ -478,15 +478,11 @@ it will kick out levels as needed to make a free slot, and set up a new level, and start the load. This should only be used when you might want to start a load." (local-vars (s5-1 level)) - - (start-debug "level-get-for-use: ~A ~A~%" arg0 arg1) (init-level-system this #f) (let* ((s2-0 (lookup-level-info arg0)) (s1-0 (remap-level-name s2-0)) ) - (start-debug " remapped name: ~A~%" s1-0) (let ((s5-0 (level-get this s1-0))) - (start-debug " existing? ~A~%" s5-0) (when s5-0 (level-status-update! s5-0 arg1) (set! s5-1 s5-0) @@ -494,7 +490,6 @@ ) ) (let ((a0-7 (level-get-most-disposable this))) - (start-debug " most disposable: ~A~%" a0-7) (set! s5-1 (if a0-7 (level-status-update! a0-7 'inactive) a0-7 @@ -509,7 +504,7 @@ (let ((s0-0 (-> s2-0 master-level))) (when s0-0 (let ((a0-10 (lookup-level-info s0-0))) - (when (not (logtest? (level-flags lf17) (-> a0-10 level-flags))) + (when (not (logtest? (level-flags allow-unloaded) (-> a0-10 level-flags))) (dotimes (v1-16 (-> this length)) (let ((a0-15 (-> this level v1-16))) (when (or (= (-> a0-15 status) 'active) (= (-> a0-15 status) 'alive) (= (-> a0-15 status) 'loaded)) @@ -606,7 +601,7 @@ (while (and (> s4-1 0) (car s5-1)) (when (and (!= (car s5-1) 'dummy) (or (= arg1 'all) (let ((a0-31 (lookup-level-info (the-as symbol (car s5-1))))) - (and a0-31 (not (logtest? (-> a0-31 level-flags) (level-flags lf15)))) + (and a0-31 (not (logtest? (-> a0-31 level-flags) (level-flags city-borrow-available)))) ) ) ) @@ -632,7 +627,6 @@ This can do both loading, linking, login, and activation. This is somewhat similar to level-get-for-use, but requires that you already have the level object. This function is the way to transition from loaded to alive/active." - (start-debug "level-status-update: ~A ~A (current ~A)~%" this arg0 (-> this status)) (case arg0 (('inactive) (-> this status) @@ -1696,7 +1690,7 @@ ) ) (-> this borrow-from-level) - (logtest? (-> this info level-flags) (level-flags lf6)) + (logtest? (-> this info level-flags) (level-flags borrow-load)) ) (set! (-> this load-buffer-mode) (level-memory-mode borrow)) (let ((t0-2 (logand -64 (&+ (-> this heap current) 63)))) @@ -1750,10 +1744,8 @@ (defmethod login-begin ((this level)) "Start logging in loaded level data." (set! (-> *texture-pool* allocate-func) texture-page-default-allocate) - (format 0 "LOGIN-BEGIN: ~A~%" this) (cond ((-> this bsp) - (format 0 " and with a bsp too~%") (let ((s5-0 (-> this bsp))) (set! (-> s5-0 level tfrag-gs-test) (if (logtest? (-> s5-0 texture-flags 0) (texture-page-flag alpha-enable)) @@ -2250,7 +2242,7 @@ "Remove level from memory." (deactivate this) (when (!= (-> this status) 'inactive) - (when (not (logtest? (level-flags lf17) (-> this info level-flags))) + (when (not (logtest? (level-flags allow-unloaded) (-> this info level-flags))) (dotimes (s5-0 (-> *level* length)) (let ((v1-10 (-> *level* level s5-0))) (when (or (= (-> v1-10 status) 'active) (= (-> v1-10 status) 'alive) (= (-> v1-10 status) 'loaded)) @@ -2530,7 +2522,6 @@ (defmethod init-level-system ((this level-group) (arg0 symbol)) "If needed, initialize the level system by loading common/art packages and allocating level heaps." (when (zero? (-> *level* heap base)) - (start-debug "allocating levels~%") (kmemopen global "level-heaps") (when (nmember "game" *kernel-packages*) (set! *kernel-packages* (cons "art" *kernel-packages*)) @@ -2657,7 +2648,7 @@ (dotimes (a0-3 (-> this length)) (let ((a1-3 (-> this level a0-3))) (when (= (-> a1-3 status) 'active) - (if (and (= (-> a1-3 name) v1-1) (not (logtest? (-> a1-3 info level-flags) (level-flags lf1)))) + (if (and (= (-> a1-3 name) v1-1) (not (logtest? (-> a1-3 info level-flags) (level-flags not-physical)))) (return a1-3) ) ) @@ -2669,7 +2660,7 @@ (dotimes (a0-5 (-> this length)) (let ((a1-8 (-> this level a0-5))) (when (= (-> a1-8 status) 'active) - (if (and (= (-> a1-8 name) v1-5) (not (logtest? (-> a1-8 info level-flags) (level-flags lf1)))) + (if (and (= (-> a1-8 name) v1-5) (not (logtest? (-> a1-8 info level-flags) (level-flags not-physical)))) (return a1-8) ) ) @@ -2683,7 +2674,7 @@ (when (= (-> s2-0 status) 'active) (let ((f0-0 (vector-vector-distance (-> s2-0 bsp bsphere) s5-0))) (if (and (-> s2-0 inside-boxes?) - (not (logtest? (-> s2-0 info level-flags) (level-flags lf1))) + (not (logtest? (-> s2-0 info level-flags) (level-flags not-physical))) (or (not s4-0) (< f0-0 f30-0)) ) (set! s4-0 s2-0) @@ -2701,7 +2692,7 @@ (dotimes (v1-26 (-> this length)) (let ((a0-11 (-> this level v1-26))) (when (= (-> a0-11 status) 'active) - (if (and (-> a0-11 meta-inside?) (not (logtest? (-> a0-11 info level-flags) (level-flags lf1)))) + (if (and (-> a0-11 meta-inside?) (not (logtest? (-> a0-11 info level-flags) (level-flags not-physical)))) (return a0-11) ) ) @@ -2712,7 +2703,7 @@ (dotimes (v1-29 (-> this length)) (let ((a0-16 (-> this level v1-29))) (when (= (-> a0-16 status) 'active) - (if (and (not v0-1) (not (logtest? (-> a0-16 info level-flags) (level-flags lf1)))) + (if (and (not v0-1) (not (logtest? (-> a0-16 info level-flags) (level-flags not-physical)))) (set! v0-1 a0-16) ) ) @@ -2825,7 +2816,6 @@ (defun play ((arg0 symbol) (arg1 symbol)) "Start (or restart) the game! This will start up the display process, and load the initial level." - (start-debug "call to play!~%") (kmemopen global "level-boot") (when *kernel-boot-level* (bg (string->symbol (the-as string *kernel-boot-level*))) @@ -3429,7 +3419,7 @@ (set! (-> s3-2 display?) (-> this target s5-2 display?)) ) (else - (if (and (logtest? (-> s3-2 info level-flags) (level-flags lf11)) + (if (and (logtest? (-> s3-2 info level-flags) (level-flags display-wait)) (!= (-> this target s5-2 display?) 'display-no-wait) ) (send-event *target* 'loading) @@ -3492,7 +3482,7 @@ (if (= (-> a2-32 name) (-> this vis-nick)) (goto cfg-137) ) - (if (or (not v1-131) (not (logtest? (-> a2-32 info level-flags) (level-flags lf1)))) + (if (or (not v1-131) (not (logtest? (-> a2-32 info level-flags) (level-flags not-physical)))) (set! v1-131 a2-32) ) (+! a0-55 1) @@ -3615,7 +3605,7 @@ ) (or (-> *level* border?) (logtest? (-> *game-info* current-continue flags) (continue-flags change-continue))) (and (or (and (!= (-> s3-0 name) (-> *game-info* current-continue level)) - (or (not (logtest? (level-flags lf18) (-> s3-0 info level-flags))) + (or (not (logtest? (level-flags check-taskname-for-continue) (-> s3-0 info level-flags))) (!= (-> s3-0 info taskname) (-> (lookup-level-info (-> *game-info* current-continue level)) taskname)) ) ) @@ -3895,8 +3885,6 @@ (none) ) -(format 0 "about to start level stuff...~%") - (when (zero? (-> *level* level0 art-group)) (kmemopen global "level-struct") (let ((gp-0 *level*)) @@ -3942,5 +3930,3 @@ ) (kmemclose) ) - -(format 0 "done level stuff...~%") diff --git a/goal_src/jak3/engine/load/loader.gc b/goal_src/jak3/engine/load/loader.gc index 5bbcb083cf..99d645d5e6 100644 --- a/goal_src/jak3/engine/load/loader.gc +++ b/goal_src/jak3/engine/load/loader.gc @@ -392,7 +392,7 @@ ) ((and (!= (-> *level* loading-level) (-> *level* level-default)) (or (< 81920.0 (-> this load-file-priority)) - (logtest? (-> *level* loading-level info level-flags) (level-flags lf4)) + (logtest? (-> *level* loading-level info level-flags) (level-flags external)) ) ) ) diff --git a/goal_src/jak3/engine/scene/scene.gc b/goal_src/jak3/engine/scene/scene.gc index 8c8682a146..4f3437b253 100644 --- a/goal_src/jak3/engine/scene/scene.gc +++ b/goal_src/jak3/engine/scene/scene.gc @@ -906,7 +906,7 @@ :virtual #t :enter (behavior ((arg0 symbol)) (format 0 "scene-player: skipping scene~%") - (go-virtual release) + (set! (-> self aborted?) #t) (set-time! (-> self state-time)) (if (= (-> *game-info* demo-state) 101) (set-setting! 'audio-language #f 0.0 5) @@ -1158,6 +1158,7 @@ ) ) ) + (not (-> self aborted?)) ) (set-blackout-frames (seconds 0.1)) (suspend) @@ -1234,7 +1235,8 @@ (disable *screen-filter*) (deactivate self) ) - (when (< (-> self scene-index) (+ (-> self scene-list length) -1)) + ;; og:preserve-this there is a bug here. scene-index has already been advanced by this point, so we need to backtrack when checking things + (when (< (#if PC_PORT (1- (-> self scene-index)) (-> self scene-index)) (+ (-> self scene-list length) -1)) (set! (-> self scene-index) (+ (-> self scene-list length) -1)) (scene-player-method-24 self (-> self scene-list (-> self scene-index)) #t) ) @@ -1575,6 +1577,10 @@ ) ) ) + (#when PC_PORT ;; og:preserve-this until overlord2 is done + (backup-load-state-and-set-cmds *load-state* (-> self anim command-list)) + (restore-load-state-and-cleanup *load-state*) + ) (if (and (-> self wait) *target* (focus-test? *target* grabbed)) (go-virtual release) ) diff --git a/goal_src/jak3/engine/target/flut/target-flut.gc b/goal_src/jak3/engine/target/flut/target-flut.gc index d89c16fd2e..810dd15592 100644 --- a/goal_src/jak3/engine/target/flut/target-flut.gc +++ b/goal_src/jak3/engine/target/flut/target-flut.gc @@ -1138,12 +1138,12 @@ (set! (-> self flut entity) (-> v1-41 entity)) ) ) - (when (not (and (-> self flut entity) (logtest? (-> self flut entity extra level info level-flags) (level-flags lf8))) + (when (not (and (-> self flut entity) (logtest? (-> self flut entity extra level info level-flags) (level-flags flut))) ) (dotimes (v1-49 (-> *level* length)) (let ((a0-40 (-> *level* level v1-49))) (when (= (-> a0-40 status) 'active) - (when (logtest? (-> a0-40 info level-flags) (level-flags lf8)) + (when (logtest? (-> a0-40 info level-flags) (level-flags flut)) (let ((a0-42 (-> a0-40 entity data 0 entity))) (when a0-42 (set! (-> self flut entity) (the-as entity-actor a0-42)) diff --git a/goal_src/jak3/engine/target/logic-target.gc b/goal_src/jak3/engine/target/logic-target.gc index 6d1d6de354..f516e148f6 100644 --- a/goal_src/jak3/engine/target/logic-target.gc +++ b/goal_src/jak3/engine/target/logic-target.gc @@ -36,6 +36,13 @@ (set! (-> self control current-surface target-speed) (* (-> self control current-surface target-speed) f0-11)) (set! (-> self control current-surface transv-max) (* (-> self control current-surface transv-max) f0-11)) ) + ;; og:preserve-this turbo jet board cheat + (#when PC_PORT + (when (cheat-state-flag? turbo-board) + (*! (-> self control current-surface target-speed) (-> *pc-cheat-state* turbo-board-speed)) + (*! (-> self control current-surface transv-max) (-> *pc-cheat-state* turbo-board-speed)) + ) + ) (let ((s5-0 (new-stack-vector0))) (vector-z-quaternion! s5-0 (-> self control quat-for-control)) (when (logtest? (-> self control mod-surface flags) (surface-flag xz-local)) diff --git a/goal_src/jak3/engine/target/mech/mech.gc b/goal_src/jak3/engine/target/mech/mech.gc index bccafdc98d..9a22c4cb4b 100644 --- a/goal_src/jak3/engine/target/mech/mech.gc +++ b/goal_src/jak3/engine/target/mech/mech.gc @@ -456,11 +456,11 @@ (defbehavior mech-target-init mech ((arg0 vector) (arg1 quaternion) (arg2 entity-actor)) (process-entity-set! self arg2) - (when (not (and (-> self level) (logtest? (level-flags lf16) (-> self level info level-flags)))) + (when (not (and (-> self level) (logtest? (level-flags mech) (-> self level info level-flags)))) (dotimes (v1-4 (-> *level* length)) (let ((a0-7 (-> *level* level v1-4))) (when (= (-> a0-7 status) 'active) - (when (logtest? (level-flags lf16) (-> a0-7 info level-flags)) + (when (logtest? (level-flags mech) (-> a0-7 info level-flags)) (set! (-> self level) a0-7) (goto cfg-12) ) diff --git a/goal_src/jak3/engine/target/mech/target-mech.gc b/goal_src/jak3/engine/target/mech/target-mech.gc index e56322c416..f135a52f4c 100644 --- a/goal_src/jak3/engine/target/mech/target-mech.gc +++ b/goal_src/jak3/engine/target/mech/target-mech.gc @@ -1201,12 +1201,12 @@ (set! (-> self mech entity) (-> v1-31 entity)) ) ) - (when (not (and (-> self mech entity) (logtest? (level-flags lf16) (-> self mech entity extra level info level-flags))) + (when (not (and (-> self mech entity) (logtest? (level-flags mech) (-> self mech entity extra level info level-flags))) ) (dotimes (v1-39 (-> *level* length)) (let ((a0-18 (-> *level* level v1-39))) (when (= (-> a0-18 status) 'active) - (when (logtest? (level-flags lf16) (-> a0-18 info level-flags)) + (when (logtest? (level-flags mech) (-> a0-18 info level-flags)) (let ((a0-20 (-> a0-18 entity data 0 entity))) (when a0-20 (set! (-> self mech entity) (the-as entity-actor a0-20)) diff --git a/goal_src/jak3/engine/target/target-handler.gc b/goal_src/jak3/engine/target/target-handler.gc index d6faa0a954..d0a4571d1a 100644 --- a/goal_src/jak3/engine/target/target-handler.gc +++ b/goal_src/jak3/engine/target/target-handler.gc @@ -728,7 +728,7 @@ (('level-deactivate) (cond ((and (focus-test? self pilot) (let ((a0-19 (lookup-level-info (the-as symbol (-> arg3 param 0))))) - (or (and a0-19 (logtest? (-> a0-19 level-flags) (level-flags lf7))) + (or (and a0-19 (logtest? (-> a0-19 level-flags) (level-flags end-mode))) (and (= (-> arg3 param 0) 'lctypatk) (-> self pilot as-daxter?)) (= (-> arg3 param 0) 'desliz) ) @@ -759,7 +759,7 @@ ) ((and (focus-test? self flut) (begin (set! a0-35 (lookup-level-info (the-as symbol (-> arg3 param 0)))) a0-35) - (logtest? (-> a0-35 level-flags) (level-flags lf8)) + (logtest? (-> a0-35 level-flags) (level-flags flut)) ) (ja-channel-set! 0) (target-gun-end-mode #t) @@ -770,7 +770,7 @@ ) ((and (focus-test? self mech) (begin (set! a1-13 (lookup-level-info (the-as symbol (-> arg3 param 0)))) a1-13) - (logtest? (level-flags lf16) (-> a1-13 level-flags)) + (logtest? (level-flags mech) (-> a1-13 level-flags)) ) (ja-channel-set! 0) (when (not (focus-test? self grabbed teleporting)) diff --git a/goal_src/jak3/engine/ui/text-h.gc b/goal_src/jak3/engine/ui/text-h.gc index dffbffafb3..8e801887fc 100644 --- a/goal_src/jak3/engine/ui/text-h.gc +++ b/goal_src/jak3/engine/ui/text-h.gc @@ -415,18 +415,18 @@ (credits-03a1 #x03a1) (credits-03b5 #x03b5) (credits-03be #x03be) - (text-03bf #x03bf) - (text-03c0 #x03c0) - (text-03c1 #x03c1) - (text-03c2 #x03c2) - (text-03c3 #x03c3) - (text-03c4 #x03c4) - (text-03c5 #x03c5) - (text-03c6 #x03c6) - (text-03c7 #x03c7) + (scatter-gun #x03bf) + (blaster #x03c0) + (vulcan-fury #x03c1) + (peace-maker #x03c2) + (stadium #x03c3) + (class-1-reverse #x03c4) + (class-2-reverse #x03c5) + (class-3-reverse #x03c6) + (peace-maker-gun-course #x03c7) (progress-missions-todo-icon #x03c8) (progress-missions-complete-icon #x03c9) - (text-03d1 #x03d1) + (blaster-training-peace-maker-training #x03d1) (credits-03e4 #x03e4) (credits-03e5 #x03e5) (credits-03e7 #x03e7) @@ -444,13 +444,13 @@ (credits-0401 #x0401) (credits-0403 #x0403) (credits-0404 #x0404) - (text-0408 #x0408) - (text-0409 #x0409) - (text-040a #x040a) - (text-040b #x040b) - (text-040c #x040c) - (text-040d #x040d) - (text-040e #x040e) + (press-to-jump #x0408) + (roll-how-to #x0409) + (double-jump-how-to #x040a) + (press-or-to-attack #x040b) + (roll-jump-how-to #x040c) + (ground-pound-how-to #x040d) + (high-jump-how-to #x040e) (credits-040f #x040f) (progress-missions-mine-explore #x0443) (progress-missions-mine-blow #x0444) @@ -860,12 +860,12 @@ (progress-controls-lightjak-wings #x06ba) (empty-string #x06bb) (progress-demo-return-to-title #x06bc) - (text-06bd #x06bd) + (text-06bd #x06bd) ;; "::" ? (meet-old-friends #x06be) (talk-to-torn-hq #x06bf) (wascity-defend-return-to-spargus #x06c0) (progress-audio-language #x06c1) - (text-06c2 #x06c2) + (text-06c2 #x06c2) ;; empty-string-2 (progress-inventory-v-turtle #x06c3) (progress-inventory-v-snake #x06c4) (progress-inventory-v-scorpion #x06c5) @@ -893,8 +893,8 @@ (credits-06db #x06db) (credits-06dc #x06dc) (credits-06dd #x06dd) - (text-06de #x06de) - (text-06df #x06df) + (protect-civilians #x06de) + (activate-statue-by-punching-kicking-nose #x06df) (progress-inventory-gun-red-1 #x06e0) (progress-inventory-gun-red-2 #x06e1) (progress-inventory-gun-red-3 #x06e2) @@ -911,14 +911,14 @@ (progress-inventory-armor1 #x06ed) (progress-inventory-armor2 #x06ee) (progress-inventory-armor3 #x06ef) - (text-06f0 #x06f0) - (text-06f1 #x06f1) - (text-06f2 #x06f2) - (text-06f3 #x06f3) - (text-06f4 #x06f4) - (text-06f5 #x06f5) - (text-06f6 #x06f6) - (text-06f7 #x06f7) + (progress-inventory-tough-puppy #x06f0) + (progress-inventory-sand-shark #x06f1) + (progress-inventory-gila-stomper #x06f2) + (progress-inventory-dune-hopper #x06f3) + (progress-inventory-heat-seeker #x06f4) + (progress-inventory-slam-dozer #x06f5) + (progress-inventory-dust-demon #x06f6) + (progress-inventory-desert-screamer #x06f7) (progress-inventory-board #x06f8) (progress-inventory-artifact-invis #x06f9) (progress-inventory-dark-strike #x06fa) @@ -926,9 +926,9 @@ (progress-inventory-lightjak-freeze #x06fc) (progress-inventory-lightjak-shield #x06fd) (progress-inventory-lightjak-swoop #x06fe) - (text-06ff #x06ff) - (text-0700 #x0700) - (text-0701 #x0701) + (progress-inventory-first-war-amulet #x06ff) + (progress-inventory-second-war-amulet #x0700) + (progress-inventory-complete-war-amulet #x0701) (progress-inventory-pass-wascity #x0702) (progress-inventory-seal-of-mar #x0703) (progress-inventory-pass-factory #x0704) @@ -940,9 +940,9 @@ (progress-inventory-light-eco-crystal #x070a) (progress-inventory-dark-eco-crystal #x070b) (progress-inventory-eco-sphere #x070c) - (text-070d #x070d) - (text-070e #x070e) - (text-070f #x070f) + (progress-inventory-scatter-gun #x070d) + (progress-inventory-wave-concussor #x070e) + (progress-inventory-plasmite-rpg #x070f) (credits-0710 #x0710) (credits-0711 #x0711) (credits-0712 #x0712) @@ -1040,13 +1040,13 @@ (credits-0772 #x0772) (credits-0773 #x0773) (credits-0774 #x0774) - (text-0775 #x0775) - (text-0776 #x0776) + (map-data-unavailable #x0775) + (light-jak-shield-how-to #x0776) (scene-catacomb-get-shield #x0778) - (text-0779 #x0779) + (press-to-use #x0779) (mission-fail-marauders-escaped #x077a) - (text-077b #x077b) - (text-077c #x077c) + (press-to-grab-objects #x077b) + (press-to-throw-held-objects #x077c) (credits-077d #x077d) (credits-077e #x077e) (credits-077f #x077f) @@ -1092,22 +1092,22 @@ (credits-07b1 #x07b1) (credits-07b2 #x07b2) (progress-secrets-unlimited-turbos #x07b3) - (text-07b4 #x07b4) - (text-07b5 #x07b5) + (dark-strike-how-to #x07b4) + (vehicle-destroyed #x07b5) (credits-07b6 #x07b6) (progress-language-portuguese #x07b8) - (text-07b9 #x07b9) - (text-07ba #x07ba) - (text-07bb #x07bb) - (text-07bc #x07bc) - (text-07bd #x07bd) - (text-07be #x07be) - (text-07bf #x07bf) - (text-07c0 #x07c0) - (text-07c1 #x07c1) - (text-07c2 #x07c2) - (text-07c3 #x07c3) - (text-07c4 #x07c4) + (hold-to-increase-speed #x07b9) + (you-can-now-afford-to-purchase-new-secrets #x07ba) + (museum-jak-one #x07bb) + (museum-jak #x07bc) + (museum-jakc #x07bd) + (museum-daxter #x07be) + (museum-pecker #x07bf) + (museum-torn #x07c0) + (museum-ashelin #x07c1) + (museum-tess #x07c2) + (use-the-wave-concussor #x07c3) + (hold-to-charge-and-then-release-to-fire-bigger-blast #x07c4) (credits-07c5 #x07c5) (credits-07c6 #x07c6) (progress-language-commentary #x07c7) @@ -1115,36 +1115,36 @@ (credits-07c9 #x07c9) (credits-07ca #x07ca) (progress-inventory #x07cb) - (text-07cc #x07cc) - (text-07cd #x07cd) - (text-07ce #x07ce) - (text-07cf #x07cf) + (out-of-time #x07cc) + (total-rolls #x07cd) + (total-distance #x07ce) + (best-distance #x07cf) (progress-footer-next-r1 #x07d0) (progress-footer-prev-l1 #x07d1) (progress-title-commentary #x07d2) - (text-07d3 #x07d3) - (text-07d4 #x07d4) + (progress-title-animator-commentary #x07d3) + (progress-title-creative-director-commentary #x07d4) (progress-secrets-fast-movie #x07d5) (progress-secrets-slow-movie #x07d6) - (text-07d7 #x07d7) - (text-07d8 #x07d8) + (progress-secrets-game-statistics #x07d7) + (progress-secrets-kleivers-diaper #x07d8) (progress-secrets-red-ammo-capacity #x07d9) (progress-secrets-yellow-ammo-capacity #x07da) (progress-secrets-blue-ammo-capacity #x07db) (progress-secrets-dark-ammo-capacity #x07dc) - (text-07dd #x07dd) + (progress-secrets-gravity-well-mod #x07dd) (progress-secrets-gungame-ratchet #x07de) (progress-secrets-endless-light #x07df) (progress-secrets-bad-weather #x07e0) - (text-07e1 #x07e1) - (text-07e2 #x07e2) + (progress-secrets-fast-time-of-day #x07e1) + (progress-secrets-play-as-jak-ii #x07e2) (progress-title-jak3-mdl-viewer #x07e3) (progress-title-jak2-mdl-viewer #x07e4) (progress-title-jak1-mdl-viewer #x07e5) - (text-07e6 #x07e6) - (text-07e7 #x07e7) - (text-07e8 #x07e8) - (text-07e9 #x07e9) + (press-to-play-wave-concussor-training #x07e6) + (press-to-play-beam-reflexor-training #x07e7) + (wave-concussor-training-ratchet-gun-course #x07e8) + (beam-reflexor-training-clank-gun-course #x07e9) (progress-secrets-kleever-diaper #x07ea) (credits-07eb #x07eb) (credits-07ec #x07ec) @@ -1157,24 +1157,24 @@ (credits-07f3 #x07f3) (credits-07f4 #x07f4) (credits-07f5 #x07f5) - (text-07f6 #x07f6) - (text-07f7 #x07f7) - (text-07f8 #x07f8) - (text-07f9 #x07f9) - (text-07fa #x07fa) - (text-07fb #x07fb) - (text-07fc #x07fc) - (text-07fd #x07fd) - (text-07fe #x07fe) - (text-07ff #x07ff) - (text-0800 #x0800) - (text-0801 #x0801) - (text-0802 #x0802) - (text-0803 #x0803) - (text-0804 #x0804) - (text-0805 #x0805) - (text-0806 #x0806) - (text-0807 #x0807) + (kills #x07f6) + (museum-kleever #x07f7) + (museum-samos #x07f8) + (museum-seem #x07f9) + (museum-keira #x07fa) + (museum-ottsel-dummy #x07fb) + (museum-ottsel-tess #x07fc) + (museum-sig #x07fd) + (museum-ottsel-leader #x07fe) + (museum-ottsel-surfer #x07ff) + (museum-ottsel-veger #x0800) + (museum-onin #x0801) + (museum-damus #x0802) + (museum-jinx #x0803) + (museum-cyber-errol #x0804) + (museum-veger #x0805) + (credits-starring #x0806) + (press-to-place-held-objects #x0807) (progress-controls-pad-cross-square-cross #x0808) (progress-controls-pad-l1-square #x0809) (progress-controls-super-flop #x080a) @@ -1189,43 +1189,43 @@ (credits-0813 #x0813) (credits-0814 #x0814) (credits-0815 #x0815) - (text-0816 #x0816) - (text-0817 #x0817) - (text-0818 #x0818) - (text-0819 #x0819) - (text-081a #x081a) - (text-081b #x081b) - (text-081c #x081c) - (text-081d #x081d) - (text-081e #x081e) - (text-081f #x081f) - (text-0820 #x0820) - (text-0821 #x0821) - (text-0822 #x0822) - (text-0823 #x0823) - (text-0824 #x0824) - (text-0825 #x0825) - (text-0826 #x0826) - (text-0827 #x0827) - (text-0828 #x0828) - (text-0829 #x0829) - (text-082a #x082a) - (text-082b #x082b) - (text-082c #x082c) - (text-082d #x082d) - (text-082e #x082e) - (text-082f #x082f) - (text-0830 #x0830) - (text-0831 #x0831) - (text-0832 #x0832) - (text-0833 #x0833) + (museum-baron #x0816) + (museum-youngsamos #x0817) + (museum-brutter #x0818) + (museum-red-crimson-guard #x0819) + (museum-flutflut #x081a) + (museum-mayor #x081b) + (museum-redsage #x081c) + (museum-sculptor #x081d) + (museum-sidekick-human #x081e) + (museum-yellowsage #x081f) + (museum-warrior #x0820) + (museum-geologist #x0821) + (museum-gambler #x0822) + (museum-minershort #x0823) + (museum-minertall #x0824) + (museum-ogreboss #x0825) + (museum-bird-lady #x0826) + (museum-bluesage #x0827) + (museum-evilbro #x0828) + (museum-evilsis #x0829) + (museum-explorer #x082a) + (museum-farmer #x082b) + (museum-fisher #x082c) + (museum-crocadog #x082d) + (museum-kid #x082e) + (museum-kor #x082f) + (museum-errol #x0830) + (museum-babak #x0831) + (museum-billy #x0832) + (your-distance #x0833) (progress-secrets-weapon-upgrades #x0834) (progress-secrets-cheats #x0835) (progress-secrets-vehicle-upgrades #x0836) (progress-secrets-crazy-stuff #x0837) (progress-secrets-art-gallery #x0838) (progress-secrets-expert-options #x0839) - (text-083a #x083a) + (unavailable #x083a) (progress-secrets-gun-upgrade-red-1 #x083b) (progress-secrets-gun-upgrade-red-2 #x083c) (progress-secrets-gun-upgrade-red-3 #x083d) @@ -1254,20 +1254,20 @@ (credits-0854 #x0854) (credits-0855 #x0855) (progress-secrets-price #x0856) - (text-0857 #x0857) - (text-0858 #x0858) - (text-085a #x085a) + (new-secrets-available #x0857) + (secrets-still-available #x0858) + (dark-bomb-how-to #x085a) (credits-085b #x085b) (credits-085c #x085c) (credits-085d #x085d) (credits-085e #x085e) - (text-085f #x085f) - (text-0860 #x0860) - (text-0861 #x0861) - (text-0862 #x0862) - (text-0863 #x0863) - (text-0864 #x0864) - (text-0866 #x0866) + (bring-sand-shark #x085f) + (bring-sand-shark-heat-seeker-dust-demon-desert-screamer #x0860) + (extra-time #x0861) + (hold-to-auto-fire #x0862) + (used-precursor-artifacts #x0863) + (hold-to-use-shield #x0864) + (score #x0866) (progress-inventory-vehicles #x0867) (progress-inventory-armor #x0868) (progress-inventory-darkjak #x0869) @@ -1297,10 +1297,10 @@ (credits-0882 #x0882) (progress-controls-pad-l2-lanalog #x0883) (progress-controls-board-grab #x0884) - (text-0885 #x0885) - (text-0886 #x0886) - (text-0887 #x0887) - (text-0888 #x0888) + (hold-to-charge-and-then-release-to-fire-blast #x0885) + (press-again-to-make-gyro-burster-hover-in-place #x0886) + (locked #x0887) + (use-turbo-to-break-obstacles #x0888) (credits-0889 #x0889) (progress-controls-pad-360-spin #x088a) (progress-controls-pad-triangle-2 #x088b) @@ -1309,14 +1309,14 @@ (commentary-intro-palace #x088e) (commentary-intro-rescue #x088f) (commentary-intro-training #x0891) - (text-0892 #x0892) - (text-0893 #x0893) - (text-0894 #x0894) - (text-0895 #x0895) - (text-0896 #x0896) - (text-0897 #x0897) + (congrats-600-orbs-new-duds #x0892) + (museum-krew #x0893) + (museum-vin #x0894) + (you-finished #x0895) + (save-hero-mode-file #x0896) + (hero-mode-how-to #x0897) (talk-to-ashelin #x0898) - (text-0899 #x0899) + (press-to-accept #x0899) (credits-089c #x089c) (credits-089d #x089d) (credits-089e #x089e) diff --git a/goal_src/jak3/kernel/gkernel-h.gc b/goal_src/jak3/kernel/gkernel-h.gc index fd9f8b1c0c..b097fa93bb 100644 --- a/goal_src/jak3/kernel/gkernel-h.gc +++ b/goal_src/jak3/kernel/gkernel-h.gc @@ -19,7 +19,7 @@ (defconstant PROCESS_HEAP_MULT 4) ;; 4x actors (defconstant PROCESS_HEAP_MULT 1) ) -(defconstant PROCESS_HEAP_SIZE (* PROCESS_HEAP_MULT 1540 1024)) +(defconstant PROCESS_HEAP_SIZE (* PROCESS_HEAP_MULT 1240 1024)) (defconstant PROCESS_HEAP_MAX (* PROCESS_HEAP_MULT 768)) (defconstant *tab-size* (the binteger 8)) diff --git a/goal_src/jak3/kernel/gkernel.gc b/goal_src/jak3/kernel/gkernel.gc index 1b1c6791f6..9b0b23985d 100644 --- a/goal_src/jak3/kernel/gkernel.gc +++ b/goal_src/jak3/kernel/gkernel.gc @@ -2352,7 +2352,7 @@ (define *debug-dead-pool* (new 'debug 'dead-pool-heap "*debug-dead-pool*" 768 #x100000)) ) -(define *nk-dead-pool* (new 'global 'dead-pool-heap "*nk-dead-pool*" 768 #x136000)) +(define *nk-dead-pool* (new 'global 'dead-pool-heap "*nk-dead-pool*" PROCESS_HEAP_MAX PROCESS_HEAP_SIZE)) (define *default-dead-pool* (the-as dead-pool *nk-dead-pool*)) (define *pickup-dead-pool* (the-as dead-pool *nk-dead-pool*)) (define *dead-pool-list* '(*4k-dead-pool* diff --git a/goal_src/jak3/levels/city/common/cty-borrow-manager.gc b/goal_src/jak3/levels/city/common/cty-borrow-manager.gc index 7b23a53d5f..02cc5b991c 100644 --- a/goal_src/jak3/levels/city/common/cty-borrow-manager.gc +++ b/goal_src/jak3/levels/city/common/cty-borrow-manager.gc @@ -32,13 +32,13 @@ (defmethod cty-borrow-manager-method-18 ((this cty-borrow-manager) (arg0 level-load-info)) (cond - ((logtest? (-> arg0 level-flags) (level-flags lf2)) + ((logtest? (-> arg0 level-flags) (level-flags ctycar)) 1.0 ) - ((logtest? (-> arg0 level-flags) (level-flags lf3)) + ((logtest? (-> arg0 level-flags) (level-flags ctypes)) 3.0 ) - ((logtest? (level-flags lf19) (-> arg0 level-flags)) + ((logtest? (level-flags city-borrow-high-priority) (-> arg0 level-flags)) 1000.0 ) (else diff --git a/goal_src/jak3/levels/city/ctywide-obs.gc b/goal_src/jak3/levels/city/ctywide-obs.gc index d6fdfcb64e..ab331cec3c 100644 --- a/goal_src/jak3/levels/city/ctywide-obs.gc +++ b/goal_src/jak3/levels/city/ctywide-obs.gc @@ -3016,7 +3016,7 @@ (gp-1 (clear (-> this strings 1 text))) (s4-0 "~S") ) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-0866) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id score) #f)) (s5-0 gp-1 s4-0 *temp-string*) ) 0 diff --git a/goal_src/jak3/levels/city/port/attack/ctyport-attack.gc b/goal_src/jak3/levels/city/port/attack/ctyport-attack.gc index e75eda4944..74bf4903c0 100644 --- a/goal_src/jak3/levels/city/port/attack/ctyport-attack.gc +++ b/goal_src/jak3/levels/city/port/attack/ctyport-attack.gc @@ -407,7 +407,7 @@ :speech #x30 :text-duration (seconds 3) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) diff --git a/goal_src/jak3/levels/city/protect/assault-shared.gc b/goal_src/jak3/levels/city/protect/assault-shared.gc index d540860af6..dac2fa8f44 100644 --- a/goal_src/jak3/levels/city/protect/assault-shared.gc +++ b/goal_src/jak3/levels/city/protect/assault-shared.gc @@ -143,7 +143,7 @@ :speech #xd :text-duration (seconds 4) :neg #x1 - :text-message (text-id text-06de) + :text-message (text-id protect-civilians) :on-close #f :camera #f ) diff --git a/goal_src/jak3/levels/city/vinroom/power-game.gc b/goal_src/jak3/levels/city/vinroom/power-game.gc index 367a29566a..24d1fd38c2 100644 --- a/goal_src/jak3/levels/city/vinroom/power-game.gc +++ b/goal_src/jak3/levels/city/vinroom/power-game.gc @@ -798,7 +798,7 @@ :speech #x1 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-07b9) + :text-message (text-id hold-to-increase-speed) :on-close #f :camera #f ) diff --git a/goal_src/jak3/levels/comb/comb-obs.gc b/goal_src/jak3/levels/comb/comb-obs.gc index 440caf056c..2679bdcf03 100644 --- a/goal_src/jak3/levels/comb/comb-obs.gc +++ b/goal_src/jak3/levels/comb/comb-obs.gc @@ -1147,7 +1147,7 @@ ) (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 6)) - (print-text self (text-id text-0776)) + (print-text self (text-id light-jak-shield-how-to)) (suspend) ) ) diff --git a/goal_src/jak3/levels/desert/des-bbush-tasks.gc b/goal_src/jak3/levels/desert/des-bbush-tasks.gc index 65b2cde6b9..73cc7aba84 100644 --- a/goal_src/jak3/levels/desert/des-bbush-tasks.gc +++ b/goal_src/jak3/levels/desert/des-bbush-tasks.gc @@ -522,7 +522,7 @@ :fail (new 'static 'resetter-spec :continue #f :reset-mode 'life :execute #f) :retry (new 'static 'resetter-spec :continue "desert-bbush-desc-4" :reset-mode 'try :execute #f) :reset-delay (seconds 6.5) - :text-message (text-id text-07cc) + :text-message (text-id out-of-time) ) ) @@ -566,7 +566,7 @@ (let ((gp-3 (on-fail self 'fail))) (when gp-3 (mem-copy! (the-as pointer *bbv-fail-time-expired*) (the-as pointer gp-3) 48) - (set! (-> gp-3 text-message) (text-id text-07cc)) + (set! (-> gp-3 text-message) (text-id out-of-time)) ) ) (go-virtual fail *bbv-fail-time-expired*) @@ -634,7 +634,7 @@ (set! (-> this display-units) 0.00024414062) (set! (-> this time-limit) (seconds 30)) (set! (-> this game-score) (the-as uint 6)) - (set! (-> *wasbbv-hud-info* score-text) (text-id text-0833)) + (set! (-> *wasbbv-hud-info* score-text) (text-id your-distance)) (set! (-> *wasbbv-hud-info* decimal-place-count) 1) (none) ) @@ -659,7 +659,7 @@ (set! (-> this display-units) 0.00024414062) (set! (-> this time-limit) (seconds 60)) (set! (-> this game-score) (the-as uint 7)) - (set! (-> *wasbbv-hud-info* score-text) (text-id text-07ce)) + (set! (-> *wasbbv-hud-info* score-text) (text-id total-distance)) (set! (-> *wasbbv-hud-info* decimal-place-count) 1) (none) ) @@ -687,7 +687,7 @@ (set! (-> this time-limit) (seconds 60)) (set! (-> this game-score) (the-as uint 8)) (set! (-> this want-current-hud?) #f) - (set! (-> *wasbbv-hud-info* score-text) (text-id text-07cd)) + (set! (-> *wasbbv-hud-info* score-text) (text-id total-rolls)) (set! (-> *wasbbv-hud-info* decimal-place-count) 0) 0 (none) @@ -727,7 +727,7 @@ (set! (-> this game-score) (the-as uint 16)) (set! (-> this want-current-hud?) #f) (set! (-> this max-reserve-count) 1000) - (set! (-> *wasbbv-hud-info* score-text) (text-id text-07f6)) + (set! (-> *wasbbv-hud-info* score-text) (text-id kills)) (set! (-> *wasbbv-hud-info* decimal-place-count) 0) (set! (-> *was-squad-control* target-count) 0) 0 diff --git a/goal_src/jak3/levels/desert/des-burning-bush.gc b/goal_src/jak3/levels/desert/des-burning-bush.gc index b11a8ed0e0..5073f2521c 100644 --- a/goal_src/jak3/levels/desert/des-burning-bush.gc +++ b/goal_src/jak3/levels/desert/des-burning-bush.gc @@ -130,7 +130,7 @@ (define *bbush-menu* (new 'static 'bbush-menu :title-text (text-id text-0624) - :req-text (text-id text-0860) + :req-text (text-id bring-sand-shark-heat-seeker-dust-demon-desert-screamer) :req-check (lambda () (case (-> *game-info* current-vehicle) (((vehicle-type-u8 v-snake) (vehicle-type-u8 v-fox) (vehicle-type-u8 v-mirage) (vehicle-type-u8 v-x-ride)) @@ -308,7 +308,7 @@ ) ) (print-game-text - (lookup-text! *common-text* (text-id text-085f) #f) + (lookup-text! *common-text* (text-id bring-sand-shark) #f) s5-1 #f 44 diff --git a/goal_src/jak3/levels/desert/des-bush.gc b/goal_src/jak3/levels/desert/des-bush.gc index 9872a66359..7417d9dbed 100644 --- a/goal_src/jak3/levels/desert/des-bush.gc +++ b/goal_src/jak3/levels/desert/des-bush.gc @@ -1351,7 +1351,7 @@ (gp-1 (clear (-> this strings 1 text))) (s4-0 "~S") ) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-07f6) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id kills) #f)) (s5-0 gp-1 s4-0 *temp-string*) ) 0 diff --git a/goal_src/jak3/levels/desert/wvehicle/wvehicle-util.gc b/goal_src/jak3/levels/desert/wvehicle/wvehicle-util.gc index 9f4ea38f83..f630891490 100644 --- a/goal_src/jak3/levels/desert/wvehicle/wvehicle-util.gc +++ b/goal_src/jak3/levels/desert/wvehicle/wvehicle-util.gc @@ -237,7 +237,7 @@ ) (set! (-> gp-0 flags) (font-flags shadow kerning large)) (print-game-text - (lookup-text! *common-text* (text-id text-0779) #f) + (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 44 @@ -308,13 +308,7 @@ (let ((a0-12 gp-0)) (set! (-> a0-12 color) (font-color default)) ) - (print-game-text - (lookup-text! *common-text* (text-id text-0887) #f) - gp-0 - #f - 44 - (bucket-id hud-draw-hud-alpha) - ) + (print-game-text (lookup-text! *common-text* (text-id locked) #f) gp-0 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) 0 diff --git a/goal_src/jak3/levels/factory/factory-boss-scenes.gc b/goal_src/jak3/levels/factory/factory-boss-scenes.gc index fec6f2df0c..a365b51ff0 100644 --- a/goal_src/jak3/levels/factory/factory-boss-scenes.gc +++ b/goal_src/jak3/levels/factory/factory-boss-scenes.gc @@ -80,7 +80,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryd) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -892,7 +892,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) diff --git a/goal_src/jak3/levels/factory/factory-scenes.gc b/goal_src/jak3/levels/factory/factory-scenes.gc index 90d302b4c7..cdde6e63af 100644 --- a/goal_src/jak3/levels/factory/factory-scenes.gc +++ b/goal_src/jak3/levels/factory/factory-scenes.gc @@ -578,7 +578,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryd) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -596,7 +596,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -698,7 +698,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryc) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -717,7 +717,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -805,7 +805,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryc) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -824,7 +824,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -912,7 +912,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryc) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -931,7 +931,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -1019,7 +1019,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryc) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -1038,7 +1038,7 @@ ((the-as (function level none) #f) (the-as level (-> gp-0 mood-context))) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) diff --git a/goal_src/jak3/levels/forest/forest-tasks.gc b/goal_src/jak3/levels/forest/forest-tasks.gc index 538ad06c55..1f079ebbd5 100644 --- a/goal_src/jak3/levels/forest/forest-tasks.gc +++ b/goal_src/jak3/levels/forest/forest-tasks.gc @@ -598,7 +598,7 @@ ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-default) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (set! (-> *sky-work* disable-day-star) (the-as basic #t)) @@ -747,7 +747,7 @@ ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'default) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (set! (-> *sky-work* disable-day-star) #f) @@ -936,7 +936,7 @@ ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-default) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -1035,7 +1035,7 @@ ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'default) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) diff --git a/goal_src/jak3/levels/gungame/gungame-manager.gc b/goal_src/jak3/levels/gungame/gungame-manager.gc index 3b87bd6a8f..74777eeccc 100644 --- a/goal_src/jak3/levels/gungame/gungame-manager.gc +++ b/goal_src/jak3/levels/gungame/gungame-manager.gc @@ -1301,7 +1301,7 @@ :start-gun 30 :ammo-type 15 :training-task #x84 - :play-text (text-id text-07e7) + :play-text (text-id press-to-play-beam-reflexor-training) :play-button (new 'static 'handle :process #x4000 :u64 #x4000) :give-eggs? #t ) @@ -1319,7 +1319,7 @@ :start-gun 27 :ammo-type 16 :training-task #xa2 - :play-text (text-id text-07e6) + :play-text (text-id press-to-play-wave-concussor-training) :play-button (new 'static 'handle :process #x4000 :u64 #x4000) :give-eggs? #t ) @@ -1337,7 +1337,7 @@ :start-gun 30 :ammo-type 15 :training-task #xa2 - :play-text (text-id text-07e8) + :play-text (text-id wave-concussor-training-ratchet-gun-course) :play-button (new 'static 'handle :process #x8000 :u64 #x8000) :give-eggs? #f ) @@ -1355,7 +1355,7 @@ :start-gun 27 :ammo-type 16 :training-task #xa2 - :play-text (text-id text-07e9) + :play-text (text-id beam-reflexor-training-clank-gun-course) :play-button (new 'static 'handle :process #x8000 :u64 #x8000) :give-eggs? #f ) diff --git a/goal_src/jak3/levels/precursor/precura-obs2.gc b/goal_src/jak3/levels/precursor/precura-obs2.gc index 5a8c60966a..cca8cd359d 100644 --- a/goal_src/jak3/levels/precursor/precura-obs2.gc +++ b/goal_src/jak3/levels/precursor/precura-obs2.gc @@ -838,7 +838,7 @@ (set! (-> v1-11 scale) 0.9) ) (let ((s5-0 print-game-text)) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-077c) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id press-to-throw-held-objects) #f)) (s5-0 *temp-string* gp-0 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) diff --git a/goal_src/jak3/levels/temple/temple-obs2.gc b/goal_src/jak3/levels/temple/temple-obs2.gc index 6c7e56a528..0a2cbaeb60 100644 --- a/goal_src/jak3/levels/temple/temple-obs2.gc +++ b/goal_src/jak3/levels/temple/temple-obs2.gc @@ -508,8 +508,8 @@ (lookup-text! *common-text* (if (or (not (focus-test? *target* gun)) (!= (-> *game-info* gun-type) 27)) - (text-id text-07c3) - (text-id text-0885) + (text-id use-the-wave-concussor) + (text-id hold-to-charge-and-then-release-to-fire-blast) ) #f ) diff --git a/goal_src/jak3/levels/title/title-obs.gc b/goal_src/jak3/levels/title/title-obs.gc index 404cae1a69..95ce2230b4 100644 --- a/goal_src/jak3/levels/title/title-obs.gc +++ b/goal_src/jak3/levels/title/title-obs.gc @@ -1494,7 +1494,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.4 - :text-id (text-id text-07bd) + :text-id (text-id museum-jakc) :cloth-reset-time (seconds 0.1) :use-orient-cloth-reset? #f :outtake (new 'static 'boxed-array :type string "jakout01" "jakout02" "jakout03" "jakout04") @@ -1507,7 +1507,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 1.0 - :text-id (text-id text-07c1) + :text-id (text-id museum-ashelin) :outtake (new 'static 'boxed-array :type string "ashout01" "ashout02" @@ -1526,7 +1526,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-07fa) + :text-id (text-id museum-keira) ) (new 'static 'museum-char :skel "skel-kleever-highres" @@ -1536,7 +1536,7 @@ :zoom-min 10240.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-07f7) + :text-id (text-id museum-kleever) :cloth-reset-time (seconds 0.1) :use-orient-cloth-reset? #f ) @@ -1548,7 +1548,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0801) + :text-id (text-id museum-onin) ) (new 'static 'museum-char :skel "skel-ottsel-daxpants" @@ -1558,7 +1558,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07be) + :text-id (text-id museum-daxter) :outtake (new 'static 'boxed-array :type string "daxout01" "daxout02" @@ -1577,7 +1577,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 1.0 - :text-id (text-id text-07bf) + :text-id (text-id museum-pecker) :outtake (new 'static 'boxed-array :type string "pekout01") ) (new 'static 'museum-char @@ -1588,7 +1588,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-07f8) + :text-id (text-id museum-samos) ) (new 'static 'museum-char :skel "skel-seem-highres" @@ -1598,7 +1598,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-07f9) + :text-id (text-id museum-seem) :cloth-reset-time (seconds 0.1) :use-orient-cloth-reset? #t ) @@ -1610,7 +1610,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-07c2) + :text-id (text-id museum-tess) :outtake (new 'static 'boxed-array :type string "tesout01" "tesout02" "tesout03" "tesout04" "tesout05") ) (new 'static 'museum-char @@ -1621,7 +1621,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 1.0 - :text-id (text-id text-07c0) + :text-id (text-id museum-torn) :outtake (new 'static 'boxed-array :type string "torout01" "torout02") ) (new 'static 'museum-char @@ -1632,7 +1632,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0804) + :text-id (text-id museum-cyber-errol) ) (new 'static 'museum-char :skel "skel-jinx-highres" @@ -1642,7 +1642,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-0803) + :text-id (text-id museum-jinx) ) (new 'static 'museum-char :skel "skel-damus-highres" @@ -1652,7 +1652,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0802) + :text-id (text-id museum-damus) :cloth-reset-time (seconds 0.4) :use-orient-cloth-reset? #f ) @@ -1664,7 +1664,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-07fd) + :text-id (text-id museum-sig) ) (new 'static 'museum-char :skel "skel-veger-highres" @@ -1674,7 +1674,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-0805) + :text-id (text-id museum-veger) :cloth-reset-time (seconds 0.4) :use-orient-cloth-reset? #f ) @@ -1686,7 +1686,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07fb) + :text-id (text-id museum-ottsel-dummy) ) (new 'static 'museum-char :skel "skel-ottsel-leader" @@ -1696,7 +1696,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07fe) + :text-id (text-id museum-ottsel-leader) :cloth-reset-time (seconds 0.1) :use-orient-cloth-reset? #f ) @@ -1708,7 +1708,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07ff) + :text-id (text-id museum-ottsel-surfer) ) (new 'static 'museum-char :skel "skel-ottsel-tess" @@ -1718,7 +1718,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07fc) + :text-id (text-id museum-ottsel-tess) ) (new 'static 'museum-char :skel "skel-ottsel-veger" @@ -1728,7 +1728,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-0800) + :text-id (text-id museum-ottsel-veger) ) ) ) @@ -1818,7 +1818,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.4 - :text-id (text-id text-07bc) + :text-id (text-id museum-jak) :outtake (new 'static 'boxed-array :type string "jakout01" "jakout02" "jakout03" "jakout04") ) (new 'static 'museum-char @@ -1829,7 +1829,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07be) + :text-id (text-id museum-daxter) :outtake (new 'static 'boxed-array :type string "daxout01" "daxout02" @@ -1849,7 +1849,7 @@ :zoom-min 12288.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0894) + :text-id (text-id museum-vin) :outtake (new 'static 'boxed-array :type string "vinout01" "vinout02" "vinout03") ) (new 'static 'museum-char @@ -1860,7 +1860,7 @@ :zoom-min 12288.0 :zoom-max 28672.0 :scale 1.0 - :text-id (text-id text-0893) + :text-id (text-id museum-krew) :outtake (new 'static 'boxed-array :type string "krwout01" "krwout02" "krwout03" "krwout04" "krwout05") ) (new 'static 'museum-char @@ -1871,7 +1871,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 1.0 - :text-id (text-id text-0830) + :text-id (text-id museum-errol) ) (new 'static 'museum-char :skel "skel-youngsamos-highres" @@ -1881,7 +1881,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-0817) + :text-id (text-id museum-youngsamos) ) (new 'static 'museum-char :skel "skel-kor-highres" @@ -1891,7 +1891,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 1.0 - :text-id (text-id text-082f) + :text-id (text-id museum-kor) ) (new 'static 'museum-char :skel "skel-kid-highres" @@ -1901,7 +1901,7 @@ :zoom-min 4096.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-082e) + :text-id (text-id museum-kid) ) (new 'static 'museum-char :skel "skel-baron-highres" @@ -1911,7 +1911,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0816) + :text-id (text-id museum-baron) :outtake (new 'static 'boxed-array :type string "barout01" "barout02" "barout03" "barout04" "barout05") ) (new 'static 'museum-char @@ -1922,7 +1922,7 @@ :zoom-min 12288.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0819) + :text-id (text-id museum-red-crimson-guard) ) (new 'static 'museum-char :skel "skel-brutter-highres" @@ -1932,7 +1932,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0818) + :text-id (text-id museum-brutter) ) (new 'static 'museum-char :skel "skel-crocadog-highres" @@ -1942,7 +1942,7 @@ :zoom-min 12288.0 :zoom-max 16384.0 :scale 1.0 - :text-id (text-id text-082d) + :text-id (text-id museum-crocadog) ) ) ) @@ -2082,7 +2082,7 @@ :zoom-min 4096.0 :zoom-max 18432.0 :scale 1.4 - :text-id (text-id text-07bb) + :text-id (text-id museum-jak-one) ) (new 'static 'museum-char :skel "skel-warrior" @@ -2092,7 +2092,7 @@ :zoom-min 12288.0 :zoom-max 32768.0 :scale 1.0 - :text-id (text-id text-0820) + :text-id (text-id museum-warrior) ) (new 'static 'museum-char :skel "skel-evilsis" @@ -2102,7 +2102,7 @@ :zoom-min 6144.0 :zoom-max 18432.0 :scale 0.8 - :text-id (text-id text-0829) + :text-id (text-id museum-evilsis) ) (new 'static 'museum-char :skel "skel-evilbro" @@ -2111,7 +2111,7 @@ :zoom-min 6144.0 :zoom-max 18432.0 :scale 0.8 - :text-id (text-id text-0828) + :text-id (text-id museum-evilbro) ) (new 'static 'museum-char :skel "skel-bird-lady" @@ -2121,7 +2121,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-0826) + :text-id (text-id museum-bird-lady) ) (new 'static 'museum-char :skel "skel-explorer" @@ -2131,7 +2131,7 @@ :zoom-min 4096.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-082a) + :text-id (text-id museum-explorer) ) (new 'static 'museum-char :skel "skel-billy" @@ -2141,7 +2141,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-0832) + :text-id (text-id museum-billy) ) (new 'static 'museum-char :skel "skel-farmer" @@ -2151,7 +2151,7 @@ :zoom-min 12288.0 :zoom-max 28672.0 :scale 0.8 - :text-id (text-id text-082b) + :text-id (text-id museum-farmer) ) (new 'static 'museum-char :skel "skel-fisher" @@ -2161,7 +2161,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-082c) + :text-id (text-id museum-fisher) ) (new 'static 'museum-char :skel "skel-mayor" @@ -2171,7 +2171,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-081b) + :text-id (text-id museum-mayor) ) (new 'static 'museum-char :skel "skel-minershort" @@ -2181,7 +2181,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-0823) + :text-id (text-id museum-minershort) ) (new 'static 'museum-char :skel "skel-minertall" @@ -2191,7 +2191,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-0824) + :text-id (text-id museum-minertall) ) (new 'static 'museum-char :skel "skel-gambler" @@ -2201,7 +2201,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-0822) + :text-id (text-id museum-gambler) ) (new 'static 'museum-char :skel "skel-ogreboss" @@ -2211,7 +2211,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.1 - :text-id (text-id text-0825) + :text-id (text-id museum-ogreboss) ) (new 'static 'museum-char :skel "skel-sculptor" @@ -2221,7 +2221,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-081d) + :text-id (text-id museum-sculptor) ) (new 'static 'museum-char :skel "skel-redsage" @@ -2231,7 +2231,7 @@ :zoom-min 10240.0 :zoom-max 22528.0 :scale 0.8 - :text-id (text-id text-081c) + :text-id (text-id museum-redsage) ) (new 'static 'museum-char :skel "skel-yellowsage" @@ -2241,7 +2241,7 @@ :zoom-min 10240.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-081f) + :text-id (text-id museum-yellowsage) ) (new 'static 'museum-char :skel "skel-sidekick-human" @@ -2251,7 +2251,7 @@ :zoom-min 4096.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-081e) + :text-id (text-id museum-sidekick-human) ) (new 'static 'museum-char :skel "skel-geologist" @@ -2261,7 +2261,7 @@ :zoom-min 4096.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-0821) + :text-id (text-id museum-geologist) ) (new 'static 'museum-char :skel "skel-bluesage" @@ -2271,7 +2271,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 0.8 - :text-id (text-id text-0827) + :text-id (text-id museum-bluesage) ) (new 'static 'museum-char :skel "skel-babak" @@ -2281,7 +2281,7 @@ :zoom-min 12288.0 :zoom-max 22528.0 :scale 0.8 - :text-id (text-id text-0831) + :text-id (text-id museum-babak) ) (new 'static 'museum-char :skel "skel-flutflut" @@ -2291,7 +2291,7 @@ :zoom-min 10240.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-081a) + :text-id (text-id museum-flutflut) ) ) ) @@ -2392,7 +2392,7 @@ ) (set! (-> gp-0 flags) (font-flags shadow kerning large)) (let ((s5-0 print-game-text)) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-0806) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id credits-starring) #f)) (s5-0 *temp-string* gp-0 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) diff --git a/goal_src/jak3/levels/wascity/bbush/des-bush-time-chase.gc b/goal_src/jak3/levels/wascity/bbush/des-bush-time-chase.gc index 7e993e9de6..99890fd97d 100644 --- a/goal_src/jak3/levels/wascity/bbush/des-bush-time-chase.gc +++ b/goal_src/jak3/levels/wascity/bbush/des-bush-time-chase.gc @@ -1366,7 +1366,7 @@ (set! (-> a0-16 color) (-> this strings 1 color)) ) (let ((s4-0 print-game-text)) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-0861) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id extra-time) #f)) (s4-0 *temp-string* s5-3 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) @@ -1410,7 +1410,7 @@ (gp-1 (clear (-> this strings 1 text))) (s4-0 "") ) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-0861) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id extra-time) #f)) *temp-string* (s5-0 gp-1 s4-0) ) diff --git a/goal_src/jak3/levels/wascity/palace/waspala-obs.gc b/goal_src/jak3/levels/wascity/palace/waspala-obs.gc index 046171720e..fc183a3fcb 100644 --- a/goal_src/jak3/levels/wascity/palace/waspala-obs.gc +++ b/goal_src/jak3/levels/wascity/palace/waspala-obs.gc @@ -220,7 +220,7 @@ ) (send-event *target* 'end-mode 'grab) (until v1-29 - (draw-text self (text-id text-07c4)) + (draw-text self (text-id hold-to-charge-and-then-release-to-fire-bigger-blast)) (if (< (get-remaining-player-ammo (pickup-type ammo-red)) 60.0) (adjust-player-ammo 500.0 (pickup-type ammo-red)) ) diff --git a/goal_src/jak3/levels/wascity/wasstadium/arena-scenes.gc b/goal_src/jak3/levels/wascity/wasstadium/arena-scenes.gc index e1d509a998..3f479603b9 100644 --- a/goal_src/jak3/levels/wascity/wasstadium/arena-scenes.gc +++ b/goal_src/jak3/levels/wascity/wasstadium/arena-scenes.gc @@ -93,7 +93,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-waspala) - (logclear! (-> gp-0 info level-flags) (level-flags lf9)) + (logclear! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -376,7 +376,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-copy-wasstada) - (logclear! (-> gp-0 info level-flags) (level-flags lf9)) + (logclear! (-> gp-0 info level-flags) (level-flags sky)) ) ) (cond @@ -500,7 +500,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-copy-wasstada) - (logclear! (-> gp-0 info level-flags) (level-flags lf9)) + (logclear! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -519,7 +519,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-waspala) - (logclear! (-> gp-0 info level-flags) (level-flags lf9)) + (logclear! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) diff --git a/goal_src/jak3/levels/wascity/wasstadium/wasstadc-obs.gc b/goal_src/jak3/levels/wascity/wasstadium/wasstadc-obs.gc index ed14d04b23..9e136388b6 100644 --- a/goal_src/jak3/levels/wascity/wasstadium/wasstadc-obs.gc +++ b/goal_src/jak3/levels/wascity/wasstadium/wasstadc-obs.gc @@ -2919,7 +2919,7 @@ (set! (-> v1-46 scale) 0.7) ) (let ((s4-1 print-game-text)) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-085a) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id dark-bomb-how-to) #f)) (s4-1 *temp-string* s5-1 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) diff --git a/goal_src/jak3/pc/debug/default-menu-pc.gc b/goal_src/jak3/pc/debug/default-menu-pc.gc index f1ba806e32..ad78516779 100644 --- a/goal_src/jak3/pc/debug/default-menu-pc.gc +++ b/goal_src/jak3/pc/debug/default-menu-pc.gc @@ -960,7 +960,6 @@ ) (flag "V-sync" #f ,(dm-lambda-boolean-flag (-> *pc-settings* vsync?))) (flag "PS2 actor vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-actor-vis?))) - (flag "Display actor counts" *display-actor-counts* dm-boolean-toggle-pick-func) (flag "Display git commit" *display-sha* dm-boolean-toggle-pick-func) (flag "Music fadein" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadein?))) (flag "Music fadeout" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadeout?))) diff --git a/goal_src/jak3/pc/debug/entity-debug.gc b/goal_src/jak3/pc/debug/entity-debug.gc index 0e4c87379b..c9de957021 100644 --- a/goal_src/jak3/pc/debug/entity-debug.gc +++ b/goal_src/jak3/pc/debug/entity-debug.gc @@ -48,7 +48,7 @@ (bucket-id debug-no-zbuf1)) ;; basic info, actor id, etc (draw-string-xy - (string-format "~3L~A~0L ~A~%tags: ~D size: ~D aid: #x~x level: ~S~%R1/L1 to scroll UP toggle display-long-info~%--------------------" (-> e type) name (length e) (asize-of e) (-> e aid) (aif (-> e extra) (-> it level name))) + (string-format "~3L~A~0L ~A~%tags: ~D size: ~D aid: #x~x level: ~S~%R1/L1 to scroll UP toggle display-long-info~%--------------------" (-> e type) name (length e) (asize-of e) (-> e aid) (if (and (nonzero? (-> e extra)) (-> e extra)) (-> e extra level name))) debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) (+! cur-y (* LINE_HEIGHT 4)) (cond diff --git a/goal_src/jak3/pc/debug/pc-debug-methods.gc b/goal_src/jak3/pc/debug/pc-debug-methods.gc index e73c37bbfb..8f426fabf8 100644 --- a/goal_src/jak3/pc/debug/pc-debug-methods.gc +++ b/goal_src/jak3/pc/debug/pc-debug-methods.gc @@ -92,7 +92,7 @@ (draw-memory-bar-kheap buf global :idx idx :color (static-rgba 32 32 255 64)) (draw-memory-bar-kheap buf debug :idx (1+! idx) :color (static-rgba 255 32 32 64)) (dotimes (i (-> *level* length)) - (draw-memory-bar-kheap buf (-> *level* level i heap) + (draw-memory-bar-kheap buf (if (= (-> *level* level i status) 'inactive) (-> *level* level-default heap) (-> *level* level i heap)) :name (aif (-> *level* level i borrow-from-level) (string-format "(~A)l~D<-l~D" (-> *level* level i name) i (-> it index)) (string-format "(~A)l~D" (-> *level* level i name) i)) diff --git a/goal_src/jak3/pc/pckernel.gc b/goal_src/jak3/pc/pckernel.gc index 9f3a412935..45d803f441 100644 --- a/goal_src/jak3/pc/pckernel.gc +++ b/goal_src/jak3/pc/pckernel.gc @@ -445,17 +445,6 @@ `(-> *pc-settings* flava-unlocked ,flava)) -(defun inside-city? () - "are we inside haven city?" - (symbol-member? (-> *game-info* current-continue vis-nick) ;; TODO get actual level we're in? - '(ctysluma ctyslumb ctyslumc - ctygena ctygenb ctygenc - ctymarka ctymarkb - ctyfarma ctyfarmb - ctyinda ctyindb - ctypal ctyport stadium))) - - (defmethod update-cheats ((obj pc-settings-jak3)) "run cheats." @@ -482,7 +471,7 @@ ((and (pc-cheats? (-> obj cheats) turbo-board) *target* (focus-test? *target* board) - (inside-city?)) + (= 'ctywide (-> *target* current-level info master-level))) (set-setting! 'string-spline-max-move 'abs (* (-> *pc-cheat-state* turbo-board-speed) (meters 2)) 0) (set-setting! 'string-spline-accel 'abs (* (-> *pc-cheat-state* turbo-board-speed) (meters 0.045)) 0) (set-setting! 'string-spline-max-move-player 'abs (* (-> *pc-cheat-state* turbo-board-speed) (meters 1.5)) 0) diff --git a/goalc/build_actor/common/MercExtract.cpp b/goalc/build_actor/common/MercExtract.cpp index bb49f7db58..1aceda7140 100644 --- a/goalc/build_actor/common/MercExtract.cpp +++ b/goalc/build_actor/common/MercExtract.cpp @@ -2,6 +2,8 @@ #include "common/log/log.h" +#include "goalc/build_level/common/gltf_mesh_extract.h" + void extract(const std::string& name, MercExtractData& out, const tinygltf::Model& model, @@ -17,10 +19,28 @@ void extract(const std::string& name, for (const auto& n : all_nodes) { const auto& node = model.nodes[n.node_idx]; + if (node.extras.Has("set_invisible") && node.extras.Get("set_invisible").Get()) { + continue; + } + // gltf_mesh_extract::PatResult mesh_default_collide = + // gltf_mesh_extract::custom_props_to_pat(node.extras, node.name); if (node.mesh >= 0) { const auto& mesh = model.meshes[node.mesh]; mesh_count++; for (const auto& prim : mesh.primitives) { + // get material + // const auto& mat_idx = prim.material; + // gltf_mesh_extract::PatResult pat = mesh_default_collide; + // if (mat_idx != -1) { + // const auto& mat = model.materials[mat_idx]; + // auto mat_pat = gltf_mesh_extract::custom_props_to_pat(mat.extras, mat.name); + // if (mat_pat.set) { + // pat = mat_pat; + // } + // } + // if (pat.set && pat.ignore) { + // continue; // skip, no collide here + // } prim_count++; // extract index buffer std::vector prim_indices = gltf_util::gltf_index_buffer( @@ -40,6 +60,7 @@ void extract(const std::string& name, draw.mode = gltf_util::make_default_draw_mode(); // todo rm draw.tree_tex_id = 0; // todo rm draw.num_triangles += prim_indices.size() / 3; + draw.no_strip = true; // if (draw.vis_groups.empty()) { // auto& grp = draw.vis_groups.emplace_back(); // grp.num_inds += prim_indices.size(); @@ -152,4 +173,103 @@ MercSwapData load_merc_model(u32 current_idx_count, merc_convert(result, extract_data); return result; -} \ No newline at end of file +} + +std::vector gen_collide_mesh_from_model( + const tinygltf::Model& model, + const std::vector& all_nodes, + int joint_idx) { + // data for a single primitive + struct PrimWork { + std::string mesh_name; + std::vector verts; + std::vector indices; + gltf_mesh_extract::PatResult pat; + }; + std::vector> mesh_data; + int mesh_count = 0; + // int prim_count = 0; + for (const auto& n : all_nodes) { + const auto& node = model.nodes[n.node_idx]; + gltf_mesh_extract::PatResult mesh_default_collide = + gltf_mesh_extract::custom_props_to_pat(node.extras, node.name); + if (node.mesh >= 0) { + const auto& mesh = model.meshes[node.mesh]; + mesh_count++; + std::vector prims; + for (const auto& prim : mesh.primitives) { + // get material + const auto& mat_idx = prim.material; + gltf_mesh_extract::PatResult pat = mesh_default_collide; + if (mat_idx != -1) { + const auto& mat = model.materials[mat_idx]; + auto mat_pat = gltf_mesh_extract::custom_props_to_pat(mat.extras, mat.name); + if (mat_pat.set) { + pat = mat_pat; + } + } + if (pat.set && pat.ignore) { + continue; // skip, no collide here + } + auto& prim_data = prims.emplace_back(); + prim_data.mesh_name = mesh.name; + prim_data.pat = pat; + // prim_count++; + // extract index buffer + std::vector prim_indices = gltf_util::gltf_index_buffer(model, prim.indices, 0); + ASSERT_MSG(prim.mode == TINYGLTF_MODE_TRIANGLES, + fmt::format("Mesh {}: Unsupported triangle mode {}", mesh.name, prim.mode)); + // extract vertices + auto verts = + gltf_util::gltf_vertices(model, prim.attributes, n.w_T_node, true, true, mesh.name); + ASSERT_MSG(verts.vtx.size() <= 255, + fmt::format("primitive of mesh {} has too many vertices (max 255, actual {})", + mesh.name, verts.vtx.size())); + prim_data.verts.reserve(verts.vtx.size()); + for (auto& vert : verts.vtx) { + prim_data.verts.emplace_back(vert.x, vert.y, vert.z, 1.0); + } + prim_data.indices = prim_indices; + mesh_data.push_back(prims); + } + } + } + + std::vector cmeshes; + cmeshes.reserve(mesh_count); + // we extracted all of the prim data for each mesh, now combine + for (size_t p = 0; p < mesh_data.size(); p++) { + auto& prims = mesh_data.at(p); + std::vector verts; + std::vector tris; + int vert_count = 0; + for (auto& prim : prims) { + if (prim.pat.ignore) { + continue; + } + vert_count += verts.size(); + verts.insert(verts.end(), prim.verts.begin(), prim.verts.end()); + for (size_t i = 0; i < prim.indices.size(); i += 3) { + auto& tri = tris.emplace_back(); + tri.vert_idx[0] = prim.indices.at(i); + tri.vert_idx[1] = prim.indices.at(i + 1); + tri.vert_idx[2] = prim.indices.at(i + 2); + tri.pat = prim.pat.pat; + } + } + ASSERT_MSG(vert_count <= 255, fmt::format("Mesh {} has too many vertices (max 255, actual {})", + prims.at(p).mesh_name, vert_count)); + auto& cmesh = cmeshes.emplace_back(); + // TODO joint idx as a custom property in blender? + cmesh.joint_id = joint_idx; + cmesh.vertices.reserve(255); + cmesh.vertices.insert(cmesh.vertices.begin(), verts.begin(), verts.end()); + cmesh.num_verts = cmesh.vertices.size(); + cmesh.num_tris = tris.size(); + cmesh.tris.reserve(cmesh.num_tris); + for (size_t j = 0; j < cmesh.num_tris; j++) { + cmesh.tris.push_back(tris.at(j)); + } + } + return cmeshes; +} diff --git a/goalc/build_actor/common/MercExtract.h b/goalc/build_actor/common/MercExtract.h index 302abdfc52..7653b93d03 100644 --- a/goalc/build_actor/common/MercExtract.h +++ b/goalc/build_actor/common/MercExtract.h @@ -2,6 +2,8 @@ #include "common/util/gltf_util.h" +#include "goalc/build_actor/jak1/build_actor.h" + struct MercExtractData { gltf_util::TexturePool tex_pool; std::vector new_indices; @@ -32,4 +34,8 @@ MercSwapData load_merc_model(u32 current_idx_count, u32 current_vtx_count, u32 current_tex_count, const std::string& path, - const std::string& name); \ No newline at end of file + const std::string& name); +std::vector gen_collide_mesh_from_model( + const tinygltf::Model& model, + const std::vector& all_nodes, + int joint_idx); \ No newline at end of file diff --git a/goalc/build_actor/jak1/build_actor.cpp b/goalc/build_actor/jak1/build_actor.cpp index b58fdd0e00..f9b54ae60f 100644 --- a/goalc/build_actor/jak1/build_actor.cpp +++ b/goalc/build_actor/jak1/build_actor.cpp @@ -2,6 +2,8 @@ #include "common/log/log.h" +#include "goalc/build_actor/common/MercExtract.h" + #include "third-party/tiny_gltf/tiny_gltf.h" using namespace gltf_util; @@ -101,14 +103,77 @@ size_t JointAnimCompressedControl::generate(DataObjectGenerator& gen) const { return result; } -size_t ArtJointGeo::generate_res_lump(DataObjectGenerator& gen) const { +size_t CollideMesh::generate(DataObjectGenerator& gen) const { gen.align_to_basic(); - gen.add_type_tag("res-lump"); + gen.add_type_tag("collide-mesh"); size_t result = gen.current_offset_bytes(); + // gen.add_word(0xffffffff - joint_id); // 4 (joint-id) + gen.add_word(joint_id); // 4 (joint-id) + gen.add_word(num_tris); // 8 (num-tris) + gen.add_word(num_verts); // 12 (num-verts) + auto vertices_slot = gen.add_word(0); // 16 (vertex-data) + gen.add_word(0); // 20 (pad) + gen.add_word(0); // 24 (pad) + gen.add_word(0); // 28 (pad) + for (auto& tri : tris) { + u32 word = (tri.vert_idx[0] & 0xff) + ((tri.vert_idx[1] << 8) & 0xff00) + + ((tri.vert_idx[2] << 16) & 0xff0000); + gen.add_word(word); // 0 (tris | vertex-index | unused) + gen.add_word(tri.pat.val); // 4 (pat) + } + // vertex data start + gen.link_word_to_byte(vertices_slot, gen.current_offset_bytes()); + for (auto& vert : vertices) { + gen.add_word_float(vert.x()); + gen.add_word_float(vert.y()); + gen.add_word_float(vert.z()); + gen.add_word_float(vert.w()); + } return result; +}; + +void ArtJointGeo::add_res() { + if (!cmeshes.empty()) { + lump.add_res( + std::make_unique("collide-mesh-group", "array", mesh_slot, DEFAULT_RES_TIME)); + } + // jgeo.lump.add_res( + // std::make_unique("texture-level", std::vector{2}, DEFAULT_RES_TIME)); + // jgeo.lump.add_res(std::make_unique( + // "trans-offset", std::vector{{0.0f, 2048.0f, 0.0f, 1.0f}}, + // DEFAULT_RES_TIME)); + // jgeo.lump.add_res( + // std::make_unique("joint-channel", std::vector{0}, DEFAULT_RES_TIME)); + // jgeo.lump.add_res(std::make_unique( + // "lod-dist", std::vector{5000.0f * METER_LENGTH, 6000.0f * METER_LENGTH}, + // DEFAULT_RES_TIME)); + lump.sort_res(); } -size_t ArtJointGeo::generate(DataObjectGenerator& gen) const { +size_t ArtJointGeo::generate_mesh(DataObjectGenerator& gen) const { + std::vector data_slots; + std::vector content_slots; + gen.align_to_basic(); + gen.add_type_tag("array"); + size_t result = gen.current_offset_bytes(); + gen.add_word(cmeshes.size()); // 0 (length) + gen.add_word(cmeshes.size()); // 4 (allocated-length) + gen.add_type_tag("collide-mesh"); // 8 (content-type) + content_slots.reserve(cmeshes.size()); + for (auto& data : cmeshes) { + content_slots.push_back(gen.add_word(0)); // 12 (data) + } + gen.align(4); + for (size_t i = 0; i < content_slots.size(); i++) { + data_slots.push_back(cmeshes.at(i).generate(gen)); + } + for (size_t i = 0; i < content_slots.size(); i++) { + gen.link_word_to_byte(content_slots.at(i), data_slots.at(i)); + } + return result; +} + +size_t ArtJointGeo::generate(DataObjectGenerator& gen) { gen.align_to_basic(); gen.add_type_tag("art-joint-geo"); size_t result = gen.current_offset_bytes(); @@ -129,6 +194,8 @@ size_t ArtJointGeo::generate(DataObjectGenerator& gen) const { gen.link_word_to_byte(joint_slots.at(i), joint); g_joint_map[data.at(i).number] = joint; } + mesh_slot = generate_mesh(gen); + add_res(); auto res_header = lump.generate_header(gen, "res-lump"); gen.link_word_to_byte(res_slot, res_header); lump.generate_tag_list_and_data(gen, res_header); @@ -376,14 +443,28 @@ std::vector ArtGroup::save_object_file() const { return gen.generate_v4(); } -bool run_build_actor(const std::string& input_model, +int ArtGroup::get_joint_idx(const std::string& name) { + for (auto& elt : this->elts) { + if (elt && typeid(*elt) == typeid(ArtJointGeo)) { + auto jgeo = (ArtJointGeo*)elt; + for (auto& joint : jgeo->data) { + if (joint.name == name) { + return joint.number; + } + } + } + } + return -1; +} + +bool run_build_actor(const std::string& mdl_name, const std::string& ag_out, - const std::string& output_prefix) { + bool gen_collide_mesh) { std::string ag_name; - if (fs::exists(file_util::get_jak_project_dir() / input_model)) { - ag_name = fs::path(input_model).stem().string(); + if (fs::exists(file_util::get_jak_project_dir() / mdl_name)) { + ag_name = fs::path(mdl_name).stem().string(); } else { - ASSERT_MSG(false, "Model file not found: " + input_model); + ASSERT_MSG(false, "Model file not found: " + mdl_name); } ArtGroup ag(ag_name); @@ -411,21 +492,22 @@ bool run_build_actor(const std::string& input_model, main_pose(3, 3) = 1.0f; Joint main("main", 2, 1, main_pose); joints.emplace_back(main); - ArtJointGeo jgeo(ag.name, joints); + std::vector mesh; + if (gen_collide_mesh) { + tinygltf::TinyGLTF loader; + tinygltf::Model model; + std::string err, warn; + std::string path = (file_util::get_jak_project_dir() / mdl_name).string(); + bool res = loader.LoadBinaryFromFile(&model, &err, &warn, path); + ASSERT_MSG(warn.empty(), warn.c_str()); + ASSERT_MSG(err.empty(), err.c_str()); + ASSERT_MSG(res, "Failed to load GLTF file!"); + auto all_nodes = flatten_nodes_from_all_scenes(model); + mesh = gen_collide_mesh_from_model(model, all_nodes, 3); + } + ArtJointGeo jgeo(ag.name, mesh, joints); ArtJointAnim ja(ag.name, joints); - jgeo.lump.add_res( - std::make_unique("texture-level", std::vector{2}, DEFAULT_RES_TIME)); - // jgeo.lump.add_res(std::make_unique( - // "trans-offset", std::vector{{0.0f, 2048.0f, 0.0f, 1.0f}}, - // DEFAULT_RES_TIME)); - jgeo.lump.add_res( - std::make_unique("joint-channel", std::vector{0}, DEFAULT_RES_TIME)); - jgeo.lump.add_res(std::make_unique( - "lod-dist", std::vector{5000.0f * METER_LENGTH, 6000.0f * METER_LENGTH}, - DEFAULT_RES_TIME)); - jgeo.lump.sort_res(); - ag.elts.emplace_back(&jgeo); // dummy merc-ctrl ag.elts.emplace_back(nullptr); diff --git a/goalc/build_actor/jak1/build_actor.h b/goalc/build_actor/jak1/build_actor.h index 0634d08a09..9868cea3bc 100644 --- a/goalc/build_actor/jak1/build_actor.h +++ b/goalc/build_actor/jak1/build_actor.h @@ -139,23 +139,33 @@ struct CollideMesh { u32 num_tris; u32 num_verts; std::vector vertices; - CollideMeshTri tris; + std::vector tris; + + size_t generate(DataObjectGenerator& gen) const; + size_t calc_data_size() const { + // (size-of collide-mesh) + type ptr = 36 + return 36 + 16 * vertices.size() + sizeof(CollideMeshTri) * tris.size(); + } }; struct ArtJointGeo : ArtElement { std::vector data; - CollideMesh mesh; + std::vector cmeshes; ResLump lump; + size_t mesh_slot; - explicit ArtJointGeo(const std::string& name, const std::vector& joints) { + explicit ArtJointGeo(const std::string& name, + std::vector cmeshes, + std::vector& joints) { this->name = name + "-lod0"; length = joints.size(); for (auto& joint : joints) { data.push_back(joint); } + this->cmeshes = std::move(cmeshes); } - size_t generate(DataObjectGenerator& gen) const; - size_t generate_res_lump(DataObjectGenerator& gen) const; + void add_res(); + size_t generate(DataObjectGenerator& gen); size_t generate_mesh(DataObjectGenerator& gen) const; }; @@ -202,9 +212,10 @@ struct ArtGroup : Art { info.maya_file_name = "Unknown"; } std::vector save_object_file() const; + int get_joint_idx(const std::string& name); }; bool run_build_actor(const std::string& input_model, const std::string& output_file, - const std::string& output_prefix); + bool gen_collide_mesh); } // namespace jak1 diff --git a/goalc/build_actor/main.cpp b/goalc/build_actor/main.cpp index 9f83a0f4f4..b2525fb82c 100644 --- a/goalc/build_actor/main.cpp +++ b/goalc/build_actor/main.cpp @@ -13,7 +13,8 @@ int main(int argc, char** argv) { lg::initialize(); // game version - std::string game, input_model, output_file; + std::string game, mdl_name, output_file; + bool gen_collide_mesh; fs::path project_path_override; // path @@ -24,7 +25,7 @@ int main(int argc, char** argv) { lg::info("Build Actor Tool", versions::GOAL_VERSION_MAJOR, versions::GOAL_VERSION_MINOR); CLI::App app{"OpenGOAL Compiler / REPL"}; - app.add_option("input-model", input_model, + app.add_option("input-model", mdl_name, "Input model file (for example: custom_assets/jak1/models/test.glb)") ->required(); app.add_option("output-file", output_file, @@ -33,6 +34,7 @@ int main(int argc, char** argv) { app.add_option("-g,--game", game, "Game version (only jak1 for now)")->required(); app.add_option("--proj-path", project_path_override, "Specify the location of the 'data/' folder"); + app.add_flag("-m,--mesh", gen_collide_mesh, "Whether to generate a collide-mesh for this model"); app.validate_positionals(); CLI11_PARSE(app, argc, argv) @@ -53,7 +55,7 @@ int main(int argc, char** argv) { switch (game_version) { case GameVersion::Jak1: - jak1::run_build_actor(input_model, output_file, "jak1/"); + jak1::run_build_actor(mdl_name, output_file, gen_collide_mesh); break; default: ASSERT_NOT_REACHED_MSG("unsupported game version"); diff --git a/goalc/build_level/common/ResLump.cpp b/goalc/build_level/common/ResLump.cpp index e1d0114a39..36310570a4 100644 --- a/goalc/build_level/common/ResLump.cpp +++ b/goalc/build_level/common/ResLump.cpp @@ -240,6 +240,26 @@ int ResType::get_alignment() const { return 4; } +ResRef::ResRef(const std::string& name, const std::string& type, size_t ref, float key_frame) + : Res(name, key_frame), m_ref(ref), m_type(type) {} + +TagInfo ResRef::get_tag_info() const { + TagInfo result; + result.elt_type = m_type; + result.elt_count = 1; + result.inlined = false; + result.data_size = 4; + return result; +} + +void ResRef::write_data(DataObjectGenerator& gen) const { + gen.link_word_to_byte(gen.add_word(0), m_ref); +} + +int ResRef::get_alignment() const { + return 4; +} + void ResLump::add_res(std::unique_ptr res) { m_sorted = false; m_res.emplace_back(std::move(res)); @@ -345,12 +365,15 @@ void ResLump::generate_tag_list_and_data(DataObjectGenerator& gen, size_t header current_data_ptr += 4; gen.add_word(0); } - res->write_data(gen); - ASSERT(gen.current_offset_bytes() - current_data_ptr == rec.reported_size); + ASSERT_MSG(gen.current_offset_bytes() - current_data_ptr == rec.reported_size, + fmt::format("reported size of {} does not match actual size of {}", + rec.reported_size, gen.current_offset_bytes() - current_data_ptr)); current_data_ptr = gen.current_offset_bytes(); } - ASSERT(gen.current_offset_bytes() == data_end); + ASSERT_MSG(gen.current_offset_bytes() == data_end, + fmt::format("mismatch between current offset ({}) and data end ({})", + gen.current_offset_bytes(), data_end)); ASSERT(data_end == current_data_ptr); // update header diff --git a/goalc/build_level/common/ResLump.h b/goalc/build_level/common/ResLump.h index 755e448190..b9ffe7962a 100644 --- a/goalc/build_level/common/ResLump.h +++ b/goalc/build_level/common/ResLump.h @@ -138,6 +138,19 @@ class ResType : public Res { std::vector m_str; }; +class ResRef : public Res { + public: + ResRef(const std::string& name, const std::string& type, size_t ref, float key_frame); + + TagInfo get_tag_info() const override; + void write_data(DataObjectGenerator& gen) const override; + int get_alignment() const override; + + private: + size_t m_ref; + std::string m_type; +}; + /* (deftype res-lump (basic) ((length int32 :offset-assert 4) diff --git a/goalc/build_level/common/build_level.h b/goalc/build_level/common/build_level.h index f55c24c352..d455e061e1 100644 --- a/goalc/build_level/common/build_level.h +++ b/goalc/build_level/common/build_level.h @@ -9,7 +9,7 @@ #include "common/util/string_util.h" #include "decompiler/level_extractor/extract_level.h" -#include +#include "goalc/build_actor/common/MercExtract.h" void save_pc_data(const std::string& nickname, tfrag3::Level& data, const fs::path& fr3_output_dir); std::vector get_build_level_deps(const std::string& input_file); diff --git a/goalc/build_level/common/gltf_mesh_extract.cpp b/goalc/build_level/common/gltf_mesh_extract.cpp index 786e6ff9f4..05e5a40db5 100644 --- a/goalc/build_level/common/gltf_mesh_extract.cpp +++ b/goalc/build_level/common/gltf_mesh_extract.cpp @@ -13,8 +13,6 @@ #include "common/util/Timer.h" #include "common/util/gltf_util.h" -#include "third-party/tiny_gltf/tiny_gltf.h" - using namespace gltf_util; namespace gltf_mesh_extract { @@ -201,12 +199,6 @@ std::optional> subdivide_face_if_needed(jak1::Col } } -struct PatResult { - bool set = false; - bool ignore = false; - jak1::PatSurface pat; -}; - PatResult custom_props_to_pat(const tinygltf::Value& val, const std::string& /*debug_name*/) { PatResult result; if (!val.IsObject() || !val.Has("set_collision") || !val.Get("set_collision").Get()) { diff --git a/goalc/build_level/common/gltf_mesh_extract.h b/goalc/build_level/common/gltf_mesh_extract.h index 04867b3a38..d9f126ced6 100644 --- a/goalc/build_level/common/gltf_mesh_extract.h +++ b/goalc/build_level/common/gltf_mesh_extract.h @@ -6,6 +6,8 @@ #include "goalc/build_level/collide/common/collide_common.h" +#include "third-party/tiny_gltf/tiny_gltf.h" + namespace gltf_util { struct TexturePool; } @@ -36,6 +38,13 @@ struct Output { CollideOutput collide; }; +struct PatResult { + bool set = false; + bool ignore = false; + jak1::PatSurface pat; +}; + +PatResult custom_props_to_pat(const tinygltf::Value& val, const std::string& /*debug_name*/); void extract(const Input& in, Output& out); } // namespace gltf_mesh_extract \ No newline at end of file diff --git a/goalc/compiler/Compiler.cpp b/goalc/compiler/Compiler.cpp index 2dccd8297d..9362880ea8 100644 --- a/goalc/compiler/Compiler.cpp +++ b/goalc/compiler/Compiler.cpp @@ -65,7 +65,7 @@ Compiler::Compiler(GameVersion version, if (m_repl) { m_repl->load_history(); // init repl - m_repl->print_welcome_message(); + m_repl->print_welcome_message(m_make.get_loaded_projects()); auto& examples = m_repl->examples; auto& regex_colors = m_repl->regex_colors; m_repl->init_settings(); diff --git a/goalc/compiler/Compiler.h b/goalc/compiler/Compiler.h index b299ad0c96..994e844cab 100644 --- a/goalc/compiler/Compiler.h +++ b/goalc/compiler/Compiler.h @@ -5,7 +5,7 @@ #include #include "common/goos/Interpreter.h" -#include "common/repl/util.h" +#include "common/repl/repl_wrapper.h" #include "common/type_system/TypeSystem.h" #include "goalc/compiler/CompilerException.h" diff --git a/goalc/compiler/compilation/CompilerControl.cpp b/goalc/compiler/compilation/CompilerControl.cpp index 7fcdd33b83..61929e5408 100644 --- a/goalc/compiler/compilation/CompilerControl.cpp +++ b/goalc/compiler/compilation/CompilerControl.cpp @@ -6,7 +6,7 @@ #include #include -#include "common/repl/util.h" +#include "common/repl/repl_wrapper.h" #include "common/util/DgoWriter.h" #include "common/util/FileUtil.h" #include "common/util/Timer.h" diff --git a/goalc/compiler/compilation/Define.cpp b/goalc/compiler/compilation/Define.cpp index fdde59bf03..a2351fb27c 100644 --- a/goalc/compiler/compilation/Define.cpp +++ b/goalc/compiler/compilation/Define.cpp @@ -66,15 +66,22 @@ Val* Compiler::compile_define(const goos::Object& form, const goos::Object& rest throw_compiler_error(form, "Cannot define {} because it cannot be set.", sym_val->print()); } + auto explicit_no_typecheck = false; + if (args.has_named("no-typecheck")) { + explicit_no_typecheck = get_true_or_false(form, args.named.at("no-typecheck")); + } auto existing_type = m_symbol_types.lookup(sym.as_symbol()); if (!existing_type) { m_symbol_types.set(sym.as_symbol(), in_gpr->type()); } else { - bool do_typecheck = true; - if (args.has_named("no-typecheck")) { - do_typecheck = !get_true_or_false(form, args.named.at("no-typecheck")); - } - if (do_typecheck) { + if (!explicit_no_typecheck && m_repl && m_repl->repl_config.permissive_redefinitions) { + // Permissive redefinitions are allowed + if (in_gpr->type() != *existing_type) { + lg::warn("Redefining {}", sym.as_symbol().name_ptr); + } + m_symbol_types.set(sym.as_symbol(), in_gpr->type()); + } else if (!explicit_no_typecheck) { + // Type check is required typecheck(form, *existing_type, in_gpr->type(), fmt::format("define on existing symbol {}", sym.as_symbol().name_ptr)); } diff --git a/goalc/main.cpp b/goalc/main.cpp index abf594aa76..896166afe7 100644 --- a/goalc/main.cpp +++ b/goalc/main.cpp @@ -3,7 +3,7 @@ #include "common/log/log.h" #include "common/repl/nrepl/ReplServer.h" -#include "common/repl/util.h" +#include "common/repl/repl_wrapper.h" #include "common/util/FileUtil.h" #include "common/util/diff.h" #include "common/util/string_util.h" @@ -18,13 +18,13 @@ #include "third-party/CLI11.hpp" void setup_logging(const bool disable_ansi_colors) { - lg::set_file("compiler"); lg::set_file_level(lg::level::info); lg::set_stdout_level(lg::level::info); lg::set_flush_level(lg::level::info); if (disable_ansi_colors) { lg::disable_ansi_colors(); } + lg::set_file("compiler"); lg::initialize(); } @@ -40,13 +40,11 @@ int main(int argc, char** argv) { fs::path project_path_override; // TODO - a lot of these flags could be deprecated and moved into `repl-config.json` - // TODO - auto-find the user if there is only one folder within `user/` CLI::App app{"OpenGOAL Compiler / REPL"}; app.add_option("-c,--cmd", cmd, "Specify a command to run, no REPL is launched in this mode"); app.add_option("-u,--user", username, "Specify the username to use for your user profile in 'goal_src/user/'"); - app.add_option("-p,--port", nrepl_port, - "Specify the nREPL port. Defaults to 8181 for Jak 1 and 8182 for Jak 2"); + app.add_option("-p,--port", nrepl_port, "Specify the nREPL port. Defaults to 8181"); app.add_flag("--user-auto", auto_find_user, "Attempt to automatically deduce the user, overrides '--user'"); app.add_option("-g,--game", game, "The game name: 'jak1' or 'jak2'"); @@ -57,28 +55,17 @@ int main(int argc, char** argv) { CLI11_PARSE(app, argc, argv); GameVersion game_version = game_name_to_version(game); - if (nrepl_port == -1) { - switch (game_version) { - default: - case GameVersion::Jak1: - nrepl_port = 8181; - break; - case GameVersion::Jak2: - nrepl_port = 8182; - break; - } - } if (!project_path_override.empty()) { if (!fs::exists(project_path_override)) { lg::error("Error: project path override '{}' does not exist", project_path_override.string()); return 1; } - if (!file_util::setup_project_path(project_path_override)) { + if (!file_util::setup_project_path(project_path_override, true)) { lg::error("Could not setup project path!"); return 1; } - } else if (!file_util::setup_project_path(std::nullopt)) { + } else if (!file_util::setup_project_path(std::nullopt, true)) { return 1; } @@ -89,8 +76,6 @@ int main(int argc, char** argv) { return 1; } - lg::info("OpenGOAL Compiler {}.{}", versions::GOAL_VERSION_MAJOR, versions::GOAL_VERSION_MINOR); - // Figure out the username if (auto_find_user) { username = REPL::find_repl_username(); @@ -98,7 +83,7 @@ int main(int argc, char** argv) { // Load the user's startup file auto startup_file = REPL::load_user_startup_file(username, game_version); // Load the user's REPL config - auto repl_config = REPL::load_repl_config(username, game_version); + auto repl_config = REPL::load_repl_config(username, game_version, nrepl_port); // Init Compiler std::unique_ptr compiler; @@ -139,16 +124,16 @@ int main(int argc, char** argv) { // Initialize nREPL server socket std::function shutdown_callback = [&]() { return status == ReplStatus::WANT_EXIT; }; - ReplServer repl_server(shutdown_callback, nrepl_port); - bool repl_server_ok = repl_server.init_server(); + ReplServer repl_server(shutdown_callback, repl_config.get_nrepl_port()); + bool nrepl_server_ok = repl_server.init_server(true); std::thread nrepl_thread; // the compiler may throw an exception if it fails to load its standard library. try { compiler = std::make_unique( game_version, std::make_optional(repl_config), username, - std::make_unique(username, repl_config, startup_file)); + std::make_unique(username, repl_config, startup_file, nrepl_server_ok)); // Start nREPL Server if it spun up successfully - if (repl_server_ok) { + if (nrepl_server_ok) { nrepl_thread = std::thread([&]() { while (!shutdown_callback()) { auto resp = repl_server.get_msg(); @@ -174,7 +159,7 @@ int main(int argc, char** argv) { } compiler = std::make_unique( game_version, std::make_optional(repl_config), username, - std::make_unique(username, repl_config, startup_file)); + std::make_unique(username, repl_config, startup_file, nrepl_server_ok)); status = ReplStatus::OK; } // process user input @@ -193,7 +178,7 @@ int main(int argc, char** argv) { // TODO - investigate why there is such a delay when exitting // Cleanup - if (repl_server_ok) { + if (nrepl_server_ok) { repl_server.shutdown_server(); nrepl_thread.join(); } diff --git a/goalc/make/MakeSystem.cpp b/goalc/make/MakeSystem.cpp index 2a0e2d8475..982e8e3dd6 100644 --- a/goalc/make/MakeSystem.cpp +++ b/goalc/make/MakeSystem.cpp @@ -119,8 +119,9 @@ void MakeSystem::load_project_file(const std::string& file_path) { auto data = m_goos.reader.read_from_file({file_path}); // interpret it, which will call various handlers. m_goos.eval(data, m_goos.global_environment.as_env_ptr()); - lg::print("Loaded project {} with {} steps in {} ms\n", file_path, m_output_to_step.size(), + lg::debug("Loaded project {} with {} steps in {} ms\n", file_path, m_output_to_step.size(), (int)timer.getMs()); + m_loaded_projects.push_back(file_path); } goos::Object MakeSystem::handle_defstep(const goos::Object& form, @@ -187,6 +188,7 @@ goos::Object MakeSystem::handle_defstep(const goos::Object& form, * */ void MakeSystem::clear_project() { + m_loaded_projects.clear(); m_output_to_step.clear(); } diff --git a/goalc/make/MakeSystem.h b/goalc/make/MakeSystem.h index 413a072596..cba37ebf77 100644 --- a/goalc/make/MakeSystem.h +++ b/goalc/make/MakeSystem.h @@ -70,6 +70,7 @@ class MakeSystem { } void clear_project(); + std::vector get_loaded_projects() const { return m_loaded_projects; } /*! * Get the prefix that the project has requested for all compiler outputs @@ -91,6 +92,7 @@ class MakeSystem { goos::Interpreter m_goos; std::optional m_repl_config; + std::vector m_loaded_projects; std::unordered_map> m_output_to_step; std::unordered_map> m_tools; diff --git a/goalc/make/Tools.cpp b/goalc/make/Tools.cpp index 8bdb5142c3..ff6b245f4b 100644 --- a/goalc/make/Tools.cpp +++ b/goalc/make/Tools.cpp @@ -302,7 +302,7 @@ BuildActorTool::BuildActorTool() : Tool("build-actor") {} bool BuildActorTool::needs_run(const ToolInput& task, const PathMap& path_map) { (void)path_map; - if (task.input.size() != 1) { + if (task.input.size() > 2) { throw std::runtime_error(fmt::format("Invalid amount of inputs to {} tool", name())); } // std::vector deps{}; @@ -311,8 +311,10 @@ bool BuildActorTool::needs_run(const ToolInput& task, const PathMap& path_map) { } bool BuildActorTool::run(const ToolInput& task, const PathMap& path_map) { - if (task.input.size() != 1) { + (void)path_map; + if (task.input.size() > 2) { throw std::runtime_error(fmt::format("Invalid amount of inputs to {} tool", name())); } - return jak1::run_build_actor(task.input.at(0), task.output.at(0), path_map.output_prefix); + auto gen_mesh = task.input.at(1) == "#t"; + return jak1::run_build_actor(task.input.at(0), task.output.at(0), gen_mesh); } \ No newline at end of file diff --git a/out/build/Release/bin/decompiler.exe b/out/build/Release/bin/decompiler.exe index c175fad595..1a48dea154 100644 Binary files a/out/build/Release/bin/decompiler.exe and b/out/build/Release/bin/decompiler.exe differ diff --git a/out/build/Release/bin/extractor.exe b/out/build/Release/bin/extractor.exe index 0bd9edaa1b..0e8c4273c8 100644 Binary files a/out/build/Release/bin/extractor.exe and b/out/build/Release/bin/extractor.exe differ diff --git a/out/build/Release/bin/gk.exe b/out/build/Release/bin/gk.exe index 3bc3766195..83b8047c40 100644 Binary files a/out/build/Release/bin/gk.exe and b/out/build/Release/bin/gk.exe differ diff --git a/out/build/Release/bin/goalc.exe b/out/build/Release/bin/goalc.exe index c28fcfe476..2c1ec21ac4 100644 Binary files a/out/build/Release/bin/goalc.exe and b/out/build/Release/bin/goalc.exe differ diff --git a/scripts/ci/lint-characters.py b/scripts/ci/lint-characters.py index cfe035af7e..adfc35ba27 100644 --- a/scripts/ci/lint-characters.py +++ b/scripts/ci/lint-characters.py @@ -38,6 +38,11 @@ "ª": "º", "\n": "", "’": "'", + "·": "-", + "–": "-", + "​": "", + "„": ",,", + "”": "\"" } # TODO - check for korean text @@ -49,7 +54,7 @@ "'", "!", "(", ")", "+", "-", ",", ".", "/", ":", "=", "<", ">", "*", "%", "?", "\"", "`", "ˇ", "¨", "º", "¡", "¿", "Æ", "Ç", "ß", "™", "、", " ", "Å", "Ø", "Ą", "Ę", "Ł", "Ż", "æ", "ø", "œ", - "Ñ", "Ã", "Õ", "Á", "É", "Í", "Ó", "Ú", "Ć", "Ń", "Ś", "Ź", "Ő", "Ű", "Â", "Ê", "Î", "Ô", "Û", "À", "È", "Ì", "Ò", "Ù", "Ä", "Ë", "Ï", "Ö", "ö", "Ü", "Ė","Č","Š","Ž","Ų","Ū","Į", + "Ñ", "Ã", "Õ", "Á", "É", "Í", "Ó", "Ú", "Ć", "Ń", "Ś", "Ź", "ź", "Ő", "Ű", "Â", "Ê", "Î", "Ô", "Û", "À", "È", "Ì", "Ò", "Ù", "Ä", "Ë", "Ï", "ï", "Ö", "ö", "Ü", "Ė","Č","Š","Ž","Ų","Ū","Į", "ñ", "á", "é", "í", "ó", "ú", "â", "ê", "î", "ô", "û", "à", "è", "ì", "ò", "ù", "ä", "ö", "ü", "ś", "å", "õ", "ã", "ę", "ż", "ć", "ą", "ł", "ń", "ű", "ő", "ė","č","š","ž","ų","ū","į", "・", "゛", "゜", "ー", "『", "』", "海", "界", "学", "ワ", "ヲ", "ン", "岩", "旧", "空", "ヮ", "撃", "賢", "湖", "口", "行", "合", "士", "寺", "山", "者", "所", "書", "小", "沼", "上", "城", "場", "出", "闇", "遺", "黄", "屋", "下", "家", "火", "花", "レ", "ロ", "青", "宝", "石", "赤", "跡", "川", "戦", "村", "隊", "台", "長", "鳥", "艇", "洞", "道", "発", "飛", "噴", "池", "中", "塔", "島", "部", "砲", "産", "眷", "力", "緑", "岸", "像", "谷", "心", "森", "水", "船", "世", @@ -74,6 +79,11 @@ "ª": "º", "\n": "", "’": "'", + "·": "-", + "–": "-", + "​": "", + "„": ",,", + "”": "\"" } # fmt: on diff --git a/scripts/examples/nrepl-test.py b/scripts/examples/nrepl-test.py index 81145e7e7e..33e00201ad 100644 --- a/scripts/examples/nrepl-test.py +++ b/scripts/examples/nrepl-test.py @@ -1,5 +1,7 @@ import socket import struct +from time import sleep + clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM); clientSocket.connect(("127.0.0.1", 8181)) print(clientSocket) @@ -11,5 +13,5 @@ header = struct.pack(' this opened-with-start?) (not (cpad-hold? 0 start)) (not (cpad-hold? 0 start))) (and (not (-> this opened-with-start?)) (not (cpad-hold? 0 select))))) (set! (-> this ignore-menu-toggle?) #f)) + +=== +Consolidation of if +=== + +(if (and + (-> this data s2-0) ;; entry is populated + (= (-> this data s2-0 type) arg1) ;; type is right + (or (name= arg0 (-> this data s2-0 name)) (string-charp= arg0 (&-> (-> this data s2-0 name) data s3-0))) ;; name is right. also seek past ag name, and try again. + ) + (return (the-as joint (-> this data s2-0)))) + +--- + +(if (and (-> this data s2-0) ;; entry is populated + (= (-> this data s2-0 type) arg1) ;; type is right + (or (name= arg0 (-> this data s2-0 name)) (string-charp= arg0 (&-> (-> this data s2-0 name) data s3-0))) ;; name is right. also seek past ag name, and try again. + ) + (return (the-as joint (-> this data s2-0)))) + +=== +Consolidation of if 2 +=== + +(if (or (not s5-1) (= (-> s5-1 name) 'default)) + (login this) ;; not part of level load, just normal login. + ) + +--- + +(if (or (not s5-1) (= (-> s5-1 name) 'default)) + (login this) ;; not part of level load, just normal login. + ) + +=== +Consolidation of if with comment +=== + +(if (= (-> obj prim-id) arg0) ;; it's us! + (return obj) + ) + +--- + +(if (= (-> obj prim-id) arg0) ;; it's us! + (return obj)) \ No newline at end of file diff --git a/test/common/formatter/corpus/constant-pairs.test.gc b/test/common/formatter/corpus/constant-pairs.test.gc index 9894e91cf2..c6a5305518 100644 --- a/test/common/formatter/corpus/constant-pairs.test.gc +++ b/test/common/formatter/corpus/constant-pairs.test.gc @@ -100,3 +100,140 @@ Amibiguous List :test 456 :not-paired :doit 789) + +=== +Within unrelated form +=== + +(new 'static + 'gif-tag64 + :nloop + #x1 + :eop + #x1 + :pre + #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) + :nreg + #x4) + +--- + +(new 'static + 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim + (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) + :nreg #x4) + +=== +Quoted Symbol +=== + +(new 'static + 'clm-item + :description "adjust" + :button-symbol + 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + +--- + +(new 'static + 'clm-item + :description "adjust" + :button-symbol 'x + :action + (new 'static 'clm-item-action :button #x4000 :func #f)) + +=== +Special case forms +=== + +(define *CAMERA_MASTER-bank* + (new 'static + 'camera-master-bank + :onscreen-head-height + (meters 2.65) + :onscreen-foot-height + (meters -0.5) + :target-height + (meters 2.15) + :up-move-to-pitch-ratio-in-air 1.0 + :down-move-to-pitch-ratio-in-air 0.5 + :up-move-to-pitch-on-ground 0.9 + :down-move-to-pitch-on-ground 0.9 + :pitch-off-blend 0.5)) + +--- + +(define *CAMERA_MASTER-bank* + (new 'static + 'camera-master-bank + :onscreen-head-height (meters 2.65) + :onscreen-foot-height (meters -0.5) + :target-height (meters 2.15) + :up-move-to-pitch-ratio-in-air 1.0 + :down-move-to-pitch-ratio-in-air 0.5 + :up-move-to-pitch-on-ground 0.9 + :down-move-to-pitch-on-ground 0.9 + :pitch-off-blend 0.5)) + +=== +Enums +=== + +(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 + (surface-flags always-rotate-toward-transv))) + +--- + +(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 (surface-flags always-rotate-toward-transv))) \ No newline at end of file diff --git a/test/common/formatter/corpus/enums.test.gc b/test/common/formatter/corpus/enums.test.gc new file mode 100644 index 0000000000..849500006e --- /dev/null +++ b/test/common/formatter/corpus/enums.test.gc @@ -0,0 +1,86 @@ +=== +With Bitfield and Type Info +=== + +(defenum + process-mask + :bitfield + #t + :type + uint32 + (execute 0) ;; 1 + (draw 1) ;; 2 + (pause 2) ;; 4 + (menu 3) ;; 8 + (progress 4) ;; 16 + (actor-pause 5) ;; 32 + (sleep 6) ;; 64 + (sleep-code 7) ;; 128 + (process-tree 8) ;; 256 not an actual process, just a "tree node" for organization + (heap-shrunk 9) ;; 512 + (going 10) ;; 1024 + (movie 11) ;; 2048 + (movie-subject 12) ;; 4096 + (target 13) ;; 8192 + (sidekick 14) ;; 16384 + (crate 15) ;; 32768 + (collectable 16) ;; 65536 + (enemy 17) ;; 131072 + (camera 18) ;; 262144 + (platform 19) ;; 524288 + (ambient 20) ;; 1048576 + (entity 21) ;; 2097152 + (projectile 22) ;; 4194304 + (attackable 23) ;; 8388608 + (death 24) ;; 16777216 + ) + +--- + +(defenum process-mask + :bitfield #t + :type uint32 + (execute 0) ;; 1 + (draw 1) ;; 2 + (pause 2) ;; 4 + (menu 3) ;; 8 + (progress 4) ;; 16 + (actor-pause 5) ;; 32 + (sleep 6) ;; 64 + (sleep-code 7) ;; 128 + (process-tree 8) ;; 256 not an actual process, just a "tree node" for organization + (heap-shrunk 9) ;; 512 + (going 10) ;; 1024 + (movie 11) ;; 2048 + (movie-subject 12) ;; 4096 + (target 13) ;; 8192 + (sidekick 14) ;; 16384 + (crate 15) ;; 32768 + (collectable 16) ;; 65536 + (enemy 17) ;; 131072 + (camera 18) ;; 262144 + (platform 19) ;; 524288 + (ambient 20) ;; 1048576 + (entity 21) ;; 2097152 + (projectile 22) ;; 4194304 + (attackable 23) ;; 8388608 + (death 24) ;; 16777216 + ) + + +=== +Form heads that overlap with built-in forms +=== + +(defenum pc-prof-event + (begin + 0) + (end 1) + (instant 2)) + +--- + +(defenum pc-prof-event + (begin 0) + (end 1) + (instant 2)) \ No newline at end of file diff --git a/test/common/formatter/corpus/functions.test.gc b/test/common/formatter/corpus/functions.test.gc index 3a0a98a9a8..458b5fdcaa 100644 --- a/test/common/formatter/corpus/functions.test.gc +++ b/test/common/formatter/corpus/functions.test.gc @@ -82,3 +82,54 @@ Basic behavior (quaternion-copy! (-> gp-0 quat) (-> arg0 quat)) (vector-identity! (-> gp-0 scale)) (the-as symbol (send-event *camera* 'teleport-to-transformq gp-0)))) + +=== +Methods - new +=== + +(defmethod new align-control + ((allocation symbol) (type-to-make type) (proc process-drawable)) + "Create a new align-control." + (+ 1 1)) + +--- + +(defmethod new align-control ((allocation symbol) (type-to-make type) (proc process-drawable)) + "Create a new align-control." + (+ 1 1)) + +=== +Methods - long arg list +=== + +(defmethod fill-and-probe-using-line-sphere ((obj collide-cache) (arg0 vector) + (arg1 vector) + (arg2 float) + (arg3 collide-kind) + (arg4 process) + (arg5 collide-tri-result) + (arg6 pat-surface)) + (fill-using-line-sphere obj arg0 arg1 arg2 arg3 (the-as process-drawable arg4) arg6) + (probe-using-line-sphere obj arg0 arg1 arg2 arg3 arg5 arg6)) + +--- + +(defmethod fill-and-probe-using-line-sphere ((obj collide-cache) (arg0 vector) (arg1 vector) (arg2 float) (arg3 collide-kind) (arg4 process) (arg5 collide-tri-result) (arg6 pat-surface)) + (fill-using-line-sphere obj arg0 arg1 arg2 arg3 (the-as process-drawable arg4) arg6) + (probe-using-line-sphere obj arg0 arg1 arg2 arg3 arg5 arg6)) + +=== +Don't split apart function names that begin with numbers +=== + +(defun 1/ ((x float)) + "Reciprocal floating point" + (declare (inline)) + (/ 1. x)) + +--- + +(defun 1/ ((x float)) + "Reciprocal floating point" + (declare (inline)) + (/ 1. x)) \ No newline at end of file diff --git a/test/common/formatter/corpus/indent.test.gc b/test/common/formatter/corpus/indent.test.gc index 8c54a17184..4f9057e42a 100644 --- a/test/common/formatter/corpus/indent.test.gc +++ b/test/common/formatter/corpus/indent.test.gc @@ -81,3 +81,88 @@ begin (begin "hello" (println "world")) + +=== +Inlining flowed form +=== + +(or something (begin (+ 1 2) (= 2 2))) + +--- + +(or something (begin (+ 1 2) (= 2 2))) + +=== +Long array creation +=== + +(let ((arr (new + 'static + 'array + uint32 + 16 + #x7b2191b ;; = 6 ^ 129112349 + #x7b21914 ;; = 9 ^ 129112349 + #x7b21916 ;; = 11 ^ 129112349 + #x7b21913 ;; = 14 ^ 129112349 + #x7b21909 ;; = 20 ^ 129112349 + #x7b21908 ;; = 21 ^ 129112349 + #x7b2190a ;; = 23 ^ 129112349 + #x7b21907 ;; = 26 ^ 129112349 + #x7b2191b ;; = 6 ^ 129112349 + #x7b21917 ;; = 10 ^ 129112349 + #x7b21916 ;; = 11 ^ 129112349 + #x7b2190c ;; = 17 ^ 129112349 + #x7b21909 ;; = 20 ^ 129112349 + #x7b2190b ;; = 22 ^ 129112349 + #x7b2190a ;; = 23 ^ 129112349 + #x7b21900 ;; = 29 ^ 129112349 + ))) + (dotimes (i 16) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table i) + (the-as (function none) (-> arr i))))) + +--- + +(let ((arr (new 'static + 'array + uint32 + 16 + #x7b2191b ;; = 6 ^ 129112349 + #x7b21914 ;; = 9 ^ 129112349 + #x7b21916 ;; = 11 ^ 129112349 + #x7b21913 ;; = 14 ^ 129112349 + #x7b21909 ;; = 20 ^ 129112349 + #x7b21908 ;; = 21 ^ 129112349 + #x7b2190a ;; = 23 ^ 129112349 + #x7b21907 ;; = 26 ^ 129112349 + #x7b2191b ;; = 6 ^ 129112349 + #x7b21917 ;; = 10 ^ 129112349 + #x7b21916 ;; = 11 ^ 129112349 + #x7b2190c ;; = 17 ^ 129112349 + #x7b21909 ;; = 20 ^ 129112349 + #x7b2190b ;; = 22 ^ 129112349 + #x7b2190a ;; = 23 ^ 129112349 + #x7b21900 ;; = 29 ^ 129112349 + ))) + (dotimes (i 16) + (set! (-> (scratchpad-object terrain-context) work foreground joint-work frm-jmp-table i) + (the-as (function none) (-> arr i))))) + +=== +Nested function call +=== + +(set! (-> this attack-event) + (the-as symbol + ((the-as (function res-lump symbol symbol float structure (pointer res-tag) pointer object) (method-of-type res-lump get-property-struct)) + (-> this entity) + 'attack-event))) +--- + +(set! (-> this attack-event) + (the-as symbol + ((the-as (function res-lump symbol symbol float structure (pointer res-tag) pointer object) + (method-of-type res-lump get-property-struct)) + (-> this entity) + 'attack-event))) diff --git a/test/common/formatter/corpus/lambda.test.gc b/test/common/formatter/corpus/lambda.test.gc new file mode 100644 index 0000000000..f72e1f6627 --- /dev/null +++ b/test/common/formatter/corpus/lambda.test.gc @@ -0,0 +1,48 @@ +=== +With behavior tag +=== + +(lambda :behavior + target + () + (println "something")) + +--- + +(lambda :behavior target () + (println "something")) + +=== +Without behavior tag +=== + +(lambda () + (println "something")) + +--- + +(lambda () + (println "something")) + +=== +Too long +=== + +(lambda ((arg0 part-tracker)) + (let ((s5-0 (handle->process (-> arg0 userdata)))) (when s5-0 (let* ((v1-4 (handle->process (-> (the-as eco-collectable s5-0) pickup-handle))) (a2-0 (cond ((not v1-4) (-> arg0 root trans)) ((= (-> v1-4 type) target) (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as target v1-4) node-list data 5))) (else (-> (the-as target v1-4) control trans))))) (vector-lerp! (-> arg0 root trans) (-> arg0 offset) a2-0 (/ (the float (- (current-time) (-> arg0 start-time))) (the float (-> (the-as eco-collectable s5-0) collect-effect-time)))))))) + +--- + +(lambda ((arg0 part-tracker)) + (let ((s5-0 (handle->process (-> arg0 userdata)))) + (when s5-0 + (let* ((v1-4 (handle->process (-> (the-as eco-collectable s5-0) pickup-handle))) + (a2-0 (cond + ((not v1-4) (-> arg0 root trans)) + ((= (-> v1-4 type) target) (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as target v1-4) node-list data 5))) + (else (-> (the-as target v1-4) control trans))))) + (vector-lerp! (-> arg0 root trans) + (-> arg0 offset) + a2-0 + (/ (the float (- (current-time) (-> arg0 start-time))) + (the float (-> (the-as eco-collectable s5-0) collect-effect-time)))))))) \ No newline at end of file diff --git a/test/common/formatter/corpus/lists.test.gc b/test/common/formatter/corpus/lists.test.gc index 2b7b337fbf..0cdaef03a9 100644 --- a/test/common/formatter/corpus/lists.test.gc +++ b/test/common/formatter/corpus/lists.test.gc @@ -32,3 +32,112 @@ Empty List --- () + +=== +List of lists +=== + +(defpart 116 + :init-specs + ((:scalevel-x (meters 0.006666667)) (:scalevel-y :copy scalevel-x) + (:fade-a 0.0) + (:next-time (seconds 0.5)) + (:next-launcher 117))) + +--- + +(defpart 116 + :init-specs + ((:scalevel-x (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.0) + (:next-time (seconds 0.5)) + (:next-launcher 117))) + + +=== +Another list of lists +=== + +((:texture (new 'static 'texture-id :index #x1e :page #x2)) (:num 1.0) + (:scale-x (meters 0.5) (meters 0.6)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.0016666667) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 109)) + +--- + +((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.6)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.0016666667) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 109)) + +=== +Retain quoted empty lists +=== + +(or (= '() lst)) + +--- + +(or (= '() lst)) + +=== +Quasi-quoted unquoted List +=== + +`,(something here) + +--- + +`,(something here) + +=== +Empty Quoted List +=== + +'() + +--- + +'() + +=== +Non-empty Quoted List +=== + +'(1 2 3) + +--- + +'(1 2 3) + +=== +Non-empty Quoted List with quoted symbols inside +=== + +'('3) + +--- + +'('3) \ No newline at end of file diff --git a/test/common/formatter/corpus/states.test.gc b/test/common/formatter/corpus/states.test.gc index 59de4a87f6..6a6bb0baa1 100644 --- a/test/common/formatter/corpus/states.test.gc +++ b/test/common/formatter/corpus/states.test.gc @@ -1,52 +1,108 @@ === -TODO - Basic State +Basic State === -(defstate active (enemy) - :virtual #t - :event enemy-event-handler - :enter (behavior () +(defstate joint-exploder-shatter (joint-exploder) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (let* ((f1-0 (the float (- (current-time) (-> self state-time)))) + (f0-2 (- 1.0 (/ f1-0 (the float (-> self tuning duration))))) + (f1-2 (- 1.0 (/ f1-0 (* 0.75 (the float (-> self tuning duration))))))) + (if (< f1-2 0.0) (set! f1-2 0.0)) + (set-vector! (-> self scale-vector) f0-2 f1-2 f0-2 1.0)) + (dotimes (v1-8 5) + (set! (-> self lists v1-8 pre-moved?) #f)) + (dotimes (gp-0 5) + (let ((s5-0 (-> self lists gp-0))) + (when (>= (-> s5-0 head) 0) + (when (not (-> s5-0 pre-moved?)) + (joint-exploder-method-25 self s5-0) + (if (nonzero? gp-0) (joint-exploder-method-28 self s5-0)))))) + (let ((gp-1 (new 'stack-no-clear 'bounding-box))) + (let ((v1-26 (-> self root trans))) (set! (-> gp-1 min quad) (-> v1-26 quad)) (set! (-> gp-1 max quad) (-> v1-26 quad))) + (dotimes (s5-1 5) + (let ((s4-0 (-> self lists s5-1))) + (if (-> s4-0 bbox-valid?) (add-box! gp-1 (-> s4-0 bbox))) + (if (nonzero? s5-1) (joint-exploder-method-22 self s4-0)))) + (let ((s5-2 (-> self draw bounds))) + (set-vector! s5-2 + (* 0.5 (+ (-> gp-1 min x) (-> gp-1 max x))) + (* 0.5 (+ (-> gp-1 min y) (-> gp-1 max y))) + (* 0.5 (+ (-> gp-1 min z) (-> gp-1 max z))) + 1.0) + (let ((f0-12 (+ 16384.0 (vector-vector-distance s5-2 (-> gp-1 max))))) + (vector-! s5-2 s5-2 (-> self root trans)) + (set! (-> s5-2 w) f0-12)))) + 0) + :code + (behavior () (set-time! (-> self state-time)) - (logclear! (-> self enemy-flags) (enemy-flag cam-attack-mode)) - (when (logtest? (-> self enemy-flags) (enemy-flag enable-on-active)) - (logclear! (-> self enemy-flags) (enemy-flag enable-on-active)) - (let ((gp-0 (-> self on-active))) - (if gp-0 - (script-eval gp-0 :vector (-> self root trans)) - ) - ) - ) - (when (not (logtest? (enemy-flag chase-startup) (-> self enemy-flags))) - (if (logtest? (-> self enemy-flags) (enemy-flag actor-pause-backup)) - (logior! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - ) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 0.1)) - (let ((v1-3 (-> self focus aware))) - (cond - ((< (the-as int v1-3) 1) - (go-virtual idle) - ) - ((< 1 (the-as int v1-3)) - (go-virtual notice) - ) - ) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (sleep-code) - ) - :post (behavior () - (idle-control-method-10 (-> self idle-anim-player) self) - (enemy-simple-post) - ) - ) + (until (time-elapsed? (-> self state-time) (-> self tuning duration)) + (suspend) + (ja :num! (loop!)))) + :post + ja-post) --- -TODO +(defstate joint-exploder-shatter (joint-exploder) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (let* ((f1-0 (the float (- (current-time) (-> self state-time)))) + (f0-2 (- 1.0 (/ f1-0 (the float (-> self tuning duration))))) + (f1-2 (- 1.0 (/ f1-0 (* 0.75 (the float (-> self tuning duration))))))) + (if (< f1-2 0.0) (set! f1-2 0.0)) + (set-vector! (-> self scale-vector) f0-2 f1-2 f0-2 1.0)) + (dotimes (v1-8 5) + (set! (-> self lists v1-8 pre-moved?) #f)) + (dotimes (gp-0 5) + (let ((s5-0 (-> self lists gp-0))) + (when (>= (-> s5-0 head) 0) + (when (not (-> s5-0 pre-moved?)) + (joint-exploder-method-25 self s5-0) + (if (nonzero? gp-0) (joint-exploder-method-28 self s5-0)))))) + (let ((gp-1 (new 'stack-no-clear 'bounding-box))) + (let ((v1-26 (-> self root trans))) (set! (-> gp-1 min quad) (-> v1-26 quad)) (set! (-> gp-1 max quad) (-> v1-26 quad))) + (dotimes (s5-1 5) + (let ((s4-0 (-> self lists s5-1))) + (if (-> s4-0 bbox-valid?) (add-box! gp-1 (-> s4-0 bbox))) + (if (nonzero? s5-1) (joint-exploder-method-22 self s4-0)))) + (let ((s5-2 (-> self draw bounds))) + (set-vector! s5-2 + (* 0.5 (+ (-> gp-1 min x) (-> gp-1 max x))) + (* 0.5 (+ (-> gp-1 min y) (-> gp-1 max y))) + (* 0.5 (+ (-> gp-1 min z) (-> gp-1 max z))) + 1.0) + (let ((f0-12 (+ 16384.0 (vector-vector-distance s5-2 (-> gp-1 max))))) + (vector-! s5-2 s5-2 (-> self root trans)) + (set! (-> s5-2 w) f0-12)))) + 0) + :code + (behavior () + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (-> self tuning duration)) + (suspend) + (ja :num! (loop!)))) + :post ja-post) + +=== +Ensure indentation is correct +=== + +(defstate idle (voicebox) + :event + (-> (method-of-type voicebox enter) + event)) + +--- + +(defstate idle (voicebox) + :event + (-> (method-of-type voicebox enter) + event)) \ No newline at end of file diff --git a/test/common/formatter/corpus/symbols.test.gc b/test/common/formatter/corpus/symbols.test.gc index 85106be8f1..d1192503c0 100644 --- a/test/common/formatter/corpus/symbols.test.gc +++ b/test/common/formatter/corpus/symbols.test.gc @@ -7,3 +7,43 @@ Quoted Symbols --- (new 'static 'sound-id) + +=== +Unquote Splicing +=== + +,@(apply (lambda (x) `(,x :class vf)) regs) + +--- + +,@(apply (lambda (x) `(,x :class vf)) regs) + +=== +Numbers at the start of symbols +=== + +(4x3 #x12a) + +--- + +(4x3 #x12a) + +=== +Numbers and operators in symbol +=== + +vector-rad<-vector-deg/2! + +--- + +vector-rad<-vector-deg/2! + +=== +Double Quoted Symbols +=== + +''something + +--- + +''something diff --git a/test/common/formatter/corpus/types.test.gc b/test/common/formatter/corpus/types.test.gc index a980f73a02..de260dd4aa 100644 --- a/test/common/formatter/corpus/types.test.gc +++ b/test/common/formatter/corpus/types.test.gc @@ -105,3 +105,91 @@ Types - With Methods and States pov-camera-playing pov-camera-start-playing pov-camera-startup)) + +=== +With flags +=== + +(deftype process-tree (basic) + ((name basic :offset-assert 4) + (mask process-mask :offset-assert 8) + (parent (pointer process-tree) :offset-assert 12) + (brother (pointer process-tree) :offset-assert 16) + (child (pointer process-tree) :offset-assert 20) + (ppointer (pointer process) :offset-assert 24) + (self process-tree :offset-assert 28)) + (:methods + (new (symbol type basic) _type_) + (activate (_type_ process-tree basic pointer) process-tree) ;; 9 + (deactivate (_type_) none) ;; 10 + (init-from-entity! (_type_ entity-actor) none) ;; 11 + (run-logic? (_type_) symbol) ;; 12 + (process-tree-method-13 () none) ;; 13 + ) + :size-assert + #x20 + :method-count-assert + 14 + :no-runtime-type ;; already defined by kscheme. Don't do it again. + ) + +--- + +(deftype process-tree (basic) + ((name basic :offset-assert 4) + (mask process-mask :offset-assert 8) + (parent (pointer process-tree) :offset-assert 12) + (brother (pointer process-tree) :offset-assert 16) + (child (pointer process-tree) :offset-assert 20) + (ppointer (pointer process) :offset-assert 24) + (self process-tree :offset-assert 28)) + (:methods + (new (symbol type basic) _type_) + (activate (_type_ process-tree basic pointer) process-tree) ;; 9 + (deactivate (_type_) none) ;; 10 + (init-from-entity! (_type_ entity-actor) none) ;; 11 + (run-logic? (_type_) symbol) ;; 12 + (process-tree-method-13 () none) ;; 13 + ) + :size-assert #x20 + :method-count-assert 14 + :no-runtime-type ;; already defined by kscheme. Don't do it again. + ) + +=== +Single value column +=== + +(deftype joint-control-channel (structure) + ((parent joint-control) + (command symbol) + (frame-interp float) + (frame-group art-joint-anim) + (frame-num float) + (num-func (function joint-control-channel float float float)) + (param float 2) + (group-sub-index int16) + (group-size int16) + (dist meters) + (eval-time uint32) + (inspector-amount float)) + (:methods + (debug-print-frames (_type_) _type_))) + +--- + +(deftype joint-control-channel (structure) + ((parent joint-control) + (command symbol) + (frame-interp float) + (frame-group art-joint-anim) + (frame-num float) + (num-func (function joint-control-channel float float float)) + (param float 2) + (group-sub-index int16) + (group-size int16) + (dist meters) + (eval-time uint32) + (inspector-amount float)) + (:methods + (debug-print-frames (_type_) _type_))) diff --git a/test/common/formatter/test_formatter.cpp b/test/common/formatter/test_formatter.cpp index dc06e541e2..b058627339 100644 --- a/test/common/formatter/test_formatter.cpp +++ b/test/common/formatter/test_formatter.cpp @@ -56,7 +56,7 @@ std::vector get_test_definitions(const fs::path& file_path) { if (!curr_test.name.empty() && line.empty()) { i++; while (true) { - if (contents.at(i) == "---") { + if (str_util::trim(contents.at(i)) == "---") { i++; curr_test.input = str_util::trim(curr_test.input); break; @@ -102,7 +102,7 @@ bool run_tests(const fs::path& file_path, const bool only_important_tests) { if (only_important_tests && !str_util::starts_with(test.name, "!")) { continue; } - if (str_util::contains(test.output, "TODO")) { + if (str_util::contains(test.name, "TODO")) { // ignore the output fmt::print(" ⚠️ - {}\n", test.name); continue; diff --git a/test/decompiler/reference/jak1/engine/ui/hud-classes_REF.gc b/test/decompiler/reference/jak1/engine/ui/hud-classes_REF.gc index ed7479d7c5..fa6d72ccf1 100644 --- a/test/decompiler/reference/jak1/engine/ui/hud-classes_REF.gc +++ b/test/decompiler/reference/jak1/engine/ui/hud-classes_REF.gc @@ -307,14 +307,14 @@ ;; definition for function part-hud-health-01-func ;; INFO: Return type mismatch int vs none. -(defun part-hud-health-01-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-health-01-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-0 (-> *hud-parts* health 0 scale))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) + (set! (-> arg2 vector 0 w) f0-0) + (set! (-> arg2 vector 1 w) f0-0) ) (cond ((and *target* (< (-> *target* fact health) 1.0)) - (set! (-> arg2 prev-pos x) 32.0) + (set! (-> arg2 vector 2 w) 32.0) ) (else (let ((f0-3 128.0)) @@ -327,11 +327,11 @@ ) ) ) - (set! (-> arg2 pos y) f0-3) - (set! (-> arg2 pos z) f0-3) - (set! (-> arg2 pos w) f0-3) + (set! (-> arg2 vector 2 x) f0-3) + (set! (-> arg2 vector 2 y) f0-3) + (set! (-> arg2 vector 2 z) f0-3) ) - (set! (-> arg2 prev-pos x) 128.0) + (set! (-> arg2 vector 2 w) 128.0) ) ) 0 @@ -340,14 +340,14 @@ ;; definition for function part-hud-health-02-func ;; INFO: Return type mismatch int vs none. -(defun part-hud-health-02-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-health-02-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-0 (-> *hud-parts* health 0 scale))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) + (set! (-> arg2 vector 0 w) f0-0) + (set! (-> arg2 vector 1 w) f0-0) ) (if (and *target* (< (-> *target* fact health) 2.0)) - (set! (-> arg2 prev-pos x) 32.0) - (set! (-> arg2 prev-pos x) 128.0) + (set! (-> arg2 vector 2 w) 32.0) + (set! (-> arg2 vector 2 w) 128.0) ) 0 (none) @@ -355,14 +355,14 @@ ;; definition for function part-hud-health-03-func ;; INFO: Return type mismatch int vs none. -(defun part-hud-health-03-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-health-03-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-0 (-> *hud-parts* health 0 scale))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) + (set! (-> arg2 vector 0 w) f0-0) + (set! (-> arg2 vector 1 w) f0-0) ) (if (and *target* (< (-> *target* fact health) 3.0)) - (set! (-> arg2 prev-pos x) 32.0) - (set! (-> arg2 prev-pos x) 128.0) + (set! (-> arg2 vector 2 w) 32.0) + (set! (-> arg2 vector 2 w) 128.0) ) 0 (none) @@ -1481,10 +1481,10 @@ ;; definition for function part-hud-buzzer-func ;; INFO: Return type mismatch float vs none. -(defun part-hud-buzzer-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-buzzer-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-0 (-> *hud-parts* buzzers 0 scale))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) + (set! (-> arg2 vector 0 w) f0-0) + (set! (-> arg2 vector 1 w) f0-0) ) (none) ) @@ -1747,30 +1747,30 @@ ;; definition for function calculate-rotation-and-color-for-slice ;; INFO: Return type mismatch int vs none. -(defun calculate-rotation-and-color-for-slice ((arg0 int) (arg1 float) (arg2 int) (arg3 int) (arg4 int) (arg5 hud-particle)) +(defun calculate-rotation-and-color-for-slice ((arg0 int) (arg1 float) (arg2 int) (arg3 int) (arg4 int) (arg5 matrix)) (cond ((>= 0.0 arg1) - (set! (-> arg5 init-pos w) -16566.045) + (set! (-> arg5 vector 1 z) -16566.045) ) (else (let ((v1-1 arg0)) (cond ((zero? v1-1) (if (< 1.0 arg1) - (set! (-> arg5 init-pos w) 910.2222) - (set! (-> arg5 init-pos w) (* 182.04445 (+ 5.0 (* 263.0 (- 1.0 arg1))))) + (set! (-> arg5 vector 1 z) 910.2222) + (set! (-> arg5 vector 1 z) (* 182.04445 (+ 5.0 (* 263.0 (- 1.0 arg1))))) ) ) ((= v1-1 1) (if (< 0.6666667 arg1) - (set! (-> arg5 init-pos w) 17294.223) - (set! (-> arg5 init-pos w) (* 182.04445 (+ 95.0 (* 173.0 (- 1.0 (* 1.5 arg1)))))) + (set! (-> arg5 vector 1 z) 17294.223) + (set! (-> arg5 vector 1 z) (* 182.04445 (+ 95.0 (* 173.0 (- 1.0 (* 1.5 arg1)))))) ) ) ((= v1-1 2) (if (< 0.33333334 arg1) - (set! (-> arg5 init-pos w) 33678.223) - (set! (-> arg5 init-pos w) (* 182.04445 (+ 185.0 (* 83.0 (- 1.0 (* 3.0 arg1)))))) + (set! (-> arg5 vector 1 z) 33678.223) + (set! (-> arg5 vector 1 z) (* 182.04445 (+ 185.0 (* 83.0 (- 1.0 (* 3.0 arg1)))))) ) ) ) @@ -1780,16 +1780,16 @@ (if (and (< 0.0 arg1) (and (< arg1 0.2) (not (logtest? (-> *display* integral-frame-counter) 4)))) (set! arg3 (* arg3 2)) ) - (set! (-> arg5 pos y) (the float arg2)) - (set! (-> arg5 pos z) (the float arg3)) - (set! (-> arg5 pos w) (the float arg4)) + (set! (-> arg5 vector 2 x) (the float arg2)) + (set! (-> arg5 vector 2 y) (the float arg3)) + (set! (-> arg5 vector 2 z) (the float arg4)) 0 (none) ) ;; definition for function part-hud-eco-timer-01-func ;; INFO: Return type mismatch int vs none. -(defun part-hud-eco-timer-01-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-eco-timer-01-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-2 (/ (the float (the-as uint (- (-> *target* fact eco-timeout) @@ -1824,8 +1824,8 @@ (calculate-rotation-and-color-for-slice 0 f0-2 a2-1 a3-0 t0-0 arg2) ) (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) - (set! (-> arg2 init-pos x) f0-3) - (set! (-> arg2 pos x) f0-3) + (set! (-> arg2 vector 0 w) f0-3) + (set! (-> arg2 vector 1 w) f0-3) ) 0 (none) @@ -1833,7 +1833,7 @@ ;; definition for function part-hud-eco-timer-02-func ;; INFO: Return type mismatch int vs none. -(defun part-hud-eco-timer-02-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-eco-timer-02-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-2 (/ (the float (the-as uint (- (-> *target* fact eco-timeout) @@ -1868,8 +1868,8 @@ (calculate-rotation-and-color-for-slice 1 f0-2 a2-1 a3-0 t0-0 arg2) ) (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) - (set! (-> arg2 init-pos x) f0-3) - (set! (-> arg2 pos x) f0-3) + (set! (-> arg2 vector 0 w) f0-3) + (set! (-> arg2 vector 1 w) f0-3) ) 0 (none) @@ -1877,7 +1877,7 @@ ;; definition for function part-hud-eco-timer-03-func ;; INFO: Return type mismatch int vs none. -(defun part-hud-eco-timer-03-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-eco-timer-03-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-2 (/ (the float (the-as uint (- (-> *target* fact eco-timeout) @@ -1912,8 +1912,8 @@ (calculate-rotation-and-color-for-slice 2 f0-2 a2-1 a3-0 t0-0 arg2) ) (let ((f0-3 (-> *hud-parts* power 0 scale-blue))) - (set! (-> arg2 init-pos x) f0-3) - (set! (-> arg2 pos x) f0-3) + (set! (-> arg2 vector 0 w) f0-3) + (set! (-> arg2 vector 1 w) f0-3) ) 0 (none) @@ -1921,10 +1921,10 @@ ;; definition for function part-hud-eco-timer-backing-func ;; INFO: Return type mismatch int vs none. -(defun part-hud-eco-timer-backing-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-eco-timer-backing-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-0 (-> *hud-parts* power 0 scale-backing))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) + (set! (-> arg2 vector 0 w) f0-0) + (set! (-> arg2 vector 1 w) f0-0) ) 0 (none) @@ -1932,10 +1932,10 @@ ;; definition for function part-hud-eco-timer-func ;; INFO: Return type mismatch int vs none. -(defun part-hud-eco-timer-func ((arg0 basic) (arg1 basic) (arg2 hud-particle)) +(defun part-hud-eco-timer-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-0 (-> *hud-parts* power 0 scale-timer))) - (set! (-> arg2 init-pos x) f0-0) - (set! (-> arg2 pos x) f0-0) + (set! (-> arg2 vector 0 w) f0-0) + (set! (-> arg2 vector 1 w) f0-0) ) 0 (none) diff --git a/test/decompiler/reference/jak3/engine/ambient/ambient-h_REF.gc b/test/decompiler/reference/jak3/engine/ambient/ambient-h_REF.gc index 7c5edf0537..4ddfc416b5 100644 --- a/test/decompiler/reference/jak3/engine/ambient/ambient-h_REF.gc +++ b/test/decompiler/reference/jak3/engine/ambient/ambient-h_REF.gc @@ -110,7 +110,7 @@ :speech #x1 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -121,7 +121,7 @@ :speech #x2 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-040a) + :text-message (text-id double-jump-how-to) :on-close #f :camera #f ) @@ -132,7 +132,7 @@ :speech #x3 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-040b) + :text-message (text-id press-or-to-attack) :on-close #f :camera #f ) @@ -143,7 +143,7 @@ :speech #x4 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-040b) + :text-message (text-id press-or-to-attack) :on-close #f :camera #f ) @@ -163,7 +163,7 @@ :speech #x6 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-040d) + :text-message (text-id ground-pound-how-to) :on-close #f :camera #f ) @@ -183,7 +183,7 @@ :speech #x8 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0409) + :text-message (text-id roll-how-to) :on-close #f :camera #f ) @@ -194,7 +194,7 @@ :speech #x9 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -205,7 +205,7 @@ :speech #xa :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -216,7 +216,7 @@ :speech #xb :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -227,7 +227,7 @@ :speech #xc :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -256,7 +256,7 @@ :speech #xf :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -267,7 +267,7 @@ :speech #x10 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040a) + :text-message (text-id double-jump-how-to) :on-close #f :camera #f ) @@ -278,7 +278,7 @@ :speech #x11 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040a) + :text-message (text-id double-jump-how-to) :on-close #f :camera #f ) @@ -289,7 +289,7 @@ :speech #x12 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0409) + :text-message (text-id roll-how-to) :on-close #f :camera #f ) @@ -309,7 +309,7 @@ :speech #x14 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -351,7 +351,7 @@ :speech #x18 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040d) + :text-message (text-id ground-pound-how-to) :on-close #f :camera #f ) @@ -763,7 +763,7 @@ :speech #x44 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -774,7 +774,7 @@ :speech #x45 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -785,7 +785,7 @@ :speech #x46 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-0409) + :text-message (text-id roll-how-to) :on-close #f :camera #f ) @@ -807,7 +807,7 @@ :speech #x48 :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040a) + :text-message (text-id double-jump-how-to) :on-close #f :camera #f ) @@ -829,7 +829,7 @@ :speech #x4a :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -840,7 +840,7 @@ :speech #x4b :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -851,7 +851,7 @@ :speech #x4c :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -862,7 +862,7 @@ :speech #x4d :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -873,7 +873,7 @@ :speech #x4e :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040d) + :text-message (text-id ground-pound-how-to) :on-close #f :camera #f ) @@ -884,7 +884,7 @@ :speech #x4f :text-duration (seconds 1) :neg #x1 - :text-message (text-id text-040d) + :text-message (text-id ground-pound-how-to) :on-close #f :camera #f ) @@ -1014,7 +1014,7 @@ :speech #x5c :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0888) + :text-message (text-id use-turbo-to-break-obstacles) :on-close #f :camera #f ) @@ -1140,7 +1140,7 @@ :speech #x69 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-06df) + :text-message (text-id activate-statue-by-punching-kicking-nose) :on-close #f :camera #f ) @@ -1495,7 +1495,7 @@ :text-duration (seconds 5) :delay (seconds 1) :neg #x1 - :text-message (text-id text-07ba) + :text-message (text-id you-can-now-afford-to-purchase-new-secrets) :on-close #f :camera #f ) @@ -1507,7 +1507,7 @@ :text-duration (seconds 5) :delay (seconds 1) :neg #x1 - :text-message (text-id text-0857) + :text-message (text-id new-secrets-available) :on-close #f :camera #f ) @@ -1519,7 +1519,7 @@ :text-duration (seconds 5) :delay (seconds 1) :neg #x1 - :text-message (text-id text-0858) + :text-message (text-id secrets-still-available) :on-close #f :camera #f ) @@ -1531,7 +1531,7 @@ :text-duration (seconds 10) :delay (seconds 1) :neg #x1 - :text-message (text-id text-0892) + :text-message (text-id congrats-600-orbs-new-duds) :on-close #f :camera #f ) @@ -1699,7 +1699,7 @@ :text-duration (seconds 5) :pos #x3 :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -1710,7 +1710,7 @@ :text-duration (seconds 5) :pos #x3 :neg #x1 - :text-message (text-id text-040e) + :text-message (text-id high-jump-how-to) :on-close #f :camera #f ) @@ -1721,7 +1721,7 @@ :text-duration (seconds 5) :pos #x3 :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -1732,7 +1732,7 @@ :text-duration (seconds 5) :pos #x3 :neg #x1 - :text-message (text-id text-040c) + :text-message (text-id roll-jump-how-to) :on-close #f :camera #f ) @@ -3253,7 +3253,7 @@ :speech #x15c :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-077b) + :text-message (text-id press-to-grab-objects) :on-close #f :camera #f ) @@ -3264,7 +3264,7 @@ :speech #x15d :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0807) + :text-message (text-id press-to-place-held-objects) :on-close #f :camera #f ) @@ -3275,7 +3275,7 @@ :speech #x15e :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0864) + :text-message (text-id hold-to-use-shield) :on-close #f :camera #f ) @@ -3305,7 +3305,7 @@ :speech #x161 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-07b4) + :text-message (text-id dark-strike-how-to) :on-close #f :camera #f ) @@ -3316,7 +3316,7 @@ :speech #x162 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-07c3) + :text-message (text-id use-the-wave-concussor) :on-close #f :camera #f ) @@ -3327,7 +3327,7 @@ :speech #x163 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-07c4) + :text-message (text-id hold-to-charge-and-then-release-to-fire-bigger-blast) :on-close #f :camera #f ) @@ -3392,7 +3392,7 @@ :speech #x16a :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0862) + :text-message (text-id hold-to-auto-fire) :on-close #f :camera #f ) @@ -3412,7 +3412,7 @@ :speech #x16c :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-0886) + :text-message (text-id press-again-to-make-gyro-burster-hover-in-place) :on-close #f :camera #f ) diff --git a/test/decompiler/reference/jak3/engine/gfx/ocean/ocean_REF.gc b/test/decompiler/reference/jak3/engine/gfx/ocean/ocean_REF.gc index e985ec7028..aebe5202f2 100644 --- a/test/decompiler/reference/jak3/engine/gfx/ocean/ocean_REF.gc +++ b/test/decompiler/reference/jak3/engine/gfx/ocean/ocean_REF.gc @@ -1300,7 +1300,7 @@ (let ((s5-0 (-> *level* draw-level v1-2))) (when (and s5-0 (= (-> s5-0 status) 'active)) (when (= (-> s5-0 display?) 'display) - (if (logtest? (-> s5-0 info level-flags) (level-flags lf13)) + (if (logtest? (-> s5-0 info level-flags) (level-flags ocean-far)) (set! (-> this far-on) #t) ) (let ((a0-13 (-> s5-0 info ocean))) @@ -1314,10 +1314,12 @@ ((and a0-13 (nonzero? (-> a0-13 value))) (set! *ocean-map* (the-as ocean-map (-> a0-13 value))) (set-height! *ocean-map* (-> s5-0 info ocean-height)) - (if (logtest? (level-flags lf20) (-> s5-0 info level-flags)) + (if (logtest? (level-flags ocean-all) (-> s5-0 info level-flags)) (set! (-> this all-on) #t) ) - (set! (-> this ocean-near-translucent?) (logtest? (-> s5-0 info level-flags) (level-flags lf12))) + (set! (-> this ocean-near-translucent?) + (logtest? (-> s5-0 info level-flags) (level-flags ocean-near-translucent)) + ) (goto cfg-24) ) ) diff --git a/test/decompiler/reference/jak3/engine/gfx/sky/sky-tng_REF.gc b/test/decompiler/reference/jak3/engine/gfx/sky/sky-tng_REF.gc index dc24194da7..4d0a2d75a0 100644 --- a/test/decompiler/reference/jak3/engine/gfx/sky/sky-tng_REF.gc +++ b/test/decompiler/reference/jak3/engine/gfx/sky/sky-tng_REF.gc @@ -714,7 +714,7 @@ (dotimes (a0-1 (-> *level* length)) (let ((a1-3 (-> *level* level a0-1))) (when (= (-> a1-3 status) 'active) - (if (and (= (-> a1-3 display?) 'display) (logtest? (-> a1-3 info level-flags) (level-flags lf9))) + (if (and (= (-> a1-3 display?) 'display) (logtest? (-> a1-3 info level-flags) (level-flags sky))) (set! v1-0 #t) ) ) diff --git a/test/decompiler/reference/jak3/engine/level/level-info_REF.gc b/test/decompiler/reference/jak3/engine/level/level-info_REF.gc index 7b95b2c058..e9ba33f7ef 100644 --- a/test/decompiler/reference/jak3/engine/level/level-info_REF.gc +++ b/test/decompiler/reference/jak3/engine/level/level-info_REF.gc @@ -31,7 +31,7 @@ :taskname 'default :index 1 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '() :memory-mode (level-memory-mode large) @@ -67,7 +67,7 @@ :taskname 'default :index 2 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '("intro") :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -100,7 +100,7 @@ :taskname 'default :index 3 :master-level #f - :level-flags (level-flags lf5 lf12) + :level-flags (level-flags title ocean-near-translucent) :packages '("dust-stormp" "title") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -302,7 +302,7 @@ :index 4 :task-level #x1 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '("vinroom") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -478,7 +478,7 @@ :taskname 'default :index 5 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -512,7 +512,7 @@ :taskname 'default :index 6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -547,7 +547,7 @@ :index 7 :task-level #x1 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -582,7 +582,7 @@ :task-level #x1 :part-engine-max #x4 :master-level #f - :level-flags (level-flags lf0 lf1 lf7 lf12 lf17) + :level-flags (level-flags lf0 not-physical end-mode ocean-near-translucent allow-unloaded) :packages '("marketp" "vehiclep" "nav-graphp" "hvehiclep" "ctywide") :run-packages '("common") :memory-mode (level-memory-mode city-center) @@ -626,7 +626,7 @@ :index 9 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -662,7 +662,7 @@ :index 10 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -698,7 +698,7 @@ :index 11 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -734,7 +734,7 @@ :index 12 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -770,7 +770,7 @@ :index 13 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -806,7 +806,7 @@ :index 14 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf1 lf9 lf11 lf12) + :level-flags (level-flags lf0 not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -841,7 +841,7 @@ :index 15 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -876,7 +876,7 @@ :index 16 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -911,7 +911,7 @@ :index 17 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf2 lf12) + :level-flags (level-flags lf0 not-physical ctycar ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -945,7 +945,7 @@ :index 18 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12 lf19) + :level-flags (level-flags lf0 not-physical ocean-near-translucent city-borrow-high-priority) :packages '("cty-kg-vehicles") :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -979,7 +979,7 @@ :index 19 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf2 lf12) + :level-flags (level-flags lf0 not-physical ctycar ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1013,7 +1013,7 @@ :index 20 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf2 lf12) + :level-flags (level-flags lf0 not-physical ctycar ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1047,7 +1047,7 @@ :index 21 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1081,7 +1081,7 @@ :index 22 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1106,72 +1106,74 @@ ) ;; definition for symbol lblowtmh, type level-load-info -(define lblowtmh (new 'static 'level-load-info - :name 'lblowtmh - :visname 'lblowtmh-vis - :nickname 'lblowtmh - :dbname 'lblowtmh - :taskname 'city - :index 23 - :task-level #x1 - :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf11 lf12 lf19) - :packages '() - :run-packages '("common") - :memory-mode (level-memory-mode borrow-city-small) - :music-bank #f - :extra-sound-bank #f - :mood-func 'update-mood-copy-parent - :special-mood #f - :ocean #f - :ocean-alpha 1.0 - :priority 100 - :draw-priority 10.0 - :bigmap-id (bigmap-id no-map) - :continues '() - :callback-list '() - :borrow #f - :bottom-height (meters -20) - :fog-height (meters 80) - :max-rain 1.0 - :fog-mult 1.0 - :mood-range (new 'static 'mood-range :max-cloud 1.0 :min-fog 0.5 :max-fog 1.0) - ) - ) +(define lblowtmh + (new 'static 'level-load-info + :name 'lblowtmh + :visname 'lblowtmh-vis + :nickname 'lblowtmh + :dbname 'lblowtmh + :taskname 'city + :index 23 + :task-level #x1 + :master-level 'ctywide + :level-flags (level-flags lf0 not-physical display-wait ocean-near-translucent city-borrow-high-priority) + :packages '() + :run-packages '("common") + :memory-mode (level-memory-mode borrow-city-small) + :music-bank #f + :extra-sound-bank #f + :mood-func 'update-mood-copy-parent + :special-mood #f + :ocean #f + :ocean-alpha 1.0 + :priority 100 + :draw-priority 10.0 + :bigmap-id (bigmap-id no-map) + :continues '() + :callback-list '() + :borrow #f + :bottom-height (meters -20) + :fog-height (meters 80) + :max-rain 1.0 + :fog-mult 1.0 + :mood-range (new 'static 'mood-range :max-cloud 1.0 :min-fog 0.5 :max-fog 1.0) + ) + ) ;; definition for symbol lblowtkg, type level-load-info -(define lblowtkg (new 'static 'level-load-info - :name 'lblowtkg - :visname 'lblowtkg-vis - :nickname 'lblowtkg - :dbname 'lblowtkg - :taskname 'city - :index 24 - :task-level #x1 - :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf11 lf12 lf19) - :packages '() - :run-packages '("common") - :memory-mode (level-memory-mode borrow-city-small) - :music-bank #f - :extra-sound-bank #f - :mood-func 'update-mood-copy-parent - :special-mood #f - :ocean #f - :ocean-alpha 1.0 - :priority 100 - :draw-priority 10.0 - :bigmap-id (bigmap-id no-map) - :continues '() - :callback-list '() - :borrow #f - :bottom-height (meters -20) - :fog-height (meters 80) - :max-rain 1.0 - :fog-mult 1.0 - :mood-range (new 'static 'mood-range :max-cloud 1.0 :min-fog 0.5 :max-fog 1.0) - ) - ) +(define lblowtkg + (new 'static 'level-load-info + :name 'lblowtkg + :visname 'lblowtkg-vis + :nickname 'lblowtkg + :dbname 'lblowtkg + :taskname 'city + :index 24 + :task-level #x1 + :master-level 'ctywide + :level-flags (level-flags lf0 not-physical display-wait ocean-near-translucent city-borrow-high-priority) + :packages '() + :run-packages '("common") + :memory-mode (level-memory-mode borrow-city-small) + :music-bank #f + :extra-sound-bank #f + :mood-func 'update-mood-copy-parent + :special-mood #f + :ocean #f + :ocean-alpha 1.0 + :priority 100 + :draw-priority 10.0 + :bigmap-id (bigmap-id no-map) + :continues '() + :callback-list '() + :borrow #f + :bottom-height (meters -20) + :fog-height (meters 80) + :max-rain 1.0 + :fog-mult 1.0 + :mood-range (new 'static 'mood-range :max-cloud 1.0 :min-fog 0.5 :max-fog 1.0) + ) + ) ;; definition for symbol ctypepb, type level-load-info (define ctypepb (new 'static 'level-load-info @@ -1183,7 +1185,7 @@ :index 25 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf3 lf12) + :level-flags (level-flags lf0 not-physical ctypes ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1217,7 +1219,7 @@ :index 26 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12 lf19) + :level-flags (level-flags lf0 not-physical ocean-near-translucent city-borrow-high-priority) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1251,7 +1253,7 @@ :index 27 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '("cty-mh-deep") :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -1285,7 +1287,7 @@ :index 28 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf3 lf12) + :level-flags (level-flags lf0 not-physical ctypes ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1319,7 +1321,7 @@ :index 29 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf3 lf12) + :level-flags (level-flags lf0 not-physical ctypes ocean-near-translucent) :packages '("cty-mh-border") :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1353,7 +1355,7 @@ :index 30 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf3 lf12) + :level-flags (level-flags lf0 not-physical ctypes ocean-near-translucent) :packages '("cty-kg-border") :run-packages '("common") :memory-mode (level-memory-mode borrow-city-small) @@ -1387,7 +1389,7 @@ :index 31 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf9 lf11 lf12 lf13) + :level-flags (level-flags not-physical sky display-wait ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1422,7 +1424,7 @@ :index 32 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctygenb") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1668,7 +1670,7 @@ :index 33 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("desburning" "ctysluma") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1801,7 +1803,7 @@ :index 34 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyslumb") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -1974,7 +1976,7 @@ :index 35 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2008,7 +2010,7 @@ :index 36 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf12) + :level-flags (level-flags lf0 sky ocean-near-translucent) :packages '("ctyslumc") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2202,7 +2204,7 @@ :task-level #x1 :part-engine-max #x10 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyport") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2719,7 +2721,7 @@ :task-level #x1 :part-engine-max #x10 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyfarm") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2754,7 +2756,7 @@ :task-level #x1 :part-engine-max #x10 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyfarm") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -2788,7 +2790,7 @@ :index 40 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("elecgate" "ctyinda") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3078,7 +3080,7 @@ :index 41 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '("ctyindb") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3208,7 +3210,7 @@ :index 42 :task-level #xd :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("stadium") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3342,7 +3344,7 @@ :index 43 :task-level #xd :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("elecgate" "stadiuma") :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -3380,7 +3382,7 @@ :index 44 :task-level #xd :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3416,7 +3418,7 @@ :index 45 :task-level #xd :master-level #f - :level-flags (level-flags lf1 lf7 lf12) + :level-flags (level-flags not-physical end-mode ocean-near-translucent) :packages '("vehiclep" "wvehiclep" "dp-bipedalp" "lpattack") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3452,7 +3454,7 @@ :task-level #xd :part-engine-max #x10 :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3525,7 +3527,7 @@ :index 47 :task-level #xe :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("neo-waspp" "hoverp" "prebot-eco-creat" "dp-bipedalp" "towera") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3583,7 +3585,7 @@ :index 48 :task-level #xe :master-level 'towera - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -3698,7 +3700,7 @@ :index 49 :task-level #xe :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3737,7 +3739,7 @@ :index 50 :task-level #xe :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3772,7 +3774,7 @@ :index 51 :task-level #xe :master-level 'towera - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3807,7 +3809,7 @@ :index 52 :task-level #xe :master-level #f - :level-flags (level-flags lf1 lf12 lf13) + :level-flags (level-flags not-physical ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3843,7 +3845,7 @@ :index 53 :task-level #xe :master-level 'towera - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -3897,7 +3899,7 @@ :index 54 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -3973,7 +3975,7 @@ :index 55 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4028,7 +4030,7 @@ :index 56 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4084,7 +4086,7 @@ :index 57 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4140,7 +4142,7 @@ :index 58 :task-level #xd :master-level 'stadiuma - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("rublcst") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4176,7 +4178,7 @@ :index 59 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4210,7 +4212,7 @@ :index 60 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("cty-destroy-gridp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4244,7 +4246,7 @@ :index 61 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("ctyport-attackp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4278,7 +4280,7 @@ :index 62 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4312,7 +4314,7 @@ :index 63 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("player-controlp" "bombbotp" "cty-port-assaultp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4346,7 +4348,7 @@ :index 64 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("bombbotp") :run-packages '("common") :memory-mode (level-memory-mode borrow3) @@ -4380,7 +4382,7 @@ :index 65 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("cty-destroy-dark-ecop") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4414,7 +4416,7 @@ :index 66 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf11 lf12) + :level-flags (level-flags lf0 not-physical display-wait ocean-near-translucent) :packages '("cty-protect-hqp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4448,7 +4450,7 @@ :index 67 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("turretp-code" "cty-blow-towerp") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4482,7 +4484,7 @@ :index 68 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("cty-sniper-fight") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -4516,7 +4518,7 @@ :index 69 :task-level #x1 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("onintent") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4593,7 +4595,7 @@ :index 70 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("bbushp") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -4627,7 +4629,7 @@ :index 71 :task-level #x1 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("hiphog") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4723,7 +4725,7 @@ :taskname 'default :index 72 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -4758,7 +4760,7 @@ :index 73 :task-level #x1 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("gungame") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4876,7 +4878,7 @@ :index 74 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -4911,7 +4913,7 @@ :index 75 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -4946,7 +4948,7 @@ :index 76 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf9 lf11 lf12) + :level-flags (level-flags not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -4981,7 +4983,7 @@ :index 77 :task-level #x1 :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5117,7 +5119,7 @@ :index 78 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -5152,7 +5154,7 @@ :index 79 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -5187,7 +5189,7 @@ :index 80 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5222,7 +5224,7 @@ :index 81 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5522,7 +5524,7 @@ :index 82 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5702,7 +5704,7 @@ :index 83 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -5737,7 +5739,7 @@ :index 84 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -5772,7 +5774,7 @@ :index 85 :task-level #xc :master-level #f - :level-flags (level-flags lf7 lf12) + :level-flags (level-flags end-mode ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -5890,7 +5892,7 @@ :index 86 :task-level #xc :master-level 'comba - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5941,7 +5943,7 @@ :index 87 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -5995,7 +5997,7 @@ :index 88 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6049,7 +6051,7 @@ :index 89 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6103,7 +6105,7 @@ :index 90 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6137,7 +6139,7 @@ :index 91 :task-level #xc :master-level 'comba - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6211,7 +6213,7 @@ :index 92 :task-level #xc :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("combx") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6245,7 +6247,7 @@ :index 93 :task-level #xc :master-level #f - :level-flags (level-flags lf7 lf12) + :level-flags (level-flags end-mode ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -6279,7 +6281,7 @@ :index 94 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6333,7 +6335,7 @@ :index 95 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6387,7 +6389,7 @@ :index 96 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6441,7 +6443,7 @@ :index 97 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6495,7 +6497,7 @@ :index 98 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6549,7 +6551,7 @@ :index 99 :task-level #xc :master-level 'raila - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6583,7 +6585,7 @@ :index 100 :task-level #xc :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6639,7 +6641,7 @@ :index #x65 :task-level #xf :master-level #f - :level-flags (level-flags lf9 lf12 lf13) + :level-flags (level-flags sky ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -6674,7 +6676,7 @@ :index #x66 :task-level #xc :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -6708,7 +6710,7 @@ :index #x67 :task-level #x5 :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("elecgate") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -6779,7 +6781,7 @@ :taskname 'default :index #x68 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -6814,7 +6816,7 @@ :index #x69 :task-level #x5 :master-level 'minea - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -6939,7 +6941,7 @@ :index #x6a :task-level #x5 :master-level 'minea - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("gruntp") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -7065,7 +7067,7 @@ :index #x6b :task-level #x5 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -7154,7 +7156,7 @@ :index #x6c :task-level #x5 :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7227,7 +7229,7 @@ :index #x6d :task-level #x2 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("elecgate" "guardp" "hoverp" "robo-hoverp" "roboguardp" "kg-gruntp" "sewa") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7342,7 +7344,7 @@ :index #x6e :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7437,7 +7439,7 @@ :index #x6f :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -7512,7 +7514,7 @@ :index #x70 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '("ladderp") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7587,7 +7589,7 @@ :index #x71 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -7700,7 +7702,7 @@ :index #x72 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7775,7 +7777,7 @@ :index #x73 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -7850,7 +7852,7 @@ :index #x74 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -7925,7 +7927,7 @@ :index #x75 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -7980,7 +7982,7 @@ :index #x76 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8055,7 +8057,7 @@ :index #x77 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8130,7 +8132,7 @@ :index #x78 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8203,7 +8205,7 @@ :index #x79 :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -8296,7 +8298,7 @@ :index #x7a :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8369,7 +8371,7 @@ :index #x7b :task-level #x2 :master-level 'sewa - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -8440,7 +8442,7 @@ :index #x7c :task-level #x3 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8492,7 +8494,7 @@ :index #x7d :task-level #x3 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("foresta") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -8721,7 +8723,7 @@ :index #x7e :task-level #x3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("egg-spiderp") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -8756,7 +8758,7 @@ :index #x7f :task-level #x3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -8791,7 +8793,7 @@ :index #x80 :task-level #x3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("dp-bipedalp" "turretp-code" "turretp" "hoverp" "neo-waspp" "lformach") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -8826,7 +8828,7 @@ :index #x81 :task-level #x3 :master-level 'foresta - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -8877,7 +8879,7 @@ :taskname 'default :index #x82 :master-level #f - :level-flags (level-flags lf9 lf11 lf12 lf13) + :level-flags (level-flags sky display-wait ocean-near-translucent ocean-far) :packages '("wasintro" "desert") :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -9014,7 +9016,7 @@ :index #x83 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -9053,7 +9055,7 @@ :index #x84 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -9088,7 +9090,7 @@ :index #x85 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -9123,7 +9125,7 @@ :index #x86 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("vehiclep" "wvehiclep" "desburning" "wasall") :run-packages '("common") :music-bank #f @@ -9199,7 +9201,7 @@ :index #x87 :task-level #x7 :master-level 'wasall - :level-flags (level-flags lf0 lf1 lf8 lf9 lf12) + :level-flags (level-flags lf0 not-physical flut sky ocean-near-translucent) :packages '("ladderp" "flutp" "nav-graphp" "cityp" "marketp" "waswide") :run-packages '("common") :memory-mode (level-memory-mode city-tiny-edge) @@ -9237,7 +9239,7 @@ :index #x88 :task-level #x7 :master-level 'waswide - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -9532,7 +9534,7 @@ :taskname 'default :index #x89 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -9567,7 +9569,7 @@ :index #x8a :task-level #x7 :master-level 'waswide - :level-flags (level-flags lf0 lf9 lf11 lf12 lf13) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent ocean-far) :packages '("turretp-code" "turretp" "wascityb") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -9961,7 +9963,7 @@ :index #x8b :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf5 lf9 lf11 lf12) + :level-flags (level-flags not-physical title sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -9996,7 +9998,7 @@ :index #x8c :task-level #x7 :master-level 'waswide - :level-flags (level-flags lf0 lf9 lf11 lf12 lf13) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -10035,7 +10037,7 @@ :index #x8d :task-level #x7 :master-level #f - :level-flags (level-flags lf0 lf12 lf13) + :level-flags (level-flags lf0 ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10070,7 +10072,7 @@ :index #x8e :task-level #x7 :master-level #f - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10105,7 +10107,7 @@ :index #x8f :task-level #x7 :master-level #f - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10140,7 +10142,7 @@ :index #x90 :task-level #x7 :master-level #f - :level-flags (level-flags lf0 lf12) + :level-flags (level-flags lf0 ocean-near-translucent) :packages '("racep" "wasleapr") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10175,7 +10177,7 @@ :index #x91 :task-level #x7 :master-level 'wasall - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -10493,7 +10495,7 @@ :index #x92 :task-level #x8 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -10532,7 +10534,7 @@ :index #x93 :task-level #x8 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -10566,7 +10568,7 @@ :taskname 'default :index #x94 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10600,7 +10602,7 @@ :taskname 'default :index #x95 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10634,7 +10636,7 @@ :taskname 'default :index #x96 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -10669,7 +10671,7 @@ :index #x97 :task-level #x8 :master-level #f - :level-flags (level-flags lf0 lf9 lf11 lf12 lf13) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent ocean-far) :packages '("wasstada") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11007,7 +11009,7 @@ :index #x98 :task-level #x8 :master-level 'wasstada - :level-flags (level-flags lf12 lf13) + :level-flags (level-flags ocean-near-translucent ocean-far) :packages '("wasstadb") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11042,7 +11044,7 @@ :index #x99 :task-level #x8 :master-level 'wasstada - :level-flags (level-flags lf12 lf13) + :level-flags (level-flags ocean-near-translucent ocean-far) :packages '("marauderp" "wasstadc") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11077,7 +11079,7 @@ :index #x9a :task-level #x8 :master-level 'wasstada - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11111,7 +11113,7 @@ :taskname 'default :index #x9b :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11145,7 +11147,7 @@ :taskname 'default :index #x9c :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -11179,7 +11181,7 @@ :taskname 'default :index #x9d :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11213,7 +11215,7 @@ :taskname 'default :index #x9e :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -11247,7 +11249,7 @@ :taskname 'default :index #x9f :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11281,7 +11283,7 @@ :taskname 'default :index #xa0 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -11316,7 +11318,7 @@ :index #xa1 :task-level #x8 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -11350,7 +11352,7 @@ :taskname 'default :index #xa2 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11384,7 +11386,7 @@ :taskname 'default :index #xa3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11418,7 +11420,7 @@ :taskname 'default :index #xa4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11452,7 +11454,7 @@ :taskname 'default :index #xa5 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11486,7 +11488,7 @@ :taskname 'default :index #xa6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11520,7 +11522,7 @@ :taskname 'default :index #xa7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11554,7 +11556,7 @@ :taskname 'default :index #xa8 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11588,7 +11590,7 @@ :taskname 'default :index #xa9 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11622,7 +11624,7 @@ :taskname 'default :index #xaa :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11656,7 +11658,7 @@ :taskname 'default :index #xab :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11690,7 +11692,7 @@ :taskname 'default :index #xac :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11724,7 +11726,7 @@ :taskname 'default :index #xad :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11758,7 +11760,7 @@ :taskname 'default :index #xae :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11792,7 +11794,7 @@ :taskname 'default :index #xaf :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11826,7 +11828,7 @@ :taskname 'default :index #xb0 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11860,7 +11862,7 @@ :taskname 'default :index #xb1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11894,7 +11896,7 @@ :taskname 'default :index #xb2 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11928,7 +11930,7 @@ :taskname 'default :index #xb3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11962,7 +11964,7 @@ :taskname 'default :index #xb4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -11996,7 +11998,7 @@ :taskname 'default :index #xb5 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12030,7 +12032,7 @@ :taskname 'default :index #xb6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12064,7 +12066,7 @@ :taskname 'default :index #xb7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12098,7 +12100,7 @@ :taskname 'default :index #xb8 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12132,7 +12134,7 @@ :taskname 'default :index #xb9 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12166,7 +12168,7 @@ :taskname 'default :index #xba :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12200,7 +12202,7 @@ :taskname 'default :index #xbb :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12234,7 +12236,7 @@ :taskname 'default :index #xbc :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12268,7 +12270,7 @@ :taskname 'default :index #xbd :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12302,7 +12304,7 @@ :taskname 'default :index #xbe :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12336,7 +12338,7 @@ :taskname 'default :index #xbf :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12370,7 +12372,7 @@ :taskname 'default :index #xc0 :master-level #f - :level-flags (level-flags lf1 lf12 lf16) + :level-flags (level-flags not-physical ocean-near-translucent mech) :packages '("mechp") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12404,7 +12406,7 @@ :taskname 'default :index #xc1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12438,7 +12440,7 @@ :taskname 'default :index #xc2 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12472,7 +12474,7 @@ :taskname 'default :index #xc3 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12507,7 +12509,7 @@ :index #xc4 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12542,7 +12544,7 @@ :index #xc5 :task-level #x7 :master-level 'waswide - :level-flags (level-flags lf9 lf11 lf12 lf13 lf20) + :level-flags (level-flags sky display-wait ocean-near-translucent ocean-far ocean-all) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -12698,7 +12700,7 @@ :taskname 'default :index #xc6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12732,7 +12734,7 @@ :taskname 'default :index #xc7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -12767,7 +12769,7 @@ :index #xc8 :task-level #x6 :master-level 'wasall - :level-flags (level-flags lf9 lf12 lf13 desert) + :level-flags (level-flags sky ocean-near-translucent ocean-far desert) :packages '("dust-stormp" "desert") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-small) @@ -14240,7 +14242,7 @@ :index #xc9 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14275,7 +14277,7 @@ :index #xca :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14329,7 +14331,7 @@ :index #xcb :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14364,7 +14366,7 @@ :index #xcc :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf9 lf11 lf12) + :level-flags (level-flags not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14399,7 +14401,7 @@ :index #xcd :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14653,7 +14655,7 @@ :index #xce :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14707,7 +14709,7 @@ :index #xcf :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14761,7 +14763,7 @@ :index #xd0 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14819,7 +14821,7 @@ :index #xd1 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -14933,7 +14935,7 @@ :index #xd2 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf9 lf12 desert) + :level-flags (level-flags sky ocean-near-translucent desert) :packages '("elecgate" "desertg") :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -15107,7 +15109,7 @@ :index #xd3 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15142,7 +15144,7 @@ :index #xd4 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12 desert) + :level-flags (level-flags not-physical sky ocean-near-translucent desert) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -15196,7 +15198,7 @@ :index #xd5 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -15250,7 +15252,7 @@ :index #xd6 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf9 lf11 lf12) + :level-flags (level-flags not-physical sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode alias) @@ -15285,7 +15287,7 @@ :index #xd7 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("desrace") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15320,7 +15322,7 @@ :index #xd8 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '("desboss1") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15355,7 +15357,7 @@ :index #xd9 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15390,7 +15392,7 @@ :index #xda :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15425,7 +15427,7 @@ :index #xdb :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '("course-racep") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15460,7 +15462,7 @@ :index #xdc :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("course-racep") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15535,7 +15537,7 @@ :index #xdd :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf6 lf9 lf12) + :level-flags (level-flags not-physical borrow-load sky ocean-near-translucent) :packages '("deshover") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15590,7 +15592,7 @@ :index #xde :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15625,7 +15627,7 @@ :index #xdf :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf6 lf8 lf9 lf12) + :level-flags (level-flags not-physical borrow-load flut sky ocean-near-translucent) :packages '("flutp" "desliz") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15660,7 +15662,7 @@ :index #xe0 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("cityp" "desert-rescuep") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15758,7 +15760,7 @@ :index #xe1 :task-level #x6 :master-level 'desresc - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -15793,7 +15795,7 @@ :index #xe2 :task-level #x6 :master-level 'desresc - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -15828,7 +15830,7 @@ :index #xe3 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("botp" "ashelinp" "marauderp" "desoasis") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -15943,7 +15945,7 @@ :index #xe4 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -15978,7 +15980,7 @@ :index #xe5 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16013,7 +16015,7 @@ :index #xe6 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("marauderp" "player-controlp" "desjump" "deschase") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16048,7 +16050,7 @@ :index #xe7 :task-level #x6 :master-level 'desert - :level-flags (level-flags lf1 lf9 lf12) + :level-flags (level-flags not-physical sky ocean-near-translucent) :packages '("turretp-code" "turretp" "desbattl") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16083,7 +16085,7 @@ :index #xe8 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("nst-eggsp") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -16118,7 +16120,7 @@ :index #xe9 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -16153,7 +16155,7 @@ :index #xea :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -16188,7 +16190,7 @@ :index #xeb :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16223,7 +16225,7 @@ :index #xec :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16258,7 +16260,7 @@ :index #xed :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16293,7 +16295,7 @@ :index #xee :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16328,7 +16330,7 @@ :index #xef :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -16363,7 +16365,7 @@ :index #xf0 :task-level #x1 :master-level 'ctywide - :level-flags (level-flags lf0 lf1 lf12) + :level-flags (level-flags lf0 not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode borrow4) @@ -16398,7 +16400,7 @@ :index #xf1 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16433,7 +16435,7 @@ :index #xf2 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("timer-path-data") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16468,7 +16470,7 @@ :index #xf3 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("timer-path-data") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16503,7 +16505,7 @@ :index #xf4 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("timer-path-data") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16538,7 +16540,7 @@ :index #xf5 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush" "egg-spiderp") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16573,7 +16575,7 @@ :index #xf6 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16608,7 +16610,7 @@ :index #xf7 :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16643,7 +16645,7 @@ :index #xf8 :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16678,7 +16680,7 @@ :index #xf9 :task-level #x6 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16713,7 +16715,7 @@ :index #xfa :task-level #x7 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16748,7 +16750,7 @@ :index #xfb :task-level #x1 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '("desbush") :run-packages '("common") :memory-mode (level-memory-mode tiny-center-micro) @@ -16783,7 +16785,7 @@ :index #xfc :task-level #x4 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -16897,7 +16899,7 @@ :index #xfd :task-level #x4 :master-level 'nsta - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -17035,7 +17037,7 @@ :index #xfe :task-level #x4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -17070,7 +17072,7 @@ :index #xff :task-level #x4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -17105,7 +17107,7 @@ :index #x100 :task-level #x4 :master-level #f - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -17140,7 +17142,7 @@ :index #x101 :task-level #xb :master-level #f - :level-flags (level-flags lf9 lf11 lf12 lf13) + :level-flags (level-flags sky display-wait ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode tiny-edge) @@ -17374,7 +17376,7 @@ :index #x102 :task-level #xb :master-level #f - :level-flags (level-flags lf11 lf12 lf18) + :level-flags (level-flags display-wait ocean-near-translucent check-taskname-for-continue) :packages '("hoverp" "templea") :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -17539,7 +17541,7 @@ :index #x103 :task-level #xb :master-level 'templea - :level-flags (level-flags lf11 lf12 lf18) + :level-flags (level-flags display-wait ocean-near-translucent check-taskname-for-continue) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -17947,7 +17949,7 @@ :index #x104 :task-level #xb :master-level 'templea - :level-flags (level-flags lf11 lf12 lf18) + :level-flags (level-flags display-wait ocean-near-translucent check-taskname-for-continue) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18042,7 +18044,7 @@ :index #x105 :task-level #xb :master-level 'templea - :level-flags (level-flags lf9 lf11 lf12 lf18) + :level-flags (level-flags sky display-wait ocean-near-translucent check-taskname-for-continue) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18217,7 +18219,7 @@ :index #x106 :task-level #xb :master-level 'templea - :level-flags (level-flags lf9 lf11 lf12 lf18) + :level-flags (level-flags sky display-wait ocean-near-translucent check-taskname-for-continue) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18252,7 +18254,7 @@ :index #x107 :task-level #xa :master-level #f - :level-flags (level-flags lf7 lf9 lf12 lf13 low-res-hfrag) + :level-flags (level-flags end-mode sky ocean-near-translucent ocean-far low-res-hfrag) :packages '("vehiclep" "nav-graphp" "hvehiclep" "hanga") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18332,7 +18334,7 @@ :index #x108 :task-level #xa :master-level 'hanga - :level-flags (level-flags lf1 lf9 lf12 low-res-hfrag) + :level-flags (level-flags not-physical sky ocean-near-translucent low-res-hfrag) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-center) @@ -18366,7 +18368,7 @@ :index #x109 :task-level #xa :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18457,7 +18459,7 @@ :task-level #xa :part-engine-max #x10 :master-level #f - :level-flags (level-flags lf8 lf9 lf11 lf12) + :level-flags (level-flags flut sky display-wait ocean-near-translucent) :packages '("ladderp" "flutp" "tubep" "indaxp" "volcanoa") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -18815,7 +18817,7 @@ :index #x10b :task-level #x9 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("factorya") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -18905,7 +18907,7 @@ :index #x10c :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf7 lf12) + :level-flags (level-flags end-mode ocean-near-translucent) :packages '("vehiclep" "nav-graphp" "hvehiclep" "wvehiclep" "lfactory") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -18939,7 +18941,7 @@ :index #x10d :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf7 lf12) + :level-flags (level-flags end-mode ocean-near-translucent) :packages '("vehiclep" "wvehiclep" "lfaccar") :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -18974,7 +18976,7 @@ :index #x10e :task-level #x9 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -19028,7 +19030,7 @@ :index #x10f :task-level #x9 :master-level #f - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -19080,7 +19082,7 @@ :index #x110 :task-level #x9 :master-level 'factorya - :level-flags (level-flags use-camera-other lf12 lf13) + :level-flags (level-flags use-camera-other ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -19114,7 +19116,7 @@ :index #x111 :task-level #x9 :master-level 'factorya - :level-flags (level-flags use-camera-other lf12 lf13) + :level-flags (level-flags use-camera-other ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -19149,7 +19151,7 @@ :index #x112 :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("factoryb") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -19206,7 +19208,7 @@ :index #x113 :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '("factoryc" "indaxp") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -19582,7 +19584,7 @@ :index #x114 :task-level #x9 :master-level 'factorya - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("roboguardp" "bombbotp" "hoverp" "neo-waspp" "factory-boss") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -19671,7 +19673,7 @@ :index #x115 :task-level #x9 :master-level 'factoryd - :level-flags (level-flags lf12) + :level-flags (level-flags ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -19705,7 +19707,7 @@ :index #x116 :task-level #x9 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -19756,7 +19758,7 @@ :index #x117 :task-level #xf :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("precura" "dp-bipedalp" "neo-waspp") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -19871,7 +19873,7 @@ :index #x118 :task-level #xf :master-level 'precura - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -19905,7 +19907,7 @@ :index #x119 :task-level #xf :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("tubep" "precurc") :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -19997,7 +19999,7 @@ :index #x11a :task-level #xf :master-level 'precura - :level-flags (level-flags lf1 lf12) + :level-flags (level-flags not-physical ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode borrow) @@ -20031,7 +20033,7 @@ :index #x11b :task-level #xf :master-level #f - :level-flags (level-flags lf9 lf12) + :level-flags (level-flags sky ocean-near-translucent) :packages '("precurd") :run-packages '("common") :memory-mode (level-memory-mode large) @@ -20117,7 +20119,7 @@ :taskname 'default :index #x11c :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -20168,7 +20170,7 @@ :index #x11d :part-engine-max #x1 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '() :memory-mode (level-memory-mode medium) @@ -20219,7 +20221,7 @@ :taskname 'default :index #x11e :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -20270,7 +20272,7 @@ :taskname 'default :index #x11f :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20304,7 +20306,7 @@ :taskname 'default :index #x120 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20338,7 +20340,7 @@ :taskname 'default :index #x121 :master-level #f - :level-flags (level-flags lf11 lf12) + :level-flags (level-flags display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20372,7 +20374,7 @@ :taskname 'default :index #x122 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20406,7 +20408,7 @@ :taskname 'default :index #x123 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20458,7 +20460,7 @@ :index #x124 :task-level #x1 :master-level #f - :level-flags (level-flags lf0 lf9 lf11 lf12) + :level-flags (level-flags lf0 sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode medium) @@ -20491,7 +20493,7 @@ :taskname 'default :index #x125 :master-level #f - :level-flags (level-flags lf9 lf11 lf12) + :level-flags (level-flags sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode small-edge) @@ -20542,7 +20544,7 @@ :taskname 'default :index #x126 :master-level #f - :level-flags (level-flags lf9 lf11 lf12 lf13) + :level-flags (level-flags sky display-wait ocean-near-translucent ocean-far) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) @@ -20610,7 +20612,7 @@ :taskname 'default :index #x127 :master-level #f - :level-flags (level-flags lf8 lf9 lf11 lf12) + :level-flags (level-flags flut sky display-wait ocean-near-translucent) :packages '() :run-packages '("common") :memory-mode (level-memory-mode large) diff --git a/test/decompiler/reference/jak3/engine/level/level_REF.gc b/test/decompiler/reference/jak3/engine/level/level_REF.gc index d4dea99ca5..dae4718ef5 100644 --- a/test/decompiler/reference/jak3/engine/level/level_REF.gc +++ b/test/decompiler/reference/jak3/engine/level/level_REF.gc @@ -432,7 +432,7 @@ (let ((s0-0 (-> s2-0 master-level))) (when s0-0 (let ((a0-10 (lookup-level-info s0-0))) - (when (not (logtest? (level-flags lf17) (-> a0-10 level-flags))) + (when (not (logtest? (level-flags allow-unloaded) (-> a0-10 level-flags))) (dotimes (v1-16 (-> this length)) (let ((a0-15 (-> this level v1-16))) (when (or (= (-> a0-15 status) 'active) (= (-> a0-15 status) 'alive) (= (-> a0-15 status) 'loaded)) @@ -532,7 +532,7 @@ (while (and (> s4-1 0) (car s5-1)) (when (and (!= (car s5-1) 'dummy) (or (= arg1 'all) (let ((a0-31 (lookup-level-info (the-as symbol (car s5-1))))) - (and a0-31 (not (logtest? (-> a0-31 level-flags) (level-flags lf15)))) + (and a0-31 (not (logtest? (-> a0-31 level-flags) (level-flags city-borrow-available)))) ) ) ) @@ -1612,7 +1612,7 @@ ) ) (-> this borrow-from-level) - (logtest? (-> this info level-flags) (level-flags lf6)) + (logtest? (-> this info level-flags) (level-flags borrow-load)) ) (set! (-> this load-buffer-mode) (level-memory-mode borrow)) (let ((t0-2 (logand -64 (&+ (-> this heap current) 63)))) @@ -2170,7 +2170,7 @@ "Remove level from memory." (deactivate this) (when (!= (-> this status) 'inactive) - (when (not (logtest? (level-flags lf17) (-> this info level-flags))) + (when (not (logtest? (level-flags allow-unloaded) (-> this info level-flags))) (dotimes (s5-0 (-> *level* length)) (let ((v1-10 (-> *level* level s5-0))) (when (or (= (-> v1-10 status) 'active) (= (-> v1-10 status) 'alive) (= (-> v1-10 status) 'loaded)) @@ -2579,7 +2579,7 @@ (dotimes (a0-3 (-> this length)) (let ((a1-3 (-> this level a0-3))) (when (= (-> a1-3 status) 'active) - (if (and (= (-> a1-3 name) v1-1) (not (logtest? (-> a1-3 info level-flags) (level-flags lf1)))) + (if (and (= (-> a1-3 name) v1-1) (not (logtest? (-> a1-3 info level-flags) (level-flags not-physical)))) (return a1-3) ) ) @@ -2591,7 +2591,7 @@ (dotimes (a0-5 (-> this length)) (let ((a1-8 (-> this level a0-5))) (when (= (-> a1-8 status) 'active) - (if (and (= (-> a1-8 name) v1-5) (not (logtest? (-> a1-8 info level-flags) (level-flags lf1)))) + (if (and (= (-> a1-8 name) v1-5) (not (logtest? (-> a1-8 info level-flags) (level-flags not-physical)))) (return a1-8) ) ) @@ -2605,7 +2605,7 @@ (when (= (-> s2-0 status) 'active) (let ((f0-0 (vector-vector-distance (-> s2-0 bsp bsphere) s5-0))) (if (and (-> s2-0 inside-boxes?) - (not (logtest? (-> s2-0 info level-flags) (level-flags lf1))) + (not (logtest? (-> s2-0 info level-flags) (level-flags not-physical))) (or (not s4-0) (< f0-0 f30-0)) ) (set! s4-0 s2-0) @@ -2623,7 +2623,7 @@ (dotimes (v1-26 (-> this length)) (let ((a0-11 (-> this level v1-26))) (when (= (-> a0-11 status) 'active) - (if (and (-> a0-11 meta-inside?) (not (logtest? (-> a0-11 info level-flags) (level-flags lf1)))) + (if (and (-> a0-11 meta-inside?) (not (logtest? (-> a0-11 info level-flags) (level-flags not-physical)))) (return a0-11) ) ) @@ -2634,7 +2634,7 @@ (dotimes (v1-29 (-> this length)) (let ((a0-16 (-> this level v1-29))) (when (= (-> a0-16 status) 'active) - (if (and (not v0-1) (not (logtest? (-> a0-16 info level-flags) (level-flags lf1)))) + (if (and (not v0-1) (not (logtest? (-> a0-16 info level-flags) (level-flags not-physical)))) (set! v0-1 a0-16) ) ) @@ -3335,7 +3335,7 @@ (set! (-> s3-2 display?) (-> this target s5-2 display?)) ) (else - (if (and (logtest? (-> s3-2 info level-flags) (level-flags lf11)) + (if (and (logtest? (-> s3-2 info level-flags) (level-flags display-wait)) (!= (-> this target s5-2 display?) 'display-no-wait) ) (send-event *target* 'loading) @@ -3398,7 +3398,7 @@ (if (= (-> a2-32 name) (-> this vis-nick)) (goto cfg-137) ) - (if (or (not v1-131) (not (logtest? (-> a2-32 info level-flags) (level-flags lf1)))) + (if (or (not v1-131) (not (logtest? (-> a2-32 info level-flags) (level-flags not-physical)))) (set! v1-131 a2-32) ) (+! a0-55 1) @@ -3525,7 +3525,7 @@ ) (or (-> *level* border?) (logtest? (-> *game-info* current-continue flags) (continue-flags change-continue))) (and (or (and (!= (-> s3-0 name) (-> *game-info* current-continue level)) - (or (not (logtest? (level-flags lf18) (-> s3-0 info level-flags))) + (or (not (logtest? (level-flags check-taskname-for-continue) (-> s3-0 info level-flags))) (!= (-> s3-0 info taskname) (-> (lookup-level-info (-> *game-info* current-continue level)) taskname)) ) ) diff --git a/test/decompiler/reference/jak3/engine/load/loader_REF.gc b/test/decompiler/reference/jak3/engine/load/loader_REF.gc index f81eacbdfc..4e8b6b485b 100644 --- a/test/decompiler/reference/jak3/engine/load/loader_REF.gc +++ b/test/decompiler/reference/jak3/engine/load/loader_REF.gc @@ -414,7 +414,7 @@ ) ((and (!= (-> *level* loading-level) (-> *level* level-default)) (or (< 81920.0 (-> this load-file-priority)) - (logtest? (-> *level* loading-level info level-flags) (level-flags lf4)) + (logtest? (-> *level* loading-level info level-flags) (level-flags external)) ) ) ) diff --git a/test/decompiler/reference/jak3/engine/target/flut/target-flut_REF.gc b/test/decompiler/reference/jak3/engine/target/flut/target-flut_REF.gc index c1575508a4..64e6b3cbaa 100644 --- a/test/decompiler/reference/jak3/engine/target/flut/target-flut_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/flut/target-flut_REF.gc @@ -1180,12 +1180,12 @@ (set! (-> self flut entity) (-> v1-41 entity)) ) ) - (when (not (and (-> self flut entity) (logtest? (-> self flut entity extra level info level-flags) (level-flags lf8))) + (when (not (and (-> self flut entity) (logtest? (-> self flut entity extra level info level-flags) (level-flags flut))) ) (dotimes (v1-49 (-> *level* length)) (let ((a0-40 (-> *level* level v1-49))) (when (= (-> a0-40 status) 'active) - (when (logtest? (-> a0-40 info level-flags) (level-flags lf8)) + (when (logtest? (-> a0-40 info level-flags) (level-flags flut)) (let ((a0-42 (-> a0-40 entity data 0 entity))) (when a0-42 (set! (-> self flut entity) (the-as entity-actor a0-42)) diff --git a/test/decompiler/reference/jak3/engine/target/mech/mech_REF.gc b/test/decompiler/reference/jak3/engine/target/mech/mech_REF.gc index 0c8ea04c67..805915a479 100644 --- a/test/decompiler/reference/jak3/engine/target/mech/mech_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/mech/mech_REF.gc @@ -497,11 +497,11 @@ ;; INFO: Used lq/sq (defbehavior mech-target-init mech ((arg0 vector) (arg1 quaternion) (arg2 entity-actor)) (process-entity-set! self arg2) - (when (not (and (-> self level) (logtest? (level-flags lf16) (-> self level info level-flags)))) + (when (not (and (-> self level) (logtest? (level-flags mech) (-> self level info level-flags)))) (dotimes (v1-4 (-> *level* length)) (let ((a0-7 (-> *level* level v1-4))) (when (= (-> a0-7 status) 'active) - (when (logtest? (level-flags lf16) (-> a0-7 info level-flags)) + (when (logtest? (level-flags mech) (-> a0-7 info level-flags)) (set! (-> self level) a0-7) (goto cfg-12) ) diff --git a/test/decompiler/reference/jak3/engine/target/mech/target-mech_REF.gc b/test/decompiler/reference/jak3/engine/target/mech/target-mech_REF.gc index 13355c113b..4b8d23da38 100644 --- a/test/decompiler/reference/jak3/engine/target/mech/target-mech_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/mech/target-mech_REF.gc @@ -1246,12 +1246,12 @@ (set! (-> self mech entity) (-> v1-31 entity)) ) ) - (when (not (and (-> self mech entity) (logtest? (level-flags lf16) (-> self mech entity extra level info level-flags))) + (when (not (and (-> self mech entity) (logtest? (level-flags mech) (-> self mech entity extra level info level-flags))) ) (dotimes (v1-39 (-> *level* length)) (let ((a0-18 (-> *level* level v1-39))) (when (= (-> a0-18 status) 'active) - (when (logtest? (level-flags lf16) (-> a0-18 info level-flags)) + (when (logtest? (level-flags mech) (-> a0-18 info level-flags)) (let ((a0-20 (-> a0-18 entity data 0 entity))) (when a0-20 (set! (-> self mech entity) (the-as entity-actor a0-20)) diff --git a/test/decompiler/reference/jak3/engine/target/target-handler_REF.gc b/test/decompiler/reference/jak3/engine/target/target-handler_REF.gc index 9f70a681a0..e501d549c1 100644 --- a/test/decompiler/reference/jak3/engine/target/target-handler_REF.gc +++ b/test/decompiler/reference/jak3/engine/target/target-handler_REF.gc @@ -743,7 +743,7 @@ (('level-deactivate) (cond ((and (focus-test? self pilot) (let ((a0-19 (lookup-level-info (the-as symbol (-> arg3 param 0))))) - (or (and a0-19 (logtest? (-> a0-19 level-flags) (level-flags lf7))) + (or (and a0-19 (logtest? (-> a0-19 level-flags) (level-flags end-mode))) (and (= (-> arg3 param 0) 'lctypatk) (-> self pilot as-daxter?)) (= (-> arg3 param 0) 'desliz) ) @@ -774,7 +774,7 @@ ) ((and (focus-test? self flut) (begin (set! a0-35 (lookup-level-info (the-as symbol (-> arg3 param 0)))) a0-35) - (logtest? (-> a0-35 level-flags) (level-flags lf8)) + (logtest? (-> a0-35 level-flags) (level-flags flut)) ) (ja-channel-set! 0) (target-gun-end-mode #t) @@ -785,7 +785,7 @@ ) ((and (focus-test? self mech) (begin (set! a1-13 (lookup-level-info (the-as symbol (-> arg3 param 0)))) a1-13) - (logtest? (level-flags lf16) (-> a1-13 level-flags)) + (logtest? (level-flags mech) (-> a1-13 level-flags)) ) (ja-channel-set! 0) (when (not (focus-test? self grabbed teleporting)) diff --git a/test/decompiler/reference/jak3/levels/city/common/cty-borrow-manager_REF.gc b/test/decompiler/reference/jak3/levels/city/common/cty-borrow-manager_REF.gc index 81dd385a41..021bbbe9df 100644 --- a/test/decompiler/reference/jak3/levels/city/common/cty-borrow-manager_REF.gc +++ b/test/decompiler/reference/jak3/levels/city/common/cty-borrow-manager_REF.gc @@ -32,13 +32,13 @@ ;; definition for method 18 of type cty-borrow-manager (defmethod cty-borrow-manager-method-18 ((this cty-borrow-manager) (arg0 level-load-info)) (cond - ((logtest? (-> arg0 level-flags) (level-flags lf2)) + ((logtest? (-> arg0 level-flags) (level-flags ctycar)) 1.0 ) - ((logtest? (-> arg0 level-flags) (level-flags lf3)) + ((logtest? (-> arg0 level-flags) (level-flags ctypes)) 3.0 ) - ((logtest? (level-flags lf19) (-> arg0 level-flags)) + ((logtest? (level-flags city-borrow-high-priority) (-> arg0 level-flags)) 1000.0 ) (else @@ -782,7 +782,3 @@ 0 (none) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/city/common/trail-graph_REF.gc b/test/decompiler/reference/jak3/levels/city/common/trail-graph_REF.gc index 66e077179a..abda08bd82 100644 --- a/test/decompiler/reference/jak3/levels/city/common/trail-graph_REF.gc +++ b/test/decompiler/reference/jak3/levels/city/common/trail-graph_REF.gc @@ -2119,7 +2119,3 @@ :cell-pov-bit-arrays #f ) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/city/ctywide-obs_REF.gc b/test/decompiler/reference/jak3/levels/city/ctywide-obs_REF.gc index 027fb81413..9a2beee39b 100644 --- a/test/decompiler/reference/jak3/levels/city/ctywide-obs_REF.gc +++ b/test/decompiler/reference/jak3/levels/city/ctywide-obs_REF.gc @@ -3454,7 +3454,7 @@ (gp-1 (clear (-> this strings 1 text))) (s4-0 "~S") ) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-0866) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id score) #f)) (s5-0 gp-1 s4-0 *temp-string*) ) 0 @@ -3955,7 +3955,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/city/port/attack/ctyport-attack_REF.gc b/test/decompiler/reference/jak3/levels/city/port/attack/ctyport-attack_REF.gc index 758bcd8d9a..fa72d9efe8 100644 --- a/test/decompiler/reference/jak3/levels/city/port/attack/ctyport-attack_REF.gc +++ b/test/decompiler/reference/jak3/levels/city/port/attack/ctyport-attack_REF.gc @@ -393,7 +393,7 @@ :speech #x30 :text-duration (seconds 3) :neg #x1 - :text-message (text-id text-0408) + :text-message (text-id press-to-jump) :on-close #f :camera #f ) @@ -3301,7 +3301,3 @@ (call-parent-method this) (none) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/city/protect/assault-shared_REF.gc b/test/decompiler/reference/jak3/levels/city/protect/assault-shared_REF.gc index 4e813d1876..9558c4508a 100644 --- a/test/decompiler/reference/jak3/levels/city/protect/assault-shared_REF.gc +++ b/test/decompiler/reference/jak3/levels/city/protect/assault-shared_REF.gc @@ -194,7 +194,7 @@ :speech #xd :text-duration (seconds 4) :neg #x1 - :text-message (text-id text-06de) + :text-message (text-id protect-civilians) :on-close #f :camera #f ) @@ -289,7 +289,3 @@ ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/jak3/levels/city/vinroom/power-game_REF.gc b/test/decompiler/reference/jak3/levels/city/vinroom/power-game_REF.gc index 6ea6c6af37..520f575240 100644 --- a/test/decompiler/reference/jak3/levels/city/vinroom/power-game_REF.gc +++ b/test/decompiler/reference/jak3/levels/city/vinroom/power-game_REF.gc @@ -896,7 +896,7 @@ :speech #x1 :text-duration (seconds 5) :neg #x1 - :text-message (text-id text-07b9) + :text-message (text-id hold-to-increase-speed) :on-close #f :camera #f ) @@ -3861,7 +3861,3 @@ #f ) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/comb/comb-obs_REF.gc b/test/decompiler/reference/jak3/levels/comb/comb-obs_REF.gc index a44932da30..2e0b5313e5 100644 --- a/test/decompiler/reference/jak3/levels/comb/comb-obs_REF.gc +++ b/test/decompiler/reference/jak3/levels/comb/comb-obs_REF.gc @@ -1332,7 +1332,7 @@ ) (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 6)) - (print-text self (text-id text-0776)) + (print-text self (text-id light-jak-shield-how-to)) (suspend) ) ) @@ -1340,7 +1340,3 @@ (go-virtual complete) ) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/desert/des-bbush-tasks_REF.gc b/test/decompiler/reference/jak3/levels/desert/des-bbush-tasks_REF.gc index e79788c14a..889ceaa2ab 100644 --- a/test/decompiler/reference/jak3/levels/desert/des-bbush-tasks_REF.gc +++ b/test/decompiler/reference/jak3/levels/desert/des-bbush-tasks_REF.gc @@ -636,7 +636,7 @@ :fail (new 'static 'resetter-spec :continue #f :reset-mode 'life :execute #f) :retry (new 'static 'resetter-spec :continue "desert-bbush-desc-4" :reset-mode 'try :execute #f) :reset-delay (seconds 6.5) - :text-message (text-id text-07cc) + :text-message (text-id out-of-time) ) ) @@ -681,7 +681,7 @@ (let ((gp-3 (on-fail self 'fail))) (when gp-3 (mem-copy! (the-as pointer *bbv-fail-time-expired*) (the-as pointer gp-3) 48) - (set! (-> gp-3 text-message) (text-id text-07cc)) + (set! (-> gp-3 text-message) (text-id out-of-time)) ) ) (go-virtual fail *bbv-fail-time-expired*) @@ -801,7 +801,7 @@ (set! (-> this display-units) 0.00024414062) (set! (-> this time-limit) (seconds 30)) (set! (-> this game-score) (the-as uint 6)) - (set! (-> *wasbbv-hud-info* score-text) (text-id text-0833)) + (set! (-> *wasbbv-hud-info* score-text) (text-id your-distance)) (set! (-> *wasbbv-hud-info* decimal-place-count) 1) (none) ) @@ -843,7 +843,7 @@ (set! (-> this display-units) 0.00024414062) (set! (-> this time-limit) (seconds 60)) (set! (-> this game-score) (the-as uint 7)) - (set! (-> *wasbbv-hud-info* score-text) (text-id text-07ce)) + (set! (-> *wasbbv-hud-info* score-text) (text-id total-distance)) (set! (-> *wasbbv-hud-info* decimal-place-count) 1) (none) ) @@ -890,7 +890,7 @@ (set! (-> this time-limit) (seconds 60)) (set! (-> this game-score) (the-as uint 8)) (set! (-> this want-current-hud?) #f) - (set! (-> *wasbbv-hud-info* score-text) (text-id text-07cd)) + (set! (-> *wasbbv-hud-info* score-text) (text-id total-rolls)) (set! (-> *wasbbv-hud-info* decimal-place-count) 0) 0 (none) @@ -948,7 +948,7 @@ (set! (-> this game-score) (the-as uint 16)) (set! (-> this want-current-hud?) #f) (set! (-> this max-reserve-count) 1000) - (set! (-> *wasbbv-hud-info* score-text) (text-id text-07f6)) + (set! (-> *wasbbv-hud-info* score-text) (text-id kills)) (set! (-> *wasbbv-hud-info* decimal-place-count) 0) (set! (-> *was-squad-control* target-count) 0) 0 @@ -991,7 +991,3 @@ (talker-spawn-func (-> *talker-speech* 317) *entity-pool* (target-pos 0) (the-as region #f)) (none) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/desert/des-burning-bush_REF.gc b/test/decompiler/reference/jak3/levels/desert/des-burning-bush_REF.gc index 8074e7a7a5..2873b6f0fa 100644 --- a/test/decompiler/reference/jak3/levels/desert/des-burning-bush_REF.gc +++ b/test/decompiler/reference/jak3/levels/desert/des-burning-bush_REF.gc @@ -133,7 +133,7 @@ (define *bbush-menu* (new 'static 'bbush-menu :title-text (text-id text-0624) - :req-text (text-id text-0860) + :req-text (text-id bring-sand-shark-heat-seeker-dust-demon-desert-screamer) :req-check (lambda () (case (-> *game-info* current-vehicle) (((vehicle-type-u8 v-snake) (vehicle-type-u8 v-fox) (vehicle-type-u8 v-mirage) (vehicle-type-u8 v-x-ride)) @@ -341,7 +341,7 @@ ) ) (print-game-text - (lookup-text! *common-text* (text-id text-085f) #f) + (lookup-text! *common-text* (text-id bring-sand-shark) #f) s5-1 #f 44 diff --git a/test/decompiler/reference/jak3/levels/desert/des-bush_REF.gc b/test/decompiler/reference/jak3/levels/desert/des-bush_REF.gc index e2dac8d09a..e6966d87b3 100644 --- a/test/decompiler/reference/jak3/levels/desert/des-bush_REF.gc +++ b/test/decompiler/reference/jak3/levels/desert/des-bush_REF.gc @@ -1545,7 +1545,7 @@ (gp-1 (clear (-> this strings 1 text))) (s4-0 "~S") ) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-07f6) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id kills) #f)) (s5-0 gp-1 s4-0 *temp-string*) ) 0 @@ -3225,7 +3225,3 @@ #f ) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/desert/wvehicle/wvehicle-util_REF.gc b/test/decompiler/reference/jak3/levels/desert/wvehicle/wvehicle-util_REF.gc index e546700f2a..33c6149cba 100644 --- a/test/decompiler/reference/jak3/levels/desert/wvehicle/wvehicle-util_REF.gc +++ b/test/decompiler/reference/jak3/levels/desert/wvehicle/wvehicle-util_REF.gc @@ -243,7 +243,7 @@ ) (set! (-> gp-0 flags) (font-flags shadow kerning large)) (print-game-text - (lookup-text! *common-text* (text-id text-0779) #f) + (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 44 @@ -316,13 +316,7 @@ (let ((a0-12 gp-0)) (set! (-> a0-12 color) (font-color default)) ) - (print-game-text - (lookup-text! *common-text* (text-id text-0887) #f) - gp-0 - #f - 44 - (bucket-id hud-draw-hud-alpha) - ) + (print-game-text (lookup-text! *common-text* (text-id locked) #f) gp-0 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) 0 diff --git a/test/decompiler/reference/jak3/levels/factory/factory-boss-scenes_REF.gc b/test/decompiler/reference/jak3/levels/factory/factory-boss-scenes_REF.gc index 0d3290f490..649fe75306 100644 --- a/test/decompiler/reference/jak3/levels/factory/factory-boss-scenes_REF.gc +++ b/test/decompiler/reference/jak3/levels/factory/factory-boss-scenes_REF.gc @@ -64,7 +64,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryd) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -876,7 +876,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -2198,7 +2198,3 @@ (:next-launcher 4594) ) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/factory/factory-scenes_REF.gc b/test/decompiler/reference/jak3/levels/factory/factory-scenes_REF.gc index f82be00910..46c818e9d9 100644 --- a/test/decompiler/reference/jak3/levels/factory/factory-scenes_REF.gc +++ b/test/decompiler/reference/jak3/levels/factory/factory-scenes_REF.gc @@ -570,7 +570,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryd) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -588,7 +588,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -691,7 +691,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryc) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -710,7 +710,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -799,7 +799,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryc) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -818,7 +818,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -907,7 +907,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryc) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -926,7 +926,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -1015,7 +1015,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-factoryc) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -1034,7 +1034,7 @@ ((the-as (function level none) #f) (the-as level (-> gp-0 mood-context))) ) (set! (-> gp-0 info mood-func) 'update-mood-factory) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -1581,7 +1581,3 @@ ;; failed to figure out what this is: (set! (-> *part-hellcat-dust-landing-fac-curve-settings* scale-y-scalar) *curve-fac-dust-scale-y*) - - - - diff --git a/test/decompiler/reference/jak3/levels/forest/forest-tasks_REF.gc b/test/decompiler/reference/jak3/levels/forest/forest-tasks_REF.gc index a724832c3f..fdef21c44c 100644 --- a/test/decompiler/reference/jak3/levels/forest/forest-tasks_REF.gc +++ b/test/decompiler/reference/jak3/levels/forest/forest-tasks_REF.gc @@ -676,7 +676,7 @@ ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-default) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (set! (-> *sky-work* disable-day-star) (the-as basic #t)) @@ -825,7 +825,7 @@ ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'default) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (set! (-> *sky-work* disable-day-star) #f) @@ -1015,7 +1015,7 @@ ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-default) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -1114,7 +1114,7 @@ ((the-as (function mood-context symbol) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'default) - (logior! (-> gp-0 info level-flags) (level-flags lf9)) + (logior! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) diff --git a/test/decompiler/reference/jak3/levels/gungame/gungame-manager_REF.gc b/test/decompiler/reference/jak3/levels/gungame/gungame-manager_REF.gc index 347c1f487d..bcac763312 100644 --- a/test/decompiler/reference/jak3/levels/gungame/gungame-manager_REF.gc +++ b/test/decompiler/reference/jak3/levels/gungame/gungame-manager_REF.gc @@ -1497,7 +1497,7 @@ :start-gun 30 :ammo-type 15 :training-task #x84 - :play-text (text-id text-07e7) + :play-text (text-id press-to-play-beam-reflexor-training) :play-button (new 'static 'handle :process #x4000 :u64 #x4000) :give-eggs? #t ) @@ -1515,7 +1515,7 @@ :start-gun 27 :ammo-type 16 :training-task #xa2 - :play-text (text-id text-07e6) + :play-text (text-id press-to-play-wave-concussor-training) :play-button (new 'static 'handle :process #x4000 :u64 #x4000) :give-eggs? #t ) @@ -1533,7 +1533,7 @@ :start-gun 30 :ammo-type 15 :training-task #xa2 - :play-text (text-id text-07e8) + :play-text (text-id wave-concussor-training-ratchet-gun-course) :play-button (new 'static 'handle :process #x8000 :u64 #x8000) :give-eggs? #f ) @@ -1551,7 +1551,7 @@ :start-gun 27 :ammo-type 16 :training-task #xa2 - :play-text (text-id text-07e9) + :play-text (text-id beam-reflexor-training-clank-gun-course) :play-button (new 'static 'handle :process #x8000 :u64 #x8000) :give-eggs? #f ) diff --git a/test/decompiler/reference/jak3/levels/precursor/precura-obs2_REF.gc b/test/decompiler/reference/jak3/levels/precursor/precura-obs2_REF.gc index 744fa21afe..d104361125 100644 --- a/test/decompiler/reference/jak3/levels/precursor/precura-obs2_REF.gc +++ b/test/decompiler/reference/jak3/levels/precursor/precura-obs2_REF.gc @@ -890,7 +890,7 @@ (set! (-> v1-11 scale) 0.9) ) (let ((s5-0 print-game-text)) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-077c) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id press-to-throw-held-objects) #f)) (s5-0 *temp-string* gp-0 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) diff --git a/test/decompiler/reference/jak3/levels/temple/temple-obs2_REF.gc b/test/decompiler/reference/jak3/levels/temple/temple-obs2_REF.gc index dcc697f612..08a49474de 100644 --- a/test/decompiler/reference/jak3/levels/temple/temple-obs2_REF.gc +++ b/test/decompiler/reference/jak3/levels/temple/temple-obs2_REF.gc @@ -556,8 +556,8 @@ (lookup-text! *common-text* (if (or (not (focus-test? *target* gun)) (!= (-> *game-info* gun-type) 27)) - (text-id text-07c3) - (text-id text-0885) + (text-id use-the-wave-concussor) + (text-id hold-to-charge-and-then-release-to-fire-blast) ) #f ) @@ -2274,7 +2274,3 @@ ((method-of-type process-focusable deactivate) (the-as process-focusable this)) (none) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/title/title-obs_REF.gc b/test/decompiler/reference/jak3/levels/title/title-obs_REF.gc index 90450da4cd..58c8a3dafb 100644 --- a/test/decompiler/reference/jak3/levels/title/title-obs_REF.gc +++ b/test/decompiler/reference/jak3/levels/title/title-obs_REF.gc @@ -1584,7 +1584,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.4 - :text-id (text-id text-07bd) + :text-id (text-id museum-jakc) :cloth-reset-time (seconds 0.1) :use-orient-cloth-reset? #f :outtake (new 'static 'boxed-array :type string "jakout01" "jakout02" "jakout03" "jakout04") @@ -1597,7 +1597,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 1.0 - :text-id (text-id text-07c1) + :text-id (text-id museum-ashelin) :outtake (new 'static 'boxed-array :type string "ashout01" "ashout02" @@ -1616,7 +1616,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-07fa) + :text-id (text-id museum-keira) ) (new 'static 'museum-char :skel "skel-kleever-highres" @@ -1626,7 +1626,7 @@ :zoom-min 10240.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-07f7) + :text-id (text-id museum-kleever) :cloth-reset-time (seconds 0.1) :use-orient-cloth-reset? #f ) @@ -1638,7 +1638,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0801) + :text-id (text-id museum-onin) ) (new 'static 'museum-char :skel "skel-ottsel-daxpants" @@ -1648,7 +1648,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07be) + :text-id (text-id museum-daxter) :outtake (new 'static 'boxed-array :type string "daxout01" "daxout02" @@ -1667,7 +1667,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 1.0 - :text-id (text-id text-07bf) + :text-id (text-id museum-pecker) :outtake (new 'static 'boxed-array :type string "pekout01") ) (new 'static 'museum-char @@ -1678,7 +1678,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-07f8) + :text-id (text-id museum-samos) ) (new 'static 'museum-char :skel "skel-seem-highres" @@ -1688,7 +1688,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-07f9) + :text-id (text-id museum-seem) :cloth-reset-time (seconds 0.1) :use-orient-cloth-reset? #t ) @@ -1700,7 +1700,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-07c2) + :text-id (text-id museum-tess) :outtake (new 'static 'boxed-array :type string "tesout01" "tesout02" "tesout03" "tesout04" "tesout05") ) (new 'static 'museum-char @@ -1711,7 +1711,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 1.0 - :text-id (text-id text-07c0) + :text-id (text-id museum-torn) :outtake (new 'static 'boxed-array :type string "torout01" "torout02") ) (new 'static 'museum-char @@ -1722,7 +1722,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0804) + :text-id (text-id museum-cyber-errol) ) (new 'static 'museum-char :skel "skel-jinx-highres" @@ -1732,7 +1732,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-0803) + :text-id (text-id museum-jinx) ) (new 'static 'museum-char :skel "skel-damus-highres" @@ -1742,7 +1742,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0802) + :text-id (text-id museum-damus) :cloth-reset-time (seconds 0.4) :use-orient-cloth-reset? #f ) @@ -1754,7 +1754,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-07fd) + :text-id (text-id museum-sig) ) (new 'static 'museum-char :skel "skel-veger-highres" @@ -1764,7 +1764,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.0 - :text-id (text-id text-0805) + :text-id (text-id museum-veger) :cloth-reset-time (seconds 0.4) :use-orient-cloth-reset? #f ) @@ -1776,7 +1776,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07fb) + :text-id (text-id museum-ottsel-dummy) ) (new 'static 'museum-char :skel "skel-ottsel-leader" @@ -1786,7 +1786,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07fe) + :text-id (text-id museum-ottsel-leader) :cloth-reset-time (seconds 0.1) :use-orient-cloth-reset? #f ) @@ -1798,7 +1798,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07ff) + :text-id (text-id museum-ottsel-surfer) ) (new 'static 'museum-char :skel "skel-ottsel-tess" @@ -1808,7 +1808,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07fc) + :text-id (text-id museum-ottsel-tess) ) (new 'static 'museum-char :skel "skel-ottsel-veger" @@ -1818,7 +1818,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-0800) + :text-id (text-id museum-ottsel-veger) ) ) ) @@ -1921,7 +1921,7 @@ :zoom-min 8192.0 :zoom-max 18432.0 :scale 1.4 - :text-id (text-id text-07bc) + :text-id (text-id museum-jak) :outtake (new 'static 'boxed-array :type string "jakout01" "jakout02" "jakout03" "jakout04") ) (new 'static 'museum-char @@ -1932,7 +1932,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-07be) + :text-id (text-id museum-daxter) :outtake (new 'static 'boxed-array :type string "daxout01" "daxout02" @@ -1952,7 +1952,7 @@ :zoom-min 12288.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0894) + :text-id (text-id museum-vin) :outtake (new 'static 'boxed-array :type string "vinout01" "vinout02" "vinout03") ) (new 'static 'museum-char @@ -1963,7 +1963,7 @@ :zoom-min 12288.0 :zoom-max 28672.0 :scale 1.0 - :text-id (text-id text-0893) + :text-id (text-id museum-krew) :outtake (new 'static 'boxed-array :type string "krwout01" "krwout02" "krwout03" "krwout04" "krwout05") ) (new 'static 'museum-char @@ -1974,7 +1974,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 1.0 - :text-id (text-id text-0830) + :text-id (text-id museum-errol) ) (new 'static 'museum-char :skel "skel-youngsamos-highres" @@ -1984,7 +1984,7 @@ :zoom-min 8192.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-0817) + :text-id (text-id museum-youngsamos) ) (new 'static 'museum-char :skel "skel-kor-highres" @@ -1994,7 +1994,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 1.0 - :text-id (text-id text-082f) + :text-id (text-id museum-kor) ) (new 'static 'museum-char :skel "skel-kid-highres" @@ -2004,7 +2004,7 @@ :zoom-min 4096.0 :zoom-max 12288.0 :scale 1.0 - :text-id (text-id text-082e) + :text-id (text-id museum-kid) ) (new 'static 'museum-char :skel "skel-baron-highres" @@ -2014,7 +2014,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0816) + :text-id (text-id museum-baron) :outtake (new 'static 'boxed-array :type string "barout01" "barout02" "barout03" "barout04" "barout05") ) (new 'static 'museum-char @@ -2025,7 +2025,7 @@ :zoom-min 12288.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0819) + :text-id (text-id museum-red-crimson-guard) ) (new 'static 'museum-char :skel "skel-brutter-highres" @@ -2035,7 +2035,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-0818) + :text-id (text-id museum-brutter) ) (new 'static 'museum-char :skel "skel-crocadog-highres" @@ -2045,7 +2045,7 @@ :zoom-min 12288.0 :zoom-max 16384.0 :scale 1.0 - :text-id (text-id text-082d) + :text-id (text-id museum-crocadog) ) ) ) @@ -2207,7 +2207,7 @@ :zoom-min 4096.0 :zoom-max 18432.0 :scale 1.4 - :text-id (text-id text-07bb) + :text-id (text-id museum-jak-one) ) (new 'static 'museum-char :skel "skel-warrior" @@ -2217,7 +2217,7 @@ :zoom-min 12288.0 :zoom-max 32768.0 :scale 1.0 - :text-id (text-id text-0820) + :text-id (text-id museum-warrior) ) (new 'static 'museum-char :skel "skel-evilsis" @@ -2227,7 +2227,7 @@ :zoom-min 6144.0 :zoom-max 18432.0 :scale 0.8 - :text-id (text-id text-0829) + :text-id (text-id museum-evilsis) ) (new 'static 'museum-char :skel "skel-evilbro" @@ -2236,7 +2236,7 @@ :zoom-min 6144.0 :zoom-max 18432.0 :scale 0.8 - :text-id (text-id text-0828) + :text-id (text-id museum-evilbro) ) (new 'static 'museum-char :skel "skel-bird-lady" @@ -2246,7 +2246,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-0826) + :text-id (text-id museum-bird-lady) ) (new 'static 'museum-char :skel "skel-explorer" @@ -2256,7 +2256,7 @@ :zoom-min 4096.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-082a) + :text-id (text-id museum-explorer) ) (new 'static 'museum-char :skel "skel-billy" @@ -2266,7 +2266,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-0832) + :text-id (text-id museum-billy) ) (new 'static 'museum-char :skel "skel-farmer" @@ -2276,7 +2276,7 @@ :zoom-min 12288.0 :zoom-max 28672.0 :scale 0.8 - :text-id (text-id text-082b) + :text-id (text-id museum-farmer) ) (new 'static 'museum-char :skel "skel-fisher" @@ -2286,7 +2286,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-082c) + :text-id (text-id museum-fisher) ) (new 'static 'museum-char :skel "skel-mayor" @@ -2296,7 +2296,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-081b) + :text-id (text-id museum-mayor) ) (new 'static 'museum-char :skel "skel-minershort" @@ -2306,7 +2306,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-0823) + :text-id (text-id museum-minershort) ) (new 'static 'museum-char :skel "skel-minertall" @@ -2316,7 +2316,7 @@ :zoom-min 8192.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-0824) + :text-id (text-id museum-minertall) ) (new 'static 'museum-char :skel "skel-gambler" @@ -2326,7 +2326,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-0822) + :text-id (text-id museum-gambler) ) (new 'static 'museum-char :skel "skel-ogreboss" @@ -2336,7 +2336,7 @@ :zoom-min 8192.0 :zoom-max 16384.0 :scale 0.1 - :text-id (text-id text-0825) + :text-id (text-id museum-ogreboss) ) (new 'static 'museum-char :skel "skel-sculptor" @@ -2346,7 +2346,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 1.0 - :text-id (text-id text-081d) + :text-id (text-id museum-sculptor) ) (new 'static 'museum-char :skel "skel-redsage" @@ -2356,7 +2356,7 @@ :zoom-min 10240.0 :zoom-max 22528.0 :scale 0.8 - :text-id (text-id text-081c) + :text-id (text-id museum-redsage) ) (new 'static 'museum-char :skel "skel-yellowsage" @@ -2366,7 +2366,7 @@ :zoom-min 10240.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-081f) + :text-id (text-id museum-yellowsage) ) (new 'static 'museum-char :skel "skel-sidekick-human" @@ -2376,7 +2376,7 @@ :zoom-min 4096.0 :zoom-max 16384.0 :scale 0.8 - :text-id (text-id text-081e) + :text-id (text-id museum-sidekick-human) ) (new 'static 'museum-char :skel "skel-geologist" @@ -2386,7 +2386,7 @@ :zoom-min 4096.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-0821) + :text-id (text-id museum-geologist) ) (new 'static 'museum-char :skel "skel-bluesage" @@ -2396,7 +2396,7 @@ :zoom-min 8192.0 :zoom-max 24576.0 :scale 0.8 - :text-id (text-id text-0827) + :text-id (text-id museum-bluesage) ) (new 'static 'museum-char :skel "skel-babak" @@ -2406,7 +2406,7 @@ :zoom-min 12288.0 :zoom-max 22528.0 :scale 0.8 - :text-id (text-id text-0831) + :text-id (text-id museum-babak) ) (new 'static 'museum-char :skel "skel-flutflut" @@ -2416,7 +2416,7 @@ :zoom-min 10240.0 :zoom-max 20480.0 :scale 0.8 - :text-id (text-id text-081a) + :text-id (text-id museum-flutflut) ) ) ) @@ -2538,7 +2538,7 @@ ) (set! (-> gp-0 flags) (font-flags shadow kerning large)) (let ((s5-0 print-game-text)) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-0806) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id credits-starring) #f)) (s5-0 *temp-string* gp-0 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) @@ -2756,7 +2756,3 @@ ) :post target-no-move-post ) - - - - diff --git a/test/decompiler/reference/jak3/levels/wascity/bbush/des-bush-time-chase_REF.gc b/test/decompiler/reference/jak3/levels/wascity/bbush/des-bush-time-chase_REF.gc index 0130807e52..27c564eaba 100644 --- a/test/decompiler/reference/jak3/levels/wascity/bbush/des-bush-time-chase_REF.gc +++ b/test/decompiler/reference/jak3/levels/wascity/bbush/des-bush-time-chase_REF.gc @@ -1573,7 +1573,7 @@ (set! (-> a0-16 color) (-> this strings 1 color)) ) (let ((s4-0 print-game-text)) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-0861) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id extra-time) #f)) (s4-0 *temp-string* s5-3 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) @@ -1621,7 +1621,7 @@ (gp-1 (clear (-> this strings 1 text))) (s4-0 "") ) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-0861) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id extra-time) #f)) *temp-string* (s5-0 gp-1 s4-0) ) @@ -2118,7 +2118,3 @@ 0 (none) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/wascity/palace/waspala-obs_REF.gc b/test/decompiler/reference/jak3/levels/wascity/palace/waspala-obs_REF.gc index e1163208fa..5da0f85be4 100644 --- a/test/decompiler/reference/jak3/levels/wascity/palace/waspala-obs_REF.gc +++ b/test/decompiler/reference/jak3/levels/wascity/palace/waspala-obs_REF.gc @@ -306,7 +306,7 @@ ) (send-event *target* 'end-mode 'grab) (until v1-29 - (draw-text self (text-id text-07c4)) + (draw-text self (text-id hold-to-charge-and-then-release-to-fire-bigger-blast)) (if (< (get-remaining-player-ammo (pickup-type ammo-red)) 60.0) (adjust-player-ammo 500.0 (pickup-type ammo-red)) ) @@ -406,7 +406,3 @@ (transform-post) (go (method-of-object this idle)) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/wascity/wasstadium/arena-scenes_REF.gc b/test/decompiler/reference/jak3/levels/wascity/wasstadium/arena-scenes_REF.gc index feed65e53f..93ee89afc7 100644 --- a/test/decompiler/reference/jak3/levels/wascity/wasstadium/arena-scenes_REF.gc +++ b/test/decompiler/reference/jak3/levels/wascity/wasstadium/arena-scenes_REF.gc @@ -98,7 +98,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-waspala) - (logclear! (-> gp-0 info level-flags) (level-flags lf9)) + (logclear! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -381,7 +381,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-copy-wasstada) - (logclear! (-> gp-0 info level-flags) (level-flags lf9)) + (logclear! (-> gp-0 info level-flags) (level-flags sky)) ) ) (cond @@ -506,7 +506,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-copy-wasstada) - (logclear! (-> gp-0 info level-flags) (level-flags lf9)) + (logclear! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -525,7 +525,7 @@ ((the-as (function mood-context none) #f) (-> gp-0 mood-context)) ) (set! (-> gp-0 info mood-func) 'update-mood-waspala) - (logclear! (-> gp-0 info level-flags) (level-flags lf9)) + (logclear! (-> gp-0 info level-flags) (level-flags sky)) ) ) (none) @@ -1448,7 +1448,3 @@ :on-complete #f ) ) - - - - diff --git a/test/decompiler/reference/jak3/levels/wascity/wasstadium/wasstadc-obs_REF.gc b/test/decompiler/reference/jak3/levels/wascity/wasstadium/wasstadc-obs_REF.gc index faae30451f..c4efc9eb70 100644 --- a/test/decompiler/reference/jak3/levels/wascity/wasstadium/wasstadc-obs_REF.gc +++ b/test/decompiler/reference/jak3/levels/wascity/wasstadium/wasstadc-obs_REF.gc @@ -3187,7 +3187,7 @@ (set! (-> v1-46 scale) 0.7) ) (let ((s4-1 print-game-text)) - (format (clear *temp-string*) (lookup-text! *common-text* (text-id text-085a) #f)) + (format (clear *temp-string*) (lookup-text! *common-text* (text-id dark-bomb-how-to) #f)) (s4-1 *temp-string* s5-1 #f 44 (bucket-id hud-draw-hud-alpha)) ) ) diff --git a/test/decompiler/reference/jak3/levels/wascity/wastrail-graph_REF.gc b/test/decompiler/reference/jak3/levels/wascity/wastrail-graph_REF.gc index edf29d06a3..2c53affdbf 100644 --- a/test/decompiler/reference/jak3/levels/wascity/wastrail-graph_REF.gc +++ b/test/decompiler/reference/jak3/levels/wascity/wastrail-graph_REF.gc @@ -4140,7 +4140,3 @@ ) ) ) - - - - diff --git a/test/offline/framework/execution.cpp b/test/offline/framework/execution.cpp index 93f4579c86..d7464de454 100644 --- a/test/offline/framework/execution.cpp +++ b/test/offline/framework/execution.cpp @@ -12,7 +12,8 @@ std::unordered_map game_name_to_all_types = { {"jak1", "jak1/all-types.gc"}, {"jak2", "jak2/all-types.gc"}, - {"jak3", "jak3/all-types.gc"}}; + {"jak3", "jak3/all-types.gc"}, + {"jakx", "jakx/all-types.gc"}}; void disassemble(OfflineTestDecompiler& dc) { dc.db->process_link_data(*dc.config); diff --git a/test/offline/framework/orchestration.cpp b/test/offline/framework/orchestration.cpp index b8f1e30be2..1ce36e67cd 100644 --- a/test/offline/framework/orchestration.cpp +++ b/test/offline/framework/orchestration.cpp @@ -38,6 +38,9 @@ OfflineTestDecompiler setup_decompiler(const OfflineTestWorkGroup& work, object_files.insert(file.name_in_dgo); // todo, make this work with unique_name } + // skip formatting, adds unnecessary time to the process and the formatter has not been optimized + // yet + dc.config->format_code = false; dc.config->allowed_objects = object_files; // don't try to do this because we can't write the file dc.config->generate_symbol_definition_map = false; diff --git a/third-party/tree-sitter/tree-sitter-opengoal/grammar.js b/third-party/tree-sitter/tree-sitter-opengoal/grammar.js index d9c1365432..3e92cebed2 100644 --- a/third-party/tree-sitter/tree-sitter-opengoal/grammar.js +++ b/third-party/tree-sitter/tree-sitter-opengoal/grammar.js @@ -67,11 +67,11 @@ const INTEGER = // TODO - does OG support negative hex/binary? const NUMBER = - token(prec(10, seq(optional(/[+-]/), + token(seq(optional(/[+-]/), choice(HEX_NUMBER, BINARY_NUMBER, FLOAT, - INTEGER)))); + INTEGER))); const NULL = token('none'); @@ -117,16 +117,19 @@ const CHARACTER = // \u205f => // \u3000 => const SYMBOL_HEAD = - /[^\f\n\r\t \/()\[\]{}"@~^;`\\,:#'0-9\u000B\u001C\u001D\u001E\u001F\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]/; + /[^\f\n\r\t ()\[\]{}"@~^;`\\,:'0-9\u000B\u001C\u001D\u001E\u001F\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]/; const SYMBOL_BODY = choice(SYMBOL_HEAD, - /[:#'0-9]/); + /[:#~'0-9\/]/); const SYMBOL = token(seq(SYMBOL_HEAD, repeat(SYMBOL_BODY))); +// Define a rule specifically for symbols starting with digits followed by non-digit characters +const DIGIT_SYMBOL = token(seq(repeat1(DIGIT), SYMBOL_BODY, repeat(SYMBOL_BODY))); + module.exports = grammar({ name: 'opengoal', @@ -205,7 +208,7 @@ module.exports = grammar({ seq(field('numberOfArgs', $._format_token), '*'), '?', "Newline", - seq(repeat(choice($._format_token, ',')), /[$mrRbBdDgGxXeEoOsStTfHhJjKkLlNnVwWyYzZ]/), + seq(repeat(choice($._format_token, ',')), /[$AmMrRbBdDgGxXeEoOsStTfFHhJjKkLlNnVwWyYzZ]/), ), format_specifier: $ => prec.left(seq( @@ -237,7 +240,9 @@ module.exports = grammar({ BOOLEAN, sym_lit: $ => - seq(choice($._sym_unqualified)), + seq(choice($._sym_unqualified, $._digit_sym)), + + _digit_sym: $ => field('name', alias(DIGIT_SYMBOL, $.sym_name)), _sym_unqualified: $ => field('name', alias(choice("/", SYMBOL), diff --git a/third-party/tree-sitter/tree-sitter-opengoal/grammar.json b/third-party/tree-sitter/tree-sitter-opengoal/grammar.json index 28e204339b..270c861b26 100644 --- a/third-party/tree-sitter/tree-sitter-opengoal/grammar.json +++ b/third-party/tree-sitter/tree-sitter-opengoal/grammar.json @@ -161,110 +161,106 @@ "num_lit": { "type": "TOKEN", "content": { - "type": "PREC", - "value": 10, - "content": { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "PATTERN", - "value": "[+-]" - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "#x" - }, - { - "type": "REPEAT1", - "content": { - "type": "PATTERN", - "value": "[0-9a-fA-F]" - } + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[+-]" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#x" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "#b" - }, - { - "type": "REPEAT1", - "content": { - "type": "PATTERN", - "value": "[0-1]" - } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#b" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-1]" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "REPEAT1", - "content": { - "type": "PATTERN", - "value": "[0-9]" - } - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "." - }, - { - "type": "REPEAT", - "content": { - "type": "PATTERN", - "value": "[0-9]" - } - } - ] - }, - { - "type": "BLANK" - } - ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "REPEAT1", - "content": { - "type": "PATTERN", - "value": "[0-9]" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "REPEAT", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + } + ] + }, + { + "type": "BLANK" } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" } - ] - } - ] - } - ] - } + } + ] + } + ] + } + ] } }, "kwd_lit": { @@ -307,110 +303,106 @@ "content": { "type": "TOKEN", "content": { - "type": "PREC", - "value": 10, - "content": { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "PATTERN", - "value": "[+-]" - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "#x" - }, - { - "type": "REPEAT1", - "content": { - "type": "PATTERN", - "value": "[0-9a-fA-F]" - } + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[+-]" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#x" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "#b" - }, - { - "type": "REPEAT1", - "content": { - "type": "PATTERN", - "value": "[0-1]" - } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "#b" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-1]" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "REPEAT1", - "content": { - "type": "PATTERN", - "value": "[0-9]" - } - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "." - }, - { - "type": "REPEAT", - "content": { - "type": "PATTERN", - "value": "[0-9]" - } - } - ] - }, - { - "type": "BLANK" - } - ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" } - ] - }, - { - "type": "SEQ", - "members": [ - { - "type": "REPEAT1", - "content": { - "type": "PATTERN", - "value": "[0-9]" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "REPEAT", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + } + ] + }, + { + "type": "BLANK" } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" } - ] - } - ] - } - ] - } + } + ] + } + ] + } + ] } }, "named": true, @@ -646,7 +638,7 @@ }, { "type": "PATTERN", - "value": "[$mrRbBdDgGxXeEoOsStTfHhJjKkLlNnVwWyYzZ]" + "value": "[$AmMrRbBdDgGxXeEoOsStTfFHhJjKkLlNnVwWyYzZ]" } ] } @@ -822,11 +814,68 @@ { "type": "SYMBOL", "name": "_sym_unqualified" + }, + { + "type": "SYMBOL", + "name": "_digit_sym" } ] } ] }, + "_digit_sym": { + "type": "FIELD", + "name": "name", + "content": { + "type": "ALIAS", + "content": { + "type": "TOKEN", + "content": { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[^\\f\\n\\r\\t ()\\[\\]{}\"@~^;`\\\\,:'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]" + }, + { + "type": "PATTERN", + "value": "[:#~'0-9\\/]" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[^\\f\\n\\r\\t ()\\[\\]{}\"@~^;`\\\\,:'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]" + }, + { + "type": "PATTERN", + "value": "[:#~'0-9\\/]" + } + ] + } + } + ] + } + }, + "named": true, + "value": "sym_name" + } + }, "_sym_unqualified": { "type": "FIELD", "name": "name", @@ -846,7 +895,7 @@ "members": [ { "type": "PATTERN", - "value": "[^\\f\\n\\r\\t \\/()\\[\\]{}\"@~^;`\\\\,:#'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]" + "value": "[^\\f\\n\\r\\t ()\\[\\]{}\"@~^;`\\\\,:'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]" }, { "type": "REPEAT", @@ -855,11 +904,11 @@ "members": [ { "type": "PATTERN", - "value": "[^\\f\\n\\r\\t \\/()\\[\\]{}\"@~^;`\\\\,:#'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]" + "value": "[^\\f\\n\\r\\t ()\\[\\]{}\"@~^;`\\\\,:'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]" }, { "type": "PATTERN", - "value": "[:#'0-9]" + "value": "[:#~'0-9\\/]" } ] } diff --git a/third-party/tree-sitter/tree-sitter-opengoal/parser.c b/third-party/tree-sitter/tree-sitter-opengoal/parser.c index 5b5b951c0e..0fbc8eb754 100644 --- a/third-party/tree-sitter/tree-sitter-opengoal/parser.c +++ b/third-party/tree-sitter/tree-sitter-opengoal/parser.c @@ -5,15 +5,15 @@ #endif #define LANGUAGE_VERSION 14 -#define STATE_COUNT 60 -#define LARGE_STATE_COUNT 5 -#define SYMBOL_COUNT 72 +#define STATE_COUNT 62 +#define LARGE_STATE_COUNT 4 +#define SYMBOL_COUNT 74 #define ALIAS_COUNT 0 -#define TOKEN_COUNT 50 +#define TOKEN_COUNT 51 #define EXTERNAL_TOKEN_COUNT 0 #define FIELD_COUNT 7 #define MAX_ALIAS_SEQUENCE_LENGTH 4 -#define PRODUCTION_ID_COUNT 12 +#define PRODUCTION_ID_COUNT 13 enum ts_symbol_identifiers { sym__ws = 1, @@ -60,33 +60,35 @@ enum ts_symbol_identifiers { sym_char_lit = 42, sym_null_lit = 43, sym_bool_lit = 44, - anon_sym_SLASH = 45, - aux_sym__sym_unqualified_token1 = 46, - anon_sym_LPAREN = 47, - anon_sym_RPAREN = 48, - anon_sym_COMMA_AT = 49, - sym_source = 50, - sym__gap = 51, - sym__form = 52, - sym_num_lit = 53, - sym__format_token = 54, - sym_format_prefix_parameters = 55, - sym_format_modifiers = 56, - sym_format_directive_type = 57, - sym_format_specifier = 58, - sym_str_lit = 59, - sym_sym_lit = 60, - sym_list_lit = 61, - sym__bare_list_lit = 62, - sym_quoting_lit = 63, - sym_quasi_quoting_lit = 64, - sym_unquote_splicing_lit = 65, - sym_unquoting_lit = 66, - aux_sym_source_repeat1 = 67, - aux_sym_format_modifiers_repeat1 = 68, - aux_sym_str_lit_repeat1 = 69, - aux_sym__bare_list_lit_repeat1 = 70, - aux_sym_quoting_lit_repeat1 = 71, + aux_sym__digit_sym_token1 = 45, + anon_sym_SLASH = 46, + aux_sym__sym_unqualified_token1 = 47, + anon_sym_LPAREN = 48, + anon_sym_RPAREN = 49, + anon_sym_COMMA_AT = 50, + sym_source = 51, + sym__gap = 52, + sym__form = 53, + sym_num_lit = 54, + sym__format_token = 55, + sym_format_prefix_parameters = 56, + sym_format_modifiers = 57, + sym_format_directive_type = 58, + sym_format_specifier = 59, + sym_str_lit = 60, + sym_sym_lit = 61, + sym__digit_sym = 62, + sym_list_lit = 63, + sym__bare_list_lit = 64, + sym_quoting_lit = 65, + sym_quasi_quoting_lit = 66, + sym_unquote_splicing_lit = 67, + sym_unquoting_lit = 68, + aux_sym_source_repeat1 = 69, + aux_sym_format_modifiers_repeat1 = 70, + aux_sym_str_lit_repeat1 = 71, + aux_sym__bare_list_lit_repeat1 = 72, + aux_sym_quoting_lit_repeat1 = 73, }; static const char * const ts_symbol_names[] = { @@ -135,6 +137,7 @@ static const char * const ts_symbol_names[] = { [sym_char_lit] = "char_lit", [sym_null_lit] = "null_lit", [sym_bool_lit] = "bool_lit", + [aux_sym__digit_sym_token1] = "sym_name", [anon_sym_SLASH] = "sym_name", [aux_sym__sym_unqualified_token1] = "sym_name", [anon_sym_LPAREN] = "(", @@ -151,6 +154,7 @@ static const char * const ts_symbol_names[] = { [sym_format_specifier] = "format_specifier", [sym_str_lit] = "str_lit", [sym_sym_lit] = "sym_lit", + [sym__digit_sym] = "_digit_sym", [sym_list_lit] = "list_lit", [sym__bare_list_lit] = "_bare_list_lit", [sym_quoting_lit] = "quoting_lit", @@ -210,8 +214,9 @@ static const TSSymbol ts_symbol_map[] = { [sym_char_lit] = sym_char_lit, [sym_null_lit] = sym_null_lit, [sym_bool_lit] = sym_bool_lit, - [anon_sym_SLASH] = anon_sym_SLASH, - [aux_sym__sym_unqualified_token1] = anon_sym_SLASH, + [aux_sym__digit_sym_token1] = aux_sym__digit_sym_token1, + [anon_sym_SLASH] = aux_sym__digit_sym_token1, + [aux_sym__sym_unqualified_token1] = aux_sym__digit_sym_token1, [anon_sym_LPAREN] = anon_sym_LPAREN, [anon_sym_RPAREN] = anon_sym_RPAREN, [anon_sym_COMMA_AT] = anon_sym_COMMA_AT, @@ -226,6 +231,7 @@ static const TSSymbol ts_symbol_map[] = { [sym_format_specifier] = sym_format_specifier, [sym_str_lit] = sym_str_lit, [sym_sym_lit] = sym_sym_lit, + [sym__digit_sym] = sym__digit_sym, [sym_list_lit] = sym_list_lit, [sym__bare_list_lit] = sym__bare_list_lit, [sym_quoting_lit] = sym_quoting_lit, @@ -420,6 +426,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [aux_sym__digit_sym_token1] = { + .visible = true, + .named = true, + }, [anon_sym_SLASH] = { .visible = true, .named = true, @@ -484,6 +494,10 @@ static const TSSymbolMetadata ts_symbol_metadata[] = { .visible = true, .named = true, }, + [sym__digit_sym] = { + .visible = false, + .named = true, + }, [sym_list_lit] = { .visible = true, .named = true, @@ -553,51 +567,54 @@ static const char * const ts_field_names[] = { static const TSFieldMapSlice ts_field_map_slices[PRODUCTION_ID_COUNT] = { [1] = {.index = 0, .length = 1}, - [2] = {.index = 1, .length = 3}, - [3] = {.index = 4, .length = 2}, - [4] = {.index = 6, .length = 2}, - [5] = {.index = 8, .length = 1}, - [6] = {.index = 9, .length = 2}, - [8] = {.index = 11, .length = 3}, - [9] = {.index = 14, .length = 2}, - [10] = {.index = 16, .length = 1}, + [2] = {.index = 1, .length = 1}, + [3] = {.index = 2, .length = 3}, + [4] = {.index = 5, .length = 2}, + [5] = {.index = 7, .length = 2}, + [6] = {.index = 9, .length = 1}, + [7] = {.index = 10, .length = 2}, + [9] = {.index = 12, .length = 3}, + [10] = {.index = 15, .length = 2}, [11] = {.index = 17, .length = 1}, + [12] = {.index = 18, .length = 1}, }; static const TSFieldMapEntry ts_field_map_entries[] = { [0] = {field_name, 0}, [1] = + {field_name, 0, .inherited = true}, + [2] = {field_close, 0, .inherited = true}, {field_open, 0, .inherited = true}, {field_value, 0, .inherited = true}, - [4] = + [5] = {field_marker, 0}, {field_value, 1}, - [6] = + [7] = {field_close, 1}, {field_open, 0}, - [8] = - {field_value, 0}, [9] = + {field_value, 0}, + [10] = {field_marker, 0}, {field_value, 2}, - [11] = + [12] = {field_close, 2}, {field_open, 0}, {field_value, 1, .inherited = true}, - [14] = + [15] = {field_value, 0, .inherited = true}, {field_value, 1, .inherited = true}, - [16] = - {field_repetitions, 0}, [17] = + {field_repetitions, 0}, + [18] = {field_numberOfArgs, 0}, }; static const TSSymbol ts_alias_sequences[PRODUCTION_ID_COUNT][MAX_ALIAS_SEQUENCE_LENGTH] = { [0] = {0}, - [7] = { + [8] = { [0] = sym_num_lit, }, }; @@ -667,8 +684,52 @@ static const TSStateId ts_primary_state_ids[STATE_COUNT] = { [57] = 57, [58] = 58, [59] = 59, + [60] = 60, + [61] = 61, }; +static inline bool sym_block_comment_character_set_1(int32_t c) { + return (c < '`' + ? (c < ',' + ? (c < '"' + ? (c < 28 + ? (c >= '\t' && c <= '\r') + : c <= ' ') + : (c <= '"' || (c >= '(' && c <= ')'))) + : (c <= ',' || (c < '@' + ? c == ';' + : (c <= '@' || (c >= '[' && c <= '^'))))) + : (c <= '`' || (c < 8200 + ? (c < 5760 + ? (c >= '{' && c <= '}') + : (c <= 5760 || (c >= 8192 && c <= 8198))) + : (c <= 8202 || (c < 8287 + ? (c >= 8232 && c <= 8233) + : (c <= 8287 || c == 12288)))))); +} + +static inline bool sym_block_comment_character_set_2(int32_t c) { + return (c < '`' + ? (c < ',' + ? (c < '"' + ? (c < 28 + ? (c >= '\t' && c <= '\r') + : c <= ' ') + : (c <= '"' || (c >= '(' && c <= ')'))) + : (c <= ',' || (c < '@' + ? c == ';' + : (c <= '@' || (c >= '[' && c <= '^'))))) + : (c <= '`' || (c < 8200 + ? (c < 5760 + ? (c < '}' + ? c == '{' + : c <= '}') + : (c <= 5760 || (c >= 8192 && c <= 8198))) + : (c <= 8202 || (c < 8287 + ? (c >= 8232 && c <= 8233) + : (c <= 8287 || c == 12288)))))); +} + static inline bool sym_kwd_lit_character_set_1(int32_t c) { return (c < '[' ? (c < '(' @@ -722,52 +783,24 @@ static inline bool sym_kwd_lit_character_set_2(int32_t c) { } static inline bool aux_sym_format_directive_type_token11_character_set_1(int32_t c) { - return (c < 'R' - ? (c < 'G' - ? (c < 'B' + return (c < 'V' + ? (c < 'D' + ? (c < 'A' ? c == '$' - : c <= 'E') - : (c <= 'L' || c == 'O')) - : (c <= 'T' || (c < 'r' - ? (c < 'b' - ? (c >= 'X' && c <= 'Z') - : c <= 'o') - : (c <= 't' || (c >= 'x' && c <= 'z'))))); -} - -static inline bool aux_sym_format_directive_type_token11_character_set_2(int32_t c) { - return (c < 'R' - ? (c < 'G' - ? (c < 'B' - ? c == '$' - : c <= 'E') - : (c <= 'L' || c == 'O')) - : (c <= 'T' || (c < 'r' - ? (c < 'b' - ? (c >= 'V' && c <= 'Z') - : c <= 'o') - : (c <= 't' || (c >= 'x' && c <= 'z'))))); -} - -static inline bool aux_sym_format_directive_type_token11_character_set_3(int32_t c) { - return (c < 'R' - ? (c < 'G' - ? (c < 'B' - ? c == '$' - : (c <= 'B' || (c >= 'D' && c <= 'E'))) - : (c <= 'H' || (c < 'N' - ? (c >= 'J' && c <= 'L') - : c <= 'O'))) - : (c <= 'T' || (c < 'j' - ? (c < 'b' - ? (c >= 'V' && c <= 'Z') - : (c <= 'b' || (c >= 'd' && c <= 'h'))) + : c <= 'B') + : (c <= 'H' || (c < 'R' + ? (c >= 'J' && c <= 'O') + : c <= 'T'))) + : (c <= 'Z' || (c < 'j' + ? (c < 'd' + ? c == 'b' + : c <= 'h') : (c <= 'o' || (c < 'w' ? (c >= 'r' && c <= 't') : c <= 'z'))))); } -static inline bool aux_sym__sym_unqualified_token1_character_set_1(int32_t c) { +static inline bool aux_sym__digit_sym_token1_character_set_1(int32_t c) { return (c < '[' ? (c < '(' ? (c < 28 @@ -776,7 +809,7 @@ static inline bool aux_sym__sym_unqualified_token1_character_set_1(int32_t c) { : c <= '\r') : (c <= ' ' || c == '"')) : (c <= ')' || (c < ';' - ? (c < '/' + ? (c < '0' ? c == ',' : c <= '9') : (c <= ';' || c == '@')))) @@ -785,7 +818,7 @@ static inline bool aux_sym__sym_unqualified_token1_character_set_1(int32_t c) { ? (c < '{' ? c == '`' : c <= '{') - : (c <= '~' || c == 5760)) + : (c <= '}' || c == 5760)) : (c <= 8198 || (c < 8287 ? (c < 8232 ? (c >= 8200 && c <= 8202) @@ -793,6 +826,30 @@ static inline bool aux_sym__sym_unqualified_token1_character_set_1(int32_t c) { : (c <= 8287 || c == 12288)))))); } +static inline bool aux_sym__sym_unqualified_token1_character_set_1(int32_t c) { + return (c < '`' + ? (c < '(' + ? (c < 28 + ? (c < '\t' + ? c == 0 + : c <= '\r') + : (c <= ' ' || c == '"')) + : (c <= ')' || (c < '@' + ? (c < ';' + ? c == ',' + : c <= ';') + : (c <= '@' || (c >= '[' && c <= '^'))))) + : (c <= '`' || (c < 8200 + ? (c < 5760 + ? (c < '}' + ? c == '{' + : c <= '}') + : (c <= 5760 || (c >= 8192 && c <= 8198))) + : (c <= 8202 || (c < 8287 + ? (c >= 8232 && c <= 8233) + : (c <= 8287 || c == 12288)))))); +} + static inline bool aux_sym__sym_unqualified_token1_character_set_2(int32_t c) { return (c < '[' ? (c < '(' @@ -802,7 +859,7 @@ static inline bool aux_sym__sym_unqualified_token1_character_set_2(int32_t c) { : c <= '\r') : (c <= ' ' || c == '"')) : (c <= ')' || (c < ';' - ? (c < '/' + ? (c < '0' ? c == ',' : c <= '9') : (c <= ';' || (c >= '@' && c <= 'F'))))) @@ -811,7 +868,33 @@ static inline bool aux_sym__sym_unqualified_token1_character_set_2(int32_t c) { ? (c < '{' ? (c >= '`' && c <= 'f') : c <= '{') - : (c <= '~' || c == 5760)) + : (c <= '}' || c == 5760)) + : (c <= 8198 || (c < 8287 + ? (c < 8232 + ? (c >= 8200 && c <= 8202) + : c <= 8233) + : (c <= 8287 || c == 12288)))))); +} + +static inline bool aux_sym__sym_unqualified_token1_character_set_3(int32_t c) { + return (c < '[' + ? (c < '(' + ? (c < 28 + ? (c < '\t' + ? c == 0 + : c <= '\r') + : (c <= ' ' || c == '"')) + : (c <= ')' || (c < ';' + ? (c < '0' + ? c == ',' + : c <= '1') + : (c <= ';' || c == '@')))) + : (c <= '^' || (c < 8192 + ? (c < '}' + ? (c < '{' + ? c == '`' + : c <= '{') + : (c <= '}' || c == 5760)) : (c <= 8198 || (c < 8287 ? (c < 8232 ? (c >= 8200 && c <= 8202) @@ -819,246 +902,269 @@ static inline bool aux_sym__sym_unqualified_token1_character_set_2(int32_t c) { : (c <= 8287 || c == 12288)))))); } +static inline bool aux_sym__sym_unqualified_token1_character_set_4(int32_t c) { + return (c < '[' + ? (c < '(' + ? (c < 28 + ? (c < '\t' + ? c == 0 + : c <= '\r') + : (c <= ' ' || c == '"')) + : (c <= ')' || (c < ';' + ? c == ',' + : (c <= ';' || c == '@')))) + : (c <= '^' || (c < 8200 + ? (c < 5760 + ? (c < '{' + ? c == '`' + : c <= '}') + : (c <= 5760 || (c >= 8192 && c <= 8198))) + : (c <= 8202 || (c < 8287 + ? (c >= 8232 && c <= 8233) + : (c <= 8287 || c == 12288)))))); +} + static bool ts_lex(TSLexer *lexer, TSStateId state) { START_LEXER(); eof = lexer->eof(lexer); switch (state) { case 0: - if (eof) ADVANCE(23); - if (lookahead == '\n') ADVANCE(68); - if (lookahead == '\r') ADVANCE(68); - if (lookahead == '"') ADVANCE(67); - if (lookahead == '#') ADVANCE(68); - if (lookahead == '%') ADVANCE(68); - if (lookahead == '&') ADVANCE(68); - if (lookahead == '\'') ADVANCE(68); - if (lookahead == '(') ADVANCE(68); - if (lookahead == ')') ADVANCE(68); - if (lookahead == '*') ADVANCE(68); - if (lookahead == ',') ADVANCE(68); - if (lookahead == '/') ADVANCE(68); - if (lookahead == ':') ADVANCE(68); - if (lookahead == ';') ADVANCE(68); - if (lookahead == '?') ADVANCE(68); - if (lookahead == '@') ADVANCE(68); - if (lookahead == 'V') ADVANCE(68); - if (lookahead == '\\') ADVANCE(33); - if (lookahead == '^') ADVANCE(68); - if (lookahead == '_') ADVANCE(68); - if (lookahead == '`') ADVANCE(68); - if (lookahead == 'v') ADVANCE(68); - if (lookahead == '|') ADVANCE(68); - if (lookahead == '~') ADVANCE(43); + if (eof) ADVANCE(22); + if (lookahead == '\n') ADVANCE(74); + if (lookahead == '\r') ADVANCE(74); + if (lookahead == '"') ADVANCE(73); + if (lookahead == '#') ADVANCE(74); + if (lookahead == '%') ADVANCE(74); + if (lookahead == '&') ADVANCE(74); + if (lookahead == '\'') ADVANCE(74); + if (lookahead == '(') ADVANCE(74); + if (lookahead == ')') ADVANCE(74); + if (lookahead == '*') ADVANCE(74); + if (lookahead == ',') ADVANCE(74); + if (lookahead == '/') ADVANCE(74); + if (lookahead == ':') ADVANCE(74); + if (lookahead == ';') ADVANCE(74); + if (lookahead == '?') ADVANCE(74); + if (lookahead == '@') ADVANCE(74); + if (lookahead == 'A') ADVANCE(74); + if (lookahead == 'V') ADVANCE(74); + if (lookahead == '\\') ADVANCE(39); + if (lookahead == '^') ADVANCE(74); + if (lookahead == '_') ADVANCE(74); + if (lookahead == '`') ADVANCE(74); + if (lookahead == 'a') ADVANCE(74); + if (lookahead == 'v') ADVANCE(74); + if (lookahead == '|') ADVANCE(74); + if (lookahead == '~') ADVANCE(49); if (lookahead == '<' || - lookahead == '>') ADVANCE(68); - if (lookahead == 'A' || - lookahead == 'a') ADVANCE(68); + lookahead == '>') ADVANCE(74); if (lookahead == 'C' || - lookahead == 'c') ADVANCE(68); + lookahead == 'c') ADVANCE(74); if (lookahead == 'I' || - lookahead == 'i') ADVANCE(68); + lookahead == 'i') ADVANCE(74); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(68); + lookahead == 'p') ADVANCE(74); if (lookahead == 'W' || - lookahead == 'w') ADVANCE(68); - if (('[' <= lookahead && lookahead <= ']')) ADVANCE(68); - if (('{' <= lookahead && lookahead <= '}')) ADVANCE(68); + lookahead == 'w') ADVANCE(74); + if (('[' <= lookahead && lookahead <= ']')) ADVANCE(74); + if (('{' <= lookahead && lookahead <= '}')) ADVANCE(74); if (lookahead == '$' || - ('B' <= lookahead && lookahead <= 'E') || - ('G' <= lookahead && lookahead <= 'L') || - lookahead == 'N' || - lookahead == 'O' || + ('B' <= lookahead && lookahead <= 'O') || ('R' <= lookahead && lookahead <= 'T') || ('X' <= lookahead && lookahead <= 'o') || ('r' <= lookahead && lookahead <= 't') || - ('x' <= lookahead && lookahead <= 'z')) ADVANCE(68); - if (lookahead != 0) ADVANCE(68); + ('x' <= lookahead && lookahead <= 'z')) ADVANCE(74); + if (lookahead != 0) ADVANCE(74); END_STATE(); case 1: - if (lookahead == '\n') ADVANCE(49); - if (lookahead == '\r') ADVANCE(50); - if (lookahead == '"') ADVANCE(67); - if (lookahead == '#') ADVANCE(36); - if (lookahead == '%') ADVANCE(44); - if (lookahead == '&') ADVANCE(45); - if (lookahead == '\'') ADVANCE(32); - if (lookahead == ',') ADVANCE(37); - if (lookahead == ':') ADVANCE(41); - if (lookahead == ';') ADVANCE(60); - if (lookahead == '?') ADVANCE(63); - if (lookahead == '@') ADVANCE(39); - if (lookahead == 'N') ADVANCE(66); - if (lookahead == 'V') ADVANCE(35); - if (lookahead == '^') ADVANCE(48); - if (lookahead == '_') ADVANCE(55); - if (lookahead == '`') ADVANCE(61); - if (lookahead == 'v') ADVANCE(34); - if (lookahead == '|') ADVANCE(46); - if (lookahead == '~') ADVANCE(43); + if (lookahead == '\n') ADVANCE(55); + if (lookahead == '\r') ADVANCE(56); + if (lookahead == '"') ADVANCE(73); + if (lookahead == '#') ADVANCE(42); + if (lookahead == '%') ADVANCE(50); + if (lookahead == '&') ADVANCE(51); + if (lookahead == '\'') ADVANCE(38); + if (lookahead == ',') ADVANCE(43); + if (lookahead == ':') ADVANCE(47); + if (lookahead == ';') ADVANCE(66); + if (lookahead == '?') ADVANCE(69); + if (lookahead == '@') ADVANCE(45); + if (lookahead == 'A') ADVANCE(60); + if (lookahead == 'N') ADVANCE(72); + if (lookahead == 'V') ADVANCE(41); + if (lookahead == '^') ADVANCE(54); + if (lookahead == '_') ADVANCE(61); + if (lookahead == '`') ADVANCE(67); + if (lookahead == 'a') ADVANCE(60); + if (lookahead == 'v') ADVANCE(40); + if (lookahead == '|') ADVANCE(52); + if (lookahead == '~') ADVANCE(49); if (('+' <= lookahead && lookahead <= '-')) ADVANCE(7); if (lookahead == '<' || - lookahead == '>') ADVANCE(59); - if (lookahead == 'A' || - lookahead == 'a') ADVANCE(54); + lookahead == '>') ADVANCE(65); if (lookahead == 'C' || - lookahead == 'c') ADVANCE(47); + lookahead == 'c') ADVANCE(53); if (lookahead == 'I' || - lookahead == 'i') ADVANCE(52); + lookahead == 'i') ADVANCE(58); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(51); + lookahead == 'p') ADVANCE(57); if (lookahead == 'W' || - lookahead == 'w') ADVANCE(53); + lookahead == 'w') ADVANCE(59); if (lookahead == '[' || - lookahead == ']') ADVANCE(58); - if (('{' <= lookahead && lookahead <= '}')) ADVANCE(57); + lookahead == ']') ADVANCE(64); + if (('{' <= lookahead && lookahead <= '}')) ADVANCE(63); if (lookahead == '(' || - lookahead == ')') ADVANCE(56); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); - if (aux_sym_format_directive_type_token11_character_set_1(lookahead)) ADVANCE(65); + lookahead == ')') ADVANCE(62); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); + if (lookahead == '$' || + ('B' <= lookahead && lookahead <= 'O') || + ('R' <= lookahead && lookahead <= 'T') || + ('X' <= lookahead && lookahead <= 'Z') || + ('b' <= lookahead && lookahead <= 'o') || + ('r' <= lookahead && lookahead <= 't') || + ('x' <= lookahead && lookahead <= 'z')) ADVANCE(71); END_STATE(); case 2: - if (lookahead == '\n') ADVANCE(49); - if (lookahead == '\r') ADVANCE(50); - if (lookahead == '#') ADVANCE(9); - if (lookahead == '%') ADVANCE(44); - if (lookahead == '&') ADVANCE(45); - if (lookahead == '\'') ADVANCE(32); - if (lookahead == ',') ADVANCE(37); - if (lookahead == ':') ADVANCE(41); - if (lookahead == ';') ADVANCE(60); - if (lookahead == '?') ADVANCE(63); - if (lookahead == '@') ADVANCE(39); - if (lookahead == 'N') ADVANCE(66); - if (lookahead == '^') ADVANCE(48); - if (lookahead == '_') ADVANCE(55); - if (lookahead == '`') ADVANCE(61); - if (lookahead == '|') ADVANCE(46); - if (lookahead == '~') ADVANCE(43); + if (lookahead == '\n') ADVANCE(55); + if (lookahead == '\r') ADVANCE(56); + if (lookahead == '#') ADVANCE(8); + if (lookahead == '%') ADVANCE(50); + if (lookahead == '&') ADVANCE(51); + if (lookahead == '\'') ADVANCE(38); + if (lookahead == ',') ADVANCE(43); + if (lookahead == ':') ADVANCE(47); + if (lookahead == ';') ADVANCE(66); + if (lookahead == '?') ADVANCE(69); + if (lookahead == '@') ADVANCE(45); + if (lookahead == 'A') ADVANCE(60); + if (lookahead == 'N') ADVANCE(72); + if (lookahead == '^') ADVANCE(54); + if (lookahead == '_') ADVANCE(61); + if (lookahead == '`') ADVANCE(67); + if (lookahead == 'a') ADVANCE(60); + if (lookahead == '|') ADVANCE(52); + if (lookahead == '~') ADVANCE(49); if (('+' <= lookahead && lookahead <= '-')) ADVANCE(7); if (lookahead == '<' || - lookahead == '>') ADVANCE(59); - if (lookahead == 'A' || - lookahead == 'a') ADVANCE(54); + lookahead == '>') ADVANCE(65); if (lookahead == 'C' || - lookahead == 'c') ADVANCE(47); + lookahead == 'c') ADVANCE(53); if (lookahead == 'I' || - lookahead == 'i') ADVANCE(52); + lookahead == 'i') ADVANCE(58); if (lookahead == 'P' || - lookahead == 'p') ADVANCE(51); + lookahead == 'p') ADVANCE(57); if (lookahead == 'W' || - lookahead == 'w') ADVANCE(53); + lookahead == 'w') ADVANCE(59); if (lookahead == '[' || - lookahead == ']') ADVANCE(58); - if (('{' <= lookahead && lookahead <= '}')) ADVANCE(57); + lookahead == ']') ADVANCE(64); + if (('{' <= lookahead && lookahead <= '}')) ADVANCE(63); if (lookahead == '(' || - lookahead == ')') ADVANCE(56); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); - if (aux_sym_format_directive_type_token11_character_set_2(lookahead)) ADVANCE(65); + lookahead == ')') ADVANCE(62); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); + if (lookahead == '$' || + ('B' <= lookahead && lookahead <= 'O') || + ('R' <= lookahead && lookahead <= 'T') || + ('V' <= lookahead && lookahead <= 'Z') || + ('b' <= lookahead && lookahead <= 'o') || + ('r' <= lookahead && lookahead <= 't') || + ('x' <= lookahead && lookahead <= 'z')) ADVANCE(71); END_STATE(); case 3: - if (lookahead == '"') ADVANCE(67); - if (lookahead == '\\') ADVANCE(19); - if (lookahead == '~') ADVANCE(43); - if (lookahead != 0) ADVANCE(68); + if (lookahead == '"') ADVANCE(73); + if (lookahead == '\\') ADVANCE(18); + if (lookahead == '~') ADVANCE(49); + if (lookahead != 0) ADVANCE(74); END_STATE(); case 4: - if (lookahead == '#') ADVANCE(21); + if (lookahead == '#') ADVANCE(20); if (lookahead == '|') ADVANCE(5); if (lookahead != 0) ADVANCE(4); END_STATE(); case 5: - if (lookahead == '#') ADVANCE(26); + if (lookahead == '#') ADVANCE(25); if (lookahead != 0) ADVANCE(4); END_STATE(); case 6: - if (lookahead == '#') ADVANCE(9); - if (lookahead == '%') ADVANCE(44); - if (lookahead == '&') ADVANCE(45); - if (lookahead == '\'') ADVANCE(32); - if (lookahead == '*') ADVANCE(62); - if (lookahead == ',') ADVANCE(37); - if (lookahead == ':') ADVANCE(41); - if (lookahead == '@') ADVANCE(39); - if (lookahead == '|') ADVANCE(46); - if (lookahead == '~') ADVANCE(43); + if (lookahead == '#') ADVANCE(8); + if (lookahead == '%') ADVANCE(50); + if (lookahead == '&') ADVANCE(51); + if (lookahead == '\'') ADVANCE(38); + if (lookahead == '*') ADVANCE(68); + if (lookahead == ',') ADVANCE(43); + if (lookahead == ':') ADVANCE(47); + if (lookahead == '@') ADVANCE(45); + if (lookahead == '|') ADVANCE(52); + if (lookahead == '~') ADVANCE(49); if (('+' <= lookahead && lookahead <= '-')) ADVANCE(7); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); - if (aux_sym_format_directive_type_token11_character_set_3(lookahead)) ADVANCE(65); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); + if (aux_sym_format_directive_type_token11_character_set_1(lookahead)) ADVANCE(71); END_STATE(); case 7: - if (lookahead == '#') ADVANCE(9); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); + if (lookahead == '#') ADVANCE(8); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); END_STATE(); case 8: - if (lookahead == '\\') ADVANCE(20); - if (lookahead == 'b') ADVANCE(15); - if (lookahead == 'f' || - lookahead == 't') ADVANCE(73); - if (lookahead == 'x') ADVANCE(16); - if (lookahead == '|') ADVANCE(4); + if (lookahead == 'b') ADVANCE(14); + if (lookahead == 'x') ADVANCE(15); END_STATE(); case 9: - if (lookahead == 'b') ADVANCE(15); - if (lookahead == 'x') ADVANCE(16); + if (lookahead == 'e') ADVANCE(70); END_STATE(); case 10: - if (lookahead == 'e') ADVANCE(64); + if (lookahead == 'i') ADVANCE(12); END_STATE(); case 11: - if (lookahead == 'i') ADVANCE(13); + if (lookahead == 'l') ADVANCE(10); END_STATE(); case 12: - if (lookahead == 'l') ADVANCE(11); + if (lookahead == 'n') ADVANCE(9); END_STATE(); case 13: - if (lookahead == 'n') ADVANCE(10); + if (lookahead == 'w') ADVANCE(11); END_STATE(); case 14: - if (lookahead == 'w') ADVANCE(12); - END_STATE(); - case 15: if (lookahead == '0' || - lookahead == '1') ADVANCE(28); + lookahead == '1') ADVANCE(30); END_STATE(); - case 16: + case 15: if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(30); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(32); + END_STATE(); + case 16: + if (!sym_kwd_lit_character_set_1(lookahead)) ADVANCE(37); END_STATE(); case 17: - if (!sym_kwd_lit_character_set_1(lookahead)) ADVANCE(31); + if (lookahead != 0 && + lookahead != '\n') ADVANCE(39); END_STATE(); case 18: if (lookahead != 0 && - lookahead != '\n') ADVANCE(33); + lookahead != '\n') ADVANCE(75); END_STATE(); case 19: if (lookahead != 0 && - lookahead != '\n') ADVANCE(69); + lookahead != '\\') ADVANCE(76); + if (lookahead == '\\') ADVANCE(77); END_STATE(); case 20: - if (lookahead != 0 && - lookahead != '\\') ADVANCE(70); - if (lookahead == '\\') ADVANCE(71); - END_STATE(); - case 21: if (lookahead != 0 && lookahead != '|') ADVANCE(4); END_STATE(); - case 22: - if (eof) ADVANCE(23); - if (lookahead == '"') ADVANCE(67); - if (lookahead == '#') ADVANCE(8); - if (lookahead == '\'') ADVANCE(32); - if (lookahead == '(') ADVANCE(83); - if (lookahead == ')') ADVANCE(84); - if (lookahead == ',') ADVANCE(38); - if (lookahead == '/') ADVANCE(74); - if (lookahead == ':') ADVANCE(17); - if (lookahead == ';') ADVANCE(25); - if (lookahead == '`') ADVANCE(61); - if (lookahead == 'n') ADVANCE(79); - if (('+' <= lookahead && lookahead <= '-')) ADVANCE(75); + case 21: + if (eof) ADVANCE(22); + if (lookahead == '"') ADVANCE(73); + if (lookahead == '#') ADVANCE(85); + if (lookahead == '\'') ADVANCE(38); + if (lookahead == '(') ADVANCE(94); + if (lookahead == ')') ADVANCE(95); + if (lookahead == ',') ADVANCE(44); + if (lookahead == '/') ADVANCE(81); + if (lookahead == ':') ADVANCE(16); + if (lookahead == ';') ADVANCE(24); + if (lookahead == '`') ADVANCE(67); + if (lookahead == 'n') ADVANCE(89); + if (('+' <= lookahead && lookahead <= '-')) ADVANCE(82); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); if (('\t' <= lookahead && lookahead <= '\r') || (28 <= lookahead && lookahead <= ' ') || @@ -1068,18 +1174,18 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 8232 || lookahead == 8233 || lookahead == 8287 || - lookahead == 12288) ADVANCE(24); + lookahead == 12288) ADVANCE(23); if (lookahead != 0 && lookahead != '@' && (lookahead < '[' || '^' < lookahead) && lookahead != '{' && lookahead != '}' && - lookahead != '~') ADVANCE(82); + lookahead != '~') ADVANCE(93); END_STATE(); - case 23: + case 22: ACCEPT_TOKEN(ts_builtin_sym_end); END_STATE(); - case 24: + case 23: ACCEPT_TOKEN(sym__ws); if (('\t' <= lookahead && lookahead <= '\r') || (28 <= lookahead && lookahead <= ' ') || @@ -1089,234 +1195,308 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { lookahead == 8232 || lookahead == 8233 || lookahead == 8287 || - lookahead == 12288) ADVANCE(24); + lookahead == 12288) ADVANCE(23); END_STATE(); - case 25: + case 24: ACCEPT_TOKEN(sym_comment); if (lookahead != 0 && - lookahead != '\n') ADVANCE(25); + lookahead != '\n') ADVANCE(24); + END_STATE(); + case 25: + ACCEPT_TOKEN(sym_block_comment); END_STATE(); case 26: ACCEPT_TOKEN(sym_block_comment); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); case 27: ACCEPT_TOKEN(aux_sym_num_lit_token1); - if (lookahead == '.') ADVANCE(29); + if (lookahead == '.') ADVANCE(35); + if (!aux_sym__digit_sym_token1_character_set_1(lookahead)) ADVANCE(80); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); END_STATE(); case 28: ACCEPT_TOKEN(aux_sym_num_lit_token1); - if (lookahead == '0' || - lookahead == '1') ADVANCE(28); + if (lookahead == '.') ADVANCE(31); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(28); END_STATE(); case 29: ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (lookahead == '.') ADVANCE(34); + if (!aux_sym__digit_sym_token1_character_set_1(lookahead)) ADVANCE(93); if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); END_STATE(); case 30: + ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (lookahead == '0' || + lookahead == '1') ADVANCE(30); + END_STATE(); + case 31: + ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(31); + END_STATE(); + case 32: ACCEPT_TOKEN(aux_sym_num_lit_token1); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(30); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(32); END_STATE(); - case 31: + case 33: + ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (!aux_sym__sym_unqualified_token1_character_set_2(lookahead)) ADVANCE(93); + if (('0' <= lookahead && lookahead <= '9') || + ('A' <= lookahead && lookahead <= 'F') || + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(33); + END_STATE(); + case 34: + ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (!aux_sym__digit_sym_token1_character_set_1(lookahead)) ADVANCE(93); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(34); + END_STATE(); + case 35: + ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (!aux_sym__digit_sym_token1_character_set_1(lookahead)) ADVANCE(80); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(35); + END_STATE(); + case 36: + ACCEPT_TOKEN(aux_sym_num_lit_token1); + if (!aux_sym__sym_unqualified_token1_character_set_3(lookahead)) ADVANCE(93); + if (lookahead == '0' || + lookahead == '1') ADVANCE(36); + END_STATE(); + case 37: ACCEPT_TOKEN(sym_kwd_lit); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(31); + if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(37); END_STATE(); - case 32: + case 38: ACCEPT_TOKEN(anon_sym_SQUOTE); END_STATE(); - case 33: + case 39: ACCEPT_TOKEN(aux_sym__format_token_token1); END_STATE(); - case 34: + case 40: ACCEPT_TOKEN(anon_sym_v); END_STATE(); - case 35: + case 41: ACCEPT_TOKEN(anon_sym_V); END_STATE(); - case 36: + case 42: ACCEPT_TOKEN(anon_sym_POUND); - if (lookahead == 'b') ADVANCE(15); - if (lookahead == 'x') ADVANCE(16); + if (lookahead == 'b') ADVANCE(14); + if (lookahead == 'x') ADVANCE(15); END_STATE(); - case 37: + case 43: ACCEPT_TOKEN(anon_sym_COMMA); END_STATE(); - case 38: + case 44: ACCEPT_TOKEN(anon_sym_COMMA); - if (lookahead == '@') ADVANCE(85); + if (lookahead == '@') ADVANCE(96); END_STATE(); - case 39: + case 45: ACCEPT_TOKEN(anon_sym_AT); - if (lookahead == ':') ADVANCE(40); + if (lookahead == ':') ADVANCE(46); END_STATE(); - case 40: + case 46: ACCEPT_TOKEN(anon_sym_AT_COLON); END_STATE(); - case 41: + case 47: ACCEPT_TOKEN(anon_sym_COLON); - if (lookahead == '@') ADVANCE(42); + if (lookahead == '@') ADVANCE(48); END_STATE(); - case 42: + case 48: ACCEPT_TOKEN(anon_sym_COLON_AT); END_STATE(); - case 43: + case 49: ACCEPT_TOKEN(anon_sym_TILDE); END_STATE(); - case 44: + case 50: ACCEPT_TOKEN(anon_sym_PERCENT); END_STATE(); - case 45: + case 51: ACCEPT_TOKEN(anon_sym_AMP); END_STATE(); - case 46: + case 52: ACCEPT_TOKEN(anon_sym_PIPE); END_STATE(); - case 47: + case 53: ACCEPT_TOKEN(aux_sym_format_directive_type_token1); END_STATE(); - case 48: + case 54: ACCEPT_TOKEN(aux_sym_format_directive_type_token2); END_STATE(); - case 49: + case 55: ACCEPT_TOKEN(anon_sym_LF); END_STATE(); - case 50: + case 56: ACCEPT_TOKEN(anon_sym_CR); END_STATE(); - case 51: + case 57: ACCEPT_TOKEN(aux_sym_format_directive_type_token3); END_STATE(); - case 52: + case 58: ACCEPT_TOKEN(aux_sym_format_directive_type_token4); END_STATE(); - case 53: + case 59: ACCEPT_TOKEN(aux_sym_format_directive_type_token5); END_STATE(); - case 54: + case 60: ACCEPT_TOKEN(aux_sym_format_directive_type_token6); END_STATE(); - case 55: + case 61: ACCEPT_TOKEN(anon_sym__); END_STATE(); - case 56: + case 62: ACCEPT_TOKEN(aux_sym_format_directive_type_token7); END_STATE(); - case 57: + case 63: ACCEPT_TOKEN(aux_sym_format_directive_type_token8); END_STATE(); - case 58: + case 64: ACCEPT_TOKEN(aux_sym_format_directive_type_token9); END_STATE(); - case 59: + case 65: ACCEPT_TOKEN(aux_sym_format_directive_type_token10); END_STATE(); - case 60: + case 66: ACCEPT_TOKEN(anon_sym_SEMI); END_STATE(); - case 61: + case 67: ACCEPT_TOKEN(anon_sym_BQUOTE); END_STATE(); - case 62: + case 68: ACCEPT_TOKEN(anon_sym_STAR); END_STATE(); - case 63: + case 69: ACCEPT_TOKEN(anon_sym_QMARK); END_STATE(); - case 64: + case 70: ACCEPT_TOKEN(anon_sym_Newline); END_STATE(); - case 65: + case 71: ACCEPT_TOKEN(aux_sym_format_directive_type_token11); END_STATE(); - case 66: + case 72: ACCEPT_TOKEN(aux_sym_format_directive_type_token11); - if (lookahead == 'e') ADVANCE(14); + if (lookahead == 'e') ADVANCE(13); END_STATE(); - case 67: + case 73: ACCEPT_TOKEN(anon_sym_DQUOTE); END_STATE(); - case 68: + case 74: ACCEPT_TOKEN(aux_sym_str_lit_token1); if (lookahead != 0 && lookahead != '"' && lookahead != '\\' && - lookahead != '~') ADVANCE(68); + lookahead != '~') ADVANCE(74); END_STATE(); - case 69: + case 75: ACCEPT_TOKEN(aux_sym_str_lit_token2); END_STATE(); - case 70: + case 76: ACCEPT_TOKEN(sym_char_lit); END_STATE(); - case 71: + case 77: ACCEPT_TOKEN(sym_char_lit); if (lookahead == 'n' || lookahead == 's' || - lookahead == 't') ADVANCE(70); + lookahead == 't') ADVANCE(76); END_STATE(); - case 72: + case 78: ACCEPT_TOKEN(sym_null_lit); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); - case 73: + case 79: ACCEPT_TOKEN(sym_bool_lit); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); - case 74: + case 80: + ACCEPT_TOKEN(aux_sym__digit_sym_token1); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(80); + END_STATE(); + case 81: ACCEPT_TOKEN(anon_sym_SLASH); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); - case 75: + case 82: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == '#') ADVANCE(76); - if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(82); - if (('0' <= lookahead && lookahead <= '9')) ADVANCE(27); + if (lookahead == '#') ADVANCE(86); + if (!aux_sym__digit_sym_token1_character_set_1(lookahead)) ADVANCE(93); + if (('0' <= lookahead && lookahead <= '9')) ADVANCE(29); END_STATE(); - case 76: + case 83: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == 'b') ADVANCE(80); - if (lookahead == 'x') ADVANCE(81); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + if (lookahead == '#') ADVANCE(90); + if (!aux_sym__sym_unqualified_token1_character_set_4(lookahead)) ADVANCE(83); + if (lookahead == '|') ADVANCE(84); + if (sym_block_comment_character_set_1(lookahead)) ADVANCE(4); END_STATE(); - case 77: + case 84: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == 'e') ADVANCE(72); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + if (lookahead == '#') ADVANCE(26); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(83); + if (sym_block_comment_character_set_2(lookahead)) ADVANCE(4); END_STATE(); - case 78: + case 85: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == 'n') ADVANCE(77); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + if (lookahead == '\\') ADVANCE(19); + if (lookahead == 'b') ADVANCE(92); + if (lookahead == 'f' || + lookahead == 't') ADVANCE(79); + if (lookahead == 'x') ADVANCE(91); + if (lookahead == '|') ADVANCE(83); + if (!aux_sym__sym_unqualified_token1_character_set_4(lookahead)) ADVANCE(93); END_STATE(); - case 79: + case 86: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == 'o') ADVANCE(78); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + if (lookahead == 'b') ADVANCE(92); + if (lookahead == 'x') ADVANCE(91); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); - case 80: + case 87: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (lookahead == '0' || - lookahead == '1') ADVANCE(28); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + if (lookahead == 'e') ADVANCE(78); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); - case 81: + case 88: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + if (lookahead == 'n') ADVANCE(87); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); + END_STATE(); + case 89: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (!aux_sym__sym_unqualified_token1_character_set_2(lookahead)) ADVANCE(82); + if (lookahead == 'o') ADVANCE(88); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); + END_STATE(); + case 90: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + if (lookahead == '|') ADVANCE(93); + if (!aux_sym__sym_unqualified_token1_character_set_4(lookahead)) ADVANCE(83); + if (sym_block_comment_character_set_1(lookahead)) ADVANCE(4); + END_STATE(); + case 91: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + if (!aux_sym__sym_unqualified_token1_character_set_2(lookahead)) ADVANCE(93); if (('0' <= lookahead && lookahead <= '9') || ('A' <= lookahead && lookahead <= 'F') || - ('a' <= lookahead && lookahead <= 'f')) ADVANCE(30); + ('a' <= lookahead && lookahead <= 'f')) ADVANCE(33); END_STATE(); - case 82: + case 92: ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); - if (!sym_kwd_lit_character_set_2(lookahead)) ADVANCE(82); + if (!aux_sym__sym_unqualified_token1_character_set_3(lookahead)) ADVANCE(93); + if (lookahead == '0' || + lookahead == '1') ADVANCE(36); END_STATE(); - case 83: - ACCEPT_TOKEN(anon_sym_LPAREN); + case 93: + ACCEPT_TOKEN(aux_sym__sym_unqualified_token1); + if (!aux_sym__sym_unqualified_token1_character_set_1(lookahead)) ADVANCE(93); END_STATE(); - case 84: + case 94: + ACCEPT_TOKEN(anon_sym_LPAREN); + END_STATE(); + case 95: ACCEPT_TOKEN(anon_sym_RPAREN); END_STATE(); - case 85: + case 96: ACCEPT_TOKEN(anon_sym_COMMA_AT); END_STATE(); default: @@ -1326,65 +1506,67 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { static const TSLexMode ts_lex_modes[STATE_COUNT] = { [0] = {.lex_state = 0}, - [1] = {.lex_state = 22}, + [1] = {.lex_state = 21}, [2] = {.lex_state = 1}, [3] = {.lex_state = 1}, [4] = {.lex_state = 1}, [5] = {.lex_state = 2}, - [6] = {.lex_state = 22}, - [7] = {.lex_state = 22}, - [8] = {.lex_state = 2}, - [9] = {.lex_state = 22}, - [10] = {.lex_state = 22}, - [11] = {.lex_state = 22}, - [12] = {.lex_state = 22}, - [13] = {.lex_state = 2}, - [14] = {.lex_state = 22}, - [15] = {.lex_state = 22}, - [16] = {.lex_state = 22}, - [17] = {.lex_state = 22}, - [18] = {.lex_state = 2}, - [19] = {.lex_state = 22}, - [20] = {.lex_state = 22}, - [21] = {.lex_state = 22}, + [6] = {.lex_state = 21}, + [7] = {.lex_state = 21}, + [8] = {.lex_state = 21}, + [9] = {.lex_state = 21}, + [10] = {.lex_state = 21}, + [11] = {.lex_state = 21}, + [12] = {.lex_state = 21}, + [13] = {.lex_state = 21}, + [14] = {.lex_state = 21}, + [15] = {.lex_state = 21}, + [16] = {.lex_state = 21}, + [17] = {.lex_state = 21}, + [18] = {.lex_state = 21}, + [19] = {.lex_state = 2}, + [20] = {.lex_state = 2}, + [21] = {.lex_state = 2}, [22] = {.lex_state = 2}, [23] = {.lex_state = 2}, - [24] = {.lex_state = 22}, - [25] = {.lex_state = 22}, - [26] = {.lex_state = 22}, - [27] = {.lex_state = 22}, - [28] = {.lex_state = 22}, - [29] = {.lex_state = 22}, - [30] = {.lex_state = 22}, - [31] = {.lex_state = 22}, - [32] = {.lex_state = 22}, - [33] = {.lex_state = 22}, - [34] = {.lex_state = 22}, - [35] = {.lex_state = 22}, - [36] = {.lex_state = 22}, - [37] = {.lex_state = 22}, - [38] = {.lex_state = 22}, - [39] = {.lex_state = 22}, - [40] = {.lex_state = 22}, - [41] = {.lex_state = 22}, - [42] = {.lex_state = 6}, - [43] = {.lex_state = 6}, + [24] = {.lex_state = 21}, + [25] = {.lex_state = 21}, + [26] = {.lex_state = 21}, + [27] = {.lex_state = 21}, + [28] = {.lex_state = 21}, + [29] = {.lex_state = 21}, + [30] = {.lex_state = 21}, + [31] = {.lex_state = 21}, + [32] = {.lex_state = 21}, + [33] = {.lex_state = 21}, + [34] = {.lex_state = 21}, + [35] = {.lex_state = 21}, + [36] = {.lex_state = 21}, + [37] = {.lex_state = 21}, + [38] = {.lex_state = 21}, + [39] = {.lex_state = 21}, + [40] = {.lex_state = 21}, + [41] = {.lex_state = 21}, + [42] = {.lex_state = 21}, + [43] = {.lex_state = 21}, [44] = {.lex_state = 6}, [45] = {.lex_state = 6}, [46] = {.lex_state = 6}, - [47] = {.lex_state = 3}, - [48] = {.lex_state = 3}, + [47] = {.lex_state = 6}, + [48] = {.lex_state = 6}, [49] = {.lex_state = 3}, - [50] = {.lex_state = 6}, - [51] = {.lex_state = 3}, + [50] = {.lex_state = 3}, + [51] = {.lex_state = 6}, [52] = {.lex_state = 3}, [53] = {.lex_state = 3}, [54] = {.lex_state = 3}, [55] = {.lex_state = 3}, [56] = {.lex_state = 3}, [57] = {.lex_state = 3}, - [58] = {.lex_state = 0}, - [59] = {.lex_state = 18}, + [58] = {.lex_state = 3}, + [59] = {.lex_state = 3}, + [60] = {.lex_state = 0}, + [61] = {.lex_state = 17}, }; static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { @@ -1428,43 +1610,45 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_RPAREN] = ACTIONS(1), }, [1] = { - [sym_source] = STATE(58), - [sym__gap] = STATE(6), - [sym__form] = STATE(6), - [sym_num_lit] = STATE(6), - [sym_str_lit] = STATE(6), - [sym_sym_lit] = STATE(6), - [sym_list_lit] = STATE(6), - [sym__bare_list_lit] = STATE(33), - [sym_quoting_lit] = STATE(6), - [sym_quasi_quoting_lit] = STATE(6), - [sym_unquote_splicing_lit] = STATE(6), - [sym_unquoting_lit] = STATE(6), - [aux_sym_source_repeat1] = STATE(6), + [sym_source] = STATE(60), + [sym__gap] = STATE(9), + [sym__form] = STATE(9), + [sym_num_lit] = STATE(9), + [sym_str_lit] = STATE(9), + [sym_sym_lit] = STATE(9), + [sym__digit_sym] = STATE(39), + [sym_list_lit] = STATE(9), + [sym__bare_list_lit] = STATE(42), + [sym_quoting_lit] = STATE(9), + [sym_quasi_quoting_lit] = STATE(9), + [sym_unquote_splicing_lit] = STATE(9), + [sym_unquoting_lit] = STATE(9), + [aux_sym_source_repeat1] = STATE(9), [ts_builtin_sym_end] = ACTIONS(3), [sym__ws] = ACTIONS(5), [sym_comment] = ACTIONS(5), - [sym_block_comment] = ACTIONS(5), - [aux_sym_num_lit_token1] = ACTIONS(7), + [sym_block_comment] = ACTIONS(7), + [aux_sym_num_lit_token1] = ACTIONS(9), [sym_kwd_lit] = ACTIONS(5), - [anon_sym_SQUOTE] = ACTIONS(9), - [anon_sym_COMMA] = ACTIONS(11), - [anon_sym_BQUOTE] = ACTIONS(13), - [anon_sym_DQUOTE] = ACTIONS(15), + [anon_sym_SQUOTE] = ACTIONS(11), + [anon_sym_COMMA] = ACTIONS(13), + [anon_sym_BQUOTE] = ACTIONS(15), + [anon_sym_DQUOTE] = ACTIONS(17), [sym_char_lit] = ACTIONS(5), - [sym_null_lit] = ACTIONS(17), - [sym_bool_lit] = ACTIONS(5), - [anon_sym_SLASH] = ACTIONS(19), + [sym_null_lit] = ACTIONS(7), + [sym_bool_lit] = ACTIONS(7), + [aux_sym__digit_sym_token1] = ACTIONS(19), + [anon_sym_SLASH] = ACTIONS(21), [aux_sym__sym_unqualified_token1] = ACTIONS(21), [anon_sym_LPAREN] = ACTIONS(23), [anon_sym_COMMA_AT] = ACTIONS(25), }, [2] = { - [sym__format_token] = STATE(42), + [sym__format_token] = STATE(44), [sym_format_prefix_parameters] = STATE(5), - [sym_format_modifiers] = STATE(13), - [sym_format_directive_type] = STATE(55), - [aux_sym_format_modifiers_repeat1] = STATE(46), + [sym_format_modifiers] = STATE(20), + [sym_format_directive_type] = STATE(53), + [aux_sym_format_modifiers_repeat1] = STATE(47), [aux_sym_num_lit_token1] = ACTIONS(27), [anon_sym_SQUOTE] = ACTIONS(29), [anon_sym_v] = ACTIONS(31), @@ -1500,11 +1684,11 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [anon_sym_DQUOTE] = ACTIONS(45), }, [3] = { - [sym__format_token] = STATE(42), + [sym__format_token] = STATE(44), [sym_format_prefix_parameters] = STATE(5), - [sym_format_modifiers] = STATE(13), - [sym_format_directive_type] = STATE(55), - [aux_sym_format_modifiers_repeat1] = STATE(46), + [sym_format_modifiers] = STATE(20), + [sym_format_directive_type] = STATE(53), + [aux_sym_format_modifiers_repeat1] = STATE(47), [aux_sym_num_lit_token1] = ACTIONS(27), [anon_sym_SQUOTE] = ACTIONS(29), [anon_sym_v] = ACTIONS(31), @@ -1539,65 +1723,33 @@ static const uint16_t ts_parse_table[LARGE_STATE_COUNT][SYMBOL_COUNT] = { [aux_sym_format_directive_type_token11] = ACTIONS(43), [anon_sym_DQUOTE] = ACTIONS(47), }, - [4] = { - [sym__format_token] = STATE(42), - [sym_format_prefix_parameters] = STATE(5), - [sym_format_modifiers] = STATE(13), - [sym_format_directive_type] = STATE(55), - [aux_sym_format_modifiers_repeat1] = STATE(46), - [aux_sym_num_lit_token1] = ACTIONS(27), - [anon_sym_SQUOTE] = ACTIONS(29), - [anon_sym_v] = ACTIONS(31), - [anon_sym_V] = ACTIONS(31), - [anon_sym_POUND] = ACTIONS(33), - [anon_sym_COMMA] = ACTIONS(35), - [anon_sym_AT] = ACTIONS(37), - [anon_sym_AT_COLON] = ACTIONS(39), - [anon_sym_COLON] = ACTIONS(37), - [anon_sym_COLON_AT] = ACTIONS(39), - [anon_sym_TILDE] = ACTIONS(41), - [anon_sym_PERCENT] = ACTIONS(41), - [anon_sym_AMP] = ACTIONS(41), - [anon_sym_PIPE] = ACTIONS(41), - [aux_sym_format_directive_type_token1] = ACTIONS(41), - [aux_sym_format_directive_type_token2] = ACTIONS(41), - [anon_sym_LF] = ACTIONS(41), - [anon_sym_CR] = ACTIONS(41), - [aux_sym_format_directive_type_token3] = ACTIONS(41), - [aux_sym_format_directive_type_token4] = ACTIONS(41), - [aux_sym_format_directive_type_token5] = ACTIONS(41), - [aux_sym_format_directive_type_token6] = ACTIONS(41), - [anon_sym__] = ACTIONS(41), - [aux_sym_format_directive_type_token7] = ACTIONS(41), - [aux_sym_format_directive_type_token8] = ACTIONS(41), - [aux_sym_format_directive_type_token9] = ACTIONS(41), - [aux_sym_format_directive_type_token10] = ACTIONS(41), - [anon_sym_SEMI] = ACTIONS(41), - [anon_sym_BQUOTE] = ACTIONS(41), - [anon_sym_QMARK] = ACTIONS(41), - [anon_sym_Newline] = ACTIONS(41), - [aux_sym_format_directive_type_token11] = ACTIONS(43), - }, }; static const uint16_t ts_small_parse_table[] = { - [0] = 11, + [0] = 14, ACTIONS(27), 1, aux_sym_num_lit_token1, ACTIONS(29), 1, anon_sym_SQUOTE, + ACTIONS(33), 1, + anon_sym_POUND, ACTIONS(35), 1, anon_sym_COMMA, ACTIONS(43), 1, aux_sym_format_directive_type_token11, - STATE(18), 1, + STATE(5), 1, + sym_format_prefix_parameters, + STATE(20), 1, sym_format_modifiers, - STATE(42), 1, + STATE(44), 1, sym__format_token, - STATE(46), 1, + STATE(47), 1, aux_sym_format_modifiers_repeat1, - STATE(52), 1, + STATE(53), 1, sym_format_directive_type, + ACTIONS(31), 2, + anon_sym_v, + anon_sym_V, ACTIONS(37), 2, anon_sym_AT, anon_sym_COLON, @@ -1626,40 +1778,92 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, anon_sym_QMARK, anon_sym_Newline, - [56] = 14, - ACTIONS(7), 1, + [66] = 11, + ACTIONS(27), 1, aux_sym_num_lit_token1, - ACTIONS(9), 1, + ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(11), 1, + ACTIONS(35), 1, anon_sym_COMMA, - ACTIONS(13), 1, + ACTIONS(43), 1, + aux_sym_format_directive_type_token11, + STATE(21), 1, + sym_format_modifiers, + STATE(44), 1, + sym__format_token, + STATE(47), 1, + aux_sym_format_modifiers_repeat1, + STATE(54), 1, + sym_format_directive_type, + ACTIONS(37), 2, + anon_sym_AT, + anon_sym_COLON, + ACTIONS(39), 2, + anon_sym_AT_COLON, + anon_sym_COLON_AT, + ACTIONS(41), 21, + anon_sym_TILDE, + anon_sym_PERCENT, + anon_sym_AMP, + anon_sym_PIPE, + aux_sym_format_directive_type_token1, + aux_sym_format_directive_type_token2, + anon_sym_LF, + anon_sym_CR, + aux_sym_format_directive_type_token3, + aux_sym_format_directive_type_token4, + aux_sym_format_directive_type_token5, + aux_sym_format_directive_type_token6, + anon_sym__, + aux_sym_format_directive_type_token7, + aux_sym_format_directive_type_token8, + aux_sym_format_directive_type_token9, + aux_sym_format_directive_type_token10, + anon_sym_SEMI, anon_sym_BQUOTE, + anon_sym_QMARK, + anon_sym_Newline, + [122] = 18, + ACTIONS(9), 1, + aux_sym_num_lit_token1, + ACTIONS(11), 1, + anon_sym_SQUOTE, + ACTIONS(13), 1, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(49), 1, - ts_builtin_sym_end, - ACTIONS(53), 1, - sym_null_lit, - STATE(33), 1, + ACTIONS(51), 1, + sym_block_comment, + ACTIONS(57), 1, + anon_sym_RPAREN, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - ACTIONS(51), 6, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(49), 2, sym__ws, sym_comment, - sym_block_comment, + ACTIONS(53), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(55), 2, + sym_null_lit, sym_bool_lit, - STATE(7), 11, + STATE(7), 2, sym__gap, + aux_sym__bare_list_lit_repeat1, + STATE(43), 9, sym__form, sym_num_lit, sym_str_lit, @@ -1669,41 +1873,47 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - aux_sym_source_repeat1, - [114] = 14, - ACTIONS(55), 1, - ts_builtin_sym_end, - ACTIONS(60), 1, + [190] = 18, + ACTIONS(62), 1, + sym_block_comment, + ACTIONS(65), 1, aux_sym_num_lit_token1, - ACTIONS(63), 1, + ACTIONS(71), 1, anon_sym_SQUOTE, - ACTIONS(66), 1, + ACTIONS(74), 1, anon_sym_COMMA, - ACTIONS(69), 1, + ACTIONS(77), 1, anon_sym_BQUOTE, - ACTIONS(72), 1, + ACTIONS(80), 1, anon_sym_DQUOTE, - ACTIONS(75), 1, - sym_null_lit, - ACTIONS(78), 1, - anon_sym_SLASH, - ACTIONS(81), 1, - aux_sym__sym_unqualified_token1, - ACTIONS(84), 1, + ACTIONS(86), 1, + aux_sym__digit_sym_token1, + ACTIONS(92), 1, anon_sym_LPAREN, - ACTIONS(87), 1, + ACTIONS(95), 1, + anon_sym_RPAREN, + ACTIONS(97), 1, anon_sym_COMMA_AT, - STATE(33), 1, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - ACTIONS(57), 6, + ACTIONS(59), 2, sym__ws, sym_comment, - sym_block_comment, + ACTIONS(68), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(83), 2, + sym_null_lit, sym_bool_lit, - STATE(7), 11, + ACTIONS(89), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + STATE(7), 2, sym__gap, + aux_sym__bare_list_lit_repeat1, + STATE(43), 9, sym__form, sym_num_lit, sym_str_lit, @@ -1713,76 +1923,47 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - aux_sym_source_repeat1, - [172] = 2, - ACTIONS(92), 3, - anon_sym_AT, - anon_sym_COLON, - aux_sym_format_directive_type_token11, - ACTIONS(90), 26, - aux_sym_num_lit_token1, - anon_sym_SQUOTE, - anon_sym_COMMA, - anon_sym_AT_COLON, - anon_sym_COLON_AT, - anon_sym_TILDE, - anon_sym_PERCENT, - anon_sym_AMP, - anon_sym_PIPE, - aux_sym_format_directive_type_token1, - aux_sym_format_directive_type_token2, - anon_sym_LF, - anon_sym_CR, - aux_sym_format_directive_type_token3, - aux_sym_format_directive_type_token4, - aux_sym_format_directive_type_token5, - aux_sym_format_directive_type_token6, - anon_sym__, - aux_sym_format_directive_type_token7, - aux_sym_format_directive_type_token8, - aux_sym_format_directive_type_token9, - aux_sym_format_directive_type_token10, - anon_sym_SEMI, - anon_sym_BQUOTE, - anon_sym_QMARK, - anon_sym_Newline, - [206] = 16, - ACTIONS(7), 1, - aux_sym_num_lit_token1, + [258] = 18, ACTIONS(9), 1, - anon_sym_SQUOTE, + aux_sym_num_lit_token1, ACTIONS(11), 1, - anon_sym_COMMA, + anon_sym_SQUOTE, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(98), 1, - sym_null_lit, - ACTIONS(100), 1, + ACTIONS(102), 1, + sym_block_comment, + ACTIONS(104), 1, anon_sym_RPAREN, - STATE(33), 1, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(11), 2, - sym__gap, - aux_sym__bare_list_lit_repeat1, - ACTIONS(94), 3, - sym__ws, - sym_comment, - sym_block_comment, - ACTIONS(96), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(53), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(55), 2, + sym_null_lit, sym_bool_lit, - STATE(41), 9, + ACTIONS(100), 2, + sym__ws, + sym_comment, + STATE(6), 2, + sym__gap, + aux_sym__bare_list_lit_repeat1, + STATE(43), 9, sym__form, sym_num_lit, sym_str_lit, @@ -1792,43 +1973,43 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [268] = 16, - ACTIONS(7), 1, - aux_sym_num_lit_token1, + [326] = 15, ACTIONS(9), 1, - anon_sym_SQUOTE, + aux_sym_num_lit_token1, ACTIONS(11), 1, - anon_sym_COMMA, + anon_sym_SQUOTE, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(98), 1, - sym_null_lit, - ACTIONS(104), 1, - anon_sym_RPAREN, - STATE(33), 1, + ACTIONS(106), 1, + ts_builtin_sym_end, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(9), 2, - sym__gap, - aux_sym__bare_list_lit_repeat1, - ACTIONS(96), 3, - sym_kwd_lit, - sym_char_lit, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(110), 3, + sym_block_comment, + sym_null_lit, sym_bool_lit, - ACTIONS(102), 3, + ACTIONS(108), 4, sym__ws, sym_comment, - sym_block_comment, - STATE(41), 9, + sym_kwd_lit, + sym_char_lit, + STATE(10), 11, + sym__gap, sym__form, sym_num_lit, sym_str_lit, @@ -1838,43 +2019,44 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [330] = 16, - ACTIONS(109), 1, + aux_sym_source_repeat1, + [388] = 15, + ACTIONS(112), 1, + ts_builtin_sym_end, + ACTIONS(120), 1, aux_sym_num_lit_token1, - ACTIONS(115), 1, + ACTIONS(123), 1, anon_sym_SQUOTE, - ACTIONS(118), 1, + ACTIONS(126), 1, anon_sym_COMMA, - ACTIONS(121), 1, + ACTIONS(129), 1, anon_sym_BQUOTE, - ACTIONS(124), 1, + ACTIONS(132), 1, anon_sym_DQUOTE, - ACTIONS(127), 1, - sym_null_lit, - ACTIONS(130), 1, - anon_sym_SLASH, - ACTIONS(133), 1, - aux_sym__sym_unqualified_token1, - ACTIONS(136), 1, - anon_sym_LPAREN, - ACTIONS(139), 1, - anon_sym_RPAREN, + ACTIONS(135), 1, + aux_sym__digit_sym_token1, ACTIONS(141), 1, + anon_sym_LPAREN, + ACTIONS(144), 1, anon_sym_COMMA_AT, - STATE(33), 1, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(11), 2, - sym__gap, - aux_sym__bare_list_lit_repeat1, - ACTIONS(106), 3, + ACTIONS(138), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(117), 3, + sym_block_comment, + sym_null_lit, + sym_bool_lit, + ACTIONS(114), 4, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(112), 3, sym_kwd_lit, sym_char_lit, - sym_bool_lit, - STATE(41), 9, + STATE(10), 11, + sym__gap, sym__form, sym_num_lit, sym_str_lit, @@ -1884,41 +2066,46 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [392] = 15, - ACTIONS(7), 1, + aux_sym_source_repeat1, + [450] = 17, + ACTIONS(9), 1, aux_sym_num_lit_token1, - ACTIONS(115), 1, + ACTIONS(11), 1, anon_sym_SQUOTE, - ACTIONS(118), 1, - anon_sym_COMMA, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(148), 1, - sym_null_lit, - STATE(33), 1, + ACTIONS(149), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(29), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(144), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(147), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(146), 3, + ACTIONS(151), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(153), 2, + sym_null_lit, sym_bool_lit, - STATE(31), 9, + STATE(16), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(41), 9, sym__form, sym_num_lit, sym_str_lit, @@ -1928,78 +2115,93 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [451] = 8, - ACTIONS(27), 1, + [515] = 17, + ACTIONS(9), 1, aux_sym_num_lit_token1, - ACTIONS(29), 1, + ACTIONS(11), 1, anon_sym_SQUOTE, - ACTIONS(43), 1, - aux_sym_format_directive_type_token11, - ACTIONS(150), 1, + ACTIONS(13), 1, anon_sym_COMMA, + ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, + anon_sym_DQUOTE, + ACTIONS(19), 1, + aux_sym__digit_sym_token1, + ACTIONS(23), 1, + anon_sym_LPAREN, + ACTIONS(25), 1, + anon_sym_COMMA_AT, + ACTIONS(157), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, STATE(42), 1, - sym__format_token, - STATE(50), 1, - aux_sym_format_modifiers_repeat1, - STATE(52), 1, - sym_format_directive_type, - ACTIONS(41), 21, - anon_sym_TILDE, - anon_sym_PERCENT, - anon_sym_AMP, - anon_sym_PIPE, - aux_sym_format_directive_type_token1, - aux_sym_format_directive_type_token2, - anon_sym_LF, - anon_sym_CR, - aux_sym_format_directive_type_token3, - aux_sym_format_directive_type_token4, - aux_sym_format_directive_type_token5, - aux_sym_format_directive_type_token6, - anon_sym__, - aux_sym_format_directive_type_token7, - aux_sym_format_directive_type_token8, - aux_sym_format_directive_type_token9, - aux_sym_format_directive_type_token10, - anon_sym_SEMI, - anon_sym_BQUOTE, - anon_sym_QMARK, - anon_sym_Newline, - [496] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, + sym__bare_list_lit, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(155), 2, + sym__ws, + sym_comment, + ACTIONS(159), 2, + sym_kwd_lit, + sym_char_lit, + ACTIONS(161), 2, + sym_null_lit, + sym_bool_lit, + STATE(17), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(37), 9, + sym__form, + sym_num_lit, + sym_str_lit, + sym_sym_lit, + sym_list_lit, + sym_quoting_lit, + sym_quasi_quoting_lit, + sym_unquote_splicing_lit, + sym_unquoting_lit, + [580] = 17, ACTIONS(9), 1, - anon_sym_SQUOTE, + aux_sym_num_lit_token1, ACTIONS(11), 1, - anon_sym_COMMA, + anon_sym_SQUOTE, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(154), 1, - sym_null_lit, - STATE(33), 1, + ACTIONS(165), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(29), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(144), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(163), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(152), 3, + ACTIONS(167), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(169), 2, + sym_null_lit, sym_bool_lit, - STATE(28), 9, + STATE(18), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(40), 9, sym__form, sym_num_lit, sym_str_lit, @@ -2009,41 +2211,45 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [555] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, + [645] = 17, ACTIONS(9), 1, - anon_sym_SQUOTE, + aux_sym_num_lit_token1, ACTIONS(11), 1, - anon_sym_COMMA, + anon_sym_SQUOTE, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(160), 1, - sym_null_lit, - STATE(33), 1, + ACTIONS(173), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(14), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(156), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(171), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(158), 3, + ACTIONS(175), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(177), 2, + sym_null_lit, sym_bool_lit, - STATE(41), 9, + STATE(15), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(30), 9, sym__form, sym_num_lit, sym_str_lit, @@ -2053,41 +2259,45 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [614] = 15, - ACTIONS(7), 1, + [710] = 17, + ACTIONS(9), 1, aux_sym_num_lit_token1, - ACTIONS(113), 1, + ACTIONS(11), 1, anon_sym_SQUOTE, - ACTIONS(116), 1, - anon_sym_COMMA, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(164), 1, - sym_null_lit, - STATE(33), 1, + ACTIONS(181), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(29), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(144), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(179), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(162), 3, + ACTIONS(183), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(185), 2, + sym_null_lit, sym_bool_lit, - STATE(24), 9, + STATE(31), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(34), 9, sym__form, sym_num_lit, sym_str_lit, @@ -2097,41 +2307,45 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [673] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, + [775] = 17, ACTIONS(9), 1, - anon_sym_SQUOTE, + aux_sym_num_lit_token1, ACTIONS(11), 1, - anon_sym_COMMA, + anon_sym_SQUOTE, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(170), 1, - sym_null_lit, - STATE(33), 1, + ACTIONS(181), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(21), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(166), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(179), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(168), 3, + ACTIONS(187), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(189), 2, + sym_null_lit, sym_bool_lit, - STATE(27), 9, + STATE(31), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(24), 9, sym__form, sym_num_lit, sym_str_lit, @@ -2141,78 +2355,45 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [732] = 8, - ACTIONS(27), 1, - aux_sym_num_lit_token1, - ACTIONS(29), 1, - anon_sym_SQUOTE, - ACTIONS(43), 1, - aux_sym_format_directive_type_token11, - ACTIONS(150), 1, - anon_sym_COMMA, - STATE(42), 1, - sym__format_token, - STATE(50), 1, - aux_sym_format_modifiers_repeat1, - STATE(57), 1, - sym_format_directive_type, - ACTIONS(41), 22, - anon_sym_TILDE, - anon_sym_PERCENT, - anon_sym_AMP, - anon_sym_PIPE, - aux_sym_format_directive_type_token1, - aux_sym_format_directive_type_token2, - anon_sym_LF, - anon_sym_CR, - aux_sym_format_directive_type_token3, - aux_sym_format_directive_type_token4, - aux_sym_format_directive_type_token5, - aux_sym_format_directive_type_token6, - anon_sym__, - aux_sym_format_directive_type_token7, - aux_sym_format_directive_type_token8, - aux_sym_format_directive_type_token9, - aux_sym_format_directive_type_token10, - anon_sym_SEMI, - anon_sym_BQUOTE, - anon_sym_QMARK, - anon_sym_Newline, - [777] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, + [840] = 17, ACTIONS(9), 1, - anon_sym_SQUOTE, + aux_sym_num_lit_token1, ACTIONS(11), 1, - anon_sym_COMMA, + anon_sym_SQUOTE, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(176), 1, - sym_null_lit, - STATE(33), 1, + ACTIONS(181), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(12), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(172), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(179), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(174), 3, + ACTIONS(191), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(193), 2, + sym_null_lit, sym_bool_lit, - STATE(39), 9, + STATE(31), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(32), 9, sym__form, sym_num_lit, sym_str_lit, @@ -2222,41 +2403,45 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [836] = 15, - ACTIONS(7), 1, - aux_sym_num_lit_token1, + [905] = 17, ACTIONS(9), 1, - anon_sym_SQUOTE, + aux_sym_num_lit_token1, ACTIONS(11), 1, - anon_sym_COMMA, + anon_sym_SQUOTE, ACTIONS(13), 1, - anon_sym_BQUOTE, + anon_sym_COMMA, ACTIONS(15), 1, + anon_sym_BQUOTE, + ACTIONS(17), 1, anon_sym_DQUOTE, ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, + aux_sym__digit_sym_token1, ACTIONS(23), 1, anon_sym_LPAREN, ACTIONS(25), 1, anon_sym_COMMA_AT, - ACTIONS(182), 1, - sym_null_lit, - STATE(33), 1, + ACTIONS(181), 1, + sym_block_comment, + STATE(39), 1, + sym__digit_sym, + STATE(42), 1, sym__bare_list_lit, - STATE(16), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(178), 3, + ACTIONS(21), 2, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(179), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(180), 3, + ACTIONS(195), 2, sym_kwd_lit, sym_char_lit, + ACTIONS(197), 2, + sym_null_lit, sym_bool_lit, - STATE(40), 9, + STATE(31), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + STATE(33), 9, sym__form, sym_num_lit, sym_str_lit, @@ -2266,54 +2451,116 @@ static const uint16_t ts_small_parse_table[] = { sym_quasi_quoting_lit, sym_unquote_splicing_lit, sym_unquoting_lit, - [895] = 15, - ACTIONS(7), 1, + [970] = 2, + ACTIONS(201), 3, + anon_sym_AT, + anon_sym_COLON, + aux_sym_format_directive_type_token11, + ACTIONS(199), 26, aux_sym_num_lit_token1, - ACTIONS(9), 1, anon_sym_SQUOTE, - ACTIONS(11), 1, anon_sym_COMMA, - ACTIONS(13), 1, + anon_sym_AT_COLON, + anon_sym_COLON_AT, + anon_sym_TILDE, + anon_sym_PERCENT, + anon_sym_AMP, + anon_sym_PIPE, + aux_sym_format_directive_type_token1, + aux_sym_format_directive_type_token2, + anon_sym_LF, + anon_sym_CR, + aux_sym_format_directive_type_token3, + aux_sym_format_directive_type_token4, + aux_sym_format_directive_type_token5, + aux_sym_format_directive_type_token6, + anon_sym__, + aux_sym_format_directive_type_token7, + aux_sym_format_directive_type_token8, + aux_sym_format_directive_type_token9, + aux_sym_format_directive_type_token10, + anon_sym_SEMI, + anon_sym_BQUOTE, + anon_sym_QMARK, + anon_sym_Newline, + [1004] = 8, + ACTIONS(27), 1, + aux_sym_num_lit_token1, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(43), 1, + aux_sym_format_directive_type_token11, + ACTIONS(203), 1, + anon_sym_COMMA, + STATE(44), 1, + sym__format_token, + STATE(51), 1, + aux_sym_format_modifiers_repeat1, + STATE(54), 1, + sym_format_directive_type, + ACTIONS(41), 21, + anon_sym_TILDE, + anon_sym_PERCENT, + anon_sym_AMP, + anon_sym_PIPE, + aux_sym_format_directive_type_token1, + aux_sym_format_directive_type_token2, + anon_sym_LF, + anon_sym_CR, + aux_sym_format_directive_type_token3, + aux_sym_format_directive_type_token4, + aux_sym_format_directive_type_token5, + aux_sym_format_directive_type_token6, + anon_sym__, + aux_sym_format_directive_type_token7, + aux_sym_format_directive_type_token8, + aux_sym_format_directive_type_token9, + aux_sym_format_directive_type_token10, + anon_sym_SEMI, + anon_sym_BQUOTE, + anon_sym_QMARK, + anon_sym_Newline, + [1049] = 8, + ACTIONS(27), 1, + aux_sym_num_lit_token1, + ACTIONS(29), 1, + anon_sym_SQUOTE, + ACTIONS(43), 1, + aux_sym_format_directive_type_token11, + ACTIONS(203), 1, + anon_sym_COMMA, + STATE(44), 1, + sym__format_token, + STATE(51), 1, + aux_sym_format_modifiers_repeat1, + STATE(59), 1, + sym_format_directive_type, + ACTIONS(41), 21, + anon_sym_TILDE, + anon_sym_PERCENT, + anon_sym_AMP, + anon_sym_PIPE, + aux_sym_format_directive_type_token1, + aux_sym_format_directive_type_token2, + anon_sym_LF, + anon_sym_CR, + aux_sym_format_directive_type_token3, + aux_sym_format_directive_type_token4, + aux_sym_format_directive_type_token5, + aux_sym_format_directive_type_token6, + anon_sym__, + aux_sym_format_directive_type_token7, + aux_sym_format_directive_type_token8, + aux_sym_format_directive_type_token9, + aux_sym_format_directive_type_token10, + anon_sym_SEMI, anon_sym_BQUOTE, - ACTIONS(15), 1, - anon_sym_DQUOTE, - ACTIONS(19), 1, - anon_sym_SLASH, - ACTIONS(21), 1, - aux_sym__sym_unqualified_token1, - ACTIONS(23), 1, - anon_sym_LPAREN, - ACTIONS(25), 1, - anon_sym_COMMA_AT, - ACTIONS(186), 1, - sym_null_lit, - STATE(33), 1, - sym__bare_list_lit, - STATE(29), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(144), 3, - sym__ws, - sym_comment, - sym_block_comment, - ACTIONS(184), 3, - sym_kwd_lit, - sym_char_lit, - sym_bool_lit, - STATE(32), 9, - sym__form, - sym_num_lit, - sym_str_lit, - sym_sym_lit, - sym_list_lit, - sym_quoting_lit, - sym_quasi_quoting_lit, - sym_unquote_splicing_lit, - sym_unquoting_lit, - [954] = 2, - ACTIONS(190), 1, + anon_sym_QMARK, + anon_sym_Newline, + [1094] = 2, + ACTIONS(207), 1, aux_sym_format_directive_type_token11, - ACTIONS(188), 24, + ACTIONS(205), 24, aux_sym_num_lit_token1, anon_sym_SQUOTE, anon_sym_COMMA, @@ -2338,10 +2585,10 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, anon_sym_QMARK, anon_sym_Newline, - [984] = 2, - ACTIONS(194), 1, + [1124] = 2, + ACTIONS(211), 1, aux_sym_format_directive_type_token11, - ACTIONS(192), 24, + ACTIONS(209), 24, aux_sym_num_lit_token1, anon_sym_SQUOTE, anon_sym_COMMA, @@ -2366,408 +2613,471 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_BQUOTE, anon_sym_QMARK, anon_sym_Newline, - [1014] = 2, - ACTIONS(198), 3, + [1154] = 2, + ACTIONS(215), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(196), 15, + ACTIONS(213), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1037] = 2, - ACTIONS(202), 3, + [1178] = 2, + ACTIONS(219), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(200), 15, + ACTIONS(217), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1060] = 2, - ACTIONS(206), 3, + [1202] = 2, + ACTIONS(223), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(204), 15, + ACTIONS(221), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1083] = 2, - ACTIONS(210), 3, + [1226] = 2, + ACTIONS(227), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(208), 15, + ACTIONS(225), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1106] = 2, - ACTIONS(214), 3, + [1250] = 2, + ACTIONS(231), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(212), 15, + ACTIONS(229), 11, ts_builtin_sym_end, sym__ws, sym_comment, + sym_kwd_lit, + anon_sym_SQUOTE, + anon_sym_BQUOTE, + anon_sym_DQUOTE, + sym_char_lit, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA_AT, + [1274] = 2, + ACTIONS(235), 8, sym_block_comment, aux_sym_num_lit_token1, + anon_sym_COMMA, + sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(233), 11, + ts_builtin_sym_end, + sym__ws, + sym_comment, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, + anon_sym_LPAREN, + anon_sym_RPAREN, + anon_sym_COMMA_AT, + [1298] = 2, + ACTIONS(239), 8, + sym_block_comment, + aux_sym_num_lit_token1, + anon_sym_COMMA, + sym_null_lit, sym_bool_lit, + aux_sym__digit_sym_token1, anon_sym_SLASH, + aux_sym__sym_unqualified_token1, + ACTIONS(237), 11, + ts_builtin_sym_end, + sym__ws, + sym_comment, + sym_kwd_lit, + anon_sym_SQUOTE, + anon_sym_BQUOTE, + anon_sym_DQUOTE, + sym_char_lit, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1129] = 4, - STATE(29), 2, - sym__gap, - aux_sym_quoting_lit_repeat1, - ACTIONS(216), 3, + [1322] = 5, + ACTIONS(244), 1, + sym_block_comment, + ACTIONS(241), 2, sym__ws, sym_comment, - sym_block_comment, - ACTIONS(221), 3, + STATE(31), 2, + sym__gap, + aux_sym_quoting_lit_repeat1, + ACTIONS(247), 7, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(219), 10, - aux_sym_num_lit_token1, + ACTIONS(249), 7, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_COMMA_AT, - [1156] = 2, - ACTIONS(225), 3, + [1352] = 2, + ACTIONS(253), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(223), 15, + ACTIONS(251), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1179] = 2, - ACTIONS(229), 3, + [1376] = 2, + ACTIONS(257), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(227), 15, + ACTIONS(255), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1202] = 2, - ACTIONS(233), 3, + [1400] = 2, + ACTIONS(261), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(231), 15, + ACTIONS(259), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1225] = 2, - ACTIONS(237), 3, + [1424] = 2, + ACTIONS(265), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(235), 15, + ACTIONS(263), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1248] = 2, - ACTIONS(241), 3, + [1448] = 2, + ACTIONS(269), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(239), 15, + ACTIONS(267), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1271] = 2, - ACTIONS(245), 3, + [1472] = 2, + ACTIONS(273), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(243), 15, + ACTIONS(271), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1294] = 2, - ACTIONS(249), 3, + [1496] = 2, + ACTIONS(277), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(247), 15, + ACTIONS(275), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1317] = 2, - ACTIONS(253), 3, + [1520] = 2, + ACTIONS(281), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(251), 15, + ACTIONS(279), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1340] = 2, - ACTIONS(257), 3, + [1544] = 2, + ACTIONS(285), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(255), 15, + ACTIONS(283), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1363] = 2, - ACTIONS(261), 3, + [1568] = 2, + ACTIONS(289), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(259), 15, + ACTIONS(287), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1386] = 2, - ACTIONS(265), 3, + [1592] = 2, + ACTIONS(293), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(263), 15, + ACTIONS(291), 11, ts_builtin_sym_end, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1409] = 2, - ACTIONS(269), 3, + [1616] = 2, + ACTIONS(297), 8, + sym_block_comment, + aux_sym_num_lit_token1, anon_sym_COMMA, sym_null_lit, + sym_bool_lit, + aux_sym__digit_sym_token1, + anon_sym_SLASH, aux_sym__sym_unqualified_token1, - ACTIONS(267), 14, + ACTIONS(295), 10, sym__ws, sym_comment, - sym_block_comment, - aux_sym_num_lit_token1, sym_kwd_lit, anon_sym_SQUOTE, anon_sym_BQUOTE, anon_sym_DQUOTE, sym_char_lit, - sym_bool_lit, - anon_sym_SLASH, anon_sym_LPAREN, anon_sym_RPAREN, anon_sym_COMMA_AT, - [1431] = 4, - ACTIONS(277), 1, + [1639] = 4, + ACTIONS(305), 1, anon_sym_STAR, - ACTIONS(273), 2, + ACTIONS(301), 2, anon_sym_AT, anon_sym_COLON, - ACTIONS(275), 4, + ACTIONS(303), 4, anon_sym_TILDE, anon_sym_PERCENT, anon_sym_AMP, anon_sym_PIPE, - ACTIONS(271), 6, + ACTIONS(299), 6, aux_sym_num_lit_token1, anon_sym_SQUOTE, anon_sym_COMMA, anon_sym_AT_COLON, anon_sym_COLON_AT, aux_sym_format_directive_type_token11, - [1453] = 2, - ACTIONS(281), 2, + [1661] = 2, + ACTIONS(309), 2, anon_sym_AT, anon_sym_COLON, - ACTIONS(279), 11, + ACTIONS(307), 11, aux_sym_num_lit_token1, anon_sym_SQUOTE, anon_sym_COMMA, @@ -2779,11 +3089,11 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_STAR, aux_sym_format_directive_type_token11, - [1471] = 2, - ACTIONS(285), 2, + [1679] = 2, + ACTIONS(313), 2, anon_sym_AT, anon_sym_COLON, - ACTIONS(283), 11, + ACTIONS(311), 11, aux_sym_num_lit_token1, anon_sym_SQUOTE, anon_sym_COMMA, @@ -2795,359 +3105,377 @@ static const uint16_t ts_small_parse_table[] = { anon_sym_PIPE, anon_sym_STAR, aux_sym_format_directive_type_token11, - [1489] = 6, - ACTIONS(287), 1, + [1697] = 7, + ACTIONS(27), 1, aux_sym_num_lit_token1, - ACTIONS(290), 1, + ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(293), 1, + ACTIONS(315), 1, anon_sym_COMMA, - ACTIONS(296), 2, + ACTIONS(321), 1, + aux_sym_format_directive_type_token11, + ACTIONS(317), 2, anon_sym_AT, anon_sym_COLON, - STATE(45), 2, - sym__format_token, - aux_sym_format_modifiers_repeat1, - ACTIONS(298), 3, + ACTIONS(319), 2, anon_sym_AT_COLON, anon_sym_COLON_AT, - aux_sym_format_directive_type_token11, - [1512] = 7, - ACTIONS(27), 1, + STATE(48), 2, + sym__format_token, + aux_sym_format_modifiers_repeat1, + [1722] = 6, + ACTIONS(323), 1, aux_sym_num_lit_token1, - ACTIONS(29), 1, + ACTIONS(326), 1, anon_sym_SQUOTE, - ACTIONS(300), 1, + ACTIONS(329), 1, anon_sym_COMMA, - ACTIONS(306), 1, - aux_sym_format_directive_type_token11, - ACTIONS(302), 2, + ACTIONS(332), 2, anon_sym_AT, anon_sym_COLON, - ACTIONS(304), 2, - anon_sym_AT_COLON, - anon_sym_COLON_AT, - STATE(45), 2, + STATE(48), 2, sym__format_token, aux_sym_format_modifiers_repeat1, - [1537] = 4, - ACTIONS(308), 1, + ACTIONS(334), 3, + anon_sym_AT_COLON, + anon_sym_COLON_AT, + aux_sym_format_directive_type_token11, + [1745] = 4, + ACTIONS(336), 1, anon_sym_TILDE, - ACTIONS(311), 1, - anon_sym_DQUOTE, - ACTIONS(313), 2, - aux_sym_str_lit_token1, - aux_sym_str_lit_token2, - STATE(47), 2, - sym_format_specifier, - aux_sym_str_lit_repeat1, - [1552] = 4, - ACTIONS(45), 1, + ACTIONS(339), 1, anon_sym_DQUOTE, - ACTIONS(316), 1, - anon_sym_TILDE, - ACTIONS(318), 2, + ACTIONS(341), 2, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - STATE(47), 2, + STATE(49), 2, sym_format_specifier, aux_sym_str_lit_repeat1, - [1567] = 4, - ACTIONS(320), 1, + [1760] = 4, + ACTIONS(344), 1, anon_sym_TILDE, - ACTIONS(322), 1, + ACTIONS(346), 1, anon_sym_DQUOTE, - ACTIONS(324), 2, + ACTIONS(348), 2, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - STATE(48), 2, + STATE(52), 2, sym_format_specifier, aux_sym_str_lit_repeat1, - [1582] = 5, + [1775] = 5, ACTIONS(27), 1, aux_sym_num_lit_token1, ACTIONS(29), 1, anon_sym_SQUOTE, - ACTIONS(300), 1, + ACTIONS(315), 1, anon_sym_COMMA, - ACTIONS(306), 1, + ACTIONS(321), 1, aux_sym_format_directive_type_token11, - STATE(45), 2, + STATE(48), 2, sym__format_token, aux_sym_format_modifiers_repeat1, - [1599] = 1, - ACTIONS(326), 4, + [1792] = 4, + ACTIONS(45), 1, + anon_sym_DQUOTE, + ACTIONS(350), 1, + anon_sym_TILDE, + ACTIONS(352), 2, + aux_sym_str_lit_token1, + aux_sym_str_lit_token2, + STATE(49), 2, + sym_format_specifier, + aux_sym_str_lit_repeat1, + [1807] = 1, + ACTIONS(354), 4, anon_sym_TILDE, anon_sym_DQUOTE, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - [1606] = 1, - ACTIONS(328), 4, + [1814] = 1, + ACTIONS(356), 4, anon_sym_TILDE, anon_sym_DQUOTE, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - [1613] = 1, - ACTIONS(330), 4, + [1821] = 1, + ACTIONS(358), 4, anon_sym_TILDE, anon_sym_DQUOTE, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - [1620] = 1, - ACTIONS(332), 4, + [1828] = 1, + ACTIONS(360), 4, anon_sym_TILDE, anon_sym_DQUOTE, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - [1627] = 1, - ACTIONS(334), 4, + [1835] = 1, + ACTIONS(362), 4, anon_sym_TILDE, anon_sym_DQUOTE, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - [1634] = 1, - ACTIONS(336), 4, + [1842] = 1, + ACTIONS(364), 4, anon_sym_TILDE, anon_sym_DQUOTE, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - [1641] = 1, - ACTIONS(338), 4, + [1849] = 1, + ACTIONS(366), 4, anon_sym_TILDE, anon_sym_DQUOTE, aux_sym_str_lit_token1, aux_sym_str_lit_token2, - [1648] = 1, - ACTIONS(340), 1, + [1856] = 1, + ACTIONS(368), 1, ts_builtin_sym_end, - [1652] = 1, - ACTIONS(342), 1, + [1860] = 1, + ACTIONS(370), 1, aux_sym__format_token_token1, }; static const uint32_t ts_small_parse_table_map[] = { - [SMALL_STATE(5)] = 0, - [SMALL_STATE(6)] = 56, - [SMALL_STATE(7)] = 114, - [SMALL_STATE(8)] = 172, - [SMALL_STATE(9)] = 206, - [SMALL_STATE(10)] = 268, - [SMALL_STATE(11)] = 330, - [SMALL_STATE(12)] = 392, - [SMALL_STATE(13)] = 451, - [SMALL_STATE(14)] = 496, - [SMALL_STATE(15)] = 555, - [SMALL_STATE(16)] = 614, - [SMALL_STATE(17)] = 673, - [SMALL_STATE(18)] = 732, - [SMALL_STATE(19)] = 777, - [SMALL_STATE(20)] = 836, - [SMALL_STATE(21)] = 895, - [SMALL_STATE(22)] = 954, - [SMALL_STATE(23)] = 984, - [SMALL_STATE(24)] = 1014, - [SMALL_STATE(25)] = 1037, - [SMALL_STATE(26)] = 1060, - [SMALL_STATE(27)] = 1083, - [SMALL_STATE(28)] = 1106, - [SMALL_STATE(29)] = 1129, - [SMALL_STATE(30)] = 1156, - [SMALL_STATE(31)] = 1179, - [SMALL_STATE(32)] = 1202, - [SMALL_STATE(33)] = 1225, - [SMALL_STATE(34)] = 1248, - [SMALL_STATE(35)] = 1271, - [SMALL_STATE(36)] = 1294, - [SMALL_STATE(37)] = 1317, - [SMALL_STATE(38)] = 1340, - [SMALL_STATE(39)] = 1363, - [SMALL_STATE(40)] = 1386, - [SMALL_STATE(41)] = 1409, - [SMALL_STATE(42)] = 1431, - [SMALL_STATE(43)] = 1453, - [SMALL_STATE(44)] = 1471, - [SMALL_STATE(45)] = 1489, - [SMALL_STATE(46)] = 1512, - [SMALL_STATE(47)] = 1537, - [SMALL_STATE(48)] = 1552, - [SMALL_STATE(49)] = 1567, - [SMALL_STATE(50)] = 1582, - [SMALL_STATE(51)] = 1599, - [SMALL_STATE(52)] = 1606, - [SMALL_STATE(53)] = 1613, - [SMALL_STATE(54)] = 1620, - [SMALL_STATE(55)] = 1627, - [SMALL_STATE(56)] = 1634, - [SMALL_STATE(57)] = 1641, - [SMALL_STATE(58)] = 1648, - [SMALL_STATE(59)] = 1652, + [SMALL_STATE(4)] = 0, + [SMALL_STATE(5)] = 66, + [SMALL_STATE(6)] = 122, + [SMALL_STATE(7)] = 190, + [SMALL_STATE(8)] = 258, + [SMALL_STATE(9)] = 326, + [SMALL_STATE(10)] = 388, + [SMALL_STATE(11)] = 450, + [SMALL_STATE(12)] = 515, + [SMALL_STATE(13)] = 580, + [SMALL_STATE(14)] = 645, + [SMALL_STATE(15)] = 710, + [SMALL_STATE(16)] = 775, + [SMALL_STATE(17)] = 840, + [SMALL_STATE(18)] = 905, + [SMALL_STATE(19)] = 970, + [SMALL_STATE(20)] = 1004, + [SMALL_STATE(21)] = 1049, + [SMALL_STATE(22)] = 1094, + [SMALL_STATE(23)] = 1124, + [SMALL_STATE(24)] = 1154, + [SMALL_STATE(25)] = 1178, + [SMALL_STATE(26)] = 1202, + [SMALL_STATE(27)] = 1226, + [SMALL_STATE(28)] = 1250, + [SMALL_STATE(29)] = 1274, + [SMALL_STATE(30)] = 1298, + [SMALL_STATE(31)] = 1322, + [SMALL_STATE(32)] = 1352, + [SMALL_STATE(33)] = 1376, + [SMALL_STATE(34)] = 1400, + [SMALL_STATE(35)] = 1424, + [SMALL_STATE(36)] = 1448, + [SMALL_STATE(37)] = 1472, + [SMALL_STATE(38)] = 1496, + [SMALL_STATE(39)] = 1520, + [SMALL_STATE(40)] = 1544, + [SMALL_STATE(41)] = 1568, + [SMALL_STATE(42)] = 1592, + [SMALL_STATE(43)] = 1616, + [SMALL_STATE(44)] = 1639, + [SMALL_STATE(45)] = 1661, + [SMALL_STATE(46)] = 1679, + [SMALL_STATE(47)] = 1697, + [SMALL_STATE(48)] = 1722, + [SMALL_STATE(49)] = 1745, + [SMALL_STATE(50)] = 1760, + [SMALL_STATE(51)] = 1775, + [SMALL_STATE(52)] = 1792, + [SMALL_STATE(53)] = 1807, + [SMALL_STATE(54)] = 1814, + [SMALL_STATE(55)] = 1821, + [SMALL_STATE(56)] = 1828, + [SMALL_STATE(57)] = 1835, + [SMALL_STATE(58)] = 1842, + [SMALL_STATE(59)] = 1849, + [SMALL_STATE(60)] = 1856, + [SMALL_STATE(61)] = 1860, }; static const TSParseActionEntry ts_parse_actions[] = { [0] = {.entry = {.count = 0, .reusable = false}}, [1] = {.entry = {.count = 1, .reusable = false}}, RECOVER(), [3] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source, 0), - [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), - [7] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), - [9] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), - [11] = {.entry = {.count = 1, .reusable = false}}, SHIFT(20), - [13] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), - [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), - [17] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6), - [19] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), - [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(37), - [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), - [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), - [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), - [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(59), - [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), - [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(8), - [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), + [5] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), + [7] = {.entry = {.count = 1, .reusable = false}}, SHIFT(9), + [9] = {.entry = {.count = 1, .reusable = false}}, SHIFT(36), + [11] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), + [13] = {.entry = {.count = 1, .reusable = false}}, SHIFT(12), + [15] = {.entry = {.count = 1, .reusable = true}}, SHIFT(13), + [17] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), + [19] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), + [21] = {.entry = {.count = 1, .reusable = false}}, SHIFT(29), + [23] = {.entry = {.count = 1, .reusable = true}}, SHIFT(8), + [25] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), + [27] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), + [29] = {.entry = {.count = 1, .reusable = true}}, SHIFT(61), + [31] = {.entry = {.count = 1, .reusable = true}}, SHIFT(19), + [33] = {.entry = {.count = 1, .reusable = false}}, SHIFT(19), + [35] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), [37] = {.entry = {.count = 1, .reusable = false}}, SHIFT(22), [39] = {.entry = {.count = 1, .reusable = true}}, SHIFT(22), - [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), - [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(56), + [41] = {.entry = {.count = 1, .reusable = true}}, SHIFT(58), + [43] = {.entry = {.count = 1, .reusable = false}}, SHIFT(58), [45] = {.entry = {.count = 1, .reusable = true}}, SHIFT(25), - [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(36), - [49] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source, 1), - [51] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), - [53] = {.entry = {.count = 1, .reusable = false}}, SHIFT(7), - [55] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), - [57] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(7), - [60] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(30), - [63] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(15), - [66] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(20), - [69] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(19), - [72] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(49), - [75] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(7), - [78] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(37), - [81] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(37), - [84] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(10), - [87] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(17), - [90] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_prefix_parameters, 1), - [92] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_prefix_parameters, 1), - [94] = {.entry = {.count = 1, .reusable = true}}, SHIFT(11), - [96] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), - [98] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), - [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), - [102] = {.entry = {.count = 1, .reusable = true}}, SHIFT(9), - [104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), - [106] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(11), - [109] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(30), - [112] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(41), - [115] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(15), - [118] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(20), - [121] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(19), - [124] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(49), - [127] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(41), - [130] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(37), - [133] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(37), - [136] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(10), - [139] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), - [141] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 9), SHIFT_REPEAT(17), - [144] = {.entry = {.count = 1, .reusable = true}}, SHIFT(29), - [146] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), - [148] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31), - [150] = {.entry = {.count = 1, .reusable = true}}, SHIFT(50), - [152] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), - [154] = {.entry = {.count = 1, .reusable = false}}, SHIFT(28), - [156] = {.entry = {.count = 1, .reusable = true}}, SHIFT(14), - [158] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), - [160] = {.entry = {.count = 1, .reusable = false}}, SHIFT(38), - [162] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), - [164] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24), - [166] = {.entry = {.count = 1, .reusable = true}}, SHIFT(21), - [168] = {.entry = {.count = 1, .reusable = true}}, SHIFT(27), - [170] = {.entry = {.count = 1, .reusable = false}}, SHIFT(27), - [172] = {.entry = {.count = 1, .reusable = true}}, SHIFT(12), - [174] = {.entry = {.count = 1, .reusable = true}}, SHIFT(39), - [176] = {.entry = {.count = 1, .reusable = false}}, SHIFT(39), - [178] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), - [180] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), - [182] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), - [184] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), - [186] = {.entry = {.count = 1, .reusable = false}}, SHIFT(32), - [188] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_modifiers, 1), - [190] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_modifiers, 1), - [192] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_modifiers, 2), - [194] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_modifiers, 2), - [196] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unquoting_lit, 3, .production_id = 6), - [198] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unquoting_lit, 3, .production_id = 6), - [200] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_str_lit, 3), - [202] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_str_lit, 3), - [204] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bare_list_lit, 2, .production_id = 4), - [206] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bare_list_lit, 2, .production_id = 4), - [208] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unquote_splicing_lit, 2, .production_id = 3), - [210] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unquote_splicing_lit, 2, .production_id = 3), - [212] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoting_lit, 3, .production_id = 6), - [214] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoting_lit, 3, .production_id = 6), - [216] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoting_lit_repeat1, 2), SHIFT_REPEAT(29), - [219] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_quoting_lit_repeat1, 2), - [221] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_quoting_lit_repeat1, 2), - [223] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_num_lit, 1), - [225] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_num_lit, 1), - [227] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quasi_quoting_lit, 3, .production_id = 6), - [229] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quasi_quoting_lit, 3, .production_id = 6), - [231] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unquote_splicing_lit, 3, .production_id = 6), - [233] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unquote_splicing_lit, 3, .production_id = 6), - [235] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_lit, 1, .production_id = 2), - [237] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_lit, 1, .production_id = 2), - [239] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bare_list_lit, 3, .production_id = 8), - [241] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bare_list_lit, 3, .production_id = 8), - [243] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_str_lit, 2), - [245] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_str_lit, 2), - [247] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_str_lit, 4), - [249] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_str_lit, 4), - [251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sym_lit, 1, .production_id = 1), - [253] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sym_lit, 1, .production_id = 1), - [255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoting_lit, 2, .production_id = 3), - [257] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoting_lit, 2, .production_id = 3), - [259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quasi_quoting_lit, 2, .production_id = 3), - [261] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quasi_quoting_lit, 2, .production_id = 3), - [263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unquoting_lit, 2, .production_id = 3), - [265] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unquoting_lit, 2, .production_id = 3), - [267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 1, .production_id = 5), - [269] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 1, .production_id = 5), - [271] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 1), - [273] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_modifiers_repeat1, 1), - [275] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), - [277] = {.entry = {.count = 1, .reusable = true}}, SHIFT(53), - [279] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__format_token, 1, .production_id = 7), - [281] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__format_token, 1, .production_id = 7), - [283] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__format_token, 2), - [285] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__format_token, 2), - [287] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), SHIFT_REPEAT(43), - [290] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), SHIFT_REPEAT(59), - [293] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), SHIFT_REPEAT(45), - [296] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), - [298] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), - [300] = {.entry = {.count = 1, .reusable = true}}, SHIFT(45), - [302] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23), - [304] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), - [306] = {.entry = {.count = 1, .reusable = true}}, SHIFT(54), - [308] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_str_lit_repeat1, 2), SHIFT_REPEAT(4), - [311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_str_lit_repeat1, 2), - [313] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_str_lit_repeat1, 2), SHIFT_REPEAT(47), - [316] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), - [318] = {.entry = {.count = 1, .reusable = true}}, SHIFT(47), - [320] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), - [322] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), - [324] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), - [326] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_directive_type, 2, .production_id = 10), - [328] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_specifier, 3), - [330] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_directive_type, 2, .production_id = 11), - [332] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_directive_type, 2), - [334] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_specifier, 2), - [336] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_directive_type, 1), - [338] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_specifier, 4), - [340] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), - [342] = {.entry = {.count = 1, .reusable = true}}, SHIFT(44), + [47] = {.entry = {.count = 1, .reusable = true}}, SHIFT(38), + [49] = {.entry = {.count = 1, .reusable = true}}, SHIFT(7), + [51] = {.entry = {.count = 1, .reusable = false}}, SHIFT(7), + [53] = {.entry = {.count = 1, .reusable = true}}, SHIFT(43), + [55] = {.entry = {.count = 1, .reusable = false}}, SHIFT(43), + [57] = {.entry = {.count = 1, .reusable = true}}, SHIFT(35), + [59] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(7), + [62] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(7), + [65] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(36), + [68] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(43), + [71] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(11), + [74] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(12), + [77] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(13), + [80] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(50), + [83] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(43), + [86] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(27), + [89] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(29), + [92] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(8), + [95] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), + [97] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 2, .production_id = 10), SHIFT_REPEAT(14), + [100] = {.entry = {.count = 1, .reusable = true}}, SHIFT(6), + [102] = {.entry = {.count = 1, .reusable = false}}, SHIFT(6), + [104] = {.entry = {.count = 1, .reusable = true}}, SHIFT(28), + [106] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_source, 1), + [108] = {.entry = {.count = 1, .reusable = true}}, SHIFT(10), + [110] = {.entry = {.count = 1, .reusable = false}}, SHIFT(10), + [112] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), + [114] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(10), + [117] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(10), + [120] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(36), + [123] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(11), + [126] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(12), + [129] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(13), + [132] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(50), + [135] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(27), + [138] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(29), + [141] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(8), + [144] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_source_repeat1, 2), SHIFT_REPEAT(14), + [147] = {.entry = {.count = 1, .reusable = true}}, SHIFT(16), + [149] = {.entry = {.count = 1, .reusable = false}}, SHIFT(16), + [151] = {.entry = {.count = 1, .reusable = true}}, SHIFT(41), + [153] = {.entry = {.count = 1, .reusable = false}}, SHIFT(41), + [155] = {.entry = {.count = 1, .reusable = true}}, SHIFT(17), + [157] = {.entry = {.count = 1, .reusable = false}}, SHIFT(17), + [159] = {.entry = {.count = 1, .reusable = true}}, SHIFT(37), + [161] = {.entry = {.count = 1, .reusable = false}}, SHIFT(37), + [163] = {.entry = {.count = 1, .reusable = true}}, SHIFT(18), + [165] = {.entry = {.count = 1, .reusable = false}}, SHIFT(18), + [167] = {.entry = {.count = 1, .reusable = true}}, SHIFT(40), + [169] = {.entry = {.count = 1, .reusable = false}}, SHIFT(40), + [171] = {.entry = {.count = 1, .reusable = true}}, SHIFT(15), + [173] = {.entry = {.count = 1, .reusable = false}}, SHIFT(15), + [175] = {.entry = {.count = 1, .reusable = true}}, SHIFT(30), + [177] = {.entry = {.count = 1, .reusable = false}}, SHIFT(30), + [179] = {.entry = {.count = 1, .reusable = true}}, SHIFT(31), + [181] = {.entry = {.count = 1, .reusable = false}}, SHIFT(31), + [183] = {.entry = {.count = 1, .reusable = true}}, SHIFT(34), + [185] = {.entry = {.count = 1, .reusable = false}}, SHIFT(34), + [187] = {.entry = {.count = 1, .reusable = true}}, SHIFT(24), + [189] = {.entry = {.count = 1, .reusable = false}}, SHIFT(24), + [191] = {.entry = {.count = 1, .reusable = true}}, SHIFT(32), + [193] = {.entry = {.count = 1, .reusable = false}}, SHIFT(32), + [195] = {.entry = {.count = 1, .reusable = true}}, SHIFT(33), + [197] = {.entry = {.count = 1, .reusable = false}}, SHIFT(33), + [199] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_prefix_parameters, 1), + [201] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_prefix_parameters, 1), + [203] = {.entry = {.count = 1, .reusable = true}}, SHIFT(51), + [205] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_modifiers, 1), + [207] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_modifiers, 1), + [209] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_modifiers, 2), + [211] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_format_modifiers, 2), + [213] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoting_lit, 3, .production_id = 7), + [215] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoting_lit, 3, .production_id = 7), + [217] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_str_lit, 3), + [219] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_str_lit, 3), + [221] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_str_lit, 2), + [223] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_str_lit, 2), + [225] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__digit_sym, 1, .production_id = 1), + [227] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__digit_sym, 1, .production_id = 1), + [229] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bare_list_lit, 2, .production_id = 5), + [231] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bare_list_lit, 2, .production_id = 5), + [233] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sym_lit, 1, .production_id = 1), + [235] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sym_lit, 1, .production_id = 1), + [237] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unquote_splicing_lit, 2, .production_id = 4), + [239] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unquote_splicing_lit, 2, .production_id = 4), + [241] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_quoting_lit_repeat1, 2), SHIFT_REPEAT(31), + [244] = {.entry = {.count = 2, .reusable = false}}, REDUCE(aux_sym_quoting_lit_repeat1, 2), SHIFT_REPEAT(31), + [247] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_quoting_lit_repeat1, 2), + [249] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_quoting_lit_repeat1, 2), + [251] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unquoting_lit, 3, .production_id = 7), + [253] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unquoting_lit, 3, .production_id = 7), + [255] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quasi_quoting_lit, 3, .production_id = 7), + [257] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quasi_quoting_lit, 3, .production_id = 7), + [259] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unquote_splicing_lit, 3, .production_id = 7), + [261] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unquote_splicing_lit, 3, .production_id = 7), + [263] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__bare_list_lit, 3, .production_id = 9), + [265] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__bare_list_lit, 3, .production_id = 9), + [267] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_num_lit, 1), + [269] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_num_lit, 1), + [271] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_unquoting_lit, 2, .production_id = 4), + [273] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_unquoting_lit, 2, .production_id = 4), + [275] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_str_lit, 4), + [277] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_str_lit, 4), + [279] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_sym_lit, 1, .production_id = 2), + [281] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_sym_lit, 1, .production_id = 2), + [283] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quasi_quoting_lit, 2, .production_id = 4), + [285] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quasi_quoting_lit, 2, .production_id = 4), + [287] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_quoting_lit, 2, .production_id = 4), + [289] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_quoting_lit, 2, .production_id = 4), + [291] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_list_lit, 1, .production_id = 3), + [293] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym_list_lit, 1, .production_id = 3), + [295] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym__bare_list_lit_repeat1, 1, .production_id = 6), + [297] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym__bare_list_lit_repeat1, 1, .production_id = 6), + [299] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 1), + [301] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_modifiers_repeat1, 1), + [303] = {.entry = {.count = 1, .reusable = true}}, SHIFT(55), + [305] = {.entry = {.count = 1, .reusable = true}}, SHIFT(56), + [307] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__format_token, 1, .production_id = 8), + [309] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__format_token, 1, .production_id = 8), + [311] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym__format_token, 2), + [313] = {.entry = {.count = 1, .reusable = false}}, REDUCE(sym__format_token, 2), + [315] = {.entry = {.count = 1, .reusable = true}}, SHIFT(48), + [317] = {.entry = {.count = 1, .reusable = false}}, SHIFT(23), + [319] = {.entry = {.count = 1, .reusable = true}}, SHIFT(23), + [321] = {.entry = {.count = 1, .reusable = true}}, SHIFT(57), + [323] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), SHIFT_REPEAT(45), + [326] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), SHIFT_REPEAT(61), + [329] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), SHIFT_REPEAT(48), + [332] = {.entry = {.count = 1, .reusable = false}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), + [334] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_format_modifiers_repeat1, 2), + [336] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_str_lit_repeat1, 2), SHIFT_REPEAT(4), + [339] = {.entry = {.count = 1, .reusable = true}}, REDUCE(aux_sym_str_lit_repeat1, 2), + [341] = {.entry = {.count = 2, .reusable = true}}, REDUCE(aux_sym_str_lit_repeat1, 2), SHIFT_REPEAT(49), + [344] = {.entry = {.count = 1, .reusable = true}}, SHIFT(2), + [346] = {.entry = {.count = 1, .reusable = true}}, SHIFT(26), + [348] = {.entry = {.count = 1, .reusable = true}}, SHIFT(52), + [350] = {.entry = {.count = 1, .reusable = true}}, SHIFT(3), + [352] = {.entry = {.count = 1, .reusable = true}}, SHIFT(49), + [354] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_specifier, 2), + [356] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_specifier, 3), + [358] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_directive_type, 2, .production_id = 11), + [360] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_directive_type, 2, .production_id = 12), + [362] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_directive_type, 2), + [364] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_directive_type, 1), + [366] = {.entry = {.count = 1, .reusable = true}}, REDUCE(sym_format_specifier, 4), + [368] = {.entry = {.count = 1, .reusable = true}}, ACCEPT_INPUT(), + [370] = {.entry = {.count = 1, .reusable = true}}, SHIFT(46), }; #ifdef __cplusplus extern "C" { #endif -#ifdef _WIN32 +#ifdef TREE_SITTER_HIDE_SYMBOLS +#define TS_PUBLIC +#elif defined(_WIN32) #define TS_PUBLIC __declspec(dllexport) #else #define TS_PUBLIC __attribute__((visibility("default"))) diff --git a/third-party/tree-sitter/tree-sitter-opengoal/tree_sitter/array.h b/third-party/tree-sitter/tree-sitter-opengoal/tree_sitter/array.h index 186ba67399..15a3b233bb 100644 --- a/third-party/tree-sitter/tree-sitter-opengoal/tree_sitter/array.h +++ b/third-party/tree-sitter/tree-sitter-opengoal/tree_sitter/array.h @@ -66,9 +66,12 @@ extern "C" { /// Increase the array's size by `count` elements. /// New elements are zero-initialized. #define array_grow_by(self, count) \ - (_array__grow((Array *)(self), count, array_elem_size(self)), \ - memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)), \ - (self)->size += (count)) + do { \ + if ((count) == 0) break; \ + _array__grow((Array *)(self), count, array_elem_size(self)); \ + memset((self)->contents + (self)->size, 0, (count) * array_elem_size(self)); \ + (self)->size += (count); \ + } while (0) /// Append all elements from one array to the end of another. #define array_push_all(self, other) \